diff --git a/editor-output-submodel/hazel.js b/editor-output-submodel/hazel.js index b88f6829..1a275b3d 100644 --- a/editor-output-submodel/hazel.js +++ b/editor-output-submodel/hazel.js @@ -590796,7 +590796,7 @@ NW=[0,[0,0,[2,v_],vI,0,1],[2,Mw],BT,0,2],NX=[2,xo],NY=[0,[0,[0,[0,0,[2,Lh],H6,0, "Evaluation disabled, showing elaboration:", cst_test_result = "test-result", _H_ = [0, 0], - _B_ = [0, 0], + _B_ = [0, [0, 0]], _G_ = [0, "error-msg", 0], cst_s$0 = cst_s$1, _F_ = [0, cst_Show_Stepper], @@ -603256,4 +603256,4 @@ NW=[0,[0,0,[2,v_],vI,0,1],[2,Mw],BT,0,2],NX=[2,xo],NY=[0,[0,[0,[0,0,[2,Lh],H6,0, (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiR2VuZXJpY0hvb2siLCJpbml0IiwidXBkYXRlIiwiZGVzdHJveSIsImV4dHJhIiwiaG9va19zdGF0ZV9rZXkiLCJTeW1ib2wiLCJzdGF0ZSIsImZyb20iLCJ0byIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwianNvb19zeXNfZ2V0ZW52IiwicHJvY2VzcyIsImdsb2JhbFRoaXMiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJidWZmZXIiLCJjYW1sX2ludDY0X2Zvcm1hdCIsIndiYXNlIiwiY3Z0YmwiLCJwIiwiY2FtbF9leHBtMV9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJjMSIsImMyIiwidiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiZnNfbm9kZV9zdXBwb3J0ZWQiLCJtYWtlX3BhdGhfaXNfYWJzb2x1dGUiLCJwb3NpeCIsInBhdGgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwiY29tcCIsIm5jb21wIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJNbEJ5dGVzIiwiY29udGVudHMiLCJjb250ZW50IiwiY2FtbF9pc19tbF9ieXRlcyIsImNhbWxfaXNfbWxfc3RyaW5nIiwiY2FtbF9ieXRlc19vZl9hcnJheSIsIlVpbnQ4QXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfYmxpdF9ieXRlcyIsInMxIiwiaTEiLCJzMiIsImkyIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VGZCIsImZpbGUiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJzZWVuIiwibSIsImVudHJ5Iiwib2siLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJidWZfb2Zmc2V0IiwicmVhZCIsIk1sTm9kZURldmljZSIsImNvbnN0cyIsImlzQ2hhcmFjdGVyRGV2aWNlIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsInNoaWZ0X3JpZ2h0X25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibmJpdHMiLCJ3cmFwIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImltIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiY2FtbF9zeXNfcmVuYW1lIiwib19yb290Iiwibl9yb290IiwiY2FtbF9sb2cxMF9mbG9hdCIsImNhbWxfcnVudGltZV93YXJuaW5ncyIsImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MiLCJib29sIiwiY2FtbF9jbGFzc2lmeV9mbG9hdCIsImlzRmluaXRlIiwiaXNOYU4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9yZWZpbGwiLCJjaGFuIiwic3RyX2EiLCJucmVhZCIsImNhbWxfYXJyYXlfYm91bmRfZXJyb3IiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsImNoYW5pZCIsInByZXZfbWF4IiwiY2FtbF9nY19taW5vciIsInVuaXQiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImJhIiwiY2FtbF9tbF9pbnB1dF9ibG9jayIsImF2YWlsIiwiY2FtbF9tbF9pbnB1dF9iaWdhcnJheSIsImNhbWxfaW50NjRfb2ZfYnl0ZXMiLCJjYW1sX2JhX3VpbnQ4X2dldDY0IiwiaTAiLCJvZnMiLCJiMSIsImIyIiwiYjMiLCJiNCIsImI1IiwiYjYiLCJiNyIsImI4IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfaW50NjRfbWFyc2hhbCIsIndyaXRlciIsInNpemVzIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2ludF9jb21wYXJlIiwiYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyIsImJhMSIsImJhMV9vZmYiLCJiYTIiLCJiYTJfb2ZmIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsInBvczEiLCJieXRlczIiLCJwb3MyIiwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NyZWF0ZV9maWxlIiwianNvb19jcmVhdGVfZmlsZSIsImNhbWxfZnNfaW5pdCIsInRtcCIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsIm51bV9kaWdpdHNfbmF0IiwibmF0IiwiY2FtbF9oYXNoX25hdCIsImNhbWxfY2FsbF9nZW4iLCJhcmdzTGVuIiwibmFyZ3MiLCJleHRyYV9hcmdzIiwiY2FtbF9jYWxsYmFjayIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX3N5c19jaGRpciIsImRpciIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmciLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwic3RyMSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiRmxvYXQ2NEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIiwiTmFOIiwiY2FtbF9iYV9nZXRfc2l6ZSIsImRpbXMiLCJuX2RpbXMiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaW50NjRfbG8zMiIsImNhbWxfYmFfY3VzdG9tX25hbWUiLCJNbF9CaWdhcnJheSIsImxheW91dCIsInJlIiwidG90YWwiLCJrMSIsImsyIiwiTWxfQmlnYXJyYXlfY18xXzEiLCJjYW1sX2JhX2NyZWF0ZV91bnNhZmUiLCJzaXplX3Blcl9lbGVtZW50IiwiY2FtbF9iYV9kZXNlcmlhbGl6ZSIsInJlYWRlciIsIm51bV9kaW1zIiwic2l6ZV9kaW0iLCJzaXplX2RpbV9oaSIsInNpemVfZGltX2xvIiwic2l4dHkiLCJpbnQ2NCIsImNhbWxfYmFfY29tcGFyZSIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2JhX2hhc2giLCJudW1fZWx0cyIsImNhbWxfaW50MzJfdW5tYXJzaGFsIiwiY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJudW0iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImJpZ3N0cmluZ19maW5kIiwiYnMiLCJjaHIiLCJjYW1sX2pzX2h0bWxfZW50aXRpZXMiLCJlbnRpdHkiLCJ0ZW1wIiwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldCIsImNhbWxfaW50NjRfb2ZfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NCIsImNhbWxfYmFfc2V0XzIiLCJjYW1sX2FyZ3YiLCJtYWluIiwiYXJndiIsImFyZ3MyIiwiY2FtbF9leGVjdXRhYmxlX25hbWUiLCJjYW1sX2pzX2V2YWxfc3RyaW5nIiwic2VyaWFsaXplX25hdCIsImNhbWxfbWVtcHJvZl9zZXQiLCJfY29udHJvbCIsImNhbWxfc3lzX2V4aXQiLCJjYW1sX2NoYW5uZWxfZGVzY3JpcHRvciIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3QiLCJ2b3V0cHV0IiwidnN0ZG91dCIsInZzdGRlcnIiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIiLCJjYW1sX2NoZWNrX2JvdW5kIiwiYXJyYXkiLCJjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyIsImJpZ3N0cmluZyIsImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiY2FtbF9NRDVVcGRhdGUiLCJjdHgiLCJpbnB1dCIsImlucHV0X2xlbiIsImluX2J1ZiIsImlucHV0X3BvcyIsIm1pc3NpbmciLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImN1cnNvciIsImNhbGxiYWNrcyIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQiLCJfdW5pdCIsImx4b3JfZGlnaXRfbmF0IiwiY2FtbF9vYmpfYWRkX29mZnNldCIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX2dyX3Bsb3QiLCJjb2xvciIsImNhbWxfYnl0ZXNfc2V0NjQiLCJpNjQiLCJjYW1sX3N0cmluZ19zZXQxNiIsImkxNiIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX2djX21ham9yIiwiY2FtbF9sZXhfYXJyYXkiLCJjYW1sX2xleF9lbmdpbmUiLCJ0YmwiLCJzdGFydF9zdGF0ZSIsImxleGJ1ZiIsImxleF9idWZmZXIiLCJsZXhfYnVmZmVyX2xlbiIsImxleF9zdGFydF9wb3MiLCJsZXhfY3Vycl9wb3MiLCJsZXhfbGFzdF9wb3MiLCJsZXhfbGFzdF9hY3Rpb24iLCJsZXhfZW9mX3JlYWNoZWQiLCJsZXhfYmFzZSIsImxleF9iYWNrdHJrIiwibGV4X2RlZmF1bHQiLCJsZXhfdHJhbnMiLCJsZXhfY2hlY2siLCJiYXNlIiwiYmFja3RyayIsImNhbWxfc3lzX2ZpbGVfZXhpc3RzIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfYXJyYXlfc3ViIiwiY2FtbF9ieXRlc19lcXVhbCIsImNhbWxfZ3Jfc2l6ZV94IiwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHoiLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwicmVmIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJNbE11dGV4IiwiY2FtbF9tbF9tdXRleF9uZXciLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF9oYXNoX21peF9maW5hbCIsImNhbWxfZ3JfdGV4dF9zaXplIiwidHh0IiwiY2FtbF9sZXhfcnVuX21lbSIsIm1lbSIsImN1cnJfcG9zIiwiY2FtbF9sZXhfcnVuX3RhZyIsImNhbWxfbmV3X2xleF9lbmdpbmUiLCJsZXhfbWVtIiwibGV4X2Jhc2VfY29kZSIsImxleF9iYWNrdHJrX2NvZGUiLCJsZXhfZGVmYXVsdF9jb2RlIiwibGV4X3RyYW5zX2NvZGUiLCJsZXhfY2hlY2tfY29kZSIsImxleF9jb2RlIiwicGNfb2ZmIiwicHN0YXRlIiwiYmFzZV9jb2RlIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfTUQ1SW5pdCIsIkFycmF5QnVmZmVyIiwiYjMyIiwiVWludDMyQXJyYXkiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjb21wYXJlX25hdF9yZWFsIiwiY2FtbF9nY19zZXQiLCJjYW1sX2pzX2dldCIsImpzX3BlcmZvcm1hbmNlIiwiX2UiLCJqc19wcm9mX21hcmsiLCJjYW1sX3VuaXhfaXNhdHR5IiwiZmlsZURlc2NyaXB0b3IiLCJ0dHkiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfaGFzaCIsInNlZWQiLCJxdWV1ZSIsInJkIiwid3IiLCJCYXNlX2hhc2hfc3RyaW5nIiwiY2FtbF9nY19jb21wYWN0aW9uIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiY2FtbF9zeXNfZmRzIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2Nsb3NlX2NoYW5uZWwiLCJjb3JlX21kNV9mZCIsImljIiwiY2FtbF9lcGhlX2dldF9rZXkiLCJjYW1sX3VuaXhfbG9jYWx0aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YiIsImV4cG9uZW50Iiwib25lIiwibXVsIiwiY2FtbF9hdG9taWNfZXhjaGFuZ2UiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImlzX2RpZ2l0X3plcm8iLCJjYW1sX3VuaXhfbHN0YXQiLCJjYW1sX3VuaXhfbHN0YXRfNjQiLCJjYW1sX2pzX3NldCIsImNhbWxfYXJyYXlfZ2V0IiwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjIiwiY29udCIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsImNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lIiwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiIsImNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwidGEiLCJiaW5fcHJvdF9ibGl0X2J1Zl9zdHViIiwiY2FtbF9zZWVrX2luIiwiY2FtbF9tbF9zZWVrX2luXzY0IiwiY2FtbF9kb21haW5faWQiLCJjYW1sX21sX211dGV4X3VubG9jayIsImNhbWxfZG9tYWluX2xhdGVzdF9pZHgiLCJjYW1sX2RvbWFpbl9zcGF3biIsIm11dGV4IiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfYmFfZGltIiwiY2FtbF9iYV9kaW1fMSIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX3JlYWxsb2MiLCJuZXdfZGF0YSIsIm5ld19iaWdzdHJpbmciLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF9tYXliZV9wcmludF9zdGF0cyIsImNhbWxfYnl0ZXNfdW5zYWZlX2dldCIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF91bml4X2hhc19zeW1saW5rIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2VwaGVfdW5zZXRfa2V5IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yIiwiY2FtbF9zdHJpbmdfZ2V0MzIiLCJjYW1sX2J5dGVzX2dldCIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmciLCJCYXNlX2FtX3Rlc3RpbmciLCJjYW1sX2J5dGVzX2xlc3N0aGFuIiwiYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsImNhbWxfc3lzX2dldGN3ZCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3VsdCIsImNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSIsImNhbWxfcGFyc2VfZGlnaXQiLCJjYW1sX2ludDY0X29mX3N0cmluZyIsImJhc2U2NCIsInRocmVzaG9sZCIsImNhbWxfYmFfc2V0XzEiLCJjYW1sX2ludDY0X3hvciIsImNhbWxfaW50NjRfb3IiLCJjYW1sX2x4bV9uZXh0Iiwic2hpZnRfbCIsInNoaWZ0X3IiLCJvciIsInhvciIsInJvdGwiLCJnZXQiLCJzZXQiLCJNIiwiZGFiYSIsInEwIiwicTEiLCJzdCIsIngwIiwiY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiIsImNhbWxfbGlzdF90b19qc19hcnJheSIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImJpZ3N0cmluZ19tZW1jbXBfc3R1YiIsInZfczEiLCJ2X3MxX3BvcyIsInZfczIiLCJ2X3MyX3BvcyIsInZfbGVuIiwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyIsIlVJbnQ4QXJyYXlSZWFkZXIiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwicmVhZHZscSIsIm92ZXJmbG93IiwibjciLCJoZWFkZXJfbGVuIiwiZGF0YV9sZW4iLCJNbFN0cmluZ1JlYWRlciIsImNhbWxfZGVjb21wcmVzc19pbnB1dCIsImNhbWxfZmxvYXRfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIiwibWFnaWMiLCJjb21wcmVzc2VkIiwidW5jb21wcmVzc2VkX2RhdGFfbGVuIiwibnVtX29iamVjdHMiLCJfc2l6ZV8zMiIsIl9zaXplXzY0Iiwib2JqX2NvdW50ZXIiLCJpbnRlcm5fcmVjIiwiaGVhZGVyIiwiZXhwZWN0ZWRfc2l6ZSIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAiLCJjYW1sX2F0b21pY19jYXMiLCJjYW1sX2NvcHlzaWduX2Zsb2F0IiwiY2FtbF9ncl9zZXRfdGV4dF9zaXplIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9iYV9zZXRfZ2VuZXJpYyIsImNhbWxfbWxfY29uZGl0aW9uX3dhaXQiLCJtdXRleHQiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImJpdHMiLCJjYW1sX2dyX3NpemVfeSIsImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIiwiY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIiwiY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZSIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJiaWdzdHJpbmdfYWxsb2MiLCJfIiwiY2FtbF9zdHJpbmdfZ2V0IiwicmVfbWF0Y2giLCJyZV93b3JkX2xldHRlcnMiLCJvcGNvZGVzIiwiaXNfd29yZF9sZXR0ZXIiLCJpbl9iaXRzZXQiLCJyZV9tYXRjaF9pbXBsIiwicGFydGlhbCIsInByb2ciLCJjcG9vbCIsIm5vcm10YWJsZSIsIm51bWdyb3VwcyIsIm51bXJlZ2lzdGVycyIsInN0YXJ0Y2hhcnMiLCJwYyIsInF1aXQiLCJncm91cHMiLCJyZV9yZWdpc3RlciIsImJhY2t0cmFjayIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJyZV9zZWFyY2hfYmFja3dhcmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9tbF9vdXRwdXRfdGEiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwibmV3X2RpbXMiLCJjb3JlX2djX2NvbXBhY3Rpb25zIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9zdHJpbmdfaGFzaCIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJCYXNlX2ludF9tYXRoX2ludDMyX2N0eiIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludCIsImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCIsImNhbWxfY3JlYXRlX3N0cmluZyIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiIsImJpZ3N0cmluZ19tZW1zZXRfc3R1YiIsInZfcG9zIiwidl9jaGFyIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyIsIkJhc2VfaW50X21hdGhfaW50NjRfY2x6IiwiY2FtbF9hcnJheV9hcHBlbmQiLCJsMSIsImwyIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF90aW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwiY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9qc19leHByIiwiY2FtbF9qc190b19zdHJpbmciLCJjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXMiLCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCIsImNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY29yZV9nY190b3BfaGVhcF93b3JkcyIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX2pzX3ZhciIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJsZW5ndGhfbmF0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX3VpbnQ4X3NldDE2IiwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmQiLCJpbmZvIiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9tZW1wcm9mX2Rpc2NhcmQiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6IiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImNhbWxfc3RyaW5nX2xlc3N0aGFuIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4iLCJjYW1sX2RpdiIsImNhbWxfb2JqX2R1cCIsImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5IiwiY2FtbF9tZW1wcm9mX3N0YXJ0IiwicmF0ZSIsInN0YWNrX3NpemUiLCJ0cmFja2VyIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX21sX2RvbWFpbl9zZXRfbmFtZSIsIl9uYW1lIiwiY2FtbF9qc190b19ib29sIiwiY2FtbF9ncl9jcmVhdGVfaW1hZ2UiLCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5IiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nIiwiYmFfb2ZmIiwic3RyX29mZiIsImNhbWxfYnVpbGRfc3ltYm9scyIsInRvYyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSIsImNhbWxfZ2Nfc3RhdCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImJpZ3N0cmluZ2FmX21lbWNociIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9tZXRob2RfY2FjaGUiLCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kIiwiY2FjaGVpZCIsIm1ldGhzIiwibGkiLCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX3JvdW5kX2Zsb2F0IiwianNfcHJvZl9tZWFzdXJlIiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6IiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCIsImNhbWxfZ3JfZHJhd19zdHIiLCJkeCIsImNhbWxfZ3JfZHJhd19zdHJpbmciLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHoiLCJpc196ZXJvIiwibGFuZCIsInNtYWxsX2ludDY0IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCIsIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfZmluYWxfcmVnaXN0ZXIiLCJjYW1sX2dyX2RyYXdfcmVjdCIsImNhbWxfc3RyaW5nX2dldDE2IiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX291dHB1dF92YWx1ZSIsImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5IiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfZXBoZV9ibGl0X2tleSIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF9kb21haW5fZGxzX2dldCIsImNhbWxfYnl0ZXNfZ2V0MzIiLCJjYW1sX2ZyZXhwX2Zsb2F0IiwibmVnIiwiYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIiLCJjb3JlX3RpbWVfbnNfZm9ybWF0IiwidGltZSIsImZvcm1hdGpzIiwianN0cmluZyIsImNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50cyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsIkJhc2VfaGFzaF9kb3VibGUiLCJjYW1sX2pzX25ldyIsImNhbWxfZ3JfY3VycmVudF95IiwiY2FtbF9mb3JtYXRfaW50IiwiY29yZV9nY19oZWFwX3dvcmRzIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8iLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4iLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjb3JlX2djX21pbm9yX3dvcmRzIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX21ha2VfZmxvYXRfdmVjdCIsImNhbWxfY2JydF9mbG9hdCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2xvZzFwX2Zsb2F0IiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJtc190b19uYW5vIiwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvIiwibXMiLCJtc19pNjMiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2FycmF5X3NldCIsIm5ld3ZhbCIsImNhbWxfYWxsb2Nfc3RhY2siLCJodiIsImh4IiwiaGYiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsInNldF9kaWdpdF9uYXQiLCJjYW1sX2J5dGVzX3NldDE2IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfanNvb19mbGFnc19lZmZlY3RzIiwiY29yZV9nY19tYWpvcl93b3JkcyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJiaWdzdHJpbmdfYmxpdF9zdHViIiwiY2FtbF9zdHJpbmdfbm90ZXF1YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuIiwiY2FtbF9ncl9tYWtlX2ltYWdlIiwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwibWF4X2ludCIsIm1pbl9pbnQiLCJzeW1ib2wiLCJzMSIsInMyIiwibDEiLCJsMiIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJsIiwiaSIsImkkMCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzeW1ib2wkMCIsInRsIiwiaGQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsInYiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsInIiLCJsZW4kMSIsIm9mcyQxIiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2xpbmUiLCJidWlsZF9yZXN1bHQiLCJidWYiLCJwb3MkMCIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9pbl9ub2VyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnQiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2Zsb2F0IiwicmVhZF9mbG9hdF9vcHQiLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sJDEiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJkb19hdF9leGl0IiwiZXhpdCIsInJldGNvZGUiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwibWFwIiwidiQwIiwiZm9sZCIsImVxdWFsIiwiZTEiLCJlMiIsInYxIiwidjIiLCJ2MSQwIiwidjIkMCIsImNvbXBhcmUiLCJvY2FtbF92ZXJzaW9uIiwib2NhbWxfcmVsZWFzZSIsImV4ZWN1dGFibGVfbmFtZSIsIm9zX3R5cGUiLCJiYWNrZW5kX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJtYXhfYXJyYXlfbGVuZ3RoIiwibWF4X2Zsb2F0YXJyYXlfbGVuZ3RoIiwibWF4X3N0cmluZ19sZW5ndGgiLCJiaWdfZW5kaWFuIiwid29yZF9zaXplIiwiaW50X3NpemUiLCJnZXRlbnZfb3B0IiwiaW50ZXJhY3RpdmUiLCJzZXRfc2lnbmFsIiwic2lnX251bSIsInNpZ19iZWgiLCJzaWdhYnJ0Iiwic2lnYWxybSIsInNpZ2ZwZSIsInNpZ2h1cCIsInNpZ2lsbCIsInNpZ2ludCIsInNpZ2tpbGwiLCJzaWdwaXBlIiwic2lncXVpdCIsInNpZ3NlZ3YiLCJzaWd0ZXJtIiwic2lndXNyMSIsInNpZ3VzcjIiLCJzaWdjaGxkIiwic2lnY29udCIsInNpZ3N0b3AiLCJzaWd0c3RwIiwic2lndHRpbiIsInNpZ3R0b3UiLCJzaWd2dGFscm0iLCJzaWdwcm9mIiwic2lnYnVzIiwic2lncG9sbCIsInNpZ3N5cyIsInNpZ3RyYXAiLCJzaWd1cmciLCJzaWd4Y3B1Iiwic2lneGZzeiIsImNhdGNoX2JyZWFrIiwib24iLCJkZXZlbG9wbWVudF92ZXJzaW9uIiwiaXNfYmxvY2siLCJkb3VibGVfZmllbGQiLCJzZXRfZG91YmxlX2ZpZWxkIiwiZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yIiwibGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfIiwiZm9yY2luZ190YWciLCJjb250X3RhZyIsImxhenlfdGFnIiwiY2xvc3VyZV90YWciLCJvYmplY3RfdGFnIiwiaW5maXhfdGFnIiwiZm9yd2FyZF90YWciLCJub19zY2FuX3RhZyIsImFic3RyYWN0X3RhZyIsInN0cmluZ190YWciLCJkb3VibGVfdGFnIiwiZG91YmxlX2FycmF5X3RhZyIsImN1c3RvbV90YWciLCJpbnRfdGFnIiwib3V0X29mX2hlYXBfdGFnIiwidW5hbGlnbmVkX3RhZyIsImluZm8iLCJvYmoiLCJzdGFydF9lbnYiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInNldCIsImluY3IiLCJkZWNyIiwiZm9yY2VfZ2VuX2xhenlfYmxvY2siLCJvbmx5X3ZhbCIsImJsayIsImNsb3N1cmUkMCIsInJlc3VsdCQwIiwiY2xvc3VyZSIsInJlc3VsdCIsImUkMCIsImZvcmNlX2xhenlfYmxvY2siLCJmb3JjZV9nZW4iLCJsenYiLCJ0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQiLCJzZXExIiwic2VxMiIsInNlcSIsImZpbHRlcl9tYXAiLCJzZXEkMCIsImZpbHRlciIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsIml0ZXIiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJ4cyQxIiwiaXRlcmkiLCJmb2xkX2xlZnRpIiwiYWNjdSQxIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmaW5kIiwiZmluZF9tYXAiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJub25lIiwic29tZSIsInZhbHVlIiwiZGVmYXVsdCQwIiwiZ2V0IiwiYmluZCIsImpvaW4iLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJlc2NhcGVkIiwibG93ZXJjYXNlX2FzY2lpIiwidXBwZXJjYXNlX2FzY2lpIiwiYzEiLCJjMiIsImVycl9ub19wcmVkIiwiZXJyX25vX3N1Y2MiLCJsb19ib3VuZCIsImhpX2JvdW5kIiwiYm9tIiwicmVwIiwic3VjYyIsInByZWQiLCJpc192YWxpZCIsIm9mX2ludCIsImlzX2NoYXIiLCJvZl9jaGFyIiwidG9fY2hhciIsInVuc2FmZV90b19jaGFyIiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwicmV2X2luaXRfdGhyZXNob2xkIiwiZmxhdHRlbiIsInJldl9tYXAiLCJmb2xkX3JpZ2h0IiwiYTIiLCJhMSIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibG9nbm90IiwibWFrZSIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImkkMSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImdldF91dGZfOF91Y2hhciIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXRfdXRmXzhfdWNoYXIiLCJsYXN0JDEiLCJsYXN0JDAiLCJsYXN0IiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiaGVhZGVyX3NpemUiLCJkYXRhX3NpemUiLCJ0b3RhbF9zaXplIiwiZnJvbV9ieXRlcyIsImZyb21fc3RyaW5nIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJvZl9saXN0IiwiaW5wdXRfYXJyYXkiLCJlbHQiLCJvdXRwdXRfYXJyYXkiLCJlbHQkMCIsImFjYyQyIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsImUkMSIsImokMCIsImZhdGhlciIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImkyJDAiLCJkJDAiLCJzMiQwIiwiaTEkMCIsImQkMSIsInMxJDAiLCJpc29ydHRvIiwic3Jjb2ZzIiwic29ydHRvIiwiaXNfZmluaXRlIiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJlcHNpbG9uIiwib2Zfc3RyaW5nX29wdCIsInBpIiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic2l6ZSIsImR1bW15X3BvcyIsInplcm9fcG9zIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInJlYWRfZnVuIiwic3RoIiwid2l0aF9wb3NpdGlvbnMiLCJhdXhfYnVmZmVyIiwibGV4YnVmIiwicmVhZCIsIm5ld2xlbiIsIm5ld2J1ZiIsImZyb21fY2hhbm5lbCIsInNldF9wb3NpdGlvbiIsInBvc2l0aW9uIiwic2V0X2ZpbGVuYW1lIiwiZm5hbWUiLCJsZXhlbWUiLCJzdWJfbGV4ZW1lIiwic3ViX2xleGVtZV9vcHQiLCJzdWJfbGV4ZW1lX2NoYXIiLCJzdWJfbGV4ZW1lX2NoYXJfb3B0IiwibGV4ZW1lX2NoYXIiLCJsZXhlbWVfc3RhcnQiLCJsZXhlbWVfZW5kIiwibGV4ZW1lX3N0YXJ0X3AiLCJsZXhlbWVfZW5kX3AiLCJuZXdfbGluZSIsImxjcCIsImZsdXNoX2lucHV0IiwiZW52IiwiZ3Jvd19zdGFja3MiLCJvbGRzaXplIiwibmV3c2l6ZSIsIm5ld19zIiwibmV3X3YiLCJuZXdfc3RhcnQiLCJuZXdfZW5kIiwiY2xlYXJfcGFyc2VyIiwiY3VycmVudF9sb29rYWhlYWRfZnVuIiwieXlwYXJzZSIsInRhYmxlcyIsInN0YXJ0IiwibGV4ZXIiLCJpbml0X2FzcCIsImluaXRfc3AiLCJpbml0X3N0YWNrYmFzZSIsImluaXRfc3RhdGUiLCJpbml0X2N1cnJfY2hhciIsImluaXRfbHZhbCIsImluaXRfZXJyZmxhZyIsImNtZCIsImFyZyIsImFyZyQwIiwiZXhuJDAiLCJleG4iLCJjdXJyX2NoYXIiLCJ0b2siLCJwZWVrX3ZhbCIsInN5bWJvbF9zdGFydF9wb3MiLCJzdCIsImVuIiwic3ltYm9sX2VuZF9wb3MiLCJyaHNfc3RhcnRfcG9zIiwicmhzX2VuZF9wb3MiLCJzeW1ib2xfc3RhcnQiLCJzeW1ib2xfZW5kIiwicmhzX3N0YXJ0IiwicmhzX2VuZCIsImlzX2N1cnJlbnRfbG9va2FoZWFkIiwicGFyc2VfZXJyb3IiLCJoZWlnaHQiLCJobCIsImgkMCIsImhyIiwiYmFsIiwibHIiLCJsdiIsImxsIiwibHJyIiwibHJ2IiwibHJsIiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2IiwicmxsIiwiYWRkIiwic2luZ2xldG9uIiwiYWRkX21pbl9lbGVtZW50IiwiYWRkX21heF9lbGVtZW50IiwicmgiLCJsaCIsIm1pbl9lbHQiLCJtaW5fZWx0X29wdCIsIm1heF9lbHQiLCJtYXhfZWx0X29wdCIsInJlbW92ZV9taW5fZWx0IiwiciQwIiwicHJlcyIsInByZXMkMCIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJicyIsImFkZF9jaGFubmVsIiwidG9fcmVhZCQxIiwiYWxyZWFkeV9yZWFkIiwidG9fcmVhZCIsImFscmVhZHlfcmVhZCQwIiwidG9fcmVhZCQwIiwib3V0cHV0X2J1ZmZlciIsImFkZF9zdWJzdGl0dXRlIiwibGltJDEiLCJwcmV2aW91cyIsInByZXZpb3VzJDAiLCJzdGFydCQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJyZWxlYXNlIiwiYWNxdWlyZSIsInRyeV9hY3F1aXJlIiwicmV0IiwiZ2V0X3ZhbHVlIiwibWFrZSQwIiwicmVsZWFzZSQwIiwiYWNxdWlyZSQwIiwidHJ5X2FjcXVpcmUkMCIsImNwdV9yZWxheCIsInVuaXF1ZV92YWx1ZSIsImNyZWF0ZV9kbHMiLCJrZXlfY291bnRlciIsInBhcmVudF9rZXlzIiwibmV3X2tleSIsInNwbGl0X2Zyb21fcGFyZW50IiwiaW5pdF9vcnBoYW4iLCJpZHgiLCJraSIsIm1heWJlX2dyb3ciLCJzeiIsIm5ld19zeiIsIm5ld19zdCIsImdldF9pZCIsImRvbWFpbiIsInNlbGYiLCJpc19tYWluX2RvbWFpbiIsImZpcnN0X2RvbWFpbl9zcGF3bmVkIiwiZmlyc3Rfc3Bhd25fZnVuY3Rpb24iLCJiZWZvcmVfZmlyc3Rfc3Bhd24iLCJvbGRfZiIsIm5ld19mIiwiYXRfZXhpdF9rZXkiLCJzcGF3biIsInBrIiwidGVybV9tdXRleCIsInRlcm1fY29uZGl0aW9uIiwidGVybV9zdGF0ZSIsImJvZHkiLCJleCQwIiwiZXgiLCJyZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJzdWJfZm9ybWF0IiwiZm9ybWF0dGluZ19saXQiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5IiwiZm10dHkkMSIsImZtdHR5JDIiLCJmbXR0eSQzIiwiZm10dHkkNCIsImZtdHR5JDUiLCJmbXR0eSQ2IiwiZm10dHkkNyIsImZtdHR5JDgiLCJmbXR0eSQ5Iiwic3ViX2ZtdHR5IiwiZm10dHkkMTAiLCJzdWJfZm10dHkkMCIsImZtdHR5JDExIiwiZm10dHkkMTIiLCJmbXR0eSQxMyIsImZtdHR5JDE0IiwiZm10dHkkMTUiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJzdHIkMSIsImlzX2Fsb25lJDAiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwiaiQxIiwiZm10JDEiLCJzeW1tIiwiZm10dHlfcmVsX2RldCIsImRlIiwiZWQiLCJhZiIsImZhIiwiZGUkMCIsImVkJDAiLCJhZiQwIiwiZmEkMCIsImRlJDEiLCJlZCQxIiwiYWYkMSIsImZhJDEiLCJkZSQyIiwiZWQkMiIsImFmJDIiLCJmYSQyIiwiZGUkMyIsImVkJDMiLCJhZiQzIiwiZmEkMyIsImRlJDQiLCJlZCQ0IiwiYWYkNCIsImZhJDQiLCJkZSQ1IiwiZWQkNSIsImFmJDUiLCJmYSQ1IiwiZGUkNiIsImVkJDYiLCJhZiQ2IiwiZmEkNiIsImRlJDciLCJlZCQ3IiwiYWYkNyIsImZhJDciLCJkZSQ4IiwiZWQkOCIsImFmJDgiLCJmYSQ4IiwidHJhbnMiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsInJlc3QxIiwicmVzdDIiLCJyZXN0MSQwIiwicmVzdDIkMCIsInJlc3QxJDEiLCJyZXN0MiQxIiwicmVzdDEkMiIsInJlc3QyJDIiLCJyZXN0MSQzIiwicmVzdDIkMyIsInJlc3QxJDQiLCJyZXN0MiQ0IiwicmVzdDEkNSIsInJlc3QyJDUiLCJyZXN0MSQ2IiwicmVzdDIkNiIsInJlc3QxJDciLCJ0eTEkMCIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QxJDgiLCJ0eTEyIiwidHkxMSIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImY0IiwiZjIiLCJyZXN0MSQ5IiwicmVzdDIkOSIsInJlc3QxJDEwIiwicmVzdDIkMTAiLCJyZXN0MSQxMSIsInJlc3QyJDExIiwicmVzdDEkMTIiLCJyZXN0MiQxMiIsInJlc3QxJDEzIiwicmVzdDIkMTMiLCJmbXR0eV9vZl9mbXQiLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJ0eSQwIiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwidHlwZV9wYWRkaW5nIiwidyIsInR5cGVfcGFkcHJlYyIsInR5cGVfZm9ybWF0IiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHkwIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXQkNiIsImZtdF9yZXN0JDYiLCJwcmVjJDUiLCJwYWQkOSIsInBhZCQxMCIsImZtdHR5X3Jlc3QkNiIsInByZWMkNiIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsInBhZCQxMSIsInBhZCQxMiIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdCQ4IiwiZm10X3Jlc3QkOCIsInBhZCQxMyIsInBhZCQxNCIsImZtdHR5X3Jlc3QkOCIsImZtdCQ5IiwiZm10X3Jlc3QkOSIsImZtdCQxMCIsImZtdF9yZXN0JDEwIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXQkMTIiLCJmbXR0eV9yZXN0JDkiLCJmbXRfcmVzdCQxMiIsImZtdCQxMyIsImZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdCQxNSIsImZtdHR5X3Jlc3QkMTIiLCJmbXRfcmVzdCQxNSIsImZtdCQxNiIsImZtdF9yZXN0JDE2IiwiZm10dHkkMTYiLCJmbXQkMTciLCJmbXRfcmVzdCQxNyIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTciLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOCIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDE5IiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJ0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGkiLCJmbXR0eSQyMSIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwiZm10dHlfcmVzdCQxNiIsImZtdHR5JDIwIiwiZm10JDIxIiwic3ViX2ZtdHR5X3Jlc3QiLCJzdWJfZm10dHlfcmVzdCQwIiwic3ViX2ZtdHR5X3Jlc3QkMSIsInN1Yl9mbXR0eV9yZXN0JDIiLCJzdWJfZm10dHlfcmVzdCQzIiwic3ViX2ZtdHR5X3Jlc3QkNCIsInN1Yl9mbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkNyIsInN1Yl9mbXR0eV9yZXN0JDgiLCJzdWJfZm10dHlfcmVzdCQ5Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHlfcmVzdCQxMSIsInN1Yl9mbXR0eV9yZXN0JDEyIiwic3ViX2ZtdHR5X3Jlc3QkMTMiLCJzdWJfZm10dHlfcmVzdCQxNCIsInN1YjJfZm10dHkiLCJzdWJfZm10dHlfcmVzdCQxNSIsInN1YjJfZm10dHkkMCIsInN1Yl9mbXR0eV9yZXN0JDE2Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTgiLCJzdWJfZm10dHlfcmVzdCQxOSIsInN1Yl9mbXR0eV9yZXN0JDIwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJzdWJfZm10dHlfcmVzdCQyMiIsInN1Yl9mbXR0eV9yZXN0JDIzIiwic3ViX2ZtdHR5X3Jlc3QkMjQiLCJzdWJfZm10dHlfcmVzdCQyNSIsInN1Yl9mbXR0eV9yZXN0JDI2IiwicmVjYXN0IiwiZml4X3BhZGRpbmciLCJ3aWR0aCQwIiwiZml4X2ludF9wcmVjaXNpb24iLCJyZXMkMSIsInN0cmluZ190b19jYW1sX3N0cmluZyIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsImRpZ2l0cyIsInB1dCIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmJDAiLCJuZXdfYWNjIiwibWFrZV9wcmludGYiLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsInAkMCIsInAkMSIsImFjYyQzIiwiYWNjJDQiLCJrJDMiLCJrYWNjIiwiayQ0IiwibWFrZV9pZ25vcmVkX3BhcmFtJDAiLCJtYWtlX2N1c3RvbSQwIiwibWFrZV9pbnZhbGlkX2FyZyIsIm1ha2VfZnJvbV9mbXR0eSQwIiwibWFrZV9mcm9tX2ZtdHR5IiwibWFrZV9jdXN0b20iLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2lwcmludGYkMCIsIm1ha2VfaXByaW50ZiIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJyZXN0JDI2IiwicmVzdCQyNyIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJwYXJzZSIsImxpdF9zdGFydCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJ4JDEiLCJyJDMiLCJhcmckNCIsIngkMiIsInNwZWNzIiwiZiQ0IiwiYXJnJDUiLCJmJDUiLCJmJDYiLCJmJDciLCJhcmckNiIsIm5ld2FyZyIsInBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIiwicGFyc2VfYXJndl9keW5hbWljIiwiY3VycmVudCQwIiwicGFyc2VfYXJndiIsIm1zZyQwIiwibXNnJDEiLCJwYXJzZV9keW5hbWljIiwicGFyc2VfZXhwYW5kIiwic2Vjb25kX3dvcmQiLCJsb29wIiwibWF4X2FyZ19sZW4iLCJjdXIiLCJrd2QiLCJyZXBsYWNlX2xlYWRpbmdfdGFiIiwic2VlbiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwic3BlYyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwiZmlsZSIsIndvcmRzIiwic3Rhc2giLCJ3b3JkIiwid29yZCQwIiwicmVhZF9hcmciLCJyZWFkX2FyZzAiLCJ3cml0ZV9hdXgiLCJhcmdzIiwid3JpdGVfYXJnIiwid3JpdGVfYXJnMCIsImxvY2ZtdCIsInByaW50ZXJzIiwiZmllbGQiLCJvdGhlcl9maWVsZHMiLCJ1c2VfcHJpbnRlcnMiLCJzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG8iLCJjb25zdHJ1Y3RvciIsImZpZWxkc19vcHQiLCJjb25zdHJ1Y3RvciQwIiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyJDAiLCJsaW5lIiwiY2hhciQxIiwibGluZSQwIiwiZmlsZSQwIiwiY2hhciQyIiwibGluZSQxIiwiZmlsZSQxIiwicHJpbnQiLCJmY3QiLCJjYXRjaCQwIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJpc19yYWlzZSIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInByaW50X2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIiwiYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UiLCJwYXJhbSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDEiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biQwIiwid29ya19leG4iLCJ3b3JrX2J0IiwiZXZlbnRsb2dfcGF1c2UiLCJldmVudGxvZ19yZXN1bWUiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJkaWdlc3QiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIiLCJpbnQ2NCIsImludCQwIiwibmF0aXZlaW50IiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiYXJyIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkMSIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMiIsImRpbTMiLCJzaXplX2luX2J5dGVzJDMiLCJzbGljZV9sZWZ0XzEiLCJzbGljZV9yaWdodF8xIiwic2xpY2VfbGVmdF8yIiwic2xpY2VfcmlnaHRfMiIsImluaXQkMiIsIm9mX2FycmF5JDEiLCJhcnJheTBfb2ZfZ2VuYXJyYXkiLCJhcnJheTFfb2ZfZ2VuYXJyYXkiLCJhcnJheTJfb2ZfZ2VuYXJyYXkiLCJhcnJheTNfb2ZfZ2VuYXJyYXkiLCJyZXNoYXBlXzAiLCJyZXNoYXBlXzEiLCJyZXNoYXBlXzIiLCJyZXNoYXBlXzMiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInJlaW5pdCIsInNlZWQiLCJtYWtlX3NlbGZfaW5pdCIsImJpdHMiLCJpbnRhdXgiLCJib3VuZCIsImZ1bGxfaW50IiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImZsb2F0JDAiLCJib29sIiwibWtfZGVmYXVsdCIsInJhbmRvbV9rZXkiLCJiaXRzJDAiLCJpbnQkMSIsImZ1bGxfaW50JDAiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsInNjYWxlIiwiYm9vbCQwIiwiYml0czMyJDAiLCJiaXRzNjQkMCIsIm5hdGl2ZWJpdHMkMCIsImZ1bGxfaW5pdCIsInNlbGZfaW5pdCIsInNwbGl0JDAiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmdfa2V5IiwicG93ZXJfMl9hYm92ZSIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiaW5zZXJ0X2FsbF9idWNrZXRzIiwiaW5kZXhmdW4iLCJpbnBsYWNlIiwib2RhdGEiLCJuZGF0YSIsIm5zaXplIiwibmRhdGFfdGFpbCIsIm5pZHgiLCJtYXRjaCQwIiwib3NpemUiLCJvbGRfdHJhdiIsImZpbHRlcl9tYXBfaW5wbGFjZSIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsImhpc3RvIiwidGJsX2RhdGEiLCJidWNrIiwiYnVjayQwIiwiYnVjayQxIiwidG9fc2VxX2tleXMiLCJ0b19zZXFfdmFsdWVzIiwia2V5X2luZGV4IiwiYnVja2V0IiwiazEiLCJuZXh0MSIsImsyIiwibmV4dDIiLCJrMyIsImQzIiwibmV4dDMiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsInNlZWRlZF9oYXNoIiwiaGFzaF9wYXJhbSIsInJlYnVpbGQiLCJnZXRfY29weSIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImNvdW50IiwiYWRkX2F1eCIsInNldHRlciIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJvbGRsZW4iLCJuZXd0Iiwib2IiLCJvaSIsIm9oIiwic2V0dGVyJDAiLCJuaSIsImZpbmRfb3IiLCJpZm5vdGZvdW5kIiwiZmluZF9zaGFkb3ciLCJpZmZvdW5kIiwibGVucyIsInRvdGxlbiIsInVua25vd24iLCJwcF9lbnF1ZXVlIiwidG9rZW4iLCJwcF9pbmZpbml0eSIsInBwX291dHB1dF9zdHJpbmciLCJwcF9vdXRwdXRfbmV3bGluZSIsImZvcm1hdF9wcF90ZXh0IiwidGV4dCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInJlYWxfaW5kZW50IiwiYnJlYWtfbGluZSIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwicHBfY2xvc2VfYm94IiwicHBfb3Blbl9zdGFnIiwicHBfY2xvc2Vfc3RhZyIsInBwX3NldF9wcmludF90YWdzIiwicHBfc2V0X21hcmtfdGFncyIsInBwX2dldF9wcmludF90YWdzIiwicHBfZ2V0X21hcmtfdGFncyIsInBwX3NldF90YWdzIiwicHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicGN0IiwicG90IiwibWN0IiwibW90IiwicHBfcmluaXQiLCJwcF9mbHVzaF9xdWV1ZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfb3Blbl9oYm94IiwicHBfb3Blbl92Ym94IiwicHBfb3Blbl9odmJveCIsInBwX29wZW5faG92Ym94IiwicHBfb3Blbl9ib3giLCJwcF9wcmludF9uZXdsaW5lIiwicHBfcHJpbnRfZmx1c2giLCJwcF9mb3JjZV9uZXdsaW5lIiwicHBfcHJpbnRfaWZfbmV3bGluZSIsInBwX3ByaW50X2N1c3RvbV9icmVhayIsInBwX3ByaW50X2JyZWFrIiwicHBfcHJpbnRfc3BhY2UiLCJwcF9wcmludF9jdXQiLCJwcF9vcGVuX3Rib3giLCJwcF9jbG9zZV90Ym94IiwicHBfcHJpbnRfdGJyZWFrIiwicHBfcHJpbnRfdGFiIiwicHBfc2V0X3RhYiIsInBwX3NldF9tYXhfYm94ZXMiLCJwcF9nZXRfbWF4X2JveGVzIiwicHBfb3Zlcl9tYXhfYm94ZXMiLCJwcF9zZXRfZWxsaXBzaXNfdGV4dCIsInBwX2dldF9lbGxpcHNpc190ZXh0IiwicHBfbGltaXQiLCJwcF9zZXRfbWF4X2luZGVudCIsInBwX2dldF9tYXhfaW5kZW50IiwicHBfc2V0X21hcmdpbiIsIm5ld19tYXhfaW5kZW50IiwidmFsaWRhdGVfZ2VvbWV0cnkiLCJtYXJnaW4iLCJtYXhfaW5kZW50IiwiY2hlY2tfZ2VvbWV0cnkiLCJnZW9tZXRyeSIsInBwX2dldF9tYXJnaW4iLCJwcF9zZXRfZnVsbF9nZW9tZXRyeSIsInBwX3NldF9nZW9tZXRyeSIsInBwX3NhZmVfc2V0X2dlb21ldHJ5IiwicHBfZ2V0X2dlb21ldHJ5IiwicHBfdXBkYXRlX2dlb21ldHJ5IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwiZGlzcGxheV9uZXdsaW5lIiwiYmxhbmtfbGluZSIsImRpc3BsYXlfYmxhbmtzIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJwcF9tYWtlX2Zvcm1hdHRlciIsInBwX3F1ZXVlIiwic3lzX3RvayIsInNjYW5fc3RhY2siLCJmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyIsIm91dF9mdW5zIiwibWFrZV9mb3JtYXR0ZXIiLCJmbHVzaCIsInBwZiIsImZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCIsImZvcm1hdHRlcl9vZl9idWZmZXIiLCJwcF9idWZmZXJfc2l6ZSIsInBwX21ha2VfYnVmZmVyIiwic3RkYnVmIiwic3RkX2Zvcm1hdHRlciIsImVycl9mb3JtYXR0ZXIiLCJzdHJfZm9ybWF0dGVyIiwic3RkYnVmX2tleSIsInN0cl9mb3JtYXR0ZXJfa2V5IiwiYnVmZmVyZWRfb3V0X3N0cmluZyIsImJ1ZmZlcmVkX291dF9mbHVzaCIsInN0ZF9idWZfa2V5IiwiZXJyX2J1Zl9rZXkiLCJzdGRfZm9ybWF0dGVyX2tleSIsImVycl9mb3JtYXR0ZXJfa2V5IiwiZ2V0X3N0ZF9mb3JtYXR0ZXIiLCJnZXRfZXJyX2Zvcm1hdHRlciIsImdldF9zdHJfZm9ybWF0dGVyIiwiZ2V0X3N0ZGJ1ZiIsImZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIiLCJmbHVzaF9zdHJfZm9ybWF0dGVyIiwibWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIiwib3V0cHV0JDAiLCJmbHVzaCQwIiwic3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfIiwibWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsInNvYiIsImdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsIml0ZW1zIiwiYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIiwiaXRlbSIsImZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYiIsIm9wZW5faGJveCIsIm9wZW5fdmJveCIsIm9wZW5faHZib3giLCJvcGVuX2hvdmJveCIsIm9wZW5fYm94IiwiY2xvc2VfYm94Iiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwib3B0JDEiLCJwcF9wcmludF9zZXEiLCJzZXEkMSIsInNlcSQyIiwicHBfcHJpbnRfdGV4dCIsInBwX3ByaW50X29wdGlvbiIsInBwX3ByaW50X3Jlc3VsdCIsInBwX3ByaW50X2VpdGhlciIsImNvbXB1dGVfdGFnIiwidGFnX2FjYyIsIm91dHB1dF9mb3JtYXR0aW5nX2xpdCIsImJ0eSIsInAkNiIsInAkNyIsInNpemUkMSIsInAkOCIsImtkcHJpbnRmIiwiZHByaW50ZiIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsImZzIiwiZnMkMCIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsImludmFsaWRhdGVfY3VycmVudF9jaGFyIiwidG9rZW5fc3RyaW5nIiwidG9rZW5fYnVmZmVyIiwic2tpcF9jaGFyIiwiaWdub3JlX2NoYXIiLCJzdG9yZV9jaGFyIiwiZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSIsImluYW1lIiwic2Nhbl9jbG9zZV9hdF9lbmQiLCJzY2FuX3JhaXNlX2F0X2VuZCIsImZyb21faWMiLCJzY2FuX2Nsb3NlX2ljIiwiZW9mIiwib3Blbl9pbl9maWxlIiwiY2xvc2VfaW4iLCJpYyQwIiwiYmFkX2lucHV0IiwiYmFkX2lucHV0X2VzY2FwZSIsImJhZF90b2tlbl9sZW5ndGgiLCJtZXNzYWdlIiwiYmFkX2Zsb2F0IiwiYmFkX2hleF9mbG9hdCIsImNoYXJhY3Rlcl9taXNtYXRjaCIsImNpIiwiY2hlY2tfY2hhciIsImNoZWNrX3RoaXNfY2hhciIsInRva2VuX2NoYXIiLCJ0b2tlbl9ib29sIiwiaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIiLCJ0b2tlbl9pbnRfbGl0ZXJhbCIsImNvbnYiLCJ0b2tlbl9mbG9hdCIsInNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJsb3dlcmNhc2UiLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwiZ2V0X2RpZ2l0Iiwic2Nhbl9jYW1sX3N0cmluZyIsImZpbmRfc3RvcCQwIiwic2tpcF9zcGFjZXMiLCJmaW5kX3N0b3AiLCJzY2FuX2NoYXJzX2luX2NoYXJfc2V0Iiwic2Nhbl9pbmRpYyIsInNjYW5fY2hhcnMiLCJzY2FuZl9iYWRfaW5wdXQiLCJ3aWR0aF9vZl9wYWRfb3B0Iiwic3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCIsImZtdGluZyIsInRha2VfZm9ybWF0X3JlYWRlcnMkMCIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMkMCIsInJlYWRlciIsIm5ld19rIiwicmVhZGVyc19yZXN0IiwidGFrZV9mb3JtYXRfcmVhZGVycyIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMiLCJtYWtlX3NjYW5mIiwicmVhZGVycyIsInNjYW4kMCIsInN0cl9yZXN0IiwicGFkX3ByZWNfc2NhbmYiLCJzY2FuJDEiLCJzY2FuJDIiLCJzY2FuJDMiLCJzY2FuJDQiLCJjb252JDAiLCJzY2FuJDUiLCJjb252JDEiLCJzY2FuJDYiLCJjb252JDIiLCJzY2FuJDciLCJzY2FuJDgiLCJmbXRpbmdfbGl0JDAiLCJzdHAkMCIsInMkMiIsInN0cl9yZXN0JDAiLCJhcmdfcmVzdCIsImtzY2FuZl9nZW4iLCJlZiIsImFyZ3MkMSIsImV4YyQwIiwiZXhjIiwiYXJncyQwIiwia3NjYW5mIiwia3NjYW5mX29wdCIsImJzY2FuZiIsImJzY2FuZl9vcHQiLCJrc3NjYW5mIiwic3NjYW5mIiwic3NjYW5mX29wdCIsInNjYW5mIiwic2NhbmZfb3B0IiwiYnNjYW5mX2Zvcm1hdCIsImZvcm1hdCIsInNzY2FuZl9mb3JtYXQiLCJmb3JtYXRfZnJvbV9zdHJpbmciLCJ1bmVzY2FwZWQiLCJyZWdpc3RlciIsInJlZ2lzdGVyX2V4Y2VwdGlvbiIsIm8kMCIsImluaXRpYWxfb2JqZWN0X3NpemUiLCJkdW1teV9pdGVtIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld192YXJpYWJsZSIsInRvX2FycmF5IiwibmV3X21ldGhvZHNfdmFyaWFibGVzIiwibWV0aHMiLCJ2YWxzIiwibWV0aHMkMCIsIm5tZXRocyIsIm52YWxzIiwiZ2V0X3ZhcmlhYmxlIiwiZ2V0X3ZhcmlhYmxlcyIsImFkZF9pbml0aWFsaXplciIsImNyZWF0ZV90YWJsZSIsInB1YmxpY19tZXRob2RzIiwidGFncyIsImluaXRfY2xhc3MiLCJpbmhlcml0cyIsImNsYSIsInN1cGVyJDAiLCJubSIsIm1ha2VfY2xhc3MiLCJwdWJfbWV0aHMiLCJjbGFzc19pbml0IiwiZW52X2luaXQiLCJtYWtlX2NsYXNzX3N0b3JlIiwiaW5pdF90YWJsZSIsImR1bW15X2NsYXNzIiwibG9jIiwidW5kZWYiLCJjcmVhdGVfb2JqZWN0IiwiY3JlYXRlX29iamVjdF9vcHQiLCJvYmpfMCIsIml0ZXJfZiIsInJ1bl9pbml0aWFsaXplcnMiLCJpbml0cyIsInJ1bl9pbml0aWFsaXplcnNfb3B0IiwiY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpIiwiZ2V0X2RhdGEiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290Iiwicm9vdF9kYXRhIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsInRhYmxlc19kYXRhIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsImluaXRfbW9kX2Jsb2NrIiwiY29tcHMkMCIsIm1vZHUiLCJzaGFwZSIsImZuJDAiLCJjb21wcyIsImluaXRfbW9kIiwidXBkYXRlX21vZF9ibG9jayIsImNsIiwidXBkYXRlX21vZCIsInBybmciLCJoa2V5IiwiY2xlYW4iLCJkb19idWNrZXQiLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwic2V0X2RhdGEiLCJlcGgiLCJxdWVyeSIsInNldF9rZXlfZGF0YSIsInRlc3Rfa2V5IiwidCQwIiwiZ2V0X2tleTEiLCJzZXRfa2V5MSIsImdldF9rZXkyIiwic2V0X2tleTIiLCJnZXRfZGF0YSQwIiwic2V0X2RhdGEkMCIsIm1ha2UkMSIsImtleTEiLCJrZXkyIiwicXVlcnkkMCIsImsyJDAiLCJrMSQwIiwiZXF1YWwkMCIsInNlZWRlZF9oYXNoJDAiLCJtYWtlJDIiLCJhZGQkMCIsInRlc3Rfa2V5cyIsInJlbW92ZSQwIiwiZmluZCQwIiwibGVuZ3RoJDAiLCJjbGVhciQwIiwibGVuZ3RoJDEiLCJnZXRfa2V5JDAiLCJzZXRfa2V5JDAiLCJnZXRfZGF0YSQxIiwic2V0X2RhdGEkMSIsIm1ha2UkMyIsInF1ZXJ5JDEiLCJtYWtlJDQiLCJhZGQkMSIsInRlc3Rfa2V5cyQwIiwicmVtb3ZlJDEiLCJmaW5kJDEiLCJsZW5ndGgkMiIsImNsZWFyJDEiLCJudWxsJDAiLCJjdXJyZW50X2Rpcl9uYW1lIiwicGFyZW50X2Rpcl9uYW1lIiwiZGlyX3NlcCIsInF1b3RlcXVvdGUiLCJudWxsJDEiLCJjdXJyZW50X2Rpcl9uYW1lJDAiLCJwYXJlbnRfZGlyX25hbWUkMCIsImRpcl9zZXAkMCIsIm51bGwkMiIsImN1cnJlbnRfZGlyX25hbWUkMSIsInBhcmVudF9kaXJfbmFtZSQxIiwiZGlyX3NlcCQxIiwiZ2VuZXJpY19iYXNlbmFtZSIsImlzX2Rpcl9zZXAiLCJnZW5lcmljX2Rpcm5hbWUiLCJpc19yZWxhdGl2ZSIsImlzX2ltcGxpY2l0IiwiY2hlY2tfc3VmZml4Iiwic3VmZiIsImNob3Bfc3VmZml4X29wdCIsImxlbl9mIiwidGVtcF9kaXJfbmFtZSIsInF1b3RlIiwicXVvdGVfY29tbWFuZCIsImJhc2VuYW1lIiwiZGlybmFtZSIsImlzX2Rpcl9zZXAkMCIsImlzX3JlbGF0aXZlJDAiLCJpc19pbXBsaWNpdCQwIiwiY2hlY2tfc3VmZml4JDAiLCJjaG9wX3N1ZmZpeF9vcHQkMCIsInRlbXBfZGlyX25hbWUkMCIsInF1b3RlJDAiLCJsb29wJDAiLCJsb29wX2JzIiwiYWRkX2JzIiwicXVvdGVfY21kX2ZpbGVuYW1lIiwicXVvdGVfY29tbWFuZCQwIiwiZHJpdmVfYW5kX3BhdGgiLCJkaXJuYW1lJDAiLCJwYXRoIiwiZHJpdmUiLCJkaXIiLCJiYXNlbmFtZSQwIiwiYmFzZW5hbWUkMSIsImRpcm5hbWUkMSIsIm51bGwkMyIsImN1cnJlbnRfZGlyX25hbWUkMiIsInBhcmVudF9kaXJfbmFtZSQyIiwiZGlyX3NlcCQyIiwiaXNfZGlyX3NlcCQxIiwiaXNfcmVsYXRpdmUkMSIsImlzX2ltcGxpY2l0JDEiLCJjaGVja19zdWZmaXgkMSIsImNob3Bfc3VmZml4X29wdCQxIiwidGVtcF9kaXJfbmFtZSQxIiwicXVvdGUkMSIsInF1b3RlX2NvbW1hbmQkMSIsImJhc2VuYW1lJDIiLCJkaXJuYW1lJDIiLCJjaG9wX3N1ZmZpeCIsImV4dGVuc2lvbl9sZW4iLCJpMCIsImV4dGVuc2lvbiIsImNob3BfZXh0ZW5zaW9uIiwicmVtb3ZlX2V4dGVuc2lvbiIsInRlbXBfZmlsZV9uYW1lIiwidGVtcF9kaXIiLCJyYW5kb21fc3RhdGUiLCJybmQiLCJjdXJyZW50X3RlbXBfZGlyX25hbWUiLCJzZXRfdGVtcF9kaXJfbmFtZSIsImdldF90ZW1wX2Rpcl9uYW1lIiwidGVtcF9maWxlIiwib3Blbl90ZW1wX2ZpbGUiLCJzdGgkMCIsInBlcm1zIiwic3RoJDEiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93Iiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsInJlYWRfdXB0byIsImVuc3VyZSIsIm5ld19sZW4kMCIsIm5ld19sZW4kMSIsImlucHV0X2FsbCIsImNodW5rX3NpemUiLCJpbml0aWFsX3NpemUkMCIsImluaXRpYWxfc2l6ZSQxIiwibnJlYWQiLCJidWYkMiIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJzZXRfYmluYXJ5X21vZGUiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJvcHQiLCJzdGgiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJjb2VyY2UiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfdF9zZXhwX2dyYW1tYXIiLCJlbXB0eV9zZXhwX2dyYW1tYXIiLCJib29sX3NleHBfZ3JhbW1hciIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsImludF9zZXhwX2dyYW1tYXIiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwicmVmX3NleHBfZ3JhbW1hciIsImdyYW1tYXIiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInBhcmFtIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJhcmciLCJoYW5kbGVyIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJkZXNjZW5kaW5nIiwieCIsInkiLCJtYXgiLCJtaW4iLCJtYXhfaW50IiwibWluX2ludCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsImNoYXJfb2ZfaW50Iiwic3RyaW5nX29mX2Jvb2wiLCJib29sX29mX3N0cmluZ19vcHQiLCJib29sX29mX3N0cmluZyIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnRfb3B0IiwicmVhZF9pbnQiLCJyZWFkX2Zsb2F0X29wdCIsInJlYWRfZmxvYXQiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsIm9wZW5fb3V0X2dlbiIsImZsdXNoIiwiZmx1c2hfYWxsIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0X2J5dGVzIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfdmFsdWUiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfb3V0Iiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwib3Blbl9pbl9nZW4iLCJpbnB1dF9jaGFyIiwiaW5wdXRfbGluZSIsImlucHV0IiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsImNsb3NlX2luX25vZXJyIiwic2V0X2JpbmFyeV9tb2RlX2luIiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCIsImV4aXQiLCJhdF9leGl0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJ1bnNhZmVfcmVhbGx5X2lucHV0IiwiZG9fYXRfZXhpdCIsImRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IiwiYm9vbF90b19pbnQiLCJzeW1ib2wkMyIsInN5bWJvbCQ0Iiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsImFzY2VuZGluZyIsIm1heCQwIiwibWluJDAiLCJhc2NlbmRpbmckMCIsImRlc2NlbmRpbmckMCIsIm1heCQxIiwibWluJDEiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJhc2NlbmRpbmckMSIsImRlc2NlbmRpbmckMSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heCQyIiwibWluJDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsIm1heCQzIiwibWluJDMiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJhc2NlbmRpbmckMyIsImRlc2NlbmRpbmckMyIsImNvbXBhcmUkMCIsImVxdWFsJDAiLCJtYXgkNCIsIm1pbiQ0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiYXNjZW5kaW5nJDQiLCJkZXNjZW5kaW5nJDQiLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwibWF4JDUiLCJtaW4kNSIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsImFzY2VuZGluZyQ1IiwiZGVzY2VuZGluZyQ1IiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQ2IiwibWluJDYiLCJpIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5Iiwic3ltYm9sJDQwIiwic3ltYm9sJDQxIiwic3ltYm9sJDQyIiwiYXNjZW5kaW5nJDYiLCJkZXNjZW5kaW5nJDYiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwibWF4JDciLCJtaW4kNyIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsImFzY2VuZGluZyQ3IiwiZGVzY2VuZGluZyQ3IiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsIm1heCQ4IiwibWluJDgiLCJzeW1ib2wkNDkiLCJzeW1ib2wkNTAiLCJzeW1ib2wkNTEiLCJzeW1ib2wkNTIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJhc2NlbmRpbmckOCIsImRlc2NlbmRpbmckOCIsImNvbXBhcmUkNSIsImVxdWFsJDUiLCJtYXgkOSIsIm1pbiQ5Iiwic3ltYm9sJDU1Iiwic3ltYm9sJDU2Iiwic3ltYm9sJDU3Iiwic3ltYm9sJDU4Iiwic3ltYm9sJDU5Iiwic3ltYm9sJDYwIiwiYXNjZW5kaW5nJDkiLCJkZXNjZW5kaW5nJDkiLCJjb21wYXJlJDYiLCJlcXVhbCQ2IiwibWF4JDEwIiwibWluJDEwIiwic3ltYm9sJDYxIiwic3ltYm9sJDYyIiwic3ltYm9sJDYzIiwic3ltYm9sJDY0IiwiYXNyIiwibGFuZCIsImxub3QkMCIsImxvciIsImxzbCIsImxzciIsImx4b3IiLCJtb2QiLCJhYnMkMCIsImZhaWx3aXRoJDAiLCJmc3QiLCJpbnZhbGlkX2FyZyQwIiwic25kIiwicGh5c19lcXVhbCIsImRlY3IiLCJpbmNyIiwiZmxvYXRfb2Zfc3RyaW5nIiwiYW1fdGVzdGluZyIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwidCIsImYiLCJmb2xkX3JpZ2h0IiwiaXRlciIsIml0ZXJpIiwibWFwIiwibWFwaSIsInN0YWJsZV9zb3J0Iiwic3dhcCIsImoiLCJlbHRfaSIsImVsdF9qIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInRvX2ludCIsInVuc2FmZV9vZl9pbnQiLCJ1cHBlcmNhc2UiLCJpbnRfaXNfb2siLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJvZl9pbnQiLCJvZl9pbnRfZXhuIiwidDEiLCJ0MiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJzdWNjIiwiaGRfZXhuIiwibGVuZ3RoIiwicmV2X2FwcGVuZCIsInRsX2V4biIsInVuemlwIiwiZXhpc3RzIiwiZXhpc3RzMl9vayIsImwxIiwibDIiLCJmb2xkMl9vayIsImZvcl9hbGwiLCJmb3JfYWxsMl9vayIsIml0ZXIyX29rIiwibm9udGFpbF9tYXAiLCJub250YWlsX21hcGkiLCJwYXJ0aXRpb24iLCJyZXZfbWFwIiwicmV2X21hcDJfb2siLCJzb3J0IiwibCIsInJldiIsInJlcyIsInJlc3QiLCJhIiwiYiIsImhhc2hfZm9sZF91bml0IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZm9sZF9zdHJpbmciLCJhc19pbnQiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImhhc2hfZm9sZF9vcHRpb24iLCJoYXNoX2ZvbGRfZWxlbSIsImhhc2hfZm9sZF9saXN0IiwicyQxIiwibGlzdCQxIiwicyQyIiwibGlzdCIsImxpc3QkMCIsInMkMCIsImhhc2hfZm9sZF9sYXp5X3QiLCJoYXNoX2ZvbGRfcmVmX2Zyb3plbiIsImhhc2hfZm9sZF9hcnJheV9mcm96ZW4iLCJhcnJheSIsImUiLCJpJDAiLCJoYXNoX25hdGl2ZWludCIsImhhc2hfaW50NjQiLCJoYXNoX2ludDMyIiwiaGFzaF9jaGFyIiwiaGFzaF9pbnQiLCJoYXNoX2Jvb2wiLCJoYXNoX3N0cmluZyIsImhhc2hfZmxvYXQiLCJoYXNoX3VuaXQiLCJzZWVkIiwib2ZfZm9sZCIsImhhc2hfZm9sZF90IiwicnVuIiwiZm9sZGVyIiwib3B0Iiwic3RoIiwiY29tcGFyZV9zdGF0ZSIsInN0YXRlX3RvX3N0cmluZyIsInN0YXRlIiwidCQwIiwidCQxIiwidCQyIiwidCQzIiwidCQ0IiwidCQ1IiwiY29tcGFyZV9hYnN0cmFjdCIsInR5cGVfbmFtZSIsImVxdWFsX2Fic3RyYWN0IiwiY29tcGFyZV9ib29sIiwiY29tcGFyZV9jaGFyIiwiY29tcGFyZV9mbG9hdCIsImNvbXBhcmVfaW50IiwiY29tcGFyZV9pbnQzMiIsImNvbXBhcmVfaW50NjQiLCJjb21wYXJlX25hdGl2ZWludCIsImNvbXBhcmVfc3RyaW5nIiwiY29tcGFyZV91bml0IiwiY29tcGFyZV9hcnJheSIsImNvbXBhcmVfZWx0IiwibGVuX2EiLCJsZW5fYiIsInJldCIsInIiLCJjb21wYXJlX2xpc3QiLCJhJDAiLCJiJDAiLCJ5cyIsInhzIiwiY29tcGFyZV9vcHRpb24iLCJjb21wYXJlX3JlZiIsImVxdWFsX2Jvb2wiLCJlcXVhbF9jaGFyIiwiZXF1YWxfaW50IiwiZXF1YWxfaW50MzIiLCJlcXVhbF9pbnQ2NCIsImVxdWFsX25hdGl2ZWludCIsImVxdWFsX3N0cmluZyIsImVxdWFsX3VuaXQiLCJlcXVhbF9mbG9hdCIsImVxdWFsX2FycmF5IiwiZXF1YWxfZWx0IiwiZXF1YWxfbGlzdCIsImVxdWFsX29wdGlvbiIsImVxdWFsX3JlZiIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsImhhc2giLCJoc3YiLCJhcmciLCJhMCIsImhzdiQwIiwiYTAkMCIsImhzdiQxIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJmdW5jIiwicmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UiLCJpbml0aWFsaXplX21vZHVsZSIsImNsZWFyX2JhY2t0cmFjZSIsIndpdGhfcmV0dXJuIiwiaXNfYWxpdmUiLCJyZXR1cm4kMCIsIndpdGhfcmV0dXJuX29wdGlvbiIsInByZXBlbmQiLCJwYXJhbSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwiYmluZCQwIiwicmV0dXJuJDEiLCJtYXAkMCIsInRvX21vbmFkIiwib2ZfbW9uYWQiLCJkZXJpdmVkX21hcCIsIm1hcDIiLCJ0YSIsInRiIiwibWFwMyIsInRjIiwic3ltYm9sJDAiLCJ1Iiwic3ltYm9sJDEiLCJ0ZiIsImZhYiIsImMiLCJhcHBseSIsIm1mIiwibXgiLCJ0eCIsImN1c3RvbV9tYXAiLCJhcHBseSQwIiwiYmxpdF9zdHJpbmciLCJtYWtlIiwidW5zYWZlX2JsaXQiLCJ1bnNhZmVfdG9fc3RyaW5nIiwidW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211IiwiY29tcGFyYXRvciIsImVycm9yX3NvdXJjZV8wMTEiLCJjbXBfZiIsImNtcF9zIiwiaGFzaF9mb2xkX2YiLCJoYXNoX2ZvbGRfcyIsInRfb2Zfc2V4cCIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwiZl9zZXhwX2dyYW1tYXIiLCJzX3NleHBfZ3JhbW1hciIsIm9wYXF1ZV9pZGVudGl0eSIsIm5hbWUiLCJnZXQiLCJmc2V0Iiwic2V0dGVyIiwidXBkYXRlciIsImZpZWxkIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInNlcCIsIm4iLCJuJDAiLCJuJDEiLCJoc3YkMiIsInBvc19jbnVtXzAxMCIsInBvc19ib2xfMDA4IiwicG9zX2xudW1fMDA2IiwicG9zX2ZuYW1lXzAwNCIsImFyZ18wMTEiLCJibmRzXzAwMyIsImFyZ18wMDkiLCJibmRzXzAwMyQwIiwiYXJnXzAwNyIsImJuZHNfMDAzJDEiLCJhcmdfMDA1IiwiYm5kc18wMDMkMiIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJtYWtlX2xvY2F0aW9uX3N0cmluZyIsInBvc19mbmFtZSIsInBvc19sbnVtIiwicG9zX2NudW0iLCJwb3NfYm9sIiwiaXNfZW1wdHkiLCJwYXJ0aXRpb25fbWFwIiwiZnN0JDAiLCJ5JDAiLCJzbmQkMCIsImVycm9yX3NvdXJjZV8wMDUiLCJvZl9hXzAwMSIsIm9mX2JfMDAyIiwic2V4cF8wMDciLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsIm9mX2FfMDE5Iiwib2ZfYl8wMjAiLCJhcmcwXzAyMyIsInJlczBfMDI0IiwiYV9zZXhwX2dyYW1tYXIiLCJiX3NleHBfZ3JhbW1hciIsImNtcF9hIiwiY21wX2IiLCJhXzAyNyIsImJfMDI4IiwiYV8wMjkiLCJiXzAzMCIsImFfMDMxIiwiYl8wMzIiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3IiwiYl8wMzgiLCJoYXNoX2ZvbGRfYSIsImhhc2hfZm9sZF9iIiwieCQwIiwiY2hlY2tfb2siLCJjaGVja19lcnJvciIsIm9rIiwiZXJyb3IiLCJmYWlsIiwiZmFpbGYiLCJtYXBfZXJyb3IiLCJiaW5kJDEiLCJtYXAkMSIsInJldHVybiQyIiwiaXNfb2siLCJpc19lcnJvciIsIm9mX29wdGlvbiIsIml0ZXJfZXJyb3IiLCJ0b19laXRoZXIiLCJvZl9laXRoZXIiLCJva19pZl90cnVlIiwiYm9vbCIsInRyeV93aXRoIiwib2tfZXhuIiwib2tfb3JfZmFpbHdpdGgiLCJjb21iaW5lIiwiZXJyIiwib2sxIiwib2syIiwiZXJyMSIsImVycjIiLCJjb21iaW5lX2Vycm9ycyIsImVycnMiLCJjb21iaW5lX2Vycm9yc191bml0IiwiY291bnQiLCJzdW0iLCJNIiwiZm9sZF9yZXN1bHQiLCJhY2MiLCJpdGVtIiwiZm9sZF91bnRpbCIsImZpbmlzaCIsIm1pbl9lbHQiLCJlbHQiLCJtYXhfZWx0IiwiZmluZF9tYXAiLCJmaW5kIiwidG9fYXJyYXkiLCJpdGVyJDAiLCJpdGVyJDEiLCJsZW5ndGgkMCIsImxlbmd0aCQxIiwiaXNfZW1wdHkkMCIsInN1bSQwIiwibSIsImNvdW50JDAiLCJleGlzdHMkMCIsImZvcl9hbGwkMCIsImZpbmRfbWFwJDAiLCJmaW5kJDAiLCJ0b19saXN0JDAiLCJ0b19hcnJheSQwIiwibWluX2VsdCQwIiwibWF4X2VsdCQwIiwiZm9sZF9yZXN1bHQkMCIsImZvbGRfdW50aWwkMCIsImZvbGQkMCIsIm1lbSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJzZXhwX29mX2EiLCJzbG93X2NoZWNrX3Bvc19sZW5fZXhuIiwicG9zIiwidG90YWxfbGVuZ3RoIiwiY2hlY2tfcG9zX2xlbl9leG4iLCJzdG9wIiwiZ2V0X3Bvc19sZW5fZXhuIiwibGVuJDAiLCJvZl9zdGF0ZSIsImFzc2lnbiIsImRzdCIsInNyYyIsImRzdCQwIiwic3JjJDAiLCJtYWtlX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJzcGxpdF9mcm9tX3BhcmVudCIsImdldF9zdGF0ZSIsInJhbmRvbV9rZXkiLCJmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMiLCJhbGxvd19pbl90ZXN0cyIsImJpdHMiLCJpbnQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJjaGFyJDAiLCJhc2NpaSIsIm1ha2Vfc2VsZl9pbml0IiwiaW50X29uXzY0Yml0cyIsImJvdW5kIiwiaW50X29uXzMyYml0cyIsImludCQxIiwiYml0cyQwIiwiZnVsbF9yYW5nZV9pbnQ2NCIsImJpdHMkMSIsImZ1bGxfcmFuZ2VfaW50MzIiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMkMCIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50IiwicmFpc2VfY3Jvc3NlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kIiwic3RyaW5nX29mX2JvdW5kIiwiaW50X2luY2wiLCJsbyIsImhpIiwiZGlmZiIsImludDMyX2luY2wiLCJuYXRpdmVpbnRfaW5jbCIsImludDY0X2luY2wiLCJmbG9hdCQwIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQyIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwic3RoJDAiLCJudW1fc3dhcHMiLCJ0aGlzX2kiLCJyYW5kb21faSIsImNvbnN0JDAiLCJub24iLCJmb3JldmVyIiwiZSQwIiwiY29tcG9zZSIsImciLCJmbGlwIiwiYXBwbHlfbl90aW1lcyIsIngkMSIsInNleHBfMDA2IiwiZXJyb3Jfc291cmNlXzAyMiIsImZvbGRfbGVmdCIsImFfMDA2IiwiYl8wMDciLCJhXzAwOCIsImJfMDA5Iiwib2ZfYV8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwic3RoJDEiLCJoZCIsInRsIiwibnRoIiwibnRoX2V4biIsInVub3JkZXJlZF9hcHBlbmQiLCJvZl9saXN0cyIsInNoYXJlZF9sZW5ndGgiLCJzaGFyZWRfbGVuZ3RoJDAiLCJjaGVja19sZW5ndGgyX2V4biIsInRhaWxfb2ZfYiIsInRhaWxfb2ZfYSIsImNoZWNrX2xlbmd0aDIiLCJvZl9saXN0cyQwIiwibDMiLCJjJDAiLCJjaGVja19sZW5ndGgzX2V4biIsInRhaWxfb2ZfYyIsIm4xIiwibjIiLCJuMyIsImNoZWNrX2xlbmd0aDMiLCJpdGVyMiIsIml0ZXIyX2V4biIsInJldl9tYXAyIiwicmV2X21hcDJfZXhuIiwiZm9sZDIiLCJmb2xkMl9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsImFjY3UiLCJmaWx0ZXIiLCJub3RfZm91bmQiLCJmaW5kX21hcF9leG4iLCJub3RfZm91bmQkMCIsImZpbmRfZXhuIiwiZmluZGkiLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsImZpbmRfbWFwaSIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsImZvcl9hbGxpIiwiZXhpc3RzaSIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDEkMCIsImwyJDAiLCJsMyQwIiwiYWMiLCJsMyQxIiwibDIkMSIsImwxJDEiLCJhYyQwIiwicmV2X21hcDMiLCJyZXZfbWFwM19leG4iLCJtYXAzX29rIiwibWFwM19leG4iLCJyZXZfbWFwX2FwcGVuZCIsImgiLCJsaXN0JDIiLCJ1bnppcDMiLCJ6IiwiemlwX2V4biIsInppcCIsInJldl9tYXBpIiwiZm9sZGluZ19tYXBpIiwiZm9sZF9tYXBpIiwiZm9sZGkiLCJmaWx0ZXJpIiwicmVkdWNlIiwicmVkdWNlX2V4biIsInJlZHVjZV9iYWxhbmNlZCIsInN0ZXBfYWNjdW0iLCJudW0iLCJudW0kMCIsImFjYyQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwic3ltYm9sJDIiLCJsYXN0X2V4biIsImxhc3QiLCJpc19wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsInByZWZpeCQxIiwiaGQkMCIsImZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIiwiYTEiLCJhMSQwIiwiYTIiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImwkMCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImNvdW50aSIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwiZmlsdGVyX21hcCIsInJldl9maWx0ZXJfbWFwaSIsImkkMSIsImZpbHRlcl9tYXBpIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJwYXJ0aXRpb25fdGYiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAxNCIsIm9mX2JfMDE1IiwieF8wMjMiLCJzZXhwXzAyMSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAxOSIsInJlczFfMDIwIiwic2V4cF9vZl90JDEiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzAiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsIm1lbSQwIiwicmVtb3ZlIiwiYWRkIiwiaW52ZXJzZSIsIm1hcCQyIiwiZWwiLCJzcGxpdF9uIiwidF9vcmlnIiwidGFrZSIsImRyb3AiLCJjaHVua3Nfb2YiLCJsJDEiLCJzdWJsaXN0Iiwic3BsaXRfd2hpbGUiLCJ0YWtlX3doaWxlIiwiZHJvcF93aGlsZSIsImRyb3BfbGFzdCIsImRyb3BfbGFzdF9leG4iLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsImxpc3QxIiwibGlzdDIiLCJjb25jYXRfbm9fb3JkZXIiLCJjb25zIiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwiYXJyIiwicmFuZG9tX2VsZW1lbnRfZXhuIiwicmFuZG9tX2VsZW1lbnQiLCJjbXAiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMV8wMTMiLCJyZXMyXzAxNCIsImFyZzFfMDE2IiwicmVzMV8wMTgiLCJhcmcyXzAyMSIsImFyZzFfMDIwIiwiYXJnMF8wMTkiLCJyZXMxXzAyMyIsInJlczJfMDI0IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmcxXzAzMCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJ0b19zdHJpbmdzX2h1bSIsInN0cmluZyIsInNleHAkMCIsInNleHAkMSIsInRhZyIsInRhZyQwIiwic2V4cCQyIiwidGFnJDEiLCJib2R5IiwidHJ1bmNfYWZ0ZXIiLCJ0cyQwIiwidHMkMSIsImFjJDEiLCJ0b19zZXhwc19odW0iLCJoZXJlIiwiaGVyZSQwIiwidG9fc2V4cF9odW0iLCJzZXhwcyIsInRvX21lc3NhZ2UiLCJpbmZvIiwib2ZfbWVzc2FnZSIsInRvX3N0cmluZ19odW0iLCJtZXNzYWdlIiwidG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIiwib2ZfbGF6eSIsIm9mX2xhenlfc2V4cCIsIm9mX2xhenlfdCIsImxhenlfdCIsImNyZWF0ZWYiLCJvZl90aHVuayIsInN0cmljdCIsInNleHBfb2ZfeCIsInRhZ19zX2xhenkiLCJ0YWdfcyIsInRhZ19hcmciLCJ0b19leG4iLCJvZl9leG4iLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwiYmFja3RyYWNlJDIiLCJyYWlzZSIsInJhaXNlX3MiLCJ0b19pbmZvIiwib2ZfaW5mbyIsImNoZWNrX2ZpZWxkIiwiYV8wMDciLCJiXzAwOCIsIm9mX2FfMDEzIiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3IiwiaW52YXJpYW50X2EiLCJlMSIsImUyIiwidHJ5X3dpdGhfam9pbiIsIm9mX2V4bl9yZXN1bHQiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidW5pbXBsZW1lbnRlZCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImlzX3Bvc2l0aXZlIiwiaXNfbm9uX25lZ2F0aXZlIiwiaXNfbmVnYXRpdmUiLCJpc19ub25fcG9zaXRpdmUiLCJzaWduIiwiaGFzaF9wYXJhbSIsInBvbHkiLCJvZl9rZXkiLCJLZXkiLCJ0b19rZXkiLCJoYXNoX3BhcmFtJDAiLCJwb2x5JDAiLCJvZl9rZXkkMCIsInRvX2tleSQwIiwiaGFzaGFibGUiLCJnZXRfcG9zX2xlbiIsImZpbmRfZmlyc3Rfc2F0aXNmeWluZyIsInByZWQiLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsInNyY19wb3MiLCJkc3RfcG9zIiwiYmxpdG8iLCJzcmNfbGVuIiwic3VibyIsImNyZWF0ZV9saWtlIiwidW5zYWZlX2JsaXQkMCIsImlzX25vbmUiLCJpc19zb21lIiwidmFsdWVfbWFwIiwibyIsImNhbGwiLCJ2YWx1ZV9leG4iLCJlcnJvciQwIiwibSQwIiwibSQxIiwidmFsdWVfb3JfdGh1bmsiLCJzb21lIiwiZmlyc3Rfc29tZSIsInNvbWVfaWYiLCJjb25kIiwiYV9vZl9zZXhwIiwiYl9vZl9zZXhwIiwic2V4cF9vZl9iIiwiY19vZl9zZXhwIiwic2V4cF9vZl9jIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZWl0aGVyIiwib3RoZXJfbG9vcCIsInJldHVybl9sb29wIiwiY29tYmluZV9hbGwiLCJvdGhlcl9sb29wJDAiLCJyZXR1cm5fbG9vcCQwIiwiY29tYmluZV9hbGxfdW5pdCIsInRvX29wdGlvbiIsImVpdGhlciQwIiwiY29tYmluZSQwIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImVycm9yX3NvdXJjZV8wMjUiLCJvZl9zXzAwMiIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxOSIsImFfMDE3IiwiYl8wMjAiLCJiXzAxOCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIxIiwib2ZfYl8wMjIiLCJzZXhwXzAyNyIsInRhZ18wMjgiLCJzZXhwX2FyZ3NfMDM0IiwiYXJnMF8wMzUiLCJyZXMwXzAzNiIsInNleHBfYXJnc18wMjkiLCJhcmcwXzAzMCIsInNleHBfYXJnc18wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsIm9mX2FfMDQ2Iiwib2ZfYl8wNDciLCJhcmcwXzA0OCIsInJlczBfMDQ5IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsInNldCIsInN3YXAkMCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25pX3RmIiwidHJ1ZXMiLCJmYWxzZXMiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwidG9fc2VxdWVuY2UiLCJpMSIsImkyIiwidHQiLCJ3aWR0aCIsImRlcHRoIiwiZCIsInciLCJ0dCQwIiwiZ2V0JDAiLCJ6ZXJvX29iaiIsImNyZWF0ZV96ZXJvIiwidW5zYWZlX2dldCIsInVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSIsIm9iaiIsInNldF93aXRoX2NhbWxfbW9kaWZ5IiwidW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVuIiwib2xkX29iaiIsInVuc2FmZV9zZXQiLCJ1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGUiLCJ1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV8iLCJ1bnNhZmVfc2V0X2ludCIsInVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIiwidW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIiwiY3JlYXRlX29ial9hcnJheSIsIm9mX2FycmF5IiwiZ3JhbW1hciIsImNlaWwiLCJmbG9vciIsIm1vZF9mbG9hdCIsIm1vZGYiLCJtYXhfZmluaXRlX3ZhbHVlIiwiY2xhc3NpZnlfZmxvYXQiLCJhYnNfZmxvYXQiLCJpc19pbnRlZ2VyIiwiZnJleHAiLCJsZGV4cCIsImlzX25hbiIsInRvX2ludDY0X3ByZXNlcnZlX29yZGVyIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIiwib2ZfaW50NjRfcHJlc2VydmVfb3JkZXIiLCJvbmVfdWxwIiwiZGlyIiwidXBwZXJfYm91bmRfZm9yX2ludCIsImV4cCIsImlzX3hfbWludXNfb25lX2V4YWN0IiwibG93ZXJfYm91bmRfZm9yX2ludCIsIm1pbl9pbnRfYXNfZmxvYXQiLCJib3giLCJpc19sb3dlcmNhc2UiLCJpc191cHBlcmNhc2UiLCJpc19wcmludCIsImlzX3doaXRlc3BhY2UiLCJpc19kaWdpdCIsImlzX2FscGhhIiwiaXNfYWxwaGFudW0iLCJnZXRfZGlnaXRfdW5zYWZlIiwiZ2V0X2RpZ2l0X2V4biIsImdldF9kaWdpdCIsImlzX2hleF9kaWdpdCIsImlzX2hleF9kaWdpdF9sb3dlciIsImlzX2hleF9kaWdpdF91cHBlciIsImdldF9oZXhfZGlnaXRfZXhuIiwiZ2V0X2hleF9kaWdpdCIsInRfb2Zfc2V4cCQxIiwiYzEiLCJjMiIsImhhc2hfZm9sZF90JDEiLCJoYXNoJDEiLCJ0cl9jcmVhdGVfbWFwIiwidGFyZ2V0IiwicmVwbGFjZW1lbnQiLCJ0cl9tYXAiLCJpJDMiLCJpJDIiLCJpbmRleCQwIiwibGFzdF9yZXBsYWNlbWVudCIsImluZGV4IiwiZmlyc3RfdGFyZ2V0Iiwic3RhZ2UiLCJ1bnN0YWdlIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwiYV8wMDIiLCJiXzAwMyIsImttcF9hcnJheV8wMTEiLCJjYXNlX3NlbnNpdGl2ZV8wMDkiLCJwYXR0ZXJuXzAwNyIsImFyZ18wMTIiLCJibmRzXzAwNiIsImFyZ18wMTAiLCJibmRzXzAwNiQwIiwiYXJnXzAwOCIsImJuZHNfMDA2JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJsZmluZGkiLCJyZmluZGkiLCJsYXN0X25vbl9kcm9wIiwicnN0cmlwIiwiZmlyc3Rfbm9uX2Ryb3AiLCJsc3RyaXAiLCJzdHJpcCIsInRyIiwidHJfbXVsdGkiLCJjb25jYXRfYXJyYXkiLCJhciIsIm91dCIsIm91dF9wb3MiLCJvdXQkMCIsImNob3BfcHJlZml4IiwiY2hvcF9wcmVmaXhfaWZfZXhpc3RzIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3N1ZmZpeF9leG4iLCJzaG9ydGVyIiwic2hvcnRlc3QiLCJwb3NfZnJvbV9sZWZ0IiwicG9zX2Zyb21fcmlnaHQiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AiLCJnZXRfcG9zIiwibWF4X2xlbiIsImxlbl9zb19mYXIiLCJsZW5fc29fZmFyJDAiLCJsZW5fc29fZmFyJDEiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AiLCJmaXJzdCQwIiwibWF4X2xlbiQwIiwibWF4X2xlbiQxIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWMyIiwiY29tbW9uX2dlbmVyaWMiLCJjb21tb25fcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4X2xlbmd0aCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsInVuc2FmZV9ibGl0JDEiLCJtYXBpJDAiLCJvY2FtbF9sZXhfdGFibGVzIiwicGFyc2VfaGV4IiwibGV4YnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJjb252ZXJ0X2ZhaWx1cmUiLCJudW1fYml0c19pbnQiLCJudW1fYml0c19uYXRpdmVpbnQiLCJudW1fYml0c19pbnQzMiIsIm51bV9iaXRzX2ludDY0IiwibWluX2ludDMyIiwibWF4X2ludDMyIiwibWluX2ludDY0IiwibWF4X2ludDY0IiwibWluX25hdGl2ZWludCIsIm1heF9uYXRpdmVpbnQiLCJpbnQ2NF90b19zdHJpbmciLCJuYXRpdmVpbnRfdG9fc3RyaW5nIiwiaW50MzJfdG9faW50X3RydW5jIiwiaW50X3RvX2ludDMyX3RydW5jIiwiaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIiLCJpbnRfdG9faW50MzIiLCJpbnQzMl90b19pbnQiLCJpbnRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9faW50X2V4biIsImludF90b19pbnQ2NCIsImludDY0X3RvX2ludF90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IiwiaW50NjRfdG9faW50IiwiaW50NjRfdG9faW50X2V4biIsImludF90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludCIsIm5hdGl2ZWludF90b19pbnRfZXhuIiwiaW50MzJfdG9faW50NjQiLCJpbnQ2NF90b19pbnQzMl90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MyIsImludDY0X3RvX2ludDMyIiwiaW50NjRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9fbmF0aXZlaW50IiwibmF0aXZlaW50X3RvX2ludDMyX3RydW5jIiwibmF0aXZlaW50X3RvX2ludDMyIiwibmF0aXZlaW50X3RvX2ludDMyX2V4biIsImludDY0X3RvX25hdGl2ZWludF90cnVuYyIsIm5hdGl2ZWludF90b19pbnQ2NCIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aSIsImludDY0X3RvX25hdGl2ZWludCIsImludDY0X3RvX25hdGl2ZWludF9leG4iLCJpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYiLCJpbnQ2NF9maXRfb25faW50NjNfZXhuIiwiaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSIsImRlbGltaXRlciIsImNoYXJzX3Blcl9kZWxpbWl0ZXIiLCJpbnB1dF9sZW5ndGgiLCJoYXNfc2lnbiIsIm51bV9kaWdpdHMiLCJudW1fZGVsaW1pdGVycyIsIm91dHB1dF9sZW5ndGgiLCJpbnB1dF9wb3MiLCJvdXRwdXRfcG9zIiwibnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciIsImZpcnN0X2RpZ2l0X3BvcyIsImluc2VydF9kZWxpbWl0ZXIiLCJpbnNlcnRfdW5kZXJzY29yZXMiLCJzZXhwX29mX2ludF9zdHlsZSIsImRlbGltaXRlciQwIiwibWFrZV9zdWZmaXgiLCJ0b19zdHJpbmckMCIsImludmFsaWQiLCJvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIiLCJsZXgiLCJib2R5JDAiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW4iLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjRfdmFsdWUiLCJpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIiwib3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIiwiaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbCIsImludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyIsIm5lZ2F0aXZlX2V4cG9uZW50Iiwib3ZlcmZsb3ciLCJpbnRfcG93IiwiYmFzZSIsImV4cG9uZW50IiwiaW50NjRfcG93IiwiaW50NjNfcG93X29uX2ludDY0IiwicnZhbCIsIm9uZSIsInJvdW5kX2Rvd24iLCJtb2R1bHVzIiwicm91bmRfdXAiLCJyZW1haW5kZXIiLCJyb3VuZF90b3dhcmRzX3plcm8iLCJ0b19tdWx0aXBsZV9vZiIsInJvdW5kX25lYXJlc3QiLCJtb2R1bHVzX21pbnVzX3JlbWFpbmRlciIsInJvdW5kIiwiaDAxIiwibWFzayIsImludDY0X3BvcGNvdW50IiwieCQyIiwiaW50MzJfcG9wY291bnQiLCJuYXRpdmVpbnRfcG9wY291bnQiLCJtb2R1bGVfbmFtZSQwIiwib2Zfc3RyaW5nJDAiLCJmbG9hdF9sb3dlcl9ib3VuZCIsImZsb2F0X3VwcGVyX2JvdW5kIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwiZnVuYyQwIiwiemVybyIsIm1pbnVzX29uZSIsIm5lZyIsIm9mX3N0cmluZyQxIiwib2ZfaW50MzIiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMiIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0Iiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50IiwibWF4X3ZhbHVlXzMwX2JpdHMiLCJhYnMiLCJyZW0iLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwic2hpZnRfbGVmdCIsImJpdF9ub3QiLCJiaXRfb3IiLCJiaXRfYW5kIiwiYml0X3hvciIsInBvdyIsIm5vbl9wb3NpdGl2ZV9hcmd1bWVudCIsImNlaWxfcG93MiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsImZsb29yX3BvdzIiLCJpc19wb3cyIiwiZmxvb3JfbG9nMiIsImNlaWxfbG9nMiIsInBvcGNvdW50IiwibG5vdCIsInN1Y2NfZXhuIiwibXNnIiwicHJlZF9leG4iLCJvZl9zY2FsYXIiLCJvZl9zY2FsYXJfZXhuIiwidG9fc2NhbGFyIiwidG9fY2hhciIsInRvX2NoYXJfZXhuIiwidXRmOF9ieXRlX2xlbmd0aCIsInVjaGFyIiwiY29kZXBvaW50Iiwic29tZV90IiwicmVmbCIsInN5bSIsInRyYW5zIiwiY29udiIsImRldHVwbGUyIiwidHVwbGUyIiwid2l0bmVzcyIsInZfMDA1IiwidG9fc2V4cCIsInVpZCIsInNhbWVfd2l0bmVzcyIsInNhbWUiLCJzYW1lX3dpdG5lc3NfZXhuIiwibm9uZV9zdWJzdGl0dXRlIiwibm9uZSIsInZhbHVlX3Vuc2FmZSIsIm9mX3NleHBhYmxlIiwidG9fc2V4cGFibGUiLCJ4XzAwMyIsIm9mX2FfMDA0IiwieF8wMDUiLCJpbml0X3NvbWUiLCJnZXRfc29tZV9leG4iLCJpc19ub25lJDAiLCJpc19zb21lJDAiLCJzZXRfc29tZSIsInNldF9ub25lIiwidW5zYWZlX2dldF9zb21lX2V4biIsInVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIiwidW5zYWZlX2lzX3NvbWUiLCJ1bnNhZmVfc2V0X3NvbWUiLCJ1bnNhZmVfc2V0X25vbmUiLCJjbGVhciIsImVsZW0iLCJtYXBfc29tZSIsIm9mX2FycmF5X3NvbWUiLCJjYXBhY2l0eSIsImVsdHMiLCJsZW5ndGhfMDAzIiwiZWx0c18wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInJlc2l6ZSIsInNpemUiLCJzZXRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkkMCIsInB1c2giLCJwb3Bfbm9uZW1wdHkiLCJwb3BfZXJyb3IiLCJwb3AiLCJwb3BfZXhuIiwidG9wX25vbmVtcHR5IiwidG9wX2Vycm9yIiwidG9wIiwidG9wX2V4biIsInVudGlsX2VtcHR5IiwiaGFzaF9vdmVycmlkZSIsIm9mX3BvcyIsIm9mX3NpZ24iLCJ0b19zaWduX2V4biIsInRvX2ludF9leG4iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAyNyIsImludGVydmFsX2NvbXBhcmlzb25fc2V4cF9ncmFtbSIsImFsbF9vZl9hIiwiZW51bWVyYXRlXzAwMiIsImVudW1lcmF0ZV8wMDEiLCJhY2MkMiIsIm9mX2FfMDAzIiwic2V4cF8wMDgiLCJ0YWdfMDA5Iiwic2V4cF9hcmdzXzAxMCIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwidF8wMTQiLCJ0XzAxMyIsInRfMDE2IiwidF8wMTUiLCJyaWdodF8wMTgiLCJsZWZ0XzAxNyIsInJpZ2h0XzAyMiIsImxlZnRfMDIxIiwidF8wMjQiLCJ0XzAyMyIsInRfMDI2IiwidF8wMjUiLCJyaWdodF8wMjAiLCJsZWZ0XzAxOSIsInRfMDMwIiwidF8wMjkiLCJ0XzAzMiIsInRfMDMxIiwicmlnaHRfMDM0IiwibGVmdF8wMzMiLCJyaWdodF8wMzgiLCJsZWZ0XzAzNyIsInRfMDQwIiwidF8wMzkiLCJ0XzA0MiIsInRfMDQxIiwicmlnaHRfMDM2IiwibGVmdF8wMzUiLCJvZl9rXzA0MyIsIm9mX3ZfMDQ0Iiwic2V4cF8wNzEiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJhdG9tXzA0NyIsInNleHBfYXJnc18wNTAiLCJhdG9tXzA0NyQwIiwiYXJnMF8wNTgiLCJyZXMwXzA1OSIsImFyZzBfMDYxIiwicmVzMF8wNjIiLCJhcmcwXzA2NCIsInJlczBfMDY1IiwicmVzMV8wNzAiLCJvZl9rXzA3MiIsIm9mX3ZfMDczIiwiYXJnMV8wODIiLCJhcmcwXzA4MSIsInJlczBfMDgzIiwidl8wNzQiLCJyZXMxXzA4NCIsInZfMDc2IiwiYXJnMV8wNzgiLCJhcmcwXzA3NyIsInJlczBfMDc5IiwicmVzMV8wODAiLCJ2XzA3NSIsImtfc2V4cF9ncmFtbWFyIiwidl9zZXhwX2dyYW1tYXIiLCJjbXBfbGVmdCIsImNtcF9yaWdodCIsImFfMDg1IiwiYl8wODYiLCJyaWdodF8wOTIiLCJsZWZ0XzA5MSIsInRfMDk0IiwidF8wOTMiLCJ0XzA5NiIsInRfMDk1IiwicmlnaHRfMDg4IiwibGVmdF8wODciLCJyaWdodF8wOTAiLCJsZWZ0XzA4OSIsImFfMDk3IiwiYl8wOTgiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInRfMTA2IiwidF8xMDUiLCJ0XzEwOCIsInRfMTA3IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8xMDIiLCJsZWZ0XzEwMSIsIm9mX2xlZnRfMTA5Iiwib2ZfcmlnaHRfMTEwIiwidl8xMTMiLCJhcmcxXzExNSIsImFyZzBfMTE0IiwicmVzMF8xMTYiLCJyZXMxXzExNyIsInZfMTExIiwidl8xMTIiLCJzZXhwX29mX3QkMyIsImhlaWdodCIsImluX3JhbmdlIiwiaGwiLCJociIsImxvd2VyJDEiLCJpbnZhcmlhbnRzIiwiaCQxIiwiaCQwIiwic2wiLCJzciIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayIsImtsIiwiayQxIiwia2wkMCIsImskMiIsImtyIiwibGVmdF9sZW5ndGgiLCJyaWdodF9sZW5ndGgiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwiYXJyYXlfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5IiwiaW5jcmVhc2luZyIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiQwIiwibHJsIiwibHJ2IiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2JDAiLCJybGwiLCJybHYiLCJhdXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInJlbW92ZV9pbmRleCIsImxfc2l6ZSIsInVuaW9uIiwidjEkMCIsInYyJDAiLCJyMiQwIiwicjEkMCIsInVuaW9uX2xpc3QiLCJ0b190cmVlIiwiaW50ZXIiLCJvdGhlcl9zZXQiLCJlJDEiLCJjb25zX3JpZ2h0Iiwib2Zfc2V0IiwiZW51bSQwIiwidHJlZSIsInN5bW1ldHJpY19kaWZmIiwiZWx0JDAiLCJlbnVtMSIsInRyZWUxIiwiZW51bTIiLCJ0cmVlMiIsImNvbXBhcmVfcmVzdWx0IiwibmV4dF9zdGF0ZSIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwiaW5jbHVzaXZlX2JvdW5kIiwic2lkZSIsIm1heWJlIiwidiQxIiwiaW5pdCQwIiwidiQyIiwidiQzIiwidiQ0IiwiZSQyIiwibWVyZ2VfdG9fc2VxdWVuY2UiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJ0MiQyIiwidDEkMiIsImlzX3N1YnNldCIsImFyZV9kaXNqb2ludCIsImFjY3UkMCIsImFjY3UkMSIsImZpbHQiLCJwYXJ0IiwiZWxlbWVudHNfYXV4IiwiZWxlbWVudHMiLCJjaG9vc2UiLCJjaG9vc2VfZXhuIiwicG9zX3JlZiIsImdyb3VwX2J5IiwiZXF1aXYiLCJzZXQkMCIsImVxdWl2X2NsYXNzZXMiLCJub3RfZXF1aXZfeCIsImVxdWl2X3giLCJlcXVpdl9jbGFzc2VzJDAiLCJzdGFibGVfZGVkdXBfbGlzdCIsImxlZnRvdmVycyIsImFscmVhZHlfc2VlbiIsImFscmVhZHlfc2VlbiQwIiwibGVmdG92ZXJzJDAiLCJ0X29mX3NleHBfZGlyZWN0IiwiZWx0X2xzdCIsImVsX3NleHAiLCJpc19zdWJzZXQkMCIsInN1YnNldCIsInN1cGVyc2V0Iiwic2V4cF9vZl9lbHQiLCJpbnZhbGlkX2VsZW1lbnRzIiwiaW52YWxpZF9lbGVtZW50c19zZXhwIiwibGlrZSIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsImlzX3N1YnNldCQyIiwicGFydGl0aW9uX3RmJDAiLCJ0cmVlX2YiLCJ0cmVlX3QiLCJncm91cF9ieSQwIiwibnRoJDAiLCJyZW1vdmVfaW5kZXgkMCIsInRvX3NlcXVlbmNlJDAiLCJiaW5hcnlfc2VhcmNoJDAiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsImhhc2hfZm9sZF9kaXJlY3QiLCJ0X29mX3NleHBfZGlyZWN0JDAiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwiZWxlbWVudHMkMSIsIm1pbl9lbHQkMSIsIm1pbl9lbHRfZXhuJDEiLCJtYXhfZWx0JDEiLCJtYXhfZWx0X2V4biQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwiaXRlciQyIiwiZXhpc3RzJDEiLCJmb3JfYWxsJDEiLCJjb3VudCQxIiwic3VtJDEiLCJmaW5kJDEiLCJmaW5kX2V4biQxIiwiZmluZF9tYXAkMSIsImZvbGQkMSIsImZvbGRfdW50aWwkMSIsImZvbGRfcmlnaHQkMSIsImZpbHRlciQxIiwiZmlsdGVyX21hcCQwIiwicGFydGl0aW9uX3RmJDEiLCJpdGVyMiQxIiwibWVtJDEiLCJhZGQkMSIsInJlbW92ZSQxIiwidW5pb24kMSIsImludGVyJDEiLCJkaWZmJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiY29tcGFyZV9kaXJlY3QkMCIsImlzX3N1YnNldCQzIiwiYXJlX2Rpc2pvaW50JDEiLCJvZl9saXN0JDAiLCJvZl9zZXF1ZW5jZSQwIiwib2ZfYXJyYXkkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJudGgkMSIsInJlbW92ZV9pbmRleCQxIiwib2ZfdHJlZSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsImlzX3N1YnNldCQ0IiwidG9fdHJlZSQwIiwib2ZfdHJlZSQwIiwidF9vZl9zZXhwX2RpcmVjdCQxIiwiZW1wdHkkMCIsInNpbmdsZXRvbiQwIiwidW5pb25fbGlzdCQxIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQxIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX2xpc3QkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMSIsImZpbHRlcl9tYXAkMSIsImNvbXBhcmF0b3JfcyIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsInVuaW9uX2xpc3QkMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQyIiwib2Zfc29ydGVkX2FycmF5JDIiLCJvZl9saXN0JDIiLCJvZl9zZXF1ZW5jZSQyIiwib2ZfYXJyYXkkMiIsInN0YWJsZV9kZWR1cF9saXN0JDIiLCJmaWx0ZXJfbWFwJDIiLCJzZXhwX29mX21fdCIsIkVsdCIsIm1fdF9vZl9zZXhwIiwibV90X3NleHBfZ3JhbW1hciIsImNvbXBhcmVfbV90IiwiZXF1YWxfbV90IiwiaGFzaF9mb2xkX21fdCIsImhhc2hfbV90IiwiY29tcGFyYXRvciQwIiwiZW1wdHkkMiIsInNpbmdsZXRvbiQyIiwidW5pb25fbGlzdCQzIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQzIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDMiLCJvZl9zb3J0ZWRfYXJyYXkkMyIsIm9mX2xpc3QkMyIsIm9mX3NlcXVlbmNlJDMiLCJvZl9hcnJheSQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsIm1hcCQzIiwiZmlsdGVyX21hcCQzIiwib2ZfdHJlZSQxIiwidG9fdHJlZSQxIiwicmVwbGFjZSIsInNldF90ZW1wb3JhcmlseSIsInJlc3RvcmVfdG8iLCJzZXRzIiwic25hcHNob3QiLCJzZXRzX3RlbXBvcmFyaWx5IiwiYW5kX3ZhbHVlcyIsImluY19udW1fbXV0YXRpb25zIiwiZWx0c19pbmRleCIsImNoZWNrX2luZGV4X2V4biIsImVuc3VyZV9ub19tdXRhdGlvbiIsIm51bV9tdXRhdGlvbnMiLCJudW1fbXV0YXRpb25zXzAwMyIsImZyb250XzAwNSIsIm1hc2tfMDA3IiwibGVuZ3RoXzAwOSIsImVsdHNfMDExIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZnJvbnRfbm9uZW1wdHkiLCJsYXN0X25vbmVtcHR5IiwicGVlayIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwidF9yZXN1bHQiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcmlfaW5wbGFjZSIsInVucmVhY2hhYmxlX2NvZGUiLCJ6ZXJvJDAiLCJ6ZXJvJDEiLCJ0b19pbnRfdHJ1bmMiLCJ0b19pbnQzMl90cnVuYyIsIm9mX2ludDY0X3RydW5jIiwibmFtZSQwIiwib2ZfY29udGludWVfb3Jfc3RvcCIsInRvX2NvbnRpbnVlX29yX3N0b3AiLCJsZWZ0X3ZhbHVlIiwicmlnaHRfdmFsdWUiLCJ2YWx1ZXMiLCJsZWZ0X2RlZmF1bHQiLCJyaWdodF9kZWZhdWx0IiwicmlnaHQkMCIsImNvbXBhcmVfa2V5IiwidmwiLCJ2bCQwIiwidnIiLCJrMCIsImsxIiwibGQiLCJscmQiLCJscmQkMCIsInJkIiwicmxkIiwicmxkJDAiLCJyYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50Iiwic2V4cF9vZl9rZXkiLCJmaW5kX2FuZF9hZGRfb3Jfc2V0IiwiZGF0YSIsImFkZF9vcl9zZXQiLCJkJDAiLCJhZGRfZXhuIiwiYWRkX2V4bl9pbnRlcm5hbCIsInNpbmdsZXRvbl90b190cmVlX2V4biIsImNvbGxhcHNlIiwiZ28iLCJhZGRfdW5jaGVja2VkIiwiZ28kMCIsInRvX3RyZWVfdW5jaGVja2VkIiwibWF4X2tleSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UiLCJidWlsZGVyIiwicHJldl9rZXkiLCJqb2luJDAiLCJsZCQwIiwibGskMCIsInJrIiwicmQkMCIsInJrJDAiLCJsayIsImNtcCQwIiwibWF5YmUkMCIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSIsImludG8iLCJib3VuZGFyeV9vcHQiLCJpbnNlcnRfaW50byIsInNwbGl0X3JhbmdlIiwibWlkX2FuZF9yaWdodCIsImxiJDEiLCJsYiQyIiwibWlkX2FuZF9yaWdodCQwIiwibGIiLCJsYiQwIiwibWlkJDAiLCJhZGRfbXVsdGkiLCJkYXRhJDAiLCJmaW5kX211bHRpIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJtaW5fdXBwZXIiLCJtYXhfbG93ZXIiLCJ1cHBlcl9wYXJ0X3dpdGhvdXRfbWluIiwiZ28kMSIsImNfbWluIiwiaW5pdCQxIiwiY19tYXgiLCJpbml0JDIiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInJhbmdlX3RvX2FsaXN0IiwiY29uY2F0X3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkMiIsImxlbmd0aCQzIiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwiZmlsdGVyX2tleXMiLCJwYXJ0aXRpb25fbWFwaSIsInBhaXIyIiwicGFpcjEiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMiIsImxlZnQkMiIsInJpZ2h0JDEiLCJrZXlzIiwib2ZfZm9sZGFibGVfZm9sZCIsImZvbGRhYmxlIiwicHJldl9kYXRhIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwibmV3X2RhdGEiLCJvZl9mb2xkYWJsZSIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2FsaXN0Iiwib2ZfYWxpc3Rfb3JfZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJvZl9mb2xkYWJsZV9tdWx0aSIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJ0b19hbGlzdCIsImtleV9vcmRlciIsIm1lcmdlX2xhcmdlX2ZpcnN0IiwibGVuZ3RoX2xhcmdlIiwidF9sYXJnZSIsInRfc21hbGwiLCJtZXJnZV9za2V3ZWQiLCJsZW5ndGgxIiwibGVuZ3RoMiIsInJlcGFja2FnZSIsIm1hcmtlciIsImNsb3Nlc3Rfa2V5IiwiZm91bmRfbWFya2VyIiwiZm91bmRfa2V5IiwiZm91bmRfdmFsdWUiLCJmb3VuZF92YWx1ZSQwIiwiZm91bmRfa2V5JDAiLCJyYW5rIiwibnVtX3RvX3NlYXJjaCIsInBhaXIiLCJwYWlyJDAiLCJiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCIsIm1heWJlX2JvdW5kIiwiaWZfZXhjbHVzaXZlIiwiaWZfaW5jbHVzaXZlIiwiZmluZF9ib3VuZCIsImJvdW5kJDAiLCJiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCQwIiwidXBwZXJfYm91bmQkMCIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwia2V5X29mX3NleHAiLCJ2YWx1ZV9vZl9zZXhwIiwiYWxpc3Rfc2V4cHMiLCJmb3VuZF9maXJzdF9rIiwiazJfc2V4cCIsInNleHBfb2ZfdmFsdWUiLCJlcnJvcl90cmVlIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJsaWtlMiIsImxpa2VfbWF5YmVfbm9fb3AiLCJvbGRfdCIsIm9sZF90cmVlIiwid2l0aF9zYW1lX2xlbmd0aCIsInNldCQxIiwiYWRkX2V4biQwIiwiYWRkX211bHRpJDAiLCJyZW1vdmVfbXVsdGkkMCIsImZpbmRfbXVsdGkkMCIsImNoYW5nZSQwIiwidXBkYXRlJDAiLCJpdGVyX2tleXMkMCIsIml0ZXJpX3VudGlsJDAiLCJmb2xkJDMiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlcmkkMCIsImZpbHRlcl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInN1YnJhbmdlIiwiaF9sIiwiaF9yIiwib3V0ZXJfam9pbmVkX2hlaWdodCIsIm1pZF9sZW5ndGgiLCJhcHBlbmQkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsInJhbmskMCIsInNleHBfb2ZfayIsInNleHBfb2ZfdiIsImhhc2hfZm9sZF9rZXkiLCJoYXNoX2ZvbGRfZGF0YSIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsInNldCQyIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJpdGVyX2tleXMkMSIsIml0ZXJpX3VudGlsJDEiLCJtYXBpJDEiLCJmb2xkJDQiLCJmb2xkMiQyIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwiY29tYmluZV9lcnJvcnMkMSIsImtleXMkMSIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzaSQxIiwiY291bnRpJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDAiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMiIsIm50aF9leG4kMCIsInJhbmskMSIsImtfb2Zfc2V4cCIsInZfb2Zfc2V4cCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UkMCIsIm1hcF9rZXlzJDAiLCJkdXAiLCJtYXBfa2V5c19leG4kMCIsImFkZF9leG4kMiIsIm9mX3RyZWUwIiwib2ZfdHJlZSQyIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2l0ZXJpJDEiLCJ0cmVlX2xlbmd0aCIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2ZfdHJlZSQzIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2FsaXN0X211bHRpJDIiLCJvZl9hbGlzdF9mb2xkJDIiLCJvZl9hbGlzdF9yZWR1Y2UkMiIsIm9mX2l0ZXJpJDIiLCJvZl9pdGVyaV9leG4kMiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMiIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDIiLCJvZl9zZXF1ZW5jZV9leG4kMiIsIm9mX3NlcXVlbmNlX211bHRpJDIiLCJvZl9zZXF1ZW5jZV9mb2xkJDIiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMiIsIm1hcF9rZXlzJDIiLCJtYXBfa2V5c19leG4kMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm1hcF9rZXlzJDMiLCJtYXBfa2V5c19leG4kMyIsInRyYW5zZmVyIiwicSIsInEkMCIsImZsb2F0X29mX2JpdHMiLCJiaXRzX29mX2Zsb2F0IiwiYnN3YXAxNiIsImJzd2FwMzIiLCJic3dhcDQ4IiwidG9fbmF0aXZlaW50X2V4biIsIndyYXBfZXhuIiwid3JhcF9tb2R1bG8iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsInNpZ25lZG5lc3MiLCJwb3Nfc3RyIiwiaW50NjMiLCJpbnQ2MyQwIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsInJlcHIiLCJvZl9pbnRfdHJ1bmMiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwidHJlZSQwIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJpbnZhcmlhbnRfa2V5IiwiaW52YXJpYW50X2RhdGEiLCJyZWFsX2xlbiIsIm5ld190IiwidDAiLCJuZXdfZGF0YSQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiZHVwZXMiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMiLCJzZXhwX29mX2RhdGEiLCJkX29mX3NleHAiLCJrX2dyYW1tYXIiLCJyb3ciLCJvbGQiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXlfZXhuIiwibWF5YmVfc2V0IiwidF9sZWZ0IiwidF9yaWdodCIsIm1lcmdlX2ludG8iLCJkc3RfZGF0YSIsImFjdGlvbiIsImRzdF9kYXRhJDAiLCJ0b19yZW1vdmUiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZmlsdGVyX21hcGlfaW5wbGFjZSIsIm1hcF9yZXN1bHRzIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwic2ltaWxhciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQwIiwiY3JlYXRlX21hcHBlZCQwIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQxIiwiY3JlYXRlX21hcHBlZCQxIiwiY3JlYXRlX3dpdGhfa2V5JDEiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMSIsImNyZWF0ZV93aXRoX2tleV9leG4kMSIsImdyb3VwJDEiLCJoYXNoYWJsZV9zIiwicG9seV9oYXNoYWJsZSIsInN0cmljdF9hZGQiLCJzdHJpY3RfYWRkX2V4biIsInN0cmljdF9yZW1vdmUiLCJzdHJpY3RfcmVtb3ZlX2V4biIsInNleHBfb2ZfZSIsImxhcmdlciIsInNtYWxsZXIiLCJvZl9oYXNodGJsX2tleXMiLCJoYXNodGJsIiwidG9faGFzaHRibCIsImVfb2Zfc2V4cCIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwicGkiLCJzcXJ0X3BpIiwic3FydF8ycGkiLCJldWxlciIsIm9mX2ludDYzIiwiaXJvdW5kX2xib3VuZCIsImlyb3VuZF91Ym91bmQiLCJpcm91bmRfdXAiLCJpcm91bmRfdXBfZXhuIiwiaXJvdW5kX2Rvd24iLCJpcm91bmRfZG93bl9leG4iLCJpcm91bmRfdG93YXJkc196ZXJvIiwiaXJvdW5kX3Rvd2FyZHNfemVyb19leG4iLCJyb3VuZF9uZWFyZXN0X2xiIiwicm91bmRfbmVhcmVzdF91YiIsIm9uZV91bHBfbGVzc190aGFuX2hhbGYiLCJhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCIsImlyb3VuZF9uZWFyZXN0XzMyIiwiaXJvdW5kX25lYXJlc3RfNjQiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzY2FsZSIsInNxdWFyZSIsImZyYWN0aW9uYWwiLCJpbnRlZ3JhbCIsInJvdW5kX25lYXJlc3RfaW5saW5lIiwicm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4iLCJjZWlsX29yX3N1Y2MiLCJkaWZmX2Zsb29yIiwiZGlmZl9jZWlsIiwiaW50NjNfcm91bmRfbGJvdW5kIiwiaW50NjNfcm91bmRfdWJvdW5kIiwiaW50NjNfcm91bmRfdXBfZXhuIiwiaW50NjNfcm91bmRfZG93bl9leG4iLCJpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biIsImNsYXNzaWZ5Iiwic3RyaXBfemVybyIsImRlY2ltYWxzIiwiZXhwbGljaXRfcGx1cyIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0byIsImtpbG8iLCJtZWdhIiwiZ2lnYSIsInRlcmEiLCJwZXRhIiwibWFnIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJoaWdoZXIiLCJkaWZmX3JpZ2h0IiwiZGlmZl9sZWZ0IiwicGV0YSQwIiwidG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIiwicm91bmRfZ2VuIiwic2QiLCJkZCIsImRkJDAiLCJzZCQwIiwiZGQkMSIsInNkJDEiLCJhYnNfZGQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWwiLCJkZWNpbWFsX2RpZ2l0cyIsInNpZ25fZXhuIiwic2lnbl9vcl9uYW4iLCJpZWVlX25lZ2F0aXZlIiwiZXhwb25lbnRfbWFzazY0IiwiZXhwb25lbnRfbWFzayIsIm1hbnRpc3NhX21hc2siLCJtYW50aXNzYV9tYXNrNjQiLCJtYW50aXNzYV9iaXRzIiwiaWVlZV9leHBvbmVudCIsImllZWVfbWFudGlzc2EiLCJjcmVhdGVfaWVlZV9leG4iLCJuZWdhdGl2ZSIsIm1hbnRpc3NhIiwic2lnbl9iaXRzIiwiZXhwdF9iaXRzIiwibWFudF9iaXRzIiwiY3JlYXRlX2llZWUiLCJzcGVjaWFsaXplZF9oYXNoIiwiYWRkX3N1YnN0cmluZyIsImFkZF9zdWJieXRlcyIsImVsaWRlZF9tZXNzYWdlIiwiZWxpZGUiLCJhdF9tb3N0X251bV9mcmFtZXMiLCJ0b19zdHJpbmdfbGlzdCIsInNldF9yZWNvcmRpbmciLCJhbV9yZWNvcmRpbmciLCJtb3N0X3JlY2VudCIsIm1vc3RfcmVjZW50X2Zvcl9leG4iLCJ3aXRoX3JlY29yZGluZyIsInNhdmVkIiwib2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhIiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJib29sX29mX3NleHAiLCJzZXhwX29mX2Jvb2wiLCJib29sX3NleHBfZ3JhbW1hciIsImNoYXJfb2Zfc2V4cCIsInNleHBfb2ZfY2hhciIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJmdW5jJDEiLCJmbG9hdF9vZl9zZXhwIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X3NleHBfZ3JhbW1hciIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZnVuYyQ1IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fb2Zfc2V4cCIsInNleHBfb2Zfb3B0aW9uIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInJlZl9vZl9zZXhwIiwic2V4cF9vZl9yZWYiLCJyZWZfc2V4cF9ncmFtbWFyIiwic3RyaW5nX29mX3NleHAiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJjb21wYXJlX2J5dGVzIiwiZXF1YWxfYnl0ZXMiLCJieXRlc19vZl9zZXhwIiwic2V4cF9vZl9ieXRlcyIsImJ5dGVzX3NleHBfZ3JhbW1hciIsImZ1bmMkNiIsInVuaXRfb2Zfc2V4cCIsInNleHBfb2ZfdW5pdCIsInVuaXRfc2V4cF9ncmFtbWFyIiwiZmFpbHdpdGgiLCJpbnZhbGlkX2FyZyIsImNvbXBhcmVfYXJyYXkkMCIsImVxdWFsX2FycmF5JDAiLCJhcnJheV9vZl9zZXhwJDAiLCJzZXhwX29mX2FycmF5JDAiLCJhcnJheV9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYm9vbCQwIiwiZXF1YWxfYm9vbCQwIiwiaGFzaF9mb2xkX2Jvb2wkMCIsImhhc2hfYm9vbCQwIiwiYm9vbF9vZl9zZXhwJDAiLCJzZXhwX29mX2Jvb2wkMCIsImJvb2xfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2NoYXIkMCIsImVxdWFsX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJoYXNoX2ZvbGRfZmxvYXQkMCIsImhhc2hfZmxvYXQkMCIsImZsb2F0X29mX3NleHAkMCIsInNleHBfb2ZfZmxvYXQkMCIsImZsb2F0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQkMCIsImVxdWFsX2ludCQwIiwiaGFzaF9mb2xkX2ludCQwIiwiaGFzaF9pbnQkMCIsImludF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludCQwIiwiaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQzMiQwIiwiZXF1YWxfaW50MzIkMCIsImhhc2hfZm9sZF9pbnQzMiQwIiwiaGFzaF9pbnQzMiQwIiwiaW50MzJfb2Zfc2V4cCQwIiwic2V4cF9vZl9pbnQzMiQwIiwiaW50MzJfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDY0JDAiLCJlcXVhbF9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiaGFzaF9mb2xkX2xpc3QkMCIsImxpc3Rfb2Zfc2V4cCQwIiwic2V4cF9vZl9saXN0JDAiLCJsaXN0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9uYXRpdmVpbnQkMCIsImVxdWFsX25hdGl2ZWludCQwIiwiaGFzaF9mb2xkX25hdGl2ZWludCQwIiwiaGFzaF9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9vZl9zZXhwJDAiLCJzZXhwX29mX25hdGl2ZWludCQwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9vcHRpb24kMCIsImVxdWFsX29wdGlvbiQwIiwiaGFzaF9mb2xkX29wdGlvbiQwIiwib3B0aW9uX29mX3NleHAkMCIsInNleHBfb2Zfb3B0aW9uJDAiLCJvcHRpb25fc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3JlZiQwIiwiZXF1YWxfcmVmJDAiLCJyZWZfb2Zfc2V4cCQwIiwic2V4cF9vZl9yZWYkMCIsInJlZl9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfc3RyaW5nJDAiLCJlcXVhbF9zdHJpbmckMCIsImhhc2hfZm9sZF9zdHJpbmckMCIsImhhc2hfc3RyaW5nJDAiLCJzdHJpbmdfb2Zfc2V4cCQwIiwic2V4cF9vZl9zdHJpbmckMCIsInN0cmluZ19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYnl0ZXMkMCIsImVxdWFsX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiaGFzaF9mb2xkX3VuaXQkMCIsImhhc2hfdW5pdCQwIiwidW5pdF9vZl9zZXhwJDAiLCJzZXhwX29mX3VuaXQkMCIsInVuaXRfc2V4cF9ncmFtbWFyJDAiLCJyYWlzZV9zJDAiLCJwaHlzX2VxdWFsJDAiLCJ0b19zdHJpbmciLCJtYXAiLCJmIiwibyIsInYiLCJzZXRfaW5wdXRfbmFtZSIsIm5hbWUiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJvcHQiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInN0aCIsInN0aCQwIiwicHJpbnRfbG9uZ2lkZW50IiwibG9uZ3ByZWZpeCIsInMkMCIsInkiLCJsb25naWRlbnRfbG9jIiwiY29uc3RhbnQiLCJpIiwibSIsImkkMCIsImkkMSIsImRlbGltIiwiaSQyIiwibSQwIiwibXV0YWJsZV9mbGFnIiwidmlydHVhbF9mbGFnIiwicmVjX2ZsYWciLCJyZiIsIm5vbnJlY19mbGFnIiwiZGlyZWN0aW9uX2ZsYWciLCJwcml2YXRlX2ZsYWciLCJjb25zdGFudF9zdHJpbmciLCJ0eXZhciIsInR5dmFyX2xvYyIsInN0cmluZ19xdW90IiwiY2xhc3NfcGFyYW1zX2RlZiIsImwiLCJ0eXBlX3BhcmFtIiwidHlwZV93aXRoX2xhYmVsIiwibGFiZWwiLCJjb3JlX3R5cGUxIiwiY29yZV90eXBlIiwiYXR0cmlidXRlcyIsImN0MiIsImN0MSIsImN0Iiwic2wiLCJjdCQwIiwiY3QkMSIsImwkMCIsImxpIiwibCQxIiwiY29yZV9maWVsZF90eXBlIiwiZmllbGRfdmFyIiwibCQyIiwibGkkMCIsImxvdyIsImNsb3NlZCIsImwkMyIsImZpcnN0X2lzX2luaGVyaXQiLCJ0eXBlX3ZhcmlhbnRfaGVscGVyIiwiY3RsIiwiY3N0cnMiLCJsaWQiLCJhdXgiLCJleHRlbnNpb24iLCJwYXR0ZXJuJDEiLCJwYXR0ZXJuIiwicCIsInAyIiwicDEiLCJvcnBhdHMiLCJwYXR0ZXJuMSIsInBhdHRlcm4xJDAiLCJwYXR0ZXJuX2xpc3RfaGVscGVyIiwicGF0MiIsInBhdDEiLCJzaW1wbGVfcGF0dGVybiIsInNpbXBsZV9wYXR0ZXJuJDAiLCJwbyIsInZsIiwiYzIiLCJjMSIsImxvbmdpZGVudF94X3BhdHRlcm4iLCJwJDAiLCJwJDEiLCJwJDIiLCJ3aXRoX3BhcmVuIiwibGFiZWxfZXhwIiwicmVzdCIsInR4dCQwIiwibyQwIiwic3VnYXJfZXhwciIsImFyZ3MiLCJpZCIsImxhYiIsInByaW50X2luZGV4b3AiLCJwYXRoX3ByZWZpeCIsImFzc2lnbiIsImxlZnQiLCJwcmludF9pbmRleCIsImluZGljZXMiLCJyZW1fYXJncyIsInByaW50X3BhdGgiLCJzaW1wbGVfZXhwciIsImUkMCIsInBhdGgiLCJmdW5jIiwib3RoZXJfYXJncyIsImEkMCIsImFzc2lnbiQwIiwicHJpbnQiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJpbmRleGVzIiwicmVzdCQzIiwiaTMiLCJpMiIsImkxIiwicmVzdCQ0IiwiaTIkMCIsImkxJDAiLCJyZXN0JDUiLCJpMSQxIiwibXVsdGlfaW5kaWNlcyIsIm4iLCJraW5kIiwicmlnaHQkMCIsImxlZnQkMCIsImwkNSIsImUkNyIsImFyZzEiLCJhcmcyIiwibGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIiwicyQxIiwicyQyIiwiZXhwcmVzc2lvbjIiLCJlbyQwIiwiZW8kMSIsImwkNiIsImUyJDEiLCJlMSQxIiwibGkkMSIsImUkOCIsInMkMyIsImwkNyIsInN0cmluZ194X2V4cHJlc3Npb24iLCJlJDkiLCJlJDEwIiwiZSQxMSIsImUkMTIiLCJjYXNlX2xpc3QiLCJlMCIsImUkMSIsImwkNCIsImUkMiIsImUkMyIsIm1lIiwibW9kdWxlX2V4cHIiLCJlJDQiLCJjZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImUkNSIsImUkNiIsImJvZHkiLCJhbmRzIiwibGV0JDAiLCJiaW5kaW5nX29wIiwiZW8iLCJlMiIsImV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSIsImUyJDAiLCJlMSQwIiwibHN0IiwiYmluZGluZ3MiLCJjcyIsImNsYXNzX3N0cnVjdHVyZSIsImV4cHJlc3Npb24yJDAiLCJzaW1wbGVfZXhwciQwIiwibG9uZ2lkZW50X3hfZXhwcmVzc2lvbiIsImUzIiwiZGYiLCJleHByZXNzaW9uIiwiY3RvMSIsInBheWxvYWQiLCJpdGVtX2F0dHJpYnV0ZXMiLCJmbG9hdGluZ19hdHRyaWJ1dGUiLCJ2YWx1ZV9kZXNjcmlwdGlvbiIsIml0ZW1fZXh0ZW5zaW9uIiwiZXhjZXB0aW9uX2RlY2xhcmF0aW9uIiwiY2xhc3NfdHlwZV9maWVsZCIsImNsYXNzX3R5cGUiLCJ2ZiIsIm1mIiwidmYkMCIsInBmIiwiY2xhc3Nfc2lnbmF0dXJlIiwiY2wiLCJjbyIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJrd2QiLCJjbGFzc19maWVsZCIsInNvIiwiY2UiLCJvdmYiLCJjbGFzc19leHByIiwib3ZmJDAiLCJvdmYkMSIsImJpbmQiLCJiaW5kaW5nIiwiY2UkMCIsImNlJDEiLCJtb2R1bGVfdHlwZSQxIiwibW9kdWxlX3R5cGUiLCJtdDIkMCIsIm10MiIsIm10MSIsIm1vZHVsZV90eXBlMSIsIm10IiwidGQiLCJscyQwIiwidHlwZV9kZWNsYXJhdGlvbiIsImxpMiIsIm10eSIsIm10eSQwIiwibGkkMiIsInRkJDAiLCJscyQxIiwibGkkMyIsImxzJDIiLCJsaTIkMCIsImxpJDQiLCJtb2R1bGVfdHlwZTEkMCIsInNpZ25hdHVyZV9pdGVtIiwic2lnbmF0dXJlIiwidmQiLCJpbnRybyIsInR5cGVfZGVmX2xpc3QiLCJ0ZSIsInR5cGVfZXh0ZW5zaW9uIiwiZWQiLCJwbWQiLCJhbGlhcyIsInBtcyIsImRlY2xzIiwib3B0JDAiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsImNvcHlfdG9wbGV2ZWxfcGhyYXNlIiwieDAiLCJjb3B5X3N0cnVjdHVyZSIsIngwJDAiLCJjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSIsInBkaXJfbG9jIiwiY29weV9sb2NhdGlvbiIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IiwiY29weV9sb2MiLCJwZGlyYV9sb2MiLCJwZGlyYV9kZXNjIiwiY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyIsIngxIiwieDAkMSIsImNvcHlfTG9uZ2lkZW50X3QiLCJ4MCQyIiwiY29weV9leHByZXNzaW9uIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsImNvcHlfYXR0cmlidXRlcyIsImNvcHlfbG9jYXRpb25fc3RhY2siLCJjb3B5X2V4cHJlc3Npb25fZGVzYyIsImNvcHlfY29uc3RhbnQiLCJ4MiIsImNvcHlfdmFsdWVfYmluZGluZyIsImNvcHlfcmVjX2ZsYWciLCJjb3B5X2Nhc2UiLCJ4MyIsIngyJDAiLCJ4MSQwIiwieDAkMyIsImNvcHlfcGF0dGVybiIsImNvcHlfYXJnX2xhYmVsIiwieDEkMSIsIngwJDQiLCJ4MSQyIiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDAkNyIsIngxJDQiLCJ4MCQ4IiwieDEkNSIsIngwJDkiLCJ4MSQ2IiwieDAkMTAiLCJ4MSQ3IiwieDAkMTEiLCJ4MiQxIiwieDEkOCIsIngwJDEyIiwieDAkMTMiLCJ4MiQyIiwieDEkOSIsIngwJDE0IiwieDEkMTAiLCJ4MCQxNSIsIngxJDExIiwieDAkMTYiLCJ4NCIsIngzJDAiLCJ4MiQzIiwieDEkMTIiLCJ4MCQxNyIsImNvcHlfZGlyZWN0aW9uX2ZsYWciLCJ4MSQxMyIsIngwJDE4IiwiY29weV9jb3JlX3R5cGUiLCJ4MiQ0IiwieDEkMTQiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJjb3B5X2xhYmVsIiwieDAkMjEiLCJ4MSQxNiIsIngwJDIyIiwieDAkMjMiLCJ4MiQ1IiwieDEkMTciLCJ4MCQyNCIsImNvcHlfbW9kdWxlX2V4cHIiLCJ4MSQxOCIsIngwJDI1IiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJ4MCQyNiIsIngwJDI3IiwieDEkMTkiLCJ4MCQyOCIsIngwJDI5IiwiY29weV9jbGFzc19zdHJ1Y3R1cmUiLCJ4MSQyMCIsIngwJDMwIiwieDAkMzEiLCJ4MSQyMSIsIngwJDMyIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwieDAkMzMiLCJjb3B5X2xldG9wIiwieDAkMzQiLCJjb3B5X2V4dGVuc2lvbiIsImNvcHlfYmluZGluZ19vcCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfY29uc3RyYWludCIsInB2Yl9leHByIiwicHZiX3BhdCIsIm1lcmdlX2xvYyIsImdob3N0X2xvYyIsImdob3N0X2NvbnN0cmFpbnQiLCJwcGF0X2xvYyIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiIsImdyb3VuZCIsImNvZXJjaW9uJDAiLCJwdHlwX2xvYyQwIiwidHlwJDMiLCJwdmJfcGF0JDMiLCJncm91bmQkMCIsInBleHBfbG9jJDAiLCJwdmJfZXhwciQzIiwicHZiX2V4cHIkMSIsInB2Yl9wYXQkMSIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsInR5cCQyIiwidHlwJDEiLCJwdHlwX2xvYyIsInR5cF9wb2x5IiwicHZiX3BhdCQyIiwidmFyJDAiLCJwdmJfZXhwciQyIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2Rlc2MiLCJjb3B5X3BhdHRlcm5fZGVzYyIsImNvcHlfY2xvc2VkX2ZsYWciLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X29iamVjdF9maWVsZCIsImNvcHlfcm93X2ZpZWxkIiwiY29weV9wYWNrYWdlX3R5cGUiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJjb3B5X3Jvd19maWVsZF9kZXNjIiwicG9mX2F0dHJpYnV0ZXMiLCJwb2ZfbG9jIiwiY29weV9vYmplY3RfZmllbGRfZGVzYyIsImNvcHlfYXR0cmlidXRlIiwiYXR0cl9sb2MiLCJhdHRyX3BheWxvYWQiLCJhdHRyX25hbWUiLCJjb3B5X3BheWxvYWQiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlX2l0ZW0iLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsImNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyIsImNvcHlfdmFsdWVfZGVzY3JpcHRpb24iLCJjb3B5X3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2V4Y2VwdGlvbiIsImNvcHlfbW9kdWxlX2JpbmRpbmciLCJjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jbGFzc19kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9pbmZvcyIsImNvcHlfY2xhc3NfaW5mb3MiLCJjb3B5X2NsYXNzX2V4cHIiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsImNvcHlfY2xhc3NfZXhwcl9kZXNjIiwiY29weV9jbGFzc190eXBlIiwiY29weV9vcGVuX2Rlc2NyaXB0aW9uIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImNvcHlfY2xhc3NfZmllbGQiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsImNvcHlfY2xhc3NfZmllbGRfZGVzYyIsImNvcHlfb3ZlcnJpZGVfZmxhZyIsImNvcHlfY2xhc3NfZmllbGRfa2luZCIsImNvcHlfbXV0YWJsZV9mbGFnIiwiY29weV9wcml2YXRlX2ZsYWciLCJjb3B5X29wZW5faW5mb3MiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1vZF9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2Rlc2MiLCJjb3B5X21vZHVsZV9leHByX2Rlc2MiLCJjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIiwibG9jJDAiLCJlbXB0eV9zdHJ1Y3QiLCJjb3B5X21vZHVsZV90eXBlIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJjb3B5X21vZHVsZV90eXBlX2Rlc2MiLCJjb3B5X3dpdGhfY29uc3RyYWludCIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJwc2lnX2xvYyIsInBzaWdfZGVzYyIsImNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyIsImNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIiwiY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIiwiY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIiwiY29weV9jbGFzc19kZXNjcmlwdGlvbiIsInBjdHlfYXR0cmlidXRlcyIsInBjdHlfbG9jIiwicGN0eV9kZXNjIiwiY29weV9jbGFzc190eXBlX2Rlc2MiLCJjb3B5X2NsYXNzX3NpZ25hdHVyZSIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJjb3B5X2NsYXNzX3R5cGVfZmllbGQiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsImNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIiwiY29weV92aXJ0dWFsX2ZsYWciLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImNvcHlfcG9zaXRpb24iLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmciLCJ0eV9leHQiLCJydCQwIiwidmFsdWVfcGF0dGVybiIsInZhbHVlX2V4cCIsImlubmVyX2UiLCJleHRlcm5fY3QiLCJleHRlcm5fY3QkMCIsInB0X3R5dmFycyQwIiwid2l0aF9jb25zdHJhaW50IiwidHlfdmFycyIsInB2Yl9jb25zdHJhaW50JDAiLCJleHByJDAiLCJjb2VyY2UiLCJnciIsImV4cHIkMSIsInB2Yl9jb25zdHJhaW50JDEiLCJoZCIsInEiLCJpc191bml0IiwibWlncmF0aW9uX2Vycm9yIiwibWlzc2luZ19mZWF0dXJlIiwiY29weV9leHByIiwiY29weV9jYXNlcyIsImNvcHlfcGF0IiwiY29weV90eXAiLCJtYXBfb3B0aW9uIiwiY29weV9vcHRpb24iLCJjb3B5X2Jvb2wiLCJjb3B5X2xvbmdpZGVudCIsIngwX2xvYyIsIndyYXAiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwiZmllbGRzIiwiY3R5IiwibG9jJDEiLCJub2xvYyIsImZyb21fbG9jIiwicG9zIiwiaW5qZWN0X3ByZWRlZl9vcHRpb24iLCJkIiwiaWRlbnQiLCJ0eXBlX2RlY2xhcmF0aW9ucyIsInJlY2ZsYWciLCJ0eXBlcyIsImV4dHJhY3RfcHJlZGVmX29wdGlvbiIsImlzX25vbnJlYyIsImF0dHIiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImludDMyIiwib3B0Iiwic3RoIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiY2hhciQwIiwiYyIsInN0cmluZyIsInF1b3RhdGlvbl9kZWxpbWl0ZXIiLCJzIiwibG9jIiwibWsiLCJuYW1lIiwicGF5bG9hZCIsIm1rJDAiLCJkIiwic3RoJDAiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwibWF0Y2giLCJ0cnkkMCIsInR1cGxlJDEiLCJjb25zdHJ1Y3QkMCIsInZhcmlhbnQkMSIsInJlY29yZCQwIiwic2V0ZmllbGQiLCJhcnJheSQwIiwiaWZ0aGVuZWxzZSIsInNlcXVlbmNlIiwid2hpbGUkMCIsImZvciQwIiwiY29uc3RyYWludCQwIiwiY29lcmNlIiwic2VuZCIsIm5ldyQwIiwic2V0aW5zdHZhciIsIm92ZXJyaWRlIiwibGV0bW9kdWxlIiwibGV0ZXhjZXB0aW9uIiwiYXNzZXJ0IiwibGF6eSQwIiwicG9seSQwIiwib2JqZWN0JDAiLCJuZXd0eXBlIiwicGFjayIsIm9wZW4kMCIsImxldG9wIiwiYW5kcyIsImJvZHkiLCJleHRlbnNpb24kMSIsInVucmVhY2hhYmxlIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJtayQzIiwiYXR0ciQyIiwiaWRlbnQkMCIsImFsaWFzJDEiLCJzaWduYXR1cmUiLCJmdW5jdG9yIiwid2l0aCQwIiwidHlwZW9mJDAiLCJleHRlbnNpb24kMiIsIm1rJDQiLCJhdHRyJDMiLCJpZGVudCQxIiwic3RydWN0dXJlIiwiZnVuY3RvciQwIiwiYXBwbHkkMCIsIm0xIiwibTIiLCJjb25zdHJhaW50JDEiLCJtIiwibXR5IiwidW5wYWNrJDAiLCJleHRlbnNpb24kMyIsIm1rJDUiLCJ2YWx1ZSIsInR5cGUkMCIsInJlY19mbGFnIiwidHlwZV9zdWJzdCIsInR5cGVfZXh0ZW5zaW9uIiwiZXhjZXB0aW9uJDAiLCJtb2R1bGUiLCJtb2Rfc3Vic3QiLCJyZWNfbW9kdWxlIiwibW9kdHlwZSIsIm9wZW4kMSIsImluY2x1ZGUiLCJjbGFzcyQxIiwiY2xhc3NfdHlwZSIsImV4dGVuc2lvbiQ0IiwiYXR0cmlidXRlIiwibWskNiIsImV2YWwkMCIsInZhbHVlJDAiLCJwcmltaXRpdmUiLCJ0eXBlJDEiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiZXhjZXB0aW9uJDEiLCJtb2R1bGUkMCIsInJlY19tb2R1bGUkMCIsIm1vZHR5cGUkMCIsIm9wZW4kMiIsImNsYXNzJDIiLCJjbGFzc190eXBlJDAiLCJpbmNsdWRlJDAiLCJleHRlbnNpb24kNSIsImF0dHJpYnV0ZSQwIiwibWskNyIsImF0dHIkNCIsImNvbnN0ciQwIiwic3RydWN0dXJlJDAiLCJmdW4kMCIsImFwcGx5JDEiLCJsZXQkMSIsImNvbnN0cmFpbnQkMiIsImV4dGVuc2lvbiQ2Iiwib3BlbiQzIiwibWskOCIsImF0dHIkNSIsImNvbnN0ciQxIiwic2lnbmF0dXJlJDAiLCJhcnJvdyQwIiwiZXh0ZW5zaW9uJDciLCJvcGVuJDQiLCJtayQ5IiwiaW5oZXJpdCIsInZhbCIsIm1ldGhvZCIsImNvbnN0cmFpbnQkMyIsImV4dGVuc2lvbiQ4IiwiYXR0cmlidXRlJDEiLCJhdHRyJDYiLCJtayQxMCIsImluaGVyaXQkMCIsInZhbCQwIiwibWV0aG9kJDAiLCJjb25zdHJhaW50JDQiLCJpbml0aWFsaXplciIsImV4dGVuc2lvbiQ5IiwiYXR0cmlidXRlJDIiLCJ2aXJ0dWFsIiwiY3QiLCJjb25jcmV0ZSIsImF0dHIkNyIsIm1rJDExIiwic3RoJDEiLCJwcmltIiwibWskMTIiLCJtayQxMyIsInN5biIsIm1rJDE0IiwibWskMTUiLCJleHByIiwibWskMTYiLCJtayQxNyIsIm1leHByIiwibWskMTgiLCJtayQxOSIsInZpcnQiLCJzdGgkMiIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsInN0aCQzIiwia2luZCIsInN0aCQ0IiwicHJpdiIsImNvbnN0cnVjdG9yIiwicmVzIiwidmFycyIsImFyZ3MiLCJmaWVsZCQwIiwibXV0IiwibWskMjEiLCJwYXRoIiwiY29uc3RydWN0b3JzIiwibWtfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IkMCIsImRlY2wiLCJyZWJpbmQiLCJsaWQiLCJtayQyMiIsInNlbGYiLCJmaWVsZHMiLCJtayQyMyIsIm1rJDI0IiwidGFnIiwiY29uc3QkMCIsInR5cyIsImluaGVyaXQkMSIsInR5IiwibWskMjUiLCJ0YWckMCIsImluaGVyaXQkMiIsInN0cmluZ192ZXJzaW9uIiwic3RyaW5nX3ZlcnNpb24kMCIsInN0cmluZ192ZXJzaW9uJDEiLCJzdHJpbmdfdmVyc2lvbiQyIiwic3RyaW5nX3ZlcnNpb24kMyIsInN0cmluZ192ZXJzaW9uJDQiLCJzdHJpbmdfdmVyc2lvbiQ1Iiwic3RyaW5nX3ZlcnNpb24kNiIsInN0cmluZ192ZXJzaW9uJDciLCJzdHJpbmdfdmVyc2lvbiQ4Iiwic3RyaW5nX3ZlcnNpb24kOSIsInN0cmluZ192ZXJzaW9uJDEwIiwic3RyaW5nX3ZlcnNpb24kMTEiLCJzdHJpbmdfdmVyc2lvbiQxMiIsInN0cmluZ192ZXJzaW9uJDEzIiwibWlncmF0aW9uX2luZm8iLCJpZCIsIm1pZ3JhdGlvbl9pZGVudGl0eSIsImNvbXBvc2UiLCJnIiwibWlncmF0aW9uX2Z1bmN0aW9ucyIsImlzX3VuZGVmaW5lZCIsImltbWVkaWF0ZV9taWdyYXRpb24iLCJBIiwiZGlyZWN0aW9uIiwidmVyc2lvbiIsInRvIiwiZnVucyIsIkIiLCJtJDEiLCJUbyIsImFiIiwidG8yIiwiYmMiLCJtJDAiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwiY29weV9zaWduYXR1cmVfaXRlbSIsImNvcHlfbW9kdWxlX3R5cGUiLCJjb3B5X21vZHVsZV9leHByIiwiY29weV9jbGFzc190eXBlX2ZpZWxkIiwiY29weV9jbGFzc19zaWduYXR1cmUiLCJjb3B5X2NsYXNzX3R5cGUiLCJjb3B5X2NsYXNzX2ZpZWxkIiwiY29weV9jbGFzc19leHByIiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jYXNlIiwiY29weV9wYXR0ZXJuIiwiY29weV9leHByZXNzaW9uIiwiY29weV9jb3JlX3R5cGUiLCJjb3B5X3RvcGxldmVsX3BocmFzZSIsImNvcHlfc2lnbmF0dXJlIiwiY29weV9zdHJ1Y3R1cmUiLCJtaWdyYXRpb25faW5mbyQwIiwibWlncmF0aW9uX2luZm8kMSIsIm1pZ3JhdGlvbl9pbmZvJDIiLCJtaWdyYXRpb25faW5mbyQzIiwibWlncmF0aW9uX2luZm8kNCIsIm1pZ3JhdGlvbl9pbmZvJDUiLCJtaWdyYXRpb25faW5mbyQ2IiwibWlncmF0aW9uX2luZm8kNyIsIm1pZ3JhdGlvbl9pbmZvJDgiLCJtaWdyYXRpb25faW5mbyQ5IiwibWlncmF0aW9uX2luZm8kMTAiLCJtaWdyYXRpb25faW5mbyQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwibWlncmF0aW9uX2luZm8kMTMiLCJhbGxfdmVyc2lvbnMiLCJ2ZXJzaW9uJDAiLCJ2ZXJzaW9uJDEiLCJ2ZXJzaW9uJDIiLCJ2ZXJzaW9uJDMiLCJ2ZXJzaW9uJDQiLCJ2ZXJzaW9uJDUiLCJ2ZXJzaW9uJDYiLCJ2ZXJzaW9uJDciLCJ2ZXJzaW9uJDgiLCJ2ZXJzaW9uJDkiLCJ2ZXJzaW9uJDEwIiwidmVyc2lvbiQxMSIsInZlcnNpb24kMTIiLCJ2ZXJzaW9uJDEzIiwiZnJvbV9tYWdpYyIsIm1hZ2ljIiwiYWxsX3ZlcnNpb25zX3RvcF9kb3duIiwidGFpbCIsIlZlcnNpb24iLCJvZl9vY2FtbCIsIm5vZGUiLCJ5IiwidG9fb2NhbWwiLCJvZl9vY2FtbF9tYXBwZXIiLCJpdGVtIiwiY3R4dCIsInRvX29jYW1sX21hcHBlciIsImltcGxlbWVudGF0aW9uIiwibGV4YnVmIiwiaW50ZXJmYWNlJDAiLCJ0b3BsZXZlbF9waHJhc2UiLCJ1c2VfZmlsZSIsImV4cHJlc3Npb24iLCJwYXR0ZXJuIiwiZGVmYXVsdF9wcmludF93YXJuaW5nIiwiYWJvdXRfaXRlX2JyYW5jaF9yZWYiLCJjYXJlX2Fib3V0X2l0ZV9icmFuY2giLCJhYm91dF9pdGVfYnJhbmNoIiwic2VsZl8xIiwiYSQwIiwiYSQxIiwiYSQyIiwiYiQwIiwiYSQzIiwiYSQ0IiwiYSQ1IiwiYSQ2IiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwicGRpcl9sb2MiLCJwZGlyX2FyZyIsInBkaXJfbmFtZSIsInBkaXJfbmFtZSQwIiwicGRpcl9hcmckMCIsInBkaXJfbG9jJDAiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1iX25hbWUkMCIsInBtYl9leHByJDAiLCJwbWJfYXR0cmlidXRlcyQwIiwicG1iX2xvYyQwIiwicHZiX2xvYyIsInB2Yl9hdHRyaWJ1dGVzIiwicHZiX2V4cHIiLCJwdmJfcGF0IiwicHZiX3BhdCQwIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJwdmJfbG9jJDAiLCJiJDEiLCJiJDIiLCJiJDMiLCJiJDQiLCJhJDciLCJhJDgiLCJhJDkiLCJhJDEwIiwiYSQxMSIsImEkMTIiLCJhJDEzIiwiYSQxNCIsImEkMTUiLCJhJDE2IiwiYSQxNyIsImEkMTgiLCJhJDE5IiwiYSQyMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImIkNSIsImEkMjciLCJhJDI4IiwiYiQ2IiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJwc3RyX2Rlc2MkMCIsInBzdHJfbG9jJDAiLCJwbW9kX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfZGVzYyIsInBtb2RfZGVzYyQwIiwicG1vZF9sb2MkMCIsInBtb2RfYXR0cmlidXRlcyQwIiwiYiQ3IiwiYiQ4IiwiYiQ5IiwiYiQxMCIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwaW5jbF9tb2QkMCIsInBpbmNsX2xvYyQwIiwicGluY2xfYXR0cmlidXRlcyQwIiwicG9wZW5fYXR0cmlidXRlcyIsInBvcGVuX2xvYyIsInBvcGVuX292ZXJyaWRlIiwicG9wZW5fZXhwciIsInBvcGVuX2V4cHIkMCIsInBvcGVuX292ZXJyaWRlJDAiLCJwb3Blbl9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwbWRfbmFtZSQwIiwicG1kX3R5cGUkMCIsInBtZF9hdHRyaWJ1dGVzJDAiLCJwbWRfbG9jJDAiLCJhJDI5IiwiYSQzMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsInBjZl9hdHRyaWJ1dGVzIiwicGNmX2xvYyIsInBjZl9kZXNjIiwicGNmX2Rlc2MkMCIsInBjZl9sb2MkMCIsInBjZl9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJkJDAiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsInBjbF9kZXNjJDAiLCJwY2xfbG9jJDAiLCJwY2xfYXR0cmlidXRlcyQwIiwicGNpX2F0dHJpYnV0ZXMiLCJwY2lfbG9jIiwicGNpX2V4cHIiLCJwY2lfbmFtZSIsInBjaV9wYXJhbXMiLCJwY2lfdmlydCIsInBjaV92aXJ0JDAiLCJwY2lfcGFyYW1zJDAiLCJwY2lfbmFtZSQwIiwicGNpX2V4cHIkMCIsInBjaV9sb2MkMCIsInBjaV9hdHRyaWJ1dGVzJDAiLCJkJDEiLCJkJDIiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsInBjdGZfZGVzYyQwIiwicGN0Zl9sb2MkMCIsInBjdGZfYXR0cmlidXRlcyQwIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsInBjc2lnX3NlbGYkMCIsInBjc2lnX2ZpZWxkcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInB0eWV4bl9hdHRyaWJ1dGVzIiwicHR5ZXhuX2xvYyIsInB0eWV4bl9jb25zdHJ1Y3RvciIsInB0eWV4bl9jb25zdHJ1Y3RvciQwIiwicHR5ZXhuX2xvYyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMkMCIsInBleHRfYXR0cmlidXRlcyIsInBleHRfbG9jIiwicGV4dF9raW5kIiwicGV4dF9uYW1lIiwicGV4dF9uYW1lJDAiLCJwZXh0X2tpbmQkMCIsInBleHRfbG9jJDAiLCJwZXh0X2F0dHJpYnV0ZXMkMCIsInB0eWV4dF9hdHRyaWJ1dGVzIiwicHR5ZXh0X2xvYyIsInB0eWV4dF9wcml2YXRlIiwicHR5ZXh0X2NvbnN0cnVjdG9ycyIsInB0eWV4dF9wYXJhbXMiLCJwdHlleHRfcGF0aCIsInB0eWV4dF9wYXRoJDAiLCJwdHlleHRfcGFyYW1zJDAiLCJwdHlleHRfY29uc3RydWN0b3JzJDAiLCJwdHlleHRfcHJpdmF0ZSQwIiwicHR5ZXh0X2xvYyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicHZhbF9sb2MiLCJwdmFsX2F0dHJpYnV0ZXMiLCJwdmFsX3ByaW0iLCJwdmFsX3R5cGUiLCJwdmFsX25hbWUiLCJwdmFsX25hbWUkMCIsInB2YWxfdHlwZSQwIiwicHZhbF9wcmltJDAiLCJwdmFsX2F0dHJpYnV0ZXMkMCIsInB2YWxfbG9jJDAiLCJwYm9wX2xvYyIsInBib3BfZXhwIiwicGJvcF9wYXQiLCJwYm9wX29wIiwicGJvcF9vcCQwIiwicGJvcF9wYXQkMCIsInBib3BfZXhwJDAiLCJwYm9wX2xvYyQwIiwiYW5kcyQwIiwiYm9keSQwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImIkMTEiLCJiJDEyIiwiYiQxMyIsImIkMTQiLCJiJDE1IiwiYiQxNiIsImIkMTciLCJiJDE4IiwiYyQ1IiwiYiQxOSIsImIkMjAiLCJjJDYiLCJiJDIxIiwiYSQzMSIsImEkMzIiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsInBwYXRfYXR0cmlidXRlcyIsInBwYXRfbG9jX3N0YWNrIiwicHBhdF9sb2MiLCJwcGF0X2Rlc2MiLCJwcGF0X2Rlc2MkMCIsInBwYXRfbG9jJDAiLCJwcGF0X2xvY19zdGFjayQwIiwicHBhdF9hdHRyaWJ1dGVzJDAiLCJwb2ZfYXR0cmlidXRlcyIsInBvZl9sb2MiLCJwb2ZfZGVzYyQwIiwicG9mX2xvYyQwIiwicG9mX2F0dHJpYnV0ZXMkMCIsInByZl9hdHRyaWJ1dGVzIiwicHJmX2xvYyIsInByZl9kZXNjJDAiLCJwcmZfbG9jJDAiLCJwcmZfYXR0cmlidXRlcyQwIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsInB0eXBfZGVzYyQwIiwicHR5cF9sb2MkMCIsInB0eXBfbG9jX3N0YWNrJDAiLCJwdHlwX2F0dHJpYnV0ZXMkMCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJ0eHQiLCJ0eHQkMCIsImxvYyQwIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImxvY19zdGFydCQwIiwibG9jX2VuZCQwIiwibG9jX2dob3N0JDAiLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19mbmFtZSQwIiwicG9zX2xudW0kMCIsInBvc19ib2wkMCIsInBvc19jbnVtJDAiLCJzZWxmXzIiLCJzZWxmXzMiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwiYWNjJDgiLCJhY2MkOSIsImFjYyQxMCIsImFjYyQxMSIsImFjYyQxMiIsImFjYyQxMyIsImFjYyQxNCIsImFjYyQxNSIsImFjYyQxNiIsImFjYyQxNyIsImFjYyQxOCIsImFjYyQxOSIsImFjYyQyMCIsImFjYyQyMSIsImFjYyQyMiIsImFjYyQyMyIsImFjYyQyNCIsImFjYyQyNSIsImFjYyQyNiIsImFjYyQyNyIsImFjYyQyOCIsImFjYyQyOSIsImFjYyQzMCIsImFjYyQzMSIsImFjYyQzMiIsImFjYyQzMyIsImFjYyQzNCIsImFjYyQzNSIsImFjYyQzNiIsImFjYyQzNyIsImFjYyQzOCIsImFjYyQzOSIsImFjYyQ0MCIsImFjYyQ0MSIsImFjYyQ0MiIsImFjYyQ0MyIsImFjYyQ0NCIsImFjYyQ0NSIsImFjYyQ0NiIsImFjYyQ0NyIsImFjYyQ0OCIsImFjYyQ0OSIsImFjYyQ1MCIsImFjYyQ1MSIsImFjYyQ1MiIsImFjYyQ1MyIsImFjYyQ1NCIsImFjYyQ1NSIsInNlbGZfNCIsImFjYyQ1NiIsImFjYyQ1NyIsImFjYyQ1OCIsImFjYyQ1OSIsImFjYyQ2MCIsImFjYyQ2MSIsImFjYyQ2MiIsImFjYyQ2MyIsImFjYyQ2NCIsImFjYyQ2NSIsImFjYyQ2NiIsImFjYyQ2NyIsImFjYyQ2OCIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInRvX2V4dGVuc2lvbiIsImVycm9yIiwic3ViX21zZ3MiLCJtYWluX21zZyIsImVycl9leHRlbnNpb25fbmFtZSIsIm1rX3N0cmluZ19jb25zdGFudCIsImV4dGVuc2lvbl9vZl9zdWJfbXNnIiwic3ViX21zZyIsInJlZ2lzdGVyX2Vycm9yX29mX2V4biIsIm1lc3NhZ2UiLCJzZXRfbWVzc2FnZSIsIm1ha2UiLCJzdWIiLCJzdWIkMCIsInVwZGF0ZV9sb2MiLCJnZXRfbG9jYXRpb24iLCJvZl9leG4iLCJyYWlzZSIsInByaW50IiwiZGlmZl9jb21tYW5kIiwib3B0IiwiZmlsZTEiLCJmaWxlMiIsInN0aCIsImV4dHJhX3BhdGRpZmZfYXJncyIsInN0aCQwIiwidXNlX2NvbG9yIiwiZXhlYyIsImNtZCIsImNtZCQwIiwibiIsInMiLCJhcmdzIiwiZXJyX2NvZGUiLCJhbGwiLCJyZWdpc3RlciIsIm5hbWUiLCJkZXJpdmVyIiwibG9va3VwIiwiZHJ2IiwiZGVyaXZlcnMiLCJhY2MiLCJ4Iiwic2VsZl8xIiwiZiIsIngkMCIsInNlbGZfMiIsImFjYyIsInNlbGZfMyIsImEiLCJyIiwiaSIsImxvb3AiLCJsIiwibCQwIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsInNlbGZfNCIsImxlbiIsImEkMCIsIngkMSIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInJlc19oZWFkIiwicmVzX3RhaWwiLCJyZXMiLCJmbGFncyQwIiwiZmxhZ3MiLCJjb21wYXJlIiwiZXF1YWwiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwibWluIiwibWF4IiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJtaW4kMCIsIm1heCQwIiwidG9fc3RyaW5nIiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsIm1pbiQxIiwibWF4JDEiLCJzdWJfc3RyaW5nIiwidCIsInBvcyIsImxlbiIsImJsaXRfc3RyaW5nIiwic3JjIiwic3JjX3BvcyIsImRzdCIsImRzdF9wb3MiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwic3ltYm9sJDE3Iiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwibWluJDIiLCJtYXgkMiIsInByb3RlY3R4IiwieCIsImYiLCJmaW5hbGx5JDAiLCJ5IiwiZXhuJDAiLCJleG4iLCJ0b19zdHJpbmckMSIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJtaW4kMyIsIm1heCQzIiwiaWQiLCJzZXQiLCJrZXkiLCJkYXRhIiwiYWRkIiwiYWRkX2V4biIsImZpbmRfb3B0IiwiZmluZF9vcl9hZGQiLCJkZWZhdWx0JDAiLCJkYXRhJDAiLCJhZGRfYWxpc3QiLCJhbGlzdCIsImFsaXN0JDAiLCJhbGlzdCQxIiwib2ZfYWxpc3QiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJjcmVhdGUkMCIsIm9wdCIsImZpbGUiLCJzdGgiLCJiaW5hcnkiLCJ3aXRoX2ZpbGUiLCJmaWxlbmFtZSIsImlucHV0X2FsbCIsImJ1ZiIsImNoYXIkMCIsInJlYWRfYWxsIiwibWF4X2ludCIsInRvX3N0cmluZyQyIiwiY29tcGFyZSQ1IiwiZXF1YWwkNSIsInN5bWJvbCQyOSIsInN5bWJvbCQzMCIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsIm1pbiQ0IiwibWF4JDQiLCJtZXJnZSIsInJlbW92ZV9hc3NvYyIsInJlbW92ZV9hc3NxIiwicmV2X21hcGkiLCJsaXN0IiwibGlzdCQwIiwiaSIsImFjYyIsInRhaWwiLCJoZWFkIiwiYWNjJDAiLCJpJDAiLCJmb2xkX3JpZ2h0MiIsImxpc3QxIiwibGlzdDIiLCJpbml0IiwibWFwJDAiLCJtYXBpJDAiLCJmb2xkX3JpZ2h0JDAiLCJhcHBlbmQiLCJjb25jYXQkMCIsInJldl9jb21iaW5lIiwiY29tYmluZSIsInNwbGl0IiwieXMiLCJ4cyIsIm1hcDIiLCJwYXJ0aXRpb25fbWFwIiwicCIsImwiLCJsZWZ0IiwicmlnaHQiLCJsJDAiLCJ2IiwidiQwIiwiaW5pdCQwIiwicG9zJDAiLCJpc19lbXB0eSIsInJldl9maWx0ZXJfb3B0Iiwib3B0aW9uIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJzb21lIiwiZmluZF9tYXBfZXhuIiwibGFzdCIsInJlc3QiLCJzcGxpdF93aGlsZSIsImZpbmRfYV9kdXAiLCJzZXQkMSIsInNldCQwIiwiYXNzb2Nfb3B0IiwiaXRlciQyIiwiaXNfc29tZSIsIml0ZXIkMyIsIm1hcCQxIiwidmFsdWUiLCJ0b19saXN0IiwiYmluZCIsImEiLCJlIiwibWFwJDIiLCJtYXBfZXJyb3IiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJoYW5kbGVfZXJyb3IiLCJzeW1ib2wkMzUiLCJxMiIsInQyIiwicTEiLCJ0MSIsImhkJDAiLCJ0b19saXN0JDAiLCJxIiwibWFwJDMiLCJjcmVhdGUkMSIsInN0aCQwIiwic3RoJDEiLCJmYWlsX2lmX2V4aXN0cyIsInN0aCQyIiwicGVybSIsImZsYWdzJDEiLCJmbGFncyQyIiwid2l0aF9maWxlJDAiLCJ3cml0ZV9hbGwiLCJpc19lbXB0eSQwIiwicHJlZml4Iiwic3VmZml4IiwiZHJvcF9wcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImlzX3ByZWZpeCIsImlzX3N1ZmZpeCIsInN1ZmZpeF9vZmZzZXQiLCJwb3MkMSIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiaW5kZXhfb3B0JDAiLCJyaW5kZXhfb3B0JDAiLCJpbmRleF9mcm9tX29wdCQwIiwicmluZGV4X2Zyb21fb3B0JDAiLCJsc3BsaXQyIiwib24iLCJjYXBpdGFsaXplX2FzY2lpJDAiLCJsb3dlcmNhc2VfYXNjaWkkMSIsInVuY2FwaXRhbGl6ZV9hc2NpaSQwIiwic3BsaXRfb25fY2hhciQwIiwic2VwIiwiY29tcGFyZSQ3IiwiZXF1YWwkNyIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsIm1pbiQ1IiwibWF4JDUiLCJmaW5kX29wdCQxIiwic3ltYm9sJDQyIiwib3V0cHV0Iiwib2MiLCJieXRlcyIsIm91dHB1dF9zdWJzdHJpbmciLCJzdHJpbmciLCJpbl9maWxlIiwibmFtZSIsImxvYyIsInNldF9maWxlbmFtZSIsImZuIiwibG9jX3N0YXJ0IiwibG9jX2VuZCIsIm5vbmUiLCJpbml0IiwibGV4YnVmIiwiZm5hbWUiLCJyYWlzZV9lcnJvcmYiLCJmbXQiLCJyZXBvcnRfZXhjZXB0aW9uIiwib2ZfbGV4YnVmIiwicHJpbnQiLCJwcGYiLCJ0IiwiY29tcGFyZV9wb3MiLCJwMSIsInAyIiwiY29sdW1uIiwicCIsIm4iLCJtaW5fcG9zIiwibWF4X3BvcyIsImNvbXBhcmUiLCJsb2MxIiwibG9jMiIsImNyZWF0ZWYiLCJzdHIiLCJlcnJvcl9leHRlbnNpb25mIiwiZSIsImZhaWwiLCJleHBlY3RlZCIsImF0dHJpYnV0ZSIsInBheWxvYWQiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJjYXNlJDAiLCJsaHMiLCJndWFyZCIsInJocyIsInBjbF9jb25zdHIiLCJ4MCIsIngxIiwicGNsX3N0cnVjdHVyZSIsInBjbF9mdW4iLCJ4MiIsIngzIiwicGNsX2FwcGx5IiwicGNsX2xldCIsInBjbF9jb25zdHJhaW50IiwicGNsX2V4dGVuc2lvbiIsInBjbF9vcGVuIiwicGNmX2luaGVyaXQiLCJwY2ZfdmFsIiwicGNmX21ldGhvZCIsInBjZl9jb25zdHJhaW50IiwicGNmX2luaXRpYWxpemVyIiwicGNmX2F0dHJpYnV0ZSIsInBjZl9leHRlbnNpb24iLCJjbGFzc19pbmZvcyIsInZpcnQiLCJwYXJhbXMiLCJleHByIiwiY2xhc3Nfc2lnbmF0dXJlIiwic2VsZiIsImZpZWxkcyIsImNsYXNzX3N0cnVjdHVyZSIsInBjdHlfY29uc3RyIiwicGN0eV9zaWduYXR1cmUiLCJwY3R5X2Fycm93IiwicGN0eV9leHRlbnNpb24iLCJwY3R5X29wZW4iLCJwY3RmX2luaGVyaXQiLCJwY3RmX3ZhbCIsInBjdGZfbWV0aG9kIiwicGN0Zl9jb25zdHJhaW50IiwicGN0Zl9hdHRyaWJ1dGUiLCJwY3RmX2V4dGVuc2lvbiIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidmFycyIsImFyZ3MiLCJyZXMiLCJwdHlwX2FueSIsInB0eXBfdmFyIiwicHR5cF9hcnJvdyIsInB0eXBfdHVwbGUiLCJwdHlwX2NvbnN0ciIsInB0eXBfb2JqZWN0IiwicHR5cF9jbGFzcyIsInB0eXBfYWxpYXMiLCJwdHlwX3ZhcmlhbnQiLCJwdHlwX3BvbHkiLCJwdHlwX3BhY2thZ2UiLCJwdHlwX2V4dGVuc2lvbiIsInBkaXJfc3RyaW5nIiwicGRpcl9pbnQiLCJwZGlyX2lkZW50IiwicGRpcl9ib29sIiwicGV4cF9pZGVudCIsInBleHBfY29uc3RhbnQiLCJwZXhwX2xldCIsInBleHBfZnVuY3Rpb24iLCJwZXhwX2Z1biIsInBleHBfYXBwbHkiLCJwZXhwX21hdGNoIiwicGV4cF90cnkiLCJwZXhwX3R1cGxlIiwicGV4cF9jb25zdHJ1Y3QiLCJwZXhwX3ZhcmlhbnQiLCJwZXhwX3JlY29yZCIsInBleHBfZmllbGQiLCJwZXhwX3NldGZpZWxkIiwicGV4cF9hcnJheSIsInBleHBfaWZ0aGVuZWxzZSIsInBleHBfc2VxdWVuY2UiLCJwZXhwX3doaWxlIiwicGV4cF9mb3IiLCJ4NCIsInBleHBfY29uc3RyYWludCIsInBleHBfY29lcmNlIiwicGV4cF9zZW5kIiwicGV4cF9uZXciLCJwZXhwX3NldGluc3R2YXIiLCJwZXhwX292ZXJyaWRlIiwicGV4cF9sZXRtb2R1bGUiLCJwZXhwX2xldGV4Y2VwdGlvbiIsInBleHBfYXNzZXJ0IiwicGV4cF9sYXp5IiwicGV4cF9wb2x5IiwicGV4cF9vYmplY3QiLCJwZXhwX25ld3R5cGUiLCJwZXhwX3BhY2siLCJwZXhwX29wZW4iLCJwZXhwX2xldG9wIiwicGV4cF9leHRlbnNpb24iLCJwZXhwX3VucmVhY2hhYmxlIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwia2luZCIsImluY2x1ZGVfaW5mb3MiLCJtb2QiLCJsYWJlbF9kZWNsYXJhdGlvbiIsIm11dGFibGUiLCJ0eXBlIiwibGV0b3AiLCJsZXQkMCIsImFuZHMiLCJib2R5IiwibG9jYXRpb24iLCJzdGFydCIsImVuZCIsImdob3N0IiwibW9kdWxlX2JpbmRpbmciLCJtb2R1bGVfZGVjbGFyYXRpb24iLCJwbW9kX2lkZW50IiwicG1vZF9zdHJ1Y3R1cmUiLCJwbW9kX2Z1bmN0b3IiLCJwbW9kX2FwcGx5IiwicG1vZF9jb25zdHJhaW50IiwicG1vZF91bnBhY2siLCJwbW9kX2V4dGVuc2lvbiIsIm1vZHVsZV9zdWJzdGl0dXRpb24iLCJtYW5pZmVzdCIsInBtdHlfaWRlbnQiLCJwbXR5X3NpZ25hdHVyZSIsInBtdHlfZnVuY3RvciIsInBtdHlfd2l0aCIsInBtdHlfdHlwZW9mIiwicG10eV9leHRlbnNpb24iLCJwbXR5X2FsaWFzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb24iLCJvdGFnIiwib2luaGVyaXQiLCJvcGVuX2luZm9zIiwib3ZlcnJpZGUiLCJwcGF0X2FueSIsInBwYXRfdmFyIiwicHBhdF9hbGlhcyIsInBwYXRfY29uc3RhbnQiLCJwcGF0X2ludGVydmFsIiwicHBhdF90dXBsZSIsInBwYXRfY29uc3RydWN0IiwicHBhdF92YXJpYW50IiwicHBhdF9yZWNvcmQiLCJwcGF0X2FycmF5IiwicHBhdF9vciIsInBwYXRfY29uc3RyYWludCIsInBwYXRfdHlwZSIsInBwYXRfbGF6eSIsInBwYXRfdW5wYWNrIiwicHBhdF9leGNlcHRpb24iLCJwcGF0X2V4dGVuc2lvbiIsInBwYXRfb3BlbiIsInBvc2l0aW9uIiwibG51bSIsImJvbCIsImNudW0iLCJydGFnIiwicmluaGVyaXQiLCJwc2lnX3ZhbHVlIiwicHNpZ190eXBlIiwicHNpZ190eXBlc3Vic3QiLCJwc2lnX3R5cGV4dCIsInBzaWdfZXhjZXB0aW9uIiwicHNpZ19tb2R1bGUiLCJwc2lnX21vZHN1YnN0IiwicHNpZ19yZWNtb2R1bGUiLCJwc2lnX21vZHR5cGUiLCJwc2lnX21vZHR5cGVzdWJzdCIsInBzaWdfb3BlbiIsInBzaWdfaW5jbHVkZSIsInBzaWdfY2xhc3MiLCJwc2lnX2NsYXNzX3R5cGUiLCJwc2lnX2F0dHJpYnV0ZSIsInBzaWdfZXh0ZW5zaW9uIiwicHN0cl9ldmFsIiwicHN0cl92YWx1ZSIsInBzdHJfcHJpbWl0aXZlIiwicHN0cl90eXBlIiwicHN0cl90eXBleHQiLCJwc3RyX2V4Y2VwdGlvbiIsInBzdHJfbW9kdWxlIiwicHN0cl9yZWNtb2R1bGUiLCJwc3RyX21vZHR5cGUiLCJwc3RyX29wZW4iLCJwc3RyX2NsYXNzIiwicHN0cl9jbGFzc190eXBlIiwicHN0cl9pbmNsdWRlIiwicHN0cl9hdHRyaWJ1dGUiLCJwc3RyX2V4dGVuc2lvbiIsInRvcGxldmVsX2RpcmVjdGl2ZSIsImFyZyIsInR5cGVfZGVjbGFyYXRpb24iLCJjc3RycyIsInByaXZhdGUkMCIsInR5cGVfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IiLCJ0eXBlX2V4dGVuc2lvbiIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJ2YWx1ZV9iaW5kaW5nIiwidmFsdWVfZGVzY3JpcHRpb24iLCJwcmltIiwidHh0IiwibWFrZSIsIm1hcCIsImYiLCJpc19ub3JtYWxfaWRlbnRfY2hhciIsInNob3J0X25hbWUiLCJzdHJpbmciLCJzIiwiYiIsImEiLCJiJDAiLCJhJDAiLCJzZXhwX29mX3QiLCJmbGF0dGVuX2V4biIsImxpZCQwIiwiYWNjdSIsInMkMCIsImxpZCIsImxhc3RfZXhuIiwidW5mbGF0dGVuIiwibCIsImFjYyIsInBhcnNlIiwiaW52YWxpZCIsIm9wZW5fcGFyIiwiY2xvc2VfcGFyIiwiciIsImwkMCIsImdyb3VwIiwiYmVmb3JlIiwibCQxIiwicyQxIiwieCIsIm1rIiwibWFwX2xpZGVudCIsImxpZGVudCIsInBwYXRfY29uc3RydWN0JDAiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiQwIiwicHN0cl92YWx1ZV9saXN0IiwicmVjX2ZsYWciLCJ2YnMiLCJub25yZWNfdHlwZV9kZWNsYXJhdGlvbiIsImVpbnQiLCJlY2hhciIsImVzdHJpbmciLCJlZmxvYXQiLCJlaW50MzIiLCJlaW50NjQiLCJlbmF0aXZlaW50IiwicGludCIsInBjaGFyIiwicHN0cmluZyIsInBmbG9hdCIsInBpbnQzMiIsInBpbnQ2NCIsInBuYXRpdmVpbnQiLCJlYm9vbCIsInBib29sIiwiZXZhciIsInYiLCJwdmFyIiwiZXVuaXQiLCJwdW5pdCIsInBleHBfdHVwbGUkMCIsInBwYXRfdHVwbGUkMCIsInB0eXBfdHVwbGUkMCIsInBleHBfdHVwbGVfb3B0IiwicHBhdF90dXBsZV9vcHQiLCJwdHlwX3BvbHkkMCIsInR5IiwicGV4cF9hcHBseSQwIiwiZWwiLCJlJDAiLCJlYXBwbHkiLCJlYWJzdHJhY3QiLCJwcyIsImVzZXF1ZW5jZSIsInRsIiwiaGQiLCJwY29uc3RydWN0IiwiY2QiLCJlY29uc3RydWN0IiwiZWxpc3QiLCJwbGlzdCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdCIsImlkZW50IiwibiQwIiwidHlwZV9jb25zdHJfY29udiIsImFwcGx5X2xvYyIsImxvbmdpZGVudCIsImxvYyQwIiwibW9kdWxlX3BhdGgiLCJzdWZmaXhfbiIsImZ1bmN0b3IiLCJmdW5jdG9yX2FyZ3MiLCJmdW5jdG9yJDAiLCJmdW5jdG9yX3BhdGgiLCJyZXN0IiwiaWRlbnQkMCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IiwiZ2F0aGVyX2FyZ3MiLCJhcmdzJDAiLCJib2R5JDAiLCJldGFfcmVkdWNlIiwiZXhwciQwIiwic3VicGF0IiwibGFiZWwiLCJhY2MkMCIsIm5hbWUkMCIsImFjYyQxIiwiZl9pZGVudCIsInBhcmFtX2xhYmVsIiwiYXJnX2xhYmVsIiwicGFyYW0kMCIsInR5X29wdCIsInR5JDAiLCJldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9uIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24kMCIsInBleHBfdHVwbGVfb3B0JDAiLCJwcGF0X3R1cGxlX29wdCQwIiwiZWludCQwIiwiZWNoYXIkMCIsImVzdHJpbmckMCIsImVmbG9hdCQwIiwiZWludDMyJDAiLCJlaW50NjQkMCIsImVuYXRpdmVpbnQkMCIsImVib29sJDAiLCJldmFyJDAiLCJwaW50JDAiLCJwY2hhciQwIiwicHN0cmluZyQwIiwicGZsb2F0JDAiLCJwaW50MzIkMCIsInBpbnQ2NCQwIiwicG5hdGl2ZWludCQwIiwicGJvb2wkMCIsInB2YXIkMCIsImV1bml0JDAiLCJwdW5pdCQwIiwiZWFwcGx5JDAiLCJlYWJzdHJhY3QkMCIsImVzZXF1ZW5jZSQwIiwiZWxpc3QkMCIsInBsaXN0JDAiLCJ0eXBlX2NvbnN0cl9jb252JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiQwIiwiZ2V0Iiwic2tpcCIsInNraXAkMCIsInN0YWNrIiwibGVuIiwicG9zIiwicG9zJDAiLCJsZXZlbnNodGVpbl9kaXN0YW5jZSIsImN1dG9mZiIsIm0iLCJkIiwiaSQwIiwiaiQwIiwibGluZV9taW4iLCJqIiwiaSIsInZhbHVlIiwiZGlzdGFuY2UiLCJzcGVsbGNoZWNrIiwibmFtZXMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJzdWdnZXN0aW9ucyIsInJldl9yZXN0IiwibGFzdCIsImZvbGRfZG90X3N1ZmZpeGVzIiwiY29sbGFwc2VfYWZ0ZXJfYXQiLCJwYXJ0cyIsInBhcnQiLCJwYXJ0cyQxIiwicGFydHMkMCIsImRvdF9zdWZmaXhlcyIsInNwbGl0X3BhdGgiLCJpJDIiLCJpJDQiLCJpJDMiLCJpJDEiLCJtYXRjaGVzIiwibWF0Y2hlZCIsInNwbGl0X291dGVyX25hbWVzcGFjZSIsImJlZm9yZV9kb3QiLCJhZnRlcl9kb3QiLCJjcmVhdGVfc2V0IiwiZnVsbHlfcXVhbGlmaWVkX25hbWVzIiwiYXR0cmlidXRlcyIsImV4dGVuc2lvbnMiLCJpc19hbGxvd2xpc3RlZCIsImdldF9hdHRyaWJ1dGVfbGlzdCIsImdldF9leHRlbnNpb25fbGlzdCIsImNyZWF0ZV9yZXNlcnZlZCIsInRibCIsInJlc2VydmUiLCJucyQwIiwibnMiLCJ0YmwkMCIsInJlc3RfbnMiLCJvdXRlcl9ucyIsInJlc3RfdGJsIiwiaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyIsImlnbm9yZV9jaGVja3MiLCJjcmVhdGUiLCJjdXJyZW50X2ZpbGUiLCJzdHJpbmdfb2ZfY29udGV4dCIsImdldF9hbGxfZm9yX2NvbnRleHQiLCJjb250ZXh0IiwiY2hlY2tfY29sbGlzaW9uc19sb2NhbCIsImNhbGxlciIsImFsbF9mb3JfY29udGV4dCIsImRlY2xhcmVkX2F0IiwiY29udGV4dCQwIiwiY2hlY2tfY29sbGlzaW9ucyIsInJlZ2lzdGVyIiwia2luZCQxIiwibGlzdCIsImtpbmQkMCIsImFsbCIsInQkMCIsIm9wdCIsInN0aCIsImFsbG93bGlzdCIsImtleSIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJvdGhlcl9jb250ZXh0cyIsInBwX3RleHQiLCJjdXJyZW50X2NvbnRleHQiLCJhX29yX2FuIiwieSIsImMiLCJyZXZfb3RoZXJzIiwib3RoZXJzIiwibXNnIiwicmFpc2VfZXJyb3JmJDAiLCJjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiIsInRkIiwiY2hvcCIsIm9yX21vcmUiLCJ0YXJnZXQiLCJjbnQiLCJnZW5fc3ltYm9sIiwicHJlZml4IiwicHJlZml4JDAiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyIsIm5hbWVfcGFyYW0iLCJ2YXJpYW5jZSIsInRwIiwicHR5cF9kZXNjIiwibyIsImVycm9ycyIsInB0eXBlX3BhcmFtcyIsInEiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkIiwiZXJyIiwiY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyIiwidGQkMCIsInJlc3VsdF90eXBlIiwic3RyaW5nX29mX2NvcmVfdHlwZSIsImN0IiwiYnVmIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMiLCJnZXRfdHlwZV9wYXJhbV9uYW1lIiwic2VsZl8xIiwiY3R5cGUiLCJpZCIsInRkcyIsInJlYWxseV9yZWN1cnNpdmUiLCJ4JDAiLCJ4JDEiLCJsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCIsImxvY19vZl9wYXlsb2FkIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwibG9jX29mX2F0dHJpYnV0ZSIsImxvY19vZl9leHRlbnNpb24iLCJjdXJyeV9hcHBsaWNhdGlvbnMiLCJvcmlnX2ZvcndhcmRfYXJncyIsImxvb3AiLCJyZXZfZnJvbnRfYXJncyIsImxhc3RfYXJnIiwiYXR0ciIsImF0dHJpYnV0ZXNfZXJyb3JzIiwic2VsZl8yIiwiY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyIsImFzc2VydF9ub19hdHRyaWJ1dGVzIiwic2VsZl8zIiwiYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4iLCJhdHRyaWJ1dGVfb2Zfd2FybmluZyIsImlzX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJzaWciLCJ0eXAkMCIsInR5cCIsIm1rX25hbWVkX3NpZyIsInNnX25hbWUiLCJoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCIsImFyaXR5IiwibXR5IiwiZm9yX3N1YnN0IiwiZXhuX3RvX2xvY19lcnJvciIsImV4biIsImVycm9yIiwicmV0dXJuJDAiLCJzeW1ib2xfYmluZCIsImVycm9yczEiLCJlcnJvcnMyIiwic3ltYm9sX21hcCIsIm9mX3Jlc3VsdCIsInJlc3VsdCIsImRlZmF1bHQkMCIsImNvbWJpbmVfZXJyb3JzIiwibm9sYWJlbCIsImsiLCJsYWJlbGxlZCIsImYwIiwiayQwIiwib3B0aW9uYWwiLCJrJDEiLCJrJDIiLCJwY2xfbG9jIiwiZjIiLCJmMSIsInBjbF9hdHRyaWJ1dGVzIiwiZjMiLCJrJDMiLCJwY2ZfbG9jIiwicGNmX2F0dHJpYnV0ZXMiLCJjZmtfdmlydHVhbCIsImNma19jb25jcmV0ZSIsImNsYXNzX2luZm9zX2F0dHJpYnV0ZXMiLCJwY3R5X2xvYyIsInBjdHlfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9hdHRyaWJ1dGVzIiwiY2xvc2VkIiwib3BlbiIsInBjb25zdF9pbnRlZ2VyIiwicGNvbnN0X2NoYXIiLCJwY29uc3Rfc3RyaW5nIiwicGNvbnN0X2Zsb2F0IiwicGNzdHJfdHVwbGUiLCJwY3N0cl9yZWNvcmQiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9hdHRyaWIiLCJwdHlwX2xvYyIsInB0eXBfYXR0cmlidXRlcyIsInVwdG8iLCJkb3dudG8iLCJwZGlyYV9sb2MiLCJwZXhwX2xvYyIsInBleHBfYXR0cmlidXRlcyIsImY0IiwiayQ0IiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2F0dHJpYnV0IiwicGV4dF9kZWNsIiwicGV4dF9yZWJpbmQiLCJ1bml0IiwibmFtZWQiLCJpbmNsdWRlX2luZm9zX2F0dHJpYnV0ZXMiLCJpbmplY3RpdmUiLCJub2luamVjdGl2aXR5IiwibGFiZWxfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImxkb3QiLCJsYXBwbHkiLCJtb2R1bGVfYmluZGluZ19hdHRyaWJ1dGVzIiwibW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfYXR0cmlidXRlcyIsIm1vZHVsZV9zdWJzdGl0dXRpb25fYXR0cmlidXRlcyIsInBtdHlfbG9jIiwicG10eV9hdHRyaWJ1dGVzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb25fYXR0cmliIiwiaW1tdXRhYmxlIiwicG9mX2xvYyIsInBvZl9hdHRyaWJ1dGVzIiwib3Blbl9pbmZvc19hdHRyaWJ1dGVzIiwiZnJlc2giLCJwcGF0X2xvYyIsInBwYXRfYXR0cmlidXRlcyIsInBzdHIiLCJwc2lnIiwicHR5cCIsInBwYXQiLCJwdWJsaWMkMCIsIm5vbnJlY3Vyc2l2ZSIsInJlY3Vyc2l2ZSIsInByZl9sb2MiLCJwcmZfYXR0cmlidXRlcyIsInBzaWdfbG9jIiwicHN0cl9sb2MiLCJwdG9wX2RlZiIsInB0b3BfZGlyIiwidHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwiayQ1IiwidHlwZV9leGNlcHRpb25fYXR0cmlidXRlcyIsInR5cGVfZXh0ZW5zaW9uX2F0dHJpYnV0ZXMiLCJwdHlwZV9hYnN0cmFjdCIsInB0eXBlX3ZhcmlhbnQiLCJwdHlwZV9yZWNvcmQiLCJwdHlwZV9vcGVuIiwidmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIiwidmFsdWVfZGVzY3JpcHRpb25fYXR0cmlidXRlcyIsImNvdmFyaWFudCIsImNvbnRyYXZhcmlhbnQiLCJub3ZhcmlhbmNlIiwidmlydHVhbCIsImNvbmNyZXRlIiwicHdpdGhfdHlwZSIsInB3aXRoX21vZHVsZSIsInB3aXRoX21vZHR5cGUiLCJwd2l0aF9tb2R0eXBlc3Vic3QiLCJwd2l0aF90eXBlc3Vic3QiLCJwd2l0aF9tb2RzdWJzdCIsInJlc3RvcmVfY29udGV4dCIsImJhY2t1cCIsImluY3JfbWF0Y2hlZCIsInBhcnNlX3JlcyIsIm9uX2Vycm9yIiwiZiQwIiwiciQwIiwicGFyc2VfcmVzJDAiLCJwYXJzZSQwIiwic3ltYm9sIiwic3ltYm9sJDAiLCJkcm9wIiwiYXMiLCJjc3QiLCJ0b19zdHJpbmciLCJlcXVhbCIsImludCQwIiwiY2hhciQwIiwiZmxvYXQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJib29sIiwiYm9vbCQwIiwiZnVuYyIsImZhbHNlJDAiLCJ0cnVlJDAiLCJuaWwiLCJzeW1ib2wkMSIsInNvbWUiLCJwYWlyIiwidHJpcGxlIiwiYWx0IiwiZTEkMCIsImUxIiwibTEiLCJlMiQwIiwiZTIiLCJtMiIsIm1hcCQwIiwibWFwX3Jlc3VsdCIsIm1hcDAiLCJtYXAxIiwibWFwMiIsIm1hcDAkMCIsIm1hcDEkMCIsIm1hcDIkMCIsIm1hcF92YWx1ZSIsIm1hcF92YWx1ZSQwIiwiYWx0X29wdGlvbiIsIm1hbnkiLCJhdXgiLCJ4cyIsInBhY2swIiwicGFjazIiLCJwYWNrMyIsInoiLCJjb25zdF9pbnQiLCJjb25zdF9pbnQzMiIsImNvbnN0X2ludDY0IiwiY29uc3RfbmF0aXZlaW50Iiwic2luZ2xlX2V4cHJfcGF5bG9hZCIsIm5vX2xhYmVsIiwiZXh0ZW5zaW9uIiwibmV4dCIsImV4cHIkMSIsIm9mX2Z1bmMiLCJ0b19mdW5jIiwicG9seV9lcXVhbCIsInBhdHRlcm4iLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjbGFzc19leHByIiwiY2xhc3NfZmllbGQiLCJtb2R1bGVfdHlwZSIsIm9wZW5fZGVzY3JpcHRpb24iLCJtb2R1bGVfZXhwciIsIm9iamVjdF90eXBlX2ZpZWxkIiwiZ2V0X3BzdHJfZXZhbCIsInN0IiwiZ2V0X3BzdHJfZXh0ZW5zaW9uIiwiZ2V0X3BzaWdfZXh0ZW5zaW9uIiwiZ2V0X2F0dHJpYnV0ZXMiLCJzZXRfYXR0cmlidXRlcyIsImF0dHJzIiwic3RydWN0dXJlX2l0ZW0iLCJzaWduYXR1cmVfaXRlbSIsImNsYXNzX2ZpZWxkJDAiLCJjbGFzc190eXBlX2ZpZWxkJDAiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJkZWNsYXJlIiwiZGVjbGFyZV93aXRoX25hbWVfbG9jIiwibmFtZV9sb2MiLCJkZWNsYXJlX3dpdGhfYXR0cl9sb2MiLCJhdHRyX2xvYyIsImRlY2xhcmVfZmxhZyIsInBheWxvYWRfcGF0dGVybiIsImNvbnRpbnVhdGlvbiIsIm5vcm1hbGl6ZSIsImhhc2giLCJub3Rfc2VlbiIsIm1hcmtfYXNfc2VlbiIsImV4cGxpY2l0bHlfZHJvcCIsImdldF9pbnRlcm5hbCIsImF0dHJpYnV0ZXMkMSIsImxvbmdlc3RfbWF0Y2giLCJhdHRyaWJ1dGVzJDAiLCJsZW4kMCIsImxvbmdlc3RfbWF0Y2gkMCIsImxvbmdlc3RfbWF0Y2gkMSIsImNvbnZlcnQiLCJkb19tYXJrX2FzX3NlZW4iLCJwYXR0ZXJuJDAiLCJnZXRfcmVzIiwiaGFzX2ZsYWdfcmVzIiwiaGFzX2ZsYWciLCJjb25zdW1lX3JlcyIsImF0dHIkMCIsImF0dHJzJDAiLCJjb25zdW1lIiwicmVtb3ZlX3NlZW5fcmVzIiwicGFja2VkcyIsInJlbW92ZV9zZWVuIiwicGF0dGVybl9yZXMiLCJkZWNsYXJlJDAiLCJjb252ZXJ0X3JlcyIsInRzIiwiY29udmVydCQwIiwiY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIiwiaXRlbSIsIml0ZW0kMCIsImVycm9yczIkMCIsIml0ZW0kMiIsIml0ZW0kMSIsImNsb3NlZF9mbGFnIiwiZXJyb3JzJDAiLCJmaWVsZHMkMCIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvIiwicmFpc2VfaWZfbm9uX2VtcHR5IiwiY2hlY2tfdW51c2VkIiwicmVzZXRfY2hlY2tzIiwic2VsZl80IiwiY29sbGVjdCIsImNvbGxlY3RfdW5zZWVuX2Vycm9ycyIsImNoZWNrX2FsbF9zZWVuIiwicmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiIsInRhYmxlIiwic2VsZl81IiwiY29weV9vZl9ub3Rfc2VlbiIsImNvcHkiLCJkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUiLCJkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUiLCJzZyIsInRvcF9sZXZlbCIsImZpbGVfcGF0aCIsIm1haW5fbW9kdWxlX25hbWUiLCJlbmNsb3NpbmdfbW9kdWxlIiwiZW5jbG9zaW5nX3ZhbHVlIiwic3VibW9kdWxlX3BhdGgiLCJsb2NhdGVkIiwiZnVsbHlfcXVhbGlmaWVkX3BhdGgiLCJ2YWx1ZSQwIiwiZW50ZXJfZXhwciIsImVudGVyX21vZHVsZSIsIm1vZHVsZV9uYW1lIiwiZW50ZXJfdmFsdWUiLCJ2YWx1ZV9uYW1lIiwidG9fc3RyaW5nX3BhdGgiLCJ3aXRoX3N0cmluZ19wYXRoIiwidG9vbF9uYW1lIiwiaW5wdXRfbmFtZSIsImNvZGVfcGF0aCIsImV4dGVuc2lvbl9wb2ludF9sb2MiLCJiYXNlIiwiY29kZV9wYXRoJDAiLCJpbnB1dF9uYW1lJDAiLCJ0b29sX25hbWUkMCIsIndpdGhfbG9jX2FuZF9wYXRoIiwiY3R4dCIsIm1ha2UkMCIsImRlcml2ZWRfaXRlbV9sb2MiLCJpbmxpbmUiLCJjb2RlX3BhdGgkMSIsImlucHV0X25hbWUkMSIsInRvb2xfbmFtZSQxIiwid2l0aF9sb2NfYW5kX3BhdGgkMCIsImVudGVyIiwiZW50ZXJfb3B0IiwibmFtZV9vcHQiLCJtdGQiLCJtZCIsIm1iIiwidmFyX25hbWVzX29mIiwiZWNfZW50ZXJfbW9kdWxlX29wdCIsImRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIiwiZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvIiwiZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhIiwiZG9fbm90X2VudGVyX2xldF9tb2R1bGUiLCJ2YiIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInZhcl9uYW1lIiwiaW5fYmluZGluZ19jdHh0IiwicGF0X2Vycm9ycyIsInB2Yl9wYXQkMCIsImV4cHJfZXJyb3JzIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJsb2NfZXJyb3JzIiwicHZiX2xvYyQwIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwid2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsIndpdGhfbW9kdWxlX2RlY2xhcmF0aW9uIiwid2l0aF9tb2R1bGVfYmluZGluZyIsIm1lIiwid2l0aF9tb2R1bGVfZXhwciIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9kZXNjIiwid2l0aF92YWx1ZSIsImN0eHQkMCIsIm5hbWVfZXJyb3JzIiwid2l0aF9sZXRfbW9kdWxlIiwibW9kdWxlX2V4cHJfZXJyb3JzIiwibW9kdWxlX2V4cHIkMCIsImJvZHlfZXJyb3JzIiwiZGVzY19lcnJvcnMkMCIsInBleHBfZGVzYyQxIiwiZGVzY19lcnJvcnMiLCJwZXhwX2Rlc2MkMCIsInBleHBfbG9jJDAiLCJsb2Nfc3RhY2tfZXJyb3JzIiwicGV4cF9sb2Nfc3RhY2skMCIsInBleHBfYXR0cmlidXRlcyQwIiwidGFnIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFzdCIsImV4biQwIiwiSW5wdXRfdmVyc2lvbiIsImFzdCQwIiwiSW5wdXRfdmVyc2lvbiQwIiwiYXN0JDEiLCJhc3QkMiIsInJlYWQiLCJpbnB1dF9zb3VyY2UiLCJ3cml0ZSIsIm9jIiwiYWRkX3BweF9jb250ZXh0Iiwic2ckMCIsInN0JDAiLCJyZWFkX2JpbmFyeSIsInNpZ25hdHVyZSIsInN0cnVjdHVyZSIsImdldF9hc3QiLCJnZXRfaW5wdXRfbmFtZSIsInJ1bl9wcmVwcm9jZXNzb3IiLCJwcCIsImlucHV0Iiwib3V0cHV0IiwiY29tbWFuZCIsImVuZF9tYXJrZXJfc2lnIiwiZW5kX21hcmtlcl9zdHIiLCJleHRyYWN0X3ByZWZpeCIsInJlbW92ZV9sb2MiLCJyZW1vdmVfbG9jJDAiLCJwcmV2JDAiLCJwcmV2JDEiLCJkaWZmX2FzdHMiLCJnZW5lcmF0ZWQiLCJyb3VuZF90cmlwIiwid2l0aF90ZW1wX2ZpbGUiLCJmbjEiLCJmbjIiLCJvdXQiLCJkdW1wIiwiY21kIiwib2siLCJjbWQkMCIsInBhcnNlX3N0cmluZyIsIm1hdGNoX2xvb3AiLCJlbmRfcG9zIiwibWlzbWF0Y2hfaGFuZGxlciIsInNvdXJjZSIsImV4cGVjdGVkJDAiLCJzb3VyY2UkMCIsImxvYyQxIiwic291cmNlJDEiLCJleHBlY3RlZCQxIiwieSQwIiwiZG9fbWF0Y2giLCJnZXRfbG9jIiwiYXBwbHkiLCJ0b19zZXhwIiwiZ2V0X2xvYyQwIiwicHAkMCIsInRvX3NleHAkMCIsIm1hdGNoX3N0cnVjdHVyZV9yZXMiLCJtYXRjaF9zdHJ1Y3R1cmUiLCJtYXRjaF9zaWduYXR1cmVfcmVzIiwibWF0Y2hfc2lnbmF0dXJlIiwiZGVzYyIsImVxIiwiZ2V0X2V4dGVuc2lvbiIsInR5cGVfZGVjbCIsImUkMSIsImUkMiIsImEkMyIsImUkMyIsImEkNCIsImUkNCIsImEkNSIsImUkNSIsImEkNiIsImUkNiIsImEkNyIsImUkNyIsImEkOCIsImUkOCIsImEkOSIsImUkOSIsInZpcnR1YWxfcGF5bG9hZCIsIm1lcmdlX2F0dHJpYnV0ZXNfcmVzIiwicSQwIiwidCQxIiwicSQxIiwidCQyIiwibWVyZ2VfYXR0cmlidXRlcyIsIndpdGhfYXJnIiwiZmluZCIsImV4dCIsInNoaWZ0IiwiYXJnJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmciLCJwYXR0IiwiY29udmVydF9yZXMkMCIsImZvdW5kIiwiY29udmVydF9pbmxpbmVfcmVzIiwiY29udmVydF9pbmxpbmUiLCJjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUiLCJmaWx0ZXJfYnlfY29udGV4dCIsImV4cGFuZGVycyIsImV4cGFuZGVycyQwIiwiZXhwYW5kZXJzJDEiLCJ1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIiwiY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2VyIiwiZXJyb3JfbGlzdF90b19leGNlcHRpb24iLCJkZWNsYXJlX2lubGluZSIsImRlY2xhcmVfd2l0aF9wYXRoX2FyZyQwIiwiZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyIsImRlY2xhcmUkMSIsImRlY2xhcmVfaW5saW5lJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMSIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfcHB4X2ltcG9ydCIsImV4cGFuZCIsInNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IiwiYXR0cl9uYW1lJDAiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCQwIiwiZmlsdGVyIiwiZmllbGQiLCJmaWVsZCQwIiwic3BlY2lhbF9mdW5jdGlvbiIsImNvbnN0YW50Iiwic3VmZml4IiwiYXR0cl9zdHJfdHlwZV9kZWNsIiwiYXR0cl9zaWdfdHlwZV9kZWNsIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCIsImF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3N0cl90eXBlX2V4dCIsImF0dHJfc2lnX3R5cGVfZXh0IiwiYXR0cl9zdHJfZXhjZXB0aW9uIiwiYXR0cl9zaWdfZXhjZXB0aW9uIiwiYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdCIsIm5vcCIsInJlcGxhY2UiLCJpbnNlcnRfYWZ0ZXIiLCJtYXBfbm9kZV9yZWMiLCJzdXBlcl9jYWxsIiwiYmFzZV9jdHh0IiwiZW1iZWRfZXJyb3JzIiwiY29udmVydGVkIiwibWFwX25vZGVzIiwiaG9vayIsImluX2dlbmVyYXRlZF9jb2RlIiwiZ2VuZXJhdGVkX2NvZGUiLCJjb2RlIiwiZ2V0X2dyb3VwIiwiYXR0cjIiLCJ2YWxzJDAiLCJ2YWxzIiwicmV2X2NvbmNhdCIsInNvcnRfYXR0cl9ncm91cF9pbmxpbmUiLCJzb3J0X2F0dHJfaW5saW5lIiwiY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljIiwibm9wJDAiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJwY3NpZ19maWVsZHMiLCJwY3NpZ19zZWxmIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImZ1bmMkMCIsImxhYiIsIm9wdGlvbiIsIndpdGhfY29udGV4dCIsImV4cGFuZGVkIiwiZXhwYW5kX2NvbnN0YW50IiwidGV4dCIsImMkMCIsImV4biQxIiwiaWQkMCIsImdlbmVyYXRlZF9jb2RlJDAiLCJleG4kMiIsInN0aCQwIiwicnVsZXMiLCJzcGVjaWFsX2Z1bmN0aW9ucyIsInNwZWNpYWxfZnVuY3Rpb25zJDAiLCJjb25zdGFudHMiLCJwcHhfaW1wb3J0IiwiYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2RlY2xzIiwiYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xzIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHAiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscyIsImF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2V4dHMiLCJhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRzIiwiYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25zIiwiYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3NpZ19leGNlcHRpb25zIiwibWFwX25vZGUiLCJtYXBfbm9kZXMkMCIsImhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSIsImV4cGFuZGVkX2l0ZW1zIiwiZzEiLCJnMiIsInZhbHVlcyIsImdlbmVyYXRlZF9jb2RlX2JlZ2luIiwiZ2VuZXJhdGVkX2NvZGVfZW5kIiwicGFyZW4iLCJzdG9wIiwibWFrZV90ZXh0IiwiYmxvY2siLCJwcmludGVyIiwiaWR4IiwiY291bnRfbmV3bGluZXMiLCJza2lwX2JsYW5rX2VvbCIsImNvbnRlbnRzIiwiY251bSQxIiwiY251bSQwIiwicmVjb25jaWxlIiwic3R5bGVyIiwicmVwbHMkMyIsImlucHV0X2ZpbGVuYW1lIiwicmVwbHMiLCJyZXBscyQyIiwicmVwbCQwIiwicHJldiIsInJlcGxzJDAiLCJyZXBscyQxIiwicmVwbHMkNCIsIm91dHB1dF9uYW1lIiwiY29weV9pbnB1dCIsInVwX3RvIiwibGluZSIsImxhc3RfaXNfdGV4dCIsImlzX3RleHQiLCJsaW5lJDAiLCJsaW5lJDEiLCJsb29wJDAiLCJsaW5lJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzJDAiLCJsYXN0X2lzX3RleHQkMCIsImVuZF9jb25zZWN1dGl2ZV9yZXBscyIsInBvcyQxIiwibGFzdF9pc190ZXh0JDEiLCJwb3MkMiIsImxvb3BfY29uc2VjdXRpdmVfcmVwbHMiLCJ0bXBfZm4iLCJzYW5pdGl6ZSIsImJpbmRpbmdzIiwiQXN0IiwicXVvdGUiLCJxdW90ZWRfZXhwciQwIiwiYmluZGluZ19leHByJDAiLCJiaW5kaW5nX2V4cHIiLCJxdW90ZWRfZXhwciIsImJpbmRpbmciLCJta19hdHRyX25vbG9jIiwiaGlkZV9hdHRyaWJ1dGUiLCJmb2N1c19hdHRyaWJ1dGUiLCJoaWRlX3BhdHRlcm4iLCJmb2N1c19wYXR0ZXJuIiwiaGlkZV9leHByZXNzaW9uIiwiZm9jdXNfZXhwcmVzc2lvbiIsImVtcHR5IiwicmFuZ2VzIiwibm9kZV9sb2MiLCJub2RlX25hbWUiLCJ4X2xvYyIsInhfbmFtZSIsInAyJDAiLCJwMSQwIiwiaW5zZXJ0IiwiYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQiLCJmaWxlIiwic2FtZV9maWxlX3NvX2ZhciIsInNob3VsZF9pZ25vcmUiLCJvcmlnX2ZuYW1lIiwiZXh0cmFjdF9jb25zdHJhaW50IiwiZG9fY2hlY2siLCJjaGlsZHJlbnNfbG9jcyIsInNpYmxpbmdzX2xvY3MiLCJtYXhfcG9zJDAiLCJtaW5fcG9zJDAiLCJjaGlsZF9sb2MiLCJjaGlsZF9uYW1lIiwibDIiLCJsMSIsInlzIiwieXMkMCIsInhzJDAiLCJlbmZvcmNlX2ludmFyaWFudHMiLCJvZCIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImNlIiwibGFiZWxzIiwiZXhwcl9vIiwiY3RlIiwib3BuIiwiZV9sb2MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImNoaWxkc19sb2NzIiwiYXR0cnNfbG9jcyIsIm91dG1vc3RfbG9jIiwiaW5pdGlhbF9yZXMkMCIsInJlcyQxIiwiaW5pdGlhbF9yZXMiLCJyZXMkMCIsImN0cCIsInNpYmxpbmdzIiwiZXhlX25hbWUiLCJhZGRfYXJnIiwic3BlYyIsImRvYyIsImxvY19mbmFtZSIsInBlcmZvcm1fY2hlY2tzIiwicGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyIsInBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIiwiZGVidWdfYXR0cmlidXRlX2Ryb3AiLCJhcHBseV9saXN0IiwicHJlcHJvY2Vzc29yIiwibm9fbWVyZ2UiLCJyZXF1ZXN0X3ByaW50X3Bhc3NlcyIsInJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIiwidXNlX2NvbG9yIiwiZGlmZl9jb21tYW5kIiwicHJldHR5Iiwib3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIiwiY29ycmVjdGVkX3N1ZmZpeCIsImdldF9kZWZhdWx0X3BhdGgiLCJmbmFtZSQwIiwiZ2V0X2RlZmF1bHRfcGF0aF9zdHIiLCJnZXRfZGVmYXVsdF9wYXRoX3NpZyIsIm9mX3N0cmluZyIsImdpdmVuX3Rocm91Z2hfY2xpIiwic2V0IiwiaGFuZGxlcnMiLCJhZGRfaGFuZGxlciIsImFkZF9zaW1wbGVfaGFuZGxlciIsImFja25vd2xlZGdlX2Nvb2tpZXMiLCJwb3N0X2hhbmRsZXJzIiwiYWRkX3Bvc3RfaGFuZGxlciIsImNhbGxfcG9zdF9oYW5kbGVycyIsInRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtYXRpb24kMCIsImhhc19uYW1lIiwicHJpbnRfY2FsbGVyX2lkIiwiY2FsbGVyX2lkIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24iLCJlbmNsb3NlX2ltcGwiLCJlbmNsb3NlX2ludGYiLCJpbXBsIiwiaW50ZiIsImxpbnRfaW1wbCIsImxpbnRfaW50ZiIsInByZXByb2Nlc3NfaW1wbCIsInByZXByb2Nlc3NfaW50ZiIsImluc3RydW1lbnQiLCJzdGgkMSIsImFsaWFzZXMiLCJydWxlcyQwIiwiaW1wbCQwIiwiaW50ZiQwIiwicHJlcHJvY2Vzc19pbXBsJDAiLCJwcmVwcm9jZXNzX2ludGYkMCIsImN0JDAiLCJsb2Nfb2ZfbGlzdCIsImwkMiIsImZpcnN0IiwibWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMiLCJleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciIsImdlbl9oZWFkZXJfYW5kX2Zvb3RlciIsIndob2xlX2xvYyIsImZvb3RlciIsImhlYWRlciIsImxvY19oZWFkZXIiLCJsb2NfZm9vdGVyIiwibWFwX2ltcGwiLCJzdF93aXRoX2F0dHJzIiwibWFwX2ludGYiLCJzZ193aXRoX2F0dHJzIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfIiwiYWRkX2N0eHRfYXJnIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24kMCIsImxpbnRfaW1wbCQwIiwibGludF9pbnRmJDAiLCJlbmNsb3NlX2ltcGwkMCIsImVuY2xvc2VfaW50ZiQwIiwicmVnaXN0ZXJfY29kZV90cmFuc2Zvcm1hdGlvbiIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nXyQwIiwiZ2V0X3dob2xlX2FzdF9wYXNzZXMiLCJjdHMiLCJhZnRfaSIsImJlZl9pIiwicmVkdWNlZF90IiwiaW5zdHIiLCJ0cmFuc2YiLCJ0cmFuc2YkMCIsInRyYW5zZm9ybXMiLCJhZnRlcl9pbnN0cnMiLCJiZWZvcmVfaW5zdHJzIiwicHJlcHJvY2VzcyIsImxpbnRlcnMiLCJnZXRfZW5jbG9zZXJzIiwiaW1wbF9lbmNsb3NlcnMiLCJpbnRmX2VuY2xvc2VycyIsIm1lcmdlX2VuY2xvc2VyIiwiZW5jbG9zZXJzIiwiZm9vdGVycyIsImhlYWRlcnMiLCJoZWFkZXJzJDAiLCJmb290ZXJzJDAiLCJhcHBseV90cmFuc2Zvcm1zIiwibGludF9maWVsZCIsImRyb3BwZWRfc29fZmFyIiwibGludF9lcnJvcnMiLCJvbGRfZHJvcHBlZCIsImxpbnRfZXJyb3JzJDAiLCJlcnJvcnMkMSIsIm1vcmVfZXJyb3JzIiwibmV3X2Ryb3BwZWQiLCJwcmludF9kaWZmIiwid2hhdCIsImRpZmYiLCJkcm9wcGVkIiwiZXJyb3JfdG9fZXh0ZW5zaW9uIiwiZXh0JDAiLCJleG5fdG9fZXh0ZW5zaW9uIiwic29ydF9lcnJvcnNfYnlfbG9jIiwiZXJyb3IkMCIsIm1hcF9zdHJ1Y3R1cmVfZ2VuIiwid2l0aF9lcnJvcnMiLCJzb3J0ZWQiLCJzdCQxIiwidW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIiwidW51c2VkX2V4dGVuc2lvbl9lcnJvcnMiLCJub3Rfc2Vlbl9lcnJvcnMiLCJtYXBfc2lnbmF0dXJlX2dlbiIsInNnJDEiLCJtYXBfc2lnbmF0dXJlIiwidmVyc2lvbmVkX2Vycm9yZiIsImlucHV0X2ZpbGVfbmFtZSIsInJlbW92ZV9ub19lcnJvciIsIm5ld19mbiIsIm9sZF9mbiIsInJlbG9jYXRlX21hcHBlciIsInNldF9pbnB1dF9uYW1lIiwiZXh0cmFjdF9jb29raWVzIiwicHJlZml4JDEiLCJwcmVmaXgkMiIsImNvcnJlY3Rpb25zIiwiYWRkX3RvX2xpc3QiLCJyZWdpc3Rlcl9jb3JyZWN0aW9uIiwicHJvY2Vzc19maWxlX2hvb2tzIiwicmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2siLCJhbGwkMCIsInByb2Nlc3NfYXN0Iiwib3V0cHV0X21vZGUiLCJzZXRfaW5wdXQiLCJzZXRfa2luZCIsInNldF9vdXRwdXRfbW9kZSIsIm1vZGUiLCJtYXRjaCIsImFyZ19vZl9vdXRwdXRfbW9kZSIsInBhcnNlX2FwcGx5X2xpc3QiLCJtYXNrIiwiaGFuZGxlX2FwcGx5IiwiaGFuZGxlX2RvbnRfYXBwbHkiLCJpbnRlcnByZXRfbWFzayIsInNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIiwiaXNfY2FuZGlkYXRlIiwibmFtZXMkMCIsImlzX3NlbGVjdGVkIiwic2V0X2Nvb2tpZSIsInNoYXJlZF9hcmdzIiwiYXNfcHAiLCJzdGFuZGFsb25lX2FyZ3MiLCJnZXRfYXJncyIsInN0YW5kYWxvbmVfYXJncyQwIiwic3RhbmRhbG9uZV9tYWluIiwidXNhZ2UiLCJyZWxvY2F0ZSIsIm91dHB1dCQwIiwiZW1iZWRfZXJyb3JzJDAiLCJvdXRwdXRfbW9kZSQwIiwicmVwbGFjZW1lbnRzIiwiaG9vayQwIiwiZXhwZWN0X21pc21hdGNoX2hhbmRsZXIkMCIsImFzdF9pbnB1dF9uYW1lIiwiYXN0X2tpbmQiLCJmYWxsX2JhY2tfdmVyc2lvbiIsInVua25vd25fbWFnaWMiLCJmYWxsX2JhY2tfdmVyc2lvbiQwIiwidG1wZmlsZSIsImZhaWxlZF9jb21tYW5kIiwicHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQiLCJpbnB1dF9mbmFtZSIsImlucHV0X3ZlcnNpb24kMCIsImlucHV0X3ZlcnNpb24kMSIsImlucHV0X3ZlcnNpb24kMiIsIm1ldGFkYXRhIiwiaW5wdXRfY29udGVudHMiLCJ0ZXN0IiwibWFnaWNfbnVtYmVyIiwiY29ycmVjdGVkIiwiY29ycmVjdGlvbnMkMCIsIm1pc21hdGNoZXNfZm91bmQiLCJudWxsX2FzdCIsInBhcnNlX2lucHV0IiwicGFzc2VkX2luX2FyZ3MiLCJ2YWxpZF9hcmdzIiwiaW5jb3JyZWN0X2lucHV0X21zZyIsIm1zZyQwIiwicnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIiwiZmxhZ3NfYW5kX3Byb2dfbmFtZSIsImlucHV0X2ZuIiwib3V0cHV0X2ZuIiwicHJvZ19uYW1lX2FuZF9mbGFncyIsImFzdCQ0IiwiYXN0JDMiLCJzdGFuZGFsb25lIiwiYXJndiIsInJ1bl9hc19wcHhfcmV3cml0ZXIiLCJwcmV0dHkkMCIsImVuYWJsZV9jaGVja3MiLCJlbmFibGVfbG9jYXRpb25fY2hlY2siLCJkaXNhYmxlX2xvY2F0aW9uX2NoZWNrIiwibWFwX3N0cnVjdHVyZSIsInZhciQwIiwidmFyc19vZiIsImlnbiIsImFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMiLCJmcCIsIm1zIiwiYmluZHNfbW9kdWxlX25hbWVzIiwid2FybmluZ3MiLCJkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmkiLCJrZWVwX3czMl9pbXBsIiwia2VlcF93MzJfaW50ZiIsImtlZXBfdzMyX3NwZWMiLCJjb252X3czMl9zcGVjIiwia2VlcF93MzJfaW1wbCQwIiwia2VlcF93NjBfaW1wbCIsImtlZXBfdzYwX2ludGYiLCJrZWVwX3c2MF9zcGVjIiwiYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MiLCJhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyQwIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwicGFyYW0iLCJhcHBseV9hbGwiLCJlbnRyeSIsImdlbmVyYXRvcnMiLCJleHRfdG9faXRlbSIsImVtcHR5X2xhYmVsX2Vycm9yIiwiZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yIiwiYWNjZXB0ZWRfYXJncyIsInNwZWxsY2hlY2tfbXNnIiwidW5hY2NlcHRlZF9hcmd1bWVudCIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImFjdHVhbF9kZXJpdmVyX25hbWUiLCJkdXBfZXJyb3IiLCJkZXAiLCJkZXBfbmFtZSIsImxfZXJyIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJ4IiwiZGVmYXVsdCQwIiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJpIiwidmFycyIsInZhciQwIiwiYmluZGluZ3MiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ0eHQiLCJ2YXJzJDAiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsInRwIiwiYm9keSQwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJvcHQiLCJzdGgiLCJpbnRlcm5hbCIsIm4iLCJhcmciLCJhcmdzJDAiLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJpbml0IiwiZmllbGRfcmVmcyIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9jb25zdHJ1Y3RvciIsIm9iamVjdF9rZXlzIiwibyIsImFycmF5X2NvbnN0cnVjdG9yIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJkYXRlX2NvbnN0ciIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJleG5fd2l0aF9qc19iYWNrdHJhY2UiLCJuYW1lIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwiZSIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5cyIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidDEzIiwiY2FzdCIsInQxNCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsIm5vX2hhbmRsZXIiLCJoYW5kbGVyIiwicmVzIiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwibWFrZSIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsInQyOCIsInR5cCIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImgiLCJiIiwiZXYiLCJjYWxsYmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJjb25zdHIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheSIsInVpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJ2IiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiYmxvYl9jb25zdHIiLCJmaWx0ZXJfbWFwIiwicSIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwYXJhbSIsInByZSIsInNjcmlwdCIsInNlbGVjdCQwIiwic3R5bGUiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpdGxlIiwidHIiLCJ1bCIsImF1ZGlvIiwidmlkZW8iLCJ1bnNhZmVDb2VyY2VFdmVudCIsIm1vdXNlRXZlbnQiLCJrZXlib2FyZEV2ZW50Iiwid2hlZWxFdmVudCIsIm1vdXNlU2Nyb2xsRXZlbnQiLCJwb3BTdGF0ZUV2ZW50IiwibWVzc2FnZUV2ZW50IiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfY29kZSIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wiLCJvZl9ldmVudCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInJlbWFpbiIsInN0ZXAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsImZpbGUiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ0aW1lb3V0Iiwid29ya2VyIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJtc2ciLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsImF0dHJpYnMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJzZWFyY2giLCJyZXNfcHJlIiwibWF0Y2hlZF9zdHJpbmciLCJyIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGxfcmUiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGVfcmUiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiaW5kZXgiLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX3JlIiwiZmlsZV9yZSIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJub2RlIiwiYm94Iiwib2JzIiwicGVyZm9ybWFuY2VPYnNlcnZlciIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiayIsInJlbW92ZSIsImZpbmQiLCJqc29uIiwicmV2aXZlciIsImlucHV0X3Jldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dF9yZXZpdmVyIiwib3V0cHV0Iiwic3RyaW5nX29mX25hbWUiLCJuYW1lX29mX3N0cmluZyIsInJnYl9vZl9uYW1lIiwicmdiIiwiaHNsIiwic3RyaW5nX29mX3QiLCJiJDAiLCJnJDAiLCJyJDAiLCJiJDEiLCJnJDEiLCJyJDEiLCJiJDIiLCJnJDIiLCJyJDIiLCJhJDEiLCJoJDAiLCJoZXhfb2ZfcmdiIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwiaW5fcmFuZ2UiLCJqc190X29mX2pzX3N0cmluZyIsInJnYl9yZSIsInJnYl9wY3RfcmUiLCJyZ2JhX3JlIiwicmdiYV9wY3RfcmUiLCJoc2xfcmUiLCJoc2xhX3JlIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwieG1sbnMiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNldCIsImNyZWF0ZVN0b3AiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJ0OCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInN3aXRjaCQwIiwidGV4dEVsZW1lbnQiLCJ0ZXh0cGF0aCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3AiLCJpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwidG9fYXJyYXlmIiwiZiIsImEiLCJvZl9hcnJheWYiLCJ0b19saXN0Iiwib2ZfbGlzdCIsImwiLCJ0b19saXN0ZiIsIm9mX2xpc3RmIiwib3B0ZGVmIiwieCIsInRvX29wdGRlZiIsIngkMCIsInVub3B0ZGVmX2YiLCJkZWYiLCJ1bm9wdGRlZiIsImNvbnZkZWYiLCJ0b19vcHQiLCJvcHQiLCJjb252b3B0IiwianNfbG9nIiwibyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsInN0aCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwib2JqZWN0X2NzIiwiYXNzaWduIiwibzEiLCJvMiIsImFzc2lnbl9saXN0IiwicmVtb3ZlX3VuZGVmaW5lZCIsImtleXMiLCJrIiwib2JqIiwiY3JlYXRlIiwiYWRkIiwidiIsImFkZF9saXN0IiwiYWRkX2xpc3RmIiwibWFrZSIsIm1ha2VmIiwicmVtb3ZlIiwiZmluZCIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwiY3MiLCJqdGhlbjAiLCJlcnJvciIsInByb20iLCJwIiwiZXhuJDAiLCJlZiIsImVycm9yJDAiLCJqdGhlbiIsImp0aGVuMF9vcHQiLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibzMiLCJsb2dfc3RyMiIsInMxIiwiczIiLCJsb2dfc3RyMyIsInMzIiwiZGVidWciLCJkZWJ1ZzIiLCJkZWJ1ZzMiLCJkZWJ1Z19zdHIiLCJkZWJ1Z19zdHIyIiwiZGVidWdfc3RyMyIsIndhcm4iLCJ3YXJuMiIsIndhcm4zIiwid2Fybl9zdHIiLCJ3YXJuX3N0cjIiLCJ3YXJuX3N0cjMiLCJlcnJvcjIiLCJlcnJvcjMiLCJlcnJvcl9zdHIiLCJlcnJvcl9zdHIyIiwiZXJyb3Jfc3RyMyIsImJpZ0ludCIsIm9mX3N0cmluZyIsIm9mX2ludCIsImkiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZSIsIm9mX2Zsb2F0IiwidG9fbG9jYWxlX3N0cmluZyIsIm9wdGlvbnMiLCJuIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsInN0aCQwIiwic3RoJDEiLCJsaXN0ZW4iLCJzdGgkMiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwidHIiLCJjcmVhdGUiLCJzdG9yZSIsImFkZCIsImtleSIsInN0IiwieCIsInB1dCIsInJhbmdlIiwib2xvd2VyIiwib3VwcGVyIiwibG93ZXIiLCJ1cHBlciIsInVwcGVyJDEiLCJsb3dlciQwIiwidXBwZXIkMCIsImNvdW50IiwiayIsImdldCIsIm9mX2pzIiwianMiLCJqcyQwIiwiZ2V0X2FsbCIsImdldF9rZXkiLCJnZXRfYWxsX2tleXMiLCJkZWxldGUkMCIsIml0ZXIiLCJkaXJlY3Rpb24iLCJjIiwidDgwIiwiZm9sZCIsInN0YXJ0IiwiYWNjIiwiY2FsbGJhY2skMCIsInQ5NSIsIml0ZXJfa2V5cyIsInQxMTAiLCJmb2xkX2tleXMiLCJ0MTI0IiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4Iiwib3B0aW9ucyQwIiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJsZW5ndGgiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMDI2IiwiZXJyb3Jfc291cmNlXzA0MiIsImVycm9yX3NvdXJjZV8yMDYiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJ0X29mX3NleHAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXZhbF9mYWlsIiwibG9jIiwiZm10IiwicyIsImN1c3RvbV9wcmludGZfMDAxIiwiZXF1YWxfb3B0aW9uIiwiZXF1YWwiLCJhIiwiYiIsInkiLCJ4IiwiY3JlYXRlIiwiZXEiLCJ4cyQxIiwiczIiLCJzMSIsInNvcnRlZCIsInhzJDAiLCJsYXN0X3ZhbHVlJDEiLCJsYXN0X2tleSQxIiwiYWNjIiwibGFzdF9rZXkiLCJsYXN0X3ZhbHVlIiwieHMiLCJsYXN0X3ZhbHVlJDAiLCJsYXN0X2tleSQwIiwic29ydGVkJDAiLCJtYXAiLCJ0IiwiZiIsInYiLCJrIiwidG9fbWQ1Iiwib2ZfbWQ1Iiwic2V4cF9vZl90JDEiLCJ0X29mX3NleHAkMCIsInV1aWQiLCJ1IiwiaW50JDAiLCJwYWlyIiwibGlzdCIsImwiLCJjb25zdHJ1Y3RvciIsInRfb2Zfc2V4cCQxIiwib2ZfYV8wMzkiLCJzZXhwXzA0NCIsInRhZ18wNDUiLCJzZXhwX2FyZ3NfMDQ2IiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJzZXhwX2FyZ3NfMDkwIiwiYXJnMV8wOTIiLCJhcmcwXzA5MSIsInJlczBfMDkzIiwicmVzMV8wOTQiLCJzZXhwX2FyZ3NfMDUzIiwiYXJnMV8wNTUiLCJhcmcwXzA1NCIsInJlczBfMDU2IiwicmVzMV8wNTciLCJzZXhwX2FyZ3NfMDg1IiwiYXJnMF8wODYiLCJvZl9hXzAxMCIsInJlczBfMDg3IiwiZmllbGRfc2V4cHNfMDEzIiwic29ydGVkXzAxNCIsImR1cGxpY2F0ZXNfMDE2IiwiZXh0cmFfMDE3Iiwic2V4cF8wMTIiLCJmaWVsZF9zZXhwc18wMjAiLCJmaWVsZF9uYW1lXzAxOCIsInRhaWxfMDI5IiwieF8wMzAiLCJmaWVsZF9zZXhwXzAxOSIsInNleHBfMDI1IiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJmdmFsdWVfMDI3Iiwic29ydGVkXzAxNSIsInNleHBfYXJnc18wOTciLCJhcmcxXzA5OSIsImFyZzBfMDk4IiwicmVzMF8xMDAiLCJyZXMxXzEwMSIsInNleHBfYXJnc18wNjUiLCJhcmcwXzA3MSIsInNleHBfMDcwIiwiYXJnMV8wNjciLCJhcmcwXzA2NiIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMwXzA3MiIsInNleHBfYXJnc18wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwic2V4cF9hcmdzXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJzZXhwX2FyZ3NfMDc1IiwiYXJnMF8wODEiLCJzZXhwXzA4MCIsImFyZzFfMDc3IiwiYXJnMF8wNzYiLCJyZXMwXzA3OCIsInJlczFfMDc5IiwicmVzMF8wODIiLCJzZXhwX29mX3QkMiIsIm9mX2FfMTA4IiwiYXJnMV8xMTAiLCJhcmcwXzEwOSIsInJlczBfMTExIiwicmVzMV8xMTIiLCJhcmcxXzExNCIsImFyZzBfMTEzIiwicmVzMF8xMTUiLCJyZXMxXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzEyMyIsImFyZzFfMTIwIiwiYXJnMF8xMTkiLCJyZXMwXzEyMSIsInJlczFfMTIyIiwicmVzMF8xMjQiLCJhcmcwXzEyOSIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4IiwicmVzMF8xMzAiLCJhcmcwXzEzMSIsIm9mX2FfMDMxIiwic29ydGVkXzAzMyIsImJuZHNfMDMyIiwiYXJnMV8wMzYiLCJhcmcwXzAzNSIsInJlczBfMDM3IiwicmVzMV8wMzgiLCJhcmdfMDM0IiwiYm5kc18wMzIkMCIsInJlczBfMTMyIiwiYXJnMV8xMzQiLCJhcmcwXzEzMyIsInJlczBfMTM1IiwicmVzMV8xMzYiLCJhcmcxXzEzOCIsImFyZzBfMTM3IiwicmVzMF8xMzkiLCJyZXMxXzE0MCIsImFyZzBfMTQxIiwicmVzMF8xNDIiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJuIiwibiQwIiwidG9fZGlnZXN0IiwidG9fZGlnZXN0JDAiLCJ4JDIiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTk4IiwiYl8xOTkiLCJiXzIwMSIsImFfMjAwIiwiY21wX2EiLCJhXzIwMiIsImJfMjAzIiwiYV8xNDYiLCJiXzE0OSIsImJfMTQ3IiwiYV8xNDgiLCJhXzE1MiIsImFfMTUwIiwiYl8xNTMiLCJiXzE1MSIsImFfMTU0IiwiYl8xNTUiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsImFfMTYwIiwiYl8xNjEiLCJhXzE2MiIsImJfMTYzIiwidF8xNjUiLCJ0XzE2NCIsInRfMTY3IiwidF8xNjYiLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsInRfMTczIiwidF8xNzIiLCJ0XzE3NSIsInRfMTc0IiwiYV8xNzYiLCJiXzE3NyIsImFfMDAyIiwiYl8xNzkiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJhXzE4MiIsImJfMTgzIiwiYV8xODYiLCJhXzE4NCIsImJfMTg3IiwiYl8xODUiLCJuJDEiLCJhXzE4OCIsImJfMTg5IiwiYV8xOTIiLCJhXzE5MCIsImJfMTkzIiwiYl8xOTEiLCJuJDIiLCJhXzE5NCIsImJfMTk1IiwiYV8xOTYiLCJiXzE5NyIsInQwX29mX3NleHAiLCJzZXhwXzIwOCIsInRhZ18yMDkiLCJzZXhwX2FyZ3NfMjEwIiwiYXJnMF8yMTEiLCJyZXMwXzIxMiIsInNleHBfb2ZfdDAiLCJhcmcwXzIxMyIsInJlczBfMjE0IiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwic2V4cF9vZl90JDMiLCJvZl9zdHJpbmckMSIsInRvX3N0cmluZyQyIiwic3ltYm9sIiwiY29tcGFyZSQxIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQ0Iiwib2Zfc3RyaW5nJDIiLCJ0b19zdHJpbmckMyIsImNvbXBhcmF0b3IiLCJjb21wYXJlJDIiLCJzZXhwX29mX3QkNSIsImNyZWF0ZSQzIiwidHJpcHMiLCJnaWQiLCJ2cyIsIm1lbWJlcnMiLCJsb29rdXAiLCJnIiwic2NoZW1lIiwiY3VzdG9tX3ByaW50Zl8yODUiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwic2V4cF9vZl90JDYiLCJhcmcxXzI4NyIsImFyZzBfMjg2IiwicmVzMF8yODgiLCJyZXMxXzI4OSIsImFyZzFfMjkxIiwiYXJnMF8yOTAiLCJyZXMwXzI5MiIsInJlczFfMjkzIiwiYXJnMF8yOTgiLCJhcmcxXzI5NSIsImFyZzBfMjk0IiwicmVzMF8yOTYiLCJyZXMxXzI5NyIsInJlczBfMjk5IiwiYXJnMF8zMDQiLCJhcmcxXzMwMSIsImFyZzBfMzAwIiwicmVzMF8zMDIiLCJyZXMxXzMwMyIsInJlczBfMzA1IiwiYXJnMF8zMDYiLCJyZXMwXzMwNyIsImFyZzBfMzEyIiwiYXJnMV8zMDkiLCJhcmcwXzMwOCIsInJlczBfMzEwIiwidl8yNDUiLCJhcmcxXzI0NyIsImFyZzBfMjQ2IiwicmVzMF8yNDgiLCJyZXMxXzI0OSIsInZfMjUwIiwiYXJnMV8yNTIiLCJhcmcwXzI1MSIsInJlczBfMjUzIiwicmVzMV8yNTQiLCJyZXMxXzMxMSIsInJlczBfMzEzIiwiYXJnMF8zMTgiLCJhcmcxXzMxNSIsImFyZzBfMzE0IiwicmVzMF8zMTYiLCJyZXMxXzMxNyIsInJlczBfMzE5IiwiYXJnMV8zMjEiLCJhcmcwXzMyMCIsInJlczBfMzIyIiwicmVzMV8zMjMiLCJhcmcyXzMyNiIsImFyZzFfMzI1IiwiYXJnMF8zMjQiLCJtZW1iZXJzXzI3NSIsImxvY18yNzMiLCJnaWRfMjcxIiwiYm5kc18yNzAiLCJhcmcxXzI4MiIsImFyZzBfMjgxIiwicmVzMF8yODMiLCJhcmcxXzI3OCIsImFyZzBfMjc3IiwicmVzMF8yNzkiLCJyZXMxXzI4MCIsInJlczFfMjg0IiwiYXJnXzI3NiIsImJuZHNfMjcwJDAiLCJhcmdfMjc0IiwiYm5kc18yNzAkMSIsImFyZ18yNzIiLCJibmRzXzI3MCQyIiwicmVzMF8zMjciLCJyZXMxXzMyOCIsInJlczJfMzI5IiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImxvb2t1cCQwIiwiYV8zMzAiLCJiXzMzMSIsInRfMzMzIiwidF8zMzIiLCJ0XzMzNSIsInRfMzM0IiwiYXJnMV8zMzciLCJhcmcwXzMzNiIsInJlczBfMzM4IiwicmVzMV8zMzkiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl8zNDAiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfYXJyYXlfbG9vcCIsImFyIiwiZWxzX3Bvc19yZWYiLCJpIiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlX2hhc2h0YmwiLCJiaW5fd3JpdGVfa2V5IiwiYmluX3dyaXRlX3ZhbCIsInBsZW4iLCJjbnRfcmVmIiwiY29sbF9odGJsIiwicmVzX3BvcyIsImJpbl93cml0ZV9mbG9hdDMyX3ZlYyIsImJpbl93cml0ZV9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZV9mbG9hdDMyX21hdCIsIm0iLCJsZW4xIiwibGVuMiIsInBvcyQxIiwiYmluX3dyaXRlX2Zsb2F0NjRfbWF0IiwiYmluX3dyaXRlX2JpZ3N0cmluZyIsInMiLCJiaW5fd3JpdGVfdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVfaW50XzhiaXQiLCJiaW5fd3JpdGVfaW50XzE2Yml0IiwiYmluX3dyaXRlX2ludF8zMmJpdCIsImJpbl93cml0ZV9pbnRfNjRiaXQiLCJiaW5fd3JpdGVfaW50NjRfYml0cyIsImJpbl93cml0ZV9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IiwiYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImVsJDEiLCJtYXliZV9mbG9hdCIsImVsJDAiLCJmaXJzdCIsInJlcyIsImJpbl9yZWFkX2hhc2h0YmwiLCJiaW5fcmVhZF9rZXkiLCJiaW5fcmVhZF92YWwiLCJyZWFkX2t2X3BhaXIiLCJlbHMiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyIsInZlYyIsImJpbl9yZWFkX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQiLCJtYXQiLCJiaW5fcmVhZF9mbG9hdDY0X21hdCIsImJpbl9yZWFkX2JpZ3N0cmluZyIsImJpbl9yZWFkX3ZhcmlhbnRfaW50IiwiYmluX3JlYWRfaW50XzhiaXQiLCJiaW5fcmVhZF9pbnRfMTZiaXQiLCJiaW5fcmVhZF9pbnRfMzJiaXQiLCJiaW5fcmVhZF9pbnRfNjRiaXQiLCJiaW5fcmVhZF9pbnQ2NF9iaXRzIiwiYmluX3JlYWRfbmV0d29yazE2X2ludCIsImJpbl9yZWFkX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIiLCJiaW5fcmVhZF9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRfbmV0d29yazY0X2ludDY0IiwiYmluX3JlYWRfbWQ1IiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaGFwZV9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2hhcGVfaW50NjMiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2hhcGVfbmF0aXZlaW50IiwiYmluX3NoYXBlX25hdDAiLCJiaW5fc2hhcGVfZGlnZXN0IiwiYmluX3NoYXBlX2Zsb2F0MzJfdmVjIiwiYmluX3NoYXBlX2Zsb2F0NjRfdmVjIiwiYmluX3NoYXBlX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDMyX21hdCIsImJpbl9zaGFwZV9mbG9hdDY0X21hdCIsImJpbl9zaGFwZV9tYXQiLCJiaW5fc2hhcGVfYmlnc3RyaW5nIiwiYmluX3NoYXBlX2Zsb2F0YXJyYXkiLCJiaW5fc2hhcGVfdmFyaWFudF9pbnQiLCJiaW5fc2hhcGVfaW50XzhiaXQiLCJiaW5fc2hhcGVfaW50XzE2Yml0IiwiYmluX3NoYXBlX2ludF8zMmJpdCIsImJpbl9zaGFwZV9pbnRfNjRiaXQiLCJiaW5fc2hhcGVfaW50NjRfYml0cyIsImJpbl9zaGFwZV9uZXR3b3JrMTZfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyIiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0IiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaGFwZV9oYXNodGJsIiwieSIsImJpbl9zaGFwZV9mbG9hdF9hcnJheSIsImJpbl9zaGFwZV9sYXp5IiwiYmluX3NoYXBlX3BhaXIiLCJiaW5fc2hhcGVfdHJpcGxlIiwieiIsImJpbl9zaXplX3VuaXQiLCJiaW5fc2l6ZV9ib29sIiwiYmluX3NpemVfY2hhciIsImJpbl9zaXplX21kNSIsImJpbl9zaXplX2ludF9uYXQwIiwiYmluX3NpemVfaW50X25lZ2F0aXZlIiwiYmluX3NpemVfaW50IiwiYmluX3NpemVfaW50JDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfZmxvYXQiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl9zaXplX2ludDY0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fc2l6ZV91bml0JDAiLCJiaW5fc2l6ZV9ib29sJDAiLCJiaW5fc2l6ZV9jaGFyJDAiLCJiaW5fc2l6ZV9pbnQkMSIsImJpbl9zaXplX25hdDAkMCIsImJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyIsInNpemVfbGVuIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fc2l6ZV9tZDUkMSIsImJpbl9zaXplX2Zsb2F0JDAiLCJmIiwiYmluX3NpemVfaW50MzIkMCIsImJpbl9zaXplX2ludDY0JDAiLCJiaW5fc2l6ZV9uYXRpdmVpbnQiLCJiaW5fc2l6ZV9yZWYkMCIsImJpbl9zaXplX2VsIiwiYmluX3NpemVfbGF6eV90JDAiLCJiaW5fc2l6ZV9vcHRpb24kMCIsImJpbl9zaXplX3BhaXIkMCIsImJpbl9zaXplX2EiLCJiaW5fc2l6ZV9iIiwiYmluX3NpemVfdHJpcGxlJDAiLCJiaW5fc2l6ZV9jIiwiYmluX3NpemVfbGlzdCIsInNpemVfYWNjIiwibGVuX2FjYyIsImxlbl9hY2MkMCIsInNpemVfYWNjJDAiLCJiaW5fc2l6ZV9sZW4iLCJiaW5fc2l6ZV9mbG9hdGFycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheV9sb29wIiwidG90YWxfbGVuIiwidG90YWxfbGVuX3JlZiIsImJpbl9zaXplX2FycmF5IiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJiaW5fc2l6ZV9hcnJheV9ub19sZW5ndGgiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0X2FycmF5IiwiYmluX2Zsb2F0X2FycmF5IiwiYmluX3dyaXRlcl92YXJpYW50X2ludCIsImJpbl9yZWFkZXJfdmFyaWFudF9pbnQiLCJiaW5fdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVyX2ludF84Yml0IiwiYmluX3JlYWRlcl9pbnRfOGJpdCIsImJpbl9pbnRfOGJpdCIsImJpbl93cml0ZXJfaW50XzE2Yml0IiwiYmluX3JlYWRlcl9pbnRfMTZiaXQiLCJiaW5faW50XzE2Yml0IiwiYmluX3dyaXRlcl9pbnRfMzJiaXQiLCJiaW5fcmVhZGVyX2ludF8zMmJpdCIsImJpbl9pbnRfMzJiaXQiLCJiaW5fd3JpdGVyX2ludF82NGJpdCIsImJpbl9yZWFkZXJfaW50XzY0Yml0IiwiYmluX2ludF82NGJpdCIsImJpbl93cml0ZXJfaW50NjRfYml0cyIsImJpbl9yZWFkZXJfaW50NjRfYml0cyIsImJpbl9pbnQ2NF9iaXRzIiwiYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50IiwiYmluX25ldHdvcmsxNl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQiLCJiaW5fbmV0d29yazMyX2ludCIsImJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzIiLCJiaW5fbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50IiwiYmluX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0IiwiYmluX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZXJfYXJyYXlfbm9fbGVuZ3RoIiwiY252X3dyaXRlciIsImNudiIsInRwX2NsYXNzIiwiY252X3JlYWRlciIsInZ0YWciLCJmb3Jfc2hhcGUiLCJmb3Jfd3JpdGVyIiwiZm9yX3JlYWRlciIsImJpbl93cml0ZV9zaXplX2hlYWRlciIsImJpbl9yZWFkX3NpemVfaGVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX2R1bXAiLCJvcHQiLCJ3cml0ZXIiLCJzdGgiLCJoZWFkZXIiLCJwb3NfbGVuIiwidG90X2xlbiIsInBvc19sZW4kMCIsImJ1ZiQwIiwiYnVmJDEiLCJiaW5fcmVhZF9zdHJlYW0iLCJtYXhfc2l6ZSIsInJlYWQiLCJyZWFkZXIiLCJtYXhfc2l6ZSQwIiwibXNnIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJtYXliZV9hbm5vdGF0ZV9zaGFwZSIsIm1heWJlX3V1aWQiLCJzaGFwZSIsInV1aWQiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ0IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2hhcGVfZWwiLCJiaW5fd3JpdGVyIiwiYmluX3JlYWRlciIsInR5cGVfY2xhc3MiLCJiaW5fc2hhcGVfZWwxIiwiYmluX3NoYXBlX2VsMiIsImJpbl9zaXplX2VsMSIsImJpbl9zaXplX2VsMiIsImJpbl93cml0ZV9lbDEiLCJiaW5fd3JpdGVfZWwyIiwiYmluX3JlYWRfZWwxIiwiYmluX3JlYWRfZWwyIiwiYmluX3dyaXRlcjEiLCJiaW5fd3JpdGVyMiIsImJpbl9yZWFkZXIxIiwiYmluX3JlYWRlcjIiLCJ0eXBlX2NsYXNzMSIsInR5cGVfY2xhc3MyIiwiYmluX3NoYXBlX2VsMyIsImJpbl9zaXplX2VsMyIsImJpbl93cml0ZV9lbDMiLCJiaW5fcmVhZF9lbDMiLCJiaW5fd3JpdGVyMyIsImJpbl9yZWFkZXIzIiwidHlwZV9jbGFzczMiLCJtYXliZV9jYWxsZXJfaWRlbnRpdHkiLCJ3aXRoX21vZHVsZV9uYW1lIiwibW9kdWxlX25hbWUiLCJmdW5jdGlvbl9uYW1lIiwibW9kdWxlX25hbWUkMCIsInJhaXNlX3JlYWRfdG9vX211Y2giLCJyYWlzZV9yZWFkX25vdF9lbm91Z2giLCJzaXplX3JlZiIsImlkeCIsInJlc3VsdCIsInQxIiwidDIiLCJ0MyIsImJpbl9yZWFkX3VuaXQkMCIsInZpbnQiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZF9zdHJpbmckMCIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZF9mbG9hdGFycmF5JDAiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwic2V4cF9vZl90Iiwib2ZfYV8wMDMiLCJzdGFydF9hIiwiZW5kX2EiLCJ3cml0dGVuIiwiZXhwZWN0ZWRfc2l6ZSIsIm9mX2JpbmFibGUiLCJ0b19iaW5hYmxlIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ0b19vcGFxdWUiLCJibG9iIiwib2Zfb3BhcXVlX2V4biIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQwIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsInN0cmluZ19vZl9iaWdzdHJpbmciLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJ0b19vcGFxdWUkMCIsImJpbl93cml0ZXJfdiIsIm9mX29wYXF1ZV9leG4kMCIsImJpbl9yZWFkZXJfdiIsImVycm9yIiwiY29tcGFyZSQxIiwic2V4cF9vZl90JDEiLCJiaW5fc2l6ZV90JDUiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQyIiwicHJlX3Rlc3RfaG9vayIsIm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2giLCJ0IiwiZW5hYmxlX2V2ZXJ5dGhpbmciLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0X2Vudl92YXIiLCJ0b19zdHJpbmciLCJjb21iaW5lIiwidDEiLCJ0MiIsImNvbWJpbmVfYWxsIiwidHMiLCJ0ZXN0X21vZHVsZXNfcmFuIiwidGVzdF9tb2R1bGVzX2ZhaWxlZCIsInRlc3RzX3JhbiIsInRlc3RzX2ZhaWxlZCIsImR5bmFtaWNfbGliIiwiYWN0aW9uIiwiZm9yY2VfZHJvcCIsImdldCIsImN1cnJlbnQiLCJmb3VuZF90ZXN0IiwiaXNfY3VycmVudCIsInAiLCJjdXJyZW50JDAiLCJjdXJyZW50X3RhZ3MiLCJ0IiwibSIsInZlcmJvc2UiLCJzdHJpY3QiLCJzaG93X2NvdW50cyIsImxpc3RfdGVzdF9uYW1lcyIsImRlbGF5ZWRfZXJyb3JzIiwic3RvcF9vbl9lcnJvciIsImxvZyIsInRpbWVfc2VjIiwidXNlX2NvbG9yIiwiaW5fcGxhY2UiLCJkaWZmX2NvbW1hbmQiLCJzb3VyY2VfdHJlZV9yb290IiwiYWxsb3dfb3V0cHV0X3BhdHRlcm5zIiwiZGlzcGxheWVkX2Rlc2NyIiwiZGVzY3IiLCJmaWxlbmFtZSIsImxpbmUiLCJzdGFydF9wb3MiLCJlbmRfcG9zIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJzIiwic3RyIiwiZmlsZSIsImluZGV4IiwiaW5kZXgkMCIsImkiLCJmaWxlbmFtZSQwIiwiaW5kZXhfc3RyaW5nIiwiaW5kZXgkMSIsInRhZyIsImwiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiZGVzY3IkMCIsImNvbXBsZXRlX3RhZ3MiLCJ1c2VkIiwibGluZV9udW1iZXJfb3B0IiwicG9zaXRpb25fc3RhcnQiLCJlbmRfb2ZfZGVmX2ZpbGVuYW1lIiwibGluZV9udW1iZXIiLCJmb3VuZCIsInJlcSIsImRyb3BwZWQiLCJkZXNjciQxIiwic3Vic3RyaW5nIiwic2hvdWxkX3J1biIsImRlc2NyJDIiLCJjaCIsInJlc3VsdCQwIiwiY2FtbF9yYW5kb21fc3RhdGUiLCJiYXNlX3JhbmRvbV9zdGF0ZSIsInJlc3VsdCIsImJhY2t0cmFjZSQwIiwiZXhuX3N0ciIsInNlcCIsInNldF9saWJfYW5kX3BhcnRpdGlvbiIsInN0YXRpY19saWIiLCJ3aGljaF90ZXN0cyIsInJlcXVpcmVzX3BhcnRpdGlvbiIsInVuc2V0X2xpYiIsInRlc3QiLCJiIiwidGVzdF91bml0IiwidGVzdF9tb2R1bGUiLCJwYXJ0aWFsX3RhZ3MiLCJwcmV2IiwieCIsImUkMCIsImUiLCJzdW1tYXJpemUiLCJrIiwiYWNjIiwiY291bnQiLCJjb3VudF90ZXN0X21vZHVsZXMiLCJ1bnVzZWRfdGVzdHMiLCJlcnJvcnMiLCJ1c2VfY29sb3IkMCIsImluX3BsYWNlJDAiLCJkaWZmX2NvbW1hbmQkMCIsInNvdXJjZV90cmVlX3Jvb3QkMCIsImFsbG93X291dHB1dF9wYXR0ZXJucyQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJvcHQiLCJmaWxlIiwic3RoIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiYnVmZmVyIiwiY2h1bmtfc2l6ZSIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJzdGgkMCIsImFwcGVuZCIsInN0aCQxIiwiZmFpbF9pZl9leGlzdHMiLCJzdGgkMiIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxpc3QkMCIsIndpZHRoIiwibGVmdCIsImxlZnRfY29sdW1uX3dpZHRoIiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwicmVmbCIsImNvbnYiLCJ4IiwibGlmdCIsImNvbXBhcmUiLCJhIiwiYiIsImVxdWFsIiwidWlkIiwibmV4dCIsIm5hbWUiLCJjb2RlIiwiaGFzaCIsInN0YXRpYyQwIiwiY29tcGFyZSQwIiwiazEiLCJrMiIsImNtcCIsImIkMCIsImEkMCIsInlzIiwieSIsInhzIiwibiIsImVxdWFsJDAiLCJoYXNoJDAiLCJzdGF0aWMkMSIsImtleSIsInQiLCJ1aWQkMCIsIm5hbWUkMCIsImNyZWF0ZSIsIm9wdCIsInN0aCIsInNhbWUiLCJubTEiLCJubTIiLCJzYW1lX3dpdG5lc3MiLCJzYW1lX3dpdG5lc3NfZXhuIiwiaW50JDAiLCJtZW0iLCJ0YWJsZSIsInNldCIsImRhdGEiLCJmaW5kIiwiZGF0YSQwIiwiZmFpbCIsInVpZF9hIiwidWlkX2IiLCJtc2ciLCJ3aXRuZXNzIiwidHlwZW5hbWVfb2ZfdCIsImMiLCJkIiwiZSIsImxhYmVsIiwiYXJpdHkiLCJhcmdzX2xhYmVscyIsImluZGV4Iiwib2NhbWxfcmVwciIsInR5aWQiLCJ0cmF2ZXJzZSIsImludGVybmFsX3VzZV9vbmx5IiwibGVuZ3RoIiwidGFnIiwiaXNfcG9seW1vcnBoaWMiLCJ2YWx1ZSIsImZvbGQiLCJpbml0IiwiZiIsImludGVybmFsX3VzZV9vbmx5JDAiLCJsYWJlbCQwIiwiaW5kZXgkMCIsImdldCIsImlzX211dGFibGUiLCJ0eWlkJDAiLCJ0cmF2ZXJzZSQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMSIsInR5cGVuYW1lX29mX3QkMCIsImxlbmd0aCQwIiwiZmllbGQiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImNyZWF0ZSQwIiwiZm9sZCQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMiIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsIm5hbWUkNCIsIm5hbWUkNSIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwibmFtZSQxNSIsIm5hbWUkMTYiLCJuYW1lJDE3IiwibmFtZSQxOCIsIm5hbWUkMTkiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2Zfc3RyaW5nIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX2xpc3QiLCJ0eXBlbmFtZV9vZl9hcnJheSIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfdHVwbGUwIiwidHlwZW5hbWVfb2ZfdHVwbGUyIiwidHlwZW5hbWVfb2ZfdHVwbGUzIiwidHlwZW5hbWVfb2ZfdHVwbGU0IiwidHlwZW5hbWVfb2ZfdHVwbGU1IiwicmVwIiwicmVwJDAiLCJyZXAkMSIsInJlcCQyIiwicmVwJDMiLCJyZXAkNCIsIm5hbWUkMjAiLCJhcml0eSQwIiwiYyQwIiwiYiQxIiwiYSQxIiwiZCQwIiwiYyQxIiwiYiQyIiwiYSQyIiwidHlwZW5hbWVfb2ZfdCQxIiwicm5nIiwiZG9tIiwicmVwJDUiLCJyZXAkNiIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsInIxIiwicjIkMCIsInIxJDAiLCJyMiQxIiwieCQwIiwicjEkMSIsInIyJDIiLCJ4JDEiLCJyMSQyIiwicjIkMyIsIngkMiIsInIxJDMiLCJyMiQ0IiwieCQzIiwicm5nMSIsImRvbTEiLCJybmcyIiwiZG9tMiIsInQxJDEiLCJ0MiQyIiwiYjIiLCJhMiIsImIxIiwiYTEiLCJjMiIsImIyJDAiLCJhMiQwIiwiYzEiLCJiMSQwIiwiYTEkMCIsImQyIiwiYzIkMCIsImIyJDEiLCJhMiQxIiwiZDEiLCJjMSQwIiwiYjEkMSIsImExJDEiLCJlMiIsImQyJDAiLCJjMiQxIiwiYjIkMiIsImEyJDIiLCJlMSIsImQxJDAiLCJjMSQxIiwiYjEkMiIsImExJDIiLCJyMSQ0IiwicjIkNSIsInIxJDUiLCJyMiQ2IiwibmFtZTEiLCJyMiQ3IiwibmFtZTIiLCJyMSQ3IiwieCQ0IiwidDEkMyIsInQyJDMiLCJ0MiQ0IiwicjEkNiIsInQxJDIiLCJyMiIsInQyJDEiLCJwcm9vZiIsImhlYWQiLCJ0JDAiLCJ0JDEiLCJ0eXBlcmVwX29mX2ludCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX3JlZiIsInR5cGVyZXBfb2ZfZnVuY3Rpb24iLCJ0eXBlcmVwX29mX3R1cGxlMCIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlNCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidmFsdWVfdHVwbGUwIiwidHlwZW5hbWVfb2ZfaW50NjMiLCJ0eXBlcmVwX29mX2ludDYzIiwicmVwcl9vZl9wb2x5X3ZhcmlhbnQiLCJ2YXJpYW50Iiwic2l6ZSIsInJlcHIiLCJoYXNoX3ZhcmlhbnQiLCJzIiwiYWNjdSIsImkiLCJkb3VibGVfYXJyYXlfdmFsdWUiLCJkb3VibGUkMCIsInNpbXBsZSIsIm1hcF92YXJpYW50IiwibWFwIiwidHlwZW5hbWUiLCJwb2x5bW9ycGhpYyIsInRhZyQwIiwiZmN0IiwiayIsInRhZ3MiLCJhdGFnIiwiYnRhZyIsIm1hcF9yZWNvcmQiLCJyZWNvcmQiLCJmaWVsZCQwIiwiZmllbGRzIiwiZ2V0JDAiLCJhZmllbGQiLCJiZmllbGQiLCJyZXF1aXJlZCIsInRhYmxlJDAiLCJjaGVja19kZXBlbmRlbmNpZXMiLCJpbXBsZW1lbnRzJDAiLCJtZXNzYWdlIiwicmVwbGFjZSQwIiwibWVtJDAiLCJ0YWJsZTAiLCJ0YWJsZTEiLCJ0YWJsZTIiLCJ0YWJsZTMiLCJ0YWJsZTQiLCJ0YWJsZTUiLCJpc19yZWdpc3RlcmVkIiwiaWRlbnQiLCJ1bml0IiwicmVnaXN0ZXIwIiwiY29tcHV0ZSIsInJlZ2lzdGVyMSIsInJlZ2lzdGVyMiIsInJlZ2lzdGVyMyIsInJlZ2lzdGVyNCIsInJlZ2lzdGVyNSIsInJlZ2lzdGVyIiwidHlwZXJlcF9vZl9hIiwib2ZfdHlwZXJlcCIsImNvbnRleHQiLCJtZW1vX3RhYmxlIiwicmVwJDExIiwicmVwJDEyIiwicmVwJDEzIiwicmVwJDE0IiwicmVwJDE1IiwidHVwbGUiLCJyYSIsInJiIiwicmEkMCIsInJiJDAiLCJyYyIsInJhJDEiLCJyYiQxIiwicmMkMCIsInJkIiwicmEkMiIsInJiJDIiLCJyYyQxIiwicmQkMCIsInJlIiwiY29udGVudCIsIm5hbWVkIiwic2hhcmVkIiwiY3VzdG9tIiwiY3VzdG9tJDAiLCJjdXN0b20kMSIsInJlcCQ3IiwiY3VzdG9tJDIiLCJjdXN0b20kMyIsInJlcCQ4IiwiY3VzdG9tJDQiLCJjdXN0b20kNSIsInJlcCQ5IiwidHlwZW5hbWVfb2ZfdCQyIiwiY3VzdG9tJDYiLCJjdXN0b20kNyIsInJlcCQxMCIsInR5cGVuYW1lX29mX3QkMyIsImN1c3RvbSQ4IiwiY3VzdG9tJDkiLCJjb21wdXRhdGlvbiIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIiwic2hhcmUiLCJvZl9wMSIsIm9mX3AyIiwib2ZfcDMiLCJvZl9wNCIsIm9mX3A1IiwidHlwZW5hbWVfb2ZfbmFtZWQiLCJ0eXBlcmVwX29mX3QiLCJlcnJvcl9zb3VyY2VfMDI0IiwiaGFzaF9mb2xkX3QiLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsIm1pbiIsIm1heCIsImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJiZXR3ZWVuIiwiY2xhbXBfZXhuIiwiY2xhbXAiLCJjb21wYXJhdG9yIiwicHAiLCJoYXNoYWJsZSIsImVxdWFsIiwicmVsYXRpdmVfdG8iLCJkaXIiLCJ0IiwidiIsImV4biQwIiwiZXhuIiwiZGlyX29yX2Vycm9yIiwiaW5pdGlhbF9kaXIiLCJ0X29mX3NleHAkMCIsInNleHBfMDAyIiwiZmllbGRfc2V4cHNfMDAzIiwiZmlsZW5hbWVfMDA0IiwibGluZV9udW1iZXJfMDA2IiwibGluZV9zdGFydF8wMDgiLCJzdGFydF9wb3NfMDEwIiwiZW5kX3Bvc18wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI2IiwiZmllbGRfc2V4cF8wMTckNSIsImZpZWxkX3NleHBfMDE3IiwieF8wMjciLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMjIiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDE3JDQiLCJmdmFsdWVfMDE5IiwiZW5kX3Bvc18wMTMiLCJzdGFydF9wb3NfMDExIiwibGluZV9zdGFydF8wMDkiLCJsaW5lX251bWJlcl8wMDciLCJmaWxlbmFtZV8wMDUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDM3Iiwic3RhcnRfcG9zXzAzNSIsImxpbmVfc3RhcnRfMDMzIiwibGluZV9udW1iZXJfMDMxIiwiZmlsZW5hbWVfMDI5IiwiYXJnXzAzOCIsImJuZHNfMDI4IiwiYXJnXzAzNiIsImJuZHNfMDI4JDAiLCJhcmdfMDM0IiwiYm5kc18wMjgkMSIsImFyZ18wMzIiLCJibmRzXzAyOCQyIiwiYXJnXzAzMCIsImJuZHNfMDI4JDMiLCJjb21wYXJlJDAiLCJhXzAzOSIsImJfMDQwIiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwiZmlsZW5hbWUiLCJvZl9zb3VyY2VfY29kZV9wb3NpdGlvbiIsInBvcyIsInNleHBfb2ZfdCQxIiwiY29tcGFyZSQyIiwidG9fc3RyaW5nJDAiLCJvZl9zdHJpbmckMCIsInMiLCJpIiwib2ZfYV8wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImNtcF9hIiwiYV8wMDciLCJiXzAwOCIsImFfMDA5IiwiYl8wMTAiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiZ2V0X2N1cnJlbnQiLCJzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXQiLCJsb2NhdGlvbiIsInBvcyIsInByZXZfcG9zIiwicHJldl9wb3MkMCIsImxlbiIsImJhc2ljX2ZsdXNoIiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dCIsImluc3RhbmNlIiwidGVzdHNfcnVuJDAiLCJzeW1ib2xfYmluZCIsInJldHVybiQwIiwiZmx1c2giLCJleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUiLCJzIiwiZ2V0X291dHB1dHNfYW5kX2NsZWFudXAiLCJsYXN0X29mcyIsIm5leHRfb2ZzIiwibG9jIiwiYWNjIiwib2ZzIiwib3V0cHV0cyIsInRyYWlsaW5nX291dHB1dCIsInNhdmVfb3V0cHV0IiwidHJhaWxpbmciLCJibG9ja3MiLCJmaW5hbF9mbHVzaCIsIm9wdCIsImsiLCJzdGgiLCJjb3VudCIsIm1heF9hdHRlbXB0cyIsInJ1biQwIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJhcHBlbmQiLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4IiwiYmluZCIsInQiLCJmIiwidG9fcnVuIiwic2FuaXRpemUiLCJzIiwicnVuIiwiZmx1c2hlZCIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsIm9wdCIsInN0aCIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyIsInRvY3MkMCIsInRvYyIsImZvcmdldF90b2NzIiwiZm9yZ2V0X3RvYyQwIiwiZm9yZ2V0X3QiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJlbXB0eSIsImdldF9tYW55Iiwic3RhY2skMCIsInN0YWNrIiwiZW1wdHkkMCIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5dGFibGVzaXplIiwiY2FtbF9wYXJzZXJfZW52IiwiXzEiLCJfMiIsInl5YWN0IiwieXl0YWJsZXMiLCJzZXhwIiwibGV4ZnVuIiwibGV4YnVmIiwic2V4cF9vcHQiLCJzZXhwcyIsInJldl9zZXhwcyIsInNleHBzX2FicyIsIm9jYW1sX2xleF90YWJsZXMiLCJidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsInNjYW5fc3RyaW5nIiwibG9jcyIsImxvY3MkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJsb2NzJDEiLCJsb2NzJDIiLCJzdGFydCIsImdlbl9sb2FkX3NleHBfbG9jIiwidW5pdCIsIm9mX2ludF9zdHlsZSIsIm9mX2Zsb2F0X3N0eWxlIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX21hY2giLCJ0b19zdHJpbmdfaHVtIiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsImRlZmF1bHRfaW5kZW50IiwibWVzc2FnZSIsImNvbXBhcmUiLCJlcXVhbCIsInRfc2V4cF9ncmFtbWFyIiwid2l0aF9uZXdfYnVmZmVyIiwib2MiLCJvdXRwdXRfaHVtIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJpbmRlbnQiLCJvdXRwdXRfbWFjaCIsInBybmciLCJ0ZW1wX2ZpbGVfbmFtZSIsInByZWZpeCIsInN1ZmZpeCIsInYiLCJyYW5kX3N0YXRlIiwicmV0Iiwicm5kIiwib3Blbl90ZW1wX2ZpbGUiLCJvcHQiLCJzdGgiLCJwZXJtIiwiY291bnRlciIsIm5hbWUiLCJlJDAiLCJlIiwiY291bnRlciQwIiwic2F2ZV9vZl9vdXRwdXQiLCJvdXRwdXRfZnVuY3Rpb24iLCJmaWxlIiwidG1wX25hbWUiLCJvdXRwdXRfc2V4cF9ubCIsImRvX291dHB1dCIsInNhdmVfaHVtIiwic2F2ZV9tYWNoIiwib3V0cHV0X3NleHBzX25sIiwic2F2ZV9zZXhwc19odW0iLCJzYXZlX3NleHBzX21hY2giLCJzY2FuX3NleHAiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9zZXhwcyIsInNjYW5fcmV2X3NleHBzIiwiZ2V0X21haW5fYnVmIiwiYnVmJDAiLCJidWYkMSIsInNjYW5fZm9sZF9zZXhwcyIsImluaXQiLCJtYWluIiwiYWNjIiwiYWNjJDAiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBzX2NvbnYiLCJjb2xsIiwic2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UiLCJjb250YWluaW5nX3NleHAiLCJsb2NhdGlvbiIsImludmFsaWRfc2V4cCIsImV4biIsIngkMCIsIngkMSIsIngkMiIsImdldF9zZXhwIiwiZ2V0X3JhbmdlIiwicmFuZ2UiLCJzZXhwX29mX2NvbnYiLCJzZXhwX29mX2EiLCJhIiwiZmluZF9zZXhwIiwiYW5ub3Rfc2V4cCIsImxvb3AiLCJzdWJfc2V4cCIsImFubm90cyIsInJlcyIsImV4biQwIiwiaW52YWxpZF9zZXhwJDAiLCJjcmVhdGUiLCJ0ZXh0X2xpbmUiLCJzdGgkMCIsInRleHRfY2hhciIsInN0aCQxIiwiYnVmX3BvcyIsInN0aCQyIiwiZ2xvYmFsX29mZnNldCIsImZhaWwiLCJtc2ciLCJ3aXRoX2J1Zl9wb3MiLCJwZSIsInBwb3MiLCJhbm5vdGF0ZV9zZXhwIiwiaXRlciIsInN0YXJ0X3BvcyQwIiwiYW5ub3QiLCJlbmRfcG9zJDAiLCJyYWlzZV9mb3VuZCIsInN0YXRlIiwicmFpc2VfZm91bmQkMCIsInBvc2l0aW9ucyIsInBhcnNlX3Bvc19vZl9zdGF0ZSIsInJ1bl9mZWVkX2xvb3AiLCJzdGFjayIsImxlbiIsInN0ciIsInN0cl9sZW4iLCJwb3NfbGVuIiwibWF4X3BvcyIsInByZXZpb3VzX29mZnNldCIsInN0YWNrJDAiLCJyZXN1bHQiLCJvZmZzZXQiLCJuZXh0X3BvcyIsImVyciIsInBhcnNlX3N0YXRlIiwicGFyc2VfZXJyb3IiLCJ1c2VkX3JlZiIsInBhcnNlX2Z1biIsImNvbnRfc3RhdGUiLCJwYXJzZSIsInBhcnNlX3BvcyIsImxlbiQwIiwicmFpc2VfZm91bmQkMSIsImxlbmd0aCIsInVuc2FmZV9mZWVkX2xvb3AiLCJzdGFjayQxIiwicG9zJDEiLCJwYXJzZV9zdHIiLCJyYWlzZV9mb3VuZCQyIiwibGVuZ3RoJDAiLCJ1bnNhZmVfZmVlZF9sb29wJDAiLCJwYXJzZV9zdHJfYW5ub3QiLCJyYWlzZV9mb3VuZCQzIiwibGVuZ3RoJDEiLCJ1bnNhZmVfZmVlZF9sb29wJDEiLCJwYXJzZV9iaWdzdHJpbmciLCJyYWlzZV9mb3VuZCQ0IiwibGVuZ3RoJDIiLCJ1bnNhZmVfZmVlZF9sb29wJDIiLCJwYXJzZV9iaWdzdHJpbmdfYW5ub3QiLCJta190aGlzX3BhcnNlIiwibXlfcGFyc2UiLCJwYXJzZV9wb3MkMCIsInBhcnNlX3BvcyQxIiwiZmVlZF9lbmRfb2ZfaW5wdXQiLCJ0aGlzX3BhcnNlIiwid3NfYnVmIiwiZ2VuX2lucHV0X3NleHAiLCJpYyIsInRoaXNfcGFyc2UkMSIsInNleHAkMCIsInRoaXNfcGFyc2UkMCIsImlucHV0X3NleHAiLCJnZW5faW5wdXRfcmV2X3NleHBzIiwicmV2X3NleHBzX3JlZiIsImJ1Zl9sZW4iLCJsZW4kMiIsInRoaXNfcGFyc2UkMiIsIm5fcGFyc2VkIiwibmV3X2xlbiIsImxlbiQxIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJvZl9zdHJpbmdfYmlnc3RyaW5nIiwibG9jIiwiZ2V0X2xlbiIsImdldF9zdWIiLCJjb250X3N0YXRlX3N0ciIsIm9mX3N0cmluZyIsIm9mX3N0cmluZ19tYW55IiwiZ2V0X2JzdHJfc3ViX3N0ciIsImJzdHIiLCJpIiwiYnN0cl93c19idWYiLCJvZl9iaWdzdHJpbmciLCJnZW5fbG9hZF9yZXZfc2V4cHMiLCJleGMkMCIsImV4YyIsImxvYWRfcmV2X3NleHBzIiwibG9hZF9zZXhwcyIsImdlbl9sb2FkX3NleHAiLCJzdHJpY3QiLCJ0aGlzX3BhcnNlJDQiLCJzZXhwJDEiLCJ0aGlzX3BhcnNlJDMiLCJjb250X3N0YXRlJDAiLCJsb2FkX3NleHAiLCJnZXRfc2V4cCQwIiwiZ2V0X3JhbmdlJDAiLCJzZXhwX29mX2NvbnYkMCIsImZpbmRfc2V4cCQwIiwiaW5wdXRfcmV2X3NleHBzJDAiLCJpbnB1dF9zZXhwJDAiLCJpbnB1dF9zZXhwcyQwIiwib2Zfc3RyaW5nJDAiLCJvZl9iaWdzdHJpbmckMCIsImxvYWRfcmV2X3NleHBzJDAiLCJsb2FkX3NleHBzJDAiLCJsb2FkX3NleHAkMCIsImNvbnYiLCJiYWRfc2V4cCIsImJhZF9hbm5vdF9zZXhwIiwiZ2V0X2NvbnZfZXhuIiwibGluZSIsImxvYWRfc2V4cF9jb252IiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyQwIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfc2V4cF9ncmFtbWFyIiwiYmlnc3RyaW5nX29mX3NleHAiLCJmbG9hdF92ZWNfb2Zfc2V4cCIsImVtcHR5X2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdF92ZWMiLCJjcmVhdGVfZmxvYXQzMl92ZWMiLCJjcmVhdGVfZmxvYXQ2NF92ZWMiLCJlbXB0eV9mbG9hdDMyX3ZlYyIsImVtcHR5X2Zsb2F0NjRfdmVjIiwiZmxvYXQzMl92ZWNfb2Zfc2V4cCIsImZsb2F0NjRfdmVjX29mX3NleHAiLCJ2ZWNfb2Zfc2V4cCIsImNoZWNrX3Rvb19tdWNoX2RhdGEiLCJkYXRhIiwiZmxvYXRfbWF0X29mX3NleHAiLCJjcmVhdGVfZmxvYXRfbWF0Iiwic24iLCJzbSIsImRhdGEkMCIsImRhdGEkMSIsImNvbCQwIiwiY3JlYXRlX2Zsb2F0MzJfbWF0IiwiY3JlYXRlX2Zsb2F0NjRfbWF0IiwiZmxvYXQzMl9tYXRfb2Zfc2V4cCIsImZsb2F0NjRfbWF0X29mX3NleHAiLCJtYXRfb2Zfc2V4cCIsInN0cmluZ19vZl9vZl9zZXhwX29mIiwidG9fc2V4cCIsIm9mX3N0cmluZ19vZl9vZl9zZXhwIiwib2Zfc2V4cCIsInRfb2Zfc2V4cCIsInRfb2Zfc2V4cCQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X29mX3NleHAiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYm9vbCIsImJvb2xfb2Zfc2V4cCIsImJvb2xfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2NoYXIiLCJjaGFyX29mX3NleHAiLCJjaGFyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50IiwiaW50X29mX3NleHAiLCJpbnRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfb2Zfc2V4cCIsImludDMyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9vZl9zZXhwIiwiaW50NjRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3JlZiIsInJlZl9vZl9zZXhwIiwicmVmX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fb2Zfc2V4cCIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2xpc3QiLCJsaXN0X29mX3NleHAiLCJsaXN0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwiYXJyYXlfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJleG5fc2V4cF9ncmFtbWFyIiwiY29lcmNlIiwiZG9jX2NvbW1lbnRfdGFnIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwidGFnIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwic2V4cDEiLCJyZWdpc3RlcjIiLCJzZXhwX29mX2FyZzIiLCJzZXhwMiIsInJlZ2lzdGVyMyIsInNleHBfb2ZfYXJnMyIsInNleHAzIiwicmVnaXN0ZXI0Iiwic2V4cF9vZl9hcmc0Iiwic2V4cDQiLCJyZWdpc3RlcjUiLCJzZXhwX29mX2FyZzUiLCJzZXhwNSIsInJlZ2lzdGVyNiIsInNleHBfb2ZfYXJnNiIsInNleHA2IiwicmVnaXN0ZXI3Iiwic2V4cF9vZl9hcmc3Iiwic2V4cDciLCJyZWdpc3RlcjgiLCJzZXhwX29mX2FyZzgiLCJzZXhwOCIsInJlZ2lzdGVyOSIsInNleHBfb2ZfYXJnOSIsInNleHA5IiwicmVnaXN0ZXIxMCIsInNleHBfb2ZfYXJnMTAiLCJzZXhwMTAiLCJpbnQ2NCQwIiwiZ29sZGVuX2dhbW1hIiwicG9wY291bnQiLCJvZl9pbnQiLCJzZWVkIiwiY29weSIsIm9kZF9nYW1tYSIsIm1peF9iaXRzIiwieiIsIm4iLCJtaXg2NCIsInokMCIsInokMSIsIm5leHRfc2VlZCIsInQiLCJuZXh0Iiwib2Zfc2VlZF9hbmRfZ2FtbWEiLCJnYW1tYSIsInNlZWQkMCIsInJhbmRvbV9pbnQ2NCIsInJhbmRvbV9zdGF0ZSIsImNyZWF0ZSIsInNwbGl0IiwibmV4dF9pbnQ2NCIsInBlcnR1cmIiLCJzYWx0IiwiYm9vbCIsInN0YXRlIiwieCIsImludDY0IiwibG8iLCJoaSIsInJlbWFpbmRlcl9tYXhpbXVtIiwiZHJhdyQwIiwicmVtYWluZGVyIiwiZHJhd19tYXhpbXVtIiwiZHJhdyIsImludCQwIiwibG8kMCIsImhpJDAiLCJpbnQzMiIsIm5hdGl2ZWludCIsImludDYzIiwiZG91YmxlX3VscCIsInVuaXRfZmxvYXRfZnJvbV9pbnQ2NCIsInVuaXRfZmxvYXQiLCJmbG9hdCQwIiwicmFuZ2UiLCJtaWQiLCJmIiwiYml0c190b19yZXByZXNlbnQiLCJ0JDAiLCJsb2dfdW5pZm9ybSIsIm1pbl9iaXRzIiwibWF4X2JpdHMiLCJiaXRzIiwidF9zZXhwX2dyYW1tYXIiLCJvZl9mbG9hdCIsInRvX2Zsb2F0Iiwib2ZfaW50X2V4biIsInRvX2ludF9leG4iLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJlcXVhbCIsImNvbXBhcmUiLCJtaW4iLCJtYXgiLCJhc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwiYmV0d2VlbiIsImNsYW1wX2V4biIsImNsYW1wIiwiY29tcGFyYXRvciIsInBwIiwiaGFzaGFibGUiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImludmFyaWFudCIsInRvX3N0cmluZ19odW0iLCJvbmUiLCJtaW51c19vbmUiLCJyZW0iLCJyb3VuZCIsInJvdW5kX3Rvd2FyZHNfemVybyIsInJvdW5kX2Rvd24iLCJyb3VuZF91cCIsInJvdW5kX25lYXJlc3QiLCJzdWNjIiwicHJlZCIsInBvdyIsImJpdF9hbmQiLCJiaXRfb3IiLCJiaXRfeG9yIiwiYml0X25vdCIsInBvcGNvdW50JDAiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJkZWNyIiwiaW5jciIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0X2V4biIsInRvX2ludDY0Iiwib2ZfbmF0aXZlaW50X2V4biIsInRvX25hdGl2ZWludF9leG4iLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsIm1pbl92YWx1ZSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJjZWlsX3BvdzIiLCJmbG9vcl9wb3cyIiwiY2VpbF9sb2cyIiwiZmxvb3JfbG9nMiIsImlzX3BvdzIiLCJjbHoiLCJjdHoiLCJzeW1ib2wiLCJsbm90IiwiYWJzIiwiemVybyIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInRfc2V4cF9ncmFtbWFyJDAiLCJvZl9mbG9hdCQwIiwidG9fZmxvYXQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludF9leG4kMCIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsImVxdWFsJDAiLCJjb21wYXJlJDAiLCJtaW4kMCIsIm1heCQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJiZXR3ZWVuJDAiLCJjbGFtcF9leG4kMCIsImNsYW1wJDAiLCJjb21wYXJhdG9yJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwiemVybyQwIiwib25lJDAiLCJtaW51c19vbmUkMCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwibmVnIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwicmVtJDAiLCJzeW1ib2wkMTciLCJsYW5kIiwibG9yIiwibHhvciIsImxub3QkMCIsImxzbCIsImFzciIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJhYnMkMCIsInN1Y2MkMCIsInByZWQkMCIsInBvdyQwIiwiYml0X2FuZCQwIiwiYml0X29yJDAiLCJiaXRfeG9yJDAiLCJiaXRfbm90JDAiLCJwb3Bjb3VudCQxIiwic2hpZnRfbGVmdCQwIiwic2hpZnRfcmlnaHQkMCIsImRlY3IkMCIsImluY3IkMCIsIm9mX2ludDMyX2V4biQwIiwidG9faW50MzJfZXhuJDAiLCJvZl9pbnQ2NF9leG4kMCIsInRvX2ludDY0JDAiLCJvZl9uYXRpdmVpbnRfZXhuJDAiLCJ0b19uYXRpdmVpbnRfZXhuJDAiLCJvZl9mbG9hdF91bmNoZWNrZWQkMCIsIm51bV9iaXRzJDAiLCJtYXhfdmFsdWUkMCIsIm1pbl92YWx1ZSQwIiwibHNyIiwic2hpZnRfcmlnaHRfbG9naWNhbCQwIiwiY2VpbF9wb3cyJDAiLCJmbG9vcl9wb3cyJDAiLCJjZWlsX2xvZzIkMCIsImZsb29yX2xvZzIkMCIsImlzX3BvdzIkMCIsImNseiQwIiwiY3R6JDAiLCJ0X3NleHBfZ3JhbW1hciQyIiwib2ZfZmxvYXQkMiIsInRvX2Zsb2F0JDIiLCJvZl9pbnRfZXhuJDIiLCJ0b19pbnRfZXhuJDIiLCJoYXNoX2ZvbGRfdCQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDIiLCJlcXVhbCQyIiwiY29tcGFyZSQyIiwibWluJDIiLCJtYXgkMiIsImFzY2VuZGluZyQyIiwiZGVzY2VuZGluZyQyIiwiYmV0d2VlbiQyIiwiY2xhbXBfZXhuJDIiLCJjbGFtcCQyIiwiY29tcGFyYXRvciQyIiwicHAkMiIsImhhc2hhYmxlJDIiLCJpc19wb3NpdGl2ZSQyIiwiaXNfbm9uX25lZ2F0aXZlJDIiLCJpc19uZWdhdGl2ZSQyIiwiaXNfbm9uX3Bvc2l0aXZlJDIiLCJzaWduJDIiLCJpbnZhcmlhbnQkMiIsInRvX3N0cmluZ19odW0kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJyZW0kMiIsInJvdW5kJDIiLCJyb3VuZF90b3dhcmRzX3plcm8kMiIsInJvdW5kX2Rvd24kMiIsInJvdW5kX3VwJDIiLCJyb3VuZF9uZWFyZXN0JDIiLCJzdWNjJDIiLCJwcmVkJDIiLCJwb3ckMiIsImJpdF9hbmQkMiIsImJpdF9vciQyIiwiYml0X3hvciQyIiwiYml0X25vdCQyIiwicG9wY291bnQkMyIsInNoaWZ0X2xlZnQkMiIsInNoaWZ0X3JpZ2h0JDIiLCJkZWNyJDIiLCJpbmNyJDIiLCJvZl9pbnQzMl9leG4kMiIsInRvX2ludDMyX2V4biQyIiwib2ZfaW50NjRfZXhuJDIiLCJ0b19pbnQ2NCQyIiwib2ZfbmF0aXZlaW50X2V4biQyIiwidG9fbmF0aXZlaW50X2V4biQyIiwib2ZfZmxvYXRfdW5jaGVja2VkJDIiLCJudW1fYml0cyQyIiwibWF4X3ZhbHVlJDIiLCJtaW5fdmFsdWUkMiIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMiIsImNlaWxfcG93MiQyIiwiZmxvb3JfcG93MiQyIiwiY2VpbF9sb2cyJDIiLCJmbG9vcl9sb2cyJDIiLCJpc19wb3cyJDIiLCJjbHokMiIsImN0eiQyIiwic3ltYm9sJDMzIiwibG5vdCQyIiwiYWJzJDIiLCJ6ZXJvJDIiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJ0X3NleHBfZ3JhbW1hciQzIiwib2ZfZmxvYXQkMyIsInRvX2Zsb2F0JDMiLCJvZl9pbnRfZXhuJDMiLCJ0b19pbnRfZXhuJDMiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsIm9mX3N0cmluZyQzIiwidG9fc3RyaW5nJDMiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJlcXVhbCQzIiwiY29tcGFyZSQzIiwibWluJDMiLCJtYXgkMyIsImFzY2VuZGluZyQzIiwiZGVzY2VuZGluZyQzIiwiYmV0d2VlbiQzIiwiY2xhbXBfZXhuJDMiLCJjbGFtcCQzIiwiY29tcGFyYXRvciQzIiwicHAkMyIsImhhc2hhYmxlJDMiLCJpc19wb3NpdGl2ZSQzIiwiaXNfbm9uX25lZ2F0aXZlJDMiLCJpc19uZWdhdGl2ZSQzIiwiaXNfbm9uX3Bvc2l0aXZlJDMiLCJzaWduJDMiLCJpbnZhcmlhbnQkMyIsInRvX3N0cmluZ19odW0kMyIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJuZWckMSIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsInN5bWJvbCQ0OSIsInN5bWJvbCQ1MCIsInJlbSQzIiwic3ltYm9sJDUxIiwibGFuZCQxIiwibG9yJDEiLCJseG9yJDEiLCJsbm90JDMiLCJsc2wkMSIsImFzciQxIiwicm91bmQkMyIsInJvdW5kX3Rvd2FyZHNfemVybyQzIiwicm91bmRfZG93biQzIiwicm91bmRfdXAkMyIsInJvdW5kX25lYXJlc3QkMyIsImFicyQzIiwic3VjYyQzIiwicHJlZCQzIiwicG93JDMiLCJiaXRfYW5kJDMiLCJiaXRfb3IkMyIsImJpdF94b3IkMyIsImJpdF9ub3QkMyIsInBvcGNvdW50JDQiLCJzaGlmdF9sZWZ0JDMiLCJzaGlmdF9yaWdodCQzIiwiZGVjciQzIiwiaW5jciQzIiwib2ZfaW50MzJfZXhuJDMiLCJ0b19pbnQzMl9leG4kMyIsIm9mX2ludDY0X2V4biQzIiwidG9faW50NjQkMyIsIm9mX25hdGl2ZWludF9leG4kMyIsInRvX25hdGl2ZWludF9leG4kMyIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQzIiwibnVtX2JpdHMkMyIsIm1heF92YWx1ZSQzIiwibWluX3ZhbHVlJDMiLCJsc3IkMSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMyIsImNlaWxfcG93MiQzIiwiZmxvb3JfcG93MiQzIiwiY2VpbF9sb2cyJDMiLCJmbG9vcl9sb2cyJDMiLCJpc19wb3cyJDMiLCJjbHokMyIsImN0eiQzIiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5IiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsInN1bSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwidyIsIm4iLCJyZWNfbGlzdCIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm9wdCIsInN0aCIsIm1pbl9sZW5ndGgiLCJzdGgkMCIsIm1heF9sZW5ndGgiLCJ1cHBlcl9ib3VuZCIsIm1heF9sZW5ndGgkMCIsImxlbiIsInJlbWFpbmluZyIsIm1heF9pbmRleCIsInVuaXQiLCJib29sIiwib3B0aW9uIiwidmFsdWVfdCIsImVpdGhlciIsImZzdF90Iiwic25kX3QiLCJyZXN1bHQiLCJva190IiwiZXJyX3QiLCJvayIsImVyciIsImxpc3RfZ2VuZXJpYyIsImVsdF9nZW4iLCJsaXN0X25vbl9lbXB0eSIsImxpc3Rfd2l0aF9sZW5ndGgiLCJsZW5ndGgiLCJsaXN0X2ZpbHRlcmVkIiwiZWx0cyIsImVsdHMkMCIsImxlbmd0aF9vZl9pbnB1dCIsImxlbmd0aF9vZl9vdXRwdXQiLCJpbmRpY2VzIiwibGlzdF9wZXJtdXRhdGlvbnMiLCJyZWYiLCJjaGFyX3VuaWZvcm1faW5jbHVzaXZlIiwiY2hhcl91cHBlcmNhc2UiLCJjaGFyX2xvd2VyY2FzZSIsImNoYXJfZGlnaXQiLCJjaGFyX3ByaW50X3VuaWZvcm0iLCJjaGFyX3VuaWZvcm0iLCJjaGFyX2FscGhhIiwiY2hhcl9hbHBoYW51bSIsImNoYXJfd2hpdGVzcGFjZSIsImNoYXJfcHJpbnQiLCJjaGFyJDAiLCJzbWFsbF9pbnQiLCJhbGxvd196ZXJvIiwibG93ZXJfYm91bmQiLCJ3ZWlnaHRlZF9sb3ciLCJ3ZWlnaHRlZF9oaWdoIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsInVuaWZvcm0iLCJsb2dfdW5pZm9ybSIsImludCQwIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwidW5pZm9ybSQwIiwibG9nX3VuaWZvcm0kMCIsImludDMyIiwiaW50MzJfdW5pZm9ybSIsImludDMyX2luY2x1c2l2ZSIsImludDMyX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50MzJfbG9nX2luY2x1c2l2ZSIsImludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsInVuaWZvcm0kMSIsImxvZ191bmlmb3JtJDEiLCJpbnQ2MyIsImludDYzX3VuaWZvcm0iLCJpbnQ2M19pbmNsdXNpdmUiLCJpbnQ2M191bmlmb3JtX2luY2x1c2l2ZSIsImludDYzX2xvZ19pbmNsdXNpdmUiLCJpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJzeW1ib2wkMzYiLCJsbm90JDIiLCJhYnMkMiIsInplcm8kMiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInVuaWZvcm0kMiIsImxvZ191bmlmb3JtJDIiLCJpbnQ2NCIsImludDY0X3VuaWZvcm0iLCJpbnQ2NF9pbmNsdXNpdmUiLCJpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2xvZ19pbmNsdXNpdmUiLCJpbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJ1bmlmb3JtJDMiLCJsb2dfdW5pZm9ybSQzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X3VuaWZvcm0iLCJuYXRpdmVpbnRfaW5jbHVzaXZlIiwibmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlIiwibmF0aXZlaW50X2xvZ19pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXYiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X251bV9tYW50aXNzYV9iaXRzIiwibnVtX2JpdHMiLCJiaXRzIiwiZmxvYXRfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfZXhwb25lbnQiLCJmbG9hdF96ZXJvIiwibGV0X3N5bnRheF8wMTIiLCJsZXRfc3ludGF4XzAxMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJmbG9hdF9zdWJub3JtYWwiLCJmbG9hdF9ub3JtYWwiLCJmbG9hdF9pbmZpbml0ZSIsImxldF9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjIiLCJmbG9hdF9uYW4iLCJmbG9hdF9vZl9jbGFzcyIsImMiLCJmbG9hdF9tYXRjaGluZ19jbGFzc2VzIiwiZmxvYXRfZmluaXRlIiwiZmxvYXRfd2l0aG91dF9uYW4iLCJmbG9hdCQwIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJtYXhfdG90YWxfc2l6ZSIsImEiLCJiIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImJpZ2FycmF5Ml9kaW0iLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsInYiLCJkaW0yJDAiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImsiLCJkcm9wX2tleXMiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsIm1vZF9uYW1lIiwibW9kX25hbWUkMCIsIm1vZF9uYW1lJDEiLCJtb2RfbmFtZSQyIiwibW9kX25hbWUkMyIsIm1vZF9uYW1lJDQiLCJtb2RfbmFtZSQ1IiwibW9kX25hbWUkNiIsIm1vZF9uYW1lJDciLCJtb2RfbmFtZSQ4IiwibW9kX25hbWUkOSIsIm1heF92YWx1ZSQxMiIsIm1vZF9uYW1lJDEwIiwicmFpc2VfY2Fubm90X3JlcHIiLCJ0b19zdHJpbmciLCJ4IiwidHJ1bmNfdW5zaWduZWQiLCJjb252IiwibG9nYW5kIiwibWFzayIsImV4bl91bnNpZ25lZCIsImVxdWFsIiwieSIsInRydW5jX3NpZ25lZCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsInNoaWZ0IiwiZXhuX3NpZ25lZCIsImlkZW50aXR5X2lmX3Bvc2l0aXZlIiwiZ3JlYXRlcl9lcXVhbCIsInplcm8iLCJvZl9zZXhwX2Vycm9yIiwid2hhdCIsInNleHAiLCJ0b19pbnQzMiIsInRvX2ludDY0IiwiY29tcGFyZSIsImhhc2hfZm9sZF90IiwiZnVuYyIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJ0eXBlcmVwX29mX3QiLCJ0eXBlbmFtZV9vZl90IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwic2lnbmVkIiwibnVtX2JpdHMiLCJudW1fYnl0ZXMiLCJ0cnVuYyIsImV4biIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJsb2dhbmQ2NCIsIm1hc2s2NCIsImVxdWFsJDAiLCJlcXVhbDY0IiwidG9fc3RyaW5nJDAiLCJ0b19zdHJpbmc2NCIsInRydW5jJDAiLCJleG4kMCIsInRydW5jNjQiLCJleG42NCIsIm9mX2Jhc2VfaW50X3RydW5jJDAiLCJvZl9iYXNlX2ludF9leG4kMCIsInRvX2Jhc2VfaW50JDAiLCJvZl91aW50MTZfdHJ1bmMiLCJvZl91aW50MTZfZXhuIiwib2ZfdWludDMyX3RydW5jIiwib2ZfdWludDMyX2V4biIsIm9mX3VpbnQ2M190cnVuYyIsIm9mX3VpbnQ2M19leG4iLCJvZl91aW50NjRfdHJ1bmMiLCJvZl91aW50NjRfZXhuIiwib2ZfaW50OF93cmFwIiwib2ZfaW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwic3ltYm9sJDI0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiY29tcGFyZSQzIiwiaGFzaF9mb2xkX3QkMSIsImZ1bmMkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF9vZl90JDEiLCJ0eXBlcmVwX29mX3QkMSIsInR5cGVuYW1lX29mX3QkMSIsInplcm8kMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJtaW5fdmFsdWUkMSIsIm1heF92YWx1ZSQxIiwic2lnbmVkJDEiLCJudW1fYml0cyQxIiwibnVtX2J5dGVzJDEiLCJ0cnVuYyQxIiwiZXhuJDEiLCJvZl9iYXNlX2ludF90cnVuYyQxIiwib2ZfYmFzZV9pbnRfZXhuJDEiLCJ0b19iYXNlX2ludCQxIiwib2ZfaW50OCIsIm9mX2ludDMyX3RydW5jJDAiLCJvZl9pbnQzMl9leG4kMCIsIm9mX2ludDYzX3RydW5jJDAiLCJvZl9pbnQ2M19leG4kMCIsIm9mX2ludDY0X3RydW5jJDAiLCJvZl9pbnQ2NF9leG4kMCIsIm9mX3VpbnQxNl93cmFwIiwib2ZfdWludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsInN5bWJvbCQ0MiIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsImNvbXBhcmUkNSIsImhhc2hfZm9sZF90JDIiLCJmdW5jJDIiLCJoYXNoJDIiLCJ0X29mX3NleHAkMiIsInNleHBfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJ0eXBlbmFtZV9vZl90JDIiLCJ6ZXJvJDIiLCJtaW5fdmFsdWUkMiIsImNvbnYkMCIsIm1heF92YWx1ZSQyIiwic2lnbmVkJDIiLCJudW1fYml0cyQyIiwibnVtX2J5dGVzJDIiLCJsb2dhbmQkMCIsImxvZ2FuZDY0JDAiLCJtYXNrNjQkMCIsImVxdWFsJDIiLCJlcXVhbDY0JDAiLCJ0b19zdHJpbmckMiIsInRvX3N0cmluZzY0JDAiLCJtYXNrJDAiLCJ0cnVuYyQyIiwiZXhuJDIiLCJ0cnVuYzY0JDAiLCJleG42NCQwIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50X2V4biQyIiwidG9fYmFzZV9pbnQkMiIsIm9mX3VpbnQ4Iiwib2ZfdWludDMyX3RydW5jJDAiLCJvZl91aW50MzJfZXhuJDAiLCJvZl91aW50NjNfdHJ1bmMkMCIsIm9mX3VpbnQ2M19leG4kMCIsIm9mX3VpbnQ2NF90cnVuYyQwIiwib2ZfdWludDY0X2V4biQwIiwib2ZfaW50MTZfd3JhcCIsIm9mX2ludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMiIsInN5bWJvbCQ1MyIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsInN5bWJvbCQ2MCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImNvbXBhcmUkNyIsImhhc2hfZm9sZF90JDMiLCJmdW5jJDMiLCJoYXNoJDMiLCJ0X29mX3NleHAkMyIsInNleHBfb2ZfdCQzIiwidHlwZXJlcF9vZl90JDMiLCJ0eXBlbmFtZV9vZl90JDMiLCJ6ZXJvJDMiLCJtaW5fdmFsdWUkMyIsIm1heF92YWx1ZSQzIiwic2hpZnRfbGVmdCQxIiwic2hpZnRfcmlnaHQkMSIsInNoaWZ0JDEiLCJ0b19zdHJpbmckMyIsInNpZ25lZCQzIiwibnVtX2JpdHMkMyIsIm51bV9ieXRlcyQzIiwidHJ1bmMkMyIsImV4biQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwic2lnbmVkJDQiLCJudW1fYml0cyQ0IiwibnVtX2J5dGVzJDQiLCJsb2dhbmQkMSIsImxvZ2FuZDY0JDEiLCJtYXNrJDEiLCJtYXNrNjQkMSIsImVxdWFsJDQiLCJlcXVhbDY0JDEiLCJ0b19zdHJpbmckNCIsInRvX3N0cmluZzY0JDEiLCJ0cnVuYyQ0IiwiZXhuJDQiLCJ0cnVuYzY0JDEiLCJleG42NCQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsInRvX2Jhc2VfaW50X2V4biIsIm9mX3VpbnQ4JDAiLCJvZl91aW50MTYiLCJvZl91aW50NjNfdHJ1bmMkMSIsIm9mX3VpbnQ2M19leG4kMSIsIm9mX3VpbnQ2NF90cnVuYyQxIiwib2ZfdWludDY0X2V4biQxIiwib2ZfaW50MzJfd3JhcCIsIm9mX2ludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkNCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNCIsInN5bWJvbCQ4NSIsInN5bWJvbCQ4NiIsInN5bWJvbCQ4NyIsInN5bWJvbCQ4OCIsInN5bWJvbCQ4OSIsInN5bWJvbCQ5MCIsInN5bWJvbCQ5MSIsInN5bWJvbCQ5MiIsInN5bWJvbCQ5MyIsInN5bWJvbCQ5NCIsImNvbXBhcmUkMTEiLCJoYXNoX2ZvbGRfdCQ1IiwiZnVuYyQ1IiwiaGFzaCQ1IiwidF9vZl9zZXhwJDUiLCJzZXhwX29mX3QkNSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDUiLCJxdWlja2NoZWNrX29ic2VydmVyJDUiLCJxdWlja2NoZWNrX3Nocmlua2VyJDUiLCJ0eXBlcmVwX29mX3QkNSIsInR5cGVuYW1lX29mX3QkNSIsInplcm8kNSIsIm1pbl92YWx1ZSQ1IiwibWF4X3ZhbHVlJDUiLCJ0b19zdHJpbmckNSIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50MzJfZXhuJDAiLCJ0b19iYXNlX2ludDMyX3RydW5jJDAiLCJ0b19iYXNlX2ludDMyX2V4biQwIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQwIiwib2ZfYmFzZV9pbnQ2NF9leG4kMCIsInRvX2Jhc2VfaW50NjQkMCIsInRvX2Jhc2VfaW50X2V4biQwIiwib2ZfdWludDgkMSIsIm9mX3VpbnQxNiQwIiwib2ZfdWludDYzX3RydW5jJDIiLCJvZl91aW50NjNfZXhuJDIiLCJvZl91aW50NjRfdHJ1bmMkMiIsIm9mX3VpbnQ2NF9leG4kMiIsIm9mX2ludDMyX3dyYXAkMCIsIm9mX2ludDMyX2V4biQyIiwic2V4cF9vZl90JDYiLCJ0X29mX3NleHAkNiIsInMiLCJzeW1ib2wkMTExIiwic3ltYm9sJDExMiIsInN5bWJvbCQxMTMiLCJzeW1ib2wkMTE0Iiwic3ltYm9sJDExNSIsInN5bWJvbCQxMTYiLCJzeW1ib2wkMTE3Iiwic3ltYm9sJDExOCIsInN5bWJvbCQxMTkiLCJzeW1ib2wkMTIwIiwiaW1wbCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDciLCJxdWlja2NoZWNrX29ic2VydmVyJDciLCJxdWlja2NoZWNrX3Nocmlua2VyJDciLCJ0X29mX3NleHAkNyIsInNleHBfb2ZfdCQ3IiwidHlwZXJlcF9vZl90JDciLCJ0eXBlbmFtZV9vZl90JDciLCJzaWduZWQkNyIsIm51bV9iaXRzJDciLCJudW1fYnl0ZXMkNyIsInplcm8kNyIsIm1pbl92YWx1ZSQ3IiwibWF4X3ZhbHVlJDciLCJoYXNoX2ZvbGRfdCQ3IiwiaGFzaCQ3Iiwic3ltYm9sJDEyNyIsInN5bWJvbCQxMjgiLCJzeW1ib2wkMTI5Iiwic3ltYm9sJDEzMCIsInN5bWJvbCQxMzEiLCJzeW1ib2wkMTMyIiwiZXF1YWwkNyIsImNvbXBhcmUkMTUiLCJtaW4kNyIsIm1heCQ3Iiwib2ZfYmFzZV9pbnQzMiQxIiwidG9fYmFzZV9pbnQzMiQxIiwib2ZfaW50OCQyIiwib2ZfaW50MTYkMSIsIm9mX2ludDYzX3RydW5jJDMiLCJvZl9pbnQ2M19leG4kMyIsIm9mX2ludDY0X3RydW5jJDMiLCJvZl9pbnQ2NF9leG4kMyIsIm9mX3VpbnQzMl93cmFwJDEiLCJvZl91aW50MzJfZXhuJDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ4IiwicXVpY2tjaGVja19vYnNlcnZlciQ4IiwicXVpY2tjaGVja19zaHJpbmtlciQ4IiwidF9vZl9zZXhwJDgiLCJzZXhwX29mX3QkOCIsInR5cGVyZXBfb2ZfdCQ4IiwidHlwZW5hbWVfb2ZfdCQ4Iiwic2lnbmVkJDgiLCJudW1fYml0cyQ4IiwibnVtX2J5dGVzJDgiLCJ6ZXJvJDgiLCJtaW5fdmFsdWUkOCIsIm1heF92YWx1ZSQ4IiwiaGFzaF9mb2xkX3QkOCIsImhhc2gkOCIsInN5bWJvbCQxMzMiLCJzeW1ib2wkMTM0Iiwic3ltYm9sJDEzNSIsInN5bWJvbCQxMzYiLCJzeW1ib2wkMTM3Iiwic3ltYm9sJDEzOCIsImVxdWFsJDgiLCJjb21wYXJlJDE2IiwibWluJDgiLCJtYXgkOCIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50MzJfZXhuJDEiLCJ0b19iYXNlX2ludDMyX3RydW5jJDEiLCJ0b19iYXNlX2ludDMyX2V4biQxIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQxIiwib2ZfYmFzZV9pbnQ2NF9leG4kMSIsInRvX2Jhc2VfaW50NjQkMSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwic2lnbmVkJDkiLCJudW1fYml0cyQ5IiwibnVtX2J5dGVzJDkiLCJvZl9pbnQ4JDMiLCJvZl9pbnQxNiQyIiwib2ZfaW50MzIiLCJvZl9pbnQ2NF90cnVuYyQ0Iiwib2ZfaW50NjRfZXhuJDQiLCJvZl91aW50NjNfd3JhcCIsIm9mX3VpbnQ2M19leG4kNCIsInN5bWJvbCQxNDUiLCJzeW1ib2wkMTQ2Iiwic3ltYm9sJDE0NyIsInN5bWJvbCQxNDgiLCJzeW1ib2wkMTQ5Iiwic3ltYm9sJDE1MCIsInN5bWJvbCQxNTEiLCJzeW1ib2wkMTUyIiwic3ltYm9sJDE1MyIsInN5bWJvbCQxNTQiLCJoYXNoX2ZvbGRfdCQxMCIsImZ1bmMkOCIsImhhc2gkMTAiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEwIiwiY29tcGFyZSQxOSIsInR5cGVyZXBfb2ZfdCQxMCIsInR5cGVuYW1lX29mX3QkMTAiLCJ6ZXJvJDEwIiwibWluX3ZhbHVlJDEwIiwibWF4X3ZhbHVlJDEwIiwiZ3JlYXRlcl9lcXVhbCQyIiwidG9fc3RyaW5nJDgiLCJzaWduZWQkMTAiLCJudW1fYml0cyQxMCIsIm51bV9ieXRlcyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50NjRfZXhuJDIiLCJ0b19iYXNlX2ludDY0JDIiLCJvZl91aW50OCQzIiwib2ZfdWludDE2JDIiLCJvZl91aW50MzIiLCJvZl91aW50NjRfdHJ1bmMkNCIsIm9mX3VpbnQ2NF9leG4kNCIsIm9mX2ludDYzX3dyYXAiLCJvZl9pbnQ2M19leG4kNCIsInNleHBfb2ZfdCQxMCIsInRfb2Zfc2V4cCQxMCIsInN5bWJvbCQxNTUiLCJzeW1ib2wkMTU2Iiwic3ltYm9sJDE1NyIsInN5bWJvbCQxNTgiLCJzeW1ib2wkMTU5Iiwic3ltYm9sJDE2MCIsInN5bWJvbCQxNjEiLCJzeW1ib2wkMTYyIiwic3ltYm9sJDE2MyIsInN5bWJvbCQxNjQiLCJjb21wYXJlJDIxIiwiaGFzaF9mb2xkX3QkMTEiLCJmdW5jJDkiLCJoYXNoJDExIiwidF9vZl9zZXhwJDExIiwic2V4cF9vZl90JDExIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTEiLCJxdWlja2NoZWNrX29ic2VydmVyJDExIiwicXVpY2tjaGVja19zaHJpbmtlciQxMSIsInR5cGVyZXBfb2ZfdCQxMSIsInR5cGVuYW1lX29mX3QkMTEiLCJ6ZXJvJDExIiwibWluX3ZhbHVlJDExIiwibWF4X3ZhbHVlJDExIiwiZ3JlYXRlcl9lcXVhbCQzIiwidG9fc3RyaW5nJDkiLCJvZl9pbnQ4JDQiLCJvZl9pbnQxNiQzIiwic2lnbmVkJDExIiwibnVtX2JpdHMkMTEiLCJudW1fYnl0ZXMkMTEiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsInNpZ25lZCQxMiIsIm51bV9iaXRzJDEyIiwibnVtX2J5dGVzJDEyIiwiZXhuJDUiLCJvZl9iYXNlX2ludDY0X3RydW5jJDMiLCJvZl9iYXNlX2ludDY0X2V4biQzIiwidG9fYmFzZV9pbnQ2NF90cnVuYyIsInRvX2Jhc2VfaW50NjRfZXhuIiwib2ZfdWludDgkNCIsIm9mX3VpbnQxNiQzIiwib2ZfdWludDMyJDAiLCJvZl91aW50NjMiLCJvZl9pbnQ2NF93cmFwIiwib2ZfaW50NjRfZXhuJDUiLCJzZXhwX29mX3QkMTIiLCJ0X29mX3NleHAkMTIiLCJzeW1ib2wkMTg3Iiwic3ltYm9sJDE4OCIsInN5bWJvbCQxODkiLCJzeW1ib2wkMTkwIiwic3ltYm9sJDE5MSIsInN5bWJvbCQxOTIiLCJzeW1ib2wkMTkzIiwic3ltYm9sJDE5NCIsInN5bWJvbCQxOTUiLCJzeW1ib2wkMTk2IiwiZ2V0X2ludDgiLCJ0IiwicG9zIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwieCQwIiwiZ2V0X3VpbnQxNl9sZSIsImdldF91aW50MTZfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfdWludDMyX2xlIiwiZ2V0X3VpbnQzMl9iZSIsImdldF9pbnQ2NF9sZSIsImdldF9pbnQ2NF9iZSIsImdldF91aW50NjRfbGUiLCJnZXRfdWludDY0X2JlIiwic2V0X3VpbnQ4Iiwic2V0X2ludDgiLCJzZXRfdWludDE2X2xlIiwic2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsIngkMSIsInNldF9pbnQzMl9iZSIsInNldF91aW50MzJfbGUiLCJzZXRfdWludDMyX2JlIiwic2V0X2ludDY0X2xlIiwic2V0X2ludDY0X2JlIiwic2V0X3VpbnQ2NF9sZSIsInNldF91aW50NjRfYmUiLCJnZXRfaW50OCQwIiwiZ2V0X3VpbnQ4JDAiLCJnZXRfaW50MTZfbGUkMCIsImdldF9pbnQxNl9iZSQwIiwiZ2V0X3VpbnQxNl9sZSQwIiwiZ2V0X3VpbnQxNl9iZSQwIiwiZ2V0X2ludDMyX2xlJDAiLCJnZXRfaW50MzJfYmUkMCIsImdldF91aW50MzJfbGUkMCIsImdldF91aW50MzJfYmUkMCIsImdldF9pbnQ2NF9sZSQwIiwiZ2V0X2ludDY0X2JlJDAiLCJnZXRfdWludDY0X2xlJDAiLCJnZXRfdWludDY0X2JlJDAiLCJzZXRfaW50OCQwIiwic2V0X3VpbnQ4JDAiLCJzZXRfaW50MTZfbGUkMCIsInNldF9pbnQxNl9iZSQwIiwic2V0X3VpbnQxNl9sZSQwIiwic2V0X3VpbnQxNl9iZSQwIiwic2V0X2ludDMyX2xlJDAiLCJzZXRfaW50MzJfYmUkMCIsInNldF91aW50MzJfbGUkMCIsInNldF91aW50MzJfYmUkMCIsInNldF9pbnQ2NF9sZSQwIiwic2V0X2ludDY0X2JlJDAiLCJzZXRfdWludDY0X2xlJDAiLCJzZXRfdWludDY0X2JlJDAiLCJnZXRfaW50OCQxIiwiZ2V0X3VpbnQ4JDEiLCJnZXRfaW50MTZfbGUkMSIsImdldF9pbnQxNl9iZSQxIiwiZ2V0X3VpbnQxNl9sZSQxIiwiZ2V0X3VpbnQxNl9iZSQxIiwiZ2V0X2ludDMyX2xlJDEiLCJnZXRfaW50MzJfYmUkMSIsImdldF91aW50MzJfbGUkMSIsImdldF91aW50MzJfYmUkMSIsImdldF9pbnQ2NF9sZSQxIiwiZ2V0X2ludDY0X2JlJDEiLCJnZXRfdWludDY0X2xlJDEiLCJnZXRfdWludDY0X2JlJDEiLCJnZXRfaW50OCQyIiwiZ2V0X3VpbnQ4JDIiLCJnZXRfaW50MTZfbGUkMiIsImdldF9pbnQxNl9iZSQyIiwiZ2V0X3VpbnQxNl9sZSQyIiwiZ2V0X3VpbnQxNl9iZSQyIiwiZ2V0X2ludDMyX2xlJDIiLCJnZXRfaW50MzJfYmUkMiIsImdldF91aW50MzJfbGUkMiIsImdldF91aW50MzJfYmUkMiIsImdldF9pbnQ2NF9sZSQyIiwiZ2V0X2ludDY0X2JlJDIiLCJnZXRfdWludDY0X2xlJDIiLCJnZXRfdWludDY0X2JlJDIiLCJsb2MkMCIsImxvYyIsInNwcmludGYiLCJhcmNoX3NpeHR5Zm91ciIsImFyY2hfYmlnX2VuZGlhbiIsIm5vdF9vbl8zMmJpdCIsImNyZWF0ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyIsInNpemUiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMkMCIsImxlbmd0aCIsImluaXQiLCJuIiwiZiIsInQiLCJpIiwiY2hlY2tfYXJncyIsInBvcyIsImxlbiIsImJzdHIiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwib3B0IiwiY2hyIiwic3RoIiwibGVuJDAiLCJyZXMiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsImdldF9pbnQ2NF90X2JlIiwicmVhZF9pbnQ2NF9zd2FwJDAiLCJzZXRfaW50NjRfdF9iZSIsInNldF9pbnQ2NF90X2xlIiwiaW50NjRfY29udl9lcnJvciIsInVpbnQ2NF9jb252X2Vycm9yIiwiaW50NjRfdG9faW50X2V4biIsInVpbnQ2NF90b19pbnRfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9iZV9leG4iLCJ1bnNhZmVfZ2V0X2ludDY0X2xlX2V4biIsImdldF9pbnQ2NF9iZV9leG4iLCJnZXRfaW50NjRfbGVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfbGVfZXhuIiwiZ2V0X3VpbnQ2NF9iZV9leG4iLCJnZXRfdWludDY0X2xlX2V4biIsInNldF91aW50NjRfYmVfZXhuIiwic2V0X3VpbnQ2NF9sZV9leG4iLCJ1bnNhZmVfc2V0X3VpbnQ4IiwidW5zYWZlX3NldF9pbnQ4IiwibiQwIiwidW5zYWZlX2dldF91aW50OCIsInVuc2FmZV9nZXRfaW50OCIsInNldF91aW50OF9leG4iLCJzZXRfaW50OF9leG4iLCJnZXRfdWludDgiLCJnZXRfaW50OCIsInVpbnQzMl9vZl9pbnQzMl90IiwidW5zYWZlX3NldF91aW50MzJfbGUiLCJ1bnNhZmVfc2V0X3VpbnQzMl9iZSIsInVuc2FmZV9nZXRfdWludDMyX2xlIiwidW5zYWZlX2dldF91aW50MzJfYmUiLCJzZXRfdWludDMyX2xlX2V4biIsInNldF91aW50MzJfYmVfZXhuIiwiZ2V0X3VpbnQzMl9sZSIsImdldF91aW50MzJfYmUiLCJnZXRfdWludDgkMCIsInNldF91aW50OCIsImdldF91aW50MTZfbmUiLCJzZXRfdWludDE2X25lIiwiZ2V0X2ludDMyX25lIiwic2V0X2ludDMyX25lIiwiZ2V0X2ludDY0X25lIiwic2V0X2ludDY0X25lIiwiZ2V0X3VpbnQ4JDIiLCJzZXRfdWludDgkMSIsImdldF91aW50MTZfbmUkMCIsInNldF91aW50MTZfbmUkMCIsImdldF9pbnQzMl9uZSQwIiwic2V0X2ludDMyX25lJDAiLCJnZXRfaW50NjRfbmUkMCIsInNldF9pbnQ2NF9uZSQwIiwiZWx0MSIsImVsdDIiLCJlcXVhbCIsIm9mX2Jvb2wiLCJsZW5ndGgiLCJjcmVhdGVfYm9vbCIsImdldCIsInNldCIsIm92ZXJsYXBwaW5nX3NyY19kc3QiLCJsZW5ndGgkMCIsImdldCQwIiwic2V0JDAiLCJjcmVhdGVfYm9vbCQwIiwicGFzcyIsImZhaWxzIiwibWVzc2FnZSIsImEiLCJzZXhwX29mX2EiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJmYWlsX3MiLCJzZXhwIiwiY29tYmluZSIsInQxIiwidDIiLCJvZl9saXN0IiwibmFtZSIsInQiLCJlcnJvciIsInBhdGgiLCJuYW1lX2xpc3QiLCJuIiwibCIsImZhaWxfZm4iLCJwYXNzX2Jvb2wiLCJwYXNzX3VuaXQiLCJwcm90ZWN0IiwiZiIsInYiLCJleG4kMCIsImV4biIsInRyeV93aXRoIiwicGF0aF9zdHJpbmciLCJlcnJvcnMiLCJyZXN1bHQiLCJ4XzAwNSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwMyIsInJlczFfMDA0IiwibWF5YmVfcmFpc2UiLCJ2YWxpZF9vcl9lcnJvciIsImNoZWNrIiwieCIsImZpZWxkX2RpcmVjdCIsImZsZCIsInJlY29yZCIsImZpZWxkIiwiZmllbGRfZm9sZGVyIiwiYWNjIiwiZmllbGRfZGlyZWN0X2ZvbGRlciIsImFsbCIsImNoZWNrcyIsImNoZWNrcyQwIiwiZXJycyIsImNoZWNrcyQxIiwiZXJyIiwiZXJycyQwIiwib2ZfcmVzdWx0Iiwib2ZfZXJyb3IiLCJib29sdGVzdCIsImlmX2ZhbHNlIiwicGFpciIsImZzdCIsInNuZCIsInNuZF92YWx1ZSIsImZzdF92YWx1ZSIsImxpc3RfaW5kZXhlZCIsImxpc3QiLCJpIiwiZWwiLCJleHRyYWN0X25hbWUiLCJhbGlzdCIsImxpc3QkMCIsImtleSIsImZpcnN0X2ZhaWx1cmUiLCJvZl9lcnJvcl9vcHQiLCJib3VuZGVkIiwibG93ZXIiLCJ1cHBlciIsImNvbXBhcmUiLCJpbmNsIiwiZXhjbCIsImluY2wkMCIsImV4Y2wkMCIsInN5bWJvbCIsIm5hbWUiLCJzZXhwX29mX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9tYXQiLCJtYXRfb2Zfc2V4cCIsInNleHBfb2ZfdmVjIiwidmVjX29mX3NleHAiLCJzZXhwX29mX29wYXF1ZSIsIm9wYXF1ZV9vZl9zZXhwIiwic2V4cF9vZl9wYWlyIiwicGFpcl9vZl9zZXhwIiwib2Zfc2V4cF9lcnJvciIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZ3JvdXAiLCJiaW5fc2hhcGVfc2V4cF9vcGFxdWUiLCJhIiwiYmluX3NpemVfc2V4cF9vcGFxdWUiLCJzaXplX29mX2EiLCJiaW5fd3JpdGVfc2V4cF9vcGFxdWUiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl9zZXhwX29wYXF1ZSIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSIsIm9mX2EiLCJidWYiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3NleHBfb3BhcXVlJDAiLCJiaW5fcmVhZGVyX3NleHBfb3BhcXVlIiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl9zZXhwX29wYXF1ZSIsImJpbl9hIiwiY29tcGFyZV9zZXhwX29wYXF1ZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImhhc2hfZm9sZF9zZXhwX29wYXF1ZSIsImhhc2hfZm9sZF9hIiwiaHN2IiwiYXJnIiwidHlwZW5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlcmVwX29mX3NleHBfb3BhcXVlIiwibmFtZV9vZl9zZXhwX29wYXF1ZSIsInR5cGVuYW1lX29mX3R1cGxlNSIsInR5cGVuYW1lX29mX3R1cGxlNCIsInR5cGVuYW1lX29mX3R1cGxlMyIsInR5cGVuYW1lX29mX3R1cGxlMiIsInR5cGVuYW1lX29mX3R1cGxlMCIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfYXJyYXkiLCJ0eXBlbmFtZV9vZl9saXN0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX3N0cmluZyIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2ludDYzIiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidHlwZXJlcF9vZl90dXBsZTQiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTAiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2xhenlfdCIsInR5cGVyZXBfb2ZfYXJyYXkiLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX29wdGlvbiIsInZhbHVlX3R1cGxlMCIsInR5cGVyZXBfb2ZfdW5pdCIsInR5cGVyZXBfb2ZfYm9vbCIsInR5cGVyZXBfb2ZfYnl0ZXMiLCJ0eXBlcmVwX29mX3N0cmluZyIsInR5cGVyZXBfb2ZfZmxvYXQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2ludDYzIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9pbnQzMiIsInR5cGVyZXBfb2ZfaW50Iiwid2l0aF9yZXR1cm4iLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJvZl9zdHJpbmciLCJ4IiwidG9fc3RyaW5nIiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJjYWxsZXJfaWRlbnRpdHkiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ2MSIsInYxJDAiLCJiaW5fd3JpdGVfdCIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYXJnXzEiLCJhcmdfMSQwIiwieCQwIiwib2ZfYmlnc3RyaW5nIiwibSIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ19sZW5ndGgiLCJ0b19iaWdzdHJpbmciLCJvcHQiLCJzdGgiLCJwcmVmaXhfd2l0aF9sZW5ndGgiLCJ0X2xlbmd0aCIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludGYiLCJleGl0ZiIsImZtdCIsImNvbGxlY3RfdG9fc3RyaW5nIiwiZiIsImRvbmUiLCJvdXRwdXQiLCJlcnIkMyIsImVyciQyIiwiZXJyJDEiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDQiLCJlcnJvcl9zb3VyY2VfMDA5IiwibmFtZSQwIiwiZXJyb3Jfc291cmNlXzAxOCIsImVycm9yX3NvdXJjZV8wMjAiLCJuYW1lJDEiLCJlcnJvcl9zb3VyY2VfMDMzIiwiZXJyb3Jfc291cmNlXzAzNSIsIm5hbWUkMiIsImVycm9yX3NvdXJjZV8wNTEiLCJlcnJvcl9zb3VyY2VfMDUzIiwibmFtZSQzIiwiZXJyb3Jfc291cmNlXzA2NCIsIm5hbWUkNCIsImVycm9yX3NvdXJjZV8wODIiLCJlcnJvcl9zb3VyY2VfMDg0IiwibmFtZSQ1IiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwieF8wMDUiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA2IiwiYl8wMDciLCJoYXNoX2ZvbGRfdCQwIiwiaGFzaCQwIiwidF9vZl9zZXhwJDAiLCJ4XzAxMCIsInNleHBfb2ZfdCQwIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzAxMSIsImJfMDEyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMTYiLCJhdG9tXzAxNCIsImF0b21fMDE0JDAiLCJ0X29mX3NleHAkMiIsInNleHBfMDE5Iiwic2V4cF9vZl90JDEiLCJncm91cCQyIiwiYmluX3NoYXBlX3QkMiIsImJpbl9zaXplX3QkMiIsImFyZ3MiLCJzaXplX2FyZ3MiLCJiaW5fd3JpdGVfdCQyIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImJpbl90JDIiLCJjb21wYXJlJDIiLCJhXzAyMSIsImJfMDIyIiwicmlnaHRfMDI0IiwibGVmdF8wMjMiLCJoYXNoX2ZvbGRfdCQyIiwiaHN2JDAiLCJoYXNoJDIiLCJ0X29mX3NleHAkMyIsInNleHBfMDI4IiwiYXRvbV8wMjYiLCJzZXhwX2FyZ3NfMDI5IiwiYXRvbV8wMjYkMCIsImFyZzBfMDMxIiwicmVzMF8wMzIiLCJ0X29mX3NleHAkNCIsInNleHBfMDM0Iiwic2V4cF9vZl90JDIiLCJ2XzAzNiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQzIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsImJpbl93cml0ZXJfdCQzIiwiYmluX3JlYWRfdCQ3IiwiYmluX3JlYWRfdCQ4IiwiYmluX3JlYWRlcl90JDMiLCJiaW5fdCQzIiwiY29tcGFyZSQzIiwiYV8wMzciLCJiXzAzOCIsInJpZ2h0XzA0MiIsImxlZnRfMDQxIiwiaGFzaF9mb2xkX3QkMyIsImhhc2gkMyIsInRfb2Zfc2V4cCQ1Iiwic2V4cF8wNTIiLCJhdG9tXzA0NCIsInNleHBfYXJnc18wNDciLCJhdG9tXzA0NCQwIiwiYXJnMF8wNDkiLCJyZXMwXzA1MCIsInNleHBfb2ZfdCQzIiwidl8wNTQiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfbm9ib2R5IiwiYmluX3NpemVfbm9ib2R5IiwiYmluX3dyaXRlX25vYm9keSIsImJpbl93cml0ZXJfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5JDAiLCJiaW5fcmVhZGVyX25vYm9keSIsImJpbl9ub2JvZHkiLCJjb21wYXJlX25vYm9keSIsImhhc2hfZm9sZF9ub2JvZHkiLCJmdW5jIiwiaGFzaF9ub2JvZHkiLCJub2JvZHlfb2Zfc2V4cCIsInNleHBfb2Zfbm9ib2R5IiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9tZSIsImJpbl9zaXplX21lIiwiYmluX3dyaXRlX21lIiwiYmluX3dyaXRlcl9tZSIsImJpbl9yZWFkX21lIiwiYmluX3JlYWRfbWUkMCIsImJpbl9yZWFkZXJfbWUiLCJiaW5fbWUiLCJjb21wYXJlX21lIiwiaGFzaF9mb2xkX21lIiwiZnVuYyQwIiwiaGFzaF9tZSIsIm1lX29mX3NleHAiLCJzZXhwX29mX21lIiwiZ3JvdXAkOCIsImJpbl9zaGFwZV90JDUiLCJiaW5fc2l6ZV90JDUiLCJiaW5fd3JpdGVfdCQ1IiwiYmluX3dyaXRlcl90JDUiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3QkNSIsImNvbXBhcmUkNSIsImFfMTAxIiwiYl8xMDIiLCJhXzEwMyIsImJfMTA0IiwicmlnaHRfMDcyIiwibGVmdF8wNzEiLCJoYXNoX2ZvbGRfcGVybXMiLCJwZXJtc19vZl9zZXhwIiwib2ZfYV8xMDciLCJ4XzEwOSIsInNleHBfMDc0IiwiYXRvbV8wNzUiLCJzZXhwX2FyZ3NfMDc4IiwiYXRvbV8wNzUkMCIsImFyZzBfMDgwIiwicmVzMF8wODEiLCJzZXhwX29mX3Blcm1zIiwib2ZfYV8xMTAiLCJ4XzExMSIsInZfMDg2Iiwidl8wODciLCJncm91cCQ5IiwiYmluX3NoYXBlX3JlYWQiLCJiaW5fc2l6ZV9yZWFkIiwiYmluX3dyaXRlX3JlYWQiLCJiaW5fd3JpdGVyX3JlYWQiLCJiaW5fcmVhZF9yZWFkIiwiYmluX3JlYWRfcmVhZCQwIiwiYmluX3JlYWRlcl9yZWFkIiwiYmluX3JlYWQiLCJjb21wYXJlX3JlYWQiLCJoYXNoX2ZvbGRfcmVhZCIsImZ1bmMkMSIsImhhc2hfcmVhZCIsInJlYWRfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZCIsImNvbXBhcmVfd3JpdGUiLCJoYXNoX2ZvbGRfd3JpdGUiLCJmdW5jJDIiLCJoYXNoX3dyaXRlIiwid3JpdGVfb2Zfc2V4cCIsInNleHBfb2Zfd3JpdGUiLCJncm91cCQxMCIsImJpbl9zaGFwZV9pbW11dGFibGUiLCJiaW5fc2l6ZV9pbW11dGFibGUiLCJiaW5fd3JpdGVfaW1tdXRhYmxlIiwiYmluX3dyaXRlcl9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUkMCIsImJpbl9yZWFkZXJfaW1tdXRhYmxlIiwiYmluX2ltbXV0YWJsZSIsImNvbXBhcmVfaW1tdXRhYmxlIiwiaGFzaF9mb2xkX2ltbXV0YWJsZSIsImZ1bmMkMyIsImhhc2hfaW1tdXRhYmxlIiwiaW1tdXRhYmxlX29mX3NleHAiLCJzZXhwX29mX2ltbXV0YWJsZSIsImdyb3VwJDExIiwiYmluX3NoYXBlX3JlYWRfd3JpdGUiLCJiaW5fc2l6ZV9yZWFkX3dyaXRlIiwiYmluX3dyaXRlX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlIiwiYmluX3JlYWRfcmVhZF93cml0ZSQwIiwiYmluX3JlYWRlcl9yZWFkX3dyaXRlIiwiYmluX3JlYWRfd3JpdGUiLCJjb21wYXJlX3JlYWRfd3JpdGUiLCJoYXNoX2ZvbGRfcmVhZF93cml0ZSIsImZ1bmMkNCIsImhhc2hfcmVhZF93cml0ZSIsInJlYWRfd3JpdGVfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZF93cml0ZSIsImdyb3VwJDEyIiwiYmluX3NoYXBlX3Blcm1zIiwiYmluX3NpemVfcGVybXMiLCJiaW5fd3JpdGVfcGVybXMiLCJiaW5fd3JpdGVyX3Blcm1zIiwiYmluX3JlYWRfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyQwIiwiYmluX3JlYWRlcl9wZXJtcyIsImJpbl9wZXJtcyIsImNvbXBhcmVfcGVybXMiLCJhXzEyNCIsImJfMTI1IiwiYV8xMjYiLCJiXzEyNyIsIm1ha2UiLCJlcnJvcl9zb3VyY2VfMDExIiwidGVzdHMiLCJiIiwic2l6ZV9vZl9iIiwid3JpdGVfYiIsImJpbl93cml0ZXJfYiIsIm9mX2IiLCJiaW5fcmVhZGVyX2IiLCJiaW5fYiIsImNtcF9iIiwiYV8wMDMiLCJiXzAwNCIsImFfMDA1IiwiYl8wMDYiLCJvZl9hXzAwNyIsIm9mX2JfMDA4Iiwic2V4cF8wMTMiLCJ0YWdfMDE0Iiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsIm9mX2FfMDI1Iiwib2ZfYl8wMjYiLCJhcmcwXzAyNyIsInJlczBfMDI4IiwiYXJnMF8wMjkiLCJyZXMwXzAzMCIsIm1hcCIsImYxIiwiZjIiLCJ4XzA0MCIsInhfMDQxIiwiZXF1YWwiLCJ4XzA0MiIsInhfMDQzIiwiYV8wMzUiLCJiXzAzNiIsInN5bWJvbCIsInkiLCJub3JtYWxpemUiLCJsZW5ndGhfZnVuIiwiaSIsInNsaWNlIiwic3ViX2Z1biIsInN0YXJ0Iiwic3RvcCIsInN0b3AkMCIsImxlbiIsInNpemVfb2ZfcyIsInYyIiwic2l6ZSIsIndyaXRlX3MiLCJwb3MkMiIsImJpbl93cml0ZXJfcyIsIm9mX3MiLCJhcmdfMiIsImJpbl9yZWFkZXJfcyIsImJpbl9zIiwidjEkMSIsInBvcyQzIiwiYXJnXzEkMSIsIm1lcmdlX2FsbCIsIkhlYXAiLCJzZXFzIiwibm90X3lldF9pbl9oZWFwIiwiaGVhcCIsImhlYXAkMCIsInNlcSQyIiwiZWx0JDAiLCJub3RfeWV0X2luX2hlYXAkMCIsInNlcSIsInNlcSQwIiwic2VxJDEiLCJlbHQiLCJ0X3NleHBfZ3JhbW1hciIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yIiwiZ2VuZXJhdG9yXzAwMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJvYnNlcnZlcl8wMDIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic2hyaW5rZXJfMDAxIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsImJpbmFyeV9zZWFyY2giLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsIm1lbSIsImlzX2VtcHR5IiwiaXRlciIsImZvbGQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImNyZWF0ZSIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiaW5pdCIsIm1ha2VfbWF0cml4IiwiY29weV9tYXRyaXgiLCJhcHBlbmQiLCJjb25jYXQiLCJjb3B5IiwiZmlsbCIsImJsaXQiLCJibGl0byIsInVuc2FmZV9ibGl0Iiwic3ViIiwic3VibyIsIm9mX2xpc3QiLCJmb2xkaW5nX21hcCIsImZvbGRpbmdfbWFwaSIsImZvbGRfbWFwIiwiZm9sZF9tYXBpIiwiaXRlcmkiLCJtYXBpIiwiZm9sZGkiLCJmb2xkX3JpZ2h0Iiwic29ydCIsInN0YWJsZV9zb3J0IiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwibWVyZ2UiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJwYXJ0aXRpb25fdGYiLCJwYXJ0aXRpb25pX3RmIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJ0cmFuc3Bvc2UiLCJ0cmFuc3Bvc2VfZXhuIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJmaWx0ZXJfbWFwaSIsImZvcl9hbGxpIiwiZXhpc3RzaSIsImNvdW50aSIsIml0ZXIyX2V4biIsIm1hcDJfZXhuIiwiZm9sZDJfZXhuIiwiZm9yX2FsbDJfZXhuIiwiZXhpc3RzMl9leG4iLCJmaWx0ZXIiLCJmaWx0ZXJpIiwic3dhcCIsInJldl9pbnBsYWNlIiwicmV2Iiwib2ZfbGlzdF9yZXYiLCJvZl9saXN0X21hcCIsIm9mX2xpc3RfbWFwaSIsIm9mX2xpc3RfcmV2X21hcCIsIm9mX2xpc3RfcmV2X21hcGkiLCJtYXBfaW5wbGFjZSIsImZpbmRfZXhuIiwiZmluZF9tYXBfZXhuIiwiZmluZGkiLCJmaW5kaV9leG4iLCJmaW5kX21hcGkiLCJmaW5kX21hcGlfZXhuIiwiZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicGVybXV0ZSIsInJhbmRvbV9lbGVtZW50IiwicmFuZG9tX2VsZW1lbnRfZXhuIiwiemlwIiwiemlwX2V4biIsInVuemlwIiwic29ydGVkX2NvcHkiLCJsYXN0IiwidG9fc2VxdWVuY2UiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwibmdldCIsIm5zZXQiLCJsZW5ndGgiLCJnZXQiLCJzZXQiLCJjb21wYXJlX3QiLCJhXzAwNCIsImJfMDA1IiwieF8wMDkiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiYmluX3NoYXBlX3QkNiIsInNpemVfb2ZfZiIsIndyaXRlX2YiLCJiaW5fd3JpdGVyX2YiLCJvZl9mIiwiYmluX3JlYWRlcl9mIiwiYmluX2YiLCJjbXBfZiIsImNtcF9zIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsIm9mX2ZfMDI1Iiwib2Zfc18wMjYiLCJ2MCIsInRhZzAiLCJ0YWcxIiwidHlwZW5hbWUiLCJ0YWdzIiwicG9seW1vcnBoaWMiLCJ2YWx1ZSIsInYwJDAiLCJ4MSIsIngyIiwiYV8wMzYiLCJiXzAzNyIsImFfMDQwIiwiYl8wNDEiLCJhXzAzOCIsImJfMDM5IiwibmFtZXMiLCJlcnJvcl9zb3VyY2VfMDIzIiwidjQiLCJ2MyIsInNpemUkMCIsInNpemUkMSIsInZfcG9zX2ZuYW1lIiwidl9wb3NfbG51bSIsInZfcG9zX2JvbCIsInZfcG9zX2NudW0iLCJuIiwibiQwIiwibiQxIiwicG9zX2NudW0iLCJyIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2NudW0kMCIsInBvc19ib2wkMCIsInBvc19sbnVtJDAiLCJwb3NfZm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsInBvc19mbmFtZV9mdW4iLCJwb3NfbG51bV9mdW4iLCJwb3NfYm9sX2Z1biIsInBvc19jbnVtX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsInBvc19mbmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwicG9zX2xudW1fZ2VuIiwiY29tcGlsZV9hY2MkMiIsInBvc19ib2xfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInBvc19jbnVtX2dlbiIsImFjYyIsIm1hcF9wb2x5IiwicmVjb3JkIiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwic2V4cF8wMDQiLCJmaWVsZF9zZXhwc18wMDUiLCJwb3NfZm5hbWVfMDA2IiwicG9zX2xudW1fMDA4IiwicG9zX2JvbF8wMTAiLCJwb3NfY251bV8wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDA0JDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI1IiwiZmllbGRfc2V4cF8wMTckNCIsImZpZWxkX3NleHBfMDE3IiwieF8wMjYiLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMSIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIyIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMTkiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMCIsInBvc19jbnVtXzAxMyIsInBvc19ib2xfMDExIiwicG9zX2xudW1fMDA5IiwicG9zX2ZuYW1lXzAwNyIsInBvc19jbnVtXzAzNCIsInBvc19ib2xfMDMyIiwicG9zX2xudW1fMDMwIiwicG9zX2ZuYW1lXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImEwIiwiYTAkMCIsInYxJDIiLCJ2MSQzIiwidjIkMCIsInYxJDQiLCJ2MyQwIiwidjIkMSIsInYxJDUiLCJzaXplJDIiLCJzaXplJDMiLCJ2MiQyIiwidjEkNiIsInNpemUkNCIsInYyJDMiLCJ2MSQ3Iiwic2l6ZSQ1IiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMiIsImFyZ18xJDMiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJzZXhwX29mX3QkNiIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJiaW5fc2l6ZV90JDYiLCJiaW5fd3JpdGVfdCQ2IiwiZmFpbHdpdGhzIiwic3RyaWN0IiwiaGVyZSIsIm1lc3NhZ2UiLCJmYWlsd2l0aHAiLCJ0b19ydW4iLCJydW4iLCJzYW5pdGl6ZSIsImZsdXNoZWQiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSIsInRvX3J1biQwIiwicnVuJDAiLCJmbHVzaGVkJDAiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSQwIiwic2FuaXRpemUkMCIsIm9mX2FfMDEwIiwieF8wMTEiLCJhXzAxMiIsImJfMDEzIiwiYV8wMTYiLCJiXzAxNyIsImFfMDE0IiwiYl8wMTUiLCJvZl9hXzAxOCIsInhfMDIwIiwib2ZfYV8wMjEiLCJ4XzAyMiIsIm1hcCQxIiwiZGVmYXVsdF9zZWVkIiwiZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MiIsImdlbmVyYXRvcl8wMTIiLCJnZW5lcmF0b3JfMDEzIiwic2l6ZV8wMTYiLCJyYW5kb21fMDE3Iiwic2l6ZV8wMTQiLCJyYW5kb21fMDE1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MiIsIm9ic2VydmVyXzAwNSIsIm9ic2VydmVyXzAwNiIsInhfMDA3Iiwic2l6ZV8wMDgiLCJoYXNoXzAwOSIsImhhc2hfMDA5JDAiLCJoYXNoXzAwOSQxIiwiaGFzaF8wMDkkMiIsImhhc2hfMDA5JDMiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyIiwic2hyaW5rZXJfMDAyIiwieF8wMDQiLCJ4XzAwMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQzIiwiZ2VuZXJhdG9yXzAzMyIsImdlbmVyYXRvcl8wMzQiLCJnZW5lcmF0b3JfMDM1Iiwic2l6ZV8wNDAiLCJyYW5kb21fMDQxIiwic2l6ZV8wMzgiLCJyYW5kb21fMDM5Iiwic2l6ZV8wMzYiLCJyYW5kb21fMDM3IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MyIsIm9ic2VydmVyXzAyNCIsIm9ic2VydmVyXzAyNSIsIm9ic2VydmVyXzAyNiIsInhfMDI3Iiwic2l6ZV8wMjgiLCJoYXNoXzAyOSIsInhfMDMwIiwiaGFzaF8wMjkkMCIsImhhc2hfMDI5JDEiLCJ4XzAzMSIsImhhc2hfMDI5JDIiLCJoYXNoXzAyOSQzIiwieF8wMzIiLCJoYXNoXzAyOSQ0IiwiaGFzaF8wMjkkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDMiLCJzaHJpbmtlcl8wMTgiLCJzaHJpbmtlcl8wMTkiLCJzaHJpbmtlcl8wMjAiLCJ4XzAyMSIsInhfMDIzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDQiLCJnZW5lcmF0b3JfMDYxIiwiZ2VuZXJhdG9yXzA2MiIsImdlbmVyYXRvcl8wNjMiLCJnZW5lcmF0b3JfMDY0Iiwic2l6ZV8wNzEiLCJyYW5kb21fMDcyIiwic2l6ZV8wNjkiLCJyYW5kb21fMDcwIiwic2l6ZV8wNjciLCJyYW5kb21fMDY4Iiwic2l6ZV8wNjUiLCJyYW5kb21fMDY2IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NCIsIm9ic2VydmVyXzA1MCIsIm9ic2VydmVyXzA1MSIsIm9ic2VydmVyXzA1MiIsIm9ic2VydmVyXzA1MyIsInhfMDU0Iiwic2l6ZV8wNTUiLCJoYXNoXzA1NiIsInhfMDU3IiwiaGFzaF8wNTYkMCIsImhhc2hfMDU2JDEiLCJ4XzA1OCIsImhhc2hfMDU2JDIiLCJoYXNoXzA1NiQzIiwieF8wNTkiLCJoYXNoXzA1NiQ0IiwiaGFzaF8wNTYkNSIsInhfMDYwIiwiaGFzaF8wNTYkNiIsImhhc2hfMDU2JDciLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ0Iiwic2hyaW5rZXJfMDQyIiwic2hyaW5rZXJfMDQzIiwic2hyaW5rZXJfMDQ0Iiwic2hyaW5rZXJfMDQ1IiwieF8wNDYiLCJ4XzA0NyIsInhfMDQ4IiwieF8wNDkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NSIsImdlbmVyYXRvcl8wOTYiLCJnZW5lcmF0b3JfMDk3IiwiZ2VuZXJhdG9yXzA5OCIsImdlbmVyYXRvcl8wOTkiLCJnZW5lcmF0b3JfMTAwIiwic2l6ZV8xMDkiLCJyYW5kb21fMTEwIiwic2l6ZV8xMDciLCJyYW5kb21fMTA4Iiwic2l6ZV8xMDUiLCJyYW5kb21fMTA2Iiwic2l6ZV8xMDMiLCJyYW5kb21fMTA0Iiwic2l6ZV8xMDEiLCJyYW5kb21fMTAyIiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NSIsIm9ic2VydmVyXzA4MyIsIm9ic2VydmVyXzA4NCIsIm9ic2VydmVyXzA4NSIsIm9ic2VydmVyXzA4NiIsIm9ic2VydmVyXzA4NyIsInhfMDg4Iiwic2l6ZV8wODkiLCJoYXNoXzA5MCIsInhfMDkxIiwiaGFzaF8wOTAkMCIsImhhc2hfMDkwJDEiLCJ4XzA5MiIsImhhc2hfMDkwJDIiLCJoYXNoXzA5MCQzIiwiaGFzaF8wOTAkNCIsImhhc2hfMDkwJDUiLCJoYXNoXzA5MCQ2IiwiaGFzaF8wOTAkNyIsInhfMDk1IiwiaGFzaF8wOTAkOCIsImhhc2hfMDkwJDkiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1Iiwic2hyaW5rZXJfMDczIiwic2hyaW5rZXJfMDc0Iiwic2hyaW5rZXJfMDc1Iiwic2hyaW5rZXJfMDc2Iiwic2hyaW5rZXJfMDc3IiwieF8wNzgiLCJ4XzA3OSIsInhfMDgwIiwieF8wODEiLCJ4XzA4MiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ2IiwiZ2VuZXJhdG9yXzEzOCIsImdlbmVyYXRvcl8xMzkiLCJnZW5lcmF0b3JfMTQwIiwiZ2VuZXJhdG9yXzE0MSIsImdlbmVyYXRvcl8xNDIiLCJnZW5lcmF0b3JfMTQzIiwic2l6ZV8xNTQiLCJyYW5kb21fMTU1Iiwic2l6ZV8xNTIiLCJyYW5kb21fMTUzIiwic2l6ZV8xNTAiLCJyYW5kb21fMTUxIiwic2l6ZV8xNDgiLCJyYW5kb21fMTQ5Iiwic2l6ZV8xNDYiLCJyYW5kb21fMTQ3Iiwic2l6ZV8xNDQiLCJyYW5kb21fMTQ1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NiIsIm9ic2VydmVyXzEyMyIsIm9ic2VydmVyXzEyNCIsIm9ic2VydmVyXzEyNSIsIm9ic2VydmVyXzEyNiIsIm9ic2VydmVyXzEyNyIsIm9ic2VydmVyXzEyOCIsInhfMTI5Iiwic2l6ZV8xMzAiLCJoYXNoXzEzMSIsInhfMTMyIiwiaGFzaF8xMzEkMCIsImhhc2hfMTMxJDEiLCJ4XzEzMyIsImhhc2hfMTMxJDIiLCJoYXNoXzEzMSQzIiwieF8xMzQiLCJoYXNoXzEzMSQ0IiwiaGFzaF8xMzEkNSIsInhfMTM1IiwiaGFzaF8xMzEkNiIsImhhc2hfMTMxJDciLCJ4XzEzNiIsImhhc2hfMTMxJDgiLCJoYXNoXzEzMSQ5IiwieF8xMzciLCJoYXNoXzEzMSQxMCIsImhhc2hfMTMxJDExIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NiIsInNocmlua2VyXzExMSIsInNocmlua2VyXzExMiIsInNocmlua2VyXzExMyIsInNocmlua2VyXzExNCIsInNocmlua2VyXzExNSIsInNocmlua2VyXzExNiIsInhfMTE3IiwieF8xMTgiLCJ4XzExOSIsInhfMTIwIiwieF8xMjEiLCJ4XzEyMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMiIsImdlbmVyYXRvcl8xNjYiLCJnZW5lcmF0b3JfMTY3Iiwic2l6ZV8xNjgiLCJyYW5kb21fMTY5IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTIiLCJvYnNlcnZlcl8xNjAiLCJvYnNlcnZlcl8xNjEiLCJzaXplXzE2NCIsImhhc2hfMTY1IiwieF8xNjMiLCJ4XzE2MiIsImhhc2hfMTY1JDAiLCJoYXNoXzE2NSQxIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTIiLCJzaHJpbmtlcl8xNTYiLCJzaHJpbmtlcl8xNTciLCJ4XzE1OSIsInhfMTU4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUzIiwiZ2VuZXJhdG9yXzE4NCIsImdlbmVyYXRvcl8xODUiLCJnZW5lcmF0b3JfMTg2Iiwic2l6ZV8xODciLCJyYW5kb21fMTg4IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTMiLCJvYnNlcnZlcl8xNzYiLCJvYnNlcnZlcl8xNzciLCJvYnNlcnZlcl8xNzgiLCJzaXplXzE4MiIsImhhc2hfMTgzIiwieF8xODEiLCJ4XzE4MCIsInhfMTc5IiwiaGFzaF8xODMkMCIsImhhc2hfMTgzJDEiLCJoYXNoXzE4MyQyIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTMiLCJzaHJpbmtlcl8xNzAiLCJzaHJpbmtlcl8xNzEiLCJzaHJpbmtlcl8xNzIiLCJ4XzE3NSIsInhfMTc0IiwieF8xNzMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTQiLCJnZW5lcmF0b3JfMjA3IiwiZ2VuZXJhdG9yXzIwOCIsImdlbmVyYXRvcl8yMDkiLCJnZW5lcmF0b3JfMjEwIiwic2l6ZV8yMTEiLCJyYW5kb21fMjEyIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTQiLCJvYnNlcnZlcl8xOTciLCJvYnNlcnZlcl8xOTgiLCJvYnNlcnZlcl8xOTkiLCJvYnNlcnZlcl8yMDAiLCJzaXplXzIwNSIsImhhc2hfMjA2IiwieF8yMDQiLCJ4XzIwMyIsInhfMjAyIiwieF8yMDEiLCJoYXNoXzIwNiQwIiwiaGFzaF8yMDYkMSIsImhhc2hfMjA2JDIiLCJoYXNoXzIwNiQzIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTQiLCJzaHJpbmtlcl8xODkiLCJzaHJpbmtlcl8xOTAiLCJzaHJpbmtlcl8xOTEiLCJzaHJpbmtlcl8xOTIiLCJ4XzE5NiIsInhfMTk1IiwieF8xOTQiLCJ4XzE5MyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNSIsImdlbmVyYXRvcl8yMzUiLCJnZW5lcmF0b3JfMjM2IiwiZ2VuZXJhdG9yXzIzNyIsImdlbmVyYXRvcl8yMzgiLCJnZW5lcmF0b3JfMjM5Iiwic2l6ZV8yNDAiLCJyYW5kb21fMjQxIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTUiLCJvYnNlcnZlcl8yMjMiLCJvYnNlcnZlcl8yMjQiLCJvYnNlcnZlcl8yMjUiLCJvYnNlcnZlcl8yMjYiLCJvYnNlcnZlcl8yMjciLCJzaXplXzIzMyIsImhhc2hfMjM0IiwieF8yMzIiLCJ4XzIzMSIsInhfMjMwIiwieF8yMjkiLCJ4XzIyOCIsImhhc2hfMjM0JDAiLCJoYXNoXzIzNCQxIiwiaGFzaF8yMzQkMiIsImhhc2hfMjM0JDMiLCJoYXNoXzIzNCQ0IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTUiLCJzaHJpbmtlcl8yMTMiLCJzaHJpbmtlcl8yMTQiLCJzaHJpbmtlcl8yMTUiLCJzaHJpbmtlcl8yMTYiLCJzaHJpbmtlcl8yMTciLCJ4XzIyMiIsInhfMjIxIiwieF8yMjAiLCJ4XzIxOSIsInhfMjE4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU2IiwiZ2VuZXJhdG9yXzI2OCIsImdlbmVyYXRvcl8yNjkiLCJnZW5lcmF0b3JfMjcwIiwiZ2VuZXJhdG9yXzI3MSIsImdlbmVyYXRvcl8yNzIiLCJnZW5lcmF0b3JfMjczIiwic2l6ZV8yNzQiLCJyYW5kb21fMjc1IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTYiLCJvYnNlcnZlcl8yNTQiLCJvYnNlcnZlcl8yNTUiLCJvYnNlcnZlcl8yNTYiLCJvYnNlcnZlcl8yNTciLCJvYnNlcnZlcl8yNTgiLCJvYnNlcnZlcl8yNTkiLCJzaXplXzI2NiIsImhhc2hfMjY3IiwieF8yNjUiLCJ4XzI2NCIsInhfMjYzIiwieF8yNjIiLCJ4XzI2MSIsInhfMjYwIiwiaGFzaF8yNjckMCIsImhhc2hfMjY3JDEiLCJoYXNoXzI2NyQyIiwiaGFzaF8yNjckMyIsImhhc2hfMjY3JDQiLCJoYXNoXzI2NyQ1IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTYiLCJzaHJpbmtlcl8yNDIiLCJzaHJpbmtlcl8yNDMiLCJzaHJpbmtlcl8yNDQiLCJzaHJpbmtlcl8yNDUiLCJzaHJpbmtlcl8yNDYiLCJzaHJpbmtlcl8yNDciLCJ4XzI1MyIsInhfMjUyIiwieF8yNTEiLCJ4XzI1MCIsInhfMjQ5IiwieF8yNDgiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjIiLCJvYnNlcnZlcl8yODIiLCJvYnNlcnZlcl8yODMiLCJnZW5lcmF0b3JfMjg0IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4zIiwib2JzZXJ2ZXJfMjkzIiwib2JzZXJ2ZXJfMjk0Iiwib2JzZXJ2ZXJfMjk1IiwiZ2VuZXJhdG9yXzI5NiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNCIsIm9ic2VydmVyXzMwNyIsIm9ic2VydmVyXzMwOCIsIm9ic2VydmVyXzMwOSIsIm9ic2VydmVyXzMxMCIsImdlbmVyYXRvcl8zMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjUiLCJvYnNlcnZlcl8zMjQiLCJvYnNlcnZlcl8zMjUiLCJvYnNlcnZlcl8zMjYiLCJvYnNlcnZlcl8zMjciLCJvYnNlcnZlcl8zMjgiLCJnZW5lcmF0b3JfMzI5IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm42Iiwib2JzZXJ2ZXJfMzQ0Iiwib2JzZXJ2ZXJfMzQ1Iiwib2JzZXJ2ZXJfMzQ2Iiwib2JzZXJ2ZXJfMzQ3Iiwib2JzZXJ2ZXJfMzQ4Iiwib2JzZXJ2ZXJfMzQ5IiwiZ2VuZXJhdG9yXzM1MCIsIm9mX2hhc2giLCJNIiwib2ZfcHJlZGljYXRlIiwic2luZ2xldG9uIiwiZG91YmxldG9uIiwiZW51bSQwIiwibGlzdCIsIm9mX2Z1biIsImNvbXBhcmlzb24iLCJlcSIsImx0IiwiZ3QiLCJjIiwicmV0dXJuJDAiLCJzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCIsInNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCIsInNpbmdsZXRvbiQwIiwiZG91YmxldG9uJDAiLCJyYW5kb20iLCJvZl9mdW4kMCIsIm9mX3NlcXVlbmNlIiwicCIsImsiLCJib3VuZGVkX2dlb21ldHJpYyIsIm1heGltdW0iLCJnZW9tZXRyaWMiLCJsaXN0X3dpdGhfbGVuZ3RoIiwiY29tcGFyZV9mbiIsImRvbSIsImdldF9pbmRleCIsImJfMzUyIiwiYV8zNTEiLCJlcXVhbF9mbiIsImNtcCIsImVtcHR5Iiwibm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSIsInJhbmRvbV9zdGF0ZV9vZl9zZWVkIiwic2VlZCIsInN0ciIsIm1ha2Vfc2VlZCIsInN0cmluZyIsIm1ha2Vfc2hyaW5rX2NvdW50IiwibWFrZV9jb25maWciLCJzaXplcyIsInRyaWFscyIsInNocmlua19hdHRlbXB0cyIsIm1ha2VfdGVzdF9tIiwiZ2VuIiwic2hyaW5rZXIiLCJzZXhwX29mIiwicmFuZG9tX3ZhbHVlIiwic3RoJDAiLCJyYW5kb21fc2VxdWVuY2UiLCJjb25maWciLCJzZXF1ZW5jZSIsInRlc3QiLCJleGFtcGxlcyIsInRlc3RfbSIsInRlc3Rfb3JfZXJyb3IiLCJ0ZXN0X2Rpc3RpbmN0X3ZhbHVlcyIsImRpc3RpbmN0X3ZhbHVlcyIsInNldCQwIiwiYWN0dWFsX2NvdW50Iiwic2V4cF9vZl9lbHQiLCJ4XzM1MyIsInZhbHVlcyIsIm1hdGNoIiwicmVzIiwiaCIsInRlc3RfY2FuX2dlbmVyYXRlIiwic2V4cF9vZl92YWx1ZSIsInhfMzU0IiwiZGVmYXVsdF90cmlhbF9jb3VudCIsImRlZmF1bHRfc2l6ZXMiLCJjb21wYXJlX2EiLCJjb21wYXJlX2IiLCJ0XzAwNiIsInRfMDA1IiwidF8wMDgiLCJ0XzAwNyIsImdlbl9ub25fZW1wdHkiLCJnZW5fd2l0aF9sZW5ndGgiLCJnZW5fZmlsdGVyZWQiLCJnZW5fcGVybXV0YXRpb25zIiwiZ2VuZXJhdGVfYSIsIm9ic2VydmVfYSIsInNocmlua19hIiwibW9kdWxlX25hbWUkMCIsIm1vZHVsZV9uYW1lIiwiaGFzaGFibGVfcyIsImZpbmRfbXVsdGkiLCJyZW1vdmVfbXVsdGkiLCJhZGRfbXVsdGkiLCJkZWNyIiwiaW5jciIsInRvX2FsaXN0Iiwic2ltaWxhciIsImZpbHRlcl9tYXBpX2lucGxhY2UiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJmaWx0ZXJpX2lucGxhY2UiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJkYXRhIiwia2V5cyIsIm1lcmdlX2ludG8iLCJmaW5kX2FuZF9yZW1vdmUiLCJmaW5kaV9hbmRfY2FsbDIiLCJmaW5kaV9hbmRfY2FsbDEiLCJmaW5kaV9hbmRfY2FsbCIsImZpbmRfYW5kX2NhbGwyIiwiZmluZF9hbmRfY2FsbDEiLCJmaW5kX2FuZF9jYWxsIiwiZmluZGlfb3JfYWRkIiwiZmluZF9vcl9hZGQiLCJwYXJ0aXRpb25fbWFwaSIsInBhcnRpdGlvbl9tYXAiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9leG4iLCJjaG9vc2UiLCJyZW1vdmUiLCJpdGVyX2tleXMiLCJjbGVhciIsInNleHBfb2Zfa2V5IiwiY3JlYXRlX3dpdGhfa2V5X2V4biIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV9tYXBwZWQiLCJvZl9hbGlzdF9tdWx0aSIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X29yX2Vycm9yIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIiwib2ZfYWxpc3QiLCJoYXNoX3BhcmFtIiwidmFsaWRhdGUiLCJncm93dGhfYWxsb3dlZCIsImhhc2hhYmxlIiwib2ZfYWxpc3QkMCIsImwiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMkMCIsIm9mX2FsaXN0X29yX2Vycm9yJDAiLCJvZl9hbGlzdF9leG4kMCIsIm9mX2FsaXN0X211bHRpJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJnZXRfa2V5IiwiZ2V0X2RhdGEiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwiY29tYmluZSIsImJpbl9zaGFwZV9lbCIsImJpbl9zaXplX2VsIiwiYmluX3dyaXRlX2VsIiwiYmluX3JlYWRfZWwiLCJpdGVyJDEiLCJrZXkiLCJuZXh0IiwiaW52YXJpYW50X2tleSIsInNleHBfb2ZfdiIsInZfb2Zfc2V4cCIsImVxdWFsX21fdCIsIm1fdF9zZXhwX2dyYW1tYXIiLCJtX3Rfb2Zfc2V4cCIsInNleHBfb2ZfbV90Iiwib2ZfYWxpc3Rfb3B0aW9uIiwiYWxpc3QiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9tX3QiLCJLZXkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhIiwic2l6ZV8wMDQiLCJyYW5kb21fMDA1IiwicXVpY2tjaGVja19vYnNlcnZlcl9tX3QiLCJxdWlja2NoZWNrX29ic2VydmVyX2RhdGEiLCJ4XzAwNiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfbV90IiwicXVpY2tjaGVja19zaHJpbmtlcl9kYXRhIiwiaGFzaGFibGUkMCIsIm9mX2xpc3QkMCIsImVycm9yX3NvdXJjZV8wMzEiLCJzaXplX29mX2siLCJzaXplX29mX3YiLCJhcmdzJDAiLCJzaXplX2FyZ3MkMCIsImFyZ3MkMSIsInNpemVfYXJncyQxIiwid3JpdGVfayIsIndyaXRlX3YiLCJiaW5fd3JpdGVyX2siLCJiaW5fd3JpdGVyX3YiLCJvZl9rIiwib2ZfdiIsImJpbl9yZWFkZXJfayIsImJpbl9yZWFkZXJfdiIsImJpbl9rIiwiYmluX3YiLCJjbXBfayIsImNtcF92IiwidF8wMDQiLCJ0XzAwMyIsInJpZ2h0XzAwOCIsImxlZnRfMDA3IiwicmlnaHRfMDEyIiwibGVmdF8wMTEiLCJ0XzAxNCIsInRfMDEzIiwidF8wMTYiLCJ0XzAxNSIsInJpZ2h0XzAxMCIsImxlZnRfMDA5Iiwib2Zfa18wMTciLCJvZl92XzAxOCIsInNleHBfMDQ1IiwiYXJnMV8wNDIiLCJhcmcwXzA0MSIsInJlczBfMDQzIiwiYXRvbV8wMjEiLCJzZXhwX2FyZ3NfMDI0IiwiYXRvbV8wMjEkMCIsImFyZzBfMDMyIiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczFfMDI5IiwicmVzMF8wMzMiLCJhcmcwXzAzNSIsInJlczBfMDM2IiwiYXJnMF8wMzgiLCJyZXMxXzA0NCIsIm9mX2tfMDQ2Iiwib2Zfdl8wNDciLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJ2XzA0OCIsInJlczFfMDU4Iiwidl8wNTAiLCJhcmcxXzA1MiIsImFyZzBfMDUxIiwicmVzMF8wNTMiLCJyZXMxXzA1NCIsInZfMDQ5IiwiZGlmZiIsImskMCIsImRpZmYkMCIsInYkMCIsIm1hcF9kYXRhIiwibGVmdCIsInJpZ2h0IiwiZ2VuX3RyZWUiLCJjb21wYXJhdG9yIiwia19nZW4iLCJ2X2dlbiIsIm9ic190cmVlIiwia19vYnMiLCJ2X29icyIsInNocl90cmVlIiwia19zaHIiLCJ2X3NociIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJoYXNoX2ZvbGRfZGlyZWN0Iiwib2ZfaGFzaHRibF9leG4iLCJoYXNodGJsIiwidHJlZV9vZl9oYXNodGJsX2V4biIsImtleV9zZXQiLCJrZXlfc2V0X29mX3RyZWUiLCJvZl9rZXlfc2V0IiwidHJlZV9vZl9rZXlfc2V0IiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsInRvX3RyZWUkMCIsInJhbmsiLCJudGhfZXhuIiwibnRoIiwiY2xvc2VzdF9rZXkiLCJyYW5nZV90b19hbGlzdCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwic3VicmFuZ2UiLCJzcGxpdCIsIm1heF9lbHRfZXhuIiwibWluX2VsdF9leG4iLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwic3ltbWV0cmljX2RpZmYiLCJtZXJnZV9za2V3ZWQiLCJrZXlzJDAiLCJjb21wYXJlX2RpcmVjdCIsImNvbWJpbmVfZXJyb3JzIiwiZm9sZDIiLCJpdGVyMiIsIml0ZXJpX3VudGlsIiwiaW52YXJpYW50cyIsInZhbGlkYXRlaSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMCIsImtleV9zZXQkMCIsImtleV9zZXQkMSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVtcHR5JDAiLCJvZl9hbGlzdF9mb2xkJDAiLCJvZl9hbGlzdF9yZWR1Y2UkMCIsIm9mX2l0ZXJpJDAiLCJvZl9pdGVyaV9leG4kMCIsIm9mX3NvcnRlZF9hcnJheSQwIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQwIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDAiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZSQwIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMCIsIm9mX3NlcXVlbmNlX2V4biQwIiwib2Zfc2VxdWVuY2VfbXVsdGkkMCIsIm9mX3NlcXVlbmNlX2ZvbGQkMCIsIm9mX3NlcXVlbmNlX3JlZHVjZSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJmb3JfYWxsaSQwIiwiZXhpc3RzaSQwIiwiY291bnQkMCIsImNvdW50aSQwIiwic3BsaXQkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwidG9fdHJlZSIsImRhdGFfZXF1YWwiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQiLCJtaW4iLCJtYXgiLCJvcmRlciIsImtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byIsImtleXNfbGVzc19vcl9lcXVhbF90byIsImhvdyIsInNlZ21lbnRfb2YiLCJtYXBfa2V5cyIsIm1hcF9rZXlzX2V4biIsImluaXRfZm9yX2Jpbl9wcm90IiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2Zfc29ydGVkX2FycmF5JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX2FsaXN0JDEiLCJvZl9hbGlzdF9vcl9lcnJvciQxIiwib2ZfYWxpc3RfZXhuJDEiLCJvZl9hbGlzdF9tdWx0aSQxIiwib2ZfYWxpc3RfZm9sZCQxIiwib2ZfYWxpc3RfcmVkdWNlJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9rZXlfc2V0JDEiLCJ0b190cmVlJDIiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDEiLCJzZXQkMSIsImFkZCQxIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJmaW5kX2V4biQxIiwiZmluZCQxIiwicmVtb3ZlJDEiLCJtZW0kMSIsIml0ZXJfa2V5cyQxIiwiaXRlciQyIiwiaXRlcmkkMSIsIml0ZXJpX3VudGlsJDEiLCJpdGVyMiQxIiwibWFwJDIiLCJtYXBpJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlciQxIiwiZmlsdGVyaSQxIiwiZmlsdGVyX21hcCQxIiwiZmlsdGVyX21hcGkkMSIsInBhcnRpdGlvbl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwJDEiLCJwYXJ0aXRpb25pX3RmJDEiLCJwYXJ0aXRpb25fdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJjb21wYXJlX2RpcmVjdCQxIiwia2V5cyQyIiwiZGF0YSQxIiwidG9fYWxpc3QkMSIsInZhbGlkYXRlJDEiLCJ2YWxpZGF0ZWkkMSIsInN5bW1ldHJpY19kaWZmJDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImZvcl9hbGwkMSIsImZvcl9hbGxpJDEiLCJleGlzdHMkMSIsImV4aXN0c2kkMSIsImNvdW50JDEiLCJjb3VudGkkMSIsInNwbGl0JDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInRfc2V4cF9ncmFtbWFyJDAiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxMCIsImVycm9yX3NvdXJjZV8wNTQiLCJzZXhwXzAxMiIsInRhZ18wMTMiLCJzZXhwX2FyZ3NfMDE0Iiwic2V4cF9hcmdzXzAxOSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJvZl9hXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjciLCJ4JDEiLCJnZW5lcmF0b3JfMDQ0Iiwic2l6ZV8wNDkiLCJyYW5kb21fMDUwIiwic2l6ZV8wNDciLCJyYW5kb21fMDQ4Iiwic2l6ZV8wNDUiLCJyYW5kb21fMDQ2Iiwib2JzZXJ2ZXJfMDM4IiwieF8wMzkiLCJoYXNoXzA0MSIsImhhc2hfMDQxJDAiLCJoYXNoXzA0MSQxIiwiaGFzaF8wNDEkMiIsImhhc2hfMDQxJDMiLCJoYXNoXzA0MSQ0Iiwic2hyaW5rZXJfMDM1IiwieF8wMzYiLCJ4XzAzNyIsIm9mX2FfMDUxIiwic2V4cF8wNTYiLCJ0YWdfMDU3Iiwic2V4cF9hcmdzXzA1OCIsImFyZzBfMDU5IiwicmVzMF8wNjAiLCJzZXhwX2FyZ3NfMDYzIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsIm9mX2FfMDY3IiwiYXJnMF8wNjgiLCJyZXMwXzA2OSIsImFyZzBfMDcwIiwicmVzMF8wNzEiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImVsdF9nZW4iLCJlbHRfb2JzIiwiZWx0X3NociIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInRvX21hcCIsIm9mX21hcF9rZXlzIiwib2ZfaGFzaF9zZXQiLCJoc2V0Iiwib2ZfaGFzaHRibF9rZXlzIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInJlbW92ZV9pbmRleCQwIiwiZ3JvdXBfYnkkMCIsImNob29zZV9leG4kMCIsImNob29zZSQwIiwiZWxlbWVudHMkMCIsImFyZV9kaXNqb2ludCQwIiwiaXNfc3Vic2V0JDAiLCJpbnRlciQwIiwidW5pb24kMCIsInRvX2FycmF5JDAiLCJmaW5kX21hcCQwIiwic3VtJDAiLCJmb2xkX3Jlc3VsdCQwIiwidG9fbWFwJDAiLCJ1bmlvbiQxIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMSIsImRpZmYkMSIsInN1bSQxIiwiZmluZF9tYXAkMSIsInJlbW92ZV9pbmRleCQxIiwiaXNfc3Vic2V0JDEiLCJhcmVfZGlzam9pbnQkMSIsIm9mX2FycmF5JDAiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDEiLCJlbGVtZW50cyQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJncm91cF9ieSQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQxIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwib2ZfYXJyYXkiLCJzdGFibGVfZGVkdXBfbGlzdCIsInhzIiwib2YiLCJlcXVpdiIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwidCQwIiwiZWxlbWVudHMiLCJ1bmlvbiIsImludGVyIiwiaXNfc3Vic2V0IiwiYXJlX2Rpc2pvaW50IiwiZ3JvdXBfYnkiLCJyZW1vdmVfaW5kZXgiLCJtZXJnZV90b19zZXF1ZW5jZSIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwiaW52YXJpYW50cyQyIiwibGVuZ3RoJDIiLCJpc19lbXB0eSQyIiwiZWxlbWVudHMkMiIsIm1pbl9lbHQkMiIsIm1pbl9lbHRfZXhuJDIiLCJtYXhfZWx0JDIiLCJtYXhfZWx0X2V4biQyIiwiY2hvb3NlJDIiLCJjaG9vc2VfZXhuJDIiLCJ0b19saXN0JDIiLCJ0b19hcnJheSQyIiwiaXRlciQzIiwiaXRlcjIkMiIsImV4aXN0cyQyIiwiZm9yX2FsbCQyIiwiY291bnQkMiIsInN1bSQyIiwiZmluZCQyIiwiZmluZF9leG4kMiIsImZpbmRfbWFwJDIiLCJmb2xkJDIiLCJmb2xkX3VudGlsJDIiLCJmb2xkX3JpZ2h0JDIiLCJmb2xkX3Jlc3VsdCQyIiwibWFwJDMiLCJmaWx0ZXIkMiIsImZpbHRlcl9tYXAkMyIsInBhcnRpdGlvbl90ZiQyIiwibWVtJDIiLCJhZGQkMiIsInJlbW92ZSQyIiwidW5pb24kMiIsImludGVyJDIiLCJkaWZmJDIiLCJzeW1tZXRyaWNfZGlmZiQyIiwiY29tcGFyZV9kaXJlY3QkMiIsImVxdWFsJDIiLCJpc19zdWJzZXQkMiIsImFyZV9kaXNqb2ludCQyIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2hhc2hfc2V0JDMiLCJvZl9oYXNodGJsX2tleXMkMyIsIm9mX2FycmF5JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwidW5pb25fbGlzdCQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsImdyb3VwX2J5JDIiLCJzcGxpdCQyIiwibnRoJDIiLCJyZW1vdmVfaW5kZXgkMiIsIm9mX3RyZWUkMyIsInRvX3NlcXVlbmNlJDIiLCJiaW5hcnlfc2VhcmNoJDIiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQyIiwibWVyZ2VfdG9fc2VxdWVuY2UkMiIsIm9mX21hcF9rZXlzJDMiLCJ0b19tYXAkMiIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwic3RhYmxlX2RlZHVwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhXzAxMCIsImJfMDExIiwibm9uZSIsInNvbWUiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInIxIiwidDEkMCIsInIyIiwidDIkMCIsIm4xIiwibjIiLCJpc19jb21wcmVzc2VkIiwicGh5c19lcXVhbCIsInVuaW9uX2ZpbmRfZ2V0X2NoZWNrX25vX3BlbmRpbiIsImNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyIsImluY3JfbGVuZ3RoIiwiaW5jcl9wZW5kaW5nX2l0ZXJzIiwiZGVjcl9wZW5kaW5nX2l0ZXJzIiwid2l0aF9pdGVyYXRpb25fMiIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiaXNfZmlyc3QiLCJpc19sYXN0IiwibWVtX2VsdCIsInByZXYkMCIsImluc2VydF9hZnRlciQwIiwiaW5zZXJ0X2JlZm9yZSQwIiwibmV3X2VsdCIsImluc2VydF9lbXB0eSIsImluc2VydF9sYXN0IiwiaW5zZXJ0X2ZpcnN0IiwicmVtb3ZlX2xhc3QiLCJyZW1vdmVfZmlyc3QiLCJzZWNvbmQiLCJuZXdfdCIsInZhbHVlJDAiLCJtb3ZlX2JlZm9yZSIsImFuY2hvciIsImFmdGVyX2VsdCIsIm1vdmVfdG9fZnJvbnQiLCJtb3ZlX2FmdGVyIiwibW92ZV90b19iYWNrIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJ0XzAxOCIsInRfMDE3IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdmFsdWUiLCJ2X3RleHQiLCJvZl90ZXh0IiwidmFsdWVfb2Zfc2V4cCIsInRleHQiLCJmaWxlbmFtZSIsImFubm90YXRlZCIsInRfc2V4cF9ncmFtbWFyJDEiLCJvZl92YWx1ZSIsImJpbl9zaGFwZV9ub19yYWlzZSIsImJpbl9zaXplX25vX3JhaXNlIiwiYmluX3dyaXRlX25vX3JhaXNlIiwiYmluX3dyaXRlcl9ub19yYWlzZSIsImJpbl9yZWFkX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UkMCIsImJpbl9yZWFkZXJfbm9fcmFpc2UiLCJiaW5fbm9fcmFpc2UiLCJub19yYWlzZV9vZl9zZXhwIiwib2ZfYV8wMTkiLCJzZXhwX29mX25vX3JhaXNlIiwib2Zfc2V4cF9hbGxvd19leHRyYV9maWVsZHNfcmVjIiwib2Zfc2V4cCIsInNleHBfb2ZfZGF0YSIsImFyZzFfMDAyIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImt2IiwicmVhZCIsImVuc3VyZV9jYW5fbW9kaWZ5IiwibG9va3VwIiwibG9va3VwX2V4biIsImVucXVldWUiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlX2JhY2siLCJlbnF1ZXVlX2Zyb250IiwiZW5xdWV1ZV9leG4iLCJlbnF1ZXVlX2JhY2tfZXhuIiwiZW5xdWV1ZV9mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFja19leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFjayIsImxvb2t1cF9hbmRfbW92ZV90b19mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQiLCJkZXF1ZXVlX3dpdGhfa2V5IiwibWF5YmVfa3YiLCJkZXF1ZXVlX3dpdGhfa2V5X2V4biIsImRlcXVldWVfYmFja193aXRoX2tleSIsImRlcXVldWVfYmFja193aXRoX2tleV9leG4iLCJkZXF1ZXVlX2Zyb250X3dpdGhfa2V5IiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9iYWNrIiwiZGVxdWV1ZV9mcm9udCIsImxhc3Rfd2l0aF9rZXkiLCJmaXJzdF93aXRoX2tleSIsImRlcXVldWVfZXhuIiwiZGVxdWV1ZV9iYWNrX2V4biIsImRlcXVldWVfZnJvbnRfZXhuIiwiYWMiLCJkZXF1ZXVlX2FsbCIsInJlbW92ZV9leG4iLCJsb29rdXBfYW5kX3JlbW92ZSIsInJlcGxhY2UiLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwiZXNjYXBlZCIsImNvbnRhaW5zIiwidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsImluZGV4IiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fZXhuIiwicmluZGV4IiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tIiwicmluZGV4X2Zyb21fZXhuIiwic3Vic3RyX2luZGV4Iiwic3Vic3RyX2luZGV4X2V4biIsInN1YnN0cl9pbmRleF9hbGwiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCIsInN1YnN0cl9yZXBsYWNlX2FsbCIsImlzX3N1YnN0cmluZyIsImlzX3N1YnN0cmluZ19hdCIsInRvX2xpc3RfcmV2IiwiaXNfc3VmZml4IiwiaXNfcHJlZml4IiwibHNwbGl0Ml9leG4iLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJyc3BsaXQyIiwic3BsaXRfb25fY2hhcnMiLCJzcGxpdF9saW5lcyIsImxmaW5kaSIsInJmaW5kaSIsImxzdHJpcCIsInJzdHJpcCIsInN0cmlwIiwidHIiLCJ0cl9tdWx0aSIsImNob3Bfc3VmZml4X2V4biIsImNob3BfcHJlZml4X2V4biIsImNob3Bfc3VmZml4IiwiY2hvcF9wcmVmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJzdWZmaXgiLCJwcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImRyb3BfcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4X2xlbmd0aCIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4MiIsImNvbW1vbl9zdWZmaXgyX2xlbmd0aCIsImNvbW1vbl9wcmVmaXgyX2xlbmd0aCIsImNvbmNhdF9hcnJheSIsIm9mX2NoYXIiLCJvZl9jaGFyX2xpc3QiLCJpc19zdWZmaXgkMCIsImlzX3ByZWZpeCQwIiwiaXNfc3Vic3RyaW5nJDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsInN1YnN0cl9pbmRleCQwIiwic3Vic3RyX2luZGV4X2V4biQwIiwic3Vic3RyX2luZGV4X2FsbCQwIiwic3Vic3RyX3JlcGxhY2VfZmlyc3QkMCIsInN1YnN0cl9yZXBsYWNlX2FsbCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInRhZzIiLCJ2YWxpZGF0ZV9vcmRpbmFyeSIsInJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSIsInJvYnVzdGx5X2NvbXBhcmUiLCJzeW1ib2wkMTIiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJyb2J1c3RseV9jb21wYXJlJDAiLCJyb2J1c3Rfc2lnbiIsInRvX3N0cmluZ18xMiIsImdlbl91bmlmb3JtX2V4Y2wiLCJnZW5faW5jbCIsImdlbl93aXRob3V0X25hbiIsImdlbl9maW5pdGUiLCJnZW5fcG9zaXRpdmUiLCJnZW5fbmVnYXRpdmUiLCJnZW5femVybyIsImdlbl9uYW4iLCJnZW5fc3Vibm9ybWFsIiwiZ2VuX25vcm1hbCIsImdlbl9pbmZpbml0ZSIsIm9mX2Zsb2F0IiwidG9fZmxvYXQiLCJ0b19pbnRfZXhuIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiYmluZCIsImpvaW4iLCJpZ25vcmVfbSIsImFsbF91bml0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsInV3IiwicGh5c19zYW1lIiwiYnByaW50ZiIsImNvbnN0JDAiLCJlcnJvciIsImVycm9yX3MiLCJmb3JjZSIsImlkZW50IiwiaW52YWxpZF9hcmdmIiwiaWZwcmludGYiLCJpc19ub25lIiwiaXNfc29tZSIsImtzcHJpbnRmIiwib2tfZXhuIiwicHJpbnRfcyIsImVwcmludF9zIiwicHJvdGVjdCIsInByb3RlY3R4IiwicmFpc2VfcyIsInNwcmludGYiLCJzdGFnZSIsInVuc3RhZ2UiLCJ3aXRoX3JldHVybl9vcHRpb24iLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheSIsImJpbl93cml0ZV9hcnJheSIsImJpbl93cml0ZXJfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImJpbl9yZWFkX2FycmF5JDAiLCJiaW5fcmVhZGVyX2FycmF5IiwiYmluX2FycmF5IiwiY29tcGFyZV9hcnJheSIsImVxdWFsX2FycmF5IiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJhX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ib29sIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2l6ZV9jaGFyIiwiYmluX3dyaXRlX2NoYXIiLCJiaW5fd3JpdGVyX2NoYXIiLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRlcl9jaGFyIiwiYmluX2NoYXIiLCJjb21wYXJlX2NoYXIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfY2hhciIsImVxdWFsX2NoYXIiLCJjaGFyX29mX3NleHAiLCJzZXhwX29mX2NoYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3dyaXRlX2Zsb2F0IiwiYmluX3dyaXRlcl9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0IiwiYmluX3JlYWRfZmxvYXQkMCIsImJpbl9yZWFkZXJfZmxvYXQiLCJiaW5fZmxvYXQiLCJjb21wYXJlX2Zsb2F0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mbG9hdCIsImVxdWFsX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsInNleHBfb2ZfZmxvYXQiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Zsb2F0IiwiYmluX3NoYXBlX2ludCIsImJpbl9zaXplX2ludCIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVyX2ludCIsImJpbl9yZWFkX2ludCIsImJpbl9yZWFkX2ludCQwIiwiYmluX3JlYWRlcl9pbnQiLCJiaW5faW50IiwiY29tcGFyZV9pbnQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9pbnQiLCJlcXVhbF9pbnQiLCJpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaW50IiwiaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NpemVfaW50MzIiLCJiaW5fd3JpdGVfaW50MzIiLCJiaW5fd3JpdGVyX2ludDMyIiwiYmluX3JlYWRfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiQwIiwiYmluX3JlYWRlcl9pbnQzMiIsImJpbl9pbnQzMiIsImNvbXBhcmVfaW50MzIiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ludDMyIiwiZXF1YWxfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwic2V4cF9vZl9pbnQzMiIsImludDMyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50MzIiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2l6ZV9pbnQ2NCIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZXJfaW50NjQiLCJiaW5fcmVhZF9pbnQ2NCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZGVyX2ludDY0IiwiYmluX2ludDY0IiwiY29tcGFyZV9pbnQ2NCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfaW50NjQiLCJlcXVhbF9pbnQ2NCIsImludDY0X29mX3NleHAiLCJzZXhwX29mX2ludDY0IiwiaW50NjRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQ2NCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fd3JpdGVfbGF6eV90IiwiYmluX3dyaXRlcl9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QkMCIsImJpbl9yZWFkZXJfbGF6eV90IiwiYmluX2xhenlfdCIsImNvbXBhcmVfbGF6eV90IiwiYV8wNDYiLCJiXzA0NyIsImFfMDQ4IiwiYl8wNDkiLCJoYXNoX2ZvbGRfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJzZXhwX29mX2xhenlfdCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2xhenlfdCIsImJpbl9zaGFwZV9saXN0IiwiYmluX3NpemVfbGlzdCIsImJpbl93cml0ZV9saXN0IiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRfbGlzdCIsImJpbl9yZWFkX2xpc3QkMCIsImJpbl9yZWFkZXJfbGlzdCIsImJpbl9saXN0IiwiY29tcGFyZV9saXN0IiwiYV8wNTUiLCJiXzA1NiIsImFfMDU3IiwiYl8wNTgiLCJoYXNoX2ZvbGRfbGlzdCIsImVxdWFsX2xpc3QiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiZnVuYyQ1IiwiaGFzaF9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsInNleHBfb2ZfbmF0aXZlaW50IiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfbmF0aXZlaW50IiwiYmluX3NoYXBlX29wdGlvbiIsImJpbl9zaXplX29wdGlvbiIsImJpbl93cml0ZV9vcHRpb24iLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiQwIiwiYmluX3JlYWRlcl9vcHRpb24iLCJiaW5fb3B0aW9uIiwiY29tcGFyZV9vcHRpb24iLCJhXzA3MyIsImJfMDc0IiwiYV8wNzUiLCJiXzA3NiIsImVxdWFsX29wdGlvbiIsImFfMDc3IiwiYl8wNzgiLCJhXzA3OSIsImJfMDgwIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImhhc2hfZm9sZF9zdHJpbmciLCJmdW5jJDYiLCJoYXNoX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2l6ZV9ieXRlcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZXJfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZGVyX2J5dGVzIiwiYmluX2J5dGVzIiwiY29tcGFyZV9ieXRlcyIsImVxdWFsX2J5dGVzIiwiYnl0ZXNfb2Zfc2V4cCIsInNleHBfb2ZfYnl0ZXMiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2J5dGVzIiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaXplX3JlZiIsImJpbl93cml0ZV9yZWYiLCJiaW5fd3JpdGVyX3JlZiIsImJpbl9yZWFkX3JlZiIsImJpbl9yZWFkX3JlZiQwIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVmIiwiY29tcGFyZV9yZWYiLCJhXzA5NiIsImJfMDk3IiwiYV8wOTgiLCJiXzA5OSIsImVxdWFsX3JlZiIsImFfMTAwIiwiYl8xMDEiLCJhXzEwMiIsImJfMTAzIiwicmVmX29mX3NleHAiLCJzZXhwX29mX3JlZiIsInJlZl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3JlZiIsImdyb3VwJDEzIiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2l6ZV91bml0IiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZF91bml0IiwiYmluX3JlYWRfdW5pdCQwIiwiYmluX3JlYWRlcl91bml0IiwiYmluX3VuaXQiLCJjb21wYXJlX3VuaXQiLCJlcXVhbF91bml0IiwiaGFzaF9mb2xkX3VuaXQiLCJmdW5jJDciLCJoYXNoX3VuaXQiLCJ1bml0X29mX3NleHAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfdW5pdCIsImdyb3VwJDE0IiwiYmluX3NoYXBlX2Zsb2F0X2FycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVyX2Zsb2F0X2FycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRlcl9mbG9hdF9hcnJheSIsImJpbl9mbG9hdF9hcnJheSIsImNvbXBhcmVfZmxvYXRfYXJyYXkiLCJhXzExNCIsImJfMTE1IiwiYV8xMTYiLCJiXzExNyIsImZsb2F0X2FycmF5X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0X2FycmF5IiwiZmxvYXRfYXJyYXlfc2V4cF9ncmFtbWFyIiwidHlwZW5hbWVfb2ZfZmxvYXRfYXJyYXkiLCJuYW1lX29mX2Zsb2F0X2FycmF5IiwidHlwZXJlcF9vZl9mbG9hdF9hcnJheSIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwibWF4X21lbV93YWl0aW5nX2djIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic3ViX3NoYXJlZCIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdCIsIndyaXRlciIsImRhdGFfbGVuIiwidG90YWxfbGVuIiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4Iiwidl8wMDUiLCJyZXMwXzAxMSIsInZfMDA2IiwicmVzMV8wMTIiLCJ2XzAwNyIsInJlczJfMDEzIiwicG9zX2FmdGVyX3NpemVfaGVhZGVyIiwicG9zX2FmdGVyX2RhdGEiLCJhcmc0XzAyMyIsImFyZzNfMDIyIiwiYXJnMl8wMjEiLCJhcmcxXzAyMCIsImFyZzBfMDE5Iiwidl8wMTQiLCJyZXMwXzAyNCIsInZfMDE1IiwicmVzMV8wMjUiLCJ2XzAxNiIsInJlczJfMDI2Iiwidl8wMTciLCJyZXMzXzAyNyIsInZfMDE4IiwicmVzNF8wMjgiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsIm1pbl9wb3MiLCJkYXRhX2VuZCIsInNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmciLCJzbGVuIiwic2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmciLCJtYXhfcG9zIiwiZGF0YV9iZWdpbiIsInRvX2J5dGVzIiwib2ZfYnl0ZXMiLCJieXRlcyIsInRvX2hleCIsIm9mX2hleF9leG4iLCJvZl9iaW5hcnlfZXhuIiwiYWNjdW0iLCJ0b19iaW5hYmxlJDAiLCJkaWdlc3Rfc3RyaW5nIiwiZGlnZXN0X2J5dGVzIiwiZGlnZXN0X251bV9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDQ1IiwiZXJyb3Jfc291cmNlXzA2OCIsImVycm9yX3NvdXJjZV8xMDYiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDYiLCJpc19kc3RfMDA4IiwiYWJicnZfMDEwIiwiZHVwbGljYXRlc18wMTIiLCJleHRyYV8wMTMiLCJmaWVsZF9zZXhwc18wMTYiLCJmaWVsZF9uYW1lXzAxNCIsInRhaWxfMDIyIiwiZmllbGRfc2V4cF8wMTUkMyIsImZpZWxkX3NleHBfMDE1IiwiZmllbGRfc2V4cF8wMTUkMCIsImZpZWxkX3NleHBfMDE1JDEiLCJmdmFsdWVfMDE4IiwiZmllbGRfc2V4cF8wMTUkMiIsImZ2YWx1ZV8wMTciLCJhYmJydl8wMTEiLCJpc19kc3RfMDA5IiwidXRjX29mZnNldF9pbl9zZWNvbmRzXzAwNyIsImFiYnJ2XzAyOSIsImlzX2RzdF8wMjciLCJ1dGNfb2Zmc2V0X2luX3NlY29uZHNfMDI1IiwiYXJnXzAzMCIsImJuZHNfMDI0IiwiYXJnXzAyOCIsImJuZHNfMDI0JDAiLCJhcmdfMDI2IiwiYm5kc18wMjQkMSIsInZfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIiwidl9zZWNvbmRzIiwic2V4cF8wMzIiLCJmaWVsZF9zZXhwc18wMzMiLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMiLCJzZWNvbmRzXzAzNiIsImR1cGxpY2F0ZXNfMDM4IiwiZXh0cmFfMDM5Iiwic2V4cF8wMzIkMCIsImZpZWxkX3NleHBzXzA0MiIsImZpZWxkX25hbWVfMDQwIiwidGFpbF8wNDciLCJmaWVsZF9zZXhwXzA0MSQyIiwiZmllbGRfc2V4cF8wNDEiLCJmaWVsZF9zZXhwXzA0MSQwIiwiZnZhbHVlXzA0NCIsImZpZWxkX3NleHBfMDQxJDEiLCJmdmFsdWVfMDQzIiwic2Vjb25kc18wMzciLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMkMCIsInNlY29uZHNfMDUyIiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzA1IiwiYXJnXzA1MyIsImJuZHNfMDQ5IiwiYXJnXzA1MSIsImJuZHNfMDQ5JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJzZXhwXzA1NSIsImZpZWxkX3NleHBzXzA1NiIsInN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcCIsIm5ld19yZWdpbWVfMDU5IiwiZHVwbGljYXRlc18wNjEiLCJleHRyYV8wNjIiLCJzZXhwXzA1NSQwIiwiZmllbGRfc2V4cHNfMDY1IiwiZmllbGRfbmFtZV8wNjMiLCJ0YWlsXzA3MCIsImZpZWxkX3NleHBfMDY0JDIiLCJmaWVsZF9zZXhwXzA2NCIsInhfMDcxIiwiZmllbGRfc2V4cF8wNjQkMCIsImZ2YWx1ZV8wNjciLCJmaWVsZF9zZXhwXzA2NCQxIiwiZnZhbHVlXzA2NiIsIm5ld19yZWdpbWVfMDYwIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwJDAiLCJuZXdfcmVnaW1lXzA3NSIsImFyZ18wNzYiLCJibmRzXzA3MiIsImFyZ18wNzQiLCJibmRzXzA3MiQwIiwidjUiLCJ2NyIsInY2Iiwidl9uYW1lIiwidl9vcmlnaW5hbF9maWxlbmFtZSIsInZfZGlnZXN0Iiwidl90cmFuc2l0aW9ucyIsInZfbGFzdF9yZWdpbWVfaW5kZXgiLCJ2X2RlZmF1bHRfbG9jYWxfdGltZV90eXBlIiwidl9sZWFwX3NlY29uZHMiLCJzZXhwXzA3OCIsImZpZWxkX3NleHBzXzA3OSIsIm5hbWVfMDgwIiwib3JpZ2luYWxfZmlsZW5hbWVfMDgyIiwiZGlnZXN0XzA4NCIsInRyYW5zaXRpb25zXzA4NiIsImxhc3RfcmVnaW1lX2luZGV4XzA4OCIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzA5MCIsImxlYXBfc2Vjb25kc18wOTIiLCJkdXBsaWNhdGVzXzA5NCIsImV4dHJhXzA5NSIsInNleHBfMDc4JDAiLCJmaWVsZF9zZXhwc18wOTgiLCJmaWVsZF9uYW1lXzA5NiIsInRhaWxfMTA4IiwiZmllbGRfc2V4cF8wOTckNyIsImZpZWxkX3NleHBfMDk3IiwiZmllbGRfc2V4cF8wOTckMCIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5NyQxIiwiZnZhbHVlXzEwNCIsImZpZWxkX3NleHBfMDk3JDIiLCJmdmFsdWVfMTA1IiwiZmllbGRfc2V4cF8wOTckMyIsImZ2YWx1ZV8wOTkiLCJmaWVsZF9zZXhwXzA5NyQ0IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDk3JDUiLCJmdmFsdWVfMTAzIiwiZmllbGRfc2V4cF8wOTckNiIsImZ2YWx1ZV8xMDAiLCJsZWFwX3NlY29uZHNfMDkzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDkxIiwibGFzdF9yZWdpbWVfaW5kZXhfMDg5IiwidHJhbnNpdGlvbnNfMDg3IiwiZGlnZXN0XzA4NSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzA4MyIsIm5hbWVfMDgxIiwidHJhbnNpdGlvbnNfMTE3IiwiZGlnZXN0XzExNSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzExMyIsIm5hbWVfMTExIiwibGFzdF9yZWdpbWVfaW5kZXhfMTE5IiwibGVhcF9zZWNvbmRzXzEyMyIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzEyMSIsImFyZ18xMjQiLCJibmRzXzExMCIsImFyZ18xMjIiLCJibmRzXzExMCQwIiwiYXJnXzEyMCIsImJuZHNfMTEwJDEiLCJhcmdfMTE4IiwiYm5kc18xMTAkMiIsImFyZ18xMTYiLCJibmRzXzExMCQzIiwiYXJnXzExNCIsImJuZHNfMTEwJDQiLCJhcmdfMTEyIiwiYm5kc18xMTAkNSIsIm9yaWdpbmFsX2ZpbGVuYW1lIiwiem9uZSIsImRpZ2VzdCIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kcyIsImlzX2RzdCIsImFiYnJ2X2luZGV4IiwiYWJicnYiLCJpbnB1dF90el9maWxlX2dlbiIsImlucHV0X3RyYW5zaXRpb24iLCJpbnB1dF9sZWFwX3NlY29uZCIsInV0Y19sb2NhbF9jb3VudCIsInN0ZF93YWxsX2NvdW50IiwibGVhcF9jb3VudCIsInRyYW5zaXRpb25fY291bnQiLCJ0eXBlX2NvdW50IiwiYWJicnZfY2hhcl9jb3VudCIsInRyYW5zaXRpb25fdGltZXMiLCJ0cmFuc2l0aW9uX2luZGljZXMiLCJyZWdpbWVzIiwicmF3X2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsImluZGV4ZWRfYWJicnZzIiwibGVhcF9zZWNvbmRzIiwicmVnaW1lcyQwIiwidGltZSIsInJlZ2ltZSIsInJhd190cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zIiwibHR0IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJyZXN0IiwibmV3X3JlZ2ltZSIsImlucHV0X2xlYXBfc2Vjb25kX2dlbiIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHMiLCJyZWFkX2hlYWRlciIsIm1hZ2ljIiwiYmFkX3ZlcnNpb24iLCJ2ZXJzaW9uIiwiaW5wdXRfdHpfZmlsZV92MSIsImlucHV0X3R6X2ZpbGUiLCJ6b25lbmFtZSIsInhfMTI1IiwibWFrZV96b25lIiwicmVhc29uIiwib2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIiwib2ZfdXRjX29mZnNldCIsImxpa2VseV9tYWNoaW5lX3pvbmVzIiwidXRjIiwicmVzZXRfdHJhbnNpdGlvbl9jYWNoZSIsImdldF9yZWdpbWVfZXhuIiwiZWZmZWN0aXZlX3N0YXJ0X3RpbWUiLCJtb2RlIiwiaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2VjIiwiaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2VjIiwiYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzIiwidHJhbnNpdGlvbiIsImluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2giLCJpbmRleCQwIiwiaW5kZXgkMSIsImluZGV4JDIiLCJpbmRleCQzIiwiaW5kZXgkNCIsIm9mX2ludDYzX3NlY29uZHMiLCJ0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXgiLCJvZl9zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3Bhbl9zaW5jZV9lcG9jaCIsIm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJpbmRleF9vZl9kYXRlX2FuZF9vZmRheSIsImluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IiwiaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF8iLCJhZnRlciIsImJlZm9yZSIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50XyIsImluZGV4X2FiYnJldmlhdGlvbl9leG4iLCJpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIiwicmF3IiwidmFsaWRhdGlvbl9mYWlsZWQiLCJhcmcyXzAwMyIsInJlczBfMDA0IiwicmVzMV8wMDUiLCJyZXMyXzAwNiIsImNyZWF0ZV9leG4iLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwidHlwZV9pZDEiLCJ0eXBlX2lkMiIsIm5hbWVfb2Zfa2V5IiwidWlkX29mX2tleSIsInR5cGVfaWRfbmFtZSIsInR5cGVfaWRfdWlkIiwicGFja2VkIiwieF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsIm1lbV9ieV9pZCIsImlkIiwicmVtb3ZlX2J5X2lkIiwia2V5JDAiLCJjaGFuZ2VfZXhuIiwib3JpZyIsIm9mX2FfMDExIiwib2ZfYV8wMTIiLCJ4XzAxMyIsInhfMDE0Iiwib2ZfYV8wMTciLCJkZWZhdWx0JDAiLCJpZCQwIiwiaWQkMSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsInJhY2VfZnJlZV9jcmVhdGVfbG9vcCIsImNlbGwiLCJuZXdfeCIsImN1cnJlbnQiLCJpbW1lZGlhY3kiLCJhbGxvd2VkX2ludHMiLCJuZXZlcl93aXRoX25hbWUiLCJuZXZlciIsInVua25vd24iLCJvcHRpb24iLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiZmxvYXQkMCIsInJlZiIsInR1cGxlMiIsInR1cGxlMyIsInR1cGxlNCIsInR1cGxlNSIsImZ1bmN0aW9uJDAiLCJpbnQkMCIsInJlZiQwIiwiYXJyYXkkMCIsInR1cGxlMiQwIiwidHVwbGUzJDAiLCJ0dXBsZTQkMCIsInR1cGxlNSQwIiwiZnVuY3Rpb24kMSIsIm9wdGlvbiQwIiwibGlzdCQwIiwibGF6eV90IiwicG9zc2libHlfdW5ib3hlZCIsImNoaWxkX3R5cGUiLCJ0aGVfb25seV9maWVsZCIsInZhcmlhbnQiLCJ0YWciLCJtb3JlIiwibm8iLCJtb3JlX2FyZ19saXN0Iiwib25lX2FyZ19saXN0Iiwibm9fYXJnX2xpc3QiLCJub19hcmdfY291bnQiLCJoYXNoX3NldCIsInJlcXVpcmVkIiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2IiwiZXJyb3Jfc291cmNlXzAzMCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwOCIsIm9mX2JfMDExIiwiYXJnMV8wMTMiLCJhcmcwXzAxMiIsInJlczFfMDE1IiwiY3VycnkiLCJ1bmN1cnJ5IiwibWFwX2ZzdCIsIm1hcF9zbmQiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYl8wMjAiLCJvZl9jXzAyMSIsInNleHBfMDI5IiwiYXJnMl8wMjUiLCJyZXMwXzAyNiIsInJlczFfMDI3IiwicmVzMl8wMjgiLCJvZl9hXzAzMSIsIm9mX2JfMDMyIiwib2ZfY18wMzMiLCJhcmcyXzAzNiIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNyIsInJlczFfMDM4IiwicmVzMl8wMzkiLCJvZl9jIiwiY3VycnkkMCIsInVuY3VycnkkMCIsIm1hcF9mc3QkMCIsIm1hcF9zbmQkMCIsIm1hcF90cmQiLCJtYXAyJDAiLCJ6MiIsInoxIiwiZ2V0MyIsImNtcDMiLCJ6JDAiLCJjMSIsImMyIiwiZXEzIiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJhXzA1MSIsImJfMDUyIiwidF8wNTQiLCJ0XzA1MyIsInRfMDU2IiwidF8wNTUiLCJzZXhwXzA2MiIsImFyZzFfMDU5IiwiYXJnMF8wNTgiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwicmVzMF8wNjYiLCJyZXMxXzA2NyIsInMyIiwiczEiLCJzMiQwIiwiczEkMCIsIndlZWtkYXlzIiwid2Vla2VuZHMiLCJzaXplXzAxOCIsInJhbmRvbV8wMTkiLCJzaXplXzAxMiIsInJhbmRvbV8wMTMiLCJzaXplXzAxMCIsInJhbmRvbV8wMTEiLCJyYW5kb21fMDA5Iiwic2l6ZV8wMDYiLCJyYW5kb21fMDA3IiwiaGFzaF8wMDUiLCJoYXNoXzAwNSQwIiwiaGFzaF8wMDUkMSIsImhhc2hfMDA1JDIiLCJoYXNoXzAwNSQzIiwiaGFzaF8wMDUkNCIsImhhc2hfMDA1JDUiLCJoYXNoXzAwNSQ2IiwidG9fc3RyaW5nX2xvbmciLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwMyIsImN1c3RvbV9wcmludGZfMDA0IiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDIxIiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsImRheXNfaW5fbW9udGgiLCJpbnZhbGlkIiwibXNnIiwiZGF5c19pbl9tb250aCQwIiwidW5jaGVja2VkX3ZhbHVlIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJzZXhwXzAwNSQwIiwiZmllbGRfc2V4cHNfMDA2IiwieV8wMDciLCJtXzAwOSIsImRfMDExIiwiZHVwbGljYXRlc18wMTMiLCJleHRyYV8wMTQiLCJzZXhwXzAwNSIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjMiLCJmaWVsZF9zZXhwXzAxNiQzIiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNCIsImZpZWxkX3NleHBfMDE2JDAiLCJmaWVsZF9zZXhwXzAxNiQxIiwiZmllbGRfc2V4cF8wMTYkMiIsImRfMDEyIiwibV8wMTAiLCJ5XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInZhbHVlX2V4biIsInN5bWJvbCQ1IiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwib2ZfbXVsdCIsInRvX211bHQiLCJvZl9wZXJjZW50YWdlIiwidG9fcGVyY2VudGFnZSIsIm9mX2JwIiwidG9fYnAiLCJvZl9icF9pbnQiLCJ0b19icF9pbnQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWxfbXVsdCIsImRlY2ltYWxfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIiwicm91bmRfZGVjaW1hbF9icCIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiZXhwb25lbnQiLCJwcmVjaXNpb24iLCJleHBvbmVudF9FIiwiZGVjaW1hbCIsIm9jYW1sIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwieF9hYnMiLCJyZWFsbHlfb2Zfc3RyaW5nIiwiZmxvYXRfb2Zfc3RyaW5nIiwic3RyJDAiLCJzdHIkMSIsInN0ciQyIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImlzX3plcm8iLCJhcHBseSIsImlzX25hbiIsImlzX2luZiIsIm5lZyIsInNpZ25fZXhuIiwib2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIiwidF9vZl9zZXhwX2FsbG93X25hbl9hbmRfaW5mIiwiZm9ybWF0JDAiLCJyYW5kb21pemUiLCJzcGFuIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJlcnJvcl9zb3VyY2VfMDMyIiwibiQyIiwibiQzIiwibiQ0Iiwic2lnbl8wMDYiLCJocl8wMDgiLCJtaW5fMDEwIiwic2VjXzAxMiIsIm1zXzAxNCIsInVzXzAxNiIsIm5zXzAxOCIsImR1cGxpY2F0ZXNfMDIwIiwiZXh0cmFfMDIxIiwiZmllbGRfc2V4cHNfMDI0IiwiZmllbGRfbmFtZV8wMjIiLCJ0YWlsXzAzNCIsImZpZWxkX3NleHBfMDIzJDciLCJmaWVsZF9zZXhwXzAyMyIsInhfMDM1IiwiZmllbGRfc2V4cF8wMjMkMCIsImZ2YWx1ZV8wMjYiLCJmaWVsZF9zZXhwXzAyMyQxIiwiZnZhbHVlXzAzMSIsImZpZWxkX3NleHBfMDIzJDIiLCJmdmFsdWVfMDI4IiwiZmllbGRfc2V4cF8wMjMkMyIsImZ2YWx1ZV8wMjUiLCJmaWVsZF9zZXhwXzAyMyQ0IiwiZnZhbHVlXzAyNyIsImZpZWxkX3NleHBfMDIzJDUiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjMkNiIsImZ2YWx1ZV8wMzAiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwibnNfMDQ5IiwidXNfMDQ3IiwibXNfMDQ1Iiwic2VjXzA0MyIsIm1pbl8wNDEiLCJocl8wMzkiLCJzaWduXzAzNyIsImFyZ18wNTAiLCJibmRzXzAzNiIsImFyZ18wNDgiLCJibmRzXzAzNiQwIiwiYXJnXzA0NiIsImJuZHNfMDM2JDEiLCJhcmdfMDQ0IiwiYm5kc18wMzYkMiIsImFyZ18wNDIiLCJibmRzXzAzNiQzIiwiYXJnXzA0MCIsImJuZHNfMDM2JDQiLCJhcmdfMDM4IiwiYm5kc18wMzYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50X3NlYyIsIm9mX2ludDMyX3NlY29uZHMiLCJvZl9taW4iLCJvZl9ociIsIm9mX2RheSIsImRpdmlkZV9ieV91bml0X29mX3RpbWUiLCJ1bml0X29mX3RpbWUiLCJzY2FsZV9ieV91bml0X29mX3RpbWUiLCJzdGgkMSIsInN0aCQyIiwic3RoJDMiLCJzdGgkNCIsInN0aCQ1Iiwic3RoJDYiLCJ0b19zaG9ydF9zdHJpbmciLCJ0X29mX3NleHBfdjFfdjIiLCJpc192MiIsInNleHBfb2ZfdF92MV92MiIsImFic190IiwidG9fdW5pdF9vZl90aW1lIiwib2ZfdW5pdF9vZl90aW1lIiwic3VmZml4X29mX3VuaXRfb2ZfdGltZSIsInBhcnNlX3N1ZmZpeCIsInVuaXRfb2ZfdGltZV9saXN0JDEiLCJ1bml0X29mX3RpbWVfbGlzdCIsInVuaXRfb2ZfdGltZV9saXN0JDAiLCJzdGF0ZV9pc19maW5hbCIsImludmFsaWRfc3RyaW5nJDAiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJzdGFydF9vZl9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJzJDAiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9pbnRfdXMiLCJvZl9pbnRfbXMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJvZl9pbnRfbnMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNpbmNlX3VuaXhfZXBvY2giLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJoYWxmX21pY3Jvc2Vjb25kIiwidG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwibWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwib2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3ZhbHVlX3JlcHJlc2VudGFibGUiLCJtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSIsImlzX2ludmFsaWQiLCJvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQiLCJzdWJfZXhuIiwidG9fc3RyaW5nX3dpdGhfdW5pdCIsInNpeHR5IiwidGhvdXNhbmQiLCJ1bml0JDAiLCJudW1fZGlnaXRzIiwidG9fbWljcm9zZWNvbmRfc3RyaW5nIiwiZXZlcnkiLCJzdGFydCQxIiwidG9faW50NjNfbnNfc2luY2VfZXBvY2giLCJvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCIsIm92ZXJmbG93IiwiYWRkX292ZXJmbG93ZWQiLCJzdWJfb3ZlcmZsb3dlZCIsImFkZF9zYXR1cmF0aW5nIiwic3ViX3NhdHVyYXRpbmciLCJ0b19pbnRfbnNfc2luY2VfZXBvY2giLCJvZl9pbnRfbnNfc2luY2VfZXBvY2giLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJ0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJuc19zaW5jZV9lcG9jaCIsIm5zX3Blcl9kYXkiLCJhcHByb3hfZGF5c19mcm9tX2Vwb2NoIiwibnNfc2luY2Vfc3RhcnRfb2ZfZGF5Iiwic3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJzcGFuX2luX2RheXNfc2luY2VfZXBvY2giLCJzcGFuX3NpbmNlX2Vwb2NoIiwidHdvX2RpZ2l0X29mX3N0cmluZyIsIm5zX29mXzEwMF9tcyIsIm5zX29mXzEwX21zIiwibnNfb2ZfMV9tcyIsIm5zX29mXzEwMF91cyIsIm5zX29mXzEwX3VzIiwibnNfb2ZfMV91cyIsIm5zX29mXzEwMF9ucyIsIm5zX29mXzEwX25zIiwibnNfb2ZfMV9ucyIsInNlY29uZHNfc3BhbiIsInN1Yl9zZWNvbmRfc3BhbiIsIm9mZGF5X3N0cmluZ193aXRoX3pvbmUiLCJkYXRlX3N0cmluZyIsIm9mZGF5X3N0cmluZyIsInN1ZmZpeF9sZW4iLCJzZWNvbmRzX3N0cmluZyIsInN1Yl9zZWNvbmRfc3RyaW5nIiwic19zdHJpbmciLCJtX3N0cmluZyIsImhfc3RyaW5nIiwibXVsdGlwbGllciIsImRheXNfZnJvbV9lcG9jaCQwIiwiZGF5c19mcm9tX2Vwb2NoX2luX25zIiwiYXR0ZW1wdCIsInNwYW5fb2ZfZHVyYXRpb24iLCJ0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQiLCJkdXJhdGlvbnMiLCJzcGFucyIsInN0cmluZ19ieXRlcyIsInNyY19wb3MiLCJzcmNfbGVuIiwiZHN0X3BvcyIsInNyY19wb3MkMCIsImJ5dGVzX2J5dGVzIiwic3RyaW5nX2JpZ3N0cmluZyIsImJ5dGVzX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19iaWdzdHJpbmciLCJiaWdzdHJpbmdfc3RyaW5nIiwiYmlnc3RyaW5nX2J5dGVzIiwic2l6ZV8wMDkiLCJyYW5kb21fMDEwIiwic2l6ZV8wMDciLCJoYXNoXzAwOCIsImhhc2hfMDA4JDAiLCJoYXNoXzAwOCQxIiwiaGFzaF8wMDgkMiIsImJhc2VfbGVuIiwiZ2V0X25vX2JvdW5kc19jaGVjayIsImZvbGRpJDAiLCJ3cmFwX3N1Yl9uIiwib25fZXJyb3IiLCJibGl0X3RvIiwiYmxpdF90b19zdHJpbmciLCJibGl0X3RvX2J5dGVzIiwiYmxpdF90b19iaWdzdHJpbmciLCJibGl0X2Jhc2UiLCJibGl0X2Zyb20iLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2JpZ3N0cmluZyIsIm9mX2Jhc2UiLCJjb25jYXRfZ2VuIiwiY3JlYXRlX2RzdCIsImJsaXRfZHN0IiwidHMiLCJjb25jYXRfc3RyaW5nIiwiY29uY2F0X2JpZ3N0cmluZyIsInNvcnRfYW5kX2FsaWduIiwiY2hlY2tfc3VmZml4IiwiY2hvcF9leHRlbnNpb24iLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAxIiwicDIiLCJzJDEiLCJzJDIiLCJ0b19hYnNvbHV0ZV9leG4iLCJyZWxhdGl2ZV90byIsIm1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSIsImlzX3Bvc2l4X3BhdGhuYW1lX2NvbXBvbmVudCIsInNwbGl0X2V4dGVuc2lvbiIsImZuIiwiZm4kMCIsImZuJDEiLCJkaXIiLCJleHQiLCJiYXNlX2ZuIiwiZXh0JDAiLCJmbiQyIiwiZGlyJDAiLCJmbiQzIiwicGFydHMiLCJmaWxlbmFtZSQwIiwiZmlsZW5hbWUkMSIsIm9mX2Fic29sdXRlX2V4biIsImFfcGFydHMiLCJiX3BhcnRzIiwiYV9zdWZmaXgiLCJiX3N1ZmZpeCIsImgyIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJmbGFnX25hbWUiLCJlcnJvcl9zb3VyY2VfMDE3IiwiZXJyb3Jfc291cmNlXzA2MiIsImVycm9yX3NvdXJjZV8wOTkiLCJlcnJvcl9zb3VyY2VfMTM2IiwiZXJyb3Jfc291cmNlXzE3MSIsImVycm9yX3NvdXJjZV8yMTgiLCJlcnJvcl9zb3VyY2VfMjY5IiwiZXJyb3Jfc291cmNlXzMxOSIsImVycm9yX3NvdXJjZV8zNTYiLCJlcnJvcl9zb3VyY2VfMzg4IiwiZXJyb3Jfc291cmNlXzQxNSIsImVycm9yX3NvdXJjZV80NDQiLCJlcnJvcl9zb3VyY2VfNDc2IiwiZXJyb3Jfc291cmNlXzUwMSIsImVycm9yX3NvdXJjZV81MjYiLCJlcnJvcl9zb3VyY2VfNTY1IiwiZXJyb3Jfc291cmNlXzYxMCIsImVudW1lcmF0ZV82MjgiLCJlbnVtZXJhdGVfNjI5IiwibWF5YmVfbWlzc2luZ19wcmVmaXgiLCJtYXliZV9taXNzaW5nX3N1ZmZpeCIsIm1heWJlX21vcmVfc3VmZml4IiwibmFtZXMkMCIsImVycm9yX3NvdXJjZV82NjkiLCJpbmRlbnRhdGlvbiIsInNwYWNpbmdfZG90IiwibmFtZXMkMSIsImVycm9yX3NvdXJjZV83MDgiLCJuYW1lcyQyIiwiZXJyb3Jfc291cmNlXzc1NyIsIm5hbWVzJDMiLCJlcnJvcl9zb3VyY2VfODA3IiwiZXJyb3Jfc291cmNlXzgzOCIsImFfMDAxJDAiLCJiXzAwMiQwIiwidGFnXzAyMCIsInNleHBfYXJnc18wNDEiLCJhcmcwXzA0MiIsInNleHBfYXJnc18wMzYiLCJyZXMwXzAzOCIsInNleHBfYXJnc18wMjYiLCJzZXhwX2FyZ3NfMDMxIiwic2V4cF9hcmdzXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzA0NCIsInJlczBfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzBfMDUyIiwidXNhZ2UiLCJ1c2FnZSQwIiwidXNhZ2UkMSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1OCIsImJfMDU5Iiwic2V4cF8wNjQiLCJ0YWdfMDY1Iiwic2V4cF9hcmdzXzA2NiIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJzZXhwX2FyZ3NfMDcxIiwiYXJnMF8wNzIiLCJyZXMwXzA3MyIsImFyZzBfMDc0IiwicmVzMF8wNzUiLCJhcmcwXzA3NiIsInJlczBfMDc3Iiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJhXzA3OCIsImJfMDc5IiwiYV8wODAiLCJiXzA4MSIsInNleHBfMDgzIiwiZmllbGRfc2V4cHNfMDg0IiwibmFtZV8wODUiLCJkb2NfMDg3IiwiYWxpYXNlc18wODkiLCJkdXBsaWNhdGVzXzA5MSIsImV4dHJhXzA5MiIsInNleHBfMDgzJDAiLCJmaWVsZF9zZXhwc18wOTUiLCJmaWVsZF9uYW1lXzA5MyIsInRhaWxfMTAxIiwiZmllbGRfc2V4cF8wOTQkMyIsImZpZWxkX3NleHBfMDk0IiwieF8xMDIiLCJmaWVsZF9zZXhwXzA5NCQwIiwiZnZhbHVlXzA5OCIsImZpZWxkX3NleHBfMDk0JDEiLCJmdmFsdWVfMDk3IiwiZmllbGRfc2V4cF8wOTQkMiIsImZ2YWx1ZV8wOTYiLCJhbGlhc2VzXzA5MCIsImRvY18wODgiLCJuYW1lXzA4NiIsImFsaWFzZXNfMTA4IiwiZG9jXzEwNiIsIm5hbWVfMTA0IiwiYXJnXzEwOSIsImJuZHNfMTAzIiwiYXJnXzEwNyIsImJuZHNfMTAzJDAiLCJhcmdfMTA1IiwiYm5kc18xMDMkMSIsInZfc3VtbWFyeSIsInZfcmVhZG1lIiwidl9hbm9ucyIsInZfZmxhZ3MiLCJhXzExMCIsImJfMTExIiwiYV8xMTIiLCJiXzExMyIsInNleHBfMTE3IiwiZmllbGRfc2V4cHNfMTE4Iiwic3VtbWFyeV8xMTkiLCJyZWFkbWVfMTIxIiwiYW5vbnNfMTIzIiwiZmxhZ3NfMTI1IiwiZHVwbGljYXRlc18xMjciLCJleHRyYV8xMjgiLCJzZXhwXzExNyQwIiwiZmllbGRfc2V4cHNfMTMxIiwiZmllbGRfbmFtZV8xMjkiLCJ0YWlsXzEzOCIsImZpZWxkX3NleHBfMTMwJDQiLCJmaWVsZF9zZXhwXzEzMCIsInhfMTM5IiwiZmllbGRfc2V4cF8xMzAkMCIsImZ2YWx1ZV8xMzUiLCJmaWVsZF9zZXhwXzEzMCQxIiwiZnZhbHVlXzEzNCIsImZpZWxkX3NleHBfMTMwJDIiLCJmdmFsdWVfMTMyIiwiZmllbGRfc2V4cF8xMzAkMyIsImZ2YWx1ZV8xMzMiLCJyZWFkbWVfMTIyIiwiZmxhZ3NfMTI2IiwiYW5vbnNfMTI0Iiwic3VtbWFyeV8xMjAiLCJmbGFnc18xNDkiLCJhbm9uc18xNDciLCJyZWFkbWVfMTQzIiwic3VtbWFyeV8xNDEiLCJhcmdfMTUwIiwiYm5kc18xNDAiLCJhcmdfMTQ4IiwiYm5kc18xNDAkMCIsInZfMTQ0IiwiYXJnXzE0NiIsImJuZF8xNDUiLCJibmRzXzE0MCQxIiwiYXJnXzE0MiIsImJuZHNfMTQwJDIiLCJiaW5fc2hhcGVfYSIsInZfc3ViY29tbWFuZHMiLCJhXzE4NiIsImJfMTg3IiwiYV8xODgiLCJiXzE4OSIsImFfMTkwIiwiYl8xOTEiLCJhXzE5MiIsImJfMTkzIiwidF8xOTUiLCJ0XzE5NCIsInRfMTk3IiwidF8xOTYiLCJvZl9hXzE5OCIsInNleHBfMjAwIiwiZmllbGRfc2V4cHNfMjAxIiwic3VtbWFyeV8yMDIiLCJyZWFkbWVfMjA0Iiwic3ViY29tbWFuZHNfMjA2IiwiZHVwbGljYXRlc18yMDgiLCJleHRyYV8yMDkiLCJzZXhwXzIwMCQwIiwiZmllbGRfc2V4cHNfMjEyIiwiZmllbGRfbmFtZV8yMTAiLCJ0YWlsXzIyMyIsImZpZWxkX3NleHBfMjExJDMiLCJmaWVsZF9zZXhwXzIxMSIsInhfMjI0IiwiZmllbGRfc2V4cF8yMTEkMCIsImZ2YWx1ZV8yMjEiLCJmaWVsZF9zZXhwXzIxMSQxIiwic2V4cF8yMTciLCJhcmcxXzIxNCIsImFyZzBfMjEzIiwicmVzMF8yMTUiLCJyZXMxXzIxNiIsImZ2YWx1ZV8yMTkiLCJmaWVsZF9zZXhwXzIxMSQyIiwiZnZhbHVlXzIyMCIsInJlYWRtZV8yMDUiLCJzdWJjb21tYW5kc18yMDciLCJzdW1tYXJ5XzIwMyIsIm9mX2FfMjI1Iiwic3ViY29tbWFuZHNfMjMzIiwicmVhZG1lXzIyOSIsInN1bW1hcnlfMjI3IiwiYm5kc18yMjYiLCJhcmcxXzIzNiIsImFyZzBfMjM1IiwicmVzMF8yMzciLCJyZXMxXzIzOCIsImFyZ18yMzQiLCJibmRzXzIyNiQwIiwidl8yMzAiLCJhcmdfMjMyIiwiYm5kXzIzMSIsImJuZHNfMjI2JDEiLCJhcmdfMjI4IiwiYm5kc18yMjYkMiIsIm9mX2FfMjQ5Iiwic2V4cF8yNTEiLCJmaWVsZF9zZXhwc18yNTIiLCJzdW1tYXJ5XzI1MyIsInJlYWRtZV8yNTUiLCJzdWJjb21tYW5kc18yNTciLCJkdXBsaWNhdGVzXzI1OSIsImV4dHJhXzI2MCIsInNleHBfMjUxJDAiLCJmaWVsZF9zZXhwc18yNjMiLCJmaWVsZF9uYW1lXzI2MSIsInRhaWxfMjc0IiwiZmllbGRfc2V4cF8yNjIkMyIsImZpZWxkX3NleHBfMjYyIiwieF8yNzUiLCJmaWVsZF9zZXhwXzI2MiQwIiwiZnZhbHVlXzI3MiIsImZpZWxkX3NleHBfMjYyJDEiLCJzZXhwXzI2OCIsImFyZzFfMjY1IiwiYXJnMF8yNjQiLCJyZXMwXzI2NiIsInJlczFfMjY3IiwiZnZhbHVlXzI3MCIsImZpZWxkX3NleHBfMjYyJDIiLCJmdmFsdWVfMjcxIiwicmVhZG1lXzI1NiIsInN1YmNvbW1hbmRzXzI1OCIsInN1bW1hcnlfMjU0Iiwib2ZfYV8yNzYiLCJzdWJjb21tYW5kc18yODQiLCJyZWFkbWVfMjgwIiwic3VtbWFyeV8yNzgiLCJibmRzXzI3NyIsImFyZzFfMjg3IiwiYXJnMF8yODYiLCJyZXMwXzI4OCIsInJlczFfMjg5IiwiYXJnXzI4NSIsImJuZHNfMjc3JDAiLCJ2XzI4MSIsImFyZ18yODMiLCJibmRfMjgyIiwiYm5kc18yNzckMSIsImFyZ18yNzkiLCJibmRzXzI3NyQyIiwidG9fbGF0ZXN0Iiwic3ViY29tbWFuZHMiLCJyZWFkbWUiLCJzdW1tYXJ5Iiwib2ZfbGF0ZXN0IiwiYWJzX3BhdGgiLCJ2X3dvcmtpbmdfZGlyIiwidl9wYXRoX3RvX2V4ZSIsInZfY2hpbGRfc3ViY29tbWFuZCIsImFfMjkwIiwiYl8yOTEiLCJhXzI5MiIsImJfMjkzIiwiYV8yOTQiLCJiXzI5NSIsInNleHBfMjk3IiwiZmllbGRfc2V4cHNfMjk4Iiwic3VtbWFyeV8yOTkiLCJyZWFkbWVfMzAxIiwid29ya2luZ19kaXJfMzAzIiwicGF0aF90b19leGVfMzA1IiwiY2hpbGRfc3ViY29tbWFuZF8zMDciLCJkdXBsaWNhdGVzXzMwOSIsImV4dHJhXzMxMCIsInNleHBfMjk3JDAiLCJmaWVsZF9zZXhwc18zMTMiLCJmaWVsZF9uYW1lXzMxMSIsInRhaWxfMzIxIiwiZmllbGRfc2V4cF8zMTIkNSIsImZpZWxkX3NleHBfMzEyIiwieF8zMjIiLCJmaWVsZF9zZXhwXzMxMiQwIiwiZnZhbHVlXzMxNiIsImZpZWxkX3NleHBfMzEyJDEiLCJmdmFsdWVfMzE4IiwiZmllbGRfc2V4cF8zMTIkMiIsImZ2YWx1ZV8zMTciLCJmaWVsZF9zZXhwXzMxMiQzIiwiZnZhbHVlXzMxNSIsImZpZWxkX3NleHBfMzEyJDQiLCJmdmFsdWVfMzE0IiwicmVhZG1lXzMwMiIsImNoaWxkX3N1YmNvbW1hbmRfMzA4IiwicGF0aF90b19leGVfMzA2Iiwid29ya2luZ19kaXJfMzA0Iiwic3VtbWFyeV8zMDAiLCJjaGlsZF9zdWJjb21tYW5kXzMzNCIsInBhdGhfdG9fZXhlXzMzMiIsIndvcmtpbmdfZGlyXzMzMCIsInJlYWRtZV8zMjYiLCJzdW1tYXJ5XzMyNCIsImFyZ18zMzUiLCJibmRzXzMyMyIsImFyZ18zMzMiLCJibmRzXzMyMyQwIiwiYXJnXzMzMSIsImJuZHNfMzIzJDEiLCJ2XzMyNyIsImFyZ18zMjkiLCJibmRfMzI4IiwiYm5kc18zMjMkMiIsImFyZ18zMjUiLCJibmRzXzMyMyQzIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImJpbl9zaGFwZV90JDciLCJ0b192MyIsIm9mX3YzIiwidG9fbGF0ZXN0JDEiLCJvZl9sYXRlc3QkMSIsImJpbl9zaGFwZV90JDgiLCJ0b192MiIsIm9mX3YyIiwidG9fbGF0ZXN0JDIiLCJvZl9sYXRlc3QkMiIsImJpbl9zaGFwZV90JDkiLCJhXzQwMSIsImJfNDAyIiwiYV80MDEkMCIsImJfNDAyJDAiLCJhXzQwMyIsImJfNDA0IiwiYV80MDUiLCJiXzQwNiIsImFfNDA3IiwiYl80MDgiLCJhXzQxMSIsImFfNDA5IiwiYl80MTIiLCJiXzQxMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF80MTciLCJ0YWdfNDE4Iiwic2V4cF9hcmdzXzQyNCIsImFyZzBfNDI1IiwicmVzMF80MjYiLCJzZXhwX2FyZ3NfNDI5IiwiYXJnMV80MzEiLCJhcmcwXzQzMCIsInJlczBfNDMyIiwicmVzMV80MzMiLCJzZXhwX2FyZ3NfNDE5IiwiYXJnMF80MjAiLCJyZXMwXzQyMSIsImFyZzBfNDM0IiwicmVzMF80MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3IiwiYXJnMV80MzkiLCJhcmcwXzQzOCIsInJlczBfNDQwIiwicmVzMV80NDEiLCJiaW5fc2hhcGVfdCQxMCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF80NDYiLCJ0YWdfNDQ3Iiwic2V4cF9hcmdzXzQ2MyIsImFyZzBfNDY0IiwicmVzMF80NjUiLCJzZXhwX2FyZ3NfNDUzIiwiYXJnMF80NTQiLCJyZXMwXzQ1NSIsInNleHBfYXJnc180NTgiLCJhcmcwXzQ1OSIsInJlczBfNDYwIiwic2V4cF9hcmdzXzQ0OCIsImFyZzBfNDQ5IiwicmVzMF80NTAiLCJzZXhwX29mX3QkNyIsImFyZzBfNDY2IiwicmVzMF80NjciLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImFyZzBfNDcyIiwicmVzMF80NzMiLCJiaW5fc2hhcGVfdCQxMSIsInRfb2Zfc2V4cCQ5Iiwic2V4cF80NzgiLCJ0YWdfNDc5Iiwic2V4cF9hcmdzXzQ4NSIsImFyZzBfNDg2IiwicmVzMF80ODciLCJzZXhwX2FyZ3NfNDkwIiwiYXJnMF80OTEiLCJyZXMwXzQ5MiIsImZpZWxkX3NleHBzXzMzOCIsInN1bW1hcnlfMzM5IiwicmVhZG1lXzM0MSIsIndvcmtpbmdfZGlyXzM0MyIsInBhdGhfdG9fZXhlXzM0NSIsImR1cGxpY2F0ZXNfMzQ3IiwiZXh0cmFfMzQ4Iiwic2V4cF8zMzciLCJmaWVsZF9zZXhwc18zNTEiLCJmaWVsZF9uYW1lXzM0OSIsInRhaWxfMzU4IiwiZmllbGRfc2V4cF8zNTAkNCIsImZpZWxkX3NleHBfMzUwIiwieF8zNTkiLCJmaWVsZF9zZXhwXzM1MCQwIiwiZnZhbHVlXzM1MyIsImZpZWxkX3NleHBfMzUwJDEiLCJmdmFsdWVfMzU1IiwiZmllbGRfc2V4cF8zNTAkMiIsImZ2YWx1ZV8zNTQiLCJmaWVsZF9zZXhwXzM1MCQzIiwiZnZhbHVlXzM1MiIsInJlYWRtZV8zNDIiLCJwYXRoX3RvX2V4ZV8zNDYiLCJ3b3JraW5nX2Rpcl8zNDQiLCJzdW1tYXJ5XzM0MCIsInNleHBfYXJnc180ODAiLCJhcmcwXzQ4MSIsInJlczBfNDgyIiwic2V4cF9vZl90JDgiLCJhcmcwXzQ5MyIsInJlczBfNDk0IiwiYXJnMF80OTUiLCJyZXMwXzQ5NiIsImFyZzBfNDk3IiwicGF0aF90b19leGVfMzY5Iiwid29ya2luZ19kaXJfMzY3IiwicmVhZG1lXzM2MyIsInN1bW1hcnlfMzYxIiwiYXJnXzM3MCIsImJuZHNfMzYwIiwiYXJnXzM2OCIsImJuZHNfMzYwJDAiLCJ2XzM2NCIsImFyZ18zNjYiLCJibmRfMzY1IiwiYm5kc18zNjAkMSIsImFyZ18zNjIiLCJibmRzXzM2MCQyIiwicmVzMF80OTgiLCJ0b19sYXRlc3QkMyIsImciLCJvZl9sYXRlc3QkMyIsInRodW5rIiwiYmluX3NoYXBlX3QkMTIiLCJ0X29mX3NleHAkMTAiLCJzZXhwXzUwMyIsInRhZ181MDQiLCJzZXhwX2FyZ3NfNTEwIiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsInNleHBfYXJnc181MTUiLCJhcmcwXzUxNiIsInJlczBfNTE3IiwiZmllbGRfc2V4cHNfMzczIiwic3VtbWFyeV8zNzQiLCJyZWFkbWVfMzc2IiwicGF0aF90b19leGVfMzc4IiwiZHVwbGljYXRlc18zODAiLCJleHRyYV8zODEiLCJzZXhwXzM3MiIsImZpZWxkX3NleHBzXzM4NCIsImZpZWxkX25hbWVfMzgyIiwidGFpbF8zOTAiLCJmaWVsZF9zZXhwXzM4MyQzIiwiZmllbGRfc2V4cF8zODMiLCJ4XzM5MSIsImZpZWxkX3NleHBfMzgzJDAiLCJmdmFsdWVfMzg3IiwiZmllbGRfc2V4cF8zODMkMSIsImZ2YWx1ZV8zODYiLCJmaWVsZF9zZXhwXzM4MyQyIiwiZnZhbHVlXzM4NSIsInJlYWRtZV8zNzciLCJwYXRoX3RvX2V4ZV8zNzkiLCJzdW1tYXJ5XzM3NSIsInNleHBfYXJnc181MDUiLCJhcmcwXzUwNiIsInJlczBfNTA3IiwiZmllbGRfc2V4cHNfMTUzIiwic3VtbWFyeV8xNTQiLCJyZWFkbWVfMTU2IiwidXNhZ2VfMTU4IiwiZmxhZ3NfMTYwIiwiZHVwbGljYXRlc18xNjIiLCJleHRyYV8xNjMiLCJzZXhwXzE1MiIsImZpZWxkX3NleHBzXzE2NiIsImZpZWxkX25hbWVfMTY0IiwidGFpbF8xNzMiLCJmaWVsZF9zZXhwXzE2NSQ0IiwiZmllbGRfc2V4cF8xNjUiLCJmaWVsZF9zZXhwXzE2NSQwIiwiZnZhbHVlXzE2OCIsImZpZWxkX3NleHBfMTY1JDEiLCJmdmFsdWVfMTcwIiwiZmllbGRfc2V4cF8xNjUkMiIsImZ2YWx1ZV8xNjkiLCJmaWVsZF9zZXhwXzE2NSQzIiwiZnZhbHVlXzE2NyIsInJlYWRtZV8xNTciLCJmbGFnc18xNjEiLCJ1c2FnZV8xNTkiLCJzdW1tYXJ5XzE1NSIsInNleHBfb2ZfdCQ5IiwiYXJnMF81MTgiLCJmbGFnc18xODQiLCJ1c2FnZV8xODIiLCJyZWFkbWVfMTc4Iiwic3VtbWFyeV8xNzYiLCJhcmdfMTg1IiwiYm5kc18xNzUiLCJhcmdfMTgzIiwiYm5kc18xNzUkMCIsInZfMTc5IiwiYXJnXzE4MSIsImJuZF8xODAiLCJibmRzXzE3NSQxIiwiYXJnXzE3NyIsImJuZHNfMTc1JDIiLCJyZXMwXzUxOSIsImFyZzBfNTIwIiwicmVzMF81MjEiLCJhcmcwXzUyMiIsInBhdGhfdG9fZXhlXzM5OSIsInJlYWRtZV8zOTUiLCJzdW1tYXJ5XzM5MyIsImFyZ180MDAiLCJibmRzXzM5MiIsInZfMzk2IiwiYXJnXzM5OCIsImJuZF8zOTciLCJibmRzXzM5MiQwIiwiYXJnXzM5NCIsImJuZHNfMzkyJDEiLCJyZXMwXzUyMyIsInRvX2xhdGVzdCQ0IiwiZmxhZ3MiLCJvZl9sYXRlc3QkNCIsImFub25zIiwiYmluX3NoYXBlX3QkMTMiLCJ0X29mX3NleHAkMTEiLCJzZXhwXzUyOCIsInRhZ181MjkiLCJzZXhwX2FyZ3NfNTQwIiwiYXJnMF81NDEiLCJyZXMwXzU0MiIsInNleHBfYXJnc181MzUiLCJhcmcwXzUzNiIsInJlczBfNTM3Iiwic2V4cF9hcmdzXzUzMCIsImFyZzBfNTMxIiwicmVzMF81MzIiLCJzZXhwX29mX3QkMTAiLCJhcmcwXzU0MyIsInJlczBfNTQ0IiwiYXJnMF81NDUiLCJyZXMwXzU0NiIsImFyZzBfNTQ3IiwicmVzMF81NDgiLCJvZl92ZXJzaW9uZWQiLCJncm91cCQxNSIsImJpbl9zaGFwZV90JDE0IiwiY29tcGFyZSQ2IiwiYV81NDkiLCJiXzU1MCIsImFfNTQ5JDAiLCJiXzU1MCQwIiwiYV81NTEiLCJiXzU1MiIsImFfNTUzIiwiYl81NTQiLCJhXzU1NSIsImJfNTU2IiwiYV81NTciLCJiXzU1OCIsImFfNTU5IiwiYl81NjAiLCJhXzU2MSIsImJfNTYyIiwidF9vZl9zZXhwJDEyIiwic2V4cF81NjciLCJ0YWdfNTY4Iiwic2V4cF9hcmdzXzU4OSIsImFyZzBfNTkwIiwicmVzMF81OTEiLCJzZXhwX2FyZ3NfNTg0IiwiYXJnMF81ODUiLCJyZXMwXzU4NiIsInNleHBfYXJnc181NzQiLCJhcmcwXzU3NSIsInJlczBfNTc2Iiwic2V4cF9hcmdzXzU3OSIsImFyZzBfNTgwIiwicmVzMF81ODEiLCJzZXhwX2FyZ3NfNTY5IiwiYXJnMF81NzAiLCJyZXMwXzU3MSIsInNleHBfb2ZfdCQxMSIsImFyZzBfNTkyIiwicmVzMF81OTMiLCJhcmcwXzU5NCIsInJlczBfNTk1IiwiYXJnMF81OTYiLCJyZXMwXzU5NyIsImFyZzBfNTk4IiwicmVzMF81OTkiLCJhcmcwXzYwMCIsInJlczBfNjAxIiwiZ3JvdXAkMTYiLCJiaW5fc2hhcGVfdCQxNSIsImNvbXBhcmUkNyIsImFfNjAyIiwiYl82MDMiLCJhXzYwNCIsImJfNjA1IiwiYV82MDYiLCJiXzYwNyIsInNleHBfb2ZfdCQxMiIsImFyZzBfNjIyIiwicmVzMF82MjMiLCJhcmcwXzYyNCIsInJlczBfNjI1IiwiY29tcGFyZSQ4IiwiYV82MjYiLCJiXzYyNyIsImVudW1lcmF0ZV82MzIiLCJlbnVtZXJhdGVfNjMzIiwiZW51bWVyYXRlXzYzMSIsImVudW1lcmF0ZV82MzQiLCJlbnVtZXJhdGVfNjMwIiwiZW51bWVyYXRlXzYzNCQwIiwiYXRfbW9zdF9vbmNlIiwiYXRfbGVhc3Rfb25jZSIsImF0X21vc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZV9mdW4iLCJhdF9tb3N0X29uY2VfZnVuIiwiYXRfbGVhc3Rfb25jZV9nZW4iLCJhdF9tb3N0X29uY2VfZ2VuIiwic2V4cF9vZl90JDEzIiwiYXRfbW9zdF9vbmNlXzYzOCIsImF0X2xlYXN0X29uY2VfNjM2IiwiYXJnXzYzOSIsImJuZHNfNjM1IiwiYXJnXzYzNyIsImJuZHNfNjM1JDAiLCJ0b19oZWxwX3N0cmluZyIsImRlc2NyaXB0aW9uIiwib2ZfaGVscF9zdHJpbmciLCJ4XzY0MCIsImZsYWdfbmFtZSQwIiwieF82NDEiLCJncm91cCQxNyIsImJpbl9zaGFwZV90JDE2IiwiYmluX3NpemVfdCQ3IiwiYmluX3dyaXRlX3QkNyIsImJpbl93cml0ZXJfdCQ2IiwiYmluX3JlYWRfdCQxNCIsImJpbl9yZWFkX3QkMTUiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl90JDYiLCJjb21wYXJlJDkiLCJhXzY0OCIsImJfNjQ5IiwiYV82NTAiLCJiXzY1MSIsImFsaWFzZXMiLCJkb2MiLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJhbGlhc2VzX2dlbiIsIm1hcF9wb2x5JDAiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxMyIsInNleHBfNjUzIiwiZmllbGRfc2V4cHNfNjU0IiwibmFtZV82NTUiLCJkb2NfNjU3IiwiYWxpYXNlc182NTkiLCJkdXBsaWNhdGVzXzY2MSIsImV4dHJhXzY2MiIsInNleHBfNjUzJDAiLCJmaWVsZF9zZXhwc182NjUiLCJmaWVsZF9uYW1lXzY2MyIsInRhaWxfNjcxIiwiZmllbGRfc2V4cF82NjQkMyIsImZpZWxkX3NleHBfNjY0IiwieF82NzIiLCJmaWVsZF9zZXhwXzY2NCQwIiwiZnZhbHVlXzY2OCIsImZpZWxkX3NleHBfNjY0JDEiLCJmdmFsdWVfNjY3IiwiZmllbGRfc2V4cF82NjQkMiIsImZ2YWx1ZV82NjYiLCJhbGlhc2VzXzY2MCIsImRvY182NTgiLCJuYW1lXzY1NiIsInNleHBfb2ZfdCQxNCIsImFsaWFzZXNfNjc4IiwiZG9jXzY3NiIsIm5hbWVfNjc0IiwiYXJnXzY3OSIsImJuZHNfNjczIiwiYXJnXzY3NyIsImJuZHNfNjczJDAiLCJhcmdfNjc1IiwiYm5kc182NzMkMSIsInBhcnNlX25hbWUiLCJudW1fb2NjdXJyZW5jZXMiLCJyZXF1aXJlc19hcmciLCJoZWxwX3NjcmVlbl9jb21wYXJlIiwid29yZF93cmFwX2FuZF9zdHJpcCIsIndpZHRoIiwiY2h1bmtzIiwid29yZCIsIndvcmRzIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4Iiwic2xhY2siLCJpbmRlbnRfYW5kX25ld2xpbmUiLCJsaHNfcGFkIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImZsYWciLCJmbGFnX25hbWVfd2l0aF9hbGlhc2VzIiwiZG9jdW1lbnRhdGlvbiIsImZsYWdfd2lkdGgiLCJmbGFnX29uX2l0c19vd25fbGluZSIsIndyYXBwZWRfZG9jdW1lbnRhdGlvbiIsImRvY193cmFwcGVkX3Jlc3RfbGluZXMiLCJkb2Nfd3JhcHBlZF9maXJzdF9saW5lIiwid3JhcHBlZF9kb2NfbGluZXMiLCJwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV8iLCJsb29rdXBfZXhwYW5kIiwia2V5X3R5cGUiLCJpc19kYXNoIiwiYWxpc3QkMCIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzY4MCIsIm1hdGNoaW5nX2tleXMiLCJjdXN0b21fcHJpbnRmXzY4MSIsImdyb3VwJDE4IiwiYmluX3NoYXBlX3QkMTciLCJiaW5fc2l6ZV90JDgiLCJiaW5fd3JpdGVfdCQ4IiwiYmluX3dyaXRlcl90JDciLCJiaW5fcmVhZF90JDE2IiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsImNvbXBhcmUkMTAiLCJhXzY4MiIsImJfNjgzIiwiYV82ODQiLCJiXzY4NSIsImFfNjg2IiwiYl82ODciLCJmbGFncyQwIiwiYW5vbnMkMCIsInJlYWRtZSQwIiwic3VtbWFyeSQwIiwibWFrZV9jcmVhdG9yJDEiLCJzdW1tYXJ5X2Z1biIsInJlYWRtZV9mdW4iLCJhbm9uc19mdW4iLCJmbGFnc19mdW4iLCJzdW1tYXJ5X2dlbiIsInJlYWRtZV9nZW4iLCJhbm9uc19nZW4iLCJmbGFnc19nZW4iLCJtYXAkNSIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDYiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJ0X29mX3NleHAkMTQiLCJzZXhwXzY4OSIsImZpZWxkX3NleHBzXzY5MCIsInN1bW1hcnlfNjkxIiwicmVhZG1lXzY5MyIsImFub25zXzY5NSIsImZsYWdzXzY5NyIsImR1cGxpY2F0ZXNfNjk5IiwiZXh0cmFfNzAwIiwic2V4cF82ODkkMCIsImZpZWxkX3NleHBzXzcwMyIsImZpZWxkX25hbWVfNzAxIiwidGFpbF83MTAiLCJmaWVsZF9zZXhwXzcwMiQ0IiwiZmllbGRfc2V4cF83MDIiLCJ4XzcxMSIsImZpZWxkX3NleHBfNzAyJDAiLCJmdmFsdWVfNzA3IiwiZmllbGRfc2V4cF83MDIkMSIsImZ2YWx1ZV83MDYiLCJmaWVsZF9zZXhwXzcwMiQyIiwiZnZhbHVlXzcwNCIsImZpZWxkX3NleHBfNzAyJDMiLCJmdmFsdWVfNzA1IiwidGFnXzYxMyIsInNleHBfYXJnc182MTQiLCJhcmcwXzYxNSIsInJlczBfNjE2Iiwic2V4cF9hcmdzXzYxOSIsImFyZzBfNjIwIiwicmVzMF82MjEiLCJyZWFkbWVfNjk0IiwiZmxhZ3NfNjk4IiwiYW5vbnNfNjk2Iiwic3VtbWFyeV82OTIiLCJzZXhwX29mX3QkMTUiLCJmbGFnc183MjEiLCJhbm9uc183MTkiLCJyZWFkbWVfNzE1Iiwic3VtbWFyeV83MTMiLCJhcmdfNzIyIiwiYm5kc183MTIiLCJhcmdfNzIwIiwiYm5kc183MTIkMCIsInZfNzE2IiwiYXJnXzcxOCIsImJuZF83MTciLCJibmRzXzcxMiQxIiwiYXJnXzcxNCIsImJuZHNfNzEyJDIiLCJmaW5kX2ZsYWciLCJjaG9pY2VzIiwiZmxhZ19pbmZvIiwiZ2V0X3VzYWdlIiwiZ3JvdXAkMTkiLCJiaW5fc2hhcGVfdCQxOCIsImJpbl9zaXplX3QkOSIsImJpbl93cml0ZV90JDkiLCJiaW5fd3JpdGVyX3QkOCIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZF90JDE5IiwiYmluX3JlYWRlcl90JDgiLCJiaW5fdCQ4IiwiY29tcGFyZSQxMSIsImFfNzI1IiwiYl83MjYiLCJhXzcyNyIsImJfNzI4IiwiYV83MjkiLCJiXzczMCIsImFfNzMxIiwiYl83MzIiLCJ0XzczNCIsInRfNzMzIiwidF83MzYiLCJ0XzczNSIsInJlYWRtZSQxIiwic3VtbWFyeSQxIiwic3ViY29tbWFuZHMkMCIsInJlYWRtZSQyIiwic3VtbWFyeSQyIiwibWFrZV9jcmVhdG9yJDIiLCJzdWJjb21tYW5kc19mdW4iLCJzdWJjb21tYW5kc19nZW4iLCJjcmVhdGUkMiIsIm1hcCQ3IiwiaXRlciQ1IiwiZm9sZCQ1IiwibWFwX3BvbHkkMiIsImZvcl9hbGwkNSIsImV4aXN0cyQ1IiwidG9fbGlzdCQ1IiwiaXRlciQ2IiwiZm9sZCQ2IiwiZm9yX2FsbCQ2IiwiZXhpc3RzJDYiLCJ0b19saXN0JDYiLCJtYXAkOCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMiIsInRfb2Zfc2V4cCQxNSIsIm9mX2FfNzM3Iiwic2V4cF83MzkiLCJmaWVsZF9zZXhwc183NDAiLCJzdW1tYXJ5Xzc0MSIsInJlYWRtZV83NDMiLCJzdWJjb21tYW5kc183NDUiLCJkdXBsaWNhdGVzXzc0NyIsImV4dHJhXzc0OCIsInNleHBfNzM5JDAiLCJmaWVsZF9zZXhwc183NTEiLCJmaWVsZF9uYW1lXzc0OSIsInRhaWxfNzYyIiwiZmllbGRfc2V4cF83NTAkMyIsImZpZWxkX3NleHBfNzUwIiwieF83NjMiLCJmaWVsZF9zZXhwXzc1MCQwIiwiZnZhbHVlXzc2MCIsImZpZWxkX3NleHBfNzUwJDEiLCJzZXhwXzc1NiIsImFyZzFfNzUzIiwiYXJnMF83NTIiLCJyZXMwXzc1NCIsInJlczFfNzU1IiwiZnZhbHVlXzc1OCIsImZpZWxkX3NleHBfNzUwJDIiLCJmdmFsdWVfNzU5IiwicmVhZG1lXzc0NCIsInN1YmNvbW1hbmRzXzc0NiIsInN1bW1hcnlfNzQyIiwic2V4cF9vZl90JDE2Iiwib2ZfYV83NjQiLCJzdWJjb21tYW5kc183NzIiLCJyZWFkbWVfNzY4Iiwic3VtbWFyeV83NjYiLCJibmRzXzc2NSIsImFyZzFfNzc1IiwiYXJnMF83NzQiLCJyZXMwXzc3NiIsInJlczFfNzc3IiwiYXJnXzc3MyIsImJuZHNfNzY1JDAiLCJ2Xzc2OSIsImFyZ183NzEiLCJibmRfNzcwIiwiYm5kc183NjUkMSIsImFyZ183NjciLCJibmRzXzc2NSQyIiwiZmluZF9zdWJjb21tYW5kIiwiZ3JvdXAkMjAiLCJiaW5fc2hhcGVfdCQxOSIsImJpbl9zaXplX3QkMTAiLCJiaW5fd3JpdGVfdCQxMCIsImJpbl93cml0ZXJfdCQ5IiwiYmluX3JlYWRfdCQyMCIsImJpbl9yZWFkX3QkMjEiLCJiaW5fcmVhZGVyX3QkOSIsImJpbl90JDkiLCJjb21wYXJlJDEyIiwiYV83NzgiLCJiXzc3OSIsImFfNzgwIiwiYl83ODEiLCJhXzc4MiIsImJfNzgzIiwiY2hpbGRfc3ViY29tbWFuZCIsInBhdGhfdG9fZXhlIiwid29ya2luZ19kaXIiLCJyZWFkbWUkMyIsInN1bW1hcnkkMyIsImNoaWxkX3N1YmNvbW1hbmQkMCIsInBhdGhfdG9fZXhlJDAiLCJ3b3JraW5nX2RpciQwIiwicmVhZG1lJDQiLCJzdW1tYXJ5JDQiLCJtYWtlX2NyZWF0b3IkMyIsIndvcmtpbmdfZGlyX2Z1biIsInBhdGhfdG9fZXhlX2Z1biIsImNoaWxkX3N1YmNvbW1hbmRfZnVuIiwid29ya2luZ19kaXJfZ2VuIiwicGF0aF90b19leGVfZ2VuIiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMTYiLCJzZXhwXzc4NSIsImZpZWxkX3NleHBzXzc4NiIsInN1bW1hcnlfNzg3IiwicmVhZG1lXzc4OSIsIndvcmtpbmdfZGlyXzc5MSIsInBhdGhfdG9fZXhlXzc5MyIsImNoaWxkX3N1YmNvbW1hbmRfNzk1IiwiZHVwbGljYXRlc183OTciLCJleHRyYV83OTgiLCJzZXhwXzc4NSQwIiwiZmllbGRfc2V4cHNfODAxIiwiZmllbGRfbmFtZV83OTkiLCJ0YWlsXzgwOSIsImZpZWxkX3NleHBfODAwJDUiLCJmaWVsZF9zZXhwXzgwMCIsInhfODEwIiwiZmllbGRfc2V4cF84MDAkMCIsImZ2YWx1ZV84MDQiLCJmaWVsZF9zZXhwXzgwMCQxIiwiZnZhbHVlXzgwNiIsImZpZWxkX3NleHBfODAwJDIiLCJmdmFsdWVfODA1IiwiZmllbGRfc2V4cF84MDAkMyIsImZ2YWx1ZV84MDMiLCJmaWVsZF9zZXhwXzgwMCQ0IiwiZnZhbHVlXzgwMiIsInJlYWRtZV83OTAiLCJjaGlsZF9zdWJjb21tYW5kXzc5NiIsInBhdGhfdG9fZXhlXzc5NCIsIndvcmtpbmdfZGlyXzc5MiIsInN1bW1hcnlfNzg4Iiwic2V4cF9vZl90JDE3IiwiY2hpbGRfc3ViY29tbWFuZF84MjIiLCJwYXRoX3RvX2V4ZV84MjAiLCJ3b3JraW5nX2Rpcl84MTgiLCJyZWFkbWVfODE0Iiwic3VtbWFyeV84MTIiLCJhcmdfODIzIiwiYm5kc184MTEiLCJhcmdfODIxIiwiYm5kc184MTEkMCIsImFyZ184MTkiLCJibmRzXzgxMSQxIiwidl84MTUiLCJhcmdfODE3IiwiYm5kXzgxNiIsImJuZHNfODExJDIiLCJhcmdfODEzIiwiYm5kc184MTEkMyIsImdyb3VwJDIxIiwiYmluX3NoYXBlX3QkMjAiLCJiaW5fc2l6ZV90JDExIiwiYmluX3dyaXRlX3QkMTEiLCJiaW5fd3JpdGVyX3QkMTAiLCJiaW5fcmVhZF90JDIyIiwiYmluX3JlYWRfdCQyMyIsImJpbl9yZWFkZXJfdCQxMCIsImJpbl90JDEwIiwiY29tcGFyZSQxMyIsImFfODI0IiwiYl84MjUiLCJhXzgyNCQwIiwiYl84MjUkMCIsImFfODI2IiwiYl84MjciLCJhXzgyOCIsImJfODI5IiwiYV84MzAiLCJiXzgzMSIsImFfODM0IiwiYV84MzIiLCJiXzgzNSIsImJfODMzIiwidF9vZl9zZXhwJDE3Iiwic2V4cF84NDAiLCJ0YWdfODQxIiwic2V4cF9hcmdzXzg0NyIsImFyZzBfODQ4IiwicmVzMF84NDkiLCJzZXhwX2FyZ3NfODUyIiwiYXJnMV84NTQiLCJhcmcwXzg1MyIsInJlczBfODU1IiwicmVzMV84NTYiLCJzZXhwX2FyZ3NfODQyIiwiYXJnMF84NDMiLCJyZXMwXzg0NCIsInNleHBfb2ZfdCQxOCIsImFyZzBfODU3IiwicmVzMF84NTgiLCJhcmcwXzg1OSIsInJlczBfODYwIiwiYXJnMV84NjIiLCJhcmcwXzg2MSIsInJlczBfODYzIiwicmVzMV84NjQiLCJleHBhbmRlZF9zdWJjb21tYW5kcyIsImV4cGFuZCIsInNleHBfb2ZfdCQxOSIsImFyZzBfODY1IiwicmVzMF84NjYiLCJhcmcwXzg2NyIsInJlczBfODY4IiwiYXJnMF84NjkiLCJyZXMwXzg3MCIsImFyZzBfODcxIiwicmVzMF84NzIiLCJleHRyYWN0aW9uX3ZhciIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJleHBlY3QiLCJleHBlY3QkMCIsImVycm9yX3NvdXJjZV8wMDciLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMxXzAxMSIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwibl9mcm9udCIsIm5fYmFjayIsImZyb250IiwiYmFjayIsInJldl9iYWNrIiwiZnJvbnQkMCIsInJldl9mcm9udCIsImJhY2skMCIsInJhaXNlX2Zyb250X2ludmFyaWFudCIsInJhaXNlX2JhY2tfaW52YXJpYW50IiwicGVla19mcm9udF9leG4iLCJwZWVrX2JhY2tfZXhuIiwiZHJvcF9mcm9udF9leG4iLCJkcm9wX2JhY2tfZXhuIiwib3B0aW9uYWwiLCJwZWVrX2Zyb250IiwicGVla19iYWNrIiwicGVlayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJidWlsZCIsIm9mX2Zvcm1hdCIsInRvX2Zvcm1hdCIsInNldF9hdCIsInNldF9pbnRlcm5hbCIsInNldF9pZl9ub25lIiwic2V0X2V4biIsImdldF9leG4iLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsImRpZSIsImtleV9jcmVhdGUiLCJtdWx0aV9hZGQiLCJzZXRfd2l0aF9kZWZhdWx0IiwicnVuX2FuZF9leGl0IiwiZW52IiwicGFydCIsImNvbXBsZXRpb25zIiwiZXh0cmFfZG9jIiwiY29tcGxldGUiLCJvZl9sYXp5IiwiZXh0cmFfZG9jJDAiLCJob3N0X2FuZF9wb3J0Iiwic2V4cF9jb252IiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJkdXBsaWNhdGVfa2V5cyIsIlMiLCJ1bml2X21hcCIsInZhbGlkX2FyZ3VtZW50c19leHRyYSIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImNvbW1hX3NlcGFyYXRlZCIsImFsbG93X2VtcHR5Iiwic3RyaXBfd2hpdGVzcGFjZSIsInVuaXF1ZV92YWx1ZXMiLCJjb21wbGV0ZV9lbHQiLCJoZCIsInByZWZpeGVzIiwic2Vlbl9hbHJlYWR5IiwiaXNfYWxsb3dlZCIsImNob2ljZSIsImNob2ljZXMkMCIsInN0cmluZyQwIiwicGFyc2UkMCIsImVudW1lcmF0ZV8wMTIiLCJlbnVtZXJhdGVfMDEzIiwiZW51bWVyYXRlXzAxMSIsImVudW1lcmF0ZV8wMTQiLCJlbnVtZXJhdGVfMDEwIiwiZW51bWVyYXRlXzAxNCQwIiwicGFyc2UkMSIsImFjdGlvbiIsImFyZ19kb2MiLCJkb2MkMSIsImFyZ19kb2MkMCIsIndyYXBfaWZfb3B0aW9uYWwiLCJoZWxwIiwiYWxpZ24iLCJhcmdfZmxhZyIsImFyZ190eXBlIiwid3JpdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJ3cml0ZV9vcHRpb24iLCJyZXF1aXJlZF92YWx1ZSIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsIm5vX2FyZ19nZW5lcmFsIiwia2V5X3ZhbHVlIiwiZGVwcmVjYXRlZF9ob29rIiwiYWN0aW9uJDAiLCJub19hcmciLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmdfc29tZSIsImxpc3RlZCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIiLCJxIiwib25lX29yX21vcmVfYXNfbGlzdCIsImVzY2FwZV9nZW5lcmFsIiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsInN1YmNvbW1hbmQiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJyZXBsYWNlX2ZpcnN0IiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsImNvbmNhdCQwIiwiY2RyIiwiY2FyIiwiY2RyJDAiLCJjYXIkMCIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInBhcnNlX21vcmUiLCJmb3JfY29tcGxldGlvbiIsInVwZGF0ZV9lbnYiLCJwYXJzZXIiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibW9yZSQwIiwidGVzdCQwIiwiYW5vbiIsImxvb3AiLCJjb25zdW1lIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsInQzIiwiYTMiLCJ0NCIsImE0Iiwic3RybGVuIiwic3BlY2lhbF9jaGFycyIsImhhc19zcGVjaWFsX2NoYXJzIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI3IiwiYl8wMjgiLCJhXzAzMSIsImJfMDMyIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiY3VzdG9tX3ByaW50Zl8wMzMiLCJjdXN0b21fcHJpbnRmXzAzNCIsInN1YmNvbW1hbmRfY21wX2ZzdCIsInNoYXBlIiwicGF0aF9rZXkiLCJhcmdzX2tleSIsImhlbHBfa2V5IiwiYXBwIiwicGYiLCJweCIsIm1mIiwibXgiLCJyZXR1cm4kMSIsIndyYXAiLCJtYWluIiwib2ZfcGFyYW0iLCJ0b19wYXJhbSIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiYm9vbCQwIiwicGVyY2VudCQwIiwiaG9zdF9hbmRfcG9ydCQwIiwic2V4cF9jb252JDAiLCJzcGVjIiwiZXNjYXBlX2Fub24iLCJmaW5hbF9hbm9uIiwiZnVsbF9mbGFnX3JlcXVpcmVkIiwiYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAiLCJjaGVja19hdmFpbGFibGUiLCJuYW1lX21hdGNoaW5nIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJib3RoIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0X2Jvb2wiLCJwYXNzZWQiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJmJDMiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1IiwiYXJnX25hbWVzIiwicGFyYW0iLCJmbGFnX25hbWVzIiwiYW5vbl9uYW1lcyIsIm5hbWVzX3dpdGhfY29tbWFzIiwidG9fc3RyaW5nJDEiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmUiLCJpZl9ub3RoaW5nX2Nob3NlbiIsInRzJDAiLCJjdXN0b21fcHJpbnRmXzA0MiIsImN1c3RvbV9wcmludGZfMDQzIiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInNoYXBlJDAiLCJzdWJjb21tYW5kX3RvX3NoYXBlIiwiY29tcF9jd29yZCIsInNoYXBlJDEiLCJzZXhwYWJsZV9zaGFwZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljX3NwZWMiLCJmbGFncyQxIiwiYmFzZSQwIiwic3Vic19rZXkiLCJsYXp5X2dyb3VwIiwicHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciIsImJvZHkiLCJwJDAiLCJwJDEiLCJwJDIiLCJvZl9sYXp5JDAiLCJwcm94eV9vZl9zZXhwYWJsZSIsInNleHBhYmxlIiwicGF0aF90b19zdWJjb21tYW5kIiwia2luZCIsImtpbmRfb2Zfc2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMCIsInByb3h5IiwicHJpbnRfdmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsInVudmVyc2lvbmVkIiwiYmFzZSQxIiwibm9ybWFsaXplX3ZlcnNpb25fbGluZXMiLCJkZWZhdWx0X3ZlcnNpb24iLCJkZWZhdWx0X2J1aWxkX2luZm8iLCJyZXByaW50X2J1aWxkX2luZm8iLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsInN0cmluZyQxIiwiaW50JDIiLCJjaGFyJDIiLCJmbG9hdCQyIiwiYm9vbCQxIiwicGVyY2VudCQxIiwiaG9zdF9hbmRfcG9ydCQxIiwic2V4cCQxIiwic2V4cF9jb252JDEiLCJiYXNpYyIsInBhcmFtcyIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsInNoYXBlJDIiLCJnZXRwaWQiLCJjbG9zZSIsImluX2NoYW5uZWxfb2ZfZGVzY3IiLCJ3YWl0IiwiZ2V0ZW52X2FuZF9jbGVhciIsInZhciQwIiwiaGVscF9zZXhwIiwicHJvZyIsImFyZ3YwIiwicHJvZ19zZWFyY2hfcGF0aCIsImNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0ciIsImVudl92YXIiLCJsaXN0JDEiLCJwcm9jZXNzX2luZm8iLCJzdGFydF9yZWFkaW5nIiwiZGVzY3IiLCJpbmZvIiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsInNoYXBlX29mX3Byb3h5Iiwic2hhcGVfb2ZfcHJveHlfa2luZCIsInNoYXBlX29mX2V4ZSIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwYXRoJDEiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsImVudiQxIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQiLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwid2hlbl9wYXJzaW5nX3N1Y2NlZWRzIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0IiwicGFyc2VyJDEiLCJjbWRsaW5lJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwiYWxpYXMiLCJmbGFnJDAiLCJmbGFnJDEiLCJjb21wbGV0aW5nIiwiY21kbGluZSQyIiwiZW52JDIiLCJwYXJzZV9mbGFnczIiLCJlbnYkMyIsInBhcnNlX2ZsYWdzJDAiLCJwYXJ0JDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJleG5fc3RyIiwidmVyYm9zZSIsImVycm9yX21zZyIsImRpZV9zaG93aW5nX2hlbHAiLCJwYXJzZV9ncm91cCIsIm1heWJlX25ld19jb21wX2N3b3JkJDAiLCJyZXNvbHZlIiwic3VicyQwIiwic3ViJDAiLCJib2R5JDAiLCJ0b19vdXRwdXQiLCJyZXN0X29mX3Jlc3QiLCJmaXJzdF9vZl9yZXN0IiwibmV3X3ZhbHVlJDAiLCJuZXdfdmFsdWUiLCJ0aHVuayQwIiwiYXJndiIsImJ1aWxkX2luZm8kMCIsInZlcnNpb24kMCIsInN1cHBvcnRlZF92ZXJzaW9ucyQwIiwicGF0aF90b19zdWJjb21tYW5kJDEiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMiIsImZuYW1lIiwiYXJndl8wIiwiY29tcF9jd29yZCQwIiwiZGVwcmVjYXRlZF9ydW4iLCJpc19oZWxwIiwiaXNfaGVscF9yZWMiLCJpc19oZWxwX3JlY19mbGFncyIsImlzX2V4cGFuZF9kb3RzIiwicGF0aF9zdHJpbmdzIiwiYXJncyQyIiwiYXJncyQzIiwiYXJncyQ0IiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsInR5cGVuYW1lX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJ0X3NleHBfZ3JhbW1hciQyIiwidHlwZW5hbWVfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJjaGVjayQyIiwidG9fc3RyaW5nJDIiLCJwcCQyIiwib2Zfc3RyaW5nJDIiLCJhcmdfdHlwZSQwIiwic2V4cF9hc19zdHJpbmciLCJ2XzAwMSIsInNlcmlhbGl6ZWRfc2V4cCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJ2XzAxMiIsInZfMDEzIiwicmVzMV8wMTciLCJleHBlY3RlZF9iaW5faW8iLCJiaW5hYmxlX20iLCJzZXJpYWxpemVkX2Jpbl9pbyIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJyZXMxXzAyNCIsInZfMDE5IiwicmVzMl8wMjUiLCJhcmcxXzAyOSIsImFyZzBfMDI4Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJyZXZfc2tpcHBlZCIsInN0cmluZ3MkMCIsImNvbnRpbnVlJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwidl8wNDQiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMV8wNDgiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwicGVybXV0YXRhdGlvbnMiLCJhcmcxXzA1NyIsImFyZzBfMDU2IiwicmVzMF8wNTgiLCJyZXMxXzA1OSIsImJsYW5nIiwiY21wX2EkMCIsImNtcF9hJDUiLCJjbXBfYSQxIiwiYV8wMTUiLCJiXzAxNiIsImNtcF9hJDYiLCJhXzAxNyIsImJfMDE4IiwiY21wX2EkMiIsImFfMDE5IiwiYl8wMjAiLCJjbXBfYSQ3IiwiY21wX2EkMyIsImFfMDIzIiwiYl8wMjQiLCJjbXBfYSQ4IiwiYV8wMzMiLCJiXzAzNCIsImNtcF9hJDQiLCJhXzAzNyQwIiwiYl8wMzgkMCIsImFfMDQxIiwiYV8wMzkiLCJiXzA0MiIsImJfMDQwIiwiYV8wNDMiLCJiXzA0NCIsImFfMDQ1IiwiYl8wNDYiLCJhXzA0OSIsImFfMDQ3IiwiYl8wNTAiLCJiXzA0OCIsImFfMDUzIiwiYl8wNTQiLCJhXzA2MyIsImJfMDY0IiwiYV8wNjUiLCJiXzA2NiIsImFfMDY3IiwiYl8wNjgiLCJhXzA2OSIsImJfMDcwIiwiYV8wNzEiLCJiXzA3MiIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidjAkMSIsInYwJDIiLCJ2MCQzIiwic3VidGVybXMiLCJ0MSQxIiwiY29udGFpbnNfbm9fY29uc3RhbnRzIiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5vdCIsImFuZGFsc28iLCJvdGhlciIsInQxYiIsInQxYSIsIm9yZWxzZSIsImlmJDAiLCJvZl9hXzA3MyIsImFyZzFfMDc1IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMF8wODIiLCJyZXMwXzA4MyIsImFyZzJfMDg2IiwiYXJnMV8wODUiLCJhcmcwXzA4NCIsInJlczBfMDg3IiwicmVzMV8wODgiLCJyZXMyXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJnYXRoZXJfY29uanVuY3RzIiwidHMkMSIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJraWxvYnl0ZXMiLCJtZWdhYnl0ZXMiLCJnaWdhYnl0ZXMiLCJ0ZXJhYnl0ZXMiLCJwZXRhYnl0ZXMiLCJleGFieXRlcyIsIndvcmRzX2ludF9leG4iLCJ3b3Jkc19mbG9hdCIsIm9mX2tpbG9ieXRlcyIsIm9mX21lZ2FieXRlcyIsIm9mX2dpZ2FieXRlcyIsIm9mX3RlcmFieXRlcyIsIm9mX3BldGFieXRlcyIsIm9mX2V4YWJ5dGVzIiwib2Zfd29yZHNfaW50Iiwib2Zfd29yZHNfZmxvYXRfZXhuIiwiYmFzZV9zdHIiLCJleHRfY2hhciIsImxhcmdlc3RfbWVhc3VyZSIsInRfYWJzIiwibm9fbWF0Y2giLCJ2YWxfc2V4cCIsInVuaXRfbmFtZSIsImN1c3RvbV9wcmludGZfMDA1IiwiY3VzdG9tX3ByaW50Zl8wMDYiLCJjdXN0b21fcHJpbnRmXzAwNyIsImN1c3RvbV9wcmludGZfMDA4IiwiY3VzdG9tX3ByaW50Zl8wMDkiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDExIiwidG9fc3RyaW5nX3Nob3J0IiwidG9fdW5pdHNfc3RyIiwidG9fdW5pdCIsImZfYWJzIiwiY3VzdG9tX3ByaW50Zl8wMTQiLCJjdXN0b21fcHJpbnRmXzAxNSIsImN1c3RvbV9wcmludGZfMDE2IiwiY3VzdG9tX3ByaW50Zl8wMTciLCJjdXN0b21fcHJpbnRmXzAxOCIsImN1c3RvbV9wcmludGZfMDE5IiwiY3VzdG9tX3ByaW50Zl8wMjAiLCJjdXN0b21fcHJpbnRmXzAyMSIsImN1c3RvbV9wcmludGZfMDIyIiwiY3VzdG9tX3ByaW50Zl8wMjMiLCJjdXN0b21fcHJpbnRmXzAyNCIsImN1c3RvbV9wcmludGZfMDI1IiwiY3VzdG9tX3ByaW50Zl8wMjYiLCJieXRlc19wZXJfd29yZCIsImVycm9yX3NvdXJjZV8wNjkiLCJlcnJvcl9zb3VyY2VfMTY5IiwiZXJyb3Jfc291cmNlXzI1MyIsInYxNiIsInYxNSIsInYxNCIsInYxMyIsInYxMiIsInYxMSIsInYxMCIsInY5IiwidjgiLCJzaXplJDYiLCJzaXplJDciLCJzaXplJDgiLCJzaXplJDkiLCJzaXplJDEwIiwic2l6ZSQxMSIsInNpemUkMTIiLCJzaXplJDEzIiwidl9taW5vcl93b3JkcyIsInZfcHJvbW90ZWRfd29yZHMiLCJ2X21ham9yX3dvcmRzIiwidl9taW5vcl9jb2xsZWN0aW9ucyIsInZfbWFqb3JfY29sbGVjdGlvbnMiLCJ2X2hlYXBfd29yZHMiLCJ2X2hlYXBfY2h1bmtzIiwidl9saXZlX3dvcmRzIiwidl9saXZlX2Jsb2NrcyIsInZfZnJlZV93b3JkcyIsInZfZnJlZV9ibG9ja3MiLCJ2X2xhcmdlc3RfZnJlZSIsInZfZnJhZ21lbnRzIiwidl9jb21wYWN0aW9ucyIsInZfdG9wX2hlYXBfd29yZHMiLCJ2X3N0YWNrX3NpemUiLCJuJDUiLCJuJDYiLCJuJDciLCJuJDgiLCJuJDkiLCJuJDEwIiwibiQxMSIsIm4kMTIiLCJuJDEzIiwiaHN2JDEwIiwiaHN2JDExIiwiaHN2JDEyIiwiaHN2JDEzIiwiaHN2JDE0Iiwic2V4cF8wMTQiLCJmaWVsZF9zZXhwc18wMTUiLCJtaW5vcl93b3Jkc18wMTYiLCJwcm9tb3RlZF93b3Jkc18wMTgiLCJtYWpvcl93b3Jkc18wMjAiLCJtaW5vcl9jb2xsZWN0aW9uc18wMjIiLCJtYWpvcl9jb2xsZWN0aW9uc18wMjQiLCJoZWFwX3dvcmRzXzAyNiIsImhlYXBfY2h1bmtzXzAyOCIsImxpdmVfd29yZHNfMDMwIiwibGl2ZV9ibG9ja3NfMDMyIiwiZnJlZV93b3Jkc18wMzQiLCJmcmVlX2Jsb2Nrc18wMzYiLCJsYXJnZXN0X2ZyZWVfMDM4IiwiZnJhZ21lbnRzXzA0MCIsImNvbXBhY3Rpb25zXzA0MiIsInRvcF9oZWFwX3dvcmRzXzA0NCIsInN0YWNrX3NpemVfMDQ2IiwiZHVwbGljYXRlc18wNDgiLCJleHRyYV8wNDkiLCJpdGVyXzA3MCIsInNleHBfMDE0JDAiLCJmaWVsZF9zZXhwc18wNTIiLCJmaWVsZF9uYW1lXzA1MCIsInRhaWxfMDcxIiwiZmllbGRfc2V4cF8wNTEkMTYiLCJmaWVsZF9zZXhwXzA1MSIsInhfMDcyIiwiZmllbGRfc2V4cF8wNTEkMCIsImZ2YWx1ZV8wNTQiLCJmaWVsZF9zZXhwXzA1MSQxIiwiZnZhbHVlXzA1MyIsImZpZWxkX3NleHBfMDUxJDIiLCJmaWVsZF9zZXhwXzA1MSQzIiwiZnZhbHVlXzA2OCIsImZpZWxkX3NleHBfMDUxJDQiLCJmdmFsdWVfMDY1IiwiZmllbGRfc2V4cF8wNTEkNSIsImZpZWxkX3NleHBfMDUxJDYiLCJmdmFsdWVfMDY0IiwiZmllbGRfc2V4cF8wNTEkNyIsImZ2YWx1ZV8wNjEiLCJmaWVsZF9zZXhwXzA1MSQ4IiwiZnZhbHVlXzA2MCIsImZpZWxkX3NleHBfMDUxJDkiLCJmdmFsdWVfMDU3IiwiZmllbGRfc2V4cF8wNTEkMTAiLCJmdmFsdWVfMDYzIiwiZmllbGRfc2V4cF8wNTEkMTEiLCJmdmFsdWVfMDYyIiwiZmllbGRfc2V4cF8wNTEkMTIiLCJmdmFsdWVfMDU5IiwiZmllbGRfc2V4cF8wNTEkMTMiLCJmdmFsdWVfMDU4IiwiZmllbGRfc2V4cF8wNTEkMTQiLCJmdmFsdWVfMDU2IiwiZmllbGRfc2V4cF8wNTEkMTUiLCJmdmFsdWVfMDU1Iiwic3RhY2tfc2l6ZV8wNDciLCJ0b3BfaGVhcF93b3Jkc18wNDUiLCJjb21wYWN0aW9uc18wNDMiLCJmcmFnbWVudHNfMDQxIiwibGFyZ2VzdF9mcmVlXzAzOSIsImZyZWVfYmxvY2tzXzAzNyIsImZyZWVfd29yZHNfMDM1IiwibGl2ZV9ibG9ja3NfMDMzIiwibGl2ZV93b3Jkc18wMzEiLCJoZWFwX2NodW5rc18wMjkiLCJoZWFwX3dvcmRzXzAyNyIsIm1ham9yX2NvbGxlY3Rpb25zXzAyNSIsIm1pbm9yX2NvbGxlY3Rpb25zXzAyMyIsIm1ham9yX3dvcmRzXzAyMSIsInByb21vdGVkX3dvcmRzXzAxOSIsIm1pbm9yX3dvcmRzXzAxNyIsInN0YWNrX3NpemVfMTA0IiwidG9wX2hlYXBfd29yZHNfMTAyIiwiY29tcGFjdGlvbnNfMTAwIiwiZnJhZ21lbnRzXzA5OCIsImxhcmdlc3RfZnJlZV8wOTYiLCJmcmVlX2Jsb2Nrc18wOTQiLCJmcmVlX3dvcmRzXzA5MiIsImxpdmVfYmxvY2tzXzA5MCIsImxpdmVfd29yZHNfMDg4IiwiaGVhcF9jaHVua3NfMDg2IiwiaGVhcF93b3Jkc18wODQiLCJtYWpvcl9jb2xsZWN0aW9uc18wODIiLCJtaW5vcl9jb2xsZWN0aW9uc18wODAiLCJtYWpvcl93b3Jkc18wNzgiLCJwcm9tb3RlZF93b3Jkc18wNzYiLCJtaW5vcl93b3Jkc18wNzQiLCJibmRzXzA3MyIsImFyZ18xMDMiLCJibmRzXzA3MyQwIiwiYXJnXzEwMSIsImJuZHNfMDczJDEiLCJhcmdfMDk5IiwiYm5kc18wNzMkMiIsImFyZ18wOTciLCJibmRzXzA3MyQzIiwiYXJnXzA5NSIsImJuZHNfMDczJDQiLCJhcmdfMDkzIiwiYm5kc18wNzMkNSIsImFyZ18wOTEiLCJibmRzXzA3MyQ2IiwiYXJnXzA4OSIsImJuZHNfMDczJDciLCJhcmdfMDg3IiwiYm5kc18wNzMkOCIsImFyZ18wODUiLCJibmRzXzA3MyQ5IiwiYXJnXzA4MyIsImJuZHNfMDczJDEwIiwiYXJnXzA4MSIsImJuZHNfMDczJDExIiwiYXJnXzA3OSIsImJuZHNfMDczJDEyIiwiYXJnXzA3NyIsImJuZHNfMDczJDEzIiwiYXJnXzA3NSIsImJuZHNfMDczJDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwiYV8xMDYiLCJiXzEwNyIsIm4kMTQiLCJhXzEwOCIsImJfMTA5IiwiaHN2JDE1Iiwic2V4cF8xMTEiLCJmaWVsZF9zZXhwc18xMTIiLCJtaW5vcl93b3Jkc18xMTMiLCJwcm9tb3RlZF93b3Jkc18xMTUiLCJtYWpvcl93b3Jkc18xMTciLCJtaW5vcl9jb2xsZWN0aW9uc18xMTkiLCJtYWpvcl9jb2xsZWN0aW9uc18xMjEiLCJoZWFwX3dvcmRzXzEyMyIsImhlYXBfY2h1bmtzXzEyNSIsImxpdmVfd29yZHNfMTI3IiwibGl2ZV9ibG9ja3NfMTI5IiwiZnJlZV93b3Jkc18xMzEiLCJmcmVlX2Jsb2Nrc18xMzMiLCJsYXJnZXN0X2ZyZWVfMTM1IiwiZnJhZ21lbnRzXzEzNyIsImNvbXBhY3Rpb25zXzEzOSIsInRvcF9oZWFwX3dvcmRzXzE0MSIsInN0YWNrX3NpemVfMTQzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzE0NSIsImR1cGxpY2F0ZXNfMTQ3IiwiZXh0cmFfMTQ4IiwiaXRlcl8xNzAiLCJzZXhwXzExMSQwIiwiZmllbGRfc2V4cHNfMTUxIiwiZmllbGRfbmFtZV8xNDkiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTUwJDE3IiwiZmllbGRfc2V4cF8xNTAiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTUwJDAiLCJmdmFsdWVfMTU0IiwiZmllbGRfc2V4cF8xNTAkMSIsImZ2YWx1ZV8xNTMiLCJmaWVsZF9zZXhwXzE1MCQyIiwiZmllbGRfc2V4cF8xNTAkMyIsImZpZWxkX3NleHBfMTUwJDQiLCJmdmFsdWVfMTY1IiwiZmllbGRfc2V4cF8xNTAkNSIsImZ2YWx1ZV8xNjYiLCJmaWVsZF9zZXhwXzE1MCQ2IiwiZnZhbHVlXzE2NCIsImZpZWxkX3NleHBfMTUwJDciLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTAkOCIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1MCQ5IiwiZnZhbHVlXzE1NyIsImZpZWxkX3NleHBfMTUwJDEwIiwiZnZhbHVlXzE2MyIsImZpZWxkX3NleHBfMTUwJDExIiwiZnZhbHVlXzE2MiIsImZpZWxkX3NleHBfMTUwJDEyIiwiZnZhbHVlXzE1OSIsImZpZWxkX3NleHBfMTUwJDEzIiwiZnZhbHVlXzE1OCIsImZpZWxkX3NleHBfMTUwJDE0IiwiZnZhbHVlXzE1NiIsImZpZWxkX3NleHBfMTUwJDE1IiwiZnZhbHVlXzE1MiIsImZpZWxkX3NleHBfMTUwJDE2IiwiZnZhbHVlXzE1NSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNDYiLCJzdGFja19zaXplXzE0NCIsInRvcF9oZWFwX3dvcmRzXzE0MiIsImNvbXBhY3Rpb25zXzE0MCIsImZyYWdtZW50c18xMzgiLCJsYXJnZXN0X2ZyZWVfMTM2IiwiZnJlZV9ibG9ja3NfMTM0IiwiZnJlZV93b3Jkc18xMzIiLCJsaXZlX2Jsb2Nrc18xMzAiLCJsaXZlX3dvcmRzXzEyOCIsImhlYXBfY2h1bmtzXzEyNiIsImhlYXBfd29yZHNfMTI0IiwibWFqb3JfY29sbGVjdGlvbnNfMTIyIiwibWlub3JfY29sbGVjdGlvbnNfMTIwIiwibWFqb3Jfd29yZHNfMTE4IiwicHJvbW90ZWRfd29yZHNfMTE2IiwibWlub3Jfd29yZHNfMTE0IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzIwNiIsInN0YWNrX3NpemVfMjA0IiwidG9wX2hlYXBfd29yZHNfMjAyIiwiY29tcGFjdGlvbnNfMjAwIiwiZnJhZ21lbnRzXzE5OCIsImxhcmdlc3RfZnJlZV8xOTYiLCJmcmVlX2Jsb2Nrc18xOTQiLCJmcmVlX3dvcmRzXzE5MiIsImxpdmVfYmxvY2tzXzE5MCIsImxpdmVfd29yZHNfMTg4IiwiaGVhcF9jaHVua3NfMTg2IiwiaGVhcF93b3Jkc18xODQiLCJtYWpvcl9jb2xsZWN0aW9uc18xODIiLCJtaW5vcl9jb2xsZWN0aW9uc18xODAiLCJtYWpvcl93b3Jkc18xNzgiLCJwcm9tb3RlZF93b3Jkc18xNzYiLCJtaW5vcl93b3Jkc18xNzQiLCJhcmdfMjA3IiwiYm5kc18xNzMiLCJhcmdfMjA1IiwiYm5kc18xNzMkMCIsImFyZ18yMDMiLCJibmRzXzE3MyQxIiwiYXJnXzIwMSIsImJuZHNfMTczJDIiLCJhcmdfMTk5IiwiYm5kc18xNzMkMyIsImFyZ18xOTciLCJibmRzXzE3MyQ0IiwiYXJnXzE5NSIsImJuZHNfMTczJDUiLCJhcmdfMTkzIiwiYm5kc18xNzMkNiIsImFyZ18xOTEiLCJibmRzXzE3MyQ3IiwiYXJnXzE4OSIsImJuZHNfMTczJDgiLCJhcmdfMTg3IiwiYm5kc18xNzMkOSIsImJuZHNfMTczJDEwIiwiYm5kc18xNzMkMTEiLCJibmRzXzE3MyQxMiIsImFyZ18xNzkiLCJibmRzXzE3MyQxMyIsImJuZHNfMTczJDE0IiwiYXJnXzE3NSIsImJuZHNfMTczJDE1Iiwidl9taW5vcl9oZWFwX3NpemUiLCJ2X21ham9yX2hlYXBfaW5jcmVtZW50Iiwidl9zcGFjZV9vdmVyaGVhZCIsInZfdmVyYm9zZSIsInZfbWF4X292ZXJoZWFkIiwidl9zdGFja19saW1pdCIsInZfYWxsb2NhdGlvbl9wb2xpY3kiLCJ2X3dpbmRvd19zaXplIiwidl9jdXN0b21fbWFqb3JfcmF0aW8iLCJ2X2N1c3RvbV9taW5vcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX21heF9zaXplIiwiYV8yMDgiLCJiXzIwOSIsImFfMjEwIiwiYl8yMTEiLCJzZXhwXzIxMyIsImZpZWxkX3NleHBzXzIxNCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTUiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yMTciLCJzcGFjZV9vdmVyaGVhZF8yMTkiLCJ2ZXJib3NlXzIyMSIsIm1heF9vdmVyaGVhZF8yMjMiLCJzdGFja19saW1pdF8yMjUiLCJhbGxvY2F0aW9uX3BvbGljeV8yMjciLCJ3aW5kb3dfc2l6ZV8yMjkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMjMxIiwiY3VzdG9tX21pbm9yX3JhdGlvXzIzMyIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzUiLCJkdXBsaWNhdGVzXzIzNyIsImV4dHJhXzIzOCIsIml0ZXJfMjU0Iiwic2V4cF8yMTMkMCIsImZpZWxkX3NleHBzXzI0MSIsImZpZWxkX25hbWVfMjM5IiwidGFpbF8yNTUiLCJmaWVsZF9zZXhwXzI0MCQxMSIsImZpZWxkX3NleHBfMjQwIiwieF8yNTYiLCJmaWVsZF9zZXhwXzI0MCQwIiwiZnZhbHVlXzI0NSIsImZpZWxkX3NleHBfMjQwJDEiLCJmdmFsdWVfMjQ5IiwiZmllbGRfc2V4cF8yNDAkMiIsImZ2YWx1ZV8yNDciLCJmaWVsZF9zZXhwXzI0MCQzIiwiZnZhbHVlXzI1MCIsImZpZWxkX3NleHBfMjQwJDQiLCJmdmFsdWVfMjUyIiwiZmllbGRfc2V4cF8yNDAkNSIsImZ2YWx1ZV8yNDgiLCJmaWVsZF9zZXhwXzI0MCQ2IiwiZnZhbHVlXzI1MSIsImZpZWxkX3NleHBfMjQwJDciLCJmdmFsdWVfMjQzIiwiZmllbGRfc2V4cF8yNDAkOCIsImZ2YWx1ZV8yNDIiLCJmaWVsZF9zZXhwXzI0MCQ5IiwiZnZhbHVlXzI0NCIsImZpZWxkX3NleHBfMjQwJDEwIiwiZnZhbHVlXzI0NiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzYiLCJjdXN0b21fbWlub3JfcmF0aW9fMjM0IiwiY3VzdG9tX21ham9yX3JhdGlvXzIzMiIsIndpbmRvd19zaXplXzIzMCIsImFsbG9jYXRpb25fcG9saWN5XzIyOCIsInN0YWNrX2xpbWl0XzIyNiIsIm1heF9vdmVyaGVhZF8yMjQiLCJ2ZXJib3NlXzIyMiIsInNwYWNlX292ZXJoZWFkXzIyMCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzIxOCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTYiLCJjdXN0b21fbWlub3JfbWF4X3NpemVfMjc4IiwiY3VzdG9tX21pbm9yX3JhdGlvXzI3NiIsImN1c3RvbV9tYWpvcl9yYXRpb18yNzQiLCJ3aW5kb3dfc2l6ZV8yNzIiLCJhbGxvY2F0aW9uX3BvbGljeV8yNzAiLCJzdGFja19saW1pdF8yNjgiLCJtYXhfb3ZlcmhlYWRfMjY2IiwidmVyYm9zZV8yNjQiLCJzcGFjZV9vdmVyaGVhZF8yNjIiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yNjAiLCJtaW5vcl9oZWFwX3NpemVfMjU4IiwiYm5kc18yNTciLCJhcmdfMjc3IiwiYm5kc18yNTckMCIsImFyZ18yNzUiLCJibmRzXzI1NyQxIiwiYXJnXzI3MyIsImJuZHNfMjU3JDIiLCJhcmdfMjcxIiwiYm5kc18yNTckMyIsImFyZ18yNjkiLCJibmRzXzI1NyQ0IiwiYXJnXzI2NyIsImJuZHNfMjU3JDUiLCJhcmdfMjY1IiwiYm5kc18yNTckNiIsImFyZ18yNjMiLCJibmRzXzI1NyQ3IiwiYXJnXzI2MSIsImJuZHNfMjU3JDgiLCJhcmdfMjU5IiwiYm5kc18yNTckOSIsImFfMjgwIiwiYl8yODEiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfMzE1Iiwic3RhY2tfc2l6ZV8zMTMiLCJ0b3BfaGVhcF93b3Jkc18zMTEiLCJjb21wYWN0aW9uc18zMDkiLCJmcmFnbWVudHNfMzA3IiwibGFyZ2VzdF9mcmVlXzMwNSIsImZyZWVfYmxvY2tzXzMwMyIsImZyZWVfd29yZHNfMzAxIiwibGl2ZV9ibG9ja3NfMjk5IiwibGl2ZV93b3Jkc18yOTciLCJoZWFwX2NodW5rc18yOTUiLCJoZWFwX3dvcmRzXzI5MyIsIm1ham9yX2NvbGxlY3Rpb25zXzI5MSIsIm1pbm9yX2NvbGxlY3Rpb25zXzI4OSIsIm1ham9yX3dvcmRzXzI4NyIsInByb21vdGVkX3dvcmRzXzI4NSIsIm1pbm9yX3dvcmRzXzI4MyIsImFyZ18zMTYiLCJibmRzXzI4MiIsImFyZ18zMTQiLCJibmRzXzI4MiQwIiwiYXJnXzMxMiIsImJuZHNfMjgyJDEiLCJhcmdfMzEwIiwiYm5kc18yODIkMiIsImFyZ18zMDgiLCJibmRzXzI4MiQzIiwiYXJnXzMwNiIsImJuZHNfMjgyJDQiLCJhcmdfMzA0IiwiYm5kc18yODIkNSIsImFyZ18zMDIiLCJibmRzXzI4MiQ2IiwiYXJnXzMwMCIsImJuZHNfMjgyJDciLCJhcmdfMjk4IiwiYm5kc18yODIkOCIsImFyZ18yOTYiLCJibmRzXzI4MiQ5IiwiYXJnXzI5NCIsImJuZHNfMjgyJDEwIiwiYXJnXzI5MiIsImJuZHNfMjgyJDExIiwiYXJnXzI5MCIsImJuZHNfMjgyJDEyIiwiYXJnXzI4OCIsImJuZHNfMjgyJDEzIiwiYXJnXzI4NiIsImJuZHNfMjgyJDE0IiwiYXJnXzI4NCIsImJuZHNfMjgyJDE1IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwic3RhY2tfc2l6ZSIsInRvcF9oZWFwX3dvcmRzIiwiY29tcGFjdGlvbnMiLCJmcmFnbWVudHMiLCJsYXJnZXN0X2ZyZWUiLCJmcmVlX2Jsb2NrcyIsImZyZWVfd29yZHMiLCJsaXZlX2Jsb2NrcyIsImxpdmVfd29yZHMiLCJoZWFwX2NodW5rcyIsImhlYXBfd29yZHMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwibWFqb3Jfd29yZHMiLCJwcm9tb3RlZF93b3JkcyIsIm1pbm9yX3dvcmRzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zJDAiLCJzdGFja19zaXplJDAiLCJ0b3BfaGVhcF93b3JkcyQwIiwiY29tcGFjdGlvbnMkMCIsImZyYWdtZW50cyQwIiwibGFyZ2VzdF9mcmVlJDAiLCJmcmVlX2Jsb2NrcyQwIiwiZnJlZV93b3JkcyQwIiwibGl2ZV9ibG9ja3MkMCIsImxpdmVfd29yZHMkMCIsImhlYXBfY2h1bmtzJDAiLCJoZWFwX3dvcmRzJDAiLCJtYWpvcl9jb2xsZWN0aW9ucyQwIiwibWlub3JfY29sbGVjdGlvbnMkMCIsIm1ham9yX3dvcmRzJDAiLCJwcm9tb3RlZF93b3JkcyQwIiwibWlub3Jfd29yZHMkMCIsIm1pbm9yX3dvcmRzX2Z1biIsInByb21vdGVkX3dvcmRzX2Z1biIsIm1ham9yX3dvcmRzX2Z1biIsIm1pbm9yX2NvbGxlY3Rpb25zX2Z1biIsIm1ham9yX2NvbGxlY3Rpb25zX2Z1biIsImhlYXBfd29yZHNfZnVuIiwiaGVhcF9jaHVua3NfZnVuIiwibGl2ZV93b3Jkc19mdW4iLCJsaXZlX2Jsb2Nrc19mdW4iLCJmcmVlX3dvcmRzX2Z1biIsImZyZWVfYmxvY2tzX2Z1biIsImxhcmdlc3RfZnJlZV9mdW4iLCJmcmFnbWVudHNfZnVuIiwiY29tcGFjdGlvbnNfZnVuIiwidG9wX2hlYXBfd29yZHNfZnVuIiwic3RhY2tfc2l6ZV9mdW4iLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZnVuIiwibWlub3Jfd29yZHNfZ2VuIiwicHJvbW90ZWRfd29yZHNfZ2VuIiwibWFqb3Jfd29yZHNfZ2VuIiwibWlub3JfY29sbGVjdGlvbnNfZ2VuIiwibWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiaGVhcF93b3Jkc19nZW4iLCJoZWFwX2NodW5rc19nZW4iLCJsaXZlX3dvcmRzX2dlbiIsImxpdmVfYmxvY2tzX2dlbiIsImZyZWVfd29yZHNfZ2VuIiwiZnJlZV9ibG9ja3NfZ2VuIiwibGFyZ2VzdF9mcmVlX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwiZnJhZ21lbnRzX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiY29tcGFjdGlvbnNfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJ0b3BfaGVhcF93b3Jkc19nZW4iLCJjb21waWxlX2FjYyQxNSIsInN0YWNrX3NpemVfZ2VuIiwiY29tcGlsZV9hY2MkMTYiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiYV8zMTciLCJiXzMxOCIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8zNDAiLCJjdXN0b21fbWlub3JfcmF0aW9fMzM4IiwiY3VzdG9tX21ham9yX3JhdGlvXzMzNiIsIndpbmRvd19zaXplXzMzNCIsImFsbG9jYXRpb25fcG9saWN5XzMzMiIsInN0YWNrX2xpbWl0XzMzMCIsIm1heF9vdmVyaGVhZF8zMjgiLCJ2ZXJib3NlXzMyNiIsInNwYWNlX292ZXJoZWFkXzMyNCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzMyMiIsIm1pbm9yX2hlYXBfc2l6ZV8zMjAiLCJhcmdfMzQxIiwiYm5kc18zMTkiLCJhcmdfMzM5IiwiYm5kc18zMTkkMCIsImFyZ18zMzciLCJibmRzXzMxOSQxIiwiYm5kc18zMTkkMiIsImJuZHNfMzE5JDMiLCJibmRzXzMxOSQ0IiwiYm5kc18zMTkkNSIsImFyZ18zMjciLCJibmRzXzMxOSQ2IiwiYm5kc18zMTkkNyIsImFyZ18zMjMiLCJibmRzXzMxOSQ4IiwiYXJnXzMyMSIsImJuZHNfMzE5JDkiLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJzcGFjZV9vdmVyaGVhZCIsIm1ham9yX2hlYXBfaW5jcmVtZW50IiwibWlub3JfaGVhcF9zaXplIiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWlub3JfaGVhcF9zaXplX2Z1biIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2Z1biIsInNwYWNlX292ZXJoZWFkX2Z1biIsInZlcmJvc2VfZnVuIiwibWF4X292ZXJoZWFkX2Z1biIsInN0YWNrX2xpbWl0X2Z1biIsImFsbG9jYXRpb25fcG9saWN5X2Z1biIsIndpbmRvd19zaXplX2Z1biIsImN1c3RvbV9tYWpvcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZnVuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2Z1biIsIm1pbm9yX2hlYXBfc2l6ZV9nZW4iLCJtYWpvcl9oZWFwX2luY3JlbWVudF9nZW4iLCJzcGFjZV9vdmVyaGVhZF9nZW4iLCJ2ZXJib3NlX2dlbiIsIm1heF9vdmVyaGVhZF9nZW4iLCJzdGFja19saW1pdF9nZW4iLCJhbGxvY2F0aW9uX3BvbGljeV9nZW4iLCJ3aW5kb3dfc2l6ZV9nZW4iLCJjdXN0b21fbWFqb3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX3JhdGlvX2dlbiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV9nZW4iLCJlcXVhbCQ1IiwidHVuZSIsImxvZ2dlciIsIm9sZF9jb250cm9sX3BhcmFtcyIsImZpZWxkIiwib2xkX3ZhbHVlIiwibmV3X2NvbnRyb2xfcGFyYW1zIiwiZGlzYWJsZV9jb21wYWN0aW9uIiwicG9saWN5Iiwia2VlcF9hbGl2ZSIsIm8iLCJwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWwiLCJtZWFzdXJlX2ludGVybmFsIiwib25fcmVzdWx0IiwibWlub3Jfd29yZHNfYmVmb3JlIiwibWFqb3Jfd29yZHNfYmVmb3JlIiwibWlub3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hZnRlciIsIm1ham9yX3dvcmRzX2FsbG9jYXRlZCIsIm1pbm9yX3dvcmRzX2FsbG9jYXRlZCIsImlzX3plcm9fYWxsb2MiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMzQ5IiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzM0NyIsImFyZ18zNTAiLCJibmRzXzM0NiIsImFyZ18zNDgiLCJibmRzXzM0NiQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzM1NiIsImlzX21ham9yXzM1NCIsInNpemVfaW5fd29yZHNfMzUyIiwiYXJnXzM1NyIsImJuZHNfMzUxIiwiYXJnXzM1NSIsImJuZHNfMzUxJDAiLCJhcmdfMzUzIiwiYm5kc18zNTEkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImJhY2t0cmFjZSIsImJhY2t0cmFjZSQwIiwiaW5mbyQwIiwidHJhY2tlciIsImFkZF9maW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmaW5hbGl6ZV9yZWxlYXNlIiwidG9fc3RhYmxlX2Zvcm1hdCIsIm9mX3N0YWJsZV9mb3JtYXQiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwiY2FuX3NlbmRfdG8iLCJvZl9zeXN0ZW1faW50Iiwic2VuZCIsInNlbmRfZXhuIiwic2VuZF9pIiwic2V4cF9vZl9waWRfc3BlYyIsInNpZ3BlbmRpbmciLCJzaWdwcm9jbWFzayIsInNpZ3N1c3BlbmQiLCJ0b19zeXN0ZW1faW50Iiwic2lnbmFsIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJwcmludCIsImNhdGNoJDAiLCJwcmludF9iYWNrdHJhY2UiLCJnZXRfYmFja3RyYWNlIiwicmVjb3JkX2JhY2t0cmFjZSIsImJhY2t0cmFjZV9zdGF0dXMiLCJjYXB0dXJlIiwiZ2VuZXJhbCIsImhhc2hhYmxlJDEiLCJjYWNoZV9zaXplX2JvdW5kIiwibWF4X2NhY2hlX3NpemUiLCJjYWNoZSQwIiwiY2FjaGUiLCJyZWFsbHlfY2FsbF9mIiwiZl9vbmVzdGVwIiwibWVtb2l6ZWQiLCJvZl9jb21wYXJhYmxlIiwidiQxIiwiaW5pdGlhbF9sZW5ndGgiLCJuZXZlcl9zaHJpbmsiLCJuZXZlcl9zaHJpbmskMCIsImluaXRpYWxfbGVuZ3RoJDAiLCJhcnJfbGVuZ3RoIiwiYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfIiwiYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lIiwiYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtIiwiYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wIiwiY2hlY2tlZCIsImFwcGFyZW50X2Zyb250X2luZGV4IiwiYXBwYXJlbnRfYmFja19pbmRleCIsImFwcGFyZW50X2Zyb250IiwiYXBwYXJlbnRfYmFjayIsImFjdHVhbF9mcm9udCIsImFjdHVhbF9iYWNrIiwiYXBwYXJlbnRfaSIsInJlYWxfaSIsInN0b3BfcG9zIiwiYXBwYXJlbnRfaSQwIiwicmVhbF9pJDAiLCJyZWFsX2kkMSIsImFwcGFyZW50X2kkMSIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiaXRlcmlfaW50ZXJuYWwiLCJuZXdfYXJyIiwib2xkX2FyciIsImJyZWFrX3BvcyIsIm1heWJlX3Nocmlua191bmRlcmx5aW5nIiwiZ3Jvd191bmRlcmx5aW5nIiwicGVla19mcm9udF9ub25lbXB0eSIsInBlZWtfYmFja19ub25lbXB0eSIsImRlcXVldWVfZnJvbnRfbm9uZW1wdHkiLCJkZXF1ZXVlX2JhY2tfbm9uZW1wdHkiLCJkcm9wX2dlbiIsImFzc2VydF9ub3RfZW1wdHkiLCJ0cnVlX2luZGV4X2V4biIsImlfZnJvbV96ZXJvIiwidHJ1ZV9pIiwiZ2V0X29wdCIsImJhY2tfaW5kZXhfZXhuIiwiZnJvbnRfaW5kZXhfZXhuIiwiZ2V0JDAiLCJ1bnRyYW5zbGF0ZWRfaSIsImVwcmludCIsImVwcmludHMiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwiYXJnMV8wMDYiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsImNvbmNhdF9xdW90ZWQiLCJzcGxpdF9jb21tYW5kIiwiYWRkX3VuaXQiLCJ1bnRpbF9lbXB0eSIsImJzdHJfMDAyIiwicG9zXzAwNCIsImxlbl8wMDYiLCJpbml0XzAwOCIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwicmVzaXplIiwibWluX2xlbiIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaW50ZXJuYWwiLCJic3RyIiwiY29udGVudHNfYnl0ZXMiLCJiaWdfY29udGVudHMiLCJ2b2xhdGlsZV9jb250ZW50cyIsImFkZF9jaGFyIiwicmVzZXQiLCJhZGRfc3Vic3RyaW5nIiwibmV3X3BvcyIsImFkZF9zdWJieXRlcyIsImFkZF9iaWdzdHJpbmciLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2J1ZmZlciIsImJ1Zl9kc3QiLCJidWZfc3JjIiwiYWRkX2Jpbl9wcm90IiwiYWRkX3N1YnN0aXR1dGUiLCJsaW0kMSIsInByZXZpb3VzIiwiaSQ0IiwicHJldmlvdXMkMCIsImkkNSIsIm9wZW5pbmciLCJsaW0kMCIsImkkMiIsImkkMyIsIm5ld19zdGFydCIsImskMiIsImNsb3NpbmciLCJsaW0iLCJpJDEiLCJuZXh0X2kiLCJpJDYiLCJpJDciLCJpJDgiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwidl9pbmRleCIsInZfbWluX2luZGV4Iiwidl9tYXhfaW5kZXgiLCJhcmc1XzAwOSIsImFyZzRfMDA4IiwiYXJnM18wMDciLCJhcmcyXzAwNiIsInJlczJfMDEyIiwicmVzM18wMTMiLCJyZXM0XzAxNCIsInJlczVfMDE1IiwiYXJnNV8wMjMiLCJhcmc0XzAyMiIsImFyZzNfMDIxIiwiYXJnMl8wMjAiLCJhcmcxXzAxOSIsImFyZzBfMDE4IiwicmVzNV8wMjkiLCJsYWJlbCIsImNyZWF0ZV9hbGwiLCJtYXhfaW5kZXgiLCJtaW5faW5kZXgiLCJkb2VzX3JhaXNlIiwic3ltYm9sJDE4IiwiaGFuZGxlcnMiLCJrZXkiLCJpbnAiLCJjYWxsYmFjayIsInZhbHVlIiwiaW5qZWN0IiwidiIsImNhbGxlZCIsImNhbGxiYWNrJDAiLCJhIiwiaGFuZGxlIiwicyIsInByaW50X3MiLCJOZXZlciIsInJldHVybiQwIiwiYmluZCIsInQiLCJmIiwib2ZfZnVuIiwibGF6eSIsIm1hcCIsImV2YWwkMCIsInQkMCIsInQkMSIsImwiLCJmJDAiLCJ0JDIiLCJjYWxsYmFjayQzIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDQiLCJjYWxsYmFjayQyIiwiaGFuZGxlJDAiLCJoYW5kbGUkMSIsIm9uX3Jlc3BvbnNlIiwib2Zfc3luY19mdW4iLCJtYWtlIiwicmVxdWVzdCIsInJlc3BvbmRfdG8iLCJyZXNwb25zZSIsIm1ha2UkMCIsImV2YWx1YXRvciIsImNyZWF0ZSIsInVwb24iLCJoYW5kbGVyIiwieCIsImZpbGxfaWZfZW1wdHkiLCJwZWVrIiwiaGFuZGxlJDIiLCJvZl9zdmFyX2Z1biIsImNyZWF0ZSQwIiwicXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIiwicXVlcnkiLCJtYXliZV9yZXNwb25kIiwicmVzcCIsIm9mX3F1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIiLCJxcnQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzA1MiIsImVycm9yX3NvdXJjZV8wODkiLCJlcnJvcl9zb3VyY2VfMTE0IiwiZXJyb3Jfc291cmNlXzEyOCIsImVycm9yX3NvdXJjZV8xNjEiLCJlcnJvcl9zb3VyY2VfMTkzIiwiZXJyb3Jfc291cmNlXzI0MSIsImVycm9yX3NvdXJjZV8yNDMiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwic2V4cF8wMzMiLCJmaWVsZF9zZXhwc18wMzQiLCJyXzAzNSIsImdfMDM3IiwiYl8wMzkiLCJhXzA0MSIsImR1cGxpY2F0ZXNfMDQzIiwiZXh0cmFfMDQ0Iiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0NyIsImZpZWxkX25hbWVfMDQ1IiwidGFpbF8wNTQiLCJmaWVsZF9zZXhwXzA0NiQ0IiwiZmllbGRfc2V4cF8wNDYiLCJ4XzA1NSIsImZpZWxkX3NleHBfMDQ2JDAiLCJmdmFsdWVfMDUxIiwiZmllbGRfc2V4cF8wNDYkMSIsImZ2YWx1ZV8wNTAiLCJmaWVsZF9zZXhwXzA0NiQyIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDQ4IiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJzZXhwX29mX3QkMCIsImFfMDYzIiwiYl8wNjEiLCJnXzA1OSIsInJfMDU3IiwiYXJnXzA2NCIsImJuZHNfMDU2IiwiYXJnXzA2MiIsImJuZHNfMDU2JDAiLCJhcmdfMDYwIiwiYm5kc18wNTYkMSIsImFyZ18wNTgiLCJibmRzXzA1NiQyIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2NCIsInYzIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QkMCIsInBvcyQxIiwicG9zJDIiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsInZfciIsInZfZyIsInZfYiIsInZfYSIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDY1IiwiYl8wNjYiLCJuJDAiLCJuJDEiLCJhXzA2NyIsImJfMDY4IiwiZyIsImEiLCJ0X29mX3NleHAkMSIsInNleHBfMDcwIiwiZmllbGRfc2V4cHNfMDcxIiwiaF8wNzIiLCJzXzA3NCIsImxfMDc2IiwiYV8wNzgiLCJkdXBsaWNhdGVzXzA4MCIsImV4dHJhXzA4MSIsInNleHBfMDcwJDAiLCJmaWVsZF9zZXhwc18wODQiLCJmaWVsZF9uYW1lXzA4MiIsInRhaWxfMDkxIiwiZmllbGRfc2V4cF8wODMkNCIsImZpZWxkX3NleHBfMDgzIiwieF8wOTIiLCJmaWVsZF9zZXhwXzA4MyQwIiwiZnZhbHVlXzA4NyIsImZpZWxkX3NleHBfMDgzJDEiLCJmdmFsdWVfMDg2IiwiZmllbGRfc2V4cF8wODMkMiIsImZ2YWx1ZV8wODgiLCJmaWVsZF9zZXhwXzA4MyQzIiwiZnZhbHVlXzA4NSIsImFfMDc5IiwibF8wNzciLCJzXzA3NSIsImhfMDczIiwic2V4cF9vZl90JDEiLCJhXzEwMCIsImxfMDk4Iiwic18wOTYiLCJoXzA5NCIsImFyZ18xMDEiLCJibmRzXzA5MyIsImFyZ18wOTkiLCJibmRzXzA5MyQwIiwiYXJnXzA5NyIsImJuZHNfMDkzJDEiLCJhcmdfMDk1IiwiYm5kc18wOTMkMiIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl93cml0ZXJfdCQxIiwiYmluX3JlYWRfdCQzIiwiYmluX3JlYWRfdCQ0Iiwidl9oIiwidl9zIiwidl9sIiwiYmluX3JlYWRlcl90JDEiLCJiaW5fdCQxIiwiY29tcGFyZSQxIiwiYV8xMDIiLCJiXzEwMyIsImFfMTA0IiwiYl8xMDUiLCJjcmVhdGUkMCIsImgiLCJsIiwidF9vZl9zZXhwJDIiLCJzZXhwXzEwOSIsImF0b21fMTA3Iiwic2V4cF9hcmdzXzExMCIsImF0b21fMTA3JDAiLCJhcmcwXzEyMiIsInJlczBfMTIzIiwiYXJnMF8xMTYiLCJyZXMwXzExNyIsImFyZzBfMTE5IiwicmVzMF8xMjAiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYXJnMF8xMjUiLCJyZXMwXzEyNiIsInRfb2Zfc2V4cCQzIiwic2V4cF8xMjciLCJzZXhwX29mX3QkMiIsInZfMTM0Iiwidl8xMzMiLCJ2XzEyOSIsInZfMTMxIiwidl8xMzAiLCJ2XzEzMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMTM1IiwiYl8xMzYiLCJyaWdodF8xNDYiLCJsZWZ0XzE0NSIsInJpZ2h0XzEzOCIsImxlZnRfMTM3IiwicmlnaHRfMTQyIiwibGVmdF8xNDEiLCJyaWdodF8xNDAiLCJsZWZ0XzEzOSIsInJpZ2h0XzE0NCIsImxlZnRfMTQzIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTU2IiwiYXRvbV8xNTQiLCJzZXhwX2FyZ3NfMTU3IiwiYXRvbV8xNTQkMCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJhcmcwXzE2NiIsInJlczBfMTY3IiwiYXJnMF8xOTAiLCJyZXMwXzE5MSIsImFyZzBfMTg0IiwicmVzMF8xODUiLCJhcmcwXzE2MyIsInJlczBfMTY0IiwiYXJnMF8xNTkiLCJyZXMwXzE2MCIsImFyZzBfMTg3IiwicmVzMF8xODgiLCJhcmcwXzE4MSIsInJlczBfMTgyIiwiYXJnMF8xNzgiLCJyZXMwXzE3OSIsImFyZzBfMTc1IiwicmVzMF8xNzYiLCJhcmcwXzE3MiIsInJlczBfMTczIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE5MiIsInNleHBfb2ZfdCQzIiwidl8yMDUiLCJ2XzIwMyIsInZfMjAxIiwidl8xOTgiLCJ2XzE5NiIsInZfMTk0Iiwidl8yMDQiLCJ2XzIwMiIsInZfMjAwIiwidl8xOTciLCJ2XzE5NSIsInZfMTk5IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzIwNiIsImJfMjA3IiwicmlnaHRfMjE3IiwibGVmdF8yMTYiLCJyaWdodF8yMTMiLCJsZWZ0XzIxMiIsInJpZ2h0XzIwOSIsImxlZnRfMjA4IiwicmlnaHRfMjI5IiwibGVmdF8yMjgiLCJyaWdodF8yMjciLCJsZWZ0XzIyNiIsInJpZ2h0XzIyMyIsImxlZnRfMjIyIiwicmlnaHRfMjI1IiwibGVmdF8yMjQiLCJyaWdodF8yMjEiLCJsZWZ0XzIyMCIsInJpZ2h0XzIxNSIsImxlZnRfMjE0IiwicmlnaHRfMjExIiwibGVmdF8yMTAiLCJyaWdodF8yMTkiLCJsZWZ0XzIxOCIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMjMyIiwiYl8yMzMiLCJ0X29mX3NleHAkNiIsInNleHBfMjM5IiwiYXRvbV8yMzciLCJhdG9tXzIzNyQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzI0MiIsInNleHBfb2ZfdCQ0Iiwidl8yNDQiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiaXNfZW1wdHkiLCJlbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsIndpZHRoIiwibWluX3dpZHRoIiwibWF4X3dpZHRoIiwiaGVpZ2h0IiwibWluX2hlaWdodCIsIm1heF9oZWlnaHQiLCJwYWRkaW5nX3RvcCIsInBhZGRpbmdfYm90dG9tIiwicGFkZGluZ19sZWZ0IiwicGFkZGluZ19yaWdodCIsInBhZGRpbmciLCJ1bmlmb3JtX3BhZGRpbmciLCJtYXJnaW5fdG9wIiwibWFyZ2luX2JvdHRvbSIsIm1hcmdpbl9sZWZ0IiwibWFyZ2luX3JpZ2h0IiwibWFyZ2luIiwidW5pZm9ybV9tYXJnaW4iLCJjb25jYXQydiIsImNvbmNhdDN2IiwiYm9yZGVyX3ZhbHVlIiwic3R5bGUkMCIsIndpZHRoJDAiLCJjb2xvciQwIiwiY3JlYXRlX2JvcmRlciIsInNpZGUiLCJib3JkZXJfdG9wIiwiYm9yZGVyX2JvdHRvbSIsImJvcmRlcl9sZWZ0IiwiYm9yZGVyX3JpZ2h0IiwiYm9yZGVyIiwib3V0bGluZSIsImJvcmRlcl9jb2xsYXBzZSIsImJvcmRlcl9zcGFjaW5nIiwiYm9yZGVyX3JhZGl1cyIsInRleHRfZGVjb3JhdGlvbiIsImxpbmUiLCJsaW5lJDAiLCJpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIiwiZmxleF9jb250YWluZXIiLCJvcHQiLCJhbGlnbl9pdGVtcyIsImp1c3RpZnlfY29udGVudCIsInN0aCIsImlubGluZSIsInN0aCQwIiwic3RoJDEiLCJ3cmFwIiwiZGlyZWN0aW9uJDAiLCJ3cmFwJDAiLCJhbGlnbl9pdGVtcyQwIiwianVzdGlmeV9jb250ZW50JDAiLCJmbGV4X2l0ZW0iLCJvcmRlciIsImdyb3ciLCJiYXNpcyIsInNocmluayIsIm9yZGVyJDAiLCJiYXNpcyQwIiwiZmxleCIsImFsaWduX3NlbGYiLCJyZXNpemUiLCJ2YWx1ZSQwIiwiYW5pbWF0aW9uIiwiZHVyYXRpb24iLCJkZWxheSIsImZpbGxfbW9kZSIsIml0ZXJfY291bnQiLCJ0aW1pbmdfZnVuY3Rpb24iLCJzcGFuX3RvX3N0cmluZyIsImQiLCJmaWxsX21vZGUkMCIsInVzZXJfc2VsZWN0IiwiY3NzIiwiczIiLCJ4IiwidHlwZV9vZiIsIngiLCJpbnN0YW5jZV9vZiIsImNvbnN0ciIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwiZ2xvYmFsIiwiYXJyYXlfbWFrZSIsIm4iLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9vZl9qc19mcm9tIiwiZiIsIm9ianMiLCJzdGFydCIsImkiLCJhcnJheV9vZl9qcyIsImFycmF5X3RvX2pzIiwiYXJyIiwiYSIsImxpc3Rfb2ZfanNfZnJvbSIsImxpc3Rfb2ZfanMiLCJsaXN0X3RvX2pzIiwibCIsIm9wdGlvbl9vZl9qcyIsIm9wdGlvbl90b19qcyIsInVuaXRfdG9fanMiLCJ1bml0X29mX2pzIiwic2VsZl8xIiwiaGFzX3Byb3BlcnR5IiwibyIsImVtcHR5X29iaiIsIml0ZXJfcHJvcGVydGllcyIsImFwcGx5X2FyciIsImNhbGxfYXJyIiwicyIsImlzX251bGwiLCJvYmpfdHlwZSIsInRfdG9fanMiLCJ0X29mX2pzIiwidF90b19qcyQwIiwidF9vZl9qcyQwIiwidF90b19qcyQxIiwidF9vZl9qcyQxIiwidF90b19qcyQyIiwidF9vZl9qcyQyIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInRvX2pzX3N0cmluZyIsInZhbHVlIiwidG9fanNfc3RyaW5nX2ZpeGVkIiwiZGlnaXRzIiwidG9fanNfc3RyaW5nX3ByZWNpc2lvbiIsInRvX2pzX3N0cmluZ19leHBvbmVudGlhbCIsInRvX3N0cmluZyIsInRvX3N0cmluZ19maXhlZCIsInRvX3N0cmluZ19wcmVjaXNpb24iLCJ0b19zdHJpbmdfZXhwb25lbnRpYWwiLCJwcmludCIsImYiLCJ2aXNpYmlsaXR5X2hhbmRsZXJzIiwic2VxdWVuY2VfYXNfc2libGluZyIsImxlZnQiLCJ1bmxlc3Nfc3RvcHBlZCIsImNvbnRhaW5zX3N0b3AiLCJlcyIsImN1cnJlbnRfZG9tX2V2ZW50IiwiaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIiwiaGFuZGxlIiwiZG9tX2V2ZW50IiwiZXZlbnQiLCJvbGQiLCJzZXhwX29mX3QiLCJ0eXBlX2lkIiwiZ2VuZXJpY19ob29rIiwicGFjayIsImlkIiwiZGVzdHJveSIsInVwZGF0ZSIsImluaXQiLCJpbnB1dF9pZCIsImlucHV0IiwiaW5pdCQwIiwidXBkYXRlJDAiLCJkZXN0cm95JDAiLCJnZW5lcmljX2hvb2skMCIsImV4dHJhIiwiY29tYmluZSIsInJpZ2h0IiwiYXJnMV8wMDIiLCJhcmcwXzAwMSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJlbGVtZW50Iiwic3RhdGUiLCJhbmltYXRpb25faWQiLCJvbGRfaW5wdXQiLCJjcmVhdGUiLCJjb21iaW5lX2lucHV0cyIsInNldCIsIng3IiwieDUiLCJ4NiIsImdldCIsIngxMSIsIngxMCIsImRlbGV0ZSQwIiwieDE2IiwieDE1IiwidF9vZl9qcyIsIngiLCJ0X3RvX2pzIiwidF9vZl9qcyQwIiwidF90b19qcyQwIiwic2V0X3Byb3BlcnR5IiwiaGFzX3Byb3BlcnR5IiwiaGFzX2F0dHJpYnV0ZSIsInQiLCJuYW1lIiwic2V0X2F0dHJpYnV0ZSIsInRfb2ZfanMkMSIsInRfdG9fanMkMSIsImlzX2VtcHR5IiwiZl9pZCIsImlkX3NleHAiLCJjcmVhdGUkMSIsImluZm8iLCJvcHQiLCJzdGgiLCJzdGgkMCIsInMiLCJlbHQiLCJkb21fbm9kZSIsInMwIiwicHJldl9zdGF0ZSIsImRvbV9ub2RlJDAiLCJlbXB0eSIsInJoYW5kbGVyIiwieF8wMDIiLCJsaGFuZGxlciIsInhfMDAxIiwiY3JlYXRlX2Zsb2F0IiwicHJvcGVydHkiLCJzdHJpbmdfcHJvcGVydHkiLCJib29sX3Byb3BlcnR5Iiwic3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MiLCJjcmVhdGVfaG9vayIsImhvb2siLCJtYW55IiwiYXR0cnMiLCJtYW55X3dpdGhvdXRfbWVyZ2UiLCJjb21iaW5lJDAiLCJ3YXJuaW5nX2NvdW50IiwiY3VycmVudCIsIndhcm5fcyIsInF1b3RhIiwid2FybmluZ19jb3VudCQwIiwicmVzZXRfd2FybmluZ19jb3VudCIsImNvbWJpbmluZ19tYXBfYWRkIiwibWFwIiwia2V5IiwiZXhpc3RpbmdfdmFsdWUiLCJlbXB0eV9tZXJnZSIsInN0eWxlIiwiY3NzIiwidmFsaWRfY2xhc3NfbmFtZSIsImludmFsaWQiLCJjbGFzcyQwIiwiY2xhc3NuYW1lIiwiY2xhc3NlcyIsImNsYXNzZXMkMCIsImNsYXNzbmFtZXMiLCJocmVmIiwiciIsInRhcmdldCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsImhpZGRlbiIsInJlYWRvbmx5IiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImZvciQwIiwidHlwZSIsInZhbHVlX3Byb3AiLCJ0YWJpbmRleCIsInRpdGxlIiwic3JjIiwibWluIiwibWF4IiwiY29sc3BhbiIsInJvd3NwYW4iLCJkcmFnZ2FibGUiLCJiIiwiY3JlYXRlJDAiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwiY2xpcGJvYXJkIiwiZHJhZyIsInBvaW50ZXIiLCJhbmltYXRpb24iLCJvbiIsImhhbmRsZXIiLCJvbl9mb2N1cyIsIm9uX2JsdXIiLCJvbl9jbGljayIsIm9uX2NvbnRleHRtZW51Iiwib25fZG91YmxlX2NsaWNrIiwib25fZHJhZyIsIm9uX2RyYWdzdGFydCIsIm9uX2RyYWdlbmQiLCJvbl9kcmFnZW50ZXIiLCJvbl9kcmFnbGVhdmUiLCJvbl9kcmFnb3ZlciIsIm9uX2Ryb3AiLCJvbl9tb3VzZW1vdmUiLCJvbl9tb3VzZXVwIiwib25fbW91c2Vkb3duIiwib25fbW91c2VlbnRlciIsIm9uX21vdXNlbGVhdmUiLCJvbl9tb3VzZW92ZXIiLCJvbl9tb3VzZW91dCIsIm9uX2tleXVwIiwib25fa2V5cHJlc3MiLCJvbl9rZXlkb3duIiwib25fc2Nyb2xsIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fY29weSIsIm9uX2N1dCIsIm9uX3Bhc3RlIiwib25fcmVzZXQiLCJvbl9hbmltYXRpb25lbmQiLCJjb25zdF9pZ25vcmUiLCJydW5fY29lcmNpb24iLCJjb2VyY2lvbiIsInByZXYiLCJvbl9pbnB1dF9ldmVudCIsInRleHQiLCJvbl9jaGFuZ2UiLCJvbl9pbnB1dCIsInRvX3JhdyIsImF0dHIiLCJhdHRyc19vYmoiLCJ0YWtlX3NlY29uZF9zdHlsZXMiLCJmaXJzdCIsInNlY29uZCIsInRha2Vfc2Vjb25kX2NsYXNzZXMiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm5hbWUkMCIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwiZmlsdGVyX2J5X2tpbmQiLCJhIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJtb3VzZV91cF90eXBlX2lkIiwibW91c2VfbW92ZV90eXBlX2lkIiwicmVzMV8wMDkiLCJ0YWciLCJ3aXRoX2tleSIsIm1hcF9hdHRycyIsInJhd19hdHRycyIsImFkZF9jbGFzc2VzIiwiY2hpbGRyZW4iLCJ3Iiwia2luZCIsImNoaWxkcmVuX3JhdyIsIm90aGVyIiwiZWxlbWVudF9leHBlcnQiLCJ3aWRnZXQiLCJjcmVhdGVfY2hpbGRsZXNzIiwiY3JlYXRlX3N2ZyIsIm5vbmUiLCJ0ZXh0ZiIsImZvcm1hdCIsIndpZGdldF9vZl9tb2R1bGUiLCJtIiwiYXJnMF8wMDYiLCJzdGF0ZV8wMDQiLCJpbnB1dF8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsInJlczBfMDA4IiwicHJldl9pbnB1dCIsImVsZW1lbnQkMCIsInN0YXRlJDAiLCJpIiwidG9fZG9tIiwiaW5uZXJfaHRtbCIsImNvbnRlbnQiLCJidWlsZF9zZXhwIiwiZGVidWciLCJpbm5lcl9odG1sX3N2ZyIsImlubmVyX2h0bWwkMCIsImJvZHkiLCJidXR0b24iLCJjb2RlIiwiZGl2IiwibWFpbiIsImZpZWxkc2V0IiwiZm9vdGVyIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZGVyIiwiaHRtbCIsInRleHRhcmVhIiwic2VsZWN0Iiwib3B0aW9uIiwibGFiZWwiLCJsaSIsInAiLCJwcmUiLCJzZWN0aW9uIiwic3BhbiIsInN0cm9uZyIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsInByZXZpb3VzIiwiYXBwbHkiLCJjcmVhdGUkMiIsImNyZWF0ZV9zdmckMCIsImhlcmUiLCJlcnJvcl9zb3VyY2VfMDA0IiwidF9vZl9zZXhwIiwic2V4cF9vZl90IiwidmFsaWRhdGUiLCJ0IiwiZXF1YWwiLCJ0MSIsInQyIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsInNleHBfb2ZfdCQxIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsInQxIiwidDIiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsInQxMCIsInQxMSIsInQxMiIsInQxMyIsInQxNCIsInNleHBfb2ZfdCIsInZfMDA2Iiwic2xvdHNfcGVyX3R1cGxlXzAwMiIsImFyZ18wMDMiLCJibmRzXzAwMSIsInNleHBfb2ZfdCQwIiwib2ZfdHVwbGVfMDA3Iiwib2ZfdmFyaWFudF8wMDgiLCJzbG90c19wZXJfdHVwbGUiLCJuIiwic2V4cF9vZl90MSIsIm9mX2EwXzAwOSIsInNleHBfb2ZfdDIiLCJvZl9hMF8wMTAiLCJvZl9hMV8wMTEiLCJzZXhwX29mX3QzIiwib2ZfYTBfMDEyIiwib2ZfYTFfMDEzIiwib2ZfYTJfMDE0Iiwic2V4cF9vZl90NCIsIm9mX2EwXzAxNSIsIm9mX2ExXzAxNiIsIm9mX2EyXzAxNyIsIm9mX2EzXzAxOCIsInNleHBfb2ZfdDUiLCJvZl9hMF8wMTkiLCJvZl9hMV8wMjAiLCJvZl9hMl8wMjEiLCJvZl9hM18wMjIiLCJvZl9hNF8wMjMiLCJzZXhwX29mX3Q2Iiwib2ZfYTBfMDI0Iiwib2ZfYTFfMDI1Iiwib2ZfYTJfMDI2Iiwib2ZfYTNfMDI3Iiwib2ZfYTRfMDI4Iiwib2ZfYTVfMDI5Iiwic2V4cF9vZl90NyIsIm9mX2EwXzAzMCIsIm9mX2ExXzAzMSIsIm9mX2EyXzAzMiIsIm9mX2EzXzAzMyIsIm9mX2E0XzAzNCIsIm9mX2E1XzAzNSIsIm9mX2E2XzAzNiIsInNleHBfb2ZfdDgiLCJvZl9hMF8wMzciLCJvZl9hMV8wMzgiLCJvZl9hMl8wMzkiLCJvZl9hM18wNDAiLCJvZl9hNF8wNDEiLCJvZl9hNV8wNDIiLCJvZl9hNl8wNDMiLCJvZl9hN18wNDQiLCJzZXhwX29mX3Q5Iiwib2ZfYTBfMDQ1Iiwib2ZfYTFfMDQ2Iiwib2ZfYTJfMDQ3Iiwib2ZfYTNfMDQ4Iiwib2ZfYTRfMDQ5Iiwib2ZfYTVfMDUwIiwib2ZfYTZfMDUxIiwib2ZfYTdfMDUyIiwib2ZfYThfMDUzIiwic2V4cF9vZl90MTAiLCJvZl9hMF8wNTQiLCJvZl9hMV8wNTUiLCJvZl9hMl8wNTYiLCJvZl9hM18wNTciLCJvZl9hNF8wNTgiLCJvZl9hNV8wNTkiLCJvZl9hNl8wNjAiLCJvZl9hN18wNjEiLCJvZl9hOF8wNjIiLCJvZl9hOV8wNjMiLCJzZXhwX29mX3QxMSIsIm9mX2EwXzA2NCIsIm9mX2ExXzA2NSIsIm9mX2EyXzA2NiIsIm9mX2EzXzA2NyIsIm9mX2E0XzA2OCIsIm9mX2E1XzA2OSIsIm9mX2E2XzA3MCIsIm9mX2E3XzA3MSIsIm9mX2E4XzA3MiIsIm9mX2E5XzA3MyIsIm9mX2ExMF8wNzQiLCJzZXhwX29mX3QxMiIsIm9mX2EwXzA3NSIsIm9mX2ExXzA3NiIsIm9mX2EyXzA3NyIsIm9mX2EzXzA3OCIsIm9mX2E0XzA3OSIsIm9mX2E1XzA4MCIsIm9mX2E2XzA4MSIsIm9mX2E3XzA4MiIsIm9mX2E4XzA4MyIsIm9mX2E5XzA4NCIsIm9mX2ExMF8wODUiLCJvZl9hMTFfMDg2Iiwic2V4cF9vZl90MTMiLCJvZl9hMF8wODciLCJvZl9hMV8wODgiLCJvZl9hMl8wODkiLCJvZl9hM18wOTAiLCJvZl9hNF8wOTEiLCJvZl9hNV8wOTIiLCJvZl9hNl8wOTMiLCJvZl9hN18wOTQiLCJvZl9hOF8wOTUiLCJvZl9hOV8wOTYiLCJvZl9hMTBfMDk3Iiwib2ZfYTExXzA5OCIsIm9mX2ExMl8wOTkiLCJzZXhwX29mX3QxNCIsIm9mX2EwXzEwMCIsIm9mX2ExXzEwMSIsIm9mX2EyXzEwMiIsIm9mX2EzXzEwMyIsIm9mX2E0XzEwNCIsIm9mX2E1XzEwNSIsIm9mX2E2XzEwNiIsIm9mX2E3XzEwNyIsIm9mX2E4XzEwOCIsIm9mX2E5XzEwOSIsIm9mX2ExMF8xMTAiLCJvZl9hMTFfMTExIiwib2ZfYTEyXzExMiIsIm9mX2ExM18xMTMiLCJuYW1lJDEiLCJwcmVmaXgiLCJuYW1lJDAiLCJuYW1lIiwiZmFpbHdpdGhzIiwiYXJjaF9zaXh0eWZvdXIiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsInRvX3N0cmluZyIsInNwcmludGYiLCJjb25jYXQiLCJsIiwibWF4X3Nsb3QiLCJvZl9zbG90c18wMDciLCJvZl9hXzAwOCIsImVxdWFsIiwidDAiLCJhcnJheV9pbmRleF9udW1fYml0cyIsIm1hc2tlZF90dXBsZV9pZF9udW1fYml0cyIsIm1heF9hcnJheV9sZW5ndGgiLCJpbnZhcmlhbnQiLCJ0IiwiaW5pdCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInBoeXNfZXF1YWwiLCJwaHlzX2NvbXBhcmUiLCJudWxsJDAiLCJpc19udWxsIiwiY3JlYXRlIiwiaGVhZGVyX2luZGV4IiwidHVwbGVfaWQiLCJoZWFkZXJfaW5kZXhfbWFzayIsIm1hc2tlZF90dXBsZV9pZCIsImludmFyaWFudCQwIiwic2xvdF9pbmRleCIsInNsb3QiLCJmaXJzdF9zbG90X2luZGV4IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsIm51bGwkMSIsImlzX251bGwkMCIsImlzX2ZyZWUiLCJpc191c2VkIiwiaWQiLCJtZXRhZGF0YV9pbmRleCIsInN0YXJ0X29mX3R1cGxlc19pbmRleCIsIm1heF9jYXBhY2l0eSIsImR1bW15IiwiciIsImZpcnN0X2ZyZWUiLCJzZXRfZmlyc3RfZnJlZSIsInYiLCJuZXh0X2lkIiwic2V0X25leHRfaWQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiY2FwYWNpdHkiLCJkdW1teSQwIiwiZmlyc3RfZnJlZSQwIiwibmV4dF9pZCQwIiwibGVuZ3RoJDAiLCJjYXBhY2l0eSQwIiwic2xvdHNfcGVyX3R1cGxlJDAiLCJhcnJheV9pbmRpY2VzX3Blcl90dXBsZSIsImFycmF5X2xlbmd0aCIsInR1cGxlX251bV90b19oZWFkZXJfaW5kZXgiLCJ0dXBsZV9udW0iLCJ0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCIsIm1ldGFkYXRhIiwibGVuZ3RoJDEiLCJzZXhwX29mX3QkMyIsInNleHBfb2ZfdHkiLCJjYXBhY2l0eV8wMTgiLCJzbG90c19wZXJfdHVwbGVfMDE2IiwibGVuZ3RoXzAyMCIsIm5leHRfaWRfMDIyIiwiZmlyc3RfZnJlZV8wMjQiLCJkdW1teV8wMjYiLCJhcmdfMDI3IiwiYm5kc18wMTUiLCJhcmdfMDI1IiwiYm5kc18wMTUkMCIsImFyZ18wMjMiLCJibmRzXzAxNSQxIiwiYXJnXzAyMSIsImJuZHNfMDE1JDIiLCJhcmdfMDE5IiwiYm5kc18wMTUkMyIsImFyZ18wMTciLCJibmRzXzAxNSQ0IiwidW5zYWZlX2hlYWRlciIsInVuc2FmZV9zZXRfaGVhZGVyIiwiaGVhZGVyIiwiaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyIsInVuc2FmZV9wb2ludGVyX2lzX2xpdmUiLCJwb2ludGVyIiwiaGVhZGVyX2luZGV4JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMiIsInQkMCIsInNob3VsZF9lcXVhbCIsInQkMSIsInhfMDA5IiwiZXhuJDAiLCJleG4iLCJhcmcxXzAxMSIsImFyZzBfMDEwIiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsImFyZzJfMDMwIiwiYXJnMV8wMjkiLCJhcmcwXzAyOCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJyZXMyXzAzMyIsImludmFyaWFudCQxIiwiaW52YXJpYW50X2EiLCJjaGVjayIsImYiLCJmaWVsZCIsImZpcnN0X3Nsb3QiLCJmcmVlIiwiYXJnMV8wMzUiLCJhcmcwXzAzNCIsInJlczBfMDM2IiwicmVzMV8wMzciLCJjYXBhY2l0eSQxIiwiaXNfZnVsbCIsInVuc2FmZV9hZGRfdG9fZnJlZV9saXN0Iiwic2V0X21ldGFkYXRhIiwiY3JlYXRlX2FycmF5IiwidW5zYWZlX2luaXRfcmFuZ2UiLCJsbyIsImhpIiwidHVwbGVfbnVtJDAiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJvZl9zbG90c18wNzciLCJpc192YWxpZF8wNzkiLCJwb2ludGVyXzA4MSIsImFyZ18wODIiLCJibmRzXzA3OCIsImFyZ18wODAiLCJibmRzXzA3OCQwIiwiZmllbGQwIiwiZmllbGQxIiwidHlwZW5hbWUiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImZpZWxkcyIsImlzX3ZhbGlkIiwiZm9sbG93IiwieF8wODMiLCJpbnZhbGlkYXRlIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwidHMiLCJhcmciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ4XzA2OSIsInZfMDY4IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2IiwicG9zJDkiLCJwb3MkOCIsInBvcyQ3IiwicG9zJDYiLCJhcmdfMTA4IiwicG9zJDUiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwiZXJyb3Jfc291cmNlXzAzOSIsIm1heF90aW1lIiwibWluX3RpbWUiLCJtYXhfbnVtX2JpdHMiLCJtaW5fdmFsdWUiLCJpbnZhcmlhbnQiLCJ0Iiwib2ZfaW50IiwiaSIsInN5bWJvbCQyIiwidDEiLCJ0MiIsInN5bWJvbCQzIiwicG93MiIsInNleHBfb2ZfdCQwIiwieF8wMDciLCJudW1fYml0c19pbnRlcm5hbCIsIm51bV9iaXRzIiwiaW52YXJpYW50JDAiLCJudW1fa2V5X2JpdHMiLCJ0X29mX3NleHAkMCIsInhfMDA2IiwiY3JlYXRlX2V4biIsIm9wdCIsInhfMDA4Iiwic3RoIiwiZXh0ZW5kX3RvX21heF9udW1fYml0cyIsImJpdHMiLCJpbnRzIiwibGV2ZWxfYml0c19kZWZhdWx0IiwiY29tcGFyZSIsImVxdWFsJDAiLCJ4XzAxMiIsInhfMDEzIiwidG9fc2V4cGFibGUiLCJzZXhwX29mX3QkMSIsIm9uZV9uYW5vc2Vjb25kIiwiYWJvdXRfb25lX21pY3Jvc2Vjb25kIiwiYWJvdXRfb25lX21pbGxpc2Vjb25kIiwiYWJvdXRfb25lX3NlY29uZCIsImFib3V0X29uZV9kYXkiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJ2IiwibGV2ZWxfYml0cyQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzAxOSIsImZpZWxkX3NleHBzXzAyMCIsImFsYXJtX3ByZWNpc2lvbl8wMjEiLCJsZXZlbF9iaXRzXzAyMyIsImNhcGFjaXR5XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4Iiwic2V4cF8wMTkkMCIsImZpZWxkX3NleHBzXzAzMSIsImZpZWxkX25hbWVfMDI5IiwidGFpbF8wNDEiLCJmaWVsZF9zZXhwXzAzMCQzIiwiZmllbGRfc2V4cF8wMzAiLCJ4XzA0MiIsImZpZWxkX3NleHBfMDMwJDAiLCJmdmFsdWVfMDM0IiwiZmllbGRfc2V4cF8wMzAkMSIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAzMCQyIiwiZnZhbHVlXzAzNSIsImxldmVsX2JpdHNfMDI0IiwibWF0Y2giLCJhbGFybV9wcmVjaXNpb25fMDIyIiwidl8wMzgiLCJ2XzAzOCQwIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wNDgiLCJsZXZlbF9iaXRzXzA0NiIsImFsYXJtX3ByZWNpc2lvbl8wNDQiLCJibmRzXzA0MyIsInZfMDQ5IiwiYXJnXzA1MSIsImJuZF8wNTAiLCJibmRzXzA0MyQwIiwiYXJnXzA0NyIsImJuZHNfMDQzJDEiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMiIsImFsYXJtX3ByZWNpc2lvbiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJjYXBhY2l0eSIsImxvb3AiLCJyZW1haW5pbmciLCJ0JDAiLCJiIiwibWljcm9zZWNvbmRfcHJlY2lzaW9uIiwiZHVyYXRpb25zIiwibnVtX2JpdHNfYWNjdW0iLCJsZXZlbF9udW1fYml0cyIsIm51bV9iaXRzX2FjY3VtJDAiLCJkdXJhdGlvbiIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQ0IiwiY3JlYXRlJDAiLCJudW1fa2V5cyIsImNyZWF0ZSQxIiwiYml0c19wZXJfc2xvdCIsInRvX2ludDYzIiwib2ZfaW50NjMiLCJzY2FsZV9pbnQiLCJzZXhwX29mX3QkNyIsIm9mX2ludDYzJDAiLCJ0b19pbnQ2MyQwIiwiYWRkIiwiYWRkX2NsYW1wX3RvX21heCIsInN1YiIsImRpZmYiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2siLCJzZXhwX29mX3Bvb2xfc2xvdHMiLCJvZl9hXzA1NCIsInhfMDU1Iiwic2V4cF9vZl90JDgiLCJvZl9hXzA1NiIsInhfMDU3IiwibnVsbCQwIiwibnVsbCQxIiwiaXNfbnVsbCIsImZyZWUiLCJrZXkiLCJwIiwiYXQiLCJ2YWx1ZSIsImxldmVsX2luZGV4IiwicHJldiIsInNldF9wcmV2IiwieCIsIm5leHQiLCJzZXRfbmV4dCIsImlzX3ZhbGlkIiwiZ3JvdyIsImlzX2Z1bGwiLCJvZl9leHRlcm5hbF9leG4iLCJwb29sIiwibGluayIsIml0ZXIiLCJmaXJzdCIsImYiLCJjdXJyZW50IiwiY29udGludWUkMCIsIm5leHQkMCIsInNsb3RzIiwibWF4X2FsbG93ZWRfa2V5Iiwic2V0X21heF9hbGxvd2VkX2tleSIsIm1pbl9hbGxvd2VkX2tleSIsInNldF9taW5fYWxsb3dlZF9rZXkiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5Iiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDY1IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA3OSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDc3Iiwia2V5c19wZXJfc2xvdF8wNzUiLCJiaXRzX3Blcl9zbG90XzA3MyIsInNsb3RzX21hc2tfMDcxIiwiYml0c18wNjkiLCJpbmRleF8wNjciLCJsZW5ndGhfMDgxIiwibWluX2FsbG93ZWRfa2V5XzA4MyIsIm1heF9hbGxvd2VkX2tleV8wODUiLCJzbG90c18wODciLCJhcmdfMDg4IiwiYm5kc18wNjYiLCJhcmdfMDg2IiwiYm5kc18wNjYkMCIsImFyZ18wODQiLCJibmRzXzA2NiQxIiwiYXJnXzA4MiIsImJuZHNfMDY2JDIiLCJhcmdfMDgwIiwiYm5kc18wNjYkMyIsImFyZ18wNzgiLCJibmRzXzA2NiQ0IiwiYXJnXzA3NiIsImJuZHNfMDY2JDUiLCJhcmdfMDc0IiwiYm5kc18wNjYkNiIsImFyZ18wNzIiLCJibmRzXzA2NiQ3IiwiYXJnXzA3MCIsImJuZHNfMDY2JDgiLCJhcmdfMDY4IiwiYm5kc18wNjYkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCQwIiwiY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkiLCJwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSIsImxldmVscyIsImVsdF9rZXlfbG93ZXJfYm91bmQiLCJzZXRfZWx0X2tleV9sb3dlcl9ib3VuZCIsIm1pbl9lbHQiLCJzZXRfbWluX2VsdCIsInNldF9wb29sIiwibGVuZ3RoJDEiLCJzZXRfbGVuZ3RoJDAiLCJsZXZlbHMkMCIsImVsdF9rZXlfbG93ZXJfYm91bmQkMCIsIm1pbl9lbHQkMCIsInBvb2wkMCIsImxlbmd0aCQyIiwiaXNfZW1wdHkiLCJudW1fbGV2ZWxzIiwibWluX2FsbG93ZWRfa2V5JDEiLCJtYXhfYWxsb3dlZF9rZXkkMSIsImludGVybmFsX2l0ZXIiLCJsZXZlbCIsInNsb3RfaW5kZXgiLCJlbHQiLCJjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2siLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2FscmVhZHlfZm91bmQiLCJtaW5fa2V5X2FscmVhZHlfZm91bmQiLCJudW1fbGV2ZWxzJDAiLCJzbG90X21pbl9rZXkiLCJzbG90JDAiLCJjdXJyZW50X2tleSIsImFkZF9lbHQiLCJ4XzEzNSIsInRvX2FkZCIsImtleSQwIiwiZWx0c18xMTUiLCJtYXhfYWxsb3dlZF9rZXlfMTEzIiwibWluX2FsbG93ZWRfa2V5XzExMSIsImJuZHNfMTEwIiwia2V5XzEwNSIsImJuZHNfMTA0IiwiYXJnXzEwNiIsImJuZHNfMTA0JDAiLCJhcmdfMTE2IiwiYm5kc18xMTAkMCIsImFyZ18xMTQiLCJibmRzXzExMCQxIiwiYXJnXzExMiIsImJuZHNfMTEwJDIiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTY3Iiwic3RhcnRfMTY1IiwiY29uZmlnXzE2MyIsIm5vd18xNjkiLCJhbGFybSIsImFsYXJtc18xNzEiLCJibmRzXzE2MiIsInZhbHVlXzE1OSIsImF0XzE1NyIsImFyZ18xNjAiLCJibmRzXzE1NiIsImFyZ18xNTgiLCJibmRzXzE1NiQwIiwiYXJnXzE3MiIsImJuZHNfMTYyJDAiLCJhcmdfMTcwIiwiYm5kc18xNjIkMSIsImFyZ18xNjgiLCJibmRzXzE2MiQyIiwiYXJnXzE2NiIsImJuZHNfMTYyJDMiLCJhcmdfMTY0IiwiYm5kc18xNjIkNCIsImxlbmd0aCQzIiwiaXNfZW1wdHkkMCIsInBvb2wkMSIsImludGVydmFsX251bV9pbnRlcm5hbCIsInRpbWUiLCJpbnRlcnZhbF9udW1fdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtJDAiLCJpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtX3N0YXJ0IiwibmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biIsInhfMTc0IiwiY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIiwibm93X2ludGVydmFsX251bSIsIm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSIsImludGVydmFsX3N0YXJ0IiwiaW52YXJpYW50JDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwicHJpb3JpdHlfcXVldWVfZnVuIiwibGV2ZWxzX2Z1biIsInNsb3RzX2Z1biIsIm4iLCJ4XzA2MiIsIm1heF9hbGxvd2VkX2tleV9mdW4iLCJleHBlY3QiLCJlcXVhbCIsIm1lc3NhZ2UiLCJoZXJlIiwiY29tcGFyYXRvciIsImFfMTI4IiwiYl8xMjkiLCJtaW5fYWxsb3dlZF9rZXlfZnVuIiwiZ290Iiwic2V4cGlmaWVyIiwiYV8xMjYiLCJiXzEyNyIsImxlbmd0aF9mdW4iLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXlfZnVuIiwiZXRhIiwiYV8xMjQiLCJiXzEyNSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfZnVuIiwia2V5c19wZXJfc2xvdF9mdW4iLCJhXzEyMiIsImJfMTIzIiwiYml0c19wZXJfc2xvdF9mdW4iLCJleHBlY3QkMCIsInNsb3RzX21hc2tfZnVuIiwiYV8xMjAiLCJiXzEyMSIsImJpdHNfZnVuIiwiaW5kZXhfZnVuIiwieF8xMTkiLCJwcmV2X2xldmVsIiwiYV8xMzEiLCJiXzEzMiIsImdvdCQwIiwibWVzc2FnZSQwIiwiaGVyZSQwIiwiY29tcGFyYXRvciQwIiwiYV8xMzMiLCJiXzEzNCIsImVsdF9rZXlfbG93ZXJfYm91bmRfZnVuIiwibWluX2VsdF9mdW4iLCJwb29sX2Z1biIsInhfMTMwIiwib2ZfYV8wODkiLCJsZW5ndGhfMDkxIiwicG9vbF8wOTMiLCJtaW5fZWx0XzA5NSIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDk3IiwibGV2ZWxzXzA5OSIsImJuZHNfMDkwIiwiYXJnXzEwMCIsImJuZHNfMDkwJDAiLCJhcmdfMDk4IiwiYm5kc18wOTAkMSIsImFyZ18wOTYiLCJibmRzXzA5MCQyIiwiYXJnXzA5NCIsImJuZHNfMDkwJDMiLCJhcmdfMDkyIiwiYm5kc18wOTAkNCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWVfZnVuIiwiYV8xODMiLCJiXzE4NCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnRfZnVuIiwiYV8xODEiLCJiXzE4MiIsIm5vd19mdW4iLCJtYXhfaW50ZXJ2YWxfbnVtX2Z1biIsImFfMTc3IiwiYl8xNzgiLCJzZXhwaWZpZXIkMCIsImFfMTc5IiwiYl8xODAiLCJzdGFydF9mdW4iLCJjb25maWdfZnVuIiwieF8xNzYiLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTg1IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTg2IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE4NyIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMTkiLCJlcnJvcl9zb3VyY2VfMDMwIiwiZXJyb3Jfc291cmNlXzA0MyIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDUxIiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzExMiIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInNleHBfMDA2IiwiZmllbGRfc2V4cHNfMDA3IiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOCIsImhvd190b19kdW1wXzAxMCIsImR1cGxpY2F0ZXNfMDEyIiwiZXh0cmFfMDEzIiwic2V4cF8wMDYkMCIsImZpZWxkX3NleHBzXzAxNiIsImZpZWxkX25hbWVfMDE0IiwidGFpbF8wMjEiLCJmaWVsZF9zZXhwXzAxNSQyIiwiZmllbGRfc2V4cF8wMTUiLCJ4XzAyMiIsImZpZWxkX3NleHBfMDE1JDAiLCJmdmFsdWVfMDE3IiwiZmllbGRfc2V4cF8wMTUkMSIsImZ2YWx1ZV8wMTgiLCJob3dfdG9fZHVtcF8wMTEiLCJkdW1wX2lmX2RlbGF5ZWRfYnlfMDA5Iiwic2V4cF9vZl93YXRjaCIsImhvd190b19kdW1wXzAyNiIsImR1bXBfaWZfZGVsYXllZF9ieV8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF8wMzIiLCJ0YWdfMDMzIiwic2V4cF9hcmdzXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJzZXhwX29mX3QkNyIsImFyZzBfMDM3IiwicmVzMF8wMzgiLCJ0X29mX3NleHAkOCIsInNleHBfMDQ0Iiwic2V4cF9vZl90JDgiLCJlcXVhbCQwIiwieF8wNDUiLCJ4XzA0NiIsInRfb2Zfc2V4cCQ5Iiwic2V4cF8wNTIiLCJzZXhwX29mX3QkOSIsInRfb2Zfc2V4cCQxMCIsInNleHBfb2ZfdCQxMCIsInRpbWluZ193aGVlbF9jb25maWciLCJyIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciIsInJlY29yZF9iYWNrdHJhY2VzIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJtYXhfbnVtX3RocmVhZHMiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCIsImZpbGVfZGVzY3Jfd2F0Y2hlciIsImVwb2xsX21heF9yZWFkeV9ldmVudHMiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5IiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyIiwiY2hlY2tfaW52YXJpYW50cyIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyIsInYiLCJ0aW1pbmdfd2hlZWxfY29uZmlnJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMCIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMCIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsIm1heF9udW1fdGhyZWFkcyQwIiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzJDAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCQwIiwiZmlsZV9kZXNjcl93YXRjaGVyJDAiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDAiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5JDAiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIkMCIsImNoZWNrX2ludmFyaWFudHMkMCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQwIiwic2V4cF9vZl90JDExIiwidGltaW5nX3doZWVsX2NvbmZpZ18xNzQiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMTcwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8xIiwicmVjb3JkX2JhY2t0cmFjZXNfMTYyIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXzE1OCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XzE1NCIsIm1heF9udW1fdGhyZWFkc18xNDYiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNfMTQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMTM4IiwiZmlsZV9kZXNjcl93YXRjaGVyXzEzNCIsImVwb2xsX21heF9yZWFkeV9ldmVudHNfMTMwIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheV8xMjYiLCJjaGVja19pbnZhcmlhbnRzXzExOCIsImJuZHNfMTEzIiwidl8xNzUiLCJhcmdfMTc3IiwiYm5kXzE3NiIsImJuZHNfMTEzJDAiLCJ2XzE3MSIsImFyZ18xNzMiLCJibmRfMTcyIiwiYm5kc18xMTMkMSIsInZfMTY3IiwiYXJnXzE2OSIsImJuZF8xNjgiLCJibmRzXzExMyQyIiwidl8xNjMiLCJhcmdfMTY1IiwiYm5kXzE2NCIsImJuZHNfMTEzJDMiLCJ2XzE1OSIsImFyZ18xNjEiLCJibmRfMTYwIiwiYm5kc18xMTMkNCIsInZfMTU1IiwiYXJnXzE1NyIsImJuZF8xNTYiLCJibmRzXzExMyQ1Iiwidl8xNTEiLCJhcmdfMTUzIiwiYm5kXzE1MiIsImJuZHNfMTEzJDYiLCJ2XzE0NyIsImFyZ18xNDkiLCJibmRfMTQ4IiwiYm5kc18xMTMkNyIsInZfMTQzIiwiYXJnXzE0NSIsImJuZF8xNDQiLCJibmRzXzExMyQ4Iiwidl8xMzkiLCJhcmdfMTQxIiwiYm5kXzE0MCIsImJuZHNfMTEzJDkiLCJ2XzEzNSIsImFyZ18xMzciLCJibmRfMTM2IiwiYm5kc18xMTMkMTAiLCJ2XzEzMSIsImFyZ18xMzMiLCJibmRfMTMyIiwiYm5kc18xMTMkMTEiLCJ2XzEyNyIsImFyZ18xMjkiLCJibmRfMTI4IiwiYm5kc18xMTMkMTIiLCJ2XzEyMyIsImFyZ18xMjUiLCJibmRfMTI0IiwiYm5kc18xMTMkMTMiLCJ2XzExOSIsImFyZ18xMjEiLCJibmRfMTIwIiwiYm5kc18xMTMkMTQiLCJ2XzExNSIsImFyZ18xMTciLCJibmRfMTE2IiwiYm5kc18xMTMkMTUiLCJjcmVhdGUkMCIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mbyIsIndvcmRfc2l6ZSIsImxldmVsX2JpdHMkMSIsImFsYXJtX3ByZWNpc2lvbiIsImFsYXJtX3ByZWNpc2lvbiQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiZGVmYXVsdCQxIiwiZXhhbXBsZSIsInVzYWdlIiwiZmllbGQiLCJ0b19zZXhwIiwiZGVzY3JpcHRpb24iLCJhYyIsImQiLCJ4XzE3OCIsImZpZWxkcyIsIm5hbWUiLCJuYW1lMiIsIm5hbWUxIiwic3RyaW5nIiwic2V4cF8wNTQiLCJmaWVsZF9zZXhwc18wNTUiLCJjaGVja19pbnZhcmlhbnRzXzA1OCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjQiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY2IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY4IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MCIsIm1heF9udW1fdGhyZWFkc18wNzIiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzYiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc4IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XzA4NCIsInRpbWluZ193aGVlbF9jb25maWdfMDg2IiwiZHVwbGljYXRlc18wODgiLCJleHRyYV8wODkiLCJpdGVyXzEwOSIsInNleHBfMDU0JDAiLCJmaWVsZF9zZXhwc18wOTIiLCJmaWVsZF9uYW1lXzA5MCIsInRhaWxfMTEwIiwiZmllbGRfc2V4cF8wOTEkMTYiLCJmaWVsZF9zZXhwXzA5MSIsInhfMTExIiwiZmllbGRfc2V4cF8wOTEkMCIsImZ2YWx1ZV8wOTMiLCJmaWVsZF9zZXhwXzA5MSQxIiwiZnZhbHVlXzA5NCIsImZpZWxkX3NleHBfMDkxJDIiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTEkMyIsImZ2YWx1ZV8wOTYiLCJmaWVsZF9zZXhwXzA5MSQ0IiwiZnZhbHVlXzA5NyIsImZpZWxkX3NleHBfMDkxJDUiLCJmdmFsdWVfMDk4IiwiZmllbGRfc2V4cF8wOTEkNiIsImZ2YWx1ZV8xMDAiLCJmaWVsZF9zZXhwXzA5MSQ3IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDkxJDgiLCJmdmFsdWVfMDk5IiwiZmllbGRfc2V4cF8wOTEkOSIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5MSQxMCIsImZ2YWx1ZV8xMDMiLCJmaWVsZF9zZXhwXzA5MSQxMSIsImZ2YWx1ZV8xMDQiLCJmaWVsZF9zZXhwXzA5MSQxMiIsImZ2YWx1ZV8xMDUiLCJmaWVsZF9zZXhwXzA5MSQxMyIsImZ2YWx1ZV8xMDYiLCJmaWVsZF9zZXhwXzA5MSQxNCIsImZ2YWx1ZV8xMDciLCJmaWVsZF9zZXhwXzA5MSQxNSIsImZ2YWx1ZV8xMDgiLCJjaGVja19pbnZhcmlhbnRzXzA1OSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYzIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjUiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY3IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY5IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MSIsIm1heF9udW1fdGhyZWFkc18wNzMiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzciLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc5IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMDg1IiwidCIsInQkMCIsImV4biIsInQkMSIsInQkMiIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQxIiwidGFnIiwibCIsImFsbCIsImRlYnVnIiwiY2xvY2siLCJmZCIsImZpbGVfZGVzY3Jfd2F0Y2hlciQxIiwiZmluYWxpemVycyIsImludGVycnVwdG9yIiwibW9uaXRvciIsIm1vbml0b3Jfc2VuZF9leG4iLCJwYXJhbGxlbCIsInJlYWRlciIsInNjaGVkdWxlciIsInNodXRkb3duIiwidGhyZWFkX3Bvb2wiLCJ0aHJlYWRfc2FmZSIsIndyaXRlciIsInN5bWJvbCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQxIiwiY2hlY2tfaW52YXJpYW50cyQxIiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyJDEiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDEiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMSIsImZpbGVfZGVzY3Jfd2F0Y2hlciQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQkMSIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyQxIiwibWF4X251bV90aHJlYWRzJDEiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMSIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJyZWNvcmRfYmFja3RyYWNlcyQxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQxIiwidGltaW5nX3doZWVsX2NvbmZpZyQxIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheSQxIiwidCQzIiwidGFza19pZCIsIm5vbmUiLCJjcmVhdGUiLCJpc19ub25lIiwieCIsImlzX3NvbWUiLCJnZXRfc29tZV9leG4iLCJnZXQiLCJ0IiwidW5zYWZlX2dldCIsInNldF9zb21lIiwidiIsInNldF9ub25lIiwic2V0IiwidiQwIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInhfMDAyIiwiZW1wdHkiLCJpc19lbXB0eSIsImVxdWFsIiwiZHVtbXlfaWQiLCJjaGlsZCIsInQiLCJwb29sIiwic2libGluZyIsInByZXYiLCJpZCIsInNldF9jaGlsZCIsInYiLCJzZXRfc2libGluZyIsInNldF9wcmV2IiwidmFsdWVfZXhuIiwiYWxsb2NhdGUiLCJ2YWx1ZSIsImZyZWUiLCJkaXNjb25uZWN0X3NpYmxpbmciLCJzaWJsaW5nJDAiLCJkaXNjb25uZWN0X2NoaWxkIiwiY2hpbGQkMCIsImRldGFjaCIsInByZXYkMCIsInJlbGF0aW9uX3RvX3ByZXYiLCJjcmVhdGUiLCJjYXBhY2l0eSIsImludmFyaWFudCIsInRvX3Zpc2l0JDIiLCJ0b192aXNpdCIsInRvX3Zpc2l0JDAiLCJtYXliZV9wYXJlbnRfdmFsdWUiLCJleHBlY3RlZF9wcmV2Iiwibm9kZSIsInRoaXNfdmFsdWUiLCJwYXJlbnRfdmFsdWUiLCJ0b192aXNpdCQxIiwiY3JlYXRlJDAiLCJvcHQiLCJjbXAiLCJzdGgiLCJtaW5fc2l6ZSIsImNvcHkiLCJwb29sJDAiLCJzdGFydCIsIm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMiLCJjb3B5X25vZGUiLCJuZXdfbm9kZSIsIm5ld19zdGFydCIsInJlc3QiLCJub2RlX3RvX2NvcHkiLCJzbG90Iiwibm9kZV90b191cGRhdGUiLCJtZXJnZSIsInJvb3QxIiwicm9vdDIiLCJhZGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJjdXJyZW50X2NoaWxkIiwidjEiLCJ2MiIsInRvcF9leG4iLCJ0b3AiLCJhZGRfbm9kZSIsInQkMSIsInQkMCIsImFkZCIsIm1heF9zdGFja19kZXB0aCIsImxvb3AiLCJkZXB0aCIsImhlYWQkMCIsIm5leHQxJDAiLCJuZXh0MiQwIiwiYWNjIiwiaGVhZCIsIm5leHQxIiwibmV4dDIiLCJhY2MkMCIsImgiLCJ4cyIsImhlYXAiLCJyZW1vdmVfbm9uX2VtcHR5IiwibWVyZ2VkX2NoaWxkcmVuIiwibmV3X3Jvb3QiLCJyZW1vdmVfdG9wIiwiY2xlYXIiLCJub2RlJDAiLCJwb3BfZXhuIiwiciIsInBvcCIsInBvcF9pZiIsImYiLCJmb2xkIiwiaW5pdCIsIml0ZXIiLCJsZW5ndGgiLCJpdGVyJDAiLCJsZW5ndGgkMCIsImlzX2VtcHR5JDAiLCJtZW0iLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsIm9mX2FycmF5IiwiYXJyIiwib2ZfbGlzdCIsImwiLCJzZXhwX29mX3QiLCJpc19ub2RlX3ZhbGlkIiwidmFsdWVfZXhuJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfYSIsInhfMDAxIiwicmVtb3ZlIiwidG9rZW4iLCJhZGRfcmVtb3ZhYmxlIiwidXBkYXRlIiwiZmluZF9lbHQiLCJub2RlcyQyIiwibm9kZXMiLCJub2RlcyQwIiwibm9kZXMkMSIsInVwZGF0ZSQwIiwiZWx0IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJ0X29mX3NleHAiLCJvZl9hXzAwMyIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsInBvcyIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhbV9ydW5uaW5nX3Rlc3QiLCJub25lIiwic29tZSIsIngiLCJ1bnNhZmVfdmFsdWUiLCJpc19ub25lIiwidCIsImlzX3NvbWUiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsImEiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsInZhbHVlXzAwMyIsIm5leHRfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJjcmVhdGUiLCJ1bnVzZWRfZWx0cyIsInIiLCJzZXRfdW51c2VkX2VsdHMiLCJ2IiwiYmFjayIsInNldF9iYWNrIiwiZnJvbnQiLCJzZXRfZnJvbnQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwidW51c2VkX2VsdHMkMCIsImJhY2skMCIsImZyb250JDAiLCJsZW5ndGgkMCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDciLCJsZW5ndGhfMDA5IiwiZnJvbnRfMDExIiwiYmFja18wMTMiLCJ1bnVzZWRfZWx0c18wMTUiLCJibmRzXzAwOCIsImFyZ18wMTYiLCJibmRzXzAwOCQwIiwiYXJnXzAxNCIsImJuZHNfMDA4JDEiLCJhcmdfMDEyIiwiYm5kc18wMDgkMiIsImFyZ18wMTAiLCJibmRzXzAwOCQzIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ0IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsInhfMDE3IiwiY3JlYXRlJDAiLCJlbnF1ZXVlIiwiYSIsIm5ld19iYWNrIiwiZGVxdWV1ZV9leG4iLCJ4XzAxOCIsImNsZWFyX2ludGVybmFsX3Bvb2wiLCJhZnRlciIsInQiLCJzcGFuIiwicmVzdWx0IiwibG9nIiwiYXJnMl8wMDMiLCJhcmczXzAwNCIsInNleHBfb2ZfYSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwNSIsInJlczFfMDA2IiwicmVzMl8wMDciLCJyZXMzXzAwOCIsImxvZ19zdHJpbmciLCJtZXNzYWdlIiwiY29uY2F0IiwiZXByaW50IiwiZXByaW50X3MiLCJlcHJpbnRzIiwicHJpbnRfcyIsInNleHAiLCJzZWMiLCJzZXhwX29mX3QiLCJ0b19yZXByIiwib2ZfcmVwciIsIm5hbWVzIiwiZGVidWciLCJmb3J3YXJkaW5nIiwiciIsInNldF9mb3J3YXJkaW5nIiwidiIsImhhc19zZWVuX2Vycm9yIiwic2V0X2hhc19zZWVuX2Vycm9yIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfdGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsInNldF9oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsIm5leHRfZXJyb3IiLCJzZXRfbmV4dF9lcnJvciIsImlkIiwiaGVyZSIsIm5hbWUiLCJmb3J3YXJkaW5nJDAiLCJoYXNfc2Vlbl9lcnJvciQwIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMkMCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzJDAiLCJuZXh0X2Vycm9yJDAiLCJpZCQwIiwiaGVyZSQwIiwibmFtZSQwIiwibWFrZV9jcmVhdG9yIiwibmFtZV9mdW4iLCJoZXJlX2Z1biIsImlkX2Z1biIsIm5leHRfZXJyb3JfZnVuIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZnVuIiwidGFpbHNfZm9yX2FsbF9lcnJvcnNfZnVuIiwiaGFzX3NlZW5fZXJyb3JfZnVuIiwiZm9yd2FyZGluZ19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJuYW1lX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJoZXJlX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJpZF9nZW4iLCJjb21waWxlX2FjYyQzIiwibmV4dF9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZ2VuIiwiY29tcGlsZV9hY2MkNSIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJoYXNfc2Vlbl9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ3IiwiZm9yd2FyZGluZ19nZW4iLCJhY2MiLCJjcmVhdGUiLCJtYXAiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJyZWNvcmQkMCIsImRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb25zIiwidCQxIiwiYWMiLCJhYyQwIiwidCQwIiwieF8wMDEiLCJuZXh0X2lkIiwiY3JlYXRlX3dpdGhfcGFyZW50IiwiaW5mbyIsInBhcmVudCIsImkiLCJzIiwicyQwIiwieF8wMDIiLCJwYXJlbnQkMCIsIm1haW4iLCJiYWNrdHJhY2VfaGlzdG9yeSIsImxvY2FsX3N0b3JhZ2UiLCJwcmlvcml0eSIsIm1vbml0b3IiLCJiYWNrdHJhY2VfaGlzdG9yeSQwIiwibG9jYWxfc3RvcmFnZSQwIiwicHJpb3JpdHkkMCIsIm1vbml0b3IkMCIsIm1vbml0b3JfZnVuIiwicHJpb3JpdHlfZnVuIiwibG9jYWxfc3RvcmFnZV9mdW4iLCJiYWNrdHJhY2VfaGlzdG9yeV9mdW4iLCJtb25pdG9yX2dlbiIsInByaW9yaXR5X2dlbiIsImxvY2FsX3N0b3JhZ2VfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfMDA4IiwibG9jYWxfc3RvcmFnZV8wMDYiLCJwcmlvcml0eV8wMDQiLCJtb25pdG9yXzAwMiIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMiIsImludmFyaWFudCIsImNyZWF0ZV9saWtlIiwiZmluZF9sb2NhbCIsImtleSIsIndpdGhfbG9jYWwiLCJkYXRhIiwicmVjb3JkX2JhY2t0cmFjZSIsImR1bW15X2UiLCJkdW1teV9mIiwiZHVtbXlfYSIsInNleHBfb2Zfc2xvdHMiLCJvZl9ldmVudCIsImV2ZW50Iiwib2Zfam9iIiwiam9iIiwiaXNfZXZlbnQiLCJpc19qb2IiLCJraW5kIiwicHJvamVjdCIsImpvYl9vcl9ldmVudCIsImV2ZW50cyIsInNldF9leGVjdXRpb25fY29udGV4dCIsImV4ZWN1dGlvbl9jb250ZXh0IiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImZyb250Iiwic2V0X2Zyb250IiwibWFzayIsInNldF9tYXNrIiwiam9icyIsInNldF9qb2JzIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJudW1fam9ic19ydW4iLCJzZXRfbnVtX2pvYnNfcnVuIiwibGVuZ3RoJDAiLCJmcm9udCQwIiwibWFzayQwIiwiam9icyQwIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm51bV9qb2JzX3J1biQwIiwibnVtX2pvYnNfcnVuXzAwMiIsImpvYnNfbGVmdF90aGlzX2N5Y2xlXzAwNCIsImpvYnNfMDA2IiwibWFza18wMDgiLCJmcm9udF8wMTAiLCJsZW5ndGhfMDEyIiwiYXJnXzAxMyIsImFyZ18wMTEiLCJibmRzXzAwMSQzIiwiYm5kc18wMDEkNCIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiY2xlYXIiLCJzZXQiLCJhIiwib2Zmc2V0JDAiLCJlbnF1ZXVlIiwib2xkX2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5Iiwib2xkX2pvYnMiLCJvbGRfZnJvbnQiLCJsZW4xIiwibGVuMiIsIm5ld19qb2JzIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJuIiwiY2FuX3J1bl9hX2pvYiIsInJ1bl9qb2IiLCJzY2hlZHVsZXIiLCJydW5fZXh0ZXJuYWxfam9icyIsImV4dGVybmFsX2pvYnMiLCJydW5fam9icyIsInRoaXNfam9iIiwiZXhuJDAiLCJleG4iLCJiYWNrdHJhY2UiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsIm5hbWVzJDAiLCJpc19udWxsIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQxIiwidHJhbnNpdGlvbl9pc19hbGxvd2VkIiwiZnJvbSIsInRvIiwic2V4cF9vZl9ldmVudCIsImF0IiwiaW50ZXJ2YWwiLCJzdGF0dXMiLCJtYXRjaCIsIm5vbmUiLCJzb21lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJmaXJzdF9zb21lIiwidDEiLCJ0MiIsInVuc2FmZV92YWx1ZSIsInNleHBfb2ZfdCQyIiwicHB4X29wdGlvbmFsX2VfMCIsInZhbHVlJDAiLCJkZWZhdWx0JDAiLCJ2YWx1ZV9leG4iLCJ0b19vcHRpb24iLCJvZl9vcHRpb24iLCJzZXRfc3RhdHVzIiwicHJldl9maXJlZCIsInNldF9wcmV2X2ZpcmVkIiwibmV4dF9maXJlZCIsInNldF9uZXh0X2ZpcmVkIiwic2V0X2ludGVydmFsIiwiY2FsbGJhY2siLCJhdCQwIiwic2V0X2F0IiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJzdGF0dXMkMCIsInByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMCIsImludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQwIiwiY2FsbGJhY2skMCIsImF0JDEiLCJhbGFybSQwIiwiYWxhcm1fZnVuIiwiYXRfZnVuIiwiY2FsbGJhY2tfZnVuIiwiZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiaW50ZXJ2YWxfZnVuIiwibmV4dF9maXJlZF9mdW4iLCJwcmV2X2ZpcmVkX2Z1biIsInN0YXR1c19mdW4iLCJhbGFybV9nZW4iLCJhdF9nZW4iLCJjYWxsYmFja19nZW4iLCJleGVjdXRpb25fY29udGV4dF9nZW4iLCJpbnRlcnZhbF9nZW4iLCJuZXh0X2ZpcmVkX2dlbiIsInByZXZfZmlyZWRfZ2VuIiwic3RhdHVzX2dlbiIsImdvdCIsInNleHBpZmllciIsImV4cGVjdCIsImVxdWFsIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJwcHhfb3B0aW9uYWxfZV8wJDAiLCJhXzAxNyIsImJfMDE4IiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImV4cGVjdCQwIiwibWVzc2FnZSQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsInhfMDE2IiwiaW52YXJpYW50JDAiLCJzZXhwX29mX3QkNSIsInhfMDIxIiwiaW52YXJpYW50JDEiLCJpbnZhcmlhbnRfd2l0aF9qb2JzJDAiLCJzZXhwX29mX3QkNiIsInhfMDIyIiwiaWQkMSIsImlzX3dhbGxfY2xvY2skMSIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJyZWFkX29ubHkiLCJmaXJlIiwiY29udGludWUkMCIsIm5leHQkMCIsImNvbnRpbnVlJDEiLCJwcHhfb3B0aW9uYWxfZV8wJDEiLCJuZXh0IiwicHB4X29wdGlvbmFsX2VfMCQyIiwicHJldiIsImFsYXJtX3ByZWNpc2lvbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX3J1bnNfYXQiLCJub3ckMCIsInRpbWluZ193aGVlbF9ub3ckMCIsInNjaGVkdWxlIiwicmVtb3ZlX2Zyb21fZmlyZWQiLCJuZXdfc3RhdHVzIiwic2V4cF9vZl9ldmVudCQwIiwic3RhdHVzJDEiLCJwcmV2X2ZpcmVkJDEiLCJzZXRfcHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQxIiwic2V0X25leHRfZmlyZWQkMCIsImludGVydmFsJDEiLCJzZXRfaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDEiLCJjYWxsYmFjayQxIiwic2V0X2F0JDAiLCJhbGFybSQxIiwic2V0X2FsYXJtJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQyIiwic2V0X3N0YXR1cyQxIiwic2V0X3N0YXR1c19pZiQwIiwic2NoZWR1bGVkX2F0IiwiY3JlYXRlX2ludGVybmFsIiwiYWRkJDAiLCJjcmVhdGVfYW5kX2FkZCIsImF0JDIiLCJhZnRlciQwIiwicmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJhdF9pbnRlcnZhbHMiLCJzZXhwX29mX3QkOCIsImFib3J0IiwiYWJvcnRfaWZfcG9zc2libGUiLCJhYm9ydF9leG4iLCJyZWFzb24iLCJjcmVhdGUkMSIsInNjaGVkdWxlX2F0X2ludGVybmFsIiwic2NoZWR1bGVfYXQiLCJzY2hlZHVsZV9hZnRlciIsInNjaGVkdWxlX2F0X2ludGVydmFscyIsInJlc2NoZWR1bGVfYXQiLCJyZXNjaGVkdWxlX2FmdGVyIiwicnVuX2FmdGVyIiwicnVuX2F0IiwicnVuX2F0X2ludGVydmFscyIsInJ1bl9maXJlZF9ldmVudHMiLCJzZW5kX2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJzZW5kX2V4biQwIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF8iLCJhZHZhbmNlX2RpcmVjdGx5IiwiZHVyYXRpb25fb2YiLCJzdGFydCIsImR1cmF0aW9uIiwibWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193IiwiaGFzX2V2ZW50c190b19ydW4iLCJjcmVhdGVfd2l0aF9jZWxsIiwiY2VsbCIsImNyZWF0ZV9mdWxsIiwiZXhlYyIsImV4ZWMkMCIsImV4ZWNfZnVuIiwiZXhlY19nZW4iLCJzZXhwX29mX3QkMCIsImV4ZWN1dGlvbl9jb250ZXh0XzAwMiIsInJlY29yZF9iYWNrdHJhY2VzIiwic2V0X3JlY29yZF9iYWNrdHJhY2VzIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfIiwic2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfIiwiY2hlY2tfaW52YXJpYW50cyIsInNldF9jaGVja19pbnZhcmlhbnRzIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJzZXRfeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJ5aWVsZCQwIiwic2V0X3lpZWxkIiwiZXZlbnRfYWRkZWRfaG9vayIsInNldF9ldmVudF9hZGRlZF9ob29rIiwiam9iX3F1ZXVlZF9ob29rIiwic2V0X2pvYl9xdWV1ZWRfaG9vayIsInRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIiwic2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9oIiwidGltZV9zb3VyY2UiLCJzZXRfdGltZV9zb3VyY2UiLCJ0b3RhbF9jeWNsZV90aW1lIiwic2V0X3RvdGFsX2N5Y2xlX3RpbWUiLCJsYXN0X2N5Y2xlX251bV9qb2JzIiwic2V0X2xhc3RfY3ljbGVfbnVtX2pvYnMiLCJsYXN0X2N5Y2xlX3RpbWUiLCJzZXRfbGFzdF9jeWNsZV90aW1lIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9lbmQiLCJzZXRfcnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydCIsInNldF9ydW5fZXZlcnlfY3ljbGVfc3RhcnQiLCJpbl9jeWNsZSIsInNldF9pbl9jeWNsZSIsImN5Y2xlX3N0YXJ0Iiwic2V0X2N5Y2xlX3N0YXJ0IiwiY3ljbGVfY291bnQiLCJzZXRfY3ljbGVfY291bnQiLCJ1bmNhdWdodF9leG5fdW53cmFwcGVkIiwic2V0X3VuY2F1Z2h0X2V4biIsInNldF9jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IiwibWFpbl9leGVjdXRpb25fY29udGV4dCIsInNldF9tYWluX2V4ZWN1dGlvbl9jb250ZXh0IiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyIsImxvd19wcmlvcml0eV9qb2JzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMiLCJqb2JfcG9vbCIsInNldF9qb2JfcG9vbCIsImNoZWNrX2FjY2VzcyIsInNldF9jaGVja19hY2Nlc3MiLCJyZWNvcmRfYmFja3RyYWNlcyQwIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDAiLCJjaGVja19pbnZhcmlhbnRzJDAiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiQwIiwieWllbGQkMSIsImV2ZW50X2FkZGVkX2hvb2skMCIsImpvYl9xdWV1ZWRfaG9vayQwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2skMCIsImV4dGVybmFsX2pvYnMkMCIsInRpbWVfc291cmNlJDAiLCJ0b3RhbF9jeWNsZV90aW1lJDAiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDAiLCJsYXN0X2N5Y2xlX3RpbWUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmQkMCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0JDAiLCJpbl9jeWNsZSQwIiwiY3ljbGVfc3RhcnQkMCIsImN5Y2xlX2NvdW50JDAiLCJ1bmNhdWdodF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzJDAiLCJsb3dfcHJpb3JpdHlfam9icyQwIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMkMCIsImpvYl9wb29sJDAiLCJjaGVja19hY2Nlc3MkMCIsImNoZWNrX2FjY2Vzc19mdW4iLCJqb2JfcG9vbF9mdW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19mdW4iLCJsb3dfcHJpb3JpdHlfam9ic19mdW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2Z1biIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9mdW4iLCJ1bmNhdWdodF9leG5fZnVuIiwiY3ljbGVfY291bnRfZnVuIiwiY3ljbGVfc3RhcnRfZnVuIiwiaW5fY3ljbGVfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2Z1biIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV9mdSIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9mdW4iLCJsYXN0X2N5Y2xlX3RpbWVfZnVuIiwibGFzdF9jeWNsZV9udW1fam9ic19mdW4iLCJ0b3RhbF9jeWNsZV90aW1lX2Z1biIsInRpbWVfc291cmNlX2Z1biIsImV4dGVybmFsX2pvYnNfZnVuIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfIiwiam9iX3F1ZXVlZF9ob29rX2Z1biIsImV2ZW50X2FkZGVkX2hvb2tfZnVuIiwieWllbGRfZnVuIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZnVuIiwiY2hlY2tfaW52YXJpYW50c19mdW4iLCJyZWNvcmRfYmFja3RyYWNlc19mdW4iLCJjaGVja19hY2Nlc3NfZ2VuIiwiam9iX3Bvb2xfZ2VuIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfZ2VuIiwibG93X3ByaW9yaXR5X2pvYnNfZ2VuIiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2Vyc19nZW4iLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwidW5jYXVnaHRfZXhuX2dlbiIsImN5Y2xlX2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDkiLCJjeWNsZV9zdGFydF9nZW4iLCJjb21waWxlX2FjYyQxMCIsImluX2N5Y2xlX2dlbiIsImNvbXBpbGVfYWNjJDExIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEyIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2dlIiwiY29tcGlsZV9hY2MkMTMiLCJydW5fZXZlcnlfY3ljbGVfZW5kX2dlbiIsImNvbXBpbGVfYWNjJDE0IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9nZW4iLCJjb21waWxlX2FjYyQxNSIsImxhc3RfY3ljbGVfdGltZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImxhc3RfY3ljbGVfbnVtX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJ0b3RhbF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE4IiwidGltZV9zb3VyY2VfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJleHRlcm5hbF9qb2JzX2dlbiIsImNvbXBpbGVfYWNjJDIwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfJDAiLCJjb21waWxlX2FjYyQyMSIsImpvYl9xdWV1ZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMiIsImV2ZW50X2FkZGVkX2hvb2tfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJ5aWVsZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluX2dlbiIsImNvbXBpbGVfYWNjJDI1IiwiY2hlY2tfaW52YXJpYW50c19nZW4iLCJjb21waWxlX2FjYyQyNiIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQxIiwiY29tcGlsZV9hY2MkMjciLCJyZWNvcmRfYmFja3RyYWNlc19nZW4iLCJjcmVhdGUkMiIsImNoZWNrX2FjY2Vzc18wMDciLCJqb2JfcG9vbF8wMDkiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzXzAxNSIsImxvd19wcmlvcml0eV9qb2JzXzAxMyIsIm5vcm1hbF9wcmlvcml0eV9qb2JzXzAxMSIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfMDE3IiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF8wMTkiLCJ1bmNhdWdodF9leG5fMDIxIiwiY3ljbGVfY291bnRfMDI3IiwiY3ljbGVfc3RhcnRfMDI5IiwiaW5fY3ljbGVfMDMxIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XzAzMyIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV8wMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfMDM3IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV8wMzkiLCJsYXN0X2N5Y2xlX3RpbWVfMDQxIiwibGFzdF9jeWNsZV9udW1fam9ic18wNDMiLCJ0b3RhbF9jeWNsZV90aW1lXzA0NSIsInRpbWVfc291cmNlXzA0NyIsImV4dGVybmFsX2pvYnNfMDQ5Iiwiam9iX3F1ZXVlZF9ob29rXzA1MyIsImV2ZW50X2FkZGVkX2hvb2tfMDU1IiwieWllbGRfMDU3IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fMDU5IiwiY2hlY2tfaW52YXJpYW50c18wNjEiLCJyZWNvcmRfYmFja3RyYWNlc18wNjUiLCJhcmdfMDY2IiwiYm5kc18wMDYiLCJhcmdfMDY0IiwiYm5kc18wMDYkMCIsImFyZ18wNjIiLCJibmRzXzAwNiQxIiwiYXJnXzA2MCIsImJuZHNfMDA2JDIiLCJhcmdfMDU4IiwiYm5kc18wMDYkMyIsImFyZ18wNTYiLCJibmRzXzAwNiQ0IiwiYXJnXzA1NCIsImJuZHNfMDA2JDUiLCJhcmdfMDUyIiwiYm5kc18wMDYkNiIsImFyZ18wNTAiLCJibmRzXzAwNiQ3IiwiYXJnXzA0OCIsImJuZHNfMDA2JDgiLCJhcmdfMDQ2IiwiYm5kc18wMDYkOSIsImFyZ18wNDQiLCJibmRzXzAwNiQxMCIsImFyZ18wNDIiLCJibmRzXzAwNiQxMSIsImFyZ18wNDAiLCJibmRzXzAwNiQxMiIsImFyZ18wMzgiLCJibmRzXzAwNiQxMyIsImFyZ18wMzYiLCJibmRzXzAwNiQxNCIsImFyZ18wMzQiLCJibmRzXzAwNiQxNSIsImFyZ18wMzIiLCJibmRzXzAwNiQxNiIsImFyZ18wMzAiLCJibmRzXzAwNiQxNyIsImFyZ18wMjgiLCJibmRzXzAwNiQxOCIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYXJnXzAyMiIsImJuZHNfMDA2JDE5IiwiYXJnXzAyMCIsImJuZHNfMDA2JDIwIiwiYXJnXzAxOCIsImJuZHNfMDA2JDIxIiwiYXJnXzAxNiIsImJuZHNfMDA2JDIyIiwiYXJnXzAxNCIsImJuZHNfMDA2JDIzIiwiYXJnXzAxMiIsImJuZHNfMDA2JDI0IiwiYXJnXzAxMCIsImJuZHNfMDA2JDI1IiwiYXJnXzAwOCIsImJuZHNfMDA2JDI2IiwidW5jYXVnaHRfZXhuJDAiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJyZXMxXzA3MCIsIm51bV9wZW5kaW5nX2pvYnMiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDEiLCJ1bm9yZGVyZWRfaXNfc3VibGlzdCIsInNtYWxsIiwibGFyZ2UiLCJ4IiwibCQwIiwieSIsImwiLCJjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCIsInRhYmxlIiwibGlzdCIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJ0X3JlZiIsImNoZWNrX2FjY2VzcyQxIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dCQxIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEiLCJ0bXBfY29udGV4dCIsIm9sZF9jb250ZXh0Iiwid2l0aF9leGVjdXRpb25fY29udGV4dCIsImNyZWF0ZV9qb2IiLCJnb3RfdW5jYXVnaHRfZXhuIiwiYXJnMV8wNzIiLCJhcmcwXzA3MSIsInJlczBfMDczIiwicmVzMV8wNzQiLCJzdGFydF9jeWNsZSIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkiLCJlIiwiZSQwIiwic3RhYmlsaXplIiwiY3JlYXRlX3RpbWVfc291cmNlIiwib3B0Iiwic3RoIiwidGltaW5nX3doZWVsX2NvbmZpZyIsIndhbGxfY2xvY2siLCJzZXRfcHJldiIsInBhcmFtIiwic2V0X25leHQiLCJydW4iLCJjcmVhdGUyIiwicnVuMSIsImV4ZWN1dGlvbl9jb250ZXh0MSIsInJ1bjIiLCJleGVjdXRpb25fY29udGV4dDIiLCJzY2hlZHVsZV9qb2JzIiwiYWRkIiwib2ZfbGlzdCIsImZpcnN0IiwibCQxIiwibCQyIiwicnVuJDAiLCJwcmV2JDAiLCJhY2MkMCIsImNlbGxfb2ZfaGFuZGxlciIsImluZGlyIiwic3F1YXNoIiwidCQzIiwidCQ0IiwiaW5kaXIkMSIsInQkNSIsImluZGlyJDAiLCJ0JDIiLCJhX2ludmFyaWFudCIsImhhbmRsZXIiLCJwZWVrIiwidmFsdWUiLCJpZl9lbXB0eV90aGVuX2ZhaWx3aXRoIiwiaXNfZW1wdHkiLCJpc19mdWxsIiwiZmlsbCIsInJlbW92ZV9oYW5kbGVyIiwiYWRkX2hhbmRsZXIiLCJoYW5kbGVyJDEiLCJoYW5kbGVyJDIiLCJydW4kMSIsImhhbmRsZXIkMCIsImhhc19oYW5kbGVycyIsInVwb24iLCJ1cG9uJDAiLCJjb25uZWN0IiwiYmluZF9yZXN1bHQiLCJiaW5kX3JocyIsImJpbmRfcmVzdWx0JDAiLCJpdmFyIiwiYmluZF9yaHNfY29udGVudHMiLCJpdmFyJDAiLCJsYXN0MSIsImxhc3QyIiwiaGFuZGxlcjEiLCJleGVjdXRpb25fY29udGV4dDIkMCIsInJ1bjIkMCIsImhhbmRsZXIxJDAiLCJ2JDAiLCJvZl9pdmFyIiwiaW52YXJpYW50X2EiLCJyZXR1cm4kMCIsImlzX2RldGVybWluZWQiLCJiaW5kIiwiaCIsInJlYWQiLCJmaWxsX2lmX2VtcHR5IiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJzZXhwX29mX2hvdyIsInZfMDAxIiwibmV2ZXIiLCJyZXR1cm4kMSIsInJldHVybiQyIiwicmV0dXJuJDMiLCJ1bml0IiwiYm90aCQwIiwiYTEiLCJhMiIsImRvbl90X3dhaXRfZm9yIiwiZjIiLCJmMSIsInByb2Nlc3MiLCJyZXN0IiwiY2hvaWNlIiwiZW5hYmxlZCIsImNob2ljZXMiLCJ1bnJlZ2lzdGVycyIsInJlYWR5IiwiY2hvb3NlX3Jlc3VsdCIsImNob2ljZXMkMCIsImNob2ljZXMkMSIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsImIiLCJ4cyIsInNlcW1hcCIsImJzIiwiYWxsIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJvayIsIm9mX2FfMDA1IiwieF8wMDYiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwieF8wMDciLCJjb2xsZWN0IiwiaXNfY2xvc2VkIiwiZmlsbF9leG4iLCJjbG9zZV9leG4iLCJjbG9zZV9pZl9vcGVuIiwiZXh0ZW5kIiwiZGVmZXJyZWQwIiwiZGVmZXJyZWQxIiwiaW1wb3J0MCIsImVycm9yIiwiZGV0YWNoIiwiZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyIsImhhbmRsZXJfc3RhdGVfcmVmIiwicnVuX2YiLCJiYWdfZWx0IiwiaW5uZXJfZXhuJDAiLCJpbm5lcl9leG4iLCJkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0iLCJ0YWlsIiwiZ2V0X25leHRfZXJyb3IiLCJkZXRhY2hfYW5kX2dldF9uZXh0X2Vycm9yIiwiZXh0cmFjdF9leG4iLCJjb2x1bW4iLCJtb25pdG9yJDEiLCJuYW1lJDEiLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwicmVzdCQwIiwicmVzdCQxIiwidDMiLCJyZXN0JDIiLCJyZXN0JDMiLCJ0cmFjZXMiLCJyZXN0JDQiLCJ0MSQwIiwicmVzdCQ1IiwidDIkMCIsInJlc3QkNiIsInQyJDEiLCJiYWNrdHJhY2UkMiIsImxpc3RfaWZfbm90X2VtcHR5IiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJleHRyYWN0X2V4biQwIiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwid2l0aGluX2NvbnRleHQiLCJjb250ZXh0Iiwid2l0aGluX2dlbiIsIndpdGhpbiIsIndpdGhpbl92Iiwid2l0aGluJDAiLCJzY2hlZHVsZV93aXRoX2RhdGEiLCJ3b3JrIiwidXBvbl93b3JrX2ZpbGxfaSIsInNjaGVkdWxlJDAiLCJwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsX2FuZF9maWxsIiwic3RyZWFtX2l0ZXIiLCJzdHJlYW0iLCJleG5zIiwiZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvIiwicmVzdWx0X2ZpbGxlciIsImhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCIsInRyeV93aXRoX2xvZ19leG4iLCJ0cnlfd2l0aCIsInN0aCQwIiwiZG9fZXh0cmFjdF9leG4iLCJzdGgkMSIsInN0aCQyIiwiaGFuZGxlX2V4biIsInJlcyIsInRyeV93aXRoX29yX2Vycm9yIiwidHJ5X3dpdGhfam9pbl9vcl9lcnJvciIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmciIsInIkMCIsImZpbmFsbHlfZXhuIiwiaGFuZGxlX2Vycm9ycyIsImNhdGNoX3N0cmVhbSIsImNhdGNoJDAiLCJjYXRjaF9lcnJvciIsImRlcHRoIiwibiQwIiwiZmlyc3RfZXhuIiwibG9vcCQwIiwibG9vcF9uZXh0IiwibG9vcF9uZXh0JDAiLCJjbG9zZWQiLCJ1bmZvbGQiLCJjb3B5X3RvX3RhaWwiLCJhcHBlbmQiLCJmaWx0ZXJfZGVwcmVjYXRlZCIsImZpbHRlcl9tYXBfZGVwcmVjYXRlZCIsImZpcnN0X24iLCJhdmFpbGFibGVfbm93Iiwic3BsaXQiLCJzdG9wIiwicmVhc29uX2Zvcl9zdG9wcGluZyIsInByZWZpeCIsImZpbmlzaCIsIm8iLCJmaW5kIiwiZm91bmQiLCJ1bmdyb3VwIiwiaW50ZXJsZWF2ZSIsIm51bV9vcGVuIiwiY2xvc2UiLCJvdXRlcl9jbG9zZWQiLCJ0YWtlX3VudGlsIiwieiIsIml0ZXJfZHVyYWJseSIsIml0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIiwiaXRlcl9kdXJhYmx5JDAiLCJvZl9mdW4iLCJzZXRfaXZhciIsImhhc19hbnlfd2FpdGVycyIsInNldF9oYXNfYW55X3dhaXRlcnMiLCJoYXNfYW55X3dhaXRlcnMkMCIsInJlcHIiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJvZl9hXzAwMSIsImhhc19hbnlfd2FpdGVyc18wMDMiLCJpdmFyXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwMiIsImFyZ18wMDQiLCJibmRzXzAwMiQwIiwiYnJvYWRjYXN0Iiwid2FpdCIsImhhc19hbnlfd2FpdGVycyQxIiwieF8wMDMiLCJhZHZhbmNlX2RpcmVjdGx5X2J5IiwiYnkiLCJ3YWl0X2ZvciIsInJ1bl9xdWV1ZWRfYWxhcm1zIiwid2Fsa19hbGFybXMiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQkMCIsImFkdmFuY2VfYnlfYWxhcm1zX2J5Iiwic3Bhbl90b190aW1lIiwicnVuX2F0X2ludGVybmFsIiwidGltZSIsInJlbW92ZV9hbGFybSIsIm9mX2FfMDA4Iiwib2ZfaF8wMDkiLCJhcmcwXzAxMCIsInJlczBfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNldF9zY2hlZHVsZWRfYXQiLCJudW1fZmlyZXNfdG9fc2tpcCIsInNldF9udW1fZmlyZXNfdG9fc2tpcCIsImZpcmVkIiwic2NoZWR1bGVkX2F0JDAiLCJudW1fZmlyZXNfdG9fc2tpcCQwIiwiZmlyZWQkMCIsIm9mX2FfMDE2Iiwib2ZfaF8wMTciLCJhbGFybV8wMTkiLCJmaXJlZF8wMjMiLCJudW1fZmlyZXNfdG9fc2tpcF8wMjUiLCJzY2hlZHVsZWRfYXRfMDI3IiwidGltZV9zb3VyY2VfMDI5IiwiYm5kc18wMTgiLCJibmRzXzAxOCQwIiwiYXJnXzAyNiIsImJuZHNfMDE4JDEiLCJhcmdfMDI0IiwiYm5kc18wMTgkMiIsImJuZHNfMDE4JDMiLCJibmRzXzAxOCQ0Iiwic2V4cF9vZl90X3VuaXQiLCJ4XzAzMSIsImZpcmVkJDEiLCJpbnZhcmlhbnRfaCIsInNjaGVkdWxlZF9hdF9mdW4iLCJhXzAzMyIsImJfMDM0IiwibnVtX2ZpcmVzX3RvX3NraXBfZnVuIiwiZmlyZWRfZnVuIiwieF8wMzIiLCJvZl9hXzAzNSIsIm9mX2hfMDM2IiwiYXJnMF8wMzciLCJyZXMwXzAzOCIsImFyZzBfMDM5IiwicmVzMF8wNDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwib2ZfYV8wNDUiLCJvZl9oXzA0NiIsImFyZzBfMDQ3IiwicmVzMF8wNDgiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwieF8wNTMiLCJhJDAiLCJvZl9hXzA1NCIsIm9mX2hfMDU1IiwiYXJnMF8wNTYiLCJyZXMwXzA1NyIsImFyZzBfMDU4IiwicmVzMF8wNTkiLCJhcmcxXzA2MyIsImFyZzBfMDYyIiwicmVzMF8wNjQiLCJyZXMxXzA2NSIsImlzX2luX3RpbWluZ193aGVlbCIsImFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZSIsInJ1bl9hdCQwIiwicnVuX2FmdGVyJDAiLCJhdF90aW1lcyIsIm5leHRfdGltZSIsImF0X3ZhcnlpbmdfaW50ZXJ2YWxzIiwiY29tcHV0ZV9zcGFuIiwic3RhcnQkMCIsImltbWVkaWF0ZWx5IiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsIm9mX2FfMDAyIiwicmVzMF8wMDQiLCJsZW5ndGhfMDA2IiwiYm5kc18wMDUiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwibWF4X2NvbmN1cnJlbnRfam9icyIsImNsZWFuZWQkMCIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQkMCIsImNhcGFjaXR5X2F2YWlsYWJsZSQwIiwibnVtX2pvYnNfcnVubmluZyQwIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0JDAiLCJqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UkMCIsIm1heF9jb25jdXJyZW50X2pvYnMkMCIsIm9mX2FfMDExIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0XzAxOSIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZV8wMTciLCJtYXhfY29uY3VycmVudF9qb2JzXzAxNSIsImNvbnRpbnVlX29uX2Vycm9yXzAxMyIsIm51bV9qb2JzX3J1bm5pbmdfMDIxIiwiY2FwYWNpdHlfYXZhaWxhYmxlXzAyMyIsImlzX2RlYWRfMDI1IiwiY2xlYW5zXzAyNyIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRfMDI5IiwiY2xlYW5lZF8wMzEiLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiYm5kc18wMTIkMiIsImJuZHNfMDEyJDMiLCJibmRzXzAxMiQ0Iiwib3V0Y29tZV8wMDkiLCJzdGFydF8wMDYiLCJibmRzXzAwNSQwIiwidl8wMDgiLCJibmRzXzAwNSQxIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2ZfYV8wMzQiLCJvZl9raW5kXzAzNSIsInhfMDM2IiwibnVtX2pvYnNfd2FpdGluZ190b19zdGFydCIsImNsZWFuX3Jlc291cmNlIiwia2lsbCIsImF0X2tpbGwiLCJjbGVhbmVkJDEiLCJzdGFydF9qb2IiLCJqb2JfcmVzb3VyY2UiLCJqb2JfcmVzb3VyY2VzIiwiY3JlYXRlX3dpdGgiLCJvdXRjb21lIiwiaW50ZXJuYWxfam9iIiwiaGFuZGxlX2VucXVldWVfcmVzdWx0IiwiZW5xdWV1ZSQwIiwiZW5xdWV1ZV9leGNsdXNpdmUiLCJkb25lIiwiZl9wbGFjZWhvbGRlciIsInNsb3QiLCJtb25hZF9zZXF1ZW5jZV9ob3ciLCJob3ciLCJtb25hZF9zZXF1ZW5jZV9ob3cyIiwicHJpb3Jfam9ic19kb25lIiwiYWxsX2R1bW15X2pvYnNfcnVubmluZyIsImR1bW15X2pvYnNfcnVubmluZyIsImNhcGFjaXR5X2F2YWlsYWJsZSQxIiwiaGFzX3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudCIsIm5leHRfdXBjb21pbmdfZXZlbnRfZXhuIiwiZXZlbnRfcHJlY2lzaW9uIiwiYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2siLCJoYW5kbGUiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2siLCJyZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2siLCJsc3QiLCJsc3QkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJxdWV1ZSIsInJ1bm5pbmciLCJ0aHJlYWRfc2FmZV9lbnF1ZXVlX2pvYiIsImN5Y2xlX3N0YXJ0X25zIiwiY3ljbGVfdGltZXNfbnMiLCJjeWNsZV90aW1lcyIsImV2ZW50X3ByZWNpc2lvbl9ucyIsImJvb2wiLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayQwIiwiYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rJDAiLCJyZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va18kMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEkMCIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJyaWdodF8wMDQiLCJsZWZ0XzAwMyIsInZfMDA2IiwiZm9sZGkiLCJzZXFtYXBpIiwiaXRlcmkiLCJtYXBpIiwiZmlsdGVyaSIsImJvb2xzIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImZpbmRfbWFwaSIsImF1eCIsImZpbmRpIiwiZWx0IiwiZXhpc3RzaSIsImZvcl9hbGxpIiwiZmlsdGVyX21hcCIsImZpbHRlciIsImNvbmNhdF9tYXAiLCJmaW5kX21hcCIsInRsIiwiaGQiLCJjaGFuZ2UiLCJ1cGRhdGUiLCJpdGVyX2tleXMiLCJhbGlzdCIsImFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyIiwiZm9sZF9yaWdodCIsImFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIiwic2VxdWVuY2UiLCJqb2JfbWFwIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInRodW5rIiwicmVyYWlzZSIsImdlbmVyYWwiLCJoYXNoYWJsZSIsImNvbWJpbmUiLCJlcnIiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImFwcGx5IiwiZTEiLCJlMiIsInN5bWJvbF9iaW5kJDAiLCJzeW1ib2xfbWFwJDAiLCJva19leG4iLCJvZl9leG4iLCJvZl9leG5fcmVzdWx0IiwibXNnIiwic2V4cF9vZiIsImVycm9yX3MiLCJlcnJvcl9zdHJpbmciLCJlcnJvcmYiLCJ0YWciLCJ0YWdfcyIsInRhZ19zX2xhenkiLCJ0YWdfYXJnIiwidW5pbXBsZW1lbnRlZCIsImNvbWJpbmVfZXJyb3JzIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCQwIiwidHJ5X3dpdGhfam9pbiIsInN0YXRlJDAiLCJmb2xkX21hcGkiLCJtYXBpX2YiLCJmb2xkX2YiLCJ0aHJvdHRsZSIsImMiLCJjJDEiLCJjJDAiLCJpJDAiLCJhY2N1bSIsIm1heWJlX3YiLCJzaG93X2RlYnVnX21lc3NhZ2VzIiwiY2hlY2tfaW52YXJpYW50IiwieF8wMDQiLCJ2YWx1ZXNfcmVhZCIsInNldF92YWx1ZXNfcmVhZCIsInZhbHVlc19yZWFkJDAiLCJwaXBlX2lkXzAwOSIsInZhbHVlc19yZWFkXzAxMSIsImJuZHNfMDA4IiwiYXJnXzAxNSIsImJuZHNfMDA4JDAiLCJ2XzAxMyIsImJuZHNfMDA4JDEiLCJibmRzXzAwOCQyIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbSIsInZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdSIsIndoZW5fc2VudF9kb3duc3RyZWFtIiwiY29uc3VtZXIiLCJ3YW50cyIsImNvbnN1bWVyJDAiLCJ3YW50cyQwIiwib2ZfYV8wMjkiLCJjb25zdW1lcl8wMzMiLCJ3YW50c18wMzEiLCJibmRzXzAzMCIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMSIsInZfMDIwIiwicmVzMF8wMjIiLCJhcmcxXzAyNSIsImFyZzBfMDI0IiwicmVzMF8wMjYiLCJ2XzAyMyIsInJlczFfMDI3IiwiYm5kc18wMzAkMCIsImZpbGxfd2l0aF9lb2YiLCJpJDEiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIiwicmVhZHlfMDM5IiwiZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF8wMzciLCJibmRzXzAzNiIsImJuZHNfMDM2JDAiLCJibmRzXzAzNiQxIiwiY29uc3VtZXJzIiwic2V0X2NvbnN1bWVycyIsImJsb2NrZWRfcmVhZHMiLCJibG9ja2VkX2ZsdXNoZXMiLCJwdXNoYmFjayIsInNldF9wdXNoYmFjayIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJzaXplX2J1ZGdldCQwIiwic2V4cF9vZl9waXBlIiwib2ZfYV8wNDEiLCJvZl9waGFudG9tXzA0MiIsImlkXzA0NCIsImluZm9fMDQ2IiwiYnVmZmVyXzA1MCIsInNpemVfYnVkZ2V0XzA1MiIsInB1c2hiYWNrXzA1NCIsIm51bV92YWx1ZXNfcmVhZF8wNTYiLCJyZWFkX2Nsb3NlZF8wNjQiLCJjbG9zZWRfMDYyIiwiYmxvY2tlZF9yZWFkc18wNjAiLCJibG9ja2VkX2ZsdXNoZXNfMDU4IiwiY29uc3VtZXJzXzA2NiIsInVwc3RyZWFtX2ZsdXNoZWRzXzA2OCIsImJuZHNfMDQzIiwiYXJnXzA2OSIsImJuZHNfMDQzJDAiLCJhcmdfMDY3IiwiYm5kc18wNDMkMSIsImFyZ18wNjUiLCJibmRzXzA0MyQyIiwiYXJnXzA2MyIsImJuZHNfMDQzJDMiLCJhcmdfMDYxIiwiYm5kc18wNDMkNCIsImFyZ18wNTkiLCJibmRzXzA0MyQ1IiwiYXJnXzA1NyIsImJuZHNfMDQzJDYiLCJhcmdfMDU1IiwiYm5kc18wNDMkNyIsImFyZ18wNTMiLCJibmRzXzA0MyQ4IiwiYXJnXzA1MSIsImJuZHNfMDQzJDkiLCJ2XzA0NyIsImFyZ18wNDkiLCJibmRfMDQ4IiwiYm5kc18wNDMkMTAiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMTEiLCJoYXNoIiwiaXNfcmVhZF9jbG9zZWQiLCJwdXNoYmFjayQxIiwieF8wNzMiLCJ4XzAzNSIsInNleHBfb2ZfcGhhbnRvbSIsIm9mX2FfMDc0IiwieF8wNzUiLCJzZXhwX29mX3BoYW50b20kMCIsIm9mX2FfMDc2IiwieF8wNzciLCJpZF9yZWYiLCJpbml0aWFsX2J1ZmZlciIsInZhbGlkYXRlX3NpemVfYnVkZ2V0IiwidXBkYXRlX3B1c2hiYWNrIiwieF8wNzgiLCJjbG9zZV9yZWFkIiwieF8wNzkiLCJmbHVzaCIsImNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4YyIsInciLCJjcmVhdGVfcmVhZGVyIiwiY2xvc2Vfb25fZXhjZXB0aW9uIiwiY3JlYXRlX3dyaXRlciIsInZhbHVlc193ZXJlX3JlYWQiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInN0YXJ0X3dyaXRlIiwieF8wODEiLCJ4XzA4MCIsImZpbmlzaF93cml0ZSIsImJsb2NrZWRfcmVhZCIsIml2YXIkMSIsInRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2siLCJ0cmFuc2Zlcl9pbiIsIndyaXRlIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlJDAiLCJ3cml0ZV93aGVuX3JlYWR5Iiwid3JpdGVfaWZfb3BlbiIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiIsImVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIiwieF8wODMiLCJzdGFydF9yZWFkIiwibGFiZWwiLCJ4XzA4NCIsImdlbl9yZWFkX25vdyIsImdldF9tYXhfcXVldWVfbGVuZ3RoIiwibWF4X3F1ZXVlX2xlbmd0aCQwIiwicmVhZF9ub3ciLCJyZWFkX25vdyQwIiwicmVhZCQwIiwicmVhZF9leG4iLCJ2YWx1ZXNfYXZhaWxhYmxlIiwicmVhZF9jaG9pY2UiLCJyZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXgiLCJyZWFkX2V4YWN0bHkiLCJudW1fdmFsdWVzIiwiYWxyZWFkeV9yZWFkIiwiZG93bnN0cmVhbV9mbHVzaGVkIiwidXBzdHJlYW1fZmx1c2hlZCIsImFkZF9jb25zdW1lciIsInBpcGVfaWQiLCJjb25zdW1lciQxIiwidXBzdHJlYW0iLCJkb3duc3RyZWFtIiwidXBzdHJlYW1fZmx1c2hlZCQwIiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsImZvbGRfZ2VuIiwiZmx1c2hlZCIsImZvbGRfd2l0aG91dF9wdXNoYmFjayIsIndpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yIiwiaXRlcl93aXRob3V0X3B1c2hiYWNrIiwibWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMCIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMSIsInJlbWFpbmluZyIsInJlbWFpbmluZyQwIiwiZHJhaW4iLCJkcmFpbl9hbmRfY291bnQiLCJzdW0iLCJyZWFkX2FsbCIsImlucHV0IiwidG9fc3RyZWFtX2RlcHJlY2F0ZWQiLCJvZl9zdHJlYW1fZGVwcmVjYXRlZCIsInRyYW5zZmVyIiwibmV4dF9kZWZlcnJlZCIsImNoZWNrX2Nsb3NlZF9sb29wX25leHQiLCJ0cmFuc2Zlcl9nZW4iLCJvdXRwdXQiLCJsaW5rIiwidW5saW5rIiwib3V0cHV0X2Nsb3NlZCIsInRyYW5zZmVyJDAiLCJ0cmFuc2Zlcl9pZCIsIm1hcF9nZW4iLCJjb25jYXRfbWFwX2xpc3QiLCJmaWx0ZXJfbWFwJDAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAkMCIsIngkMCIsImZvbGRpbmdfbWFwIiwiYWNjdW0kMCIsImVtcHR5Iiwic2luZ2xldG9uIiwid3JpdGVyIiwicmVhZGVyIiwic3ltYm9sIiwib2Zfc2VxdWVuY2UiLCJzZXF1ZW5jZSQxIiwic2VxdWVuY2UkMCIsInRvX3NlcXVlbmNlIiwiaW50ZXJsZWF2ZV9waXBlIiwiaW5wdXRzIiwib3V0cHV0X3dyaXRlciIsIm51bV9waXBlc19yZW1haW5pbmciLCJkZWNyX251bV9waXBlc19yZW1haW5pbmciLCJoZWFwIiwiaGFuZGxlX3JlYWQiLCJlb2Zfb3Jfb2siLCJwb3BfaGVhcF9hbmRfbG9vcCIsImluaXRpYWxfcHVzaCIsImNvbmNhdF9waXBlIiwiZm9yayIsInB1c2hiYWNrX3VzZXMiLCJ3cml0ZXIwIiwicmVhZGVyMCIsIndyaXRlcjEiLCJyZWFkZXIxIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCIsInNvbWVfcmVhZGVyX3dhc19jbG9zZWQkMCIsInN0aWxsX29wZW4iLCJmaWx0ZXJfb3BlbiIsInN0aWxsX29wZW4kMCIsInNldF9pbmZvIiwidmFsdWVfYXZhaWxhYmxlIiwic2V0X3ZhbHVlX2F2YWlsYWJsZSIsInRha2VuIiwiY3VycmVudF92YWx1ZSIsInZhbHVlX2F2YWlsYWJsZSQwIiwidGFrZW4kMCIsImN1cnJlbnRfdmFsdWUkMCIsInZhbHVlX2F2YWlsYWJsZSQxIiwidmFsdWVfYXZhaWxhYmxlX2Z1biIsImFfMDExIiwiYl8wMTIiLCJ0YWtlbl9mdW4iLCJjdXJyZW50X3ZhbHVlX2Z1biIsInhfMDEwIiwidGFrZW5fMDA2IiwiY3VycmVudF92YWx1ZV8wMDQiLCJ2YWx1ZV9hdmFpbGFibGVfMDA4IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInBlZWtfZXhuIiwieF8wMTMiLCJvZl9hXzAxNCIsInhfMDE1IiwieF8wMTciLCJ3cml0ZV9vbmx5IiwidGFrZV9ub25lbXB0eSIsInRha2Vfbm93X2V4biIsInRha2Vfbm93IiwidGFrZSIsInVwZGF0ZV9leG4iLCJ0YWtlbiQxIiwicHV0IiwicGlwZV93aGVuX3JlYWR5IiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJvbl9ldmVudCIsImFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdCIsImN1cnJlbnRfY29ubmVjdGlvbiIsImNvbm4iLCJjbG9zZV9maW5pc2hlZCQwIiwiaXNfY2xvc2VkJDAiLCJjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QiLCJzZXhwX29mX3QkMSIsInBhcmFtIiwiY29ubl8wMjMiLCJuZXh0X2Nvbm5lY3RfcmVzdWx0XzAyNiIsImRvbl90X3JlY29ubmVjdF8wMzQiLCJjbG9zZV9maW5pc2hlZF8wMzIiLCJjbG9zZV9zdGFydGVkXzAzMCIsImV2ZW50X2hhbmRsZXJfMDI4IiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYm5kc18wMTAiLCJhcmdfMDE0IiwiYm5kc18wMTAkMCIsImFyZ18wMTIiLCJibmRzXzAxMCQxIiwiYXJnXzAyOSIsImJuZHNfMDE2JDUiLCJhcmdfMDI3IiwiYm5kc18wMTYkNiIsInZfMDI1IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwic3RoIiwic3RoJDAiLCJyYW5kb21fc3RhdGUiLCJzdGgkMSIsInRpbWVfc291cmNlIiwiZXZlbnRfaGFuZGxlciIsImRlZmF1bHRfcmV0cnlfZGVsYXkiLCJub25fcmFuZG9taXplZF9kZWxheSIsInJldHJ5X2RlbGF5X3NwYW4iLCJyYW5kb21fc3RhdGUkMCIsInNwYW4iLCJzcGFuJDAiLCJkaXN0YW5jZSIsIndhaXQiLCJyZXRyeV9kZWxheSIsInByZXZpb3VzX2FkZHJlc3MiLCJwcmV2aW91c19lcnJvciIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJlIiwic2FtZV9hc19wcmV2aW91c19lcnJvciIsImFkZHIiLCJwcmV2aW91c19hZGRyZXNzJDAiLCJzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3MiLCJwb3MiLCJhbGwiLCJlcnJvcl9zb3VyY2VfMDA1IiwicmV0aXJlZF9rcmJfd29yZCIsImNvbXBhcmUiLCJ0X29mX3NleHAiLCJzZXhwXzAwNiIsInNleHBfb2ZfdCIsImdyb3VwIiwibWFnaWNfd29yZCIsIm1hZ2ljX251bWJlcl9iaW5fc2l6ZSIsImdlbl9tYWdpY19udW1iZXIiLCJ3b3JkIiwiYWNjIiwiYyIsIm1hZ2ljX251bWJlciIsInQiLCJwIiwiYnlfbWFnaWNfbnVtYmVyIiwibWFnaWNfd29yZHMiLCJtYWdpY19udW1iZXJzIiwibiIsIm1hZ2ljX251bWJlciQwIiwic2l6ZSIsInNleHBpZmllciIsImVxdWFsIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMDciLCJiXzAwOCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJjcmVhdGVfZXhuIiwicHJvdG9jb2wiLCJzdXBwb3J0ZWRfdmVyc2lvbnMiLCJnZXRfcHJvdG9jb2wiLCJ2ZXJzaW9ucyIsInByb3RvY29scyIsIm5lZ290aWF0ZSIsImFsbG93X2xlZ2FjeV9wZWVyIiwidXMiLCJwZWVyIiwidXNfdmVyc2lvbnMiLCJ1c19wcm90b2NvbCIsInBlZXJfdmVyc2lvbnMiLCJwZWVyX3Byb3RvY29sIiwidmVyc2lvbiIsIngiLCJtYXRjaGVzX21hZ2ljX3ByZWZpeCIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImYiLCJhbnlfbWFnaWNfcHJlZml4IiwiZ3JvdXAkMCIsImJpbl9zaXplX3QkMCIsImFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZSIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkZXJfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlJDAiLCJib3VuZGVkX2xpc3RfYmluX3NpemUiLCJiaW5fc2hhcGVfdCIsImJpbl90IiwiYmluX3NpemVfdCIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZV90IiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJ1ZiIsInBvc19yZWYiLCJ2bmF0MCIsIm9mX2ludF9leG4iLCJvZl93cml0ZXIiLCJ3cml0ZSIsInNpemUiLCJ3cml0ZSQwIiwicG9zIiwiYSIsImxlbiIsInBvcyQwIiwic2l6ZSQwIiwib2ZfdHlwZV9jbGFzcyIsImJpbl9hIiwidGVzdCIsInMiLCJiaWdzdHJpbmciLCJiaWdzdHJpbmdfdmVyc2lvbiIsIndyaXRlcl93aXRoX2xlbmd0aCIsIndpdGhfbGVuZ3RoX3ZlcnNpb24iLCJwb3ciLCJ4IiwiZGVzY3JpcHRpb25zIiwiZXJyb3Jfc291cmNlXzAxNyIsImdyb3VwIiwidjIiLCJ2MSIsInZpbnQiLCJ2X25hbWUiLCJ2X3ZlcnNpb24iLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsIm4iLCJoYXNoX2ZvbGRfdCIsImhzdiIsImFyZyIsImhzdiQwIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfMDA0IiwiZmllbGRfc2V4cHNfMDA1IiwibmFtZV8wMDYiLCJ2ZXJzaW9uXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwic2V4cF8wMDQkMCIsImZpZWxkX3NleHBzXzAxNCIsImZpZWxkX25hbWVfMDEyIiwidGFpbF8wMTkiLCJmaWVsZF9zZXhwXzAxMyQyIiwiZmllbGRfc2V4cF8wMTMiLCJ4XzAyMCIsImZpZWxkX3NleHBfMDEzJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMSIsImZ2YWx1ZV8wMTYiLCJ2ZXJzaW9uXzAwOSIsIm5hbWVfMDA3Iiwic2V4cF9vZl90IiwidmVyc2lvbl8wMjQiLCJuYW1lXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImFyZ18wMjMiLCJibmRzXzAyMSQwIiwic3VtbWFyaXplIiwidHMiLCJ2ZXJzaW9uIiwibmFtZSIsInN1bW1hcnkiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDMiLCJ0IiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDg2IiwiaWRfMDg0IiwiYXJnXzA4NyIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX3QkOSIsImJpbl9yZWFkX3QkMTAiLCJiaW5fcmVhZGVyX3QkNCIsImJpbl9yZWFkX25hdDBfdCIsImJpbl9yZWFkX25hdDBfdCQwIiwiYmluX3JlYWRlcl9uYXQwX3QiLCJiaW5fc2l6ZV9uYXQwX3QiLCJiaW5fd3JpdGVfbmF0MF90IiwiYmluX3dyaXRlcl9uYXQwX3QiLCJncm91cCQ1IiwiYmluX3NoYXBlX3QkMiIsInJlc3BvbnNlIiwiZXJyb3IiLCJiaW5fc2l6ZV90JDIiLCJzaXplX29mX3Jlc3BvbnNlIiwic2l6ZV9vZl9lcnJvciIsImJpbl93cml0ZV90JDIiLCJ3cml0ZV9yZXNwb25zZSIsIndyaXRlX2Vycm9yIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlIiwiYmluX3dyaXRlcl9lcnJvciIsImJpbl9yZWFkX3QkMTEiLCJvZl9yZXNwb25zZSIsIm9mX2Vycm9yIiwiYmluX3JlYWRfdCQxMiIsInZfdW51c2VkX3F1ZXJ5X2lkIiwidl9pbml0aWFsIiwiYmluX3JlYWRlcl90JDUiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlIiwiYmluX3JlYWRlcl9lcnJvciIsImJpbl90JDIiLCJiaW5fcmVzcG9uc2UiLCJiaW5fZXJyb3IiLCJzZXhwX29mX3QkMiIsIm9mX3Jlc3BvbnNlXzA4OCIsIm9mX2Vycm9yXzA4OSIsImluaXRpYWxfMDkzIiwidW51c2VkX3F1ZXJ5X2lkXzA5MSIsImFyZ18wOTQiLCJibmRzXzA5MCIsImFyZ18wOTIiLCJibmRzXzA5MCQwIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMiIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMiIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ1IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDYiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkX3QkMTQiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkX25hdDBfdCQxIiwiYmluX3JlYWRfbmF0MF90JDIiLCJiaW5fcmVhZGVyX25hdDBfdCQwIiwiYmluX3NpemVfbmF0MF90JDAiLCJiaW5fd3JpdGVfbmF0MF90JDAiLCJiaW5fd3JpdGVyX25hdDBfdCQwIiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMyIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ3IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDgiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX25lZWRzX2xlbmd0aCQzIiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMSIsIm9mX2FfMDk1IiwiYXJnMF8wOTYiLCJyZXMwXzA5NyIsImFyZzBfMDk4IiwicmVzMF8wOTkiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDMiLCJiaW5fcmVhZF9uYXQwX3QkNCIsImJpbl9yZWFkZXJfbmF0MF90JDEiLCJiaW5fc2l6ZV9uYXQwX3QkMSIsImJpbl93cml0ZV9uYXQwX3QkMSIsImJpbl93cml0ZXJfbmF0MF90JDEiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJsZW5ndGgiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJyZWFkX2ZvcmV2ZXIiLCJvbl9tZXNzYWdlIiwib25fZW5kX29mX2JhdGNoIiwicmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCIsImJpbl9yZWFkZXIiLCJwYWNrJDAiLCJjbG9zZSQwIiwiaXNfY2xvc2VkJDAiLCJtb25pdG9yIiwiYnl0ZXNfdG9fd3JpdGUiLCJmbHVzaGVkIiwicmVhZHlfdG9fd3JpdGUiLCJzZW5kX2Jpbl9wcm90IiwiYmluX3dyaXRlciIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ubyIsInN0b3BwZWQiLCJjYW5fc2VuZCIsInRyYW5zZmVyIiwib3B0IiwicGlwZSIsImYiLCJzdGgiLCJtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCIsImNvbnN1bWVyIiwiaXZhciIsIml0ZXIiLCJxIiwiZW5kX29mX3BpcGUiLCJ3cml0ZXJfMDA2IiwicmVhZGVyXzAwNCIsImFyZ18wMDciLCJibmRzXzAwMyIsImJuZHNfMDAzJDAiLCJjbG9zZSQxIiwiY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fIiwiY2FsbGJhY2tfMDAyIiwiY2xvc2VfY29ubmVjdGlvbiIsImNvbnRpbnVlJDAiLCJoYW5kbGVfZXhuIiwiY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIiwiZXhuIiwiY2FsbGJhY2siLCJ3cml0ZXJfMDA0IiwicXVlcnlfaWRfMDAyIiwicmVzcG9uZGVkXzAwNiIsImJuZHNfMDAxJDEiLCJjcmVhdGUiLCJxdWVyeV9pZCIsIndyaXRlciIsImxpZnQiLCJpbXBsIiwiYmluX21zZyIsInN0YXRlIiwic3RyIiwiaW1wbCQwIiwicmVzdWx0X21vZGUiLCJpbXBsJDEiLCJiaW5fcXVlcnkiLCJyZXN1bHRfbW9kZSQwIiwiaW1wbCQyIiwicmVzcCIsImltcGwkMyIsImJpbl91IiwiYmluX2kiLCJiaW5fcSIsImltcGwkNCIsImltcGwkNSIsImltcGwkNiIsInciLCJvZl9jb25uZWN0aW9uX3N0YXRlXzAwOCIsIm9uX2V4Y2VwdGlvbl8wMTgiLCJzaGFwZXNfMDE2IiwiZl8wMTQiLCJ2ZXJzaW9uXzAxMiIsInRhZ18wMTAiLCJhcmdfMDE5IiwiYm5kc18wMDkiLCJhcmdfMDE3IiwiYm5kc18wMDkkMCIsImFyZ18wMTUiLCJibmRzXzAwOSQxIiwiYXJnXzAxMyIsImJuZHNfMDA5JDIiLCJhcmdfMDExIiwiYm5kc18wMDkkMyIsImRlc2NyaXB0aW9uIiwibGlmdCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiZGF0YSIsImFkZF9sZW4kMCIsImFkZF9sZW4kMSIsImUkMCIsImUiLCJhcmdfMDE4Iiwic3ltYm9sIiwiZGVmZXJfcmVzdWx0IiwiZCIsImQkMCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAzMCIsImJuZHNfMDA4IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmdfMDI0IiwiYm5kc18wMDgkMCIsImFyZ18wMjIiLCJibmRzXzAwOCQxIiwiYXJnXzAyMCIsImJuZHNfMDA4JDIiLCJibmRzXzAwOCQzIiwiYXJnXzAxNiIsImJuZHNfMDA4JDQiLCJhcmdfMDE0IiwiYm5kc18wMDgkNSIsImFyZ18wMTIiLCJibmRzXzAwOCQ2IiwiYXJnXzAxMCIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJpZCIsInJlc3VsdCIsInNleHAiLCJ4XzAzNCIsIndyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX2RhdGEiLCJiaW5fd3JpdGVfdm9pZCIsImJ1ZmZlciIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hcyIsImJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIiwic3RyX2xlbiIsIm5leHQiLCJiaW5fc2l6ZV9uYXQwX2hlYWRlciIsImhlYWRlcl9wcmVmaXgiLCJkYXRhX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuIiwic3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuIiwiYmluX3dyaXRlX25hdDBfaGVhZGVyIiwiYmluX3dyaXRlcl9uYXQwX2hlYWRlciIsImJpbl9zaXplX21lc3NhZ2UiLCJiaW5fd3JpdGVfbWVzc2FnZSIsImJpbl93cml0ZXJfbWVzc2FnZSIsImJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyIsImluc3RhbmNlIiwiY2xvc2VkIiwid3JpdGVfZW9mIiwid3JpdGVfbWVzc2FnZSQwIiwic3RyZWFtX3dyaXRlciIsImNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbiIsImdyb3VwcyIsImVsZW1lbnRfaW5fZ3JvdXAiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQwIiwiaW5zdGFuY2UkMCIsIndyaXRlJDEiLCJtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24iLCJvbl9leGNlcHRpb24iLCJhcHBseV9pbXBsZW1lbnRhdGlvbiIsImltcGxlbWVudGF0aW9uIiwicXVlcnkiLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJiaW5fcXVlcnlfcmVhZGVyIiwicXVlcnlfY29udGVudHMiLCJleG4kMCIsImYkMCIsImxlbiQwIiwiZiQxIiwiYmluX3Jlc3BvbnNlX3dyaXRlciIsImJpbl9xdWVyeV9yZWFkZXIkMCIsInF1ZXJ5X2NvbnRlbnRzJDAiLCJkYXRhJDAiLCJleG4kMSIsImJhY2t0cmFjZSIsImYkMiIsInJlc3BvbmRlciIsImlzX3VuY2F1Z2h0X2V4biIsInJlc3VsdCQwIiwiY2hlY2tfcmVzcG9uZGVkIiwiciIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciQxIiwic3RyZWFtX3F1ZXJ5IiwibGVuJDEiLCJkYXRhJDEiLCJmJDMiLCJpbXBsX3dpdGhfc3RhdGUiLCJmJDYiLCJ3cml0ZXIkMCIsInJ1bl9pbXBsIiwic3BsaXRfb2siLCJoYW5kbGVfb2siLCJvayIsImluaXRpYWwiLCJmJDQiLCJwaXBlX3IiLCJmJDUiLCJmbHVzaCIsImFjYyIsInByb2R1Y2Vyc19mbHVzaGVkIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsInRhZyIsImlfcyIsImR1cHMiLCJpIiwiaW5zdGFudGlhdGUiLCJjb25uZWN0aW9uX3N0YXRlIiwidW5wYWNrZWQiLCJjcmVhdGVfZXhuIiwibnVsbCQwIiwiYWRkX2V4biIsImRlc2MiLCJhZGQiLCJpbXBsZW1lbnRhdGlvbnMkMCIsIm9uX3Vua25vd25fcnBjJDAiLCJjYWxsIiwiZXhwZXJ0IiwiY2Fubm90X3NlbmQiLCJ4XzAzOSIsIm1hcmtfcmVzcG9uZGVkIiwic2NoZWR1bGUiLCJoZWFkZXIiLCJoYW5kbGVfc2VuZF9yZXN1bHQkMCIsIndyaXRlX2JpZ3N0cmluZyIsIndyaXRlX2Jpbl9wcm90IiwibXNnIiwiZXJyb3Jfc291cmNlXzA0NiIsIm5lZ290aWF0ZSQwIiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzAyNCIsInJlczBfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJ0X29mX3NleHAkMCIsInNleHBfMDMzIiwiZmllbGRfc2V4cHNfMDM0IiwidGltZW91dF8wMzUiLCJzZW5kX2V2ZXJ5XzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0MyIsImZpZWxkX25hbWVfMDQxIiwidGFpbF8wNDgiLCJmaWVsZF9zZXhwXzA0MiQyIiwiZmllbGRfc2V4cF8wNDIiLCJ4XzA0OSIsImZpZWxkX3NleHBfMDQyJDAiLCJmdmFsdWVfMDQ1IiwiZmllbGRfc2V4cF8wNDIkMSIsImZ2YWx1ZV8wNDQiLCJzZW5kX2V2ZXJ5XzAzOCIsInRpbWVvdXRfMDM2Iiwic2VuZF9ldmVyeV8wNTMiLCJ0aW1lb3V0XzA1MSIsImFyZ18wNTQiLCJibmRzXzA1MCIsImFyZ18wNTIiLCJibmRzXzA1MCQwIiwidl90aW1lb3V0Iiwidl9zZW5kX2V2ZXJ5Iiwic2VuZF9ldmVyeSIsInRpbWVvdXQiLCJzdGgkMCIsImhlYXJ0YmVhdF9jb25maWdfMDYzIiwiZGVzY3JpcHRpb25fMDYxIiwiaGVhcnRiZWF0X2NhbGxiYWNrc18wNjUiLCJsYXN0X3NlZW5fYWxpdmVfMDY3IiwiaGVhcnRiZWF0X2V2ZW50XzA4MyIsInRpbWVfc291cmNlXzA4MSIsImltcGxlbWVudGF0aW9uc19pbnN0YW5jZV8wNzkiLCJjbG9zZV9maW5pc2hlZF8wNzciLCJjbG9zZV9zdGFydGVkXzA3NSIsIm9wZW5fcXVlcmllc18wNzMiLCJ3cml0ZXJfMDcxIiwicmVhZGVyXzA2OSIsImFyZ18wODQiLCJibmRzXzA2MCIsImFyZ18wODIiLCJibmRzXzA2MCQwIiwiYXJnXzA4MCIsImJuZHNfMDYwJDEiLCJhcmdfMDc4IiwiYm5kc18wNjAkMiIsImFyZ18wNzYiLCJibmRzXzA2MCQzIiwiYXJnXzA3NCIsImJuZHNfMDYwJDQiLCJhcmdfMDcyIiwiYm5kc18wNjAkNSIsImFyZ18wNzAiLCJibmRzXzA2MCQ2IiwiYXJnXzA2OCIsImJuZHNfMDYwJDciLCJhcmdfMDY2IiwiYm5kc18wNjAkOCIsInRpbWVvdXRfMDU2Iiwic2VuZF9ldmVyeV8wNTgiLCJhcmdfMDU5IiwiYm5kc18wNTUiLCJhcmdfMDU3IiwiYm5kc18wNTUkMCIsImFyZ18wNjQiLCJibmRzXzA2MCQ5IiwiYXJnXzA2MiIsImJuZHNfMDYwJDEwIiwic2V4cF9vZl90X2h1bV93cml0ZXIiLCJ4XzA4NSIsImRpc3BhdGNoIiwicmVzcG9uc2VfaGFuZGxlciIsImJpbl93cml0ZXJfcXVlcnkiLCJtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyIsImRvX3NlbmQiLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImVycm9yJDAiLCJkdW1teV9idWZmZXIiLCJkdW1teV9yZWYiLCJjb250YWluc19tYWdpY19wcmVmaXgiLCJjcmVhdGUkMCIsImhhbmRzaGFrZV90aW1lb3V0IiwiaGVhcnRiZWF0X2NvbmZpZyIsInN0aCQxIiwic3RoJDIiLCJ0aW1lX3NvdXJjZSIsIndyaXRlciQxIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODgiLCJoZWFydGJlYXRfZnJvbV9ub3dfb24iLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJwZWVyIiwid2l0aF9jbG9zZSIsInRyYW5zcG9ydCIsImRpc3BhdGNoX3F1ZXJpZXMiLCJvbl9oYW5kc2hha2VfZXJyb3IiLCJoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIiwidCQwIiwic2VydmVyX3dpdGhfY2xvc2UiLCJvbl9oYW5kc2hha2VfZXJyb3IkMCIsImVycm9yX3NvdXJjZV8wMDkiLCJlcnJvcl9zb3VyY2VfMDI0Iiwic3ltYm9sJDAiLCJkaXNwYXRjaF9yYXciLCJjb25uIiwicXVlcnkkMCIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInNoYXBlcyIsImxzdCIsInNoYXBlIiwicXVlcnlfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQiLCJzaGFwZXMkMCIsImltcGxlbWVudCIsImltcGxlbWVudCQwIiwicmVzcG9uc2UkMCIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IiLCJkaXNwYXRjaCQwIiwiZGlzcGF0Y2hfZXhuIiwibWFrZV9kaXNwYXRjaCIsImRvX2Rpc3BhdGNoIiwicnBjX3RhZyIsImhhbmRsZV9yZXNwb25zZSIsImhhbmRsZV9lcnJvciIsInhfMDAyIiwiZGlzcGF0Y2gkMSIsInNjaGVkdWxlX2Rpc3BhdGNoIiwiaW1wbGVtZW50JDEiLCJpbXBsZW1lbnQkMiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uIiwiaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24kMCIsInZlcnNpb24kMCIsIm5hbWUkMCIsIm1zZ190eXBlX2lkIiwic2hhcGVzJDEiLCJkZXNjcmlwdGlvbiQwIiwiaW1wbGVtZW50JDMiLCJkaXNwYXRjaCQyIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciQwIiwiZGlzcGF0Y2gkMyIsImRpc3BhdGNoX2V4biQwIiwiaW1wbGVtZW50JDQiLCJkaXNwYXRjaCQ0Iiwic2NoZWR1bGVfZGlzcGF0Y2gkMCIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNyZWF0ZSQxIiwiY2xpZW50X3B1c2hlc19iYWNrIiwiYmluX2luaXRpYWxfcmVzcG9uc2UiLCJiaW5fdXBkYXRlX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2UiLCJhbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlIiwiY2xpZW50X3B1c2hlc19iYWNrJDAiLCJpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQiLCJ1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCIsImVycm9yX3Jlc3BvbnNlX3R5cGVfaWQiLCJtYWtlX2luaXRpYWxfbWVzc2FnZSIsImltcGxlbWVudF9nZW4iLCJpbXBsZW1lbnQkNSIsImMiLCJhYm9ydCIsInJlYWRfZXJyb3IiLCJoYW5kbGVyIiwiY29yZV9lcnIiLCJkaXNwYXRjaF9nZW4iLCJtYWtlX3VwZGF0ZV9oYW5kbGVyIiwiaW5pdGlhbF9zdGF0ZSIsImluaXRpYWxfaGFuZGxlciIsImVyciQxIiwiaW5pdGlhbF9tc2ciLCJpbml0aWFsJDAiLCJleHRyYSIsImhhbmRsZXIkMCIsImJpbl9yZWFkZXJfdXBkYXRlIiwiZXJyJDQiLCJlcnIkMyIsImVyciQyIiwiZGlzcGF0Y2gkNSIsImluaXQiLCJwaXBlX21ldGFkYXRhIiwicGlwZV93IiwiY3JlYXRlJDIiLCJiaW5fcXVlcnkkMCIsImJpbl9yZXNwb25zZSQwIiwiaW1wbGVtZW50JDYiLCJjcmVhdGUkMyIsImluaXRpYWxfc2l6ZSIsImNyZWF0ZSQ0IiwiYiIsImJ1ZmZlciQwIiwib25lIiwib25lJDAiLCJ3cml0ZXJfZWxlbWVudF9pbl9ncm91cCIsImdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIiwicmVtb3ZlIiwidG9fbGlzdCIsImZsdXNoZWRfb3JfY2xvc2VkIiwiZGlyZWN0X3N0cmVhbV93cml0ZXIiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrJDEiLCJpbXBsZW1lbnRfZGlyZWN0IiwiZGlzcGF0Y2gkNiIsIm1ldGFkYXRhIiwiZGlzcGF0Y2hfZXhuJDEiLCJwaXBlX2FuZF9pZCIsImRpc3BhdGNoX2l0ZXIiLCJuYW1lJDEiLCJ2ZXJzaW9uJDEiLCJkZXNjcmlwdGlvbiQxIiwicXVlcnlfdHlwZV9pZCQwIiwiZXJyb3JfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQkMCIsImNyZWF0ZSQ1IiwiYmluX3N0YXRlIiwiYmluX3VwZGF0ZSIsImJpbl9xdWVyeSQxIiwiYmluX2Vycm9yJDAiLCJkaXNwYXRjaCQ3IiwidXBkYXRlX3IiLCJuYW1lJDIiLCJ2ZXJzaW9uJDIiLCJkZXNjcmlwdGlvbiQyIiwicXVlcnlfdHlwZV9pZCQxIiwic3RhdGVfdHlwZV9pZCIsInVwZGF0ZV90eXBlX2lkIiwiZXJyb3JfdHlwZV9pZCQwIiwiZGVzY3JpcHRpb24kMyIsInJwYyIsInJwYyQwIiwicnBjJDEiLCJycGMkMiIsInRoZV9ycGMiLCJub3RfdGhlX3JwYyIsInJwY19uYW1lJDAiLCJpbnB1dCIsImNvbnZlcnQiLCJmYWlsZWRfY29udmVyc2lvbiIsImFyZzNfMDA2IiwiYXJnMl8wMDUiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwicmVzMF8wMDciLCJ2XzAwMSIsInJlczFfMDA4Iiwidl8wMDIiLCJyZXMyXzAwOSIsInJlczNfMDEwIiwibXVsdGlwbGVfcmVnaXN0cmF0aW9ucyIsImFyZzFfMDE0Iiwidl8wMTEiLCJ2XzAxMiIsInJlczFfMDE2IiwiYWRhcHRlciIsImFkYXB0ZXJzIiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczFfMDI0IiwiYWRhcHRlcnMkMCIsImFkZF9ycGNfdmVyc2lvbiIsIm9sZF9ycGMiLCJ1cGdyYWRlIiwiZG93bmdyYWRlIiwiYWRhcHQiLCJmbiIsImFkYXB0ZWQiLCJvbGRfcXVlcnkiLCJhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIiwidXBncmFkZV9vcl9lcnJvciIsImRvd25ncmFkZV9vcl9lcnJvciIsInZhbHVlIiwiYWRkX3ZlcnNpb24iLCJhZGRfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJyZWdpc3RyeSIsImltcGxlbWVudF9tdWx0aSIsImxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpbyIsImxvZ192ZXJzaW9uIiwicnBjcyIsInZlcnNpb25zIiwicSQwIiwiciQwIiwiaW1wbGVtZW50X211bHRpX2dlbiIsImltcGxlbWVudF9kaXJlY3RfbXVsdGkiLCJ3cmFwcGVkX21vZGVsX29mX3F1ZXJ5Iiwid3JhcHBlZF9lcnJvcl9vZl9tb2RlbCIsImNvbnZlcnRfZWx0IiwiZHN3IiwiY29udmVydF9waXBlIiwibW9kZWxfc3RhdGUiLCJzdGF0ZSQwIiwiYmluX3NoYXBlX3F1ZXJ5IiwiYmluX3NpemVfcXVlcnkiLCJiaW5fd3JpdGVfcXVlcnkiLCJiaW5fcmVhZF9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5JDAiLCJiaW5fcmVhZGVyX3F1ZXJ5IiwiYmluX3NoYXBlX3N0YXRlIiwiYmluX3NpemVfc3RhdGUiLCJiaW5fd3JpdGVfc3RhdGUiLCJiaW5fd3JpdGVyX3N0YXRlIiwiYmluX3JlYWRfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSQwIiwiYmluX3JlYWRlcl9zdGF0ZSIsImJpbl9zaGFwZV91cGRhdGUiLCJiaW5fc2l6ZV91cGRhdGUiLCJiaW5fd3JpdGVfdXBkYXRlIiwiYmluX3dyaXRlcl91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciIsImJpbl9zaXplX2Vycm9yIiwiYmluX3dyaXRlX2Vycm9yIiwiYmluX3JlYWRfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciQwIiwibW9kZWxfb2ZfcXVlcnkiLCJzdGF0ZV9vZl9tb2RlbCIsImVycm9yX29mX21vZGVsIiwidXBkYXRlX29mX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlIiwiYmluX3NpemVfcmVzcG9uc2UiLCJiaW5fd3JpdGVfcmVzcG9uc2UiLCJiaW5fcmVhZF9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlJDAiLCJyZXNwb25zZV9vZl9tb2RlbCIsImFkZCQwIiwiaW1wbHMiLCJtZW51IiwibWVudV9pbXBscyIsInN1cHBvcnRlZF9ycGNzIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwib2ZfZW50cmllcyIsImVudHJpZXMiLCJyZXF1ZXN0IiwiY29ubmVjdGlvbiIsImNyZWF0ZV9kaXJlY3RseSIsIm1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIiwiY2FsbGVyX3ZlcnNpb25zIiwiY2FsbGVlX3ZlcnNpb25zIiwiY2FsbGVlX21lbnUiLCJ3aXRoX3NwZWNpZmljX3ZlcnNpb24iLCJkaXNwYXRjaGVyIiwiYXJnMV8wMTgiLCJhcmcwXzAxNyIsInJlczFfMDIwIiwid2l0aF92ZXJzaW9uX21lbnUiLCJkaXNwYXRjaF9tdWx0aSIsImNvbm5fd2l0aF9tZW51IiwibXEiLCJxdWVyeV9vZl9tb2RlbCIsIm1vZGVsX29mX3Jlc3BvbnNlIiwiZGlzcGF0Y2hfaXRlcl9tdWx0aSIsImFib3J0X211bHRpIiwid3JhcHBlZF9xdWVyeV9vZl9tb2RlbCIsImNvbnZlcnRfcmVzdWx0IiwiY29udmVydF9vayIsIm1lc3NhZ2UiLCJ1IiwicnMiLCJtb2RlbF9vZl9zdGF0ZSIsIm1vZGVsX29mX2Vycm9yIiwibW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwiY2FsbGVlX21vZGVsX29mX3F1ZXJ5Iiwic3RhdGVfb2ZfY2FsbGVlX21vZGVsIiwiZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIiwidXBkYXRlX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9xdWVyeSQwIiwiYmluX3NpemVfcXVlcnkkMCIsImJpbl93cml0ZV9xdWVyeSQwIiwiYmluX3dyaXRlcl9xdWVyeSQwIiwiYmluX3JlYWRfcXVlcnkkMSIsImJpbl9yZWFkX3F1ZXJ5JDIiLCJiaW5fcmVhZGVyX3F1ZXJ5JDAiLCJiaW5fc2hhcGVfc3RhdGUkMCIsImJpbl9zaXplX3N0YXRlJDAiLCJiaW5fd3JpdGVfc3RhdGUkMCIsImJpbl93cml0ZXJfc3RhdGUkMCIsImJpbl9yZWFkX3N0YXRlJDEiLCJiaW5fcmVhZF9zdGF0ZSQyIiwiYmluX3JlYWRlcl9zdGF0ZSQwIiwiYmluX3N0YXRlJDAiLCJiaW5fc2hhcGVfdXBkYXRlJDAiLCJiaW5fc2l6ZV91cGRhdGUkMCIsImJpbl93cml0ZV91cGRhdGUkMCIsImJpbl93cml0ZXJfdXBkYXRlJDAiLCJiaW5fcmVhZF91cGRhdGUkMSIsImJpbl9yZWFkX3VwZGF0ZSQyIiwiYmluX3JlYWRlcl91cGRhdGUkMCIsImJpbl91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJxdWVyeV9vZl9jYWxsZXJfbW9kZWwiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwicmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlJDAiLCJiaW5fc2l6ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlX3Jlc3BvbnNlJDAiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlJDAiLCJiaW5fcmVhZF9yZXNwb25zZSQxIiwiYmluX3JlYWRfcmVzcG9uc2UkMiIsImJpbl9yZWFkZXJfcmVzcG9uc2UkMCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsInBpcGVfcmVhZCIsInhfMDA3Iiwib2ZfYV8wMDEiLCJidWZmZXJfMDA1IiwicGlwZV8wMDMiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlJDAiLCJ0b3RhbF9sZW4iLCJjb250aW51ZV9vcl93YWl0IiwibGVuZ3RoJDAiLCJzZXRfYnVmZmVyIiwicHJvY2Vzc19kYXRhIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSIsInByb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE1Iiwib2ZfYV8wMDkiLCJtb25pdG9yXzAxMyIsInBpcGVfMDExIiwiYm5kc18wMTAiLCJibmRzXzAxMCQwIiwiY2hlY2tfY2xvc2VkIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJjcmVhdGVfbWVzc2FnZSIsIm9uX21lc3NhZ2VfY291bnQiLCJnb3QiLCJzZXhwaWZpZXIiLCJlcXVhbCIsIm1lc3NhZ2UkMCIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMTYiLCJiXzAxNyIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJnb3QkMCIsInNleHBpZmllciQwIiwiZXF1YWwkMCIsImhlcmUkMCIsImNvbXBhcmF0b3IkMCIsIndyaXRlXzFfbXNnXzFfY2h1bmsiLCJ3cml0ZV8xX21zZ18zX2NodW5rIiwibXNnX2xlbiIsInNwbGl0X2F0IiwicGFydDEiLCJwYXJ0MiIsIndyaXRlXzJfbXNnXzFfY2h1bmsiLCJvbmVfbXNnIiwidHdvX21zZyIsIndyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZSIsIm51bSIsInN0b3BfYWZ0ZXJfb25fbWVzc2FnZSIsImFfMDIyIiwiYl8wMjMiLCJleHBlY3QiLCJhXzAyNiIsImJfMDI3Iiwib25lX21lc3NhZ2UiLCJ0d29fbWVzc2FnZXMiLCJvbmVfbWVzc2FnZV9wMSIsIm9uZV9tZXNzYWdlX3AyIiwicnBjX2Nvbm5lY3Rpb24iLCJjbG9zZV9maW5pc2hlZCQwIiwic3RyaW5nX2FmdGVyIiwicyIsIm4iLCJxdW90ZSIsImxlbiIsImJ1ZiIsImkiLCJjIiwib2ZfY2hhciIsImZ1bGxfc3BsaXQiLCJzdHIiLCJvbiIsInNlcCIsImxvb3AiLCJhY2MiLCJvZmZzZXQiLCJpbmRleCIsInRva2VuIiwic3BsaXQiLCJtYXgiLCJtYXgkMCIsInRva2VucyIsImxvb3AkMCIsInRyaW1fbGVmdF9zdWIiLCJsYXN0X2NoYXIiLCJjaGFycyIsImZpbmFsJDAiLCJsYXN0X2NoYXIkMCIsImkkMCIsImxhc3RfY2hhciQxIiwibmV3X2xlbiIsInNwbGl0X3RyaW1fbGVmdCIsInRyaW0iLCJ0cmltX2xlZnQiLCJub25fc3BhY2UiLCJmaW5kX2Zyb20iLCJvcHQiLCJwYXR0ZXJuIiwic3RoIiwic3RhcnQiLCJzdGFydCQwIiwicmVwbGFjZV9hbGwiLCJ3aXRoJDAiLCJwbGVuIiwic2xlbiIsImoiLCJyZXBsYWNlX2FsbF9hc3NvYyIsInRibCIsImZvdW5kIiwiZiQwIiwiZiIsInhzJDAiLCJ4JDEiLCJ4IiwiZngiLCJ4cyIsIngkMCIsImZ4JDAiLCJlIiwiaiQxIiwid2l0aCQyIiwicGF0dGVybiQxIiwiciIsIndpdGgkMSIsInBhdHRlcm4kMCIsImokMCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCIsImkkMSIsImFjYyQwIiwib2ZfYXJyYXkiLCJhIiwiYnl0ZXMiLCJ0b19hcnJheSIsImN1dCIsInNlcF9tYXgiLCJzX21heCIsImsiLCJsZWZ0X2VuZCIsInJpZ2h0X3N0YXJ0IiwicmN1dCIsInNlcF9zdGFydCIsImNob3BfcHJlZml4IiwicHJlZml4IiwicHJlZml4X2wiLCJzdHJpbmdfbCIsImRyb3AiLCJ0YWtlIiwiY3JlYXRlIiwic2l6ZSIsImVtcHR5IiwibGVuZ3RoIiwic3ViIiwiaW52YWxpZF9ib3VuZHMiLCJvcCIsImJ1ZmZlcl9sZW4iLCJvZmYiLCJsZW4iLCJtZXNzYWdlIiwiaW52YWxpZF9ib3VuZHNfYmxpdCIsInNyY19sZW4iLCJzcmNfb2ZmIiwiZHN0X2xlbiIsImRzdF9vZmYiLCJpbnZhbGlkX2JvdW5kc19tZW1jbXAiLCJidWYxX2xlbiIsImJ1ZjFfb2ZmIiwiYnVmMl9sZW4iLCJidWYyX29mZiIsImNvcHkiLCJ0IiwiZHN0Iiwic3Vic3RyaW5nIiwiYiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInMiLCJibGl0Iiwic3JjIiwiYmxpdF9mcm9tX3N0cmluZyIsImJsaXRfZnJvbV9ieXRlcyIsImJsaXRfdG9fYnl0ZXMiLCJtZW1jbXAiLCJidWYxIiwiYnVmMiIsIm1lbWNtcF9zdHJpbmciLCJtZW1jaHIiLCJidWYiLCJidWZfb2ZmIiwiY2hyIiwiYnVmX2xlbiIsImNhbWxfYmlnc3RyaW5nX3NldF8xNiIsImJzIiwiaSIsImNhbWxfYmlnc3RyaW5nX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX2dldF8xNiIsImNhbWxfYmlnc3RyaW5nX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX2dldF82NCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwieCIsInNldF9pbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQ2NF9iZSIsInNldF9pbnQ2NF9sZSIsImdldF9pbnQxNl9iZSIsImdldF9pbnQxNl9sZSIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCQwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50NjRfYmUiLCJnZXRfaW50NjRfbGUiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3NldF9pbnQxNl9sZSIsInVuc2FmZV9zZXRfaW50MzJfYmUiLCJ1bnNhZmVfc2V0X2ludDMyX2xlIiwidW5zYWZlX3NldF9pbnQ2NF9iZSIsInVuc2FmZV9zZXRfaW50NjRfbGUiLCJ1bnNhZmVfZ2V0X2ludDE2X2JlIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCQwIiwidW5zYWZlX2dldF9pbnQzMl9iZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInN0YXRlX3RvX29wdGlvbiIsIngiLCJ2IiwiZmFpbF90b19zdHJpbmciLCJtYXJrcyIsImVyciIsInN0YXRlX3RvX3Jlc3VsdCIsImNyZWF0ZSIsImJ1ZmZlciIsIm9mZiIsImxlbiIsImNvbW1pdHRlZF9ieXRlcyIsImxlbmd0aCIsInQiLCJjbGllbnRfY29tbWl0dGVkX2J5dGVzIiwicGFyc2VyX2NvbW1pdHRlZF9ieXRlcyIsImJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IiwicGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIiwiaW52YXJpYW50Iiwib2Zmc2V0X2luX2J1ZmZlciIsInBvcyIsImFwcGx5IiwiZiIsInVuc2FmZV9nZXRfY2hhciIsInVuc2FmZV9nZXRfaW50MTZfbGUiLCJ1bnNhZmVfZ2V0X2ludDMyX2xlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQ2NF9iZSIsImNvdW50X3doaWxlIiwiaSIsImxpbWl0IiwiY29tbWl0IiwiZmFpbF9rIiwiaW5wdXQiLCJtc2ciLCJzdWNjZWVkX2siLCJ0b19leHBvcnRlZF9zdGF0ZSIsImNvbnRpbnVlJDAiLCJjb21taXR0ZWQiLCJicyIsIm1vcmUiLCJ4JDAiLCJzIiwic2wiLCJpJDAiLCJwYXJzZSIsInAiLCJwYXJzZV9iaWdzdHJpbmciLCJpbnB1dCQwIiwicmV0dXJuJDAiLCJmYWlsIiwic3VjYyIsInN5bWJvbF9iaW5kIiwic3VjYyQwIiwic3ltYm9sX21hcCIsInN5bWJvbCIsIm0iLCJzeW1ib2wkMCIsInN1Y2MwIiwiaW5wdXQwIiwicG9zMCIsIm1vcmUwIiwic3VjYzEiLCJpbnB1dDEiLCJwb3MxIiwibW9yZTEiLCJsaWZ0IiwibGlmdDIiLCJtMSIsIm0yIiwic3VjYzIiLCJpbnB1dDIiLCJwb3MyIiwibW9yZTIiLCJsaWZ0MyIsIm0zIiwic3VjYzMiLCJpbnB1dDMiLCJwb3MzIiwibW9yZTMiLCJsaWZ0NCIsIm00Iiwic3VjYzQiLCJpbnB1dDQiLCJwb3M0IiwibW9yZTQiLCJzeW1ib2wkMSIsImEiLCJiIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsIm1hcmsiLCJmYWlsJDAiLCJzeW1ib2wkNCIsInEiLCJwb3MkMCIsIm1vcmUkMCIsInJldHVybiQxIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJsaWZ0MiQwIiwibGlmdDMkMCIsImxpZnQ0JDAiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwib2ZfYmlnc3RyaW5nIiwiYnVmIiwid3JpdGFibGVfc3BhY2UiLCJlbnN1cmUiLCJ0b19jb3B5Iiwib2xkX2xlbiIsIm5ld19sZW4iLCJzcGFjZSIsIm5ld19idWYiLCJ3cml0ZV9wb3MiLCJmZWVkX3N0cmluZyIsInN0ciIsImZlZWRfYmlnc3RyaW5nIiwiZmVlZF9pbnB1dCIsInNoaWZ0IiwibiIsImZvcl9yZWFkaW5nIiwidW5jb25zdW1lZCIsIm9wdCIsInN0aCIsIm9mX3VuY29uc3VtZWQiLCJmcm9tX3VuYnVmZmVyZWRfc3RhdGUiLCJidWZmZXJpbmciLCJjb25zdW1lZCIsImNvbnN1bWVkJDAiLCJ1bmNvbnN1bWVkJDAiLCJwYXJzZSQwIiwiaW5pdGlhbF9idWZmZXJfc2l6ZSIsImZlZWQiLCJzdGF0ZSIsImsiLCJidWZmZXJpbmckMCIsInN0YXRlX3RvX29wdGlvbiQwIiwic3RhdGVfdG9fcmVzdWx0JDAiLCJzdGF0ZV90b191bmNvbnN1bWVkIiwicHJvbXB0IiwiZGVtYW5kX2lucHV0IiwiZW5zdXJlX3N1c3BlbmRlZCIsImdvIiwidW5zYWZlX2FwcGx5IiwiYXRfZW5kX29mX2lucHV0IiwiZW5kX29mX2lucHV0IiwiYWR2YW5jZSIsImF2YWlsYWJsZSIsInVuc2FmZV9sb29rYWhlYWQiLCJwZWVrX2NoYXIiLCJwZWVrX2NoYXJfZmFpbCIsInNhdGlzZnkiLCJjIiwiY2hhciQwIiwibm90X2NoYXIiLCJjJDAiLCJhbnlfY2hhciIsImludDgiLCJwJDAiLCJhbnlfdWludDgiLCJwJDEiLCJhbnlfaW50OCIsInNraXAiLCJpbml0Iiwid2l0aF9idWZmZXIiLCJpbnB1dF9sZW4iLCJpbml0JDAiLCJjb3VudF93aGlsZTEiLCJzdWNjJDEiLCJmYWlsJDEiLCJzdHJpbmciLCJmJDAiLCJlIiwic3RyaW5nJDAiLCJzdHJpbmdfY2kiLCJza2lwX3doaWxlIiwidGFrZSIsIm4kMCIsInRha2VfYmlnc3RyaW5nIiwidGFrZV9iaWdzdHJpbmdfd2hpbGUiLCJ0YWtlX2JpZ3N0cmluZ193aGlsZTEiLCJ0YWtlX2JpZ3N0cmluZ190aWxsIiwicGVla19zdHJpbmciLCJ0YWtlX3doaWxlIiwidGFrZV93aGlsZTEiLCJ0YWtlX3RpbGwiLCJjaG9pY2UiLCJwcyIsImZhaWx1cmVfbXNnIiwiZml4X2RpcmVjdCIsInIiLCJmaXhfbGF6eSIsIm1heF9zdGVwcyIsInN0ZXBzIiwiZml4Iiwib3B0aW9uIiwiY29ucyIsInhzIiwibGlzdCIsInBzJDAiLCJjb3VudCIsImxvb3AiLCJtYW55IiwibWFueTEiLCJtYW55X3RpbGwiLCJzZXBfYnkxIiwic2VwX2J5Iiwic2tpcF9tYW55Iiwic2tpcF9tYW55MSIsImVuZF9vZl9saW5lIiwic2NhbiIsInN0YXRlJDAiLCJwYXJzZXIiLCJzY2FuJDAiLCJzY2FuX3N0YXRlIiwic2Nhbl9zdHJpbmciLCJjb25zdW1lX3dpdGgiLCJjb25zdW1lZF9iaWdzdHJpbmciLCJib3RoIiwibWFwIiwiYmluZCIsIm1hcDIiLCJtYXAzIiwibWFwNCIsImQiLCJpbnQxNiIsImJ5dGVzIiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJjc3QkMCIsIml0ZXJfY29uY2F0IiwiZm4iLCJzZXAiLCJidWYiLCJsYXN0IiwicmVzdCIsImNvbXBhcmVfb3B0IiwiYyIsInQkMCIsInQiLCJhIiwiYiIsImNvbXBhcmVfbGlzdCIsImYiLCJ0JDIiLCJ0JDEiLCJ4cyIsIngiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwib3B0Iiwic3RoIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwic3RoJDAiLCJ1c2VyaW5mbyIsInN0aCQxIiwiaG9zdCIsInN0aCQyIiwic3RoJDMiLCJxdWVyeV9rZXkiLCJzdGgkNCIsInF1ZXJ5X3ZhbHVlIiwic3RoJDUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfZGVjb2RlZF9vcHQiLCJjb21wYXJlX2hvc3QiLCJoMSIsImgyIiwiaXAyIiwiaXAxIiwiaXAyJDAiLCJpcDEkMCIsImgyJDAiLCJoMSQwIiwiY29tcGFyZSQwIiwiYyQzIiwiYyQxIiwiYyQ0Iiwia3ZsJDAiLCJrdmwiLCJyYXciLCJyYXckMCIsImMkMiIsInZsIiwidmwkMCIsImskMCIsImVxdWFsIiwidW5jYXN0X29wdCIsIm5vcm1hbGl6ZSIsInNjaGVtIiwiaW5pdCIsImhvc3QkMCIsImhvc3QkMSIsInRvX3N0cmluZyIsInVyaSIsImFkZF9wY3Rfc3RyaW5nIiwiZmlyc3Rfc2VnbWVudCIsInEiLCJnZXRfZGVjb2RlZF9vcHQiLCJ3aXRoX3NjaGVtZSIsImgkMCIsImhvc3Rfd2l0aF9kZWZhdWx0IiwiZGVmYXVsdCQwIiwid2l0aF91c2VyaW5mbyIsInVzZXJpbmZvJDAiLCJ1c2VyIiwicGFzc3dvcmQiLCJwYXNzIiwid2l0aF9wYXNzd29yZCIsInJlc3VsdCIsIndpdGhfcG9ydCIsIndpdGhfcGF0aCIsInBhdGgkMCIsIndpdGhfZnJhZ21lbnQiLCJmcmFnIiwicXVlcnkiLCJ2ZXJiYXRpbV9xdWVyeSIsImdldF9xdWVyeV9wYXJhbSIsImdldF9xdWVyeV9wYXJhbSQwIiwid2l0aF9xdWVyeSIsInFfcyIsIndpdGhfcXVlcnkkMCIsImFkZF9xdWVyeV9wYXJhbSIsImFkZF9xdWVyeV9wYXJhbSQwIiwiYWRkX3F1ZXJ5X3BhcmFtcyIsImFkZF9xdWVyeV9wYXJhbXMkMCIsInJlbW92ZV9xdWVyeV9wYXJhbSIsInBhdGhfYW5kX3F1ZXJ5IiwibWF0Y2giLCJzY2hlbWUkMCIsInJlc29sdmUiLCJiYXNlIiwic2NoZW1lJDEiLCJzY2hlbSQwIiwicGF0aF9zdHIiLCJyZWxwYXRoIiwiYnBhdGgiLCJiaG9zdCIsInJicGF0aCIsImNhbm9uaWNhbGl6ZSIsInVyaSQwIiwicHAiLCJwcGYiLCJwcF9odW0iLCJzdHJpbmdfb2ZfY2hhciIsInN0cmluZ19vZl9jaGFyX2xpc3QiLCJjaGFycyIsImlzX2RpZ2l0IiwiaGV4X2RpZ2l0IiwiaGV4YWRlY2ltYWwiLCJjX2RvdCIsImNfYXQiLCJjX2NvbG9uIiwibnVtIiwiZGVjX29jdGV0IiwidGhyZWUiLCJvbmUiLCJpcHY0X2FkZHJlc3MiLCJhZnRlcl9kb3VibGVfY29sb24iLCJkb3VibGVfY29sb24iLCJjb3VudCIsImZpbGxlcl9sZW5ndGgiLCJwYXJ0IiwiaGV4X3BhcnQiLCJzcGxpdF93aXRoIiwidHMiLCJ6cyIsImZvcm1hdF9hZGRyIiwic2VnbWVudHMiLCJzZWdtZW50IiwiYmVmb3JlX2RvdWJsZV9jb2xvbiIsImJlZm9yZSIsInJlcyIsImlwdjYiLCJpcHY2X2FkZHJlc3MiLCJwY3QiLCJkaWdpdHMiLCJwY3RfZW5jb2RlZCIsInN1Yl9kZWxpbXMkMCIsInVucmVzZXJ2ZWQiLCJyZWdfbmFtZSIsImRlY29kZWQiLCJwb3J0JDAiLCJhdXRob3JpdHkiLCJxdWVyeSQwIiwiZnJhZ21lbnQkMCIsInVyaV9yZWZlcmVuY2UiLCJ1cmlfcmVmZXJlbmNlJDAiLCJkZWNvZGVfaG9zdCIsInBhcnNlZCIsInBhcnNlZCQwIiwibWFrZSIsInBhdGgkMSIsIndpdGhfaG9zdCIsIndpdGhfdXJpIiwid2l0aF9wYXRoX29wdCIsIm8iLCJ3aXRoX3F1ZXJ5X29wdCIsIndpdGgkMCIsIm9mX3N0cmluZyIsImxldCQwIiwidG9fdXJpIiwib2ZfdXJpIiwidW5zdXBwb3J0ZWRfc2NoZW1lIiwib2Zfc3RyaW5nJDAiLCJlcnJvciIsInRvX3N0cmluZyQwIiwibWFrZSQwIiwiaG9zdCQyIiwiZXJyb3Jfc291cmNlXzAwNiIsImVycm9yX3NvdXJjZV8wMTgiLCJkZWZhdWx0XzA4MSIsImVycm9yX3NvdXJjZV8wNTUiLCJkZWZhdWx0XzExMSIsImNvbXBvbmVudF9vZl9zZXhwIiwiY29tcG9uZW50X29mX3NleHAkMCIsInNleHBfMDA0IiwiYXRvbV8wMDIiLCJzZXhwX2FyZ3NfMDA1IiwiYXRvbV8wMDIkMCIsImFyZzBfMDE1IiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsInJlczJfMDEzIiwicmVzMF8wMTYiLCJzZXhwXzAxNyIsInNleHBfb2ZfY29tcG9uZW50Iiwidl8wMTkiLCJhcmcyXzAyMiIsImFyZzFfMDIxIiwiYXJnMF8wMjAiLCJyZXMwXzAyMyIsInJlczFfMDI0IiwicmVzMl8wMjUiLCJkZWZhdWx0XzA3MyIsImRlZmF1bHRfMDc1IiwiZGVmYXVsdF8wNzciLCJkZWZhdWx0XzA3OSIsImRlZmF1bHRfMDg0IiwidF9vZl9zZXhwIiwic2V4cF8wMjciLCJmaWVsZF9zZXhwc18wMjgiLCJzY2hlbWVfMDI5IiwidXNlcmluZm9fMDMxIiwiaG9zdF8wMzMiLCJwb3J0XzAzNSIsInBhdGhfMDM3IiwicXVlcnlfMDM5IiwiZnJhZ21lbnRfMDQxIiwiZHVwbGljYXRlc18wNDMiLCJleHRyYV8wNDQiLCJzZXhwXzAyNyQwIiwiZmllbGRfc2V4cHNfMDQ3IiwiZmllbGRfbmFtZV8wNDUiLCJ0YWlsXzA4NyIsImZpZWxkX3NleHBfMDQ2JDciLCJmaWVsZF9zZXhwXzA0NiIsInhfMDg4IiwiZmllbGRfc2V4cF8wNDYkMCIsImZ2YWx1ZV8wNjQiLCJmaWVsZF9zZXhwXzA0NiQxIiwiZnZhbHVlXzA2NiIsImZpZWxkX3NleHBfMDQ2JDIiLCJzZXhwXzA1NCIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwiZnZhbHVlXzA1NiIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDYwIiwiZmllbGRfc2V4cF8wNDYkNCIsImZ2YWx1ZV8wNTgiLCJmaWVsZF9zZXhwXzA0NiQ1IiwiZnZhbHVlXzA2MiIsImZpZWxkX3NleHBfMDQ2JDYiLCJmdmFsdWVfMDQ5Iiwic2NoZW1lXzAzMCIsInVzZXJpbmZvXzAzMiIsImhvc3RfMDM0IiwicG9ydF8wMzYiLCJwYXRoXzAzOCIsInF1ZXJ5XzA0MCIsImZyYWdtZW50XzA0MiIsInZfMDg1Iiwidl8wODUkMCIsInZfMDgzIiwidl8wODMkMCIsInZfMDgyIiwidl8wODIkMCIsInZfMDgwIiwidl8wODAkMCIsInZfMDc4Iiwidl8wNzgkMCIsInZfMDc2Iiwidl8wNzYkMCIsInZfMDc0Iiwidl8wNzQkMCIsImRlZmF1bHRfMDkxIiwiZGVmYXVsdF8wOTYiLCJkZWZhdWx0XzEwMSIsImRlZmF1bHRfMTA2IiwiZGVmYXVsdF8xMjQiLCJ0X29mX3NleHAkMCIsInNleHAiLCJ0Iiwic2V4cF9vZl90IiwiZnJhZ21lbnRfMTI1IiwicXVlcnlfMTE2IiwicGF0aF8xMTIiLCJwb3J0XzEwNyIsImhvc3RfMTAyIiwidXNlcmluZm9fMDk3Iiwic2NoZW1lXzA5MiIsImFyZ18xMjciLCJibmRzXzA4OSIsImJuZHNfMDg5JDAiLCJibmRfMTI2IiwiYm5kc18wODkkMSIsImFyZzFfMTE4IiwiYXJnMF8xMTciLCJyZXMwXzExOSIsInJlczFfMTIwIiwiYXJnXzEyMiIsImJuZF8xMjEiLCJhcmdfMTE0IiwiYm5kc18wODkkMiIsImJuZF8xMTMiLCJhcmdfMTA5IiwiYm5kc18wODkkMyIsImJuZF8xMDgiLCJhcmdfMTA0IiwiYm5kc18wODkkNCIsImJuZF8xMDMiLCJhcmdfMDk5IiwiYm5kc18wODkkNSIsImJuZF8wOTgiLCJhcmdfMDk0IiwiYm5kc18wODkkNiIsImJuZF8wOTMiLCJjb21wYXJlIiwiYSIsImIiLCJlcXVhbCIsImlzX3ZhbGlkX2ZpZWxkX25hbWUiLCJzZWVuIiwibmFtZSIsImFueV9vZl9zZXhwIiwicyIsImxpc3QkMCIsInYkMCIsIm5hbWUkMSIsInNlZW4kMiIsInJldl9hY2MiLCJsaXN0IiwicmVzdCIsInJldl9hY2MkMCIsInNlZW4kMCIsInJlc3QkMCIsInYiLCJuYW1lJDAiLCJyZXZfYWNjJDEiLCJzZWVuJDEiLCJsIiwibG9nX3MiLCJzZXhwIiwibG9nX3NfYXNfc3RyaW5nIiwic2V4cF9vZl90IiwiZmllbGQyXzA0MyIsImZpZWxkMV8wNDEiLCJhcmdfMDQ0IiwiYm5kc18wNDAiLCJzb21lX25hbWVfMDE3IiwiYXJnXzAxOCIsImJuZHNfMDE2IiwiYXJnXzA0MiIsImJuZHNfMDQwJDAiLCJ0b19zdHJpbmciLCJhbnkiLCJzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMiLCJpIiwieF8wNDkiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMF8wNDciLCJyZXMxXzA0OCIsImNvbXBhcmVfY2xvc2VfZXZlbnRfY29kZSIsInNleHBfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImFsbF9vZl9jbG9zZV9ldmVudF9jb2RlIiwiY29tcGFyZSIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDgiLCJiXzAwOSIsImFjYyIsImwkMCIsImVudW1lcmF0ZV8wMTEiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwibCQyIiwiZW51bWVyYXRlXzAxMCIsImFjYyQyIiwiYWxsIiwibm9ybWFsX2Nsb3N1cmUiLCJvZl9pbnQiLCJjb2RlIiwidG9faW50IiwiY29kZSQwIiwieF8wMzEiLCJ4XzAzMCIsImNsaWVudCIsIm9wdCIsImhlYXJ0YmVhdF9jb25maWciLCJkZXNjcmlwdGlvbiIsImltcGxlbWVudGF0aW9ucyIsInN0aCIsInVyaSIsInNjaGVtZSIsInBvcnQiLCJwb3J0JDAiLCJob3N0IiwibWF0Y2gkMSIsInJlcyIsImgiLCJkZXNjcmlwdGlvbiQwIiwiZnJvbV9zZXJ2ZXJfdyIsImZyb21fc2VydmVyX3IiLCJ0b19zZXJ2ZXJfdyIsInRvX3NlcnZlcl9yIiwiZXJyb3IiLCJ0cmFuc3BvcnQiLCJjb25uZWN0aW9uIiwiZXhuIiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImltcGxlbWVudGF0aW9ucyQwIiwiZXhuJDEiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiYnVmZmVyIiwiZXhuJDAiLCJjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCIsImNsaWVudF9leG4iLCJjcmVhdGVfZnJvbV91cmkiLCJlcXVhbCQwIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJzZXhwX29mX3QkMSIsInhfMDA3IiwiY3JlYXRlX2Zyb21fdXJpX29wdGlvbiIsIm1ldGhvZF9zdHJpbmckMCIsInJlcXVlc3QiLCJvbl9wcm9ncmVzcyIsIm9uX3VwbG9hZF9wcm9ncmVzcyIsInVybCIsImhlYWRlcnMiLCJtZXRob2Rfd2l0aF9hcmdzIiwiYXJncyIsIm1ldGhvZF9zdHJpbmckMSIsInVybCQwIiwidmFsdWUiLCJyZXNwb25zZSIsImNvbnRlbnQiLCJnZXRfaGVhZGVyIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJib2R5IiwiYm9keSQwIiwiYiIsImQiLCJmZCIsImdldCIsImFyZ3VtZW50cyQwIiwicmVzcCIsInBvc3QiLCJyZWFkeV9zdGF0ZV9jaGFuZ2UiLCJjb21wbGV0ZSIsInNsZWVwIiwieWllbGQkMCIsImV4dHJhY3RfanNfZXJyb3IiLCJzdGF0ZSIsInRpbWVvdXRzIiwicnVuX2FmdGVyIiwiZiIsIm1zIiwibG9vcCIsInQiLCJuZXh0X3dha2V1cCIsIm5leHQiLCJub3ciLCJkX21zJDAiLCJlcnIiLCJlcnIkMCIsImRfbXMiLCJhdCIsInJ1bl90aW1lb3V0IiwicnVuIiwibG9nIiwiZXJyJDIiLCJleG4kMiIsImV4biQzIiwiZXJyJDEiLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwiY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0IiwicmlnaHQiLCJsZWZ0X2lzX25vbmUiLCJyaWdodF9pc19ub25lIiwiY3JlYXRlX2V4biIsIm9wdCIsIm51bV9sZWF2ZXMiLCJyZWR1Y2UiLCJzdGgiLCJudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwiLCJ2YWxpZGF0ZV9pbmRleCIsImxlbmd0aCIsInNldF9leG4iLCJjaGlsZF9pbmRleCIsInBhcmVudCIsImdldF9leG4iLCJ4XzAwMiIsImNvbXB1dGVfZXhuIiwic2V4cF9vZl90Iiwic3RlcHMiLCJyIiwiaW5pdCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDEiLCJzdGVwc18wMDUiLCJpbml0XzAwMyIsImJuZHNfMDAyIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJhcmdfMDA2IiwiYm5kc18wMDIkMCIsImFyZ18wMDQiLCJibmRzXzAwMiQxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ2YWx1ZSIsInQkMCIsImF0Iiwic3RlcHMkMSIsImluaXQkMSIsInN0ZXBzJDAiLCJpbml0JDAiLCJ0IiwiY29uc3RhbnQiLCJjcmVhdGVfZXhuIiwidGltZTIiLCJ0aW1lMSIsInhfMDExIiwiY3JlYXRlX2Zyb21fc2VxdWVuY2UiLCJjcmVhdGUiLCJsZW4iLCJsZW5ndGgiLCJ0Iiwic2V0Iiwic2V0X2V4biIsImkiLCJ4IiwiZ2V0IiwiaXNfc29tZSIsImlzX25vbmUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsIml0ZXIiLCJmIiwidiIsIml0ZXJpIiwiYmxpdCIsInNyYyIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY3JlYXRlIiwiaW5kZXgiLCJnZXQiLCJ0Iiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpc19ub25lIiwiaXNfc29tZSIsInNldCIsImJsb2NrIiwic2V4cF9vZl90Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsImtleXNfd2l0aF91bnVzZWRfZGF0YV8wMDYiLCJlbnRyeV9ieV9rZXlfMDA0IiwiYm5kc18wMDMiLCJhcmdfMDA5IiwiYm5kc18wMDMkMCIsImFyZ18wMDciLCJibmRzXzAwMyQxIiwiYXJnXzAwNSIsImJuZHNfMDAzJDIiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJyZXBsYWNlIiwiYWRkX2V4biIsInhfMDEwIiwiZmluZCIsImZpbmRfb3JfYWRkIiwiZGVmYXVsdCQwIiwidiIsInNleHBfb2ZfdCIsImNvbmNhdCIsImRlYnVnIiwidGFnIiwiYXJnMF8wMDEiLCJhcmcxXzAwMiIsInNleHBfb2ZfYSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJyZWFsbG9jIiwidCIsImxlbiIsImEiLCJuZXdfdCIsInJlYWxsb2MkMCIsInJlczBfMDA1IiwicmVzMF8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsImNyZWF0ZSIsImYiLCJvZl9jb21wYXJlIiwib2ZfZXF1YWwiLCJwb2x5X2VxdWFsIiwibmV2ZXIiLCJhbHdheXMiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwid2F0Y2hfZnVuIiwidCQwIiwic2V0X2F0X2Z1biIsInZhbHVlX2Z1biIsInhfMDExIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsImZvbGRfdmFsdWVfZnVuIiwiZ290IiwiZXhwZWN0Iiwic2V4cGlmaWVyIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInhfMDI4IiwidXBkYXRlJDAiLCJmX2ludmVyc2UiLCJ1cGRhdGUiLCJjb21wdXRlIiwicmVzdWx0IiwiZm9yY2VfZnVsbF9jb21wdXRlIiwiY2hpbGRfY2hhbmdlZCIsInhfMDMxIiwiY2hpbGRfaW5kZXgiLCJvbGRfdmFsdWVfb3B0IiwiY2hpbGRfYXRfaW5kZXgiLCJ4XzAwMSIsIm51bGwkMCIsImFsYXJtX3ZhbHVlIiwic2V0X2FsYXJtX3ZhbHVlIiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJhbGFybV92YWx1ZSQwIiwiYWxhcm0kMCIsIm1haW5fMDAzIiwiY2hpbGRfMDA1IiwiZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jIiwidmFsdWVfMDA5IiwidXBjb21pbmdfc3RlcHNfMDExIiwiYWxhcm1fMDE3IiwiYWxhcm1fdmFsdWVfMDE5IiwiY2xvY2tfMDIxIiwiYXJnXzAxOCIsImFyZzFfMDE0IiwicmVzMV8wMTYiLCJhcmdfMDEyIiwiYm5kc18wMDIkMyIsImJuZHNfMDAyJDQiLCJibmRzXzAwMiQ1IiwiYm5kc18wMDIkNiIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsInhfMDIzIiwiYWR2YW5jZSIsInRvIiwic3RlcHMkMCIsImExJDAiLCJhMSIsInN0ZXBzIiwic3RlcHMyIiwiYTIiLCJzdGVwX2F0Iiwib2ZfYWNjXzAwMiIsImNoaWxkcmVuXzAwOCIsImluaXRfMDA0IiwiYXJnXzAwOSIsImJuZHNfMDAzIiwiYXJnXzAwNyIsImJuZHNfMDAzJDAiLCJibmRzXzAwMyQxIiwieF8wMTAiLCJhdF8wMDQiLCJtYWluXzAwMiIsImFsYXJtXzAwNiIsImNsb2NrXzAwOCIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwiaW50ZXJ2YWwiLCJpbnRlcnZhbCQwIiwiaW50ZXJ2YWxfMDA2IiwiYmFzZV8wMDQiLCJhbGFybV8wMDgiLCJjbG9ja18wMTAiLCJhcmdfMDExIiwiYm5kc18wMDEkMyIsImludGVydmFsX2Z1biIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsInNldF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJyaHNfc2NvcGUiLCJzZXRfcmhzX3Njb3BlIiwibGhzX2NoYW5nZSIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyQwIiwicmhzX3Njb3BlJDAiLCJsaHNfY2hhbmdlJDAiLCJvZl9iXzAwMiIsIm1haW5fMDA0IiwibGhzX2NoYW5nZV8wMTAiLCJsaHNfMDA4IiwicmhzXzAxMiIsInJoc19zY29wZV8wMTQiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNfMDE2IiwiYm5kc18wMDMkMiIsImJuZHNfMDAzJDMiLCJibmRzXzAwMyQ0IiwiYm5kc18wMDMkNSIsInNhbWUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3Joc19mdW4iLCJub2RlIiwicmhzX3Njb3BlX2Z1biIsImxoc19jaGFuZ2VfZnVuIiwieF8wMTgiLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJleHBlY3QkMCIsImVxdWFsJDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJ0b3AiLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsImN1cnJlbnRfYnJhbmNoX2Z1biIsInRlc3RfY2hhbmdlX2Z1biIsInhfMDE1IiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsImJlZm9yZV9mdW4iLCJ4XzAxMyIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiYmluZF9yaHNfY2hpbGRfaW5kZXgiLCJmcmVlemVfY2hpbGRfaW5kZXgiLCJpZl9icmFuY2hfY2hpbGRfaW5kZXgiLCJqb2luX3Joc19jaGlsZF9pbmRleCIsIml0ZXJpX2NoaWxkcmVuIiwicmhzIiwiaSQwIiwidGVzdCIsImxocyIsInJocyQwIiwibm9kZTAiLCJjaGlsZCQwIiwiY2hpbGRyZW4kMSIsImkkMSIsIm5vZGUxIiwibm9kZTAkMCIsIm5vZGUyIiwibm9kZTEkMCIsIm5vZGUwJDEiLCJub2RlMyIsIm5vZGUyJDAiLCJub2RlMSQxIiwibm9kZTAkMiIsIm5vZGU0Iiwibm9kZTMkMCIsIm5vZGUyJDEiLCJub2RlMSQyIiwibm9kZTAkMyIsIm5vZGU1Iiwibm9kZTQkMCIsIm5vZGUzJDEiLCJub2RlMiQyIiwibm9kZTEkMyIsIm5vZGUwJDQiLCJub2RlNiIsIm5vZGU1JDAiLCJub2RlNCQxIiwibm9kZTMkMiIsIm5vZGUyJDMiLCJub2RlMSQ0Iiwibm9kZTAkNSIsIm5vZGU3Iiwibm9kZTYkMCIsIm5vZGU1JDEiLCJub2RlNCQyIiwibm9kZTMkMyIsIm5vZGUyJDQiLCJub2RlMSQ1Iiwibm9kZTAkNiIsIm5vZGU4Iiwibm9kZTckMCIsIm5vZGU2JDEiLCJub2RlNSQyIiwibm9kZTQkMyIsIm5vZGUzJDQiLCJub2RlMiQ1Iiwibm9kZTEkNiIsIm5vZGUwJDciLCJub2RlOSIsIm5vZGU4JDAiLCJub2RlNyQxIiwibm9kZTYkMiIsIm5vZGU1JDMiLCJub2RlNCQ0Iiwibm9kZTMkNSIsIm5vZGUyJDYiLCJub2RlMSQ3Iiwibm9kZTAkOCIsIm5vZGUxMCIsIm5vZGU5JDAiLCJub2RlOCQxIiwibm9kZTckMiIsIm5vZGU2JDMiLCJub2RlNSQ0Iiwibm9kZTQkNSIsIm5vZGUzJDYiLCJub2RlMiQ3Iiwibm9kZTEkOCIsIm5vZGUwJDkiLCJub2RlMTEiLCJub2RlMTAkMCIsIm5vZGU5JDEiLCJub2RlOCQyIiwibm9kZTckMyIsIm5vZGU2JDQiLCJub2RlNSQ1Iiwibm9kZTQkNiIsIm5vZGUzJDciLCJub2RlMiQ4Iiwibm9kZTEkOSIsIm5vZGUwJDEwIiwibm9kZTEyIiwibm9kZTExJDAiLCJub2RlMTAkMSIsIm5vZGU5JDIiLCJub2RlOCQzIiwibm9kZTckNCIsIm5vZGU2JDUiLCJub2RlNSQ2Iiwibm9kZTQkNyIsIm5vZGUzJDgiLCJub2RlMiQ5Iiwibm9kZTEkMTAiLCJub2RlMCQxMSIsIm5vZGUxMyIsIm5vZGUxMiQwIiwibm9kZTExJDEiLCJub2RlMTAkMiIsIm5vZGU5JDMiLCJub2RlOCQ0Iiwibm9kZTckNSIsIm5vZGU2JDYiLCJub2RlNSQ3Iiwibm9kZTQkOCIsIm5vZGUzJDkiLCJub2RlMiQxMCIsIm5vZGUxJDExIiwibm9kZTAkMTIiLCJub2RlMTQiLCJub2RlMTMkMCIsIm5vZGUxMiQxIiwibm9kZTExJDIiLCJub2RlMTAkMyIsIm5vZGU5JDQiLCJub2RlOCQ1Iiwibm9kZTckNiIsIm5vZGU2JDciLCJub2RlNSQ4Iiwibm9kZTQkOSIsIm5vZGUzJDEwIiwibm9kZTIkMTEiLCJub2RlMSQxMiIsIm5vZGUwJDEzIiwic2xvd19nZXRfY2hpbGQiLCJpbmRleCIsImFyZzFfMzA2IiwiYXJnMF8zMDUiLCJyZXMwXzMwNyIsInJlczFfMzA4IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luIiwic2V0X215X2NoaWxkX2luZGV4X2luX3BhcmVudF9hIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luIiwic2V0X215X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hIiwib2JzZXJ2ZXJzIiwic2V0X29ic2VydmVycyIsInNldF9vbGRfdmFsdWVfb3B0IiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwic2V0X25leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2giLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X25leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJwcmV2X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X3ByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X2hlaWdodCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwic2V0X25leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwiY3JlYXRlZF9pbiIsInNldF9jcmVhdGVkX2luIiwicGFyZW50MCIsInNldF9wYXJlbnQwIiwicGFyZW50MV9hbmRfYmV5b25kIiwic2V0X3BhcmVudDFfYW5kX2JleW9uZCIsIm51bV9wYXJlbnRzIiwic2V0X251bV9wYXJlbnRzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyIsInNldF9udW1fb25fdXBkYXRlX2hhbmRsZXJzIiwiY2hhbmdlZF9hdCIsInNldF9jaGFuZ2VkX2F0IiwiY3V0b2ZmIiwic2V0X2N1dG9mZiIsImtpbmQiLCJzZXRfa2luZCIsInZhbHVlX29wdCIsInNldF92YWx1ZV9vcHQiLCJyZWNvbXB1dGVkX2F0Iiwic2V0X3JlY29tcHV0ZWRfYXQiLCJpZCIsIm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbiQwIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luJDAiLCJvYnNlcnZlcnMkMCIsIm9sZF92YWx1ZV9vcHQkMCIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAkMCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAkMCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAkMCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0JDAiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZSQwIiwiY3JlYXRlZF9pbiQwIiwicGFyZW50MCQwIiwicGFyZW50MV9hbmRfYmV5b25kJDAiLCJudW1fcGFyZW50cyQwIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyQwIiwiY2hhbmdlZF9hdCQwIiwiY3V0b2ZmJDAiLCJraW5kJDAiLCJ2YWx1ZV9vcHQkMCIsInJlY29tcHV0ZWRfYXQkMCIsImlkJDAiLCJzdGF0ZV8wMDUiLCJpZF8wMDMiLCJyZWNvbXB1dGVkX2F0XzAwNyIsInZhbHVlX29wdF8wMDkiLCJraW5kXzAxMSIsImN1dG9mZl8wMTMiLCJjaGFuZ2VkX2F0XzAxNSIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfMDE3IiwibnVtX3BhcmVudHNfMDE5IiwicGFyZW50MV9hbmRfYmV5b25kXzAyMSIsInBhcmVudDBfMDIzIiwiY3JlYXRlZF9pbl8wMjUiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV8wMjciLCJoZWlnaHRfMDI5IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXzAzMSIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfMDMzIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcF8wMzUiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfMDMiLCJvbGRfdmFsdWVfb3B0XzA0MSIsIm9ic2VydmVyc18wNDMiLCJpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGkiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDQ3IiwiZm9yY2VfbmVjZXNzYXJ5XzA1MyIsInVzZXJfaW5mb18wNTUiLCJjcmVhdGlvbl9iYWNrdHJhY2VfMDU3IiwiYXJnXzA1OCIsImFyZ18wNTYiLCJhcmdfMDU0IiwiYXJnXzA1MiIsImFyZ18wNTAiLCJhcmdfMDQ4IiwiYXJnXzA0NiIsImFyZ18wNDQiLCJhcmdfMDQyIiwiYm5kc18wMDIkNyIsImFyZ18wNDAiLCJibmRzXzAwMiQ4IiwiYXJnXzAzOCIsImJuZHNfMDAyJDkiLCJhcmdfMDM2IiwiYm5kc18wMDIkMTAiLCJhcmdfMDM0IiwiYm5kc18wMDIkMTEiLCJhcmdfMDMyIiwiYm5kc18wMDIkMTIiLCJhcmdfMDMwIiwiYm5kc18wMDIkMTMiLCJhcmdfMDI4IiwiYm5kc18wMDIkMTQiLCJibmRzXzAwMiQxNSIsImJuZHNfMDAyJDE2IiwiYm5kc18wMDIkMTciLCJibmRzXzAwMiQxOCIsImJuZHNfMDAyJDE5IiwiYm5kc18wMDIkMjAiLCJibmRzXzAwMiQyMSIsImJuZHNfMDAyJDIyIiwiYm5kc18wMDIkMjMiLCJibmRzXzAwMiQyNCIsImJuZHNfMDAyJDI1IiwiYm5kc18wMDIkMjYiLCJwYWNrZWRfc2FtZSIsInVzZXJfaW5mbyIsIm90aGVyIiwic2V0X3VzZXJfaW5mbyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXoiLCJhdHRycyIsImVkZ2VfaXNfc3RhbGUiLCJwYXJlbnQiLCJpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGkiLCJpc19zdGFsZSIsImZvcmNlX3N0YWxlIiwiZm9yY2Vfc3RhbGUkMCIsIm5lZWRzX3RvX2JlX2NvbXB1dGVkIiwiaXNfaW5fcmVjb21wdXRlX2hlYXAiLCJpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwiZ2V0X3BhcmVudCIsIml0ZXJpX3BhcmVudHMiLCJoYXNfY2hpbGQiLCJoYXMiLCJoYXNfcGFyZW50IiwicGFyZW50JDAiLCJzaG91bGRfYmVfaW52YWxpZGF0ZWQiLCJsaHMkMCIsImZvbGRfb2JzZXJ2ZXJzIiwiYWMiLCJvYnNlcnZlciIsImFfMDYwIiwiYl8wNjEiLCJhXzA3MCIsImJfMDcxIiwicGFyZW50X2luZGV4IiwieCIsImFfMDY4IiwiYl8wNjkiLCJvYnNlcnZlcnNfZnVuIiwic3RhdGUiLCJvYnNlcnZpbmciLCJvbGRfdmFsdWVfb3B0X2Z1biIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF9mdSIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJwcmV2IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsImhlaWdodF9mdW4iLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV9mdW4iLCJjcmVhdGVkX2luX2Z1biIsInBhcmVudDBfZnVuIiwiYV8wNjYiLCJiXzA2NyIsInBhcmVudDFfYW5kX2JleW9uZF9mdW4iLCJhXzA2NCIsImJfMDY1IiwibnVtX3BhcmVudHNfZnVuIiwib25fdXBkYXRlX2hhbmRsZXJzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJldGEiLCJhXzA2MiIsImJfMDYzIiwiY2hhbmdlZF9hdF9mdW4iLCJjdXRvZmZfZnVuIiwia2luZF9mdW4iLCJ2YWx1ZV9vcHRfZnVuIiwicmVjb21wdXRlZF9hdF9mdW4iLCJpZF9mdW4iLCJ4XzA1OSIsInVuc2FmZV92YWx1ZSIsInZhbHVlX2V4biIsInhfMDcyIiwiZ2V0X2N1dG9mZiIsInNldF9jdXRvZmYkMCIsImlzX2NvbnN0Iiwib25fdXBkYXRlIiwib25fdXBkYXRlX2hhbmRsZXIiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzIiwicmVzdCQwIiwib25fdXBkYXRlX2hhbmRsZXIkMCIsInIkMCIsInIkMSIsInJlc3QiLCJzZXRfa2luZCQwIiwibWF4X251bV9wYXJlbnRzIiwic2V0X3BhcmVudCIsImxpbmsiLCJhZGRfcGFyZW50IiwibmV3X21heF9udW1fcGFyZW50cyIsIm1heF9udW1fY2hpbGRyZW4iLCJuZXdfbWF4X251bV9jaGlsZHJlbiIsInJlbW92ZV9wYXJlbnQiLCJsYXN0X3BhcmVudF9pbmRleCIsInN3YXBfY2hpbGRyZW5fZXhjZXB0X2luX2tpbmQiLCJjaGlsZDEiLCJjaGlsZDIiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJzYW1lX2FzX3BhY2tlZCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjAiLCJ4XzAyMiIsInhfMDIxIiwib25fdXBkYXRlX2V4biIsInhfMDI0IiwicHJldiQwIiwibmV4dCQwIiwieF8wMjUiLCJ4XzAwMiIsIm5hbWVzIiwibmFtZXMkMCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfMDk1Iiwic2V4cF9vZl9zdGF0dXMiLCJhcmcxXzAwNCIsInJlczFfMDA2IiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuIiwic2V0X2V4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1IiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsInNldF9jdXJyZW50bHlfcnVubmluZ19ub2RlIiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlJDAiLCJtYWtlX2NyZWF0b3IiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQxIiwiYWNjIiwibWFwIiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlXzAwOCIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsInNleHBfb2ZfdCQxIiwibnVtX3Zhcl9zZXRzIiwic2V0X251bV92YXJfc2V0cyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQwIiwic2V0X251bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjJDAiLCJudW1fbm9kZXNfcmVjb21wdXRlZCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZCIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZCIsInNldF9udW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJudW1fbm9kZXNfY3JlYXRlZCIsInNldF9udW1fbm9kZXNfY3JlYXRlZCIsIm51bV9ub2Rlc19jaGFuZ2VkIiwic2V0X251bV9ub2Rlc19jaGFuZ2VkIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYSIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwic2V0X251bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSIsInNldF9rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYSIsIndlYWtfaGFzaHRibHMiLCJvbmx5X2luX2RlYnVnIiwic2V0X29ubHlfaW5fZGVidWciLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiIsInNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwibmV3X29ic2VydmVycyIsImZpbmFsaXplZF9vYnNlcnZlcnMiLCJhbGxfb2JzZXJ2ZXJzIiwic2V0X2FsbF9vYnNlcnZlcnMiLCJudW1fYWN0aXZlX29ic2VydmVycyIsInNldF9udW1fYWN0aXZlX29ic2VydmVycyIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5IiwiYWRqdXN0X2hlaWdodHNfaGVhcCIsImN1cnJlbnRfc2NvcGUiLCJzZXRfY3VycmVudF9zY29wZSIsInN0YWJpbGl6YXRpb25fbnVtIiwic2V0X3N0YWJpbGl6YXRpb25fbnVtIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkIiwic3RhdHVzIiwic2V0X3N0YXR1cyIsIm51bV92YXJfc2V0cyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDEiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMiIsIm51bV9ub2Rlc19yZWNvbXB1dGVkJDAiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQkMCIsIm51bV9ub2Rlc19jcmVhdGVkJDAiLCJudW1fbm9kZXNfY2hhbmdlZCQwIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSQwIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkkMCIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UkMCIsIndlYWtfaGFzaHRibHMkMCIsIm9ubHlfaW5fZGVidWckMCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMkMCIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uJDAiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzJDAiLCJuZXdfb2JzZXJ2ZXJzJDAiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzJDAiLCJhbGxfb2JzZXJ2ZXJzJDAiLCJudW1fYWN0aXZlX29ic2VydmVycyQwIiwicHJvcGFnYXRlX2ludmFsaWRpdHkkMCIsImFkanVzdF9oZWlnaHRzX2hlYXAkMCIsInJlY29tcHV0ZV9oZWFwJDAiLCJjdXJyZW50X3Njb3BlJDAiLCJzdGFiaWxpemF0aW9uX251bSQwIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDAiLCJzdGF0dXMkMCIsIm1ha2VfY3JlYXRvciQwIiwic3RhdHVzX2Z1biIsInN0YWJpbGl6YXRpb25fbnVtX2Z1biIsImN1cnJlbnRfc2NvcGVfZnVuIiwicmVjb21wdXRlX2hlYXBfZnVuIiwiYWRqdXN0X2hlaWdodHNfaGVhcF9mdW4iLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9mdW4iLCJudW1fYWN0aXZlX29ic2VydmVyc19mdW4iLCJhbGxfb2JzZXJ2ZXJzX2Z1biIsImZpbmFsaXplZF9vYnNlcnZlcnNfZnVuIiwibmV3X29ic2VydmVyc19mdW4iLCJkaXNhbGxvd2VkX29ic2VydmVyc19mdW4iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZnVuIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZnVuIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvbmx5X2luX2RlYnVnX2Z1biIsIndlYWtfaGFzaHRibHNfZnVuIiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV9mIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZnVuIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9mIiwibnVtX25vZGVzX2NoYW5nZWRfZnVuIiwibnVtX25vZGVzX2NyZWF0ZWRfZnVuIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2Z1biIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2Z1biIsIm51bV92YXJfc2V0c19mdW4iLCJzdGF0dXNfZ2VuIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDEiLCJjb21waWxlX2FjYyQyIiwic3RhYmlsaXphdGlvbl9udW1fZ2VuIiwiY29tcGlsZV9hY2MkMyIsImN1cnJlbnRfc2NvcGVfZ2VuIiwiY29tcGlsZV9hY2MkNCIsInJlY29tcHV0ZV9oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJhZGp1c3RfaGVpZ2h0c19oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9nZW4iLCJjb21waWxlX2FjYyQ3IiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOCIsImFsbF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImZpbmFsaXplZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTAiLCJuZXdfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDExIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl9nZW4iLCJjb21waWxlX2FjYyQxNCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTUiLCJvbmx5X2luX2RlYnVnX2dlbiIsImNvbXBpbGVfYWNjJDE2Iiwid2Vha19oYXNodGJsc19nZW4iLCJjb21waWxlX2FjYyQxNyIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZyIsImNvbXBpbGVfYWNjJDE4IiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5X2ciLCJjb21waWxlX2FjYyQyMCIsIm51bV9ub2Rlc19jaGFuZ2VkX2dlbiIsImNvbXBpbGVfYWNjJDIxIiwibnVtX25vZGVzX2NyZWF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjIiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQzIiwiY29tcGlsZV9hY2MkMjUiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kNCIsImNvbXBpbGVfYWNjJDI2IiwibnVtX3Zhcl9zZXRzX2dlbiIsImNyZWF0ZSQxIiwibWFwJDEiLCJpdGVyJDEiLCJmb2xkJDEiLCJtYXBfcG9seSQwIiwiZm9yX2FsbCQxIiwiZXhpc3RzJDEiLCJ0b19saXN0JDEiLCJpdGVyJDIiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInRvX2xpc3QkMiIsIm1hcCQyIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQwIiwic2V4cF9vZl90JDIiLCJzdGF0dXNfMDE1Iiwic3RhYmlsaXphdGlvbl9udW1fMDE5IiwiY3VycmVudF9zY29wZV8wMjEiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV8wMjciLCJhZGp1c3RfaGVpZ2h0c19oZWFwXzAyNSIsInJlY29tcHV0ZV9oZWFwXzAyMyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzXzAyOSIsImFsbF9vYnNlcnZlcnNfMDMxIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc18wNDMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl8wNDEiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fMDM5IiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfMDM3IiwibmV3X29ic2VydmVyc18wMzUiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzXzAzMyIsIm9ubHlfaW5fZGVidWdfMDQ1Iiwid2Vha19oYXNodGJsc18wNDciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlXzAiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeV8wNTEiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5XzAiLCJudW1fbm9kZXNfY2hhbmdlZF8wNTUiLCJudW1fbm9kZXNfY3JlYXRlZF8wNTciLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfMDU5IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfMDYxIiwibnVtX3Zhcl9zZXRzXzA2NyIsImFyZ18wNjgiLCJibmRzXzAxNCIsImFyZ18wNjYiLCJibmRzXzAxNCQwIiwiYXJnXzA2NCIsImJuZHNfMDE0JDEiLCJhcmdfMDYyIiwiYm5kc18wMTQkMiIsImFyZ18wNjAiLCJibmRzXzAxNCQzIiwiYm5kc18wMTQkNCIsImJuZHNfMDE0JDUiLCJibmRzXzAxNCQ2IiwiYm5kc18wMTQkNyIsImJuZHNfMDE0JDgiLCJibmRzXzAxNCQ5IiwiYm5kc18wMTQkMTAiLCJibmRzXzAxNCQxMSIsImJuZHNfMDE0JDEyIiwiYm5kc18wMTQkMTMiLCJibmRzXzAxNCQxNCIsImJuZHNfMDE0JDE1IiwiYm5kc18wMTQkMTYiLCJibmRzXzAxNCQxNyIsImJuZHNfMDE0JDE4IiwiYm5kc18wMTQkMTkiLCJibmRzXzAxNCQyMCIsImJuZHNfMDE0JDIxIiwiYm5kc18wMTQkMjIiLCJibmRzXzAxNCQyMyIsImJuZHNfMDE0JDI0IiwiYm5kc18wMTQkMjUiLCJmaXJlZF9hbGFybV92YWx1ZXMiLCJzZXRfZmlyZWRfYWxhcm1fdmFsdWVzIiwiaGFuZGxlX2ZpcmVkIiwidGltaW5nX3doZWVsIiwiZmlyZWRfYWxhcm1fdmFsdWVzJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm5vdyQwIiwidGltaW5nX3doZWVsJDAiLCJtYWtlX2NyZWF0b3IkMSIsInRpbWluZ193aGVlbF9mdW4iLCJub3dfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImZpcmVkX2FsYXJtX3ZhbHVlc19mdW4iLCJ0aW1pbmdfd2hlZWxfZ2VuIiwibm93X2dlbiIsImhhbmRsZV9maXJlZF9nZW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkMyIsIml0ZXIkMyIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDQiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJzZXhwX29mX3QkMyIsIm5vd18wNzIiLCJ0aW1pbmdfd2hlZWxfMDcwIiwiZmlyZWRfYWxhcm1fdmFsdWVzXzA3NiIsImFyZ18wNzciLCJibmRzXzA2OSIsImFyZ18wNzUiLCJibmRzXzA2OSQwIiwiYXJnXzA3MyIsImJuZHNfMDY5JDEiLCJhcmdfMDcxIiwiYm5kc18wNjkkMiIsImludmFyaWFudCQxIiwibm93JDEiLCJjbG9jayIsInRpbWluZ193aGVlbF9sZW5ndGgiLCJudW1fc3RhYmlsaXplcyIsIml0ZXJfb2JzZXJ2ZXJzIiwiZGlyZWN0bHlfb2JzZXJ2ZWQiLCJpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIiwidF9vZl9zZXhwIiwic2V4cF8wNzkiLCJmaWVsZF9zZXhwc18wODAiLCJtYXhfbnVtX3BhcmVudHNfMDgxIiwicGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyIiwiZHVwbGljYXRlc18wODUiLCJleHRyYV8wODYiLCJzZXhwXzA3OSQwIiwiZmllbGRfc2V4cHNfMDg5IiwiZmllbGRfbmFtZV8wODciLCJ0YWlsXzA5OSIsImZpZWxkX3NleHBfMDg4JDIiLCJmaWVsZF9zZXhwXzA4OCIsInhfMTAwIiwiZmllbGRfc2V4cF8wODgkMCIsInNleHBfMDk0IiwiYXJnMV8wOTEiLCJhcmcwXzA5MCIsInJlczBfMDkyIiwicmVzMV8wOTMiLCJmdmFsdWVfMDk2IiwiZmllbGRfc2V4cF8wODgkMSIsImZ2YWx1ZV8wOTciLCJwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXIkMCIsIm1heF9udW1fcGFyZW50c18wODIiLCJzZXhwX29mX3QkNCIsIm1heF9udW1fcGFyZW50c18xMDIiLCJibmRzXzEwMSIsImFyZzFfMTA3IiwiYXJnMF8xMDYiLCJyZXMwXzEwOCIsInJlczFfMTA5IiwiYXJnXzEwNSIsImJuZHNfMTAxJDAiLCJhcmdfMTAzIiwiYm5kc18xMDEkMSIsInN0YXRzIiwibnVtX25lY2Vzc2FyeV9ub2RlcyIsIm1heF9udW1fcGFyZW50cyQwIiwibnVtX25vZGVzX2J5X251bV9wYXJlbnRzIiwibnVtX25vZGVzIiwiYW1fc3RhYmlsaXppbmciLCJyYWlzZWRfZXhuIiwiaW52YXJpYW50JDIiLCJpbnRlcm5hbF9vYnNlcnZlciIsInhfMTEwIiwicGFja2VkIiwiZW5zdXJlX25vdF9zdGFiaWxpemluZyIsImFsbG93X2luX3VwZGF0ZV9oYW5kbGVyIiwiYmFja3RyYWNlIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImFyZzFfMTEyIiwiYXJnMF8xMTEiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQxIiwicmVtb3ZlX2NoaWxkcmVuIiwicmVtb3ZlX2NoaWxkIiwiY2hlY2tfaWZfdW5uZWNlc3NhcnkiLCJiZWNhbWVfdW5uZWNlc3NhcnkiLCJwIiwidSIsInJlbW92ZV9hbGFybSIsImludmFsaWRhdGVfbm9kZSIsImludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaCIsInJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJmaXJzdF9ub2RlX29uX3JocyIsIm5ld19zY29wZSIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDEiLCJleHBlcnQiLCJhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2giLCJ3YXNfbmVjZXNzYXJ5IiwieF8xMTUiLCJiZWNhbWVfbmVjZXNzYXJ5IiwicnVuX3dpdGhfc2NvcGUiLCJzY29wZSIsInNhdmVkIiwiZXhuJDAiLCJ3aXRoaW5fc2NvcGUiLCJjaGFuZ2VfY2hpbGQiLCJvbGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJvbGRfY2hpbGQkMCIsImFkZF9hbGFybSIsInJlY29tcHV0ZSIsIm1heWJlX2NoYW5nZV92YWx1ZSIsIm9sZF9yaHMiLCJvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiY29weV9jaGlsZCIsIm9ubHlfZnJlZXplX3doZW4iLCJlbHNlJDAiLCJ0aGVuIiwiZGVzaXJlZF9icmFuY2giLCJtYWluJDEiLCJvbGRfcmhzJDAiLCJyaHMkMSIsInJocyQyIiwibjEiLCJjbG9jayQwIiwiYXQkMCIsImNsb2NrJDEiLCJjaGlsZCQxIiwic3RlcF9mdW5jdGlvbiIsInN0ZXBfZnVuY3Rpb25fdmFsdWUiLCJhdCQxIiwibjIiLCJuMSQwIiwibjMiLCJuMiQwIiwibjEkMSIsImYkMiIsIm40IiwibjMkMCIsIm4yJDEiLCJuMSQyIiwiZiQzIiwibjUiLCJuNCQwIiwibjMkMSIsIm4yJDIiLCJuMSQzIiwiZiQ0IiwibjYiLCJuNSQwIiwibjQkMSIsIm4zJDIiLCJuMiQzIiwibjEkNCIsImYkNSIsIm43IiwibjYkMCIsIm41JDEiLCJuNCQyIiwibjMkMyIsIm4yJDQiLCJuMSQ1IiwiZiQ2IiwibjgiLCJuNyQwIiwibjYkMSIsIm41JDIiLCJuNCQzIiwibjMkNCIsIm4yJDUiLCJuMSQ2IiwiZiQ3IiwibjkiLCJuOCQwIiwibjckMSIsIm42JDIiLCJuNSQzIiwibjQkNCIsIm4zJDUiLCJuMiQ2IiwibjEkNyIsImYkOCIsIm4xMCIsIm45JDAiLCJuOCQxIiwibjckMiIsIm42JDMiLCJuNSQ0IiwibjQkNSIsIm4zJDYiLCJuMiQ3IiwibjEkOCIsImYkOSIsIm4xMSIsIm4xMCQwIiwibjkkMSIsIm44JDIiLCJuNyQzIiwibjYkNCIsIm41JDUiLCJuNCQ2IiwibjMkNyIsIm4yJDgiLCJuMSQ5IiwiZiQxMCIsIm4xMiIsIm4xMSQwIiwibjEwJDEiLCJuOSQyIiwibjgkMyIsIm43JDQiLCJuNiQ1IiwibjUkNiIsIm40JDciLCJuMyQ4IiwibjIkOSIsIm4xJDEwIiwiZiQxMSIsIm4xMyIsIm4xMiQwIiwibjExJDEiLCJuMTAkMiIsIm45JDMiLCJuOCQ0IiwibjckNSIsIm42JDYiLCJuNSQ3IiwibjQkOCIsIm4zJDkiLCJuMiQxMCIsIm4xJDExIiwiZiQxMiIsIm4xNCIsIm4xMyQwIiwibjEyJDEiLCJuMTEkMiIsIm4xMCQzIiwibjkkNCIsIm44JDUiLCJuNyQ2IiwibjYkNyIsIm41JDgiLCJuNCQ5IiwibjMkMTAiLCJuMiQxMSIsIm4xJDEyIiwiZiQxMyIsIm4xNSIsIm4xNCQwIiwibjEzJDEiLCJuMTIkMiIsIm4xMSQzIiwibjEwJDQiLCJuOSQ1IiwibjgkNiIsIm43JDciLCJuNiQ4IiwibjUkOSIsIm40JDEwIiwibjMkMTEiLCJuMiQxMiIsIm4xJDEzIiwiZiQxNCIsImNoaWxkX2luZGV4JDAiLCJ1JDAiLCJjYW5fcmVjb21wdXRlX25vdyIsImIiLCJqIiwicmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uIiwieF8xMTYiLCJ1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMiLCJkaXNhbGxvd19mdXR1cmVfdXNlIiwiZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyIsIm9ic2VydmVyX2ZpbmFsaXplciIsImNyZWF0ZV9vYnNlcnZlciIsIm9wdCIsInN0aCIsInNob3VsZF9maW5hbGl6ZSIsImFkZF9uZXdfb2JzZXJ2ZXJzIiwib2xkX2FsbF9vYnNlcnZlcnMiLCJvbGRfb2JzZXJ2ZXJzIiwib2JzZXJ2ZXJfdmFsdWVfZXhuIiwieF8xMTciLCJvYnNlcnZlcl92YWx1ZSIsIm5vZGVfb25fdXBkYXRlIiwib2JzZXJ2ZXJfb25fdXBkYXRlX2V4biIsInNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIiwic2V0X3ZhciIsInJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyIsIndlYWtfaGFzaHRibCIsInN0YWJpbGl6ZV9zdGFydCIsInN0YWJpbGl6ZV9lbmQiLCJtYXRjaCQwIiwibm9kZV91cGRhdGUkMCIsInJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIiwic3RhYmlsaXplIiwic2V4cF9vZl90JDUiLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUiLCJjcmVhdGVfbm9kZV9pbiIsImNyZWF0ZV9ub2RlIiwiY3JlYXRlX25vZGVfdG9wIiwiY3JlYXRlX3ZhciIsInVzZV9jdXJyZW50X3Njb3BlIiwiY29uc3QkMCIsIm1hcCQ1IiwibWFwMiIsImJvdGgiLCJtYXAzIiwibWFwNCIsIm1hcDUiLCJtYXA2IiwibWFwNyIsIm1hcDgiLCJtYXA5IiwibWFwMTAiLCJtYXAxMSIsIm1hcDEyIiwibWFwMTMiLCJtYXAxNCIsIm1hcDE1IiwicHJlc2VydmVfY3V0b2ZmIiwiaW5wdXQiLCJvdXRwdXQiLCJkZXBlbmRfb24iLCJuZWNlc3NhcnlfaWZfYWxpdmUiLCJiaW5kMiIsInYyIiwidjEiLCJiaW5kMyIsInYzIiwiYmluZDQiLCJ2NCIsImlmJDAiLCJsYXp5X2Zyb21fZnVuIiwiZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6IiwibWVtb2l6ZV9mdW5fYnlfa2V5IiwiaGFzaGFibGUiLCJwcm9qZWN0X2tleSIsImluaXRpYWxfc2l6ZSIsInRhYmxlIiwia2V5IiwiYiQwIiwiYWxsIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIiwibnVtX2ludmFsaWQiLCJhY2N1bSIsIngkMCIsImZfaW52ZXJzZSQwIiwiYXRfbGVhc3Rfa19vZiIsImJvb2xfdG9faW50IiwibnVtX3RydWUiLCJleGlzdHMkNSIsImZvcl9hbGwkNSIsInN1bSIsInplcm8iLCJzdWIiLCJvcHRfc3VtIiwic3VtX2ludCIsInN1bV9mbG9hdCIsInNldF9mcmVlemUiLCJ0aW1lIiwiYWZ0ZXIiLCJzcGFuIiwibmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QiLCJiYXNlIiwidmFsdWVfYXQiLCJpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uIiwiYWR2YW5jZV9jbG9jayIsIm1haW4kMiIsImNyZWF0ZV9jbG9jayIsInRpbWluZ193aGVlbF9jb25maWciLCJzdGFydCIsImNyZWF0ZSQzIiwiQ29uZmlnIiwid2Vha19tZW1vaXplX2Z1bl9ieV9rZXkiLCJleHBlcnRfa2luZF9vZl9ub2RlIiwieF8xMTgiLCJjcmVhdGUkNCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIiwiY3VycmVudCIsImFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlXyIsInhfMTIwIiwieF8xMTkiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8kMCIsInhfMTIyIiwieF8xMjEiLCJtYWtlX3N0YWxlJDAiLCJlX29wdCIsImludmFsaWRhdGUiLCJhZGRfZGVwZW5kZW5jeSIsImRlcCIsInJlbW92ZV9kZXBlbmRlbmN5IiwiZWRnZSIsImVkZ2VfaW5kZXgiLCJsYXN0X2VkZ2UiLCJsYXN0X2VkZ2VfaW5kZXgiLCJvbl9jaGFuZ2UiLCJyZWR1Y2UiLCJyZWR1Y2VyIiwibGV2ZWxfYml0cyIsImNyZWF0ZV9pbnRlcm5hbCIsImRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkIiwic2V4cF9vZl9zdGF0ZV93aXRuZXNzIiwid2l0aGluIiwicGFjayIsInJldHVybiQwIiwibWFwMiQwIiwibWFwMyQwIiwibWFwNCQwIiwibWFwNSQwIiwibWFwNiQwIiwibWFwNyQwIiwibWFwOCQwIiwibWFwOSQwIiwibWFwMTAkMCIsIm1hcDExJDAiLCJtYXAxMiQwIiwibWFwMTMkMCIsIm1hcDE0JDAiLCJtYXAxNSQwIiwiYmluZDIkMCIsImJpbmQzJDAiLCJiaW5kNCQwIiwic3ltYm9sX21hcCIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCQwIiwic3ltYm9sX2JpbmQkMCIsImxhenlfZnJvbV9mdW4kMCIsIm1lbW9pemVfZnVuIiwiYXJyYXlfZm9sZCQwIiwicmVkdWNlX2JhbGFuY2VkIiwicmVwbGFjZSIsInhfMDE3IiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQwIiwiaW5jcl9zdGF0ZSQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQkMCIsImFsYXJtX3ByZWNpc2lvbiQwIiwid2F0Y2hfbm93IiwiYWR2YW5jZV9jbG9ja19ieSIsImZyZWV6ZSQwIiwid2hlbiIsImRlcGVuZF9vbiQwIiwic3RhYmlsaXplJDAiLCJhbV9zdGFiaWxpemluZyQwIiwib2ZfYV8wMTgiLCJhcmcwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJub2RlX3ZhbHVlIiwic2V4cF9vZl90JDYiLCJib3RoJDAiLCJ4MSIsIngyIiwibWFwMiQxIiwibWFwMyQxIiwibWFwNCQxIiwibWFwNSQxIiwibWFwNiQxIiwibWFwNyQxIiwibWFwOCQxIiwibWFwOSQxIiwibWFwMTAkMSIsIm1hcDExJDEiLCJtYXAxMiQxIiwibWFwMTMkMSIsIm1hcDE0JDEiLCJtYXAxNSQxIiwiYmluZDIkMSIsImJpbmQzJDEiLCJiaW5kNCQxIiwid2Vha19tZW1vaXplX2Z1biIsImRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSQwIiwicmV0dXJuJDEiLCJ3aXRoaW4kMCIsImNvbnN0JDEiLCJyZXR1cm4kMiIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwiYXJyYXlfZm9sZCQxIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic3RhYmlsaXplJDEiLCJhbV9zdGFiaWxpemluZyQxIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1Iiwid2l0aF9vbGQiLCJpIiwiZiIsIm9sZCIsImEiLCJiIiwidW5vcmRlcmVkX2ZvbGQiLCJvcHQiLCJ1cGRhdGUiLCJzcGVjaWFsaXplZF9pbml0aWFsIiwibWFwIiwiaW5pdCIsImFkZCIsInJlbW92ZSIsInN0aCIsImRhdGFfZXF1YWwiLCJzdGgkMCIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJrZXkiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwiYWNjIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJpbml0aWFsIiwib2xkX291dCIsIm9sZF9pbiIsImNoYW5nZSIsIm5ldyQwIiwib2xkJDAiLCJuZXckMSIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzIiwiaW5jcl9tYXAiLCJ1cGRhdGUkMSIsIm91dGVyX2tleSIsImlubmVyX2tleSIsImlubmVyX21hcCIsImRhdGEiLCJvbGRfaW5uZXJfbWFwIiwibmV3X2lubmVyX21hcCIsImRpZmYiLCJkYXRhX3JlbW92ZWQiLCJkYXRhX2FkZGVkIiwid2l0aF9jb21wYXJhdG9yIiwiZ2V0X2NvbXBhcmF0b3IiLCJ4Iiwid2l0aF9jb21wYXJhdG9yJDAiLCJvZl9zZXQiLCJzZXQiLCJjb21wYXJhdG9yIiwib2xkX2lucHV0Iiwib2xkX291dHB1dCIsIm5ld19pbnB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJuZXdfb3V0cHV0IiwiZ2VuZXJpY19tYXBpIiwid2l0bmVzcyIsImlucHV0IiwicmVzIiwib3V0cHV0X2RhdGEiLCJtYXBpIiwiZmlsdGVyX21hcGkiLCJmaWx0ZXJfbWFwIiwid2l0aF9vbGQyIiwiaTEiLCJpMiIsImExIiwiYTIiLCJtYXBpX2NvdW50IiwibmV3X2tleSIsIm4iLCJwcmV2X2tleSIsIm1hcF9jb3VudCIsIm1pbl9oZWxwZXIiLCJtaW4iLCJtYXhfaGVscGVyIiwibWF4IiwiYm91bmRzX2hlbHBlciIsIm1hcGlfbWluIiwibWFwaV9tYXgiLCJtYXBpX2JvdW5kcyIsIm1hcGlfbW4iLCJtYXBfbWF4IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwibWFwX2JvdW5kcyIsInZhbHVlX2JvdW5kcyIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0IiwibmV3X2xlZnRfbWFwIiwibmV3X3JpZ2h0X21hcCIsIm9sZF9yaWdodF9tYXAiLCJvbGRfbGVmdF9tYXAiLCJvbGRfbGVmdF9tYXAkMCIsImxlZnRfZGlmZiIsInJpZ2h0X2RpZmYiLCJkaWZmX2VsZW1lbnQiLCJyaWdodF9rZXkiLCJsZWZ0X2tleSIsImtleSQwIiwicmlnaHRfZGF0YV9vcHQkMCIsImxlZnRfZGF0YV9vcHQiLCJyaWdodF9kaWZmJDAiLCJsZWZ0X2RpZmYkMCIsInJpZ2h0X2RhdGFfb3B0JDIiLCJsZWZ0X2RhdGFfb3B0JDAiLCJ5Iiwib3V0cHV0X2RhdGFfb3B0IiwieSQwIiwiZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvciIsImN1dG9mZiIsImluY3JlbWVudGFsX3N0YXRlIiwiZW1wdHlfbWFwIiwicHJldl9tYXAiLCJwcmV2X25vZGVzIiwicmVzdWx0Iiwib25faW5uZXJfY2hhbmdlIiwibGhzX2NoYW5nZSIsIm5vZGVzIiwiY2hhbmdlZCIsImRlcCIsIm5vZGUiLCJub2RlcyQwIiwibm9kZSQwIiwibm9kZSQxIiwiYyIsInVzZXJfZnVuY3Rpb25fZGVwIiwibmV3X25vZGVzIiwiZmlsdGVyX21hcGkkMCIsIm1hcGkkMCIsIm1hcCQwIiwiZmlsdGVyX21hcCQwIiwibWVyZ2UkMCIsIm1hcDEiLCJtYXAyIiwidW56aXBfbWFwaSIsImxlZnRfcmVzdWx0X2VxdWFsIiwicmlnaHRfcmVzdWx0X2VxdWFsIiwicGFpciIsImRhdGFfZXF1YWwkMCIsImxlZnRfcmVzdWx0X2VxdWFsJDAiLCJzdGgkMSIsInJpZ2h0X3Jlc3VsdF9lcXVhbCQwIiwibGVmdF9hY2MiLCJsZWZ0X3Jlc3VsdCIsInJpZ2h0X2FjYyIsInJpZ2h0X3Jlc3VsdCIsImwiLCJsZWZ0JDAiLCJyIiwicmlnaHQkMCIsInJpZ2h0IiwibGVmdCIsInByZXYiLCJwcmV2X2IiLCJwcmV2X2EiLCJuZXdfYiIsIm5ld19hIiwiZWxlbWVudCIsImlucHV0X2NoYW5nZSIsInVuemlwIiwidW56aXBfbWFwaSQwIiwicmlnaHRfZGVwIiwibGVmdF9kZXAiLCJyaWdodF9pbmNyIiwibGVmdF9pbmNyIiwibGVmdF91c2VyX2Z1bmN0aW9uX2RlcCIsInJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwIiwia2V5cyIsInBhcnRpdGlvbl9tYXBpIiwiZW1wdHkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsImZsYXR0ZW4iLCJzdGF0ZSIsImluY3IiLCJqb2luIiwibWFwX2luY3IiLCJyZXN1bHRfbWFwIiwib2xkX21hcF9vZl9pbmNycyIsImN1cnJlbnRfZGVwZW5kZW5jaWVzIiwiYWRkX3N1Ym5vZGUiLCJkYXRhX25vZGUiLCJuZXdfZGVwIiwicmVtb3ZlX3N1Ym5vZGUiLCJtYXBfb2ZfaW5jcnMiLCJkYXRhX25vZGUkMCIsIm5ld19kZXBlbmRlbmN5X21hcCIsInNlcGFyYXRlIiwiaW5wdXRfbWFwIiwib3V0cHV0X21hcF9ub2RlIiwibWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfIiwiaW5wdXRfbWFwX2NoYW5nZWQiLCJkZXBlbmRlbmN5IiwicHJldl9pbnB1dF9tYXAiLCJvdXRwdXRfbWFwIiwiZXhwZXJ0X25vZGVzIiwib2xkX25vZGUiLCJzdWJyYW5nZSIsInJhbmdlIiwiY29tcGFyZSIsImVxdWFsIiwibWF5YmVfYm91bmRfZXF1YWwiLCJhXzAwMiIsImJfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJyYW5nZV9pc19lbXB0eSIsIm1pbiQwIiwibWF4JDAiLCJtYXgkMSIsIm1pbiQxIiwicmFuZ2VfaW5jbHVkZXMiLCJyYW5nZSQwIiwiZnJvbV9zY3JhdGNoIiwib2xkX3JhbmdlIiwib2xkX21pbiIsIm9sZF9tYXAiLCJvbGRfbWF4Iiwib2xkX3JlcyIsIm9sZF9tYXgkMCIsInBhcmFtIiwiYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24iLCJvdXRzaWRlIiwib3V0c2lkZSQwIiwib3V0c2lkZV9jdXRvZmYiLCJ3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2UiLCJ3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIiwibWFwX2FwcGVuZF9leG4iLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm9sZF9taW4kMCIsIm9sZF9taW4kMSIsIm9sZF9tYXgkMSIsIndpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlIiwicmVrZXkiLCJvdXRlcl9jb21wYXJhdG9yIiwiaW5kZXhfYnlpIiwiaW5kZXgiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfbWFwIiwiaW5uZXJfbWFwJDAiLCJpbmRleF9ieSIsImlzX2tub3duIiwidG9fb3B0aW9uIiwiZmluZF9rZXlfcmFuZ2VfbGluZWFyIiwiZnJvbSIsInRvIiwibGVuIiwiYmVnaW5fa2V5IiwiZW5kX2tleSIsImZpbmRfa2V5cyIsImZvbGQiLCJzdGFydF9wb3MiLCJhZHZhbmNlX3BvcyIsInBvcyIsImJlZ2luX2tleSQwIiwiZW5kX2tleSQwIiwicmFuayIsImNvbXBhcmVfa2V5Iiwic2FtZV9rZXkiLCJwcm9jZXNzIiwibmV3X21hcCIsIm9sZF9yYW5rIiwib2xkX2tleSIsIm9sZF9yYW5rJDAiLCJ1cHBlcl9ib3VuZCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQkMCIsImxvd2VyX2JvdW5kJDAiLCJzdWJyYW5nZSQwIiwiZGlmZl9rZXkiLCJvbGRfcmFuayQxIiwib2xkJDEiLCJzdWJyYW5nZV9ieV9yYW5rIiwiZmluZF9rZXlfcmFuZ2UiLCJlbmRfa2V5X29wdCQwIiwib2xkX3RvIiwib2xkX2Zyb20iLCJmaW5kX29mZnNldCIsImNoYW5nZWRfa2V5IiwicmFuZ2Vfb2Zmc2V0X2JlZ2luIiwicmFuZ2Vfb2Zmc2V0X2VuZCIsImFkanVzdF9hbmRfb2Zmc2V0IiwiYnkkMSIsImtleSQxIiwiYnkkMiIsImJ5IiwiY2xvc2VzdF9kaXIiLCJieSQwIiwib2Zmc2V0X2VuZCIsIm9mZnNldF9iZWdpbiIsIm1hcF9vZmZzZXRfZW5kIiwibWFwX29mZnNldF9iZWdpbiIsImVuZF9rZXlfb3B0JDIiLCJiZWdpbl9rZXlfb3B0IiwibWFwX29mZnNldF9iZWdpbiQwIiwiZW5kX2tleV9vcHQiLCJiZWdpbl9rZXlfb3B0JDAiLCJzeW1ib2wiLCJib3VuZCIsInJldHVybiQwIiwicGF0dGVybl9zeW50YXhfMDA4IiwicGF0dGVybl9zeW50YXhfMDA5IiwibGIiLCJwYXR0ZXJuX3N5bnRheF8wMTAiLCJ1IiwicGF0dGVybl9zeW50YXhfMDExIiwidWIiLCJsZXRfc3ludGF4XzAxNiIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxMiIsImwkMCIsInBhdHRlcm5fc3ludGF4XzAxMyIsImxiJDAiLCJsZXRfc3ludGF4XzAyMCIsInBhdHRlcm5fc3ludGF4XzAxNCIsInUkMCIsInBhdHRlcm5fc3ludGF4XzAxNSIsInViJDAiLCJsZXRfc3ludGF4XzAyMyIsInRyYW5zcG9zZSIsImsyX2NvbXBhcmF0b3IiLCJtIiwiazFfY29tcGFyYXRvciIsImsxIiwiazIiLCJ2YWx1ZSIsImFjY19pbm5lciIsImFjY19pbm5lciQwIiwiY29sbGFwc2VfYnkiLCJtZXJnZV9rZXlzIiwiY29sbGFwc2UiLCJpbm5lcl9jb21wYXJhdG9yJDAiLCJleHBhbmQiLCJjb3VudGkiLCJjb3VudCIsImV4aXN0c2kiLCJleGlzdHMiLCJzdW0iLCJHcm91cCIsInYiLCJmb3JfYWxsaSIsImZvcl9hbGwiLCJjcmVhdGUiLCJzZWxmIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsIm5ld192YWx1ZSIsInVwZGF0ZXJfbm9kZSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsInNhdmVkX3ZhbHVlIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJtYXRjaCQ0IiwidiQxIiwibWF0Y2gkNSIsInYkMiIsIm1hdGNoJDAiLCJpbmZvX3Blcl9rZXkiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJhIiwiY29udGVudHNfYmlnc3RyIiwiYmxvYiIsInVybCIsImNyZWF0ZSQwIiwib3B0IiwiZ2V0X2Rvd25sb2FkIiwiYnV0dG9uX3RleHQiLCJzdGgiLCJlbmFibGVkIiwic3RoJDAiLCJvbl9jbGljayIsInN0aCQxIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMjIiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wNDAiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInNleHBfMDAzIiwiZmllbGRfc2V4cHNfMDA0IiwidG9wXzAwNSIsImxlZnRfMDA3IiwiYm90dG9tXzAwOSIsInJpZ2h0XzAxMSIsImR1cGxpY2F0ZXNfMDEzIiwiZXh0cmFfMDE0Iiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjQiLCJmaWVsZF9zZXhwXzAxNiQ0IiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNSIsImZpZWxkX3NleHBfMDE2JDAiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTYkMSIsImZ2YWx1ZV8wMTgiLCJmaWVsZF9zZXhwXzAxNiQyIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE2JDMiLCJmdmFsdWVfMDE5IiwicmlnaHRfMDEyIiwiYm90dG9tXzAxMCIsImxlZnRfMDA4IiwidG9wXzAwNiIsInNleHBfb2ZfdCIsIm9mX2FfMDI2IiwicmlnaHRfMDM0IiwiYm90dG9tXzAzMiIsImxlZnRfMDMwIiwidG9wXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInY0IiwidjMiLCJ2MiIsInYxIiwic2l6ZSIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwidl90b3AiLCJ2X2xlZnQiLCJ2X2JvdHRvbSIsInZfcmlnaHQiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDM2IiwiYl8wMzciLCJuIiwibiQwIiwibiQxIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwicmlnaHQkMCIsImJvdHRvbSQwIiwibGVmdCQwIiwidG9wJDAiLCJtYWtlX2NyZWF0b3IiLCJ0b3BfZnVuIiwibGVmdF9mdW4iLCJib3R0b21fZnVuIiwicmlnaHRfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwidG9wX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJsZWZ0X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJib3R0b21fZ2VuIiwiY29tcGlsZV9hY2MkMyIsInJpZ2h0X2dlbiIsImFjYyIsIm1hcCIsIml0ZXIiLCJmb2xkIiwiaW5pdCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsIm1hcCQxIiwidCIsImYiLCJpbnRfaGVpZ2h0IiwiaW50X3dpZHRoIiwiZmxvYXRfaGVpZ2h0IiwiZmxvYXRfd2lkdGgiLCJyb3VuZF9mbG9hdF9yZWN0Iiwib3B0Iiwic3RoIiwicm91bmQiLCJyb3dzX29yX2NvbHVtbnNfb2Zfc2V4cCIsInNleHBfMDQxIiwic2V4cF9vZl9yb3dzX29yX2NvbHVtbnMiLCJncm91cCQwIiwiYmluX3NoYXBlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9zaXplX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZV9yb3dzX29yX2NvbHVtbnMiLCJiaW5fd3JpdGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyQwIiwiYmluX3JlYWRlcl9yb3dzX29yX2NvbHVtbnMiLCJiaW5fcm93c19vcl9jb2x1bW5zIiwicm93cyIsImNvbHVtbnMiLCJpc19yb3dzIiwiaXNfY29sdW1ucyIsInJvd3NfdmFsIiwiY29sdW1uc192YWwiLCJyb3dzJDAiLCJjb2x1bW5zJDAiLCJmb2xkJDEiLCJyb3dzX2Z1biIsImNvbHVtbnNfZnVuIiwiaXRlciQxIiwibWFwJDIiLCJtYWtlX21hdGNoZXIiLCJyb3dzX2dlbiIsImNvbHVtbnNfZ2VuIiwidG9fcmFuayIsInRvX25hbWUiLCJjb21wYXJlX3Jvd3Nfb3JfY29sdW1ucyIsImlubmVySGVpZ2h0IiwiaW5uZXJXaWR0aCIsImVsZW1lbnRfaXNfaW5fdmlld3BvcnQiLCJlbHQiLCJzY3JvbGwiLCJpZCIsInZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCIsInZpZXdwb3J0X3JlY3QiLCJjbGllbnRfcmVjdF9vZl9lbGVtZW50IiwiYm91bmRpbmdfcmVjdCIsImNsaWVudF9yZWN0IiwiZmluZF92aXNpYmxlX3JhbmdlIiwibGVuZ3RoIiwibnRoX2VsZW1lbnRfaWQiLCJsYXlvdXQiLCJlbGVtZW50X3NlYXJjaCIsInNlYXJjaF9ieSIsIm1vZGUiLCJ4IiwibnRoX2VsZW1lbnQiLCJmaXJzdCIsImxhc3QiLCJnZXQiLCJpc19hc2NlbmRpbmciLCJsZW5ndGgkMCIsInZpZXdwb3J0X3JlY3QkMCIsInRhcmdldCIsInRhcmdldCQwIiwic2VhcmNoX2J5JDAiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIiwiZ2V0X3Njcm9sbF9jb250YWluZXIiLCJlbCIsImZpbGVuYW1lIiwicHJpbnRfZXJyb3JmIiwiZm10IiwicyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwiY2FsbGJhY2siLCJjdXJyZW50X2NvbnRleHQiLCJyZXF1ZXN0X2lkcyIsImNhbGxiYWNrJDAiLCJzZXRfdGltZW91dF9pZCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsImFuaW1hdGlvbl9jYWxsYmFjayIsInRpbWVvdXRfY2FsbGJhY2siLCJhc19mb2N1c2FibGUiLCJtYXJrX2RpcnR5IiwiaXNfZGlydHkiLCJ4XzAwMiIsInhfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJzZXRfbG9nZ2luZ19maWx0ZXIiLCJsb2dnaW5nX2ZpbHRlciIsImdsb2JhbF9pc19pbml0aWFsaXplZCIsImFwcF9zdGF0ZXMiLCJzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCIsInN0cmluZ3MiLCJzdHIiLCJtdWx0aV9saW5lX3N0cmluZ19saXN0IiwiZ2V0X3RhZ19uYW1lIiwibm9kZSIsImUiLCJzdGFydF9ib25zYWkiLCJiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCIsImluaXRpYWxfbW9kZWwiLCJkZWJ1ZyIsInN0aCQwIiwic3RvcCIsInN0aCQxIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImN1dG9mZiIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJnZXRfdmlldyIsIm5hbWVkX2xvZ2dpbmdfZmlsdGVycyQwIiwiZmlsdGVyX25hbWVzIiwid2l0aF9hcHBfaWRfb3B0IiwidXBkYXRlX3N0YXRlIiwiYXBwX2lkX29wdCIsImFwcF9pZF9vcHQkMCIsImFwcF9pZCIsInN0YXRlIiwidXBkYXRlX2xvZ2dpbmdfZmlsdGVyIiwidXBkYXRlX3Nob3VsZF9wcm9maWxlIiwic2hvdWxkX3Byb2ZpbGUiLCJ1cGRhdGVfc2hvdWxkX2RlYnVnIiwic2hvdWxkX2RlYnVnIiwiYmxhbmdfc3RyIiwiYmxhbmdfc3RyJDAiLCJhcHBfc3RhdGUiLCJibGFuZyIsImludmFsaWRfbmFtZXMiLCJuYW1lIiwiZmlsdGVyIiwiZmlsdGVyJDAiLCJhY3Rpb25fc2V4cCIsImNvbnRlbnRzIiwiYXBwX2luaXRfbWVzc2FnZSIsInNob3VsZF9kZWJ1ZyQwIiwic2hvdWxkX3Byb2ZpbGUkMCIsImh0bWwiLCJodG1sX2RvbSIsInBhcmVudCIsImNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCIsImV2ZW50X25hbWUiLCJ3aGVyZSIsInByZXZfaHRtbCIsInByZXZfZWx0IiwicmVmb2N1c19yb290X2VsZW1lbnQiLCJlbGVtZW50IiwidGltZXJfc3RhcnQiLCJwcm9maWxlIiwidGltZXJfc3RvcCIsImJlZm9yZSIsImFmdGVyIiwicmVsYXRlZF90YXJnZXQiLCJzYWZlX2ZpbHRlciIsInNob3VsZF9sb2ciLCJlcnIiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDEyIiwibmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIiwicGVyZm9ybV91cGRhdGUiLCJkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsImFkZF9uZXdfYXR0cnMiLCJhdHRycyIsImh0bWwkMCIsInBhdGNoIiwib2xkX3RhZ19uYW1lIiwibmV3X3RhZ19uYW1lIiwidGFnc190aGVfc2FtZSIsInN0YXJ0IiwiYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24iLCJvbGRfbW9kZWwiLCJpbmplY3QiLCJjb21wb25lbnQiLCJzY2hlZHVsZV9ldmVudCIsInNjaGVkdWxlX2FjdGlvbiIsImVycm9yX3NvdXJjZV8wMTQiLCJpbnZhcmlhbnQiLCJ0Iiwib2Zfc3RyaW5nIiwicyIsInRvX3N0cmluZyIsImVxdWFsIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiYV8wMDUiLCJiXzAwNiIsImFfMDA5IiwiYl8wMTAiLCJ1cGRhdGVfb2Zfc2V4cCIsIm9mX2FfMDExIiwic2V4cF8wMTciLCJmaWVsZF9zZXhwc18wMTYiLCJpbnB1dF8wMTkiLCJ2YWx1ZV8wMjEiLCJkdXBsaWNhdGVzXzAyMyIsImV4dHJhXzAyNCIsInNleHBfMDE3JDAiLCJmaWVsZF9zZXhwc18wMjciLCJmaWVsZF9uYW1lXzAyNSIsInRhaWxfMDMxIiwiZmllbGRfc2V4cF8wMjYkMiIsImZpZWxkX3NleHBfMDI2IiwieF8wMzIiLCJmaWVsZF9zZXhwXzAyNiQwIiwiZnZhbHVlXzAyOCIsImZpZWxkX3NleHBfMDI2JDEiLCJmdmFsdWVfMDI5IiwidmFsdWVfMDIyIiwiaW5wdXRfMDIwIiwiZmllbGRfc2V4cHNfMDMzIiwiaW5wdXRfMDM2IiwibGFzdF92YWxpZF8wMzgiLCJlcnJvcl8wNDAiLCJkdXBsaWNhdGVzXzA0MiIsImV4dHJhXzA0MyIsInNleHBfMDM0IiwiZmllbGRfc2V4cHNfMDQ2IiwiZmllbGRfbmFtZV8wNDQiLCJ0YWlsXzA1MSIsImZpZWxkX3NleHBfMDQ1JDMiLCJmaWVsZF9zZXhwXzA0NSIsInhfMDUyIiwiZmllbGRfc2V4cF8wNDUkMCIsImZ2YWx1ZV8wNDgiLCJmaWVsZF9zZXhwXzA0NSQxIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ1JDIiLCJmdmFsdWVfMDQ3IiwiZXJyb3JfMDQxIiwibGFzdF92YWxpZF8wMzkiLCJpbnB1dF8wMzciLCJzZXhwX29mX3VwZGF0ZSIsIm9mX2FfMDU0IiwidmFsdWVfMDU4IiwiaW5wdXRfMDU2IiwiYXJnXzA1OSIsImJuZHNfMDU1IiwiYXJnXzA1NyIsImJuZHNfMDU1JDAiLCJlcnJvcl8wNjUiLCJsYXN0X3ZhbGlkXzA2MyIsImlucHV0XzA2MSIsImFyZ18wNjYiLCJibmRzXzA2MCIsImFyZ18wNjQiLCJibmRzXzA2MCQwIiwiYXJnXzA2MiIsImJuZHNfMDYwJDEiLCJncm91cCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2MiIsInYxIiwic2l6ZSIsInYzIiwidjIkMCIsInYxJDAiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCIsIndyaXRlX2EiLCJidWYiLCJwb3MiLCJwb3MkMCIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInBvcyQ0IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X2lucHV0Iiwidl92YWx1ZSIsInZfaW5wdXQkMCIsInZfbGFzdF92YWxpZCIsInZfZXJyb3IiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJhXzA2OCIsImJfMDY5IiwiYV8wNzIiLCJiXzA3MyIsIm4iLCJuJDAiLCJhXzA3NiIsImJfMDc3IiwibiQxIiwiZXF1YWxfdXBkYXRlIiwiYV8wNzgiLCJiXzA3OSIsImFfMDgwIiwiYl8wODEiLCJncm91cCQwIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJiaW5fdXBkYXRlIiwiY29tcGFyZV91cGRhdGUiLCJhXzA4NyIsImJfMDg4IiwiYV8wODkiLCJiXzA5MCIsImxpZnQiLCJNIiwiaW5wdXQkMSIsInZhbHVlIiwiaW5wdXQiLCJpbnB1dCQwIiwiZXhuJDAiLCJleG4iLCJpbml0aWFsX2VtcHR5IiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwibGFzdF92YWxpZCIsImdldF9lcnJvciIsImVycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJzdHJ1Y3R1cmFsX2xpc3QiLCJvcHQiLCJjaGlsZHJlbiIsInN0aCIsIm9yaWVudGF0aW9uIiwibGF5b3V0X3N0eWxlIiwiY2hpbGQiLCJzZXhwX29mX3QiLCJjb21iaW5lIiwibGVmdCIsInJpZ2h0IiwiaW5pdCIsImVsZW1lbnQiLCJmIiwiZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQiLCJjaGFuZ2VfaGFuZGxlciIsIm5vcm1hbGl6ZWQiLCJjaGFuZ2VfaGFuZGxlciQwIiwiZXZlbnRfaWQiLCJvbl9tb3VudCIsInN0YXRlIiwiZGVzdHJveSIsInVwZGF0ZSQwIiwib2xkX2lucHV0IiwibmV3X2lucHV0IiwiY3JlYXRlIiwiaW1wbCIsInZhbHVlcyIsInNlbGVjdGVkIiwib25fY2hhbmdlIiwiZXh0cmFfYXR0cnMiLCJzdGgkMCIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInZhbHVlcyQwIiwiYV8wOTEiLCJiXzA5MiIsImFfMDkzIiwiYl8wOTQiLCJvZl9lbnVtIiwib2ZfZW51bV9vcHQiLCJhXzA5NSIsImJfMDk2IiwiYV8wOTciLCJiXzA5OCIsImltcGwkMCIsImlzX2NoZWNrZWQiLCJsYWJlbCIsIm9uX3RvZ2dsZSIsImV2Iiwic2ltcGxlIiwiaW1wbCQxIiwiaXRlbSIsIm9mX3ZhbHVlcyQwIiwib2ZfZW51bSQwIiwiaW1wbCQyIiwicmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IiLCJzdGgkMSIsInRhcmdldCIsImkiLCJvcHRpb25zIiwic2VsZWN0ZWRfdmFsdWVzIiwiaXNfc2VsZWN0ZWQiLCJ3YXNfcmVwZWF0ZWRfY2xpY2siLCJvZl92YWx1ZXMkMSIsIm9mX2VudW0kMSIsImxpc3RlbmVyIiwibm9ybWFsaXplIiwibWF5YmVfb25fcmV0dXJuIiwib25fcmV0dXJuIiwib25fcmV0dXJuJDAiLCJpbnB1dF9ub2RlIiwicGxhY2Vob2xkZXIiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwiY2FsbF9vbl9pbnB1dF93aGVuIiwic2hvdWxkX25vcm1hbGl6ZSIsInR5cGVfYXR0cnMiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm9mX3N0cmluZ2FibGUiLCJ2YWxpZGF0ZWQiLCJWIiwidmFsdWVfYXR0ciIsInRleHQiLCJudW1iZXIiLCJzdGVwIiwicmFuZ2UiLCJ0aW1lIiwiZGF0ZSIsImRhdGV0aW1lX2xvY2FsIiwidXRjX29mZnNldCIsImhvdXJzIiwiem9uZSIsInBhcnRzIiwiaHIiLCJtaW4iLCJvZmRheSIsIlpvbmVkX3RpbWUiLCJ0ZXh0X2FyZWEiLCJzdGgkMiIsImNvbG9yX3BpY2tlciIsImV4dHJhX2F0dHIiLCJ3aXRoX3ZhbGlkYXRpb24iLCJ2YWxpZGF0aW9uIiwib25fY2xpY2siLCJyZXN1bHQiLCJyZWFzb24iLCJzaW1wbGUkMCIsImJhcmVib25lc19idXR0b25fbGlrZSIsImNoZWNrZWQiLCJoaWRlX25hdGl2ZV9pbnB1dHMiLCJpbXBsJDMiLCJuYW1lIiwic3R5bGUiLCJleHRyYV9hdHRycyQwIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJvZl92YWx1ZXMkMiIsIkUiLCJvZl92YWx1ZXNfaG9yaXpvbnRhbCIsImFjY2VwdF9hdHRycyIsImFjY2VwdHMiLCJzJDAiLCJsaXN0IiwiYWNjZXB0IiwiZmlsZXMiLCJzaW5nbGUiLCJmaWxlX2xpc3QiLCJmaWxlIiwiZW1wdHkiLCJpc19lbXB0eSIsInQiLCJ6ZXJvX2JpdCIsImsiLCJtIiwibWVtIiwiaiIsInIiLCJsIiwibCQwIiwiZmluZCIsIngiLCJmaW5kX29wdCIsImZpbmRfZmlyc3Rfb3B0IiwiZiIsInJ2IiwicmsiLCJsdiIsImxrIiwidiQwIiwiZmluZF9maXJzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX2xhc3QiLCJtYXNrIiwicCIsImpvaW4iLCJ0MSIsInAxIiwidDAiLCJwMCIsIm1hdGNoX3ByZWZpeCIsImFkZCIsImlucyIsInNpbmdsZXRvbiIsInYiLCJicmFuY2giLCJ0JDAiLCJyZW1vdmUiLCJybXYiLCJjYXJkaW5hbCIsIml0ZXIiLCJtYXAiLCJtYXBpIiwiZm9sZCIsInMiLCJhY2N1IiwicyQwIiwiYWNjdSQwIiwiYWNjdSQxIiwiZm9yX2FsbCIsImV4aXN0cyIsImZpbHRlciIsInByIiwiZmlsdGVyX21hcCIsInBhcnRpdGlvbiIsInBhcnQiLCJhY2MkMCIsImNob29zZSIsImNob29zZV9vcHQiLCJzcGxpdCIsImNvbGwiLCJiIiwibWluX2JpbmRpbmciLCJicyIsImtzIiwiYnQiLCJrdCIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwiYmluZGluZ3MiLCJhY2MiLCJjb21wYXJlIiwiY21wIiwidDIiLCJjb21wYXJlX2F1eCIsInQxJDAiLCJ0MiQwIiwieDEiLCJrMSIsIngyIiwiazIiLCJjIiwicjEiLCJsMSIsIm0xIiwicjIiLCJsMiIsIm0yIiwicDIiLCJjJDAiLCJjJDEiLCJjJDIiLCJlcXVhbCIsImVxIiwiZXF1YWxfYXV4IiwibWVyZ2UiLCJhZGQkMCIsInYxIiwidjIiLCJ1cGRhdGUiLCJ6IiwidW5zaWduZWRfbHQiLCJuIiwidCQyIiwiczEiLCJzMCIsImskMCIsInEiLCJ0JDEiLCJ1bmlvbiIsInRvX3NlcSIsInByZXBlbmRfc2VxIiwibSQwIiwicyQxIiwidG9fc2VxX2Zyb20iLCJrZXkiLCJhZGRfc2VxIiwib2Zfc2VxIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJ2ZXJzaW9uIiwianNvbl9lcnJvciIsInMiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsIm9jYW1sX2xleF90YWJsZXMiLCJyZWFkX2p1bmskMCIsImxleGJ1ZiIsIm9jYW1sX2xleF9yZWFkX2p1bmtfcmVjJDAiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwicmVhZF9qdW5rIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMiLCJ5b2pzb25fb2ZfdW5pdCIsInlvanNvbl9vZl9ib29sIiwiYiIsInlvanNvbl9vZl9zdHJpbmciLCJzdHIiLCJ5b2pzb25fb2ZfYnl0ZXMiLCJieXRlcyIsInlvanNvbl9vZl9jaGFyIiwiYyIsInlvanNvbl9vZl9pbnQiLCJuIiwieW9qc29uX29mX2Zsb2F0IiwieW9qc29uX29mX2ludDMyIiwieW9qc29uX29mX2ludDY0IiwieW9qc29uX29mX25hdGl2ZWludCIsInlvanNvbl9vZl9yZWYiLCJ5b2pzb25fb2ZfYSIsInJmIiwieW9qc29uX29mX2xhenlfdCIsImx2IiwieW9qc29uX29mX29wdGlvbiIsIngiLCJ5b2pzb25fb2ZfcGFpciIsInlvanNvbl9vZl9iIiwiYSIsInlvanNvbl9vZl90cmlwbGUiLCJ5b2pzb25fb2ZfYyIsInlvanNvbl9vZl9saXN0IiwibHN0IiwieW9qc29uX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwiaSIsInlvanNvbl9vZl9oYXNodGJsIiwieW9qc29uX29mX2tleSIsInlvanNvbl9vZl92YWwiLCJodGJsIiwiY29sbCIsImsiLCJ2IiwiYWNjIiwieW9qc29uX29mX29wYXF1ZSIsInlvanNvbl9vZl9mdW4iLCJyZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIiwib2ZfeW9qc29uX2Vycm9yX2V4biIsImV4YyIsInlvanNvbiIsIm9mX3lvanNvbl9lcnJvciIsIndoYXQiLCJ1bml0X29mX3lvanNvbiIsImJvb2xfb2ZfeW9qc29uIiwic3RyaW5nX29mX3lvanNvbiIsImJ5dGVzX29mX3lvanNvbiIsImNoYXJfb2ZfeW9qc29uIiwiaW50X29mX3lvanNvbiIsImZsb2F0X29mX3lvanNvbiIsImludDMyX29mX3lvanNvbiIsImludDY0X29mX3lvanNvbiIsIm5hdGl2ZWludF9vZl95b2pzb24iLCJyZWZfb2ZfeW9qc29uIiwiYV9vZl95b2pzb24iLCJsYXp5X3Rfb2ZfeW9qc29uIiwib3B0aW9uX29mX3lvanNvbiIsInBhaXJfb2ZfeW9qc29uIiwiYl9vZl95b2pzb24iLCJiX3lvanNvbiIsImFfeW9qc29uIiwidHJpcGxlX29mX3lvanNvbiIsImNfb2ZfeW9qc29uIiwiY195b2pzb24iLCJsaXN0X29mX3lvanNvbiIsInJldl9sc3QiLCJhcnJheV9vZl95b2pzb24iLCJ0IiwiaCIsImxlbiIsInJlcyIsInQkMCIsImgkMCIsImhhc2h0Ymxfb2ZfeW9qc29uIiwia2V5X29mX3lvanNvbiIsInZhbF9vZl95b2pzb24iLCJhY3QiLCJ2X3lvanNvbiIsImtfeW9qc29uIiwib3BhcXVlX29mX3lvanNvbiIsImZ1bl9vZl95b2pzb24iLCJzcHJpbnRmIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyIsInJldl9mbGRfbmFtZXMiLCJmbGRfbmFtZXNfc3RyIiwicmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMiLCJyZWNvcmRfZXh0cmFfZmllbGRzIiwicmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCIsImZpZWxkcyQwIiwicmVzdCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJzeW1ib2wiLCJjbHNzIiwiZGl2X2MiLCJjbHMiLCJzcGFuX2MiLCJkaXZfZW1wdHkiLCJkaXZfaWYiLCJwIiwiYXRzIiwibnMiLCJzcGFuX2lmIiwidW5sZXNzIiwiYSIsInN3YXAiLCJiIiwibWFwMiIsImYiLCJtYXAzIiwiYyIsInByaW50X3RpbWVfcHJlZml4IiwibmFtZSIsInN0YXJ0X3RpbWUiLCJlbmRfdGltZSIsInByaW50X3RpbWUiLCJwcmludF90aW1lcyIsInRpbWVzIiwibGFzdCIsImdvIiwicHJldmlvdXNfdGltZSIsInByZXZpb3VzX3RpbWUkMCIsInRpbWVzJDAiLCJ0aW1lcyQxIiwicHJldmlvdXNfdGltZSQxIiwibWVhc3VyZV90aW1lIiwibWVhc3VyZSIsIngiLCJjYXQiLCJyZW1vdmVfbnRoIiwibiIsInQiLCJyZW1vdmVfZmlyc3QiLCJyZW1vdmVfbGFzdCIsImluc2VydF9udGgiLCJzIiwic3BsaXRfbnRoIiwidG9fbGlzdCIsImkiLCJyZXBlYXQiLCJhYmJyZXZpYXRlIiwibWF4X2xlbiIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInppcCIsInkiLCJzZXF1ZW5jZSIsIm1zIiwiYWNjIiwibXMkMCIsIm0iLCJvZl9hXzAwMSIsIm9mX2FfMDAzIiwieGYiLCJtYXRjaCIsImV4biQwIiwiZXhuIiwicyQwIiwiZ2V0IiwicHV0IiwibW9kaWZ5IiwibW9kaWZ5JDAiLCJnZXQkMCIsInB1dCQwIiwibW9kaWZ5JDEiLCJtb2RpZnkkMiIsImVycm9yX3NvdXJjZV8wMDUiLCJ0cF9sb2MiLCJsZXQkMCIsInJlc3VsdCIsImxldCQxIiwicHBfcGVyc2lzdGVudCIsInBvbHlfYSIsInBvbHlfYiIsImZtdCIsImEwIiwiYTAkMCIsInNob3dfcGVyc2lzdGVudCIsInBlcnNpc3RlbnRfb2Zfc2V4cCIsIm9mX2JfMDAyIiwic2V4cF8wMDciLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfcGVyc2lzdGVudCIsIm9mX2FfMDE5Iiwib2ZfYl8wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwiYXJnMF8wMjMiLCJyZXMwXzAyNCIsInBlcnNpc3RlbnRfb2ZfeW9qc29uIiwib2ZfYSIsIm9mX2IiLCJ5b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wZXJzaXN0ZW50IiwidG9fcGVyc2lzdGVudCIsIm9mX3BlcnNpc3RlbnQiLCJwcCIsInRfb2ZfeW9qc29uIiwieW9qc29uX29mX3QiLCJtYXBfZnN0IiwibWFwX3NuZCIsImlmX25vbmUiLCJvIiwiZ2V0X29yX2ZhaWwiLCJnZXRfb3JfcmFpc2UiLCJlIiwibzEiLCJvMiIsInYyIiwidjEiLCJzb21lX2lmIiwiY29uZCIsInVuemlwIiwibCIsInhzIiwiYW5kX3RoZW4iLCJlcnJvcl9zb3VyY2VfMDA4IiwicHBfdiIsImsiLCJ2IiwiYmluZGluZ19vZl9zZXhwIiwib2Zfdl8wMDEiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInNleHBfb2ZfYmluZGluZyIsIm9mX3ZfMDA5IiwiYXJnMV8wMTEiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwic2V4cF9vZl92Iiwidl9vZl9zZXhwIiwic2V4cCIsImJpbmRpbmdfb2ZfeW9qc29uIiwib2ZfdiIsInYxJDAiLCJ5b2pzb25fb2ZfYmluZGluZyIsInlvanNvbl9vZl92Iiwidl9vZl95b2pzb24iLCJyZXZfaWYiLCJkZWR1cCIsImRlZHVwZWQiLCJkZWR1cF9mIiwiYXJlX2R1cGxpY2F0ZXMiLCJncm91cF9ieSIsImtleSIsImdyb3VwZWQiLCJrX2dyb3VwIiwicmFuZ2UiLCJvcHQiLCJoaSIsInN0aCIsImxvIiwibWtfZnJhbWUiLCJpbnZhbGlkX2FyZyIsInhzJDAiLCJzdWZmaXgiLCJwcmVmaXgiLCJzcGxpdCIsInBvc3QiLCJ4JDAiLCJwcmUiLCJzcGxpdF9mcmFtZSIsInhzJDEiLCJzdWJqIiwib2ZfZnJhbWUiLCJzdWJqZWN0IiwiY29tYmluZV9vcHQiLCJ5cyIsInh5cyIsImlzX2VtcHR5IiwiZmxhdF9tYXAiLCJqb2luIiwic2VwIiwiaGRfb3B0IiwiaGQiLCJudGhfb3B0IiwibiQwIiwidGwiLCJuJDEiLCJzcGxpdF9uX29wdCIsInNwbGl0X24iLCJyIiwic3BsaXRfc3VibGlzdF9vcHQiLCJqIiwicmlnaHQiLCJsZWZ0IiwibWlkIiwibGVmdCQwIiwic3BsaXRfc3VibGlzdCIsInN1Ymxpc3QiLCJzcGxpdF9udGhfb3B0IiwicHV0X250aCIsInRsJDAiLCJ0bCQxIiwibWFwX250aCIsImhkJDAiLCJzcGxpdF9sYXN0X29wdCIsImxlYWRpbmciLCJzcGxpdF9sYXN0IiwibGFzdF9vcHQiLCJsZW5ndGgiLCJzcGxpdF9maXJzdF9vcHQiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfZmlyc3QiLCJmb2xkX2xlZnRfbWFwIiwic3RhcnQiLCJuZXdfYWNjIiwiZmluYWwkMCIsInRha2Vfd2hpbGUiLCJyZXN0IiwidGFrZW4iLCJwcm9kdWN0Iiwib3JkZXJlZF9wYWlycyIsIm5laWdoYm9ycyIsIngyIiwieDEiLCJtYXBfYWx0IiwiZngiLCJmeSIsImludGVybGVhdmUiLCJwX2luZGljZXMiLCJpZHhzIiwic3BsaXRzIiwiZWxlbV9zcGxpdHMiLCJyb3RhdGUiLCJzaW5nbGVfZWxlbSIsImNvdW50X3ByZWQiLCJmb3JfYWxsMl9vcHQiLCJtYXAyX29wdCIsInJlcGxpY2F0ZSIsImMkMCIsImMkMSIsIm9wdF96aXAiLCJ5cyQwIiwiemlwX2RlZmF1bHRzIiwiZGVmYXVsdF94IiwiZGVmYXVsdF95IiwieXMkMSIsInkkMCIsInVwZGF0ZV9udGgiLCJkaXNqb2ludF9wYWlycyIsImZpbmRpX29wdCIsInBhaXIiLCJpbml0X2ZvbGQiLCJlbHQiLCJhY2MkMCIsInJldl94cyIsImFzc29jX2VyciIsImVyciIsInVwZGF0ZV9hc3NvYyIsInYkMCIsImskMCIsInNwbGl0X2F0X25vbmVzIiwiYWNjcyIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsInhzJDIiLCJhY2MkNCIsImZpcnN0X2FuZF9sYXN0IiwieHNzIiwicmV2X2NvbmNhdCIsImxzIiwicnMiLCJscyQwIiwicnMkMCIsInJzJDEiLCJ6cyIsInpzJDAiLCJ6IiwibHN0IiwidGFpbCIsImJzIiwiYXMiLCJjcm9zcyIsImludGVyc3BlcnNlIiwiZmxhdF9pbnRlcnNwZXJzZSIsInhzcyQwIiwibWFwX2xhc3Rfb25seSIsInNwbGl0X2xhc3QkMCIsIm1pbmltdW0iLCJsb29wIiwiYmVzdCIsImJlc3RfZiIsImJlc3QkMCIsImJlc3RfZiQwIiwiYmVzdCQxIiwiYmVzdF9mJDEiLCJlcnJvcl9zb3VyY2VfMDAzIiwic2hvdyIsInNleHBfMDA0IiwidG9nZ2xlIiwic2lnbiIsImNob29zZSIsImQiLCJta19vcHQiLCJtayIsImZpbmRfbWsiLCJvcmllbnQiLCJwcmVmaXgkMCIsImFwcGVuZCIsInN1ZmZpeCQwIiwibnVtX2RpZ2l0cyIsIm1vZHVsbyIsImlwb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpcG93X2l0ZXIiLCJiJDAiLCJlJDAiLCJyJDAiLCJlJDEiLCJiJDEiLCJyJDEiLCJlJDIiLCJiJDIiLCJzaW5nbGV0b24iLCJkaXNqX3VuaW9uIiwibSQwIiwicG9seV9sIiwicG9seV9yIiwib2ZfbF8wMDEiLCJvZl9yXzAwMiIsIm9mX2xfMDE5Iiwib2Zfcl8wMjAiLCJvZl9sIiwib2ZfciIsImlzX0wiLCJpc19SIiwiZ2V0X0wiLCJnZXRfUiIsImVycm9yX3NvdXJjZV8wMDkiLCJhMSIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9hXzAxMCIsIm9mX2JfMDExIiwiYXJnMV8wMTMiLCJhcmcwXzAxMiIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJmaXJzdF9hIiwibGFzdF9hIiwicmV2IiwicmV2X2EiLCJyZXZfYiIsImNvbnMiLCJzbm9jIiwiZ2V0X2FzIiwiZ2V0X2JzIiwiYWJhX3RyaXBsZXMiLCJhYmEiLCJhMiIsImJhYl90cmlwbGVzIiwiYjEiLCJiMiIsImJhYl90cmlwbGVzJDAiLCJtYXBfYSIsImZfYSIsIm1hcF9iIiwiZl9iIiwibWFwX2FiYXMiLCJmX2FiYSIsIm1hcF9oZCIsInRyaW0iLCJhcyQwIiwiYXMkMSIsImNzIiwiZm9sZF9sZWZ0IiwiZl9iYSIsIm1hcHBlZCIsImZvbGRfcmlnaHQiLCJmX2FiIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImR1bW15IiwiaW5leGlzdGFudCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJuZXdsaW5lIiwibGFzdG5ld2xpbmUiLCJzZWFyY2hfYm91bmRhcnkiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwiZW1wdHkiLCJtZW0iLCJzJDAiLCJyZW0iLCJoYXNoX3JlYyIsImoiLCJoYXNoIiwicHJpbnRfb25lIiwiY2giLCJpdGVyIiwidCIsImYiLCJ0JDAiLCJ4cyIsIm9uZV9jaGFyIiwidiIsInUiLCJmb2xkX3JpZ2h0IiwiaW5pdCIsImNzaW5nbGUiLCJpc19lbXB0eSIsInByZXBlbmQiLCJ4JDAiLCJkIiwiZCQwIiwicGljayIsImdlbiIsImVwc19leHByIiwiaGFzaF9jb21iaW5lIiwiaCIsImFjY3UiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJtayIsImNhdCIsImRlc2MiLCJjcmVhdGUiLCJlcXVhbCQwIiwiaGFzaCQxIiwiY3JlYXRlX3dvcmtpbmdfYXJlYSIsImluZGV4X2NvdW50IiwidyIsIm1hcmtfdXNlZF9pbmRpY2VzIiwidGJsIiwiZnJlZV9pbmRleCIsInRibF9yZWYiLCJsZW4iLCJpZHgkMCIsInJlbW92ZV9tYXRjaGVzIiwic3BsaXRfYXRfbWF0Y2giLCJyZW1vdmVfZHVwbGljYXRlcyIsInByZXYiLCJwcmV2JDAiLCJwcmV2JDEiLCJwcmV2JDIiLCJyJDIiLCJyJDMiLCJ4JDEiLCJwcmV2JDMiLCJyJDQiLCJzZXRfaWR4IiwiZmlsdGVyX21hcmtzIiwiZGVsdGFfMSQwIiwibmV4dF9jYXQiLCJwcmV2X2NhdCIsImRlbHRhXzIkMCIsImRlbHRhXzEiLCJkZWx0YV9zZXEkMCIsInkkMSIsImtpbmQkMCIsInJlcF9raW5kIiwieSQyIiwibWFya3MkMSIsInkkMyIsIm1hcmtzJDIiLCJjYXQkMCIsIm1hcmtzJDMiLCJkZWx0YV8yIiwiZGVsdGFfc2VxIiwiZGVsdGFfNCIsInJlbSQwIiwiZGVsdGEiLCJjaGFyJDAiLCJzdCIsImV4cHIkMCIsInJlZF90ciIsInRyMiIsInN0MiIsInMyIiwidHIxIiwic3QxIiwiczEiLCJwcmVwZW5kX2Rlcml2IiwicmVzdHJpY3QiLCJzJDEiLCJwcmVwZW5kX21hcmtzX2V4cHJfbHN0IiwibSQxIiwiZGVyaXZfMSQwIiwiYWxsX2NoYXJzIiwiY2F0ZWdvcmllcyIsInJlbSQxIiwiZGVyaXZfMiQwIiwiZGVyaXZfMSIsImRlcml2X3NlcSIsInokMCIsInJlbSQyIiwiY2F0JDEiLCJkZXJpdl8yIiwieGwiLCJ6JDEiLCJkZXJpdl80IiwiZGVyaXYiLCJkZXIiLCJleHByJDEiLCJzdGF0dXMiLCJtYSIsInN0JDAiLCJtYWtlIiwiZmxhdHRlbiIsImNtIiwiY29sb3JfcmVwciIsInNwbGl0IiwiZHVtbXlfb2Zmc2V0IiwibTEiLCJwMSIsInAyIiwiZ2V0Iiwic3RhcnQiLCJzdWJzIiwic3RvcCIsInRlc3QiLCJnZXRfb3B0IiwiYWxsX29mZnNldCIsImFsbCIsIm9mZnNldHMiLCJzdHJzIiwibWF0Y2hlcyIsInBwX21hdGNoIiwic3RyIiwibmJfZ3JvdXBzIiwibiIsIm4kMCIsInYkMCIsInYkMSIsIm4kMSIsInVua25vd24iLCJicmVhayQwIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJmaW5kX3N0YXRlIiwibmNvbCIsImJyZWFrX3N0YXRlIiwiaW5mbyIsInBvcyIsInZhbGlkYXRlIiwiZ2V0X2NvbG9yIiwic2xlbiIsInNjYW5fc3RyIiwiaW5pdGlhbF9zdGF0ZSIsImdyb3VwcyIsInBvcyQzIiwibGFzdCIsImluZm8kMCIsInN0JDUiLCJwb3MkNCIsInN0JDMiLCJyZWFsX2MiLCJzdCQ0IiwicG9zJDAiLCJwb3MkMSIsInN0JDEiLCJzdCQyIiwicG9zJDIiLCJmaW5hbF9ib3VuZGFyeV9jaGVjayIsImZpbmFsX2NhdCIsInJlcyQwIiwibWF0Y2hfc3RyIiwicGFydGlhbCIsImluaXRpYWxfY2F0Iiwic3RhdHVzJDAiLCJwbWFya3MiLCJub19tYXRjaF9zdGFydHNfYmVmb3JlIiwiY3NlcSIsImNhZGQiLCJ2aWV3IiwidmFyJDAiLCJyZWwiLCJzcSIsInJlJDAiLCJyZSQxIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiaXNfY2hhcnNldCIsImN1cHBlciIsImNsb3dlciIsImNhbHBoYSIsImNkaWdpdCIsImNhbG51bSIsImN3b3JkIiwieDEiLCJ4MiIsIngxJDAiLCJ4MiQwIiwiZXFfbGlzdCIsImoyIiwiaTIiLCJ4MiQxIiwiajEiLCJpMSIsIngxJDEiLCJ4MiQyIiwic2VtMiIsIngxJDIiLCJzZW0xIiwieDIkMyIsImsyIiwieDEkMyIsImsxIiwieDIkNCIsIngxJDQiLCJ4MiQ1IiwieDEkNSIsIngyJDYiLCJ4MSQ2IiwieDIkNyIsIngxJDciLCJsMiQyIiwibDEkMiIsIngyJDgiLCJ4MiQ5IiwieDEkOCIsIngxJDkiLCJtMiIsInNlcXVlbmNlIiwibWVyZ2Vfc2VxdWVuY2VzIiwiZW5mb3JjZV9raW5kIiwiY3IiLCJ0cmFuc2xhdGUiLCJpZ25fY2FzZSIsIm5hbWVzIiwiY2FjaGUiLCJpZ25fZ3JvdXAkMCIsImdyZWVkeSQwIiwidHJhbnNfc2VxIiwibWVyZ2VkX3NlcXVlbmNlcyIsImtpbmQkMSIsImNyJDAiLCJqJDAiLCJraW5kJDIiLCJraW5kJDMiLCJjciQxIiwiZ3JlZWR5JDEiLCJwIiwibmFtZSIsImtpbmQkNCIsImNyJDIiLCJyJDUiLCJraW5kJDUiLCJjciQzIiwiciQ2IiwiaSQxIiwia2luZCQ2IiwiY3IkNCIsImlnbl9ncm91cCIsImdyZWVkeSIsImFzX3NldCIsImhhbmRsZV9jYXNlIiwiaWduX2Nhc2UkMCIsInIkNyIsInIkOCIsInIkOSIsInIkMTAiLCJyJDExIiwiciQxMiIsImwkNSIsInIkMTMiLCJyJDE0IiwiciQxNSIsImFuY2hvcmVkIiwiZXBzaWxvbiIsInJlcG4iLCJyZXAxIiwib3B0IiwiYm9sIiwiZW9sIiwiYm93IiwiZW93Iiwid29yZCIsIm5vdF9ib3VuZGFyeSIsImJvcyIsImVvcyIsIndob2xlX3N0cmluZyIsImxlb2wiLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsInN0aCIsInN0aCQwIiwiZXhlYyIsInN1YnN0ciIsImV4ZWNfb3B0IiwiZXhlY3AiLCJleGVjX3BhcnRpYWwiLCJleGVjX3BhcnRpYWxfZGV0YWlsZWQiLCJtYXJrZWQiLCJtYXJrX3NldCIsImFsbF9zZXEiLCJsaW1pdCIsImF1eCIsIm1hdGNoZXNfc2VxIiwic3ViIiwic3BsaXRfZnVsbF9zZXEiLCJzdGF0ZSIsIm9sZF9pIiwidGV4dCIsInRleHQkMCIsInN0YXRlJDAiLCJzcGxpdF9zZXEiLCJmaWx0ZXIiLCJzZXEkMCIsInRsIiwic2VxJDEiLCJsaXN0X29mX3NlcSIsInNwbGl0X2Z1bGwiLCJnZW5fb2Zfc2VxIiwic3BsaXRfZ2VuIiwic3BsaXRfZnVsbF9nZW4iLCJhbGxfZ2VuIiwibWF0Y2hlc19nZW4iLCJyZXBsYWNlIiwiYnVmIiwicmVwbGFjaW5nIiwicmVwbGFjZV9zdHJpbmciLCJieSIsIndpdG5lc3MiLCJmcm9tIiwiZ2V0X29mcyIsImdldF9hbGwiLCJnZXRfYWxsX29mcyIsInRlc3QyIiwiYWNjZXB0IiwiYWNjZXB0MiIsImxlZnQiLCJicmFuY2giLCJsZWZ0JDAiLCJsZWZ0JDEiLCJicmFja2V0IiwicyQyIiwiY29tcGlsZV9wYXQiLCJjb21waWxlX3JlZ2V4cCIsInN0cmluZ19tYXRjaCIsInN0cmluZ19wYXJ0aWFsX21hdGNoIiwic2VhcmNoX2ZvcndhcmQiLCJzZWFyY2hfYmFja3dhcmQiLCJwJDAiLCJwJDEiLCJ2YWxpZF9ncm91cCIsIm9mZnNldF9ncm91cCIsInJlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsInEiLCJxJDAiLCJxJDEiLCJwJDIiLCJsZW4kMCIsInAkMyIsInEkMiIsInEkMyIsInAkNCIsImIkMCIsInEkNSIsInAkNiIsInEkNCIsInAkNSIsInEkNiIsInAkNyIsInN0cmluZ19iZWZvcmUiLCJzdHJpbmdfYWZ0ZXIiLCJmaXJzdF9jaGFycyIsImxhc3RfY2hhcnMiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiZ3JvdXBfYmVnaW5uaW5nIiwiZ3JvdXBfZW5kIiwibWF0Y2hlZF9ncm91cCIsInR4dCIsInJlcGxhY2VfbWF0Y2hlZCIsIm1hdGNoZWQiLCJtYXRjaF9iZWdpbm5pbmciLCJtYXRjaF9lbmQiLCJtYXRjaGVkX3N0cmluZyIsInN1YnN0aXR1dGVfZmlyc3QiLCJyZXBsX2Z1biIsImdsb2JhbF9zdWJzdGl0dXRlIiwibGFzdF93YXNfZW1wdHkiLCJzdGFydHBvcyIsImVuZF9wb3MiLCJyZXBsX3RleHQiLCJsYXN0X3dhc19lbXB0eSQwIiwiZ2xvYmFsX3JlcGxhY2UiLCJyZXBsYWNlX2ZpcnN0Iiwic2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MiLCJib3VuZGVkX3NwbGl0IiwibnVtIiwiYm91bmRlZF9zcGxpdF9kZWxpbSIsInNwbGl0X2RlbGltIiwiYm91bmRlZF9mdWxsX3NwbGl0IiwiZnVsbF9zcGxpdCIsImJlZyIsIm11bCIsImV4cGxpY2l0X3BlcmlvZCIsInNsYXNoZXMiLCJhcHBlbmQiLCJwaWVjZSIsImFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCIsIm5leHQiLCJyZW1haW5pbmciLCJvbmUiLCJleHBsaWNpdF9zbGFzaCIsImVuY2xvc2VkIiwiaGlnaCIsImxvdyIsImVuY2xvc2VkX3NldCIsInNldCQwIiwiZW5jbG9zdXJlIiwiZXhhY3RseSIsInNsYXNoZXMkMCIsImNoYXJzIiwibWFueV9tYW55IiwiZXhwbGljaXRfcGVyaW9kJDAiLCJmaXJzdF9leHBsaWNpdF9wZXJpb2QiLCJtYXRjaF9jb21wb25lbnQiLCJnbG9iIiwicGF0aG5hbWUiLCJzdGgkMSIsIm1hdGNoX2JhY2tzbGFzaGVzIiwic3RoJDIiLCJwZXJpb2QiLCJzdGgkMyIsImV4cGFuZF9icmFjZXMiLCJzdGgkNCIsImRvdWJsZV9hc3RlcmlzayIsInRvX3JlIiwicmVhZCIsInBpZWNlcyIsImZvdW5kIiwicGllY2VzJDAiLCJzdGF0ZSQ4Iiwic3RhdGUkOSIsImV4cGxpY2l0X3NsYXNoJDAiLCJleHBsaWNpdF9wZXJpb2QkMSIsInNsYXNoZXMkMSIsInN0YXRlJDEwIiwibm90X2VtcHR5IiwibWF5YmVfZW1wdHkiLCJlbmNsb3NlZF9zZXQkMSIsImVuY2xvc2VkX3NldCQwIiwic3RhdGUkMiIsInN0YXRlJDQiLCJub3RfZW1wdHkkMCIsInN0YXRlJDUiLCJzdGF0ZSQ2IiwiZW5jbG9zZWQkMCIsInN0YXRlJDciLCJlbmNsb3NlZCQxIiwic3RhdGUkMyIsInN0YXRlJDEiLCJlbmNsb3NlZCQyIiwiZW5jbG9zZWQkMyIsImV4cGwiLCJpbm5lciIsImFjYyIsImJlZyQwIiwiYWNjJDAiLCJiZWckMSIsImFjYyQxIiwiaSQzIiwiYmVnJDIiLCJpJDQiLCJpJDIiLCJnbG9iJDAiLCJnbG9ieCIsImdsb2J4JDAiLCJwb3NpeF9jbGFzc19zdHJpbmdzIiwib3B0cyIsInVuZ3JlZWR5IiwiZG90YWxsIiwiZG9sbGFyX2VuZG9ubHkiLCJtdWx0aWxpbmUiLCJhY2NlcHRfcyIsInVuZ2V0IiwiZ3JlZWR5X21vZCIsImdyIiwiZ3IkMCIsImF0b20iLCJpbnRlZ2VyIiwiaGV4ZGlnaXQiLCJjb2RlIiwicyQzIiwicyQ0IiwiY2xhc3MkMCIsInBvc2l4X2NsYXNzIiwicGF0IiwiZmxhZ3MiLCJleHRyYWN0IiwicmV4IiwiZ2V0X3N1YnN0cmluZyIsImdldF9uYW1lZF9zdWJzdHJpbmciLCJnZXRfc3Vic3RyaW5nX29mcyIsInBtYXRjaCIsInN1YnN0aXR1dGUiLCJzdWJzdCIsInNzIiwiZmluIiwibWF4IiwicmVzdWx0cyIsImRlbGltIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsImVycm9yX3NvdXJjZV8wMDgiLCJ0cF9sb2MiLCJzZXhwX29mX3QiLCJ0IiwidF9vZl9zZXhwIiwicyIsInlvanNvbl9vZl90IiwidF9vZl95b2pzb24iLCJtayIsImNvbXBhcmUiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmciLCJwcCIsImYiLCJpZCIsInNob3ciLCJiaW5kaW5nX29mX3NleHAiLCJvZl92XzAwMSIsInNleHBfMDA3IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInJlczBfMDA1IiwicmVzMV8wMDYiLCJzZXhwX29mX2JpbmRpbmciLCJvZl92XzAwOSIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYmluZGluZ19vZl95b2pzb24iLCJvZl92IiwieW9qc29uIiwidjEiLCJ2MCIsInYwJDAiLCJ2MSQwIiwieW9qc29uX29mX2JpbmRpbmciLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdiIsIm1hcCIsInRfb2Zfc2V4cCQwIiwidl9vZl9zZXhwIiwic2V4cCIsInlvanNvbl9vZl90JDAiLCJ5b2pzb25fb2ZfdiIsInRfb2ZfeW9qc29uJDAiLCJ2X29mX3lvanNvbiIsImpzb24iLCJwcCQwIiwicHBfdiIsImZtdCIsInYiLCJrIiwiaW52YWxpZCIsIm51bGxhcnlfYXBfZmxhZyIsImlzX251bGxhcnlfYXBfZmxhZyIsImlkcyIsImluaXQiLCJycmVmIiwiYWRkJDAiLCJhIiwiciIsImdldCIsImdldF9vcHQiLCJzZXQiLCJtZXJnZSQwIiwiaWQkMCIsImVycm9yX3NvdXJjZV8wMDMiLCJlcnJvcl9zb3VyY2VfMDA3IiwidHBfbG9jJDAiLCJlcnJvcl9zb3VyY2VfMDExIiwidHBfbG9jJDEiLCJlcnJvcl9zb3VyY2VfMDE1IiwidHBfbG9jJDIiLCJlcnJvcl9zb3VyY2VfMDE5IiwidHBfbG9jJDMiLCJlcnJvcl9zb3VyY2VfMDIzIiwidHBfbG9jJDQiLCJlcnJvcl9zb3VyY2VfMDI3IiwidHBfbG9jJDUiLCJlcnJvcl9zb3VyY2VfMDMxIiwidHBfbG9jJDYiLCJlcnJvcl9zb3VyY2VfMDU2IiwidHBfbG9jJDciLCJlcnJvcl9zb3VyY2VfMDg4IiwidHBfbG9jJDgiLCJwcF9vcF91bl9ib29sIiwib3BfdW5fYm9vbF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX29wX3VuX2Jvb2wiLCJvcF91bl9ib29sX29mX3lvanNvbiIsInlvanNvbl9vZl9vcF91bl9ib29sIiwicHBfb3BfdW5fbWV0YSIsIm9wX3VuX21ldGFfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl9vcF91bl9tZXRhIiwib3BfdW5fbWV0YV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfdW5fbWV0YSIsInBwX29wX3VuX2ludCIsIm9wX3VuX2ludF9vZl9zZXhwIiwic2V4cF8wMTIiLCJzZXhwX29mX29wX3VuX2ludCIsIm9wX3VuX2ludF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfdW5faW50IiwicHBfb3BfYmluX2Jvb2wiLCJvcF9iaW5fYm9vbF9vZl9zZXhwIiwic2V4cF8wMTYiLCJzZXhwX29mX29wX2Jpbl9ib29sIiwib3BfYmluX2Jvb2xfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX2Jpbl9ib29sIiwicHBfb3BfYmluX2ludCIsIm9wX2Jpbl9pbnRfb2Zfc2V4cCIsInNleHBfMDIwIiwic2V4cF9vZl9vcF9iaW5faW50Iiwib3BfYmluX2ludF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX2ludCIsInBwX29wX2Jpbl9mbG9hdCIsIm9wX2Jpbl9mbG9hdF9vZl9zZXhwIiwic2V4cF8wMjQiLCJzZXhwX29mX29wX2Jpbl9mbG9hdCIsIm9wX2Jpbl9mbG9hdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX2Zsb2F0IiwicHBfb3BfYmluX3N0cmluZyIsIm9wX2Jpbl9zdHJpbmdfb2Zfc2V4cCIsInNleHBfMDI4Iiwic2V4cF9vZl9vcF9iaW5fc3RyaW5nIiwib3BfYmluX3N0cmluZ19vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX3N0cmluZyIsInBwX29wX3VuIiwic2hvd19vcF91biIsIl8yIiwiXzEiLCJfMCIsImEwIiwiYTAkMCIsImEwJDEiLCJ4Iiwib3BfdW5fb2Zfc2V4cCIsInNleHBfMDMzIiwidGFnXzAzNCIsInNleHBfYXJnc18wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3Iiwic2V4cF9hcmdzXzA0MCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJzZXhwX2FyZ3NfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsInNleHBfb2Zfb3BfdW4iLCJhcmcwXzA0OCIsInJlczBfMDQ5IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzBfMDUyIiwicmVzMF8wNTMiLCJvcF91bl9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInlvanNvbl9vZl9vcF91biIsInBwX29wX2JpbiIsInNob3dfb3BfYmluIiwiXzMiLCJfMiQwIiwiXzEkMCIsIl8wJDAiLCJhMCQyIiwib3BfYmluX29mX3NleHAiLCJzZXhwXzA1OCIsInRhZ18wNTkiLCJzZXhwX2FyZ3NfMDc1IiwiYXJnMF8wNzYiLCJyZXMwXzA3NyIsInNleHBfYXJnc18wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwic2V4cF9hcmdzXzA2NSIsImFyZzBfMDY2IiwicmVzMF8wNjciLCJzZXhwX2FyZ3NfMDcwIiwiYXJnMF8wNzEiLCJyZXMwXzA3MiIsInNleHBfb2Zfb3BfYmluIiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsImFyZzBfMDgwIiwicmVzMF8wODEiLCJhcmcwXzA4MiIsInJlczBfMDgzIiwiYXJnMF8wODQiLCJyZXMwXzA4NSIsIm9wX2Jpbl9vZl95b2pzb24iLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fb2Zfb3BfYmluIiwicHBfYXBfZGlyZWN0aW9uIiwic2hvd19hcF9kaXJlY3Rpb24iLCJhcF9kaXJlY3Rpb25fb2Zfc2V4cCIsInNleHBfMDg5Iiwic2V4cF9vZl9hcF9kaXJlY3Rpb24iLCJhcF9kaXJlY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2FwX2RpcmVjdGlvbiIsInNob3dfb3BfdW5fbWV0YSIsInNob3dfb3BfdW5fYm9vbCIsInNob3dfb3BfdW5faW50Iiwic2hvd191bm9wIiwib3AiLCJvcCQwIiwib3AkMSIsInNob3dfb3BfYmluX2Jvb2wiLCJzaG93X29wX2Jpbl9pbnQiLCJzaG93X29wX2Jpbl9mbG9hdCIsInNob3dfb3BfYmluX3N0cmluZyIsInNob3dfYmlub3AiLCJvcCQyIiwiYm9vbF9vcF90b19zdHJpbmciLCJpbnRfb3BfdG9fc3RyaW5nIiwiZmxvYXRfb3BfdG9fc3RyaW5nIiwic3RyaW5nX29wX3RvX3N0cmluZyIsImJpbl9vcF90b19zdHJpbmciLCJvcCQzIiwibWF4IiwidW5xdW90ZSIsImNhc3QiLCJhcCIsIm5lZyIsInBvd2VyIiwibXVsdCIsIm5vdCIsInBsdXMiLCJjb25zIiwiY29uY2F0IiwiZXFzIiwiYW5kIiwib3IiLCJhbm4iLCJpZiQwIiwiZnVuIiwicHJvZCIsInNlbWkiLCJsZXQkMCIsInJ1bGVfYXJyIiwicnVsZV9wcmUiLCJydWxlX3NlcCIsImNhc2UkMCIsIm1pbiIsInAxIiwicDIiLCJhc3NvY2lhdGl2aXR5X21hcCIsImFzc29jaWF0aXZpdHkiLCJwIiwib2ZfYmluX29wIiwiYWxsIiwicm9vdCIsImNvbnNpc3RlbnQiLCJzJDAiLCJ0b19zdHJpbmdfdmVyYm9zZSIsImVycm9yX3NvdXJjZV8wMjYiLCJzZXhwXzAwNSIsInRhZ18wMDYiLCJzZXhwX2FyZ3NfMDA3IiwiYXJnMF8wMDgiLCJyZXMwXzAwOSIsInJlczBfMDExIiwiY29uY2F2ZSIsInAkMCIsInAkMSIsImZpdHMiLCJsIiwiZml0dGluZyIsImZsaXAiLCJhYnNvbHV0ZSIsImQiLCJyZWxhdGl2ZSIsIm5pYiIsInNpZGUiLCJzaG93JDAiLCJzZXhwXzAxMyIsImZpZWxkX3NleHBzXzAxNCIsInNoYXBlXzAxNSIsInNvcnRfMDE3IiwiZHVwbGljYXRlc18wMTkiLCJleHRyYV8wMjAiLCJpdGVyXzAyNyIsInNleHBfMDEzJDAiLCJmaWVsZF9zZXhwc18wMjMiLCJmaWVsZF9uYW1lXzAyMSIsInRhaWxfMDI4IiwiZmllbGRfc2V4cF8wMjIkMiIsImZpZWxkX3NleHBfMDIyIiwieF8wMjkiLCJmaWVsZF9zZXhwXzAyMiQwIiwiZnZhbHVlXzAyNCIsImZpZWxkX3NleHBfMDIyJDEiLCJmdmFsdWVfMDI1Iiwic29ydF8wMTgiLCJzaGFwZV8wMTYiLCJzb3J0XzAzMyIsInNoYXBlXzAzMSIsImFyZ18wMzQiLCJibmRzXzAzMCIsImFyZ18wMzIiLCJibmRzXzAzMCQwIiwiZmllbGRfeW9qc29ucyIsInNoYXBlX2ZpZWxkIiwic29ydF9maWVsZCIsImR1cGxpY2F0ZXMiLCJleHRyYSIsIml0ZXIiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwic29ydF92YWx1ZSIsInNoYXBlX3ZhbHVlIiwidl9zb3J0Iiwidl9zaGFwZSIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsInNoYXBlIiwibiIsImZpdHMkMCIsImZpdHRpbmckMCIsImZsaXAkMCIsInBwX3NoYXBlIiwic2hvd19zaGFwZSIsInNoYXBlX29mX3NleHAiLCJzZXhwX29mX3NoYXBlIiwic2hhcGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3NoYXBlIiwic2V4cF8wMDYiLCJmaWVsZF9zZXhwc18wMDciLCJpZF8wMDgiLCJzaGFwZV8wMTAiLCJkdXBsaWNhdGVzXzAxMiIsImV4dHJhXzAxMyIsIml0ZXJfMDIwIiwic2V4cF8wMDYkMCIsImZpZWxkX3NleHBzXzAxNiIsImZpZWxkX25hbWVfMDE0IiwidGFpbF8wMjEiLCJmaWVsZF9zZXhwXzAxNSQyIiwiZmllbGRfc2V4cF8wMTUiLCJ4XzAyMiIsImZpZWxkX3NleHBfMDE1JDAiLCJmdmFsdWVfMDE3IiwiZmllbGRfc2V4cF8wMTUkMSIsImZ2YWx1ZV8wMTgiLCJzaGFwZV8wMTEiLCJpZF8wMDkiLCJzaGFwZV8wMjYiLCJpZF8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsImlkX2ZpZWxkIiwiaWRfdmFsdWUiLCJ2X2lkIiwiZyIsInNoYXBlcyIsIm1rX2ZpdHNfc2hhcGUiLCJmaXRzX3NoYXBlIiwiZyQwIiwibWVyZ2UiLCJncyIsInRsIiwiaGQiLCJmdCIsImxlbmd0aCIsInJtX250aCIsInJtX2xhc3QiLCJybV9maXJzdCIsInNwbGl0X250aCIsImluc2VydF9udGgiLCJzZXAiLCJ4XzAwMiIsInhfMDAzIiwicmV2IiwiaGRfdGwiLCJsYmwiLCJhMSIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwiYXJnMV8wMDkiLCJyZXMwXzAxMCIsInJlczFfMDExIiwicHBfc2hhcGVzIiwic2hvd19zaGFwZXMiLCJvZl9ob2xlIiwic29ydCIsImVycm9yX3NvdXJjZV8wMTgiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsIm91dF8wMDQiLCJpbl8wMDYiLCJuaWJzXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwiaXRlcl8wMTkiLCJzZXhwXzAwMiQwIiwiZmllbGRfbmFtZV8wMTIiLCJ0YWlsXzAyMCIsImZpZWxkX3NleHBfMDEzJDMiLCJmaWVsZF9zZXhwXzAxMyIsInhfMDIxIiwiZmllbGRfc2V4cF8wMTMkMCIsImZpZWxkX3NleHBfMDEzJDEiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMiIsImZ2YWx1ZV8wMTYiLCJuaWJzXzAwOSIsImluXzAwNyIsIm91dF8wMDUiLCJuaWJzXzAyNyIsImluXzAyNSIsIm91dF8wMjMiLCJhcmdfMDI4IiwiYm5kc18wMjIiLCJhcmdfMDI2IiwiYm5kc18wMjIkMCIsImFyZ18wMjQiLCJibmRzXzAyMiQxIiwib3V0X2ZpZWxkIiwiaW5fZmllbGQiLCJuaWJzX2ZpZWxkIiwiZnZhbHVlJDEiLCJuaWJzX3ZhbHVlIiwiaW5fdmFsdWUiLCJvdXRfdmFsdWUiLCJ2X25pYnMiLCJ2X2luIiwidl9vdXQiLCJhcmckMSIsImJuZHMkMSIsImZsaXBfbmlicyIsIm0iLCJta19vcCIsIm91dCIsImluJDAiLCJta19wcmUiLCJta19wb3N0IiwibWtfYmluIiwibCQwIiwiciQwIiwibWtfcHJlJDAiLCJzb3J0X2wiLCJzb3J0X3IiLCJta19wb3N0JDAiLCJta19iaW4kMCIsIm5pYnMiLCJpbmRleCIsIm1vbGQiLCJpIiwibmliX3NoYXBlcyIsIm5pYl9yIiwibmliX2wiLCJvZl9ncm91dCIsIm4kMCIsIm9mX3NlY29uZGFyeSIsImNvbnNpc3RlbnRfc2hhcGVzIiwibXMiLCJpc19pbmZpeF9vcCIsImNoZXZyb24iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxNCIsImVycm9yX3NvdXJjZV8wMzYiLCJlcnJvcl9zb3VyY2VfMDQ5Iiwic3MiLCJpaSIsImlzIiwiZHMiLCJzcGFjZSIsImxpbmVicmVhayIsImNvbW1lbnRfcmVnZXhwIiwic3RyaW5nX2RlbGltIiwia2V5d29yZHMiLCJyZXNlcnZlZF9rZXl3b3JkcyIsImJvb2xzIiwiYmFzZV90eXBzIiwid2lsZCIsImxpc3Rfc3RhcnQiLCJsaXN0X2VuZCIsInR1cGxlX3N0YXJ0IiwidHVwbGVfZW5kIiwiZXhwbGljaXRfaG9sZSIsInJlZ2V4cCIsInBwX2xhYmVsIiwic2hvd19sYWJlbCIsImxhYmVsX29mX3NleHAiLCJzZXhwX29mX2xhYmVsIiwibGFiZWxfb2ZfeW9qc29uIiwieW9qc29uX29mX2xhYmVsIiwicHBfZXhwYW5zaW9uX3RpbWUiLCJzaG93X2V4cGFuc2lvbl90aW1lIiwiZXhwYW5zaW9uX3RpbWVfb2Zfc2V4cCIsInNleHBfb2ZfZXhwYW5zaW9uX3RpbWUiLCJleHBhbnNpb25fdGltZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXhwYW5zaW9uX3RpbWUiLCJwcF9leHBhbnNpb24iLCJzaG93X2V4cGFuc2lvbiIsImV4cGFuc2lvbl9vZl9zZXhwIiwiYXJnMV8wMTAiLCJhcmcwXzAwOSIsInJlczFfMDEyIiwic2V4cF9vZl9leHBhbnNpb24iLCJhcmcxXzAxNiIsImFyZzBfMDE1IiwicmVzMF8wMTciLCJyZXMxXzAxOCIsImV4cGFuc2lvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXhwYW5zaW9uIiwiXzAkMSIsImZpZWxkX3NleHBzXzAyMSIsImxhYmVsXzAyMiIsImV4cGFuc2lvbl8wMjQiLCJtb2xkXzAyNiIsImR1cGxpY2F0ZXNfMDI4IiwiZXh0cmFfMDI5IiwiaXRlcl8wMzciLCJzZXhwXzAyMCQwIiwiZmllbGRfc2V4cHNfMDMyIiwiZmllbGRfbmFtZV8wMzAiLCJ0YWlsXzAzOCIsImZpZWxkX3NleHBfMDMxJDMiLCJmaWVsZF9zZXhwXzAzMSIsInhfMDM5IiwiZmllbGRfc2V4cF8wMzEkMCIsImZ2YWx1ZV8wMzMiLCJmaWVsZF9zZXhwXzAzMSQxIiwiZnZhbHVlXzAzNSIsImZpZWxkX3NleHBfMDMxJDIiLCJmdmFsdWVfMDM0IiwibW9sZF8wMjciLCJleHBhbnNpb25fMDI1IiwibGFiZWxfMDIzIiwibW9sZF8wNDUiLCJleHBhbnNpb25fMDQzIiwibGFiZWxfMDQxIiwiYXJnXzA0NiIsImJuZHNfMDQwIiwiYXJnXzA0NCIsImJuZHNfMDQwJDAiLCJhcmdfMDQyIiwiYm5kc18wNDAkMSIsImxhYmVsX2ZpZWxkIiwiZXhwYW5zaW9uX2ZpZWxkIiwibW9sZF9maWVsZCIsIm1vbGRfdmFsdWUiLCJleHBhbnNpb25fdmFsdWUiLCJsYWJlbF92YWx1ZSIsInZfbW9sZCIsInZfZXhwYW5zaW9uIiwidl9sYWJlbCIsInBwX2JhZF90b2tlbl9jbHMiLCJzaG93X2JhZF90b2tlbl9jbHMiLCJiYWRfdG9rZW5fY2xzX29mX3NleHAiLCJzZXhwXzA1MCIsInNleHBfb2ZfYmFkX3Rva2VuX2NscyIsImJhZF90b2tlbl9jbHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2JhZF90b2tlbl9jbHMiLCJleHBhbnNpb24iLCJsYWJlbCIsIm1rX2luZml4IiwicHJlYyIsIm1rX251bF9pbmZpeCIsImlzX2NvbW1lbnQiLCJpc19jb21tZW50X2RlbGltIiwiaXNfc2Vjb25kYXJ5IiwiaXNfc3RyaW5nIiwiZW1wdHlfc3RyaW5nIiwiaXNfc3RyaW5nX2RlbGltIiwic3RyaXBfcXVvdGVzIiwic3RyaW5nX3F1b3RlIiwiaXNfa2V5d29yZCIsImlzX3Jlc2VydmVkX2tleXdvcmQiLCJpc19wb3RlbnRpYWxfb3BlcmFuZCIsImlzX3BvdGVudGlhbF9vcGVyYXRvciIsImlzX3BvdGVudGlhbF90b2tlbiIsImlzX2FyYml0YXJ5X2ludCIsImlzX2FyYml0YXJ5X2Zsb2F0IiwiaXNfaW50Iiwic3RyIiwiaXNfYmFkX2ludCIsImlzX2Zsb2F0IiwiaXNfYmFkX2Zsb2F0IiwiaXNfYm9vbCIsImlzX3ZhciIsImlzX2NhcGl0YWxpemVkX25hbWUiLCJpc19iYXNlX3R5cCIsImlzX3R5cF92YXIiLCJpc193aWxkIiwibGlzdGxpdF9sYmwiLCJlbXB0eV9saXN0IiwiaXNfZW1wdHlfbGlzdCIsInR1cGxlX2xibCIsImVtcHR5X3R1cGxlIiwiaXNfZW1wdHlfdHVwbGUiLCJkdW9zcGxpdHMiLCJkdW9tZXJnZXMiLCJjb25zdF9tb25vX2RlbGltcyIsImlzX2V4cGxpY2l0X2hvbGUiLCJiYWRfdG9rZW5fY2xzIiwiYXRvbWljX2Zvcm1zIiwiZm9ybXMiLCJuYW1lIiwiYWNjIiwiZGVsaW1zIiwiYXRvbWljX21vbGRzIiwibW9sZHMiLCJ0ZXN0IiwiaXNfYXRvbWljIiwiaXNfZGVsaW0iLCJpc192YWxpZF90b2tlbiIsIm1rX2F0b21pYyIsImVycm9yX3NvdXJjZV8wMzciLCJwcF9jbHMiLCJzaG93X2NscyIsImNsc19vZl9zZXhwIiwic2V4cF9vZl9jbHMiLCJjbHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2NscyIsInBwX3NlY29uZGFyeV9jb250ZW50Iiwic2hvd19zZWNvbmRhcnlfY29udGVudCIsInNlY29uZGFyeV9jb250ZW50X29mX3NleHAiLCJzZXhwXzAwOSIsInRhZ18wMTAiLCJzZXhwX2FyZ3NfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNleHBfYXJnc18wMTYiLCJhcmcwXzAxNyIsInJlczBfMDE4Iiwic2V4cF9vZl9zZWNvbmRhcnlfY29udGVudCIsImFyZzBfMDE5IiwicmVzMF8wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2Vjb25kYXJ5X2NvbnRlbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlY29uZGFyeV9jb250ZW50IiwiZmllbGRfc2V4cHNfMDI1IiwiaWRfMDI2IiwiY29udGVudF8wMjgiLCJkdXBsaWNhdGVzXzAzMCIsImV4dHJhXzAzMSIsIml0ZXJfMDM4Iiwic2V4cF8wMjQkMCIsImZpZWxkX3NleHBzXzAzNCIsImZpZWxkX25hbWVfMDMyIiwidGFpbF8wMzkiLCJmaWVsZF9zZXhwXzAzMyQyIiwiZmllbGRfc2V4cF8wMzMiLCJ4XzA0MCIsImZpZWxkX3NleHBfMDMzJDAiLCJmdmFsdWVfMDM2IiwiZmllbGRfc2V4cF8wMzMkMSIsImNvbnRlbnRfMDI5IiwiaWRfMDI3IiwiY29udGVudF8wNDQiLCJpZF8wNDIiLCJhcmdfMDQ1IiwiYm5kc18wNDEiLCJhcmdfMDQzIiwiYm5kc18wNDEkMCIsImNvbnRlbnRfZmllbGQiLCJjb250ZW50X3ZhbHVlIiwidl9jb250ZW50IiwiY2xzX29mIiwibWtfc3BhY2UiLCJta19uZXdsaW5lIiwiY29uc3RydWN0X2NvbW1lbnQiLCJjb250ZW50IiwiaXNfc3BhY2UiLCJ3IiwiaXNfbGluZWJyZWFrIiwiY29udGVudF9pc19jb21tZW50IiwiZ2V0X3N0cmluZyIsImVycm9yX3NvdXJjZV8wMDUiLCJlcnJvcl9zb3VyY2VfMDQ1IiwicHBfc2VnbWVudCIsInNob3dfc2VnbWVudCIsInBwX3BpZWNlIiwic2hvd19waWVjZSIsInBwX3RpbGUiLCJzaG93X3RpbGUiLCJzZWdtZW50X29mX3NleHAiLCJwaWVjZV9vZl9zZXhwIiwidGlsZV9vZl9zZXhwIiwidGFnXzAwOCIsInNleHBfYXJnc18wMDkiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfYXJnc18wMTQiLCJyZXMwXzAxNiIsInNleHBfMDIzIiwiZmllbGRfc2V4cHNfMDI0IiwiaWRfMDI1IiwibGFiZWxfMDI3IiwibW9sZF8wMjkiLCJzaGFyZHNfMDMxIiwiY2hpbGRyZW5fMDMzIiwiZHVwbGljYXRlc18wMzUiLCJleHRyYV8wMzYiLCJpdGVyXzA0NiIsInNleHBfMDIzJDAiLCJmaWVsZF9zZXhwc18wMzkiLCJmaWVsZF9uYW1lXzAzNyIsInRhaWxfMDQ3IiwiZmllbGRfc2V4cF8wMzgkNSIsImZpZWxkX3NleHBfMDM4IiwieF8wNDgiLCJmaWVsZF9zZXhwXzAzOCQwIiwiZnZhbHVlXzA0MSIsImZpZWxkX3NleHBfMDM4JDEiLCJmdmFsdWVfMDQyIiwiZmllbGRfc2V4cF8wMzgkMiIsImZ2YWx1ZV8wNDMiLCJmaWVsZF9zZXhwXzAzOCQzIiwiZnZhbHVlXzA0NCIsImZpZWxkX3NleHBfMDM4JDQiLCJmdmFsdWVfMDQwIiwiY2hpbGRyZW5fMDM0Iiwic2hhcmRzXzAzMiIsIm1vbGRfMDMwIiwibGFiZWxfMDI4Iiwic2V4cF9vZl9zZWdtZW50IiwieF8wNDkiLCJzZXhwX29mX3BpZWNlIiwic2V4cF9vZl90aWxlIiwiYXJnMF8wNTQiLCJyZXMwXzA1NSIsImNoaWxkcmVuXzA2NSIsInNoYXJkc18wNjMiLCJtb2xkXzA2MSIsImxhYmVsXzA1OSIsImlkXzA1NyIsImFyZ18wNjYiLCJibmRzXzA1NiIsImFyZ18wNjQiLCJibmRzXzA1NiQwIiwiYXJnXzA2MiIsImJuZHNfMDU2JDEiLCJhcmdfMDYwIiwiYm5kc18wNTYkMiIsImFyZ18wNTgiLCJibmRzXzA1NiQzIiwic2VnbWVudF9vZl95b2pzb24iLCJwaWVjZV9vZl95b2pzb24iLCJ0aWxlX29mX3lvanNvbiIsInNoYXJkc19maWVsZCIsImNoaWxkcmVuX2ZpZWxkIiwiZnZhbHVlJDIiLCJmdmFsdWUkMyIsImNoaWxkcmVuX3ZhbHVlIiwic2hhcmRzX3ZhbHVlIiwieW9qc29uX29mX3NlZ21lbnQiLCJ5b2pzb25fb2ZfcGllY2UiLCJ5b2pzb25fb2ZfdGlsZSIsInZfY2hpbGRyZW4iLCJ2X3NoYXJkcyIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJta19zZWNvbmRhcnkiLCJzZXhwX2FyZ3NfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsInNfY2xlYXIiLCJzX3RvdWNoIiwic190b3VjaGVkIiwicHBfZXhwYW5zaW9ucyIsInNob3dfZXhwYW5zaW9ucyIsImV4cGFuc2lvbnNfb2Zfc2V4cCIsInhfMDEzIiwic2V4cF9vZl9leHBhbnNpb25zIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJyZXMxXzAxNyIsInJlczFfMDIxIiwiZXhwYW5zaW9uc19vZl95b2pzb24iLCJ2MSQxIiwidjEkMiIsInlvanNvbl9vZl9leHBhbnNpb25zIiwib2xkX21vbGRzIiwiZm9ybXNfYXNzb2MiLCJtb2xkcyQwIiwiaGQkMCIsImRlbGF5ZWRfZXhwYW5zaW9ucyIsImluc3RhbnRfZXhwYW5zaW9ucyIsImRlbGF5ZWRfZXhwYW5zaW9uIiwiaW5zdGFudF9leHBhbnNpb24iLCJpc19kZWxheWVkIiwia3ciLCJhbGxvd19tZXJnZSIsImFsbG93X2FwcGVuZF9yaWdodCIsImNoYXIkMCIsImFsbG93X2FwcGVuZF9sZWZ0IiwiYWxsb3dfaW5zZXJ0aW9uIiwibmV3X3QiLCJpc19jb21wbGV0ZSIsImxfc2hhcmQiLCJyX3NoYXJkIiwiaGFzX2VuZCIsImhhc19lbmRzIiwidG9fcGllY2UiLCJzb3J0ZWRfY2hpbGRyZW4iLCJjaGlsZHJlbiIsInNoYXJkcyIsImNoaWxkIiwiY29udGFpbmVkX2NoaWxkcmVuIiwic3BsaXRfc2hhcmRzIiwiZGlzYXNzZW1ibGUiLCJzaGFyZHMkMCIsImRpc2ludGVncmF0ZSIsInJlYXNzZW1ibGUiLCJtYXRjaCIsInBvcF9sIiwidGlsZSIsInBvcF9yIiwic2Vjb25kYXJ5IiwiZ3JvdXQiLCJmX3ciLCJmX2ciLCJmX3QiLCJuaWJfc29ydHMiLCJpc19ncm91dCIsImlzX3RpbGUiLCJtb25vdGlsZSIsImdldF9vdXRzaWRlX3NvcnRzIiwib3B0Iiwic3RoIiwiZGVmYXVsdF9zb3J0IiwibW9sZF9vZiIsImVtcHR5IiwicHBfcm9vdCIsInNob3dfcm9vdCIsIl83IiwiXzYiLCJfNSIsIl80IiwiYTEkMCIsImEyIiwiYTEkMSIsInJvb3Rfb2Zfc2V4cCIsImFyZzFfMDE0IiwicmVzMF8wMTUiLCJyZXMxXzAxNiIsImFyZzFfMDIxIiwicmVzMV8wMjMiLCJzZXhwX2FyZ3NfMDI2IiwiYXJnMl8wMjkiLCJhcmcxXzAyOCIsImFyZzBfMDI3IiwicmVzMF8wMzAiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwieF8wMzQiLCJhcmcwXzAzNSIsInJlczBfMDM2Iiwic2V4cF9vZl9yb290IiwiYXJnMV8wMzgiLCJhcmcwXzAzNyIsInJlczBfMDM5IiwicmVzMV8wNDAiLCJhcmcxXzA0MiIsInJlczBfMDQzIiwicmVzMV8wNDQiLCJhcmcyXzA0NyIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0OCIsInJlczFfMDQ5IiwicmVzMl8wNTAiLCJ4XzA1MSIsInJvb3Rfb2ZfeW9qc29uIiwidjIiLCJ2MSQzIiwidjEkNCIsInYyJDAiLCJ5b2pzb25fb2Zfcm9vdCIsInBwX2lwIiwic2hvd19pcCIsInJlbCIsInQxIiwidDIiLCJsYmwxIiwibGJsMiIsImVxIiwicjEiLCJsMiIsInNoYXBlJDAiLCJwcF9za2VsIiwic2hvd19za2VsIiwiXzAkMiIsIl8xJDEiLCJfMCQzIiwicG9wX2NoYWluIiwib3B0JDAiLCJwb3BwZWQiLCJvcHQkMSIsIm9wdCQyIiwic2hhcGVzX29mX2NoYWluIiwiY2hhaW4iLCJsYXN0IiwiZmlyc3QiLCJwdXNoX291dHB1dCIsInN0YWNrcyIsInN0YWNrcyQwIiwic2h1bnRlZCIsInByZWMkMCIsInByZWMkMSIsInNwbGl0X2tpZHMkMCIsInNwbGl0X2tpZHMiLCJvdXRwdXQiLCJraWRzIiwia2lkcyQwIiwia2lkcyQxIiwib3V0cHV0JDAiLCJvdXRwdXQkMSIsImtpZHMkMiIsImtpZHMkMyIsImwkMSIsIm91dHB1dCQyIiwia2lkcyQ0IiwiciQxIiwia2lkcyQ1Iiwib3V0cHV0JDMiLCJraWRzJDYiLCJzdGFja3MkMSIsInB1c2hfc2h1bnRlZCIsImlwIiwiZmluaXNoIiwic2VnIiwiZm9sZF9yaWdodCIsIm9mX3RpbGUiLCJ0aWxlcyIsImluY29tcGxldGVfdGlsZXMiLCJjb252ZXhfZ3JvdXQiLCJjb250YWluc19tYXRjaGluZyIsInQkMCIsInJlbW92ZV9tYXRjaGluZyIsInNub2MiLCJzaGFwZV9hZmZpeCIsImFmZml4IiwiZW1wdHlfd2d3IiwiZ28iLCJ0bCQwIiwid2d3Iiwid3NzIiwid3NzJDAiLCJ3cyIsImNvbnZleCIsInNwbGl0X2J5X2dyb3V0IiwicmVtb2xkIiwicmVtb2xkX3BhdCIsInJlbW9sZF90eXAiLCJyZW1vbGRfdHBhdCIsInJlbW9sZF9ydWwiLCJyZW1vbGRfZXhwIiwicmVtb2xkX3RpbGUiLCJyZW1vbGRlZCIsImNoaWxkJDAiLCJ0cyIsInJlbW9sZF90eXBfdW5pIiwicmVzdCQwIiwic2hhcGUkMiIsInJlbW9sZGVkJDEiLCJyZW1vbGRlZCQwIiwic2hhcGUkMSIsInJlc3QiLCJyZW1vbGRfcGF0X3VuaSIsInJlc3QkMiIsInNoYXBlJDUiLCJzaGFwZSQ0IiwicmVtb2xkZWRfdHlwIiwicmVtb2xkZWRfcGF0IiwicmVzdCQxIiwic2hhcGUkMyIsInJlbW9sZF90cGF0X3VuaSIsInJlbW9sZF9leHBfdW5pIiwicmVzdCQ2Iiwic2hhcGUkOSIsInJlbW9sZGVkX2V4cCIsInJlc3QkMyIsInJlbW9sZGVkX2V4cCQwIiwicmVzdCQ0Iiwic2hhcGUkNiIsInJlbW9sZGVkX3RwYXQiLCJyZXN0JDUiLCJzaGFwZSQ3IiwicmVtb2xkZWRfZXhwJDEiLCJzaGFwZSQ4Iiwic2tlbCIsImVtcHR5JDAiLCJyZXYkMCIsImNvbnNfdyIsImNvbnNfZyIsInJtX3VwX3RvX29uZV9zcGFjZSIsIndzJDAiLCJ3c3MkMSIsImFkZF9ncm91dCIsInJlZ3JvdXQiLCJ0cmltIiwibmV3X3NwYWNlcyIsIm1lcmdlZCIsImdzJDAiLCJ0b19zZWciLCJyZWdyb3V0JDAiLCJyZWdyb3V0X2FmZml4IiwidHJpbSQwIiwiYWZmaXgkMCIsInNwbGl0X2J5X21hdGNoaW5nIiwic2VnX3IiLCJzZWdfbCIsInRyaW1fZiIsInRyaW1fbCIsInBzIiwidHJpbV9zZWNvbmRhcnkiLCJ4cyIsInhzJDAiLCJ4cyQxIiwidHJpbV9ncm91dCIsInRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dCIsInRyaW1fZ3JvdXRfYXJvdW5kX3NlY29uZGFyeSIsInhzJDIiLCJlZGdlX3NoYXBlX29mIiwidHJpbW1lZCIsImVkZ2VfZGlyZWN0aW9uX29mIiwic2VyaWFsaXplIiwic2FtZWxpbmVfc2Vjb25kYXJ5IiwiZXhwZWN0ZWRfc29ydHMiLCJuX3IiLCJraWQiLCJuX2wiLCJzX2wiLCJzX3IiLCJpbnNpZGVfc29ydHMiLCJucyIsImxfc29ydCIsInJfc29ydCIsIm91dHNpZGVfc29ydHMiLCJob2xlcyIsInNlZ21lbnQiLCJnZXRfY2hpbGRyZW5zIiwiZ2V0X2luY29tcGxldGVfaWRzIiwiaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkIiwiZmlyc3Rfc3RyaW5nIiwibGFzdF9zdHJpbmciLCJub19zaWJsaW5ncyIsInVuemlwIiwiemlwIiwic3VmIiwicHJlIiwic2VsIiwicHJlcGVuZCIsInNpYnNzIiwic2licyIsImlzX21pc21hdGNoIiwiczEiLCJwdXNoIiwib250byIsInBvcCIsImZyb20iLCJzdWYkMCIsInByZSQwIiwibGVmdF9uZWlnaGJvciIsInJpZ2h0X25laWdoYm9yIiwibmVpZ2hib3JzIiwicl9zaWJzIiwibF9zaWJzIiwiZGlyZWN0aW9uX2JldHdlZW4iLCJtb2xkX2ZpdHRpbmdfYmV0d2VlbiIsImVycm9yX3NvdXJjZV8wMjUiLCJwcF9zdGVwIiwic2hvd19zdGVwIiwic3RlcF9vZl9zZXhwIiwic2V4cF9vZl9zdGVwIiwic3RlcF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcCIsInNleHBfMDAzIiwiZmllbGRfc2V4cHNfMDA0IiwiaWRfMDA1IiwibGFiZWxfMDA3IiwibW9sZF8wMDkiLCJzaGFyZHNfMDExIiwiY2hpbGRyZW5fMDEzIiwiZHVwbGljYXRlc18wMTUiLCJleHRyYV8wMTYiLCJpdGVyXzAzNiIsInNleHBfMDAzJDAiLCJmaWVsZF9zZXhwc18wMTkiLCJmaWVsZF9uYW1lXzAxNyIsInRhaWxfMDM3IiwiZmllbGRfc2V4cF8wMTgkNSIsImZpZWxkX3NleHBfMDE4IiwieF8wMzgiLCJmaWVsZF9zZXhwXzAxOCQwIiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAxOCQxIiwiZmllbGRfc2V4cF8wMTgkMiIsImZpZWxkX3NleHBfMDE4JDMiLCJmaWVsZF9zZXhwXzAxOCQ0IiwiZnZhbHVlXzAyNiIsImNoaWxkcmVuXzAxNCIsInNoYXJkc18wMTIiLCJtb2xkXzAxMCIsImxhYmVsXzAwOCIsImlkXzAwNiIsImNoaWxkcmVuXzA1MiIsInNoYXJkc18wNDYiLCJtb2xkXzA0NCIsImxhYmVsXzA0MiIsImlkXzA0MCIsImFyZzFfMDU1IiwicmVzMF8wNTYiLCJyZXMxXzA1NyIsImFyZ18wNTMiLCJibmRzXzAzOSIsImFyZzFfMDQ5IiwicmVzMF8wNTAiLCJyZXMxXzA1MSIsImFyZ18wNDciLCJibmRzXzAzOSQwIiwiYm5kc18wMzkkMSIsImJuZHNfMDM5JDIiLCJhcmdfMDQxIiwiYm5kc18wMzkkMyIsImoiLCJraWRzX3IiLCJraWRzX2wiLCJzaGFyZHNfciIsInNoYXJkc19sIiwiZmxhdHRlbiIsImNvbnRhaW5lcl9zaGFyZHMiLCJtYXRjaF9sIiwibWF0Y2hfciIsInRfciIsInRfbCIsInBwX2dlbmVyYXRpb24iLCJzaG93X2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3NleHAiLCJzZXhwX29mX2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9nZW5lcmF0aW9uIiwieF8wMTQiLCJwYXJlbnQiLCJ6aXBfZ2VuIiwiYW5jcyIsImEkMCIsInJlZ3JvdXRlZCIsInRyaW1fciIsInRyaW1fbCQwIiwidHJpbV9yJDAiLCJwYXJlbnRfbWF0Y2hlcyIsInRpY2siLCJ0aW1lIiwibHQiLCJtYXhfdGltZSIsInVwZGF0ZSIsImVzIiwidGQiLCJlIiwibGFtIiwidXBfYXJyb3ciLCJkb3duX2Fycm93IiwibGVmdF9hcnJvdyIsInJpZ2h0X2Fycm93IiwibmJzcCIsInp3c3AiLCJ0eXBlQXJyb3dTeW0iLCJjYXN0QXJyb3dTeW0iLCJjYXN0QmFja0Fycm93U3ltIiwiZWxsaXBzaXMiLCJzdG9wIiwiZGlzdGFuY2VfYXV4Iiwic3RhcnQiLCJjb3VudCIsInN0YXJ0JDAiLCJjb3VudCQwIiwiY291bnQkMSIsInN0YXJ0JDEiLCJjb3VudCQyIiwic3RhcnQkMiIsImNvdW50JDMiLCJzdGFydCQzIiwic3RhcnQkNCIsImVycm9yX3NvdXJjZV8wMTciLCJ6ZXJvIiwiZXJyb3Jfc291cmNlXzA0MCIsImVycm9yX3NvdXJjZV8wNTUiLCJwcF9yb3ciLCJzaG93X3JvdyIsInJvd19vZl9zZXhwIiwic2V4cF9vZl9yb3ciLCJyb3dfb2ZfeW9qc29uIiwieW9qc29uX29mX3JvdyIsInBwX2NvbCIsInNob3dfY29sIiwiY29sX29mX3NleHAiLCJzZXhwX29mX2NvbCIsImNvbF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY29sIiwiZmllbGRfc2V4cHNfMDA1Iiwicm93XzAwNiIsImNvbF8wMDgiLCJpdGVyXzAxOCIsInNleHBfMDA0JDAiLCJ0YWlsXzAxOSIsInhfMDIwIiwiY29sXzAwOSIsInJvd18wMDciLCJjb2xfMDI0Iiwicm93XzAyMiIsImJuZHNfMDIxIiwiYXJnXzAyMyIsImJuZHNfMDIxJDAiLCJyb3dfZmllbGQiLCJjb2xfZmllbGQiLCJjb2xfdmFsdWUiLCJyb3dfdmFsdWUiLCJ2X2NvbCIsInZfcm93IiwiZXF1YWxzIiwicSIsImNvbXAiLCJjdXJyZW50IiwidGFyZ2V0IiwiZGNvbXAiLCJkaXJlY3Rpb24iLCJiIiwicHBfbWVhc3VyZW1lbnQiLCJzaG93X21lYXN1cmVtZW50IiwibWVhc3VyZW1lbnRfb2Zfc2V4cCIsInNleHBfMDI3IiwiZmllbGRfc2V4cHNfMDI4Iiwib3JpZ2luXzAyOSIsImxhc3RfMDMxIiwiZHVwbGljYXRlc18wMzMiLCJleHRyYV8wMzQiLCJpdGVyXzA0MSIsInNleHBfMDI3JDAiLCJmaWVsZF9zZXhwc18wMzciLCJmaWVsZF9uYW1lXzAzNSIsInRhaWxfMDQyIiwiZmllbGRfc2V4cF8wMzYkMiIsImZpZWxkX3NleHBfMDM2IiwieF8wNDMiLCJmaWVsZF9zZXhwXzAzNiQwIiwiZnZhbHVlXzAzOSIsImZpZWxkX3NleHBfMDM2JDEiLCJmdmFsdWVfMDM4IiwibGFzdF8wMzIiLCJvcmlnaW5fMDMwIiwic2V4cF9vZl9tZWFzdXJlbWVudCIsImxhc3RfMDQ3Iiwib3JpZ2luXzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImJuZHNfMDQ0JDAiLCJtZWFzdXJlbWVudF9vZl95b2pzb24iLCJvcmlnaW5fZmllbGQiLCJsYXN0X2ZpZWxkIiwibGFzdF92YWx1ZSIsIm9yaWdpbl92YWx1ZSIsInlvanNvbl9vZl9tZWFzdXJlbWVudCIsInZfbGFzdCIsInZfb3JpZ2luIiwibWF4X2NvbCIsInJzIiwibWluX2NvbCIsInBwX3NoYXJkIiwic2hvd19zaGFyZCIsInNoYXJkX29mX3NleHAiLCJzZXhwXzA1NCIsImFyZzFfMDUxIiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInNleHBfb2Zfc2hhcmQiLCJhcmcxXzA1NyIsImFyZzBfMDU2IiwicmVzMF8wNTgiLCJyZXMxXzA1OSIsInNoYXJkX29mX3lvanNvbiIsInlvanNvbl9vZl9zaGFyZCIsInBwJDEiLCJ0X29mX3NleHAkMSIsInhfMDYxIiwic2V4cF9vZl90JDEiLCJ4XzA2MiIsInRfb2ZfeW9qc29uJDEiLCJ5b2pzb25fb2ZfdCQxIiwic3BsaXRfYnlfcm93Iiwicm93cyIsInJvdyIsImFkZF9zIiwiYWRkX3QiLCJhZGRfZyIsImFkZF93IiwiYWRkX3AiLCJhZGRfcm93IiwiYWRkX2xiIiwiaW5kZW50Iiwic2luZ2xldG9uX3ciLCJzaW5nbGV0b25fZyIsInNpbmdsZXRvbl9zIiwic2hhcmQiLCJmaW5kX29wdF9zaGFyZHMiLCJmaW5kX3NoYXJkcyIsImZpbmRfb3B0X2xiIiwiZmluZF9zaGFyZHMkMCIsImZpbmRfdyIsImZpbmRfZyIsImZpbmRfdCIsImZpbmRfcCIsImZpbmRfYnlfaWQiLCJtJDAiLCJwb3N0X3RpbGVfaW5kZW50IiwiY29tcGxldGVfZnVuIiwibWlzc2luZ19yaWdodF9leHRyZW1lIiwiY29tcGxldGVfZnVuJDAiLCJtaXNzaW5nX2xlZnRfZXh0cmVtZSIsImlzX2luZGVudGVkX21hcCIsImlzX2luZGVudGVkIiwic3RoJDAiLCJpc19pbmRlbnRlZCQwIiwibWFwJDAiLCJvZl9zZWdtZW50Iiwib2xkIiwidG91Y2hlZCIsImdvX25lc3RlZCIsImNvbnRhaW5lcl9pbmRlbnQiLCJvcmlnaW4iLCJ0aW1lJDAiLCJ0aW1lJDEiLCJmaXJzdF90b3VjaGVkX2luY29tcGxldGUiLCJnb19zZXEiLCJjb250YWluZWRfaW5kZW50IiwibWFwJDYiLCJ0b2tlbiIsImFkZF9zaGFyZCIsImNoaWxkX21hcCIsImNoaWxkX2xhc3QiLCJtYXAkMSIsIm9yaWdpbiQwIiwiY29udGFpbmVkX2luZGVudCQwIiwibGFzdCQwIiwibWFwJDMiLCJyb3dfaW5kZW50IiwiaW5kZW50JDAiLCJ0b3VjaGVkJDAiLCJ0b3VjaGVkJDEiLCJpbmRlbnQkMSIsImxhc3QkMSIsIm1hcCQ0Iiwid3NwYWNlX2xlbmd0aCIsIm9yaWdpbiQxIiwibWFwJDUiLCJtYXAkMiIsInRsX2xhc3QiLCJzZWdtZW50X29yaWdpbiIsInNlZ21lbnRfbGFzdCIsInNlZ21lbnRfaGVpZ2h0Iiwic2VnbWVudF93aWR0aCIsIndpZHRoX2Nvc3QiLCJtYXhfd2lkdGgiLCJvdmVyZmxvdyIsImVycm9yX3NvdXJjZV8wMzMiLCJwcF9idWZmZXIiLCJzaG93X2J1ZmZlciIsImJ1ZmZlcl9vZl9zZXhwIiwic2V4cF9vZl9idWZmZXIiLCJidWZmZXJfb2ZfeW9qc29uIiwieW9qc29uX29mX2J1ZmZlciIsInBwX21vZGUiLCJzaG93X21vZGUiLCJtb2RlX29mX3NleHAiLCJzZXhwX29mX21vZGUiLCJtb2RlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb2RlIiwic2V4cF8wMTciLCJmaWVsZF9zZXhwc18wMTgiLCJmb2N1c18wMTkiLCJjb250ZW50XzAyMSIsIm1vZGVfMDIzIiwiZHVwbGljYXRlc18wMjUiLCJleHRyYV8wMjYiLCJpdGVyXzAzNCIsInNleHBfMDE3JDAiLCJmaWVsZF9zZXhwc18wMjkiLCJmaWVsZF9uYW1lXzAyNyIsInRhaWxfMDM1IiwiZmllbGRfc2V4cF8wMjgkMyIsImZpZWxkX3NleHBfMDI4IiwieF8wMzYiLCJmaWVsZF9zZXhwXzAyOCQwIiwiZnZhbHVlXzAzMCIsImZpZWxkX3NleHBfMDI4JDEiLCJmaWVsZF9zZXhwXzAyOCQyIiwiZnZhbHVlXzAzMSIsIm1vZGVfMDI0IiwiY29udGVudF8wMjIiLCJmb2N1c18wMjAiLCJtb2RlXzA0MiIsImNvbnRlbnRfMDQwIiwiZm9jdXNfMDM4IiwiYm5kc18wMzciLCJibmRzXzAzNyQwIiwiYXJnXzAzOSIsImJuZHNfMDM3JDEiLCJmb2N1c19maWVsZCIsIm1vZGVfZmllbGQiLCJtb2RlX3ZhbHVlIiwiZm9jdXNfdmFsdWUiLCJ2X21vZGUiLCJ2X2ZvY3VzIiwibW9kZSIsImZvY3VzIiwibWtfYnVmZmVyIiwiYnVmZmVyIiwiaXNfYnVmZmVyIiwiYnVmZmVyX2lkcyIsInRvZ2dsZV9mb2N1cyIsInNlbGVjdGlvbiIsImlzX2VtcHR5IiwiY29udGVudCQwIiwicCQyIiwic3BsaXRfcGllY2UiLCJvcmQiLCJpX3IiLCJpX2wiLCJndCIsInVuIiwiZGlzb3JkZXJlZCIsImx0X29yX3VuIiwibHMiLCJhZGRfdGlsZSIsInRyYW5fY2xvc2UiLCJrZXlzIiwibWVtIiwiZXhpc3RzX21lbSIsIm1lcmdlJDEiLCJhZGRfdGlsZSQwIiwiY3MiLCJjIiwiYyQwIiwiaW5pdCQxIiwiYWRkX3NlbCIsImNvdW50cyIsIm9yZGVyIiwicHJldiIsImN1cnIiLCJwcmV2JDAiLCJzaGFyZF9pbmZvIiwiYnAiLCJpbmZvIiwic2hhcmRfaW5mbyQwIiwicHVzaF9zIiwiZmlyc3QkMCIsInJlc3RyaWN0ZWQiLCJ3aWxsX2JhcmYiLCJyZW1vdmVfdW5pX3RpbGVzX3dpdGhfZGVlcF9tYXQiLCJzaWJsaW5nc18wMDQiLCJhbmNlc3RvcnNfMDA2IiwiZHVwbGljYXRlc18wMDgiLCJleHRyYV8wMDkiLCJpdGVyXzAxNiIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJhbmNlc3RvcnNfMDA3Iiwic2libGluZ3NfMDA1IiwiYW5jZXN0b3JzXzAyMiIsInNpYmxpbmdzXzAyMCIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJzaWJsaW5nc19maWVsZCIsImFuY2VzdG9yc19maWVsZCIsImFuY2VzdG9yc192YWx1ZSIsInNpYmxpbmdzX3ZhbHVlIiwidl9hbmNlc3RvcnMiLCJ2X3NpYmxpbmdzIiwic2libGluZ3MiLCJhbmNlc3RvcnMiLCJzaWJsaW5ncyQwIiwiYW5jZXN0b3IiLCJzaWJsaW5ncyQxIiwibG9jYWxfaW5jb21wbGV0ZV90aWxlcyIsImRlbGV0ZV9wYXJlbnQiLCJhbmNlc3RvcnMkMCIsInBfc2licyIsImdzX2wiLCJnc19yIiwiZ19sIiwiZ19yIiwidHJpbV9yJDEiLCJwcmVwZW5kX2dlbmVyYXRpb24iLCJwcmVwZW5kX3NpYmxpbmdzIiwicnNzIiwiY2F0IiwicmVhc3NlbWJsZV9wYXJlbnQiLCJmbGF0dGVuX21hdGNoIiwiaW5uZXJfbCIsIm91dGVyX2wiLCJhJDEiLCJvdXRlcl9yIiwiaW5uZXJfciIsImEkMiIsImEkMyIsInJlYXNzZW1ibGVfc2libGluZ3MiLCJycyQwIiwib3V0ZXJfciQwIiwibWF0Y2hfciQwIiwiaW5uZXJfciQwIiwiZXJyb3Jfc291cmNlXzA1MSIsImFyZzFfMDEzIiwicmVzMV8wMTUiLCJkZWNyZW1lbnQiLCJvZmZzZXQiLCJzZWxlY3Rpb25fMDE5IiwiYmFja3BhY2tfMDIxIiwicmVsYXRpdmVzXzAyMyIsImNhcmV0XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4IiwiZmllbGRfc2V4cHNfMDMxIiwiZmllbGRfbmFtZV8wMjkiLCJmaWVsZF9zZXhwXzAzMCQ0IiwiZmllbGRfc2V4cF8wMzAiLCJmaWVsZF9zZXhwXzAzMCQwIiwiZmllbGRfc2V4cF8wMzAkMSIsImZpZWxkX3NleHBfMDMwJDIiLCJmaWVsZF9zZXhwXzAzMCQzIiwiY2FyZXRfMDI2IiwicmVsYXRpdmVzXzAyNCIsImJhY2twYWNrXzAyMiIsInNlbGVjdGlvbl8wMjAiLCJjYXJldF8wNDciLCJyZWxhdGl2ZXNfMDQ1IiwiYmFja3BhY2tfMDQzIiwic2VsZWN0aW9uXzA0MSIsImJuZHNfMDQwJDIiLCJzZWxlY3Rpb25fZmllbGQiLCJiYWNrcGFja19maWVsZCIsInJlbGF0aXZlc19maWVsZCIsImNhcmV0X2ZpZWxkIiwiY2FyZXRfdmFsdWUiLCJyZWxhdGl2ZXNfdmFsdWUiLCJiYWNrcGFja192YWx1ZSIsInNlbGVjdGlvbl92YWx1ZSIsInZfY2FyZXQiLCJ2X3JlbGF0aXZlcyIsInZfYmFja3BhY2siLCJ2X3NlbGVjdGlvbiIsIm5leHRfYmxhbmsiLCJwcF9jaHVua2luZXNzIiwic2hvd19jaHVua2luZXNzIiwiY2h1bmtpbmVzc19vZl9zZXhwIiwic2V4cF8wNTIiLCJzZXhwX29mX2NodW5raW5lc3MiLCJjaHVua2luZXNzX29mX3lvanNvbiIsInlvanNvbl9vZl9jaHVua2luZXNzIiwicHBfcGxhbmFyIiwic2hvd19wbGFuYXIiLCJwbGFuYXJfb2Zfc2V4cCIsInNleHBfMDU3IiwidGFnXzA1OCIsInNleHBfYXJnc18wNjQiLCJhcmcwXzA2NSIsInJlczBfMDY2Iiwic2V4cF9hcmdzXzA1OSIsImFyZzBfMDYwIiwicmVzMF8wNjEiLCJzZXhwX29mX3BsYW5hciIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJhcmcwXzA2OSIsInJlczBfMDcwIiwicGxhbmFyX29mX3lvanNvbiIsInlvanNvbl9vZl9wbGFuYXIiLCJmcm9tX3BsYW5lIiwidXBkYXRlX2NhcmV0IiwieiIsInNldF9jYXJldCIsImNhcmV0IiwidXBkYXRlX3JlbGF0aXZlcyIsInVwZGF0ZV9zaWJsaW5ncyIsInNpYnNfd2l0aF9zZWwiLCJwb3BfYmFja3BhY2siLCJsZWZ0X25laWdoYm9yX21vbm90aWxlIiwicmlnaHRfbmVpZ2hib3JfbW9ub3RpbGUiLCJuZWlnaGJvcl9tb25vdGlsZXMiLCJyZWxhdGl2ZXMiLCJyZW1vbGRfcmVncm91dCIsImNsZWFyX3VucGFyc2VkX2J1ZmZlciIsInVuc2VsZWN0IiwiZXJhc2VfYnVmZmVyIiwieiQwIiwidW5zZWxlY3RfYW5kX3ppcCIsInVwZGF0ZV9zZWxlY3Rpb24iLCJwdXRfc2VsZWN0aW9uIiwiZ3Jvd19zZWxlY3Rpb24iLCJzaHJpbmtfc2VsZWN0aW9uIiwic2VsZWN0aW9uJDAiLCJkaXJlY3Rpb25hbF91bnNlbGVjdCIsIm1vdmUiLCJyZWxhdGl2ZXMkMCIsInNlbGVjdCIsInBpY2tfdXAiLCJzZWxlY3RlZCIsImJhY2twYWNrIiwiZGVzdHJ1Y3QiLCJkZXN0cm95X2tpZHMiLCJ0b19yZW1vdmUiLCJ0b19waWNrX3VwIiwidG9fcGlja191cCQwIiwiYmFja3BhY2skMCIsImRlbGV0ZSQwIiwicHV0X2Rvd24iLCJjb25zdHJ1Y3QiLCJsYWJlbCQwIiwibGFiZWwkMSIsInokMSIsInNlbGVjdGlvbnMkMCIsImJhY2twYWNrJDEiLCJjb250ZW50JDEiLCJpZCQxIiwic2VsZWN0aW9ucyIsImNvbnN0cnVjdF9tb25vIiwicmVwbGFjZSIsInJlcGxhY2VfbW9ubyIsInJlcHJlc2VudGF0aXZlX3BpZWNlIiwiY2FyZXRfZGlyZWN0aW9uIiwiYmFzZV9wb2ludCIsIm1lYXN1cmVkIiwiY2FyZXRfcG9pbnQiLCJjb2wiLCJkZXNlcmlhbGl6ZSIsImRhdGEiLCJjYW5fcHV0X2Rvd24iLCJzZXRfYnVmZmVyIiwiaXNfbGluZWJyZWFrX3RvX3JpZ2h0X29mX2NhcmV0IiwidHJ5X3RvX2R1bXBfYmFja3BhY2siLCJ6aXBwZXIiLCJ6aXBwZXIkMCIsIm1vdmVfdW50aWxfY2FudF9wdXRfZG93biIsInpfbGFzdCIsInpfbGFzdCQxIiwiel9sYXN0JDAiLCJ6X25ldyIsIm1vdmVfdW50aWxfY2FuX3B1dF9kb3duIiwiel9jYW4iLCJ6JDIiLCJ6X2NhbiQwIiwiel9jYW4kMSIsInokMyIsInokNCIsInNtYXJ0X3NlZyIsImR1bXBfYmFja3BhY2siLCJzZWdfZm9yX3ZpZXciLCJzZWdfZm9yX3NlbSIsInNlZ193aXRob3V0X2J1ZmZlciIsInBwX3QiLCJzaG93X3QiLCJwb2x5X2EiLCJvZl9hXzAwMSIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxNSIsImFyZzFfMDEyIiwiYXJnMF8wMTEiLCJyZXMxXzAxNCIsIm9mX2EiLCJleHRlbmQiLCJjdHgiLCJ4YSIsIm5ld19jdHgiLCJsb29rdXAiLCJjb250YWlucyIsImZpbHRlciIsInRvX2xpc3QiLCJmaW5kX21hcCIsImN0eCQwIiwiYXJnMV8wMTciLCJhcmcwXzAxNiIsInJlczFfMDE5IiwiZXF1YWwiLCJlcnJvcl9zb3VyY2VfMDA0IiwicHBfdmFyaWFudCIsInNob3dfdmFyaWFudCIsInZhcmlhbnRfb2Zfc2V4cCIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMl8wMTEiLCJyZXMyXzAxNCIsInNleHBfYXJnc18wMTciLCJyZXMwXzAxOSIsInNleHBfb2ZfdmFyaWFudCIsIm9mX2FfMDIxIiwiYXJnMl8wMjQiLCJhcmcxXzAyMyIsImFyZzBfMDIyIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsInJlczJfMDI3IiwiYXJnMF8wMjgiLCJ2YXJpYW50X29mX3lvanNvbiIsInlvanNvbl9vZl92YXJpYW50Iiwib2ZfYV8wMzEiLCJ4XzAzMyIsIm9mX2FfMDM0IiwieF8wMzUiLCJlcXVhbF9jb25zdHJ1Y3RvciIsInkiLCJjdHIxIiwieDEiLCJ5MSIsImN0cjIiLCJjdHIyJDAiLCJ4JDAiLCJ5JDAiLCJzYW1lX2NvbnN0cnVjdG9yIiwiaGFzX2JhZF9lbnRyeSIsImhhc19nb29kX2VudHJ5IiwiZnJlZV92YXJpYWJsZXMiLCJ2YWx1ZSIsImlzX2dyb3VuZCIsImlzX2hvbGUiLCJ2ZW5uX3JlZ2lvbnMiLCJ5cyIsImxlZnQiLCJyaWdodCIsInlzJDAiLCJhY2MkMCIsImxlZnQkMCIsInlzJDEiLCJhY2MkMSIsImxlZnQkMSIsImpvaW5fZW50cnkiLCJqb2luIiwiaWRzMSIsInZhbHVlMSIsInZhbHVlMiIsIm0xIiwibTIiLCJpbnRlciIsImpvaW5fZW50cmllcyIsIm1hdGNoX3N5bnN3aXRjaCIsImN0ciIsImFyZ3MiLCJ2YWx1ZSQwIiwiZ2V0X2VudHJ5IiwiY3RyJDAiLCJoYXNfY29uc3RydWN0b3Jfbm9fYXJncyIsInBwX2FjdGlvbiIsInNob3dfYWN0aW9uIiwiYWN0aW9uX29mX3NleHAiLCJzZXhwX29mX2FjdGlvbiIsImFjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYWN0aW9uIiwicHBfY291bnQiLCJzaG93X2NvdW50IiwiY291bnRfb2Zfc2V4cCIsInNleHBfb2ZfY291bnQiLCJjb3VudF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY291bnQiLCJzZXhwXzAxNCIsInN0cmluZ19vZl90IiwiaWRzXzAwNSIsImNvcGllZF8wMDciLCJ0ZXJtXzAwOSIsImR1cGxpY2F0ZXNfMDExIiwiZXh0cmFfMDEyIiwiZmllbGRfc2V4cHNfMDE1IiwiZmllbGRfbmFtZV8wMTMiLCJmaWVsZF9zZXhwXzAxNCQzIiwiZmllbGRfc2V4cF8wMTQiLCJmaWVsZF9zZXhwXzAxNCQwIiwiZmllbGRfc2V4cF8wMTQkMSIsImZpZWxkX3NleHBfMDE0JDIiLCJ0ZXJtXzAxMCIsImNvcGllZF8wMDgiLCJpZHNfMDA2Iiwib2ZfYV8wMjMiLCJ0ZXJtXzAyOSIsImNvcGllZF8wMjciLCJpZHNfMDI1IiwiYXJnXzAzMCIsImJuZHNfMDI0IiwiYm5kc18wMjQkMCIsImJuZHNfMDI0JDEiLCJpZHNfZmllbGQiLCJjb3BpZWRfZmllbGQiLCJ0ZXJtX2ZpZWxkIiwidGVybV92YWx1ZSIsImNvcGllZF92YWx1ZSIsImlkc192YWx1ZSIsInZfdGVybSIsInZfY29waWVkIiwidl9pZHMiLCJmcmVzaCIsInRlcm0iLCJ0ZXJtX29mIiwidW53cmFwIiwicmVwX2lkIiwiZmFzdF9jb3B5IiwibmV3X2lkcyIsImNvcGllZCIsImVycl9tc2ciLCJlcnIiLCJzdHJ1Y3R1cmVfc2hhcmVfbWFwIiwic3RydWN0dXJlX3NoYXJlZF9vZl9zZXhwIiwic2V4cF9vZl9zdHJ1Y3R1cmVfc2hhcmVkIiwic3RydWN0dXJlX3NoYXJlX2hlcmUiLCJrZXlfZiIsInRoaW5nIiwia2V5IiwidGhpbmdfcyIsInN0cnVjdHVyZV9zaGFyZV9pbiIsInJlc3VsdCIsInNleHAkMCIsInZhbGlkX3JlZ2V4IiwiaXNfdmFsaWQiLCJjaGVja192YWxpZCIsImlzX3RydWUiLCJpc19mYWxzZSIsImlzX2xldCIsImlzX2Z1biIsImlzX2Nhc2UiLCJzcGxpdCIsInBvcyIsImxlZnRfdmFyIiwicmlnaHRfdmFyIiwiY2FyZGluYWwiLCJzaW5nbGV0b24kMCIsInVwZGF0ZSQwIiwidW5pb24kMCIsImN0eDEiLCJjdHgyIiwiZmlsdGVyJDAiLCJmb2xkJDAiLCJvZl9saXN0IiwiYmluZGluZ3MiLCJwcF90JDAiLCJzaG93X3QkMCIsIm9mX2FfMDE5Iiwic2V4cF8wMjEiLCJmaWVsZF9zZXhwc18wMjIiLCJtYXBfMDIzIiwicmV2X29yZGVyXzAyNSIsIml0ZXJfMDQwIiwic2V4cF8wMjEkMCIsInRhaWxfMDQxIiwieF8wNDIiLCJzZXhwXzAzNiIsImFyZzFfMDMzIiwiYXJnMF8wMzIiLCJyZXMwXzAzNCIsInJlczFfMDM1IiwicmV2X29yZGVyXzAyNiIsIm1hcF8wMjQiLCJvZl9hXzA0MyIsInJldl9vcmRlcl8wNDciLCJtYXBfMDQ1IiwiYXJnMV8wNTAiLCJhcmcwXzA0OSIsInJlczFfMDUyIiwiYm5kc18wNDQkMSIsIm1hcF9maWVsZCIsInJldl9vcmRlcl9maWVsZCIsInJldl9vcmRlcl92YWx1ZSIsIm1hcF92YWx1ZSIsInZfcmV2X29yZGVyIiwidl9tYXAiLCJmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50IiwiaXNfZW1wdHkkMCIsInNpbmdsZXRvbiQxIiwiZXh0ZW5kJDAiLCJyZXZfb3JkZXIiLCJ1bmlvbiQxIiwicmV2X29yZGVyMiIsIm1hcDIiLCJyZXZfb3JkZXIxIiwibWFwMSIsInVuaW9uX29yZGVyIiwib3JkZXIxIiwib3JkZXIxJDAiLCJyZXZfb3JkZXIyJDAiLCJyZXZfb3JkZXIyJDEiLCJsb29rdXAkMCIsImNvbnRhaW5zJDAiLCJtYXBrIiwibWFwbyIsImZpbHRlcmsiLCJyZXZfb3JkZXIkMCIsImZpbHRlcm8iLCJmb2xkayIsImZvbGRvIiwidG9fbGlzdGsiLCJ0b19saXN0byIsIm9mX2xpc3QkMCIsIndpdGhvdXRfa2V5cyIsImVycm9yX3NvdXJjZV83NTciLCJlcnJvcl9zb3VyY2VfMDYwIiwiZXJyb3Jfc291cmNlXzQzOCIsImVycm9yX3NvdXJjZV81NTkiLCJlcnJvcl9zb3VyY2VfNTc3IiwiZXJyb3Jfc291cmNlXzU4OCIsImVycm9yX3NvdXJjZV82ODEiLCJlcnJvcl9zb3VyY2VfNzA5IiwiZXJyb3Jfc291cmNlXzc3NiIsInRwX2xvYyQ5IiwiZXJyb3Jfc291cmNlXzc4NyIsInRwX2xvYyQxMCIsImNvbnRpbnVlJDAiLCJ4Xzc0OSIsInhfNzUwIiwic2V4cF83NTYiLCJhcmcxXzc1MyIsImFyZzBfNzUyIiwicmVzMF83NTQiLCJyZXMxXzc1NSIsImFyZzFfNzU5IiwiYXJnMF83NTgiLCJyZXMwXzc2MCIsInJlczFfNzYxIiwid3JhcCIsImVpIiwiaWRfb2YiLCJtYXBfb2YiLCJ0X29mX3NleHAkMiIsInNleHBfb2ZfdCQyIiwiZW52Iiwib2ZfZW52aXJvbm1lbnQiLCJpZF9lcXVhbCIsImVudjEiLCJlbnYyIiwibGVuZ3RoJDAiLCJ1cGRhdGVfa2VlcF9pZCIsInhyIiwiZXh0ZW5kX2tlZXBfaWQiLCJ1bmlvbl9rZWVwX2lkIiwibWFwX2tlZXBfaWQiLCJmaWx0ZXJfa2VlcF9pZCIsImZvbGQiLCJwbGFjZWhvbGRlciIsIndpdGhvdXRfa2V5cyQwIiwic2hvdyQxIiwiYTAkMyIsImEwJDQiLCJhMCQ1IiwidF9vZl9zZXhwJDMiLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMF8wMzgiLCJzZXhwX2FyZ3NfMDMyIiwiYXJnMF8wMzMiLCJzZXhwX2FyZ3NfMDI3Iiwic2V4cF9hcmdzXzAyMiIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJzZXhwX29mX3QkMyIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJhcmcwXzA0MiIsImFyZzBfMDQ0IiwicmVzMF8wNDUiLCJ0X29mX3lvanNvbiQyIiwieW9qc29uX2FyZ3MkNSIsInYwJDExIiwidjAkMTIiLCJ5b2pzb25fYXJncyQ0IiwidjAkOSIsInYwJDEwIiwieW9qc29uX2FyZ3MkMyIsInYwJDciLCJ2MCQ4IiwieW9qc29uX29mX3QkMiIsIm1hcF90ZXJtIiwiZl9leHAiLCJmX3BhdCIsInN0aCQxIiwiZl90eXAiLCJzdGgkMiIsImZfdHBhdCIsInN0aCQzIiwiZl9ydWwiLCJzdGgkNCIsImZfYW55IiwicmVjX2NhbGwiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJmYXN0X2VxdWFsIiwieSQxIiwieSQyIiwieSQzIiwieCQ0IiwieSQ0IiwicHBfZGVmZXJyYWxfcG9zaXRpb24iLCJzaG93X2RlZmVycmFsX3Bvc2l0aW9uIiwiZGVmZXJyYWxfcG9zaXRpb25fb2Zfc2V4cCIsInNleHBfb2ZfZGVmZXJyYWxfcG9zaXRpb24iLCJkZWZlcnJhbF9wb3NpdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZGVmZXJyYWxfcG9zaXRpb24iLCJwcF90ZXJtIiwic2hvd190ZXJtIiwicHAkMiIsInNob3ckMiIsIl81NCIsIl81MyIsIl81MiIsIl81MSIsIl81MCIsIl80OSIsIl80OCIsIl80NyIsIl80NiIsIl80NSIsIl80NCIsIl80MyIsIl80MiIsIl80MSIsIl80MCIsIl8zOSIsIl8zOCIsIl8zNyIsIl8zNiIsIl8zNSIsIl8zNCIsIl8zMyIsIl8zMiIsIl8zMSIsIl8zMCIsIl8yOSIsIl8yOCIsIl8yNyIsIl8yNiIsIl8yNSIsIl8yNCIsIl8yMyIsIl8yMiIsIl8yMSIsIl8yMCIsIl8xOSIsIl8xOCIsIl8xNyIsIl8xNiIsIl8xNSIsIl8xNCIsIl8xMyIsIl8xMiIsIl8xMSIsIl8xMCIsIl85IiwiXzgiLCJfNCQwIiwiXzMkMCIsIl8xJDIiLCJhMCQ2IiwiYTAkNyIsImEwJDgiLCJhMCQ5IiwiYTMiLCJhMiQwIiwiYTAkMTAiLCJhMiQxIiwiYTEkMiIsImEwJDExIiwiYTAkMTIiLCJhMCQxMyIsImEyJDIiLCJhMSQzIiwiYTAkMTQiLCJhMiQzIiwiYTEkNCIsImEwJDE1IiwiYTIkNCIsImExJDUiLCJhMCQxNiIsImEyJDUiLCJhMSQ2IiwiYTAkMTciLCJhMSQ3IiwiYTAkMTgiLCJhMSQ4IiwiYTAkMTkiLCJhMiQ2IiwiYTEkOSIsImEwJDIwIiwiYTEkMTAiLCJhMCQyMSIsImEwJDIyIiwiYTEkMTEiLCJhMCQyMyIsImExJDEyIiwiYTAkMjQiLCJhMCQyNSIsImExJDEzIiwiYTAkMjYiLCJhMSQxNCIsImEwJDI3IiwiYTEkMTUiLCJhMCQyOCIsImEyJDciLCJhMSQxNiIsImEwJDI5IiwiYTAkMzAiLCJhMSQxNyIsImEwJDMxIiwiYTIkOCIsImExJDE4IiwiYTAkMzIiLCJfMSQzIiwidGVybV9vZl9zZXhwIiwidF9vZl9zZXhwJDQiLCJzZXhwXzA2MiIsInRhZ18wNjMiLCJzZXhwX2FyZ3NfMjA1IiwiYXJnMl8yMDgiLCJhcmcxXzIwNyIsImFyZzBfMjA2IiwicmVzMF8yMDkiLCJyZXMxXzIxMCIsInJlczJfMjExIiwic2V4cF9hcmdzXzIxNCIsImFyZzFfMjE2IiwiYXJnMF8yMTUiLCJyZXMwXzIxNyIsInJlczFfMjE4Iiwic2V4cF9hcmdzXzExMCIsImFyZzBfMTExIiwicmVzMF8xMTIiLCJzZXhwX2FyZ3NfMjIxIiwiYXJnMF8yMjIiLCJyZXMwXzIyMyIsInNleHBfYXJnc18xNDUiLCJhcmcwXzE0NiIsInJlczBfMTQ3Iiwic2V4cF9hcmdzXzE3MyIsImFyZzJfMTc2IiwiYXJnMV8xNzUiLCJhcmcwXzE3NCIsInJlczBfMTc3IiwicmVzMV8xNzgiLCJyZXMyXzE3OSIsInNleHBfYXJnc18xOTEiLCJhcmcxXzE5MyIsImFyZzBfMTkyIiwicmVzMF8xOTQiLCJyZXMxXzE5NSIsInNleHBfYXJnc18xMzYiLCJhcmcyXzEzOSIsImFyZzFfMTM4IiwiYXJnMF8xMzciLCJyZXMwXzE0MCIsInJlczFfMTQxIiwicmVzMl8xNDIiLCJzZXhwX2FyZ3NfMjU5IiwiYXJnMV8yNjEiLCJhcmcwXzI2MCIsInJlczBfMjYyIiwicmVzMV8yNjMiLCJzZXhwX2FyZ3NfMTUwIiwiYXJnMF8xNTEiLCJyZXMwXzE1MiIsInNleHBfYXJnc18xMDAiLCJhcmcwXzEwMSIsInJlczBfMTAyIiwic2V4cF9hcmdzXzE1NSIsImFyZzJfMTU4IiwiYXJnMV8xNTciLCJhcmcwXzE1NiIsInJlczBfMTU5IiwicmVzMV8xNjAiLCJyZXMyXzE2MSIsInNleHBfYXJnc18yNTIiLCJhcmcxXzI1NCIsImFyZzBfMjUzIiwicmVzMF8yNTUiLCJyZXMxXzI1NiIsInNleHBfYXJnc18xMTUiLCJhcmcwXzExNiIsInJlczBfMTE3Iiwic2V4cF9hcmdzXzI4MCIsImFyZzFfMjg3IiwiYXJnMF8yODYiLCJyZXMwXzI4OCIsInNleHBfMjg1IiwiYXJnMV8yODIiLCJhcmcwXzI4MSIsInJlczBfMjgzIiwicmVzMV8yODQiLCJyZXMxXzI4OSIsInNleHBfYXJnc18wNjkiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwic2V4cF9hcmdzXzI0MCIsImFyZzBfMjQxIiwicmVzMF8yNDIiLCJzZXhwX2FyZ3NfMDkwIiwiYXJnMF8wOTEiLCJyZXMwXzA5MiIsInNleHBfYXJnc18xOTgiLCJhcmcxXzIwMCIsImFyZzBfMTk5IiwicmVzMF8yMDEiLCJyZXMxXzIwMiIsInNleHBfYXJnc18wNzQiLCJhcmcxXzA3NiIsImFyZzBfMDc1IiwicmVzMV8wNzgiLCJzZXhwX2FyZ3NfMDgxIiwiYXJnMl8wODQiLCJhcmcxXzA4MyIsInJlczFfMDg2IiwicmVzMl8wODciLCJzZXhwX2FyZ3NfMjI2IiwiYXJnMV8yMjgiLCJhcmcwXzIyNyIsInJlczBfMjI5IiwicmVzMV8yMzAiLCJzZXhwX2FyZ3NfMTY0IiwiYXJnMl8xNjciLCJhcmcxXzE2NiIsImFyZzBfMTY1IiwicmVzMF8xNjgiLCJyZXMxXzE2OSIsInJlczJfMTcwIiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX2FyZ3NfMTI1IiwiYXJnM18xMjkiLCJhcmcyXzEyOCIsImFyZzFfMTI3IiwiYXJnMF8xMjYiLCJyZXMwXzEzMCIsInJlczFfMTMxIiwicmVzMl8xMzIiLCJyZXMzXzEzMyIsInNleHBfYXJnc18xODIiLCJhcmcyXzE4NSIsImFyZzFfMTg0IiwiYXJnMF8xODMiLCJyZXMwXzE4NiIsInJlczFfMTg3IiwicmVzMl8xODgiLCJzZXhwX2FyZ3NfMjY2IiwiYXJnMl8yNjkiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNzAiLCJyZXMxXzI3MSIsInJlczJfMjcyIiwic2V4cF9hcmdzXzA5NSIsImFyZzBfMDk2IiwicmVzMF8wOTciLCJzZXhwX2FyZ3NfMjc1IiwiYXJnMF8yNzYiLCJyZXMwXzI3NyIsInNleHBfYXJnc18yOTIiLCJhcmcyXzI5NSIsImFyZzFfMjk0IiwiYXJnMF8yOTMiLCJyZXMwXzI5NiIsInJlczFfMjk3IiwicmVzMl8yOTgiLCJzZXhwX2FyZ3NfMjMzIiwiYXJnMV8yMzUiLCJhcmcwXzIzNCIsInJlczBfMjM2IiwicmVzMV8yMzciLCJzZXhwX2FyZ3NfMjQ1IiwiYXJnMV8yNDciLCJhcmcwXzI0NiIsInJlczBfMjQ4IiwicmVzMV8yNDkiLCJzZXhwX2FyZ3NfMTIwIiwiYXJnMF8xMjEiLCJyZXMwXzEyMiIsInhfMzAwIiwic2V4cF9vZl90ZXJtIiwiYXJnMF8zMDEiLCJyZXMwXzMwMiIsImFyZzBfMzAzIiwicmVzMF8zMDQiLCJhcmcxXzMwNiIsImFyZzBfMzA1IiwicmVzMF8zMDciLCJzZXhwX29mX3QkNCIsInJlczFfMzA4IiwiYXJnMl8zMTEiLCJhcmcxXzMxMCIsImFyZzBfMzA5IiwicmVzMF8zMTIiLCJyZXMxXzMxMyIsInJlczJfMzE0IiwiYXJnMF8zMTUiLCJyZXMwXzMxNiIsImFyZzBfMzE3IiwicmVzMF8zMTgiLCJhcmcwXzMxOSIsInJlczBfMzIwIiwiYXJnMF8zMjEiLCJyZXMwXzMyMiIsImFyZzBfMzIzIiwicmVzMF8zMjQiLCJhcmcwXzMyNSIsInJlczBfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsImFyZzNfMzMyIiwiYXJnMl8zMzEiLCJhcmcxXzMzMCIsImFyZzBfMzI5IiwicmVzMF8zMzMiLCJyZXMxXzMzNCIsInJlczJfMzM1IiwicmVzM18zMzYiLCJhcmcyXzMzOSIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzM0MCIsInJlczFfMzQxIiwicmVzMl8zNDIiLCJhcmcwXzM0MyIsInJlczBfMzQ0IiwiYXJnMF8zNDUiLCJyZXMwXzM0NiIsImFyZzJfMzQ5IiwiYXJnMV8zNDgiLCJhcmcwXzM0NyIsInJlczBfMzUwIiwicmVzMV8zNTEiLCJyZXMyXzM1MiIsImFyZzJfMzU1IiwiYXJnMV8zNTQiLCJhcmcwXzM1MyIsInJlczBfMzU2IiwicmVzMV8zNTciLCJyZXMyXzM1OCIsImFyZzJfMzYxIiwiYXJnMV8zNjAiLCJhcmcwXzM1OSIsInJlczBfMzYyIiwicmVzMV8zNjMiLCJyZXMyXzM2NCIsImFyZzJfMzY3IiwiYXJnMV8zNjYiLCJhcmcwXzM2NSIsInJlczBfMzY4IiwicmVzMV8zNjkiLCJyZXMyXzM3MCIsImFyZzFfMzcyIiwiYXJnMF8zNzEiLCJyZXMwXzM3MyIsInJlczFfMzc0IiwiYXJnMV8zNzYiLCJhcmcwXzM3NSIsInJlczBfMzc3IiwicmVzMV8zNzgiLCJhcmcyXzM4MSIsImFyZzFfMzgwIiwiYXJnMF8zNzkiLCJyZXMwXzM4MiIsInJlczFfMzgzIiwicmVzMl8zODQiLCJhcmcxXzM4NiIsImFyZzBfMzg1IiwicmVzMF8zODciLCJyZXMxXzM4OCIsImFyZzBfMzg5IiwicmVzMF8zOTAiLCJhcmcxXzM5MiIsImFyZzBfMzkxIiwicmVzMF8zOTMiLCJyZXMxXzM5NCIsImFyZzFfMzk2IiwiYXJnMF8zOTUiLCJyZXMwXzM5NyIsInJlczFfMzk4IiwiYXJnMF8zOTkiLCJyZXMwXzQwMCIsImFyZzFfNDAyIiwiYXJnMF80MDEiLCJyZXMwXzQwMyIsInJlczFfNDA0IiwiYXJnMV80MDYiLCJhcmcwXzQwNSIsInJlczBfNDA3IiwicmVzMV80MDgiLCJhcmcxXzQxMCIsImFyZzBfNDA5IiwicmVzMF80MTEiLCJyZXMxXzQxMiIsImFyZzJfNDE1IiwiYXJnMV80MTQiLCJhcmcwXzQxMyIsInJlczBfNDE2IiwicmVzMV80MTciLCJyZXMyXzQxOCIsImFyZzBfNDE5IiwicmVzMF80MjAiLCJhcmcxXzQyNiIsImFyZzBfNDI1IiwicmVzMF80MjciLCJhcmcxXzQyMiIsImFyZzBfNDIxIiwicmVzMF80MjMiLCJyZXMxXzQyNCIsInJlczFfNDI4IiwiYXJnMl80MzEiLCJhcmcxXzQzMCIsImFyZzBfNDI5IiwicmVzMF80MzIiLCJyZXMxXzQzMyIsInJlczJfNDM0IiwieF80MzUiLCJ0ZXJtX29mX3lvanNvbiIsInRfb2ZfeW9qc29uJDMiLCJ5b2pzb25fYXJncyQxNiIsInYyJDUiLCJ2MSQxNSIsInYwJDMzIiwidjAkMzQiLCJ2MSQxNiIsInYyJDYiLCJ5b2pzb25fYXJncyQ3IiwidjEkNyIsInYwJDE1IiwidjAkMTYiLCJ2MSQ4IiwieW9qc29uX2FyZ3MkNiIsInYwJDEzIiwidjAkMTQiLCJ2MiQxIiwidjEkNSIsInYxJDYiLCJ2MiQyIiwieW9qc29uX2FyZ3MkMTUiLCJ2MCQzMSIsInYwJDMyIiwieW9qc29uX2FyZ3MkMTQiLCJ2MCQyOSIsInYwJDMwIiwieW9qc29uX2FyZ3MkMTMiLCJ2MiQzIiwidjEkMTMiLCJ2MCQyNyIsInYwJDI4IiwidjEkMTQiLCJ2MiQ0IiwieW9qc29uX2FyZ3MkMTIiLCJ2MSQxMSIsInYwJDI1IiwidjAkMjYiLCJ2MSQxMiIsInlvanNvbl9hcmdzJDExIiwidjAkMjMiLCJ2MCQyNCIsInlvanNvbl9hcmdzJDEwIiwidjEkOSIsInYwJDIxIiwidjAkMjIiLCJ2MSQxMCIsInlvanNvbl9hcmdzJDkiLCJ2MCQxOSIsInYwJDIwIiwieW9qc29uX2FyZ3MkOCIsInYwJDE3IiwidjAkMTgiLCJ5b2pzb25fYXJncyQyNCIsInYwJDQ5IiwidjAkNTAiLCJ5b2pzb25fYXJncyQyMyIsInYxJDI3IiwidjAkNDciLCJ2MCQ0OCIsInYxJDI4IiwieW9qc29uX2FyZ3MkMjIiLCJ2MSQyNSIsInYwJDQ1IiwidjAkNDYiLCJ2MSQyNiIsInlvanNvbl9hcmdzJDIxIiwidjIkMTEiLCJ2MSQyMyIsInYwJDQzIiwidjAkNDQiLCJ2MSQyNCIsInYyJDEyIiwieW9qc29uX2FyZ3MkMjAiLCJ2MSQyMSIsInYwJDQxIiwidjAkNDIiLCJ2MSQyMiIsInlvanNvbl9hcmdzJDE5IiwidjIkOSIsInYxJDE5IiwidjAkMzkiLCJ2MCQ0MCIsInYxJDIwIiwidjIkMTAiLCJ5b2pzb25fYXJncyQxOCIsInYwJDM3IiwidjAkMzgiLCJ5b2pzb25fYXJncyQxNyIsInYzIiwidjIkNyIsInYxJDE3IiwidjAkMzUiLCJ2MCQzNiIsInYxJDE4IiwidjIkOCIsInYzJDAiLCJ5b2pzb25fYXJncyQzMiIsInYyJDE3IiwidjEkMzciLCJ2MCQ2NSIsInYwJDY2IiwidjEkMzgiLCJ2MiQxOCIsInlvanNvbl9hcmdzJDMxIiwidjIkMTUiLCJ2MSQzNSIsInYwJDYzIiwidjAkNjQiLCJ2MSQzNiIsInYyJDE2IiwieW9qc29uX2FyZ3MkMzAiLCJ2MCQ2MSIsInYwJDYyIiwieW9qc29uX2FyZ3MkMjkiLCJ2MCQ1OSIsInYwJDYwIiwieW9qc29uX2FyZ3MkMjgiLCJ2MiQxMyIsInYxJDMzIiwidjAkNTciLCJ2MCQ1OCIsInYxJDM0IiwidjIkMTQiLCJ5b2pzb25fYXJncyQyNyIsInYxJDMxIiwidjAkNTUiLCJ2MCQ1NiIsInYxJDMyIiwieW9qc29uX2FyZ3MkMjYiLCJ2MSQyOSIsInYwJDUzIiwidjAkNTQiLCJ2MSQzMCIsInlvanNvbl9hcmdzJDI1IiwidjAkNTEiLCJ2MCQ1MiIsInlvanNvbl9vZl90ZXJtIiwieW9qc29uX29mX3QkMyIsIm1hcF90ZXJtJDAiLCJleHBfbWFwX3Rlcm0iLCJwYXRfbWFwX3Rlcm0iLCJ0eXBfbWFwX3Rlcm0iLCJ0cGF0X21hcF90ZXJtIiwiYW55X21hcF90ZXJtIiwiZmx0X21hcF90ZXJtIiwidGhpbmdzIiwidGVybSQwIiwiZSQwIiwiZSQxIiwiZiQwIiwiZSQyIiwidHAiLCJlMiIsImUxIiwiZW52JDAiLCJlJDMiLCJlJDQiLCJ0cCQwIiwiZTIkMCIsImUxJDAiLCJlJDUiLCJlJDYiLCJlMyIsImUyJDEiLCJlMSQxIiwiZTIkMiIsImUxJDIiLCJlJDciLCJlJDgiLCJmJDEiLCJlJDkiLCJlbnYkMSIsImUkMTAiLCJlMiQzIiwiZTEkMyIsImUyJDQiLCJlMSQ0IiwiZSQxMSIsImUyJDUiLCJlMSQ1IiwicmxzIiwiZSQxMiIsInQyJDAiLCJ0MSQwIiwiZSQxMyIsImZhc3RfZXF1YWwkMCIsInMyIiwidDQiLCJ0MyIsImQyIiwiZDEiLCJiMiIsImIxIiwiaTIiLCJpMSIsImYyIiwiZjEiLCJzMiQwIiwiczEkMCIsImMyIiwiYzEiLCJ0cDIiLCJ0cDEiLCJlNCIsInAyJDAiLCJwMSQwIiwiYzIkMCIsImUyJDYiLCJwMiQxIiwiYzEkMCIsImUxJDYiLCJwMSQxIiwiZTIkNyIsInRwMiQwIiwiZTEkNyIsInRwMSQwIiwiZTQkMCIsImUzJDAiLCJkMiQwIiwiZTIkOCIsImUxJDgiLCJkMSQwIiwidDIkMSIsImUyJDkiLCJ0MSQxIiwiZTEkOSIsImVzMiIsImUyJDEwIiwiZXMxIiwiZTEkMTAiLCJlNiIsImU1IiwiZTQkMSIsImUzJDEiLCJlMiQxMSIsImUxJDExIiwiZTQkMiIsImUzJDIiLCJlMiQxMiIsImUxJDEyIiwiZTIkMTMiLCJlMSQxMyIsImUyJDE0IiwiZjIkMCIsImUxJDE0IiwiZjEkMCIsImUyJDE1IiwiYzIkMSIsImUxJDE1IiwiYzEkMSIsImU0JDMiLCJlMyQzIiwiZTIkMTYiLCJlMSQxNiIsImU0JDQiLCJlMyQ0IiwiZTIkMTciLCJlMSQxNyIsImUyJDE4IiwibzIiLCJlMSQxOCIsIm8xIiwiZTQkNSIsImUzJDUiLCJvMiQwIiwiZTIkMTkiLCJlMSQxOSIsIm8xJDAiLCJmMiQxIiwiZjEkMSIsInJsczIiLCJlMiQyMCIsInJsczEiLCJlMSQyMCIsInQ0JDAiLCJ0MyQwIiwiZTIkMjEiLCJ0MiQyIiwidDEkMiIsImUxJDIxIiwicHBfdGVybSQwIiwic2hvd190ZXJtJDAiLCJwcCQzIiwic2hvdyQzIiwiXzExJDAiLCJfMTAkMCIsIl85JDAiLCJfOCQwIiwiXzckMCIsIl82JDAiLCJfNSQwIiwiXzQkMSIsIl8zJDEiLCJfMiQxIiwiXzEkNCIsIl8wJDQiLCJfMSQ1IiwiXzAkNSIsInRlcm1fb2Zfc2V4cCQwIiwidF9vZl9zZXhwJDUiLCJzZXhwXzQ0MCIsInRhZ180NDEiLCJzZXhwX2FyZ3NfNDQyIiwiYXJnMF80NDMiLCJyZXMwXzQ0NCIsInNleHBfYXJnc180NzIiLCJhcmcwXzQ3MyIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0NyIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwX2FyZ3NfNDk5IiwiYXJnMF81MDAiLCJyZXMwXzUwMSIsInNleHBfYXJnc180NjciLCJhcmcwXzQ2OCIsInJlczBfNDY5Iiwic2V4cF9hcmdzXzQ5NCIsImFyZzBfNDk1IiwicmVzMF80OTYiLCJzZXhwX2FyZ3NfNDg5IiwiYXJnMF80OTAiLCJyZXMwXzQ5MSIsInNleHBfYXJnc181MDQiLCJhcmcxXzUwNiIsImFyZzBfNTA1IiwicmVzMF81MDciLCJyZXMxXzUwOCIsInNleHBfYXJnc180NjIiLCJhcmcwXzQ2MyIsInJlczBfNDY0Iiwic2V4cF9hcmdzXzUxMSIsImFyZzJfNTE0IiwiYXJnMV81MTMiLCJhcmcwXzUxMiIsInJlczBfNTE1IiwicmVzMV81MTYiLCJyZXMyXzUxNyIsInNleHBfYXJnc180ODIiLCJhcmcxXzQ4NCIsImFyZzBfNDgzIiwicmVzMF80ODUiLCJyZXMxXzQ4NiIsInNleHBfYXJnc180NzciLCJhcmcwXzQ3OCIsInJlczBfNDc5Iiwic2V4cF9hcmdzXzQ1NyIsImFyZzBfNDU4IiwicmVzMF80NTkiLCJzZXhwX2FyZ3NfNDUyIiwiYXJnMF80NTMiLCJyZXMwXzQ1NCIsInhfNTE5Iiwic2V4cF9vZl90ZXJtJDAiLCJhcmcwXzUyMCIsInJlczBfNTIxIiwiYXJnMF81MjIiLCJyZXMwXzUyMyIsImFyZzBfNTI0IiwicmVzMF81MjUiLCJhcmcwXzUyNiIsInJlczBfNTI3IiwiYXJnMF81MjgiLCJyZXMwXzUyOSIsImFyZzBfNTMwIiwicmVzMF81MzEiLCJhcmcwXzUzMiIsInJlczBfNTMzIiwic2V4cF9vZl90JDUiLCJhcmcwXzUzNCIsInJlczBfNTM1IiwiYXJnMV81MzciLCJhcmcwXzUzNiIsInJlczBfNTM4IiwicmVzMV81MzkiLCJhcmcwXzU0MCIsInJlczBfNTQxIiwiYXJnMF81NDIiLCJyZXMwXzU0MyIsImFyZzBfNTQ0IiwicmVzMF81NDUiLCJhcmcxXzU0NyIsImFyZzBfNTQ2IiwicmVzMF81NDgiLCJyZXMxXzU0OSIsImFyZzJfNTUyIiwiYXJnMV81NTEiLCJhcmcwXzU1MCIsInJlczBfNTUzIiwicmVzMV81NTQiLCJyZXMyXzU1NSIsInhfNTU2IiwidGVybV9vZl95b2pzb24kMCIsInRfb2ZfeW9qc29uJDQiLCJ5b2pzb25fb2ZfdGVybSQwIiwieW9qc29uX29mX3QkNCIsIm1hcF90ZXJtJDEiLCJmYXN0X2VxdWFsJDEiLCJ5MiIsIngyIiwieTEkMCIsIngxJDAiLCJ5MiQwIiwieDIkMCIsIngxJDEiLCJ1MiIsInUxIiwieDIkMSIsInBwX3R5cGVfaG9sZSIsInNob3dfdHlwZV9ob2xlIiwiXzAkNiIsInR5cGVfaG9sZV9vZl9zZXhwIiwic2V4cF81NjEiLCJ0YWdfNTYyIiwic2V4cF9hcmdzXzU2OCIsImFyZzBfNTY5IiwicmVzMF81NzAiLCJzZXhwX2FyZ3NfNTYzIiwiYXJnMF81NjQiLCJyZXMwXzU2NSIsInNleHBfb2ZfdHlwZV9ob2xlIiwiYXJnMF81NzEiLCJyZXMwXzU3MiIsImFyZzBfNTczIiwicmVzMF81NzQiLCJ0eXBlX2hvbGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGVfaG9sZSIsInBwX3R5cGVfcHJvdmVuYW5jZSIsInNob3dfdHlwZV9wcm92ZW5hbmNlIiwiXzAkNyIsInR5cGVfcHJvdmVuYW5jZV9vZl9zZXhwIiwic2V4cF81NzkiLCJ0YWdfNTgwIiwic2V4cF9hcmdzXzU4MSIsImFyZzBfNTgyIiwicmVzMF81ODMiLCJzZXhwX29mX3R5cGVfcHJvdmVuYW5jZSIsImFyZzBfNTg0IiwicmVzMF81ODUiLCJ0eXBlX3Byb3ZlbmFuY2Vfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGVfcHJvdmVuYW5jZSIsInBwX3Rlcm0kMSIsInNob3dfdGVybSQxIiwicHAkNCIsInNob3ckNCIsIl8xMyQwIiwiXzEyJDAiLCJfMTEkMSIsIl8xMCQxIiwiXzkkMSIsIl84JDEiLCJfNyQxIiwiXzYkMSIsIl81JDEiLCJfNCQyIiwiXzMkMiIsIl8yJDIiLCJfMSQ2IiwiXzAkOCIsIl8xJDciLCJfMCQ5IiwidGVybV9vZl9zZXhwJDEiLCJ0X29mX3NleHAkNiIsInNleHBfNTkwIiwidGFnXzU5MSIsInNleHBfYXJnc182MjQiLCJhcmcwXzYyNSIsInJlczBfNjI2Iiwic2V4cF9hcmdzXzYxOSIsImFyZzBfNjIwIiwicmVzMF82MjEiLCJzZXhwX2FyZ3NfNjM2IiwiYXJnMV82MzgiLCJhcmcwXzYzNyIsInJlczBfNjM5IiwicmVzMV82NDAiLCJzZXhwX2FyZ3NfNjE0IiwiYXJnMF82MTUiLCJyZXMwXzYxNiIsInNleHBfYXJnc181OTIiLCJhcmcwXzU5MyIsInJlczBfNTk0Iiwic2V4cF9hcmdzXzU5NyIsImFyZzBfNTk4IiwicmVzMF81OTkiLCJzZXhwX2FyZ3NfNjI5IiwiYXJnMV82MzEiLCJhcmcwXzYzMCIsInJlczBfNjMyIiwicmVzMV82MzMiLCJzZXhwX2FyZ3NfNjA3IiwiYXJnMV82MDkiLCJhcmcwXzYwOCIsInJlczBfNjEwIiwicmVzMV82MTEiLCJzZXhwX2FyZ3NfNjQzIiwiYXJnMV82NDUiLCJhcmcwXzY0NCIsInJlczBfNjQ2IiwicmVzMV82NDciLCJzZXhwX2FyZ3NfNjAyIiwiYXJnMF82MDMiLCJyZXMwXzYwNCIsInhfNjQ5Iiwic2V4cF9vZl90ZXJtJDEiLCJhcmcwXzY1MCIsInJlczBfNjUxIiwiYXJnMF82NTIiLCJyZXMwXzY1MyIsImFyZzBfNjU0IiwicmVzMF82NTUiLCJzZXhwX29mX3QkNiIsImFyZzFfNjU3IiwiYXJnMF82NTYiLCJyZXMwXzY1OCIsInJlczFfNjU5IiwiYXJnMF82NjAiLCJyZXMwXzY2MSIsImFyZzBfNjYyIiwicmVzMF82NjMiLCJhcmcwXzY2NCIsInJlczBfNjY1IiwiYXJnMV82NjciLCJhcmcwXzY2NiIsInJlczBfNjY4IiwicmVzMV82NjkiLCJhcmcxXzY3MSIsImFyZzBfNjcwIiwicmVzMF82NzIiLCJyZXMxXzY3MyIsImFyZzFfNjc1IiwiYXJnMF82NzQiLCJyZXMwXzY3NiIsInJlczFfNjc3IiwieF82NzgiLCJ0ZXJtX29mX3lvanNvbiQxIiwidF9vZl95b2pzb24kNSIsInlvanNvbl9vZl90ZXJtJDEiLCJ5b2pzb25fb2ZfdCQ1IiwibWFwX3Rlcm0kMiIsInZhcmlhbnRzIiwidCQxIiwic3Vic3QiLCJ0eSIsInJld3JhcCIsInByb3YiLCJ0eSQwIiwidHkyIiwidHkxIiwic20iLCJ0eXMiLCJ0eSQxIiwidHkkMiIsInR5JDMiLCJ0eSQ0IiwidHkkNSIsImVxX2ludGVybmFsIiwibjEiLCJuMiIsInQyJDMiLCJ0MiQ0IiwidDEkMyIsInNtMSIsInNtMiIsInR5czEiLCJ0eXMyIiwidDEkNCIsInQyJDUiLCJ0MSQ1IiwidDIkNiIsInQxJDYiLCJ0MiQ3IiwidDEkNyIsImFscGhhX3N1YnN0JDAiLCJhbHBoYV9zdWJzdCIsInQyJDgiLCJ0MSQ4IiwibiQxIiwiZmFzdF9lcXVhbCQyIiwicHBfdGVybSQyIiwic2hvd190ZXJtJDIiLCJwcCQ1Iiwic2hvdyQ1IiwiXzAkMTAiLCJfMSQ4IiwiXzAkMTEiLCJ0ZXJtX29mX3NleHAkMiIsInRfb2Zfc2V4cCQ3Iiwic2V4cF82ODMiLCJ0YWdfNjg0Iiwic2V4cF9hcmdzXzY5NSIsImFyZzBfNjk2IiwicmVzMF82OTciLCJzZXhwX2FyZ3NfNjkwIiwiYXJnMF82OTEiLCJyZXMwXzY5MiIsInNleHBfYXJnc182ODUiLCJhcmcwXzY4NiIsInJlczBfNjg3IiwieF82OTkiLCJzZXhwX29mX3Rlcm0kMiIsImFyZzBfNzAwIiwicmVzMF83MDEiLCJhcmcwXzcwMiIsInJlczBfNzAzIiwiYXJnMF83MDQiLCJyZXMwXzcwNSIsInNleHBfb2ZfdCQ3IiwieF83MDYiLCJ0ZXJtX29mX3lvanNvbiQyIiwidF9vZl95b2pzb24kNiIsInlvanNvbl9vZl90ZXJtJDIiLCJ5b2pzb25fb2ZfdCQ2IiwibWFwX3Rlcm0kMyIsInR5dmFyX29mX3V0cGF0IiwiZmFzdF9lcXVhbCQzIiwicHBfdGVybSQzIiwic2hvd190ZXJtJDMiLCJwcCQ2Iiwic2hvdyQ2IiwiXzMkMyIsIl8yJDMiLCJfMSQ5IiwiXzAkMTIiLCJfMSQxMCIsIl8wJDEzIiwidGVybV9vZl9zZXhwJDMiLCJ0X29mX3NleHAkOCIsInNleHBfNzExIiwidGFnXzcxMiIsInNleHBfYXJnc183MjMiLCJhcmcxXzczMCIsImFyZzBfNzI5IiwicmVzMF83MzEiLCJzZXhwXzcyOCIsImFyZzFfNzI1IiwiYXJnMF83MjQiLCJyZXMwXzcyNiIsInJlczFfNzI3IiwicmVzMV83MzIiLCJzZXhwX2FyZ3NfNzEzIiwiYXJnMF83MTQiLCJyZXMwXzcxNSIsInNleHBfYXJnc183MTgiLCJhcmcwXzcxOSIsInJlczBfNzIwIiwieF83MzQiLCJzZXhwX29mX3Rlcm0kMyIsImFyZzBfNzM1IiwicmVzMF83MzYiLCJhcmcwXzczNyIsInJlczBfNzM4IiwiYXJnMV83NDQiLCJhcmcwXzc0MyIsInJlczBfNzQ1IiwiYXJnMV83NDAiLCJhcmcwXzczOSIsInJlczBfNzQxIiwicmVzMV83NDIiLCJyZXMxXzc0NiIsInNleHBfb2ZfdCQ4IiwieF83NDciLCJ0ZXJtX29mX3lvanNvbiQzIiwidF9vZl95b2pzb24kNyIsInlvanNvbl9vZl90ZXJtJDMiLCJ5b2pzb25fb2ZfdCQ3IiwibWFwX3Rlcm0kNCIsImZhc3RfZXF1YWwkNCIsInIyIiwicHBfZmlsdGVyIiwic2hvd19maWx0ZXIiLCJfMSQxMSIsIl8wJDE0IiwiZmlsdGVyX29mX3NleHAiLCJzZXhwXzc2MyIsImZpZWxkX3NleHBzXzc2NCIsInBhdF83NjUiLCJhY3RfNzY3IiwiZHVwbGljYXRlc183NjkiLCJleHRyYV83NzAiLCJpdGVyXzc3NyIsInNleHBfNzYzJDAiLCJmaWVsZF9zZXhwc183NzMiLCJmaWVsZF9uYW1lXzc3MSIsInRhaWxfNzc4IiwiZmllbGRfc2V4cF83NzIkMiIsImZpZWxkX3NleHBfNzcyIiwieF83NzkiLCJmaWVsZF9zZXhwXzc3MiQwIiwiZnZhbHVlXzc3NSIsImZpZWxkX3NleHBfNzcyJDEiLCJmdmFsdWVfNzc0IiwiYWN0Xzc2OCIsInBhdF83NjYiLCJzZXhwX29mX2ZpbHRlciIsImFjdF83ODMiLCJwYXRfNzgxIiwiYXJnXzc4NCIsImJuZHNfNzgwIiwiYXJnXzc4MiIsImJuZHNfNzgwJDAiLCJmaWx0ZXJfb2ZfeW9qc29uIiwicGF0X2ZpZWxkIiwiYWN0X2ZpZWxkIiwiYWN0X3ZhbHVlIiwicGF0X3ZhbHVlIiwieW9qc29uX29mX2ZpbHRlciIsInZfYWN0Iiwidl9wYXQiLCJwcCQ3Iiwic2hvdyQ3IiwiXzEkMTIiLCJfMCQxNSIsInRfb2Zfc2V4cCQ5Iiwic2V4cF83ODkiLCJ0YWdfNzkwIiwic2V4cF9hcmdzXzc5NiIsImFyZzFfNzk4IiwiYXJnMF83OTciLCJyZXMwXzc5OSIsInJlczFfODAwIiwic2V4cF9hcmdzXzc5MSIsImFyZzBfNzkyIiwicmVzMF83OTMiLCJzZXhwX29mX3QkOSIsImFyZzBfODAxIiwicmVzMF84MDIiLCJhcmcxXzgwNCIsImFyZzBfODAzIiwicmVzMF84MDUiLCJyZXMxXzgwNiIsInRfb2ZfeW9qc29uJDgiLCJ5b2pzb25fb2ZfdCQ4IiwibWFwcGVyIiwiYWN0IiwicGF0IiwiYWN0JDAiLCJpZHgiLCJtYXBfdGVybSQ1IiwiZmFzdF9lcXVhbCQ1IiwiaG9sZSIsInRtcyIsImNsc19vZl90ZXJtIiwiZXJyb3Jfc291cmNlXzAyOSIsImVycm9yX3NvdXJjZV8wNTciLCJlcnJvcl9zb3VyY2VfMDcwIiwicHBfa2luZCIsInNob3dfa2luZCIsImtpbmRfb2Zfc2V4cCIsInNleHBfb2Zfa2luZCIsImtpbmRfb2ZfeW9qc29uIiwieW9qc29uX29mX2tpbmQiLCJwcF92YXJfZW50cnkiLCJzaG93X3Zhcl9lbnRyeSIsInZhcl9lbnRyeV9vZl9zZXhwIiwibmFtZV8wMTUiLCJpZF8wMTciLCJ0eXBfMDE5IiwiZHVwbGljYXRlc18wMjEiLCJleHRyYV8wMjIiLCJpdGVyXzAzMCIsImZpZWxkX25hbWVfMDIzIiwidGFpbF8wMzEiLCJmaWVsZF9zZXhwXzAyNCQzIiwiZmllbGRfc2V4cF8wMjQiLCJ4XzAzMiIsImZpZWxkX3NleHBfMDI0JDAiLCJmaWVsZF9zZXhwXzAyNCQxIiwiZnZhbHVlXzAyOCIsImZpZWxkX3NleHBfMDI0JDIiLCJmdmFsdWVfMDI3IiwidHlwXzAyMCIsImlkXzAxOCIsIm5hbWVfMDE2Iiwic2V4cF9vZl92YXJfZW50cnkiLCJ0eXBfMDM4IiwiaWRfMDM2IiwibmFtZV8wMzQiLCJibmRzXzAzMyIsImFyZ18wMzciLCJibmRzXzAzMyQwIiwiYXJnXzAzNSIsImJuZHNfMDMzJDEiLCJ2YXJfZW50cnlfb2ZfeW9qc29uIiwibmFtZV9maWVsZCIsInR5cF9maWVsZCIsInR5cF92YWx1ZSIsIm5hbWVfdmFsdWUiLCJ5b2pzb25fb2ZfdmFyX2VudHJ5Iiwidl90eXAiLCJ2X25hbWUiLCJwcF90dmFyX2VudHJ5Iiwic2hvd190dmFyX2VudHJ5IiwidHZhcl9lbnRyeV9vZl9zZXhwIiwic2V4cF8wNDEiLCJmaWVsZF9zZXhwc18wNDIiLCJuYW1lXzA0MyIsImlkXzA0NSIsImtpbmRfMDQ3IiwiZHVwbGljYXRlc18wNDkiLCJleHRyYV8wNTAiLCJpdGVyXzA1OCIsInNleHBfMDQxJDAiLCJmaWVsZF9zZXhwc18wNTMiLCJmaWVsZF9uYW1lXzA1MSIsInRhaWxfMDU5IiwiZmllbGRfc2V4cF8wNTIkMyIsImZpZWxkX3NleHBfMDUyIiwieF8wNjAiLCJmaWVsZF9zZXhwXzA1MiQwIiwiZnZhbHVlXzA1NiIsImZpZWxkX3NleHBfMDUyJDEiLCJmdmFsdWVfMDU0IiwiZmllbGRfc2V4cF8wNTIkMiIsImZ2YWx1ZV8wNTUiLCJraW5kXzA0OCIsImlkXzA0NiIsIm5hbWVfMDQ0Iiwic2V4cF9vZl90dmFyX2VudHJ5Iiwia2luZF8wNjYiLCJpZF8wNjQiLCJuYW1lXzA2MiIsImFyZ18wNjciLCJibmRzXzA2MSIsImFyZ18wNjUiLCJibmRzXzA2MSQwIiwiYXJnXzA2MyIsImJuZHNfMDYxJDEiLCJ0dmFyX2VudHJ5X29mX3lvanNvbiIsImtpbmRfZmllbGQiLCJraW5kX3ZhbHVlIiwieW9qc29uX29mX3R2YXJfZW50cnkiLCJ2X2tpbmQiLCJwcF9lbnRyeSIsInNob3dfZW50cnkiLCJlbnRyeV9vZl9zZXhwIiwic2V4cF8wNzIiLCJ0YWdfMDczIiwicmVzMF8wNzYiLCJzZXhwX2FyZ3NfMDg0IiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsInNleHBfYXJnc18wNzkiLCJzZXhwX29mX2VudHJ5IiwiYXJnMF8wODciLCJyZXMwXzA4OCIsImFyZzBfMDg5IiwicmVzMF8wOTAiLCJlbnRyeV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZW50cnkiLCJ4XzA5NCIsInhfMDk1IiwiZW50cnkiLCJleHRlbmRfdHZhciIsInR2YXJfZW50cnkiLCJleHRlbmRfYWxpYXMiLCJleHRlbmRfZHVtbXlfdHZhciIsInR2YXIiLCJsb29rdXBfdHZhciIsImxvb2t1cF9hbGlhcyIsImdldF9pZCIsImxvb2t1cF92YXIiLCJsb29rdXBfY3RyIiwiaXNfYWxpYXMiLCJpc19hYnN0cmFjdCIsImFkZF9jdHJzIiwiY3RycyIsInR5cCIsInR5cCQwIiwic3VidHJhY3RfcHJlZml4IiwicHJlZml4X2N0eCIsInByZWZpeF9sZW5ndGgiLCJjdHhfbGVuZ3RoIiwiYWRkZWRfYmluZGluZ3MiLCJjdHhfYWZ0ZXIiLCJjdHhfYmVmb3JlIiwibmV3X2NvdW50IiwiZmlsdGVyX2R1cGxpY2F0ZXMiLCJ0eXBfc2V0IiwidGVybV9zZXQiLCJuYW1lJDAiLCJzaGFkb3dzX3R5cCIsIm1rX2Zhc3QiLCJpc19hcnJvdyIsInR5cCQxIiwiaXNfZm9yYWxsIiwidG9fdHlwIiwidXR5cCIsInV0eXAkMCIsInUiLCJ1dHMiLCJ0b19jdHJfbWFwIiwidXMiLCJ1dHlwJDEiLCJ1dHBhdCIsInRib2R5JDAiLCJ0Ym9keSIsInV0cGF0JDAiLCJ0Ym9keSQyIiwibmFtZSQxIiwiY3R4JDEiLCJ0Ym9keSQxIiwidG9fdmFyaWFudCIsInUkMCIsInBwX3NvdXJjZSIsInNob3dfc291cmNlIiwic291cmNlX29mX3NleHAiLCJ0eV8wMTAiLCJ0eV8wMTEiLCJzZXhwX29mX3NvdXJjZSIsInR5XzAyNiIsInNvdXJjZV9vZl95b2pzb24iLCJ0eV9maWVsZCIsInR5X3ZhbHVlIiwieW9qc29uX29mX3NvdXJjZSIsInZfdHkiLCJzb3VyY2UiLCJvZl9zb3VyY2UiLCJqb2luX3R5cGVfcHJvdmVuYW5jZSIsImgxIiwiaDIiLCJmcmVlX3ZhcnMiLCJib3VuZCIsIm9wdCQzIiwidmFyX2NvdW50IiwiZnJlc2hfdmFyIiwidmFyX25hbWUiLCJ1bnJvbGwiLCJ0eV9ib2R5IiwiZml4IiwicmVzb2x2ZSIsImpvaW4kMCIsInR5MiQ1IiwidHlfam9pbiIsInR5MSQwIiwidHkyJDAiLCJ0eTIkMSIsInR5MSQxIiwidHkyJDIiLCJ0eTEkMiIsInR5MSQzIiwidHkxJDQiLCJ0eTIkMyIsInR5MSQ1IiwidHkxJDYiLCJ0eTIkNCIsInR5MSQ3IiwidHlfbmFtZSIsInJld3JhcDEiLCJ0ZXJtMSIsImpvaW5fZml4Iiwiam9pbl9hbGwiLCJpc19jb25zaXN0ZW50Iiwid2Vha19oZWFkX25vcm1hbGl6ZSIsIm5vcm1hbGl6ZSIsInRzJDAiLCJ0cGF0IiwibWF0Y2hlZF9hcnJvdyIsInR5X291dCIsInR5X2luIiwibWF0Y2hlZF9mb3JhbGwiLCJtYXRjaGVkX3Byb2QiLCJtYXRjaGVkX2xpc3QiLCJtYXRjaGVkX2FyZ3MiLCJkZWZhdWx0X2FyaXR5IiwiZ2V0X3N1bV9jb25zdHJ1Y3RvcnMiLCJ0eV9ib2R5JDAiLCJzbSQwIiwiaXNfdW5rbm93biIsIm5lZWRzX3BhcmVucyIsInByZXR0eV9wcmludF90dmFyIiwidHYiLCJwcmV0dHlfcHJpbnQiLCJwYXJlbl9wcmV0dHlfcHJpbnQiLCJ0MCIsImN0cl9wcmV0dHlfcHJpbnQiLCJ0MCQwIiwidHYkMCIsInBhdCQwIiwicGF0JDEiLCJpc19mdW5fdmFyIiwicGF0JDIiLCJpc190dXBsZV9vZl9hcnJvd3MiLCJwYXRzIiwiaXNfdHVwbGVfb2ZfdmFycyIsImdldF92YXIiLCJnZXRfZnVuX3ZhciIsInZhciQwIiwiZ2V0X251bV9vZl92YXJzIiwiY3RyX25hbWUiLCJwcF9jbHMkMCIsInNob3dfY2xzJDAiLCJjbHNfb2Zfc2V4cCQwIiwic2V4cF9vZl9jbHMkMCIsImNsc19vZl95b2pzb24kMCIsInlvanNvbl9vZl9jbHMkMCIsImhvbGUkMCIsInJlcF9pZCQwIiwiZnJlc2gkMCIsInRlcm1fb2YkMCIsInVud3JhcCQwIiwiY2xzX29mX3Rlcm0kMCIsInNob3dfY2xzJDEiLCJpc190dXBsZV9vZl9mdW5jdGlvbnMiLCJjdHJfbmFtZSQwIiwiaXNfZGVmZXJyYWwiLCJnZXRfbnVtX29mX2Z1bmN0aW9ucyIsInBwX2NscyQxIiwic2hvd19jbHMkMiIsImNsc19vZl9zZXhwJDEiLCJzZXhwXzAyNiIsInNleHBfb2ZfY2xzJDEiLCJjbHNfb2ZfeW9qc29uJDEiLCJ5b2pzb25fb2ZfY2xzJDEiLCJhbnlfaWRzIiwidG0iLCJzY3J1dCIsInJlcF9pZCQxIiwiaXNfZXhwIiwiaXNfcGF0IiwiaXNfdHlwIiwiaWRzJDAiLCJ0bSQwIiwidG0kMSIsInRtJDIiLCJ0bSQzIiwicmVwX2lkJDIiLCJleHAiLCJyZXBsYWNlX2FsbF9pZHMiLCJyZXBhaXJfaWRzIiwic3RyaXBfY2FzdHMiLCJhc3NpZ25fbmFtZV9pZl9ub25lIiwiYm9keSIsImJvZHkkMCIsInR5X3N1YnN0Iiwic2V4cF9hcmdzXzA0MiIsImFyZzBfMDQzIiwicmVzMF8wNDQiLCJzZXhwX2FyZ3NfMDQ3Iiwic2V4cF9hcmdzXzA1MiIsImFyZzBfMDUzIiwicmVzMF8wNTQiLCJzZXhwX2FyZ3NfMDU3IiwiYXJnMF8wNTgiLCJyZXMwXzA1OSIsInNleHBfYXJnc18wNjIiLCJhcmcxXzA2NCIsImFyZzBfMDYzIiwicmVzMF8wNjUiLCJyZXMxXzA2NiIsImFyZzBfMDcyIiwicmVzMF8wNzMiLCJhcmcwXzA3NCIsInJlczBfMDc1IiwiYXJnMF8wODYiLCJyZXMwXzA4NyIsImFyZzBfMDg4IiwicmVzMF8wODkiLCJhcmcwXzA5MCIsInJlczBfMDkxIiwiYXJnMF8wOTIiLCJyZXMwXzA5MyIsImFyZzFfMDk1IiwiYXJnMF8wOTQiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwiYXJnMF8wOTgiLCJyZXMwXzA5OSIsInBwX2J1aWx0aW4iLCJzaG93X2J1aWx0aW4iLCJidWlsdGluX29mX3NleHAiLCJhcmcyXzAxNyIsInJlczJfMDIwIiwic2V4cF9vZl9idWlsdGluIiwiYXJnMV8wMjIiLCJyZXMwXzAyMyIsInJlczFfMDI0IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJyZXMyXzAzMCIsImJ1aWx0aW5fb2ZfeW9qc29uIiwieW9qc29uX29mX2J1aWx0aW4iLCJwcF9mb3JtcyIsInNob3dfZm9ybXMiLCJmb3Jtc19vZl9zZXhwIiwic2V4cF9vZl9mb3JtcyIsImZvcm1zX29mX3lvanNvbiIsInlvanNvbl9vZl9mb3JtcyIsImNvbnN0JDAiLCJidWlsdGlucyIsImZuIiwiaW1wbCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwiZXBzaWxvbl9mbG9hdCIsInBpIiwibWF4X2ludCIsIm1pbl9pbnQiLCJ1bmFyeSIsImJpbmFyeSIsInRlcm5hcnkiLCJkMyIsImlzX2Zpbml0ZSIsImlzX2luZmluaXRlIiwiaXNfbmFuIiwic3RyaW5nX29mX2ludCIsInN0cmluZ19vZl9mbG9hdCIsInN0cmluZ19vZl9ib29sIiwiaW50X29mX2Zsb2F0IiwiZmxvYXRfb2ZfaW50IiwiYWJzIiwiZmxvYXRfb3AiLCJhYnNfZmxvYXQiLCJjZWlsIiwiZmxvb3IiLCJzcXJ0IiwibG9nIiwibG9nMTAiLCJzaW4iLCJjb3MiLCJ0YW4iLCJhc2luIiwiYWNvcyIsImF0YW4iLCJjb252ZXJ0IiwiZCQwIiwiZCQxIiwiZCQyIiwiaW50X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nIiwiaW50X21vZCIsInN0cmluZ19sZW5ndGgiLCJzdHJpbmdfY29tcGFyZSIsInN0cmluZ190cmltIiwic3RyaW5nX29mIiwic3RyaW5nX2NvbmNhdCIsInN0cmluZ19zdWIiLCJsZW4iLCJtZXRhX2NvbnNfbWFwIiwibWV0YSIsImN0eF9pbml0IiwiZm9ybXNfaW5pdCIsImVudl9pbml0IiwicmVzMF8wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwicmVzMF8wNDYiLCJjbHMiLCJjbHMkMCIsImNscyQxIiwiY2xzJDIiLCJjbHMkMyIsImNscyQ0IiwiY2xzJDUiLCJpZF8wMDQiLCJleHBlY3RlZF90eV8wMDYiLCJleHBlY3RlZF90eV8wMDciLCJleHBlY3RlZF90eV8wMjIiLCJpZF8wMjAiLCJleHBlY3RlZF90eV9maWVsZCIsImV4cGVjdGVkX3R5X3ZhbHVlIiwidl9leHBlY3RlZF90eSIsInhfMDI1IiwieF8wMjYiLCJjb19jdHgiLCJjb19jdHgxIiwiY29fY3R4MiIsInVuaW9uIiwic2luZ2xldG9uIiwiZXhwZWN0ZWRfdHkiLCJlbnRyaWVzIiwiZXhwZWN0ZWRfdHlzIiwiYW5hIiwidHlfb2YiLCJvZl9hcnJvdyIsIm9mX2ZvcmFsbCIsIm5hbWVfb3B0IiwiaXRlbSIsIm5hbWVfZXhwZWN0ZWRfb3B0IiwibmFtZV9leHBlY3RlZCIsIm9mX3Byb2QiLCJvZl9jb25zX2hkIiwib2ZfY29uc190bCIsImhkX3R5Iiwib2ZfbGlzdF9jb25jYXQiLCJvZl9saXN0X2xpdCIsImN0cl9hbmFfdHlwIiwidHlfYW5hIiwidHlfZW50cnkiLCJvZl9jdHJfaW5fYXAiLCJvZl9hcCIsIm1vZGUkMCIsInR5cGFwX21vZGUiLCJvZl9kZWZlcnJlZF9hcF9hcmdzIiwidHlfaW5zIiwidHlfaW5zJDAiLCJlcnJvcl9zb3VyY2VfMDY1IiwiZXJyb3Jfc291cmNlXzA5MSIsImVycm9yX3NvdXJjZV8xMjMiLCJwcF9qb2luX3R5cGUiLCJzaG93X2pvaW5fdHlwZSIsImpvaW5fdHlwZV9vZl9zZXhwIiwic2V4cF9vZl9qb2luX3R5cGUiLCJqb2luX3R5cGVfb2ZfeW9qc29uIiwieW9qc29uX29mX2pvaW5fdHlwZSIsImFzeW5fdHkiLCJhbmFtZSIsInNleHBfYXJnc18wMjMiLCJhcmcwXzAyNCIsInNleHBfYXJnc18wMjgiLCJhcmcwXzAyOSIsInN5bl90eV8wMzYiLCJkdXBsaWNhdGVzXzAzOCIsImV4dHJhXzAzOSIsIml0ZXJfMDQ1Iiwic2V4cF8wMzIiLCJmaWVsZF9uYW1lXzA0MCIsInRhaWxfMDQ2IiwiZmllbGRfc2V4cF8wNDEkMiIsImZpZWxkX3NleHBfMDQxIiwieF8wNDciLCJmaWVsZF9zZXhwXzA0MSQwIiwiZmllbGRfc2V4cF8wNDEkMSIsInN5bl90eV8wMzciLCJuYW1lXzAzNSIsImFyZzFfMDE4IiwicmVzMV8wMjAiLCJyZXMwXzA1NyIsInN5bl90eV8wNjEiLCJuYW1lXzA1OSIsImJuZHNfMDU4IiwiYm5kc18wNTgkMCIsInN5bl90eV9maWVsZCIsInN5bl90eV92YWx1ZSIsInZfc3luX3R5IiwicHBfZXJyb3JfcGFydGlhbF9hcCIsImFhY3R1YWwiLCJhZXhwZWN0ZWQiLCJzaG93X2Vycm9yX3BhcnRpYWxfYXAiLCJlcnJvcl9wYXJ0aWFsX2FwX29mX3NleHAiLCJzZXhwXzA2OCIsImZpZWxkX3NleHBzXzA2NyIsImV4cGVjdGVkXzA3MCIsImFjdHVhbF8wNzIiLCJkdXBsaWNhdGVzXzA3NCIsImV4dHJhXzA3NSIsIml0ZXJfMDgxIiwic2V4cF8wNjgkMCIsImZpZWxkX3NleHBzXzA3OCIsImZpZWxkX25hbWVfMDc2IiwidGFpbF8wODIiLCJmaWVsZF9zZXhwXzA3NyQyIiwiZmllbGRfc2V4cF8wNzciLCJ4XzA4MyIsImZpZWxkX3NleHBfMDc3JDAiLCJmdmFsdWVfMDgwIiwiZmllbGRfc2V4cF8wNzckMSIsImZ2YWx1ZV8wNzkiLCJhY3R1YWxfMDczIiwiZXhwZWN0ZWRfMDcxIiwic2V4cF9vZl9lcnJvcl9wYXJ0aWFsX2FwIiwiYWN0dWFsXzA4NyIsImV4cGVjdGVkXzA4NSIsImFyZ18wODgiLCJibmRzXzA4NCIsImFyZ18wODYiLCJibmRzXzA4NCQwIiwiZXJyb3JfcGFydGlhbF9hcF9vZl95b2pzb24iLCJleHBlY3RlZF9maWVsZCIsImFjdHVhbF9maWVsZCIsImFjdHVhbF92YWx1ZSIsImV4cGVjdGVkX3ZhbHVlIiwieW9qc29uX29mX2Vycm9yX3BhcnRpYWxfYXAiLCJ2X2FjdHVhbCIsInZfZXhwZWN0ZWQiLCJwcF9leHAiLCJzaG93X2V4cCIsImV4cF9vZl9zZXhwIiwic2V4cF8wOTMiLCJ0YWdfMDk0Iiwic2V4cF9vZl9leHAiLCJhcmcwXzExMyIsInJlczBfMTE0IiwiYXJnMF8xMTUiLCJyZXMwXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9leHAiLCJwcF9wYXQiLCJzaG93X3BhdCIsInBhdF9vZl9zZXhwIiwic2V4cF8xMjUiLCJ0YWdfMTI2Iiwic2V4cF9hcmdzXzEyNyIsImFyZzBfMTI4IiwicmVzMF8xMjkiLCJzZXhwX29mX3BhdCIsImFyZzBfMTMwIiwicmVzMF8xMzEiLCJwYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX3BhdCIsImpvaW5fb2YiLCJ0eXBfb2YiLCJzeW5fdHkiLCJ0eXBfb2ZfZXhwIiwic2VsZiIsInR5cF9vZl9wYXQiLCJvZl9leHBfdmFyIiwib2ZfY3RyIiwib2ZfZGVmZXJyZWRfYXAiLCJleHBlY3RlZCIsImFjdHVhbCIsImFkZF9zb3VyY2UiLCJsaXN0bGl0IiwibGlzdF9jb25jYXQiLCJlcnJvcl9zb3VyY2VfMDQ2IiwiZXJyb3Jfc291cmNlXzA3MSIsImVycm9yX3NvdXJjZV8wODkiLCJlcnJvcl9zb3VyY2VfMTE0IiwiZXJyb3Jfc291cmNlXzEyNSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMTk2IiwiZXJyb3Jfc291cmNlXzIxNSIsImVycm9yX3NvdXJjZV8yMzMiLCJlcnJvcl9zb3VyY2VfMjUxIiwiZXJyb3Jfc291cmNlXzI2OSIsImVycm9yX3NvdXJjZV8yNzMiLCJ0cF9sb2MkMTEiLCJlcnJvcl9zb3VyY2VfMjk5IiwidHBfbG9jJDEyIiwiZXJyb3Jfc291cmNlXzMzMSIsInRwX2xvYyQxMyIsImVycm9yX3NvdXJjZV8zNzEiLCJ0cF9sb2MkMTQiLCJlcnJvcl9zb3VyY2VfMzg5IiwidHBfbG9jJDE1IiwiZXJyb3Jfc291cmNlXzM5MyIsInRwX2xvYyQxNiIsImVycm9yX3NvdXJjZV8zOTciLCJ0cF9sb2MkMTciLCJlcnJvcl9zb3VyY2VfNDE5IiwidHBfbG9jJDE4IiwiZXJyb3Jfc291cmNlXzQzMCIsInRwX2xvYyQxOSIsImVycm9yX3NvdXJjZV80ODEiLCJ0cF9sb2MkMjAiLCJlcnJvcl9zb3VyY2VfNTQyIiwidHBfbG9jJDIxIiwiZXJyb3Jfc291cmNlXzU5NiIsInRwX2xvYyQyMiIsImVycm9yX3NvdXJjZV82MzgiLCJ0cF9sb2MkMjMiLCJlcnJvcl9zb3VyY2VfNjczIiwidHBfbG9jJDI0IiwiZXJyb3Jfc291cmNlXzY4OCIsInRwX2xvYyQyNSIsImVycm9yX3NvdXJjZV83MjciLCJ0cF9sb2MkMjYiLCJwcF9hbmNlc3RvcnMiLCJzaG93X2FuY2VzdG9ycyIsImFuY2VzdG9yc19vZl9zZXhwIiwic2V4cF9vZl9hbmNlc3RvcnMiLCJhbmNlc3RvcnNfb2ZfeW9qc29uIiwieW9qc29uX29mX2FuY2VzdG9ycyIsInBwX2Vycm9yX2luY29uc2lzdGVudCIsInNob3dfZXJyb3JfaW5jb25zaXN0ZW50IiwiYXN5biIsImFhbmEiLCJlcnJvcl9pbmNvbnNpc3RlbnRfb2Zfc2V4cCIsImZpZWxkX3NleHBzXzAwOCIsImFuYV8wMTEiLCJzeW5fMDEzIiwiaXRlcl8wMjIiLCJzZXhwXzAwOSQwIiwidGFpbF8wMjMiLCJ4XzAyNCIsImZ2YWx1ZV8wMjAiLCJmdmFsdWVfMDIxIiwic3luXzAxNCIsImFuYV8wMTIiLCJzZXhwX29mX2Vycm9yX2luY29uc2lzdGVudCIsInN5bl8wMzgiLCJhbmFfMDM2IiwiYm5kc18wMzUiLCJibmRzXzAzNSQwIiwiZXJyb3JfaW5jb25zaXN0ZW50X29mX3lvanNvbiIsImFuYV9maWVsZCIsInN5bl9maWVsZCIsInN5bl92YWx1ZSIsImFuYV92YWx1ZSIsInlvanNvbl9vZl9lcnJvcl9pbmNvbnNpc3RlbnQiLCJ2X3N5biIsInZfYW5hIiwicHBfZXJyb3Jfbm9fdHlwZSIsInNob3dfZXJyb3Jfbm9fdHlwZSIsImVycm9yX25vX3R5cGVfb2Zfc2V4cCIsInNleHBfMDQ4IiwidGFnXzA0OSIsInNleHBfYXJnc18wNTUiLCJzZXhwX2FyZ3NfMDUwIiwiYXJnMF8wNTEiLCJzZXhwX29mX2Vycm9yX25vX3R5cGUiLCJyZXMwXzA2NCIsImVycm9yX25vX3R5cGVfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX25vX3R5cGUiLCJwcF9lcnJvcl9jb21tb24iLCJzaG93X2Vycm9yX2NvbW1vbiIsImVycm9yX2NvbW1vbl9vZl9zZXhwIiwic2V4cF8wNzMiLCJ0YWdfMDc0Iiwic2V4cF9hcmdzXzA4MCIsImFyZzBfMDgxIiwicmVzMF8wODIiLCJzZXhwX29mX2Vycm9yX2NvbW1vbiIsImFyZzBfMDgzIiwicmVzMF8wODQiLCJlcnJvcl9jb21tb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX2NvbW1vbiIsInBwX2Vycm9yX2V4cCIsInNob3dfZXJyb3JfZXhwIiwiZXJyb3JfZXhwX29mX3NleHAiLCJzZXhwXzA5MSIsInRhZ18wOTIiLCJzZXhwX2FyZ3NfMDkzIiwicmVzMF8wOTUiLCJzZXhwX2FyZ3NfMTAzIiwiYXJnMF8xMDQiLCJyZXMwXzEwNSIsInNleHBfYXJnc18wOTgiLCJhcmcwXzA5OSIsInJlczBfMTAwIiwic2V4cF9vZl9lcnJvcl9leHAiLCJhcmcwXzEwOCIsInJlczBfMTA5IiwiYXJnMF8xMTAiLCJyZXMwXzExMSIsImVycm9yX2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfZXhwIiwicHBfZXJyb3JfcGF0Iiwic2hvd19lcnJvcl9wYXQiLCJlcnJvcl9wYXRfb2Zfc2V4cCIsInNleHBfMTE2IiwidGFnXzExNyIsInNleHBfYXJnc18xMTgiLCJzZXhwX29mX2Vycm9yX3BhdCIsImVycm9yX3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfcGF0IiwicHBfb2tfYW5hIiwic2hvd19va19hbmEiLCJham9pbiIsImFub2pvaW4iLCJhYW5hJDAiLCJva19hbmFfb2Zfc2V4cCIsInNleHBfMTI4IiwiZmllbGRfc2V4cHNfMTQ3IiwiYW5hXzE1MCIsIm5vam9pbl8xNTIiLCJkdXBsaWNhdGVzXzE1NCIsImV4dHJhXzE1NSIsIml0ZXJfMTYxIiwic2V4cF8xNDgiLCJmaWVsZF9zZXhwc18xNTgiLCJmaWVsZF9uYW1lXzE1NiIsInRhaWxfMTYyIiwiZmllbGRfc2V4cF8xNTckMiIsImZpZWxkX3NleHBfMTU3IiwieF8xNjMiLCJmaWVsZF9zZXhwXzE1NyQwIiwiZnZhbHVlXzE1OSIsImZpZWxkX3NleHBfMTU3JDEiLCJmdmFsdWVfMTYwIiwibm9qb2luXzE1MyIsImFuYV8xNTEiLCJmaWVsZF9zZXhwc18xMjciLCJhbmFfMTMwIiwic3luXzEzMiIsImpvaW5fMTM0IiwiZHVwbGljYXRlc18xMzYiLCJleHRyYV8xMzciLCJpdGVyXzE0NCIsInNleHBfMTI4JDAiLCJmaWVsZF9zZXhwc18xNDAiLCJmaWVsZF9uYW1lXzEzOCIsInRhaWxfMTQ1IiwiZmllbGRfc2V4cF8xMzkkMyIsImZpZWxkX3NleHBfMTM5IiwieF8xNDYiLCJmaWVsZF9zZXhwXzEzOSQwIiwiZnZhbHVlXzE0MiIsImZpZWxkX3NleHBfMTM5JDEiLCJmdmFsdWVfMTQxIiwiZmllbGRfc2V4cF8xMzkkMiIsImZ2YWx1ZV8xNDMiLCJqb2luXzEzNSIsInN5bl8xMzMiLCJhbmFfMTMxIiwic2V4cF9vZl9va19hbmEiLCJqb2luXzE2OSIsInN5bl8xNjciLCJhbmFfMTY1IiwiYXJnXzE3MCIsImJuZHNfMTY0IiwiYXJnXzE2OCIsImJuZHNfMTY0JDAiLCJhcmdfMTY2IiwiYm5kc18xNjQkMSIsIm5vam9pbl8xNzQiLCJhbmFfMTcyIiwiYXJnXzE3NSIsImJuZHNfMTcxIiwiYXJnXzE3MyIsImJuZHNfMTcxJDAiLCJva19hbmFfb2ZfeW9qc29uIiwibm9qb2luX2ZpZWxkIiwibm9qb2luX3ZhbHVlIiwiZmllbGRfeW9qc29ucyQwIiwiYW5hX2ZpZWxkJDAiLCJqb2luX2ZpZWxkIiwiZHVwbGljYXRlcyQwIiwiZXh0cmEkMCIsIml0ZXIkMCIsImpvaW5fdmFsdWUiLCJhbmFfdmFsdWUkMCIsInlvanNvbl9vZl9va19hbmEiLCJ2X2pvaW4iLCJ2X25vam9pbiIsInZfYW5hJDAiLCJwcF9va19jb21tb24iLCJzaG93X29rX2NvbW1vbiIsIm9rX2NvbW1vbl9vZl9zZXhwIiwic2V4cF8xODAiLCJ0YWdfMTgxIiwicmVzMF8xODQiLCJzZXhwX2FyZ3NfMTg3IiwiYXJnMF8xODgiLCJyZXMwXzE4OSIsInNleHBfb2Zfb2tfY29tbW9uIiwiYXJnMF8xOTAiLCJyZXMwXzE5MSIsInJlczBfMTkzIiwib2tfY29tbW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9va19jb21tb24iLCJwcF9va19leHAiLCJzaG93X29rX2V4cCIsIm9rX2V4cF9vZl9zZXhwIiwic2V4cF8xOTgiLCJ0YWdfMTk5IiwicmVzMF8yMDciLCJzZXhwX2FyZ3NfMjAwIiwiYXJnMF8yMDEiLCJyZXMwXzIwMiIsInNleHBfb2Zfb2tfZXhwIiwiYXJnMF8yMDgiLCJhcmcwXzIxMCIsInJlczBfMjExIiwib2tfZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9va19leHAiLCJwcF9va19wYXQiLCJzaG93X29rX3BhdCIsInBwX3N0YXR1c19jb21tb24iLCJzaG93X3N0YXR1c19jb21tb24iLCJzdGF0dXNfY29tbW9uX29mX3NleHAiLCJzZXhwXzIxNyIsInRhZ18yMTgiLCJzZXhwX2FyZ3NfMjI0IiwiYXJnMF8yMjUiLCJyZXMwXzIyNiIsInNleHBfYXJnc18yMTkiLCJhcmcwXzIyMCIsInJlczBfMjIxIiwic2V4cF9vZl9zdGF0dXNfY29tbW9uIiwicmVzMF8yMjgiLCJhcmcwXzIyOSIsInJlczBfMjMwIiwic3RhdHVzX2NvbW1vbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX2NvbW1vbiIsInBwX3N0YXR1c19leHAiLCJzaG93X3N0YXR1c19leHAiLCJzdGF0dXNfZXhwX29mX3NleHAiLCJzZXhwXzIzNSIsInRhZ18yMzYiLCJzZXhwX2FyZ3NfMjQyIiwiYXJnMF8yNDMiLCJyZXMwXzI0NCIsInNleHBfYXJnc18yMzciLCJhcmcwXzIzOCIsInJlczBfMjM5Iiwic2V4cF9vZl9zdGF0dXNfZXhwIiwiYXJnMF8yNDUiLCJyZXMwXzI0NiIsImFyZzBfMjQ3Iiwic3RhdHVzX2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX2V4cCIsInBwX3N0YXR1c19wYXQiLCJzaG93X3N0YXR1c19wYXQiLCJzdGF0dXNfcGF0X29mX3NleHAiLCJzZXhwXzI1MyIsInRhZ18yNTQiLCJzZXhwX2FyZ3NfMjYwIiwiYXJnMF8yNjEiLCJzZXhwX2FyZ3NfMjU1IiwiYXJnMF8yNTYiLCJyZXMwXzI1NyIsInNleHBfb2Zfc3RhdHVzX3BhdCIsImFyZzBfMjYzIiwicmVzMF8yNjQiLCJhcmcwXzI2NSIsInJlczBfMjY2Iiwic3RhdHVzX3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3BhdCIsInBwX3N0YXR1c192YXJpYW50Iiwic2hvd19zdGF0dXNfdmFyaWFudCIsInN0YXR1c192YXJpYW50X29mX3NleHAiLCJzZXhwXzI3MCIsInNleHBfb2Zfc3RhdHVzX3ZhcmlhbnQiLCJzdGF0dXNfdmFyaWFudF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3ZhcmlhbnQiLCJwcF90eXBfZXhwZWN0cyIsInNob3dfdHlwX2V4cGVjdHMiLCJ0eXBfZXhwZWN0c19vZl9zZXhwIiwic2V4cF8yNzUiLCJ0YWdfMjc2Iiwic2V4cF9hcmdzXzI4NCIsImFyZzFfMjg2IiwiYXJnMF8yODUiLCJyZXMwXzI4NyIsInJlczFfMjg4Iiwic2V4cF9hcmdzXzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwic2V4cF9vZl90eXBfZXhwZWN0cyIsImFyZzFfMjkwIiwiYXJnMF8yODkiLCJyZXMwXzI5MSIsInJlczFfMjkyIiwicmVzMF8yOTUiLCJyZXMxXzI5NiIsInR5cF9leHBlY3RzX29mX3lvanNvbiIsInlvanNvbl9vZl90eXBfZXhwZWN0cyIsInBwX2Vycm9yX3R5cCIsInNob3dfZXJyb3JfdHlwIiwiXzIkNCIsImVycm9yX3R5cF9vZl9zZXhwIiwic2V4cF8zMDEiLCJ0YWdfMzAyIiwic2V4cF9hcmdzXzMwMyIsImFyZzBfMzA0IiwicmVzMF8zMDUiLCJzZXhwX2FyZ3NfMzEzIiwiYXJnMF8zMTQiLCJyZXMwXzMxNSIsInNleHBfYXJnc18zMDgiLCJyZXMwXzMxMCIsInNleHBfYXJnc18zMTgiLCJzZXhwX29mX2Vycm9yX3R5cCIsImVycm9yX3R5cF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfdHlwIiwicHBfb2tfdHlwIiwic2hvd19va190eXAiLCJfMiQ1Iiwib2tfdHlwX29mX3NleHAiLCJzZXhwXzMzMyIsInRhZ18zMzQiLCJzZXhwX2FyZ3NfMzQyIiwic2V4cF9hcmdzXzMzNSIsImFyZzFfMzM3IiwiYXJnMF8zMzYiLCJyZXMwXzMzOCIsInJlczFfMzM5Iiwic2V4cF9hcmdzXzM0NyIsImFyZzFfMzQ5IiwiYXJnMF8zNDgiLCJzZXhwX2FyZ3NfMzU0IiwiYXJnMF8zNTUiLCJzZXhwX29mX29rX3R5cCIsImFyZzFfMzU4IiwiYXJnMF8zNTciLCJyZXMwXzM1OSIsInJlczFfMzYwIiwiYXJnMF8zNjEiLCJhcmcxXzM2NCIsImFyZzBfMzYzIiwicmVzMF8zNjUiLCJyZXMxXzM2NiIsImFyZzBfMzY3Iiwib2tfdHlwX29mX3lvanNvbiIsInlvanNvbl9vZl9va190eXAiLCJwcF9zdGF0dXNfdHlwIiwic2hvd19zdGF0dXNfdHlwIiwic3RhdHVzX3R5cF9vZl9zZXhwIiwic2V4cF8zNzMiLCJ0YWdfMzc0Iiwic2V4cF9hcmdzXzM4MCIsImFyZzBfMzgxIiwic2V4cF9hcmdzXzM3NSIsImFyZzBfMzc2Iiwic2V4cF9vZl9zdGF0dXNfdHlwIiwiYXJnMF8zODMiLCJyZXMwXzM4NCIsInJlczBfMzg2Iiwic3RhdHVzX3R5cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3R5cCIsInBwX3R5cGVfdmFyX2VyciIsInNob3dfdHlwZV92YXJfZXJyIiwidHlwZV92YXJfZXJyX29mX3NleHAiLCJzZXhwXzM5MCIsInNleHBfb2ZfdHlwZV92YXJfZXJyIiwidHlwZV92YXJfZXJyX29mX3lvanNvbiIsInlvanNvbl9vZl90eXBlX3Zhcl9lcnIiLCJwcF9zaGFkb3dfc3JjIiwic2hvd19zaGFkb3dfc3JjIiwic2hhZG93X3NyY19vZl9zZXhwIiwic2V4cF8zOTQiLCJzZXhwX29mX3NoYWRvd19zcmMiLCJzaGFkb3dfc3JjX29mX3lvanNvbiIsInlvanNvbl9vZl9zaGFkb3dfc3JjIiwicHBfZXJyb3JfdHBhdCIsInNob3dfZXJyb3JfdHBhdCIsIl8xJDEzIiwiXzAkMTYiLCJlcnJvcl90cGF0X29mX3NleHAiLCJzZXhwXzM5OSIsInRhZ180MDAiLCJzZXhwX2FyZ3NfNDAxIiwiYXJnMV80MDMiLCJhcmcwXzQwMiIsInJlczBfNDA0IiwicmVzMV80MDUiLCJzZXhwX2FyZ3NfNDA4IiwicmVzMF80MTAiLCJzZXhwX29mX2Vycm9yX3RwYXQiLCJhcmcxXzQxMiIsImFyZzBfNDExIiwicmVzMF80MTMiLCJyZXMxXzQxNCIsImFyZzBfNDE1IiwiZXJyb3JfdHBhdF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfdHBhdCIsInBwX29rX3RwYXQiLCJzaG93X29rX3RwYXQiLCJva190cGF0X29mX3NleHAiLCJzZXhwXzQyMSIsInRhZ180MjIiLCJzZXhwX2FyZ3NfNDIzIiwiYXJnMF80MjQiLCJyZXMwXzQyNSIsInNleHBfb2Zfb2tfdHBhdCIsImFyZzBfNDI2Iiwib2tfdHBhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb2tfdHBhdCIsInBwX3N0YXR1c190cGF0Iiwic2hvd19zdGF0dXNfdHBhdCIsIl8xJDE0IiwiXzAkMTciLCJzdGF0dXNfdHBhdF9vZl9zZXhwIiwic2V4cF80MzIiLCJ0YWdfNDMzIiwic2V4cF9hcmdzXzQzNCIsImFyZzBfNDM1IiwicmVzMF80MzYiLCJzZXhwX2FyZ3NfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsInNleHBfb2Zfc3RhdHVzX3RwYXQiLCJhcmcwXzQ0MiIsInJlczBfNDQzIiwiYXJnMF80NDQiLCJyZXMwXzQ0NSIsInN0YXR1c190cGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9zdGF0dXNfdHBhdCIsIl8yJDYiLCJfMSQxNSIsIl8wJDE4Iiwic2V4cF80NDciLCJmaWVsZF9zZXhwc180NDgiLCJ0ZXJtXzQ0OSIsImFuY2VzdG9yc180NTEiLCJjdHhfNDUzIiwibW9kZV80NTUiLCJzZWxmXzQ1NyIsImNvX2N0eF80NTkiLCJjbHNfNDYxIiwic3RhdHVzXzQ2MyIsInR5XzQ2NSIsImR1cGxpY2F0ZXNfNDY3IiwiZXh0cmFfNDY4IiwiaXRlcl80ODIiLCJzZXhwXzQ0NyQwIiwiZmllbGRfc2V4cHNfNDcxIiwiZmllbGRfbmFtZV80NjkiLCJ0YWlsXzQ4MyIsImZpZWxkX3NleHBfNDcwJDkiLCJmaWVsZF9zZXhwXzQ3MCIsInhfNDg0IiwiZmllbGRfc2V4cF80NzAkMCIsImZ2YWx1ZV80NzIiLCJmaWVsZF9zZXhwXzQ3MCQxIiwiZnZhbHVlXzQ4MCIsImZpZWxkX3NleHBfNDcwJDIiLCJmdmFsdWVfNDczIiwiZmllbGRfc2V4cF80NzAkMyIsImZ2YWx1ZV80NzYiLCJmaWVsZF9zZXhwXzQ3MCQ0IiwiZnZhbHVlXzQ3NyIsImZpZWxkX3NleHBfNDcwJDUiLCJmdmFsdWVfNDc4IiwiZmllbGRfc2V4cF80NzAkNiIsImZ2YWx1ZV80NzUiLCJmaWVsZF9zZXhwXzQ3MCQ3IiwiZnZhbHVlXzQ3NCIsImZpZWxkX3NleHBfNDcwJDgiLCJmdmFsdWVfNDc5IiwidHlfNDY2Iiwic3RhdHVzXzQ2NCIsImNsc180NjIiLCJjb19jdHhfNDYwIiwic2VsZl80NTgiLCJtb2RlXzQ1NiIsImN0eF80NTQiLCJhbmNlc3RvcnNfNDUyIiwidGVybV80NTAiLCJ0eV81MDIiLCJzdGF0dXNfNTAwIiwiY2xzXzQ5OCIsImNvX2N0eF80OTYiLCJzZWxmXzQ5NCIsIm1vZGVfNDkyIiwiY3R4XzQ5MCIsImFuY2VzdG9yc180ODgiLCJ0ZXJtXzQ4NiIsImFyZ181MDMiLCJibmRzXzQ4NSIsImFyZ181MDEiLCJibmRzXzQ4NSQwIiwiYXJnXzQ5OSIsImJuZHNfNDg1JDEiLCJhcmdfNDk3IiwiYm5kc180ODUkMiIsImFyZ180OTUiLCJibmRzXzQ4NSQzIiwiYXJnXzQ5MyIsImJuZHNfNDg1JDQiLCJhcmdfNDkxIiwiYm5kc180ODUkNSIsImFyZ180ODkiLCJibmRzXzQ4NSQ2IiwiYXJnXzQ4NyIsImJuZHNfNDg1JDciLCJjdHhfZmllbGQiLCJzZWxmX2ZpZWxkIiwiY29fY3R4X2ZpZWxkIiwiY2xzX2ZpZWxkIiwic3RhdHVzX2ZpZWxkIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJzdGF0dXNfdmFsdWUiLCJjbHNfdmFsdWUiLCJjb19jdHhfdmFsdWUiLCJzZWxmX3ZhbHVlIiwiY3R4X3ZhbHVlIiwidl9zdGF0dXMiLCJ2X2NscyIsInZfY29fY3R4Iiwidl9zZWxmIiwidl9jdHgiLCJhcmckNCIsImJuZHMkNCIsImFyZyQ1IiwiYm5kcyQ1IiwiYXJnJDYiLCJibmRzJDYiLCJhcmckNyIsImJuZHMkNyIsIl8zJDQiLCJfMiQ3IiwiXzEkMTYiLCJfMCQxOSIsInNleHBfNTA1IiwiZmllbGRfc2V4cHNfNTA2IiwidGVybV81MDciLCJhbmNlc3RvcnNfNTA5IiwiY3R4XzUxMSIsImNvX2N0eF81MTMiLCJwcmV2X3N5bnN3aXRjaF81MTUiLCJtb2RlXzUxNyIsInNlbGZfNTE5IiwiY2xzXzUyMSIsInN0YXR1c181MjMiLCJ0eV81MjUiLCJkdXBsaWNhdGVzXzUyNyIsImV4dHJhXzUyOCIsIml0ZXJfNTQzIiwic2V4cF81MDUkMCIsImZpZWxkX3NleHBzXzUzMSIsImZpZWxkX25hbWVfNTI5IiwidGFpbF81NDQiLCJmaWVsZF9zZXhwXzUzMCQxMCIsImZpZWxkX3NleHBfNTMwIiwieF81NDUiLCJmaWVsZF9zZXhwXzUzMCQwIiwiZnZhbHVlXzUzMiIsImZpZWxkX3NleHBfNTMwJDEiLCJmdmFsdWVfNTQxIiwiZmllbGRfc2V4cF81MzAkMiIsImZ2YWx1ZV81MzMiLCJmaWVsZF9zZXhwXzUzMCQzIiwiZnZhbHVlXzUzNSIsImZpZWxkX3NleHBfNTMwJDQiLCJmdmFsdWVfNTM3IiwiZmllbGRfc2V4cF81MzAkNSIsImZ2YWx1ZV81MzYiLCJmaWVsZF9zZXhwXzUzMCQ2IiwiZnZhbHVlXzUzOSIsImZpZWxkX3NleHBfNTMwJDciLCJmdmFsdWVfNTM4IiwiZmllbGRfc2V4cF81MzAkOCIsImZ2YWx1ZV81MzQiLCJmaWVsZF9zZXhwXzUzMCQ5IiwiZnZhbHVlXzU0MCIsInR5XzUyNiIsInN0YXR1c181MjQiLCJjbHNfNTIyIiwic2VsZl81MjAiLCJtb2RlXzUxOCIsInByZXZfc3luc3dpdGNoXzUxNiIsImNvX2N0eF81MTQiLCJjdHhfNTEyIiwiYW5jZXN0b3JzXzUxMCIsInRlcm1fNTA4IiwidHlfNTY1Iiwic3RhdHVzXzU2MyIsImNsc181NjEiLCJzZWxmXzU1OSIsIm1vZGVfNTU3IiwicHJldl9zeW5zd2l0Y2hfNTU1IiwiY29fY3R4XzU1MyIsImN0eF81NTEiLCJhbmNlc3RvcnNfNTQ5IiwidGVybV81NDciLCJhcmdfNTY2IiwiYm5kc181NDYiLCJhcmdfNTY0IiwiYm5kc181NDYkMCIsImFyZ181NjIiLCJibmRzXzU0NiQxIiwiYXJnXzU2MCIsImJuZHNfNTQ2JDIiLCJhcmdfNTU4IiwiYm5kc181NDYkMyIsImFyZ181NTYiLCJibmRzXzU0NiQ0IiwiYXJnXzU1NCIsImJuZHNfNTQ2JDUiLCJhcmdfNTUyIiwiYm5kc181NDYkNiIsImFyZ181NTAiLCJibmRzXzU0NiQ3IiwiYXJnXzU0OCIsImJuZHNfNTQ2JDgiLCJwcmV2X3N5bnN3aXRjaF9maWVsZCIsImZ2YWx1ZSQ4IiwicHJldl9zeW5zd2l0Y2hfdmFsdWUiLCJ2X3ByZXZfc3luc3dpdGNoIiwiYXJnJDgiLCJibmRzJDgiLCJwcF90eXAiLCJzaG93X3R5cCIsIl80JDMiLCJfMyQ1IiwiXzIkOCIsIl8xJDE3IiwiXzAkMjAiLCJ0eXBfb2Zfc2V4cCIsInNleHBfNTY4IiwiZmllbGRfc2V4cHNfNTY5IiwidGVybV81NzAiLCJhbmNlc3RvcnNfNTcyIiwiY3R4XzU3NCIsImV4cGVjdHNfNTc2IiwiY2xzXzU3OCIsInN0YXR1c181ODAiLCJ0eV81ODIiLCJkdXBsaWNhdGVzXzU4NCIsImV4dHJhXzU4NSIsIml0ZXJfNTk3Iiwic2V4cF81NjgkMCIsImZpZWxkX3NleHBzXzU4OCIsImZpZWxkX25hbWVfNTg2IiwidGFpbF81OTgiLCJmaWVsZF9zZXhwXzU4NyQ3IiwiZmllbGRfc2V4cF81ODciLCJ4XzU5OSIsImZpZWxkX3NleHBfNTg3JDAiLCJmdmFsdWVfNTg5IiwiZmllbGRfc2V4cF81ODckMSIsImZ2YWx1ZV81OTUiLCJmaWVsZF9zZXhwXzU4NyQyIiwiZnZhbHVlXzU5MCIsImZpZWxkX3NleHBfNTg3JDMiLCJmdmFsdWVfNTkyIiwiZmllbGRfc2V4cF81ODckNCIsImZ2YWx1ZV81OTMiLCJmaWVsZF9zZXhwXzU4NyQ1IiwiZnZhbHVlXzU5MSIsImZpZWxkX3NleHBfNTg3JDYiLCJmdmFsdWVfNTk0IiwidHlfNTgzIiwic3RhdHVzXzU4MSIsImNsc181NzkiLCJleHBlY3RzXzU3NyIsImN0eF81NzUiLCJhbmNlc3RvcnNfNTczIiwidGVybV81NzEiLCJzZXhwX29mX3R5cCIsInR5XzYxMyIsInN0YXR1c182MTEiLCJjbHNfNjA5IiwiZXhwZWN0c182MDciLCJjdHhfNjA1IiwiYW5jZXN0b3JzXzYwMyIsInRlcm1fNjAxIiwiYXJnXzYxNCIsImJuZHNfNjAwIiwiYXJnXzYxMiIsImJuZHNfNjAwJDAiLCJhcmdfNjEwIiwiYm5kc182MDAkMSIsImFyZ182MDgiLCJibmRzXzYwMCQyIiwiYXJnXzYwNiIsImJuZHNfNjAwJDMiLCJhcmdfNjA0IiwiYm5kc182MDAkNCIsImFyZ182MDIiLCJibmRzXzYwMCQ1IiwidHlwX29mX3lvanNvbiIsImV4cGVjdHNfZmllbGQiLCJleHBlY3RzX3ZhbHVlIiwieW9qc29uX29mX3R5cCIsInZfZXhwZWN0cyIsInBwX3RwYXQiLCJzaG93X3RwYXQiLCJfNCQ0IiwiXzMkNiIsIl8yJDkiLCJfMSQxOCIsIl8wJDIxIiwidHBhdF9vZl9zZXhwIiwic2V4cF82MTYiLCJmaWVsZF9zZXhwc182MTciLCJ0ZXJtXzYxOCIsImFuY2VzdG9yc182MjAiLCJjdHhfNjIyIiwiY2xzXzYyNCIsInN0YXR1c182MjYiLCJkdXBsaWNhdGVzXzYyOCIsImV4dHJhXzYyOSIsIml0ZXJfNjM5Iiwic2V4cF82MTYkMCIsImZpZWxkX3NleHBzXzYzMiIsImZpZWxkX25hbWVfNjMwIiwidGFpbF82NDAiLCJmaWVsZF9zZXhwXzYzMSQ1IiwiZmllbGRfc2V4cF82MzEiLCJ4XzY0MSIsImZpZWxkX3NleHBfNjMxJDAiLCJmdmFsdWVfNjM3IiwiZmllbGRfc2V4cF82MzEkMSIsImZ2YWx1ZV82MzMiLCJmaWVsZF9zZXhwXzYzMSQyIiwiZnZhbHVlXzYzNSIsImZpZWxkX3NleHBfNjMxJDMiLCJmdmFsdWVfNjM0IiwiZmllbGRfc2V4cF82MzEkNCIsImZ2YWx1ZV82MzYiLCJzdGF0dXNfNjI3IiwiY2xzXzYyNSIsImN0eF82MjMiLCJhbmNlc3RvcnNfNjIxIiwidGVybV82MTkiLCJzZXhwX29mX3RwYXQiLCJzdGF0dXNfNjUxIiwiY2xzXzY0OSIsImN0eF82NDciLCJhbmNlc3RvcnNfNjQ1IiwidGVybV82NDMiLCJhcmdfNjUyIiwiYm5kc182NDIiLCJhcmdfNjUwIiwiYm5kc182NDIkMCIsImFyZ182NDgiLCJibmRzXzY0MiQxIiwiYXJnXzY0NiIsImJuZHNfNjQyJDIiLCJhcmdfNjQ0IiwiYm5kc182NDIkMyIsInRwYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX3RwYXQiLCJwcF9zZWNvbmRhcnkiLCJzaG93X3NlY29uZGFyeSIsIl8zJDciLCJfMiQxMCIsIl8xJDE5IiwiXzAkMjIiLCJzZWNvbmRhcnlfb2Zfc2V4cCIsInNleHBfNjU0IiwiZmllbGRfc2V4cHNfNjU1IiwiaWRfNjU2IiwiY2xzXzY1OCIsInNvcnRfNjYwIiwiY3R4XzY2MiIsImR1cGxpY2F0ZXNfNjY0IiwiZXh0cmFfNjY1IiwiaXRlcl82NzQiLCJzZXhwXzY1NCQwIiwiZmllbGRfc2V4cHNfNjY4IiwiZmllbGRfbmFtZV82NjYiLCJ0YWlsXzY3NSIsImZpZWxkX3NleHBfNjY3JDQiLCJmaWVsZF9zZXhwXzY2NyIsInhfNjc2IiwiZmllbGRfc2V4cF82NjckMCIsImZ2YWx1ZV82NzAiLCJmaWVsZF9zZXhwXzY2NyQxIiwiZnZhbHVlXzY3MiIsImZpZWxkX3NleHBfNjY3JDIiLCJmdmFsdWVfNjY5IiwiZmllbGRfc2V4cF82NjckMyIsImZ2YWx1ZV82NzEiLCJjdHhfNjYzIiwic29ydF82NjEiLCJjbHNfNjU5IiwiaWRfNjU3Iiwic2V4cF9vZl9zZWNvbmRhcnkiLCJjdHhfNjg0Iiwic29ydF82ODIiLCJjbHNfNjgwIiwiaWRfNjc4IiwiYXJnXzY4NSIsImJuZHNfNjc3IiwiYXJnXzY4MyIsImJuZHNfNjc3JDAiLCJhcmdfNjgxIiwiYm5kc182NzckMSIsImFyZ182NzkiLCJibmRzXzY3NyQyIiwic2Vjb25kYXJ5X29mX3lvanNvbiIsInlvanNvbl9vZl9zZWNvbmRhcnkiLCJfNCQ1IiwiXzMkOCIsIl8yJDExIiwiXzEkMjAiLCJfMCQyMyIsInNleHBfNjkwIiwidGFnXzY5MSIsInNleHBfYXJnc182OTIiLCJhcmcwXzY5MyIsInJlczBfNjk0Iiwic2V4cF9hcmdzXzY5NyIsImFyZzBfNjk4IiwicmVzMF82OTkiLCJzZXhwX2FyZ3NfNzA3IiwiYXJnMF83MDgiLCJyZXMwXzcwOSIsInNleHBfYXJnc183MDIiLCJhcmcwXzcwMyIsInJlczBfNzA0Iiwic2V4cF9hcmdzXzcxMiIsImFyZzBfNzEzIiwicmVzMF83MTQiLCJhcmcwXzcxNSIsInJlczBfNzE2IiwiYXJnMF83MTciLCJyZXMwXzcxOCIsImFyZzBfNzIxIiwicmVzMF83MjIiLCJhcmcwXzcyMyIsInJlczBfNzI0IiwicHBfZXJyb3IiLCJzaG93X2Vycm9yIiwiXzMkOSIsIl8yJDEyIiwiXzEkMjEiLCJfMCQyNCIsImVycm9yX29mX3NleHAiLCJzZXhwXzcyOSIsInRhZ183MzAiLCJzZXhwX2FyZ3NfNzQxIiwiYXJnMF83NDIiLCJyZXMwXzc0MyIsInNleHBfYXJnc183NDYiLCJhcmcwXzc0NyIsInJlczBfNzQ4Iiwic2V4cF9hcmdzXzczNiIsInNleHBfYXJnc183MzEiLCJhcmcwXzczMiIsInJlczBfNzMzIiwic2V4cF9vZl9lcnJvciIsImFyZzBfNzQ5IiwicmVzMF83NTAiLCJhcmcwXzc1MSIsInJlczBfNzUyIiwiYXJnMF83NTMiLCJhcmcwXzc1NSIsInJlczBfNzU2IiwiZXJyb3Jfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yIiwic29ydF9vZiIsImN0eF9vZiIsImFuY2VzdG9yc19vZiIsImkkMCIsImkkMSIsImkkMiIsImVycm9yX29mIiwiZXJyJDAiLCJlcnIkMSIsImVyciQyIiwiZXhwX2NvX2N0eCIsImV4cF90eSIsInBhdF9jdHgiLCJwYXRfdHkiLCJzdGF0dXNfY29tbW9uIiwic2VsZiQwIiwic3luIiwiYW5hJDAiLCJzeW4kMCIsImFuYV90eSIsInNlbGYkMSIsInN5bl90eSQwIiwic2VsZiQyIiwic3RhdHVzX3BhdCIsInNlbGZfcGF0IiwiZXJyX3BhdCIsIm9rX2V4cCIsInN0YXR1c19leHAiLCJzdGF0dXNfdHlwIiwiZXhwZWN0cyIsInN1bV90eSIsInR5X3ZhcmlhbnQiLCJzdGF0dXNfdmFyaWFudCIsInN0YXR1c190cGF0Iiwic3JjIiwiaXNfZXJyb3IiLCJjaSIsImN0eCQyIiwiZml4ZWRfdHlwX29rIiwiZml4ZWRfdHlwX2Vycl9jb21tb24iLCJmaXhlZF90eXBfZXJyIiwiZml4ZWRfdHlwX2Vycl9wYXQiLCJmaXhlZF90eXBfcGF0Iiwib2siLCJmaXhlZF90eXBfZXhwIiwiZGVyaXZlZF9leHAiLCJ1ZXhwIiwic3RhdHVzIiwiZGVyaXZlZF9wYXQiLCJ1cGF0IiwicHJldl9zeW5zd2l0Y2giLCJkZXJpdmVkX3R5cCIsImRlcml2ZWRfdHBhdCIsImdldF9iaW5kaW5nX3NpdGUiLCJ0eXBfaXNfY29uc3RydWN0b3JfZXhwZWN0ZWQiLCJyYW5nZSIsInJhbmdlX2hhc2giLCJyb290X2wiLCJyb290X3IiLCJ1bmljaGlsZF9tYXAiLCJtYXBfbCIsImwkMiIsIm1hcF9yIiwiciQyIiwidW5pY2hpbGRfbWFwJDAiLCJyYW5nZSQwIiwiYmV0d2Vlbl9jaGlsZF9tYXAiLCJtayQwIiwicmVzIiwiZXJyb3JfaWRzIiwidGVybV9yYW5nZXMiLCJpbmZvX21hcCIsIm1hcF9tIiwiYWRkX2luZm8iLCJpc19hcnJvd19saWtlIiwiaXNfcmVjdXJzaXZlIiwiZGVmIiwibnVtX2ZucyIsIm51bV92YXJzIiwibm9ybSIsInN5bnMiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9mbG9hdCIsInR5cF9leHBfYmlub3BfYmluX3N0cmluZyIsInR5cF9leHBfYmlub3AiLCJ0eXBfZXhwX3Vub3AiLCJhbnlfdG9faW5mb19tYXAiLCJhbnkiLCJ1ZXhwX3RvX2luZm9fbWFwIiwibSQxIiwidXBhdF90b19pbmZvX21hcCIsInV0eXBfdG9faW5mb19tYXAiLCJ1dHBhdF90b19pbmZvX21hcCIsIm11bHRpIiwiY29fY3R4cyIsImN0eF9kZWYiLCJpc19pbl9maWx0ZXIiLCJhZGQiLCJ1ZXhwX3RvX2luZm9fbWFwJDAiLCJpc19pbl9maWx0ZXIkMCIsImdvJDAiLCJtYXBfbV9nbyIsImdvX3BhdCIsImF0b21pYyIsInBvc2l0aW9uIiwibW9kZXMiLCJtJDMiLCJlcyQwIiwibW9kZV9ib2R5IiwibW9kZV9wYXQiLCJtJDQiLCJtJDUiLCJib2R5JDEiLCJtb2RlX2JvZHkkMSIsIm0kOCIsImN0eF9ib2R5IiwibSQ5IiwiYm9keSQyIiwibW9kZV9ib2R5JDAiLCJtJDYiLCJtJDciLCJlcyQxIiwibW9kZXMkMCIsIm0kMTAiLCJlcyQyIiwiYm9keSQzIiwicF9zeW4iLCJkZWZfYmFzZSIsInR5X3BfYW5hIiwicF9hbmEiLCJwX2FuYV9jdHgiLCJkZWZfYmFzZTIiLCJhbmFfdHlfZm4iLCJ0eV9wIiwidHlfZm4yIiwidHlfZm4xIiwidHlfcHMiLCJ0eV9mbnMyIiwidHlfZm5zMSIsInR5cyQwIiwibSQxMSIsImRlZiQwIiwidHlfcF9hbmEkMCIsIm0kMTIiLCJwX2FuYV9jdHgkMCIsImRlZiQxIiwibSQxNSIsImRlZiQyIiwidHlfcF9hbmEkMSIsInBfYW5hJDEiLCJtJDEzIiwiYm9keSQ0IiwibSQxNCIsInBfYW5hJDAiLCJwJDMiLCJwJDQiLCJtJDE2IiwibSQxNyIsInAkNSIsImJvZHkkNSIsInR5cGF0IiwibSQxOCIsInR5X3ByZSIsInR5X3JlYyIsImN0eF9kZWYkMSIsImN0eF9ib2R5JDEiLCJjdHhfZGVmJDAiLCJ0eV9kZWYkMCIsInR5X2RlZiIsImN0eF9ib2R5JDAiLCJjdHhfYm9keSQyIiwibSQyMSIsImNvX2N0eCQwIiwidHlfZXNjYXBlIiwibSQyMiIsIm0kMTkiLCJtJDIwIiwiZm5fbW9kZSIsIm0kMjMiLCJmbiQwIiwibSQyNCIsImZuJDEiLCJ0eXBmbl9tb2RlIiwibSQyNSIsImZuJDIiLCJtJDI2IiwidHlfYm9keSQxIiwib3B0aW9uX25hbWUiLCJuYW1lJDIiLCJmbiQzIiwiZm5fbW9kZSQwIiwibSQyNyIsImZuJDQiLCJ0eV9vdXQkMCIsInR5X2luJDAiLCJudW1fYXJncyIsIm1vZGVzJDEiLCJtJDI4IiwiYXJncyQwIiwiYXJnX2NvX2N0eCIsImUwIiwiYnJhbmNoX2lkcyIsIm0kMjkiLCJjb25kIiwibSQzMCIsIm0kMzEiLCJhbHQiLCJtJDMyIiwibSQzMyIsIm0kMzQiLCJib2R5JDYiLCJjb25kJDAiLCJtJDM1IiwiY29uZCQxIiwibSQzNiIsImJvZHkkNyIsImJvZHkkOCIsIm0kMzciLCJib2R5JDkiLCJtJDM4IiwibSQzOSIsIm0kNDAiLCJtb2RlJDEiLCJpZHMkMSIsIm0kNDEiLCJtJDQyIiwidHlfaW4kMSIsInR5X291dCQxIiwibSQ0MyIsImUkMTQiLCJ0eV9vdXQkMiIsInR5X2luJDIiLCJtJDQ0IiwiZSQxNSIsInR5X291dCQzIiwibSQ0NSIsIm0kNDYiLCJzdHJpbmciLCJydWxlcyIsIm0kNDciLCJzY3J1dCQwIiwiZXMkMyIsImJyYW5jaF9pZHMkMCIsInBzJDAiLCJwX2N0eHMiLCJtJDQ4IiwiZXMkNCIsImVfdHlzIiwiZV9jb19jdHhzIiwibSQ0OSIsIm0kMiIsImlzX3N5bnN3aXRjaCIsInByZXZfc3luc3dpdGNoJDAiLCJ1bmtub3duIiwiY3R4X2ZvbGQiLCJjdHhfdHlwIiwiYW5uJDAiLCJ0eV9zdW0iLCJ2YXJpYW50X3RvX2luZm9fbWFwIiwidDFfbW9kZSIsImJvZHlfY3R4IiwiYm9keV9jdHgkMCIsInV0eSIsInV0eSQwIiwicGFyYW0kMCIsInBhcmFtX3R5IiwiZ2V0X2Vycm9yX2F0IiwiZXJyX2luZm8iLCJnZXRfcGF0X2Vycm9yX2F0IiwiY29sbGVjdF9lcnJvcnMiLCJiaW5kc192YXIiLCJkcCIsImRwJDAiLCJkX2xpc3QiLCJuZXdfbGlzdCIsImRwMiIsImRwMSIsImRwcyIsImRwJDEiLCJib3VuZF92YXJzIiwiZHBzJDAiLCJkcDEkMCIsImdyb3VuZF9jYXNlc19vZl9zZXhwIiwic2V4cF9vZl9ncm91bmRfY2FzZXMiLCJncm91bmRlZF9BcnJvdyIsImdyb3VuZGVkX0ZvcmFsbCIsImdyb3VuZGVkX1Byb2QiLCJncm91bmRlZF9TdW0iLCJncm91bmRlZF9MaXN0IiwiZ3JvdW5kX2Nhc2VzX29mIiwidHJhbnNpdGlvbiIsInJlY3Vyc2l2ZSIsInQxX2dyb3VuZGVkIiwidDJfZ3JvdW5kZWQiLCJpbm5lcl9jYXN0IiwiZDEkMSIsImlubmVyX2Nhc3QkMCIsInRyYW5zaXRpb25fbXVsdGlwbGUiLCJwYXR0ZXJuX2ZpeHVwIiwidW53cmFwX2Nhc3RzIiwicmV3cmFwX2Nhc3RzIiwiZXJyb3Jfc291cmNlXzA4MiIsInNob3dfY2FzZV9jbGF1c2VzXzAwNCIsInNob3dfZm5fYm9kaWVzXzAwNiIsInNob3dfZml4cG9pbnRzXzAwOCIsInNob3dfY2FzdHNfMDEwIiwic2hvd19sb29rdXBfc3RlcHNfMDEyIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfMDE0Iiwic3RlcHBlcl9oaXN0b3J5XzAxNiIsInNob3dfc2V0dGluZ3NfMDE4Iiwic2hvd19oaWRkZW5fc3RlcHNfMDIwIiwiZHVwbGljYXRlc18wMjIiLCJleHRyYV8wMjMiLCJmaWVsZF9zZXhwc18wMjYiLCJmaWVsZF9uYW1lXzAyNCIsImZpZWxkX3NleHBfMDI1JDkiLCJmaWVsZF9zZXhwXzAyNSIsImZpZWxkX3NleHBfMDI1JDAiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjUkMSIsImZpZWxkX3NleHBfMDI1JDIiLCJmaWVsZF9zZXhwXzAyNSQzIiwiZmllbGRfc2V4cF8wMjUkNCIsImZpZWxkX3NleHBfMDI1JDUiLCJmaWVsZF9zZXhwXzAyNSQ2IiwiZmllbGRfc2V4cF8wMjUkNyIsImZpZWxkX3NleHBfMDI1JDgiLCJzaG93X2hpZGRlbl9zdGVwc18wMjEiLCJzaG93X3NldHRpbmdzXzAxOSIsInN0ZXBwZXJfaGlzdG9yeV8wMTciLCJzaG93X3N0ZXBwZXJfZmlsdGVyc18wMTUiLCJzaG93X2xvb2t1cF9zdGVwc18wMTMiLCJzaG93X2Nhc3RzXzAxMSIsInNob3dfZml4cG9pbnRzXzAwOSIsInNob3dfZm5fYm9kaWVzXzAwNyIsInNob3dfY2FzZV9jbGF1c2VzXzAwNSIsInNob3dfaGlkZGVuX3N0ZXBzXzA1NyIsInNob3dfc2V0dGluZ3NfMDU1Iiwic3RlcHBlcl9oaXN0b3J5XzA1MyIsInNob3dfc3RlcHBlcl9maWx0ZXJzXzA1MSIsInNob3dfbG9va3VwX3N0ZXBzXzA0OSIsInNob3dfY2FzdHNfMDQ3Iiwic2hvd19maXhwb2ludHNfMDQ1Iiwic2hvd19mbl9ib2RpZXNfMDQzIiwic2hvd19jYXNlX2NsYXVzZXNfMDQxIiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImJuZHNfMDQwJDMiLCJibmRzXzA0MCQ0IiwiYm5kc18wNDAkNSIsImJuZHNfMDQwJDYiLCJibmRzXzA0MCQ3Iiwic2hvd19jYXNlX2NsYXVzZXNfZmllbGQiLCJzaG93X2ZuX2JvZGllc19maWVsZCIsInNob3dfZml4cG9pbnRzX2ZpZWxkIiwic2hvd19jYXN0c19maWVsZCIsInNob3dfbG9va3VwX3N0ZXBzX2ZpZWxkIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfZmllbGQiLCJzdGVwcGVyX2hpc3RvcnlfZmllbGQiLCJzaG93X3NldHRpbmdzX2ZpZWxkIiwic2hvd19oaWRkZW5fc3RlcHNfZmllbGQiLCJzaG93X2hpZGRlbl9zdGVwc192YWx1ZSIsInNob3dfc2V0dGluZ3NfdmFsdWUiLCJzdGVwcGVyX2hpc3RvcnlfdmFsdWUiLCJzaG93X3N0ZXBwZXJfZmlsdGVyc192YWx1ZSIsInNob3dfbG9va3VwX3N0ZXBzX3ZhbHVlIiwic2hvd19jYXN0c192YWx1ZSIsInNob3dfZml4cG9pbnRzX3ZhbHVlIiwic2hvd19mbl9ib2RpZXNfdmFsdWUiLCJzaG93X2Nhc2VfY2xhdXNlc192YWx1ZSIsInZfc2hvd19oaWRkZW5fc3RlcHMiLCJ2X3Nob3dfc2V0dGluZ3MiLCJ2X3N0ZXBwZXJfaGlzdG9yeSIsInZfc2hvd19zdGVwcGVyX2ZpbHRlcnMiLCJ2X3Nob3dfbG9va3VwX3N0ZXBzIiwidl9zaG93X2Nhc3RzIiwidl9zaG93X2ZpeHBvaW50cyIsInZfc2hvd19mbl9ib2RpZXMiLCJ2X3Nob3dfY2FzZV9jbGF1c2VzIiwic2V4cF8wNjAiLCJmaWVsZF9zZXhwc18wNjEiLCJzdGF0aWNzXzA2MiIsImVsYWJvcmF0ZV8wNjQiLCJhc3Npc3RfMDY2IiwiZHluYW1pY3NfMDY4IiwiZXZhbHVhdGlvbl8wNzAiLCJkdXBsaWNhdGVzXzA3MiIsImV4dHJhXzA3MyIsIml0ZXJfMDgzIiwic2V4cF8wNjAkMCIsImZpZWxkX3NleHBzXzA3NiIsImZpZWxkX25hbWVfMDc0IiwidGFpbF8wODQiLCJmaWVsZF9zZXhwXzA3NSQ1IiwiZmllbGRfc2V4cF8wNzUiLCJ4XzA4NSIsImZpZWxkX3NleHBfMDc1JDAiLCJmdmFsdWVfMDgxIiwiZmllbGRfc2V4cF8wNzUkMSIsImZ2YWx1ZV8wNzciLCJmaWVsZF9zZXhwXzA3NSQyIiwiZmllbGRfc2V4cF8wNzUkMyIsImZ2YWx1ZV8wNzgiLCJmaWVsZF9zZXhwXzA3NSQ0IiwiZXZhbHVhdGlvbl8wNzEiLCJkeW5hbWljc18wNjkiLCJhc3Npc3RfMDY3IiwiZWxhYm9yYXRlXzA2NSIsInN0YXRpY3NfMDYzIiwiZXZhbHVhdGlvbl8wOTUiLCJkeW5hbWljc18wOTMiLCJhc3Npc3RfMDkxIiwiZWxhYm9yYXRlXzA4OSIsInN0YXRpY3NfMDg3IiwiYXJnXzA5NiIsImJuZHNfMDg2IiwiYXJnXzA5NCIsImJuZHNfMDg2JDAiLCJhcmdfMDkyIiwiYm5kc18wODYkMSIsImFyZ18wOTAiLCJibmRzXzA4NiQyIiwiYm5kc18wODYkMyIsInN0YXRpY3NfZmllbGQiLCJlbGFib3JhdGVfZmllbGQiLCJhc3Npc3RfZmllbGQiLCJkeW5hbWljc19maWVsZCIsImV2YWx1YXRpb25fZmllbGQiLCJldmFsdWF0aW9uX3ZhbHVlIiwiZHluYW1pY3NfdmFsdWUiLCJhc3Npc3RfdmFsdWUiLCJlbGFib3JhdGVfdmFsdWUiLCJzdGF0aWNzX3ZhbHVlIiwidl9ldmFsdWF0aW9uIiwidl9keW5hbWljcyIsInZfYXNzaXN0Iiwidl9lbGFib3JhdGUiLCJ2X3N0YXRpY3MiLCJvZmYiLCJvbiIsImVycm9yX3NvdXJjZV8zMDMiLCJfODYiLCJfODUiLCJfODQiLCJfODMiLCJfODIiLCJfODEiLCJfODAiLCJfNzkiLCJfNzgiLCJfNzciLCJfNzYiLCJfNzUiLCJfNzQiLCJfNzMiLCJfNzIiLCJfNzEiLCJfNzAiLCJfNjkiLCJfNjgiLCJfNjciLCJfNjYiLCJfNjUiLCJfNjQiLCJfNjMiLCJfNjIiLCJfNjEiLCJfNjAiLCJfNTkiLCJfNTgiLCJfNTciLCJfNTYiLCJfNTUiLCJhMiQ5IiwiYTIkMTAiLCJhMSQxOSIsImExJDIwIiwiYTEkMjEiLCJhMSQyMiIsImExJDIzIiwiYTEkMjQiLCJhMiQxMSIsImExJDI1IiwiYTIkMTIiLCJhMSQyNiIsImExJDI3IiwiYTEkMjgiLCJhMyQwIiwiYTIkMTMiLCJhMSQyOSIsImFpZHMiLCJhdGVybSIsInNleHBfYXJnc18xMjgiLCJhcmcyXzEzMSIsImFyZzFfMTMwIiwiYXJnMF8xMjkiLCJyZXMwXzEzMiIsInJlczFfMTMzIiwicmVzMl8xMzQiLCJzZXhwX2FyZ3NfMjY1IiwiYXJnMV8yNzIiLCJhcmcwXzI3MSIsInJlczBfMjczIiwiYXJnMV8yNjciLCJhcmcwXzI2NiIsInJlczBfMjY4IiwicmVzMV8yNjkiLCJyZXMxXzI3NCIsInJlczBfMjA4IiwiYXJnMV8yMDIiLCJyZXMwXzIwMyIsInJlczFfMjA0IiwicmVzMV8yMDkiLCJzZXhwX2FyZ3NfMDIxIiwicmVzMV8wMjUiLCJhcmcxXzAzMCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzZXhwX2FyZ3NfMTgzIiwiYXJnMF8xODQiLCJyZXMwXzE4NSIsInNleHBfYXJnc18xNzEiLCJhcmcxXzE3OCIsImFyZzBfMTc3IiwicmVzMF8xNzkiLCJhcmcxXzE3MyIsImFyZzBfMTcyIiwicmVzMF8xNzQiLCJyZXMxXzE3NSIsInJlczFfMTgwIiwic2V4cF9hcmdzXzA3MyIsImFyZzFfMDc1IiwicmVzMV8wNzciLCJzZXhwX2FyZ3NfMTQ2IiwiYXJnMV8xNDgiLCJhcmcwXzE0NyIsInJlczBfMTQ5IiwicmVzMV8xNTAiLCJzZXhwX2FyZ3NfMTM3IiwiYXJnMl8xNDAiLCJhcmcxXzEzOSIsImFyZzBfMTM4IiwicmVzMF8xNDEiLCJyZXMxXzE0MiIsInJlczJfMTQzIiwiYXJnMl8wMzgiLCJhcmcxXzAzNyIsInJlczJfMDQxIiwic2V4cF9hcmdzXzA0NCIsInNleHBfYXJnc18xODgiLCJhcmcxXzE5NSIsImFyZzBfMTk0IiwicmVzMF8xOTYiLCJhcmcxXzE5MCIsImFyZzBfMTg5IiwicmVzMV8xOTIiLCJyZXMxXzE5NyIsImFyZzNfMjk2IiwicmVzMF8yOTciLCJyZXMxXzI5OCIsInJlczJfMjk5IiwiYXJnMV8yODkiLCJhcmcwXzI4OCIsInNleHBfMjgyIiwicmVzMF8yOTAiLCJzZXhwXzI4NyIsImFyZzFfMjg0IiwiYXJnMF8yODMiLCJyZXMwXzI4NSIsInJlczFfMjg2IiwicmVzMV8yOTEiLCJyZXMzXzMwMCIsImFyZzFfMTAwIiwicmVzMF8xMDEiLCJyZXMxXzEwMiIsImFyZzJfMTEzIiwiYXJnMV8xMTIiLCJyZXMxXzExNSIsImFyZzFfMTA3IiwicmVzMF8xMDgiLCJyZXMxXzEwOSIsInJlczJfMTE2Iiwic2V4cF9hcmdzXzI1OCIsImFyZzFfMjYwIiwiYXJnMF8yNTkiLCJyZXMwXzI2MSIsInJlczFfMjYyIiwic2V4cF9hcmdzXzI0OSIsImFyZzJfMjUyIiwiYXJnMV8yNTEiLCJhcmcwXzI1MCIsInJlczBfMjUzIiwicmVzMV8yNTQiLCJyZXMyXzI1NSIsImFyZzJfMDY3IiwiYXJnMV8wNjYiLCJyZXMxXzA2OSIsInJlczJfMDcwIiwic2V4cF9hcmdzXzA1MyIsImFyZzNfMDU3IiwiYXJnMl8wNTYiLCJyZXMyXzA2MCIsInJlczNfMDYxIiwic2V4cF9hcmdzXzExOSIsImFyZzJfMTIyIiwiYXJnMV8xMjEiLCJhcmcwXzEyMCIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJyZXMyXzEyNSIsImFyZzJfMDgzIiwiYXJnMV8wODIiLCJyZXMxXzA4NSIsInJlczJfMDg2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzJfMDkyIiwiYXJnMV8wOTEiLCJyZXMxXzA5NCIsInJlczJfMDk1Iiwic2V4cF9hcmdzXzE1MyIsImFyZzJfMTU2IiwiYXJnMV8xNTUiLCJhcmcwXzE1NCIsInJlczBfMTU3IiwicmVzMV8xNTgiLCJyZXMyXzE1OSIsInNleHBfYXJnc18xNjIiLCJhcmcyXzE2NSIsImFyZzFfMTY0IiwiYXJnMF8xNjMiLCJyZXMwXzE2NiIsInJlczFfMTY3IiwicmVzMl8xNjgiLCJhcmcyXzI0MyIsImFyZzFfMjQyIiwicmVzMV8yNDUiLCJyZXMyXzI0NiIsInNleHBfYXJnc18yMTIiLCJhcmcxXzIxNCIsImFyZzBfMjEzIiwicmVzMF8yMTUiLCJyZXMxXzIxNiIsImFyZzFfMjIxIiwicmVzMF8yMjIiLCJyZXMxXzIyMyIsInNleHBfMzA2IiwiZmllbGRfc2V4cHNfMzA1IiwidGVybV8zMDgiLCJpZHNfMzEwIiwiZHVwbGljYXRlc18zMTIiLCJleHRyYV8zMTMiLCJpdGVyXzMxOSIsInNleHBfMzA2JDAiLCJmaWVsZF9zZXhwc18zMTYiLCJmaWVsZF9uYW1lXzMxNCIsInRhaWxfMzIwIiwiZmllbGRfc2V4cF8zMTUkMiIsImZpZWxkX3NleHBfMzE1IiwieF8zMjEiLCJmaWVsZF9zZXhwXzMxNSQwIiwiZnZhbHVlXzMxOCIsImZpZWxkX3NleHBfMzE1JDEiLCJmdmFsdWVfMzE3IiwiaWRzXzMxMSIsInRlcm1fMzA5IiwiYXJnMV8zMjMiLCJhcmcwXzMyMiIsInJlczFfMzI1IiwiYXJnMV8zMjciLCJhcmcwXzMyNiIsInJlczFfMzI5IiwiYXJnMV8zMzEiLCJhcmcwXzMzMCIsInJlczBfMzMyIiwicmVzMV8zMzMiLCJhcmcxXzMzNSIsImFyZzBfMzM0IiwicmVzMF8zMzYiLCJyZXMxXzMzNyIsImFyZzJfMzQwIiwiYXJnMV8zMzkiLCJhcmcwXzMzOCIsInJlczBfMzQxIiwicmVzMV8zNDIiLCJyZXMyXzM0MyIsImFyZzJfMzQ2IiwiYXJnMV8zNDUiLCJhcmcwXzM0NCIsInJlczBfMzQ3IiwicmVzMV8zNDgiLCJyZXMyXzM0OSIsImFyZzNfMzUzIiwiYXJnMl8zNTIiLCJhcmcxXzM1MSIsImFyZzBfMzUwIiwicmVzMF8zNTQiLCJyZXMxXzM1NSIsInJlczJfMzU2IiwicmVzM18zNTciLCJhcmcyXzM2MCIsImFyZzFfMzU5IiwiYXJnMF8zNTgiLCJyZXMwXzM2MSIsInJlczFfMzYyIiwicmVzMl8zNjMiLCJhcmcxXzM2NSIsImFyZzBfMzY0IiwicmVzMF8zNjYiLCJyZXMxXzM2NyIsImFyZzJfMzcwIiwiYXJnMV8zNjkiLCJhcmcwXzM2OCIsInJlczBfMzcxIiwicmVzMV8zNzIiLCJyZXMyXzM3MyIsImFyZzJfMzc2IiwiYXJnMV8zNzUiLCJhcmcwXzM3NCIsInJlczJfMzc5IiwiYXJnMV8zODEiLCJhcmcwXzM4MCIsImFyZzJfMzkwIiwiYXJnMV8zODkiLCJhcmcwXzM4OCIsInJlczBfMzkxIiwicmVzMV8zOTIiLCJhcmcxXzM4NSIsImFyZzBfMzg0IiwicmVzMV8zODciLCJyZXMyXzM5MyIsImFyZzJfMzk2IiwiYXJnMV8zOTUiLCJhcmcwXzM5NCIsInJlczJfMzk5IiwiYXJnMl80MDIiLCJhcmcxXzQwMSIsImFyZzBfNDAwIiwicmVzMl80MDUiLCJhcmcyXzQwOCIsImFyZzFfNDA3IiwiYXJnMF80MDYiLCJyZXMwXzQwOSIsInJlczFfNDEwIiwicmVzMl80MTEiLCJhcmcxXzQxMyIsImFyZzBfNDEyIiwicmVzMF80MTQiLCJyZXMxXzQxNSIsImFyZzJfNDE4IiwiYXJnMV80MTciLCJhcmcwXzQxNiIsInJlczBfNDE5IiwicmVzMV80MjAiLCJyZXMyXzQyMSIsImFyZzJfNDI0IiwiYXJnMV80MjMiLCJhcmcwXzQyMiIsInJlczFfNDI2IiwicmVzMl80MjciLCJhcmcxXzQzMyIsImFyZzBfNDMyIiwicmVzMF80MzQiLCJhcmcxXzQyOSIsImFyZzBfNDI4IiwicmVzMF80MzAiLCJyZXMxXzQzMSIsInJlczFfNDM1IiwiYXJnMF80MzYiLCJyZXMwXzQzNyIsImFyZzFfNDQzIiwiYXJnMV80MzkiLCJhcmcwXzQzOCIsInJlczBfNDQwIiwicmVzMV80NDEiLCJyZXMxXzQ0NSIsImFyZzFfNDUxIiwiYXJnMF80NTAiLCJyZXMwXzQ1MiIsImFyZzFfNDQ3IiwiYXJnMF80NDYiLCJyZXMwXzQ0OCIsInJlczFfNDQ5IiwicmVzMV80NTMiLCJhcmcxXzQ1NSIsImFyZzBfNDU0IiwicmVzMF80NTYiLCJyZXMxXzQ1NyIsImFyZzFfNDU5IiwicmVzMF80NjAiLCJyZXMxXzQ2MSIsImFyZzFfNDYzIiwiYXJnMF80NjIiLCJyZXMxXzQ2NSIsImFyZzFfNDY3IiwiYXJnMF80NjYiLCJyZXMwXzQ2OCIsInJlczFfNDY5IiwiYXJnMl80NzIiLCJhcmcxXzQ3MSIsImFyZzBfNDcwIiwicmVzMF80NzMiLCJyZXMxXzQ3NCIsInJlczJfNDc1IiwiYXJnMl80NzgiLCJhcmcxXzQ3NyIsImFyZzBfNDc2IiwicmVzMV80ODAiLCJyZXMyXzQ4MSIsImFyZzFfNDgzIiwiYXJnMF80ODIiLCJyZXMwXzQ4NCIsInJlczFfNDg1IiwiYXJnMV80OTEiLCJyZXMwXzQ5MiIsImFyZzFfNDg3IiwiYXJnMF80ODYiLCJyZXMwXzQ4OCIsInJlczFfNDg5IiwicmVzMV80OTMiLCJhcmczXzUwOSIsImFyZzJfNTA4IiwiYXJnMV81MDciLCJhcmcwXzUwNiIsInJlczBfNTEwIiwicmVzMV81MTEiLCJyZXMyXzUxMiIsImFyZzFfNTAzIiwiYXJnMF81MDIiLCJhcmcxXzQ5NSIsImFyZzBfNDk0IiwicmVzMV80OTciLCJyZXMwXzUwNCIsImFyZzFfNDk5IiwiYXJnMF80OTgiLCJyZXMwXzUwMCIsInJlczFfNTAxIiwicmVzMV81MDUiLCJyZXMzXzUxMyIsImlkc181MTciLCJ0ZXJtXzUxNSIsImFyZ181MTgiLCJibmRzXzUxNCIsImFyZ181MTYiLCJibmRzXzUxNCQwIiwidjEkNTMiLCJ2MSQ1NCIsInYxJDQ5IiwidjEkNTAiLCJ2MSQ1MSIsInYxJDUyIiwidjEkNDciLCJ2MSQ0OCIsInYxJDQ1IiwidjEkNDYiLCJ2MSQ0MyIsInYxJDQ0IiwidjEkNDEiLCJ2MSQ0MiIsInYzJDEiLCJ2MSQzOSIsInYxJDQwIiwidjMkMiIsInYyJDI3IiwidjEkNjkiLCJ2MCQ3MSIsInYwJDcyIiwidjEkNzAiLCJ2MiQyOCIsInYyJDI1IiwidjEkNjciLCJ2MCQ2OSIsInYwJDcwIiwidjEkNjgiLCJ2MiQyNiIsInYyJDIzIiwidjEkNjUiLCJ2MCQ2NyIsInYwJDY4IiwidjEkNjYiLCJ2MiQyNCIsInYyJDIxIiwidjEkNjMiLCJ2MSQ2NCIsInYyJDIyIiwidjIkMTkiLCJ2MSQ2MSIsInYxJDYyIiwidjIkMjAiLCJ2MSQ1OSIsInYxJDYwIiwidjEkNTciLCJ2MSQ1OCIsInYxJDU1IiwidjEkNTYiLCJjb21wb3NlIiwiZmx0IiwiY3R4JDMiLCJkMiQxIiwiY3R4JDQiLCJjdHgkNSIsImQkMyIsImN0eCQ2IiwiZCQ0IiwiY3R4JDciLCJ2JDAiLCJkJDUiLCJjdHgkOCIsImQkNiIsImQyJDIiLCJjdHgkOSIsImRpciIsImQxJDIiLCJjdHgkMTAiLCJkMSQzIiwiZGlyJDAiLCJkMiQzIiwiZDJzIiwiY3R4JDExIiwiZDEkNCIsInJkIiwibGQiLCJjdHgkMTIiLCJkMSQ1IiwiZDIkNCIsImQyJDUiLCJjdHgkMTMiLCJkJDciLCJkMyQwIiwiY3R4JDE0IiwiZDEkNiIsImQkOCIsImN0eCQxNSIsImQyJDYiLCJkMSQ3IiwiZCQ5IiwiY3R4JDE2IiwiZDEkOCIsImQyJDciLCJjdHgkMTciLCJkMSQ5IiwiY3R4JDE4IiwiZDEkMTAiLCJkMiQ4IiwicmQkMCIsImxkJDAiLCJjdHgkMTkiLCJkJDEwIiwiY3R4JDIwIiwiZDEkMTEiLCJyZCQxIiwibGQkMSIsImN0eCQyMSIsImQkMTEiLCJyZCQyIiwibGQkMiIsImN0eCQyMiIsImQkMTIiLCJkMiQ5IiwiY3R4JDIzIiwiZDEkMTIiLCJjdHgkMjQiLCJkMSQxMyIsImQyJDEwIiwiZDIkMTEiLCJjdHgkMjUiLCJkMSQxNCIsImN0eCQyNiIsImQxJDE1IiwiZDIkMTIiLCJjdHgkMjciLCJkJDEzIiwiY3R4JDI4IiwiZCQxNCIsImN0eCQyOSIsImQkMTUiLCJjdHgkMzAiLCJkJDE2IiwicnIiLCJsciIsImN0eCQzMSIsInNjciIsImQkMTciLCJmaXh1cF9jYXN0IiwidW5ib3giLCJyZXF1ZXN0IiwiZXhwciIsImV4cHIkMCIsImN0MSIsImN0MiIsInQycyIsInQxcyIsIm5hbWUxIiwibmFtZTIiLCJuYW1lMSQwIiwibmFtZTIkMCIsImV4cHIkMSIsImNvbWJpbmVfcmVzdWx0IiwibWF0Y2hlcyIsImIkMCIsIm1feCIsIm1feHMiLCJkcCQyIiwicHBfaW5zdGFuY2VfcmVwb3J0Iiwic2hvd19pbnN0YW5jZV9yZXBvcnQiLCJpbnN0YW5jZV9yZXBvcnRfb2Zfc2V4cCIsInNleHBfb2ZfaW5zdGFuY2VfcmVwb3J0IiwiaW5zdGFuY2VfcmVwb3J0X29mX3lvanNvbiIsInlvanNvbl9vZl9pbnN0YW5jZV9yZXBvcnQiLCJqb2ludF9zdGF0dXMiLCJyZXBvcnRzIiwicHBfcmVwb3J0Iiwic2hvd19yZXBvcnQiLCJyZXBvcnRfb2Zfc2V4cCIsInNleHBfb2ZfcmVwb3J0IiwiYXJnMV8wMjAiLCJyZXMxXzAyMiIsInJlcG9ydF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcmVwb3J0IiwibG9va3VwX2FuZF9qb2luIiwidGVzdF9tYXAiLCJyZXBvcnQiLCJjb3VudF9zdGF0dXMiLCJpbnN0YW5jZXMiLCJwcF9zdGVwX2tpbmQiLCJzaG93X3N0ZXBfa2luZCIsInN0ZXBfa2luZF9vZl9zZXhwIiwic2V4cF9vZl9zdGVwX2tpbmQiLCJzdGVwX2tpbmRfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0ZXBfa2luZCIsImV2YWx1YXRlX2V4dGVuZF9lbnYiLCJuZXdfYmluZGluZ3MiLCJ0b19leHRlbmQiLCJsZXRfdW5ib3giLCJzdGF0ZV91cGRhdGUiLCJsZXRfbWF0Y2giLCJtYXRjaF9yZXN1bHQiLCJyZXEiLCJzdGF0ZSIsIndyYXBfY3R4IiwiZHMkMCIsImJpbmRpbmciLCJzdWJzdGl0dXRpb25zIiwiZDJfaXNfdmFsdWUiLCJkNHMiLCJuX2FyZ3MiLCJkZWZlcnJlZCIsImRlZmVycmVkJDEiLCJkZWZlcnJlZCQwIiwibmV3X2FyZ3MiLCJpZGVudCIsImJ1aWx0aW4iLCJkMyQxIiwidGF1IiwidGZib2R5IiwiZHMkMSIsImlzX3ZhbHVlIiwiZHMxIiwiZHMyIiwiZDEkMTYiLCJkMSQxNyIsIm5leHRfcnVsZSIsInNob3VsZF9oaWRlX3N0ZXAiLCJzZXR0aW5ncyIsImNvbWJpbmUiLCJiMiQwIiwicmVxX3ZhbHVlIiwidmMiLCJyZXFfYWxsX3ZhbHVlIiwicmVxX2ZpbmFsIiwicmVxX2FsbF9maW5hbCIsInJlcV9maW5hbF9vcl92YWx1ZSIsIm90aGVyd2lzZSIsInJ1bGUiLCJ1cGRhdGVfdGVzdCIsImNoZWNrX3ZhbHVlIiwiY2hlY2tfdmFsdWVfbW9kX2N0eCIsImVycm9yX3NvdXJjZV8wNTQiLCJlcnJvcl9zb3VyY2VfMDgwIiwiZXJyb3Jfc291cmNlXzEwNSIsImVycm9yX3NvdXJjZV8xNzkiLCJwcF9waWVjZV9nb2FsIiwic2hvd19waWVjZV9nb2FsIiwicGllY2VfZ29hbF9vZl9zZXhwIiwic2V4cF9vZl9waWVjZV9nb2FsIiwicGllY2VfZ29hbF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGllY2VfZ29hbCIsIm9mX3BpZWNlX2dvYWwiLCJwcF9nb2FsIiwic2hvd19nb2FsIiwiZ29hbF9vZl9zZXhwIiwic2V4cF9vZl9nb2FsIiwiYXJnMV8wMjQiLCJnb2FsX29mX3lvanNvbiIsInlvanNvbl9vZl9nb2FsIiwicHBfbW92ZSIsInNob3dfbW92ZSIsIm1vdmVfb2Zfc2V4cCIsInNleHBfMDMxIiwidGFnXzAzMiIsInNleHBfYXJnc18wMzgiLCJzZXhwX2FyZ3NfMDQzIiwic2V4cF9hcmdzXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJzZXhwX29mX21vdmUiLCJtb3ZlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZlIiwicHBfanVtcF90YXJnZXQiLCJzaG93X2p1bXBfdGFyZ2V0IiwianVtcF90YXJnZXRfb2Zfc2V4cCIsInNleHBfMDU2IiwidGFnXzA1NyIsInNleHBfYXJnc18wNTgiLCJhcmcwXzA1OSIsInJlczBfMDYwIiwic2V4cF9vZl9qdW1wX3RhcmdldCIsImp1bXBfdGFyZ2V0X29mX3lvanNvbiIsInlvanNvbl9vZl9qdW1wX3RhcmdldCIsInBwX3JlbCIsInNob3dfcmVsIiwicmVsX29mX3NleHAiLCJzZXhwXzA2NyIsInRhZ18wNjgiLCJhcmcxXzA3MSIsInJlczFfMDczIiwic2V4cF9vZl9yZWwiLCJyZWxfb2ZfeW9qc29uIiwieW9qc29uX29mX3JlbCIsInBwX3NlbGVjdCIsInNob3dfc2VsZWN0Iiwic2VsZWN0X29mX3NleHAiLCJzZXhwXzA4MiIsInRhZ18wODMiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMF8wOTUiLCJzZXhwX29mX3NlbGVjdCIsImFyZzBfMDk3IiwicmVzMF8wOTgiLCJzZWxlY3Rfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdCIsInNleHBfMTA3IiwidGFnXzEwOCIsInNleHBfYXJnc18xMjQiLCJhcmcwXzEyNSIsInJlczBfMTI2Iiwic2V4cF9hcmdzXzE1NCIsImFyZzBfMTU1IiwicmVzMF8xNTYiLCJzZXhwX2FyZ3NfMTI5Iiwic2V4cF9hcmdzXzEzNCIsImFyZzBfMTM1IiwicmVzMF8xMzYiLCJzZXhwX2FyZ3NfMTM5IiwiYXJnMF8xNDAiLCJyZXMwXzEyMSIsInNleHBfYXJnc18xMDkiLCJzZXhwX2FyZ3NfMTQ0IiwiYXJnMF8xNDUiLCJyZXMwXzE0NiIsInNleHBfYXJnc18xMTQiLCJzZXhwX2FyZ3NfMTQ5IiwiYXJnMF8xNTAiLCJyZXMwXzE1MSIsImFyZzBfMTU3IiwicmVzMF8xNTgiLCJhcmcwXzE1OSIsInJlczBfMTYwIiwiYXJnMF8xNjEiLCJyZXMwXzE2MiIsInJlczBfMTY0IiwiYXJnMF8xNjciLCJhcmcwXzE2OSIsInJlczBfMTcwIiwiYXJnMF8xNzEiLCJyZXMwXzE3MiIsImFyZzBfMTczIiwiYXJnMF8xNzUiLCJyZXMwXzE3NiIsImlzX2VkaXQiLCJpc19leHBhbmRlcl90b2siLCJ0cmltX2xhc3QiLCJpc19leHBhbmRlciIsIm1hcmsiLCJjb21wbGV0aW9uIiwiZXJyb3Jfc291cmNlXzAzMiIsImVycm9yX3NvdXJjZV8wNDMiLCJlcnJvcl9zb3VyY2VfMDYxIiwiZXJyb3Jfc291cmNlXzEwOSIsInBwX3N0cmF0ZWd5X2FsbCIsInNob3dfc3RyYXRlZ3lfYWxsIiwic3RyYXRlZ3lfYWxsX29mX3NleHAiLCJzZXhwX29mX3N0cmF0ZWd5X2FsbCIsInN0cmF0ZWd5X2FsbF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfYWxsIiwicHBfc3RyYXRlZ3lfY29tbW9uIiwic2hvd19zdHJhdGVneV9jb21tb24iLCJzdHJhdGVneV9jb21tb25fb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3lfY29tbW9uIiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInN0cmF0ZWd5X2NvbW1vbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfY29tbW9uIiwicHBfc3RyYXRlZ3lfZXhwIiwic2hvd19zdHJhdGVneV9leHAiLCJzdHJhdGVneV9leHBfb2Zfc2V4cCIsInNleHBfMDM0IiwidGFnXzAzNSIsInNleHBfYXJnc18wMzYiLCJzZXhwX29mX3N0cmF0ZWd5X2V4cCIsInN0cmF0ZWd5X2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfZXhwIiwicHBfc3RyYXRlZ3lfcGF0Iiwic2hvd19zdHJhdGVneV9wYXQiLCJzdHJhdGVneV9wYXRfb2Zfc2V4cCIsInNleHBfMDQ1IiwidGFnXzA0NiIsInNleHBfb2Zfc3RyYXRlZ3lfcGF0IiwiYXJnMF8wNTUiLCJhcmcwXzA1NyIsInN0cmF0ZWd5X3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfcGF0IiwicHBfc3RyYXRlZ3lfdHlwIiwic2hvd19zdHJhdGVneV90eXAiLCJzdHJhdGVneV90eXBfb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3lfdHlwIiwic3RyYXRlZ3lfdHlwX29mX3lvanNvbiIsInlvanNvbl9vZl9zdHJhdGVneV90eXAiLCJwcF9zdHJhdGVneSIsInNob3dfc3RyYXRlZ3kiLCJzdHJhdGVneV9vZl9zZXhwIiwic2V4cF9vZl9zdHJhdGVneSIsImFyZzBfMDkzIiwicmVzMF8wOTQiLCJzdHJhdGVneV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3kiLCJzZXhwXzA5NiIsImZpZWxkX3NleHBzXzA5NyIsImNvbnRlbnRfMDk4Iiwic3RyYXRlZ3lfMTAwIiwiZHVwbGljYXRlc18xMDIiLCJleHRyYV8xMDMiLCJpdGVyXzExMCIsInNleHBfMDk2JDAiLCJmaWVsZF9zZXhwc18xMDYiLCJmaWVsZF9uYW1lXzEwNCIsInRhaWxfMTExIiwiZmllbGRfc2V4cF8xMDUkMiIsImZpZWxkX3NleHBfMTA1IiwieF8xMTIiLCJmaWVsZF9zZXhwXzEwNSQwIiwiZnZhbHVlXzEwNyIsImZpZWxkX3NleHBfMTA1JDEiLCJmdmFsdWVfMTA4Iiwic3RyYXRlZ3lfMTAxIiwiY29udGVudF8wOTkiLCJzdHJhdGVneV8xMTYiLCJjb250ZW50XzExNCIsImFyZ18xMTciLCJibmRzXzExMyIsImFyZ18xMTUiLCJibmRzXzExMyQwIiwic3RyYXRlZ3lfZmllbGQiLCJzdHJhdGVneV92YWx1ZSIsInZfc3RyYXRlZ3kiLCJleHBhbmRlciIsImpvaW50X3VzZV90eXAiLCJib3VuZF92YXJpYWJsZXMiLCJ0eV9leHBlY3QiLCJib3VuZF9jb25zdHJ1Y3RvcnMiLCJib3VuZF9hcHMiLCJ0eV9hcnIiLCJib3VuZF9jb25zdHJ1Y3Rvcl9hcHMiLCJ0eXBfY29udGV4dF9lbnRyaWVzIiwic3VnZ2VzdF92YXJpYWJsZSIsInN1Z2dlc3RfbG9va2FoZWFkX3ZhcmlhYmxlIiwicmVzdHJhdGVnaXplIiwic3VmZml4Iiwic3RyYXRlZ3kiLCJleHBfcmVmcyIsImV4cF9hcHMiLCJjb21tYXMiLCJwYXRfcmVmcyIsInBhdF9hcHMiLCJjb21tYXMkMCIsImxlYWRpbmdfZXhwYW5kZXIiLCJ1bmsiLCJvZl9jb25zdF9tb25vX2RlbGltIiwib2ZfbGVhZGluZ19kZWxpbSIsIm9mX2luZml4X2RlbGltIiwiZmlsdGVyX2J5Iiwic2VsZl90eXMiLCJkZWxpbSIsInNlbGZfdHkiLCJkZWxheWVkX2xlYWRpbmciLCJkZWxhdGVkX2xlYWRpbmdfZXhwIiwiZGVsYXRlZF9sZWFkaW5nX3BhdCIsImRlbGF0ZWRfbGVhZGluZ190eXAiLCJkZWxheWVkX2xlYWRpbmckMCIsImluZml4IiwiaW5maXhfZXhwIiwiaW5maXhfcGF0IiwiaW5maXhfdHlwIiwiaW5maXgkMCIsImNvbnN0X21vbm8iLCJjb25zdF9tb25vX2V4cCIsImNvbnN0X21vbm9fcGF0IiwiY29uc3RfbW9ub190eXAiLCJjb25zdF9tb25vJDAiLCJzdWdnZXN0X2Zvcm0iLCJ0eV9tYXAiLCJkZWxpbXNfb2Zfc29ydCIsImZpbHRlcmVkIiwic3VnZ2VzdF9vcGVyYXRvciIsInN1Z2dlc3Rfb3BlcmFuZCIsInN1Z2dlc3RfbGVhZGluZyIsImVycm9yX3NvdXJjZV8wMTMiLCJob2xlX3NvcnRfb2Zfc2V4cCIsInNleHBfb2ZfaG9sZV9zb3J0IiwiYXJnMl8wMDgiLCJhcmcxXzAwNyIsImFyZzBfMDA2IiwicmVzMV8wMTAiLCJyZXMyXzAxMSIsImFkZF9hbGwiLCJ0b2tlbnMiLCJwcF90aWxlcyIsInNob3dfdGlsZXMiLCJ0aWxlc19vZl9zZXhwIiwic2V4cF9vZl90aWxlcyIsInRpbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl90aWxlcyIsInNpbmdsZSIsInBwX3Vuc29ydGVkIiwic2hvd191bnNvcnRlZCIsInVuc29ydGVkX29mX3NleHAiLCJzZXhwXzAxOSIsInRhZ18wMjAiLCJhcmcxXzAzNSIsInJlczFfMDM3IiwiYXJnMl8wNDMiLCJyZXMxXzA0NSIsInJlczJfMDQ2Iiwic2V4cF9vZl91bnNvcnRlZCIsImFyZzBfMDQ3IiwiYXJnMV8wNTQiLCJyZXMxXzA1NiIsImFyZzJfMDU5IiwiYXJnMV8wNTgiLCJyZXMxXzA2MSIsInJlczJfMDYyIiwidW5zb3J0ZWRfb2ZfeW9qc29uIiwieW9qc29uX29mX3Vuc29ydGVkIiwiaXNfbmFyeSIsImlzX3NvcnQiLCJpc190dXBsZV9leHAiLCJpc190dXBsZV9wYXQiLCJpc190dXBsZV90eXAiLCJpc190eXBfYnN1bSIsImlzX3J1bGVzIiwiY2xhdXNlcyIsImNsYXVzZSIsImlkc19vZl90aWxlcyIsImtpZHNfb2ZfdGlsZSIsImtpZHNfb2ZfdGlsZXMiLCJraWRzX29mX3Vuc29ydGVkIiwidGlsZXMkMCIsInRpbGVzJDEiLCJ0aWxlcyQyIiwicmV0dXJuJDAiLCJwYXJzZV9zdW1fdGVybSIsImlkc19jdHIiLCJnb19zIiwiZXhwX3Rlcm0iLCJwYXRfdGVybSIsInR5cF90ZXJtIiwidHBhdF90ZXJtIiwicnVsIiwidW5zb3J0ZWQiLCJpbm5lcl9pZHMiLCJyZXQiLCJ0cGF0JDAiLCJjb25zZXEiLCJmaWx0ZXIkMSIsImZpbHRlciQyIiwidCQyIiwidXNlX2RlZmVycmFsIiwiYmV0d2Vlbl9raWRzIiwidCQzIiwicmV0JDAiLCJyZXQkMSIsImhvbGUkMSIsImJldHdlZW5fa2lkcyQwIiwicmV0JDIiLCJob2xlJDIiLCJsYXN0X2NsYXVzZSIsImxlYWRpbmdfY2xhdXNlcyIsInRpbGVfa2lkcyIsInBfciIsInBfbCIsImZyb21femlwIiwiZnJvbV96aXBfZm9yX3ZpZXciLCJmcm9tX3ppcF9mb3Jfc2VtIiwiZXJyb3Jfc291cmNlXzAzMCIsInVuc2VsZWN0ZWQiLCJ0ZXJtcyIsInZpZXdfdGVybSIsIm1vZHVsZV9vZl90IiwiY29sX3RhcmdldCIsIm5leHQiLCJlZmZlY3RzIiwibWVhc3VyZWQkMCIsImNvbF90YXJnZXQkMCIsInRlcm1zJDAiLCJ2aWV3X3Rlcm0kMCIsInppcHBlcl8wMDQiLCJtZXRhXzAwNiIsIm1ldGFfMDA3IiwiemlwcGVyXzAwNSIsIm1ldGFfMDIyIiwiemlwcGVyXzAyMCIsInppcHBlcl9maWVsZCIsIm1ldGFfZmllbGQiLCJtZXRhX3ZhbHVlIiwiemlwcGVyX3ZhbHVlIiwidl9tZXRhIiwidl96aXBwZXIiLCJpbml0JDAiLCJuZXh0JDAiLCJwcF9hZmZpeCIsInNob3dfYWZmaXgiLCJhZmZpeF9vZl9zZXhwIiwieF8wMzEiLCJzZXhwXzAyOSIsInJlczFfMDI4Iiwic2V4cF9vZl9hZmZpeCIsImFmZml4X29mX3lvanNvbiIsInlvanNvbl9vZl9hZmZpeCIsInNleHBfMDQyIiwiYXJnMV8wMzkiLCJyZXMxXzA0MSIsImFyZzFfMDQ1IiwicmVzMV8wNDciLCJzZXhwXzA0OSIsImZpZWxkX3NleHBzXzA1MCIsInN0YXRlXzA1MSIsImhpc3RvcnlfMDUzIiwicmVhZF9vbmx5XzA1NSIsImR1cGxpY2F0ZXNfMDU3IiwiZXh0cmFfMDU4IiwiaXRlcl8wNjYiLCJzZXhwXzA0OSQwIiwiZmllbGRfbmFtZV8wNTkiLCJ0YWlsXzA2NyIsImZpZWxkX3NleHBfMDYwJDMiLCJmaWVsZF9zZXhwXzA2MCIsInhfMDY4IiwiZmllbGRfc2V4cF8wNjAkMCIsImZ2YWx1ZV8wNjQiLCJmaWVsZF9zZXhwXzA2MCQxIiwiZnZhbHVlXzA2MiIsImZpZWxkX3NleHBfMDYwJDIiLCJmdmFsdWVfMDYzIiwicmVhZF9vbmx5XzA1NiIsImhpc3RvcnlfMDU0Iiwic3RhdGVfMDUyIiwicmVhZF9vbmx5XzA3NCIsImhpc3RvcnlfMDcyIiwic3RhdGVfMDcwIiwiYXJnXzA3NSIsImJuZHNfMDY5IiwiYXJnXzA3MyIsImJuZHNfMDY5JDAiLCJhcmdfMDcxIiwiYm5kc18wNjkkMSIsInN0YXRlX2ZpZWxkIiwiaGlzdG9yeV9maWVsZCIsInJlYWRfb25seV9maWVsZCIsInJlYWRfb25seV92YWx1ZSIsImhpc3RvcnlfdmFsdWUiLCJzdGF0ZV92YWx1ZSIsInZfcmVhZF9vbmx5Iiwidl9oaXN0b3J5Iiwidl9zdGF0ZSIsInJlYWRfb25seSIsInVwZGF0ZV96IiwiZWQiLCJwdXRfeiIsInVwZGF0ZV96X29wdCIsIm5ld19zdGF0ZSIsImhpc3RvcnkiLCJ1bmRvIiwiYWZ0ZXIiLCJiZWZvcmUiLCJyZWRvIiwiY2FuX3VuZG8iLCJjYW5fcmVkbyIsInNldF9yZWFkX29ubHkiLCJ0cmFpbGluZ19ob2xlX2N0eCIsImluZm8kMCIsImVycm9yX3NvdXJjZV8wMTIiLCJlcnJvcl9zb3VyY2VfMDIxIiwiZF8wMDQiLCJkdXBsaWNhdGVzXzAwNiIsImV4dHJhXzAwNyIsIml0ZXJfMDEzIiwiZmllbGRfc2V4cHNfMDEwIiwiZmllbGRfbmFtZV8wMDgiLCJ0YWlsXzAxNCIsImZpZWxkX3NleHBfMDA5JDEiLCJmaWVsZF9zZXhwXzAwOSIsImZpZWxkX3NleHBfMDA5JDAiLCJmdmFsdWVfMDExIiwiZF8wMDUiLCJkXzAxNyIsImFyZ18wMTgiLCJibmRzXzAxNiIsImRfZmllbGQiLCJkX3ZhbHVlIiwidl9kIiwidGFnXzAyNCIsInNleHBfYXJnc18wMjUiLCJhcmcyXzAyOCIsImFyZzFfMDI3IiwicmVzMl8wMzEiLCJhcmcyXzAzNCIsInJlczFfMDM2IiwicmVzMl8wMzciLCJmcmVzaF9jYXN0IiwiZnJlc2hfcGF0X2Nhc3QiLCJlbGFib3JhdGVkX3R5cGUiLCJlbGFiX3R5IiwiZWxhYm9yYXRlZF9wYXRfdHlwZSIsImVsYWJvcmF0ZV9wYXR0ZXJuIiwiY2FzdF9mcm9tIiwiZHBhdCIsImlubmVyX3R5cGUiLCJ0eTJfaW5uZXIiLCJ0eV9pbm5lciIsInBzJDEiLCJwcyQyIiwicDIkMiIsInAxJDIiLCJwMSQzIiwicDIkMyIsInR5MXIiLCJ0eTFsIiwicDEkNCIsInAyJDQiLCJlbGFib3JhdGUiLCJlbGFib3JhdGVkX3R5cGUkMCIsInN0dWZmIiwiZGhleHAiLCJ0eWUiLCJ0eWUkMCIsImFkZF9uYW1lIiwiZml4ZiIsImRlZiQzIiwidHllJDEiLCJ0eWUkMiIsInR5ZiIsInR5YSIsInR5ZjIiLCJ0eWYxIiwidXQiLCJ0eWUkMyIsInR5ZSQ0IiwidXQkMCIsInR5ZSQ1IiwiZiQyIiwidHlmJDAiLCJmJDMiLCJ0eXMkMSIsInR5ZjIkMCIsInR5ZjEkMCIsInR5X2ZhcmdzIiwiZiQ0IiwiYXJncyQxIiwicmVtYWluaW5nX2FyZ3MiLCJyZW1haW5pbmdfYXJnX3R5IiwiZiQ1IiwidHljIiwiYyQxIiwidHl0IiwidHlmJDEiLCJmJDYiLCJjJDIiLCJmJDciLCJraW5kIiwiZSQxNiIsImtpbmQkMCIsImUkMTciLCJ0JDQiLCJlJDE4IiwidHlfaW5uZXIxIiwidHlfaW5uZXIyIiwidHlfaW5uZXIkMCIsImUkMTkiLCJlJDIwIiwidCQ1IiwiZSQyMSIsImUkMjIiLCJ0JDYiLCJlJDIzIiwiY2FzZXMiLCJlJDI0IiwidCQ3IiwiZSQyNSIsInB0eXMiLCJqb2luZWRfcHR5IiwiZSQyNiIsImV0eXMiLCJqb2luZWRfZXR5IiwiY29udCIsImZpeF90eXBfaWRzIiwidWV4cF9lbGFiIiwiaW5pdGlhbCIsInN0ZXBfMDA0Iiwic3RlcF8wMDUiLCJzdGVwXzAxNyIsInN0ZXBfZmllbGQiLCJzdGVwX3ZhbHVlIiwidl9zdGVwIiwidGFrZV9zdGVwIiwic3RlcCIsImdldF9zdGVwIiwicHV0X3N0ZXAiLCJzdGF0c18wMDQiLCJ0ZXN0c18wMDYiLCJ0ZXN0c18wMDciLCJzdGF0c18wMDUiLCJ0ZXN0c18wMjIiLCJzdGF0c18wMjAiLCJzdGF0c19maWVsZCIsInRlc3RzX2ZpZWxkIiwidGVzdHNfdmFsdWUiLCJzdGF0c192YWx1ZSIsInZfdGVzdHMiLCJ2X3N0YXRzIiwic3RhdHMiLCJhZGRfdGVzdCIsInRlc3RzIiwidGVzdHMkMCIsImdldF90ZXN0cyIsInB1dF90ZXN0cyIsInN5bWJvbCIsInN0YXRlX3VwZGF0ZSQwIiwic3RhdGVfdXBkYXRlJDEiLCJldmFsdWF0ZSIsInJlc3VsdCQwIiwicHJldHR5MiIsInByZXR0eTEiLCJwaWVjZTEiLCJwaWVjZTIiLCJwX29yIiwicF9vcmlmIiwicF9qdXN0IiwicF9jb25jYXQiLCJwcmV0dGllcyIsInByZXR0eSIsImxldCQxIiwiYW5kJDAiLCJzaG91bGRfYWRkX3NwYWNlIiwidGV4dF90b19wcmV0dHkiLCJta19mb3JtIiwiZm9ybV9uYW1lIiwiZm9ybSIsImxzcGFjZSIsInJzcGFjZSIsImNoaWxkcmVuJDAiLCJwYWRfaWRzIiwic2VnMSIsInNlZzIiLCJleHBfdG9fcHJldHR5IiwiaW5saW5lIiwiaW5saW5lJDAiLCJhbnlfdG9fcHJldHR5IiwicGF0X3RvX3ByZXR0eSIsImlkJDIiLCJ0cGF0X3RvX3ByZXR0eSIsImlkJDMiLCJpZCQ0IiwiaWQkNSIsInR5cF90b19wcmV0dHkiLCJpZCQ2IiwiaWQkNyIsImlkJDgiLCJpZCQ5IiwiaWQkMTAiLCJpZCQxMSIsImlkJDEyIiwiaWQkMTMiLCJpZCQxNCIsImlkJDE1IiwiaWQkMTYiLCJpZCQxNyIsImlkJDE4IiwiZ29fY29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImV4dGVybmFsX3ByZWNlZGVuY2UiLCJleHAkMCIsImV4cCQxIiwiZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQiLCJleHRlcmFsX3ByZWNlZGVuY2VfdHlwIiwicGFyZW5fYXQiLCJpbnRlcm5hbF9wcmVjZWRlbmNlIiwicGFyZW5fYXNzb2NfYXQiLCJwYXJlbl9wYXRfYXQiLCJwYXJlbl9wYXRfYXNzb2NfYXQiLCJwYXJlbl90eXBfYXQiLCJwYXJlbl90eXBfYXNzb2NfYXQiLCJwYXJlbnRoZXNpemUiLCJwYXJlbnRoZXNpemVfcGF0IiwidHAkMSIsInBhcmVudGhlc2l6ZV90eXAiLCJleHBfdG9fZWRpdG9yIiwicGllY2UiLCJub193cyIsImlnbiIsInBhcmVudCQwIiwicGFyZW50JDEiLCJwaWVjZSQwIiwic2hhcmRfaW5kZXgiLCJyZWxhdGlvbiIsImJlZm9yZSQwIiwiY2lfb2YiLCJwcm94eV9pZCIsInNsIiwic3IiLCJwcF9pbm5lciIsInNob3dfaW5uZXIiLCJpbm5lcl9vZl9zZXhwIiwicmVzdWx0XzAwNCIsImVkaXRvcl8wMDYiLCJzdGF0ZV8wMDgiLCJzdGF0ZV8wMDkiLCJlZGl0b3JfMDA3IiwicmVzdWx0XzAwNSIsInNleHBfb2ZfaW5uZXIiLCJzdGF0ZV8wMjciLCJlZGl0b3JfMDI1IiwicmVzdWx0XzAyMyIsImlubmVyX29mX3lvanNvbiIsInJlc3VsdF9maWVsZCIsImVkaXRvcl9maWVsZCIsImVkaXRvcl92YWx1ZSIsInJlc3VsdF92YWx1ZSIsInlvanNvbl9vZl9pbm5lciIsInZfZWRpdG9yIiwidl9yZXN1bHQiLCJzZXhwXzA1MSIsInRhZ18wNTIiLCJzZXhwX2FyZ3NfMDYzIiwiYXJnMF8wNjQiLCJhcmcwXzA2OCIsInJlczBfMDY5IiwiZ2V0X2RoZXhwIiwiZ2V0X3N0YXRlIiwibWtfbWFwIiwibWtfbWFwJDAiLCJjb3JlIiwibWtfbWFwX2FuZF9pbmZvX2N0eCIsIm1rX21hcF9jdHgiLCJkaF9lcnIiLCJlcnJvciIsImV4biQwIiwiZXhuIiwicmVhc29uIiwiZXZhbF96Iiwic3VnZ2VzdF9iYWNrcGFjayIsInRva2VuX3RvX2xlZnQiLCJ0b2tfdG9fbGVmdCIsIm1rX3VucGFyc2VkX2J1ZmZlciIsInN1ZmZpeF9vZiIsImNhbmRpZGF0ZSIsImNhbmRpZGF0ZV9zdWZmaXgiLCJ6X3RvX2NpIiwiZ2V0X2J1ZmZlciIsInN1Z2dlc3QiLCJzdWdnZXN0aW9ucyIsInN1Z2dlc3Rpb25zJDAiLCJ0b3Bfc3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb25fc3VmZml4IiwidGVzdF9tYXBfMDA0Iiwic3RhdHVzZXNfMDA2IiwiZGVzY3JpcHRpb25zXzAwOCIsInRvdGFsXzAxMCIsInBhc3NpbmdfMDEyIiwiZmFpbGluZ18wMTQiLCJ1bmZpbmlzaGVkXzAxNiIsImR1cGxpY2F0ZXNfMDE4IiwiZXh0cmFfMDE5IiwiaXRlcl8wMzEiLCJmaWVsZF9uYW1lXzAyMCIsInRhaWxfMDMyIiwiZmllbGRfc2V4cF8wMjEkNyIsImZpZWxkX3NleHBfMDIxIiwiZmllbGRfc2V4cF8wMjEkMCIsImZ2YWx1ZV8wMjMiLCJmaWVsZF9zZXhwXzAyMSQxIiwiZmllbGRfc2V4cF8wMjEkMiIsImZpZWxkX3NleHBfMDIxJDMiLCJmaWVsZF9zZXhwXzAyMSQ0IiwiZmllbGRfc2V4cF8wMjEkNSIsImZpZWxkX3NleHBfMDIxJDYiLCJ1bmZpbmlzaGVkXzAxNyIsImZhaWxpbmdfMDE1IiwicGFzc2luZ18wMTMiLCJ0b3RhbF8wMTEiLCJkZXNjcmlwdGlvbnNfMDA5Iiwic3RhdHVzZXNfMDA3IiwidGVzdF9tYXBfMDA1IiwidW5maW5pc2hlZF8wNDciLCJmYWlsaW5nXzA0NSIsInBhc3NpbmdfMDQzIiwidG90YWxfMDQxIiwiZGVzY3JpcHRpb25zXzAzOSIsInN0YXR1c2VzXzAzNyIsInRlc3RfbWFwXzAzNSIsImJuZHNfMDM0IiwiYm5kc18wMzQkMCIsImJuZHNfMDM0JDEiLCJibmRzXzAzNCQyIiwiYXJnXzA0MCIsImJuZHNfMDM0JDMiLCJhcmdfMDM4IiwiYm5kc18wMzQkNCIsImFyZ18wMzYiLCJibmRzXzAzNCQ1IiwidGVzdF9tYXBfZmllbGQiLCJzdGF0dXNlc19maWVsZCIsImRlc2NyaXB0aW9uc19maWVsZCIsInRvdGFsX2ZpZWxkIiwicGFzc2luZ19maWVsZCIsImZhaWxpbmdfZmllbGQiLCJ1bmZpbmlzaGVkX2ZpZWxkIiwidW5maW5pc2hlZF92YWx1ZSIsImZhaWxpbmdfdmFsdWUiLCJwYXNzaW5nX3ZhbHVlIiwidG90YWxfdmFsdWUiLCJkZXNjcmlwdGlvbnNfdmFsdWUiLCJzdGF0dXNlc192YWx1ZSIsInRlc3RfbWFwX3ZhbHVlIiwidl91bmZpbmlzaGVkIiwidl9mYWlsaW5nIiwidl9wYXNzaW5nIiwidl90b3RhbCIsInZfZGVzY3JpcHRpb25zIiwidl9zdGF0dXNlcyIsInZfdGVzdF9tYXAiLCJta19yZXN1bHRzIiwiZGVzY3JpcHRpb25zIiwicmVzdWx0X3N1bW1hcnlfc3RyIiwibl9zdHIiLCJuc19zdHIiLCJwX3N0ciIsInFfc3RyIiwicl9zdHIiLCJvbmVfcCIsIm9uZV9xIiwibW55X3AiLCJtbnlfcSIsIm9mX24iLCJ0ZXN0X3N1bW1hcnlfc3RyIiwidGVzdF9yZXN1bHRzIiwic3Vic3RfdmFyIiwic3Vic3RfdmFyX2VudiIsImQ0IiwiZDMkMiIsImQzJDMiLCJkNCQwIiwiZDMkNCIsImVudiQyIiwiZDMkNSIsImQ0JDEiLCJkNCQyIiwiZDQkMyIsImQzJDYiLCJkMyQ3IiwiZDQkNCIsImQzJDgiLCJkMyQ5IiwiZDMkMTAiLCJkMyQxMSIsImQ0cyQwIiwiZDYiLCJkNSIsImQ0JDUiLCJkNCQ2IiwiZDUkMCIsImQ2JDAiLCJkNCQ3IiwiZDMkMTIiLCJkMyQxMyIsImQ0JDgiLCJkMyQxNCIsImRib2R5IiwiZGJvZHkkMCIsInN1YnN0X3Zhcl9maWx0ZXIiLCJkMyQxNSIsImVudiQzIiwiZW52JDQiLCJkMyQxNiIsImQ0JDkiLCJkNCQxMCIsImQ0JDExIiwiZDMkMTciLCJkMyQxOCIsImQ0JDEyIiwiZDQkMTMiLCJkMyQxOSIsImQzJDIwIiwiZDQkMTQiLCJkMyQyMSIsImQzJDIyIiwiZDQkMTUiLCJkMyQyMyIsImQzJDI0IiwiZDQkMTYiLCJkcyQyIiwicnVsZXMkMCIsInhkIiwicHBfc3RhdGljcyIsInNob3dfc3RhdGljcyIsInN0YXRpY3Nfb2Zfc2V4cCIsInRlcm1fMDA0IiwiaW5mb19tYXBfMDA2IiwiZXJyb3JfaWRzXzAwOCIsImVycm9yX2lkc18wMDkiLCJpbmZvX21hcF8wMDciLCJ0ZXJtXzAwNSIsInNleHBfb2Zfc3RhdGljcyIsImVycm9yX2lkc18wMjciLCJpbmZvX21hcF8wMjUiLCJ0ZXJtXzAyMyIsInN0YXRpY3Nfb2ZfeW9qc29uIiwiaW5mb19tYXBfZmllbGQiLCJlcnJvcl9pZHNfZmllbGQiLCJlcnJvcl9pZHNfdmFsdWUiLCJpbmZvX21hcF92YWx1ZSIsInlvanNvbl9vZl9zdGF0aWNzIiwidl9lcnJvcl9pZHMiLCJ2X2luZm9fbWFwIiwic3RhdGljc19vZl90ZXJtIiwiZWRpdG9yIiwiZW1wdHlfc3RhdGljcyIsInJlc3VsdHMiLCJzdGF0aWNzIiwiZXJyb3Jfc291cmNlXzA2NCIsInN0YXRlXzAwNiIsImRfbG9jXzAwOCIsImRfbG9jXzAxMCIsImN0eF8wMTIiLCJrbmRfMDE0IiwiZHVwbGljYXRlc18wMTYiLCJleHRyYV8wMTciLCJpdGVyXzAyOCIsImZpZWxkX3NleHBzXzAyMCIsImZpZWxkX25hbWVfMDE4IiwidGFpbF8wMjkiLCJmaWVsZF9zZXhwXzAxOSQ2IiwiZmllbGRfc2V4cF8wMTkiLCJ4XzAzMCIsImZpZWxkX3NleHBfMDE5JDAiLCJmaWVsZF9zZXhwXzAxOSQxIiwiZmllbGRfc2V4cF8wMTkkMiIsImZpZWxkX3NleHBfMDE5JDMiLCJmaWVsZF9zZXhwXzAxOSQ0IiwiZmllbGRfc2V4cF8wMTkkNSIsImZ2YWx1ZV8wMjIiLCJrbmRfMDE1IiwiY3R4XzAxMyIsImRfbG9jXzAxMSIsImRfbG9jXzAwOSIsInN0YXRlXzAwNyIsImtuZF8wNDIiLCJjdHhfMDQwIiwiZF9sb2NfMDM4IiwiZF9sb2NfMDM2Iiwic3RhdGVfMDM0IiwiZF8wMzIiLCJibmRzXzAzMSIsImJuZHNfMDMxJDAiLCJibmRzXzAzMSQxIiwiYm5kc18wMzEkMiIsImJuZHNfMDMxJDMiLCJhcmdfMDMzIiwiYm5kc18wMzEkNCIsImRfbG9jX2ZpZWxkIiwiZF9sb2NfZmllbGQkMCIsImtuZF9maWVsZCIsImtuZF92YWx1ZSIsImRfbG9jX3ZhbHVlIiwiZF9sb2NfdmFsdWUkMCIsInZfa25kIiwidl9kX2xvYyIsInZfZF9sb2MkMCIsImZpZWxkX3NleHBzXzA0NiIsImVudl8wNDciLCJkX2xvY18wNDkiLCJjdHhfMDUxIiwia25kXzA1MyIsImR1cGxpY2F0ZXNfMDU1IiwiZXh0cmFfMDU2IiwiaXRlcl8wNjUiLCJzZXhwXzA0NSQwIiwiZmllbGRfc2V4cHNfMDU5IiwiZmllbGRfbmFtZV8wNTciLCJ0YWlsXzA2NiIsImZpZWxkX3NleHBfMDU4JDQiLCJmaWVsZF9zZXhwXzA1OCIsInhfMDY3IiwiZmllbGRfc2V4cF8wNTgkMCIsImZ2YWx1ZV8wNjAiLCJmaWVsZF9zZXhwXzA1OCQxIiwiZmllbGRfc2V4cF8wNTgkMiIsImZpZWxkX3NleHBfMDU4JDMiLCJmdmFsdWVfMDYxIiwia25kXzA1NCIsImN0eF8wNTIiLCJkX2xvY18wNTAiLCJlbnZfMDQ4Iiwia25kXzA3NSIsImN0eF8wNzMiLCJkX2xvY18wNzEiLCJlbnZfMDY5IiwiYXJnXzA3NiIsImJuZHNfMDY4IiwiYXJnXzA3NCIsImJuZHNfMDY4JDAiLCJhcmdfMDcyIiwiYm5kc18wNjgkMSIsImFyZ18wNzAiLCJibmRzXzA2OCQyIiwiZW52X2ZpZWxkIiwiZW52X3ZhbHVlIiwidl9lbnYiLCJkX2xvYyIsImtuZCIsImdldF9jdHgiLCJvYmoiLCJnZXRfa2luZCIsIm9ianMiLCJ3ciIsInNzMSIsInNzMiIsInZzIiwicmVxX2FsbF92YWx1ZSQwIiwicmVxX2FsbF9maW5hbCQwIiwicnEiLCJybCIsInZhbCIsIm8iLCJkZWNvbXBvc2UiLCJyZXFfdmFsdWUkMCIsInJlcV9hbGxfdmFsdWUkMSIsInJlcV9maW5hbCQwIiwicmVxX2FsbF9maW5hbCQxIiwicmVxX2ZpbmFsX29yX3ZhbHVlJDAiLCJvdGhlcndpc2UkMCIsInVwZGF0ZV90ZXN0JDAiLCJ0YWtlX3N0ZXAkMCIsImRlY29tcG9zZSQwIiwiZXZhbHVhdGVfd2l0aF9oaXN0b3J5IiwiZXh0ZW5kcyQwIiwibWF0Y2hlc19leHAiLCJmdiIsImR2IiwiZnYkMCIsImR2JDAiLCJmdiQxIiwiZHYkMSIsImZ2JDIiLCJkdiQyIiwiZnYkMyIsImR2JDMiLCJmbmFtZTEiLCJmcDEiLCJkbmFtZTEiLCJtYXRjaGVzX3BhdCIsInBhdDIiLCJwYXQxIiwibWF0Y2hlc191dHBhdCIsImZ2JDQiLCJkdiQ0IiwiZngkMCIsImR4JDAiLCJmcCIsImZwJDAiLCJmZCIsImZ1dCIsImZ0cCIsImRkIiwiZHV0IiwiZHRwIiwiZjEkMiIsIm1hdGNoZXNfdHlwIiwiZjEkMyIsImYzIiwiZjIkMiIsImYxJDQiLCJmMiQzIiwiZjEkNSIsImYyJDQiLCJmZCQwIiwiZmYiLCJkZCQwIiwiZGYiLCJmMiQ1IiwiZjEkNiIsImYyJDYiLCJmMSQ3IiwiZjEkOCIsImZfb3AiLCJkX29wIiwiZjIkNyIsImYxJDkiLCJmX29wJDAiLCJkX29wJDAiLCJkbiIsImZydWxlIiwiZnNjcnV0IiwiZHJ1bGUiLCJkc2NydXQiLCJmayIsImRrIiwicmVzJDAiLCJkdCIsImR4IiwiZngiLCJkbCIsImZsIiwiZGwkMCIsImZsJDAiLCJtYXRjaGVzX3J1bCIsImwxIiwiZmx0X2VudiIsImZsdF9lbnYkMCIsImlkeCQwIiwiZmx0X2VudiQxIiwiaWR4JDEiLCJwcF9zdGVwcGVyX3N0YXRlIiwic2hvd19zdGVwcGVyX3N0YXRlIiwic3RlcHBlcl9zdGF0ZV9vZl9zZXhwIiwic2V4cF9vZl9zdGVwcGVyX3N0YXRlIiwic3RlcHBlcl9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcHBlcl9zdGF0ZSIsInBwX2EiLCJzaG93X2EiLCJhX29mX3NleHAiLCJhcmcyXzAyMiIsInJlczJfMDI1Iiwic2V4cF9vZl9hIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsInJlczJfMDMzIiwiYV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYSIsInBwX2hpc3RvcnkiLCJzaG93X2hpc3RvcnkiLCJoaXN0b3J5X29mX3NleHAiLCJzZXhwX29mX2hpc3RvcnkiLCJoaXN0b3J5X29mX3lvanNvbiIsInlvanNvbl9vZl9oaXN0b3J5Iiwic2V4cF8wMzgiLCJoaXN0b3J5XzA0MCIsIm5leHRfb3B0aW9uc18wNDIiLCJzdGVwcGVyX3N0YXRlXzA0NCIsImR1cGxpY2F0ZXNfMDQ2IiwiZXh0cmFfMDQ3IiwiaXRlcl8wNTUiLCJzZXhwXzAzOCQwIiwiZmllbGRfbmFtZV8wNDgiLCJ0YWlsXzA1NiIsImZpZWxkX3NleHBfMDQ5JDMiLCJmaWVsZF9zZXhwXzA0OSIsInhfMDU3IiwiZmllbGRfc2V4cF8wNDkkMCIsImZ2YWx1ZV8wNTEiLCJmaWVsZF9zZXhwXzA0OSQxIiwiZnZhbHVlXzA1MiIsImZpZWxkX3NleHBfMDQ5JDIiLCJmdmFsdWVfMDUzIiwic3RlcHBlcl9zdGF0ZV8wNDUiLCJuZXh0X29wdGlvbnNfMDQzIiwiaGlzdG9yeV8wNDEiLCJzdGVwcGVyX3N0YXRlXzA2MyIsIm5leHRfb3B0aW9uc18wNjEiLCJoaXN0b3J5XzA1OSIsImJuZHNfMDU4JDEiLCJuZXh0X29wdGlvbnNfZmllbGQiLCJzdGVwcGVyX3N0YXRlX2ZpZWxkIiwic3RlcHBlcl9zdGF0ZV92YWx1ZSIsIm5leHRfb3B0aW9uc192YWx1ZSIsInZfc3RlcHBlcl9zdGF0ZSIsInZfbmV4dF9vcHRpb25zIiwicGFjdCIsInBpZHgiLCJjb21wb3NlZCIsIm1pZHgiLCJtYWN0IiwicmN0eCIsInJpZHgiLCJyYWN0IiwiZmx0JDAiLCJmbHQkMSIsInJjdHgkMCIsInJpZHgkMCIsInJhY3QkMCIsImRyIiwiY3R4JDMyIiwic2hvdWxkX2hpZGVfZXZhbF9vYmoiLCJnZXRfZWxhYiIsImdldF9uZXh0X3N0ZXBzIiwiY3VycmVudF9leHByIiwiY3VycmVudF9zdGF0ZSIsInN0ZXBfcGVuZGluZyIsInN0ZXBwZXIiLCJldmFsdWF0ZV9wZW5kaW5nIiwiZW8iLCJzdGF0ZV9yZWYiLCJuZXdfc3RlcCIsImV2YWx1YXRlX2Z1bGwiLCJ0aW1lb3V0IiwidHJ1bmNhdGVfaGlzdG9yeSIsImFzIiwiYnMiLCJicyQwIiwic3RlcF9iYWNrd2FyZCIsImgiLCJzdCIsImdldF9qdXN0aWZpY2F0aW9uIiwiZ2V0X2hpc3RvcnkiLCJzaG91bGRfc2tpcF9zdGVwIiwiZ3JvdXBlZF9zdGVwcyIsInJlcGxhY2VfaWQiLCJ0cmFja19pZHMiLCJwcmV2aW91c19zdGVwIiwiaGlkZGVuX2hpc3RvcnkiLCJjaG9zZW5fc3RlcCIsImhzIiwiaGgiLCJyZXBsYWNlbWVudCIsImhpZGRlbl9oaXN0b3J5JDAiLCJwcmV2aW91c19zdGVwJDAiLCJwYWRkZWQiLCJoaWRkZW5fc3RlcHNfb2ZfaW5mbyIsInBwX3BlcnNpc3RlbnRfaGlzdG9yeSIsInNob3dfcGVyc2lzdGVudF9oaXN0b3J5IiwicGVyc2lzdGVudF9oaXN0b3J5X29mX3NleHAiLCJ4XzA3MiIsInNleHBfMDcwIiwiYXJnMV8wNjciLCJzZXhwX29mX3BlcnNpc3RlbnRfaGlzdG9yeSIsInhfMDc3IiwiYXJnMV8wNzQiLCJhcmcwXzA3MyIsInJlczFfMDc2IiwicGVyc2lzdGVudF9oaXN0b3J5X29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50X2hpc3RvcnkiLCJwcF9wZXJzaXN0ZW50Iiwic2hvd19wZXJzaXN0ZW50IiwicGVyc2lzdGVudF9vZl9zZXhwIiwic2V4cF8wNzkiLCJmaWVsZF9zZXhwc18wODAiLCJwZXJzaXN0ZW50X2hpc3RvcnlfMDgxIiwiZHVwbGljYXRlc18wODMiLCJleHRyYV8wODQiLCJpdGVyXzA5MCIsInNleHBfMDc5JDAiLCJmaWVsZF9zZXhwc18wODciLCJmaWVsZF9uYW1lXzA4NSIsInRhaWxfMDkxIiwiZmllbGRfc2V4cF8wODYkMSIsImZpZWxkX3NleHBfMDg2IiwieF8wOTIiLCJmaWVsZF9zZXhwXzA4NiQwIiwiZnZhbHVlXzA4OCIsInBlcnNpc3RlbnRfaGlzdG9yeV8wODIiLCJzZXhwX29mX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X2hpc3RvcnlfMDk0IiwiYXJnXzA5NSIsImJuZHNfMDkzIiwicGVyc2lzdGVudF9vZl95b2pzb24iLCJwZXJzaXN0ZW50X2hpc3RvcnlfZmllbGQiLCJwZXJzaXN0ZW50X2hpc3RvcnlfdmFsdWUiLCJ5b2pzb25fb2ZfcGVyc2lzdGVudCIsInZfcGVyc2lzdGVudF9oaXN0b3J5IiwicGVyc2lzdGVudF9vZl9zZXhwJDAiLCJzZXhwX29mX3BlcnNpc3RlbnQkMCIsInBlcnNpc3RlbnRfb2Zfc2V4cCQxIiwic2V4cF9vZl9wZXJzaXN0ZW50JDEiLCJ0b19wZXJzaXN0ZW50X2hpc3RvcnkiLCJ0b19wZXJzaXN0ZW50IiwiZnJvbV9wZXJzaXN0ZW50X2hpc3RvcnkiLCJmcm9tX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X2hpc3RvcnkiLCJnZXRfc2VsZWN0ZWRfZWRpdG9yIiwicHV0X3NlbGVjdGVkX2VkaXRvciIsInBwX21vdmFiaWxpdHkiLCJzaG93X21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3NleHAiLCJzZXhwX29mX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZhYmlsaXR5IiwibW92YWJpbGl0eSIsImNodW5raW5lc3MiLCJkZWxpbV9pZHgiLCJjaGFyX21heCIsIm5laWdoYm9yX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5JDAiLCJsX2tpZHMiLCJzdXBlcm5oYnJfciQwIiwic3VwZXJuaGJyX2wiLCJyX25oYnIiLCJsX25oYnIiLCJ3JDAiLCJjb250ZW50X3N0cmluZyQwIiwiY29udGVudF9zdHJpbmciLCJwb3Bfb3V0IiwicG9wX21vdmUiLCJpbm5lcl9pbmNyIiwiaW5uZXJfZGVjciIsImlubmVyX3N0YXJ0IiwiZF9pbml0IiwiaW5uZXJfZW5kIiwiY19tYXgiLCJwcmltYXJ5IiwiY19tYXgkMCIsImRsbSIsImlzX2F0X3NpZGVfb2Zfcm93IiwiY29scCIsInJvd3AiLCJkb190b3dhcmRzIiwiYW5jaG9yIiwiZ29hbCIsImN1cnIkMCIsImN1cnJfcCIsImRfY3VyciIsImRfcHJldiIsImFuY2hvciQwIiwiYW5jaG9yX2QiLCJkb192ZXJ0aWNhbCIsImN1cl9wIiwiZG9fZXh0cmVtZSIsInRvX3N0YXJ0IiwidG9fZW5kIiwidG9fZWRnZSIsImRvX3VudGlsIiwibW92ZV9maXJzdCIsInBpZWNlX3AiLCJkb191bnRpbF93cmFwIiwianVtcF90b19pZCIsInZlcnRpY2FsIiwidGFyZ2V0c193aXRoaW5fcm93IiwidG9fYmFja3BhY2tfdGFyZ2V0IiwiZG9uZV9vcl90cnlfYWdhaW4iLCJ6MSIsInoyIiwiZGlzdDEiLCJkaXN0MiIsInpzIiwiY2h1bmsiLCJjaHVuayQwIiwiYmFyZiIsImRlbGF5ZWRfZXhwYW5kIiwibmV3X2xhYmVsIiwiZXhwYW5kX29yX2JhcmZfbGVmdF9uZWlnaGJvciIsImV4cGFuZF9vcl9iYXJmX3JpZ2h0X25laWdoYm9yIiwiZ2V0X2R1b19zaGFyZCIsIm5laWdoYm9yX2Nhbl9kdW9tZXJnZSIsIm1vbm9fbGJsIiwidGlsZSQwIiwibWFrZV9uZXdfdGlsZSIsImxibCQwIiwiZXhwYW5kX25laWdoYm9yc19hbmRfbWFrZV9uZXdfIiwicmVwbGFjZV90aWxlIiwicHBfYXBwZW5kYWJpbGl0eSIsInNob3dfYXBwZW5kYWJpbGl0eSIsImFwcGVuZGFiaWxpdHlfb2Zfc2V4cCIsInNleHBfb2ZfYXBwZW5kYWJpbGl0eSIsImFwcGVuZGFiaWxpdHlfb2ZfeW9qc29uIiwieW9qc29uX29mX2FwcGVuZGFiaWxpdHkiLCJzaWJsaW5nX2FwcGVuZGFiaWxpdHkiLCJpbnNlcnRfb3V0ZXIiLCJpbnNlcnRfZHVvIiwiaW5zZXJ0X21vbm9zIiwib3B0X3JlZ3JvbGQiLCJtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW0iLCJjbG9zaW5nX3N0cmluZ2xpdF9vcl9jb21tZW50IiwiZF9pZHgiLCJjYXJldCQwIiwiY2FyZXRfc3RyIiwiY29kZV9maWVsZCIsImNvZGVfdmFsdWUiLCJ2X2NvZGUiLCJzZWdfb2ZfemlwIiwib2ZfcGllY2UiLCJvZl9kZWxpbSIsInRvX3N0cmluZ19iYXNpYyIsImxpbmVzX3RvX2xpc3QiLCJ0b19yb3dzIiwiaW5kZW50X29mIiwibWtfaW5kZW50IiwiY2FyZXRfcm93IiwiY2FyZXRfcm93JDAiLCJ0b19zdHJpbmdfZWRpdG9yIiwidG9fc3RyaW5nX3NlbGVjdGlvbiIsInRvX2xvZyIsInRvX2xvZ19mbGF0IiwiY29kZSIsInppcHBlcl9vZl9zdHJpbmciLCJ6aXBwZXJfaW5pdCIsImluc2VydCIsImJhY2t1cF90ZXh0XzAwNiIsImJhY2t1cF90ZXh0XzAwNyIsImJhY2t1cF90ZXh0XzAyMiIsImJhY2t1cF90ZXh0X2ZpZWxkIiwiYmFja3VwX3RleHRfdmFsdWUiLCJ2X2JhY2t1cF90ZXh0IiwicGVyc2lzdCIsInVucGVyc2lzdCIsInBlcnNpc3RlZCIsImxhc3RfaW5uZXJfcG9zIiwiZGVsZXRlX3JpZ2h0IiwiZGVsZXRlX2xlZnQiLCJjb25zdHJ1Y3RfcmlnaHQiLCJjb25zdHJ1Y3RfbGVmdCIsImNfaWR4IiwiY19pZHgkMCIsInBhcmVudF9kdW9tZXJnZXMiLCJpc193cml0ZV9hY3Rpb24iLCJnb196IiwibWV0YSQwIiwibWV0YSQxIiwic2VsZWN0X3Rlcm1fY3VycmVudCQwIiwic2VsZWN0X3Rlcm1fY3VycmVudCIsImp1bXBfdGFyZ2V0IiwiYmluZGluZ19pZCIsInokNyIsInokOCIsInokOSIsInokMTAiLCJ6JDExIiwieiQ1IiwidGlsZV9pc190ZXJtIiwic3RhdGljcyQwIiwieiQ2IiwieiQxMiIsImNsaXBib2FyZCIsInokMTMiLCJvcmllbnQiLCJvcmllbnQkMCIsImVycm9yX3NvdXJjZV8wNzMiLCJwcF9ldmFsX3Jlc3VsdCIsInNob3dfZXZhbF9yZXN1bHQiLCJldmFsX3Jlc3VsdF9vZl9zZXhwIiwiZWxhYl8wMDQiLCJldmFsdWF0aW9uXzAwNiIsInByZXZpb3VzXzAwOCIsInByZXZpb3VzXzAwOSIsImV2YWx1YXRpb25fMDA3IiwiZWxhYl8wMDUiLCJzZXhwX29mX2V2YWxfcmVzdWx0IiwicHJldmlvdXNfMDI3IiwiZXZhbHVhdGlvbl8wMjUiLCJlbGFiXzAyMyIsImV2YWxfcmVzdWx0X29mX3lvanNvbiIsImVsYWJfZmllbGQiLCJwcmV2aW91c19maWVsZCIsInByZXZpb3VzX3ZhbHVlIiwiZWxhYl92YWx1ZSIsInlvanNvbl9vZl9ldmFsX3Jlc3VsdCIsInZfcHJldmlvdXMiLCJ2X2VsYWIiLCJpbml0X2V2YWwiLCJlbGFiIiwidXBkYXRlX2VsYWIiLCJldmFsdWF0aW9uIiwidXBkYXRlX3N0ZXBwZXIiLCJwYXJhbSIsInN0ZXBfZm9yd2FyZCIsIm1yIiwicnVuX3BlbmRpbmciLCJwcmV2aW91cyIsInVwZGF0ZV9ldmFsdWF0aW9uIiwiZXZhbCQwIiwidG9nZ2xlX3N0ZXBwZXIiLCJwciIsIm9mX3BlcnNpc3RlbnQiLCJwcF9zZWxlY3Rpb24iLCJzaG93X3NlbGVjdGlvbiIsInNlbGVjdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9zZWxlY3Rpb24iLCJzZWxlY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdGlvbiIsInNlbGVjdGlvbl8wNjIiLCJhY3Rpb25fMDY0IiwiZHVwbGljYXRlc18wNjYiLCJleHRyYV8wNjciLCJpdGVyXzA3NCIsImZpZWxkX3NleHBzXzA3MCIsImZpZWxkX25hbWVfMDY4IiwidGFpbF8wNzUiLCJmaWVsZF9zZXhwXzA2OSQyIiwiZmllbGRfc2V4cF8wNjkiLCJ4XzA3NiIsImZpZWxkX3NleHBfMDY5JDAiLCJmdmFsdWVfMDcyIiwiZmllbGRfc2V4cF8wNjkkMSIsImZ2YWx1ZV8wNzEiLCJhY3Rpb25fMDY1Iiwic2VsZWN0aW9uXzA2MyIsImFjdGlvbl8wODAiLCJzZWxlY3Rpb25fMDc4IiwiYXJnXzA4MSIsImJuZHNfMDc3IiwiYXJnXzA3OSIsImJuZHNfMDc3JDAiLCJhY3Rpb25fZmllbGQiLCJhY3Rpb25fdmFsdWUiLCJ2X2FjdGlvbiIsImVkaXRvciQwIiwicHIkMCIsImdldF9lbGFib3JhdGlvbiIsInBlcmZvcm0iLCJhY3Rpb24iLCJ4XzAwNCIsInVwZGF0ZV9lbGFicyIsInRpbWVvdXRfYWxsIiwiYWR2YW5jZV9ldmFsdWF0b3JfcmVzdWx0Iiwic3RlcHBlcl9yZXN1bHRfb3B0IiwidG9fZXZhbHVhdGUiLCJlbGFicyIsInRvX3N0ZXAiLCJwdXRfcmVzdWx0IiwiY2xlYXIiLCJlZGl0b3Jfb2ZfY29kZSIsImVkaXRvcnNfZm9yIiwiYWNjX3pzIiwic3oiLCJlZGl0b3JzX29mX3N0cmluZ3MiLCJhZXMiLCJvZSIsImFwcGVuZF9leHAiLCJlYm9keSIsImVkZWYiLCJlYm9keSQwIiwiZWJvZHkkMSIsInRkZWYiLCJlYm9keSQyIiwiZTEyIiwiZTExIiwiZTEyJDAiLCJlYm9keSQzIiwiZWJvZHkkNCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsImVtcHR5Iiwic2luZ2xldG9uIiwicG9zIiwieCIsInVuaW9uIiwiZiIsInQxIiwidDIiLCJ4czIiLCJ4MiIsInAyIiwieHMxIiwieDEiLCJwMSIsIm1hcCIsInJlc3QiLCJtYXBpIiwibWFwayIsImZvbGRfbGVmdCIsInokMCIsImVycm9yX3NvdXJjZV8wMTUiLCJ6ZXJvIiwidF9vZl9zZXhwIiwic2V4cF8wMDIiLCJmaWVsZF9zZXhwc18wMDMiLCJyb3dfMDA0IiwiY29sXzAwNiIsImR1cGxpY2F0ZXNfMDA4IiwiZXh0cmFfMDA5Iiwic2V4cF8wMDIkMCIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJjb2xfMDA3Iiwicm93XzAwNSIsInNleHBfb2ZfdCIsImNvbF8wMjIiLCJyb3dfMDIwIiwiYXJnXzAyMyIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJjb21wYXJlIiwicG9zMSIsInBvczIiLCJlcnJvcl9zb3VyY2VfMDA0Iiwib2ZfYW5ub3RfMDAxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJzZXhwX2FyZ3NfMDEzIiwiYXJnMV8wMTUiLCJhcmcwXzAxNCIsInJlczBfMDE2IiwicmVzMV8wMTciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsIm9mX2Fubm90XzAzMSIsImFyZzBfMDMyIiwicmVzMF8wMzMiLCJhcmcxXzAzNSIsImFyZzBfMDM0IiwicmVzMF8wMzYiLCJyZXMxXzAzNyIsImFyZzBfMDM4IiwicmVzMF8wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsImFsaWduIiwibCIsImFubm90IiwicmVtb3ZlX2Fubm90cyIsImxheW91dCIsImxheW91dCQwIiwic3RyaW5nIiwibDIiLCJsMSIsImxheW91dCQxIiwibWtfb2ZfbGF5b3V0IiwidGV4dCIsImNvbHVtbiIsImdvIiwiaW5kZW50IiwiaW5kZW50JDAiLCJpbXAxIiwiaW1wMiIsImluZGVudCQxIiwic3RyaW5nX29mX2xheW91dCIsImltcCIsInMxIiwiczIiLCJyZWNvcmQiLCJzdHJpbmdzX29mX2xheW91dCIsInJlc3QyIiwiZmlyc3Rfc3RyaW5nXzIiLCJmaXJzdF9pbmRlbnRfMiIsInJlc3QxIiwibGFzdF9zdHJpbmdfMSIsImxhc3RfaW5kZW50XzEiLCJzcGxpdF9maXJzdCIsInhzIiwidHJhaWxpbmciLCJmaXJzdCIsInNwbGl0X2xhc3Rfb3B0IiwieXMiLCJ5Iiwic3BsaXRfbGFzdCIsInIiLCJib3giLCJlcnJvcl9zb3VyY2VfMDM5IiwiZXJyb3Jfc291cmNlXzA0NiIsImJveF9vZl9zZXhwIiwiaGVpZ2h0XzAwNCIsIndpZHRoXzAwNiIsIndpZHRoXzAwNyIsImhlaWdodF8wMDUiLCJzZXhwX29mX2JveCIsIndpZHRoXzAyMiIsImhlaWdodF8wMjAiLCJ0X29mX3NleHAkMCIsIm9mX2Fubm90XzAyNCIsInNleHBfMDI2IiwiZmllbGRfc2V4cHNfMDI3IiwibGF5b3V0XzAyOCIsIm1ldHJpY3NfMDMwIiwiZHVwbGljYXRlc18wMzIiLCJleHRyYV8wMzMiLCJzZXhwXzAyNiQwIiwiZmllbGRfc2V4cHNfMDM2IiwiZmllbGRfbmFtZV8wMzQiLCJ0YWlsXzA0MSIsImZpZWxkX3NleHBfMDM1JDIiLCJmaWVsZF9zZXhwXzAzNSIsInhfMDQyIiwiZmllbGRfc2V4cF8wMzUkMCIsImZ2YWx1ZV8wMzciLCJmaWVsZF9zZXhwXzAzNSQxIiwiZnZhbHVlXzAzOCIsIm1ldHJpY3NfMDMxIiwibGF5b3V0XzAyOSIsIm9mX2Fubm90XzA0MyIsInNleHBfMDQ4IiwidGFnXzA0OSIsInNleHBfYXJnc18wNTUiLCJhcmcwXzA1NiIsInJlczBfMDU3Iiwic2V4cF9hcmdzXzA2NyIsImFyZzFfMDY5IiwiYXJnMF8wNjgiLCJyZXMwXzA3MCIsInJlczFfMDcxIiwic2V4cF9hcmdzXzA2MCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0Iiwic2V4cF9hcmdzXzA1MCIsImFyZzBfMDUxIiwicmVzMF8wNTIiLCJvZl9hbm5vdF8wNzMiLCJtZXRyaWNzXzA3NyIsImxheW91dF8wNzUiLCJhcmdfMDc4IiwiYm5kc18wNzQiLCJhcmdfMDc2Iiwic2V4cF9vZl90JDAiLCJibmRzXzA3NCQwIiwib2ZfYW5ub3RfMDc5IiwiYXJnMF8wODAiLCJyZXMwXzA4MSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODYiLCJyZXMxXzA4NyIsImFyZzFfMDg5IiwiYXJnMF8wODgiLCJyZXMwXzA5MCIsInJlczFfMDkxIiwiaGVpZ2h0IiwibSIsIndpZHRoIiwib3B0Iiwic3RoIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJjb2wiLCJyb3ciLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsInN0aCQwIiwibWlkIiwidGFibGUiLCJtayIsIm1pZF9ib3giLCJsJDAiLCJidyIsImJoIiwiYm91bmRpbmdfYm94IiwibCQxIiwibSQyIiwib3ZlcmZsb3dfY29zdCIsImhlaWdodF9jb3N0IiwibWtfaGVpZ2h0IiwibWtfb3ZlcmZsb3ciLCJpbmYiLCJhZGQiLCJjMSIsImMyIiwiZXEiLCJsdCIsImxlcSIsImVycm9yX3NvdXJjZV8wMTYiLCJlcnJvcl9zb3VyY2VfMDIzIiwiZXJyb3Jfc291cmNlXzA5NiIsImVycm9yX3NvdXJjZV8xMDMiLCJoYXNoIiwiZXF1YWwiLCJ3MiIsIncxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJtZW1fMDA1IiwiZG9jXzAwNyIsImR1cGxpY2F0ZXNfMDA5IiwiZXh0cmFfMDEwIiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxMyIsImZpZWxkX25hbWVfMDExIiwidGFpbF8wMTgiLCJmaWVsZF9zZXhwXzAxMiQyIiwiZmllbGRfc2V4cF8wMTIiLCJ4XzAxOSIsImZpZWxkX3NleHBfMDEyJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTIkMSIsImRvY18wMDgiLCJtZW1fMDA2Iiwib2ZfYW5ub3RfMDIwIiwic2V4cF8wMjUiLCJ0YWdfMDI2Iiwic2V4cF9hcmdzXzAzOSIsInJlczBfMDQxIiwic2V4cF9hcmdzXzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4Iiwic2V4cF9hcmdzXzAzMiIsImFyZzFfMDM0IiwiYXJnMF8wMzMiLCJyZXMwXzAzNSIsInJlczFfMDM2Iiwic2V4cF9hcmdzXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJ0X29mX3NleHAkMSIsInRfb2Zfc2V4cCQyIiwib2ZfYW5ub3RfMDgxIiwic2V4cF8wODMiLCJmaWVsZF9zZXhwc18wODQiLCJtZW1fMDg1IiwiZG9jXzA4NyIsImR1cGxpY2F0ZXNfMDg5IiwiZXh0cmFfMDkwIiwic2V4cF8wODMkMCIsImZpZWxkX3NleHBzXzA5MyIsImZpZWxkX25hbWVfMDkxIiwidGFpbF8wOTgiLCJmaWVsZF9zZXhwXzA5MiQyIiwiZmllbGRfc2V4cF8wOTIiLCJ4XzA5OSIsImZpZWxkX3NleHBfMDkyJDAiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTIkMSIsImZ2YWx1ZV8wOTQiLCJkb2NfMDg4IiwibWVtXzA4NiIsIm9mX2Fubm90XzEwMCIsInNleHBfMTA1IiwidGFnXzEwNiIsInNleHBfYXJnc18xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwic2V4cF9hcmdzXzEyNCIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4Iiwic2V4cF9hcmdzXzExMiIsImFyZzFfMTE0IiwiYXJnMF8xMTMiLCJyZXMwXzExNSIsInJlczFfMTE2Iiwic2V4cF9hcmdzXzEzMSIsImFyZzFfMTMzIiwiYXJnMF8xMzIiLCJyZXMwXzEzNCIsInJlczFfMTM1Iiwic2V4cF9hcmdzXzEwNyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJvZl9hbm5vdF8xMzciLCJkb2NfMTQxIiwibWVtXzEzOSIsImFyZ18xNDIiLCJibmRzXzEzOCIsImFyZ18xNDAiLCJibmRzXzEzOCQwIiwib2ZfYW5ub3RfMTQzIiwiYXJnMF8xNDQiLCJyZXMwXzE0NSIsImFyZzFfMTQ3IiwiYXJnMF8xNDYiLCJyZXMwXzE0OCIsInJlczFfMTQ5IiwiYXJnMF8xNTAiLCJyZXMwXzE1MSIsImFyZzFfMTUzIiwiYXJnMF8xNTIiLCJyZXMwXzE1NCIsInJlczFfMTU1IiwiYXJnMV8xNTciLCJhcmcwXzE1NiIsInJlczBfMTU4IiwicmVzMV8xNTkiLCJ0X29mX3QiLCJ0IiwiZG9jIiwiZmFpbCIsInNwYWNlIiwiaW5kZW50X2FuZF9hbGlnbiIsImhjYXQiLCJoY2F0cyIsImRvY3MiLCJoc2VwIiwiaHNlcHMiLCJ2c2VwIiwidnNlcHMiLCJjaG9pY2UiLCJjaG9pY2VzIiwibWFwX3QiLCJkIiwibWFwX2Fubm90IiwiZDIiLCJkMSIsImQkMCIsImQkMSIsImQyJDAiLCJkMSQwIiwiYWxsIiwibHMxIiwibHMyIiwibV91bmlvbiIsImNvc3RfdW5pb24iLCJjb3N0MiIsImNvc3QxIiwibGF5b3V0X29mX2RvYyIsImgiLCJwb3MkMCIsImtleSIsInZhbHVlIiwidmFsdWUkMCIsImNvc3QiLCJvdmVyZmxvdyIsInoiLCJsYXlvdXQxIiwibGF5b3V0MiIsImxheW91dHMiLCJwIiwiYyIsImwxJDAiLCJsYXlvdXRfb2ZfZG9jJDAiLCJ4X2Nvc3QiLCJ4X3BvcyIsInNleHBfYXJnc18wMTgiLCJhcmcwXzAxOSIsInJlczBfMDIwIiwicmVzMF8wMTUiLCJzZXhwX2FyZ3NfMDIzIiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJvZl9hbm5vdF8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhbm5vdCQwIiwiYm94ZXMiLCJib3hlczEiLCJsZWFkaW5nJDAiLCJib3hlczIiLCJlcnJvcl9zb3VyY2VfMDE1IiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAyNiIsInRwX2xvYyQwIiwicHBfc3ludGF4X3Jlc3VsdCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzaG93X3N5bnRheF9yZXN1bHQiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsInJlc3VsdHNfMDA0IiwicGVyY2VudGFnZV8wMDYiLCJkdXBsaWNhdGVzXzAwOCIsImV4dHJhXzAwOSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTIiLCJmaWVsZF9uYW1lXzAxMCIsInRhaWxfMDE3IiwiZmllbGRfc2V4cF8wMTEkMiIsImZpZWxkX3NleHBfMDExIiwieF8wMTgiLCJmaWVsZF9zZXhwXzAxMSQwIiwiZnZhbHVlXzAxNCIsImZpZWxkX3NleHBfMDExJDEiLCJmdmFsdWVfMDEzIiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsInNleHBfb2Zfc3ludGF4X3Jlc3VsdCIsInBlcmNlbnRhZ2VfMDIyIiwicmVzdWx0c18wMjAiLCJhcmdfMDIzIiwiYm5kc18wMTkiLCJhcmdfMDIxIiwiYm5kc18wMTkkMCIsInN5bnRheF9yZXN1bHRfb2ZfeW9qc29uIiwieW9qc29uIiwiZmllbGRfeW9qc29ucyIsInJlc3VsdHNfZmllbGQiLCJwZXJjZW50YWdlX2ZpZWxkIiwiZHVwbGljYXRlcyIsImV4dHJhIiwidGFpbCIsImZpZWxkX3lvanNvbiIsImZpZWxkX25hbWUiLCJmdmFsdWUiLCJmdmFsdWUkMCIsInBlcmNlbnRhZ2VfdmFsdWUiLCJyZXN1bHRzX3ZhbHVlIiwieW9qc29uX29mX3N5bnRheF9yZXN1bHQiLCJ2X3BlcmNlbnRhZ2UiLCJ2X3Jlc3VsdHMiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJmaW5kX3Zhcl91cGF0IiwibmFtZSIsInVwYXQiLCJ1cGF0JDAiLCJ1cGF0JDEiLCJ1cDEiLCJ1cGF0JDIiLCJ1cGF0JDMiLCJ1cDEkMCIsInVwYXQkNCIsImwiLCJhY2MiLCJ1cCIsImZpbmRfaW5fbGV0IiwiZGVmIiwiZGVmJDAiLCJ1bCIsInBsIiwidWUiLCJkZWYkMiIsImRlZiQxIiwiZmluZF9mbiIsInVleHAiLCJ1ZXhwJDAiLCJsJDAiLCJib2R5JDAiLCJsJDEiLCJ1ZXhwJDEiLCJhcmdzIiwiZm4iLCJ1IiwidWV4cCQzIiwidTIiLCJ1MSQwIiwibCQyIiwidWwkMCIsInUxJDEiLCJ1MSIsInVleHAkMiIsImJvZHkiLCJsJDMiLCJ2YXJfbWVudGlvbl91cGF0IiwidmFyX21lbnRpb24iLCJwIiwiYm9keSQxIiwiYXJncyQwIiwidXMiLCJ1ZXhwJDUiLCJ1ZXhwJDYiLCJnIiwicGUiLCJlIiwidWV4cCQ3IiwidWV4cCQ0IiwidmFyX2FwcGxpZWQiLCJ4JDEiLCJ1MSQyIiwiaXNfcmVjdXJzaXZlIiwiZm5fYm9kaWVzIiwidGFpbF9jaGVjayIsInUyJDAiLCJ1MiQxIiwiaXNfdGFpbF9yZWN1cnNpdmUiLCJjaGVjayIsInByZWRpY2F0ZXMiLCJwcmVkIiwicmVzdWx0cyIsImxlbmd0aCIsInJlcyIsInBhc3NpbmciLCJwcF9wcmVkaWNhdGUiLCJhMCIsImEwJDAiLCJhMCQxIiwiYTAkMiIsInNob3dfcHJlZGljYXRlIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAyOCIsInRhZ18wMjkiLCJzZXhwX2FyZ3NfMDMwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInNleHBfYXJnc18wNDUiLCJhcmcwXzA0NiIsInJlczBfMDQ3Iiwic2V4cF9hcmdzXzAzNSIsImFyZzBfMDM2IiwicmVzMF8wMzciLCJzZXhwX2FyZ3NfMDQwIiwiYXJnMF8wNDEiLCJyZXMwXzA0MiIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wNDgiLCJyZXMwXzA0OSIsImFyZzBfMDUwIiwicmVzMF8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYXJnMF8wNTQiLCJyZXMwXzA1NSIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDE2IiwiZXJyb3Jfc291cmNlXzA0MSIsImVycm9yX3NvdXJjZV8wNTgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wODQiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8xMTMiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8xNjkiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8yMDUiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8yMTIiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8yNDEiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8yNTQiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8yNzgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwicHBfd3JvbmdfaW1wbCIsInBvbHlfY29kZSIsInNob3dfd3JvbmdfaW1wbCIsIndyb25nX2ltcGxfb2Zfc2V4cCIsIm9mX2NvZGVfMDAxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJpbXBsXzAwNSIsImhpbnRfMDA3IiwiZHVwbGljYXRlc18wMDkiLCJleHRyYV8wMTAiLCJzZXhwXzAwMyQwIiwiZmllbGRfc2V4cHNfMDEzIiwiZmllbGRfbmFtZV8wMTEiLCJ0YWlsXzAxOCIsImZpZWxkX3NleHBfMDEyJDIiLCJmaWVsZF9zZXhwXzAxMiIsInhfMDE5IiwiZmllbGRfc2V4cF8wMTIkMCIsImZ2YWx1ZV8wMTUiLCJmaWVsZF9zZXhwXzAxMiQxIiwiaGludF8wMDgiLCJpbXBsXzAwNiIsInNleHBfb2Zfd3JvbmdfaW1wbCIsIm9mX2NvZGVfMDIwIiwiaGludF8wMjQiLCJpbXBsXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImJuZHNfMDIxJDAiLCJ3cm9uZ19pbXBsX29mX3lvanNvbiIsIm9mX2NvZGUiLCJpbXBsX2ZpZWxkIiwiaGludF9maWVsZCIsImhpbnRfdmFsdWUiLCJpbXBsX3ZhbHVlIiwieW9qc29uX29mX3dyb25nX2ltcGwiLCJ2X2hpbnQiLCJ2X2ltcGwiLCJwcF9oaWRkZW5fdGVzdHMiLCJzaG93X2hpZGRlbl90ZXN0cyIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMjYiLCJmaWVsZF9zZXhwc18wMjkiLCJ0ZXN0c18wMzAiLCJoaW50c18wMzIiLCJkdXBsaWNhdGVzXzAzNCIsImV4dHJhXzAzNSIsInNleHBfMDI4JDAiLCJmaWVsZF9zZXhwc18wMzgiLCJmaWVsZF9uYW1lXzAzNiIsInRhaWxfMDQzIiwiZmllbGRfc2V4cF8wMzckMiIsImZpZWxkX3NleHBfMDM3IiwieF8wNDQiLCJmaWVsZF9zZXhwXzAzNyQwIiwiZnZhbHVlXzA0MCIsImZpZWxkX3NleHBfMDM3JDEiLCJmdmFsdWVfMDM5IiwiaGludHNfMDMzIiwidGVzdHNfMDMxIiwic2V4cF9vZl9oaWRkZW5fdGVzdHMiLCJvZl9jb2RlXzA0NSIsImhpbnRzXzA0OSIsInRlc3RzXzA0NyIsImFyZ18wNTAiLCJibmRzXzA0NiIsImFyZ18wNDgiLCJibmRzXzA0NiQwIiwiaGlkZGVuX3Rlc3RzX29mX3lvanNvbiIsInRlc3RzX2ZpZWxkIiwiaGludHNfZmllbGQiLCJoaW50c192YWx1ZSIsInRlc3RzX3ZhbHVlIiwieW9qc29uX29mX2hpZGRlbl90ZXN0cyIsInZfaGludHMiLCJ2X3Rlc3RzIiwicHBfaGludCIsInNob3dfaGludCIsImhpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaGludCIsImhpbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hpbnQiLCJwcF9zeW50YXhfdGVzdCIsInNob3dfc3ludGF4X3Rlc3QiLCJhMSIsInN5bnRheF90ZXN0X29mX3NleHAiLCJzZXhwXzA1NyIsImFyZzFfMDU0IiwiYXJnMF8wNTMiLCJyZXMxXzA1NiIsInNleHBfb2Zfc3ludGF4X3Rlc3QiLCJhcmcxXzA2MCIsImFyZzBfMDU5IiwicmVzMF8wNjEiLCJyZXMxXzA2MiIsInN5bnRheF90ZXN0X29mX3lvanNvbiIsInYxIiwidjEkMCIsInlvanNvbl9vZl9zeW50YXhfdGVzdCIsInBwX3N5bnRheF90ZXN0cyIsInNob3dfc3ludGF4X3Rlc3RzIiwic3ludGF4X3Rlc3RzX29mX3NleHAiLCJ4XzA2NCIsInNleHBfb2Zfc3ludGF4X3Rlc3RzIiwieF8wNjUiLCJzeW50YXhfdGVzdHNfb2ZfeW9qc29uIiwidCIsInlvanNvbl9vZl9zeW50YXhfdGVzdHMiLCJ2IiwicHBfeW91cl90ZXN0cyIsInNob3dfeW91cl90ZXN0cyIsInlvdXJfdGVzdHNfb2Zfc2V4cCIsIm9mX2NvZGVfMDY2Iiwic2V4cF8wNjgiLCJmaWVsZF9zZXhwc18wNjkiLCJ0ZXN0c18wNzAiLCJyZXF1aXJlZF8wNzIiLCJwcm92aWRlZF8wNzQiLCJkdXBsaWNhdGVzXzA3NiIsImV4dHJhXzA3NyIsInNleHBfMDY4JDAiLCJmaWVsZF9zZXhwc18wODAiLCJmaWVsZF9uYW1lXzA3OCIsInRhaWxfMDg2IiwiZmllbGRfc2V4cF8wNzkkMyIsImZpZWxkX3NleHBfMDc5IiwieF8wODciLCJmaWVsZF9zZXhwXzA3OSQwIiwiZnZhbHVlXzA4MyIsImZpZWxkX3NleHBfMDc5JDEiLCJmdmFsdWVfMDgyIiwiZmllbGRfc2V4cF8wNzkkMiIsImZ2YWx1ZV8wODEiLCJwcm92aWRlZF8wNzUiLCJyZXF1aXJlZF8wNzMiLCJ0ZXN0c18wNzEiLCJzZXhwX29mX3lvdXJfdGVzdHMiLCJvZl9jb2RlXzA4OCIsInByb3ZpZGVkXzA5NCIsInJlcXVpcmVkXzA5MiIsInRlc3RzXzA5MCIsImFyZ18wOTUiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJ5b3VyX3Rlc3RzX29mX3lvanNvbiIsInJlcXVpcmVkX2ZpZWxkIiwicHJvdmlkZWRfZmllbGQiLCJmdmFsdWUkMSIsInByb3ZpZGVkX3ZhbHVlIiwicmVxdWlyZWRfdmFsdWUiLCJ5b2pzb25fb2ZfeW91cl90ZXN0cyIsInZfcHJvdmlkZWQiLCJ2X3JlcXVpcmVkIiwiYXJnJDEiLCJibmRzJDEiLCJwcF9wb2ludF9kaXN0cmlidXRpb24iLCJzaG93X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwic2V4cF8wOTciLCJmaWVsZF9zZXhwc18wOTgiLCJ0ZXN0X3ZhbGlkYXRpb25fMDk5IiwibXV0YXRpb25fdGVzdGluZ18xMDEiLCJpbXBsX2dyYWRpbmdfMTAzIiwiZHVwbGljYXRlc18xMDUiLCJleHRyYV8xMDYiLCJzZXhwXzA5NyQwIiwiZmllbGRfc2V4cHNfMTA5IiwiZmllbGRfbmFtZV8xMDciLCJ0YWlsXzExNSIsImZpZWxkX3NleHBfMTA4JDMiLCJmaWVsZF9zZXhwXzEwOCIsInhfMTE2IiwiZmllbGRfc2V4cF8xMDgkMCIsImZ2YWx1ZV8xMTIiLCJmaWVsZF9zZXhwXzEwOCQxIiwiZnZhbHVlXzExMSIsImZpZWxkX3NleHBfMTA4JDIiLCJmdmFsdWVfMTEwIiwiaW1wbF9ncmFkaW5nXzEwNCIsIm11dGF0aW9uX3Rlc3RpbmdfMTAyIiwidGVzdF92YWxpZGF0aW9uXzEwMCIsInNleHBfb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwiaW1wbF9ncmFkaW5nXzEyMiIsIm11dGF0aW9uX3Rlc3RpbmdfMTIwIiwidGVzdF92YWxpZGF0aW9uXzExOCIsImFyZ18xMjMiLCJibmRzXzExNyIsImFyZ18xMjEiLCJibmRzXzExNyQwIiwiYXJnXzExOSIsImJuZHNfMTE3JDEiLCJwb2ludF9kaXN0cmlidXRpb25fb2ZfeW9qc29uIiwidGVzdF92YWxpZGF0aW9uX2ZpZWxkIiwibXV0YXRpb25fdGVzdGluZ19maWVsZCIsImltcGxfZ3JhZGluZ19maWVsZCIsImltcGxfZ3JhZGluZ192YWx1ZSIsIm11dGF0aW9uX3Rlc3RpbmdfdmFsdWUiLCJ0ZXN0X3ZhbGlkYXRpb25fdmFsdWUiLCJ5b2pzb25fb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwidl9pbXBsX2dyYWRpbmciLCJ2X211dGF0aW9uX3Rlc3RpbmciLCJ2X3Rlc3RfdmFsaWRhdGlvbiIsInZhbGlkYXRlX3BvaW50X2Rpc3RyaWJ1dGlvbiIsImltcGxfZ3JhZGluZyIsIm11dGF0aW9uX3Rlc3RpbmciLCJ0ZXN0X3ZhbGlkYXRpb24iLCJwcF9wIiwic2hvd19wIiwicF9vZl9zZXhwIiwib2ZfY29kZV8xMjQiLCJzZXhwXzEyNiIsImZpZWxkX3NleHBzXzEyNyIsInRpdGxlXzEyOCIsInZlcnNpb25fMTMwIiwibW9kdWxlX25hbWVfMTMyIiwicHJvbXB0XzEzNCIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xMzYiLCJwcmVsdWRlXzEzOCIsImNvcnJlY3RfaW1wbF8xNDAiLCJ5b3VyX3Rlc3RzXzE0MiIsInlvdXJfaW1wbF8xNDQiLCJoaWRkZW5fYnVnc18xNDYiLCJoaWRkZW5fdGVzdHNfMTQ4Iiwic3ludGF4X3Rlc3RzXzE1MCIsImR1cGxpY2F0ZXNfMTUyIiwiZXh0cmFfMTUzIiwiaXRlcl8xNzAiLCJzZXhwXzEyNiQwIiwiZmllbGRfc2V4cHNfMTU2IiwiZmllbGRfbmFtZV8xNTQiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTU1JDEyIiwiZmllbGRfc2V4cF8xNTUiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTU1JDAiLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTUkMSIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1NSQyIiwiZnZhbHVlXzE2NyIsImZpZWxkX3NleHBfMTU1JDMiLCJmdmFsdWVfMTY4IiwiZmllbGRfc2V4cF8xNTUkNCIsImZ2YWx1ZV8xNTciLCJmaWVsZF9zZXhwXzE1NSQ1IiwiZnZhbHVlXzE2NSIsImZpZWxkX3NleHBfMTU1JDYiLCJmdmFsdWVfMTYzIiwiZmllbGRfc2V4cF8xNTUkNyIsImZ2YWx1ZV8xNjQiLCJmaWVsZF9zZXhwXzE1NSQ4IiwiZnZhbHVlXzE2NiIsImZpZWxkX3NleHBfMTU1JDkiLCJmdmFsdWVfMTU4IiwiZmllbGRfc2V4cF8xNTUkMTAiLCJmdmFsdWVfMTU5IiwiZmllbGRfc2V4cF8xNTUkMTEiLCJmdmFsdWVfMTYyIiwic3ludGF4X3Rlc3RzXzE1MSIsImhpZGRlbl90ZXN0c18xNDkiLCJoaWRkZW5fYnVnc18xNDciLCJ5b3VyX2ltcGxfMTQ1IiwieW91cl90ZXN0c18xNDMiLCJjb3JyZWN0X2ltcGxfMTQxIiwicHJlbHVkZV8xMzkiLCJwb2ludF9kaXN0cmlidXRpb25fMTM3IiwicHJvbXB0XzEzNSIsIm1vZHVsZV9uYW1lXzEzMyIsInZlcnNpb25fMTMxIiwidGl0bGVfMTI5Iiwic2V4cF9vZl9wIiwib2ZfY29kZV8xNzMiLCJzeW50YXhfdGVzdHNfMTk3IiwiaGlkZGVuX3Rlc3RzXzE5NSIsImhpZGRlbl9idWdzXzE5MyIsInlvdXJfaW1wbF8xOTEiLCJ5b3VyX3Rlc3RzXzE4OSIsImNvcnJlY3RfaW1wbF8xODciLCJwcmVsdWRlXzE4NSIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xODMiLCJwcm9tcHRfMTgxIiwibW9kdWxlX25hbWVfMTc5IiwidmVyc2lvbl8xNzciLCJ0aXRsZV8xNzUiLCJhcmdfMTk4IiwiYm5kc18xNzQiLCJhcmdfMTk2IiwiYm5kc18xNzQkMCIsImFyZ18xOTQiLCJibmRzXzE3NCQxIiwiYXJnXzE5MiIsImJuZHNfMTc0JDIiLCJhcmdfMTkwIiwiYm5kc18xNzQkMyIsImFyZ18xODgiLCJibmRzXzE3NCQ0IiwiYXJnXzE4NiIsImJuZHNfMTc0JDUiLCJhcmdfMTg0IiwiYm5kc18xNzQkNiIsImFyZ18xODIiLCJibmRzXzE3NCQ3IiwiYXJnXzE4MCIsImJuZHNfMTc0JDgiLCJhcmdfMTc4IiwiYm5kc18xNzQkOSIsImFyZ18xNzYiLCJibmRzXzE3NCQxMCIsInBfb2ZfeW9qc29uIiwidGl0bGVfZmllbGQiLCJ2ZXJzaW9uX2ZpZWxkIiwibW9kdWxlX25hbWVfZmllbGQiLCJwcm9tcHRfZmllbGQiLCJwb2ludF9kaXN0cmlidXRpb25fZmllbGQiLCJwcmVsdWRlX2ZpZWxkIiwiY29ycmVjdF9pbXBsX2ZpZWxkIiwieW91cl90ZXN0c19maWVsZCIsInlvdXJfaW1wbF9maWVsZCIsImhpZGRlbl9idWdzX2ZpZWxkIiwiaGlkZGVuX3Rlc3RzX2ZpZWxkIiwic3ludGF4X3Rlc3RzX2ZpZWxkIiwiZnZhbHVlJDIiLCJmdmFsdWUkMyIsImZ2YWx1ZSQ0IiwiZnZhbHVlJDUiLCJmdmFsdWUkNiIsImZ2YWx1ZSQ3IiwiZnZhbHVlJDgiLCJmdmFsdWUkOSIsImZ2YWx1ZSQxMCIsInN5bnRheF90ZXN0c192YWx1ZSIsImhpZGRlbl90ZXN0c192YWx1ZSIsImhpZGRlbl9idWdzX3ZhbHVlIiwieW91cl9pbXBsX3ZhbHVlIiwieW91cl90ZXN0c192YWx1ZSIsImNvcnJlY3RfaW1wbF92YWx1ZSIsInByZWx1ZGVfdmFsdWUiLCJwb2ludF9kaXN0cmlidXRpb25fdmFsdWUiLCJwcm9tcHRfdmFsdWUiLCJtb2R1bGVfbmFtZV92YWx1ZSIsInZlcnNpb25fdmFsdWUiLCJ0aXRsZV92YWx1ZSIsInlvanNvbl9vZl9wIiwidl9zeW50YXhfdGVzdHMiLCJ2X2hpZGRlbl90ZXN0cyIsInZfaGlkZGVuX2J1Z3MiLCJ2X3lvdXJfaW1wbCIsInZfeW91cl90ZXN0cyIsInZfY29ycmVjdF9pbXBsIiwidl9wcmVsdWRlIiwidl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X3Byb21wdCIsInZfbW9kdWxlX25hbWUiLCJ2X3ZlcnNpb24iLCJ2X3RpdGxlIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsImFyZyQ0IiwiYm5kcyQ0IiwiYXJnJDUiLCJibmRzJDUiLCJhcmckNiIsImJuZHMkNiIsImFyZyQ3IiwiYm5kcyQ3IiwiYXJnJDgiLCJibmRzJDgiLCJhcmckOSIsImJuZHMkOSIsImFyZyQxMCIsImJuZHMkMTAiLCJwcF9rZXkiLCJzaG93X2tleSIsImtleV9vZl9zZXhwIiwic2V4cF8yMDQiLCJhcmcxXzIwMSIsImFyZzBfMjAwIiwicmVzMF8yMDIiLCJyZXMxXzIwMyIsInNleHBfb2Zfa2V5IiwiYXJnMV8yMDciLCJhcmcwXzIwNiIsInJlczBfMjA4IiwicmVzMV8yMDkiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBwX3BvcyIsInNob3dfcG9zIiwicG9zX29mX3NleHAiLCJzZXhwXzIxNCIsInRhZ18yMTUiLCJzZXhwX2FyZ3NfMjE2IiwiYXJnMF8yMTciLCJyZXMwXzIxOCIsInNleHBfb2ZfcG9zIiwiYXJnMF8yMTkiLCJyZXMwXzIyMCIsInBvc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9zIiwicHBfc3BlYyIsInNob3dfc3BlYyIsInNwZWNfb2Zfc2V4cCIsInhfMjIyIiwic2V4cF9vZl9zcGVjIiwieF8yMjMiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwicHBfdHJhbnNpdGlvbmFyeV9zcGVjIiwic2hvd190cmFuc2l0aW9uYXJ5X3NwZWMiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2Zfc2V4cCIsInhfMjI1Iiwic2V4cF9vZl90cmFuc2l0aW9uYXJ5X3NwZWMiLCJ4XzIyNiIsInRyYW5zaXRpb25hcnlfc3BlY19vZl95b2pzb24iLCJ5b2pzb25fb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwibWFwIiwiZiIsIndyb25nX2ltcGwiLCJwcF9lZHMiLCJzaG93X2VkcyIsImVkc19vZl9zZXhwIiwieF8yMjgiLCJzZXhwX29mX2VkcyIsInhfMjI5IiwiZWRzX29mX3lvanNvbiIsInlvanNvbl9vZl9lZHMiLCJwcF9zdGF0ZSIsInNob3dfc3RhdGUiLCJzdGF0ZV9vZl9zZXhwIiwic2V4cF8yMzEiLCJmaWVsZF9zZXhwc18yMzIiLCJlZHNfMjMzIiwiZHVwbGljYXRlc18yMzUiLCJleHRyYV8yMzYiLCJzZXhwXzIzMSQwIiwiZmllbGRfc2V4cHNfMjM5IiwiZmllbGRfbmFtZV8yMzciLCJ0YWlsXzI0MyIsInhfMjQ0IiwiZmllbGRfc2V4cF8yMzgiLCJmdmFsdWVfMjQwIiwiZWRzXzIzNCIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMjQ2IiwiYXJnXzI0NyIsImJuZHNfMjQ1Iiwic3RhdGVfb2ZfeW9qc29uIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJrZXlfb2Zfc3RhdGUiLCJlZHMiLCJwcF9wZXJzaXN0ZW50X3N0YXRlIiwic2hvd19wZXJzaXN0ZW50X3N0YXRlIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwieF8yNTUiLCJzZXhwXzI1MyIsImFyZzFfMjUwIiwiYXJnMF8yNDkiLCJyZXMwXzI1MSIsInJlczFfMjUyIiwic2V4cF9vZl9wZXJzaXN0ZW50X3N0YXRlIiwieF8yNjAiLCJhcmcxXzI1NyIsImFyZzBfMjU2IiwicmVzMF8yNTgiLCJyZXMxXzI1OSIsInBlcnNpc3RlbnRfc3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJtYWluX2VkaXRvcl9vZl9zdGF0ZSIsInNlbGVjdGlvbiIsImkiLCJwdXRfbWFpbl9lZGl0b3IiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJzdGF0ZSIsImlkeF9vZl9wb3MiLCJwb3MiLCJwb3Nfb2ZfaWR4IiwiaWR4IiwiemlwcGVyX29mX2NvZGUiLCJjb2RlIiwiemlwcGVyIiwidHJhbnNpdGlvbiIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInRlc3RzIiwieW91cl90ZXN0cyQwIiwieW91cl9pbXBsJDAiLCJoaW50IiwiaW1wbCIsImltcGwkMCIsImhpZGRlbl9idWdzJDAiLCJoaW50cyIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiIsImVkc19vZl9zcGVjIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsImluc3RydWN0b3JfbW9kZSIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwid3JhcCIsInRlcm1fb2YiLCJzdGl0Y2gzIiwiZWQxIiwiZWQyIiwiZWQzIiwic3RpdGNoX3Rlcm0iLCJpbnN0cnVjdG9yIiwieW91cl9pbXBsX3Rlcm0iLCJwcmVsdWRlX3Rlcm0iLCJ1c2VyX2ltcGxfdGVybSIsInRlc3RfdmFsaWRhdGlvbl90ZXJtIiwidXNlcl90ZXN0c190ZXJtIiwiaGlkZGVuX3Rlc3RzX3Rlcm0iLCJzdGl0Y2hfdGVybSQwIiwic3RpdGNoX3N0YXRpYyIsInNldHRpbmdzIiwibWsiLCJ0ZXJtX3JhbmdlcyIsImluZm9fbWFwIiwic3RpdGNoX3N0YXRpYyQwIiwiaGlkZGVuX2J1Z3Nfa2V5Iiwia2V5X2Zvcl9zdGF0aWNzIiwic3BsaWNlZF9lbGFicyIsInVzZXJfdGVzdHMiLCJ1c2VyX2ltcGwiLCJlbGFiIiwicyIsImhpZGRlbl9idWciLCJta19zdGF0aWNzIiwic3RpdGNoZWQiLCJlbXB0eSIsInN0YXRpY3Nfb25seSIsInN0aXRjaF9keW5hbWljIiwicmVzdWx0X29mIiwicmVzdWx0cyQwIiwidGVzdF92YWxpZGF0aW9uJDAiLCJ1c2VyX2ltcGwkMCIsInVzZXJfdGVzdHMkMCIsImluc3RydWN0b3IkMCIsInN0YXRpY3NfaXRlbSIsInN0aXRjaF9keW5hbWljJDAiLCJlZGl0b3JfcHAiLCJzZXJpYWxpemF0aW9uIiwiZXhwb3J0X21vZHVsZSIsInJlY29yZCIsImRhdGEiLCJ0cmFuc2l0aW9uYXJ5X2VkaXRvcl9wcCIsImV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSIsImV4cG9ydF9ncmFkaW5nX21vZHVsZSIsImhlYWRlciIsImJsYW5rX3NwZWMiLCJyZXF1aXJlZF90ZXN0cyIsInByb3ZpZGVkX3Rlc3RzIiwibnVtX3dyb25nX2ltcGxzIiwicHBfZXhlcmNpc2VfZXhwb3J0Iiwic2hvd19leGVyY2lzZV9leHBvcnQiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInNleHBfMjYyIiwiZmllbGRfc2V4cHNfMjYzIiwiY3VyX2V4ZXJjaXNlXzI2NCIsImV4ZXJjaXNlX2RhdGFfMjY2IiwiZHVwbGljYXRlc18yNjgiLCJleHRyYV8yNjkiLCJzZXhwXzI2MiQwIiwiZmllbGRfc2V4cHNfMjcyIiwiZmllbGRfbmFtZV8yNzAiLCJ0YWlsXzI4MiIsImZpZWxkX3NleHBfMjcxJDIiLCJmaWVsZF9zZXhwXzI3MSIsInhfMjgzIiwiZmllbGRfc2V4cF8yNzEkMCIsInNleHBfMjc3IiwiYXJnMV8yNzQiLCJhcmcwXzI3MyIsInJlczBfMjc1IiwicmVzMV8yNzYiLCJmdmFsdWVfMjc5IiwiZmllbGRfc2V4cF8yNzEkMSIsImZ2YWx1ZV8yODAiLCJleGVyY2lzZV9kYXRhXzI2NyIsImN1cl9leGVyY2lzZV8yNjUiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMjg3IiwiY3VyX2V4ZXJjaXNlXzI4NSIsImJuZHNfMjg0IiwiYXJnMV8yOTAiLCJhcmcwXzI4OSIsInJlczBfMjkxIiwicmVzMV8yOTIiLCJhcmdfMjg4IiwiYm5kc18yODQkMCIsImFyZ18yODYiLCJibmRzXzI4NCQxIiwiZXhlcmNpc2VfZXhwb3J0X29mX3lvanNvbiIsImN1cl9leGVyY2lzZV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfZmllbGQiLCJleGVyY2lzZV9kYXRhX3ZhbHVlIiwiY3VyX2V4ZXJjaXNlX3ZhbHVlIiwieW9qc29uX29mX2V4ZXJjaXNlX2V4cG9ydCIsInZfZXhlcmNpc2VfZGF0YSIsInZfY3VyX2V4ZXJjaXNlIiwic2VyaWFsaXplX2V4ZXJjaXNlIiwiZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwcF9wZXJjZW50YWdlIiwic2hvd19wZXJjZW50YWdlIiwicGVyY2VudGFnZV9vZl9zZXhwIiwic2V4cF9vZl9wZXJjZW50YWdlIiwicGVyY2VudGFnZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyY2VudGFnZSIsInBwX3BvaW50cyIsInNob3dfcG9pbnRzIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwicHBfc2NvcmUiLCJzaG93X3Njb3JlIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJwZXJjZW50YWdlIiwicmVwb3J0IiwibnVtX3Rlc3RzIiwicmVxdWlyZWQiLCJwcm92aWRlZCIsIm51bV9wYXNzaW5nIiwidGVzdF9zdW1tYXJ5X3N0ciIsImhpZGRlbl9idWdfc3RhdHVzIiwidGVzdF92YWxpZGF0aW9uX2RhdGEiLCJoaWRkZW5fYnVnX2RhdGEiLCJoaWRkZW5fYnVnX2RhdGEkMCIsInRlc3RfdmFsaWRhdGlvbl9kYXRhJDAiLCJ2YWxpZGF0aW9uX3Rlc3RfbWFwIiwiaGlkZGVuX2J1Z190ZXN0X21hcCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwiZm91bmQiLCJtayQwIiwiaGlkZGVuX2J1Z3Nfc3RhdGUiLCJwZXJjZW50YWdlJDAiLCJudW1fcGFzc2VkIiwic3VtbWFyeV9zdHIiLCJ0b3RhbCIsIm1rJDEiLCJoIiwic3ludGF4X3Jlc3VsdHMiLCJyIiwibWskMiIsInRlc3RfcmVzdWx0cyQwIiwic3RhdHVzZXMiLCJoaW50ZWRfcmVzdWx0cyIsInBlcmNlbnRhZ2UkMSIsInN5bnRheF9yZXBvcnQiLCJ0ZXN0X3N1bW1hcnlfc3RyJDAiLCJtayQzIiwic3RpdGNoZWRfZHluYW1pY3MiLCJvdmVyYWxsX3Njb3JlIiwiaW1wbF9ncmFkaW5nX3JlcG9ydCIsIm11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0IiwidGVzdF92YWxpZGF0aW9uX3JlcG9ydCIsInR2X21heCIsInR2X3BvaW50cyIsIm10X21heCIsIm10X3BvaW50cyIsImlnX21heCIsImlnX3BvaW50cyIsInRvdGFsX3BvaW50cyIsIm91dHB1dF9oZWFkZXIiLCJERUJVRyIsIk9NRF9ERUJVRyIsImRlYnVnIiwid2FybiIsIm9wdCIsIm1zZyIsInN0aCIsIndlIiwidHJhY2tmaXgiLCJyYWlzZSIsImUiLCJvZl9saXN0IiwibCIsInIiLCJmc3BsaXRfcmV2IiwiZXhjbCIsImFjY3UiLCJsJDAiLCJ0bCIsInJpZ2h0IiwibGVmdCQwIiwidGwkMCIsImxlZnQiLCJyaWdodCQwIiwibGVmdCQyIiwidGwkMSIsImxlZnQkMSIsImZzcGxpdCIsImYiLCJyZXYiLCJpZF9vZl9zdHJpbmciLCJpZHMiLCJzIiwibiIsIm91dCIsInN0YXJ0ZWQiLCJpIiwiYyIsImkkMiIsImkkMCIsImkkMSIsInMkMCIsImkkNCIsImxhc3RfdHJhaWxpbmciLCJpJDMiLCJodG1sZW50aXRpZXMiLCJtZCIsImIiLCJqJDEiLCJqIiwiaiQwIiwiaiQ0IiwiaiQyIiwiaiQzIiwibWluaW1hbGl6ZV9ibGFua3MiLCJmJDAiLCJlYXQiLCJleHRyYWN0X2h0bWxfYXR0cmlidXRlcyIsImh0bWwiLCJodG1sJDAiLCJjdXRfb25fY2hhcl9mcm9tIiwicmVtb3ZlX3ByZWZpeF9zcGFjZXMiLCJodG1sJDIiLCJyZXMiLCJhZnRlcl9lcSIsIm5hbWUiLCJuYW1lJDAiLCJhZnRlcl9lcSQwIiwicmVzdCIsInZhbHVlIiwibmV3X3MiLCJhIiwicmVzJDAiLCJodG1sJDEiLCJleHRyYWN0X2lubmVyX2h0bWwiLCJwIiwiaHRtbF92b2lkX2VsZW1lbnRzIiwic3ltYm9sIiwibDEiLCJsMiIsInNlbGZfMSIsImxuIiwidGl0bGUiLCJ1cmwiLCJsb29zZV9jb21wYXJlIiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwiZTEiLCJ0bDIkMCIsImUyJDAiLCJ0bDEkMCIsImUxJDAiLCJ0bDIiLCJlMiIsInRsMSIsInRsMiQxIiwiZTIkMSIsInRsMSQxIiwiZTEkMSIsInRsMSQyIiwiYzEiLCJ0bDIkMiIsImMyIiwiaSQ1IiwidGwxJDMiLCJ0aXRsZTEiLCJ0MSQxIiwiaHJlZjEiLCJ0bDIkMyIsInRpdGxlMiIsInQyJDEiLCJocmVmMiIsImkkNiIsImkkNyIsImkkOCIsInRsMiQ0IiwiZmFsbGJhY2syIiwieDIiLCJuYW1lMiIsInJlZl9jb250YWluZXIyIiwidGwxJDQiLCJmYWxsYmFjazEiLCJ4MSIsIm5hbWUxIiwicmVmX2NvbnRhaW5lcjEiLCJlMSQyIiwidGwyJDUiLCJlMiQyIiwidGwxJDUiLCJpJDExIiwiaSQxMiIsImkkOSIsImNmZiIsImkkMTAiLCJsMSQwIiwibDIkMCIsInRsMiQ2IiwiZTIkMyIsInRsMSQ2IiwiZTEkMyIsImkkMTMiLCJzZWxmXzIiLCJlbXB0eV9leHRlbnNpb24iLCJub3JtYWxpc2VfbWQiLCJsb29wIiwidiIsInRsJDIiLCJ2JDAiLCJ0bCQzIiwidiQxIiwidGwkNCIsInYkMiIsInRsJDUiLCJ2JDMiLCJ0bCQ2IiwidiQ0IiwidGwkNyIsInYkNSIsInRsJDEwIiwidGwkOSIsInRsJDgiLCJ0bCQxMSIsInRsJDEyIiwidiQ2IiwidGwkMTMiLCJ2JDciLCJ0bCQxNCIsInYkOCIsInRsJDE1IiwidiQ5IiwidGwkMTYiLCJ2JDEwIiwidGwkMTciLCJ2JDExIiwidGwkMTgiLCJ2JDEyIiwiaHJlZiIsInRsJDE5IiwidiQxMyIsInNlbGZfMyIsInZpc2l0IiwibCQxIiwibCQyIiwibCQzIiwibCQ0IiwibCQ1IiwibCQ2IiwibCQ3IiwibCQ4IiwibCQ5IiwibCQxMCIsImwkMTEiLCJsJDEyIiwibCQxMyIsImwkMTQiLCJsJDE1IiwibCQxNiIsImwkMTciLCJsJDE4IiwibCQxOSIsInRsJDIwIiwibCQyMCIsInRsJDIxIiwibCQyMSIsInRsJDIyIiwibCQyMiIsInRsJDIzIiwibCQyMyIsInRsJDI0IiwibCQyNCIsInRsJDI1IiwibCQyNSIsInRsJDI2IiwibCQyNiIsInRsJDI3IiwibCQyNyIsInRsJDI4IiwibCQyOCIsImRlZmF1bHRfbGFuZ3VhZ2UiLCJ0ZXh0X29mX21kIiwibWQkMCIsInQiLCJtZCQxIiwibWQkMiIsImMkMCIsImJvZHkiLCJib2R5JDAiLCJ0JDAiLCJ0JDEiLCJxIiwiYWx0IiwiaXRlbSIsImRlZmF1bHRfY29kZV9zdHlsaXN0IiwibGFuZyIsImNvZGUiLCJmaWx0ZXJfdGV4dF9vbWRfcmV2IiwicmVtb3ZlX2xpbmtzIiwiaHRtbF9hbmRfaGVhZGVyc19vZl9tZCIsInN0cmluZ19vZl9hdHRycyIsImh0bWxfb2ZfbWQiLCJoZWFkZXJzX29mX21kIiwicmVtb3ZlX2hlYWRlcl9saW5rcyIsInN0aCQwIiwib3ZlcnJpZGUiLCJzdGgkMSIsInBpbmRlbnQiLCJzdGgkMiIsIm5sMmJyIiwic3RoJDMiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJtZCQzIiwibWQkNCIsImUkMiIsIm1kJDUiLCJlJDMiLCJzJDMiLCJpaCQwIiwiaWQkMCIsIm1kJDYiLCJtZCQ3IiwiZSQ0IiwibWQkOCIsImUkNSIsInMkNCIsImloJDEiLCJpZCQxIiwibWQkOSIsIm1kJDEwIiwiZSQ2IiwibWQkMTEiLCJlJDciLCJzJDUiLCJpaCQyIiwiaWQkMiIsIm1kJDEyIiwibWQkMTMiLCJlJDgiLCJtZCQxNCIsImUkOSIsInMkNiIsImloJDMiLCJpZCQzIiwibWQkMTUiLCJtZCQxNiIsImUkMTAiLCJtZCQxNyIsImUkMTEiLCJzJDciLCJpaCQ0IiwiaWQkNCIsIm1kJDE4IiwicyQ4IiwicyQ5IiwicyQxMCIsIm1kJDE5IiwicyQxMSIsIm1kJDIwIiwicyQxMiIsInMkMTQiLCJuZXdfYyIsImxhbmckMCIsInMkMTUiLCJuZXdfYyQwIiwicyQxNiIsInMkMTciLCJzJDE4IiwiZmFsbGJhY2siLCJ0ZXh0IiwicmMiLCJzJDE5IiwidGl0bGUkMCIsImhyZWYkMCIsImZhbGxiYWNrJDAiLCJyYyQwIiwicyQyMCIsInRpdGxlJDEiLCJzcmMiLCJ0YWduYW1lIiwiYXR0cnMkMSIsImF0dHJzJDIiLCJzJDIyIiwiYXR0cnMiLCJhdHRycyQwIiwicyQyMSIsImF0dHJzJDMiLCJ0YWduYW1lJDAiLCJhdHRycyQ0IiwicyQyMyIsInMkMjQiLCJzJDI1IiwicyQyNiIsInMkMjciLCJzJDI4IiwicyQyOSIsInMkMzAiLCJ0aXRsZSQyIiwic3JjJDAiLCJhbHQkMCIsInMkMzEiLCJ4IiwicyQzMiIsInMkMzMiLCJzJDEzIiwibGkiLCJjcyIsInNleHByX29mX21kIiwidGwkMjkiLCJ0bCQzMCIsImVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIiwibWFya2Rvd25fb2ZfbWQiLCJhZGRfc3BhY2VzIiwicmVmZXJlbmNlcyIsImxpc3RfaW5kZW50IiwiZnN0X3BfaW5fbGkiLCJpc19pbl9saXN0IiwibG9vcCQwIiwiZnN0X3BfaW5fbGkkMCIsImlzX2luX2xpc3QkMCIsImMkMSIsImMkMiIsImZpbHRlciIsImIkMSIsImIkMiIsIngkMCIsImhkIiwiYyQzIiwiZmlsdGVyJDAiLCJiJDMiLCJiJDQiLCJoZCQwIiwibiQwIiwib3V0cHV0X2luZGVudGVkX2Jsb2NrIiwicCQwIiwicCQxIiwibmVlZHNfbmV3bGluZXMiLCJhJDAiLCJiJDAiLCJubCIsIngkMSIsInN0cmluZ19vZl90b2tlbiIsIm4kMSIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJuJDE0IiwibiQxNSIsIm4kMTYiLCJuJDE3IiwibiQxOCIsIm4kMTkiLCJuJDIwIiwibiQyMSIsIm4kMjIiLCJuJDIzIiwibiQyNCIsIm4kMjUiLCJuJDI2IiwibiQyNyIsIm4kMjgiLCJuJDI5IiwibiQzMCIsIm4kMzEiLCJuJDMyIiwibiQzMyIsIm8iLCJsZW5ndGgiLCJzcGxpdF9maXJzdCIsImxleCIsInJlc3VsdCIsIndvcmQiLCJzdGFydCIsIm5fb2NjIiwiciQwIiwicm4iLCJ3IiwiZ2V0IiwibGVuZ3RoJDAiLCJzdWIiLCJhcnIiLCJwb3MiLCJsZW4iLCJsZXhfYmlnYXJyYXkiLCJtYWtlX3NwYWNlIiwic3RyaW5nX29mX3Rva2VucyIsImRlc3RyaW5nX29mX3Rva2VucyIsInRsaXN0IiwibGltaXQiLCJ0bGlzdCQwIiwidGxpc3QkMSIsInByZXZpb3VzIiwicHJldmlvdXMkMTEiLCJwcmV2aW91cyQxMCIsInByZXZpb3VzJDEzIiwicHJldmlvdXMkMTIiLCJwcmV2aW91cyQxNSIsInByZXZpb3VzJDE0IiwicHJldmlvdXMkMTciLCJwcmV2aW91cyQxNiIsInByZXZpb3VzJDE5IiwicHJldmlvdXMkMTgiLCJwcmV2aW91cyQyMSIsInByZXZpb3VzJDIwIiwicHJldmlvdXMkMjMiLCJwcmV2aW91cyQyMiIsInByZXZpb3VzJDI1IiwicHJldmlvdXMkMjQiLCJwcmV2aW91cyQyNyIsInByZXZpb3VzJDI2IiwicHJldmlvdXMkMjkiLCJwcmV2aW91cyQyOCIsInByZXZpb3VzJDMxIiwicHJldmlvdXMkMzAiLCJwcmV2aW91cyQzMyIsInByZXZpb3VzJDMyIiwicHJldmlvdXMkMzUiLCJwcmV2aW91cyQzNCIsInByZXZpb3VzJDM3IiwicHJldmlvdXMkMzYiLCJwcmV2aW91cyQzOSIsInByZXZpb3VzJDM4IiwicHJldmlvdXMkNDEiLCJwcmV2aW91cyQ0MCIsInByZXZpb3VzJDQzIiwicHJldmlvdXMkNDIiLCJwcmV2aW91cyQ5IiwicHJldmlvdXMkNDQiLCJwcmV2aW91cyQ0OCIsInByZXZpb3VzJDQ5IiwicHJldmlvdXMkNyIsInByZXZpb3VzJDYiLCJwcmV2aW91cyQ4IiwicHJldmlvdXMkNSIsInByZXZpb3VzJDQiLCJwcmV2aW91cyQzIiwicHJldmlvdXMkMiIsInByZXZpb3VzJDAiLCJwcmV2aW91cyQxIiwicHJldmlvdXMkNDciLCJwcmV2aW91cyQ0NiIsInByZXZpb3VzJDQ1IiwiaW5kZW50cyQxIiwiaW5kZW50cyQwIiwiaW5kZW50cyQyIiwiaW5kZW50cyIsImRlZmF1bHRfbGFuZyIsImV4dGVuc2lvbnMiLCJnaF91ZW1waF9vcl9ib2xkX3N0eWxlIiwiYmxpbmRfaHRtbCIsInN0cmljdF9odG1sIiwid2Fybl9lcnJvciIsImh0bWxjb2Rlc19zZXQiLCJpbmxpbmVfaHRtbHRhZ3Nfc2V0Iiwibm90aW5ib2R5dGFncyIsImh0bWx0YWdzX3NldCIsImZpeCIsImFjY3UkMCIsInRsJDMxIiwidGwkMzIiLCJ0bCQzMyIsInRsJDM0IiwidGwkMzUiLCJ0bCQzNiIsInRsJDM3IiwidGwkMzgiLCJ0bCQzOSIsInRsJDQwIiwidGwkNDEiLCJ0bCQ0MiIsInRsJDQzIiwidGwkNDQiLCJ0bCQ0NSIsInRsJDQ2IiwidGwkNDciLCJ0bCQ0OCIsInRsJDQ5IiwidGwkNTAiLCJ0bCQ1MSIsInRsJDUyIiwidGwkNTMiLCJ0bCQ1NCIsInRsJDU1IiwidGwkNTYiLCJ0bCQ1NyIsInRsJDU4IiwidGwkNTkiLCJ0bCQ2MCIsInRsJDYxIiwidGwkNjIiLCJ0bCQ2MyIsInRsJDY0IiwidGwkNjUiLCJ0bCQ2NiIsInRsJDY3IiwidGwkNjgiLCJ0bCQ2OSIsIm4kMzQiLCJ0bCQ3MCIsInRsJDcxIiwibiQzNSIsInRsJDcyIiwidGwkNzMiLCJuJDM2IiwidGwkNzQiLCJ0bCQ3NSIsIm4kMzciLCJ0bCQ3NiIsInRsJDc3IiwibiQzOCIsInRsJDc4IiwidGwkNzkiLCJuJDM5IiwidGwkODAiLCJ0bCQ4MSIsIm4kNDAiLCJ0bCQ4MiIsInRsJDgzIiwiYiQ1IiwibiQ0MSIsInRsJDg0IiwidGwkODUiLCJiJDYiLCJuJDQyIiwidGwkODYiLCJ0bCQ4NyIsImIkNyIsIm4kNDMiLCJ0bCQ4OCIsInRsJDg5IiwiYiQ4IiwibiQ0NCIsInRsJDkwIiwidGwkOTEiLCJiJDkiLCJuJDQ1IiwidGwkOTIiLCJ0bCQ5MyIsImIkMTAiLCJuJDQ2IiwidGwkOTQiLCJ0bCQ5NSIsImIkMTEiLCJuJDQ3IiwidGwkOTYiLCJ0bCQ5NyIsImIkMTIiLCJuJDQ4IiwidGwkOTgiLCJ0bCQ5OSIsImIkMTMiLCJuJDQ5IiwidGwkMTAwIiwidGwkMTAxIiwiYiQxNCIsIm4kNTAiLCJ0bCQxMDIiLCJ0bCQxMDMiLCJiJDE1IiwibiQ1MSIsInRsJDEwNCIsInRsJDEwNSIsImIkMTYiLCJuJDUyIiwidGwkMTA2IiwidGwkMTA3IiwiYiQxNyIsIm4kNTMiLCJ0bCQxMDgiLCJ0bCQxMDkiLCJiJDE4IiwibiQ1NCIsInRsJDExMCIsInRsJDExMSIsImIkMTkiLCJuJDU1IiwidGwkMTEyIiwidGwkMTEzIiwiYiQyMCIsIm4kNTYiLCJ0bCQxMTQiLCJ0bCQxMTUiLCJiJDIxIiwibiQ1NyIsInRsJDExNiIsInRsJDExNyIsImIkMjIiLCJuJDU4IiwidGwkMTE4IiwidGwkMTE5IiwiYiQyMyIsIm4kNTkiLCJ0bCQxMjAiLCJ0bCQxMjEiLCJiJDI0IiwibiQ2MCIsInRsJDEyMiIsInRsJDEyMyIsImIkMjUiLCJuJDYxIiwidGwkMTI0IiwidGwkMTI1IiwiYiQyNiIsIm4kNjIiLCJ0bCQxMjYiLCJ0bCQxMjciLCJiJDI3IiwibiQ2MyIsInRsJDEyOCIsInRsJDEyOSIsImIkMjgiLCJuJDY0IiwidGwkMTMwIiwidGwkMTMxIiwiYiQyOSIsIm4kNjUiLCJ0bCQxMzIiLCJ0bCQxMzMiLCJiJDMwIiwibiQ2NiIsInRsJDEzNCIsInRsJDEzNSIsImIkMzEiLCJuJDY3IiwidGwkMTM2IiwidGwkMTM3IiwiYiQzMiIsIm4kNjgiLCJ0bCQxMzgiLCJ0bCQxMzkiLCJiJDMzIiwicmVtb3ZlX2luaXRpYWxfbmV3bGluZXMiLCJtYWtlX3BhcmFncmFwaHMiLCJjcCQwIiwiY3AkNSIsImFjY3UkMTciLCJiMSIsImIyIiwiY2xlYW5fcGFyYWdyYXBocyIsImFzc2VydF93ZWxsX2Zvcm1lZCIsImV4dHJhY3RfZmFsbGJhY2siLCJtYWluX2xvb3AiLCJyZW1haW5zIiwiciQxIiwiYWNjdSQyIiwiciQyIiwibSIsImFjY3UkMyIsInVuaW5kZW50X3JldiIsImxleGVtZXMiLCJjbCQwIiwieSIsInVuaW5kZW50Iiwic25kIiwiZnN0IiwiaXNfYmxhbmsiLCJzZW1waF9vcl9ib2xkIiwic21fdWVtcGhfb3JfYm9sZCIsImdoX3VlbXBoX29yX2JvbGQiLCJ1ZW1waF9vcl9ib2xkIiwiZWF0X2JsYW5rIiwic2V0ZXh0X3RpdGxlIiwiZGV0ZWN0X2JhbGFuY2VkX2JxcyIsInIkMyIsInIkNCIsInIkNSIsInIkNiIsInIkNyIsImJsIiwiYmwkMCIsInRhZ19tYXliZV9oMSIsInRhZ19tYXliZV9oMiIsInRhZ19tZCIsInNlbGZfNCIsInRhZ19zZXRleHQiLCJwbCQwIiwicmxlZnQkMCIsInJpZ2h0JDEiLCJyaWdodCQyIiwicmxlZnQiLCJocl9tIiwiaHJfcyIsImhyIiwiYmNvZGUiLCJkZWZhdWx0X2xhbmckMCIsImFjY3UkMSIsImNiIiwiY29kZSQwIiwiY29kZSQyIiwiY29kZSQzIiwiY29kZSQxIiwiY2xlYW5fYmNvZGUiLCJjb2RlJDQiLCJyZWFkX3VudGlsX2d0IiwiYnEiLCJub19ubCIsImFjY3UkMTkiLCJhY2N1JDIwIiwieCQyIiwicmVhZF91bnRpbF9sdCIsImFjY3UkMTYiLCJyZWFkX3VudGlsX2NwYXJlbnRoIiwicmVhZF91bnRpbF9vcGFyZW50aCIsInJlYWRfdW50aWxfZHEiLCJyZWFkX3VudGlsX3EiLCJyZWFkX3VudGlsX29icmFja2V0IiwicmVhZF91bnRpbF9jYnJhY2tldCIsInJlYWRfdW50aWxfc3BhY2UiLCJyZWFkX3VudGlsX25ld2xpbmUiLCJyZWFkX3RpdGxlIiwiaCIsImgkMCIsIm1heWJlX2V4dGVuc2lvbiIsIm5wIiwibnIiLCJrIiwiZW1haWxzdHlsZV9xdW90aW5nIiwiYmxvY2skMCIsImNsJDIiLCJibG9jayIsIm1heWJlX3JlZmVyZW5jZSIsIm1heWJlX2RlZiIsInJlbWFpbnMkMCIsInJlbWFpbnMkMSIsInJlbWFpbnMkMiIsInVybCQwIiwidXJsJDEiLCJibGFuayIsImZsYWciLCJyZW1haW5zJDMiLCJ0ZXh0JDAiLCJmYWxsYmFjayQxIiwibWF5YmVfbGluayIsInJlYWRfdXJsIiwicl9jcCIsImxfY3AiLCJyX2RxIiwibF9kcSIsInJlc3QkMCIsImhhc19wYXJhZ3JhcGhzIiwicGFyc2VfbGlzdCIsImVuZF9vZl9pdGVtIiwic2VsZl82Iiwic2VsZl81IiwiYmxvY2skNSIsInJlc3QkNiIsImJsb2NrJDYiLCJyZXN0JDciLCJibG9jayQ3IiwicmVzdCQ1IiwiYmxvY2skOCIsInJlc3QkOSIsImJsb2NrJDkiLCJyZXN0JDEwIiwiYmxvY2skMTAiLCJyZXN0JDgiLCJyZXN0JDEiLCJibG9jayQxIiwiYmxvY2skMiIsInJlc3QkMyIsImJsb2NrJDMiLCJyZXN0JDQiLCJibG9jayQ0IiwicmVzdCQyIiwicmV2X3RvX3QiLCJhZGQiLCJzdWJsaXN0IiwiaXRlbXMiLCJpdGVtJDAiLCJtYWtlX3VwIiwiaXRlbXMkMCIsImxpc3RfaXRlbXMiLCJpbmRlbnRzJDMiLCJpbmRlbnRzJDQiLCJuZXdfaXRlbSQwIiwicCQyIiwiaXRlbXMkNSIsIml0ZW1zJDMiLCJpdGVtcyQ0IiwibmV3X2l0ZW0kMSIsInAkMyIsIml0ZW1zJDgiLCJpdGVtcyQ2Iiwic3VibGlzdCQwIiwiaXRlbXMkNyIsIm5ld19pdGVtIiwiaXRlbXMkMSIsIml0ZW1zJDIiLCJuZXdfaXRlbSQyIiwicCQ0IiwiaXRlbXMkOSIsIml0ZW1zJDEwIiwibmV3X2l0ZW0kMyIsInAkNSIsIml0ZW1zJDExIiwic3VibGlzdCQxIiwiaXRlbXMkMTIiLCJpdGVtcyQxMyIsImluZGVudHMkNSIsIm5ld19pdGVtJDQiLCJwJDYiLCJpdGVtcyQxNCIsInN1Ymxpc3QkMiIsIml0ZW1zJDE1IiwiaXRlbXMkMTYiLCJpbmRlbnRzJDYiLCJzdHJpbmdfb2ZfaXRlbXMiLCJpbmRlbnQkMCIsInJwIiwiaWNvZGUiLCJzZWxmXzciLCJkdW1teV90YWciLCJzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUiLCJzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW4iLCJuZXdsaW5lcyIsIm1heWJlX2F1dG9lbWFpbCIsImRvbWFpbiIsImVtYWlsIiwiaXNfaGV4IiwibWVkaWF0eXBldGV4dG9tZCIsIm1haW5faW1wbF9yZXYiLCJwcmV2aW91cyQ1MCIsInByZXZpb3VzJDUxIiwibGV4ZW1lcyQwIiwibGV4ZW1lcyQxIiwibGV4ZW1lcyQyIiwicHJldmlvdXMkNTIiLCJsZXhlbWVzJDMiLCJwcmV2aW91cyQ1MyIsImxleGVtZXMkNCIsInByZXZpb3VzJDU0IiwidyQwIiwibGV4ZW1lcyQ1IiwicHJldmlvdXMkNTUiLCJsZXhlbWVzJDYiLCJwcmV2aW91cyQ1NiIsInIkOCIsImxleGVtZXMkNyIsInByZXZpb3VzJDU3IiwiciQ5IiwidyQxIiwibGV4ZW1lcyQ4IiwiciQxMyIsInByZXZpb3VzJDU4IiwiciQxMCIsImxleGVtZXMkOSIsInByZXZpb3VzJDU5IiwiciQxMSIsImxleGVtZXMkMTAiLCJwcmV2aW91cyQ2MCIsInIkMTIiLCJsZXhlbWVzJDYxIiwiciQxMTYiLCJ0JDMiLCJsZXhlbWVzJDYyIiwicHJldmlvdXMkMTA3IiwiciQ2NSIsImxleGVtZXMkNjMiLCJwcmV2aW91cyQxMDgiLCJyJDY2IiwibGV4ZW1lcyQ2NCIsInByZXZpb3VzJDEwOSIsInIkNjciLCJsZXhlbWVzJDY1IiwicHJldmlvdXMkMTEwIiwiciQ2OCIsImxleGVtZXMkNjYiLCJwcmV2aW91cyQxMTEiLCJyJDY5IiwibGV4ZW1lcyQ2NyIsInByZXZpb3VzJDExMiIsInIkNzAiLCJsZXhlbWVzJDY4IiwicHJldmlvdXMkMTEzIiwiciQ3MSIsImxleGVtZXMkNjkiLCJwcmV2aW91cyQxMTQiLCJyJDcyIiwibGV4ZW1lcyQ3MCIsInByZXZpb3VzJDExNSIsInIkNzMiLCJsZXhlbWVzJDcxIiwicHJldmlvdXMkMTE2IiwiciQ3NCIsImxleGVtZXMkNzIiLCJwcmV2aW91cyQxMTciLCJyJDc1IiwibGV4ZW1lcyQ3MyIsInByZXZpb3VzJDExOCIsInIkNzYiLCJsZXhlbWVzJDc0IiwicHJldmlvdXMkMTE5IiwiciQ3NyIsImxleGVtZXMkNzUiLCJwcmV2aW91cyQxMjAiLCJyJDc4IiwibGV4ZW1lcyQ3NiIsInByZXZpb3VzJDEyMSIsInIkNzkiLCJsZXhlbWVzJDc3IiwicHJldmlvdXMkMTIyIiwiciQ4MCIsImxleGVtZXMkNzgiLCJwcmV2aW91cyQxMjMiLCJyJDgxIiwibGV4ZW1lcyQ3OSIsInIkODIiLCJsZXhlbWVzJDgwIiwiciQ4MyIsImxleGVtZXMkODEiLCJyJDg0IiwibGV4ZW1lcyQ4MiIsInIkODUiLCJsZXhlbWVzJDgzIiwiciQ4NiIsImxleGVtZXMkODQiLCJyJDg3IiwibGV4ZW1lcyQ4NSIsInIkODgiLCJsZXhlbWVzJDg2IiwiciQ4OSIsImxleGVtZXMkODciLCJyJDkwIiwibGV4ZW1lcyQ4OCIsInIkOTEiLCJsZXhlbWVzJDg5IiwiciQ5MiIsImxleGVtZXMkOTAiLCJyJDkzIiwibGV4ZW1lcyQ5MSIsInIkOTQiLCJsZXhlbWVzJDkyIiwiciQ5NSIsImxleGVtZXMkOTMiLCJyJDk2IiwibGV4ZW1lcyQ5NCIsInIkOTciLCJsZXhlbWVzJDk1IiwiciQ5OCIsImxleGVtZXMkOTYiLCJyJDk5IiwibGV4ZW1lcyQ5NyIsInIkMTAwIiwibGV4ZW1lcyQ5OCIsInIkMTAxIiwibGV4ZW1lcyQ5OSIsInIkMTAyIiwibGV4ZW1lcyQxMDAiLCJyJDEwMyIsImxleGVtZXMkMTAxIiwiciQxMDQiLCJsZXhlbWVzJDEwMiIsInIkMTA1IiwibGV4ZW1lcyQxMDMiLCJyJDEwNiIsImxleGVtZXMkMTA0IiwiciQxMDciLCJsZXhlbWVzJDEwNSIsInIkMTA4IiwibGV4ZW1lcyQxMDYiLCJyJDEwOSIsImxleGVtZXMkMTA3IiwiciQxMTAiLCJsZXhlbWVzJDEwOCIsInIkMTExIiwibGV4ZW1lcyQxMDkiLCJyJDExMiIsImxleGVtZXMkMTEwIiwiciQxMTMiLCJsZXhlbWVzJDExMSIsInIkMTE0IiwibGV4ZW1lcyQxMTIiLCJyJDExNSIsInIkNjQiLCJsZXhlbWVzJDExMyIsImxleGVtZXMkMTE0IiwicHJldmlvdXMkMTI0IiwiciQxMTciLCJwcmV2aW91cyQxMjUiLCJyJDExOCIsImxleGVtZXMkMTE5IiwiZyIsImxleGVtZXMkMTIzIiwiY29tbWVudHMiLCJyJDEzMiIsImxleGVtZXMkMTI0IiwicHJldmlvdXMkMTMyIiwiciQxMzMiLCJwcmV2aW91cyQxMzMiLCJyJDEzNCIsInckNSIsInckNiIsImxleGVtZXMkMTI1IiwiZyQwIiwibGV4ZW1lcyQxMjYiLCJyJDEzNiIsImxleGVtZXMkMTI3IiwiciQxMzciLCJyJDEzNSIsImxleGVtZXMkMTI4IiwiciQxMzgiLCJsZXhlbWVzJDEyOSIsImxleGVtZXMkMTMwIiwicHJldmlvdXMkMTM0IiwiciQxMzkiLCJsZXhlbWVzJDEzMSIsInByZXZpb3VzJDEzNSIsInIkMTQwIiwibGV4ZW1lcyQxMzIiLCJwcmV2aW91cyQxMzYiLCJyJDE0MSIsInByZXZpb3VzJDEzNyIsInIkMTQyIiwibGV4ZW1lcyQxMzMiLCJsZXhlbWVzJDEzNCIsIngkMyIsInByZXZpb3VzJDEzOCIsInIkMTQzIiwibWFpbl9pbXBsIiwibGV4ZW1lcyQxMzUiLCJwcmV2aW91cyQxMzkiLCJyJDE0NCIsInByZXZpb3VzJDE0MCIsInIkMTQ1IiwibGV4ZW1lcyQxMzYiLCJyJDE0NiIsImxleGVtZXMkMTM3IiwiciQxNDciLCJsZXhlbWVzJDEzOCIsInByZXZpb3VzJDE0MSIsInIkMTQ4IiwibGV4ZW1lcyQxMzkiLCJwcmV2aW91cyQxNDIiLCJyJDE0OSIsImxleGVtZXMkMTQwIiwicHJldmlvdXMkMTQzIiwiciQxNTAiLCJsZXhlbWVzJDE0MSIsInIkMTUxIiwibGV4ZW1lcyQxNDIiLCJsZXhlbWVzJDE0MyIsIngkNCIsInByZXZpb3VzJDE0NCIsInIkMTUyIiwicHJldmlvdXMkMTQ1IiwiciQxNTMiLCJsZXhlbWVzJDE0NCIsInByZXZpb3VzJDE0NiIsInIkMTU0IiwicHJldmlvdXMkMTQ3IiwiciQxNTUiLCJsZXhlbWVzJDE0NSIsInckNyIsInByZXZpb3VzJDE0OCIsInIkMTU2IiwibGV4ZW1lcyQxNDYiLCJsZXhlbWVzJDE0NyIsInByZXZpb3VzJDE0OSIsInIkMTU3IiwibGV4ZW1lcyQ1OCIsImxleGVtZXMkNTkiLCJwcmV2aW91cyQxMDQiLCJyJDYxIiwibGV4ZW1lcyQ2MCIsInByZXZpb3VzJDEwNSIsInIkNjIiLCJwcmV2aW91cyQxMDYiLCJyJDYzIiwidyQ0IiwibGV4ZW1lcyQxMjAiLCJ1cmwkMiIsImxleGVtZXMkMTIyIiwicHJldmlvdXMkMTMwIiwiciQxMzAiLCJwcmV2aW91cyQxMzEiLCJyJDEzMSIsImxleGVtZXMkMTIxIiwidXJsJDMiLCJyJDEyOCIsInIkMTI5IiwibGV4ZW1lcyQxMTUiLCJsZXhlbWVzJDExNiIsInIkMTIxIiwidGxzIiwibGV4ZW1lcyQxMTciLCJwcmV2aW91cyQxMjYiLCJyJDExOSIsInByZXZpb3VzJDEyNyIsInIkMTIwIiwibnRsJDAiLCJudGwkMSIsImFsdCQyIiwiYWx0JDEiLCJyJDEyNyIsIm50bCIsInBhdGhfdGl0bGUiLCJwYXRoIiwibm90aGluZyIsInIkMTI1IiwicGF0aCQwIiwidGl0bGUkMyIsInIkMTI0IiwiciQxMjYiLCJsZXhlbWVzJDExOCIsInByZXZpb3VzJDEyOCIsInIkMTIyIiwicHJldmlvdXMkMTI5IiwiciQxMjMiLCJzcCIsImxleGVtZXMkMzciLCJwcmV2aW91cyQ4OCIsInIkNDMiLCJsZXhlbWVzJDM4IiwicHJldmlvdXMkODkiLCJyJDQ0IiwibGV4ZW1lcyQ0NSIsInByZXZpb3VzJDk1IiwibGV4ZW1lcyQ0NyIsImxleGVtZXMkNTEiLCJyJDU2IiwibGV4ZW1lcyQ1MiIsInByZXZpb3VzJDk5IiwibGV4ZW1lcyQ0OCIsInIkNTIiLCJsZXhlbWVzJDQ5IiwicHJldmlvdXMkOTYiLCJyJDUzIiwibGV4ZW1lcyQ1MCIsInByZXZpb3VzJDk3IiwiciQ1NCIsInByZXZpb3VzJDk4IiwiciQ1NSIsImxleGVtZXMkNTMiLCJ0dGwiLCJsZXhlbWVzJDU0IiwicHJldmlvdXMkMTAwIiwiciQ1NyIsInByZXZpb3VzJDEwMSIsInIkNTgiLCJsZXhlbWVzJDU1IiwicHJldmlvdXMkMTAyIiwiciQ1OSIsImxleGVtZXMkNTYiLCJwcmV2aW91cyQxMDMiLCJsZXhlbWVzJDU3IiwiciQ2MCIsImxleGVtZXMkMzkiLCJsZXhlbWVzJDQyIiwiciQ0OCIsImxleGVtZXMkNDMiLCJwcmV2aW91cyQ5MiIsImxleGVtZXMkNDQiLCJwcmV2aW91cyQ5MyIsInIkNDkiLCJwcmV2aW91cyQ5NCIsInIkNTAiLCJsZXhlbWVzJDQwIiwiciQ0NSIsImxleGVtZXMkNDEiLCJwcmV2aW91cyQ5MCIsInIkNDYiLCJwcmV2aW91cyQ5MSIsInIkNDciLCJmb28kMSIsImxleGVtZXMkNDYiLCJmb28kMCIsImZvbyIsIm5ld19yIiwiciQ1MSIsImxleGVtZXMkMzUiLCJyJDQxIiwibGV4ZW1lcyQzNiIsInByZXZpb3VzJDg3IiwiciQ0MiIsInRrIiwibGV4ZW1lcyQzMCIsImxleGVtZXMkMzEiLCJwcmV2aW91cyQ4MSIsInIkMzUiLCJwcmV2aW91cyQ4MiIsInIkMzYiLCJsZXhlbWVzJDMyIiwibGV4ZW1lcyQzMyIsInByZXZpb3VzJDgzIiwiciQzNyIsInByZXZpb3VzJDg0IiwiciQzOCIsImxleGVtZXMkMzQiLCJwcmV2aW91cyQ4NSIsInIkMzkiLCJwcmV2aW91cyQ4NiIsInIkNDAiLCJsZXhlbWVzJDI4IiwicHJldmlvdXMkNzkiLCJyJDMzIiwidGtzIiwidGswIiwidGV4dCQxIiwibGV4ZW1lcyQyOSIsInByZXZpb3VzJDgwIiwiciQzNCIsImxleGVtZXMkMjUiLCJsZXhlbWVzJDI2IiwicHJldmlvdXMkNzYiLCJyJDMwIiwibGV4ZW1lcyQyNyIsInByZXZpb3VzJDc3IiwiciQzMSIsInByZXZpb3VzJDc4IiwiciQzMiIsImxleGVtZXMkMjAiLCJsZXhlbWVzJDIxIiwicHJldmlvdXMkNzEiLCJyJDI1IiwicHJldmlvdXMkNzIiLCJyJDI2IiwibGV4ZW1lcyQyMiIsImxleGVtZXMkMjMiLCJwcmV2aW91cyQ3MyIsInIkMjciLCJwcmV2aW91cyQ3NCIsInIkMjgiLCJsZXhlbWVzJDI0IiwicHJldmlvdXMkNzUiLCJyJDI5IiwibGV4ZW1lcyQxMSIsInckMiIsImh0bWxfc3R1ZmYiLCJ0YWduYW1ldG9wIiwibWRfb2ZfaW50ZXJtX2xpc3QiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwibG9vcCQyIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsIm1kX29mX2ludGVybV9saXN0JDEiLCJtZF9vZl9pbnRlcm1fbGlzdCQwIiwic3RyaW5nX29mX3RhZ3N0YXR1cyQwIiwiYWRkX3Rva2VuX3RvX2JvZHkiLCJsb29wJDEiLCJ0JDYiLCJkZWxpbWl0ZXIiLCJiZWZvcmUiLCJ0YWduYW1lJDIiLCJsZXhlbWVzJDE4IiwiaCQxIiwicHJldmlvdXMkNjciLCJyJDIxIiwicHJldmlvdXMkNjgiLCJyJDIyIiwibGV4ZW1lcyQxMiIsImxleGVtZXMkMTMiLCJwcmV2aW91cyQ2MSIsInIkMTQiLCJsZXhlbWVzJDE0IiwicHJldmlvdXMkNjIiLCJyJDE1IiwicHJldmlvdXMkNjMiLCJyJDE2IiwibWFpbl9sb29wX3JldiIsIm1haW5fcGFyc2UiLCJwYXJzZSIsImRlZmF1bHRfcGFyc2UiLCJkIiwid2FybmluZyIsImxleF9mcm9tX2luY2hhbm5lbCIsImljIiwiaWNfY29udGVudCIsInRvX3N0cmluZyIsInBwIiwiYXR0cmlidXRlcyIsIm5vZGVuYW1lIiwib2ZfaW5wdXQiLCJvZl9zdHJpbmciLCJvZl9iaWdhcnJheSIsInNldF9kZWZhdWx0X2xhbmciLCJ0JDciLCJ0JDgiLCJ0JDkiLCJ0JDEwIiwidCQxMSIsInQkMTIiLCJ0JDEzIiwiZmluZF9zdGFydCQwIiwibGV2ZWwiLCJudW1iZXIiLCJzdWJzZWN0aW9ucyIsImRlYWxfd2l0aF9oZWFkZXIiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJmaW5kX3N0YXJ0IiwibWFrZV90b2MkMCIsIm1pbl9sZXZlbCIsIm1heF9sZXZlbCIsInRvY19lbnRyeSIsIm1ha2VfdG9jIiwic3ViX3RvYyIsInRvYyIsInN1Yl90b2MkMCIsInRvYyQwIiwiZGVwdGgiLCJoZWFkZXJzJDAiLCJlcnJvcl9zb3VyY2VfMDA5IiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAyMiIsInRwX2xvYyQwIiwiZXJyb3Jfc291cmNlXzAzNSIsInRwX2xvYyQxIiwia2V5X29mX3NleHAiLCJzZXhwX29mX2tleSIsImtleV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfa2V5IiwicHBfdmFsdWUiLCJzaG93X3ZhbHVlIiwiZm10IiwieCIsInZhbHVlX29mX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwidmFsdWVfb2ZfeW9qc29uIiwieW9qc29uX29mX3ZhbHVlIiwicHAiLCJzaG93Iiwic2VwIiwiYTEiLCJhMCIsInRfb2Zfc2V4cCIsInhfMDEwIiwic2V4cF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsInNleHBfb2ZfdCIsInhfMDE1IiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDEzIiwicmVzMV8wMTQiLCJ0X29mX3lvanNvbiIsInQiLCJ5b2pzb24iLCJ2MSIsInYwIiwidjAkMCIsInYxJDAiLCJ5b2pzb25fb2ZfdCIsInYiLCJzZXJpYWxpemUiLCJwcm9ncmFtIiwiZGVzZXJpYWxpemUiLCJzZXhwIiwicHBfdmFsdWUkMCIsInNob3dfdmFsdWUkMCIsInZhbHVlX29mX3NleHAkMCIsInhfMDIzIiwic2V4cF8wMjEiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMF8wMTkiLCJyZXMxXzAyMCIsInNleHBfb2ZfdmFsdWUkMCIsInhfMDI4IiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJ2YWx1ZV9vZl95b2pzb24kMCIsInlvanNvbl9vZl92YWx1ZSQwIiwicHAkMCIsInNob3ckMCIsInRfb2Zfc2V4cCQwIiwieF8wMzYiLCJzZXhwXzAzNCIsImFyZzFfMDMxIiwiYXJnMF8wMzAiLCJyZXMwXzAzMiIsInJlczFfMDMzIiwic2V4cF9vZl90JDAiLCJ4XzA0MSIsImFyZzFfMDM4IiwiYXJnMF8wMzciLCJyZXMwXzAzOSIsInJlczFfMDQwIiwidF9vZl95b2pzb24kMCIsInlvanNvbl9vZl90JDAiLCJzZXJpYWxpemUkMCIsInIiLCJkZXNlcmlhbGl6ZSQwIiwid29yayIsInJlcyIsImV4biQwIiwiZXhuIiwicmVhc29uIiwicmVzdWx0Iiwic3RhdGUiLCJvbl9yZXF1ZXN0IiwicmVxIiwiayIsInN0YXJ0IiwibmFtZSIsInRpbWVvdXREdXJhdGlvbiIsImluaXRXb3JrZXIiLCJ3b3JrZXJSZWYiLCJ0aW1lb3V0SWQiLCJyZXN0YXJ0X3dvcmtlciIsInJlcXVlc3QiLCJyZXEiLCJoYW5kbGVyIiwidGltZW91dCIsInNldHVwV29ya2VyTWVzc2FnZUhhbmRsZXIiLCJldnQiLCJpZCIsIm9uVGltZW91dCIsImJ1dHRvbiIsIm9wdCIsImljb24iLCJhY3Rpb24iLCJzdGgiLCJ0b29sdGlwIiwiYnV0dG9uX25hbWVkIiwiYnV0dG9uX2QiLCJsaW5rIiwidXJsIiwidG9nZ2xlIiwibGFiZWwiLCJhY3RpdmUiLCJ0b2dnbGVfbmFtZWQiLCJmaWxlX3NlbGVjdF9idXR0b24iLCJvbl9pbnB1dCIsImZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZCIsIm1rIiwiYyIsIm1rJDAiLCJpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW0iLCJpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb24iLCJ4IiwibWskMSIsImdldCIsInQiLCJrIiwibWFwIiwic2V0IiwidiIsIm1rX3NlY29uZGFyeSIsImNvbnRlbnQiLCJta190aWxlIiwiZm9ybSIsImNoaWxkcmVuIiwiaSIsIm1rX2FuY2VzdG9yIiwibCIsIm1rX21vbm90aWxlIiwiaW50JDAiLCJuIiwiZXhwIiwicGF0IiwibWtfZnVuIiwibWtfZnVuX2FuY2VzdG9yIiwibWtfcGFyZW5zX2FuY2VzdG9yIiwibWtfbGV0X2FuY2VzdG9yIiwicGx1cyIsImxfc2libGluZyIsInJfc2libGluZyIsImFuY2VzdG9ycyIsImJhY2twYWNrIiwiemlwcGVyIiwiY29uc19leHAiLCJsaXN0X2NvbmNhdF9leHAiLCJjb25zX3BhdCIsInNlcSIsImV4cCQwIiwicGF0JDAiLCJ0eXAiLCJ0cGF0IiwidHlwX3BhdF92YXIiLCJta19wYXJlbnNfZXhwIiwibWtfcGFyZW5zX3BhdCIsIm1rX3BhcmVuc190eXAiLCJta19saXN0X2V4cCIsIm1rX2xpc3RfcGF0IiwibWtfbGlzdF90eXAiLCJta19mb3JhbGwiLCJta19yZWMiLCJhcnJvdyIsInVuYXJ5X21pbnVzIiwidW5hcnlfbm90IiwicGx1cyQwIiwibWludXMiLCJ0aW1lcyIsInBvd2VyIiwiZGl2aWRlIiwiZXF1YWxzIiwibm90X2VxdWFscyIsImx0IiwibHRlIiwiZ3QiLCJndGUiLCJmcGx1cyIsImZtaW51cyIsImZ0aW1lcyIsImZwb3dlciIsImZkaXZpZGUiLCJmZXF1YWxzIiwiZm5vdF9lcXVhbHMiLCJmbHQiLCJmbHRlIiwiZmd0IiwiZmd0ZSIsInNlcXVhbHMiLCJzY29uY2F0IiwibG9naWNhbF9hbmQiLCJsb2dpY2FsX29yIiwiY29tbWFfZXhwIiwiY29tbWFfcGF0IiwiY29tbWFfdHlwIiwicGlwZWxpbmUiLCJuaWwiLCJkZWZlcnJhbCIsInR5cGVhbm4iLCJta190eXBmdW4iLCJta19mdW4kMCIsIm1rX2FwX2V4cF90eXAiLCJta19maXgiLCJta19hcF9leHAiLCJta19hcF9wYXQiLCJta19sZXQiLCJta190eWFsaWFzIiwibWtfaWYiLCJta190ZXN0IiwibWtfY2FzZSIsIm1rX3J1bGUiLCJta19oaWRlIiwibWtfZXZhbCIsIm1rX3BhdXNlIiwibWtfZGVidWciLCJta191bnF1b3RlIiwibGluZWJyZWFrIiwic3BhY2UiLCJta19leGFtcGxlIiwic3RyIiwieiIsImFiYnJldmlhdGUiLCJlcnJvcl9zb3VyY2VfMDAzIiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAwNyIsInRwX2xvYyQwIiwiZXJyb3Jfc291cmNlXzAxMSIsInRwX2xvYyQxIiwiZXJyb3Jfc291cmNlXzAxNSIsInRwX2xvYyQyIiwiZXJyb3Jfc291cmNlXzAxOSIsInRwX2xvYyQzIiwiZXJyb3Jfc291cmNlXzAyMyIsInRwX2xvYyQ0IiwiZXJyb3Jfc291cmNlXzA4NCIsInRwX2xvYyQ1IiwiZXJyb3Jfc291cmNlXzA5NyIsInRwX2xvYyQ2IiwiZXJyb3Jfc291cmNlXzEwMSIsInRwX2xvYyQ3IiwiZXJyb3Jfc291cmNlXzE2MyIsInRwX2xvYyQ4IiwiZXJyb3Jfc291cmNlXzE4NyIsInRwX2xvYyQ5IiwiZXJyb3Jfc291cmNlXzIzOCIsInRwX2xvYyQxMCIsImVycm9yX3NvdXJjZV8yNzIiLCJ0cF9sb2MkMTEiLCJwcF9saXN0X2V4YW1wbGVzIiwiZm10Iiwic2hvd19saXN0X2V4YW1wbGVzIiwibGlzdF9leGFtcGxlc19vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX2xpc3RfZXhhbXBsZXMiLCJsaXN0X2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbiIsInlvanNvbl9vZl9saXN0X2V4YW1wbGVzIiwicHBfdHlwZnVuX2V4YW1wbGVzIiwic2hvd190eXBmdW5fZXhhbXBsZXMiLCJ0eXBmdW5fZXhhbXBsZXNfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl90eXBmdW5fZXhhbXBsZXMiLCJ0eXBmdW5fZXhhbXBsZXNfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGZ1bl9leGFtcGxlcyIsInBwX2Z1bl9leGFtcGxlcyIsInNob3dfZnVuX2V4YW1wbGVzIiwiZnVuX2V4YW1wbGVzX29mX3NleHAiLCJzZXhwXzAxMiIsInNleHBfb2ZfZnVuX2V4YW1wbGVzIiwiZnVuX2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl9mdW5fZXhhbXBsZXMiLCJwcF9sZXRfZXhhbXBsZXMiLCJzaG93X2xldF9leGFtcGxlcyIsImxldF9leGFtcGxlc19vZl9zZXhwIiwic2V4cF8wMTYiLCJzZXhwX29mX2xldF9leGFtcGxlcyIsImxldF9leGFtcGxlc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfbGV0X2V4YW1wbGVzIiwicHBfbnVtZXJpY19iaW5fb3BfZXhhbXBsZXMiLCJzaG93X251bWVyaWNfYmluX29wX2V4YW1wbGVzIiwibnVtZXJpY19iaW5fb3BfZXhhbXBsZXNfb2Zfc2V4Iiwic2V4cF8wMjAiLCJzZXhwX29mX251bWVyaWNfYmluX29wX2V4YW1wbGUiLCJudW1lcmljX2Jpbl9vcF9leGFtcGxlc19vZl95b2oiLCJ5b2pzb25fb2ZfbnVtZXJpY19iaW5fb3BfZXhhbXAiLCJwcF9leGFtcGxlX2lkIiwic2hvd19leGFtcGxlX2lkIiwiYTAiLCJhMCQwIiwiYTAkMSIsImEwJDIiLCJhMCQzIiwiYTAkNCIsImV4YW1wbGVfaWRfb2Zfc2V4cCIsInNleHBfMDI1IiwidGFnXzAyNiIsInNleHBfYXJnc18wMzIiLCJhcmcwXzAzMyIsInJlczBfMDM0Iiwic2V4cF9hcmdzXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJzZXhwX2FyZ3NfMDQyIiwiYXJnMF8wNDMiLCJyZXMwXzA0NCIsInNleHBfYXJnc18wMjciLCJhcmcwXzAyOCIsInJlczBfMDI5Iiwic2V4cF9hcmdzXzA1MiIsImFyZzBfMDUzIiwicmVzMF8wNTQiLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsInNleHBfb2ZfZXhhbXBsZV9pZCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4IiwiYXJnMF8wNTkiLCJyZXMwXzA2MCIsImFyZzBfMDYxIiwicmVzMF8wNjIiLCJhcmcwXzA2MyIsInJlczBfMDY0IiwiYXJnMF8wNjUiLCJyZXMwXzA2NiIsImV4YW1wbGVfaWRfb2ZfeW9qc29uIiwidGFnIiwieW9qc29uX2FyZ3MiLCJ2MCIsInYwJDAiLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyQ0IiwidjAkOSIsInYwJDEwIiwieW9qc29uX2FyZ3MkMyIsInYwJDciLCJ2MCQ4IiwieW9qc29uX29mX2V4YW1wbGVfaWQiLCJwcF9leGFtcGxlIiwic2hvd19leGFtcGxlIiwiZXhhbXBsZV9vZl9zZXhwIiwic2V4cF8wNjgiLCJmaWVsZF9zZXhwc18wNjkiLCJzdWJfaWRfMDcwIiwidGVybV8wNzIiLCJtZXNzYWdlXzA3NCIsImR1cGxpY2F0ZXNfMDc2IiwiZXh0cmFfMDc3Iiwic2V4cF8wNjgkMCIsImZpZWxkX3NleHBzXzA4MCIsImZpZWxkX25hbWVfMDc4IiwidGFpbF8wODYiLCJmaWVsZF9zZXhwXzA3OSQzIiwiZmllbGRfc2V4cF8wNzkiLCJ4XzA4NyIsImZpZWxkX3NleHBfMDc5JDAiLCJmdmFsdWVfMDgyIiwiZmllbGRfc2V4cF8wNzkkMSIsImZ2YWx1ZV8wODMiLCJmaWVsZF9zZXhwXzA3OSQyIiwiZnZhbHVlXzA4MSIsIm1lc3NhZ2VfMDc1IiwidGVybV8wNzMiLCJzdWJfaWRfMDcxIiwic2V4cF9vZl9leGFtcGxlIiwibWVzc2FnZV8wOTMiLCJ0ZXJtXzA5MSIsInN1Yl9pZF8wODkiLCJhcmdfMDk0IiwiYm5kc18wODgiLCJhcmdfMDkyIiwiYm5kc18wODgkMCIsImFyZ18wOTAiLCJibmRzXzA4OCQxIiwiZXhhbXBsZV9vZl95b2pzb24iLCJmaWVsZF95b2pzb25zIiwic3ViX2lkX2ZpZWxkIiwidGVybV9maWVsZCIsIm1lc3NhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwiZnZhbHVlJDEiLCJtZXNzYWdlX3ZhbHVlIiwidGVybV92YWx1ZSIsInN1Yl9pZF92YWx1ZSIsInlvanNvbl9vZl9leGFtcGxlIiwidl9tZXNzYWdlIiwidl90ZXJtIiwidl9zdWJfaWQiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsInBwX3BhdF9zdWJfZm9ybV9pZCIsInNob3dfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3NleHAiLCJzZXhwXzA5OCIsInNleHBfb2ZfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3lvanNvbiIsInlvanNvbl9vZl9wYXRfc3ViX2Zvcm1faWQiLCJwcF9mb3JtX2lkIiwic2hvd19mb3JtX2lkIiwiZm9ybV9pZF9vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEyMCIsImFyZzBfMTIxIiwicmVzMF8xMjIiLCJzZXhwX2FyZ3NfMTA1IiwiYXJnMF8xMDYiLCJyZXMwXzEwNyIsInNleHBfYXJnc18xMTAiLCJhcmcwXzExMSIsInJlczBfMTEyIiwic2V4cF9hcmdzXzExNSIsImFyZzBfMTE2IiwicmVzMF8xMTciLCJzZXhwX2FyZ3NfMTI1IiwiYXJnMF8xMjYiLCJyZXMwXzEyNyIsInNleHBfb2ZfZm9ybV9pZCIsImFyZzBfMTI4IiwicmVzMF8xMjkiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwiYXJnMF8xMzIiLCJyZXMwXzEzMyIsImFyZzBfMTM0IiwicmVzMF8xMzUiLCJhcmcwXzEzNiIsInJlczBfMTM3IiwiZm9ybV9pZF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZm9ybV9pZCIsInBwX2Zvcm0iLCJzaG93X2Zvcm0iLCJ4JDAiLCJhMSIsIngkMSIsInNlcCIsImZvcm1fb2Zfc2V4cCIsInNleHBfMTM5IiwiZmllbGRfc2V4cHNfMTQwIiwiaWRfMTQxIiwic3ludGFjdGljX2Zvcm1fMTQzIiwiZXhwYW5kYWJsZV9pZF8xNDUiLCJleHBsYW5hdGlvbl8xNDciLCJleGFtcGxlc18xNDkiLCJkdXBsaWNhdGVzXzE1MSIsImV4dHJhXzE1MiIsInNleHBfMTM5JDAiLCJmaWVsZF9zZXhwc18xNTUiLCJmaWVsZF9uYW1lXzE1MyIsInRhaWxfMTY4IiwiZmllbGRfc2V4cF8xNTQkNSIsImZpZWxkX3NleHBfMTU0IiwieF8xNjkiLCJmaWVsZF9zZXhwXzE1NCQwIiwiZnZhbHVlXzE2NSIsImZpZWxkX3NleHBfMTU0JDEiLCJmdmFsdWVfMTY2IiwiZmllbGRfc2V4cF8xNTQkMiIsImZ2YWx1ZV8xNTciLCJmaWVsZF9zZXhwXzE1NCQzIiwic2V4cF8xNjIiLCJhcmcxXzE1OSIsImFyZzBfMTU4IiwicmVzMF8xNjAiLCJyZXMxXzE2MSIsImZ2YWx1ZV8xNjQiLCJmaWVsZF9zZXhwXzE1NCQ0IiwiZnZhbHVlXzE1NiIsImV4YW1wbGVzXzE1MCIsImV4cGxhbmF0aW9uXzE0OCIsImV4cGFuZGFibGVfaWRfMTQ2Iiwic3ludGFjdGljX2Zvcm1fMTQ0IiwiaWRfMTQyIiwic2V4cF9vZl9mb3JtIiwiZXhhbXBsZXNfMTgzIiwiZXhwbGFuYXRpb25fMTgxIiwiZXhwYW5kYWJsZV9pZF8xNzUiLCJzeW50YWN0aWNfZm9ybV8xNzMiLCJpZF8xNzEiLCJhcmdfMTg0IiwiYm5kc18xNzAiLCJhcmdfMTgyIiwiYm5kc18xNzAkMCIsImFyZzFfMTc4IiwiYXJnMF8xNzciLCJyZXMwXzE3OSIsInJlczFfMTgwIiwiYXJnXzE3NiIsImJuZHNfMTcwJDEiLCJhcmdfMTc0IiwiYm5kc18xNzAkMiIsImFyZ18xNzIiLCJibmRzXzE3MCQzIiwiZm9ybV9vZl95b2pzb24iLCJpZF9maWVsZCIsInN5bnRhY3RpY19mb3JtX2ZpZWxkIiwiZXhwYW5kYWJsZV9pZF9maWVsZCIsImV4cGxhbmF0aW9uX2ZpZWxkIiwiZXhhbXBsZXNfZmllbGQiLCJ2MSIsInYxJDAiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZXhhbXBsZXNfdmFsdWUiLCJleHBsYW5hdGlvbl92YWx1ZSIsImV4cGFuZGFibGVfaWRfdmFsdWUiLCJzeW50YWN0aWNfZm9ybV92YWx1ZSIsImlkX3ZhbHVlIiwieW9qc29uX29mX2Zvcm0iLCJ2X2V4YW1wbGVzIiwidl9leHBsYW5hdGlvbiIsInZfZXhwYW5kYWJsZV9pZCIsInZfc3ludGFjdGljX2Zvcm0iLCJ2X2lkIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsInBwX2dyb3VwX2lkIiwic2hvd19ncm91cF9pZCIsImdyb3VwX2lkX29mX3NleHAiLCJzZXhwXzE4OSIsInRhZ18xOTAiLCJzZXhwX2FyZ3NfMjA2IiwiYXJnMF8yMDciLCJyZXMwXzIwOCIsInNleHBfYXJnc18xOTEiLCJhcmcwXzE5MiIsInJlczBfMTkzIiwic2V4cF9hcmdzXzE5NiIsImFyZzBfMTk3IiwicmVzMF8xOTgiLCJzZXhwX2FyZ3NfMjAxIiwiYXJnMF8yMDIiLCJyZXMwXzIwMyIsInNleHBfYXJnc18yMTEiLCJhcmcwXzIxMiIsInJlczBfMjEzIiwic2V4cF9vZl9ncm91cF9pZCIsImFyZzBfMjE0IiwicmVzMF8yMTUiLCJhcmcwXzIxNiIsInJlczBfMjE3IiwiYXJnMF8yMTgiLCJyZXMwXzIxOSIsImFyZzBfMjIwIiwicmVzMF8yMjEiLCJhcmcwXzIyMiIsInJlczBfMjIzIiwiZ3JvdXBfaWRfb2ZfeW9qc29uIiwieW9qc29uX29mX2dyb3VwX2lkIiwicHBfZ3JvdXAiLCJzaG93X2dyb3VwIiwiZ3JvdXBfb2Zfc2V4cCIsInNleHBfMjI1IiwiZmllbGRfc2V4cHNfMjI2IiwiaWRfMjI3IiwiZm9ybXNfMjI5IiwiZHVwbGljYXRlc18yMzEiLCJleHRyYV8yMzIiLCJzZXhwXzIyNSQwIiwiZmllbGRfc2V4cHNfMjM1IiwiZmllbGRfbmFtZV8yMzMiLCJ0YWlsXzI0MCIsImZpZWxkX3NleHBfMjM0JDIiLCJmaWVsZF9zZXhwXzIzNCIsInhfMjQxIiwiZmllbGRfc2V4cF8yMzQkMCIsImZ2YWx1ZV8yMzciLCJmaWVsZF9zZXhwXzIzNCQxIiwiZnZhbHVlXzIzNiIsImZvcm1zXzIzMCIsImlkXzIyOCIsInNleHBfb2ZfZ3JvdXAiLCJmb3Jtc18yNDUiLCJpZF8yNDMiLCJhcmdfMjQ2IiwiYm5kc18yNDIiLCJhcmdfMjQ0IiwiYm5kc18yNDIkMCIsImdyb3VwX29mX3lvanNvbiIsImZvcm1zX2ZpZWxkIiwiZm9ybXNfdmFsdWUiLCJ5b2pzb25fb2ZfZ3JvdXAiLCJ2X2Zvcm1zIiwicHAiLCJzaG93IiwidF9vZl9zZXhwIiwic2V4cF8yNDgiLCJmaWVsZF9zZXhwc18yNDkiLCJncm91cF9pZF8yNTAiLCJmb3JtX2lkXzI1MiIsImFic3RyYWN0XzI1NCIsImV4cGxhbmF0aW9uXzI1NiIsImV4YW1wbGVzXzI1OCIsImR1cGxpY2F0ZXNfMjYwIiwiZXh0cmFfMjYxIiwic2V4cF8yNDgkMCIsImZpZWxkX3NleHBzXzI2NCIsImZpZWxkX25hbWVfMjYyIiwidGFpbF8yODIiLCJmaWVsZF9zZXhwXzI2MyQ1IiwiZmllbGRfc2V4cF8yNjMiLCJ4XzI4MyIsImZpZWxkX3NleHBfMjYzJDAiLCJmdmFsdWVfMjgwIiwiZmllbGRfc2V4cF8yNjMkMSIsImZ2YWx1ZV8yNzkiLCJmaWVsZF9zZXhwXzI2MyQyIiwiZnZhbHVlXzI2NiIsImZpZWxkX3NleHBfMjYzJDMiLCJmdmFsdWVfMjY1IiwiZmllbGRfc2V4cF8yNjMkNCIsImFyZzFfMjc0IiwiYXJnMF8yNzMiLCJyZXMwXzI3NSIsInNleHBfMjcxIiwiYXJnMV8yNjgiLCJhcmcwXzI2NyIsInJlczBfMjY5IiwicmVzMV8yNzAiLCJyZXMxXzI3NiIsImZ2YWx1ZV8yNzgiLCJleGFtcGxlc18yNTkiLCJleHBsYW5hdGlvbl8yNTciLCJhYnN0cmFjdF8yNTUiLCJmb3JtX2lkXzI1MyIsImdyb3VwX2lkXzI1MSIsInNleHBfb2ZfdCIsImV4YW1wbGVzXzMwMSIsImV4cGxhbmF0aW9uXzI5OSIsImFic3RyYWN0XzI4OSIsImZvcm1faWRfMjg3IiwiZ3JvdXBfaWRfMjg1IiwiYXJnXzMwMiIsImJuZHNfMjg0IiwiYXJnXzMwMCIsImJuZHNfMjg0JDAiLCJhcmcxXzI5NiIsImFyZzBfMjk1IiwicmVzMF8yOTciLCJhcmcxXzI5MiIsImFyZzBfMjkxIiwicmVzMF8yOTMiLCJyZXMxXzI5NCIsInJlczFfMjk4IiwiYXJnXzI5MCIsImJuZHNfMjg0JDEiLCJhcmdfMjg4IiwiYm5kc18yODQkMiIsImFyZ18yODYiLCJibmRzXzI4NCQzIiwidF9vZl95b2pzb24iLCJncm91cF9pZF9maWVsZCIsImZvcm1faWRfZmllbGQiLCJhYnN0cmFjdF9maWVsZCIsImFic3RyYWN0X3ZhbHVlIiwiZm9ybV9pZF92YWx1ZSIsImdyb3VwX2lkX3ZhbHVlIiwieW9qc29uX29mX3QiLCJ2X2Fic3RyYWN0Iiwidl9mb3JtX2lkIiwidl9ncm91cF9pZCIsInRvX2dyb3VwIiwiZXhhbXBsZXMiLCJleHBsYW5hdGlvbiIsImNvbG9yaW5ncyIsInN5bnRhY3RpY19mb3JtIiwiZm9ybV9pZCIsImdyb3VwX2lkIiwibWtfMSIsIm1rX2Zvcm0iLCJwIiwibWtfMiIsImlkXzIiLCJuMiIsImlkXzEiLCJuMSIsInAyIiwicDEiLCJta18zIiwiaWRfMyIsIm4zIiwicDMiLCJ2YXJfdHlwX3BhdCIsInZhcl90eXBfcGF0cyIsImNoaWxkX2NvbG9ycyIsInBwX2NvbG9yTWFwIiwic2hvd19jb2xvck1hcCIsImNvbG9yTWFwX29mX3NleHAiLCJ4XzAwMiIsInNleHBfb2ZfY29sb3JNYXAiLCJ4XzAwMyIsImNvbG9yTWFwX29mX3lvanNvbiIsInlvanNvbl9vZl9jb2xvck1hcCIsImVtcHR5IiwiZ2V0X2NvbG9yIiwiaW5kZXgiLCJtYXBwaW5nIiwiY29sb3IiLCJjb2xvciQwIiwibWFwcGluZyQwIiwidG9fbGlzdCIsImNvZGUiLCJlcXVpdiIsInByb21wdCIsImRlZmF1bHQkMCIsIm91dHB1dF9oZWFkZXIiLCJtb2R1bGVfbmFtZSIsImV4ZXJjaXNlIiwiZmlsZW5hbWUiLCJleGVyY2lzZXMiLCJlcnJvcl9zb3VyY2VfMDQ4IiwiZXJyb3Jfc291cmNlXzA3NSIsImVycm9yX3NvdXJjZV8xMTQiLCJlcnJvcl9zb3VyY2VfMTQwIiwiZXJyb3Jfc291cmNlXzE1MyIsImVycm9yX3NvdXJjZV8xNjQiLCJpbml0IiwiaW5pdCQwIiwicHBfZmVlZGJhY2tfb3B0aW9uIiwic2hvd19mZWVkYmFja19vcHRpb24iLCJmZWVkYmFja19vcHRpb25fb2Zfc2V4cCIsInNleHBfb2ZfZmVlZGJhY2tfb3B0aW9uIiwiZmVlZGJhY2tfb3B0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9mZWVkYmFja19vcHRpb24iLCJwcF9leGFtcGxlX21vZGVsIiwic2hvd19leGFtcGxlX21vZGVsIiwiZXhhbXBsZV9tb2RlbF9vZl9zZXhwIiwic2V4cF8wMDYiLCJmaWVsZF9zZXhwc18wMDciLCJzdWJfaWRfMDA4IiwiZmVlZGJhY2tfMDEwIiwiZHVwbGljYXRlc18wMTIiLCJleHRyYV8wMTMiLCJzZXhwXzAwNiQwIiwiZmllbGRfc2V4cHNfMDE2IiwiZmllbGRfbmFtZV8wMTQiLCJ0YWlsXzAyMSIsImZpZWxkX3NleHBfMDE1JDIiLCJmaWVsZF9zZXhwXzAxNSIsInhfMDIyIiwiZmllbGRfc2V4cF8wMTUkMCIsImZ2YWx1ZV8wMTgiLCJmaWVsZF9zZXhwXzAxNSQxIiwiZnZhbHVlXzAxNyIsImZlZWRiYWNrXzAxMSIsInN1Yl9pZF8wMDkiLCJzZXhwX29mX2V4YW1wbGVfbW9kZWwiLCJmZWVkYmFja18wMjYiLCJzdWJfaWRfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDIzIiwiYXJnXzAyNSIsImJuZHNfMDIzJDAiLCJleGFtcGxlX21vZGVsX29mX3lvanNvbiIsImZlZWRiYWNrX2ZpZWxkIiwiZmVlZGJhY2tfdmFsdWUiLCJ5b2pzb25fb2ZfZXhhbXBsZV9tb2RlbCIsInZfZmVlZGJhY2siLCJwcF9mb3JtX21vZGVsIiwic2hvd19mb3JtX21vZGVsIiwiZm9ybV9tb2RlbF9vZl9zZXhwIiwic2V4cF8wMjkiLCJmaWVsZF9zZXhwc18wMzAiLCJncm91cF8wMzEiLCJmb3JtXzAzMyIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrXzAzNSIsImV4YW1wbGVzXzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwic2V4cF8wMjkkMCIsImZpZWxkX3NleHBzXzA0MyIsImZpZWxkX25hbWVfMDQxIiwidGFpbF8wNTAiLCJmaWVsZF9zZXhwXzA0MiQ0IiwiZmllbGRfc2V4cF8wNDIiLCJ4XzA1MSIsImZpZWxkX3NleHBfMDQyJDAiLCJmdmFsdWVfMDQ3IiwiZmllbGRfc2V4cF8wNDIkMSIsImZ2YWx1ZV8wNDYiLCJmaWVsZF9zZXhwXzA0MiQyIiwiZnZhbHVlXzA0NSIsImZpZWxkX3NleHBfMDQyJDMiLCJmdmFsdWVfMDQ0IiwiZXhhbXBsZXNfMDM4IiwiZXhwbGFuYXRpb25fZmVlZGJhY2tfMDM2IiwiZm9ybV8wMzQiLCJncm91cF8wMzIiLCJzZXhwX29mX2Zvcm1fbW9kZWwiLCJleGFtcGxlc18wNTkiLCJleHBsYW5hdGlvbl9mZWVkYmFja18wNTciLCJmb3JtXzA1NSIsImdyb3VwXzA1MyIsImFyZ18wNjAiLCJibmRzXzA1MiIsImFyZ18wNTgiLCJibmRzXzA1MiQwIiwiYXJnXzA1NiIsImJuZHNfMDUyJDEiLCJhcmdfMDU0IiwiYm5kc18wNTIkMiIsImZvcm1fbW9kZWxfb2ZfeW9qc29uIiwiZ3JvdXBfZmllbGQiLCJmb3JtX2ZpZWxkIiwiZXhwbGFuYXRpb25fZmVlZGJhY2tfZmllbGQiLCJleHBsYW5hdGlvbl9mZWVkYmFja192YWx1ZSIsImZvcm1fdmFsdWUiLCJncm91cF92YWx1ZSIsInlvanNvbl9vZl9mb3JtX21vZGVsIiwidl9leHBsYW5hdGlvbl9mZWVkYmFjayIsInZfZm9ybSIsInZfZ3JvdXAiLCJwcF9ncm91cF9tb2RlbCIsInNob3dfZ3JvdXBfbW9kZWwiLCJncm91cF9tb2RlbF9vZl9zZXhwIiwic2V4cF8wNjIiLCJmaWVsZF9zZXhwc18wNjMiLCJncm91cF8wNjQiLCJzZWxlY3RlZF8wNjYiLCJkdXBsaWNhdGVzXzA2OCIsImV4dHJhXzA2OSIsInNleHBfMDYyJDAiLCJmaWVsZF9zZXhwc18wNzIiLCJmaWVsZF9uYW1lXzA3MCIsInRhaWxfMDc3IiwiZmllbGRfc2V4cF8wNzEkMiIsImZpZWxkX3NleHBfMDcxIiwieF8wNzgiLCJmaWVsZF9zZXhwXzA3MSQwIiwiZnZhbHVlXzA3MyIsImZpZWxkX3NleHBfMDcxJDEiLCJmdmFsdWVfMDc0Iiwic2VsZWN0ZWRfMDY3IiwiZ3JvdXBfMDY1Iiwic2V4cF9vZl9ncm91cF9tb2RlbCIsInNlbGVjdGVkXzA4MiIsImdyb3VwXzA4MCIsImFyZ18wODMiLCJibmRzXzA3OSIsImFyZ18wODEiLCJibmRzXzA3OSQwIiwiZ3JvdXBfbW9kZWxfb2ZfeW9qc29uIiwic2VsZWN0ZWRfZmllbGQiLCJzZWxlY3RlZF92YWx1ZSIsInlvanNvbl9vZl9ncm91cF9tb2RlbCIsInZfc2VsZWN0ZWQiLCJzZXhwXzA4NSIsImZpZWxkX3NleHBzXzA4NiIsInNwZWNpZmljaXR5X29wZW5fMDg3IiwiZm9ybXNfMDg5IiwiZ3JvdXBzXzA5MSIsImR1cGxpY2F0ZXNfMDkzIiwiZXh0cmFfMDk0Iiwic2V4cF8wODUkMCIsImZpZWxkX3NleHBzXzA5NyIsImZpZWxkX25hbWVfMDk1IiwidGFpbF8xMDMiLCJmaWVsZF9zZXhwXzA5NiQzIiwiZmllbGRfc2V4cF8wOTYiLCJ4XzEwNCIsImZpZWxkX3NleHBfMDk2JDAiLCJmdmFsdWVfMTAwIiwiZmllbGRfc2V4cF8wOTYkMSIsImZ2YWx1ZV8wOTgiLCJmaWVsZF9zZXhwXzA5NiQyIiwiZnZhbHVlXzA5OSIsImdyb3Vwc18wOTIiLCJmb3Jtc18wOTAiLCJzcGVjaWZpY2l0eV9vcGVuXzA4OCIsImdyb3Vwc18xMTAiLCJmb3Jtc18xMDgiLCJzcGVjaWZpY2l0eV9vcGVuXzEwNiIsImFyZ18xMTEiLCJibmRzXzEwNSIsImFyZ18xMDkiLCJibmRzXzEwNSQwIiwiYXJnXzEwNyIsImJuZHNfMTA1JDEiLCJzcGVjaWZpY2l0eV9vcGVuX2ZpZWxkIiwiZ3JvdXBzX2ZpZWxkIiwiZ3JvdXBzX3ZhbHVlIiwic3BlY2lmaWNpdHlfb3Blbl92YWx1ZSIsInZfZ3JvdXBzIiwidl9zcGVjaWZpY2l0eV9vcGVuIiwicHBfaGlnaGxpZ2h0Iiwic2hvd19oaWdobGlnaHQiLCJoaWdobGlnaHRfb2Zfc2V4cCIsInNleHBfMTE2IiwidGFnXzExNyIsInNleHBfYXJnc18xMTgiLCJhcmcwXzExOSIsInJlczBfMTIwIiwic2V4cF9vZl9oaWdobGlnaHQiLCJoaWdobGlnaHRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hpZ2hsaWdodCIsInBwJDAiLCJzaG93JDAiLCJ0X29mX3NleHAkMCIsInNleHBfMTI0IiwiZmllbGRfc2V4cHNfMTI1Iiwic2hvd18xMjYiLCJzaG93X2ZlZWRiYWNrXzEyOCIsImhpZ2hsaWdodF8xMzAiLCJkdXBsaWNhdGVzXzEzMiIsImV4dHJhXzEzMyIsInNleHBfMTI0JDAiLCJmaWVsZF9zZXhwc18xMzYiLCJmaWVsZF9uYW1lXzEzNCIsInRhaWxfMTQyIiwiZmllbGRfc2V4cF8xMzUkMyIsImZpZWxkX3NleHBfMTM1IiwieF8xNDMiLCJmaWVsZF9zZXhwXzEzNSQwIiwiZnZhbHVlXzEzOCIsImZpZWxkX3NleHBfMTM1JDEiLCJmdmFsdWVfMTM5IiwiZmllbGRfc2V4cF8xMzUkMiIsImZ2YWx1ZV8xMzciLCJoaWdobGlnaHRfMTMxIiwic2hvd19mZWVkYmFja18xMjkiLCJzaG93XzEyNyIsInNleHBfb2ZfdCQwIiwiaGlnaGxpZ2h0XzE0OSIsInNob3dfZmVlZGJhY2tfMTQ3Iiwic2hvd18xNDUiLCJhcmdfMTUwIiwiYm5kc18xNDQiLCJhcmdfMTQ4IiwiYm5kc18xNDQkMCIsImFyZ18xNDYiLCJibmRzXzE0NCQxIiwidF9vZl95b2pzb24kMCIsInNob3dfZmllbGQiLCJzaG93X2ZlZWRiYWNrX2ZpZWxkIiwiaGlnaGxpZ2h0X2ZpZWxkIiwiaGlnaGxpZ2h0X3ZhbHVlIiwic2hvd19mZWVkYmFja192YWx1ZSIsInNob3dfdmFsdWUiLCJ5b2pzb25fb2ZfdCQwIiwidl9oaWdobGlnaHQiLCJ2X3Nob3dfZmVlZGJhY2siLCJ2X3Nob3ciLCJwcF9oaWdobGlnaHRfYWN0aW9uIiwic2hvd19oaWdobGlnaHRfYWN0aW9uIiwiaGlnaGxpZ2h0X2FjdGlvbl9vZl9zZXhwIiwic2V4cF8xNTUiLCJ0YWdfMTU2Iiwic2V4cF9hcmdzXzE1NyIsInJlczBfMTU5Iiwic2V4cF9vZl9oaWdobGlnaHRfYWN0aW9uIiwiYXJnMF8xNjAiLCJyZXMwXzE2MSIsImhpZ2hsaWdodF9hY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2hpZ2hsaWdodF9hY3Rpb24iLCJwcF9hY3Rpb24iLCJzaG93X2FjdGlvbiIsImFjdGlvbl9vZl9zZXhwIiwic2V4cF8xNjYiLCJ0YWdfMTY3Iiwic2V4cF9hcmdzXzE2OCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJzZXhwX29mX2FjdGlvbiIsImFyZzBfMTcxIiwicmVzMF8xNzIiLCJhY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2FjdGlvbiIsImdldF9leHBsYW5hdGlvbl9mZWVkYmFjayIsIm1vZGVsIiwiZm9ybXMiLCJnZXRfZXhhbXBsZV9mZWVkYmFjayIsImV4YW1wbGVfaWQiLCJleGFtcGxlIiwiZ2V0X2Zvcm1faW5fZ3JvdXAiLCJncm91cCIsImdldF9zZWxlY3RlZF9vcHRpb24iLCJncm91cCQwIiwic2VsZWN0ZWQiLCJzZWxlY3RlZCQwIiwiZ2V0X29wdGlvbnMiLCJnZXRfZm9ybV9hbmRfb3B0aW9ucyIsImVycm9yX3NvdXJjZV8wNDAiLCJlcnJvcl9zb3VyY2VfMDY1IiwiZXJyb3Jfc291cmNlXzA2OSIsInBwX21vZGUiLCJzaG93X21vZGUiLCJtb2RlX29mX3NleHAiLCJzZXhwX29mX21vZGUiLCJtb2RlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb2RlIiwibW9kZV9vZl9zdHJpbmciLCJzIiwiY2FwdGlvbnNfMDA4Iiwic2Vjb25kYXJ5X2ljb25zXzAxMCIsImNvcmVfMDEyIiwiYXN5bmNfZXZhbHVhdGlvbl8wMTQiLCJjb250ZXh0X2luc3BlY3Rvcl8wMTYiLCJpbnN0cnVjdG9yX21vZGVfMDE4IiwiYmVuY2htYXJrXzAyMCIsImV4cGxhaW5UaGlzXzAyMiIsIm1vZGVfMDI0IiwiZHVwbGljYXRlc18wMjYiLCJleHRyYV8wMjciLCJmaWVsZF9uYW1lXzAyOCIsInRhaWxfMDQyIiwiZmllbGRfc2V4cF8wMjkkOSIsImZpZWxkX3NleHBfMDI5IiwieF8wNDMiLCJmaWVsZF9zZXhwXzAyOSQwIiwiZnZhbHVlXzAzOCIsImZpZWxkX3NleHBfMDI5JDEiLCJmdmFsdWVfMDMxIiwiZmllbGRfc2V4cF8wMjkkMiIsImZ2YWx1ZV8wMzQiLCJmaWVsZF9zZXhwXzAyOSQzIiwiZnZhbHVlXzAzMiIsImZpZWxkX3NleHBfMDI5JDQiLCJmdmFsdWVfMDM3IiwiZmllbGRfc2V4cF8wMjkkNSIsImZ2YWx1ZV8wMzUiLCJmaWVsZF9zZXhwXzAyOSQ2IiwiZnZhbHVlXzAzOSIsImZpZWxkX3NleHBfMDI5JDciLCJmdmFsdWVfMDMzIiwiZmllbGRfc2V4cF8wMjkkOCIsImZ2YWx1ZV8wMzYiLCJtb2RlXzAyNSIsImV4cGxhaW5UaGlzXzAyMyIsImJlbmNobWFya18wMjEiLCJpbnN0cnVjdG9yX21vZGVfMDE5IiwiY29udGV4dF9pbnNwZWN0b3JfMDE3IiwiYXN5bmNfZXZhbHVhdGlvbl8wMTUiLCJjb3JlXzAxMyIsInNlY29uZGFyeV9pY29uc18wMTEiLCJjYXB0aW9uc18wMDkiLCJtb2RlXzA2MSIsImV4cGxhaW5UaGlzXzA1OSIsImJlbmNobWFya18wNTciLCJpbnN0cnVjdG9yX21vZGVfMDU1IiwiY29udGV4dF9pbnNwZWN0b3JfMDUzIiwiYXN5bmNfZXZhbHVhdGlvbl8wNTEiLCJjb3JlXzA0OSIsInNlY29uZGFyeV9pY29uc18wNDciLCJjYXB0aW9uc18wNDUiLCJhcmdfMDYyIiwiYm5kc18wNDQiLCJibmRzXzA0NCQwIiwiYm5kc18wNDQkMSIsImJuZHNfMDQ0JDIiLCJibmRzXzA0NCQzIiwiYXJnXzA1MiIsImJuZHNfMDQ0JDQiLCJhcmdfMDUwIiwiYm5kc18wNDQkNSIsImFyZ18wNDgiLCJibmRzXzA0NCQ2IiwiYXJnXzA0NiIsImJuZHNfMDQ0JDciLCJjYXB0aW9uc19maWVsZCIsInNlY29uZGFyeV9pY29uc19maWVsZCIsImNvcmVfZmllbGQiLCJhc3luY19ldmFsdWF0aW9uX2ZpZWxkIiwiY29udGV4dF9pbnNwZWN0b3JfZmllbGQiLCJpbnN0cnVjdG9yX21vZGVfZmllbGQiLCJiZW5jaG1hcmtfZmllbGQiLCJleHBsYWluVGhpc19maWVsZCIsIm1vZGVfZmllbGQiLCJmdmFsdWUkNCIsImZ2YWx1ZSQ1IiwiZnZhbHVlJDYiLCJmdmFsdWUkNyIsIm1vZGVfdmFsdWUiLCJleHBsYWluVGhpc192YWx1ZSIsImJlbmNobWFya192YWx1ZSIsImluc3RydWN0b3JfbW9kZV92YWx1ZSIsImNvbnRleHRfaW5zcGVjdG9yX3ZhbHVlIiwiYXN5bmNfZXZhbHVhdGlvbl92YWx1ZSIsImNvcmVfdmFsdWUiLCJzZWNvbmRhcnlfaWNvbnNfdmFsdWUiLCJjYXB0aW9uc192YWx1ZSIsInZfbW9kZSIsInZfZXhwbGFpblRoaXMiLCJ2X2JlbmNobWFyayIsInZfaW5zdHJ1Y3Rvcl9tb2RlIiwidl9jb250ZXh0X2luc3BlY3RvciIsInZfYXN5bmNfZXZhbHVhdGlvbiIsInZfY29yZSIsInZfc2Vjb25kYXJ5X2ljb25zIiwidl9jYXB0aW9ucyIsImFyZyQ0IiwiYm5kcyQ0IiwiYXJnJDUiLCJibmRzJDUiLCJhcmckNiIsImJuZHMkNiIsImFyZyQ3IiwiYm5kcyQ3IiwiZml4X2luc3RydWN0b3JfbW9kZSIsInNldHRpbmdzIiwicHBfZXZhbHVhdGlvbiIsInNob3dfZXZhbHVhdGlvbiIsImV2YWx1YXRpb25fb2Zfc2V4cCIsInNleHBfMDY2Iiwic2V4cF9vZl9ldmFsdWF0aW9uIiwiZXZhbHVhdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXZhbHVhdGlvbiIsInNleHBfMDcxIiwidGFnXzA3MiIsInNleHBfYXJnc18wNzMiLCJhcmcwXzA3NCIsInJlczBfMDc1Iiwic2V4cF9hcmdzXzA3OCIsImFyZzBfMDc5IiwicmVzMF8wODAiLCJzZXhwX2FyZ3NfMDgzIiwiYXJnMF8wODQiLCJyZXMwXzA4NSIsImFyZzBfMDg2IiwicmVzMF8wODciLCJhcmcwXzA4OCIsInJlczBfMDg5IiwiYXJnMF8wOTAiLCJyZXMwXzA5MSIsInVwZGF0ZSIsInUiLCJldmFsdWF0aW9uIiwiZXZhbHVhdGlvbiQwIiwiYSIsImhpZ2hsaWdodCIsImV4cGxhaW5UaGlzIiwibW9kZSIsInBwJDEiLCJzaG93JDEiLCJ0X29mX3NleHAkMSIsInNleHBfb2ZfdCQxIiwidF9vZl95b2pzb24kMSIsInlvanNvbl9vZl90JDEiLCJwcF9zdGF0ZSIsInNob3dfc3RhdGUiLCJzdGF0ZV9vZl9zZXhwIiwic2V4cF9vZl9zdGF0ZSIsInN0YXRlX29mX3lvanNvbiIsInlvanNvbl9vZl9zdGF0ZSIsInBwX3BlcnNpc3RlbnRfc3RhdGUiLCJzaG93X3BlcnNpc3RlbnRfc3RhdGUiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3NleHAiLCJzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50X3N0YXRlIiwic2NyYXRjaF9rZXkiLCJwZXJzaXN0IiwiZWRpdG9yIiwidW5wZXJzaXN0IiwiemlwcGVyJDAiLCJzZXJpYWxpemUiLCJzdGF0ZSIsImRlc2VyaWFsaXplIiwiZGF0YSIsImRlc2VyaWFsaXplX29wdCIsInNleHAiLCJleHBvcnQkMCIsImltcG9ydCQwIiwiZXhwb3J0X2luaXQiLCJta19zdGF0aWNzIiwiY3R4X2luaXQiLCJ0ZXJtIiwiaW5mb19tYXAiLCJlcnJvcl9pZHMiLCJlcnJvcl9zb3VyY2VfMDMxIiwicHBfc2NyYXRjaCIsInNob3dfc2NyYXRjaCIsImEyIiwic2NyYXRjaF9vZl9zZXhwIiwic2V4cF8wMTQiLCJhcmcyXzAxMCIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMSIsInJlczFfMDEyIiwiYXJnMV8wMDMiLCJhcmcwXzAwMiIsInJlczBfMDA0IiwicmVzMV8wMDUiLCJyZXMyXzAxMyIsInNleHBfb2Zfc2NyYXRjaCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczBfMDIyIiwicmVzMV8wMjMiLCJhcmcxXzAxNiIsImFyZzBfMDE1IiwicmVzMF8wMTciLCJyZXMxXzAxOCIsInJlczJfMDI0Iiwic2NyYXRjaF9vZl95b2pzb24iLCJ2MiIsInYyJDAiLCJ5b2pzb25fb2Zfc2NyYXRjaCIsInBwX2RvY3VtZW50YXRpb24iLCJzaG93X2RvY3VtZW50YXRpb24iLCJkb2N1bWVudGF0aW9uX29mX3NleHAiLCJzZXhwXzA0MyIsImFyZzJfMDM5IiwiYXJnMV8wMzgiLCJhcmcwXzAzNyIsInJlczBfMDQwIiwic2V4cF8wMzAiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInJlczFfMDQxIiwic2V4cF8wMzYiLCJhcmcxXzAzMyIsImFyZzBfMDMyIiwicmVzMV8wMzUiLCJyZXMyXzA0MiIsInNleHBfb2ZfZG9jdW1lbnRhdGlvbiIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJhcmcwXzA1MiIsInJlczBfMDU1IiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJyZXMxXzA1NiIsImFyZzFfMDQ5IiwicmVzMF8wNTAiLCJyZXMxXzA1MSIsInJlczJfMDU3IiwiZG9jdW1lbnRhdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZG9jdW1lbnRhdGlvbiIsInNleHBfMDU5IiwiZmllbGRfc2V4cHNfMDYwIiwic2V0dGluZ3NfMDYxIiwic2NyYXRjaF8wNjMiLCJkb2N1bWVudGF0aW9uXzA2NSIsImR1cGxpY2F0ZXNfMDY3IiwiZXh0cmFfMDY4Iiwic2V4cF8wNTkkMCIsImZpZWxkX3NleHBzXzA3MSIsImZpZWxkX25hbWVfMDY5IiwiZmllbGRfc2V4cF8wNzAkMyIsImZpZWxkX3NleHBfMDcwIiwiZmllbGRfc2V4cF8wNzAkMCIsImZpZWxkX3NleHBfMDcwJDEiLCJmaWVsZF9zZXhwXzA3MCQyIiwiZnZhbHVlXzA3MiIsImRvY3VtZW50YXRpb25fMDY2Iiwic2NyYXRjaF8wNjQiLCJzZXR0aW5nc18wNjIiLCJkb2N1bWVudGF0aW9uXzA4NCIsInNjcmF0Y2hfMDgyIiwic2V0dGluZ3NfMDgwIiwiYXJnXzA4NSIsImJuZHNfMDc5JDEiLCJzZXR0aW5nc19maWVsZCIsInNjcmF0Y2hfZmllbGQiLCJkb2N1bWVudGF0aW9uX2ZpZWxkIiwiZG9jdW1lbnRhdGlvbl92YWx1ZSIsInNjcmF0Y2hfdmFsdWUiLCJzZXR0aW5nc192YWx1ZSIsInZfZG9jdW1lbnRhdGlvbiIsInZfc2NyYXRjaCIsInZfc2V0dGluZ3MiLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAzNiIsImVycm9yX3NvdXJjZV8wNTQiLCJlcnJvcl9zb3VyY2VfMDgzIiwicHBfY2VsbCIsInNob3dfY2VsbCIsImNlbGxfb2Zfc2V4cCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJyZXMwXzAwOSIsInNleHBfb2ZfY2VsbCIsImFyZzBfMDEwIiwiY2VsbF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY2VsbCIsInRhZ18wMTciLCJzZXhwX2FyZ3NfMDE4IiwicmVzMF8wMjAiLCJzZXhwX2FyZ3NfMDIzIiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJhcmcxXzAzMSIsImFyZzBfMDMwIiwicmVzMF8wMzIiLCJyZXMxXzAzMyIsInBwX2NlbGwkMCIsInNob3dfY2VsbCQwIiwiY2VsbF9vZl9zZXhwJDAiLCJzZXhwXzAzOCIsInRhZ18wMzkiLCJzZXhwX2FyZ3NfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsInNleHBfYXJnc18wNDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwic2V4cF9vZl9jZWxsJDAiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiY2VsbF9vZl95b2pzb24kMCIsInlvanNvbl9vZl9jZWxsJDAiLCJzZXhwXzA1NiIsInRhZ18wNTciLCJzZXhwX2FyZ3NfMDU4Iiwic2V4cF9hcmdzXzA2OCIsImFyZzFfMDcwIiwiYXJnMF8wNjkiLCJyZXMwXzA3MSIsInJlczFfMDcyIiwic2V4cF9hcmdzXzA2MyIsImFyZzBfMDY0IiwicmVzMF8wNjUiLCJhcmcwXzA3MyIsInJlczBfMDc0IiwiYXJnMF8wNzUiLCJyZXMwXzA3NiIsImFyZzFfMDc4IiwiYXJnMF8wNzciLCJyZXMwXzA3OSIsInJlczFfMDgwIiwiYTEkMCIsImExJDEiLCJ0YWdfMDg2Iiwic2V4cF9hcmdzXzA4NyIsImFyZzFfMDg5IiwicmVzMF8wOTAiLCJyZXMxXzA5MSIsInNleHBfYXJnc18xMDYiLCJhcmcyXzEwOSIsImFyZzFfMTA4IiwiYXJnMF8xMDciLCJyZXMwXzExMCIsInJlczFfMTExIiwicmVzMl8xMTIiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMV8xMDEiLCJhcmcwXzEwMCIsInJlczBfMTAyIiwic2V4cF8wOTkiLCJhcmcxXzA5NiIsImFyZzBfMDk1IiwicmVzMF8wOTciLCJyZXMxXzA5OCIsInJlczFfMTAzIiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczBfMTE1IiwicmVzMV8xMTYiLCJhcmcxXzEyMiIsInJlczBfMTIzIiwiYXJnMV8xMTgiLCJhcmcwXzExNyIsInJlczBfMTE5IiwicmVzMV8xMjAiLCJyZXMxXzEyNCIsImFyZzJfMTI3IiwiYXJnMV8xMjYiLCJhcmcwXzEyNSIsInJlczBfMTI4IiwicmVzMV8xMjkiLCJyZXMyXzEzMCIsInYxJDMiLCJ2MSQ0IiwidjEkMSIsInYxJDIiLCJ1cGRhdGVfc2NyYXRjaF9zdGF0ZSIsImYiLCJlZGl0b3JzIiwic2xpZGVzIiwic2xpZGVzJDAiLCJnZXRfY3R4X2luaXQiLCJnZXRfZW52X2luaXQiLCJpZHgiLCJrZXkiLCJrZXkkMCIsImVkaXRvciQwIiwibG9va3VwX3N0YXRpY3MiLCJzZWxlY3Rpb24iLCJzdGF0aWNzIiwicG9zIiwia2V5JDEiLCJnZXRfc3BsaWNlZF9lbGFicyIsImQiLCJpbmZvX21hcCQwIiwidGVybSQwIiwiZCQwIiwic2V0X2luc3RydWN0b3JfbW9kZSIsImluc3RydWN0b3JfbW9kZSIsInNwZWNzIiwicmVzZXRfbnRoX3NsaWRlIiwiaW5pdF9lZGl0b3JzIiwiaW5pdF9udGgiLCJyZXNldF9uYW1lZF9zbGlkZSIsImluaXRfbmFtZSIsInJlc2V0X2N1cnJlbnQiLCJuJDAiLCJpbXBvcnRfY3VycmVudCIsImRhdGEkMCIsInN3aXRjaF9leGFtcGxlX3NsaWRlIiwiY3VyIiwiZ2V0X3NlbGVjdGVkX2VkaXRvciIsIm1vZGVsX3Jlc3VsdHMiLCJzZWxlY3Rpb24kMCIsInJlc3VsdCIsInNlbGVjdGlvbiQxIiwic2VsZWN0aW9uJDIiLCJzZWxlY3Rpb24kMyIsInB1dF9zZWxlY3RlZF9lZGl0b3IiLCJyZXN1bHQkMCIsInJlc3VsdHMiLCJyZXN1bHRzJDAiLCJzbGlkZXMkMSIsInNsaWRlcyQyIiwicmVzdWx0cyQxIiwicmVzdWx0cyQyIiwic3BlYyIsImV4ZXJjaXNlJDAiLCJyZXN1bHRzJDMiLCJyZXN1bHRzJDQiLCJ1cGRhdGVfc2VsZWN0ZWRfZWRpdG9yIiwiZWRpdG9ycyQwIiwiZSIsImdldF9jdXJzb3JfaW5mbyIsInN0YXRpY3MkMCIsInBwX3VwZGF0ZSIsInNob3dfdXBkYXRlIiwiYTMiLCJhMiQwIiwidXBkYXRlX29mX3NleHAiLCJhcmcxXzAzNCIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJzZXhwX2FyZ3NfMDEyIiwiYXJnMl8wMTUiLCJhcmcxXzAxNCIsImFyZzBfMDEzIiwicmVzMF8wMTYiLCJyZXMxXzAxNyIsInJlczJfMDE4Iiwic2V4cF9hcmdzXzAyMSIsImFyZzNfMDI1IiwiYXJnMl8wMjQiLCJhcmcxXzAyMyIsImFyZzBfMDIyIiwicmVzMl8wMjgiLCJyZXMzXzAyOSIsInNleHBfb2ZfdXBkYXRlIiwicmVzMF8wMzgiLCJhcmcyXzA0MSIsImFyZzFfMDQwIiwiYXJnMF8wMzkiLCJyZXMxXzA0MyIsInJlczJfMDQ0IiwiYXJnM18wNDgiLCJhcmcyXzA0NyIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMxXzA1MCIsInJlczJfMDUxIiwicmVzM18wNTIiLCJhcmcxXzA1NCIsInVwZGF0ZV9vZl95b2pzb24iLCJ2MyIsInYyJDEiLCJ2MiQyIiwidjMkMCIsInlvanNvbl9vZl91cGRhdGUiLCJzZXRfdXBkYXRlIiwiZXhwbGFpblRoaXNNb2RlbCIsImIiLCJmZWVkYmFja19vcHRpb24iLCJwb3N0IiwicHJlIiwiZm9ybSQwIiwiZmVlZGJhY2siLCJmb3JtJDEiLCJmZWVkYmFja19vcHRpb24kMCIsImZvcm1faWQkMCIsImdyb3VwX2lkJDAiLCJwb3N0X2Zvcm0iLCJmb3JtJDIiLCJwcmVfZm9ybSIsImZvcm0kMyIsInBvc3RfZXhhbXBsZSIsInByZV9leGFtcGxlIiwiZXhhbXBsZSQwIiwiZm9ybSQ0IiwiZm9ybV9pZCQxIiwiZ3JvdXBfaWQkMSIsImciLCJwb3N0X2dyb3VwIiwicHJlX2dyb3VwIiwic2V4cF8wMDIiLCJmaWVsZF9zZXhwc18wMDMiLCJyb3dfaGVpZ2h0XzAwNCIsImNvbF93aWR0aF8wMDYiLCJkdXBsaWNhdGVzXzAwOCIsImV4dHJhXzAwOSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTIiLCJmaWVsZF9uYW1lXzAxMCIsInRhaWxfMDE3IiwiZmllbGRfc2V4cF8wMTEkMiIsImZpZWxkX3NleHBfMDExIiwieF8wMTgiLCJmaWVsZF9zZXhwXzAxMSQwIiwiZnZhbHVlXzAxNCIsImZpZWxkX3NleHBfMDExJDEiLCJmdmFsdWVfMDEzIiwiY29sX3dpZHRoXzAwNyIsInJvd19oZWlnaHRfMDA1IiwiY29sX3dpZHRoXzAyMiIsInJvd19oZWlnaHRfMDIwIiwiYXJnXzAyMyIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJyb3dfaGVpZ2h0X2ZpZWxkIiwiY29sX3dpZHRoX2ZpZWxkIiwiY29sX3dpZHRoX3ZhbHVlIiwicm93X2hlaWdodF92YWx1ZSIsInZfY29sX3dpZHRoIiwidl9yb3dfaGVpZ2h0IiwiY2xpcGJvYXJkX3NoaW1faWQiLCJnZXRfZWxlbV9ieV9pZCIsImRvYyIsImdldF9jaGlsZF93aXRoX2NsYXNzIiwiY2xhc3NOYW1lIiwic2libGluZyQxIiwic2libGluZyQwIiwiZGF0ZV9ub3ciLCJ0aW1lc3RhbXAiLCJnZXRfa2V5IiwiY3RybF9oZWxkIiwic2hpZnRfaGVsZCIsImFsdF9oZWxkIiwibWV0YV9oZWxkIiwibnVtX2NsaWNrcyIsImlzX2RvdWJsZV9jbGljayIsImRvd25sb2FkX3N0cmluZ19maWxlIiwiY29udGVudF90eXBlIiwiY29udGVudHMiLCJibG9iIiwiZG93bmxvYWRfanNvbiIsInJlYWRfZmlsZSIsImZpbGUiLCJvcHRpb24iLCJzZXRfbG9jYWxzdG9yZSIsImxvY2FsX3N0b3JlIiwiZ2V0X2xvY2Fsc3RvcmUiLCJjbGVhcl9sb2NhbHN0b3JlIiwiY29uZmlybSIsIm1lc3NhZ2UiLCJsb2ciLCJmb2N1c19jbGlwYm9hcmRfc2hpbSIsImNsaXBib2FyZF9zaGltIiwiY29weSIsInNjcm9sbF9jdXJzb3JfaW50b192aWV3X2lmX25lZSIsImNhcmV0X2VsZW0iLCJtYWluIiwic2V0X2N1cnJlbnQiLCJmcmFnIiwiZnJhZyQwIiwiaGlzdG9yeSIsImdldF9jdXJyZW50IiwiZnJhZ21lbnRfb2ZfdXJsIiwicHJlZml4Iiwic2F2ZV9zZXR0aW5nc19rZXkiLCJzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5Iiwic2F2ZV9zY3JhdGNoX2tleSIsInNhdmVfZG9jdW1lbnRhdGlvbl9rZXkiLCJjdXJfZXhlcmNpc2Vfa2V5IiwiZnVsbF9rZXkiLCJzYXZlIiwidmFsdWUiLCJsb2FkIiwic2F2ZSQwIiwibG9hZCQwIiwic2VyaWFsaXplJDAiLCJkZXNlcmlhbGl6ZSQwIiwic2F2ZSQxIiwibG9hZCQxIiwiZXhwb3J0JDEiLCJpbXBvcnQkMSIsInBwX3BlcnNpc3RlbnQiLCJzaG93X3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X29mX3NleHAiLCJzZXhwX29mX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50IiwidG9fcGVyc2lzdGVudCIsIm9mX3BlcnNpc3RlbnQiLCJzZXJpYWxpemUkMSIsInNjcmF0Y2giLCJkZXNlcmlhbGl6ZSQxIiwic2F2ZSQyIiwiaW5pdCQxIiwibG9hZCQyIiwiZXhwb3J0JDIiLCJpbXBvcnQkMiIsInBwX3BlcnNpc3RlbnQkMCIsInNob3dfcGVyc2lzdGVudCQwIiwicGVyc2lzdGVudF9vZl9zZXhwJDAiLCJzZXhwX29mX3BlcnNpc3RlbnQkMCIsInBlcnNpc3RlbnRfb2ZfeW9qc29uJDAiLCJ5b2pzb25fb2ZfcGVyc2lzdGVudCQwIiwidG9fcGVyc2lzdGVudCQwIiwic3RyaW5nIiwib2ZfcGVyc2lzdGVudCQwIiwic2VyaWFsaXplJDIiLCJkZXNlcmlhbGl6ZSQyIiwic2F2ZSQzIiwiaW5pdCQyIiwiZG9jdW1lbnRhdGlvbiIsImxvYWQkMyIsImV4cG9ydCQzIiwiaW1wb3J0JDMiLCJrZXlzdHJpbmdfb2Zfa2V5Iiwia2V5c3RyaW5nX29mIiwia2V5X29mX2tleXN0cmluZyIsImtleXN0cmluZyIsInNhdmVfZXhlcmNpc2Vfa2V5Iiwic2F2ZV9leGVyY2lzZSIsImluaXRfZXhlcmNpc2UiLCJsb2FkX2V4ZXJjaXNlIiwic2F2ZSQ0IiwiaW5pdCQzIiwibG9hZCQ0IiwiZmlyc3Rfc3BlYyIsImZpcnN0X2tleSIsInByZXBfZXhlcmNpc2VfZXhwb3J0Iiwic2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImV4cG9ydCQ0IiwiaW1wb3J0JDQiLCJleGVyY2lzZV9leHBvcnQiLCJwZXJzaXN0ZW50X3N0YXRlIiwic3BlYyQwIiwiZXJyb3Jfc291cmNlXzA2NiIsInNleHBfYXJnc18wMjIiLCJhcmcwXzAyMyIsInJlczBfMDI0Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJyZXMwXzAxNCIsInJlczBfMDMxIiwicmVzMF8wMzMiLCJhcmcwXzAzNCIsImFyZzBfMDM2IiwicmVzMF8wMzciLCJzZXhwXzA0MSIsImZpZWxkX3NleHBzXzA0MiIsInNldHRpbmdzXzA0MyIsImZvbnRfbWV0cmljc18wNDUiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfMDQ3IiwibW91c2Vkb3duXzA0OSIsImNvbG9yX2hpZ2hsaWdodHNfMDUxIiwiaW5qZWN0X2dsb2JhbF8wNTMiLCJkdXBsaWNhdGVzXzA1NSIsImV4dHJhXzA1NiIsInNleHBfMDQxJDAiLCJmaWVsZF9zZXhwc18wNTkiLCJmaWVsZF9uYW1lXzA1NyIsInRhaWxfMDY4IiwiZmllbGRfc2V4cF8wNTgkNiIsImZpZWxkX3NleHBfMDU4IiwieF8wNjkiLCJmaWVsZF9zZXhwXzA1OCQwIiwiZnZhbHVlXzA2MyIsImZpZWxkX3NleHBfMDU4JDEiLCJmdmFsdWVfMDY1IiwiZmllbGRfc2V4cF8wNTgkMiIsImZ2YWx1ZV8wNjIiLCJmaWVsZF9zZXhwXzA1OCQzIiwiZnZhbHVlXzA2MCIsImZpZWxkX3NleHBfMDU4JDQiLCJmdmFsdWVfMDY0IiwiZmllbGRfc2V4cF8wNTgkNSIsImZ2YWx1ZV8wNjEiLCJpbmplY3RfZ2xvYmFsXzA1NCIsImNvbG9yX2hpZ2hsaWdodHNfMDUyIiwibW91c2Vkb3duXzA1MCIsInNob3dfYmFja3BhY2tfdGFyZ2V0c18wNDgiLCJmb250X21ldHJpY3NfMDQ2Iiwic2V0dGluZ3NfMDQ0IiwiY29sb3JfaGlnaGxpZ2h0c18wNzkiLCJtb3VzZWRvd25fMDc3Iiwic2hvd19iYWNrcGFja190YXJnZXRzXzA3NSIsImZvbnRfbWV0cmljc18wNzMiLCJzZXR0aW5nc18wNzEiLCJibmRzXzA3MCIsImFyZ18wODIiLCJibmRzXzA3MCQwIiwiYXJnXzA4MCIsImJuZHNfMDcwJDEiLCJhcmdfMDc4IiwiYm5kc18wNzAkMiIsImFyZ18wNzYiLCJibmRzXzA3MCQzIiwiYXJnXzA3NCIsImJuZHNfMDcwJDQiLCJhcmdfMDcyIiwiYm5kc18wNzAkNSIsImZvbnRfbWV0cmljc19maWVsZCIsInNob3dfYmFja3BhY2tfdGFyZ2V0c19maWVsZCIsIm1vdXNlZG93bl9maWVsZCIsImNvbG9yX2hpZ2hsaWdodHNfZmllbGQiLCJpbmplY3RfZ2xvYmFsX2ZpZWxkIiwiaW5qZWN0X2dsb2JhbF92YWx1ZSIsImNvbG9yX2hpZ2hsaWdodHNfdmFsdWUiLCJtb3VzZWRvd25fdmFsdWUiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfdmFsdWUiLCJmb250X21ldHJpY3NfdmFsdWUiLCJ2X2NvbG9yX2hpZ2hsaWdodHMiLCJ2X21vdXNlZG93biIsInZfc2hvd19iYWNrcGFja190YXJnZXRzIiwidl9mb250X21ldHJpY3MiLCJjYWxjdWxhdGUiLCJjb2xvcl9oaWdobGlnaHRzIiwicHAkMiIsInNob3ckMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJ0X29mX3lvanNvbiQyIiwieW9qc29uX29mX3QkMiIsInBwX3RpbWVzdGFtcCIsInNob3dfdGltZXN0YW1wIiwidGltZXN0YW1wX29mX3lvanNvbiIsInlvanNvbl9vZl90aW1lc3RhbXAiLCJ0aW1lc3RhbXBfb2Zfc2V4cCIsInNleHBfb2ZfdGltZXN0YW1wIiwiY3V0b2ZmIiwibG9hZF9lZGl0b3JzIiwic2F2ZV9lZGl0b3JzIiwiZ2xvYmFscyIsInNhdmVfYW5kX3JldHVybiIsInJlc2V0IiwibmV3X21vZGVsIiwiZXJyb3Jfc291cmNlXzAxOCIsImVycm9yX3NvdXJjZV8wMjkiLCJlcnJvcl9zb3VyY2VfMDMzIiwiZXJyb3Jfc291cmNlXzA0NCIsImVycm9yX3NvdXJjZV8wNjIiLCJlcnJvcl9zb3VyY2VfMTk2IiwicHBfc3RlcHBlcl9hY3Rpb24iLCJzaG93X3N0ZXBwZXJfYWN0aW9uIiwic3RlcHBlcl9hY3Rpb25fb2Zfc2V4cCIsInNleHBfb2Zfc3RlcHBlcl9hY3Rpb24iLCJzdGVwcGVyX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcHBlcl9hY3Rpb24iLCJwcF9hZ2VudCIsInNob3dfYWdlbnQiLCJhZ2VudF9vZl9zZXhwIiwic2V4cF8wMTUiLCJzZXhwX29mX2FnZW50IiwiYWdlbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX2FnZW50IiwicHBfYWdlbnRfYWN0aW9uIiwic2hvd19hZ2VudF9hY3Rpb24iLCJhZ2VudF9hY3Rpb25fb2Zfc2V4cCIsInRhZ18wMjEiLCJzZXhwX29mX2FnZW50X2FjdGlvbiIsImFyZzBfMDI1IiwiYWdlbnRfYWN0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9hZ2VudF9hY3Rpb24iLCJwcF9iZW5jaG1hcmtfYWN0aW9uIiwic2hvd19iZW5jaG1hcmtfYWN0aW9uIiwiYmVuY2htYXJrX2FjdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9iZW5jaG1hcmtfYWN0aW9uIiwiYmVuY2htYXJrX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYmVuY2htYXJrX2FjdGlvbiIsInBwX2VkaXRvcl9hY3Rpb24iLCJzaG93X2VkaXRvcl9hY3Rpb24iLCJlZGl0b3JfYWN0aW9uX29mX3NleHAiLCJzZXhwXzAzNSIsInRhZ18wMzYiLCJzZXhwX29mX2VkaXRvcl9hY3Rpb24iLCJhcmcwXzA0MCIsInJlczBfMDQxIiwiZWRpdG9yX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZWRpdG9yX2FjdGlvbiIsInBwX2NlbGxfYWN0aW9uIiwic2hvd19jZWxsX2FjdGlvbiIsImNlbGxfYWN0aW9uX29mX3NleHAiLCJzZXhwXzA0NiIsInRhZ18wNDciLCJzZXhwX2FyZ3NfMDQ4IiwiYXJnMF8wNDkiLCJzZXhwX2FyZ3NfMDUzIiwiYXJnMF8wNTQiLCJzZXhwX29mX2NlbGxfYWN0aW9uIiwiYXJnMF8wNTYiLCJyZXMwXzA1NyIsImFyZzBfMDU4IiwicmVzMF8wNTkiLCJjZWxsX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY2VsbF9hY3Rpb24iLCJhMCQ1IiwiYTAkNiIsImEwJDciLCJhMCQ4IiwiYTAkOSIsImEwJDEwIiwiYTAkMTEiLCJhMCQxMiIsImEwJDEzIiwiYTAkMTQiLCJzZXhwXzA2NCIsInRhZ18wNjUiLCJzZXhwX2FyZ3NfMTExIiwiYXJnMF8xMTIiLCJyZXMwXzExMyIsInNleHBfYXJnc18xMzYiLCJhcmcwXzEzNyIsInJlczBfMTM4Iiwic2V4cF9hcmdzXzE0OCIsImFyZzBfMTQ5IiwicmVzMF8xNTAiLCJzZXhwX2FyZ3NfMDcxIiwiYXJnMF8wNzIiLCJyZXMwXzA3MyIsInNleHBfYXJnc18xNTMiLCJhcmcwXzE1NCIsInJlczBfMTU1Iiwic2V4cF9hcmdzXzE0MSIsImFyZzFfMTQzIiwiYXJnMF8xNDIiLCJyZXMwXzE0NCIsInJlczFfMTQ1Iiwic2V4cF9hcmdzXzA5NiIsImFyZzBfMDk3IiwicmVzMF8wOTgiLCJyZXMwXzEwOCIsInNleHBfYXJnc18wNjYiLCJhcmcwXzA2NyIsInJlczBfMDY4Iiwic2V4cF9hcmdzXzA4MSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMF8xMDIiLCJyZXMwXzEwMyIsInNleHBfYXJnc18wOTEiLCJhcmcwXzA5MiIsInJlczBfMDkzIiwic2V4cF9hcmdzXzEyMSIsImFyZzBfMTIyIiwic2V4cF9hcmdzXzExNiIsInJlczBfMTE4Iiwic2V4cF9hcmdzXzEzMSIsInNleHBfYXJnc18xMjYiLCJhcmcwXzEyNyIsInNleHBfYXJnc18wNzYiLCJyZXMwXzA3OCIsInNleHBfYXJnc18wODYiLCJhcmcwXzA4NyIsInJlczBfMDg4IiwiYXJnMF8xNTYiLCJyZXMwXzE1NyIsImFyZzBfMTYyIiwicmVzMF8xNjMiLCJhcmcwXzE2NCIsInJlczBfMTY1IiwiYXJnMF8xNjYiLCJyZXMwXzE2NyIsImFyZzBfMTY4IiwicmVzMF8xNjkiLCJhcmcwXzE3MCIsInJlczBfMTcxIiwiYXJnMF8xNzIiLCJyZXMwXzE3MyIsImFyZzBfMTc0IiwicmVzMF8xNzUiLCJhcmcwXzE3NiIsInJlczBfMTc3IiwiYXJnMF8xNzgiLCJhcmcwXzE4MCIsInJlczBfMTgxIiwiYXJnMF8xODIiLCJyZXMwXzE4MyIsImFyZzBfMTg0IiwicmVzMF8xODUiLCJhcmcxXzE4NyIsImFyZzBfMTg2IiwicmVzMF8xODgiLCJyZXMxXzE4OSIsImFyZzBfMTkwIiwicmVzMF8xOTEiLCJ5b2pzb25fYXJncyQ1IiwidjAkMTEiLCJ2MCQxMiIsInlvanNvbl9hcmdzJDEyIiwidjAkMjUiLCJ2MCQyNiIsInlvanNvbl9hcmdzJDExIiwidjAkMjMiLCJ2MCQyNCIsInlvanNvbl9hcmdzJDEwIiwidjAkMjEiLCJ2MCQyMiIsInlvanNvbl9hcmdzJDkiLCJ2MCQxOSIsInYwJDIwIiwieW9qc29uX2FyZ3MkOCIsInYwJDE3IiwidjAkMTgiLCJ5b2pzb25fYXJncyQ3IiwidjAkMTUiLCJ2MCQxNiIsInlvanNvbl9hcmdzJDYiLCJ2MCQxMyIsInYwJDE0IiwieW9qc29uX2FyZ3MkMTYiLCJ2MCQzMyIsInYwJDM0IiwieW9qc29uX2FyZ3MkMTUiLCJ2MCQzMSIsInYwJDMyIiwieW9qc29uX2FyZ3MkMTQiLCJ2MCQyOSIsInYwJDMwIiwieW9qc29uX2FyZ3MkMTMiLCJ2MCQyNyIsInYwJDI4Iiwic2V4cF8xOTgiLCJ0YWdfMTk5Iiwic2V4cF9hcmdzXzIwNSIsImFyZzBfMjA2IiwicmVzMF8yMDciLCJzZXhwX2FyZ3NfMjAwIiwiYXJnMF8yMDEiLCJyZXMwXzIwMiIsImFyZzBfMjA4IiwicmVzMF8yMDkiLCJhcmcwXzIxMCIsInJlczBfMjExIiwiaXNfZWRpdCIsInNfYWN0aW9uIiwicmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSIsInNob3VsZF9zY3JvbGxfdG9fY2FyZXQiLCJhc3Npc3RhbnRfYWN0aW9uX3RvX2VkaXRvcl9hY3QiLCJhZ2VudF9hY3Rpb24iLCJzdWdnZXN0aW9uIiwiY29tcGxldGlvbiIsInN0YXJ0Iiwic2FtcGxlXzEiLCJzdHJfdG9faW5zZXJ0cyIsImMkMCIsImFjdGlvbnNfMSIsInRpbWUiLCJmaW5pc2giLCJlbGFwc2VkIiwicHJpbnQiLCJhY3RpdmVfZWRpdG9yIiwiYWN0aXZlX2VkaXRvciQwIiwiZW52X2luaXQiLCJpbmRleCQwIiwiY2kiLCJkYl9uYW1lIiwidGFibGVfbmFtZSIsImlzX2FjdGlvbl9sb2dnZWQiLCJrdl9zdG9yZSIsImRiIiwid2l0aF9kYiIsImVycm9yIiwidXBncmFkZSIsImFkZCIsImdldF9hbGwiLCJjbGVhcl9hbmQiLCJjYWxsYmFjayIsInJlczBfMDEwIiwicmVzMV8wMTEiLCJwcF9zIiwic2hvd19zIiwic19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcyIsInNfb2Zfc2V4cCIsInhfMDEzIiwic2V4cF9vZl9zIiwieF8wMTQiLCJ0cyIsImdldF9hbmQiLCJlbnRyaWVzIiwiZXJyb3Jfc291cmNlXzAyNyIsImVycm9yX3NvdXJjZV8wNjQiLCJwcF9hbGwiLCJzaG93X2FsbCIsImFsbF9vZl9zZXhwIiwic2V0dGluZ3NfMDA0IiwiZXhwbGFpblRoaXNNb2RlbF8wMDYiLCJzY3JhdGNoXzAwOCIsImV4ZXJjaXNlXzAxMCIsImRvY3VtZW50YXRpb25fMDEyIiwibG9nXzAxNCIsImR1cGxpY2F0ZXNfMDE2IiwiZXh0cmFfMDE3IiwiZmllbGRfc2V4cHNfMDIwIiwiZmllbGRfbmFtZV8wMTgiLCJ0YWlsXzAyOSIsImZpZWxkX3NleHBfMDE5JDYiLCJmaWVsZF9zZXhwXzAxOSIsInhfMDMwIiwiZmllbGRfc2V4cF8wMTkkMCIsImZ2YWx1ZV8wMjYiLCJmaWVsZF9zZXhwXzAxOSQxIiwiZnZhbHVlXzAyNCIsImZpZWxkX3NleHBfMDE5JDIiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTkkMyIsImZ2YWx1ZV8wMjUiLCJmaWVsZF9zZXhwXzAxOSQ0IiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDE5JDUiLCJmdmFsdWVfMDIyIiwibG9nXzAxNSIsImRvY3VtZW50YXRpb25fMDEzIiwiZXhlcmNpc2VfMDExIiwic2NyYXRjaF8wMDkiLCJleHBsYWluVGhpc01vZGVsXzAwNyIsInNldHRpbmdzXzAwNSIsInNleHBfb2ZfYWxsIiwibG9nXzA0MiIsImRvY3VtZW50YXRpb25fMDQwIiwiZXhlcmNpc2VfMDM4Iiwic2NyYXRjaF8wMzYiLCJleHBsYWluVGhpc01vZGVsXzAzNCIsInNldHRpbmdzXzAzMiIsImFyZ18wNDMiLCJibmRzXzAzMSIsImFyZ18wNDEiLCJibmRzXzAzMSQwIiwiYXJnXzAzOSIsImJuZHNfMDMxJDEiLCJhcmdfMDM3IiwiYm5kc18wMzEkMiIsImFyZ18wMzUiLCJibmRzXzAzMSQzIiwiYXJnXzAzMyIsImJuZHNfMDMxJDQiLCJhbGxfb2ZfeW9qc29uIiwiZXhwbGFpblRoaXNNb2RlbF9maWVsZCIsImV4ZXJjaXNlX2ZpZWxkIiwibG9nX2ZpZWxkIiwibG9nX3ZhbHVlIiwiZXhlcmNpc2VfdmFsdWUiLCJleHBsYWluVGhpc01vZGVsX3ZhbHVlIiwieW9qc29uX29mX2FsbCIsInZfbG9nIiwidl9leGVyY2lzZSIsInZfZXhwbGFpblRoaXNNb2RlbCIsInBwX2FsbF9mMjIiLCJzaG93X2FsbF9mMjIiLCJhbGxfZjIyX29mX3NleHAiLCJzZXhwXzA0NSIsImZpZWxkX3NleHBzXzA0NiIsInNldHRpbmdzXzA0NyIsInNjcmF0Y2hfMDQ5IiwiZXhlcmNpc2VfMDUxIiwibG9nXzA1MyIsInNleHBfMDQ1JDAiLCJ0YWlsXzA2NiIsInhfMDY3IiwibG9nXzA1NCIsImV4ZXJjaXNlXzA1MiIsInNjcmF0Y2hfMDUwIiwic2V0dGluZ3NfMDQ4Iiwic2V4cF9vZl9hbGxfZjIyIiwibG9nXzA3NSIsImV4ZXJjaXNlXzA3MyIsInNjcmF0Y2hfMDcxIiwic2V0dGluZ3NfMDY5IiwiYm5kc18wNjgiLCJibmRzXzA2OCQwIiwiYm5kc18wNjgkMSIsImFyZ18wNzAiLCJibmRzXzA2OCQyIiwiYWxsX2YyMl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYWxsX2YyMiIsIm1rX2FsbCIsImV4cG9ydF9hbGwiLCJpbXBvcnRfYWxsIiwiYWxsIiwiYWxsX2YyMiIsInNjaGVkdWxlX2V2YWx1YXRpb24iLCJzY2hlZHVsZV9hY3Rpb24iLCJlbGFicyIsImV2YWxfcnMiLCJycXMiLCJycyIsIm5ld19ycyIsInN0ZXBfcnMiLCJuZXdfcnMkMCIsInVwZGF0ZV9jYWNoZWRfZGF0YSIsIm0iLCJ1cGRhdGVfc3RhdGljcyIsInVwZGF0ZV9keW5hbWljcyIsInVwZGF0ZV9zdGF0aWNzJDAiLCJtJDAiLCJwZXJmb3JtX2FjdGlvbiIsImVkIiwibW9kZWwkMCIsImVyciIsInBlcmZvcm1fYWN0aW9ucyIsImFzIiwibW9kZWwkMSIsInN3aXRjaF9zY3JhdGNoX3NsaWRlIiwic3BlY3MkMCIsImV4cG9ydF9wZXJzaXN0ZW50X2RhdGEiLCJhcHBseSIsImVkJDAiLCJ6aXBwZXJfaW5pdCIsImVkX3N0ciIsInokMCIsImVkaXRvcnMkMSIsImVkaXRvcnMkMiIsImUkMCIsImIkMCIsImZtIiwidGlsZSIsImVkaXRvcnMkMyIsImZpbGUkMCIsImRhdGEkMSIsImVkaXRvcnMkNCIsImluc3RydWN0b3JfbW9kZSQwIiwiZWRpdG9ycyQ1IiwiYSQwIiwiciIsInIkMCIsImV2YWxzIiwiZXZhbCQwIiwibGFtIiwidXBfYXJyb3ciLCJkb3duX2Fycm93IiwibGVmdF9hcnJvdyIsInJpZ2h0X2Fycm93IiwibmJzcCIsInp3c3AiLCJ0eXBlQXJyb3dTeW0iLCJjYXN0QXJyb3dTeW0iLCJlbGxpcHNpcyIsImxlbmd0aCIsInN0b3AiLCJjb3VudCIsImNvdW50JDAiLCJzdGFydCQwIiwiY291bnQkMSIsInN0YXJ0JDEiLCJjb3VudCQyIiwic3RhcnQkMiIsInN0YXJ0JDMiLCJ0cGF0X3ZpZXciLCJ0eV92aWV3IiwiY2xzIiwiYWxpYXNfdmlldyIsInZpZXdfdHkiLCJvcHQkMCIsInN0cmlwX291dGVyX3BhcmVucyIsInByb3YiLCJ0MiIsInQxIiwicGFyZW5fdmlldyIsInQwIiwidHMkMCIsImN0cl92aWV3IiwidHNfdmlld3MiLCJ0MCQwIiwidHMkMSIsInQkMCIsIm5hbWUkMCIsInQkMSIsIm5hbWUkMSIsInR5cCQwIiwiY3RyIiwidmlldyIsInR5IiwicG9seV9pZF9leCIsInRwIiwidHlwZnVuX3ZhciIsInR5cGVfZnVuY3Rpb25zX2Jhc2ljIiwidHlwZnVuYXBwX2V4cF9leCIsImV4cF90ZnVuIiwidHlwZnVuYXBwX2V4cF9jb2xvcmluZ19pZHMiLCJmX2lkIiwidHlwX2lkIiwidHlwZnVuYXBwX2V4cCIsInR5cGZ1bmFwcyIsInR5cGFubl9wYXRfY29sb3JpbmdfaWRzIiwicGF0X2lkIiwidHlwYW5uX3BhdCIsInR5cGFubiIsInR5cF9kZWYiLCJ0eWFsaWFzX2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyIsInRwYXRfaWQiLCJkZWZfaWQiLCJ0eWFsaWFzX2V4cCIsInR5YWxpYXNfZXhwcyIsImV4cGxhbmF0aW9uJDAiLCJleHBsYW5hdGlvbiQxIiwiZXhwbGFuYXRpb24kMiIsImNvbW1hIiwidHVwbGVfdHlwIiwidHVwbGUwX3R5cCIsInR5cF9lbGVtMSIsInR5cF9lbGVtMiIsInR1cGxlMl90eXBfY29sb3JpbmdfaWRzIiwiZWxlbTFfaWQiLCJlbGVtMl9pZCIsImNvbW1hJDAiLCJ0dXBsZTJfdHlwIiwidHlwX2VsZW0xJDAiLCJ0eXBfZWxlbTIkMCIsInR5cF9lbGVtMyIsInR1cGxlM190eXBfY29sb3JpbmdfaWRzIiwiZWxlbTNfaWQiLCJjb21tYSQxIiwidHVwbGUzX3R5cCIsInR1cGxlIiwidHVwbGUwIiwidHVwbGUyIiwidHVwbGUzIiwidHVwbGVfcGF0IiwicGF0MSIsInBhdDIiLCJ0dXBsZV9wYXRfc2l6ZTJfY29sb3JpbmdfaWRzIiwidHVwbGVfcGF0X3NpemUyIiwicGF0MSQwIiwicGF0MiQwIiwicGF0MyIsInR1cGxlX3BhdF9zaXplM19jb2xvcmluZ19pZHMiLCJ0dXBsZV9wYXRfc2l6ZTMiLCJ0dXBsZV9leGFtcGxlXzEiLCJ0dXBsZV9leGFtcGxlXzIiLCJ0dXBsZV9leHAiLCJleHAxIiwiZXhwMiIsInR1cGxlX2V4cF9zaXplMl9jb2xvcmluZ19pZHMiLCJleHAxX2lkIiwiZXhwMl9pZCIsInR1cGxlX2V4cF9zaXplMiIsImV4cDEkMCIsImV4cDIkMCIsImV4cDMiLCJ0dXBsZV9leHBfc2l6ZTNfY29sb3JpbmdfaWRzIiwiZXhwM19pZCIsInR1cGxlX2V4cF9zaXplMyIsInR1cGxlcyIsInR1cGxlczIiLCJ0dXBsZXMzIiwianVtcF90b190ZXN0IiwiaW5qZWN0IiwiZWZmZWN0MSIsImVmZmVjdDIiLCJyZXN1bHQxIiwidGVzdF9iYXJfc2VnbWVudCIsImluamVjdF9qdW1wIiwicmVwb3J0cyIsInN0YXR1cyIsInRlc3RfYmFyIiwidGVzdF9yZXN1bHRzIiwicGVyY2VudF92aWV3IiwicGVyY2VudGFnZSIsInRlc3RfcGVyY2VudGFnZSIsInRlc3RfdGV4dCIsInRlc3Rfc3VtbWFyeSIsInRlc3RfcmVzdWx0cyQwIiwidmlld19vZl9tYWluX3RpdGxlX2JhciIsInRpdGxlX3RleHQiLCJ0ZXN0X3RydWVfZXgiLCJ0ZXN0X2ZhbHNlX2V4IiwiZXhwX2JvZHkiLCJ0ZXN0X2V4cF9jb2xvcmluZ19pZHMiLCJib2R5X2lkIiwidGVzdF9leHAiLCJ0ZXN0cyIsImV4cGxhbmF0aW9uJDMiLCJpbnRfdHlwIiwiZmxvYXRfdHlwIiwiYm9vbF90eXAiLCJzdHJfdHlwIiwidmFyX3R5cCIsImZsb2F0JDAiLCJib29sIiwidmFyJDAiLCJleHBsYW5hdGlvbiQ2IiwiZXhwbGFuYXRpb24kNSIsImV4cGxhbmF0aW9uJDQiLCJ3aWxkX3BhdCIsImludGxpdF9wYXQiLCJmbG9hdGxpdF9wYXQiLCJib29sbGl0X3BhdCIsInN0cmxpdF9wYXQiLCJ0cml2X3BhdCIsInZhcl9wYXQiLCJjdHJfcGF0Iiwid2lsZCIsImludGxpdCIsImZsb2F0bGl0IiwiYm9vbGxpdCIsInN0cmxpdCIsInRyaXYiLCJ0cml2X2V4cCIsInRyaXZfZXhwcyIsImRlZmVycmFsX2V4cF9leCIsImRlZmVycmFsX2V4cCIsImRlZmVycmFsX2V4cHMiLCJib29sX2V4cCIsImJvb2xfZXhwcyIsImludF9leHAiLCJpbnRfZXhwcyIsImZsb2F0X2V4cCIsImZsb2F0X2V4cHMiLCJzdHJpbmdfZXhwIiwic3RyaW5nX2V4cHMiLCJ2YXJfZXhwIiwidmFyX2V4cHMiLCJjdHJfZXhwIiwidmFsdWVzIiwic29ydGVkX3ZhbHVlcyIsInkiLCJvcmRpbmFscyIsInZhbHVlcyQwIiwibWtfbm9kZSIsInNoYXBlIiwibWlkIiwicGVyZm9ybSIsIm9wIiwidHJlZSIsImdvIiwiaW50ZXJ2YWwiLCJub2RlIiwibm9kZSQwIiwibCQwIiwibCQxIiwiciQxIiwibmV3X3Jvb3QiLCJtc2ciLCJpbnNlcnQiLCJkZWxldGUkMCIsImNvbXBsZW1lbnRfaW50ZXJzZWN0aW9uIiwic3RhY2siLCJyZXN0IiwiYiQxIiwiYSQxIiwic3RhY2skMCIsIm9yZGluYWwyIiwib3JkaW5hbDEiLCJvMiIsIm8xIiwiY21kZnVkZ2UiLCJzdGgkMCIsInkkMCIsInkkMSIsIngkMiIsInkkMiIsImR4IiwiZHkiLCJoIiwiaCQwIiwidiQwIiwic2NhbGVfY21kIiwic2NhbGVfeCIsInNjYWxlX3kiLCJkeSQwIiwiZHgkMCIsImR4JDEiLCJkeSQxIiwic2NhbGUiLCJyZXZlcnNlIiwidHJhbnNsYXRlX2NtZCIsImNtZCIsInRyYW5zbGF0ZSIsInN0cmluZ19vZl9mbGFnIiwic3RyaW5nX29mX2NvbW1hbmQiLCJkeSQyIiwiZHgkMiIsInN3ZWVwX2ZsYWciLCJsYXJnZV9hcmNfZmxhZyIsInhfYXhpc19yb3RhdGlvbiIsInJ5IiwicngiLCJhdHRycyIsInBhdGgiLCJidWZmZXIiLCJsaW5rZWRfZWRnZV9lcSIsImUxIiwiZTIiLCJjbWRfb2ZfbGlua2VkX2VkZ2UiLCJlZGdlIiwic3JjIiwiZHN0Iiwicm91bmRfY29ybmVycyIsIm1heF9yYWRpaSIsInJ4X21pbiIsInJ5X21pbiIsImNtZDIiLCJjbWQxIiwicnkkMCIsInJ4JDAiLCJjbG9ja3dpc2UiLCJyeSQxIiwicngkMSIsImNsb2Nrd2lzZSQwIiwiaXNfbGVmdF9zaWRlIiwibWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlIiwiZWRnZXMiLCJyaWdodF9lZGdlcyIsImxlZnRfZWRnZXMiLCJ0bCIsImhkIiwibWVyZ2VkX2xlZnRfZWRnZXMiLCJtZXJnZWRfcmlnaHRfZWRnZXMiLCJ2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzIiwicmVjdHMiLCJoZWlnaHQiLCJ3aWR0aCIsIm1pbiIsIm1heF94IiwibWF4X3kiLCJtYXgiLCJtaW5fbWF4IiwibWF4X21pbiIsImlzX2xlZnQxIiwiaXNfbGVmdDIiLCJzb3J0ZWRfdmVydGljYWxfc2lkZXMiLCJzZWdtZW50X3RyZWUiLCJ5cyIsIm1rX2NvbnRvdXJfZWRnZSIsInlfZHN0IiwieV9zcmMiLCJuZXdfY29udG91cl9lZGdlcyIsInVwZGF0ZWRfdHJlZSIsInVwZGF0ZWRfdHJlZSQwIiwibmV3X2NvbnRvdXJfZWRnZXMkMCIsImNvcm5lcl9yYWRpaSIsInZlcnRpY2FsX2NvbnRvdXJfZWRnZXMkMCIsImlzX3NyYzIiLCJpc19zcmMxIiwicHQxIiwicHQyIiwibmV4dCIsInByZXYiLCJ4X2RzdCIsInhfc3JjIiwieF9kc3QkMCIsInhfc3JjJDAiLCJidWlsZF9wYXRoIiwiZGl2aWRlciIsImxhYmVsbGVkX3N1bV90eXAiLCJzdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZiIsInN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZSIsImxhYmVsbGVkX3N1bV90eXBzIiwic3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWZzIiwic3VtX3R5cF9udWxsYXJ5X2NvbnN0cnVjdG9yX2RlJDAiLCJzdmciLCJyYWlzZWRfc2hhZG93X2R4IiwicmFpc2VkX3NoYWRvd19keSIsImZ6ZXJvIiwidGlwX3dpZHRoIiwiY29uY2F2ZV9hZGoiLCJjb252ZXhfYWRqIiwic2hhZG93X2FkaiIsImNhcmV0X2FkanVzdCIsInNpZGUiLCJjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIiwic2hvcnRfdGlwX2hlaWdodCIsInN0cmV0Y2hfZHgiLCJleHRyYV90YWlsIiwiamFnZ2VkX2VkZ2VfaCIsImphZ2dlZF9lZGdlX3ciLCJzaG9ydF90aXBfd2lkdGgiLCJwb3Nfc3RyIiwiZnVkZ2UiLCJjb2RlX3N2Z19zaXplZCIsImZvbnRfbWV0cmljcyIsImxhc3QiLCJvcmlnaW4iLCJiYXNlX2NscyIsInBhdGhfY2xzIiwic3RoJDEiLCJhdHRyIiwic3RoJDIiLCJ0b3AiLCJsZWZ0Iiwic3R5bGUiLCJwb3NpdGlvbiIsImxlZnRfZnVkZ2UiLCJ0b3BfZnVkZ2UiLCJ3aWR0aF9mdWRnZSIsInN0aCQzIiwiaGVpZ2h0X2Z1ZGdlIiwic3RoJDQiLCJhYnNfcG9zaXRpb24iLCJjb2RlX3N2ZyIsInN0aCQ1Iiwic3RoJDYiLCJzdGgkNyIsImFic19wb3MiLCJyYWlzZWRfc2hhZG93X2ZpbHRlciIsInNvcnQiLCJzaGFkb3dfZmlsdGVyIiwiZmlsdGVycyIsInBwX3RpcF9zaGFwZSIsInNob3dfdGlwX3NoYXBlIiwidGlwX3NoYXBlX29mX3NleHAiLCJzZXhwX29mX3RpcF9zaGFwZSIsInRpcF9zaGFwZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfdGlwX3NoYXBlIiwidHJfYmwiLCJ3aXRoX2NoaWxkX2JvcmRlciIsInN0cmV0Y2hfeCIsInN0cmV0Y2hfeSIsImp1bmN0aW9uJDAiLCJkaWFnIiwianVuY3Rpb24kMSIsImRpYWckMCIsImJsX3RyIiwiaGVtaSIsInRsX2JyIiwianVuY3Rpb24iLCJicl90bCIsImxlZnRfdGlwX3BhdGgiLCJzX3giLCJzX3kiLCJqYWciLCJib3R0b21faGFsZiIsInRvcF9oYWxmIiwicmlnaHRfdGlwX3BhdGgiLCJ0aXBfbCIsInRpcF9yIiwib2Zmc2V0IiwibW9sZCIsIm1lYXN1cmVtZW50IiwiY19jbHMiLCJ0aXBfciQwIiwidGlwX2wkMCIsImlzX2NvbXBsZXRlIiwiaXNfY29uc2lzdGVudCIsImlzX2luX2J1ZmZlciIsInBsdXJhbGl0eSIsImxhYmVsJDAiLCJvZl9kZWxpbSIsIm9mX2RlbGltJDAiLCJvZl9ncm91dCIsImluZGVudCIsInNlY29uZGFyeV9pY29ucyIsInN0ciQwIiwib2Zfc2Vjb25kYXJ5Iiwib2Zfc2VnbWVudCIsImJ1ZmZlcl9pZHMiLCJub19zb3J0cyIsInNlZyIsImV4cGVjdGVkX3NvcnRzIiwib2ZfcGllY2UiLCJleHBlY3RlZF9zb3J0Iiwib2ZfdGlsZSIsImNoaWxkIiwiY2hpbGRyZW5fYW5kX3NvcnRzIiwiaG9sZXMiLCJzaW1wbGVfdmlldyIsInVuc2VsZWN0ZWQiLCJob2xlcyQwIiwib2ZfaG9sZSIsIm1lYXN1cmVkIiwiYmFja3BhY2tfc2VsX3ZpZXciLCJ4X29mZiIsInlfb2ZmIiwib3BhY2l0eSIsImhlaWdodF9oZWFkIiwiY2FuX3B1dF9kb3duIiwic2lkZSQwIiwiY2FyZXRfYWRqIiwiY2FyZXRfYWRqX3B4IiwibWF4X2Rpc3AiLCJ2ZXJ0aWNhbF9kaXNwIiwic2VsZWN0aW9uc19zdHlsZSIsInNjYWxlX2ZuIiwiaW5pdF9vcGFjaXR5IiwiaW5pdF9pZHgiLCJkeV9mbiIsImJhc2VfaGVpZ2h0IiwiaW5pdF95X29mZnNldCIsInZzIiwieV9vZmZzZXQiLCJ4X29mZnNldCIsIm5ld195X29mZnNldCIsIm5ld19pZHgiLCJuZXdfb3BhY2l0eSIsInNlbGVjdGlvbnMiLCJzZWxlY3Rpb25zX3ZpZXciLCJoZCQwIiwiam9pbmVyX3N0eWxlIiwiam9pbmVyIiwiZ2VuaWVfdmlldyIsImdlbmllX3N0eWxlIiwiY2FyZXRfYmVuZCIsImNhcmV0X3dpZHRoX3N0cmFpZ2h0IiwiY2FyZXRfd2lkdGhfYmVudCIsImNhcmV0X3BhdGgiLCJjYXJldF9iZW5kX3BhcmFtIiwiY2FyZXRfd2lkdGhfcGFyYW0iLCJsX2FkaiIsImNhcmV0X3Bvc2l0aW9uX3JhZGlpIiwicl95Iiwicl94IiwiYmFzZV9jbHMkMiIsImJhc2VfY2xzJDEiLCJiYXNlX2NscyQwIiwicnVuIiwiYWRqIiwibF9ob29rIiwicl9ob29rIiwic2ltcGxlX3NoYXJkX3BhdGgiLCJzaW1wbGVfc2hhcmQiLCJzaGFwZXMiLCJzaW1wbGVfc2hhcmRfc2VsZWN0ZWQiLCJzaW1wbGVfc2hhcmRfaW5kaWNhdGVkIiwiaGFzX2NhcmV0Iiwic2ltcGxlX3NoYXJkc19pbmRpY2F0ZWQiLCJjYXJldCIsInNoYXJkcyIsIm5leHRfc3RlcF9pbmRpY2F0ZWQiLCJuZXh0X3N0ZXBfc2hhcmRzX2luZGljYXRlZCIsInRha2VuX3N0ZXBfaW5kaWNhdGVkIiwidGFrZW5fc3RlcF9zaGFyZHNfaW5kaWNhdGVkIiwic2hhZG93ZnVkZ2UiLCJzaGFyZHNfb2ZfdGlsZXMiLCJ0aWxlcyIsIm0yIiwibTEiLCJiaV9saW5lcyIsInJvd3MiLCJzaGFyZF9yb3dzIiwiaW50cmFfbGluZXMiLCJyb3dfc2hhcmRzIiwicm93X3NoYXJkcyQwIiwib3JpZ2luJDAiLCJ2X2RlbHRhIiwiaW50ZXJfbGluZXMiLCJjbHNzIiwidW5pX2xpbmVzIiwibV9maXJzdCIsInJvdyIsIm1fbGFzdF9vZl9maXJzdCIsImxfbGluZSIsIm1heF9jb2wiLCJtX2xhc3QiLCJob29rIiwicl9saW5lIiwibWluX2NvbCIsInNoYXJkX3Jvd3MkMCIsInJvdyQwIiwibV9mbGFzdCIsImluZGljYXRlZCIsInJhbmdlIiwic2hvd19iYWNrcGFja190YXJnZXRzIiwidGVybXMiLCJ0ZXJtX3JhbmdlcyIsInNlbF9zaGFyZF9zdmciLCJzdGFydF9zaGFwZSIsInNlbF9vZl9waWVjZSIsInNoYXJkX2RhdGEiLCJzZWxfb2ZfdGlsZSIsInciLCJzdGFydF9zaGFwZSQwIiwidGlsZV9zaGFyZHMiLCJzZWxfb2Zfc2VnbWVudCIsImNoaWxkcmVuX3NoYXJkcyIsInNlbGVjdGVkX3BpZWNlcyIsInIyIiwibDEiLCJpbmRpY2F0ZWRfcGllY2VfZGVjbyIsIm5pYiIsInBfciIsInBfbCIsInJhbmdlJDAiLCJ0YXJnZXRzIiwiY29udGFpbmVyX3NoYXJkcyIsImJwIiwic2licyIsInN1ZiIsInNpYnMkMCIsInAkMCIsInByb2ZpbGUiLCJyb290X3RhcmdldHMiLCJ0YXJnZXRzJDAiLCJ0ZXJtX2RlY29yYXRpb24iLCJkZWNvIiwicl9lZGdlIiwibF9lZGdlIiwidGVybV9oaWdobGlnaHQiLCJlcnJfaG9sZXMiLCJuZXh0X3N0ZXBzIiwidGlsZXMkMCIsInRha2VuX3N0ZXAiLCJlaCIsInNlbF9zZWciLCJzdGl0Y2giLCJvdmVybGF5cyIsImNvZGVfdGV4dF92aWV3Iiwic3RhdGljc19kZWNvcyIsImdldF9nb2FsIiwidGV4dF9ib3giLCJnb2FsX3giLCJnb2FsX3kiLCJtb3VzZWRvd25fb3ZlcmxheSIsImdvYWwiLCJtb3VzZWRvd25faGFuZGxlciIsInNpZ25hbCIsImhpZ2hsaWdodHMiLCJjb2xvck1hcCIsImVkaXRfZGVjb3MiLCJvdmVybGF5cyQwIiwiY29kZV92aWV3IiwibW91c2Vkb3duX292ZXJsYXkkMCIsIm9uX21vdXNlZG93biIsInZpZXckMCIsImltZyIsInNsaWRlIiwiaGVhZGVyIiwiZW0iLCJnZXRfY29udGVudCIsImljb25fc2l6ZSIsInNpbXBsZV9pY29uIiwidHJhbnNmb3JtIiwiZHMiLCJnZWFyIiwiaW5mbyIsInN0YXIiLCJib21iIiwidW5kbyIsInJlZG8iLCJjaXJjbGVfcXVlc3Rpb24iLCJnaXRodWIiLCJiYWNrIiwiZm9yd2FyZCIsImV5ZSIsInRyYXNoIiwiaGF6ZWxudXQiLCJtYWduaWZ5IiwiY2hlc3QiLCJzcHJvdXQiLCJzZXR0aW5nIiwiY3VycmVudCIsInNlcV9iYXNpY19leHBfZXgiLCJzZXFfdGVzdF9leHBfZXgiLCJzZXFfZXhwX2NvbG9yaW5nX2lkcyIsInNlcV9leHAiLCJzZXFzIiwiZmlsbGVkX3NsaWRlcyIsIm51bV9lbXB0eSIsImluaXRfZGF0YSIsIm5hcnJhdGl2ZV9jZWxsIiwic2ltcGxlX2NlbGxfaXRlbSIsImNhcHRpb24iLCJib2xkZWQiLCJzaW1wbGVfY2VsbF92aWV3IiwiaXRlbXMiLCJyZXBvcnRfZm9vdGVyX3ZpZXciLCJwYW5lbCIsImNsYXNzZXMiLCJ0aXRsZV9jZWxsIiwidGl0bGUiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMV8wMTgiLCJhcmcwXzAxNyIsInJlczFfMDIwIiwiYXJnMF8wMjEiLCJhY3Rpb24kMCIsInN0ZXBwZXJfYWN0aW9uIiwiaWR4JDAiLCJlcnJvcl9tc2ciLCJlcnIkMCIsInN0YXR1c19vZiIsInN0ZXBwZXJfdmlldyIsInJlYWRfb25seSIsInN0ZXBwZXIiLCJpbmplY3RfZ2xvYmFsIiwiYnV0dG9uX2JhY2siLCJidXR0b25faGlkZV9zdGVwcGVyIiwidG9nZ2xlX3Nob3dfaGlzdG9yeSIsImV2YWxfc2V0dGluZ3MiLCJjdXJyZW50X21vZGVsIiwic3RlcCIsInN0ZXBzIiwiaGlkZGVuIiwiY2hvc2VuX3N0ZXAiLCJsaXZlX2V2YWwiLCJsb2NrZWQiLCJyZXMiLCJyZXMkMCIsImV4bl92aWV3IiwiZm9vdGVyIiwidGVzdF9zdGF0dXNfaWNvbl92aWV3IiwiaW5zdHMiLCJtcyIsInRlc3RfcmVzdWx0X2xheWVyIiwicmVzdWx0X2tpbmQiLCJ0ZXN0X292ZXJsYXkiLCJ0ZXN0X292ZXJsYXkkMCIsImVsYWIiLCJzZWxlY3QiLCJyZXN1bHRfa2V5IiwiZXhwb3J0X2J1dHRvbiIsImpzb25fZGF0YSIsImltcG9ydF9idXR0b24iLCJyZXNldF9idXR0b24iLCJjb25maXJtZWQiLCJ0eXBfYXJnIiwicmVjX3R5cF9jb2xvcmluZ19pZHMiLCJ0Ym9keV9pZCIsInBlYW5vX2V4IiwicmVjX3R5cCIsInJlYyIsInNpbmdsZSIsImFyZ19pZCIsImZuX2lkIiwiZV9hcmciLCJlX2ZuIiwiZnVuYXBwX2V4cF9leCIsImNvbmFwcF9leHBfZXgiLCJkZWZlcnJlZF9mdW5hcHBfZXhwX2V4IiwiZXhwX2Z1biIsImV4cF9hcmciLCJmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyIsInhfaWQiLCJmdW5hcHBfZXhwIiwiZXhwX2NvbiIsImV4cF9hcmckMCIsImNvbmFwcF9leHBfY29sb3JpbmdfaWRzIiwiY29uYXBwX2V4cCIsImV4cF9mdW4kMCIsImV4cF9kZWZlcnJhbCIsImRlZmVycmVkX2Z1bmFwcF9leHBfY29sb3JpbmdfaSIsImRlZmVycmVkX2lkIiwiZGVmZXJyZWRfZnVuYXBwX2V4cCIsImZ1bmFwcyIsImNvbmFwcyIsImRlZmVycmVkYXBzIiwicGF0X2NvbiIsInBhdF9hcmciLCJhcF9wYXRfY29sb3JpbmdfaWRzIiwiY29uX2lkIiwiYXBfcGF0IiwiYXAiLCJ0eXBfb3V0IiwiYXJyb3dfdHlwX2NvbG9yaW5nX2lkcyIsInJlc3VsdF9pZCIsImFycm93X3R5cCIsInR5cF9hcmcxIiwidHlwX2FyZzIiLCJ0eXBfb3V0JDAiLCJhcnJvdzNfdHlwX2NvbG9yaW5nX2lkcyIsImFyZzFfaWQiLCJhcmcyX2lkIiwiYXJyb3cyIiwiYXJyb3czX3R5cCIsImFycm93MyIsImNhc2VfZXhhbXBsZV93aWxkX3NpbXBsZSIsImNhc2VfZXhhbXBsZV93aWxkX3R1cGxlIiwiY2FzZV9leGFtcGxlX2ludCIsImNhc2VfZXhhbXBsZV9ib29sIiwiZXhwX3NjcnV0IiwiY2FzZV9leHBfY29sb3JpbmdfaWRzIiwic2NydXRfaWQiLCJjYXNlJDAiLCJjYXNlX2V4cCIsImNhc2UkMSIsImtpbmQiLCJqdW1wX3RvIiwiZW50cnkiLCJjb250ZXh0X2VudHJ5X3ZpZXciLCJkaXZfbmFtZSIsImN0eF92aWV3IiwiY3R4IiwiY3R4X3NvcnRzX3ZpZXciLCJlcnJjIiwib2tjIiwiZGl2X2VyciIsImRpdl9vayIsImNvZGVfZXJyIiwiZXhwbGFpbl90aGlzX3RvZ2dsZSIsInRvZ2dsZV9leHBsYWluX3RoaXMiLCJjbHNfdmlldyIsImN0eF90b2dnbGUiLCJ0ZXJtX3ZpZXciLCJlbGVtZW50c19ub3VuIiwiY29tbW9uX2Vycl92aWV3Iiwic3luIiwiYW5hIiwidHlzIiwidG9rZW4iLCJjb21tb25fb2tfdmlldyIsIm9rIiwiYW5hJDIiLCJhbmEkMyIsImFuYSQxIiwic3luJDAiLCJzeW4kMSIsImFuYSQwIiwidHlwX29rX3ZpZXciLCJzdW1fdHkiLCJzdW1fdHkkMCIsInR5X2xvb2t1cCIsInR5cF9lcnJfdmlldyIsImV4cF92aWV3IiwiYWN0dWFsIiwiZXhwZWN0ZWQiLCJwYXRfdmlldyIsInR5cF92aWV3Iiwic2Vjb25kYXJ5X3ZpZXciLCJ2aWV3X29mX2luZm8iLCJ3cmFwcGVyIiwic3RhdHVzX3ZpZXciLCJzdGF0dXMkMCIsImNscyQwIiwic3RhdHVzJDEiLCJjbHMkMSIsInN0YXR1cyQyIiwiY2xzJDIiLCJpbnNwZWN0b3JfdmlldyIsImVycmMkMCIsImN1cnNvcl9pbmZvIiwiYmFyX3ZpZXciLCJvcHRpb25fdmlldyIsIm1vZGVfbWVudSIsInNsaWRlX3NlbGVjdCIsImN1cl9zbGlkZSIsIm51bV9zbGlkZXMiLCJuZXh0X2VkIiwicHJldl9lZCIsInNjcmF0Y2hfdmlldyIsImRvY3VtZW50YXRpb25fdmlldyIsImVkaXRvcl9uYW1lcyIsInByZXYkMCIsIm5leHQkMCIsImluc3RydWN0b3JfdG9nZ2xlIiwiZXhlcmNpc2VzX3ZpZXciLCJjdXJfc2xpZGUkMCIsInNjb3JlX3ZpZXciLCJlYXJuZWQiLCJwZXJjZW50YWdlX3ZpZXciLCJ0ZXh0dWFsX3N1bW1hcnkiLCJyZXBvcnQiLCJ0b3RhbF90ZXN0cyIsInJlcXVpcmVkIiwibnVtX3Rlc3RzX21lc3NhZ2UiLCJtYXhfcG9pbnRzIiwic3VtbWFyeV9tZXNzYWdlIiwic2NvcmUiLCJ0b3RhbCIsImZvdW5kIiwiYmFyIiwiaW5zdGFuY2VzIiwic3VtbWFyeSIsInN0YXR1c19jbGFzcyIsImluZGl2aWR1YWxfcmVwb3J0IiwiaGludCIsImluZGl2aWR1YWxfcmVwb3J0cyIsImNvdmVyYWdlX3Jlc3VsdHMiLCJpbmRpdmlkdWFsX3JlcG9ydCQwIiwicmVzdWx0X3N0cmluZyIsImluZGl2aWR1YWxfcmVwb3J0cyQwIiwiaGludGVkX3Jlc3VsdHMiLCJ2aWV3JDEiLCJzeW50YXhfcmVwb3J0IiwidGV4dHVhbF9zdW1tYXJ5JDAiLCJpbmRpdmlkdWFsX3JlcG9ydCQxIiwiaW5kaXZpZHVhbF9yZXBvcnRzJDEiLCJ2aWV3JDIiLCJ2aWV3X292ZXJhbGxfc2NvcmUiLCJjb250ZW50X3R5cGUkMSIsImNvbnRlbnRfdHlwZSQwIiwicmVuZGVyX2NlbGxzIiwidmlzIiwiZWRzIiwic3RpdGNoZWRfZHluYW1pY3MiLCJoaWRkZW5fYnVncyIsImluc3RydWN0b3IiLCJwcmVsdWRlIiwidXNlcl90ZXN0cyIsInVzZXJfaW1wbCIsInRlc3RfdmFsaWRhdGlvbiIsImdyYWRpbmdfcmVwb3J0IiwiZWRpdG9yX3ZpZXciLCJzdWJjYXB0aW9uIiwiZGkiLCJ0aXRsZV92aWV3IiwicHJvbXB0X3ZpZXciLCJwcmVsdWRlX3ZpZXciLCJjb3JyZWN0X2ltcGxfdmlldyIsImNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCIsInByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgiLCJwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4JDAiLCJjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgkMCIsInNwZWNpZmljX2N0eCIsInNwZWNpZmljX2N0eCQwIiwiZXhwX2N0eF92aWV3IiwiY29ycmVjdF9pbXBsX2N0eF92aWV3IiwieW91cl90ZXN0c192aWV3IiwiaW1wbCIsIndyb25nX2ltcGxfdmlld3MiLCJtdXRhdGlvbl90ZXN0aW5nX3ZpZXciLCJ5b3VyX2ltcGxfdmlldyIsInN5bnRheF9ncmFkaW5nX3ZpZXciLCJpbXBsX3ZhbGlkYXRpb25fdmlldyIsImhpZGRlbl90ZXN0c192aWV3IiwiaW1wbF9ncmFkaW5nX3ZpZXciLCJpbnN0cnVjdG9yX2V4cG9ydCIsImluc3RydWN0b3JfdHJhbnNpdGlvbmFyeV9leHBvciIsImluc3RydWN0b3JfZ3JhZGluZ19leHBvcnQiLCJkb3dubG9hZF9lZGl0b3Jfc3RhdGUiLCJleHBvcnRfc3VibWlzc2lvbiIsImltcG9ydF9zdWJtaXNzaW9uIiwiZmlsdGVyX3BhdXNlIiwicF9pZCIsImVfYm9keSIsImZpbHRlcl9ldmFsIiwiZmlsdGVyX2hpZGUiLCJmaWx0ZXJfZGVidWciLCJ1bnF1b3RlIiwic2VsX2lkIiwic2VsIiwiZm9yYWxsX3R5cF9jb2xvcmluZ19pZHMiLCJmb3JhbGxfdHlwIiwiZm9yYWxsIiwiZXhwbGFuYXRpb24kNyIsImV4cGxhbmF0aW9uJDgiLCJleHBsYW5hdGlvbiQ5IiwiZXhwbGFuYXRpb24kMTAiLCJleHBsYW5hdGlvbiQxMSIsImV4cGxhbmF0aW9uJDEyIiwiZXhwbGFuYXRpb24kMTMiLCJleHBsYW5hdGlvbiQxNCIsImV4cGxhbmF0aW9uJDE1IiwiZXhwbGFuYXRpb24kMTYiLCJiYXNpY19mdW5fZXgiLCJ3aWxkX2Z1bl9leCIsImludGxpdF9mdW5fZXgiLCJmbG9hdGxpdF9mdW5fZXgiLCJib29sbGl0X2Z1bl9leCIsInN0cmxpdF9mdW5fZXgiLCJ0cml2X2Z1bl9leCIsImxpc3RuaWxfZnVuX2V4IiwibGlzdGxpdF9mdW5fZXgiLCJjb25zX2hkX2Z1bl9leCIsImNvbnNfc25kX2Z1bl9leCIsInZhcl9pbmNyX2Z1bl9leCIsInZhcl9hbmRfZnVuX2V4IiwidHVwbGUyX2Z1bl9leCIsInR1cGxlM19mdW5fZXgiLCJjdHJfZnVuX2V4IiwiYXBfZnVuX2V4IiwicGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nIiwic2ZfcGF0X2lkIiwic2ZfYm9keV9pZCIsImZ1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMiLCJmdW5jdGlvbl9leHAiLCJmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cF9jb2xvcmkiLCJmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cCIsInBhdCQxIiwiZXhwJDEiLCJmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cF9jb2xvcmkiLCJmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cCIsImV4cCQyIiwiZnVuY3Rpb25fd2lsZF9leHBfY29sb3JpbmdfaWRzIiwicGF0JDIiLCJmdW5jdGlvbl93aWxkX2V4cCIsInBhdCQzIiwiZXhwJDMiLCJmdW5jdGlvbl9pbnRsaXRfZXhwX2NvbG9yaW5nX2kiLCJmdW5jdGlvbl9pbnRsaXRfZXhwIiwicGF0JDQiLCJleHAkNCIsImZ1bmN0aW9uX2Zsb2F0bGl0X2V4cF9jb2xvcmluZyIsImZ1bmN0aW9uX2Zsb2F0bGl0X2V4cCIsInBhdCQ1IiwiZXhwJDUiLCJmdW5jdGlvbl9ib29sbGl0X2V4cF9jb2xvcmluZ18iLCJmb3JtJDUiLCJmdW5jdGlvbl9ib29sbGl0X2V4cCIsInBhdCQ2IiwiZXhwJDYiLCJmdW5jdGlvbl9zdHJsaXRfZXhwX2NvbG9yaW5nX2kiLCJmb3JtJDYiLCJmdW5jdGlvbl9zdHJsaXRfZXhwIiwicGF0JDciLCJleHAkNyIsImZ1bmN0aW9uX3RyaXZfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kNyIsImZ1bmN0aW9uX3RyaXZfZXhwIiwicGF0JDgiLCJleHAkOCIsImZ1bmN0aW9uX2xpc3RuaWxfZXhwX2NvbG9yaW5nXyIsImZvcm0kOCIsImZ1bmN0aW9uX2xpc3RuaWxfZXhwIiwicGF0JDkiLCJleHAkOSIsImZ1bmN0aW9uX2xpc3RsaXRfZXhwX2NvbG9yaW5nXyIsImZvcm0kOSIsImZ1bmN0aW9uX2xpc3RsaXRfZXhwIiwicGF0X2hkIiwicGF0X3RsIiwiZXhwJDEwIiwiZnVuY3Rpb25fY29uc19leHBfY29sb3JpbmdfaWRzIiwiaGRfaWQiLCJ0bF9pZCIsImNvbnMiLCJmb3JtJDEwIiwiZnVuY3Rpb25fY29uc19leHAiLCJwYXQkMTAiLCJleHAkMTEiLCJmdW5jdGlvbl92YXJfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTEiLCJmdW5jdGlvbl92YXJfZXhwIiwiZXhwJDEyIiwiZnVuY3Rpb25fdHVwbGVfZXhwX2NvbG9yaW5nX2lkIiwiZm9ybSQxMiIsImZ1bmN0aW9uX3R1cGxlX2V4cCIsImV4cCQxMyIsImZ1bmN0aW9uX3R1cGxlMl9leHBfY29sb3JpbmdfaSIsInBhdDFfaWQiLCJwYXQyX2lkIiwiZm9ybSQxMyIsImZ1bmN0aW9uX3R1cGxlMl9leHAiLCJleHAkMTQiLCJmdW5jdGlvbl90dXBsZTNfZXhwX2NvbG9yaW5nX2kiLCJwYXQzX2lkIiwiZm9ybSQxNCIsImZ1bmN0aW9uX3R1cGxlM19leHAiLCJwYXQkMTEiLCJleHAkMTUiLCJmdW5jdGlvbl9jdHJfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTUiLCJmdW5jdGlvbl9jdHJfZXhwIiwiZXhwJDE2IiwiZnVuY3Rpb25fYXBfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTYiLCJmdW5jdGlvbl9hcF9leHAiLCJmdW5jdGlvbnMiLCJmdW5jdGlvbnNfZW1wdHlfaG9sZSIsImZ1bmN0aW9uc19tdWx0aV9ob2xlIiwiZnVuY3Rpb25zX3dpbGQiLCJmdW5jdGlvbnNfaW50IiwiZnVuY3Rpb25zX2Zsb2F0IiwiZnVuY3Rpb25zX2Jvb2wiLCJmdW5jdGlvbnNfc3RyIiwiZnVuY3Rpb25zX3RyaXYiLCJmdW5jdGlvbnNfbGlzdG5pbCIsImZ1bmN0aW9uc19saXN0bGl0IiwiZnVuY3Rpb25zX2NvbnMiLCJmdW5jdGlvbnNfdmFyIiwiZnVuY3Rpb25zX3R1cGxlIiwiZnVuY3Rpb25zX3R1cGxlMiIsImZ1bmN0aW9uc190dXBsZTMiLCJmdW5jdGlvbnNfY3RyIiwiZnVuY3Rpb25zX2FwIiwiZW1wdHlfaG9sZV90ZW1wbGF0ZSIsIm11bHRpX2hvbGVfdGVtcGxhdGUiLCJlbXB0eV9ob2xlX2V4cCIsImVtcHR5X2hvbGVfZXhwcyIsIm11bHRpX2hvbGVfZXhwIiwibXVsdGlfaG9sZV9leHBzIiwiZW1wdHlfaG9sZV9wYXQiLCJtdWx0aV9ob2xlX3BhdCIsImVtcHR5X2hvbGUiLCJtdWx0aV9ob2xlIiwiZW1wdHlfaG9sZV90cGF0IiwiZW1wdHlfaG9sZV90cGF0cyIsIm11bHRpX2hvbGVfdHBhdCIsIm11bHRpX2hvbGVfdHBhdHMiLCJlbXB0eV9ob2xlX3R5cCIsIm11bHRpX2hvbGVfdHlwIiwiaWZfYmFzaWMxX2V4cF9leCIsImlmX2Jhc2ljMl9leHBfZXgiLCJleHBfY29uZCIsImV4cF90aGVuIiwiZXhwX2Vsc2UiLCJpZl9leHBfY29sb3JpbmdfaWRzIiwiY29uZF9pZCIsInRoZW5faWQiLCJlbHNlX2lkIiwiaWZfZXhwIiwiaWZzIiwibGV0X2Jhc2VfZXgiLCJsZXRfd2lsZF9leCIsImxldF9pbnRfZXgiLCJsZXRfZmxvYXRfZXgiLCJsZXRfYm9vbF9leCIsImxldF9zdHJfZXgiLCJsZXRfdHJpdl9leCIsImxldF9saXN0bGl0X2V4IiwibGV0X2xpc3RuaWxfZXgiLCJsZXRfY29uc19oZF9leCIsImxldF9jb25zX3NuZF9leCIsImxldF92YXJfZXgiLCJsZXRfdHVwbGUyX2V4IiwibGV0X3R1cGxlM19leCIsImxldF9jdHJfZXgiLCJsZXRfYXBfZXgiLCJwYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ18iLCJzZl9kZWZfaWQiLCJwYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzIiwiZXhwX2RlZiIsImxldF9iYXNlX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfYmFzZV9leHAiLCJleHBfZGVmJDAiLCJsZXRfZW1wdHlfaG9sZV9leHBfY29sb3JpbmdfaWQiLCJsZXRfZW1wdHlfaG9sZV9leHAiLCJleHBfZGVmJDEiLCJsZXRfbXVsdGlfaG9sZV9leHBfY29sb3JpbmdfaWQiLCJsZXRfbXVsdGlfaG9sZV9leHAiLCJleHBfZGVmJDIiLCJsZXRfd2lsZF9leHBfY29sb3JpbmdfaWRzIiwibGV0X3dpbGRfZXhwIiwiZXhwX2RlZiQzIiwiZXhwX2JvZHkkMCIsImxldF9pbnRfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9pbnRfZXhwIiwiZXhwX2RlZiQ0IiwiZXhwX2JvZHkkMSIsImxldF9mbG9hdF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2Zsb2F0X2V4cCIsImV4cF9kZWYkNSIsImV4cF9ib2R5JDIiLCJsZXRfYm9vbF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2Jvb2xfZXhwIiwiZXhwX2RlZiQ2IiwiZXhwX2JvZHkkMyIsImxldF9zdHJfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9zdHJfZXhwIiwiZXhwX2RlZiQ3IiwiZXhwX2JvZHkkNCIsImxldF90cml2X2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfdHJpdl9leHAiLCJleHBfZGVmJDgiLCJsZXRfbGlzdGxpdF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2xpc3RsaXRfZXhwIiwiZXhwX2RlZiQ5IiwiZXhwX2JvZHkkNSIsImxldF9saXN0bmlsX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfbGlzdG5pbF9leHAiLCJleHBfZGVmJDEwIiwibGV0X2NvbnNfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9jb25zX2V4cCIsImV4cF9kZWYkMTEiLCJleHBfYm9keSQ2IiwibGV0X3Zhcl9leHBfY29sb3JpbmdfaWRzIiwibGV0X3Zhcl9leHAiLCJleHBfZGVmJDEyIiwibGV0X3R1cGxlX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfdHVwbGVfZXhwIiwiZXhwX2RlZiQxMyIsImxldF90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyIsImxldF90dXBsZTJfZXhwIiwiZXhwX2RlZiQxNCIsImxldF90dXBsZTNfZXhwX2NvbG9yaW5nX2lkcyIsImxldF90dXBsZTNfZXhwIiwiZXhwX2RlZiQxNSIsImV4cF9ib2R5JDciLCJsZXRfY3RyX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfY3RyX2V4cCIsImV4cF9kZWYkMTYiLCJsZXRfYXBfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9hcF9leHAiLCJsZXRzX2VtcHR5aG9sZSIsImxldHNfbXV0bGlob2xlIiwibGV0c193aWxkIiwibGV0c19pbnQiLCJsZXRzX2Zsb2F0IiwibGV0c19ib29sIiwibGV0c19zdHIiLCJsZXRzX3RyaXYiLCJsZXRzX2xpc3RsaXQiLCJsZXRzX2xpc3RuaWwiLCJsZXRzX2NvbnMiLCJsZXRzX3ZhciIsImxldHNfdHVwbGUiLCJsZXRzX3R1cGxlMiIsImxldHNfdHVwbGUzIiwibGV0c19jdHIiLCJsZXRzX2FwIiwiaW50X2xpc3QiLCJ0dXBsZV9saXN0IiwibGlzdF9leHAiLCJjb25zMV9leCIsImNvbnMyX2V4IiwiZXhwX2hkIiwiZXhwX3RsIiwiY29uc19leHBfY29sb3JpbmdfaWRzIiwiZXhwX3hzIiwiZXhwX3lzIiwiY29uY2F0X2V4cF9jb2xvcmluZ19pZHMiLCJ4c19pZCIsInlzX2lkIiwibGlzdGxpdHMiLCJsaXN0Y29ucyIsImxpc3Rjb25jYXRzIiwibGlzdGxpdF9wYXQiLCJsaXN0bmlsX3BhdCIsImNvbnNfYmFzZV9wYXRfY29sb3JpbmdfaWRzIiwiY29uc19iYXNlX3BhdCIsInBhdF9mc3QiLCJwYXRfc25kIiwicGF0X3RsJDAiLCJjb25zMl9wYXRfY29sb3JpbmdfaWRzIiwiZnN0X2lkIiwic25kX2lkIiwiY29uczJfcGF0IiwibGlzdGxpdCIsImxpc3RuaWwiLCJjb25zMiIsInR5cF9lbGVtIiwibGlzdF90eXBfY29sb3JpbmdfaWRzIiwiZWxlbV9pZCIsImxpc3RfdHlwIiwibGlzdCIsImV4cGxhbmF0aW9uJDE3IiwiZXhwbGFuYXRpb24kMTgiLCJleHBsYW5hdGlvbiQxOSIsImV4cGxhbmF0aW9uJDIwIiwiZXhwbGFuYXRpb24kMjEiLCJleHBsYW5hdGlvbiQyMiIsImV4cGxhbmF0aW9uJDIzIiwiZXhwbGFuYXRpb24kMjQiLCJleHBsYW5hdGlvbiQyNSIsImV4cGxhbmF0aW9uJDI2IiwiaW50X3VuYXJ5X21pbnVzX2V4IiwiaW50X3BsdXNfZXgiLCJpbnRfbWludXNfZXgiLCJpbnRfdGltZXNfZXgiLCJpbnRfcG93ZXJfZXgiLCJpbnRfZGl2aWRlX2V4IiwiaW50X2x0MV9leCIsImludF9sdDJfZXgiLCJpbnRfbHRlMV9leCIsImludF9sdGUyX2V4IiwiaW50X2x0ZTNfZXgiLCJpbnRfZ3QxX2V4IiwiaW50X2d0Ml9leCIsImludF9ndGUxX2V4IiwiaW50X2d0ZTJfZXgiLCJpbnRfZ3RlM19leCIsImludF9lcTFfZXgiLCJpbnRfZXEyX2V4IiwiZmxvYXRfcGx1c19leCIsImZsb2F0X21pbnVzX2V4IiwiZmxvYXRfdGltZXNfZXgiLCJmbG9hdF9wb3dlcl9leCIsImZsb2F0X2RpdmlkZV9leCIsImZsb2F0X2x0MV9leCIsImZsb2F0X2x0Ml9leCIsImZsb2F0X2x0ZTFfZXgiLCJmbG9hdF9sdGUyX2V4IiwiZmxvYXRfbHRlM19leCIsImZsb2F0X2d0MV9leCIsImZsb2F0X2d0Ml9leCIsImZsb2F0X2d0ZTFfZXgiLCJmbG9hdF9ndGUyX2V4IiwiZmxvYXRfZ3RlM19leCIsImZsb2F0X2VxMV9leCIsImZsb2F0X2VxMl9leCIsImJvb2xfYW5kMV9leCIsImJvb2xfYW5kMl9leCIsImJvb2xfb3IxX2V4IiwiYm9vbF9vcjJfZXgiLCJzdHJfZXExX2V4Iiwic3RyX2VxMl9leCIsInVub3BfZXhwX2NvbG9yaW5nX2lkcyIsInNmX2V4cF9pZCIsImV4cF9pZCIsImJvb2xfdW5hcnlfbm90X2V4cF9jb2xvcmluZ19pZCIsImJvb2xfdW5hcnlfbm90X2V4cCIsImludF91bmFyeV9taW51c19leHBfY29sb3JpbmdfaSIsImludF91bmFyeV9taW51c19leHAiLCJiaW5vcF9leHBfY29sb3JpbmdfaWRzIiwic2ZfbGVmdF9pZCIsInNmX3JpZ2h0X2lkIiwibGVmdF9pZCIsInJpZ2h0X2lkIiwiaW50X3BsdXNfZXhwX2NvbG9yaW5nX2lkcyIsImludF9wbHVzX2V4cCIsImludF9taW51c19leHBfY29sb3JpbmdfaWRzIiwiaW50X21pbnVzX2V4cCIsImV4cDEkMSIsImV4cDIkMSIsImludF90aW1lc19leHBfY29sb3JpbmdfaWRzIiwiaW50X3RpbWVzX2V4cCIsImludF9wb3dlcl9leHBfY29sb3JpbmdfaWRzIiwiaW50X3Bvd2VyX2V4cCIsImV4cDEkMiIsImV4cDIkMiIsImludF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcyIsImludF9kaXZpZGVfZXhwIiwiZXhwMSQzIiwiZXhwMiQzIiwiaW50X2x0X2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfbHRfZXhwIiwiZXhwMSQ0IiwiZXhwMiQ0IiwiaW50X2x0ZV9leHBfY29sb3JpbmdfaWRzIiwiaW50X2x0ZV9leHAiLCJleHAxJDUiLCJleHAyJDUiLCJpbnRfZ3RfZXhwX2NvbG9yaW5nX2lkcyIsImludF9ndF9leHAiLCJleHAxJDYiLCJleHAyJDYiLCJpbnRfZ3RlX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfZ3RlX2V4cCIsImV4cDEkNyIsImV4cDIkNyIsImludF9lcV9leHBfY29sb3JpbmdfaWRzIiwiaW50X2VxX2V4cCIsImV4cDEkOCIsImV4cDIkOCIsImludF9uZXFfZXhwX2NvbG9yaW5nX2lkcyIsImludF9uZXFfZXhwIiwiZXhwMSQ5IiwiZXhwMiQ5IiwiZmxvYXRfcGx1c19leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfcGx1c19leHAiLCJleHAxJDEwIiwiZXhwMiQxMCIsImZsb2F0X21pbnVzX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9taW51c19leHAiLCJleHAxJDExIiwiZXhwMiQxMSIsImZsb2F0X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF90aW1lc19leHAiLCJmbG9hdF9wb3dlcl9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfcG93ZXJfZXhwIiwiZXhwMSQxMiIsImV4cDIkMTIiLCJmbG9hdF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2RpdmlkZV9leHAiLCJleHAxJDEzIiwiZXhwMiQxMyIsImZsb2F0X2x0X2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9sdF9leHAiLCJleHAxJDE0IiwiZXhwMiQxNCIsImZsb2F0X2x0ZV9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfbHRlX2V4cCIsImV4cDEkMTUiLCJleHAyJDE1IiwiZmxvYXRfZ3RfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2d0X2V4cCIsImV4cDEkMTYiLCJleHAyJDE2IiwiZmxvYXRfZ3RlX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9ndGVfZXhwIiwiZXhwMSQxNyIsImV4cDIkMTciLCJmbG9hdF9lcV9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfZXFfZXhwIiwiZXhwMSQxOCIsImV4cDIkMTgiLCJmbG9hdF9uZXFfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X25lcV9leHAiLCJleHAxJDE5IiwiZXhwMiQxOSIsImJvb2xfYW5kX2V4cF9jb2xvcmluZ19pZHMiLCJib29sX2FuZF9leHAiLCJleHAxJDIwIiwiZXhwMiQyMCIsImJvb2xfb3JfZXhwX2NvbG9yaW5nX2lkcyIsImJvb2xfb3JfZXhwIiwiZXhwMSQyMSIsImV4cDIkMjEiLCJzdHJfZXFfZXhwX2NvbG9yaW5nX2lkcyIsInN0cl9lcV9leHAiLCJleHAxJDIyIiwiZXhwMiQyMiIsInN0cl9jb25jYXRfZXhwX2NvbG9yaW5nX2lkcyIsInN0cl9jb25jYXRfZXhwIiwiYm9vbF91bl9ub3QiLCJpbnRfdW5fbWludXMiLCJpbnRfcGx1cyIsImludF9taW51cyIsImludF90aW1lcyIsImludF9wb3dlciIsImludF9kaXZpZGUiLCJpbnRfbGVzc190aGFuIiwiaW50X2xlc3NfdGhhbl9lcXVhbCIsImludF9ncmVhdGVyX3RoYW4iLCJpbnRfZ3JlYXRlcl90aGFuX2VxdWFsIiwiaW50X2VxdWFsIiwiaW50X25vdF9lcXVhbCIsImZsb2F0X3BsdXMiLCJmbG9hdF9taW51cyIsImZsb2F0X3RpbWVzIiwiZmxvYXRfcG93ZXIiLCJmbG9hdF9kaXZpZGUiLCJmbG9hdF9sZXNzX3RoYW4iLCJmbG9hdF9sZXNzX3RoYW5fZXF1YWwiLCJmbG9hdF9ncmVhdGVyX3RoYW4iLCJmbG9hdF9ncmVhdGVyX3RoYW5fZXF1YWwiLCJmbG9hdF9lcXVhbCIsImZsb2F0X25vdF9lcXVhbCIsImJvb2xfYW5kIiwiYm9vbF9vciIsInN0cmluZ19lcXVhbCIsInN0cmluZ19jb25jYXQiLCJmZWVkYmFja192aWV3IiwidXBfYWN0aXZlIiwidXBfYWN0aW9uIiwiZG93bl9hY3RpdmUiLCJkb3duX2FjdGlvbiIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrX3ZpZXciLCJleGFtcGxlX2ZlZWRiYWNrX3ZpZXciLCJjb2RlX25vZGUiLCJ0ZXh0IiwiaW5qZWN0JDAiLCJta190cmFuc2xhdGlvbiIsIm9tZCIsImVsZW0iLCJkJDEiLCJub2RlcyIsIm1hcHBpbmckMSIsImJ1bGxldHMiLCJkJDIiLCJtYXBwaW5nJDIiLCJkJDMiLCJpZCQwIiwiaWQkMSIsIm1hcHBpbmckMyIsImlubmVyX21zZyIsIm1rX2V4cGxhbmF0aW9uIiwiY29sb3JfbWFwIiwiZXhwYW5kZXJfZGVjbyIsImRvY3MiLCJvcHRpb25zIiwiZXhwYW5kYWJsZSIsInNwZWNpZmljaXR5X3BvcyIsInNwZWNpZmljaXR5X3N0eWxlIiwiZ2V0X2Nsc3MiLCJzZWdtZW50IiwidXBkYXRlX2dyb3VwX3NlbGVjdGlvbiIsInNwZWNpZmljaXR5X21lbnUiLCJleHBhbmRfYXJyb3dfc3R5bGUiLCJleHBhbmRfYXJyb3ciLCJleHBhbmRhYmxlX2RlY28iLCJleGFtcGxlX3ZpZXciLCJzdWJfaWQiLCJieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQiLCJieXBhc3NfcGFyZW5zX3BhdCIsImJ5cGFzc19wYXJlbnNfZXhwIiwiYnlwYXNzX3BhcmVuc190eXAiLCJ0eXAkMSIsInBwX21lc3NhZ2VfbW9kZSIsInNob3dfbWVzc2FnZV9tb2RlIiwibWVzc2FnZV9tb2RlX29mX3NleHAiLCJzZXhwX29mX21lc3NhZ2VfbW9kZSIsImFyZzFfMDEzIiwicmVzMV8wMTUiLCJtZXNzYWdlX21vZGVfb2ZfeW9qc29uIiwieW9qc29uX29mX21lc3NhZ2VfbW9kZSIsImdldF9kb2MiLCJzaW1wbGUiLCJnZXRfc3BlY2lmaWNpdHlfbGV2ZWwiLCJnZXRfbWVzc2FnZSIsImZvcm1hdCIsImV4cGxhbmF0aW9uX21zZyIsImNvbG9yX21hcCQwIiwiY29kZV9pZCIsInN5bnRhY3RpY19mb3JtX2lkIiwiZXhwYW5kZXJfZGVjbyQwIiwiaGlnaGxpZ2h0cyQwIiwiaGlnaGxpZ2h0X2RlY28iLCJzeW50YWN0aWNfZm9ybV92aWV3IiwiZXhhbXBsZV92aWV3JDAiLCJtZXNzYWdlX3NpbmdsZSIsImdldF9tZXNzYWdlX2V4cCIsImJvZHkiLCJiYXNpYyIsImkkMCIsImYkMCIsInMkMCIsImVsZW1lbnRzIiwicGF0X2lkJDAiLCJib2R5X2lkJDAiLCJlbGVtZW50cyQwIiwicGF0X2lkJDEiLCJib2R5X2lkJDEiLCJiYXNpY190dXBsZSIsImRvY19pZCIsImRvY19pZCQwIiwicGF0MV9pZCQwIiwicGF0Ml9pZCQwIiwiY29uIiwiYm9keSQwIiwiYm9keV9pZCQyIiwidGVybXMkMCIsImJhc2ljJDAiLCJleHAxX2lkJDAiLCJleHAyX2lkJDAiLCJib2R5JDEiLCJkZWYiLCJwYXRfaWQkMiIsImJvZHlfaWQkMyIsImJhc2ljJDEiLCJpJDEiLCJmJDEiLCJzJDEiLCJlbGVtZW50cyQxIiwidiQxIiwidGwkMCIsImhkX2lkJDAiLCJ0bF9pZCQwIiwidmFyJDEiLCJlbGVtZW50cyQyIiwiYmFzaWNfdHVwbGUkMCIsImRvY19pZCQxIiwicGF0MV9pZCQxIiwicGF0Ml9pZCQxIiwiZG9jX2lkJDIiLCJwYXQxX2lkJDIiLCJwYXQyX2lkJDIiLCJwYXQzX2lkJDAiLCJjb24kMCIsImNvbl9pZCQwIiwiYXJnX2lkJDAiLCJib2R5JDIiLCJ0eV9kZWYiLCJ0eV9wYXQiLCJ0cGF0X2lkJDAiLCJkZWZfaWQkMCIsImZuIiwiYXJnX2lkJDEiLCJiYXNpYyQyIiwiY29sb3JpbmdfaWRzIiwidiQyIiwiZiQyIiwiYXJncyIsInhfaWQkMCIsInN1cHBsaWVkX2lkIiwiY29sb3JfZm4iLCJjb2xvcl9zdXBwbGllZCIsImNvbG9yX2RlZmVycmVkIiwiY29sb3JfZGVmZXJyZWQkMCIsImVsc2UkMCIsInRoZW4iLCJjb25kIiwicmlnaHQiLCJleHAxX2lkJDEiLCJleHAyX2lkJDEiLCJib2R5JDMiLCJib2R5X2lkJDQiLCJib2R5JDQiLCJib2R5JDUiLCJib2R5JDYiLCJib2R5JDciLCJ0ZXJtJDEiLCJ0ZXJtJDIiLCJ0bCQxIiwiaGQkMSIsImhkX2lkJDEiLCJ0bF9pZCQxIiwieHMiLCJleHBfaWQkMCIsInJpZ2h0JDAiLCJsZWZ0JDAiLCJvcCQwIiwiY29sb3JpbmdfaWRzJDAiLCJjb2xvcmluZ19pZHMkMSIsImdyb3VwJDEiLCJzY3J1dCIsInRsMiIsImhkMiIsImhkMl9pZCIsInRsMl9pZCIsImVsZW0xX2lkJDAiLCJlbGVtMl9pZCQwIiwidHlwX2luZm8iLCJyZXN1bHQyIiwiYXJnMiIsInJlc3VsdDJfaWQiLCJlbGVtMV9pZCQxIiwiZWxlbTJfaWQkMSIsImVsZW0xX2lkJDIiLCJlbGVtMl9pZCQyIiwiZWxlbTNfaWQkMCIsInRwYXQkMCIsInRib2R5X2lkJDAiLCJpbmZvJDAiLCJzZWN0aW9uIiwic2VjdGlvbl9jbHNzIiwiZ2V0X2NvbG9yX21hcCIsInN5bl9mb3JtIiwiaXNfbWFjIiwicHBfZGlyIiwic2hvd19kaXIiLCJkaXJfb2ZfeW9qc29uIiwieW9qc29uX29mX2RpciIsInBwX2tleSIsInNob3dfa2V5Iiwia2V5X29mX3lvanNvbiIsInlvanNvbl9vZl9rZXkiLCJwcF9zeXMiLCJzaG93X3N5cyIsInN5c19vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3lzIiwicHBfaGVsZCIsInNob3dfaGVsZCIsImhlbGRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hlbGQiLCJrZXlfZmllbGQiLCJzeXNfZmllbGQiLCJzaGlmdF9maWVsZCIsIm1ldGFfZmllbGQiLCJjdHJsX2ZpZWxkIiwiYWx0X2ZpZWxkIiwiYWx0X3ZhbHVlIiwiY3RybF92YWx1ZSIsIm1ldGFfdmFsdWUiLCJzaGlmdF92YWx1ZSIsInN5c192YWx1ZSIsImtleV92YWx1ZSIsInZfYWx0Iiwidl9jdHJsIiwidl9tZXRhIiwidl9zaGlmdCIsInZfc3lzIiwidl9rZXkiLCJrZXlfb2YiLCJkaXIiLCJ0b19oZWxkIiwibW9kaWZpZXJfc3RyaW5nIiwibW9kaWZpZXJzX3N0cmluZyIsImtleV9kaXJfc3RyaW5nIiwidG9fc3RyaW5nIiwiaXNfZGlnaXQiLCJpc19mX2tleSIsImhhbmRsZV9rZXlfZXZlbnQiLCJub3ciLCJzaGlmdCIsInJlc2V0X2hhemVsIiwicmVwYXJzZSIsInNldHRpbmdzX21lbnUiLCJiZW5jaG1hcmsiLCJjb3JlIiwiZXhwb3J0X21lbnUiLCJzbGlkZV9pZHgiLCJzdGF0ZSQwIiwiaW1wb3J0X21lbnUiLCJzdWJtZW51IiwibWVudSIsImhhbmRsZXJzIiwia2V5X2hhbmRsZXIiLCJwYXN0ZWRfdGV4dCIsIm1haW5fdmlldyIsImdsb2JhbHMkMCIsImFlIiwidG9wX2JhciIsImJvdHRvbV9iYXIiLCJzaWRlYmFyIiwic3MiLCJlZGl0b3JzX3ZpZXciLCJzcyQwIiwicmVzdWx0X2tleSQwIiwic3RhdGljcyQxIiwibWVtb2l6ZSIsInRhYmxlIiwiZXJyb3Jfc291cmNlXzAyNiIsInBwX3JlYXNvbiIsInNob3dfcmVhc29uIiwicmVhc29uX29mX3NleHAiLCJzZXhwX29mX3JlYXNvbiIsInJlYXNvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcmVhc29uIiwic2V4cF8wMTMiLCJmaWVsZF9zZXhwc18wMTQiLCJyZWFzb25fMDE1IiwicHJpb3JfYXR0ZW1wdHNfMDE3IiwiZHVwbGljYXRlc18wMTkiLCJleHRyYV8wMjAiLCJzZXhwXzAxMyQwIiwiZmllbGRfc2V4cHNfMDIzIiwiZmllbGRfbmFtZV8wMjEiLCJ0YWlsXzAyOCIsImZpZWxkX3NleHBfMDIyJDIiLCJmaWVsZF9zZXhwXzAyMiIsInhfMDI5IiwiZmllbGRfc2V4cF8wMjIkMCIsImZpZWxkX3NleHBfMDIyJDEiLCJwcmlvcl9hdHRlbXB0c18wMTgiLCJyZWFzb25fMDE2IiwicHJpb3JfYXR0ZW1wdHNfMDMzIiwicmVhc29uXzAzMSIsImFyZ18wMzQiLCJibmRzXzAzMCIsImFyZ18wMzIiLCJibmRzXzAzMCQwIiwicmVhc29uX2ZpZWxkIiwicHJpb3JfYXR0ZW1wdHNfZmllbGQiLCJwcmlvcl9hdHRlbXB0c192YWx1ZSIsInJlYXNvbl92YWx1ZSIsInZfcHJpb3JfYXR0ZW1wdHMiLCJ2X3JlYXNvbiIsInJlYXNvbiIsInByaW9yX2F0dGVtcHRzIiwicmVwbGFjZV9vcl9pbmNyZW1lbnRfYXR0ZW1wdHMiLCJmYWlsZWRfaW5wdXQiLCJidG4iLCJvbl9zdGFydHVwIiwiY3JlYXRlIiwiZnN0ciIsImN4IiwiY3kiLCJzdHJva2Vfd2lkdGgiLCJ2ZWN0b3JfZWZmZWN0IiwiZmlsdGVyIiwic3RvcF9jb2xvciIsInN0b3Bfb3BhY2l0eSIsImlkIiwic2Nyb2xsX3RvX2NhcmV0IiwiZWRpdF9hY3Rpb25fYXBwbGllZCIsImxhc3RfZWRpdF9hY3Rpb24iLCJvbl9zdGFydHVwIiwic2NoZWR1bGVfYWN0aW9uIiwibSIsImVudHJpZXMiLCJmbSIsInN0YXRlIiwiY3JlYXRlIiwibW9kZWwiLCJpbmplY3QiLCJhY3Rpb24iLCJuZXdfbW9kZWwiLCJleGMkMCIsImV4YyIsIm1vZGVsJDAiLCJlcnIiLCJlcnIkMCJdLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0cmZ0aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxkb20uY29tcGlsZWQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vaG9va3MuanMiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytmYWlsLmpzIiwiL2J1aWx0aW4vK3N0ZGxpYi5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytlZmZlY3QuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK2ZzX2Zha2UuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2dyYXBoaWNzLmpzIiwiL2J1aWx0aW4vK3J1bnRpbWVfZXZlbnRzLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rZ2MuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ2FycmF5LmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmlnc3RyaW5nYWYvcnVudGltZS5qcyIsIi9idWlsdGluLytiaWdzdHJpbmcuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9iaWdzdHJpbmcvcnVudGltZS5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9iYXNlX2ludGVybmFsaGFzaF90eXBlcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2pzbGliX2pzX29mX29jYW1sLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYXJyYXkuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvcnVudGltZS5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2J1aWx0aW4vK2xleGluZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rZG9tYWluLmpzIiwiL2J1aWx0aW4vK3N5bmMuanMiLCIvYnVpbHRpbi8rd2Vhay5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9qYXZhc2NyaXB0X3Byb2ZpbGluZy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BybmcuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vanMvb2pzX3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zeXMubWwuaW4iLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2F0b21pYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxMYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2xhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc2VxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3VjaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL21hcnNoYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW50NjQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2xleGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9wYXJzaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3NlbWFwaG9yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9kb21haW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3ByaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9hcmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZnVuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2RpZ2VzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9iaWdhcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9yYW5kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2Zvcm1hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zY2FuZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxPTy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxNb2QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZXBoZW1lcm9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NvbXBsZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9lZmZlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYjAvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwX2dyYW1tYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2dyYW1tYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BvbHkwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW1wb3J0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3ByaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N5czAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9hcnJheTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jaGFyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9saXN0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hhc2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wcHhfY29tcGFyZV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wcHhfaGFzaF9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvd29yZF9zaXplLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcHJldHR5X3ByaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9leG4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS93aXRoX3JldHVybi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9tb25hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2FwcGxpY2F0aXZlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYnl0ZXMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2VpdGhlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N0cmluZzAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2NvbnRhaW5lcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcmFuZG9tX3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9yYW5kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9hcnJheV9wZXJtdXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NpZ24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2V4cGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbmRleGVkX2NvbnRhaW5lci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vYmpfYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS91bmlmb3JtX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZmxvYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYnl0ZXNfdHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zdGFnZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ieXRlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hleF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludF9jb252ZXJzaW9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3Bvd19vdmVyZmxvd19ib3VuZHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnRfbWF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BvcGNvdW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2lnbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3VjaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvdHlwZV9lcXVhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29wdGlvbl9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N0YWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21heWJlX2JvdW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zZXRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL25hdGl2ZWludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9saW5rZWRfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDYzX2VtdWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnQ2My5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hhc2h0YmxfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2F2bHRyZWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaF9zZXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JhY2t0cmFjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Jhc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9sb25naWRlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDE0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvcHByaW50YXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzUwMV81MDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzUwMF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzUwMF80MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF81MDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTRfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDE0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEzXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMl80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTFfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDExLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEwXzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQxMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOV80MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDhfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA3XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNl80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDVfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDA1Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA0XzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwM180MDIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwMl80MDMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9rZXl3b3JkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0bGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3Qvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L2FzdF9oZWxwZXJfbGl0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L3ZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3Qvd2Fybi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L2FzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L2xvY2F0aW9uX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sLWNvbXBpbGVyLWxpYnMvc2hhZG93L29jYW1sX3NoYWRvdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvcHJpbnRfZGlmZi9wcHhsaWJfcHJpbnRfZGlmZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZGVyaXZlcnMvcHB4X2Rlcml2ZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi90cmF2ZXJzZV9idWlsdGlucy9wcHhsaWJfdHJhdmVyc2VfYnVpbHRpbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3N0ZHBweC9zdGRwcHgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9idWlsZGVyX2dlbmVyYXRlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbG9jLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9sb25naWRlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9idWlsZGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9jYWxsZXJfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3NwZWxsY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X3BhdHRlcm5fZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXR0cmlidXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9jb2RlX3BhdGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfdHJhdmVyc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3NraXBfaGFzaF9iYW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvY29kZV9tYXRjaGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9leHRlbnNpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NvbnRleHRfZnJlZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvcmVjb25jaWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9xdW90ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL21lcmxpbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9sb2NhdGlvbl9jaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvZHJpdmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9pZ25vcmVfdW51c2VkX3dhcm5pbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2Rlcml2aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9leHBhbnNpb25faGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvcHB4bGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9hdHRycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfeW9qc29uX2NvbnYvZXhwYW5kZXIvbGFiZWxfd2l0aF9uYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9wcHhfeW9qc29uX2NvbnZfZXhwYW5kZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWVfXy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9qc19vZl9vY2FtbF9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvdHlwZWRfYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZmlsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9kb21faHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9mb3JtLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3htbEh0dHBSZXF1ZXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3dvcmtlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC93ZWJTb2NrZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3dlYkdMLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3JlZ2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC91cmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvc3lzX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3Jlc2l6ZU9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3BlcmZvcm1hbmNlT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvbXV0YXRpb25PYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9qc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvY1NTLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2RvbV9ldmVudHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZG9tX3N2Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9ldmVudFNvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9maXJlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2dlb2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2ludGVyc2VjdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2ludGwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vcHJvbWlzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9sb2cubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vYmlnSW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfbWluL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX2lkYi9lempzX2lkYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfc2V4cF9jb252L3J1bnRpbWUtbGliL3BweF9zZXhwX2NvbnZfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9lbnVtZXJhdGUvcnVudGltZS1saWIvcHB4X2VudW1lcmF0ZV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2Fzc2VydC9ydW50aW1lLWxpYi9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9iZW5jaC9ydW50aW1lLWxpYi9iZW5jaG1hcmtfYWNjdW11bGF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9tZDUvbWQ1X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9zaGFwZS9iaW5fc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RyaW5nLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvbmF0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC93cml0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9yZWFkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3NpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvdHlwZV9jbGFzcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9iaW5hYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9tZDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvYmxvYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfaW5saW5lX3Rlc3QvY29uZmlnL2lubGluZV90ZXN0X2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90aW1lX25vdy90aW1lX25vdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfaW5saW5lX3Rlc3QvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zdGRpby9pbl9jaGFubmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3N0ZGlvL291dF9jaGFubmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9tb2R1bGVfdGltZXIvcnVudGltZS9wcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC92YXJpYW50X2FuZF9yZWNvcmRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVyZXBfb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC9tYWtlX3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZV9hYnN0cmFjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0X3Rlc3RfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2V4cGVjdF90ZXN0X2NvbGxlY3Rvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZy9leHBlY3RfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9wb3NpdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9jc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9hY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9vbGRfcGFyc2VyX2NvbnRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fdGFibGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvb2Zfc2V4cF9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvcGFyc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3NyY19wb3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi90eXBlX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wcmVfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3NleHBfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL2V4bl9tYWdpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zcGxpdHRhYmxlX3JhbmRvbS9zcGxpdHRhYmxlX3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL2JpZ2FycmF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svZ2VuZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svc2hyaW5rZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iYXNlX3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW50X3JlcHIvaW50X3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9iaWdzdHJpbmcvYmFzZV9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdmFsaWRhdGUvdmFsaWRhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpbmFibGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcGVybXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb21wYXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGVwcmVjYXRlX3BpcGVfYmFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9xdWlja2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9xdWlja2NoZWNrYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oYXNoX3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21hcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9saXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdW5pb25fZmluZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RvdWJseV9saW5rZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGFzaF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hhc2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGV4ZHVtcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2lkZW50aWZpYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2lnbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50NjQubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL25hdGl2ZWludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL25vdGhpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9uZXZlcl9yZXR1cm5zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb3JkZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9yZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2J5dGVfdW5pdHMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29yZV9iaW5fcHJvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS96b25lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdmFsaWRhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdHlwZV9lcXVhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3VuaXZfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdW5pdF9vZl90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdW5pcXVlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdHlwZV9pbW1lZGlhY3kubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90dXBsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RheV9vZl93ZWVrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGlnaXRfc3RyaW5nX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tb250aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RhdGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb2ZkYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0YWJsZV9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Zsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3BlcmNlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zcGFuX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zcGFuX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb2ZkYXlfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdGltZV9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90aW1lX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NwYW5fbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vZmRheV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYWtlX3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvbW1hbmRfZW52X3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ZpbGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tbWFuZF9zaGFwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hvc3RfYW5kX3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9waWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9mZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9mcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXRfb25jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvbW1hbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdHJpbmdfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdGFibGVfdW5pdF90ZXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmxhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ieXRlX3VuaXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGVhcF9ibG9jay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWFrZV9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NpZ25hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9sYXp5Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL25vX3BvbHltb3JwaGljX2NvbXBhcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGVyaXZpbmdfaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb3JlX3N5cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JhZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpZ2J1ZmZlcl9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2J5dGVzLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpZ3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JvdW5kZWRfaW5kZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3VpX2VmZmVjdC91aV9lZmZlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfdG9rZW5pemVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19nZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2pzL29qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vanMvb2pzX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9kb21fZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vZWZmZWN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2hvb2tzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2pzX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9yYXcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vYXR0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9nbG9iYWxfbGlzdGVuZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vdmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS92aXJ0dWFsX2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC90aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3R1cGxlX3Bvb2wvdHVwbGVfdHlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3Bvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdGltaW5nX3doZWVsL3RpbWluZ193aGVlbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY29uZmlnL2FzeW5jX2tlcm5lbF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvbW9wdGlvbi9tb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3BhaXJpbmdfaGVhcC9wYWlyaW5nX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvc2V4cF9oaWRkZW5faW5fdGVzdC9zZXhwX2hpZGRlbl9pbl90ZXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3VvcHQvdW9wdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC90aHJlYWRfc2FmZV9xdWV1ZS90aHJlYWRfc2FmZV9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvcHJpb3JpdHkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tb25pdG9yMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZXhlY3V0aW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2V4dGVybmFsX2pvYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvam9iX3Bvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2pvYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvam9iX29yX2V2ZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zY2hlZHVsZXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9qb2JfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3N5bmNocm9ub3VzX3RpbWVfc291cmNlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvaXZhcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvaXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvbW9uYWRfc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9pdmFyX2ZpbGxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvdGFpbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9idmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc3RhY2tfb3JfY291bnRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvdGhyb3R0bGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3N5bmNocm9ub3VzX3RpbWVfc291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2N5Y2xlX2hvb2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbF9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvcGlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvbXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvbGF6eV9kZWZlcnJlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9wZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIva25vd25fcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIvbGlzdF93aXRoX21heF9sZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIvcHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvd3JpdGVyX3dpdGhfbGVuZ3RoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvZGVzY3JpcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3RyYW5zcG9ydF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvaW1wbGVtZW50YXRpb25fdHlwZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9vbl9leGNlcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3JwY19lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3JwY19yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC91dGlsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvaW1wbGVtZW50YXRpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvY29ubmVjdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3ZlcnNpb25lZF9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9waXBlX3RyYW5zcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL2FzeW5jX3JwY19rZXJuZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc3RyaW5nZXh0L3N0cmluZ2V4dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaWdzdHJpbmdhZi9iaWdzdHJpbmdhZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hbmdzdHJvbS9leHBvcnRlZF9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hbmdzdHJvbS9pbnB1dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hbmdzdHJvbS9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYW5nc3Ryb20vYnVmZmVyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL2FuZ3N0cm9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VyaS91cmkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdXJpLXNleHAvdXJpX3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL3BlcnNpc3RlbnRfY29ubmVjdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9odHRwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9hc3luY19qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC9iYWxhbmNlZF9yZWR1Y2VyL2JhbGFuY2VkX3JlZHVjZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbi9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfYXJyYXkvd2Vha19hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC93ZWFrX3BvaW50ZXIvd2Vha19wb2ludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfaGFzaHRibC93ZWFrX2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYmVmb3JlX29yX2FmdGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9jdXRvZmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvZG90X3VzZXJfaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9ub2RlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3N0YWJpbGl6YXRpb25fbnVtLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL29uX3VwZGF0ZV9oYW5kbGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3JhaXNlZF9leG4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvdHlwZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3Vub3JkZXJlZF9hcnJheV9mb2xkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2FsYXJtLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3N0ZXBfZnVuY3Rpb25fbm9kZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9hcnJheV9mb2xkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2F0X2ludGVydmFscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9iaW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2V4cGVydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9zY29wZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9mcmVlemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaWZfdGhlbl9lbHNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2pvaW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc25hcHNob3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwva2luZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3JlY29tcHV0ZV9oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2FkanVzdF9oZWlnaHRzX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYWxhcm1fdmFsdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2ludGVybmFsX29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2V4cGVydDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvcmVkdWNlX2JhbGFuY2VkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2luY3JlbWVudGFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Fic3RyYWN0X2FsZ2VicmEvYWJzdHJhY3RfYWxnZWJyYS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX21hcC9pbmNyX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX3NlbGVjdC9pbmNyX3NlbGVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9qYXZhc2NyaXB0X3Byb2ZpbGluZy9qYXZhc2NyaXB0X3Byb2ZpbGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS92ZG9tX2ZpbGVfZG93bmxvYWQvdmRvbV9maWxlX2Rvd25sb2FkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL3VpX2luY3IvdWlfaW5jci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9jb21wb25lbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vYXBwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vanNfbWlzYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9zdGFydF9hcHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vaW5wdXRfd2lkZ2V0cy92ZG9tX2lucHV0X3dpZGdldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHRtYXAvcHRtYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIveW9qc29uL2NvZGVjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3lvanNvbi9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIveW9qc29uL2xleGVyX3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udl9saWIveW9qc29uX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3BweF95b2pzb25fY29udl9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2Rlcml2aW5nL3J1bnRpbWUvcHB4X2Rlcml2aW5nX3J1bnRpbWUubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvV2ViLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1R1cGxlVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9UaW1lVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9TdHJpbmdVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL01vbmFkcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9TdGF0ZU1vbmFkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1Jlc3VsdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9QYWlyVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9PcHRVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL01hcFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTGlzdFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvRGlyZWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0xpc3RGcmFtZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9JbnRVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0ludE1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9FaXRoZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvQWJhLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kT3ZlclN0b3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRCYXNpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvU3RvcmVNYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1N0b3JlUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9TdG9yZVRyYW5zYWN0aW9uYWxSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1N0b3JlVmVjdG9yLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvSWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL09wZXJhdG9ycy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvUHJlY2VkZW5jZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvU29ydC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL05pYi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL0dyb3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvVG9rZW4ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9MYWJlbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL05pYnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9Nb2xkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9Gb3JtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvU2Vjb25kYXJ5LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvQmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vRWZmZWN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9Nb2xkcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1RpbGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9QaWVjZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1NrZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9TZWdtZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1NpYmxpbmdzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0FuY2VzdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0FuY2VzdG9ycy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9UaW1lLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1RvdWNoZWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9Vbmljb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvTWVhc3VyZWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvU2VsZWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0JhY2twYWNrLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1JlbGF0aXZlcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9aaXBwZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9WYXJNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9WYXJFcnJTdGF0dXMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0NvbnN0cnVjdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9Db25zdHJ1Y3Rvck1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0ZpbHRlckFjdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvdGVybS9JZFRhZ2dlZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0ludmFsaWRPcGVyYXRpb25FcnJvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1N0cnVjdHVyZVNoYXJlU2V4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvVmFyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVmFyQnN0TWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9UZXJtQmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvdGVybS9UUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9DdHgucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL3Rlcm0vVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVmFyQ3R4LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9UZXJtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvREhFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FdmFsdWF0b3JFcnJvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0J1aWx0aW5zLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy90ZXJtL0Nscy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvQ29DdHgucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL01vZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL1NlbGYucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0luZm8ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9UZXJtUmFuZ2VzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9TdGF0aWNzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvREhQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9DYXN0cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvQ29yZVNldHRpbmdzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbEN0eC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1VuYm94aW5nLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvUGF0dGVybk1hdGNoLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVGVzdFN0YXR1cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1Rlc3RNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9UcmFuc2l0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVmFsdWVDaGVja2VyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9BY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvQXNzaXN0YW50RXhwYW5kZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvU3VnZ2VzdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2Fzc2lzdGFudC9Bc3Npc3RhbnRDdHgucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvQXNzaXN0YW50Rm9ybXMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9EZWx0YS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1Rlcm1NYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9UaWxlTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9NYWtlVGVybS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9FZGl0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FbGFib3JhdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yU3RhdHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FdmFsdWF0b3JTdGF0ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ByZXR0eS9QcmV0dHlTZWdtZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJldHR5L0V4cFRvU2VnbWVudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vSW5kaWNhdGVkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJvZy9Qcm9ncmFtUmVzdWx0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJvZy9JbnRlcmZhY2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvVHlEaS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1Rlc3RSZXN1bHRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvU3Vic3RpdHV0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJvZy9DYWNoZWRTdGF0aWNzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yU3RlcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0ZpbHRlckVudmlyb25tZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRmlsdGVyTWF0Y2hlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1N0ZXBwZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL01vdmUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL1NlbGVjdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vSW5zZXJ0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1ByaW50ZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvUGVyc2lzdGVudFppcHBlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vRGVzdHJ1Y3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL1BlcmZvcm0ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvT3JpZW50YXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL01vZGVsUmVzdWx0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJvZy9Nb2RlbFJlc3VsdHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvSW5jb21wbGV0ZUJpZGVsaW0ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9Db2RlU3RyaW5nLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0VkaXRvclV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Vbmljb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvUG9zTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTWVhc3VyZWRQb3NpdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xpc3RVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTWVhc3VyZWRMYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Db3N0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTGF5b3V0T2ZEb2MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Cb3gucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsc2Nob29sL1N5bnRheFRlc3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsc2Nob29sL0V4ZXJjaXNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9HcmFkaW5nLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9HcmFkZVByZWx1ZGUucmUiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX3JlcHJlc2VudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfYmFja2VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfbGV4ZXJfZnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWQubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvV29ya2VyU2VydmVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1dvcmtlckNsaWVudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9XaWRnZXRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1dlYWtNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4YW1wbGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4cGxhaW5UaGlzRm9ybS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9WYXJUUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Db2xvclN0ZXBzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9FeGVyY2lzZVV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9FeF9PZGRseVJlY3Vyc2l2ZV9wcm9tcHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4ZXJjaXNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leGVyY2lzZXMvRXhfT2RkbHlSZWN1cnNpdmUubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9FeF9SZWN1cnNpdmVGaWJvbmFjY2lfcHJvbXB0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leGVyY2lzZXMvRXhfUmVjdXJzaXZlRmlib25hY2NpLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9FeGVyY2lzZVNldHRpbmdzX2Jhc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4cGxhaW5UaGlzTW9kZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2dsb2JhbHMvU2V0dGluZ3MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NjcmF0Y2hTbGlkZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvUGVyc2lzdGVudERhdGEucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0VkaXRvcnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4cGxhaW5UaGlzVXBkYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Gb250TWV0cmljcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Kc1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1N0b3JlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9nbG9iYWxzL0dsb2JhbHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL01vZGVsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9VcGRhdGVBY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYXNzaXN0YW50L1VwZGF0ZUFzc2lzdGFudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvQmVuY2htYXJrLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9EZWJ1Z0NvbnNvbGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0xvZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRXhwb3J0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TdGF0ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvVXBkYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1VuaWNvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvVHlwZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UeXBGdW5jdGlvbkV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UeXBBcHBFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHlwQW5uUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1R5QWxpYXNFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvVGVzdFZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVGVzdEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbFR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9TZWdtZW50VHJlZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9TdmdVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1N1bVR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Ob2RlVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvRGVjVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvRGlhZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvRW1wdHlIb2xlRGVjLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0NvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL0JhY2twYWNrVmlldy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvQ2FyZXREZWMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL0NhcmV0UG9zRGVjLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9QaWVjZURlYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9EZWNvLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2VkaXRvci9SZWFkT25seUVkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvQ29kZUVkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvU3RlcHBlckVkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvU2xpZGVDb250ZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0ljb25zLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L1NldHRpbmdzTW9kYWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvU2VxRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TY3JhdGNoU2xpZGVzSW5pdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvQ2VsbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvQ2VsbFJlc3VsdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvQ2VsbEVkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9TY3JhdGNoTW9kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9SZWNUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvUGlwZWxpbmVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvQXBwRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0FwcFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9BcnJvd1R5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9DYXNlRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0tpbmQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvQ3R4SW5zcGVjdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0N1cnNvckluc3BlY3Rvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9FZGl0b3JNb2RlVmlldy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9FeGVyY2lzZU1vZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvRmlsdGVyRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0ZpeEZFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvRm9yYWxsVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0Z1bmN0aW9uRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0hvbGVUZW1wbGF0ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Ib2xlRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0hvbGVQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZVRQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZVR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9JZkV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9MZXRFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvTGlzdEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9MaXN0UGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0xpc3RUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvT3BFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRXhwbGFpblRoaXMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRm9udFNwZWNpbWVuLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Pcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9LZXkucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0tleWJvYXJkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L051dE1lbnUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvUGFnZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9NZW1vLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Mb2dFbnRyeS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRmFpbGVkSW5wdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRGVidWdNb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leGVyY2lzZXMvQmxhbmtUZW1wbGF0ZS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9BdHRyVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvTWFpbi5yZSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdGRfZXhpdC5tbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0EsQzs7Rzs7O1E7Uzs7O0c7STtJO0k7RztFOzs7O0dBV0MsQ0FBQztNQUVFO09BQUlBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCQUMsc0JBQXNCQyxTQUFTRjtPQUMvQkcsb0JBQW9CQztPQUNwQkM7TUFHSixHQUFJRixXQUFZO09BQ1pFLFlBQVlELGlCQUFpQkU7T0FDN0JELHFCQUFxQkU7T0FDckIsR0FBR0MsbUJBQW1CQSw2QkFBNkJGOztVQUdsRDtPQUVERDtRQUFZRyxxQkFBc0IsV0FBYSxPQUFPQyxRQUFRLElBQUdDLGNBQS9CO09BQ2xDTCxxQkFBcUJDOztNQUl6QjtPQUFJSyxXQUFXUjtPQUNYUztNQUNKLFNBQVNDLG1CQUFtQkMsTUFBTUM7T0FDOUIsS0FBS0gscUJBQXFCRSxNQUFPO1FBQzdCO2lCQUFXRSxr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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lLcEVFaUYsVUFBVUMsR0FBSSxPQUFKQSxFQUFLO1lBQ2ZDLFVBQVVELEdBQUksT0FBSkEsRUFBSztZQVdmRSxRQUFRQyxLQUFFQztJQUNaLEdBRFVELFFBQUVDLEtBRVA7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QUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQzs7OztPQTBKRWlrRztPQUNBQztPQUVBQztPQUlBQztPQUlDQztPQVVEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQU1BQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUdBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVBQztPQVVBQztPQUlBQztPQUlDQztPQVNEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUVDQztPQVNEQztPQUlBQztPQUlBQztPQVVBQztPQUlBQztPQUlDQztPQVVEQztPQUNBQztPQUVBQztPQUlBQztPQUlDQztPQVFEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUNBQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQ0RobUc7T0FZQTJiO09BQ0FFO09BT0FuWDtPQUNBRTtPQUNBcWhHO09BSUFDOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SyxXO0s7O1EsUTtzQztRO087SztPOztLLE07SyxNO0ssWTtLLE07SyxNO0ssUTtLLE07OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJLE87Ozs7O0k7SyxJLE87Ozs7Ozs7OztHLEk7OztJOzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLHNCO0cscUIsc0I7RyxzQixzQjtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJOzt5QixPOzt5QixPOzt5QixPOzs7Ozs7SyxPOztJO0ksTztHOztJLFk7Z0I7O0k7Ozs7MkI7bUM7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQixnQjtJLE87Rzs7SSxVO0k7SztlOzs7aUI7OzttQjttQjtJO0k7SSxPO0c7O0ksVTs7SztLOztPLFc7TSxJLEksMkI7Ozs7OztZO1k7Vzs2QjtTLE87UTtTLE07Uzs7OztZOztZOztZOztRLE87OztzQyxPO007TSxJOztJO0k7Rzs7STs7OztLO0ksTzs7O0ksSSxnQjs7OzJCLE87OztJO0ssaUI7SztPOzs7OztLO0s7Ozs7O007Ozs7OztJO0c7OztLLFk7O0s7STtJLFU7SSxPLFc7Rzs7STs7SyxnRDtLOzRDOztLLE07STtJLFk7SSxJLFU7Ozs7O0s7O0k7Rzs7O0ssWTs7Ozt5Qzs7Szs7UTtLLE87STtJO0s7TSxNO00sTTs7OzsyQjs7O2M7STs7OztLO087Ozs7dUM7SSxXO0c7O0k7Z0I7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0s7eUIsTSw0QztJLE87Rzs2QixPLG1DOztJOzs7a0MsTztJOzs7eUMsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07O0c7O0ksUztJOztJLE07Rzs7eUIsbUQ7SSxPO0c7Rzt5QixrQixvQjtJLGE7STt5Qix3QjtJLE87Rzs7SSxTO0ksNEI7SSxXO0c7O0ksWTtJLGtDLE07STs7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7Rzs7SSxZOztJLE87OztJO0ssTTs7bUI7STs7Szs7O0k7Rzs7STtJOzs7Z0I7SyxnQyxJO0ssWTs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7STtnQixXOzs7TSxNO0s7OztNLEk7TTs7Ozs7Rzs7STtJO2UsVzs7aUI7Syw4Qjs7Rzs7STtJO21CLFc7O00sTTtLOzs7TTtNOzs7OztHOztJO0k7OztnQjtLLGtDLE87SyxXOzs7Rzs7STtJOzs7TSxHO087UTs7Ozs7OztLLFc7O0c7O0ksUSxPOztJLE87RztHOztJOztLOztJO2lCO0ssRyxxQztLLEk7O0c7O0k7STtpQjtLLEssNEI7SyxJOztHOztJO0s7OztTLFk7O1M7UTtNLFc7Szs7Ozs0Qjs7O0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7TSxXLGM7TTs7Ozs7Rzs0QixPLHNDOztJLEs7SyxHLDRCO0ssTTs7O0k7aUIsTTtLOzs7TSxXO0ssRyxnQzs7O0c7O0k7SztLO007TyxPO08sTTtNLEcsNkI7TSxLO087TyxPOzs7O0k7O0k7aUIsTTtLOzs7TSxvQjtLLEcsZ0M7OztHOztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7STs7Yzs7Rzs7SSxVOztLO0ssTztJO0k7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7OztHOztJO0ssSTtLLE87STtLLFE7SyxZLE87Szs7Rzs7STtJO0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOztHOztJLGM7eUIsTyx1QjtJLCtCLDZCO0k7aUMsTyxnQzs7O0c7b0Isd0M7O0k7Rzs7SSxvQjtHOztJLFk7Rzs7STs7Ozs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7OztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STtJLHFDO0c7O0k7SSxxQztHOztJOztHOztJO0kscUM7Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO1c7dUI7O0s7Ozs7NEI7OztHOztJO0k7eUM7O00sTTtLLFc7UTtNLEk7Ozs7Rzs7STtJO0ssSTs7OztNO087Uzs7Ozs7TyxPO00sTzs7SztNLFM7c0I7TTs7OztHOztJO0k7dUM7SyxXOzs7Ozs7O007Ozs7O087O1MsVztRLFc7Ozs7O1EsSTs7OztNO087TyxZOzs7OztLLEk7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7O0ssTTtLO0s7Ozs7TSxXO007TTs7Ozs7STtLO0ssTztJO0k7Rzs7STs7SztLLE87O0c7O0k7OztJLE87Rzs7STs7O0ksTztHOztJLHdCOzs7O007TTs7Ozs7O0c7O0ksd0I7Ozs7TSx5QjtNOzs7Ozs7Rzs7STs7OztNO007TTs7Ozs7O0c7O0k7O0s7YztLOzs7STtJLE87Rzs7STtJO0k7RztHOzs7Ozs7Ozs7Ozs7O0k7OztLLE87SyxXO2tCLHFDO0k7UztJO0k7Ozs7TTtNOzs7OztJOzs7O007TTs7Ozs7STs7OztNO08sTztPLE87Ozs7UTtTLE87Z0I7UztTO1M7Uzs7Ozs7UztTOztTOztvQjtTLE87Ozs7VSxXO2E7VyxXO1csRztZO2E7YTthOzs7OztzQjs7Ozs7OztRO1E7Ozs7O007Ozs7O0k7OztHOztJOzs7OzswQixPLHFDO0k7SyxRO0s7STtLO2lCO0sscUI7Ozs7O0ksTztHOztJO0ksYztrQjtJO0s7Ozs7SyxPO0ksTztHOztJO0ssTTtLO087Ozs7O0ksVztHOztJOzs7Ozs7USxXOztRLFc7Z0IsVzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O0ssa0I7SyxPOztJLG9CO0ksTztHOztJOztNO08sTztjOzs7Ozs7O0ksVztJLE87RztHO0k7STs4QixxQjswQiw0Qjs7STs7Ozs7O3VCLE07O0k7RztHOztJO0ssWTs7OztJO0s7TTs7TTs7Ozs2QixPOzs7O0k7O0s7OztTO1U7Vzs7VTs7OztpQyxPOzs7Ozs7O0k7STtJO0c7RztJO0k7Ozs7O0c7STs7TyxJLEksTzs7Ozs7O08sVztPO1E7UyxPO1MsYzs7O087O087ZTs7Rzs7STs7SztLOzs7Ozs7O0k7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TztROzs7Ozs7Ozs7O087O1EsZTs7Ozs7Ozs7Ozs7TztPO1E7Ozs7OztNOzs7O1E7OztVO1E7Ozs7Ozs7Ozs7OztLLE87O0c7O0k7STs7SztLLE8sZ0M7STtJO0ssbUI7SyxXOzs7Ozs7TztROzs7Ozs7Ozs7O0k7O0s7OEI7bUQ7SyxPOzs7Ozs7OztJO0k7SSxPOzs7STtJLE87Rzs7SSxZO2dCLE87O0k7SSxPO0c7RyxJLGlCOztJOzs7SyxJLGtCOzs7Ozs7SyxZOzs7Ozs4Qjs7O0c7O0ksZ0I7STtnQjs7O0ssZTtLOzs7O00sTztNLE87SyxXO0k7SSxPO0c7O0ksWTtJO0c7RztzQixpQjtHO0ksTTtJLE07c0IsaUI7RztJLE07SSxNO0ksWTs7STs7Ozs7O3lCOzBEOzBEOzBEOzBEOzs7Ozs7OzBEOzsyRDsyRDsyRDsyRDs7Ozs7TTs7Szs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7Ozs7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7OztHOztJO0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7OztLLHVCO0ssTzs7SSx5QjtJLE87RztHLEk7O0k7Ozs7Ozs7OztJOztPOztJLE87Rzs7STtLO007UTs7O1M7VTtVLE87UyxPO2tCO1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOztlLE07O0c7O0k7Szs7OztNO007TTtNO0ssTzs7STs7Ozs7O0s7SztJLE87Rzs7O0ksRztLO0k7Ozs7STs2QztJOztLLE87Szt5Qjs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztNLEk7SyxpQjs7OztLLE87OztLOzs7TSxNO00sVTtLLE87OztLOzs7OztNLE07Szs7OztLLE87O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TSxPO0s7SyxPO0k7O0ssTzs7O2U7dUM7OztlLE87Ozs7O21COzs7Ozs7Ozs7OzBCO2UsTztjOzs7STs7SyxPOzs7ZTs7NEI7ZTtjOzs7STtnQywyQjs7O007OztRLFc7Ozs7OztNO0s7SyxPO0k7O0ssSSxVLHdCOzs7NEI7OztJOztLLFU7O007TSxXO0s7SyxlO0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SztLLE87O3NDLE8sNkI7OztJOztLLFU7dUI7SyxPO0k7OzBCLE8sbUIsdUI7SyxPO0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNOzhCLE8sd0I7UyxPO1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTLE87OzttQjtrQjs7O1E7O1MsUTs7VTtVLE87UztTO1M7UTsyQixpRDs7UyxRLG1COzRCLE8sMkI7UztTO1E7O1MsSSxVLDRCOzs7O1UsUTtVO1U7O1E7O1M7UyxjO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSwwQjtJLE87RztzQixTO0c7O0ksOEI7SSxPO0c7RztJO00sdUI7STtNO1E7O0k7VztjOztJLE87Rzt3QixTOzs0QixPLHlDO3NCLE8sa0M7MEIsc0I7Rzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLHlDOztTO1E7O1M7OztVLE07UztROztTO1E7O1M7UTs7UyxVO1M7UTtROzs7O1MsVTtTLGtCO1M7VSxTLFc7OztVLEksYTs7OztXLEksWTs7O1ksTTs7Vzs7VSxhOzs7WSxNOzs7OztXLFU7VyxJLFk7OztZLE07O1c7O2M7Ozs7O1csSSxjOzs7WSxNOztXOztVLE07UztTLGE7OztROztTLEk7Ozs7O1U7O1csTTtXLE07VTtVLE87O1M7UTs7UyxJOzs7Ozs7VTs7UztROztTO1UsYztVOzs7Ozs7MEM7VTtXLGM7Vzs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7STs7Ozs7NEIsMEI7O0k7SyxNOzs7Szs7ZTs7Ozs7O0k7SSxPO0c7O3lCLE8seUI7STtJO0ssTTs7STtHOztJO0k7SyxNOztJO0c7O0k7O0s7O00sZ0I7OztLO0k7SSxZOztJO0c7O0k7SyxNOzs7Szs7O0k7STs7eUIsaUM7Szs7O0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxRO0ksYzs7Ozs7Ozs7b0IsWTt1QixZOztJLE87a0I7O0c7O0ksVzs7SyxPLGtCO21COztJO0ksTztHOztJO0s7TSxNO00sTTs7Ozs7Ozs7SSxpQjtHO0csVzs7SSxNO0c7Rzs7SSxtQjtLLE07STtJOzs7O0c7dUIsMkM7O0k7Rzs7STs7SyxTO0s7SyxVO0ssTztJO0ksTztHOztJO2M7STs7O0c7O0ksbUI7SyxNOztvQixPLHdDO0k7SyxXO2lCOzs7OztVOzs7OztHOztJLG1CO0ssTTs7O0ssUztZO007SztNLFE7TSxVOztlOztJO0k7OztHO3lCLHdCOztJLG1CO0ssTTtJO2M7O0c7O0ksTyxrQjtHO0csYTs7STs7OztjO3VCLG1COztHO0csZ0I7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJLG1CO0ssTTtJOzs7O2lCOzs7TSxJLDBCOztLOzs7OztNLE87OztHOztJLG1CO0ssTTtJOzs7O087USxNO2M7OztNLEksMEI7O0s7Ozs7O0ssZTtLLE87O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLHNCO0ksVTtJLE87Rzs7STtHO0c7STtJOztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJO0k7VTtJO1U7SSx1QjtJLHdCO0ksdUI7SSx5QjtJLDJCO0ksMkI7SSw2QjtJLHdCO0ksdUI7STtJO0k7STtJOzs7Ozs7Ozs7O0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7O00sb0I7TSxtQjtNOzs7Ozs7O0c7RyxJLHlCLG1COztJOztPOztPO2U7O0c7RztJOzs7UTs7Ozs7O087Ozs7STt1QiwwQztHO0k7OztROzs7Tzs7OztJO3lCLE8sc0M7O0k7O087O087O087ZTs7Rzs7STs7Ozs7Ozs7O0c7O0k7O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7O007TTtLOztJO0ssTSxXO0ssTSxXO0ksTyxXO0c7O0k7SSxPO0c7O0ksWSxPO0k7SSxPO0c7O0k7SyxNO0ssVTtJO0s7OztTO1U7VSxROzs7O2U7bUI7O1M7UTtNLEs7SztNOztPO08sUTs7Ozs7Vzs7Ozs7OztHO0c7O0k7eUM7O2dCO0kscUI7STtHO0c7O0k7Rzs7STtJLGtCO0k7SyxlO0s7OztHO0csSSxtQjs7STs7O0c7OztLO0s7TSxXO007TTtNLFU7TTs7Ozs7b0I7O087OztJO0ksTztHOztJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SztLO0ksVztHO0c7MEIsUSw0Qjs7STs7Ozs7Rzs0QixPLG9DO0csSSw4Qjs7STs7O0c7O0k7SSxJLCtCOzs7O0ssSSxVOzs7O007TyxhOzs7Ozs7Szs7OztLO00sZTtNOzs7O0k7O0s7OztTO1M7VTtVOztTLE87Ozs7O1E7SSxPO0c7O0k7K0MsTyxpQjtHOztJO0ssTztJOztLO0ssTztJOztLLE87STtJO0c7a0MsdUM7RztJO0s7SyxZO0ssUTtLLGU7O0ssa0I7SSxPO0c7Rzs7SSxJLCtCOztnQztLLG9CO0ssVzs7Rzs7O0s7TTs7O3dCO007SyxPO0k7O0s7O007UTs7Ozs7TyxxQjtPLE87Ozs7Ozs7SztJO0k7Rzs7STswQix5QjtJLFE7O0s7O0k7SSxXOzs7O0s7TTtNO007OztTLG1COzs7UTtLOzs7UTs7STs7Szs7Ozs7O007Ozs7a0I7TSxROzs7TTs7SztJO0ksTztHOztJLGM7Ozs7OztJO0s7Szs7O0s7OztLLHdCLGtCLHNCOztNOzsrQjs7OzsrQjs7O007TTs7NkI7SztLLFc7STtJOzs7OzswQzs7O0ksVztJOzs7TTtNLE87OztlLDZCO0s7SztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7OztNOztPO007TyxnQztNO0s7SztLLE87O0k7Ozs7TTtLO0s7TSxNLFc7TSxROzs7cUIsUztLLEc7TSxVO007O0ssVTt1QjtLLE87O3NCO0ksTztHO3FCO0c7SSxlO0ksTTtJLGM7cUI7RztJLGM7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJLEksSSxNOzs7Ozs7STtNO1Msc0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SztLO0s7O0ksVTs7SyxNO0k7RztpQyxrQixTOztvQixPLGdDO0k7SyxRO0ssUztLLEk7O2U7Szs7VTs7Szs7STtLLFE7OztvQixPLHlDO0k7STt3QixPLG1DO0k7SSxPO0c7O29CLE8sZ0M7SSxZO29CLE8sOEI7SSxZO0k7Rzs7SSxZOztJLE87Rzs7STs7O1E7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssOEI7SyxNO0ssTTs7O0sscUI7Ozs7OEI7Ozs7Ozs7OztROzs7O0k7OztTOzs7Ozs7Ozs7Ozs7O0ksRztLLFE7SztNLFk7TSxHLDRCO087TTtPLFU7Tzs7O2dCLDJCOztJO0c7O0k7SSxxQjtJLG9COztLO0ssZTs7O0ssTTtJO0k7YTs7Rzs7O0s7Ozs7Ozs7VyxLLDZDO1c7WTtZO2M7Ozs7O1ksTTtZLFU7VyxJLFUsbUM7OztrQzs7O1U7bUIsVzs7TTs7O1U7OzthO3VCO1c7WTtjOzs7Ozs4Qix5QjtXLE87O1U7UztPO3FCLFc7TywrQjtPLE07O1M7OztNO087TyxNO08sTTtPLDhCO08sTTs7Ozs7Ozs7Ozs7OztVLE07Ozs7Uzs7O0s7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHO2dDLG9DO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEk7O0k7O0ssTztJO0ksTztHO0c7OEIsTyxvQzs7STs7SyxNOzs7Tyx1Qiw2QztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztJOzs7UTtROzs7STs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFMsSTs7O08sTTs7TSxTO007TSxrQixPOztNOztJO3FCO0k7Rzs7SSxJLHlCO0k7Rzs7STtLLFE7SyxTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7TSxnQyxLO007Ozs7TTtPO08sc0I7TSxPOztLOzs7O00sTzs7OztPO087Ozs7OztJOztLO00sTTs7SztLO007TTsyQztjLG9DO087UTtnQzs7OztLOztNO007O1EsTztPLFk7Ozs7Ozs7O1M7VTtVLG1COzs7Ozs7O1UsSTtVO1csTzs7O1U7Ozs7OztZLEk7WTthLE87OztZOzs7WSxJO1k7YSxPOzs7WTs7O087O0s7O00sb0M7TSxXOzs7USxJOzs7Uzt5Qjs7bUI7c0I7VTtXOzs7c0I7Ozs7OztROzs7UztRO1MsTzs7UTs7OztPO1E7USxlO087USxPOztPOztNO0s7OEI7SztLO0s7TTs7UyxPOztTLE87aUIsTzs7O0s7TSxzQixXO007O0s7Ozs7Tzs7TTs7SztNO1E7OztNO0ssMEI7Szs7TTtLO007O08sVztPLE87TTtNOztTO00sMEI7Szs7TTtPOzs7a0I7O2tCOzs7Ozs7USxPOztPO1EsWTs7TyxPOztNLE87SztLOztNLDJCLHNCLFc7TSxPO007UTs7SztJO0k7Ozs7Szs7O1k7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0csb0I7Rzs7SSxPO0c7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztRO08sVztPLE87Ozs7USxNOztRO1MsTztTLE87USxPOztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7OztpQjs7O087O1EsTztPLE87Ozs7USxNOzs7O1EsTzs7Ozs7OztPLFc7TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7MkI7O087O1EsTztPLE87OztPLE87OztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87Ozs7O1UsVztVLE87O1U7a0I7VSxPOztVOzthO1UsTzs7O087Ozs7UTtRLE87USxPO087O1UsTzs7VSxPOzs7VSxPOzs7Ozs7UTs7UyxPO1MsTztRLE87OztRLE07TztRLE87USxPO1EsTztRLE87TyxPOzs7O1E7Ozs7UztXOztTLE87UyxPO1MsTztRLE87Ozs7USxNO087O1E7VTtRLE87USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxPO1EsYTtPLE87Ozs7USxPOztPLE87OztPOzs7O08sa0I7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOztPOztRLFM7TztRLE07OztRO1MsUztTLE87UyxPOzRCOztRO1MsTztTLE87NEI7TyxPOzs7Ozs7O08sTzs7TyxxQixPO08sTzs7eUIsTzs7Tzs7USxPO08sTzs7O08sTzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Ozs7VSxXO1UsTzs7VTtrQjtVLE87O1UsVztVLE87OztPLGtCLE87TyxPOztHO0c7O0ksbUI7STtJLEksb0IsbUIsZTt5QixtRDtJLFk7Ozs7OztrQzs7OztnQjs7STtHOztJOzs7Ozs7Z0I7OztrQjs7Ozs7Ozs7UTs7O0k7SSxjOzs7Ozs7Ozs7Ozs7O0k7RztHOytCLHlCOztJOzs7SSxNO0c7OztLOzs7OztLO007O08sTztjOzs7O007Ozs7O00sTztLO0ssTzs7STtJO0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxPO1E7O1MsSSxNLGdEOztVO1c7a0I7WTtXOzs7O2lDOzs7UztTLE87UTs7Uzs7VTtXO2tCO1ksTTtXOzs7OztZLE87OztTO1MsTztROztTOztVO1csVTs7O1M7Uzs7O1U7VyxLO1c7O1M7UyxPO1E7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7MkI7UztVLFE7VTtVO1U7Ozs7VyxtQjtxQjtXOzs7Ozs7O1U7O1csSSxJLE07Ozs7b0I7O1c7VTtVLE87UztTO1UsZ0I7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7OztXO1c7Ozs7O1M7OztVLGE7OztXOztXO1U7VSxPO1M7UztTO1UsVztVLGE7VTs7VTtvQjtVOztVO1U7VSxPO1M7Uzs7OztXOztZOzs7Vzs7Ozs7Uzs7VSw4QjtVLGtCOztVOzs7OztVO1c7Vzs7VztXLE87VTtVO1c7VTtTO1M7Uzs7WTs7VTtXLE07OztXO1k7OzZCLCtDO1csZTs7VTtXO1c7VzthOzs7VTtTO1MsTztROztTOzJCO1MsTztROzs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQzs7O0ssTTs7OztRLGtEO1EsTztPOzt3QixTO3dCLFM7O29CLGM7MEIsTyw0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLFM7MEIsUztzQixjOztJLE87Rzs7Ozt5Qjt5Qjt5Qjt5Qjs4Qjs4Qjs4Qjs4Qjs4Qjs4Qjs7Ozs4Qjs4Qjs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7O0c7Ozs7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7O087Ozs7VyxRO1csTztVO1E7VTs7USxNO08sTzs7O08sTzs7MkIsTzs7RztHOztJOzs7O0ssTTs0Qjs7Ozs7UTs7OztJO0ssMEIsMEIsSTtLLE87O0c7O0k7STsyQjtLLFE7VztLLEk7O0c7O0k7eUIsTyw4QjtHOztJLFU7STtJO0c7O0ksTyx1QjtHOzZCLHdCOzs7STtjO2M7Ozs7STtjO2M7OztJLEksNkIsUTs7SyxNOytCOztJO0c7OztJO2M7Yzs7O0k7OztHOztJLFk7Z0IsTTs7STtHOztJO0k7Rzs7O0k7Ozs7Ozs7O2tCO0s7O0k7Rzs7O0s7aUM7STtJO0c7Ozs7OzBCLDRCO3lCLE8sdUM7Ozs7Ozs7a0I7Szs7STtHOzs7STs7YztjLE87YTs7Rzs7STtJO0ssVTtLLFU7SyxVO0ssVTtLLFc7Ozs7Ozs7Ozs7Ozs7O007TTtPO08sVTs7Ozs7Ozs7Ozs7TyxNOzhCOztNLEk7Ozs7Ozs7MEM7Uzs7Ozs7OztNO087TztPO087Tzt5QjtPOzs7VTtXO1c7Ozs7VztZO1k7WTtZOzs7VTtTO08sZ0I7Tzs7O1ksWTs7WTtXOzs7Tzs7Ozs7O1E7O1E7UTs7O1c7O1k7O1ksUztZO1c7VTtvQjs7O007Tzs7VTtXO1c7c0I7O1U7O087O1U7VztXO1UsTzs7TTs7OztPO087UTtRLDRCO087TztRO1EsVTtPLEc7USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0IsTztpQjs7d0I7O1k7b0I7O3NCO2lDO1c7OzhCO087Ozs7WTtZLE87VztXLE87O087Ozs7O007TTtPO08sSTs7Ozs7Ozs7OztPLFU7Ozs7Ozs7Ozs7UTtTO1M7UztTO1M7UztTO1EsRzs7O1M7VTtnQztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1U7VTs7O2E7O2M7Yzs7O2M7Yzs7Yzs7Ozs7Yzs7Ozs7YTs7Ozs7Ozs7WTtVLFc7Uzs7O1U7Vzs7Ozs7YztjOzs7Ozs7OzthO3dCOztROzs7O1UsTTtTOztVOztXO1c7Vzs7O2M7O2U7O2U7O2U7YzthOztxQjs7Ozs7O1E7Uzs7WTt3QjtZOzs7O2E7ZTs7O1ksVzs7Uzs7WTtZLE87O1E7O08sTTsyQzs7TSxNOzJDOzs7SSxNO0c7O0k7SztNLEs7NEIsYTs0QixPLDJCO00sSTs7Ozs0Qjs7O0s7O0k7Rzs7O0ksTzs7OztJLE87Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7OztJOzs7MkI7O3lCLE07OztPLEksUTs7OztRLE07OztPOztHOztJO3VCOztJO0c7O0k7Ozt5Qjs7eUIsTTtpQzs7RztzQixtQjs2QixtQjs2QixtQjt1QixjOztJOzs7MkI7O3lCLE07OztPLEksVTs7OztRLE07Ozs7OztHOztJO0k7aUI7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOzsyQix5QjtTLE87Ozs7UTs7MkIseUI7UyxPOzs7O1E7O1M7UTs7UztROztTO1E7MEIsdUI7O1M7UztTO1M7UTs7UztVO1U7UztTOzs7O1E7O1M7VTtVOztVOzs7O1csdUI7Ozs7YTs7Ozs7Ozs7O2E7Yzs7Ozs7ZTs7Ozs7OzthOzs7OztXOzs7Ozs7O1UsTTs7OztxQztVOztXLE07O1U7Ozs7Ozs7VSxJOztROzs7OztZO2E7YSxNO2E7WTs7Ozs7cUI7O1c7VztVO1U7Uzs7OztZO2E7YSxNO2E7WTs7Ozs7cUI7O1c7VztVO1U7Uzs7O1csTzs7Ozs7c0I7c0I7OEI7O3FCO3FCO29CO1U7VSxnQixjO1U7VztXO1UsZ0IsYztVO1c7Vzs7OzthLFk7OztjOzs7YTtZO1ksTztXO1csTztVO1U7VyxTO1c7Vzs7Vzs7Ozs7WSxRO1c7VTtVO1c7O2E7Ozs7Ozs7YztnQjs7O2E7Ozs7OztXO1U7VTttQjs7Uzs7VSx3Qjs7Ozs7c0I7VTtTOztVOzs7VzthOztXO2E7Ozs7O1c7O2M7Ozs7OztVOztVO1c7WTtZO1k7O1k7Ozs7YSxrQjs7Ozs7OztvQjtxQjs7Ozs7Z0M7OztlO2U7Ozs7O2E7Ozs7OztnRTtXOzs7Ozs7a0I7bUI7OztpQjtpQixPO2dCO2dCLE87ZTs7OztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7VTtXLFE7OztXO1U7Uzs7O1U7VTtTOzs7Ozs7VTtXLFE7Ozs7VTtTOzs7VTtVO1M7Ozs7Ozs7a0IsVTtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLDRCO0ksTztHOztJOzs7Ozs7O0k7SyxVO0s7dUIsTyxzQztLLE87STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07dUIsb0I7O29DOzs7c0I7O3VCLE07dUI7dUIsb0I7O29DOzs7OztzQjs7O3VCLEs7dUIsSzt1Qjt5Qjs7O3VCO3VCLG9CO2lDOzttQixXOzs7O3FCOzs7Ozs7Ozs7bUI7Ozs7O3NCLG9COzs7c0I7O3NCOzs7O3VCLEs7dUIsSzt1Qjt1QixROzs7Ozs7eUI7Ozs7Ozs7OzBCLFU7MEIsVTs7Ozs7Ozs7Ozs7b0M7Ozs7Ozs7Ozs7Ozs7a0I7a0IsTztpQjs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STt5QiwrQjs7STs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxHO0s7TSxPO2tDOzs7STtLO0s7TTtPLE87TyxNO00sRyw2QjtNLEs7TyxHO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7SyxPOzs7OztLO0k7SyxpQztJOztLLGE7SyxPO0k7STs7Ozs7Ozs7Ozs7O0k7SztLOztJO0k7SztLOztLO0s7OztLO0s7Ozs7O0k7SztLO0s7O0ksTztHOztJOzs7NkIsTyx5QztJLE87Rzs7O0s7OztNLE87TSxjO0s7STtJLE87Rzs7STtLOztrQixNO0ssSTs7OztpQjtPOzs7OztLLFc7MEIsTTtLO0s7SztLO0ssdUM7Ozs7a0I7Ozs7WSxxQixpQzs7O08sRztROzs7O1kscUIsaUM7OztPLEc7UTtPLFE7Tzs7Tzs7Ozs7SztLO0ssVztLOzs7OzRCOzs7Rzs7STtJO0s7SztLO0ssSTs7SztNLFc7TTs7Ozs7STtJOztNLFk7OztPO29COztPOzs7TTs7OztHOztJO3VCLHFCO0ksTztHOztJOzs7Szs7SztNLE87TSxjOzs7STtHOztJOzs7Ozs7Ozs7Ozs7Szs7Ozs7aUI7SztLLFc7SyxJLG9COztNOztPO007SztLLGdCOztNOzs7Ozs7O00sTzs7O0s7SztNLE87TSxPOztNO00sbUIsMkI7TTtNLE87SztLLFUsVzs7TTtNOztROztPOzs7TyxNOzt3Qjs7TTtLO0s7TSxROzs7SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7O007Ozs7Ozs7Ozs7TSxXOztNO087USxNO1E7O1csSSxlLDhCOzs7b0M7OztVO1E7O2tDO087Tzs7OztrQzs7O0s7SyxJOzs7Ozs7O1E7UztTLHFCLHVCOzs7WSxXO2lDO1ksUTtZO1k7VztTOzs7Ozs7OzJDLHFCO087UTtTOzRCLDRCOzs7WSxzQjtZLFE7WTtZO1c7Ozs7Ozs7Ozs7TTs7OzhCOztPOzs7Ozs7O08sRyxnQztRO08sRyxnQztRO087TTtNLFk7Ozs7O007SztLLFksVzs7TTs7Ozs7TSxXOzttQjtNOztPO007SztLO00sVTs7Ozs7Ozs7OztXO1c7VTtlOzs7Ozs7TTs7Ozs7TTs7Yzs7SztLLGMsVztLOzs7Ozs7OztRO1E7Ozs7O1k7O2E7YSxPO1k7cUI7YTtZO2E7OztjOztjOzthO2EsTztZOzZCOzBCO1c7UTtROzs7OztNOzs7VTs7VztVO1UsYTtVO1M7TyxPO00sVzs7O0ssTztJO0ksTzs7RztHO0ksTztHOztJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7OztJO0k7Ozs7Ozs7OztJOzs7SyxPOztLLE87OztLLE87O0ssTztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87RztHO0k7SyxPOzs7d0IsTzs7O08sTzs7O08sTzs7O08sTzs7O0csNkM7RztHLDRDLHdCO0c7O0ssVztLLE87STtJLE87RztHO0k7OztLLE87SyxPO0ksTzs7RztJOztHO0csOEMsd0I7Rzs7Ozs7Ozs7Ozs7OztLOzswQixvQixXO0s7TSxXO007TTtRO0s7SyxPO0k7SSw4QyxTO0k7Szs7ZTs7STtJOzs7Ozs7Ozs7Rzs7SSxnQzs7OztLOztJO0c7O0ksTzs7O0c7Rzs7SSxjO0ksTztHO21DLGtDOztJOztJLG9CO0ksTzs7O0k7STtJOzs7O2MsTzthO0c7O0k7STtJLHVDLE8sdUI7Rzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLE87STtJO0ssTztLLHlCOztLO0sseUI7STtJLFU7STtHOzhCLG9DO0c7RztJOztHOztJLE87RztHOztJO2dCOztJO0c7O0k7Rzs4QixvQztHO0c7STs7Rzs7SSxPO0c7O0k7Z0I7O0k7Rzs7STtHOztJO0k7STtHOztJO0c7O0k7SyxVO0s7OztROzs7STtHOztJO0s7TztLOzs7UTs7O0k7RztHO3FDLGtDOzs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7OztlLE07O21DOztLOztHO0c7Rzs7TSx1Qjs7TTtLOztJOzs7SyxNO0k7SSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7MEI7O1E7OztTOzs7O2dCLE87O0c7O0k7O3lCOzsyQjtlLE87O0c7O0k7SztNLE07TTtNLFU7Szs7Ozs7TTtjOzs7Ozs7OztHOztJLFE7SSwwQjt1QixpQjtJLFc7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJOzs7Ozs7O0ksVztJLFc7SSxXOztLOztRLE87O1E7b0M7O0k7SSxPO0c7aUMsK0IsVTt5QixpRDsrQixhOzhCLGE7Rzs7STs7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7STs7Ozs7O087UTtrQjs7Ozs7O0k7Rzs7O0k7OztNO00sTzs7O0k7RztHO0k7Ozs7STs7SztLO0s7STtHOzt3QixtRDtJO0ssTztLLE07SSxPO0c7O0k7STtpQjs7MEQ7OztHOztJOztpQixPOzs7Ozs7O00sSTs7O0c7O3FCLCtDO0ksTztHO0csZ0I7O0k7aUI7Rzs7STtLLFU7SztLO0s7Ozs7MkI7OztHOztJO0ssVTtLO0s7Ozs7MkI7OztHO0csaUI7O0k7aUI7Rzs7STtLLFU7SztLO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHFCOztJO2lCO0c7O0k7SztNLE07TTtLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHO0csc0I7O0k7O2M7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHVCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0ksd0I7SSx3QjtHOztJO0ssSztLLEs7STs7YTthOztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSxjO0ksc0I7Rzs7SSxjO0ksc0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksZ0I7Rzs7SSxVO0ksMkI7Rzs7SSxnQjtHOztJLHFCO0c7O0ksWTtJLDJCO0c7O0ksMEI7Rzs7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSw0QztJOzs7O0k7O2E7YTs7OztJO0k7Rzs7STs7YTthOztHOzs7STtJO0k7OztJO0k7STtHO2tDLHdCOytCLHdCO29DLDBCOztJLDJCO0c7NEIscUI7aUMsMEI7O0ksMkI7Rzs4QztHOzZDO0c7c0MsK0I7dUMsZ0M7O0k7STtJO0k7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7OztHOzs7O0k7STtxQyxrQixTOztJLE07Rzs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7O0ksTztHOytCLHNCOztJLFc7Rzs7STtJLFc7Rzs7STtJLFc7Rzs7STtJLFc7RzsrQixzQjtzQixjOztJO0k7Rzs7STtJO0c7Rzs7STtJO0k7Rzs7SSxXO0k7RzttQywyQjtpQyxnQzt1QyxzQztpQyxnQztxQyxtQztxQyxtQztzQyxtQztvQyxtQzs7STtHO21DLG1DOztJO0c7cUMsaUM7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7cUIsWTtJLGtCOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7Ozs7OzZCLCtDO1M7Ozs7Ozs7Ozs7YTthO1k7O2lDOzs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQzttQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7RztpQyxnQztzQyxnQzt1QyxzQzs7STtHO3NDLGdDO29DLG1DO29DLG1DO29DLG1DO21DLGdDOzBDLG1DO3dDLG9DO3VDLG9DO29DLG9DOztJO0c7bUMsaUM7NEM7Rzt1QyxvQztzQyxvQzs7STtHOzJDO0c7O0k7RzttQyxvQztpQyxpQzt5QyxvQztvQyxpQzs7STtHOzJDO0c7a0MsaUM7a0MsaUM7cUMsb0M7b0MsaUM7c0Msb0M7Z0MsaUM7cUMsb0M7O0k7Rzt1QyxpQzsyQywyQjtvQyw0QjswQyw4Qjs7STtJO0k7Rzs7SSxXO0k7RzttQyxnQzttQyxnQztxQyxnQztzQyxtQztxQyxtQztvQyxnQzt1QyxnQztHOzs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7STtJO0c7MEIseUI7cUMsbUM7K0IseUI7bUMseUI7Z0MseUI7MkIseUI7OEIseUI7K0IseUI7NEIseUI7a0MseUI7MkIsMEI7NEIsMEI7NEIsMEI7K0IsMEI7O0k7STtHOzhCLDBCOzs7SyxPLHFCO0k7SSxZOztLLFc7SyxxQjtJO0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7STtHOytCLDRCOzhCLHlCO3FDLG1DO3FDLHlCO2dDLHlCOzZCLHlCO2lDLHlCOzhCLHlCOzJCLHlCOzRCLDBCO2lDLDBCOzhCLDBCOztJO0k7RztnQywwQjs7O0ssTyxxQjtJO0ksWTs7SyxXO0ssdUI7STtJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7Rzt1QyxtQzt1QyxnQzs7STtHO3NDLG1DO3VDLHNDOzJDO0c7dUMsZ0M7cUMsbUM7Rzs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7Rzt1QyxtQzt1QyxnQzs7STtHO3VDLGdDO3FDLG1DO0c7Ozs7STtJO0k7Ozs7SSxtQjtHO21DLG1DOztJO0c7O0k7Rzs7STtHO3VDLG1DO2dDLCtCOzs7SyxPLHFCO0k7SSxZOztLLFc7Syx1QjtJO0ksTztHOztJLFc7STtHOztJO0k7STs7OztJLG1CO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzt1QyxvQzt1QyxvQztnQyxnQzs7O0ssTyxxQjtJO0ksWTs7SyxXO0ssdUI7STtJLE87Rzt3QixlOzJCLGlCOztJLFc7STtHOztJO0k7STs7OztJO0ksNEI7RztHOztJO0k7STs7OztJO0ksVztJLHNCO0c7Rzs7STtJO0k7Ozs7STtJLFc7SSxzQjtHO0c7O0k7STtJOzs7O0k7SSxXO0ksc0I7RztHOztJO0k7STs7OztJO0ksVztJLHVCO0c7Rzs7STtJO0k7STtJLGdDO0c7Rzs7STtJO0k7SSx1QjtHO0c7O0k7STtJO0k7SSxVO0ksc0I7RztHOztJO0k7STtJO0k7STtJLFU7STs7Ozs7O1k7RztHOztJO0k7STtJO0k7STtJO0k7SSxVO0k7Ozs7Ozs7WTs7Rzs7STtJO0k7STtJO0k7Ozs7OztZO0c7O0k7STtJO0k7SSxnQztHO0c7O0k7STtJO0k7STtJOzs7Ozs7WTtHOztJO0k7STtJLDZCO0c7O0k7STtJO0k7SSxVO0ksNEI7Rzs7STtJO0k7STtJO0k7SSxVO0k7Ozs7WTtHOztJO0k7STtJO0ksVTtJLGdDO0c7RztnQyx5QjtHO2dDLHlCO0c7O0k7STtJO0c7O0k7RzsrQiw4QjtHOztJO0k7STtHOztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0ksRztLO0ksVztJLEc7SztJLFc7SSxHO0s7SSxVLHVCOzs7Ozt5Qjs7MEI7OzJCOztTO1UsTztpQjs7Ozs7Ozs7Ozs7Ozs7O0ksUzs7Ozs7d0I7OzBCOzsyQjs7UztVLE87Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0ssTztLLGM7STtHOztJO0ssTztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPLFc7TyxXO08sVztPLE87Ozs7O0k7Rzs7STtJO0c7O0k7Rzs7STtJLE87Rzs0QiwyQjs7STs7Ozs7K0M7O2dEOzs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7O2E7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHOzZCLGdDOztJOzs7YTtpQyxPO0k7Ozs7TSxNOztvQix3QixPOztLO0s7OztHOztJOztJLFE7O0k7STtJLE87Rzs7STtJO0k7ZTs7YztjO2M7YztjO0c7O0k7O3lCOztPOzs7UTtPLE87Ozs7Ozs7OztPLE87Ozs7O0ksTztHOztJOzs7O1E7O1M7OztZO1ksTztXO1E7OzhCLE8sdUI7Tzs7MkIsTzs7O3FCLE87O08sTzs7OztROztTOzs7WTtZLE87VztROzs4QixPLHVCO087OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO0c7OEIsd0I7OEIsTywwQjs7SSxRO0ksMEI7SSxJO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7OzttQzs7OztJLE87Ozs7O2tDOzs7O0k7STs7TTs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7Ozs7O1M7Ozs7VSw0QjtVO1MsTzs7Ozs7bUI7Ozs7Ozs7UyxPOzs7O3VDOzs7Ozs7O1U7O1csNEI7VSxPOzs7OztvQixPOzs7Ozs4QixROzs4QixPOzs7Ozt3Qzs7OzZCOzttQjs7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7TyxPOzs7OztpQixROztrQjs7OztnRDs7OztpQixPOzs7OytDOztnQjs7Ozs7Ozs7OztXOztZOzs7YTthLDRCO2EsNEI7WSxPOzs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOztZOzs7YTthLDRCOzs7Z0IsUTtnQiwwQjtnQixJO2dCLE87Ozs7OzBCOzs7ZTtZLE87Ozs7OztzQjs7Ozs7Ozs7O1c7VTs7O1c7Ozs7YSxPOzs7Ozt1Qjs7Ozs7VztVO08sTzs7Ozs7aUIsd0I7O2lCO2tCOzs7Ozs7OztpQixPO2dCOzs7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7Szs7TSw0QjtNO0ssTzs7OzttQzs7Ozs7OztLLGdDO0ssTzs7OzttQzs7Ozs7O0k7Ozs7O007OztPOzs7OztLOztNO08sNEI7Tzs7TSxPOzs7OztnQjs7Ozs7SztNLE87O0s7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7O3FDOzs7Ozs7O0s7OztLO00sTzs7Szs7Ozs7Ozs7Ozs7Ozs7UztVLE87O1M7OztRLEc7UyxPO2lCLE87OztTOztVO2lDOzs7UyxPOzs7Ozs7O21COzs7Ozs7O1EsTzs7Ozs7OztrQjs7Ozs7OztTLE87Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7SztNLE87O0s7OztrQyxPOzs7OEI7O3lCLE87OztPLE87O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxHO2MsTzs7OztXLE87Ozs7Ozt5Qzs7O087O1EsTzs7Ozs7a0I7Ozs7OztPLE87Ozs7O2lCOzs7OztPOztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7Tzs7O1EsNEI7TyxPOzs7O3FDOzs7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087USw0Qjs7O08sTzs7Ozs7OztpQjs7OztJOzs7O2tDOzs7Rzs7STs7O0k7OztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sRyw2QixPOzs7SyxPOzs7OzttQzs7O0ksaUI7Ozs7O0ssSztlLE87O0ssTzs7Ozs7bUM7Ozs7SyxPOzs7OzttQzs7O0ksMEI7SSxPOzs7OztrQzs7Ozs7O0ksZTs7Ozs7Ozs7Ozs4Qiw2QztNLEs7TTs7Ozs7Ozs7Ozs7OztXLFk7O1csTzs7VTs7WTs7YTtvQzs7O2E7YTs7Z0I7O1k7Ozs7bUM7Ozs7Ozs7Ozs7WTs7OztXOzs7WTtZOztlOztXOzs7O2tDOzs7Ozs7OztXOztVOzs2QjtPLFE7Ozs7Ozs7O1c7Ozs7a0M7O1c7Ozs7Ozs7Ozs7Ozs7WTs7O2EsVzthO2E7O2dCOzs7WTs7Ozs7aUI7OztrQjtpQjs7OzsrQzs7Ozs7O2dCOzs7aUI7Z0I7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OzttRDs7Ozs7Ozs7Ozs7cUI7Ozs7O3NCO3FCOzs7O21EOzs7Ozs7Ozs7O21COzs7O29CO21COzs7O2lEOzs7Ozs7O2lCOzs7a0I7aUI7Ozs7K0M7Ozs7Ozs7WTs7Ozs7Ozs7Ozs7UztVO1csZ0I7Vzs7Ozs7WTs7OztVO1c7VyxJO1c7O2dCO2dCOzs7Ozs7O1ksTTs7Ozs7OztVO3NCO1csUzs7O3FDO3FDO1U7Ozs7Ozs7Ozs7Ozs7O007OztJOzs7STs7TTs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlOzs7bUI7O2UsTzs7Ozs7eUI7Ozs7Ozs7Ozs7VztZOztlOztZOzs7WTs7ZTs7VyxPOzs7O3lDOzs7Ozs7Ozs7WSxHOzs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7O1c7Ozs7YSxPOzs7OzsyQzs7OztXO1k7O2U7O1k7OztZOztlOztXLE87Ozs7eUM7Ozs7OztTO1MsTzs7Ozs7bUI7bUI7b0I7O21CLEk7bUI7b0I7O21CLE87Ozs7aUQ7Ozs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7dUM7OztTOzs7O1UsNEI7UyxPOzs7O3VDOzs7Ozs7OztTLE87O1M7OztVLDRCO1MsTzs7Ozs7OzthLDBCO2EsTzs7OztTLE87Ozs7O21COzs7Ozs7UyxPOzs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozs7VSxPOzs7O3dDOztTOztVLDRCO1MsTzs7Ozt1Qzs7Ozs7OEI7Ozs7Ozs7O1U7Ozs7d0M7Ozs7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVLE87Ozs7d0M7OztVOzs7OztXLDRCO1c7VSxPOzs7O3dDOzs7OztVOzs7Vyw0QjtVLE87Ozs7d0M7Ozs7O1U7OztXLDRCO1UsTzs7Ozt3Qzs7Ozs7VTs7OztXLDRCO1c7a0M7VSxPOzs7O21COzs7Ozs7VTs7O1csNEI7VSxPOzs7OztvQjs7Ozs7O1U7OztXLDRCO1UsTzs7VTs7O1csNEI7O1csNEI7VSxPOzs7VTs7Ozs7Vyw0QjtXLDRCO1c7O1c7O2M7O1UsTzs7Ozt3Qzs7Ozs7Ozs7O1c7Ozs7eUM7Ozs7OzthOzs7O2M7YztxQzthLE87Ozs7Ozs7Ozt1QixTO3VCLGU7dUIsTzs7OztxRDs7c0I7Ozs7Ozs7OztlOzs7Z0I7Ozs7O2M7ZSxNO2U7ZSw0QjtlOztjLE87Ozs7O3dCOzs7Ozs7O007Ozs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7Ozs7O08sTzs7Ozs7aUI7Ozs7TTtPLE87O007OztHOztJOzs7Ozs7UyxPOzs7O3VDOzs7OztTLGtDO1MsTzs7Ozt1Qzs7OztLO00sTzs7Szs7SSxrQixPOztJO0c7O0k7SyxrQixPOztLOzs7Ozs7MkI7OzBCOztROztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7UTtTOztrQyxPO29DLE87Ozs7O1c7O1k7WSw0QjtZOztXLE87Ozs7O3FCOzs7Ozs7Vzs7O1MsTTs7Ozs7O1MsTzs7OztROzs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1M7O1k7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7OztROztTO1MsNEI7Uzs7USxPOzs7OztrQjs7OztROzs7Uyw0QjtRLE87Ozs7c0M7Ozs7O1E7Ozs7OztTLGtDO1EsTzs7OztzQzs7Ozs7Ozs7Ozs7UTs7O1MsNEI7USxPOzs7O3NDOzs7OztROzs7O1MsNEI7Uyw0QjtTO2dDO1EsTzs7OztzQzs7Ozs7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7NEI7O0k7OztJOzs7STs7SywwQjtLLE87O0ksTztHOztJOztLLDBCO0ssTzs7SSxPO0c7O0k7SSwwQjtJLE87Rzs7O0s7OztLLE87Ozs7O2U7OztJOztJLE87Ozs7a0M7Ozs7Rzs7O0ksMEI7SSxPOzs7O0ksMEI7SSxPOzs7STtJLDBCOztJLE87Ozs7O2M7Ozs7O0c7O0k7OztPOztRO1EsNEI7TyxPOzs7O3FDOzs7OztPOzs7Ozs7UTtRLDRCO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7Ozs7UTtRLDRCO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1E7USw0QjtRLDRCO08sTzs7OztxQzs7Ozs7Ozt5Qjs7O087OztHOztJOzs7Tzs7O1E7USw0QjtPLE87Ozs7O2lCLFE7aUI7a0I7O2lCLEk7aUIsTzs7Ozs7MkI7OztnQjs7Ozs7OztPOzs7O1E7K0I7UTs7UTs7Vzs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7Ozs7OztPOzs7O1EsNEI7UTtPLE87Ozs7O2lCOzs7Ozs7O087OztPOzs7USw0Qjs7TyxPOzs7Rzs7O0ssOEI7SywwQjs7SywwQjtLLDBCO0ssTzs7Ozs7Ozs7Ozs7Ozs7STtJLFE7O2U7O0k7Szs7SSxJO0k7Szs7SSxPOzs7OztjOzs7OztHOztJOzs7Tzs7OztRO1EsNEI7OztXLFM7O1csTztVO1EsNEI7TyxPOzs7OztROztTO1M7Z0M7Uyw0QjtRLE87OztPOzs7UTtRLDRCO1EsNEI7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7O1M7UztnQztTLDRCO1EsTzs7Ozs7Ozs7Ozs7O087Ozs7O1c7Ozs7VTtRO1EsNEI7OztXOzs7Ozs7YTs7Yyw0QjtjLDRCO2EsTzs7O1k7OztVO08sTzs7Ozs7Ozs7Ozs7O087Ozs7UTtRLDRCO1EsNEI7TyxPOzs7O3FDOzs7Ozs7O087O1E7USw0QjtPLE87Ozs7cUM7Ozs7O3lCOzs7Tzs7O0c7OztJLDBCO0ksSTtJO0s7O0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Ozs7STs7Ozs7USxPOzs7OztrQjs7a0I7bUI7O2tCLEk7a0IsTzs7Ozs7NEI7OztpQjs7Ozs7MkI7O1E7Ozs7O1MsNEI7UztRLE87Ozs7c0M7Ozs7O1E7OztTOztZOztTOzs7Uzs7WTs7USxPOzs7O3NDOzs7OztROzs7O1MsNEI7UztRLE87Ozs7c0M7Ozs7O1E7OztTLDRCO1EsTzs7OztzQzs7Ozs7NEI7O1E7OztTLDRCOztRLE87Ozs7O0ksMEI7STtJLE87Ozs7a0M7Ozs7Rzs7STtJOztNOztPLDRCO087TSxPOzs7O29DOzs7Ozs7Ozs7OztTLE87Ozs7dUM7OztRLGlEOztTOztVLDRCO1MsTzs7Ozs7dUM7Ozs7O1E7cUM7USxPOzs7O3NDOzs7Ozs7O1M7O1U7O2E7O2dCOzs7O2lCOztvQjs7Z0IsTzs7Ozs4Qzs7Ozs7Ozs7Z0IsTzs7OztnQixPOzs7Ozs7OEM7Ozs7Z0IsTzs7Ozs7OzhDOzs7Z0I7Ozs7aUI7O29COztnQixPOzs7OzhDOzs7Ozs7OztnQixPOzs7O1U7O1U7O2E7O1MsTzs7Ozt1Qzs7Ozs7Ozs7UTtTLE87O1E7OztHOztJOzs7OzJCLE87O1E7O1MsNEI7Uzs7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7OzBCOzs7USxPOztROzs7O3NDOzs7OztJO0ssTzs7STtHOztJOzs7STs7O0k7Ozs7a0M7OztHOztJOzs7Tzs7O1E7USw0QjtROytCO08sTzs7Ozs7Ozs7Ozs7OztPOzsyQjs7MEI7OzBCOzs7O1E7O1M7UztnQztRLE87Ozs7aUI7Ozs7OztPO1E7USw0Qjs7USw0QjtPLE87Ozs7Z0I7Ozs7OztPOztRO1EsNEI7TyxPOzs7O087O1EsVTs7UTtTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7OztTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7Ozs7OztPOzs7OztRLDRCOzs7VyxTOztXO1csTzs7Ozt5Qzs7VTtPLE87Ozs7Ozs7TztRLE07Tzs7USw0QjtRLDRCO08sTzs7Tzs7UTtRLDRCOztPLE87OztPOztRO1EsNEI7O08sTzs7OztxQzs7Ozs7Ozs7O1csOEI7VztZOzs7VywwQjtXO1k7O1csTzs7Ozs7Ozs7Ozs7Ozs7O08sVTs7b0I7Tzs7UTs7Vzs7UTs7UTs7Vzs7TyxPOzs7OztpQjs7Ozs7OzJCOzt5Qjs7O087Tzs7Rzs7STtLOztNLDRCO007SyxPOzs7O21DOzs7Ozs7OzswQixPOztPOztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7OztROzs7O1MsNEI7Uyw0QjtRLE87Ozs7aUI7Ozs7Ozs7TyxPOzs7O3FDOzs7Tzs7O1EsNEI7TyxPOzs7O3FDOzs7OztPOzs7USw0QjtPLE87Ozs7cUM7Ozs7OztPLE87Ozs7cUM7O21DOztHOztJOzs7O2tDOzs7Rzs7STs7Ozs7O1M7OztVO2lDO1MsTzs7Ozt1Qzs7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7VSxPOzs7OztvQjs7Ozs7UztTLE87Ozs7dUM7Ozs7OztTLE87O0ssTzs7OzttQzs7STtJO3NCLFk7SyxPO0k7Ozs7Ozs7Ozs7UTtTLDRCO1MsNEI7USxPOzs7OztrQjs7Ozs7Ozs7Ozs7O0ssZ0M7SyxPOzs7O21DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7O1c7OztZOzs7Ozs7Ozs7Ozs7OzBCOzs7Ozs7OztNOzs7Ozs7Ozs7TztNLEc7TyxVO08sRzs7Ozs7Ozs7Ozs7OztNOzs7O08sNEI7Tyw0QjtPOzs7O087O1U7O00sTzs7OztvQzs7Ozs7Ozs7O0s7OztNLDRCO00sNEI7SyxPOzs7O21DOzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7a0I7Ozs7Ozs7USxpQzs7OztTO1UsNEI7VSw0QjtTLE87Ozs7O21COzs7Ozs7OztRO1MsNEI7Uyw0QjtRLE87Ozs7O2tCOzs7Ozs7OztJLDBCO0ksTzs7OztrQzs7Ozs7Ozs7SztLLDBCO0ssTzs7Ozs7OzttQzs7OztJO0ksUTs7ZTs7SSwwQjtJLEk7STtLOztJLE87Ozs7a0M7Ozs7OztJOzs7Ozs7Ozs7O00sRztPLE87Ozs7O0ksMEI7SSwwQjtJLE87Rzs7STs7O087OztRLDRCO08sTzs7OztxQzs7Ozs7TyxpQztPLE87Ozs7cUM7OztPOztRO1EsNEI7UTsrQjtPLE87Ozs7O1EsTTs7Tzs7MEI7OzBCOztPOzs7USw0Qjs7OztXO1c7Ozs7YTtjOzs7ZTtzQztjOzs7O2dCOzs7OztjOzs7O1k7Ozs7Yzs7c0M7YyxPOzs7OzRDOzs7Ozs7WSxPOzs7OzBDOzs7VTtPLE87Ozs7Z0I7Ozs7Ozs7Ozs7OztZOzs7YTthO29DO2E7b0M7YTtvQztZLE87Ozs7cUI7Ozs7Ozs7O1c7VztZOzs7VywwQjtXLE87Ozs7b0I7Ozs7OztPO1EsTTs7O1E7Ozs7OztZLG9CO1ksTztXOztTO2dDO1MsNEI7Uyw0QjtRLE87Ozs7aUI7Ozs7Ozs7Ozs7Tzs7OztXLG9CO1csTztVOztRLDRCOztRLDRCO08sTzs7OztnQjs7Ozs7Ozs7Tzs7Ozs7USw0Qjs7O1csUzs7VztXLE87Ozs7eUM7O1U7TyxPOztPOztRO1EsNEI7O1EsNEI7TyxPOzs7Ozs7VyxPOzs7O3lDOztVOzs7Vyw4Qjs7Ozs7Ozs7O2E7Ozs7O2M7Ozs7OztXLEksTzs7Ozs7Ozs7O1c7VztZOztXLDBCOztXO1k7O1csMEI7VyxJO1c7WTs7VztZOztXLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxVOztvQjtPOztROztXOztROztROztXOztPLE87Ozs7O2lCOzs7Ozs7MkI7O087O1E7USw0Qjs7TyxPOzs7O3FDOzs7Ozt5Qjs7O087Tzs7Rzs7O0ksMEI7Ozs7Ozs7OztJLE87OztJLFE7SSwwQjtJLE87Ozs7O2M7Ozs7Ozs7Szs7Ozs7SztLLDBCO0ssMEI7O0ssTzs7Ozs7OzttQzs7Ozs7Ozs7STtJLFEsTTs7ZTs7SSwwQjtJLEk7STtLOztJLE87Ozs7a0M7Ozs7Ozs7SztLLDBCOztLLDBCO0ssTzs7Ozs7Ozs7Ozs7STs7SSxPOzs7OztjOzs7Rzs7cUIsa0Isd0I7O0s7aUI7OztlOzs7OztxQzs7ZTs7OztxQzs7STs7SztLOztJOzt1Qix3Qix3QjtLOzsrQjs7Ozs7O1UsYSxPOztVLE87Ozs7O29COzs7O1M7TSxPOzs7SyxPOzs7Ozs7O2U7OztJOztLOztNO00sMEI7TSxPOzs7O29DOzs7O0s7SyxPO0k7SSxPO0c7OztLLE87Ozs7O2U7OztJO0k7SSwwQjs7STtLOzs7SSxPOzs7OztjLFE7YywwQjtjLE87Ozs7O3dCOzs7YTs7Ozs7Ozs7OztHOzs7Ozs7Ozs7O0ssUzs7SyxPOzs7OztlOzs7STtJO0s7O00sNEI7SyxPOzs7Ozs7OztlO2dCOztpQjt3QztnQixPOzs7OzswQjs7Ozs7Ozs7ZSwwQjtlLDBCO2UsSTtlLE87Ozs7O3lCOzs7OztjOzs7OztJLDBCO0ksTzs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs7O3NCO2MsMEI7YyxJO2MsTzs7Ozs7d0I7OzthOzs7Ozs7STs7O0s7O0ksbUI7SSwwQjtJLE87Rzs7O0s7Ozs7TTtLLDBCO0ssMEI7SztLLDBCO0ssTzs7OzttQzs7Ozs7OztJO0c7O0ksZ0M7Ozs7Ozs7Ozs7Ozs7SSwwQjtJOztLLE87ZTtlOzs7OztxQzs7OztJLE87YztjOzs7OztvQzs7OztJOzs7eUIsTzs7O3FCLE87O08sTzs7MEIsTzs7O08sTyx3Qjs7Rzs7STtLOztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COztHOztJO0k7Z0I7O0ssUyx1Qjs7O0c7O0ksUzs7STtHOztJLGlCO0c7O0k7Ozs7Ozs7O2dCOzs7Rzs7STs7Ozs7Ozs7Z0I7O0ksTztHOzs7SSxhOztLLFk7a0I7a0I7SyxPO0k7SSxPO0c7OztLLFk7SyxPO0k7SSxPO0c7O3lCLHFCLFk7eUIsdUIsYzt5QixzQixhO0k7SztHOzt1QyxnQztJO0s7RztHO0k7STtJO0k7O0k7Ozs7Ozs7Rzs7STs7SyxNOztLLHdCLE87SyxPOztJOzs7SyxPO0ssTztJLE87Rzs7STs7SyxNOztJO0c7O0k7STs7O2EsWTthO2E7WTtHOztJO0k7OzthO2MsUzs7O2E7YTtZO0c7O0k7OztLOzs7STtLLFc7Szs7OzsrQjs7Ozs7cUIsd0I7SSxPO0c7O0k7SyxJO0ssSTs7OztJO2dCLE87SyxJLGlCLEksOEI7Ozs7Ozs7TTtNLEk7OztLO00sc0I7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHOzs7STs7SyxJOztJO2dCLE87SyxJLGlCLEk7SzttQixNO007OztPO1EsTTs7O087Ozt1QixNO007TztTO1c7TyxPO007Ozs7OztNOzs7OztHOztJO0k7Rzs7STtLLEk7SyxPO0ssTztJO0ksYTtJO0c7O0k7OztHOzs7Ozs7Ozs7SSxTLE87STs7Szs7O0ksTzs7b0IsYyw2Qjs7SSxVLE07SSxrQjs7O0s7O08sYztPOzs7Ozs7OztHO3NCLGMsbUI7O0k7STs7O0c7c0IsWTtzQixrRDs7SSxzQjs7Szs7TTs7Ozs7Ozs7Ozs7SyxPO0k7SSxRO0k7O00sTTtLOzs7TSxJO007TTs7OztPLEksd0M7Ozs7Uzs7O1c7O1M7Ozs7O087Ozs7O0ssYzs7O0ssTTtJOzs7O0ssTTtLO0s7Ozs7O00sSSxZOzs7Ozs7OztTOzs7OztROzs7OztNLHVCO007Ozs7O0ksYztHOztJO0ssSTtrQjs7STtHOztJLGdDOzs7O1E7O1E7UyxJOzJCOztROztRO1MsTTs2Qjs7UTs7USxPOzs7Z0I7aUI7Ozs7SyxNOztnQjthOzs7YTs7O2E7Ozs7Ozs7O0k7OztHOztJO0ssTTtJLHNCOzs7OztPLE07TTs7Ozs7O0ssSTtLO2dCO007TSxHOzs7TztROzs7Ozs7O0k7SSxXOztLOztJO0k7SSxJLGUsc0I7O0s7OztNO087Ozs7Ozs7O1U7Ozs7WSxNOztXO1csSyxrQzs7Ozs7Ozs7Ozs7O087TyxJOzs7Ozs7Ozs7Ozs7OztPO087Ozs7Ozs7TTs7O0k7STtJO0c7Ozs7Szs7O007O0ssTTs7SSxNOzs7STs7O0ssVzs7OztJLHNCOztLOztLO0k7SSxJLFEsOEM7O0ssTTtJLEksWTs7SztNLGlCOztPOzs7UTs7OztPOzs7OztJO0ksVztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7SSxvQjtJOzRCOzs7O0csSSxtQjt1QixXO0c7STs7OzsyQixTOzs7Ozs7O1M7UztzQjtVO1csUzs7Ozs7UTs7UztTLE07UTtxQyx5QixTO29DLHlCLFM7O1M7UzttQjttQjtRO2dDLDJCOztTO1E7O1M7O1U7Vzs7O1UsZSxPOztVLE87OztxQixPO1MsTTtROztTO1M7UTs7UztROztTO1M7UyxNO1E7OztTO1M7UTs7Uzs7VTtVOztvQixTOzt5QyxTOztxQjtvQjs7Ozs7cUUsUzs7OzttQjs7UztTOzswQywrQjs7O1E7OztTO21COztROztTO29CO1M7O1U7UyxPO1E7O1M7b0I7Uzs7VTtTLE87UTs7UztvQjtTOztVOztVO1MsTzs7UTs7UyxlO1E7O1MsZTtROztTO21COztRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxvQjtTO2lDOzs7UztVLE07O1M7bUI7bUI7UTs7UztTLEcsVztVO1MsTTtROztTLEcsVztVO1MsTTtROztTO1M7UTs7UztTO1E7O1M7Ozs2Qjs7VTs7OzhCOztTO1E7bUQseUI7O1M7Ozs7O1U7Uzs7O1M7VTtVO1U7UztROztTO1MsTztROztTO1MsTztROzZCLHVDOztTO1U7VTtTLE87UTs7UztVLE07O1E7O1M7UztROztTLEksZTtTO1E7O1M7Ozs7OztTO1E7O1M7Uzt3QjtVO1csUzs7Ozs7UTs7UztTOzs7O21CLE8sYztrQjs7UTs7UztTOzs7O21COzs2QixjO2tCOztROztTLE87UTttQyx1QjsrQix1Qjs7UztVOztXOzs7O2M7YzthO1UsTzs7Ozs7Ozs7OztTOztVOztVLFE7cUI7Uzs7VTtTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7O1c7Vzs7OzsyQjs7VztXOzs7UTs7UyxvQixXO1MsTztROzs7Ozs7O1MsSSxRLHdCLFU7OztVO1U7VSxPOztTO1E7O1M7O1E7O1MsbUMsTztTO1M7UyxpQjs7OzBDLGtDO3dDLGlDOztTO1MsWTs7VTs7VyxPO1csTztVO1U7VSxXO1UsTzs7Uzs7UTs7UztTOztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLFE7O1M7O1UsTzs7Uzs7VTtXOztZLE87WSxPO1csTzs7Ozs7Ozs7OztrQjtVO1M7O1UsUTtVOzs7O1c7VztVO1M7O1UsSyx5QjtrQjs7VTtTOztVLFE7VSxJLFk7Ozs4Qjs7O1U7VyxVO1c7VTtTOztVLFE7VTtVO1M7O1U7OztVO1U7Uzs7VTs7VztZO2E7Ozs7YyxPO2E7O1k7WTs7VSxPO1M7O1U7Ozs7VTtXOzs7Yzs7O2M7Ozs7ZSxNO2M7ZTs7a0IsMkI7a0IscUI7b0M7a0I7a0I7O2U7O2tCLFE7Ozs7O2U7O2tCLEcsOEI7MkI7Ozs7bUI7O2tCLE07OztjLE87OztVLE87Uzs7VTtXLFE7Vzs7VTtTOztVO1U7Ozs7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7O29COzs7Uzs7VTtVOzs7O2U7Z0IsUztnQixlOzs7O3dDLE87OztlO2dCOzs7O1csTzs7Uzs7VTs7Ozs7O1csTTs7OztXO1k7O2U7Z0IsUztnQixhOzs7O3VDLE87OztlO2dCOzs7O1csTzs7Uzs7VTtVOzs7OzBDOztlO2dCOzs7O2U7O1csTTs7Uzs7VTtXO1csZTs7Uzs7VTs7O3FDO21CO21COztTOzZCLDJCOztVLG1COzs7O1M7O1U7O1c7WSxNO2tCOzs7VTtTOztVO1M7OztVOzs7VTs0QixTO2tDLFM7VSxPO1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7O1M7O1U7c0I7O1U7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0k7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7STs7OztJOzs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7NEIsTyxzQzs0QixPLHVDOzZCLGdDOztJLGlCLDZCO0k7Rzs7STtHO2dDLHlDOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzBCLDhCOztJO0ksTztHOztJO0c7O0ksMEM7OztJLE87Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7O0k7K0I7OztLLE07O0k7OztJLFk7O0k7OztJLFk7O0k7OztJLE07Rzs7STtLO0s7SSxNO0c7O0k7SSxNO0c7O0k7SSxNO0c7O0k7Ozt3QjtJOzs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTTs7OztJO0c7O0kscUI7Ozs7Ozs7Ozs7OztnQjs7Z0I7OztNOzs7STtHO0c7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7O0k7Ozs7OztLO0ssUTs7O0ssSztJOzs7O0ksVztJOzs7SSxJO0k7Rzs7STtJLFc7Rzs7STtJO0c7eUIsaUM7O0k7OzRCLFcsOEI7SSxPO0c7O0ksbUMsYztJLE87Rzs7STtJLE87Rzs7Z0Msc0M7SSxPO0c7O0k7OztJOzs7Ozs7ZTtHOztJO0s7OztLLE87SztJLFU7OztHOztJO0s7OztLLE87SztJLFU7O0k7Rzs7SSxxQztjOztJOzs7SSxxQztjO0k7O0s7SztJLE87OztJOzs7Ozs7SyxTO0s7STs7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0ssTztLLE87dUIsd0I7SSxPO0c7O0k7SztNLGE7TSxjO00sTztNLE87TSxPO0ssTzs7STtLLE87SyxnQjtLLE87SyxPO0ksTztHOztJO0c7O0k7Rzs7STtHOztJOzs7O2MsVztpQyx3QjtjLE87YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7OztLO3FDO0k7Ozs7O1k7Ozs7O0k7YTtJO0c7O0k7STtHOztJO0ssTTtJOztLLG1CO0sscUM7dUI7dUI7dUI7O00sTTs7TSxNOzs7TSxNOztLO0k7STs7OzJCOzs7O1EsMEM7USxrQjs7OztJO0c7cUMsNkI7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7OztROzs7Ozs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0s7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0ssSztLLE87SztJOzs7STs7Szs7Ozs7OztLLEs7SyxLO0s7STtHOztJOztLOzs7OztLO0s7Tzs7VTs7OztJO0c7O0k7O0s7Ozs7O0s7SztPOztVOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SyxNO0s7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJLE07Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLLE87SztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLOztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0ssTztLLFE7SztLLEk7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SyxPO0ssUTtLO0ssSTtJOzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7SztLLFE7SztLLE87SztPO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Szs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLLFE7SyxPO0s7Tzs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLE87SztLLFE7SztPOztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztJO0k7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7Szs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssTztLLGdCO0s7SztJO0c7O0k7O0s7Ozs7O0s7OztLOzs7Ozs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0k7STtLLFc7SyxPO0s7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7O0ssSztLO0s7SyxLO0k7STtLLE87SztJOzs7STs7Szs7Ozs7SyxLO0ssSztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLOzs7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssTztLLFc7SztPO0ssUTtJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SztLOzs7O0s7STtJO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7OztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztLO0ssSztLLEs7SztLOzs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLOztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7SztLLEs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0ssSztLLEs7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLOztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLO0s7SztJOzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0k7STtLO0s7SztLO0s7O0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7OztLLEs7SztLLEs7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLLFc7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLLGlCOztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7OztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7O0s7O0s7STtHOztJOztLOzs7Ozs7Szs7SztJO0c7O0k7O0s7Ozs7OztLOztLLFE7STtHOztJOztLOzs7Ozs7Szs7SyxRO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7TztLO0s7SztJOzs7STs7Szs7Ozs7Szs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0ssTztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztJO0k7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7Szs7O0k7SyxNO0k7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7O0s7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLE87Syx5QjtJO0c7O0k7O0s7Ozs7O0ssUTtLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SztLLE87SyxXO0s7Tzs7Ozs7Ozs7OztLLFE7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7Ozs7SyxJO0ksSSx1QjtJOzs7STs7Szs7Ozs7Ozs7O0s7Szs7OztLLEk7SSxJLHVCO0k7Rzs7STs7Szs7Ozs7Ozs7SztLOzs7O0ssSTtJLEksdUI7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7SztLLEk7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLOztROzs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SyxJO0k7Rzs7STs7Ozs7Ozs7O0ssTztLO0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0ssSztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7OztLO0s7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0ssVztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0ssVztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7Ozs7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLO0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7OztLLE87SyxPO0ssTztLLEk7STs7O0k7O0s7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7OztJOztLOzs7Ozs7OztLLE87SyxPO0ssTztLLEk7STtHOztJOzs7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJOzs7STs7Szs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7O0s7STtHOztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLLEs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SyxlO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0k7STtLLE87SyxPO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Ozs7Ozs7Ozs7O0s7STtJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7SztLO0k7STtLLE87SyxPO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7OztLOztLO0s7O0k7SSxNO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7Ozs7Ozs7SztLO0s7OztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7Ozs7SztLO0s7OztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0s7SztLLE87SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SyxPO0ssUTtLO0ssTztLO0k7OztJOztLOzs7Ozs7O0s7SztLLE87SztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLG1COzsyQjtLLE87SyxRO0s7SyxPO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0ssTztLOztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLG1COzsyQjtLLE87SyxRO0s7SyxPO0s7O0s7STs7O0k7Ozs7Ozs7OztLO0s7SyxPO0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7O0ssSTtJOzs7STs7Ozs7Ozs7O0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7OztLO007Ozs7STtLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7STtJO0s7SyxJO0s7STtHOztJOztLOzs7Ozs7O0s7SztLLEk7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0ssSTtLO0k7OztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxPO0ssTztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxPO0ssTztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SyxLO0k7STtLO0ssSTtLO0k7OztJOztLOzs7Ozs7SztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7Ozs7OztLO0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxRO0s7SztLO0s7OztLLE87SyxRO0s7SyxPO0s7Tzs7Ozs7Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLLE87SztPOzs7Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0ssTztLO0ssTztLO087Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxRO0ssTztLLE87SztPOzs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0ssTztLO087Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLLE87SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SyxPO0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7SztLOzs7Szs7SztLO0s7STs7O0k7O0s7Ozs7O0s7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0ssTztLO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7Ozs7TSxNOzs7STtLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0s7Szs7Ozs7STs7O0k7O0s7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLOztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7OztLO0ssbUI7OzJCO0ssVztLO0s7Tzs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7Szs7O0s7SyxPO0s7SztPOzs7Ozs7OztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7SztLO0s7OztLLE87SyxRO0s7Szs7O1E7Ozs7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxRO0s7SztLO0s7OztLLE87SyxRO0s7Szs7O1E7Ozs7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLOzs7SyxPO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7OztLLE87SztLO0k7OztJOzs7Ozs7Ozs7O0ssSztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7Ozs7SyxLO0s7STs7O0k7Ozs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7O0s7Szs7O0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7STtHOztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0k7STtLO0ssSTtJO0c7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxPO0s7SztPOztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssTztLO0s7Tzs7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7SztLO0s7Szs7O0ssTztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7OztLOztJO0k7SyxXO0s7SyxPO0s7STtHOztJOztLOzs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7SSxJLGtDO0k7Rzs7STs7Szs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7SSxJLGtDO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLLEs7SztLO0s7STtHOztJOztLOzs7Ozs7O0ssSztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7O0s7SztLOztLO0k7OztJOzs7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7Szs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0ssSztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SyxLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SyxLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Szs7O0s7SztPOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLLEk7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7SyxNO0s7STtHOztJOztLOzs7OztLO0ssTTtLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7O0s7STtHOztJOztLOzs7OztLOzs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLOztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOzs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0ssSztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLLEs7SztJO0k7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLEs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxLO0s7STs7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7OztLLEs7SztJO0k7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SyxLO0s7SztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLE87SztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOztLO0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztJO0c7O0k7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Szs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SyxPO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7OztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7OztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEs7SztLO0s7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssSztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLEs7SztJOzs7STs7Ozs7Ozs7O0s7OztLOztJO0ksZTs7SyxNO0k7SyxPO0s7STtHOztJOztLOzs7Ozs7OztLLE87SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLLEk7STtHOztJOzs7Ozs7Ozs7SyxPO0ssTztLO0ssSTtJO0c7O0k7O0s7Ozs7O0s7SyxJO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7SyxLO0ssSztLO0s7SztJOzs7STs7Szs7Ozs7OztLLEs7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7O0ssSztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLLE07SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7O0s7Szs7Syw0QjtJOzs7O0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7RztJOzs7UTs7Uzs7OztRO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO3dELE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHOztJO0c7O0k7OztLO0s7Ozs7OztJOzs7STtJOzs7MEI7SSxjOzs7STtJO0c7O0ksZ0I7O0k7SSxJLFUsNkI7STtJO0c7O0ksTTswQjtHOztJLE07Rzs7STs7OztNLFU7Ozs7Ozs7Ozs7TyxNOzs7TyxNOztNOzs7Ozs7Rzs7STs7OztTOztTOztTOzs7c0I7STtHOztJLGdCO0ksTTs4QjtHOztJOzJCLE87STs7cUM7Rzs7STsyQixPO0k7O3FDO0c7O0k7SSxPO0c7O0ksVztJO0c7O0k7STs7Ozs7OztHO0csSSx1Qjs7SSxXO0ksTzs7RztHLEksNEI7O0k7O0c7O0k7Rzs7SSx1Qjs7OztpQjs7TTtPLFU7Yzs7OztROztTLE87Z0I7OztROzs7Uzs7WSxrQjs7WSxPO1c7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7OzttQjs7UTs7UyxlO2dCOzs7OztnQjs7Ozs7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7O0k7RztHOztJLGE7STtJO0ssTzs7STtHOztJO0k7Szs7UTs7Ozs7OztVOztVOzthOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7O1UsbUI7VTs7OztTLFM7cUM7UztTO1UsTzs7Uzs7UyxnQzs7UztVLE87O1M7O1M7O1M7O1M7O1M7O1k7O1M7Uzs7Uzs7WTs7UztTOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7UzttQjtTO1UsVztVOzs7O2lDOzs7O1M7bUI7UztTOztTO21CO1M7O1M7bUI7UztTOztTO2dCO1M7O1M7VTtZOztVLFE7Uzs7UztrQjtTOztTO1U7WTs7VSxVO1M7O1M7O1k7Uzs7UztVOzs7Uzs7UztVO1k7O1U7OzZCOzs7Uzs7UztVO1k7O1UsVztVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTO1U7WTs7VSxhO1U7OzZCOzs7VTtTOztTO1U7VTtZOztVO1UsVTtVLGE7VTs7NkI7OztVO1M7O1MsZ0M7O1MsUTtTOztTLFU7Uzs7Uzs7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7UztVOzs7Uzs7UztVOzs7O3dCOzRCOztTO1U7WTs7VTs7O2UsYTtlO2M7Ozs7Uzs7O1UsVztVOztTO1U7OztTOztTOztZOztTLDJCO1UsVztVLFk7O1MseUI7O1MsWTtTOzs7O1M7O1M7UyxzQjtTO3VCOztVOztVO1c7O2M7Ozs7OztXOzs7VTtXO1c7VyxNO1c7VztXLFM7VztXLFk7OztXLEksZTs7Ozs7OztrQjs7OztXOzs7VTs7OztvQzs7OztTOztTOztTOztTOztTOztTOztTOztTOztTO2lCOzs7Szs7O0c7MEI7O0k7a0I7O0s7TTs7Uzs7O007Ozs7OzttQztROzs7OztTLE07OztTLE87Ozs7UTs7OzhCO1E7OztZOzs7Ozs7Vyx3Qjs7WSxNO1c7O1ksTztZLFE7O1c7Ozs7Ozs7UTs7O1E7O1M7UyxROzhCO1E7OztZOzs7Ozs7Vyw0Qjs7WSxNO1c7O1ksTztZLFU7O1c7Ozs7Ozs7UTtRO1E7OztROztRLGdDOztROztROztROztROztROzs7O1MsTTtROztTLE87UyxVOztROztRLGdDOztRO2dCOzs7Rzs7STtrQjs7SztNOztTOzs7TTs7Ozs7OztROztTO1MsUTtRO1Esa0I7OztRLFE7UTs7O1E7O1E7O1E7OztRO1MsTTtTLE07Uzs7Ozs7O1M7VTtVO1k7ZTtzQztRO1M7O1M7Ozs7UyxVO1M7O1E7Ozs7UyxVO1M7O1E7UTs7OzZCOztRLFU7UTs7O0c7O0k7O0s7TTs7Uzs7O007Ozs7O1EsZ0M7OzZCOztROztXOztRLEc7UTs7O1EsUTtROzs7Rzs7STtJO0s7O1E7Ozs7O1M7O1M7aUI7O0s7OztHOztJO2M7O0ksTztHOztJLGU7O0s7SztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtVO1csTTtXLE07VyxVO1U7VSxHLGtCOzs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs7OzBCOzs7Ozs7O1U7Ozs7Ozs7Ozs7O00sYzs7Ozs7UyxVO1M7UyxVO1M7OztTLFU7UztTOzs7Ozs7UyxVO1M7UztVLE07VSxNO1M7UztVLE07VSxNO1M7UyxVO1M7OztTLFU7UztTO1UsTTtVLE07UztTLFU7UztTLFU7UztTOzs7TTs7STtJO0c7O0k7Ozs7Yzs7SSxPO0c7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TyxLO087TyxNOzs7Ozs7TyxVO08sRztRO08sTTs7TSxHO087TyxNOzs7OztHOztHLDZCO0c7RywwQjtHO0csOEI7RztHLHVCO0c7Ryx3QjtHO0cseUI7RztHLHNCO0c7RywwQjtHO0csMEI7RztHLHdCO0c7Ryx3QjtHO0csMkI7RztHLG1DO0c7RyxpQztHO0cseUI7O0ksOEI7Ozs7Tzs7Ozs7UTs7ZTtjOzs7Ozs7Yzs7Ozs7O2M7OztpQzs7Ozs7OztVOzs7O2lDOzs7Ozs7Yzs7Ozs7O2M7OztpQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7STtLLGE7O0ksMEI7O0ksMEI7STs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7O0s7STtJLE87Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7OztRO1E7OztRO1E7OztRO1E7Uzs7O1k7OzthO2E7YTs7O1k7WTtXO1EsTzs7O1E7UTs7O1E7Ozs7O1E7UTtROzs7a0I7bUI7aUI7Ozs7O1E7Ozs7O1E7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7O1EsTzs7O1E7Ozs7O1EsTzs7O1EsTzs7OztRO1E7OztRO1E7OztrQjtrQjtrQjtpQjs7Ozs7UTtROzs7UTtROzs7UTtROzs7UTtROzs7OztRO1E7UTtTLE87O1E7OztRO1E7OztROzs7OztRLE87OztROzs7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7Ozs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7O1EsTzs7O1EsTzs7O1E7UTs7Ozs7UTtROzs7UTtRO1E7UTs7Ozs7UTtRO1E7OztRO1E7UTs7O1E7UTtROzs7UTtROzs7UTtROzs7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTtROzs7OztRO1E7OztRO1E7UTtROzs7UTtROzs7OztRO1E7Ozs7Ozs7Ozs7UTtRO1E7UTs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1E7UTtTLE87O1E7OztROzs7OztRLE87OztROzs7OztRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7UTs7Ozs7UTs7Ozs7UTtRO1E7OztRO1E7OztROzs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7UTtRO1E7Ozs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7eUI7OzJCOzs7TztRLE87O087Ozs7O1E7UTs7UTtTLE87O1E7O087USxPOztPOzs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OzBCLHNCOzs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OzBCLHNCOzs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7Ozs7O1E7UTtRO1MsTzs7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJOzs7STs7O0k7OztJOzs7STs7OztJO0k7OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJOztLO0s7SztJO0ksTztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTtROzs7O1E7UTtROzs7OztRO1E7OztROzs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7OztRO1E7UTs7O1E7UTs7Ozs7UTtRO1E7OztRO1E7OztROzs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPO087OztPOztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087Ozs7OztPOzs7TztPO087OztPO087OztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7SSxZOztJOzs7STs7O087Tzs7O08sTzs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TyxPOzs7Ozs7O0c7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7Rzs7STtJO0k7O0c7OztJO0k7Ozs7STtJOzs7O0k7STtJOzs7STs7Szs7OztNLE87O0s7SztLOzs7STtJO0c7Z0MsdUM7bUMsdUM7O0k7OztLO0s7Ozs7Ozs7STttQjs7Ozs2QixPOzs7cUIsTzs7TyxPOzs7TyxPOztPLG9CLE87TyxPOztHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXOzs7O0ksYzs7O0ksZ0MsTztJLFc7OztJLFk7O0ksVzs7OztJLGdCOzs7SSxlO0k7Ozs7SyxRO0ksTztHOztJOzs7O0ssUTtLLFU7STtLLE87STs7O08sTzs7Tzs7OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztRO08sTzs7O087OztROztXOzs7O1ksTTtZLFE7VztZOzs7YSxPOzs7OEM7VyxPOztRLE87TyxPOztPOzs7USxPO1EsTztRO08sTzs7O08sZ0MsTztPLE87OztPOzs7O1E7O1c7Ozs7WSxNO1ksUTtXO1k7Ozs7YSxPO2EsTzs7OzRDO1csTzs7USxPO08sTzs7O087OztRLE87USxzQjtRLE87TyxPOzs7Tzs7OztRLE87USxzQjtRLHNCO1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7STtLOzs7O00sTztNLE87SyxXOztJO0ssVztLLE87SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7Ozs7OztJOztLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STs7Ozs7OztLLE07SyxRO0ssTztLLE87SztLO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7O0k7Ozs7SyxNO0ssUTtLLE87SSxPOzs7STs7Ozs7SyxNO0ssUTs7Szs7OztNLGU7TTtNLHNCO2lCOzs7STtJLE87Ozs7STs7OztLLFE7SyxVO0k7O087OztRLE87USxPO1E7TyxPOzs7TyxpQixPO08sTzs7Tzs7OztRLE87USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7OztLLFE7SyxVO0k7O08sa0IsTztPLE87O087Ozs7OztRLE87UTtPLE87OztPOzs7Ozs7USxPO1E7TyxPOzs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7O08saUIsTztPLE87O08sbUIsTztPLE87Ozs7STs7O0ssTztLLE87SyxPO0ksTzs7O0ksWTtJLGlDLE87STs7O0k7Ozs7SyxRO0ssVTtJOztPLGlCO08sTzs7TyxrQixPO08sTzs7Tzs7O1EsTztRO08sTzs7O087OztRLE87USxPO1EsTztPLE87OztPLGtCLE87TyxPOztPLGlCLE87TyxPOztPLG1CO08sTzs7OztJOztPLGtDLE87Tzs7Tyx1QztPOztPOzs7USxPO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPLG9DO087Ozs7STs7O0ssUTtJOztPLGtCLE87TyxPOztPOzs7USxPO1EsTztPLE87O087O1EsTztRLE87TyxPOztPLGtCLE87TyxPOztPLGtCLE87TyxPOztPLGlCLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPOzs7USxVO1EsTztPLE87Ozs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLG1CLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxRO0k7O087OztRLFU7USxPO08sTzs7Tzs7O1EsTztRLE87TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STtLLE87STs7TyxpQjtPLE87O08sbUIsTztPLE87O087Ozs7USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7Ozs7USxPO1EsTztRLGU7TyxPOzs7Ozs7Ozs7Tzs7O1EsTztRLHNCO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLGU7UTtPLE87OztPOzs7USxlO08sTzs7O087OztRLGU7USxPO1Esc0I7USxzQjtRLE87TyxPOzs7Tzs7O1E7USxPO08sTzs7O087Ozs7USxPO1E7USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7O1EsZTtRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087Ozs7OztRLE87USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O087OztRLE87USxPO08sTzs7O087Ozs7USxPO1EsZTtRLE87TyxPOzs7Tzs7O1E7USxPO08sTzs7O08scUI7TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7USxPO1Esc0I7USxzQjtRLE87TyxPOztPOzs7O1EsTztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPOzs7USxlO1EsTztPLE87OztPLG1CLE87TyxPOztPOzs7USxPO1E7TyxPOzs7TyxvQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7USxPO1EsTztRLE87USxPO08sTzs7O08sbUIsTztPLE87Ozs7STs7Ozs7SztLLE07SyxNO0ssTTtJLE87OztJOzs7O0ssUTtLLFU7STtLLE87STs7TyxpQjtPLE87O087OztRO1EsTztPLE87OztPLGlCLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1E7OzthOzs7YyxPO2Esb0I7YSxXO1k7O1E7TyxPOzs7Tzs7O1EsZTtPLE87OztPOzs7USxPO1Esc0I7USxzQjtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08sbUI7TyxPOztPLG1CLE87TyxPOztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxpQixPO08sTzs7Tzs7O1EsTztRO08sTzs7Ozs7STs7OztLLFE7SyxVO0k7O087OztRLE87USxPO1E7TyxPOzs7TyxpQixPO08sTzs7Tzs7Ozs7USxPO1EsTztRLGU7TyxPOzs7Ozs7Ozs7Tzs7O1EsTztRLHNCO1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPOzs7USxPO1EsTztPLE87Ozs7O0k7O0ssVzs7O0ksYzs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7O1EsOEI7USxPO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7OztRO1E7TyxPOzs7Tzs7OztRLE87USxPO08sTzs7O08saUIsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87Ozs7STs7O0ssTztLLE87SSxXOzs7STs7Ozs7OztLLE07SyxRO0ssTztLO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7OztJOzs7Ozs7SyxPO0s7SyxXO0ssVztJLE87O0c7O0k7Ozs7O0ssTztLLE87SyxXO0ssVztJLE87Rzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7O3lCLFc7OzJCLFc7OzJCLFc7O087OztRLGU7TyxXOztHOztJOzs7OztLO0ssVztLLFc7SSxPOztHOztJOzs7OztLLE87SyxXO0ssVztJLE87O0c7O0k7Ozs7O0s7SyxlO0ssVztLLFc7SSxPO0c7O0k7Ozs7O0s7SztLLFc7SyxXO0ksTztHOztJOzs7OztLLE87SztLLFc7SyxXO0ksTztHOztJOzs7OztLLE87SztLLFc7SyxXO0ksTztHOzJCLFM7O0k7Ozs7OztLLE87SztLLFc7SyxXO0ksTzs7Rzs7STs7OztLLE87SyxXO0ssVztJLE87Rzs7STs7OztLLE87SyxXO0ssVztJLE87Rzs7SSxnQyxPO0k7Rzs7STs7Ozs7OztLO0ssZTtLO0ksb0I7STtLLFc7SyxXO0ssVztJLE87Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksTztHOztJOzs7O0ssTztLLGU7SSxXO0c7O0ksVztJLE87RztHOzs7O1E7UyxPO1MsTztRO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE07O0k7SyxPO0k7O0s7O007TSxPO00sZTtLLE87Ozs7O0k7STtLLE87O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7NkIsd0I7c0IsbUM7O0ksVztJLE87Rzs7STtLO0ssTzs7STtJLE87Rzs7STtLOzs7O00sVztNLFc7TTtLLE87O0k7SSxPO0c7O0k7SyxPO0s7OztVOzs7VztVLE87OztJO0c7O0k7SztLLE87SyxlO0k7Rzs7STs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7OztLOztNO007YTs7SztNO2E7STs7Szs7Syw4Qjs7Szs7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O1E7Ozs7O0ksTztHOzs7SzswQjs7O007Ozs7Ozs7Tzs7TSxPO0s7O007Ozs7Ozs7OztROzs7Tzs7TSxPO0s7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7O1EsbUM7USxXOzs7O00sTzs7Ozs7Tzs7Ozs7Tzs7Ozs7Ozs7O087Ozs7O087Ozs7O087Ozs7O087TyxjOzs7OztPO1E7Ozs7Ozs7Ozs7OztjOzthLE87Ozs7OztXO1csTztVO29COzs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7O087Ozs7O087UTs7VyxtQixNO1c7VyxPO1U7UTtPLE87OztPOzs7OztLO0k7SSxPO0c7OztLOztNO0s7STtJO0ssVztLO0ksTztHOztJLFk7Z0IsTTs7O0s7O0k7Rzs7O0s7Ozs7Ozs7Ozs7Ozs7O0s7SztNO08sVztPLE87Ozs7TTs7Tzs7O0ssSSxtQztLLFc7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJO0k7SyxLO0s7TywyQjs7SyxVOztLLFU7SztLO00sUTtNLEs7SztLO0s7SyxPO0k7SSxPOztjOzs7aUI7O2dCO0c7O0k7Ozs7OztPLGM7Tzs7OztJOzs7STs7Ozs7O08sYztPOzs7O0k7OztJO0ksVztHOztJO0ksVztHOztJLGtELGM7Rzs7STtLLGtDO0s7TTs7O1U7VztZLE07WSxNLG1CO1c7OztXOztZO21DLE0sb0M7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087TztPOzs7TTtnQjs7Szs7O0s7O00sTTtLO0ssTzs7RztHLDhDLG1COztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztpRCxPO2lELE87OztJO0ksTzs7O0ksWTs7SSxPOzs7O0ksTzs7OztJO0k7O0ssc0IsTztLLE87OztJLE87Ozs7STtJOzs7SyxPOzs7SSxPOzs7O0k7STs7Ozs7UTtRLE87O1EsbUIsTztRLE87OztRO1EsVztRLE87O1E7O1Msc0I7USxPOzs7UTtRLFc7USxPOzt5QixPOztRLGtCLHNCO1EsTzs7MkIsTzs7O1E7UTtTLE87UyxzQjtTLHNCO1EsTzs7eUIsTzs7STs7Ozs7Ozs7Ozs7STtJLFc7SSxvQjtJO0k7SyxLO0ssSztLLEs7STs7SztLO0ssTzs7STtJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJLG9CO0k7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7Szs7OztNLHNCO0s7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVztPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFc7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFc7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE87TyxPOzswQixPOzswQixPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxXO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE87TyxPOzt5QixPOztPLGlCLE87TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE87TyxPOzswQixPOzswQixPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGdDLE07TztPLE87OzBCLE87OztPLFM7TztPLE87OztPO087USxPO1Esc0I7TyxPOzs7TztPLE87OztPO08sTzs7TyxrQixPO08sTzs7O087TyxnQjs7eUIsZ0I7O087OztRLE87USxzQjtRLHNCO087TyxnQjs7O087Tzs7O087TztPLE87O08sb0IsTztPLE87OztPO087TyxnQjs7O087TyxPOzs7TztPLE87OztPO087TztPLE87OztPO08sTzs7O087TyxTO08sTzs7MEIsTzs7NEI7OztPO08sTzs7Tzs7USxPO1Esc0I7USxzQjtPLE87OztPO087TyxPOzs7TztPLE87OzJCLE87OzJCLE87OztPO08sZ0I7OzBCLE87OzJCLE87OzJCLE87OztPO08sTzs7Ozs7OztPO08sVztPO08sTztrQyxPOzs7Ozs7Ozs7STtJO0k7SSxPOzs7O0k7STtpQzs7O3dCOzs7TztPOztPOztPOztPLGtCLE07TyxPOzs7TztPOztpQjtpQixrQjtpQjtpQixPO2dCOzs7MEIsZ0I7O087O1EsTTtRLG9CO1Esb0I7TyxPOztPLG9CLE07TyxPOzs7TztPLE87OztPO08sTzs7MEI7OzBCLE87OzBCOzswQixPOzt3QixPOzs7TztPLE87Ozs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPLFM7TztPLE87OztPO087USxNO1Esb0I7TyxPOztPLG1DLE07TztPLE87OztPO08sTzs7d0IsTzs7O087TyxPOzs7O0kscUMsTzs7SSxPOzs7O0k7STs7O3lCLE87OztPO087OztPO087OztPO08sTzs7d0IsTzs7d0IsTztrQyxPOzs7OztJO0ksVTtJLE87OztJOzs7Ozs7SyxNO0ksa0I7STtJO0k7STtJLE87OztJOzs7OztJO0k7STtJLE87Rzs7STs7Ozs7STtJO0k7SSxPO0c7O0ksVTtJLE87Rzs7SSxVO0ksTztHOztJOzt5QixPOzsyQixPOzsyQixPOzs7TztPLGdCOztHOztJOzs7O0k7STtJLE87Rzs7STs7OztJO0k7SSxPO0c7O0k7Ozs7O0k7SSxTO0k7SSxPO0c7O0k7Ozs7O0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJLE87Rzs7STs7Ozs7STtJO0k7SSxPO0c7MkIsUzs7STs7Ozs7STtJO0k7SSxPO0c7O0k7Ozs7STtJO0ksTztHOztJOzs7O0k7STtJLE87Rzs7STtJO0ksTztHOztJOzs7Ozs7O0k7SSxrQjtJO0k7SSxTO0k7SSxPO0c7O0ksVTtJLHFCO0c7O0ksVTtJLHFCO0c7O0ksVTtJLHFCO0c7O0ksVTtJLE87Rzs7STtJO0ksUztJLE87Rzs7SSxVO0ksTztHO0c7STs7O1E7UTs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7Ozs7Ozs7b0IsdUQ7SSxZO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7O3VCOztROzs7OztJO0c7O0k7Z0I7O0k7Rzs7SSxJOzs7OztLLE87Ozs7OztnQixNOzs7Ozs7O087OztROzs7O1k7O3FCLE87b0I7Ozs7Ozs7WTs7cUIsTztvQjs7Ozs7Ozs7Ozs7Ozs7OztlOzt3QixPO3VCOzs7Ozs7Vzs7b0IsTzttQjs7O1EsTTtPLE87Ozs7Ozs7OztJLE87Rzs7STs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7O0k7Rzs7SSxHLHNDO0ksVztJLE87Rzs7STs7Ozs7eUQ7O0s7O0k7Z0I7O0k7RzsyQixPLDJDOztJLEk7O0s7O007OzBDOztNO0s7SyxPO0k7SSxPO0c7O0k7O0s7SyxPO0k7SSxPO0c7O0ksSSw4Qjs7SyxjO2U7SztLLE87STtJLE87Rzs7STtJO21COzs7Ozs7Szs7Rzs7STtnQjtJOztLO0ssTTtJLE87Rzs7STtLO0s7STtLOztNO00sTTtLLE87O0k7Rzs7STs7OztNOzs7STtHOzhCLHlDOztJOzs7O007OztJO0c7K0IsMEM7O0k7O0s7SyxPO0k7SSxPO0c7O0ksTztHOztJOztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLOzs7Ozs7Ozs7Ozs7Ozs7O1M7OztROzs7Ozs7Ozs7Ozs7OztXLGMsTzs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7UyxJLFUsNEI7Ozs7OztVOzs7Ozs7Szs7Ozs7O2tFOzs7SSxXO0k7SztNLE07TTtLO0ssVTtLO0s7Ozs7SztLLE07O0c7O0k7Ozs7SztJO0c7Ryw4Qjs7STs7OztLO0k7RztHLHFCOztJOzs7O0s7STtHO0csZ0I7O0k7Ozs7SztJO0c7RyxrQjt3QixPLHdDOztJLGtCO0ksTztHOztJLGtCO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7O0k7SSxpQjs7SztJO0c7O0k7SSxpQjs7OzttRDs7Ozs7MkIsbUIsNEI7USxPOztJO0c7O0k7Ozs7Ozs7OztRLEs7UTs7Ozs7Szs7SSxrQjs7Ozs7O1E7OzJCOzs7cUI7OzsyQixtQiw0QjtRLE87O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs0Qjs7NEI7Ozs7UTs7O3FCOzs7MkIsbUIsNEI7USxPOzs7Ozs7Ozs7O0s7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7MEI7O3NCOztJO0c7O0k7O3VCOztJO0c7RztJLE87Rzs7STtrQjs7STtHOztJOzt1Qjs7STtHOztJO0ksaUI7OztvQjs7b0I7O0k7Rzs7STtJLGlCOzs7b0I7OztRLE87OztJO0c7O0k7Ozs7Ozs7Z0I7Rzs7STs7Ozs7OztnQjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsTyx1QzswQixPLHVDOzs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJO0k7O0k7SSxXO0c7eUIsa0M7OztJLG9CO0ksVztJLFc7Ozs7O0s7SyxPO0k7SSxPOzs7SSxRLE07STs7O0ssUTs7O0ksSSxrQzs7OzRCOzs7Rzs7STs7dUIsTzs7Tyw4QjtPLE87ZSxNOztHO0c7O0k7Szs7Rzs7OztLO0s7OztRLEksSTs7OztvQjs7UTs7UTs7O1M7Ozs7OztROzs7Ozs7SSxJOzs7O0s7Szs7O0k7SSxPO0c7O0k7dUI7O0k7RztxQywrQjs7STs7OztLO0ksVztJLE07Rzs7STtJOzttQzs7O1E7OztROzs7O1EsbUIsc0I7USxPOzs7UTtRLDBCO1EsTzs7Ozs7O1k7WTs7YTs7O1k7VztRLE87OztRO1EsMEI7USxPOzs7Ozs7OztZO1k7YTs7YyxzQjthLE87OztZO1c7USxPOzs7OztRO1E7Z0Msa0IsUztTLE87UyxzQjtRLE87a0M7OztHOztJLFk7O0ksTzs7O0k7SyxrQixzQjtLLE87OztxQiwwQjtJLE87OztJOztLO0s7SztJO0k7STtJOzs7Szs7TTs7Uzs7UyxvQjtTLE87O0ssTzs7O3VCLDRCO0ksTztHOztJOzs7SztLLDBCO0ssTzs7O0k7Rzs7STs7SSxvQjtJLE87Rzs7STtHO0c7O0k7STs7bUM7OztROzs7O1EsbUIsc0I7USxPOzs7UTtRO3FDLGtCLGtCOzs7OzJCOzs7Ozs7WTtZO1k7VztRLE87O1EscUIsc0I7USxPOzs7UTs7Ozs7UTtROzsyQjs7OztROztTOzs7WTthOztXO1EsTzs7OzswQjs7UTs7O1M7Ozs7Z0I7OztHOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7Ozs4Qjs7O1E7USxJOzs7O1E7OytCLGtCLHlCO1EsTzs7O1E7UTs7O1E7UTs7UTs7UyxxQjtRLE87OztRO1E7OytCOzs7Ozs7O1k7WTtZO1c7UTtROzs7UTtROzs7UTtROzs7O1E7O1MscUI7USxPOzs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7Ozs7K0Isa0IseUI7USxPOztROzs7O1M7Uzs7OztpQjs7Ozs7Ozs7Ozs7OztRO1E7O1E7Ozs7UztTLHFCO1EsTzs7Ozs7UTtTLE87O1E7O1E7OztTOzs7OztROzs7OztTO1M7O2E7Yzs7O1MsTzs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7O1E7Ozs7WTs7a0M7O21DOzttQzs7cUM7O29DOztxQzs7VztRLE87OztRO1MsTzs7UTs7MEI7b0M7OztHOztJO0k7Ozs7MEI7OzBCLHdCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7O1E7Ozs7O1E7UTtTLE87O1E7OztRO1MsTzs7UTtvQzs7O0c7OEI7O0k7OztJOzs7STtLOzs7O007SztLOztJLE87Rzs7d0IsNkI7STtLLE87SztvQiw0QjtJO0k7Rzs7STs7Rzs7STtJO0ksSSxnQzs7Ozs7MEM7SztLOztHOztJOzs7eUI7OzRCOzt5QjtlLHNCOztHO2tDLCtCLFM7O0ksTzs7O0c7O0ksaUM7OzswQixxQjs7Ozs7OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtRLFE7USxNO08sVzs7Tzs7OztXO3VCOztXLE87VTtRLFE7USxPO1EsTTs0QixpQztPO087OzBCOztPOztROzs7TztPO1EsUTtRLE07TyxXOztPOztRLG9CO087Tzs7Tzs7USxvQjtPO087O087O3lCLHFCOztPLGtCO3lDO087O0ksa0I7STtJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7Ozs7UTtRLHdCO1EsTzs7O1E7UTs7Ozs7O21DOztxQzs7dUM7OztlO2U7O2U7eUM7OztRLE87OztROzs7OzBCOztROzs7Uzs7Ozs7Rzs2QztHO2tEO0c7O0k7Szs7O0k7STtHOztJLE87Ozs7O0c7O0ksaUM7Ozt5QixpQjs7TyxtQztPOzswQixxQjs7Tzs7USxvQjtPO087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7OztXO3VCOztXLE87VTtRLFE7USxPO1EsTTswQixtQztPO087O08sb0I7eUM7Tzs7MEI7O087O1EscUI7TztPOztPOztRLG9CO087Tzs7Tzs7UTs7OzBCLG1CO087USxRO1EsTTtPLFc7O087bUMsdUI7Ozs7STtJO0c7c0MsOEIsUzs4QztHOztJLG1COztJOzs7STtJOzs7OztRO1Esd0I7USxPOztROzs7O1M7UyxvQjtRLE87OztRO1EsSTs7OztROzsrQixrQix5QjtRLE87O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1E7OztTOzs7OztHOztJOzs7OzsyQjs7Ozs7Ozs7Ozs7OztRO1E7OzRCOztRO29DOztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxlO0ksYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0ksYyxPOztJO0k7Rzs7STs7OEIsTzs7OEI7O087OztRLE07USxNO08sTzs7Rzs7SSx3QztJOzs7SyxNO0ssTTtJLE87Rzs4Qiw4Qjs7STs7Ozs7Ozs7Ozs7O0s7O0ksTztHOztJOzs7Ozs7Ozs7O1MsTzs7Ozs7Szs7O0c7O0k7O087OzZCOzs7RztHOztJOzs7RzswQiw0Qjs2Qiw4Qjs7STtLOzs7OztnQztRLE87O1E7Ozs7UyxtQjs7NEI7USxPOzs7USxPOzs7Ozs7NEI7USxPO007RztzQyx1QjsyQix1Qjs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7O0ssSTtJOzs7Ozs7OztJLFksTzs7OztLOzs7STtHOztJLFE7STs7Ozs7SyxJO0k7O007OztLOzs7O2tDO2E7YTs7STtpQixNOzsrQjs7Ozs7OzttQixNO0s7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7O21CLE07Szs7OztNLEk7SyxZOzs7OztJLFk7SSxrQjtJO0c7Ozs7bUI7Szs7OztNLEk7SyxZLHlCOzs7Ozs7OztNOzs7O08sUztPOzs7OztvQjs7Ozs7Ozs7O0k7STt5QixpQztHOztJLFE7SSxjO0ksTztHOztJO0k7O2M7YyxxQjthOzs7O0c7Ozs7bUI7O0s7Szs7Ozs7STtJO0sscUIsTzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7Ozs7O1UsTzs7Ozs7O1U7OztXLE07VSxVOzs7Ozs7OztVLG9DO1UsVTs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7VSxPOzs7Ozs7VSxrQztVLGlCOzs7Ozs7UyxvQztTLGM7Ozs7d0I7O0s7O0c7Ozs7OztRLHFCLE07USxPOzs7O1Esc0M7Z0I7Ozs7Z0MscUM7O0k7STs7OzZCLE87Ozs7UTs7O1M7UztRLE87O0c7MEIsUzs7STtJOzswQixPOzs7TyxHO1E7UyxNO2U7O2tCO087TyxPOztPOzs7UTtRLE07USxNO1E7TyxPOzs7O0k7OzBCLE87OztPLE87OztPLE87Ozs7STtJOzs7NkI7Ozs7USxNOztHOztJOzs7OzJCOztROzs7Uzs7OztnQjs7Rzs7STtLO0s7OzswQjs7OztTOzs7VTs7OztJO0k7Rzs7STtJOzs7NkIsTzs7NEI7OztHOztJLEc7aUI7SSxNO0c7O0k7OztPLGEsNEI7Ozs7TztROzs7STtHOztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kseUM7STtHOztJLDZDO0k7Rzs7SSw0QztJO0c7O0k7Rzs7STtHOztJOztZOzs7OztHOztJO0ssUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksd0I7STtLO00sTTtNOzs7O1ksTTs7Ozs7SyxNO0k7STtLOzs7Szs7SSxVO0k7SztNLE07TTs7OztZLE07STs7Ozs7Ozs7O0k7Ozs7Ozs7Rzs7STs7OztNOzs7Ozs7TztNOzs7O007Ozs7K0M7OztvQix1QjtJLEcseUM7SSxNO0c7O0k7O087OztJO0ssVTtLLGE7STtJO0s7Szs7Szs7Ozs7Szs7O1M7Ozs7O0k7STtLO0ssTTtLLGE7SztJO0c7O0ksTztHO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SyxNO0ssbUI7O0c7O0k7O08sTzs7TyxPO2UsTzs7Rzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7STs7Ozs7STs7Ozs7OzRCOzs7Ozs7Z0I7O0k7Rzs7STtLLFE7SyxVOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STswQixxQjs2QixTLGdDOztJLE87SyxXO0s7O0ksVztHOztJLE87SyxXO0s7O0ksVztHOzs7SSxnRDtJO0c7O0k7O087O087O087O087O087O087ZTs7Rzs7SSx5QjtJO0c7RztJOzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4Qjs0QixXLDhCOztJLFc7Rzt3QixXLDhCOzJCLFcsOEI7O0k7OztLLE87SSxPOzs7OztLO0k7SSxvQjs7O0s7TSxXO00sTzs7Szs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7YSxPOztZO1ksTztXO1EsTzs7Ozs7Ozs7OztRO1MsTzs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7O0ksTztHOztJO0ksWTtJO0c7RyxnQzsyQiw4QjtrQyxrQzswQiwwQjtzQix3Qjs7STtrQzt1Qjs7SSxJLFcsa0M7Ozs0Qjs7O0c7NkIsNkI7O0k7OztLOztJO0c7O2tDLG9DOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxPO0s7STs7SztLLG1CO0s7STs7O0ssMEIsc0I7Syw4QixzQjs7O007O0ssd0IsdUI7cUI7O21DOzs7O1EsSSxVOzs7O1MsSSxVOzs7Z0M7OztTLE87Ozs7a0I7O1E7O1E7OztTO1E7O1E7OztTO1M7O1M7Ozs7VTtVOzs7OztVOzs7UTtROztROztTLG9CO1MsTTtROztROzs7UztpQyxrQztTOzs7UyxJLFM7OztnQzs7O1M7OztROztRLDBCLFU7c0I7O1E7Ozs7SyxrQjtLO0k7O0s7SztJOzs4QiwwQjs7O007OztLLDZCO0s7O3lCOztRLGtDO1E7O3VDOzs7USxXOzs7UTs7eUI7aUM7O0k7O0s7TTtNLG9CO00sdUI7TTtNOzs7Ozs7OztJO0k7O0c7bUMsUzs7SSxNO0c7O2dDLDRDO0c7OztLOzsyQixPOzs7UTs7USxrQztROztJO0kscUI7Rzs7SSxzQztHO29DLHNDOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksaUI7SSxPO0c7O0k7SSxPO0c7O0ksSSxtQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksd0I7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtDO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSxvQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksdUI7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0Qix5QjtvQixZOzBCLHlCOztJOztPOztPOztPOztPOztPOztPO2U7O0c7MEIsZTswQixlOzJCLGdDO3VCLHlCOztJO0k7ZTtHOztJO0kscUI7RztHO0k7STs7Ozs7O0k7STtHO3lCLGlDO3lCLHFCLDJCOztJLEksaUIsaUI7STtHOztJO0ksTztHO3lCLHlCOztJLHNCLGlCLGtCOztHOztJO0ksTztHO3dCLHFEOztJOztPLE87O08sTztlLE87Ozs7STtLLE87STtJLFU7SSxPO0c7O0k7SSxPO0c7O0k7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1UsTTtVOzs7O0k7Rzs7STs7Ozs7O0s7STtHOztJOzs7Ozs7OztJO0c7O0k7STttQjs7Ozs7O1M7Ozs7O1E7Ozs7Uzs7Ozs7UTs7OztHO3FDLG1CLFU7RztxQjtHLFk7O0k7Ozs7Rzs7STtJOzs7Ozs7OztLOztHOztJOztHOztpQyxjOztJO0k7Ozs7Rzs7NkIsYzs7Ozs7Ozs7OztTOzs7Ozs7Szs7Szs7Ozs7Ozs7OztRLHNDOzs7d0I7O0k7OztJOzs7OztRLHNDOzs7NEI7O0k7Rzt3QixrQjt5QixrQjt5QixrQjtzQixrQjtnRDtHOzRCLG9COztJLEs7SyxNOzs7Rzs4QixxQjs4QixxQjt1QixVOzBCLFU7O0k7Ozs7SyxJOztHOztJO0ksTztHOzBEO0c7O0k7O0ssc0I7SyxPOzs7Rzs7STtJO0s7OztLOztHOzBCLGtDOzRCLGtDOzJCLGtDOzBCLGtDOztJO0k7O0s7OztNLEcsdUM7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sSSxPOzs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7O0k7Ozs7STtHOztJLFk7O0k7Rzs7STtJO0c7O0ksVztJO29CLDBCO0ksTztHOztJLDBCLE87aUMsTztJOzs7OztLOzs7SSxPO0c7RyxhOztJOztHO2dDLHNDOztJOzsyQzs7K0M7OzhDOzs4Qzs7Ozs7Ozs7Ozs7RztHLG9COztJOztHOztJLEksbUI7c0I7STs7STs7Ozs7O0s7Ozs7O0s7Szs7STtHOztJLEk7O0c7O0ksSTs7b0M7STtHOztJLEk7O29DO0k7Rzs7STs7O0c7NEIsZ0Q7O0k7STs7O21EOzs7O0ssTzs7Rzs7STtJOztNLE87OztNO087Ozs7Ozs7Rzs7STtJOztNLE87Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztHOzRCLHdCOztJOztJO0c7O0ksNEM7OztlOztJOzs7OztPLE07TTs7Ozs7O0ssb0M7O0ssSTs7OztJLHdCO2tDOztJOzs7O3VDOztJOzs7Ozs7VTs7Ozs7NEI7OztVO1M7TSxPOzs7TSxxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0cscUI7RyxxQjtHLDJCOztJLG9CO0ksTztHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0IsMEI7dUIsMEI7NEIsMEI7O0ksb0I7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxvQjtJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXOztLLGtDLE87SyxPLGtCO0k7SSxPLFc7RztHO0k7OztRLE07TztJOzs7MkIsTywyQzttQywyQjs7SSxPO0c7O0ksWTtvRDtJO0c7O0ksWTtvRDtJO0c7O0ksWTtvRDtJO0c7O0k7Ozs7Ozt1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLFE7VTtJLEksSyw0QixROzs7OzBCOztROzs7USxNOztJO0c7MEIsTyxtQzs7STtHOztJLFc7SSxXO0ksVzs7SyxrQixRO3FEO0s7STtJLE87Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTtXOztJO0c7O0ksWTs7Ozs7O1EsZ0IsbUI7Ozs0Qjs7O0k7Rzs7STtnQjtJLG1CLFU7OztLO00sWTtNLE87OztJO0c7O0ksVzs7SyxtQixROzs7O08sTzs7O3VDLE87O0s7STtJO0ssUztLLE87SyxROzs7Ozs7OztRLE07O0ksVzs7SztLLE87STtJLGM7a0I7O0k7Rzs7STtJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7Ozs7O1c7VyxPO1U7TyxPO2UsTTs7Rzs7STtJO2dDLE8saUI7Rzs7OztxQzs7O007TTs7Ozs7Ozs7STs7SyxPOzs7cUIsTyxvQjtJLE87OztJOztLLFc7Ozs7SywyQyxPO0s7STtJLFc7OztJOzs2QyxPLG9CO0ssTzs7OztLO0ssTztJO0ksTzs7O0ksVztJLE87Rzs7STs7MEIsTzs7MEIsTzs7NEIsTzs7MEIsTzs7MkIsTzs7MEIsTzttQyxPOzs7O0k7Rzs7SSxrQixPO0k7SSxrQixPO0k7O0c7O0k7SSxrQixPO0k7O0kseUI7SSxrQixPO0ksTztHOzBDO0c7O0ksbUIsTztJLE87Rzs7SSxrQixPO0k7STtJLGtCLE87STs7Rzs7SSxtQixPO0k7STs7Rzs7SSxZOztJLE87OztJOzswQixPOzs7TztPLE87aUMsTzs7OztJOzs7TztPLFc7TztPLE87OztPO087Ozs7O1c7VyxPO1U7Tzs7Ozs7VztXLE87VTtPLE87OztPO08sTzs7OztJLDJCO0c7O0ksZTtJLFk7Ozs7Ozs7UTs7UyxPOzsyQixrQixPLHNCO1EsTzs7Ozs7O0ssTzs7STtHO3VCLFM7O0k7SyxROzs7Ozs7SyxpQyxROzs7O007O08sTztjOztNOzs7O087TztPLE87YztLO0k7SSxhO0k7Ozs7OzJCOzs7STtJLE87Rzs7STtJOztLLDZCO0s7Ozs7UTs7Ozs7UyxPLHFDO1MsTztRLGM7O3lCLFc7OztRLGdCOzs7bUIsVztROzs7O1Msd0I7USxXOztROzs7OztTLE87UyxPO1EsZ0I7O1E7O1MsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7Ozs7O1k7WSxjO1c7USxpQjs7O0c7O0ksVzs7SSxPO0c7O0ksSSxnQixNOztLO0ssTztJO0k7STtHO0c7Ozs7cUM7Ozs7O00sVyw2Qjs7Ozs7OztHLFc7O0k7d0Isc0I7STs7O0c7O0k7OztHOztJLDRCOzs7O0ssTTs7O0ksRyxtQzs7STtHOztJOzs7NEI7OztHO0c7O0ksWTs7SSxnRDtJO0c7O0ksOEI7O0k7Rzs7SSw4Qjs7O0ssTzs7O0ksTztHOztJOztpQjs7SyxHO007MEM7SyxJOztHOztJO0k7Ozs7OytCOzs7Rzs7STtJOzs7UTs7UTs7O0c7O0k7STt3Qjs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksSTtrQyxvQjtJLE87Rzs7SSxJOztLO0s7STtJLE87Rzs7STs7SztLLFk7STtJLE87Rzs7SSxJOztLO0s7STtJLE87Rzs7SSxJO2lDLG9CO0ksTztHOztJLEk7O0s7SztJO0ksTztHOztJOztLO0ssWTtJO0ksTztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7STs7Rzs7STtJOzsyQixrQixzQjtJOzsyQixrQixzQjtJLE87Rzs7SSxPO0c7O0ksWTtzRTtJLE07Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJLFcseUI7OzsyQixPOzs7Rzs7STtjO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7Rzs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUyxJOzs7Ozs7Ozs7STtHOztJO2M7YztHOztJLGM7O3FCO0ksUztZOzs7SztNLEs7O2E7O1c7OztJO2dCLE87SyxZOzs7O007O0ssSTs7Rzs7SSxVO0k7bUI7Rzs7O0s7Ozs7Ozs7VyxPOzs7Ozs7OztVOzs7Yzs7VSxPOzs7Ozs7Ozs7Ozs7OztVLE87Ozs7Ozs7Ozs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07OztROztTOztZOztRLE87OztRLE87OzBDOzs7USxtQjtRLE87OztRLE87OztRLE87OztRLE87OztRLE87O1E7O1M7O1k7O1EsTzs7MkIsTzs7UTs7UztTOzs7O3lCOzs7Ozs7NkI7YTs7O2lCOzthOzs7OztTLDRCO1EsTzs7O1E7Uzs7VSxXOzs7ZTs7UztVOztVLGM7O1csb0IsVTs7Ozs7O1U7VztZOztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7O1ksUTs7WSwrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZSxXOzs7ZTs7a0I7OztlLFc7Ozs7Yzs7Ozs7dUI7O1c7OztXOzs7O3dCO1M7Ozs7O1UsTzs7OzsyQixPOztROztTOztZOztRLE87Ozs7UyxPOzs7SywwQjtLLE87OztLO0s7Ozs7NEI7O2dDO2dCOzs7Ozs7STtJO0c7Rzs7OzttQjs7c0IsTzs7SztLOzs7O3FCLE8seUM7d0IsTyw0QztHLGdDO0c7cUIsTyx5QztHLDZCOztJOzs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7OztJOzs7STs7SztLLEc7TTtNOztLO0s7SztLO0ssTzs7STs7O0k7Szs7TTs7Uzs7SyxPOztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtRO1EsTzs7UTs7O1MsNEI7USxPOzswQjs7dUIsTzs7UTs7O1MsYztRLE87O1E7Ozs7O1M7O1k7OztjLE87O1k7Ozs7WTs7YTs7O3VCLE87c0I7Ozs7O1k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7UTtRO1M7OztZOzs7O1ksTzs7VztRO1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJOzs7a0I7O007TTs7OztJLE87Rzs7Ozs7aUI7TSx1QjtNLE87Ozs7TTs7O08sNEI7TSxPOzs7O0s7Yzs7Ozs7OztLO2U7OztpQjtpQjtJO0k7Szs7SSxPOzs7OzttQjs7c0IsTzs7SztLO0s7Ozs7O0ksVTs7SztLO0s7SztLO0ssTzs7O0k7SSxPOzs7Ozs7OztJLE87OztHLEksa0M7O0ksTztjO2M7Rzs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7Ozs7OztJLFU7dUIsTywwQztJO0s7O0ksTzs7O0k7Ozs7Ozs7VyxVOztXO1k7O1csTzs7TyxPOzs7Tzs7OztRO1U7YTs7TyxPOzs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7UTs7Vzs7TyxPOzs7OztJOzs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sTzs7OztHO0k7STs7O1EsTztPO0k7O3VCLE8sK0M7STs7O1EsTztPO0k7OztRLE87TztJOzs7USxPO087Z0Q7Rzs7STs7O007O087Ozs7O0ssYTtLLE87Ozs7Ozs7OztHOzs7SyxZLE87Szs7O00sTztLLE87Ozs7Syw0Qjs7Ozs7O08sTzs7Ozs7Ozs7OztLO00sUTs7O0s7Ozs7OztTOzs7VTs7Ozs7OztNO08sTztPO1M7O00sTzs7OztJO0c7O0ksbUM7OztPLE87Ozs7Ozs7O08sTzs7O087aUI7O2lCOzs7TyxPOzs7O0ksWTs7bUIsTzs7OztLOzs7TTs7O0s7Ozs7OztROzs7Uzs7Ozs7O007TyxPO087TSxPOzs7Ozs7Ozs7OztJLE87Ozs7Ozs7Ozs7STtLLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7WTs7Ozs7Z0IsTztlO2E7O2dCOzs7OztXLE87Ozs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1c7O1k7WSxPOzs7Ozs7OztXO1csTztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXO1c7WTs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQjttQjs7a0IsTzs7aUI7YyxPOzs7Ozs7Ozs7YyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1E7O1csWTs7Vzs7WSxPO1c7VyxPOztROzs7O1ksTztXO1csTztVO08sTzs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJOztLO00sTzs7Ozs7OztLOzs7Uzs7SyxPOzs7Ozs7Ozs7O2MsTztJO0s7O0ksTztHOzs7Szs7O00sTzs7Ozs7Ozs7d0IsTywwQztLO007OztJO0k7dUIsTywwQztJO0s7OztJLE87Ozs7Ozs7O0c7Rzs7Ozs7OztJLFk7OztLOzs7TTs7O0s7Ozs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO007OztnQjs7Ozs7O0k7O0s7Ozs7Szs7O2M7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O1EsTzs2QixPOztRLE87TyxZOztRLE87O08sTzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7STtJO1k7Ozs7O0c7K0Isb0M7O0k7STtZOzs7OztHOztJOzs7O0ssTztJO0c7aUMsc0M7O0ksOEIsTztJO0c7bUMsd0M7MEIsc0M7Z0MsNkM7O0k7Z0M7a0M7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1CO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OztHOztJOzs7Z0I7Ozs7OztLLE87STtHOztJLEksVyxzQzs7Ozs7O1M7O3VDOztTLGdDO1M7Ozs7Rzs7SSxJLFU7Ozs7OztTOzt1QztpQixPOzs7O3FCLE87O0k7Rzs7SSxJLFU7Ozs7OztTOzt1QztpQixPOzs7OztLLE07O0k7Rzs7SSxZOzs7MkI7OztPOztPOzs7Tzs7Rzs7SSxJLFU7Ozs0Qjs7OztHO0csYTtvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7Rzs7OztRLE07Tzs7SSxXO0k7Szs7O1E7Ozs7VztvQjs7WSxrQzs7Ozs0Qjs7O1Esa0IsMkI7Ozs7UztVLE87aUI7UTtROztJO0ssSztLLFc7NEI7Ozs7SyxJLE8sa0M7STs7OztNLFk7Ozs7UTs7OztTO1c7Ozs7YTs7Ozs7TSxNOzs7OztTOzs7VSxzQjtVLFM7OztVLEksVTs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7OztTOzs7VTtVOzs7VTs7O1c7WSxzQjtZLE87Ozs7Ozs7Ozs7UyxTOzs7Ozs7Uzs7VSxPO1UsUTs7O1U7Ozs7WTs7Ozs7Ozs7O1c7O1ksTztXOzs7WTthLE87YSxjOzs7Ozs7WTs7Ozs7Ozs7O2UsVTs2Qjs7Ozs7O1ksTTs7OztVO1U7OztXLHNCO1csUTtXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7Ozs7YTthO1k7VSxPOzs7O0s7TSxzQjtlOztJO0k7Rzs7OEIsaUM7SSxPO0c7O0k7O0s7SztLO0k7Rzs7STtLOztNLHNCO0ssVzs7O0ksb0I7SSxXOzs7STs7OztLO0s7O0s7Ozs7Ozs7Ozs7OztLOzs7TSxzQjtpQjs7Szs7O007O1M7O1U7VTs7UyxvQjtTO1UsTztVO1M7O2lCOztJLG9CO0k7WTs7Ozs7Ozs7Ozs7Ozs7Rzs7OEIsNkM7SSxPO0c7O0k7O087Ozs7UTtRLHNCO1EsUTtRO087O087Ozs7O1c7VztVO1EsTzs7OztXO1c7VTtRLE87UTtPOztPOzs7O1E7Tzs7OztJOztLO0s7Ozs7Ozs7STtLO0s7O0ksb0I7STtZOzs7Ozs7OztHOzs4Qiw4QztJLE87Rzs7STs7SztLOztLO0s7O0ksb0I7STtZOzs7Ozs7O0c7OzhCLCtDO0ksTztHOzs4QiwrQjtJLE87Rzs7STs7SztLOztJO0c7OzhCLCtDO0ksTztHOztJOztLOzs7O0ksb0I7STtLLE87Szs7SSxvQjtJLFc7STtHOzs7SztJO0ksTztHOzs7SyxXO0ssTztJO0ksTztHOztJO0k7Rzs7STtLO0s7SztJO0c7O0k7STtHOztJOzt5Qjs7MEIsVzs7OztROzs7O1M7UTs7O087bUM7O0c7O0k7OztPLEksVTs7Ozs7O1k7O3NDO29CLE87Ozs7Tzs7MEI7Ozs7O1E7Ozs7UTs7OztTLE87UztROztPOzs7UTtPO21DOzs7O0k7O3lCOzswQjs7O087Ozs7Ozs7TzttQzs7Rzs7SSxnQjtJO0c7O0k7O0s7Szs7SSxvQjtJLFc7Rzs7SSxlO0k7Rzs7SSxZOzs7SyxPOzs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtJLE87Rzs7STthO0c7O0k7O0ssTzs7O0k7Rzs7STs7OztLOzs7Ozs7OztXO1ksTztZLE87VyxPO1U7Ozs7OztTLFc7UyxPO1E7Ozs7Ozs7VTtXOztVLFc7UztNLE87Ozs7O1E7Ozs7O1MsTztTOzs7OztROzs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLE87Uzs7Ozs7UTs7Ozs7OztTLE87UztTOzs7Ozs7UTs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7UTs7Ozs7O1MsUTtTO1M7Ozs7Ozs7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087Ozs7Ozs7O087OztPOzs7Tzs7Rzs7STs7O087OztPOzs7Tzs7Ozs7Ozs7Tzs7O087OztPOzs7Tzs7Rzs7STtHOztJLG9CO3dCO0k7Ozs7Ozs7OztLOzt3Qjs7O0s7O3dCOzs7STs7O2U7O2dCOzs7O2dCLG1CO2dCO2lCLFc7aUI7Z0I7ZTtlLE87Ozs7Ozs7O0c7OztLO0k7SSxPO0c7NkIsTyx1Qzs7SSxPO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7SSxTOztJOztHO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7SSxXO0ksWTtJLGE7SSxhO0ksWTtJLFk7SSxXOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7SSxpQjtJLGE7SSxhOztJLE87RztHO0ksYztJO007SSxrQjtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJOztJLFU7STtHO0c7STtJO0k7STtJO0k7STs7STtLO0s7SztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzs7aUMsUztLO00sUTtNLE07OztNOzs7O1M7Ozs7Ozs7Ozs7OztLLE87STs7SztNLE07TSxNO00sVTtLLE87Ozs7STtJLDBCLHVCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Uzs7UztROzs7Ozs7OztLOzs7UztTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7b0IsVywrQjtHO0ksaUI7SSxtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsSSxPOzs7TSxPOztJO0k7STs7Rzs7SSxPO0c7O0k7Ozs7O3dCLFk7WTtJO0s7O00sNEI7TTtNLE07cUI7OztJO0c7O0k7Szs7O0kseUM7STs7Syw4QjtLLGM7SyxRO0ssTTs7O0ssTTtLOzs7Ozs7O1E7Ozs7Ozs7OztJOzs7O0c7O0k7Ozs7O0k7Szs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7OztVOzs7Ozs7O0s7O0c7O0k7O0s7OztNO007TTs7O1M7UyxPOzs7UTtLOzs7O1MsWTs7Ozs7Ozs7OztTOzs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtXOztXOzs7O1M7VSxZO1U7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O2E7Ozs7Ozs7Ozs7Uzs7Szs7STtHOztJOztLOzs7TTtNO007UTtVOzs7UyxZO1M7OztVOzs7OztVOzthOzs7Ozs7Ozs7OztTO1M7Uzs7Szs7STtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssUTs7O0ssTztLLFE7STtHOztJLFM7STtLO2U7SyxLO007TTtNOztLO0s7O00sTTtLOztPO1M7TSxNO0s7O1E7OztLLE07Ozs7Ozs7TTtNLE07O0s7SyxNOztHOztJO0k7STtJO0ssTTtLO0k7STtJO0c7O0k7OztPLE87OztPLE87Ozs7Ozs7OztPLE87Ozs7O0ksdUI7O0ksVztHO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7dUIsTSxnRDtHO0k7OztRO1M7VSxNO1UsVzs7OzsrQjs7O1EseUI7TztJOztJO0ssTTtLO0s7SSxXO0c7O0k7Ozs7OztJOzs7STs7STtHOzs7K0Isc0M7STtLO087SyxNO0ksTzs7Ozt3Qjs7Ozs7O0s7Ozs7O0ksSSxVOzs7MkI7OztjOztJOzs7STs7O0ssVzs7SztLLE87O0ksTztHO2dDLGtCOzZDLCtCOztJLFU7d0IsTyxpQjtJLFU7STtJO0c7Ozs7SyxVOztLLE87STtJLE87OztJOzs7SztLO0s7SztJLEc7Szs7O0ssOEI7Ozs7STtJOztLLEk7Ozs7OztNOzs7STtJO0c7O0k7SSxHO0ssTTtJLEksVTs7Ozs2QixNO0ssWTs7O007TTtPLEs7TztNOztLO0ssTTs7YyxNOztJO0c7O0k7STtLLE07SztLLEs7STtJO0c7Z0MsNkM7O0k7O0ssVTs7SztLLFU7Szs7OztVLEksb0MsYTs7OztZO1ksTzs7O1k7O2EsTTthO1ksTzs7OztXOzs7Ozs7O2lCOzs7Ozs7Ozs7YyxNOzs7O3VCOztXO1csTzs7UztNLE87Ozs7OztJO0c7O0k7SSxJLFc7Ozs7TSxNOzs7SSxXLE07O0k7Rzs7STs7O0ssTTtJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87OztJOzs7OztLLFE7SztJO0c7O0k7O0s7SztNLE87SztLO00sTTtNOzs7O007Szs7OztNOzs7SztLO0s7SztJO0ksOEIsTywrQjtJLE87Rzs7STtLOzs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7TTtHOztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7SSxhOztJLE87RztzQyxxQjs7STs7Ozs7Ozs7O0c7c0Msb0I7O0k7Ozs7c0M7STtHO0c7SSxvQjtJLGM7O0ksOEI7Ozs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzt5QyxXOzsyQixZOzs7TyxZOzs7TyxZOzs7TyxZOzs7Rzs7STtJLFc7Rzs7STtJO0ssSSxXLHFDOzs7OztpQixNOzs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNOzs7VTs7Ozs7ZSxXLE87O2UsTztjOzs7VTtTO08sTztnQjs7Ozs7O0ksVzt5QixxQiwwQjtJLFc7SSxPO0c7Rzs7STtJLFc7Rzs7STtJO0ssSSxXLHFDOzs7OztvQyxNOzs7TyxPOzs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7O1M7UyxjO1E7YTtJLFc7O0s7SztJO0ksVztJLE87Rzs7STtJO0s7Ozs7VTtXLE8sYyw0Qzs7O00sUTtNO21DOztNOzs7Ozs7VztZLE87bUQseUI7OztPO1MsVzs7Ozs7Ozs7OztXO1csTyw4QjtVOzs7Ozs7OztHOztJO0k7Ozs7O1U7VyxPLHNDOzs7Szs7bUM7Ozs7Ozs7O1c7WTthLGE7YSx5QjtZLE8sYyw0Qzs7O007Ozs7Ozs7Ozs7VztXLE8sNEI7VTs7Ozs7OztHOztJO0k7Szs7c0Msb0I7TSxRO007Ozs7O1UsSSx1QixjOzs7a0M7OztTO00sTzs7OztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQztHO0k7OztRLE07TztJOzs7USxNO087STs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLOztzQyxvQjtNLFE7TTs7TTs7O1UsSTs7Ozs7Ozs7Ozs7VSxXO2MscUIsYzs7O2tDOzs7UztPLE87TyxPO087TSxPOzs7O0c7NkIsUzs0QixnQjs2QixnQjtHO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07Tzt3QixpRDs7STtLLG1CLE87SyxPOzs7SSxPOztHO2lDLHVCO2dDLGlDO3FCLE8seUM7O0ksVztJLGlCO0c7O0ksTztLO0ksaUI7Ozs7O007Tzs7USxnQzs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7O1k7O0c7O0k7O0s7SztLO0ssSztLOzs7Syw4Qjs7SztJO0k7SyxTO0ssTztLO0ssYztLLE87SyxrQjtLLFk7SyxNO0k7Szs7TSxXO2M7OztJOzs7Ozs7Ozs7OztJOzs7RyxnQztHO0ksaUI7STs7SSxPO0c7O0k7Rzs7SSxPO0c7O0ksTzs7Rzs7SSxPOztHOztJLE87Rzs7SSxPO0c7O0k7STtJO0k7STtJO0k7Rzs7STtJO0k7STtHOztJO0k7STtHOztJLFk7Ozs7SSxPOztHOztJO3VCOztJO0c7O0k7cUI7SSxJLFcsNkM7Ozs7SyxJLFEsa0M7Ozs7OztvQjs7Ozs7O0ssWTtLO0s7O0c7O0k7O1EsSTs7O0ssd0I7Ozs7SyxxQjt1QixNOztJO0c7O0k7O3lCOztPLDhCO08sTzs7Tzs7O1E7USxNO08sTzs7O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPOztHOztJO0s7SyxNO0ksTztHOztJOztPLGtCOzBCLE07O087O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs7OztLLE07SSxxQixPO3dCO0ksSSxTLHlDOzs7SztLOztJLE07OztJLFk7Ozs7TyxJLFc7OzsrQjs7O087Tzs7O08sSTs7OztTLE07OztPLEksWTs7OztTLE07OztPLFc7OztROztPLE07OztPLEk7Ozs7UyxNOzs7Tzs7O08sSTs7OztTLE07OztPOzs7UTtTO2dDLE8sZ0M7VSxTOzs7OztVLE07OztROztPLE07O0c7OEIsaUM7cUMsaUM7O0k7O3lCOztPLDhCO08sbUI7ZSxNOztHOztJOztLOzs7STtHOztJLE87Rzs7STtHOztJO0c7O0k7O08sa0IsK0I7cUIsTTs7Tzs7Tzs7O1E7Z0I7TztvQixNO1EscUM7b0M7Ozs7ZSxNOztHOztJOztPOztRLE87USxPOztPOztPOzs7UTtRLFM7USxRO087ZSxNOztHOztJO0s7O1E7MkIsTTs7UTs7UTs7USxJOzs7Uyx3QjtVLFc7VSxPOzs7OztTLFc7UyxPOzs7UyxNOztROztROztROztRO2dCOzs7SSxPO0c7O0ksWSxPOztJOztHLHVCOzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7Tzs7OztJOzs7TSxzQjs7O087USxPO1EsTztPO1E7UyxPO29COzs7Z0I7Ozs7Ozs7Szs7Ozs7O007O3FDOzs7OztNOzs7O0c7O0ksSSwrQzs7Ozs7TSxNOztLOztHOztJOztPOztPLDhCOztlLE07O0c7O0k7O087Ozs7O1EsRztTLFc7UyxLOzs7Ozs7OztlLE07O0c7O0k7STtLOzs7TSxJOzs7Ozs7Ozs7OztLOztHOztJOztPLGtCO08sTzs7Tzs7O1E7USxTO08sTzs7TyxnQztPOztHOztJO0c7O0ksSSw2Qjs7OztLLHVDOztLOztJLE07Rzs7SSxJLDZCO2dCLE07O0k7Rzs7STtnQixNOztJO0c7O0k7SSxPO0c7O0k7STs7OztRLEksbUMsYzs7O2dDOzs7OztnQjs7Rzs7SSxXO0k7SyxtQjtLOztNOzs7Ozs7SztNO08sTztPLE87Ozs7OztNO08sSztPLE87TTs7O0s7SztJO0ksSSxnQjtJO0s7Ozs7Ozs7Ozs7OztzQjtHO0c7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO3FCLE8saUI7STtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLO0ssb0MsdUI7OztPLFk7Ozs7O08sWTtPOzRCO08sd0I7MkIsaUQ7Tzs7O1E7TztPLE87TTs7O0s7O0s7OztlO2U7Z0I7aUIsVTtpQjttQjs0Qjs7Z0I7O2UsbUI7O2U7Yzs7Rzs7STs7OztHOztJOzJCLE8scUM7SSxPO0c7O0ksa0M7dUI7O0k7SztNLE87TSxJO00sMEI7Szs7Ozs0Qjs7Ozs7STs7Tzs7UTtRLCtCOzs7VztXLCtEO1c7VTtPLE87O087OztROytCLGdCO1E7eUI7USxNO08sTztlOztHOzswQixnQjs7O087O1E7eUM7OztPOzs7UTtROztXOztRLE07ZTs7Ozt3QjtJLE87Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7UztVLG9CO1U7VTs7O2E7YTthLE87WTs7O2E7YTs7Z0I7OztpQixTO2lCOzs7OzZCOzs7OztnQjtpQixPO2lCLFk7aUI7aUI7aUIsTzt1Qjs7O2dCOzs7aUIsYTtpQixPO2dCOzs7OztpQjs7a0IsTzt3QztrQixPOzs7cUI7O29CO2lCOzs7O2lCOztrQjtrQixPO3dDO2tCLFE7OztxQjtzQixZO3NCOzs7b0I7aUI7OztnQjtpQixPO2lCLFk7aUI7aUI7aUIsTzt1QjtnQjs7aUI7OztpQjs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7OztnQjs7O2lCLFE7aUI7aUIsUTtpQjtpQixPO2lCLFk7aUI7aUI7a0M7OztnQjs7OztpQixXO2lCLE87Z0I7OztrQixNOzs7OzJCOzs7O2dCO2lCLFM7aUIsTztpQixRO2lCOzs7Ozs7Ozs7O2lCO2lCO2lCLE87dUI7Ozs7O2dCOzs7aUIsVztpQjttQjtpQixPO2lCLFU7aUI7aUI7aUIsTzt1Qjs7OztnQjs7O2lCLFM7aUI7aUIsTztpQixVO2lCO2lCO2lCLE87dUI7OztnQjs7O2lCLFM7aUIsTztpQixVO2lCO2lCO2lCLE87dUI7OztZO1M7Uzs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7Ozs7O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0ssSSxlLHVCLHNCO0s7SyxXO0s7Ozs7cUI7OEI7Ozs7OztVOztVLFc7VSxPO1M7TSxPOzs7Ozs7O0c7O0k7O0ssUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssZ0Q7Ozs7aUIsMEI7Tzs7Ozs7Ozs7OztHOztJO0ksaUI7O0s7STtJO0k7Szs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STt5RCxlO0s7O0ksSSxxQjs7Ozs7OztLOztNLFM7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO1c7aUI7VztZO1k7O2U7Ozs7Ozs7Ozs7OztXO1csVztXOzs7OzJCO29DOzs7OztnQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MkI7O2dCO2dCLE87ZTtZOzs7O1M7Ozs7Ozs7Ozs7VTtTOzs7Ozs7Ozs7Ozs7O1E7TSxROzRCOzttQjs7Szs7TTtNLGU7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO2lCO1c7WTtZLHNCO1c7VztZLE87WSx1Qjs7Ozs7Z0I7O2lCOzsyQjs7Z0I7Z0IsTztlO1k7Ozs7UztVLFk7Ozs7Ozs7Ozs7O1U7Uzs7Ozs7Ozs7Ozs7OztRO00sUTs0QjtNLGU7OztJO0s7OztLOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7O0s7SyxPO0s7STswQzs7O0k7Szs7TSxlO007TTtZO007TztPLHNCO007Ozs7VTs7Vzs7cUI7OztVO1UsTztTO007OztJOzs7Szs7Ozs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7Ozs7STs7SztJO0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOzs7O0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7Szs7O0s7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7STs7O0s7b0MsZTs7O21DLGU7Ozs7STtLLE87SztLO0s7STtHOztJO0s7SyxRO0s7OztJO0c7O0k7SSw0QjtHOztJLFk7STtHOztJO0s7SztJO0c7O0k7STtHOztJO0c7O0k7STtHOztJLG9CLE87STs7Ozs7Ozs7Ozs7OztHOztJLEksUSwrQjtJLE87Rzs7STtLLEs7SztLOzBDO0k7Rzs7STtLLEs7SyxnQztJO0c7O0k7SyxLO0s7SyxRO0s7STtHOztJLFM7STs7O0c7O0k7SyxLO0ssUTtLLDZCO0k7Rzs7STtLLEs7SztLLG9DO0k7Rzs7STtLLEs7SywrQjtJO0c7O0k7Rzs7Ozs7SyxXOzs7Ozs7O1UsZ0I7VTs7VyxRO1UsVztTOzs7O0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7Ozs7STtLLE87Szs7O0k7Rzs7STtLOzs7STtHOytFO0c7Ozs7Szs7OztJO0s7Ozs7STtLOztHO0c7STs7RztHO0k7O0c7RztJOzs7STtJO0c7O0k7SyxLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLEs7OztLOzs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJOzs7NEI7OztxQjs7dUI7OztLOzs7OzRCLE8saUIscUI7OztLO0k7O0s7Ozs7NEIsTyxpQixxQjs7O0s7STtJO0s7O0ssNEIseUI7Szs7SywyQix3QjtLOztLLHlCLDBCO0s7O0ssd0IseUI7Szs7SywyQix5QjtLOztLLDBCLDBCO0s7O0ssMEIseUI7Szs7SywwQiwwQjtJOzs7Ozs7Ozs7Ozs7OztHOzs7SztNLE07MEI7O0ssRyw4QjtLLE07STtJLEk7Ozs0Qjs7OztLOzs7TSxHOztPLFc7OztLLE07STs7Szs7O00sRzs7TyxXOzs7SyxNO0k7STs7OztLO0s7SztLO0s7SztLO0k7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7O0ssTTtJO0c7O0k7STtJO0k7Szs7ZTtlO0ssYztLLGlCO0ssaUI7Ozs7Szs7OztVOzt1Qzs7UztNOztLO007OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHOzs7Ozs7Ozs7Ozs7O1U7O2lCOzs7Ozs7Ozs7Vzs7Ozs7O1E7Szs7STtHOztJO0s7Tzs7Ozs7O0ssSztLOztLLE07O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLHdCO0s7STtLLE87SyxPO0ksTzs7O0c7O0k7SyxPO0ssTztLO08sVztJLE87Rzs7O0k7STtJO0ssTztLLE87SztPOztTOzs7STtJO0c7O0k7MkIsVztHOzs7K0IsNEM7STs7RztHLGM7Rzs7OztHO0k7SSxVOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOzt5QixPLDBCO0ksTztHOztJLGtCO0ksTTtHOztJLFU7O0k7OztLO007UTs7VztNLE87TSxPO0ssTztJO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7SSxXO0ksTztHOztJLFU7SSxvQjs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJLFU7Ozs7SyxJLFc7Ozs7OztLOztJLFc7SSxPO0c7O0k7OztNLFk7OztPOzs7USxJLFc7Ozs7OztROztPOztPOzs7OztNLE07Ozs7STtHOztJLFU7SSxjO0k7OztLO00sVzs7Ozs7OztLOzs7Rzs7STtHOztJOzs7UyxJOzs7TTtPLEksVzs7Ozs7Ozs7Ozs7OztJO0ssa0I7O0s7Ozs7Szs7Szs7SSxJOzs7O007OztJO0k7Rzs7STtnQjs7Szs7TTtNLE87SztLO0k7SSxPO0c7O0k7O087O1E7OztPOztPOzs7UTs7O087O087UTs7OztRO1U7O087O0c7O0k7Szs7O0s7Ozs7TTs7Szs7O2tCOztJO0c7O0k7OztLOzs7TTs7O007Ozs7O0s7SztJO0k7SyxrQjtLOzs7OztLOzs7Ozs7Tyx1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7WTtNOzs7Ozs7Ozs7OztLO0k7OztpQixPOzs7TTs7O087Ozs7O007O0s7Ozs7TTs7Ozs7TTtROzs7Ozs7O007Ozs7O0c7O0k7O087O1E7OztRLE87Tzs7Tzs7O1E7OztRLE87Tzs7TztROzs7O1E7Tzs7Rzs7STtLOzs7SSxJLFU7Ozs7TTs7O0k7STtJO0c7O0k7OztPLEk7Ozs7Uzs7Ozs7O1E7UTs7Tyx1Qjs7OztXOztXO21COztPOzs7O1E7Tzs7Tzs7O1E7OztPLEksWTs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7Ozs7Ozs7Tzs7OztPOzs7UTs7O08sSSxVOzs7Ozs7O087Tzs7OztPLE07OztJO0c7O0k7OztPLEk7Ozs7Uzs7OztPO087O087OztROzs7TyxJLFU7Ozs7Uzs7O087TztPOztPLE07O0c7O0k7Szs7O0ksaUI7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksYTs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksYzs7OztTOzs7TztPO087O08sTTs7Rzs7STs7TyxnQjtrQjs7OztXOztZO1ksTztXO1c7VTtPLE87Ozs7Ozs7O1EsSSxhOzs7Ozs7Ozs7OztjO2E7YTtZO1MsTzs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7Ozs7O2M7YTthO1k7UyxPOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJOzs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Rzs7STtJO0c7O0k7SSxpQjtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJLEk7Ozs7Ozs7Tzs7Ozs7STtHOztJOztJLHNCO0c7O0k7SSxJOzs7NEI7Ozs7Ozs7OztVO1M7UztRO0ssTzs7STtHOztJO0ksSTs7Ozs7OztPOzs7OztJO0c7O0k7O0ksc0I7Rzs7STtJLEk7Ozs0Qjs7Ozs7Ozs7aUMsNEM7UztRO0ssTzs7STtHOztJO0ksSTs7OzRCOzs7Ozs7Ozs7Uzs7UztpQjs7Szs7SSxvQixlOzs7SztLOztJO0c7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7SyxXO0s7OztlO2UsTztjOzs7O0k7O0s7OztLO3lCO0ksb0IsTzs7SyxPLDRCO0k7SSxPO0c7O0k7Szs7O007MEI7Szs7TSxPOzs7UyxZOztTLE87UTtLLE87O0ksWTs0QixPLHlCOztJO0s7OzZCLHNCLHNCO00sUTtNO2dCO0s7Ozs7NEIsd0M7TTtRLFc7Ozs7Rzs7STs7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7Ozs7STs7Szs7O0s7eUI7OztLLFM7SyxPO0k7SSxPO0c7OztLLGdCOztLLE87STtzQixhO3VCLGM7STtLO0c7OzRCLE8sMkI7c0IsYTt1QixjO0k7SztHOztzQixhO3VCLGM7STtLO0c7O2tDLE8saUM7c0IsYTt1QixjO0k7SztHOztJO0s7SyxPLHVCO0k7c0IsYTt1QixjO0k7SztHOzttQyxPLGtDO3NCLGE7dUIsYztJO0s7Rzs7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7STs7O0s7Ozs7VTtVO29COzs7c0I7MkI7O3dCOztTOzs7STtLO0s7TSxHLHVDOztPOzs7USxPO08sRztRO1MsTztTLFE7Ozs7OztNOzJCLGdDOztJO0k7OztLOzs7Ozs7O0ssSSxLO0ssVztJO0ksVztJOzs7Ozs7Ozs7Ozs7O0c7O0ksTztHO0c7SSxXO0ksbUI7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPO0k7OztRLE07Tzs7O0ssVztLLE87STtJOzs4QyxxQjtPLE87Ozs7OytCLDRCO08sTztlOztHOzs7SyxXO0ssTztJO0ksTztHOztJO0k7K0Msc0I7O0c7O0k7STsrQyxzQjs7Rzs7STtJOzhDLHNCOzs7O0c7O0k7SSw2Qyx5Qjs7Rzs7STtJLHVDLHlCOztHOztJO0k7K0Msc0I7O0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJLEk7STs7ZTs7Z0I7ZTtjOztHOztJO0ssTzs7OztPO087a0I7cUM7TyxPOzs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TztPLEk7Ozs7Uzs7O08sTzs7Ozs7Ozs7OztPO08sSTs7OztTOzs7TyxPOzs7Ozs7Ozs7O087TyxJOzs7O1M7OztPLE87Ozs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7Ozs7TztPLE87Ozs7Ozs7Ozs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTztTLE87UTs7TztRLE87USxPO08sTzs7Ozs7Ozs7O08sTzs7O087Ozs7SSx1QjtJOztLO0s7Tzs7VTtJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJO0s7O3dCOzs7OztTLG1COzs7O0s7O0ksTztHO3FEO0c7O0k7O3VCOzs7Ozs7O1c7OztXOzs7Ozs7OztTOzs7UTs7OztxQzs7STtHOzBCLE8seUM7O0k7SyxNO0k7Rzs7STtLLE07STtHOztJO0ssTTtJO0c7MEM7O0k7SyxNO0k7Rzs7SSxzQztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJO0c7O0ksOEI7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPLGtDO087OztHO2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7Ozs7MkIsb0IsTyxzQjtRLE87OztRLE87OzRCLE87OzRCLE87OzRCLE87OztRO1EsTzs7STtHOztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7Ozs7OztZO1ksbUI7VztRLFc7OztRLFc7O3lCLFc7O3NCLFc7O3dCLFk7O1EseUMsTTtRLFk7O0k7Rzs7STs7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7a0MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O3dCLG1CLFU7SSxPO0c7O0k7SSxPO0c7O0k7Rzs7STtJO0s7O0k7cUIscUM7STs7Rzs7STtJLE87Rzs7STtHOytCLE8scUM7O0k7Ozs7Ozs7Ozs7OztZLEk7Ozs7OztROztRLHdDO1E7Uzs7Ozs7O1U7Ozs7Ozs7O1M7Ozs7K0I7Ozs7STs7O3lCLHlCO0k7Rzs7O0k7Szs7K0IsVzs7O21CO0s7STtJO0s7STs7Szs7Ozs2Qjs7Uzs7O1U7OztVOzs7VTs7aUM7Uzs7c0M7Ozs7OztLO0k7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O3VCLHVCOztJLHFDOztJO0c7O0ksWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxNOzs7Ozs7Ozs7Ozs7OztPLE07OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TSxJOzs7TSxJO007TztxQjtPOzs7O1E7O1EsSTs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztXLFU7VyxPO1U7Ozs7TTtNOzs7TyxVOztNO087Uzs7OztLO007Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7O0ksWSxPOztJLE87OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7Rzs7SSxPO0c7O0k7O3FCLE87O3FCLE87Ozs7USxPOztPLE87Ozt1QixPOzt1QixPOzt1QixPOzt1QixPOztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJLFc7STtJLE87Rzs7SSxRO0k7SSxXO0k7STtHOztJLFE7O0k7SSxPO0c7O0ksTztHOzhCLE8saUM7O0ksOEI7OztLLE87OztJLE87Ozs7SztJO0ksTztHOztJO0k7O0c7O0k7O0s7SztLLE87STtJLE87Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7OztRO1E7OztRO1E7OztRO1E7Uzs7O1k7WTs7YTthO2E7OztZO1k7VztRLE87OztRO1E7OztROzs7OztRO1E7UTs7O2tCO21CO2lCOzs7Ozs7Ozs7O2EsTztZO1ksTztXO1E7Ozs7O1E7UTs7O0c7OztJO0k7OztJO0k7O0s7SztLLEksbUI7O007TTtPO087O1c7O1k7YTs7O2dCO2dCO2dCOzs7Z0I7Z0I7OztnQjtnQjs7WTtZOzs7TTs7O21DOzs7O1EsTzs7O1E7Ozs7O1EsTzs7O1E7UTs7O1E7UTtROzs7a0I7O21COztvQixPO29CLE87bUIsTztrQjtrQjttQixRO21CLE87a0I7a0I7aUI7Ozs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7Ozs7O1E7Ozs7O1E7Ozs7O1E7UTs7OztHOztJO0k7O0s7SztLLEksbUI7O007TTtPO087O1c7O1k7OztlO2U7ZTs7O2U7ZTtlO2U7OztlO2U7ZTs7O2U7ZTs7OztNOzs7bUM7Ozs7USxPOzs7USxPOzs7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7Ozs7O1E7UTtRO1E7O1M7O1M7Uzs7VTs7O2dDOzthO2E7O1M7Uzs7UTtROzs7VTs7VTs7Ozs7WTs7OztZOzs7O1k7O1E7UTs7O1E7UTtROzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7Ozs7OztRO1E7UTs7Ozs7Ozs7Vzs7Ozs7Vzs7Ozs7Vzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7O1E7UTs7O1E7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7OztRO1E7UyxPOztROzs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7OztHOztJO0k7O0s7SztLLEksbUI7Ozs7USxPOzs7UTs7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7O1E7UTtROzs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7OztTOzs7Ozs7UTtROzs7Ozs7O1M7UztTO1UsTzs7Uzs7Ozs7O1E7UTtTLE87O1E7OztHOztJO0k7STs7O0s7Szs7O0k7SyxPOztJO0c7O0k7OztJOzs7STs7O0k7OztJO0k7STtJOztHOztJO0k7O0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7O1E7Ozs7O0c7O0k7STtJO0k7Ozs7O087Tzs7Ozs7Ozs7Tzs7Tzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOztHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTs7Ozs7UTtRO1E7OztRO1E7UTs7Ozs7OztTO1M7Uzs7Ozs7O1E7Ozs7O0c7OztJO0k7STs7O0k7STtJO0k7Ozs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087O3lCOztHOztJOztLO0s7OztJO0k7OztJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7SSxJLGlCOzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7O0c7O0k7STtJOztHOztJO0k7STs7Rzs7SSxZOztJOzs7STtJO0ksSSxpQjs7OztPO087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPO2tDLG1CLFU7Tzs7OztnQjs7O087a0MsbUIsVTtPOzs7O2dCOzs7TztPO087O3lCOztHOzs7STs7Ozs7TztPOzt1QixPOzs7TztPOzs7TztPOzs7TyxPOzs7TztPOzs7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7O0k7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxNOztPLE07ZSxNOztHOzBDLGtDO2lDLDBDO0c7Ozt5QixvQjs2QixpQzs7SSxNO0c7O0ksTTtHO0c7O0ksc0I7STs7O0ssVztJLFc7RztHO0c7STtJO0k7STs7STtJO0ksZ0I7SSxlO0ksZTtJLGM7O0k7Ozs7O0c7O0k7Ozs7O0c7cUMsd0I7O0k7OztHOztJOzs7OztHOztJOzs7O0c7O0k7Ozs7Rzs7STtLLFE7OztxQjs7OztHOztJOztHOztJOztHOztJOztJO0c7cUMsK0I7O0k7O2dDOzs7ZSxNOztrQjtHO0c7O0k7O0s7TSxPO007O3lDOzs7O0k7Rzs7STs7Rzs7SSxJLHFDLEk7STtJO0c7Rzs7STs7OztLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztJO0k7STtJO0k7O0k7Rzs7SSxPOzs7Ozs7Ozs7O0c7cUMsOEI7O0k7MkM7STtHOztJLFk7MkU7SSxNO0c7O0k7STtLLFk7O007Ozs7O087Ozs7Ozs7O1M7UyxPO1E7SyxXOztHOzs7SztLLE87STtJLE87Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Tzs7O2E7TSxJOztNOzs7O087Ozs7Rzs7STtJO0ssWTs7Ozs7Ozs7Szs7Rzs7SSxJLHVCLFE7OzRDO0k7Rzs7SSxJLHVCLFE7b0Q7STtHOztJLGM7Ozs7UTs7O1E7UyxZOzs7O2EsTzs7Ozs7UyxNOzs7SSxPO0c7O0ksWTs7OztROzsyQixPOztJLE87Rzs7STtJLE87RztHLHNCOztJOzs7TSxLO087Ozs7TSxLO087O0s7TSxRO00sUTs7Ozs7O0s7O08sVztPLFc7OztPLFc7TyxXOzs7Ozs7Ozs7OztNLEc7TztROzs7O2M7TyxJOztPLEk7OztJO0c7O0ksWTtJOzs7O0s7SyxRO2tDOztLO0s7O0k7O0c7STtJO0k7O0k7STtLLFc7SyxXO0ssSSxPOzs7Ozs7OztVO3NCO2M7Ozs7Ozs7VTs7VyxzQjtVLE87Ozs7Ozs7Uzs7OztTOztVO1U7O2Msc0I7OztTO1MsZTtvQjtTLEksTzs7O0ssYyxzQjtLLE87O0c7O0k7O0k7Ozs7STtHOztJO3dCO0ksUztJO0k7Rzs7STtnQjs7SSxNO0c7O0k7Szs7Ozs7MkMseUI7TTs7Ozs7OztVO1UsVzs7O1csTzs7OzJCLHlCO1UsTztTO007Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7O0k7STtJOzs7OztTOztTLEksNEI7Ozs7O1UsTTs7O1E7SztLO0s7SztLOzs7Ozs7SztLO0s7O0c7K0IsTyxvQzs7STtLLFE7Ozs7STtJLFk7Ozs7Szs7O0ksTztHOzZCLHVCLHNCOztJLEksUTs7UTs7OztNLFk7Ozs7UTs7O1M7Ozs7Ozs7Ozs7OztNO00sTzs7Ozs7O0k7Rzs7STtJO0c7O0k7STtLLFk7O00sWTs7Ozs7VTtVOzs7OztVO1UsTzs7O1U7Vzs7VyxPOzs7OztVOzs7OztVOzs7NkIsbUIsNEI7VSxPOztNOztLOztHO0c7Ozs7USxNO087O0k7STtLLEksSSxPOzs7Ozs7Szs7OztzQjtLLDZCLE87SyxHLCtCO0ssSTs7Rzs7STtJO0s7TSxhO00sTztLLFc7Z0IsNkI7SyxZOzs7OztvQjtVLEksVzs7O3NDOzs7Ozs7Ozs7b0I7VTtVLEcsK0I7VTtXLE87Ozs7OztLLDBCO0ssTzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sMEI7TSxPOzs7Ozs7O0c7O0ksSSxvQzs7Ozs7Szs7Rzs7STtLLG1CO2dCO2dCLDJCO0ssWTs7Ozs7b0I7VTtXLFc7VztXO1c7Ozs7c0M7Ozs7VSxJLEksTzs7Ozs7bUMsb0I7dUI7O1U7Ozs7OztlO2dCLE87Z0Isc0I7ZTtjOzJCO1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csMEI7VyxPOzs7Ozs7OztxQjtXOzs7Ozs7OztXO3NCO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLDBCO1MsTzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SywwQjtLLE87O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJLHVCOzs7O007TyxPO08sYzs7Ozs7Ozs7SyxJOzs7O0ksaUI7SSxXO0k7STtLOztJLFk7Ozs7d0I7OztRO1E7Ozt1Qjs7O1M7VSxNOzs7Ozs7Ozs7UztVO2lDLG9COztxQjs7UTs7UyxzQjtRLEcsNkM7Ozs7O2EsTzs7dUI7Ozs7WTtZLE87VztRLHFCO1EsSSxXOzs7b0M7OztROzs7O2dDLG1CLHdCO1EsTzs7SSxvQjtJLE87Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7Ozs7O1k7WSxPO1c7UTs7Ozs7WTtZLE87VztRLE87OztROzs7OztJO0c7O0k7RzsrQiwwQjs7STtLLFE7SztLOztLLFk7Ozs7cUI7b0I7Ozs7Ozs7O0s7OztxQjtLO0s7SztLLG9CO0ssTztJOztLLEksTTs7TTtpQjtNO00sWTs7Tzs7USxPO1EsSzs7OztxQjs7Ozs7O0s7STtJO0k7TztLLGMsc0I7Szs7STs7Szs7O00sTzs7STtJLE87Rzs7STs0QjtHOztJO0ssWTtnQjs7Ozs7OztLO0s7SztNO00sc0I7SyxPOztHOztJLGU7STtJLG1CO0k7SyxZOztNOztPLE87TyxPO00sRyx5Qzs7SztNO08sUTtPLFc7O2tCO087O1Esc0I7ZTs7OztNOzs7OztNLGU7TTtNOztPLHNCO00sTzs7STs7SyxXO0s7STtJO0k7SztNLFc7TTs7Ozs7O007Rzs7STtLLFc7SyxXO0s7UTtNLE07SztLLE87STtJLEksUyxJOzs7Ozs7STtJO0c7Rzs7SSxzQjtJLFc7c0U7SSxZOzRDOzs7OztNLE07Szs7OztNLE87TTtROzs7Ozs0QixPO0ksZ0I7STs7Ozs7O1M7OztVOzs7Ozs7Ozs7OztjLEc7Ozs7Ozs7Ozs7Ozs7Ozs7VyxLOzs7Ozs7Ozs7O3FCOzs7Ozs7Uzs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjO2dCO2M7O2lCLGtCLFE7aUU7aUI7O2MsUzthO2Usa0M7YyxXO2M7Z0I7cUI7ZTtnQixPO3dCOzs7Ozs7Ozs7OztVOztzQjs7Ozs7a0I7O0k7STs7O0k7Ozs7eUIsc0M7SSxPO0c7O0k7O0k7O0k7Rzs7O3NCLDRCO0ssTztJO0ksTztHO0c7O0k7O0c7O0k7SztNLE87Ozs7Ozs7OztLO0k7OztPO2lCO0s7SSxPO0c7O0k7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTtHOztJLFk7Ozs7TTs7TyxPO08sTztNLE87Ozs7Rzs7O0s7Ozs7OztVO1c7Vzs7VztXLFE7Ozs7VTtXO1c7VSxLO1csTTtVO1U7Uzs7Ozs7O3dCO0s7TSxRO007TTs7O0ssb0I7SyxjO0s7STtJLE87Rzs7O3NCLHFDO0s7TSxVO007SztJO0ksTztHOzs7SztLLG9CO0s7TSxVOzs7SyxvQjtLO00sUztNO0s7STtJLE87Rzs7STs7Ozs7OztTOzs7O1UsTztTO1E7SyxXOzs7O0s7Ozs7TSxPO00sTztLO0k7SSxXOzs7O0s7Ozs7Ozs7Ozs7Ozs7SyxvQjtLO00sTzs7Ozs7TTtnQzs7Ozs7SyxvQjtLO2E7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7O0k7O0k7Rzs7O0s7O1E7Ozs7OztTLHNCO1MsUTtTO1E7O1E7O1M7OztZO1k7VztTLE87Ozs7WTtZO1c7UyxPO1M7UTs7UTs7OztTO1E7Ozs7SztLLG9CO0s7TSxXO007SztJO0ksTztHOztJLGM7YSxPOztJO0c7Rzs7O0ksYzs7UztLLGdCO0s7TTtPLE87TyxROzs7TyxVOzs7TztRLFE7OztXLFc7VyxPO1U7ZTs7O00sUyxNO007Ozs7O007TyxjO08sTzs7O087UTs7O1csTTs7Ozs7Ozs7c0I7Ozs7Ozs7O1U7Vzs7Ozs7TztROztXOzs7OztZO1k7NEI7OztXOztZLE87WSxPO1c7OztvQjs7O1c7VztZO2EsTzthLGtCOzs7VztZO1ksUTs7OztXOzs7K0IsYSx5QjtZLE87WSxVOzs7ZSxXO2M7WSxPO1ksWTtZOzs7OztPLEksNkI7O007TTs7O0k7TyxvQztJLEksWSw0Qjs7Ozs7UTtRLE87OztJOzs7O0ssWTs7O007O0ssTTtJO0ksVzt3QixXLHFDO0ksWTs7STtLOztLOzs7Ozs7O0k7O0k7Rzs7STs7SztJO0ksTztHOzs7SyxZOzs7Ozs7Ozs7Ozs7TSxJOztLO0s7STtJLE87RztHOzs7O1EsTTtPOztJLFc7TztLLE07OztJOzs7SztNLGlCLFE7O087OztRO087OzswQixPLHNDOzs7TSxNOzt1QyxPOzs7STtLOzs7O0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOztJO0s7Szs7Ozs7TSxNOzs7Rzs7RywrQjs7Rzs7STtLOzs7SSxZOztLOzs7O00sUTtNLFE7TTtNLFU7O00sSSxVOzs7O08sYTtPLEc7USxNO08sTzs7O007TztROzs7Ozs7OztNO08sTztPLFU7TTtNO007Ozs7TSxJOzs7OztLLEk7Ozs7O0s7O0ksTTs7O0k7Rzs7SSxJLG1DOzs7OztLLE07O0c7O0ksVztJLEksd0IsYzs7O2dDLDZCOztLO0s7Szs7Rzs7SSxZOztLO0ksTTtHOztJLFc7SSxJLHFDOzs7O0s7SztLLE07O0c7O0ksVztJLEksaUQ7OztnQzs7O0c7O0ksSSxzRDs7OytCOzs7Szs7Rzs7SSxJLHNEOzs7Z0M7OztHOzs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7OzJCO1MsSTs7O3FDOzs7Uzs7O1M7Ozs7O1M7OztTLE07O0s7O0c7O0k7Rzs7SSxZOztLO0ksTTtHOztJLFc7SSxJLHlDOzs7O0s7SyxNOztHOztJLEksMEQ7Ozs7Z0M7OztHOztJO0ssSSxJOzs7O007TSxTO007TztROzs7Ozs7OztNOzs7OztJLFk7Ozs7Ozs7TyxHO1EsVztRLE87Ozs7O0k7Rzs7STtLO2E7O00sTztLOzs7OzRCOzs7Rzs7STtLLEksTyw2QjtLO1UsZ0MsSTs7Ozs7Ozs7SztNOzs7Ozs7NEI7OztHO0c7O0ksRztLLE07SSxZOzs7OztRLDhDO1E7UyxHO1UsTTtTO1UsWTtVOzthOztVLE87Uzs7Ozs7UztVO1c7VztVOzs7OztXLE07Ozs7OztROztJLDBCO0s7TSxZO007O1M7O0ssTzs7STtHO0c7d0IsdUI7O0k7Ozs7Ozs7STtJOzs7YTtPOzRCLDBCOzs7OztLO0ssTTs7Rzs7SSxJLG9COzs7d0I7OztHOztJLEksb0IsYzs7O3dCOzs7Rzs7STtLLE87SyxXOztLLFk7Ozs7O1MsRztVLE07UyxzRDtTLG9CO1M7VTs7Ozs7Ozs7O1U7Ozs7OztVLEksSSxPOzs7Ozs7Ozs7Yyw2QjtjO2E7VSxPOzs7O1MsYTs7Szs7TTtPLGdCOztPO3dCO00sTzs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1M7VTs7O2M7YyxPO2E7ZTtXO1U7Ozs7aUM7OztRO007TTs7Ozs7O1EsRyxnQzs7Ozs7O1E7USxPOzs7OztLLE07Ozs7SSxJLCtDOzs7O007OztHOztJO0k7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLLFk7Ozs7O3dCOztTO1U7VyxLO1c7OztjOzs7b0I7d0I7O2E7VyxPO1U7Ozs7Ozs7VSwwQjtVLE87OztTLGU7OztTOzs7VSxVO1M7VSxPOztTOztLLG9CO0ssTztJOztLOzs7Szs7eUIsa0M7STtLO0ssMkIsaUM7SSxPO0c7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHOztJO0ksTztHO0csa0I7O0k7OztLOzs7O21COzs7VTtVLE87UztTLE87bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTs7O2UsZTs7YztZLE87Vzs7Ozs7WSxPOzs7O1UsVztVOzs7Ozs4QixPLG9DO1UsRyx5Qzs7OztNLE87O0k7STtHOztJOztLO0ssTztJO0ksb0I7cUIsTywyQztJLEc7SztxQixPLDJDO0ksRztLO3FCLHNCO0ksVTtxQixzQjtJLFU7O3lCLE8sc0I7STtLO0ssMkIsd0M7SSxPO0c7O0k7SztLOzs7Ozs7Szs7RztHOztJLG9CO0ksYTtJLG9CO0ksYTs7SztNLFk7OztVO1E7UTtROzs7TTs7SztNLE87TTtNLE87TSxPO00sTztNLFc7SztJO0ksTztHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7O00sdUI7O0c7aUMsd0M7O0ksTztpQztHOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxvQjtJLFc7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7Rzs7STs7SyxNOztJO0c7O0k7O0s7Z0M7OztLO007O007TSxROzs7TTtNLEk7O0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7UztVO1UsTzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STtLO00sTzs7Ozs7Ozs7Ozs7OzRCOzs7Rzs7SSxJLDZCOztHOztJO0ssSSxPOzs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OzRCOzs7Rzs7SSxZOzs7SztNO08sbUI7TztNOzs7Ozs7TTs7O0k7Rzs7OztLLEcsbUM7SztNLFE7TSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsRyxpQzs7Ozs7Ozs7Ozs7TTs7SyxJLG1DO0ssRyxtQztLLGU7Z0I7SztLO00sVTtNLFU7Ozs7Ozs7Ozs7OzsyQzs7Ozs7Ozs7Ozs7Ozs7Ozt1QjttQjt1QiwrQjs7OztrQjs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7OzZDLFM7NEI7O29CO3FCLE87Ozt3Qjt3Qjt1Qjs0Qjs7O29CO3FCLE07Ozs7Ozs7Ozs7Ozs7OzBCLEs7MEI7Ozs7Ozs7Ozs7Ozt5Qjs7eUI7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Ozs7NkIsTTs7Ozs7Ozs7OytCOzs7Ozs7OzsrQjs7Ozs2QixNOzs0QixXOzRCLEssa0I7NkIsTTs7Ozs7OzBCLE07Ozs7Ozs7d0I7Ozs7Ozs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07Ozs7c0I7Ozt1QixRO3VCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7NEI7OzZCOzhDOzRCLE87Ozs7Ozs7Ozs7Ozs7NEI7OzZCOzhDOzRCLE87Ozs7Ozs7Ozs7Ozs7Ozt1QixNOztzQjtxQjtrQixPOzs7Ozs7O2lCO2tCO2tCOzs7OzttQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksMEI7SSxPO0c7O0k7SztLOztLLE07STtLOzs7Szs7O0s7Ozs7STtLO2tCO0k7SSxrQjtJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07O0s7Ozs7O00sTztNLE87OztNOzs7Ozs7O00sTTs7SztJO0ksTztHOzs7SztLOzs7O1E7USxXOztVLGtCOzs7OztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJLE87Rzs7STtLOzs7Ozs7OztJOztLOztzQjs7SyxJOzs7Ozs7O0ksVztJO0s7SztLLE87SyxrQjtLO2E7SSxPO0c7RyxtQjs7SSxXO1c7Rzs7SSxXO0ksUztJO0s7SztJLE87RztHO0k7OztRLE07TztJOzs7USxNO087STs7O0k7Szs7MEI7OztROzs7UTtNO0c7O0k7STtLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7OztTO1UsUzs7Ozs7O1c7Ozs7Ozs7Ozs2QixNOzs7O1M7Ozs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7Rzs7STtLO0s7d0I7SSxXO3dCO0ksdUI7OztLO087VTs7SyxNOztJO0c7Rzs7SSxXO0k7Ozs7TTtNLE87Ozs7STtHOztJLEs7SyxNO0k7SSxJOzs7a0Q7OztJO0ssa0I7SyxhOzs7Ozs7Szs7STtJO0c7O0k7O0ssTTs7SSxPO0c7O0k7SSxJOzs7O007TTtNO007Ozs7OztJLE87Rzs7SSxxQjtJO0k7O0ssSSxRLDBCLFU7Ozs7Ozs7OztXOzt3RDtXO1c7Ozs7Ozs7Ozs7Z0Isa0M7Ozs7Ozs7aUI7bUI7Ozs7O2tCLFc7a0I7a0Isb0I7a0I7OztpQjttQjs7a0I7bUI7O29COztvQjs7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7STtJO0k7SztLO0ssTztLLE87SyxLO0ssTztLLE87SyxRO0k7STtJO0k7SSx5Qjs7Ozs7OztNLFk7Ozs7OztNLGM7Ozs7Ozs7Ozs7O0k7SyxJLHFDOzs7OztNLDBCOztJO0c7O0k7SyxNO0s7SyxLO0ssVzs7OztLO007O1M7Ozs7O1k7Ozs7Ozs7OztZO1ksTzs7Ozs7OztNOzs7SztLOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OztrQjtzQiwrQjs7Ozs7Z0I7Z0I7Z0I7aUIsVTtpQixVOzsrQjs7O2lCOztpQjs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7O2MsRzs7Ozs7OztxQyxxQztrQjs7Ozs7OztpQjtrQjttQjs7bUI7b0M7a0IsSzttQjtvQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7NEMsUzsyQjs7bUI7b0IsTzs7O3VCO3VCLE07O3dCLFc7d0IsSSw2Qjs7Ozs7eUI7eUI7eUI7O3VCO3VCOztzQjttQjs7OztpQjs7O2dCOzs7Ozs7OztjOzs7O2UsVzt5Qjs7OztlO2U7Ozs7YTtjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztpQixXO2lCLEk7Ozs7O2tCO2tCO2tCO2tCO21CO21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7OztpQjs7O2tCLDRCO2lCOzs7Ozs7Ozs7Ozs7Ozs7Z0I7aUI7a0IsTztrQixPO2tCO3lDO2lCOzs7Ozs7b0M7aUI7a0IsTzs7b0MsbUIsc0I7aUI7Ozs7Ozs7Ozs7VTs7OztXO1c7Vzs7Ozs7Ozs7O1E7UTtRO1E7UTs7Ozs7USxLLDhCO1M7c0I7UyxTOzs7USxHO1M7O1M7O1M7Ozs7O2lEOztxRDtNOzs7O00sWTs7OztPO087TztPLEksbUIsSTs7Ozs7O087TztrQjs7OztLOzs7Ozs7SztLOzs7O0ksVztPLDBDO0ksMEI7SSxPO0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxTO0ssZ0I7Ozs7Uzs7Ozs7O1M7Uzs7VyxXO1c7VyxvQjs7VTtVOzs7Ozs7O1U7MEI7O1E7SztLOzs7O0s7SztLLE07Ozs7SSxJLFEsMEIsVTs7O3VCLE87Ozs7VSxPOztVOzs7O0ksTTtHOztJO0ssUTs7Ozs7SyxVOzs7OztJLHVCO0k7Szs7Ozs7OztLO00sTztNLEs7OztTLGtCLE87UyxPO1E7Szs7OztTO1M7VSxXO1UsTTsrQjs7OztpQzs7O1E7Szs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJOztNOzs7TyxROzs7b0I7NkI7O0s7SyxPO0k7STs7TTttQjtLO0ssTztJO0k7SyxJLGtCOztNLEksa0I7Ozs7O1c7Ozt5QjtrQzs7VTtlOzs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTsrQjtTLGE7UTs7Ozs7OztxQjtNLFM7O0ssUzs7TTtPLE87TyxPO007O0ssSztNO08sVztPLEs7TyxPO007TSxvQjtNLE87O0ssRyxpQztLLE87ZTs7STtJO0ssTTtLLE07Szs7STtLO0s7Ozs7UztTO1U7O1U7Ozs7Ozs7VTs7UTtLO0ssRztNLFM7TSxHO087USxPO1EsTztPOzs7Szs7OztLO0s7SyxNOzs7O0k7Szs7OztTLFksTztTLG9CO1M7O007TTs7Ozs7O21CO0s7TSxRO00sVTs7c0M7O087O2dDLE8sOEI7Ozs7Ozs7OzswQzs7OztTOzs7bUIsUTttQjttQixXO21CO21CLG9CO21CO29CO3FCLHNCO3FCLE87b0I7Ozs7b0I7b0IsTTs7a0I7Ozs7OzswQjs7O1M7O2tDLE8sOEI7Ozs7OztROztpQyxPLDhCOzs7OztRLEcsK0I7USxJO1E7UyxXO1k7VSxRO1U7VTtVLGdDO1UsTzs7O1E7Ozs7Ozs7Ozs7d0I7aUM7Ozs7O1MsYzs7O1UsVzs7OztlO2dCLG9CO2dCLE8sc0M7OztrQjs7Ozs7Ozs7UTtRO1M7OzthLFc7YSxXO1k7WSxPO1c7UyxRO1MsUTs7UyxzQjtTLFU7Ozs7UyxzQjtTLFU7Ozs7O1M7OztXOztZLE87WSxzQjtXOzs7Ozs7Uzs7Ozs7O2EsVzthO2EsMkI7WTtZLE87VztRO1E7UTtTLE87UyxPO1E7USxPOzs7O1M7O2tDLE8sOEI7Ozs7OztTOzs7bUIsUTttQjttQixXO21CO21CLG9CO21CO29CO3lDLDBCO3FCLE87b0I7Ozs7b0I7b0IsTTs7a0I7Ozs7O0s7Ozs7SSxXO0ksSSwrQjs7Ozs7SztLLE07OztHOztJOzs7SyxvQjtLOzs7O3VCLDBCOztLO0s7Ozs7O0s7SyxNOztHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0s7SztNO00seUI7TSxvQjtNO007TTs7Ozs7O007TSxNOzs7Ozs7O0k7Rzs7O0k7STtHO2lDLDBDOztJO0s7SztJO0k7RztHOzs7OztLO007TTtNLEk7SztJO0ksSTs7Ozs2QztLLE07Ozs7Ozs7SSxZOzs7O1E7Uyx3Qjs7OztRO1E7Ozs7YTtTLGtDOztTLE07OztROztJLE07RztHOzs7O0k7STs7OztTO1U7VTtVLEs7UztRO0ssSTs7OztNOztPLFE7O00sTTs7Ozs7Ozs7SyxZOzs7O1M7VSxVO1U7OztTO1M7OztTLEc7VTtVOzs7OztLLE07O0c7OztLO007TSxLO007SztJO0ksSTs7OztLOztNLFE7TSxROztLLE07Ozs7Ozs7O0ksWTs7OztRO1MsVTtTLFU7Uzs7O1E7UTs7MEI7O0ksTTtHO0c7Ozs7SSxJLDZCLFE7O0ssRztNLE07YyxNO0ssSSxRLDZCO0s7Ozs7TztRLFU7UTtROzs7O1E7UyxTO1M7OztPO2U7TztPOzs7TyxHOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7Rzs7Ozs7OztTLFk7Ozs7TSxJOzs7O1EsTTs7OztNLEk7Ozs7O08sTTs7Ozs7Ozs7Szs7TTtjOztVOzs7VSxNOzs7Ozs7Ozs7O0s7SyxJOzs7OztNLE07Ozs7STtlOzs7O0c7Ozs7STs7O0ssSSxVOzs7Ozs7O0s7Ozs7TTtLOzs7O08sTTs7O00sSTs7Ozs7TyxNOzs7Ozs7SSxhOzs7RztHOzs7O0ksMkI7SSxJOzs7Ozs7Ozs7O1E7OztTLFE7UztRLE07Ozs7O0ssTTs7Ozs7SztLOztNLFM7TyxNOzs7OztLLEk7Ozs7O00sc0I7TSxNOzs7SztJO0k7OztLO0ssSTs7Ozs7TSxzQjtNLE07OztLO0k7SSxPO0c7O0k7SztLOzs7Szs7Szs7Ozs7OztLLEc7TTtLLEksVTs7OzthOztTO1UsVTtVOzs7OztTO1UsVTtVOzs7Ozs7O007O0s7Ozs7TSxROztNO08sVTtPOzs7OztLO0k7STtLLFU7Ozs7OztJO0c7O0k7Szs7O0s7WSw4QjtJO0ksTztHOztJO0s7Szs7STtLLEksNkIsUTttQzs7O1E7UyxRO1MsTztRO1E7OztRLEcsbUM7Ozs7USxNOzs7Rzs7STsrQixrQiw0QjtJOztLO0s7STtJLGdCOztLO0s7STtJOzs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCOzs7b0I7a0M7b0I7cUIsUTtxQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7MEI7MEI7Ozs7Ozs7MEI7Ozs7OztxRTs7dUI7O3NCOzs7Ozs7O3lCLE87Ozs7Ozt5QjswQjsyQjsyQjs7OytCOzhCOzRCLE87MkI7Ozs7Ozs7MkI7Ozs7dUI7OztzQjt1QixlOzs7aUM7d0IsVzt3Qjt3QixXOzJCO3lCOzBCOzs2Qjs7aUM7Ozs7Ozs2Qjs0QjtpQzs7Ozs7Ozs7O3VCOzs7Ozs7O3VCOzs7a0MsTzs7b0I7bUI7aUIsTzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0IsTztnQjs7OztxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJO0s7O0ksTztHOztJO0s7OztLOzs7Szs7OztJLCtCO0k7Ozs7O00sd0I7O0s7Ozs7OztNLFE7TSxVOzs7Ozt5Qjs7OztZLE07Ozs7Ozs7TSxNOztLLEksdUQ7Ozs7O007c0I7O0k7SSxPO0c7O0k7STtHOztJOztJLEksbUM7O0k7O0s7TTs7OEI7TTs7Ozs7OztNO00sTTs7O0k7STtLO0ssMkIsdUM7SSxPO0c7O0ksSTs7OzZCOzs7STtHOztJO0k7SyxXO0ssVztLLFk7Ozs7UztVLFc7OzswQjs7OztTOztVLFU7Ozs7VSxPO1Usa0I7O1U7VyxPO1csTztXLFM7VyxRO1csTztXLE87VTs7UywwQjtTO1MsZTtvQjtTLEksTzs7O0ssMEI7SyxPOztHOztJO0k7STs7Rzs7STs7SztLLE87Ozs7aUI7ZTtJO0ksTztHOztJLEksTywwQjtJO0ksSTs7Ozs7SztLLE07OztLLE87STs7Ozs7O0ksTTs7OzthOztHOztJLEk7OztxQzs7O0k7Rzs7STs7STs7STtHOztJOztLOzs7TSxTO00sUzswQjs4QjtLO0k7SSxPOzs7OztjO0c7O0ksRywrQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7VyxLOzs7Ozs7TTtPO087TSxHOzs7TyxlOztRO1E7UyxVO1MsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjtlOztzQiwrQjs7OztjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YyxLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Z0I7aUIsOEI7aUIsVTs7Ozs7O2M7ZSxPO2UsMkI7Ozs7ZSxPO2lCO2UsVztlOztxQjs7Z0I7MkI7Yzt1QjtjO3VCO3FCO2UsVztlOzs7OztpQjs7Ozs7OztnQztrQjttQixRO21CLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1Qjt3Qjt3Qjs7Ozs7Ozt3Qjs7Ozs7O21FOztxQjs7Ozs7Ozs7Ozs7Ozt5QjswQjswQixXOzZCOzJCOzRCOzsrQjs7bUM7OzJCOzs7K0I7OzJCOzs7OytCOzhCO21DOzswQjs7Ozs7OzswQjs7Ozs7Ozs7O3VDOzs7O3FCOzs7O21COztrQjs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7Ozs7Ozs7Ozs7O2M7ZTtnQixPO2dCLE87Z0I7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJO0s7O0ksTztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7c0M7Ozs7Uzs7Ozs7O1UsTztVLE87Ozs7VTs7YTs7OztVOzs7UztVO1U7Ozs7Ozs7VTswQjs7UTtLLE87Ozs7STtJLFc7O0s7STtJO0s7SywyQixPLDRCO0ksTztHOztJO0c7O0k7STtLOzs7a0I7Szs7Ozs7O0ssTTs7O0c7O0ksSTs7OzhCOzs7STtHOztJO0k7SztNLFc7TSxjOzs7OztNLEk7OztrQyxNOzs7Ozs7Szs7RztHOztJLEk7O0s7SyxJLFU7Ozs2Qjs7OztLOzJCOzttQjtzQjtLO0k7SSxJLFM7O0s7SyxHLHlDOztLO0k7STtLLFc7OztLO0ssSSxVOzs7NkI7Ozs7d0I7c0I7SztJO0k7SyxXOzs7SztLLGlCO007SztJO0ksTztHOztJOzs7Ozs7OztVOzs7Ozs7OzthOztjOzs7aUI7aUIsSSxVOzs7O21CLE07Ozs7O2lCLEk7Ozs7OztrQixNOzs7Ozs7OztpQjtnQjthOzs7OztpQjtpQixJLFU7Ozs7bUIsTTs7Ozs7aUIsSTs7Ozs7O2tCLE07Ozs7Ozs7O2lCO2dCO2E7Ozs7Ozs7Ozs7OzthLEc7YyxJOzs7Ozs7ZSxNOzs7Ozs7Yzs7Ozs7TyxNOzs7TTs7Szs7Ozs7Ozs7TSxNOzs7Ozs7O0k7STtLLFE7SyxRO0s7SSxXOzs7STs7SyxPOztJOztLLGE7SyxVO0ssVTtLO0s7SztLO0k7STs7O0ssSTs7Ozs7O007Ozs7Ozs7STs7OztJO0ssUTtLLFE7SztJLFc7STtLO007TSxhO007TTtNO007SztLO0s7TSxLO00sSzs7TSxNOzs7O1MsSSxvRDs7Ozs7O1UsTTs7Ozs7Ozs7UTtLO0s7Ozs7O1U7VSxJLFU7Ozs7WSxNOzs7O1UsSTs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtTO007Ozs7O1U7VSxJLFU7Ozs7WSxNOzs7O1UsSTs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtTO007Ozs7Ozs7SztNLHlCLDBCO00sYztNLE87TTs7cUI7Szs7Ozs7O0s7OztHOzRCLHlDOztJOztpQzs7Szs7STtHOztJOzZCLG1CLDBCO0ksTztHOztJO0k7ZTs7aUU7OztHOztJLE87Rzs7SSxJLFUsNkI7O0ssTTtJLG1CLFU7Ozs7O00sRyw2Qjs7O0ksTTtHOztJO0ksTztHOztJLFk7O2Msc0I7O0s7Ozs7a0I7TztRO1MsTztTLE07O1E7UTs7OzsrQjs7OztPOzs7O1EsSztPLDJCO087UTtROzs7UTs7O1E7Tzs7TyxzQixPO08sNkI7TztRO1E7O1c7O1EsVTtRO08sYTtpQztPLHFCOzs7Tzs7Ozs7UTs7Ozs7OztRO1MsYztTOzs7VTtXOzs7VTtXOzs7Ozs7O1ksTTs7O1UsYzs7Ozs7WSxHO2EsMEI7YSxHO2MsTTthO2E7YztjLGtCO2M7Yzs7O3NCOzs7Ozs7O2EsSztjLE07OztjOzs7YTthLEk7Ozs7ZSxNOzs7YTthOzs7O1UsTTs7UyxNOzs7OztTO1U7OztTOzs7TyxxQixPO08sNkI7TztPO1EsSSxPOztTO1M7VTtXO1c7Ozs7Ozs7UTs7OztZO2EsUTs7O1k7Ozs7Ozs7VztTLE87UztROztnQzs7NkI7OztROzs7OytCOzs7O08scUIsTztPO1E7Uzs7UztTOzs7UTs7Tzs7Tzs7OztROzs7UTs7O1E7Tzs7OztPLG9CLE87TyxpQztRO1M7O1M7Uyw4Qjs7O1ksOEIsUTs7Ozs7bUM7O2E7O2M7Ozs7Ozt5Qjs7O3dCOzthOztZLE07VztTLFc7Uzs4QjtTO1M7K0I7UyxPO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RyxlOztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCOzs7O3FCOztvQjtpQixPOzs7Ozs7Ozs7Ozs7Ozs7O2tCLEcsaUM7Ozs7Ozs7Ozs7Ozs7OztpQixzQjtpQixHO2tCO2tCLEc7bUI7Ozs7aUI7a0I7OztrQjs7O2tCOzs7O2lCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QjtzQzs7OztpQjs7O2tCOzttQjs7Ozs7O3VCO3NDOzs7Ozs7cUI7cUI7O29CO2lCLE87Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUIsVTs7OzttQixVOzs7O21COzs7O21CO21CO21CLFU7bUIsVzs7Ozs7Ozs7Ozs7eUIsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjt5Qjs7Ozs7Ozs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCOzs7Ozs2Qjs7NEIsTTsyQjtnQzs7Ozs7Ozs7Ozs7eUI7OzswQixROzBCLFU7dUQ7Ozs7Ozs7Ozs7OzZCOzs7Ozs7Ozs7Ozs7Ozs0Qjs7Ozs7Ozs7MkI7O3lCLE07d0I7NkI7Ozs7bUIsTTs7a0I7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7Ozs7c0Isa0M7c0I7OzhCOzs7cUI7bUIsVTs7O21CO29CLGE7OztxQjs7OzswQjswQjt5QjtzQjs7Ozs7OztxQjt1QjtzQjtpQzs7OztvQjtvQixNOzs4Qjs7a0I7Ozs7O21COzs7Ozs7Ozs7Ozs7UTs7OztRO1MsSTs7Ozs7OztPO1EsSTs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPOzs7O2M7OztlLFE7OztjOzs7Ozs7ZTs7Yzs7ZSxPO2UsTztlLE87Yzs7O3VCOzs7O2E7VyxPO1U7Ozs7O1c7Ozs7TztRLEksUTs7Ozs7Ozs7O21COzs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTLEk7Ozs7OztLOzs7O0k7O0k7STtJO0ssVzs7TTtNLEksaUQ7Ozs7USxrQzs7O0s7SyxPLHdDO0c7O0ksSSxRLDJCLE87Ozs7UTs7UTs7Ozs7UztRLE87O1E7OztRLE07O0ksTztHOztJLEksUSwyQixPOzs7O1E7OztTO1EsTzs7UTs7UyxROzs7Ozs7UyxPO1MsTztTLE87UyxXO1EsTzs7O1E7O0ksTztHOztJLFk7O0k7RztHO0k7STs7STtJO0ssRyw0QztrQjtLLFk7Ozs7UztZO1UsTTs7OztTO1U7VyxzQjtXLE87VTs7Ozs7VTs7Vzs7OztXOzs7OztZLE07Ozs7OztrQiw0Qjs7OztTOztVLHNCO1M7UyxlO29CO1MsSSxPOzs7SywwQjtLLE87O0c7O0k7STtLOztLO0s7Ozs7OztLOztHOztJO0ksb0I7SSxXO0ksUzs7STs7O1E7O1M7UyxzQjtRLE87O1EscUI7UTs7O1M7Uzs7O1U7Ozs7YztjO2E7VyxPO1U7Ozs7O2U7ZTtjO1csTzs7Ozs7UTs7USxtQztRLFM7OztHOztJLGU7ZTtpQjtJLFM7OztLLEssNkI7TSxjOzs7O1E7Ozs7UztXO3NDO1E7Ozs7TSxNOztLLFk7Ozs7O1Msa0M7Ozs7O1csa0I7WTs7WSxjOzthOzs7Ozt3Qjs7Ozs7Vzs7UyxZOztVO1c7OztXLE87VyxPO1U7Ozs7Uzs7VSxVOzs7Ozs7OzthLGdDLFE7Ozs7Ozs7O2lCOzs7O2tCOzs7O3NCO3FCO3FCLE87OztvQjtrQixRO2tCLE87b0I7a0I7bUIsTzswQjs7Ozs7Ozs7OzthO1k7VSxXOzs7YTswQjtZO1UsTzs7O2E7YSxPO1k7VSxXO1U7Z0I7Uzs7OztJLG9CO0ksTztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7STs7OztJLFk7a0U7SSxJLFcsMkM7Ozs7SyxJLE8sMkIsTztLO0ssVzs7Ozs7OztVO1csYzs7O1ksTTs7VztZOztZOzZCO1ksYzs7Ozs7OztXO1k7YSxPO2EsSTs7Ozs7YTs7Ozs7O2EsTTs7Ozs7OztVLGtDOzs7VyxHOzs7WTs7YTs4QjtpQzs7Ozs7Ozs7VSxtQixPO1U7VyxVO1c7VyxJOzs7OztXO1c7WSxXO1k7O2lCOzs7OztZOzZCO1ksUTtZLFU7Ozs7O2EsRzs2Qjs7Ozs7Ozs7Ozs7O1UsRztXO1k7WSxVOzs7WSxNOzs7Ozs7O2U7Ozt3Qjs7Ozs7TTs7TyxzQjtnQjs7SztLOztHOztJO0s7SztLOzs7Ozs7SztLLE07O0c7OztJO0s7OztNLHNCO00sUzs7O007OztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOzs7TyxzQjtPLGdCOzs7O0s7OztNLHNCO00sTztNOztNLHNCO00sVztLO0s7Ozs7Ozs7Ozs7O0s7Ozs7OztLO0ssTTs7Rzs7Ozs7OztRLEs7Uzs7O1U7O1Usc0I7UyxjOzs7OztROzs7OztZO1k7VztTLE87Ozs7WTtZO1c7UyxPO1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7OztJLG9CO0k7OztROzs7Ozs7OztJO0k7Rzs7SSxHO0ssTTtJOzs7Ozs7Szs7O0ksb0I7STs7O1E7Ozs7Ozs7STtJO0c7O0ksUztJLEcsMEM7SSxJLDhCLFE7O0s7O00sTzs7O1MsbUIsUTs7Ozs7O1k7O2Esc0I7WSxPOzs7O1M7UTtLO0ssMEI7SyxPOztJLG9CO0ksTztHOztJO0ksb0I7SSxPO0c7O0k7SztLO0ssUTtLLFU7Ozs7O0ssTzs7STtHOzs7SSxZOzs7OztRO1MsSSxZLDZCO1M7Ozs7Z0M7Ozs7O1EsRztTO1UsTzs7O2Esa0IsUTs7Ozs7OztjOzthO1k7UyxLLHlDOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzt5QixPOzs7TyxPOzs7TyxPOzs7OztzQixjO3FCLFk7NkIsd0I7Rzs7STtHOztJLFc7SSxPO0c7O0k7O087O087O087O087O087ZTs7Rzs7O0k7O087O087O087O087O087ZTs7Rzs7STtJLE87Rzs7SSx1QjtHOztJO0k7OzttQzs7bUM7O21DOzttQzs7bUM7OztLO0s7Ozs7NEI7OztHO0c7O0k7SztLLFk7SyxXOztLOztNOztPOztPOzs7Ozs7O0k7Rzs7SSxpQjs7O0c7O0ksVztJLE87Rzt5QiwrQzs7STtJO0ksVzt3QjtJLFcsVztJLE8sVztHOztJO0ssTztJO0k7SztLLFE7OztJO0s7STtLLE87STtJO0ssTztJO3FCLHVCO0k7SyxhO0ssb0I7SyxVOztLOztNO007TTtLO0s7STtJO0k7SyxZOzs7TSxPOzt5QjtLO00sTztNLE87SyxPOzs7Ozs7Ozs7OztJLE87Rzs7SSxXO0c7RztzQix5Qjs7O3lCLHNCO3FCO0ksbUI7Rzs7SSxJLGUseUM7Ozs0Qjs7O0c7NkIsTyx5QztHLFU7O0k7STtHOztJO0k7STtHO0csSSx1Qzs7STtLLFc7SyxPO0k7STs7Ozs7Uzs7SSxPO0c7O0k7OztNOztPLE87Yzs7O0s7TSxXO007TztRO1EsTTs7Ozs7TyxJLGU7O29CO087Ozs7Uzs7VTs7O1M7UzswQjtTOzs7UyxHLGlDO1M7O1U7OztVOzs7UztTO1U7OzthO2E7WTtTO1M7O3NCO1M7OztTLFM7UztVOzs7VTs7c0I7Uzs7OztJLFc7Rzs7SSxXOztPOzs7Szs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7Ozs7NEIsTSwwQzs7TTs7Ozs7Ozs7OzttQztJO0c7OztLO0s7SztJOztHOztJO0ksTztHO0csbUI7O0k7STs0QjtLLFUsZ0M7TTtLLEk7O0c7O0k7O087O1EsTztRO3FCO087O1E7VTs7Ozs7USxPO1EscUI7TyxJLFk7OzsrQjs7OztPOzs7UyxJLFU7Ozs7Ozs7OztVLHVCLE87VTs7Ozs7O1E7Ozs2Qzs7TyxzQztPOztHO21EO0c7O0k7OzZCOzs7Ozs7OztVOzs7VyxPO1U7Yyw0Qjs7Ozs7OztzQzs7Ozs7O087OztTO1U7VztXLE07Ozs7O1UsSSxlOzJCOzs7Ozs7OztZOzs7YTs7O1k7WTtZOzt5Qjs7Ozs7Ozs7UTs7OztRO1MsVztTLEs7VTs7OztPOztPLG9DO087Ozs7STtHOztJO0ksTztHOztJLE87Rzs7STtJLG9CO0k7SyxRO0ssTztJLE87Rzs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOzs7c0IsTyxnRDtLLE87STtJLE87O0c7O0k7STtxQzs7O007Ozs7Rzs7SSxZLE87O0ksTzs7O0ksOEI7eUM7O0ksTztHO0c7O0k7STtLLEksSzs7OztNLEc7TSxJOzs7SyxPOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxzQjtHOztJO0ssTzs7OztPLE87O087Ozs7O1EsTztRO08sTzs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztRO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7Ozs7O1c7c0IsTzs7VyxPOztVO08sTzs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXLGEsTzs7VyxPOztVOzs7VztXLE87VTtRLDRCO08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87OztPLE87Ozs7Ozs7OztPOzs7OEI7USxPO08sTzs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7OztNLFEsTzs7TSxPO0s7SyxPOztJO3lCLE8seUM7O0ssWSxPOztLLE87STtJLE87Rzs7STs7STs7OztHOzs7SSxnRDtJO0c7O0ksYzsrQjs7O0ssVzs7SSxnQixPO0ksTztHO0c7STtJO0k7STtJOztJLFEsTTs7SSxPO0c7O0k7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1ksc0I7WSxLO1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7O0c7O0k7O087O1EsUztRLEk7OztRLEcseUM7OztPOztPLGtCO087O087OztROzs7Tzs7Rzs7STtLLFk7SyxPO0k7Yzs7Rzs7STtJOzs7Ozt3Qjs7O0s7OztTOztVOzs7OztTO1U7VyxJO1c7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztRO00sTzs7OztJO0c7O0k7STtJOztLLDJCLGdDO0ksTztHOztJLFk7SSxvQjtJLE87Rzs7STs7MEIsVzs7d0M7O08sb0M7Tzs7Rzs7SSwrQjt1QjtJO0s7Ozs7SyxRO0s7OzJDOztjLE07Ozs7O1U7O1csb0I7VyxHLGtEOztVOztXLEk7VyxPO1csTzs7O1c7Ozs7YTs7Ozs0QiwyQztjOzs7aUI7aUIsTztnQjtjLE87YTs7O2M7ZTtrQyxPLCtCO2UsTztjO2U7Z0IsTzt1Qjs7Ozs7Ozs7Ozs7O1U7O1M7TTs7STs7Ozs7Ozs7Ozs7Ozs7TTtPO1EsTzs4QjswQjs7Ozs7SyxJLEk7Ozs7OztLOztHOztJLFc7SSxPO0c7O0ksVztJLFc7STtpQzs7O0k7Rzs7SSxpQjs7SSxXOztLLGtCLFE7O00sZ0MsTztNOzt3Qjs7Ozs7O0s7STtJLE87Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87OztrQjs7O1k7OzswQjswQjtXO1EsTzs7O2lCLDRCO1EsTzs7USxvQixVOzs7UyxzQixPOztRLE87O0ksTztHO0c7STtJO0k7STtJO0k7STtJOztJO0ssTTtLO0ssVztlOzs7Ozs7Ozs7Ozs7Ozs7YSxPOzs7Ozs7UTs7STtHOztJO0k7SyxJLFc7Ozs2Qjs7Ozs7Rzs7SSxXO0k7OztLOzs7O1M7UyxPO1E7TSxPO0s7Ozs7STtHOztJOztNO08sTztPLE87TyxPO2M7O007TyxPO2M7SztLLGlDOztHOztJO0s7TSxPO00sTztLO0s7O087d0I7TTs7O0c7O0k7SSxJLFcsNEM7Ozs7SztNLFc7TTs7Ozs7Ozs7Ozs7Ozs7WSx1Qiw0Qjs7Ozs7O2lCO2lCLE87Z0I7YSxLO2EsVzsrQjs7Ozs7O2tCOztNLEc7O007OztHOztJLEksUSw4Qzs7SztLLFc7STtlOztHOztJLDBCOzs7STs7Szs7O1M7OztRO0ksTztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJOzs7RztrQywwQzs7SSxZOzs7OzBCOzs7O1E7O0k7Rzs7STtJO0s7SyxHO007SztNLE07TTtNOzs7OztTOzs7OztTLEc7VTtTLFk7Ozs7Ozt5Qjs7NkM7Ozs7O1M7UztpQzs7O0s7NkI7O0c7MkIsNkI7NkIsbUIsc0I7O0k7Ozs7O0c7O0k7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87RztHOztJO0k7TTtXO0s7TTttQztNO0s7OztLLEksTSw4Qjs7OztTO1U7VTs7OEI7O1M7Ozs7O1UsMEI7OztTLEc7VSxjOzs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7O1M7OzZCOztTOzs7VTs7O1U7O1UsNEI7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7Uzs7OztjOzJCO2E7c0I7OztTOzs7YSxrQixROzZEO2E7WTtVLFU7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDO1csaUM7Vzs7OzttQzt3QjtXOzs7Uzs7OztvQztVOzthLGdDLFE7MkM7Ozs7Ozs7ZTs7Ozs7OztlOzs7YTs7VSxXO1M7Ozs7aUM7d0I7Uzs7Uzs7O3dCOztTLGdCO1M7VSxRO1U7UztTO1Usc0I7VSxLO1U7Uzs7Uzs7Uzs7Ozs7YTs7O2M7YyxPO2EsVztZO1UsTztTOztLO0k7SSxHO0s7O00sc0I7a0I7O0k7SztLO0s7O0k7Rzs7SSxvQjtJLE87Rzs7STtLO00sVTs7Ozs7O1M7c0I7UTtNLGlCOzs7UztTLE87UTtNLGdCO007OztLOzs7Z0IsTztJOzs7O0s7SztLOzs7SSxZO0ksTTtHOztJO0s7Ozs7O007TTs7O0s7O0ksYzs7Ozs7Ozs7Ozs2Qjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7Rzs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0k7O0ssSSxPLDRCOzRCO0s7SztJO0ksTztHOztJOztLLFc7SyxPO21COztJO0ksYTtJLE87Rzs7STs7SyxPOzs7cUIsMEI7SSxPO0c7O0kscUM7O0ksZTtHOztJLFc7d0IsNEM7STtnQjs7STs7YyxJLDhCO2M7YTtHOztJLEk7SSxXO0c7O0k7STtJO0k7SSxPO0c7O0k7STtJO0ksTztHOztJO0k7SSxJLGlDOztLOztNLE87OztTLFcsVztTO1U7VyxPO2tCOzs7UyxjO1E7Szs7STtJO0k7OztLLHVCLFU7Ozs7TyxzQixVOzs7Ozs7O1UsRztXO1ksVzttQjs7Ozs7Ozs7Ozs7O0s7Ozs7O0k7Ozs7NEMsMEI7Szs7Ozs7OztTOztRO0s7OztLLGtCOztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCLDJCO2M7OztJLEk7O0ssYTtLLHNCOzs7TSxXO007Ozs7O1M7VSxPO2lCOzs7Ozs7Ozs7Ozs7OztLO00sVTs7O007O0s7STtJLFc7O0s7Ozs7OztLO0k7STtLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Ozs7Ozs7OztjOzs7Szs7Ozs7TTs7Yzs7OztJOzs7Ozs7YTs7OztHOztJO0ksTztHOztJO0ksTztHOztJLG1COztJOztjO2U7ZTtjO2E7Rzs7STtJO0ssVTtLO0k7STtJO0k7STs7Szt5RTtLO0k7STtLLGM7SyxPO0s7OztLO0k7Ozs7Ozs7STtHOztJO0ksTztHOztJO0k7STtJO0ssTztLOzs7SSxPOzs7Ozs7Rzs7STtLLE87SztLO0s7Ozs7K0I7Ozs7O0k7Rzs7STtJLE87Rzs7SSxZOzs7Szs7STtHOzs7STs7Ozs7OztROzs7UyxNO1M7UztROztVO2E7UyxXO1MsSztVLE87Ozs7O1EsdUI7USxHO1M7Ozs7OztpQyxrQix3QjtROzs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztTO1M7Ozs7O1E7O1M7Uzs7O1M7OztZO1k7VztTLFM7Uzs7OztZO1k7VztTLFc7UyxhOzs7WTtZOzs7Ozs7O1c7UyxTO1M7Ozs7WTtZO1c7UyxZO1MsYzs7O1k7Ozs7O2E7OzthO1ksYTs7WTtXO1MsUztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssTztLOzs7Ozs7STtHOztJO0s7SztPO1U7O0k7RztHLHFCOztJO0k7STtJO0ksZTtJO0k7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STtJLHlCO0ksSSxPLDhCOztLOztJO0k7SyxtQjtLOzs7Szs7STtJO0ssb0I7SztLO0ssTztLLE87SyxPO0s7STtHOztJO0ksTztHOztJOztLO0s7SztLO0ksaUI7SSxXOzs7Ozs7Ozs7O0k7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CO0ksb0I7STs7O2UsYztnQixXO2dCLE87O2U7YztjLE87Ozs7Rzs7SSxXO0ksTztHOztJO0k7O3lCOztPLG1CO087Ozs7OztTOztVLFE7O3FCOztTLEksc0IsVzs7Ozt1QyxTO087OztRO1E7O2dDO087bUM7Ozs7O0s7O007MEI7TSxPO0s7SyxPO0k7SSw4QixXO0c7O0k7SyxPO0ssYTs7Szs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7Ozs7Vzs7O2M7OzhDOztjO2E7VyxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPO007TTtPLFE7Tzs7TyxrQjtPOzs7O087a0Q7O087TTtNO08sTTtPOzs7O1ksTztXO00sVztLO0s7TSxNO007TTs7O1U7UztNLFE7OztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7STs7Szs7TSxvQjs7SyxPOztJO0ksTyxXO0c7O0ksTztHOztJO0ksTztHOztJO0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7O0ksTzs7Ozs7Ozs7OztJLG9CO0ksVztJLE87Rzs7O0ksRywrQjtJO0k7OztJOztLLE87OztJLE87Ozs7Ozs7Ozs7SSxZOztnQjs7SSwwQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSyxrQyw4QiwrQyxVO0k7OztJOzt5Qjs7OzRDOzs7STtHOzs7SyxPOztROztvQjs7SztJO0ksUzs7SSxnQjtHOztJOzhCO0c7Ozs7bUI7Ozs7TTs7O007Ozs7O0c7STs7NEIsTyx5QztJLGlCOztJLFk7O0s7O00sVTs7Ozs7O0ssZTtLO00sTztNLE87TSxXO00sTztLLE87O0k7Rzs7STs7O0s7STtzQztJOzsyQixPLDBDOztJLE87RztHLGlCOztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87Ozs7Szs7UTs7OztTOztTLFE7UyxVOzs7UztVOzttQixPO2tCOzs7O1M7VTs7bUIsTztrQjs7UTs7OztTLFc7Ozt5QixXOztXOzs7a0M7WSxPO1c7bUI7Ozs7Ozs7OztnRDs7Ozs7a0I7aUM7OztZOzs7ZTs7Ozs7Ozs7O1k7O2E7YSxPOztlOztXO21COzs7Vzs7OztZLE87VzttQjs7Ozs7Ozs7O1csa0IsTztXO21COzs7Ozs7Ozs7OztTLFc7OztTO2lCOzs7USxXOzs7Ozs7Uzs7O1k7Ozs7Ozs7Ozs7OztXO1c7OztjOzs7Ozs7Ozs7OztrQzs7Ozt1Qjs7Ozs7VyxXOzs7VztXO21COzs7Ozs7OztXLFc7OztXO1c7bUI7Ozs7Ozs7Ozs7USxXOzs7UTtRO1EsYzs7Ozs7WTs7cUI7cUI7cUI7cUIsTzs7Ozs7Ozs7b0I7O1EsMEI7O0k7SSxPO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSw2Qjs7OztPLE87Ozs7STtHOzs7STtJOzs7cUQsUztJOzs7O2M7O2U7ZTtjO2M7ZSxVOzs7ZTs7O2dCLE87ZSxXO2M7YyxXOzhCO2M7ZTs7O29CO29CO21COztlO2M7ZSxNOztjOztlO2dCOzs7Z0I7O2lCOztvQjs7O3FCLFE7Ozs7O3FDLG1COztvQjs7NEI7OztlO2dCLE87Z0IsTzs7Z0I7O2lCO2tDO2lCLE07O21COzs7Ozs7Ozs7O2dEO2U7Z0IsTztnQixzQjs7Ozs7Ozs7ZTtnQjtnQjt1QztlOzs7Ozs7Ozs7a0I7O2dCO2dCOztlOzs7Ozs7OztlLE07O2E7Rzs7O0k7Szs7O0k7Ozs7Szs7STtLOzs7SSxjO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7Ryw4Qzs7O0ksWTs7STs7O0k7OztJLG1CO0kscUI7SSxvQjtJLFc7Rzs7SSxxQjtJLG9CO0ksVztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7ZTs7Ozs7Ozs7O2M7O2UsTztjOzs7bUI7YyxvQjs7YztlOzs7Ozs7Ozs7YyxPOzs7Ozs7OzthOzs7STs7OztjO2M7YztlLE07O2U7O2tCOztlLE87Ozs7Ozs7Ozs7O2MsaUI7YyxPOzs7Ozs7Ozs7O2E7Rzs7Ryw4QjtHLGlDOztJO0c7O0k7OzZCLCtDO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87O087OztRLG9CLE8seUM7NEIsTyx5QztPLE87Ozs7Ozs7O1csTzs7Ozs7Ozs7O1U7TyxPOztPOzs7USxvQixPLHlDOzRCLE8seUM7TyxPOztPOzs7O1Esb0IsTyx5Qzs7d0IsTyw4QztPLE87O087Ozs7USxvQixPLHlDOzs7VyxPO1U7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O0ksWTs7OztNLHVCO00sTztLO0ssTztJO0ksdUI7SSxPOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGlCOztJLEksNEIsOEI7Ozs7NEI7OztHOztJLGlCO0ksZ0I7SSxPO0c7O0ksTztHOztJOzs7Tzs7USxPO1E7TyxXOzs7Ozs7OztVLFk7VTs7Ozs7Ozs7VTtXLE87VyxVO1U7Ozs7Ozs7O0k7Rzs7OztnQjs7Ozs7UTs7OztTLHFCLE87UyxHOzs7Ozs7Ozs7OztTOztVLGtCO1UsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7UTs7UTs7Ozs7OztTOzt3QztTLFE7UTs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs0Qjs7Ozs7USxZO1E7Ozs7O1E7OztROzs7OztJO3FCO2tCOztJO0c7OztJOzZDO0ksTztHOztJOzs0QztJLE87Rzs7STs7Tzs7d0I7OztPO2U7O0c7O0ksUzs7O0s7Ozs7Ozs7TTs7O007Szs7Ozs7STtHOztJO0k7OztRLGtCLFE7b0I7O1EsSSxnQjs7OztVLE07Ozs7OztROztTLFE7UyxVOzs7UyxzQjtTLFk7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztRLEk7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7O1Msc0I7Uzs7O2dCOztROzs7OztlLE07UTs7OztPLGlCOzs7TyxpQjs7OztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTtJLEksZ0I7Ozs0Qjs7O2lDO0k7SyxPO0ssVTtLLE87SyxTO0ssUTtJLEk7Ozs0Qjs7O0ksZ0I7STs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksaUI7O0k7Szs7O1E7Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7K0I7Ozs7OztnQjs7O0ksVztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRO1MsUTs7Ozs7O1E7Ozs7RztxQyx1Qzs7Ozs7OztRO1MsWTtxQixNO1Msb0I7Uzs7Ozs7VSxNOzs7O1E7O1M7O1k7Ozs7Ozs7Ozs7O3VDOzs7O2EsTTs7WTs7USxPLFc7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7OztROzs7UztTO1MsTTtTO1MsTTtRLE87O0c7O0k7STtLLEksYyx1Qzs7Ozt1QjtNLDZCO00sRywrQjtNLEk7O0c7O0k7OztJO0s7TSxtQzs7Ozs7Ozs7SSxPO0c7O0k7SztLLFE7Ozs7Ozs7O087USxRO1E7VTs7Ozs7Ozs7Rzs7SSxTOzs7Ozs7Ozs7Ozs7Ozs7O1MsRzs7Ozs7Ozs7Ozs7O087OztZO087Ozs7O087OztpQjs7d0I7O0c7OztLLEksNkIsYTs7OzRCOzs7STs7STtHOztJO0s7TTtNO007OztTLG9CO29COztROzs7Uzs7Ozs7Ozs7O2lCLG1CO2lCOztrQjtrQixtQjs0Qjs7Z0I7YSxPOzs7MkI7Ozs7UztROztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7O1M7UyxPO1E7TSxPO00sMEIsTyxrQztNLDhCLFc7O0s7Ozs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STtJLFk7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7SyxVO0s7Ozs7Ozs7Ozs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7VTtVLFM7VSxROzs7VyxNO1UsTTs7Ozs7Ozs7Ozs7OztVLEc7VztZO1ksTTtrQjs7OztTLE07O1M7OztVOzs7YTtjLE07YyxNO2EsTztZO2dCOzs7Uzs7VTtnQjs7O1M7OztVO2dCOzs7Uzs7OztVO2dCOzs7Uzs7OztVO2dCOztLO0s7O0c7O0ksTztHOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXLEk7Ozs7Ozs7Ozs7OztvQjs7TSxNOztLO0s7OztLLE07STtHOztJLFk7O0s7TSxPO00sVTs7d0M7Szs7STtHO3VDLDRCOztJO0c7O3VCLE8seUM7STtnQzs7Szs7TSxxQixPLHlDOzJCLE8seUM7SyxPOzs7cUIsTyx5QztJO0s7O1E7O1E7O1E7Z0I7O0k7Szs7TTtNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxtQixPLHlDO3VCLE8seUM7SSxPO0c7O0k7Ozs7USxPOztPOzs7O1E7O1c7O1k7O1c7O1k7WTtZLE87VyxPOztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7TyxXO08sTzs7O08sVztPLE87OztHOztJLHdCLE8seUM7SSwrQixTOztLOztNLE87SyxPOztJO0s7TztLLE87SSxPO0c7O3FCLE8seUM7SSw0QjtJOzsyQjs7O087OztPOztRO1E7USxPO08sTzs7Tzs7UTtRO1EsTztPLE87O0c7O0k7Ozs7USxPOztPOzs7O1E7O1c7OztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sVztPLE87OztPLFc7TyxPOzs7Rzs7cUIsTyx5QztJLFU7O0k7Szs7STtLLE87SyxPO0ksTztHOzt1QixPLHlDO0k7Ozs7UTs7UTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7TztPOzs2Qjs7OzsyQixPLHlDO087UTs7Vzs7O1k7VyxPOzs7VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTyxXOzs7Tzs7O087O1E7OztPLG9CO08sTztnQjs7Ozs7O087OztPLHNCO08sTzs7O087O1EsVTtPO2lCO2lCOztHOztJOztLOztJO0ssTTtLLE07SSxJOzs7OztLOztJO0c7O0k7Ozs7O0k7OztPOzs7OztRLE87TyxHLHFCLHNDO08sVztPOzsrRDtPO1E7UTs7Ozs7Ozs7MEI7Szs7RztHLEk7OztJLGU7O0k7OztJOztPOztPOztPOzs7O0c7bUIsbUM7O0k7Szs7Ozs7O00sUTtNLFE7SyxHOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7OzJCLG9CO0ksTztHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHLEk7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7Vzs7O2U7ZTtjO1ksTztZLFU7OztXO1k7YSxPO2EsTztZOzs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7O1Msa0I7VSxlO1UsSztXLE07VTtXLE87VyxPO1csUTs7OztXLGM7VyxjOzs7VztXLGM7Ozs7Ozs7Ozs7Ozs7Vzs7O2Usa0IsUTsrRDtlO2M7WSxVO1c7Ozs7Vzs7WTs7YTs7Ozs7O2MsVTtjLFU7Ozs7Ozs7Ozs7O2dCLFc7bUI7aUI7a0IsUTtrQixROzs7Ozs7Ozs7Ozs7Ozs7OztlOztpQjs7O2tCO2tCOzs7Ozs7Ozs7Ozs7Yzs7Z0I7OztpQjtpQjs7Ozs7Ozs7Ozs7Ozs7WSxJOzs7Ozs7Ozs7Ozs7Ozs7eUI7O1U7Ozs7Ozs7O00sYzs7Ozs7Ozs7c0M7Ozs7O3NDOzs7Ozs7Ozs7O0k7O007O007TyxPO08sTztNOzs7Ozs7O0s7O0k7Rzs7STtJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7UTs7dUI7OztTOztVLFE7VSxVOzs7O2EscUIsTzthLEc7OzthLHNCLE87YSxHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7O087UTtTOztZLFc7WSxPO1c7O1E7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7TztRO1M7O1ksVztZLE87Vzs7UTtxQjs7Tzs7O1EsTztRLE87Ozs7O1k7YSxPO2E7ZSwwQjtZO2EsVzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7WTtXO2dCOzs7Tzs7O1E7UyxrQixtQztTOztZOzs7Ozs7YSxRO2EsUTtZLEc7Ozs7Ozs7YTs7WTs7Ozt3Qjs7WTs7OztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQjs7OztJO0ssYzs7Ozs7Ozs7O0ksZ0I7STs7Ozs7O0ksb0I7STtLOzs7SyxPOzs7SztLLG1CLGdEO0s7TSxROzs7TSxVOzs7OztNLEksc0I7O00sbUI7Ozs7O2dCO0s7TSxVOzs7OztNLFU7Ozs7O007SztNO007TyxJLG9COzs7Ozs7SztJO0ksTzs7O0k7O0s7O0k7SyxNO0ssTTtLO0s7SSxJOzs7OztLOztJOzs7O0ksc0I7OzBCO0k7Rzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7O0ssTztJO0ksTzs7O0k7O0s7SyxPO0k7STs7Rzs7SSx5QixPO0ksTzs7OztJLE87OzZDLFM7OztJLE87OztJLHdCO0c7O0ksd0I7Rzs7O0k7Ozs4QixPOzs7TyxPOzs0QixPOzs7TyxPOzs2QixPOzs4QixPOzs2QixPOztPLDBCLE87TyxPOzs0QixPOzs2QixPOzs7Ozs7VztXLE87VTtPLE87Ozs7OztXO1csTztVO08sTzs7O08scUI7ZTs7O3NDLHNDOzs7SSxPOzs7STtLLGtCLE87SyxPOzs7SSxvQjtJLE87OztJOztLOztNOzs7UztTLFc7UyxPOztLLE87OztJLG9CO0ksTzs7Ozs7Ozs7O0s7SztLLE87STtJO0k7SSxXO0k7O0s7SyxPO0k7SSxPOzs7SSxxQixNO0ksTzs7Ozt3QixrQixPLDRCO0k7SSxVO0ksTzs7OztJLE87Ozs7SSxzQjs7STtJLFU7SSxPOzs7STtJO0k7O0ssMEI7Szs7dUIsTzs7UTtnQyxPOzs7STtxQzs7O087OzRCLE87O087O08scUIsTTtPLE87O087OztRLE07Tzs7OztXO1csTztVO08sTzs7TyxzQixNO08sTzs7Ozs7O1c7VyxPO1U7TyxPOztPLHVCLE07TyxPOzs4QixPOzs4QixPOzs4QixPOzs7TztPLE87O0c7Ozs7Szs7O3dCLE87O1EsOEIsTTtRO1EsTzs7USxnQixNO1EsTztnQjs7STtJO0k7cUM7OztPOztPOzs7TztPLE87O08seUIsTTtPLE87OztPOzs7O1csa0IsTTtXLE87VTtPLE87OztPO08sVTtPLE87OztPO08sVTtPLE87O08sMEIsTTtPLE87O08sd0IsTTtPLE87O08sd0IsTTtPLE87Ozs7Ozs7Vzs4Qjs7VyxPO1U7TztPLFU7TyxPOztnQyxPOzs7TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztPOztPOztnQyxPOzs7Ozs7VztXLE87VTtPLE87OztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O087OztPO08sTzs7Ozs7d0Isa0IsTyw0QjtJLE87Ozs7SSxPOzs7O0k7SSxVO0ksTzs7OztJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08scUI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJLHdCO0c7O0ksWTs7SSxPOzs7O0k7OztPOzs2QixPOzs7TztPLE87OztPOzs7O1c7VyxPO1U7TyxPOztnQyxPO2U7Ozs7STs7NEIsTzs7Tzs7Tzs7OEIsTzs7TztlOzs7OztJLE87Ozs7STtJLE87OztJLDhCOzs7Ozs7OztXO1csTztVO087Ozs7VztXLE87VTtPLE87OztPO08sTzs7aUMsTzs7O087TyxPOzs7OztJOzs7Tzs7NkIsTzs7O087TyxPOzs7TztPO08sTzs7Ozs7UTtRO1EsTzs7O087TyxPO3NDLE87Ozs7O0ksTzs7OztJOzs7TyxzQixNO08sTzs7K0IsTzs7O087Ozs7VztXLE87VTtPO08sTzs7O087Ozs7VyxrQixNO1csTztVO08sTzs7Ozs7OztPOzs7O1c7VyxPO1U7TztPLE87OztPO08sVTtPLE87OztPO08sTzs7Ozs7STs7O08sMEIsTTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO2U7Ozs7O0k7c0M7OztPOzs7TztPLE87O08seUIsTTtPLE87O08sMkIsTTtPLE87O08sMkIsTTtPLE87O08sMkIsTTtPLE87OzhCLE87O08sMkIsTTtPLE87O2dDLE87d0MsTzs7Ozs7STtJLFU7SSxPOzs7O0k7Syx1QixNO0ssTzs7O0ksTzs7OztJOztLLE87OztJLE87OztJOztLLE87OztJLE87Ozs7STs7NEIsTzs7MkI7OzZCOzs7TztPLE87OzZCLE87ZTs7OztJLHFCLE07SSxPOzs7O0k7SSxVO0k7SSxPOzs7O0k7SSxPOzs0QixTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztrQixTOztJLGdDLE87SSxXOzs7STs7OztLLE87SyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7OztJOzs7OztLLE87Ozs7Ozs7SyxPO0ksb0I7SSxXO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7SyxPO0ssVztJO0c7O0ksYztJO0c7MEMsUzs7STtJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0k7Ozs7O3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7OztPOztRLE87USxzQjswQjs7O087O1EsTztRLHNCOzBCOzs7Ozt3Qzs7OztJOzs7SSxlO0k7Rzs7SSxjO0k7Rzs7STtLLGtCLE87SyxXOzs7SSxvQjtJLFc7OztJOztLOztNOztTO1U7VTtVLE87VSxTO1M7O0ssVzs7O0ksb0I7SSxXOzs7STs7SyxPO0ssTztJLG9CO0k7SyxZO0ssVztLO0ssTztLLGU7SztLLE87SSxvQjtJLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7SSxpQixPO0ksb0I7STtLLGU7SztLLE87SyxxQjtJO0c7O0ksd0I7STtHOztJOztLOzs7O00sTztNLE87Ozs7STtHOztJLEksVSxnQztJO0s7Ozt3QixXOzs7UyxzQjs7Szs7SSxvQjtJLEksWSx5Qzs7Ozs7Ozs7Ozt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7Ozs7YTthLGU7WTtVLFE7VSxPOzt5Qjs7O1M7Ozs7VSxPOzhCOzs7Uzs7O1UsTztVLHNCO3lCOzs7Uzs7VSxPO3lCOzs7NEM7OztTOztVLE87cUI7Ozs2Qzs7O1M7Ozs7VSxPOzBCOzs7OztJO0c7OztLOzt3QixXOztROzs7UyxPO1MsTztRLFc7O1EsZ0IsTztRLFc7Z0I7O0k7STtJLG9CO0k7SyxZO0ssVTtLOzs7Ozs7UTs7OztTLFE7Ozs0Qzs7O1E7Ozs7O1MsTztTLFU7Ozs7UTs7O1MsTztTLE87UyxzQjtTLE87d0I7OztROzs7O1MsTztTLE87d0I7OztROzs7UyxPO1MsTzt3Qjs7O1E7O1MsTzt3Qjs7O1E7Ozs7UyxPO2lDOzs7UTs7O1MsTzsyQjs7O1E7Ozs7OztZOzs7YTs7O1ksMkI7VztTLFc7UyxPOzs7OztZOzs7Ozs7O3lCOzs7UTs7Ozs7UyxPO3lCOzs7UTs7UyxPO3lCOzs7UTs7OztTLE87UyxPO1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7UyxPO3lCOzs7UTs7Ozs7OztTLE87UyxPOzsyQjs7Ozs7O3lCOzs7Ozs7Ozs2Qzs7O1E7OztTLE87UyxzQjsrQjs7O1E7Ozs7OztTLE87d0M7OztROzs7UyxPO3lCOzs7MEM7OzswQzs7Ozs7O3lCOzs7Ozt5Qjs7O1E7Ozs7OztTLE87UyxPO1MsTzs7O1k7Ozs7Ozs7OztROzs7UyxPO3lCOzs7Ozs7O0k7Rzs7SSxpQixPO0ksb0I7SSxrQjtJO0c7O0ksaUIsTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJLEksVSxnQzs7O29DOztPOzs7USxROzs7Ozs7OztpQjs7OztxQzs7c0M7O3NDOztzQzs7Tzs7USxPO3VCOzs7c0M7O3NDOztzQzs7OztzQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OztJO0c7O0ksd0I7Rzs7SSxZOztJLGtCOzs7SSxJLFUsZ0M7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1Esc0I7USxPO3VCOzs7d0M7Ozs7STtHOztJOzt3QixXOzt1QixXOzswQixXOzt5QixXO2U7Ozs7SSxnQyxPO0k7Rzs7STs7O0ssTTs7O0ksVztHOztJLDhCOzs7Tzs7Ozs7VztXLGM7VTtRLE87OztXO1csa0I7VTtRLE87Tzs7TyxrQyxNO08sVzs7TyxnQyxNO087O087Ozs7USxNO08sVzs7OztJLEksVSxnQzs7Ozs7cUM7O087OztRLE07Ozs7Tzs7OztRLE07USxNO3VCOzs7OztROzs7UyxNO1MsVTttQjs7UTs7UyxNO21COzs7Ozs7O3VCOztJO0c7O0ksYztJO0c7O0ksSSxTLGdDOzs7Tzs7OztRLE07aUM7OzsyQzs7O087Ozs7OztRLE07USxNO1Esb0I7USxNOzZCOzs7Tzs7O1EsTTtRLE07USxvQjtRLE07c0I7OztPOzs7OztRLFU7OztRLE07USxNO1Esb0I7Ozs7O1c7Ozs7Tzs7Ozs7O1EsTTtRLE07c0I7OztPOzs7USxNO3NCOztJO0c7O0ksSSxZLGdDOzs7Tzs7OztRLE07b0M7Ozs0Qzs7O087Ozs7USxNO2dDOzs7Tzs7O1EsTTt5Qjs7STtHOztJO0ssWTtLO0ssTTtLLGM7STtHOztJOzs7cUM7Ozs7Ozs7O3lDOzs7Ozs7Ozs7OEM7OztPOzs7O1EsTTsyQjs7OztJO0c7O0ksSSxXLGdDOzs7Ozs7Uzs7OztVLE07aUM7OztTOztVLE07MEI7OztTOzs7O1UsTTtxQzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTs7K0I7Ozs7OzswQjs7O1M7Ozs7VSxNOztnQjs7Ozs7OzhCOzs7MEM7Ozs7O0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7STs7Szs7OztNLE07OEI7O3NDO0k7Rzs7STs7Ozs7MkI7O3dDO0k7Rzs7STs7SyxXOzs7SSxnQjs7O0k7Ozs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7USxNO3NCOzs7cUM7OztJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7Rzs7STtLLFM7SyxVO0k7Rzt3QixTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RyxJLHNCOztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLLEk7d0IsaUM7SztNLEs7Ozs7O0s7OztPOztROztXOzs7Ozs7Ozs7YyxHO2U7ZTs7Yzs7Ozs7Ozs7YztjO2M7OztjLEc7ZTtlOztjOztlO2U7ZTs7OztlO2U7ZTtlO2U7Ozs7ZTtlO2U7ZTtlOztjO2M7c0I7O1csRztZO1k7O1c7Vzs7Ozs7Yzs7Ozs7WTs7OztnQixPO2U7WTtZO1ksUTtZO1k7WTs7O087Tzs7OztNLEk7O0k7STs7Szs7O0s7OztHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLG1DO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzt5QixXOzsyQixXOzt5QixXOzs7TyxxQjs7MEIsVzs7MkIsVzs7MkIsVzs7MkIsVzs7RztHOzBCLE8sMkI7O0ksUzs7SztLLEc7OztNLEs7TyxNO00sWTtNO087TyxHO1EsSTs7Ozs7Ozs7SztJO0k7SztLLDBCLE8sMkI7SSxPO0c7O0k7O0ssTTs7STtHOztJOztLLE07O0k7RztHLEksc0I7eUIsZ0Q7O0k7O0c7bUMsc0I7K0IsNkI7O0k7SyxNO0s7O0c7OztJOzs7OztTOzs7O2lCOzs7UztVO1k7VSxNO1UsTTtVLE07OztlOztVLE07VSxNO1UsTTs7VSxNOzs7Ozs7Ozs7d0I7Ozs7O3dCOzs7Ozt3Qjs7Ozs7d0I7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UyxPO1E7Szs7STtHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Szs7Ozs7Ozs7Ozs7TSxVO007OztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksbUIsTyw4QjtHOztJO29CLGU7SSxPO0c7OztLO0s7TSxvQjs7O0s7STtJLE87Rzs7SSxVO0ksTztHOztJO0k7SztLLE87STs7SztLO0ssTztJOztLOzs7Ozs7Uzs7VSxZO1Usb0I7UztVO1csTztXOzs7Ozs7Ozs7Uzs7Ozs7VTs7OztVOzs7Ozs7NEI7Ozs7Uzs7O1U7VSxNO1M7Ozs7TTs7O0s7SyxPO0k7O0ssYztLO0ssTztJOztLLGtCOzs7Ozs7OztZO1c7UTtTOzJDLHFCOzs7O1E7OztROztTO1Msb0I7UTs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzsrQixPOztHOztJO29DOzs7STtJOzs7TztPLE87O087O1Esb0I7TztPLE87ZTs7Rzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O1U7Vzs7STtHOztJOzswQixXOzt1Qzs7TyxrQztPOztHOzs7SSxnQjs7O0ksWTs7Ozs7OztPOzs7UTs7O087Ozs7O0ssWTtLO0s7STtJO0k7Rzs7STs7eUIsVzs7eUI7O3VEOzt5Qjs7MkIsVzs7MkIsVzs7O08sVzs7Rzs7STtJO0c7O0ksVztJLE87Rzs7SSxtQixPO0ksTztHOztJO0ssTTtLLFE7OztHOztJO0ssTTtLLFE7SyxPO0ksTzs7Rzs7SSxJLE0sbUM7Ozs7OzttQjs7O087OztRLE87NkI7OztxQzs7Tzs7O1EsTzsrQjs7O3dDOzs7c0M7O3FDOztPOztRLE87bUI7OztzQzs7cUM7Ozs7OztXO1csTztVO29COzs7Ozs7O1c7VyxPO1U7b0I7Ozt3Qzs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7O0ksVzs7O0k7SyxNO0ssUTtLOztLLE87SyxPO0s7SyxXOzs7Szs7OztNLE87TSxPO0ssVztJO0ksSSxXO0ksb0I7SSxlO0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLOztJLG9CO0ksZTtJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7OztjO2MsVzthO1csTzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2MsTzthO1k7cUI7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7Rzs7STtLLE07SyxRO0ssTztLLE87SSxPOztHOztJO0ssTTtLLFE7Szs7Ozs7Ozs7OztROzs7O1MsTztTLE87OEI7Ozs7Ozs7OztXOzs7WSxPO3FDOzs7OztVOztXLE87c0I7O1UsMEM7VTtXO1ksTztZLE87VyxLO1csSTs7VTtXLE87VyxPO1c7YTtXLE87Ozs7O2M7Ozs7Ozs7UTs7Ozs7O1k7WSxXOztZLHNCO1c7UyxPO29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzRCOzs7UTs7O1M7OztZOytCOztZLG9CO1c7UyxTO1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87O3dCOzs7O1E7Ozs7bUI7OztXOztZLE87bUI7OztXOztZLE87bUI7O3dCOzs7OztROzs7UyxPOzs7O1E7OztTLE87Ozs7Ozs7O1k7OzthLE87WTtXO3FCOzs7UTs7OztTLE87NkI7OztROzs7UyxPO3FCOzs7MEM7OzsyQzs7O3VDOzs7O3FCOzs7UTs7OztTO1M7a0M7OztTLFE7UyxPO1MsUztTLFM7Ozs7UTs7UztTLE87Ozs7O3FCOzs7UTs7O1MsTztxQjs7STtLLE87O0k7Szs7OztNLFE7TSxVO0s7OzhDOzs7UTs7O1MsTztTLE87MkI7OztROztTLE87MkI7Ozs7O3FCOztLLE87O0ksTztHOztJOztLLFc7SyxXO0s7STtHOztJOztLO0ssYztJO0ksVztJO0c7O0k7SyxNO0ssUTtLOztLLE87SyxPO0ksTzs7Rzs7SSxrQixPO0ksTztHOztJLEksTSxtQzs7O29DOztPOzs7USxPOzZCOzs7Tzs7USxPO21COzs7d0M7OztzQzs7cUM7O3FDOztPOztRLE87bUI7OztzQzs7d0M7OztzQzs7d0M7OztPOztRLE87b0I7OztPOztRLE87b0I7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLLE87SztJLE87O0c7O0k7SyxNO0ssUTtLO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0ksTztHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0k7SyxNO0ssUTtLLE87Szs7SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7O0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTs7SSxpQjs7O0k7SyxNO0ssUTtLOzs7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1EsTzttQjs7O3dDOzs7O0ksTztHOzs7STs7TyxvQixPO087O08sb0I7Tzs7TyxtQixRO087O08sc0IsTztPOztPLHNCO087O08scUIsUTtPOzs7O0k7SyxNO0ssUTtLOzs7SyxPOzs7Ozs7O3FDOztPOzs7USxNOzs7O087OztRLE07bUI7Ozs7O1EsTTtPOztRLE07bUI7OzhDOztJLE87Rzs7STtLLE07SyxRO0s7OztPLE07O3dDOzs7Tzs7OztRLE07NkI7OztPOzs7Ozs7VztXLFc7O1csc0I7VTtRLE07bUI7OztPOzs7O1EsTTtRLE07NkI7Ozs7Ozs7Uzs7O1UsTTtVLE07Ozs7OztTLE07UTs7UyxNO21COzs7OztPOzs7USxNO21COztJLE87Rzs7STtLLE07SyxRO0s7OztPOzs7USxNO1EsTTs7OztzQzs7Tzs7OztRLE07MEI7OztPOzs7USxNO21COztJLE87Rzs7STs7SyxNO0ssTTtJLFc7Rzs7STtLLE07SyxRO0s7OztxQzs7Tzs7Ozs7O1EsTTt1Qjs7O087Ozs7OztRLE07O2tCOzs7Tzs7OztRLE07dUI7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7Ozs7OztROzs7O1MsTTsyQjs7O1E7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7O1E7OztTLE07b0I7OztROzs7UyxNO1MsTTs7Ozs7OztvQjs7O1E7Ozs7UyxNO29COzs7UTs7OzJCLE8sa0M7UyxTOzRCOzs7d0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7O0ssa0M7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7OzBCLE8sa0M7USxNO3dCOzs7Ozs7O3FDOzs7Ozt3Qzs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUM7Ozs7O087OztRLE07dUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQjs7OztJLE87Rzs2QixTO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7a0I7O3FCLE87O007TTs7OztJLE87Rzs7cUIsTyx5QztJLDBCO0k7O087OztROztXOztROztXOztPLE87OztPLE87O087Ozs7UTs7TyxPOzs7TyxPOztHOzs7SSxPOzs7STs7OztLLE87SSxPOzs7O0ksVztJLFM7STtLLE87SyxPO0ssTztJLE87Rzs7STs7OztRLGdCO29CLFc7Ozs7USxXOztROzs7Uzs7Ozs7USxrQjs7UyxXOzs7Rzs7eUIscUI7SSxPO0c7OztJO29CO0ksb0IsUztJO0c7Ozs7Ozs7Ozs7VTtXLE87Vzt3Qjs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7OztTOzs7OztZOzthOzs7NEI7O1k7O1k7Ozs7Ozs7O1k7OzthOzs7Ozs7YSxVOzs7Ozs7Ozs7YTtjLFc7OztjLGM7OztZOzs7Ozs7Ozs7Ozs7Ozs7O3FCO2U7Ozs7Ozs7Ozs7O29CO2M7Ozs7Ozs7O2U7O2dCOzs7Z0I7OztnQjs7OztlOzs7Ozs7YTs7WTthOzs7YTs7O2E7Ozs7WTs7Ozs7Ozs7VSxHLGdDO1UsVztVOzs7VztZLE87WSxPO1ksTzttQjtVOztTLEksVzs7Ozs7OztZOzs7OztTO3NEO1M7O1U7Ozs7Ozs7Ozs7Ozt3Qjs7Uzs7O087O1EsTztRLE87UTs7MkI7TztRO1E7Tzs7O0s7TTtNO007Szs7OztJOztNOzs7OztPLFM7Tzs7Ozs7Ozs7O1E7O1MsVTs7aUI7Ozs7aUI7OztPOztRLFE7USxVOztnQjs7O007OztzQjtJOzs7O0k7O0ssNEM7O0ksYTtJO0c7O0k7SyxPO0ssVTs7Szs7O007O0s7SztJOzttQjs7Ozs7Ozs7O0s7Ozs7UTs7O007Tzs7O08sTTs7Ozs7Ozs7Szs7O2E7TTtLO0k7STtLLFU7Ozs7Ozs7OztLOzs7TTs7Ozs7OztPLEc7Ozs7O1k7Ozs7Ozs7Ozs7O0ssSSxVOzs7Ozs7Ozs7OztLOzt3Qjs7d0I7O3dCOzs7O0s7TTs7Ozs7STtLLE87Szs7Ozs7Ozs7Ozs7Szs7Ozs7OztrQjs7O007Ozs7Ozs7Ozs7OztpQixJOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztpQyxxQjtVLE87VTs7Ozs7O1M7VSxjOzs7Ozs7Ozs7O1M7Ozs7VTs7O1U7VSxjOzs7Ozs7Ozs7O1M7Ozs7VTtVLE87VTtZOzs7Ozs7O1M7VTtVO1k7Ozs7Ozs7Ozs7Uzs7Ozs7O1UsTztVLGU7VSxPO1M7Ozs7Ozs7O1M7UywwQjtTOzs7Ozs7Ozs7Ozs7Ozs7O1U7VyxZO3lCOzs7O1U7O1c7YTtXOzs7Ozs7Ozs7YSxNOzs7Z0MsdUI7c0I7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7OztTOzs7O1UsTztTOzs7Ozs7OztTO1UsVTtVOzs7Ozs7Ozs7Ozs7OztVOztXOzs7O1M7Ozs7UztVO1k7VTs7Ozs7Ozs7OztTOzs7O1UsVTtVLFc7OztVO1k7VTs7Ozs7Ozs7OztTOzs7O1UsUTtVLFM7O1U7VTtZOzs7Ozs7OztLLE07OztJO0s7O007Ozs7STs7OztJO0s7Ozs7Ozs7Ozs7Ozs7SyxPO0ssTzs7O0k7WTs7Ozs7OztJO0k7OztLO007O0k7Ozs7OztPOzs7Szs7Ozs7Ozs7O0s7Ozs7MEM7O0k7Rzs7STtJOzs7Ozs7OztLLHNCO0s7O0c7RztJO0k7O0k7SztLOzs7d0I7SSxPLFc7Rzs7STt1Qjs7STtHOzs7Ozs7Ozs7OztJOzs7O0s7aUIsTTs7Szs7O007TSxNO0s7O0k7SyxRO0ssUztLO0ksTTs7Rzs7OztJOztLOzs7Uzs7Ozs7Ozt5QztJLHdCO0ksTTtHO0csSTs7SSxZOztJO0c7O0k7O087O087O087OztRO1E7OztTOzs7VSxPO1UsTztTLE87OzswQjtPO2U7O0c7O0ksOEIseUI7O0c7O0k7STtLOztNOzs7TTs7TyxPOzs7Ozs7O2tCOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxZO007bUI7Tzs7USxRO087Ozs7Tzs7USxRO1EsUTtPOztNLFk7TTs7Szs7STtLLFE7SyxNO0k7Rzs7O0k7SztNOztLO0k7STs7SyxTO0ssUztLO0s7SSxPOztHLEk7O0k7O087O087O087OztRO1E7cUMsWTs7OztTOzs7VSxNO1UsTTtTLEcsd0M7O2tCOztPO2U7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO007O087OztVO1csUTtXLFE7VSxPO1M7TyxRO08sUTtNOztzQjtLOztNLFE7TSxNO007TSxNO00sTTtLOztJO0c7O0k7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Szs7STs7SyxTO0ssVztLO0s7SSxPO0c7O0k7OztLOzs7SSxNO0c7O0k7NkM7O0ksTTtHOztJOzs7NkM7O0ksTTtHOztJOzt1Qjs7O0ssTTs7SSxNOztHOzs7STs7Ozs7TTs7O0s7TSxNOzs7Z0Q7O0ksTTtHOztJOztLLE07OztJO0c7O0k7dUI7O0ksTTs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztNOzs7Tzs7OztxQjs7O1EsTTtPOzs7USxtQjs7Ozs7O0ksTTtHOztJLFksTzs7Ozs7TyxPOzs7O08sTzs7Ozs7Ozs7O08sb0M7TyxPOzs7TyxzQztPLE87Ozs7O0k7SyxPO0k7OztJOzs7O1EsZ0M7USxPOzs7USxvQztRLE87OztJLE87OztJLFk7O2dCOztJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxRO21CO0c7O0ksOEI7OztPOztRO1Esc0I7O087Ozs7OEI7OzttQixlOzs7Ozs7OztPOzs7UTtRLHNCO1E7TzsrQjs7OztlLE07O0c7Ozs7bUI7OztNOzs7TztPLHNCO087TTs4Qjs7Ozs7SyxvQjs7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7STtJLE87Rzs7STs7O0ssTztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7OztTLGUsVTt1QixNOzs7O00sTTs7Ozs7NEIsTzs7OztHOztJO0ksTzs7YztHOzs7STtJOzs7SSxXO0ksTztHOztJLE87RztpQyxtQjs7STs7Ozs7Szs7STtHOztJO2dCOztJO0c7O0kscUMsTzs7SSxPOzs7STtnQixPOztJLCtDO0k7Ozs7SztJLE87Rzs7STtnQixPOztJO0c7O0k7Z0IsTzs7O0s7OztNO00sTztLLE87Ozs7OztNLE87O0k7Rzs7STs7Szs7TTs7TTtLLE87O1ksTztJO0ksaUQ7STs7OztLO0ksTztHOztJOzs7SyxxQixPLGdDOztZLE87STtJO0c7O0k7d0M7STtHOzs7Szs7O00sTztNLE07TTtNLE87SyxPOzs7Ozs7Ozs7d0I7STtLLE87SyxTLFc7SSxPO0c7OztLOztROzs7OztLO0k7STtHOztJO0ssSSxTO0s7Ozs7O2M7Ozs7Ozs7Szs7bUI7O21COzs7SztJOztLO0s7Ozs7Ozs7OztROzs7O1M7Ozs7UTs7OztTOzs7SztJO0ksTztHOztJO0ksTztHOztJO0ssTztJLE87Rzs7SSwrQzt5QixtRDtJO0ssTzs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7Ozs7d0IsTyw0QztNLE87SzthOzs7OztpQjs7O007O087K0IseUM7TSxPOztLOztNOzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7SSxXOzBCLE8sc0I7SSxXO0ksTztHOztJOztPOztRO1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7UTs7UTtVOzs7Ozs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7USxPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Tzs7Ozs7USxLO1EsSztRO1EsTztPLE87Ozs7Ozs7Ozs7O0c7O0k7SyxROzs7O0k7Szs7SSx3QixPO0ksTzs7Rzs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7SyxPOztLLE87SSxPOzs7O0k7Rzs7STtLLE87O0ksVztHOzs7STs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7SztLO0k7SyxPOzs7O0k7O0c7OztJOztPLHFCO21COztPLFc7OztPOzs7OztROzs7TztRLE87Ozs7Tzs7O087O1EsVTtPOzs7TztRLE87Ozs7Tzs7Ozs7STs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87Ozs7Szs7O007TTtPLE87TyxPO087TSxPOzs7TSxNOztLOzs7UTs7UTs7Uzs7Ozs7Yzs7O2UsTzs7ZSxPO2MsTzs7OztTO1M7Ozs7O1ksTTtXLHNCO1c7Ozs7MEM7Ozs7Vzs7WSxlO1c7Ozs7Ozs7O1c7O1ksZTtXOzs7Ozs7OztXOzs7Ozs7Ozs7O1E7OztJO0ksTztHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO1Esc0I7TyxPOztHOztJOztPLHNCO08sTzs7NkI7O08sZ0M7Ozs7OztVOztXOzBCOzs7OzBDOztPO08sTzs7O2dEO087O1E7UTtRO1Esc0I7TyxPOztHOzs7STs7Szs7UTs7UyxROzs7Ozs7Ozs7Ozs7Vzs7WTtZO1k7Ozs7cUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTO29COzs7USxtQjs7UyxNOzs7b0I7O0ssYTtrQixzQjs7NEIsTyxzQjtNLE87SztLO0k7SSxPOzs7O0s7TTs7TztPLFc7TSxXOztxQzs7Ozs7Ozs7TTtPLGM7O08sTztNOzs7NkI7TTs7Ozs7O1UsaUI7VSxPOzs7O1MsdUM7Ozs7a0I7UztVO1Usc0I7VTtVLE87UyxPOzs7O007TyxlOztPO007TTtPO087TztPLE07TSxPOzs7Ozs7OztLO0ssVztJO0ksTztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7OztRLE07Tzs7OztLO0ssRztNLE07SyxPO0k7STtLLE07SyxPOztLOzs7TTs7O00sTztNOztTOzs7Ozs7OztLLE87Ozs7O0k7SSxnQjs7RztJO0k7STtJOztJO0k7OztHOztJO0ksVztHOzs7STs7Ozs7SSxROztJLEc7SyxJLEk7Ozs7Ozs7Ozs7SyxTOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SyxXO0s7Ozs7O0ssZTtLLE07O0c7O0k7SyxPO0sscUI7O0c7OztLLG1COztNO007OztNLE07O0s7O08sZ0I7TyxNOztNO00sTTs7Ozs7TTs7TztNOztJO0ksTztHOztJOztJO0c7O3dCLHVDO0ksTztHOzt5QixrQixPLHlCO0ksVzs7Szs7O00sSTtNLFE7OztTO087Tzs7O0ssTTtJO0ksTyxXO0c7O0k7O0ssWTs7O00sTzs7SyxNO0k7SSxXO0k7Rzs7eUIsMEM7SSxPO0c7Ozs7SztJO0k7Ozs7OztPLE07OztLOzs7Ozs7USxnQjtRLE07O087UTtTLE87UyxPOzs7Ozs7UTtTO1UsTztVLE87Ozs7Ozs7Ozs7VTs7Ozs7O087O087Ozs7UTtRO1E7UTtVO2E7O1EsTztPOzs7TyxPO1EsTTtPO1Esc0I7USxPOzhCLGU7USxXO1EsTztPOztPOzs7USxVOzs7OztROzs7OztrQyxTO21COzs7Ozs7TztVO1EsVztRLE07OztPO1Esc0I7USxPO1EsUztROzs7OztnQjs7OztPO1EsTzs7O1c7VztZLFc7WTs7Ozs7WSxrQixRO1ksTTs7O1U7TztPOzhCLGU7USxPO1EsUztPOztPOzs7USxZOzs7VztZLFc7WSxLO2EsSTs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTs7Ozs7Ozs7O1k7YTs7YztjLFE7Ozs7OzthO2MsSTtjLFU7Ozs7OztrQixNOzs7OztpQixxQixVOzs7Ozs7O2tCLEc7bUIsTTs7O2tCO21CLGM7Ozs7OztvQixNOzs7bUI7Ozs7OzthLE07OztZOzs7OztnQjtzQztlO2E7ZTthO1k7OztXOztRLGdCO1E7a0MsMEI7USxXO1E7OzthOzs7VztXLE87VTtRLFE7TyxtQzs7Ozs7UTtTLFU7Ozs7Ozs7Uzs7d0IsTTtVLHVCLFU7Ozs7YTs7YyxTOzs7Ozs7Ozs7UyxHO1U7O1U7Ozs7O1EsTTs7Ozs7UTs7OzsyQzs7Ozs7OzJCOzsrQjs7UztVLFU7OztTOzs7Ozs7UztTLE07Ozs7VTtRLFc7USxNOzs7TztRLHNCO1EsUztRLFc7USxPOzs7VztXLEksVyx3Qzs7Ozs7WSxrQixRO1ksTTs7O1U7TztPOzhCLGU7USxVO1EsTztRLE87USxVOzs7OztxQzs7Ozs7Vzs7WSxPOzs7ZTs7O2dCLFE7Ozs7MkM7Ozs7O2U7YztZLFc7WTtZO2M7O21COzs7O1E7O08sTTs7O087O1M7VSxPOzs7Ozs7UztVLE87Z0I7O1E7USxJOzs7OztTLHNCLFE7UyxNOzs7Ozs7OzsyQjtROztTOztRO1EsSTs7OztTLGtCLFE7UyxNOzs7O1M7Uzs7UTtTLE07UyxLO1MsVTs7Ozs7O2E7Ozs7OzthOzs7Ozs7O087O087Ozs7UTtROztXO1k7WTtrQjtXLE87VTtRLFU7OztXLFE7VztZO2EsUTs7O1ksRzthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTs7O1csdUIsMEI7Ozs7YTs7YztjO2MsVTs7Ozs7Ozs7Ozs7O2E7MkI7O2E7YyxPO2MsVTs7Ozs7O2tCLE07Ozs7OztpQixHO2tCO21CLEs7OztzQjs7O3VCOzt3QixLO3lCLFk7O29EOzs7eUIsTTs7Ozs7O3NCO3FCO2tCOzs7Ozs7YSxNOzs7OztZOzs7Z0Isb0I7Z0IsTztlO2EsSzs7O2E7O2MsSztlO3FDLGM7Z0IsUTtvQjs7Ozs7eUI7OztjLE07OztrQzs7c0I7O1k7OztXO1U7USxVO1E7cUMsaUI7USxPO1EsVztPOzs7OztZLGU7O2EsTTs7WTtXO1E7O087Ozs7VyxPOztVO1E7UTtVO2E7O1E7USxPO087O087OzsyQixZO1EsUztPO08sSSx5QztvQjtPLEksd0M7O087TztPO1E7MkIsTyxnQztRLFk7USxRO1E7TztPOztPOzs7O1E7OztRO1EsUTtPO087OztXO1c7VTtRLE87USxTOzs7VztXO1U7USxvQjtRLFE7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7OztTLHdCLFE7OztVLGM7O1M7UTtNLFc7TTs7UztLO0ssTzs7SSxPO0c7O0k7SSxPO0c7O0c7STs7O0ksSSxZOztLOzs7TTtNLE87SyxJLG1DLEk7aUI7Z0I7Szs7OztvQjs7Ozs7Ozs7eUI7TTtPLE07d0M7O007OztPOzs7STtJOztJO0s7O007TSxJLFcsb0M7Ozs7O08sTTs7SztLLE8sd0M7Rzs7STs7O0ksMEI7STtJO0k7Rzs7STs7O0k7SSxJLGlDOzs7SztNLE87TTs7OzthOzs7O0k7STtJO0k7STs7O0ssWTs7O1M7TztPOzs7SztJO0ksWTtJO0k7Ozs7SyxPO0ssTztJO0c7O0k7O0k7STtJO0k7STtJO0ksZ0I7Rzs7STs7OztLO0s7eUIsWTtNLFM7TTtNO0s7SztLO0s7O0k7STtJO0k7STtHOztJO0ssTzs7O087O1E7O1csTzs7eUI7VTtRO1U7OEIsTyxrQztPLE87OztPLE87OztPLE87Ozs7Ozs7Ozs7TyxPOzs7TyxPOztPOztRLG9CLE8seUM7NEIsTyx5QztPLE87O087O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7eUIsTzs7O08sTzs7Ozs7OztXO1c7WSxNOztZLE87VyxPOzs7Ozs7Ozs7O1U7TyxPOzs7TztPLFk7Ozs7Uzs7VTs0QixXLHFDO1MsTzs7O087OztPLE87Ozs7Ozs7OztPLE87OztPO08sRztRO2U7UTs7UTtPLE87OztPLE87Ozs7Ozs7O1csTzs7Ozs7Ozs7O1U7TyxPOzs7Ozs7VyxZLE87O1csTztVO08sTzs7O08sTzs7OztJO0s7Ozs7TSx5QjtLLFc7O21DOztJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7cUIsTzs7dUIsTzs7cUIsTzs7cUIsTzs7dUIsTzs7dUIsTzsrQixPOztHOztJOztLOzs7TTs7SztNLE87Szs7USxPOztRLE87O1EsTzs7Ozs7SyxPOzs7TyxvQixPO08sTzs7O08sTzs7O08sb0I7TyxPOztPOztRLDRCO08sTzs7Ozs7O1EsTzs7O087Ozs7UTs7Ozs7UyxPOzs7Ozs7Ozs7OztRO3FDO1EsTzs7OztROzRCLG1DO1MsTztTLDRCO1MsTztRLE87OztPO29DO08sTzs7O3FCLE87O08sTzs7Tzs7OzBCLCtDO1EsZTtPLG1CLE87Ozs7OztXLGU7O3FCOztVO08sTzs7Ozs7Ozs7Tzs7USw0QjtPLE87OztPLE87OztPLE87OztPLE87ZSxPOztHOztJOzs7Ozs7O087USxPOzs7O0k7Rzs7STs7Ozs7OztPO1EsTzs7Ozs7STtHOztJOzs7Ozs7Ozs7O0ssTzs7STtHOztJOzs7SyxPOzs7STtHOztJLFk7O21COztJLHVCO0ksTzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7SSxVO0ksTztHOzs7SztLO0ssTztJO0ksTztHOztJOztLO0ssTztJO0k7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJOzs7O3NCLGlEOzt3QixhO0ksTztHOztJO0ssTTs7STtHOzs7SSxXOztHO0k7STtJO0k7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtJOzs7OztPOztPLHdCOzs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7OEIsb0IsVztRLE87OEIsb0IsVztRLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O1U7VyxNO1csUTttRjtVLE07Uzs7Ozs7Ozs7Ozs7STtHOztJOzs7O3lCOztPOzt5QixPOzsrQjtpQzs7Rzs7c0IseUM7STs7Ozs7O1E7O1M7Ozs7Ozs7O1E7Ozs7WTtZO1c7UyxNOzs7O1E7Ozs7Uzs7Ozs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7Rzs7Ozs7O0ksTTtJLHlCOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7O1M7Z0Q7UztRO00sWTs7Ozs0Qjs7O0ksb0I7SSxPO0c7O3lCLHdCLFk7SSxPO0c7O0ksVztpQjtHOztJOzs7Szs7STtHOztJOzs7OztRLE87Ozs7OztRLGUsTztRLE8sMkI7Ozs7SSxPO0c7O0k7STs7Ozs7O1E7UztTOzs7OztRO1M7Uzs7Ozs7UTtTO1M7Ozs7Ozs7TztRO1E7Ozs7Ozs7O08sVztPLFc7O007OztPO087Ozs7OztHOzs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0IsTztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7OztrQixPO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7O0s7OztPLGtCLE87O087OzttQjtLO0k7MEI7O0s7Szs7O1E7Ozs7O1M7USxXOzs7OztzQjtNOztJO0k7OzBCLDJDO0c7Ozs7STs7STtXOztjO0c7O0k7SztLLE87SyxRO3lFO0ksTTtHOztJOzs7Ozs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7NkI7Ozs7Ozs7VyxPOzs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07Uzs7O1k7WTthOzs7aUI7O2dCO2MsTTs7Ozs7Ozs7WTtXO1EsTzs7STtHOztJLFksa0M7Ozs7Ozs7a0I7TSw0Qzs7Ozs7OztVOztXOzs7K0IsK0I7YyxPO2E7VyxTO1c7Ozs7OztrQjs7TTs7O0k7Rzs7SSxTO1ksTztJOzs7O0s7OztJO0c7O0k7Ozs7UTs7Uzs7O1E7O1E7Ozs7Uzs7O1E7Ozs7O1UsTTs7Ozs7UTs7UTs7O1M7Ozs7Ozs7WTtZOztzQjs7WTtXO1E7OzttQjs7Ozs7O1E7O1M7OztROztnQixPOztROztnQixPOztJO0c7MkIsNEI7eUMsNEI7OztLO0s7TTtPLE87TyxPOztPOzs7O1E7Ozs7O00sTzs7ZTs7Ozs7O0k7STtHOztJLFk7OztLLE07O0ksOEIsMEI7STtHOzs7SztLO29COzs7Ozs7OztNO087TztlOzs7Ozs7STtJO0c7OztLLFU7SztJOztLLFk7O0s7Ozs7OztNO007SztLLE87STs7Ozs7Ozs7Ozs7Ozs7Ozs7TTtPLFk7TztTOzs7VTtVLGtCO1M7TyxVLFc7TTs7Szs7Ozs7OztNO0s7TTtPOzs7OztLO007Ozs7RztHOztJLG1CO0ksdUM7O0s7TSxNOztvQixXOztLO0k7O2dCLFc7O0k7RztHLG1COztJLFU7SSx1Qjs7Ozs7Ozt1RDs7UyxPOzs7eUI7OztTOzs7O2Esa0I7aUY7YSxNO1k7VSxTO1UsTTtTLGdCO1U7VyxPOzs7Yzs7O2UsUTs7OztlLE87O2M7YTtVLE87O1MsVztTLFc7UztVLE87OzthOzs7MkI7a0M7WTtTLE87Ozs7TTs7O00sTTs7STtHOztJOzs7Ozs7SyxPO0k7Z0I7Ozs7OztHOztJO0ssTTs7bUI7SSxtQjtJO0c7O0ksWTs7O0s7TTtPLFU7TyxVOzs7OztRO1M7O3lDOzttQjs7O007Ozs7O08sTzs7OztJLE87Rzs7STtHOzs7STs7SztLLGlCOztLLFc7STtJLGE7eUIsOEI7STtLLFE7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7OztTOzJFO1MsTztRO00sZTtNO00sUztLLGdCLE07SywwQjtLLGtCOztJO0c7O3lCLGtCLE8sdUI7SSxJLE07STtLLEs7O00sZ0I7O0ssSSxNOztHOztJO0k7Ozs7Ozs7Ozs7Ozs7VSxvQjs7Ozs7OztrQyxrQixTO1UscUI7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTs7OztXLGtDO3NCO1c7Vyx3QjtVO08sTzs7Ozs7OztPOzs7O1E7TyxTO08sSTs7Ozs7USxvQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTs7Ozs7O0c7O0ksVTthO0k7OztLLE87SyxPOztLO0ssd0M7SztNOzs7UzsyQixrQjtTLE87UTtNOzs7Ozs7Ozs7VTtVLHFCO1U7VztXOzBDO1csTTtVLG9CO1UsTztTO1MsVztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksb0I7SSxPO0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNO087O1U7Ozs7WTs7O1U7UztPOzs7O007Ozs7TztNLFM7TSxJOzs7TTtPO08sVTs7O087TyxPO087Ozs7Rzs7STtLLFc7SyxPOzs7ZTtlO0k7OztLLE87O0s7TTs7Tzs0QixxQjtNLE87O0s7O00sVztNLE87SztLLE87STtJLE8sVztHOztJO0ksd0M7STtLO0s7OztLOztrQyx1QjtNLE87TSxPO00sTzs7O1M7Ozs7O1UsdUI7VTtXO1c7NEI7VyxNO1csc0I7VSxPOztTOzs7O1c7WSxNO1csdUI7OzthLE07Ozs7O1k7YTtvQjs7Ozs7OztVLFc7O1M7Uzs7O1csdUI7Ozs7OztnQjtpQjs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7O2tCO3lDO21CO3NDLG1COzs7O3dCOzs4RDs7d0IsTTs7dUI7Ozs7Ozs7O2tCOzs7c0Isa0I7Ozs0RDs7c0IsTTs7cUI7bUIsWTttQixPOzs7Ozs7Ozt5QztrQjs7Ozs7OztvQjs7cUI7O3VCLE07c0IsUztzQixLO3VCLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO3lDO21COzs7c0I7c0I7a0M7cUI7Ozs7d0I7Ozs7MEIsTzs7O3dCLE07O3VCOzs7Ozs7OztrQjtzQyxjO21COztpQyxlLDRCOzs7O3dCOzs7OzBCLE87Ozt3QixNOzt1Qjs7Ozs7Ozs7Ozs7c0MsbUI7Ozs7d0I7OzhEOzt3QixNOzt1Qjs7Ozs7Ozs7OztzQyxtQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCOzs7Ozs7Ozs7OztzQyxtQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCOzs7Ozs7Ozs7ZTs7Ozs7bUIsa0I7dUY7bUIsTTs7a0I7Z0IsTzs7O21CO21CO2tCO2dCLE07Z0IsTztnQjs7O21CO21CLEcsd0M7bUIsWTtpRDs7O29COzs7bUI7a0I7Z0IsVTs7Ozs7OztvQjttQjt1Qjs7O2UsRzs7OztnQjtpQixLO2lCO2tCLFE7Ozs7Ozs7ZTs7O21CLGtCO3VGO21CLE07O2tCO2dCLGM7O2U7Z0IsSzs7OztxQzs7O2dCLEk7Ozs7Ozs7Ozs7OzZCLE87Ozs2QixzQjtTLE87UTtLLE8sVzs7STtLO0ssTzt1QixzQjtJLE87Rzs7STs7SywwQztLLE07STtJLE8sVztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VyxZO1c7OztZO1k7WTtXO1U7Ozs7TTtPOztPO087OztRO1MsTzs7Ozs7O1EseUM7OztTLDJCLE07O2M7VTtXLFE7Ozs7OztXOzs7Yzs7OztlLFE7Ozs7MEI7YzthO1csVTs7O1c7Vzs7Vzs7eUIsMEI7WSxXO1ksTztXOzs7Ozs7OztPOzs7Ozs7Ozt5QixxQjs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJOztLLE07O0k7Rzs7SSxPO0c7O0ksWTtJLHFDOztLLE07O0k7SztJO0k7O0c7MkIsd0M7OztLLFk7Szs7O007O00sTztLLGU7OztHOztJO0k7Ozs7TztPO2lCOzs7O00sSSxVOztPLFc7O1EsTTtPOzs7MkIsaUI7USxJOzhCLGlCO1EsTztlOzs7OzsrQixTO2U7Ozs7VSxpQzs7Ozs7Vzs7Ozs7Ozs7O1ksTTs7Vzs7O1k7WTtZO1k7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7Ozs7MEI7Ozs7Ozs7OztjLFc7O3lCOzs7WTs7Vzs7VSxNO1M7TSxPOztLOzs7TSxPO00sTzs7Ozs7VTs7VyxNO1U7O1csTztXLE87MkQ7VTtTO00sRztPO1E7USxNOzs7O087UTtROzs7Ozs7Ozs7UTtTO1M7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCOzs7aUIsTztnQixXOzs7Ozs7Ozs7Ozs7O2UsTzs7OztVOzs7Ozs7OztjOztlOzs7Yzs7Ozs7Ozs7OztjOztlLE87ZSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0c7O0k7STs7TTs7Ozs7TztNLFc7Ozs7Szs7Rzs7Ozs7b0I7Ozs7O3FCLG9CLE8sc0I7TSxHOzs7TyxJOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsSztpQjtpQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEcsNkI7Ozs7Ozs7Ozs7Ozs7OztnQjs7OztvQixTOzZCOzs7Ozs7Ozs7Ozs7O3FCOztxQjtvQjtvQjttQjtpQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0IscUIsTzttQjtnQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0Isb0I7Z0I7Ozs7Ozs7OztROzs7Ozs7UTtTLE87O1E7O087Ozs7TztRLE87O087OztLLE07O0c7O0k7SztLO007Ozs7OztPOzs7Ozs7OztLOzs7OztLLGtCLE87O0s7O0c7c0I7O0k7Szs7Ozs7TTtLOztJO0c7O3FCLDZCO0ksZ0I7STtHOztJO0ssWTs7SztJOztLOzs7TSxROzs7TTtLO0k7STtLLFE7OztJO0k7Rzs7STtJO21COzs7O007Ozs7Rzs7STtJO21COzs7O007Ozs7Rzt3QixPLHlDO0c7O0k7O0k7SyxPO0ssTztJLE87Rzs7STtLLFU7SyxTOztLO0s7Ozs7Ozs7Vzs7Ozs7NEIsaUI7OztVLGlCOztVOzs7O1c7VztVO1UsWTs7Ozs7Ozs7OztVOztVOzs7VyxRO1U7O1U7Ozs7YyxrQztjO2M7YyxXO2E7VyxTO1U7OztVLGlCOzs4Qjs7VSxrQztVOztNOztJO0k7STtHOztJO0ssSztLLFE7Ozs7Ozs7Ozs7O21CLG1COzs7Ozs7O1MsSSxVOzs7Ozs7Ozs7O1c7Ozs7ZSxXO2M7WSxTOzs7OztVLE87bUMsYTtXLEs7O1U7VztXLHNCO2tCOzs7Ozs7OztlOztpRDs7SztNOzs7O0s7O0k7Szs7OztJO0c7O0ksWTs7SSxPOzs7STtJOzs7Ozs7Ozs7Ozs7VTs7VztXLE87VTs7O1csVztXOzs7WTthLE87YSxlOztVO1UsTzs7Ozs7Ozs7O2M7YzthO1UsTzs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7SSxXO0k7Ozs7eUIsNkI7YTtJLFc7OztpQjtLOzs7Ozs7TTtLO007TyxPO087O1c7Ozs7O29CLFc7TztPOzRCOzs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTOzs7YSwwQzthLE07WTtVLFE7VTtVOzs7O1U7OztVO2Msa0U7Ozs7Ozs7O2dCOzs7Ozs0QixPLGtDO1E7Ozs7Ozs7O00sTTs7O00sSTs7OztHOzZCLDBCOztJLGM7STtLO0s7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7O2U7O2M7VyxPOztXLG9DO1csVzs7Ozs7Vzs7OytCLGU7USxPOzs7OztNOztJO0k7Rzs7SSxJLDZCOztLOztNLHlCO007O1M7VTs7OztTLE87O00sbUIsVztNLFE7OztNLEc7TztRO1MsTTtTLE07UTtRO1M7Ozs7WTs7OzthOztZO1c7USxHO1M7USxJLE87OztPOzs7Ozs7OztLLFk7TTs7Ozs7bUI7STtLOzs0Qix1QztNLE87Ozs7OztVOztzQzthLDBCO1UsZTtVLE87UztNOzs7STtHOztJLFk7Ozs7O007Ozs7O087Ozs7VTtVO1csVzs7OzthOzs7O2M7Ozs7OzthOzs7YztnQjs7Ozs7O2E7Ozs7YztnQjs7Ozs7O1c7WTtZO2M7OztXOztTO007Ozs7OztNOzs7O08sZ0MsK0I7TTs7OztJLE07Rzs7STs7O00sVzs7Ozs7O0k7Rzs7SSxpQjs7Ozs7SztNLG1EOzs7Uzs7O1UsTTs7O1MsWSxNO1MsTTtRO0s7TSxtQjs7OztzQzs7O0ssUTs7Ozs7NEI7OytCO0s7YTs7O0ksNEIsOEI7SSxHLHNEO0k7SSxvQztJO0s7O00sZTs7O0ssVzs7STtLO0s7Ozt3QjtJO0ssYztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjs7VTs7OztZOzthLE87OztnQixTOztlO1k7OztXOzs7O1csTztVO1UsVztVLFc7Ozs7Ozs7Ozs7O2EsSztjLE07OztjLEs7d0I7Ozs7YTs7OztVLE07UztTOztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxPO1UsTztVLE07Z0I7VTtXO2lDLHNCO1c7Z0M7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7SztLLE87STtJLEksUTtJO0s7OztTO1MsZTtRO00sWTs7O1M7O1UsTztTO1MsTztRO00sVTtNLE07OztVO1c7Ozs7WSxXO1csTyx3Qzs7O00sWTtLLEc7Ozs7VTtVLE87UztNO007Ozs7Rzs7d0IsUztJLFU7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJOzs7Ozs7OztJLEksVywwQzs7Ozs7O0c7OztLO0ssRyx3QztLLGE7a0I7Syw0QjtLLFk7Ozs7Uzs7O1UsSTs7O1U7O1k7aUI7bUI7O1M7Uzs7O1MsTzs7O1MsZTtTO1U7VyxPO1csb0IsTyxxQztXOzs7NkIsTyxnQztjLEksaUI7Yzs7O2U7Z0I7Z0I7Z0I7YyxXO2M7ZSxLO2UsTztlLEs7ZSxPO2UsTztlLE87ZSxPO2UsTztlLE87ZSxPO2UsSztlO2M7ZSxJLGM7OztjOzs7ZTtnQjtnQjtnQjtjLFM7YzthO1csTztVOzs7OztVOztXLHNCO1UsTzs7OzhCOzs7UztTOztTLE07O1M7O1UsTzs7O2Esa0IsUTs7O2U7Ozs7aUMsTyxrQztnQixRO2dCLEk7Z0Isc0I7ZSxPOzs7K0M7O2E7WTtTO1Msb0I7OzhCOzs7OztVOztZO2lCOzs7Ozs7YTthO1k7UyxPOztLO0k7STtHOztJO0ssTztLLE87SyxPO0ksTztHO0csZ0I7Ozs7Ozs7Szs7OztNO29CO0s7STtJO0ssYTtLO0s7O0s7Ozs7SztJO0k7Ozs7O1MsSztVO1UsSztXO1k7OztlO2U7Z0IsRyw0Qzs2QjtnQjtnQixHLG9DO2dCLFk7Ozs7b0IsTTs7O29CO3FCLFc7cUI7Ozs7Ozs7cUIsVztxQixHO3NCLE07Ozs7O2dCLE87O2M7VztZO1k7WTs7OzttQzs7Ozs7UztRO0s7OztLO007OztTO1M7UztVO1UsUTs7O1UsSztVLE87Uzs7Ozs7Ozs7O1UsTTs7Ozs7OztRO0s7SztNLE87TSxNOzs7UyxXO1MsVztRO00sUTtLO007Tzs7O1U7VSxHLDJCOzs7OztnQjtVO1M7TTtNO087OztVLEcsMEM7VSxnQjs7VTtXO1csTztXOzs7VyxPO3FCOztVO1UsUztVO1U7VyxROzs7VyxVOzs7O1c7OztVLFc7VSxLO1csTzs7Ozs7Ozs7VSxNOzs7Uzs4QixtQixtQjtNOzs7O0s7Ozs7TTtNOzs7O00sZTs7O0s7O007TSxNOzs7TTtRLHFDO00sRzs7Ozs7OzthO2M7Ozs7bUM7SyxXO0ssTztJO0ksTzs7b0Isa0I7RyxnQjs7SSxxQyxPOzs7SztLO0k7SSxPO0c7Ozs7Ozs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdDLFE7O0s7O00sTTtNLE07TTs7O1M7UztVLE07UyxpQzs7VTtXLE87VyxROzs7O1k7YSxNO2EsTTttQjs7Ozs7Ozs7O1MsUSxNO1M7UTtLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTs7Ozs7Ozs7Ozs7VTs7Ozs7OztTO00sTzs7Ozs7STs7Szs7Szs7OztTO1M7UTtNLE07SztzQzs7O29CLDBCO0ksRztLO3dCLHdCO00sTTtNLE07SztzQzs7d0IsbUIsK0I7SSxXO29CLHVCO0k7SyxNO0ssUTtJO0s7O0ksYzs7SyxNO0k7OztLLE07SyxPOztLLEcsbUM7O0s7STtJLE87OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtHOztJO0ssVTtLOztlO0c7RztJLE87RztHO0k7d0Isb0I7SSxPO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7OztHO0c7Ozs7Ozs7Ozs7O0k7OztzQjtJLFU7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7O0s7Ozs7OztLOzs7STtJO0ssUTs7O0s7Tzs7Szs7Ozs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sYzs7Ozs7O087UTtRLE87Ozs7O007O0s7O0c7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkIsTyxpQztPLE87O00sYztvQjs7TSxPOzs7OztNLE87OztJO0c7O0csZ0MsZ0I7Ryx5QixTO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHO0k7SyxrQjtLLFE7dUI7O0ksTTtHO0c7O0ksTztHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7OzRCLDhDOzsrQixXLDhCO0csSSxTOztJO0k7SyxZO21DO3dCO0s7OztNOzs7O0c7O0ksVzs7SyxZOzs7TSxpQjs7SyxNO0k7SSxPLFc7RztHOztJOztJOztJO0c7OztLLEksbUI7SyxXO0k7SSxPO0c7Ozs7Ozs7STs7O0ksSSxVLG1DOzs7Ozs7Rzs7O0s7SztNLEksNkIsVTs7Tzs7USxNO3FCOzs7TTs7Ozs7OztXO1csTztVOzs7O00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7WTthOzs7aUIsbUIsUTs7OzttQixPOzs7bUQ7O2lCOztjLE07YyxRO2MsUTtjLFU7Ozs7Ozs7Ozs7O3VDOzs7OztZLE07Ozs7Ozs7O1csTztVO08sTzs7OztJO0k7Rzs7STt3QixTO0ksTztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssb0I7SyxPOzs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Ozs7Ozs7O1UsdUIsVTs7VSxNOzs7Ozs7Ozs7Ozs7dUI7a0I7OEMsUztLLE87OztLLDhCOzs7SSw4Qjs7Rzs7SSxlO0ksSSxnQzs7OzBCOzs7Rzs7STtLLE07SyxNOztHO0csa0MsZ0I7Ryx5Qix1QjtHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RyxxQyxTO0c7O0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLE8sMEM7SSxPO0c7O0k7a0I7Ozs7OztNOzs7Ozs7Ozs7Ozs7OztROztPOzs7Ozs7OztHOztJOztLLE07STs7SyxLO0ssVTs7Ozs7USxxQixJO2U7UyxNOzs7O1E7O1MsVTs7Ozs7UyxXO1E7USxHO1MsTTs7Ozs7SyxPOztJLE07Rzs7OztLLEksZSx3Qzs7OztPLE07Ozs7SSxPO0c7O0k7SyxNO0k7O0s7SyxHO00sTTtxQjs7STtJOzs7Ozs7Ozs7TTtPLFE7TyxNO00sVztLO0ssTzs7SSxhOztLLG1CLFE7Ozs7OztLLEksTyx5QixPO0s7STtJLGE7STtHOztJO0s7O00sTztNLE07TTt5QixZO0ssZTs7STs7Szs7O0k7Ozs7STtLO007OztLOztJLGdDLEk7STs7SztLO007eUIsWTtNLE87O29COzs7O0k7Szs7O0ssWTtLO0ssVTs7O0ssRzs7O087TztPO087Tzs7O1csVztXLE87VTtPO087O007TTs7O0k7SyxPO0ssWTtLLGdCO0ksTTtHOzs7STtJO0k7eUIsb0IsYztJLEksUyw0Qzs7Szs7OztNLE87SyxXO0k7STtLLFE7SyxVO0ssUTtJOztNLE07Ozs7Ozs7Szs7O1MsTTtRO007OztPOztPOzs7TTs7O1E7Ozs7OztzQjs7O1U7Ozs7Ozs7VzsyQjs7O1U7Ozs7O087Ozs7TTs7O1E7d0I7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO08sb0I7TyxVOzs7Ozs7Ozs7Ozs7OzRCLDZCO1E7O007O0s7TTs7O1M7UyxHO1UsTTs7MEI7O1E7SztLO007MEIsTyxrQztNLE87ZTtNLE07SztNOzs7VTtXLE87Vzs7Ozs7OztXOzs7Ozs7Ozs7VyxPO1csTztXO1U7UztTLE87UTtNO00sTztNLFU7Ozs7Ozs7Szs7TTs7O0s7OztNOzs7VSxpQixRO3NCO1UsbUIsVTs7O1csTzs7VTtTO08sUTtLO007TTs7Ozs7O0s7O007TSxNOzs7OztJO0ssUTs7OztLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7TTtNO0ssSSxXLHNDOzs7OztNLE07O0k7STtJO0k7SztNO08sTztPLFc7TyxVOzs7OztPLE07Ozs7Szs7STs7Ozs7Ozs7Ozs7OztJO0k7O2dCOztJLE87Rzs7STtJO0ssRyw0QztrQjtLLFk7Ozs7O1MsSSxXOzs7O1csTTs7O1M7VSxPO1UsTztTLEk7Ozs7O1UsTTs7O1M7OzthOztTLE87Ozs7O2lCOzs7O0s7O3VCO0ssTzs7Rzs7O0s7OztNLFM7Ozs7TyxNOztNLEc7Tzs7O0k7SSxPO0c7Ozs7Ozs7O00sbUIsVTs7O087UTtTLFM7UyxPOztXOzs7UyxJOzs7Ozs7O1M7VSxPO1UsTztVLE87O1k7Ozs7O1MsTTs7Ozs7OztTLE07Ozs7TSxNOzs7STs7O0k7O0ssRztNLFk7Ozs7aUM7Ozs7OztPLE07bUM7TSxNO2tDOzs7TSxXO00sRzs7O087USxPO1E7Ozs7Ozs7OztjO0ssYzs7Ozs7O1U7O1c7eUI7Ozs7Ozs7OztLLGdCO0s7O007O2dDO08sc0I7TTtNLEk7Ozs7Ozs7SyxjOzs7O00sc0I7TSxHO2lDO087OztPOztRLHNCO087O007TztRLE87USxRO1Esb0I7Tzs7Ozs7aUM7TyxPOzs7eUI7SyxPO0k7SSxXO0k7Szs7TSxzQjtNLE87Szs7Ozs4QixPOzs7Rzs7SSxJOztLO007STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SSxPO0c7O0ksa0I7STs7SztLO00sZTtpQjttQjtNLFk7Ozs7O1UsRztrQjtZLFc7WSxNOzs7O3FDOzs7OztXO1ksTztZO3lCOztZO2E7YyxVOzs7YyxVOzs7YTtjLFc7Yzs7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1U7OztjOzs7VSxPOzs7OztrQjs7OztNOzs7VTs7TSxPOztJOzs7SztNLFE7Ozs7O0ssb0I7SztLO0k7SSxPO0c7O0k7Ozs7O007TztRLE87USxPO1EsTztPLEssaUM7TztRO1EsTztRLE87TztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLEc7TSxPOzs7STtHOzs7SztLO0k7SSxPO0c7O0k7SSxrQjs7Szs7TTtNLE87TSxhO007TTtLOzs7Ozs7Ozs7STtJO0ssTztLLGU7SyxROztLLEksTyx5QixPO0ssVztJO0ksZTtJO0k7O0s7Ozs7Ozs7Ozs7Vzs7WSxNOztVO087OztNO08sTztnQjs7SyxZO0ssYTtLOzs7O00sTztNLE87Ozs7NEI7Ozs7MEIsTywyQjtLOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Szs7STtLO087SztLLGM7Ozs7TTtPO08sSzs7O1U7Ozs7OztVLFc7VTtVLE87UztNO007O0s7Ozs7OztNO0s7SyxPOztJO0ssTztLO087eUIsK0I7SSxZOztJO0ssUztLLFU7O0s7Ozs7Ozs7VTtXO1ksTztZO2M7Ozs7Vzs7Ozs7WSxPOzs7O1M7TSxPOzs7O007TTtPO1EsTztRO1U7O087Ozs7O1EsTzs7O0s7SyxPO0k7STtJO0k7Ozs7Uzs7VTtVO1UsTztVO3FCO1MsbUI7OEIsTyw0QjtTLGE7UztVO1csTztXLE87VTs7Ozs7O1UsTTs7O1E7Szs7STt5QixxQiw2QjtJO2dDLG1CLHlCO0k7bUI7O0s7OztNO00sTTt1Qjs7MEIsTyw0QjtLO00sTztNLE87SztrQztJO0k7O0ssbUI7O0ssTztJOztLO0s7O2M7Ozs7STtJO0k7SyxxQjtLOzs7Yzs7Ozs7STs7SyxxQixRO2lCOztLLE07STtJO0k7Szs7TTtNOzs7TTtNO0s7Szs7Ozs7O1Esa0I7OztTOzs7USxNOztPLG9COztROztTOztZLE87VztTO1c7OztZO1k7YTtjLE87YyxROzs7OztjLE07Ozs7OzthOzs7Ozs7O21CO2tCO2U7Ozs7Ozs7O2U7Ozs7YSxNOzs7O2E7O1k7VztROzs7TyxNOzs7OzttQjtLLHFCOztNLE07O0s7O0k7STtLOzs7UztTO1E7TSxPO007UTtVO00sTyxXO007USxXOzs7Ozs7TSxNOzs7O00sTTs7Ozs7SyxNOztJO0k7O0s7O0k7O0s7Szs7Ozs7Ozs7Ozs7STtJLGtCO0k7Rzs7SSxJLEs7Ozs7TTs7TztPLFM7TyxVOzs7O087USxTO1EsTTtRLGlCOzs7O087USxROzs7TSxJOzs7OztPLE07Ozs7TztRLE87USxPOzs7VyxXLG1CO1c7WTthLE87b0I7OztXLGM7VTtPOztNO08saUI7TyxtQjtPOztVOztPOztVOzthO08sTTs7O08sTTs7O08sdUI7Ozs7Uzs7VSxVOzs7Ozs7Vzs7WSxTO1ksTztjO1ksTTtXLHNCLE87Vzs7Ozs7Ozs7O1csTTs7O1MsTTs7OztPO1E7Ozs7OztNLE07O0s7Ozs7TTs7Ozs7Ozs7Ozs7STtLLE87SyxPO0s7Ozs7Ozs7Ozs7STs7Ozs7SztJO0ksTztHOzJCLCtCOzs7SyxZO0s7SztLOztNLFE7OztNOzs7O087UTs7Z0MsaUM7UyxNOzs7Ozs7OztPLE07OztNOzs7O1U7VyxROzs7VTtTO08sZ0I7TyxPOzs7O087USxPOzs7Vzs7Ozs7WTtZOzs7Ozs7VTtRLE07TTs7TyxNOzs7TTtPOzhCLG9CLGM7TyxjO08sTztPLE87TTtNOzs7O087O1U7OztPLGU7TTtNOzs7O1U7O1M7TTs7OztVLFk7c0I7O1UsTTs7UztNOzs7O1U7Vzs7Yzs7Ozs7O1c7Ozs7Ozs7VyxNOztTO007TTs7O1U7VSxPO1M7TyxTO087Ozs7Ozs7OztNOztLLE07STtJLE87Rzs7SSxZO0k7STtJOztJO0k7STtJLFk7OztLLE07OztJO0s7SyxTO0k7Rzs7STt5QixtQztJO0ssUTs7O0k7Rzs7STtLLFE7SyxVOzs7b0M7Ozs7O3dCOztNOzt1Qjs7O0ksTTtHOztJO0s7Ozs7Ozs7Ozs7O0s7aUIsTzs7SyxNOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7OztPLEc7Ozs7O00sRztNLEc7TSxHO00sRzs7Ozs7SyxNOzs7STtHOztJO0k7Szs7TSxVO007Ozs7Ozs7Ozs7OztXLE07OztVOzs7VztXOzs7VTs7Ozs7Ozs7Ozs7TTs7SyxNOztHOzs7SyxJLE0sMEM7O007Ozs7O007Tzs7OztPO1M7OztPO1EsTztRLHVCOzs7O08sTTs7Ozs7c0I7OztNO08sTTtNOzs7VSxXO1U7VyxZOzs7O2E7O2MsUztrQzs7Ozs7O1c7Ozs7a0M7OztTO087UztPOzs7VSxnQjtVLE87UztNO007TyxPO08sTzs7OztNLEs7TyxNO007TyxPO08sTzs7O0s7O00sdUIsZTtNLFU7OztNO0s7STtJLE87Rzs7O0k7STtJO0ksSSxnQjt5QixvQixjO0k7SyxTO0ssUTtLOztLOzs7O00sTTtNLFE7SztJO0k7SyxjO0s7OztLOztNLE07Ozs7O0k7SyxhOztJOzs7OztTO1M7VSxXO1U7Ozs7OztVLE07OztRO0s7OztLO0s7TSxXO007Ozs7OztNLE07O0k7STs7Ozs7Ozs7STs7Ozs7O2E7Ozs7Ozs7OztJO0ssTztLLE87OztLOzs7Ozs7OztROzs7Ozs7Ozs7SztJO0k7SSxjOzs7SyxNOzs7STtLO0ssVztJO0s7O1E7Ozs7Ozs7SyxNOztJOztPO0k7Szs7UTs7Ozs7OztLLE07O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJOzs7Ozs7Ozs7Ozs7O0k7SyxXO0s7SyxXO0k7STtJOzs7O0ssTztLLE87Szs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFk7O0s7O007c0M7SyxXO0k7SSxPO0c7OzRCLE8sc0M7STtJO0k7Rzs7STtLOzs7UyxXO1MsTztRO00sSztNLE07TSxXO0s7SztLOzs7OzRCOzs7Rzs7STs7Ozs7OztjO2UsTztlO2UsTztjLE87O2E7Rzs7SSxzQzs7cUIsWTtJLE87Rzs7STs7O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPO2dCLE87Ozs7eUIsTzs7O08sTzs7O08sTzs7O08sTzs7OztRLE87Ozs7Ozs7O087O1E7VTs7TyxPOzs7Ozs7Ozs7Ozs7Tzs7O3dCLE8sMEM7O3dCLE8sMEM7TztPLE87OztPOzs7d0IsTywwQzs7d0IsTywwQztPO08sTzs7Tzs7O1E7d0IsTywwQzs7d0IsTywwQztPLE87O087Ozs7O1E7OztXLE87Ozs7Ozs7OztROztXLE87VTs7O1csTztvQjs7O1U7TztPOztRO1MsTzs7UyxPOztTLE87USxPOzs7Ozs7Ozs7Ozs7TztRLE87O1EsTzs7USxPO08sTzs7OztPOzs7OztTOzs7O2EscUIsVzthOzs7O2tDLFM7OztZO1UsUTs7Ozs7O2M7O2UsVTs7O2MsRyxpQztjOzs7a0I7a0IsTztpQjtjOzs7O2dDLGtCLFM7Ozs7O2Msb0IsTztjLEcsbUM7YztlOztrQjs7bUIsTztrQixPO2lCOzs7a0Isa0IsUTs7Ozs2RDs7b0IsTzs7O21EOztrQixPO2lCO2M7MkI7OztVOzs7Ozs7Ozs7O1ksVztZLE87VztRO3VDLFk7Ozs7Ozs7WTs7Ozs7Ozs7VztROzs7OztXO1csTztVOzs7O08sTzs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087Ozs7UTtVOzs7Ozs7USxPO08sTzs7Ozs7Ozs7OztPOzs7O1E7d0IsTywwQzs7O1csTztVO08sTzs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Tzs7OztROztXOzs7O1k7Vzs7dUI7dUI7O3VCO3VCOzs7OztXOzs7Ozs7OztXOzs7Ozs7OztXOzs7Ozs7OztRLGdCLE87UTs7Ozs7Ozs7O3dDO08sSSxxQjtPLE87OztPLE87OztPO087UTsrQixhO087c0MsUztPLE87OztpQjtpQjs7TyxxQjtPLE87O087O1E7Ozs7TyxPOzs7Tzs7UTs7VyxZLE87O1csTzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7O0s7TSxNO00sTztNLFU7OztNLEksVTs7OzZCOzs7Ozs7Ozs7Ozs7Ozs7TyxjO3FCOztPOztNOztLOztJO0c7O0k7SSxPO0c7O0k7OztLOztJO0c7O0k7OztLLE87O0k7Rzs7STs7Tzs7Tzs7Ozs7OztHOztJO0ksb0I7RzsrQiwwQzs7STtJLHdDO0ksWTs7Ozs7USxHLG9DO1EsRyxvQztROztVOzs7Vzs7O1k7OzthOzs7YzttQjtTO1UsVTs7O1c7OztVOzs7O2dDOzs7UTs7O1E7Ozs7O1EsTTs7STtHOztJLEksMkIsSTs7OzsrQjs7Ozs7Ozs7OztPLEc7OztXOzs7OzttQjs7OzthLG9DOztJO0c7NEIsdUM7b0MsdUM7O0k7Ozs7Ozs7TztTO1c7USxJLFUsNkM7Ozs7K0I7Ozs7OztJO0c7O0k7Ozs7Ozs7O1E7OztTO1E7Ozs7O0k7Rzs7STtJLGdCLG9DO0ksWTs7O0ssRyxvQztLLEcsb0M7SyxHLG9DO0ssRyxvQzs7STtHOztJO2dCOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7O0k7Ozs7O3VCOzs7STtHO3FDLHdCOztJO0k7Ozs7Ozs7MkI7O1MsSSxXLGlDOzs7aUM7Ozs7Uzs7Ozs7O2M7O2UsbUI7ZSxPOztjO2E7Ozs7VTtZOzs7Ozs7a0YsZTs7UyxPOzs7Ozs7Uzs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7O0s7O0c7Rzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHOztJLFU7O0ksSSxXLDRCOzs7NEI7OztHOzs7O0ssSSxxQjtLLE87STtJLE87Rzs7SSxPO0c7O0ksb0I7SSxPO0c7OztLO0s7STtJLE87Rzs7OzJCLE8sMEI7SSxPO0c7O0ksbUI7Rzs7SSxPO0c7O0k7O0ksTztHOzs2QixtQix3QjtJLE87Rzs7cUIsd0I7SSxpQjtHOzJCLGE7O0ksTztHOztJLE8seUI7Rzs7STtrQzs7OzJCOztPOztPOzs7O1E7UTs7Vzs7TyxzQjs7Tzs7USwwQix1Qjs7USxzQjtPLHNCOzs7Ozs7Ozs7OztRO1EsSSxVO1Esc0I7O087Ozs7O1csc0I7O1E7VTtRO2tDO1E7USxzQjtPLHNCOzs7Tzt5Qix1QjtRO1MsTztTLFE7OztTLE87UztRLHVDOztPOzs7USw0Qix1Qjs7OzZCO1E7TyxzQjs7Tzs7O1Esc0I7TyxzQjs7Tyx5Qzs7OztTOzs7VTs7MkI7Ozs7O087OztRLHNCO1E7Ozs4QjtPLHNCOztPOzs7USxzQjtPLHNCOzs7OztRO1M7Ozs7O087O1E7USxzQjtrQztROzs7WTtZOzs7O1k7VztXLE87O1E7NkI7TyxzQjs7Tyw4QjtPLHNCOztPOzs7O1E7UTtrQzs7UTtRLDBCO08sc0I7O087O1EsVTs7USxzQjtPLHNCOztPOzs7Ozs7NkI7OztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRLDBCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRO2tDOztRO2tDOztRO1EsMEI7TyxzQjs7Tzs7O1E7UTtRLDBCO08sc0I7O08sZ0M7TyxzQjs7Tzs7Ozs7UTtRLDBCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7O1EsNEM7O1E7USxzQjtrQzs7UTtRLDBCO08sc0I7O087Ozs7UTtRO1EsNEI7TyxzQjs7TywwQztPLG1CLE87O08sOEI7TyxzQjs7TyxvQixVOzs7Ozs7TztPLHNCOztnQzs7O08sa0IsTzs7Tzs7Tzs7Ozs7UTtRLG1CO2tDOztRO1Esc0I7USwwQjtPLHNCOztPLGdDO08sc0I7O087OztRO1EsNEI7TyxzQjs7Rzs7STs7OzJCOzs7Tzs7O1M7Ozs4Qjs7O1k7O1k7O1k7O1k7O29DLG1CLFU7YSxVO2E7WTs7WSx1QixPO1k7OztZOztZOzs7O2dCO2dCO2U7YSxhO21DO2EsTzs7OztnQjtpQjs7a0I7a0I7a0I7MEM7O2lCO2tCO2tCOzBDO2dCOzthO1k7OytCOztZOzthLGlEO2EsWTs7OztnQjs7YTtZOztZOzs7O2EsZTthO1k7b0I7O1E7USxPOztPLDRCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Ozs7OztXO1csc0I7VTs7O087c0M7OztXOzs7Ozs7OztnQjtnQixzQjtlOzs7Ozs7O21COzs7Ozs7TztRLE87O087O0c7NEI7eUI7O0ksdUM7SSxzQjtHOztJO0ksc0I7Rzs7STs7O08sNkI7TyxzQjs7MkI7OzZCOztPOztPLDRCO08sc0I7ZTs7Rzs7SSxpQjtJLDBCO0ksc0I7Rzs7STs7O08sc0I7O08seUI7TyxzQjs7Tzs7OztRO1E7a0M7O1E7USwwQjtPLHNCOztHOztJOztLOztNLE07TTtNO007TSx1Qjs7OztLOztNO00seUI7OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7O1EsNkI7USxxQjs7MkI7O1E7Ozs2QjtTLE07UztTO1EsbUI7O1E7Ozs7OztZLHFCOzs7UztTLG9CO2lDOztTO1Msd0I7USxxQjs7UTs7OztTO1M7O1k7O1EscUI7Ozs7OztHOztJO3VCOztJO0c7O3FCLGE7STtLLGlCO0s7STtLOzs7Uzs7O1U7VTtVOzs7VTs7UztVLGU7VTtTOztNLE07TSxROzs7O0s7TTs7OztXOzs7c0I7VTs7OztPLFE7TSxHOzs7Ozs7OztTOzs7VTtTOzs7STtHOztJOzs7Ozs7SSxrQjtJLDRCO0k7SywwQjtLLHdDO0c7O0k7SztLLE07cUIscUI7STtLLE0sVztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7Szs7O0ksSTs7Ozs7UztTO1E7a0I7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7OztTOzs7Ozs7O0k7O0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7STs7O1EsTTtPO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07TztxQixzQyxZO3FCLHlDLFk7eUMsNEI7NkIsd0I7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOztHOztJOzs7O1EsSSxtQiw4Qjs7O21DOzs7Ozs7OztZLEksbUIsOEI7Ozt1Qzs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7OztRLEksbUIsOEI7OzttQzs7O087OzJCOzs7Tzs7O21COztPOztHOztJO3lDOztJLE07Rzs7SSxPO0c7O0k7Rzs7SSxZO0ksaUI7Rzs7STtLLFE7Szs7SztJO2lCOzs7O0c7O0k7SyxPO0ssUTs7Ozs7TSxHLHVDOzs7SSxNO0c7O0ksTywyQjtHOztJO0ksTztHOztJOzRDOzs7OztNOzs7STtHOztJOzRDOzs7O3dCOzs7O007OztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7Rzs7STs7SyxNOztJO0c7RyxzQjs7STtJOztNOztPO2M7VTs7Szs7Ozs7O00sTTs7Ozs7SyxNOzs7Rzs7STtJO0c7O0k7SztLOzs7Ozs7Ozs7O08sTTs7Ozs7O0c7O0k7Ozs7Uzt1RDtTO1E7SSxPO0c7O0k7Ozs7Uzs7VTs7OztXLE87VyxROzs7O1c7WSxJO1ksVTsyQzs7OzthLHFCO2MsVztjLE87Ozs7Ozs7YyxLO2UsVztlOztnQixNO2U7O2dCO2dCOztnQixzQjtlLE87Ozs7WSxtQjthLFc7YSxPOzs7Vzs7VSxNOztTO1E7SSxPO0c7RztJO0k7STtJOztJOzs7OztHOztJO0k7Ozs7STs7SyxzQjtLLE8sa0I7STtJLEc7SyxNOztJLFM7Ozs7O00sTTs7O0k7Rzs7O0ssK0IsTztLLE8sNEI7STtJLE87Rzs7STtLOztJOzs7Ozs7OztTOztVLHNCO1UsTTtrQjs7Ozs7Ozs7Ozs7Ozs7UztTO1Usc0I7VSxRO1UsVTs7O1UsTzs7O2E7OztjO2M7YSxzQjtZO1M7Ozs7Uzs7O1Usc0I7VSxLO1Usb0I7VSxPO1UsVztrQjs7O1M7O1UsTztVLE07O1M7VSxPOzs7YTthO1k7VSxNOzs7YTtjLFE7OzthOzs7Ozs7O2MsVztjO2UsYzs7Ozs7Ozs7Ozs7OzthO2M7ZSxNOzs7ZTtjOzs7Ozs7YTtjLFU7OzthO2E7WTtTOzs7OztTO1U7O1csVTs7OztXLE87VyxXO21COzs7UyxJLGtDO1M7Ozs7Ozs7STs7SztLOztNO00sUztNO007TTtPLE87TyxPO007TTs7SztJO0ksTztHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7Rzs7OztJLFk7c0U7SSxNO0c7OztLLDRCO0k7O0s7TSxTO007d0IsTTs7SztNOzs7VTtVLE8sa0I7UztPLE07Ozs7O007O3lCLG1CLE8sd0I7TyxjO00sTTs7Ozs7Ozs7SztLO0k7Ozs7b0IsTztNLHNDLE87TSxHOzs7TyxJOzs7O0s7MEIsb0IsMEI7SztNLFc7TTtNOzsrQjs7OytCOztNO00sTztLO0ssTztJOztLLGtCLE07OztNLG9CO007O0ssTztJOztLLEc7TTtNO087TyxZOztPOzttQjtPLE87Ozs7STs7SztNLE87TSxPO00sVztLLE87STs7SyxXO0ssVzswQixPLCtCO0s7TSxTO00sd0I7SyxPO0k7O0s7O3VEOztLLGdCO0ssTztJOztLLHdDOztLLE87STs7O0s7Szs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTs7O2E7O2M7YzthO1k7VSxNO1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzswQixjOzBCLGM7O0ksTztHOztJOzs7O0s7O0k7Rzs7Ozs7STtzQixPLGMsZ0M7O0ssTyw2QixPLDBCO0k7SSxPO0c7OztJOzs7Ozs7TyxHOzs7O1ksa0M7O2EsTTs7WSxnQjtXO3dCOzs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7VSxrQzs2Qjs7VTtTO3NCOzs7Szs7O1M7UyxPO1E7TSxNO007TTtNO007OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztROzs7Uzs7O1UsUTtTOztXOztZLE87WTs7WSxPO1c7VztXLFc7VyxPOzs7VyxvQjtXOzs7OztvQjtXOztVLGE7dUI7VSxlOzs7Uzs7Ozs7Ozs7Ozs7O1E7TSxhOztNOztNLFU7O087Ozs7OztXO1c7VTtRLFE7USxPO1EseUM7USxPO1Esc0I7TyxHO1EsZ0I7UTs7Ozs7O1k7WSxPO1c7UTs7Ozs7TSxXO007Ozs7O0s7O0k7SSxtQjtJO0c7OzZCLGU7NkIsZTs7SSxRO1U7SSxXOztLOzs7UzsrQzs7UTtLLE87O0k7Rzs0QixTOzs7Ozs7STtJOzs7Ozs7Ozs7Ozs7OzRCLGtCLDhCO1MsTzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7RztHO0k7STs7SSxtQixPO0ksVztHOztJO0k7OztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOztJLFk7O0k7Rzs7SSxrQjtHOztJLHdCO0c7OztLOztJO0ksTztHOzs7O0s7O0s7TTs7SSxJLGE7O0ssK0I7SztJOztLOztrQjs7O0k7SSxvQixPLHVCO3VCLE8sdUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztTO1M7Ozs7OzttQjs7O1E7SyxXOztLLHdCO0ssZTs7bUI7TSxNOzs7Ozs7O0s7O08sTTs7Ozs7SztLOzs7O087O1EsTztRO1U7YTs7Tzs7O087USxNOzs7O1c7VztXO1c7VztXOzs7VTtPOztPOztRO1E7Ozs7Ozs7Ozs7O1M7OztVO1U7O2E7YyxPO2E7YyxZO2MsTzthLE87WTs7VTtTOzs7O08sTTs7O08sTztRLE07TzsrQixPLDJCO1EsZTtRLE87USxjO087TztRLFU7OztXOzRCLFk7VyxlO1c7Ozs7OztxQjs7O1U7Tzs7aUIsZ0M7aUI7OztnQjs7OztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087Ozs7O1MsSztVLE07c0I7OztRO1MsYTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE07OztROztTLE87UyxNO1M7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7WTs7Ozs7dUI7Ozs7OztXLHVCOzs7Ozs7Ozs7Ozs7OztPLEc7UTtvQjs7O1M7Ozs7VTtRLFc7USxNOzs7O1E7UyxPO1MsTztTLE87UyxPO1MsSztROztPO087USxnQjs7O1c7Ozs7O1c7O1U7UTs7UTs7OztTOztTLFU7Ozs7UztTOzs7WTthLE87YTtlOzs7O1k7VztTLE07UTtRO1MsVTs7OztRO1E7O1E7UyxNO1MsTTtRO1MsTTs7OztVLFc7VTtVO1csTztXLFU7O1UsTTs7O1M7Ozs7Uzs2QixZO1UsUTs7O2EsWTs7Ozs7ZSxHO2dCLE87OzthLE07O1k7VSxNOztVLE07OztRO1M7Ozs7Ozs7UTtTLFU7OztTOzs7Ozs7UTtPO087TztPOzs7UTs7Ozs7YTthO2E7YTtjLE87YyxjO2M7d0I7YTs7Z0I7O2E7YSxNO1k7Uzs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTs7OztZO1k7VztROztPOzs7VztXOzs7Ozs7cUI7OztVO1EsTztPOztpQixnQztpQjs7O2dCOzs7OztPLEc7OztTLE07O087O3NDO1E7dUI7UTt5QixPLDZDO1EsZTtRLGdCO08sRztROzs7O1U7O087USxXO1EsaUI7OztXOzs7Ozs7Ozs7VTs7UTs7O1MsbUIsbUI7UTs7Tzs7O087USxNO087OztTO1MsTTs7O3dCOzs7UTs7O1MsYztTOzs7Ozs7O1c7VztZLFE7OztXO1k7Ozs7O2M7Ozs7Ozs7O2MsTTs7Ozs7OztXO1c7Vzs7WSxPO1c7Vzs7OztXOztZOzthO2EsVTs7O2dCLHNCO2dCO2lCLE07OztnQjtnQjs7WTs7OzJCO1k7YTtjOztjOzs7Ozs7OztlOzs7Ozs7YztlLE87ZSxJO2M7Ozs7OztXOzs7O21COzs7VTs0QixtQztPOzs7O2tDLDBDO1E7Ozs7Ozs7Ozs7OztPOzs7OzttQjs7Ozs7Ozs7Ozs7OztPOztRLFM7USxnQjtPO2dDOzs7O1c7Vzs7Ozs7O3FCOzs7VTtPOztpQjtpQjs7O2dCOzs7OztPO1E7O1M7UztTLGE7UTtRLFU7O1E7OztZLGlCLFM7WTtXO1M7UztTO1M7OztRLEksb0I7UTs7Ozs7O1k7WTtXO1E7Ozs7WTtZO1c7UTtROztTO1M7OztZO1k7YTs7O3NDLHNCLGE7aUIsTztnQjthOzs7Ozs7Ozs7O2UsSztnQjtpQixPO2lCO21CO3NCOzs7Z0IsTTs7Ozs7OztlO2dCLFc7Z0I7Z0I7Ozs7Ozs7Z0IsTTs7O2U7Ozs7Z0M7YSxNOzs7VztTO1MsTzs7OztROzs7Ozs7a0I7Ozs7Tzs7UTtROzs7Vzs7cUI7cUI7b0I7O1U7TyxlO087OztXOzs7YSxNOzs7OztXO1k7Z0MsUzthOzs7Ozs7d0M7c0M7OztXO1U7UTtROzs7UTs7Ozs7WSxNOzs7Ozs7Ozs7OztTO1UsTTtTOzs7O1Msa0I7Uzs7Ozs7O21COzs7Ozs7Tzs7Ozs7Ozs7UztVLE07UztVLFE7Ozs7Uzs7Ozs7Vzs7UyxjOzs7VTtVO3FCO1U7VTtVOzs7Ozs7Ozs7O1MsTTs7Ozs7TztRLE07TztPO1EsVTs7OztPOztPO08sVztPO3NDOzs7O1c7OztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1csTztVO087OztPO1EsTTtPOztRLFU7OztROytCLE8sNEI7USxRO1EsTztRLE87USxVOzs7USxHO1M7VSxPOzs7YTs7Ozs7YyxROzs7O2U7O2dCLE07ZTs7OztjLFU7Yzs7YTtZO1UsVTs7O1UsVztVOzs7YSxPO1k7VSxzQjtVLE87VTtVLHVCOzs7YTthO1k7VSxTO1M7VSxNOztTOzs7OzthO1k7VSxJO1U7UyxPOzs7Ozs7Ozs7Ozs7OztPLE07OztPOztRLEs7USxPO087Z0M7Ozs7VztXOzs7Ozs7cUI7OztVO087OztPO1EsTTtPLEksSSx5Qzs7UTs7O087O1E7UTtPOzs7Ozs7Ozs7O087Ozs7Vzt3QixPO1csTTtVO1E7Tzs7O08sTTtrQzs7O087USxNO087USxXOzs7Ozs7O1csc0IsUTs7WSxNOzs7VyxPOzs7Ozs7Ozs7VTtPOzs7OztJO0k7OztlOztLOzs7Ozs7OzBCLFM7STtJLE87O0c7OztJO0k7SztLO0s7STtLO0s7SztLO0s7Ozs7OztLO0s7O0c7O0k7OztlOzs7STtJO0s7OztJLE87Rzs7STs7O2U7O0s7Ozs7TTtPLE07OztLO0k7SSxPO0c7OztLO0ssTztJO0ksTztHOzs7Szs7Ozs7O007TSxPO007K0M7SyxPO0k7SSxPO0c7O0k7STtLLEs7SztJO0s7Szs7SSxXO3FCLE8saUI7STtJLEc7Syw0QztJLEk7O0s7Ozs7Ozs7OztLLGtCLHFDO0s7TSxLO00sTztNLFU7TTtROzs7Ozs7TTtROzs7Ozs7SztJO0k7SyxROzs7O0k7Rzs7STtLLGlCO0ssUztJO0k7SyxLO0s7SyxPO3FCLE8saUI7STs7O0k7RztHO3dDLGdDOztJO21DOztHOztJO0ssTztLLFE7SyxPOztLO0s7SyxPO0k7STtJO0k7SSxPO0c7O0k7STs7Ozs7Ozs7VTs7OytCLDhCO1csTztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7bUM7YSxPO1ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1Usc0M7VSxXOzs7O2M7Ozs7ZTtjO2U7ZTtnQjtpQjs7O3FCO29FO3FCO29COzRCOzs7Ozs7YzthO1UsTzs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7OztjO2Msd0I7OzthO1csTztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7Vzs7O2M7OztpQjs7O2tEOztpQjtpQjs7aUI7O2lCOztxQzt5Qjs7YTtXLE87VTtXOzs7O2U7ZTs7O2M7WSxPO1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7STs7OztROztTOzs7WTs7Ozs7b0MsOEI7ZSxPOztlOztnQjt1QyxpQztlLE87Ozs7Ozs7Ozs7bUI7bUI7a0I7ZSxPOztlOztlOzs7O3VCOztZO1c7USxPOztROzs7OztRO1MsTzs7UTtnQjs7O0c7O0ksWTs7STtLLE87O0k7Rzs7STs7O0k7OztJOzsrQiw4Qjs7SSxVOztLOztNLFc7O00sTTtLO0k7SSxPO0c7OztLLGU7O00sTTtLO0k7SSxPO0c7O0k7Ozs7O00sTzs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VSxzQjtVLFc7UyxPOztTOzs7VSxVOzs7VTtZO1UsTztTO1Usc0I7VSxNO1MsTzs7OztLLE87O0c7O0k7STs7Ozs7Ozs7O1U7OztXO1csYztVLE87Ozs7Uzs7O1U7WTsyQjtlO1U7VTtTLE87Ozs7Ozs7O1M7O1Usc0I7VSxXO1MsTzs7Ozs7O1M7OztVO1U7UyxJLHVDOzs7OztVLE07Ozs7Uzs7OztVOzs7O3NCO1M7UyxJLHlDOzs7Ozs7VSxNOzs7O0ssTzs7Rzs7STtJOztLO00sUztNLEc7TyxXO00sWTs7Tzs7O1E7USxZOzs7Ozs7TSxXO00sVzs7O0ksTztHOzs7STtJO0k7SSxVO0k7SSxZOztLOzs7VztNLFU7OztLO0s7SztLO0s7TSxVOzs7TTtnQjtLO00sYztNLFc7TSxrQjtLLE07O0ksTTtHOzs7SztLO00sTztNLEs7SztNOztTOzs7UyxHLG9DOzs7Ozs7OztPOzs7Ozs7Ozs7Ozs7O007OEIsaUM7TyxROztNLE87O0k7O0s7TSxPO00sSztLOzs7Ozs7Ozs7O21DLGlDO1csRztZOzs7Ozs7Ozs7O2tDLHNCLG9CO2UsTzs7O2U7OztrQyxzQixvQjtlLE87Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7OztLLFc7SyxXO1E7TSxNO0s7SyxPO0k7SSxJLFcsMkIsYzs7OztLO0s7O0c7Rzs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87Ozs7aUMsa0IsZTtTLE87OzhCLE87OztTO1Msa0IsTzs7Uzs7Ozs7Ozs7OztNLGtCLE87O007O0s7STtxQjtJLEk7Ozt3Qjs7O0k7Rzs7STs7Yzs7K0M7YzthOztHOztJOztjOzREO2M7YTs7Rzs7OzttQixPO0ssc0M7Ozs7NEI7OzhCOzs7Ozs7cUIsWTtJLCtCO0c7O0k7STs7Ozs7Ozs7SztNO007Ozs7Ozs7Ozs7USxNOzs7Ozs7O0c7O0k7STs7Ozs7OztVLHdDO1UsVzs7Ozs7Ozs7Ozs7Ozs7O1M7O0s7O0c7O0ksWTs7OztLLGdDLFU7Ozs7OztNLGM7Ozs7TyxzQyxPO087USxXO1E7UyxXO1M7VSxXO1U7VyxXO1csUyxPOzs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7O0ksa0IsTzs7SSxJLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7Rzs7STt1QztHOztJLDJCOztLOztJO0ksVTtJO0k7Rzs7STtJO0s7O0s7STtLOzs7Szs7USxXO1E7TztLO0k7STs7O0s7NkI7Ozs7Tzs7UTs7O1E7Ozs7OztZOzthLFc7eUI7YTs7YSxNOzs7Ozs7WTs7YSxXO3NCOzs7Ozs7TztPOzs7OztpQjs7Ozs7O1EsSSwwQztROztPOztRO1E7USxTO1E7O2U7O1EsVTs7Ozs7UyxHOzs7OzttQjs7O21COzs7Ozs7O087O1E7Ozs7O2tCOzs7O087TztROzBDLG1DO29DLHVCOzs7WTtZOzs7Ozs7O1k7VztTLHVCLDRCO1M7dUIsa0IsbUM7bUMsa0M7aUMsd0I7OztZO1k7Vzs7O1k7O2U7O2U7dUI7O1c7OztZOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlO3VCOztXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7YSxrQjthOztZO1k7Vzs7O1k7YTs7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7Ozs7O2U7Ozs7Ozs7OztlOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Vzs7O1ksNEI7OzthOzs7WTtXOzs7WTs7Ozs7WTtXOzs7WTthOzs7O2U7OztlOzs7Ozs7ZTs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7Ozs7O2U7OztlOzs7Ozs7ZTs7Ozs7O2U7Ozs7Ozs7O2U7Ozs7Ozs7OztlOzs7O2U7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7O2U7Ozs7Ozs7O2U7Ozs7Ozs7ZTs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7O2UsTTs7Vzs7O1c7O1M7Ozs7Ozs7USxNOzs7TztPOzs7Ozs7Ozs7O1U7O1c7Ozs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7Ozs7O1E7MEI7Tzs7Ozs7Ozs7OztPOzs7Ozs7Ozs7OztROzs7UyxXO1E7Ozs7Ozs7Ozs7TyxLO1EsTTtPOztRLE87USxPO21CO1EsTztRLE87USxPO1E7cUI7USxPO1EsTztRLGE7UTtRLE87USxPO1EsUztRLE87USxNO1E7YztRLE87USxlO1E7VTtRLFc7Tzs7Ozs7Ozs7OztPO1EsTTtPOzs7Vzs4QjtXOztZO1k7O1csUztXOztXOztZO2EsUzthLEcsc0M7YSxZOzs7YztlLFc7ZTs7Ozs7Z0IsTTs7OztjO2UsUzs7Ozs7YTs7O1c7VztVO1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7VztZOzs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7Ozs7Ozs7Ozs7TztPO1E7OztZO1ksTztXO1csTztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQixnQztnQjtlO1k7Ozs7OzRCOzs7OztXO1k7O2dCOzs7OztZLFU7OzthO2M7OztjO2E7YyxNOzs7WSxNOzs7VyxlO1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7NkIsVyx5QjtVLFM7VSxPO1UsTzs7VTtrQyx5QztXLE87VTtXOytCLHVCO1ksTztXO1k7YSxzQjthLE87YSxXO1k7Ozs7Ozs7Ozs7Ozs7Ozs7O087OztROzs7VSx1QjtVOztZLFc7WTtZLEk7Ozs7Ozs7Ozs7VTtXO1ksTztZLFc7OztZO1c7Ozs7OztROztTLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21CO3FCOzs7Ozs7O21CLE87O21COytCOzttQixrQjtrQjtrQjttQixTO21CO21CLFk7a0I7aUI7Ozs7O2E7YTtjLFc7YyxXO2MsTztjLFc7Ozs7Ozs7Ozs7OzthLEs7YTtjLEs7Ozs7a0I7Ozs7Ozs7OzRDOztpQjs7OztjLFM7YyxXOzs7O2tCOzttQixpQjtvQjs7Ozt3Qjt3Qjs7Ozt1Qjs7Ozs7O3VCO3NCOztrQjtpQjs7Ozs7OztrQjs7O2tCOzsyQjsyQix3QjswQjtpQjs7Ozs7Ozs7ZSxNOzs7Ozs7O21CLDBCOzs7Ozs7cUI7c0I7c0IsTyx3QiwwQjs7O2dCLEs7Ozs7cUI7b0I7aUIsRzs7Ozs7Ozs7ZSxNOzs7Ozs7Ozs7YyxlOzs7Ozs7OztlLGE7Ozs4QjtlO2dCLGdCO2dCOzs7Ozs7Ozs7Z0IsZTtnQjs7Ozs7Ozs7YTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPLHVCLE87TztPO08sSSxxQjs7Ozs7OztrQyx5QztVLE87Ozs7Ozs7TztPO087Tyx5QjtPO087UTs7Ozs7UTtPOzs7OztpQjs7OztPOzs7UTs7Ozs7Tzs7O08sTztRLE07TzsrQixPLDJCO1EsVztRLFc7Tzs7VTt1QztTO087OzZCLGdEO1EsTztROzJCLFk7USxXO087dUM7OztPOzs7Tzs7O1E7USxlO087UTtTLE87UyxVO1MsTztTLFU7Ozs7Ozs7O1M7Ozs7VSxPO1UsVztVLE87VSxXOzs7Ozs7Ozs7WTs7YTthOzs7WTs7OztTLE07O1EsTTs7Ozs7UTs7UyxzQjtTLFE7OEIsYztTLFc7UyxPO1Msb0I7UyxNO1M7UTs7Ozs7a0I7Ozs7OztPO1EsTTs7OzJCO1E7O1M7Uzs7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7USw2QixPO1E7UTtTLE87UyxjO1E7UTs7O087OzJCLFM7OztXLE87VTtROztROzs7OzthOzs7Ozs7Ozs7Ozs7Tzs7VSxXO1U7NkI7Uzs7Tzs7Ozs7O1UsTTs7Ozs7TztjO1E7OztZOztXO1csTztVO087UTs7UyxXOzs7WTthLFE7OztZO1ksSTs7Ozs7YTtjLFU7OzthO2E7O2dCO21DO2U7YTs7O1k7VztTLG9COzs7Ozs7UTs7OztZLEk7Ozs7O2E7cUMsb0IsYztjO2dCO2M7O2MsTTthOztpQyxZO2MsYztjOzs7O2dDOztrQixLO21CO2tCLEk7OztjO2EsTTs7OztZO1c7UyxzQjs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O29DLHVCO1E7VTtRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Tzs7VTt5QztTO087O3lCLGtEO1EsTztRO087Ozs7O2lCOzs7O087Ozs7UTtPO1E7O1M7UztRO1E7Ozs7Ozs7OztPO087O087OztRO1E7Tzs7Tzs7O1E7UTtRO087Ozs7O2lCOzs7O087Ozs7OztRO1E7OztrQzs7O1MsTTtROztTLE87UyxPO1MsVztTLHVCLGU7Ozs7Ozs7TyxJLG1EO087Ozs7O2lCOzs7OztPO08sSSxNLHlDO087TztPO1EsTztROztxQztPOzs7Ozs7Ozs7Ozs7UTtRO1MsVzs7OztTLFc7Ozs7UTtRO1E7UTtTO1UsTztVLE87VSxVO1M7UztTOzs7Ozs7UyxNOzs7UTtTO1MsTzs7Ozs7O3NDOzs7UTtTLFc7Ozs7UTtRO1E7UTtTLEs7UztTLG9CO1E7UTs7O1MsVzs7Ozs7Ozs7Ozs7Ozs7WSxLOztZOzs7Ozs7UztpQjtvQjtVO1c7WSxPO21CO1c7WTtZO1ksSTs7Ozs7O1k7Ozs7O1U7VyxjO1c7Vzs7b0I7Ozs7Ozs7O1csTTs7OztTO1UsVzs7O1M7UyxJOzs7OztVOztXLFc7VSxNOzs7Ozs7Ozs7OztPOzs7Ozs7Ozs7OzBCO08sSTs7Ozs7Ozs7Ozs7O2MsSSxXOzs7OztlO2dCO2lELHFCO2dCO2tCO2UsTTs7O2M7ZSxROzs7Ozs7YyxJLFc7Ozs7O2U7Z0IsTztnQixROztnQjtlO2U7Ozs7YztlLFE7Ozs7Ozs7Ozs7O2EsSSxXOzs7OztjO2U7Z0QscUI7ZTtpQjtjLE07OzthO2MsUTtjLFc7NEI7Ozs7OztRLEksVTs7Ozs7O1M7VTtXLE87VyxXOzs7O1k7O3dCO2E7OztnQixhOzs7OzttQjs7Ozs7Ozs7Ozs7UyxNOztRLEk7OztRO1E7O08sZTs7Ozs7VztZLFE7WSxPO1ksTztXOzs7Ozs7WSxzQjs7OztxQjs7O3FCO3VCOzs7dUI7Ozs7O1E7O08sTTs7Tzs7USxXOzs7UTs7USxNOztPLHlCO087Ozs7O2lCOzs7O087OztRLFc7Ozs7O087USxNOztPO1E7O3NDO1EsVztvQjtRO087Ozs7O2lCOzs7Ozs7Ozs7Vzs0QixPLGdDO1csRztZLE07O1c7VTtPO087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2M7Ozs7OzJDO2E7Ozs7OzthO2M7Z0Qsc0I7YyxTO2EsTTs7OztTLFM7UTs7O08sTTs7Tzs7OztRLFE7TztPO1EsVTtRLFc7OztRO1EsTztPO087O1EsUTtRLE87USxPO1E7OztROztTO1c7Ozs7Ozs7O087Tzs7TztPO087Ozs7Ozs7OztPOzs7USxXOzs7UTtPOztPOztRO1E7Ozs7OzRGO3VCOztPOztPOztRLFE7USxhO087O1U7eUM7UztPLEksb0Q7Tzs7Ozs7aUI7Ozs7OzBCOztROztTLFE7UyxROzs7O1E7Uzs7OztRO1E7OztROztXLFc7Vzs4QjtVO087USxPO1EsVzs7Ozs7VztZOzs7WSxPO1k7Vzs7Ozs7OztZOytCO1k7YSxXOzs7O2E7YTs7WTtZO1k7O1k7OzthLE87Ozs7WTthOzs7YSxPOzs7Ozs7UTs7Ozs7Ozs7O08sTTs7Tzs7USxXOzs7Tzs7O087OztRO1U7YTthO087TztRLFM7USxVO1EsVzs7O1E7USxPOzs7VyxXO1csRywyQztXLFc7VztXLFk7Ozs7OzZCLE87OztXLE87VTtRLE07TztPO087Ozs7Ozs7OztPOztRLE87USxPO1EsVzs7OztXLE07O1cseUM7O1k7O2E7YSxPO29COzs7b0I7VztZLFc7OztZO1c7Ozs7O3FCOzs7O08sTTs7O087OztRLE87USxXOzs7UTtPO087Ozs7Ozs7MEI7Tzs7UTs7O1EsVTtRLFc7Ozs7O087O1E7OztTLFE7O1M7UztXOzs7OztTLFM7Ozs7O087USxpQjtRO1U7USxZO1EsYztRO1E7Ozs7Vzs7USxRO08sSTs7Ozs7USxNOzs7O1E7UTtRO1E7UTs7Tzs7OztXO1k7Ozs7Ozs7Ozs4QjtXO1k7OztZLFU7WSxTO1ksVTtZLFk7WTtjO1k7YztXLEk7Ozs7O1ksTTs7OztZO1k7WTtZOztXO1k7OztZO1c7WTthLE87YSxPO1k7Ozs7Ozs7WSxNOzs7VztXOztROzRCOzs7USxPO1EsUTtROzs7Ozs7Ozs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7O1c7O1ksTztZOztZLDBCO1k7Ozs7O3NCOzs7O1csTTs7Ozs7TyxNOzs7O0k7STtLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJO0c7O0k7O0ssTTtLOzs7Szs7Ozs7O3NCOzs7Uzs7VSxXO21COzs7Ozs7STtHOzs7Ozs7Ozs7SztNLFc7OztrRDtJLGE7STtLO00sTztNLFE7Ozs7OztLOzs7Ozs7Ozs7Ozs7SyxNOzs7SSxHO0ssUztLLEksNEI7Ozs7O08sTTs7Ozs7OztJO0s7SztLOztJO0s7Ozs7Ozs7Ozs7OztLLE87STtLO007OztNLHNCO00sTztNOzs7O0k7Z0I7Szs7STtLO0ssTztJOzs7OztjOzs7OztJLG1CO0k7O0s7Szs7SSx3Qjs7O007TSxNOzs7Ozs7Ozs7STtLLFM7Ozs7Szs7Ozs7Ozs7O0k7Rzs7O0k7a0Q7SSxhLDBCO0k7SyxROzs7O0k7SztLO0s7O0k7SztNLE87TSxPO0s7Ozs7OztLLE07OztJLGU7SSxhLDBCOzs7TSxNOztLLE07OztJO2lDO0s7O29DO0k7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7SztLO007TTtNO007TTtNO007OztPLE87TztNLHNCO007TTs7TTs7O08sTztPOzs7Ozs7OztRLE07O00sTTs7O0k7Ozs7O0s7TTs7O007Z0I7O0ssb0I7SyxPO0k7STs7OztTO1UsSztVLFE7Ozs7VSx3QixPO1U7O1M7UTtLLEc7TTtPLE87TztPLDJCLE8sNEI7Yzs7Ozs7OztJO0s7OztLO0s7Ozt1QjtJOztLO0s7Ozs7Ozs7Ozs7OztPO1E7UyxPO1MsVTs7Ozs7OztXLEs7Vzs7WSxzQjtZOzs7Ozs7Ozs7TztRO3NCOzs7d0I7Ozs7O0k7Ozs7OztLLE87Szs7SztLOzs7Ozs7Ozs7O2M7Ozs7STtLLFc7SyxPO0ssVTs7Ozs7Szs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7Uzs7MEI7Ozs7Ozs7UTtNOzs7O3dCLGtCLE8sNEI7TSxZO0s7YztLO007Ozs7Ozs7Ozs7O007Ozs7VTs7Ozs7O007TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7O0s7OztNO087TztPO00sTTs7Ozs7Ozs7O0k7SyxVOzs7OztLOzs7Ozs7Ozs7STs7Ozs7OztPLHVCOzs7Ozs7Ozs7OztJO087SyxXO0ssTTs7O2tEO0ksYSwwQjtJO0ssVTs7O0s7STtLO0s7Szs7O1E7UyxPOzs7UyxPO1E7O087SztLO0s7O0ksYzs7SyxNO0k7OztLOztLLHVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0ksVzs7SztLO0k7SSxXOztLOzs7Ozs7Ozs7SyxNOztJLE07OztJO0k7STtJO0ssSztLLEs7SyxPO0k7SztNLE87b0I7Ozs7SyxpQjtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOzs7OztLLGtCO0s7O3VCLDBDO0s7O0k7STtJO0c7O0k7SztJLEksSyw2Qjs7SztLO0s7TSxVO00sTztNLE87TSxPO00sUTs7O007TSxPO0s7Szs7TSxRO007TTtROzs7O0s7SztJO0k7SyxROzs7SztLO0s7SyxPO0sscUI7O0s7SztLO0s7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7O3lCLGtCLFM7STtLLFc7SztPO0k7Szs7O1MsVztTLFc7UyxZOzs7aUI7VztZLE87OztlLGtCLFE7O2dCLE07ZTtjO1c7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7O087Ozs7Ozs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7O0ksa0I7SSx3QjtJO0ssTTtLO0k7STs7Szt3QjtLO0ssa0I7SztLO0s7SztNO007TSxNO00sVTtNLFE7OzBCOztNO007TTs7O08sTzs7Ozs7SztLO007TTs7O1U7dUY7VTtTO0s7Ozs7Ozs7YTtJO0ksdUI7eUIsMEIsaUI7SSxXO3lCLDhCLHFCO0k7eUI7Ozs7TTtPLGtCOztrQjs7O0s7TSw4QixXOzs7O0ksZTs7O007TTtLO0ssTztJO0k7SSxHO0s7TSxzQjtNLE87SztLOzs7cUIsTyxpQjtJOztLLFc7O0s7SyxPOzs7aUIsVztpQixPO2dCOztJO0k7STtJOztLO0ssTztJO0k7STtLO2E7SyxXO3VCOztLOzs7Ozs7Ozs7TTt3QjtNLHVCLGU7TTs7MEIsZTs7TSxxQyxPO00sc0I7SztLLGdCOzs7O3lCOzs7OztLOzs7Ozs7OztLOzs7Ozs7OztLOzs7O0k7SSxZO3VCO0k7STtLO00sTztxQjs7OztLO007O1MsWTs7Uzs7OztTOzs7OztVLFE7OztVLE07UyxtQjtTO1E7TSxPOzs7Ozs7OzthLE07Ozs7Ozs7O007OztPO087OztXOztZOzs7O2E7YSxPOzs7Z0I7OztpQixPO2lCLG9COztlOztpQjthOztlO29COzs7MkM7OzthO2M7Ozs7a0I7O2MsTztjLFE7YyxPOzs7YyxPO2E7Ozs7OztZOztXO1U7TSxPLFc7SztLO2lCLDBCO0s7SztpQjtLO0ssTztJO0k7SyxrQyx1Qjs7Szs7SztLLG9DOztJOzs7O0k7Ozs2QixlO0k7OztvQyxlO0k7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7O007Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7O0s7STtJLFk7eUIsTyw0QjtJLG1CO0k7SSxJOzs7O007O0s7SyxPOztJO0ssVztLLE07SyxPOztLLHFDLE87SyxzQjtJO0k7SyxVO0s7SyxRO3dCO0k7SyxhOztJOzs7O1MsWTs7OztXOzs7OztZLE87Ozs7OztTO1E7Szs7O0s7SztnQjs7OztJO0k7O0s7Szs7OztTO1M7OztVLE87UztRO21COzs7O3FCLE8saUI7STtJO0sscUI7aUU7Szs7STs7WTs7TSxNOzs7OztTLHNCLE87UyxPOzttQjtRO2dCOzs7O0ksSSx1Qjs7O007TyxPO08sTztNOzs7TztRLE87USxPO087Ozs7Ozs7TTtLO0ssTztJO0k7O087OztNLGlDO007TztPO08sTzs7TztRLEs7USxPO1E7USxPO087Ozs7dUI7Z0M7O1E7O1c7O1c7O1ksTztXLE87VTs7UTs7Ozs7OztRLFc7UTs7OztPO08sTztNO007TTtLO0ssTztJO0k7cUI7O0s7Ozs7O0s7SyxZOzs7eUI7TTtPLFU7Ozs7TztPOztNOzs7VTs7O1M7TyxRO007OztNOzs7SztLLFU7SztJO0k7O087Ozs7SztNLFE7OztNLHVCLE8seUM7Szs7O0s7SztJO0ksVzs7Szs7TTtNO007SztLLE87STtJOztLOzs7O00sTztLO0k7SSxZO0k7O0ssb0I7SztJO0k7STs7SztLOztLLHlCO0s7O0k7STtJLFE7O0s7SztJO0ksVTtJOzs7O1Msb0I7Ozs7YTs7Z0Q7O1MsTTtRO0s7OztLO3FDOzs7TTtvRDtNO0s7SyxlOztJO0k7STs7O0k7STs7O0ssdUIsZTtLOzt5QixlOzs7Ozs7Ozs7STtHOztJO0s7OztJO0c7O0k7STtJO0k7SSx5QjtJOzs7Szs7TTthO0s7O0k7Rzs7O0ssTztJO0ksTztHOzs7STtLLGtCOztLO0k7SSxPO0c7O0ksWTtJLG1CLFE7Ozs7OzRDOzs7Ozt5Qjs7Ozs7eUI7Ozs7O3lCOzs7O0s7O1E7O1c7OzthOzs7ZTs7O00sVzs7Szs7STs7O0ksVzs7O0ssTztJO0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7O0k7O0s7Ozs7Ozs7O0k7SSxPO0c7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPOztnQjs7O087OztROzs7Ozs7Ozs7Ozs7OztPOzt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixXO2lCLE87Z0I7Ozs7TyxPOzs7Ozs7OztXLFc7VztXLFc7Vyx1QjtVO08sTzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OztPO1E7d0IsTywwQzs7d0IsTywwQztPOzs7Ozs7O2tCOzs7OztPLG9CLFU7O1EsTzs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROzs7WSxXO1ksTztXO1csTztVO08sTzs7OztPLE87Ozs7Ozs7Ozs7Ozs7O1k7WSxHO2E7Ozs7Ozs7O2E7OztjLE87Yzs7aUI7O2E7Ozs7Ozs7Ozs7Ozs7WTtXO1csTztVO08sTzs7Tzs7Ozs7USxZO1EsUztROzs7O1ksTzs7Vzs7WSxPOzs7Ozs7OztXOztZLE87Ozs7Ozs7O1c7VyxPOztVO08sTzs7O08sTzs7Ozs7Ozs7VztXO1U7TyxPOzs7Ozs7Ozs7O1k7Z0M7O1k7VztXLE87VTtPLE87Ozs7Ozs7O1c7VztVO08sTzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7VztXO1U7TyxPOzs7TyxPOzs7Ozs7O1csTzs7VTtPLE87OztPLE87Ozs7Ozs7Ozs7WSxPO1c7O1k7YSxXO2EsTztZLE87VztXOztxQjs7Ozs7Ozs7VTtPLE87O087OztROztXOztPLE87OztPOzs7UTs7Vzs7TyxPOzs7Tzs7Ozs7UTs7VywwQjtXO1ksTzs7VyxPOzs7Ozs7O087UTs7UTtROztXOztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7O08sTzs7Tzs7O1E7d0IsTywwQztPOzs7Ozs7O2lCLE87Z0I7Ozs7TyxPOzs7Tzs7Ozs7Ozs7Ozs7Ozs7O087UTs7O1ksTzt5QjtXO1MsVTs7Ozs7UyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOztPOzs7UTt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPO2dCOzs7Tzs7UTt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Vzs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O3lCLDJCO0ksTztHOztJOztLOzttQzs7STtHO0c7Ozs7STtHOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJLG9COztJO0ssTztLLE87SyxPO0ksVztHO3FCLHNDLFk7OztJO0ssUTs7OztLLE07Ozs7Ozs7a0I7Rzs7STtJLE87Rzs7SSxXO0k7Rzs7SSxXO0k7SyxRO0ssUTtJLHVCO0ksTTs7Rzs7STtJOzs7TTs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxPO0ksTztHO0c7OzsrQiw2QztLOzs7UTs7O1MsVTs7O1EsRztTLE07O1E7UyxVOzs7UyxPO1E7USxXO1c7UztVLE87VSxPO1MsTTs7O1E7OztZLEksTSx5QztZLEksc0M7Ozs7OzthLE07OztXO1MsTztTO1E7UTs7UTs7Ozs7UyxPO1E7UTtTLFc7UztRLEk7Ozs7VSxNOzs7O1E7OztZOztrQyw4Qjs7bUMsYSxrQjtjLE87YTthOzs7O2dCOzswQjswQjswQjswQjt5Qjs7Ozs7Ozs7Z0I7OzBCOzJCLE07MkI7MEI7MEI7eUI7Ozs7Ozs7O2dCOzswQjsyQixNOzJCOzs7OzJCOzs0QixjOzJCOzJCOzRCLE07NEI7NEI7OzsrQixJLE0scUM7K0IsSTs7Ozs7O2dDLE07Ozs7Ozs4Qjs7Z0M7MkI7OzBCOzJCLE07MkI7MEI7MEI7eUI7Ozs7OztnQjs7MEI7MkI7OzswQjt5Qjs7O2dCO2dCOzs7Z0IsTTsyQzs7OztZLE87VztTLFM7UTtRLEkscUM7UTs7UTs7OztTLE07UztTO1c7Yzs7UztTO1E7OztRLE07bUM7O1E7OztTLFU7OztTO1E7O0k7SSxPO0c7O0k7STtLO0ssTzs7Ozs7OztJOztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7Szs7Szs7OztNLE87TTtNO0s7STtJO0ssVTs7O0ksSTs7OztNLE07Ozs7STtLO0s7SztLO0s7Szs7Ozs7Ozs7Ozs7SztNOzs7Ozs7Ozs7TztPO007TyxPO007TTs7OztTOzttQjs7O21CO21CO21CO29CLGM7b0IscUI7b0Isb0I7b0I7c0I7b0I7c0I7bUI7OzsrQzs7OzJCO3FCOzt1QztxQjs7MkI7cUI7NEM7cUI7Ozs7b0I7cUIsTztxQixjO29CO3FCLE07OzttQjtvQjtzQjtvQjtzQjtvQjs7O29COzs7OztxQjtxQjtxQixLO3FCO3FCLFM7b0I7bUI7bUI7b0IsVTs7Ozs7OztvQixzQjttQjttQjs7c0I7O29COztxQjtxQjs7Ozs7Ozs7O21CO29COzs7Ozs7Ozs7b0I7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztvQixtQjtvQjtxQixNO3FCOztxQjtxQjs7b0I7Ozs7eUIsVzs7Ozs7c0I7O3VCO3VCO3VCLEs7dUIsUzs7Ozs7Ozs7Ozs7Ozs7O29CO3FCOzs7Ozs7Ozs7cUI7b0I7Ozs7Ozs7OzttQjs7O1M7O21CLEc7b0IsTTs7Ozs7OzttQixHOztxQjs7O29CLE07Ozs7Ozs7c0M7bUI7aUM7O29CO29COzttQjs7Ozt3QixXOzs7OztxQjs7c0I7c0I7c0IsSztzQixTOzs7Ozs7Ozs7Ozs7Ozs7bUI7b0I7Ozs7Ozs7Ozs7b0I7b0I7c0I7b0I7c0I7bUI7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1U7O29CO3FCLFE7cUIsTTtxQjtvQjtvQjtxQjtxQjtvQjs7Ozs7Ozs7O21COzs7Uzs7bUIsRztvQixNOzs7bUIsRzs7cUI7OztvQixNOzs7Ozs7Ozs7dUI7O21COzs7b0I7cUI7O3NCLFE7c0IsTTs7OzhCO29COzs7cUIsYzs7Ozs7eUI7MEIsTzswQixPO3lCO3lCLFc7eUI7Ozt5Qjs7O2tDOzBCLE07eUI7Ozs7OztxQixNOzs7Ozs7OztxQixNOzs7Ozs7OztvQjtxQjtxQixnQjtxQjs7Ozs7Ozs7O3FCO3FCO3VCO3FCO3VCO29COzs7Ozs7Ozs7O21CLE07O2tCOzs7Uzs7bUI7b0I7OztvQjtvQjttQjs7Ozs7Ozs7O2tCOzs7Uzs7bUI7b0I7b0IsZ0I7b0I7b0I7bUI7Ozs7Ozs7OztrQjs7O1M7UztVO1U7Uzs7Ozs7Ozs7Ozs7UyxNO29DOzs7O0ssTztJO0k7SyxNO0s7SyxTOztJO0k7OztLLFc7SyxPO0k7SSxZO3dCO0ssTTs7STs7O0s7Ozs7Ozs7O3VCLGU7dUIsZTtNO00sTztNOzs7Ozs7UztLLE87STtJO0ssWTtLOztLO0s7O1E7Ozs7Ozs7Ozs7WTtZOztXO1M7VztRO1M7Ozs7O2E7YSxPO1k7VSxRO1UsSztVO1Usb0IsZTtVO1UsTztVLGlDO3NCOzs7O1E7Uzs7OztROzs7Ozs7OztTOzs7OztTO1M7Ozs7UTs7Ozs7Ozs7O1M7Ozs7O1M7Uzs7OztROzs7Ozs7UztTOzs7Ozs7Ozs7Ozs7OztZO2EsSzthO2EsTzthLFk7WTtZOztlO1k7WTthO2E7WTtXO2lCOzs7UTs7Ozs7Uzs7Ozs7Ozs7Ozs7WTtZO2EsWTthO2E7ZTthLFk7YSxPO1k7WTtZO1c7aUI7OztROzs7O1M7Ozs7SztJO0k7ZTtLLFc7STs7Ozs7STs7OztLO0k7SSxPO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPOzt3QixPLDRDO1EsTTtRLFU7OztRLFM7USxPO087TyxXO1U7UTtTLE87UyxPO1EsTTs7Ozs7O1c7VztZLFc7WTs7Ozs7O1ksTTs7O1U7TztPO087UTtROzs7O087Ozs7Ozs7O087O1E7OztPOzs7O1E7Ozs7UztTLE87UyxPO29CO1MsTztTLE87UyxPO1Msa0I7UyxPO1MsTztTLGE7UyxPO1MsTztTLFM7UztlO1MsTztTLE87UyxPO1M7VztROzs7MEI7TztRLFU7Ozs7OztRO1E7Ozs7WSxPOztROztPOzs7Vzs7O1k7WSxLO1ksTzs7WSxXO1c7Ozs4Qjs7Ozs7O1U7USxPO1EsTztRLFE7UTtVOzs7Ozs7O087Tzs7O087TyxXO087Ozs7OztVOzs7Ozs7Ozs7Ozs7OztPLFM7Tzs7O1EsYztPOzs7Ozs7Ozs7TztRLE07MEI7Tzs7O1E7UTs7Ozs7OztROzs7UyxHOzs7VSxJOztRO1MsTztTLE87O1M7aUMseUM7VSxPO1M7VTs4Qix1QjtXLE87VTtXO1ksc0I7WSxPO1ksVztXOzs7Ozs7Ozs7Ozs7OztvQjs7Ozs7Ozs7Ozs7UTs7Ozs7UztTO1UsTztVLFc7Ozs7Yzs7ZSxpQjtnQjtpQixPO2lCLFE7aUIsTTt3Qjs7OzBCOztjO2E7Ozs7Ozs7YyxXO2E7Ozs7Ozs7VyxNOzs7Ozs7O2Usd0I7Ozs7OztpQjtrQjtrQixPLHdCLDBCOzs7WSxLOzs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7OztZO1k7VztTLFE7UyxTO1E7OztPO1EsTTs7TyxNOzs7Tzs7OztRLFU7OztRO1EsTzs7O1c7Ozs7WTtZLEs7VztXO1ksTzs7WSxXO1k7O3lCOzs7Ozs7VztXO1c7WTtZLE87WSxPO1c7O21CO1U7USxXOzs7UTs7MEI7Tzs7Ozs7Ozs7O087TztRLFU7UTtPO087TztRLFk7UTtPO087TztPLG9CLE87TztPLHNCLE87TztPLFk7O1EsTTs7TztROzs7O1EsTztRLE87TztPOzs7Ozs7Ozs7TyxNO2tDOztPOzs7UTtRO1U7Ozs7VTtROztPOzs7RztJLE07SSxhOztJO0k7Ozs7UTs7O1M7VztjO2M7UztTO1EsTzs7Ozs7Z0IsTzs7O0c7O0k7dUIsTztJOzs7SztPO1U7VTtLO0s7SSxPO0c7O0ksSSxpQjs7Ozs7c0I7TTs7Ozs7STtLLE87SyxLOztLLE87SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7O0k7STs7O0ssSSxlLHdDOzs7O08sTTs7OztJLGdCO3lCLG9CLGM7STtLLFM7SztJOztLO00sUTtNLE87Ozs7OztLLE07O0kscUMsTztJO0ksVztJO0k7STtLLFE7OztLLFM7SyxNO0ssTztJO0k7SyxXO0s7Ozs7O0s7OzZCO0ssTTs7SSxTO0ksSTs7OztLLDJCO0ssTTs7SSxXO0k7STtLLFU7OztLLE87STtLLFc7Szs7Ozs7SztNLE87TSxtQjtLLE07O0ksSTs7OztLLGU7SyxNOzs7STtLO00sTztNO0s7Ozs7OztLLE07OztJO0ssTztLLGU7Szs7O0s7OztROzs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7OztLOzs7UTs7Ozs7Ozs7O3dCO0s7O0ssVTtLOzs7SyxPO0s7Ozs7Ozs7UTs7Ozs7Ozs7O0ssTztLLFU7OztJO0k7SyxVO0s7OztLLE87Szs7Ozs7OztROzs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7OztJLFk7O0s7TSxPO00sTztNLE87TSxPO00sTztNLE87Szs7YTs7Ozs7STtJLFk7STtJO0k7Szs7Ozs7Ozs7O00sUTtNOzs7O007Ozs7d0I7SyxrQjs7TTtNOztLO00sZ0I7TTs7OztNOztNO3VCO007UTs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztLO0ssTzs7STtLLFU7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7OztNLE07OztLO0s7SztLO0s7SztLO0ssRztNLE07O0s7TSxPO00sUTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7TTs7eUIsTyx3Qzt5QixPLDJDO0ssTTs7O0k7SyxRO0ssUTtJLEksYzs7Ozs7O0ssTTs7SSxZO0k7Ozs7Ozs7Ozs7O007TyxPO2M7OztLO00sTztNLE87TSxPO00sTztNLE87SyxPOztJLFk7STs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxrQjs7Tzs7O1EsVTs7O1EsVTs7O1EsTztPO08sSTs7Ozs7USxNOzs7YztRLE07Ozs7TSxNOztLOzs7Ozs7Ozs7Ozs7OztJLFk7STtHO0c7O0k7STtLLGE7Szs7Uzs7Ozs7O0k7STtHOztJO0ssYTtLO0k7STtHOztJO0s7OztzQiw2QjtJO0ssTztLLFU7OztJO0k7Rzs7STtHOztJO0s7Ozs7Szs7Ozs7Ozs7O0k7SSxXO0c7O0k7STs7Szs7Uzs7Ozs7Ozs7STtJLFk7STtHOzs7STtLLE87SyxPO0ssTztJO0c7O0k7bUI7O0c7O0k7O087O087ZTs7Rzs7STtLLE87Ozs7Tzs7NkIsTyx5Qzs2QixPLHlDO087TyxPOztPOzs7O1EscUIsTyx5Qzs7O1csTztVO08sTzs7O08sTzs7O08sTzs7TyxPOzs7Ozs7UTtTLE87Z0I7TyxPOzs7TyxPOzs7Ozs7Ozs7TyxPOzs7TyxPOzs7TztPO1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7USxxQixPLHlDOzt3QixPLDRDO08sTzs7Tzs7OztRO1E7Ozs7USxPO1E7VTs7TyxPOzs7Ozs7Ozs7O087OztRO1E7VTs7TyxPOzs7TyxPOzs7Ozs7Ozs7Tzs7USxxQixPLHlDOzZCLE8seUM7TyxPOzs7TztPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7O08sTzs7O08sTzs7Tzs7O1E7O1c7Ozs7O1ksbUI7VztXO1c7WSxPOztZLE87VyxPOzs7Ozs7Ozs7O08sTzs7O087OztRLE87TyxPOzs7TyxPOztPOzs7Ozs7VztZLE87Vzs7WSxPO1c7VyxPO1U7USxPO08sTzs7Tzs7USxxQixPLHlDOzZCLE8seUM7TyxPOzs7Ozs7O08sTzs7OztRLE87OztPLE87OztPLE87OztPLE87Ozs7eUIsMEI7SSxPO0c7O0k7Szs7OztNLDRCO0ssVzs7bUM7O0k7RztHOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O3dCLHNCOztpQztlLE07O0c7O0ksWTs7OzBCOzs7TyxNO2UsTTs7Rzs7SSxZOzs7MEI7OztPLE07O08sTTs7Rzs7STtLLE87SztPOzZDO0ksUztJO0ksTTtHOztJOztLO00sUztNLE87SztLLFU7SztJO0k7O00sVztNLE87SztLLE87STtJO0ssTztLLFE7OztLOzs7TyxLO1E7Uzs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7SSxPOztHOzs7SztJO0k7SyxROzs7SztJO0c7Rzs7OztRLE07Tzs7d0I7SSxpQjs7Szs7O00sTzs7TSxXO00sTztLO0ssTztJO0ksTztHOztJO0ssVztLO0ssTTs7Szs7TSxtQjtNLFE7Ozs7O0k7SyxZO0ssUztLLE87SyxPO0ssUTtJOzs7Yzs7O0ksWTtJO0ksTzs7O0k7STs7O1E7Ozs7O1E7UTtRLE87O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7OztJO0c7O0k7SztLOzs7Ozs7O0ssaUIsTztLLHVDO0s7O007Ozs7Ozs7Ozs7Ozs7O1UsTzs7OztLOzs7STs7Ozs7Ozs7Ozs7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7Ozs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7OzRCLFM7STs7Ozs7Ozs7Ozs7Ozs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEcsa0I7UTs7TTs7Tzs7OztJOzs7O007TTtLO0s7Szs7Ozs7Ozs7Ozs7O1k7Ozs7OztnQixrQjttQjthO2MsUTtjLE87YyxPOzs7YyxPO2M7Ozs7Ozs7aUI7Ozs7Ozs7O2lCOzs7O2tCLE87a0IsTztrQixPO2lCLE87Z0I7YyxPO2M7Ozs7cUMsTywyQjtjOztpQjs7Ozs7Ozs7Ozs7Ozs7YyxPO2MsUztjO2dCO2MsWTtjO2dCOzs7Ozs7OztjO2M7Ozs7YTs7Ozs7Ozs7YTtjOzs7Ozs7Ozs7Ozs7Ozs7O2M7YztnQjs7OzthOzs7Ozs7Ozs7OztTLEcsa0I7VTtXLFU7VzthOztXOztXOzs7O1csVztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRyxrQjtjO2UsWTtlO2UsUTtlO2UsVTtjO2M7Ozs7Ozs7O2EsRyxrQjtjO2UsWTtlLGdCO2M7OztjOzs7OztTLEcsa0I7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7OztVLEcsa0I7VztZLFk7WTs7O1k7OztXO1k7YSxPO2EsTzthO1k7Ozs7O1c7Ozs7Vzs7Ozs7O0s7OztLO007O0ssWTs7TSxNOzs7SztJO0k7SztNLFE7TTs7O0s7Ozs7O087UTs7O1EsVTs7USxNO087OztROztRLE07Ozs7O1k7Ozs7dUI7c0I7c0IsVzs7O3VCOzs7Ozs7Ozs7d0I7eUIsYzt5QixVO3lCLFE7Ozs7MEI7OzJCOzZCOzs7OzJCLE07Ozs7Ozs7Ozs7Ozt3QixNOzs7OztzQjtxQjtXOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7O2tCO2lCO2MsRztlO2dCOzs7Ozs7Ozs7O2UsTTs7OztZLE87Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7UTtTLE07Ozs7Ozs7O1c7OztZLE87YztXOzs7OztnQixrQjs7Ozs7O2tCLEcsMkI7Ozs7O2dCLE07ZTtZOzs7Ozs7Ozs7Ozs7Ozs7O1MsSSxjOzs7O1csTTs7Ozs7OzthLE87WTs7O1M7VSxPOztTO1UsTTs7Ozs7YSxPO1k7O1E7UyxNO1M7VztnQjs7O1E7O1MsUTtTOzs2QixPLHlDO1MsUTtnQjs7O1E7O1MscUIsTyxvQztTLFE7UyxRO2dCOzs7O0s7O0s7Szs7Ozs7O0ssTTs7Ozs7SSxZO0k7OztLLE87SyxPO0ksVztHOztJLFk7STs7O0s7SyxPO0ssTztJLFc7Rzs7SSxZO0ksa0MsTztJLEs7SztJO0ksVztHOztJLFc7STs7O0ssTztLLE87SSxXO0c7O0k7OztPOztRLE87Tzs7MkI7Ozs7UTs7O1M7Uzs7Uzs7VSxPO1UsUTtVLFU7Ozs7Ozs7Ozs7TztPOztPOzs7UTs7O1c7OztjO2M7OztjO2M7c0I7O1U7TztPOzs7O2M7Tzs7O08sTTtrQzs7Tzs7USxTO087O0c7O0k7STtHOztJO0k7aUI7SyxzQzs7O1E7OztTLFE7UztROzs7a0I7a0I7aUI7Ozs7Ozs7O1M7VSxRO1U7O1UsTztVLFU7OztTOzs7OztROztTLFU7Z0I7OztXOzs7Ozs7UTs7UyxVOzs7WTs7YTthLFc7WTtZLE87VztTLFU7OztZO1ksTztXO1MsVztTO1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7Ozs7UTs7UztTO1MsVTtTO1MsVTs7O1M7USxPOzs7UTs7UyxVO1M7UztTOzs7Yzs7Ozs7YTs7O1EsTzs7OztHOztJO0ksb0I7SSxXO0c7O0k7SztLLE87SyxPO0ssTztLLE87SyxPO0ssTztJOzthOzs7Ozs7OztHOztJOzs7O087Ozs7Ozs7O3lCOzs7Ozt5Qjt5Qjs7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssUTtnQixPOzs7SyxNOzs7STtJLEksdUI7O0s7TTs7Ozs7O0k7SSxPO0c7O0k7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJOzswQjs7NEI7OzRCOzs0Qjs7NEI7OzRCO29DOztHOztJLFc7STtLO00sTztNLE07eUI7SyxZOztNOzs7OztNO0s7SyxPOztJLE87Rzs7STs7SztLLE87STtJLG9COztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGdEOzs7O2E7TztRLG9CLGU7USxPOzRCLGU7USxRO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOzs7SyxtQjs7O1E7O1M7UTs7USxvQjtROzs7O1M7OztVOzs7VTs7VyxRO1csTztXLE87VztXLFU7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7O1M7UztTOztTO1M7Ozs7Ozs7Ozs7OztlOzs7Z0IsVTs7Ozs7OztlOzs7Z0I7Ozs7O2U7OztnQjs7Ozs7Ozs7Ozs7O2U7OztnQixVOzs7Z0I7Ozs7WTthOzs7WTs7UyxVOzs7UyxVO1M7UyxPO1E7MkI7Ozs7OztROztTLFE7UyxVOzs7UTs7O1EsTTttQzs7UTs7UztTLE87UTs7STtJLE87Rzs7STtLOzs7O0ssTztJO0c7O0k7O0ssUztLLGdDLGU7OztROztTLFU7OztRO1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7Ozs7WTtZO2EsTzthLFc7O1c7UTtRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7OztZOzs7Ozs7OzthLE07O1k7YSxNO1k7O2EsTzthLFE7YTtZOztXO1E7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7OztZOztXO1E7UTtTOzs7O1M7OytCLGtDOzs7UTs7Ozs7UTs7UyxVOzs7UztRO1E7UTtTOzs7O1M7UTs7UTs7UyxRO2dDLG1DO1MsTzs7UyxPO1MsTztTOzs7Uzs7VSxXOzs7Uzs7Ozs7UTtRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7UTtTOzs7O1E7Ozs7Ozs7Ozs7UTs7Uzs7Ozs7WSxtQzt3Qjs7WTtXO1MsVTs7O1k7WTs7VztRO1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O2dDLG1CLFU7UTs7O3VCOzs7OztROztTOzs7O1E7UTtRO1M7Ozs7UztROztROztTOzs7O1M7O1MsTTtROztTO1MsUTtTOzs7O1E7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztnQyxpQztTLFM7UztTLFU7UztTLFc7Ozs7O1M7MEI7UTtRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7OztZO1k7WTtZO1k7O1c7UTtRO1M7Ozs7UztTOzs7Yzs7Ozs7OzthOzs7UyxPOytCLGdCO1M7O3VCOztROztROztTLFc7Ozs7O1k7WTtZO1k7O1c7UTtRO1M7Ozs7UztTOzs7Yzs7Ozs7YTs7O1MsTzsrQixlO1M7OzttQjs7UTs7O1E7UTtTOzs7O1E7Ozs7OztRLE07bUM7Ozs7SSwyQjs7SztNLG1COzs7O007TTtLO0s7STtJLE87Rzs7O0s7Ozs7O00sTztLLG9CO0s7TSxPO00sTztNLE87c0IsWTtLO007O1M7Ozs7TSxRO00sUTs7O007SztJO0ksTztHOzs7O007O087TyxPO007TSxPO0s7SyxPO0k7OztNOzJCLHFDO007TyxPO087TTtLO0ssTztJO0k7O007MkIsbUIsbUI7TSxPO0s7SyxPO0k7SSxZOztLLG9CLE87SyxPO0k7SSxVOzs7TSxXO00sTztLO0ssTztJO0ksaUI7O0s7TSxPO00sUzs7OzswQiw2QjtLLGE7dUIsZSxrQztLLGU7SztJO0k7SyxPO0s7eUIsOEI7SSxJLE8sK0I7STtJLEksK0I7STs7Szs7Ozs7TTs7O3lCO0s7OztTOzs7Ozs7eUI7SyxXO0s7STtJLGE7STtHO0c7O0k7STs7OzswQjs7OztTO1M7Ozs7OztLLE07O0c7O0ksSSxzQzs7OzZCOzs7Rzs7Ozs7O1E7O1E7O1MsUTtTOztZOzs7ZSxPOztrQzt1Qjs7O1EsTzs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7O2dCOzs7O0k7Szs7USxzQixPO1E7UyxNOztROztRLHNCO1E7UyxNOztRO2dCOzs7SSxPO0c7b0IsZTtHLHVCOztJOztLLE87O0k7Rzs7SSxrQjtJLFk7Ozs7TyxNOzs7Ozs7Vzs7OztlOzs7O2dCLFc7ZSxHO2dCO2lCLFc7aUIsSztnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7O2U7O2tCO2tCO2lDOzs7Ozs7cUIsRyxxQjtzQjs7Ozs7aUI7Ozs7ZTtlOzs7Ozs7Yzs7VztVO08sVztlLE07O0c7OztLLGdDLE87SyxXO0k7STs7OzJCO0ksTztHOzs7O007bUI7SztLLFc7SztJO1EsSSx1Qjs7Ozs7cUQ7Ozs7Ozs7SyxJLFU7Ozs7OztpQzs7STtHOzs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtvQjtnQjs7STtHOztJOztLO0k7SSxPO0c7Ozs7O087O1EsTztRO1EsZ0I7USxROzs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7OztPOzs7UTs7O1M7OztTO1M7Ozs7O1k7Ozs7Uzs7OztPOzs7O1k7O1c7d0I7OztPO1E7OztRO1E7O1c7OztZLGM7Ozs7Ozs7Z0IsTTs7Ozs7cUI7O2U7Z0IsTTs7ZSxXO2U7Ozs7Ozs7Ozs7Ozs7YztlOztrQjs7Ozs7Ozs7Ozs7O2U7Z0I7a0I7Z0I7ZSxNOzs7Yzs7ZSx1QixRO2U7Ozt5Qjs7OzsyQjs7OztnQjs7aUI7bUI7Z0I7Ozs7O2dCO2lCO2tCLE87Ozs7Ozs7O2lCO2lCLE07Ozs7Ozs7O2dCO2lCOztvQjs7Ozs7OztpQjs7OztpQjs7OztjOztjLFc7Yzs7Ozs7Ozs7OztjLE07OztjO2UsTztlO2MsTTs7OztPLE87O087OztROzs7UTtROzs7OztPOzs7OzswQjtPLFU7O1E7UTs7TztRLE87USxVOzs7O1csTTs7Ozs7Ozs7ZTs0QjtjO1csRztZLE07Ozs7OztxQjs7b0I7VztZO1ksb0I7VztZLE07Vzs7OztPLE07Ozs7TyxNO2tDOzs7OztLOztNOztPOzs7TztPO007O0s7TTs7O00sUTtNO00sVTs7Ozs7Ozs7SyxvQjtLOztNOzsyQzs7O1M7OztTOzs7Uzs7O1M7OztTOzs7Uzs7SztLO00sTztNO0s7STtJLE87Rzs7STtJOzs7Szs7UTs7OzsyQixPLHVDO1MsTztROztROzs7UyxROzs7MkI7UTtTLE87Uzs7O1k7Ozs7O1k7WSxTO1k7WTs7b0I7VztTLFU7OztROztnQjs7OztROztTLFU7OztRO1E7UTtnQjtROzs7Ozs7UTs7O1MsVTs7OzZCLDBDO1E7UTs7Uzs7O2dDLG9DOzs7OztZO2EsTTtZOzs7YSxPO1ksTzs7dUI7OztXO1MsYzs7Ozs7O2E7OztjLGM7YyxTO2EsTztZO2lCOzs7UTs7UTs7UyxVOzs7Uzs7O1k7WTs7VztTO1c7O1E7OztvQyxrQzs7Ozs7O1E7O1MsVTs7O1M7UTtRO1E7O1c7O1E7Ozs7OztROzs7Ozs7UyxjO1MsVTs7O1k7Ozs7Ozs7Ozs7OztZO1c7UyxVOzs7O1MsTztTLFM7Uzs7Ozs7O1MsYTtRO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7OztZOzthLE07Ozs7Ozs7O1k7VztTLFU7OztZOzs7OztZO1c7Uzs7cUI7Ozs7O1ksbUI7WSxvQjtZLE87VztRO1E7OztZOzs7Ozs7Ozs7O2E7Ozs7c0I7OztZO1k7YSxVOzs7YTtZO1c7UyxjOzs7WTs7Ozs7OztZLGE7WSxvQjtZLE87VztTLFc7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7VTs7O2M7Ozs7Ozs7Ozs7ZSxhO2U7O2M7ZTs7a0I7Ozs7Ozs7Ozs7Ozs7O2UsTTs7O2M7OztlOzs7Ozs7O2U7Yzs7VzthOzs7Yzs7OztlO2dDLCtCO2MsTzthO1csTTs7O2M7Ozs7O2M7YyxPO2E7VyxjOztXOzs7Z0I7Z0I7ZTs7O2tDLG1CLFU7VTtzQjs7Ozs7Uzs7O2M7ZTs7Z0IsVztnQixlO2U7ZSxVO2UsbUM7OztVLFk7OztjO2U7ZSxVO2U7Ozs7Z0I7Ozs7ZSxPOzRFOzs7VSxRO1U7OzthO2EsVTs7YSxPO1k7VSxNOzs7Ozs7Ozs7UTs7Uzs7OztRO1E7UTs7UyxNO1E7O1E7O1M7Ozs7O1E7O1E7O1MsVzs7Ozs7WTtZO1k7WTtZO1k7O2E7WTtZO2E7Ozs7VztTLGM7O1M7OztjOzs7Ozs7O2E7OztTLE87OEIsNkI7UTtxQjs7Ozs7UTs7UyxXOzs7OztZO1k7WTtZO1k7O2E7WTtZO2E7OztXO1MsYzs7Uzs7O2M7Ozs7O2E7OztTLE87NkIsZ0M7UTtxQjs7Ozs7UTs7Uzs7O1k7VztTLFc7OztTLFU7UztTO1c7Ozs7O1Msc0I7UTtRO1E7OztRO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7Rzs7STtJO0c7O0c7STs7O0c7STs7RyxJO0c7STs7O0ksTztHOztJOzs4QixPOzs7Tzs7OzhCOzs7bUI7OztlOztHOztJO0s7Szs7Szs7TSxVOzs7Ozs7SSxVO0k7SyxNO0k7Rzs7STs7MEI7OztPO2UsTTs7Rzs7STtJO0ssVTs7SyxRO0k7Ozs7Ozs7Ozs7Ozs7OztPO1E7USxVOzs7UTs7O1c7O2M7O2U7O2UsTztlLFU7Yzs7Yzs7ZTs7ZSxPO2U7aUI7YztzQjs7VTtRLFE7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNO08sMkI7Ozs7SztNOzs7UztTLEk7OztpQzs7O1MsSSxXOzs7aUM7Ozt5QjtTLFE7UztRO00sTzs7Ozs7O0k7Ozs7SztLO007TyxPO08sTztNOzs7OztPLE07Ozs7STtJO0k7SyxPO0ssTzs7SztJO0s7aUI7Ozs7OztLLE07OztJOzs7STtHOztJO0c7O0k7Rzs7Ozs7O0k7Szs7Ozs7Ozs7SSxlO0ksTztHOzs7STs7SztLO3dCO0s7TTs7Ozs7O00sTztNLE87TSxVO007O007TTtPLFU7OztVLFc7VSxPOzs7Ozs7UztNO007TTs7Szs7TSxPO00sYTtLLDZCO00sVztNO007TztTOzs7Ozs7Ozs7OztNO007TTtNLGM7O087USxTO1EsTztRLE07UTtRLE87Tzs7Ozs7Ozs7O087O007Ozs7OztNO087USxPO1EsTzs7Ozs7O087TyxNOzs7Z0I7Ozs7O0s7TSxTO007UTs7Ozs7Ozs7Ozs7SztLO00sVTtNO00sTztLOzs7Ozs7Ozs7SztLOztJOzs7O1M7VSxPO1UsYTtVLE87Uzs7Ozs7Ozs7O1M7UTtJLE87Rzs7O0ksVztJLE87Ozs7Ozs7OztHO3FDLGtDOzs7SztNLE87TSxPO00sVTtNLE87TSxLO00sTztNLGtCOztNLE07O0ssVztLLG9CO0k7SSxZO0k7O0s7OztNLFE7TSxRO0s7STtJO0ssaUI7Szs7SztLLE87STtJLFk7O0s7OztNLE87TSxPO00sTztNO0s7STtJO0ssSztLLFM7SyxPO0ssVzs7O0s7O00sSztNLE87SyxPO0k7STtLLE87SyxRLFc7SyxVO0ksRztZO007TSxNOzs7ZTs7Ozs7SztNLFM7O1E7Ozs7Ozs7Ozs7TSxPO0s7Ozs7Ozs7OztLOzt3QjtJO0ssYTtLLE87O0s7SyxXO0k7SSxjOztLO00sTztNO1E7O007TSxPO0s7Ozs7Ozs7Ozs7STtHOztJOzs7USxPOztRLE87O1EsTzs7Ozs7OztRLE87O1EsTztnQixPOzs7OztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87O087OztRLFM7TyxPOzs7Tzs7OztRLFM7USxPO08sTzs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7O087OztRLE87TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O08sTzs7OztPLE87OztPLE87OztPLE87Ozs7Ozs7Ozs7O08sTzs7O08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7Uyx1QjtTO1MsTztTLE87OztTLE87USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7OztRLHFCO1E7USxPO1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPLG9CLE87TyxPOztPOzs7UTtRLE87TyxPOzs7O3lCLDBCO0ksTztHOztJOztLOzttQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNCO0c7OztJOzs7SyxZOzs7Ozs7Ozs7OztNO08sTTthOzs7Ozs7O0ksYTtJLHFCLE07SSxPO0c7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzsyQixxQjs7SSxVOztLO0k7STtLLFE7SyxNO0ssTTtJLE87Rzs7SSxZOztJLEc7SyxNO0k7SyxlO0s7Ozs7OztJOzs7Ozs7Ozs7OztHOztJLFk7STs7SztLO0k7RzsrQixPLG1DOztJO0ssUTtLLFE7OztJOzs7ZTtLOzs7TSxJO0ssRyxxRDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDs7O0c7O0k7O0ssTztJO0ksTztHOztJO0k7Ozs7Uzs7UyxVO1M7OztRO0ssVTs7a0I7O0s7Szs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7Rzs2Qix5Qzs7STtPO0s7SSxNO0c7RztJO0k7Ozs7Ozs7Ozs7STtLO0s7SyxXOztLO0s7O3dCLE07Ozs7O1UsTTtTOztTOzs7OztVO1M7Ozs7Ozs7VyxHOztVOzs7OztXO1csSTtVOzs7Ozt5Qjs7Uzs7OztVO1UsUTs7Ozs7Uzs7Ozs7VTtVLE07Uzs7Ozt3Qjs7c0M7O1M7Ozs7VTs7OzthO2E7WTtVLE87Ozs7O2E7YTtZO1UsTztVO1M7O1M7Ozs7O1U7OzthO2E7WTtVLE87Uzs7d0M7O1MsMkM7Uzs7Uzs7OztVO1M7O1M7Ozs7VTtVO1M7O1Msa0M7Uzs7eUM7O1M7Ozs7O1U7VTtTOzs7Uzs7OztTLEksVyxrQzs7O2lDOzs7aUIsTTs7O0k7O0ssb0I7SyxPO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O007O087Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7Tzs7K0Isb0IsTyxtQjtPLE87Ozs7Ozs7OztVO1UsTzs7Ozs7TyxPOzs7Tzs7Ozs7VztXLE87VTtPOzs7OztXO1csTztVO087Ozs7Tzs7OzBCLG9CLE8sc0I7TztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7K0I7UyxPO1MsTztTO1EsTzs7Ozs7O1E7OzsrQjtTLE87UzsrQjtTLE87UyxPO1EsTzs7O1E7O1E7OztTOytCO1MsTzs7K0I7UyxPO1M7OztTO3NCO1EsNkI7USxPOztROzs7OytCO1MsTztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7K0I7UyxPO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7OztLO0ssTztJO0ksTztHO0c7b0Msd0M7O0k7STs7Ozs7O3lEOzs7OztLOztHOztJOzs7Ozs7OztPOzs7OztROzs7OztPOztJLE87OztJOztLLE87OztJOzs7SSxJLFc7Ozs7SztNLE87TSxPO0ssTzs7STtHOztJO0c7O0k7RztrRDtHOztJO0c7O0k7SyxPO0ssTTtLO0ksSSxVOzs7O0s7TSxPO00sTztLLE87OztJO0c7O0k7O21CLE87SSxvQixNO0k7OztJOzs7O0k7SyxxQztLLGlCO0k7STtLOztNOzs7OztPOzs7TTtLO0ssTztJOztLOzs7USxJLFc7Ozs7UyxJLFUsaUM7OztnQzs7OztROzs7USxJLFc7Ozs7UyxJLFUsbUM7OztnQzs7OztROztROztROzs7Ozs7UztROztROztTOzs7OztTO1E7O1E7Ozs7OztTOzs7UztROztROzs7OztTOzs7UztROztROzs7Uzs7O1M7Uzs7O1k7O1EsVzs7O1E7O1E7Ozs7Uzs7UyxzQjtTLE87OztTLHNCO1MsTztTO1E7O1E7Ozs7O1M7Uzs7O1k7O1MsTztROzs7UTs7UTs7Ozs7O1M7OztTO1E7O1E7Ozs7Uzs7O1M7UTs7UTs7OztTO1M7UTs7USxrQztROztRLGtDO1E7O1E7Ozs7OztTOzs7UztTO1E7OztRLEc7UyxNO1EsSSxJLE87Ozs7OztROztROzs7Ozs7UztTO1E7O1E7OztTO1M7d0IsTyxzQzs7O1k7Ozs7d0IsSTs7O2dEOzs7d0IsTzs7OztZLE87Ozs7dUIsSTs7OytDOzs7dUIsTzs7VztTLGM7MEMsTyx3QjtTLFU7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssa0I7SyxPO0k7OztLOzs7SyxZOztLOztJO0c7OztLLFk7SyxPO0k7eUIsbUI7SSxRO0k7Rzs7STtJLHVDLFc7Rzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7Ozs7Ozs7Ozs7Tyx1Qzs7Tzs7Ozs7O1EsTTtPLHNCOztPOzs7OztRLE07TyxxQjs7Tzs7O1EsTTs7O1c7VyxjO1U7TyxXOzs7TyxjOztPOzs7O1EsTTs7OztXO1csYztVO1EsTTs7Ozs7VztXLGM7VTtRLE07UTtPLFc7O087Ozs7O1EsTTs7O1c7VyxjO1U7USxNO08sWTs7O08sZTs7Tzs7OztRLE07TyxZOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO1EsTTtPLFk7O08sa0MsTTtPLFk7O08sa0MsTTtPLFk7O087Ozs7OztRLE07USxNO08saUI7O3VDLGlCOztPOzs7Ozs7USxNO1EsTTtPLGlCOztvQyxZOzt1QyxpQjtlOzs7O29CLE8sbUM7STtHOzs7STs7SyxHLHFDOztJOzs7STtHOztJOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087ZTs7Rzs7SSw0QztnRDtJLE87RztzQyx1Qjs7STtzQjs7Ozs7Ozs7c0Isd0M7aUMsZ0I7UyxXOzs7Ozs7OzswQjs7Ozs7OztJO0c7eUIsNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7Ozs7Ozs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7TyxPOzs7O0k7O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1EsTztnQixPOztJLG1CO0ksTzs7O0k7OztROztRO2dCOzs7STtHOztJOztrQjs7a0I7MEI7O0ksTztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO0ksTztHOztJOztlO2U7Ozs7aUI7aUI7O3FCLE87OztPLE87O0c7O0k7OztNOztPLHNCO00sRyxzQzs7O08sYztPOzs7O1c7VyxPO1U7TztPLE87O007TSxPOzs7STtHOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPO2dCLE87Ozs7Ozs2Qjs7Ozs7Ozs7Ozs7OzZCOzs2Qjs7NkI7OzZCOzs4Qjs7OEI7Ozs7O1c7O1c7O1c7O1c7O1c7bUI7Ozs7UTs7O1E7OztRLE87OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztROzs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROzs7UTtrQjtrQjs7Ozs7TyxPOzs7TyxPOzs7OztRLE87Ozs7TyxPOzs7Tzs7OztRO08sTzs7Tzs7OztRO087Ozs7Ozs7TyxPOztPOzs7UTtPOzs7Ozs7O08sTzs7O08sTzs7O087Ozs7Ozs7TyxPOzs7TyxPOzs7TyxPOztPLGtCLE87TyxPOzs7aUI7aUI7OztpQjtpQjs7MkI7O08sbUI7TyxPOzs7TyxPOzs7TyxPOzs2Qjs7OztRO1EsTzs7TztPLE87Ozs7UTtRLE87O087TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87OzRCOzs0Qjs7Tzs7O1E7UTtPLE87OzRCOzs0Qjs7NEI7Ozs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROzs7UTs7Ozs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7Rzs7SSxTO2E7Ozs7O1E7O1E7O1E7OzJCOzs7Tzs7Tzs7OztPOztPOzthO3NCO0c7O0k7OztnQjtnQjs7OztJOzs7USxPOztRLE87O1EsTztnQjs7O0ksTzs7O0k7O08sTzs7TyxPO2U7Ozs7Ozs7O3lCLE87OztRLE87OzBCOztROztTOzs7YSxPO1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTthO2E7Yzs7O2lCOzs7O2tCO2lCO2lCO2dCO2E7YSxPOzs7YTthLE87Ozs7Ozs7O1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7WTs7YTs7Yzs7O2EsTzs7WTtZLE87VztRLE87Ozs7Ozs7OztROzs7Uzs7O2EsTztZO1ksTztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLEksYzs7YTs7Yzs7O2EsTztZO1k7OzthOztjOzs7YSxPO1k7WTs7d0I7OzthOzs7WSxPO1c7O1EsTzs7Ozs7Ozs7O1k7O2E7O2M7OzthLFc7YSxPO1k7WTs0Qjs7O2E7OztZLE87VztRLE87OztROzs7Uzs7O2EsTztZO1ksTztXO1EsTzs7Ozs7Ozs7Ozs7YTthLE87O1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7OztRLE87Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7Ozs7Uzs7O2EsTztZO1ksTztXO1M7USxPOzs7Ozs7Ozs7Ozs7USxrQzs7Ozs7Ozs7Ozs7Ozs7bUI7UTs7O1MsTztROzs7Ozs7OztTLE87USxPOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7SztNOztTOzs7WTs7ZTs7ZTt1Qjs7O1k7O1ksTTs7UTtNO0s7Ozs7Ozs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7O2lCLE87O007TTs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87OztxRDs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007MkIsb0IsVztNLFc7TSxPO0s7O007O087TztNO007TyxPO08sTztPOztPO087TzswQjs7TztPO007TTtNO0s7O0ssMEI7SztLOzs7a0M7O0k7STs7OztLO0s7STtJOztLO0k7Ozs7Ozs7OztLOzs7Szs7O0k7O0s7O00sTztLLGM7STs7Szs7OztNO1E7O00sSzs7O0s7Ozs7O007O087Ozs7Tzs7OztNLEc7TztRO1U7O1E7UTs7OztTO1M7Uzs7Ozs7O1E7Uzs7Ozs7Ozs7Ozs7OztPO087Tyx5Qjs7OztTOztVO1M7Uzs7Ozs7Ozs7TztRLE07UTtROzs7O1M7UztTOzs7OztPO087Tyx5Qjs7OztTLDJCO1M7Uzs7Ozs7Ozs7TztRLE07UTtROzs7O1M7UztTOzs7OztPO08seUI7Ozs7UywyQjtTO1M7Ozs7Ozs7O2tCOztLOzs7YTs7STtJLEksSSxzQzs7SyxJLGU7Ozs7Ozs7UTtROzs7Ozs7O08sRyx1Qjs7Ozs7TSxPOzs7Szs7TSxVO007Tzs7Ozs7TztPOztNO007SztLOztNOzs7O007TTtLLEksVyx1Qzs7Ozs7TTtPLE07TTs7TztPOzs7Ozs7UTs7UyxJLHVCLE87Uzs7Ozs7Ozs7TTs7Ozs7Tzs7UTs7Ozs7Ozs7USxHO1M7VTs7Ozs7Ozs7Ozs7O1U7O1U7UztTO1M7VTs7VTs7Ozs7OztRO1M7OztPO1E7Ozs7OztNO007O0k7O0s7OztNOzs7TTtNOzs7Ozs7O0s7SztLLHlCLHdCO0s7STs7Szs7TTtNO007TTs7OztPO1E7OztRO1E7Ozs7Ozs7TztPO08seUIsd0I7TztnQjs7OztPOzs7Ozs7O007TztPO087TztPOzs7Ozs7OztVO1c7Ozs7Ozs7Ozs7OztXOztXO1U7VTtVO1c7O1c7VTs7Ozs7VTs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7TTtPO087TztPO087Ozs7UTtTOzs7Ozs7Uzs7Ozs7OztVO1U7UztTO1M7VTs7VTtTOzs7Ozs7UTs7Ozs7Ozs7OztLLEksK0I7SztLOzs7SztNLG9CO00sTztLLE87STs7SyxXO0ssTztJOztLLFc7SyxPO0k7O0ssa0M7SztNLE07O007TSxPOzs7SztNO00sTzs7SztNOzs7Tzs7Ozs7Ozs7TztRO1M7Uzs7O1E7O087UTtROzs7Tzs7TTs7Z0MsdUM7Z0Msc0M7Ozs7USxJLHFCO1EscUI7O087OztXO1k7WTtZO1cscUI7VTtRLE87TyxPOzs7aUMsc0M7aUMsdUM7Ozs7TyxJLHVCO08sc0I7O007OztVO1c7VztXO1Usc0I7UztPLE87TSxPOztLOztNOzs7Ozs7TTtNOzs7Ozs7O1M7VTtVOztVLE87UyxPOzs7TztRO1E7O1EsTztPLE87OztLO007TztPOzs7Ozs7O0s7TTtNOzs7Ozs7OztLOzs7TTtNLE07a0I7O2dDO0s7O00sZTtNLEk7SztNO0s7SyxJOzs7O087Ozs7Ozs7Ozs7Ozs7OzJCOzs7Ozs7VztZOzs7Ozs7WTs7Ozs7Ozs7OzswQjs7Ozs7Ozs7OztVOzs7Ozs7Ozs7UztVO1c7Ozs7O1U7VTtVOztTOzs7OztPOzs7OztLOztNO007TSxJO00sTTtNO007TTtNOzs7SztNOztPO1E7Ozs7TyxjOzs7OztRO1E7Ozs7O2M7ZSwrQzs7O1E7OztPOzs7Tzs7Ozs7USxNO1EsTTtROzs7O1M7VTs7OztTO1UsSSxNOzs7Ozs7VTtVOzs7Ozs7O1c7Vzs7Ozs7Uzs7Ozs7TztRO1EsTzs7O1k7YTthO2EsUzs7O087Ozs7O1k7YSxPOzthLE87WTtZLFU7WSxPO1c7Ozs7O087O087Tzs7O087UTs7VyxNO1U7USxTOzs7VztXO1c7VTtPO087Tzs7TSxJLG1COzs7O0ssK0IsUzs7TTtPOztRLFE7OztRO21DLE8sYyxxQjtPLE87OztNO0s7SyxnQjtLO0k7O0s7TSxNO0s7TSxZO007OztLLE87STs7SztNLE07SztNLFk7TTs7O007O2dDOzhCLFc7SyxtQjtLLE87STs7Ozs7NkIsWTs7OztrQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFcsTzs7O0s7SyxXO0k7SSxROztLO0s7SztJO0k7SSxPO0c7O0k7OztnQixPOzs7Ozs7OztLO2lCOzs7Ozs7O0k7Rzs7SSxRO0ksTztHOztJO0c7OztJLFc7OztJLG9CO0ksTztHOzs7STs7Ozs7Ozs7Ozs7OztROzs7Ozs7OztROzs7UztROztROzs7O1M7UztRLE87Ozs7Z0I7O0k7RztHOztvQixPLGlDOztzQiw0QjtJLE87Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHOztJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssUztLLFE7Ozt3QixPLGtDO0ksbUIsTSx3QztzQiwwQjtJLEk7O29CO3FDO2lCOzs7Ozs7Ozs7UyxhOztROzs7Ozs7NEI7O1E7Ozs7Ozs7O1E7Ozs7O1Msc0IsTztTLGE7O1E7Ozs7O1M7OztVLE87VTs7O1E7Ozs7Ozs7O1E7O0ksTztHOztJLFk7O0ksTztHOztJLFc7STtHOzs7STtLLE07O0k7Ozs7STtLLE07O0k7Ozs7SSxXLE07O0k7Ozs7SSxXLE07O0ksZTs7O3FCLGtCLGdDOzRCLHFCOztJO087SyxPO0ksVztJLE87RzswQixPLHlDOztJO0s7OztNOzs7SyxtQjs7SSxPO0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TSxJOzs7Ozs7O00saUI7TTs7STtJO0c7OztLO0ssWSxPOztLO00sNkI7TTs7OzsrQjs7O0k7SSxPO0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJOztLLGlDO0ssTztJO0ksTztHOzs7STtHOzs7SztLO29COzs7O087O007OztPOztVO1csTTs7VTtTO08sUTs7O1U7VTt5QjtXOzs7OztZLE07WTs7Ozs7O2M7O2U7ZSxPOzs7Ozs7Ozs7YSxJLDhCOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7VztXLEksa0I7Ozs7Ozs7VyxXO2M7WTtXLE07O1M7b0Msc0M7Tzs7Ozs7STtJO0c7O0ksMEI7SSxvQjtHOztJLFk7O0k7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOzs7SztLLGM7STtJLE87RztHOztJOzt5QixrQjs7STtJOzs7Ozs7NkM7O0s7O0c7O0k7Z0MsNEIsVztJLFU7STs7O2EsbUI7OztZO0c7O0ksWTs7c0M7STs7O0ssVzttQjs7O0ssTyxXOztJLE87Rzs7OztLOzs7OztNLFE7TSxVOzs7O3NEOzs7OztLOzs7TTtPLFc7a0IsNEI7SztJO0ksTzs7O0ksb0I7Ozs7TTs7Ozs7Ozs7Vzs7OztVOzs7Ozs7O1c7OztVOzs7O087cUM7Ozs7UTs7OztTOzJCOzs7OzttQjtROztTO1E7Ozs7O1E7UyxRLG1DO1M7O1M7UTs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHO0csYTs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7O0s7SyxXO0k7SSxXO0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7Ozs7Z0I7Z0I7ZTthOzs7O2lCOzs7O2E7OztnQixvQixPO2dCLE87ZTthLFE7YSxPOzs7Z0I7Z0IsTztlO2EsTyxXOzs7Z0I7Z0IsZTtlO2E7ZSxXO2EsUzthLFc7bUM7YTtlOzs7Z0I7Z0I7aUI7OztxQixlO29CO2tCOzs7OzttQjs7OzttQjs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCOzs7Ozs7d0I7MkMsTyxrQzs7Ozs7Ozs7MkI7OzRCOzZDO2tEOzs7Ozs7MEI7Ozs7MkI7Ozs4Qjs7Ozs7a0M7OzBCOzsyQjs0Qzs7NEM7Ozs7eUI7Ozs7OzBCOzJDOzs7Ozs7OEI7Ozt5Qjs7Ozs7MEI7MkM7Ozs7Ozs7OEI7Ozt1Qjt3Qjt3QixPOzJDLGM7d0I7dUM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjt3Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7O2lCOzs7O2U7YTs7O2dCO2dCO2U7YSxZLFc7YTs7YTs7O1k7b0I7OztXO1k7OztXOzs7Ozs7OztROzs7USxxQjtRLFc7Tzs7Ozs7TTtPOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7UztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WSxJOzs7VyxJOzs7Ozs7Ozs7UTs7OzthO2M7Ozs7O2UsTTtlOztlO2U7O2MsUzs7O1MsTztROzs7O2M7ZTtlLG1CLHNCOzs7aUI7OztROzs7O2M7Ozs7Ozs7Ozs7Ozs7OztPO1E7Ozs7O0k7Rzs7O0s7Ozs7Ozs7TztRLFE7USxLO087Ozs7O087OztrQztRLEk7Ozs7O007TyxJOzs7Ozs7Ozs7Ozs7TTs7USxNO08sVTtPOztNLEk7O0k7O0s7Ozs7Ozs7OztLLFM7SztNOzs7Ozs7TSxPO0s7Ozs7O0k7STtHOztJLFcsTTs7Ozs7OzBCO007Tzs7O1U7VTtXLE07VSxJOzs7UztPLFU7TywyQyxXO087Ozs7O00sWTtNOzs7VTs7Z0M7O2E7c0M7O1M7OztVOzs7VztVLHNCO1M7TyxPO087OztVO1U7UztPLFM7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJO3lCLGtCLE8sMkI7SSxZOzs7Ozs7O0ssYTs7OztJO0c7OztLOzs7OztNO00sTTtNLFc7TSxPOztLOztlOzs7Ozs7O0ksTztHOzs7Szs7Ozs7TSxNO00sa0I7O0s7Ozs7Szs7O007b0I7O2dCO0ksVztJLGlCO0c7aUMsVzswQyxXOztJOzt5RTtLO0s7SyxNOztJOzs7YyxhO2E7Ozs7O0c7O0k7eUU7SSxNO0c7O0k7OztLLE87O0ksTTtHOztJOztHOztJO2tDOztLLE07O0k7RztHLG1COztJOzthO2MsWTtjLE07YyxROztjO2UsTztlLE87YyxPOzs7YSxJLFU7Ozs7O2M7ZSxPO2UsTztlLE87ZSxPO2MsTzs7O2EsTzs7RztHO0k7O0k7O0k7Ozs7Ozs7Ozs7O0k7O0c7O0k7O007TyxVO087Tzs7TztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO00sUTtNO00sTTs7O1M7UTtNOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLEksOEI7Ozs7Ozs7O0k7Rzs7SSxXOztLO0s7SztJO0k7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7OztlO2U7Ozs7Ozs7YztjLE87YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7O0s7SyxnQjtJO0k7SyxPO0ssTztLOzs7SyxTO0k7Ozs7O0s7SztJO0ksVztJO0c7O0k7STs7Ozs7TyxTO1E7TyxJOzs7O0s7O0c7OztLO0ssTztJO0ksVTtJO0c7O0ksWTs7STs7Ozs7O0ksWSxPOzs7O0s7Ozs7OztJOzs7STtLO0s7Ozs7O0ssUTtNO087O1c7Ozs7TztPO007Ozs7OzRCOzs7OztrQjs7SztJO0ksTztHOytCLHVCOztJO0c7O0k7OztLO00sVzs7O0ksVztJLE87RzswQix3QjsrQix1Qzs4Qiw4Qzs7STtHOzZCLFc7dUMsK0I7O0ksSSxZOzs7O00saUI7O007Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLLE8sNkI7STtJLE87Rzs7STtJO0s7O00sUTtNOzJCLFEsOEIsUzs7Ozs7Ozs7Ozs7VTs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7VTs7Ozs7VztVO1c7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7ZSxNOzs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7ZSxpQztLO00sTTtLO007aUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Szs7Ozs7SSxPO0c7O0ksWSxPOzttQjs7Ozs7Ozs7STtHOztJLFk7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTs7UTtRO1MsTztTLE87USxPOztJO0c7Rzs7STs7aUI7Szs7Ozs7OztNOzs7O1U7Vzs7O1k7OztXLEksWTs7O3FDOzs7VyxlOztVLE87Uzs7OztNLE87TSxNO0ssSSxVOzs7O00sSTs7O0s7OztNLFE7Ozs7O087UTtRLDBCO1EsTztPO2U7Ozs7OztNO087Tzs7O2Esc0I7Ozs7TztPOzs7OztHOztJO0ssVztLOzs7OztPLG1CO087O3FCLEk7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7Ozs7Tzs7O1E7Ozs7Tzs7O21COzs7OztJO2lCLE87SSxJO2dCLE07O0k7Rzs7Ozs7OzZCLE87O1E7OztTLHNDO1MsUzs7Ozs7Ozs7OEIsOEI7USxPOzs7OzhCLDhCO1EsTzs7Szs7OztJOzs7O1E7a0I7Ozs7Ozs7OztTO1U7Ozs7VztVOzs7Ozs7Ozs7Ozs7UztVOztXO1U7Ozs7OztPOzs7O1E7UTtRO087OztRLFc7O08sTzs7SSxPO0c7O0k7Z0IsTzs7STtHOzs7STtJOztNLE87SyxJLFk7Ozs7MEIsTTs7Ozs7Ozs7Ozs7Ozs7O2tCO007Ozs7O087OztNOzs7O08sSSxVOzs7O1E7Uzs7Ozs7O087OztRO1E7Ozs7Ozs7Rzs7STs7Ozs7TSxLO087TTtPOzs7TTtpQzs7Ozs7STs7Ozs7O2M7OztHOztJLHFCOzs7SyxNO0k7Ozs7O0s7Ozs7Ozs7OztRLDBDOzs7Ozs7Ozs7OztpQjs7Ozs7O0k7OztLO0s7SSxvQjtJO0ssUTtLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjtxQixvQjtxQjs7b0I7NEM7Ozs7Ozs7Ozs7Ozs7O1U7OztXOzs7Ozs7Yzs7ZTs7Yzs7ZTtnQjs7O2dCO2tCO2dCOzttQixZO21COzs7OztvQjs7O21COzs7Ozs7bUIsTTs7a0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQixNOzs7Ozs7Ozs7O2dCO2lCLE07OztvQjs7O3FCLE07b0I7Ozs7bUI7aUI7bUI7Ozs7O2U7OzttQjs7O29CLE07bUI7Ozs7a0I7Z0I7a0I7ZTs7YztlLFM7Ozs7OztlOzs7bUI7bUI7a0I7Z0I7a0I7O2dCLE07ZTs7Z0IsbUMsbUI7Z0I7O21CLE87Ozs7Ozs7OztrQjtnQixPO2dCLE87Z0IsWTtnQjtrQjtnQjtzQywrQjtpQixZOzs7O2dCO2lCOzs7aUI7Ozs7Ozs7O3NCO3VCOzt3QjswQyxPLGdDO3dCLE87dUI7dUIsTyx5Qzs7O2tCLFU7OztpQjtrQjt5QzttQjs2Qjs7Ozs7OztnQjtpQjs7O29COzs7OztxQjs7cUI7b0I7b0I7cUIsVTtxQjs7cUIsVTs7cUIsTzs7K0I7Ozs7b0I7b0I7b0I7bUI7aUIsVTs7Ozs7O2dCO2lCOzs7Ozs7Ozs7Ozs7YztlO2lCO2U7O21COzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQjs7Ozs7O3FCOzs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7aUI7OztrQixROzs7O2dDOzs7aUI7OztxQjtxQixjO29CO2tCLFM7OztxQjtxQixjO29CO2tCLFM7a0IsTztrQjs7O2tCLFM7aUI7Ozs7OztpQjs7O3FCO3FCO29CO2tCLE87OztxQjtxQjtvQjtrQjs7O3FCOzs7Ozs7OztrQjttQixJOzs7c0Isa0I7a0M7O3NCO3VCLEksTzs7Ozs7Ozs7c0IsTzs7a0I7a0I7a0I7bUI7bUI7OztzQjs7OztxQjtrQjs7bUI7Ozs7dUIsb0I7bUM7OztzQjtvQixTO29CO29CLE87O29CLE87Ozs7OzRCOzs7Ozs7Yzs7Vzs7O2U7YztjOzt3QixvQjs7Ozs7O2lDOzt3Qjs7OzswQjs7Ozs7eUI7eUI7d0I7MkM7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7Ozs7Ozs7VTs7Vzs7Yzs7O2U7OztjOztpQjs7O3FCOztzQixNOzs7cUI7b0I7a0I7b0I7Ozs7Ozs7Ozs7O2lCOzs7cUI7O3NCLE07OztxQjtvQjtrQjtvQjs7Ozs7O2lCO2tCOzs7cUI7cUI7c0IsTTs7O3FCO29CO2tCLEs7a0I7Ozs7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOztVOztvQjs7Ozs7Ozs7VTs7O29CLFk7b0I7OztzQixXO3NCLE87OztzQixNOzs7cUIsTzs7b0I7cUI7O3NCO3NCLFE7O3NCOzs7OztxQjtxQjs7b0I7NEM7Ozs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7OztzQjtzQixPOzs7c0IsTTs7cUI7O3NCO3FCLE87O29CO3FCOztzQjtzQjs7Ozt1Qjs7d0I7OzsyQjsyQjs0Qjs0QixNOzRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjswQjt1Qjs7O3FCLE07OztvQjs0Qzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Yzs7O2U7YyxHO2U7Z0IsTzs7O21CLGtCLFE7Ozs7Ozs7bUI7a0I7ZTs7Ozs7ZTtjO2M7ZTtlO2lCO2U7OztlOzs7Ozs7Ozs7Ozs7OztjO2U7Ozs7Ozs7Ozs7Ozs7O2lCOzs7OztpQjs7Ozs7O2tCLE07aUI7Ozs7Ozs7Ozs7aUI7Ozs7aUI7Ozs7Ozs7Ozs7ZTtnQjs7Ozs7Ozs7Z0I7Ozs7OztjOzs7Vzs7OztlLFk7ZTs7Ozs7OztnQjs7Z0I7Ozs7aUI7aUI7aUIsTztnQixTLDZCO2dCLFU7Z0I7aUI7O2tCO2tCOztrQjs7cUIsb0I7cUI7O2lCOzsyQjs7Ozs7OztnQjtpQjtpQjs7Z0I7OzBCOzs7Ozs7O2UsTTs7Yzs7VTs7b0I7Ozs7Ozs7O1U7VyxPO1c7O2M7OztlOzs7ZSxTO2U7OztlO2lCOzs7Ozs7Yzs7Vzs7d0M7Yzs7d0Isb0I7O3lCOzswQjs7OzZCOzs7Ozs7OzRCO3lCOzt3QixNOzs7Ozs7Ozs7VTs7b0I7Ozs7Ozs7OztHOzs7STtLLFE7OztLOzs7STtHOztJO2tEO0k7Rzt3QixPLHlDOztJOzs7OzZCLDBDO0ssTzs7STtHOztJLE87Rzs7SSxZOzs7OztTOzs7VSxPO1M7VSxXO1U7Ozs7O1M7UTtLLEssaUQ7O0k7OztJO0s7Rzs7O0k7SztNO00sVTs7O0ssc0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJLFU7Ozs7TSxNOzs7O0ksd0I7Ozs7SztNLE87TSxPO00sUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7STtLO0s7SztPO21DLG1CO0k7Ozs7Ozs7O2M7O2E7Rzs7STs7Rzs7STs7Rzs7STs7Rzs7STs7Ozs7UTs7O1E7O3NDOzs7Ozs7UTs7Ozs7OzthO2E7WTtZLE87Vzs7UyxzQjtTLE87Uzs7UztROztROzs7OztTLHNCO1MsTzs7O1k7WTtXO1E7O2dCOzs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7a0M7O0ssbUIsSTtLOztJO0s7SyxTO0ssWTs7SztLLGU7STtJLHFCO3lCLG1CLFU7STtLLGM7Szs7OztXOzs7Ozs7Ozs7OzswQyxrQztnQixPOzs7Ozs7Ozs7Z0IsTzs7Ozs7VyxjOzZCLGUsMkI7VyxnQjtXOzs7b0I7OztVO1U7VztXLGM7VTs7VyxPOztVOztXLE87O1U7aUI7VSx1QixXLGdDO1U7OzBCOzs7Vzs7VSxPOzs7Ozs7Rzs7STtLLE87OztTOzs7O3NCLHVCO0ksSSxPOzs7Ozs7Ozs7Yzs7Ozs2Qjs7YTtHOztJO2tDLE87dUIsTTs7STtHOztJOztLO0s7STtJLEksTzs7SztpQixPOzs7b0I7Ozs7TSxXO007O007TyxNO2lCOzs7TSxNOztLO0k7SSxXO0c7O0k7O087Ozs7O1E7OztXOztRLE87Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJLGU7eUIsa0IsYztJO0ssVztLLE87SztLO0s7SztPLG1DLGlCO0s7Ozs7Ozs7Ozs7O1U7VSxvQjtVO1csZTtXOzs7VyxPOztXLG1CLE87O1c7VTtVLFU7NEIsdUI7VTtXLE87Vzs7VztXO1U7VTtXLGE7VztXOzs7Z0I7aUI7Ozs7a0I7Ozs7aUI7OzJCOzs7Ozs7OztnQjs7Ozs7Ozs7VyxPO1U7a0I7O1M7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksUzs7Ozs7Ozs7O0k7O0s7TSxJLGMsMkM7Ozs7O08sUztPO087OztJO0c7RztJO0k7STtJOztJO0k7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLGtDO2EsVTs7Ozs7Ozs7O007O0s7O0c7O0ksc0I7O0ssbUI7SztNLFE7TTtPLEksZTs7Ozs7Tzs7OztNOzs7OztNOztNOzs7STtHOztJOzs7O0c7cUIsd0I7RyxxQjs7SSxJLFE7OEIsbUM7SSxhO0k7STtHOztJO0ssTTs7SyxNOztJLFc7Ozs7Szs7TTs7Ozs7Ozs7Ozs7TTs7O0k7SztpRCwyQjs7O0k7Rzs7SSxxQjs7SyxNO0ksc0I7O0ksSSxROzs7Ozs7Ozs7Ozs7O0k7NkIseUI7RztHO0k7STtJO0k7O0k7STtHOztJOzs7O1M7OztTLEksUyxrQjs7VTs7Ozs7Ozs7O1M7UyxlO1M7UTtLLE87OzswQixPO3dCLE8saUI7SSxPO0c7O0k7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7cUI7O0s7O0k7Rzs7STs7Ozs7OztvQjs7STtHOztJOzs7Ozs7O29COztJO0c7O0k7Ozs7SztJO0c7O0k7Rzs7cUIsMkI7STtLLFE7OztJOzs7O007Ozs7Ozs7OztJO0c7O0k7Szs7Ozs7O1EsTzs7OztLLFc7Rzs7STtLLGlDO0s7SyxPLHFEO0c7O0k7Ozs7OztLOztJO0c7O0k7Ozs7Ozs7SyxJLFE7OztnQzs7O0s7O0k7Rzs7STtLOzs7STs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7OztLLFE7SyxnQixPO0s7TSxNLFc7TSxNLFc7TSxNLFc7Szs7STtJO3VCOztrQjtJLHFCLFU7a0I7O0k7Rzs7SSxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7OztJLFU7STs2QztJO0k7Rzs7SSxXOzs7Ozs7O0k7Rzs7STtJO0c7O0k7STtHOztJO2U7Ozs7Ozs7STtHOztJOzs7O0ssTzs7STtHOztJOzs7O0ssTzs7STtHOztJOzJCLE87STtHOzs7Ozs7OztJLE87OztJO2tEOzs7O007Ozs7Tzs7TTs7O007TTtNOzs7STtJO0c7O0k7d0I7Ozs7c0I7TTs7O007OztJO0k7Rzs7STttQjs7OztzQjtNOzs7TTtNO007OztJO0k7Rzs7STtLOzs7SztJO0c7OztLO007OztNOzs7TTs7Ozs7Tzs7Ozs7Ozs7TTtPOzs7Ozs7Szs7Ozs7Ozs7STtJO0c7O0k7Szs7O0s7STtHOztJO0s7Ozs7TTtLO0k7STtLLFE7OztJOzs7Ozs7OztLOztNOztLOzs7Ozs7O1U7Ozs7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O00sTzs7O2lEO0ssTzs7STs7Ozs7Ozs7dUQ7O0ssTzs7K0I7OztJO0s7SztLOztLOzs7O007SztJO0ksRzs7O3NCO007O087OztVOzs7Ozs7Ozs7Ozs7OzthOzs7O3NCO007Ozs7Ozs7Ozs7TTtNO007OztNOzs7STtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7SztJO0c7O0k7SztJO0c7RyxzQjs7STtHOztJO29DLHNCO0ksTztHO0c7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssVztLOzs7Ozs7OzJCOztNLE07Szs7Rzs7STs7Ozs7O087USxTO1EsTztRLE87UTs7aUI7OztPOzs7O0s7O0k7Rzs7STs7Ozs7Ozs7Ozs7NkI7Ozs7NkI7Ozs7OEM7O0s7O0k7Rzs7SSxZOztLOzs7O00sVTs7Ozs7Ozs7O0k7SztLOzs7Ozs7O1k7Ozs7YSxPO2EsUTtrQyx5QjthLFM7WTs7O1k7Ozs7YSxVOzs7O3VCOzs7WTs7Ozs7Ozs7Ozs7O21COzs7Ozs7WTs7OzthLCtCOzs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7Ozs7WTs7Ozs7YSxVOzs7MkI7WTs7Ozs7WTs7Ozs7YSxVOzs7K0I7WTs7O1ksdUIsVTs7Ozt5Qjs7O1k7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O1UsUzs7Uzs7Vzs7O1k7cUI7VSxPOztvQjs7O3NCOzs7d0I7OzswQjs7OzRCOzs7O1M7Ozs7STtHO0c7SSxhO0ksb0I7SSxtQjtJLGdCO0k7TTtJO007SSxpQjtJO007STtNO0ksZ0I7STtNO0k7TTtJLG9CO0k7TTtJO007SSxtQjtJO007STtNO0ksZTtJO007STtNOztJOzs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7OztHOztJO0ssTTtLO0ssUTs7OztLO087O1U7O0k7O087O087O087USxXO1EsTztPLEc7UTtTLE87dUI7OztPOztPO2dCO087O087Ozs7Ozs7OztPLGlCO087O0c7RztJO007SSxVOztJLE87Rzs7SSxPO0c7O0k7Ozs7Ozs7OztTOzs7VSxPOzs7VTs7Ozs7Ozs7Ozs7VyxNOzs7O1M7Ozs7Ozs7Ozs7Ozs7OztTLE87Ozs7Ozs7Uzs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsVzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O007Ozs7O3FCO1M7Ozs7USxPOzs7MEI7Ozs7Ozs7O1UsbUI7VTs7Ozs7Ozs7Ozs7O1csRzs7Ozs7O1U7Ozs7OztXLE07Ozs7Uzs7Ozs7bUI7O1MscUI7Uzs7OztJLE07dUI7Rzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7OztJO2EsTTtJO0c7O0k7Szs7UztLOztJO0ssVztLO0ssZTtJO0k7eUIsbUIsZTtJO0ssTztLO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7O0k7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzs7USxNO087STtVOzs7SyxXO0ssTztJO0k7SyxTO0s7Ozs7TTs7TyxPO2M7O2lCOzs7O2dCO0ksSSxNLDZDOzs7Ozt1Qzs7Szs7Ozs7O0ksTztHO0c7O0ksbUIsTTs7STtHOztJOzswQzs7SSxPO0c7OztLOzs7Ozs7Ozs7Ozs7Ozs7SztJO0ksTztHOztJOzs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7YztjOzs7Ozs7Ozs7Ozs7Ozs7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthO2M7Yzs7Ozs7Ozs7Ozs7Ozs7O1E7UTs7OztNO087USxRO1E7USxNO1EsTztROzs7VyxXOztRLFU7Ozs7Ozs7O1E7Ozs7NkI7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7O087Ozs0Qjs7Ozs7Ozs7Ozs7Szs7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SztLLFE7Ozs7SyxRO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOztJLFk7WSxPO0k7OztLOzs7STtHOztJO0k7Ozs7OzRCLE87OztTOzs7O0s7O0c7O0k7Ozs7O1EsTzs7USxPOztRLE07MkI7O0ksTztHOztJO0k7SyxPOztJO0c7O0ksaUIsTztJOzs7Ozs7OztJO0s7NEI7SyxPOztJO0ssTzs7O0k7Rzs7OztLLE07Ozs7TztnQjs7Ozs7OzJCOztPOzs7O1E7Tzs7Tzs7OztRLG1DO1E7Ozs7O2E7OztjLGM7YTs7WTs7Ozs7OztRLFE7UTtVOztPLE87Ozs7Ozs7Uzs7Ozs7VTtvQjs7OzZCLDZDO1UsRztXO1k7Ozs7O2U7O2dCLE07O2U7YztZLFc7WTtZOztZLE87WTtjOzs7Ozs7Ozs7O1cscUI7VztZLFU7OztZLFU7OztZLFU7OztZO1c7Ozs7Ozs7Ozs7c0I7Ozs7Ozs7Tzs7USxVOzs7USxVOzs7USxVOzs7UTtRLE87Tzs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7OEI7VztZLFE7OztXOzthLE07WTs7YTs7WTs7OztZO1k7OztXO1ksTTtXLFU7Vzs4QixlO1ksaUI7VztXLGU7Z0MsbUIsVTtXLFU7O1k7WSxlO1c7VztZLFk7WSxPO1ksTztZLE87Vzs7WTtXO1c7WTtZO2tDLHlDO1ksTTtZO1c7Ozs7O1E7VTs7OztRLGtCO1EsWTtRLFk7OzsrQjtXO1ksTztZLEs7WSxzQjtXOzs7O29COzs7VTtROzs7Ozs7VTs7O2MsVztjLFc7YTtXLFU7a0MsbUIsZTtXLFE7VzthOzs7OztXLE07VTtXOzthOzs7Ozs7UztnQztVLE87VSxTO1UsSTtVO1k7Ozs7OztTO1UsTTtTO1U7O1k7Ozs7Ozs7Vzs7OztXO1U7TyxPOztPOzs7USxLOzJCLDZCO1EsVTtRLHNCO1EsTztRLE87Tzs7Tzs7UTs7O087UTsyQjtROzs7OztTOzs7aUI7Ozs7Tzs7O1E7Ozs7Ozs7O2lDLFc7OztZO2E7OzswQjthOzs7OztjOzs7c0I7Ozs7WTs7OzthLE87YSxRO1k7Ozs7O3NCOzsrQztRLE07OzhDO08sTTs7TyxvQyxNO08sWSxXO08sc0I7TztROztTLHNCO1E7Ozs7O1EsVztROzt3Qjs7OztPOzs7Ozs7O1E7O1E7UyxVOzs7O1ksd0I7Ozs7YTtjOzs7Yzs7aUIsTTs7O2lCO2tCLE87Ozs7YTtjLE87OztZLFc7WTs7Ozs7OztRO1MsTTtROztTO1c7UyxPO1E7Ozs7Ozs7Ozs7TztRLFU7OztXO1c7WTs7YSxlO1k7O1c7OztZLGE7OztZO2E7OzthOztnQixNOzs7O2tDOzs7Z0M7O1c7Ozs7b0I7O1U7USxLO1EsTztRLFc7Ozs7MEIsZ0Q7USxNO087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVzs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtROzs7VztXOzs7VTtRLE87Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7OztVLGE7VTtVOzthOzs7O1U7aUI7Uzs7OztROzs7O1MsUTtTO1E7Ozs7aUI7Ozs7TztRLE87O087O087OztRO1E7Tzs7Ozs7O1E7OzBCO08sSSxpQztPOztPLG9CLFc7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1E7USxlO1EsSztRLE87Tzs7Tzs7O1E7USxPO08sTzs7Ozs7Ozs7TyxPOztPOzs7Ozs7Ozs7O1csWTtXOzs7WSxVO1ksVzs7OztZOztnQjs7Ozs7WTtZOzs7OztnQjs7OztZLE07WTtXLE87Ozs7O1E7O1k7Ozs7O1E7USxjOzs7Vzs7Ozs7Ozs7VTtROzs7Ozs7O1EsUztRO1U7O087Ozs7Ozs7a0I7Ozs7O087OztRLE87TyxPOztPLG1DOztRO1MsTzs7UTs7TztRLE07USxPO1E7OztXO1c7Ozs7Ozs7O3FCOzs7VTtpQjtPOzs7O2U7Ozs7O0k7OztJOzs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLG9CO0ksTztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJOztLO0k7STtLO0ssMkIsNEM7SSxPOzs7STtJO0k7Ozs7O0s7O1E7Ozs7O1MsTztROzs7USwyQjs7Ozs7Ozs7O1M7Ozs7aUI7Ozs7O0s7STs7Ozs7aUM7TyxtQjs7OztPOzs7UTtROztXOzs7Yzs7YyxTOztjOztVOytCLG9CLFc7TyxHOzs7Ozs7OzsrQjs2QjtPO1E7OztXO1csb0I7VyxXO1U7USxNO1EsUztROzs7Ozs7O1U7Ozs7OztXLE87YTs7O2M7Ozs7Ozs7Ozs7Ozs7O1c7OztPO1E7OztXO1c7VTtPLE87O007Ozs7Tzs7Ozs7O0ssZ0MsTztLLG9CO0ssVztJO0ksMkI7Rzs7O0ksZ0I7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7USxHO1M7VSxPO1UsYztVOzs7Ozs7Ozs7Ozs7O1M7O2lCOzs7Ozs7Ozs7b0I7UTs7Ozs7Szs7O0k7Rzs7O0k7Ozs7OztPLFU7VTtRO1M7VSxPOzs7YTthLFc7WTtVLGlCO1M7VSxNO1M7Ozs4Qiw4QztVLG1COzs7YTs7YyxVO2MsTzthO2EsTztZO1UsUTs7O2EsVztZO1UsVTs4QjtVLFM7Z0MsNEM7VSxpQjs7O2E7YTtZO1UsTTtVOzs7YTtTOzs7OztVOzs7Ozs7OztJOzs7OztJO0s7OztNLE07OztTLG9CLE07UyxPO1E7YTs7O29CLDZCO0ksWTtJLGtCO0ksVTtJOztZOztHOzRDO0c7O0k7Ozs7OztJLFk7OztLO00seUI7O0k7Rzs7STtJO0s7OztTLG9COzs7O2dDOztzRTs7O1MsTTtRO00sUzs7O1M7Ozs7O1U7VSxRO1M7O007UTtLLHNCLDBCOzs7SyxZLHNCLFk7Szs7Ozs7OztNO00sUTtNO0s7TTtNLE8seUQ7STtJO0c7O0k7SSxlO0c7O0k7YztjOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7OztNOzs7OztPLE87TyxPO1U7TyxXO08sTzs7OztJLE87Rzs7O0k7OztJLE87Rzt5Qiw0Qzs0QixPLGlDOztJLGMsVzt1QixnQjtJLGtCO0ksTztHOztJOzs7O3lCO0ksZTtHOzs7Szs7O007O0s7Ozs7d0I7O0k7SSxPO0c7Ozs7SztLO0k7STs7Ozs7YTs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjs7OztZOzs7O2E7OztlOztnQjs7Ozs7OztvQyxrQjs7OztlOzs7OztnQjs7Ozs7OztlOztZO1c7UyxVOzs7Ozs7WTtZOztXO1MsYTtRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7Uzs7OztZOzs7OzthOzs7ZTs7OztnQjs7Z0I7OzttQjttQjtvQjtxQjs7O2dDO3FCOzs7OztvQzs7b0I7Ozs7MkM7OztrQjtnQjs7Ozs7OztxQjs7Ozs7Ozs7ZTs7ZTs7OztnQjtlOzs7O2dCOztpQixXO2lCO21CO2dDOzs7aUI7OzRCO2tCO21CLE87bUIsTTs7Ozs7Ozt1Qjs7Ozs7OztnQjs7O3dCOztnQjs7O3dCOzs7OztlOztnQjs7O21CO2dDO2U7Ozs7OEI7Ozs7O2U7O1k7VztTLFU7Ozs7O1M7O1M7c0MsNkI7UyxRO1MsTTtTLFE7Ozs7VTtXOztjO2M7Ozs7OzRCOzs7a0I7Ozs7Ozs7UyxJLE0sZ0M7Ozs7VTtXO2lDO1c7OytCOzs7O1M7VSxPOzs7YTthO2E7WTtVLE87O2dDO1U7Ozs7K0I7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7OztZLFc7VztTLGE7UyxnQjs7O1M7OztROzs7Ozs7Ozs7O1E7Ozs7Ozs7OztTLEs7VSxNO1M7VSxNO1UsTTs7Ozs7YTthOzs7Ozs7WTtVLFk7OzthO2E7Ozs7OztZO1UsWTtVO1U7O1UsK0I7VSxPO1M7Ozs7Ozs2Qjs7Ozs7O1k7Ozs7Ozs7Ozs7VztRLFM7UTtTOzs7O29COzs7O1E7Ozs7dUI7Ozs7Ozs7STs7Szs7OztNOzs7Szs7O2M7YyxPOzthOztJLGlCLFM7STtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLO007OztTO1U7OzthLFc7O2E7Ozs7Yzs7ZSxLO2tDLFcsK0I7YyxPOzs7O1U7O1M7O007Ozs7VSxrQjs7Ozs7Ozs7Ozs7Ozs7aUIsRztrQjs7aUQ7Ozs7Ozs7Ozs7Ozs7aUIsRztrQjs7Ozs7Ozs7O2UsRztnQjs7Ozs7VSxNO1M7Ozs7Szs7Ozs7Ozs7VztZO2E7OzthLE87YSxPO1ksVzs7VztZLEk7WTtvQjs7Ozs7O1UsSTtVLFc7Ozs7Ozs7OztVOzs7Vzs7Ozs7Ozs7O21CLEc7b0I7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjtxQjt3QjtvQjs7Ozs7ZSxNOzs7VTs7O1EsTTs7Ozs7UyxHO1UsSTs7Ozs7Ozs7Ozs7Ozs7OzthLEs7YSxJO2E7cUI7Ozs7Ozs7WSxHO2E7Ozs7O1k7OzthOzs7WTtvQjs7Ozs7Ozs7O2E7OztjOzs7YTtxQjs7Ozs7OztLLEk7SyxXOztHOztJO0s7TSxhO00sUztNOzs7TTs7Ozs7O08sTTs7OztLO007OztNO1E7Szs7O007TyxNO08sVztPLFc7TyxRO08sUzs7O087Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxHLDJDO0k7SyxXO0ssTTtLLE07SyxTO0ssVTs7O0s7Szs7O0ssb0I7SyxPOzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Tzs7NkIsbUI7a0I7Ozs7OztLO00sTztNLE87TTs7SztNOzs7Ozs7O2EsUTs7WTtTLE87Ozs7Ozs7Ozs7YTtxQjs7WTtTLE87Ozs7OzthO3FCOztZO1MsTzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLO0s7SztNLE87TSxPOztLO007UTtNLE87TSxPO29CO0ssSSxxQjs7TTtNO00sTztLO0ssTztJO0k7SSx5QyxXOztLOzs7Ozs7O1M7Ozs7VSxNO1M7OztVO1c7b0I7Uzs7bUIsTTtVO1c7VztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1csbUI7Vzs7VSxNOzs7OztVO1csTztXO1c7YTs7Ozs7Ozs7VTs7Ozs7O0ssTTs7STtLO0ssTztLLFM7O0s7Ozs7Ozs7O0k7SSxJLFc7STs7O0s7OztNLFc7Ozs7STtLLE87SyxPO0s7SztLOzs7OztLOzs7OztLO007TSxNOztNOzs7STtLO0ssYTtLOzs7Ozs7Ozs7Ozs7O0k7SyxNO0k7SyxVO0ssTTtLLE07SyxhO0ssYTtLLGE7O0ssVztLLE8seUI7STtJO0ssYztLLE87SyxVOztLO00sUztNLE87SztNLE07O0s7STtJOztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7cUI7Ozs7OztLO007O1U7Ozs7Ozs7O00sSzswQixXLGdDO0ssRztNO087eUI7O007O087Ozs7O087Ozs7YTs7Ozs7Ozs7Ozs7O0s7OztLO007Ozs7Uzs7O0s7O0k7SyxTO0ssUzs7Ozs7Ozs7O0s7TTs7MEIsZTtzQjs7OztLO007OzBCLGU7OzJCO0ksVzs7SztLO0k7SSxnQjs7SztLOzs7O3dCOztJOztLLHFCLE87SyxPO0k7SSxnQjs7SztLO0k7SSxlOztLO0k7STtLO007TTs7OztZOzs7Ozs7O0s7TTs7OztNO21COztNOzs7Ozs7Uzs7O0s7O007Ozs7O1U7Ozs7Ozs7Ozs7OztJOzs7Szs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7O2E7OztJOzs7SSxrQjtJLE87Rzs7STtHOzs7O0ksTzs7OztJLHVCOztJLFc7RztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QixzQjs7SSxXOztJO0c7O0ksVzs7SSxrQjtHOztJOztLO007TSxNO0s7STtJLE87Rzs7SSw4Qjs7Ozs7Ozs7O1k7OztXO1c7O1k7O1c7O3VCO1c7VTtPLE87O087OztRLFE7UTtRO1E7Ozs7Tzs7Uzs7O1UsVTtVO1U7VTs7Ozs7Ozs7O1k7O2E7YTs7Ozs7Ozs7bUI7Ozs7O2EsTzs7VztRLE87Ozs7Ozs7O08sTzs7Tzs7OztRLE07K0IsdUM7TyxPOztHOztJLEksSyw2Qjs7Szs7Ozs7O0ssSyxpQztLO00sTztNLE87TSxPO0s7Ozs7O3dDOzs7STtJO0ssUTs7O3VDO0c7O0ksMkI7Ozs7Ozs7Ozs7WTs7O2EsSzs7O2dCOzs7O2lCOzs7Z0I7ZTthLFM7YSxPOzs7Z0I7NEQ7Z0I7O2lCOzs7Z0I7ZTtZLFc7Ozs7Ozs7Ozs7WTs7O2E7WTs7Ozs7Z0M7OztNOzs7SSxPO0c7Rzs7STs7O0s7Ozs7STtHO0c7SSxXO0k7Ozs7Szs7Ozs7O1UsWTs7OzthOzthLE07OzthLE07OztTOzs7VTtVO3NCOzs7Ozs7Ozs7O2U7OztnQixPO2dCLFU7Ozs7O2dDOzs7bUIsSztnQzs7OztnQjs7ZTtlLE07Ozs7ZSxNOzs7O2M7Ozs7ZSxROzs7Ozs7YyxNOzs7OztlOzs7Z0I7O29CO2U7O2M7OztlLFE7Ozs7O2M7Ozs7ZSxROzs7OztjLHFCO2MsVzs7OztTO007TztROztRLFE7Ozs7bUI7UTs7Ozs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7TTtPLFE7Tzs7O0ssVztLO0k7SSxpQjt5QixtQixVO0k7SyxPO0ssSzt5QixvQixXO0k7SyxPO0ssTTt5QixxQixZO0k7SyxPO0ssTzt5QixvQixXO0k7SyxPO0ssTTtLLEs7SztLLFM7Szs7Szs7TTs7OztVOztXLE07VSxrQjs7VyxNOztVO1M7OztNO087Ozs7OztVO1UsTTs7Ozs7OztTLEk7Ozs7TyxNOzs7aUI7Ozs7SztNO00sSSw2Qjs7OztROzs7Uzs7VTtTLEc7VTs7OztROzs7Ozs7Szs7TTtNOzs7Ozs7Ozs7Ozs7O0s7SztJO0ksSSw2Qjs7OztNOztPLE07a0I7TTs7Ozs7OztLO0s7Ozs7OztROzs7Ozs7UztROzs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7O0k7O0s7Szs7Ozs7O1E7Ozs7O087Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O3lCLG1CLGE7SSxVOztLOzs7Ozs7Szs7YTtJO0ksZ0I7Rzs7STtJO0ssc0IsTztLO0s7TSxNO007Ozs7UTs7OztpQjs7O1E7O1E7Uzs7O1k7Ozs7OztZO2E7O2E7OztjLHFCOzs7Ozs7Ozs7Ozs7OzthLFk7Ozs7Ozs7OztlO2dCLE87Ozs7OzRCO2E7O2dCOztjLE07aUM7YTs7Yzs7Ozs7OztZLE87YSxNO1k7Ozs7YTs7Ozs7O2MsVTtjO2M7YzthO1k7WTthO2U7OztZLE87Ozs7Ozs7O1c7USxPOztROzs7O1MsVTs7O1M7Uzs7Ozs7Ozs7OztTOzBCO1EsTzs7UTs7O1M7Ozs7OztRO21DOzs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87NEIsZTs7MEI7O087OztRLE87USxJO1E7O1c7OztVO1EsUTs7O1c7VztZOzs7OzthLE87WSxPOztXO1U7USxpQjs7O1c7VyxXO1U7USxnQjtRLFU7UTs7Ozs7Ozs7Ozs7Ozs7OztNOztLLHlDOzs7UTs7Uzs7OztRLGdCOztROzs7UztXO1MsTztTLGE7Uzs7Ozs7USxXOzs7UTs7Ozs7O1E7O1M7OEIsYztTLE07Uzs7OzthOzs7Ozs7O1E7Ozs7O1E7OztTO1M7Ozs7O1E7Ozs7O2lCOzs7Ozs7O1M7Ozt1Qjs7O1M7O1Usc0I7VTs7NEI7VTtZOzs7OztTO1U7Ozs7UztVOzs7OztvQjs7O1M7OztVOzs7O2M7Ozs7Uzs7a0I7Ozs7Ozs7USxJLGMsTztRO1EscUIsTztROzs7O1E7OzZCLGE7UyxPO1MsZTtTOzs7OztTOzs7O2MsUztjOztlO2U7O21CO2U7Yzs7O3VCOzs7O2E7OztROztRLG1CLE87O1E7UyxRO1MsTTs7O1k7OztZOzs7YTs7O1k7Ozs7Ozs7O3NCOzs7O1M7OztROzs7O1E7O1M7OztTOzs7O2E7Ozs7Ozs7UTs7UTs7UyxRO1M7UyxROzs7WTs7O1k7OzthOzs7WTs7Ozs7Ozs7c0I7Ozs7Uzs7O1M7UTtvQjs7Ozs7Ozs7STtJO0s7Ozs7O29COzs7O0s7STtJOzs7SyxnQix3QztLLE87STtJO0ssTzs7O0ssa0I7STtJO0ssVztLLE87SyxhO0k7STtJO0c7OztJOztJO0k7SyxZO0ssUzs7SztJO0k7SyxROzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTOzs4QixjO1MsTztRLE87O1Esb0I7UTs7Ozs7Uzs7Ozs7UTs7Uzs2QixhO1MsTztRLE87Ozs7UTs7UztTLE87USxPOztROztTO2dDLG1CLGE7UyxPO1EsTzs7OztROztTO1MsTztRLE87Ozs7Rzs7STtJO21CO0sseUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSSx5QjtTLE87Ozs7Ozs7OztRLG1COzZCO1Esd0I7USxPOzs7Ozs7Ozs7O1U7O1c7VztVLE87Ozs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTOzs4QixjO1MsTztRLE87O1Esb0I7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7VSxJLHdCO1UsTzs7Uzs7Ozs7UTs7Uzs2QixhO1MsTztRLE87Ozs7USxtQjs7Uzs7VTtVLE87VSxPO1MsTzs7USxXO1EsTzs7UTs7UztnQyxtQixhO1MsTztRLE87Ozs7Ozs7O1U7OztXO1c7VyxPO1csTztVLE87OztRLEksd0IsTztRLE87Ozs7RztHOztJO0ssWTs7Ozs7Ozs7Ozs7OztRLG1DO1E7Ozs7O0ssTTs7Ozs7SztNLE87TSxPO0ssTzs7Rzs7STtLO0ssTTtJO0s7SztNOzs7Ozs7O1MsTzs7Uzs7OztVLE07Uzs7SztvRTtHOzs7STs7STtJO0ssWTtLO0s7STs7O29CO007OztPLFE7Tzs7Ozs7Ozs7O0s7O00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7O1c7Ozs7Ozs7VTs7Ozs7Vzs7Ozs7OztNOzs7TztPLFU7TyxRO087Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRO1MsTzs7OzJDLFc7USxPOzs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VztnQyxjO1csUTtXO1c7O1c7OztVO2tCOzs7VTs7O1c7VyxNO1csUTtXOzs7VztVOzs7OzttQjs7Ozs7Ozs7OztlOzs7O2dCLE87ZTtlO2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7b0MsZTtnQjsyQjtlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFE7Vzs7O1c7VTs7O29CO3FCOztzQjs7OzBCOzs7b0IsTzttQjs7Ozs7O1c7O1k7O1ksUTtZO1ksUTtZLE87WTs7O2U7OztlOzs7Z0I7Z0I7ZTs7Ozs7OztZO1c7O21COztVLFc7O1U7VyxRO1csTTtXLFE7OztjOzs7Yzs7O2U7Yzs7Ozs7OztXO1c7VTs7OztrQjs7O1U7O1c7OztXO1c7OztVO2tCOzs7Ozs7Ozs7YTs7Ozs7O2MsTzthO2E7YztjO2M7O2tCO2MsUzs7O2lCOzttQjs7Ozs7b0I7b0I7O21DOztvQjttQjs7OzsyQjs7Ozs7Ozs7Ozs7aUIsTTs7Z0I7YTs7OztVO1csUTtXO1csUTtXOzs7Yzs7O2M7OztlO2U7OzhCOztjOzs7Ozs7O3VCOzs7VztXO1U7Ozs7a0I7Ozs7Ozs7TTtPO1EsUTs7O1E7UTs7Ozs7Tzs7Ozs7TztRLE87USxPO08sTzs7Szs7TSxvQjtNLE87Szs7TTtPO1EsUTs7Ozs7O1c7Ozs7Ozs7UyxNOzs7Tzs7Ozs7USxNOzs7Szs7TSwwQjtNLE87Szs7O007Ozs7OztpQjs7Ozs7O007Ozs7O08sVztPO007Ozs7O0s7TSxVOztNO0ssTztJO0ksTzs7O0k7SyxPO0ssUztJO0c7O0ksc0M7O0k7SyxlO0ssUztLOzs7O0k7O0c7SSxnQjtJO0k7OztJLDhCLE87d0I7O0c7O0ksSSxXLDhDOzs7NEIsTzs7O0c7O0k7STs7Ozs7Ozs7Ozs7RztvQyxxQzs7STtJOztJOztNOzs7Tzs7Ozs7Ozs7Ozs7OztVOztXLFM7VyxNOzthOzs7OztVOzs7O1U7O1c7Z0MsYztXLFc7VTtVO1csTzs7Ozs7VTtVO1csTzs7Ozs7Ozs7WTtZO2E7O2lCOzs7Ozs7Ozs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFc7VyxPOzs7OztnQixTOztnQjt5Qjs7OztlOzs7OztVLG1CLE87O1U7VyxNO1csTTs7O2MsWTtjOzs7ZTtjOzs7OztXOzs7O1U7O1c7OztVOzs7OztjOzs7VTs7VyxRO1c7VyxROzs7YyxZO2M7OztlO2M7Ozs7O1c7Ozs7O2tCOztNO0s7SztZO00sTTs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0s7SyxPOztJLE87Rzs7SSxZOztJO0c7O0k7Z0I7OztNLE07aUM7O0k7Ozs7Ozs7O2U7O0c7O0k7Ozs7UTs7STs7OztHOztJO0ssVTtLLDhCO0ssWTtJOztLOztNOzs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07SztLOzs7VTs7Ozs7O1M7OztLO0ksVztHOztJO0ssa0IsTTtLLE87O0k7SyxPO0k7STtLLE07SyxNO0ssTTtJLE87O0c7OztJO0ssTTs7O0s7TSxNO00sTTtNLFU7SyxPO0k7STs7Tzs7Tzs7TztlOzs7O0ksWSxPO0k7O0ssVTtJLE87Ozs7SSx1Qjs7STtHO0c7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO0ssYSxXO0k7RztHOztJO0s7Ozs7SyxrQjtLO0ssWTtJOzs7OztZOztHOzs7Szs7SyxTO0s7TSxPO00sSTtLO0k7STtLLE8sVztLLFE7OztLLE87O0ssYzs7SztJO0ksTztHOzs2Qix3QjtJO0ssTTs7OztJO0c7RyxhLHVDLFM7OEIsTywrQjs7STtJOzthLGMsTzs7Ozs7dUIsVzt1QjtzQjtZOztHO3NCLHdCOztJLEk7eUIsUztJO0k7OztjO2E7Ozs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87O0ssVztLLFc7STs7STs7O2MsVztjLFc7YTs7Ozs7OztHOzs7O0ksbUMsUzs7STt5QixPLGMscUI7O0k7OztjLE8sYzthOzs7Ozs7Rzt3Qix5Qjs7SSxRLHFDLFM7O0kscUIsaUMsa0I7STtHOzs7SztLO0k7SSxPO0c7O0ksdUQ7STtHOztJLHNDO2dCO0k7O0ssUTtLLE87SyxPO0ssUztLO0s7SSxXOzs7STs7Tzs7Ozs7O1E7OztRO087O087OztROzs7Tzs7TywwQjtPLE87Ozs7STtLO0s7STtHOztJLFk7SSxvQjtJLGlCO0k7Rzs7SSxzQztnQjtJOztLLFU7O0s7O0s7O1Esb0I7Ozs7d0IsTTs7Ozs7Uzs4QixNOztTLEksa0I7Ozs7O1csVztXOztVLE07O1M7VTs7VSxVO3VCLE07Uzs7VSwwQixzQjtVO1U7OzthLDBDO2E7O1k7VTs7OztnQjs7O2lCOzs7Z0I7Ozs7Ozs7O2U7Ozs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTs7OztpQyw2QjtTOzs7UTs7Ozs7O1M7Ozs4QixxQztROztROzs7OztTOzhCLHFDO1E7O1E7OztTOzs7UyxxQiw2QjtROzs7Ozs7Ozs7Ozs7eUI7O1ksd0IsZ0M7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTthOzs7Z0I7ZTtZOzs7Uzs7OztVO1Usc0I7VSxVO1UsNEIsMEI7VSwwQixZOzs7YTs7O2UsTTs7OztlO2U7Ozt1Qjs7YztlOzs7O1k7NEIsd0I7VSxvQjtTOztXO1k7YztZOzs7Ozs7Ozs7OzRCOzs7O1k7O1k7Ozs7O2E7Ozs7O2dCOzs7O2EsTTtZOzs7Ozs7Z0I7Ozs7NEI7NEI7MkI7O2U7Ozs7O3dDOzthO1k7OztzQixlOzt1QjtxQzs7d0I7Ozs7Ozs7Ozt3QixPO3VCOztzQjs7cUI7Ozs7Ozs7WTs7Ozs4Qiw2QzthOzs7OztZOzs7dUIsaUIsaUI7dUI7Ozs7MkI7dUIsTTs7O2dDOzs7c0I7Ozs7Ozs7UTtROztROzs7O1MsVTs7O1MsVTs7O1M7OztZOzs7OzthLFk7YSxZO2E7WTtXO1M7O1E7O1E7Ozs7O1MsVTs7O1M7OztZOzs7YSxRO1k7VztTO1E7O1EsMEI7UTs7UTs7OztTOztZO1k7VztTO1E7O1E7Ozs7Uzs0Qiw0QjtROztROzs7O1M7Uzs7WTtZO1c7UztROztROzs7UztTLG1CLHNCO1E7O1E7OztTLG9CLHNCO1E7O1EsNEIsb0Isb0I7UTtnQiw0Qjs7STs7SyxrQjtLLFk7STs7SyxrQjtLLFU7ZSxxQyxTOztLLDRCLGM7STs7O0ssVTtLOztJOzs7Ozs7SztLO087SztLLFM7SyxRO0s7OztLOztLO087Ozs7Ozs7O0ssUTtLO0k7OztJLGtCO0ksTztHO3VCLDRCLHdCOztJLHVCOzs7Szs7TTs7UyxPOztRO007O1MsVTtTLE87UTt3QixZO00sTSxXO00sTTsyQixlO00sTSxXO00sUyxXO0s7YTs7O0k7SyxPOztJO0k7SyxVO0ssTztJO29CLFk7STtLLE0sVztLLE07SyxXLFc7STtZOztHO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOzs7TyxHO1EsTTtPOztPOzs7Ozs7O1Esc0I7USxPO087O08sVztPLEc7USxNO087O087Ozs7OztRO087O087Ozs7O1E7Tzs7Tzs7O1E7OztXO1c7VTtPLFc7Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7OztPOzs7USxzQjtPLGM7O087Ozs7O1Esc0I7USxPOzs7O1c7VztVO1EsTzs7Ozs7VztXO1U7USxPO1E7Tzs7Tzs7Ozs7USxzQjtRLE87OztXO1c7VTtRLE87Tzs7Tzs7O1Esc0I7TyxlOztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7USxzQjtRLE87UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7OztLO0s7STtJLE87Rzs7STtJOzs7UTs7UTs7UTs7USxzQjs7OztVLFc7VTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7WTtZO1c7UTs7Ozs7Ozs7Ozs7OzthOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7UTtrRDs7O1E7a0Q7O1E7O1Msc0I7USxPOzs7UTs7OztZO1k7VztRO1EsMEI7USxPOzs7USxPOzs7UTs7Ozs7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztxQixnQyxrQjtJLE87Rzs7SSxvQjtJLE87Rzs7OztLOzs7Ozs7Ozs7Ozs7VzthO2U7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7O00sbUIsTztNLFMsTTtNO0s7SztLO00sTztNLE87TSxXO0s7TSxJLFcscUM7Ozs4Qjs7O0s7MEIsa0IseUI7SztNLE87TTt5QjtLO00sTztNLGU7TSxVOzs7TSxPO0s7SztNLFE7TSxTO3VCLGtCO0s7TSxPO00sWTtLOztJO0s7TTs7OztNOzs7O1U7O0s7Ozs7O007OztlOzs7O0c7OEI7RztJOzs7STtLLFE7SyxZO0ssVztLO0k7Szs7SyxXO0ssTztJOztLOzt5QixPOzs7O1M7OztVLFU7Ozs7O1U7Vzs7OztXOzs7Ozs7UyxPOzs7OztRO1EsTzs7OztTOzs7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7VTtVLGM7Ozs7WTs7YSxLOztZO1k7Ozs7VTs7Ozs7O0ssTztJOzJCLDRCOztLOztLOzs7STtJOztLOzs7Ozs7O1UsRztXO1ksSztZLE87WTs7WSxNOzs7MkI7Ozs7Ozs7UyxHOzs7Z0I7O0ssVzs7TSxrQztNO0s7SyxPO0k7SSxhO0c7O0k7OzsrQjs7Ozs7SSxJLG9CLFE7STtLLEksVyx5Qzs7OzZCOzs7STs7SyxZOzs7O2E7OztLO0ssTztJOzs7Ozs7O1M7Uzs7VSxzQjtTLE87Ozs7Ozs7Ozs7Ozs0QixrQiwyQjtTOzs7O1M7O1Usc0I7UyxPOzs7OztVOztXLFU7VyxVOztXO1c7Ozs7VyxNO1U7O1M7Ozs7NEIsa0IsMkI7Uzs7Ozs0QixrQiwyQjtTLE87OztTOzs7NEIsa0IsMkI7UztpQjs7O1U7Ozs7Ozs7O1M7UywwQjtTLE87Ozs7Ozs7VztXO1k7WSxPO1c7Ozs7Uzs7Ozs7OztTOzs7OztTO1M7Ozs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7O1M7Ozs7VTtVLHNCO1MsTzs7Ozs7aUI7O007Ozs7STtJLFk7Ozs7OztTOzs7Ozs7O1Usc0I7VSxPO1M7OztTOzs7Ozs7OztVO1MsTzs7O1M7Ozs7OztVO1M7O1M7Ozs7O1U7Uzs7Uzs7O1U7OzthO2E7WTtTLFc7O1M7Ozs7VSxzQjtVLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7OztTOztTOzs7O1U7Ozs7YTthO1k7VSxhOzs7O2E7YTtZO1UsYTs7VSxzQjtVLFc7Uzs7Ozs7Uzs7Ozs7VSxzQjtVLE87OzthO2E7WTtVLE87Uzs7OztVOzJCOzs7OztrQzs7O1M7O1Usc0I7VSxPO1M7VTtXLFU7Ozs7O2M7YyxXO2E7VyxLOzs7O2M7YyxPO2E7VyxNO1csTzs7O2M7YzthO1csTztVOzs7O2lDOzs7Ozs7OztXO1c7Ozs7O1M7OztVOzs7Uzs7O1ksTTtXO1c7Ozs7VTtVOzs7OztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7O1M7O1M7Ozs7OztVLHNCO1UsTztVO1M7OztTOzs7UztpQjs7O0k7Szs7O0ssTTtJO0ssSSxXLDBDOzs7NkI7OztJOztLO0s7SyxPO0k7O0s7TSxVOzs7Ozs7OztNO08sUTs7Ozs7Ozs4Qjs7OztJOzs7Ozs7NkI7O1M7O1M7Ozs7Ozs7OztjO2Msb0I7YyxPO2E7Ozs7Uzs7VTtXO3lCOzs7Ozs7O1M7Ozs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7Ozs7O2M7ZTtlLHNCOzs7Uzs7OztTOztVLHNCO1MsTzs7Ozs7VTs7VyxVO1csVTs7VztXOzs7O1csTTtVOztTOzs7aUMsa0Isd0I7Uzs7O2lDLGtCLHdCO1MsTzs7O1M7Ozs7YztlO2Usc0I7OztTO2lCOzs2Qjs7OztTOztVLHNCO1MsTzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7UztTOzs7Ozs7Uzs7OztVO1Usc0I7UyxPOzs7Ozs7Ozs7Ozs7STtJLGM7STtLOztNLGUsNkI7O0s7STtJO0s7O00sZSw2Qjs7SztJOzs7Ozs7O1MsSSxVLDJDOzs7Z0M7Ozs7Ozs7Ozs7O2M7Ozs7O2UsTztjO2E7Ozs7Uzs7VTtXO3VCO1c7O1k7Ozs7O1M7O1M7Ozs7Ozs7O1U7Ozs7Ozs7Ozs7O1k7YSxNO2EsTTtnQjthLFU7YSxPOzs7Ozs7UyxPOzs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7OzthO2E7WTtTLFc7OztTLGM7O1M7Ozs7VTs7OzthO2E7WTtVLGE7Ozs7YTthO1k7VSxhO1UsVztTOzs7OztTOzs7OztVLE07OzthO2E7WTtVLE07Uzs7O1MsZTs7Uzs7Ozs7O1U7Uzs7Uzs7OztVO1M7O1M7Ozs7VTtVO1M7Ozs7VSxtQjtVOzs7UztVO1U7Ozs7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzt5Qzs7Uzs7Ozs7O1UsTTtVO1M7O3dDOzs7Uyx5Qjs7O2lCOzs7STtLO0ssUTtLO0ssYTtJLFE7STtHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7STs7O0ksdUI7OztHOztJLFU7Ozs7O0c7O0ksVTs7SztLO0ssTztJO0k7SSxVO0k7STs7O0c7Rzs7OztJLGtCO0k7STtLLGU7SztPLDJCO0ksRztLLE07STs7STs7OztNO08sTztPLE07O007Ozs7OztHO3VCLG9EOztJOztlO21COzs7O2lCLE07O0ssRztNO007Ozs7Rzs7STtJLE87Rzs7STtJLE87Rzs7STsrQiwyQztJO0ssTTtlO2E7Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0ksbUI7O0ksTztHO0csSSxzQjs7SSxpQjs7Rzs7STtvQixXLHFDO3FCOztHOztJLEc7SyxPO0k7OztPO1M7Szs7UTs7SyxPOztJO0c7O0k7SyxXO0s7TTtPLGE7TztTO1k7Ozs7Ozs7OztLO2dCOzs7O08sSSxZOzs7O1E7O1MsTTtTLE07ZTs7Ozs7O08sWTs7OztROztTLE07UyxNO1MsTTtlOzs7Ozs7Ozs7OztJLE87Rzs7STs7OztHOztJOztpQjs7OztNLEcsdUM7TSxJOzs7TTs7O08sTztNOzttQztPOztNLEk7OztHO0c7O0k7O0ksaUI7O0ksTTtHOztJO0k7SztNLE07TSxLO0s7OztxQjs7Ozs7O007Ozs7Ozs7O0c7O0ksSSxROzs7MkI7OztJLE87Rzs7STs7SztxQjs7Rzs7STtLO0ssTTtLLE07SztxQjtJO0ssTTtLLE07c0IsZ0I7cUI7Ozs7Rzs7STs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STsyQixxQzs7Szs0QjtLO0k7O0s7O0s7STtJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7O0k7Rzs7SSxJLHlEOzs7O00sTTs2Qjs7O0c7O0k7RztHOztJO0k7Rzs7SSxJLHlEOzs7Ozs7Ozs7UTs7TSxZO2tCLE07O29CO00sdUI7TTtNOztLOztHOztJO21COztJO0c7O0k7SyxPOzs7SztLO0k7STtJO0c7O0k7SztLLEk7O0s7Ozs7TTtNO007TTs7Ozs7SSxPO0c7O0k7SSxPO0c7O0ksSSwwRDs7OztNO007TTs7Ozs7STtJO0ksb0M7Ozs7TTtNO007Ozs7O0k7STtJLG9DOzs7O007TTtNOzs7OztJLE87Rzs7STs7SyxJLEksTzs7OztlOztLO007TTs7Ozs7Ozs7STtJOztLLFM7O00sSSxRLGU7OzsrQjs7O0s7SztNO00sMkIsTywyQjtLLE87STs7OztLLE87SSxlOztLOztROztjO00sTTtLO0k7STtLO0ssMkIsTywrQjtJLE87Rzs7STtJO0k7O0c7OztLOzs7UTs7O1M7O1E7OztROzs7UTs7O1E7O0k7SSxPO0c7O0k7Ozs7OzRCOzs0Qjs7NEI7OzRCLE87OzhCOzs4QjtzQzs7O087OztRO1UsNEI7UTs7O1c7Vzs7O1U7TztPOztPOztRO1UsK0I7OztXLE8sK0I7VTtPO087bUM7O0c7O0ksSSxPLHVDOztLLHFDO0s7SztJO0k7O0k7Rzs7STtHO21DLHVCOztJO087SztJLEksTyx5Qjs7SyxxQztLO0s7STtJOzs7Rzs7STtLO007TyxXO08sc0IsTzs7d0IsTyw0QztPOzt5QixPLDRDOzs7Ozs7OztNLFM7TTtNOzZCLE8sMkI7TyxNO2tCOzt1QjtLLFk7O0s7OztNLFE7TTtROzs7SyxJLEksTTs7Ozs7O0s7SyxJLEksTTs7Ozs7O0s7Szs7Ozs7O0ssTzs7RztvQyw4Qjs7STtJLHdCO0c7O0k7SSxpQjtJO0c7O0k7O0s7d0I7O0s7STtJLE87Rzs7STs7Szt3Qjs7SztJO0ksTztHOztJOztLO3dCO0s7O00sVTs7O00sTTs2QjtLO0k7SSxPO0c7aUMsdUI7OEIsK0I7O0k7Szs7O0c7O0ksSSwyQjs7SztNLE07TTs7d0I7OztJO0k7STtHOztJO0c7O0k7Rzs7O0k7O3lCLE87OztPLE87OztPLE87OztPLE87Ozs7SSx1Qjs7SSxXO0c7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxVO0ssTTtLLE87YSw0QjtJO0ksTTtHOztJO2dCOztJLGtCO0ksTztHOztJLHdCO0c7aUMsdUM7O0ksSSxLLDRCO0k7STtJO0ksTztHOztJLFM7O0s7TTtNLFMsMkI7SyxLO00sTTtLLFU7O0ssTztJO0k7SztLOzs7Uzs7UTtJLE87Rzs7SSxTO0k7SSxVO0k7SztNO00sUztNLE07TSxNO00sTztpQjtLOztNO00sTTs7WTtNLE07SyxTO0s7TTtPLE07Ozs7Ozs7O0s7SyxLLDZDO0s7SyxNOztJLFc7STtHOztJO0k7ZTtJOzs7a0IsVztLLFEsVztJO0k7Rzs7STtJO2U7STs7O2tCLFc7SyxRLFc7STtJO0c7O0k7OztHO0c7OztJLFM7STtLO2U7SyxHOzs7TSxVO00sRyxrQjtPLE07Ozs7Ozs7Ozs7Vzs7OztJO0c7O0ksYywrQjtHOztJO0s7Szs7O0k7O00sVTs7O08sVTtPOztNLFU7K0I7Ozs7TTtNLGE7TTs7OzZCLE8sOEI7ZTs7Ozs7SztLLE07O0k7d0Isb0Q7SSxPO0c7O0k7Ozs7MkI7O0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7O0k7STs7O007SztLLE8sVztJO0k7SztLLDBCLHNDO0ksTztHOztJO0ksa0I7STtHOztJO0ksa0I7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7OztJLE87Rzs7STtJO0k7STtJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJO0ksTTtHOztJO0ksTTtHOztJLFk7O0k7Rzs7SSxZOztJO0c7RztJO0k7STtJO0k7STtJO0k7STs7STtLLEc7TSxNO2E7TSxNO0ssZ0Q7Ozs7TyxZOzs7O1M7Ozs7Ozs7Ozs7O1E7Ozs7O08sTTs7O0s7Szs7Ozs0Qjs7O0c7O0k7ZTtJLFc7SSxPO0c7O0ksZTtJO0s7TSxNO00sTzs7Ozs7Ozs7SSxhO0k7STtHO0c7O0ksTzs7Rzs7STs7O08sTTs7Ozs7Szt5QixPLDhCO00sTztLOzs7OztLLDBCO0ssTzs7Rzs7SSxnQjs7SywwQjtLLE87O0c7O0kscUM7eUM7SSxvQjtJO0k7Rzs7STtLLFM7SyxPO0ssUTtrQyxPO0ksVztJLG9CO0k7STtHO0c7O0k7SyxPO0ssTztJLE8sVztHOzs7SywrQixTO0k7O0ssK0IsYTtJOzs7Ozs7Ozs7O1Esb0I7OztTLDBCO1MsTzs7Ozs7MEI7Ozs7VTs7VTs7VTs7VTs7Uzs7MEI7Ozs7O1U7O1M7O1E7Ozs7OztTOzs7OzthLFU7YSxvQjthO2E7WTtTOzs7O1M7Ozs7Uzs7VTs7O1UsTzs7Ozs7O1E7O3lCOztRO1MseUIsUztTO1M7b0I7USxxQjs7OztRLDBCO1EsTzs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOzs7UTs7O007TyxRO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOztTOztTLGM7dUI7Uzs7VSxPO1Usc0I7UyxPOzs7UyxPOzs7Ozs7OztTOztTOzs7O1MsYzs7Ozs7O1M7O1Usc0I7UyxPOzs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7Ozs7O1M7Ozs7Ozs7Ozs7O1M7Ozs7OztVLGM7Ozs7OztVOztXLHNCO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs7USxPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7O1E7Ozs7SSxlO2U7O0ksb0I7SSxPO0c7O0k7Ozs7STs7Tzs7SSxHO0ssSSxTOztNOztPLE87TyxXO08sTztNLFc7TSxNOztLO00sTTs7OztLO007TztROztXOztXO1U7USxPOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7d0IscUQ7aUI7O0s7O007OztTLGM7Uzs7VSxhO1UsWTtTLE87O2lCOztLO0s7STtJO0k7SyxRO0ssRzs7O087OztRLFE7Ozs7Ozs7OztxQjs7O1M7VSxPO2lCOzs7OztPOzs7Ozs7VSxJLGM7Ozs7WSxNOzs7cUI7Ozs7VTtXLEk7O1c7WTs7Ozs7O1U7VyxNOzs7Ozs7O087USxNOztPO1EsTztRLE87Ozs7Ozs7O087Ozs7Ozs7Ozs7O1U7VTtTO007Ozs7Ozs7SSxXOztJLFc7OztHOztJO0k7SyxNO0ssTTtJLE87RztHOztJO0s7SyxNO0ssTTtJLE87RztHOztJOztHOztJOztLOztPO1k7TSxHO00sRzs7Ozs7O0k7RzsyQiw0QjsyQiw0Qjs7STs7O0s7OzRCLDRCO00sTTtZO007Ozs7Ozs7O1MsbUI7O1MsTztRO1k7OztJLFE7SSxVO0k7Ozs7Ozs7O007TTtNO007O08sVTs7O0s7Szs7OEI7OztRO1E7UTs7O1M7O1UsVTs7Ozs7Ozs7O1E7Ozs7Ozs7aUI7UyxNOzs7OztROztVO2U7O1c7Uzs7VztnQjtVOzs7ZTs7OztVLGM7Ozs7Vzs7VTs7YTtVLE07Ozs7Ozs7OztROztTLE07Ozs7UTs7UyxNOzs7OztJOzs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7O0k7STtLO1k7Szs7Ozs7TTs7TyxZO08sTSxXO08sTTtPLFk7TTtNLE07OztLOztNLE0sVztNLFksVztNLFc7SztLLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLCtDOztJLDhCO0c7O0k7Rzs7STtHOztJO0c7b0Isd0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzt5QixTO0ksaUI7STs7OztHOztJO0c7b0Isd0Q7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7Rzs7RztJOztHO0c7STs7RztHO0k7O0c7RztJOztHO0c7STs7O0k7OztZO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7Ozs7MkIsUzs7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7MkIsNkM7O0k7Rzs7STs7O1k7Rzs7STtHOztJO0c7O0k7Rzs7SSxNOztHO0c7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJLDBCO0c7O0k7OztZO0c7O0k7Rzs7SSxvQztHOztJOzs7WTtHOztJO0c7O0k7Rzs7STs7O1k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG1EOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzt5QixvRDs7STtHO3VCLGtEO3VCLGtEOztJO0c7dUIsa0Q7d0IsbUQ7eUIsb0Q7eUIsb0Q7O0k7Rzs7STtHO3lCLG9EOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7a0IsMEQ7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOztLLHNEOztNOzs7aUMsaUM7O21DO007TztrQjs7TTtrQyxXLGM7TTs7O1MsdUIsa0IsaUI7OztTOztrQjtrQix1QjtpQjs7O1MsMkIsWSxpQjs7O1MsMkIsWSxpQjs7O1M7NkIsb0IsMEI7OztTLHVCLFksMEI7OztTOztrQjtrQix1QjtpQjs7O1M7O2tCO2tCLHVCO2lCOzs7Uzs7a0I7a0IsdUI7aUI7OztTOztrQjtrQix1QjtpQjs7O3FCO1M7OztVO1Usc0I7VSxPO1M7OztTOzs2QixvQiwwQjs7O1M7O2tCOzJEO2tCO2lCOzs7Uzs7a0I7a0I7a0IsTztpQjtvQzs7SztLO0k7SSxPO0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csNkI7RztHLDRCO0c7Ryw0QjtHO0csMkI7RztHLGlDO0c7RyxrQztHO0csZ0M7RztHLHdCO0c7Ryx3QjtHO0csd0I7RztHLHFCO29CLGtEOztHLHlCO0c7Ryx3QjtHO0csMkI7RztHLDhCO0c7RywrQjtHO0csNkI7O0k7SyxPO0ssTztJLE8sVztHOzttQixvRDtHO0ksUTtJO0csdUI7RztHLDBCO0c7RywwQjtHO0csdUI7RztHLDBCO0c7RyxzQjtHO0csMkI7RztHLDhCO0c7RywwQjtHO0csNkI7RztJLGM7STtHLDRCO21CLGtEOztHLHNCOztJO0ssTztLLE87SSxPLFc7Rzs7RyxpQjtrQyw4QjtvQyw4Qjs7Ryx1QjtHO0csc0I7RztHLHdCO0c7RyxvQjtHO0csK0I7RztHLHdCO0c7RyxvQjtHO0csd0I7RztHLG1DO2dDLHNDOztHLHNDOztJO0k7Rzs7Ryx5QjtHO0csdUI7RztHLHVCO3lCLDZCOztHLHVCO0c7RywyQjtHO0csMkI7RztHLHVCO0c7RywyQjtHO0csb0I7RztHLHNCO0c7RyxzQjtHO0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO0c7Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLGlCO2tCLGtDOztJLGU7SSxPO0c7cUIsa0Q7d0Isa0M7OzRCLHVDOzRCLGlDOztHLDhCO3dCLG1DO3dCLGtDOztHLGlCO0c7RyxpQjtHLEk7MkIsNEI7O0cseUI7RztHLHlCO0c7Ryx1QjtrQyw2Qjs7Ryw0QjtHO0csNEI7RztHLDBCO2lCLGtDOztHLHNCO0c7RyxvQjtzQiw2QjtrQixrQzsrQiw4Qjs7SSxZO2dCO0ksdUI7Ozs7ZTs7Ozs7Rzs7SSxZO2dCOztJLE87Rzs7RyxzQjtHO0cseUI7MkIsTywwQjt3QixPLDBCO3lCLE8sMEI7O0csNEI7RztHLCtCOzBCLFc7MkIsVztvQixrQzs7RywwQjtHO0csc0I7RztHLHdCO0c7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOztHLDBCOztJLE87RzswQixtRDtxQixPLGlEO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOztHLHdCOztJLE87Rzs7Ryx5QjtHOzJCO0csSTtHLHlCO0c7RyxzQjtHO0csMEI7RztHLHdCOztJLGU7SSxPO0c7O0ksVzs7O0c7O0k7Ozs7Rzs7Ryw4Qjs7STs7OztHOztJOzs7Rzs7STs7O0c7eUIsNkI7MkIsNkI7dUIsTyxxQzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7O0k7STs7SyxNO0ssTTtLLFM7SyxNO0ssVztLLE07SyxNOztLLFM7STtJLE87Rzs7STtJO0k7O0ssTTtLLE07SSxPO0c7OztJO0ssWSxrQjs7OztnQjtLOzs7OzJCOzs7OztJO0ksVTtJO0s7TSxNO1k7OztJO0k7STtHOztJLEcsbUM7SSxlO0k7STtHOztJO0ssVTtLOzs7YztjLE87YTtJOzs7Szs7TSxNLFc7SyxlO0s7TSxNO1c7Ozs7OztLO00sTTtvQjs7OztLO00sMEI7TTs7O3dCLE8sd0I7SSxPO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QixnQztHOytCLGdDOztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87MkIsTyxxQztNLFE7TSxRO00sTzsyQixPLG1DO00sUzs7SztrQixNOzs7Ozs7Ozs7OztROztTO1MsRztTLEc7UyxJOzs7Ozs7Ozs7O0s7O007UTs7VztNLFc7TSxXO00sVztNOzs7UyxPLHFCO1E7TSxhO007OztTLE8scUI7UTtNLFk7Szs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O087UTs7d0I7TTs7Ozs7TyxPO2tCOztLOzs7OzRCOzs7OztJO0ssRzs7OzswQix5QjtjOzs7OztJLEs7SyxPOztJOztLLFU7TSxJOztNLEk7O0k7SztPOzs7STs7TSxPO0ssVTtNO007TSxJOzs7TSwwQjtNLEk7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0ssaUI7SztNO087Uzs7TyxPOzs7O1U7VyxTO1csTztVO1UsVTtVLE87UztPLGE7TyxJO007TTs7OztNO00sTTs7Szs7OztLOztNO007OztLLFM7SztNOztNLGE7TTtNO087O1E7UyxZOzs7Ozs7Ozs7Ozs7Ozs7OzthO2MsYzs7Yzs7Ozs7Ozs7Ozs7Ozs7YTs7YyxPOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7TTtNOzs7Szs7Rzs7Ozs7Ozs7SztLOzs7O1M7O1UsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiw0Qjs7UTtLO0ssTzs7O0s7TSxhOztNLDRCOztRO00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXOzs7SyxPLHFCO0k7SSxHOzs7OztLOztNOzs7O0ksMEI7STtLO087Ozs7SyxXO0s7Tzs7OztLLFc7SztPOzs7TSxXO007ZTs7Ozs7Ozs7O0k7SyxjLGUsd0IsUztLO00sTztNLE87SyxPO0k7Ozs7Ozs7OztHOztJOzs7Ozs7Rzs7STs7STs7SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOzs7Szs7O00sSTtLLEc7TTtPLE87Tyw0QjtNLE87O0ssVztLLE87STtJLE87Rzs7RztJOzs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0s7TSxPO00sTztNLFU7SyxHO007YztNOztLLFM7O007TyxPO08sNEI7OztVLFc7VSxPO1M7TTs7SztNLE87TSxPOztNOzs7OztLOzs7O0s7TTs7O1M7OztLO007OztTOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7STtLOzJCOztJOztJO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qjs7Ozs7OzswQixrQzs7Ozs7OzswQiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQzs7Ozs7Ozs2Qjs7Ozs7Ozs2Qjs7O3dCLGM7Ozs7OzZCOzs7eUIsbUI7Ozs7OzZCOzs7eUIsbUI7Ozs7Ozs7OEI7Ozs7Ozs7Ozs7OEI7OztLOzs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt5QixpQjtNLHNCO0s7SyxlO0s7Szs7TTs7TyxJO087OztVOzs7OztXLE87VyxPO1csVTtXO1c7VTs7VTtTO08sVTs7O1U7Ozs7O1U7Vzs7VTs7VztZLEc7YTtZLFc7WTs7VyxHO1k7VyxXO1c7VTtVOzs7VyxXO1csUzs7Ozs7VTtTO007TTs7Ozs7Ozs7OztXO1ksUTs7O1k7OztZO2EsTzthOztXO1c7Ozs7O3FCO3FCOztVO087OztPO2M7TyxXO087UTs7cUMsd0M7TztPOzs7O1c7VyxPO1U7USxjOzs7VztXOzs7WTs7O2E7WSxPOztXO1c7VztXLE87VTtPO087O007OztNLFc7TTs7SztLOzs7OytDO0s7Szs7Rzs7STtJLE87Rzs7STtNOztLO0s7O0k7OztlO0s7SyxjO0ssTztLO0k7STtJLE87Rzs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQixPLHNDO21CLE8seUM7bUIsTyxzQztxQixPLHdDOzs7STtJLGtCO0k7STtLLE07SztPOztLLE87Ozs7Ozs7Ozs7STtJLE8sVztHOztJO0ssTTtLO08sVztJLE87YTtHOzs7SztNLE0sVztNO1E7VTtNOzs7OztVLFU7VSxPO21COzs7O1M7TTs7SztLO0s7SztJO0ksTyxXO0c7O0k7SyxTO0ssTTtLLEs7SSxPOztHOzs7SztLLEcsNkI7SyxJOztJO0ksTyxXO0c7O0k7SyxNO0s7TyxXO0ksTzthO0c7O0k7SyxNO0s7TztTLFc7SztPLFc7O0s7SyxPO0k7SSxPLFc7Rzs7OztNOztPLFU7TyxPO007TSxPO0s7O007TSxLO087TyxLLDZCOztNLE87SztLLE87STtJLE8sVztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7R2dHampCTTs7OztJQUFBO0lBc0hNO0lBTVo0NEg7SUFFQUM7SUE1Qk8sa0JBMEJQRCxTQUVBQztJQTRCSjtHQUVRO0dBRWUsU0FBbkJDLFcsVTtHQVBBO0lBQUE7O09BT0FBOzs7O0lBUzBCO0lBb0NYO0lBbEJBO0lBaUNOOzs7OztFOzs7Ozs7Ozs7Ozs7R0V4TUQ7Ozs7O0lBQUE7WUFtQ1JDLElBQUtDLEdBQVNDLEdBQUksT0FBSkEsS0FBVEQsSUFBQUEsSUFBU0MsRUFBMkI7WUFFekNDLElBQUtGLEdBQVNDLEdBQUksT0FBYkQsS0FBU0MsSUFBVEQsSUFBU0MsRUFBMkI7R0FuQk47SUFBQSxxQ0FpQm5DRixLQUVBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU1BQztJQUhVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUdWQTs7Ozs7O1lBTUFDLFFBQU9KLEdBQVdDLEdBQVksT0FBdkJELE1BQVdDLFVBQTBCO0dBSHBDO0lBQUE7Ozs7Ozs7T0FHUkc7SUFkQUM7SUFFQUM7OzhEQUZBRCxPQUVBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NhVzs7Ozs7O0lBQVRDO0lBekNVLGFBeUNWQTtJQWtDRkM7SUFJQUM7Ozs7WUFxQ0VDLGM7WUFNQUMsSUFBSVgsR0FBRVksR0FBSSxPQUFOWixLQS9DTlEsU0FBQUEsU0ErQ21ELFdBQTNDSSxHQUFGWixHQUFrRDtZQUV0RGEsS0FBS2IsR0FBRVksR0FBSSxPQUFOWixLQWpEUFEsU0FBQUEsU0FpRDZDLFdBQXBDSSxHQUFGWixHQUF5QztZQUU5Q2MsS0FBS2QsR0FBSSxZQUFKQSxLQW5EUFEsZ0JBbUQ4QjtZQUU1Qk8sS0FBS2YsR0FBRVk7SUFBVyxlQUFiWixLQXJEUFE7aUJBcUR5QyxXQUFoQ0ksR0FBRlo7R0FBcUM7WUFFMUNnQixPQUFLaEIsR0FBRVksR0FBRUs7SUFBSSxPQUFSakIsS0F2RFBRLFNBdURxQyxXQUE1QkksUUFBc0MsV0FBcENLLEdBQUpqQjtHQUEyQztZQUVoRGtCLElBQUlsQixHQUFFWSxHQUFJLE9BQU5aLEtBekROUSxTQXlEa0MsV0FBMUJJLFFBQUZaLEVBQXVDO1lBRTNDbUIsT0FBT25CLEdBQ1QsS0FEU0EsR0F2RGUsT0FKeEJRLFlBOERPWSxNQUhFcEIsTUFHRyxPQUFMb0IsSUFBYTtZQUVsQkMsVUFBVXJCO0lBQUksYUFBNkJBLEdBQUssV0FBTEEsR0FBVztJQUFoQixPQVR0Q2dCLE9BU1VoQixtQkFBc0IsU0FBSTtHQUFtQjtHQTVCbEI7OztPQXBDdkNRO09BeUNFRTtPQU1BQztPQUVBRTtPQUVBQztPQUVBQztPQUVBQztPQUVBRTtPQUVBQztPQUtBRTtZQVFBQyxjO1lBTUFDLE1BQUl2QixHQUFFWTtJQUFJLE9BQU5aLE1BMUVOUyxjQUFBQSxjQTBFb0UsV0FBNURHLEdBQUZaO0dBQW1FO1lBRXZFd0IsT0FBS3hCLEdBQUVZO0lBQUksT0FBTlosTUE1RVBTLGNBQUFBLGNBNEU4RCxXQUFyREcsR0FBRlo7R0FBMEQ7WUFFL0R5QixPQUFLekIsR0FBSSxZQUFKQSxNQTlFUFMscUJBOEUwQztZQUV4Q2lCLE9BQUsxQixHQUFFWTtJQUFXLGVBQWJaLE1BaEZQUztpQkFnRnFELFdBQTVDRyxHQUFGWjtHQUFpRDtZQUV0RDJCLE9BQUszQixHQUFFWSxHQUFFSztJQUFJLE9BQVJqQixNQWxGUFMsY0FrRmlELFdBQXhDRyxRQUFrRCxXQUFoREssR0FBSmpCO0dBQXVEO1lBRTVENEIsTUFBSTVCLEdBQUVZLEdBQUksT0FBTlosTUFwRk5TLGNBb0Y4QyxXQUF0Q0csUUFBRlosRUFBbUQ7WUFFdkQ2QixTQUFPN0I7SUFDVCxLQURTQSxHQXRGZSxPQUF4QlM7UUF5Rk9XLE1BSEVwQjtJQUdHLE9BQUxvQjtHQUFhO1lBRWxCVSxZQUFVOUI7SUFBSSxhQUE2QkEsR0FBSyxXQUFMQSxHQUFXO0lBQWhCLE9BVHRDMkIsT0FTVTNCLG1CQUFzQixTQUFJO0dBQW1CO0dBNUJaOzs7T0EvRDdDUztPQW9FRWE7T0FNQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FLQUM7WUFLRkMsT0FBTy9CLEdBQUVZLEdBQUVLO3dCQUE2QixPQUF6QixXQUFKQSxHQUFKakIsR0FBb0M7SUFBcEIsVUFBQSxXQUFkWSxHQUFGWjtJQUFzQixPQUFBO0dBQWU7WUFFNUNnQyxXQUFXaEMsR0FBRVksR0FBRUs7d0JBQXNDLE9BQWxDLFdBQUpBLEdBQUpqQixHQUE2QztJQUE3QixVQUFBLG1CQUFoQkEsR0FBRVk7SUFBNkIsT0FBQTtHQUFlO0dBb0NqRDtJQUFScUI7SUFFQUM7SUF3SEFDO0lBRUFDO0lBRUFDO0lBRUFDOztJQVNGQzs7SUFFQUM7O0lBNkVBQztZQUVBQyxZQUFZQyxHQUE2QixPQUZ6Q0Ysd0JBRVlFLEdBQXVEOzs7SUFFbkVDO0lBTUFDO0lBRUFDO1lBTUFDLFVBQVVuQyxHQUFFb0M7SUFBSSxPQUFKQTthQUFxQjt3QkFBb0JoRCxHQUFFaUQsWUFBVSxPQUFBLFdBQXZEckMsR0FBMkNaLEdBQWU7R0FBRTtZQUV0RWtELFdBQVd0QyxHQUFFb0M7SUFBSSxPQUFKQTthQUFxQjt3QkFBb0JoRCxHQUFFaUQsWUFBUyxPQUFBLFdBQXREckMsR0FBNkNxQyxLQUFGakQsR0FBa0I7R0FBRTtZQVUxRW1ELGU7WUFFQUMsa0I7R0ErTWU7O0lBL0ZmQzs7SUFtRkFDOztJQVlBQztJQUFlOztJQThDZkM7OztZQW5DRUMsVUFBUyxPQUFBLGtDQUE2QjtZQUV0Q0MsYUFBWSxPQUFBLHFDQUFnQztZQUU1Q0M7SUFDWSxVQUFBO0lBQUEsT0FBQTtHQUF3QztZQUVwREMsVUFBVUMsR0FBSSxPQUFBLHdCQUFKQSxjQUFvQztZQXdCaERDLGVBQWVELEdBQUksT0FBQSxrQkFBSkEsR0FBeUM7WUFFeERFLGdCQUFnQkYsR0FBSSxPQTFCbEJELFVBMEJjQyxHQUE0Qzt3QkFZNURHO1lBRUFDLFVBQVdDLEdBQ2IscUJBQUEsT0FBQSxjQURhQSxHQUNrRDtZQUU3REMsbUJBQW9CRDtJQUN0QjtJQUFBLE9BQUEsdUJBRHNCQTtHQUNrRDtZQUV0RUUsVUFBV0YsR0FDYixxQkFBQSxPQUFBLGNBRGFBLEdBQ2tEO1lBRTdERyxtQkFBb0JIO0lBQ3RCO0lBQUEsT0FBQSx1QkFEc0JBO0dBQ2tEO1lBRXRFSSxPQUFRSixHQUNWLHFCQUFBLE9BQUEsV0FEVUEsR0FDa0Q7WUFFMURLLFNBQVVMLEdBQ1oscUJBQUEsT0FBQSxhQURZQSxHQUNrRDtZQWtDNURNLE1BQU9DLEdBQ1QscUJBQUEsT0FBUSxVQURDQSxPQUM0RDtZQUVuRUMsU0FBVVI7SUFDWixxQkFBSVMsTUFBSSxhQURJVDtJQUVULE9BTERNLE1BSUVHLE9BQ1ksc0NBRFpBO0dBQ3NDO1lBRXhDQyxXQUFZVjtJQUNkLHFCQUFJUyxNQUFJLGVBRE1UO0lBRVgsT0FURE0sTUFRRUcsT0FDWSx3Q0FEWkE7R0FDd0M7O0lBR2xCLHVCQUVmO1FBRFFkO0lBQUssV0F2R3BCRCxVQXVHZUM7R0FDSDtHQUZoQjtnQkFNUUE7SUFBSixPQUFJQSxhQXpXTmpCOztrQkEwV3dELHdCQURsRGlCO0dBQ3lFO0dBRmpGO0dBQUEsU0FJRWdCLFVBQVdDLE9BQXFCOUU7SUFJZixVQUFBLCtCQUplQTs7O0tBTXpCO09BRkg7Y0FKNEJBO2dCQU9oQixzQkFQZ0JBOzs7ZUFBQUE7O0lBQ2xDLG9CQURhOEU7R0FRSDtZQUVSQyxTQUFPRCxPQUFNOUU7SUFBSSxPQVZqQjZFLFVBVTJCLGdDQUFwQkMsUUFBTTlFO0dBQThCO1lBRTNDZ0YsV0FBV0M7SUFDRixJQUFQQyxPQTNYRnhDLFlBMFhXdUM7V0FDVEM7YUFFRjt3QkFBcUJDLGlCQUEwQixPQWYvQ04sVUFlcUJNLEtBSFZGLElBR1VFLE1BQTREO0dBQUU7O3FCOzs7O09BOUhqRnZCO09BUEFIO09BRUFDO09BRUFDOztPQStCRkg7OztxQjs7cUI7Ozs7T0EvbkJFaEQ7cUI7T0FJQUM7Ozs7T0FzSUF3QjtPQUVBQztPQTBIQUU7T0FGQUQ7T0FNQUc7T0FGQUQ7T0FXRkU7T0FFQUM7T0FBQUE7T0FBQUE7T0ErRUFFO09BRUFFO09BQUFBO09BTUFDO09BRUFDO09BTUFDO09BRUFHO09BVUFDO09BRUFDO09BZ0hBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW1GQUM7T0FZQUM7O09Bd0RBUztPQUVBQztPQUdBRTtPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQW1DQUM7T0FHQUU7T0FJQUU7T0FobUJFN0M7T0FFQUM7T0FzbkJGK0M7T0FFQUM7O09BakdBakI7T0FGQUQ7T0FJQU47Ozs7O0U7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztZQ3hzQkE0QjtJQUNGLElBQUlDLDBCQUNhQyxTQUFJYjtJQUNuQjtRQURtQkEsS0FEakJZLFFBT0csT0FBQSwyQkFOVUM7S0FHTztNQUFBLE1BQUEsY0FISGI7TUFHWCxRQUFBOztNQUVNO09BQUxaO09BTFUwQixNQUFBZDtPQUFKZSxZQUtOM0IsR0FMTXlCO09BQUFBLE1BQUFFO09BQUlmLElBQUFjOztNQUlQLElBSk9FLE1BQUFoQixXQUFBQSxJQUFBZ0I7O0dBUVI7O0lBdUJUQztJQUVBQztJQUVBQztJQUVBQztJQUVBQztJQUVBQztZQUVBQyxJQUFJQyxHQUFFQyxNQUFPLFFBQVRELElBQUVDLFVBQUFBLGFBQXlCO1lBRS9CQyxJQUFJbkcsR0FBRUMsR0FBSSxPQUFORCxJQUFFQyxFQUFXO0dBbkJHOzs7T0FLcEJ5RjtPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBRztPQUFBQTtZQTZDRkMsWUFBYUMsR0FBY0MsR0FBZEQsY0FBY0MsSUFBc0IsU0FBOEI7WUFFL0VDLFlBQWFGLEdBQWNDLEdBQWRELGNBQWNDLElBQXNCLFNBQThCO1lBRS9FRSxhQUFjSCxHQUFjQyxHQUFjM0QsR0FBNUIwRCxlQUFjQyxHQUFjM0QsSUFDckMsU0FBNkM7WUFFbEQ4RCxhQUFjSixHQUFjQyxHQUFjM0QsR0FBNUIwRCxlQUFjQyxHQUFjM0QsSUFDckMsU0FBaUQ7WUF5SHREK0QsU0FBU0M7SUFDWCxZQURXQTs7OztRQUVFLFdBRkZBOztRQUdJLFdBSEpBOzs7UUFJZSxXQUpmQTs7SUFLSixXQUxJQTtHQUtlO1lBR3RCQyxLQUFNQyxLQUFnQlo7SUFDeEIsT0FEUVksaUJBQWdCWjtjQUNFLDhCQURsQlk7O0dBQzJEO1lBRWpFQyxRQUFRakQsR0FBMEIsT0FIbEMrQyxLQUdRL0MsTUFBd0M7WUFFaERrRDtJQUNGLDZDQUVLO0lBREEsT0FBQTtHQUNPO1lBRVZDLEtBQUtuRCxHQUF1QixPQVY1QitDLEtBVUsvQyxNQUF1QztPQXlCOUNvRDtZQU1BQyxRQUFRdEc7SUFFUjs7T0FBQTtrQkFBeUJpRDtVQUVBLFVBQUEsOEJBRkFBO1VBRWIsR0FBQTtXQU9LLElBQU5zRCxNQUFNLFdBWFR2RyxHQUVpQmlEO21CQVNkc0QsVUFUY3REO1dBVVcsT0FEekJzRDs7VUFMSSxJQUFBLGFBQ0UsUUFBQSxXQVBUdkc7O1VBUTRCO1NBSzFCO0lBWFYsT0FBQTtHQVdZO1lBRVp3RyxhQUFheEc7SUFFYjs7T0FBQTtrQkFBOEJ5RyxRQUFLeEQ7VUFFVixVQUFBLDhCQUZVQTtVQUV2QixHQUFBO1dBT0ssSUFBTnNELE1BQU0sV0FYSnZHLEdBRWlCeUcsUUFBS3hEO21CQVN4QnNELFVBVHdCdEQ7V0FVQyxPQUR6QnNEOztVQUxJLElBQUEsYUFDRSxRQUFBLFdBUEp2RyxHQUVpQnlHOztVQU1NO1NBSzFCO0lBWFYsT0FBQTtHQVdZO1lBRVpDLGVBQWdCMUcsR0FBOEJ5RyxRQUFZRSxPQUM1RCxPQURrQjNHLE9BQThCeUcsUUFBWUUsT0FDVjtZQUVoREM7O0tBRThCLG9CQUFrQyxNQUFBLDBDQUFlO0tBQTFCLE9BQUE7SUFBMkI7SUFBaEY7S0FBQSxTQUFBOztJQUVDLG1DQU9FO0lBSEEsMEJBRUU7SUFEQTtLQUEwRCxNQUFBO0lBQVk7SUFBdkIsT0FBQTtHQUUzQztHQUVFLElBR1RDLHdDQUhTLFlBR1RBO1lBYUZDLDRCQUE2QkMsS0FBc0JDLEtBQUtDLFNBQVNDLE1BQU1DLFNBQVFDO0lBQ2pGLEdBQU8saUNBRHdCTDtLQVFTO01BQUE7TUFDbEM1RztpQkFBS2tGLEdBQUVyRixHQUNULEtBRE9xRixHQUVHLFlBQ0hnQyxJQUhBaEMsTUFHSyxPQUFBLFdBSEhyRixHQUdGcUgsR0FBUTtLQUhibEgsS0FUb0Q4Ryx1QkFjakMsMEJBQW1CO0tBTHRDOUcsS0FUNkQrRyxvQkFlN0MsdUJBQWdCO0tBTmhDL0csS0FUbUVnSCx1QkFnQmhELDBCQUFtQjtLQWhCYkoscUJBQXNCQyxLQUE0Qkk7S0FrQi9FLHVCQUFVLE9BbEJtQkwsd0JBQXNCQyxLQUE0QkksU0FrQmpCOztJQWZyRCxJQUFMRSxLQUFLLFlBSDBDTjtJQUluRCxTQUFJTyxTQUFTdEU7S0FBbUIsY0FKK0NtRSxHQUlsRW5FO0tBQW1CLDBCO0lBQVk7SUFKZjhELGdCQUd6Qk8sSUFDQUM7SUFFSix1QkFBVSxPQU5tQlIsZ0JBR3pCTyxJQUNBQyxVQUVtRDtHQVlPO1lBRTlEQyxpQkFBa0J2RSxHQUFzQitELEtBQUlJLEdBQUVLO0lBQ2hELE9BckJFWCw0QkFvQmtCN0QsR0FBc0IrRCxTQUFNUyxhQUFGTDtHQUNHO1lBRS9DTSxvQkFBb0JDLElBQUssT0FBQSxXQUFMQSxPQUFVO1lBRTlCQztJQUNGLEdBQUc7O0lBRXlDOztHQUFhO1lBRXZEQyxrQkFBbUJDLFNBQVNDLFlBQVlDLFFBQU9oQjtJQUNqRCxTQUFJaUIsU0FBU2pJO0ssWUFDRDtTQUNIWjtLQUFLLE9BQUEsV0FGRFksR0FFSlo7O0lBRUU7SUFKUDZJO2VBS1U3SSxHQUF1QixjQUF2QkEsNkJBQTZCLEdBTnRCMEk7SUFDakJHO2VBTVU3SSxHQUEwQixjQUExQkEsZ0NBQWdDLEdBUGhCMkk7SUFDMUJFO2VBT1U3STtPQUFzQixVQUFBLDhCQUF0QkE7O01BQTRCO01BUkE0STtxQ0FTdENFO0lBT0osV0FQSUEsT0FUNkNsQjtHQWdCM0I7Ozs7O09BdlJwQm5CO09BSEFEO09BRkFEO09BRkFIO09BNUZBaEI7T0E2TkFzQjtXQVdFSSxTQUVBQyxNQUtBQztPQXlCRkM7T0FNQUM7T0FlQUU7T0FlQUU7T0FHQUU7O09BNkJBRTtPQW9CQVU7T0FHQUU7T0FFQUU7T0FLQUM7OztFOzs7Ozs7Ozs7OztHOzs7Ozs7Ozs7SUN2V0FNOztJQTZEQUM7O0lBVUFDOztJQVVBQzs7SUFVQUM7O0lBVUFDOztJQVVBQzs7SUFVQUM7O0lBVUFDO1lBVUFDLElBQ0N4RyxHQUFFeUIsR0FBRWdGLEdBQUssT0FBQSwrQkFBVHpHLEdBQUV5QixHQUFFZ0YsR0FBb0M7O0lBRXpDdkk7SUFFQXdJOztJQThEQUM7WUFtQkVDLGVBQWVDO0lBQ0wsSUFBUkMsWUE3SkpiLFdBNEppQlk7SUFFakIsT0FBQSxxQkFESUM7R0FDZTs7OztPQXJPbkJmOzs7O09BNkRBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVVBQztPQUdBdEk7T0FFQXdJO09BOERBQztPQUFBQTs7Ozs7O1dBbUJFQzs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7O0lDak9GRzs7Ozs7Ozs7Ozs7OztZQUtJQyxXQUFXcEo7OzttQkFDVDtLQUVFLElBREhxSixnQkFBTFIsZ0JBQ1EsUUFBQSxXQUhPN0ksR0FFZjZJO21CQUdTUyxnQkFBTSxXQUFOQSxLQUxMRixXQUFXcEosR0FFVnFKO21CQUFBQTs7O1lBd0JMRSxTQUFVQyxhQUFhQyxTQUFRckg7SUFsQmpDO09Ba0J5QnFIOzRCQUFBQTs7O0lBWnJCO0tBQUEsd0JBWVFEO0tBbEJSRTtPQVJFTjs7VUFVRixJQUFZUCxjQUFOaEc7VUFDSixLQURVZ0csR0FFQTtjQUNIUyxNQUhHVDtVQUdFLGVBSFJoRyxNQUdrQyx3QkFBL0J5RztTQUEyQzs7S0FjcERLO09BbkJBRDtVQWdCRyx1QkFBVyw2QkFoQmRBOztJQW9CSixXQWpDRVAsWUFpQ2lCLDJCQUZjL0csSUFDN0J1SDtHQUNnQztZQUVsQ0MsaUJBQWtCSixhQUFhQyxTQUFRbkc7SUFDekMsT0FMRWlHLFNBSWtCQyxhQUFhQyxhQUNDLHdCQURPbkc7R0FDSTtZQUUzQ3VHLGNBQWVMLGFBQWFDLFNBQVFLOztLQUdsQzsrQkFJZXhHLGNBQUssT0FBTEE7O2dDQUhFbEIsY0FBSyxPQUFMQTtVQUNJMkg7TUFBSyxPQUFMQTs7O1VBQ1RoRztNQUFtQixPQUFBLHdCQUFuQkE7O1NBRUZzRDtLQUFLLE9BQUxBO0lBQXFCO0lBTmpDLElBREUyQyxNQUNGLGlDQUZvQ0Y7SUFXUCxPQWxCN0JQLFNBT2VDLGFBQWFDLFNBV0MsNkJBVjNCTztHQVU0QztZQWlCOUNDO0lBRUksWUFBQTtrQkFLQ3BILGlCQUFRLE9BQVJBO0lBSEcsY0FBQTs7S0FDSSxPQUFBO1FBQ0hxSDtJQUFRLE9BQVJBO0dBQ1E7bUNBSWpCQztZQUtFQyxTQUFVbkg7SUFDWixPQURZQSxhQUxaa0g7Y0FPSyw4QkFGT2xIOztHQUdBO1lBRVZvSCxLQUFNcEg7SUFDUixPQURRQSxhQXZGUmtHO2NBd0ZpQyw4QkFEekJsRzs7R0FDeUU7WUFFL0VxSCxPQUFRckg7SUFDVixjQURVQTtjQUVMLDhCQUZLQTs7R0FHRTtZQUVWa0YsWUFBYWxGO0lBQ2YsT0FEZUE7Y0FFViw4QkFGVUE7O0dBR0g7R0FpRUU7SUFBWnNILFlBQVk7SUFFWkMsV0FBVztJQUVYQyxRQUFRO0lBRVJDLFFBQVE7SUFFUkMsT0FBTztJQUVQQyxVQUFVO0lBYkssa0JBR2ZMLFdBRUFDLFVBRUFDLE9BRUFDLE9BRUFDLE1BRUFDOztJQUdGQztJQUVBckQ7OztPQS9JQW9DO09BR0FDO1dBNENFTyxVQUtBQyxvQixjQUdBQyxRQUtBbkM7O09BN0JGOEI7T0E4R0FZO09BRUFyRDs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDM0xPOzs7Ozs7Ozs7O0lBQVBzRCxPQUFrQjtJQWd1QmxCekU7SUFFQUM7SUFFQUU7SUFFQUU7SUFLRXFFLFFBQVE7SUFFUkMsT0FBTztJQUVQQyxNQUFNO0lBRU5DLFFBQVE7SUFFUkMsV0FBVztJQUVYQyxZQUFZO0lBRVpDLFVBQVU7SUFFVkMsWUFBWTtJQUVaQyxZQUFZO0lBRVpDLFdBQVc7SUFFWEMsV0FBVztJQUVYQyxVQUFVO0lBRVZDLFFBQVE7SUFFUkMsYUFBYTtJQUViQyxRQUFRO0lBRVJDLGlCQUFrQjtJQUVsQkMsYUFBYTtJQUViQyxZQUFZO0lBRVpDLFdBQVc7SUFFWEMsY0FBYztJQUVkQyxZQUFZO0lBRVpDLFVBQVU7SUFFVkMsWUFBWTtJQUVaQyxXQUFXO0lBRVhDLFlBQVk7SUFFWkMsT0FBTztJQUVQQyxPQUFPO0lBRVBDLGFBQWE7SUFFYkMsU0FBUztJQUVUQyxRQUFRO0lBRVJDLGFBQWE7SUFFYkMsU0FBUztJQUVUQyxTQUFTO0lBRVRDLFFBQVE7SUFFUkMsT0FBTztJQUVQdEMsT0FBTztJQUVQdUMsU0FBUztJQUVUQyxlQUFlO0lBRWZDLFNBQVM7SUFFVEM7TUFBb0I7SUFFcEJDLFdBQVc7SUFFWDVDLFFBQVE7SUFFUkQsUUFBUTtJQUVSOEMsU0FBUztJQUVUQyxTQUFTO0lBRVRDLFVBQVU7SUFFVkMsV0FBVztJQUVYQyxXQUFXO0lBRVhDLGNBQWM7SUFFZHBELFdBQVc7SUFFWHFELGNBQWM7SUFFZEMsU0FBUztJQUVUQyxXQUFXO0lBRVhDLG1CQUFtQjtJQUVuQkMsaUJBQWlCO0lBRWpCQyxlQUFlO0lBRWZDO01BQXFCO0lBRXJCQyxrQkFBa0I7SUFFbEJDLGdCQUFnQjtJQUVoQkMsa0JBQWtCO0lBRWxCQyxnQkFBZ0I7SUFFaEJDLG1CQUFtQjtJQUVuQkMsVUFBVTtJQUVWQyxpQkFBaUI7SUFFakJDLGlCQUFpQjtJQUVqQkMsVUFBVTtJQUVWQyxRQUFRO0lBRVJDO01BQW9CO0lBRXBCQyxhQUFhO0lBRWJDLGlCQUFpQjtJQUVqQnpFLFlBQVk7SUFFWjBFO01BQXFCO0lBRXJCbk0sVUFBVTtJQUVWb00sUUFBUTtJQUVSQyxPQUFPO0lBRVBDLFVBQVU7SUFFVkMsZUFBZTtJQUVmQyxnQkFBZ0I7SUFFaEJDLGNBQWM7SUFFZEMsZUFBZTtJQUVmQyxjQUFjO0lBRWRDLGFBQWE7SUFFYkMsY0FBYztJQUVkQyxZQUFZO0lBRVpDLGFBQWE7SUFFYkMsU0FBUztJQUVUQyxVQUFVO0lBRVZDLFVBQVU7SUFFVkMsVUFBVTtJQUVWQyxlQUFlO0lBRWZDLFVBQVU7SUFFVnRKO0lBS0ZXO0lBRUFWO0lBRUFZO0lBRUFHO0lBK3ZCQXVJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQW9aQUM7SUFDRixjQVdPdE8sR0FBSyxPQUFMQSxFQUFNOztLQVJUO0tBRzRCLG1EQUN2QjtLQUVVLElBQVR1TyxTQUFTO0tBQ1YseUJBRENBLCtCQUFBQTtJQUM2RTtJQUNyRixPQUFBO0dBQVk7T0F3TVpDLDJDQUFBQTtZQU1BQyxlQUFlN0k7SUFDakIsY0FHTzhJLE9BQVMsT0FBVEEsTUFBYzt5QkFEUixNQUFBLDBDQUFlO0lBRDFCLFdBQUEsd0JBQTBCLHdCQUZYOUk7SUFJZixPQUFBO0dBQW9CO1lBRXBCK0ksbUJBQW1CL0k7SUFDckIsY0FHTzhJLE9BQVMsT0FBVEEsTUFBYzs7S0FEQyxXQUFBLGtDQUhEOUk7S0FHQyxPQUFBO0lBQXNEO0lBRDFFLFdBQUEsd0JBQTBCLHdCQUZQQTtJQUluQixPQUFBO0dBQW9CO1lBRXBCZ0osbUJBQW1CaEo7SUFBc0IsV0FBQSx3QkFBMEIsd0JBQWhEQTtJQUFzQixPQUFBO0dBQXlDO1lBRWxGaUosc0JBQXNCakosSUFBR3hHO2tCQUlwQjhCO0tBQXNCLFdBQUEsV0FKRjlCLFFBSXBCOEI7S0FBc0IsT0FBQTtJQUFVO3lCQUQxQixTQUFJO0lBRGYsV0FBQSx3QkFBMEIsd0JBRkowRTtJQUl0QixPQUFBO0dBQXNDO1lBZ0V0Q00sU0FBUzdJLEdBQUVZO0lBQ2IsS0FEV1osR0FFRDtRQUNIeUosSUFISXpKO0lBR0MsT0FBQSxXQUhDWSxHQUdONkk7R0FBUTtZQUViZ0ksY0FBZUMsS0FBa0JqTztJQUFPLE9BQXpCaU8sa0JBQTRDLHdCQUExQmpPO0dBQTBDO1lBRTNFa08sb0JBQW9CRCxLQUFJak8sTUFBTyxPQUYvQmdPLGNBRW9CQyxLQUFJak8sTUFBZ0Q7R0FFbEQsSUFBdEJtTztZQUVJQyxzQkFBdUJDLE1BQU9yTyxNQUFLaU8sS0FBSUs7SUFDN0M7Y0FENkJELGNBQU9yTyxNQUUvQixPQVJIZ08sY0FNdUNDLEtBQUlLO2dCQUYzQ0g7OztXQWFRNU87T0FBQUEsWUFDOEIsd0JBWksrTztPQVgzQ2xKO1NBVzJCaUo7a0JBYUg3TDtVQUZoQmpELGtCQUd5QyxvQkFEekJpRDtVQUNUO1NBQW1FO09BekJsRjRDO1NBV2tDcEY7a0JBZVg2QztVQUpmdEQsa0JBS3lDLG9CQUQxQnNEO1VBQ1I7U0FBbUU7T0FMMUV0RDtjQVgrQjBPLGtCQVcvQjFPOztNQUx1QixVQVovQnlPLGNBTXVDQyxLQUFJSztNQVgzQ2xKLFNBVzJCaUosb0JBT0Usc0JBQWdCO01BbEI3Q2pKLFNBV2tDcEYsb0JBUU4sc0JBQWU7TUFBdkM7O0tBWUE7TUFJVztPQUFBLE1BQUE7T0FFSixPQUFVO09BQVY7Ozs7O0tBNUJYbU87O0dBaUM4QztZQUU5Q0ksV0FBV04sS0FBc0IsT0FyQ2pDQyxvQkFxQ1dELGVBQW9EO1lBRS9ETyxXQUFXUCxLQUFzQixPQXZDakNDLG9CQXVDV0QsZUFBb0Q7WUFFL0RRLFdBQVdSLEtBQXNCLE9BekNqQ0Msb0JBeUNXRCxlQUFvRDtZQUUvRFMsWUFBWVQsS0FBdUIsT0EzQ25DQyxvQkEyQ1lELGdCQUFzRDtZQUVsRVUsV0FBV1YsS0FBc0IsT0E3Q2pDQyxvQkE2Q1dELGVBQW9EO1lBRS9EVyxXQUFXWCxLQUFzQixPQS9DakNDLG9CQStDV0QsZUFBb0Q7WUFFL0RZLFlBQVlaLEtBQXVCLE9BakRuQ0Msb0JBaURZRCxnQkFBc0Q7WUFFbEVhLFdBQVdiLEtBQXNCLE9BbkRqQ0Msb0JBbURXRCxlQUFvRDtZQUUvRGMsV0FBV2QsS0FBc0IsT0FyRGpDQyxvQkFxRFdELGVBQW9EO1lBRS9EZSxlQUFlZjtJQUEwQixPQXZEekNDLG9CQXVEZUQ7R0FBNEQ7WUFFM0VnQixhQUFhaEIsS0FBd0IsT0F6RHJDQyxvQkF5RGFELGlCQUF3RDtZQUVyRWlCLGFBQWNiLE1BQU9yTyxNQUFLaU87SUFDNUIsT0F4RE1HLHNCQXVEVUMsTUFBT3JPLE1BQUtpTztHQUNtQjtZQUU3Q2tCLFlBQWFkLE1BQU9yTyxNQUFLaU87SUFDM0IsT0EzRE1HLHNCQTBEU0MsTUFBT3JPLE1BQUtpTztHQUNtQjtZQUU1Q21CLGVBQWdCZixNQUFPck8sTUFBS2lPO0lBQzlCLE9BOURNRyxzQkE2RFlDLE1BQU9yTyxNQUFLaU87R0FDbUI7WUFFL0NvQixhQUFjaEIsTUFBT3JPLE1BQUtpTztJQUM1QixPQWpFTUcsc0JBZ0VVQyxNQUFPck8sTUFBS2lPO0dBQ21CO1lBRTdDcUIsWUFBWXJCLEtBQXVCLE9BdkVuQ0Msb0JBdUVZRCxnQkFBc0Q7WUFFbEVzQixlQUFldEI7SUFBMEIsT0F6RXpDQyxvQkF5RWVEO0dBQTREO1lBRTNFdUIsYUFBYXZCLEtBQXdCLE9BM0VyQ0Msb0JBMkVhRCxpQkFBd0Q7WUFFckV3QixTQUFTeEIsS0FBdUIsT0E3RWhDQyxvQkE2RVNELGFBQW1EO1lBRTVEeUIsU0FBU3pCLEtBQXVCLE9BL0VoQ0Msb0JBK0VTRCxhQUFtRDtZQUU1RDBCLFNBQVMxQixLQUF1QixPQWpGaENDLG9CQWlGU0QsYUFBbUQ7WUFFNUQyQixTQUFTM0IsS0FBb0IsT0FuRjdCQyxvQkFtRlNELGFBQWdEO1lBRXpENEIsVUFBVTVCLEtBQXFCLE9BckYvQkMsb0JBcUZVRCxjQUFrRDtZQUU1RDZCLFlBQVk3QixLQUF1QixPQXZGbkNDLG9CQXVGWUQsZ0JBQXNEO1lBRWxFOEIsUUFBUTlCLEtBQTJCLE9BekZuQ0Msb0JBeUZRRCxZQUFzRDtZQUU5RCtCLFNBQVMvQixLQUF5QixPQTNGbENDLG9CQTJGU0QsYUFBcUQ7WUFFOURnQyxTQUFTaEMsS0FBeUIsT0E3RmxDQyxvQkE2RlNELGFBQXFEO1lBRTlEaUMsU0FBU2pDLEtBQXlCLE9BL0ZsQ0Msb0JBK0ZTRCxhQUFxRDtZQUU5RGtDLFNBQVNsQyxLQUF5QixPQWpHbENDLG9CQWlHU0QsYUFBcUQ7WUFFOURtQyxTQUFTbkMsS0FBeUIsT0FuR2xDQyxvQkFtR1NELGFBQXFEO1lBRTlEb0MsU0FBU3BDLEtBQXlCLE9BckdsQ0Msb0JBcUdTRCxhQUFxRDtZQUU5RHFDLFFBQVFyQyxLQUF1QixPQXZHL0JDLG9CQXVHUUQsWUFBa0Q7WUFFMURzQyxpQkFBaUJ0QztJQUF1QixPQXpHeENDLG9CQXlHaUJEO0dBQTJEO1lBRTVFdUMsVUFBVXZDLEtBQXFCLE9BM0cvQkMsb0JBMkdVRCxjQUFrRDtZQUU1RHdDLFNBQVN4QyxLQUFvQixPQTdHN0JDLG9CQTZHU0QsYUFBZ0Q7WUFFekR5QyxTQUFTekMsS0FBb0IsT0EvRzdCQyxvQkErR1NELGFBQWdEO1lBRXpEMEMsVUFBVTFDLEtBQXFCLE9BakgvQkMsb0JBaUhVRCxjQUFrRDtZQUU1RDJDLFVBQVUzQyxLQUFxQixPQW5IL0JDLG9CQW1IVUQsY0FBa0Q7WUFFNUQ0QyxRQUFRNUMsS0FBd0IsT0FySGhDQyxvQkFxSFFELFlBQW1EO1lBRTNENkMsVUFBVTdDLEtBQXVCLE9BdkhqQ0Msb0JBdUhVRCxjQUFvRDtZQUU5RDhDLGFBQWE5QyxLQUF3QixPQXpIckNDLG9CQXlIYUQsaUJBQXdEO1lBRXJFK0MsWUFBWS9DLEtBQXVCLE9BM0huQ0Msb0JBMkhZRCxnQkFBc0Q7WUFFbEVnRCxVQUFVaEQsS0FBcUIsT0E3SC9CQyxvQkE2SFVELGNBQWtEO1lBRTVEaUQsV0FBV2pELEtBQXNCLE9BL0hqQ0Msb0JBK0hXRCxlQUFvRDtZQUUvRGtELGFBQWFsRCxLQUF3QixPQWpJckNDLG9CQWlJYUQsaUJBQXdEO1lBRXJFbUQsWUFBWW5ELEtBQXVCLE9BbkluQ0Msb0JBbUlZRCxnQkFBc0Q7WUFFbEVvRCxjQUFjcEQsS0FBOEIsT0FySTVDQyxvQkFxSWNELGtCQUErRDtZQUU3RXFELFVBQVVyRCxLQUEwQixPQXZJcENDLG9CQXVJVUQsY0FBdUQ7WUFFakVzRCxlQUFldEQ7SUFBMEIsT0F6SXpDQyxvQkF5SWVEO0dBQTREO1lBRTNFdUQsWUFBWXZELEtBQThCLE9BM0kxQ0Msb0JBMklZRCxnQkFBNkQ7WUFFekV3RCxZQUFZeEQsS0FBOEIsT0E3STFDQyxvQkE2SVlELGdCQUE2RDtZQUV6RXlELFlBQVl6RCxLQUE4QixPQS9JMUNDLG9CQStJWUQsZ0JBQTZEO1lBRXpFMEQsU0FBUzFELEtBQTBCLE9BakpuQ0Msb0JBaUpTRCxhQUFzRDtZQUUvRDJELFNBQVMzRCxLQUEyQixPQW5KcENDLG9CQW1KU0QsYUFBdUQ7WUFFaEU0RCxTQUFTNUQsS0FBMkIsT0FySnBDQyxvQkFxSlNELGFBQXVEO1lBRWhFNkQsVUFBVTdELEtBQU0sT0F6SmhCRCxjQXlKVUMsY0FBNkI7WUFFdkM4RCxVQUFVOUQsS0FBTSxPQTNKaEJELGNBMkpVQyxjQUE2QjtZQUV2QytELFdBQVcvRCxLQUFNLE9BN0pqQkQsY0E2SldDLGVBQThCO1lBRXpDZ0UsU0FBU2hFLEtBQU0sT0EvSmZELGNBK0pTQyxhQUE0QjtZQUVyQ2lFLFFBQVFqRSxLQUFNLE9BaktkRCxjQWlLUUMsWUFBMkI7WUFFbkNrRSxRQUFRbEUsS0FBTSxPQW5LZEQsY0FtS1FDLFlBQTJCO1lBRW5DbUUsVUFBVW5FLEtBQU0sT0FyS2hCRCxjQXFLVUMsY0FBNkI7WUFFdkNvRSxZQUFZcEUsS0FBTSxPQXZLbEJELGNBdUtZQyxnQkFBK0I7WUFFM0NxRSxTQUFTckUsS0FBTSxPQXpLZkQsY0F5S1NDLGFBQTRCO1lBRXJDc0UsYUFBYXRFLEtBQU0sT0EzS25CRCxjQTJLYUMsaUJBQWdDO1lBRTdDdUUsV0FBV3ZFLEtBQU0sT0E3S2pCRCxjQTZLV0MsZUFBOEI7WUFFekN3RSxVQUFVeEUsS0FBTSxPQS9LaEJELGNBK0tVQyxjQUE2QjtZQUV2Q3lFLFdBQVd6RSxLQUFNLE9BakxqQkQsY0FpTFdDLGVBQThCO1lBRXpDMEUsV0FBVzFFLEtBQU0sT0FuTGpCRCxjQW1MV0MsZUFBOEI7WUFFekMyRSxVQUFVM0UsS0FBTSxPQXJMaEJELGNBcUxVQyxjQUE2QjtZQUV2QzRFLFVBQVU1RSxLQUFNLE9BdkxoQkQsY0F1TFVDLGNBQTZCO1lBRXZDNkUsV0FBVzdFLEtBQU0sT0F6TGpCRCxjQXlMV0MsZUFBOEI7WUFFekM4RSxTQUFTOUUsS0FBTSxPQTNMZkQsY0EyTFNDLGFBQTRCO1lBRXJDK0UsU0FBUy9FLEtBQU0sT0E3TGZELGNBNkxTQyxhQUE0QjtZQUVyQ2dGLGVBQWVoRixLQUFNLE9BL0xyQkQsY0ErTGVDLG1CQUFrQztZQUVqRGlGLGNBQWNqRixLQUFNLE9Bak1wQkQsY0FpTWNDLGtCQUFpQztZQUUvQ2tGLGVBQWVsRjtJQUEwQixPQWpNekNDLG9CQWlNZUQ7R0FBNEQ7WUFFM0VtRixZQUFZbkYsS0FBdUIsT0FuTW5DQyxvQkFtTVlELGdCQUFzRDtZQUVsRW9GLGFBQWFwRixLQUF3QixPQXJNckNDLG9CQXFNYUQsaUJBQXdEO1lBRXJFcUYsWUFBWXJGLEtBQXVCLE9Bdk1uQ0Msb0JBdU1ZRCxnQkFBc0Q7WUFFbEVzRixZQUFZdEYsS0FBdUIsT0F6TW5DQyxvQkF5TVlELGdCQUFzRDtHQUV0RTs7O1lBRUl1RixhQUFhdkY7SUFDUCxVQTlNTkMsb0JBNk1hRDtXQUVSO0tBQStCLE1BQUE7SUFDdEM7R0FBQztHQU13Qjs7SUFKdkJ3RjtJQUl1QixNQUFBLDhCQUp2QkE7SUFHRXBRO01BQ0s7O1NBU0RqRDtTQUNKLE9BRElBLGFBYk5xVDttQkFjdUMsOEJBRGpDclQ7O1FBQzBFOztTQU4xRXNUO1NBQ21CLFdBQUEsOEJBRG5CQTtTQUNHLE9BQUE7bUJBRUYsOEJBSERBOztRQUc2QjtZQUtqQ0MsYUFBYUMsS0FBS0M7SUFDcEIsT0FEb0JBLDZCQUNrQix3QkFEdkJEO2NBRVYsOEJBRmVDOztHQUdSO1lBRVZ0VSxFQUFFYSxHQUFJLE9BTE51VCxzQkFLRXZULEdBQXNCO1lBRXhCMFQsS0FBSzFULEdBQUksT0FQVHVULHlCQU9LdlQsR0FBeUI7WUFFOUIyVCxLQUFLM1QsR0FBSSxPQVRUdVQseUJBU0t2VCxHQUF5QjtZQUU5QjRULFdBQVc1VCxHQUFJLE9BWGZ1VCwrQkFXV3ZULEdBQStCO1lBRTFDNlQsS0FBSzdULEdBQUksT0FiVHVULHlCQWFLdlQsR0FBeUI7WUFFOUI4VCxHQUFHOVQsR0FBSSxPQWZQdVQsdUJBZUd2VCxHQUF1QjtZQUUxQitULE9BQU8vVCxHQUFJLE9BakJYdVQsMkJBaUJPdlQsR0FBMkI7WUFFbENnVSxPQUFPaFUsR0FBSSxPQW5CWHVULDJCQW1CT3ZULEdBQTJCO1lBRWxDaVUsUUFBUWpVLEdBQUksT0FyQlp1VCw0QkFxQlF2VCxHQUE0QjtZQUVwQ2tVLElBQUlsVSxHQUFJLE9BdkJSdVQsd0JBdUJJdlQsR0FBd0I7WUFFNUJtVSxTQUFTblUsR0FBSSxPQXpCYnVULDZCQXlCU3ZULEdBQTZCO1lBRXRDb1UsSUFBSXBVLEdBQUksT0EzQlJ1VCx3QkEyQkl2VCxHQUF3QjtZQUU1QnFVLElBQUlyVSxHQUFJLE9BN0JSdVQsd0JBNkJJdlQsR0FBd0I7WUFFNUJzVSxHQUFHdFUsR0FBSSxPQS9CUHVULHVCQStCR3ZULEdBQXVCO1lBRTFCdVUsU0FBU3ZVLEdBQUksT0FqQ2J1VCw2QkFpQ1N2VCxHQUE2QjtZQUV0Q3dVLE1BQU14VSxHQUFJLE9BbkNWdVQsMEJBbUNNdlQsR0FBMEI7WUFFaEN5VSxLQUFLelUsR0FBSSxPQXJDVHVULHlCQXFDS3ZULEdBQXlCO1lBRTlCMFUsU0FBUzFVLEdBQUksT0F2Q2J1VCw2QkF1Q1N2VCxHQUE2QjtZQUV0QzJVLE1BQU0zVSxHQUFJLE9BekNWdVQsMEJBeUNNdlQsR0FBMEI7WUFFaEM0VSxHQUFHNVUsR0FBSSxPQTNDUHVULHVCQTJDR3ZULEdBQXVCO1lBRTFCNlUsR0FBRzdVLEdBQUksT0E3Q1B1VCx1QkE2Q0d2VCxHQUF1QjtZQUUxQjhVLEdBQUc5VSxHQUFJLE9BL0NQdVQsdUJBK0NHdlQsR0FBdUI7WUFFMUIrVSxHQUFHL1UsR0FBSSxPQWpEUHVULHVCQWlER3ZULEdBQXVCO1lBRTFCZ1YsR0FBR2hWLEdBQUksT0FuRFB1VCx1QkFtREd2VCxHQUF1QjtZQUUxQmlWLEdBQUdqVixHQUFJLE9BckRQdVQsdUJBcURHdlQsR0FBdUI7WUFFMUJrVixLQUFLbFYsR0FBSSxPQXZEVHVULHlCQXVES3ZULEdBQXlCO1lBRTlCbVYsR0FBR25WLEdBQUksT0F6RFB1VCx1QkF5REd2VCxHQUF1QjtZQUUxQm9WLEtBQUtwVixHQUFJLE9BM0RUdVQseUJBMkRLdlQsR0FBeUI7WUFFOUJxVixPQUFPclYsR0FBSSxPQTdEWHVULDJCQTZET3ZULEdBQTJCO1lBRWxDc1YsSUFBSXRWLEdBQUksT0EvRFJ1VCx3QkErREl2VCxHQUF3QjtZQUU1QnVWLFFBQU12VixHQUFJLE9BakVWdVQsMEJBaUVNdlQsR0FBMEI7WUFFaEN3VixJQUFJeFYsR0FBSSxPQW5FUnVULHdCQW1FSXZULEdBQXdCO1lBRTVCeVYsTUFBTXpWLEdBQUksT0FyRVZ1VCwwQkFxRU12VCxHQUEwQjtZQUVoQzBWLE9BQU8xVixHQUFJLE9BdkVYdVQsMkJBdUVPdlQsR0FBMkI7WUFFbEMyVixHQUFHM1YsR0FBSSxPQXpFUHVULHVCQXlFR3ZULEdBQXVCO1lBRTFCNFYsS0FBSzVWLEdBQUksT0EzRVR1VCx5QkEyRUt2VCxHQUF5QjtZQUU5QmxELElBQUlrRCxHQUFJLE9BN0VSdVQsd0JBNkVJdlQsR0FBd0I7WUFFNUI2VixLQUFLN1YsR0FBSSxPQS9FVHVULHlCQStFS3ZULEdBQXlCO1lBRTlCOFYsT0FBUTlWLEdBQUksT0FqRlp1VCwyQkFpRlF2VCxHQUEyQjtZQUVuQytWLEdBQUcvVixHQUFJLE9BbkZQdVQsdUJBbUZHdlQsR0FBdUI7WUFFMUJnVyxTQUFTaFcsR0FBSSxPQXJGYnVULDZCQXFGU3ZULEdBQTZCO1lBRXRDMUMsT0FBTzBDLEdBQUksT0F2Rlh1VCwyQkF1Rk92VCxHQUEyQjtZQUVsQ3dDLEVBQUV4QyxHQUFJLE9BekZOdVQsc0JBeUZFdlQsR0FBc0I7WUFFeEJpVyxNQUFNalcsR0FBSSxPQTNGVnVULDBCQTJGTXZULEdBQTBCO1lBRWhDa1csSUFBSWxXLEdBQUksT0E3RlJ1VCx3QkE2Rkl2VCxHQUF3QjtZQUU1Qm9HLEVBQUVwRyxHQUFJLE9BL0ZOdVQsc0JBK0ZFdlQsR0FBc0I7WUFFeEJtVyxPQUFPblcsR0FBSSxPQWpHWHVULDJCQWlHT3ZULEdBQTJCO1lBRWxDb1csU0FBT3BXLEdBQUksT0FuR1h1VCwyQkFtR092VCxHQUEyQjtZQUVsQ3FXLE1BQU1yVyxHQUFJLE9BckdWdVQsMEJBcUdNdlQsR0FBMEI7WUFFaENzVyxNQUFNdFcsR0FBSSxPQXZHVnVULDBCQXVHTXZULEdBQTBCO1lBRWhDdVcsTUFBTXZXLEdBQUksT0F6R1Z1VCwwQkF5R012VCxHQUEwQjtZQUVoQ3dXLEdBQUd4VyxHQUFJLE9BM0dQdVQsdUJBMkdHdlQsR0FBdUI7WUFFMUJ5VyxTQUFTelcsR0FBSSxPQTdHYnVULDZCQTZHU3ZULEdBQTZCO1lBRXRDMFcsTUFBTTFXLEdBQUksT0EvR1Z1VCwwQkErR012VCxHQUEwQjtZQUVoQzJXLEdBQUczVyxHQUFJLE9BakhQdVQsdUJBaUhHdlQsR0FBdUI7WUFFMUI0VyxNQUFNNVcsR0FBSSxPQW5IVnVULDBCQW1ITXZULEdBQTBCO1lBRWhDNlcsTUFBTTdXLEdBQUksT0FySFZ1VCwwQkFxSE12VCxHQUEwQjtZQUVoQzhXLEdBQUc5VyxHQUFJLE9BdkhQdVQsdUJBdUhHdlQsR0FBdUI7WUFFMUIrVyxHQUFHL1csR0FBSSxPQXpIUHVULHVCQXlIR3ZULEdBQXVCO1lBRTFCZ1gsTUFBTWhYLEdBQUksT0EzSFZ1VCwwQkEySE12VCxHQUEwQjtZQUVoQ2lYLE1BQU1qWCxHQUFJLE9BN0hWdVQsMEJBNkhNdlQsR0FBMEI7WUFFaENrWCxrQkFBa0JqUyxRQUFRWjtJQUNWLFdBQUEsOEJBREVZO0lBQ2MsR0FBL0IsMENBRHlCWixjQUFSWTtLQUVmLE9BQUEsOEJBRnVCWjtJQUd2QjtHQUFPO1lBRVY4UyxXQUFXOVM7SUFBSztJQUFBLE9BTGhCNlMsa0NBS1c3UztHQUF3RDtZQUVuRStTLGNBQWMvUztJQUFLO0lBQUEsT0FQbkI2UyxxQ0FPYzdTO0dBQTJEO1lBRXpFZ1QsV0FBV2hUO0lBQUs7SUFBQSxPQVRoQjZTLGtDQVNXN1M7R0FBd0Q7WUFFbkVpVCxpQkFBaUJqVDtJQUFLO0lBQUEsT0FYdEI2Uyx3Q0FXaUI3UztHQUE4RDtZQUUvRWtULGNBQWNsVDtJQUFLO0lBQUEsT0FibkI2UyxxQ0FhYzdTO0dBQTJEO1lBRXpFbVQsYUFBYW5UO0lBQUs7SUFBQSxPQWZsQjZTLG9DQWVhN1M7R0FBMEQ7T0FLekVWO1lBRUE4VDs7S0FFUSxZQUFBOztNQUVVOzs7VUFBb0MsTUFBQTtTQUFZO01BQXZCLE9BQUE7O29EQUNsQztLQUZVO01BQXNDLE1BQUE7S0FBWTtLQUF2QixPQUFBO0lBRTlCO0lBSlcsT0FBQTtHQUlWO1lBRWpCQztJQUNGO0lBRUE7OztHQUNxRDtZQUVuREM7aUJBSUt4YjtrQkFBcUVDLEdBQUssV0FBMUVELEdBQXFFQyxHQUFTOzBCQUF4QyxPQVYzQ3NiLDJCQVVtRTtLQUFFLE9BQUE7SUFBZTt3QkFEekUsT0FUWEEsMkJBU21DO0lBQ25DLE9BQUE7R0FBcUY7WUFFckZFLHNCQUF1QjVYO0lBQ3pCO0tBQVEsTUFEaUJBOzs7SUFJekI7OztHQUN3RTtZQUV0RTZYO0lBQ0Y7SUFFQTs7O0dBQTBFO1lBRXhFQztJQUNGLGFBUU8zYixHQUFLLE9BQUxBLEVBQU07O0tBTEg7Ozs7U0FDQzs7U0FDQTs7aUJBQ0E7O0tBQ0E7SUFBUztJQUNsQixPQUFBO0dBQVk7WUFFWjRiLCtCQUFzQy9YLEdBQUdnRSxTQUFTQyxNQUFNQyxTQUFRQztJQUNsRSxPQU1FO2FBbDNEQU47YUEyMkRzQzdEO2FBNWdFcEM0STthQTRnRXVDNUU7YUFBU0M7YUFBTUM7YUFPeEQ7ZUF4akVBYjs7b0NBeWpFcUQsU0FBQzs7aUJBQTdDMlU7O21CQUFNOzs7O29DQUNzQyxzQkFBYzs7aUJBQTFEQzs7bUJBQU07Ozs7Z0JBQ1YsT0FBQSxXQVYyRDlULFFBUXZENlQsSUFDQUM7ZUFDeUI7R0FBRTtZQUVwQ0MsMkJBQTJCbFksR0FBRW1FLEdBQUVLO0lBQ2pDLE9BYkV1VCwrQkFZMkIvWCxPQUFJd0UsYUFBRkw7R0FDd0I7WUE4WnBDZ1UsU0E3UU52UztJQUNYO0tBQU0sUUFBQSx3QkFES0E7Ozt1QkFVQzs7O3dCQXNFRzs7O3lCQTZCRDs7OzBCQVRJO21EQXZDTDttREFoQkE7aURBRkY7d0RBd0VPO3dEQURBO3NEQUVGOzs7bURBc0JIO29EQTlFQzt5REEyRUs7bURBL0VOO3dEQThFSzt1REEvRUQ7dURBNENBOzs7Ozs7MEJBUEc7eURBREQ7eURBREE7NERBSkc7NERBQ0E7b0RBNkNSO3FEQUNDO3NEQXZCQzs7O3FEQTdCRDtxREFDQTtxREFDQTtxREFDQTtxREFDQTt1REFHRTsyREFDSTs7Ozs7Ozt5QkEvRFQ7OzswQkF3RUs7bURBMURKO3FEQXFERTtxREFqQkE7cURBQ0E7cURBQ0E7cURBQ0E7OztrREFwREg7a0RBQ0E7NERBNEZVO3VEQUNMOzREQUZLO2dFQURJO3NEQXJCVjs7Ozs7OzBCQS9FSjtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTtrREFDQTs7O2tEQWRBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBO2tEQUNBOzs7Ozs7Ozt3QkFtQkU7Ozt5QkFnQ0o7OzsyQkFqRUU7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7a0RBQ0E7OztnREE0REY7Z0RBQ0E7Z0RBQ0E7a0RBd0NFO29EQTlERTsyREF1Rk87cURBQ047Ozs7OzsyQkExRUw7aURBU0M7aURBQ0E7aURBQ0E7Z0RBVkQ7Z0RBQ0E7Z0RBQ0E7Z0RBQ0E7OztvREE5Qkk7b0RBQ0E7b0RBQ0E7aURBeUVIO21EQXBFRTttREFIQTtvREFNQzs7Ozs7OzswQkFnRlE7OzsyQkE3RVI7b0RBcEJBO29EQUNBO29EQUNBO29EQUNBO29EQUNBO29EQUNBOzs7MkRBeUZPO3lEQUlGO3NEQTdFSDttREFRSDt5REFnRU07eURBNUJBOzBEQUNDOzs7Ozs7MkJBdENIO3VEQVZBO3lEQUtFOzBEQUNDO3lEQTRFRDs4REFKSzs0REFHRjt5REFKSDs7O3FEQXhCSjtzREFDQzt1REFLQzt1REFIQTt3REFDQztxREFDSDt1REFqREU7Ozs7O0lBa0ZWO0dBQVk7WUFFakJ3UztJQUFvQjtzQkFJZDs7Ozs7UUFIQTs7UUFDQTtnQkFDQTs7SUFFRDtHQUFZO1lBRWpCQztJQUFxQjtzQkFJZjs7Ozs7UUFIQTs7UUFDQTtnQkFDQTs7SUFFRDtHQUFZO1lBRWpCQztJQUFzQjs7Ozs7U0FrQmhCOztTQUNBOztTQUNBOztTQUNBOztTQUNDOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQUNBOztTQVhBOztTQUZBOzs7U0FDQTs7U0FFQTtpQkFKQTs7Ozs7O1FBTkQ7O1FBS0E7O1FBREE7O1FBTkE7O1FBRkE7O1FBTUE7O1FBSEE7O1FBSUE7O1FBRkE7O1FBSkE7O1FBRkE7O1FBREE7O0lBMkJEO0dBQVk7WUFFakJDO0lBQXNCOzs7Ozs7U0FxRGhCOztTQUNBOztTQVVBOztTQURBOztTQXZCQTs7U0FDQTs7U0FUQTs7U0FHQTs7U0FZQTs7U0FYQTs7U0FFQTs7U0F1QkE7O1NBNUJBOztTQTBCQTs7U0F0QkE7O1NBcUJBOztTQVdBOztTQW5FQzs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FDQTs7U0FFQTs7U0F3Q0E7O1NBMUJBOztTQW9DQTs7U0FyQ0E7O1NBc0NBOztTQUNBOztTQWxEQTs7U0F5QkE7O1NBRUE7O1NBREE7O1NBYUE7Ozs7O1NBMUJGOztTQUNBOztTQTBCQzs7U0F6Q0E7O1NBNkJBOztTQTVDQTs7U0FtRUE7O1NBSUE7O1NBR0E7O1NBREE7O1NBSEE7O1NBS0E7O1NBR0E7O1NBREE7O1NBREE7O1NBL0RBOztTQXdEQTs7U0FHQTs7U0E5Q0E7O1NBVEE7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBQ0E7O1NBb0JBOztTQWdCQTs7U0FGQTs7U0FaQTs7U0FkQTs7U0FlQTs7U0FDQTs7U0FDQTs7U0FaQTs7U0FhQTs7O0lBNEJEO0dBQVk7WUFFakJDLHlCQUFzQixTQUFZO1lBTWxDQyxTQUFTQyxPQUFNM2IsR0FFZjZJLEcsT0FBQUEsSUFBQUEsSUFEZ0IsV0FERDdJLEdBQU4yYjtZQWFUQyxPQUFPeGMsR0FBRVksR0FBSSxPQUFBLFdBQUpBLEdBQUZaLEdBQVM7WUFFaEJ5YztJQUlVO0lBQVQsa0IsT0FuQkRILGNBeEZBRjtJQStGSTs7ZUFiSkM7Ozs7UUFjYztTQUFBOzZCLE9BUmRDLGNBcElBTDs7O1FBNkljO1NBQUE7NkIsT0FUZEssY0E3SEFKOzs7UUF1SWM7U0FBQTs2QixPQVZkSSxjQXRIQUg7O1FBa0hTSTtJQXVCUixPQU5EQzthQUFBQTtlQUFBQTs7MEJBZkEvUztrQixPQUFBQTs0QkFBQUE7NEJBRGdCO21EQURQOFMsT0FGVEYsbUJBRWVMOzs7O0dBdUJpQztZQVFoRFUsWUFBWUg7SUFDZCxRQURjQSxPQUNzRDtJQUFsRCxJQUFJLGNBQUssNEJBRGJBLFNBQ1E7ZUFBb0M7R0FBYztZQUV0RUksb0JBQWlCLFdBQVk7WUFFN0JDLFlBQVMsU0FBSTtZQUViQztJQUNGO0tBQVUsT0FBQSwyQ0FMUkY7Ozs7b0RBRUFDLE1BTEFGOzRCQUFBQSxZQVc0QztHQUNuQztZQUtYSSxlO1lBb0VBQyxPQUFRQztJQUNBLElBQU4zRixNQUFNLCtCQURBMkY7YUFFViw4QkFESTNGLE1BRUMsWUFISzJGO2tEQUNOM0Y7Ozs7b0NBQUFBOztvQkFBQUE7O3NCQUFBQTsyQkFETTJGOzBCQUFBQTt3QkFBQUE7c0JBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzswQkFBQUE7K0JBRE0yRjs4QkFBQUE7NEJBQUFBOzBCQUFBQTt3QkFBQUE7c0JBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt3QkFBQUE7c0JBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTsyQkFETTJGOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGO3VCQURNMkY7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzswQkFBQUE7OzRCQUFBQTs7OEJBQUFBOztnQ0FBQUE7O2tDQUFBQTt1Q0FETTJGO3VDQUFBQTtxQ0FBQUE7bUNBQUFBO2lDQUFBQTsrQkFBQUE7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7eUJBRE0yRjt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTs7d0JBQUFBOzZCQURNMkY7NkJBQUFBOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGOztvQkFBQUE7O3NCQUFBQTsyQkFETTJGOzJCQUFBQTt5QkFBQUE7dUJBQUFBOztvQ0FDTjNGLHFCQURNMkYsYUFBQUE7O29DQUNOM0Y7O29CQUFBQTs7c0JBQUFBOzJCQURNMkY7MkJBQUFBO3lCQUFBQTt1QkFBQUE7O29DQUNOM0Y7O29CQUFBQTs7c0JBQUFBOzt3QkFBQUE7OzBCQUFBQTs7NEJBQUFBOzs4QkFBQUE7O2dDQUFBQTs7a0NBQUFBO3VDQURNMkY7dUNBQUFBO3FDQUFBQTttQ0FBQUE7aUNBQUFBOytCQUFBQTs2QkFBQUE7MkJBQUFBO3lCQUFBQTt1QkFBQUE7O29DQUNOM0Ysc0JBRE0yRixhQUFBQTs7b0NBQ04zRjt1QkFETTJGO3VCQUFBQTs7SUFzSEQsWUF0SENBO0dBc0hNO1lBRWRDLFdBQVdwWjtpQkFBcUNBLEdBQUssV0F4SHJEa1osT0F3SGdEbFosSUFBb0I7d0JBQS9CLFNBQUk7SUFBRSxPQUFBLGlDQUFoQ0E7R0FBMEQ7WUFXckVxWixZQUFhaFY7SUFDZixhQXVCT0EsSUFBTSxXQUFOQSxJQUFtQjs7S0FwQnRCLGFBbUJPQSxJQUFNLFdBQU5BLElBQXNCOztNQWhCekIsYUFlT0EsSUFBTSxXQUFOQSxJQUF3Qjs7T0FaM0IsYUFXT0EsSUFBTSxXQUFOQSxJQUF5Qjs7UUFSNUIsYUFPT0EsSUFBTSxXQUFOQSxJQUFzQjs7U0FKekIsYUFHT0EsSUFBTSxXQUFOQSxJQUFxQjs2QkFEZixXQWxCbEJBLElBa0I0QztTQURyQyxVQXB1QmxCbVQsYUFtdEJXblQ7U0FtQk8sT0FBQTtRQUEyQjtRQUwvQixVQW51QmRrVCxjQXF0QldsVDtRQW9CRyxPQUFBO09BQTRCO09BVGhDLFVBbHVCVmlULGlCQXV0QldqVDtPQXFCRCxPQUFBO01BQStCO01BYm5DLFVBanVCTmdULFdBeXRCV2hUO01Bc0JMLE9BQUE7S0FBOEI7S0FqQmxDLFVBaHVCRitTLGNBMnRCVy9TO0tBdUJULE9BQUE7SUFBNEI7SUFyQmhDLFVBL3RCRThTLFdBNnRCVzlTO0lBd0JiLE9BQUE7R0FBeUI7WUFFekJpVixnQkFBZ0JqVjtpQkFBdUNBLElBQU0sV0ExQjdEZ1YsWUEwQnVEaFYsS0FBMkI7d0JBQXRDLFNBQUk7SUFBRSxPQUFBLGlDQUFsQ0E7R0FBbUU7WUFFbkZrVjtJQUVGLG9CQUdZLDhCQUFtQjs7S0FEbEI7O0lBQTRCO0lBQ3ZDLE9BQUE7R0FBOEI7R0FHaEM7SUFERUM7TUFDRjs7U0FHTTtVQURFM1M7O2FBeHNDTnlHOztjQUFBQTs7ZUFBQUE7O2dCQUFBQTtvQkFBQUE7U0FndENFO1VBQ1k7MEJBQWVtTSxHQUFLLE9BQUEsaUNBQUxBLEdBQXFCO1dBQTFDQyxNQUFNLGlDQVRSN1M7V0FVRixlQUFJdkMsVUFBWSxPQURab1YsSUFDQXBWLFVBQWtFO1VBQXRFOzs7OztVQUVBO1dBQUlxVixzQkFBUyxPQUFZLG1DQUE2QjtXQUNsREMsV0FEQUQ7VUFFSixnQkFBSXJWO1dBQ0Y7WUFBSWxDLElBSEZ1WDtZQUlFRSxLQUhGRCwrQkFFRXhYO1lBRUEwWCxPQURBRCxlQUFBQTtXQUhGRCxVQUVFeFg7V0F2dENWa0wsa0JBc3RDUWhKLFVBR0V3VjtXQUVHLFNBQTJDOztRQUFBO1lBSXhEQztJQUFrQixXQS90Q2xCek07SUErdENpQyxPQUFBO0dBQStDO1lBRWhGME07SUFDTSxXQXJrQ05qTDtJQXNrQ2EsT0FBQTtHQUFrQztZQUUvQ2tMO0lBQ00sV0F6a0NObEw7SUEwa0NhLE9BQUE7R0FBK0I7T0FFNUNtTDtZQU1BQyxXQUFXN1YsVUFBUzZJO0lBQ2IsSUFBTHpJO2FBQ0kwVixLQUFLak47S0FDWCxpQkFEV0E7VUFDRGtOLFNBRENsTixpQkFDUG1OLE9BVEpKOztVQVNVRyxhQUFOQyxPQURPbk47O01BSVBvTixLQUhNRixlQUhDL1YseUIsT0FFTDhWLEtBQ0lDO0tBRlIzVixZQWh2Q0Y0SSxrQkFzdkMrQiw4QkFEM0JpTixLQUhBRDs7SUFJaUU7SUFML0RGLEtBRmNqTjtJQVN0QixPQVJJekk7R0FTRjtZQUVBOFYsYUFBYzlWO0lBQ2hCLFlBRGdCQTtnQkFFTjtRQUNIdkk7SUFIU3VJO1dBM3ZDZDRJLG9CQTh2Q0tuUjtHQUVtQjtZQUV4QnNlLHVCQUF3QmhCLEdBRTFCLE9BQVcsY0FGZUEsR0FFc0M7Ozs7T0E1MkQ5RHRNOztPQTBuQkFPO09BTkFEO09BUUFFO09BZEFKO09BMU5BSDtPQW9OQUU7T0FuakRBbEs7T0FFQUM7T0FFQUU7T0FFQUU7T0FpZ0VBRTtPQUVBOFQ7O1FBOS9ERTNQO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBSUFFO1FBRkFEO1FBSUFFO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUF0QztRQUVBdUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQTVDO1FBRUFEO1FBRUE4QztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBcEQ7UUFFQXFEO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUF6RTtRQUVBMEU7UUFFQW5NO1FBRUFvTTtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBdEo7T0FPRkM7T0FGQVU7T0FJQUU7T0F5MkRBc1Q7T0FZQUc7T0FuM0RBdFQ7T0E0MURBa1Q7T0FsQkFIO09BTUFDO09BT0FDO1dBOGNFZSxVQXZHQUw7V0EwSEFTO09BNzBCRjdLO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDO09BRUFDOztPQUlBQztPQStxQkE2RjtPQW9FQUM7T0F3SEFFO09BV0FDO09BMEJBQztPQUVBQzs7UUExNEJFdFc7UUFrQkE5RDtRQUVBdVU7UUFvSEFzRDtRQWxIQXJEO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBTUFHO1FBSkFGO1FBRUFDO1FBSUFFO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUFDO1FBRUE5WTtRQUVBK1k7UUFFQUM7UUFFQUM7UUFFQUM7UUFFQTFZO1FBRUFrRjtRQUVBeVQ7UUFFQUM7UUFFQTlQO1FBRUErUDtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUlBRTtRQU9BRTtRQUVBQztRQUVBQztRQUVBQztRQUVBQztRQUVBQztPQWd5QkYyQztPQVlBSztPQU9BQztPQTdEQWpCOztPQXg5R0EzUjtPQWsvR0FrUztPQUVBQztPQUlBQzs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztJRzE5R0EyQjs7OztZQUVBQyxPQUFPMUY7SUFBUyxXQUZoQnlGLE9BRThCLHdCQUF2QnpGO0dBQXNDO1lBRTdDMkYsZUFBZUM7SUFDakI7V0FBTztLQUNGO0lBRzRDO0tBQUEsTUFBQSw2QkFMaENBO0tBS2YsTUFBQTs7SUFGRixPQUFBO0dBRXlFO1lBRXZFQyxjQUFjM1k7SUFDaEI7V0FBTztLQUNGO2FBQ0Q0WSxlQUF5QyxPQUFRLFdBSHJDNVksa0JBRzhDO0lBQ2pDO0tBQUEsS0FBQSw4QkFEekI0WTs7O0dBQ2lEO1lBRW5EQyxhQUFhQztJQUNmO1dBQU87S0FDRjs2Q0FGVUE7R0FHZTs7O1VBbEI1Qk4sUUFFQUMsZ0JBT0FFLGVBTUFFOzs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O1lHL0NBWSxPQUFPemM7SUFBSSw4QkFBMkIsdUJBQS9CQTtHQUFnRTtZQUV2RTBjLGlCQUFpQjFjO0lBQUksOEJBQTJCLHVCQUEvQkE7R0FBaUU7WUFFbEYyYyxpQkFBaUIzYyxHQUFFdEQ7SUFDd0I7V0FBQSxnQ0FBVyw4QkFEbkNBO0lBQ3JCLDhCQUEyQix1QkFEUnNEO0dBQytDO1lBRWhFNGMsb0JBQW9COWQsR0FBRXlCO0lBQ3hCO0tBQThELE1BQUE7SUFBWTtJQUExQyxVQUFBLCtCQURWekIsR0FBRXlCO0lBQ3hCLE9BQUEsdUJBQWlCO0dBQTJEO1lBRTFFc2Msa0JBQWU3YztJQUNqQjtJQUFBO0tBQUE7S0FDNkIsTUFBQSxTQUFTLHVCQUZyQkE7S0FFQSxNQUFBO0lBQUEsT0FBQTtHQUF3RDtZQUV2RThjLFlBQVM5YztJQUNYO0lBQUEsYUFJVStjO0tBQ08sVUFBQSwrQkFEUEE7S0FFSDtJQUFnQjtJQUhsQjtLQUFBLE1BQUEsU0FBUyx1QkFKSC9jO0tBR1QsTUFBQTtJQUFBLE9BQUE7R0FJdUI7WUFJdkJnZCxlQUFlQyxHQUFJLE9BbEJuQkwsb0JBa0JlSyxNQUEyQjtZQUUxQ0MsY0FBY0QsR0FBRTFjO0lBQ2xCO0tBQW1DLE1BQUEsK0JBRG5CMGMsR0FBRTFjO0tBQ0UsTUFBQTtJQUFBLE9BQUE7R0FBbUQ7R0FFckQsSUFBaEI0YztZQUVBQyxXQUFXcGQ7SUFBSSxPQUFBLHVCQUFKQSxXQUZYbWQ7R0FFMEU7WUFFMUVFLG9CQUFpQnJkLEdBQUVzZDtJQUNyQjtJQUNBLE9BQUE7YUFBaUIsdUJBRkV0ZCxnQkFGakJvZCxXQUVtQkU7R0FFOEM7WUFFakVDLGNBQWNDLEtBQUV4ZCxHQUFFc2Q7SUFDcEI7S0FDbUMsUUFGbkJFO0tBQ1pDLFFBRFlEO0tBUVpQLDJCQVJZTyxZQUNaQztJQVFKLE9BQUE7YUFBaUIsdUJBVEN6ZCxXQVFkaWQsR0FkRkcsV0FNa0JFO0dBU2dEO1lBRWxFSTtJQUNGLElBQWlCQyw0QkFBTEMsVUFBSzdlLE1BQUE0ZTtJQUNmO1lBRGU1ZSxLQUNDLE9BRE42ZTtLQUNnQjtNQURYQyxRQUFBOWU7TUFBTCtlLGFBM0NWbEIseUJBMkNlN2QsTUFBTDZlO01BQUFBLE9BQUFFO01BQUsvZSxNQUFBOGU7O0dBR007WUFFckJFLFdBQVEvZDtJQUNWO0lBQytCLFVBQUEsdUJBRnJCQTtJQUVPLE9BUmYwZCxpQkFRZTtHQUFvRDtZQUVuRU0sbUJBQWdCaGUsR0FBRU87SUFDcEI7SUFDK0IsVUFBQSx1QkFGYlAsY0FBRU87SUFFSCxPQVpmbWQsaUJBWWU7R0FBNkQ7R0FJakUsSUFBWE8sV0FqRUF4QjtZQW1FQXlCLE1BQU1sZTtJQUFJLE9BQUE7YUFBaUIsdUJBQXJCQSxXQUZOaWU7R0FFcUY7WUFFckZFLGNBQWNuZSxHQUFJLE9BckVsQnljLE9BbUVBeUIsTUFFY2xlLElBQW9CO1lBRWxDb2Usd0JBQXdCcGUsR0FBSSxPQXJFNUIwYyxpQkFpRUF3QixNQUl3QmxlLElBQThCOzs7O09BdkV0RHljO09BRUFDO09BRUFDO09BK0RBdUI7T0FFQUM7T0FFQUM7T0E3REF2QjtPQUlBQztPQUFBQTtPQVdBRTtPQUVBRTtPQU9BRztPQUlBRTtPQWlCQVE7T0FJQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDdkRKOzs7OztJQUFBOzs7Ozs7O1lBRUlLLGlCQUFlLE1BQUEsMENBQWU7R0FJcEI7SUFBVkMsVUFBVTtJQU1VO1lBTXBCQywyQkFBMkJ2ZTtJQUM3QjtlQUQ2QkE7SUFDN0IsT0FBQSx1QkFBaUI7R0FBeUM7WUFFeER3ZSxVQUFVeGU7SUFBa0M7O09BQUE7U0FYMUIsbUNBSmxCc2UsU0FlVXRlO0lBQUksT0FBQSx1QkFBaUI7R0FBK0M7WUFLOUV5ZSxVQUFZQyxLQUFrQjFlO0lBQ2hDLEdBRGMwZSxTQUFZaEUsTUFBWmdFLFFBQUFDLFlBQVlqRSxjQUFaaUU7SUFDZCxLQURjQTtLQUdULE9BQUE7Y0FBaUIsK0JBQVcsdUJBSEQzZTtJQUVmO0tBcEJIUztPQW9CRztTQUFrQiwrQkFBVyx1QkFGZFQ7SUFsQmQsT0FBQSxtQ0FGaEJzZSxTQUVZN2Q7R0FxQnFDO0dBNkJyRDtJQUFBOztJQVNJbWU7SUFFQUM7WUFHQUMsb0JBQW9COWU7SUFDdEIsSUFBSXdHLDBCQURrQnhHO2FBRWQrZSxJQUFJeGU7S0FDVixJQUFZLElBQUEsT0FBQSxzQ0FIUVAsR0FFVk8sUUFDTnllOzs7OztVQUFBQSxJQUZGeFk7O0tBR1MsSUFBUHlZLE9BQU8sc0NBSlNqZixHQUVWTyxHQUNOeWUsSUFETXplO1lBRFJpRyxLQUVFd1ksUUFDQUMsZUFBQUEsTUFGRUYsSUFDRkM7SUFFNEM7SUFFNUMsSUFHSmxnQixJQVJNaWdCO09BUU5qZ0IsNEJBQUFBO2dCQUFBQTtnQkFGVTs4REFDSTs7SUFDVCxPQUFMQTtHQUFNO1lBR05vZ0IsaUJBQWlCMVk7O0tBQ1M7TUFBU2pCO01BQUhuRDtNQUE2QixPQTVEN0RxYyxhQTREbUNsWjtNQUFvQixPQUFBO01BQWQsT0E1RHpDa1osYUE0RGdDcmM7S0FBdUIsT0FBQTtJQUFrQjtJQUF6RCxXQUFBLGtDQURDb0U7SUFDRCxPQUFBO0dBQTREO1lBRTVFMlksMkJBQTJCbmY7SUFDN0I7S0EvRjJCO09BOEZFQTtTQTlGUSx3QkFBVztLQUFyQixNQUFBO0tBZ0d2Qm9mO2FBRUlMLElBQUkzZCxLQUFJckM7S0FDZCxJQURjOGUsUUFBQTllO0tBQ2Q7YUFEYzhlLE9BRVQsT0FGS3pjO01BSVI7T0FFb0I7ZUFOUnljOzttQkFNOEM3ZDs7WUFDSDthQUFTakU7YUFBSEQ7YUFFekMsT0FuRnRCeWlCLDJCQWlGa0V4aUI7WUFFbkQsV0FuRmZ3aUIsMkJBaUYrRHppQjtXQUVuQztXQXhHbEI7WUFBUnVqQjtjQXFHMERyZjtnQkFyR3ZDO2tCQUFXO1dBQ2xDLFFBRElxZjtZQUMwRDthQUFBLE9Bb0dBcmYsUUFyRzFEcWY7YUFDdUMsV0FvR21CcmYsV0FyRzFEcWY7b0JBQ3VDOzs7V0FxR2dCLE9BQUEsdUNBakd6RGhCO1VBbUc0QjtRQUhOLE9BQUEsb0NBTlJSO1FBS1Y7VUFMRWtCO2dCQU1DLHVDQWhHUFYsa0JBMEZVamQ7O09BS047Ozs7O09BT2dCLElBWk51YyxRQUFBRSxlQUFBQSxRQUFBRjs7O0lBWXdCO0lBRXhDLE9BZFFvQixPQUZKSztHQWdCWTtZQUVkRSxpQkFBaUJ0ZjtJQUFJLE9BcEJyQm1mLDJCQW9CZ0QsdUJBQS9CbmY7R0FBZ0Q7R0FHbkU7SUFERXVmOzs7O0lBS0FDOzs7O1lBSUFDLGlCQUFpQnpmO2lCQXVCWjBmO0tBQ0g7TUFBSXpjLE1BQU0sK0JBRFB5YztNQUVnQyxPQUFBLCtCQUQvQnpjO01BbkZJMGMsY0FvRlksdUNBOUl0QnRCO01BMkRJLFFBQUEsdUJBRE1zQjs7Ozs7Ozs7Ozs7Ozs7WUFvRkpDOzs7V0FBQUE7O01BS0o7T0FBQSx1QkFFbUQsY0FBZ0I7T0FBaEQsT0FBQSwrQkFSZjNjO09BTUE0YztTQW5JTnRCO1dBcUlNO09BRUosdUJBY3dELGNBQWdCO09BQWpELE9BQUEsK0JBeEJuQnRiO09BdUJFO1NBcEpSc2I7V0FxSlU7OEJBSCtDLGNBQWdCO09BQWhELE9BQUEsK0JBckJuQnRiO09Bb0JFO1NBM0VSa2M7V0E0RVU7T0FKTSxPQXhGaEJMLG9CQTZFTWU7OEJBVXNELGNBQWdCO09BQWhELE9BQUEsK0JBaEJ0QjVjO09BSUFqRDtTQVdJLHVCQUNHOzs4QkFaUEE7WUFBSyxtQkFBTEE7WUFIQTRmO09BVzRDLE9BQUEsK0JBWjVDM2M7T0FVQTZjOztVQXZJTnZCO1lBeUltQyx1Q0F6Sm5DRjs7O1VBbUpNd0I7OztPQXFCSixPQTFCSUQsVUFTQUUsV0FBQUE7TUFpQko7O0tBMUdzQixNQUFBO0lBMEdvQjs7a0JBNUNuQ0o7TUFDSDtPQUFJemMsTUFBTSwrQkFEUHljO09BR3lDLE9BQUEsK0JBRnhDemM7T0FDQTRjO1NBOUdWdEI7V0ErR21DLHVDQS9IbkNGO01BaUlNLHFCQVMwRCxjQUFnQjtNQUFoRDtPQUFBLE9BQUEsK0JBYnRCcGI7T0FZSztTQUFBLHVCQUNFOzJCQUgrQyxjQUFnQjtNQUFoRDtPQUFBLE9BQUEsK0JBVnRCQTtPQVNLO1NBaERma2M7V0FpRGlCO01BTlg7c0JBM0ROTCxvQkF3RFVlLFdBQUFBO0tBYUc7eUJBaEJFLFNBQUk7S0FEZixVQVRKTCxhQUlpQnhmO0tBT2IsT0FBQTtJQWVVO0lBcEJkLFVBWEF1ZixZQVNpQnZmO0lBdUJqQixPQUFBO0dBNEI2QztZQUU3QytmLGNBQWMvZjtJQUFJLE9BckRsQnlmLGlCQXFEbUMsdUJBQXJCemY7R0FBc0M7WUFFcERnZ0I7SUFBZ0I7Ozs7UUFnQkVDO1FBRENDO1FBRExDO1FBREFDO1FBREFDOytCQUlJSjtRQWdCSDtTQUFBLE1BcExmeEIsYUFvS2tCd0I7ZUFnQlQ7OztVQWpCVUM7UUFhRjtTQUFBLE1BckhqQmhCLGlCQXdHbUJnQjtlQWFSOzs7T0FGUDtRQUFBLE1BQUE7dUJBRGlDcGtCLEdBQUssT0E3SzFDMmlCLGFBNktxQzNpQixHQUFnQjtRQUEvQixNQUFBLGlDQVhScWtCO1FBV1YsTUFBQTtRQUFBLE1BQUE7UUFEQSxNQUFBO2lCQVhVQzs7O1FBVUc7U0FBQSxNQUFBLHVCQVZIQTtlQVVIO09BRlA7UUFBQSxNQUFBO1FBREEsTUF4S0ozQixhQWdLYzRCO1FBUVYsTUFBQTtPQUFBLE9BQUE7Ozs7UUFrQmNDO1FBRENDO1FBRExDO1FBREFDO1FBREFDOytCQUlJSjtRQWdCSDtTQUFBLE1BMU1mN0IsYUEwTGtCNkI7ZUFnQlQ7OztVQWpCVUM7UUFhRjtTQUFBLE1BM0lqQnJCLGlCQThIbUJxQjtlQWFSOzs7T0FGUDtRQUFBLE1BQUE7dUJBRGlDemtCLEdBQUssT0FuTTFDMmlCLGFBbU1xQzNpQixHQUFnQjtRQUEvQixNQUFBLGlDQVhSMGtCO1FBV1YsTUFBQTtRQUFBLE1BQUE7UUFEQSxNQUFBO2tCQVhVQzs7O1FBVUc7U0FBQSxNQUFBLHVCQVZIQTtlQVVIO09BRlA7UUFBQSxNQUFBO1FBREEsTUE5TEpoQyxhQXNMY2lDO1FBUVYsTUFBQTtPQUFBLE9BQUE7Ozs7UUF6Q3NEQztRQUFwQkM7UUFBckJDOytCQUF5Q0Y7UUFTM0M7U0FBQSxNQTlKZmxDLGFBcUowRGtDO2VBU2pEOzs7VUFUNkJDO1FBS3JCO1NBQUEsTUEvRmpCMUIsaUJBMEZzQzBCO2VBSzNCOzs7T0FGUDtRQUFBLE1BQUE7dUJBRGlDOWtCLEdBQUssT0F2SjFDMmlCLGFBdUpxQzNpQixHQUFnQjtRQUEvQixNQUFBLGlDQUZMK2tCO1FBRWIsTUFBQTtRQUFBLE1BQUE7T0FBQSxPQUFBOztHQW1EdUI7R0FJVDs7SUFBQSxNQUFBO0dBQWYsR0FBQTs7OztnQ0EyQm1CLFNBQUU7Z0NBRkQsU0FBRTsyQkFGTCxTQUFFOzs7Ozs7Ozs7Ozs7Ozs7R0FPYjtJQUFQUixPQXBQRjlCO0lBc1BFdUMsV0F0UEZ2QztHQTBQRTtJQUFJO0tBQUEsVUFBSyxtQkFBZTtLQUZ4QjZCOzs7OztRQUFBQTs7R0FLYztJQUFkVyxjQTdQRnhDO0lBK1BFNEIsT0F6TUZyQixvQkF1TUVpQztJQU1JLE1BQVUsaUNBQ1I7SUFITkMsY0EzTEY3QjtZQWlNRThCO0lBQ00sSUFBSmpoQixJQUFJO1dBQ1Isc0JBRElBO0tBQ2lDLFVBQUEsd0JBRGpDQTtLQUNzQixHQUFBO01BRGxCLE9BQUE7O2VBQUpBOztxQ0FBQUE7O0lBR0MsT0FIREE7R0FHRTtZQUVKa2hCLGFBQWFsaEI7SUFBZ0IsVUFBQSx1QkFBaEJBOztHQUErQjtZQUU1Q2hELFdBQVMsT0ExS1h5aUIsMkJBMEtvQztZQUVsQ25hLElBQUk2YjtJQUFnQixVQUFBLHVCQXJIdEJuQixjQXFITW1COztHQUErQztHQUV2QztJQUFaQyxZQW5SRjdDOzs7T0FHQUM7T0FLQUM7T0F5Q0FHO09BRUFDO09BR0FDO09BYUFJO09BdUJBSTtPQWdFQVM7T0FFQUM7O1FBd0ZFSztRQUlBRDtRQUZBVTtRQU9BQztRQUVBWjtRQUVBYTtRQU1BQztRQU1BQztRQUVBbGtCO1FBRUFzSTtRQUVBOGI7OztFOzs7Ozs7OztHOzs7Ozs7OztZRS9RRmEscUNBQWdFLFVBQWtCO21DQU1sRkM7WUFGQWxHO0lBQWtCLE9BRkQsaUNBSWpCa0c7R0FGK0M7WUFTL0NDLFFBQ0VDLE1BQ0ExbEIsR0FDQTJsQjtJQUVNLElBQU5DLFVBWkZKLGVBWThCLDhCQUg1QnhsQjtJQUlKLEdBSEkybEI7S0FNVyxZQU5YQSxRQU1XOztLQUpYQyxZQUpBRjs7O0tBSUFFLFlBSkFGO0lBTU0sT0FGTkU7R0FPRDs7OztPQXpCREw7T0FNQUM7T0FGQWxHO09BU0FtRzs7OztFOzs7Ozs7R1MrRFU7O0lBQVZtTSxVQUFVOzhCQUFWQTs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZSWxIQWEsVUFBVUMsR0FBRUM7SUFBSSxPQUFZLDZCQUFsQkQsR0FBa0IsaUJBQWhCQztHQUE0QjtZQUV4Q0MsVUFBVUYsR0FBRUM7SUFBSSxPQUFBLG1CQUFNLDZCQUFaRCxHQUFFQztHQUF5QjtZQUVyQ0UsUUFBUUY7SUFBSSxPQUFpQiw0QkFBQSxpQkFBckJBO0dBQStCO1lBRXZDRyxRQUFRQztJQUFJLE9BQUEsbUJBQVMsNkJBQWJBO0dBQStCO1lBRXZDQyxTQUFTTixHQUFFQztJQUFxQixVQVJoQ0YsVUFRU0MsR0FBRUM7SUFBcUIsT0FBQTtHQUFhO1lBRTdDTSxTQUFTUCxHQUFFQztJQUFJLE9BUmZDLFVBUVNGLEdBQXFCLDZCQUFuQkM7R0FBa0M7WUFFN0NPLE9BQU9SO0k7UUFBc0NTO0lBQVMsT0FBQSxnQkFBQSxXQUEvQ1QsR0FBc0NTOztZQUU3Q0MsVUFBVVYsR0FBRVM7SUFDUixZQUFBLHVCQURRQTtnQkFDd0I7UUFBWUU7SUFBSyxXQUFLLFdBRGhEWCxHQUNzQ1c7R0FBZTtZQUUvREMsV0FBV0MsS0FBSWIsR0FBRVM7SUFDYixZQUFBLHVCQURhQTtnQkFDbUIsT0FEekJJO1FBQ29DRjtJQUFLLE9BQUEsV0FEckNYLEdBQ2dDVztHQUFRO1lBRXZERyxTQUFTRCxLQUFJSjtJQUFVLFlBQUEsdUJBQVZBO2dCQUEwQyxPQUE5Q0k7UUFBeURGO0lBQUssT0FBTEE7R0FBTTtZQUV4RUksUUFBUWYsR0FBRVM7SUFDTixZQUFBLHVCQURNQTs7UUFDMkNFO0lBQVMsT0FBQSxnQkFBQSxXQUR0RFgsR0FDNkNXO0dBQWM7WUFFbkVLLE9BQU9oQixHQUFFUztJQUNMLFlBQUEsb0JBREtBO2dCQUN3QjtRQUFZRTtJQUFLLFdBQUssV0FEaERYLEdBQ3NDVztHQUFlO1lBRTVETSxJQUFJakI7STtRQUFpQ1M7SUFBVSxPQUFBLGlCQUFBLFdBQTNDVCxHQUFpQ1M7O1lBRXJDUyxRQUFRbEIsR0FBRVM7SUFDTixZQUFBLG9CQURNQTs7UUFDbUNFO0lBQVUsT0FBQSxpQkFBQSxXQUQvQ1gsR0FDcUNXO0dBQWU7WUFFNURRLE9BQU9DLEdBQUksa0NBQUpBLEdBQTBCO1lBRWpDQyxRQUFRQztJQUFJLGtDQUFxQix3QkFBekJBO0dBQW1DO1lBRTNDQyxJQUFJQztJQUNOO2lCQUNPQTtLQUFRLE9BTmJMLE9BTW9CLHdCQUFRO0lBQWdDO0lBRDlELE9BQUEseUNBRE1LO0dBR29CO1lBRXhCQyxnQkFBZ0JIO0lBQUksd0JBQW9CLHdCQUF4QkE7R0FBa0M7WUFDbERJLFVBQVUxQixHQUVWMkI7SSxHQUFBQTtLQUFZLE9BQUE7Y0FGRjNCLEdBRFZ5QixnQkFHK0IsK0JBQS9CRTtRQURhQyxJQUNiRDtJQURvQixPQUFBLFdBRFYzQixHQUNVLHlCQUFQNEI7O0dBS0csSUFBZEMsZUFFQUM7WUFLQUMsUUFBU3RCO0lBQW1CLFVBQW5CQSxNQUxUcUIsbUNBS1NyQixLQVBUb0I7SUFPOEM7R0FBZ0I7WUFDOURHLElBQU1mO0ksR0FBQUEsU0FBS2dCLE1BQUxoQixRQUFBaUIsT0FBS0QsY0FBTEMsT0FOTko7b0JBTWtDOUIsR0FDcEMsT0FGRStCLGFBQ01HLGtCQUE0QmxDLE1BQ2E7O1lBQy9DbUMsS0FBT2xCO0ksR0FBQUEsU0FBS2dCLE1BQUxoQixRQUFBaUIsT0FBS0QsY0FBTEMsT0FSUEo7b0JBUW1DOUIsR0FDckMsT0FKRStCLGFBR09HLGtCQUE0QmxDLE1BQ0c7O1lBQ3RDb0MsS0FBTTNCLEdBQW1CLFdBTHpCc0IsUUFLTXRCLEdBQWtDO1lBQ3hDNEIsS0FBTTVCLEdBQVdUO0lBQWdDLGNBTmpEK0IsUUFNTXRCO2lCQUE0RCxXQUFqRFQsR0FBWFM7R0FBd0U7WUFDOUU2QixPQUFNN0IsR0FBV1QsR0FBaUJ1QztJQUFxQixPQVB2RFIsUUFPTXRCLEtBQW1FLFdBQXhEVCxRQUFrRSxXQUFqRHVDLEdBQTVCOUI7R0FBeUY7WUFDL0YrQixJQUFLL0IsR0FBV1QsR0FBdUIsT0FSdkMrQixRQVFLdEIsS0FBb0QsV0FBekNULFFBQVhTLEVBQXdFO1lBQzdFZ0MsT0FBU3hCO0ksR0FBQUEsU0FBS2dCLE1BQUxoQixRQUFBaUIsT0FBS0QsY0FBTEMsT0FkVEo7SUFja0QsUUFDMUMsT0FEQ0k7UUFFSnZCO0lBQUssT0FBTEE7O1lBQ0wrQixVQUFXakM7SUFBd0IsYUFBNkJBLEdBQUssV0FBTEEsR0FBVztJQUFoQixPQUwzRDZCLE9BS1c3QixtQkFBMEMsU0FBSTtHQUFtQjtZQUM1RWtDLEtBQU8xQjtJLEdBQUFBLFNBQUtnQixNQUFMaEIsUUFBQWlCLE9BQUtELGNBQUxDLE9BbEJQSjtJQWtCcUU7S0FBQSxZQUFBLE9BQTlESTtTQUVGekI7S0FBSyxPQUFBLGNBQUxBLEdBQWlCOztZQUN0Qm1DLFFBQVM1QyxHQUFlUztpQkFBcURBLEdBQUssV0FBSyxXQUE5RVQsR0FBb0VTLElBQWU7SUFBcEIsT0FUeEU2QixPQVN3QjdCLG1CQUEwQyxTQUFJO0dBQXVCO0dBekJyRjs7O09BRVJvQjtPQUVBQztPQUtBQztPQUNBQztPQUVBRztPQUVBQztPQUNBQztPQUNBQztPQUNBRTtPQUNBQztPQUdBQztPQUNBQztPQUdBQztZQU1FQztJQUFrQjtJQUFBOztTQUVqQkMsZ0JBQUxDO1FBQWdCLHVCQUFoQkEsSUFBOEUsT0FBOUVBO21CQUFLRDs7R0FBMEU7WUFFL0VFLFlBQVkzQztJQUFJLE9BSlp3QyxnQkFJNEIsdUNBQXBCeEM7R0FBOEM7dUJBRTFENEM7WUFDQUMsT0FBUUMsSUFBV0MsSUFBWSxPQUQvQkgsaUJBQ1FFLElBQVdDLElBQW1EO1lBQ3RFQyxZQUFZaEQ7SUFBSSxPQUFjO2FBRjlCNEMsdUJBRW1FLDZCQUF2RDVDO0dBQXlFO1lBRXJGaUQsaUJBQWlCbEM7SUFDUixJQUFQbUMsT0FBTyx3QkFEUW5DO1dBQ2ZtQzthQUNVO3dCQUFvQkM7Z0JBQzlCO2lCQUFvQixNQUhMcEMsRUFFZW9DO2lCQUN2QixVQUFBO29DQUhRcEMsRUFFZW9DO2dCQUNhO2VBQWlCO0dBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EzRmhFekQ7T0FFQUc7T0FFQUM7T0FFQUM7T0FFQUU7T0FFQUM7T0FFQUM7T0FFQUU7T0FHQUU7T0FHQUU7T0FFQUM7T0FHQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FFQUU7T0FFQUU7T0FLQUU7T0FDQUM7O09BbUNJbUI7T0FJSkc7T0FFQUM7T0FDQUM7T0FDQUc7T0FFQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O1lNaEZBZ0k7SUFBYzs7T0FDRjs7T0FDQztlQUNJOztHQUFzQjtZQUV2Q0M7SUFBbUI7O09BQ1g7O09BQ0E7O09BQ007ZUFDQTs7R0FBbUI7R0FFUSxJQUF6Q0MsMkJBQ0FDO1lBRUFDLFdBQVcsaUJBQVU7WUFFckJDLEtBQU1DLE9BQU9DLFVBQVNDO0lBQ3hCOzRCQUR3QkE7OztlQUFBQTs7OENBQUFBOytDQUFBQTs7S0FHTDs7aUJBQWVDO1NBQUssT0FBQTsyQkFBbUJDLEdBQU0sT0FBRSxXQUFoQ0QsY0FBMEM7UUFBQztNQUExRCxLQUFBLHFDQUhKRjs7S0FJRTs7aUJBQWVFO1NBQUssT0FBQSwrQkFBbUJDLEdBQU0sT0FBekIsV0FBTEQsT0FBaUM7UUFBQztNQUFqRCxLQUFBLHFDQUpUSDs7S0FJTjs7VUFDR0s7U0FBQUMsMEJBQUFEO0tBQ0gsS0FOTUwsT0FNbUIsTUFBQSw0QkFEdEJNO1NBQ3VDSCxJQU5wQ0gseUJBTXdESSxHQUFLLE9BQUEsV0FBekJELEdBQW9CQyxHQUF3QjtLQUF2QyxPQUFBLDhCQUQ1Q0U7O0dBQ3dGO1lBRTNGQyxNQUFPUCxPQUFPQyxVQUFTTyxHQUFFTjtJQUMzQjs0QkFEMkJBOzs7ZUFBQUE7OzhDQUFBQTsrQ0FBQUE7O0tBR1I7O2lCQUFlQztTQUFLLE9BQUE7MkJBQW1CQyxHQUFNLE9BQUUsV0FBaENELEdBQWdDLFdBSHpDSyxlQUd3RDtRQUFDO01BQS9ELEtBQUEscUNBSEhQOztLQUlDOztpQkFBZUU7U0FBSyxPQUFBLCtCQUFtQkMsR0FBTSxPQUF6QixXQUFMRCxPQUFpQztRQUFDO01BQWpELEtBQUEscUNBSlJIOztLQUlQOztVQUNHSztTQUFBQywwQkFBQUQ7S0FDSCxLQU5PTCxPQU1rQixNQUFBLDRCQUR0Qk07U0FDdUNILElBTm5DSCx5QkFNdURJLEdBQUssT0FBQSxXQUF6QkQsR0FBb0JDLEdBQXdCO0tBQXZDLE9BQUEsOEJBRDVDRTs7R0FDd0Y7WUFFM0ZHLHNCQUFpRCwyQ0FHcEQ7WUFFR0MsT0FBUUMsU0FBU1gsT0FBT1ksU0FBUUMsTUFBS1o7SUFDdkM7S0FBSUo7S0FDQUs7OztTLE9BREFMO2tCQUMyQix3QkFGR2dCO2tCQUVXLGdDQUZuQkQ7O0lBckJ4QmIsS0FxQmlCQyxXQUFvQkMsV0FFbkNDOzJCQUFBQTs7O2VBQUFBOzs4Q0FBQUE7K0NBQUFBOztpQkFJYVk7S0FBSyxPQUFBO3VCQUFtQlY7ZUFDbkMsSUFBSVcsSUFaUk4saUJBV3VDTCxJQUUvQlk7ZUFDSixPQUFBLFdBSFdGLEdBRVBFLElBREFEO2NBRUU7SUFBQztJQUhYLFVBQUEscUNBTlFKOztHQVNZO1lBRXBCTSxpQkFBbUMsdUJBQWU7WUFFbERDO0lBRWtCO0tBRldDO0tBQVZDO0tBRUQsTUFBQSxtREFGV0Q7O1lBQ2pCLHlEQURPQzs7O1lBS25CQyxhQUFjQyxTQUFTTixJQUFvQkg7SUFDN0MsT0FEeUJHO2FBRUgsd0JBRnVCSDthQUVULGdDQVBsQ0ssbUJBS2NJO0dBRXlEO1lBRXZFQyxVQUFXQyxNQUFNUixJQUFvQkg7SUFDdkM7S0FBbUQsTUFBQSxnQ0E1RGpEbkIsYUEyRFc4QjtLQUNUQztPQURlVDtTQUNNLCtCQUFVLHdCQURJSDtXQUNuQ1ksZUFDNkIsd0JBRk1aO0dBRU87O2FBTzFDYSxPQUFRSixTQUFRTixJQUFHSDtLQUNyQixPQWRBUSxhQWFVQyxTQUFRTixJQUFHSDtJQUNRO2FBRTNCYyxNQUFPSCxNQUFLUixJQUFHSCxNQUNqQixPQWJBVSxVQVlTQyxNQUFLUixJQUFHSCxNQUNNO2FBRXJCZSxJQUFLM0IsVUFBVUQsT0FBTzZCLEtBQUtDLElBQWFDO0tBQ0g7Ozs7VUFBcUIsVUFBQSxzQ0FEcENGO2lCQUFLQyxPQUNtQixpQkFETkM7O1lBbEQxQ3hCLE1Ba0RpQlAsT0FBVkM7SUFDNkU7YUFFbEYrQixJQUFLL0IsVUFBVUQsT0FBTzZCLEtBQUtDLElBQWFDO0tBQzFDLE9BOURBaEM7Y0E2RGlCQztjQUFWQzs7O2dCQUM0QyxVQUFBLHNDQUQzQjRCO3VCQUFLQyxPQUNVLGlCQURHQzs7SUFDaUM7YUFFekVFLE1BQU9DLFFBQVFDLFFBQVFDLE9BQU9DO0tBQ08sSUFBbkN6QztLQUNKLEtBRnlCd0M7V0FBT0M7T0FHaEIsTUFBQTtNQUk4QjtPQURqQ0MsVUFObUJEO09BT2MsTUFBQSxtREFQN0JGO01BT2YsV0FORXZDLHVCQU0wQixpQkFEakIwQzs7U0FGTkMsVUFKa0JIO1FBQU9DO01BV0E7T0FIYkcsVUFSYUg7T0FXQSxNQUFBLG1EQVhmRjtPQVdULE1BQUEsbURBWENEO09BVWUsTUFBQSxpQkFGTE07TUFDakIsV0FSRTVDLGtCQVNJLGlCQU5EMkM7O0tBQ3VDLFVBQUEsbURBTHJDTDtLQUtQLFdBSkV0Qyx1QkFJMEIsaUJBRHZCMkM7SUFPaUQ7YUFFdERFLE1BQU96QyxPQUFPNkIsS0FBS0MsSUFBYTdCO0tBQ2xDLEtBRGdCNEI7YUE3RWhCOUI7ZUE2RVNDO21CQUF5QkM7bUMsT0FBYjZCO2lCQUFMRDs7VUFHTmE7YUFoRlYzQztlQTZFU0M7bUJBQXlCQztxQyxPQUFiNkIsU0FHOEMsaUJBQXpEWTs7U0FDQ3hDO1lBakZYSDtjQTZFU0MsV0FBeUJDLCtCLE9BQWI2QixTQUlWNUI7SUFBa0U7YUFFM0V5QyxJQUFLM0MsT0FBTzhCLElBQXFDN0IsVUFBK0J5QztjQUM5RUUsTUFBTUM7TUFBVyxZQUFBLDZCQUFYQTtrQkFDRTtVQUNIQztNQUFNLFdBQUssaUJBQVhBO0tBQXVCO0tBQ2hDLFNBSmtGSjtVQUs5RWIsTUFMOEVhO2FBM0VsRm5DO2VBMkVPUDttQkFBNENDO2VBQy9DMkM7cUMsT0FEVWQsT0FLMkMsaUJBQXJERDs7U0FDQ0ksUUFONkVTO1lBM0VsRm5DO2NBMkVPUDtrQkFBNENDO2NBQy9DMkM7a0MsT0FEVWQsT0FNVEc7SUFBbUU7YUFFdEVjLFFBQVMvQyxPQUFPNkIsS0FBS1ksT0FBT1gsSUFBcUM3QjtLQUNuRSxLQURrQjRCO01BRTBDOzs7O1dBQTJCLFVBQUEsZ0NBRmhFWTtrQkFBT1g7O2FBbkY5QnZCLE1BbUZXUCxXQUF3REMsV0FFbEM7O2lCQUZmNEI7O01BR2dEO09BQXhEYTtPQUF3RDs7O1dBQW1DLFVBQUEsZ0NBSDlFRDtrQkFBT1gsVUFHMEQsaUJBQTlFWTs7YUF0RlZuQyxNQW1GV1AsV0FBd0RDLFdBRzVCOztLQUM0QjtNQUF4REM7TUFBd0Q7OztVLE9BSnJDNEIsVUFJbkI1QixHQUF1RixnQ0FKM0V1Qzs7WUFuRnZCbEMsTUFtRldQLFdBQXdEQyxXQUkzQjtJQUE4RTthQUVwSCtDLFFBQVNoRCxPQUFPOEIsSUFBa0M3QixVQUErQnlDO2NBQy9FRSxNQUFNQztNQUFXLFlBQUEsNkJBQVhBO2tCQUNFO1VBQ0hDO01BQU0sV0FBSyxpQkFBWEE7S0FBdUI7S0FDaEMsU0FKbUZKO1VBSy9FYixNQUwrRWE7YUF6Rm5GbkM7ZUF5RldQO21CQUF5Q0M7ZUFDaEQyQzs7Z0MsT0FEY2QsVUFLMEMsaUJBQXhERDs7U0FDQ0ksUUFOOEVTO1lBekZuRm5DO2NBeUZXUDtrQkFBeUNDO2NBQ2hEMkM7a0MsT0FEY2QsVUFNYkc7SUFBc0U7YUFFekVnQixhQUFjakQsT0FBTzZCLEtBQUtZLE9BQU9YLElBQWtDN0I7S0FDckUsS0FEdUI0QjtNQUVxQzs7OztXQUErQixVQUFBLGdDQUYvRFk7a0JBQU9YOzthQWpHbkN2QixNQWlHZ0JQLFdBQXFEQyxXQUVwQzs7aUJBRlY0Qjs7TUFHMkM7T0FBeERhO09BQXdEOzs7V0FBdUMsVUFBQSxnQ0FIN0VEO2tCQUFPWCxjQUd5RCxpQkFBbEZZOzthQXBHVm5DLE1BaUdnQlAsV0FBcURDLFdBRzlCOztLQUM0QjtNQUF4REM7TUFBd0Q7OztVLE9BSmhDNEIsY0FJeEI1QixHQUEyRixnQ0FKMUV1Qzs7WUFqRzVCbEMsTUFpR2dCUCxXQUFxREMsV0FJN0I7SUFBa0Y7YUFFeEhpRCxTQUFRakQsVUFBVUQsT0FBTzhCO0s7VUFDdkJEO2FBaEhKOUI7ZUErR29CQztlQUFWQzs7Z0MsT0FBaUI2QixVQUMwQixpQkFBakREOztTQUNDSTtZQWpITGxDO2NBK0dvQkMsT0FBVkMsOEIsT0FBaUI2QixVQUV0Qkc7O2FBRUhrQixLQUFNbkQsT0FBTzZCLEtBQUt1QixXQUFXdEIsSUFDNUIzQjtjQUNDRixTQUFTb0Q7TUFDTCxZQUFBLDZCQURLQTtrQkFFRDtNQUVGO09BRERDO09BQ0MsVUFBQSxtQ0FEREE7MkJBQUFBO1VBRUVaO01BQ0wsV0FQSHZDLEdBTVF1QyxHQUNELGlCQUhEWTthQUFBQTtLQUsrQjtLQUN4QyxLQVhlekI7YUFuSGY5QjtlQW1IUUM7bUJBRUpDOzs7aUJBV2tDOztvQkFBQSxnQ0EzSXRDTixrQkE4SG9CeUQ7d0JBQVd0Qjs7aUJBQWhCRDs7VUFjTGE7YUFqSVYzQztlQW1IUUM7bUJBRUpDOzs7aUJBYTBDOztvQkFBQSxnQ0E3STlDTixrQkE4SG9CeUQ7d0JBQVd0QixjQWVFLGlCQUR2Qlk7OztTQUVDeEM7WUFuSVhIO2NBbUhRQztrQkFFSkM7OztnQixPQUYyQjZCO3lCQWdCcEI1Qjt5QkFDK0IsZ0NBL0kxQ1Asa0JBOEhvQnlEOztJQWlCNkQ7YUFFL0VHLEtBQU12RCxPQUFPNkIsS0FBS3VCLFdBQVd0QixJQUM1QjNCLEdBQTZCcUQsT0FBYXZEO0tBQ25DLElBQU53RCxVQUQ0QkQ7Y0FFNUJFLFdBQVNMO01BQ0wsWUFBQSw2QkFES0E7a0JBQWIsT0FBQSxXQUY2Q3BELFVBQ3pDd0Q7TUFLTTtPQURERTtPQUNDLFVBQUEsbUNBRERBOzJCQUFBQTtNQUdILElBREtqQixnQkFDTCxNQVBGZTtNQUFBQSxTQU9TLFdBUlZ0RCxHQU9RdUMsR0FDTSxpQkFIUmlCO2FBQUFBO0tBSytCO0tBQ3hDLEtBWmU5QjthQXRJZjlCO2VBc0lRQzttQkFHSjBEOzs7aUJBV2tDOztvQkFBQSxnQ0EvSnRDL0Qsa0JBaUpvQnlEO3dCQUFXdEI7O2lCQUFoQkQ7O1VBZUxhO2FBckpWM0M7ZUFzSVFDO21CQUdKMEQ7OztpQkFhMEM7O29CQUFBLGdDQWpLOUMvRCxrQkFpSm9CeUQ7d0JBQVd0QixjQWdCRSxpQkFEdkJZOzs7U0FFQ3hDO1lBdkpYSDtjQXNJUUM7a0JBR0owRDs7O2dCLE9BSDJCNUI7eUJBaUJwQjVCO3lCQUMrQixnQ0FuSzFDUCxrQkFpSm9CeUQ7O0lBa0I2RDthQUUvRVEsVUFBVzVELE9BQU82QixLQUFLdUIsV0FBV3RCLElBQ2pDM0I7Y0FDQ0YsU0FBU29EO01BQ0wsWUFBQSw2QkFES0E7a0JBRUQ7TUFFRjtPQUREUTtPQUNDLFVBQUEsbUNBRERBOzJCQUFBQTtVQUVFbkI7TUFDTCxXQVBIdkMsR0FNUXVDO2FBRkZtQjtLQUsrQjtLQUN4QyxLQVhvQmhDO2FBMUpwQjlCO2VBMEphQzttQkFFVEM7OztpQkFXcUM7O29CQUFBLGdDQWxMekNOLGtCQXFLeUJ5RDt3QkFBV3RCOztpQkFBaEJEOztVQWNWYTthQXhLVjNDO2VBMEphQzttQkFFVEM7OztpQkFhNkM7O29CQUFBLGdDQXBMakROLGtCQXFLeUJ5RDt3QkFBV3RCLGlCQWVBLGlCQUQxQlk7OztTQUVDeEM7WUExS1hIO2NBMEphQztrQkFFVEM7OztnQixPQUZnQzZCO3lCQWdCekI1Qjt5QkFDa0MsZ0NBdEw3Q1Asa0JBcUt5QnlEOztJQWlCMkQ7YUFFbEZVLFVBQVc5RCxPQUFPNkIsS0FBS3VCLFdBQVd0QixJQUNqQzNCLEdBQXNCcUQsT0FBYXZEO0tBQzVCLElBQU53RCxVQURxQkQ7Y0FFckJFLFdBQVNMO01BQ0wsWUFBQSw2QkFES0E7a0JBQWIsT0FBQSxXQUZzQ3BELFVBQ2xDd0Q7TUFLTTtPQURETTtPQUNDLFVBQUEsbUNBRERBOzJCQUFBQTtVQUVFckI7TUFOUGUsU0FPUyxXQVJWdEQsR0FPUXVDLEdBTlBlO2FBSUtNO0tBSytCO0tBQ3hDLEtBWm9CbEM7YUE3S3BCOUI7ZUE2S2FDO21CQUdUMEQ7OztpQkFXcUM7O29CQUFBLGdDQXRNekMvRCxrQkF3THlCeUQ7d0JBQVd0Qjs7aUJBQWhCRDs7VUFlVmE7YUE1TFYzQztlQTZLYUM7bUJBR1QwRDs7O2lCQWE2Qzs7b0JBQUEsZ0NBeE1qRC9ELGtCQXdMeUJ5RDt3QkFBV3RCLGlCQWdCQSxpQkFEMUJZOzs7U0FFQ3hDO1lBOUxYSDtjQTZLYUM7a0JBR1QwRDs7O2dCLE9BSGdDNUI7eUJBaUJ6QjVCO3lCQUNrQyxnQ0ExTTdDUCxrQkF3THlCeUQ7O0lBa0IyRDthQUVsRlksTUFBT2hFLE9BQU9DLFVBQVU2QjtLQUNtQiw4QixPQURuQkE7WUF6TDFCdkIsTUF5TFNQLE9BQU9DLDBCQUNpQixTQUFFO0lBQW1CO2FBRXBEZ0U7S0FHVztNQUhnQ0M7TUFBYkM7TUFBUkM7TUFHWCxNQUFBLG1EQUhnQ0Y7TUFFNUIsTUFBQSxtREFGZUM7O2FBQ25CLG1EQURXQzs7OzthQU10QkMsYUFBYy9DLFNBQVNRLElBQW9DakIsTUFBS087S0FDcEQ7TUFBVmtEO1FBQVUsZ0NBUFpMLHNCQU1jM0M7WUFBU1E7Y0FFVCx3QkFGNkNqQjtjQUUvQix3QkFGb0NPO2NBQzlEa0Q7SUFDbUQ7YUFFckRDLGFBQWN6QyxJQUFvQ2pCO0tBQXBDaUIsZUFDVSx3QkFEMEJqQjtLQUMxQztJQUE2QjthQUVyQzJELFVBQVcxQyxJQUFvQ2pCO0tBQ2pELE9BRGFpQixTQUNILHdCQUR1Q2pCO0lBQzFCO0lBbktZO1lBS2pDYTtZQUdBQztZQUdBQztZQUdBSTtZQUdBQztZQWFBUTtZQU1BRTtZQVFBSTtZQU1BQztZQVFBQztZQU1BQztZQUlBQztZQW1CQUk7WUFvQkFLO1lBbUJBRTtZQW9CQUU7WUFHQUM7WUFNQUk7WUFJQUU7WUFHQUM7OzthQVFBQyxNQUFNMUMsR0FBSSxPQUFKQSxFQUFLO2FBQ1hhLE1BQU1iLEdBQUksT0FBSkEsRUFBSztJQUo4RCxXQUd6RTBDLE9BQ0E3Qjs7R0FLb0U7O0lBR3BFNkI7SUFDQTdCO0lBSm9FLGVBR3BFNkIsT0FDQTdCO1lBTUE4QixRQUFNM0MsR0FBSSxPQUFKQSxFQUFxQjtZQUMzQjRDLFFBQU01QyxHQUFJLE9BQUpBLEVBQXFCO0dBSnFDLG1CQUdoRTJDLFNBQ0FDO1lBTUFDLFFBQU03QztJQUE4QixVQUFBLG1CQUFhLHdCQUEzQ0E7SUFBSTtHQUFrRDtZQUM1RDhDLFFBQU05QyxHQUFJLE9BQUEsd0JBQUpBLG9CQUErQjtHQUp3QjtJQUFBLGFBRzdENkMsU0FDQUM7OztPQWpRRm5GO09BS0FDO09BTUFDO09BQ0FDO09BRUFDO09BRUFDO09BUUFRO09BUUFFO09BS0FDO09BV0FPO09BRUFDO09BS0FHO09BSUFFOzs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHOztJOzs7Ozs7O0s7O0k7RztHLFc7OEIsTyxtQzs7SSxXO0ksTywrQjtHO3lCLHVCLFcsUzs7SSxJLEk7O0ssVztLLHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCLE87O1E7OztRLE87O1Esc0M7USxROzs7O1E7Ozs7UTs7O2dCOzs7Rzs7STtJOzs7Ozs7Ozs7Ozs0Qjs7O1EsTzs7NEI7OztROzs7USxrQixPOztROztRLHNDO1E7Ozs7Ozs7Ozs7OztHOztJO0k7Ozs7OztTLG1DO1M7O1MsbUM7Uzs7UyxrQixPOztTOzs7O0c7eUI7NkI7O0k7Ozs7Ozs7OztLOztNO0ssTzs7SSxNO0c7RyxJLEk7O0ksc0M7STs7OztHO0ksa0I7Ozs7STtLLFc7SztLO0s7SztLOztLO007OztRLFk7UTs7Ozs7OztLLEk7Szs7O0k7O0s7SztLO0k7O0s7SztLO0k7O0ssSSxVLHdDOzs7OztpQjs7TTs7STs7SyxxQjs7aUI7O0s7STs7Szs7O1M7O1M7aUI7Ozs7O1E7Ozs7USxrQixRO3dCOzs7O2tEO3VDO1E7UyxRO1M7UztTO1M7Ozs7Ozs7Ozt1Qjs7Ozs7UTs7O1M7UztROzJDOzs7UTt1Qjs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7OztTOzs7OztRLGtDO1E7USxJLDZCO1E7O1E7UTs7UTs7UztTO3VCO1E7dUI7UTs7UTs7UTs7UztTO1E7eUI7UTt5QjtROztROztRLG9CO1E7O1E7OztRO1E7UTt1Qjs7OztRO3VCOzs7STs7SyxrQjtLO0s7STtJO0k7SSxJLG1CO0ksRzs7O0ssUTtLLGlCLE8sd0I7aUM7O0ksSSxlLG9DOztLO0s7STtJOzs7OztJO1k7Ozs7Ozs7O0ksUTtJOztvQjs7O3NCOzs7OztHO0c7O0ksb0M7O0ssSTtLO007OztnQjtvQjtPO1E7OztROzs7OztNOztJOztLLEksVTtLOzs7TyxrQztRO1MsTTs7Ozs7TyxVOzs7Ozs7Ozs7YTs7O2MsdUI7ZTtnQjs7Ozs7O2M7ZTs7Ozs7Ozs7Ozs7O2E7Ozs7O2MsVTs7Ozs7Ozs7Z0I7Ozs7Ozs7O2lCO2lCO2tCOzs7aUI7OzsyQjs4Qjs7OzsyQjs7OztlLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROztTLGU7OztVLEksbUI7OztVLEksbUI7O1UsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O08sSTs7O007TSxJOztJO0ksSTs7O2M7RztzQiw0QjtnQyw0Qjs7STs7SyxNO0s7SztLOzs7O00sSSxJLHVCOzs7Ozs7Uzs7Ozs7O1E7UTs7OztPOzs7TTs7Ozs7SSxPO0c7NkIsMEI7dUMsMEI7dUIsVztHLDZCOztJLFU7STs7Rzs7SSxVO0k7O0c7O0ksVTtJOzZCLE07STtHOztJLFU7STs2QixNO0k7Rzs7STtLO087OztLO0ssZSxNO0s7O0ksTztHOztJO0s7Tzs7O0s7TTtNO0ssZSxNO0s7O0ksTztHOztJO0s7Tzs7O0s7TTtNO007SyxhLE07SyxPOztJLE87RzttQywwQjs2QixvQjtnQyw2Qjs7STs7TztJLE87Rzs7STtLO007O2dCO007TSxNO0s7Ozs7MkI7OztHOztJLEksMkM7OzsyQjs7O0c7O0k7STs7UTs7O007O087O1E7USxZOztROzs7O1k7Ozs7Ozs7OztLLFU7SyxPOztHOztJO2lDO0c7O0k7aUM7Rzs7STtnQjs7Ozs7Ozs7Rzs7STtLOzs7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs4QixvQzs7SSxHLGdDOztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7O0k7Rzs7STtJOzs7Ozs7TTs7TyxvQjs7UTtTO1M7Uzs7OztpQjs7Ozs7OztPO1E7UTtROzs7Ozs7OztLLE87O0c7bUMseUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUM7T0FUQUQ7T0FpQ0FJO09BU0FDO09BMUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQWtEQU07T0FTQUM7T0EzREFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0VBUTtPQXBFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2RUFTO09BN0VBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FFQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F0RUFUO09Bc0VBUztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUdBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0FVQUM7T0E5Q0FMO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVM7T0FyRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQVVBQztPQTlDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOEZBVTtPQTlGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BMERBTTtPQTlGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBUztPQXJGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvR0FXO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVUFDO09BcEJBRjtPQVVBQztPQW9CQUU7T0E5QkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVkFEO09Bd0NBSTtPQVdBQztPQW5EQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0E2REFNO09BV0FDO09BeEVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW1GQVE7T0FuRkFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNEZBUztPQTVGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxR0FVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcENBSjtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FWQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQkFFO09BcEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0EyQkFHO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FTQUM7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BMkJBRztPQTdDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FTQUM7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bck5BeEI7T0FxTkF3QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWxCQUY7T0FrQkFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQTdDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BdERBTjtPQUFBQTtPQStEQU87T0EvREFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0VBUTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXhFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FpRkFTO09BakZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTBGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwQ0FKO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bek1BdkI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvT0EwQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBPQTFCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNk9BMkI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E3T0EzQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FpTEFvQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0FTQUM7T0EvREFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQXREQU47T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtP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dUZ4QixPQUFBLDhCQXZGd0JBLFFBQUFBO1U7Ozs7VTs7Ozs7VSxNO1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FzR3hCLFVBQUEsOEJBdEd3QkEsUUFBQUE7UyxvQkFBVk07UyxvQkFBQUE7UyxvQkFBQUEsS0FBVU47OztTLGNBQUFBO1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7bUJBQUFBLG1CQUFBQTtTLG9CQUFWTSxLQUFVTjtTLG9CQUFWTSxLQUFVTjs7O1M7O1k7cUNBRVVnQixVQUFBQSxXQUFBQTtTLE87OztJQURjOztLOztNO2tCOzs7a0I7SyxxQjtJO0k7Ozs7Ozs7bUMsUzt5QixTOzs2QixjOztJLFc7RztrRCxPO0c7NkMsTztHOzs7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLFc7Rzs7SSxxQjtHOzhCLE8sd0M7O0ksTztHOztJLFU7SSxPO0c7O0k7O0c7OytCLHNCOztJOzs7SyxtQjtJLGU7Ozs7SSxlOztnRCx5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7SUNzUDlDQztJQXFNQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFoM0JBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7O0lBQUFDO0lBQUFDOzs7Ozs7Ozs7OztJQU9BQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFJQUMsZ0JBQWdCQyxJQUFHMUY7SUFDWCxJQUFOOEQsTUFBTTtJQUNWLFdBRnFCOUQsR0FDakI4RDtJQUNKLE9BQUEsOEJBRmtCNEIsSUFDZDVCO0dBRXVCO1lBR3pCNkIsV0FBV0QsSUFBR3BDO0lBQU8sT0FOckJtQzthQU1XQztzQkFBa0M1QixLQUFPLE9BQS9CLDBCQUF3QkEsUUFBL0JSLE1BQTZE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U0FHQUM7U0FNQUM7U0FNQUM7O1NBakhFdEY7SUFySEY4RjtJQUlRQztJQUFBQztJQUNBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQzs7SUFJUkM7SUFJQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFJQUM7SUFDQUM7SUFzQkFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBSVFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBSVJDO0lBSUFDO0lBQ0FDO0lBTUFDO0lBTUFDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBT0FDO0lBR0FDO0lBSUFDO0lBQ0FDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBTUFDO0lBbURBQztJQUdBQztJQUdBQztJQUdBQztJQUlBQztJQUlBQztJQUlBQztJQUdBQztJQUdBQztJQUdBQztJQU1BQztJQU1BQzs7Ozs7U0F0T0E1RjtTQUlRQztTQUFBQztTQUNBQztTQUFBQztTQUNBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUNBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUNBQzs7U0FJUkM7U0FJQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FHQUM7U0FJQUM7U0FDQUM7U0FzQkFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBSVFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBSVJDO1NBSUFDO1NBQ0FDO1NBTUFDO1NBTUFDO1NBRUFDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBT0FDO1NBR0FDO1NBSUFDO1NBQ0FDO1NBSUFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBTUFDO1NBbURBQztTQUdBQztTQUdBQztTQUdBQztTQUlBQztTQUlBQztTQUlBQztTQUdBQztTQUdBQztTQUdBQztTQU1BQztTQU1BQzs7U0EzR0V2TDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FZQUU7SUF2SUZzTDtJQUlRQztJQUFBQztJQUNBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQzs7SUFJUkM7SUFLQUM7SUFDQUM7SUFvQ0FDO0lBeUJRQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQVFSQztJQUNBQztJQU1BQztJQU1BQztJQUVBQztJQUNBQztJQUNBQztJQUdBQztJQU9BQztJQUdBQztJQUlBQztJQUNBQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQU1BQztJQW1EQUM7SUFHQUM7SUFHQUM7SUFPQUM7SUFJQUM7SUFJQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFNQUM7SUFNQUM7O0lDMVJBQztJQVVBQztJQUNBQztJ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QUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQURBRDtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FEQUQ7U0FDQUM7SUFHSkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDdFlGQztJQVVBQztJQUNBQztJQUVBQztJQUNBQztJQUNBQztJQUNBQztJRDJYTUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NDL1hOTDs7Ozs7O1NBYkFIOzs7U0FlQUs7U0FEQUQ7OztTQUVBRTs7OztTQU5BTDs7Ozs7Ozs7U0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0RnWU1LO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLSUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQURBRDtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQyxzQkFBc0I7SUFDdEJDLHNCQUFzQjtJQUV0QkM7TUFDRjtJQUdFQywyQkFBMkI7SUFDM0JDLCtCQUErQjtJQUMvQkM7TUFBK0IsNEJBTi9CSDtJQU9BSTtJQTBCNkJDLDRCQXpCRDtJQW9CWUM7TUFuQlosNEJBRjVCRjtJQUdBRztNQUE0Qiw0QkFINUJIO0lBSUFJLHFCQUFxQjtJQUNyQkMscUJBQXFCO0lBQ3JCQyxxQkFBcUI7SUFDckJDLHlCQUF5QiwyQkFGekJGO0lBSUFHO2dCQUtPQztrQkFDREM7S0FHUixrQ0FIUUEsV0FEQ0Q7SUFJeUQ7SUFGckI7S0FBQSxPQUFBLDJDQUZwQ0E7S0FFd0IsT0FBQTtLQUEvQjs7O0dBRmtCO0lBQUEsK0JBTGxCRDtJQUlBRztJQWF5QzlFLGNBTzVCO0lBQUE7Z0JBWFBySixRQUNSLE9BRzJDcUosY0FKbkNySixXQUNvQjtHQURYO0lBQUE7K0JBRHlCME4sNEJBS0NyRTs7aUJBQ25DckosUUFDUixPQUYyQ3FKLGNBQ25DckosV0FDb0I7R0FEWDtJQUFBOytCQUQwQnFKLGNBQVpvRTtJQU03Qlc7TUF0V0ExSjtpQkErV013RjtJQUNSLE9BbkR3Qjs7YUFrRGhCQTthQW5ETmdEO2FBQ0FDO0dBc0Q2QjtHQUtoQjtJQVZia0IsNkNBN1BBckg7SUF1UUVzSCxpQkFBVyw2QkFyRGJqQjtJQXNERWtCOztjQXJERmpCLDhCQUNBQzs7OztLQW9ERWlCO0tBREFDO0tBREl2RTtJQUtSLE9BQUEsNEJBTFFBLFVBQ0p1RSxVQUNBRDs7OzJDQURBRixnQkFDQUM7MkNBeFFGdkg7SUFxUUEwSDs7OztLQVlFRjtLQURBQztLQURJdkU7SUFHUixPQUFBLDRCQUhRQSxVQUNKdUUsVUFDQUQ7Ozs7c0NBNUJGSixnQkFuQkFEOzJDQWxPQW5IO0lBOFFBMkg7aUJBUU16RTtJQUNSLE9BN0R1Qjs7YUE0RGZBO2FBN0ROMEQ7YUFDQUM7R0FnRTRCO0dBS2Y7SUFWYmUsaURBclJBNUg7SUErUkU2SCxpQkFBVyw2QkFwRWJmO0lBcUVFZ0I7O2NBcEVGZix3QkFKQUo7Ozs7S0F3RUVhO0tBREFDO0tBREl2RTtJQUdSLE9BQUEsNEJBSFFBLFVBQ0p1RSxVQUNBRDs7OzJDQURBSyxnQkFDQUM7MkNBaFNGOUg7SUE2UkErSDtZQU9BQyxlQUFlQztJQUNqQixPQURpQkE7O2NBZmZMOztjQVFBRzs7Y0FmQUo7O2NBVEFEO3NCQVJBTDs7R0E2Q2dCO1lBWWhCYSx1QkFBdUI5TDtrQkFDZTZMO0tBQ3RDLEtBQUcsV0FGb0I3TCxRQUNlNkwsSUFDaUM7S0FBdkIsV0FwQmhERCxlQW1Cc0NDO1lBQUFBOzs7Ozs7Ozs7OztLQUNyQjtJQUEwRDtJQUQ3RSxPQTFYRTVKO2FBMFhGO0dBRWlCO0dBSWpCO0lBREU4SjtNQU5BRCx1Q0FPcUIsMEJBRUs7SUFHMUJFO01BWkFGLHVDQWFxQiwyQkFFTjtJQUdmRyxVQWxCQUgsdUNBa0J5QyxTQUFJO0lBRTdDSTtNQXBCQUo7d0JBcUJxQixtQ0FFWTtpQkFJM0JoUCxHQUNSLE9BQUEsNEJBRFFBLEdBQ0c7O0lBRlRxUDtzQ0FOQUQ7aUJBWU1wUDtJQUNMLFdBQUEsNEJBREtBO0lBQ0wsT0FBQTtHQUFhOztJQUZkc1A7c0NBWEFGO2lCQWlCTXBQLEdBQ1IsT0FBQSw0QkFEUUEsR0FDRzs7SUFGVHVQO3NDQTlCQU47aUJBb0NNalA7SUFDTCxXQUFBLDRCQURLQTtJQUNMLE9BQUE7R0FBYTs7SUFGZHdQO3NDQW5DQVA7WUF3Q0FRLHdCQUF3QnRHLGFBQVkzQztJQUN0QztLQUNRLFdBQUEsMkJBRmtCMkM7S0FFbEIsbUJBQXNDLDJCQUZSM0M7Ozs7b0RBQUFBOztvREFBWjJDOzs7Ozs7S0FJeEI7O0lBS29CO0tBQWxCdUcsa0JBQWtCLGtDQVRJdkc7S0FVdEJ3RyxrQkFBa0Isc0NBVmdCbko7SUFXbkMsR0FBQSxnQ0FGQ2tKLGlCQUNBQzs7O29EQVZrQ25KOztvREFBWjJDOzs7Ozs7S0FheEI7O0lBS0ssT0F0bEJQckg7NkJBc2xCcUJPO2NBQ25CLE9BTkE7O3VCQUttQkE7dUJBVGpCcU47dUJBQ0FDO2FBU29FO0dBQUM7WUFHdkVDLGdCQUFnQnpHLGFBQVkzQztJQUM5QixHQUFHLDJCQURlMkMsYUFBWTNDO0tBRXpCLE9BQUEsNkJBRmEyQztJQUdFLFdBQUEsa0NBSEZBO0lBR1YsR0FBQSxpQ0FIc0IzQztvQkFJRyw2QkFKSEE7S0FJbkIsT0EvZVRoQyxVQStlVyw2QkFKSzJFOzs7O29CQXRCaEJzRyx3QkFzQmdCdEcsYUFBWTNDOzBCQVFsQiw2QkFSa0JBO0lBTzFCLE9BcGNGckI7MkJBb2NVLDZCQVBNZ0U7R0FVYjtZQUdIMEcsc0JBQXNCQyxVQUFVakk7SUFDbEMsV0F0WEVELGlCQXFYc0JrSSxVQUFVakk7SUFDbEMsT0F4akJFekU7R0F3akI2RDtZQUc3RDJNLFVBQVVEO0lBQ1osT0FuakJFdE07YUEwUUE4RjtzQkF5U3NDekIsUUFDdEMsT0FOQWdJLHNCQUlVQyxVQUM0QmpJLFFBQ0E7R0FBQztZQUd2Q21JLG9CQUFvQkY7SUFDdEIsT0F4akJFdE07YUEyUUErRjtzQkE2U3VDMUIsUUFDdkMsT0FYQWdJLHNCQVNvQkMsVUFDbUJqSSxRQUNEO0dBQUM7R0FHOUI7SUFBVG9JLFNBVkFGLFVBOVRBL0c7SUF5VUFrSCxtQkFOQUYsb0JBblVBaEg7WUEwVUFtSCxtQkFBb0J0STtJQUFTLE9BaEI3QmdJLHNCQTFUQTdHLFFBMFVvQm5CO0dBQTJDO0dBQ3ZELElBQVJ1SSxRQXhrQkFoTixJQXFrQkE2TTtZQUtBSSxRQUFRQztJQUNWLE9BM2RFaEw7c0JBMmRlSTs0QkFDTnpEOztnQjtxQ0FNQ3FPLE1BQ1IsV0FEUUEsTUFDTTt3REFUUkE7OzhCQVlFNU0sTUFDUixXQURRQSxNQUNNO2dCQURDLFdBdlpqQkEsS0E0WWVnQzs7O2VBSUosb0NBSEZ6RDs7O3FEQTVtQlRBOztHQXVuQmlCO0dBR1YsSUFBUHNPLE9BaEJBRixRQUxBSjtZQXVCQU8sMEJBQTJCQyxZQUFXQyxTQUFRQztrQkFDdkNDO0tBQ0UsSUFBUEMsU0FBTywyQkFERkQsTUFEb0JIO21CQUdwQks7TUFDVDtPQUEyRCxPQUFBLDBCQUZ2REQsUUFDS0M7T0FDRixPQUFBLGdDQUpzQkw7TUFJdEIsT0FBQTtLQUE2RTtLQURwRSxXQTdaZDdJLGlCQTBaOEMrSSxVQUdFLHlCQUQ5Q0U7O0lBRWdGO0lBSHBFLFdBOVpkbk4sS0E2WnNDZ047OztZQU90Q0ssMEJBQTJCTixZQUFXL0k7SUFDbEIsV0FBQSxnQ0FETytJO0lBQ1AsT0FwbUJwQnJOLElBK0xBTSxLQW9hc0NnRTtHQUM2QjtZQVVuRXNKLFFBQVFDLEdBQUVQLFNBQVFDO0lBQ3BCO0tBQUlGLGFBRE1RO0tBRVYsT0FwQkVULDBCQW1CRUMsWUFEUUMsU0FBUUM7SUFHVixPQWpuQlJ2TixVQWluQlEsOEJBRk5xTjtHQUVnRDtZQUdsRFMsUUFBUUQsR0FBRXZKO0lBQ1o7S0FBSStJLGFBRE1RO0tBRVYsT0FuQkVGLDBCQWtCRU4sWUFEUS9JO0lBR0YsT0F2bkJSdEUsVUF1bkJRLDZCQUZOcU47R0FFZ0Q7WUFHbERVLFVBQVVuUixHQUFFSSxNQUFLQztrQkFDWDBIO0tBQ1I7TUFBSUMsU0FBTywyQkFESEQ7TUFFSnpILE1BREEwSDtNQUVBbEksU0FBUyxpREFKTU87bUJBS2tDSDtNQUFLLFdBQUxBLElBRGpESjtNQUNzRCx3QkFIdERrSTtLQUd1RTtLQUEzQixPQUFBO29EQUxsQzVILE1BQUtDLFFBR2ZDO0lBRXdFO0lBSjdELFdBNWJib0QsS0EyYlUxRDs7O0dBUUU7SUFBWm9SLFlBUkFELFVBN1hBbkk7SUFzWUFxSSxjQVRBRixVQWxJQWhDO0lBNElBbUMsY0FWQUgsVUFsSUFoQztpQkFpSkFvQztJLFNBQUFBLGdCQURLLE9BQUE7a0JBRUlDO21CQUtBQzsyQixtQkFMQUQsR0FLQUMsU0FBQUEsR0FMQUQ7NkNBMWRUMUs7O1NBa2VNNEssaUJBVE5ILGdCQUNTQzttQkFTQ0csZ0JBQ1IsT0FGSUQsUUFDSUMsbUJBQ2M7S0FERztNQUFBLE9BalYzQm5ILDZCQWdWTWtIOzs7O0lBTEosV0EzVUZsSCw2QkF1VUErRzs7O09BSEFLLGdEQXRxQkEzUDtZQTByQkE0UCxVQUFVN1IsR0FBRUksTUFBS0M7O1NBQ0ppQixpQkFBTkQ7bUJBQ0QwRztNQUNSO09BQUlDLFNBQU8sMkJBREhEO09BRUpqSSxTQUFTLGlEQUpNTztvQkFLd0NILEdBQUVrQjtPQUMzRCxXQUQyREEsSUFEekR0QixtQkFDdURJLElBRHZESjtPQUVGLHlDQUhFa0k7O01BRzRCO01BRHNCLE9BQUE7O2VBTHhDNUg7ZUFBS0M7ZUFDVmdCO2VBQU1DOztLQUtrQjtLQUpsQixXQTFkYnNHLGlCQUFBQSxpQkF3ZFU1SCxHQUNHc0IsT0FBTkQ7OzsyQ0FyQlB1UTs7R0E2QmM7SUFBZEUsY0FUQUQsVUFsS0ExQztJQTRLQTRDLGNBVkFGLFVBbEtBMUM7WUErS0U2QyxTQUVVQztJLGdCQUNSQztLQUVKLGNBR1VDLFFBQU9DO01BQ2I7T0FBMkIsWUFDZjtXQUNIQztPQUFRLE9BQVJBO01BQWlCO01BRkMsT0FBQSx5QkFEckJGLFFBQU9DO0tBR2E7S0FKdEIsV0FBQSx3QkFMSUg7S0FNUCxPQUFBLDZCQUxEQyxvQkFRMkI7O1lBRzdCSSxRQUFRdFMsR0FBR0M7SUFDYixPQXRyQkFtRCxJQXFyQlVwRCxZQUNJb1MsT0FDWixXQUZXblMsR0FDQ21TLFFBQ1osT0FEWUEsTUFFUDtHQUFDO0dBbEJHO0lBQUEsWUFDVEosVUFjQU07OztPQXRnQkZ6TDtPQUNBQztPQTZFQWtDO09Bd1VBaUg7T0FHQUc7T0EzUUFqRztPQWNBUTtPQWNBUTtPQWNBZTtPQWNBUTtPQW1JQXlDO09Ba0dBb0I7T0F6YUF4SjtPQWNBckQ7T0FrQ0FVO09BQ0FpRTtPQUNBaEQ7T0FqREE0QjtPQUVBRztPQThjQWdLO09BQ0FDO09BQ0FDO09BK0JBUTtPQUNBQztPQWxzQkF6UDtPQTRvQkEwTztPQU1BRTtPQXhCQVY7T0FPQU87T0EvaUJBNU07T0FXQUs7T0FsQ0FYOzs7O09BM0JBUjtPQTRCQVM7T0FDQUM7Ozs7O09BdEJBUDtPQVZBTDtPQUNBQztPQTZDQWM7T0FEQUQ7T0E3QkFSO09BRUFFOztPQWpEQTFCO09BWUFTO09Ba0tBd0Q7T0FoSkFoRDtPQVZBTDtPQXFKQW1EO09BekJBVjtPQUZBRjtPQTdDQVg7T0E0Q0FVO09BUUFLO09BOEpBOEQ7T0FDQUM7T0EwQ0FhO09BY0FRO09BY0FRO09BY0FlO09BY0FRO09BdkRBdEM7T0FjQVE7T0FjQVE7T0FjQWU7T0FjQVE7T0F2REF0QztPQWNBUTtPQWNBUTtPQWNBZTtPQWNBUTtPQXREQXJDO09BY0FRO09BY0FRO09BY0FlO09BY0FRO09BekRBeEM7T0FjQVE7T0FjQVE7T0FjQWU7T0FjQVE7T0FpTEE4QztPQXRCQUg7T0FsQ0FQO09BTkFEO09Bb0JBSTtPQUtBQztPQUtBQztPQUtBQztPQTNEQVY7T0F4T0F0RztPQURBRDtPQUVBRTtPQUdBRztPQUVBQztPQVFBQztPQUNBQztPQXRCQVQ7T0FpV0E0SDtPQUNBQztPQVpBSjtPQUtBQztPQVRBSDtPQW1CQVE7T0ExWUExSTtPQUVBQztPQUlBRTtPQWlCQU07T0F6T0F6RjtPQTlCRmI7T0FDQU07Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lFREFtUSxjQU1lLHlCQUFjO1lBTDdCelEsYTtZQUNBMFEsYTtZQVdFcFAsSUFBSXBELEdBQUdDLEdBQUd3UztJQUFZLGdCQUFZelE7S0FBcUIsV0FBQSxXQUFuRGhDLEdBQTZELFdBQXZEeVMsV0FBd0J6UTtLQUFxQixPQUFBLG9DQUFoRC9CLEdBQXdFO0dBQUM7WUFDaEZpRCxPQUFPbEQsR0FBR0M7SUFBSSxnQkFBWStCO0tBQXdCLFdBQUEsV0FBM0NoQyxHQUFtQmdDO0tBQVosT0FBQSxvQ0FBSi9CLEdBQW9EO0dBQUM7WUFFL0Q0QyxXQUFXN0MsR0FBR0MsR0FBR3dTO0lBQ25CLGdCQUFZelE7S0FBNEIsV0FBQSxXQUQzQmhDLEdBQ3FDLFdBRC9CeVMsV0FDUHpRO0tBQTRCLE9BQUEsb0NBRHhCL0IsR0FDZ0Q7R0FBQztZQUcvRG1GLFFBQVFDO0lBQVMsZ0JBQVlyRDtLQUE0Qjs7OztrQ0FBakRxRDs7O3NCQUFBQTs7dURBQUFBO3NEQUFBQTs7VUFBMEIsT0FBQSxpQkFBTHJEOztLQUE0QixPQUFBLHFDQUEwQjtHQUFDO1lBRXBGc0QsWUFBWW9OO0lBQ2QsSUFBUXJOOztNQUFBQTs0QkFBMkIsT0FBQSxXQURyQnFOLGFBRlp0TixRQUdNQztJQUNSLE9BSkVELFFBR01DO0dBQ007WUFHWnhCLEtBQUtxRCxPQUFNQztJQUNiO0tBQU8sSUFBV3dMLGdCQUFMQzttQkFHaUNELEtBQU8sV0FIeENDLEtBR2lDRCxLQUFlO0tBQTFDO01BQUEsT0FBQSxXQUpOeEwsT0FDS3dMO2lCQUdaO21CQUR3Q0MsS0FBTyxXQUFQQSxLQUY1QkQsS0FFMkM7S0FBMUM7TUFBQSxPQUFBLFdBSFp6TCxPQUNNMEw7TUFFVCxXQUFFO0tBQUYsT0FBQSxvQ0FFRTtHQUFBO1lBNkJKdkIsWUFoQlV3QjtJQUNGLElBQU52UyxNQUFNLGNBREV1UztJQUVaLFNBREl2UyxLQUVHO0lBRU07S0FBUEYsT0FBTyxhQUxEeVM7S0FNTnhTLFNBQVMsZUFOSHdTO0tBT04vUyxTQUFTLGlEQURUTztrQkFFc0J5UztLQUN4QixJQUFJQyxZQURvQkQsVUFEdEJoVDttQkFHeURJO01BQ3pELElBRHlEOFMsTUFBQTlTLElBRHZENlMsWUFDdUQ3UyxJQUFBQTtNQUN6RCxPQUFBLHNCQVhNMlMsS0FVbURHO0tBQ25CO0tBRGMsT0FBQTs7Y0FMcEQ1UztjQUNBQztjQUxGQzs7SUFVeUM7SUFIdEIsT0FBQSw4QkFQbkJBO0dBVTBDO0dBUzVDLFNBRUlnQixLQUFBMlIsR0FBQSxPQUFBQSxLQUFJO1lBREo1UixLQUFBNFIsR0FBQSxPQUFBQSxLQUFJO2dCQUNKQSxHQUFBQyxHQUFBLFdBQUFELE1BQUFDLEdBQUk7R0FBSjs7SUFBQUMsNkJBQUEsU0FBSSxrQkFBSjdSO2dCQURBMlIsR0FBQUMsR0FBQSxXQUFBQSxHQUFBRCxNQUFJO0dBQUo7O0lBQUFHLDZCQUFBLFNBQUksa0JBQUovUjtZQVFGZ1MsU0FBT0MsT0FBTVQ7SUFDZjtLQUp1RCxPQUFBLHNCQUd4Q0E7S0FDWFUsV0FKb0MsY0FHekJWO2FBRVQsMEJBRkdTLE9BQ0xDLE9BRUc7SUFFTTtLQUFQblQsT0FBTyxhQUxFeVM7S0FNVHhTLFNBQVMsZUFOQXdTO0tBT1QvUyxTQUFTLGlEQURUTztLQUU0QixRQUFBLDBCQVJ6QmlULE9BQ0xDO0tBT1dqUztLQUFORDtrQkFDc0N5UjtLQUMzQyxJQUFJQyxZQUR1Q0QsVUFGekNoVDtLQUlGLFNBQUkwVCxLQUFLdFQsR0FBSSxPQUFKQSxJQURMNlMsWUFDSzdTLElBQUFBLFVBQW9DO21CQUNjbUIsTUFBS0M7TUFDOUQ7T0FBZ0MsUUFBQSwwQkFiN0JnUyxXQVlzRGpTLE1BQUtDLE9BRDVEa1M7T0FFV0w7T0FBTkM7TUFDUCxPQUFBLHNCQWRTUCxLQWFGTyxRQUFNRDtLQUNHO0tBRm9DLE9BQUE7O2NBUHBEL1M7Y0FDQUM7Y0FFR2dCO2NBQU1DOztJQU1RO0lBTFAsV0FBQSwwQkFUUGdTLE9BQ0xDO0lBUXNDLE9BQUE7R0FLbEI7WUFPeEJ6QixZQUxFZTtJQUNGO2dCQWpCRVEsU0FQRUYsUUF1QkZOO0tBQ21CLFdBakJuQlEsU0FSRUQsUUF3QkZQO0lBQ21CLE9BQUE7R0FBNEQ7WUFNakY5TCxPQUFPQztJQUNUO0tBQU8sWUFDSztLQUl5QjtNQUg1Qm9MOztNQUc0QixNQUFBLFdBTjVCcEwsU0FHQW9MO01BR0gsTUFBQTtNQURBLE1BQUE7S0FDQSxPQUFBLHdDQUF1RDtHQUFBO1lBRzNEMU8sS0FBSytQO0lBQ1AsT0FyRkVuTztzQkFxRmVvTztjQUNmO2VBQU8sWUFDRzttQkFDRUMsaUJBQVJDOzRCQUk4Q0QsTUFBUSxXQUp0REMsTUFJOENELE1BQW9CO2VBQWpEO2dCQUFBLE1BQUEsV0FQTkQsUUFHSEM7MEJBSUo7NEJBRHlDQyxNQUFRLFdBQVJBLE1BSHJDRCxNQUd5RDtlQUFoRDtnQkFBQSxNQUFBLFdBUGhCRixPQUlERzswQkFHSTtnQkFERixVQUFFLDhCQUZJRDtlQUVOLE9BQUEsbUNBR0U7YUFBQTtHQUFDO0dBR0E7OztJQUFUMUQsU0F6R0E3TSxJQTZGQU0sS0ExR0Y2TztJQXVIRW5DLFFBMUdBaE4sSUF5R0E2TTtZQUVBN0wsTUFBTXBFO0lBQUksSUFBQTtJQUFBLE9BM0dWb0QsSUE2RkFNLEtBY00xRDtHQUEwRDtZQUNoRXFJLElBQUlySTtJQUFJLGtCO0lBQStCLE9BNUd2Q29ELElBNEdJcEQsaUJBQWE7R0FBK0I7WUFDaERxRixPQUFPckY7SUFBSTs7O29DQUFBO0tBQUEsT0FBQTs7SUFBa0MsT0E3RzdDb0QsSUE2R09wRDtHQUFnRDtHQUd6RDtJQURFdVE7TUF0R0FqTDtpQkF1R2V1TztTQUNmO1VBQU8sbUJBQ1k7VUFHYjtXQUZRQztXQUVSLE1BeEJOcFEsS0FtQmVtUSxVQUdEQztXQUVSO1dBREVDLGNBQzBDLDhCQUFLRCxHQUFLLFdBQUxBLEdBQWdCO1dBRS9ERSxjQUFjLCtCQUpSRjtVQUtXLE9BQUE7MENBSmpCQyxpQkFHQUMsa0JBQzhDO1FBQUE7WUFHdEQvTSxPQUFPQyxPQUFNQztJQUNmLGdCQUFZRjtLQUNWLFNBRFVBO01BRWtCO09BQXBCMkwsTUFGRTNMOztPQUVrQixNQUFBLFdBSHJCQyxPQUdDMEw7TUFBTyxPQUFBOztLQUNjLElBQXBCRCxNQUhDMUwsa0NBR21CLE1BQUEsV0FKaEJFLE9BSUp3TDtLQUFPLE9BQUEsd0NBQWdEO0dBQUM7WUFHakV2TCxPQUFPQyxNQUFLQztJQUNkO0tBS2EsdUJBQ0pDLGVBQU0sV0FBTkE7U0FDR0M7S0FBTyxXQUFQQTtJQUFrQjs7S0FMekIsdUJBQ09ELGVBQU0sV0FBTkE7U0FDQ0M7S0FBTyxXQUFQQTtJQUFpQjtJQUNqQixPQXhJWHBFLElBMkhBNkQsT0FPT0ksTUFBS0M7R0FRZ0I7WUFHNUJrSiwwQkFBMkJDLFlBQVd3RCxPQUFNQztJQUM5QyxnQkFBWUM7S0FDRSxJQUFSelAsUUFBUSxvQ0FERnlQOztNQUdpQyxJQUFNQztNQUM3QyxPQUFBLGlDQUx1QjNELFlBQ2pCMEQsTUFHdUNDO0tBQ087S0FEekM7TUFBQSxNQUFBLCtCQUZYMVA7TUFDQTJQLFlBQ0Y7O01BS3FCO09BQVd2RDtPQUFMd0Q7T0FDbEJDLFNBQU8saUNBVlM5RCxZQUNqQjBELE1BUW1CRzttQkFFeUJFO09BRTNDOztVQUFBO2tDQWJnQi9ELFlBVWhCOEQsUUFDMkNDLGFBRnBCMUQ7cUNBT1Q7V0FEVnFEO09BQVEsV0FBUkE7TUFDYztNQUxGLFVBQUEsV0FYV0YsT0FTVEs7TUFFb0IsT0FBQTtLQUtsQjtLQVAzQjtNQUFBLE1BQUEsMEJBUEE1UDtNQUtBK1AsY0FDRjs7TUFZcUIsSUFBVzNELGlCQUFMd0Q7bUJBQ29CSTtPQUN4QyxPQUFBO3NDQXRCa0JqRSxZQUNqQjBELE1BbUJtQkcsS0FDb0JJO01BQzhCO01BRDNELFVBQUEsV0FyQndCUixRQW9CVnBEO01BQ1UsT0FBQTtLQUNxQztLQUY3RTtNQUFBLE1BQUEsMEJBbEJBcE07TUFnQkFpUSxjQUNGO0tBS21CLE9BQUE7O2tCQXJCakJOLGVBSUFJLGlCQVdBRSxtQkFNd0Q7R0FBQztZQUc3RDVELDBCQUEyQk4sWUFBV2dEO0lBQ3hDLGdCQUFZVTtLQUNDLElBQVB6USxPQUFPLGdDQUREeVE7a0JBR3FDM1M7TUFDM0MsT0FBQSxnQ0FMdUJpUCxZQUNqQjBELE1BR3FDM1M7S0FDVTtLQUQxQztNQUFBLE1BQUEsK0JBRlhrQztNQUNBa1IsWUFDRjtrQkFLeUJwVDtNQUNULElBQVArUyxTQUFPLGdDQVZTOUQsWUFDakIwRCxNQVFpQjNTO21CQUUyQnFUO09BQzdDLE9BQU0sZ0NBWllwRSxZQVVoQjhELFFBQzJDTTs7O2lCQUl0Qzt3Q0FmV3BFLFlBVWhCOEQsUUFDMkNNO01BSXNCO01BSmpELFVBQUEsV0FYV3BCLE9BU1hqUztNQUVzQixPQUFBO0tBSTRCO0tBTnpFO01BQUEsTUFBQSwwQkFQQWtDO01BS0FvUixjQUNGO0tBU21CLE9BQUEsa0NBZGpCRixlQUlBRSxrQkFVMkM7R0FBQztZQUdoREMsTUFBTWQsT0FBTUM7SUFDZCxnQkFBWWE7S0FDVjtNQUFJdEUsYUFBYSx3QkFEUHNFO01BRVY7TUFHTyxNQUFBLDhCQUpIdEU7TUFDQXpRLElBL0xKb0QsSUE2SUFvTiwwQkFpRElDLFlBRkV3RCxPQUFNQztLQVNaLE9BTklsVSxFQUZNK1UsT0FRSTtHQUFDO1lBR2ZDLE1BQU12QjtJQUNSLGdCQUFZdUI7S0FDVjtNQUFJdkUsYUFBYSx3QkFEUHVFO01BRVY7TUFHTyxNQUFBLDZCQUpIdkU7TUFDQXpRLElBM01Kb0QsSUF3S0EyTiwwQkFrQ0lOLFlBRkVnRDtLQVNOLE9BTkl6VCxFQUZNZ1YsT0FRSTtHQUFDOzs7O09BOU5qQnpDO09BQUFBO09BQUFBO09BQUFBO09Bc0hFdEM7T0FDQUc7T0F2SEZtQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTRIRWhDO09BM0JBeEo7T0FTQXJEO09BY0FVO09BQ0FpRTtPQUNBaEQ7T0EvRkF4QjtPQTZHQW9EO09BT0FHO09BbEZBaUs7T0FBQUE7T0FBQUE7T0FrQ0FTO09BQUFBO09BMEdBaUQ7T0FZQUM7T0EzREF4RTtPQTJCQU87T0F4S0EzTjtPQUNBRjtPQUVBTDtPQU1BeUM7T0FGQUY7T0FuQkZ0RDtPQUNBMFE7Ozs7RTs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDbUJLeUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FyQkgsU0FBQXZVO0lBQUEsWUFDRTtJQUNBLElBQUF3VSxxQkFBQUMsV0FBQSxzQkFBQUQ7SUFBQSx3QkFBQUM7R0FDa0I7R0FKUixlQUNaelU7R0FxQkYsU0FJSXdGLE1BQUErTSxHQUFBLE9BQUFBLEtBQUs7WUFETG1DLGFBQUFuQyxHQUFBLE9BQUFBLEtBQVk7WUFEWm9DLFdBQUFwQyxHQUFBLE9BQUFBLEtBQVU7WUFEVnFDLEtBQUFyQyxHQUFBLE9BQUFBLEtBQUk7Z0JBR0pBLEdBQUFDLEdBQUEsV0FBQUQsTUFBQUEsTUFBQUEsTUFBQUMsR0FBSztHQUFMOztJQUFBcUMsOEJBQUEsU0FBSyxtQkFBTHJQO2dCQURBK00sR0FBQUMsR0FBQSxXQUFBRCxNQUFBQSxNQUFBQyxHQUFBRCxNQUFZO0dBQVo7O0lBQUF1Qzs7dUJBQUEsU0FBWTs7O09BQVpKOztnQkFEQW5DLEdBQUFDLEdBQUEsV0FBQUQsTUFBQUMsR0FBQUQsTUFBQUEsTUFBVTtHQUFWOztJQUFBd0M7MEJBQUEsU0FBVSx3QkFBVko7Z0JBREFwQyxHQUFBQyxHQUFBLFdBQUFBLEdBQUFELE1BQUFBLE1BQUFBLE1BQUk7R0FBSjs7SUFBQXlDLDZCQUFBLFNBQUksa0JBQUpKO1lBRENLO0lBQUFDLFVBQUFDLGdCQUFBQyxrQkFBQUMsV0FBQUM7SUFBQTtLQUFBLFFBQUEsV0FBQUosVUFDREYsUUFEQ007S0FBQUM7S0FBQUM7S0FBQSxVQUFBLFdBQUFMLGdCQUVESixjQUZDUTtLQUFBRTtLQUFBQztLQUFBLFVBQUEsV0FBQU4sa0JBR0ROLGdCQUhDVztLQUFBRTtLQUFBQztLQUFBLFVBQUEsV0FBQVAsV0FJRFIsU0FKQ2M7S0FBQUU7S0FBQUM7SUFBQTtxQkFBQTFSO2FBQUE7Y0FBQXdRLE9BQUEsV0FBQVksVUFBQXBSO2NBQUF1USxhQUFBLFdBQUFlLGdCQUFBdFI7Y0FBQXNRLGVBQUEsV0FBQWtCLGtCQUFBeFI7Y0FBQW9CLFFBQUEsV0FBQXNRLFdBQUExUjthQUFBLFdBQUF3USxNQUFBRCxZQUFBRCxjQUFBbFA7WUFBQztZQUFEcVE7R0FBQztZQUFEelUsT0FBQXdULE1BQUFELFlBQUFELGNBQUFsUCxPQUFBLFdBQUFvUCxNQUFBRCxZQUFBRCxjQUFBbFA7R0FBQztZQUFEOUMsSUFBQXdTLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQTtLQUFBLE9BQUEsV0FBQUEsV0FJRFI7S0FKQyxPQUFBLFdBQUFPLGtCQUdETjtLQUhDLE9BQUEsV0FBQUssZ0JBRURKO0lBRkMsV0FBQSxXQUFBRyxVQUNERjtHQURFO1lBQURlLEtBQUFiLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQSxXQUFBSCxVQUNERjtJQURDLFdBQUFHLGdCQUVESjtJQUZDLFdBQUFLLGtCQUdETjtJQUNBLE9BQUEsV0FKQ08sV0FJRFI7R0FKRTtZQUFEaFYsS0FBQUosTUFBQXlWLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQSxPQUlEO2FBSkNBO2FBQUE7ZUFBQUQ7ZUFBQTtpQkFBQUQ7aUJBQUEsV0FBQUQsVUFBQXpWLE1BQ0R1VjtpQkFDQUQ7ZUFDQUQ7YUFDQUQ7R0FKRTtZQUFEbUIsU0FBQUM7SUFBQTtLQUFBLFdBQUEsV0FBQUEsV0FJRHBCO0tBSkMsV0FBQSxXQUFBb0IsV0FHRG5CO0tBSEMsV0FBQSxXQUFBbUIsV0FFRGxCO0lBRkMsV0FBQSxXQUFBa0IsV0FDRGpCO0dBREU7WUFBRGtCLFFBQUFoQixVQUFBQyxnQkFBQUMsa0JBQUFDO0lBQUE7S0FBQSxPQUFBLFdBQUFILFVBQ0RGO0tBREMsY0FBQSxXQUFBRyxnQkFFREo7S0FGQyxjQUFBLFdBQUFLLGtCQUdETjtJQUhDLGNBSUQsV0FKQ08sV0FJRFI7R0FKRTtZQUFEc0IsT0FBQWpCLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQTtLQUFBLE9BQUEsV0FBQUgsVUFDREY7S0FEQyxlQUFBLFdBQUFHLGdCQUVESjtLQUZDLGVBQUEsV0FBQUssa0JBR0ROO0lBSEMscUJBSUQsV0FKQ08sV0FJRFI7R0FKRTtZQUFEdUIsUUFBQWxCLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQTtLQUFBLFdBQUEsV0FBQUEsV0FJRFI7S0FKQyxXQUFBLFdBQUFPLGtCQUdETjtLQUhDLFdBQUEsV0FBQUssZ0JBRURKO0lBRkMsV0FBQSxXQUFBRyxVQUNERjtHQURFO1lBQURxQjtJQUFBSixRQUFBZixVQUFBQyxnQkFBQUMsa0JBQUFDO0lBQUEsV0FBQUgsVUFDREYsUUFEQ2lCLFFBQUFBO0lBQUEsV0FBQWQsZ0JBRURKLGNBRkNrQixRQUFBQTtJQUFBLFdBQUFiLGtCQUdETixnQkFIQ21CLFFBQUFBO0lBSUQsT0FBQSxXQUpDWixXQUlEUixTQUpDb0IsUUFBQUE7R0FBQztZQUFEcFY7SUFBQW9WLFFBQUF4VyxNQUFBeVYsVUFBQUMsZ0JBQUFDLGtCQUFBQztlQUFBWSxrQkFBQUEsa0JBQUFBO0lBQUEsT0FBQTthQUFBWjthQUFBO2VBQUFEO2VBQUE7aUJBQUFEO2lCQUFBLFdBQUFELFVBQUF6VixNQUNEdVYsUUFEQ2lCLFFBQUFBO2lCQUVEbEI7aUJBRkNrQjs7ZUFHRG5CO2VBSENtQjs7YUFJRHBCO2FBSkNvQjs7O1lBQUFLO0lBQUFMLFFBQUFmLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQTtLQUFBLE9BQUEsV0FBQUgsVUFDREYsUUFEQ2lCLFFBQUFBO0tBQUE7O1VBQUEsV0FBQWQsZ0JBRURKLGNBRkNrQixRQUFBQTs7S0FBQTs7VUFBQSxXQUFBYixrQkFHRE4sZ0JBSENtQixRQUFBQTs7SUFBQSxjQUlELFdBSkNaLFdBSURSLFNBSkNvQixRQUFBQTtHQUFDO1lBQURNO0lBQUFOLFFBQUFmLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQTtLQUFBLE9BQUEsV0FBQUgsVUFDREYsUUFEQ2lCLFFBQUFBO0tBQUE7ZUFBQSxXQUFBZCxnQkFFREosY0FGQ2tCLFFBQUFBO0tBQUE7ZUFBQSxXQUFBYixrQkFHRE4sZ0JBSENtQixRQUFBQTtJQUFBLHFCQUlELFdBSkNaLFdBSURSLFNBSkNvQixRQUFBQTtHQUFDO1lBQURPO0lBQUFQLFFBQUFmLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQTtLQUFBLFdBQUEsV0FBQUEsV0FJRFIsU0FKQ29CLFFBQUFBO0tBQUE7O1FBQUEsV0FBQWIsa0JBR0ROLGdCQUhDbUIsUUFBQUE7O0tBQUE7V0FBQSxXQUFBZCxnQkFFREosY0FGQ2tCLFFBQUFBO0lBQUEsV0FBQSxXQUFBZixVQUNERixRQURDaUIsUUFBQUE7R0FBQztZQUFEL1M7SUFBQStTLFFBQUFmLFVBQUFDLGdCQUFBQyxrQkFBQUM7SUFBQTtLQUFBLE1BQUEsV0FBQUEsV0FJRFIsU0FKQ29CLFFBQUFBO0tBQUEsT0FBQSxXQUFBYixrQkFHRE4sZ0JBSENtQixRQUFBQTtLQUFBLE9BQUEsV0FBQWQsZ0JBRURKLGNBRkNrQixRQUFBQTtJQUFBO1lBQUEsV0FBQWYsVUFDREYsUUFEQ2lCLFFBQUFBOzs7O0dBQUM7WUFBRFEsdUJBQUFSO0lBQUEsNkJBQUFBO0lBQUE7R0FBQztHQUFEOzs7T0FBQUk7T0FBQXhWO09BQUF5VjtPQUFBQztPQUFBQztPQUFBdFQ7T0FBQXVUO1lBQUx6VjtJQUFBO0tBWjRCMFY7S0FleEJDO0tBREFDO0tBREFDO0tBYlk1VztLQUNTLFFBQUEsOEJBREd5VztLQUNaSTtLQUFSQztLQUNBQyxXQUFTLDBCQURURCxRQURROVc7S0FZaEJnWDtLQVRRQztPQUNJLDZCQUhJSjs7O0tBZVpLLGNBUlUsc0JBTk5ILFVBQ0FFO0tBU1JFLGtDQUlJRCxlQUpKRjtLQUdJSSxVQUFBLHNCQUFBVjtLQUhKVyxrQ0FHSUQsZUFISkQ7S0FFSUcsVUFBQSxzQkFBQVg7S0FGSlksa0NBRUlELGVBRkpEO0tBQ0lHLFVBQUEsb0JBQUFaO0tBREphLGtDQUNJRCxlQURKRDtJQUFBLFdBQUFFO0dBTTRCO0dBT007SUFBQSxNQUFBO0lBSmhDQzs2QkFJUTtJQUlSQzswQjtZQW9EQUMsWUFBYXRZLEdBQUlrRyxVQUEwQ3FTO0lBQzdELEdBRG1CclMsU0FBU0MsTUFBVEQsUUFBQXNTLFNBQVNyUyxjQUFUcVMsU0E1RGpCSjtJQTZERixZQUR5RC9SLGdCQVIvQm9TLFdBUStCcFMsZ0JBUi9Cb1M7SUF6Q3BCLFlBaURhRDs7S0EvQ3NDO01BQXpDeEk7TUFBeUMsTUFBQSx5QkFBekNBO01Bd0NaNU4sU0F4Q3FEOztvQ0FMdkRpVzs7O2dCQUFBQTs7O2lCQUFBQTs7O2dEQUFBQTs7U0E2Q0VqVyxTQXpDaUQ7OztLQUtWLElBQWFzVyxrQ0FBUHpTO1FBMkM5QnVTLGFBM0NxQ0UsdUJBRTVDO0tBRUQsWUFBQSw4QkFKc0N6Uzs7OEJBSzlCMFMsOEJBQU4zVztNQUNOO2tCQURNQSxVQUFNMlcsaUJBTHFDRDs7Ozs7Z0RBQUFBOzt1REEyQ3JDRjs7Ozs7OztJQS9CMEI7SUFaRjtLQUFBLE1BQUEsa0NBMkN4QkE7S0FKaEI7S0FDbUI7T0FBQTs7O2tCQUFLeFc7VUFBUSxPQUp0QjttREFPZ0R1VyxXQUhsQ3ZXLE1BSnZCSTtTQUl5RTtLQUYzRSxNQUFBLCtCQUh3QnFXO0tBU3RCRyxXQUxGO0lBTUYsT0FBQSxXQUZlNVksR0FDWDRZO0dBQ007WUFHUnpSLE9BQWlCbkgsR0FBSWtHLFVBQTBDOEs7SUFDakUsR0FEdUI5SyxTQUFTQyxNQUFURCxRQUFBc1MsU0FBU3JTLGNBQVRxUyxTQWpFckJKO0lBa0VGLFlBRDZEL1IsZ0JBQVhvUyxXQUFXcFMsZ0JBQVhvUztJQUVOLFVBRnFCekgsTUFFckIsVUFGTXlILFdBRWQsVUFGYkQ7V0FMckJGO3NCQU8yRE07a0NBRVBDO2VBQzFDLFlBQUEsV0FMTzdZLEdBSW1DNlk7a0NBRXJDO21CQUNIQztlQUFTLGVBSCtCRCxPQUd4Q0M7Y0FBNkI7Y0FIdkMsY0FBQSw2QkFGeURGO21DQU9oRDtjQUVUOztlQTNDeUNHO2VBQU5DO2VBRHZCcEYsV0FpQ2lENUM7ZUFoQ25EaUksaUJBZ0NTVDtlQWhDS1U7aUJBZVgseUNBaEJEdEYsVUFDdUJvRjtlQUF6QjdELGVBQUE4RDtlQUFjRSxhQUFBRDtlQTRDcEJMLFFBNUMrQkc7ZUE0Q3hCRixRQTVDOEJDO2NBQzNDO3dCQURZNUQ7Z0JBSVY7aUJBQUlJLGlCQUpNSjtpQkFLSCxRQUFBLDhCQUxpQmdFOztpQkFRZDs7a0JBUmNDO2tCQUFXQztrQkFRekIsVUFBQSxXQXdCS3JaLEdBaENvQnFaOzs7bUJBQXpCbEUsZUFJTkk7bUJBSm9CNEQsYUFBQUM7OztpQkFXRDtrQkFYa0JFO2tCQUFqQkM7b0JBV0Q7b0RBWlgzRixVQUN1QnlGO2tCQUF6QmxFLGVBSU5JO2tCQUpvQjRELGFBQUFJO2tCQTRDcEJWLFFBNUMrQlE7a0JBNEN4QlAsUUE1QzhCUTs7OztlQTZDekMsZUFESVQsT0FBT0M7O2FBQ1M7Ozs7R0FBQztZQUd2QlUsSUFBY3haLEdBQUd3WSxRQUFRQyxVQUFpQmdCO2FBQ3hDQyxJQUFFM1g7eUJBQ3lFLE9BQTdFLFdBRmMvQixHQUNWK0IsR0FDNEU7S0FBOUMsY0FBQTtLQUFnQyxPQUFBO0lBQWU7SUFFN0UsWUFwQkpvRixPQWlCRXVTLEtBRGVsQixRQUFRQyxVQUFpQmdCO3VCQUtqQzs7O0tBQ0tYO0tBQVBEOzBEQUFPQzsyQ0FONEJXLE1BTW5DWjs7Ozs7Ozs7WUFLUGMsZ0JBQWlCM1osR0FBR3dZLFFBQVFDLFVBQVNGO2FBQ25DbUIsSUFBRTNYO3lCQUFpQyxPQUE3QixXQURTL0IsR0FDYitCLEdBQW9DO0tBQWQsT0FBQTtJQUFlO0lBQzNDLFVBbENFdVcsWUFpQ0VvQixLQURrQmxCLFFBQVFDLFVBQVNGO0lBRXZDLE9BQUE7R0FBNkQ7WUFHM0RxQixRQUFTNVosR0FBR3dZLFFBQVFDLFVBQVNvQjthQUMzQkgsSUFBRTNYO3lCQUNvRSxPQUF4RSxXQUZTL0IsR0FDTCtCLEdBQ3VFO0tBQTlDLGNBQUE7S0FBZ0MsT0FBQTtJQUFlO0lBRTlFLFVBcEJFeVgsSUFpQkVFLEtBRFVsQixRQUFRQyxVQUFTb0I7SUFJL0IsT0FBQTtHQUFvRDs7Ozs7O1FBMUdoRDVUO1FBREFrUDtRQURBQztRQURBQzs7U0FEQ0w7U0FJRE07U0FEQUM7U0FEQUM7U0FEQUM7U0FEQ25WO1NBQUFvVjtTQUFBN1Q7U0FBQXNCO1NBQUFxVDtTQUFBRztTQUFBQztTQUFBQztTQUFBSjs7UUFBTGhWO09BU0UyVztPQWlGQW9CO09BZ0JBSTtPQWhDQXpTO09BTEFtUjtPQWdDQXFCOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzVIQUcsTUFBTS9aLEdBQUdDO0lBQUksT0FBTzs7c0JBQUsrQixHQUFHQyxNQUFNQztjQUFRLE9BQUEsb0JBQXBDbEMsR0FBOEMsV0FBM0NDLEdBQWdCK0IsSUFBR0MsTUFBTUM7YUFBbUM7R0FBQztZQUN0RThYLGFBQWEvWjtJQUFJLE9BQU87OEJBQUsrQixVQUFXRSxNQUFRLE9BQUEsV0FBbkNqQyxHQUEyQmlDLE1BQVhGLEdBQTJCO0dBQUM7WUFDekRvRCxRQUFRQztJQUFTLE9BQU87O3NCQUFLckQsR0FBR0MsTUFBTUM7Y0FBUSx1QkFBdENtRDs7O3lCQUFBQTs7d0RBQUFBO3lEQUFBQTs7Y0FBc0MsT0FBQSx5QkFBakJyRCxHQUFHQyxNQUFNQzthQUE0QztHQUFDO1lBRW5Gb0QsWUFBWTJVO0lBQ2QsSUFBUTVVOztNQUFBQTs0QkFBb0IsT0FBQSxXQURkNFUsTUFGWjdVLFFBR01DO0lBQ1IsT0FKRUQsUUFHTUM7R0FDTTtHQUlMO0lBQVB5QixPQVRBa1Q7SUFVQWhSLFNBVkFnUjtJQVdBN1AsUUFYQTZQO0lBWUFyUCxRQVpBcVA7SUFhQTdPLFFBYkE2TztJQWNBOU4sUUFkQThOO0lBZUF0TixZQWZBc047SUFnQkE3SyxVQWhCQTZLO0lBaUJBL0osU0FqQkErSjtJQWtCQXpKLE9BbEJBeUo7SUFtQkE1STtNQW5CQTRJO1FBbUJ5QjtJQUN6QjNJO01BcEJBMkk7UUFvQjJCO0lBQzNCMUk7TUFyQkEwSTtRQXFCMkI7SUFDM0JsSTtNQXRCQWtJO1FBc0IyQjtJQUMzQmpJO01BdkJBaUk7UUF1QjJCO0lBQzNCNUosUUF6QkEySixNQWtCQTlKO1lBU0FoSixPQUFPQyxPQUFNQztJQUNmLE9BQU87O3NCQUFLRixRQUFRaEYsTUFBTUM7Y0FDeEIsU0FEVStFO21CQUVGMkwsTUFGRTNMO2VBRW1DLE9BQUE7aUNBSHRDQyxPQUdDMEwsS0FGVTNRLE1BRTJCLHNCQUZyQkM7O2tCQUdmeVEsTUFIQzFMO2NBR29DLE9BQUE7Z0NBSmpDRSxPQUlKd0wsS0FIUzFRLE1BRzRCLHNCQUh0QkM7YUFHNEM7R0FBQztZQUdyRWtGLE9BQU9DLE1BQUtDO0lBQ2Q7S0FBNkIsdUJBQ3RCQyxlQUFNLFdBQU5BO1NBQ0dDO0tBQU8sV0FBUEE7SUFBa0I7SUFGQyxPQW5DM0J1UyxNQTJCQTlTLE9BT09JLE1BQUtDO0dBR2M7WUFHMUJ6RCxLQUFLcUQsT0FBTUM7SUFDYixPQUFPOzs2QkFBaUJsRixNQUFNQztjQUF2QjtlQUFXeVE7ZUFBTEM7ZUFDUHNILFNBQU8sb0JBRk5oVCxPQUNNMEwsS0FBVzNRLE1BQU1DO2VBRXhCaVksU0FBTyxvQkFIQWhULE9BQ0t3TCxLQUFNMVEsTUFDbEJpWTtjQUVKLE9BRElDO2FBQ0M7R0FBQTtZQUdMcFQsT0FBT0M7SUFDVDtLQUFpQyxZQUNyQjtTQUNIb0w7S0FBUyxXQUFUQTtJQUFzQjtJQUZFLE9BaEQvQjJILE1BMkJBOVMsZUFvQk9EO0dBR3NCO1lBRzdCdEQsS0FBSytQO0lBQ1AsT0FBTzs7c0JBQUsvUCxNQUFNekIsTUFBTUM7Y0FDdEI7ZUFBNEMsTUFBQSx5QkFEdEJBO2VBQ2xCRyxTQUFTO2VBQ1R3RixTQUFTLHlCQUZIbkU7ZUFJUjtpQkFBQTtzREFGRW1FLGFBQUFBO2VBQ0EzQjtpQkFGUyxnREFER2pFLE1BQ1pJOzJCQU0yREgsTUFBS1YsS0FBSVM7ZUFDdEUsT0FBOEI7aUNBVDNCd1IsT0FRK0RqUyxLQUFJUyxNQUN4QyxzQkFEK0JDO2NBQ1Q7Y0FEdEIsVUFBQSxzQkFQVkE7Y0FPb0MsT0FBQSwwQkFQaER3QixNQUdOd0M7YUFLbUQ7R0FBQztZQUd4RDlCLE1BQU1wRSxHQUFJLDBCQUFBLE9BakVWK1osTUFxREFyVyxLQVlNMUQsU0FBbUM7WUFDekNxSSxJQUFJckksR0FBSSxPQWxFUitaLE1Ba0VJL1osaUIsaUJBQXdCO1lBQzVCcUYsT0FBT3JGO0lBQUksT0FuRVgrWjthQW1FTy9aOzs7OzZDQUFJO2NBQUEsT0FBQTs7R0FBcUI7WUFFaENzQyxHQUFHQyxLQUFJQztJQUNULE9BQU87O3NCQUFLdkMsR0FBR2dDLE1BQU1DO2NBQ25CO2VBQTRDLE1BQUEseUJBRHpCQTtlQUNmRyxTQUFTO2VBSVEsTUFBQTtlQUhqQjZEO2lCQUdGO3dEQUxXakUsY0FDVEk7MkJBTStCSCxNQUFLRDtlQUM5QjtnQkFBSkQ7a0JBQUk7b0RBVFBPLEtBUXFDTixNQU5wQ0k7ZUFRRixPQUFBLG9CQVZLRyxLQVVPLFdBVEp2QyxHQVFKK0IsSUFEa0NDLE1BQUxDO2NBRUo7Y0FGRCxPQUFBLDBCQUwxQmdFLE9BRmVoRTthQVNhO0dBQUM7WUFHakNrWSxTQUFTQyxTQUFRQztJQUNuQjtzQjtXQW5GRVAsTUFxREFyVyxLQWJBRyxLQTBDU3dXLFNBQVFDO0dBQ3VEO1lBR3hFQyxTQUFTQztJQUFVO0lBQU0sT0F0RnpCVCxNQXFEQXJXLEtBaUNTOFc7R0FBbUU7WUFFNUV6RixNQUFNc0YsU0FBUUM7SUFDaEI7SUFBTSxPQXpGSlAsTUFrRkFLLFNBTU1DLFNBQVFDO0dBQ2lEO1lBRy9EdEYsTUFBTXdGO0lBQVU7SUFBTSxPQTVGdEJULE1Bc0ZBUSxTQU1NQztHQUFrRTs7Ozs7O09BbEZ4RTFUO09BQ0FrQztPQU9BaUg7T0FPQUc7T0FiQWpHO09BQ0FRO09BQ0FRO09BQ0FlO09BQ0FRO09BQ0F5QztPQUVBb0I7T0E0QkF4SjtPQU1BckQ7T0FZQVU7T0FDQWlFO09BQ0FoRDtPQTNCQXhCO09BYkFvRDtPQU9BRztPQWRBZ0s7T0FDQUM7T0FDQUM7T0FDQVE7T0FDQUM7T0E2Q0F6UDtPQW1CQXlTO09BSUFDO09BVkFvRjtPQUlBRztPQXJGQVA7T0FEQUQ7T0FJQXpVO09BRkFGOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7R0NPYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQzRIWHFWO0lBdUZBQztJQThGQUM7SUFzRkFDO0lBcUpJQztJQWtGQUM7SUFrSEFDO0lBd0RBQztJQW9JSkM7SUF3REFDO0lBa0dBQztJQTZDQUM7O0lBS0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUExbENGQyxrQkFBbUJiLFVBQVVjLFdBQVVDO0lBQ3pDO0tBQXVFLE9BQUEsV0FEeENELFdBQVVDOztLQUNsQixPQUFBLHVCQURGZjs7O0dBQ2dFO1lBSW5GZ0IsZUFDR0MsTUFBTUMsUUFBUUMsTUFBS0o7SUFBSyxPQUFLLFdBQTdCRSxNQUE2QixXQUF2QkMsUUFBYUgsR0FBTEk7R0FBOEI7WUFJL0NDLGFBV0dILE1BQU1DLFFBQVFDLE1BQU1FLE9BQU9yQixVQUFVYyxXQUFVQztJQUM1QyxJQUFKTyxJQWpCRk4sOEIsZUFnQlNFLFFBQVFDLE1BQWlDSjtJQUVqRCxPQUFBLFdBRnNCTSxPQUEyQk4sR0FDaERPO2NBQ2MsV0FGYkwsTUFDREs7Y0F0QkZULGtCQXFCOEJiLFVBQVVjLFdBQVVDO0dBRWtCO1lBSXBFUSxhQUlHQyxZQUFZQyxhQUFhQyxPQUFNWDtJQUFLLE9BQUEsV0FBeEJVLGFBQW9DLFdBQWhERCxZQUErQlQsR0FBTlcsUUFBQUE7R0FBaUQ7WUFJN0VDO0lBV0dILFlBQVlDLGFBQWFDLE9BQU9MLE9BQU9yQixVQUFVYyxXQUFVQztJQUN4RCxJQUFKTyxJQXBCRkMsYUFtQkdDLFlBQVlDLGFBQWFDLE9BQWtDWDtJQUU3RCxPQUFBLFdBRmtDTSxPQUEyQk4sR0FDNURPO2NBQUFBO2NBL0NGVCxrQkE4QzBDYixVQUFVYyxXQUFVQztHQUVDO1lBRy9EYSxxQkFBc0JDLGVBQWVDLE1BQU05QixVQUFVYyxXQUFVQztJQUNqRSxPQUFHLFdBRHFCYyxlQUF5Q2QsR0FBMUJlO2NBQTBCZjtjQW5EL0RGLGtCQW1EMkNiLFVBQVVjLFdBQVVDO0dBQ1c7WUFJMUVnQixjQUFjQyxNQUFLQztJQUNyQixNQUFBO3VEQURnQkQsT0FBS0M7R0FDd0M7Ozs7WUFNekRDLFNBQVVuQixHQUNaLGNBRFlBLElBRUcsNEJBRkhBLEdBR1E7WUFJbEJvQixTQUFVcEI7SUFDWixjQUVtQixvQkFIUEEsS0FFRyxvQkFGSEE7R0FHNEI7R0FpQjFDLElBS1FxQix3QkFMUkMsMkJBQUFDO0dBQUEsU0FBQUMsS0FBQXhCLEdBQUEsT0FBQSxXQUFBdUIsTUFBQXZCLEdBQXlFOztJQUF6RXlCO0lBQUFDO29EQUtRTCxTQUxSSzs7Ozs7Ozs7Ozs7SUFTSUM7SUFDQUM7SUFDQWI7SUFNQU47SUFDQUM7SUFDQUM7SUFFQVo7SUFUQThCO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO1lBUUFDLE1BQU1sQyxHQUFJLE9BdkZaUSxhQWdGRUMsWUFDQUMsYUFDQUMsT0FLTVgsR0FBa0Q7WUFFeERtQyxJQUFJbkM7SUFBSSxPQWpGVlk7YUF3RUVILFlBQ0FDLGFBQ0FDLGNBQ0ExQixVQUNBYyxXQUtJQztHQUE0RTtZQUtoRm9DLGtCQUFrQnBDLEdBQUksT0FQdEJrQyxNQU9rQmxDLEdBQVc7WUFDN0JxQyxnQkFBZ0JyQyxHQUFJLE9BTnBCbUMsSUFNZ0JuQyxHQUFTO1lBQ3pCc0MsWUFBWXRDLEdBQUksT0FBSkEsRUFBSztZQUdqQnVDLGVBQWV2QyxHQUFJLE9BWm5Ca0MsTUFZZWxDLEdBQVc7WUFDMUJ3QyxhQUFheEMsR0FBSSxPQVhqQm1DLElBV2FuQyxHQUFTO1lBRXRCeUMsZUFBZXpDO0lBQW1DLFdBbEVsRG1CLFNBa0VlbkI7SUFBVSxPQWZ6QmtDLE1BZXlCO0dBQTZDO1lBSXRFUSxhQUFhMUM7SUFBK0IsV0F0RTVDbUIsU0FzRWFuQjtJQUFRLE9BakJyQm1DLElBaUJxQjtHQUEyQztZQUNoRVEsZUFBZTNDLEdBQUksT0FwQm5Ca0MsTUFvQnlCLDRCQUFWbEMsSUFBcUM7WUFDcEQ0QyxhQUFhNUMsR0FBSSxPQW5CakJtQyxJQW1CcUIsMEJBQVJuQyxJQUFpQztZQUM5QzZDLGVBQWU3QyxHQUFJLE9BdEJuQmtDLDBCQXNCZWxDLElBQXFDO1lBQ3BEOEMsYUFBYTlDLEdBQUksT0FyQmpCbUMsSUFxQnFCLDBCQUFSbkMsSUFBaUM7WUFHOUMrQyxjQUFjL0MsR0FBSSxPQTFCbEJrQyxNQTBCY2xDLEdBQVc7WUFDekJnRCxhQUFhaEQsR0FBSSxPQXpCakJtQyxJQXlCYW5DLEdBQVM7R0FHQztJQUF2QmlEO01BQXVCLDBDQTFDdkJwQixXQUNBQztJQTJDQW9CO01BQ0Y7bUVBakNFaEI7Z0JBcUNtRWxDLEdBQ25FLE9BQVEsa0JBRDJEQSxHQXJDbkVrQyxNQXFDbUVsQyxJQUNsRDtHQURuQjtJQURFbUQ7TUFDRjs7WUFLSUMscUI7WUFDQUMscUI7WUFDQUMscUI7WUFDQUMscUI7WUFDQUMscUI7WUFDQUMsc0I7WUFHRUMsVUFBTTFELEdBQUVPLEdBQUksT0FsRGhCMkIsTUFrRFVsQyxJQUFFTyxPQUE4QjtZQUN0Q29ELFVBQU0zRCxHQUFFTyxHQUFJLE9BbkRoQjJCLE1BbURVbEMsSUFBRU8sT0FBOEI7WUFDdENxRCxVQUFNNUQsR0FBRU8sR0FBSSxPQXBEaEIyQixlQW9EVWxDLEdBQUVPLElBQThCO1lBQ3RDc0QsVUFBTTdELEdBQUVPLEdBQUksT0FyRGhCMkIsZUFxRFVsQyxHQUFFTyxJQUE4QjtHQUo5QjtJQUFBLFdBQ1JtRCxXQUNBQyxXQUNBQyxXQUNBQztJQVpHLFFBQ0xULFVBQ0FDLFVBQ0FDLFVBQ0FDLFVBQ0FDLFVBQ0FDO0lBaUJFSztJQUxSQztJQUFBQztHQUFBLFNBQUFDLE9BQUFqRSxHQUFBLE9BQUEsV0FBQWdFLFFBQUFoRSxHQUF5RTs7SUFBekVrRTtJQUFBQztvREFLUUwsV0FMUks7Ozs7Ozs7Ozs7SUFTSUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFLQXJFO0lBSkFzRTtJQUNBQztJQUNBQztJQUNBQztZQUVBeEUsbUI7R0FHUztJQUZUeUU7SUFFQUMsU0FBUztJQUNUQztJQUNBQztJQUVBQztJQUNBQztJQU5BN0U7WUFTQThFLFFBQU1sRjtJQUFJLE9Bck1aQyw4QixlQTBMRUUsUUFFQUMsTUFTTUo7R0FBK0M7WUFFckRtRixNQUFJbkY7SUFBSSxPQWxNVks7NEI7YUFxTEVGO2FBRUFDO2FBRUEwRTthQUVBNUY7YUFDQThGO2FBTUloRjtHQUF5RTtZQUk3RW9GLFFBQVFwRixHQUFJLE9BM01kQyxlQXlMRUMsTUFFQTBFLFVBRUFDLFFBY1E3RSxHQUF3RDtZQUVoRXFGLE1BQU1yRjtJQUNSLE9Bek1BSzthQW9MRUgsTUFFQTBFLFVBRUFDLFFBRUFFLFNBQ0E3RixZQUVBK0YsYUFXTWpGO0dBUUw7WUFLRHNGLG9CQUFrQnRGLEdBQUksT0FyQnRCa0YsUUFxQmtCbEYsR0FBVztZQUM3QnVGLGtCQUFnQnZGLEdBQUksT0FwQnBCbUYsTUFvQmdCbkYsR0FBUztZQUN6QndGLGNBQVl4RixHQUFJLE9BQUpBLEVBQUs7WUFHakJ5RixnQkFBZ0J6RixHQUFJLE9BMUJwQmtGLFFBMEJnQmxGLEdBQVc7WUFDM0IwRixjQUFjMUYsR0FBSSxPQXpCbEJtRixNQXlCY25GLEdBQVM7WUFDdkIyRixnQkFBZ0IzRixHQUFJLE9BdEJwQm9GLFFBMUlBaEUsU0FnS2dCcEIsSUFBK0I7WUFDL0M0RixjQUFjNUYsR0FBSSxPQXJCbEJxRixNQTVJQWpFLFNBaUtjcEIsSUFBNkI7WUFDM0M2RixnQkFBZ0I3RixHQUFJLE9BeEJwQm9GLFFBd0I0QiwyQkFBWnBGLElBQW1DO1lBQ25EOEYsY0FBYzlGLEdBQUksT0F2QmxCcUYsTUF1QndCLDJCQUFWckYsSUFBaUM7WUFDL0MrRixnQkFBZ0IvRixHQUFJLE9BMUJwQm9GLFFBMEJnQnBGLEdBQWE7WUFDN0JnRyxjQUFjaEcsR0FBSSxPQXpCbEJxRixNQXlCY3JGLEdBQVc7WUFHekJpRyxhQUFhakcsR0FBSSxPQXBDakJrRixRQW9DYWxGLEdBQVc7WUFDeEJrRyxZQUFZbEcsR0FBSSxPQW5DaEJtRixNQW1DWW5GLEdBQVM7R0FHRTtJQUF2Qm1HO01BQXVCLDBDQXpEdkI1QixhQUNBQztJQTBEQTRCO01BQ0Y7bUVBM0NFbEI7Z0JBK0NtRWxGLEdBQ25FLE9BQVEsV0F2RFI4RSxTQXNEbUU5RSxHQS9DbkVrRixRQStDbUVsRixJQUNsRDtHQURuQjtJQURFcUc7TUFDRjs7WUFLSUMsc0I7WUFDQUMsc0I7WUFDQUMsc0I7WUFDQUMsc0I7WUFDQUMsc0I7WUFDQUMsc0I7WUFHRUMsVUFBTTVHLEdBQUVPLEdBQUksT0E1RGhCMkUsUUE0RFVsRixJQUFFTyxPQUE4QjtZQUN0Q3NHLFVBQU03RyxHQUFFTyxHQUFJLE9BN0RoQjJFLFFBNkRVbEYsSUFBRU8sT0FBOEI7WUFDdEN1RyxVQUFNOUcsR0FBRU8sR0FBSSxPQTlEaEIyRSxpQkE4RFVsRixHQUFFTyxJQUE4QjtZQUN0Q3dHLFVBQU0vRyxHQUFFTyxHQUFJLE9BL0RoQjJFLGlCQStEVWxGLEdBQUVPLElBQThCO0dBSjlCO0lBQUEsYUFDUnFHLFdBQ0FDLFdBQ0FDLFdBQ0FDO0lBWkc7O09BQ0xUO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOztJQWlCRUs7SUFMUkM7SUFBQUM7R0FBQSxTQUFBQyxPQUFBbkgsR0FBQSxPQUFBLFdBQUFrSCxRQUFBbEgsR0FBeUU7O0lBQXpFb0g7SUFBQUM7b0RBS1FMLFdBTFJLOzs7Ozs7Ozs7OztJQVNJQztJQUNBQztJQUNBQztJQU1BQztJQUNBQztJQUNBQztJQUVBQztJQVRBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztZQVFBQyxRQUFNbEk7SUFBSSxPQTVRWlEsYUFxUUVpSCxjQUNBQyxlQUNBQyxTQUtNM0g7R0FBa0Q7WUFFeERtSSxNQUFJbkk7SUFBSSxPQXRRVlk7YUE2UEU2RzthQUNBQzthQUNBQzs7YUFDQXhJO2FBQ0F5STthQUtJNUg7R0FBNEU7WUFLaEZvSSxvQkFBa0JwSSxHQUFJLE9BUHRCa0ksUUFPa0JsSSxHQUFXO1lBQzdCcUksa0JBQWdCckksR0FBSSxPQU5wQm1JLE1BTWdCbkksR0FBUztZQUN6QnNJLGNBQVl0SSxHQUFJLE9BQUpBLEVBQUs7WUFHakJ1SSxRQUFRdkksR0FBSSxPQUFKQSxFQUFLO1lBRWJ3SSxpQkFBZXhJO0lBQW1DLFdBdFBsRG1CLFNBc1BlbkI7SUFBVSxPQWR6QmtJLFFBY3lCO0dBQTZDO1lBSXRFTyxlQUFhekk7SUFBK0IsV0ExUDVDbUIsU0EwUGFuQjtJQUFRLE9BaEJyQm1JLE1BZ0JxQjtHQUEyQztZQUNoRU8saUJBQWUxSTtJQUFJLE9BbkJuQmtJLFFBbUJ5Qiw0QkFBVmxJO0dBQXFDO1lBQ3BEMkksZUFBYTNJLEdBQUksT0FsQmpCbUksTUFrQnFCLDBCQUFSbkksSUFBaUM7WUFDOUM0SSxpQkFBZTVJLEdBQUksT0FyQm5Ca0ksNEJBcUJlbEksSUFBcUM7WUFDcEQ2SSxlQUFhN0ksR0FBSSxPQXBCakJtSSxNQW9CcUIsMEJBQVJuSSxJQUFpQztZQUc5QzhJLGVBQWU5SSxHQUFJLE9BekJuQmtJLFFBeUJlbEksR0FBVztZQUMxQitJLGdCQUFjL0ksR0FBSSxPQXhCbEJtSSxNQXdCY25JLEdBQVM7R0FHQTtJQUF2QmdKO01BQXVCLDBDQXpDdkJuQixhQUNBQztJQTBDQW1CO01BQ0Y7bUVBaENFZjtnQkFvQ21FbEksR0FDbkUsT0FBUSxvQkFEMkRBLEdBcENuRWtJLFFBb0NtRWxJLElBQ2xEO0dBRG5CO0lBREVrSjtNQUNGOztZQUtJQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUdFQyxVQUFNekosR0FBRU8sR0FBSSxPQWpEaEIySCxRQWlEVWxJLElBQUVPLE9BQThCO1lBQ3RDbUosVUFBTTFKLEdBQUVPLEdBQUksT0FsRGhCMkgsUUFrRFVsSSxJQUFFTyxPQUE4QjtZQUN0Q29KLFVBQU0zSixHQUFFTyxHQUFJLE9BbkRoQjJILGlCQW1EVWxJLEdBQUVPLElBQThCO1lBQ3RDcUosVUFBTTVKLEdBQUVPLEdBQUksT0FwRGhCMkgsaUJBb0RVbEksR0FBRU8sSUFBOEI7R0FKOUI7SUFBQSxhQUNSa0osV0FDQUMsV0FDQUMsV0FDQUM7SUFaRzs7T0FDTFQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7O0lBaUJFSztJQUxSQztJQUFBQztHQUFBLFNBQUFDLE9BQUFoSyxHQUFBLE9BQUEsV0FBQStKLFFBQUEvSixHQUF5RTs7SUFBekVpSztJQUFBQztvREFLUUwsV0FMUks7Ozs7Ozs7Ozs7SUFTSUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFLQUM7SUFKQUM7SUFDQUM7SUFDQUM7SUFDQUM7WUFFQUMscUI7R0FHUztJQUZUQztJQUVBQyxXQUFTO0lBQ1RDO0lBQ0FDO0lBRUFDO0lBQ0FDO0lBTkFDO1lBU0FDLFFBQU1wTDtJQUFJLE9BelhaQyw4QixlQThXRTJLLFVBRUFPLFFBU01uTDtHQUErQztZQUVyRHFMLE1BQUlyTDtJQUFJLE9BdFhWSzs0QjthQXlXRXVLO2FBRUFPO2FBRUFKO2FBRUEzTDthQUNBNkw7YUFNSWpMO0dBQXlFO1lBSTdFc0wsVUFBUXRMO0lBQUksT0EvWGRDLGVBNldFc0ssUUFFQU0sWUFFQUMsVUFjUTlLO0dBQXdEO1lBRWhFdUwsUUFBTXZMO0lBQ1IsT0E3WEFLO2FBd1dFa0s7YUFFQU07YUFFQUM7YUFFQUU7YUFDQTVMO2FBRUE4TDthQVdNbEw7R0FRTDtZQUtEd0wsb0JBQWtCeEwsR0FBSSxPQXJCdEJvTCxRQXFCa0JwTCxHQUFXO1lBQzdCeUwsa0JBQWdCekwsR0FBSSxPQXBCcEJxTCxNQW9CZ0JyTCxHQUFTO1lBQ3pCMEwsY0FBWTFMLEdBQUksT0FBSkEsRUFBSztZQUdqQjJMLFNBQVMzTCxHQUFJLE9BQUpBLEVBQUs7WUFDZDRMLGtCQUFnQjVMLEdBQUksT0FyQnBCc0wsVUE5VEFsSyxTQW1WZ0JwQixJQUErQjtZQUMvQzZMLGdCQUFjN0wsR0FBSSxPQXBCbEJ1TCxRQWhVQW5LLFNBb1ZjcEIsSUFBNkI7WUFDM0M4TCxrQkFBZ0I5TDtJQUFJLE9BdkJwQnNMLFVBdUI0QiwyQkFBWnRMO0dBQW1DO1lBQ25EK0wsZ0JBQWMvTCxHQUFJLE9BdEJsQnVMLFFBc0J3QiwyQkFBVnZMLElBQWlDO1lBQy9DZ00sa0JBQWdCaE0sR0FBSSxPQXpCcEJzTCxVQXlCZ0J0TCxHQUFhO1lBQzdCaU0sZ0JBQWNqTSxHQUFJLE9BeEJsQnVMLFFBd0JjdkwsR0FBVztZQUd6QmtNLGNBQWNsTSxHQUFJLE9BbkNsQm9MLFFBbUNjcEwsR0FBVztZQUN6Qm1NLGVBQWFuTSxHQUFJLE9BbENqQnFMLE1Ba0NhckwsR0FBUztHQUdDO0lBQXZCb007TUFBdUIsMENBeER2QjlCLGFBQ0FFO0lBeURBNkI7TUFDRjttRUExQ0VqQjtnQkE4Q21FcEwsR0FDbkUsT0FBUSxXQXREUitLLFNBcURtRS9LLEdBOUNuRW9MLFFBOENtRXBMLElBQ2xEO0dBRG5CO0lBREVzTTtNQUNGOztZQUtJQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUdFQyxVQUFNN00sR0FBRU8sR0FBSSxPQTNEaEI2SyxRQTJEVXBMLElBQUVPLE9BQThCO1lBQ3RDdU0sVUFBTTlNLEdBQUVPLEdBQUksT0E1RGhCNkssUUE0RFVwTCxJQUFFTyxPQUE4QjtZQUN0Q3dNLFVBQU0vTSxHQUFFTyxHQUFJLE9BN0RoQjZLLGlCQTZEVXBMLEdBQUVPLElBQThCO1lBQ3RDeU0sVUFBTWhOLEdBQUVPLEdBQUksT0E5RGhCNkssaUJBOERVcEwsR0FBRU8sSUFBOEI7R0FKOUI7SUFBQSxhQUNSc00sV0FDQUMsV0FDQUMsV0FDQUM7SUFaRzs7T0FDTFQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7O0lBeUVNSztJQUxSQztJQUFBQztHQUFBLFNBQUFDLE9BQUFwTixHQUFBLE9BQUEsV0FBQW1OLFFBQUFuTixHQUF5RTtHQVl6RDtJQVpoQnFOO0lBQUFDO29EQUtRTCxXQUxSSzs7Ozs7Ozs7Ozs7SUFTSUM7SUFDQUM7SUFDQUM7SUFDQUMsY0FBWTtJQUNaQyxjQUFZO0lBSVpDO0lBQ0FDO0lBQ0FDO0lBRUFDO0lBUEFDO0lBQ0FDO0lBQ0FDO1lBUUFDLFFBQU1uTztJQUFJLE9BdmZoQlEsYUFnZk1vTixjQUNBQyxlQUNBQyxTQUtNOU47R0FBa0Q7WUFFeERvTyxNQUFJcE87SUFBSSxPQWpmZFk7YUF3ZU1nTjthQUNBQzthQUNBQzs7YUFDQXpPO2FBQ0EwTzthQUtJL047R0FBNEU7WUFLaEZxTyxjQUFjck8sR0FBSSxPQUFBLDRCQUFKQSxHQUE2QjtZQUMzQ3NPLGNBQWN0TyxHQUFJLE9BQUEsNEJBQUpBLEdBQTZCO1lBRzNDdU8sVUFBUXZPLEdBQUssT0FBTEEsRUFBTTtZQUNkd08sU0FBU3hPLEdBQUssT0FBTEEsRUFBTTtZQUNmeU8saUJBQWV6TztJQUFJLE9BYm5CbU8sUUFheUIsNEJBQVZuTztHQUFxQztZQUNwRDBPLGVBQWExTyxHQUFJLE9BWmpCb08sTUFZcUIsMEJBQVJwTyxJQUFpQztZQUM5QzJPLGlCQUFlM08sR0FBSSxPQWZuQm1PLDRCQWVlbk8sSUFBcUM7WUFDcEQ0TyxlQUFhNU8sR0FBSSxPQWRqQm9PLE1BY3FCLDBCQUFScE8sSUFBaUM7WUFHOUM2TyxlQUFlN08sR0FBSSxPQW5CbkJtTyxRQW1CZW5PLEdBQVc7WUFDMUI4TyxnQkFBYzlPLEdBQUksT0FsQmxCb08sTUFrQmNwTyxHQUFTO0dBSXpCO0lBREUrTztNQUNGLDBDQXBDRXJCLGFBQ0FDO0lBc0NBcUI7TUFDRjttRUE1QkViO2dCQWdDbUVuTyxHQUNuRSxPQUFRLG9CQUQyREEsR0FoQ25FbU8sUUFnQ21Fbk8sSUFDbEQ7R0FEbkI7SUFERWlQO01BQ0Y7O1lBS0lDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBQ0FDLHNCO1lBR0VDLFVBQU14UCxHQUFFTyxHQUFJLE9BN0NoQjROLFFBNkNVbk8sSUFBRU8sT0FBOEI7WUFDdENrUCxVQUFNelAsR0FBRU8sR0FBSSxPQTlDaEI0TixRQThDVW5PLElBQUVPLE9BQThCO1lBQ3RDbVAsVUFBTTFQLEdBQUVPLEdBQUksT0EvQ2hCNE4saUJBK0NVbk8sR0FBRU8sSUFBOEI7WUFDdENvUCxVQUFNM1AsR0FBRU8sR0FBSSxPQWhEaEI0TixpQkFnRFVuTyxHQUFFTyxJQUE4QjtHQUo5QjtJQUFBLGFBQ1JpUCxXQUNBQyxXQUNBQyxXQUNBQztJQVpHOztPQUNMVDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7SUFpQkVLO0lBTFJDO0lBQUFDO0dBQUEsU0FBQUMsT0FBQS9QLEdBQUEsT0FBQSxXQUFBOFAsUUFBQTlQLEdBQXlFOztJQUF6RWdRO0lBQUFDO29EQUtRTCxXQUxSSzs7Ozs7Ozs7OztJQVNJQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUlBQztJQUhBQztJQUNBQztJQUNBQztZQUVBQyxxQjtHQUdTO0lBRlRDO0lBQ0FDO0lBQ0FDLFdBQVMsb0JBRFREO0lBRUFFO0lBQ0FDO0lBRUFDO0lBQ0FDO1lBR0FDLFFBQU1uUjtJQUFJLE9BaG1CaEJDLDhCLGVBcWxCTTBRLFVBRUFFLFFBU003UTtHQUErQztZQUVyRG9SLE1BQUlwUjtJQUFJLE9BN2xCZEs7NEI7YUFnbEJNc1E7YUFFQUU7YUFFQUU7YUFFQXpSO2FBQ0EyUjthQU1JalI7R0FBeUU7WUFJN0VxUixVQUFRclI7SUFBSSxPQXRtQmxCQyxlQW9sQk1zUSxRQUVBSyxZQUVBRSxVQWNROVE7R0FBd0Q7WUFJaEVzUixRQUFNdFI7SUFDUixPQXRtQkpLO2FBK2tCTWtRO2FBRUFLO2FBRUFFO2FBRUFFO2FBQ0ExUjthQUVBNFI7YUFhTWxSO0dBUUw7WUFLRHVSLG9CQUFvQnZSO0lBQ3RCLE9BQXdCO2FBQUEsZUFBVSxvQkFEWkEsSUEvQnBCOFE7R0FnQytEO1lBSS9EVSxrQkFBa0J4UjtJQUFJLE9BMUJ0Qm9SLE1BMEIwQiw0QkFBUnBSO0dBQW1DO1lBQ3JEeVIsb0JBQW9CelIsR0FBSSxPQUFKQSxFQUE2QjtZQUVqRDBSLGtCQUFrQjFSO0lBQ3BCLE9BRG9CQTtjQUVmLDRCQUZlQTtjQXBvQnhCRixrQkFnbUJNUiwwQkFvQ2tCVTtHQUc0QztZQUk5RDJSLG9CQUFvQjNSLEdBQUksT0FoQ3hCcVIsVUFnQ29CclIsR0FBYTtZQUNqQzRSLGtCQUFrQjVSLEdBQUksT0E3QnRCc1IsUUE2QmtCdFIsR0FBVztZQUM3QjZSLGNBQWM3UixHQUFJLE9BQUEseUJBQUpBLEdBQXVCO1lBQ3JDOFIsZ0JBQWdCOVIsR0FBSSxPQUFKQSxFQUFLO1lBR3JCK1IsV0FBUy9SLEdBQUssT0FBTEEsRUFBTTtZQUNmZ1MsVUFBVWhTLEdBQUssT0FBTEEsRUFBTTtZQUNoQmlTLGtCQUFnQmpTO0lBQUksT0F4Q3BCcVIsVUF3QzRCLDJCQUFaclI7R0FBbUM7WUFDbkRrUyxnQkFBY2xTLEdBQUksT0FyQ2xCc1IsUUFxQ3dCLDJCQUFWdFIsSUFBaUM7WUFDL0NtUyxrQkFBZ0JuUyxHQUFJLE9BMUNwQnFSLFVBMENnQnJSLEdBQWE7WUFDN0JvUyxnQkFBY3BTLEdBQUksT0F2Q2xCc1IsUUF1Q2N0UixHQUFXO1lBR3pCcVMsY0FBY3JTLEdBQUksT0FwRGxCbVIsUUFvRGNuUixHQUFXO1lBQ3pCc1MsZUFBYXRTLEdBQUksT0FuRGpCb1IsTUFtRGFwUixHQUFTO0dBSXhCO0lBREV1UztNQUNGLDBDQTFFRWxDLGFBQ0FDO0lBNEVBa0M7TUFDRjttRUE3REVyQjtnQkFpRW1FblIsR0FDbkUsT0FBUSxXQXpFUitRLFNBd0VtRS9RLEdBakVuRW1SLFFBaUVtRW5SLElBQ2xEO0dBRG5CO0lBREV5UztNQUNGOztZQUtJQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxzQjtZQUNBQyxxQjtZQUdFQyxVQUFNaFQsR0FBRU8sR0FBSSxPQTlFaEI0USxRQThFVW5SLElBQUVPLE9BQThCO1lBQ3RDMFMsVUFBTWpULEdBQUVPLEdBQUksT0EvRWhCNFEsUUErRVVuUixJQUFFTyxPQUE4QjtZQUN0QzJTLFVBQU1sVCxHQUFFTyxHQUFJLE9BaEZoQjRRLGlCQWdGVW5SLEdBQUVPLElBQThCO1lBQ3RDNFMsVUFBTW5ULEdBQUVPLEdBQUksT0FqRmhCNFEsaUJBaUZVblIsR0FBRU8sSUFBOEI7R0FKOUI7SUFBQSxhQUNSeVMsV0FDQUMsV0FDQUMsV0FDQUM7SUFaRzs7T0FDTFQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7O0lBbUJFSztJQUxSQztJQUFBQztHQUFBLFNBQUFDLE9BQUF2VCxHQUFBLE9BQUEsV0FBQXNULFFBQUF0VCxHQUE2RDs7SUFBN0R3VDtJQUFBQztvREFLUUwsWUFMUks7Ozs7Ozs7Ozs7O0lBU0lDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBS0FuVDtJQUNBb1Q7SUFMQUM7SUFDQUM7SUFDQUM7WUFNQUMsZ0JBQWN0VSxHQUFJLE9BQUpBLEVBQUs7WUFDbkJ1VSxnQkFBY3ZVLEdBQUksT0FBSkEsRUFBSztZQUduQndVLFVBQVF4VSxHQUFJLE9BQUEsNEJBQUpBLEdBQStDO1lBQ3ZEeVUsV0FBU3pVLEdBQUksT0FBQSw0QkFBSkEsR0FBZ0Q7WUFDekQwVSxpQkFBZTFVLEdBQUksT0FBQSw0QkFBSkEsR0FBK0I7WUFDOUMyVSxlQUFhM1UsR0FBSSxPQUFBLDJCQUFKQSxHQUE2QjtPQUMxQzRVO1lBQ0FDLGVBQWE3VSxHQUFJLE9BQUEsMkJBQUpBLEdBQTZCO1lBRzFDOFUsaUJBQWU5VSxHQUFJLE9BQUpBLEVBQUs7WUFFcEIrVSxnQkFBYy9VO0lBQ2hCLE9BbnJCSmE7YUFncUJNQyxlQVBBaVQsUUFNQXhVLFlBRUEyVSxhQWlCY2xVO0dBQ2dEO0dBWWxEO0lBUFZnVjtJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdFQztJQUNBQztJQUNBQztJQUNBQztJQUpRLGFBQ1JILFlBQ0FDLFlBQ0FDLFlBQ0FDO0lBWkc7O09BQ0xUO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOztJQVlOSztJQUFBQztHQUFBLFNBQUFDLE9BQUE1VixHQUFBLE9BQUEsV0FBQTJWLFFBQUEzVixHQUE4Qzs7SUFFMUM2VjtJQUNBQztJQUNBQztZQWtHSUMsV0FqR0loVyxHQUFFTyxHQUFJLE9BQUEsNkJBQU5QLEdBQUVPLEdBQXFDOztJQUMvQzBWO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBTUFDO0lBQ0FDO0lBTkFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO1lBTUFDLHNCQUFvQjNXLEdBQUksT0FBSkEsRUFBSztZQUV6QjRXLG9CQUFrQjVXO0lBQ3BCLE9BL3RCSmE7YUF3dEJNd1YsaUJBUEFGLFFBTUEzVyxZQUVBOFcsYUFLa0J0VztHQUM0QztZQUk5RDZXLHNCQUFvQjdXLEdBQUksT0FBSkEsRUFBSztZQUV6QjhXLG9CQUFrQjlXO0lBQ3BCLE9BdHVCSmE7YUF3dEJNd1YsaUJBUEFGLFFBTUEzVyxZQUVBOFcsYUFZa0J0VztHQUM0QztZQUk5RCtXLHNCQUFvQi9XLEdBQUksT0FBQSw0QkFBSkEsR0FBK0I7WUFFbkRnWCxvQkFBa0JoWDtJQUNwQixHQUFHLGtCQURpQkEsV0FDUyxlQURUQTtLQUVmLE9BQUEsb0JBRmVBO0lBR2YsT0FseUJURixrQkEwd0JNTiw0QkFxQmtCUTtHQUc4QztZQUloRWlYLGdCQUFjalg7SUFBSSxPQUFBLGVBQW9CLDJCQUF4QkE7R0FBMkQ7WUFJekVrWCxrQkFBZ0JsWDtJQUNsQjs7T0F4dkJKYTtTQXd0Qk13VixpQkFQQUYsUUFNQTNXLFlBRUE4VyxhQThCZ0J0VztJQUNsQixPQUFBO0dBQ3dCO1lBS3RCbVgsV0FBU25YLEdBQUksT0FBQSw0QkFBSkEsR0FBZ0Q7WUFDekRvWCxZQUFVcFgsR0FBSSxPQUFBLDRCQUFKQSxHQUFpRDtZQUUzRHFYLGtCQUFnQnJYO0lBQUksT0F2QnBCK1csc0JBdUJ3QywyQkFBeEIvVztHQUErQztZQUkvRHNYLGdCQUFjdFg7SUFBSSxPQXpCbEJnWCxvQkF5Qm9DLDJCQUF0QmhYO0dBQTZDO1lBQzNEdVgsa0JBQWdCdlgsR0FBSSxPQTVCcEIrVyxzQkE0QmdCL1csR0FBeUI7WUFDekN3WCxnQkFBY3hYLEdBQUksT0EzQmxCZ1gsb0JBMkJjaFgsR0FBdUI7WUFHckN5WCxnQkFBY3pYLEdBQUksT0FBSkEsRUFBSztZQUVuQjBYLGVBQWExWDtJQUNmLE9BN3dCSmE7YUF3dEJNd1YsaUJBUEFGLFFBTUEzVyxZQUVBOFcsYUFtRGF0VztHQUNpRDtZQUs5RDJYLFlBQVUzWCxHQUFJLFdBQWUsa0NBQW5CQSxJQUFrRDtZQUU1RDRYLFlBQVUxVztJQUNaLFNBRFlBO0tBRVUsT0FqeEIxQkYsZ0RBK3dCZ0JFO1FBR0syVyxJQUhMM1c7SUFJVjtLQUFLOzBCO01BQUEsTUFBQSw0QkFEVTJXO0tBQ1Y7O2VBQ0csT0FweEJkN1csOENBK3dCZ0JFO0dBS2tFO1lBSTFFNFcsV0FBTzlYLEdBQUVPLEdBQUksWUFrQlh5VixXQWxCS2hXLEdBQUVPLFdBQW9CO1lBQzdCd1gsV0FBTy9YLEdBQUVPLEdBQUksT0FpQlh5VixXQWpCS2hXLEdBQUVPLGdCQUFvQjtZQUM3QnlYLFdBQU1oWSxHQUFFTyxHQUFJLGFBZ0JWeVYsV0FoQkloVyxHQUFFTyxXQUFtQjtZQUMzQjBYLFdBQU1qWSxHQUFFTyxHQUFJLFdBZVZ5VixXQWZJaFcsR0FBRU8sV0FBbUI7WUFDM0IyWCxXQUFNbFksR0FBRU8sR0FBSSxPQWNWeVYsV0FkSWhXLEdBQUVPLGVBQW1CO1lBQzNCNFgsV0FBT25ZLEdBQUVPLEdBQUksYUFhWHlWLFdBYktoVyxHQUFFTyxXQUFvQjtHQUVuQjtJQUNSNlg7SUFDQUM7SUFDQUM7SUFDQUM7SUFKUSxhQUNSSCxZQUNBQyxZQUNBQyxZQUNBQztJQVpHOztPQUNMVDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7b0RBYUVuQyxZQTdCSjJCOzs7Ozs7Ozs7OztJQW1DSmE7Ozs7VUFqS0k5RTtVQUNBQztVQUNBQztVQVhKSjtVQUFBQztVQVlJSTtVQUNBQztVQUlBSztVQUNBQztVQUNBQztVQUxBTjtVQUNBQztVQUNBQztVQWhCSlo7VUFBQUU7Ozs7Ozs7Ozs7OztVQXlCSWU7VUFDQUM7VUFHQUM7VUFDQUM7VUFDQUM7VUFDQUM7VUFDQUM7VUFDQUM7VUFHQUM7VUFFQUM7O1VBeUJBYztVQUNBQztVQUNBQztVQXVFQTZCO1VBRkFEO1VBbkVBMUI7VUFDQUM7VUFJQU07VUFDQUM7VUFDQUM7VUFMQVA7VUFDQUM7VUFDQUc7VUFWSmI7VUFBQUU7Ozs7Ozs7Ozs7OztVQW1CSWU7VUFFQUM7VUFLQUM7VUFFQUM7VUFLQUM7VUFFQUM7VUFPQUM7VUFJQUM7VUFPQUM7VUFDQUM7VUFFQUM7VUFJQUM7VUFDQUM7VUFDQUM7VUFHQUM7VUFFQUM7OztVQXRSQTNJO1VBSUFDO1VBSUFDO1VBdkRKNUI7VUFBQUM7VUFTSUM7VUFDQUM7VUFJQVE7VUFDQUM7VUFDQUM7VUFMQVQ7VUFDQUM7VUFDQUM7VUFiSlQ7VUFBQUU7Ozs7Ozs7Ozs7OztVQStCSWlCO1VBQ0FDO1VBR0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBR0FDO1VBQ0FDOztVQXVIQXlEO1VBSUFDO1VBSUFDO1VBN0ZKekM7VUFBQUM7VUFTSUM7VUFDQUM7VUFJQUs7VUFDQUM7VUFDQUM7VUFMQU47VUFDQUM7VUFDQUM7VUFiSlQ7VUFBQUU7Ozs7Ozs7VUFzQklnQjs7Ozs7VUE4QkFRO1VBS0FDO1VBQ0FDO1VBRUFDO1VBT0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBR0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBR0FDO1VBQ0FDO2dCQThNSmtHO0lBbmFNQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFHUkM7SUFDQUM7SUFHQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFDQUM7Z0JBbVpFbkM7SUE3WU1vQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFHUkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFDQUM7SUE4WU1DO0lBTFJDO0lBQUFDO0dBQUEsU0FBQUMsT0FBQXhkLEdBQUEsT0FBQSxXQUFBdWQsUUFBQXZkLEdBQTZFOztJQUE3RXlkO0lBQUFDO3FEQUtRTCxZQUxSSzs7Ozs7Ozs7Ozs7SUFTSUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFLQUM7SUFDQUM7SUFMQUM7SUFDQUM7SUFDQUM7WUFNQUMsVUFBUXhlLEdBQUksT0FBQSwyQkFBSkEsR0FBdUI7WUFDL0J5ZSxXQUFTemUsR0FBSSxPQUFBLDJCQUFKQSxHQUF1QjtZQUNoQzBlLFNBQVMxZTtJQUF3QixVQTVjbkNtYSxnQkE0Y1duYTtJQUF3QixPQUFBO0dBQXVCO1lBQ3hEMmUsaUJBQWUzZSxHQUFJLE9BQUEsNEJBQUpBLEdBQStCO1lBQzlDNGUsZUFBYTVlLEdBQUksT0FBQSwyQkFBSkEsR0FBNkI7WUFHMUM2ZSxlQUFlN2UsR0FBSSxPQUFKQSxFQUFLO1lBRXBCOGUsZ0JBQWM5ZTtJQUFJLE9BejJCcEJhO2FBNDFCRXNkLGlCQVBBSCxRQU1BdmUsWUFFQTJlLGFBWWNwZTtHQUFvRTtHQVl0RTtJQVBWK2U7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHRUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFKUSxhQUNSSCxZQUNBQyxZQUNBQyxZQUNBQztJQVpHOztPQUNMVDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7SUFZTks7SUFBQUM7R0FBQSxTQUFBQyxRQUFBM2YsR0FBQSxPQUFBLFdBQUEwZixRQUFBMWYsR0FBOEM7O0lBRTFDNGY7SUFDQUM7SUFDQUM7WUF3RklDLFdBdEZJL2YsR0FBRU87SUFFWjtLQUFzRCxNQUFBLDJCQUYxQ0E7S0FFa0IsTUFBQSwyQkFGcEJQO0lBRTRDLE9BQUE7R0FBdUI7R0FPL0Q7SUFKWmdnQjtJQUNBQztJQUNBQztJQUNBQztJQUNBQyxlQUFZO0lBSVpDO0lBRUFDO0lBTEFDO0lBQ0FDO0lBQ0FDO1lBV0FDLHNCQUFvQjFnQixHQUFJLE9BQUEsNEJBQUpBLEdBQStCO1lBRW5EMmdCLG9CQUFrQjNnQjtJQUNwQixPQUFHLGtCQURpQkE7Y0FFZiw0QkFGZUE7Y0FqOUJwQkYsa0JBczhCRUosNEJBV2tCTTtHQUc4QztZQUloRTRnQixnQkFBYzVnQjtJQUFJLE9BQUEsZUFBb0IsMkJBQXhCQTtHQUFtRTtZQUtqRjZnQixXQUFTN2dCLEdBQUksT0FBQSwyQkFBSkEsR0FBdUI7WUFDaEM4Z0IsWUFBVTlnQixHQUFJLE9BQUEsMkJBQUpBLEdBQXVCO1lBQ2pDK2dCLFVBQVUvZ0I7SUFBOEIsVUEzZjFDMmMsZ0JBMmZZM2M7SUFBOEIsT0FBQTtHQUF3QjtZQUNoRWdoQixrQkFBZ0JoaEIsR0FBSSxPQUFBLDRCQUFKQSxHQUErQjtZQUUvQ2loQixnQkFBZWpoQjtJQUNqQixPQUFHLGtCQURjQTtjQUVaLDRCQUZZQTtjQWwrQmpCRixrQkFzOEJFSiw0QkE0QmVNO0dBR2lEO1lBS2hFa2hCLGNBQWNsaEIsR0FBSSxPQUFKQSxFQUFLO1lBQ25CbWhCLGVBQWFuaEI7SUFBSSxPQXg3Qm5CYTthQWs1QkV3ZixpQkFOQUgsU0FPQXhnQixZQUNBNGdCLGFBb0NhdGdCO0dBQVM7WUFHdEJvaEIsYUFBVXBoQjtJQUFnRCxVQXRCMUQ0Z0IsZ0JBc0JVNWdCO0lBQUksV0FBZTtHQUErQztZQUU1RXFoQixhQUFVbmdCO0lBQ1osU0FEWUE7S0FFVSxPQTE3QnRCRixnREF3N0JZRTtRQUdLMlcsSUFITDNXO0lBSVY7S0FBSyxVQUFBLDRCQURVMlcsUUFsQ2Y4STtLQW1DSzs7ZUFDRyxPQTc3QlYzZiw4Q0F3N0JZRTtHQUtrRTtZQUkxRW9nQixXQUFPdGhCLEdBQUVPLEdBQUksWUFxQlh3ZixXQXJCSy9mLEdBQUVPLFdBQW9CO1lBQzdCZ2hCLFdBQU92aEIsR0FBRU8sR0FBSSxPQW9CWHdmLFdBcEJLL2YsR0FBRU8sZ0JBQW9CO1lBQzdCaWhCLFdBQU14aEIsR0FBRU8sR0FBSSxhQW1CVndmLFdBbkJJL2YsR0FBRU8sV0FBbUI7WUFDM0JraEIsV0FBTXpoQixHQUFFTyxHQUFJLFdBa0JWd2YsV0FsQkkvZixHQUFFTyxXQUFtQjtZQUMzQm1oQixXQUFNMWhCLEdBQUVPLEdBQUksT0FpQlZ3ZixXQWpCSS9mLEdBQUVPLGVBQW1CO1lBQzNCb2hCLFdBQU8zaEIsR0FBRU8sR0FBSSxhQWdCWHdmLFdBaEJLL2YsR0FBRU8sV0FBb0I7O0lBRzNCcWhCO0lBQ0FDO0lBQ0FDO1lBRUFDLFdBQU0vaEIsR0FBRU87SUFDOEMsVUE5QzFEcWdCLGdCQTZDWXJnQjtJQUNVLE9BdkR0Qm1nQixzQkF1RHNCLGVBOUN0QkUsZ0JBNkNVNWdCO0dBQ2tFO0dBTmhFO0lBQUEsYUFDUjRoQixZQUNBQyxZQUNBQyxZQUVBQztJQWJHOztPQUNMVDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7OzBDQWdCRTVCLFlBaENKcUI7Ozs7Ozs7Ozs7O0lBMkNJWTtJQUxSQztJQUFBQztHQUFBLFNBQUFDLFFBQUFuaUIsR0FBQSxPQUFBLFdBQUFraUIsUUFBQWxpQixHQUE2RDtHQXFCekM7SUFyQnBCb2lCO0lBQUFDOzswQ0FLUUwsWUFMUks7Ozs7Ozs7Ozs7O0lBU0lDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBS0FDO0lBQ0FDO0lBR0FDO0lBQ0FDO0lBVEFDO0lBQ0FDO0lBQ0FDO1lBUUFDLFdBQVNyakIsR0FBSSxPQUFBLG9CQXRtQmZtYSxnQkFzbUJXbmEsSUFBK0M7WUFDeERzakIsU0FBU3RqQixHQUFJLE9BQUEsMkJBQUpBLEdBQXlCO1lBR2xDdWpCLGVBQWV2akIsR0FBSSxPQUFKQSxFQUFLO1lBRXBCd2pCLGdCQUFjeGpCO0lBQUksT0FsZ0NwQmE7YUFzL0JFaWlCLGlCQVBBSCxTQU1BaGpCLFlBRUFvakIsYUFXYy9pQjtHQUFvRTtHQVl0RTtJQVBWeWpCO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBR0VDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBSlEsYUFDUkgsWUFDQUMsWUFDQUMsWUFDQUM7SUFaRzs7T0FDTFQ7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7O0lBWU5LO0lBQUFDO0dBQUEsU0FBQUMsUUFBQXJrQixHQUFBLE9BQUEsV0FBQW9rQixTQUFBcGtCLEdBQThDOztJQUUxQ3NrQjtJQUNBQztJQUNBQztJQXFFSUM7SUFuRUpDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBS0FDO0lBRUFDO0lBTEFDO0lBQ0FDO0lBQ0FDO1lBTUFDLE1BQUlubEI7SUFBSSxPQTNpQ1ZhO2FBc2lDRWlrQixpQkFOQUYsU0FPQS9rQixhQUNBa2xCLGNBR0kva0I7R0FBb0U7WUFLeEVvbEIsc0JBQW9CcGxCLEdBQUksT0FBSkEsRUFBSztZQUN6QnFsQixvQkFBa0JybEIsR0FBSSxPQU50Qm1sQixNQU1rQm5sQixHQUFTO1lBQzNCc2xCLG9CQUFvQnRsQixHQUFJLE9BQUpBLEVBQUs7WUFDekJ1bEIsa0JBQWtCdmxCLEdBQUksT0FSdEJtbEIsTUFRa0JubEIsR0FBUztPQUczQndsQixrQ0FDQUM7WUFDQUMsWUFBVTFsQixHQUFJLE9Bdm9CaEIyYyxnQkF1b0JZM2MsR0FBMEI7WUFFcEMybEIsVUFBVzNsQjtJQUNiLE9BQUEsZUFBb0IsMkJBRFBBO0dBQ2tEO1lBSzdENGxCLGNBQWM1bEIsR0FBSSxPQUFKQSxFQUFLO1lBQ25CNmxCLGVBQWE3bEIsR0FBSSxPQXRCakJtbEIsTUFzQmFubEIsR0FBUztZQUd0QjhsQixhQUFVOWxCLEdBQUksV0FBZSxrQ0FBbkJBLElBQWtEO1lBRTVEK2xCLGFBQVU3a0I7SUFDWixTQURZQTtLQUVVLE9BbmtDdEJGLGdEQWlrQ1lFO1FBR0syVyxJQUhMM1c7SUFJVjtLQUFLOzBCO01BQUEsTUFBQSw0QkFEVTJXO0tBQ1Y7O2VBQ0csT0F0a0NWN1csOENBaWtDWUU7R0FLa0U7WUFJMUU4a0IsV0FBT2htQixHQUFFTztJQUFJLFlBQUEsV0FrQlhra0IsWUFsQkt6a0IsR0FBRU87R0FBb0I7WUFDN0IwbEIsV0FBT2ptQixHQUFFTztJQUFJLE9BQUEsV0FpQlhra0IsWUFqQkt6a0IsR0FBRU87R0FBb0I7WUFDN0IybEIsV0FBTWxtQixHQUFFTztJQUFJLGFBQUEsV0FnQlZra0IsWUFoQkl6a0IsR0FBRU87R0FBbUI7WUFDM0I0bEIsV0FBTW5tQixHQUFFTyxHQUFJLFdBQUEsV0FlVmtrQixZQWZJemtCLEdBQUVPLFdBQW1CO1lBQzNCNmxCLFdBQU1wbUIsR0FBRU8sR0FBSSxPQUFBLFdBY1Zra0IsWUFkSXprQixHQUFFTyxlQUFtQjtZQUMzQjhsQixXQUFPcm1CLEdBQUVPO0lBQUksYUFBQSxXQWFYa2tCLFlBYkt6a0IsR0FBRU87R0FBb0I7R0FLbkI7SUFGUitsQjtJQUNBQztJQUNBQztJQUNBQztJQUpRLGNBQ1JILFlBQ0FDLFlBQ0FDLFlBQ0FDO0lBWkc7O09BQ0xUO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDOzs7MENBYUU1QixZQTdCSnFCOzs7Ozs7Ozs7Ozs7YUFpSkFZLFNBQVNDLEdBQUdDO0tBQU0sT0Evb0NsQnhrQixrQkErb0N5QyxpQkFBaEN1a0IsR0FBR0M7SUFBZ0Q7YUFJNURDLFVBQVVGLEdBQUdDO0tBQU0sT0E3aUNuQnRoQixvQkE2aUMyQyxpQkFBakNxaEIsR0FBR0M7SUFBaUQ7YUFJOURFLGFBQWFILEdBQUdDO0tBQ2xCO01BQUk1bUIsSUFBSSxpQkFETzJtQixHQUFHQztNQUVsQixvQ0FESTVtQixLQUFBQTtZQW4rQkZvSTtJQW8rQjhEO2FBRzlEMmUsYUFBYUosR0FBR0M7S0FDbEI7TUFBSTVtQixJQUFJLGlCQURPMm1CLEdBQUdDO01BQ2RJLHVCQUFBaG5CLGlCQUFBQTtLQUM0QyxPQXorQjlDb0ksb0JBdytCRTRlO0lBQzREO2FBSzlEQyxjQUFjTixHQUFHQztLQUNuQjtNQUFJNW1CLElBQUksaUJBRFEybUIsR0FBR0M7TUFFbkIsb0NBREk1bUIsS0FBQUE7WUExNEJGd0w7SUEyNEIrRDthQUcvRDBiLGNBQWNQLEdBQUdDO0tBQ25CO01BQUk1bUIsSUFBSSxpQkFEUTJtQixHQUFHQztNQUNmSSx1QkFBQWhuQixpQkFBQUE7S0FDNkMsT0FoNUIvQ3dMLG9CQSs0QkV3YjtJQUM2RDthQUsvREcsYUFBYVIsR0FBR0M7S0FDbEI7TUFBSTVtQixJQUFJLGlCQURPMm1CLEdBQUdDO01BRWxCLHVCQUE0QyxpQkFEeEM1bUIsS0FBQUE7S0FDd0MsT0FsMkI1Q2thO0lBazJCNEQ7YUFHMURrTixhQUFhVCxHQUFHQztLQUNsQjtNQUFJNW1CLElBQUksaUJBRE8ybUIsR0FBR0M7TUFDZEksdUJBQUFobkIsSUFDK0MsaUJBRC9DQTtLQUMrQyxPQXYyQm5Ea2EsZ0JBczJCSThNO0lBQ3dEO2FBSzFESyxjQUFjVixHQUFHQztLQUNuQjtNQUFJNW1CLElBQUksaUJBRFEybUIsR0FBR0M7TUFFbkIsdUJBQW1ELGlCQUQvQzVtQixLQUFBQTtLQUMrQyxPQXgxQm5EcWM7SUF3MUJtRTthQUdqRWlMLGNBQWNYLEdBQUdDO0tBQ25CO01BQUk1bUIsSUFBSSxpQkFEUTJtQixHQUFHQztNQUNmSSx1QkFBQWhuQixJQUNzRCxpQkFEdERBO0tBQ3NELE9BNzFCMURxYyxzQkE0MUJJMks7SUFDK0Q7YUFLakVPLGFBQWFaLEdBQUdDO0tBQ1YsSUFBSjVtQixJQUFJLGlCQURPMm1CLEdBQUdDO0tBRWxCLHdCQUF1QixpQkFEbkI1bUIsS0FBQUE7SUFDa0M7YUFHcEN3bkIsYUFBYWIsR0FBR0M7S0FDVixJQUFKNW1CLElBQUksaUJBRE8ybUIsR0FBR0M7S0FFbEIsd0JBREk1bUIsSUFDMEIsaUJBRDFCQTtJQUNrQzthQUtwQ3luQixjQUFjZCxHQUFHQztLQUNuQjtNQUFJNW1CLElBQUksaUJBRFEybUIsR0FBR0M7TUFFbkIsdUJBQW1ELGlCQUQvQzVtQixLQUFBQTtLQUMrQztJQUFnQjthQUdqRTBuQixjQUFjZixHQUFHQztLQUNuQjtNQUFJNW1CLElBQUksaUJBRFEybUIsR0FBR0M7TUFDZkksdUJBQUFobkIsSUFDc0QsaUJBRHREQTtLQUNzRCxPQUR0RGduQjtJQUMrRDtJQTlFUjtZQUd6RE47WUFJQUc7WUFJQUM7WUFLQUM7WUFPQUU7WUFLQUM7WUFPQUM7WUFLQUM7WUFPQUM7WUFLQUM7WUFPQUM7WUFLQUM7WUFPQUM7WUFLQUM7OzthQVVBQyxVQUFVaEIsR0FBR0MsS0FBSTVtQixHQUFJLE9BQUEsaUJBQVgybUIsR0FBR0MsS0FBSTVtQixHQUF1QjthQUl4QzRuQixTQUFTakIsR0FBR0MsS0FBSTVtQixHQUFJLE9BSnBCMm5CLFVBSVNoQixHQUFHQyxLQWpuQ1ozZ0IsYUFpbkNnQmpHLElBQTJDO2FBSTNENm5CLGNBQWNsQixHQUFHQyxLQUFJNW1CO0tBQ3ZCLElBQUlnbkIsb0NBRG1CaG5CLEtBQUFBO0tBRXZCLE9BQUEsaUJBRmdCMm1CLEdBQUdDLEtBQ2ZJO0lBQ21CO2FBR3JCYyxjQUFjbkIsR0FBR0MsS0FBSTVtQjtLQUN2QixJQUFJZ25CLHVCQURtQmhuQixpQkFBQUE7S0FFdkIsT0FBQSxpQkFGZ0IybUIsR0FBR0MsS0FDZkk7SUFDbUI7YUFLckJlLGFBQWFwQixHQUFHQyxLQUFJNW1CO0tBQUksT0FaeEI2bkIsY0FZYWxCLEdBQUdDLEtBOThCaEIxYSxjQTg4Qm9CbE07SUFBaUQ7YUFDckVnb0IsYUFBYXJCLEdBQUdDLEtBQUk1bUI7S0FBSSxPQVJ4QjhuQixjQVFhbkIsR0FBR0MsS0EvOEJoQjFhLGNBKzhCb0JsTTtJQUFpRDthQUlyRWlvQixhQUFhdEIsR0FBR0MsS0FBSTVtQjtLQUN0QjtNQUFJZ25CLE1BNTZCSjdNLGdCQTI2QnNCbmE7TUFFbEJrb0IsdUJBQTJCLGlCQUQzQmxCLE9BQUFBO0tBRUosT0FBQSxpQkFIZUwsR0FBR0MsS0FFZHNCO0lBQ2tCO2FBR3BCQyxhQUFheEIsR0FBR0MsS0FBSTVtQjtLQUN0QjtNQUFJZ25CLE1BbDdCSjdNLGdCQWk3QnNCbmE7TUFFbEJrb0IsdUJBREFsQixNQUNrQyxpQkFEbENBO0tBRUosT0FBQSxpQkFIZUwsR0FBR0MsS0FFZHNCO0lBQ2tCO2FBS3BCRSxjQUFjekIsR0FBR0MsS0FBSTVtQjtLQUFJLE9BZHpCaW9CLGFBY2N0QixHQUFHQyxLQTk2Qm5CbE0saUJBODZCdUIxYTtJQUFnRDthQUNyRXFvQixjQUFjMUIsR0FBR0MsS0FBSTVtQjtLQUFJLE9BVHpCbW9CLGFBU2N4QixHQUFHQyxLQS82Qm5CbE0saUJBKzZCdUIxYTtJQUFnRDthQUlyRXNvQixhQUFhM0IsR0FBR0MsS0FBSTVtQjtLQUN0QixJQUFJZ25CLHVCQUEyQixpQkFEVGhuQixLQUFBQTtLQUV0QixPQUFBLGlCQUZlMm1CLEdBQUdDLEtBQ2RJO0lBQ2tCO2FBR3BCdUIsYUFBYTVCLEdBQUdDLEtBQUk1bUI7S0FDdEIsSUFBSWduQix1QkFEa0JobkIsSUFDZ0IsaUJBRGhCQTtLQUV0QixPQUFBLGlCQUZlMm1CLEdBQUdDLEtBQ2RJO0lBQ2tCO2FBS3BCd0IsY0FBYzdCLEdBQUdDLEtBQUk1bUIsR0FBSSxPQVp6QnNvQixhQVljM0IsR0FBR0MsS0FBSTVtQixHQUFnRDthQUNyRXlvQixjQUFjOUIsR0FBR0MsS0FBSTVtQixHQUFJLE9BUnpCdW9CLGFBUWM1QixHQUFHQyxLQUFJNW1CLEdBQWdEO0lBNURaO1lBT3pENG5CO1lBSkFEO1lBb0JBSTtZQUNBQztZQWJBSDtZQUtBQztZQVlBRztZQU1BRTtZQVFBQztZQUNBQztZQUlBQztZQUtBQztZQU9BQztZQUNBQzs7R0FxQlk7Ozs7Ozs7O0lBcEtvQi9CO0lBQUFHO0lBQUFDO0lBQUFDO0lBQUFFO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7Ozs7OztJQW1GQUU7SUFBQUQ7SUFBQUk7SUFBQUM7SUFBQUg7SUFBQUM7SUFBQUc7SUFBQUU7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7O0lBbkZBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7Ozs7Ozs7VTs7Ozs7O0lBbUZBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQWlGcEI7O09BcEtvQjNCO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BbUZBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztJQTZFdkI7O09BaEt1QjNEO09BQUFHO09BQUFDO09BQUFDO09BQUFFO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BbUZBRTtPQUFBRDtPQUFBSTtPQUFBQztPQUFBSDtPQUFBQztPQUFBRztPQUFBRTtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQzs7Ozs7Ozs7O0lBbkZBNkI7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBK0xwQjs7T0EvTG9CYjtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztJQTRMdEI7O09BNUxzQjNCO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7Ozs7Ozs7O1FBcm5DaENsb0I7UUFFQUM7UUFJQUM7UUE1REoxQjtRQUFBQztRQVNJQztRQUNBQztRQUlBRztRQUNBQztRQUNBQztRQUxBbEI7UUFDQWM7UUFDQUM7UUFiSlI7UUFBQUU7Ozs7Ozs7Ozs7OztRQStCSVk7UUFDQUM7UUFDQUM7UUFHQUM7UUFDQUM7UUFFQUM7UUFJQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFHQUM7UUFDQUM7O1FBcUdBbUQ7UUFFQUM7UUFJQUM7UUEzRUpuQztRQUFBQztRQVNJQztRQUNBQztRQUlBSTtRQUNBQztRQUNBQztRQUxBTDtRQUNBQztRQUNBQztRQWJKVDtRQUFBRTs7Ozs7OztRQXNCSWE7Ozs7O1FBNEJBUTtRQUNBQztRQUNBQztRQUdBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUdBQztRQUNBQzs7UUFxRkE4QztRQUVBQztRQUlBQztRQTNESjlCO1FBQUFDO1FBU0lDO1FBQ0FDO1FBSUFRO1FBQ0FDO1FBQ0FDO1FBTEFUO1FBQ0FLO1FBQ0FDO1FBYkpiO1FBQUFFOzs7Ozs7Ozs7Ozs7UUErQklpQjtRQUNBQztRQUNBQztRQUdBQztRQUVBQztRQUlBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUdBQztRQUNBQzs7UUFvR0FxRDtRQUVBQztRQUlBQztRQTFFSnJDO1FBQUFDO1FBU0lDO1FBQ0FDO1FBSUFLO1FBQ0FDO1FBQ0FDO1FBTEFOO1FBQ0FDO1FBQ0FFO1FBYkpWO1FBQUFFOzs7Ozs7O1FBc0JJZTs7Ozs7UUE0QkFTO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBQ0FDOztRQW1DTXNNO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDOztRQUdSQztRQUNBQztRQUdBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUdBQztRQUNBQzs7UUFNUUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7O1FBR1JDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBQ0FDOztRQWtaRU87UUFDQUM7UUFDQUM7UUFYSko7UUFBQUM7UUFZSUk7UUFDQUM7UUFJQU07UUFDQUM7UUFDQUM7UUFMQVA7UUFDQUM7UUFDQUM7UUFoQkpaO1FBQUFFOzs7Ozs7Ozs7Ozs7UUF5QklnQjtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUdBQztRQUVBQzs7UUF3QkFjO1FBQ0FDO1FBQ0FDO1FBMERBdUI7UUFGQUQ7UUFqREFwQjtRQUNBQztRQUlBTTtRQUNBQztRQUNBQztRQUxBUDtRQUNBQztRQUNBQztRQWZKWDtRQUFBRTs7Ozs7Ozs7Ozs7O1FBNkJJZTtRQUVBQztRQU9BQztRQUtBQztRQUNBQztRQUNBQztRQUNBQztRQUVBQztRQVFBQztRQUNBQzs7UUFrREFtQjtRQUNBQztRQUNBQztRQVhKSjtRQUFBQztRQVlJSTtRQUNBQztRQUlBUTtRQUNBQztRQUNBQztRQUxBVDtRQUNBQztRQUNBQztRQWhCSlo7UUFBQUU7Ozs7Ozs7Ozs7OztRQXlCSWE7UUFDQUM7UUFDQUk7UUFDQUM7UUFHQUM7UUFFQUM7O1FBd0JBYztRQUNBQztRQUNBQztRQTBDQXVCO1FBRkFEO1FBdENBcEI7UUFDQUM7UUFJQUs7UUFDQUM7UUFDQUM7UUFMQU47UUFDQUM7UUFDQWpsQjtRQVZKdWtCO1FBQUFFOzs7Ozs7Ozs7Ozs7UUF3QkllO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBR0FDO1FBQ0FDO1FBQ0FDO1FBRUFDO1FBTUFDO1FBQ0FDOzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ2x5QmtCcUc7SUFMQ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcldMO0lBQUE7SUFzQmhCQztJQUdBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFFQUMsT0FBUUMsNkJBQTRCQztJQUVwQztLQURFQztPQUNGLDRCQUZRRjtPQUE0QkM7S0FNVCxXQUFBLFdBYjNCTixjQU9vQ007S0FNckI7O0lBQ2pCLE9BQUEsd0JBTklDLCtCQURrQ0Q7R0FPTztPQUczQ0U7WUFJQUMsS0FBS0MsR0FBR0M7SUFDVixJQUFJQyxJQWZGUixVQWNLTSxJQUVQLE9BRk9BLFdBQ0M7O1NBQ1JHOztNQUNFLGNBRkVELEdBQ0pDLEdBQ1csV0FIREYsR0FFVkU7TUFDRSxXQURGQTtrQkFBQUE7VUFBQUE7OztJQUdBLE9BSklEO0dBSUg7WUFHQ0UsV0FBWWYsS0FBS2dCLEtBQUtDLEtBQUtDO0lBQzdCLEdBRG1CRjtLQUNTLFdBQUEsc0JBRGRoQjtLQUNFOztPQURRaUI7S0FFSSxXQUFBLHNCQUZkakI7S0FFRTs7SUFDRDtLQUFYbUIsV0FBVyxjQUhjRDthQUd6QkMsV0FIZUgsV0FBS0M7O0lBT1AsV0FBQSxXQXBDZmhCLGNBNkJZRDtJQU9HLE9BQUE7R0FBc0Q7WUFHckVvQixZQUFZRixNQUFNRjtJLFlBRVYsT0FBQSxjQUZJRSxRQUFNRjtRQUNiQztJQUFPLE9BQVBBOztZQXVCSEksU0FBUUosS0FBTSxPQXhEaEJaLFVBd0RVWSxLQUFnQjtZQU94QkssU0FBUUwsS0FBTSxPQUFBLDJCQUFOQSxLQUFzQjtPQUM5Qk07WUFNRUM7STs7R0FNSDsyQ0FsRURmLFFBOENFWSxVQWNFRzs7Ozs7O0lBTUg7O09BbEVEZjtPQThDRVk7O1E7Ozt5REFRQUU7SUE2QkQ7O09BN0JDQTtPQURBRDs7UTs7O3VEQXJERmI7SUFzR01nQjtJQUVMOztPQXhHRGhCO09BOENFWTs7UTs7OzBEQXdESUk7Ozs7Ozs7SUFnQlM7SUFLZkM7SUFDQUM7SUFDQUM7SUFDQUM7WUE2R0pDLGlCQTVHY2pCLEdBQUksV0FBVSxXQUZ4QmUsaUJBRVVmLElBQTJCO1lBNEd6Q2tCLGlCQXhHSUM7SUFGMEIsU0FFMUJBO0tBQ0EsT0FBQTtzRUFEQUE7UUFES0MsTUFDTEQ7SUFEWSxPQUFBLFdBUFpOLGlCQU9LTztHQUVpRTtZQUd0RUMsS0FBS3JCLEdBQVEsT0FBa0IsZ0JBQTFCQSxNQUEwQixjQUExQkEsSUFBb0M7WUFHdkNzQixPQUFRQyxLQUFLQyxLQUFLQztJQUNwQixJQUFJckIsTUFBTSxjQURBbUIsTUFHTkcsVUFIZ0JEO0lBSXBCLGlCQUpVRixRQUFLQyxLQUdYRSxTQUZBdEI7SUFEZ0JxQixpQkFHaEJDLFVBRkF0Qjs7R0FJd0I7WUFONUJ1QixPQVFHQyxLQUFJQztJQUNQLEtBRE9BLE1BRUMsT0E3SlJyQztJQStKaUI7S0FEUHNDLE9BSEhEO0tBR0xFLE9BSEtGO0tBSURHLFdBQVcsY0FEZkQ7S0FFSUUsVUFBVSw0QkFMYkwsUUFqSkhoQztLQXVKTXNDLGFBQWEseUJBSFRKOzZCO0lBT0U7S0FITjFCO1FBSEE0Qiw0QkFDQUMsU0FDQUM7U0FFa0Msa0RBTDlCSixNQXBKVmxDOztLQTJKTTRCLE1BcktOaEMsVUFrS01ZO0tBSUFxQjtJQWxCSkgsT0FVQVMsTUFPSVAsS0FDQUM7a0JBRW1CRjtLQUNyQixHQWRESyxTQWdCU08sUUFoQlRQLFFBUEROLE9BdUJVYSxPQU5OWCxLQUNBQztLQUNKLE9BbkJBSCxPQW9CdUJDLEtBSG5CQyxLQUNBQztJQU0yQjtJQUovQix5QkFWUUs7T0FRSkwsbUJBSkFyQixLQVlKLE9BVElvQjtJQVFKLE1BQUE7R0FDRztZQU1MWSxPQUFPcEMsR0FBR0csS0FBS0MsS0FBSWlDO0lBQytDLFVBQUEsY0FEM0RyQztJQUNULDhDQURZRyxLQUFLQztJQUVqQixPQUFBLDhCQUZTSixHQUFHRyxLQUFLQyxLQUFJaUM7R0FFTTtZQWV6QkMsT0FBT0MsSUFBSUMsTUFBS0MsSUFBSUMsTUFBTXRDO0lBQzZDLFVBQUEsY0FEaEVtQztJQUNULDhDQURhQyxNQUFlcEM7SUFFNkMsVUFBQSxjQUZ2RHFDO0lBRWxCLDhDQUZzQkMsTUFBTXRDO0lBRzVCLE9BQUEsOEJBSFNtQyxJQUFJQyxNQUFLQyxJQUFJQyxNQUFNdEM7R0FHUTtZQWFsQ3VDLGFBQWFKLElBQUlDLE1BQUtJLE9BQU9GLE1BQU10QztJQUNvQyxVQUFBLGNBRDFEbUM7SUFDZiw4Q0FEbUJDLE1BQWtCcEM7SUFFckM7O01BRitCc0M7TUFBTXRDOzJCQUFid0M7SUFNeEIsT0FBQSxvQ0FOZUwsSUFBSUMsTUFBS0ksT0FBT0YsTUFBTXRDO0dBTVE7WUEwQi9DeUMsaUJBdkJZTixJQUFHRTtJQUNiLEdBQUcsc0JBRE9GLElBQUdFLEtBRVI7SUFFUTtLQUFQSyxPQUFPLGNBSkhQO0tBS0pRLE9BQU8sY0FMQU47S0FNUHJDLE1BQU0seUJBRk4wQyxNQUNBQztLQUlGakQsSUFGSSw4QkFQRXlDLE9BQUdFLE9BTVByQztpQkFHRk4sSUFMRWdELE9BQ0FDLFlBQUFBLE9BREFELGVBS0ZoRDtHQUFPO1lBY2JrRDtJOztHQUZXLElBQVBDLE9BQU8sMEJBRVhEO0dBQUEsU0FBQUUsY0FBQUMsR0FBQSxPQUFBLFdBRklGLE1BRUpFLEdBQWtEO1lBRTlDQyxNQUFNYixJQUFHRTtJQUNYLEdBQUcsc0JBREtGLElBQUdFLEtBRU47SUFFUTtLQUFQSyxPQUFPLGNBSkxQO0tBS0ZRLE9BQU8sY0FMRk47S0FNVCxNQUFBLHlCQUZJSyxNQUNBQztJQUNKLFVBQUE7SUFBaUMsVUFBQSw4QkFOM0JSLE9BQUdFLE9BSUxLO0lBRTZCLE9BQUE7R0FBa0Q7WUFRbkZPLEtBQU9DLEtBQVVsRCxLQUFJbUQsS0FBSWxEO0lBQzNCLEdBRFNpRCxTQUFNRSxNQUFORixRQUFBbkQsTUFBTXFELGNBQU5yRDtJQUNDLElBQU5zRCxRQXRPRmxELFlBcU95QkYsTUFBbEJGLEtBQVVDO0lBL09qQkYscUJBK09PQyxLQUNMc0QsT0FEdUJwRDtJQUdqQixJQUFOcUQsTUFBTSx1QkFIaUJyRCxNQUFKa0QsS0FBZHBELEtBQ0xzRDtJQUdKLFlBRElDLFVBQUFBO0dBQzhCO1lBcUJoQ0MsT0FBUTNELEdBQVFHO0lBeFFoQkQsdUJBd1FnQkMsUUFBUkg7SUFFVixPQUFBLG9CQUZVQSxHQUFRRztHQUVDO1lBR2pCeUQsT0FBUTVELEdBQVFHO0lBN1FoQkQsdUJBNlFnQkMsUUFBUkg7SUFFVixPQUFBLG9CQUZVQSxHQUFRRztHQUVDO1lBR2pCMEQsT0FBUTdELEdBQVFHO0lBbFJoQkQsdUJBa1JnQkMsUUFBUkg7SUFFVixPQUFBLG9CQUZVQSxHQUFRRztHQUVDO1lBR2pCMkQsYUFBYzlELEdBQVFHLEtBQVk0RDtJQXZSbEM3RCx1QkF1UnNCQyxRQUFSSDtJQUVoQixPQUFBLG9CQUZnQkEsR0FBUUcsS0FBWTREO0dBRWY7WUFHbkJDLE9BQVFoRSxHQUFRRyxLQUFZNEQ7SUE1UjVCN0QsdUJBNFJnQkMsUUFBUkg7SUFFVixPQUFBLG9CQUZVQSxHQUFRRyxLQUFZNEQ7R0FFVDtZQUduQkUsT0FBUWpFLEdBQVFHLEtBQVk0RDtJQWpTNUI3RCx1QkFpU2dCQyxRQUFSSDtJQUVWLE9BQUEsb0JBRlVBLEdBQVFHLEtBQVk0RDtHQUVUO1lBR25CRyxlQUFlQztJQUFJLE9BQUpBO0dBQXVEO1lBRXRFQyxtQkFBbUJqQixHQUFHaEU7SUFDeEIsVUFEcUJnRSxxQ0FBQUE7O0lBRUosVUFBQSxXQXZVZi9ELGNBcVVzQkQsS0FBSGdFO0lBRUosT0FBQTtHQUErRDtZQUc5RWtCLGtCQUFrQmxCLEdBQUdoRTtJQUN2QixVQURvQmdFLDBDQUFBQTs7SUFFSCxVQUFBLFdBNVVmL0QsY0EwVXFCRCxLQUFIZ0U7SUFFSCxPQUFBO0dBQStEO0dBaUI5RTtJQUpBbUI7TUF0VkFqRjs7U0EwVkk4RCxHQUFHaEU7U0FDTCxrQkFERWdFLEtBQUFBLGlCQUVHO1NBQ1ksVUFBQSxXQWhXbkIvRCxjQTZWT0QsS0FBSGdFO1NBR2UsT0FBQTtRQUErRDs4QkFML0QsT0FBRTtJQVFyQm9CO01BaFdBbEY7O1NBd1dJOEQsR0FBR2hFO1NBQ0wsUUFERWdFLEtBQUFBLE9BRUc7U0FDWSxVQUFBLFdBOVduQi9ELGNBMldPRCxLQUFIZ0U7U0FHZSxPQUFBO1FBQStEOztTQVI5RUEsR0FBR2hFO1NBQ0wsUUFERWdFLEdBRUc7U0FDWSxVQUFBLFdBelduQi9ELGNBc1dPRCxLQUFIZ0U7U0FHZSxPQUFBO1FBQStEO1lBUWxGcUIsbUJBQW1CckIsR0FBR2hFO0lBQ3hCLFFBRHFCZ0UsR0FFaEI7SUFDWSxVQUFBLFdBcFhmL0QsY0FpWHNCRCxLQUFIZ0U7SUFHSixPQUFBO0dBQStEO1lBRzlFc0Isa0JBQWtCekUsR0FBR0c7SUFBTSxPQXBEM0IrRCxlQW9EMEMsb0JBQXhCbEUsR0FBR0c7R0FBMEM7WUFDL0R1RSx1QkFBdUIxRSxHQUFHRztJQUFNLE9BckRoQytELGVBcUR1RCxhQUFBLG9CQUFoQ2xFLEdBQUdHO0dBQW1EO09BQzdFd0U7WUFDQUMsd0JBQXdCNUUsR0FBR0csS0FBSWdEO0lBQUksT0FBQSxvQkFBWG5ELEdBQUdHLGtCQUFJZ0Q7R0FBa0M7WUFDakUwQixXQUFXN0UsR0FBR0csS0FBTSxPQXhEcEIrRCxlQTlCQVAsT0FzRlczRCxHQUFHRyxNQUFtQztZQUNqRDJFLGdCQUFnQjlFLEdBQUdHO0lBQU0sT0F6RHpCK0QsZUF5RGdELGFBdkZoRFAsT0F1RmdCM0QsR0FBR0c7R0FBNEM7WUFFL0Q0RSxnQkFBZ0IvRSxHQUFHRyxLQUFJZ0Q7SUFwRHZCa0Isa0JBb0R1QmxCO0lBQ3pCLE9BM0VFVyxhQTBFZ0I5RCxHQUFHRyxLQUFJZ0Q7R0FFTDtZQUdsQjZCLHFCQUFxQmhGLEdBQUdHLEtBQUlnRDtJQXpENUJrQixrQkF5RDRCbEI7V0EvRTVCVyxhQStFcUI5RCxHQUFHRyxrQkFBSWdEO0dBR0Q7T0FHM0I4QjtZQUNBQyx3QkFBd0JsRixHQUFHRztJQUFNLE9BQU8sYUFBQSxvQkFBaEJILEdBQUdHO0dBQWtDO09BQzdEZ0Y7WUFDQUMseUJBQXlCcEYsR0FBR0csS0FBSWdEO0lBQUksT0FBQSxvQkFBWG5ELEdBQUdHLGtCQUFJZ0Q7R0FBa0M7WUFDbEVrQyxZQUFZckYsR0FBR0csS0FBTSxPQXhHckJ3RCxPQXdHWTNELEdBQUdHLEtBQWtCO1lBQ2pDbUYsaUJBQWlCdEYsR0FBR0csS0FBTSxPQUFPLGFBekdqQ3dELE9BeUdpQjNELEdBQUdHLE1BQTJCO1lBRS9Db0YsaUJBQWlCdkYsR0FBR0csS0FBSWdEO0lBM0V4QmlCLG1CQTJFd0JqQjtJQUMxQixPQTdGRVcsYUE0RmlCOUQsR0FBR0csS0FBSWdEO0dBRU47WUFHbEJxQyxzQkFBc0J4RixHQUFHRyxLQUFJZ0Q7SUFoRjdCaUIsbUJBZ0Y2QmpCO1dBakc3QlcsYUFpR3NCOUQsR0FBR0csa0JBQUlnRDtHQUdGO09BRzNCc0M7WUFDQUMsMkJBQTJCMUYsR0FBR0c7SUFBTSxPQUFhLGlCQUFRLG9CQUE5QkgsR0FBR0c7R0FBaUQ7T0FDL0V3RjtZQUNBQyx1QkFBdUI1RixHQUFHRztJQUFNLE9BQUEsaUJBQU8sb0JBQWhCSCxHQUFHRztHQUFrQztPQUM1RDBGO1lBQ0FDLHdCQUF3QjlGLEdBQUdHLEtBQUlnRDtJQUFJLE9BQUEsb0JBQVhuRCxHQUFHRyxLQUE0QixpQkFBeEJnRDtHQUFrQztPQUNqRTRDO1lBQ0FDLDRCQUE0QmhHLEdBQUdHLEtBQUlnRDtJQUFJLE9BQUEsb0JBQVhuRCxHQUFHRyxLQUE0QixpQkFBeEJnRDtHQUFpRDtZQUNwRjhDLGVBQWVqRyxHQUFHRyxLQUFNLE9Bekh4QnlELE9BeUhlNUQsR0FBR0csS0FBaUM7WUFDbkQrRixvQkFBb0JsRyxHQUFHRztJQUFNLE9BQWEsaUJBMUgxQ3lELE9BMEhvQjVELEdBQUdHO0dBQTBDO1lBQ2pFZ0csV0FBV25HLEdBQUdHLEtBQU0sT0EzSHBCeUQsT0EySFc1RCxHQUFHRyxLQUFrQjtZQUNoQ2lHLGdCQUFnQnBHLEdBQUdHLEtBQU0sT0FBQSxpQkE1SHpCeUQsT0E0SGdCNUQsR0FBR0csTUFBMkI7WUFDOUNrRyxZQUFZckcsR0FBR0csS0FBSWdELEdBQUksT0E5R3ZCYSxPQThHWWhFLEdBQUdHLEtBQUlnRCxHQUFrQjtZQUNyQ21ELGlCQUFpQnRHLEdBQUdHLEtBQUlnRDtJQUFJLE9BL0c1QmEsT0ErR2lCaEUsR0FBR0csS0FBcUIsaUJBQWpCZ0Q7R0FBMkI7WUFFbkRvRCxvQkFBb0J2RyxHQUFHRyxLQUFJZ0Q7SUFqRjNCbUIsa0JBaUYyQm5CO0lBRWhCLE9BbkhYYSxPQWlIb0JoRSxHQUFHRyxLQUFJZ0Q7R0FFQTtZQUczQnFELHlCQUF5QnhHLEdBQUdHLEtBQUlnRDtJQXRGaENtQixrQkFzRmdDbkI7SUFHckIsT0F6SFhhLE9Bc0h5QmhFLEdBQUdHLEtBR2pCLGlCQUhxQmdEO0dBR0k7WUFHcEJzRCxzQkFBc0J6RyxHQUFHRztJQUFNLE9BQWEsb0JBQUEsb0JBQXRCSCxHQUFHRztHQUF3QztZQUVqRXVHLDJCQUEyQjFHLEdBQUdHO0lBQ2hELE9BQWEsb0JBQUEsaUJBQVEsb0JBRHdCSCxHQUFHRztHQUNMO09BR3pCd0c7WUFDQUMsdUJBQXVCNUcsR0FBR0c7SUFBTSxPQUFBLGlCQUFPLG9CQUFoQkgsR0FBR0c7R0FBa0M7T0FDNUQwRztZQUNBQyx3QkFBd0I5RyxHQUFHRyxLQUFJZ0Q7SUFBSSxPQUFBLG9CQUFYbkQsR0FBR0csS0FBNEIsaUJBQXhCZ0Q7R0FBa0M7WUFDakU0RCx1QkFBdUIvRyxHQUFHRyxLQUFJZ0Q7SUFBSSxPQUFBLG9CQUFYbkQsR0FBR0csS0FBNEIsb0JBQXhCZ0Q7R0FBd0M7WUFFdEU2RCw0QkFBNEJoSCxHQUFHRyxLQUFJZ0Q7SUFDckQsT0FBQTthQUQ4Q25ELEdBQUdHLEtBQzdCLGlCQUFRLG9CQUR5QmdEO0dBQ1I7WUFHM0I4RCxlQUFlakgsR0FBR0c7SUFBTSxPQUFhLG9CQXRKckQwRCxPQXNKK0I3RCxHQUFHRztHQUFpQztZQUNuRCtHLG9CQUFvQmxILEdBQUdHO0lBQU0sT0FBYSxvQkFBQSxpQkF2SjFEMEQsT0F1Sm9DN0QsR0FBR0c7R0FBMEM7WUFDakVnSCxXQUFXbkgsR0FBR0csS0FBTSxPQXhKcEMwRCxPQXdKMkI3RCxHQUFHRyxLQUFrQjtZQUNoQ2lILGdCQUFnQnBILEdBQUdHLEtBQU0sT0FBQSxpQkF6SnpDMEQsT0F5SmdDN0QsR0FBR0csTUFBMkI7WUFDOURrSCxZQUFZckgsR0FBR0csS0FBSWdELEdBQUksT0EzSXZCYyxPQTJJWWpFLEdBQUdHLEtBQUlnRCxHQUFrQjtZQUNyQ21FLGlCQUFpQnRILEdBQUdHLEtBQUlnRDtJQUFJLE9BNUk1QmMsT0E0SWlCakUsR0FBR0csS0FBcUIsaUJBQWpCZ0Q7R0FBMkI7WUFDbkRvRSxnQkFBZ0J2SCxHQUFHRyxLQUFJZ0Q7SUFBSSxPQTdJM0JjLE9BNklnQmpFLEdBQUdHLEtBQXFCLG9CQUFqQmdEO0dBQWlDO1lBQ3hEcUUscUJBQXFCeEgsR0FBR0csS0FBSWdEO0lBQUksT0E5SWhDYyxPQThJcUJqRSxHQUFHRyxLQUFxQixpQkFBUSxvQkFBekJnRDtHQUEwQzs7SUFFdEVzRTtNQTFjQW5JLGtCQW1YQW1GLG9CQUNBQztJQTBGQWdEO01BOWNBcEksa0JBb1hBb0YseUJBREFEO0lBK0ZBa0Q7TUFsZEFySSxrQkFxWUEyRixxQkFDQUM7SUFnRkEwQztNQXRkQXRJLGtCQXNZQTRGLDBCQURBRDtJQXFGQTRDLGVBMWRBdkksa0JBdVhBdUYsYUFDQUM7SUFtR0FnRCxvQkEzZEF4SSxrQkF3WEF3RixrQkFEQUQ7SUFxR0FrRCxnQkE1ZEF6SSxrQkF5WUErRixjQUNBQztJQW1GQTBDLHFCQTdkQTFJLGtCQTBZQWdHLG1CQURBRDtJQXNGQTRDO01BL2RBM0ksa0JBcVhBcUYscUJBQ0FDO0lBNkdBc0Q7TUFuZUE1SSxrQkFzWEFzRiwwQkFEQUQ7SUFrSEF3RDtNQXZlQTdJLGtCQXVZQTZGLHNCQUNBQztJQW1HQWdEO01BM2VBOUksa0JBd1lBOEYsMkJBREFEO0lBd0dBa0Q7TUEvZUEvSSxrQkEwWEF5RixrQkFLQUM7SUFpSEFzRDtNQWhmQWhKLGtCQStYQTBGLHVCQUxBRDtJQXdIQXdEO01BbGZBakosa0JBNFlBaUcsbUJBS0FDO0lBcUdBZ0Q7TUF0ZkFsSixrQkFpWkFrRyx3QkFMQUQ7SUE4R0FrRDtNQTFmQW5KLGtCQXlaQXFHLG9CQUNBQztJQW9HQThDO01BOWZBcEosa0JBMFpBc0cseUJBREFEO0lBeUdBZ0Q7TUFsZ0JBckosa0JBMlpBdUcscUJBQ0FDO0lBMEdBOEM7TUF0Z0JBdEosa0JBNFpBd0csMEJBREFEO0lBK0dBZ0QsaUJBMWdCQXZKLGtCQWlhQTZHLGFBQ0FDO0lBeUdBMEMsb0JBM2dCQXhKLGtCQWthQThHLGtCQURBRDtJQTJHQTRDLGlCQTVnQkF6SixrQkFtYUErRyxjQUNBQztJQXlHQTBDLHFCQTdnQkExSixrQkFvYUFnSCxtQkFEQUQ7SUE0R0E0QztNQS9nQkEzSixrQkF1WkFtRyx3QkFDQUM7SUEySEF3RDtNQW5oQkE1SixrQkF3WkFvRyw2QkFEQUQ7SUFnSUEwRDtNQXZoQkE3SixrQkE2WkF5Ryx5QkFDQUM7SUE2SEFvRDtNQTNoQkE5SixrQkE4WkEwRyw4QkFEQUQ7SUFrSUFzRCxtQkEvaEJBL0osa0JBK1pBMkcsaUJBQ0FDO0lBZ0lBb0Q7TUFoaUJBaEssa0JBZ2FBNEcsc0JBREFEO0lBbUlBc0Q7TUFsaUJBakssa0JBc2FBaUgsc0JBS0FDO0lBMkhBZ0Q7TUF0aUJBbEssa0JBMmFBa0gsMkJBTEFEO0lBb0lBa0Q7TUExaUJBbkssa0JBaWJnQm1ILHdCQUVBQztJQTJIaEJnRDtNQTlpQkFwSyxrQkFtYmdCb0gsNkJBRkFEO0lBaUloQmtEO01BbGpCQXJLLGtCQTJiZ0J5SCx5QkFFQUM7SUF5SGhCNEM7TUF0akJBdEssa0JBNmJnQjBILDhCQUZBRDtJQStIaEI4QztNQTFqQkF2SyxrQkFpY2dCMkgsaUJBQ0FDO0lBeUhoQjRDO01BM2pCQXhLLGtCQWtjZ0I0SCxzQkFEQUQ7SUEySGhCOEM7TUE1akJBekssa0JBdWNBaUksa0JBQ0FDO0lBcUhBd0M7TUE3akJBMUssa0JBd2NBa0ksdUJBREFEO0lBd0hBMEM7TUEvakJBM0ssa0JBdWJnQnFILG9CQUNBQztJQTJJaEJzRDtNQW5rQkE1SyxrQkF3YmdCc0gseUJBREFEO0lBZ0poQndEO01BdmtCQTdLLGtCQXliZ0J1SCxxQkFDQUM7SUFpSmhCc0Q7TUEza0JBOUssa0JBMGJnQndILDBCQURBRDtJQXNKaEJ3RCxpQkEva0JBL0ssa0JBbWNnQjZILGFBQ0FDO0lBNEloQmtELG9CQWhsQkFoTCxrQkFvY2dCOEgsa0JBREFEO0lBOEloQm9ELGlCQWpsQkFqTCxrQkFxY0ErSCxjQUNBQztJQTRJQWtELGlCQWxsQkFsTCxrQkFzY0FnSSxtQkFEQUQ7WUErSUFvRDtJQUNGLE9BQUE7R0FBa0U7WUFHaEVDO0lBQ0YsT0FBQTtHQUFtRTtZQUlqREMsaUJBQWlCN0s7SUFDbkMsR0EvbEJFVDtLQWltQnlDLEdBQWhDLGtCQUh3QlMsV0FHUSxjQUhSQTtpQ0FBQUE7S0FLNUIsT0FkTDJLOztJQWU0QyxHQUFoQyxrQkFOcUIzSyxXQU1XLGNBTlhBO2dDQUFBQTtJQVE5QixPQWpCSDJLO0dBaUJzQjtZQUdORyxrQkFBa0I5SztJQUNwQyxHQTFtQkVUO0tBNG1Cb0IsR0FBWCxrQkFIeUJTLFdBR2QsY0FIY0E7aUNBQUFBO0tBSzdCLE9BckJMNEs7O0lBc0J1QixHQUFYLGtCQU5zQjVLLFdBTVgsY0FOV0E7Z0NBQUFBO0lBUS9CLE9BeEJINEs7R0F3QnVCO1lBR2RHLHdCQUF3QjdLLEdBQUdHO0lBQ3RDLE9BdkJrQndLLGlCQTlCaEJWLHNCQW9EaUNqSyxHQUFHRztHQUNTO1lBR3BDMkssd0JBQXdCOUssR0FBR0c7SUFDdEMsT0EzQmtCd0ssaUJBMUJoQlQseUJBb0RpQ2xLLEdBQUdHO0dBQ1M7WUFHN0M0SyxpQkFBaUIvSyxHQUFHRztJQUFNLE9BOUJWd0ssaUJBZGhCTixlQTRDaUJySyxHQUFHRztHQUE4QztZQUNsRTZLLGlCQUFpQmhMLEdBQUdHO0lBQU0sT0EvQlZ3SyxpQkFiaEJMLGtCQTRDaUJ0SyxHQUFHRztHQUE4QztZQUV6RDhLLHlCQUF5QmpMLEdBQUdHO0lBQ3ZDLE9BdkJrQnlLLGtCQXpDaEJYLHNCQStEa0NqSyxHQUFHRztHQUNTO1lBR3JDK0sseUJBQXlCbEwsR0FBR0c7SUFDdkMsT0EzQmtCeUssa0JBckNoQlYseUJBK0RrQ2xLLEdBQUdHO0dBQ1M7WUFHOUNnTCxrQkFBa0JuTCxHQUFHRztJQUFNLE9BOUJYeUssa0JBekJoQlAsZUF1RGtCckssR0FBR0c7R0FBK0M7WUFDcEVpTCxrQkFBa0JwTCxHQUFHRztJQUFNLE9BL0JYeUssa0JBeEJoQk4sa0JBdURrQnRLLEdBQUdHO0dBQStDO1lBSXBFa0wsa0JBQWtCckwsR0FBR0csS0FBSUw7SUE5UnpCMEUsbUJBOFJ5QjFFO0lBQzNCLE9BaEZFaUssa0JBK0VrQi9KLEdBQUdHLEtBQUlMO0dBRU47WUFHbkJ3TCxrQkFBa0J0TCxHQUFHRyxLQUFJTDtJQW5TekIwRSxtQkFtU3lCMUU7SUFDM0IsT0FwRkVrSyx1QkFtRmtCaEssR0FBR0csS0FBSUw7R0FFTjtZQVFuQnlMLGlCQUFrQnZMLEdBQVFHLEtBQUlMO0lBQUksT0FBQSxjQUFoQkUsR0FBUUcsS0FBZ0MsMEJBQTVCTDtHQUFrRDtZQUVoRjBMLGdCQUFpQnhMLEdBQVFHLEtBQUlMO0lBSS9CLElBQUkyTCxXQUoyQjNMLElBQUFBLElBQUFBO0lBSy9CLE9BQUEsY0FMbUJFLEdBQVFHLEtBS0gsMEJBRHBCc0w7R0FDMEM7WUFHNUNDLGlCQUFrQjFMLEdBQVFHO0lBQWtCLFVBQUEsY0FBMUJILEdBQVFHO0lBQWtCLE9BQUE7R0FBeUI7WUFFckV3TCxnQkFBaUIzTCxHQUFRRztJQUMzQixJQUFvQixNQUFBLGNBRERILEdBQVFHLE1BQ3ZCTCxJQUFJO0lBQ1IsY0FESUEsSUFBQUEsY0FBQUE7R0FDMkI7WUFHN0I4TCxjQUFlNUwsR0FBUUcsS0FBSUw7SUFDN0IsVUFENkJBLG1DQUFBQTs7S0E5VlosVUFBQSxXQWpWZlYsY0ErVXFCRCxLQWdXTVc7S0E5Vlo7O0lBZ1dqQixPQUFBLGNBRmlCRSxHQUFRRyxLQUVSLDBCQUZZTDtHQUVVO1lBR3JDK0wsYUFBYzdMLEdBQVFHLEtBQUlMO0lBQzVCLFVBRDRCQSxzQ0FBQUE7O0tBOVZYLFVBQUEsV0F0VmZWLGNBb1ZvQkYsT0FnV01ZO0tBOVZYOztRQWdXYjJMLFdBRndCM0wsSUFBQUEsSUFBQUE7SUFHNUIsT0FBQSxjQUhnQkUsR0FBUUcsS0FHUCwwQkFEYnNMO0dBQ21DO1lBR3JDSyxVQUFXOUwsR0FBUUc7SUFBa0IsVUFBQSxjQUExQkgsR0FBUUc7SUFBa0IsT0FBQTtHQUFrQjtZQUV2RDRMLFNBQVUvTCxHQUFRRztJQUNwQixJQUFvQixNQUFBLGNBRFJILEdBQVFHLE1BQ2hCTCxJQUFJO0lBQ1IsY0FESUEsSUFBQUEsY0FBQUE7R0FDMkI7WUFLYmtNLGtCQUFrQmxNLEdBQ3BDLE9BL3JCRVAsZUE4ckJrQ08sUUFBQUEsRUFLakI7WUFHUm1NLHFCQUFxQmpNLEdBQUdHLEtBQUlMO0lBQUksT0FqTXpDOEksMEJBaU04QjVJLEdBQUdHLEtBQUlMO0dBQWlEO1lBQzdFb00scUJBQXFCbE0sR0FBR0csS0FBSUw7SUFBSSxPQXRNekM2SSxzQkFzTThCM0ksR0FBR0csS0FBSUw7R0FBaUQ7WUFFN0VxTSxxQkFBcUJuTSxHQUFHRztJQUNuQyxPQVprQjZMLGtCQWpNaEJ0RCx5QkE0TThCMUksR0FBR0c7R0FDYTtZQUdyQ2lNLHFCQUFxQnBNLEdBQUdHO0lBQ25DLE9BaEJrQjZMLGtCQXJNaEJ2RCxzQkFvTjhCekksR0FBR0c7R0FDYTtZQUc5Q2tNLGtCQUFrQnJNLEdBQUdHLEtBQUlMO0lBblh6QnlFLG1CQW1YeUJ6RTs7O1FBanRCekJQLCtCQWl0QnlCTyxPQUV2QjJMLE1BRnVCM0w7U0FFdkIyTCxNQUZ1QjNMOztJQUczQixPQS9LRTBKLDJCQTRLa0J4SixHQUFHRyxLQUVuQnNMO0dBQ3FCO1lBR3ZCYSxrQkFBa0J0TSxHQUFHRyxLQUFJTDtJQXpYekJ5RSxtQkF5WHlCekU7OztRQXZ0QnpCUCwrQkF1dEJ5Qk8sT0FFdkIyTCxNQUZ1QjNMO1NBRXZCMkwsTUFGdUIzTDs7SUFHM0IsT0F6TEV5SixzQkFzTGtCdkosR0FBR0csS0FFbkJzTDtHQUNxQjtZQUd2QmMsY0FBY3ZNLEdBQUdHO0lBQU0sT0EvQlA2TCxrQkFwTGhCbEQsa0JBbU5jOUksR0FBR0c7R0FBK0M7WUFDaEVxTSxjQUFjeE0sR0FBR0c7SUFBTSxPQWhDUDZMLGtCQXJMaEJuRCxlQXFOYzdJLEdBQUdHO0dBQStDO1lBTTVEc00sWUFBVXpNLEdBQUVHLEtBQU0sT0EvQ3RCMkwsVUErQ2M5TCxHQUFFRyxLQUFzQjtZQUNsQ3VNLFVBQVUxTSxHQUFFRyxLQUFJZ0Q7SUFBSSxPQUFBLGNBQVZuRCxHQUFFRyxLQUF5QiwwQkFBckJnRDtHQUEyQztZQUMzRHdKLGNBQWMzTSxHQUFFRyxLQUFNLE9BdGMxQndELE9Bc2NrQjNELEdBQUVHLEtBQWtCO1lBQ2xDeU0sY0FBYzVNLEdBQUVHLEtBQUlnRCxHQUFJLE9BeGI1QlcsYUF3YmtCOUQsR0FBRUcsS0FBSWdELEdBQXdCO1lBQzVDMEosYUFBYTdNLEdBQUVHLEtBQU0sT0FuY3pCeUQsT0FtY2lCNUQsR0FBRUcsS0FBa0I7WUFDakMyTSxhQUFhOU0sR0FBRUcsS0FBSWdELEdBQUksT0FyYjNCYSxPQXFiaUJoRSxHQUFFRyxLQUFJZ0QsR0FBa0I7WUFDckM0SixhQUFhL00sR0FBRUcsS0FBTSxPQWhjekIwRCxPQWdjaUI3RCxHQUFFRyxLQUFrQjtZQUNqQzZNLGFBQWFoTixHQUFFRyxLQUFJZ0QsR0FBSSxPQWxiM0JjLE9Ba2JpQmpFLEdBQUVHLEtBQUlnRCxHQUFrQjs7Ozs7WUFQckNzSixhQUVBRSxlQUVBRSxjQUVBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBTEFMLFdBRUFFLGVBRUFFLGNBRUFFOzs7Ozs7Ozs7Ozs7Ozs7WUFVRUMsWUFBVWpOLEdBQUVHLEtBQU0sT0FsRnhCdUwsaUJBa0ZnQjFMLEdBQUVHLEtBQTZCO1lBQ3pDK00sWUFBVWxOLEdBQUVHLEtBQUlnRCxHQUFJLE9BN0YxQm9JLGlCQTZGZ0J2TCxHQUFFRyxLQUFJZ0QsR0FBNkI7R0FjdEM7SUFiUGdLO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7O1lBUEFQLGFBRUFFLGlCQUVBRSxnQkFFQUU7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUxBTCxhQUVBRSxpQkFFQUUsZ0JBRUFFOzs7Ozs7Ozs7Ozs7Ozs7SUFRTyxjQXRjYnRKOzs7Ozs7OztPQXZFSnJCO09BQUEzQjtPQUFBRDtPQUFBNEI7T0FBQUc7T0FBQUU7T0FBQWpDO09BQUFDO09BRUlrQztPQXZQQTVEO09BY0FLO09BdUhBZ0I7T0FDQUM7T0FDQUM7T0FDQUM7T0FXQVc7T0E3SEF6QjtPQVVBSztPQXRCQVg7Ozs7OztPQXVJQXlCOzs7OztPQW1DQWU7T0FpQkFFO09BZ0JBSztPQWdEQVU7T0FnYkEwSTtPQVJBRjtPQU1BQztPQVhBRjtPQUxBRDtPQVZBSDtPQVFBRTtPQVZBSDtPQS9MQXpEO09BREFEO09Bc0JBUztPQURBRDtPQWpDQVg7T0FKQUQ7T0F5QkFTO09BSkFEO09BRkFEO09BREFEO09BMEJBUztPQUpBRDtPQTVCQVg7T0FKQUQ7T0F5QkFTO09BSkFEO09BeURBbUI7T0FEQUQ7T0FPQUc7T0FKQUQ7T0FmQUw7T0FKQUQ7T0FZQUc7T0FKQUQ7T0F1TUFvRDtPQUNBQztPQWJBSDtPQU1BQztPQWRTSDtPQUlBQztPQVBBSDtPQUNBQztPQTVFVGxCO09BREFEO09BaEVBakI7T0FEQUQ7T0FHQUc7T0FEQUQ7T0EyRFNlO09BSkFEO09BckVUbkI7T0FKQUQ7T0FZQUc7T0FKQUQ7T0FvRkF3QjtPQUNBQztPQVNBRTtPQUxBRDtPQWJTSjtPQUlBQztPQTVFVHRCO09BSkFEO09BdkNBYjtPQURBRDtPQUdBRztPQURBRDtPQWRBTDtPQUpBRDtPQVlBRztPQUpBRDtPQThFQTJCO09BREFEO09BR0FHO09BREFEO09BZEFMO09BSkFEO09BWUFHO09BSkFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJQ2hpQlM7S0FBUHNELE9BQU87S0FDUEMsT0FBTztJQUNVLEdBQUEsNEJBRmpCRCxNQUNBQztLQUNLLE1BQUE7SUFkWDs7O0lBMEhLLElBZE9DLDRCQWNQO2FBYk9DLGE7SUFKTztLQUFBLFVBR1BELE9BQ0FDO0tBUklDO0tBQUFDO0tBQUFDO0tBQUFDO0tBa0JKQyxvRDtLQUhPLFVBZkhKLFFBQUFDLGFBQUFDLEtBQUFDLEtBa0JKQzs7OztJQXVCUDtLQWhCV0o7S0FBQUM7S0FBQUM7S0FBQUM7S0FnQlg7S0FIT0Msb0Q7S0FITyxVQVZISixRQUFBQyxhQUFBQyxLQUFBQyxLQWFKQzs7OztRQVFOTixnQkFDQUM7SUFKMkIsV0FHM0JELE9BQ0FDOzs7SUE4QkQ7S0FBQTs7S0FaT0M7S0FDQUU7S0FDQUM7S0FDQUY7S0FNQUcsb0Q7Ozs7a0JBVEFKLFFBR0FDLGFBRkFDLEtBQ0FDO2tCQUZBSCxRQUdBQyxhQUZBQyxLQUNBQyxLQU9BQzs7OztJQXVDUDtLQUFBOztLQWxCT0o7S0FDQUU7S0FDQUM7S0FDQUY7S0FRQUk7S0FDQUM7S0FDQUM7S0FDQUM7Ozs7a0JBZEFSLFFBR0FDLGFBRkFDLEtBQ0FDO2tCQVNBRSxVQUdBRyxlQUZBRixPQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEyQnNCO0tBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCOzBCOztJOzs7Ozs7K0I7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7Ozs7Ozs7b0JDaUIyQjtxQkFVRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDbFQzREU7WUFFQUMsTUFBTUMsU0FBUUMsR0FBRUM7SUFDbEI7bUJBQXVCLGlDQURmRixTQUFRQyxHQUFFQzs7R0FDeUM7WUFHekRDLEtBQUtIO0lBQVUsa0JBQXVCLDJCQUFqQ0E7R0FBNEQ7WUFDakVJLE1BQU1DLFFBQVMsT0FBQSwyQkFEZkYsTUFDTUUsUUFBb0M7WUFDMUNDLE9BQU9DO0lBQU8sa0JBQXVCLDJCQUE5QkE7R0FBcUQ7WUFDNURDLFFBQVFDLElBQUdDLElBQUssT0FBQSxzQkFBUkQsSUFBR0MsSUFBWTtPQUN2QkM7WUFFQUMsS0FBS0EsTUFBS0M7SUFDWixLQURZQSxHQUVKOztLQUNhLElBQWFDLGtCQUFOQztLQUFpQixlQUh0Q0gsTUFHcUJHLE9BQU1EO0lBQTBDO0lBQXZELE9BQUEsMEJBSFREO0dBR2dFO1lBRzFFRyxVQUFVQyxHQUFFQyxHQUFJLE9BTmhCTixLQU1VSyxHQUFhLFdBUnZCTixTQVFZTyxJQUFzQjtZQUNsQ0MsUUFBUW5CLGdCQUFZLE9BYnBCRyxLQWFRSCxTQUF3QjtZQUNoQ29CLGlCQUF1QixPQXBCdkJ0QixLQW9CMkI7WUFDM0J1QixpQkFBdUIsT0FyQnZCdkIsS0FxQjJCO1lBRTNCd0IsUUFBUUMsR0FBRUM7SUFDWixJQUFJLFVBQUEsV0FETUQsR0FBRUMsSUFDUjtVQUNGQztLQUMwRDtNQUQxREMsMEJBQUFEO01BQzBELHFCQUFNLHNCQURoRUM7S0FDTyxPQWxCUHBCO2NBa0JPOztHQUEyRTtZQUdsRnFCLFNBQVNKO0lBQ1g7SUFBQSxPQVBFRCx3QkFTRyxXQUhNQyxjQTdCVHpCLEtBaUNPO0dBQ0w7WUFHRjhCLFlBQVliLE1BQU8sT0FBQSxpQ0FBUEEsTUFBa0M7WUFFOUNjLE9BQU9oQjs7S0FDSztNQUFhQztNQUFOQztNQUN1QixNQUoxQ2EsWUFHbUJiO01BQ0MsTUFBQSwyQkFES0Q7S0FDTCxPQUFBO0lBQTBDO0lBRGxELE9BQUEsMEJBRExEO0dBRXVEO1lBYTlEaUIsT0FBT2pCO0lBQUksR0FBRyx5QkFBUEEsSUFBNEI7SUFUckMsYUFHYWtCOzs7T0FBQ0M7T0FBQUM7T0FBQUMsaUNBQUFEO09BQUFFLHFDQUFBSDtxQkFBQUUsY0FBQUM7OzBDQUFESjs7O0tBREksSUFBYWpCLGtCQUFOQztLQUFpQixXQVZ2Q2EsWUFVc0JiLE9BQU1EO0lBQW1DO0lBQS9ELFVBQUEsMEJBT09EOzs7R0FBb0Q7WUFFM0R1QixZQUFZdkI7SUFBb0IsVUFGaENpQixPQUVZakI7SUFBb0IsT0FBQTtHQUFVO1lBQzFDd0IsZUFBZUMsT0FBTUM7d0JBQTBELE9BQTFEQSxFQUEyRDtJQUExQyxVQUh0Q1QsT0EvQkFSLFFBa0NlZ0IsT0FBTUM7SUFBK0MsT0FBQTtHQUFhO1lBRWpGQyxhQUFhRixPQUFNRyxLQUFJQyxRQUFRbEI7SUFDcEIsSUFBVE0sU0FyQ0ZSLFFBb0NhZ0IsT0FBa0JkO0lBRWpDLE9BakRFWixLQWlERywwQkFGZ0I2QixNQUNqQlg7R0FDd0I7WUFHMUJhLE1BQU1MLE9BQU1JLFFBQU9EO0lBQ2IsSUFBSmpCLElBQUksMEJBRGFpQixLQUFQQztJQUVkLE9BUEVGLGFBS01GLE9BQWFHLEtBQVBDLFFBQ1ZsQjtHQUMyQjtZQUc3Qm9CLGFBQWFOLE9BQU1JO0lBQ3JCLGdCQUNJRyxLQUFJSixLQUFPLFdBUGJFLE1BS2FMLE9BQU1JLFFBRWJELE1BQUpJLEtBQXdDO0dBQUE7WUFHMUNDLG9CQUFvQlI7aUJBQ0pPLEtBQUlKLEtBQUlDLFFBQU9sQjtLQUN6QixJQUVKTSxTQW5CRlUsYUFlb0JGLE9BQ0FHLEtBQUlDLFFBQU9sQjtZQUc3Qk0sYUFBQUEsUUFIY2UsT0FBQUE7SUFHUztJQUhkLE9BQUE7R0FHZTtZQUcxQkUsSUFDV0MsUUFBT3hCO0lBQXBCLElBQWF5QixXQUFBRCxRQUFTRTtJQUNwQjtVQURXRDtNQVFMLE9BQUEsV0FoRk50QyxTQWdGTSwwQkFSY3VDO0tBSVgsSUFKRUMsV0FBQUYsYUFHVFgsUUFIU1csYUFNTkcsTUFqRUw5QixRQThERWdCLE9BSGdCZDtRQU1iNEI7TUFBcUIsSUFOTkMsYUFNZkQsS0FOZUYsT0FBVEQsV0FBQUUsVUFBU0QsT0FBQUc7O1VBQVRKLFdBQUFFOztHQVF3QjtZQUduQ0csVUFBVS9CO2lCQUNDQztLQUNMLFlBQUEsV0FGSUQsR0FDQ0M7K0JBOUZYMUI7U0FpR1FnQjtLQUFTLE9BM0ZqQlgsS0EyRlFXO0lBQW1CO0lBSHJCLHFCLE9BdkVOUTtHQTBFNEI7WUFHNUJpQyxTQUFTaEM7aUJBQ0VDO0tBQ0wsWUFBQSxXQUZHRCxHQUNFQzsrQkFyR1gxQjtTQXdHUWdCO0tBQVMsa0JBQVRBO0lBQWlDO0lBSG5DLHFCLE9BOUVOUTtHQWlGMEM7WUFHMUNrQyxTQUFTakMsR0FBR2tDO2lCQUF3QmpDLEdBQUssT0FBRyxXQUFuQ0QsR0FBMkJDLEtBM0dwQzFCLE9BTUFLLEtBcUdZc0QsVUFBZ0U7SUFBN0MscUIsT0FwRi9CbkM7R0FvRjZFO1lBRTdFb0MsS0FBTUMsS0FBS0M7O0tBQWdCQztLQUFYQztlQWpHaEJsRCxjQVdBVSxRQXNGV3NDLEtBQWdCQztJQUNyQixPQUFBO2FBcEdObEQsYUFFQUMsY0FXQVUsUUFzRk1xQyxLQUFVRzs7WUFJaEJDLGFBQWF6QixPQUFNMEI7aUJBQ0VDLEdBQUVDO0tBQW1DLFVBM0YxRDVDLFFBMEZhZ0IsT0FDVTRCO0tBQW1DLE9BdEcxRHRELEtBc0drQyx5QkFBYnFEO0lBQXVEO0lBQTlFLE9BQUEsV0F4R0V0RCxTQXdHRiwwQkFEcUJxRDtHQUVYO1lBR1JBLEtBQVdHLGNBQWE3QixPQUFNMEI7aUJBQ1ZFO0tBQ2QsSUFFSnJELElBbkdGUyxRQStGd0JnQixPQUNKNEI7WUFHbEJyRDtlQW5HRlM7eUJBcUdlVCxHQUFLLE9BaEhwQkQsS0FnSHlCLFdBTmR1RCxjQUNTRCxLQUtMckQsR0FBNkIsR0FGMUNBOztJQUU2QztJQUxqRCxPQUFBLFdBN0dFRixTQTZHRiwwQkFEZ0NxRDtHQU90QjtZQUdSSSxNQUFPeEQsTUFBS1csR0FBRThDO3dCQUFhLElBQVM5QixjQUFNLE9BQUEsV0FBOUJoQixHQUF3QmdCLEdBQVU7SUFBeEIsT0FWdEJ5Qjs7Y0FVMkQsSUFBTU07Y0FBVyxPQUFBLFdBQXJFMUQsTUFBMEQwRDthQUFvQjs7YUFBdkVEO0dBQXVFO1lBQ3JGRSxjQUFjOUQsSUFBR0M7SUFBSyxPQUFHLHlCQUFYRCxNQUFHQyxLQUFIRDtHQUEyQztZQUV6RCtEO0lBQWUsbUJBbklmMUU7UUFxSUtnQjtJQUFTLE9BL0hkWCxLQStIS1c7R0FBbUI7WUFHeEIyRCxRQUFTN0QsTUFBTThELE9BQU9DLE9BQU9DLFNBQVFyQztJQUN2QyxPQUFNLGlDQURXbUMsT0FBT0MsT0FBZXBDLEdBQVJxQzs7aUJBQWRGO1FBS0MsTUFBQTtnQkFMREE7UUFNcUQ7U0FBNURHLE9BTk9IO1NBTXFELE1BQUEsV0FOM0Q5RCxNQU1EaUU7U0FBbUQsTUFBQSxXQU5sRGpFLE1BQTRCMkI7UUFNaEIsT0F4SXJCcEMsS0F3SXFCOztPQUNnRDtRQUE3RDJFLE9BUE9KO1FBT3NELE1BQUEsV0FQNUQ5RCxNQU9Ea0U7UUFBb0QsTUFBQSxXQVBuRGxFLE1BQTRCMkI7T0FPaEIsT0F6SXJCcEMsS0F5SXFCOztjQS9JckJMOztpQkF3SXNCNkU7UUFVTixNQUFBO2dCQVZNQTtRQVc4QztTQUE1REksU0FYY0o7U0FXOEMsTUFBQSxXQVgzRC9ELE1BV0RtRTtTQUFtRCxNQUFBLFdBWGxEbkUsTUFBNEIyQjtRQVdoQixPQTdJckJwQyxLQTZJcUI7O09BQ2dEO1FBQTdENkUsU0FaY0w7UUFZK0MsTUFBQSxXQVo1RC9ELE1BWURvRTtRQUFvRCxNQUFBLFdBWm5EcEUsTUFBNEIyQjtPQVloQixPQTlJckJwQyxLQThJcUI7O0dBQTZEO1lBSWhGOEUsT0FBT3hFLElBQUdDLElBQUssT0EvSWpCRixRQStJU0MsSUFBR0MsSUFBa0I7R0FEbkIsZ0JBQ1R1RTs7Ozs7Ozs7T0F4SkZuRjtPQU1BSztPQUpBSjtPQU1BTztPQURBRjtPQUVBSTtPQUNBRztPQUVBQztPQU1BSTtPQUNBRztPQUNBQztPQUNBQztPQUVBQztPQU1BSztPQXlCQUc7T0FmQUQ7T0FpQkFPO09BQ0FDO09BT0FNO09BTEFIO09BVUFJO09BS0FFO09BT0FDO09BWUFPO09BT0FDO09BT0FDO09BRUFFO09BSUFLO09BS0FDO09BV0FPO09BRUFDO09BSEFKO09BUUFLOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7OztJQzFFRlM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQVZBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBbEJBQztJQUFBQztJQUNBQztJQUFBQztJQUNBQztJQUFBQztJQU1BQztJQUNBQztJQUNBQztJQUNBQzs7SUFJQUM7SUFDQUM7Ozs7SUFZUSxVQUFBO0lBQVI7O1dBQVE7O0lBQVIsTUFBQTtJQUFBQyxRQUFBOzs7OztHQUFRLFNBRVZDLHNCQUZVQztJQUFSLFVBQUE7SUFBQSxPQUFBLFdBQUEsK0JBQUFGLGlCQUFRRTtHQUE0RDtZQUV0RUMscUJBRk9DLFcsT0FBQUE7WUFFUEMsc0JBRk9DLFMsT0FBQUE7WUFFUEMsdUJBRk9DO2lCQUFMQyxHQUFBLE9BQUEsV0FBS0QsaUJBQUxDLEdBQW9FO0lBQXBFLG9CQUFBQSxHQUFBLE9BQUEsV0FBS0QsaUJBQUxDLEdBQW9FO0dBQUE7WUFFdEVDLHFCQUZPQyxNQUFpQkMsS0FBQUMsU0FBQUM7SSw0Q0FBQUQ7O1lBRXhCRSx1QkFGT0osTSxPQUFBQTtZQUVQSyx1QkFGT0M7aUJBQUxMLEtBQUFDLFNBQUFLO0tBQUEsT0FFRlIscUJBRk9PLGlCQUFMTCxLQUFBQyxTQUFBSztJQUFvRTtJQUFwRTtxQkFBQU4sS0FBQUM7YUFBQSxPQUFBLFdBQUtJLGlCQUFMTCxLQUFBQztZQUFvRTs7R0FBQTtZQUV0RU0sZ0JBRkVDO0lBQUE7S0FBQSxNQUVGSix1QkFGRUk7S0FBQSxNQUVGYix1QkFGRWE7SUFBQSxXQUVGbkIsc0JBRkVtQjtHQUFvRTtZQUV0RUMsb0JBRkVDLE9BQUFDLE9BQUFDLE9BQXNCLE9BQUEsV0FBdEJGLE9BQUFDLE9BQUFDO0dBQXdCO1lBRTFCQyxzQkFGRUMsYUFBQUMsS0FBQUMsSyxrQkFBQUYsYUFBQUMsS0FBQUM7Ozs7bURBQUF6QztJQUVGMEM7WUFBQUMsdUJBRkVuQjtJQUFBLElBQUFvQixzQkFBQSx1Q0FBQXBCO0lBQUEsZUFBQW9CLHlCQUFBcEI7R0FBb0U7O0lBU2xFcUI7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFPQUM7SUFDQUM7O0lBSVE7SUFDUixJQUFBLFNBSEFDOzs7OztRQUFBQTs7R0FXZTs7O0lBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTFEakIzRjtPQUFBQztPQUNBQztPQUFBQztPQUNBQztPQUFBQztPQU1BQztPQUNBQztPQUNBQztPQUNBQzs7T0FJQUM7T0FDQUM7T0FjRkU7T0FBQUU7T0FBQUU7T0FBQUU7T0FBQVE7T0FBQUw7T0FBQU07T0FBQUc7T0FBQUU7T0FBQUk7T0FBQUs7T0FBQUQ7T0FPSStDO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BT0E2QztPQUNBQztPQUVBQzs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FDakZNQyxVQUFVQztLQUNKLElBQUpDLElBQUksd0JB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QUQ7UUFBQUQ7UUFBQUc7UUFBQUM7UUFBQUM7UUFXRk87UUFBQVU7UUFBQVQ7UUFBQUE7O1FBSktlO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQ0FFO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQ0tHO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQ0tHO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQ1FHO1FBQVJDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUEzRTtRQUFBVTtRQUFBVDs7O1NBakJLOUM7U0FBTEM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUQ7U0FBQUU7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUU7U0FBQUQ7U0FDS0c7U0FBTEM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUQ7U0FBQUU7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUU7U0FBQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFLVUc7VUFBUkM7VUFBQUM7VUFBQUc7VUFBQUQ7VUFBQUQ7VUFBQUc7VUFBQUM7VUFBQUM7VUFXRk87VUFBQUM7VUFBQVM7O1NBSktNO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQ0FFO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQ0tHO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQ0tHO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQ1FHO1NBQVJDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUEzRTtTQUFBVTtTQUFBVDs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNwSW9CK0U7Ozs7Ozs7Ozs7Ozs7Ozs7T0FBQUE7Ozs7Ozs7OztlQUFBQTs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDSHBCQztJQWlCSUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBakJVOzs7SUFBQTs7OztJQUFBOztJQUFBLE1BQUE7SUFBQSxVQUFBO0lBQUEsVUFBQTtJQUFkLGNBQWM7SUFBZCxNQUFBO0lBQUF6WixRQUFBOzs7Ozs7Ozs7OztHQUFjLFNBQUFtRyxZQUFBakcsR0FBQXdaO0lBQWQsVUFBQTtJQUFBLE9BQUE7YUFBQSwrQkFBQTFaLGlCQUFjRSxPQUFBd1o7R0FHMEI7WUFIeEN0VCxXQUFNaEcsV0FBSXVaO0lBQVY7S0FBQSxJQUFBdFQsZUFBQSxNQUFBLFdBQU1qRyxXQUFOaUc7S0FBQSxPQUFBOztJQUFBLElBQUFDLGlCQUFBLE1BQUEsV0FBVXFULFdBQVZyVDtJQUFBLE9BQUE7R0FHd0M7WUFIeENDLFlBQU1qRyxTQUFJc1osU0FBVmhaLEtBQUE0RjtJQUFBO0tBQUEsSUFBQUgsZUFBQUksUUFBQSwrQkFBQTdGLEtBQUE0RjtLQUFBLE9BQUEsV0FBTWxHLFNBQU5NLEtBQUE2RixPQUFBSjs7SUFBQSxJQUFBQyxpQkFBQUksUUFBQSwrQkFBQTlGLEtBQUE0RjtJQUFBLE9BQUEsV0FBVW9ULFNBQVZoWixLQUFBOEYsT0FBQUo7R0FHd0M7WUFIeENtRCxhQUFNakosY0FBSXFaO2lCQUFWcFo7S0FBQSxVQUFVb1osdUJBQUpyWjtLQUFOLDBCLE9BQUErRixzQkFBQTlGO0lBR3dDO0lBSHhDO3FCQUFBQTthQUFBLE9BQUEyRixXQUFNNUYsaUJBQUlxWixpQkFBVnBaO1lBR3dDOztHQUFBO1lBSHhDa0csV0FBTWhHLE1BQUltWixNQUFWbFosS0FBQUMsU0FBQUM7SUFBQTtrRUFBQUQ7R0FHd0M7WUFIeEMrRixhQUFNakcsTUFBSW1aLE1BQVZsWixLQUFBQztJQUFBLFlBQUEsOEJBQUFELEtBQUFDOztLQUFBLElBQUFnRyxRQUFBLFdBQU1sRyxNQUFOQyxLQUFBQztLQUNFLFdBREZnRzs7Z0VBQUFoRztJQUFBLElBQUFpRyxVQUFBLFdBQVVnVCxNQUFWbFosS0FBQUM7SUFFRSxXQUZGaUc7R0FHd0M7WUFIeEM0QyxhQUFNekksY0FBSThZO2lCQUFWblosS0FBQUMsU0FBQUs7S0FBQSxPQUFBeUYsV0FBTTFGLGlCQUFJOFksaUJBQVZuWixLQUFBQyxTQUFBSztJQUd3QztJQUh4QztxQkFBQU4sS0FBQUM7YUFBQSxPQUFBK0Y7c0JBQU0zRixpQkFBSThZLGlCQUFWblosS0FBQUM7WUFHd0M7O0dBQUE7WUFIeEM4SSxNQUFBdkksT0FBQTRZO0lBQUE7S0FBQSxNQUFBdFEsYUFBQXRJLFVBQUE0WTtLQUFBLE1BQUF2USxhQUFBckksVUFBQTRZO0lBQUEsV0FBYzdULFlBQWQvRSxVQUFBNFk7R0FHd0M7WUFIeENwUSxRQUFBdEksT0FBQTJZLE9BQUExWSxPQUFBQztJQUFBLEdBQUEsK0JBQUFELE9BQUFDLFFBQUE7YUFBQUQ7U0FDRTJZLFFBREYzWTtjQUFBQyxVQUNFO1NBQUEyWSxRQURGM1k7S0FDVSxPQUFBLFdBRFZGLE9BQ0U0WSxPQUFBQzs7UUFDQUMsUUFGRjdZO2FBQUFDLFVBQ0U7UUFDQTZZLFFBRkY3WTtJQUVhLE9BQUEsV0FGYnlZLE9BRUVHLE9BQUFDO0dBQ3NDO0dBSHhDLFNBQUFyVixVQUFNc1YsVUFBSUMsVUFBVkM7SUFBQTs7Y0FBQUE7Z0JBQUFBOzs7Ozs7O09BQUEsT0FBQTs2Q0FBQWhCLGtCQUFBZ0I7O01BQUEsT0FBQTs0Q0FBQWhCLGtCQUFBZ0I7O2VBQUFBOztNQUFBLE9BQUE7NENBQUFoQixrQkFBQWdCOzs7TUFBQSxPQUFBOzRDQUFBaEIsa0JBQUFnQjtTQUFBQzs7NkJBQUFBOzhCQUFBQTtpQ0FBQUE7K0JBQUFBOztVQUFBQztTQUFBQSxtQkFBQUE7T0FBQTtRQUFBQyxXQUFBRDtRQUFBRSxXQUFBLFdBQU1OLFVBQU5LO09BQUEsV0FBQUM7O01BQUEsT0FBQTs7ZUFBQXBCO2VBQUFpQjtlQUFBRDs7U0FBQUs7UUFBQUEsbUJBQUFBO01BQUE7T0FBQUMsV0FBQUQ7T0FBQUUsV0FBQSxXQUFVUixVQUFWTztNQUFBLFdBQUFDOztLQUFBLE9BQUE7O2NBQUF2QjtjQUFBaUI7Y0FBQUQ7O0lBQUEsT0FBQSx3Q0FBQWhCLGtCQUFBZ0I7R0FHd0M7WUFIeENuVixVQUFNMlYsVUFBSUM7SUFBVjtLQUNFLElBQUFDLHFCQUFBQyxXQUFBLFdBRElILFVBQ0pFO0tBQUEsd0JBQUFDOztJQUNBLElBQUFDLHFCQUFBQyxXQUFBLFdBRlFKLFVBRVJHO0lBQUEsd0JBQUFDO0dBQ3NDO1lBRXBDQyxJQUFJeFYsR0FBR3lWLElBQUlDO0lBQ2IsU0FETTFWLFVBR0RpQixNQUhDakIsTUFHSSxXQUFHLFdBSEp5VixJQUdKeFU7UUFER3dCLE1BRkZ6QztJQUVTLFdBQU0sV0FGUjBWLElBRUxqVDtHQUNXO0dBS3JCO1VBYmNwQztJQWFkLGNBQUs7SUFBTCxNQUFBO0lBQUE2RCxVQUFBO0lBQUEsTUFBQTtJQUFLQztNQUFMLFdBQUEsK0JBQUFEO1lBQUFFLGFBQUF6SjtJLE9BYkEyRiwrQ0FhQTNGOztZQUFBMEosY0FBQXZKLEtBQUE0RixLQUFBL0Y7SUFBQSxPQWJBOEYsZ0RBYUEzRixLQUFBNEYsS0FBQS9GO0dBQW9FO0dBQXBFLElBQUEySixxQkFBQUYsY0FBQUM7WUFBQUUsYUFBdUJ6SixLQUFBQyxTQUFBQztJLE9BYnZCNkYsK0NBYXVCL0YsS0FBQUMsU0FBQUM7O1lBQXZCd0osYUFBQTFKLEtBQUFDO0lBQUEsT0FiQStGLGlEQWFBaEcsS0FBQUM7R0FBb0U7R0FBcEU7SUFBQTBKLHFCQUFBRCxjQUFBRDtJQUFBRyxjQUFLUCxlQUFMRyxnQkFBQUc7WUFBQU8sWUFBQTJRO0lBQUEsT0FiQXpXLDRDQWFBeVc7R0FBb0U7WUFBcEV6USxZQUFBMFE7SUFBQSxPQWJBclcsNENBYUFxVztHQUFvRTtZQUVoRUMsTUFBeUJDLE9BQUFDO2lCQUZYL00sT0FBQUM7S0FBQSxPQUFBLDRCQUFBRCxPQUFBQztJQUFHOzs7YUFickJuRjt3QkFhVWtTLE9BQUFDO2dCQUFBLE9BQUEsNEJBQUFELE9BQUFDO2VBQU07O2VBRWFIO2VBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BZmYxVjtPQUFkQztPQUFBRztPQUFBSztPQUFBRDtPQUFBOEM7T0FBQUM7T0FBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FBY3hEO1NBQWRDO1NBQUFHO1NBQUFLO1NBQUFEO1NBQUE4QztTQUFBQztTQUFBQztTQUFBQztTQUFBNUU7U0FBQUs7U0FLSWlXOztTQVFKeFE7U0FBQUU7U0FBQWQ7U0FBQUM7U0FBQUc7U0FBQUQ7U0FBS0o7U0FBTEc7U0FBQUc7U0FBQUM7U0FFSW1SO1NBRUFsQzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUV0Qkp1QyxPQUFPbFcsR0FBRW1XLEdBQUksT0FBQSxXQUFKQSxHQUFGblcsR0FBWTs7Ozs7c0NBQW5Ca1c7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNFQUUsVUFBV0MsWUFBVzdXLEdBQUU4VztJQUFJLFlBQUpBLElBQUFBLElBQUFBLElBQXNCLFdBQW5DRCxZQUFXN1c7R0FBMkM7WUFFakUrVyxNQUFPRixZQUFZRyxTQUFRaFgsR0FBRWlYLE9BQU1DO0lBQ3JDO0tBQUlDLGVBRGlDRCxPQUNULFdBRG5CTCxZQUFvQjdXLEtBQVFrWDtLQUVqQ2hXLE1BSkYwVixVQUVPQyxZQUFvQjdXLEdBQUVpWDtLQUczQkcsTUFMRlIsVUFFT0MsWUFBb0I3VyxHQUN6Qm1YLFVBQ0FqVztJQUVKLE9BQUEsV0FKcUI4VixTQUFRaFgsR0FFekJrQixLQUNBa1c7R0FDZTs7Ozs7OzsyREFOakJSLFdBRUFHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDQ1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFVBQUE7SUFBUixjQUFRO0lBQVIsTUFBQTtJQUFBclMsVUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FBUSxTQUFBN0QsWUFBQWpHO0lBQVIsV0FBQTtJQUFBLE9BQUE7YUFBQSwrQkFBQThKLG9CQUFROUo7R0FBK0I7WUFBdkNrRyxXQUFLaEcsV0FBTEs7SSxvQ0FBS0wsV0FBTEs7O1lBQUE4RixZQUFLakcsU0FBTE0sS0FBQTRGLEtBQUEvRjtJQUFBLE9BQUEsd0NBQUtILFVBQUxNLEtBQUE0RixLQUFBL0Y7R0FBdUM7WUFBdkNrRyxXQUFLaEcsTUFBVUMsS0FBQUMsU0FBQUM7SSwrQ0FBVkgsT0FBVUMsS0FBQUMsU0FBQUM7O1lBQWY4RixhQUFLakcsTUFBTEMsS0FBQUM7SUFBQSxPQUFBLHdDQUFLRixPQUFMQyxLQUFBQztHQUF1QztHQVk3QjtJQVBSb0Y7SUFDQUQ7Ozs7O2FBTk1HLGFBQVJDLFlBQUFHLGFBQUFLLGNBQUFEO1NBTUVYO1NBREFDOzs7Ozs7Ozs7Ozs7SUFPUTs7O0lBQUE7Ozs7OztJQUFBOzs7Ozs7SUFBQSxNQUFBO0lBQUEsVUFBQTtJQUFBLFVBQUE7SUFBZCxjQUFjO0lBQWQsTUFBQTtJQUFBZ0YsVUFBQTtHQUFjLFNBQUFDLGNBQUFoTCxHQUFBZ0Y7SUFBZCxXQUFBO0lBQUEsT0FBQTthQUFBLCtCQUFBK0Ysb0JBQWMvSyxPQUFBZ0Y7R0FJSztZQUpuQmlHLGFBQU0vSyxXQUFJdWM7SUFBViw4QkFBQTs7S0FBQSxJQUFBdFcsZUFBQSxPQUFBLFdBQVVzVyxXQUFWdFc7S0FBQSxPQUFBOztJQUFBO0tBQUF1VztLQUFBdFc7S0FBQSxPQUFBLFdBQU1sRyxXQUFOa0c7S0FBQXVXLE9BQUE7S0FBQSxPQUFBLFdBQVVGLFdBQVZDO0lBQUEsT0FBQSxnQ0FBQUM7R0FJbUI7WUFKbkJ6UixjQUFNOUssU0FBSXdjLFNBQVZsYyxLQUFBNEY7SUFBQTtLQUFBLE9BQUEsK0JBQUE1RixLQUFBNEY7O0tBQUEsSUFBQUgsZUFBQUksUUFBQSwrQkFBQTdGLEtBQUE0RjtLQUFBLE9BQUEsV0FBVXNXLFNBQVZsYyxLQUFBNkYsT0FBQUo7O0lBQUE7S0FBQXVXO0tBQUF0VztLQUFBSSxRQUFBLCtCQUFBOUYsS0FBQTRGO0tBQUF1VyxRQUFBLFdBQU16YyxTQUFOTSxLQUFBOEYsT0FBQUo7SUFBQSxPQUFBLFdBQVV3VyxTQUFWbGMsS0FBQW1jLE9BQUFIO0dBSW1CO1lBSm5CeFMsZUFBTTVKLGNBQUl3YztrQkFBVnZjO0tBQUEsV0FBVXVjLHdCQUFKeGM7S0FBTjtNLE9BQUE0SywwQkFBQTNLO0lBSW1CO0lBSm5CO3FCQUFBQTthQUFBLE9BQUEwSyxhQUFNM0ssaUJBQUl3YyxpQkFBVnZjO1lBSW1COztHQUFBO1lBSm5CNkssYUFBTTNLLE1BQUlzYyxNQUFWcmMsS0FBQUMsU0FBQUM7SUFBQTtrRUFBQUQ7R0FJbUI7WUFKbkIwSyxhQUFNNUssTUFBSXNjLE1BQVZyYyxLQUFBQztJQUFBLFlBQUEsOEJBQUFELEtBQUFDOztpREFBQUE7OztPQUNFOztPQURGLElBQUFnRyxRQUFBLFdBQVVvVyxNQUFWcmMsS0FBQUMsVUFFRSxXQUZGZ0c7O09BQUE7UUFBQUMsVUFBQSxXQUFNbkcsTUFBTkMsS0FBQUM7UUFBQXFjLFFBQUEsV0FBVUQsTUFBVnJjLEtBQUFDO09BR0UsV0FIRmlHLFNBQUFvVzs7R0FJbUI7WUFKbkIzUyxlQUFNdEosY0FBSWtjO2tCQUFWdmMsS0FBQUMsU0FBQUs7S0FBQSxPQUFBb0ssYUFBTXJLLGlCQUFJa2MsaUJBQVZ2YyxLQUFBQyxTQUFBSztJQUltQjtJQUpuQjtxQkFBQU4sS0FBQUM7YUFBQSxPQUFBMEs7c0JBQU10SyxpQkFBSWtjLGlCQUFWdmMsS0FBQUM7WUFJbUI7O0dBQUE7WUFKbkIySixRQUFBcEosT0FBQWdjO0lBQUE7S0FBQSxPQUFBN1MsZUFBQW5KLFVBQUFnYztLQUFBLE9BQUFoVCxlQUFBaEosVUFBQWdjO0lBQUEsV0FBY2xTLGNBQWQ5SixVQUFBZ2M7R0FJbUI7R0FNTDs7Ozs7Ozs7SUFBQTs7O0lBQUE7Ozs7OztJQUFBOzs7Ozs7SUFBQTs7OztJQUFBLE1BQUE7SUFBQSxVQUFBO0lBQUEsVUFBQTtJQUFkLGNBQWM7SUFBZCxNQUFBO0lBQUE5USxVQUFBO0dBQWMsU0FBQUMsY0FBQXJNLEdBQUF3WjtJQUFkLFdBQUE7SUFBQSxPQUFBO2FBQUEsK0JBQUFwTixvQkFBY3BNLE9BQUF3WjtHQUlLO1lBSm5CbE4sYUFBTXBNLFdBQUl1WjtJQUFWOztPQUFBLElBQUF0VCxlQUFBLE1BQUEsV0FBTWpHLFdBQU5pRztPQUFBLE9BQUE7O09BQUEsSUFBQUMsaUJBQUEsTUFBQSxXQUFVcVQsV0FBVnJUO09BQUEsT0FBQTs7T0FBQTtRQUFBc1c7UUFBQVM7UUFBQSxPQUFBLFdBQU1qZCxXQUFOaWQ7UUFBQVIsT0FBQTtRQUFBLE9BQUEsV0FBVWxELFdBQVZpRDtPQUFBLE9BQUEsZ0NBQUFDOztHQUltQjtZQUpuQmxRLGNBQU1yTSxTQUFJc1osU0FBVmhaLEtBQUE0RjtJQUFBOztPQUFBLElBQUFILGVBQUFJLFFBQUEsK0JBQUE3RixLQUFBNEY7T0FBQSxPQUFBLFdBQU1sRyxTQUFOTSxLQUFBNkYsT0FBQUo7O09BQUE7UUFBQUM7UUFBQUksUUFBQSwrQkFBQTlGLEtBQUE0RjtPQUFBLE9BQUEsV0FBVW9ULFNBQVZoWixLQUFBOEYsT0FBQUo7O09BQUE7UUFBQXNXO1FBQUFTO1FBQUFOLFFBQUEsK0JBQUFuYyxLQUFBNEY7UUFBQThXLFFBQUEsV0FBTWhkLFNBQU5NLEtBQUFtYyxPQUFBTTtPQUFBLE9BQUEsV0FBVXpELFNBQVZoWixLQUFBMGMsT0FBQVY7O0dBSW1CO1lBSm5CdlIsZUFBTTdLLGNBQUlxWjtpQkFBVnBaO0tBQUEsVUFBVW9aLHVCQUFKclo7S0FBTiwwQixPQUFBbU0sd0JBQUFsTTtJQUltQjtJQUpuQjtxQkFBQUE7YUFBQSxPQUFBK0wsYUFBTWhNLGlCQUFJcVosaUJBQVZwWjtZQUltQjs7R0FBQTtZQUpuQm9NLGFBQU1sTSxNQUFJbVosTUFBVmxaLEtBQUFDLFNBQUFDO0lBQUE7a0VBQUFEO0dBSW1CO1lBSm5CaU0sYUFBTW5NLE1BQUltWixNQUFWbFosS0FBQUM7SUFBQSxZQUFBLDhCQUFBRCxLQUFBQzs7aURBQUFBOzs7T0FBQSxJQUFBZ0csUUFBQSxXQUFNbEcsTUFBTkMsS0FBQUMsVUFDRSxXQURGZ0c7O09BQUEsSUFBQUMsVUFBQSxXQUFVZ1QsTUFBVmxaLEtBQUFDLFVBRUUsV0FGRmlHOztPQUFBO1FBQUF5VyxVQUFBLFdBQU01YyxNQUFOQyxLQUFBQztRQUFBcWMsUUFBQSxXQUFVcEQsTUFBVmxaLEtBQUFDO09BR0UsV0FIRjBjLFNBQUFMOztHQUltQjtZQUpuQjFSLGVBQU12SyxjQUFJOFk7aUJBQVZuWixLQUFBQyxTQUFBSztLQUFBLE9BQUEyTCxhQUFNNUwsaUJBQUk4WSxpQkFBVm5aLEtBQUFDLFNBQUFLO0lBSW1CO0lBSm5CO3FCQUFBTixLQUFBQzthQUFBLE9BQUFpTTtzQkFBTTdMLGlCQUFJOFksaUJBQVZuWixLQUFBQztZQUltQjs7R0FBQTtZQUpuQjRLLFFBQUFySyxPQUFBNFk7SUFBQTtLQUFBLE1BQUF4TyxlQUFBcEssVUFBQTRZO0tBQUEsTUFBQTNPLGVBQUFqSyxVQUFBNFk7SUFBQSxXQUFjek4sY0FBZG5MLFVBQUE0WTtHQUltQjtZQVdqQndELFVBQWtCQztJLGdCQUFhQyxNQUFNOVQ7O01BZ0JsQyxJQUFhK1QsNEJBQU5DO01BQ1IsS0FEY0Q7T0FRTCxjQUFBLFdBeEJPRixTQWdCUkc7cUJBU0s7OztRQUNVQzs7UUFBTkM7UUFBTEM7T0FBb0IsV0FBcEJBLFdBQVdGLFlBQU5DOztNQVBSO09BREFFLG9CQUZLTDtPQUVaTSxNQUZZTjtPQUdMLFFBQUEsc0JBRFBNO29DQUVXLGVBSkxMLE1BRUNJOztXQUdDRTtPQUFPLGVBTFROLFVBS0VNLE9BSERGOztVQUlRRyxrQkFBTEM7TUFBYTs7ZUFBK0IsV0F0QnhDWCxTQWdCUkcsVUFNSVEsS0FBS0Q7ZUFKUkg7S0FReUU7S0FabkQsVUFBQSwrQkFkSXBVO0tBZ0JsQyxPQUFBLDRCQUZRLFdBZE82VCxlQUFhQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FBekJuQnhTO1FBQWRDO1FBQUFDO1FBQUFHO1FBQUFEO1FBQUFsQjtRQUFBRztRQUFBQzs7O1FBVWMrQjtRQUFkQztRQUFBRztRQUFBRztRQUFBRDtRQUFBeEI7UUFBQUc7UUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FlRStSOzs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQzlCSnJlO0lBNFVFdUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNVVNO0lBSEoyVjtJQUFBelU7SUFBQXZFO0lBQUFMOzs7OztJQUdJLFVBQUE7SUFBUixjQUFRO0lBQVIsTUFBQTtJQUFBaEYsUUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUFRLFNBQUFtRyxZQUFBakc7SUFBUixXQUFBO0lBQUEsT0FBQSxXQUFBLCtCQUFBRixrQkFBUUU7R0FBcUQ7WUFBN0RrRyxXQUFLaEcsV0FBTEs7SSxvQ0FBS0wsV0FBTEs7O1lBQUE4RixZQUFLakcsU0FBTE0sS0FBQTRGLEtBQUEvRjtJQUFBLE9BQUEsd0NBQUtILFVBQUxNLEtBQUE0RixLQUFBL0Y7R0FBNkQ7WUFBN0RnSixhQUFLako7a0JBQUxDO0tBQUEsV0FBS0Q7S0FBTCw0QixPQUFBK0Ysa0JBQUE5RjtJQUE2RDtJQUE3RCxvQkFBQUEsR0FBQSxPQUFBMkYsV0FBSzVGLGlCQUFMQyxHQUE2RDtHQUFBO1lBQTdEa0csV0FBS2hHLE1BQVVDLEtBQUFDLFNBQUFDO0ksK0NBQVZILE9BQVVDLEtBQUFDLFNBQUFDOztZQUFmOEYsYUFBS2pHLE1BQUxDLEtBQUFDO0lBQUEsT0FBQSx3Q0FBS0YsT0FBTEMsS0FBQUM7R0FBNkQ7WUFBN0Q2SSxhQUFLekk7a0JBQUxMLEtBQUFDLFNBQUFLO0tBQUEsT0FBQXlGLFdBQUsxRixpQkFBTEwsS0FBQUMsU0FBQUs7SUFBNkQ7SUFBN0Q7cUJBQUFOLEtBQUFDO2FBQUEsT0FBQStGLGFBQUszRixpQkFBTEwsS0FBQUM7WUFBNkQ7O0dBQUE7WUFBN0Q4SSxNQUFBdkk7SUFBQSxJQUFBLE9BQUFzSSxhQUFBdEksV0FBQSxPQUFBcUksYUFBQXJJO0lBQUEsV0FBUStFLFlBQVIvRTtHQUE2RDtZQUFyRGtkLHFCQUFIQztJLDhDQUFBQTs7WUFBR0Msb0JBQUhDO0ksOENBQUFBOztZQUFHQyxvQkFBSEM7SSw4Q0FBQUE7OztpRUFBTHhmO0lBQUF5ZjtZQUFBQyxhQUFBbGU7SUFBQSxJQUFBbWUsWUFBQSw2QkFBQW5lO0lBQUE7O2FBQUFtZTs7OzhCQUFBLE9BQUEsNkJBQUFuZTtHQUE2RDs7SUFnY2hEb2U7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQXpGO0lBQUEwRjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBL0k7SUFBQWdKO0lBQUFDO1lBQUExSSxVQXpiRzVXLEdBQUU4Vzt3QjtJQUFJLE9BQUEsb0RBQU45VyxHQUFFOFc7R0FBOEQ7WUF5Ym5FQyxNQXZiRC9XLEdBQUVpWCxPQUFNQzt3QjtJQUNoQixPQUFBO3NEQXNiU3FFLEtBdmJEdmIsR0FBRWlYLE9BQU1DO0dBQzREO1lBc2JuRXFJLEtBbmJGdmYsR0FBRThXO0lBQU8sV0FtYlBGLFVBbmJGNVcsR0FBRThXO0lBQUksd0JBQU45VztHQUF1QjtZQW1ickJ3ZixLQWxiRnhmLEdBQUU4VyxHQUFFM2I7SUFBTyxXQWtiVHliLFVBbGJGNVcsR0FBRThXO0lBQU0saUJBQVI5VyxxQkFBSTdFO0lBQUk7R0FBc0I7WUFLakNza0IsYTtZQUNBQyxnQjtZQUNBQztJOzs7R0FPSjs7SUFBQSxjQUFLO0lBQUwsTUFBQTtJQUFBamIsVUFBQTtJQUFBLE1BQUE7SUFBS0M7TUFBTCxXQUFBLCtCQUFBRDtZQTRhRkUsYUE1YUV6SjtJLHNEQUFBQTs7WUE0YUYwSixjQTVhRXZKLEtBQUE0RixLQUFBL0Y7SUFBQSxPQUFBOzZEQUFBRyxLQUFBNEYsS0FBQS9GO0dBQXNEO1lBNGF4RDRKLGFBNWFnQnpKLEtBQUFDLFNBQUFDO0k7O2FBQUFGO2FBQUFDO2FBQUFDOztZQTRhaEJ3SixhQTVhRTFKLEtBQUFDO0lBQUEsT0FBQTs2REFBQUQsS0FBQUM7R0FBc0Q7WUE0YXhEcWtCLFVBNWFFQyxPQUFBQztrQkFBVTFhLE9BQUFDO0tBQUEsT0FBQSw0QkFBQUQsT0FBQUM7SUFBRztJQUFDLE9BQUEsaUNBQWR3YSxPQUFBQztHQUFtQjtZQTRhckJ0YSxZQTVhRXVhO0lBQUEsT0FBQSw0Q0FBQUE7R0FBc0Q7WUE0YXhEcmEsWUE1YUVEO0lBQUEsT0FBQSw0Q0FBQUE7R0FBc0Q7WUEyQjVDdWEsU0FBUTVJLEtBQU0sT0FBQSxXQXlZZnVELFFBellTdkQsUUFBbUI7R0FMaEM7OztPQUtLNEk7T0FwQ05QO09BQ0FDO09BQ0FDOztROzs7WUEwQk1NLG9CO1lBQ0FDLFFBQVE5TCxHQUFJLE9BQUpBLFVBQXNCO0dBZ0J4Qzs7O29EQWpCVTZMLFNBQ0FDOzs7Ozs7SUFnQlYsY0FBSztJQUFMLE1BQUE7SUFBQXZhLFVBQUE7SUFBQSxNQUFBO0lBQUtDO01BQUwsV0FBQSwrQkFBQUQ7WUE4WUZFLGFBOVlFMUs7SSxzREFBQUE7O1lBOFlGMkssY0E5WUV4SyxLQUFBNEYsS0FBQS9GO0lBQUEsT0FBQTs2REFBQUcsS0FBQTRGLEtBQUEvRjtHQUF3RDtZQThZMUQ2SyxhQTlZa0IxSyxLQUFBQyxTQUFBQztJOzthQUFBRjthQUFBQzthQUFBQzs7WUE4WWxCeUssYUE5WUUzSyxLQUFBQztJQUFBLE9BQUE7NkRBQUFELEtBQUFDO0dBQXdEO1lBOFkxRDRrQixZQTlZRTlaLE9BQUFDO2tCQUFVOFosT0FBQUM7S0FBQSxPQUFBLDRCQUFBRCxPQUFBQztJQUFLO0lBQUMsT0FBQSxpQ0FBaEJoYSxPQUFBQztHQUFxQjtZQThZdkJHLFlBOVlFNlo7SUFBQSxPQUFBLDRDQUFBQTtHQUF3RDtZQThZMUR2WixZQTlZRXdaO0lBQUEsT0FBQSw0Q0FBQUE7R0FBd0Q7WUEyQjlDQyxTQUFRcEosS0FBTSxPQUFBLFdBcVdmdUQsUUFyV1N2RCxTQUFvQjtHQUxqQztJQUFBOztPQUtLb0o7T0F4RU5mO09BQ0FDO09BQ0FDOztROzs7SUE4RE1jO1lBQ0FDLFVBQVF0TSxHQUFJLE9BQUpBLFlBQXdCO0dBd1B6Qjs7O29EQXpQUHFNLFNBQ0FDOzs7Ozs7Ozs7SUF3UE8sVUFBQTtJQUFBLFVBQUE7SUFBbkIsY0FBbUI7SUFBbkIsTUFBQTtJQUFBMVosVUFBQTtHQUFtQixTQUFBQyxjQUFBck0sR0FBQStsQjtJQUFuQixXQUFBO0lBQUEsT0FBQTthQUFBLCtCQUFBM1o7aUJBQW1CcE0sT0FBQStsQjtHQUF3RDtZQUEzRXpaLGFBQU1wTSxXQUFLOGxCLGVBQVh6bEI7SSxvQ0FBTUwsV0FBTks7O1lBQUFrTSxjQUFNck0sU0FBSzZsQixhQUFYdmxCLEtBQUE0RixLQUFBL0Y7SUFBQSxPQUFBLHdDQUFNSCxVQUFOTSxLQUFBNEYsS0FBQS9GO0dBQTJFO1lBQTNFMkosZUFBTTVKLGNBQUtxWTtrQkFBWHBZO0tBQUEsV0FBV29ZLDRCQUFMclk7S0FBTjtNLE9BQUFtTSwwQkFBQWxNO0lBQTJFO0lBQTNFO3FCQUFBQTthQUFBLE9BQUErTCxhQUFNaE0saUJBQUtxWSxxQkFBWHBZO1lBQTJFOztHQUFBO1lBQTNFb00sYUFBTWxNLE1BQUt5bEIsVUFBZXhsQixLQUFBQyxTQUFBQztJLCtDQUFwQkgsT0FBb0JDLEtBQUFDLFNBQUFDOztZQUExQmdNLGFBQU1uTSxNQUFLeWxCLFVBQVh4bEIsS0FBQUM7SUFBQSxPQUFBLHdDQUFNRixPQUFOQyxLQUFBQztHQUEyRTtZQUEzRTBKLGVBQU10SixjQUFLK1g7a0JBQVhwWSxLQUFBQyxTQUFBSztLQUFBLE9BQUEyTDtjQUFNNUwsaUJBQUsrWCxxQkFBWHBZLEtBQUFDLFNBQUFLO0lBQTJFO0lBQTNFO3FCQUFBTixLQUFBQzthQUFBLE9BQUFpTTtzQkFBTTdMLGlCQUFLK1gscUJBQVhwWSxLQUFBQztZQUEyRTs7R0FBQTtZQUEzRTJKLFFBQUFwSixPQUFBNlg7SUFBQTtLQUFBLE9BQUExTyxlQUFBbkosVUFBQTZYO0tBQUEsT0FBQTdPLGVBQUFoSixVQUFBNlg7SUFBQSxXQUFtQjFNLGNBQW5CbkwsVUFBQTZYO0dBQTJFO1lBQTNFeE8sVUFBQW5KLE9BQUEra0IsV0FBQUMsT0FBQUM7a0JBQXVCQyxPQUFBQyxPQUFBLE9BQUEsV0FBdkJubEIsT0FBdUJrbEIsT0FBQUMsT0FBRTtJQUFDLE9BQUEsaUNBQTFCSCxPQUFBQztHQUErQjtZQUEvQnBhLFlBQU11YSxVQUFLQyxjQUFYQztJQUFBLE9BQUEsMkJBQU1GLFVBQU5FO0dBQTJFO1lBQTNFMVksWUFBTTJZLFVBQUtDLGNBQVhDO0lBQUEsT0FBQSwyQkFBTUYsVUFBTkU7R0FBMkU7Z0RBQTNFcmU7R0FLZTtJQUFBLFVBQUE7SUFBYjs7V0FBYSxnREFyVFJ1Qjs7SUFxVEwsTUFBQTtJQUFBbUUsVUFBQTtHQUFhLFNBQUFDLGNBQUE0WDtJQUFiLFdBQUE7SUFBQSxPQUFBO2FBQUEsK0JBQUE3WCxvQkFBYTZYO0dBQXlDO1lBQXREM1gsYUFBTTRYLGUsT0F1SFJoYztZQXZIRXFFLGNBQU00WCxhLE9BdUhSaGM7WUF2SEVrQixlQUFNd047a0JBQU5wWTtLQUFBLFdBQUE4TixjQUFNc0s7S0FBTjs7a0JBQUFwWTtJQUFzRDtJQUF0RDtxQkFBQUEsR0FBQSxPQUFBNk4sYUFBTXVLLHFCQUFOcFksR0FBc0Q7O0dBQUE7WUFBdERnTyxhQUFNMlgsVSxPQXVIUi9iO1lBdkhFcUUsYUFBTTBYLFUsT0F1SFI5YjtZQXZIRWtCLGVBQU13TjtrQkFBTnBZLEtBQUFDLFNBQUFLO0tBQUEsT0FBQXVOLGFBQU11SyxxQkFBTnBZLEtBQUFDLFNBQUFLO0lBQXNEO0lBQXREO3FCQUFBTixLQUFBQzthQUFBLE9BQUE2TixhQUFNc0sscUJBQU5wWSxLQUFBQztZQUFzRDs7R0FBQTtZQUF0RDRLLFFBQUF3TjtJQUFBO0tBQUEsTUFBQXpOLGVBQUF5TjtLQUFBLE1BQUE1TixlQUFBNE47SUFBQSxXQUFhNUssY0FBYjRLO0dBQXNEO1lBQXREdk4sVUFBQTJhLFdBQUFXLE9BQUFDLE9BQWlCLE9BdUhuQi9CLFVBdkhFOEIsT0FBQUM7R0FBbUI7WUFBbkJ4WixZQUFNeVosY0FBTixPQXVIRnBjLFlBdkh3RDtZQUF0RDZFLFlBQU13WCxjQUFOLE9BdUhGbmMsWUF2SHdEO0dBTXpDO0lBQUEsVUFBQTtJQUFiOztXQUFhLGdEQXZSUkU7O0lBdVJMLE1BQUE7SUFBQTRFLFVBQUE7R0FBYSxTQUFBQyxjQUFBa1c7SUFBYixVQUFBO0lBQUEsT0FBQTthQUFBLCtCQUFBblcsbUJBQWFtVztHQUF5QztZQUF0RGpXLGFBQU1rVyxlLE9BdUhSL2E7WUF2SEU4RSxjQUFNa1csYSxPQXVIUi9hO1lBdkhFd0IsZUFBTWlNO2lCQUFOcFk7S0FBQSxVQUFBd1AsY0FBTTRJO0tBQU47O2lCQUFBcFk7SUFBc0Q7SUFBdEQsb0JBQUFBLEdBQUEsT0FBQXVQLGFBQU02SSxxQkFBTnBZLEdBQXNEO0dBQUE7WUFBdEQwUCxhQUFNaVcsVSxPQXVIUjlhO1lBdkhFOEUsY0FBTWdXLFUsT0F1SFI3YTtZQXZIRXdCLGVBQU1pTTtpQkFBTnBZLEtBQUFDLFNBQUFLO0tBQUEsT0FBQWlQLGFBQU02SSxxQkFBTnBZLEtBQUFDLFNBQUFLO0lBQXNEO0lBQXREO3FCQUFBTixLQUFBQzthQUFBLE9BQUF1UCxjQUFNNEkscUJBQU5wWSxLQUFBQztZQUFzRDs7R0FBQTtZQUF0RG1NLFFBQUFpTTtJQUFBO0tBQUEsTUFBQWxNLGVBQUFrTTtLQUFBLE1BQUFyTSxlQUFBcU07SUFBQSxXQUFhbEosY0FBYmtKO0dBQXNEO1lBQXREaE0sVUFBQW9aLFdBQUFlLE9BQUFDLE9BQWlCLE9BdUhuQjVCLFlBdkhFMkIsT0FBQUM7R0FBbUI7WUFBbkJyWixZQUFNc1osY0FBTixPQXVIRnZiLFlBdkh3RDtZQUF0RCtFLFlBQU15VyxjQUFOLE9BdUhGbGIsWUF2SHdEO1lBR3BEbWIsaUI7WUFDQUMsaUI7R0FoQkE7SUFBQTs7T0FZVzFYO09BQWJDO09BQUFDO09BQUFHO09BQUFEO09BQUF2RDtPQUFBRztPQUFBQztPQUFBQztPQUFBZTtPQUFBOEM7Ozs7O0lBWkU7O09BTVd6QztPQUFiQztPQUFBQztPQUFBRztPQUFBRDtPQUFBcEQ7T0FBQUc7T0FBQUM7T0FBQUM7T0FBQStCO09BQUFrQzs7Ozs7WUFpSEErWCxVQUFVQyxhQUFZcmlCO0lBQUksT0FBQSxXQUZqQjZaLE1BRWE3WixHQUFacWlCO0dBQXFDO0dBTWpEO0lBTEVDO0lBS0Y7O1dBQUssK0NBNWFFM2Q7O0lBNGFQLE1BQUE7SUFBQStHLFVBQUE7SUFBQSxNQUFBO0lBQUt3QztNQUFMLFdBQUEsK0JBQUF4QztJQUFBeEMscUJBQUF0RSxjQUFBQztJQUFBd0UscUJBQUFyRSxjQUFBRDtJQUFBdUUsY0FBSzRFLGVBQUxoRixnQkFBQUc7SUFNQTs7V0FBSywrQ0E5WUV6RDs7SUE4WVAsTUFBQTtJQUFBdUcsVUFBQTtJQUFBLE1BQUE7SUFBS29XO01BQUwsV0FBQSwrQkFBQXBXO0lBQUF2QixxQkFBQS9FLGNBQUFDO0lBQUFpRixxQkFBQTlFLGNBQUFEO0lBQUFnRixjQUFLdVgsZUFBTDNYLGdCQUFBRzs7Ozs7Ozs7T0E5Y01sSztPQUFSQztPQUFBRztPQUFBSztPQUFBRDtPQUFBOEM7T0FBQUM7T0FBQUM7T0FBUTJVO09BQUFFO09BQUFFO09BQVJHO09BQUFEO09BSEloVjtPQUFBNUU7T0FBQUs7T0FBQWdaO09BbWNTVTtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUVUMEg7T0FDQUU7T0FIUzNIO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUF6RjtPQUFBMEY7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQS9JO09BQUFnSjtPQUFBQzs7UUFRWDFhO1FBQUFDO1FBQUFHO1FBQUFEO1FBQUttSjtRQUFMaEY7UUFBQUc7UUFBQUM7UUFBQXNXO1FBQUFwYTtRQUFBRTs7Ozs7O1FBTUFHO1FBQUFDO1FBQUFHO1FBQUFEO1FBQUt1YztRQUFMM1g7UUFBQUc7UUFBQUM7UUFBQW1WO1FBQUExWjtRQUFBTTs7Ozs7T0FkVzZQO09BQUFHO09BQUF3STtPQUFBQzs7UUFwSFF2WTtRQUFuQkM7UUFBQUc7UUFBQUc7UUFBQUQ7UUFBQXpDO1FBQUFHO1FBQUFDO1FBQUFDO1FBQUEwQjtRQUFBK0I7OztRQWVJdVo7UUFEQUQ7UUFzR081QztRQUFBM0Y7UUFBQUU7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQVc7UUFBQVQ7UUFBQUM7UUFBQVU7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQS9CO1FBQUFDO3NCO1FBQUFFO1FBQUFlO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFNO1FBQUF6RjtRQUFBK0Y7UUFBQUw7UUFBQUk7UUFBQUU7UUFBQUw7UUFBQU07UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQWpHO1FBQUFHO1FBQUF3STtRQUFBQztRQUFBMUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUU7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUc7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQS9JO1FBQUFnSjtRQUFBQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJRXRjSjhFOzs7O0lBQUxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUFLOzs7Ozs7Ozs7Ozs7Ozs7OztJQUFBO01BQUE7Ozs7Ozs7OztJQUFMLGNBQUs7SUFBTDtNQUFBOztJQUFBM3BCLFFBQUE7SUFBQSxNQUFBO0lBQUttRyxjQUFMLFdBQUEsK0JBQUFuRzs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFBQW9HO0lBQUE7S0FBQXdqQjtLQUFBQztLQUFBak47S0FBQXZXO0tBQUEsTUFBQSw2QkFBQUE7S0FBQXdXLE9BQUE7S0FBQSxPQUFBLDZCQUFBRDtLQUFBa04sU0FBQSxnQ0FBQWpOO0tBQUEsT0FBQSw2QkFBQWdOO0tBQUFFLFNBQUEsZ0NBQUFEO0tBQUEsT0FBQSw2QkFBQUY7SUFBQSxPQUFBLGdDQUFBRztHQU1nRDtZQU5oRHhqQixZQUFBM0YsS0FBQTRGO0lBQUE7S0FBQW9qQjtLQUFBQztLQUFBak47S0FBQXZXO0tBQUFJLFFBQUEsNkJBQUE3RixLQUFBNEYsS0FBQUg7S0FBQUssUUFBQSw2QkFBQTlGLEtBQUE2RixPQUFBbVc7S0FBQUcsUUFBQSw2QkFBQW5jLEtBQUE4RixPQUFBbWpCO0lBQUEsT0FBQSw2QkFBQWpwQixLQUFBbWMsT0FBQTZNO0dBTWdEO0dBTmhELElBQUFuZ0IsbUJBQUFyRCxZQUFBRztZQUFBSSxXQUFBL0YsS0FBQUMsU0FBQUM7SUFBQTtrRUFBQUQ7R0FNZ0Q7WUFOaEQrRixhQUFBaEcsS0FBQUM7SUFBQTtLQUNJbXBCLGNBQUEsNkJBREpwcEIsS0FBQUM7S0FFSW9wQixhQUFBLDZCQUZKcnBCLEtBQUFDO0tBR0lxcEIsWUFBQSw2QkFISnRwQixLQUFBQztLQUlJc3BCLGFBQUEsNkJBSkp2cEIsS0FBQUM7SUFBQSxXQUNJbXBCLGFBQ0FDLFlBQ0FDLFdBQ0FDO0dBRTRDO0dBTmhEO0lBQUF6Z0IsbUJBQUE5QyxjQUFBRDtJQUFBZ0QsWUFBS3hELGFBQUxzRCxjQUFBQztZQUFBRSxRQUFBckksT0FBQUM7SUFDZ0IsR0FBQSwrQkFEaEJELE9BQUFDLFFBQ2dCO0lBQUEsSUFBQTRvQixJQUFBLDRCQURoQjdvQixVQUFBQzthQUNnQjRvQixHQUFBLE9BQUFBO0lBQ0QsSUFBQUMsTUFBQSw0QkFGZjlvQixVQUFBQzthQUVlNm9CLEtBQUEsT0FBQUE7SUFDRCxJQUFBQyxNQUFBLDRCQUhkL29CLFVBQUFDO2lCQUdjOG9CLGtDQUhkL29CLFVBQUFDLFlBR2M4b0I7R0FGUTtZQUdsQkMsU0FBQUMsR0FBQSxPQUFBQSxLQUFRO1lBRFJDLFFBQUFELEdBQUEsT0FBQUEsS0FBTztZQURQRSxTQUFBRixHQUFBLE9BQUFBLEtBQVE7WUFEUkcsVUFBQUgsR0FBQSxPQUFBQSxLQUFTO2dCQUdUQSxHQUFBL3BCLEdBQUEsV0FBQStwQixNQUFBQSxNQUFBQSxNQUFBL3BCLEdBQVE7R0FBUjs7SUFBQW1xQjswQkFBQSxTQUFRLHNCQUFSTDtnQkFEQUMsR0FBQS9wQixHQUFBLFdBQUErcEIsTUFBQUEsTUFBQS9wQixHQUFBK3BCLE1BQU87R0FBUDs7SUFBQUs7MEJBQUEsU0FBTyxxQkFBUEo7Z0JBREFELEdBQUEvcEIsR0FBQSxXQUFBK3BCLE1BQUEvcEIsR0FBQStwQixNQUFBQSxNQUFRO0dBQVI7O0lBQUFNOzBCQUFBLFNBQVEsc0JBQVJKO2dCQURBRixHQUFBL3BCLEdBQUEsV0FBQUEsR0FBQStwQixNQUFBQSxNQUFBQSxNQUFTO0dBQVQ7O0lBQUFPOzBCQUFBLFNBQVMsdUJBQVRKO1lBRENLO0lBQUFDLGVBQUFDLGNBQUFDLGFBQUFDLGNBQUFDO0lBQUE7S0FBQSxRQUFBLFdBQUFKLGVBQ0RGLGFBRENNO0tBQUFDO0tBQUFDO0tBQUEsVUFBQSxXQUFBTCxjQUVESixZQUZDUTtLQUFBRTtLQUFBQztLQUFBLFVBQUEsV0FBQU4sYUFHRE4sV0FIQ1c7S0FBQUU7S0FBQUM7S0FBQSxVQUFBLFdBQUFQLGNBSURSLFlBSkNjO0tBQUFFO0tBQUFDO0lBQUE7cUJBQUFDO2FBQUE7Y0FBQW5CLFlBQUEsV0FBQVksZUFBQU87Y0FBQXBCLFdBQUEsV0FBQWUsY0FBQUs7Y0FBQXJCLFVBQUEsV0FBQWtCLGFBQUFHO2NBQUF2QixXQUFBLFdBQUFzQixjQUFBQzthQUFBLFdBQUFuQixXQUFBRCxVQUFBRCxTQUFBRjtZQUFDO1lBQURxQjtHQUFDO1lBQUQzTCxPQUFBMEssV0FBQUQsVUFBQUQsU0FBQUYsVUFBQSxXQUFBSSxXQUFBRCxVQUFBRCxTQUFBRjtHQUFDO1lBQURqUCxJQUFBMlAsZUFBQUMsY0FBQUMsYUFBQUM7SUFBQTtLQUFBLE1BQUEsV0FBQUEsY0FJRFI7S0FKQyxNQUFBLFdBQUFPLGFBR0ROO0tBSEMsTUFBQSxXQUFBSyxjQUVESjtJQUZDLFdBQUEsV0FBQUcsZUFDREY7R0FERTtZQUFENUwsS0FBQThMLGVBQUFDLGNBQUFDLGFBQUFDO0lBQUEsV0FBQUgsZUFDREY7SUFEQyxXQUFBRyxjQUVESjtJQUZDLFdBQUFLLGFBR0ROO0lBQ0EsT0FBQSxXQUpDTyxjQUlEUjtHQUpFO1lBQUR4TCxLQUFBZSxNQUFBOEssZUFBQUMsY0FBQUMsYUFBQUM7SUFBQSxPQUlEO2FBSkNBO2FBQUE7ZUFBQUQ7ZUFBQTtpQkFBQUQ7aUJBQUEsV0FBQUQsZUFBQTlLLE1BQ0Q0SztpQkFDQUQ7ZUFDQUQ7YUFDQUQ7R0FKRTtZQUFEbUIsU0FBQUM7SUFBQTtLQUFBLFVBQUEsV0FBQUEsV0FJRHBCO0tBSkMsVUFBQSxXQUFBb0IsV0FHRG5CO0tBSEMsVUFBQSxXQUFBbUIsV0FFRGxCO0lBRkMsV0FBQSxXQUFBa0IsV0FDRGpCO0dBREU7WUFBRHZMLFFBQUF5TCxlQUFBQyxjQUFBQyxhQUFBQztJQUFBO0tBQUEsTUFBQSxXQUFBSCxlQUNERjtLQURDLFlBQUEsV0FBQUcsY0FFREo7S0FGQyxZQUFBLFdBQUFLLGFBR0ROO0lBSEMsYUFJRCxXQUpDTyxjQUlEUjtHQUpFO1lBQURyTCxPQUFBMEwsZUFBQUMsY0FBQUMsYUFBQUM7SUFBQTtLQUFBLE1BQUEsV0FBQUgsZUFDREY7S0FEQyxhQUFBLFdBQUFHLGNBRURKO0tBRkMsYUFBQSxXQUFBSyxhQUdETjtJQUhDLG1CQUlELFdBSkNPLGNBSURSO0dBSkU7WUFBRC9LLFFBQUFvTCxlQUFBQyxjQUFBQyxhQUFBQztJQUFBO0tBQUEsVUFBQSxXQUFBQSxjQUlEUjtLQUpDLFVBQUEsV0FBQU8sYUFHRE47S0FIQyxVQUFBLFdBQUFLLGNBRURKO0lBRkMsV0FBQSxXQUFBRyxlQUNERjtHQURFO1lBQURrQjtJQUFBRCxRQUFBZixlQUFBQyxjQUFBQyxhQUFBQztJQUFBLFdBQUFILGVBQ0RGLGFBRENpQixRQUFBQTtJQUFBLFdBQUFkLGNBRURKLFlBRkNrQixRQUFBQTtJQUFBLFdBQUFiLGFBR0ROLFdBSENtQixRQUFBQTtJQUlELE9BQUEsV0FKQ1osY0FJRFIsWUFKQ29CLFFBQUFBO0dBQUM7WUFBREU7SUFBQUYsUUFBQTdMLE1BQUE4SyxlQUFBQyxjQUFBQyxhQUFBQztjQUFBWSxpQkFBQUEsaUJBQUFBO0lBQUEsT0FBQTthQUFBWjthQUFBO2VBQUFEO2VBQUE7aUJBQUFEO2lCQUFBO21CQUFBRCxlQUFBOUssTUFDRDRLLGFBRENpQixRQUFBQTtpQkFFRGxCO2lCQUZDa0I7O2VBR0RuQjtlQUhDbUI7O2FBSURwQjthQUpDb0I7OztZQUFBRztJQUFBSCxRQUFBZixlQUFBQyxjQUFBQyxhQUFBQztJQUFBO0tBQUEsTUFBQSxXQUFBSCxlQUNERixhQURDaUIsUUFBQUE7S0FBQSxZQUFBLFdBQUFkLGNBRURKLFlBRkNrQixRQUFBQTtLQUFBLFlBQUEsV0FBQWIsYUFHRE4sV0FIQ21CLFFBQUFBO0lBQUEsYUFJRCxXQUpDWixjQUlEUixZQUpDb0IsUUFBQUE7R0FBQztZQUFESTtJQUFBSixRQUFBZixlQUFBQyxjQUFBQyxhQUFBQztJQUFBO0tBQUEsTUFBQSxXQUFBSCxlQUNERixhQURDaUIsUUFBQUE7S0FBQSxhQUFBLFdBQUFkLGNBRURKLFlBRkNrQixRQUFBQTtLQUFBLGFBQUEsV0FBQWIsYUFHRE4sV0FIQ21CLFFBQUFBO0lBQUEsbUJBSUQsV0FKQ1osY0FJRFIsWUFKQ29CLFFBQUFBO0dBQUM7WUFBREs7SUFBQUwsUUFBQWYsZUFBQUMsY0FBQUMsYUFBQUM7SUFBQTtLQUFBLFVBQUEsV0FBQUEsY0FJRFIsWUFKQ29CLFFBQUFBO0tBQUEsVUFBQSxXQUFBYixhQUdETixXQUhDbUIsUUFBQUE7S0FBQSxVQUFBLFdBQUFkLGNBRURKLFlBRkNrQixRQUFBQTtJQUFBLFdBQUEsV0FBQWYsZUFDREYsYUFEQ2lCLFFBQUFBO0dBQUM7WUFBRE07SUFBQU4sUUFBQWYsZUFBQUMsY0FBQUMsYUFBQUM7SUFBQTtLQUFBLE1BQUEsV0FBQUEsY0FJRFIsWUFKQ29CLFFBQUFBO0tBQUEsTUFBQSxXQUFBYixhQUdETixXQUhDbUIsUUFBQUE7S0FBQSxNQUFBLFdBQUFkLGNBRURKLFlBRkNrQixRQUFBQTtJQUFBO1lBQUEsV0FBQWYsZUFDREYsYUFEQ2lCLFFBQUFBOzs7O0dBQUM7WUFBRE8sdUJBQUFQO0lBQUEsNkJBQUFBO0lBQUE7R0FBQztHQUFEOzs7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7WUFBTDFpQixZQUFBbEksS0FBQUM7O0tBQUEyTCxvQ0FBQTVMLEtBQUFDO0tBQUE0cUIsb0NBQUFqZixPQUFBM0w7S0FBQTZxQixvQ0FBQUQsT0FBQTVxQjt1Q0FBQTZxQixPQUFBN3FCOztHQUFBLFNBQUFrSSxLQUFBbEk7SUFBQSxJQUFBRCw2Q0FBQWtJLFlBQUFsSSxLQUFBQzs7R0FNZ0Q7R0FOaEQsU0FBQW9ELFVBQUEwbkI7SUFBQSxTQUFBQTtLQUFBLE9BQUE7NENBQUEvQyxrQkFBQStDO0lBQUE7S0FBQUMsa0JBQUFEO0tBQ0lFO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBSkpDO0tBQUFDOzs7Ozs7Ozs7bUJBQUFOO09BQUE7O1lBQUFPO2lCQUFBQTtrQkFBQUE7Ozs7WUFBQUMsMEJBQUFDO1dBQUFELG1CQUFBQTs7U0FBQUU7U0FBQUM7b0JBQUFIO3FCQUFBSTthQUFBLEtBQUFKO2NBQUEsT0FBQTtxREFBQXhELGtCQUFBK0M7Z0JBQUFTO2NBQUEsTUFBQTtpQkFBQUssUUFBQUw7YUFBQSxPQUFBSztZQU1nRDttQkFOaEREOztTQUFBQSxpQkFBQUQsaUJBQUFIO2dDQUFBQztpQ0FBQUE7a0NBQUFBO21DQUFBQTs7YUFBQUgsbUJBQUFHLGdCQUFBSDs7bUJBRUlKO1lBRkpHLHdCQUFBSSxnQkFBQUo7O1lBRUk7YUFGSlMsbUJBQUFGO2FBRUlHLGFBQUEsNEJBRkpEO1lBRUlaLHNCQUFBYTs7a0JBREFkO1dBREpJLHdCQUFBSSxnQkFBQUo7O1dBQ0k7WUFESlcsbUJBQUFKO1lBQ0lLLGFBQUEsNEJBREpEO1dBQ0lmLHVCQUFBZ0I7O2lCQUdBYjtVQUpKQyx3QkFBQUksZ0JBQUFKOztVQUlJO1dBSkphLG1CQUFBTjtXQUlJTyxhQUFBLDRCQUpKRDtVQUlJZCxzQkFBQWU7O2dCQURBaEI7U0FISkUsd0JBQUFJLGdCQUFBSjs7U0FHSTtVQUhKZSxtQkFBQVI7VUFHSVMsYUFBQSw0QkFISkQ7U0FHSWpCLHFCQUFBa0I7O29CQUhKWDs7Ozs7O0tBQUEseUNBQUExRCxrQkFBQXVEOztPQUFBRjtLQUFBLE9BQUE7O2NBQUFyRDtjQUFBcUQ7Y0FBQU47T0FBQU87S0FBQSxPQUFBOztjQUFBdEQ7Y0FBQXNEO2NBQUFQOztXQUNJRTtXQUNBQztXQUNBQzthQUNBQzs7O01BQUFrQjtNQURBQztNQURBQztNQURBQztLQURKLFdBQ0lBLGVBQ0FELGNBQ0FELGFBQ0FEOztJQUpKLE9BQUE7O2FBQUF0RTthQUFBK0M7O3dCQUNJRTs7eUJBQ0FDOzswQkFDQUM7OEJBQ0FDO0dBRTRDO1lBTmhEMW5CO0lBQUE7S0FJSWdwQjtLQURBQztLQURBQztLQURBQztLQUdBQyxVQUFBLDRCQUFBSjtLQUpKSyxnQ0FJSUQ7S0FEQUUsVUFBQSw0QkFBQUw7S0FISk0sa0NBR0lELGVBSEpEO0tBRUlHLFVBQUEsNEJBQUFOO0tBRkpPLGtDQUVJRCxlQUZKRDtLQUNJRyxVQUFBLDRCQUFBUDtLQURKUSxrQ0FDSUQsZUFESkQ7SUFBQSxXQUFBRTtHQU1nRDs7SUFNaERqcEI7SUFDQWlGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQURBakY7O09BWkFLO09BQUFHO09BQUFLO09BQUFEO09BQUtSO09BQUxzRDtPQUFBQztPQUFBQztPQUFBQztPQUlJMmdCO09BREFFO09BREFDO09BREFDOztRQURDakI7UUFJRGtCO1FBREFDO1FBREFDO1FBREFDO1FBREMzTDtRQUFBNEw7UUFBQS9LO1FBQUEzRTtRQUFBNkQ7UUFBQUs7UUFBQUQ7UUFBQU07UUFBQWtNOztPQUFMbGlCO09BQUFDO09BQUE5RTtPQWFBZ0c7OztTQWJBNUU7U0FBQUc7U0FBQUs7U0FBQUQ7U0FBS1I7U0FBTHNEO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUE5RTtTQUFBSzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ1dLOzs7OztJQUFBO0lBQUE7TUFBQTs7SUFBTCxjQUFLO0lBQUwsTUFBQTtJQUFBckYsUUFBQTtJQUFBLE1BQUE7SUFLRm1HLGNBTEUsV0FBQSwrQkFBQW5HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUtGb0c7SUFMRTtLQUFBLElBQUFDLGVBQUEsT0FBQSw2QkFBQUE7S0FBQSxPQUFBOzs7S0FBQUM7eUNBS0ZGLFlBTEVFOztHQUdrQztZQUVwQ0MsWUFMRTNGLEtBQUE0RjtJQUFBO0tBQUEsSUFBQUgsZUFBQUksUUFBQSwrQkFBQTdGLEtBQUE0RjtLQUFBLE9BQUEsNkJBQUE1RixLQUFBNkYsT0FBQUo7O0lBQUEsSUFBQUMsaUJBQUFJLFFBQUEsK0JBQUE5RixLQUFBNEY7SUFBQSxPQUFBOzBDQUtGRCxjQUxFM0YsS0FBQThGLE9BQUFKO0dBR2tDO1lBRXBDSyxXQUxFL0YsS0FBQUMsU0FBQUM7SUFBQTsrREFBQUQ7R0FHa0M7WUFFcEMrRixhQUxFaEcsS0FBQUM7SUFBQSxZQUFBLDhCQUFBRCxLQUFBQzs7S0FBQSxJQUFBZ0csUUFBQSw2QkFBQWpHLEtBQUFDO0tBQ0UsV0FERmdHOztnRUFBQWhHO0lBQUE7S0FBQWlHO09BQUEsd0NBS0ZGLGVBTEVoRyxLQUFBQztJQUVFLFdBRkZpRztHQUdrQzs7SUFFcEMrQztJQUFBQzs7S0FBQUQ7Y0FMRWxJLEtBQUFDO00sU0FBQUE7T0FDRSxJQUFBcXRCLEtBREZydEIsUUFDRTJMLFFBQUEseUJBREY1TDswQ0FDRTRMLE9BQUEwaEI7O01BQ0EsSUFBQUMsT0FGRnR0QixRQUVFNHFCLFFBQUEseUJBRkY3cUI7eUNBS0ZrSSxhQUhJMmlCLE9BQUEwQzs7O0tBR0pwbEI7Y0FMRWxJO01BQUE7T0FBQUQ7eUJBS0ZrSSxhQUxFbEksS0FBQUM7O0tBR2tDO0dBWTlCLElBQUFvSjtZQVdRaEYsV0FBV1YsR0FBSSxPQUFBLFdBWHZCMEYsYUFXbUIxRixHQUFzQjs7SUFDakNXOzs7OztjQXRCZEUsYUFBQUMsWUFBQUcsYUFBQUssY0FBQUQ7WUFxQmNYLFlBQ0FDOzs7Ozs7SUFlTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FBQSxjQUFLO0tBQUwsTUFBQTtLQUFBakcsUUFBQTtLQUFBLE1BQUE7S0FBS2tMLGdCQUFMLFdBQUEsK0JBQUFsTDtLQUFBbUw7S0FBQUM7S0FBQTNCLG1CQUFBMEIsY0FBQUM7S0FBQWQ7S0FBQWdCO0tBQUE1QixtQkFBQTRCLGNBQUFoQjtLQUFBWCxZQUFLdUIsZUFBTHpCLGNBQUFDO0tBS0l3RTtLQU5NOztRQUNMaEQ7UUFBTEM7UUFBQUM7UUFBQTNCO1FBQUFhO1FBQUFnQjtRQUFBNUI7UUFBQUM7UUFLSXVFO0tBUHNCO0tBWXZCOztLQUFBOzs7Ozs7OztLQUFBO0tBQUE7Ozs7Ozs7S0FBQTs7UUEvQ1gvSDs7S0ErQ1c7O0tBQUE7S0FBQTtLQUFBOztRQS9DWEE7O0tBK0NXO09BQUE7OzsyQ0EvQ1hBOzs7Ozs7K0JBQUFBOztLQStDTSxjQUFLO0tBQUwsTUFBQTtLQUFBNkQsVUFBQTtLQUFBLE1BQUE7S0FBS3VDO09BQUwsV0FBQSwrQkFBQXZDO2FBQUF3QztLQUFBOztRQUFBLElBQUFuRyxlQUFBLE1BL0NORCxXQStDTUM7UUFBQSxPQUFBOztRQUFBLElBQUFDLGlCQUFBLE9BQUEsNkJBQUFBO1FBQUEsT0FBQTs7UUFBQSxJQUFBK1csaUJBQUEsT0FBQSx5QkFBQUE7UUFBQSxPQUFBOztRQUFBLElBQUE4UixpQkFBQSxPQS9DTi9vQixXQStDTStvQjtRQUFBLE9BQUE7O1FBQUE7U0FBQXRGO1NBQUFqTjtTQUFBd1M7U0FBQSxPQUFBLDZCQUFBQTtTQUFBdlMsT0FBQTtTQUFBLE9BL0NOelcsV0ErQ013VztTQUFBa04sU0FBQSxnQ0FBQWpOO3lFQUFBZ047K0NBQUFDOztRQUFBO1NBQUF1RjtTQUFBQztTQUFBLE9BQUEsNkJBQUFBO1NBQUF2RixTQUFBO1NBQUEsT0FBQXZkLGFBQUE2aUI7UUFBQSxPQUFBLGdDQUFBdEY7O1FBQUE7U0FBQXdGO1NBQUFDO1NBQUFDO1NBQUEsT0FBQSw2QkFBQUE7U0FBQUMsU0FBQTtTQUFBLE9BL0NOdHBCLFdBK0NNb3BCO1NBQUFHLFNBQUEsZ0NBQUFEO1NBQUEsT0FBQWxqQixhQUFBK2lCO1FBQUEsT0FBQSxnQ0FBQUk7O1FBQUE7U0FBQUM7U0FBQUM7K0RBQUFBO1NBQUFDLFNBQUE7NkNBQUF0akIsY0FBQW9qQjsrQ0FBQUU7O1FBQUE7U0FBQUM7U0FBQUM7U0FBQSxPQUFBeGpCLGFBQUF3akI7U0FBQUMsU0FBQTtTQUFBLE9BQUEsNkJBQUFGO1FBQUEsT0FBQSxnQ0FBQUU7O0lBVTRCO2FBVjVCdGpCLGNBQUEvTDtLQUFBLElBQUE2RjtLQUFBOzs7U0FBQTtVQUFBSjtVQUFBSyxRQUFBLCtCQUFBOUYsS0FBQTZGO1NBQUEsT0EvQ05GLFlBK0NNM0YsS0FBQThGLE9BQUFMOztTQUFBO1VBQUFDO1VBQUF5VyxRQUFBLCtCQUFBbmMsS0FBQTZGO1NBQUEsT0FBQSw2QkFBQTdGLEtBQUFtYyxPQUFBelc7O1NBQUE7VUFBQStXO1VBQUFDLFFBQUEsK0JBQUExYyxLQUFBNkY7U0FBQSxPQUFBLDBCQUFBN0YsS0FBQTBjLE9BQUFEOztTQUFBO1VBQUE4UjtVQUFBZSxRQUFBLCtCQUFBdHZCLEtBQUE2RjtTQUFBLE9BL0NORixZQStDTTNGLEtBQUFzdkIsT0FBQWY7O1NBQUE7VUFBQXRGO1VBQUFqTjtVQUFBd1M7VUFBQWUsUUFBQSwrQkFBQXZ2QixLQUFBNkY7VUFBQTJwQixRQUFBLDZCQUFBeHZCLEtBQUF1dkIsT0FBQWY7VUFBQWlCLFFBL0NOOXBCLFlBK0NNM0YsS0FBQXd2QixPQUFBeFQ7U0FBQSxPQUFBOztrQkFBQWhjO2tCQUFBeXZCO2tCQUFBeEc7O1NBQUE7VUFBQXdGO1VBQUFDO1VBQUFnQixRQUFBLCtCQUFBMXZCLEtBQUE2RjtVQUFBOHBCLFFBQUEsNkJBQUEzdkIsS0FBQTB2QixPQUFBaEI7VUFBQTdvQixRQUFBOHBCO29CQUFBbEI7OztTQUFBO1VBQUFFO1VBQUFDO1VBQUFDO1VBQUFlLFNBQUEsK0JBQUE1dkIsS0FBQTZGO1VBQUFncUIsU0FBQSw2QkFBQTd2QixLQUFBNHZCLFFBQUFmO1VBQUFpQixTQS9DTm5xQixZQStDTTNGLEtBQUE2dkIsUUFBQWpCO1VBQUEvb0IsUUFBQWlxQjtvQkFBQW5COzs7U0FBQTtVQUFBSztVQUFBQztVQUFBYyxTQUFBLCtCQUFBL3ZCLEtBQUE2RjtVQUFBbXFCO1lBQUE7O2NBQUFod0I7Y0FBQSt2QjtjQUFBZDtTQUFBLE9BQUE7K0NBQUFsakI7a0JBQUEvTDtrQkFBQWd3QjtrQkFBQWhCOztTQUFBO1VBQUFHO1VBQUFDO1VBQUFhLFNBQUEsK0JBQUFqd0IsS0FBQTZGO1VBQUFxcUIsU0FBQW5rQixjQUFBL0wsS0FBQWl3QixRQUFBYjtTQUFBLE9BQUEsNkJBQUFwdkIsS0FBQWt3QixRQUFBZjs7SUFVNEI7SUFWNUIsSUFBQTNsQixxQkFBQW9DLGNBQUFHO2FBQUFwQixhQUFBM0ssS0FBQUMsU0FBQUM7S0FBQTttRUFBQUQ7SUFVNEI7YUFWNUJnTSxhQUFBak0sS0FBQUM7S0FBQSxZQUFBLDhCQUFBRCxLQUFBQzs7a0RBQUFBOzs7UUFBQSxJQUFBZ0csUUEvQ05ELGFBK0NNaEcsS0FBQUMsVUFDRSxXQURGZ0c7O1FBQUEsSUFBQUMsVUFBQSw2QkFBQWxHLEtBQUFDO1FBRUUsV0FGRmlHOztRQUFBLElBQUF5VyxVQUFBLHlCQUFBM2MsS0FBQUM7UUFHRSxXQUhGMGM7O1FBQUEsSUFBQXdULFVBL0NObnFCLGFBK0NNaEcsS0FBQUMsVUFJRSxXQUpGa3dCOztRQUFBO1NBQUFDLFVBQUEsNkJBQUFwd0IsS0FBQUM7U0FBQXFjLFFBL0NOdFcsYUErQ01oRyxLQUFBQztTQUFBb3dCO1dBQUE7O2FBQUFyd0I7YUFBQUM7UUFLRSxXQUxGbXdCLFNBQUE5VCxPQUFBK1Q7O1FBQUE7U0FBQUMsVUFBQSw2QkFBQXR3QixLQUFBQztTQUFBc3dCLFVBQUF0a0IsYUFBQWpNLEtBQUFDO1FBTUUsV0FORnF3QixTQUFBQzs7UUFBQTtTQUFBQyxVQUFBLDZCQUFBeHdCLEtBQUFDO1NBQUF3d0IsVUEvQ056cUIsYUErQ01oRyxLQUFBQztTQUFBeXdCLFVBQUF6a0IsYUFBQWpNLEtBQUFDO1FBT0UsV0FQRnV3QixTQUFBQyxTQUFBQzs7UUFBQTtTQUFBQztXQUFBOzZEQUFBM3dCLEtBQUFDO1NBQUEyd0I7V0FBQTswQ0FBQTNrQixlQUFBak0sS0FBQUM7UUFRRSxXQVJGMHdCLFNBQUFDOztRQUFBO1NBQUFDLFVBQUE1a0IsYUFBQWpNLEtBQUFDO1NBQUE2d0IsVUFBQSw2QkFBQTl3QixLQUFBQztRQVNFLFdBVEY0d0IsU0FBQUM7O0lBVTRCO0lBVjVCO0tBQUFubkIscUJBQUFzQyxjQUFBdEI7S0FBQWYsY0FBSytCLGVBQUxuQyxnQkFBQUc7YUFBQW9GO0tBQUE7O1FBQ0UsSUFBQWdpQixxQkFBQUMsV0FBQSxzQkFBQUQ7UUFBQSx3QkFBQUM7O1FBQ0E7U0FBQUM7U0FBQUMsV0FBQSw0QkFBQUQ7UUFBQSx3QkFBQUM7O1FBQ0EsSUFBQUMscUJBQUFDLFdBQUEsV0F4Q0ZobkIsYUF3Q0UrbUI7UUFBQSx3QkFBQUM7O1FBQ0EsSUFBQUMscUJBQUFDLFdBQUEsc0JBQUFEO1FBQUEsd0JBQUFDOztRQUNBO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDLFdBQUEsNEJBQUFEO1NBQUFFLFdBQUEsc0JBQUFIO1NBQUFJO1dBQUEsd0RBQUFMO1FBQUEsd0JBQUFHLGNBQUFDLGNBQUFDOztRQUNBO1NBQUFDO1NBQUFDO1NBQUFDLFdBQUEsNEJBQUFEO1NBQUFFLFdBTkZqakIsWUFNRThpQjtRQUFBLHdCQUFBRSxjQUFBQzs7UUFDQTtTQUFBQztTQUFBQztTQUFBNVg7U0FBQUcsV0FBQSw0QkFBQUg7U0FBQTZYLFdBQUEsc0JBQUFEO1NBQUFFLFdBUEZyakIsWUFPRWtqQjtRQUFBLHdCQUFBeFgsY0FBQTBYLGNBQUFDOztRQUNBO1NBQUFDO1NBQUFDO1NBQUFDLFdBQUEsNkNBQUFEO1NBQUFFLFdBQUEsNEJBUkZ6akIsYUFRRXNqQjtRQUFBLHdCQUFBRSxjQUFBQzs7UUFDQTtTQUFBQztTQUFBQztTQUFBQyxXQVRGNWpCLFlBU0UyakI7U0FBQUUsV0FBQSw0QkFBQUg7UUFBQSx3QkFBQUUsY0FBQUM7O0lBQzBCO0lBWGxCO0tBQUE7O1FBQ0xqbkI7UUFBTEM7UUFBQUc7UUFBQXZDO1FBQUFtQjtRQUFBc0I7UUFBQXRDO1FBQUFDO1FBQUFtRjtLQWZZOztLQWVQdEI7S0FBTEM7S0FBQUM7S0FBQWxEO0tBQUF5QjtLQUFBMkI7S0FBQWpEO0tBQUFDO0tBQUFxRjtLQWdCQTJpQjtLQUNBQztLQWpDaUI7OztRQWdCWnJsQjtRQUFMQztRQUFBQztRQUFBbEQ7UUFBQXlCO1FBQUEyQjtRQUFBakQ7UUFBQUM7UUFBQXFGO1FBZ0JBMmlCO1FBQ0FDO0tBTUEzbkI7S0FBQTRuQjtLQUFBbHBCO0tBQUFHO0tBQUF3SDtJQUFBLFNBQUF2SCxPQUFBL0UsR0FBQSxPQUFBLFdBQUFzTSxNQUFBdE0sR0FBZ0Q7SUFEdkM7S0FBQSxRQUNUaUcsYUFBQTRuQixhQUFBbHBCLFdBQUFHLGVBQUFDO0tBQUFzQjtLQUFBeW5CO0tBQUFsb0I7S0FBQUc7S0FBQUM7OztLQVlROUY7S0FDQUM7Ozs7Ozs7YUFEQUQsWUFDQUM7Ozs7Ozs7OztLQWZBOzs7UUFFUmtHO1FBQUF5bkI7UUFBQWxvQjtRQUFBRztRQUFBQzs7Ozs7Ozs7OztLQStCSW1CO0tBSk00bUI7S0FDQUM7Ozs7YUFEQUQsYUFDQUM7OztLQVZELG9DQWFMN21COzs7S0FBQTRCOzs7Ozs7O2VBckdWMUksYUFBQUMsWUFBQUcsYUFBQUssY0FBQUQ7Ozs7Ozs7Ozs7S0F1RmM7Ozs7O1FBY0prSTs7Ozs7Ozs7OztLQWxDTTs7S0FvRGhCLGNBQUs7S0FBTCxNQUFBO0tBQUE1RCxVQUFBO0tBQUEsTUFBQTtLQUFLNGM7T0FBTCxXQUFBLCtCQUFBNWM7S0FBQThvQjtLQUFBQztLQUFBOWpCLHFCQUFBNmpCLGNBQUFDO0tBQUFwZ0I7S0FBQUM7S0FBQXhELHFCQUFBd0QsZUFBQUQ7S0FBQXRELGNBQUt1WCxlQUFMM1gsZ0JBQUFHO0lBM0ZtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBMkY5QndYO1lBQUxrTTtZQUFBQztZQUFBOWpCO1lBQUEwRDtZQUFBQztZQUFBeEQ7WUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFLcEY7SUFBTEM7SUFBQUM7SUFBQTNCO0lBQUFhO0lBQUFnQjtJQUFBNUI7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FBQXdCO09BQUFDO09BQUFFO09BQUFoQjtPQUFLWTtPQUFMekI7T0FBQUM7T0FBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDMUlFc3FCLFVBQVdDLFFBQVFDLE1BQUtDLFNBQVFsMEIsR0FBRXNGO0lBQ3BDLE9BQU07O2FBQUEsdUJBRGUydUIsT0FBUkQsUUFBYUUsU0FBUWwwQixHQUFFc0Y7R0FDWTtZQUc5QzZ1QixVQUFXSCxRQUFPQyxNQUFLQyxTQUFRbDBCLEdBQUVzRjtJQUNuQyxPQUFNOzthQUFBLHVCQURjMnVCLE9BQVBELFFBQVlFLFNBQVFsMEIsR0FBRXNGO0dBQ2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUw5Q3l1QjtPQUlBSTs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ0pJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFVBQUE7SUFBUixjQUFRO0lBQVIsTUFBQTtJQUFBcjBCLFFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FBUSxTQUFBbUcsWUFBQWpHO0lBQVIsV0FBQTtJQUFBLE9BQUEsV0FBQSwrQkFBQUYsa0JBQVFFO0dBQThDO1lBQXREa0csV0FBS2hHLFdBQUxLO0ksa0NBQUtMLDJCQUFMSzs7WUFBQThGLFlBQUtqRyxTQUFMTSxLQUFBNEYsS0FBQS9GO0lBQUEsT0FBQTt3Q0FBS0gsMEJBQUxNLEtBQUE0RixLQUFBL0Y7R0FBc0Q7WUFBdERnSixhQUFLako7aUJBQUxDO0tBQUEsVUFBS0Q7S0FBTCwyQixPQUFBK0YsaUJBQUE5RjtJQUFzRDtJQUF0RCxvQkFBQUEsR0FBQSxPQUFBMkYsV0FBSzVGLGlCQUFMQyxHQUFzRDtHQUFBO1lBQXREa0csV0FBS2hHLE1BQXFCQyxLQUFBQyxTQUFBQztJO3dDQUFyQkg7YUFBcUJDO2FBQUFDO2FBQUFDOztZQUExQjhGLGFBQUtqRyxNQUFMQyxLQUFBQztJQUFBLE9BQUE7d0NBQUtGLHVCQUFMQyxLQUFBQztHQUFzRDtZQUF0RDZJLGFBQUt6STtpQkFBTEwsS0FBQUMsU0FBQUs7S0FBQSxPQUFBeUYsV0FBSzFGLGlCQUFMTCxLQUFBQyxTQUFBSztJQUFzRDtJQUF0RDtxQkFBQU4sS0FBQUM7YUFBQSxPQUFBK0YsYUFBSzNGLGlCQUFMTCxLQUFBQztZQUFzRDs7R0FBQTtZQUF0RDhJLE1BQUF2STtJQUFBLElBQUEsTUFBQXNJLGFBQUF0SSxXQUFBLE1BQUFxSSxhQUFBckk7SUFBQSxXQUFRK0UsWUFBUi9FO0dBQXNEOzs7OztZQVE5Q2t6QixPQUFPaHZCLEdBQUksT0FBQSw4QkFBSkEsR0FBMEI7R0FIckIscUNBR1pndkI7WUFHRkMsSUFBSXZzQixHQUFJLE9BQU8sbUJBQUEsV0FBWEEsT0FBaUI7WUFDckJ3c0IsU0FBU3R2QixHQUFJLE9BQUpBLEVBQUs7WUFDZHV2QixlQUFhLFNBQUk7O0lBQ2pCQzs7O1lBVUVDLFNBQU9ydkIsR0FBSSxPQUFKQSxFQUFLO1lBR2RzdkIsTUFBSTVzQixHQUFJLE9BQU8sbUJBQUEsV0FBWEEsT0FBaUI7WUFDckI2c0IsaUJBQWEsU0FBSTtPQUNqQkM7WUFDQUMsV0FBUzd2QixHQUFJLE9BQUpBLEVBQUs7R0FLUjs7Ozs7O0lBQUEsVUFBQTtJQUFSLGNBQVE7SUFBUixNQUFBO0lBQUE4RSxVQUFBO0dBQVEsU0FBQUMsY0FBQS9KO0lBQVIsVUFBQTtJQUFBLE9BQUEsV0FBQSwrQkFBQThKLG1CQUFROUo7R0FDMEI7WUFEbENnSyxhQUFLOUosV0FBTEs7STtvQ0FBS0wsaUNBQUxLOztZQUFBMEosY0FBSzdKLFNBQUxNLEtBQUE0RixLQUFBL0Y7SUFBQSxPQUFBOytDQUFLSDthQUFMTTthQUFBNEY7YUFBQS9GO0dBQ2tDO1lBRGxDMkosZUFBSzVKO2lCQUFMQztLQUFBLFVBQUtEO0tBQUwsMEIsT0FBQTJKLG1CQUFBMUo7SUFDa0M7SUFEbEMsb0JBQUFBLEdBQUEsT0FBQXlKLGFBQUsxSixpQkFBTEMsR0FDa0M7R0FBQTtZQURsQzRKLGFBQUsxSixNQUErQkMsS0FBQUMsU0FBQUM7STsrQ0FBL0JIO2FBQStCQzthQUFBQzthQUFBQzs7WUFBcEN3SixhQUFLM0osTUFBTEMsS0FBQUM7SUFBQSxPQUFBOytDQUFLRjthQUFMQzthQUFBQztHQUNrQztZQURsQzBKLGVBQUt0SjtpQkFBTEwsS0FBQUMsU0FBQUs7S0FBQSxPQUFBbUosYUFBS3BKLGlCQUFMTCxLQUFBQyxTQUFBSztJQUNrQztJQURsQztxQkFBQU4sS0FBQUM7YUFBQSxPQUFBeUosYUFBS3JKLGlCQUFMTCxLQUFBQztZQUNrQzs7R0FBQTtZQURsQzJKLFFBQUFwSjtJQUFBLElBQUEsTUFBQW1KLGVBQUFuSixXQUFBLE1BQUFnSixlQUFBaEo7SUFBQSxXQUFRNkksY0FBUjdJO0dBQ2tDO1lBRGxDcUosVUFBQW5KLE9BQUFDLE9BQUFDO2lCQUFpQjRZLE9BQUFDO0tBQUEsT0FBQSxpQ0FBQUQsT0FBQUM7SUFBaUI7aUJBQXJCSCxPQUFBQyxPQUFBLE9BQUEsV0FBYjdZLE9BQWE0WSxPQUFBQyxPQUFFO0lBQXFCLE9BQUEsNENBQXBDNVksT0FBQUM7R0FBc0Q7WUFBdERzSixZQUFLd1AsVUFBTCtLO0lBQUEsT0FBQTtxQ0FBSy9LLGlDQUFMK0s7R0FDa0M7WUFEbENyYSxZQUFLZ3FCLFVBQUxDO0lBQUEsT0FBQTtxQ0FBS0QsaUNBQUxDO0dBQ2tDO1lBRTlCM0ksTUFBSXhtQixHQUFHa0M7SUFBSSxrQkFBQTtJQUFpQyxPQUFBLG1DQUF4Q2xDLEdBQUdrQztHQUEwQztHQUk3Qzs7Ozs7O0lBQUEsVUFBQTtJQUFSLGNBQVE7SUFBUixNQUFBO0lBQUFpRCxVQUFBO0dBQVEsU0FBQUMsY0FBQWhMO0lBQVIsVUFBQTtJQUFBLE9BQUEsV0FBQSwrQkFBQStLLG1CQUFRL0s7R0FDMEI7WUFEbENpTCxhQUFLL0ssV0FBTEs7STtvQ0FBS0wsaUNBQUxLOztZQUFBMkssY0FBSzlLLFNBQUxNLEtBQUE0RixLQUFBL0Y7SUFBQSxPQUFBOytDQUFLSDthQUFMTTthQUFBNEY7YUFBQS9GO0dBQ2tDO1lBRGxDNEssZUFBSzdLO2lCQUFMQztLQUFBLFVBQUtEO0tBQUwsMEIsT0FBQTRLLG1CQUFBM0s7SUFDa0M7SUFEbEMsb0JBQUFBLEdBQUEsT0FBQTBLLGFBQUszSyxpQkFBTEMsR0FDa0M7R0FBQTtZQURsQzZLLGFBQUszSyxNQUErQkMsS0FBQUMsU0FBQUM7STsrQ0FBL0JIO2FBQStCQzthQUFBQzthQUFBQzs7WUFBcEN5SyxhQUFLNUssTUFBTEMsS0FBQUM7SUFBQSxPQUFBOytDQUFLRjthQUFMQzthQUFBQztHQUNrQztZQURsQzJLLGVBQUt2SztpQkFBTEwsS0FBQUMsU0FBQUs7S0FBQSxPQUFBb0ssYUFBS3JLLGlCQUFMTCxLQUFBQyxTQUFBSztJQUNrQztJQURsQztxQkFBQU4sS0FBQUM7YUFBQSxPQUFBMEssYUFBS3RLLGlCQUFMTCxLQUFBQztZQUNrQzs7R0FBQTtZQURsQzRLLFFBQUFySztJQUFBLElBQUEsTUFBQW9LLGVBQUFwSyxXQUFBLE1BQUFpSyxlQUFBaks7SUFBQSxXQUFROEosY0FBUjlKO0dBQ2tDO1lBRGxDc0ssVUFBQXBLLE9BQUE0ekIsT0FBQUM7aUJBQWlCQyxPQUFBQztLQUFBLE9BQUEsa0NBQUFELE9BQUFDO0lBQWlCO2lCQUFyQkMsT0FBQUMsT0FBQSxPQUFBLFdBQWJqMEIsT0FBYWcwQixPQUFBQyxPQUFFO0lBQXFCLE9BQUEsNENBQXBDTCxPQUFBQztHQUFzRDtZQUF0RHBwQixZQUFLeXBCLFVBQUxDO0lBQUEsT0FBQTtxQ0FBS0QsaUNBQUxDO0dBQ2tDO1lBRGxDcHBCLFlBQUtxcEIsVUFBTEM7SUFBQSxPQUFBO3FDQUFLRCxpQ0FBTEM7R0FDa0M7WUFFOUJDLE1BQUk5dkIsR0FBR2tDO0lBQUksa0JBQUE7SUFBaUMsT0FBQSxtQ0FBeENsQyxHQUFHa0M7R0FBMEM7Ozs7Ozs7O09BN0NqRDdCO09BQVJDO09BQUFHO09BQUFLO09BQUFEO09BQUE4QztPQUFBQztPQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OEJBd0JRZ3JCO1FBR0ZDO1FBQ0FDO1FBRUFFO1FBREFEOzBCQWxCQVAsS0FFQUUsU0FEQUQsVUFFQUU7OztTQXFCTXpxQjtTQUFSQztTQUFBQztTQUFBRztTQUFBRDtTQUFBRDtTQUFBRztTQUFBQztTQUFBQztTQUFBSztTQUFBRTtTQUdJc2hCOztTQUlJcGhCO1NBQVJDO1NBQUFDO1NBQUFHO1NBQUFEO1NBQUFEO1NBQUFHO1NBQUFDO1NBQUFDO1NBQUFLO1NBQUFNO1NBR0l1cEI7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0lDMlNBQztJQVNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBM1ZOLFNBMElJQyw4QkExSUVDLGVBQUlDOztrQkFFTkMsVUFBQUM7Szs7OztlQUZNRjtlQUVOQztlQUFBQzs7Ozs7a0JBREFDLFVBQUFDO0s7Ozs7ZUFERUw7ZUFDRkk7ZUFBQUM7Ozs7Ozs7WUFpRUFDLDZCQWxFRUMsY0FBSUM7a0JBQ1JDLE9BQUFDLFVBQUFDO0ssU0FBQUY7O09BQ1F4QixRQURSd0I7T0FBQUcsbUNBQUFEO09BQUFFOzs7V0FEUUw7V0FFQXZCO1dBRFJ5QjtXQUFBRTthQUFBQzs7O01BQVE5ckIsUUFBUjByQjtNQUFBSyxtQ0FBQUg7TUFBQUk7OztVQURJUjtVQUNJeHJCO1VBQVIyckI7VUFBQUk7WUFBQUM7Ozs7WUFvS0VDLDZCQXJLRXJZLGNBQUlzWTs7Szs7T0FFQUM7O3VCQUFBQSxPLGVBQUFBO3VEQUZBRCxjQUVBQzs7OztTQURBQzttQkFBQUEsTyxlQUFBQTs7c0RBREp4WSxjQUNJd1k7Ozs7OztHQUtWLFNBcUlJQztJQXJJRUMsZUFBSUMsZUFBSUM7O2tCQUdWQyxVQUFBQztLOzs7O2VBSFVGO2VBR1ZDO2VBQUFDOzs7OztrQkFEQUMsVUFBQUM7Szs7OztlQUZNTDtlQUVOSTtlQUFBQzs7Ozs7a0JBREFDLFVBQUFDO0s7Ozs7ZUFERVI7ZUFDRk87ZUFBQUM7Ozs7Ozs7WUE0REFDO0lBN0RFQyxjQUFJQyxjQUFJQztrQkFDWkMsT0FBQUMsVUFBQUM7SyxPQUFBRjs7O1NBQVFHLFFBQVJIO1NBQUFJLG1DQUFBRjtTQUFBRzs7O2FBRElSO2FBQ0lNO2FBQVJGO2FBQUFHO2VBQUFDOzs7U0FDUUMsUUFEUk47U0FBQU8sbUNBQUFMO1NBQUFNOzs7YUFEUVY7YUFFQVE7YUFEUkw7YUFBQU07ZUFBQUM7OztTQUVRQyxRQUZSVDtTQUFBVSxtQ0FBQVI7U0FBQVM7OzthQURZWjthQUdKVTthQUZSUjthQUFBUztlQUFBQzs7Ozs7WUErSkVDO0lBaEtFQyxjQUFJQyxjQUFJQzs7Szs7O1NBQ0pDOzt5QkFBQUEsTyxlQUFBQTt5REFESkgsY0FDSUc7Ozs7O1NBQ0F2RDs7eUJBQUFBLE8sZUFBQUE7eURBRkFxRCxjQUVBckQ7Ozs7O1NBQ0F3RDs7eUJBQUFBLE8sZUFBQUE7eURBSElGLGNBR0pFOzs7Ozs7O0dBSVYsU0ErSElDO0lBL0hFQyxlQUFJQyxlQUFJQyxlQUFJQzs7a0JBSWRDLFVBQUFDO0s7Ozs7ZUFKY0Y7ZUFJZEM7ZUFBQUM7Ozs7O2tCQURBQyxVQUFBQztLOzs7O2VBSFVMO2VBR1ZJO2VBQUFDOzs7OztrQkFEQUMsVUFBQUM7Szs7OztlQUZNUjtlQUVOTztlQUFBQzs7Ozs7a0JBREFDLFVBQUFDO0s7Ozs7ZUFERVg7ZUFDRlU7ZUFBQUM7Ozs7Ozs7WUFzREFDO0lBdkRFQyxjQUFJQyxjQUFJQyxjQUFJQztrQkFDaEJDLE9BQUFDLFVBQUFDO0ssT0FBQUY7OztTQUFRRyxRQUFSSDtTQUFBSSxtQ0FBQUY7U0FBQUc7OzthQURJVDthQUNJTzthQUFSRjthQUFBRztlQUFBQzs7O1NBQ1FDLFFBRFJOO1NBQUFPLG1DQUFBTDtTQUFBTTs7O2FBRFFYO2FBRUFTO2FBRFJMO2FBQUFNO2VBQUFDOzs7U0FFUUMsUUFGUlQ7U0FBQVUsbUNBQUFSO1NBQUFTOzs7YUFEWWI7YUFHSlc7YUFGUlI7YUFBQVM7ZUFBQUM7OztTQUdRQyxRQUhSWjtTQUFBYSxtQ0FBQVg7U0FBQVk7OzthQURnQmY7YUFJUmE7YUFIUlg7YUFBQVk7ZUFBQUM7Ozs7O1lBeUpFQztJQTFKRUMsY0FBSUMsY0FBSUMsY0FBSUM7O0s7OztTQUNSQzs7eUJBQUFBLE8sZUFBQUE7eURBREpKLGNBQ0lJOzs7OztTQUNBQzs7eUJBQUFBLE8sZUFBQUE7eURBRkFKLGNBRUFJOzs7OztTQUNBQzs7eUJBQUFBLE8sZUFBQUE7eURBSElKLGNBR0pJOzs7OztTQUNBQzs7eUJBQUFBLE8sZUFBQUE7eURBSlFKLGNBSVJJOzs7Ozs7O0dBSVYsU0F3SElDO0lBeEhFQyxlQUFJQyxlQUFJQyxlQUFJQyxlQUFJQzs7a0JBS2xCQyxVQUFBQztLOzs7O2VBTGtCRjtlQUtsQkM7ZUFBQUM7Ozs7O2tCQURBQyxVQUFBQztLOzs7O2VBSmNMO2VBSWRJO2VBQUFDOzs7OztrQkFEQUMsVUFBQUM7Szs7OztlQUhVUjtlQUdWTztlQUFBQzs7Ozs7a0JBREFDLFVBQUFDO0s7Ozs7ZUFGTVg7ZUFFTlU7ZUFBQUM7Ozs7O2tCQURBQyxVQUFBQztLOzs7O2VBREVkO2VBQ0ZhO2VBQUFDOzs7Ozs7O1lBK0NBQztJQWhERUMsY0FBSUMsY0FBSUMsY0FBSUMsY0FBSUM7a0JBQ3BCQyxPQUFBQyxVQUFBQztLLE9BQUFGOzs7U0FBUUcsUUFBUkg7U0FBQUksbUNBQUFGO1NBQUFHOzs7YUFESVY7YUFDSVE7YUFBUkY7YUFBQUc7ZUFBQUM7OztTQUNRQyxRQURSTjtTQUFBTyxtQ0FBQUw7U0FBQU07OzthQURRWjthQUVBVTthQURSTDthQUFBTTtlQUFBQzs7O1NBRVFyc0IsUUFGUjZyQjtTQUFBUyxtQ0FBQVA7U0FBQVE7OzthQURZYjthQUdKMXJCO2FBRlI4ckI7YUFBQVE7ZUFBQUM7OztTQUdRdHNCLFFBSFI0ckI7U0FBQVcsbUNBQUFUO1NBQUFVOzs7YUFEZ0JkO2FBSVIxckI7YUFIUjZyQjthQUFBVTtlQUFBQzs7O1NBSVFDLFFBSlJiO1NBQUFjLG1DQUFBWjtTQUFBYTs7O2FBRG9CaEI7YUFLWmM7YUFKUlo7YUFBQWE7ZUFBQUM7Ozs7O1lBa0pFQztJQW5KRUMsY0FBSUMsY0FBSUMsY0FBSUMsY0FBSUM7O0s7OztTQUNaQzs7eUJBQUFBLE8sZUFBQUE7eURBREpMLGNBQ0lLOzs7OztTQUNBQzs7eUJBQUFBLE8sZUFBQUE7eURBRkFMLGNBRUFLOzs7OztTQUNBQzs7eUJBQUFBLE8sZUFBQUE7eURBSElMLGNBR0pLOzs7OztTQUNBQzs7eUJBQUFBLE8sZUFBQUE7eURBSlFMLGNBSVJLOzs7OztTQUNBQzs7eUJBQUFBLE8sZUFBQUE7eURBTFlMLGNBS1pLOzs7Ozs7O0dBSVYsU0FnSElDO0lBaEhFQztJQUFJQztJQUFJQztJQUFJQztJQUFJQztJQUFJQzs7a0JBTXRCQyxVQUFBQztLOzs7O2VBTnNCRjtlQU10QkM7ZUFBQUM7Ozs7O2tCQURBQyxVQUFBQztLOzs7O2VBTGtCTDtlQUtsQkk7ZUFBQUM7Ozs7O2tCQURBQyxVQUFBQztLOzs7O2VBSmNSO2VBSWRPO2VBQUFDOzs7OztrQkFEQUMsVUFBQUM7Szs7OztlQUhVWDtlQUdWVTtlQUFBQzs7Ozs7a0JBREFDLFVBQUFDO0s7Ozs7ZUFGTWQ7ZUFFTmE7ZUFBQUM7Ozs7O2tCQURBQyxVQUFBQztLOzs7O2VBREVqQjtlQUNGZ0I7ZUFBQUM7Ozs7Ozs7WUF1Q0FDO0lBeENFQztJQUFJQztJQUFJQztJQUFJQztJQUFJQztJQUFJQztrQkFDeEJDLE9BQUFDLFVBQUFDO0ssT0FBQUY7OztTQUFRRyxRQUFSSDtTQUFBSSxtQ0FBQUY7U0FBQUc7OzthQURJWDthQUNJUzthQUFSRjthQUFBRztlQUFBQzs7O1NBQ1FDLFFBRFJOO1NBQUFPLG1DQUFBTDtTQUFBTTs7O2FBRFFiO2FBRUFXO2FBRFJMO2FBQUFNO2VBQUFDOzs7U0FFUUMsUUFGUlQ7U0FBQVUsbUNBQUFSO1NBQUFTOzs7YUFEWWY7YUFHSmE7YUFGUlI7YUFBQVM7ZUFBQUM7OztTQUdRQyxRQUhSWjtTQUFBYSxtQ0FBQVg7U0FBQVk7OzthQURnQmpCO2FBSVJlO2FBSFJYO2FBQUFZO2VBQUFDOzs7U0FJUUMsUUFKUmY7U0FBQWdCLG1DQUFBZDtTQUFBZTs7O2FBRG9CbkI7YUFLWmlCO2FBSlJkO2FBQUFlO2VBQUFDOzs7U0FLUUMsUUFMUmxCO1NBQUFtQixvQ0FBQWpCO1NBQUFrQjs7O2FBRHdCckI7YUFNaEJtQjthQUxSakI7YUFBQWtCO2VBQUFDOzs7OztZQTBJRUM7SUEzSUVDO0lBQUlDO0lBQUlDO0lBQUlDO0lBQUlDO0lBQUlDOztLOzs7U0FDaEJDOzt5QkFBQUEsTyxlQUFBQTt5REFESk4sY0FDSU07Ozs7O1NBQ0FDOzt5QkFBQUEsTyxlQUFBQTt5REFGQU4sY0FFQU07Ozs7O1NBQ0FDOzt5QkFBQUEsTyxlQUFBQTt5REFISU4sY0FHSk07Ozs7O1NBQ0FDOzt5QkFBQUEsTyxlQUFBQTt5REFKUU4sY0FJUk07Ozs7O1NBQ0FDOzt5QkFBQUEsTyxlQUFBQTt5REFMWU4sY0FLWk07Ozs7O1NBQ0FDOzt5QkFBQUEsTyxlQUFBQTt5REFOZ0JOLGNBTWhCTTs7Ozs7OztHQUlWLFNBdUdJQyw0QkF2R0VDLGVBQUlDO2tCQUFhQyxVQUFBQzs7OzswQ0FBYkYsZUFBYUMsVUFBQUM7Ozs7ZUFBakJIO2VBQWlCRTtlQUFBQzs7Ozs7WUErQm5CQywyQkEvQkVDLGNBQUlDO3lCQUFhQyxVQUFBQzs7TUFBS0M7TUFBTEM7TUFBQUM7OztVQUFqQk47VUFBaUJLO1VBQUFIO1VBQUFDO01BQUFJOzs7VUFBYk47VUFBa0JHO1VBQUxGO1VBQUFJO1lBQUFDOzs7O1lBa0luQkMsMkJBbElFQyxjQUFJQzs7U0FBa0JDLGtCQUFMQzttQkFBS0QsTyxXQUFMQyxPQUFLRDs7c0RBQWxCRCxjQUFrQkM7O21CQUFMQyxPLFdBQUFBLE9BQUtEOztzREFBdEJGLGNBQWlCRzs7Ozs7O0dBQ3ZCLFNBdUdJQztJQXZHRUMsZUFBSUMsZUFBSUM7a0JBQWFDLFVBQUFDOzs7OzBDQUFiRixlQUFhQyxVQUFBQzs7OzBDQUFqQkgsZUFBaUJFLFVBQUFDOzs7O2VBQXJCSjtlQUFxQkc7ZUFBQUM7Ozs7OztZQStCdkJDO0lBL0JFQyxjQUFJQyxjQUFJQzt5QkFBYUMsVUFBQUM7O01BQVVDO01BQUxDO01BQUxDO01BQUFDOzs7VUFBckJSO1VBQXFCTztVQUFBSjtVQUFBQztNQUFBSzs7O1VBQWpCUjtVQUFzQks7VUFBTEg7VUFBQUs7TUFBQUU7OztVQUFiUjtVQUF1Qkc7VUFBVkY7VUFBQU07WUFBQUM7Ozs7WUFrSXZCQztJQWxJRUMsY0FBSUMsY0FBSUM7O1NBQXVCQyxrQkFBTEMsa0JBQUxDO21CQUFVRixPLFdBQVZFLE9BQUtELE9BQUtEOztzREFBdkJELGNBQXVCQzs7bUJBQUxDLE8sV0FBTEMsT0FBS0QsT0FBS0Q7O3NEQUEzQkYsY0FBc0JHOzttQkFBTEMsTyxXQUFBQSxPQUFLRCxPQUFLRDs7c0RBQS9CSCxjQUFxQks7Ozs7OztHQUMzQixTQXVHSUM7SUF2R0VDLGVBQUlDLGVBQUlDLGVBQUlDO2tCQUFhQyxVQUFBQzs7OzswQ0FBYkYsZUFBYUMsVUFBQUM7OzswQ0FBakJILGVBQWlCRSxVQUFBQzs7OzBDQUFyQkosZUFBcUJHLFVBQUFDOzs7O2VBQXpCTDtlQUF5Qkk7ZUFBQUM7Ozs7Ozs7WUErQjNCQztJQS9CRUMsY0FBSUMsY0FBSUMsY0FBSUM7eUJBQWFDLFVBQUFDOztNQUFlQztNQUFMQztNQUFMQztNQUFMQztNQUFBQzs7O1VBQXpCVjtVQUF5QlM7VUFBQUw7VUFBQUM7TUFBQU07OztVQUFyQlY7VUFBMEJPO1VBQUxKO1VBQUFNO01BQUFFOzs7VUFBakJWO1VBQTJCSztVQUFWSDtVQUFBTztNQUFBRTs7O1VBQWJWO1VBQTRCRztVQUFmRjtVQUFBUTtZQUFBQzs7OztZQWtJM0JDO0lBbElFQyxjQUFJQyxjQUFJQyxjQUFJQzs7O01BQTRCQztNQUFMQztNQUFMQztNQUFMQzs7bUJBQWVILE8sV0FBZkcsT0FBS0QsT0FBS0QsT0FBS0Q7O3NEQUE1QkQsY0FBNEJDOzttQkFBTEMsTyxXQUFWRSxPQUFLRCxPQUFLRCxPQUFLRDs7c0RBQWhDRixjQUEyQkc7O21CQUFMQyxPLFdBQUxDLE9BQUtELE9BQUtELE9BQUtEOztzREFBcENILGNBQTBCSzs7bUJBQUxDLE8sV0FBQUEsT0FBS0QsT0FBS0QsT0FBS0Q7O3NEQUF4Q0osY0FBeUJPOzs7Ozs7R0FDL0IsU0F1R0lDO0lBdkdFQyxlQUFJQyxlQUFJQyxlQUFJQyxlQUFJQztrQkFBYUMsVUFBQUM7Ozs7MENBQWJGLGVBQWFDLFVBQUFDOzs7MENBQWpCSCxlQUFpQkUsVUFBQUM7OzswQ0FBckJKLGVBQXFCRyxVQUFBQzs7OzBDQUF6QkwsZUFBeUJJLFVBQUFDOzs7O2VBQTdCTjtlQUE2Qks7ZUFBQUM7Ozs7Ozs7O1lBK0IvQkM7SUEvQkVDLGNBQUlDLGNBQUlDLGNBQUlDLGNBQUlDO3lCQUFhQyxVQUFBQzs7TUFBb0JDO01BQUxDO01BQUxDO01BQUxDO01BQUxDO01BQUFDOzs7VUFBN0JaO1VBQTZCVztVQUFBTjtVQUFBQztNQUFBTzs7O1VBQXpCWjtVQUE4QlM7VUFBTEw7VUFBQU87TUFBQUU7OztVQUFyQlo7VUFBK0JPO1VBQVZKO1VBQUFRO01BQUFFOzs7VUFBakJaO1VBQWdDSztVQUFmSDtVQUFBUztNQUFBRTs7O1VBQWJaO1VBQWlDRztVQUFwQkY7VUFBQVU7WUFBQUM7Ozs7WUFrSS9CQztJQWxJRUMsY0FBSUMsY0FBSUMsY0FBSUMsY0FBSUM7OztNQUFpQ0M7TUFBTEM7TUFBTEM7TUFBTEM7TUFBTEM7O21CQUFvQkosTyxXQUFwQkksT0FBS0QsT0FBS0QsT0FBS0QsT0FBS0Q7O3NEQUFqQ0QsY0FBaUNDOzttQkFBTEMsTyxXQUFmRyxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRDs7c0RBQXJDRixjQUFnQ0c7O21CQUFMQyxPLFdBQVZFLE9BQUtELE9BQUtELE9BQUtELE9BQUtEOztzREFBekNILGNBQStCSzs7bUJBQUxDLE8sV0FBTEMsT0FBS0QsT0FBS0QsT0FBS0QsT0FBS0Q7O3NEQUE3Q0osY0FBOEJPOzttQkFBTEMsTyxXQUFBQSxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRDs7c0RBQWpETCxjQUE2QlM7Ozs7OztHQUVuQyxTQXNHSUM7SUF0R0VDO0lBQUlDO0lBQUlDO0lBQUlDO0lBQUlDO0lBQUlDO2tCQUFhQyxVQUFBQzs7OzswQ0FBYkYsZUFBYUMsVUFBQUM7OzswQ0FBakJILGVBQWlCRSxVQUFBQzs7OzBDQUFyQkosZUFBcUJHLFVBQUFDOzs7MENBQXpCTCxlQUF5QkksVUFBQUM7OzswQ0FBN0JOLGVBQTZCSyxVQUFBQzs7OztlQUFqQ1A7ZUFBaUNNO2VBQUFDOzs7Ozs7Ozs7WUE4Qm5DQztJQTlCRUM7SUFBSUM7SUFBSUM7SUFBSUM7SUFBSUM7SUFBSUM7eUJBQWFDLFVBQUFDOztNQUF5QkM7TUFBTEM7TUFBTEM7TUFBTEM7TUFBTEM7TUFBTEM7TUFBQUM7OztVQUFqQ2Q7VUFBaUNhO1VBQUFQO1VBQUFDO01BQUFROzs7VUFBN0JkO1VBQWtDVztVQUFMTjtVQUFBUTtNQUFBRTs7O1VBQXpCZDtVQUFtQ1M7VUFBVkw7VUFBQVM7TUFBQUU7OztVQUFyQmQ7VUFBb0NPO1VBQWZKO1VBQUFVO01BQUFFOzs7VUFBakJkO1VBQXFDSztVQUFwQkg7VUFBQVc7TUFBQUU7OztVQUFiZDtVQUFzQ0c7VUFBekJGO1VBQUFZO1lBQUFDOzs7O1lBaUluQ0M7SUFqSUVDO0lBQUlDO0lBQUlDO0lBQUlDO0lBQUlDO0lBQUlDOzs7TUFBc0NDO01BQUxDO01BQUxDO01BQUxDO01BQUxDO01BQUxDOzttQkFBeUJMO00sV0FBekJLLE9BQUtELE9BQUtELE9BQUtELE9BQUtELE9BQUtEOzs7c0RBQXRDRCxjQUFzQ0M7O21CQUFMQztNLFdBQXBCSSxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRDs7O3NEQUExQ0YsY0FBcUNHOzttQkFBTEM7TSxXQUFmRyxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRDs7O3NEQUE5Q0gsY0FBb0NLOzttQkFBTEM7TSxXQUFWRSxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRDs7O3NEQUFsREosY0FBbUNPOzttQkFBTEM7TSxXQUFMQyxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRDs7O3NEQUF0REwsY0FBa0NTOzttQkFBTEM7TSxXQUFBQSxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRCxPQUFLRDs7O3NEQUExRE4sY0FBaUNXOzs7Ozs7R0FHdkMsU0FvR0lDO0lBcEdHQyxjQUFLQyxjQUFJQzs7O2lEQUFKRCxjQUFJQztxREFBVEY7O0dBQ1AsU0FvR0lHO0lBcEdHQyxjQUFLQyxjQUFLQyxjQUFJQzs7O2lEQUFKRCxjQUFJQztzREFBVEY7cURBQUxEOztHQUNQLFNBb0dJSTtJQXBHR0MsY0FBS0MsY0FBS0MsY0FBS0MsY0FBSUM7OztpREFBSkQsY0FBSUM7c0RBQVRGO3NEQUFMRDtxREFBTEQ7O0dBRVAsU0FtR0lLO0lBbkdHQztJQUFLQztJQUFLQztJQUFLQztJQUFLQztJQUFJQzs7O2lEQUFKRCxjQUFJQztzREFBVEY7c0RBQUxEO3NEQUFMRDtxREFBTEQ7O0dBR1AsU0FpR0lNO0lBakdHQztJQUFLQztJQUFLQztJQUFLQztJQUFLQztJQUFLQztJQUFJQzs7O2lEQUFKRCxjQUFJQztzREFBVEY7c0RBQUxEO3NEQUFMRDtzREFBTEQ7cURBQUxEOzs7Ozs7Ozs7Ozs7O1lBT0hPLFFBQXlCQyxHLGdDQUFBQTtZQWN6QkMsYUFBYXB1QyxHQUFFd1osR0FBRzFSO2tCQUFpQ2xDLEdBQUssT0FBRyxXQUF6Q2tDLEdBQWlDbEMsYUFBQUEsYUFBQUEsR0FBK0I7SUFBcEMsT0FBQSxrQkFWOUN3d0IsNkJBVWFwMkIsR0FBRXdaO0dBQW9FO1lBQ25GNjBCLGlCQUFlLGNBQU07WUFDckJDLFVBQVV4bUM7SUFBZ0MsVUFEMUN1bUM7SUFDYyxPQUZkRCxhQUNBQyxtQkFDVXZtQztHQUFpRDtZQUMzRHltQyxjQUFRem1DLEdBQUksT0FBQSx5QkFBSkEsR0FBZ0I7WUFFeEIrWSxRQUFRMnRCLE1BQU0veUI7YUFDWjNULEVBQUVsQzt5QkFDNEJtVyxHQUFLLE9BQUEsV0FGdkJOLE9BQ1Y3VixHQUM0Qm1XLEdBQWM7S0FBeEMsWUFBQSwwQkFGRXl5Qjs7TUFHRSxPQUFBO1NBQ0Z0eUI7S0FBUyxPQUFUQTtJQUFVO0lBRXBCLE9BUkVxeUIsT0FRRyx5QkFOS0MsT0FDTjFtQztHQUtzQjtZQUd4QjJtQyxPQUFPM21DO0lBQUksT0FBTzs7c0JBQUtsQyxHQUFHK1csTUFBTS9TO2NBQVEsT0FBQSxvQkFBUSxXQUF6QzlCLE9BQWdCbEMsR0FBRytXLE1BQU0vUzthQUFvQztHQUFDO1lBRXJFOGtDLFdBQVlobEMsU0FBU2lsQyxJQUFJQyxJQUFJQztpQkFHckJqcEM7S0FDRSxJQUFKa3BDLElBQUksV0FKRXBsQyxTQUdKOUQsR0FIYStvQztLQUtuQixZQURJRyxRQUFBQSxZQURFbHBDLGFBQUFBLGFBQUFBO0lBRThDO0lBRm5ELE9BQUE7b0JBNUJIZ3lCLDZCQXlCeUJnWCxJQWZ6QlAsY0FlNkJRO0dBSzBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF3RnZERTs7Ozs7Ozs7Ozs7Ozs7O0lBbERBQztJQUNBQzs7Ozs7Ozs7Ozs7SUEvQkFDOztZQUVBQyxZQUFVdnBDLEdBQUVtVztJQUNkLE9BQU87OzZCQUFjcXpCO2NBQVUsT0FBRyxpQ0FBYkEsVUFEVHhwQyxJQUFFbVc7YUFDK0Q7R0FBQztZQUc1RXN6QixTQUFPdm5DO0lBQUksT0FBTzs7c0JBQU02VSxNQUFNeXlCO2NBQVUsT0FBQSxxQkFBUyxXQUExQ3RuQyxPQUFpQjZVLE1BQU15eUI7YUFBdUM7R0FBQztZQUV0RUUsWUFBYUMsR0FBRXh4QjtJQUNqQjtLQUFHLE1BQUEsMkJBRFl3eEI7S0FDWixhQUFxQiwyQkFEVEE7SUFDUztLQUViLFVBQUEsZ0NBSElBO0tBR2I7O0lBQUE7S0FJbUIsT0FBQTtJQUFtRDt3QkFDM0QzcEMsR0FBRzRwQztLQUFLO01BQTBDLE1BVjdESCxTQVVjRztvQkFBc0MsaUNBUnZDRDtLQVFxQixPQUFBO3NDQVJyQkEsR0FRMEIsV0FoQnZDTCxhQWdCV3RwQztJQUE0RDtJQUQvRCxPQUFBLCtCQVBPbVk7R0FReUQ7WUFHcEUweEIsa0JBQW1CRixHQUFHRyxTQUFRenZCO0lBQ3BDLEdBRG9DQSxTQUFSeXZCLFNBRXZCLE9BQUEsV0FyQkhSLGFBbUIwQlE7SUFJMUI7S0FBQTtLQUVhO09BbkJiTDt5QkFtQitCLE9BTjNCSSxrQkFBbUJGLEdBQUdHLFNBQVF6dkIsY0FNcUM7bUJBQW5FLGlDQU5tQnN2QjtJQUtyQixPQUFBO3FDQUxxQkEsR0FLaEIsV0F4QlBMLGFBbUJrQ2p2QjtHQU8vQjtZQUdIMHZCLFVBQVdKLEdBQUV0dkI7SUFBTyxPQVZoQnd2QixrQkFVT0YsaUJBQUV0dkI7R0FBdUQ7WUFHcEUydkIsaUJBQWlCL3FCLFFBQU96ZixHQUFJLE9BQUEsZ0JBQUpBLEdBQVB5ZixRQUFxQztZQWlCdERnckIsV0FBV0M7SUFDYixhQUFtQkMsV0FBVW5xQyxHQUFFbVc7S0FBSyxJQUFXaTBCLFFBQW1CLFdBQS9DRCxXQUFZaDBCLElBQWdCazBCLFFBQUssV0FBakNGLFdBQVVucUM7S0FBa0IsT0FBQSw0QkFBQXFxQyxPQUFBRDtJQUFnQztJQUEvRSxVQUFBLGlCQURhRjtJQUNFLE9BQUE7R0FBZ0U7WUFHN0VJLFNBQVNKO0lBQU0sYUFBdUJLLEtBQUl2cUMsR0FBRW1XLEdBQUssYUFBVSxXQUFyQm8wQixLQUFJdnFDLEdBQUVtVyxXQUEwQjtJQUF2RCxVQUpmOHpCLFdBSVNDO0lBQXlCLE9BQUE7R0FBb0M7Ozs7Ozs7Ozs7O1lBTXRFTSxhQUFXLGNBQU07OztJQTJCYTs7Ozs7O0tBQTlCQzsyQjthQUVBQyxxQkFBcUJDO0tBQ3ZCLFVBRHVCQTtNQUdnQyxJQUF0Q0MsTUFITUQsU0FHZ0MsTUFBQSw0QkFBdENDO01BQXNDLE9BQUE7O29DQUxyREg7OztnQkFBQUE7OztpQkFBQUE7OztnREFBQUE7O0tBSW9ELE9BQUE7SUFDc0I7YUFHMUVJLFVBQVVGO0tBQ1osVUFEWUEsbUJBRVc7U0FDTkcsU0FITEg7S0FHZSxXQUFWRztJQUE4QjthQUc3Q0M7S0FBb0IsOEJBQ0w7U0FDUnptQjtLQUFLLE9BQUxBO0lBQU07YUFHYjBtQixZQUFhTCxNQUFNTSxPQUFPQyxRQUFRQztLQUNwQztNQUNVLE1BQUEsNEJBRldGO01BS2pCO1FBVkZGO1VBVW9COzZCQUxjSTtNQUdyQixNQUFBLDRCQUhhRDtLQUM1QjthQVpFTCxVQVlpQiw0QkFESkY7Ozs7SUFNZDthQUdDUyxZQUFzQkMsS0FBS0MsVUFBVUM7S0FLWCxJQUF0QjN5QixzQkFBc0IsNEJBTEMweUI7eUI7S0FNWCxJQUFaL3JDLFlBQVksNEJBTnFCZ3NDO0tBUy9CLFdBSEZoc0MsV0FOa0I4ckMsS0FLbEJ6eUI7SUFJSTthQUdSNHlCLGFBQWVqcUMsVUFBa0M4cEM7S0FDbkQsR0FEaUI5cEMsU0FBT0MsTUFBUEQsUUFBQW9wQyxPQUFPbnBDLGNBQVBtcEM7S0FDakIsWUFEK0NjLGdCQUFQMTBCLE9BQU8wMEIsZ0JBQVAxMEI7S0FDM0IsSUFBVHl5QixTQXZDRmtCLHFCQXNDZUM7S0FFakIsT0FBQSxxQkFGbURVLEtBQVh0MEIsTUFDcEN5eUI7SUFDZ0M7YUFHbENrQyxnQkFBaUJmLE1BQU1NLE9BQU1JO0tBQy9CO01BQUlNLFNBM0JGWCxZQTBCaUJMLE1BQU1NO01BSXJCOUI7O01BQ2tCLFVBSmxCd0M7a0JBSXFDQyxVQURyQ3pDLGNBQ3FDeUMsbUJBQThCO0tBQXZFLG1EQUwrQlA7WUFJM0JsQztJQUVHO2FBR0w5dkIsS0FBTXN4QixNQUFNTSxPQUFPQyxRQUFPRyxLQUFLbnBDO0tBQ2pDO01BQUl5cEMsU0FwQ0ZYLFlBbUNNTCxNQUFNTSxPQUFPQztNQUVyQjtNQUFzQixVQURsQlM7a0JBQ3FDQztNQUFZLE9BQS9CLDhCQUFtQkEsVUFGUjFwQztLQUU2QztLQUE5RSxPQUFBLG1EQUY0Qm1wQztJQUVtRDthQUc3RVE7S0FBTWxCO0tBQU1NO0tBQU9DO0tBQVFJO0tBQVVIO0tBQWlCSTtLQUFTTztLQUFTVDtLQUFLbnBDO0tBQy9FO01BQUl5cEMsU0F6Q0ZYLFlBd0NNTCxNQUFNTSxPQUFPQyxRQUFrQkM7TUFFbkNZLFNBakNGWCxZQStCd0VDLEtBQTdDQyxVQUEyQkM7S0FHeEQsT0FBQTt1Q0FIK0VycEMsT0FDM0V5cEMsU0FENkRHLFVBRTdEQztJQUNvQzthQUd0Q0M7S0FDR3JCO0tBQ0FNO0tBQ0FDO0tBQ0FJO0tBQ0FIO0tBQ0FJO0tBQ0FPO0tBQ0RUO0tBQ0NucEM7S0FFTDtNQUFJeXBDLFNBekRGWCxZQStDR0wsTUFDQU0sT0FDQUMsUUFFQUM7TUFPRFksU0FqREZYLFlBNkNFQyxLQUpDQyxVQUVBQztLQU9MLE9BQUE7dUNBSktycEMsT0FFRHlwQyxTQUpDRyxVQUtEQztJQUNnQzthQUdsQ0U7S0FFR3RCLE1BQ0FNLE9BQ0FNLFNBQ0RGLEtBQ0NILFFBWUNnQixpQkFWRHBvQztLQUVMLHNDQUZLQTtrQkF5Qlk0Z0I7TUFDTCxJQUFOdkY7TUE3REo5RjtRQTZCR3N4QjtRQUNBTTtZQUdBQztRQURERztpQkE4Qm9DL3lCO1NBRGxDNkcsU0FFSyxpQkFENkI3RyxLQURsQzZHO1NBR0MsVUFuQkQrc0IsbUJBbUJDLGtCQUhEL3NCO3NCQUd5QyxXQUo5QnVGO1FBSXlDO01BbEJyQyxJQUZaeW5CLFFBaUJIaHRCLFFBZkFpdEIsZUFBZSxrQkFGWkQ7TUFHUCxHQWhCR1o7T0FtQmtDO1FBQTVCYyxjQW5CTmQ7UUFtQm1EZSxRQUFqQixrQkFOOUJIO1FBR0hJLHlDQUdLRixhQUE2Q0M7O1dBSGxEQztVQU9BQztTQVBBRDs7UUFPQTV4QyxJQVBBNHhDOzJEQU9BNXhDLFVBQUE2eEM7O2lCQUFBQTs7Ozt1REFSQUo7Ozs7dURBREFGOzs7MERBWkRoQjtPQXFCQ3VCOzs7O1NBQUFBLHNCQUFBQSxlQUFBQyxJQUFBRCxjQUFBQzs7S0FXSztLQUxDLE9BQUE7SUFLQTthQUdWQyxrQkFDR2hDLE1BQ0FNLE9BQ0MxcEMsS0FDRGdxQyxTQUNERixLQUNDbnBDO0tBRUwsR0FMTVg7VUFBU0MsTUFBVEQsUUFBQTJwQyxTQUFTMXBDOztVQUFUMHBDO0tBS0UsSUFBSnhtQjtrQkFHMkJ5a0I7TUEvRTdCOXZCO1FBcUVHc3hCO1FBQ0FNO1lBQ0NDO1FBRUZHO2lCQUlxQnJyQztTQUFPLE9BQUEsV0FIM0JrQyxHQUdvQmxDO21CQUFnQixXQUVWbXBDO29CQUgzQnprQixXQUNxQjFrQixHQURyQjBrQjs7TUFJQTtLQUNnQjtvQkFGbEIsc0NBSWlCO1VBWGQ2bUIsU0FjUSxPQUFBOztNQUNIcUIsZ0JBZkxyQjtNQWdCMERzQixRQVozRG5vQjs7OzttREFXTWtvQixlQUNxREM7Ozs7O0lBQWE7SUFqSmhDOzs7Ozs7Ozs7Ozs7WUEyQzFDckI7WUFLQUU7WUFTQXJ5QjtZQUtBd3lCO1lBTUFHO1lBZ0JBQztZQXlDQVU7O0dBcUN3QjtJQVZ0Qkc7SUFVc0IsTUFBQTtJQUR0QkMsZ0JBQ0Y7Ozs7U0FaRWhkO1NBV0FnZDtTQVRBRDs7U0FPQTljOzs7Ozs7SUFwSEZ3YjtJQUtBRTtJQVNBcnlCO0lBS0F3eUI7SUFNQUc7SUFnQkFDO0lBeUNBVTs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFoSUF4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FBaEZBRztRQUVBQzs7O1FBTUFHO1FBOEJBN007UUFDQW1CO1FBQ0F5QjtRQUNBK0I7UUFDQXFDO1FBVEE1VDtRQUNBcUI7UUFDQWdDO1FBQ0EwQztRQUNBaUQ7UUFSQThRO1FBQ0FYO1FBQ0FDOztRQVlBN0M7UUFDQUk7UUFDQUs7UUFDQU07UUFDQU87UUFFQW1DO1FBSUFLOzs7Ozs7O1FBL0NBYjs7O1FBMEJBTzs7OztRQTNFQTFCOzs7UUFnQkFJO1FBQ0FDO1FBRUExdEI7O1FBZkF1VjtRQUNBd0I7UUFDQW1DO1FBQ0E2QztRQUNBb0Q7UUFNQW9PO1FBZ0JBTTtRQWZBTDs7UUFOQXZMO1FBQ0FvQjtRQUNBMEI7UUFDQWdDO1FBQ0FzQzs7UUFlQXVFOzs7O1FBMEVBMkI7Ozs7OztRQU1BN007UUFDQXVCO1FBQ0E2QjtRQUNBbUM7UUFDQXlDO1FBVEF6VTtRQUNBOEI7UUFDQXVDO1FBQ0ErQztRQUNBMEQ7OztRQWdCQW1OOzs7O1NBQUFBOzs7Ozs7Ozs7Ozs7VUFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQWhGQUc7VUFFQUM7OztVQU1BRztVQThCQTdNO1VBQ0FtQjtVQUNBeUI7VUFDQStCO1VBQ0FxQztVQVRBNVQ7VUFDQXFCO1VBQ0FnQztVQUNBMEM7VUFDQWlEO1VBUkE4UTtVQUNBWDtVQUNBQzs7VUFZQTdDO1VBQ0FJO1VBQ0FLO1VBQ0FNO1VBQ0FPO1VBRUFtQztVQUlBSzs7Ozs7OztVQS9DQWI7OztVQTBCQU87Ozs7OztPQThGQXdCO09BY0FueUI7T0FLQXd5QjtPQU1BRztPQXlEQVc7T0F6Q0FWO09BcENBUDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUNqUE5yeUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUFROzs7O0lBZUprRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZkksVUFBQTtJQUFSLGNBQVE7SUFBUixNQUFBO0lBQUEyRSxVQUFBOzs7Ozs7Ozs7Ozs7O0dBQVEsU0FBQTdELFlBQUFqRztJQUFSLFVBQUE7SUFBQSxPQUFBLFdBQUEsK0JBQUE4SixtQkFBUTlKO0dBQXdDO1lBQWhEa0csV0FBS2hHLFdBQUxLO0ksb0NBQUtMLFdBQUxLOztZQUFBOEYsWUFBS2pHLFNBQUxNLEtBQUE0RixLQUFBL0Y7SUFBQSxPQUFBLHdDQUFLSCxVQUFMTSxLQUFBNEYsS0FBQS9GO0dBQWdEO1lBQWhEZ0osYUFBS2pKO2lCQUFMQztLQUFBLFVBQUtEO0tBQUwsMEIsT0FBQStGLGlCQUFBOUY7SUFBZ0Q7SUFBaEQsb0JBQUFBLEdBQUEsT0FBQTJGLFdBQUs1RixpQkFBTEMsR0FBZ0Q7R0FBQTtZQUFoRGtHLFdBQUtoRyxNQUFVQyxLQUFBQyxTQUFBQztJLCtDQUFWSCxPQUFVQyxLQUFBQyxTQUFBQzs7WUFBZjhGLGFBQUtqRyxNQUFMQyxLQUFBQztJQUFBLE9BQUEsd0NBQUtGLE9BQUxDLEtBQUFDO0dBQWdEO1lBQWhENkksYUFBS3pJO2lCQUFMTCxLQUFBQyxTQUFBSztLQUFBLE9BQUF5RixXQUFLMUYsaUJBQUxMLEtBQUFDLFNBQUFLO0lBQWdEO0lBQWhEO3FCQUFBTixLQUFBQzthQUFBLE9BQUErRixhQUFLM0YsaUJBQUxMLEtBQUFDO1lBQWdEOztHQUFBO1lBQWhEOEksTUFBQXZJO0lBQUEsSUFBQSxNQUFBc0ksYUFBQXRJLFdBQUEsTUFBQXFJLGFBQUFySTtJQUFBLFdBQVErRSxZQUFSL0U7R0FBZ0Q7O2lFQUFoRGpDO0lBQUF5ZjtZQUFBQyxhQUFBbGU7SUFBQSxJQUFBbWUsWUFBQSw2QkFBQW5lO0lBQUE7O2FBQUFtZTs7OzZCQUFBLE9BQUEsZ0NBQUFuZTtHQUFnRDtHQUtoQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsVUFBQTtJQUFBLFVBQUE7SUFBZCxjQUFjO0lBQWQsTUFBQTtJQUFBMkwsVUFBQTtHQUFjLFNBQUFyQyxjQUFBL0osR0FBQXdaO0lBQWQsVUFBQTtJQUFBLE9BQUE7YUFBQSwrQkFBQXBOLG1CQUFjcE0sT0FBQXdaO0dBQXNDO1lBQXBEeFAsYUFBTTlKLFdBQUl1WixXQUFWbFo7OztNQUFtQm1jO01BQUF2Vzt1QkFBYmpHLFdBQWFpRztNQUFBd1c7dUJBQVRsRCxXQUFTaUQ7NENBQUFDOzs2Q0FBbkJwYzs7WUFBQTBKLGNBQU03SixTQUFJc1osU0FBVmhaLEtBQUE0RixLQUFBL0Y7aUJBQWtCRyxLQUFBNEY7O01BQUNvVztNQUFBdlc7TUFBQUksbUJBQWJuRyxTQUFZTSxLQUFBNEYsS0FBQ0g7dUJBQVR1VCxTQUFRaFosS0FBQzZGLE9BQUFtVzs7SUFBbkIsT0FBQSw4Q0FBQWhjLEtBQUE0RixLQUFBL0Y7R0FBb0Q7WUFBcEQySixlQUFNNUosY0FBSXFaO2lCQUFWcFo7S0FBQSxVQUFVb1osdUJBQUpyWjtLQUFOLDBCLE9BQUEySix3QkFBQTFKO0lBQW9EO0lBQXBEO3FCQUFBQTthQUFBLE9BQUF5SixhQUFNMUosaUJBQUlxWixpQkFBVnBaO1lBQW9EOztHQUFBO1lBQXBENEosYUFBTTFKLE1BQUltWixNQUFrQmxaLEtBQUFDLFNBQUFDO2lCQUE1QkYsS0FBQUM7O01BQW1Cd0YsZ0JBQWIxRixNQUFOQyxLQUFBQztNQUFtQitiLGdCQUFUOUMsTUFBVmxaLEtBQUFDO2dCQUFtQndGLElBQUF1Vzs7eURBQVNoYyxLQUFBQyxTQUFBQzs7WUFBNUJ3SixhQUFNM0osTUFBSW1aLE1BQVZsWixLQUFBQztpQkFBQUQsS0FBQUM7O01BQW1Cd0YsZ0JBQWIxRixNQUFOQyxLQUFBQztNQUFtQitiLGdCQUFUOUMsTUFBVmxaLEtBQUFDO2dCQUFtQndGLElBQUF1Vzs7SUFBbkIsT0FBQSw4Q0FBQWhjLEtBQUFDO0dBQW9EO1lBQXBEMEosZUFBTXRKLGNBQUk4WTtpQkFBVm5aLEtBQUFDLFNBQUFLO0tBQUEsT0FBQW1KLGFBQU1wSixpQkFBSThZLGlCQUFWblosS0FBQUMsU0FBQUs7SUFBb0Q7SUFBcEQ7cUJBQUFOLEtBQUFDO2FBQUEsT0FBQXlKO3NCQUFNckosaUJBQUk4WSxpQkFBVm5aLEtBQUFDO1lBQW9EOztHQUFBO1lBQXBEMkosUUFBQXBKLE9BQUE0WTtJQUFBO0tBQUEsTUFBQXpQLGVBQUFuSixVQUFBNFk7S0FBQSxNQUFBNVAsZUFBQWhKLFVBQUE0WTtJQUFBLFdBQWMvUCxjQUFkN0ksVUFBQTRZO0dBQW9EO1lBRWhEdlAsVUFBbUJxb0MsV0FBVUMsV0FBdUJ4eEMsT0FBQUM7aUJBQUMwWSxPQUFBQztLQUFBO01BQUE2NEIsUUFBQTk0QjtNQUFBKzRCLFFBQUEvNEI7TUFBQWc1QixRQUFBLzRCO01BQUFnNUIsUUFBQWg1QjtNQUFBaVEsSUFBQSxXQUFsQzBvQixXQUFrQ0csT0FBQUU7a0JBQUEvb0IsSUFBSSxXQUE1QjJvQixXQUF3QkMsT0FBQUUsU0FBQTlvQjtJQUFLO0lBQUUsT0FBQSxpQ0FBUjdvQixPQUFBQztHQUFZO1lBR2xFdUUsVUFBV2lDLEdBQUUxQztJQUNmO0tBQWlFLE1BQUEsZ0JBRGxEQSxHQUFGMEM7S0FDVSxNQUFBLFdBSXJCM0Msb0JBSnFDUyxHQUFLLFdBQUxBLEdBQXdCO0lBQXhDLE9BQUE7R0FBcUQ7WUFJMUU0RixVQUFBcEssT0FBQXFLLE9BQUFDO0lBQXNCLE9BQUE7O3NCQUFIOFosT0FBQUMsT0FBQSxPQUFBLFdBQW5CcmtCLE9BQW1Cb2tCLE9BQUFDLE9BQUU7YUFBckJoYTthQUFBQztHQUF1Qjs7aURBQXZCRixXQUFBckc7O0lBR0FpWjtJQUNBODBCO1lBRUFDLGdCQUFnQnR1QixRQUFPekc7SUFDekIsT0FBQTs2Q0FEeUJBLHNCQUFQeUc7R0FDcUQ7O0lBR3JFdXVCO0lBQ0FDO0lBQ0EvMEI7SUFDQUU7Ozs7Ozs7Ozs7O09BYkFyWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWZJYztPQUFSQztPQUFBRztPQUFBSztPQUFBRDtPQUFBOEM7T0FBQUM7T0FBQUM7T0FBQWtWO09BQUFEOztPQWtCSU47T0FTQUU7T0FDQUU7T0FsQkEzWTtPQVNBcXRDO09BRUFDO09BSUFDO09BQ0FDOzs7Ozs7Ozs7Ozs7OztRQXJCWXRwQztRQUFkQztRQUFBQztRQUFBRztRQUFBRDtRQUFBRDtRQUFBRztRQUFBQztRQUVJQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUVpTElrcEM7O0lBbEZBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFwR04zZjtJQVNRdk07SUFBQW1zQjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBejRCO0lBQUEwNEI7SUFBQUM7SUFBQUM7SUFBQTl3QjtJQUFBK3dCO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFqekI7SUFBQWt6QjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBMXhCO0lBQUEvRDtJQUFBMDFCO0lBQUFDO0lBQUF0ekI7SUFBQUQ7SUFBQXd6QjtJQUFBQztJQUFBeHlCO0lBQUFEO0lBQUEweUI7SUFBQW56QjtJQUFBRDtJQUFBaEI7SUFBQS9GO0lBQUFvNkI7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTd3QjtJQUFBOHdCO0lBQUFDO0lBQUFDO0lBQUFoM0I7SUFBQUM7SUFBQTZGO0lBQUF0RjtJQUFBZ0Q7SUFBQWpEO0lBQUErQztJQUFBaEQ7SUFBQWlEO0lBQUFwQjtJQUFBakM7SUFBQSsyQjtJQUFBOTJCO0lBQUFvQjtJQUFBMjFCO0lBQUFDO0lBQUFwMkM7SUFBQXEyQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBNTJCO0lBQUE1YTtJQUFBeXhDO0lBQUFodEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBR1JpdEMsU0FBVTUzQyxNQUFLNkksR0FBRTFDO0lBQTJCLFdBQUEsV0FIcEM2dUMsVUFHUzd1QztJQUEyQixPQUFBLHlCQUFsQ25HLE1BQUs2STtHQUF5QztZQUt0RHNkLFNBQVEweEIsZ0JBQWdCbjZCLE1BQU1vNkI7SUFDaEMsT0FBNkI7YUFUckJoM0I7YUFRRSsyQjthQUFnQm42QjthQUNHLDZCQURHbzZCO0dBQzRCO1lBRzFEQyxXQUFVRixnQkFBZ0JuNkIsTUFBTW82QixVQUFTRTtJQUMzQyxPQUFBO2FBYlFOO2FBWUlHO2FBQWdCbjZCO2FBQ0csNkJBREdvNkI7YUFBU0U7R0FDcUI7WUFHOURDLDJCQUEwQkosZ0JBQWdCbjZCLE1BQU1vNkIsVUFBU0U7SUFDM0QsT0FBQTthQWpCUVA7YUFnQm9CSTthQUFnQm42QjthQUNHLDZCQURHbzZCO2FBQVNFO0dBQ3FCO1lBRzlFRSxvQkFBbUJMLGdCQUFnQm42QixNQUFNbzZCLFVBQVNFO0lBQ3BELE9BQUE7YUFyQlFSO2FBb0JhSzthQUFnQm42QjthQUNHLDZCQURHbzZCO2FBQVNFO0dBQ3FCO1lBR3ZFRyxlQUFjTixnQkFBZ0JuNkIsTUFBTW82QixVQUFTRTtJQUMvQyxPQUFBO2FBekJRVDthQXdCUU07YUFBZ0JuNkI7YUFDRyw2QkFER282QjthQUFTRTtHQUNxQjtZQUdsRUksaUJBQWdCUCxnQkFBZ0JuNkIsTUFBTW82QixVQUFTRTtJQUNqRCxPQUFBO2FBN0JRVjthQTRCVU87YUFBZ0JuNkI7YUFDRyw2QkFER282QjthQUFTRTtHQUNxQjtZQUdwRUs7SUFBZVIsZ0JBQWdCbjZCLE1BQU1vNkIsVUFBVVEsU0FBU0MsVUFBU1A7SUFDbkUsT0FBQTthQWpDUVg7YUFnQ1NRO2FBQWdCbjZCO2FBSS9CLDZCQUpxQ282QjthQUFVUTthQUFTQzthQUFTUDtHQU9oRTtZQUdEUSxrQkFBaUJYLGdCQUFnQm42QixNQUFNbzZCLFVBQVVRLFNBQVFOO0lBQzNELE9BQUE7YUEzQ1FaO2FBMENXUzthQUFnQm42QjthQUNHLDZCQURHbzZCO2FBQVVRO2FBQVFOO0dBQ3FCO1lBRzlFUztJQUEwQlosZ0JBQWdCbjZCLE1BQU1vNkIsVUFBVVEsU0FBUU47SUFDcEUsT0FBQTthQS9DUWI7YUE4Q29CVTthQUFnQm42QjthQUkxQyw2QkFKZ0RvNkI7YUFBVVE7YUFBUU47R0FNakU7WUFHRFUsc0JBQXFCYixnQkFBZ0JuNkIsTUFBTW82QixVQUFVUSxTQUFRTjtJQUMvRCxPQUFBO2FBeERRZDthQXVEZVc7YUFBZ0JuNkI7YUFDRyw2QkFER282QjthQUFVUTthQUFRTjtHQUNxQjtZQUdsRm50QztJQUFPZ3RDLGdCQUFnQm42QixNQUFNbzZCLFVBQVVRLFNBQVNDLFVBQVVJLFNBQVFYO0lBQ3BFLE9BQUE7YUE1RFFuM0M7YUEyRENnM0M7YUFBZ0JuNkI7YUFJdkIsNkJBSjZCbzZCO2FBQVVRO2FBQVNDO2FBQVVJO2FBQVFYO0dBUWpFO0dBa0JhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsVUFBQTtJQUFBLFVBQUE7SUFBZCxjQUFjO0lBQWQsTUFBQTtJQUFBN3FDLFVBQUE7R0FBYyxTQUFBeXJDLGFBQUE3M0MsR0FBQXdaO0lBQWQsV0FBQTtJQUFBLE9BQUE7YUFBQSwrQkFBQXBOLG9CQUFjcE0sT0FBQXdaO0dBQWdDO1lBQTlDcytCLFlBQU01M0MsV0FBSXVaO0lBQVY7S0FBbUJpRDtLQUFBdlc7dUJBQWJqRyxXQUFhaUc7S0FBQXdXO3VCQUFUbEQsV0FBU2lEOzJDQUFBQztHQUEyQjtZQUE5Q283QixhQUFNMzNDLFNBQUlzWixTQUFWaFosS0FBQTRGO0lBQUE7S0FBbUJvVztLQUFBdlc7S0FBQUksbUJBQWJuRyxTQUFOTSxLQUFBNEYsS0FBbUJIO3NCQUFUdVQsU0FBVmhaLEtBQW1CNkYsT0FBQW1XO0dBQTJCO1lBQTlDczdCLFlBQU12M0MsTUFBSW1aLE1BQVZsWixLQUFBQzs7S0FBbUJ3RixnQkFBYjFGLE1BQU5DLEtBQUFDO0tBQW1CK2IsZ0JBQVQ5QyxNQUFWbFosS0FBQUM7ZUFBbUJ3RixJQUFBdVc7O0dBR2pCO0lBREUxVztNQUNGO1lBS0VpeUMsT0FBSzd5QyxHQUFHMEM7SUFBSSxPQUFXOzthQUFsQjFDO3NCQUF3Qjh5QyxLQUFLekQsTUFBUSxPQUFFLFdBQXBDM3NDLE9BQXFCb3dDLEtBQUt6RCxPQUFxQjtHQUFDO1lBRXhEeDBCLEtBQU16RCxLQUFLMjdCO0lBQ2I7S0FBSS95QyxJQUFJLDRCQURBb1g7S0FFUixPQUZRQTtLQUNBOztTQUNSTjs7TUFDa0IsSUFBQSxRQUFBLFdBSExpOEIsVUFHRjFELGlCQUFMeUQ7U0FDRSxtQkFISjl5QyxHQUVFOHlDO09BR1E7O09BREYsa0JBSlI5eUMsR0FFRTh5QyxLQUFLekQ7TUFEWCxXQUFBdjRCO2tCQUFBQTtVQUFBQTs7O0lBTUEsT0FQSTlXO0dBT0g7Ozs7OztTQWhCQ1k7U0FJQTB0Qzs7U0FFQXVFO1NBRUFoNEI7U0FWSjYzQjtTQUFBQztTQUFBQztTQUFjSDs7Ozs7Ozs7Ozs7S0E2QmRkOzZDQUFBQTs7Ozs7Ozs7Ozs7OztLQXVCRW5EO0tBQUFDO0tBQUFDO0tBTEFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUF6NEI7S0FBQTA0QjtLQUFBQztLQUFBQztLQUFBOXdCO0tBQUErd0I7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQWp6QjtLQUFBa3pCO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUExeEI7S0FBQS9EO0tBQUEwMUI7S0FBQUM7S0FBQXR6QjtLQUFBRDtLQUFBd3pCO0tBQUFDO0tBQUF4eUI7S0FBQUQ7S0FBQTB5QjtLQUFBbnpCO0tBQUFEO0tBQUFoQjtLQUFBL0Y7S0FBQW82QjtLQUFBQztLQUFBQztLQUFBQztLQUFBQztLQUFBN3dCO0tBQUE4d0I7S0FBQUM7S0FBQUM7S0FBQWgzQjtLQUFBQztLQUFBNkY7S0FBQXRGO0tBQUFnRDtLQUFBakQ7S0FBQStDO0tBQUFoRDtLQUFBaUQ7S0FBQXBCO0tBQUFqQztLQUFBKzJCO0tBQUE5MkI7S0FBQW9CO0tBQUEyMUI7S0FBQUM7O2FBV0YxdUIsVUFBVTR3QixlQUFjaHpDO0tBQUksT0FBQSxnQyxZQUFsQmd6QyxlQUFjaHpDO0lBQW9DO2FBQzVERCxVQUFVa3pDLFdBQVVqekM7S0FBSSxPQUFBLGlDQUFkaXpDLFdBQVVqekM7SUFBOEM7O2NBUWhFd0YsWUFBVTB0QyxXQUFVdnpDO01BQU8sT0FBQSw4QkFBakJ1ekMsV0FBVXZ6QztLQUE2QztLQUR2RSxXQUNNNkY7OztLQWVNOztNQVhBMUU7TUFBQUc7TUFBQUk7TUFBQVI7Ozs7WUFBQUE7O01BV0EsV0FBQTtNQUFSO2dCQUFRO01BQVIsT0FBQTtNQUFBbkcsUUFBQTtLQUFRLFNBQUErM0MsYUFBQTczQztNQUFSLFdBQUE7TUFBQSxPQUFBO2VBQUEsK0JBQUFGLGtCQUFRRTtLQUFtQztjQUEzQzgzQyxZQUFLNTNDO01BQUw7T0FBYXdjO09BQUF2Vzt5QkFYTEQsWUFXS0M7T0FBQXdXO3lCQUFSemMsV0FBUXdjOzZDQUFBQztLQUE4QjtjQUEzQ283QixhQUFLMzNDLFNBQUxNLEtBQUE0RjtNQUFBO09BQWFvVztPQUFBdlc7T0FBQUksbUJBWExGLGFBV1IzRixLQUFBNEYsS0FBYUg7d0JBQVIvRixTQUFMTSxLQUFhNkYsT0FBQW1XO0tBQThCO2NBQTNDczdCLFlBQUt2M0MsTUFBTEMsS0FBQUM7O09BQWF3RixnQkFYTE0sWUFXUi9GLEtBQUFDO09BQWErYixnQkFBUmpjLE1BQUxDLEtBQUFDO2lCQUFhd0YsSUFBQXVXOztLQUdYO01BREUxVztRQUNGO2NBS0VpWixLQUFLN1osR0FBRzBDO01BQUksT0FBVztlQTNDekJvWjtlQTJDTzliO3dCQUF3Qjh5QyxLQUFLekQsTUFBUSxPQUFFLFdBQXBDM3NDLE9BQXFCb3dDLEtBQUt6RCxPQUFxQjtLQUFDO2NBRXhEeDBCLEtBQU16RCxLQUFLMjdCO01BQ2I7T0FBSS95QyxJQUFJLDBCQURBb1g7T0FFUixPQUZRQTtPQUNBOztXQUNSTjs7UUFDa0IsSUFBQSxRQUFBLFdBSExpOEIsVUFHRjFELGlCQUFMeUQ7V0FDRSxXQWpEUno0QixNQThDSXJhLEdBRUU4eUM7U0FJRjtXQWpNUm5rQixtREE2TFVta0I7O1NBRU0sV0FsRFpuekIsS0E4Q0kzZixHQUVFOHlDLEtBQUt6RDtRQURYLFdBQUF2NEI7b0JBQUFBO1lBQUFBOzs7TUFXQSxPQVpJOVc7S0FZSDtLQTlCa0MsT0FBQTs7O2VBU2pDWTtlQUlBeXRDO2VBekNGNXVCO2VBMkNFNUY7ZUFFQWdCO2VBVko2M0I7ZUFBQUM7ZUFBQUM7ZUFBUUg7O0lBdERkO1lBQ01kOzs7Ozs7Ozs7Ozs7O1lBa0JFYjtZQUFBRDtZQUFBMzFCO1lBQUFwQjtZQUFBODJCO1lBQUEvMkI7WUFBQWlDO1lBQUFvQjtZQUFBakQ7WUFBQWdEO1lBQUEvQztZQUFBaUQ7WUFBQWhEO1lBQUFzRjtZQUFBN0Y7WUFBQUQ7WUFBQWczQjtZQUFBRDtZQUFBRDtZQUFBOXdCO1lBQUE2d0I7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQXA2QjtZQUFBK0Y7WUFBQWdCO1lBQUFDO1lBQUFtekI7WUFBQTF5QjtZQUFBQztZQUFBd3lCO1lBQUFEO1lBQUF4ekI7WUFBQUM7WUFBQXN6QjtZQUFBRDtZQUFBMTFCO1lBQUErRDtZQUFBMHhCO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFsekI7WUFBQWl6QjtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBL3dCO1lBQUE4d0I7WUFBQUQ7WUFBQUQ7WUFBQTE0QjtZQUFBeTRCO1lBQUFEO1lBQUFEO1lBQUFEO1lBS0FEO1lBQUFEO1lBQUFEO1lBdElKaUQ7WUE0SUVydkI7WUFDQXJpQjs7Ozs7Ozs7O0tBOUJBNHhDOzs7Ozs7Ozs7Ozs7S0FrQkViO0tBQUFEO0tBQUEzMUI7S0FBQXBCO0tBQUE4MkI7S0FBQS8yQjtLQUFBaUM7S0FBQW9CO0tBQUFqRDtLQUFBZ0Q7S0FBQS9DO0tBQUFpRDtLQUFBaEQ7S0FBQXNGO0tBQUE3RjtLQUFBRDtLQUFBZzNCO0tBQUFEO0tBQUFEO0tBQUE5d0I7S0FBQTZ3QjtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBcDZCO0tBQUErRjtLQUFBZ0I7S0FBQUM7S0FBQW16QjtLQUFBMXlCO0tBQUFDO0tBQUF3eUI7S0FBQUQ7S0FBQXh6QjtLQUFBQztLQUFBc3pCO0tBQUFEO0tBQUExMUI7S0FBQStEO0tBQUEweEI7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQWx6QjtLQUFBaXpCO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUEvd0I7S0FBQTh3QjtLQUFBRDtLQUFBRDtLQUFBMTRCO0tBQUF5NEI7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FLQUQ7S0FBQUQ7S0FBQUQ7S0FLRmlEO0tBQ0FydkI7S0FDQXJpQjs7OztLQVFFTDtJQWdEUjtZQXRGTWl5Qzs7Ozs7Ozs7Ozs7O1lBa0JFYjtZQUFBRDtZQUFBMzFCO1lBQUFwQjtZQUFBODJCO1lBQUEvMkI7WUFBQWlDO1lBQUFvQjtZQUFBakQ7WUFBQWdEO1lBQUEvQztZQUFBaUQ7WUFBQWhEO1lBQUFzRjtZQUFBN0Y7WUFBQUQ7WUFBQWczQjtZQUFBRDtZQUFBRDtZQUFBOXdCO1lBQUE2d0I7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQXA2QjtZQUFBK0Y7WUFBQWdCO1lBQUFDO1lBQUFtekI7WUFBQTF5QjtZQUFBQztZQUFBd3lCO1lBQUFEO1lBQUF4ekI7WUFBQUM7WUFBQXN6QjtZQUFBRDtZQUFBMTFCO1lBQUErRDtZQUFBMHhCO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFsekI7WUFBQWl6QjtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBL3dCO1lBQUE4d0I7WUFBQUQ7WUFBQUQ7WUFBQTE0QjtZQUFBeTRCO1lBQUFEO1lBQUFEO1lBQUFEO1lBS0FEO1lBQUFEO1lBQUFEO1lBS0ZpRDtZQUNBcnZCO1lBQ0FyaUI7OztZQVFFTDs7O0lBbUVGLElBREVpeUM7SUFId0QseUNBR3hEQTs7Ozs7S0F4R0ZBOzs7Ozs7Ozs7Ozs7S0FrQkViO0tBQUFEO0tBQUEzMUI7S0FBQXBCO0tBQUE4MkI7S0FBQS8yQjtLQUFBaUM7S0FBQW9CO0tBQUFqRDtLQUFBZ0Q7S0FBQS9DO0tBQUFpRDtLQUFBaEQ7S0FBQXNGO0tBQUE3RjtLQUFBRDtLQUFBZzNCO0tBQUFEO0tBQUFEO0tBQUE5d0I7S0FBQTZ3QjtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBcDZCO0tBQUErRjtLQUFBZ0I7S0FBQUM7S0FBQW16QjtLQUFBMXlCO0tBQUFDO0tBQUF3eUI7S0FBQUQ7S0FBQXh6QjtLQUFBQztLQUFBc3pCO0tBQUFEO0tBQUExMUI7S0FBQStEO0tBQUEweEI7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQWx6QjtLQUFBaXpCO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUEvd0I7S0FBQTh3QjtLQUFBRDtLQUFBRDtLQUFBMTRCO0tBQUF5NEI7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FLQUQ7S0FBQUQ7S0FBQUQ7S0FLRmlEO0tBQ0FydkI7S0FDQXJpQjs7OztLQVFFTDtJQXVFa0I7WUE3R3BCaXlDOzs7Ozs7Ozs7Ozs7WUFrQkViO1lBQUFEO1lBQUEzMUI7WUFBQXBCO1lBQUE4MkI7WUFBQS8yQjtZQUFBaUM7WUFBQW9CO1lBQUFqRDtZQUFBZ0Q7WUFBQS9DO1lBQUFpRDtZQUFBaEQ7WUFBQXNGO1lBQUE3RjtZQUFBRDtZQUFBZzNCO1lBQUFEO1lBQUFEO1lBQUE5d0I7WUFBQTZ3QjtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBcDZCO1lBQUErRjtZQUFBZ0I7WUFBQUM7WUFBQW16QjtZQUFBMXlCO1lBQUFDO1lBQUF3eUI7WUFBQUQ7WUFBQXh6QjtZQUFBQztZQUFBc3pCO1lBQUFEO1lBQUExMUI7WUFBQStEO1lBQUEweEI7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQWx6QjtZQUFBaXpCO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUEvd0I7WUFBQTh3QjtZQUFBRDtZQUFBRDtZQUFBMTRCO1lBQUF5NEI7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFLQUQ7WUFBQUQ7WUFBQUQ7WUFLRmlEO1lBQ0FydkI7WUFDQXJpQjs7O1lBUUVMOzs7SUFxRmN5ekM7SUFBQUM7SUFBQUM7SUFBQUM7WUFLaEJDLGdCQUFnQjV4QyxHQUFFNnhDO0lBQWtCLFVBQUEsV0FsUDlCbkMseUJBa1BVMXZDLEdBQUU2eEM7SUFBa0IsT0FBQTtHQUEyQjtZQUwvQ0MseUJBU05DO0ksZ0JBQ1JDO0tBRzJELGNBSm5ERCxRQUFBQSxRQUFBQTtLQUkwQixrQixPQVJwQ0g7a0JBT3VCSyxVQUFBQzs7Ozs7V0FGckJGO1dBRXFCQztXQUFBQzs7O2dEQUhiSCxRQUdhRSxVQUFBQzs7Ozs7O0tBQ2EsT0FBQSw2Q0FBOEI7O1lBYmxEQyx3QkFrQk5KO0ksZ0JBQ1JLO3lCQUVvQjNpQixVQUFBQzs7T0FBUUY7T0FBUjZpQjtPQUFBMWlCOzt5Q0FIWm9pQixRQUdZTSxPQUFBNWlCLFVBQUFDO09BQUFFOzs7V0FGcEJ3aUI7V0FFNEI1aUI7V0FBUkM7V0FBQUU7YUFBQUM7Ozs7O0tBYnBCLE9BQUEsd0NBclBJc2QsVUFrUThFOztZQXJCcEVvRix3QkEwQk5QO0ksZ0JBQ1JRO0tBSTZCLGNBTHJCUixRQUFBQSxRQUFBQTtLQUtKLGtCLE9BMUJOSDs7VUF3QjhCNWpCLGtCQUFSbHFCO21CQUFRa3FCLE8sV0FBUmxxQixPQUFRa3FCOzs7O3lDQUY1QnVrQiwwQkFFNEJ2a0I7O21CQUFSbHFCLE8sV0FBQUEsT0FBUWtxQjs7c0RBSHBCK2pCLFFBR1lqdUM7Ozs7Ozs7S0FFaEIsT0FBQSw0Q0E1UUFvcEMsVUE2UWdCOztPQU14QnNGOzs7Ozs7Ozs7OztLQWpLRXhDOzs7Ozs7Ozs7Ozs7S0FrQkViO0tBQUFEO0tBQUEzMUI7S0FBQXBCO0tBQUE4MkI7S0FBQS8yQjtLQUFBaUM7S0FBQW9CO0tBQUFqRDtLQUFBZ0Q7S0FBQS9DO0tBQUFpRDtLQUFBaEQ7S0FBQXNGO0tBQUE3RjtLQUFBRDtLQUFBZzNCO0tBQUFEO0tBQUFEO0tBQUE5d0I7S0FBQTZ3QjtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBcDZCO0tBQUErRjtLQUFBZ0I7S0FBQUM7S0FBQW16QjtLQUFBMXlCO0tBQUFDO0tBQUF3eUI7S0FBQUQ7S0FBQXh6QjtLQUFBQztLQUFBc3pCO0tBQUFEO0tBQUExMUI7S0FBQStEO0tBQUEweEI7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQWx6QjtLQUFBaXpCO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUEvd0I7S0FBQTh3QjtLQUFBRDtLQUFBRDtLQUFBMTRCO0tBQUF5NEI7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FLQUQ7S0FBQUQ7S0FBQUQ7S0FLRmlEO0tBQ0FydkI7S0FDQXJpQjs7O0tBUUVMOzs7Ozs7Ozs7Ozs7OztZQVJGSztZQTlCQTR4QztZQTZCQXZ2Qjs7Ozs7Ozs7Ozs7O1lBWEUwdUI7WUFBQUQ7WUFBQTMxQjtZQUFBcEI7WUFBQTgyQjtZQUFBLzJCO1lBQUFpQztZQUFBb0I7WUFBQWpEO1lBQUFnRDtZQUFBL0M7WUFBQWlEO1lBQUFoRDtZQUFBc0Y7WUFBQTdGO1lBQUFEO1lBQUFnM0I7WUFBQUQ7WUFBQUQ7WUFBQTl3QjtZQUFBNndCO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFwNkI7WUFBQStGO1lBQUFnQjtZQUFBQztZQUFBbXpCO1lBQUExeUI7WUFBQUM7WUFBQXd5QjtZQUFBRDtZQUFBeHpCO1lBQUFDO1lBQUFzekI7WUFBQUQ7WUFBQTExQjtZQUFBK0Q7WUFBQTB4QjtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBbHpCO1lBQUFpekI7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQS93QjtZQUFBOHdCO1lBQUFEO1lBQUFEO1lBQUExNEI7WUFBQXk0QjtZQUFBRDtZQUFBRDtZQUFBRDtZQVVGOEM7WUFMRS9DO1lBQUFEO1lBQUFEOzs7WUFlQTl1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F0Q0ZpeUM7Ozs7Ozs7Ozs7OztLQWtCRWI7S0FBQUQ7S0FBQTMxQjtLQUFBcEI7S0FBQTgyQjtLQUFBLzJCO0tBQUFpQztLQUFBb0I7S0FBQWpEO0tBQUFnRDtLQUFBL0M7S0FBQWlEO0tBQUFoRDtLQUFBc0Y7S0FBQTdGO0tBQUFEO0tBQUFnM0I7S0FBQUQ7S0FBQUQ7S0FBQTl3QjtLQUFBNndCO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUFEO0tBQUFwNkI7S0FBQStGO0tBQUFnQjtLQUFBQztLQUFBbXpCO0tBQUExeUI7S0FBQUM7S0FBQXd5QjtLQUFBRDtLQUFBeHpCO0tBQUFDO0tBQUFzekI7S0FBQUQ7S0FBQTExQjtLQUFBK0Q7S0FBQTB4QjtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBbHpCO0tBQUFpekI7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQS93QjtLQUFBOHdCO0tBQUFEO0tBQUFEO0tBQUExNEI7S0FBQXk0QjtLQUFBRDtLQUFBRDtLQUFBRDtLQUtBRDtLQUFBRDtLQUFBRDtLQUtGaUQ7S0FDQXJ2QjtLQUNBcmlCOzs7S0FRRUw7Ozs7Ozs7Ozs7Ozs7WUFSRks7WUE5QkE0eEM7WUE2QkF2dkI7Ozs7Ozs7Ozs7OztZQVhFMHVCO1lBQUFEO1lBQUEzMUI7WUFBQXBCO1lBQUE4MkI7WUFBQS8yQjtZQUFBaUM7WUFBQW9CO1lBQUFqRDtZQUFBZ0Q7WUFBQS9DO1lBQUFpRDtZQUFBaEQ7WUFBQXNGO1lBQUE3RjtZQUFBRDtZQUFBZzNCO1lBQUFEO1lBQUFEO1lBQUE5d0I7WUFBQTZ3QjtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBcDZCO1lBQUErRjtZQUFBZ0I7WUFBQUM7WUFBQW16QjtZQUFBMXlCO1lBQUFDO1lBQUF3eUI7WUFBQUQ7WUFBQXh6QjtZQUFBQztZQUFBc3pCO1lBQUFEO1lBQUExMUI7WUFBQStEO1lBQUEweEI7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQWx6QjtZQUFBaXpCO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUFEO1lBQUEvd0I7WUFBQTh3QjtZQUFBRDtZQUFBRDtZQUFBMTRCO1lBQUF5NEI7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFVRjhDO1lBTEUvQztZQUFBRDtZQUFBRDs7O1lBZUE5dUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BeEpJOEU7T0FBQWd0QztPQUFBenhDO09BQUE0YTtPQUFBNDJCO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFyMkM7T0FBQW8yQztPQUFBRDtPQUFBMzFCO09BQUFwQjtPQUFBODJCO09BQUEvMkI7T0FBQWlDO09BQUFvQjtPQUFBakQ7T0FBQWdEO09BQUEvQztPQUFBaUQ7T0FBQWhEO09BQUFzRjtPQUFBN0Y7T0FBQUQ7T0FBQWczQjtPQUFBRDtPQUFBRDtPQUFBOXdCO09BQUE2d0I7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQXA2QjtPQUFBK0Y7T0FBQWdCO09BQUFDO09BQUFtekI7T0FBQTF5QjtPQUFBQztPQUFBd3lCO09BQUFEO09BQUF4ekI7T0FBQUM7T0FBQXN6QjtPQUFBRDtPQUFBMTFCO09BQUErRDtPQUFBMHhCO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFsekI7T0FBQWl6QjtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBL3dCO09BQUE4d0I7T0FBQUQ7T0FBQUQ7T0FBQTE0QjtPQUFBeTRCO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFuc0I7T0FHUnF2Qjs7UUFLRXp4QjtRQUlBNHhCO1FBSUFFO1FBSUFDO1FBSUFDO1FBSUFDO1FBSUFDO1FBVUFHO1FBSUFDO1FBU0FDO1FBSUE3dEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FBeERGK3NDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BZ1JBMEM7T0F0Q2tCYjtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBTTtPQUFBSztPQUFBRzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDak1aM0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FsQ0FxRDt3Q0FBQUE7Ozs7YUFHSjV4QyxVQUFVQyxHQUFJLE9BQUEsNkJBQUpBLEdBQW9DOztjQVE1Q3dGLFlBQVU3RixNQUFPLE9BQUEsNEJBQVBBLE1BQWlDO0tBRGpELFdBQ002Rjs7O0tBZUY7TUFBQWt0QztNQUFBQztNQUFBQztNQVhLL3hDO01BV0w7Z0JBQUssNkNBWEFBO01BV0wsTUFBQTtNQUFBbkcsUUFBQTtNQUFBLE1BQUE7TUFBSyszQyxlQUFMLFdBQUEsK0JBQUEvM0M7TUFJSWtHO1FBQ0Y7Y0FPRWlhLEtBQU16RCxLQUFLMjdCO01BQ2IsSUFBSS95QyxJQUFJLDBCQURBb1gsVUFFUixNQUZRQSxhQUNBOztXQUNSTjs7UUFDVSxJQUFKM2IsSUFBSSxXQUhHNDNDO1FBSVgsZ0JBSEUveUMsR0FFRTdFO1FBRE4sVUFBQTJiO21CQUFBQTtZQUFBQTs7O01BSUEsT0FMSTlXO0tBS0g7S0F6QmlDLE9BQUE7OztlQVdoQ1k7ZUFJQTB0Qzs7O2VBSUF6ekI7ZUFaSjYzQjtlQUFBQztlQUFBQztlQUFLSDs7SUFuQ1g7Ozs7O1lBWU0xeUM7Ozs7Ozs7O0tBUkFzVzs7O0tBUUF0Vzs7OztLQVFFTDtJQTJDUjtZQTNETTJXOzs7WUFRQXRXOzs7WUFRRUw7OztJQTZEVyxJQUFYaXlDLFdBQVc7SUFINkMseUNBR3hEQTs7Ozs7S0E3RUZ0N0I7OztLQVFBdFc7Ozs7S0FRRUw7SUFnRWtCO1lBaEZwQjJXOzs7WUFRQXRXOzs7WUFRRUw7O1lBNkVGaWIsT0FBUSsyQixnQkFBZ0JuNkIsTUFBTW82QjtJQUNoQyxPQUE2Qjs7YUFEbkJEO2FBQWdCbjZCO2FBQ0csNkJBREdvNkI7R0FDNEI7WUFHMUR5QyxVQUFTMUMsZ0JBQWdCbjZCLE1BQU1vNkIsVUFBU0U7SUFDMUMsT0FBQTs7YUFEV0g7YUFBZ0JuNkI7YUFDRyw2QkFER282QjthQUFTRTtHQUNxQjtHQVIzQyxJQUFBLHFCQUdsQmwzQixRQUlBeTVCLFlBS0Z6QztZQUNBM3hCLFNBQVEweEIsZ0JBQWdCbjZCLE1BQUs1VjtJQUFJLE9BQUEsZ0JBQXpCK3ZDLGdCQUFnQm42QixNQUFLNVY7R0FBa0M7WUFFL0Q4eEMseUJBQTZDQztJQUVoQjtLQUFBLE1BQUEsOEJBRmdCQSxRQUFBQSxRQUFBQTt1Q0FBQUE7SUFFaEIsT0FBQTs7WUFHN0JJLHdCQUE0Q0o7MENBQUFBO0lBTGxCLE9BQUE7O1lBUzFCTyx3QkFBNENQO0lBRWhCO0tBQUEsTUFBQSw4QkFGZ0JBLFFBQUFBLFFBQUFBO3VDQUFBQTtJQUpuQixPQUFBOzs7Ozs7Ozs7OztLQTlHdkJyOUI7OztLQVFBdFc7OztLQVFFTDs7Ozs7Ozs7Ozs7Ozs7WUFoQkYyVztZQVFBdFc7Ozs7O1lBUUVMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FoQkYyVzs7O0tBUUF0Vzs7O0tBUUVMOzs7Ozs7Ozs7Ozs7O1lBaEJGMlc7WUFRQXRXOzs7OztZQVFFTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXVGSnNnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FEQTJ4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR0E4QjtPQUtBSztPQUlBRzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lFd1lJNUY7O0lBdmdCRmdHO0lBeWRJL0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F6ZFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsVUFBQTtJQUFBLFVBQUE7SUFBZCxjQUFjO0lBQWQsTUFBQTtJQUFBNXpDLFFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FBYyxTQUFBbUcsWUFBQXVwQyxHQUFBanZDO0lBQWQsV0FBQTtJQUFBLE9BQUE7YUFBQSwrQkFBQVQsa0JBQWMwdkMsT0FBQWp2QztHQUNvQjtZQURsQzJGLFdBQU13ekMsV0FBSUM7SUFBVjtLQUFrQmo5QjtLQUFBdlc7dUJBQVp1ekMsV0FBWXZ6QztLQUFBd1c7WUFBQUQ7OztNQUFLblEsT0FBTG1RO01BQUtsUSx1QkFBYm10QyxXQUFhcHRDOzZDQUFBQzs7O01BQUFvdEMsU0FBTGw5QjtNQUFnRHlTLE9BQTNDeXFCO01BQTJDeHpDLE9BQTNDd3pDO3dCQUFiRCxXQUF3RHZ6QztNQUFBd2pCO3dCQUF4RCt2QixXQUF3RHhxQjtNQUEzQzBxQiw4Q0FBMkNqd0I7NkNBQTNDaXdCOzs7TUFBQUMsU0FBTHA5QjtNQUFLcTlCLHlCQUFiSixXQUFhRzs2Q0FBQUM7MkNBQUxwOUI7R0FDZ0I7WUFEbEN0VyxZQUFNMnpDLFNBQUlDLFNBQVZ2NUMsS0FBQTRGO0lBQUE7S0FBa0JvVztLQUFBdlc7S0FBQUksbUJBQVp5ekMsU0FBTnQ1QyxLQUFBNEYsS0FBa0JIO1lBQUF1Vzs7O01BQUtuUSxPQUFMbVE7TUFBS2xXLHVDQUF2QjlGLEtBQWtCNkY7dUJBQVIwekMsU0FBVnY1QyxLQUF1QjhGLE9BQUErRjs7OztNQUFBcXRDLFNBQUxsOUI7TUFBS0csdUNBQXZCbmMsS0FBa0I2RjtNQUFnRDRvQixPQUEzQ3lxQjtNQUEyQ3h6QyxPQUEzQ3d6QztNQUEyQ3g4QixtQkFBeEQ2OEIsU0FBVnY1QyxLQUF1Qm1jLE9BQTJDelc7dUJBQXhENnpDLFNBQVZ2NUMsS0FBa0UwYyxPQUFBK1I7OztLQUEzQzJxQixTQUFMcDlCO0tBQUtzVCx1Q0FBdkJ0dkIsS0FBa0I2RjtzQkFBUjB6QyxTQUFWdjVDLEtBQXVCc3ZCLE9BQUE4cEI7R0FDVztZQURsQ3Z3QyxhQUFNMndDLGNBQUlDO2tCQUFWNTVDO0tBQUEsV0FBVTQ1Qyx3QkFBSkQ7S0FBTjtNLE9BQUE3ekMsd0JBQUE5RjtJQUNrQztJQURsQztxQkFBQUE7YUFBQSxPQUFBMkYsV0FBTWcwQyxpQkFBSUMsaUJBQVY1NUM7WUFDa0M7O0dBQUE7WUFEbENrRyxXQUFNMnpDLE1BQUlDLE1BQVYzNUMsS0FBQUMsU0FBQUM7SUFBQTtrRUFBQUQ7R0FDa0M7WUFEbEMrRixhQUFNMHpDLE1BQUlDLE1BQVYzNUMsS0FBQUM7O0tBQWtCd0YsZ0JBQVppMEMsTUFBTjE1QyxLQUFBQztLQUF1QkMscUNBQXZCRixLQUFBQzs7c0JBQXVCQzs7T0FBQStGLG1CQUFiMHpDLE1BQVYzNUMsS0FBQUM7NkJBQXVCZ0c7MkJBQUEvRjs7T0FBQWdHLHFCQUFieXpDLE1BQVYzNUMsS0FBQUM7NkJBQXVCaUc7O3dCQUFBaEc7OztPQUEyQ3dGLGtCQUF4RGkwQyxNQUFWMzVDLEtBQUFDO09BQWtFd3VCLGtCQUF4RGtyQixNQUFWMzVDLEtBQUFDO09BQXVCMGMsY0FBMkNqWCxNQUFBK29COzhCQUEzQzlSOztTQUFMWDs7Ozs7OztNQUFBQTs7aUVBQWxCL2I7O2VBQWtCd0YsSUFBQXVXOztZQUFsQmxULGFBQU04d0MsY0FBSUM7a0JBQVY3NUMsS0FBQUMsU0FBQUs7S0FBQSxPQUFBeUYsV0FBTTZ6QyxpQkFBSUMsaUJBQVY3NUMsS0FBQUMsU0FBQUs7SUFDa0M7SUFEbEM7cUJBQUFOLEtBQUFDO2FBQUEsT0FBQStGO3NCQUFNNHpDLGlCQUFJQyxpQkFBVjc1QyxLQUFBQztZQUNrQzs7R0FBQTtZQURsQzhJLE1BQUErd0MsT0FBQUM7SUFBQTtLQUFBLE9BQUFqeEMsYUFBQWd4QyxVQUFBQztLQUFBLE9BQUFseEMsYUFBQWl4QyxVQUFBQztJQUFBLFdBQWN4MEMsWUFBZHUwQyxVQUFBQztHQUNrQztZQURsQy93QyxRQUFBZ3hDLE9BQUFDLE9BQUF0NUMsT0FBQUM7SUFBa0I7S0FBQXM1QyxRQUFsQnY1QztLQUFrQnc1QyxRQUFsQng1QztLQUFrQnl4QyxRQUFsQnh4QztLQUFrQnl4QyxRQUFsQnp4QztLQUFrQjRvQixJQUFBLFdBQWxCd3dCLE9BQWtCRyxPQUFBOUg7YUFBQTdvQixHQUFBLE9BQUFBO0lBQUssR0FBQSwrQkFBTDB3QixPQUFBOUgsUUFBSztlQUFMOEg7O2VBQUE5SCxvQ0FBQUE7VUFBS2dJLFlBQUxoSSxVQUFLaUksV0FBTEg7TUFBZ0IsT0FBQSxXQUFsQ0QsT0FBdUJJLFVBQUFEOzs7OztnQkFBTGhJLHFDQUFBQTtPQUFnRDtRQUEzQ2tJLFlBQUxsSTtRQUFLbUksV0FBTEw7UUFBZ0RNLFFBQTNDRDtRQUEyQ0UsUUFBM0NGO1FBQTJDRyxRQUEzQ0o7UUFBMkNLLFFBQTNDTDtRQUEyQzd3QixNQUFBLFdBQWxFd3dCLE9BQWtFUSxPQUFBRTtvQkFBQWx4QixNQUFLLFdBQXZFd3dCLE9BQWtFTyxPQUFBRSxTQUFBanhCOzs7b0JBQWhEMm9CLG9DQUFBQTtVQUFLd0ksWUFBTHhJLFVBQUt5SSxXQUFMWDtNQUErQixPQUFBLFdBQWpERCxPQUF1QlksVUFBQUQ7O0lBQUEsT0FBQSxxQkFBTFYsT0FBQTlIO0dBQXlEO0dBQTNFLFNBQUFodUMsVUFBTTAyQyxVQUFJQyxVQUFRQztJLFNBQUFBO2dCQUFBQTs7OztPQUFBO1FBQUtDO1FBQUxDO1FBQUFDLFdBQUEsV0FBWkwsVUFBWUk7T0FBSztpQkFBQUQ7O1VBQUFHLFdBQUFIOztpQ0FBQUc7O2lCQUFBQTs7bUJBQUFBO21CQUFBO21CQUEyQztrREFBbEVyQyxrQkFBdUJrQztpQkFBMEI7Z0RBQWpEbEMsa0JBQXVCa0M7ZUFBVzs4Q0FBbENsQyxrQkFBdUJrQzs7O29CQUFBQTs7OztlQUFBSSx5QkFBV0M7bUNBQUFBO29DQUFBQTtxQ0FBQUE7eUJBQVg7Ozs7a0JBQUFELG1CQUFBQTtvQkFBMkNFLFdBQTNDRjs7O2lCQUEyQyxTQUFBRTs2QkFBQUE7Ozs7b0JBQUE7cUJBQUFDO3FCQUFBQztxQkFBQWxoQyxXQUFBLFdBQXhEd2dDLFVBQXdEVTtxQkFBQUMsV0FBQSxXQUF4RFgsVUFBd0RTO3FCQUFBRyxlQUFBcGhDLFVBQUFtaEM7Ozs7OztrQkFBQUM7b0JBQUE7bURBQWxFNUMscUJBQWtFd0M7OzJDQUFBSTs7Ozs7a0JBQUE7O29CQUFsRTVDO29CQUFrQ3VDO29CQUFYTDs7Ozs7OztpQkFBQUksbUJBQUFBO2VBQTBCO2dCQUFBTyxXQUExQlA7Z0JBQTBCUSxXQUFBLFdBQXZDZCxVQUF1Q2E7c0NBQUFDOzs7OztpQkFBQTs7bUJBQWpEOUM7bUJBQWtDdUM7bUJBQVhMOzs7Ozs7O2dCQUFBSSxtQkFBQUE7Y0FBVztlQUFBUyxXQUFYVDtlQUFXMW9CLFdBQUEsV0FBeEJvb0IsVUFBd0JlO3FDQUFBbnBCOzs7OztnQkFBQTs7a0JBQWxDb21CO2tCQUFrQ3VDO2tCQUFYTDs7Ozs7Ozs7O2NBQUE7OENBQXZCbEMsa0JBQXVCa0M7Ozs7OzthQUFBOzZDQUF2QmxDLGtCQUF1QmtDOzs7WUFBTGM7Ozs7Ozs7U0FBQUE7V0FBSzsyQ0FBdkJoRCxrQkFBdUJrQzs7T0FBTCxXQUFBRSxVQUFBWTs7OztJQUFBLE9BQUE7MENBQWxCaEQscUJBQWtCaUM7O1lBQWxCdjJDLFVBQU11M0MsVUFBSUM7SUFBVjtLQUFrQkM7S0FBQUM7S0FBQUMsc0JBQVpKLFVBQVlHO1lBQUFEOzs7TUFBS0csUUFBTEg7TUFBQUksdUNBQVJMLFVBQWFJOzs7TUFBQUUsUUFBTEw7TUFBZ0RNLFdBQTNDRDtNQUEyQ0UsV0FBM0NGO01BQTJDRyxzQkFBeERULFVBQXdEUTtNQUFBRSxzQkFBeERWLFVBQXdETztNQUFoREYsb0NBQWdESSxjQUFBQzs7O01BQTNDQyxRQUFMVjtNQUFBSSx1Q0FBUkwsVUFBYVc7bUJBQUxSLGNBQUFFO0dBQ2dCOzs7OztJQUdoQztZQUpZLzJDOzs7SUFJWjtJQUNBOzs7UUFBQTs7Ozs7SUFBQSxPQUFBO0dBQWdEO0dBQWhEO0lBQUE7O09BQUE7Ozs7Ozs7Ozs7O1NBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFHRW1WLFdBQWVDLElBQUlDO0lBQ2I7S0FERWlpQztLQUFIL047S0FDSGdPLE1BQUksV0FEU25pQyxJQUFWbTBCO0tBRVAsT0FGVStOOztTQUlBaDlDLElBSkFnOUMsU0FFTkUsd0JBRWlCLFdBSkFuaUMsSUFJWC9hOztLQUVnQztjQU5oQ2c5QztNQU1RN2dDO01BQUp2VztNQUE0QixPQUFBLFdBTnJCbVYsSUFNSG9CO01BSmQrZ0MsNkJBSStCLFdBTmRuaUMsSUFNUG5WOztTQURIdTNDLE1BTERILFNBRU5FLHdCQUdtQixXQUxGbmlDLElBS1ZvaUM7SUFHWCxXQVBJRixLQUNBQzs7WUFTRkUsU0FBU3Y0QyxHQUFHMEMsR0FBSSxPQVhoQnNULElBV1NoVyxrQixlQUFHMEMsR0FBeUI7WUFFckM4MUM7SUFDRixJQURjTCxpQkFDZCxPQURjQTs7U0FFTjMzQyxJQUZNMjNDOytCQUdBLGNBRE4zM0MsSUFGTTIzQztJQUVpQixXQUF2QjMzQzs7WUFJTmk0QztJQUNGLElBRGVOLGlCQUNmLE9BRGVBOzJCQUdGO1FBREozM0MseUJBRk0yM0MsYUFBQUE7SUFFaUIsV0FBdkIzM0M7O1lBNEJYazRDLFNBQVVDLFlBQVdDLE9BQU1DO0lBQzdCLE9BQUEsMENBRFlGLFlBQVdDLE9BQU1DO0dBQzhDO1lBR3pFNy9CLHFCQUFzQjIvQixZQUFXQyxPQUFNQztJQUN6QyxPQUFBO2dEQUR3QkYsYUFBV0MsT0FBTUM7R0FDK0I7WUFHdEVDLFNBQVNDLE9BQU1DO0lBQVEsT0FBQSx5Q0FBZEQsT0FBTUM7R0FBcUQ7WUFFcEVDLFNBQVVOLFlBQVdPLE9BQU1DO0lBQzdCLE9BQUEseUNBRFlSLFlBQVdPLE9BQU1DO0dBQzZDOztJQUkxRUM7SUFDQWxnQztJQUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF1REF1L0I7SUFEQVU7O1lBaERFQyxlQUFnQlgsWUFBV1k7SUFDdkI7O09BQUEscUJBRFlaLFlBQ2dCLDZCQURMWTs4QkFFdkJ2akMsZ0JBQU8sT0FBUEE7UUFDVzg4QjtJQUNmLE9BQUE7Ozs7O2FBRGVBO2FBSEM2RjtHQVFNO1lBMG1CdEJhLG9CQXZtQnFCYixZQUFXWTtJQUNsQyxPQUFRLG9CQVpORCxlQVdxQlgsWUFBV1k7R0FDVTtZQUcxQ0UsUUFBU2QsWUFBVzM0QztJQUN0QixJQUVpQixPQUFBLGlCQUhLQSxJQUdwQixPQUFBO0lBQUEsT0FBQSw2QkFIUzI0QztHQUdlO1lBaW1CeEJlLGdCQTlsQmlCZixZQUFXMzRDO0lBQUksT0FOaEN5NUMsUUFNaUJkLFlBQW1DLG9CQUFuQ0EsWUFBVzM0QztHQUErQztZQTBCN0UyNUMsV0F4QmFGLFNBQVMvMkM7a0JBRzJCb3dDLEtBQU8sV0FBUEEsS0FBWSxXQUh2Q3B3QyxHQUcyQm93QyxNQUFpQjtJQUFyRDtLQUFBLE9BQUEseUJBSEEyRztLQUdYLE9BQUE7SUFBQSxPQUFBOzthQURZLHdCQUZEQTs7R0FHdUQ7WUEwbEJsRUcsZ0JBdmxCZ0JILFNBQVMvMkM7SUFBSSxPQUFRLG9CQWtCdkNpM0MsV0FsQmtCRixTQUFTLzJDO0dBQW1DOzs7SUFNNURtM0M7SUFBQW5nQztJQUFBRDtJQUFBNEY7SUFBQXk2QjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBci9CO0lBQUFzL0I7SUFBQW45QjtJQUFBaEQ7SUFBQStDO0lBQUFqRDtJQUFBZ0Q7SUFBQS9DO0lBQUFxZ0M7SUFBQTcvQjtJQUFBOC9CO0lBQUEvL0I7SUFBQWdnQztJQUFBQztJQUFBQztJQUFBcitCO0lBQUF1eUI7SUFBQVE7SUFBQXVMO0lBQUF2a0M7SUFBQXdrQztJQUFBQztJQUFBcitCO0lBQUFDO0lBQUF3ekI7SUFBQUQ7SUFBQWp6QjtJQUFBRDtJQUFBVztJQUFBRDtJQUFBMHlCO0lBQUE0SztJQUFBOStCO0lBQUFqQztJQUFBRjtJQUFBaUM7SUFBQWlMO0lBQUFnMEI7SUFBQUM7SUFBQW4vQjtJQUFBakM7SUFBQSsyQjtJQUFBajNCO0lBQUFnM0I7SUFBQXZ5QjtJQUFBL0Q7SUFBQWcyQjtJQUFBQztJQUFBOUI7SUFBQUM7SUFBQUM7SUFBQS91QjtJQUFBNHdCO0lBQUFDO0lBQUEvd0I7SUFBQTdGO0lBQUFzaEM7WUFJQXpKLFNBQVU1M0MsTUFBSzZJLEdBQUUxQztJQUEyQixXQUFBLFdBSjVDNnVDLGFBSWlCN3VDO0lBQTJCLE9BQUEseUJBQWxDbkcsTUFBSzZJO0dBQXlDO1lBQ3hEeTRDLFVBQVd0aEQsTUFBSzZJLEdBQUUxQztJQUFJO0tBQTRDLE9BQUEsV0FMbEU2dUMsYUFLa0I3dUM7S0FBd0IsT0FBQSx1QkFBL0JuRztJQUF1RCxPQUFBLCtCQUFsRDZJO0dBQThEO1lBQzlFMDRDLHNCQUFvQmhSLEdBQUVqdkM7SUFBSSxPQUFBLFdBaEQ1QitkLHFCQWdEc0JreEIsR0FBRWp2QztHQUEyQjtZQUNqRGtnRCxzQkFBb0JqUixHQUFFanZDO0lBQUksT0FBQSxXQWhENUJpZSxxQkFnRHNCZ3hCLEdBQUVqdkM7R0FBMkI7WUFDakRtZ0QsVUFBUXQ3QyxHQUFJLE9BNUJaeTVDLFFBNEJtRCxXQU1yRGQsWUFOVTM0QyxJQUFBQSxHQUEwRTtZQUdwRnU3QyxVQUFRdjdDLEdBQUksT0EvQlZ5NUMsUUErQitDLFdBR2pEZCxZQUhRMzRDLElBQUFBLEdBQTBFOztJQUlsRnc3QztJQTBCQUM7SUFSQUM7SUFBQTVSO0lBQUE4SDtJQUFBRztJQUFBQztJQUFBQztJQUFBMEo7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFRQUM7SUFBQUM7SUFBQS9QO0lBQUFnUTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBMzJCO0lBQUE0MkI7SUFBQUM7SUFBQUM7SUFBQW50QjtJQUFBb3RCO0lBUkFDO0lBQUFDO0lBUUFoM0I7SUFBQWkzQjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBeitCO0lBQUEwK0I7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQXY0QjtJQUFBdzRCO0lBQUF2NEI7SUFBQXc0QjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztZQUlGQyxXQXJCY3ptRCxNQUFLNkksR0FBRTFDO0lBQTJCLFdBQUEsV0FpQjlDNitDLGVBakJtQjcrQztJQUEyQixPQUFBLHlCQUFsQ25HLE1BQUs2STtHQUF5QztZQTBCNUQ2OUMsWUF6QmUxbUQsTUFBSzZJLEdBQUUxQztJQUFJO0tBQTRDLE9BQUEsV0FnQnBFNitDLGVBaEJvQjcrQztLQUF3QixPQUFBLHVCQUEvQm5HO0lBQXVELE9BQUEsK0JBQWxENkk7R0FBOEQ7WUFRaEY4OUMsVUFQVTcrQyxHQUFJLE9BQXlDLDhCQUE3Q0EsTUFBOEQ7T0FleEU4K0M7WUFpQkFDLGNBQWMxZ0QsR0FBRTh5QztJQUNsQjtLQUFJNk4sZUFBYSxXQTdDZmhJLFlBNENjMzRDO0tBRVYsUUFBQSxXQW5CSms5QyxRQWlCY2w5QyxHQUFFOHlDO2tCQUdYekQsaUJBQVEsV0FBUkE7O0tBRUR5QixjQUpGNlA7MkJBSUU3UCxhQUxZZ0M7Ozs7R0FNMEM7T0FHMUQ4TjtZQUNBQyxpQkFBZWwvQyxHQUFFM0IsR0FBSSxPQXZHbkJzNUMsZUF1R2EzM0MsTUFBRTNCLEdBQW1FOzs7S0F1QmxGMjRDOztLQU9BM047YUFDQXdWLFVBQVFNLE1BQU8sT0FBQSxvQkFSZm5JLFlBUVFtSSxNQUFnRDthQUN4RGhYLFlBQVVNLEdBQUVqdkM7S0FBSSxPQUFBLHNCQVRoQnc5QyxZQVNVdk8sR0FBRWp2QztJQUE4QzthQUUxRDZnRCw0QkFBMEIrRTtLQUM1QixPQUFBLHNDQVpFcEksWUFXMEJvSTtJQUNnQzthQUcxRGhGLGtCQUFnQmdGO0tBQVEsT0FBQSw0QkFmeEJwSSxZQWVnQm9JO0lBQTBEO2FBRTFFOUUsaUNBQWtDN2tDLEtBQUsxVTtLQUN6QyxPQUFBLDJDQWxCRWkyQyxZQWlCa0N2aEMsS0FBSzFVO0lBQzRCO2FBR25FdzVDLHlCQUF1QnZqQztLQUFNLE9BQUEsbUNBckI3QmdnQyxZQXFCdUJoZ0M7SUFBNkQ7YUFDcEZ3akMsY0FBWXhqQztLQUFNLE9BQUEsd0JBdEJsQmdnQyxZQXNCWWhnQztJQUFrRDthQUM5RHlqQyx1QkFBcUJ6akM7S0FBTSxPQUFBLGlDQXZCM0JnZ0MsWUF1QnFCaGdDO0lBQTJEO2FBQ2hGMGpDLGtCQUFnQjFqQztLQUFNLE9BQUEsNEJBeEJ0QmdnQyxZQXdCZ0JoZ0M7SUFBc0Q7YUFDdEUyakMsb0JBQWtCM2pDO0tBQU0sT0FBQSw4QkF6QnhCZ2dDLFlBeUJrQmhnQztJQUF3RDthQUUxRTRqQyxtQkFBaUI1akMsS0FBS2tDLE1BQU1uWTtLQUM5QixPQUFBLDZCQTVCRWkyQyxZQTJCaUJoZ0MsS0FBS2tDLE1BQU1uWTtJQUM0QjthQUd4RDg1QyxxQkFBbUI3akMsS0FBS2pXO0tBQUksT0FBQSwrQkEvQjVCaTJDLFlBK0JtQmhnQyxLQUFLalc7SUFBMEQ7YUFDbEZrdkMsV0FBUzRCO0tBQVEsT0FBQSxxQkFoQ2pCbUYsWUFnQ1NuRjtJQUFtRDthQUM1RHpCLG9CQUFrQnlCO0tBQVEsT0FBQSw4QkFqQzFCbUYsWUFpQ2tCbkY7SUFBNEQ7YUFDOUV4QixlQUFhd0I7S0FBUSxPQUFBLHlCQWxDckJtRixZQWtDYW5GO0lBQXVEO2FBQ3BFcU4saUJBQWV0SDtLQUFVLE9Bakt6QkQsZUE4SEFYLFlBbUNlWTtJQUE2RDthQUM1RXRILGlCQUFldUI7S0FBUSxPQUFBLDJCQXBDdkJtRixZQW9DZW5GO0lBQXlEO2FBRXhFbUksZ0JBQWNuSSxPQUFPMzRCLE1BQU1uWTtLQUM3QixPQUFBLDBCQXZDRWkyQyxZQXNDY25GLE9BQU8zNEIsTUFBTW5ZO0lBQzRCO2FBR3ZEazVDLGtCQUFnQnBJLE9BQU85d0M7S0FBSSxPQUFBLDRCQTFDM0JpMkMsWUEwQ2dCbkYsT0FBTzl3QztJQUF5RDthQUNoRm01QyxXQUFVLy9CO0tBQVEsT0FBQSxxQkEzQ2xCNjhCLFlBMkNVNzhCO0lBQW9EO2FBQzlEZ2dDLGVBQWNoZ0M7S0FBUSxPQUFBLHlCQTVDdEI2OEIsWUE0Q2M3OEI7SUFBd0Q7YUFFdEVwYyxVQUFVc2hELFdBQVU5TixXQUFVdnpDO0tBQ2hDLE9BQUE7Z0NBL0NFZzVDLFlBOENVcUksV0FBVTlOLFdBQVV2ekM7SUFDc0M7YUFHcEVzaEQsYUFBV3hILFNBQVMvMkMsR0FBSSxPQWpJMUJpM0MsV0FpSWFGLFNBQVMvMkMsR0FBMEM7YUFDOURpN0MsV0FBUzM5QyxHQUFHMEMsR0FBSSxPQUFBLHFCQW5EaEJpMkMsWUFtRFMzNEMsR0FBRzBDLEdBQThDO2FBQzFEazdDLGVBQWE1OUMsR0FBRzBDO0tBQUksT0FBQSx5QkFwRHBCaTJDLFlBb0RhMzRDLEdBQUcwQztJQUFrRDthQUVsRTAyQyx1QkFBcUI4SCxPQUFNQztLQUM3QixPQXhNRW5vQyxxQkFpSkEyL0IsWUFzRHFCdUksT0FBTUM7SUFDZ0M7SUExRDNEO1lBaURBemhEO1lBdkNBc3JDO1lBRUFsQjtZQTBDQTZUO1lBQ0FDO1lBckNBN0I7WUFKQUM7WUFNQUM7WUFlQXJLO1lBQ0FHO1lBQ0FDO1lBRUFDO1lBRUEwSjtZQUlBQztZQXJCQU07WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFFQUM7WUFJQUM7WUFZQVg7WUFDQUM7WUFwQ0EwRTtZQTJCQUs7WUFlQUk7WUFJQTdIOzs7UUFRQVQscUJBQ0E1NEM7YUFDQUwsVUFBVTlFLEdBQUV3WixHQUFFczFCO0tBQUksT0FBQSxnQ0FGbEJpUCxZQUVVLzlDLEdBQUV3WixHQUFFczFCO0lBQXNDO1FBQ3BEc0I7YUFDQW9XLFFBQVFOLE1BQU8sT0FBUEEsS0FBVzthQUNuQjdYLFVBQVVydUM7S0FBSSxPQUFBLGdDQUxkKzlDLFlBS1UvOUM7SUFBMkI7YUFDckN5bUQsMEJBQTBCem1EO0tBQUksT0FBQSxpQ0FOOUIrOUMsWUFNMEIvOUM7SUFBMkM7YUFDckUwbUQsZ0JBQWdCMW1EO0tBQUksT0FBQSxpQ0FQcEIrOUMsWUFPZ0IvOUM7SUFBaUM7YUFFakQybUQsK0JBQWtDbnFDLEtBQUsxVTtLQUN6QyxPQUFBLGlDQVZFaTJDLFlBU2tDdmhDLEtBQUsxVTtJQUNXO2FBR2xEOCtDLHVCQUF1QjdvQztLQUFNLE9BQUEsaUNBYjdCZ2dDLFlBYXVCaGdDO0lBQTRDO2FBQ25FdXhCLFlBQVl0cUM7S0FBSSxPQUFBLGlDQWRoQis0QyxZQWNZLzRDO0lBQTZCO2FBQ3pDNmhELHFCQUFxQjdoRDtLQUFJLE9BQUEsaUNBZnpCKzRDLFlBZXFCLzRDO0lBQXNDO2FBQzNEOGhELGdCQUFnQjloRDtLQUFJLE9BQUEsaUNBaEJwQis0QyxZQWdCZ0IvNEM7SUFBaUM7YUFDakQraEQsa0JBQWtCL2hEO0tBQUksT0FBQSxpQ0FqQnRCKzRDLFlBaUJrQi80QztJQUFtQzthQUNyRGdpRCxpQkFBaUJoaUQsR0FBR2liLE1BQU1uWTtLQUFJLE9BQUEsaUNBbEI5QmkyQyxZQWtCaUIvNEMsR0FBR2liLE1BQU1uWTtJQUEyQzthQUNyRW0vQyxtQkFBbUJqaUQsR0FBRzhDO0tBQUksT0FBQSxpQ0FuQjFCaTJDLFlBbUJtQi80QyxHQUFHOEM7SUFBdUM7YUFDN0Q2dUMsU0FBUzMyQztLQUFJLE9BQUEsZ0NBcEJiKzlDLFlBb0JTLzlDO0lBQTBCO2FBQ25DeTJDLGtCQUFrQnoyQztLQUFJLE9BQUEsZ0NBckJ0Qis5QyxZQXFCa0IvOUM7SUFBbUM7YUFDckR3MkMsYUFBYXgyQztLQUFJLE9BQUEsZ0NBdEJqQis5QyxZQXNCYS85QztJQUE4QjthQUMzQzArQyxlQUFlMStDLEdBQUksT0ErWm5CNCtDLG9CQXRiQWIsWUF1QmUvOUMsR0FBc0Q7YUFDckV1MkMsZUFBZXYyQztLQUFJLE9BQUEsaUNBeEJuQis5QyxZQXdCZS85QztJQUFnQzthQUMvQ2tuRCxjQUFjbG5ELEdBQUdpZ0IsTUFBTW5ZO0tBQUksT0FBQSxpQ0F6QjNCaTJDLFlBeUJjLzlDLEdBQUdpZ0IsTUFBTW5ZO0lBQXdDO2FBQy9EcS9DLGdCQUFnQm5uRCxHQUFHOEg7S0FBSSxPQUFBLGlDQTFCdkJpMkMsWUEwQmdCLzlDLEdBQUc4SDtJQUFvQzthQUN2RHMvQyxTQUFVbG1DO0tBQVEsT0FBQSxpQ0EzQmxCNjhCLFlBMkJVNzhCO0lBQW1DO2FBQzdDbW1DLGFBQWNubUM7S0FBUSxPQUFBLGlDQTVCdEI2OEIsWUE0QmM3OEI7SUFBdUM7YUFFckRvbUMsUUFBUWxpRCxHQUFJLE9BQUpBLEVBQUs7YUFDYms3QyxXQUFXdGdEO0tBQUksT0FBQSxpQ0EvQmYrOUMsWUErQlcvOUM7SUFBNEI7YUFDdkNnZixTQUFTaGYsR0FBSSxPQUFBLGlDQUFKQSxHQUFjO2FBQ3ZCNmtCLE9BQU83a0IsR0FBSSxPQUFBLGlDQUFKQSxHQUFZO2FBQ25CK2tCLElBQUkva0IsR0FBR2s0QyxLQUFLekQ7S0FBTyxPQUFBLGlDQWxDbkJzSixZQWtDSS85QyxHQUFHazRDLEtBQUt6RDtJQUFtQzthQUMvQ21CLElBQUk1MUMsR0FBR2s0QyxLQUFLekQ7S0FBTyxPQUFBLGlDQW5DbkJzSixZQW1DSS85QyxHQUFHazRDLEtBQUt6RDtJQUFtQzthQUMvQ2tCLFFBQVEzMUMsR0FBR2s0QyxLQUFLekQ7S0FBTyxPQUFBLGlDQXBDdkJzSixZQW9DUS85QyxHQUFHazRDLEtBQUt6RDtJQUF1QzthQUN2RFgsVUFBVTl6QyxHQUFHazRDLEtBQUt6RDtLQUFPLE9BQUEsaUNBckN6QnNKLFlBcUNVLzlDLEdBQUdrNEMsS0FBS3pEO0lBQXlDO2FBQzNEWixhQUFhN3pDLEdBQUV3WjtLQUFJLE9BQUEsaUNBdENuQnVrQyxZQXNDYS85QyxHQUFFd1o7SUFBZ0M7YUFDL0NvNkIsV0FBVzV6QyxHQUFFd1o7S0FBSSxPQUFBLGlDQXZDakJ1a0MsWUF1Q1cvOUMsR0FBRXdaO0lBQThCO2FBQzNDazhCLE9BQU8xMUMsR0FBRXdaLEdBQUcxUjtLQUFJLE9BQUEsaUNBeENoQmkyQyxZQXdDTy85QyxHQUFFd1osR0FBRzFSO0lBQTZCO2FBQ3pDMnRDLE9BQU96MUMsR0FBRXdaLEdBQUcxUjtLQUFJLE9BQUEsaUNBekNoQmkyQyxZQXlDTy85QyxHQUFFd1osR0FBRzFSO0lBQTZCO2FBQ3pDMGIsU0FBU3hqQixHQUFFd1o7S0FBSSxPQUFBLGlDQTFDZnVrQyxZQTBDUy85QyxHQUFFd1o7SUFBNEI7YUFDdkNpRyxLQUFLemYsR0FBRXdaO0tBQUksT0FBQSxpQ0EzQ1h1a0MsWUEyQ0svOUMsR0FBRXdaO0lBQXdCO2FBQy9CdThCLE9BQU8vMUMsR0FBRXdaO0tBQUksT0FBQSxpQ0E1Q2J1a0MsWUE0Q08vOUMsR0FBRXdaO0lBQTBCO2FBQ25DdUYsSUFBSS9lLEdBQUV3WjtLQUFJLE9BQUEsaUNBN0NWdWtDLFlBNkNJLzlDLEdBQUV3WjtJQUF1Qjs7S0FDN0J3OEI7S0FDQS8yQjtLQUNBaUM7S0FDQW0vQjthQUNBRCxNQUFNcGdELEdBQUV3WixHQUFHMVI7S0FBSSxPQUFBLGlDQWxEZmkyQyxZQWtETS85QyxHQUFFd1osR0FBRzFSO0lBQTRCOztLQUN2Q3NUO0tBQ0ErRjtLQUNBakM7S0FDQUU7S0FDQWlDO2FBQ0E4K0IsTUFBTW5nRCxHQUFFd1osR0FBR3lHLE1BQU1uWTtLQUFJLE9BQUEsaUNBeERyQmkyQyxZQXdETS85QyxHQUFFd1osR0FBR3lHLE1BQU1uWTtJQUFrQzthQUNuRHl0QyxZQUFZdjFDLEdBQUc4SDtLQUFJLE9BQUEsaUNBekRuQmkyQyxZQXlEWS85QyxHQUFHOEg7SUFBZ0M7YUFDL0MrYSxPQUFPN2lCLEdBQUc4SDtLQUFJLE9BQUEsaUNBMURkaTJDLFlBMERPLzlDLEdBQUc4SDtJQUEyQjthQUNyQ2diLFFBQVE5aUIsR0FBRzhIO0tBQUksT0FBQSxpQ0EzRGZpMkMsWUEyRFEvOUMsR0FBRzhIO0lBQTRCO2FBQ3ZDcWEsV0FBV25pQixHQUFHOEg7S0FBSSxPQUFBLGlDQTVEbEJpMkMsWUE0RFcvOUMsR0FBRzhIO0lBQStCO2FBQzdDc2EsWUFBWXBpQixHQUFHOEg7S0FBSSxPQUFBLGlDQTdEbkJpMkMsWUE2RFkvOUMsR0FBRzhIO0lBQWdDO2FBQy9DdXRDLGVBQWVqd0MsR0FBRzBDO0tBQUksT0FBQSxpQ0E5RHRCaTJDLFlBOERlMzRDLEdBQUcwQztJQUFtQzthQUNyRHd0QyxjQUFjbHdDLEdBQUcwQztLQUFJLE9BQUEsaUNBL0RyQmkyQyxZQStEYzM0QyxHQUFHMEM7SUFBa0M7YUFDbkRnYSxjQUFjMWMsR0FBRzBDO0tBQUksT0FBQSxpQ0FoRXJCaTJDLFlBZ0VjMzRDLEdBQUcwQztJQUFrQzthQUNuRCtaLGFBQWF6YyxHQUFHMEM7S0FBSSxPQUFBLGlDQWpFcEJpMkMsWUFpRWEzNEMsR0FBRzBDO0lBQWlDO2FBQ2pEbzRDLGVBQWU5NkM7S0FBSSxPQUFBLGlDQWxFbkIyNEMsWUFrRWUzNEM7SUFBZ0M7YUFDL0M2NkMsZUFBZWpnRCxHQUFFd1osR0FBRXMxQjtLQUFJLE9BQUEsaUNBbkV2QmlQLFlBbUVlLzlDLEdBQUV3WixHQUFFczFCO0lBQW9DO2FBQ3ZEcnpCLE1BQU16YixHQUFFd1osR0FBRXMxQjtLQUFJLE9BQUEsaUNBcEVkaVAsWUFvRU0vOUMsR0FBRXdaLEdBQUVzMUI7SUFBMkI7O0tBQ3JDNEY7S0FDQUQ7S0FDQVI7YUFDQTRDLFNBQVU1M0MsTUFBSzZJLEdBQUUxQztLQUEyQixXQUFBLFdBRDVDNnVDLGFBQ2lCN3VDO0tBQTJCLE9BQUEseUJBQWxDbkcsTUFBSzZJO0lBQXlDO2FBQ3hEeTRDLFVBQVd0aEQsTUFBSzZJLEdBQUUxQztLQUFJO01BQTRDLE9BQUEsV0FGbEU2dUMsYUFFa0I3dUM7TUFBd0IsT0FBQSx1QkFBL0JuRztLQUF1RCxPQUFBLCtCQUFsRDZJO0lBQThEO2FBQzlFZzRDLGVBQWU5L0MsR0FBRXdaLEdBQUcrdEM7S0FBYSxPQUFBLGlDQTFFakN4SixZQTBFZS85QyxHQUFFd1osR0FBRyt0QztJQUF1RDthQUUzRTFILG9CQUFvQjcvQyxHQUFFd1osR0FBRyt0QyxZQUFZdG5DLE1BQU1uWTtLQUM3QyxPQUFBO29DQTdFRWkyQyxZQTRFb0IvOUMsR0FBRXdaLEdBQUcrdEMsWUFBWXRuQyxNQUFNblk7SUFDVzthQUd0RDRaLE1BQU0xaEIsR0FBRXdaLEdBQUcxUjtLQUFJLE9BQUEsaUNBaEZmaTJDLFlBZ0ZNLzlDLEdBQUV3WixHQUFHMVI7SUFBNEI7YUFDdkNpNEMsYUFBYS8vQyxHQUFFd1osR0FBR28rQjtLQUFVLE9BQUEsaUNBakY1Qm1HLFlBaUZhLzlDLEdBQUV3WixHQUFHbytCO0lBQStDOztLQUNqRS8zQjtLQUNBKy9CO0tBQ0E5L0I7S0FDQTYvQjtLQUNBcmdDO0tBQ0ErQztLQUNBaEQ7S0FDQWlEO0tBQ0EvQztLQUNBZ0Q7YUFDQW05QixNQUFNMS9DLEdBQUV3WjtLQUFJLE9BQUEsaUNBNUZadWtDLFlBNEZNLzlDLEdBQUV3WjtJQUF5QjthQUNqQzRHLE9BQVFvbkMsWUFBWUM7S0FBYSxPQUFBO29DQTdGakMxSixZQTZGUXlKLFlBQVlDO0lBQXVEO2FBRTNFaEksU0FBU3I2QyxHQUFHc2lELGFBQWFDO0tBQzNCLE9BQUE7b0NBaEdFNUosWUErRlMzNEMsR0FBR3NpRCxhQUFhQztJQUNxQjthQUc5Q25JLHFCQUFxQnA2QyxHQUFHd2lELEtBQUtDLEtBQUs1bkMsTUFBTW5ZO0tBQzFDLE9BQUEsaUNBcEdFaTJDLFlBbUdxQjM0QyxHQUFHd2lELEtBQUtDLEtBQUs1bkMsTUFBTW5ZO0lBQ1c7YUFHbkR5M0MsZUFBZW42QyxHQUFHd2lELEtBQUtDO0tBQU0sT0FBQSxpQ0F2RzdCOUosWUF1R2UzNEMsR0FBR3dpRCxLQUFLQztJQUE0QzthQUNuRXZJLFlBQVl0L0MsR0FBRXdaLEdBQUVzMUI7S0FBSSxPQUFBLGlDQXhHcEJpUCxZQXdHWS85QyxHQUFFd1osR0FBRXMxQjtJQUFpQztRQUNqRHVRLDRCQUNBRDthQUNBRCxLQUFLbi9DLEdBQUV3WjtLQUFJLE9BQUEsaUNBM0dYdWtDLFlBMkdLLzlDLEdBQUV3WjtJQUF3QjthQUUvQmlMO0tBQWFxakMsT0FBT0MsMEJBQTBCQyx1QkFBc0I1aUQ7S0FDdEUsT0FBQTs7Y0E5R0UyNEM7Y0E2R2ErSjtjQUFPQztjQUEwQkM7Y0FBc0I1aUQ7SUFDVzthQUcvRXlaLGNBQWN6WixHQUFHc0UsU0FBUXUrQyxLQUFJMW5EO0tBQUksT0FBQSxpQ0FqSGpDdzlDLFlBaUhjMzRDLEdBQUdzRSxTQUFRdStDLEtBQUkxbkQ7SUFBOEM7YUFFM0V1ZSx3QkFBd0IxWixHQUFHOGlELFlBQVdEO0tBQ3hDLE9BQUEsaUNBcEhFbEssWUFtSHdCMzRDLEdBQUc4aUQsWUFBV0Q7SUFDYTthQUduRGhKLHVCQUF1Qjc1QyxHQUFHc0UsU0FBU2crQyxhQUFhQztLQUNsRCxPQUFBOztjQXhIRTVKO2NBdUh1QjM0QztjQUFHc0U7Y0FBU2crQztjQUFhQztJQUNxQjthQUdyRTlJLFFBQVF6NUMsR0FBSSxPQTRUWjA1QyxnQkF2YkFmLFlBMkhRMzRDLEdBQWtEO2FBQzFEK2lELFNBQVMvaUQsR0FBRzBDO0tBQUksT0FBQSxnQ0E1SGhCaTJDLFlBNEhTMzRDLEdBQUcwQztJQUE2QjthQUN6Q3NnRCxhQUFhaGpELEdBQUcwQztLQUFJLE9BQUEsZ0NBN0hwQmkyQyxZQTZIYTM0QyxHQUFHMEM7SUFBaUM7YUFDakRzVyxxQkFBcUJveEIsR0FBRWp2QyxHQUFJLE9BalYzQnU5QyxTQW1OQUMsWUE4SHFCdk8sR0FBRWp2QyxHQUEyQzthQUNsRStkLG9CQUFvQmt4QixHQUFFanZDLEdBQUksT0ExVTFCMjlDLFNBMFVvQjFPLEdBQUVqdkMsR0FBK0I7YUFDckRpZSxvQkFBb0JneEIsR0FBRWp2QyxHQUFJLE9BelUxQjg5QyxTQXlNQU4sWUFnSW9Cdk8sR0FBRWp2QyxHQUEyQztJQW5JM0I7O1lBSXRDNEU7WUFDQUw7WUFDQXNyQztZQUNBb1c7WUFDQW5ZO1lBQ0FvWTtZQUNBQztZQUVBQztZQUlBQztZQUNBdFg7WUFDQXVYO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0F0UTtZQUNBRjtZQUNBRDtZQUNBa0k7WUFDQW5JO1lBQ0EyUTtZQUNBQztZQUNBQztZQUNBQztZQTRaQXJJO1lBMVpBc0k7WUFDQWhIO1lBQ0F0aEM7WUFDQTZGO1lBQ0FFO1lBQ0E2d0I7WUFDQUQ7WUFDQTdCO1lBQ0FEO1lBQ0FEO1lBQ0E4QjtZQUNBRDtZQUNBanlCO1lBQ0EvRDtZQUNBczJCO1lBQ0FoM0I7WUFDQWkzQjtZQUNBLzJCO1lBQ0FpQztZQUNBbS9CO1lBQ0FEO1lBQ0FobEM7WUFDQStGO1lBQ0FqQztZQUNBRTtZQUNBaUM7WUFDQTgrQjtZQUNBNUs7WUFDQTF5QjtZQUNBQztZQUNBWDtZQUNBQztZQUNBaXpCO1lBQ0FDO1lBQ0F4ekI7WUFDQUQ7WUFDQXErQjtZQUNBRDtZQUNBeGtDO1lBQ0FpNUI7WUFDQUQ7WUFDQVI7WUFDQTRDO1lBQ0EwSjtZQUNBVDtZQUVBRDtZQUlBbitCO1lBQ0FxK0I7WUFDQWxnQztZQUNBKy9CO1lBQ0E5L0I7WUFDQTYvQjtZQUNBcmdDO1lBQ0ErQztZQUNBaEQ7WUFDQWlEO1lBQ0EvQztZQUNBZ0Q7WUFDQW05QjtZQUNBdC9CO1lBRUFxL0I7WUFJQUQ7WUFJQUQ7WUFDQUQ7WUFDQUQ7WUFDQUQ7WUFDQUQ7WUFFQTE2QjtZQUlBNUY7WUFFQUM7WUFJQW1nQztZQUlBSjtZQUNBc0o7WUFDQUM7WUFDQWhxQztZQUNBRTtZQUNBRTs7Ozs7O0tBOUhBMVo7S0FDQXNyQztLQUNBb1c7S0FDQW5ZO0tBQ0FvWTtLQUNBQztLQUVBQztLQUlBQztLQUNBdFg7S0FDQXVYO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0F0UTtLQUNBRjtLQUNBRDtLQUNBa0k7S0FDQW5JO0tBQ0EyUTtLQUNBQztLQUNBQztLQUNBQztLQUNBdEk7S0FDQXVJO0tBQ0FoSDtLQUNBdGhDO0tBQ0E2RjtLQUNBRTtLQUNBNndCO0tBQ0FEO0tBQ0E3QjtLQUNBRDtLQUNBRDtLQUNBOEI7S0FDQUQ7S0FDQWp5QjtLQUNBL0Q7S0FDQXMyQjtLQUNBaDNCO0tBQ0FpM0I7S0FDQS8yQjtLQUNBaUM7S0FDQW0vQjtLQUNBRDtLQUNBaGxDO0tBQ0ErRjtLQUNBakM7S0FDQUU7S0FDQWlDO0tBQ0E4K0I7S0FDQTVLO0tBQ0ExeUI7S0FDQUM7S0FDQVg7S0FDQUM7S0FDQWl6QjtLQUNBQztLQUNBeHpCO0tBQ0FEO0tBQ0FxK0I7S0FDQUQ7S0FDQXhrQztLQUNBaTVCO0tBQ0FEO0tBQ0FSO0tBQ0E0QztLQUNBMEo7S0FDQVQ7S0FFQUQ7S0FJQW4rQjtLQUNBcStCO0tBQ0FsZ0M7S0FDQSsvQjtLQUNBOS9CO0tBQ0E2L0I7S0FDQXJnQztLQUNBK0M7S0FDQWhEO0tBQ0FpRDtLQUNBL0M7S0FDQWdEO0tBQ0FtOUI7S0FDQXQvQjtLQUVBcS9CO0tBSUFEO0tBSUFEO0tBQ0FEO0tBQ0FEO0tBQ0FEO0tBQ0FEO0tBRUExNkI7S0FJQTVGO0tBRUFDO0tBSUFtZ0M7S0FJQUo7S0FDQXNKO0tBQ0FDO0tBQ0FocUM7S0FDQUU7S0FDQUU7O2FBY0FyWixVQUFVa3pDLFdBQVVqekM7MEI7S0FBSSxPQUFBLHlCQUFkaXpDLGlCQUFVanpDO0lBQXFEOztjQVF2RXdGLFlBQVUwdEMsV0FBVXZ6QztNQUFPLE9BcEo3QkQsZ0JBb0pZd3pDLFdBQVV2ekM7S0FBMkM7S0FEckUsV0FDTTZGOztJQWRSOzs7O1lBcklNd2xDO1lBQ0FvVztZQUNBblk7WUFDQW9ZO1lBQ0FDO1lBRUFDO1lBSUFDO1lBQ0F0WDtZQUNBdVg7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQXRRO1lBQ0FGO1lBQ0FEO1lBQ0FrSTtZQUNBbkk7WUFDQTJRO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0F0STtZQUNBdUk7WUFDQWhIO1lBQ0F0aEM7WUFDQTZGO1lBQ0FFO1lBQ0E2d0I7WUFDQUQ7WUFDQTdCO1lBQ0FEO1lBQ0FEO1lBQ0E4QjtZQUNBRDtZQUNBanlCO1lBQ0EvRDtZQUNBczJCO1lBQ0FoM0I7WUFDQWkzQjtZQUNBLzJCO1lBQ0FpQztZQUNBbS9CO1lBQ0FEO1lBQ0FobEM7WUFDQStGO1lBQ0FqQztZQUNBRTtZQUNBaUM7WUFDQTgrQjtZQUNBNUs7WUFDQTF5QjtZQUNBQztZQUNBWDtZQUNBQztZQUNBaXpCO1lBQ0FDO1lBQ0F4ekI7WUFDQUQ7WUFDQXErQjtZQUNBRDtZQUNBeGtDO1lBQ0FpNUI7WUFDQUQ7WUFDQVI7WUFDQTRDO1lBQ0EwSjtZQUNBVDtZQUVBRDtZQUlBbitCO1lBQ0FxK0I7WUFDQWxnQztZQUNBKy9CO1lBQ0E5L0I7WUFDQTYvQjtZQUNBcmdDO1lBQ0ErQztZQUNBaEQ7WUFDQWlEO1lBQ0EvQztZQUNBZ0Q7WUFDQW05QjtZQUNBdC9CO1lBRUFxL0I7WUFJQUQ7WUFJQUQ7WUFDQUQ7WUFDQUQ7WUFDQUQ7WUFDQUQ7WUFFQTE2QjtZQUlBNUY7WUFFQUM7WUFJQW1nQztZQUlBSjtZQUNBc0o7WUFDQUM7WUFDQWhxQztZQUNBRTtZQUNBRTtZQWNBclo7OztZQXVCRmtqRCxrQkFBbUI3ckMsS0FBSzFVLEdBQUdpMkM7SUFDbkIsSUFBTjNpQyxNQUFNLDJDQURtQjJpQyxZQUFSdmhDLEtBQUsxVTtJQUV2QixHQUFBLFdBdlJEKzRDLGNBc1JFemxDLE1BRUMsT0FGREE7SUFLSSxZQUFBLHFCQU5xQjJpQyxZQU1ZLFdBM1J2QzRFLFNBc1JFdm5DOztLQU91QixPQUFBO1FBRG5CZ1I7SUFBTyxPQUFQQTtHQUN1RTs7O0lBM1AvRXhoQjtJQU9FMDlDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUF4RDtJQUFBeUQ7WUFnUUV2L0MsaUJBQVV3L0MsTUFBS0MsSUFBR0M7SUFBSyxPQUFBLFdBbFZ2QmhLLGdCQWtWVThKLE1BQUtDLElBQUdDO0dBQThCO1lBRWhEOTlDLFlBQVUrOUMsV0FBVTdSLFdBQVVqekM7SUFDaEMsT0FBQTs7YUFEWThrRDthQUFVN1I7NkI7YUFBVWp6QztHQUM4QjtZQUc1RCtZLGVBQWVnc0MsV0FBVUM7SUFDQyxXQUFBLCtCQURYRCxXQUFVQztJQUNDLE9BQUE7R0FBK0M7R0FLM0Q7Ozs7Ozs7O0lBQUEsVUFBQTtJQUFBLFVBQUE7SUFBZCxjQUFjO0lBQWQsTUFBQTtJQUFBdGdELFVBQUE7R0FBYyxTQUFBK3RDLGFBQUE3M0MsR0FBQXdaO0lBQWQsV0FBQTtJQUFBLE9BQUE7YUFBQSwrQkFBQTFQLG9CQUFjOUosT0FBQXdaO0dBQWdDO1lBQTlDcytCLFlBQU01M0MsV0FBSXVaO0lBQVY7S0FBbUJpRDtLQUFBdlc7dUJBQWJqRyxXQUFhaUc7S0FBQXdXO3VCQUFUbEQsV0FBU2lEOzJDQUFBQztHQUEyQjtZQUE5Q283QixhQUFNMzNDLFNBQUlzWixTQUFWaFosS0FBQTRGO0lBQUE7S0FBbUJvVztLQUFBdlc7S0FBQUksbUJBQWJuRyxTQUFOTSxLQUFBNEYsS0FBbUJIO3NCQUFUdVQsU0FBVmhaLEtBQW1CNkYsT0FBQW1XO0dBQTJCO1lBQTlDczdCLFlBQU12M0MsTUFBSW1aLE1BQVZsWixLQUFBQzs7S0FBbUJ3RixnQkFBYjFGLE1BQU5DLEtBQUFDO0tBQW1CK2IsZ0JBQVQ5QyxNQUFWbFosS0FBQUM7ZUFBbUJ3RixJQUFBdVc7O0dBS2pCO0lBREUxVztNQUNGO1lBS0VpeUMsT0FBSzd5QyxHQUFHMEM7SUFBSSxPQUFXO2FBeFczQm9aO2FBd1dTOWI7c0JBQXdCOHlDLEtBQUt6RCxNQUFRLE9BQUUsV0FBcEMzc0MsT0FBcUJvd0MsS0FBS3pELE9BQXFCO0dBQUM7WUFFeER4MEIsS0FBTXpELEtBQUsyN0I7SUFDYjtJQUEwQixPQTdDOUJrUTthQTRDWTdyQyxxQkFDNEIsT0FBQSxXQUR2QjI3QixTQUM4QjtHQUF3Qzs7Ozs7O1NBVGpGbnlDO1NBSUEwdEM7U0F0V0o3dUI7U0F3V0lvekI7U0FFQWg0QjtTQVpKNjNCO1NBQUFDO1NBQUFDO1NBQWNIOzs7Ozs7Ozs7O0lBbk1kaHNDO0lBQ0F3K0M7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFFQUM7SUFJQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQXBvQztJQUNBcW9DO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBRUFDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBRUFDO0lBSUFDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBRUFDO0lBSUFDO0lBRUFDO0lBSUFDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOztZQTRGRXZpRCxZQUFVazhDLFdBQVU3UixXQUFVanpDO0lBQUksT0FBQTtrQkFBeEI4a0QsV0FBVTdSLDJCLGVBQVVqekM7R0FBaUQ7WUFFL0VvckQsaUJBQWVyRyxXQUFVQztJQUNDLFdBQUEsK0JBRFhELFdBQVVDO0lBQ0MsT0FBQTtHQUErQzs7SUFvQnJFOzs7OztLQUFBLFdBQUE7S0FBUjtlQUFRO0tBQVIsT0FBQTtLQUFBdHFELFFBQUE7SUFBUSxTQUFBKzNDLGFBQUF0M0M7S0FBUixXQUFBO0tBQUEsT0FBQSxXQUFBLCtCQUFBVCxrQkFBUVM7SUFBbUM7YUFBM0N1M0MsWUFBSzZCO0tBQUw7TUFBYWo5QjtNQUFBdlc7Z0NBQUFBO01BQUF3Vzt3QkFBUmc5QixXQUFRajlCOzRDQUFBQztJQUE4QjthQUEzQ283QixhQUFLa0MsU0FBTHY1QyxLQUFBNEY7S0FBQTtNQUFhb1c7TUFBQXZXO01BQUFJLDJCQUFiN0YsS0FBQTRGLEtBQWFIO3VCQUFSOHpDLFNBQUx2NUMsS0FBYTZGLE9BQUFtVztJQUE4QjthQUEzQ3M3QixZQUFLcUMsTUFBTDM1QyxLQUFBQzs7TUFBYXdGLHdCQUFiekYsS0FBQUM7TUFBYStiLGdCQUFSMjlCLE1BQUwzNUMsS0FBQUM7Z0JBQWF3RixJQUFBdVc7O0lBS1g7S0FERTFXO09BQ0Y7YUFLRWlaLEtBQUs3WixHQUFHMEM7S0FBSSxPQUFXO2NBN1czQjY2QztjQTZXU3Y5Qzt1QkFBd0I4eUMsS0FBS3pELE1BQVEsT0FBRSxXQUFwQzNzQyxPQUFxQm93QyxLQUFLekQsT0FBcUI7SUFBQzthQUV4RHgwQixLQUFNekQsS0FBSzI3QjtLQUNiO0tBQTBCLE9BM0Y1QmtRO2NBMEZVN3JDLHFCQUM0QixPQUFBLFdBRHZCMjdCLFNBQzhCO0lBQTRCO0lBakJPLE9BQUE7OztjQVE1RW55QztjQUlBeXRDO2NBM1dKcU87Y0E2V0k3aUM7Y0FFQWdCO2NBWko2M0I7Y0FBQUM7Y0FBQUM7Y0FBUUg7Ozs7OztLQWpVVi95QztLQU9Fc3JDO0tBQUEvQjtLQUFBOFo7S0FBQUM7S0FBQTFCO0tBQUFEO0tBQUFFO0tBQUFoUTtLQUFBRjtLQUFBRDtLQUFBRDtLQUFBMlE7S0FBQUM7S0FBQVA7S0FBQXRYO0tBQUF1WDtLQUFBQztLQUFBQztLQUFBQztLQUFBQztLQUFBRztLQUFBQztLQUFBYjtLQUFBOUg7S0FBQUs7S0FBQTNnQzthQTJWRTFVLFFBQVFxZ0QsTUFBS0MsSUFBR0M7S0FBSyxPQUFBLFdBN2FyQmhLLGdCQTZhUThKLE1BQUtDLElBQUdDO0lBQThCO2FBRTlDOWtELFVBQVVrekMsV0FBVWp6QzswQjtLQUN0QixPQUFBLGdDQURZaXpDLGlCQUFVanpDO0lBQzRDOztjQVM5RHdGLFlBQVUwdEMsV0FBVXZ6QztNQUFPLE9BOVdqQ0Qsa0JBOFdnQnd6QyxXQUFVdnpDO0tBQTZDO0tBRHZFLFdBQ002Rjs7O2NBSUFqQixZQUFxQjhtRCxnQkFBZUMsT0FBT3RyRDtNQUM3QyxPQUFBLFdBamJGcTVDLDBCQWdieUJnUyxnQkFBZUMsT0FBT3RyRDtLQUM0QjtLQUZoQixXQUN2RHVFOzs7O01BN0JJbzBDO01BbUNFNzNDO01BQUFHO01BQUFJO01BQUFDO01BQUFUO01BQUFzRDtNQUFBQztNQUFBQztLQUlNOztlQUpOdkQ7ZUFBQUc7ZUFBQUk7ZUFBQUM7ZUFBQVQ7ZUFBQXNEO2VBQUFDO2VBQUFDO2VBbkNGczBDOztJQUVaOzs7O1lBaFZJM047WUFBQS9CO1lBQUE4WjtZQUFBQztZQUFBMUI7WUFBQUQ7WUFBQUU7WUFBQWhRO1lBQUFGO1lBQUFEO1lBQUFEO1lBQUEyUTtZQUFBQztZQUFBUDtZQUFBdFg7WUFBQXVYO1lBQUFDO1lBQUFDO1lBQUFDO1lBQUFDO1lBQUFHO1lBQUFDO1lBQUFiO1lBQUE5SDtZQUFBSztZQUFBM2dDO1lBbEZFa2lDO1lBQUF0aEM7WUFBQTZGO1lBQUErd0I7WUFBQUQ7WUFBQTV3QjtZQUFBK3VCO1lBQUFEO1lBQUFEO1lBQUE4QjtZQUFBRDtZQUFBaDJCO1lBQUErRDtZQUFBdXlCO1lBQUFoM0I7WUFBQWkzQjtZQUFBLzJCO1lBQUFpQztZQUFBbS9CO1lBQUFEO1lBQUFoMEI7WUFBQWpMO1lBQUFqQztZQUFBRTtZQUFBaUM7WUFBQTgrQjtZQUFBNUs7WUFBQTF5QjtZQUFBQztZQUFBWDtZQUFBQztZQUFBaXpCO1lBQUFDO1lBQUF4ekI7WUFBQUQ7WUFBQXErQjtZQUFBRDtZQUFBeGtDO1lBQUF1a0M7WUFBQXZMO1lBQUFSO1lBQUF2eUI7WUFBQXErQjtZQUFBRDtZQUFBRDtZQUFBaGdDO1lBQUErL0I7WUFBQTkvQjtZQUFBNi9CO1lBQUFyZ0M7WUFBQStDO1lBQUFoRDtZQUFBaUQ7WUFBQS9DO1lBQUFnRDtZQUFBbTlCO1lBQUF0L0I7WUFBQXEvQjtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBejZCO1lBQUE1RjtZQUFBQztZQUFBbWdDO1lBSUFwSTtZQUNBMEo7WUFDQUM7WUFDQUM7WUFDQUM7WUFxYUFoM0M7WUFFQXZFOzs7Ozs7OztLQTdWRmlyQztLQUFBL0I7S0FBQThaO0tBQUFDO0tBQUExQjtLQUFBRDtLQUFBRTtLQUFBaFE7S0FBQUY7S0FBQUQ7S0FBQUQ7S0FBQTJRO0tBQUFDO0tBQUFQO0tBQUF0WDtLQUFBdVg7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUc7S0FBQUM7S0FBQWI7S0FBQTlIO0tBQUFLO0tBQUEzZ0M7S0FsRkVraUM7S0FBQXRoQztLQUFBNkY7S0FBQSt3QjtLQUFBRDtLQUFBNXdCO0tBQUErdUI7S0FBQUQ7S0FBQUQ7S0FBQThCO0tBQUFEO0tBQUFoMkI7S0FBQStEO0tBQUF1eUI7S0FBQWgzQjtLQUFBaTNCO0tBQUEvMkI7S0FBQWlDO0tBQUFtL0I7S0FBQUQ7S0FBQWhsQztLQUFBK0Y7S0FBQWpDO0tBQUFFO0tBQUFpQztLQUFBOCtCO0tBQUE1SztLQUFBMXlCO0tBQUFDO0tBQUFYO0tBQUFDO0tBQUFpekI7S0FBQUM7S0FBQXh6QjtLQUFBRDtLQUFBcStCO0tBQUFEO0tBQUF4a0M7S0FBQWk1QjtLQUFBRDtLQUFBUjtLQUFBdnlCO0tBQUFxK0I7S0FBQUQ7S0FBQUQ7S0FBQWhnQztLQUFBKy9CO0tBQUE5L0I7S0FBQTYvQjtLQUFBcmdDO0tBQUErQztLQUFBaEQ7S0FBQWlEO0tBQUEvQztLQUFBZ0Q7S0FBQW05QjtLQUFBdC9CO0tBQUFxL0I7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQUQ7S0FBQW1JO0tBQUE3aUM7S0FBQTVGO0tBQUFDO0tBQUFtZ0M7S0FJQXBJO0tBQ0EwSjtLQUNBamlDO0tBQ0FFO0tBQ0FxZ0M7S0FxYUFuMUM7S0FFQXZFOzs7OztLQVVFTDs7SUE4QlI7O1lBcllJc3JDO1lBQUEvQjtZQUFBOFo7WUFBQUM7WUFBQTFCO1lBQUFEO1lBQUFFO1lBQUFoUTtZQUFBRjtZQUFBRDtZQUFBRDtZQUFBMlE7WUFBQUM7WUFBQVA7WUFBQXRYO1lBQUF1WDtZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBRztZQUFBQztZQUFBYjtZQUFBOUg7WUFBQUs7WUFBQTNnQztZQWxGRWtpQztZQUFBdGhDO1lBQUE2RjtZQUFBK3dCO1lBQUFEO1lBQUE1d0I7WUFBQSt1QjtZQUFBRDtZQUFBRDtZQUFBOEI7WUFBQUQ7WUFBQWgyQjtZQUFBK0Q7WUFBQXV5QjtZQUFBaDNCO1lBQUFpM0I7WUFBQS8yQjtZQUFBaUM7WUFBQW0vQjtZQUFBRDtZQUFBaGxDO1lBQUErRjtZQUFBakM7WUFBQUU7WUFBQWlDO1lBQUE4K0I7WUFBQTVLO1lBQUExeUI7WUFBQUM7WUFBQVg7WUFBQUM7WUFBQWl6QjtZQUFBQztZQUFBeHpCO1lBQUFEO1lBQUFxK0I7WUFBQUQ7WUFBQXhrQztZQUFBaTVCO1lBQUFEO1lBQUFSO1lBQUF2eUI7WUFBQXErQjtZQUFBRDtZQUFBRDtZQUFBaGdDO1lBQUErL0I7WUFBQTkvQjtZQUFBNi9CO1lBQUFyZ0M7WUFBQStDO1lBQUFoRDtZQUFBaUQ7WUFBQS9DO1lBQUFnRDtZQUFBbTlCO1lBQUF0L0I7WUFBQXEvQjtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBbUk7WUFBQTdpQztZQUFBNUY7WUFBQUM7WUFBQW1nQztZQUlBcEk7WUFDQTBKO1lBQ0FqaUM7WUFDQUU7WUFDQXFnQztZQXFhQW4xQztZQUVBdkU7Ozs7O1lBVUVMOzs7Ozs7O0tBdldKc3JDO0tBQUEvQjtLQUFBOFo7S0FBQUM7S0FBQTFCO0tBQUFEO0tBQUFFO0tBQUFoUTtLQUFBRjtLQUFBRDtLQUFBRDtLQUFBMlE7S0FBQUM7S0FBQVA7S0FBQXRYO0tBQUF1WDtLQUFBQztLQUFBQztLQUFBQztLQUFBQztLQUFBRztLQUFBQztLQUFBYjtLQUFBOUg7S0FBQUs7S0FBQTNnQztLQWxGRWtpQztLQUFBdGhDO0tBQUE2RjtLQUFBK3dCO0tBQUFEO0tBQUE1d0I7S0FBQSt1QjtLQUFBRDtLQUFBRDtLQUFBOEI7S0FBQUQ7S0FBQWgyQjtLQUFBK0Q7S0FBQXV5QjtLQUFBaDNCO0tBQUFpM0I7S0FBQS8yQjtLQUFBaUM7S0FBQW0vQjtLQUFBRDtLQUFBaGxDO0tBQUErRjtLQUFBakM7S0FBQUU7S0FBQWlDO0tBQUE4K0I7S0FBQTVLO0tBQUExeUI7S0FBQUM7S0FBQVg7S0FBQUM7S0FBQWl6QjtLQUFBQztLQUFBeHpCO0tBQUFEO0tBQUFxK0I7S0FBQUQ7S0FBQXhrQztLQUFBaTVCO0tBQUFEO0tBQUFSO0tBQUF2eUI7S0FBQXErQjtLQUFBRDtLQUFBRDtLQUFBaGdDO0tBQUErL0I7S0FBQTkvQjtLQUFBNi9CO0tBQUFyZ0M7S0FBQStDO0tBQUFoRDtLQUFBaUQ7S0FBQS9DO0tBQUFnRDtLQUFBbTlCO0tBQUF0L0I7S0FBQXEvQjtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBRDtLQUFBbUk7S0FBQTdpQztLQUFBNUY7S0FBQUM7S0FBQW1nQztLQUlBcEk7S0FDQTBKO0tBQ0FqaUM7S0FDQUU7S0FDQXFnQztLQXFhQW4xQztLQUVBdkU7Ozs7S0FVRUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBbURSOztZQTFaSXNyQztZQUFBL0I7WUFBQThaO1lBQUFDO1lBQUExQjtZQUFBRDtZQUFBRTtZQUFBaFE7WUFBQUY7WUFBQUQ7WUFBQUQ7WUFBQTJRO1lBQUFDO1lBQUFQO1lBQUF0WDtZQUFBdVg7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUc7WUFBQUM7WUFBQWI7WUFBQTlIO1lBQUFLO1lBQUEzZ0M7WUFsRkVraUM7WUFBQXRoQztZQUFBNkY7WUFBQSt3QjtZQUFBRDtZQUFBNXdCO1lBQUErdUI7WUFBQUQ7WUFBQUQ7WUFBQThCO1lBQUFEO1lBQUFoMkI7WUFBQStEO1lBQUF1eUI7WUFBQWgzQjtZQUFBaTNCO1lBQUEvMkI7WUFBQWlDO1lBQUFtL0I7WUFBQUQ7WUFBQWhsQztZQUFBK0Y7WUFBQWpDO1lBQUFFO1lBQUFpQztZQUFBOCtCO1lBQUE1SztZQUFBMXlCO1lBQUFDO1lBQUFYO1lBQUFDO1lBQUFpekI7WUFBQUM7WUFBQXh6QjtZQUFBRDtZQUFBcStCO1lBQUFEO1lBQUF4a0M7WUFBQWk1QjtZQUFBRDtZQUFBUjtZQUFBdnlCO1lBQUFxK0I7WUFBQUQ7WUFBQUQ7WUFBQWhnQztZQUFBKy9CO1lBQUE5L0I7WUFBQTYvQjtZQUFBcmdDO1lBQUErQztZQUFBaEQ7WUFBQWlEO1lBQUEvQztZQUFBZ0Q7WUFBQW05QjtZQUFBdC9CO1lBQUFxL0I7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQUQ7WUFBQW1JO1lBQUE3aUM7WUFBQTVGO1lBQUFDO1lBQUFtZ0M7WUFJQXBJO1lBQ0EwSjtZQUNBamlDO1lBQ0FFO1lBQ0FxZ0M7WUFxYUFuMUM7WUFFQXZFOzs7O1lBVUVMOzs7Ozs7Ozs7OztZQWlFRjZyRCxjQUEyQjVwRCxHQUM3QixzQkFENkJBLE1BRWhCO1lBR1g2cEQsYUFBMEI3cEQsR0FDNUIsc0JBRDRCQSxNQUVoQjtZQUdWOHBELGNBQTJCOXBELEdBQzdCLHNCQUQ2QkEsTUFFaEI7WUFHWCtwRCxhQUEwQi9wRCxHQUM1QixzQkFENEJBLE1BRWhCO1lBR1ZncUQsZUFBOEJocUQsR0FDaEMsc0JBRGdDQSxNQUVoQjtZQXFCZDh4Qyx5QkFFVUM7SSxnQkFHUmtZO0tBRUosT0FBQTtjQXZsQkF4Uyw0QkFrbEJZMUYsU0FBQUEsUUFHUmtZLGFBRWtFOztZQUdwRTlYLHdCQUVVSjtJLGdCQUdSbVk7S0FFSixPQUFBLFdBaG1CQTN5QyxxQkEybEJZdzZCLFFBR1JtWSxZQUVrRDs7WUFHcEQ1WCx3QkFFVVA7SSxnQkFHUm9ZO0tBRUosT0FBQSxXQXptQkExeUMscUJBb21CWXM2QixRQUdSb1ksWUFFa0Q7OztJQUt6Q0M7SUFBQTVZO0lBQUE2WTtJQUFBNVk7SUFBQUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBUVgyWSxXQUFVcHlELE1BQUs2SSxHQUFFMUM7SUFBMkIsV0FBQSwwQkFBM0JBO0lBQTJCLE9BQUEseUJBQWxDbkcsTUFBSzZJO0dBQXlDO1lBQ3hEd3BELFlBQVdyeUQsTUFBSzZJLEdBQUUxQztJQUFJO0tBQTRDLE9BQUEsMEJBQWhEQTtLQUF3QixPQUFBLHVCQUEvQm5HO0lBQXVELE9BQUEsK0JBQWxENkk7R0FBOEQ7WUFJOUV5cEQsdUJBQXNCeFQsWUFBV3ZPLEdBQUVqdkMsR0FBSSxPQTVvQnZDdTlDLFNBNG9Cc0JDLFlBQVd2TyxHQUFFanZDO0dBQTJDO1lBQzlFaXhELHNCQUFvQmhpQixHQUFFanZDLEdBQUksT0Fyb0IxQjI5QyxTQXFvQm9CMU8sR0FBRWp2QyxHQUErQjtZQUNyRGt4RCxzQkFBcUIxVCxZQUFXdk8sR0FBRWp2QyxHQUFJLE9BcG9CdEM4OUMsU0Fvb0JxQk4sWUFBV3ZPLEdBQUVqdkM7R0FBMkM7Ozs7Ozs7OztRQXZzQi9EMEY7UUFBZEM7UUFBQUc7UUFBQUs7UUFBQUQ7UUFBQThDO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUE1RTtRQUFBSztRQVFJaVc7Ozs7UUFnckJPczlCO1FBQUFEO1FBQUFEO1FBQUE0WTtRQUFBN1k7UUFBQTRZO1FBM0VYUjtRQUtBQztRQUtBQztRQUtBQztRQUtBQztRQXVCQWxZO1FBVUFLO1FBVUFHOztTQTJDMEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXhjMUVqSjtLQUNBb1c7S0FDQW5ZO0tBQ0FvWTtLQUNBQztLQUVBQztLQUlBQztLQUNBdFg7S0FDQXVYO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0F0UTtLQUNBRjtLQUNBRDtLQUNBa0k7S0FDQW5JO0tBQ0EyUTtLQUNBQztLQUNBQztLQUNBQztLQUNBdEk7S0FDQXVJO0tBQ0FoSDtLQUNBdGhDO0tBQ0E2RjtLQUNBRTtLQUNBNndCO0tBQ0FEO0tBQ0E3QjtLQUNBRDtLQUNBRDtLQUNBOEI7S0FDQUQ7S0FDQWp5QjtLQUNBL0Q7S0FDQXMyQjtLQUNBaDNCO0tBQ0FpM0I7S0FDQS8yQjtLQUNBaUM7S0FDQW0vQjtLQUNBRDtLQUNBaGxDO0tBQ0ErRjtLQUNBakM7S0FDQUU7S0FDQWlDO0tBQ0E4K0I7S0FDQTVLO0tBQ0ExeUI7S0FDQUM7S0FDQVg7S0FDQUM7S0FDQWl6QjtLQUNBQztLQUNBeHpCO0tBQ0FEO0tBQ0FxK0I7S0FDQUQ7S0FDQXhrQztLQUNBaTVCO0tBQ0FEO0tBQ0FSO0tBQ0E0QztLQUNBMEo7S0FDQVQ7S0FFQUQ7S0FJQW4rQjtLQUNBcStCO0tBQ0FsZ0M7S0FDQSsvQjtLQUNBOS9CO0tBQ0E2L0I7S0FDQXJnQztLQUNBK0M7S0FDQWhEO0tBQ0FpRDtLQUNBL0M7S0FDQWdEO0tBQ0FtOUI7S0FDQXQvQjtLQUVBcS9CO0tBSUFEO0tBSUFEO0tBQ0FEO0tBQ0FEO0tBQ0FEO0tBQ0FEO0tBRUExNkI7S0FJQTVGO0tBRUFDO0tBSUFtZ0M7S0FJQUo7S0FDQXNKO0tBQ0FDO0tBQ0FocUM7S0FDQUU7S0FDQUU7S0FjQXJaOzs7S0FRRUw7O1lBbkpGc3JDO1lBRUEvQjtZQXVIQThaO1lBQ0FDO1lBekdBelI7WUFDQUY7WUFDQUQ7WUFFQUQ7WUFDQTJRO1lBQ0FDO1lBbkJBVDtZQURBRDtZQUdBRTtZQUlBQztZQUNBdFg7WUFDQXVYO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBUUFHO1lBQ0FDO1lBeEJBYjtZQW1CQTlIO1lBTUFLO1lBaUdBM2dDO1lBL0ZBa2lDO1lBQ0F0aEM7WUFDQTZGO1lBRUErd0I7WUFDQUQ7WUFGQTV3QjtZQUdBK3VCO1lBQ0FEO1lBQ0FEO1lBQ0E4QjtZQUNBRDtZQUVBaDJCO1lBREErRDtZQUVBdXlCO1lBQ0FoM0I7WUFDQWkzQjtZQUNBLzJCO1lBQ0FpQztZQUNBbS9CO1lBQ0FEO1lBQ0FobEM7WUFDQStGO1lBQ0FqQztZQUNBRTtZQUNBaUM7WUFDQTgrQjtZQUNBNUs7WUFDQTF5QjtZQUNBQztZQUNBWDtZQUNBQztZQUNBaXpCO1lBQ0FDO1lBQ0F4ekI7WUFDQUQ7WUFDQXErQjtZQUNBRDtZQUNBeGtDO1lBQ0FpNUI7WUFDQUQ7WUFDQVI7WUFTQXZ5QjtZQUNBcStCO1lBUEFEO1lBRUFEO1lBTUFoZ0M7WUFDQSsvQjtZQUNBOS9CO1lBQ0E2L0I7WUFDQXJnQztZQUNBK0M7WUFDQWhEO1lBQ0FpRDtZQUNBL0M7WUFDQWdEO1lBQ0FtOUI7WUFDQXQvQjtZQUVBcS9CO1lBSUFEO1lBSUFEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBQ0FEO1lBN0VBbUk7WUErRUE3aUM7WUFJQTVGO1lBRUFDO1lBSUFtZ0M7WUFJQUo7WUFuREFoSTtZQUNBMEo7WUFzREFqaUM7WUFDQUU7O1lBc0JFMVo7WUFSRks7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJNbUU7Ozs7Ozs7Ozs7Ozs7S0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBaEJ4Qjs7Ozs7S0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFyQmtCOzs7O0tBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcGEvRDA3QztPQTNCQTlDO09BQ0E2QztPQWtCQUU7T0FBQTVSO09BQUE4SDtPQUFBRztPQUFBQztPQW1DQTZPO09BbkNBNU87T0FBQTBKO09BQUFDO09BQUFDO09BQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQThpQkV0QztRQUVBSTtRQUNBdVM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUFGQXpTO1FBSEF1UztRQUNBQztRQUtBRTtRQUNBQztPQTNpQkY1TDtPQVJBRDtPQUFBekU7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FRQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQWpRO09BQUFrUTtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQWlCQXVEO09BakJBdEQ7T0FBQUM7T0FBQUM7T0FBQTMyQjtPQUFBNDJCOzs7T0FBQUM7O09BQUFDO09BQUFudEI7T0FBQW90QjtPQVJBQztPQUFBQztPQVFBaDNCO09BQUFpM0I7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0E1QkFyRjtPQTRCQXA1QjtPQUFBMCtCO09BQUFDO09BQUFDO09BSUZ5QjtPQUtBQztPQVRFekI7T0EwQkE4Qjs7UUF0TGdCLy9DO1FBQWRDO1FBQUFHO1FBQUFLO1FBQUFEO1FBQUE4QztRQUFBQztRQUFBQztRQUFBQztRQUFBNUU7UUFBQUs7UUFtQkl3NEM7UUFFQUM7UUFNQUM7T0FpSU5zRztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBdjRCO09BQUF3NEI7T0FBQXY0QjtPQUFBdzRCO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BN0JBMUc7T0FEQTRCO09BdERBbkM7T0FDQWxnQztPQUNBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQU1Fa2dDO1FBK0NGSztRQWxFRTNnQzs7O1NBaU5BdlM7U0EwTkVtQztTQUVBd2lEO1NBM05Gbkc7U0FFQUU7U0F1SEE0RjtTQUNBQztTQXpHQWxGO1NBQ0FDO1NBQ0FDO1NBRUFFO1NBQ0FDO1NBQ0FDO1NBbkJBZjtTQURBRDtTQUdBRTtTQUlBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQVFBUTtTQUNBQztTQXhCQXBCO1NBbUJBZTtTQU1BTTtTQWlHQTBFO1NBL0ZBeEU7U0FDQUM7U0FDQUM7U0FFQUU7U0FDQUM7U0FGQUY7U0FHQUc7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FFQUU7U0FEQUQ7U0FFQUU7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQXBvQztTQUNBcW9DO1NBQ0FDO1NBQ0FDO1NBU0FLO1NBQ0FDO1NBUEFIO1NBRUFDO1NBTUFHO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBRUFDO1NBSUFDO1NBSUFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBN0VBakU7U0ErRUFrRTtTQUlBQztTQUVBQztTQUlBQztTQUlBQztTQW5EQTdCO1NBQ0FDO1NBc0RBZ0M7U0FDQUM7Ozs7Ozs7OztRQTlNSjNsRDtRQXlRSXVCO1FBSUFnUztRQU5BNVQ7UUFoUUYrOUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUk7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQVI7UUFBQUM7UUFBQUM7UUFBQU87UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQXhEO1FBQUF5RDtRQWxGRXhKO1FBQUF0aEM7UUFBQTZGO1FBQUErd0I7UUFBQUQ7UUFBQTV3QjtRQUFBK3VCO1FBQUFEO1FBQUFEO1FBQUE4QjtRQUFBRDtRQUFBaDJCO1FBQUErRDtRQUFBdXlCO1FBQUFoM0I7UUFBQWkzQjtRQUFBLzJCO1FBQUFpQztRQUFBbS9CO1FBQUFEO1FBQUFoMEI7UUFBQWpMO1FBQUFqQztRQUFBRTtRQUFBaUM7UUFBQTgrQjtRQUFBNUs7UUFBQTF5QjtRQUFBQztRQUFBWDtRQUFBQztRQUFBaXpCO1FBQUFDO1FBQUF4ekI7UUFBQUQ7UUFBQXErQjtRQUFBRDtRQUFBeGtDO1FBQUF1a0M7UUFBQXZMO1FBQUFSO1FBQUF2eUI7UUFBQXErQjtRQUFBRDtRQUFBRDtRQUFBaGdDO1FBQUErL0I7UUFBQTkvQjtRQUFBNi9CO1FBQUFyZ0M7UUFBQStDO1FBQUFoRDtRQUFBaUQ7UUFBQS9DO1FBQUFnRDtRQUFBbTlCO1FBQUF0L0I7UUFBQXEvQjtRQUFBRDtRQUFBRDtRQUFBRDtRQUFBRDtRQUFBRDtRQUFBRDtRQUFBRDtRQUFBejZCO1FBQUE1RjtRQUFBQztRQUFBbWdDO1FBUUF5QjtRQUpBN0o7UUFDQTBKO1FBQ0FDO1FBQ0FDOzs7Ozs7O09BOGpCVy9IO09BQUFEO09BQUFEO09BQUE0WTtPQUFBN1k7T0FBQTRZO09BM0VYUjtPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQXVCQWxZO09BVUFLO09BVUFHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQy9xQkZxWTtJQWlCSkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FqQlk7OztJQUFBOzs7Ozs7SUFBQTs7OztJQUFBLE1BQUE7SUFBQSxVQUFBO0lBQVIsY0FBUTtJQUFSLE1BQUE7SUFBQTd4RCxRQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBQVEsU0FBQW1HLFlBQUFqRztJQUFSLFdBQUE7SUFBQSxPQUFBLFdBQUEsK0JBQUFGLGtCQUFRRTtHQUkwQjtZQUpsQ2tHLFdBQUtoRztJQUFMLDhCQUFBOztLQUFBLElBQUFpRyxlQUFBLE9BQUEsV0FBS2pHLFdBQUxpRztLQUFBLE9BQUE7O0lBQUEsSUFBQUMsaUJBQUEsT0FBQSxXQUFLbEcsV0FBTGtHO0lBQUEsT0FBQTtHQUlrQztZQUpsQ0MsWUFBS2pHLFNBQUxNLEtBQUE0RjtJQUFBO0tBQUEsT0FBQSwrQkFBQTVGLEtBQUE0Rjs7S0FBQSxJQUFBSCxlQUFBSSxRQUFBLCtCQUFBN0YsS0FBQTRGO0tBQUEsT0FBQSxXQUFLbEcsU0FBTE0sS0FBQTZGLE9BQUFKOztJQUFBLElBQUFDLGlCQUFBSSxRQUFBLCtCQUFBOUYsS0FBQTRGO0lBQUEsT0FBQSxXQUFLbEcsU0FBTE0sS0FBQThGLE9BQUFKO0dBSWtDO1lBSmxDbUQsYUFBS2pKO2tCQUFMQztLQUFBLFdBQUtEO0tBQUwsNEIsT0FBQStGLGtCQUFBOUY7SUFJa0M7SUFKbEMsb0JBQUFBLEdBQUEsT0FBQTJGLFdBQUs1RixpQkFBTEMsR0FJa0M7R0FBQTtZQUpsQ2tHLFdBQUtoRyxNQUFMQyxLQUFBQyxTQUFBQztJQUFBO2tFQUFBRDtHQUlrQztZQUpsQytGLGFBQUtqRyxNQUFMQyxLQUFBQztJQUFBLFlBQUEsOEJBQUFELEtBQUFDOztpREFBQUE7OztPQUFBLElBQUFnRyxRQUFBLFdBQUtsRyxNQUFMQyxLQUFBQyxVQUNFLFdBREZnRzs7T0FBQSxJQUFBQyxVQUFBLFdBQUtuRyxNQUFMQyxLQUFBQyxVQUVFLFdBRkZpRztlQUdFOztHQUNnQztZQUpsQzRDLGFBQUt6STtrQkFBTEwsS0FBQUMsU0FBQUs7S0FBQSxPQUFBeUYsV0FBSzFGLGlCQUFMTCxLQUFBQyxTQUFBSztJQUlrQztJQUpsQztxQkFBQU4sS0FBQUM7YUFBQSxPQUFBK0YsYUFBSzNGLGlCQUFMTCxLQUFBQztZQUlrQzs7R0FBQTtZQUpsQzhJLE1BQUF2STtJQUFBLElBQUEsT0FBQXNJLGFBQUF0SSxXQUFBLE9BQUFxSSxhQUFBckk7SUFBQSxXQUFRK0UsWUFBUi9FO0dBSWtDO1lBSmxDd0ksUUFBQXRJLE9BQUFDLE9BQUFDO0lBQUEsR0FBQSwrQkFBQUQsT0FBQUMsUUFBQTtjQUFBRDtlQUFBQyxvQkFHRTtjQUhGQSxVQUVFOzs7Y0FGRkQ7VUFDRTJZLFFBREYzWTtnQkFBQUMsNEJBQUFBO1dBQ0UyWSxRQURGM1k7T0FDWSxPQUFBLFdBRFpGLE9BQ0U0WSxPQUFBQzs7TUFBQTs7U0FDQUMsUUFGRjdZO2VBQUFDLG9CQUVFO2NBRkZBO1VBRUU2WSxRQUZGN1k7TUFFWSxPQUFBLFdBRlpGLE9BRUU4WSxPQUFBQzs7O0lBREE7R0FHZ0M7R0FKbEMsU0FBQXJWLFVBQUtzVixVQUFMdzNDO0lBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7Ozs7OztRQUFBOztPQUFBLE9BQUE7NkNBQUFGLGtCQUFBRTs7TUFBQSxPQUFBOzRDQUFBRixrQkFBQUU7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBRixrQkFBQUU7OztNQUFBLE9BQUE7NENBQUFGLGtCQUFBRTtTQUFBQzs7NkJBQUFBOzs4QkFBQUE7K0JBQUFBO2tDQUFBQTtrQ0FBQUE7Z0NBQUFBOztPQUFBLE9BQUE7NkNBQUFILGtCQUFBRTs7VUFBQUU7U0FBQUEsbUJBQUFBO09BQUE7UUFBQS8vQixXQUFBKy9CO1FBQUE5L0IsV0FBQSxXQUFLNVgsVUFBTDJYO09BQUEsV0FBQUM7O01BQUEsT0FBQTs7ZUFBQTAvQjtlQUFBRztlQUFBRDs7U0FBQUc7UUFBQUEsbUJBQUFBO01BQUE7T0FBQUMsV0FBQUQ7T0FBQUUsV0FBQSxXQUFLNzNDLFVBQUw0M0M7TUFBQSxXQUFBQzs7S0FBQSxPQUFBOztjQUFBUDtjQUFBRztjQUFBRDs7SUFBQSxPQUFBLHdDQUFBRixrQkFBQUU7R0FJa0M7WUFKbEN6c0QsVUFBSytzRDtJQUFMLDhCQUdFOztLQUZBLElBQUFDLHFCQUFBMS9CLFdBQUEsV0FER3kvQixVQUNIQztLQUFBLHdCQUFBMS9COztJQUNBLElBQUEwcEIscUJBQUFpVyxXQUFBLFdBRkdGLFVBRUgvVjtJQUFBLHdCQUFBaVc7R0FFZ0M7WUFFOUJoM0MsSUFBSXhWLEdBQUdrQztJQUNULFVBRE1sQyxnQkFJUzthQUpUQSxVQUVDaUIsTUFGRGpCLE1BRU0sV0FBSyxXQUZSa0MsR0FFRmpCO1FBQ0F3ckQsTUFIRHpzRDtJQUdNLFdBQUssV0FIUmtDLEdBR0Z1cUQ7R0FDaUI7R0FPdEI7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztJQUFBOzs7O0lBQUEsTUFBQTtJQUFBLFVBQUE7SUFBUixjQUFRO0lBQVIsTUFBQTtJQUFBdm9ELFVBQUE7R0FBUSxTQUFBQyxjQUFBL0o7SUFBUixXQUFBO0lBQUEsT0FBQTthQUFBLCtCQUFBOEosb0JBQVE5SjtHQUlzQztZQUo5Q2dLLGFBQUs5SjtJQUFMLDhCQUFBOztLQUFBLElBQUFpRyxlQUFBLE9BQUEsV0FBS2pHLFdBQUxpRztLQUFBLE9BQUE7O0lBQUEsSUFBQUMsaUJBQUEsT0FBQSxXQUFLbEcsV0FBTGtHO0lBQUEsT0FBQTtHQUk4QztZQUo5QzZELGNBQUs3SixTQUFMTSxLQUFBNEY7SUFBQTtLQUFBLE9BQUEsK0JBQUE1RixLQUFBNEY7O0tBQUEsSUFBQUgsZUFBQUksUUFBQSwrQkFBQTdGLEtBQUE0RjtLQUFBLE9BQUEsV0FBS2xHLFNBQUxNLEtBQUE2RixPQUFBSjs7SUFBQSxJQUFBQyxpQkFBQUksUUFBQSwrQkFBQTlGLEtBQUE0RjtJQUFBLE9BQUEsV0FBS2xHLFNBQUxNLEtBQUE4RixPQUFBSjtHQUk4QztZQUo5QzhELGVBQUs1SjtpQkFBTEM7S0FBQSxVQUFLRDtLQUFMLDRCLE9BQUEySixtQkFBQTFKO0lBSThDO0lBSjlDLG9CQUFBQSxHQUFBLE9BQUF5SixhQUFLMUosaUJBQUxDLEdBSThDO0dBQUE7WUFKOUM0SixhQUFLMUosTUFBTEMsS0FBQUMsU0FBQUM7SUFBQTtpRUFBQUQ7R0FJOEM7WUFKOUN5SixhQUFLM0osTUFBTEMsS0FBQUM7SUFBQSxZQUFBLDhCQUFBRCxLQUFBQzs7aURBQUFBOzs7T0FBQSxJQUFBZ0csUUFBQSxXQUFLbEcsTUFBTEMsS0FBQUMsVUFDRSxXQURGZ0c7O09BQUEsSUFBQUMsVUFBQSxXQUFLbkcsTUFBTEMsS0FBQUMsVUFFRSxXQUZGaUc7ZUFHRTs7R0FDNEM7WUFKOUN5RCxlQUFLdEo7aUJBQUxMLEtBQUFDLFNBQUFLO0tBQUEsT0FBQW1KLGFBQUtwSixpQkFBTEwsS0FBQUMsU0FBQUs7SUFJOEM7SUFKOUM7cUJBQUFOLEtBQUFDO2FBQUEsT0FBQXlKLGFBQUtySixpQkFBTEwsS0FBQUM7WUFJOEM7O0dBQUE7WUFKOUMySixRQUFBcEo7SUFBQSxJQUFBLE1BQUFtSixlQUFBbkosV0FBQSxNQUFBZ0osZUFBQWhKO0lBQUEsV0FBUTZJLGNBQVI3STtHQUk4QztZQUp0Q2tkLHFCQUFIazBDO0lBQUw7aUJBR0VDLFVBQUFDLFk7SUFIRjs7aUJBRUVDLFVBQUFDO0s7OztlQUZHSjtlQUVIRztlQUFBQzs7SUFGRjs7aUJBQ0VDLFVBQUFDO0s7OztlQURHTjtlQUNISztlQUFBQzs7SUFERjs7SUFBQSxPQUFBO0dBSThDO1lBSnRDdDBDLG9CQUFIdTBDO2lCQUFMQyxPQUFBeDdCLFVBQUF5N0I7S0FBQSxVQUFBRDtNQUFBLElBQUFFLGFBQUEsc0JBQUFEO2FBQUFDOztjQUFBRjtNQUFBO09BQ1lwM0MsUUFEWm8zQztPQUFBRyxhQUFBLHNCQUFBRjtPQUFBRztTQUFBOztXQUFLTDtXQUNPbjNDO1dBRFo0YjtXQUFBMjdCO2FBQUFDOztLQUFBO01BRVl2M0MsUUFGWm0zQztNQUFBSyxhQUFBLHNCQUFBSjtNQUFBSztRQUFBOztVQUFLUDtVQUVPbDNDO1VBRloyYjtVQUFBNjdCO1lBQUFDO0lBSThDO0lBSjlDLE9BQUE7R0FJOEM7WUFKdEM1MEMsb0JBQUg2MEM7O0tBQUw7OztPQUNZQzs7c0JBQUFBLE8sV0FBQUE7c0RBRFBELGNBQ09DOzs7O1NBQ0FDO2tCQUFBQSxPLFdBQUFBOztxREFGUEYsY0FFT0U7OztJQUVrQztJQUo5QyxPQUFBO0dBSThDO0dBSjlDLFNBQUEzb0QsWUFBSzRvRCxVQUFMQztJQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7Ozs7UUFBQTs7T0FBQSxPQUFBOzZDQUFBOUIsa0JBQUE4Qjs7TUFBQSxPQUFBOzRDQUFBOUIsa0JBQUE4Qjs7ZUFBQUE7O01BQUEsT0FBQTs0Q0FBQTlCLGtCQUFBOEI7OztNQUFBLE9BQUE7NENBQUE5QixrQkFBQThCO1NBQUFDOzs2QkFBQUE7OzhCQUFBQTsrQkFBQUE7a0NBQUFBO2tDQUFBQTtnQ0FBQUE7O09BQUEsT0FBQTs2Q0FBQS9CLGtCQUFBOEI7O1VBQUFFO1NBQUFBLG1CQUFBQTtPQUFBO1FBQUFDLFdBQUFEO1FBQUFFLFdBQUEsV0FBS0wsVUFBTEk7T0FBQSxXQUFBQzs7TUFBQSxPQUFBOztlQUFBbEM7ZUFBQStCO2VBQUFEOztTQUFBSztRQUFBQSxtQkFBQUE7TUFBQTtPQUFBQyxXQUFBRDtPQUFBRSxXQUFBLFdBQUtSLFVBQUxPO01BQUEsV0FBQUM7O0tBQUEsT0FBQTs7Y0FBQXJDO2NBQUErQjtjQUFBRDs7SUFBQSxPQUFBLHdDQUFBOUIsa0JBQUE4QjtHQUk4QztZQUo5QzNvRCxZQUFLbXBEO0lBQUwsOEJBR0U7O0tBRkEsSUFBQUMscUJBQUFDLFdBQUEsV0FER0YsVUFDSEM7S0FBQSx3QkFBQUM7O0lBQ0EsSUFBQUMscUJBQUFDLFdBQUEsV0FGR0osVUFFSEc7SUFBQSx3QkFBQUM7R0FFNEM7WUFFMUNDLGtCQUFtQkMsTUFBSzNoQixXQUFVb1gsSUFBR0M7SUFDdkMsVUFEb0NEO21CQUFHQyxtQ0FBbEJzSzthQUFldks7U0FhN0J3SyxLQWI2QnhLO2VBQUdDO2VBQUFBLFdBV3ZCd0ssS0FYdUJ4SyxPQVdqQixPQUFBLFdBWElyWCxXQWFuQjRoQixJQUZTQztNQUdOLElBRE1DLE9BYnVCekssT0FjakNuYixJQUFJLFdBZGdCOEQsV0FhbkI0aEIsSUFBU0U7TUFFZCxhQURJNWxCLGlCQWRleWxCLGdCQWNmemxCOzs7O1NBRkM2bEIsT0FaNkIzSztlQUFHQztlQUFBQTtPQXNCN0IsSUFETTJLLE9BckJ1QjNLLE9Bc0JqQzRLLE1BQUksV0F0QmdCamlCLFdBWW5CK2hCLE1BU1NDO09BRWQsYUFESUMsbUJBdEJlTixnQkFzQmZNOztVQVZVQyxPQVp1QjdLO01BWWpCLE9BQUEsV0FaSXJYLFdBWW5CK2hCLE1BQVNHOzs7d0JBWktQO0dBNEJiO1lBTUpocUQsVUFBUXFvQyxXQUFVb1gsSUFBR0M7SUFBSyxPQWxDNUJxSyw2QkFrQ1UxaEIsV0FBVW9YLElBQUdDO0dBQW1EO0dBSHRELHlCQUdsQjEvQztZQU1BaUIsVUFBUW9uQyxXQUFVb1gsSUFBR0M7SUFBSyxPQXhDNUJxSyw2QkF3Q1UxaEIsV0FBVW9YLElBQUdDO0dBQW1EO0dBSHRELHlCQUdsQnorQzs7Ozs7Ozs7T0E5Q0V6QjtPQUFSQztPQUFBQztPQUFBRztPQUFBRDtPQUFBRDtPQUFBRztPQUFBQztPQUFROFQ7T0FBQUU7T0FBQUU7O09BQVI1VDtPQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBakJZN0U7U0FBUkM7U0FBQUc7U0FBQUs7U0FBQUQ7U0FBQThDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUE1RTtTQUFBSztTQU1JaVc7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUVrWkFxNEI7O0lBekNFQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBN1ZKdDFCLHFCQUFzQjIvQixZQUFXZ1g7SUFDbkMsT0FBQSw4Q0FEd0JoWCxhQUFXZ1g7R0FDaUM7WUFHbEV2Vyx1QkFBVVQsWUFBV2dYO0lBQ3ZCLE9BQUEsMENBRFloWCxZQUFXZ1g7R0FDZ0Q7WUFnRHJFejJDLG9CQTdDb0IwMkM7SUFBVSxPQUFBLHlDQUFWQTtHQUFnRDtZQUNwRXhVLHNCQUFTd1U7SUFBVSxPQUFBLHlDQUFWQTtHQUFtRDtZQTZDNUR4MkMsb0JBNUNvQnkyQztJQUFVLE9BQUEseUNBQVZBO0dBQWdEO1lBRXBFeFUsc0JBQVUxQyxZQUFXa1g7SUFDdkIsT0FBQSx5Q0FEWWxYLFlBQVdrWDtHQUMrQztZQUl0RW5MLHVCQUFxQi9pRCxHQUFFZ3VEO0lBQ3pCLE9BbEJJMzJDLHFCQWlCbUJyWCxNQUFFZ3VEO0dBQ2dEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFvS3JFRztZQTNKQUMsT0FBUXBYLFlBQVczNEM7SUFBbUIsV0FBQSw2QkFBOUIyNEMsWUFBVzM0QztJQUFtQixPQUFBO0dBQTRDO1lBd09sRmd3RCxZQXZPWXJ1RDtJQUFpQyxXQUFBLDBCQUFqQ0E7SUFBaUMsT0FBQTtHQUFlO1lBRTVEc3VELFlBQWF0WCxZQUFXdVg7a0JBQzJCbHdELEdBQUVRLEdBQUssT0FBQSxnQkFEN0NtNEMsWUFDc0MzNEMsR0FBRVEsR0FBd0I7SUFBdEQsV0FBQSxrQkFEVm00QztJQUNpQyxPQUFBLDZCQUR0QnVYO0dBQ3NEO1lBRzlFQyxnQkFBaUJ4WCxZQUFXWTtrQkFDOEIvNEMsVUFBVVIsR0FDcEUsT0FBQSxnQkFGaUIyNEMsWUFDbUQzNEMsR0FBVlEsR0FDdkM7SUFETSxXQUFBLGtCQURSbTRDO0lBQytCLE9BQUEsNkJBRHBCWTtHQUVSOzs7SUFXcEI2VztJQUFBaFE7SUFBQUQ7SUFBQUQ7SUFBQXBHO0lBQUF1VztJQUFBdFE7SUFBQTVDO0lBQUFtVDtJQUFBN1E7SUFBQThRO0lBQUFDO0lBQUFwUjtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBd1I7SUFBQWpTO0lBQUFQO0lBQUFSO0lBQUFLO0lBQUFEOztJQUFBNlM7SUFBQUM7SUFBQTF3QztJQUFBeStCO0lBQUFLO0lBQUExRztJQUFBdVk7SUFBQUM7SUFBQXpUO0lBQUFUO0lBQUFVO0lBQUE1QjtJQUFBcVY7SUFBQS9wQztJQUFBZ3FDO0lBQUE3VDtJQUFBOFQ7SUFBQXpSO0lBQUExNEI7SUFBQUM7SUFBQW1xQztJQUFBcnFDO0lBQUFEO0lBQUE4MUI7SUFBQUM7SUFLQXdVO0lBNkJGeks7SUFUQS9LO0lBQUE1UjtJQVNBNmM7SUFBQUQ7SUFBQWE7SUFBQVY7SUFBQVM7SUFBQTZKO0lBVEFDO0lBU0FDO0lBQUFDO0lBQUFuSTtJQUFBTjtJQUFBcG9DO0lBQUFvcEM7SUFBQUY7SUFBQUk7SUFBQXdIO0lBQUFsSztJQUFBbUs7SUFBQXBLO0lBQUFtRDtJQUFBa0g7SUFBQUM7SUFBQUM7SUFUQXZkO0lBQUErSDtJQUFBeVY7SUFTQUM7SUFBQUM7SUFUQS9WO0lBQUFDO0lBQUFDO0lBQUE4VjtJQUFBL3FDO0lBQUFtM0I7SUFTQWlLO0lBQUFMO0lBQUFpSztJQUFBaEs7SUFBQUM7SUFBQXBWO0lBQUErVTtJQUFBZTtJQUFBc0o7SUFBQTFJO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUF3STtJQUFBQztJQUFBbEk7SUFBQW1JO0lBQUExSDtJQUFBQztJQUFBQztJQUFBeUg7WUFUQTdSLFVBUlU3K0MsR0FBSSxPQUF5Qyw2QkFBN0NBLE1BQThEO09BaUJ4RTgrQyw4QkFaRi82QztZQXNCRXBCLHFCQUFZc2dELElBQUdDO0lBQUssT0FBQSxXQVZwQmdFLGtCQVVZakUsSUFBR0M7R0FBeUI7OztJQXlCeEN4TDtJQUNBVjtJQXJCRTZMO0lBQUE4RDtJQUFBaDRCO0lBQUFnaUM7SUFBQTlPO0lBQUFEO0lBQUFEO0lBQUFpUDtJQUFBdk87SUFBQXdPO0lBQUFDO0lBQUF0UDtJQUFBRDtJQU9Bd1A7WUFFQUMsY0FBYWhhLFlBQVd1WDtJQUMxQixPQUFvQixXQVZsQjFMLFdBU2E3TCxZQTNFYnNYLFlBMkVhdFgsWUFBV3VYO0dBQzZCO1lBR3JEMEMsa0JBQWlCamEsWUFBV1k7SUFDOUIsT0FBb0I7YUFkbEJpTCxXQWFpQjdMLFlBM0VqQndYLGdCQTJFaUJ4WCxZQUFXWTtHQUNnQztPQUk5RHNaLDBCQUNBQztZQUdBQyxjQUFZcHhELEdBQUV1dUQsTUFBTyxPQWJuQnlDLGNBYVVoeEQsTUFBRXV1RCxNQUFzRTtZQUVwRjhDLGtCQUFnQnJ4RCxHQUFFNDNDO0lBQ3BCLE9BWklxWixrQkFXY2p4RCxNQUFFNDNDO0dBQ2tEOztRQTJCbEVaO2FBQ0F5SSxRQUFRTixNQUFPLE9BQUEsV0FyRGYwRCxXQW9EQTdMLFlBQ1FtSSxNQUErQjthQUN2Q08sMEJBQTBCTjtLQUFRLE9BQUEsV0F0RGxDd0MsNkJBb0RBNUssWUFFMEJvSTtJQUFtRDthQUU3RVEsK0JBQWtDbnFDLEtBQUsxVTtLQUN6QyxPQUFBLFdBekRFOGdELGtDQW9EQTdLLFlBSWtDdmhDLEtBQUsxVTtJQUNXO2FBR2xENCtDLGdCQUFnQlA7S0FBUSxPQUFBLFdBNUR4QnVDLG1CQW9EQTNLLFlBUWdCb0k7SUFBeUM7cURBSXpEL1Y7YUFDQS9CLFVBQVVncUIsR0FBSSxPQUFBLFdBakVkOVAsYUFvREF4SyxZQWFVc2EsR0FBMkI7YUFDckNDLFdBQVdyaEIsR0FBSSxPQUFBLFdBbEVmNGdCLGNBb0RBOVosWUFjVzlHLEdBQTRCO2FBQ3ZDcDJCLFFBQVFvMkIsR0FBSSxPQUFBLFdBbkVaMmdCLFdBb0RBN1osWUFlUTlHLEdBQXlCO2FBQ2pDM0gsWUFBWXRxQyxHQUFJLE9BQUEsV0FwRWhCb2tELGVBb0RBckwsWUFnQlkvNEMsR0FBNkI7YUFDekNxd0QsWUFBWS9pQixHQUFJLE9BNURoQnlsQixjQTJDQWhhLFlBaUJZekwsR0FBNkI7YUFDekNpakIsZ0JBQWdCampCLEdBQUksT0F6RHBCMGxCLGtCQXVDQWphLFlBa0JnQnpMLEdBQWlDO2FBQ2pEaW1CLFNBQVN2NEQsR0FBSSxPQUFBLFdBdkViMjNELFlBb0RBNVosWUFtQlMvOUMsR0FBMEI7YUFDbkN3NEQsa0JBQWtCQztLQUFLLE9BQUEsV0F4RXZCZixxQkFvREEzWixZQW9Ca0IwYTtJQUFxQzthQUN2RHI5QyxJQUFJaFcsR0FBRzBDLEdBQUksT0FBQSxXQXpFWDR0QixPQW9EQXFvQixZQXFCSTM0QyxHQUFHMEMsR0FBd0I7YUFDL0JxYSxXQUFXL2MsR0FBRzBDO0tBQUksT0FBQSxXQTFFbEI0bEQsY0FvREEzUCxZQXNCVzM0QyxHQUFHMEM7SUFBK0I7YUFFN0NoRCxVQUFVTyxXQUFVTjtLQUN0QixPQXhCRXloRCxRQXdCTSw2QkF6Qk56SSxZQXdCVTE0QyxXQUFVTjtJQUNvQztRQUd4RHF3RDthQUNBNVcsdUJBQXFCdGdDO0tBQU0sT0FqTDNCRSxxQkFvSkEyL0IsWUE2QnFCNy9CO0lBQTBDO0lBckMvRDtZQWdDQXBaO1lBWkFzckM7WUFDQS9CO1lBQ0FpcUI7WUFDQXozQztZQUNBeXVCO1lBR0FpcEI7WUFYQTdSO1lBTkFEO1lBRUFFO1lBZ0JBNlI7WUFDQXA5QztZQUNBK0c7WUFyQkFxa0M7WUFnQkE2TztZQUNBRTtZQVVBSDtZQUNBNVc7OztRQUlBVDthQUVBN08sWUFBVW1wQixHQUFJLE9BQUEsc0JBRmR0YSxZQUVVc2EsR0FBZ0M7YUFDMUN4WCxhQUFXejdDLEdBQUksT0FBQSx1QkFIZjI0QyxZQUdXMzRDLEdBQWlDO2FBQzVDMDhDLFNBQU8xOEMsR0FBSSxPQUFBLG1CQUFKQSxHQUFpQjthQUN4Qnk4QyxXQUFTejhDLEdBQUksT0FBQSxxQkFBSkEsR0FBbUI7YUFDNUJ5d0QsV0FBU3p3RCxHQUFJLE9BQUEscUJBQUpBLEdBQW1CO2FBQzVCaS9DLFVBQVFqL0MsR0FBSSxPQUFBLG9CQUFKQSxHQUFrQjthQUMxQmsvQyxjQUFZbC9DLEdBQUksT0FBQSx3QkFBSkEsR0FBc0I7YUFDbENtL0MsVUFBUW4vQyxHQUFJLE9BQUEsb0JBQUpBLEdBQWtCO2FBQzFCby9DLGNBQVlwL0MsR0FBSSxPQUFBLHdCQUFKQSxHQUFzQjthQUNsQ3d3RCxTQUFPeHdELEdBQUksT0FBQSxtQkFBSkEsR0FBaUI7YUFDeEJ1d0QsYUFBV3Z3RCxHQUFJLE9BQUEsdUJBQUpBLEdBQXFCO2FBQ2hDK21CLFVBQVEvbUIsR0FBSSxPQUFBLG9CQUFKQSxHQUFrQjthQUMxQjh3RCxXQUFTOXdELEdBQUksT0FBQSxxQkFBSkEsR0FBbUI7YUFDNUIybUIsT0FBSzNtQixHQUFHMEMsR0FBSSxPQUFBLGlCQUFQMUMsR0FBRzBDLEdBQWtCO2FBQzFCKzZDLFFBQU03aUQsR0FBRXdaLEdBQUcxUixHQUFJLE9BQUEsa0JBaEJmaTJDLFlBZ0JNLzlDLEdBQUV3WixHQUFHMVIsR0FBaUM7YUFDNUNva0IsU0FBTzltQixHQUFHMEMsR0FBSSxPQUFBLG1CQUFQMUMsR0FBRzBDLEdBQW9CO2FBQzlCbWtCLFVBQVE3bUIsR0FBRzBDLEdBQUksT0FBQSxvQkFBUDFDLEdBQUcwQyxHQUFxQjthQUNoQzY4QyxRQUFNdi9DLEdBQUcwQyxHQUFJLE9BQUEsa0JBQVAxQyxHQUFHMEMsR0FBbUI7YUFDNUJzdUQsTUFBSXJ2RCxHQUFFM0IsR0FBRzBDLEdBQUksT0FBQSxnQkFBVGYsR0FBRTNCLEdBQUcwQyxHQUFtQjthQUM1Qnc2QyxPQUFLbDlDLEdBQUcwQyxHQUFJLE9BQUEsaUJBQVAxQyxHQUFHMEMsR0FBa0I7YUFDMUJ5NkMsV0FBU245QyxHQUFHMEMsR0FBSSxPQUFBLHFCQUFQMUMsR0FBRzBDLEdBQXNCO2FBQ2xDcXVELFdBQVMvd0QsR0FBRzBDLEdBQUksT0FBQSxxQkFBUDFDLEdBQUcwQyxHQUFzQjthQUNsQ2trQixPQUFLNW1CLEdBQUc2YSxNQUFNblksR0FBSSxPQUFBLGlCQUFiMUMsR0FBRzZhLE1BQU1uWSxHQUF3QjthQUN0Q203QyxhQUFXNzlDLEdBQUc2YSxNQUFNblk7S0FBSSxPQUFBLHVCQUFiMUMsR0FBRzZhLE1BQU1uWTtJQUE4QjthQUNsRG83QyxhQUFXOTlDLEdBQUc2YSxNQUFNblk7S0FBSSxPQUFBLHVCQUFiMUMsR0FBRzZhLE1BQU1uWTtJQUE4QjthQUNsRHFYLFlBQVkvWixHQUFHNmEsTUFBTW5ZO0tBQUksT0FBQSw4QkFIekJra0IsUUFHZS9MLE1BQU1uWSxHQUFUMUM7SUFBbUQ7YUFDL0RnbkIsTUFBSWhuQixHQUFHMEMsR0FBSSxPQUFBLGdCQTVCWGkyQyxZQTRCSTM0QyxHQUFHMEMsR0FBNkI7YUFDcEN1N0MsU0FBT2orQyxHQUFHMEMsR0FBSSxPQUFBLG1CQTdCZGkyQyxZQTZCTzM0QyxHQUFHMEMsR0FBZ0M7YUFDMUN5N0MsYUFBV24rQyxHQUFHMEM7S0FBSSxPQUFBLHVCQTlCbEJpMkMsWUE4QlczNEMsR0FBRzBDO0lBQW9DO2FBQ2xEODdDLGVBQWF4K0MsR0FBRzBDO0tBQUksT0FBQSx5QkEvQnBCaTJDLFlBK0JhMzRDLEdBQUcwQztJQUFzQzthQUN0RDI2QyxNQUFJcjlDLEdBQUVwRixHQUFJLE9BQUEsZ0JBaENWKzlDLFlBZ0NJMzRDLEdBQUVwRixHQUE0QjthQUNsQytoRCxNQUFJMzhDLEdBQUVwRixHQUFJLE9BQUEsZ0JBakNWKzlDLFlBaUNJMzRDLEdBQUVwRixHQUE0QjthQUNsQ3dpRCxTQUFPcDlDLEdBQUVwRixHQUFJLE9BQUEsbUJBbENiKzlDLFlBa0NPMzRDLEdBQUVwRixHQUErQjthQUN4Q2kyRCxRQUFNak0sSUFBR0MsSUFBSyxPQUFBLGtCQW5DZGxNLFlBbUNNaU0sSUFBR0MsSUFBaUM7YUFDMUMrTCxRQUFNaE0sSUFBR0MsSUFBSyxPQUFBLGtCQXBDZGxNLFlBb0NNaU0sSUFBR0MsSUFBaUM7YUFDMUN4TSxPQUFLdU0sSUFBR0MsSUFBSyxPQUFBLGlCQXJDYmxNLFlBcUNLaU0sSUFBR0MsSUFBZ0M7YUFDeEM5RixpQkFBZTZGLElBQUdDO0tBQUssT0FBQSwyQkF0Q3ZCbE0sWUFzQ2VpTSxJQUFHQztJQUEwQzthQUM1RG5HLGlCQUFla0csSUFBR0M7S0FBSyxPQUFBLDJCQXZDdkJsTSxZQXVDZWlNLElBQUdDO0lBQTBDO2FBQzVENWtDLFFBQU0ya0MsSUFBR0MsSUFBSyxPQUFBLGtCQXhDZGxNLFlBd0NNaU0sSUFBR0MsSUFBaUM7YUFDMUM4TCxZQUFVM3dELEdBQUdzekQ7S0FBTSxPQUFBLHNCQXpDbkIzYSxZQXlDVTM0QyxHQUFHc3pEO0lBQXVDO2FBQ3BENUMsZUFBYTlMLElBQUdDO0tBQUssT0FBQSx5QkExQ3JCbE0sWUEwQ2FpTSxJQUFHQztJQUF3QzthQUN4RHpRLFVBQVF2QyxHQUFJLE9BQUEsb0JBM0NaOEcsWUEyQ1E5RyxHQUE4QjthQUN0Q3NLLGNBQVl2OEMsR0FBSSxPQUFBLHdCQTVDaEIrNEMsWUE0Q1kvNEMsR0FBa0M7YUFDOUMreUQsY0FBWXpsQixHQUFJLE9BcE1oQitpQixZQXVKQXRYLFlBNkNZekwsR0FBa0M7YUFDOUMwbEIsa0JBQWdCMWxCLEdBQUksT0FqTXBCaWpCLGdCQW1KQXhYLFlBOENnQnpMLEdBQXNDO2FBQ3REMGtCLFdBQVNoM0QsR0FBSSxPQUFBLHFCQS9DYis5QyxZQStDUy85QyxHQUErQjthQUN4Q29oRCw0QkFBMEJwaEQ7S0FBSSxPQUFBLHNDQWhEOUIrOUMsWUFnRDBCLzlDO0lBQWdEO2FBRTFFcWhELGlDQUFrQzdrQyxLQUFLMVU7S0FDekMsT0FBQSwyQ0FuREVpMkMsWUFrRGtDdmhDLEtBQUsxVTtJQUNnQjthQUd2RHE1QyxrQkFBZ0JuaEQ7S0FBSSxPQUFBLDRCQXREcEIrOUMsWUFzRGdCLzlDO0lBQXNDO2FBQ3REdzJELGFBQVd2ZixHQUFJLE9BQUEsdUJBdkRmOEcsWUF1RFc5RyxHQUFpQzthQUM1Q2tnQixvQkFBa0JzQjtLQUFLLE9BQUEsOEJBeER2QjFhLFlBd0RrQjBhO0lBQTBDO2FBQzVEL0MsV0FBU3R3RCxHQUFHdXpEO0tBQVEsT0FBQSxxQkF6RHBCNWEsWUF5RFMzNEMsR0FBR3V6RDtJQUEwQzthQUN0RDlULFFBQU16L0MsR0FBRXBGLEdBQUksT0FBQSxrQkExRForOUMsWUEwRE0zNEMsR0FBRXBGLEdBQThCO2FBQ3RDbWxELE1BQUkvL0MsR0FBRThXLEdBQUksT0FBQSxnQkFBTjlXLEdBQUU4VyxHQUFnQjthQUN0QnU1QyxlQUFhcndELEdBQUU4VztLQUFJLE9BQUEseUJBNURuQjZoQyxZQTREYTM0QyxHQUFFOFc7SUFBcUM7YUFDcERvckMsUUFBUWxpRCxHQUFJLE9BQUpBLEVBQUs7YUFDYm9oRCxRQUFRcGhELEdBQUksT0FBSkEsRUFBSzthQUVia2dELGNBQWF3QyxPQUFPOFEscUJBQXFCQyxrQkFBaUJ6ekQ7S0FDNUQsT0FBQTs7Y0FqRUUyNEM7Y0FnRWErSjtjQUFPOFE7Y0FBcUJDO2NBQWlCenpEO0lBQ2dCO2FBRzFFbWdELGdCQUFjbmdELEdBQUdzRSxTQUFRdStDLEtBQUkxbkQ7S0FBSSxPQUFBLDBCQXBFakN3OUMsWUFvRWMzNEMsR0FBR3NFLFNBQVF1K0MsS0FBSTFuRDtJQUFtRDthQUVoRmlsRCwwQkFBd0JwZ0QsR0FBRzhpRCxZQUFXRDtLQUN4QyxPQUFBO3VDQXZFRWxLLFlBc0V3QjM0QyxHQUFHOGlELFlBQVdEO0lBQ2tCO2FBR3hEdU47S0FBbUIxTixPQUFPOFEscUJBQXFCQyxrQkFBaUJDLEtBQUUxekQ7S0FDcEUsT0FBQTs7Y0EzRUUyNEM7Y0EwRW1CK0o7Y0FBTzhRO2NBQXFCQztjQUFpQkM7Y0FBRTF6RDtJQUNpQjthQUluRmt4RCxTQUFPbHhELEdBQUcwQyxHQUFJLE9BQUEsV0F6T2RxdEQsT0EwSkFwWCxZQStFTzM0QyxJQUFHMEMsR0FBZ0M7YUFHeENndkQsWUFBVTF4RCxHQUFHc3pEO0tBQU0sT0FBQSxxQkFsRnJCM2EsWUFrRlkzNEMsR0FBR3N6RDtJQUE2QzthQUMxRDd5QyxRQUFNbWtDLElBQUdDLElBQUssT0FBQSxxQkFuRmhCbE0sWUFtRlFpTSxJQUFHQyxJQUF1QztJQUZ2QyxrQkFDVDZNLGFBQ0FqeEM7YUFHRnpILHFCQUFxQkY7S0FBTSxPQXZRM0JzZ0MsdUJBaUxBVCxZQXNGcUI3L0I7SUFBNkM7YUFDbEVJLG9CQUFvQkosS0FBTSxPQW5RMUJzaUMsc0JBbVFvQnRpQyxLQUFpQzthQUNyRE0sb0JBQW9CTjtLQUFNLE9BalExQnVpQyxzQkF5S0ExQyxZQXdGb0I3L0I7SUFBNkM7SUF6RjNCOztZQUV0Q2czQztZQUNBaG1CO1lBQ0EyUjtZQUNBaUI7WUFDQUQ7WUFDQWdVO1lBQ0F4UjtZQUNBQztZQUNBQztZQUNBQztZQUNBb1I7WUFDQUQ7WUFDQXhwQztZQUNBK3BDO1lBQ0FucUM7WUFDQTgyQjtZQUNBMzJCO1lBQ0FEO1lBQ0EwNEI7WUFDQXlSO1lBQ0E5VDtZQUNBQztZQUNBNFQ7WUFDQW5xQztZQUNBaTNCO1lBQ0FDO1lBQ0EvakM7WUFDQWlOO1lBQ0FpM0I7WUFDQUU7WUFDQUs7WUFDQW5CO1lBQ0FWO1lBQ0FTO1lBQ0F5VDtZQUNBRDtZQUNBdlk7WUFDQTBHO1lBQ0FMO1lBQ0F6K0I7WUFDQTB3QztZQUNBRDtZQUNBdGM7WUFDQStIO1lBQ0F3VztZQUNBQztZQUNBaEI7WUFDQTVWO1lBRUFDO1lBSUFGO1lBQ0FxVjtZQUNBVztZQUNBekI7WUFDQTdRO1lBQ0FNO1lBQ0FzUTtZQUNBbk87WUFDQWQ7WUFFQWxCO1lBSUFDO1lBRUFDO1lBSUFnUTtZQUlBSjtZQUNBa0I7O1lBT0FsNEM7WUFDQUU7WUFDQUU7Ozs7OztLQXZGQTR4QjtLQUNBL0I7S0FDQWlTO0tBQ0F6N0I7S0FDQTdGO0tBQ0ErNUM7S0FDQWw1QztLQUNBKy9CO0tBQ0E5L0I7S0FDQTYvQjtLQUNBN0o7S0FDQUQ7S0FDQWwyQjtLQUNBQztLQUNBWDtLQUNBbWhDO0tBQ0EvZ0M7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQStEO0tBQ0E5RDtLQUNBUjtLQUNBRTtLQUNBaUM7S0FDQWxDO0tBQ0EvRDtLQUNBeUg7S0FDQVY7S0FDQU47S0FDQTlDO0tBQ0E2MkI7S0FDQUc7S0FDQWlqQjtLQUNBQztLQUNBMWI7S0FDQXVDO0tBQ0FHO0tBQ0F4a0M7S0FDQXk5QztLQUNBQztLQUNBdDRDO0tBQ0F5dUI7S0FDQStsQjtLQUNBRTtLQUNBZ0Q7S0FDQTlSO0tBRUFFO0tBSUFEO0tBQ0E0UjtLQUNBRTtLQUNBWTtLQUNBMVo7S0FDQUw7S0FDQWdhO0tBQ0EvUjtLQUNBZDtLQUVBL2hDO0tBSUE1RjtLQUVBQztLQUlBdzZDO0tBSUFsRTtLQUNBRDs7S0FPQS8yQztLQUNBRTtLQUNBRTthQWVBOVUsUUFBUXNnRCxJQUFHQyxJQUFLLE9BaEVoQmhLLGVBZ0VRK0osSUFBR0MsSUFBeUI7YUFDcENuL0MsWUFBVTFGOzBCO0tBQUksT0FBQSxvQ0FBSkE7SUFBZ0Q7O2NBUXhETixVQUFVQztNQUNaLE9BQUEsOENBRFlBO0tBQ3dEO0tBRnhFLFdBQ01EOztJQWhCUjs7O1lBL0ZNc3JDO1lBQ0EvQjtZQUNBaVM7WUFDQXo3QjtZQUNBN0Y7WUFDQSs1QztZQUNBbDVDO1lBQ0ErL0I7WUFDQTkvQjtZQUNBNi9CO1lBQ0E3SjtZQUNBRDtZQUNBbDJCO1lBQ0FDO1lBQ0FYO1lBQ0FtaEM7WUFDQS9nQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBK0Q7WUFDQTlEO1lBQ0FSO1lBQ0FFO1lBQ0FpQztZQUNBbEM7WUFDQS9EO1lBQ0F5SDtZQUNBVjtZQUNBTjtZQUNBOUM7WUFDQTYyQjtZQUNBRztZQUNBaWpCO1lBQ0FDO1lBQ0ExYjtZQUNBdUM7WUFDQUc7WUFDQXhrQztZQUNBeTlDO1lBQ0FDO1lBQ0F0NEM7WUFDQXl1QjtZQUNBK2xCO1lBQ0FFO1lBQ0FnRDtZQUNBOVI7WUFFQUU7WUFJQUQ7WUFDQTRSO1lBQ0FFO1lBQ0FZO1lBQ0ExWjtZQUNBTDtZQUNBZ2E7WUFDQS9SO1lBQ0FkO1lBRUEvaEM7WUFJQTVGO1lBRUFDO1lBSUF3NkM7WUFJQWxFO1lBQ0FEOztZQU9BLzJDO1lBQ0FFO1lBQ0FFO1lBZUE5VTtZQUNBb0I7OztZQXlCRnU5QyxrQkFBbUI3ckMsS0FBSzFVLEdBQUdpMkM7SUFDbkI7S0FBTmg1QixNQUFNLFdBdk5ONmpDLGtDQXNOeUI3SyxZQUFSdmhDLEtBQUsxVTtJQUV2QixHQUFBLFdBdk9EK2pELGNBc09FOW1DLE1BRUMsT0FGREE7aUJBTWlENkcsS0FBSTFOO0tBQ2xELE9BQUcsZ0JBUm1CNi9CLFlBT3dCbnlCLEtBQUkxTjtlQUU3QztlQUNBLGdCQVZpQjYvQixZQU93Qm55QixLQUFJMU47SUFHakI7SUFIcEMsT0FBQTthQTdOQTByQzthQXNOeUI3TDthQU96QixXQTVPRm9QLFFBc09FcG9DLEtBTWdCLGtCQVBTZzVCO0dBVWE7OztJQTlMMUNqNUM7SUFHRXVsRDtJQUFBRTtJQUFBZ1A7SUFBQUM7SUFBQTVPO0lBQUE2TztJQUFBaFA7SUFBQUQ7SUFBQUU7SUFBQWdQO0lBQUF6TTtJQUFBME07SUFBQXJQO0lBQUFzUDtJQUFBQztJQUFBQztJQUFBeko7WUF1TUU5bEQsaUJBQVV5L0MsSUFBR0M7SUFBSyxPQUFBLFdBN1JsQm5HLGtCQTZSVWtHLElBQUdDO0dBQXlCO1lBQ3RDOTlDLFlBQVUrOUMsV0FBVTlrRDtJQUFJLE9BQUEsV0F4UTVCMEYsYUF3UWNvL0MsMkIsY0FBVTlrRDtHQUF1QztZQUUzRCtZLGVBQWU0N0M7SUFDVyxVQUFBLDBCQURYQTtJQUNXLE9BQUE7R0FBaUM7R0FLbkQ7Ozs7SUFBQSxVQUFBO0lBQVIsY0FBUTtJQUFSLE1BQUE7SUFBQWo2RCxRQUFBO0dBQVEsU0FBQSszQyxhQUFBNzNDO0lBQVIsVUFBQTtJQUFBLE9BQUEsV0FBQSwrQkFBQUYsaUJBQVFFO0dBQTJCO1lBQW5DODNDLFlBQUs1M0MsVyxPQUFBQTtZQUFMNjNDLGFBQUszM0MsUyxPQUFBQTtZQUFMNDNDLFlBQUt2M0MsTSxPQUFBQTtHQUtIO0lBREV1RjtNQUNGO1lBS0U2bUQsT0FBS3puRCxHQUFHMEM7SUFBSSxPQUFRLFdBaFR4QmlrQixRQWdUUzNtQixZQUFvQjh5QyxLQUFPLE9BQUEsV0FBeEJwd0MsR0FBaUJvd0MsS0FBWTtHQUFHO1lBRXhDajRCLEtBQU16RCxLQUFLMjdCO0lBQ2I7SUFBMEIsT0E1QzlCa1E7YUEyQ1k3ckMscUJBQzRCLE9BQUEsV0FEdkIyN0IsU0FDOEI7R0FBd0M7Ozs7OztTQVRqRm55QztTQUlBMHRDO1NBOVNKb087U0FnVEkrSztTQUVBNXNDO1NBWko2M0I7U0FBQUM7U0FBQUM7U0FBUUg7Ozs7Ozs7Ozs7SUEvSlJtaUI7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFFQUM7SUFJQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQTNSO0lBQ0E0UjtJQUVBQztJQUlBQztJQUVBQztJQUlBQztJQUlBQztJQUNBQzs7SUFPQXZNO0lBQ0FqQjtJQUNBQztZQStGRXZpRCxZQUFVaWtDLGFBQVk3c0M7SUFBSSxPQUFBLHNCQUFoQjZzQyw2QixjQUFZN3NDO0dBQThDO1lBRXBFd0YsWUFBVW16RCxhQUFZaDVEO0lBQ3hCLE9BQUE7c0RBRFlnNUQsYUFBWWg1RDtHQUNxRDtZQUczRXlyRCxpQkFBZXdOO0lBQXNDLFVBQUEsMEJBQXRDQTtJQUFzQyxPQUFBO0dBQTZCOztJQVl0Rjs7S0FBQSxjQUFLO0tBQUwsTUFBQTtLQUFBbCtELFFBQUE7S0FBQSxNQUFBO0tBQUsrM0MsZUFBTCxXQUFBLCtCQUFBLzNDO0tBQUFnNEM7S0FBQUM7S0FBQUM7S0FJSWh5QztPQUNGO2FBS0VpWixLQUFLN1osR0FBRzBDO0tBQUksT0FBUSxXQXZUeEJtd0MsUUF1VFM3eUMsWUFBb0I4eUMsS0FBTyxPQUFBLFdBQXhCcHdDLEdBQWlCb3dDLEtBQVk7SUFBRzthQUV4Q2o0QixLQUFNekQsS0FBSzI3QjtLQUNiO0tBQTBCLE9BckY1QmtRO2NBb0ZVN3JDLHFCQUM0QixPQUFBLFdBRHZCMjdCLFNBQzhCO0lBQTRCO0lBZk0sT0FBQTs7O2NBTTNFbnlDO2NBSUF5dEM7Y0FyVEpzWTtjQXVUSTlzQztjQUVBZ0I7Y0FaSjYzQjtjQUFBQztjQUFBQztjQUFLSDs7Ozs7O0tBNVBQL3lDO0tBR0VzckM7S0FBQS9CO0tBQUFpcUI7S0FBQXozQztLQUFBeXVCO0tBQUFpcEI7S0FBQTdSO0tBQUFEO0tBQUFFO0tBQUE2UjtLQUFBcDlDO0tBQUErRztLQUFBcWtDO0tBQUE2TztLQUFBRTtLQUFBSDtLQUFBaDNDO2FBMFJFMVUsUUFBUXNnRCxJQUFHQyxJQUFLLE9BQUEsV0FoWGhCbkcsa0JBZ1hRa0csSUFBR0MsSUFBeUI7YUFDcEM5a0QsVUFBVUM7eUI7S0FBSSxPQUFBLFdBM1ZsQjBGLDBCQTJWYzFGO0lBQTJDOztjQVFuRHdGLFlBQVU3RixNQUFPLE9BdFN2QkQsa0JBc1NnQkMsTUFBbUM7S0FEbkQsV0FDTTZGOzs7Y0FJQWpCLFlBQVkrbUQsT0FBTXRyRDtNQUFJLE9BQUEsV0F4VDFCcTVDLDBCQXdUZ0JpUyxPQUFNdHJEO0tBQTZEO2NBRS9Fd0UsS0FBS3hFO01BRUwsVUFKQXVFLFlBSWEsaUNBRlJ2RTtNQUVMLE9BQUE7S0FBaUQ7S0FMSyxXQUN0RHVFLGFBRUFDOzs7O01BNUJJbTBDO01BbUNFNzNDO01BQUFHO01BQUFJO01BQUFDO01BQUFUO01BQUFzRDtNQUFBQztNQUFBQztLQUlNOztlQUpOdkQ7ZUFBQUc7ZUFBQUk7ZUFBQUM7ZUFBQVQ7ZUFBQXNEO2VBQUFDO2VBQUFDO2VBbkNGczBDOztJQUVaOzs7O1lBL1FJM047WUFBQS9CO1lBQUFpcUI7WUFBQXozQztZQUFBeXVCO1lBQUFpcEI7WUFBQTdSO1lBQUFEO1lBQUFFO1lBQUE2UjtZQUFBcDlDO1lBQUErRztZQUFBcWtDO1lBQUE2TztZQUFBRTtZQUFBSDtZQUFBaDNDO1lBdEZFMGpDO1lBQUFEO1lBQUE5MUI7WUFBQUM7WUFBQXFxQztZQUFBbnFDO1lBQUFEO1lBQUEwNEI7WUFBQXlSO1lBQUE5VDtZQUFBNlQ7WUFBQWhxQztZQUFBK3BDO1lBQUFyVjtZQUFBNEI7WUFBQVY7WUFBQVM7WUFBQXlUO1lBQUFEO1lBQUF2WTtZQUFBMEc7WUFBQUw7WUFBQXorQjtZQUFBMHdDO1lBQUFEOztZQUFBN1M7WUFBQUM7WUFBQUw7WUFBQVE7WUFBQU87WUFBQWlTO1lBQUF4UjtZQUFBQztZQUFBQztZQUFBQztZQUFBb1I7WUFBQUQ7WUFBQTlRO1lBQUE2UTtZQUFBblQ7WUFBQTRDO1lBQUFzUTtZQUFBdlc7WUFBQW9HO1lBQUFDO1lBQUFDO1lBQUFnUTtZQUtBYztZQUNBaDRDO1lBQ0FFO1lBeVdBOVU7WUFDQXZFOzs7Ozs7OztLQTNSRmlyQztLQUFBL0I7S0FBQWlxQjtLQUFBejNDO0tBQUF5dUI7S0FBQWlwQjtLQUFBN1I7S0FBQUQ7S0FBQUU7S0FBQTZSO0tBQUFwOUM7S0FBQStHO0tBQUFxa0M7S0FBQTZPO0tBQUFFO0tBQUFIO0tBQUFoM0M7S0F0RkV5RztLQUFBN0Y7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUU7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQTBnQztLQUFBdmhDO0tBQUE2MkI7S0FBQUc7S0FBQWlqQjtLQUFBQztLQUFBMWI7S0FBQXVDO0tBQUFHO0tBQUF4a0M7S0FBQXk5QztLQUFBQzs7S0FBQS81QztLQUFBaUM7S0FBQSsrQjtLQUFBdjlCO0tBQUFoQjtLQUFBazNDO0tBQUFsNUM7S0FBQSsvQjtLQUFBOS9CO0tBQUE2L0I7S0FBQTdKO0tBQUFEO0tBQUE2SjtLQUFBMFo7S0FBQTUxQztLQUFBNjdCO0tBQUFnYTtLQUFBL1I7S0FBQTdpQztLQUFBNUY7S0FBQUM7S0FBQXc2QztLQUtBbkU7S0FDQTcyQztLQUNBRTtLQXlXQTlVO0tBQ0F2RTs7Ozs7S0FRRUw7SUFpQ1I7O1lBcFVJc3JDO1lBQUEvQjtZQUFBaXFCO1lBQUF6M0M7WUFBQXl1QjtZQUFBaXBCO1lBQUE3UjtZQUFBRDtZQUFBRTtZQUFBNlI7WUFBQXA5QztZQUFBK0c7WUFBQXFrQztZQUFBNk87WUFBQUU7WUFBQUg7WUFBQWgzQztZQXRGRXlHO1lBQUE3RjtZQUFBQztZQUFBQztZQUFBQztZQUFBRTtZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBMGdDO1lBQUF2aEM7WUFBQTYyQjtZQUFBRztZQUFBaWpCO1lBQUFDO1lBQUExYjtZQUFBdUM7WUFBQUc7WUFBQXhrQztZQUFBeTlDO1lBQUFDOztZQUFBLzVDO1lBQUFpQztZQUFBKytCO1lBQUF2OUI7WUFBQWhCO1lBQUFrM0M7WUFBQWw1QztZQUFBKy9CO1lBQUE5L0I7WUFBQTYvQjtZQUFBN0o7WUFBQUQ7WUFBQTZKO1lBQUEwWjtZQUFBNTFDO1lBQUE2N0I7WUFBQWdhO1lBQUEvUjtZQUFBN2lDO1lBQUE1RjtZQUFBQztZQUFBdzZDO1lBS0FuRTtZQUNBNzJDO1lBQ0FFO1lBeVdBOVU7WUFDQXZFOzs7OztZQVFFTDs7Ozs7OztLQW5TSnNyQztLQUFBL0I7S0FBQWlxQjtLQUFBejNDO0tBQUF5dUI7S0FBQWlwQjtLQUFBN1I7S0FBQUQ7S0FBQUU7S0FBQTZSO0tBQUFwOUM7S0FBQStHO0tBQUFxa0M7S0FBQTZPO0tBQUFFO0tBQUFIO0tBQUFoM0M7S0F0RkV5RztLQUFBN0Y7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUU7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQTBnQztLQUFBdmhDO0tBQUE2MkI7S0FBQUc7S0FBQWlqQjtLQUFBQztLQUFBMWI7S0FBQXVDO0tBQUFHO0tBQUF4a0M7S0FBQXk5QztLQUFBQzs7S0FBQS81QztLQUFBaUM7S0FBQSsrQjtLQUFBdjlCO0tBQUFoQjtLQUFBazNDO0tBQUFsNUM7S0FBQSsvQjtLQUFBOS9CO0tBQUE2L0I7S0FBQTdKO0tBQUFEO0tBQUE2SjtLQUFBMFo7S0FBQTUxQztLQUFBNjdCO0tBQUFnYTtLQUFBL1I7S0FBQTdpQztLQUFBNUY7S0FBQUM7S0FBQXc2QztLQUtBbkU7S0FDQTcyQztLQUNBRTtLQXlXQTlVO0tBQ0F2RTs7OztLQVFFTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFpRFI7O1lBcFZJc3JDO1lBQUEvQjtZQUFBaXFCO1lBQUF6M0M7WUFBQXl1QjtZQUFBaXBCO1lBQUE3UjtZQUFBRDtZQUFBRTtZQUFBNlI7WUFBQXA5QztZQUFBK0c7WUFBQXFrQztZQUFBNk87WUFBQUU7WUFBQUg7WUFBQWgzQztZQXRGRXlHO1lBQUE3RjtZQUFBQztZQUFBQztZQUFBQztZQUFBRTtZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBMGdDO1lBQUF2aEM7WUFBQTYyQjtZQUFBRztZQUFBaWpCO1lBQUFDO1lBQUExYjtZQUFBdUM7WUFBQUc7WUFBQXhrQztZQUFBeTlDO1lBQUFDOztZQUFBLzVDO1lBQUFpQztZQUFBKytCO1lBQUF2OUI7WUFBQWhCO1lBQUFrM0M7WUFBQWw1QztZQUFBKy9CO1lBQUE5L0I7WUFBQTYvQjtZQUFBN0o7WUFBQUQ7WUFBQTZKO1lBQUEwWjtZQUFBNTFDO1lBQUE2N0I7WUFBQWdhO1lBQUEvUjtZQUFBN2lDO1lBQUE1RjtZQUFBQztZQUFBdzZDO1lBS0FuRTtZQUNBNzJDO1lBQ0FFO1lBeVdBOVU7WUFDQXZFOzs7O1lBUUVMOzs7Ozs7Ozs7OztZQStERjZyRCxjQUEyQjVwRCxHQUM3QixzQkFENkJBLE1BRWhCO1lBR1g2cEQsYUFBMEI3cEQsR0FDNUIsc0JBRDRCQSxNQUVoQjtZQUdWOHBELGNBQTJCOXBELEdBQzdCLHNCQUQ2QkEsTUFFaEI7WUFHWCtwRCxhQUEwQi9wRCxHQUM1QixzQkFENEJBLE1BRWhCO1lBR1ZncUQsZUFBOEJocUQsR0FDaEMsc0JBRGdDQSxNQUVoQjtZQXFCZDh4Qyx5QkFFVW9sQjtJQUlpQixPQXZnQjdCblUsMkJBbWdCWW1VLFNBQUFBOztZQU9WL2tCLHdCQUVVK2tCLEtBVlIsT0E5ZEYzL0Msb0JBd2VVMi9DO1lBT1Y1a0Isd0JBRVU0a0IsS0FWUixPQXRlRnovQyxvQkFnZlV5L0M7O0lBU0NDO0lBQUEvTTtJQUFBNVk7SUFBQTZZO0lBQUE1WTtJQUFBQztJQUFBQzs7Ozs7Ozs7O1FBQUFBO1FBQUFEO1FBQUFEO1FBQUE0WTtRQUFBN1k7UUFBQTRZO1FBQUErTTtRQXhFWHZOO1FBS0FDO1FBS0FDO1FBS0FDO1FBS0FDO1FBdUJBbFk7UUFTQUs7UUFTQUc7O1NBNkIwRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTNZMUVqSjtLQUNBL0I7S0FDQWlTO0tBQ0F6N0I7S0FDQTdGO0tBQ0ErNUM7S0FDQWw1QztLQUNBKy9CO0tBQ0E5L0I7S0FDQTYvQjtLQUNBN0o7S0FDQUQ7S0FDQWwyQjtLQUNBQztLQUNBWDtLQUNBbWhDO0tBQ0EvZ0M7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQStEO0tBQ0E5RDtLQUNBUjtLQUNBRTtLQUNBaUM7S0FDQWxDO0tBQ0EvRDtLQUNBeUg7S0FDQVY7S0FDQU47S0FDQTlDO0tBQ0E2MkI7S0FDQUc7S0FDQWlqQjtLQUNBQztLQUNBMWI7S0FDQXVDO0tBQ0FHO0tBQ0F4a0M7S0FDQXk5QztLQUNBQztLQUNBdDRDO0tBQ0F5dUI7S0FDQStsQjtLQUNBRTtLQUNBZ0Q7S0FDQTlSO0tBRUFFO0tBSUFEO0tBQ0E0UjtLQUNBRTtLQUNBWTtLQUNBMVo7S0FDQUw7S0FDQWdhO0tBQ0EvUjtLQUNBZDtLQUVBL2hDO0tBSUE1RjtLQUVBQztLQUlBdzZDO0tBSUFsRTtLQUNBRDs7S0FPQS8yQztLQUNBRTtLQUNBRTtLQWVBOVU7S0FDQXZFOzs7S0FRRUw7O1lBVEY0RTtZQW5HQW1iO1lBQ0E3RjtZQVVBQztZQVNBQztZQUdBQztZQVZBRTtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUVBQztZQVZBQztZQUNBQztZQVhBMGdDO1lBNkJBdmhDO1lBQ0E2MkI7WUFDQUc7WUFDQWlqQjtZQUNBQztZQUNBMWI7WUFDQXVDO1lBQ0FHO1lBQ0F4a0M7WUFDQXk5QztZQUNBQzs7WUFqQkEvNUM7WUFDQWlDO1lBVkErK0I7WUFhQXY5QjtZQUVBaEI7WUF6QkFrM0M7WUFDQWw1QztZQUNBKy9CO1lBQ0E5L0I7WUFDQTYvQjtZQUNBN0o7WUFDQUQ7WUE4Q0E2SjtZQURBMFo7WUFuQ0E1MUM7WUFxQ0E2N0I7WUFDQWdhO1lBQ0EvUjtZQUdBN2lDO1lBSUE1RjtZQUVBQztZQUlBdzZDO1lBS0FuRTtZQVFBNzJDO1lBQ0FFO1lBdkZBNHhCO1lBQ0EvQjtZQXFEQWlxQjtZQVpBejNDO1lBQ0F5dUI7WUFHQWlwQjtZQU9BN1I7WUFOQUQ7WUFFQUU7WUFNQTZSO1lBNUJBcDlDO1lBRUErRztZQWdDQXFrQztZQWpCQTZPO1lBQ0FFO1lBZ0NBSDtZQVFBaDNDOztZQTBCRXRaO1lBUkZLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFrTW1FOzs7Ozs7Ozs7Ozs7O0tBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFoQnhCOzs7OztLQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBaEJrQjs7OztLQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FwVy9EdUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FBaEVFeXJEO1FBbEJBM1U7UUFHQUM7Ozs7Ozs7Ozs7Ozs7O1FBa0JBNFU7UUFJQUU7UUFpT0FIO1FBL1BBNVc7O1FBNEZBOEo7UUFBQUM7UUFBQXNQO1FBQUFEO1FBQUF4TztRQUFBdU87UUFBQWpQO1FBQUFDO1FBQUFDO1FBQUE4TztRQUFBaGlDO1FBQUFnNEI7UUFBQTlEO1FBU0FtTztRQUlBQztRQU5BRjtRQXZHQTE1QztPQWlGRnl0QztPQW9DQTlOO09BN0NBK0M7T0FBQTVSO09BU0E2YztPQUFBRDtPQUFBYTtPQUFBVjtPQUFBUztPQUFBNko7T0FUQUM7T0FTQUM7T0FBQUM7T0FBQW5JO09BQUFOO09BbUNBeFA7T0FuQ0E1NEI7T0FBQW9wQztPQUFBRjtPQUFBSTtPQUFBd0g7T0FBQWxLO09BQUFtSztPQUFBcEs7T0FBQW1EO09BQUFrSDtPQUFBQztPQUFBQzs7T0FUQXZkO09BQUErSDtPQUFBeVY7T0E4Q0FtQjtPQUVBQztPQXZDQW5CO09BQUFDO09BQUFyUjtPQVRBRDtPQUFBekU7T0FBQUM7T0FBQUM7T0FBQThWO09BQUEvcUM7T0FBQW0zQjtPQVNBaUs7T0FBQUw7T0FBQWlLO09BQUFoSztPQUFBQztPQUFBcFY7T0FBQStVO09BQUFlO09BQUFzSjtPQUFBMUk7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQXdJO09BQUFDO09BQUFsSTtPQUFBbUk7T0FBQTFIO09BQUFDO09BQUFDOzs7Ozs7Ozs7Ozs7OztPQUFBeUg7T0FpQ0FRO09BQ0FDO09BbEdBcE87T0FvQ0V4ckM7T0FDQUU7OztTQXdURTVUO1NBRkFvRDtTQU1Bd2lEO1NBekxGMko7U0FDQUM7U0FVQVU7U0FTQVM7U0FHQUc7U0FWQVY7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FFQUU7U0FWQVY7U0FDQUM7U0FYQVg7U0E2QkE2QjtTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQztTQUNBQzs7U0FqQkFqQjtTQUNBQztTQVZBVjtTQWFBYTtTQUVBRTtTQXpCQXpCO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBOENBMEM7U0FEQUQ7U0FuQ0EvQjtTQXFDQWlDO1NBQ0FDO1NBQ0EzUjtTQUdBNlI7U0FJQUM7U0FFQUM7U0FJQUM7U0FLQUU7U0FRQXhOO1NBQ0FDO1NBdkZBeUo7U0FDQUM7U0FxREFpRDtTQVpBUjtTQUNBQztTQUdBRztTQU9BRztTQU5BRjtTQUVBQztTQU1BRztTQTVCQXhCO1NBRUFFO1NBZ0NBMkI7U0FqQkFaO1NBQ0FDO1NBZ0NBZ0I7U0FRQXRNOzs7Ozs7Ozs7UUFpRUFobkQ7UUExTUp6RjtRQTJNSXFIO1FBRUFnUztRQWhTQTJqQztRQUFBRDtRQUFBOTFCO1FBQUFDO1FBQUFxcUM7UUFBQW5xQztRQUFBRDtRQUFBMDRCO1FBQUF5UjtRQUFBOVQ7UUFBQTZUO1FBQUFocUM7UUFBQStwQztRQUFBclY7UUFBQTRCO1FBQUFWO1FBQUFTO1FBQUF5VDtRQUFBRDtRQUFBdlk7UUFBQTBHO1FBQUFMO1FBQUF6K0I7UUFBQTB3QztRQUFBRDs7UUFBQTdTO1FBQUFDO1FBQUFMO1FBQUFRO1FBQUFPO1FBQUFpUztRQUFBeFI7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQW9SO1FBQUFEO1FBQUE5UTtRQUFBNlE7UUFBQW5UO1FBQUE0QztRQUFBc1E7UUFBQXZXO1FBQUFvRztRQUFBQztRQUFBQztRQUFBZ1E7UUFLQWM7UUFDQWg0QztRQUNBRTtRQStFRjZyQztRQUFBRTtRQUFBZ1A7UUFBQUM7UUFBQTVPO1FBQUE2TztRQUFBaFA7UUFBQUQ7UUFBQUU7UUFBQWdQO1FBQUF6TTtRQUFBME07UUFBQXJQO1FBQUFzUDtRQUFBQztRQUFBQztRQUFBeko7Ozs7Ozs7T0EwYWEzWDtPQUFBRDtPQUFBRDtPQUFBNFk7T0FBQTdZO09BQUE0WTtPQUFBK007T0F4RVh2TjtPQUtBQztPQUtBQztPQUtBQztPQUtBQztPQXVCQWxZO09BU0FLO09BU0FHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthQy9pQkF4ekMsVUFBVVQ7S0FBd0IsVUFBQSxpQkFBeEJBO0tBQXdCLE9BQUE7SUFBZTthQUVqRCs0RCxlQUFnQnZXLEtBQUtDLEtBQUl6aUQ7S0FDM0IsT0FBQSwyQkFIRVMsV0FFZ0IraEQsS0FBS0MsV0FBSXppRDtJQUN5QzthQUdsRWc1RCxnQkFBaUJ4VyxLQUFJeGlELEdBQUksT0FKekIrNEQsZUFJaUJ2VyxRQUFJeGlELEdBQXdDO2FBQzdEaTVELGdCQUFpQnhXLEtBQUl6aUQsR0FBSSxPQUx6Qis0RCxrQkFLaUJ0VyxLQUFJemlELEdBQXdDO0lBWDVCLFdBVWpDZzVELGlCQUNBQyxpQkFMQUY7OztJQW1CWTs7S0F6QlRDO0tBQUFDO0tBQUFGO0tBeUJIRztLQUNBQzthQUNBQyxrQkFBa0JwNUQ7S0FBSSxPQUFBLFdBM0JuQmc1RCxpQkF5QkhFLFdBRWtCbDVEO0lBQW9DO2FBQ3REcTVELHNCQUFzQnI1RDtLQUFJLE9BQUEsV0E1QnZCZzVELGlCQTBCSEcsV0FFc0JuNUQ7SUFBb0M7YUFDMURzNUQsa0JBQWtCdDVEO0tBQUksT0FBQSxXQTdCbkJpNUQsaUJBeUJIQyxXQUlrQmw1RDtJQUFvQzthQUN0RHU1RCxzQkFBc0J2NUQ7S0FBSSxPQUFBLFdBOUJ2Qmk1RCxpQkEwQkhFLFdBSXNCbjVEO0lBQW9DO0lBWGhFOztZQW5CU2c1RDtZQUFBQztZQUFBRjs7O1lBMkJISztZQUNBQztZQUNBQztZQUNBQzs7OztLQWdCTTVnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVaLGlDQUZZQTs7O0lBK0NrRTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBZDFFNTRDOzt1Q0FBQUE7S0EvRUtpNUQ7S0FBQUM7S0FBQUY7S0E2RnFFOzs7O0lBVjlFOzs7Ozs7Ozs7Ozs7Ozs7OztZQW5GU0M7WUFBQUM7WUFBQUY7Ozs7Ozs7S0FtR0xoNUQ7OztJQUUyQix1Q0FGM0JBOzs7SUFxQjBFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FiMUVBOzt1Q0FBQUE7S0EzR0tpNUQ7S0FBQUM7S0FBQUY7S0F3SHFFOzs7O0lBVks7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBOUcxRUM7WUFBQUM7WUFBQUY7Ozs7Ozs7S0E4SExyNUQ7S0FBQUs7OztJQUNtRCxpQ0FEbkRMLFdBQUFLOzs7SUFzQjBFOztLQWYxRUE7S0FXTXVFO3dCQUFBQSxTQVhOdkU7S0FySUtpNUQ7S0FBQUM7S0FBQUY7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBb0pxRTs7OztJQVg5RTs7Ozs7Ozs7Ozs7O1lBeklTQztZQUFBQztZQUFBRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQXlOTHI1RCxrQkFBQUs7YUFFSXVFLFFBQVFvdkQsS0FBRTF6RDtLQUFLLElBQTBCLE1BQUEsaUJBQS9CQSxJQUFlLE1BQUEsaUJBQWpCMHpEO0tBQWlDLE9BQUE7SUFBZ0I7SUFIekQsZ0JBR0FwdkQsU0FGSjVFLFdBQUFLOzs7Ozs7Ozs7Ozs7O0lBd0IyQzs7R0FoQmpDLElBQUEsa0JBREU7Ozs7Ozs7O0tBaE9QaTVEO0tBQUFDO0tBQUFGO0tBMkJISztLQUNBQztLQUNBQztLQUNBQzs7Ozs7Ozs7Ozs7OztZQTlCR1A7WUFBQUM7WUFBQUY7WUEyQkhLO1lBQ0FDO1lBQ0FDO1lBQ0FDOzs7Ozs7O0lBMkN3RTtLQVYxRTc1RDtLQUFBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VDQUFBQTtLQS9ES2k1RDtLQUFBQztLQUFBRjtLQXlFcUU7Ozs7Ozs7Ozs7Ozt5Q0FWMUVyNUQsV0FBQUs7d0NBQUFMLFdBQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7WUEvREtpNUQ7WUFBQUM7WUFBQUY7Ozs7Ozs7Ozs7SUF5RCtCO0tBRnBDajREO0tBQUFHO0tBQUFJO0tBQUFDO0tBQUFUO0tBQUFzRDtLQUFBQztLQUFBQztLQUFBQztLQUFBNUU7S0FBQUs7OztLQUVvQzs7O1VBRnBDZTtVQUFBRztVQUFBSTtVQUFBQztVQUFBVDtVQUFBc0Q7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQTVFO1VBQUFLOzs7OztJQXFKb0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBUmxFZTtLQUFBRztLQUFBSTtLQUFBQztLQUFBVDtLQUFBc0Q7S0FBQUM7S0FBQUM7S0FBQTNFO0tBQUFLO3FDQUFBQTtLQXBNR2k1RDtLQUFBQztLQUFBRjtLQTRNK0Q7Ozs7OztVQVJsRWo0RDtVQUFBRztVQUFBSTtVQUFBQztVQUFBVDtVQUFBc0Q7VUFBQUM7VUFBQUM7VUFBQTNFO1VBQUFLOzs7Ozs7VUFBQWU7VUFBQUc7VUFBQUk7VUFBQUM7VUFBQVQ7VUFBQXNEO1VBQUFDO1VBQUFDO1VBQUEzRTtVQUFBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBcE1HaTVEO1lBQUFDO1lBQUFGOzs7Ozs7O0lBcUwrRDs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FSbEVyNUQ7S0FBQUs7cUNBQUFBO0tBN0tHaTVEO0tBQUFDO0tBQUFGO0tBcUwrRDs7eUNBUmxFcjVELFdBQUFLO3dDQUFBTCxXQUFBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBN0tHaTVEO1lBQUFDO1lBQUFGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0EwSkxqNEQ7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUEzRTtLQUFBSzs7Ozs7O1VBQUFlO1VBQUFHO1VBQUFJO1VBQUFDO1VBQUFUO1VBQUFzRDtVQUFBQztVQUFBQztVQUFBM0U7VUFBQUs7O0tBMUpLaTVEO0tBQUFDO0tBQUFGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFBQUM7WUFBQUM7WUFBQUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDZ0RMcjVEO0lBQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFsREF5NUQ7Ozs7Ozs7Ozs7Ozs7OztZQUlBQyxvQkFPTW4xRDthQUdBNUU7S0FBYyxNQUFBO0lBQVk7YUFDMUJLO0tBQWMsTUFBQTtJQUFZOzt3Q0FKMUJ1RSxTQUdBNUUsV0FDQUs7O0dBRytCO1lBR3JDMjVELG1CQVFFQyxNQUFHQztJQUFNLElBUHNCcHpDLFNBQUk2c0MsS0FPbkNzRyxNQVBzQ0UsS0FPbkNEO0lBTkw7VUFEcUN2RzthQUFHd0c7b0JBSTNCLGdCQUpvQnJ6QyxjQUFPcXpDO29CQUU1QixnQkFGcUJyekM7VUFBT3F6QyxJQUczQixXQUFBLGdCQUhvQnJ6QyxjQUFJNnNDO0tBS1k7TUFMVHlHLE9BQUFEO01BSzdCbGpELElBTDZCa2pEO01BQUhFLE9BQUExRztNQUtuQzd5RCxJQUxtQzZ5RDtNQUFKMkcsZ0JBSy9CeDVELEdBQVNtVyxJQUxzQjZQO01BQUFBLE1BQUF3ekM7TUFBSTNHLEtBQUEwRztNQUFHRixLQUFBQzs7R0FPTTtHQU9sRDs7OztJOztJQUYyQjs7S0FBSkc7S0FBSSxXQUFBLFdBQUpBOzs7OztZQUluQkMsV0FBWTUxRCxTQUFVdkMsS0FBd0IvQixHQUFHbTZEO0lBQ25ELEdBRHdCcDREO1NBQVVDLE1BQVZELFFBQUFxNEQsVUFBVXA0RDs7U0FBVm80RDtJQUNsQixZQUFBLHVCQUQwQ3A2RCxHQUFsQ3NFO2dCQUVKO1FBQ0grMUQ7SUFBTyxNQUFBOzs7NkJBQW1DLE9BQW5DLFdBSHFDRixTQUc1Q0UsS0FBcUQ7YUFIcENEOztHQUdnRDtZQUd0RXJqRCxNQUFNbmMsR0FBRXFjLE9BQU1DO0lBQ2hCLE9BQUE7NkRBRFF0YyxHQUFFcWMsT0FBTUM7R0FDNEQ7R0FLM0Q7Ozs7SUFBQSxVQUFBO0lBQWYsY0FBZTtJQUFmLE1BQUE7SUFBQXhTLFVBQUE7R0FBZSxTQUFBQyxjQUFBL0o7SUFBZixVQUFBO0lBQUEsT0FBQSxXQUFBLCtCQUFBOEosbUJBQWU5SjtHQUEyQztZQUExRGdLLGFBQVk5SixXQUFaSztJLDhCQUFZTCxXQUFaSzs7WUFBQTBKLGNBQVk3SixTQUFaTSxLQUFBNEYsS0FBQS9GO0lBQUEsT0FBQSxtQ0FBWUgsVUFBWk0sS0FBQTRGLEtBQUEvRjtHQUEwRDtZQUExRDJKLGVBQVk1SjtpQkFBWkM7S0FBQSxVQUFZRDtLQUFaLDBCLE9BQUEySixtQkFBQTFKO0lBQTBEO0lBQTFELG9CQUFBQSxHQUFBLE9BQUF5SixhQUFZMUosaUJBQVpDLEdBQTBEO0dBQUE7WUFBMUQ0SixhQUFZMUosTUFBVUMsS0FBQUMsU0FBQUM7SSwyQ0FBVkgsT0FBVUMsS0FBQUMsU0FBQUM7O1lBQXRCd0osYUFBWTNKLE1BQVpDLEtBQUFDO0lBQUEsT0FBQSxrQ0FBWUYsT0FBWkMsS0FBQUM7R0FBMEQ7WUFBMUQwSixlQUFZdEo7aUJBQVpMLEtBQUFDLFNBQUFLO0tBQUEsT0FBQW1KLGFBQVlwSixpQkFBWkwsS0FBQUMsU0FBQUs7SUFBMEQ7SUFBMUQ7cUJBQUFOLEtBQUFDO2FBQUEsT0FBQXlKLGFBQVlySixpQkFBWkwsS0FBQUM7WUFBMEQ7O0dBQUE7WUFBMUQySixRQUFBcEo7SUFBQSxJQUFBLE1BQUFtSixlQUFBbkosV0FBQSxNQUFBZ0osZUFBQWhKO0lBQUEsV0FBZTZJLGNBQWY3STtHQUEwRDtZQUExRHFKLFVBQUFuSixPQUFBcytELE9BQUFDO0lBQXNCLE9BQUE7O3NCQUFIM3FDLE9BQUFDLE9BQUEsT0FBQSxXQUFuQjd6QixPQUFtQjR6QixPQUFBQyxPQUFFO2FBQXJCeXFDO2FBQUFDO0dBQXVCOzs7Ozs7Ozs7O09BQXZCNzZEO09BQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FsREF5NUQ7T0FJQUM7O09Ba0NBUztPQU1BbmpEOzs7Ozs7Ozs7O09BdkJBMmlEOzs7U0E2QkFoNkQ7U0FBQUs7U0FBZTRFO1NBQWZDO1NBQUFDO1NBQUFHO1NBQUFEO1NBQUFEO1NBQUFHO1NBQUFDO1NBQUFDOzs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ3BESnRMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBQVE7Ozs7OztJQW1CSjZGO0lBQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBbkJJLFVBQUE7SUFBUixjQUFRO0lBQVIsTUFBQTtJQUFBckYsUUFBQTs7Ozs7Ozs7Ozs7O0dBQVEsU0FBQW1HLFlBQUFqRztJQUFSLFVBQUE7SUFBQSxPQUFBLFdBQUEsK0JBQUFGLGlCQUFRRTtHQUEwQztZQUFsRGtHLFdBQUtoRyxXQUFMSztJLG9DQUFLTCxXQUFMSzs7WUFBQThGLFlBQUtqRyxTQUFMTSxLQUFBNEYsS0FBQS9GO0lBQUEsT0FBQSx3Q0FBS0gsVUFBTE0sS0FBQTRGLEtBQUEvRjtHQUFrRDtZQUFsRGdKLGFBQUtqSjtpQkFBTEM7S0FBQSxVQUFLRDtLQUFMLDBCLE9BQUErRixpQkFBQTlGO0lBQWtEO0lBQWxELG9CQUFBQSxHQUFBLE9BQUEyRixXQUFLNUYsaUJBQUxDLEdBQWtEO0dBQUE7WUFBbERrRyxXQUFLaEcsTUFBVUMsS0FBQUMsU0FBQUM7SSwrQ0FBVkgsT0FBVUMsS0FBQUMsU0FBQUM7O1lBQWY4RixhQUFLakcsTUFBTEMsS0FBQUM7SUFBQSxPQUFBLHdDQUFLRixPQUFMQyxLQUFBQztHQUFrRDtZQUFsRDZJLGFBQUt6STtpQkFBTEwsS0FBQUMsU0FBQUs7S0FBQSxPQUFBeUYsV0FBSzFGLGlCQUFMTCxLQUFBQyxTQUFBSztJQUFrRDtJQUFsRDtxQkFBQU4sS0FBQUM7YUFBQSxPQUFBK0YsYUFBSzNGLGlCQUFMTCxLQUFBQztZQUFrRDs7R0FBQTtZQUFsRDhJLE1BQUF2STtJQUFBLElBQUEsTUFBQXNJLGFBQUF0SSxXQUFBLE1BQUFxSSxhQUFBckk7SUFBQSxXQUFRK0UsWUFBUi9FO0dBQWtEOztpRUFBbERqQztJQUFBeWY7WUFBQUMsYUFBQWxlO0lBQUEsSUFBQW1lLFlBQUEsNkJBQUFuZTtJQUFBOzthQUFBbWU7O2tDQUFBLE9BQUEsNkJBQUFuZTtHQUFrRDtZQUc5QzhKLFVBQUFuSixPQUFBNFksT0FBQUM7SUFBc0IsT0FBQTs7c0JBQUhDLE9BQUFDLE9BQUEsT0FBQSxXQUFuQi9ZLE9BQW1COFksT0FBQUMsT0FBRTthQUFyQkg7YUFBQUM7R0FBdUI7O2lEQUF2QjFQLFdBZ0JBcEY7O1lBYkEweEMsU0FBVStvQixNQUFNQyxNQUFLejZEO0lBQ3ZCLEdBRHVCQTtLQUlHLElBQW5CUSxJQUpnQlIsTUFJRyxNQUFBLHlCQUpSeTZELE1BSVhqNkQ7S0FBbUIsT0FBQTs7SUFERixVQUFBLHlCQUhaZzZEO0lBR1ksT0FBQTtHQUNvQjtHQVMzQjtJQU5meGhEO0lBQ0FFO0lBQ0FFOzs7VUFmSXZZO0lBbUJXLFVBQUE7SUFBZixjQUFlO0lBQWYsTUFBQTtJQUFBNkQsVUFBQTtHQUFlLFNBQUFDLGNBQUEvSjtJQUFmLFVBQUE7SUFBQSxPQUFBLFdBQUEsK0JBQUE4SixtQkFBZTlKO0dBQWtEO1lBQWpFZ0ssYUFBWTlKLFdBQVpLLEcsT0FuQkoyRixXQW1CZ0JoRyxXQUFaSztZQUFBMEosY0FBWTdKLFNBQVpNLEtBQUE0RixLQUFBL0YsR0FBQSxPQW5CSjhGLFlBbUJnQmpHLFNBQVpNLEtBQUE0RixLQUFBL0Y7R0FBaUU7WUFBakUySixlQUFZNUo7aUJBQVpDO0tBQUEsVUFBWUQ7S0FBWiwwQixPQUFBMkosbUJBQUExSjtJQUFpRTtJQUFqRSxvQkFBQUEsR0FBQSxPQUFBeUosYUFBWTFKLGlCQUFaQyxHQUFpRTtHQUFBO1lBQWpFNEosYUFBWTFKLE1BQVVDLEtBQUFDLFNBQUFDLE0sT0FuQjFCNkYsV0FtQmdCaEcsTUFBVUMsS0FBQUMsU0FBQUM7O1lBQXRCd0osYUFBWTNKLE1BQVpDLEtBQUFDLFNBQUEsT0FuQkorRixhQW1CZ0JqRyxNQUFaQyxLQUFBQztHQUFpRTtZQUFqRTBKLGVBQVl0SjtpQkFBWkwsS0FBQUMsU0FBQUs7S0FBQSxPQUFBbUosYUFBWXBKLGlCQUFaTCxLQUFBQyxTQUFBSztJQUFpRTtJQUFqRTtxQkFBQU4sS0FBQUM7YUFBQSxPQUFBeUosYUFBWXJKLGlCQUFaTCxLQUFBQztZQUFpRTs7R0FBQTtZQUFqRTJKLFFBQUFwSjtJQUFBLElBQUEsTUFBQW1KLGVBQUFuSixXQUFBLE1BQUFnSixlQUFBaEo7SUFBQSxXQUFlNkksY0FBZjdJO0dBQWlFO1lBQWpFc0ssVUFBQXBLLE9BQUEwK0QsT0FBQUM7SUFBc0IsT0FBQTs7c0JBQUhDLE9BQUFDLE9BQUEsT0FBQSxXQUFuQjcrRCxPQUFtQjQrRCxPQUFBQyxPQUFFO2FBQXJCSDthQUFBQztHQUF1QjtZQUF2QjE2QyxRQUFBamtCLE9BQUFxSyxPQUFBQztJQUFzQixPQUFBOztzQkFBSDhaLE9BQUFDLE9BQUEsT0FBQSxXQUFuQnJrQixPQUFtQm9rQixPQUFBQyxPQUFFO2FBQXJCaGE7YUFBQUM7R0FBdUI7WUF1Qm5CdzBELGFBQXVCOTZELEdBQ3pCLElBQW9CMGpCLFFBREsxakIsTUFFekIsT0FEb0IwakIsTUFDZjs7Ozs7Ozs7T0E1Q0g3aUI7T0FBUkM7T0FBQUc7T0FBQUs7T0FBQUQ7T0FBQThDO09BQUFDO09BQUFDO09BQUFrVjtPQUFBRDs7Ozs7O09BbUJJNVo7T0FBQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FOQWlaO09BQ0FFO09BQ0FFO09BVEFxNEI7OztTQWFlOXNDO1NBQWZDO1NBQUFDO1NBQUFHO1NBQUFEO1NBQUFEO1NBQUFHO1NBQUFDO1NBQUFrQjtTQUFBNlo7U0FBQXZnQjtTQUFBSzt3QkF1QkkrNkQ7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ1FKMTRDLGlCQUNXcGlCO0lBQWIsSUFBYTB6RCxNQUFBMXpELEdBQUUrNkQ7SUFDYjtpQkFEV3JIOztVQUdKeHVDO1NBSE02MUMsU0FHTjcxQztNQUFLLE1BQUE7O0tBSGQsSUFBYTgxQyxnQkFBRUMsVUFBQUYsZUFBRnJILE1BQUFzSCxLQUFFRCxRQUFBRTs7R0FLUDtZQUdOdGdELE9BQU94ZixHQUFJLG1CQUFKQSxRQUEyQztZQWtCbEQrL0QsZUFBZUM7SUFDakIsSUFFRUMsZUFIZUQ7YUFHZkM7U0FES0MsTUFDTEQ7S0FEVSxXQUZLRCxTQUVWRTs7O0tBZFEzSCxNQWViMEg7S0FmYUUsVUFBQTVIO0tBQUc2SCxhQWVoQkg7S0FmNEJJLFFBWWJMO0tBWm9CTTtJQUNyQztTQURrQkMsZUFBSEo7Y0FBR0k7TUFNaEI7T0FKS3gyQyxJQUZXdzJDO09BTWhCLGVBQThCMTdELEdBQUFBLE9BTmR1N0QscUJBTXVDO01BQXZELHlCQU5tQ0U7TUFPbkMsV0FQYUgsU0FFUnAyQzs7S0FPOEM7TUFUdENsbEIsSUFBRzA3RDtNQUFtQkMsb0JBQVBILE9BQU9DO01BQW5CRixhQUFBRztNQUFZRixRQUFmRjtNQUFBQSxVQUFBdDdEO01BQXNCeTdELGNBQUFFOztHQWVzQztZQUd6RUMsS0FBSzU3RDtJQUNQLFlBRE9BOztLQUtJLFVBWFRrN0QsZUFNS2w3RDtLQUtJLE9BQUE7O1FBSEprbEI7SUFFTCxPQUZLQTtHQUdzQjtZQUczQjYwQixLQUFLLzVDLEdBQUksT0FSVDQ3RCxLQVFLNTdELE1BQWlCO1lBQ3RCMGYsSUFBSTFmLEdBQUksT0FUUjQ3RCxLQVNJNTdELE1BQWtCO1lBQ3RCMmYsSUFBSTNmLEdBQUU3RSxHQVZOeWdFLEtBVUk1N0QsUUFBRTdFLEdBQUksU0FBbUI7WUFDN0IwZ0UsV0FBV2pYLElBQUdDO0lBQUssSUFBcUIsTUFYeEMrVyxLQVdjL1csS0FBZ0IsTUFYOUIrVyxLQVdXaFg7SUFBNkIsT0FBQTtHQUFTO1lBRWpEZ1AsTUFBTWhQLElBQUdDO0lBQ1g7S0FBYSxRQXBCWHFXLGVBbUJNdFc7S0FDQWtYO0tBQUpDO0tBQ1MsVUFyQlhiLGVBbUJTclc7S0FFSG1YO0tBQUpDO0lBQ0QsR0FBQSw2QkFGS0gsSUFDQUUsS0FFSDtJQUdILElBRElFLEtBTEVKLE9BTUZLLEtBTEVIO09BSUZFLEtBQ0FDLElBTkZKLGNBQ0FFO0lBQUFBLGNBREFGO2NBS0VHLE9BQ0FDLHlCQU5FTCxRQUFBQTs7R0FXb0M7WUFHMUNNLGNBQWNwOEQ7SUE3RGRvaUIsd0IsWUE2RGNwaUI7Z0JBQUFBO3VCQUdKO1FBQ0owekQ7aUJBQUFBO0dBR2M7R0FHUCxrQkFWYjBJLGVBcEJBcmlCOzs7Ozs7O1VBekNBMzNCLFdBU0F6SCxRQWlDQStFLEtBQ0FDLEtBQ0FrOEMsWUFFQWpJOzs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0M1Rko7SUFBQTs7Ozs7Ozs7Ozs7Ozs7OztZQUVJeUksdUI7WUFrREUxaEQsY0FBWSxPQUFrQiwwQ0FBc0M7WUFDcEV0RSxNQUFPdXVDLElBQVFDLElBQUssT0FBQSwrQkFBYkQsSUFBUUMsSUFBZ0M7WUFDL0NwbEMsT0FBT3pmLEdBQUksT0FBQSwrQkFBSkEsTUFBNkI7WUFFcENzOEQsK0JBQTRDdDhEO0lBQ3RDLElBQUpKLElBQUksK0JBRHNDSTtXQUMxQ0o7S0FDNkIsTUFBQTtJQUFtRCxPQURoRkE7R0FDaUY7WUFHbkYyOEQsNEJBQTRCdjhEO0lBTDVCczhELCtCQUs0QnQ4RDtJQUN0QjtHQUFrRDtZQUd4RHc4RCxZQUFnQjEzQyxHQUFFOWtCO0lBQ1osSUFBSkosSUFWRjA4RCwrQkFTa0J0OEQ7SUFDaEJKLE9BQUFBLE9BRGNrbEI7O0dBRU07WUFNdEIyM0MsbUJBQW1CNzhELEdBQUFBLE9BQUFBLHFCQUFvRDtZQUN2RTg4RCxtQkFBbUI5OEQsR0FBQUEsT0FBQUEscUJBQW9EO1lBRXZFKzhELGlCQUFpQjM4RCxHQUFFcEYsR0FBRXdaLEdBQUUxUjtJQUNqQixJQUFKOUMsSUFBSSwrQkFEV0k7SUFIakJ5OEQsbUJBSUU3OEQ7SUFDSixJQUNNLElBSUpzbEIsSUFKSSxXQUhtQnhpQixHQUFKOUgsR0FBRXdaO1VBSVh2VTtTQUFBQywwQkFBQUQ7S0FOVjY4RCxtQkFHRTk4RDtLQUtGLE1BQUEsNEJBRlVFOztJQU5WNDhELG1CQUdFOThEO0lBT0YsT0FEQXNsQjtHQUVDO1lBR0QwM0MsaUJBQWlCNThELEdBQUVwRixHQUFFd1osR0FBRXMxQixHQUFFaG5DO0lBQ25CLElBQUo5QyxJQUFJLCtCQURXSTtJQWZqQnk4RCxtQkFnQkU3OEQ7SUFDSixJQUNNLElBSUpzbEIsSUFKSSxXQUhxQnhpQixHQUFOOUgsR0FBRXdaLEdBQUVzMUI7VUFJYjdwQztTQUFBQywwQkFBQUQ7S0FsQlY2OEQsbUJBZUU5OEQ7S0FLRixNQUFBLDRCQUZVRTs7SUFsQlY0OEQsbUJBZUU5OEQ7SUFPRixPQURBc2xCO0dBRUM7WUFHRDIzQyxpQkFBaUI3OEQsR0FBRXBGLEdBQUV3WixHQUFFczFCLEdBQUVvekIsR0FBRXA2RDtJQUNyQixJQUFKOUMsSUFBSSwrQkFEV0k7SUEzQmpCeThELG1CQTRCRTc4RDtJQUNKLElBQ00sSUFJSnNsQixJQUpJLFdBSHVCeGlCLEdBQVI5SCxHQUFFd1osR0FBRXMxQixHQUFFb3pCO1VBSWZqOUQ7U0FBQUMsMEJBQUFEO0tBOUJWNjhELG1CQTJCRTk4RDtLQUtGLE1BQUEsNEJBRlVFOztJQTlCVjQ4RCxtQkEyQkU5OEQ7SUFPRixPQURBc2xCO0dBRUM7WUEyQ0Q2M0MsS0FBSy84RCxHQUFJLE9BQUpBLEtBQVU7WUFHZmc5RCxXQUFXN2hFLEdBQUU4aEU7SUFDZixJQUFRajlEOzhCQUFBQSxPQURLN0UsR0FDTDZFLEdBQUFBLEdBRE9pOUQ7SUFFZixPQURRajlEO0dBQ1A7WUFHQ2s5RCxhQUFhbDlELEdBQUksT0FBSkEsTUFBQUEsYUFBa0I7WUFDL0JELFVBQVVHLFdBQVVGLEdBQUksa0JBQWRFLFdBQVVGLE1BQXFCO1lBQ3pDZ2dCLFNBQU83a0IsR0FBSSxPQVBYNmhFLFdBT083aEUsR0E5R1B3ZixXQThHMEM7WUFDMUMrSSxNQUFNMWpCLEdBQUksT0FBSkEsS0FBVztZQUNqQjJmLElBQUkzZixHQUFFN0UsR0FBRjZFLE9BQUU3RSxZQUFnQjtZQXFCdEJnaUUsdUJBQThCdmlFLEdBQVN3WixHQUFTczFCLEdBQVNvekI7SUFBM0JsaUUsT0FBMkJraUU7SUFBQUEsT0FBM0JsaUU7SUFBa0I4dUMsT0FBVHQxQjtJQUFBQSxPQUFTczFCOztHQUl2QztZQUdUMHpCLDZCQUE2QnhZLElBQUdDO0lBQ2xDLE9BUkVzWSx1QkFPNkJ2WSxVQUFBQSxPQUFHQyxVQUFBQTtHQUtiO1lBR25Cd1ksOEJBQThCelksSUFBR0M7SUFDbkMsT0FoQkVzWSx1QkFlOEJ2WSxPQUFBQSxVQUFHQyxPQUFBQTtHQUtkO1lBR25CeVksK0JBQXNDMVksSUFBR0M7SUFuSnpDMFgsNEJBbUpzQzNYO0lBRWpDLGVBN0pMdnVDLE1BMkpzQ3V1QyxPQUFHQztrQkFuSnpDMFgsNEJBbUp5QzFYO0dBR007WUFTL0MwWSx1QkFBdUIzWSxJQUFHQztJQVoxQnlZLCtCQVl1QjFZLElBQUdDO0lBQzVCLE9BckJFd1ksOEJBb0J1QnpZLElBQUdDO0dBRU87WUFHakMyWSxjQUFjeDlELEdBQUU3RTtJQWhLaEJxaEUsZUFnS2N4OEQ7SUFFTCxJQUFQeTlELE9BeEVGVCxXQXNFZ0I3aEUsR0FBRjZFO0lBekJkcTlELDhCQXlCY3I5RCxHQUVaeTlEO0lBQ0osT0FESUE7R0FFQTtZQUdGQyxhQUFhMTlELEdBQUU3RTtJQXZLZnFoRSxlQXVLYXg4RDtJQUVKLElBQVB5OUQsT0EvRUZULFdBNkVlN2hFLEdBQUY2RTtJQXhDYm85RCw2QkF3Q2FwOUQsR0FFWHk5RDtJQUNKLE9BRElBO0dBRUE7R0FHYSxJQUFmRSxlQTNMQWhqRDtZQW1OQWlqRCxPQUFPNTlEO0lBQUksSUFYRTB6RCxNQVdOMXpELE1BVkx5OUQsT0FEVy9KO0lBRVosS0E5RkR3SixhQTZGRU87S0E1TEZqQixnQkEyTGE5STtLQTVEYjBKLDZCQTREYTFKLEtBQ1grSjtLQUFBQSxVQWRGRTs7SUF3Qm1CO0dBQTBCO1lBSy9DdjdDLFVBQVVDLGFBQVlyaUI7SUFDeEIsWUFEd0JBO2dCQUVkO0lBRUssSUFDRTY5RCxpQkFEWFosU0FDV1ksU0FTWHptRCxTQVRXMEIsTUFBQStrRDtJQUNiO0tBQWUsSUFBWEMsV0FEU2hsRCxRQUVUaWxELFdBRlNqbEQ7S0FHTixHQUhNQSxRQUNUZ2xEO01BRUosTUFBQTtLQUNPLEdBSk1obEQsUUFFVGlsRDtNQUVKLE1BQUE7S0FDTyxLQWpPUDFuRCxNQTROYXlDLFFBRFhta0Q7TUFNRixNQUFBO0tBQ0EsV0FYUTU2QyxhQUtLdko7S0FPVixHQU5DZ2xELGFBRFNEO1NBU1h6bUQsUUFwT0ZxSSxPQTBORXc5QztNQVdKLE1BQUE7O1NBVmFuNEMsSUFTVDFOLGFBQUFBLE1BVFMwTixHQUFFaE0sTUFDVGdsRDs7R0FTNkI7WUFHbkN0OUMsZ0JBQTJCLGNBQVE7WUFDbkNQLFFBQU95ekMsS0FBUzF6RCxHQUFLLE9BQWQwekQsUUFBUzF6RCxVQUFvQjtZQUVwQ3liO0lBQVUsWUFDSixPQUpOK0U7SUFNWSxJQURQNnlDLGVBQUw3eUQsY0FDSXc5RCxRQWxJRmgrQyxTQWlJRnhmO0lBRVksMEJBRlA2eUQsSUFDRDJLLE9BNURGTjtJQThERixlQUZJTTtHQUVZO1lBR2hCN0ssU0FJYThLO0lBSkYsVUFJRUE7Y0FITCxPQVpSejlDO0lBY1ksSUFDS3c5QyxRQTNJZmgrQywwQkEySVdpK0MsYUFBSW5sRCxNQUFBa2xELE9BQUlsbkQ7SUFDbkI7UUFEbUJBLEtBQVJtbkQsZ0JBSWIsZUFKaUJEO0tBQ2M7TUFEVkUsTUFBQXBuRDtNQUFKMkIsUUFyRWZpbEQsYUFxRWU1a0Qsc0JBQUptbEQsS0FBUW5uRCxPQUFBQTtNQUFKZ0MsTUFBQUw7TUFBSTNCLElBQUFvbkQ7O0dBSUw7WUFHaEJsb0QsSUFBSWhXLEdBQUcwQztJQUNULFlBRE0xQztnQkFFSSxPQXhCUndnQjtJQTBCZ0IsSUFEWHc5QyxrQkFDREcsWUF0SkZuK0MsU0FzSnlCLFdBSnBCdGQsR0FHRnM3RDtrQkFFNkR0N0QsR0FBRXk3RCxXQUFVSDtLQUM1RSxJQUF5QkksU0FEbURKLFVBUXJFLFlBUGtCSSxXQURtREo7Z0JBUXJFO1NBUFF4M0MsTUFEbUQyM0MsV0FDekNybEQsTUFBQXNsRDtLQUN2QjtNQUFVO09BQU5wRSxRQW5GTjBELGFBa0ZlbDNDLEtBQ2tCLFdBRitCOWpCLEdBQ3ZDb1c7T0FFbkJpNkIsT0FGbUJqNkI7T0FHaEIsWUFESGk2QixTQUhzRWlyQjtpQkFJbkU7VUFITXgzQyxNQUNUd3pDLE9BRG1CbGhELE1BRW5CaTZCOztJQUt5RDtJQXpPL0Q2cEIsaUJBK05Hb0IsVUFIRXQ3RCxHQUlIeTdELFdBRENIO0lBV0wsZUFWSUc7R0FVZ0I7WUFHcEJwaUQsS0FBSy9iLEdBQUcwQztJQUNWLFlBRE8xQztnQkFFRyxPQXpDUndnQjtJQTJDZ0IsSUFEWHc5QyxrQkFDREcsWUF2S0ZuK0MsU0F1S3lCLFdBSm5CdGQsTUFHSHM3RDtrQkFFNkR0N0QsR0FBRXk3RCxXQUFVSDtLQUM1RSxJQUEyQkksU0FEaURKLFVBUXJFLFlBUG9CSSxXQURpREo7Z0JBUXJFO1NBUFFsbkQsT0FBRTBQLE1BRGlEMjNDLFdBQ3ZDcmxELE1BQUFzbEQ7S0FDekI7TUFBVTtPQUFOcEUsUUFwR04wRCxhQW1HaUJsM0MsS0FDZ0IsV0FGK0I5akIsR0FDakRvVSxHQUFZZ0M7T0FFckJpNkIsT0FGcUJqNkI7T0FHbEIsWUFESGk2QixTQUhzRWlyQjtpQkFJbkU7VUFITUUsTUFBQXBuRCxXQUFBQSxJQUFBb25ELEtBQUUxM0MsTUFDWHd6QyxPQURxQmxoRCxNQUVyQmk2Qjs7SUFLMkQ7SUExUGpFNnBCLGlCQWdQR29CLFVBSEd0N0QsR0FJSnk3RCxXQURDSDtJQVdMLGVBVklHO0dBVWdCO1lBR3BCRSxTQUFTcitELEdBQUc2YSxNQUFNblk7SUFDcEIsWUFEVzFDO2dCQUVELE9BRkk2YTtRQUdQbWpEO2tCQUVVdDdELEdBQUVtWSxNQUFJbWpEO0tBQW5CLElBQWV4M0MsTUFBQTNMLE1BQVUvQixNQUFOa2xEO0tBQ2pCO01BQVUsSUFER2hFLFFBQ0gsV0FEQ3QzRCxHQUFFOGpCLEtBQVUxTixNQUFBaTZCLE9BQUFqNkI7TUFHcEIsR0FIb0JpNkIsU0FBTmlyQixPQUdhLE9BSGpCaEU7VUFBQXh6QyxNQUFBd3pDLE9BQVVsaEQsTUFBQWk2Qjs7SUFLRjtJQU4rQixPQWxRdEQ2cEIsaUJBaVFHb0IsVUFIYXQ3RCxHQUFObVksTUFHUG1qRDtHQU9xQjtZQUcxQk0sVUFBVXQrRCxHQUFHNmEsTUFBTW5ZO0lBQ3JCLFlBRFkxQztnQkFFRixPQUZLNmE7UUFHUm1qRDtpQkFFVXQ3RCxHQUFJbVksTUFBSW1qRDtLQUFyQixJQUFlbG5ELE9BQUUwUCxNQUFBM0wsTUFBVS9CLE1BQU5rbEQ7S0FDbkI7TUFBVSxJQURLaEUsUUFDTCxXQURDdDNELEdBQUVvVSxHQUFFMFAsS0FBVTFOLE1BQUFpNkIsT0FBQWo2QjtNQUd0QixHQUhzQmk2QixTQUFOaXJCLE9BR1csT0FIZmhFO1VBQUZrRSxNQUFBcG5ELFdBQUFBLElBQUFvbkQsS0FBRTEzQyxNQUFBd3pDLE9BQVVsaEQsTUFBQWk2Qjs7SUFLRjtJQU42QixPQS9RdEQ2cEIsaUJBOFFHb0IsVUFIY3Q3RCxHQUFObVksTUFHUm1qRDtHQU91QjtZQUc1Qk8sV0FBV3YrRCxHQUFHNmEsTUFBTW5ZLEdBQUU5SDtJQUN4QixZQURhb0Y7Z0JBRUgsT0FGTTZhO1FBR1RtakQ7aUJBRVV0N0QsR0FBRTlILEdBQUVpZ0IsTUFBSW1qRDtLQUFyQixJQUFpQngzQyxNQUFBM0wsTUFBVS9CLE1BQU5rbEQ7S0FDbkI7TUFBVSxJQURLaEUsUUFDTCxXQURDdDNELEdBQUU5SCxHQUFFNHJCLEtBQVUxTixNQUFBaTZCLE9BQUFqNkI7TUFHdEIsR0FIc0JpNkIsU0FBTmlyQixPQUdXLE9BSGZoRTtVQUFBeHpDLE1BQUF3ekMsT0FBVWxoRCxNQUFBaTZCOztJQUtGO0lBTitCLE9BaFJ4RDhwQixpQkErUUdtQixVQUhldDdELEdBQUU5SCxHQUFSaWdCLE1BR1RtakQ7R0FPdUI7WUFHNUJRLFlBQVl4K0QsR0FBRzZhLE1BQU1uWSxHQUFFOUg7SUFDekIsWUFEY29GO2dCQUVKLE9BRk82YTtRQUdWbWpEO2lCQUVVdDdELEdBQUk5SCxHQUFFaWdCLE1BQUltakQ7S0FBdkIsSUFBZWxuRCxPQUFJMFAsTUFBQTNMLE1BQVUvQixNQUFOa2xEO0tBQ3JCO01BQVUsSUFET2hFLFFBQ1AsV0FEQ3QzRCxHQUFFb1UsR0FBRWxjLEdBQUU0ckIsS0FBVTFOLE1BQUFpNkIsT0FBQWo2QjtNQUd4QixHQUh3Qmk2QixTQUFOaXJCLE9BR1MsT0FIYmhFO1VBQUprRSxNQUFBcG5ELFdBQUFBLElBQUFvbkQsS0FBSTEzQyxNQUFBd3pDLE9BQVVsaEQsTUFBQWk2Qjs7SUFLRjtJQU42QixPQTdSeEQ4cEIsaUJBNFJHbUIsVUFIZ0J0N0QsR0FBRTlILEdBQVJpZ0IsTUFHVm1qRDtHQU95QjtZQUc5QlMsU0FBU3orRCxHQUFHMEM7SUFBSSxPQTFCaEI2N0Q7YUEwQlN2K0QsZUFBcUMwQyxVQUFLb1csS0FBTyxPQUFBLFdBQVpwVyxHQUFLb1csS0FBWSxHQUFuRHBXO0dBQXNEO1lBQ2xFZzhELFVBQVUxK0QsR0FBRzBDO0lBQUksT0F4Q2pCNDdEO2FBd0NVdCtELGVBQW9DOFcsVUFBS2dDLEtBQU8sT0FBQSxXQUE3Q3BXLEdBQWlDb1UsR0FBS2dDLEtBQWM7R0FBQztZQUlsRTZsRCxTQUFTMytELEdBQUcwQztpQkFDR3dpQjtLQWhDZnE1QztPQStCU3YrRDs7Z0JBRXVCMEMsVUFBS29XO1FBQ2hDLFVBQUEsV0FEMkJwVyxHQUFLb1c7UUFDaEMsYUFBZ0MsV0FGdEJvTSxPQUNzQnBNO09BQ1U7T0FIbkNwVztLQUVaO0lBRUk7SUFITSxPQUFBO0dBR0w7WUFHTGs4RCxVQUFVNStELEdBQUcwQztpQkFDRXdpQjtLQTFCZnM1QztPQXlCVXgrRDs7Z0JBRXVCOFcsR0FBRXBVLFVBQUtvVztRQUNuQyxVQUFBLFdBRDhCcFcsR0FBRm9VLEdBQU9nQztRQUNuQyxhQUFrQyxXQUZ4Qm9NLFdBQ2tCcE8sR0FBT2dDO09BQ2M7T0FIekNwVztLQUViO0lBRUk7SUFITSxPQUFBO0dBR0w7WUFXTG1YLEtBQUs3WixHQUFHMEM7SUFDVixZQURPMUM7Z0JBRUc7UUFDSGcrRDtJQUNMLGFBQXdEQSxPQUFNdDdEO0tBQzVELElBWG9Cb1csTUFVa0NrbEQ7S0FUMUQ7TUFBQSxXQVNnRXQ3RCxHQVZ4Q29XO01BRWIsSUFBUGk2QixPQUZvQmo2QixRQUdqQixXQURIaTZCLFNBUXNEaXJCO2dCQVBuRDtVQUhpQmxsRCxNQUVwQmk2Qjs7SUFTdUI7SUFEMEIsT0E3VmpENHBCLGlCQTRWR3FCLFVBQUFBLE9BSEd0N0Q7R0FLa0I7WUFHMUJnNkMsU0FBTzE4QztJQUNULFlBRFNBO2dCQUVDO1FBQ0hnK0Q7SUFBdUIsT0ExWDFCditDLE9BMFhHdStDO0dBQXlDO1lBUzlDbGlELE1BQU05YixHQUFHMEM7SUFDWCxZQURRMUM7Z0JBRUU7UUFDSGcrRDtJQUNMLGFBQXdEQSxPQUFNdDdEO0tBQzVELElBWHFCb1UsT0FBRWdDLE1BVStCa2xEO0tBVDFEO01BQUEsV0FTZ0V0N0QsR0FWdkNvVSxHQUFFZ0M7TUFFaEIsSUFBUGk2QixPQUZ1Qmo2QixRQUdwQixXQURIaTZCLFNBUXNEaXJCO2dCQVBuRDtVQUhrQkUsTUFBQXBuRCxXQUFBQSxJQUFBb25ELEtBQUVwbEQsTUFFdkJpNkI7O0lBUzBCO0lBRHVCLE9BalhqRDRwQixpQkFnWEdxQixVQUFBQSxPQUhJdDdEO0dBS29CO1lBRzdCc1osTUFBTWhjLEdBQUc2YSxNQUFNblk7SUFDakIsT0FyRUU4N0Q7YUFvRU14K0Q7YUFBRzZhO3NCQUNtQi9ELEdBQUVwVSxHQUFFOGpCLEtBQUkxTixLQUFPLE9BQVEsV0FBckJwVyxHQUFGb1UsR0FBSTBQLEtBQUkxTixRQUE4QjthQURuRHBXO0dBQ29EO1lBTS9Eb1gsS0FBSzlaLEdBQUc2YSxNQUFNblk7SUFBSSxPQXhGdEI2N0Q7YUF3RlN2K0Q7YUFBRzZhO3NCQUF1Q25ZLEdBQUU4akIsS0FBSTFOLEtBQU8sT0FBTSxXQUFuQnBXLEdBQUU4akIsS0FBSTFOLFFBQTRCO2FBQW5FcFc7R0FBb0U7R0FDM0U7SUFBUGlrQix5QkFwQ0o5TTtJQXFDSThzQywyQkE3QkpqSzsyQ0EyQkk1aUMsTUFDQTZNLFFBQ0FnZ0M7SUFHSnhzQztJQUNBQztJQUNBSDtJQUNBSTtJQUNBQztJQUNBc007SUFDQTFNO0lBQ0FQO0lBQ0FhO0lBQ0FDO0lBQ0FDO0lBQ0FYO0lBQ0FDO1lBRUE2a0QsZUFJYTcrRCxHQUFFMEM7SUFIakIsWUFHZTFDO2dCQUZMO1FBRVNnK0Qsa0JBQUFsbEQsTUFBQWtsRDtJQUNmO0tBQUEsV0FEYXQ3RCxHQUFFb1c7S0FFSixJQUFQaTZCLE9BRldqNkIsUUFHZixVQUhXOVk7bUJBS0Q7S0FDYSxJQUFoQjgrRCxzQkFBZ0IsV0FBaEJBLFlBSkgvckI7ZUFJbUI7U0FOUmo2QixNQUVYaTZCOztHQU1RO1lBR2RuNUIsU0FBUzVaLEdBQUksbUNBQUpBLE1BQXFCO1lBSTlCaWMsV0FBV2pjLEdBQUc2YSxNQUFNblk7SUFDdEIsWUFEYTFDO2dCQUVILE9BRk02YTtRQUdUbWpEO2lCQUVVdDdELEdBQUVtWSxNQUFJbWpEO0tBQW5CLElBQWV4M0MsTUFBQTNMLE1BQUkvQixNQUFBa2xEO0tBQ2pCO01BQVcsSUFETWpCLE9BQUFqa0QsUUFBSmtoRCxRQUVILFdBRkN0M0QsR0FBTXE2RCxTQUFKdjJDO01BR1YsR0FIY3UyQyxTQUFBaUIsT0FHYSxPQUhqQmhFO1VBQUF4ekMsTUFBQXd6QyxPQUFJbGhELE1BQUFpa0Q7O0lBS0Y7SUFOcUMsT0ExWnRESCxpQkF5WkdvQixVQUhldDdELEdBQU5tWSxNQUdUbWpEO0dBT2U7WUFHcEJlLGVBQWUvK0QsR0FBRzZhLE1BQU1uWTtJQUMxQixZQURpQjFDO2dCQUVQLE9BRlU2YTtRQUdibWpEO2lCQUVVdDdELEdBQUVtWSxNQUFJbWpEO0tBQW5CLElBQWV4M0MsTUFBQTNMLE1BQUkvQixNQUFBa2xEO0tBQ2pCO01BQVcsSUFETWpCLE9BQUFqa0QsUUFBSmtoRCxRQUVILFdBRkN0M0QsR0FBTXE2RCxNQUFKdjJDO01BR1YsR0FIY3UyQyxTQUFBaUIsT0FHYSxPQUhqQmhFO1VBQUF4ekMsTUFBQXd6QyxPQUFJbGhELE1BQUFpa0Q7O0lBS0Y7SUFOcUMsT0F2YXRESCxpQkFzYUdvQixVQUhtQnQ3RCxHQUFObVksTUFHYm1qRDtHQU9lO1lBR3BCempELFFBQVF2YTtJQUFJLE9BMUJaaWMsV0EwQlFqYyxlQUFrQ1EsR0FBRXcrRCxJQUFNLFdBQVJ4K0QsR0FBRXcrRCxJQUFhO0dBQUM7WUFDMUR0NUQsWUFBVXhGLFdBQVVGO0lBQTZCLFVBRGpEdWEsUUFDb0J2YTtJQUE2QixPQUFBLHlCQUF2Q0U7R0FBa0Q7WUFDNURSLFVBQVVPLFdBQVVMO0lBQUksT0F6T3hCNmIsUUF5T2dDLHlCQUF0QnhiLFdBQVVMO0dBQXdDO1lBRTVEbVosZUFBZTQ3QztJQUNXLFVBQUEseUJBRFhBO0lBQ1csT0FBQTtHQUFzQztZQUdoRXo1QyxLQUFLbGIsR0FBSSxPQS9PVHliLFFBdU9BbEIsUUFRS3ZhLElBQXVCO1lBQzVCNndDLE1BQU03d0MsR0FBQUEsbUJBQWE7WUFFbkJzRSxRQUFRMjZELGFBQVlyYSxJQUFHQztJQUN6QixVQURzQkQsZUFBR0M7O2dCQUlaO1FBQ0czdUMsZUFBVEQ7aUJBQzBEZ3BELGFBQVlocEQsSUFBR0M7a0JBTzFEK29ELGFBQWlCQyxNQUFRQztNQUF0QyxJQUF5QkMsU0FBS0YsTUFBR0csU0FBS0Y7TUFDcEM7T0FBcUIsSUFBakJHLGlCQUFpQixXQURWTCxhQUFZRyxXQUFRQztPQUUvQixTQURJQyxnQkFFQyxPQUZEQTtPQUlVO1FBTFNDLFFBQUFIO1FBQVFJLFFBQUFIO1FBT0YsUUFQRUcsVUFBS0w7VUFBYkksVUFBS0w7aUJBVVQ7V0FWSUUsU0FBQUcsT0FBUUYsU0FBQUc7O0tBYUw7S0FkL0IsT0F2Y0Y1QyxpQkFpYzRFMW1ELE9BQWYrb0QsYUFBWWhwRCxJQUFHQztJQW9CMUM7SUFwQnNCLE9BamN4RDBtRCxpQkFnY0czbUQsT0FMR2dwRCxhQUtIaHBELElBQVNDO0dBcUJ1QjtHQUd6Qzs7O1lBRUl1cEQsU0FBVUMsS0FBS0M7SUFDakIsR0FEWUQsUUFBS0M7S0FDVSxNQUFBO2dCQURmRDtnQkFHRjtJQUVSLElBREtFLHFCQUNMLFVBTGVEO2tCQUFBQSxhQUlWQyxXQUlGLE9BekNIL3VCLE1BaUNVNnVCO0lBVW1DLElBRHJDRyx1QkEzY1NoYixLQTJjVGdiLGFBM2NDamIsS0FzY0pnYjtJQXJjRixHQUFBLCtCQURNaGIsSUFBUUM7OztLQUlOO01BQUxxWCxLQTVESkksK0JBd0RPMVg7TUFLSHVYLEtBN0RKRywrQkF3RGV6WDtLQVpmZ1k7T0FZT2pZO09BQUFBO09BQVFDO09BSVhxWDtPQUNBQztnQkFDaUN2WCxJQUFHQyxJQUFHcVgsSUFBR0M7UUFDNUMsT0FuQkZVO2lCQWtCd0NoWTtpQkFBSEQ7aUJBQUdDO2lCQUFHcVg7aUJBQUdDOzBCQUNQdlgsSUFBR0MsSUFBR3FYLElBQUdDO2tCQUM1QywrQkFEbUN2WCxJQUFHQztrQkFFcEIsT0FBQTsrQ0FGaUJELFFBQU1zWCxLQUFHQztpQkFFa0I7T0FBQzs7OztLQW9jOUMsTUFBQTtJQWpXckJvQix1QkErVk1zQyxVQUxIRDtJQVNDLE9BOUNOL3VCLE1BaUNVNnVCO0dBY087WUFHakJ2aEQsWUFBWW5lLEdBQUcwQztJQUFJLE9BekxuQis3RCxTQXlMWXorRCxZQUEwQjhZLEtBQU8sT0EvWjNDNkcsSUErWm9DN0csS0FBbUIsV0FBMUNwVyxHQUF1Qm9XLFNBQXNDO0dBQUM7WUFDN0VtMkIsYUFBYWp2QyxHQUFHMEM7SUFBSSxPQXpMcEJnOEQ7YUF5TGExK0QsWUFBMkI4VyxHQUFFZ0MsS0FBTyxPQWhhL0M2RyxJQWdhd0M3RyxLQUFtQixXQUE3Q3BXLEdBQXdCb1UsR0FBRWdDLFNBQXdDO0dBQUM7WUFFbkZnbkQsWUFBWTkvRCxHQUFFKy9EO2lCQUNZam5EO0tBQzFCLFlBRlk5WTs7VUFJSjY5RDtNQUNGLEdBREVBLFNBSGtCL2tEO09BTU4sSUFBWGdsRCxXQU5pQmhsRCxRQU9iLE1BSkwra0QsU0FHQ0MsbUJBQUFBO09BUEc5OUQ7OztLQVNaLE9BeFVFNDlELE9BZ1V3QjlrRDtJQVFaO0lBUk8sT0FBQSx5QkFEUGluRDtHQVNDO1lBR2Y1d0IsZUFBZW52QyxHQUFHMEM7SUFDcEI7S0FFSTtPQS9QRjI3RDtTQTRQZXIrRDs7a0JBR2dCZ2dFLE1BQUtsbkQ7VUFDL0IsT0FBRyxXQUpVcFcsR0FHa0JvVyxVQUFMa25ELFdBQUtsbkQsS0FBTGtuRDtTQUNxQjtLQUhsREQsWUFDRjtJQUlGLE9BbEJFRCxZQVllOS9ELEdBQ2IrL0Q7R0FLbUI7WUFHckI3d0IsZ0JBQWdCbHZDLEdBQUcwQztJQUNyQjtLQUVJO09BM1BGNDdEO1NBd1BnQnQrRDs7a0JBR2dCOFcsR0FBRWtwRCxNQUFLbG5EO1VBQ2xDLE9BQUcsV0FKV3BXLEdBR2FvVSxHQUFPZ0MsVUFBTGtuRCxXQUFLbG5ELEtBQUxrbkQ7U0FDb0I7S0FIcERELFlBQ0Y7SUFJRixPQTNCRUQsWUFxQmdCOS9ELEdBQ2QrL0Q7R0FLbUI7WUFHckIvd0IsbUJBQW1CaHZDLEdBQUcwQztJQUN4QjtLQUVJO09BalJGMjdEO1NBOFFtQnIrRDs7a0JBR1lnZ0UsTUFBS2xuRDtVQUN6QixZQUFBLFdBSldwVyxHQUdjb1c7c0JBRXJCLFdBRnFCQSxLQUFMa25EO2NBR25CdDhDO1VBdGNWL0QsSUFtY2tDN0csS0FHeEI0SztVQUNMLE9BSndCczhDO1NBS3BCO0tBUFRELFlBQ0Y7SUFRRixPQXhDRUQsWUE4Qm1COS9ELEdBQ2pCKy9EO0dBU21CO1lBR3JCaHhCLG9CQUFvQi91QyxHQUFHMEM7SUFDekI7S0FFSTtPQWpSRjQ3RDtTQThRb0J0K0Q7O2tCQUdZOFcsR0FBRWtwRCxNQUFLbG5EO1VBQzVCLFlBQUEsV0FKWXBXLEdBR1NvVSxHQUFPZ0M7c0JBRXhCLFdBRndCQSxLQUFMa25EO2NBR3RCdDhDO1VBbmRWL0QsSUFnZHFDN0csS0FHM0I0SztVQUNMLE9BSjJCczhDO1NBS3ZCO0tBUFRELFlBQ0Y7SUFRRixPQXJERUQsWUEyQ29COS9ELEdBQ2xCKy9EO0dBU21CO0dBR3pCOzs7WUFFSUUsVUFBVWpnRSxHQUFJLE9BQUpBLEtBQU07WUFDaEJrZ0UsU0FBU2xnRSxHQUFJLG1DQUFKQSxNQXplUCs4RCxNQXllb0M7WUFDdENpQixNQUFNaCtELEdBQUksT0FBd0IsNEJBQTVCQSxNQS9kSjBqQixPQStkNkM7WUFDL0N0RSxLQUFLcGY7SUFBNEIsVUFGakNrZ0UsU0FFS2xnRTtJQUE0QixPQUFBLGlDQWhlL0IwakI7R0FnZTJDO1lBRTdDeThDLFNBQVNuZ0UsR0FBRThZO0lBQ2IsWUFEVzlZOztLQUVELE1BQUE7UUFDSGcrRDtJQUNGLEdBcGxCRDNuRCxNQW1sQkcybkQsVUFITWxsRCxTQUtOLE9BTE1BLFFBR05rbEQ7SUFHQSxNQUFBO0dBQWlDO1lBR3RDb0MsUUFBUXBnRSxHQUFFOFk7SUFDWixZQURVOVk7O0tBRUEsTUFBQTtRQUNIZytEO0lBQ0YsS0E3bEJEM25ELE1BNGxCRzJuRCxVQUhLbGxEO0tBUUwsTUFBQTtJQUZRLElBQVBzRyxPQUhENCtDO0lBSUgsT0FQUWxsRCxRQU1Kc0c7R0FFZ0M7WUFHdENpaEQsUUFBUXJnRSxHQUFFOFk7SUFDWixZQURVOVk7Z0JBRUE7UUFDSGcrRDtJQUF5QyxPQXZtQjVDM25ELE1BdW1CRzJuRCxVQUhLbGxEO0dBR29EO1lBRzlEd25ELE9BQUt0Z0UsR0FBRThZO0lBQ1QsWUFETzlZOztLQUVHLE1BQUE7UUFDSGcrRDtJQUNGLEdBSklsbEQsUUFHRmtsRCxPQUVBO0lBQ0csR0FobkJOM25ELE1BNm1CRzJuRCxVQUhFbGxELFNBT0YsV0FQRUE7SUFRRixNQUFBO0dBQWlDO1lBR3RDaTZCLEtBQUsveUMsR0FBRThZO0lBQ1QsWUFETzlZOztLQUVHLE1BQUE7SUFFRyxJQUROZytELGtCQUNENStDLE9BREM0K0M7SUFFRixHQUxJbGxELFFBSUhzRyxNQUVDO0lBQ0csR0E1bkJOL0ksTUF3bkJHMm5ELFVBSEVsbEQsU0FRRixXQVJFQTtJQVNGLE1BQUE7R0FBaUM7WUFHdEN5bkQsZUFBYXZnRSxHQUFFOFksS0FBSTNkO0lBQ3JCLFlBRGU2RTs7S0FFTCxNQUFBO1FBQ0hnK0Q7SUFDRixHQXJvQkQzbkQsTUFvb0JHMm5ELFVBSFVsbEQsU0FLVixPQW5kSDRrRCxhQThjYTVrRCxLQUFJM2Q7SUFNZCxNQUFBO0dBQWlDO1lBR3RDcWxFLGdCQUFjeGdFLEdBQUU4WSxLQUFJM2Q7SUFDdEIsWUFEZ0I2RTs7S0FFTixNQUFBO1FBQ0hnK0Q7SUFDRixHQUphbGxELFFBR1hrbEQ7S0FHVyxJQUFWeUMsVUFwZUpqRCxjQWllR1EsT0FIZTdpRTtLQUFONkUsV0FNUnlnRTtLQUVKLE9BRklBOztJQUdFLEdBbnBCTnBxRCxNQTZvQkcybkQsVUFIV2xsRCxTQVVYLE9BeGVIMGtELGNBOGRjMWtELEtBQUkzZDtJQVdmLE1BQUE7R0FBaUM7WUFHdEN1bEUsYUFBYTFnRSxHQUFFN0U7SUFDSCxJQUFWc2xFLFVBNWlCQXpnRCxTQTJpQmE3a0I7SUFBRjZFLFdBQ1h5Z0U7SUFFSixPQUZJQTtHQUVHO1lBR0xFLFlBQVkzZ0UsR0FBRTdFO0lBQ2hCLFlBRGM2RTtnQkFFSixPQVJSMGdFLGFBTVkxZ0UsR0FBRTdFO1FBR1Q2aUU7SUFBUyxPQXJmWlIsY0FxZkdRLE9BSFM3aUU7R0FHeUI7WUFHdkN5bEUsYUFBYTVnRSxHQUFFN0U7SUFDakIsWUFEZTZFO2dCQUVMLE9BZFIwZ0UsYUFZYTFnRSxHQUFFN0U7SUFJRCxJQURUNmlFLGtCQUNEeUMsVUE1ZkZqRCxjQTJmR1EsT0FIVTdpRTtJQUFGNkUsV0FJVHlnRTtJQUVKLE9BRklBO0dBRUc7WUFHUEksWUFBWTdnRTtJQUNkLFlBRGNBO2dCQUVKO1FBbmZRZytELGtCQXFmWlAsT0FyZllPO0lBRWIsS0FuRkRkLGFBc2tCRU87S0FycUJGakIsZ0JBZ0xjd0I7S0F6Q2RYLDhCQXlDY1csT0FxZlpQO0tBQUFBLFVBdmZGRTs7SUF3ZkMsR0F0ZmFLLFVBcWZaUCxNQUpRejlEO0lBTVosV0FGSXk5RDtHQUVpQjtZQUdyQnFELGFBQWE5Z0U7SUFDZixZQURlQTtnQkFFTDtJQUVLLElBRFJnK0Qsa0JBQ0QrQyxTQURDL0M7SUF2ZUhKLE9BdWVHSTtJQUdHLFVBSEhBLFVBQ0QrQyxpQkFBQUE7SUFKUy9nRTtJQU9iLFdBSktnK0Q7R0FJaUI7WUFHdEJydEIsT0FBTzN3QyxHQUFFOFk7SUFDWCxZQURTOVk7O0tBRUMsTUFBQTtRQUNIZytEO0lBQ0YsR0FKTWxsRCxRQUdKa2xELE9BYkw4QyxhQVVPOWdFLElBS007SUFDTCxHQXRzQk5xVyxNQW1zQkcybkQsVUFISWxsRCxTQU9KLE9BcmZIOGtELE9BOGVPOWtEO0lBUUosTUFBQTtHQUFpQztZQUd0QzJFLE9BQU96ZCxHQUFHMEM7SUFDWixJQUFJcytELFFBbmVGeGdELGFBb2VGLFFBRlN4Z0I7OztNQUlEZytEOztpQkFFVXQ3RCxHQUFFcytELE9BQU1oRDtTQUFyQixJQUEyQmxsRCxNQUFOa2xEO1NBQ25CO1VBQUcsR0FBQSxXQURRdDdELEdBQWNvVyxTQW5EOUI2bkQsWUFtRGtCSyxPQUFZbG9EO1VBR2QsSUFBUGk2QixPQUhxQmo2QixRQUlsQixXQURIaTZCLFNBSGVpckI7b0JBSVo7Y0FKa0JsbEQsTUFHckJpNkI7O1FBR2tCO0tBcHJCekI2cEIsaUJBNHFCSW9CLFVBSkl0N0QsR0FDUnMrRCxPQUdJaEQ7O0lBU1IsT0FaSWdEO0dBWUM7WUFHSHRqRCxRQUFRMWQsR0FBRzBDO0lBQ2IsSUFBSXMrRCxRQW5mRnhnRCxhQW9mRixRQUZVeGdCOzs7TUFJRmcrRDs7aUJBRVV0N0QsR0FBSXMrRCxPQUFNaEQ7U0FBdkIsSUFBZWxuRCxPQUFjZ0MsTUFBTmtsRDtTQUNyQjtVQUFHLEdBQUEsV0FEUXQ3RCxHQUFFb1UsR0FBY2dDLFNBbkVoQzZuRCxZQW1Fb0JLLE9BQVlsb0Q7VUFHaEIsSUFBUGk2QixPQUh1Qmo2QixRQUlwQixXQURIaTZCLFNBSGlCaXJCO29CQUlkO2NBSk1FLE1BQUFwbkQsV0FBQUEsSUFBQW9uRCxLQUFjcGxELE1BR3ZCaTZCOztRQUdvQjtLQXBzQjNCNnBCLGlCQTRyQklvQixVQUpLdDdELEdBQ1RzK0QsT0FHSWhEOztJQVNSLE9BWklnRDtHQVlDO1lBR0hqa0QsV0FBVy9jLEdBQUcwQztJQUNoQixJQUFJcytELFFBbmdCRnhnRCxhQW9nQkYsUUFGYXhnQjs7O01BSUxnK0Q7O2lCQUVVdDdELEdBQUVzK0QsT0FBTWhEO1NBQXJCLElBQTJCbGxELE1BQU5rbEQ7U0FDbkI7VUFBTyxZQUFBLFdBREl0N0QsR0FBY29XO3dCQUdqQjRLLGtCQXRGYmk5QyxZQW1Ga0JLLE9BR0x0OUM7VUFDRyxJQUFQcXZCLE9BSnFCajZCLFFBS2xCLFdBREhpNkIsU0FKZWlyQjtvQkFLWjtjQUxrQmxsRCxNQUlyQmk2Qjs7UUFHa0I7S0FydEJ6QjZwQixpQkE0c0JJb0IsVUFKUXQ3RCxHQUNacytELE9BR0loRDs7SUFVUixPQWJJZ0Q7R0FhQztZQUdIaGtELFlBQVloZCxHQUFHMEM7SUFDakIsSUFBSXMrRCxRQXBoQkZ4Z0QsYUFxaEJGLFFBRmN4Z0I7OztNQUlOZytEOztpQkFFVXQ3RCxHQUFJcytELE9BQU1oRDtTQUF2QixJQUFlbG5ELE9BQWNnQyxNQUFOa2xEO1NBQ3JCO1VBQU8sWUFBQSxXQURJdDdELEdBQUVvVSxHQUFjZ0M7d0JBR25CNEssa0JBdkdiaTlDLFlBb0dvQkssT0FHUHQ5QztVQUNHLElBQVBxdkIsT0FKdUJqNkIsUUFLcEIsV0FESGk2QixTQUppQmlyQjtvQkFLZDtjQUxNRSxNQUFBcG5ELFdBQUFBLElBQUFvbkQsS0FBY3BsRCxNQUl2Qmk2Qjs7UUFHb0I7S0F0dUIzQjZwQixpQkE2dEJJb0IsVUFKU3Q3RCxHQUNicytELE9BR0loRDs7SUFVUixPQWJJZ0Q7R0FhQztZQUdIdmtELGFBQWF6YyxHQUFHMEM7SUFDbEIsSUFBSWtpRCxLQXJpQkZwa0MsYUFzaUJFcWtDLEtBdGlCRnJrQyxhQXVpQkYsUUFIZXhnQjs7O01BS1BnK0Q7O2lCQUVVdDdELEdBQUVraUQsSUFBR0MsSUFBR21aO1NBQXJCLElBQTJCbGxELE1BQU5rbEQ7U0FDbkI7VUFBbUQsSUFBQSxNQUQxQmxsRCxRQUFaaWpELE9BQ0csV0FETHI1RCxHQUFjb1csVUFBWjhyQyxLQUFHQztVQXRIckI4YixZQXNIa0I1RTtVQUdGLElBQVBocEIsT0FIcUJqNkIsUUFJbEIsV0FESGk2QixTQUhlaXJCO29CQUlaO2NBSmtCbGxELE1BR3JCaTZCOztRQUdrQjtLQTN1QnpCOHBCLGlCQW11QkltQixVQUxVdDdELEdBQ2RraUQsSUFDQUMsSUFHSW1aOztJQVNSLFdBYklwWixJQUNBQztHQVlFO1lBR0pub0MsY0FBYzFjLEdBQUcwQztJQUNuQixJQUFJa2lELEtBdGpCRnBrQyxhQXVqQkVxa0MsS0F2akJGcmtDLGFBd2pCRixRQUhnQnhnQjs7O01BS1JnK0Q7O2lCQUVVdDdELEdBQUlraUQsSUFBR0MsSUFBR21aO1NBQXZCLElBQWVsbkQsT0FBY2dDLE1BQU5rbEQ7U0FDckI7VUFBcUQsSUFBQSxNQUQxQmxsRCxRQUFaaWpELE9BQ0MsV0FETHI1RCxHQUFFb1UsR0FBY2dDLFVBQVo4ckMsS0FBR0M7VUF2SXZCOGIsWUF1SW9CNUU7VUFHSixJQUFQaHBCLE9BSHVCajZCLFFBSXBCLFdBREhpNkIsU0FIaUJpckI7b0JBSWQ7Y0FKTUUsTUFBQXBuRCxXQUFBQSxJQUFBb25ELEtBQWNwbEQsTUFHdkJpNkI7O1FBR29CO0tBNXZCM0I4cEIsaUJBb3ZCSW1CLFVBTFd0N0QsR0FDZmtpRCxJQUNBQyxJQUdJbVo7O0lBU1IsV0FiSXBaLElBQ0FDO0dBWUU7WUFHSjNVLGNBQWNsd0MsR0FBRzBDO0lBQ25CLElBQUlraUQsS0F2a0JGcGtDLGFBd2tCRXFrQyxLQXhrQkZya0MsYUF5a0JGLFFBSGdCeGdCOzs7TUFLUmcrRDs7aUJBRVV0N0QsR0FBRWtpRCxJQUFHQyxJQUFHbVo7U0FBckIsSUFBMkJsbEQsTUFBTmtsRDtTQUNuQjtVQUFRLFlBQUEsV0FER3Q3RCxHQUFjb1c7O2VBRWhCNEs7V0ExSmRpOUMsWUF3SmtCL2IsSUFFSmxoQzs7bUJBQ0N1OUMsb0JBM0pmTixZQXdKcUI5YixJQUdOb2M7VUFDQyxJQUFQbHVCLE9BSnFCajZCLFFBS2xCLFdBREhpNkIsU0FKZWlyQjtvQkFLWjtjQUxrQmxsRCxNQUlyQmk2Qjs7UUFHa0I7S0E5d0J6QjhwQixpQkFxd0JJbUIsVUFMV3Q3RCxHQUNma2lELElBQ0FDLElBR0ltWjs7SUFVUixXQWRJcFosSUFDQUM7R0FhRTtZQUdKNVUsZUFBZWp3QyxHQUFHMEM7SUFDcEIsSUFBSWtpRCxLQXpsQkZwa0MsYUEwbEJFcWtDLEtBMWxCRnJrQyxhQTJsQkYsUUFIaUJ4Z0I7OztNQUtUZytEOztpQkFFVXQ3RCxHQUFJa2lELElBQUdDLElBQUdtWjtTQUF2QixJQUFlbG5ELE9BQWNnQyxNQUFOa2xEO1NBQ3JCO1VBQVEsWUFBQSxXQURHdDdELEdBQUVvVSxHQUFjZ0M7O2VBRWxCNEs7V0E1S2RpOUMsWUEwS29CL2IsSUFFTmxoQzs7bUJBQ0N1OUMsb0JBN0tmTixZQTBLdUI5YixJQUdSb2M7VUFDQyxJQUFQbHVCLE9BSnVCajZCLFFBS3BCLFdBREhpNkIsU0FKaUJpckI7b0JBS2Q7Y0FMTUUsTUFBQXBuRCxXQUFBQSxJQUFBb25ELEtBQWNwbEQsTUFJdkJpNkI7O1FBR29CO0tBaHlCM0I4cEIsaUJBdXhCSW1CLFVBTFl0N0QsR0FDaEJraUQsSUFDQUMsSUFHSW1aOztJQVVSLFdBZElwWixJQUNBQztHQWFFO0dBR1I7OztZQUVJcWMsWUFBWWxoRSxHQUFFOFksS0FBS3FvRDtJQUNyQixHQURxQkEsV0FBTHJvRDtLQUNhLE1BQUE7SUFDMUIsS0F2MUJDekMsTUFxMUJpQjhxRCxXQUFMcm9EO0tBdUJYLE1BQUE7Z0JBdkJTOVk7O0tBS0YsTUFBQTtRQUNIZytEO0lBQ0YsS0E1MUJIM25ELE1BMjFCSzJuRCxVQU5PbGxEO0tBc0JQLE1BQUE7SUFaYSxJQUFac29ELFlBVk10b0Q7SUE5cUJaeWtELHVCQThxQll6a0QsS0FVTnNvRDtJQUdDLElBRER0QyxVQU5EZCxVQU5PbGxELE9BQUY5WSxXQVVKb2hFLFlBQUFBLGFBSkRwRDtJQXByQkxULHVCQThxQmlCNEQsUUFBTHJvRDtJQXFCUDtLQUFBLE1BVENnbUQsWUFaV3FDO0tBcUJaLGFBckJLbmhFLFdBQUU4WTs7R0F1QnNCO1lBR3BDdW9ELGNBQWNyaEUsR0FBRThZO0lBQ2xCLFlBRGdCOVk7O0tBRU4sTUFBQTtJQUNhLElBQWhCZytELGtCQUFnQixXQUhMbGxELFFBR1hrbEQ7aUJBN0JMa0QsWUEwQmNsaEUsR0FBRThZLEtBR1hrbEQ7R0FBMEU7WUFHL0VzRCxXQUFXdGhFLEdBQUU4WSxLQUFLcW9EO0lBQ3BCLEdBRG9CQSxXQUFMcm9EO0tBQ2MsTUFBQTtJQUMxQixLQXYzQkN6QyxNQXEzQmdCOHFELFdBQUxyb0Q7S0FnQlYsTUFBQTtnQkFoQlE5WTs7S0FLRCxNQUFBO1FBQ0hnK0Q7SUFDRixLQTUzQkgzbkQsTUEyM0JLMm5ELFVBTk1sbEQ7S0FlTixNQUFBO0lBTGEsSUFBWnNvRCxZQVZLdG9EO0lBOXNCWHlrRCx1QkE4c0JXemtELEtBVUxzb0Q7SUFFRCxHQU5BcEQsVUFOTWxsRCxLQUFGOVksV0FVSG9oRTtJQXB1Qk45RCwrQkEwdEJnQjZELFFBQUxyb0Q7SUFsdEJiLE9BeEJFc2tELDZCQTB1QmdCK0QsUUFBTHJvRDtHQWdCdUI7WUFHcEN5b0QsYUFBYXZoRSxHQUFFOFk7SUFDakIsWUFEZTlZOztLQUVMLE1BQUE7SUFFRyxJQUROZytELGtCQUNENStDLE9BREM0K0MsVUFFRSxXQUxRbGxELFFBSVhzRztpQkF2QkpraUQsV0FtQmF0aEUsR0FBRThZLEtBSVhzRztHQUMwRDtZQUc5REMsWUFBWXJmO0lBQUksVUE3YmhCdWEsUUE2Yll2YTtJQUFJLE9BQUE7R0FBNkI7Ozs7Ozs7O1dBbHlCM0MwakIsT0FqS0YyNEMsWUFrS0UxOEMsS0FIQTVmO09Ba1hGdUU7T0FUQTVFO09BREFnRztPQUdBcVQ7T0F4REFZO09BdkNBK2lDO09BNkRBOWlDO09BckVBQztPQTZDQStNO09BTUE3TTtPQUNBQztPQVZBQztPQUlBQztPQU5BQztPQUNBQztPQUVBQztPQUNBQztPQXVEQUM7T0FuREFDO09BQ0FDO09BQ0FDO09BM01BMEg7T0FrQkE1QjtPQUdBL0U7T0FRQTAzQztPQVZBbHpDO09Bc1dBa2dEO09BU0FDO09BV0FDO09BekJBSjtPQUNBQztPQUNBbEM7T0FDQTUrQztPQXVDQTJ6QjtPQVhBdXRCO09BZ0NBRTtPQVRBRDtPQW1DQUs7T0FOQUQ7T0FpTkFVO09BeUJBRTtPQW5CQUQ7T0FoQ0FKO09BckpBdndCO09BVkFtd0I7T0FUQUQ7T0F6U0Eva0Q7T0FRQUU7T0EzR0FxaUQ7T0FhQUM7T0F1Q0FHO09BQ0FDO09BbUdBemlEO09BYUE4aUQ7T0E1R0FKO09BT0FDO09BMkhBL3RCO09BREEzMUI7T0FrQ0F1a0Q7T0E5UEF6cEQ7T0FpQkErRjtPQTJiQTBCO09BZ0JBQztPQWdCQVg7T0FpQkFDO09BaUJBUDtPQWlCQUM7T0FpQkF3ekI7T0FrQkFEO09BblRBOXhCO09BQ0E4d0I7T0FjQUU7T0FTQUQ7T0FTQUY7T0FhQUQ7T0F0SkE4dkI7T0EwZUF4L0M7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ3g4Qks7OztJQUFBO0lBQUE7TUFBQTs7SUFBTCxjQUFLO0lBQUwsTUFBQTtJQUFBM2tCLFFBQUE7SUFBQSxNQUFBO0lBQUttRyxjQUFMLFdBQUEsK0JBQUFuRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBQUFvRztJQUFBO0tBQUEsSUFBQUMsZUFBQSxPQUFBLDZCQUFBQTtLQUFBLE9BQUE7OztLQUFBQzt5Q0FBQUYsWUFBQUU7O0dBR2tDO1lBSGxDQyxZQUFBM0YsS0FBQTRGO0lBQUE7S0FBQSxJQUFBSCxlQUFBSSxRQUFBLCtCQUFBN0YsS0FBQTRGO0tBQUEsT0FBQSw2QkFBQTVGLEtBQUE2RixPQUFBSjs7SUFBQSxJQUFBQyxpQkFBQUksUUFBQSwrQkFBQTlGLEtBQUE0RjtJQUFBLE9BQUE7MENBQUFELGNBQUEzRixLQUFBOEYsT0FBQUo7R0FHa0M7R0FIbEMsSUFBQW1ELG1CQUFBckQsWUFBQUc7WUFBQUksV0FBQS9GLEtBQUFDLFNBQUFDO0lBQUE7a0VBQUFEO0dBR2tDO1lBSGxDK0YsYUFBQWhHLEtBQUFDO0lBQUEsWUFBQSw4QkFBQUQsS0FBQUM7O0tBQUEsSUFBQWdHLFFBQUEsNkJBQUFqRyxLQUFBQztLQUNFLFdBREZnRzs7Z0VBQUFoRztJQUFBO0tBQUFpRztPQUFBLHdDQUFBRixlQUFBaEcsS0FBQUM7SUFFRSxXQUZGaUc7R0FHa0M7R0FIbEM7SUFBQTRDLG1CQUFBOUMsY0FBQUQ7SUFBQWdELFlBQUt4RCxhQUFMc0QsY0FBQUM7WUFBQUUsUUFBQXJJLE9BQUFDO0lBQUEsR0FBQSwrQkFBQUQsT0FBQUMsUUFBQTthQUFBRDtTQUNFMlksUUFERjNZO2NBQUFDLFVBQ0U7U0FBQTJZLFFBREYzWTtLQUNZLE9BQUEsNEJBQVYwWSxPQUFBQzs7UUFDQUMsUUFGRjdZO2FBQUFDLFVBQ0U7UUFDQTZZLFFBRkY3WTtrQkFFWXcrRCxPQUFBQyxPQUFBLE9BRlpyMkQsUUFFWW8yRCxPQUFBQyxPQUFDO0lBQUMsT0FBQSxrQ0FBWjdsRCxPQUFBQztHQUNnQzs7SUFIbEN4UTtJQUFBQzs7S0FBQUQ7Y0FBQWxJLEtBQUFDO00sU0FBQUE7T0FDRSxJQUFBcXRCLEtBREZydEIsUUFDRTJMLFFBQUEseUJBREY1TDswQ0FDRTRMLE9BQUEwaEI7O01BQ0EsSUFBQUMsT0FGRnR0QixRQUVFNHFCLFFBQUEseUJBRkY3cUI7eUNBQUFrSSxhQUVFMmlCLE9BQUEwQzs7O0tBRkZwbEI7Y0FBQWxJO01BQUE7T0FBQUQ7eUJBQUFrSSxhQUFBbEksS0FBQUM7O0tBR2tDO0dBdUIzQjtJQXJCSG9EO0lBQ0FLOztJQVFKdUY7SUFBQUM7O0lBQUFpOEQ7SUFBQUM7SUFPQUM7SUFBQUM7SUFBQTVvRDtJQUFBdlQ7SUFBQUU7SUFBQWs4RDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBeGhFO0lBQUF5aEU7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTNnRTtJQUFBNGdFO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFsaUU7SUFBQW1pRTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBdmdFO0lBQUF3Z0U7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFsdEQ7SUFBQW10RDtJQUFBdi9EO0lBS087O3dDQTFCRnRFOzs7OztJQWlDUSxVQUFBO0lBQWYsY0FBZTtJQUFmLE1BQUE7SUFBQTZELFVBQUE7R0FBZSxTQUFBQyxjQUFBL0o7SUFBZixXQUFBO0lBQUEsT0FBQTthQUFBLCtCQUFBOEosb0JBQWU5SjtHQUFpRTtZQUFoRmdLLGFBQVk5SixXQUFaSzs7O01BQXdCbWM7TUFBQXZXO2FBakN0QkQsV0FpQ3NCQztNQUFBd1c7d0NBQUFEOzRDQUFBQzs7c0NBQVp6YyxpQkFBWks7O1lBQUEwSixjQUFZN0osU0FBWk0sS0FBQTRGLEtBQUEvRjtrQkFBbUJHLEtBQUE0RjtTQUFLb1csZUFBQXZXLGVBQUFJLFFBakN0QkYsWUFpQ2lCM0YsS0FBQTRGLEtBQUtIO3VDQUFMekYsS0FBSzZGLE9BQUFtVzs7SUFBeEIsT0FBQSxzQ0FBWXRjLGdCQUFaTSxLQUFBNEYsS0FBQS9GO0dBQWdGO1lBQWhGMkosZUFBWTVKO2tCQUFaQztLQUFBLFdBQVlEO0tBQVosNEIsT0FBQTJKLG9CQUFBMUo7SUFBZ0Y7SUFBaEYsb0JBQUFBLEdBQUEsT0FBQXlKLGFBQVkxSixpQkFBWkMsR0FBZ0Y7R0FBQTtZQUFoRjRKLGFBQVkxSixNQUF5QkMsS0FBQUMsU0FBQUM7a0JBQXJDRixLQUFBQzs7TUFBd0J3RixLQWpDdEJPLGFBaUNGaEcsS0FBQUM7TUFBd0IrYixnQ0FBeEJoYyxLQUFBQztnQkFBd0J3RixJQUFBdVc7Ozt3Q0FBWmpjLGFBQXlCQyxLQUFBQyxTQUFBQzs7WUFBckN3SixhQUFZM0osTUFBWkMsS0FBQUM7a0JBQUFELEtBQUFDOztNQUF3QndGLEtBakN0Qk8sYUFpQ0ZoRyxLQUFBQztNQUF3QitiLGdDQUF4QmhjLEtBQUFDO2dCQUF3QndGLElBQUF1Vzs7SUFBeEIsT0FBQSxzQ0FBWWpjLGFBQVpDLEtBQUFDO0dBQWdGO1lBQWhGMEosZUFBWXRKO2tCQUFaTCxLQUFBQyxTQUFBSztLQUFBLE9BQUFtSixhQUFZcEosaUJBQVpMLEtBQUFDLFNBQUFLO0lBQWdGO0lBQWhGO3FCQUFBTixLQUFBQzthQUFBLE9BQUF5SixhQUFZckosaUJBQVpMLEtBQUFDO1lBQWdGOztHQUFBO1lBQWhGMkosUUFBQXBKO0lBQUEsSUFBQSxPQUFBbUosZUFBQW5KLFdBQUEsT0FBQWdKLGVBQUFoSjtJQUFBLFdBQWU2SSxjQUFmN0k7R0FBZ0Y7WUFBaEZzSyxVQUFBcEssT0FBQTQrRCxPQUFBQztrQkFBd0J6NkMsT0FBQUM7S0FBQTtNQUFBMjFCLFFBQUE1MUI7TUFBQTYxQixRQUFBNzFCO01BQUF1a0QsUUFBQXRrRDtNQUFBdWtELFFBQUF2a0Q7TUFBQXlFLElBQUEsV0FadEIzZixXQVlzQjh3QyxPQUFBMnVCO2tCQUFBOS9DLElBQUksMEJBQUpreEIsT0FBQTJ1QixTQUFBNy9DO0lBQVc7a0JBQWZ6ZSxPQUFBQyxPQUFBLE9BQUEsV0FBcEJ0SyxPQUFvQnFLLE9BQUFDLE9BQUU7SUFBZSxPQUFBLHdDQUFyQ3MwRCxPQUFBQztHQUE2QztZQUE3Q3QwRCxjQUFBbkssYUFBQUMsS0FBQUM7a0JBQXdCRCxLQUFBQzs7TUFBQXVvRSxLQUFBdm9FO01BQUF3b0UsS0FBQXhvRTtNQUFBMkwsbUJBbkJ0QjNDLGVBbUJzQmpKLEtBQUF5b0U7TUFBQTU5QyxrQ0FBQWpmLE9BQUE0OEQ7WUFBQTM5Qzs7dUNBQXhCOXFCLG1CQUFBQyxLQUFBQzs7WUFFSXlLLFlBQVU3RyxXQUFVRjtJQUN0QixTQURzQkEsVUFFVnBGLElBRlVvRixNQUVMLE9BQUEsV0FGTEUsV0FFQXRGO2dCQUZVb0YsTUFHQWlELGdCQUFOdEQ7SUFDZCx3QkFEY0EsVUFDd0IsMEJBRGxCc0Q7R0FDdUM7WUFHM0R3RCxZQUFVeEcsV0FBVU47SUFDdEI7O2NBRHNCQTtpQkFBQUE7Ozs7Ozs7OzttQ0FFWW9sRTs7Ozs7U0FBQUEsU0FGWnBsRTs7SUFHcEIsSUFBSyxlQUFVLFdBSExNLFdBRXNCOGtFLFVBQzNCO1VBQ0ZsbEU7U0FBQUMsMEJBQUFEO0tBQU8sZUFGc0JrbEUsUUFFRiw4QkFBM0JqbEU7O0dBQTZDO1lBR2hEc3JELGlCQUFnQndOO0lBQ2xCLGVBRGtCQTtHQUN1RDtHQU9uRTtJQUFBOzs7SUFBQTtJQUFBLE1BQUE7SUFBQSxVQUFBO0lBQVIsY0FBUTtJQUFSLE1BQUE7SUFBQWp6RCxVQUFBO0dBQVEsU0FBQUMsY0FBQWhMO0lBQVIsV0FBQTtJQUFBLE9BQUE7YUFBQSwrQkFBQStLLG9CQUFRL0s7R0FJVztZQUpuQmlMLGFBQUsvSztJQUFMO0tBQUF3YztLQUFBdlc7S0FBQSxPQUFBLFdBQUtqRyxXQUFMaUc7S0FBQXdXLE9BQUE7S0FBQSxPQUFBLDZCQUFBRDtJQUFBLE9BQUEsZ0NBQUFDO0dBSW1CO1lBSm5CelIsY0FBSzlLLFNBQUxNLEtBQUE0RjtJQUFBO0tBQUFvVztLQUFBdlc7S0FBQUksUUFBQSxXQUFLbkcsU0FBTE0sS0FBQTRGLEtBQUFIO0lBQUEsT0FBQSw2QkFBQXpGLEtBQUE2RixPQUFBbVc7R0FJbUI7WUFKbkJ2UixlQUFLN0s7a0JBQUxDO0tBQUEsV0FBS0Q7S0FBTCw0QixPQUFBNEssb0JBQUEzSztJQUltQjtJQUpuQixvQkFBQUEsR0FBQSxPQUFBMEssYUFBSzNLLGlCQUFMQyxHQUltQjtHQUFBO1lBSm5CNkssYUFBSzNLLE1BQUxDLEtBQUFDLFNBQUFDO0lBQUE7a0VBQUFEO0dBSW1CO1lBSm5CMEssYUFBSzVLLE1BQUxDLEtBQUFDO0lBQUE7S0FDSXlwRSxVQUFBLFdBREMzcEUsTUFBTEMsS0FBQUM7S0FFSTBwRSxTQUFBLDZCQUZKM3BFLEtBQUFDO0lBQUEsV0FDSXlwRSxTQUNBQztHQUVlO1lBSm5CLytELGVBQUt2SztpQkFBTEwsS0FBQUMsU0FBQUs7S0FBQSxPQUFBb0ssYUFBS3JLLGlCQUFMTCxLQUFBQyxTQUFBSztJQUltQjtJQUpuQjtxQkFBQU4sS0FBQUM7YUFBQSxPQUFBMEssYUFBS3RLLGlCQUFMTCxLQUFBQztZQUltQjs7R0FBQTtZQUpuQjRLLFFBQUFySztJQUFBLElBQUEsTUFBQW9LLGVBQUFwSyxXQUFBLE1BQUFpSyxlQUFBaks7SUFBQSxXQUFROEosY0FBUjlKO0dBSW1CO1lBRWY4TSxtQkFBWTVJLEdBQUksV0FBSkEsTUFBZTtZQUUzQmtsRSxRQUFRQyxlQUFnQnBqRSxLQUFlcWpFO0lBQ3pDLEdBRDBCcmpFLFNBQVdDLE1BQVhELFFBQUFzakUsV0FBV3JqRSxjQUFYcWpFOztLQUNTLE9BQW5DLFdBN0NBN0MsZ0JBNEN5QzRDLE1BQS9CRDtJQUMwRDtJQUE5RCxJQUVKbGlFLE1BRkk7YUFFSkEsUUFBa0IsT0FBbEJBO2dCQUFBQTs7U0FEWXlnQjtLQUFVLGVBQVZBLE9BRjJCMGhEOztJQUtuQjs7S0FESEU7S0FBTHhsRTtLQUNRLE1BQUEsaUNBTEl1bEUsVUFJWnZsRSxLQUFLd2xFO0lBQ2pCLFdBQU07R0FBeUU7WUFHL0V6K0QsWUFBVTVHLFdBQVVOO0lBQ3RCLFNBRHNCQTtLQUdwQixPQUFBLDZEQUhvQkE7SUFNUCxJQUFSeWxFLE9BTmV6bEUsU0FNUCxNQWRidWxFLFFBUVVqbEUsY0FNTG1sRTtJQUFRLE9BQUE7R0FBeUM7WUFHdERHO0lBQW1CLE9BQUE7R0FBc0Q7WUFDekVILEtBQUtwbEUsR0FBSSxPQUFKQSxLQUFVO1lBQ2YwakIsTUFBTTFqQixHQUFJLE9BQUpBLEtBQVc7WUFFakJ3bEUsU0FBU3A0QixlQUFjMXBCO0lBQ2QsSUFBUDBoRCxPQUFPLFdBbEVYakQsa0JBa0VXLFdBREEvMEIsZUFBYzFwQjtJQUV6QixXQUZ5QkEsT0FDckIwaEQ7R0FDVztHQUlYOzs7O0lBQUEsVUFBQTtJQUFSO2NBQVE7SUFBUixNQUFBO0lBQUFwK0QsVUFBQTtHQUFRLFNBQUF5K0QsbUJBQUE3cUU7SUFBUixVQUFBO0lBQUEsT0FBQSxXQUFBLCtCQUFBb00sbUJBQVFwTTtHQUF1QztZQUEvQzhxRSxrQkFBSzVxRSxXLE9BQUFBO1lBQUw2cUUsbUJBQUszcUUsUyxPQUFBQTtZQUFMNHFFLG9CQUFLMXFFO2lCQUFMQyxHQUFBLE9BQUEsV0FBS0QsaUJBQUxDLEdBQStDO0lBQS9DLG9CQUFBQSxHQUFBLE9BQUEsV0FBS0QsaUJBQUxDLEdBQStDO0dBQUE7WUFBL0MwcUUsa0JBQUt4cUUsTUFBY0MsS0FBQUMsU0FBQUM7SSw0Q0FBQUQ7O1lBQW5CdXFFLG9CQUFLenFFLE0sT0FBQUE7WUFBTDBxRSxvQkFBS3BxRTtpQkFBTEwsS0FBQUMsU0FBQUs7S0FBQSxPQUFBaXFFLGtCQUFLbHFFLGlCQUFMTCxLQUFBQyxTQUFBSztJQUErQztJQUEvQztxQkFBQU4sS0FBQUM7YUFBQSxPQUFBLFdBQUtJLGlCQUFMTCxLQUFBQztZQUErQzs7R0FBQTtZQUEvQ3lxRSxhQUFBbHFFO0lBQUE7S0FBQSxNQUFBaXFFLG9CQUFBanFFO0tBQUEsTUFBQThwRSxvQkFBQTlwRTtJQUFBLFdBQVEycEUsbUJBQVIzcEU7R0FBK0M7WUFBL0NtcUUsaUJBQUtDLFVBQUwsT0FBS0EsU0FBMEM7WUFFM0NDLGlCQUFpQmptRSxXQUFVdEY7SUFDN0IsSUFBSSxVQUFBLFdBRGVzRixXQUFVdEYsSUFDekI7VUFDRmlGO1NBQUFDLDBCQUFBRDtLQUNBO01BQUssMkJBQXFDLDRCQUQxQ0M7TUFDSzs7Z0JBQ0c7O0dBQXdFO0dBRzdDOzs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBRW5Dc21FLCtCQUF1Q0MsU0FBUTFtRTtJQUNqRCxJQUFJdWxCLHNCQUNBNjNDLE9BREE3M0M7d0JBQUFBLE9BQ0E2M0MsZUFFMkI7d0JBSDNCNzNDLDRCQURxQ21oRCxTQUFRMW1FLE1BT2pDO0lBSEwsT0FBQTtHQUdNOztJQUdmcVo7SUFDQUU7SUFDQUU7Ozs7Ozs7O09BbkhBdFk7T0FBQUc7T0FBQUs7T0FBQUQ7T0FBS1I7T0FBTHNEO09BQUFDO09BQUFDO09BY0FpQjtPQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW1HQXlUO09BQ0FFO09BQ0FFOzs7T0E5RkFzckQ7T0FBQW50RDtPQUFBa3REO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEOztPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBeGdFO09BQUF1Z0U7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQW5pRTtPQUFBa2lFO09BQUFEO09BQUFEO09BQUFEO09BQUE1Z0U7T0FBQTJnRTtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBemhFO09BQUF3aEU7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQWw4RDtPQUFBRjtPQUFBdVQ7T0FBQTRvRDtPQUFBRDs7T0FQQUY7T0FBQUM7T0E4RUlnRTtPQUFSQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRDtPQUFBRTtPQUFBQztPQUVJRztPQUZKRjs7UUEzRGlCdGhFO1FBQWZDO1FBQUFDO1FBQUFHO1FBQUFEO1FBQUFEO1FBQUFHO1FBQUFDO1FBQUFrQjtRQUFBRztRQVNJRTtRQVBBTTtRQWNBcWtEOztRQXdCQXZrRDtRQVZBK0I7UUFtQkEyOEQ7UUF6QkkzL0Q7UUFBUkM7UUFBQUM7UUFBQUc7UUFBQUQ7UUFBQUQ7UUFBQUc7UUFBQUM7UUE2QklxL0Q7UUFyQkFOO1FBbUJBeGhEO1FBREEwaEQ7T0FvQkZnQjs7O1NBbEdJMW1FO1NBQ0FLO1NBTkplO1NBQUFHO1NBQUFLO1NBQUFEO1NBQUtSO1NBQUxzRDtTQUFBQztTQUFBQztTQUFBRTtTQUFBQztTQUFBRjs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FDbUJNd3VDLElBQUk5eUMsR0FBSSxPQUFKQSxLQUFTO2FBQ2IwakIsTUFBTTFqQixHQUFJLE9BQUpBLEtBQVc7YUFoQnZCRCxVQWdDYyt3QyxhQUFZdzFCLGNBQWF0bUU7S0FDckMsSUFBV3lFLFFBRDBCekU7OztPQWJ4Qmk2RDtPQUFBc007T0FBQUMsc0JBYUQxMUIsYUFiQ21wQjtPQUFBd00sc0JBYVdILGNBYlhDO3FCQUFBQyxjQUFBQzs7b0RBY0ZoaUU7SUFBZ0Q7YUFqQzdEMmQsVUFvQ2NwaUI7S0FDMkIsVUFBQSxzQkFEM0JBO1FBQ0osa0NBRElBO01BQ1osTUFBQTtLQUtxRDtNQUFBLE1BQUEsc0JBTnpDQTtNQU1rQixVQUFBLHNCQU5sQkE7TUFNUnN2QyxPQUFPO21CQUN3Qm8zQjtNQUNqQyxJQUFJNXpCLE1BRDZCNHpCO1dBRTNCLHNCQVRJMW1FLE1BUU44eUM7T0FFTSxNQUFBO01BRUksR0FBQSxzQkFOWnhELE1BRUV3RDtPQUlGLE1BQUE7TUFDQSxPQUFBLHNCQVBBeEQsTUFFRXdEO0tBSzBCO0tBTkYsT0FBQSxrQ0FQbEI5eUM7SUFhcUI7YUFqRG5DMmEsT0FvRGE1WSxVQUFvQzR2QztLQUMvQyxHQURXNXZDO1VBQWlCQyxNQUFqQkQsUUFBQTJ2QyxpQkFBaUIxdkM7O1VBQWpCMHZDO0tBQ1gsWUFEMkN6RixnQkFBUDEwQixPQUFPMDBCLGdCQUFQMTBCO0tBR1M7TUFBQSxNQUFBLDZCQUhFbzZCO01BR3JDLE1BQUEseUJBSENELHFCQUF5Qm42QjtLQUNwQyxjQUNVO0lBRVQ7YUFHQ292RCxLQUFLM21FLEdBQUUwQztLQUFGMUMsT0FBQUE7eUJBQUFBLE9BQUFBLHVCQUU4RDtLQUE3QyxPQUFBLHlCQUZmMEM7SUFFNkQ7YUFHcEVra0Usa0JBQWtCNW1FO0tBQ3BCLGNBRG9CQTs7ZUFFZjs7SUFBMkU7YUFsRWxGNndDLE1BcUVVN3dDO0tBTE40bUUsa0JBS001bUU7S0FFUixtQ0FGUUE7a0NBQUFBO0lBR1c7YUF4RXJCeWYsT0EyRVd6ZixHQUFJLDZCQUFKQSxNQUF3QjthQTNFbkM0WixTQTRFYTVaLEdBQUksYUE1RWpCeWYsT0E0RWF6ZixXQUFnQjthQTVFN0I2bUUsT0E4RVc3bUUsR0FBRW9xQztLQUNMLFlBQUEsc0JBREdwcUMsTUFBRW9xQztpQkFFRDtTQUNIdHhCO0tBQU8sV0FBSyxxQ0FBWkE7SUFBaUM7YUFqRjFDZ3VELFdBb0ZlOW1FLEdBQUVvcUM7S0FBZSxVQUFBLHNCQUFqQnBxQyxNQUFFb3FDO0tBQUksT0FBQTtJQUE0QzthQXBGakV6d0IsSUFxRlEzWixHQUFFb3FDLEdBQUksT0FBQSxzQkFBTnBxQyxNQUFFb3FDLEdBQXVCO2FBckZqQzd2QixRQXdGWXZhO0tBQWEsVUFBQSxtQ0FBYkE7S0FBYSxPQUFBLCtCQXhFbkIwakI7SUF3RXFFO2FBeEYzRWxKLFNBeUZheGE7S0FBYyxVQUFBLG1DQUFkQTtLQUFjLE9BQUEsZ0NBekVyQjBqQjtJQXlFd0U7YUF6RjlFeEosUUEyRllsYSxHQUFHMEM7S0FDYixPQWpDRWlrRTtjQWdDUTNtRTs7NEJBQzhDMG1FLElBQU0sT0FBOUQsV0FEYWhrRSxHQUMyQ2drRSxPQUFnQjtlQUFyQixPQUFBLG1DQUR6QzFtRTtjQUMrRDtJQUFDO2FBNUY1RWlhLE9BK0ZXamEsR0FBRzBDO0tBQ1osT0FyQ0Vpa0U7Y0FvQ08zbUU7OzRCQUM4QzBtRSxJQUFNLE9BQTdELFdBRFloa0UsR0FDMkNna0UsT0FBZ0I7ZUFBckIsT0FBQSxtQ0FEekMxbUU7Y0FDK0Q7SUFBQzthQWhHM0VzYSxTQW1HYXRhLEdBQUcwQztLQUNkLE9BekNFaWtFO2NBd0NTM21FOzs0QkFDOEMwbUUsSUFBTSxPQUEvRCxXQURjaGtFLEdBQzJDZ2tFLE9BQWdCO2VBQXJCLE9BQUEsbUNBRHpDMW1FO2NBQytEO0lBQUM7YUFwRzdFcWEsS0F1R1NyYSxHQUFHMEM7S0FDVixPQTdDRWlrRTtjQTRDSzNtRTs7NEJBR2lDMG1FLElBQU0sT0FGOUMsV0FEVWhrRSxHQUc4QmdrRSxPQUFnQjtlQUFwRCxVQUFBLG1DQUhHMW1FO2VBR0gsT0FBQSxpQ0ExRkEwakI7Y0EyRmtCO0lBQUM7YUEzR3pCcWpELFFBOEdZL21FLEdBQUVnbkUsZUFBY2wwQixLQUFJcHZCO0tBOUM1QmtqRCxrQkE4Q1E1bUU7S0FFUCxHQUFBLHNCQUZPQSxNQUFnQjh5QyxNQUdyQjtLQUVZO01BQVhtMEIsZUFMb0JuMEIsS0FBSXB2QjtNQU14QjVLO3FCQU5Na3VEO1dBU0ksbUNBVE5obkUsTUFLSmluRTtXQUdTLG1DQVJMam5FLE1BS0ppbkU7S0FNSixzQkFYUWpuRSxNQUFnQjh5QyxLQU1wQmg2QjtLQUtKO0lBQ0k7YUExSFJvdUQsYUE2SGlCbG5FO0tBQUk7S0FBQSwwQixPQTdIckIrbUUsUUE2SGlCL21FO0lBQW1CO2FBN0hwQ21uRSxjQThIa0JubkU7S0FBSTtLQUFBLDBCLE9BOUh0QittRSxRQThIa0IvbUU7SUFBb0I7YUE5SHRDb25FLFlBdUlnQnBuRSxHQUFFZ25FLGVBQWNsMEIsS0FBSXB2QjtLQUNsQyxlQXhJRnFqRCxRQXVJZ0IvbUUsR0FBRWduRSxlQUFjbDBCLEtBQUlwdkIsUUFHekI7S0FOQztNQUFBLE1BQUEsc0JBR0kxakIsTUFBZ0I4eUM7Ozs7Ozs7O0lBR25CO2FBMUlidTBCLGlCQTZJcUJybkU7S0FBSTtLQUFBLDBCLE9BN0l6Qm9uRSxZQTZJcUJwbkU7SUFBdUI7YUE3STVDc25FLGtCQThJc0J0bkU7S0FBSTtLQUFBLDBCLE9BOUkxQm9uRSxZQThJc0JwbkU7SUFBd0I7YUE5STlDdW5FLDRCQWtKZ0N2bkUsR0FBRTh5QztLQWxGOUI4ekIsa0JBa0Y0QjVtRTtLQUVwQixJQUFOOFksTUFBTSxzQkFGb0I5WSxNQUFFOHlDO0tBR2hDLG1DQUg4Qjl5QyxNQUUxQjhZO0tBRVksT0FBQSxxQ0FGWkE7SUFFMkI7YUF0SmpDMHVELHdCQXlKNEJ4bkUsR0FBRTh5QztLQXpGMUI4ekIsa0JBeUZ3QjVtRTtrQkFHbEI4WTtNQUNSLG1DQUowQjlZLE1BR2xCOFk7TUFFUSxPQUFBLHFDQUZSQTtLQUV1QjtLQUZqQixVQUFBLHNCQUhZOVksTUFBRTh5Qzs7SUFLRzthQTlKakMyMEIsNkJBaUtpQ3puRSxHQUFFOHlDO0tBakcvQjh6QixrQkFpRzZCNW1FO0tBRXJCLElBQU44WSxNQUFNLHNCQUZxQjlZLE1BQUU4eUM7S0FHakMsbUNBSCtCOXlDLE1BRTNCOFk7S0FFWSxPQUFBLHFDQUZaQTtJQUUyQjthQXJLakM0dUQseUJBd0s2QjFuRSxHQUFFOHlDO0tBeEczQjh6QixrQkF3R3lCNW1FO2tCQUduQjhZO01BQ1IsbUNBSjJCOVksTUFHbkI4WTtNQUVRLE9BQUEscUNBRlJBO0tBRXVCO0tBRmpCLFVBQUEsc0JBSGE5WSxNQUFFOHlDOztJQUtFO2FBN0tqQzYwQixpQkFnTHFCM25FLEdBQUVnbkU7S0FoSG5CSixrQkFnSGlCNW1FOztNQUVmNG5FO3FCQUZpQlo7V0FLUCxtQ0FMS2huRTtXQUlOLG1DQUpNQTtLQU9uQixLQUxJNG5FLFVBTU07U0FDSGxCLEtBUEhrQjtLQVFGLHNCQVZpQjVuRSxNQVNaMG1FO0tBRUwsZUFGS0EsT0FBQUE7SUFFa0I7YUEzTDNCbUIscUJBa015QjduRSxHQUFFZ25FO0tBQ25CLFlBbk1SVyxpQkFrTXlCM25FLEdBQUVnbkU7OzhCQUdkN3JFLGdCQUFIaXZDO01BQVMsV0FBVEEsR0FBR2p2Qzs7Ozs7SUFBVTthQXJNdkIyc0Usc0JBd00wQjluRTtLQUFJLE9BeE05QjJuRSxpQkF3TTBCM25FO0lBQTRCO2FBeE10RCtuRSwwQkF5TThCL25FO0tBQUksT0F6TWxDNm5FLHFCQXlNOEI3bkU7SUFBZ0M7YUF6TTlEZ29FLHVCQTBNMkJob0UsR0FBSSxPQTFNL0IybkUsaUJBME0yQjNuRSxjQUE2QjthQTFNeERpb0UsMkJBMk0rQmpvRTtLQUFJLE9BM01uQzZuRSxxQkEyTStCN25FO0lBQWlDO2FBM01oRWtvRSxRQTZNWWxvRSxHQUFFZ25FO0tBQ04sWUE5TVJXLGlCQTZNWTNuRSxHQUFFZ25FO2lCQUVGO1NBQ0M3ckU7S0FBTSxXQUFOQTtJQUFZO2FBaE56Qmd0RSxhQW1OaUJub0UsR0FBSSxPQW5OckJrb0UsUUFtTmlCbG9FLGdCQUFtQjthQW5OcENvb0UsY0FvTmtCcG9FLEdBQUksT0FwTnRCa29FLFFBb05rQmxvRSxjQUFvQjthQXBOdENxb0UsY0FzTmtCcm9FO0tBQ1YsWUFBQSxtQ0FEVUE7aUJBRU47NkJBQ0Q4eUMsa0JBQUtwdkI7S0FBVyxlQUFoQm92QixLQUFLcHZCO0lBQTRCO2FBek41Q3RFLEtBNE5TcGY7S0FDRCxZQUFBLG1DQURDQTtpQkFFRztTQUNIMG1FO0tBQU0sV0FBTkE7SUFBbUI7YUEvTjVCNEIsZUFrT21CdG9FO0tBQ1gsWUFBQSxtQ0FEV0E7aUJBRVA7NkJBQ0Q4eUMsa0JBQUtwdkI7S0FBVyxlQUFoQm92QixLQUFLcHZCO0lBQTRCO2FBck81Q3M2QyxNQXdPVWgrRDtLQUNGLFlBQUEsbUNBREVBO2lCQUVFO1NBQ0gwbUU7S0FBTSxXQUFOQTtJQUFtQjthQTNPNUI2QixZQWdQZ0J2b0UsR0FBRWduRTtLQUNWLFlBalBSa0IsUUFnUGdCbG9FLEdBQUVnbkU7bUJBR1Q3ckUsY0FBSyxPQUFMQTs7OztJQUFNO2FBblBmcXRFLGlCQXNQcUJ4b0UsR0FBSSxPQXRQekJ1b0UsWUFzUHFCdm9FLGdCQUF1QjthQXRQNUN5b0Usa0JBdVBzQnpvRSxHQUFJLE9BdlAxQnVvRSxZQXVQc0J2b0UsY0FBd0I7YUF2UDlDc3ZDLEtBeVBTdHZDO0tBRUUsVUFBQSxtQ0FGRkE7S0FFRSxPQUFBLCtCQTVPTDh5QztJQTRPcUQ7YUEzUDNEaDNCLE1BOFBVOWIsR0FBRzBDO0tBQ1gsT0FwTUVpa0U7Y0FtTU0zbUU7OzRCQUU2QjBtRSxJQUFNLE9BRDNDLFdBRFdoa0UsR0FFMEJna0UsT0FBQUEsT0FBa0M7ZUFBdkMsT0FBQSxrQ0FGeEIxbUU7Y0FFZ0U7SUFBQzthQWhRM0U2WixLQW1RUzdaLEdBQUcwQztLQUFJLE9BblFoQm9aLE1BbVFTOWIsbUJBQStCcXZDLE1BQVEsT0FBQSxXQUFwQzNzQyxHQUE0QjJzQyxNQUFjO0lBQUM7YUFuUXZEcnpCLE1BcVFVaGMsR0FBRzZhLE1BQU1uWTtLQUNqQixPQTNNRWlrRTtjQTBNTTNtRTs7NEJBRW1DMG9FLElBQUdoQyxJQUMxQyxPQUZKLFdBRGlCaGtFLEdBRTBCZ21FLElBQUdoQyxPQUFBQSxPQUNYO2VBREcsT0FBQSxtQ0FGOUIxbUUsTUFBRzZhO2NBR3lCO0lBQUM7YUF4UXZDZixLQTJRUzlaLEdBQUc2YSxNQUFNblk7S0FBSSxPQTNRdEJzWjtjQTJRU2hjO2NBQUc2YTt1QkFBZ0M2dEQsV0FBV3I1QixNQUFRLE9BQUEsV0FBN0Mzc0MsR0FBMEJnbUUsSUFBV3I1QixNQUFpQjtJQUFDO2FBM1F6RWwxQixNQTRRVW5hLEdBQUcwQyxHQUFJLE9BQUEsOEJBNVFqQm9YLE1BNFFVOVosR0FBRzBDLEdBQThCO2FBNVEzQzBYLElBNlFRelksR0FBRTNCLEdBQUcwQztLQUFJLE9BQUEsOEJBN1FqQm9YLE1BNlFRblksR0FBRTNCLEdBQUcwQztJQUE4QjthQTdRM0MrWCxRQThRWXphLEdBQUdzRTtLQUFVLE9BQUEsOEJBOVF6QndWLE1BOFFZOVosR0FBR3NFO0lBQTRDO2FBOVEzRG9XLFFBK1FZMWEsR0FBR3NFO0tBQVUsT0FBQSw4QkEvUXpCd1YsTUErUVk5WixHQUFHc0U7SUFBNEM7YUEvUTNEeVYsWUFnUmdCL1osR0FBRzZhLE1BQU1uWTtLQUFJLE9BQUEsOEJBaFI3Qm9YLE1BZ1JtQmUsTUFBTW5ZLEdBQVQxQztJQUFtRDthQWhSbkVnYSxXQWlSZWhhLEdBQUc2YSxNQUFNblk7S0FBSSx3Q0FqUjVCb1gsTUFpUmtCZSxNQUFNblk7S0FBSSxxQiw0QkFBYjFDO0lBQWtEO2FBalJqRTJvRSxZQW1SZ0Izb0UsR0FBRzBDO0tBQ2pCO01BQ1EsWUFyUlYwbEUsY0FtUmdCcG9FO2tCQUdGO1VBQ0g3RTtNQUNMLFdBTGF1SCxHQUlSdkg7O0lBSUY7YUEzUlR3MUMsT0E4Ulczd0MsR0FBRW9xQztLQTlOVHc4QixrQkE4Tk81bUU7S0FFSCxZQUFBLHNCQUZHQSxNQUFFb3FDO2lCQUdEO1NBQ0h0eEI7S0FDTCxtQ0FMTzlZLE1BSUY4WTtLQUNMO0lBQ0c7YUFwU1A4dkQsV0E2U2U1b0UsR0FBRTh5QztLQTdPYjh6QixrQkE2T1c1bUU7aUJBN1NmMndDLE9BNlNlM3dDLEdBQUU4eUMsTUFJTjtLQVBvQztNQUFBLE1BQUEsc0JBR2hDOXlDLE1BQUU4eUM7Ozs7Ozs7O0lBSUo7YUFqVGIrMUIsa0JBb1RzQjdvRSxHQUFFb3FDO0tBcFBwQnc4QixrQkFvUGtCNW1FO0tBRWQsWUFBQSxzQkFGY0EsTUFBRW9xQztpQkFHWjtTQUNIdHhCO0tBQ0wsbUNBTGtCOVksTUFJYjhZO0tBRUwsV0FBSyxxQ0FGQUE7SUFFcUI7YUExVDlCZ3dELFFBNlRZOW9FLEdBQUVvcUMsR0FBRWp2QztLQTdQWnlyRSxrQkE2UFE1bUU7S0FFSixZQUFBLHNCQUZJQSxNQUFFb3FDO2lCQUdGO1NBQ0h0eEI7S0FDTCxxQ0FES0EsVUFKTzNkO0tBTVo7SUFBRzthQW5VUDR0RSxZQTZVZ0Ivb0UsR0FBRTh5QyxLQUFFMzNDO0tBN1FoQnlyRSxrQkE2UVk1bUU7aUJBN1VoQjhvRSxRQTZVZ0I5b0UsR0FBRTh5QyxLQUFFMzNDLElBSVQ7S0FQQztNQUFBLE1BQUEsc0JBR0k2RSxNQUFFOHlDOzs7Ozs7OztJQUlMO2FBalZiazJCLEtBb1ZXam5FLEtBQU8vQixHQUFFZ25FO0tBQ2xCLEdBRFNqbEUsU0FBSUMsTUFBSkQsUUFBQStpQixJQUFJOWlCLGNBQUo4aUI7UUFwVlhyRixPQW9Wa0J6ZixNQUFQOGtCLEdBRUosT0F0VlArckIsTUFvVmtCN3dDO0tBSWQ7UUFKTzhrQjs7O09BcFZYNmlELGlCQW9Wa0IzbkUsR0FBRWduRTtPQUtOO1VBTEhsaUQ7Ozs7O0lBTUg7YUExVlJta0QsVUE2VmVua0QsR0FBRTlrQixHQUFJLE9BN1ZyQmdwRSxLQTZWZWxrRCxHQUFFOWtCLGdCQUFtQjthQTdWcENrcEUsV0E4VmdCcGtELEdBQUU5a0IsR0FBSSxPQTlWdEJncEUsS0E4VmdCbGtELEdBQUU5a0IsY0FBb0I7YUE5VnRDa2IsS0FnV1NsYjtLQUNQO01BQXFDLE1BQUEsc0JBRDlCQTtNQUNIbXBFLFNBaldOeHVELGNBQUE4RSxPQWdXU3pmO0tBaFdUOGI7T0FnV1M5YixZQUVVOHlDLEtBQUt6RCxNQUFRLE9BbFdoQ2c0QixpQkFpV004QixRQUNhcjJCLEtBQUt6RCxNQUF3QztLQUE5RCxPQURJODVCO0lBRUU7O2NBY1J6akUsWUFBSzBqRSxhQUFMcnBEO01BQUEsT0FqWEFoZ0IsbUJBaVhLcXBFLGFBQUxycEQ7S0FBOEQ7U0FFMUQ0eEI7Y0FDQTN4QixTQUFRMHhCLGdCQUFnQm42QjtNQUFVLE9BcFh0Q29ELE9Bb1hZKzJCLGdCQUFnQm42QixNQUR4Qm82QjtLQUN1RTtLQVB4QzthQTdXbkNseUI7YUFBQTdGO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUEwSDthQW9YSXBDO2FBcFhKNndCO2FBQUEzMUI7YUFBQXZCO2FBQUFrdEQ7YUFBQUM7YUFBQUM7YUFBQUs7YUFBQUY7YUFBQUc7YUFBQUY7YUFBQUc7YUFBQUU7YUFBQUQ7YUFBQUc7YUFBQUQ7YUFBQXJvRDthQUFBaXBEO2FBQUFySzthQUFBc0s7YUFBQWg1QjthQUFBNDRCO2FBQUFLO2FBQUFKO2FBQUFLO2FBQUFKO2FBQUFLO2FBQUFkO2FBQUFFO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFDO2FBQUFVO2FBQUFoNEI7YUFBQWk0QjthQUFBQzthQUFBQzthQUFBQzthQUFBQzthQUFBRTthQUFBRDthQUFBbnREO2FBQUFFO2FBaVhBdFc7OztLQVNpQixJQUFYaXNDLFdBQVc7S0FIcUQsbUNBR2hFQTs7SUE1WHVEO1lBRTdENXhDO1lBQUEwZjtZQUFBN0Y7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQUM7WUFBQTBIO1lBQUF6SDtZQUFBazJCO1lBQUEzMUI7WUFBQXZCO1lBQUFrdEQ7WUFBQUM7WUFBQUM7WUFBQUs7WUFBQUY7WUFBQUc7WUFBQUY7WUFBQUc7WUFBQUU7WUFBQUQ7WUFBQUc7WUFBQUQ7WUFBQXJvRDtZQUFBaXBEO1lBQUFySztZQUFBc0s7WUFBQWg1QjtZQUFBNDRCO1lBQUFLO1lBQUFKO1lBQUFLO1lBQUFKO1lBQUFLO1lBQUFkO1lBQUFFO1lBQUFDO1lBQUFDO1lBQUFDO1lBQUFDO1lBQUFVO1lBQUFoNEI7WUFBQWk0QjtZQUFBQztZQUFBQztZQUFBQztZQUFBQztZQUFBRTtZQUFBRDtZQUFBbnREO1lBQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0NGQXpYO0tBRVFEO0tBQUFFOzs7O0tBT05tdEM7SUFOZ0M7WUFEMUJydEM7WUFGUkM7WUFFUUM7WUFPTm10Qzs7Ozs7OzthQU9FcHRDLFlBQVkrbUQsT0FBTXRyRDtLQUF3QixVQUFBLGlCQUF4QkE7S0FBd0IsT0FBQSw0QkFBOUJzckQ7SUFBc0M7SUFIZixzQkFHbkMvbUQ7Ozs7S0FJSkE7S0FFUUQ7S0FBQUU7Ozs7S0FPTm10QztJQU4wQjtZQURwQnJ0QztZQUZSQztZQUVRQztZQU9ObXRDOzs7Ozs7O2FBTUVwdEMsWUFBWSttRCxPQUFNdHJEO0tBQXdCLFVBQUEsaUJBQXhCQTtLQUF3QixPQUFBLDRCQUE5QnNyRDtJQUFzQztJQUgwQixnQkFHNUUvbUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FJSkE7S0FFUUM7S0FPTm10QztJQU5rQyxXQUhwQ3B0QyxhQUVRQyxNQU9ObXRDOzs7OztLQUtBcHRDO0tBRVFEO0tBQUFFOzs7OztLQVdKbXRDOzs7NkRBQUFBOzs7O0tBS0p3QztJQVpvQztZQUo1Qjd2QztZQUZSQztZQUVRQztZQWdCUjJ2Qzs7Ozs7Ozs7S0FLQTV2QztLQUVRRDtLQUFBRTs7Ozs7O0tBV0ptdEM7Ozs7a0RBQUFBOzs7O0tBS0p3QztJQVo4QjtZQUp0Qjd2QztZQUZSQztZQUVRQztZQWdCUjJ2Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBaUJJeEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUFBQTs7Ozs7O0tBWkpwdEM7S0FFUUM7S0FnQlIydkM7SUFac0MsV0FOdEM1dkMsYUFFUUMsTUFnQlIydkM7Ozs7Ozs7Ozs7Ozs7Ozs7YUFPRTV2QyxZQUFZK21ELE9BQU10ckQ7S0FBd0IsVUFBQSxpQkFBeEJBO0tBQXdCLE9BQUEsNEJBQTlCc3JEO0lBQXNDO0lBSFg7O2NBR3ZDL21EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7S0F1QkVvdEM7SUFKK0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBSS9EQTs7Ozs7O0tBYUlBO3VEQUFBQTtLQUdKd0M7SUFUZ0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBU2hDQTs7R0FuQ0ksSUFBQSx3Q0FERTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0MxSFE7SUFBcEJrMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBTEFDOzs7YUFXSUMsV0FBV3JvRSxLQUFNLE9BQUEsZ0NBQU5BLEtBQStCO2FBRTFDc29FLFlBQVl4cEUsR0FBR2lYLE9BQU93eUQsT0FBTUM7S0FDOUIsSUFBSXhvRSxNQURhK1YsUUFBYXl5RDtRQUFORCxTQUNwQnZvRSxLQUNpQjtLQUE2QyxJQUFBLE1BQUEsZ0JBRnBEbEIsR0FDVmtCLE1BQ2lELE1BQUE7S0FBQSxPQUFBO0lBQXlCO2FBRzVFeW9FLFlBQVkzcEUsR0FBR2lYLE9BQU93eUQ7S0FDeEI7TUFpQkUsTUF2QkFELFlBS1l4cEUsR0FBR2lYLE9BQU93eUQ7TUFpQnRCLE1BdEJBRCxZQUtZeHBFLEdBQUdpWCxPQUFPd3lEO01BZ0J0QixNQXJCQUQsWUFLWXhwRSxHQUFHaVgsT0FBT3d5RDtNQWV0QixNQXBCQUQsWUFLWXhwRSxHQUFHaVgsT0FBT3d5RDtNQWN0QixNQW5CQUQsWUFLWXhwRSxHQUFHaVgsT0FBT3d5RDtNQWF0QixNQWxCQUQsWUFLWXhwRSxHQUFHaVgsT0FBT3d5RDtNQVl0QixNQWpCQUQsWUFLWXhwRSxHQUFHaVgsT0FBT3d5RDtNQVd0QixNQWhCQUQsWUFLWXhwRSxHQUFHaVgsT0FBT3d5RDtNQVV0QixNQWZBRCxZQUtZeHBFLEdBQUdpWCxPQUFPd3lEO01BU3RCLE1BZEFELFlBS1l4cEUsR0FBR2lYLE9BQU93eUQ7TUFRdEIsTUFiQUQsWUFLWXhwRSxHQUFHaVgsT0FBT3d5RDtNQU90QixNQVpBRCxZQUtZeHBFLEdBQUdpWCxPQUFPd3lEO01BTXRCLE1BWEFELFlBS1l4cEUsR0FBR2lYLE9BQU93eUQ7TUFLdEIsTUFWQUQsWUFLWXhwRSxHQUFHaVgsT0FBT3d5RDtNQUl0QixNQVRBRCxZQUtZeHBFLEdBQUdpWCxPQUFPd3lEO01BR3RCLE1BUkFELFlBS1l4cEUsR0FBR2lYLE9BQU93eUQ7S0FrQnRCLE9BQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBZ0M7YUFHaENHLGlCQUFpQjVwRSxHQUFHaVgsT0FBT3d5RDtrQkFDTzN5RDtNQUN2QixJQUFQK3lELFNBQU8sZ0JBRk03cEUsR0FBR2lYLFFBQ2NIO01BRS9CLE9BQUEsMEJBREMreUQsVUFBQUE7S0FDb0M7S0FGWCxPQUFBLDRCQURGSixRQUFQeHlEO0lBR3FCO2FBR3pDNnlELEtBQUs5cEUsR0FBR2tCLEtBQUtrVyxLQUFLMnlEO0tBQ3BCO01BQUk5eUQsUUFETS9WLE9BQVU2b0U7TUFFaEJOLFFBQVEsNkJBRFJ4eUQsZ0JBRE0vVixNQUFLa1c7TUFPYixNQWJBd3lELGlCQU1LNXBFLEdBQ0hpWCxPQUNBd3lEO01BSUYsTUFqQ0FFLFlBMkJLM3BFLEdBQ0hpWCxPQUNBd3lEO01BR0YsTUF2Q0FGLFdBbUNFdHlEO0tBTUYsT0FBQTtJQUFrQzthQUdsQ29JLFlBQWEycUQsV0FBVzlvRSxLQUFLa1csS0FBSXBYO0tBQ25DO01BQ3VFLE1BQUEsbUJBRnBDQTtNQUVqQyxRQUFBLDhDQUZ3QmtCLEtBQUtrVztNQUN0QjZ5RDtNQUFMOW9FO0tBR0osR0FKZTZvRTtVQU1ORSxjQU5NRixjQUlYRyxjQUVLRDs7VUFGTEMsY0F0RE5kO0tBNERrQjtNQUFaZSxjQUFZLDZCQU5aRDtNQVFBRTtRQUNGLHlCQVpPSixPQXhEWFg7TUEwRU1nQixhQVRBRjtNQVVBRyxXQVJBRixvQkFGQUQsY0FTQUU7a0JBRWlDUDtNQUNuQyxHQVZFTSxvQkFTaUNOLFlBRTlCO1NBRjhCQSxlQUZqQ08sYUFUQUYsY0FFQUM7T0FhRyxrQkFMSEU7TUFNRyxXQXBDTFQsS0FVaUM5cEUsR0FDL0JtQixPQUFLOG9FLE9Bb0I0QkYsYUFBQUE7S0FLc0I7S0FMM0IsT0FBQTtJQUs0QjthQUcxRDVILGNBQWU2SCxXQUFXOW9FLEtBQUtrVyxLQUFJcFg7S0FDckM7TUFBQSxNQTlCRXFmLFlBNkJlMnFELFdBQVc5b0UsS0FBS2tXLEtBQUlwWDtNQUNyQyxNQUFBO0tBQUEsT0FBQTtJQUFpRjthQUcvRUQsc0JBQWNDO0tBQUk7TUFBQSxNQWpDbEJxZixxQkFpQ2NyZjtNQUFvRHdxRSxRQUFoRDt5REFBZ0RBO0lBQVk7O2FBSzVFQyxVQUtFenFFO0tBQUssSUFKc0J5ZixTQUlVLHFCQUFyQ3pmLElBSnNCa0I7S0FDeEI7Z0JBRDZCdWUsVUFBTHZlOzs7O09BRU47UUFBQSxNQUFBLGtCQUVoQmxCLEdBSnNCa0I7UUFFcEIsTUFBQTtPQUFBLFlBRm9CQyxRQUFBRCxhQUFBQSxNQUFBQzs7Ozs7SUFJeUI7YUFHakRWLFVBQVVUO2tCQUFtQ2tCLEtBQU8sT0FBQSxrQkFBMUNsQixHQUFtQ2tCLEtBQWdCO0tBQW5DLFVBQUEscUJBQWhCbEI7S0FBOEIsT0FBQTtJQUFzQjthQUU5RDBGLFlBQVV4RixXQUFVRSxXQUM4Q3NxRTtLQUFwRSxLQVhFRCxVQVdrRUMsZUFoQnBFM3FFLFVBZVlHLFdBQVVFLFdBQzhDc3FFO0tBQXhDLFVBSDFCanFFLFVBR2tFaXFFO0tBQXhDLE9BQUE7SUFBa0Q7SUFkbEU7S0FBQSw4QkFHVkQsV0FRQWhxRSxXQUVBaUY7S0EvRlM7Ozs7UUFHWDZqRTtRQUVBQztRQUtBRztRQXFCQUM7UUFNQUU7UUFVQXpxRDtRQTZCQThpRDtRQUlBcGlFOztJQWpGZ0M7Ozs7S0EyRzlCMGY7S0FDQUM7MkJBREFELFFBQ0FDOzs7YUFNRjNmLFVBQVVTLEdBQUVSO3lCO0tBQUksMkJBQU5RLFFBQUVSO0lBQXlDOztLQUNyRHFmO0tBQ0E4aUQ7OzthQUtFejhELFlBQVV4RixXQUEwQjJ4Qjt5QjttQ0FBMUIzeEIsZ0JBQTBCMnhCOztJQUgxQjtLQUFBLDhCQUdWbnNCO0tBVlM7NEJBR1gzRixXQUNBc2YsYUFDQThpRDtJQWJnQzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F6R3BDa0g7O1lBb0lNNXBELGVBQ0FDLGtDQURBRCxRQUNBQztpQkFNRjNmLFVBQVVDOzZCO1NBQUksK0JBQUpBO1FBQXVDO1lBQ2pEcWYsdUJBQ0E4aUQ7aUJBS0V6OEQsWUFBMEJrc0I7NkI7MkNBQUFBOzs7b0JBUDVCN3hCLFdBRUFvaUUsZUFEQTlpRCxpQkFNRTNaOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tDMUlONUU7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUEzRTtLQUFBSztLQUVRUTtLQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBSVo7WUFOSUs7WUFBQUc7WUFBQUk7WUFBQUM7WUFBQVQ7WUFBQXNEO1lBQUFDO1lBQUFDO1lBQUEzRTtZQUFBSztZQUVRUTtZQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQXNDUks7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUEzRTtLQUFBSztLQUdRUTtLQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBSVo7WUFQSUs7WUFBQUc7WUFBQUk7WUFBQUM7WUFBQVQ7WUFBQXNEO1lBQUFDO1lBQUFDO1lBQUEzRTtZQUFBSztZQUdRUTtZQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQTZCS0s7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUFBdkQ7VUFBQUc7VUFBQUk7VUFBQUM7VUFBQVQ7VUFBQXNEO1VBQUFDO1VBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBU1BzdEM7Ozs7Ozs7V0FUTzd3QztXQUFBRztXQUFBSTtXQUFBQztXQUFBVDtXQUFBc0Q7V0FBQUM7V0FBQUM7Ozs7O1VBU1BzdEM7Ozs7Ozs7O1lBVE83d0M7WUFBQUc7WUFBQUk7WUFBQUM7WUFBQVQ7WUFBQXNEO1lBQUFDO1lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBakJidkQ7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUE1RTtLQUFBSztLQUVRNDRDO0tBQ0FwNEM7S0FBQUU7S0FFUitEO0tBQ0E4cEM7YUFLSS9wQyxZQUFZK21ELE9BQU10ckQ7S0FBd0IsVUFBQSxXQU45Q3dFLE1BTXNCeEU7S0FBd0IsT0FBQSw0QkFBOUJzckQ7SUFBc0M7SUFIakM7Ozs7VUFSckJ4cUQ7VUFBQUc7VUFBQUk7VUFBQUM7VUFBQVQ7VUFBQXNEO1VBQUFDO1VBQUFDO1VBQUFDO1VBV0lDO1VBTkpDO1VBTEE5RTtVQUFBSztVQUVRNDRDO1VBQ0FwNEM7VUFBQUU7VUFHUjZ0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQW5DQXh0QztLQUFBRztLQUFBSTtLQUFBQztLQUFBVDtLQUFBc0Q7S0FBQUM7S0FBQUM7S0FBQUM7S0FBQTVFO0tBQUFLO0tBRVFRO0tBQUFFO0tBRVIrRDtLQUNBOHBDO2FBS0kvcEMsWUFBWSttRCxPQUFNdHJEO0tBQXdCLFVBQUEsV0FOOUN3RSxNQU1zQnhFO0tBQXdCLE9BQUEsNEJBQTlCc3JEO0lBQXNDO0lBSGxEOzs7O1VBUEp4cUQ7VUFBQUc7VUFBQUk7VUFBQUM7VUFBQVQ7VUFBQXNEO1VBQUFDO1VBQUFDO1VBQUFDO1VBVUlDO1VBTkpDO1VBSkE5RTtVQUFBSztVQUVRUTtVQUFBRTtVQUdSNnRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBakJBdjFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQWRBalk7S0FBQUc7S0FBQUk7S0FBQUM7S0FBQVQ7S0FBQXNEO0tBQUFDO0tBQUFDO0tBQUEzRTtLQUFBSztLQUVRUTtLQUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQVlSc1k7WUFkQWpZO1lBQUFHO1lBQUFJO1lBQUFDO1lBQUFUO1lBQUFzRDtZQUFBQztZQUFBQztZQUFBM0U7WUFBQUs7WUFFUVE7WUFBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWhCUlY7U0FFUVE7U0FBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBRlJWO2dCQUVRUTtnQkFBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUM2Qlo1Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F6Qk07SUNGTmtmO0lBSUF3QztJQUNBQztJQUVRN0I7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQW9CO0lBQUFvQjtJQUFBRDtJQUFBRTtJQUFBbUI7SUFBQUU7SUFFQTREO0lBR1JFO0lBU0FyTztJQUlBaUg7SUFHQUw7SUFRQW5FO0lBSUF1RTtJQUlBMHZEO0lBRUFDO0lBSUFDO0lBRUFDO0lBSUFDO0lBRUFDOztJQTBDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUF3RkFDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBR0FudUQ7SUFHQW91RDtJQUdBQztJQUtBQztJQUtBQztJQUlBQztJQUlBQztJQUtBaHlCO0lBS0FpeUI7SUFJQUM7SUFJQUM7SUFJQUM7SUFLQUM7SUFLQUM7SUFLQUM7SUFFQTcyRDtJQUdBK0Y7SUFLQUM7SUFJQU87SUFHQWtCO0lBR0FDO0lBSUFvdkQ7SUFhQUM7SUFJQUM7SUFJQUM7SUFFQUM7SUFDQUM7SUFPQUM7SUFPQUM7SUFHQUM7SUFHQUM7SUFJQUM7SUFJQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFTQUM7SUFDQUM7SUF0WUFoakI7SUFRUTdtRDtJQUFBN0U7SUFBQUs7SUFBQXVFO0lBQUFxMEM7SUEyWFJ0aUM7O0lEallNLGNBQUs7SUFBTCxNQUFBO0lBQUEzYixRQUFBO0lBQUEsTUFBQTtJQUFLbUcsY0FBTCxXQUFBLCtCQUFBbkc7SUFBQW9HO0lBQUFHO0lBQUFrRCxtQkFBQXJELFlBQUFHO0lBQUFJO0lBQUFDO0lBQUE4QyxtQkFBQTlDLGNBQUFEO0lBQUFnRCxZQUFLeEQsYUFBTHNELGNBQUFDOzs7Ozs7Ozs7WUFLRTNELGU7WUFDQUYsZTtHQUc2Qjs7Ozs7U0FUL0JPO1NBQUFHO1NBQUFLO1NBQUFEO1NBQUtSO1NBQUxzRDtTQUFBQztTQUFBQztTQ01FQztTQUFBNUU7U0FBQUs7U0FBQTQ0Qzs7O0lERzZCOztPQVQvQjczQztPQUFBRztPQUFBSztPQUFBRDtPQUFLUjtPQUFMc0Q7T0FBQUM7T0FBQUM7T0NNRTNFO09BQUE0RTtPQUFBdkU7cUI7Ozs7SUQwQkU0eEM7SUNtQ0Fyc0M7SUFBQWQ7SUFDQWdCO0lBQUFFO0lBRVI2L0Q7SUFJUXBnRTtJQUFBdzdDO0lBRVIwdEI7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7O0lEbkVFLGNBQUs7SUFBTCxNQUFBO0lBQUFucUUsVUFBQTtJQUFBLE1BQUE7SUFBS0M7TUFBTCxXQUFBLCtCQUFBRDtJQUFBRTtJQUFBQztJQUFBQyxxQkFBQUYsY0FBQUM7SUFBQUU7SUFBQUM7SUFBQUMscUJBQUFELGNBQUFEO0lBQUFHLGNBQUtQLGVBQUxHLGdCQUFBRzs7Ozs7U0FBQUw7U0FBQUM7U0FBQUc7U0FBQUQ7U0FBS0o7U0FBTEc7U0FBQUc7U0FBQUM7U0NtRE1NO1NBQUFFO1NBTUFpN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQVBBcjdDO1NEbEROVjtTQUFBQztTQUFBRztTQUFBRDtTQUFLSjtTQUFMRztTQUFBRztTQUFBQztTQ21ETU07U0FNQUw7U0FOQU87U0FEQWxCOzs7Ozs7O2lFRDFDVjNLO0lBQUF5ZjtJQUFBRTtJQUFBRCx1QkFBQUM7O0lBVU0sY0FBSztJQUFMLE1BQUE7SUFBQTdULFVBQUE7SUFBQSxNQUFBO0lBQUtDO01BQUwsV0FBQSwrQkFBQUQ7SUFBQUU7SUFBQUM7SUFBQUMscUJBQUFGLGNBQUFDO0lBQUFFO0lBQUFDO0lBQUFDLHFCQUFBRCxjQUFBRDtJQUFBRyxjQUFLUCxlQUFMRyxnQkFBQUc7SUM3QkU4QjtJQUFBdkI7SUFBQU07SUFBQStuRTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBMW5FO0lBQUEybkU7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQW5OO0lBMlhSamlEO0lEL1ZLOztPQUNDNWE7T0FBQUM7T0FBQUc7T0FBQUQ7T0FBS0o7T0FBTEc7T0FBQUc7T0FBQUM7SUFORDs7T0N2Qkc2QjtxQjtPQUFBdkI7T0FBQU07T0FBQStuRTtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQTJYUjV1RDtPQTNYUTlZO09BQUEybkU7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQW5OO09EMEJFL3dCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXRmx5QjtJQUNBQztnREFEQUQsUUFDQUM7O0lBR0oxRztJQUNBRTtJQUNBRTtJQUNBMDJEO0lBQ0Fqa0M7SUFDQWtrQztZQUVBaGlDLGdCQUFnQnR1QixRQUFPdXdEO0lBQ3pCLE9BQUEsMkNBRHlCQSxPQUFQdndEO0dBQzJDO1lBRzNEd3dELFdBQVdqd0UsR0FBRzBDO0lBQ1Y7O09BQUE7U0NxTVIrcEUsV0R0TWV6c0UsbUJBQ1k4WSxLQUFPLFdBQUksV0FEcEJwVyxHQUNTb1csS0FBa0I7Z0JBQ2pDLE9BRkc5WTtRQUdOOFc7SUFBSyxPQUFBLFdDM0RkeUUsS0R3RGV2YixNQUdOOFc7R0FBd0I7WUFHN0JvNUQsWUFBWWx3RSxHQUFHMEM7SUFDWDs7T0FBQTtTQ21NUmdxRSxXRHBNZ0Ixc0UsbUJBQ1c4WSxLQUFPLFdBQUksV0FEbkJwVyxHQUNRb1csS0FBa0I7Z0JBQ2pDLE9BRkk5WTtRQUdQOFc7O2FDakVUeUUsS0Q4RGdCdmIsR0FHUDhXLGtDQUhPOVcsS0FHUDhXO0dBQStDO1lBTXBEQyxNQUFNL1csR0FBRWlYLE9BQU1DO0lBQ2hCLE9BQUE7OzthQ3hFRnFFO2FEdUVVdmI7YUFBRWlYO2FBQU1DO0dBQzREO1lBRzFFcUksS0FBSy9lLEdBQUVzVztJQUNULE9BQ0E7YUFGT3RXO2FBTlc7eUVBTVhBLEdBQUVzVztHQUVROzs7Ozs7OztPQ2pGbkJpQztPQUlBd0M7T0FDQUM7T0FFUTdCO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFvQjtPQUFBb0I7T0FBQUQ7T0FBQUU7T0FBQW1CO09BQUFFO09BRUE0RDtPQUdSRTtPQVNBck87T0FJQWlIO09BR0FMO09BUUFuRTtPQUlBdUU7T0FJQTB2RDtPQUVBQztPQUlBQztPQUVBQztPQUlBQztPQUVBQztPQTBDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0F3RkFDO09BRUFDO09BQ0FDO09BQ0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FudUQ7T0FHQW91RDtPQUdBQztPQUtBQztPQUtBQztPQUlBQztPQUlBQztPQUtBaHlCO09BS0FpeUI7T0FJQUM7T0FJQUM7T0FJQUM7T0FLQUM7T0FLQUM7T0FLQUM7T0FFQTcyRDtPQUdBK0Y7T0FLQUM7T0FJQU87T0FHQWtCO09BR0FDO09BSUFvdkQ7T0FhQUM7T0FJQUM7T0FJQUM7T0FFQUM7T0FDQUM7T0FPQUM7T0FPQUM7T0FHQUM7T0FHQUM7T0FJQUM7T0FJQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FTQUM7T0FDQUM7T0QzV0E3MEQ7T0FBQUQ7O1FDNkNFaXNEO1FBTUE4STtRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztRRG5FRWpxRTtRQUFBQztRQUFBRztRQUFBRDtRQUFLSjtRQUFMRztRQUFBRztRQUFBQztRQ21ETU07UUFBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09ES05xUjtPQUlBd0k7T0FuQkEwd0Q7T0FNQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FqQkFsM0Q7T0FDQUU7T0FDQUU7T0FDQTAyRDtPQUNBamtDO09BQ0Fra0M7T0FFQWhpQzs7O1NDMlVKMTNCO1NBM1hROVI7dUI7U0FSUjZtRDtTRFFRN3FEO1NBREFFO1NBTEZLO1NBQUFHO1NBQUFLO1NBQUFEO1NBQUtSO1NBQUxzRDtTQUFBQztTQUFBQztTQ01FQztTQUFBNUU7U0FBQUs7U0FBQTQ0Qzs7Ozs7U0QwQkVoSDs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUV6Q1Y5M0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUFBOztJQUFBLGNBQUs7SUFBTCxNQUFBO0lBQUFhLFFBQUE7SUFBQSxNQUFBO0lBQUttRyxjQUFMLFdBQUEsK0JBQUFuRztJQU1Nb0c7SUFBQUc7SUFBQUk7SUFBQUM7aUVBTk56SDtJQUFBeWY7SUFBQUU7SUFBQUQsdUJBQUFDO0lBTU07Y0FBWSw4Q0FOYjNZO0lBTUMsTUFBQTtJQUFBNkQsVUFBQTtJQUFBLE1BQUE7SUFBWUM7TUFBWixXQUFBLCtCQUFBRDtJQUFBUCxtQkFBQXJELFlBQUFHO0lBQUFtRCxtQkFBQTlDLGNBQUFEO0lBQUFnRCxZQUFZTSxlQUFaUixjQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQUFBdEQ7U0FBQUc7U0FBQUs7U0FBQUQ7U0FBWXNEO1NBQVpSO1NBQUFDO1NBQUFDO0lBMkNGTztJQUFBQztJQUFBRTtJQUFBQzs7Ozs7Ozs7OztJQXBDQW1yRTtJQUFBL3REO0lBQUF1dkI7SUFBQSt3QjtJQUFBL3BCO0lBQUF5M0I7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQS90QjtJQUFBRDtJQW9DQWwrQztJQXBDQStSO0lBQUFLO0lBQUErNUQ7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQXB3RTtJQUFBRjtJQW9DQVI7SUFBQUw7SUFwQ0E4RTtJQUFBRDtJQUFBd1U7SUFBQSszRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBUUVDOzs7UUFFYSxJQUFSQSxRQUFRO1FBQ1o7U0FDZ0IsSUFBWUMsb0JBQU5DO3NCQUNNM2xDO1VBQ3hCLDZCQUpBeWxDLE9BR3dCemxDLFFBRE4ybEM7VUFHSyxVQUFBLDRCQUZDM2xDO1VBQTFCLE9BQUEsNkJBSEV5bEMsWUFFa0JFO1NBR3dDO1NBRnZDLE9BQUEseUJBREtEO1FBR29DO1FBSmhFO1FBQUEsT0FESUQ7O0dBUVQsU0FBSUcsY0FBY0M7SUFDaEIsdUJBWEVKOzs7ZUFBQUE7OzhDQUFBQTsrQ0FBQUE7O0lBV2lEO0tBQUEsTUFBQTtLQUEvQ0ssNEJBQTRCOzs7Ozs7K0NBQTVCQTs7NERBRFlEOzs7Ozs7O0dBTWlDO1lBakJqREUsY0FtQkUvbEM7c0I7MkJBbEJBeWxDOzs7ZUFBQUE7OzhDQUFBQTsrQ0FBQUE7O0lBa0JKLE9BQUEsa0NBQUl6bEMsYUFSQTRsQztHQVNvRjtHQVN0RjtJQU5BbDREO0lBQ0FFO0lBQ0FFO0lBSUE7Y0FBWTtJQUFaLE1BQUE7SUFBQXpULFVBQUE7SUFBQSxNQUFBO0lBQVlzQjtNQUFaLFdBQUEsK0JBQUF0QjtJQUFBSSxxQkFBQW5CLGNBQUFDO0lBQUFxQixxQkFBQW5CLGNBQUFDO0lBQUFtQixjQUFZYyxlQUFabEIsZ0JBQUFHOzs7Ozs7OztPQWpESnFUO09BQUFEO09BYUl3M0Q7T0FBQS8zRDtPQUFBcUo7T0FBQSt0RDs7T0FvQ0F2ckU7T0FBQUM7T0FBQUU7T0FBQUM7Ozs7O09BQUF0RjtPQUFBSztPQXBDQVE7T0FBQUU7T0FBQWlpRTtPQUFBbU87T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQS81RDtPQUFBTDtPQW9DQS9SO09BcENBaytDO09BQUFDO09BQUErdEI7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7Ozs7Ozs7Ozs7Ozs7OztPQUFBejNCOzs7T0FBQXAwQztPQUFBQztPQUFBbXRDOzs7O09BT0EwL0I7T0F1QkFyNEQ7T0FDQUU7T0FDQUU7OztTQUlBOVU7U0FBQTVFO1NBQUFLO1NBQUE2RTtTQUFBQztTQUFBRTtTQUFBQztTQUFZaUM7U0FBWmxCO1NBQUFHO1NBQUFDOzs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDNUNBdE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxjQUFLO0lBQUwsTUFBQTtJQUFBYSxRQUFBO0lBQUEsTUFBQTtJQUFLbUcsY0FBTCxXQUFBLCtCQUFBbkc7SUFBQW9HO0lBQUFHO0lBQUFrRCxtQkFBQXJELFlBQUFHO0lBQUFJO0lBQUFDO0lBQUE4QyxtQkFBQTlDLGNBQUFEO0lBQUFnRCxZQUFLeEQsYUFBTHNELGNBQUFDO0lBQUs0VTtJQUFBRTtJQUFBRTtpRUFBTHZmO0lBQUF5ZjtJQUFBRTtJQUFBRCx1QkFBQUM7OztJQVVJaUc7OENBQUFBOzs7O1lBSUpvc0IsSUFBS3lsQztJQUFXLFVBQUEsNkJBQVhBO0lBQVcsT0FBQTtHQUE2RDtZQUU3RXZqQyxnQkFBZ0IzMkIsS0FBSWs2RDtJQUN0QixVQUFBLDZCQURrQmw2RCxLQUFJazZEOztHQUNzRDs7Ozs7Ozs7T0FqQjFFeHdFO09BQUFHO09BQUFLO09BQUFEO09BQUtSO09BQUxzRDtPQUFBQztPQUFBQztPQUFBa1Y7T0FBQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BQUtOO09BQUFFO09BQUFFO09BY0x5eUI7T0FFQWtDOzs7U0FoQkFqdEM7U0FBQUc7U0FBQUs7U0FBQUQ7U0FBS1I7U0FBTHNEO1NBQUFDO1NBQUFDOzs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7OztJQ0xKeEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBQUE7aUVBQUFBO0lBQUF5ZjtJQUFBRTtJQUFBRCx1QkFBQUM7O0lBTU0sY0FBSztJQUFMLE1BQUE7SUFBQTllLFFBQUE7SUFBQSxNQUFBO0lBQUttRyxjQUFMLFdBQUEsK0JBQUFuRztJQUFBb0c7SUFBQUc7SUFBQWtELG1CQUFBckQsWUFBQUc7SUFBQUk7SUFBQUM7SUFBQThDLG1CQUFBOUMsY0FBQUQ7SUFBQWdELFlBQUt4RCxhQUFMc0QsY0FBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FBQXREO1NBQUFHO1NBQUFLO1NBQUFEO1NBQUtSO1NBQUxzRDtTQUFBQztTQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFPRmt0RTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBekg7SUFBQUM7SUFBQUg7SUFBQTRIO0lBQUFDO0lBQUFDO0lBQUF0QztJQUFBL3REO0lBQUF1dkI7SUFBQSt3QjtJQUFBL3BCO0lBQUF5M0I7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQS90QjtJQUFBRDtJQUFBbCtDO0lBQUErUjtJQUFBSztJQUFBKzVEO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFwd0U7SUFBQUY7SUFBQVI7SUFBQUw7SUFBQThFO0lBQUFEO0lBQUF3VTtJQUFBKzNEOzs7Ozs7Ozs7SUFTQSxjQUFLO0lBQUwsTUFBQTtJQUFBcHNFLFVBQUE7SUFBQSxNQUFBO0lBQUtrQjtNQUFMLFdBQUEsK0JBQUFsQjtJQUFBbUI7SUFBQUM7SUFBQUMscUJBQUFGLGNBQUFDO0lBQUFFO0lBQUFDO0lBQUFDLHFCQUFBRCxjQUFBRDtJQUFBRyxjQUFLUCxlQUFMRyxnQkFBQUc7Ozs7O1NBQUFMO1NBQUFDO1NBQUFHO1NBQUFEO1NBQUtKO1NBQUxHO1NBQUFHO1NBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBQUFOO1NBQUFDO1NBQUFHO1NBQUFEO1NBQUtKO1NBQUxHO1NBQUFHO1NBQUFDOzs7Ozs7Ozs7OztJQVVBNlM7SUFDQUU7SUFDQUU7SUFDQXM1RDtJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7T0ExQ0oxNUQ7T0FBQUQ7T0FhSXczRDtPQUFBLzNEO09BQUFxSjtPQUFBK3REO09BQUFzQztPQUFBRDtPQUFBRDtPQUFBNUg7T0FBQUc7T0FBQUQ7T0FBQXlIO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEOztRQVNBMXJFO1FBQUFDO1FBQUFHO1FBQUFEO1FBQUtKO1FBQUxHO1FBQUFHO1FBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FUQXpHO09BQUFLO09BQUFRO09BQUFFO09BQUFpaUU7T0FBQW1PO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUEvNUQ7T0FBQUw7T0FBQS9SO09BQUFrK0M7T0FBQUM7T0FBQSt0QjtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDs7Ozs7Ozs7Ozs7Ozs7O09BQUF6M0I7OztPQUFBcDBDO09BQUFDO09BQUFtdEM7Ozs7T0FtQkEzNEI7T0FDQUU7T0FDQUU7T0FDQXM1RDtPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ3ZDQUM7SUFBQXI1RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBQUEsU0FBQTZGLFVBQUEwbkI7SUFBQTs7Y0FBQUE7Z0JBQUFBOzs7Ozs7Ozs7O1FBQUE7O09BQUE7O01BQUE7O2VBQUFBOztNQUFBLE9BQUE7NENBQUE4ckQsa0JBQUE5ckQ7OztNQUFBLE9BQUE7NENBQUE4ckQsa0JBQUE5ckQ7Ozs7Ozs7Ozs7O09BQUEsT0FBQTs2Q0FBQThyRCxrQkFBQTlyRDs7TUFBQSxPQUFBOzRDQUFBOHJELGtCQUFBOXJEOztLQUFBLE9BQUE7MkNBQUE4ckQsa0JBQUE5ckQ7O0lBQUEsT0FBQSx3Q0FBQThyRCxrQkFBQTlyRDtHQUk0RDtZQUo1RHJuQjtJQUFBLHNCQUNFLG1CQUNBLG9CQUNBOztHQUMwRDtHQUp2RDtJQUFBLE1BQUE7SUFBTCxjQUFLO0lBQUwsTUFBQTtJQUFBckYsUUFBQTtJQUFBLE1BQUE7SUFBS21HLGNBQUwsV0FBQSwrQkFBQW5HO1lBQUFvRyxrQkFBQSxTQUk0RDtZQUo1REcsWUFBQTNGLEtBQUE0RjtJQUFBOztPQUFBLE9BQUEsK0JBQUE1RixLQUFBNEY7O09BQUEsT0FBQSwrQkFBQTVGLEtBQUE0RjtlQUFBLE9BQUEsK0JBQUE1RixLQUFBNEY7O0dBSTREO0dBSjVELElBQUFpRCxtQkFBQXJELFlBQUFHO1lBQUFJLFdBQUEvRixLQUFBQyxTQUFBQztJQUFBO2tFQUFBRDtHQUk0RDtZQUo1RCtGLGFBQUFoRyxLQUFBQztJQUFBLFlBQUEsOEJBQUFELEtBQUFDOztpREFBQUE7MEJBQ0UsaUJBQ0Esa0JBQ0E7O0dBQzBEO0dBSjVEO0lBQUE2SSxtQkFBQTlDLGNBQUFEO0lBQUFnRCxZQUFLeEQsYUFBTHNELGNBQUFDO0lBQUFFO1lBQUFDLFlBQUFsSSxLQUFBQztJLE9BQUFBOztPQUNFLE9BQUEseUJBREZEOztPQUVFLE9BQUEseUJBRkZBO2VBR0UsT0FBQSx5QkFIRkE7OztHQUFBLFNBQUFtSSxLQUFBbEk7SUFBQSxJQUFBRCw2Q0FBQWtJLFlBQUFsSSxLQUFBQzs7R0FJNEQ7R0FKNUQ7aUVBQUF6QztJQUFBeWY7SUFBQUU7SUFBQUQ7OztRQUFBQzs7OztXQUFBO1lBQUE2SjtjQUFBOzs7Ozs7Ozs7OztZQUFBQztjQUFBOzs7Ozs7Ozs7OztZQUFBNnZEO2NBQUE7Ozs7Ozs7Ozs7O1lBQUE1dkQsV0FBQSxxQ0FBQS9KO1lBQUFnSyxlQUFBSCxXQUFBQyxXQUFBNnZEO1lBQUExdkQ7b0JBQUFDO1lBQUE7O2VBQUEsV0FBQUw7O2VBQUEsV0FBQUM7dUJBQUEsV0FBQTZ2RDs7V0FJNEQ7V0FKNUQ7bUJBQUE7O3lCQUFBNXZELFVBQUFDLE1BQUFDLGFBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FBQTVpQjtTQUFBRztTQUFBSztTQUFBRDtTQUFLUjtTQUFMc0Q7U0FBQUM7U0FBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FBQWtWO09BQUFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FBQXhZO1NBQUFHO1NBQUFLO1NBQUFEO1NBQUtSO1NBQUxzRDtTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBOUU7U0FBQUs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0lDbUJGbEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsY0FBSztJQUFMLE1BQUE7SUFBQWEsUUFBQTtJQUFBLE1BQUE7SUFBS21HLGNBQUwsV0FBQSwrQkFBQW5HO0lBc0ZBb0c7SUFBQUc7SUF0RkFrRCxtQkFzRkFyRCxZQUFBRztJQUFBSTtJQUFBQztJQXRGQThDLG1CQXNGQTlDLGNBQUFEO0lBdEZBZ0QsWUFBS3hELGFBQUxzRCxjQUFBQztpRUFBQXZLO0lBQUF5ZjtJQUFBRTtJQUFBRCx1QkFBQUM7Ozs7OztTQXNGQTFZO1NBQUFHO1NBQUFLO1NBQUFEO1NBdEZLUjtTQUFMc0Q7U0FBQUM7U0FBQUM7Ozs7Ozs7Ozs7Ozs7OztTQXNGQXZEO1NBQUFHO1NBQUFLO1NBQUFEO1NBdEZLUjtTQUFMc0Q7U0FBQUM7U0FBQUM7Ozs7Ozs7Ozs7Ozs7SUFPb0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFFbEUrdUUsa0JBQWtCcHpFO0lBQ3BCO0tBRVMsUUFBQSxxQkFIV0E7O0lBTU4sT0FBQTtHQUFvQjs7WUFNOUIrNEQsZUFBZ0J2VyxLQUFLQyxLQUFJemlEO0lBQzNCLElBQTZDLE1BQUEsa0JBRDNCd2lELEtBQUtDLEtBQUl6aUQsSUFDSixNQWJ2Qm96RSxrQkFZMkJwekU7SUFDa0IsT0FBQTtHQUErQjtZQUcxRWc1RCxnQkFBaUJ4VyxLQUFJeGlEO0lBQ3ZCLElBQTZDLE1BQUEsa0JBRDFCd2lELEtBQUl4aUQsSUFDQSxNQWpCdkJvekUsa0JBZ0J1QnB6RTtJQUNzQixPQUFBO0dBQTJCO1lBR3RFaTVELGdCQUFpQnhXLEtBQUl6aUQ7SUFDdkIsSUFBNkMsTUFBQSxrQkFEMUJ5aUQsS0FBSXppRCxJQUNBLE1BckJ2Qm96RSxrQkFvQnVCcHpFO0lBQ3NCLE9BQUE7R0FBMkI7O1FBeUJwRXF6RTthQUNBMzhELE9BQVFsVyxHQUFFbVc7S0FBSSxPQUFKQSxJQURWMDhELCtCQUNRN3lFO0lBQW9EO2FBQzVEaXdFLFNBQVFqd0UsR0FBRW1XLEdBQUksT0FEZEQsT0FDVUMsR0FBRm5XLEdBQWE7YUFDckJrd0UsU0FBT2x3RSxHQUFFbVc7S0FBSSxVQUZiRCxPQUVPbFcsR0FBRW1XO0tBQUksYUFGYkQsT0FFU0MsR0FBRm5XO0lBQXdCO2FBQy9CbXdFLFNBQU9ud0UsR0FBRW1XO0tBQUksT0FBSkEsSUFKVDA4RCw4QkFJTzd5RTtJQUFtRDthQUMxRG93RSxTQUFPcHdFLEdBQUVtVyxHQUFJLE9BRGJnNkQsU0FDU2g2RCxHQUFGblcsR0FBWTthQUNuQnF3RSxTQUFRcndFLEdBQUVtVyxHQUFJLFdBSGQrNUQsU0FHUWx3RSxHQUFFbVcsR0FBZ0I7YUFFMUIyOEQsaUJBQWlCOXlFLEdBQUVtVztLQUNiLElBQUptbUQsSUFEZXQ4RCxJQUFFbVc7WUFDakJtbUQsTUFURnVXOztlQUFBQSw4QkFTRXZXO0lBS0U7SUF0Qkc7WUFRUHVXO1lBQ0EzOEQ7WUFDQSs1RDtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUVBeUM7O0dBM0JnQjtJQUFBOztJQUlwQkQ7SUFFUUU7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUFPO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBNENWLGNBQVksNENBdEZQdHpFO0lBc0ZMLE1BQUE7SUFBQTZELFVBQUE7SUFBQSxNQUFBO0lBQVlDO01BQVosV0FBQSwrQkFBQUQ7SUFBQUkscUJBQUFoRSxZQUFBRztJQUFBZ0UscUJBQUEzRCxjQUFBRDtJQUFBNkQsY0FBWVAsZUFBWkcsZ0JBQUFHOztJQUlJTztJQUFBRTtJQUFBMGxEO0lBQUEwakI7SUFBQUM7WUFNRnFGLFlBQVlwMEU7SUFBYSxPQUFHLFdBdERwQjB6RSxXQXNESTF6RTs7Y0FBeUMsV0F0RDdDMnpFLFdBc0RJM3pFO0dBQW1FO1lBVy9FcTBFLGFBQWE3ekU7SUFBSTtLQTdIQ1osSUE2SGlCLG1DQUF0Qlk7S0E1SFhxeEMsa0NBRGdCanlDO0tBRVBrWDtJQUNYO1FBRkUrNkIsS0FDUy82QixHQUVOLE9BQUEsdUJBSmFsWDtLQU1WLFlBQUEsd0JBTlVBLEdBRVBrWDs7OztNQUFiLE9BRm9CbFg7O0tBT00sSUFMYnMrRCxNQUFBcG5ELFdBQUFBLElBQUFvbkQ7O0dBMkhnRDtHQVVoRDtJQVRYbGxEO0lBQ0FFO0lBQ0FFO0lBQ0FrN0Q7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUMsV0FBVztJQUNYQyxVQUFVO0lBQ1ZDLGdCQUFnQjtJQUNoQkMsYUFBYTtJQUNiQyxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXpIakJ6N0Q7T0FBQUQ7O09Bd0NFKzVEO09BRVFFO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFDO09BQUFOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQUFBTztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQztRQUFBQzs7O1FBNENWcnpFO1FBQUFHO1FBQUFLO1FBQUFEO1FBQVlzRDtRQUFaRztRQUFBRztRQUFBQztRQUlJTTtRQUFBRTtRQUFBMGxEO1FBQUEwakI7UUFBQUM7T0FKSmp1RTtPQUFBRztPQUFBSztPQUFBRDtPQXRGS1I7T0FBTHNEO09BQUFDO09BQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F5QkkyMEQ7T0FJQUM7T0FSQUY7Ozs7O09BWkZxYTtPQWtHQWlCOztPQUNBcjdEO09BQ0FFO09BQ0FFO09BZEFnN0Q7T0FBQUE7T0FlQUU7T0FDQUM7T0FFQUU7T0FDQUM7T0FDQUM7T0FIQUg7T0FRQVE7T0FIQUg7T0FFQUU7T0FEQUQ7T0FGQUY7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUMvR0ovNkU7SUFLRXVKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTVCSTtJQ2dFSWtCO0lBQUFxMEM7O0lEaEVKLGNBQUs7SUFBTCxNQUFBO0lBQUFqK0MsUUFBQTtJQUFBLE1BQUE7SUFBS21HLGNBQUwsV0FBQSwrQkFBQW5HO0lBQUFvRztJQUFBRztJQUFBa0QsbUJBQUFyRCxZQUFBRztJQUFBSTtJQUFBQztJQUFBOEMsbUJBQUE5QyxjQUFBRDtJQUFBZ0QsWUFBS3hELGFBQUxzRCxjQUFBQztJQUFBMUU7SUFBQUs7Ozs7O1NBQUFlO1NBQUFHO1NBQUFLO1NBQUFEO1NBQUtSO1NBQUxzRDtTQUFBQztTQUFBQztTQ2dFSUM7U0RoRUo1RTtTQUFBSztTQ2dFSTQ0Qzs7OztJRHBESixjQUFLO0lBQUwsTUFBQTtJQUFBajBDLFVBQUE7SUFBQSxNQUFBO0lBQUtDO01BQUwsV0FBQSwrQkFBQUQ7SUFBQUU7SUFBQUM7SUFBQUMscUJBQUFGLGNBQUFDO0lBQUFFO0lBQUFDO0lBQUFDLHFCQUFBRCxjQUFBRDtJQUFBRyxjQUFLUCxlQUFMRyxnQkFBQUc7Ozs7OztJQUREOztPQUNDTDtPQUFBQztPQUFBRztPQUFBRDtPQUFLSjtPQUFMRztPQUFBRztPQUFBQzs7Ozs7Ozs7Ozs7Ozs0Qjs0Qjs0Qjs0Qjs0Qjs0QjtHQVdOOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0VXO0lBQUFDO0lBQUFFO0lBQUFDOzs7Ozs7Ozs7O0lDOEJBOFM7SUFJUWs4RDtJQUFBQztJQUNBMUM7SUFBQTJDO0lBQ0E1d0U7SUFBQUM7SUFBQWdCO0lBQUFFO0lBQUFuRjtJQUFBRTtJQUFBNFY7SUFBQWxSO0lBQUFxOUM7SUFBQUM7SUFBQSt0QjtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBenZCO0lBQUEraEI7SUFBQS93QjtJQUNBeWpDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQ0FuekQ7O0lBSVIrL0M7SUFLQXFUO0lBQ0FDO0lBb0NBQztJQXlCUUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFRUkM7SUFDQUM7SUFNQUM7SUFNQUM7SUFFQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFPQUM7SUFHQUM7SUFJQTluQztJQUNBQztJQUlBOG5DO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBTUFDO0lBbURBQztJQUdBMUY7SUFHQUM7SUFPQTBGO0lBSUFDO0lBSUFDO0lBR0FDO0lBR0FDO0lBR0FDO0lBTUFDO0lBTUFDOztJQXlCRS9nRTtJQVVBZ2hFO0lBQ0FDO0lBRUFDO0lBQ0FuSDtJQUNBQztJQUNBQztJQVVGa0g7SUFJQXBGO0lBQ0F0QztJQUNBMkg7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7OztJRHhVRUM7aUVBRUp0K0U7SUFBQXlmO0lBQUFFO0lBQUFELHVCQUFBQztJQzRDVS9TO0lBQUFNO0lBQUFxa0Q7SUFBQWhsRDtJQUFBZDtJQUFBQztJQUFBdXBFO0lBQUFDO0lBQUFxSjttRUR2Q1JoMUU7SUFBQWkxRTtJQUFBQztJQUFBQyx5QkFBQUQsaUJBTEYvK0Q7SUFLRTtjQUFZO0lBQVosTUFBQTtJQUFBNVQsVUFBQTtJQUFBLE1BQUE7SUFBWXNCO01BQVosV0FBQSwrQkFBQXRCO0lBQUEyQixxQkFBQXpCLGNBQUFDO0lBQUEyQixxQkFBQXpCLGNBQUFDO0lBQUF5QixjQUFZVCxlQUFaSyxnQkFBQUc7SUFHRXVSO0lBQ0FFO0lBQ0FFO0lBQ0FtN0Q7SUFDQWlFO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7UUFyQ0U1M0U7UUFBQUc7UUFBQUs7UUFBQUQ7UUFBS1I7UUFBTHNEO1FBQUFDO1FBQUFDO1FDZ0VJQztRRGhFSjVFO1FBQUFLO1FDZ0VJNDRDOzs7Ozs7OzRCOzRCOzRCOzRCOzRCOzs7OzRCOzs7Ozs7Ozs7OzRCOzRCOzJCOzBCOzBCOzs7O09BTlI1L0I7T0FJUWs4RDtPQUFBQztPQUNBMUM7T0FBQTJDO09BRUFDO09BQUFDO09BQUFDO09BQUFDO09ENUNONEM7T0M2Q00vMUQ7T0FJUisvQztPQUtBcVQ7T0FDQUM7T0FvQ0FDO09BeUJRQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQVFSQztPQUNBQztPQU1BQztPQU1BQztPQUVBQztPQUNBQztPQUNBQztPQUdBQztPQU9BQztPQUdBQztPQUlBOW5DO09BQ0FDO09BSUE4bkM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FNQUM7T0FtREFDO09BR0ExRjtPQUdBQztPQU9BMEY7T0FJQUM7T0FJQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FNQUM7T0FNQUM7O09BeUJFL2dFO09BVUFnaEU7T0FDQUM7T0FFQUM7T0FDQW5IO09BQ0FDO09BQ0FDO09BVUZrSDtPQUlBcEY7T0FDQXRDO09BQ0EySDtPQUNBQztPQUNBQztPQUNBQztPQUNBQzs7T0R0VUYzK0Q7T0FBQUQ7O1FBS0V6VDtRQUFBQztRQUFBRTtRQUFBQztRQUFZZ0I7UUFBWks7UUFBQUc7UUFBQUM7UUN1Q1FqQjtRQUFBTTtRQUFBcWtEO1FBQUFobEQ7UUFBQWQ7UUFBQUM7UUR2Q1JnekU7UUFBQUY7UUN1Q1F2SjtRQUFBQztRQUFBcUo7T0R2Q1J2eUU7T0FBQUM7T0FBQUU7T0FBQUM7Ozs7O09Db0NRVDtPQUFBRTtPQUFBbkY7T0FBQUU7T0FBQWlpRTswQjs7Ozs7O09BQUFyc0Q7T0FBQWxSO09BQUFxOUM7T0FBQUM7T0FBQSt0QjtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDs7T0FBQXp2Qjs7O09BQUFwOEM7T0FBQUM7T0FBQW10Qzs7Ozs7Ozs7Ozs7T0RqQ04zNEI7T0FDQUU7T0FDQUU7T0FDQW03RDtPQUNBaUU7T0FFQUU7T0FEQUQ7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lFL0JKNStFO0lBS0V1Sjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQVhJOztJQUFBLGNBQUs7SUFBTCxNQUFBO0lBQUExSSxRQUFBO0lBQUEsTUFBQTtJQUFLbUcsY0FBTCxXQUFBLCtCQUFBbkc7SUFBQW9HO0lBQUFHO0lBQUFrRCxtQkFBQXJELFlBQUFHO0lBQUFJO0lBQUFDO0lBQUE4QyxtQkFBQTlDLGNBQUFEO0lBQUFnRCxZQUFLeEQsYUFBTHNELGNBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBQUF0RDtTQUFBRztTQUFBSztTQUFBRDtTQUFLUjtTQUFMc0Q7U0FBQUM7U0FBQUM7SUFXSk87SUFBQUM7SUFBQUU7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lFQUxGbkw7SUFBQXlmO0lBQUFFO0lBQUFELHVCQUFBQzs7Ozs7Ozs7OzttRUFLRXBXO0lBQUFpMUU7SUFBQUM7SUFBQUMseUJBQUFELGlCQUxGLytEO0lBS0U7Y0FBWTtJQUFaLE1BQUE7SUFBQTdVLFVBQUE7SUFBQSxNQUFBO0lBQVlrQjtNQUFaLFdBQUEsK0JBQUFsQjtJQUFBcUIscUJBQUFuQixjQUFBQztJQUFBcUIscUJBQUFuQixjQUFBQztJQUFBbUIsY0FBWVAsZUFBWkcsZ0JBQUFHO0lBR0U4UztJQUNBRTtJQUNBRTtJQUNBbTdEO0lBQ0FpRTtJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FkSm4vRDtPQUFBRDs7UUFLRTFVO1FBQUFDO1FBQUFFO1FBQUFDO1FBQVlZO1FBQVpHO1FBQUFHO1FBQUFDOzs7Ozs7O1FBQUFveUU7UUFBQUY7Ozs7T0FBQXp6RTtPQUFBQztPQUFBRTtPQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR0VnVTtPQUNBRTtPQUNBRTtPQUNBbTdEO09BQ0FpRTtPQUVBRTtPQURBRDs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7OztJQ2JKNStFO0lBS0V1Sjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQVhJOztJQUFBLGNBQUs7SUFBTCxNQUFBO0lBQUExSSxRQUFBO0lBQUEsTUFBQTtJQUFLbUcsY0FBTCxXQUFBLCtCQUFBbkc7SUFBQW9HO0lBQUFHO0lBQUFrRCxtQkFBQXJELFlBQUFHO0lBQUFJO0lBQUFDO0lBQUE4QyxtQkFBQTlDLGNBQUFEO0lBQUFnRCxZQUFLeEQsYUFBTHNELGNBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBQUF0RDtTQUFBRztTQUFBSztTQUFBRDtTQUFLUjtTQUFMc0Q7U0FBQUM7U0FBQUM7SUFXSk87SUFBQUM7SUFBQUU7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDSkEwUjtJQVVBZ2hFO0lBQ0FDO0lBRUFDO0lBQ0FuSDtJQUNBQztJQUNBQztJQWVGUjtJQUNBNEg7SUFDQUU7SUFDQUM7SUFlQVM7SUFDQUM7SUFZQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7OztpRURqRUFsL0U7SUFBQXlmO0lBQUFFO0lBQUFELHVCQUFBQzs7Ozs7Ozs7OzttRUFLRXBXO0lBQUFpMUU7SUFBQUM7SUFBQUMseUJBQUFELGlCQUxGLytEO0lBS0U7Y0FBWTtJQUFaLE1BQUE7SUFBQTdVLFVBQUE7SUFBQSxNQUFBO0lBQVlrQjtNQUFaLFdBQUEsK0JBQUFsQjtJQUFBcUIscUJBQUFuQixjQUFBQztJQUFBcUIscUJBQUFuQixjQUFBQztJQUFBbUIsY0FBWVAsZUFBWkcsZ0JBQUFHO0lBR0U4UztJQUNBRTtJQUNBRTtJQUNBbTdEO0lBQ0FpRTtJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQ2JGaGlFO09BVUFnaEU7T0FDQUM7T0FFQUM7T0FDQW5IO09BQ0FDO09BQ0FDO09BZUZSO09BQ0E0SDtPQUNBRTtPQUNBQztPQWVBUztPQUNBQztPQVlBQztPQUNBQztPQUNBQztPRGpFQXgvRDtPQUFBRDs7UUFLRTFVO1FBQUFDO1FBQUFFO1FBQUFDO1FBQVlZO1FBQVpHO1FBQUFHO1FBQUFDOzs7Ozs7O1FBQUFveUU7UUFBQUY7Ozs7T0FBQXp6RTtPQUFBQztPQUFBRTtPQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR0VnVTtPQUNBRTtPQUNBRTtPQUNBbTdEO09BQ0FpRTtPQUVBRTtPQURBRDs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7SUVvREY1K0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMUVzQjtJQVNWOEc7SUFDQUQ7Ozs7Ozs7Ozs7O1lBQUFBLFlBREFDOzs7Ozs7OztJQVRVOzs7Ozs7Ozs7Ozs7Ozs7SUFxQmxCcTRFOzs7Ozs7Ozs7Ozs7SUF0Qk9wMEUsZUFzQlBvMEU7SUF0Qk9uMEUsZ0JBc0JQbTBFO0lBdEJPajBFLGVBc0JQaTBFO0lBdEJPaDBFLGVBc0JQZzBFO0lBdEJPbDBFLGlCQXNCUGswRTtJQXRCTy96RSxpQkFzQlArekU7SUF0Qk85ekUsVUFzQlA4ekU7SUF0Qk9uNEU7SUFnQ1BuQjtJQUFBSztJQU1JNDRDO0lBQUFyMEM7Ozs7O1NBdENHTTtTQUFBQztTQUFBRTtTQUFBQztTQUFBbkU7U0FBQWlFO1NBQUFHO1NBQUFDO1NBc0NIWjtTQU5KNUU7U0FBQUs7U0FNSTQ0Qzs7O0lBZ0JOcC9CO0lBQ0FEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBdkRTMVU7U0FBQUM7U0FBQUU7U0FBQUM7U0FBQW5FO1NBQUFpRTtTQUFBRztTQUFBQztJQTJFWFc7SUFBQUM7SUFBQUU7SUFBQUM7Ozs7Ozs7Ozs7SUFSQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUVBUUFwTTtJQUFBdytFO0lBQUE3K0Q7SUFBQSsrRCx5QkFBQS8rRCxlQXJCRUQ7SUFxQkY7Y0FBWTtJQUFaLE1BQUE7SUFBQTdlLFFBQUE7SUFBQSxNQUFBO0lBQVlrTCxnQkFBWixXQUFBLCtCQUFBbEw7SUFBQTRNLHFCQUFBekIsY0FBQUM7SUFBQTJCLHFCQUFBekIsY0FBQUM7SUFBQXlCLGNBQVk5QixlQUFaMEIsZ0JBQUFHO0lBR0V1UjtJQUNBRTtJQUNBRTtJQUNBbTdEO0lBQ0FpRTtJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTlCQW4vRDtPQUNBRDs7UUFvQkZ6VDtRQUFBQztRQUFBRTtRQUFBQztRQUFZTDtRQUFaMEI7UUFBQUc7UUFBQUM7Ozs7Ozs7UUFBQTZ3RTtRQUFBRjs7OztPQUFBeHlFO09BQUFDO09BQUFFO09BQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FHRStTO09BQ0FFO09BQ0FFO09BQ0FtN0Q7T0FDQWlFO09BRUFFO09BREFEOzs7U0FuRlM3ekU7U0FBQUM7U0FBQUU7U0FBQUM7U0FBQW5FO1NBQUFpRTtTQUFBRztTQUFBQztTQXNDSFo7U0FOSjVFO1NBQUFLO1NBTUk0NEM7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDVlY5K0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F4Qk07O0lBQUEsY0FBSztJQUFMLE1BQUE7SUFBQWEsUUFBQTtJQUFBLE1BQUE7SUFBS21HLGNBQUwsV0FBQSwrQkFBQW5HO0lBQUFvRztJQUFBRztJQUFBa0QsbUJBQUFyRCxZQUFBRztJQUFBSTtJQUFBQztJQUFBOEMsbUJBQUE5QyxjQUFBRDtJQUFBZ0QsWUFBS3hELGFBQUxzRCxjQUFBQztJQUFBRTtJQUFBNUU7SUFBQUs7d0RBQUF1RSxTQUFBdkU7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQU9BOzBDQVBLYzs7SUFPTDtJQUNBOzs7UUFBQTs7Ozs7SUFBQSxPQUFBO0dBQWdEO0dBQWhEO0lBQUE7O09BQUE7Ozs7Ozs7Ozs7O1NBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FXQTs7SUFBQSxjQUFLO0lBQUwsTUFBQTtJQUFBNkQsVUFBQTtJQUFBLE1BQUE7SUFBS0M7TUFBTCxXQUFBLCtCQUFBRDtJQUFBRTtJQUFBQztJQUFBQyxxQkFBQUYsY0FBQUM7SUFBQUU7SUFBQUM7SUFBQUMscUJBQUFELGNBQUFEO0lBQUFHLGNBQUtQLGVBQUxHLGdCQUFBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQUFBTDtTQUFBQztTQUFBRztTQUFBRDtTQUFLSjtTQUFMRztTQUFBRztTQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lFQUtOckw7SUFBQXlmO0lBQUFFO0lBQUFELHVCQUFBQztJQUVJUjtJQUNBRTtJQUNBRTs7Ozs7Ozs7T0FKSkc7T0FBQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUVJTjtPQUNBRTtPQUNBRTs7O1NBNUJFdFk7U0FBQUc7U0FBQUs7U0FBQUQ7U0FBS1I7U0FBTHNEO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUE1RTtTQUFBSzs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ0NGbEc7Ozs7Ozs7Ozs7Ozs7Ozs7R0FBUTs7Ozs7SUFBQSxVQUFBO0lBQVIsY0FBUTtJQUFSLE1BQUE7SUFBQWEsUUFBQTs7OztHQUFRLFNBQUFtRyxZQUFBakc7SUFBUixVQUFBO0lBQUEsT0FBQSxXQUFBLCtCQUFBRixpQkFBUUU7R0FBNEQ7WUFBcEVrRyxXQUFLaEcsV0FBTEs7SSxvQ0FBS0wsV0FBTEs7O1lBQUE4RixZQUFLakcsU0FBTE0sS0FBQTRGLEtBQUEvRjtJQUFBLE9BQUEsd0NBQUtILFVBQUxNLEtBQUE0RixLQUFBL0Y7R0FBb0U7WUFBcEVnSixhQUFLako7aUJBQUxDO0tBQUEsVUFBS0Q7S0FBTCwwQixPQUFBK0YsaUJBQUE5RjtJQUFvRTtJQUFwRSxvQkFBQUEsR0FBQSxPQUFBMkYsV0FBSzVGLGlCQUFMQyxHQUFvRTtHQUFBO1lBQXBFa0csV0FBS2hHLE1BQVVDLEtBQUFDLFNBQUFDO0ksK0NBQVZILE9BQVVDLEtBQUFDLFNBQUFDOztZQUFmOEYsYUFBS2pHLE1BQUxDLEtBQUFDO0lBQUEsT0FBQSx3Q0FBS0YsT0FBTEMsS0FBQUM7R0FBb0U7WUFBcEU2SSxhQUFLekk7aUJBQUxMLEtBQUFDLFNBQUFLO0tBQUEsT0FBQXlGLFdBQUsxRixpQkFBTEwsS0FBQUMsU0FBQUs7SUFBb0U7SUFBcEU7cUJBQUFOLEtBQUFDO2FBQUEsT0FBQStGLGFBQUszRixpQkFBTEwsS0FBQUM7WUFBb0U7O0dBQUE7WUFBcEU4SSxNQUFBdkk7SUFBQSxJQUFBLE1BQUFzSSxhQUFBdEksV0FBQSxNQUFBcUksYUFBQXJJO0lBQUEsV0FBUStFLFlBQVIvRTtHQUFvRTtZQUE1RGtkLHFCQUFIQztJLDhDQUFBQTs7WUFBR0Msb0JBQUhDO0ksOENBQUFBOztZQUFHQyxvQkFBSEM7SSw4Q0FBQUE7OztJQUFMM1o7SUFBQUs7aUVBQUFsRztJQUFBeWY7WUFBQUMsYUFBQWxlO0lBQUEsSUFBQW1lLFlBQUEsNkJBQUFuZTtJQUFBOzthQUFBbWU7O2tDQUFBLE9BQUEsNkJBQUFuZTtHQUFvRTs7SUFFaEUyYTtJQUNBMVI7SUFJZ0JhO0lBQUFrUjtJQUFBOVI7SUFBQWlCO0lBQUFFO0lBQUFxVDtJQUFBa2dFO0lBQUFDOztJQUFBQztJQUFBeHZDO0lBQUEzaUI7SUFBQW95RDtJQUFBQztJQUFBdkk7SUFBQXdJOzs7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7OztPQVBaNzRFO09BQVJDO09BQUFHO09BQUFLO09BQUFEO09BQUE4QztPQUFBQztPQUFBQztPQUFRMlU7T0FBQUU7T0FBQUU7T0FBUkc7T0FBQUQ7T0FPb0JuVTtPQUFBa1I7T0FBQTlSO09BQUFpQjtPQUFBRTtPQUFBcVQ7T0FBQWtnRTtPQUFBQzs7T0FBQUM7T0FBQXh2QztPQUFBM2lCO09BQUFveUQ7T0FBQUM7T0FBQXZJO09BQUF3STs7O09BQUFDO09BQUFDO09BQUFDO09BQUFDOzs7O1NBUFo3NEU7U0FBUkM7U0FBQUc7U0FBQUs7U0FBQUQ7U0FBQThDO1NBQUFDO1NBQUFDO1NBR0lDO1NBSEo1RTtTQUFBSztTQUVJaVc7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUNHUm5jO0lBS0V1Sjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQVhJOztJQUFBLGNBQUs7SUFBTCxNQUFBO0lBQUExSSxRQUFBO0lBQUEsTUFBQTtJQUFLbUcsY0FBTCxXQUFBLCtCQUFBbkc7SUFBQW9HO0lBQUFHO0lBQUFrRCxtQkFBQXJELFlBQUFHO0lBQUFJO0lBQUFDO0lBQUE4QyxtQkFBQTlDLGNBQUFEO0lBQUFnRCxZQUFLeEQsYUFBTHNELGNBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBQUF0RDtTQUFBRztTQUFBSztTQUFBRDtTQUFLUjtTQUFMc0Q7U0FBQUM7U0FBQUM7SUFXSk87SUFBQUM7SUFBQUU7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUVBTEZuTDtJQUFBeWY7SUFBQUU7SUFBQUQsdUJBQUFDOzs7Ozs7Ozs7O21FQUtFcFc7SUFBQWkxRTtJQUFBQztJQUFBQyx5QkFBQUQsaUJBTEYvK0Q7SUFLRTtjQUFZO0lBQVosTUFBQTtJQUFBN1UsVUFBQTtJQUFBLE1BQUE7SUFBWWtCO01BQVosV0FBQSwrQkFBQWxCO0lBQUFxQixxQkFBQW5CLGNBQUFDO0lBQUFxQixxQkFBQW5CLGNBQUFDO0lBQUFtQixjQUFZUCxlQUFaRyxnQkFBQUc7SUFHRThTO0lBQ0FFO0lBQ0FFO0lBQ0FtN0Q7SUFDQWlFO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BZEpuL0Q7T0FBQUQ7O1FBS0UxVTtRQUFBQztRQUFBRTtRQUFBQztRQUFZWTtRQUFaRztRQUFBRztRQUFBQzs7Ozs7OztRQUFBb3lFO1FBQUFGOzs7O09BQUF6ekU7T0FBQUM7T0FBQUU7T0FBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUdFZ1U7T0FDQUU7T0FDQUU7T0FDQW03RDtPQUNBaUU7T0FFQUU7T0FEQUQ7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDbEJPO0lBQUEsTUFBQTtJQUFMLGNBQUs7SUFBTCxNQUFBO0lBQUEvOUUsUUFBQTtJQUFBLE1BQUE7SUFJRW1HLGNBSkYsV0FBQSwrQkFBQW5HO0lBR0VpL0U7SUFFQUM7TUFBUzs7Ozs7O0lBQ1Q5STtZQUNBdnNFLG1CQUFjdkUsR0FBSSxPQUFBLFdBSmxCMjVFLGtCQUljMzVFLEdBQXNCO1lBRXBDc0UsUUFBUTFKLFVBQU0sT0FBQSxXQU5kKytFLGtCQU1RLytFLEdBQXdCO1lBRWhDcUcsWUFBWTNGLFlBQVkwRTtJQUFJLE9BQUEsV0FSNUIyNUUsa0JBUXdCMzVFO0dBQXNCO0dBQy9CLElBQWZtRSxtQkFUQXcxRSxrQkFRQTE0RTtZQUdBSSxXQUFlL0YsS0FBTUM7SUFDdkIsT0FIaUIsZ0NBUGZxK0UsUUFTcUJyK0U7R0FDaUM7WUFHdEQrRixhQUFXaEcsS0FBTUM7SUFDbkIsT0FBaUMsb0NBZC9CcStFLFNBYWlCcitFO0dBQzBDO0dBSTdEO0lBREU2SSxtQkFKQTlDLGNBSkFEO0lBWUFnRCxZQXRCQXhELGFBUUFzRCxjQVVBQztZQVlBMUUsVUFBVUM7SUFBTyxPQUFBLG1DQTdCakJpNkUsUUE2QlVqNkU7R0FBZ0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBL0IxRGc2RTtTQVFBMTRFO1NBT0FLO1NBSkFEO1NBVkFSO1NBUUFzRDtTQVVBQztTQUlBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0F2QkFzMUU7U0FRQTE0RTtTQU9BSztTQUpBRDtTQVZBUjtTQVFBc0Q7U0FVQUM7U0FJQUM7U0FqQkFDO1NBSEF3c0U7U0FDQXZzRTtTQUpBbzFFO1NBK0JBajZFO1NBL0JBaTZFOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDUlI7SUFBQUU7SUFFSUM7Ozs7O2dDQUZKRCx1QkFFSUM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ0ZDO0lBQUE7TUFBQTs7O0lBQUwsY0FBSztJQUFMLE1BQUE7SUFBQXAvRSxRQUFBO0lBQUEsTUFBQTtJQUFLbUcsY0FBTCxXQUFBLCtCQUFBbkc7Ozs7O1lBQUFvRyxrQkFBQSxTQUl3QztZQUp4Q0csWUFBQTNGLEtBQUE0RjtJQUFBOztPQUFBLE9BQUEsK0JBQUE1RixLQUFBNEY7O09BQUEsT0FBQSwrQkFBQTVGLEtBQUE0RjtlQUFBLE9BQUEsK0JBQUE1RixLQUFBNEY7O0dBSXdDO0dBSnhDLElBQUFpRCxtQkFBQXJELFlBQUFHO1lBQUFJLFdBQUEvRixLQUFBQyxTQUFBQztJQUFBOzhEQUFBRDtHQUl3QztZQUp4QytGLGFBQUFoRyxLQUFBQztJQUFBLFlBQUEsOEJBQUFELEtBQUFDOztpREFBQUE7MEJBQ0UsaUJBQ0Esa0JBQ0E7O0dBQ3NDO0dBSnhDO0lBQUE2SSxtQkFBQTlDLGNBQUFEO0lBQUFnRCxZQUFLeEQsYUFBTHNELGNBQUFDO0lBTXdCRTtJQUFBQztJQUFBQztJQUFBOUU7SUFBQUs7SUFBQWdaO0lBQUErM0Q7SUFBQXo2RDtJQUFBbzhEO0lBQUF0Qzs7Ozs7Ozs7O09BTnhCcnZFO09BQUFHO09BQUFLO09BQUFEO09BQUtSO09BQUxzRDtPQUFBQztPQUFBQztPQU13QkM7T0FBQUM7T0FBQUM7T0FBQTlFO09BQUFLO09BQUFnWjtPQUFBKzNEO09BQUF6NkQ7T0FBQW84RDtPQUFBdEM7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ0FwQnQyRTs7Ozs7Ozs7Ozs7Ozs7O0dBQVE7Ozs7Ozs7Ozs7Ozs7O0lBQUEsVUFBQTtJQUFSLGNBQVE7SUFBUixNQUFBO0lBQUFhLFFBQUE7Ozs7Ozs7Ozs7O0dBQVEsU0FFVm1HLFlBRlVqRztJQUFSLFVBQUE7SUFBQSxPQUFBLFdBQUEsK0JBQUFGLGlCQUFRRTtHQUFtRDtZQUU3RGtHLFdBRk9oRyxXQUFMSztJLG9DQUFLTCxXQUFMSzs7WUFFRjhGLFlBRk9qRyxTQUFMTSxLQUFBNEYsS0FBQS9GO0lBQUEsT0FBQSx3Q0FBS0gsVUFBTE0sS0FBQTRGLEtBQUEvRjtHQUEyRDtZQUU3RGdKLGFBRk9qSjtpQkFBTEM7S0FBQSxVQUFLRDtLQUFMLDBCLE9BRUYrRixpQkFGRTlGO0lBQTJEO0lBQTNELG9CQUFBQSxHQUFBLE9BRUYyRixXQUZPNUYsaUJBQUxDLEdBQTJEO0dBQUE7WUFFN0RrRyxXQUZPaEcsTUFBVUMsS0FBQUMsU0FBQUM7SSwrQ0FBVkgsT0FBVUMsS0FBQUMsU0FBQUM7O1lBRWpCOEYsYUFGT2pHLE1BQUxDLEtBQUFDO0lBQUEsT0FBQSx3Q0FBS0YsT0FBTEMsS0FBQUM7R0FBMkQ7WUFFN0Q2SSxhQUZPekk7aUJBQUxMLEtBQUFDLFNBQUFLO0tBQUEsT0FFRnlGLFdBRk8xRixpQkFBTEwsS0FBQUMsU0FBQUs7SUFBMkQ7SUFBM0Q7cUJBQUFOLEtBQUFDO2FBQUEsT0FFRitGLGFBRk8zRixpQkFBTEwsS0FBQUM7WUFBMkQ7O0dBQUE7WUFFN0Q4SSxNQUZFdkk7SUFBQSxJQUFBLE1BRUZzSSxhQUZFdEksV0FBQSxNQUVGcUksYUFGRXJJO0lBQUEsV0FFRitFLFlBRkUvRTtHQUEyRDtZQUU3RGtkLHFCQUZPQztJLDhDQUFBQTs7WUFFUEMsb0JBRk9DO0ksOENBQUFBOztZQUVQQyxvQkFGT0M7SSw4Q0FBQUE7OztpRUFBTHhmO0lBRUZ5ZjtZQUFBQyxhQUZFbGU7SUFBQSxJQUFBbWUsWUFBQSw2QkFBQW5lO0lBQUE7O2FBQUFtZTs7a0NBQUEsT0FBQSw2QkFBQW5lO0dBQTJEO0dBYTFDOzs7VUFYbkJ3RjtJQVdtQixVQUFBO0lBQUEsVUFBQTtJQUFuQixjQUFtQjtJQUFuQixNQUFBO0lBQUE2RCxVQUFBO0dBQW1CLFNBQUFDLGNBQUEvSixHQUFBK2xCO0lBQW5CLFVBQUE7SUFBQSxPQUFBO2FBQUEsK0JBQUFqYztpQkFBbUI5SixPQUFBK2xCO0dBQW9DO1lBQXZEL2IsYUFBTTlKLFdBQUs4bEIsZUFBWHpsQixHLE9BWEEyRixXQVdNaEcsV0FBTks7O1lBQUEwSixjQUFNN0osU0FBSzZsQixhQUFYdmxCLEtBQUE0RixLQUFBL0YsR0FBQSxPQVhBOEYsWUFXTWpHLFNBQU5NLEtBQUE0RixLQUFBL0Y7R0FBdUQ7WUFBdkQySixlQUFNNUosY0FBS3FZO2lCQUFYcFk7S0FBQSxVQUFXb1ksMkJBQUxyWTtLQUFOLDBCLE9BQUEySix3QkFBQTFKO0lBQXVEO0lBQXZEO3FCQUFBQTthQUFBLE9BQUF5SixhQUFNMUosaUJBQUtxWSxxQkFBWHBZO1lBQXVEOztHQUFBO1lBQXZENEosYUFBTTFKLE1BQUt5bEIsVUFBZXhsQixLQUFBQyxTQUFBQyxNLE9BWDFCNkYsV0FXTWhHLE1BQW9CQyxLQUFBQyxTQUFBQzs7WUFBMUJ3SixhQUFNM0osTUFBS3lsQixVQUFYeGxCLEtBQUFDLFNBQUEsT0FYQStGLGFBV01qRyxNQUFOQyxLQUFBQztHQUF1RDtZQUF2RDBKLGVBQU10SixjQUFLK1g7aUJBQVhwWSxLQUFBQyxTQUFBSztLQUFBLE9BQUFtSjtjQUFNcEosaUJBQUsrWCxxQkFBWHBZLEtBQUFDLFNBQUFLO0lBQXVEO0lBQXZEO3FCQUFBTixLQUFBQzthQUFBLE9BQUF5SjtzQkFBTXJKLGlCQUFLK1gscUJBQVhwWSxLQUFBQztZQUF1RDs7R0FBQTtZQUF2RDJKLFFBQUFwSixPQUFBNlg7SUFBQTtLQUFBLE1BQUExTyxlQUFBbkosVUFBQTZYO0tBQUEsTUFBQTdPLGVBQUFoSixVQUFBNlg7SUFBQSxXQUFtQmhQLGNBQW5CN0ksVUFBQTZYO0dBQXVEO1lBQXZEbk8sWUFBTXUwRSxVQUFLQyxjQUFYN29ELE9BQUEsT0FBQSxzQkFBTTRvRCxVQUFONW9EO0dBQXVEO1lBQXZEenJCLFlBQU11MEUsVUFBS0MsY0FBWHowRSxPQUFBLE9BQUEsc0JBQU13MEUsVUFBTngwRTtHQUF1RDtZQUVuRDAwRSxlO1lBQ0FDLFk7WUFDQUMsWTtZQUNBMTZELGM7WUFDQUQsUzs7Ozs7MEI7cUI7Ozs7T0FqQko3ZTtPQUFBQztPQUFBRztPQUFBSztPQUFBRDtPQUFBOEM7T0FBQUM7T0FBQUM7T0FBQTJVO09BQUFFO09BQUFFO09BQUFHO09BQUFEOzs7Ozs7Ozs7OztRQVdBOVQ7UUFBQUU7UUFBbUJmO1FBQW5CQztRQUFBQztRQUFBRztRQUFBRDtRQUFBRDtRQUFBRztRQUFBQztzQjtRQUVJaTFFOztRQUlBejZEO1FBREFDOztRQUZBeTZEO1FBQ0FDOzs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDdEJpRDs7Ozs7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQytIckR4Z0Y7SUFHQXVKO0lBR0FHO0lBR0FHO0lBR0FHO0lBR0FFO0lBR0FHO0lBR0FvMkU7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFFQUM7SUFHQUM7SUFVRUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTlKRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O0dBTUY7O0dBR1M7R0FBQTtZQUlMQyxnQkFBTXY2RSxjQUFXLE9BQVhBO1lBQ053NkUsZ0JBQVNya0UsY0FBUSxPQUFSQTtZQUNUc2tFLGdCQUFZQyxjQUFLLE9BQUxBO1lBV2RDO0lBUFMsWUFHTCxNQUFBO1FBRkszNkU7SUFBSyxPQUFMQTtHQUVlO1lBMER0QjQ2RSxVQS9Dc0J4Z0YsR0FBUXdaLEdBQVMsT0FBQSw2QkFBakJ4WixHQUFRd1osR0FBdUM7R0FBM0Q7SUFFVis2RDtJQUNBQztJQUNBQztZQUNBa0UsVUFBUTM0RSxHQUFFd1osR0FBSSxlQUFOeFosa0JBQUV3WixlQUFnQjs7SUFDMUJpbkU7SUFDQUM7SUFDQW41RTtJQUNBbzVFO0lBQ0FDO0lBQ0E1dkU7SUFPRm1qQjtJQVVFSjtZQUNBOHNEOzs7Ozs7R0FBUSxJQUNScjVFO1lBT0ZzNUUsWTtHQXFDUTtJQWxDTkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQTNmO0lBRUE0ZjtJQUNBQztJQUNBNTVFO0lBQ0E2NUU7SUFDQUM7SUFDQUM7SUFDQTFHO0lBQ0FuQztJQUNBQztJQUVBNkk7SUFDQUM7SUFDQUM7SUFDQWo5RTtJQUNBazlFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFZTSxVQUFBO0lBQVIsY0FBUTtJQUFSLE1BQUE7SUFBQS9oRixRQUFBO0dBQVEsU0EwRFZnaUYsZ0JBMURVOWhGO0lBQVIsV0FBQTtJQUFBLE9BQUEsV0FBQSwrQkFBQUYsa0JBQVFFO0dBQ3dEO1lBeURsRStoRixlQTFETzdoRixXQUFMSztJLGlDQUFLTCxXQUFMSzs7WUEwREZ5aEYsZ0JBMURPNWhGLFNBQUxNLEtBQUE0RixLQUFBL0Y7SUFBQSxPQUFBLHFDQUFLSCxVQUFMTSxLQUFBNEYsS0FBQS9GO0dBQ2dFO1lBeURsRTBoRixpQkExRE8zaEY7a0JBQUxDO0tBQUEsV0FBS0Q7S0FBTDtNLE9BMERGMGhGLHNCQTFERXpoRjtJQUNnRTtJQURoRSxvQkFBQUEsR0FBQSxPQTBERndoRixlQTFET3poRixpQkFBTEMsR0FDZ0U7R0FBQTtZQXlEbEUyaEYsZUExRE96aEYsTUFBY0MsS0FBQUMsU0FBQUM7SSw0Q0FBZEgsT0FBY0MsS0FBQUMsU0FBQUM7O1lBMERyQnVoRixpQkExRE8xaEYsTUFBTEMsS0FBQUM7SUFBQSxPQUFBLHFDQUFLRixPQUFMQyxLQUFBQztHQUNnRTtZQXlEbEV5aEYsaUJBMURPcmhGO2tCQUFMTCxLQUFBQyxTQUFBSztLQUFBLE9BMERGa2hGLGVBMURPbmhGLGlCQUFMTCxLQUFBQyxTQUFBSztJQUNnRTtJQURoRTtxQkFBQU4sS0FBQUM7YUFBQSxPQTBERndoRixpQkExRE9waEYsaUJBQUxMLEtBQUFDO1lBQ2dFOztHQUFBO1lBeURsRTBoRixVQTFERW5oRjtJQUFBLElBQUEsT0EwREZraEYsaUJBMURFbGhGLFdBQUEsT0EwREYrZ0YsaUJBMURFL2dGO0lBQUEsV0EwREY0Z0YsZ0JBMURFNWdGO0dBQ2dFO1lBeURsRW9oRixjQTFERWxoRixPQUFBNFksT0FBQUM7a0JBQWdCQyxPQUFBQyxPQUFBLE9BQUEsV0FBaEIvWSxPQUFnQjhZLE9BQUFDLE9BQUU7SUFBQyxPQUFBLGlDQUFuQkgsT0FBQUM7R0FBMEI7WUEwRDVCc29FLFlBMURFbmhGLE9BQUEwK0QsT0FBQUM7a0JBQWdCQyxPQUFBQyxPQUFBLE9BQUEsV0FBaEI3K0QsT0FBZ0I0K0QsT0FBQUMsT0FBRTtJQUFDLE9BQUEsa0NBQW5CSCxPQUFBQztHQUEwQjtPQTBENUJ5aUIsZ0NBQUFDO1lBQUFDLG1CQTFET0M7SUFBVyxPQUFBLDJCQUFYQTtHQUFxQjs7cUVBQTFCMWpGO0lBMERGcUQ7WUFBQXNCLGlCQTFERW5EO0lBQUEsSUFBQW1pRixnQkFBQSxpQ0FBQW5pRjtJQUFBOzthQUFBbWlGOzttQ0FBQSxPQUFBLDJCQUFBbmlGO0dBQ2dFO0dBRWhFOztJQUFBLGNBQUs7SUFBTCxNQUFBO0lBQUFxSixVQUFBO0lBQUEsTUFBQTtJQXVERis0RTtNQXZERSxXQUFBLCtCQUFBLzRFO0lBdURGZzVFO0lBQUFDO0lBQUFDLHNCQUFBRixlQUFBQztJQUFBRTtJQUFBQztJQUFBQyxzQkFBQUQsaUJBQUFEO0lBQUFHLGVBQUFQLGdCQUFBRyxpQkFBQUc7SUFBQUU7SUFBQUM7SUF2REVweEU7R0FBQSxTQXVERnF4RSxVQXZERTM5RSxHQUFBLE9BQUEsV0FBQXNNLE1BQUF0TSxHQUNzRTtHQUR0RTtJQXVERjQ5RTtJQUFBQztJQUFBQztJQUFBQztvRUF2REVuN0U7SUF1REY5RjtJQXZERWtoRjtJQXVERjMvRSwwQkF2REUyL0U7O0lBR0EsY0FBSztJQUFMLE1BQUE7SUFBQTc0RSxVQUFBO0lBQUEsTUFBQTtJQW9ERjg0RTtNQXBERSxXQUFBLCtCQUFBOTRFO0lBb0RGKzRFO0lBQUFDO0lBQUFDLHNCQUFBRixlQUFBQztJQUFBRTtJQUFBQztJQUFBQyxzQkFBQUQsaUJBQUFEO0lBQUFHLGVBQUFQLGdCQUFBRyxpQkFBQUc7SUFBQUU7SUFBQUM7SUFwREVyeEU7R0FBQSxTQW9ERnN4RSxVQXBERTMrRSxHQUFBLE9BQUEsV0FBQXFOLFFBQUFyTixHQUNzRTtHQUR0RTtJQW9ERjQrRTtJQUFBQztJQUFBQztJQUFBQztvRUFwREVoOEU7SUFvREY3RjtJQXBERThoRjtJQW9ERnZnRiwwQkFwREV1Z0Y7O0lBR0EsY0FBSztJQUFMLE1BQUE7SUFBQXg0RSxVQUFBO0lBQUEsTUFBQTtJQWlERnk0RTtNQWpERSxXQUFBLCtCQUFBejRFO0lBaURGMDRFO0lBQUFDO0lBQUFDLHVCQUFBRixnQkFBQUM7SUFBQUU7SUFBQUM7SUFBQUMsdUJBQUFELGtCQUFBRDtJQUFBRyxnQkFBQVAsaUJBQUFHLGtCQUFBRztJQUFBRTtJQUFBQztJQWpERXZ2RTtHQUFBLFNBaURGd3ZFLFdBakRFMy9FLEdBQUEsT0FBQSxXQUFBbVEsUUFBQW5RLEdBQ3NFO0dBRHRFO0lBaURGNC9FO0lBQUFDO0lBQUFDO0lBQUFDO3FFQWpERTc4RTtJQWlERmpHO0lBakRFK2lGO0lBaURGeGhGLDJCQWpERXdoRjs7SUFHQSxjQUFLO0lBQUwsTUFBQTtJQUFBMTNFLFVBQUE7SUFBQSxNQUFBO0lBOENGMjNFO01BOUNFLFdBQUEsK0JBQUEzM0U7SUE4Q0Y0M0U7SUFBQUM7SUFBQUMscUJBQUFGLGNBQUFDO0lBQUFFO0lBQUFDO0lBQUFDLHFCQUFBRCxnQkFBQUQ7SUFBQUcsY0FBQVAsZUFBQUcsZ0JBQUFHO0lBQUFFO0lBQUFDO0lBOUNFandFO0dBQUEsU0E4Q0Zrd0UsU0E5Q0UzZ0YsR0FBQSxPQUFBLFdBQUF5USxRQUFBelEsR0FDc0U7R0FEdEU7SUE4Q0Y0Z0Y7SUFBQUM7SUFBQUM7SUFBQUM7bUVBOUNFMTlFO0lBOENGOUY7SUE5Q0V5akY7SUE4Q0ZsaUYseUJBOUNFa2lGOztJQUdBLGNBQUs7SUFBTCxNQUFBO0lBQUFoM0UsVUFBQTtJQUFBLE1BQUE7SUEyQ0ZpM0U7TUEzQ0UsV0FBQSwrQkFBQWozRTtJQTJDRmszRTtJQUFBQztJQUFBQyx1QkFBQUYsZ0JBQUFDO0lBQUFFO0lBQUFDO0lBQUFDLHVCQUFBRCxrQkFBQUQ7SUFBQUcsZ0JBQUFQLGlCQUFBRyxrQkFBQUc7SUFBQUU7SUFBQUM7SUEzQ0Vsd0U7R0FBQSxTQTJDRm13RSxXQTNDRTNoRixHQUFBLE9BQUEsV0FBQXdSLFFBQUF4UixHQUNzRTtHQUR0RTtJQTJDRjRoRjtJQUFBQztJQUFBQztJQUFBQztxRUEzQ0V4K0U7SUEyQ0ZqRztJQTNDRTBrRjtJQTJDRm5qRiwyQkEzQ0VtakY7O0lBR0EsY0FBSztJQUFMLE1BQUE7SUFBQTkyRSxVQUFBO0lBQUEsTUFBQTtJQXdDRisyRTtNQXhDRSxXQUFBLCtCQUFBLzJFO0lBd0NGZzNFO0lBQUFDO0lBQUFDLHVCQUFBRixnQkFBQUM7SUFBQUU7SUFBQUM7SUFBQUMsdUJBQUFELGtCQUFBRDtJQUFBRyxnQkFBQVAsaUJBQUFHLGtCQUFBRztJQUFBRTtJQUFBQztJQXhDRW53RTtHQUFBLFNBd0NGb3dFLFdBeENFM2lGLEdBQUEsT0FBQSxXQUFBdVMsUUFBQXZTLEdBQ3NFO0dBRHRFO0lBd0NGNGlGO0lBQUFDO0lBQUFDO0lBQUFDO3FFQXhDRXIvRTtJQXdDRnJHO0lBeENFMmxGO0lBd0NGcGtGLDJCQXhDRW9rRjs7Ozs7SUFHUSxVQUFBO0lBQVIsY0FBUTtJQUFSLE1BQUE7SUFBQXIzRSxVQUFBO0dBQVEsU0FxQ1ZzM0UsaUJBckNVN29GO0lBQVIsV0FBQTtJQUFBLE9BQUE7YUFBQSwrQkFBQXVSLG9CQUFRdlI7R0FDdUQ7WUFvQ2pFOG9GLGdCQXJDTzVvRixXQUFMSztJLGdDQUFLTCxXQUFMSzs7WUFxQ0Z3b0YsaUJBckNPM29GLFNBQUxNLEtBQUE0RixLQUFBL0Y7SUFBQSxPQUFBLG9DQUFLSCxVQUFMTSxLQUFBNEYsS0FBQS9GO0dBQytEO1lBb0NqRXlvRixrQkFyQ08xb0Y7a0JBQUxDO0tBQUEsV0FBS0Q7S0FBTDtNLE9BcUNGeW9GLHVCQXJDRXhvRjtJQUMrRDtJQUQvRCxvQkFBQUEsR0FBQSxPQXFDRnVvRixnQkFyQ094b0YsaUJBQUxDLEdBQytEO0dBQUE7WUFvQ2pFMG9GLGdCQXJDT3hvRixNQUFlQyxLQUFBQyxTQUFBQztJLDJDQUFmSCxPQUFlQyxLQUFBQyxTQUFBQzs7WUFxQ3RCc29GLGtCQXJDT3pvRixNQUFMQyxLQUFBQztJQUFBLE9BQUEsb0NBQUtGLE9BQUxDLEtBQUFDO0dBQytEO1lBb0NqRXdvRixrQkFyQ09wb0Y7a0JBQUxMLEtBQUFDLFNBQUFLO0tBQUEsT0FxQ0Zpb0YsZ0JBckNPbG9GLGlCQUFMTCxLQUFBQyxTQUFBSztJQUMrRDtJQUQvRDtxQkFBQU4sS0FBQUM7YUFBQSxPQXFDRnVvRixrQkFyQ09ub0YsaUJBQUxMLEtBQUFDO1lBQytEOztHQUFBO1lBb0NqRXlvRixXQXJDRWxvRjtJQUFBO0tBQUEsT0FxQ0Zpb0Ysa0JBckNFam9GO0tBQUEsT0FxQ0Y4bkYsa0JBckNFOW5GO0lBQUEsV0FxQ0YybkYsaUJBckNFM25GO0dBQytEO1lBb0NqRW1vRixlQXJDRWpvRixPQUFBa29GLE9BQUFDO2tCQUFpQkMsT0FBQUMsT0FBQSxPQUFBLFdBQWpCcm9GLE9BQWlCb29GLE9BQUFDLE9BQUU7SUFBQyxPQUFBLGdDQUFwQkgsT0FBQUM7R0FBMEI7O0lBcUM1Qkc7SUFBQUM7SUFBQUM7WUFBQUMsb0JBckNPbEg7SUFBWSxPQUFBLDBCQUFaQTtHQUFxQjs7c0VBQTFCakQ7SUFxQ0ZyOUU7WUFBQXNCLGtCQXJDRWxEO0lBQUEsSUFBQXFwRixpQkFBQSxrQ0FBQXJwRjtJQUFBOzthQUFBcXBGOzttQ0FBQSxPQUFBLDBCQUFBcnBGO0dBQytEO0dBRXZEOzs7OztJQUFBLFVBQUE7SUFBUixjQUFRO0lBQVIsTUFBQTtJQUFBNlIsVUFBQTtHQUFRLFNBa0NWeTNFLGVBbENVL3BGO0lBQVIsV0FBQTtJQUFBLE9BQUE7YUFBQSwrQkFBQXNTLG9CQUFRdFM7R0FDOEQ7WUFpQ3hFZ3FGLGNBbENPOXBGLFdBQUxLO0ksa0NBQUtMLFdBQUxLOztZQWtDRjBwRixlQWxDTzdwRixTQUFMTSxLQUFBNEYsS0FBQS9GO0lBQUEsT0FBQSxzQ0FBS0gsVUFBTE0sS0FBQTRGLEtBQUEvRjtHQUNzRTtZQWlDeEUycEYsZ0JBbENPNXBGO2tCQUFMQztLQUFBLFdBQUtEO0tBQUwsNEIsT0FrQ0YycEYscUJBbENFMXBGO0lBQ3NFO0lBRHRFLG9CQUFBQSxHQUFBLE9Ba0NGeXBGLGNBbENPMXBGLGlCQUFMQyxHQUNzRTtHQUFBO1lBaUN4RTRwRixjQWxDTzFwRixNQUFhQyxLQUFBQyxTQUFBQztJLDZDQUFiSCxPQUFhQyxLQUFBQyxTQUFBQzs7WUFrQ3BCd3BGLGdCQWxDTzNwRixNQUFMQyxLQUFBQztJQUFBLE9BQUEsc0NBQUtGLE9BQUxDLEtBQUFDO0dBQ3NFO1lBaUN4RTBwRixnQkFsQ090cEY7a0JBQUxMLEtBQUFDLFNBQUFLO0tBQUEsT0FrQ0ZtcEYsY0FsQ09wcEYsaUJBQUxMLEtBQUFDLFNBQUFLO0lBQ3NFO0lBRHRFO3FCQUFBTixLQUFBQzthQUFBLE9Ba0NGeXBGLGdCQWxDT3JwRixpQkFBTEwsS0FBQUM7WUFDc0U7O0dBQUE7WUFpQ3hFMnBGLFNBbENFcHBGO0lBQUEsSUFBQSxPQWtDRm1wRixnQkFsQ0VucEYsV0FBQSxPQWtDRmdwRixnQkFsQ0VocEY7SUFBQSxXQWtDRjZvRixlQWxDRTdvRjtHQUNzRTtZQWlDeEVxcEYsYUFsQ0VucEYsT0FBQW9wRixPQUFBQztrQkFBZUMsT0FBQUMsT0FBQSxPQUFBLFdBQWZ2cEYsT0FBZXNwRixPQUFBQyxPQUFFO0lBQUMsT0FBQSwrQkFBbEJILE9BQUFDO0dBQXdCO09Ba0MxQkc7WUFBQUMsV0FsQ0V6cEYsT0FBQTBwRixPQUFBQztrQkFBZUMsT0FBQUMsT0FBQSxPQUFBLFdBQWY3cEYsT0FBZTRwRixPQUFBQyxPQUFFO0lBQUMsT0FBQSxpQ0FBbEJILE9BQUFDO0dBQXdCO09Ba0MxQkcsNkJBQUFDO1lBQUFDLGtCQWxDT3pJO0lBQVUsT0FBQSx5QkFBVkE7R0FBbUI7O29FQUF4QmhEO0lBa0NGcDlFO1lBQUFzQixnQkFsQ0VwRDtJQUFBLElBQUE0cUYsZUFBQSxnQ0FBQTVxRjtJQUFBOzthQUFBNHFGOzttQ0FBQSxPQUFBLDJCQUFBNXFGO0dBQ3NFO0dBRXRFOztJQUFBLGNBQUs7SUFBTCxNQUFBO0lBQUE0UyxVQUFBO0lBQUEsT0FBQTtJQStCRmk0RTtNQS9CRSxXQUFBLCtCQUFBajRFO0lBK0JGazRFO0lBQUFDO0lBQUFDLDJCQUFBRixvQkFBQUM7SUFBQUU7SUFBQUM7SUFBQUMsMkJBQUFELHNCQUFBRDtJQUFBRztVQUFBUCxxQkFBQUcsc0JBQUFHO0lBQUFFO0lBQUFDO0lBQUFDO0lBL0JFQztHQUFBLFNBK0JGQyxlQS9CRXRtRixHQUFBLE9BQUEsV0FBQXFtRixRQUFBcm1GLEdBQ3NFO0dBRHRFO0lBK0JGdW1GO0lBQUFDO0lBQUFDOzttREEvQkV6TTtJQStCRjU4RTtJQS9CRXNwRjtJQStCRi9uRjtjQS9CRStuRjs7Ozs7SUFHUSxXQUFBO0lBQVI7Y0FBUTtJQUFSLE9BQUE7SUFBQWwzRSxVQUFBO0dBQVEsU0E0QlZtM0UsaUJBNUJVdnNGO0lBQVIsV0FBQTtJQUFBLE9BQUE7YUFBQSwrQkFBQW9WLG9CQUFRcFY7R0FDOEQ7WUEyQnhFd3NGLGdCQTVCT3RzRixXQUFMSztJLGtDQUFLTCxXQUFMSzs7WUE0QkZrc0YsaUJBNUJPcnNGLFNBQUxNLEtBQUE0RixLQUFBL0Y7SUFBQSxPQUFBLHNDQUFLSCxVQUFMTSxLQUFBNEYsS0FBQS9GO0dBQ3NFO1lBMkJ4RW1zRixrQkE1Qk9wc0Y7a0JBQUxDO0tBQUEsV0FBS0Q7S0FBTDtNLE9BNEJGbXNGLHVCQTVCRWxzRjtJQUNzRTtJQUR0RSxvQkFBQUEsR0FBQSxPQTRCRmlzRixnQkE1Qk9sc0YsaUJBQUxDLEdBQ3NFO0dBQUE7WUEyQnhFb3NGLGdCQTVCT2xzRixNQUFlQyxLQUFBQyxTQUFBQztJLDZDQUFmSCxPQUFlQyxLQUFBQyxTQUFBQzs7WUE0QnRCZ3NGLGtCQTVCT25zRixNQUFMQyxLQUFBQztJQUFBLE9BQUEsc0NBQUtGLE9BQUxDLEtBQUFDO0dBQ3NFO1lBMkJ4RWtzRixrQkE1Qk85ckY7a0JBQUxMLEtBQUFDLFNBQUFLO0tBQUEsT0E0QkYyckYsZ0JBNUJPNXJGLGlCQUFMTCxLQUFBQyxTQUFBSztJQUNzRTtJQUR0RTtxQkFBQU4sS0FBQUM7YUFBQSxPQTRCRmlzRixrQkE1Qk83ckYsaUJBQUxMLEtBQUFDO1lBQ3NFOztHQUFBO1lBMkJ4RW1zRixXQTVCRTVyRjtJQUFBO0tBQUEsT0E0QkYyckYsa0JBNUJFM3JGO0tBQUEsT0E0QkZ3ckYsa0JBNUJFeHJGO0lBQUEsV0E0QkZxckYsaUJBNUJFcnJGO0dBQ3NFO1lBMkJ4RTZyRixlQTVCRTNyRixPQUFBNHJGLE9BQUFDO2tCQUFpQkMsT0FBQUMsT0FBQSxPQUFBLFdBQWpCL3JGLE9BQWlCOHJGLE9BQUFDLE9BQUU7SUFBQyxPQUFBLGtDQUFwQkgsT0FBQUM7R0FBNEI7WUE0QjlCRyxhQTVCRWhzRixPQUFBaXNGLE9BQUFDO2tCQUFpQkMsT0FBQUMsT0FBQSxPQUFBLFdBQWpCcHNGLE9BQWlCbXNGLE9BQUFDLE9BQUU7SUFBQyxPQUFBLGtDQUFwQkgsT0FBQUM7R0FBNEI7O0lBNEI5Qkc7SUFBQUM7SUFBQUM7WUFBQUMsb0JBNUJPakw7SUFBWSxPQUFBLDRCQUFaQTtHQUF1Qjs7c0VBQTVCOUM7SUE0QkZyOUU7WUFBQXNCLGtCQTVCRXJEO0lBQUEsSUFBQW90RixpQkFBQSxrQ0FBQXB0RjtJQUFBOzthQUFBb3RGOzttQ0FBQSxPQUFBLDJCQUFBcHRGO0dBQ3NFO0dBRXRFOztJQUFBLGVBQUs7SUFBTCxPQUFBO0lBQUFnVyxXQUFBO0lBQUEsT0FBQTtJQXlCRnEzRTtNQXpCRSxXQUFBLCtCQUFBcjNFO0lBeUJGczNFO0lBQUFDO0lBQUFDLHdCQUFBRixpQkFBQUM7SUFBQUU7SUFBQUM7SUFBQUMsd0JBQUFELG1CQUFBRDtJQUFBRyxpQkFBQVAsa0JBQUFHLG1CQUFBRztJQUFBRTtJQUFBQztJQUFBQztJQXpCRUM7R0FBQSxTQXlCRkMsWUF6QkU5b0YsR0FBQSxPQUFBLFdBQUE2b0YsUUFBQTdvRixHQUNzRTtHQUR0RTtJQXlCRitvRjtJQUFBQztJQUFBQzs7bURBekJFL087SUF5QkZsOUU7SUF6QkVrc0Y7SUF5QkYzcUYsNEJBekJFMnFGOztJQUdBLGVBQUs7SUFBTCxPQUFBO0lBQUF0M0UsV0FBQTtJQUFBLE9BQUE7SUFzQkZ1M0U7TUF0QkUsV0FBQSwrQkFBQXYzRTtJQXNCRnczRTtJQUFBQztJQUFBQyx1QkFBQUYsZ0JBQUFDO0lBQUFFO0lBQUFDO0lBQUFDLHVCQUFBRCxrQkFBQUQ7SUFBQUcsZ0JBQUFQLGlCQUFBRyxrQkFBQUc7SUFBQUU7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7cUVBdEJFNVA7SUFzQkZwOUU7SUF0QkVpdEY7SUFzQkYxckYsMkJBdEJFMHJGOzs7OztJQUVRLFdBQUE7SUFBUixlQUFRO0lBQVIsT0FBQTtJQUFBcjNFLFdBQUE7R0FBUSxTQW9CVnMzRSxjQXBCVTd2RjtJQUFSLFdBQUE7SUFBQSxPQUFBO2FBQUEsK0JBQUF1WSxxQkFBUXZZO0dBQ3dEO1lBbUJsRTh2RixhQXBCTzV2RixXQUFMSztJLCtCQUFLTCxXQUFMSzs7WUFvQkZ3dkYsY0FwQk8zdkYsU0FBTE0sS0FBQTRGLEtBQUEvRjtJQUFBLE9BQUEsbUNBQUtILFVBQUxNLEtBQUE0RixLQUFBL0Y7R0FDZ0U7WUFtQmxFeXZGLGVBcEJPMXZGO2tCQUFMQztLQUFBLFdBQUtEO0tBQUwsNEIsT0FvQkZ5dkYsb0JBcEJFeHZGO0lBQ2dFO0lBRGhFLG9CQUFBQSxHQUFBLE9Bb0JGdXZGLGFBcEJPeHZGLGlCQUFMQyxHQUNnRTtHQUFBO1lBbUJsRTB2RixhQXBCT3h2RixNQUFZQyxLQUFBQyxTQUFBQztJLDBDQUFaSCxPQUFZQyxLQUFBQyxTQUFBQzs7WUFvQm5Cc3ZGLGVBcEJPenZGLE1BQUxDLEtBQUFDO0lBQUEsT0FBQSxtQ0FBS0YsT0FBTEMsS0FBQUM7R0FDZ0U7WUFtQmxFd3ZGLGVBcEJPcHZGO2tCQUFMTCxLQUFBQyxTQUFBSztLQUFBLE9Bb0JGaXZGLGFBcEJPbHZGLGlCQUFMTCxLQUFBQyxTQUFBSztJQUNnRTtJQURoRTtxQkFBQU4sS0FBQUM7YUFBQSxPQW9CRnV2RixlQXBCT252RixpQkFBTEwsS0FBQUM7WUFDZ0U7O0dBQUE7WUFtQmxFeXZGLFFBcEJFbHZGO0lBQUEsSUFBQSxPQW9CRml2RixlQXBCRWp2RixXQUFBLE9Bb0JGOHVGLGVBcEJFOXVGO0lBQUEsV0FvQkYydUYsY0FwQkUzdUY7R0FDZ0U7WUFtQmxFbXZGLFlBcEJFanZGLE9BQUFrdkYsT0FBQUM7a0JBQWNDLE9BQUFDLE9BQUEsT0FBQSxXQUFkcnZGLE9BQWNvdkYsT0FBQUMsT0FBRTtJQUFDLE9BQUEsK0JBQWpCSCxPQUFBQztHQUFzQjtZQW9CeEJHLFVBcEJFdHZGLE9BQUF1dkYsT0FBQUM7a0JBQWNDLE9BQUFDLE9BQUEsT0FBQSxXQUFkMXZGLE9BQWN5dkYsT0FBQUMsT0FBRTtJQUFDLE9BQUEsK0JBQWpCSCxPQUFBQztHQUFzQjtPQW9CeEJHLDRCQUFBQztZQUFBQyxpQkFwQk90TztJQUFTLE9BQUEseUJBQVRBO0dBQWlCOzttRUFBdEIzQztJQW9CRjU5RTtZQUFBc0IsZUFwQkVqRDtJQUFBLElBQUF5d0YsY0FBQSwrQkFBQXp3RjtJQUFBOzthQUFBeXdGOzttQ0FBQSxPQUFBLHlCQUFBendGO0dBQ2dFO0dBRWhFOztJQUFBLGVBQUs7SUFBTCxPQUFBO0lBQUEwd0YsV0FBQTtJQUFBLE9BQUE7SUFpQkZDO01BakJFLFdBQUEsK0JBQUFEO0lBaUJGRTtJQUFBQztJQUFBQyxzQkFBQUYsZUFBQUM7SUFBQUU7SUFBQUM7SUFBQUMsc0JBQUFELGlCQUFBRDtJQUFBRyxlQUFBUCxnQkFBQUcsaUJBQUFHO0lBQUFFO0lBQUFDO0lBQUFDO0lBakJFQztHQUFBLFNBaUJGQyxVQWpCRXBzRixHQUFBLE9BQUEsV0FBQW1zRixRQUFBbnNGLEdBQ3NFO0dBRHRFO0lBaUJGcXNGO0lBQUFDO0lBQUFDO29FQWpCRWxTO0lBaUJGeDlFO0lBakJFMnZGO0lBaUJGcHVGLDBCQWpCRW91RjtXQWlCRnRRLGdCQUFBK0M7SUFaSTtjQUFLO0lBQUwsT0FBQTtJQUFBd04sV0FBQTtJQUFBLE9BQUE7SUFZSkM7TUFaSSxXQUFBLCtCQUFBRDtZQVlKRSxxQkFaSWh5RixHLE9BWUp3aEYsZUFBQStDLGdCQVpJdmtGO1lBWUppeUYsc0JBWkk5eEYsS0FBQTRGLEtBQUEvRjtJQUFBLE9BWUp5aEYsZ0JBQUErQyxpQkFaSXJrRixLQUFBNEYsS0FBQS9GO0dBQWtEO0dBQWxEO0lBWUpreUYsNkJBQUFGLHNCQUFBQztZQUFBRSxxQkFaNkJoeUYsS0FBQUMsU0FBQUM7SSxPQVk3QnNoRixlQUFBZ0Qsa0JBWjZCeGtGLEtBQUFDLFNBQUFDOztZQVk3Qit4Rix1QkFaSWp5RixLQUFBQztJQUFBLE9BWUp3aEYsaUJBQUErQyxrQkFaSXhrRixLQUFBQztHQUFrRDtHQUFsRDtJQVlKaXlGLDZCQUFBRCx3QkFBQUQ7SUFBQUc7O09BQUFQO09BQUFHO09BQUFHO1lBQUFFLG9CQVBJQyxPQUFBQztJQUEyQixPQU8vQjFRO3NCQVB1QjJRLE9BQUFDO2NBQUEsT0FBQSw0QkFBQUQsT0FBQUM7YUFBTzthQUExQkg7YUFBQUM7R0FBZ0M7WUFPcENHLG9CQVBJOXdEO0lBQUEsT0FBQSxXQU9KbWdELGdDQVBJbmdEO0dBQWtGO1lBT3RGK3dELG9CQVBJOXdEO0lBQUEsT0FBQSxXQU9KbWdELGdDQVBJbmdEO0dBQWtGO0dBQWxGO0lBT0ord0Q7K0IsT0FBQTNROzttREFQSXhDO0lBT0pvVDtJQVBJQztJQU9KQzs7O1FBUElEO2lDQUFBLE9BT0ozdkY7SUE2Q0k2dkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bck1BdFQ7T0FDQUM7T0FDQUM7T0FXRkU7T0FTRWhNO09BQ0FDO09BQ0FDO09BQ0FrRTtPQUNBOEg7T0FDQUM7T0FDQW41RTtPQUNBbzVFO09BQ0FDO09BQ0E1dkU7T0FPRm1qQjtPQVVFSjtPQUNBOHNEO09BQ0FyNUU7T0FPRnM1RTtPQUdFQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBM2Y7T0FDQStlO09BQ0FhO09BQ0FDO09BQ0E1NUU7T0FDQTY1RTtPQUNBQztPQUNBQztPQUNBMUc7T0FDQW5DO09BQ0FDO09BRUE2STtPQUNBQztPQUNBQztPQUNBajlFO09BQ0FrOUU7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bc0VKQztPQUFBQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRDtPQUFBRTtPQUFBQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRDtPQUFBRTtPQUFBOStFO09BQUF0QjtPQUFBdWdGO09BQUFDO09BQUFDO09BQUFDO09BQUFFO09BQUFEO09BQUFFO09BQUFDO09BQUFDO09BQUFHO09BQUFGO09BQUFDO09BQUFHO09BQUFEO09BQUFFO09BQUExL0U7T0FBQXZCO09BQUFtaEY7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUU7T0FBQUQ7T0FBQUU7T0FBQUM7T0FBQUM7T0FBQUc7T0FBQUY7T0FBQUM7T0FBQUc7T0FBQUQ7T0FBQUU7T0FBQXRnRjtPQUFBdkI7T0FBQStoRjtPQUFBQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRDtPQUFBRTtPQUFBQztPQUFBQztPQUFBRztPQUFBRjtPQUFBQztPQUFBRztPQUFBRDtPQUFBRTtPQUFBdmhGO09BQUF2QjtPQUFBZ2pGO09BQUFDO09BQUFDO09BQUFDO09BQUFFO09BQUFEO09BQUFFO09BQUFDO09BQUFDO09BQUFHO09BQUFGO09BQUFDO09BQUFHO09BQUFEO09BQUFFO09BQUFqaUY7T0FBQXZCO09BQUEwakY7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUU7T0FBQUQ7T0FBQUU7T0FBQUM7T0FBQUM7T0FBQUc7T0FBQUY7T0FBQUM7T0FBQUc7T0FBQUQ7T0FBQUU7T0FBQWxqRjtPQUFBdkI7T0FBQTJrRjtPQUFBQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRDtPQUFBRTtPQUFBQztPQUFBQztPQUFBRztPQUFBRjtPQUFBQztPQUFBRztPQUFBRDtPQUFBRTtPQUFBbmtGO09BQUF2QjtPQUFBNGxGO09BQUFDO09BQUFDO09BQUFDO09BQUFFO09BQUFEO09BQUFFO09BQUFDO09BQUFDO09BQUFLO09BQUFFO09BQUFEO09BQUFFO09BQUFsbUY7T0FBQXRCO09BQUEwbkY7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUU7T0FBQUQ7T0FBQUU7T0FBQUM7T0FBQUM7T0FBQU07T0FBQUQ7T0FBQU87T0FBQUQ7T0FBQUU7T0FBQXZuRjtPQUFBdEI7T0FBQStvRjtPQUFBQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRDtPQUFBRTtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRTtPQUFBRDtPQUFBRTtPQUFBOW5GO09BQUF2QjtPQUFBdXBGO09BQUFDO09BQUFDO09BQUFDO09BQUFFO09BQUFEO09BQUFFO09BQUFDO09BQUFDO09BQUFLO09BQUFLO09BQUFFO09BQUFEO09BQUFFO09BQUE5cEY7T0FBQXRCO09BQUFzckY7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUU7T0FBQUQ7T0FBQUU7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUU7T0FBQUU7T0FBQUQ7T0FBQUU7T0FBQTFxRjtPQUFBdkI7T0FBQW1zRjtPQUFBQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRDtPQUFBRTtPQUFBQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRDtPQUFBRTtPQUFBenJGO09BQUF2QjtPQUFBa3RGO09BQUFDO09BQUFDO09BQUFDO09BQUFFO09BQUFEO09BQUFFO09BQUFDO09BQUFDO09BQUFLO09BQUFNO09BQUFEO09BQUFFO09BQUF2dEY7T0FBQXRCO09BQUFndkY7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUU7T0FBQUQ7T0FBQUU7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQUU7T0FBQUU7T0FBQUQ7T0FBQUU7T0FBQW51RjtPQUFBdkI7T0FBQTZ2RjtPQUFBQztPQUFBQztPQUFBQztPQUFBRTtPQUFBRDtPQUFBRTtPQUFBQztPQUFBQztPQUFBTTtPQUFBRDtPQUFBRTtPQUFBRztPQUFBRjtPQTZDSUc7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQzlORjtJQU5BL3BGO0lBQUFDO0lBTUF1STs7Ozs7OztHQUFBLFNBTkF0SSxLQU1BaEUsR0FBQSxPQUFBLFdBQUFzTSxNQUFBdE0sR0FBMEM7WUFIMUM4dEYsYTtZQUNBQyxhO1lBRkE5dEYsVUFTY3FrQjtJQUNaO0tBQ0kwcEUsTUFBTTtLQUNOQyxNQUFNLDJCQURORCxLQUFBQTtLQUVBRSxNQUFNLDJCQUZORixLQUNBQztLQUVBRSxRQUFRLDJCQUxBN3BFO0lBTVQsR0FBQSw0QkFEQzZwRSxPQUhBSDtLQUtlLFVBQUEsMEJBUFAxcEU7S0FPTyxPQUFBOztJQUNYLEdBQUEsNEJBSEo2cEUsT0FGQUY7S0FNOEI7TUFBQSxNQUFBLDBCQVA5QkQ7TUFPZSxNQUFDLDBCQVRSMXBFO0tBU08sT0FBQTs7SUFDWCxHQUFBLDRCQUxKNnBFLE9BREFEO0tBTzhCO01BQUEsTUFBQSwwQkFSOUJEO01BUWUsTUFBQywwQkFYUjNwRTtLQVdPLE9BQUE7O0lBQ2U7S0FBQSxNQUFBLDBCQVI5QjRwRTtLQVFlLE1BQUMsMEJBWlI1cEU7SUFZTyxPQUFBO0dBQTRCO1lBdkJqRC9rQixVQTBCYytrQixHQUFJLFdBeEJsQnJrQixVQXdCY3FrQixJQUEyQjtZQUt2QzhwRSxjQUFjNXVGLEdBQUksT0FBZ0IsMEJBQXBCQSxHQUErQjs7Ozs7Ozs7T0EvQi9Dc0U7T0FBQUM7T0FBQUM7T0FBQXpFO09BRUFVO09BQ0E2dEY7T0FDQUM7T0EyQkVLOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0N6QkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsY0FBSztJQUFMLE1BQUE7SUFBQWwwRixRQUFBO0lBQUEsTUFBQTtJQUZBbUcsY0FFQSxXQUFBLCtCQUFBbkc7SUFLRm0wRjtJQUFBQztJQVBFM3FGLG1CQU9GMHFGLG1CQUFBQztJQUFBQztJQUFBQztJQVBFNXFGLG1CQU9GNHFGLHFCQUFBRDtJQVBFMXFGLFlBQUF4RCxhQUFBc0QsY0FBQUM7SUFPRjs7V0FBSyxtREFQSHZEOztJQU9GLE1BQUE7SUFBQTZELFVBQUE7SUFBQSxNQUFBO0lBQUt1cUY7TUFBTCxXQUFBLCtCQUFBdnFGO0lBQUF3cUYsMEJBQUFMLG1CQUFBQztJQUFBSywwQkFBQUgscUJBQUFEO0lBQUFLO1VBQUtILG9CQUFMQyxxQkFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBUUFudkUsU0FBUXF2RSxvQkFBbUI5M0U7SUFFM0I7S0FERSszRTtPQUNGLDRCQUZRRDtJQUlWLE9BQUEsbUJBSElDLDZCQUR5Qi8zRTtHQUlXO1lBR3RDZzRFLFdBQWF4dEYsS0FBVXFWO0ksR0FBVnJWLFNBQU1DLE1BQU5ELFFBQUFiLE1BQU1jLGNBQU5kO0lBQ0wsSUFBTitvRSxRQUFNLDhCQURLL29FLEtBQVVrVztJQUV6QixPQUFBLDBCQUZlbFcsS0FDWCtvRTs7WUFZRnVsQiw2QkFBNkJ4dkYsR0FBSStCLEtBQVVxVixLQUFJcTRFO0lBQ2pELEdBRG1DMXRGLFNBQU1DLE1BQU5ELFFBQUFiLE1BQU1jLGNBQU5kO0lBQ3pCLElBQU4rb0UsUUFBTSx3QkFEcUJqcUUsR0FBSWtCLEtBQVVrVyxNQUV6Q3M0RSxRQUYrQnh1RixNQUMvQitvRTtJQUVKLHVEQUhtQy9vRSxLQUMvQitvRSxPQUQyQmpxRTtJQUcvQixTQUNJMnZGLGFBQWE3Z0UsU0FBUWwwQixHQUFFc0Y7S0FDekI7O2FBQWMsaUNBREM0dUIsU0FBUWwwQixHQUFFc0Y7SUFDdUI7YUFFOUN5bUUsS0FBS2lwQixZQUFZMXVGLEtBQUtrVztLQUN4QixHQUFHLGtDQURxQkEsS0FMdEJzNEUsUUFLaUJ4dUY7TUFFZDtLQUVXLElBQVYzRixjQUphMkY7S0FLakIsSUFDTSxJQUFBLGlCQUFJLFdBTkwwdUYsWUFQc0I1dkYsR0FXdkJ6RSxXQUtGaUY7V0FGRVg7O09BQUFDLDBCQUFBRDtPQUVGVyxvQkFGdUIsOEJBQXJCVjs7Z0JBRUZVLE1BQXdCLE9BQXhCQTtTQUNJcXZGLFNBREpydkYsTUFFSXN2RixlQVhXNXVGLE1BQUtrVztLQVlqQixHQUFBLGtDQVJEN2IsWUFPRXUwRjtNQUVDLHNCQUhERCxRQUNBQztLQUlGOztPQUdhdnBCO09BQUF0TTtPQUFBdU0sOENBQUF2TTtPQUFBd00sOENBQUFGO3FCQUFBQyxjQUFBQzs7WUFyQmpCa3BCOzRDQU9JcDBGLFlBT0V1MEY7SUFPc0I7SUFHOUIsSUFFQXR2RixJQXZCRW1tRSx3QkFQK0J6bEU7Y0E4QmpDViwyQkFBQUE7aUJBQUFBLE1BQ3FCVyxrQkFBaEI0dUY7S0FDRixPQUFBLGtDQURFQTtlQTNCSEo7O2dCQTJCR0k7O2VBeEJIcHBCLEtBUDZDOG9CLFdBK0IxQnR1RixPQUFoQjR1Rjs7SUFEd0MsT0FBN0N2dkY7R0FJa0U7WUFHbEV3dkYsY0FBY2h3RixHQUFHa0IsS0FBS2tXLEtBQUlxNEU7SUFDdEIsWUF0Q0pELDZCQXFDY3h2RixHQUFHa0IsS0FBS2tXLEtBQUlxNEU7O0tBSU4sT0FBQTs4QkFGaEJqdkYsY0FBSyxXQUFMQTtRQUNVeXlEO0lBQUssV0FBTSwyQkFBWEE7R0FDNkM7WUFHM0RnOUIsZUFBZWp3RixHQUFJK0IsS0FBU211RixRQUFPLzBGO0lBQ3JDLEdBRHFCNEcsU0FBTUMsTUFBTkQsUUFBQWIsTUFBTWMsY0FBTmQ7SUFDTjtLQUFYaXZGLFdBQVcsV0FEZUQsV0FBTy8wRjtLQUVqQ2kxRixZQURBRDtJQUVELEdBQUEsa0NBSGtCanZGO0tBS25COzs7OztPQUxtQkE7O0lBTUEsVUFBQSxtQkFOSmxCO0lBTWQsR0FBQSxrQ0FOa0JrQixNQUVqQmt2RjtLQVNBOzs7O1VBRUVDO1VBQUFDO1VBQUFDO1VBQUFDLFFBQUFEO1VBQUFFO2dFQUFBRDtVQUFrQkUsUUFBbEJKO1VBQUFLO2dFQUFrQkQ7VUFBZ0NFLFFBQWxEUDtVQUFBUTtnRUFBa0REO3dCQUFsREgsY0FBQUUsY0FBQUU7O01BRkY7O3NCQVhpQjN2Rjt3QkFBQUEsTUFFakJrdkY7eUJBU21FLG1CQVh0RHB3RjtLQVFmOzs7Ozs7OztJQU0wQjtLQUF4Qjh3Rix3QkFBd0IsOEJBZFg5d0YsR0FBSWtCLEtBQ2pCaXZGO0tBY0FZLGlCQUFpQixXQWZTYixXQUFibHdGLEdBY2I4d0YsdUJBZGlDMzFGO0lBZ0JsQyxHQUFBLGtDQURDNDFGLGlCQWZpQjd2RixTQUVqQmt2Rjs7Ozs7VUF5QkVZO1VBQUFDO1VBQUFDO1VBQUFDO1VBQUFDO1VBQUFDLFFBQUFEO1VBQUFFO2dFQUFBRDtVQUNFRSxRQURGSjtVQUFBSztnRUFDRUQ7VUFDQUUsUUFGRlA7VUFBQVE7Z0VBRUVEO1VBQ0FFLFFBSEZWO1VBQUFXO2dFQUdFRDtVQUNBRSxRQUpGYjtVQUFBYztnRUFJRUQ7OztrQkFKRlA7O21CQUFBRTt1QkFBQUUsY0FBQUUsY0FBQUU7O0tBVEo7Ozs7Ozt1QkFIRWY7dUJBZmlCN3ZGOzt1QkFDakJpdkY7d0JBQ0FDOzs7SUFnQkYsT0FIRVc7R0FpQlU7O0lBU1JyeEU7c0RBQUFBOztZQVVKcXlFLDZCQUE4QkMsU0FBUTEyRixLQUFHMjJGLFNBQUs3NkU7SUFDaEQsSUFSNENqVyxRQU9EOHdGLFVBQUs3NkUsU0FDNUM4NkUsV0FSd0Mvd0Y7SUFDNUM7S0FBQSxJQUFJRCxNQU9BZ3hGO0tBTkQsR0FBQSxrQ0FEQ2h4RixLQU11Qyt3RjtNQUxWLFVBQUEsY0FLTzMyRixLQU5wQzRGO01BQ2tCLEdBQUEsK0JBS1U4d0YsY0FDNUJFLFdBUEFoeEY7O0tBVUosT0FBQTs2QkFKMkMrd0YsY0FDdkNDLFdBRHVDRCxjQUFIMzJGOztHQUlGO1lBR3BDNjJGLDZCQUE4QkgsU0FBUWh5RixHQUFHa0IsS0FBS2tXLEtBQUlzTTtJQUNwRCxJQUFJMHVFLDZCQURnRDF1RTtJQUVqRCxHQUFBLGtDQURDMHVFLE1BRDRDaDdFO0tBSTlDLGdDQUprRHNNLE9BQUp0TTtJQVNoRCwyQkFUb0RzTSxVQUFaMWpCLEdBQUdrQixLQUN2Q2t4RjtjQUR1Q2x4RixNQUN2Q2t4RixpQkFEdUNseEYsTUFBS2tXOztTQVVoRE47O01BQ0UsY0FYc0M5VyxHQVV4QzhXLEdBVmdDazdFO01BVzlCLFVBREZsN0U7aUJBQUFBO1VBQUFBOzs7O0dBRUk7WUFTRnU3RSw2QkFBOEJMLFNBQVFoeUYsR0FBR2tCLEtBQUtrVyxLQUFJc007SUFDcEQsSUFBSTB1RSw2QkFEZ0QxdUU7SUFFakQsR0FBQSxrQ0FEQzB1RSxNQUQ0Q2g3RTtLQUk5QyxnQ0FKa0RzTSxPQUFKdE07SUFTaEQsMkJBVG9Ec00sVUFBWjFqQixJQUFHa0IsTUFBS2tXLFdBQzVDZzdFLFVBQUFBO2dCQUR1Q2x4RixNQUFLa1csV0FDNUNnN0U7Y0FEdUNseEY7U0FVM0M0VixJQVYyQzVWOztNQVd6QyxjQVhzQ2xCLEdBVXhDOFcsR0FWZ0NrN0U7TUFXOUIsVUFERmw3RTtpQkFBQUE7VUFBQUE7Ozs7R0FFSTtZQUdGdzdFLDZCQUE4Qk4sU0FBUTEyRixLQUFHNkYsT0FBS2lXO0lBQ2hELElBdEJnQ203RSxXQXFCV3B4RixRQUFLaVcsa0JBQzVDbzdFLGFBRHVDcnhGO0lBcEIzQztLQUFHLEdBQUEsa0NBcUJDcXhGLFlBdEI0QkQ7TUFDQSxVQUFBLGNBb0JRajNGLEtBQ3BDazNGO01BckJpQixHQUFBLCtCQW9CV1I7T0FuQkYsSUFGSDl3RixNQUVHLHlCQW9CMUJzeEYsYUFBQUEsYUF0QnVCdHhGOzs7O0tBdUIzQixPQUFBOztrQkFESXN4RjtrQkFENENwN0UsT0FDNUNvN0UsYUFEdUNyeEY7Y0FBSDdGOztHQUVtQjs7SUFHekQwZDtJQUNBRTtJQUNBRTs7Ozs7Ozs7T0FGQUo7T0FDQUU7T0FDQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FyS0E0RztPQU9BdXZFO09BeURBVTtPQVBBRDtPQXJDQVI7T0ErRkF1QztPQU9BSTtPQW9DQUc7T0FmQUQ7O1FBdkpBeEQ7UUFBQUM7UUFBQUU7UUFBQUQ7UUFQRWx1RjtRQUFBc0Q7UUFBQUM7UUFBQUM7OztRQU9HNHFGO1FBQUxKO1FBQUFDO1FBQUFJO1FBQUFGO1FBQUFEO1FBQUFJO1FBQUFDOzs7Ozs7O1NBQUFQO1NBQUFDO1NBQUFFO1NBQUFEO1NBUEVsdUY7U0FBQXNEO1NBQUFDO1NBQUFDOzs7O1NBT0c0cUY7U0FBTEo7U0FBQUM7U0FBQUk7U0FBQUY7U0FBQUQ7U0FBQUk7U0FBQUM7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNQRTN1RixVQUFVVCxHQUFFN0U7SUFDZDtLQUFJaWMsTUFBTSxXQURFcFgsTUFBRTdFO0tBRVZHLE1BQU0sbUNBRE44YjtLQUVBbFcsTUFBTSxXQUhFbEIsTUFFUjFFLFFBRlVIO09BR1YrRixRQUNVLCtCQUZWNUY7S0FFSixNQUFBO0lBQ1UsSUFBTjh2QyxNQUFNLHFDQUhOOXZDO0lBSUosK0JBSklBO0lBSUosT0FESTh2QztHQUVEO1lBR0RxbkQsU0FBU3p5RixHQUFFN0U7SUFDYjtLQUFJaWMsTUFBTSxXQURDcFgsTUFBRTdFO0tBRVRHLE1BQU0sbUNBRE44YjtLQUVBbFcsTUFBTSxXQUhDbEIsTUFFUDFFLFFBRlNIO09BR1QrRixRQUNVLCtCQUZWNUY7S0FFSixNQUFBO0lBQ1UsSUFBTjh2QyxNQUFNLHFDQUhOOXZDO0lBSUosK0JBSklBO0lBSUosT0FESTh2QztHQUVEO0dBdkJTLGlCQU1WM3FDLFdBVUFneUY7WUFpQkFseUYsVUFBVVAsR0FBRXNyQztJQUNkO0tBQUlod0MsTUFBTSxxQ0FESWd3QztLQUVWL3ZDO0tBQ0FKLElBQUksV0FISTZFLE1BQ1IxRSxLQUNBQztLQUVlLE1BQUEsK0JBSGZEO09BQ0FDO0tBRUosTUFBQTtJQUNBLCtCQUpJRDtJQUlKLE9BRklIO0dBR0g7WUFHQ3UzRixTQUFTMXlGLEdBQUUyeUY7SUFDYjtLQUFJcjNGLE1BQU0scUNBREdxM0Y7S0FFVHAzRjtLQUNBSixJQUFJLFdBSEc2RSxNQUNQMUUsS0FDQUM7S0FFZSxNQUFBLCtCQUhmRDtPQUNBQztLQUVKLE1BQUE7SUFDQSwrQkFKSUQ7SUFJSixPQUZJSDtHQUdIO0dBckJXLGlCQU1Wb0YsV0FTQW15Rjs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDa0JGRTtJQUVBQztJQXpCQXZ1RjtJQTJCQTVEO0lBREFveUY7Ozs7WUExQkEveUYsVUFyQ1lDO0lBQUksVUFBQSxXQTREaEI0eUYsUUE1RFk1eUY7SUFBSSxPQUFBO0dBQStCO1lBcUMvQ04sVUFwQ1lFO0lBQUksT0FBQSxXQTZEaEJpekYsWUE3RGdCLDZCQUFKanpGO0dBQXVDO0dBQ2hDLElBbUNkbVosaUJBbkNjO1lBR25CeFUsWUFBWXd1RixPQUFNL3lGO0lBQTZCLFVBQUEsV0EyRC9DVSxZQTNEa0JWO0lBQTZCLE9BQUEsNkJBQW5DK3lGO0dBQWtEO1lBQzlEdnVGLEtBQUt4RTtJQUFnQixVQUFBLFdBMERyQlUsWUExREtWO0lBQWdCLE9BQUE7R0FBZTtZQVM5QjBGLFlBQVVsRjtJQUFxQixVQUFBLFdBaURyQ0UsWUFqRGdCRjtJQUFxQixPQUFBO0dBQWU7WUFDOUNnRixZQUFVaEY7SUFBSSxPQUFnQixXQStDcENzeUYsZUEvQ29DLDZCQUFwQnR5RjtHQUF3QztHQUNqQztJQUFqQjRxRCxtQkFBaUI7Ozs7Ozs7Ozs7O1NBK0N2QjFxRDtTQURBb3lGOzs7Ozs7Ozs7OzBDQTFCQXh1RixTQXJCTWtCLGFBREFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBVk5uQixhQVdNaUIsYUFxQk5sQixTQXRCTW9CLGFBVE5sQjs7Ozs7Ozs7WUF5Q1F3dUYsa0I7WUFDQXJ5RixnQjs7Ozs7Ozs7Ozs7O1NBREFxeUY7U0FDQXJ5Rjs7Ozs7Ozs7O1lBaUJSc3lGLGNBYmdCcnpGLEdBQUksT0FBQSx1QkFBSkEsR0FBb0I7OzhDQWZwQzBFLFNBQUE1RSxXQUFBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWhDQXdFLGFBZ0NBN0UsV0FBQTRFLFNBQUF2RSxXQS9CQXlFOzs7Ozs7OztJQTREQTB1RjtJQVBBQztZQW1CQUMscUJBQXFCQztJQUN2QjtLQUFBO0tBRUssTUFBQSxzQkFIa0JBO3NCO0lBRXJCLE9BQUEsV0FqQkFQLGVBaUJBO0dBRzJCO1lBSzNCUSwrQkFBdURDLFNBQVNuOEU7SUFDbEUsT0FBYyxXQTFCWjA3RSxlQTBCWSxzQkFEMkNTLFNBQVNuOEU7R0FDbkI7WUFHN0NtOEUsUUFBUUEsU0FBUW44RTtJQUNsQixPQUxFazhFLCtCQUlRQyxTQUFRbjhFO0dBQ2lEO1lBR2pFbzhFLGdCQUFnQnh6RixHQUFFeXpGO0lBQTJCLFVBQUEsV0FoQzdDL3lGLFlBZ0NnQlY7SUFBNkIsT0FBQSw2QkFBM0J5ekY7R0FBd0M7WUFDMUQ3d0YsT0FBTzZ3RixJQUFHenpGLEdBQUksT0FEZHd6RixnQkFDVXh6RixHQUFIeXpGLElBQTJCO1lBQ2xDQyxlQUFlQztJQUFLLE9BQWMsV0FuQ2xDYixlQW1Da0MsNkJBQW5CYTtHQUF5QztPQUV4REM7WUFHQUMsU0FBU2owRixHQUFFc0IsS0FBSWtXO0lBQU0sT0FBQSxXQUhyQnc4RSxpQkFHU2gwRixHQUFFc0IsS0FBSWtXO0dBQWlDO1lBRWhEMDhFLGdCQUFnQjVELFFBQU94c0U7SUFDekIsT0F6Q0V1dkUsY0F5Q1kscUNBREkvQyxRQUFPeHNFO0dBQ2tDO1lBV3pEcXdFLDJCQUEyQno0RixLQUFLNEYsS0FBS2tXO0lBRzdCLElBQU42MUIsTUFBTTtJQUNWLHFDQUo2QjN4QyxLQUFLNEYsS0FBS2tXLEtBR25DNjFCO0lBR0YsVUFBQSwyQkFIRUE7SUFHRixPQUFBO0dBQWdFO1lBR2hFK21ELG9CQUFvQjE0RixLQUFLNEYsS0FBS2tXO0lBSWhCLFVBQUEsK0JBSk05YjtJQUN0Qiw4Q0FEMkI0RixLQUFLa1c7SUFDaEMsT0FWRTI4RSwyQkFTb0J6NEYsS0FBSzRGLEtBQUtrVztHQUtRO1lBR3RDNjhFLGlCQUFpQjM0RjtJQUNuQixPQWxCRXk0RjthQWlCaUJ6NEYsUUFDd0IsK0JBRHhCQTtHQUM4Qzs7Ozs7Ozs7OztTQWxHL0RvRTtTQUFBSztTQUFLZ1o7Ozs7Ozs7OztTQUFMelU7U0FoQ0FDO1NBQ0FDOzs7O1VBVU1nQjtVQURBRTtVQUVBMGxEOzs7Ozs7Ozs7VUFvQk45bUQ7VUFoQ0FDO1VBQ0FDO1FBVU1nQjtRQURBRTtRQUVBMGxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0JOMXJEO09BQUFLO09BQUtnWjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXNCTG82RTtPQUtBenlGO09BREFveUY7T0FIQUY7T0FFQUM7T0FHQUk7T0FDQUM7T0FrQ0FVO09BdEJBUjtPQVVBRTtPQVVBSTtPQUZBRjtPQS9CQVA7T0FDQUM7T0FxQ0FXO09BekNBaEI7T0FnQkFPO09BY0FHO09BS0Ezd0Y7T0FDQTh3RjtPQU9BSTtPQTZCQUc7T0FSQUQ7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUM1SEF6ekYsVUFBVW9CLEdBQUUycEM7SUFBUyxPQUFlOzJCQUExQjNwQyxHQUEwQixxQ0FBeEIycEM7R0FBb0Q7WUFDaEU3cUMsVUFBVWtCLEdBQUUzQjtJQUF3QixVQUFBLDRCQUExQjJCLEdBQUUzQjtJQUF3QixPQUFBO0dBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FEdERPO09BQ0FFOzs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7O0lDeURJNkM7SUFZQTR3RjtJQVFBQztJQU9GQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EzRU47SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7O09BUVlyaEQscUJBQ0FncUIscUJBQ0FzM0I7WUFJQUMsWUFBWXQwRixHQUFJLE9BQUEsZ0NBQUpBLEdBQVc7WUFVdkJ1MEYsbUJBQXNCLFVBQUU7R0F3QnZCOzs7Ozs7Ozs7OztZQWxDREQsYUFVQUM7Ozs7Ozs7O1lBVkFELGFBVUFDOzs7SUF3QkM7TUFBQTs7Ozs7OztJQUFMLGNBQUs7SUFBTCxNQUFBO0lBQUE3NUYsUUFBQTtJQUFBLE1BQUE7SUFBS2lLLGdCQUFMLFdBQUEsK0JBQUFqSztZQUFBa0s7SUFBQTtLQUFBMmY7S0FBQWpOO0tBQUF2VztLQUFBLE9BQUEsa0NBQUFBO0tBQUF3VyxPQUFBO0tBQUEsT0FBQSxtQ0FBQUQ7S0FBQWtOLFNBQUEsZ0NBQUFqTjtLQUFBLE9BQUEsbUNBQUFnTjtJQUFBLE9BQUEsZ0NBQUFDO0dBS3lCO1lBTHpCM2YsY0FBQXZKLEtBQUE0RjtJQUFBO0tBQUFxakI7S0FBQWpOO0tBQUF2VztLQUFBSSxRQUFBLGtDQUFBN0YsS0FBQTRGLEtBQUFIO0tBQUFLLFFBQUEsbUNBQUE5RixLQUFBNkYsT0FBQW1XO0lBQUEsT0FBQSxtQ0FBQWhjLEtBQUE4RixPQUFBbWpCO0dBS3lCO1lBTHpCampCLGFBQUFoRyxLQUFBQztJQUFBO0tBQ0lpNUYsMEJBQUEsa0NBREpsNUYsS0FBQUM7S0FFSWs1RixXQUFBLG1DQUZKbjVGLEtBQUFDO0tBR0ltNUYsVUFBQSxtQ0FISnA1RixLQUFBQztJQUFBLFdBQ0lpNUYseUJBQ0FDLFVBQ0FDO0dBRXFCO0dBTHpCLFNBQUFsdkYsWUFBQTRoQjtJQUFBLFNBQUFBO0tBQUEsT0FBQTs0Q0FBQTlqQixrQkFBQThqQjtJQUFBO0tBQUFDLGtCQUFBRDtLQUNJdXRFO0tBQ0FDO0tBQ0FDO0tBSEpDO0tBQUFDOzs7Ozs7Ozs7bUJBQUExdEU7T0FBQTs7WUFBQU87aUJBQUFBO21CQUFBQTs7OztZQUFBb3RFLDJCQUFBQztXQUFBRCxtQkFBQUE7O1NBQUFFO1NBQUFDO29CQUFBSDtxQkFBQUk7YUFBQSxLQUFBSjtjQUFBLE9BQUE7cURBQUExeEYsa0JBQUE4akI7Z0JBQUE0dEU7Y0FBQSxNQUFBO2lCQUFBbmhFLFFBQUFtaEU7YUFBQSxPQUFBbmhFO1lBS3lCO21CQUx6QnVoRTs7U0FBQUEsaUJBQUFELGlCQUFBSDtnQ0FBQUM7aUNBQUFBOztpQ0FBQUE7O1lBQUFGLG1CQUFBRSxnQkFBQUY7O2tCQUNJSjtXQURKRyx3QkFBQUcsZ0JBQUFIOztXQUNJO1lBREpPLG1CQUFBRDtZQUNJNXNFLGFBQUEsbUNBREo2c0U7V0FDSVYsbUNBQUFuc0U7O2lCQUNBb3NFO1VBRkpFLHdCQUFBRyxnQkFBQUg7O1VBRUk7V0FGSlEsbUJBQUFGO1dBRUlHLGFBQUEsbUNBRkpEO1VBRUlWLG9CQUFBVzs7Z0JBQ0FWO1NBSEpDLHdCQUFBRyxnQkFBQUg7O1NBR0k7VUFISlUsbUJBQUFKO1VBR0lLLGFBQUEsbUNBSEpEO1NBR0lYLG1CQUFBWTs7b0JBSEpQOzs7Ozs7S0FBQSx5Q0FBQTV4RixrQkFBQXNrQjs7T0FBQWt0RTtLQUFBLE9BQUE7O2NBQUF4eEY7Y0FBQXd4RjtjQUFBMXRFO09BQUEydEU7S0FBQSxPQUFBOztjQUFBenhGO2NBQUF5eEY7Y0FBQTN0RTs7WUFDSXV0RTtZQUNBQzthQUNBQzs7O01BQUFhO01BREFDO01BREFDO0tBREosV0FDSUEsMkJBQ0FELFlBQ0FEOztJQUhKLE9BQUE7O2FBQUFweUY7YUFBQThqQjs7O3FCQUNJdXRFOzs7eUJBQ0FDOzZCQUNBQztHQUVxQjtZQUx6Qm52RjtJQUFBO0tBR0ltd0Y7S0FEQUM7S0FEQUM7S0FFQUMsVUFBQSxtQ0FBQUg7S0FISkksZ0NBR0lEO0tBREFFLFVBQUEsbUNBQUFKO0tBRkpLLGtDQUVJRCxlQUZKRDtLQUNJRyxVQUFBLG1DQUFBTDtLQURKTSxrQ0FDSUQsZUFESkQ7SUFBQSxXQUFBRTtHQUt5QjtHQU9wQjtJQUFBO01BQUE7Ozs7O0lBQUwsY0FBSztJQUFMLE1BQUE7SUFBQTN4RixVQUFBO0lBQUEsTUFBQTtJQUFLa0I7TUFBTCxXQUFBLCtCQUFBbEI7WUFBQW1CO0lBQUE7S0FBQXlSO0tBQUF2VztLQUFBLE9BQUEsa0NBQUFBO0tBQUF3VyxPQUFBO0tBQUEsT0FBQSxtQ0FBQUQ7SUFBQSxPQUFBLGdDQUFBQztHQUl5QjtZQUp6QnpSLGNBQUF4SyxLQUFBNEY7SUFBQTtLQUFBb1c7S0FBQXZXO0tBQUFJLFFBQUEsa0NBQUE3RixLQUFBNEYsS0FBQUg7SUFBQSxPQUFBLG1DQUFBekYsS0FBQTZGLE9BQUFtVztHQUl5QjtZQUp6QnZTLGFBQUF6SixLQUFBQztJQUFBO0tBQ0krNkY7T0FBQSxrQ0FESmg3RixLQUFBQztLQUVJZzdGLFlBQUEsbUNBRkpqN0YsS0FBQUM7SUFBQSxXQUNJKzZGLCtCQUNBQztHQUVxQjtHQUp6QixTQUFBOXZGLFlBQUErdkY7SUFBQSxTQUFBQTtLQUFBLE9BQUE7NENBQUF0QyxrQkFBQXNDO0lBQUE7S0FBQUMsa0JBQUFEO0tBQ0lFO0tBQ0FDO0tBRkpDO0tBQUFDOzs7Ozs7Ozs7bUJBQUFKO09BQUE7O1lBQUFLO2lCQUFBQTttQkFBQUE7Ozs7WUFBQUMsMkJBQUFDO1dBQUFELG1CQUFBQTs7U0FBQUU7U0FBQUM7b0JBQUFIO3FCQUFBSTthQUFBLEtBQUFKO2NBQUEsT0FBQTtxREFBQTdDLGtCQUFBc0M7Z0JBQUFPO2NBQUEsTUFBQTtpQkFBQXpnRSxRQUFBeWdFO2FBQUEsT0FBQXpnRTtZQUl5QjttQkFKekI2Z0U7O1NBQUFBLGlCQUFBRCxpQkFBQUg7Z0NBQUFDOzs7YUFBQUE7O1dBQUFILG1CQUFBRyxnQkFBQUg7O2lCQUNJSDtVQURKRSx3QkFBQUksZ0JBQUFKOztVQUNJO1dBREpRLG1CQUFBRDtXQUNJRSxhQUFBLG1DQURKRDtVQUNJVix3Q0FBQVc7O2dCQUNBVjtTQUZKQyx3QkFBQUksZ0JBQUFKOztTQUVJO1VBRkpVLG1CQUFBSDtVQUVJSSxhQUFBLG1DQUZKRDtTQUVJWCxxQkFBQVk7O29CQUZKTjs7Ozs7O0tBQUEseUNBQUEvQyxrQkFBQTRDOztPQUFBRjtLQUFBLE9BQUE7O2NBQUExQztjQUFBMEM7Y0FBQUo7T0FBQUs7S0FBQSxPQUFBOztjQUFBM0M7Y0FBQTJDO2NBQUFMO2VBQ0lFLDJDQUNBQzs7U0FBQWEsd0JBREFDO0tBREosV0FDSUEsa0NBQ0FEOztJQUZKLE9BQUE7O2FBQUF0RDthQUFBc0M7OztxQkFDSUU7OzRCQUNBQztHQUVxQjtZQUp6QjV2RjtJQUFBO0tBRUkyd0Y7S0FEQUM7S0FDQUMsVUFBQSxtQ0FBQUY7S0FGSkcsZ0NBRUlEO0tBREFFO09BQUEsbUNBQUFIO0tBREpJLGtDQUNJRCxlQURKRDtJQUFBLFdBQUFFO0dBSXlCO0dBSXBCO0lBQUE7TUFBQTs7OztpQ0FwQkFwekY7SUFvQkwsY0FBSztJQUFMLE1BQUE7SUFBQWdCLFVBQUE7SUFBQSxNQUFBO0lBQUtzQjtNQUFMLFdBQUEsK0JBQUF0QjtZQUFBdUI7SUFBQTtLQUFBb1E7S0FBQXZXO0tBQUEsT0FBQSxrQ0FBQUE7S0FBQXdXLE9BQUE7S0FBQSxPQXBCQTNTLGFBb0JBMFM7SUFBQSxPQUFBLGdDQUFBQztHQUl5QjtZQUp6QmxRLGNBQUEvTCxLQUFBNEY7SUFBQTtLQUFBb1c7S0FBQXZXO0tBQUFJLFFBQUEsa0NBQUE3RixLQUFBNEYsS0FBQUg7SUFBQSxPQXBCQThELGNBb0JBdkosS0FBQTZGLE9BQUFtVztHQUl5QjtZQUp6QnRTLGFBQUExSixLQUFBQztJQUFBO0tBQ0l5OEY7T0FBQSxrQ0FESjE4RixLQUFBQztLQUVJMDhGLGVBdEJKMzJGLGFBb0JBaEcsS0FBQUM7SUFBQSxXQUNJeThGLGdDQUNBQztHQUVxQjtZQUp6QnB4RixZQUFBcXhGO0lBQUEsU0FBQUE7S0FBQSxPQUFBOzRDQUFBL0Qsa0JBQUErRDtJQUFBO0tBQUFDLGtCQUFBRDtLQUNJRTtLQUNBQztLQUZKQztLQUFBQzs7Ozs7Ozs7O21CQUFBSjtPQUFBOztZQUFBSztpQkFBQUE7bUJBQUFBOzs7O1lBQUFDLDJCQUFBQztXQUFBRCxtQkFBQUE7O1NBQUFFO1NBQUFDO29CQUFBSDtxQkFBQUk7YUFBQSxLQUFBSjtjQUFBLE9BQUE7cURBQUF0RSxrQkFBQStEO2dCQUFBTztjQUFBLE1BQUE7aUJBQUFLLFFBQUFMO2FBQUEsT0FBQUs7WUFJeUI7bUJBSnpCRDs7U0FBQUEsaUJBQUFELGlCQUFBSDtnQ0FBQUM7OzthQUFBQTs7V0FBQUgsbUJBQUFHLGdCQUFBSDs7aUJBQ0lIO1VBREpFLHdCQUFBSSxnQkFBQUo7O1VBQ0k7V0FESlMsbUJBQUFGO1dBQ0lHLGFBQUEsbUNBREpEO1VBQ0lYLHdDQUFBWTs7Z0JBQ0FYO1NBRkpDLHdCQUFBSSxnQkFBQUo7O1NBRUk7VUFGSlcsbUJBQUFKO1VBRUlLLGFBdEJKMXpGLFlBb0JBeXpGO1NBRUlaLHdCQUFBYTs7b0JBRkpQOzs7Ozs7S0FBQSx5Q0FBQXhFLGtCQUFBcUU7O09BQUFGO0tBQUEsT0FBQTs7Y0FBQW5FO2NBQUFtRTtjQUFBSjtPQUFBSztLQUFBLE9BQUE7O2NBQUFwRTtjQUFBb0U7Y0FBQUw7ZUFDSUUsMkNBQ0FDOzs7TUFBQWM7TUFEQUM7S0FESixXQUNJQSxrQ0FDQUQ7O0lBRkosT0FBQTs7YUFBQWhGO2FBQUErRDs7O3FCQUNJRTs7NEJBQ0FDO0dBRXFCO1lBSnpCenZGO0lBQUE7S0FFSXl3RjtLQURBakI7S0FDQWtCLFVBdEJKNXpGLFlBc0JJMnpGO0tBRkpFLGdDQUVJRDtLQURBRTtPQUFBLG1DQUFBcEI7S0FESnFCLGtDQUNJRCxlQURKRDtJQUFBLFdBQUFFO0dBSXlCO0dBR3RCO0lBQUE7Ozs7eUNBM0JFOTBGOzs7OzZDQVlBaUI7O0lBZUY7OytEQVBFcUI7O0lBT0Y7Ozs7SUFBQTs7Ozs7O0lBQUE7TUFBQTs7SUFBTCxjQUFLO0lBQUwsTUFBQTtJQUFBRCxVQUFBO0lBQUEsTUFBQTtJQUFLK0I7TUFBTCxXQUFBLCtCQUFBL0I7WUFBQWdDO0lBQUE7S0FBQXNiO0tBQUFDO0tBQUFqTjtLQUFBdlc7S0FBQTI0RjtLQUFBQztLQUFBQztLQUFBLE9BQUEsbUNBQUE3NEY7S0FBQXdXLE9BQUE7dUVBQUFEO0tBQUFrTixTQUFBLGdDQUFBak47Z0VBQUFnTjtLQUFBRSxTQUFBLGdDQUFBRDsrQ0FQRXRkLGNBT0ZvZDtLQUFBOEYsU0FBQSxnQ0FBQTNGO0tBQUEsT0FBQSx1QkFBQWkxRTtLQUFBcnZFLFNBQUEsZ0NBQUFEO0tBQUEsT0EzQkV4bEIsYUEyQkZnMUY7S0FBQXB2RSxTQUFBLGdDQUFBSDsrQ0FmRXhrQixjQWVGOHpGOzJDQUFBbnZFO0dBV3lCO1lBWHpCdmhCLGNBQUEzTixLQUFBNEY7SUFBQTtLQUFBb2pCO0tBQUFDO0tBQUFqTjtLQUFBdlc7S0FBQTI0RjtLQUFBQztLQUFBQztLQUFBejRGLFFBQUEsbUNBQUE3RixLQUFBNEYsS0FBQUg7S0FBQUs7T0FBQTs7U0FBQTlGO1NBQUE2RjtTQUFBbVc7S0FBQUc7T0FBQTs4REFBQW5jLEtBQUE4RixPQUFBbWpCO0tBQUF2TTtPQUFBOzRDQVBFM1EsZ0JBT0YvTCxLQUFBbWMsT0FBQTZNO0tBQUFzRyxRQUFBLHdCQUFBdHZCLEtBQUEwYyxPQUFBMGhGO0tBQUE3dUUsUUEzQkVobUIsY0EyQkZ2SixLQUFBc3ZCLE9BQUFndkU7SUFBQSxPQUFBO2dEQWZFOXpGO2FBZUZ4SzthQUFBdXZCO2FBQUE4dUU7R0FXeUI7R0FYekIsSUFBQXgxRixtQkFBQTZFLGNBQUFDO1lBQUFqRCxhQUFBMUssS0FBQUMsU0FBQUM7SUFBQTtrRUFBQUQ7R0FXeUI7WUFYekIwSyxhQUFBM0ssS0FBQUM7SUFBQTtLQUNJcytGLFNBQUEsbUNBREp2K0YsS0FBQUM7S0FFSXUrRjtPQUFBOztTQUZKeCtGO1NBQUFDO0tBSUl3K0Y7T0FBQTs4REFKSnorRixLQUFBQztLQUtJeStGO09BQUE7NENBWkZoMUYsZUFPRjFKLEtBQUFDO0tBT1kwK0Ysc0JBQVIsdUJBUEozK0YsS0FBQUM7S0FRSTIrRiw0QkFuQ0Y1NEYsYUEyQkZoRyxLQUFBQztLQVNJNCtGO09BQUE7NENBeEJGcDFGLGVBZUZ6SixLQUFBQztJQUFBO1lBQ0lzK0Y7WUFDQUM7WUFFQUM7WUFDQUM7WUFFUUM7WUFDUkM7WUFDQUM7R0FFcUI7R0FYekI7SUFBQS8xRixtQkFBQTZCLGNBQUFEO0lBQUEzQixZQUFLMEUsZUFBTDVFLGNBQUFDO1lBQUErRCxZQUFBaXlGO0ksU0FBQUE7S0FBQSxPQUFBOzRDQUFBaEcsa0JBQUFnRztJQUFBO0tBQUFDLGtCQUFBRDtLQUNJRTtLQUNBQztLQUVBQztLQUNBQztLQUVRQztLQUNSQztLQUNBQztLQVRKQztLQUFBQzs7Ozs7Ozs7O21CQUFBVDtPQUFBOztZQUFBVTtpQkFBQUE7bUJBQUFBOzs7O1lBQUFDLDJCQUFBQztXQUFBRCxtQkFBQUE7O1NBQUFFO1NBQUFDO29CQUFBSDtxQkFBQUk7YUFBQSxLQUFBSjtjQUFBLE9BQUE7cURBQUE1RyxrQkFBQWdHO2dCQUFBWTtjQUFBLE1BQUE7aUJBQUE1ckYsUUFBQTRyRjthQUFBLE9BQUE1ckY7WUFXeUI7bUJBWHpCZ3NGOztTQUFBQSxpQkFBQUQsaUJBQUFIOzsrQkFBQUM7aUNBQUFBO2tDQUFBQTttQ0FBQUE7b0NBQUFBO3FDQUFBQTtzQ0FBQUE7O2dCQUFBSCxtQkFBQUcsZ0JBQUFIOztzQkFLSUw7ZUFMSkksd0JBQUFJLGdCQUFBSjs7ZUFLSTtnQkFMSlEsbUJBQUFEO2dCQUtJRTtrQkFBQTs0Q0FaRnowRixhQU9GdzBGO2VBS0laLHlCQUFBYTs7cUJBSEFmO2NBRkpNLHdCQUFBSSxnQkFBQUo7O2NBRUk7ZUFGSlUsbUJBQUFIO2VBRUlJO2lCQUFBOzs7bUJBRkpEO2NBRUloQiwrQkFBQWlCOztvQkFEQWxCO2FBREpPLHdCQUFBSSxnQkFBQUo7O2FBQ0k7Y0FESlksbUJBQUFMO2NBQ0lNO2dCQUFBLG1DQURKRDthQUNJbkIsa0JBQUFvQjs7bUJBUUFkO1lBVEpDLHdCQUFBSSxnQkFBQUo7O1lBU0k7YUFUSmMsbUJBQUFQO2FBU0lRO2VBQUE7eUNBeEJGbjFGLGFBZUZrMUY7WUFTSWYsMEJBQUFnQjs7a0JBRlFsQjtXQVBaRyx3QkFBQUksZ0JBQUFKOztXQU9ZO1lBUFpnQixtQkFBQVQ7WUFPWVUsYUFBQSxzQkFQWkQ7V0FPWW5CLCtCQUFBb0I7O2lCQUhSdEI7VUFKSkssd0JBQUFJLGdCQUFBSjs7VUFJSTtXQUpKa0IsbUJBQUFYO1dBSUlZO2FBQUE7dURBSkpEO1VBSUl2QixvQkFBQXdCOztnQkFJQXJCO1NBUkpFLHdCQUFBSSxnQkFBQUo7O1NBUUk7VUFSSm9CLG1CQUFBYjtVQVFJYyxhQW5DRjEyRixZQTJCRnkyRjtTQVFJdEIscUNBQUF1Qjs7b0JBUkpoQjs7Ozs7O0tBQUEseUNBQUE5RyxrQkFBQTJHOztPQUFBRjtLQUFBLE9BQUE7O2NBQUF6RztjQUFBeUc7Y0FBQVQ7T0FBQVU7S0FBQSxPQUFBOztjQUFBMUc7Y0FBQTBHO2NBQUFWOztZQUNJRTtZQUNBQztZQUVBQztZQUNBQztZQUVRQztZQUNSQzthQUNBQzs7O01BQUF1QjtNQURBQztNQURRQztNQUZSQztNQURBQztNQUZBQztNQURBQztLQURKO2FBQ0lBO2FBQ0FEO2FBRUFEO2FBQ0FEO2FBRVFEO2FBQ1JEO2FBQ0FEOztJQVRKLE9BQUE7O2FBQUEvSDthQUFBZ0c7O3dCQUNJRTs7O3NCQUNBQzs7OzBCQUVBQzs7MkJBQ0FDOzs7eUJBRVFDOzs7OzBCQUNSQzs7OzhCQUNBQzs7O1lBVEp2d0Y7SUFBQTtLQUtJcXlGO0tBREFDO0tBRkFDO0tBREFDO0tBTVFDO0tBRVJDO0tBREFDO0tBQ0FDO09BQUEsbUNBeEJGbDJGLGFBd0JFZzJGO0tBVEpHLGdDQVNJRDtLQURBRSxVQW5DRnozRixZQW1DRXMzRjtLQVJKSSxrQ0FRSUQsZUFSSkQ7S0FPWUcsVUFBQSxzQkFBQVA7S0FQWlEsa0NBT1lELGVBUFpEO0tBS0lHO09BQUEsbUNBWkYzMEYsYUFZRTh6RjtLQUxKYyxrQ0FLSUQsZUFMSkQ7S0FJSUcsVUFBQSxtREFBQWQ7S0FKSmUsa0NBSUlELGVBSkpEO0tBRUlHO09BQUE7OztTQUFBZjtLQUZKZ0Isa0NBRUlELGVBRkpEO0tBQ0lHLFVBQUEsbUNBQUFoQjtLQURKaUIsa0NBQ0lELGVBREpEO0lBQUEsV0FBQUU7R0FXeUI7WUFHckJ4NUYsUUFBUXNnRCxJQUFHQztJQUFLLG9DQUFSRCxPQUFHQztHQUFtQztZQUM5Q2s1QyxrQkFBa0JDLE1BQU8sT0FBUEEsUUFBNkI7WUFDL0NDLE9BQU9ELE1BQU8sT0FBUEEsUUFBa0I7WUFLdkJFLFlBQVlwbkYsR0FBSSxPQUFBLDRCQUFKQSxNQUFVO0dBR2IsSUFBUHFuRixTQUFPO0dBQ1gsU0FBSUMsY0FBY0MsS0FBTSxPQUFBLDBCQUFOQSxLQUF3QztZQUZ4REMsb0JBR0UzSztJQUNGLGdDQURFQSxJQUZBd0s7SUFJeUI7S0FBQSxPQUh6QkMsY0FHd0MsMkJBSnhDRDtLQUlFSSxNQUFNO0tBQ2lCLE9BSnpCSCxjQUl3QywyQkFMeENEO0tBS0VLLE1BQU07S0FDaUIsT0FMekJKLGNBS3dDLDJCQU54Q0Q7S0FNRU0sTUFBTTtLQUNOQyxNQU5GTixjQU1zQiwyQkFQdEJEO0tBUWtDLE9BQUEsMkJBRmhDTSxLQUNBQztLQUNTLE9BQUEsMkJBSlRILEtBQ0FDO0lBR2dDLE9BQUE7R0FBc0I7WUFNMURHLGtCQUFrQmhMO0lBQXNCLFdBZnhDMkssb0JBZWtCM0s7SUFBc0IsT0FBQTtHQUF3QjtZQUNoRWlMLG9CQUFvQmpMO0lBQW9CLFdBaEJ4QzJLLG9CQWdCb0IzSztJQUFvQixPQUFBO0dBQXdCO1lBRWhFa0wseUJBQXlCbEw7SUFDM0IsU0FBSW1MLGNBQWNULEtBQU0sT0FBQSwwQkFBTkEsS0FBd0M7SUFDMUQsU0FBSVUsTUFBTXIxRCxHQUFFczFEO0tBQXdCLFdBRGhDRixjQUNNcDFEO0tBQVMsT0FBQSxpQ0FBUHMxRDtJQUE4QztJQUMxQyxJQUFaQyxZQUFZO0lBQ2hCLGdDQUoyQnRMLElBR3ZCc0w7SUFFUztLQUFUcFAsU0FIQWtQLE1BR2UsMkJBRmZFO0tBRzZCLE9BSjdCRixNQUlvQywyQkFIcENFO0tBR0FDLFdBQVMsMkJBRFRyUDtLQUU2QixPQUw3QmtQLE1BS29DLDJCQUpwQ0U7S0FJQUUsV0FBUywyQkFEVEQ7S0FFNkIsT0FON0JILE1BTW9DLDJCQUxwQ0U7S0FLQUcsV0FBUywyQkFEVEQ7S0FFNkIsT0FQN0JKLE1BT29DLDJCQU5wQ0U7S0FNQUksV0FBUywyQkFEVEQ7S0FFNkIsT0FSN0JMLE1BUW9DLDJCQVBwQ0U7S0FPQUssV0FBUywyQkFEVEQ7S0FFNkIsT0FUN0JOLE1BU29DLDJCQVJwQ0U7S0FRQU0sV0FBUywyQkFEVEQ7S0FFNkIsT0FYN0JSLGNBVzRDLDJCQVQ1Q0c7S0FTQU8sV0FBUywyQkFEVEQ7SUFFSixPQURJQztHQUNFO1lBR0pDLFdBQVc5TCxJQUNBdjhFLEtBRFMxVTtJQUN0QixJQUFhZ25DLElBQUF0eUIsS0FBRXNvRjtJQUNiO0tBQUcsS0FBQSw0QkFEUWgyRDtNQUNtQyxPQUFBLDBCQURqQ2cyRDtLQUNjO01BRGRDLFlBQ2UsV0FGUmo5RixHQUFUaXhGLEtBQ0UrTDtNQUFGandDLE1BQUEvbEI7TUFBQUEsSUFBQStsQjtNQUFFaXdDLE1BQUFDOztHQUdKO1lBR1RDLFlBQVlqTSxJQUFJdjhFLEtBQUsxVTtJQUFrQixXQVB2Qys4RixXQU9ZOUwsSUFBSXY4RSxLQUFLMVU7SUFBa0IsT0FBQTtHQUF1QjtZQUU5RG05RixhQUFhbE07SUFDZjtLQUFJbU0sd0JBNUJGbEIsb0JBMkJhakw7S0FFNEIsT0FBQSxpQ0FGNUJBO0tBRVhvTSxTQS9DRjdCLFlBK0N1QjtLQUNVLE9BQUEsaUNBSHBCdks7S0FHWHFNLGNBQWM7YUFDZHgyRCxHQUFHeTJELE9BQVEsV0FIWEgsdUJBQ0FDLFFBRUdFLE9BQXVEO0lBQzlELFdBREl6MkQsSUFEQXcyRDtHQUVXO1lBNkJiRSxrQkFBbUJDLGtCQUFrQkMsbUJBQWtCek07SUFDekQ7S0FBSTBNLGtCQS9ERjFCLGtCQThEdURoTDtLQUVyRDJNLGlCQWhFRjNCLGtCQThEdURoTDtLQUdyRDRNLGFBakVGNUIsa0JBOER1RGhMO0tBSXJENk0sbUJBbEVGN0Isa0JBOER1RGhMO0tBS3JEOE0sYUFuRUY5QixrQkE4RHVEaEw7S0ExQi9CK00sbUJBcEN4Qi9CLGtCQThEdURoTDtLQU9yRGdOLG1CQWxERmxCLFdBMkN1RDlMLElBSXJENk0sa0JBSmlCTDtLQVVqQlM7T0FyREZuQjtTQTJDdUQ5TDtTQUlyRDZNO2tCQVNRN007VUFBdUIsV0FBQSxpQ0FBdkJBO1VBQXVCLE9BQUE7U0FBMEI7S0FHekRrTixVQTNERnBCLFdBMkN1RDlMLElBS3JEOE0sWUF2Q0ZaO0tBU0VpQjtPQWxCRnJCO1NBMkN1RDlMO1NBMUIvQitNO2tCQUVHL007VUFBdUIsV0FBQSxnQ0FBdkJBO1VBQXVCLE9BQUE7U0FBMEI7S0FFMUVyNEYsTUFBTSw2QkFKZ0JvbEc7SUFLMUIscUJBU01oM0Q7S0FSOEMsSUFBYXEzRCxtQkFBUDkxQjtLQUN0RCxHQU9FdmhDLEdBQ0EsOEJBWEZwdUMsS0FVRW91QyxJQUVBLFdBVm9EdWhDLE9BQU84MUI7S0FHaEQ7TUFBUDF4RCxPQUFPLDZCQUxiL3pDO01BTU0wbEcsY0FKZ0QvMUIsUUFJcEQsOEJBREk1N0I7TUFFQTR4RCxXQUFTLHlCQUw4Q0YsUUFBUDkxQixPQUdoRDU3QjtLQUdKLDZCQVJGL3pDO0tBU0UsV0FISTBsRyxZQUNBQztJQUtVO0lBRWpCO0tBeUJDQztPQXJDRiwwQkFMRUo7O0tBaUJELE9BQUEsNkJBZEN4bEc7SUFjRCxHQUFBO0tBRUQsTUFBQTs7SUF3QmlCLElBQWY2bEcsZUE3REYxQixXQTJDdUQ5TCxJQUdyRDRNLFlBSG1DSDtJQXBDckNSO01Bb0N1RGpNO01BRXJEMk07ZUFnQ3lDM007T0FDWCxXQUFBLGlDQURXQTtPQUM3QixPQWxIZHVLLFlBa0hjO01BQTZDO0lBdkUzRDBCO01Bb0N1RGpNO01BQ3JEME07ZUFxQzBDMU07T0FDWixXQUFBLGlDQURZQTtPQUM5QixPQXRIZHVLLFlBc0hjO01BQTZDO0lBRTdEO0tBRXlCO01BQVU4QjtNQUFKeDJEO01BQ3BCeTJELFFBQVEseUJBM0JmaUIsZ0JBMEIrQmxCO0tBRTVCLE9BQUEsV0FGd0J4MkQsSUFDcEJ5MkQ7SUFDSztJQUZaO0tBQUEsT0FBQSwwQkEzQkFZO0tBeUJBTyxZQUNGO0lBS0YsY0FDNERDLE1BQUtwMkI7S0FDaEQsSUFBVHEyQiwwQkFSSkYsV0FPNkRuMkIsV0FBQUE7S0FFN0QsV0FGd0RvMkIsTUFDcERDO0lBQ1E7SUFGZDtLQUs2QkM7T0FMN0IsMEJBekNFWixrQkFHQUM7S0EyQ3VCcDZFO0tBQUlxckIsSUFBQTB2RDtJQUMzQjtVQUQyQjF2RDtNQUVMO09BQUEsT0FBQSwwQkFGQ3JyQjtPQUR2Qmc3RSxjQUdzQjtPQVExQixnQkFDbUN0OEUsR0FBSyxXQUFMQSxLQUF3QjtPQUFuRCxVQUFBLDJCQXZCSms4RTs7V0F5QktLLGtCQUhMQywwQkFHS0Q7O1dBSExDLDJDQXRCQU47TUEyQkosZ0JBQUl2bkcsTUFBTWtrRyxtQkFBbUJFO09BQzNCO2VBREVwa0c7bUJBQU1ra0c7bUJBQW1CRTtlQWhCekJ1RDtlQXpORm5OO2VBb09FcU47ZUE3Q0FQLGNBMEREOztLQWxCSztNQUx1QlEsT0FBQTl2RDtjQUFBQTtNQUdXK3ZEO01BQW5DeEo7TUFIb0JwK0IsZ0JBR3BCbytCLGdDQUFtQ3dKLGFBSGZwN0U7TUFBQUEsTUFBQXd6QztNQUFJbm9CLElBQUE4dkQ7O0dBdUI1QjtZQUdERSxzQkFBdUJ6QixtQkFBa0J6TTtJQUMzQztLQUFJbU8sOEJBQThCLFdBRFQxQixtQkFBa0J6TTtLQUV2Q29PLFVBL0lGcEQsa0JBNkl5Q2hMO0lBRzNDLFdBRkltTyw2QkFDQUM7R0FDZ0Q7WUFHbERDLFlBQVlyTztJQUVGLElBQU5yNEYsTUFBTTtJQUNWLGdDQUhZcTRGLElBRVJyNEY7SUFFSixJQUhFMm1HLFFBR0YsMkJBRkkzbUc7V0FJQyw2QkFMSDJtRztLQU1DLE1BQUE7O0lBRUcsWUFBQSxnQ0FUTXRPOztLQWFGLE1BQUE7O1FBQ0h1TyxtQ0FBQUE7OztNQUNMLE1BQUE7OztlQUEyQix3Q0FEdEJBOztTQU5MQzs7O1NBQUFBO0lBVWdDLFdBQUE7SUFBcEMsZ0NBbEJjeE87SUFrQmQsT0FWSXdPO0dBV0c7WUFHTEMsaUJBQWlCek87SUFFakIsU0FERXlNO0ssT0E3QkZ5QixzQkE1SUFqRDs7SUE0S0YsT0EvR0VzQixrQkE3REF0QixxQkF5S0V3QixtQkFEZXpNO0dBSTBEO1lBaUduRjBPLGNBbkR1QkMsVUFBVWo5QjtJQUMzQjtLQUNXOztNQUFBLE9BQUEsbUNBRmdCQTs7aUJBRStDc3VCO1NBRTlELElBZGF3TyxVQTlEdkJILFlBMEV3RXJPO3FCQVpqRHdPO1VBeEN2QkMsaUJBb0R3RXpPO1VBWjVCLElBQXJCNE8sUUE5RHZCUCxZQTBFd0VyTzs7YUFaakQsK0JBQUE0TyxPQUFBSjs7O3dCQUFBSTtzQkFBQUosa0NBQUFBOzs7d0JBQUFJO3VCQUFBSixrQ0FBQUE7OzJCQUFBQSxrQ0FBQUE7Z0RBQUFJLE9BQUFKOzs7VUFBbEI7V0FBUCxNQUFBO1VBRUU7V0FERS9COztjLE9BckVGeUIsc0JBMUlBaEQ7O1dBMk5NMkQ7YUFoS050QztlQTNEQXJCLDBCQStNRXVCLG1CQVdzRXpNOzs7Y0FDbEU2TyxZQXJETkosaUJBb0R3RXpPO1NBTXpEO1VBQVRzSyxTQUFTLHlCQVJVNTRCO1VBU25CbmdELElBTkFzOUUsVUFIU0YsVUFBVWo5QixVQVFuQjQ0QjtTQUVKLE9BREkvNEU7UUFDSDtNQVJILE9BQUE7S0FBQTs7Ozs7O1NBVW9CdTlFO0tBQ3BCLE1BQUE7OztjQUEyQix3Q0FiRnA5QixVQVlMbzlCOzs7R0FDMkM7WUFJakVDLDRCQUE2QjdvRyxNQUFZNnZFO0lBQzNDO01BQVEsNEJBRG1DQTtTQUNsQiw0QkFEa0JBO0tBRWY7TUFBeEJvMkI7UUFBd0IsNEJBRmVwMkI7S0FHM0M7YUFIK0I3dkU7Ozs7YUFuVjNCdzZGO2lCQXFWQXlMLDBCQUYyQmptRzs7O0lBQy9CLE1BQUE7R0FVQztZQUdDOG9HLGNBQXFCajVCO0lBQ3ZCLEdBQ0ssNEJBRmtCQTtTQUNuQjd2RTs7S0FHdUQ7TUFBQSxPQUFBLGlDQUpwQzZ2RTtNQUlNLE9BQUEsNEJBSk5BO01BQ25CN3ZFLE9BR0c7SUFFUCxPQXBCRTZvRyw0QkFlRTdvRyxNQURtQjZ2RTtHQU13QjtZQVFuRGwrRCxZQUFVeEwsR0FBSSxXQUFKQSxNQUFvQjtHQUdoQyxJQURFNGlHLGlDQUtBQyxNQXJCTUY7WUFzQk45b0csS0FBS21rRyxNQUFPLE9BQVBBLFFBQWdCO1lBQ3JCOEUsdUJBQXVCOWlHO0lBQUFBLE9BeFhmcTBGOztHQXdYdUU7WUFHL0UwTyxlQUFlL2lHLEdBQUVpckU7SUFDbkIsT0FBRyw0QkFEZ0JBO2NBQUZqckU7K0JBQUFBLE1BQUVpckUsV0FBQUE7R0FDOEQ7WUE4Qi9FKzNCLHFCQUFzQkMsTUFBTXppRztJQUM5QixPQUR3QnlpRyxxQ0FBTXppRyxNQUFBQSxXQUFBQTtHQUs0QztZQUd4RTBpRywrQkFBK0NsakcsR0FBRWlyRSxPQUFPZzRCLE1BQUtsQjtJQUMvRCxXQUFBLDRCQURtRDkyQjtJQUNuRCxTQUFBO0lBQWtDOztPQVRoQyszQixxQkFRd0RDLHVCQUFUampHLE1BQUVpckUsV0FBQUE7SUFDakIsT0FBQSw0QkFENkI4MkI7R0FDcUI7WUFHbEZvQiwrQkFBK0NuakcsR0FBRWlyRSxPQUFPZzRCLE1BQUtsQjtJQUMvRCxXQUFBLDRCQURtRDkyQixlQUFGanJFO0lBQ2pELFNBQUE7SUFDdUI7WUFGNEJpckU7S0FFNUIsT0FkckIrM0IscUJBWXdEQyx1QkFBVGpqRztJQUUxQixPQUFBLDRCQUZ3QytoRztHQUVjO1lBRzNFcUIsK0JBQTJDcGpHLEdBQUdpakcsTUFBS2xCO0lBQ3JEO2tCQUEyRXNCO0tBQ3pELFdBbkJoQkwscUJBaUI4Q0MsTUFDMkJJO0tBQ3RFLE9BQUEsa0NBRmdEdEI7SUFJeEM7SUFIYixXQUFBLGlDQUQ2Qy9oRztJQUM3QyxPQUFBLGtDQTVhVXEwRjtHQWdiNEM7WUFHcERpUCw2QkFBNkJ0akcsR0FBR2lqRyxNQUFLbEI7SUFDdkMsSUFDTTkyQixRQUZ5QmpyRTtJQUd0QixHQXBCUGtqRywrQkFpQjZCbGpHLEdBRXpCaXJFLE9BRjRCZzRCLE1BQUtsQjtLQWF6QixHQTFCWm9CLCtCQWE2Qm5qRyxHQUV6QmlyRSxPQUY0Qmc0QixNQUFLbEI7VUFDbkN3QixVQUNFdDRCOztNQWFDO09BQ0N1NEIsVUFkRnY0QjtPQWNFdzRCO1NBN0JOTiwrQkFhNkJuakcsR0FnQnZCd2pHLFNBaEIwQlAsTUFBS2xCO1lBZ0IvQnlCO1lBeEJOSiwrQkFRNkJwakcsR0FBR2lqRyxNQUFLbEI7T0FDbkN3QixVQWVJRTs7S0FYRDtNQUNDQyxVQUpGejRCO01BSUUwNEI7UUF2Qk5ULCtCQWlCNkJsakcsR0FNdkIwakcsU0FOMEJULE1BQUtsQjtXQU0vQjJCO1dBZE5OLCtCQVE2QnBqRyxHQUFHaWpHLE1BQUtsQjtNQUNuQ3dCLFVBS0lJO0lBTnVCM2pHLE9BQzNCdWpHO0lBeUJKLE9BekJJQTtHQXlCQztZQVNDSyx1QjtZQUNBQyxxQztHQUpRLGVBR1JELGtCQUNBQztZQU1BQywwQjtZQUNBQywwQjtZQU1BQyxvQztZQUNBQyxtQztHQUprQjtJQUFBO1VBR2xCRCwrQkFDQUM7SUFuQkY7Z0NBV0VILHFCQUNBQztZQWFKOTRCLE1BQU1qckUsR0FBRXFoRztJQUNWLFVBQUEsK0JBRFVBO0lBQ1YsT0F6REVpQzthQXdETXRqRyxNQUNSO0dBRWdEO1lBRzlDa2tHLHdCQUF3QmxrRyxHQUFFcWhHO0lBQzVCLFVBQUEsa0NBRDRCQTtJQUM1QixPQS9ERWlDO2FBOER3QnRqRyxNQUMxQjtHQUVzRDtZQUdwRG1rRywyQkFBMkJua0csR0FBRWlyRTtJQUFRLFVBQUEsNEJBQVJBO0lBQVEseUNBQVJBLE9BQUZqckU7R0FBMEQ7WUFDckZva0csMkJBQTJCcGtHLEdBQUVpckU7SUFBUSxPQURyQ2s1QiwyQkFDMkJua0csR0FBRWlyRTtHQUFnRDtZQUU3RW81QiwrQkFBZ0Nya0csR0FBRWlyRTtJQUNwQztLQUFJbzRCLDhCQUQ4QnJqRyxNQUFFaXJFLFdBQUFBO0tBRXBDLE1BQUEsa0NBRElvNEI7SUFDSixPQUFBO0dBRXNDO1lBR3BDaUIsK0JBQWdDdGtHLEdBQUVpckU7SUFBUSxPQVAxQ281QiwrQkFPZ0Nya0csR0FBRWlyRTtHQUFxRDtZQUV2RnM1QiwrQkFBa0N2a0csR0FBRWlyRTtJQUN0QztLQUFJbzRCLDhCQURnQ3JqRyxNQUFFaXJFLFdBQUFBO0tBRWxDdTVCLFFBREFuQjtJQUdDLEdBQUEsNEJBSmlDcDRCO1NBR2xDdzVCLFNBSGdDemtHOztLQUllO01BQUEsTUFKYmlyRTtNQUdsQ3c1QiwwQkFIZ0N6a0c7SUFNcEMsVUFBQSwyQkFKSXdrRyxVQUNBQztJQUdKLE9BQUE7R0FDd0M7WUFHdENDLCtCQUFrQzFrRyxHQUFFaXJFO0lBQ3RDLE9BWEVzNUIsK0JBVWtDdmtHLEdBQUVpckU7R0FDUztZQUc3QzA1Qix1QkFBdUIza0csR0FBRWlyRTtJQUNkLElBQVRxMkIsU0F2SkZ5QixlQXNKdUIvaUcsR0FBRWlyRTtJQUUzQixPQURJcTJCO0dBQ1E7WUFHVnNELDBCQUEwQjVrRyxHQUFFaXJFO0lBQ2pCLElBQVRxMkIsU0E1SkZ5QixlQTJKMEIvaUcsR0FBRWlyRTtJQUU5QixPQUFBLGtDQURJcTJCO0dBQzhEOzs7Ozs7OztPQXpLaEU5MUY7T0FoU01sSDtPQXNTTis5RjtPQUpBTztPQWhCTUQ7T0FkQUQ7T0FtQ05HO09BQ0FocEc7T0F2U01ra0c7T0FDQUU7O09BdVNONkU7V0ExWFEvdkQsTUFDQWdxQjtPQTRlUmtPO09BTUFpNUI7T0FxQ0FVO09BTEFEO09BMUJBUjtPQUdBRTtPQVNBRTtPQVhBSDtPQVNBRTtPQVlBSTs7OztVQTVjRTE3RjtVQUFBQztVQUFBaEQ7VUFBQUQ7VUFBSytDO1VBQUw1RTtVQUFBQztVQUFBQztVQWNJQztVQWRKNkQ7VUFBQWtDOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7SUNFSnhROzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQTlFRWdyRyxJQUFJN2tHLEdBQUksT0FBSkEsRUFBSzs7UUFJWEQ7YUFFSStrRyxrQkFBa0I5a0csR0FBRXU3RTs7O09BSVR3cEI7T0FBQXgrQjtPQUFBdE07T0FBQStxQyw4QkFBQS9xQztPQUFBZ3JDLHFDQUFBMStCO09BQUEyK0Isb0RBQUFIO3FCQUFBQyxjQUFBQyxjQUFBQzs7Ozs7OztrQkFKT2xsRyxHQUFFdTdFOztJQUlnQzthQUdwRDRwQixXQUFXbmxHO0tBQ2IsSUFBc0IsTUFBQSxtQkFEVEEsSUFDUCxRQUFBO3dCQUNLLE9BRkVBO0tBR2dCLElBQXJCdTdFLGtCQUFxQixNQVYzQnVwQixrQkFPVzlrRyxHQUdMdTdFO0tBQXFCLE9BQUE7SUFBMkI7YUFHdEQ1Z0UsT0FBTzNhO0tBQ1QsSUFBc0IsTUFBQSxtQkFEYkEsSUFDSCxRQUFBO3dCQUNLLFdBRkZBO1NBR0R1N0U7S0FBUyxXQWhCZnVwQixrQkFhTzlrRyxHQUdEdTdFO0lBQTBDO2FBR2hENzdFLFVBQVVDLE1BQU8sT0FaakJ3bEcsV0FZNEIsbUJBQWxCeGxHLE9BQXNDO2FBQ2hEa2xHLElBQUk3a0csR0FBSSxPQUFKQSxFQUFLO0lBeEJXLFdBRXhCRCxhQVNJb2xHLFlBTUF4cUYsUUFNQWpiLFdBQ0FtbEc7OzthQWdCTWxrRyxXQUFXa2tHO0tBQ2IsaUJBQTJDLHlCQUQ5QkEsT0FBQUE7SUFDK0Q7YUFHMUVua0csZ0I7Ozs7OzthQUFBQSxZQUpBQzs7Ozs7Ozs7O0lBUFo7Ozs7Ozs7Ozs7O2FBc0JNMkQsUUFBMkJvMkQsT0FBQUMsT0FBWCxPQUFXLG1CQUFBRCxPQUFBQyxPQUF3QjtJQUR6RCxXQUNNcjJEOzs7YUFVQUMsWUFBWSttRCxPQUFNdHJEO0tBQTBCLFVBQUEseUJBQTFCQTtLQUEwQixPQUFBLG1CQUFoQ3NyRDtJQUFpRDthQUM3RDltRCxLQUFLeEU7S0FBYSxVQUFBLHlCQUFiQTtLQUFhLE9BQUE7SUFBaUI7SUFGekMsV0FDTXVFLGFBQ0FDOzs7OztLQWhFSnpFO0tBU0lvbEc7S0FNQXhxRjtLQU1BamI7S0FDQW1sRzs7Ozs7Ozs7OztJQXVEbUM7O1lBN0V2QzlrRzs7WUFTSW9sRztZQU1BeHFGO1lBTUFqYjtZQUNBbWxHOzs7Ozs7Ozs7Ozs7Ozs7SUFvREo7a0VBQUFockc7S0FBQXlmO0tBQUFFO0tBQUFELHVCQUFBQztlQUFBRCxjQUFBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0ExRUF2WjtLQVNJb2xHO0tBTUF4cUY7S0FNQWpiO0tBQ0FtbEc7Ozs7Ozs7OztLQStCQXZnRzs7Ozs7Ozs7O0tBMENGQztLQUFBQzs7WUExRUU5RTtZQXJCSks7WUFlSTRhO1lBTkF3cUY7WUFhQU47Ozs7Ozs7OztZQStCQXZnRztZQTBDRkM7WUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FuR0FxZ0c7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0NUVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQVFMci9GO0lBQUFvRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFBQXBELGFBQUFvRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBUks7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBSEg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUNpQlI3STthQUdJcWxHLGdCQUFnQkM7Ozs7O01BTXVCO09BQUEsT0FBQSxrQ0FOdkJBO2NBTUw7S0FKRDs7O01BQUEsT0FBQSxrQ0FGTUE7Ozs7OzthQVVoQkEsUUFVYXh6RTtLQVRmO01BQUl5ekUsV0FBVyxtQkFTQXp6RTtNQVJYMHpFLFdBQVcsbUJBUUExekU7S0FQWixHQUFBLGtDQUZDeXpFLFVBQ0FDO01BRUMsT0FIREQ7O2tDQVhGRixnQkFZRUc7a0NBWkZILGdCQVdFRTs7MEI7OztzREFTV3p6RTs7Ozs7OztJQUVjO0lBMUJwQixnQkFDWDl4QixXQUdJcWxHLGlCQVVBQzthQWtCRkcsWUFBWTF5RDtLQUF5QiwrQkFBekJBO0tBQXlCLE9BQUE7SUFBaUI7YUFDdEQyeUQsV0FBVzN5RDtLQUF3QiwrQkFBeEJBO0tBQXdCLE9BQUE7SUFBaUI7YUFLbERwdEMsWUFBVXhGO0tBQ29DO01BRGpCbXZDO01BQUx5RDtNQUNzQiwyQkFEdEJBO01BQ0QsT0FBQTtLQUF6QixPQUFBLG9CQURZNXlDLGlCQUFtQm12Qzs7YUFJN0JxMkQsd0JBQWlCNXlELGdCQUFXLE9BVjlCMHlELFlBVW1CMXlEO2FBQ2pCNnlELHVCQUFnQjd5RCxnQkFBVyxPQVY3QjJ5RCxXQVVrQjN5RDthQUVoQnh1QyxRQUFRc2dELElBQUdDO0tBQ2I7TUFBeUMsT0FKdkM2Z0QsYUFHVzdnRDtNQUNVLE9BSnJCNmdELGFBR1E5Z0Q7TUFDTmxiLElBQUk7S0FDTCxHQUFBLGtDQURDQSxPQUNXLE9BRFhBO0tBQytDLElBQUEsT0FKakRpOEQsWUFFVzlnRCxLQUVxQixPQUpoQzhnRCxZQUVRL2dEO0tBRXlDLE9BQUE7SUFBZ0I7SUFadkQsaUJBR1ZsL0MsYUFJQWdnRyxjQUNBQyxhQUVBcmhHO2FBUUZ1cUMsU0FBUzd1QztLQUFJLHNCQUFBLE9BQUEseUJBQUpBO0tBQUksT0FBQTtJQUErQzthQUU1RCtHLFlBQVU3RyxXQUFVRjttQkFFRjRsRyxRQUFVLGdDQUFWQSxTQUFBQSxRQUE0QztLQURoRSxJQUFBLE9BSEUvMkQsU0FFb0I3dUMsSUFHUjZsRyxRQUZkOzs7T0FFZUM7T0FBQUM7T0FBQUMsOENBQUFEO09BQUFFLGdDQUhIL2xHLFdBR0c0bEc7cUJBQUFFLGNBQUFDOztxREFBREo7SUFBMkI7YUFHdkN6akYsVUFBV3BpQjs7b0JBRVU4eUMsS0FBS3pEO09BQ0YsZ0NBREVBO09BQ2pCLEdBQUEsc0NBRFl5RDtPQUNuQixNQUFBO01BQWdEO01BRG5DLE9BQUEseUJBRko5eUM7S0FHd0M7bUJBRlorZjtNLE9BUHZDaFosNEIsY0FPdUNnWjs7S0FBSyxPQUFBLG1DQURqQy9mO0lBR3lDO2FBR3BEMmYsSUFBSTNmLEdBQUc4eUMsS0FBS3pEO0tBQXNCLFdBbENsQ28yRCxXQWtDTzN5RDtLQUFrRCxPQUFBLHlCQUFyRDl5QyxhQUFHOHlDLEtBQUt6RDtJQUFtRTthQUMvRTYyRCxVQUFVbG1HLEdBQUVtbUcsSUFBSyxPQUFBLHlCQUFQbm1HLEdBQUVtbUcsSUFBaUI7YUFDN0J4c0YsSUFBSTNaLEdBQUU4eUMsS0FBTSxPQURab3pELFVBQ0lsbUcsR0FwQ0p5bEcsV0FvQ00zeUQsTUFBa0M7YUFDeENzekQsYUFBYXBtRyxHQUFFbW1HLElBQUssT0FBQSx5QkFBUG5tRyxHQUFFbW1HLElBQW9CO2FBQ25DeDFELE9BQU8zd0MsR0FBRTh5QyxLQUFNLE9BRGZzekQsYUFDT3BtRyxHQXRDUHlsRyxXQXNDUzN5RCxNQUFxQztRQUM5QzlIO2FBQ0EvQixVQUFVNkosS0FBSXpEO0tBQXlCLFdBeEN2Q28yRCxXQXdDVTN5RDtLQUE4QyxPQUFBLG9EQUE5Q0EsS0FBSXpEO0lBQWdFO1FBQzlFejFCO2FBRUFTLEtBQWNyYSxHQUFHOHlDO0tBQ25CLElBQWlCLE9BNUNmMnlELFdBMkNpQjN5RCxNQUNiLFFBQUEseUJBRFU5eUM7aUJBRU47S0FJMkM7O01BSDdCMGpCO01BQU4yaUY7TUFHbUMsMkJBSG5DQTtNQUdpQiwyQkFOaEJ2ekQ7S0FNZjtLQUVGLFdBTHNCcHZCO0lBS007YUFHNUJ0RixTQUFTcGUsR0FBRTh5QztLQUNQLFlBWkp6NEIsS0FXU3JhLEdBQUU4eUM7bUJBRU56RCxpQkFBUSxPQUFSQTtLQUNtRCxXQTFEeERtMkQsWUF1RFcxeUQ7S0FHSCxPQUFBO0lBQW9FO2FBRzVFdEMsSUFBSXh3QyxHQUFHOHlDLEtBQUt6RDtLQUFPLE9BeEJuQjExQixJQXdCSTNaLEdBQUc4eUMsZ0NBMUJQbnpCLElBMEJJM2YsR0FBRzh5QyxLQUFLekQ7SUFBK0Q7YUFFM0VrQixRQUFRdndDLEdBQUc4eUMsS0FBS3pEO0tBQ1osWUFISm1CLElBRVF4d0MsR0FBRzh5QyxLQUFLekQ7O01BRzhDLFdBbEU5RG0yRCxZQStEVzF5RDtNQUdHLE9BQUE7O1NBRFY0Z0I7S0FBSyxPQUFMQTtJQUM4RTthQUdsRjR5QyxXQUFXdG1HLEdBQUU4eUMsS0FBT3pDO0tBQ2hCLFlBMUJKaDJCLEtBeUJXcmEsR0FBRTh5Qzs7VUFFUnpEO01BQXlCLE9BcEM5QjF2QixJQWtDVzNmLEdBQUU4eUMsS0FFaUIsV0FGVnpDLFFBRWZoQjs7S0FDcUQsV0F4RTFEbTJELFlBcUVhMXlEO0tBR0wsT0FBQTtJQUFzRTthQUc5RXhDLE9BQU90d0MsR0FBRTh5QyxLQUFPekM7S0FDbEIsSUFBSWsyRCxPQWhDRmxzRixLQStCT3JhLEdBQUU4eUMsTUFFUEMsT0FBTyxXQUZPMUMsUUFDZGsyRDtLQUVKLEtBREl4ekQsTUFHUyxPQUFBLDRCQUpUd3pELFFBREt2bUcsSUFwQ1Ayd0MsT0FvQ08zd0MsR0FBRTh5QztTQUlKekQsT0FGSDBEO0tBRVcsT0E1Q2JwekIsSUF3Q08zZixHQUFFOHlDLEtBSUp6RDtJQUNrRDthQUd2RGdCLE9BQU9yd0MsR0FBRTh5QyxLQUFLcHdDO0tBQUksT0FSbEI0dEMsT0FRT3R3QyxHQUFFOHlDLGNBQThCekQsTUFBUSxXQUFLLFdBQXRDM3NDLEdBQXlCMnNDLE9BQXFCO0lBQUM7YUFFN0QrQixhQUFhcHhDO21CQUMwQm1xQyxHQUFLLGdDQUFMQSxJQUFBQSxHQUE0QjtLQUFoRCxXQUFBLDBCQURObnFDO0tBQ00sT0FBQTtJQUFrRDtJQS9IM0U7Ozs7O1lBOERNNnVDO1lBRUE5bkM7WUFNQXFiO1lBTUF6QztZQUNBdW1GO1lBQ0F2c0Y7WUFDQXlzRjtZQUNBejFEO1lBQ0EzRjtZQUNBL0I7WUFDQXJ2QjtZQUVBUztZQVdBK0Q7WUFNQW95QjtZQUVBRDtZQU1BKzFEO1lBTUFoMkQ7WUFRQUQ7WUFFQWU7OzthQWNFcnhDLFVBQU15bUcsVUFBR0MsVUFBVEMsT0FBQSxPQUFBLG9CQUFTRCxVQUFUQztJQUErQzsyQkFBL0MzbUc7YUFHTjJGLFlBQUFpaEc7S0FBQSwrQ0FBQUE7SUFBc0M7SUF1QnRCO0tBakJadmtGO0tBQ0E0b0I7S0FDQS9CO0tBQ0FydkI7S0FDQStGO0tBQ0FoRztLQUNBdXNGO0tBQ0E3ckY7S0FDQStEO0tBQ0FveUI7S0FDQUQ7S0FDQUQ7S0FDQWcyRDtLQUNBajJEO0tBQ0FNO0tBQ0F5MUQ7S0FFWTthQUladjNELFNBQVM3dUM7S0FDWDtNQUEyQixJQUEyQnF2QyxpQkFBTHlEO01BQWMsV0FBZEEsS0FBS3pEO0tBQThCO0tBQTNFLDJCQURFcnZDO0tBQ2dCLE9BQUE7SUFBeUQ7YUFHbEZveEMsYUFBYXB4QztLQUNmO01BQ2lCLElBQXlCcXZDLGlCQUFMeUQ7TUFBYyxXQUFkQSxLQUFLekQ7S0FBZ0M7S0FBeEUsVUFBQSwwQkFGYXJ2QztLQUViO0lBQXlFO0lBekMvRTs7WUFRRTBGOztZQU1JMGM7WUFDQTRvQjtZQUNBL0I7WUFDQXJ2QjtZQUNBK0Y7WUFDQWhHO1lBQ0F1c0Y7WUFDQTdyRjtZQUNBK0Q7WUFDQW95QjtZQUNBRDtZQUNBRDtZQUNBZzJEO1lBQ0FqMkQ7WUFDQU07WUFDQXkxRDs7WUFNQXYzRDtZQUlBdUM7O09BZ0ZKcnhDO1lBRUlzbEcsYTtHQUhlLHNCQUNuQnRsRyxXQUVJc2xHO0dBT0EsU0FBQTMvRixZQUFLa2hHLFVBQUwsT0FBS0EsU0FBOEI7O2dDQUFuQ2xoRztJQUVGMHJDO0lBQUF2Qzs7SUFBQXUzRDtJQUFBejFEO0lBQUFOO0lBQUFpMkQ7SUFBQWgyRDtJQUFBQztJQUFBQztJQUFBcHlCO0lBQUEvRDtJQUFBNnJGO0lBQUF2c0Y7SUFBQWdHO0lBQUEvRjtJQUFBcXZCO0lBQUErQjtJQUFBNW9CO0lBQUFyYjtZQVdJNFQsT0FBUWtzRixXQUFTaHRHLE1BQUtreUM7SUFDeEIsV0FBaUIsa0NBREVseUMsTUFBS2t5QyxVQUFkODZEO0dBQzJDO1lBR25EVixHQUFHbm1HLEdBQUksT0FBSkEsS0FBUztHQVZMLGNBTVAyYSxRQUlBd3JGO1lBR0ZqcEQsT0FBS2w5QztJQUErQyxJQUFsQzZtRyxzQkFBVC96RCxnQkFBMkMsTUFsQnREejRCLEtBa0JPcmEsR0FBSTh5QztJQUFxQixPQUFBLGlDQUFaK3pEOztZQUNsQmw2RCxNQUFJM3NDLFVBQWlDcXZDO1FBQXhCeUQ7SUFBK0IsT0FuQjlDbnpCLElBbUJNM2YsR0FBUzh5QyxLQUF3QnpEOztZQUNyQzJOLFNBQU9oOUMsR0FBRTh5QyxLQUFPekM7SUFBUyxPQUR6QjFELE1BQ08zc0MsR0FBRTh5QyxLQUFpQyxXQUExQnpDLFFBRmhCNk0sT0FFT2w5QyxHQUFFOHlDO0dBQXNEO1lBVTdEOXlCLFNBQVFuRixNQUFNblksR0FBRzdJLE1BQUtreUM7SUFDeEIsV0FBVyxtQkFERGx4QixNQUFTaGhCLE1BQUtreUMsVUFBUnJwQztHQUNnRDtZQUc5RG9rRyxLQUFHOW1HLEdBQUksMEJBQUpBLE1BQTZCO0dBVnpCLGdCQU1QZ2dCLFVBSUE4bUY7WUEwQkZ6L0MsT0F2QktybkQsY0FBSTh5QyxnQkFBbUIsT0FuQjVCb0ssT0FtQktsOUMsR0FBSTh5QztZQXNCVDhULE1BckJJNW1ELFVBQTJCcXZDO1FBQWxCeUQ7SUFBeUIsT0FuQnRDbkcsTUFtQkkzc0MsR0FBUzh5QyxLQUFrQnpEOztZQXdCL0I2WCxTQXZCT2xuRCxVQUF3QnF3QztRQUFwQnlDO0lBQTZCLE9BbkJ4Q2tLLFNBbUJPaDlDLEdBQUk4eUMsS0FBb0J6Qzs7WUFzQi9Cc00sTUFwQkkzOEMsVUFBdUJxdkM7UUFBTDNzQyxjQUFUb3dDO0lBQ2MsT0F0QjNCa0ssU0FxQkloOUMsR0FBUzh5QyxjQUNtQnRzQixLQUFPLE9BQXpDLFdBRHdCOWpCLEdBQ1U4akIsS0FETDZvQixNQUNzQjs7WUFVL0M3dUIsU0FBUTNtQixNQUFLa3lDO0lBQ29DLFVBQUEseUJBRHBDQTtpQkFDYXNuQixJQUFHN3lELEdBQUssV0FBTEEsR0FBSDZ5RCxJQUFlO0lBQVEsT0FBQSw2QkFEekN4NUQ7R0FDaUU7R0FKbEU7SUFPUGt0RztJQVBPLFlBR1B2bUYsVUFJQXVtRjtJQVZPLG1CQWFUbmdELE9BQ0FTLFFBQ0ExSyxPQUNBdUs7Ozs7OztxQkFIQU4sT0FDQVMsUUFDQTFLLE9BQ0F1SzttQkEzQ0F2YSxPQURBdVEsUUFFQUY7O2FBckRBMWdDLE1BRUdzb0MsSUFDQUM7S0FGRCxJQUdLbmlEO0tBRVQsU0FBSXNrRyxJQUFHbDBELEtBQUltMEQ7bUJBQ2dDNTNELE1BQVEsV0FENUN5RCxLQUNvQ3pELE1BQW1DO01BQWpFLFVBQUEsV0FISjNzQyxHQUVGb3dDLEtBQUltMEQ7TUFDMkIsT0FBQTtLQUF5Qzs7TUFFNUQ7O09BTXlDOzs7UUFIVkM7UUFBWEM7O1FBQWZDO1FBQVZDO1FBRzhDLE1BQUEsbUJBSHJCRjtRQUdGLE1BQUEsbUJBSHZCRTtPQUdSO09BRWMsT0FYaEJMLElBTVVLLDZCQUFVRCxXQUEwQkY7Ozs2QkFGL0I3M0QsbUJBQUx5RDtPQUFzQixPQUpoQ2swRCxJQUlVbDBELG9CQUFLekQ7OzRCQUNDdVAscUJBQUx5bkQ7TUFBc0IsT0FMakNXLElBS1dYLHNCQUFLem5EO0tBTWdDO0tBUmpDLE9BQUEseUJBUGRnRyxJQUNBQztJQWMrQztlQWpCbER2b0M7OzthQXJDQUEsTUFBT3NvQyxJQUFnQ0M7U0FBb0NuaUQ7S0FHN0UsU0FBSXNrRyxJQUFHbDBELEtBQUltMEQ7bUJBQ2dDNTNELE1BQVEsV0FENUN5RCxLQUNvQ3pELE1BQXFDO01BQW5FLFVBQUEsV0FKZ0Uzc0MsR0FHdEVvd0MsS0FBSW0wRDtNQUMyQixPQUFBO0tBQTJDOztNQUU5RDs7T0FNeUM7OztRQUhWQztRQUFYQzs7UUFBZkM7UUFBVkM7UUFHOEMsTUFBQSxtQkFIckJGO1FBR0YsTUFBQSxtQkFIdkJFO09BR1I7T0FFYyxPQVhoQkwsSUFNVUssNkJBQVVELFdBQTBCRjs7OzZCQUYvQjczRCxtQkFBTHlEO09BQXNCLE9BSmhDazBELElBSVVsMEQsb0JBQUt6RDs7NEJBQ0N1UCxxQkFBTHluRDtNQUFzQixPQUxqQ1csSUFLV1gsc0JBQUt6bkQ7S0FNZ0M7S0FSakMsT0FBQSx5QkFOVmdHLElBQWdDQzs7ZUFBdkN2b0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FzRUZ2VjtPQUFBcWI7T0FBQTRvQjtPQUFBL0I7T0FBQXJ2QjtPQUFBK0Y7T0FBQWhHO09BQUF1c0Y7T0FBQTdyRjtPQUFBK0Q7T0FBQW95QjtPQUFBRDtPQUFBRDtPQUFBZzJEO09BQUFqMkQ7T0FBQU07T0FBQXkxRDs7T0FBQXYzRDtPQUFBdUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDaFJKOGhDO0lBQUFwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUFBLFNBQUFweEUsVUFBQTBuQjtJQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUFBOztXQUFBOztVQUFBOztTQUFBOztRQUFBOztPQUFBOztNQUFBOztlQUFBQTs7TUFBQSxPQUFBOzRDQUFBOHJELGtCQUFBOXJEOzs7TUFBQSxPQUFBOzRDQUFBOHJELGtCQUFBOXJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBQUEsT0FBQTtpREFBQThyRCxrQkFBQTlyRDs7VUFBQSxPQUFBO2dEQUFBOHJELGtCQUFBOXJEOztTQUFBLE9BQUE7K0NBQUE4ckQsa0JBQUE5ckQ7O1FBQUEsT0FBQTs4Q0FBQThyRCxrQkFBQTlyRDs7T0FBQSxPQUFBOzZDQUFBOHJELGtCQUFBOXJEOztNQUFBLE9BQUE7NENBQUE4ckQsa0JBQUE5ckQ7O0tBQUEsT0FBQTsyQ0FBQThyRCxrQkFBQTlyRDs7SUFBQSxPQUFBLHdDQUFBOHJELGtCQUFBOXJEO0dBUTJDO1lBUjNDcm5CO0lBQUE7O09BQ0U7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7ZUFDQTs7R0FDeUM7T0FSM0N1RTtZQUFBQyxZQUFBbEksS0FBQUM7SSxPQUFBQTs7T0FDRSxPQUFBLHlCQURGRDs7T0FFRSxPQUFBLHlCQUZGQTs7T0FHRSxPQUFBLHlCQUhGQTs7T0FJRSxPQUFBLHlCQUpGQTs7T0FLRSxPQUFBLHlCQUxGQTs7T0FNRSxPQUFBLHlCQU5GQTtlQU9FLE9BQUEseUJBUEZBOzs7R0FBQSxTQUFBbUksS0FBQWxJO0lBQUEsSUFBQUQsNkNBQUFrSSxZQUFBbEksS0FBQUM7O0dBUTJDOzs7Ozs7O1VBUjNDb0QsV0FBQUssV0FBQXVFLFNBQUF3c0UsS0FBQXZzRSxhQUFBQzs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNXUThpRyxzQkFBc0JDLE1BQUt0ekY7SUFDakM7S0FDWSxJQURSelQsSUFEd0IrbUcsU0FFeEJDLFFBQVEsV0FGcUJ2ekYsTUFDN0J6VDtLQUVELEdBQUEsbUNBSHlCK21HLFNBQ3hCL21HLElBRHdCK21HLFVBRXhCQyxPQUlGLE9BTEVobkc7O0dBTWdDOzs7Ozs7SUFhdEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBQVZpbkc7YUFDQTlzRixjQUFZLE9BckJWMnNGLHNCQW9CRkcsZUFDOEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFBOUM5c0Y7Ozs7OztRQVJVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQUFWOHNGO2lCQUNBOXNGLGNBQVksT0FkVjJzRixzQkFhRkcsZUFDOEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBQTlDOXNGOzs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJRTZJRm14RjtJQTVDRkM7O0lBakhBNW9HO0lBQUF0SjtJQWdEQW15RztJQUFBNW9HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5QkFyRDhCLFdBRTdCO0dBR0QsU0FBQTFELFVBQU11c0csVUFBSUMsVUFBUUM7SUFBbEIsU0FBa0JBO2VBQUFBOzs7O09BQUE7UUFBQXJHO1FBQUFDO1FBQUFDLFdBQUEsV0FBWmlHLFVBQVlsRztRQUFBRSxXQUFBLFdBQVJpRyxVQUFRcEc7T0FBQSxXQUFBRSxVQUFBQzs7OztJQUFBLE9BQUE7MENBQWxCOWlHLHFCQUFrQmdwRztHQUFrQztZQXlDaERwc0csVUF6Q0UydkIsVUFBSTA4RTtJQUFWO0tBQWtCQztLQUFBQztLQUFBNS9FLHNCQUFaZ0QsVUFBWTQ4RTtLQUFBQyxzQkFBUkgsVUFBUUM7bUJBQUEzL0UsY0FBQTYvRTtHQUFrQzs7aUVBQXBEMXlHO0lBQUF5ZjtZQUFBQyxhQUFBbGUsTUFBQW1aO0lBQUEsSUFBQWdGLFlBQUEsNkJBQUFuZSxNQUFBbVo7SUFBQTs7YUFBQWdGOzs7NkJBQUEsT0FBQSw2QkFBQW5lLE1BQUFtWjtHQUFvRDtZQUVoRG1HLE9BQU8vZixHQUFFd1osR0FBSSxXQUFOeFosR0FBRXdaLEdBQVE7WUFFakJvNEYsTUFBTTlwRyxHQUNSLGdCQUNJOUgsR0FBRXdaLEdBQUssT0FBRSxXQUZMMVIsT0FFSjlILEdBQUV3WixJQUFhLEVBQUE7WUFHakJxNEYsUUFBUS9wRztJQUNWO0tBQ0EsSUFBUTBSLGNBQUh4WjtLQUFTLE9BQUEsV0FGSjhILEdBRUw5SCxHQUFHd1osR0FBVztHQUFBO1lBZWpCNEIsV0FBWXRUO0lBQVMsSUFBYmlVLGNBQUhuVyxjQUFnQixNQUFBLFdBQVRrQyxHQUFKaVU7SUFBUSxXQUFBLFdBQUpqVSxHQUFQbEM7O1lBQ0xrc0csZUFBZ0JocUc7UUFBSmlVLGNBQUhuVztJQUFXLFdBQUEsV0FBSmtDLEdBQVBsQyxJQUFHbVc7O1lBQ1pnMkYsZUFBZ0JqcUc7UUFBSmlVLGNBQUhuVztJQUFXLFdBQVhBLEdBQWMsV0FBUGtDLEdBQUppVTs7WUFDWmkyRixpQkFBd0JscUc7SUFBYTtLQUFsQm1xRztLQUFKaHBGO0tBQUxpcEY7S0FBSmxwRjtLQUErQixNQUFBLFdBQWJsaEIsR0FBZG9xRyxJQUFTRDtJQUFTLFdBQUEsV0FBSm5xRyxHQUFsQmtoQixJQUFTQzs7WUFFZnZmLFFBQVN5b0csTUFBTUM7SUFDWDtLQUQ0QnIyRjtLQUFKblc7S0FBSnlzRztLQUFIeHJHO0tBR3JCcVYsSUFGSSxXQURLaTJGLE1BQVl0ckcsS0FBT2pCO2lCQUc1QnNXLElBREssV0FGVWsyRixNQUFTQyxLQUFRdDJGLEtBR2hDRzs7WUFHQVQsTUFBTzYyRixLQUFLQztJQUFzQjtLQUFOeDJGO0tBQUpuVztLQUFKeXNHO0tBQUh4ckc7S0FBaUIsTUFBQSxXQUEzQnlyRyxLQUFVenJHLEtBQU9qQjtJQUFVLHdCQUF0QjJzRyxLQUFRRixLQUFRdDJGOztZQUM1QmdILGdCQUFTdkosY0FBSHhaLGNBQVEsV0FBTHdaLEdBQUh4WjtZQUtGdUssVUFBUTRuRyxNQUFLQztJQUFPLDBCLE9BWnhCMW9HLFFBWVl5b0csTUFBS0M7R0FBMEI7O2lEQUF2QzduRyxXQUZKcEY7O0dBT0osU0FBQXlGLFlBQU0wZ0UsVUFBSWtuQyxVQUFJQyxVQUFRQztJQUF0QixTQUFzQkE7ZUFBQUE7Ozs7OztRQUFBO1NBQUFDO1NBQUFwZ0Y7U0FBQUM7U0FBQW9nRixXQUFBLFdBQWhCdG5DLFVBQWdCOTRDO1NBQUFxZ0YsV0FBQSxXQUFaTCxVQUFZamdGO1NBQUF1Z0YsV0FBQSxXQUFSTCxVQUFRRTtRQUFBLFdBQUFDLFVBQUFDLFVBQUFDOzs7OztJQUFBLE9BQUE7MENBQXRCMUIscUJBQXNCc0I7R0FBdUM7WUFBN0Q1bkcsWUFBTWlvRyxVQUFJQyxVQUFJQztJQUFkO0tBQXNCQztLQUFBQztLQUFBQztLQUFBQyxzQkFBaEJOLFVBQWdCSztLQUFBRSxzQkFBWk4sVUFBWUc7S0FBQUksc0JBQVJOLFVBQVFDO21CQUFBRyxjQUFBQyxjQUFBQztHQUF1Qzs7bUVBQTdEL3FHO0lBQUFpMUU7WUFBQUUsZUFBQWw5RSxNQUFBbVosTUFBQTQ1RjtJQUFBLElBQUE1MEYsWUFBQSwrQkFBQW5lLE1BQUFtWixNQUFBNDVGO0lBQUE7O2FBQUE1MEY7Ozs7Z0JBQUEsT0FBQSw2QkFBQW5lLE1BQUFtWixNQUFBNDVGOztHQUE2RDtZQUV6RHB1RixTQUFPcGxCLEdBQUV3WixHQUFFczFCLEdBQUksV0FBUjl1QyxHQUFFd1osR0FBRXMxQixHQUFXO1lBRXRCMmtFLFFBQU0zckc7SUFDUixnQkFDSTlILEdBQUV3WixHQUFFczFCLEdBQUssT0FBRSxXQUZQaG5DLE9BRUo5SCxHQUFFd1osR0FBRXMxQixJQUFnQjtHQUFBO1lBR3RCNGtFLFVBQVE1ckc7SUFDVjtLQUNBLElBQVdnbkMsY0FBSHQxQixjQUFIeFo7S0FBWSxPQUFBLFdBRlA4SCxHQUVMOUgsR0FBR3daLEdBQUdzMUIsR0FBYTtHQUFBO1lBR3RCMWlCLGFBQWV0a0I7SUFBYztLQUFsQnc0RTtLQUFIdmtFO0tBQUhuVztLQUF3QixNQUFBLFdBQWRrQyxHQUFKdzRFO0tBQWEsTUFBQSxXQUFUeDRFLEdBQVBpVTtJQUFXLFdBQUEsV0FBSmpVLEdBQVZsQzs7WUFDTCt0RyxpQkFBbUI3ckc7UUFBSnc0RSxjQUFIdmtFLGNBQUhuVztJQUFjLFdBQUEsV0FBSmtDLEdBQVZsQyxJQUFHbVcsR0FBR3VrRTs7WUFDZnN6QixpQkFBbUI5ckc7UUFBSnc0RSxjQUFIdmtFLGNBQUhuVztJQUFjLFdBQWRBLEdBQWlCLFdBQVBrQyxHQUFQaVUsSUFBR3VrRTs7WUFDZnV6QixlQUFtQi9yRztRQUFKdzRFLGNBQUh2a0UsY0FBSG5XO0lBQWMsV0FBZEEsR0FBR21XLEdBQWlCLFdBQVZqVSxHQUFKdzRFOztZQUNmd3pCLG1CQUFnQ2hzRztJQUFzQjtLQUEzQmlzRztLQUFKOUI7S0FBSmhwRjtLQUFMK3FGO0tBQUo5QjtLQUFKbHBGO0tBQWdELE1BQUEsV0FBdEJsaEIsR0FBbEJrc0csSUFBYUQ7S0FBa0IsTUFBQSxXQUFianNHLEdBQXRCb3FHLElBQWFEO0lBQWEsV0FBQSxXQUFKbnFHLEdBQTFCa2hCLElBQWFDOztZQWVuQmdyRixnQkFBWWowRyxjQUFLLE9BQUxBO1lBR1p3TCxVQUFTMm1HLE1BQU1DLE1BQU04QjtJQUNkO0tBRHNDNXpCO0tBQUp2a0U7S0FBSm5XO0tBQUp1dUc7S0FBSDlCO0tBQUh4ckc7S0FDekJ1dEcsS0FBSyxXQURFakMsTUFBa0J0ckcsS0FBVWpCO0lBRXZDLFNBREl3dUcsSUFFQyxPQUZEQTtJQUlPLElBQUxDLEtBQUssV0FMTWpDLE1BQWVDLEtBQVd0MkY7SUFNekMsYUFESXM0RixLQUNvQixXQU5ISCxNQUFZQyxLQUFZN3pCLEtBS3pDK3pCOztZQUlKaHZGLFFBQU9pdEYsS0FBS0MsS0FBSytCO0lBQTZCO0tBQU5oMEI7S0FBSnZrRTtLQUFKblc7S0FBSnV1RztLQUFIOUI7S0FBSHhyRztLQUF3QixNQUFBLFdBQXZDeXJHLEtBQWV6ckcsS0FBVWpCO0lBQWM7S0FBWSxVQUFBLFdBQTlDMnNHLEtBQWFGLEtBQVd0MkY7S0FBc0IsMEJBQXpDdTRGLEtBQVdILEtBQVk3ekI7Ozs7O0lBQWtCOzs7YUFvQjlEeDdFLFVBQVM0MkM7S0FBVCxTQUFTQTtnQkFBQUE7Ozs7UUFBQTtTQUFBQztTQUFBQztTQUFBQyxXQUFBLGtCQUFBRDtTQUFBYSxXQUFBLGtCQUFBZDtRQUFBLFdBQUFFLFVBQUFZOzs7O0tBQUEsT0FBQTsyQ0FBVDAwRCxxQkFBU3oxRDtJQUE2QjthQUF0Q3YyQztLQUFBO01BQVNvdkc7TUFBQUM7TUFBQUMsNkJBQUFEO01BQUFFLDZCQUFBSDtvQkFBQUUsY0FBQUM7SUFBNkI7SUFEYyxXQUNwRDV2RyxXQUFBSzs7O0lBYWlCLElBQWI0Z0QsZUFBYTtJQU55QyxXQU10REE7OzthQStCRnI4QyxRQUFBaXJHLE9BQUFDO0tBQVM7TUFBQUMsUUFBVEY7TUFBU0csUUFBVEg7TUFBU0ksUUFBVEg7TUFBU0ksUUFBVEo7TUFBUzFxRixJQUFBLGtCQUFBNHFGLE9BQUFFO2tCQUFBOXFGLElBQU8sa0JBQVAycUYsT0FBQUUsU0FBQTdxRjtJQUFXO2FBQXBCdmdCLFlBQUFsSSxLQUFBQzs7TUFBU3VvRSxLQUFUdm9FO01BQVN3b0UsS0FBVHhvRTtNQUFTMkwsMEJBQVQ1TCxLQUFTeW9FO01BQUE1OUMsMEJBQUFqZixPQUFBNDhEO1lBQUEzOUM7O0lBQVQsU0FBQTFpQixLQUFBbEk7S0FBQSxJQUFBRCw2Q0FBQWtJLFlBQUFsSSxLQUFBQzs7SUFBcUQ7YUFBckRvRCxVQUFTbXdHO0tBQVQsU0FBU0E7Z0JBQUFBOzs7O1FBQUE7U0FBQUM7U0FBQUM7U0FBQXRoRCxXQUFBLGtCQUFBc2hEO1NBQUFDLFdBQUEsa0JBQUFGO1FBQUEsV0FBQXJoRCxVQUFBdWhEOzs7O0tBQUEsT0FBQTsyQ0FBVGxFLHFCQUFTK0Q7SUFBNEM7YUFBckQ5dkc7S0FBQTtNQUFTa3dHO01BQUF0aEQ7TUFBQXVoRCw2QkFBQXZoRDtNQUFBd2hELDZCQUFBRjtvQkFBQUMsY0FBQUM7SUFBNEM7SUFENUM7S0FBQSxRQUNUN3JHLFNBQUFDLGFBQUFDLE1BQUE5RSxXQUFBSztLQUFBeUY7S0FBQUU7Ozs7Ozs7OztJQUYwRDs7WUFFMURGO1lBQUFFOzs7Ozs7Ozs7O1FBdERGaEcsa0JBQUFLLGtCQUVRdUUsZ0JBQUFFO2FBK0RKRCxZQUFZK21ELE9BQU10ckQ7S0FBd0IsVUFBQSxXQS9EdEN3RSxNQStEY3hFO0tBQXdCLE9BQUEsNEJBQTlCc3JEO0lBQXNDO0lBSGxCLFdBNUQ1QmhuRCxTQStESkMsYUEvRElDLE1BRlI5RSxXQUFBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBY0E7O0tBQUEsY0FBSztLQUFMLE1BQUE7S0FBQXJGLFFBQUE7S0FBQSxNQUFBO0tBQUttRyxjQUFMLFdBQUEsK0JBQUFuRzthQUFBb0c7S0FBQTtNQUFTd1c7TUFBQXZXOzhCQUFBQTtNQUFBd1c7OEJBQUFEOzRDQUFBQztJQUErQjthQUF4Q3RXLFlBQUEzRixLQUFBNEY7S0FBQTtNQUFTb1c7TUFBQXZXO01BQUFJLDBCQUFUN0YsS0FBQTRGLEtBQVNIOzhCQUFUekYsS0FBUzZGLE9BQUFtVztJQUErQjtJQUF4QyxJQUFBblQsbUJBQUFyRCxZQUFBRzthQUFBSSxXQUFBL0YsS0FBQUMsU0FBQUM7S0FBQTttRUFBQUQ7SUFBd0M7YUFBeEMrRixhQUFBaEcsS0FBQUM7O01BQVN3Rix1QkFBVHpGLEtBQUFDO01BQVMrYix1QkFBVGhjLEtBQUFDO2dCQUFTd0YsSUFBQXVXOztJQUFUO0tBQUFsVCxtQkFBQTlDLGNBQUFEO0tBQUFnRCxZQUFLeEQsYUFBTHNELGNBQUFDOztZQUFBdEQ7WUFBQUc7WUFBQUs7WUFBQUQ7WUFBS1I7WUFBTHNEO1lBQUFDO1lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBSkEzRTtLQUFBSzthQStCTXVFO0tBQ0k7TUFEbUI4ckc7TUFBTEM7TUFBTEM7TUFBSkM7TUFHVC92RyxJQUZJLG1CQURLK3ZHLE1BQVNGO2tCQUdsQjd2RyxJQURLLG1CQUZROHZHLE1BQVVGLE1BR3ZCNXZHOzs7OzJDQUhBOEQsU0EvQk41RSxXQUFBSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBQUFMO1lBQUFLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FBakhBTDtRQXlDSUs7UUF6Q0p3WjtRQUFBRDs7UUFFSXFCO1FBRUE2eEY7UUFLQUM7UUFzQkFub0c7UUFNQStSO1FBWEFMO1FBQ0EwMkY7UUFDQUM7UUFDQUM7UUFTQWp2Rjs7UUFVSm5ZO1FBQUFFO1FBQUE2eUU7UUFBQUY7UUFFSXI0RDtRQUVBcXVGO1FBS0FDO1FBb0NBcnVGO1FBVEE3WjtRQUhBeW9HO1FBbkJBN25GO1FBQ0F1bkY7UUFDQUM7UUFDQUM7UUFDQUM7Ozs7OztTQTREQS8xRDtTQU9FNTRDLFlBUEY0NEM7dURBT0U1NEMsV0FQRjQ0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ3hDRjYzRDtJQUNBQztJQUtBMy9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWhHTztJQUxQbGxFO0lBS087TUFBQTs7Ozs7Ozs7Ozs7SUFBTCxjQUFLO0lBQUwsTUFBQTtJQUFBbFIsUUFBQTtJQUFBLE1BQUE7SUFBS21HLGNBQUwsV0FBQSwrQkFBQW5HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBQUFvRyxrQkFBQSxTQVE4QztZQVI5Q0csWUFBQTNGLEtBQUE0RjtJQUFBOztPQUFBLE9BQUEsK0JBQUE1RixLQUFBNEY7O09BQUEsT0FBQSwrQkFBQTVGLEtBQUE0Rjs7T0FBQSxPQUFBLCtCQUFBNUYsS0FBQTRGOztPQUFBLE9BQUEsK0JBQUE1RixLQUFBNEY7O09BQUEsT0FBQSwrQkFBQTVGLEtBQUE0Rjs7T0FBQSxPQUFBLCtCQUFBNUYsS0FBQTRGO2VBQUEsT0FBQSwrQkFBQTVGLEtBQUE0Rjs7R0FROEM7R0FSOUMsSUFBQWlELG1CQUFBckQsWUFBQUc7WUFBQUksV0FBQS9GLEtBQUFDLFNBQUFDO0lBQUE7a0VBQUFEO0dBUThDO1lBUjlDK0YsYUFBQWhHLEtBQUFDO0lBQUEsWUFBQSw4QkFBQUQsS0FBQUM7O2lEQUFBQTs7O09BQ0U7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7ZUFDQTs7R0FDNEM7R0FSOUM7SUFBQTZJLG1CQUFBOUMsY0FBQUQ7SUFBQWdELFlBQUt4RCxhQUFMc0QsY0FBQUM7SUFBQUU7WUFBQUMsWUFBQWxJLEtBQUFDO0ksT0FBQUE7O09BQ0UsT0FBQSx5QkFERkQ7O09BRUUsT0FBQSx5QkFGRkE7O09BR0UsT0FBQSx5QkFIRkE7O09BSUUsT0FBQSx5QkFKRkE7O09BS0UsT0FBQSx5QkFMRkE7O09BTUUsT0FBQSx5QkFORkE7ZUFPRSxPQUFBLHlCQVBGQTs7O0dBQUEsU0FBQW1JLEtBQUFsSTtJQUFBLElBQUFELDZDQUFBa0ksWUFBQWxJLEtBQUFDOztHQVE4Qzs7Z0JBRDVDbzBHLFVBQUFDLFk7R0FQRjs7Z0JBTUUvL0UsVUFBQUMsWTtHQU5GOztnQkFLRUMsVUFBQUMsWTtHQUxGOztnQkFJRTYvRSxVQUFBQyxZO0dBSkY7O2dCQUdFQyxVQUFBQyxZO0dBSEY7O2dCQUVFMy9FLFVBQUE0L0UsWTtHQUZGOztnQkFDRUMsVUFBQUMsWTtHQURGO0lBQUE7SUFBS2w0Rix1QkFBTDtnQkFBQTZZLE9BQUEraEIsVUFBQXU5RDtJQUFBLE9BQUF0L0U7O09BQUEsSUFBQXUvRSxhQUFBLHNCQUFBRCxxQkFBQUM7O09BQUEsSUFBQUMsYUFBQSxzQkFBQUYscUJBQUFFOztPQUFBLElBQUFDLGFBQUEsc0JBQUFILHFCQUFBRzs7T0FBQSxJQUFBQyxhQUFBLHNCQUFBSixxQkFBQUk7O09BQUEsSUFBQUMsYUFBQSxzQkFBQUwscUJBQUFLOztPQUFBLElBQUFDLGFBQUEsc0JBQUFOLHFCQUFBTTs7T0FBQSxJQUFBQyxhQUFBLHNCQUFBUCxxQkFBQU87O0dBUThDO0dBUjlDLElBQUt4NEYsc0JBQUw7O0lBQUE7Ozs7Ozs7Ozs7Ozs7OztHQVE4QztHQVI5QyxJQUFLRSxzQkFBTDtZQVVJM1ksVUFBVVQ7SUFDWixPQURZQTs7T0FFSDs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTtlQUNBOztHQUFLO1lBR1oyeEcsZUFBZTN4RztJQUNqQixPQURpQkE7O09BRVI7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7ZUFDQTs7R0FBVTtZQWVqQnd5RSxXQUFXMTdEO0lBQ2IsT0FEYUEsU0FTTixPQUFBLFdBMURYbEwsZ0JBaURpQmtMO1dBQUFBOztPQUVOOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBO2VBQ0E7O0dBQzJDO1lBS2hEdlcsVUExQm1CWDtJQTJCckI7S0ExQk07TUFBQSxRQUFBLDRCQURlQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQVNkLFdBOUNYZ00sZ0JBcUN5QmhNOztLQTJCakI7OztLQUVGLElBQUssVUFqQkw0eUUsV0FpQmdCLHlCQTdCRzV5RSxLQTZCZDtnQkFDRyxPQUFBLFdBbkVkZ00sZ0JBcUN5QmhNOztHQThCZ0M7O3FEQUpuRFcsV0FoREFFOzs7Ozs7O1NBVkpLO1NBQUFHO1NBQUFLO1NBQUFEO1NBQUtSO1NBQUxzRDtTQUFBQztTQUFBQztTQUFBQzs7O0lBK0V1Q29TO0lBQUErNUQ7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQXg2RDtJQUFBbFI7SUFBQXE5QztJQUFBQztJQUFBK3RCO0lBQUFEO0lBQUFEO0lBQUFEO0lBQUFEO0lBQUFwWDtJQUFBQztJQUFBRjs7SUFBQXBnQjs7Ozs7OztTQS9FdkNwMEM7U0FBQXpEO1NBQUFHO1NBQUFLO1NBQUFEO1NBQUtSO1NBQUxzRDtTQUFBQztTQUFBQzs7U0FBQUM7O1NBQUFFOzs7Ozs7Ozs7OztTQUFBMUQ7U0FBQUc7U0FBQUs7U0FBQUQ7U0FBS1I7U0FBTHNEO1NBQUFDO1NBQUFDO1NBK0V1Q2M7OztTQUFBd3pDOzs7Ozs7O1NBL0V2QzczQztTQUFBRztTQUFBSztTQUFBRDtTQUFLUjtTQUFMc0Q7U0FBQUM7U0FBQUM7O1NBK0V1Q2M7Ozs7OztZQW1CekNzdEUsT0FBTzM3RDtJQUNULElBQUksY0F2REkwN0QsV0FzREMxN0QsS0FDTCx1QkFDRztHQUFJO1lBR1RxNUQsT0FBT253RTtJQUNULE9BRFNBOztPQUVBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBO2VBQ0E7O0dBQUM7WUFHUjR4Ryx3QkFBd0I1eEc7SUFDMUIsT0FEMEJBOztPQVFqQjs7T0FOQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTtlQUNBOztHQUNDO09BR1I2eEc7WUFDQTlTLE1BQU0vK0YsR0FBRThXO0lBQTJCLFVBdkJuQ3E1RCxPQXVCTW53RSxLQUFFOFc7SUFBZSxPQWxGakIwN0QsV0FrRmlCLDhCQUR2QnEvQjtHQUNrRTtZQUVsRUMsU0FBVUMsTUFBTUM7SUFDbEIsSUFBcUIsTUExQm5CN2hDLE9BeUJVNGhDLE9BQ1JqMUMsSUExQkZxVCxPQXlCZ0I2aEM7SUFFVixPQUFBLHlCQURKbDFDLFFBQUFBLFlBQUFBO0dBQzJDO1lBRzdDbTFDLGNBQWNqeUc7SUFBSSxVQUFBLFdBdER1QjB3RSxVQXNEM0Ixd0U7SUFBSSw4QkF0RHVCMHdFLFVBc0QzQjF3RTtHQUFzQjs7Ozs7Ozs7T0FySWxDYztPQUFBRztPQUFBSztPQUFBRDtPQUFLUjtPQUFMc0Q7T0FBQUM7T0FBQUM7T0FBSzJVO09BQUFFO09BQUFFOzs7T0ErRWtDMUM7T0FBQSs1RDtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBeDZEO09BQUFsUjtPQUFBcTlDO09BQUFDO09BQUErdEI7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQXBYO09BQUFDO09BQUFGOztPQUFBcGdCOzs7Ozs7Ozs7T0FyQm5DcDRDO09BaERBRTtPQVdBa3hHO09BdUJBbi9CO09Bc0ROQztPQUtBdEM7T0FXQXloQztPQVlBN1M7T0FFQStTO09BS0FHO09BckNBbmhDO09BTkEwL0I7T0FDQUM7OztTQTNGRTN2RztTQUFBRztTQUFBSztTQUFBRDtTQUFLUjtTQUFMc0Q7U0FBQUM7U0FBQUM7OztTQUFBQztTQUFBQztTQUFBQzs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUM2Ym1CZDtJQU5SSDtJQS9EQ0g7O0lBL0xVdko7O0lBckx4QnkwQzs7Ozs7Ozs7Ozs7Ozs7O0dBTkY7SUFBQWhxQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBQUF2RSxpQkFBQSx5QkFHNkI7R0FKaEI7SUFBQSxZQUNidUUsU0FBQXZFO0lBaU5PbXlHLFlBMU1PO0lBQ1pDLFlBQVk7SUFDWkMsZUFBZTtJQUNmQyxnQkFBZ0I7SUFDaEJDLGVBQWUsMkNBRGZEO1lBR0lFLHlCQUF5Qnp0RjtJQUMvQixHQUFHLDRCQUQ0QkEsR0FMN0JxdEYsWUFPRztJQUNTO1lBSFJJLHlCQUdrQywyQkFIVHp0RixHQUw3QnF0RjtJQVFZLE9BQUE7R0FBb0Q7R0FHcEMsSUFBNUJLLDRCQU5JRDtZQVFBRSxlQUFnQkM7SUFDdEIsZUFEc0JBOzs7O1FBRWYsT0FBQTs7UUFDQSxPQUFBOztRQUNBLE9BQUE7O1FBQ0EsT0FBQTs7UUFDQSxPQUFBOztRQUNBLE9BQUE7O1FBQ0EsT0FBQTs7UUFDQSxPQUFBO2dCQUNBLE9BQUE7O0lBRUYsR0FBQSw0QkFaaUJBLFFBRnBCRjtLQWVLO0lBRXVCO0tBQUEsT0FmeEJDLGVBQWdCQztLQWVkQyxXQUFXO0tBQ0osT0FBQSwyQkEzQmJOLGVBMEJNTTtJQUNPLE9BQUE7R0FBcUM7WUFLaERDLGNBQWMvb0MsUUFBTyxPQUFBLDBCQUFQQSxRQUE4QjtZQUU1Q2dwQyxrQkFBa0JsZ0IsT0FBT3p4RixLQUFJd25HO0lBSGdCLFdBQUEsK0JBR2hCQTtrQ0FBWC9WLE9BQU96eEYsS0FIb0I7O0dBSU07WUFHbkQ0eEcsMkJBQTJCbmdCLE9BQU96eEYsS0FBSXduRztJQUN4QyxJQUFJcUssT0FEb0NySyxnQkFFcENzSyxPQUZvQ3RLLFNBQ3BDcUs7SUFMRkYsa0JBSTJCbGdCLE9BQU96eEYsS0FFaEM4eEc7SUFDSixPQUZJRDtHQUdBO1lBR0ZFLGtCQUFrQnRnQixPQUFPenhGLEtBQUl3bkc7SUFDcEIsSUFBUHFLLE9BUkZELDJCQU9rQm5nQixPQUFPenhGLGFBQUl3bkc7SUFFL0IsT0FiRW1LLGtCQVdrQmxnQixPQUFPenhGLEtBQ3ZCNnhHO0dBQzZCO1lBRy9CRyxrQkFBa0J2Z0IsT0FBT3p4RixLQUFJd25HO0lBQ3BCLElBQVBxSyxPQWJGRCwyQkFZa0JuZ0IsT0FBT3p4RixhQUFJd25HO0lBRS9CLE9BUEV1SyxrQkFLa0J0Z0IsT0FBT3p4RixLQUN2QjZ4RztHQUM2QjtZQUcvQkksa0JBQWtCeGdCLE9BQU96eEYsS0FBSXduRztJQUNwQixJQUFQcUssT0FsQkZELDJCQWlCa0JuZ0IsT0FBT3p4RixhQUFJd25HO0lBRS9CLE9BUEV3SyxrQkFLa0J2Z0IsT0FBT3p4RixLQUN2QjZ4RztHQUM2QjtZQUcvQkssa0JBQWtCemdCLE9BQU96eEYsS0FBSXduRztJQUNwQixJQUFQcUssT0F2QkZELDJCQXNCa0JuZ0IsT0FBT3p4RixhQUFJd25HO0lBRS9CLE9BUEV5SyxrQkFLa0J4Z0IsT0FBT3p4RixLQUN2QjZ4RztHQUM2QjtZQUcvQk0sa0JBQWtCMWdCLE9BQU96eEYsS0FBSXduRztJQUNwQixJQUFQcUssT0E1QkZELDJCQTJCa0JuZ0IsT0FBT3p4RixhQUFJd25HO0lBRS9CLE9BUEUwSyxrQkFLa0J6Z0IsT0FBT3p4RixLQUN2QjZ4RztHQUM2QjtZQUcvQk8sa0JBQWtCM2dCLE9BQU96eEYsS0FBSXduRztJQUNwQixJQUFQcUssT0FqQ0ZELDJCQWdDa0JuZ0IsT0FBT3p4RixhQUFJd25HO0lBRS9CLE9BUEUySyxrQkFLa0IxZ0IsT0FBT3p4RixLQUN2QjZ4RztHQUM2QjtZQUcvQlEsa0JBQWtCNWdCLE9BQU96eEYsS0FBSXduRztJQUNwQixJQUFQcUssT0F0Q0ZELDJCQXFDa0JuZ0IsT0FBT3p4RixhQUFJd25HO0lBRS9CLE9BUEU0SyxrQkFLa0IzZ0IsT0FBT3p4RixLQUN2QjZ4RztHQUM2QjtZQUcvQlMsa0JBQWtCN2dCLE9BQU96eEYsS0FBSXduRztJQUNwQixJQUFQcUssT0EzQ0ZELDJCQTBDa0JuZ0IsT0FBT3p4RixhQUFJd25HO0lBRS9CLE9BUEU2SyxrQkFLa0I1Z0IsT0FBT3p4RixLQUN2QjZ4RztHQUM2QjtZQTZCL0JVLGlCQUFpQm5vRSxRQUFRcHFDO0lBQU0sT0EvRS9CMHhHLHFDQStFaUJ0bkUsUUFBUXBxQztHQUFrRDtZQUUzRXd5RyxpQkFBaUJwb0UsUUFBUXBxQztJQUNXLFdBSHBDdXlHLGlCQUVpQm5vRSxRQUFRcHFDO1lBRnpCdXlHLGlCQUVpQm5vRSxRQUFRcHFDO0dBQ2lEO1lBRzFFeXlHLGlCQUFpQnJvRSxRQUFRcHFDO0lBQ1csVUFQcEN1eUcsaUJBTWlCbm9FLFFBQVFwcUM7WUFKekJ3eUcsaUJBSWlCcG9FLFFBQVFwcUM7R0FDaUQ7WUFHMUUweUcsaUJBQWlCdG9FLFFBQVFwcUM7SUFDVyxVQVhwQ3V5RyxpQkFVaUJub0UsUUFBUXBxQztZQUp6Qnl5RyxpQkFJaUJyb0UsUUFBUXBxQztHQUNpRDtZQUcxRTJ5RyxpQkFBaUJ2b0UsUUFBUXBxQztJQUNXLFVBZnBDdXlHLGlCQWNpQm5vRSxRQUFRcHFDO1lBSnpCMHlHLGlCQUlpQnRvRSxRQUFRcHFDO0dBQ2lEO1lBRzFFNHlHLGlCQUFpQnhvRSxRQUFRcHFDO0lBQ1csVUFuQnBDdXlHLGlCQWtCaUJub0UsUUFBUXBxQztZQUp6QjJ5RyxpQkFJaUJ2b0UsUUFBUXBxQztHQUNpRDtZQUcxRTZ5RyxpQkFBaUJ6b0UsUUFBUXBxQztJQUNXLFVBdkJwQ3V5RyxpQkFzQmlCbm9FLFFBQVFwcUM7WUFKekI0eUcsaUJBSWlCeG9FLFFBQVFwcUM7R0FDaUQ7WUFHMUU4eUcsaUJBQWlCMW9FLFFBQVFwcUM7SUFDVyxVQTNCcEN1eUcsaUJBMEJpQm5vRSxRQUFRcHFDO1lBSnpCNnlHLGlCQUlpQnpvRSxRQUFRcHFDO0dBQ2lEO1lBRzFFK3lHLGlCQUFpQjNvRSxRQUFRcHFDO0lBQ1csVUEvQnBDdXlHLGlCQThCaUJub0UsUUFBUXBxQztZQUp6Qjh5RyxpQkFJaUIxb0UsUUFBUXBxQztHQUNpRDtZQUcxRWd6RyxxQkFBcUJyNkc7SUFDdkIsT0FBQSx3Q0F0SkF5MEMsYUFxSnVCejBDO0dBQ3lDO1lBRzFEczZHLFdBQVc3b0UsUUFBUXBxQyxLQUFLd3hHO0lBQzlCLGVBRDhCQTs7OztRQUVWLFVBeENsQmUsaUJBc0Nlbm9FLFFBQVFwcUM7UUFFTCxPQUFBOztRQUNBLFVBdkNsQnd5RyxpQkFvQ2Vwb0UsUUFBUXBxQztRQUdMLE9BQUE7O1FBQ0EsVUFwQ2xCeXlHLGlCQWdDZXJvRSxRQUFRcHFDO1FBSUwsT0FBQTs7UUFDQSxVQWpDbEIweUcsaUJBNEJldG9FLFFBQVFwcUM7UUFLTCxPQUFBOztRQUNBLFVBOUJsQjJ5RyxpQkF3QmV2b0UsUUFBUXBxQztRQU1MLE9BQUE7O1FBQ0EsVUEzQmxCNHlHLGlCQW9CZXhvRSxRQUFRcHFDO1FBT0wsT0FBQTs7UUFDQSxVQXhCbEI2eUcsaUJBZ0Jlem9FLFFBQVFwcUM7UUFRTCxPQUFBOztRQUNBLFVBckJsQjh5RyxpQkFZZTFvRSxRQUFRcHFDO1FBU0wsT0FBQTs7UUFDQSxVQWxCbEIreUcsaUJBUWUzb0UsUUFBUXBxQztRQVVMLE9BQUE7O0lBRWxCO0tBQUlrekcscUJBWndCMUI7S0FheEJDLFdBYkF3QixXQUFXN29FLFFBQVFwcUMsS0FZbkJrekc7S0FHVyxNQXZCZkgsaUJBUWUzb0UsUUFBUXBxQyxNQVluQmt6RztLQUVBQyxZQUNGO0lBRUMsR0FBQSw0QkFKQzFCLFVBaktOTDtLQWdKRTRCO0lBc0JzQjtLQUFBLE1BQUEsMkJBTGxCdkIsVUFsS05OO0tBdUtNajRGLE1BQU0sZ0NBSk5pNkY7SUFLRCxHQUFBLDRCQURDajZGO0tBdEJKODVGO0lBdUJtQyxPQUQvQjk1RjtHQUVEO1lBR0hrNkYsb0JBQXFCQyxXQUFXQztJQUNsQzs7S0FDQyxNQUFBLDhCQUZzQkQsV0FBV0M7S0FFbEMsTUFBQTtJQURBLE9BQUEsb0NBRGtDQTtHQUVrQjtHQWtIeEM7SUFEWkM7SUFDQUMsWUFBWSwyQ0FqU1p0QztZQXVWQXVDLGFBQWE5NkcsTUFBTTY0RztJQUFZLFVBQUEsNEJBQVpBO0lBQVk7Y0EvQ2pDOzRDQTNTRXBrRSxhQTBWYXowQyxNQUFNNjRHOztHQUFrRTtZQUVyRmtDLFVBQVUvNkcsTUFBTXVkLEtBQUtsVyxLQUFLd3hHO0lBQzVCO0tBQUcsTUFBQSw0QkFEb0J4eEc7S0FDcEIsYUFBVyw0QkFEU0EsTUFBS3d4RyxZQUFWdDdGO0lBQ0osVUFBWDtJQW5DVzs7TUFBWCw0QkFrQ29CbFc7V0FsQ1QsNEJBa0NTQSxLQUFMa1c7S0F4QmhCLE9BQUE7OztjQXBVQWszQjtjQTRWVXowQztjQUFnQjY0RztjQUFMeHhHO2NBQUxrVzs7SUFoQ2hCLE9BQUE7MENBNVRBazNCLGFBNFZVejBDLE1BQVdxSCxLQUFMa1c7R0FDa0U7WUFpQmxGeTlGLFlBQVloN0csTUFBTTg0RixPQUFPenhGLEtBQUt3eEcsUUFBUWp3RCxLQUFJaW1EO0lBQzVDLElBQUl0eEYsMkJBRGdCdTdFO0lBbEJsQmlpQixVQWtCWS82RyxNQUNWdWQsS0FEdUJsVyxLQUFLd3hHO0lBYjdCO0tBQUEsTUFBQSw0QkFheUNoSztLQWJ6QyxhQUFXLDRCQWE4QkEsT0FBSmptRDtJQWIxQjtjQWxCZDs0Q0EvVUVuVSxhQThXWXowQyxNQUE4QjZ1RyxPQUFKam1EOztHQUdqQjtZQVdyQnF5RCxvQkFBa0JuaUIsT0FBT3p4RixLQUFJd25HO0lBZDdCbU0sbUNBY2tCbGlCLE9BQU96eEYsV0FBSXduRztJQUMvQixPQXZWSW1LLGtCQXNWZ0JsZ0IsT0FBT3p4RixLQUFJd25HO0dBRVE7WUFHckNxTSxvQkFBa0JwaUIsT0FBT3p4RixLQUFJd25HO0lBbkI3Qm1NLG1DQW1Ca0JsaUIsT0FBT3p4RixZQUFJd25HO0lBQy9CLE9BalZJdUssa0JBZ1ZnQnRnQixPQUFPenhGLEtBQUl3bkc7R0FFUTtZQUdyQ3NNLG9CQUFrQnJpQixPQUFPenhGLEtBQUl3bkc7SUF4QjdCbU0sbUNBd0JrQmxpQixPQUFPenhGLGFBQUl3bkc7SUFDL0IsT0FqVkl3SyxrQkFnVmdCdmdCLE9BQU96eEYsS0FBSXduRztHQUVRO1lBR3JDdU0sb0JBQWtCdGlCLE9BQU96eEYsS0FBSXduRztJQTdCN0JtTSxtQ0E2QmtCbGlCLE9BQU96eEYsY0FBSXduRztJQUMvQixPQWpWSXlLLGtCQWdWZ0J4Z0IsT0FBT3p4RixLQUFJd25HO0dBRVE7WUFHckN3TSxvQkFBa0J2aUIsT0FBT3p4RixLQUFJd25HO0lBbEM3Qm1NLG1DQWtDa0JsaUIsT0FBT3p4RixlQUFJd25HO0lBQy9CLE9BalZJMEssa0JBZ1ZnQnpnQixPQUFPenhGLEtBQUl3bkc7R0FFUTtZQUdyQ3lNLG9CQUFrQnhpQixPQUFPenhGLEtBQUl3bkc7SUF2QzdCbU0sbUNBdUNrQmxpQixPQUFPenhGLGdCQUFJd25HO0lBQy9CLE9BalZJMkssa0JBZ1ZnQjFnQixPQUFPenhGLEtBQUl3bkc7R0FFUTtZQUdyQzBNLG9CQUFrQnppQixPQUFPenhGLEtBQUl3bkc7SUE1QzdCbU0sbUNBNENrQmxpQixPQUFPenhGLGlCQUFJd25HO0lBQy9CLE9BalZJNEssa0JBZ1ZnQjNnQixPQUFPenhGLEtBQUl3bkc7R0FFUTtZQUdyQzJNLG9CQUFrQjFpQixPQUFPenhGLEtBQUl3bkc7SUFqRDdCbU0sbUNBaURrQmxpQixPQUFPenhGLGtCQUFJd25HO0lBQy9CLE9BalZJNkssa0JBZ1ZnQjVnQixPQUFPenhGLEtBQUl3bkc7R0FFUTtZQUdyQzRNLG9CQUFrQjNpQixPQUFPenhGLEtBQUl3bkc7SUF0RDdCbU0sbUNBc0RrQmxpQixPQUFPenhGLG1CQUFJd25HO0lBQy9CLE9BalZJOEssa0JBZ1ZnQjdnQixPQUFPenhGLEtBQUl3bkc7R0FFUTtZQUdyQzZNLFlBQVk1aUIsT0FBT3h4RixPQUFLcTBHLFVBQU9DO0lBL0UvQmQsYUEwQmN2eEcsUUFxRFVveUc7SUFuRGhCLElBbEJVL3lELE1BclZkZ3dELGVBMFpvQitDLFdBbER0QnArRixNQUFKLHFCQWtEY3U3RTtJQTdFWmlpQixVQXdCY3h4RyxRQUdaZ1UsS0FrRGlCalcsT0FBS3EwRztJQXBFdkI7S0FBQSxNQUFBLDRCQW9FOEJDO0tBcEU5QixhQUFnQyw0QkFvRUZBLFNBckViaHpEO0lBQ2U7S0FsQm5DO01BQUE7Ozs7OzswQkFBY2l6RDtXQUFBLE9BQUEsNEJBQUFBO1VBQTRDOzs7Ozs7Ozs7Ozs7Ozs4QkFBNUNDO2VBQUEsT0FBQSw0QkFBQUE7Y0FBNEM7OztLQUExRDtvQ0FuVkVybkUsYUFvWGNsckMsUUFxRGlCcXlHLFNBckViaHpEOztRQXBRWWl3RCxTQXlVTjhDLFVBelVhSSxRQXlVTkg7SUF4VS9CO0tBQUEsZUFEOEIvQzs7S0FZNUI7TUFaNEIwQixxQkFBQTFCO01BUGV4eEcsTUFnVjFCQyxRQXpVV2l6RztNQUFPekIsV0FOdEIsMkJBTXNCaUQsT0E1RnJDdkQ7TUF1RmtDLE1BQUEsMkJBS0dNLFVBNUZyQ047TUF1RklnQyxZQUFZLDJCQUtxQnVCO0tBWm5DcEMsa0JBcVZVN2dCLE9BaFZpQ3p4RixLQUdoQiwwQkFEekJtekc7U0FLMEIzQixTQUFBMEIsb0JBQU93QixRQUFBakQ7Ozs7T0FFRCxPQTVEbENFO2dCQW1ZVWxnQixPQUFPeHhGLE9BdlVpQiwwQkFGQ3kwRzs7T0FHRCxPQWxEbEMzQztnQkF3WFV0Z0IsT0FBT3h4RixPQXRVaUIsMEJBSEN5MEc7O09BSUQsT0E5Q2xDMUM7Z0JBbVhVdmdCLE9BQU94eEYsT0FyVWlCLDBCQUpDeTBHOztPQUtELE9BMUNsQ3pDO2dCQThXVXhnQixPQUFPeHhGLE9BcFVpQiwwQkFMQ3kwRzs7T0FNRCxPQXRDbEN4QztnQkF5V1V6Z0IsT0FBT3h4RixPQW5VaUIsMEJBTkN5MEc7O09BT0QsT0FsQ2xDdkM7Z0JBb1dVMWdCLE9BQU94eEYsT0FsVWlCLDBCQVBDeTBHOztPQVFELE9BOUJsQ3RDO2dCQStWVTNnQixPQUFPeHhGLE9BalVpQiwwQkFSQ3kwRzs7T0FTRCxPQTFCbENyQztnQkEwVlU1Z0IsT0FBT3h4RixPQWhVaUIsMEJBVEN5MEc7O09BVUQsT0F0QmxDcEM7Z0JBcVZVN2dCLE9BQU94eEYsT0EvVGlCLDBCQVZDeTBHOztHQTJVSTtZQUd6Q0MsV0FBV2g4RyxNQUFNeXhDLFFBQVFwcUMsS0FBS3d4RztJQUNoQyxJQUFJdDdGLDRCQURlazBCO0lBRW5CLE9BcEZFc3BFLFVBa0ZXLzZHLE1BQ1R1ZCxLQUR1QmxXLEtBQUt3eEc7R0FFQTtZQWdCOUJvRCxtQkFBaUJ4cUUsUUFBUXBxQztJQWxCekIyMEcsaUNBa0JpQnZxRSxRQUFRcHFDO0lBQzNCLE9BOVVJdXlHLGlCQTZVZW5vRSxRQUFRcHFDO0dBRVE7WUFHakM2MEcsbUJBQWlCenFFLFFBQVFwcUM7SUF2QnpCMjBHLGlDQXVCaUJ2cUUsUUFBUXBxQztJQUMzQixPQWpWSXd5RyxpQkFnVmVwb0UsUUFBUXBxQztHQUVRO1lBR2pDODBHLG1CQUFpQjFxRSxRQUFRcHFDO0lBNUJ6QjIwRyxpQ0E0QmlCdnFFLFFBQVFwcUM7SUFDM0IsT0FsVkl5eUcsaUJBaVZlcm9FLFFBQVFwcUM7R0FFUTtZQUdqQyswRyxtQkFBaUIzcUUsUUFBUXBxQztJQWpDekIyMEcsaUNBaUNpQnZxRSxRQUFRcHFDO0lBQzNCLE9BblZJMHlHLGlCQWtWZXRvRSxRQUFRcHFDO0dBRVE7WUFHakNnMUcsbUJBQWlCNXFFLFFBQVFwcUM7SUF0Q3pCMjBHLGlDQXNDaUJ2cUUsUUFBUXBxQztJQUMzQixPQXBWSTJ5RyxpQkFtVmV2b0UsUUFBUXBxQztHQUVRO1lBR2pDaTFHLG1CQUFpQjdxRSxRQUFRcHFDO0lBM0N6QjIwRyxpQ0EyQ2lCdnFFLFFBQVFwcUM7SUFDM0IsT0FyVkk0eUcsaUJBb1ZleG9FLFFBQVFwcUM7R0FFUTtZQUdqQ2sxRyxtQkFBaUI5cUUsUUFBUXBxQztJQWhEekIyMEcsaUNBZ0RpQnZxRSxRQUFRcHFDO0lBQzNCLE9BdFZJNnlHLGlCQXFWZXpvRSxRQUFRcHFDO0dBRVE7WUFHakNtMUcsbUJBQWlCL3FFLFFBQVFwcUM7SUFyRHpCMjBHLGlDQXFEaUJ2cUUsUUFBUXBxQztJQUMzQixPQXZWSTh5RyxpQkFzVmUxb0UsUUFBUXBxQztHQUVRO1lBR2pDbzFHLG1CQUFpQmhyRSxRQUFRcHFDO0lBMUR6QjIwRyxpQ0EwRGlCdnFFLFFBQVFwcUM7SUFDM0IsT0F4VkkreUcsaUJBdVZlM29FLFFBQVFwcUM7R0FFUTtZQUdqQ3ExRyxhQUFXanJFLFFBQVFwcUMsS0FBS3d4RztJQW5KeEJpQyxhQXlGYXB4RyxRQTBEV212RztRQXhEdEJ0N0YsNEJBd0RTazBCO0lBakpYc3BFLFVBdUZhcnhHLFFBRVg2VCxLQXdEaUJsVyxLQUFLd3hHO0lBQzFCLE9BclZReUIsV0FvVks3b0UsUUFBUXBxQyxLQUFLd3hHO0dBRVc7WUFHbkM4RDtJQUFtQmxyRSxRQUFRcjBCLE9BQUt3L0YsVUFBVUMsU0FBT0MsYUFBWUM7SUFDL0QsSUF6REl4L0YsNEJBd0RpQmswQjtJQTNKbEIsR0FBQSw0QkEySitCbXJFO0tBM01sQyx3Q0F2U0Vub0UsYUF5YnFCNXFDLFFBeURXK3lHO0lBeEkvQjtLQUFBLE1BQUEsNEJBd0l5Q0MsU0EvTTFDakM7S0F1RUMsYUFBK0IsNEJBd0lVaUMsU0E5TTFDaEM7SUFzRWdDO0tBckRoQztNQUFBLE1BQUEsMkJBakJBQTtNQWdCQSxNQUFBLDJCQWpCQUQ7TUFnQkEsTUFBQSwyQkErTDBDaUM7S0FuTTVDO29DQS9TRXBvRSxhQXlicUI1cUM7O0lBN0ZyQmt4RyxVQTZGcUJseEcsUUFDbkIwVCxLQXdEeUJILE9BQUt3L0Y7SUF2TnZCO0tBL0VKSTtLQUZBQyxRQWlGSSwyQkF1TmlDSixTQXZTckN4RTtLQU1Eem9DLFFBaVN1Qnh5RCxRQUFLdy9GO0tBMVI1Qk0sY0FiQzdFO0tBY0Q4RSxlQWJDSDtLQWNEejhGO0tBQ0FsWixVQXVSdUIrVjs7S0FyUkk7T0FBekIseUJBRkYvVixRQVZBdW9FO1VBWTJCLCtCQUozQnV0QyxhQWZDRjtVQXFCQWp0QyxnQ0FtUmN2K0IsUUF2UmZwcUM7OztnQkFJQzJvRTtrQkFBQUEsVUFtUndEK3NDOztxQkFuUnhEL3NDO1FBQ3lCO1NBQUEsTUE1TDVCK29DLGNBMkxHL29DO1NBQ0lvdEMsUUFBUTtRQVJiRixhQWlCWSw4QkFqQlpBLFlBdE5KNUU7UUF1Tkk2RSxjQWlCYSw4QkFqQmJBLGFBdk5KN0U7UUF1UHFCO2VBaENqQjZFO1NBZ0NpQixNQUFBLDhCQXpCWkMsT0F0QkpIO1NBK0NJdkMsWUFBWTtTQUNaQyxjQWxDTHVDO1NBbUNLRyxZQTNFUDVDLG9CQXlFT0MsV0FDQUM7U0FFd0IsTUFBQSw4QkFEeEIwQyxXQURBMUM7U0FFQUgsWUFBWSw4QkFIWkU7UUFoQ0x5QyxjQXlDYSw4QkFOUjNDO1FBbENMajZGLFNBeUNRLDhCQXpDUkEsUUFpQ0s4OEY7UUFuQ0xILGFBaURZLDRCQWZQdkMsYUFoREpzQzs7O09BcEJMLHdDQXRMQXhvRSxhQXFMd0J6MEM7O01Bc0NwQnFILFNBaURLLHlCQWpETEE7Ozs7T0FtREQsOEJBckRDODFHO1lBeVI2Q0w7TUF4UjdDdjhGLFNBd0R5Qyw4QkF4RHpDQTtZQUFBQTs7R0EwUjhFOzs7Ozs7OztPQTNFbEZtN0Y7T0E3Q0FUO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BeUVBaUI7T0E3Q0FUO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDO09BS0FDOztPQVVBRTtPQW5lSS9EO1dBaUtGNkI7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDdkxGcGhDO0lBQUFpa0M7Ozs7Ozs7Ozs7Ozs7O0lBMEVFcm1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ExRUYsU0F5R0FweEUsVUF6R0EwbkI7SUFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBQUE7O2dCQUFBOztlQUFBOztjQUFBOzthQUFBOztZQUFBOztXQUFBOztVQUFBOztTQUFBOztRQUFBOztPQUFBOztNQUFBOztnQkFBQUE7O01BQUEsT0FBQTs0Q0FBQThyRCxrQkFBQTlyRDs7O01BQUEsT0FBQTs0Q0FBQThyRCxrQkFBQTlyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFBQSxPQUFBO3NEQUFBOHJELGtCQUFBOXJEOztlQUFBLE9BQUE7cURBQUE4ckQsa0JBQUE5ckQ7O2NBQUEsT0FBQTtvREFBQThyRCxrQkFBQTlyRDs7YUFBQSxPQUFBO21EQUFBOHJELGtCQUFBOXJEOztZQUFBLE9BQUE7a0RBQUE4ckQsa0JBQUE5ckQ7O1dBQUEsT0FBQTtpREFBQThyRCxrQkFBQTlyRDs7VUFBQSxPQUFBO2dEQUFBOHJELGtCQUFBOXJEOztTQUFBLE9BQUE7K0NBQUE4ckQsa0JBQUE5ckQ7O1FBQUEsT0FBQTs4Q0FBQThyRCxrQkFBQTlyRDs7T0FBQSxPQUFBOzZDQUFBOHJELGtCQUFBOXJEOztNQUFBLE9BQUE7NENBQUE4ckQsa0JBQUE5ckQ7O0tBQUEsT0FBQTsyQ0FBQThyRCxrQkFBQTlyRDs7SUFBQSxPQUFBLHdDQUFBOHJELGtCQUFBOXJEO0dBYTZEO1lBMkY3RHJuQjtJQXhHQTs7T0FDRTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTtlQUNBOztHQUMyRDtPQWI3RHVFO1lBQUErUixrQjtZQUFBOVIsWUFBQWxJLEtBQUFDO0ksT0FBQUE7O09BQ0UsT0FBQSx5QkFERkQ7O09BRUUsT0FBQSx5QkFGRkE7O09BR0UsT0FBQSx5QkFIRkE7O09BSUUsT0FBQSx5QkFKRkE7O09BS0UsT0FBQSx5QkFMRkE7O09BTUUsT0FBQSx5QkFORkE7O09BT0UsT0FBQSx5QkFQRkE7O09BUUUsT0FBQSx5QkFSRkE7O09BU0UsT0FBQSx5QkFURkE7O09BVUUsT0FBQSx5QkFWRkE7O09BV0UsT0FBQSx5QkFYRkE7ZUFZRSxPQUFBLHlCQVpGQTs7O0dBQUEsU0FBQW1JLEtBQUFsSTtJQUFBLElBQUFELDhDQUFBa0ksWUFBQWxJLEtBQUFDOztHQWE2RDs7Z0JBRDNEODZHLFVBQUFDLFk7R0FaRjs7Z0JBV0VDLFVBQUFDLFk7R0FYRjs7Z0JBVUVDLFVBQUFDLFk7R0FWRjs7Z0JBU0U1a0YsVUFBQTZrRixZO0dBVEY7O2dCQVFFQyxVQUFBQyxZO0dBUkY7O2dCQU9FQyxVQUFBQyxZO0dBUEY7O2dCQU1FQyxVQUFBQyxZO0dBTkY7O2dCQUtFQyxVQUFBQyxZO0dBTEY7O2dCQUlFeEgsVUFBQUMsWTtHQUpGOztnQkFHRS8vRSxVQUFBQyxZO0dBSEY7O2dCQUVFQyxVQUFBQyxZO0dBRkY7O2dCQUNFNi9FLFVBQUFDLFk7R0FERjtJQUFBO0lBQUs3M0YsdUJBQUw7Z0JBQUErRyxPQUFBK3dGLFVBQUFxSDtJQUFBLE9BQUFwNEY7O09BQUEsSUFBQXE0RixhQUFBLHNCQUFBRCxxQkFBQUM7O09BQUEsSUFBQUMsYUFBQSxzQkFBQUYscUJBQUFFOztPQUFBLElBQUFDLGFBQUEsc0JBQUFILHFCQUFBRzs7T0FBQSxJQUFBQyxhQUFBLHNCQUFBSixxQkFBQUk7O09BQUEsSUFBQUMsYUFBQSxzQkFBQUwscUJBQUFLOztPQUFBLElBQUFDLGFBQUEsc0JBQUFOLHFCQUFBTTs7T0FBQSxJQUFBQyxhQUFBLHNCQUFBUCxxQkFBQU87O09BQUEsSUFBQUMsYUFBQSxzQkFBQVIscUJBQUFROztPQUFBLElBQUFDLGFBQUEsc0JBQUFULHFCQUFBUzs7T0FBQSxJQUFBQyxhQUFBLHNCQUFBVixxQkFBQVU7O09BQUEsSUFBQUMsY0FBQSxzQkFBQVg7Y0FBQVc7O09BQUEsSUFBQUMsY0FBQSxzQkFBQVo7Y0FBQVk7O0dBYTZEO0dBYjdELElBQUs3L0Ysc0JBQUw7O0lBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FhNkQ7R0FiN0Q7SUFBS0Usc0JBQUw7SUFBQTQvRjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztZQUFBQyxjQUFBLHFCQWE2RDtZQWI3REMsY0FBQSwyQkFhNkQ7WUFiN0RDLGNBQUEsMkJBYTZEO1lBYjdEQyxjQUFBLDJCQWE2RDtZQWI3REMsY0FBQSwyQkFhNkQ7WUFiN0RDLGNBQUEsMkJBYTZEO1lBYjdEQyxjQUFBLDJCQWE2RDtZQWI3REMsY0FBQSwyQkFhNkQ7WUFiN0RDLGNBQUEsMkJBYTZEO1lBYjdEQyxjQUFBLDJCQWE2RDtZQWI3REMsY0FBQSw0QkFhNkQ7WUFiN0RDLGNBQUEsMkJBYTZEO1lBYjdEQyxlQUFBLHVCQWE2RDtZQWI3REMsZUFBQSw2QkFhNkQ7WUFiN0RDLGVBQUEsNkJBYTZEO1lBYjdEQyxlQUFBLDZCQWE2RDtZQWI3REMsZUFBQSw2QkFhNkQ7WUFiN0RDLGVBQUEsNkJBYTZEO1lBYjdEQyxlQUFBLDZCQWE2RDtZQWI3REMsZUFBQSw2QkFhNkQ7WUFiN0RDLGVBQUEsNkJBYTZEO1lBYjdEQyxlQUFBLDZCQWE2RDtZQWI3REMsZUFBQSw4QkFhNkQ7WUFiN0RDLGVBQUEsNkJBYTZEO0dBYjdEO0lBQUFDLHdCQUFBcEM7SUFBQXFDLHdCQUFBcEM7SUFBQXFDLHdCQUFBcEM7SUFBQXFDLHdCQUFBcEM7SUFBQXFDLHdCQUFBcEM7SUFBQXFDLHdCQUFBcEM7SUFBQXFDLHdCQUFBcEM7SUFBQXFDLHdCQUFBcEM7SUFBQXFDLHdCQUFBcEM7SUFBQXFDLHdCQUFBcEM7SUFBQXFDLHlCQUFBcEM7SUFBQXFDLHlCQUFBcEM7WUFBQTcvRjtJQUFBZTtJQUFBbWhHO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUEsT0FBQTthQUFBQTthQUFBO2VBQUFEO2VBQUE7aUJBQUFEO2lCQUFBO21CQUFBRDttQkFBQTtxQkFBQUQ7cUJBQUE7dUJBQUFEO3VCQUFBO3lCQUFBRDt5QkFBQTsyQkFBQUQ7MkJBQUE7NkJBQUFEOzZCQUFBOytCQUFBRDsrQkFBQSxXQUFBRCxTQUFBLFdBQUFELFNBQUFuaEcsTUFBQXVnRyxRQUFBQzsrQkFBQUM7NkJBQUFDOzJCQUFBQzt5QkFBQUM7dUJBQUFDO3FCQUFBQzttQkFBQUM7aUJBQUFDO2VBQUFDO2FBQUFDO0dBYTZEO1lBYjdEbGlHO0lBQUFtaUc7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQSxXQUFBWCxTQUFBWjtJQUFBLFdBQUFhLFNBQUFaO0lBQUEsV0FBQWEsU0FBQVo7SUFBQSxXQUFBYSxTQUFBWjtJQUFBLFdBQUFhLFNBQUFaO0lBQUEsV0FBQWEsU0FBQVo7SUFBQSxXQUFBYSxTQUFBWjtJQUFBLFdBQUFhLFNBQUFaO0lBQUEsV0FBQWEsU0FBQVo7SUFBQSxXQUFBYSxTQUFBWjtJQUFBLFdBQUFhLFNBQUFaO0lBQUEsT0FBQSxXQUFBYSxTQUFBWjtHQWE2RDtZQWI3RC9sRztJQUFBaFc7SUFBQWc4RztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBLE9BQUEzOEc7O09BQUEsT0FBQSxXQUFBZzhHLFNBQUFaOztPQUFBLE9BQUEsV0FBQWEsU0FBQVo7O09BQUEsT0FBQSxXQUFBYSxTQUFBWjs7T0FBQSxPQUFBLFdBQUFhLFNBQUFaOztPQUFBLE9BQUEsV0FBQWEsU0FBQVo7O09BQUEsT0FBQSxXQUFBYSxTQUFBWjs7T0FBQSxPQUFBLFdBQUFhLFNBQUFaOztPQUFBLE9BQUEsV0FBQWEsU0FBQVo7O09BQUEsT0FBQSxXQUFBYSxTQUFBWjs7T0FBQSxPQUFBLFdBQUFhLFNBQUFaOztPQUFBLE9BQUEsV0FBQWEsU0FBQVo7ZUFBQSxPQUFBLFdBQUFhLFNBQUFaOztHQWE2RDtZQWI3RGE7SUFBQVo7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTUyRjtJQUFBO0tBQUEsUUFBQSxXQUFBaTJGLFNBQUFaLE9BQUFyMUY7S0FBQUM7S0FBQTYyRjtLQUFBLFVBQUEsV0FBQVosU0FBQVosT0FBQXIxRjtLQUFBRTtLQUFBNDJGO0tBQUEsVUFBQSxXQUFBWixTQUFBWixPQUFBcDFGO0tBQUFFO0tBQUEyMkY7S0FBQSxVQUFBLFdBQUFaLFNBQUFaLE9BQUFuMUY7S0FBQUU7S0FBQTAyRjtLQUFBLFVBQUEsV0FBQVosU0FBQVosT0FBQWwxRjtLQUFBMjJGO0tBQUFDO0tBQUEsVUFBQSxXQUFBYixTQUFBWixPQUFBd0I7S0FBQUU7S0FBQUM7S0FBQSxVQUFBLFdBQUFkLFNBQUFaLE9BQUF5QjtLQUFBRTtLQUFBQztLQUFBLFVBQUEsV0FBQWYsU0FBQVosT0FBQTBCO0tBQUFFO0tBQUFDO0tBQUEsVUFBQSxXQUFBaEIsU0FBQVosT0FBQTJCO0tBQUFFO0tBQUFDO0tBQUEsVUFBQSxXQUFBakIsU0FBQVosT0FBQTRCO0tBQUFFO0tBQUFDO0tBQUEsVUFBQSxXQUFBbEIsU0FBQVosT0FBQTZCO0tBQUFFO0tBQUFDO0tBQUEsV0FBQSxXQUFBbkIsU0FBQVosT0FBQThCO0tBQUFFO0tBQUFDO3lCQUFBLE9BQUEsV0FBQW5CLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFDLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFDLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFDLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFFLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFFLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFFLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFFLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFFLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFFLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFFLFlBYTZEO3lCQWI3RCxPQUFBLFdBQUFFLFlBYTZEO0lBYjdEOzthQUFBLE9BQUFob0c7Ozs7Ozs7Ozs7Ozs7OztZQUFBK25HOztZQUFBRTtJQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBO2VBQUE7O0dBYTZEO1lBYjdEQztJQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBOztPQUFBO2VBQUE7O0dBYTZEO0dBYjdEO0lBQUE7O09BQUE5QztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBamlHO09BQUFEO09BQUE3RDtPQUFBNG1HO09BQUFxQjtPQUFBQztPQUFBL0c7SUFlSXZyRztZQUVBNG1FLFdBQVcxN0Q7SUFDYixlQURhQTs0QkFjTixPQUFBLFdBaEJMbEwsZ0JBRVdrTDs7O09BRU47O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0M7O09BQ0E7ZUFDQTs7R0FDbUM7WUFHekMyN0QsT0FBTzM3RDtJQUNULElBQUksZUFsQkYwN0QsV0FpQk8xN0QsS0FDTCx5QkFDRztHQUFJO1lBdUNYcTVELE9BcENVbndFO0lBQ1YsT0FEVUE7O09BRUQ7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7ZUFDQTs7R0FBRTtZQVNIVSxXQUFXVixHQUFJLE9BY3ZCbXdFLE9BZG1CbndFLFdBQWdCO1lBQzNCVyxXQUFXbVcsR0FBSSxPQTdDckIwN0QsV0E2Q2lCMTdELFdBQXNCO0dBRzlCOzs7Ozs7Ozs7OztZQUpIcFcsWUFDQUM7Ozs7Ozs7OztJQUdHLFlBQUEsc0NBakViMkQsU0F3R0F2RTs7Ozs7O1NBeEdBd0U7Ozs7Ozs7OztTQXlHQTdFO1NBekdBNEU7U0F3R0F2RTtTQTdCRW93RTtJQVNGN3FFO0lBQUFDO0lBQUFvc0M7Ozs7SUFmQXdzRTtZQTBCSTM0RyxZQUFVN0Y7eUJBQ3FCLE9BQWpDLHlCQURZQSxNQUN1QztJQUE3QyxZQUFBO2dCQUVJLE9BT1pELFVBVmNDO1FBRUxtWDtJQUFLLE9BaEZWMDdELFdBZ0ZLMTdEO0dBQ21COzs7Ozs7Ozs7Ozs7OztTQUh4QnRSO1NBU0p6Rjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBRUFnL0YsTUFBTS8rRixHQUFFOFc7SUFBSSxZQS9CVnE1RCxPQStCSW53RSxjQUFFOFc7V0F6RkowN0QsZUF5RndCLCtCQXJDNUIyckM7R0FxQ29FO0dBSXBFO0lBRkFDOzs7c0JBRXFDNVU7U0FBMEIsV0FOL0R6cEcsVUFNcUN5cEc7U0FBMEIsT0FBQTtRQUFtQjtRQUFuRSxXQUFBLDBCQXBDYjE0QjtRQW9DYSxPQUFBOztZQUdmcndFLFVBQVdUO0lBQ2Isd0JBTkVvK0c7OztTQU1FQyxnQkFORkQ7OztVQU1FQyxnQkFORkQ7OztTQU1FQyxnREFORkQ7O0lBT1csV0F4Q1RqdUMsT0FzQ1Nud0U7SUFFYixnQ0FESXErRztHQUNzQjtHQU10QjtJQUZBdHRDOzs7UUFHYSxJQUFSQSxRQUFRLHVDQXJEZm90QztzQkFzRGdEcm5HLEdBQUVsWDtTQUNyQyxJQUFKSSxJQTNHTHd5RSxXQTBHNEMxN0Q7U0FFM0MsNkJBSEVpNkQsT0FDMkNueEUsR0FDekNJO1NBRW1CLFdBQUEsNEJBSHNCSjtTQUc3Qyw2QkFKRW14RSxhQUVFL3dFO1NBR21CLFdBQUEsNEJBSnNCSjtTQUc3QyxPQUFBLDZCQUpFbXhFLGFBRUUvd0U7UUFHK0M7Z0NBbkJ4RG8rRzs7O29CQUFBQTs7cURBQUFBO29EQUFBQTs7UUFlRztRQUFBLE9BRElydEM7O1lBSlB4d0UsVUFZRTZxQztJQUNGLHdCQVpFMmxDOzs7Z0JBQUFBOztpREFBQUE7Z0RBQUFBOztJQVlJLFlBQUEsbUNBREozbEM7Z0JBR1EsT0FBQSxXQXRITngvQixnQkFtSEZ3L0I7UUFFSzVxQztJQUFLLE9BQUxBO0dBQ3VDO0dBR2xDOzs7Ozs7Ozs7Ozs7Ozs7O09BeElQd1k7T0FBQUU7T0FBQUU7T0F5R0wxWjtPQURBSztPQXhHQWk1RztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0ZBNzFHO09BQUFDO09BQUFvc0M7Ozs7T0FrQ0FweEM7T0FMQUU7T0F2Q0Vxd0U7T0F4Q0UyQjtPQWpCQUQ7T0EwREZyQztPQStCRjR1Qjs7OztTQTFHQXg2RjtTQUFBQztTQUFBNlI7Ozs7Ozs7OztTQUFBL1I7U0F5R0E1RTtTQURBSzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7O0lDeEVJbEc7SUF1TUV5a0g7O0lBK0NKbDdHO0lBMERFa3JDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWhWSml3RSxhQUFjQztJQUFPO0tBQUMsT0FBQSxrQ0FBUkE7S0FBUTtrQkFBc0Isa0NBQTlCQTtJQUE4Qix1REFBOUJBO0dBQXFFO0dBZ0MvRTtJQXZCQW5vRztJQUFBOVI7SUF1QkF1STtHQUFBLFNBdkJBdEksS0F1QkFoRSxHQUFBLE9BQUEsV0FBQXNNLE1BQUF0TSxHQUVtRjtHQUZuRjtpRUFBQTNHO0lBdkJBeWY7SUF1QkFFO0lBdkJBRCx1QkF1QkFDO0lBQUEsTUFBQTtJQXZCQTNZLGNBdUJBLFdBQUE7WUFJSTQ5RyxRQUFTRCxNQUFNRSxPQUFPQztJQUV4QixPQUZXSCxhQUVRLDJCQUZGRSxjQUFPQztHQUU0QjtZQTFCdERILEtBNkJTeCtHLEdBQUksT0FBSkEsYUFBWTtZQTVCckIwK0csTUE2QlUxK0csR0FBSSxtQ0FBSkEsb0JBQTBDO1lBNUJwRDIrRyxJQTZCUTMrRyxHQUFJLE9BQUpBLFFBQWU7WUE1QnZCNCtHLGNBOEJtQkosTUFBTUU7SUFDdkIsT0FEdUJBOztPQUlYLE9BakRsQkgsYUE2Q3VCQzs7Ozs7T0FHVTtlQURrQjs7R0FFQztZQXRDaERyWixXQXlDa0JxWixNQUFRRSxPQUFTQztJQUdqQyxTQUFJRSxRQUFTTCxNQUFNRSxPQUFPQyxLQUFJRztLQUM1QjtNQUFBOzs7Ozs7Ozs7Ozs7OzZCQUNHcEo7Y0FBQSxPQUFBLDJCQUFBQTthQUFtRDs7O0tBRHRELE9BQUE7NENBRFc4SSxNQUFNRSxPQUFPQyxLQUFJRztJQU94QjtJQUVIO0tBQUEsT0FBQSxrQ0FaYU47S0FZYixlQUFZLGtDQVpDQTtJQVlELFNBVFhLLFFBSFlMLE1BQVFFLE9BQVNDO0lBYzlCLEdBQUEsa0NBZDhCQTtLQUc3QkUsUUFIWUwsTUFBUUUsT0FBU0M7SUFlYixJQUFoQkksa0JBcEROSCxjQXFDa0JKLE1BQVFFO0lBZ0JyQixHQUFBLGtDQWhCOEJDLEtBZTdCSTtLQVpBRjtPQUhZTDtPQUFRRTtPQUFTQztPQWlCRix3Q0FGM0JJO0lBRUMsT0FqQ0hOLFFBZ0JjRCxNQUFRRSxPQUFTQztHQWtCUjtZQTdEM0J0OUcsV0FxRWUvRixLQUFLQztJQUNsQjtLQUFJaWpILE9BQU8seUJBREVsakgsS0FBS0M7S0FFZG1qSCxRQUFRLGlDQUZDcGpILEtBQUtDO0tBR2RvakgsTUFBTSx5QkFIR3JqSCxLQUFLQztJQUlsQixPQTlDRWtqSCxRQTJDRUQsTUFDQUUsT0FDQUM7R0FDcUI7WUF6RTNCcjlHLGFBNEVtQmhHLEtBQU1DO0lBRXZCLG1EQUZ1QkE7R0FFbUM7R0FJMUQsSUFsRkY2SSxtQkFBQS9DLFlBQUFDO1lBQUFSLFdBcUZlZDtJQUNiO0tBQXVELE9BQUEseUJBRDFDQTtLQUM4QixPQWxGN0MwK0csTUFpRmUxK0c7S0FDYSxPQUFBO1lBQTFCLHlCQURhQTtHQUNnRTtZQXRGL0VpQixZQXlGZ0IzRixLQUFLNEYsS0FBSWxCO0lBQ3ZCO0tBQUltQixRQUFNLHlCQURJN0YsS0FBSzRGLEtBQUlsQjtLQUVjLE9BdkZ2QzArRyxNQXFGeUIxK0c7S0FFbkJvQixRQUFNLDBCQUZJOUYsS0FDVjZGO0lBRXFCLE9BQUEseUJBSFg3RixLQUVWOEYsT0FGbUJwQjtHQUdTO0dBR2Y7SUEvRm5CbUUsbUJBQUFyRCxZQUFBRztJQUFBb0QsWUFBQXhELGFBQUFzRCxjQUFBQztZQU9BK3JFLE9BaUdXbndFLEdBQUksT0FBSkEsRUFBSztZQWtMZGcvRyxnQkFqTGFsNkY7SUFBSSxPQXZHbkJxZ0YsV0F1R2VyZ0YsY0FyR2Y0NUYsTUFxR2U1NUYsSUFBQUE7R0FBa0Q7T0E0Sy9EbTZGOzs7S0F4SzhCLE9BNks5QkQsZ0JBTEFDO0lBeEs2RTtJQUE5RCxPQUFBO0dBQStEOzs7Ozs7Ozs7OztZQWtCOUVDLDJCQVYyQmwvRztJQUNuQixJQUFOMUUsTUFBTTtJQUNWLHlDQURJQSxRQUR5QjBFO0lBRzdCLDJCQUZJMUU7SUFHdUMsSUFBQSxPQXJIM0NvakgsTUFpSDZCMStHLElBSUEsT0FBQTtJQUE3Qix5Q0FISTFFO0lBSUosMkJBSklBO0lBS0oseUNBTElBLFFBRHlCMEU7SUFNN0IsT0FBQSwyQkFMSTFFO0dBTTBEO1lBTTVENmpILHdCQUF3Qm4vRztJQUNoQixJQUFOMUUsTUFBTTtJQUNWLHlDQURJQSxRQURzQjBFO0lBR2lCLElBQUEsT0FqSTNDMCtHLE1BOEgwQjErRyxJQUdHLE9BQUE7SUFBN0IseUNBRkkxRTtJQUdKLHlDQUhJQSxRQURzQjBFO0lBSTFCLE9BQUEsMkJBSEkxRTtHQUkwRDtZQUk1RDhqSCxtQkFBbUJwL0c7SUFDckI7S0FBSTFFLE1BQU07S0FDaUMsT0F6STNDb2pILE1BdUlxQjErRztLQUVRLE9BQUE7SUFBN0IseUNBREkxRTtJQUVKLDJCQUZJQTtJQUdKLHlDQUhJQSxRQURpQjBFO0lBS3JCLDJCQUpJMUU7SUFLSix5Q0FMSUEsUUFEaUIwRTtJQU1yQixPQUFBLDJCQUxJMUU7R0FNMEQ7WUFHNUQrakgsWUFBWWowRSxLQUFJbHFDO0lBQU0sT0FBQSwwQ0FBVmtxQyxLQUFJbHFDO0dBQStCO1lBQy9DbytHLFlBQVlsMEUsS0FBSWxxQztJQUF1QixXQUFBLDBDQUEzQmtxQyxLQUFJbHFDO0lBQXVCLE9BQUE7R0FBMkI7WUFDbEVxK0csVUFBVW4wRSxLQUFJbHFDO0lBQU0sT0FBQSwwQ0FBVmtxQyxLQUFJbHFDO0dBQStCO1lBRzdDcytHLHdCQUF3QnAwRSxLQUFLbHFDO0lBQy9CO01BQUc7K0JBRDRCQSxtQ0FBTGtxQztLQUVyQjtJQUlBO0tBQUEsT0FUSG0wRSxVQUd3Qm4wRSxLQUFLbHFDO0tBSzFCLE9BVEhvK0csWUFJd0JsMEUsS0FBS2xxQztJQU0xQixPQTlKTGlrRyxXQW1KRWthLFlBS3dCajBFLEtBQUtscUM7R0FNRDtZQXVENUJYLFVBQVVYO0lBQ1o7S0FqREE7TUFESWkvRzs7U0FBc0IsV0FBQSxvREFpRGRqL0c7U0FqRGMsT0FBQTtRQUFzQjtNQUM1QzYvRyxrQkFBT3JyRyxHQUFJLGVBQUpBLGlCQURQeXFHLGtCQUNtQztNQUNuQ2E7aUJBQVdsQixNQUFNRSxPQUFPQztTQUMxQixJQUErRCxPQWxCL0RZLFVBZ0VVMy9HLEdBL0NnQisrRyxNQUNZLE9BbkJ0Q1csWUFpRVUxL0csR0EvQ1M4K0c7U0FDNEMsT0F2S2pFdlosV0FtSkVrYSxZQWtFVXovRyxHQS9DRzQrRztRQUNtRTtNQUU5RW1CO2lCQUFZbkIsTUFBTUUsT0FBT0M7U0FDM0I7VUFHSyxPQXhCTFksVUFnRVUzL0csR0E1Q2lCKytHO1VBR0wsT0FBQSwyQkF5Q1ovK0csR0E1Q1U4K0c7VUFHZixPQUFBO1NBQ0EsT0E3S1B2WixXQW1KRWthLFlBa0VVei9HLEdBNUNJNCtHO1FBSVE7O1FBRXJCLGtDQXNDUzUrRztNQW5DRixZQUFBLDRCQW1DRUE7Ozs7Ozs7O2NBbENFOHBDLGFBQUh0MUIsYUFBSHhaO1VBQ0MsR0FBQSx3REFEREEsWUFGSWdsSCxNQUVFbDJFLEdBRkxtMkUsTUFFRXpyRyxHQUZMNjRGLE1BRUVyeUc7Y0FGSWdsSCxNQUVEeHJHLEdBRkZ5ckcsTUFFRGpsSCxHQUZGcXlHLE1BRVF2akU7Ozs7OztlQWZWbTFFO1FBYVEvaEQ7UUFBSG43RDtRQUFIZ1Y7UUFBTWlwRyxNQUFBOWlEO1FBQUgraUQsTUFBQWwrRztRQUFIc3JHLE1BQUF0MkY7O01BTU87T0FBUDZuRyxPQUFPLHlCQU5QdlI7T0FPQTZTO1NBQ0Msa0NBRkR0QjtZQUFBQTtZQUUrQjtxQ0FGL0JBO3FCQUFBQTtxQkFBQUE7T0FJeUIsT0FBQSx5QkFWdEJxQjtPQVVIbkIsUUFBUTtPQUNSQyxNQUFNLHlCQVhBaUI7Y0FqTFp6YSxXQXdMTTJhLFFBR0FwQixPQUNBQzs7YUFFRSxrQ0F1QkkvK0c7TUFwQkY7Y0FBQSx3REFvQkVBO01BcEJGO09BQW1DO1FBQUEsT0FBQSxnQkFvQmpDQTtRQXBCc0IsT0FBQTtPQUFBO1FBQW1DO1NBQUEsT0FBQSxnQkFvQnpEQTtnQkFwQjhDOzs7Ozs7TUE1QnRENi9HO2lCQUNBQzs7YUE2Qkksa0NBa0JJOS9HO01BaEJQLEdBQUEsd0RBZ0JPQTtPQWhCNEIsV0FBQSxnQkFnQjVCQTtPQWhCaUIsR0FBQTtRQUFtQyxXQUFBLGdCQWdCcERBO1FBaEJ5QyxHQUFBO29CQTVCakQrL0c7Ozs7O01BaUNRO2NBQUEsd0RBV0EvL0c7TUFYQTtPQUFtQztRQUFBLE9BQUEsZ0JBV25DQTtRQVh3QixPQUFBO09BQUE7UUFBbUM7U0FBQSxPQUFBLGdCQVczREE7Z0JBWGdEOzs7Ozs7TUFyQ3hENi9HO2lCQUlBRTs7O01BbUNJOztTQUFBLHdEQVNJLy9HO1lBNUNSKy9HO1lBc0NJOzJEQU1JLy9HO2NBL0NSOC9HO2NBRkFiO0tBa0RBOztVQUNGaC9HO0tBQWdEO01BQWhEQywwQkFBQUQ7TUFBZ0QsT0FBQSx5QkFBaERDO0tBQU8sT0FBQSx3Q0FGR0Y7O0dBRTREO1lBb0JwRUYsVUFmRnFnSDtJQWdCQTtjQWhCQUE7VUFXWW5nSCxJQVhabWdILHNCQVBBeC9HLFVBa0JZWDs7O2VBWFptZ0g7O1FBT1kvL0c7VUFQWjswQ0FBQXMrRyxrQkFBQXlCOztPQUFBO1FBQUFDLGtCQUFBRDtRQUNJRTtRQUNBQztRQUNBQztRQUhKQztRQUFBQzs7Ozs7Ozs7O3NCQUFBTDtVQUFBOztlQUFBTTtvQkFBQUE7c0JBQUFBOzs7O2VBQUFDLDJCQUFBQztjQUFBRCxtQkFBQUE7O1lBQUFFO1lBQUFDO3VCQUFBSDt3QkFBQUk7Z0JBQUEsS0FBQUo7aUJBQUEsT0FBQTt3REFBQWpDLGtCQUFBeUI7bUJBQUFRO2lCQUFBLE1BQUE7O29CQUFBSyxRQUFBTDtnQkFBQSxPQUFBSztlQUtpQjtzQkFMakJEOztZQUFBQSxpQkFBQUQsaUJBQUFIO21DQUFBQztvQ0FBQUE7cUNBQUFBOztlQUFBSCxtQkFBQUcsZ0JBQUFIOztxQkFDSUo7Y0FESkcsd0JBQUFJLGdCQUFBSjs7Y0FDSTtlQURKUyxtQkFBQUY7ZUFDSWo0RjtpQkFBQSxtQ0FESm00RjtjQUNJWixlQUFBdjNGOztvQkFDQXczRjthQUZKRSx3QkFBQUksZ0JBQUFKOzthQUVJO2NBRkpVLG1CQUFBSDtjQUVJbjRGO2dCQUFBLG1DQUZKczRGO2FBRUlaLGVBQUExM0Y7O21CQUNBMjNGO1lBSEpDLHdCQUFBSSxnQkFBQUo7O1lBR0k7YUFISlcsbUJBQUFKO2FBR0lwckIsYUFBQSxtQ0FISndyQjtZQUdJWixlQUFBNXFCOzt1QkFISmtyQjs7Ozs7O1FBQUEseUNBQUFuQyxrQkFBQWdDOztVQUFBRjs7U0FPWXBnSDtXQVBaOzthQUFBcytHO2FBQUE4QjthQUFBTDtlQUFBTTs7U0FPWXJnSDtXQVBaOzthQUFBcytHO2FBQUErQjthQUFBTjs7bUJBQ0lFLGlCQUNBQyxrQkFDQUM7OztVQUFBYTtVQURBQztVQURBQztVQU1RbGhILFFBTlJraEgsT0FDQUQsT0FDQUQ7Ozs7U0FJUWhoSDtXQVBaOzthQUFBcytHO2FBQUF5Qjs7d0JBQ0lFOzt5QkFDQUM7NkJBQ0FDOzs7TUFJbUM7Y0FBM0JuZ0g7T0FBMkIsT0FBQSwyQkFBM0JBO2NBbk9kbWxHLFdBbU9jbmxHOztLQVNSOztVQUNGSDtTQUFBQywwQkFBQUQ7UUFBQUM7TUFBMEIsTUFBQSw0QkFBMUJBO1FBQUFBLHdEQUFBQTtTQUNpQmxGLElBRGpCa0Y7S0FDc0IsT0FBQSxtQ0FBTGxGLEdBbEJuQm1sSDs7R0FrQnlDO1lBR3ZDaGdILFVBQVVDLEdBQUksV0FwSGhCay9HLDJCQW9IWWwvRyxJQUEyQjtHQUVwQixJQUFqQitZLGlCQUFpQjtZQUtuQnpVLFFBQVFzZ0QsSUFBR0M7SUFDTCxJQUFKLy9CLElBQUkseUJBREU4L0IsZUFBR0M7SUFFVixHQUFBLGtDQURDLy9CLE9BRUMsT0FGREE7SUFJK0I7S0FBQSxPQTNQbkM0NUYsTUFzUGE3NUQ7S0FLVyxPQTNQeEI2NUQsTUFzUFU5NUQ7S0FLSjcvQixNQUFJO0lBQ0wsT0FBQSxrQ0FEQ0E7Y0FBQUE7Y0FDdUMseUJBTm5DNi9CLFVBQUdDO0dBTXlDO0dBRzNDO0lBQUEsVUFBQSxzQ0FUVHZnRCxTQVBFdkU7Ozs7OztTQW5QSmU7U0FBQUc7U0FBQUk7U0FBQUM7U0FBQVQ7U0FBQXNEO1NBQUFDO1NBQUFDO1NBMFBFQztTQWJFNUU7U0FNQUs7Ozs7Ozs7O1NBblBKZTtTQUFBRztTQUFBSTtTQUFBQztTQUFBVDtTQUFBc0Q7U0FBQUM7U0FBQUM7U0E2T0kzRTtTQWFGNEU7U0FQRXZFO1NBblBKeUU7Ozs7O0lBNlFGLGNBQUs7SUFBTCxNQUFBO0lBQUE5SixRQUFBO0lBQUEsTUFBQTtJQUFLaUssZ0JBQUwsV0FBQSwrQkFBQWpLO0lBQUFrSztJQUFBQztJQUFBQyxxQkFBQUYsY0FBQUM7SUFBQUU7SUFBQUM7SUFBQUMscUJBQUFELGNBQUFEO0lBQUFHLGNBQUtQLGVBQUxHLGdCQUFBRztJQUFBLE1BQUE7SUFBS1csZ0JBQUwsV0FBQTtJQTZYQVQ7SUFMRUc7SUF4WEZ1STtHQUFBLFNBQUF0SSxPQUFBL0UsR0FBQSxPQUFBLFdBQUFxTixRQUFBck4sR0FNVTtHQU5WO21FQUFBNEM7SUFBQWkxRTtJQUFBQztJQUFBQyx5QkFBQUQ7WUFTSXVELFFBQVE3N0U7SUFBSSxPQUREO29DQUNIQSxHQURSaS9HO0dBQ29CO1lBQ3BCbmpDLFFBQVE5N0UsR0FBSSxXQURaNjdFLFFBQ1E3N0UsR0FBbUI7WUFDM0JtaEgsNkJBQTBCLFNBQUk7WUFDOUIxbUQsS0FBS3o2RCxHQUFJLE9BQUpBLEVBQWU7WUFFcEJvaEgsVUFBVXBoSCxHQUFJLE9BSmQ4N0UsUUFJVTk3RSxTQURWZy9HLGdCQUNVaC9HLFFBQXdEO1lBRWxFcWhILFVBQVV0L0c7SUFDWixLQURZQSxLQVJDLE9BQVhrOUc7UUFXSzlqSCxJQUhLNEc7SUFHQSxPQUFMNUc7R0FBVztZQUdoQm1tSCxVQUFVdGhIO0lBQ1osR0FiRTg3RSxRQVlVOTdFLElBRVAsT0FYSGcvRyxnQkFTVWgvRzs7Ozs7Ozs7Ozs7O0dBR2dEO1lBRzFEMGpCLE1BQU0xakIsR0FBRzZtRztJQUFVLE9BbEJuQi9xQixRQWtCTTk3RSxLQWZOZy9HLGdCQWVNaC9HLEtBQUc2bUc7R0FBMEQ7WUFpV3ZFbmhHLFlBaFdjMUY7SUFBSSxXQWZkb2hILFVBZVVwaEg7SUFBSSxPQUFBLDRCQXZEWkQ7R0F1RHdEO1lBQzFEeUYsWUFBVTdGO0lBQU8sT0FkakIwaEgsVUFjaUIsV0FBQSw0QkE5RGYzaEgsWUE4RFFDO0dBQXdEO0dBQ0w7SUFBQSxNQUFBLDRCQXZEM0RvWjtJQXVERnF5QyxtQkFBaUI7Ozs7O1NBNVNuQnRxRDtTQUFBRztTQUFBSTtTQUFBQztTQUFBVDtTQUFBc0Q7U0FBQUM7U0FBQUM7U0E2T0kzRTtTQU1BSzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBb0VHd2hIO0lBQUF2eUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFESixRQUNJQSxXQUFBRCxVQUFBRCxVQUFBRCxVQUFBRCxVQUFBdXlDO1lBU1A1NUcsVUFBUy9NLEdBQVF3WixHQUFTLE9BQUEsc0JBQWpCeFosR0FBUXdaLEdBQW9CO0dBVzVCOzs7OztTQTNVVDdQO1NBQUF6RDtTQUFBRztTQUFBSTtTQUFBQztTQUFBVDtTQUFBc0Q7U0FBQUM7U0FBQUM7U0E2T0kzRTtTQW1GSmlJO1NBN0VJNUg7U0FuUEp5RTtJQWtVSitCO0lBQUFDO0lBQUEydEM7Ozs7OztvQ0FLSTdGLGFBeE1FNHdFOztJQTRNTnNDLGFBelVJcmM7WUFrV0ZzYyxRQUFROXFHO0lBQUksZ0JBQUpBLFVBQUFBLG1CQUFBQTtjQUFBQTs7R0FBK0M7WUFFdkQrcUcsUUFBUUM7SUFDVjtLQUFzQixPQW5XbEJqRCxNQWtXTWlEO0tBQ0QsT0FBQTtLQUFMaGdILElBQUk7S0FDSmdWLEtBRk1nckcsb0JBQ05oZ0g7WUFIRjgvRyxRQUlFOXFHLFFBREFoVjtlQURNZ2dIOztHQUd5QztHQUd0QztJQUFYQyxXQUFXO0lBQ1hDLFdBQVc7SUFDWEMsY0FBYztZQUVkQyxRQUFRQztJQUNWO0tBRTJCLE9BQUEsMkJBSGpCQTtLQUdLLE9BQUEsMkJBUGJKO0tBT1ksT0FBQSxpQ0FOWkM7S0FNVyxPQUFBLGlDQUxYQztLQVFFbnJHLElBSEY7S0FHS3NyRyxNQU5HRCxPQVpSUCxRQWtCRTlxRztJQUNDLEdBQUEseUJBREVzckc7S0FFQSxJQUNDaFYsTUFISnQyRixXQUFHdXJHLFFBTkdGLE9BWlJQLFFBcUJNeFUsVUFISmtWLE1BR0lsVjs7U0FIRGlWLFFBQUFELEtBQUhFLE1BQUF4ckc7SUFTSTtLQUZKeXJHLGFBUEdGO0tBUUhHLE1BUkFGLFFBT0FDO0tBRUF6Z0gsSUFBSSx5QkFGSnlnSDtLQUdBdGxELEtBVkdvbEQsV0FPSEU7SUFJSixPQS9YSWpkLFdBNFhBa2QsS0FHYSwyQkFGYjFnSCxJQUNBbTdEO0dBQ29DO0dBR3pCLElBQWJ3bEQsZUE5QkFaLFFBM0JGRjtZQTBERWUsU0FBU3ZpSCxHQUFFZ2lILE1BQU8sT0FBVGhpSCxJQUFFZ2lILFNBQWU7WUFDMUI3cEUsS0FBS3lNLElBQUdDLElBQUssT0FBUkQsS0FBR0MsT0FBWTtHQXZDSixlQU9oQjY4RCxTQVVBSyxTQXNCQTVwRSxNQURBb3FFLFVBREFEO1lBS0ZFLFdBQVN4aUgsR0FBRWdpSDtJQUFPLElBQTRCLE9BQUEsb0JBQXJDaGlILElBQXNCLE9BQUEsMEJBQXBCZ2lIO0lBQW9CLE9BQUE7R0FBcUM7WUFDcEUzcEUsT0FBS3VNLElBQUdDO0lBQUssSUFBNEIsT0FBQSxvQkFBakNBLEtBQWUsT0FBQSxvQkFBbEJEO0lBQW9DLE9BQUE7R0FBaUI7WUFFMUQ2OUQsV0FBV3ppSCxHQUFFOGtCO0lBQ2Y7S0FBZ0MsT0F6WTFCNDVGLE1Bd1lPMStHO0tBQ1QwaUgsZUFBZSxtQ0FESjU5RjtLQUtYbk87UUFMUzNXLGdCQUVJLG1DQURiMGlIOztLQUlHL2dILElBRkMsbUNBRkorZ0g7SUFJVSxHQUFBLHlCQUFQL2dIO1NBQUFrK0csTUFBQWwrRyxZQUFIc3JHLE1BQUF0MkY7O1NBQUdrcEcsTUFBQWwrRyxHQUFIc3JHLE1BQUF0MkY7SUFDSSxJQUFKZ3NHLE1BQUksMkJBREQ5QyxNQUdZK0MsTUFSTjVpSCxTQVFNODhELElBQUE4bEQ7SUFDakI7S0FBQSxJQUFJLFdBblpBemQsV0ErWUY4SCxLQUNBMFYsS0FFZTdsRCxJQUNiOztNQUVLLEtBQUEseUJBSFFBO09BR2YsTUFBQTtNQUNBLElBSmU4aUQsTUFBQTlpRCxXQUFBQSxJQUFBOGlEOztHQU1EO1lBR2hCaUQsVUFBVTdpSCxHQUFFOGtCLEdBQUksT0FqQmhCMjlGLFdBaUJVemlILEdBQUU4a0IsWUFBeUI7T0FPbkNpc0Q7WUFERit4QyxZQUVFOWlIO0lBQ0Y7S0FBcUIsT0FsYWpCMCtHLE1BaWFGMStHO0tBQ0UyQixJQUFJO0tBQ0pnVjtPQUFPLHlCQURQaFYsU0FERjNCLHdCQUFBQTtLQUl3RCxPQUh0RDJCOztXQUNBZ1YsS0FBQUEsbUJBQUFBLHFCQUFBQTswQkFIRm82RDs7VUFDQS93RTs7S0FJQSxPQUFBO0lBQUEsT0FBQTtHQUFtRTtPQUlyRStpSCxtQ0FDQUM7WUFFQUMsYUFBYWpqSDtJQUNmO0tBQUkrd0U7T0ExYkZ3dEMsYUF5YmF2K0csZ0JBRmJnakgsa0JBREFEO0tBTytCLE9BaGIzQnJFLE1BNGFTMStHO0tBSUssT0FBQTtLQUFoQjBwRSwwQkFIQXFIO0lBSUosUUFMZS93RSxXQUlYMHBFO0dBQ1U7WUFHWnc1QyxrQkFBa0J2c0c7SUFDQSxJQUFoQndzRyxnQkF2YkVoZSxXQXNiY3h1RjtJQUVwQixTQUFJeXNHLEdBQUdwakgsR0FBRTIrRztLQUF3QixXQXZCL0JtRSxZQXVCSzlpSDtLQUFRLE9BQUEsdUNBQU4yK0c7SUFBMkM7O1NBQWhEeUUsR0FEQUQ7S0FFZ0QsR0FwY2xENUUsYUFpY2tCNW5HLE1BRWhCeXNHLEdBREFEO0tBSUM7O0lBREE7R0FDRTtZQVFMRSx3QkFBd0JyakgsR0FBRzBDO0lBQzdCO0tBQUk0Z0gsVUF0QkZMLGFBcUJ3QmpqSDtLQUV3QixNQXBDaEQ4aUgsWUFrQ3dCOWlIO0tBRXRCdWpILFVBQVU7S0FHVkMsU0FKQUYsVUFDQUM7S0FJQS9FLE9BTnNCeCtHO0lBT3ZCLEdBQUEseUJBRkN3akg7S0FHQyxPQUFBLFdBUndCOWdILEdBYjNCd2dILGtCQW1CRTFFLGVBQUFBO0lBR21CLFdBdEJyQjBFLGtCQW1CRTFFO0lBR0ksT0FBQSx5QkFKSmdGO2NBS0MsV0FWd0I5Z0gsTUFNekI4N0c7Y0FLQyxXQVh3Qjk3RyxHQUt6QjhnSCxNQUNBaEY7R0FLYztZQUdoQmlGLHFCQUFxQnpqSDtJQUFJLE9BZHpCcWpIO2FBY3FCcmpILFlBQXVDd2pILE1BQU1oRixNQUFRLFdBQWRnRixNQUFNaEYsTUFBa0I7R0FBQztZQUNyRmtGLFlBQVkxakg7SUFBSSxPQWZoQnFqSCx3QkFlWXJqSCxZQUF1Q3dqSCxhQUFnQixPQUFoQkEsS0FBb0I7R0FBQztZQUN4RUcsV0FBVzNqSDtJQUE4QixVQWxEekM4aUgsWUFrRFc5aUg7SUFBOEIsT0FBQTtHQUFlO1lBQ3hENGpILFdBQVc1akgsR0FBSSxXQURmMmpILFdBQ1czakgsR0FBc0I7WUFDakM2akgsZ0JBQWdCN2pILEdBQUc4akg7SUFBYSxJQUFBLE1BRGhDRixXQUNnQjVqSCxJQUFnQixnQkFBb0IsV0FBakM4akgsWUFBSDlqSDtJQUFvQztHQUFjO1lBRTlEK2pILGtCQUFrQm4vRCxJQUFHQztJQUMzQixHQUFHLHFCQURxQkQsSUFBR0MsS0FFckIsU0FGQWsvRCxrQkFBcUJsL0QsSUFBSEQ7SUFLWDtLQUFQek0sT0FwRkpFLE9BK0VzQnVNLElBQUdDO0tBT3JCbS9ELEtBN0RKbEIsWUFzRHNCbCtEO0tBUWxCcS9ELEtBOURKbkIsWUFzRHlCaitEO0tBVWMsTUFBQSxpQ0FGbkNvL0Q7S0FFVyxNQUFBLGlDQUhYRDtLQUVBRTtPQUNDO2VBTEQvckU7VUFBQUE7S0FXQyxNQUFBLGlDQVRENnJFO0tBUUUsTUFBQSxpQ0FQRkM7YUFDQUM7R0FPcUQ7WUFHekRDLGNBQWN2L0QsSUFBR0M7SUFBa0IsVUFuQi9Cay9ELGtCQW1CVW4vRCxJQUFHQztJQUFLLE9BbEd0QnhNLE9Ba0djdU0sSUFBR0M7R0FBeUM7WUFFMUR1L0Qsa0JBQWtCcGtILEdBQUdxa0gsTUFBS3YvRjtJQUM1QjtLQUFJdy9GLE9BQVUseUJBRGN4L0Y7S0FFYnkvRixNQUlSLGlDQU5xQnovRjtLQUVmNHVDLE1BRk8xekQ7S0FFTG9xQyxJQUFBbTZFO0lBQ2I7S0FBYSxJQURGQyxTQXZHWGhDLFdBdUdXOXVELEtBRFQ0d0Q7S0FHQyxHQUFBLFdBSmtCRCxNQUVWM3dEO1VBQUFBLE1BQUE4d0Q7O01BRTBCLEdBQUEseUJBRnhCcDZFLE9BRTJDLE9BRjdDc3BCO01BRW9ELElBRmxEdGIsTUFBQWhPLFdBQUZzcEIsTUFBQTh3RCxRQUFFcDZFLElBQUFnTzs7O0dBSUQ7WUFHUnFzRSxxQkFBcUJ6a0gsR0FBR3NrSCxNQUFNSTtJQUNwQyxJQUQyQmh4RCxNQUFBMXpEO0lBQzNCO0tBQUcsR0FBQSxXQURpQzBrSCxXQUFUaHhELE1BQ1AsT0FET0E7S0FDcUIsSUFEckJzSCxNQTlHekJ3bkQsV0E4R3lCOXVELEtBQUc0d0QsT0FBSDV3RCxNQUFBc0g7O0dBQ3VEO1lBR2hGMnBELG9CQUFvQjNrSCxHQUFHc2tILE1BQU1JO0lBQ2hCLElBQVhFLFdBbkhGcEMsV0FrSG9CeGlILEdBQUdza0g7SUFFekIsT0FOTUcscUJBS0ZHLFVBRHFCTixNQUFNSTtHQUVlO1lBRzVDRyxrQkFBa0I3a0g7SUFBSSxPQUx0QjJrSCxvQkFLa0Iza0gsTUExQ2xCNGpIO0dBMEN5RTtZQUN6RWtCLGlCQUFpQjlrSDtJQUFJLE9BTnJCMmtILG9CQU1pQjNrSCxPQTNDakI0akg7R0EyQzJFO1lBWTNFbUIsYUFBYS9rSCxHQUFFOGtCLEdBQUksT0EvQm5Ccy9GLGtCQStCYXBrSCxHQXhEYjJqSCxZQXdEZTcrRixHQUEwQztZQUd6RGtnRyw4QkFBOEJobEgsR0FBRThrQjtJQUNsQyxPQW5DRXMvRjthQVNJSyxxQkF5QjBCemtILE1BMUQ5QjRqSCxhQURBRCxZQTJEZ0M3K0Y7R0FDK0I7WUFHL0RtZ0csK0JBQStCamxILEdBQUU4a0I7SUFDbkMsT0F2Q0VzL0Y7YUFTSUsscUJBNkIyQnprSCxPQTlEL0I0akgsYUFEQUQsWUErRGlDNytGO0dBQytCO1lBR2hFb2dHLGtCQUFrQmxsSCxHQUFHOGpILFlBQVdoL0Y7SUFDbEMsT0EzQ0VzL0Y7YUEwQ2tCcGtIO3NCQUNhODhEO2NBQUssVUFwRXBDNm1ELFdBb0UrQjdtRDtjQUFLLDhCQURmZ25ELFlBQ1VobkQ7YUFBaUM7YUFEaENoNEM7R0FDaUM7WUFLakVxZ0csK0JBQW1DbmxILEdBQUc4akgsWUFBV2gvRjtpQkFDMEJnNEMsR0FDM0UsV0F6RUErbUQsZ0JBd0UyRS9tRCxHQURyQ2duRCxZQUVIO0lBRHJDLE9BakRFTTthQVNJSztlQXVDK0J6a0gsb0JBeEJyQyxPQS9DRTZqSCxxQkF1RXNDQzs7YUFBV2gvRjtHQUViO1lBR3BDc2dHLCtCQUFvQ3BsSCxHQUFHOGpILFlBQVdoL0Y7aUJBQzBCZzRDLEdBQzVFLFdBOUVBK21ELGdCQTZFNEUvbUQsR0FEckNnbkQsWUFFSjtJQURyQyxPQXRERU07YUFTSUs7ZUE0Q2dDemtILHFCQXpCdEMsT0FuREU2akgscUJBNEV1Q0M7O2FBQVdoL0Y7R0FFZDtZQUdwQ3VnRyxjQUFtQnpnRSxJQUNSQztJQUFiLElBQWE3a0QsSUFBQTZrRCxJQUFFaFQ7SUFBSTtLQUFHLEdBQUEscUJBQVQ3eEMsR0FEUTRrRCxLQUNhLE9BQW5CL1M7S0FBaUQsSUFBakR5ekUsVUFBRnRsSCxHQUFFNnhDLElBQUY2aEIsTUFoS1g4dUQsV0FnS1d4aUgsUUFBQUEsSUFBQTB6RCxLQUFFN2hCLElBQUF5ekU7O0dBQ0w7WUFHUkMsaUJBQWtCL2lFLEtBQUtDO0lBQ1QsSUFBWitpRSxZQU5GSCxjQUtrQjdpRSxLQUFLQztpQkFFZ0NnakU7S0FHbkMsSUFBaEJDLGdCQS9JSjVDLFlBNEl1RDJDO0tBSXZELGFBQzhCM3VHLEdBQUU2cUc7TUFBUSxXQUFSQSxNQUFjLGlDQUYxQytELGVBRTBCNXVHO0tBQWlEO0tBQTdFLElBREU2dUcsb0JBQ0YsMEJBTkFIO0tBUUY7TUFBcUMsSUFBWWpDLG9CQUFONUI7TUFDdEMsT0FBQSxpQ0FENEM0QixtQkFBTjVCO0tBQ3FCO0tBRDNCLE9BQUEsMkJBSGpDZ0U7SUFJNEQ7SUFSakQsVUFBQSwwQkFEYkg7SUFDZ0QsT0FBQTtHQVFlO1lBR2pFSSx1QkFBd0JwakUsS0FBS0MsS0FBS3FoRTtpQkFDY2huRCxHQUFLLFdBQUksV0FEdkJnbkQsWUFDY2huRCxHQUF1QjtJQUF6RSxVQWRFeW9ELGlCQWF3Qi9pRSxLQUFLQztJQUNjLE9BQUE7R0FBNkI7WUFHeEVvakUscUJBQXFCN2xILEdBQU04bEg7SUFDN0I7S0FBSUMsUUFBTSxpQ0FEbUJEO0tBRXpCRSxTQXZMRnhELFdBcUxxQnhpSDtLQUdNLE1BOUozQjhpSCxZQTZKRWtEO0tBQ0FDLE1BQU07S0FDTjl0RSxTQUhBNHRFLGlCQUVBRTtJQUVKLE9BMUxFekQsV0F1TEV3RCxRQUVBN3RFO0dBQ2dCO1lBNkJsQnFnQyxpQkF2Qm1Cd3JDLElBQUdDO0lBQ3RCLEdBQUcscUJBRGdCRCxJQUFHQzs7aUNBdFZkbGtILFVBc1Zja2tIO2lDQXRWZGxrSCxVQXNWV2lrSDs7Ozs7O0tBR2pCOztpQkFLMERoQyxNQUFRLE9BeE1wRVEsV0FnTW1Cd0IsSUFReUNoQyxNQUF3QjtJQUE5QyxJQUFBLE1Bdk10QzNwRSxPQStMc0I0ckUsSUFBSEQsS0FRTCxNQUFBO0lBQXlDLE9BQUE7R0FBOEI7WUFjckZ6dkMsU0FYV3l2QyxJQUFHQztJQUNkO3dCQVdBenJDLGlCQVpXd3JDLElBQUdDO3VCQUVtQixrQ0FGbkJBO0tBRVosa0JBQU0sa0NBRkdEO0lBRVQsT0FBQTtHQUFpRjtHQUd4QjtJQUFBLE1BbFlyRHpqSDtJQXVZTnlZLHVCQUNBdTdELFNBeFlNaDBFO2dCQW1ZdUNQLFVBQVd3RSxNQUFRLE9BQUEsV0F4UmhFK0IsZUF3UndEL0IsTUFBWHhFLEdBQXFDO0dBQTFEO0lBT3hCa1osc0JBUHdCO0lBUXhCRSxzQkFQd0I7SUFTWCxjQXRMYjRwRyxpQkFEQUQscUJBR0FFO0lBK0x5QixzQkF6Vm5CcG5DLFNBSUFtakM7SUFvVmlCO0lBU3JCLE1BQUEsNEJBekJGaG1HO0lBdUJFb2dDO01BQ0Ysd0NBelZNaW9FO0lBZ1dKLE1BQUEsNEJBM0JGam9HO0lBeUJFaWlDO01BQ0YsdUNBL1ZNZ21FLFdBRkFEO0dBMFdGLFNBQUFsNUcsT0FBQTFILEdBQUEsT0F4WEYrRSxPQXdYRS9FLEdBQW1DO0dBRnZDO0lBREU0NkM7TUFDRixzQ0FFSTkxQyxlQUFBNEM7b0RBS0YvQyxXQUFBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BMW9CRTVFO09BQUFHO09BQUFJO09BQUFDO09BQUFUO09BQUFzRDtPQUFBQztPQUFBQztPQTZPSTNFO09BTUFLO09BRUFnWjtPQXJQSlE7T0FBQUQ7T0FrVUovUztPQUFBQztPQUFBMnRDOzs7O09BM0dNNXpDO09BeEZBMitHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E3SEYvWjtPQXdKRXFhO09BeEJBTDtPQVNBQztPQXRJRlQ7T0FEQUQ7T0FEQUY7T0FnYUpzRTtPQWdEQVc7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0E5RUFyQjtPQUdBQztPQWlCQUk7T0FuQkF4cUU7T0FrR0E4ckU7T0FuQklKO09BMkRKa0I7T0FKQUQ7T0FtQkFJO09BTEFEO09BakJBSjtPQUFBQTtPQVdBRztPQUFBQTtPQTFDQWQ7T0EwREFpQjtPQWtCQU87T0FiQUw7T0E1Q0FUO09BREFEO09BOERBZ0I7T0F4akJJakg7T0FmSkw7T0FvVkFpRDtPQW1SQXhvRztPQUdBRTtPQUNBRTtPQUhBbTdEO09BQ0FpRTs7O1FBcFRNcHRCO1FBeVZGOWxEO1FBeFhGQztRQTZYQUc7UUE3WEE2eUU7UUFBQUY7UUFRSTRtQztRQUlBeGtEO1FBREEwbUQ7UUFGQXRsQztRQUNBQztRQWtCQXA0RDtRQU5BNDlGO1FBVEF0QztRQUNBb0M7UUFFQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQXdWSmpvRTtRQWFBZ0M7UUFQQUM7OztTQTNuQkVobEM7U0FBQTlSO1NBQUFDO1NBcVBJdVU7U0E5T0pvM0Q7U0FtUkU2dUM7U0ExUkZsK0c7U0FBQUc7U0FBQUk7U0FBQUM7U0FBQVQ7U0FBQXNEO1NBQUFDO1NBQUFDO1NBMFBFQztTQWJFNUU7U0FNQUs7Ozs7Ozs7OztVQTBCTjZFO1VBQUFDO1VBQUFHO1VBQUFEO1VBQUthO1VBQUxkO1VBQUFHO1VBQUFDO1VBNlhBQztVQS9WSUs7VUErVkpFO1VBOVZJMGxEOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDclROODZELFNBQVNyOEM7SUFDWCxJQUFJeVM7SUFDSixhQUMyQmhQO0tBQ3pCLGNBQTJCLDRCQURGQTtLQUN6QixXQUFFLDRCQUR1QkE7SUFDMkI7SUFGdEQ7ZUFBOEQsV0FEMURnUCxjQURPelM7ZUFFOEIsV0FEckN5UyxjQURPelM7ZUFFVSxXQURqQnlTLGNBRE96UztLQUVYLFVBQUUsV0FERXlTLGNBRE96UztJQUdXLE9BQUE7R0FDaUM7R0FHbEM7SUFBbkJzOEMsa0MsT0FQQUQ7SUFRQUUsa0NBRG1CLE9BUG5CRjtZQVlJRyxZQUFZLzZFLFFBQU80NkU7SUFDekIsSUFEeUJJLGFBQUFKO0lBQ3pCO1VBRHlCSSxZQUlqQjtTQUppQkMsYUFBQUQsZUFFdkJoNUMsU0FGdUJnNUM7S0FHcEIsR0FBQSw0QkFIYWg3RSxRQUVoQmdpQyxTQUN3QyxPQUR4Q0E7U0FGdUJnNUMsYUFBQUM7O0dBSWY7WUFHUkMsVUFBVWw3RSxRQUFPcHFDLEtBQUt1b0U7SUFBUSxVQUFBLGtDQUFidm9FLEtBQUt1b0U7SUFBUSxVQUFBO0lBQThCLFVBQUEsZ0JBQWxEbitCLFFBQU9wcUM7SUFBMkMsT0FBQTtHQUFZO1lBUXhFdWxILCtCQUFrQ243RSxRQUFPbDBCO0lBQzNDLEdBQUcsa0NBRHdDQTtLQUNkLFVBQUEsZ0JBRE9rMEIsUUFBT2wwQjtLQUM3QixHQUFBLG9DQUFxQyxPQURSQTs7SUFDcUIsT0FEckJBO0dBQ3dCO1lBRzFEc3ZHLGVBQWVwN0UsUUFBUW0zRDtJQUNoQztpREFEZ0NBO2lEQUFSbjNEOzs7Ozs7O0dBQ3FDO1lBNEIzRDQ0QixNQUFNNTRCLFFBQVE1b0M7SUFDaEIsSUFBSTBVLDRCQURJazBCLDRCQXJETjY2RTs7O2VBQUFBOzs4Q0FBQUE7K0NBQUFBOztJQTBESSxJQUlGUSxLQXpERU4sWUFnREUvNkUsaUNBcEROODZFOzs7ZUFBQUE7OzhDQUFBQTsrQ0FBQUE7O0lBMERJLElBSUVwNUUsUUExREZxNUUsWUFnREUvNkU7Ozs7OzRCQVNKcTdFO2lDQUNJMzVFO1VBUk15OEIsUUFEVnJ5RCxLQUNBd3ZHOzs7NkJBUUk1NUU7OEJBREoyNUU7T0FFZ0IsTUFBQTs7T0FUTmw5QztTQW5DWmc5QztXQWlDTW43RSxRQUNKbDBCLE1BU1Usc0JBQU40MUI7T0FSSjQ1RTs7OztPQUFVbjlDO1NBbkNaZzlDO1dBaUNNbjdFLFFBQ0psMEIsTUFRVSxzQkFBVnV2RztPQVBBQzs7SUFlSixJQUFJemxIO0lBR0MsR0E3REhxbEgsVUF5Q01sN0UsV0FFTW0rQjs7TUFnQkRvOUM7TUFBSkMsS0FJSSwwQ0F0Qkx4N0UsUUFpQkpucUM7TUFDQUM7WUEzREZvbEgsVUF5Q01sN0UsV0FFTW0rQjs7TUFnQkRvOUM7TUFBSkMsS0FRSSwwQ0ExQkx4N0UsUUFpQkpucUM7TUFDQUM7WUFVTSxxQ0ExQklxb0U7O01BZ0JEbzlDO01BQUpDLEtBWUksMENBOUJMeDdFLFFBaUJKbnFDO01BQ0FDO1lBY00scUNBOUJJcW9FOztNQWdCRG85QztNQUFKQyxLQWdCSSwwQ0FsQ0x4N0UsUUFpQkpucUM7TUFDQUM7O0tBa0JZO01BbEJQMmxILE9Ba0JPLDBDQXBDUno3RSxRQWlCSm5xQztNQUNTMGxIO01BQUpDLEtBQUFDO01BQUwzbEg7cUJBQVN5bEg7U0FvQkNHLG9CQUFMeGtFLFNBQUwvcUMsUUFwQkFyVztZQTNERm9sSCxVQXlDTWw3RSxRQWtCSmxxQyxlQWhCVXFvRTs7O3NCQWdCRG85Qzs7V0EvQ0pILGVBNkJEcDdFO01Bc0NNMDdFO01BQUx4a0UsTUFVRCwwQ0FoREFsWCxRQWtCSmxxQztNQW9CQXFXLFFBcEJBclc7WUFvQ1Esa0NBcENSQSxlQWhCVXFvRTs7TUFvQ0F1OUM7TUFBTHhrRSxNQWlCUywwQ0F2RFZsWCxRQWtCSmxxQztNQW9CQXFXLFFBcEJBclc7OztZQS9DS3NsSCxlQTZCRHA3RTtNQXNDTTA3RTtNQUFMeGtFO01BQUwvcUM7O09BQVV1dkc7S0FtQ1AsR0FBQSxrQ0FuQ0h2dkcsZUFwQ1VneUQ7O2FBL0JMaTlDLGVBNkJEcDdFO09BNkR5QjI3RTtPQUFaQztPQUFaQztPQUFMQzs7TUFpQlk7T0FBTkMsUUFBTSwwQ0E5RVIvN0UsUUFzQ0o3ekI7T0F6RTJCTyxRQXlFM0JQO01BMkNLLEdBQUEsa0NBcEhzQk8sT0FxQ2pCeXhEOztRQTJEbUJ3OUM7UUFBWkM7UUFBWkMsYUFoR3NCbnZHO1FBZ0czQm92RyxNQWlCTUM7O09BS0ksR0FBQSxrQ0F0SGlCcnZHLE9BcUNqQnl4RDtRQXJDc0MsVUFBQSxnQkFtQzVDbitCLFFBbkN1QnR6QjtRQXNIRixHQXRIdUI7U0FpSHBDLElBdkc0QzRTLFFBVjdCNVMsZUFXM0Jzdkcsa0JBQ0osTUF5QmM3OUM7bUJBM0I4QzcrQztjQUU1RDFwQixNQUY0RDBwQjs7V0FHcEQsZUFBQSxnQkFzQkEwZ0IsUUF2QlJwcUM7Ozs7OztjQU5Td2xILGVBNkJEcDdFOzs7OzhCQXhCSmc4RTs7O1dBQ0osVUFBQXBtSDtzQkFBQUE7ZUFBQUE7Ozs7VUFvRmlDK2xILGlCQXJGN0JLO1VBcUZpQkosYUEzRFB6OUMsUUFyQ2lCenhEO1VBZ0d0Qm12RyxhQWhHc0Judkc7VUFnRzNCb3ZHLE1BaUJNQzs7Ozs7Y0EzR0RYLGVBNkJEcDdFO1FBNkR5QjI3RTtRQUFaQztRQUFaQztRQUFMQzs7O1lBSUcsa0NBM0JIM3ZHLE9BcENVZ3lEO1NBMkRtQnc5QyxvQkFBWkMsZ0JBQVpDLGFBdkJMMXZHLE9BdUJBMnZHOzs7WUExRktWLGVBNkJEcDdFO01BNkR5Qmk4RTtNQUFaQztNQUFaQztNQUFMQztNQUE2QlQsaUJBQUFNO01BQVpMLGFBQUFNO01BQVpMLGFBQUFNO01BQUxMLE1BQUFNOztxQkEzREFkO0tBa0dhOztPQUFWLGtDQWxGRUU7WUFrRlEsa0NBbEZSQTtNQW9GRyxHQUFBLGtDQXBGSEEsYUE0RUxhO1VBQUFBLE9BNUVLYjs7O1NBNEVMYSxPQTNIS2pCLGVBNkJEcDdFOzt5QkFFSnM3RTtLQXlHYTs7T0FBVixrQ0F6RkVFO1lBeUZRLGtDQXpGUkE7TUEyRkcsR0FBQSxrQ0EzRkhBLGFBNEVMYTtVQUFBQSxPQTVFS2I7OztTQTRFTGEsT0EzSEtqQixlQTZCRHA3RTs7MEJBa0JLdTdFO1NBNEVUYyxPQTNIS2pCLGVBNkJEcDdFO1lBcUhFLGtDQW5HRHc3RTtTQTRFTGEsT0EzSEtqQixlQTZCRHA3RTs7O1FBdUhPLGtDQXJHTnc3RTs7O1FBcUdrQixrQ0FqRmxCdGtFO2FBaUY2QixrQ0ExRGxDNGtFLGFBQTZCSDs7VUFpQzdCVSxPQTNIS2pCLGVBNkJEcDdFOzs7U0E4RkpxOEUsT0E1RUtiOztJQTBHSjtLQUREeDNDO09BQ0Msa0NBdEZJOXNCO1VBbkVBa2tFLGVBNkJEcDdFO1VBc0NDa1g7S0F3RkxvbEU7T0FDQyxrQ0FsRURSO1VBMUZLVixlQTZCRHA3RTtVQTZESjg3RTs7O1VBb0VnQixrQ0FIaEJRLGNBakU2Qlgsb0JBb0U3QlksZUFwRWlCWDtTQW9FakJXOztJQUNKLE9BQUEsV0FsSWdCbmxILEdBQVI0b0MsUUE4RkpxOEUsTUE2QkFyNEMsT0FHQXM0QyxPQWpFS1QsWUFvRUxVO0dBQzBDO1lBRzVDQyx1QkFBd0IzbUgsT0FBS2lXLEtBQUlrMEIsUUFBSzVvQztJQUdwQzs7T0FBQTs7U0FIc0J2QjtTQUFLaVc7OytCQUFJazBCOztTQUtyQjR2QyxnQkFBQTZzQyxVQUFBN3NDOztLQUV1QztNQURwQ3Q3RTtNQUNvQyxNQUFBLDJCQURwQ0E7TUFESG1vSCxVQUVWO1FBTks5OUMsUUFJSzg5QyxZQUpWM21ILFFBSVUybUg7SUFJWCxHQUFBLGtDQVJNOTlDO0tBU0osT0FBQTtJQUVNLElBQUw2OEMsS0FBSywwQ0Fad0J4N0UsUUFDL0JscUM7SUFZQyxHQUFBLGtDQURDMGxIO0tBQ1k7SUFDYixHQUFBLGtDQWJJNzhDO0tBY0YsT0FBQSxXQWZpQ3ZuRSxHQUFMNG9DLFFBWTdCdzdFLFVBWEYxbEgsUUFBSzZvRTtJQWVDLEdBQUEsa0NBZkRBO0tBZ0JGLE9BQUE7SUFDbUIsVUFBQSxnQkFsQlMzK0IsUUFDL0JscUM7SUFpQlUsS0FBQTtLQUNQLE9BQUE7SUFFTztLQUFOb2hELE1BQU0sMENBckJxQmxYLFFBQy9CbHFDO0lBcUJHLEdBQUEsa0NBRENvaEQ7S0FDYztJQUNmO0tBQUEsTUFBQSxrQ0FYRHNrRTtLQVdDLFlBQVcsa0NBRlZ0a0U7SUFFVSxRQUFjO0lBQ3pCLEdBQUEsa0NBdkJFeW5CO0tBd0JBLE9BQUEsV0F6QitCdm5FLEdBQUw0b0MsUUFZN0J3N0UsSUFTRXRrRSxRQXBCSnBoRCxRQUFLNm9FO0lBeUJHLEdBQUEsa0NBekJIQTtLQTBCQSxPQUFBO0lBQ21CLFVBQUEsZ0JBNUJPMytCLFFBQy9CbHFDO0lBMkJZLEtBQUE7S0FDUCxPQUFBO0lBRU87S0FBTmdtSCxNQUFNLDBDQS9CbUI5N0UsUUFDL0JscUM7SUFrQ0ssR0FBQSxrQ0FKQ2dtSDtLQUlhLHdDQUpiQTtJQUtEO0tBQUEsTUFBQSxrQ0F4QkhOO0tBd0JHLFlBQVcsa0NBTFZNO0lBS1UsUUFBYztJQUN6QixHQUFBLGtDQXBDQW45QztLQXFDRSxPQUFBLFdBdEM2QnZuRSxHQUFMNG9DLFFBWTdCdzdFLElBU0V0a0UsS0FVRTRrRSxLQTlCTmhtSCxRQUFLNm9FO0lBc0NLLEdBQUEsa0NBdENMQTtLQXVDRSxPQUFBO0lBRUcsY0FBQSxnQkExQ3FCMytCLFFBQy9CbHFDOztLQXdEVyxPQUFBO0lBYkw7S0FBSStsSCxhQTNDVi9sSDtLQWpKZ0Vxb0UsUUFpSmhFcm9FLFFBQUs2b0U7S0FqSnNEeHlELFFBNExqRDB2RztLQTNMVkc7S0FDSixNQUZvRTc5QztjQUFMaHlEO1NBRS9EdlcsTUFGK0R1Vzs7TUFHdkQsWUFBQSxnQkE2STJCNnpCLFFBOUluQ3BxQzs7Ozt1QkFESW9tSDs7O09BbkJLWixlQWtLMEJwN0U7O01BOUluQyxVQUFBcHFDO2lCQUFBQTtVQUFBQTs7Ozs7UUFESW9tSDtNQW1Nb0IsR0FBQSxrQ0FyQmRGLGNBY0lGO01BUVUsR0FBQSxrQ0F6Q2xCSjs7UUFpQ1FJO1VBUXFCOzs7O1NBUnJCQSxhQTVDTGo5Qzs7SUF1REMsT0FBQSxXQXhEOEJ2bkUsR0FBTDRvQyxRQVk3Qnc3RSxJQVNFdGtFLEtBVUU0a0UsS0FhSUQsWUFDQUQ7R0FZMkM7Ozs7Ozs7O09BOUx2RGhqRDtPQXFJQTRqRDtPQWxLT3BCO09BeEJQUDtPQUNBQzs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNORnI1QjtJQUFBRjtJQUFBQztJQUFBdkM7SUFBQUY7SUFBQUM7SUFBQWI7SUFBQUY7SUFBQUM7SUFBQXFDO0lBQUFGO0lBQUFDO0lBQUFwRDtJQUFBRjtJQUFBQztJQUFBdEI7SUFBQUY7SUFBQUM7SUFBQWhCO0lBQUFGO0lBQUFDO0lBQUF4QztJQUFBRjtJQUFBQztJQUFBZjtJQUFBRjtJQUFBQztJQUFBZjtJQUFBRjtJQUFBQztJQUFBZjtJQUFBRjtJQUFBQztJQUFBK047SUFBQTlPO0lBQUFGO0lBQUFDO0lBQUFmO0lBQUFGO0lBQUFDO0lBQUFoQjtJQUFBRjtJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUFBQTtPQUFBRDtPQUFBRTtPQUFBZ0I7T0FBQUQ7T0FBQUU7T0FBQWU7T0FBQUQ7T0FBQUU7T0FBQThPO09BQUEvTjtPQUFBRDtPQUFBRTtPQUFBZTtPQUFBRDtPQUFBRTtPQUFBZTtPQUFBRDtPQUFBRTtPQUFBZTtPQUFBRDtPQUFBRTtPQUFBd0M7T0FBQUQ7T0FBQUU7T0FBQWdCO09BQUFEO09BQUFFO09BQUFzQjtPQUFBRDtPQUFBRTtPQUFBb0Q7T0FBQUQ7T0FBQUU7T0FBQXJDO09BQUFEO09BQUFFO09BQUFhO09BQUFEO09BQUFFO09BQUF1QztPQUFBRDtPQUFBRTs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDQ0U7SUFBQTs7Ozs7Ozs7Ozs7OztJOzs7OztJQUVBem9GO0lBQUFDO0lBQUF1STtHQUFBLFNBQUF0SSxLQUFBaEUsR0FBQSxPQUFBLFdBQUFzTSxNQUFBdE0sR0FBZ0Q7T0FBaEQ2VjtZQUVJMnhHLE9BQU9ob0g7SUFDVCxRQUFNLDRCQURHQTtLQUdpQixNQUFBO0lBRGM7R0FDRTtZQVNsQ1csV0FBV1gsR0FaakJnb0gsT0FZaUJob0gsSUFDYixPQURhQSxFQUVaO1lBR0NVLFdBQVdWLEdBakJqQmdvSCxPQWlCaUJob0gsSUFDYixPQURhQSxFQUVaOzs7Ozs7Ozs7Ozs7WUFGQ1UsWUFMQUM7Ozs7Ozs7OztJQVdOWjtZQUVBTCxVQU1BQztJQU5ZLFNBTVpBO0tBQUssT0FBQSw2REFBTEE7SUFKUSxJQUFKSyxJQUFJLDRCQUlSTDtJQUhBLElBNUJBcW9ILE9BMkJJaG9IO1VBRURpb0g7S0FBMEIsSUFBMUJoMUQsd0JBQUFnMUQsTUFBMEIsTUFBQSx5QkFBMUJoMUQ7S0FBSyxrQ0FFUnR6RDs7SUFEQSxPQUhJSztHQUlzRTtHQU45RCxJQVNaK1k7Ozs7Ozs7Ozs7Ozs7Ozs7T0FUQXJaO09BRkFLO09BV0FnWjtPQXBDSnpVO09BQUFDO09BQUFDO09BQUE2Ujs7Ozs7Ozs7Ozs7U0EyQkkzVztTQUZBSztTQVdBZ1o7U0FwQ0p6VTtTQUFBQztTQUFBQztTQUFBNlI7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7SUNKQXhjO0lBZ0pFdUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaEpGO0lBaUlJa0I7SUFlRkM7SUFoSkZ1STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUFBLFNBQUF0SSxLQUFBaEUsR0FBQSxPQUFBLFdBQUFzTSxNQUFBdE0sR0FDK0M7R0FEL0M7SUFBS3dZO0lBQUFFO0lBQUFFO2lFQUFMdmY7SUFBQXlmO0lBQUFFO0lBQUFELHVCQUFBQztZQUdJMHVHLFFBQVF4bEgsR0FBSSxPQUFKQSxFQUFLO1lBQ2J5bEgsUUFBUW5vSCxHQUFJLE9BQUpBLEVBQUs7WUFDYm9vSCxjQUFjMWxILEdBQUksT0FBSkEsU0FBYTtZQUMzQjJsSCxjQUFjcm9ILEdBQUksT0FBSkEsU0FBYTtZQUMzQnNvSCxNQUFNNWxILEdBQUksT0FBSkEsV0FBZ0I7WUFDdEI2bEgsTUFBTXZvSCxHQUFJLE9BQUpBLFdBQWdCO1lBQ3RCd29ILFVBQVUxeEcsR0FBSSxPQUFNLDJCQUFWQSxZQUEwQjtZQUNwQzJ4RyxVQUFVem9ILEdBQUksT0FBYSwyQkFBakJBLFlBQTBCO1lBRXBDMG9ILGtCQUFrQnYrRSxHQUFHdytFO0lBQ3ZCLE9BQUEsMkJBRG9CeCtFLEdBQUd3K0U7R0FDc0I7WUFHM0NDLG1CQUFtQnorRSxHQUFHMCtFO0lBQWlCLE9BQUEsMkJBQXBCMStFLEdBQUcwK0U7R0FBc0Q7WUFFNUVDLHlCQUF5QjMrRSxHQUFHMCtFO0lBQzlCLE9BQUEsMkJBRDJCMStFLFVBQUcwK0U7R0FDeUI7WUFHckRFLGlCQUFpQjUrRSxHQUFHMCtFO0lBQ3RCLE9BQUEsMkJBRG1CMStFLFlBQUcwK0U7R0FDcUM7R0FJM0QsU0FBQTlvSDtJQUFBLDhCQUlFOzs7T0FIQTtRQUFBaXBIO1FBQUFoa0IsV0FBQSxtQ0FBQWdrQjtPQUFBLHdCQUFBaGtCOztPQUNBO1FBQUFpa0I7UUFBQWpqQixXQUFBLG1DQUFBaWpCO09BQUEsd0JBQUFqakI7O09BQ0E7UUFBQWtqQjtRQUFBQyxXQUFBLG1DQUFBRDtPQUFBLHdCQUFBQzs7T0FFQTtRQUFBOThGO1FBQUFDLFdBQUEsbUNBQUFEO09BQUEsd0JBQUFDOztPQUNBO1FBQUFDO1FBQUFDLFdBQUEsbUNBQUFEO09BQUEsd0JBQUFDOztPQUNBO1FBQUFDO1FBQUFDLFdBQUEsbUNBQUFEO09BQUEsd0JBQUFDOztPQUNBO1FBQUFDO1FBQUFDLFdBQUEsbUNBQUFEO09BQUEsd0JBQUFDOztHQUNrQjtZQUVoQnc4RixTQUFVQyxXQUFZLFdBQVpBLFdBQThCO1lBQ3hDQyxXQUFZRCxXQUFZLFdBQVpBLFdBQWdDO1lBQzVDRSxRQUFTRixXQUFZLFdBQVpBLFdBQTZCO09BQ3RDRztZQUNBQyxRQUFTSixXQUFZLFdBQVpBLFdBQTZCO1lBQ3RDSyxVQUFXTCxXQUFZLFdBQVpBLFdBQStCO1lBQzFDTSxJQUFLTixXQUFZLFdBQVpBLFdBQXlCO1lBQzlCTyxNQUFPUCxXQUFZLFdBQVpBLFdBQTJCO1lBRWxDUSxhQUFhN3BIO0lBQ2YsVUFEZUEsZ0JBS0osT0FBQTtXQUxJQTs7V0FFSnFwSCxZQUZJcnBIO09BRVMsT0FBQSx3Q0FBYnFwSDs7V0FDRVMsY0FIRTlwSDtPQUdXLE9BQUEsd0NBQWI4cEg7O1dBQ0hDLGNBSksvcEg7T0FJUSxPQUFBLHdDQUFiK3BIOztXQUVBQyxjQU5LaHFIO09BTVEsT0FBQSx3Q0FBYmdxSDs7V0FDRUMsY0FQR2pxSDtPQU9VLE9BQUEsd0NBQWJpcUg7O1dBQ05DLGNBUlNscUg7T0FRSSxPQUFBLHdDQUFia3FIOztXQUNFQyxjQVRPbnFIO09BU00sT0FBQSx3Q0FBYm1xSDs7R0FBcUM7WUFJN0NDLE9BQU81cEgsR0FBRTRwSDtJQUNDLElBQVJDLFFBQVEsMkJBREg3cEg7YUFFTDhxQyxPQUFPNjhEO0tBQVEsT0FBQSxXQWZmMGhCLGFBYU9PLFNBRUFqaUI7SUFBd0M7SUFDaEQsR0FBQSw0QkFGQ2tpQixZQUdDO0lBQ0csR0FBQSw0QkFKSkE7S0FLQyxVQUpELytFLE9BRks5cUM7S0FNSixPQUFBOztJQUNHLEdBQUEsNEJBTko2cEg7S0FPQyxVQU5ELytFLE9BRks5cUM7S0FRSixPQUFBOztJQUNBLFVBUEQ4cUMsT0FGSzlxQztJQVNKLE9BQUE7R0FBNEI7WUE4Q2pDQyxVQWxDY0Q7SUFDQSxJQUFSNnBILFFBQVEsMkJBREE3cEg7SUFFWixTQUFJOHFDLE9BQU82OEQ7S0FBUSxPQUFBLHdDQUFSQTtJQUE0QjtJQUNwQyxHQUFBLDRCQUZDa2lCLFlBR0M7SUFDRyxHQUFBLDRCQUpKQTtLQUtDLFVBSkQvK0UsT0FGUTlxQztLQU1QLE9BQUE7O0lBQ0csR0FBQSw0QkFOSjZwSDtLQU9DLFVBTkQvK0UsT0FGUTlxQztLQVFQLE9BQUE7O0lBQ0EsVUFQRDhxQyxPQUZROXFDO0lBU1AsT0FBQTtHQUE0QjtZQUcvQjhwSCxpQkFBaUJsL0UsS0FBSW0vRTtJQUNqQixZQUFBLDRCQURhbi9FOztTQUVaby9FO0tBQU8sT0FBQSxXQUZTRCxpQkFFaEJDOztJQUVFLGNBQUEsNEJBSlVwL0U7O1NBS1RxL0U7S0FBTyxPQUFBLFdBTE1GLGlCQUtiRTs7SUFFRSxjQUFBLDRCQVBPci9FO2tCQVNILE9BQUEsd0NBVEdBO1FBUU5zL0U7SUFBYSxPQUFBLFdBUkhILGlCQVFWRztHQUN1RTtZQWF0Rm5xSCxVQVZjNnFDO0lBQ1osU0FBSSs4RCxRQUFNLzhEO0tBQU0sT0FBK0Msa0RBQXJEQTtJQUFvRTtJQUM5RSxPQWRFay9FLGlCQVlVbC9FLEtBQ1IrOEQ7R0FDc0I7R0FnQlQ7SUFBakJwdkYsaUJBQWlCO2lEQVJuQnhZLFdBQUFFO0lBVXVEZjtJQUFBZ0c7SUFDeENyQjtJQUFBRDtJQUFBRDtJQUFBdEQ7SUFrQmZRO0lBQUFDO0lBQUFMO0lBQUFIO0lBZkUsY0FBWSw0Q0FIQ0Q7SUFHYixNQUFBO0lBQUFuRyxRQUFBO0lBQUEsTUFBQTtJQUFZaUssZ0JBQVosV0FBQSwrQkFBQWpLO0lBQUFvSyxxQkFlRmhFLFlBQUFHO0lBZkVnRSxxQkFlRjNELGNBQUFEO0lBZkU2RCxjQUFZUCxlQUFaRyxnQkFBQUc7WUFLSU8sWUFBVTdGO0lBQ1osSUFBTSxJQUNKd29HLFVBREksNEJBRE14b0csT0FFRCxPQUFUd29HO2VBQ2UsT0FBQSxXQVprQ3pvRyxXQVN2Q0M7R0FHbUI7R0FPbkM7Ozs7O1NBQUFtQjtTQUFBRztTQUFBSztTQUFBRDtTQWZjc0Q7U0FBWkc7U0FBQUc7U0FBQUM7U0FBQVo7U0FLSWtCO1NBVGlERTs7Ozs7Ozs7SUFtQnZEUDs7Ozs7Ozs7Ozs7O0lBQUE7Y0FBSyw4Q0FsQlV0RTtJQWtCZixNQUFBO0lBQUE2RCxVQUFBO0lBQUEsTUFBQTtJQUFLa0I7TUFBTCxXQUFBLCtCQUFBbEI7SUFBQXFCLHFCQUFBakYsWUFBQUc7SUFBQWlGLHFCQUFBNUUsY0FBQUQ7SUFBQThFLGNBQUtQLGVBQUxHLGdCQUFBRztHQUFBLFNBQUFYLE9BQUEvRSxHQUFBLE9BaEpGZ0UsS0FnSkVoRSxHQUF5RDtHQUF6RDttRUFBQTRDO0lBQUFpMUU7SUFBQUM7SUFBQUMseUJBQUFELGlCQWhKRi8rRDtJQWtKTWloRDtZQUNBcWhCLFFBQVE3N0UsR0FBSSxPQUFBLDJCQUFKQSxHQUFrQjtZQUUxQm1oSCxzQkFEUW5oSCxHQUFJLFdBRFo2N0UsUUFDUTc3RSxHQUFtQjtZQUUzQnk2RCxVO1lBQ0F1a0QscUI7WUFDQW9DLFVBQVVwaEgsR0FBSSxPQUhkbWhILHNCQUdVbmhILFNBQUFBLE9BQXdEO1lBQ2xFMnFILGlDO1lBQ0FDLDhCO1lBQ0FDLDhCO1lBRUF4SixVQUFVdC9HLEtBQ1osS0FEWUEsWUFYVnk0RCxVQWNLci9ELElBSEs0RyxRQUdBLE9BQUw1RyxFQUFXO1lBR2hCbW1ILFVBQVV0aEg7SUFDWixHQWZFbWhILHNCQWNVbmhILElBRVAsT0FGT0E7Ozs7Ozs7Ozs7OztHQUdtRDtZQUc3RDBqQixNQUFNMWpCLEdBQUc2bUc7SUFBVSxPQXBCbkJzYSxzQkFvQk1uaEgsS0FBQUEsSUFBRzZtRztHQUEwRDtZQUNuRTkvRixZQUFVL0c7SUFBSSxVQWxCZG9oSCxVQWtCVXBoSDtJQUFJLE9BQUEsNEJBN0NxQzBGO0dBNkNPO1lBQzFEZSxZQUFVOUc7SUFBTyxPQWRqQjBoSCxVQWNpQixXQUFBLDRCQTlDa0MzaEgsWUE4Q3pDQztHQUF3RDtHQUNMO0lBQUEsTUFBQSw0QkFqRC9Eb1o7SUFpREVxeUMsbUJBQWlCO0lBWUUsc0JBckNuQnl3QixTQUlBbWpDO0lBZ0NpQjtZQVF2QjhMLFFBQVE5cUgsR0FBSSxPQUFBLHFCQUFKQSxPQUFVO1lBQ2xCK3FILE1BQU0vcUgsR0FBRTBDLEdBQUksT0FBTjFDLElBQUUwQyxFQUFVO1lBQ2xCbzBHLE1BQU05MkcsR0FBRTBDLEdBQUksT0FBTjFDLElBQUUwQyxFQUFVOztJQVNwQmsxRTtJQVFBb3pDO0lBQ0FDO0lBUEExSjtJQUNBdnlDO0lBQ0FDO0lBSEFDO0lBTUFnOEM7SUFEQXZ6QztJQUlBd3pDO0lBRVFoOEM7SUFBQUM7SUFBQUM7SUFBQWtFO0lBQUFDO0lBQUFDO0lBQUFIO1lBUFJJLFVBUldsekUsR0FBRW1XLEdBQUksT0FBTm5XLElBQUVtVyxFQUEwQjs7OzBDQXZEbkN4UixXQW5CdURPLGFBNkUzRGt5RTs7Ozs7Ozs7Ozs7OztJQXFCRW5tQztZQUNBMjVFLDRCQWxIa0NoZ0Y7SUFrSEYsT0FuSTFCay9FLGlCQWlCNEJsL0U7R0FrSHNDO1lBQ3hFaWdGLDRCQUE0QjFySDtJQUFPLE9BRG5DeXJILDRCQUMrRCwwQkFBbkN6ckg7R0FBd0Q7WUFLbEYyckgsU0FBTzlxSCxHQUFFNHBIO0lBQVMsVUFBQSxXQXZMZFAsYUF1TEtPLFNBQUY1cEg7SUFBVyxPQUFBO0dBQTRDO1lBQzlEdXVFLFlBQVV2dUU7SUFBcUIsVUFBQSxXQTVCbkMwdUUsVUE0QmMxdUU7SUFBcUIsT0FBQTtHQUFVO1lBQ3pDb0ksWUFBVTVJLEdBQUksV0FEZCt1RSxZQUNVL3VFLElBQTJCOzs7Ozs7OztPQXhGckN1RTtPQWhKRkM7T0FBQStVO09BQUFEO09BbUhFL1k7T0FBQUU7T0FVdURmO09BQUFnRztPQW1CdkQ1RTtPQUFBRztPQUFBSztPQUFBRDtPQWxCZVI7T0FBQXNEO09BQUFDO09BQUFDOzs7Ozs7OztPQWtCZmM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bc0VJZ3FFO09BQUFDO09BQUFDO09BQUFrRTtPQUFBQztPQUFBQztPQUFBSDtPQXRORHQ2RDtPQUFBRTtPQUFBRTs7UUE0S0NneUM7UUE1QkpqbUQ7UUFBQVo7UUFBQWdCO1FBMEJJd0I7UUExQkp3eEU7UUFBQUY7UUFFSTdkO1FBSUFDO1FBREEwbUQ7UUFGQXRsQztRQUVBc2xDO1FBb0JBejlGO1FBTkE0OUY7UUFaQXRDO1FBQ0FvQztRQUtBQzs7UUFKQXNKO1FBQ0FDO1FBQ0FDO09BZ0RSMzdDO09BQ0FxeUM7T0FDQXZ5QztPQUNBQztPQUNBeUU7T0FMQWtFO09BT0FzekM7T0FEQXZ6QztPQWpCRW16QztPQW1CRkU7T0FDQUM7T0FuQkVGO09BQ0FqVTtPQTlMSW9SO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BRUFDO09BSUFFO09BRUFFO09BSUFDO09BMk1Kc0M7T0FEQUQ7O1FBck1FcnJIO1FBV0lxcEg7UUFDQUU7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7T0FlRlE7T0FtS0ozNEU7O09BWEYwNUU7OztTQXZGMkR6ckg7U0FBQWdHO1NBbUJ2RDVFO1NBQUFHO1NBQUFLO1NBQUFEO1NBbEJlUjtTQUFBc0Q7U0FBQUM7U0FBQUM7U0FrQmZjO1NBQUFaO1NBaEpGQzs7U0FBQStVO1NBQUFEOzs7VUFnSkV4WTtVQUFBRztVQUFBSztVQUFBRDtVQUFLdUU7VUFBTEc7VUFBQUc7VUFBQUM7VUFBQWhCO1VBQUFaO1VBQUFnQjtVQTJCSWtCO1VBREFNO1dBOERKNkIsYUFEQW1tRSxhQURBdThDOzs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ3hPRkMsVUFBVUMsTUFBTUMsU0FBUzNVO0lBQzNCO0tBQUk0VSxPQUFPLDZCQURPRDtLQUVmLE1BQUEsNEJBRENDO0tBQ0QsYUFBdUIsNEJBRHRCQTtJQUNzQjs7O3lEQUZSRDs7Ozs7O0tBSWhCOztJQUUyQztLQUFBLE1BQUEsdUNBTHpDQztLQUtBQyxTQUFTLGlDQUxURDtJQU1KLE9BQUEsV0FQMkI1VSxPQUFmMFUsTUFNUkc7R0FDYTtZQUdmQyxlQUFlOW1HLEdBQUUrbUcsUUFBT0M7SUFDMUI7TUFBUSxrQ0FEV0Q7U0FDSSxrQ0FESkE7S0FFTjtPQUFWLGtDQUZjL21HO1VBRUosa0NBRk0rbUc7TUFHZCxPQUFBLHdDQUhZL21HLEdBQUUrbUcsUUFBT0M7S0FJckIsT0FBQSx3Q0FKWWhuRyxHQUFTZ25HOztJQUMxQixNQUFBO0dBRzJCO1lBR3pCQyxhQUFjNXpDLE1BQU0ydUMsSUFBSXRrRSxLQUFLNGtFLEtBQUs0RSxJQUFJQyxJQUFJQztJQUM1QyxHQUNLLGtDQUZpQnBGO0tBR3NDO01BQUEsTUFBQSxtQ0FIdENBO01BR3dCLE1BQUM7TUFGM0NsbkgsSUFSRmdzSCxlQU9vQjlFLGFBR1U7O0tBQ3RCO01BSE5sbkg7UUFHTSxrQ0FKWWtuSDtXQVBwQjhFLGVBT29COUUsSUFBSXRrRTtXQU1oQjtvQ0FOZ0JBO2FBUHhCb3BFLGVBT3dCcHBFLEtBQUs0a0U7YUFRckI7c0NBUnFCQTtlQVA3QndFLGVBTzZCeEUsS0FBSzRFO2VBVTFCO3dDQVYwQkE7aUJBUGxDSixlQU9rQ0ksSUFBSUM7aUJBWTlCOzBDQVo4QkE7bUJBUHRDTCxlQU9zQ0ssSUFBSUM7bUJBY3JDLHdDQWRxQ0E7SUFnQjVDLE9BaEJnQi96QyxPQUNadjRFLElBZ0JLLHlDQWhCTEE7R0FpQmE7Ozs7OytCQW5DZjJySCxXQWlCQVE7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJQ29yQlNJOzs7Ozs7O0lBeExENytDOztJQXpnQk44K0M7SUFndkJFOTlFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWh2QkYsU0FBQWhxQyxRQUFBckksT0FBQUM7SUFDVyxHQUFBLCtCQURYRCxPQUFBQyxRQUNXO0lBQUEsSUFBQTRvQixJQUFBLDBCQURYN29CLFVBQUFDO2FBQ1c0b0IsR0FBQSxPQUFBQTtJQUNGLElBQUFDLE1BQUEsbUNBRlQ5b0IsVUFBQUM7YUFFUzZvQixLQUFBLE9BQUFBO0lBQ0MsSUFBQUMsTUFBQSxtQ0FIVi9vQixVQUFBQzthQUdVOG9CLEtBQUEsT0FBQUE7SUFDQSxJQUFBcW5HLE1BQUEsbUNBSlZwd0gsVUFBQUM7YUFJVW13SCxLQUFBLE9BQUFBO0lBQ0QsSUFBQUMsTUFBQSxtQ0FMVHJ3SCxVQUFBQzthQUtTb3dILEtBQUEsT0FBQUE7SUFDQSxJQUFBQyxNQUFBLG1DQU5UdHdILFVBQUFDO2lCQU1TcXdIO2lEQU5UdHdILFVBQUFDO2NBTVNxd0g7R0FMUTtHQURqQixTQUFBN3NILFVBQUEwbkI7SSxTQUFBQTtLQUFBLE9BQUE7NENBQUFnbEcsa0JBQUFobEc7SUFBQTtLQUFBQyxrQkFBQUQ7S0FDSW9sRztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQVBKQztLQUFBQzs7Ozs7Ozs7O21CQUFBM2xHO09BQUE7O1lBQUFPO2lCQUFBQTttQkFBQUE7Ozs7WUFBQXFsRywyQkFBQUM7V0FBQUQsbUJBQUFBOztTQUFBRTtTQUFBQztvQkFBQUg7cUJBQUFJO2FBQUEsS0FBQUo7Y0FBQSxPQUFBO3FEQUFBYixrQkFBQWhsRztnQkFBQTZsRztjQUFBLE1BQUE7aUJBQUFLLFFBQUFMO2FBQUEsT0FBQUs7WUFTd0M7bUJBVHhDRDs7U0FBQUEsaUJBQUFELGlCQUFBSDtnQ0FBQUM7aUNBQUFBO2tDQUFBQTttQ0FBQUE7b0NBQUFBO3FDQUFBQTtzQ0FBQUE7O2dCQUFBRixtQkFBQUUsZ0JBQUFGOztzQkFNSUg7ZUFOSkUsd0JBQUFHLGdCQUFBSDs7ZUFNSTtnQkFOSlEsbUJBQUFGO2dCQU1JRztrQkFBQSxtQ0FOSkQ7ZUFNSVYsZ0JBQUFXOztxQkFMQWhCO2NBREpPLHdCQUFBRyxnQkFBQUg7O2NBQ0k7ZUFESlUsbUJBQUFKO2VBQ0lLLGFBQUEsMEJBREpEO2NBQ0lqQixrQkFBQWtCOztvQkFHQWY7YUFKSkksd0JBQUFHLGdCQUFBSDs7YUFJSTtjQUpKWSxtQkFBQU47Y0FJSU87Z0JBQUEsbUNBSkpEO2FBSUloQixpQkFBQWlCOzttQkFHQWQ7WUFQSkMsd0JBQUFHLGdCQUFBSDs7WUFPSTthQVBKYyxtQkFBQVI7YUFPSVMsYUFBQSxtQ0FQSkQ7WUFPSWYsZ0JBQUFnQjs7a0JBRkFsQjtXQUxKRyx3QkFBQUcsZ0JBQUFIOztXQUtJO1lBTEpnQixtQkFBQVY7WUFLSVcsYUFBQSxtQ0FMSkQ7V0FLSW5CLGdCQUFBb0I7O2lCQUZBdEI7VUFISkssd0JBQUFHLGdCQUFBSDs7VUFHSTtXQUhKa0IsbUJBQUFaO1dBR0lhLGFBQUEsbUNBSEpEO1VBR0l2QixpQkFBQXdCOztnQkFEQXpCO1NBRkpNLHdCQUFBRyxnQkFBQUg7O1NBRUk7VUFGSm9CLG1CQUFBZDtVQUVJZSxhQUFBLG1DQUZKRDtTQUVJMUIsZ0JBQUEyQjs7b0JBRkpqQjs7Ozs7O0tBQUEseUNBQUFmLGtCQUFBeGtHOztPQUFBbWxHO0tBQUEsT0FBQTs7Y0FBQVg7Y0FBQVc7Y0FBQTNsRztPQUFBNGxHO0tBQUEsT0FBQTs7Y0FBQVo7Y0FBQVk7Y0FBQTVsRzs7WUFDSW9sRztZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQzthQUNBQzs7O01BQUF1QjtNQURBQztNQURBQztNQURBQztNQURBQztNQURBQztNQURBQztLQURKLFdBQ0lBLFVBQ0FELFFBQ0FELFNBQ0FELFNBQ0FELFFBQ0FELFFBQ0FEOztJQVBKLE9BQUE7O2FBQUFqQzthQUFBaGxHOzt3QkFDSW9sRzs7eUJBQ0FDOzswQkFDQUM7OzJCQUNBQzs7NEJBQ0FDOzs2QkFDQUM7aUNBQ0FDOztZQVBKL3NIO0lBQUE7S0FPSTZ1SDtLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQU1BQyxVQUFBLG1DQUFBUDtLQVBKUSxnQ0FPSUQ7S0FEQUUsVUFBQSxtQ0FBQVI7S0FOSlMsa0NBTUlELGVBTkpEO0tBS0lHLFVBQUEsbUNBQUFUO0tBTEpVLGtDQUtJRCxlQUxKRDtLQUlJRyxVQUFBLG1DQUFBVjtLQUpKVyxrQ0FJSUQsZUFKSkQ7S0FHSUcsVUFBQSxtQ0FBQVg7S0FISlksa0NBR0lELGVBSEpEO0tBRUlHLFVBQUEsbUNBQUFaO0tBRkphLGtDQUVJRCxlQUZKRDtLQUNJRyxVQUFBLDBCQUFBYjtLQURKYyxrQ0FDSUQsZUFESkQ7SUFBQSxXQUFBRTtHQVN3QztHQVR4QztJQUFLajNHOzs7O1NBQUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRGEsWUFDYnpVLFNBQUE1RSxXQUFBSyxXQUFLZ1o7WUFpRExnNkIsS0FNUy95QyxHQUFJLE9BQUEsa0NBQUpBLEdBQXVCO1lBTGhDKzhELEtBTVMvOEQsR0FBSSxPQUFBLHNDQUFKQSxHQUF5QjtHQTRCZjtJQXBEWGkxRTtJQUFBQztJQTBiNkIrNkM7SUExYjdCdjVHO0lBQUErNUQ7SUFBQXk2QztJQUFBcFU7SUFBQW4vQjtJQUFBcCtEO0lBQUFEO0lBb3RCVnhZO0lBQUFHO0lBQUFJO0lBQUFDO0lBcHRCVVQ7SUFBQXNEO0lBQUFDO0lBQUFDO0lBQUFxc0U7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTB3QztJQUFBdnlDO0lBQUEzNEQ7SUF5dkJWbFI7SUF6dkJVcTlDO0lBQUFDO0lBQUErdEI7SUFBQUQ7SUFBQUQ7SUFBQUQ7SUFBQUQ7O0lBQUF6M0I7SUFvdEJWcDBDO0lBcHRCVUM7SUFBQXdVO0lBQUFFO0lBQUFFOztJQUFBaTZEO0lBQ0FwRTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBa0U7SUFBQUQ7SUFNTjQ4QyxhQTZDaUIsV0FwRFhqN0M7SUFRTms3QyxjQTZDa0IsV0FyRFpsN0M7SUFTTm03QyxjQTZDa0IsV0F0RFpuN0M7SUFVTmxVLFNBNkNhLFdBdkRQa1U7SUFXTm83QyxTQTZDYSxXQXhEUHA3QztJQVlOcTdDLE9BNkNXLFdBekRMcjdDO0lBYU4wcEMsTUE2Q1UsV0ExREoxcEM7WUFnQlJzN0MsU0E4Q2F2d0g7SUFDWDtLQUFJbTRFLE9BQU8sMkJBREFuNEU7S0FFUDB6RCxNQUFJLFdBaEVGaWtCLEtBOERLMzNFO0tBR1B3d0gsV0FBVywyQkFEWDk4RDtLQUVBKzhELGFBRkEvOEQsTUFDQTg4RDtLQUlBenVCLFVBRlUsMkJBRlZ5dUI7S0FJU0UsY0FESywyQkFGZEQ7SUFJQyxHQUFBLHlCQURRQztTQUFBQyxtQkFBVEMsWUFFRyx5QkFGSDd1Qjs7U0FBUzR1QixnQkFBQUQsYUFBVEUsWUFBQTd1Qjs7S0FLQXFsQixNQUxBd0o7S0FNQUMsVUFOQUQ7S0FPQXB1RSxNQURBcXVFO0tBRUEvSixLQUZBK0o7S0FHQTNFLEtBVFN5RTtLQVVURyxlQVZTSDtLQVdUMUUsS0FEQTZFO0tBRUFDLGVBRkFEO0lBSUosV0FwQkkzNEMsTUFjQTJ1QyxJQURBdGtFLEtBRkE0a0UsS0FPQTJKLGNBREE5RSxJQUZBQztHQUs4QjtZQUlsQzE0QyxVQUFNeHpFLEdBQUUwQyxHQUFJLE9BQVcsV0F2RmpCdXlFLFVBdUZBajFFLElBQUUwQyxHQUF3QztZQUNoRCt3RSxVQUFRL3dFLEdBQVUxQyxHQUFXLE9BQXJCMEMsSUFBVTFDLEVBQXVDO1lBR3pEZ3hILE1BQU94d0gsR0FBVyxPQUFYQSxnQkFBNEQ7WUFDbkV5d0gsTUFBT3p3SCxHQUFXLE9BQVhBLGFBQTZEO1lBQ3BFMHdILE1BQU8xd0gsR0FBVyxPQUFYQSxVQUE2RDtZQUNwRTJ3SCxPQUFRM3dILEdBQVksT0FBWkEsRUFBYTtZQUNyQjR3SCxPQUFPNXdILEdBQUksT0FBSkEsSUFwRlA2dkgsT0FvRmlDO1lBQ2pDZ0IsTUFBTTd3SCxHQUFJLE9BQUpBLElBcEZOOHZILEtBb0Y4QjtZQUM5QmdCLE9BQU85d0gsR0FBSSxPQUFKQSxJQXBGUG0rRyxJQW9GOEI7WUFDOUI5YSwrQkFBZ0NyakcsR0FBSSxPQUEyQiwyQkFBL0JBO0dBQXlDO1lBQ3pFa3pFLFVBQU9oeEUsR0FBRzFDLEdBQVcsT0FBVyxXQW5HMUJpMUUsVUFtR0N2eUUsSUFBRzFDLEdBQXlDO1lBR25EdXhILE1BQU0vd0gsR0FBSSxPQUFXLFdBdEdmeTBFLFVBc0dBejBFLGlCQUF1RDtZQUM3RGd4SCxNQUFNaHhILEdBQUksT0FBVyxXQXZHZnkwRSxVQXVHQXowRSxjQUF3RDtZQUM5RGl4SCxNQUFNanhILEdBQUksT0FBVyxXQXhHZnkwRSxVQXdHQXowRSxXQUF3RDtZQUM5RGt4SCxPQUFPbHhILEdBQUksT0FBQSxXQXpHTHkwRSxVQXlHQ3owRSxHQUFnQjtZQUN2Qm14SCxXQUFXbnhILEdBQUksT0FEZmt4SCxPQUNzQiwyQkFBWGx4SCxJQUEyQjtZQUN0Q294SCxpQkFBaUJ4SztJQUFNLE9BRnZCc0ssT0FFOEIsMEJBQWJ0SztHQUFpQztZQUtsRHhqQixpQkFBaUJ3akI7SUFBTSxPQVB2QnNLLE9BTzhCLDBCQUFidEs7R0FBaUM7WUFDbER5SyxPQUFPcnhILEdBQUksT0FkWGt6RSxVQWNPbHpFLEdBdEdQNnZILFFBc0dpQztZQUNqQ3lCLE1BQU10eEgsR0FBSSxPQWZWa3pFLFVBZU1sekUsR0F0R044dkgsTUFzRzhCO1lBQzlCeUIsT0FBT3Z4SCxHQUFJLE9BaEJYa3pFLFVBZ0JPbHpFLEdBdEdQbStHLEtBc0c4QjtZQUU5QnFULHVCQUF1Qmh5SCxHQUFFaXlIO0lBQzNCLE9BRDJCQTs7T0FFWCxPQUZTanlIOztPQUdSLE9BSFFBOztPQUlSLE9BSlFBOztPQUtiLE9BTGFBOztPQU1iLE9BNUJWb3hILE9Bc0J1QnB4SDs7T0FPZixPQTVCUnF4SCxNQXFCdUJyeEg7ZUFRaEIsT0E1QlBzeEgsT0FvQnVCdHhIOztHQVFSO1lBR2ZreUgsc0JBQXNCL3BCLFNBQU04cEI7SUFDOUIsT0FEOEJBOztPQUVkLE9BNUJkVixNQTBCc0JwcEI7O09BR1AsT0E1QmZxcEIsTUF5QnNCcnBCOztPQUlQLE9BNUJmc3BCLE1Bd0JzQnRwQjs7T0FLWixPQTVCVnVwQixPQXVCc0J2cEI7O09BTVosT0FyQlYwcEIsT0Flc0IxcEI7O09BT2QsT0FyQlIycEIsTUFjc0IzcEI7ZUFRZixPQXJCUDRwQixPQWFzQjVwQjs7R0FRSDtZQUduQnh0RixPQUNJNVk7SUFVTixHQVZNQSxTQUFPQyxNQUFQRCxRQUFBbzJFLE9BQU9uMkUsY0FBUG0yRTtJQVVOLGFBVFlsc0MsaUJBQU4weUUsTUFBTTF5RSxnQkFBTjB5RTtJQVNOLGFBUld3VCxpQkFBTHJMLEtBQUtxTCxnQkFBTHJMO0lBUU4sYUFQWXNMLGlCQUFONXZFLE1BQU00dkUsZ0JBQU41dkU7SUFPTixhQU5ZNnZFLGlCQUFOakwsTUFBTWlMLGdCQUFOakw7SUFNTixhQUxXa0wsaUJBQUx0RyxLQUFLc0csZ0JBQUx0RztJQUtOLGFBSld1RyxpQkFBTHRHLEtBQUtzRyxnQkFBTHRHO0lBSU4sYUFIV3VHLGlCQUFMdEcsS0FBS3NHLGdCQUFMdEc7SUFXRjtLQUFBLE9BeERGcUYsTUF3RFEsMkJBWEpyRjtLQVVGLE9BdERGc0YsTUFzRFEsMkJBWEp2RjtLQVVGLE9BcERGd0YsTUFvRFEsMkJBWEp6RjtLQVVGLE9BbERGMEYsT0FrRFMsMkJBWEx0SztLQVVGLE9BekNGeUssT0F5Q1MsMkJBWExydkU7S0FVRixPQXZDRnN2RSxNQXVDUSwyQkFYSmhMO0tBU0Y5bUg7T0FDRjtTQXhKTTBXO1NBd0pOO1dBeEpNQTtXQXdKTjthQXhKTUE7YUF3Sk47ZUF4Sk1BO2VBd0pOO2lCQXhKTUE7aUJBd0pOO21CQXhKTUEsUUFtSE5xN0csT0FxQ08sMkJBWEhwVDs7Ozs7O0lBbUJOLE9BcEJNeG1DLE9BV0ZuNEUsSUFVSyxXQWpLRHl3RSxVQTBiNkJ3L0MsV0FuU2pDandIO0dBV2E7WUFNZnVySCxVQUFVdnJILEdBQUd5ckg7SUFBVSx3Q0FBYnpySCxHQUFHeXJILFNBeEtQM1U7R0F3S3lEO1lBRS9EMmIsZ0JBQWdCenlIO0lBQ2xCO0tBQXFELFFBM0pyRHV3SCxTQTBKa0J2d0g7S0FDaUJrc0g7S0FBSkQ7S0FBSkQ7S0FBTDVFO0tBQUw1a0U7S0FBSnNrRTtLQUFOM3VDO0lBQ1AsT0FBQSxpQ0FET0EsTUFBTTJ1QyxJQUFJdGtFLEtBQUs0a0UsS0FBSzRFLElBQUlDLElBQUlDO0dBQ3NCO1lBd0N2RHp4SCxrQkFBa0JxRixLQUFJSDtJQUFxQixXQUFBLHlCQUF6Qkc7SUFBVyxPQUFBLHlDQUFQSDtHQUE2QztHQUV2RTs7STs7Ozs7Ozs7OztHQUNBOzs7O0k7Ozs7Ozs7WUFFSSt5SCxnQkFBZ0IveUgsTUF4Q2Nnekg7SUF5Q2hDLFNBRGtCaHpIO0tBS0QsT0FWZmxGLHNEQUtnQmtGLE9BQUFBO1FBeENDYSxJQXdDRGI7SUFHaEI7S0ExQ0Y7OEJBRG1CYTtPQWFmO1FBUkkybkc7bUJBQU1yakY7V0FDRixJQUVKbGxCLElBRkksNEJBTk9ZLEdBS0xza0I7cUNBR05sbEI7WUFETSxPQUFBO1dBRUU7WUFBSnpFLElBQUksNEJBRFJ5RTtZQUVxQixPQUFBLDRCQURqQnpFO1dBQ0o7V0FBQSxPQURJQTtVQUVIO1FBRURpYyxNQUFKLHNCQWJlNVc7UUFjUixXQUFBLGdCQWRRQSxHQWFYNFc7Ozs7Ozs7dUJBM0VOMjZHLE9BbUVNNXBCOzt1QkFwRU4ycEIsTUFvRU0zcEI7O3VCQXJFTjBwQixPQXFFTTFwQjs7WUFXRSxHQUFBLHlCQUhGL3dGO2FBR2lDLFdBQUEsZ0JBaEJ0QjVXLEdBYVg0VzthQUdzQixHQUFBLGlEQXpGNUJxNkcsTUE4RU10cEI7O1lBYWdCLEdBbEJRd3FCLFNBa0JSLHlCQUxoQnY3RzthQUsrQyxXQUFBLGdCQWxCcEM1VyxHQWFYNFc7YUFLb0MsR0FBQSxpREE1RjFDbzZHLE1BK0VNcnBCOztZQWVnQixHQXBCUXdxQixTQW9CUix5QkFQaEJ2N0c7YUFPK0MsV0FBQSxnQkFwQnBDNVcsR0FhWDRXO2FBT29DLEdBQUEsaURBL0YxQ202RyxNQWdGTXBwQjs7dUJBaUJJLFdBdk1KbHpCLFVBc0xBa3pCOzs7Ozs7Ozs7V0FMd0J3cUI7Y0E0QnBCO2NBQ0E7Ozs7O2tCQTFCRjs7O1dBNEJSOXlIO01BQ3lEO09BRHpEQywwQkFBQUQ7T0FDeUQsT0FBQSx5QkFEekRDO2NBQ0Esd0NBaENpQlU7O0tBMkNaOztVQUNGVjtTQUFBRCw0QkFBQUM7S0FBTyxPQVRWckYsaUNBS2dCa0YsTUFJYkUsUUFKYUY7O0dBSzREO1lBRzVFMnJDLE9BQVFxbkYsT0FBTXJsRCxRQUFPNjZCO0lBQ3ZCLEtBRFV3cUI7S0FLTCxPQUFBLHdDQUxrQnhxQixTQUFQNzZCO0lBSVgsV0FBQSwrQkFKa0I2NkI7SUFJbEIsT0FBQSx3Q0FKVzc2QjtHQUtnQjtZQWlDOUJzbEQsZ0JBekJpQjV5SCxHQUFVMnlIO0lBeUJBLE9BdEJ2QiwyQkFIYTN5SDs7T0FLQSxXQUFBLFdBblBYNndFLFVBOE9XN3dFLEdBNE1rQml3SDs7Ozs7T0FuTXZCLElBQVI0QyxRQUFRLFdBdlBONTlDLFVBdVBpQiwyQkFUTmoxRTtPQVVMLEdBVmUyeUgsU0FVZixXQXhQTnBSLFVBdVBGc1IsT0EvT0oxQzttQkF5TkE3a0YsT0FhMkJxbkYsaUJBQVYzeUg7OztPQVlBLEdBWlUyeUgsU0FZVixXQTFQWHBSLFVBdVBGc1IsT0E5T0p6QzttQkF3TkE5a0YsT0FhMkJxbkYsaUJBQVYzeUg7OztPQWNUOztVQUFBLFdBNVBGdWhILFVBdVBGc1IsT0E3T0o5eEQ7YUF1TkF6MUIsT0FhMkJxbkYsaUJBQVYzeUg7YUFnQlQ7ZUE5UEZ1aEgsVUF1UEZzUixPQTVPSnhDO2VBc05BL2tGLE9BYTJCcW5GLGNBQVYzeUg7ZUFrQlQ7aUJBaFFGdWhILFVBdVBGc1IsT0EzT0p2QztpQkFxTkFobEYsT0FhMkJxbkYsY0EvSTNCdkIsT0ErSWlCcHhIO2lCQW9CVDttQkFsUUZ1aEgsVUF1UEZzUixPQTFPSmxVO21CQW9OQXJ6RSxPQWEyQnFuRixjQTlJM0J0QixNQThJaUJyeEg7bUJBYmpCc3JDLE9BYTJCcW5GLGNBN0kzQnJCLE9BNklpQnR4SDs7OztJQXlCVTtHQUFvQztZQUMvRHdGLFlBQVU3RixNQUFPLE9BL0NqQit5SCxnQkErQ1UveUgsU0FBd0M7WUFDbEQrRixZQUFVMUYsR0FBSSxPQUZkNHlILGdCQUVVNXlILE1BQWtDO0dBQzNCLElBQWpCb3JELG1CQUFpQjtZQU1qQjNrRCxZQUFVOUcsTUFBTyxPQXZEakIreUgsZ0JBdURVL3lILFNBQXVDO1lBQ2pEb0gsWUFBVS9HLEdBQUksT0FWZDR5SCxnQkFVVTV5SCxNQUFpQztZQU0zQzh5SCxnQkFBZ0I5eUg7SUFHTixJQUFSNnlILFFBQVEsV0ExUkpsN0MsS0F1UlUzM0U7SUFJZixPQUFBLFdBM1JLMHdFLFVBMFJKbWlELE9BN1FGbFU7O2NBZ1JNO2dCQTdSQWp1QyxVQTBSSm1pRCxPQTlRRnZDOztnQkFtUk07a0JBL1JBNS9DLFVBMFJKbWlELE9BL1FGeEM7O2tCQXNSTTtvQkFqU0EzL0MsVUEwUkptaUQsT0FoUkY5eEQ7O29CQXlSTTtzQkFuU0EyUCxVQTBSSm1pRCxPQWpSRnpDOztzQkE0Uk0sV0FyU0ExL0MsVUEwUkptaUQsT0FsUkYxQztHQStSYTtZQUdiNEM7SUFFRjs7Y0FyU0U3Qzs7Y0FDQUM7O2NBQ0FDOztjQUNBcnZEOztjQUNBc3ZEOztjQUNBQztzQkFDQTNSOztHQXNTVTtZQUdWcVUsdUJBQXVCZjtJQUN6QixPQUR5QkE7O09BRVQ7O09BQ0M7O09BQ0E7O09BQ0w7O09BQ0E7O09BQ0Y7ZUFDRDs7R0FBRztZQUlSdkwsZUFBZXA3RSxRQUFRbTNEO0lBQ3pCO0tBQUkzekU7T0FBVSwyREFEVzJ6RTtrREFBUm4zRDtzREFDYnhjOztHQUM2QjtZQTRibkNta0csYUF6Ym9DM25GLFFBQVEyL0I7SUFjMUM7S0FkZ0Rpb0Q7S0FBQUMsb0JBQUFEO0lBQ2hEO1VBRGdEQztNQUV4QyxPQVBOek0sZUFLZ0NwN0U7S0FJbkI7TUFKaUM4bkYsc0JBQUFEO01BRzlDbEIsZUFIOENrQjtNQUkxQzdsRCxTQXJCTjBsRCx1QkFvQkVmO0tBRUcsR0FBQSw0QkFMNkIzbUYsUUFBUTIvQixPQUlwQ3FDO01BRUMsT0FITDJrRDtTQUg4Q2tCLG9CQUFBQzs7R0FjVTtZQTBCdERDO0lBQWlCLG9DQUN5RCxrQkFJaEQ7O0dBQUs7WUFZL0JDLGlCQUFlaG9GO0lBQ2pCLE9BL0RBbzdFLGVBOERpQnA3RTtHQUMwQztZQW1HN0QvcUMsVUF6QmtCK3FDO0lBS2xCLDBCQUxrQkE7S0FRTCxPQTFXYm9tRjs4QkFrV2tCcG1GO0tBU04sT0EzV1pvbUY7OEJBa1drQnBtRjtLQU9OLE9Beldab21GO1FBa1dpQ3Q2Ryw0QkFBZmswQjthQUFlbDBCLEtBekkvQnN2RyxlQXlJZ0JwN0U7SUFjUixlQUFBLGdCQWRRQTs7Ozs7O2FBQVFtNEQsYUFhcEI4dkI7O3FCQWJvQjl2QixhQWFwQjh2Qjs7U0Fib0I5dkIsYUFhcEI4dkI7O09BYjJCbjhHLE9BQVBxc0YsU0F6SXhCaWpCLGVBeUlnQnA3RTtRQW9CWmtvRixjQXJDNkJ2RCxXQUxBenNCLFVBc0JUQztJQWhCMUI7S0FBRyxHQUFBLHlCQU5nQ0QsU0FzQkZwc0Y7TUFxQi9CLE9BUkltOEcsV0FRYSxXQWhlYnJJLEtBK2RBc0ksZUFBQUE7Ozs7O1dBM0YwQ3ZvRCxRQWlEYnU0QixTQWpEeUJsNEM7T0FDMUQ7V0FEOEMyZixVQXVFZjd6RDtRQWxFVCxZQUFBLGdCQWtFTmswQixRQXZFOEIyL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQU9yQ3dvRDtRQUNMLE9BUnNEbm9FOzs7WUFBQW9vRSxnQkFPakRELFlBQUFBLFFBWFBILGlCQTJFY2hvRjs7O2tCQWhFUG1vRjs7a0JBUGlEQzs7a0JBQUFBLFVBSnhESixpQkEyRWNob0Y7O2tCQXZFMENvb0Y7MEJBQUFBOzs7O2VBQUFBLFVBT2pERCxRQVhQSCxpQkEyRWNob0Y7O2tCQWhFUG1vRjs7a0JBUGlEQzs7O2tCQUFBQTswQkFBQUEsVUFKeERKLGlCQTJFY2hvRjs7Ozs7WUF2RTBDb29GLGdCQU9qREQsWUFBQUEsUUFYUEgsaUJBMkVjaG9GOzs7ZUF2RTBDb29GLFVBT2pERCxRQVhQSCxpQkEyRWNob0Y7O29CQWhFUG1vRixhQUFBQSxXQVBpREM7ZUFBQUEsVUFKeERKLGlCQTJFY2hvRjs7WUF2RThCaTRELFVBQUF0NEIsZUFBQUEsUUFBQXM0QixTQUFZajRDLFFBQUFvb0U7O09BTTNDLEdBM0JiTCxlQXFCd0QvbkUsWUEwRHREcW9FLGVBMUQwQzFvRDtXQTBEMUMwb0QsZUE5REZMLGlCQTJFY2hvRjs7O01BcEVSO09BdURKcW9GLGVBL0VGTixlQXFCd0QvbkUsU0FBWjJmLFFBSjVDcW9ELGlCQTJFY2hvRjs7S0FaRztNQUFmMm1GLGVBaVVSZ0IsYUFyVG9CM25GLFFBYlpxb0Y7TUFKd0NDO1FBSXhDRDtVQUdvQyxzQkEzSTFDWCx1QkF5SU1mOztNQUlBNEI7UUFDRjswQkFPY3ZvRixRQXRCaUJrNEQsU0FTN0Jtd0IsZUFUNkJud0I7TUFpQjdCMkUsVUFBUSw0QkFIUjByQjtNQVQ2QkM7UUFhakI7VUF2Y1pwOUcsUUErZEE4OEcsYUEvVk50QixzQkFzVU0vcEIsU0FQQThwQjtNQWdDQXVCLGNBckM2Qk07TUFMQXR3QixVQUtXb3dCOztHQXNDRztZQU8vQ0csK0JBQXlDNXJCO0lBQzlCLElBQVQ3OEQsU0FBUyw0QkFEOEI2OEQ7SUFHeEMsT0FBQSw0QkFGQzc4RCxRQUNBZ2lDO2NBRUMsNEJBSERoaUMsUUFDQWdpQztjQURBaGlDO0dBSU87WUFLVGx4QixJQUFLNDVHLE9BQU8vQixjQUFjaEM7SUFDNUIsT0FBUTthQWxmRnY1RyxRQWlmQ3M5RyxPQWpYUDlCLHNCQWlYNEJqQyxXQUFkZ0M7R0FDc0M7WUFLbERnQyxnQkFBaUJwQixPQUFPWixjQUFjaUM7SUFDeEM7S0FBSVYsY0FuWUp4Qix1QkFrWW1CYSxPQUFPWjtLQUV0QitCLFFBUkY1NUcsSUF2RGlDNjFHLFdBNkRUZ0MsY0FDdEJ1QjtJQUVELEdBQUEsV0ExZkc1aUQsVUF5ZkZvakQsT0FGZW5CO0tBTWY7TUFBQSxNQXZNSkcsdUJBaU0wQmY7TUFLeEIsTUFyQkE4QiwrQkFpQkVQO0tBS0EsT0FBQTs7SUFHRztLQURETTtPQUNDLFdBaGdCRHZTLFVBeWZGeVMsT0FGZW5CO1VBQ2ZXO1VBbllKeEIsdUJBbkdGajFELEtBcWVxQjgxRCxRQUFPWjtLQWFwQmtDLFVBbkJKLzVHLElBdkRpQzYxRyxXQTZEVGdDLGNBUXBCNkI7S0FNQU0sUUFBUSxXQXJnQlIzakQsVUF1ZmFvaUQsT0FhYnNCO0tBRUFFLGtCQWpaTnJDLHVCQWdaTW9DLE9BZGtDRjtLQW9CcEMsTUFyTkpsQix1QkFpTXdDa0I7S0FtQnBDLE1BQUEsd0NBSkVHO0tBSUYsTUFBQTtLQUZBLE1BbE5KckIsdUJBaU0wQmY7S0FpQnRCLE1BQUE7S0FERixNQWhDQThCLCtCQXdCSUQ7SUFTRixPQUFBO0dBRzBDO1lBTTVDUSxzQkFBc0JyQyxjQUFjWSxPQUFPbUI7SUFDN0M7S0FBSU8sWUF4T0p4QixnQkF1T3dCZDtLQUVwQm1DLFFBQVEsV0FuaEJOM2pELFVBaWhCZ0NvaUQsT0FBT21CO0tBT3pDUixjQUFZLDJCQUxaWSxRQURBRztLQU9BQyxZQXhDRnA2RyxJQWdDMkM0NUcsT0FBckIvQixjQU9wQnVCO0tBRUFpQixZQUFZLFdBMWhCVmhrRCxVQWloQmdDb2lELE9BUWxDMkI7SUFHQyxHQUFBLFdBNWhCQzVqRCxVQTBoQkY2akQsV0FoRytCeEU7U0FpRy9CNkQsY0FIQU47WUFNTSxXQTloQkpqUyxVQTBoQkZrVCxXQWhHK0J4RTtTQWlHL0I2RCxjQUhBTjs7S0FTcUI7TUFBakJrQixpQkFUSmxCO01BVUltQixhQWpETnY2RyxJQWdDMkM0NUcsT0FBckIvQixjQWdCaEJ5QztNQUVBRSxhQUFhLFdBbmlCZm5rRCxVQWloQmdDb2lELE9BaUI5QjhCO01BVkpFO1FBWUcsV0FwaUJEdFQsVUFtaUJFcVQsWUF6RzJCM0U7V0E4Ri9CdUQ7V0FTSWtCO01BTkpaLGNBSEFlO0lBY0QsR0FBQSw0QkFYQ2Ysa0JBWUMsa0JBdEJ3Q0U7SUF3QjNCO0tBQVpjLGNBeERKMTZHLElBZ0MyQzQ1RyxPQUFyQi9CLGNBVXBCNkI7S0FpQkUsTUF0UE5kLHVCQTJOd0JmO0tBMEJKLE1BQUEsMEJBaEJoQjZCO0tBZ0JBLE1BQUE7S0FERXhvRixTQUNGO0lBR0YsV0FKSUEsUUFEQXdwRjtHQUtjO1lBMkNsQm5oRCxVQUFPbnpFLEdBQUVtVztJQUNYLE9BQUcsMkJBRE1uVztjQUFFbVc7Y0FDeUI7Z0NBRHpCQTtnQkFBRm5XO2dCQUN5RCxrQ0FEekRBLEdBQUVtVztHQUM0RDtZQTRDdkVsVyxVQXpDWVQ7SUFDQSxJQUFSbW9HLFVBQVEsV0E5bEJOanpCLFVBNmxCTWwxRTtJQUVMLEtBQUEsMkJBREhtb0c7S0FJQSxPQUFBLDJCQUpBQTs7ZUFNTSwwQkFOTkE7SUFTSSxHQUFBLFdBdm1CRnYzQixVQTZsQk01d0UsR0FuS3VCaXdILFlBOEs5QjtJQUVnQjtLQUFmOEUsaUJBblZOakMsZ0JBc1VZOXlIO0tBdENnQzZ5SCxRQW9EOUIsV0EzbUJSbDdDLEtBNmxCTTMzRTtLQWVObTRFLE9BQVUsV0E1bUJWb3BDLFVBNmxCTXZoSCxHQW5LdUJpd0g7O1lBZ0w3QjhFO0tBV1M7WUFYVEE7VUFXUyxXQXJuQlRya0QsVUFxbkJTLFdBcm5CVEQsVUFpQlIxOUIsS0FzaUI4QzgvRSxRQUFBQSxRQTFpQjVDbFU7VUFnbUJNcVcsbUJBdEhKZixnQkFnRTBDcEIsT0FtRHRDa0M7OztLQWtCd0I7TUFBQSxRQTNHNUJULHlCQXNDMEN6QixPQTdIVDVDO01Ba01iK0Q7TUFBWmlCO01BQ3FCLFVBNUc3QlgseUJBc0MwQ3pCLE9BcUV0Qm1CO01BQ0NHO01BQWJlO01BQ3VCLFVBN0cvQloseUJBc0MwQ3pCLE9Bc0VyQnNCO01BdEVjZ0I7TUF1RTNCQztLQXRFUCxHQUFBLFdBeGpCRzFrRCxVQXVqQitCeWtELFNBQU90QztVQXdFbENnQjs7TUFwRUk7T0FBUk8sUUFBUSxXQTNqQlIzakQsVUF1akJzQ29pRCxPQUFQc0M7T0FLL0JsRCxlQXJTTmEsZ0JBb1NNc0I7T0FFQUcsWUFuUk54QixnQkFrUk1kO09BRUF1QixjQUhBWSxRQUVBRztPQUVBQyxZQTlFSnA2RyxJQXNFbUMrNkcsU0FLL0JsRCxjQUVBdUI7T0FFQWlCLFlBQVksV0Foa0JaaGtELFVBdWpCc0NvaUQsT0FRdEMyQjtPQUVZLE1BQUEsV0Fqa0JaNzhDLEtBZ2tCQTg4QztNQUNELEdBQUEsV0Fqa0JDOWpELFVBaWtCRCxXQWprQkNnSCxLQTJqQkF5OEM7V0FvRUlQOztPQTFESjtRQURFd0I7VUFDRiwyQkFBc0IsaUJBVnRCakI7UUFZRWtCLFdBaGZSOWhELFVBZ2ZtQixXQXZrQmIvQyxVQXVqQnNDb2lELE9BcmlCOUM5MUQsS0FxaUI4QzgxRDtRQXFCN0IsTUFBQSwyQkFBcUIsaUJBTDVCeUM7UUFDQUMsaUNBSUY7UUFFRUM7ZUFWQUg7WUFJQUU7O1FBVUFqb0QsU0E1UlIwbEQsdUJBc1FNZjtRQXVCRjtVQUFBO3lDQUxJdUQsa0JBaEJGaEM7UUFpRUlLLGVBNUNOLHVDQURJdm1EOzs7TUEyQkYwbkQ7UUFwQkpyaEQ7VUFtQ1FzaEQ7VUFuQ1J0aEQsVUFvQ1F1aEQsYUFwQ1J2aEQsVUFxQ1F5aEQsZUFDQXZCOzs7U0FsQkptQixtQkF0SEpmLGdCQWdFMENwQixPQW1EdENrQztJQXdCSixPQXpDQXBoRCxVQW1CSXdFLE1BQ0E2OEM7R0FxQnFCO1lBdUgvQnBzSCxZQWxIYzVJLEdBQUksV0FEZFMsVUFDVVQsSUFBMkI7WUFFckM2RyxZQUFVakg7SUFDWixTQURZQTtLQU1WLE9BQUE7c0VBTlVBO1FBRUFZLElBRkFaO0lBR1YsSUFBSyxVQXhLTFcsVUF1S1VDLElBQ0w7VUFDRlg7S0FBcUI7TUFBckJDLDBCQUFBRDtNQUFxQixNQUFBLHlCQUFyQkM7S0FBTyxPQUFBLHdDQUpBRjs7R0FNMkQ7R0FHcEQsSUFBakIybEUsbUJBQWlCO1lBUXJCcEQsY0FDSXBnRSxlQUdEa3dILGNBQ0RqeUg7SUFFSixHQU5NK0IsU0FBWUMsTUFBWkQsUUFBQTB6SCxZQUFZenpILGNBQVp5ekg7SUFNTixZQUxpQnhwRixnQkFBWHdxRSxXQUFXeHFFLGdCQUFYd3FFO0lBS047U0FKc0IwYixnQkFBaEJ1RCxnQkFBZ0J2RDs7U0FBaEJ1RDtJQUtxQyxVQTNZckM1QyxnQkF3WUY5eUg7V0FHSSw0QkFKSGl5SDs7V0FHTTNrRCxtQkFBUDY2QixVQUZBbm9HOztXQUVPc3RFLG1CQUFQNjZCLFVBRkFub0c7O1dBRU9zdEUsbUJBQVA2NkIsVUFGQW5vRzs7V0FFT3N0RSxtQkFBUDY2QixVQUZBbm9HOztXQUVPc3RFLG1CQUFQNjZCLFVBbGtCRWlwQixPQWdrQkZweEg7O1dBRU9zdEUsbUJBQVA2NkIsVUFqa0JFa3BCLE1BK2pCRnJ4SDtlQUlPLElBRlAyMUgsVUFoa0JFckUsT0E4akJGdHhILElBRU9zdEUsU0FBQTYrQyxVQUFQaGtCLFVBQUF3dEI7O0lBV0Y7S0FERXBvRDtPQUNGOzthQWpCSWtvRDthQUNBaGY7aUJBQ0FpZjs7U0FJRnZ0Qjs7O0tBY2tCO09BbEJoQnV0QjtVQWtCZ0IsK0NBZFhwb0Q7VUFhUHNvRCxXQUMwRCxrQ0FkbkR0b0Q7OztTQWFQc29ELFdBYk90b0Q7O0lBZ0JYLE9BQUEsa0NBTklDLFFBR0Fxb0Q7R0FHVztZQUdicmhELFNBQVNzaEQsSUFBR0M7SUFDZCxVQUFBLDRCQURXRCxJQUFHQzttREEza0JScEU7R0E0a0JzRTtZQUcxRWw1QyxpQkFBaUJxOUMsSUFBR0M7SUFHdEIsVUFBQSw0QkFIbUJELElBQUdDO21EQS9rQmhCcEU7R0FrbEI4RTtHQVlwRSxJQUFacUUsWUFwbEJFaEUsT0FvbEJpQjtnQkFDa0MveEg7SUFDdkQsVUFBQSxXQXpzQlUyd0UsVUF5c0JWLFdBenNCVXU2QyxLQXVzQlI2SyxZQUNxRC8xSDtJQUN2RCxhQURGLFdBeHNCWTJ3RSxVQXdzQjZDM3dFLEdBRHJEKzFIO0dBRWtDO0dBRHRDO0lBVkUzOEU7TUFVRixtQ0F4c0JZcGdDOzs2Q0FndEJOczFCLGFBMUVBN3RDOztJQThFSixjQUFZLDRDQXB0QkZJO0lBb3RCVixNQUFBO0lBQUFuRyxRQUFBO0lBQUEsTUFBQTtJQUFZaUssZ0JBQVosV0FBQSwrQkFBQWpLO0lBQUFvSyxxQkFBQWhFLFlBQUFHO0lBQUFnRSxxQkFBQTVELFlBQUFDO0lBQUE0RCxjQUFZUCxlQUFaRyxnQkFBQUc7R0FBQSxTQUFBTSxPQUFBL0UsR0FBQSxPQUFBLFdBcHRCVWdFLE1Bb3RCVmhFLEdBQTZEO1lBS3pEMkgsWUFBVXhJO0lBQ1osSUFBTSxJQUNKd29HLFVBREksNEJBRE14b0c7ZUFHSyxPQW5GZmtILFlBZ0ZVbEg7SUFFRCxPQUFBLFdBM3RCSHMxRSxVQTJ0Qk5rekI7R0FDNkI7R0FLbkM7Ozs7O1NBYkU1akc7U0FBQXpEO1NBQUFHO1NBQUFJO1NBQUFDO1NBQVlxRDtTQUFaRztTQUFBRztTQUFBQztTQUtJaUQ7U0FnQ0poRDtTQUFBeUQ7U0FyQ0FyRDs7Ozs7OztJQWFGO2NBQUssOENBanVCTzFFO0lBaXVCWixNQUFBO0lBQUE2RCxVQUFBO0lBQUEsTUFBQTtJQUFLa0I7TUFBTCxXQUFBLCtCQUFBbEI7SUFBQXFCLHFCQWJFakYsWUFBQUc7SUFhRmlGLHFCQWJFN0UsWUFBQUM7SUFhRjZFLGNBQUtQLGVBQUxHLGdCQUFBRztZQWFJd0MsWUFBVS9JOztLQUNxQixPQUFXLFdBL3VCbENzMUUsVUErdUJrQyw0QkFEaEN0MUU7SUFDc0Q7SUFBNUQsWUFBQTtnQkFFSSxPQXhHTmtILFlBcUdRbEg7UUFFTEs7SUFBSyxPQUFMQTtHQUNpQjs7Ozs7O1NBN0J4QmM7U0FBQUc7U0FBQUk7U0FBQUM7U0FhR3NFO1NBQUxHO1NBQUFHO1NBQUFDO1NBYUl1QztTQVdGRTtTQXp2QlUrdkM7Ozs7O1NBb3RCVjczQztTQUFBRztTQUFBSTtTQUFBQztTQWFHc0U7U0FBTEc7U0FBQUc7U0FBQUM7U0FhSXVDO1NBV0ZFO1NBenZCVSt2Qzs7MENBeXZCVnh6QyxXQUFBeUQsYUEvVHVDcW5IOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTBSdkNudkg7T0FBQUc7T0FBQUk7T0FBQUM7T0FwdEJVVDtPQUFBc0Q7T0FBQUM7T0FBQUM7T0F5b0JOd0M7T0FnSEorQjtPQXZHSTI4RDtPQWxwQk1oc0Q7T0FBQUQ7O09BQUFvM0Q7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQTB3QztPQUFBdnlDO09BQUEzNEQ7T0F5dkJWbFI7T0F6dkJVcTlDO09BQUFDO09BQUErdEI7T0FBQUQ7T0FBQUQ7T0FBQUQ7T0FBQUQ7O09BQUF6M0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FDQXMyQjtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBa0U7T0FBQUQ7T0E2ckJWbDZCO09BOXJCVWxnQztPQUFBRTtPQW9yQlZtN0Q7T0FJQWlFO09BbERJLzNFO09BbEtBRjtPQTdkQTJ2SDtPQUNBQztPQUNBQztPQUNBcnZEO09BQ0FzdkQ7T0FDQUM7T0FDQTNSO09BYk10ckM7T0EwYjZCNDhDO09BL1NuQ3QxRztPQTNIRjQxRztPQXNGRWdCO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BQ0FDO09BS0FodUI7T0FDQWl1QjtPQUNBQztPQUNBQztPQXhCQWY7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQXp0QjtPQWxHTTN1QjtPQUFBeCtEO09BQUErNUQ7T0FBQWtIO09BQUF1ekM7T0FBQXBVO09BdUZOdGpDO09BQ0FDO09BdkVGMWdDO09BQ0FncUI7T0F3SkUwMUQ7T0E2R0FLO09BbUJBQztPQWdYSjV3RDtPQWxmSW9wRDs7O1NBZ0dBL2xIO1NBQ0FFO1NBQ0EwbEQ7U0EwY0p0cUQ7U0FBQUc7U0FBQUk7U0FBQUM7U0FwdEJVVDtTQUFBc0Q7U0FBQUM7U0FBQUM7U0F5dkJWYztTQXJDQVo7U0FwdEJVQztTQUFBNlI7O1NBZ1JONVA7U0FDQU07U0FQQXFrRDtTQTBjSnRxRDtTQUFBRztTQUFBSTtTQUFBQztTQXB0QlVUO1NBQUFzRDtTQUFBQztTQUFBQztTQXl2QlZjO1NBckNBWjtTQXB0QlVDO1NBQUE2Ujs7U0F5b0JOeFA7U0FnSEorQjtTQXZHSTI4RDtTQWtFSnprRTtTQUFBRztTQUFBSTtTQUFBQztTQXB0QlVUO1NBQUFzRDtTQUFBQztTQUFBQztTQXl2QlZjO1NBckNBWjtTQXB0QlVDO1NBQUErVTtTQUFBRDtTQUFBakQ7V0Fnd0JSNDhHLGNBMWNFRDs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ3ZJSTFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFyTUUybUM7SUFKUjE3RDtJQUFBRDtJQWtSSnhZO0lBQUFHO0lBQUFJO0lBQUFDO0lBbFJJVDtJQUFBc0Q7SUFBQUM7SUFBQUM7SUFFUXFTO0lBQUErNUQ7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQXg2RDtJQW1RVi9SO0lBblFVaytDO0lBQUFDO0lBQUErdEI7SUFBQUQ7SUFBQUQ7SUFBQUQ7SUFBQUQ7O0lBbVJSejNCO0lBaEJGcDBDO0lBclFFQzs7SUFHUSs4RztJQUFBdnlDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFrRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQVdSMGlELDJCQWdDK0JoMkg7SUFBSSxPQUFBLGdDQUFKQTtHQUFpQjtZQVc1Q2kySCxTQUFVajJIO0lBQ1o7S0FBSTB6RCxNQTVDTnNpRSwyQkEyQ2NoMkg7S0FFWixNQUFBLHFEQURJMHpEO0lBQ0o7Y0FEUSxnQ0FBSkE7O0dBQzZDO1lBL0NuRHdpRSwrQkFrRHlDMUs7SUFBTyxPQUFBLGdDQUFQQTtHQUF1QjtZQWpEaEUySywrQkFtRHFDM0s7SUFDbkMsT0FSRXlLLFNBN0NKQywrQkFvRHFDMUs7R0FDaUI7WUF0RHRENEssK0JBeURtQzVLO0lBQ2pDO0tBQ0k1ckgsSUFBSSxnQ0FGeUI0ckg7S0FHM0IsUUFBQSwyQkFERjVySDs7S0FHTyxPQUFBOztLQURLLE9BQUE7SUFHUCxHQWxCUHEySCxTQWFFcjJILElBT0csT0FQSEE7SUFNRztLQUFBOzs7Ozs7OzswQkFBY3kySDtXQUFBLE9BQUEsZ0NBQUFBO1VBQTZCOzs7SUFBM0MsT0FBQSx3Q0FSMEI3SztHQVN6QjtHQUljO0lBakV4QjhLLG9CQUxBRjtJQUlBRztZQVRBL2xGLElBNkVTeHdDLEdBQVF3ckg7SUFDUCxJQUFKOTNELE1BREcxekQsSUFDTSxnQ0FERXdySDtJQUVaLE9BNUJEeUssU0EyQkV2aUUsV0FBQUE7R0FDK0I7WUE5RXJDbjRDLElBaUZTdmIsR0FBUXdySDtJQUNQLElBQUo5M0QsTUFERzF6RCxJQUNNLGdDQURFd3JIO0lBRVosT0FqQ0R5SyxTQWdDRXZpRSxXQUFBQTtHQUMrQjtZQWxGckMzZ0IsS0FxRlMveUM7SUFDUyxJQUFadzJILFlBQVksa0NBRFR4Mkg7SUFFSixPQXRDRGkySCxTQXFDRU8saUJBQUFBO0dBQytDO1lBdEZyRHo1RCxLQXlGUy84RDtJQUNTLElBQVp3MkgsWUFBWSxzQ0FEVHgySDtJQUVKLE9BM0NEaTJILFNBMENFTyxpQkFBQUE7R0FDK0M7WUExRnJEcitFLEtBNkZTeU0sSUFBR0M7SUFDVjtLQUEyQyxNQTFGN0NteEUsMkJBeUZZbnhFO0tBQ0MsTUExRmJteEUsMkJBeUZTcHhFO0lBQ29DLE9BQUE7R0FBK0I7R0FLM0Q7SUFBQSxNQXRHakJycEMsSUFTQSs2RztJQTRGRUcseUJBQ0Y7WUFZRTk3RyxPQUFRbXNHLElBQUl0a0UsS0FBSzRrRSxLQUNmNEUsSUFBSUMsSUFBSUM7SUFBWjs7UUFEbUI5RSxjQUFBQTtVQUNQc1AsWUFBSkMsWUFBSkM7OztTQUFRRixPQUFBeEssSUFBSnlLLE9BQUExSyxJQUFKMkssT0FBQTVLOztJQUs2QixPQXBIakNvSzthQW9IaUM7MENBTnZCdFAsSUFBSXRrRSxLQUFLNGtFLEtBQ2Z3UCxNQUFJRCxNQUFJRDtHQUsrRDtZQUd6RW5HLFNBQVN2d0g7SUFBa0IsVUFwSDdCZzJILDJCQW9IV2gySDtJQUFrQixPQUFBO0dBQWdDO1lBRTNENjJILGNBQWVDLFNBQVNDLFNBQVNDLE1BQUtoM0g7SUFDeEM7S0FBSTBXO0tBQ0ErNUQ7S0FDQXdtRDtLQUNBbmdIO0tBSnNCb2dILFlBQVRKLFVBQVNDO1NBQUFHO0tBSzFCLE1BQUE7SUFDNEI7S0FBQSxNQTVINUJsQiwyQkFzSHdDaDJIO0tBTXBDbTNILFlBQVk7S0FDWmxMLEtBQUssMkJBRExrTDtLQUVJUixPQUFpQixXQUpyQjcvRyxHQUlxQixXQUxyQm1nSCxLQUlBaEwsSUFDNEIsV0FONUJ4N0M7S0FNQXU3QyxLQUFTLFdBUFR0MUcsUUFNQXUxRyxJQUNjLFdBTmR4N0M7S0FPS21tRCxPQUFpQixXQUx0QjkvRyxHQUtzQixXQU50Qm1nSCxLQUtBakwsSUFDNkIsV0FQN0J2N0M7S0FPQTIyQyxNQUFVLFdBUlYxd0csUUFPQXMxRyxJQUNlLFdBUGZ2N0M7S0FRS20zQyxRQUFpQixXQU50Qjl3RyxHQU1zQixXQVB0Qm1nSCxLQU1BN1AsS0FDOEIsV0FSOUIzMkM7S0FRQWp1QixNQUFXLFdBVFg5ckMsUUFRQTB3RyxLQUNpQixXQVJqQjMyQztLQVNJbkIsUUFBaUIsV0FQckJ4NEQsR0FPcUIsV0FSckJtZ0gsS0FPQXowRSxLQUM2QixXQVQ3Qml1QjtLQVNBcTJDLEtBQVUsV0FWVnB3RyxRQVNBOHJDLEtBQ2dCLFdBVGhCaXVCO0tBVUFrM0MsT0FBSyxXQVJMN3dHLEdBT0Fnd0c7S0FFQXNRO09BYnNCTCxZQUFTQyxPQWFLLDRCQUxoQ0wsV0FSMkJLO0lBY25DLEdBZGlCRjtTQWNiTyxnQkFkYVA7WUFBa0JFO0tBY0s7TUFBQSxNQUFBLDRCQUwvQko7TUFLTFMsc0JBREFEOztTQUNBQyxnQkFkK0JMO0lBZW5DLEdBZm1DQTtLQWVSO01BQUEsTUFBQSw0QkFMbEJwUDtNQUtMMFAscUJBREFEOztTQUNBQyxlQWYrQk47SUFnQm5DO0tBQUk1L0csTUFEQWtnSCxtQkFEQUQsb0JBREFEO0tBWUE5N0gsTUFBTSwyQkFUTjhiO0lBVUoseUNBREk5YixRQWJBcXNIO0lBZUosMkJBRklyc0g7SUFHSix5Q0FISUEsUUFkSWcwRTtTQUlKZ29EO0tBaUJGLDJCQVBFaDhIO0tBUUYseUNBUkVBLFFBZktzc0g7VUFJTHlQO01BdUJBLDJCQVpBLzdIO01BYUEseUNBYkFBLFFBaEJLczdIO1dBSUxRO09BMEI4Qix5Q0FkOUI5N0gsU0FqQklxN0g7OztJQStCMEIsT0FBQSwyQkFkOUJyN0g7O1lBa0JGaThILGtCQUFrQnYzSCxHQUFJLE9BM0N0QjYySCx1QkEyQ2tCNzJILEdBQTREO1lBQzlFdzNILGNBQWN4M0gsR0FBSSxPQTVDbEI2MkgsdUJBNENjNzJILEdBQTJEO1lBQ3pFeTNILHNCQUFzQnozSCxHQUFJLE9BN0MxQjYySCx1QkE2Q3NCNzJILEdBQTREO09BR2hGc3dIO1lBREZvSCxXQUVFQyxRQUFPQztJQUNUO0tBQXlCLE1BeEszQjVCLDJCQXVLSTJCO0tBQ0VFLFdBQVM7S0FDWSxNQXpLM0I3QiwyQkF1S1c0QjtLQUVMRSxXQUFTO0tBQ1QzL0UsT0FGQTAvRSxXQUNBQztLQUdBOVQsS0FBSywyQkFGTDdyRSxNQUpGbTRFO0tBUUVyTSxLQUFLLDJCQUZMRCxZQU5Gc007S0FTRXh6RCxJQUFPLDRCQURQbW5ELGFBQUFBLGFBQUFBO0lBRUosT0FBQSxnQ0FESW5uRDtHQUNTO1lBS2JyOEQsVUFBVVQsR0FBSSxPQS9EZDYySCx1QkErRFU3MkgsR0FBNkQ7Ozs2Q0FNbkVzdUMsYUFOSjd0Qzs7WUFTQXMzSCxtQkFBbUJ6c0YsUUFBUXc3RSxJQUFJdGtFLEtBQUs0a0UsS0FBS0QsWUFBWUQ7SUFDdkQsR0FDSyx5QkFGa0RBO1NBQ25EOFE7O0tBR21CO01BQUEsTUFBQSwyQkFKRjFzRixRQUFzQjY3RSxZQUFZRDtNQUNuRDhRLFNBR0c7SUFFUDs7T0FBQTsyQkFONkJsUixrQkFBSXRrRSxxQkFBSzRrRTtTQUNsQzRRO0lBS0osT0F2TUE1QjthQXVNQTtHQUVtQztZQUdqQzcxSCxVQUFVWDtJQUFJLHlDQUFKQSxHQVhWbTRIO0dBV3lEO1lBRXpEcjRILFVBQVVDO0lBQ1osU0FEWUE7S0FLTCxPQUFBLDBEQUxLQTtRQUVBQyxJQUZBRDtJQUdWLElBQUssVUFMTFksVUFJVVgsSUFDTDs7OztLQUNrQztNQUFuQnE0SDtNQUFtQixNQUFBLHVEQUFuQkE7S0FBSyxPQUFBLHdDQUpmdDRIOztHQUsrQjtHQUd4QixJQUFqQm9aLGlCQUFpQjtZQW9DckJoWixVQW5DY3lySCxNQUFPLFdBL0JqQi9xSCxVQStCVStxSCxPQUFpQztZQUUzQzBNLDJCQUE0QmgzSCxLQUFLa1csS0FBSWcwQjtJQUN2QztLQUFJOztRQUFBLGtDQUQwQmxxQyxLQUFLa1csS0FBSWcwQixLQXhCckMyc0Y7S0F5QkU7O1VBQ0ZsNEg7S0FJRTtNQUpGQywwQkFBQUQ7TUFJRSxNQUFBLHlCQUpGQztNQUdFLE1BQUEsMkJBTDBCb0IsS0FBS2tXLEtBQUlnMEI7S0FHckMsT0FBQTs7R0FJSTtZQU9SbXBDLFNBQVNzaEQsSUFBR0M7SUFDZDtLQUE4QyxNQXJPMUNFLDJCQW9PVUY7S0FDQSxNQXJPVkUsMkJBb09PSDtLQUNYLE1BQUE7SUFBQSxPQUFBOzBDQXhPSU87R0F5T3lEO1lBRzNENTlDLGlCQUFpQnE5QyxJQUFHQztJQUN0QjtLQUFzRCxNQTFPbERFLDJCQXlPa0JGO0tBQ0EsTUExT2xCRSwyQkF5T2VIO0tBQ25CLE1BQUE7SUFBQSxPQUFBOzBDQTdPSU87R0E4T3lEO0dBR3BDO0lBQXZCcDlHLHVCQVZBdTdELFNBbk9FZ2lELGNBQ0FEO0lBOE9GcDlHO01BQ0Y7OztRQWpQSTg4RztJQW9QRjU4RyxzQkFBc0I7SUFHdEIsY0FBWSw0Q0FyUVZ2WTtJQXFRRixNQUFBO0lBQUFuRyxRQUFBO0lBQUEsTUFBQTtJQUFZaUssZ0JBQVosV0FBQSwrQkFBQWpLO0lBQUFvSyxxQkFhRmhFLFlBQUFHO0lBYkVnRSxxQkFhRjVELFlBQUFDO0lBYkU0RCxjQUFZUCxlQUFaRyxnQkFBQUc7R0FBQSxTQUFBTSxPQUFBL0UsR0FBQSxPQUFBLFdBclFFZ0UsTUFxUUZoRSxHQUE2RDtZQUt6RGdGLFlBQVU3RjtJQUNaLElBQU0sSUFDSndvRyxVQURJLDRCQURNeG9HO2VBR0ssT0FwRGZELFVBaURVQztJQUVELE9BQUEsV0F4UUhzMUUsVUF3UU5rekI7R0FDNkI7R0FLbkM7Ozs7O1NBYkU1akc7U0FhRnpEO1NBQUFHO1NBQUFJO1NBQUFDO1NBYmNxRDtTQUFaRztTQUFBRztTQUFBQztTQUtJTTtTQUxKbEI7U0FBQXZFO1NBQUF3Rjs7Ozs7OztJQWFGO2NBQUssOENBbFJEMUU7SUFrUkosTUFBQTtJQUFBNkQsVUFBQTtJQUFBLE1BQUE7SUFBS2tCO01BQUwsV0FBQSwrQkFBQWxCO0lBQUFxQixxQkFBQWpGLFlBQUFHO0lBQUFpRixxQkFBQTdFLFlBQUFDO0lBQUE2RSxjQUFLUCxlQUFMRyxnQkFBQUc7SUFJSWYsWUFEQXd6QztZQVdBbHlDLFlBQVU5Rzs7S0FDcUIsT0FBVyxXQTdSbENzMUUsVUE2UmtDLDRCQURoQ3QxRTtJQUNzRDtJQUE1RCxZQUFBO2dCQUVJLE9BMUVORCxVQXVFUUM7UUFFTEs7SUFBSyxPQUFMQTtHQUNpQjs7Ozs7O1NBakIxQmM7U0FBQUc7U0FBQUk7U0FBQUM7U0FBS3NFO1NBQUxHO1NBQUFHO1NBQUFDO1NBY0lNO1NBM0JGMUc7U0FnQkU0NEM7Ozs7O1NBSEo3M0M7U0FBQUc7U0FBQUk7U0FBQUM7U0FBS3NFO1NBQUxHO1NBQUFHO1NBQUFDO1NBY0lNO1NBM0JGMUc7U0FnQkU0NEM7b0RBQ0F4ekMsV0FqQkZwRjs7Ozs7Ozs7Ozs7T0FhRmU7T0FBQUc7T0FBQUk7T0FBQUM7T0FsUklUO09BQUFzRDtPQUFBQztPQUFBQztPQXlORTNFO09BNENKSztPQXBDSWdaO09Bak9GUTtPQUFBRDtPQUVRNUM7T0FBQSs1RDtPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBeDZEO09BbVFWL1I7T0FuUVVrK0M7T0FBQUM7T0FBQSt0QjtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDs7Ozs7T0FtUlJ6M0I7Ozs7Ozs7Ozs7T0FsUlE0b0U7T0FBQXZ5QztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBa0U7T0F5UFZ0NkQ7T0FFQUU7T0FJQUU7T0FoQkFtN0Q7T0FLQWlFO09BaENJajRFO09BcEJBRTtPQTFFQWthO09BU0E0MUc7T0FuSEZnRztPQUNBRDtPQTRGRUc7T0E5RkZUO09BSEFJO09BQUFBO09BRUFEO09BREFEO09BTkExbEY7T0FDQWoxQjtPQUNBdzNCO09BQ0FncUI7T0FDQTVrQjtPQXlLRXUvRTtPQUpBSDtPQUNBQztPQW9EQVU7T0FuREFUO09BQUFBOzs7U0FpR04zMkg7U0FBQUc7U0FBQUk7U0FBQUM7U0FsUklUO1NBQUFzRDtTQUFBQztTQUFBQztTQXFRRkM7U0FBQUM7U0FyUUVDO1NBeU5FOUU7U0E0Q0pLO1NBcENJZ1o7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQ25PTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FBUm8vRyxRQUFRO2lCQUNSQyxXQUFXeHpFLElBQVNDLElBQUssT0FBQSxxQkFBZEQsSUFBU0MsSUFBYTtpQkFDakN3ekUsU0FBU3p6RSxJQUFTQyxJQUFLLE9BQUEscUJBQWRELElBQVNDLElBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBTzdCeXpFLG1CQUFtQkM7U0FFckIsV0FBQSxrQ0FGcUJBO1NBRXJCLE9BQUE7UUFDOEI7aUJBRzVCQyxtQkFBbUJDO1NBQ3JCO1VBQUEsT0FBQSwrQkFEcUJBO1VBQ3JCLE9BQUE7VUFBQSxPQUFBO1NBQUEsT0FBQTtRQUk0QjtpQkFpQjFCeHRELE1BQU1qckUsR0FBRXFoRztTQUFPO1VBYmpCLE9BQUEsc0JBYVVBO1VBYlYsT0FBQTtVQUFBLE9BQUE7U0FheUIsT0FBQSxnQkFBakJyaEcsR0FiUjtRQWFpRTtpQkFFL0Rra0csd0JBQXdCbGtHLEdBQUUwNEg7U0FDNUI7VUFUQSxPQUFBLHlCQVE0QkE7VUFSNUIsT0FBQTtVQUFBLE9BQUE7U0FTMEIsT0FBQSxnQkFEQTE0SCxHQVIxQjtRQVNnRjtpQkFHOUU0a0csMEJBQTBCNWtHLEdBQUVpckU7U0FDOUIsT0FuQ0VxdEQsbUJBbUNpQixnQkFEU3Q0SCxHQUFFaXJFO1FBQ3dCO2lCQUdwRG81QiwrQkFBZ0Nya0csR0FBRWlyRTtTQUNwQyxPQWpDRXV0RCxtQkFpQ2lCLGdCQURleDRILEdBQUVpckU7UUFDd0I7aUJBRzFEcTVCLCtCQUFnQ3RrRyxHQUFFaXJFO1NBQ3BDLE9BckNFdXRELG1CQXFDaUIsZ0JBRGV4NEgsR0FBRWlyRTtRQUN3QjtpQkFHMURzNUIsK0JBQWtDdmtHLEdBQUVpckU7U0FDdEMsT0EvQ0VxdEQsbUJBK0NpQixnQkFEaUJ0NEgsR0FBRWlyRTtRQUN3QjtpQkFHNUR5NUIsK0JBQWtDMWtHLEdBQUVpckU7U0FDdEMsT0FuREVxdEQsbUJBbURpQixnQkFEaUJ0NEgsR0FBRWlyRTtRQUN3QjtpQkFHNUQwdEQsYUFBYTM0SCxHQUFFcWhHO1NBRWpCLE9BQXlCLG1DQUZWcmhHLEdBMUJiaXJFLE1BMEJhanJFLEdBQUVxaEc7UUFFc0I7aUJBR3JDdTNCLHVCQUF1QjU0SCxHQUFFaXJFO1NBQzNCLEtBQU0sdUNBRG1CanJFLEdBQUVpckUsUUFFaEI7U0FJTCxXQW5CSnM1QiwrQkFhdUJ2a0csR0FBRWlyRTtTQUl6QixlQXpCQW81QiwrQkFxQnVCcmtHLEdBQUVpckU7UUFNc0I7aUJBSS9DNHRELGlCQUFpQjc0SCxHQUFnQnFoRztTQUFPLE9BVnhDdTNCLHVCQVVpQjU0SCxHQXpDakJpckUsTUF5Q2lCanJFLEdBQWdCcWhHO1FBQThDO2lCQUMvRXkzQixpQkFBaUI5NEgsR0FBa0JxaEc7U0FBZ0MsSUFGMUNrQyxVQXhDekJ0NEIsTUEwQ2lCanJFLEdBQWtCcWhHO1NBRnVCLE9BVDFEdTNCLHVCQVdpQjU0SCxHQUZ5QyxxQkFBakN1akc7UUFFd0Q7aUJBRWpGdzFCLCtCQUFnQy80SCxHQUFFcWhHO1NBQ3BDO1VBQUlrQyxVQTdDRnQ0QixNQTRDZ0NqckUsR0FBRXFoRztVQUdoQzIzQixrQkF6Q0ZwMEIsMEJBc0NnQzVrRyxHQUM5QnVqRztTQUdKLE9BQUEseUJBSm9DbEMsTUFHaEMyM0I7UUFDa0Q7aUJBR3BEQywrQkFBZ0NqNUgsR0FBRTA0SDtTQUNwQztVQUFJenRELFFBbERGaTVCLHdCQWlEZ0Nsa0csR0FBRTA0SDtVQUdoQ00sa0JBaERGcDBCLDBCQTZDZ0M1a0csR0FDOUJpckU7U0FHSixPQUFBLHlCQUpvQ3l0RCxVQUdoQ007UUFDc0Q7UUF0RnhEOzs7Ozs7Ozs7Ozs7Ozs7WUErQkEvdEQ7WUFFQWk1QjtZQUlBVTs7O1lBSUFQO1lBUUFFOztZQUpBRDtZQVFBSTtZQUlBaTBCO1lBeUJBTTtZQVBBRjtZQUZBRDtZQURBRDtpQkFrQkZLLFNBQVN0MEUsSUFBR0M7U0FBYyxXQUFBLGlCQUFqQkQsSUFBR0M7U0FBYyxPQUFBO1FBQVk7aUJBRXRDczBFLGNBQWVuN0IsTUFBSzJqQixNQUFLeVg7U0FDWixJQUFYVixXQUFXLDhCQURPL1csTUFBS3lYO1NBRTNCLE9BQUEscUJBRmlCcDdCLE1BQ2IwNkI7UUFDOEM7aUJBR2hEVyxzQkFBc0IxWCxNQUFLeVgsT0FBT3A3QjtTQUVwQztVQUFJdTRCLGVBUEY0QyxjQUtrQ243QixNQUFaMmpCO1VBR3BCMlg7WUFBZ0IsZ0JBRGhCL0MsY0FDaUMsc0JBSFI2QztVQUl2QixRQUFBLHFCQUo4QnA3QixNQUVoQ3U0QjtxQkFHTSxzQkFGTitDO1NBSTBCOztVQURUQztVQUFiQztVQUNGQyxrQkFBd0IscUJBRFRGO1lBQ2ZFO2NBRUd4bUUsSUFIRHVtRSxhQUdGNTVILElBRUcsZ0JBTEQ0NUgsYUFBYUQ7O1VBTUM7V0FIYnRSLE1BR2EsZ0JBTmR1UixhQUFhRDtXQUdadG1FLElBQUFnMUQ7V0FBSHJvSCxJQUhFNDVIO1NBUUgsR0FBQSxxQkFYREYsZUFNRTE1SDtVQU1DLHNCQVpIMDVIO1NBYTRCO1dBQXRCLHFCQVBKMTVILEdBTkYwNUg7Y0FhNEIscUJBYjVCQSxlQU1Lcm1FO2lCQUZId21FOzs7O3FCQUpGSDtxQkFnQjRCLGdCQWhCNUJBLGVBR2lCQzttQ0FBYkM7U0FlRCxzQkFBTSxnQkFsQlRGLGVBR2lCQztRQWV3QjtRQWM3QyxJQURFRywwQkF6SUF2QixPQUFBQSxPQUFBQTtpQkFrSkF3QjtTQVRBRDtTQUFBQSxnQkF6SUF2QjtTQXlJQXVCLGdCQXpJQXZCO1NBeUlBdUIsZ0JBeklBdkI7U0F5SUF1Qjs7UUFjaUM7aUJBU2pDRSxlQU5ZdjRCLE1BQU1yRDtTQUNwQixXQUFBLG1DQURvQkEsTUFqQmxCMDdCOzs7VUFrQkY7V0FDRyxXQUFBLHNCQUZXcjRCLE1BakJacTRCO1dBbUJDOzhDQUZXcjRCLE1BakJacTRCOzs7Ozs7Ozs7bUJBeUJRO1NBRUk7VUFBUnp1RCxRQUFRLHFCQVZNK3lCLE1BQU5xRDtVQVlSMjNCLGtCQUFrQixxQkFaSmg3QixNQVVkL3lCO1VBR0E0dUQsTUFBTSw4QkFiRXg0QixNQVlSMjNCO1VBRUFyWCxPQUFPLDhCQURQa1k7VUFFTyxPQUFBLDhCQUZQQTtVQUVBck8sT0FBTztVQUVDLE9BQUEsOEJBSlJxTyxLQURBYjtVQUlBYyxzQkFDRiw0QkFGRXRPO1VBSUF1TztZQUFzQixzQkFIdEJEO1lBS0kscUJBckJVOTdCLE1BVWQveUI7VUFlYTtXQUFBLE9BQUEscUJBekJDK3lCLE1BVWQveUI7V0FVQSt1RCxtQkFJQSw0QkFSQUY7O2NBSUFFLG1CQUpBRjtZQVlJLHFCQTVCVTk3QixNQVVkL3lCO1VBc0JhO1dBQUEsT0FBQSxxQkFoQ0MreUIsTUFVZC95QjtXQWlCQWd2RCxtQkFJQSw0QkFaQUY7O2NBUUFFLG1CQVJBRjtTQXBDSkwsZ0JBaUJrQjE3QjtTQWpCbEIwN0IsZ0JBcUNJTTtTQXJDSk4sZ0JBNENJTztTQTVDSlAsZ0JBaUNJSTtTQWpDSkosZ0JBK0JJL1g7O1FBd0JtQjtpQkFHdkJJLFFBQVExZ0IsTUFBTXJEO1NBbkNkNDdCLGVBbUNRdjRCLE1BQU1yRDtnQkExRGQwN0I7UUE0RGE7UUFHQTtTQUFBLE1BQUE7U0FBYlEsYUFBYTtpQkFFYkMsU0FBUzk0QixNQUFNckQ7U0ExQ2Y0N0IsZUEwQ1N2NEIsTUFBTXJEO1NBR2Y7VUFBQSxPQUFBLHNCQUhTcUQsTUFqRVRxNEI7VUFtRUUzSCxTQUNGO1NBR0MsT0FBQSxzQkFKQ0EscUJBSkZtSSxhQUlFbkk7UUFJcUU7aUJBR3ZFcUksY0FBYy80QixNQUFNckQ7U0FBMkIsV0FUL0NtOEIsU0FTYzk0QixNQUFNckQ7U0FBTyxXQWhCM0IrakIsUUFnQmMxZ0IsTUFBTXJEO1FBQThDO2lCQU1sRXE4QixzQkFBc0JoNUIsTUFBTXJEO1NBQzlCO1VBQWtCLFFBUGhCbzhCLGNBTXNCLzRCLE1BQU1yRDtVQUNwQm83QjtVQUFOelg7VUFDQTJZLG9CQUFvQixxQkFGTXQ4QixNQUFOcUQ7VUFHcEJrNUIsMkJBQTJCLHFCQUhEdjhCLE1BQU5xRDs7O1VBa0J4QixHQWZJazVCOztzQkFBQUE7WUFzQmFDO1lBQVB2akg7V0FBdUI7YUFBQTs7ZUFBQSxnQkFBdkJBLE9BQWlDLHFCQUExQnVqSDtlQXpCT241QjtZQTJCWCxHQUFBLHFCQUZJbTVCO2FBaEJULGNBQUEsc0JBUkVwQixPQXdCT29COzs7ZUFmUkM7MENBVEw5WSxNQVNLOFk7O2NBS29COytEQWZDejhCO2VBZUQsT0FBQSxnQ0FmTHFEOzs7Ozs7Ozs7Ozs7O2FBaUNKLEtBQUEscUJBUkhtNUI7Y0FRWCxNQUFBOzs7OztpQkFDUyxnQkFsQ1NuNUIsTUFrQ0MscUJBVFJtNUI7O2dCQVBiRTs7OzthQWhCQUo7O3NCQUFBQTtZQWlDZ0JLO1lBQVBDO1dBQW9CO2FBQUE7O2VBQUEsZ0JBQXBCQSxTQUE4QixxQkFBdkJEO2VBbkNJdDVCO1lBcUNYLEdBQUEscUJBRk9zNUI7OzthQU9BLEtBQUEscUJBUEFBO2NBT2QsTUFBQTs7Ozs7aUJBQ1MsZ0JBM0NTdDVCLE1BMkNDLHFCQVJMczVCOztnQkFqQmhCRDs7OztjQUFBQTs7U0E0QkosV0E3Q0kvWSxNQUFNeVgsT0FpQk5zQjtRQTRCa0I7aUJBR3BCRyxRQUFTQyxTQUFTQyxPQUFNcFosTUFBS3lYO1NBQ2QsSUFBYjRCLGFBektGN0IsY0F3S1MyQixTQUFlblosTUFBS3lYO1NBRS9CLE9BekRFZ0IsY0F3REVZLFlBRGdCRDtRQUVnQjtpQkFHbENFLGFBQVdqN0gsR0FBR2crRjtTQUNoQjtVQUFJazlCLFlBQVkscUJBREFsOUIsTUFBSGgrRjtVQUlYLE9BQUEsZ0NBSldBO1VBR1gsT0FBQSw4QkFGRWs3SDtTQUdGLE9BQUE7UUFBdUI7aUJBR3ZCQyxjQUFjOTVCLE1BQU1yRDtTQUN0QjtVQUFJbzlCLGFBUkZILGFBT2M1NUIsTUFBTXJEO1VBRWxCcTlCLFNBQVMscUJBRFREO1NBRUosR0FESUMsUUFFQztTQUt5QztVQUFBLE9BQUEscUJBUjFDRDtVQVFJLE9BQUE7cUJBREY7VUFESSxPQUFBLHFCQU5OQTtTQU1BLE9BQUE7UUFHQztpQkFHSEUsb0JBQW9CajZCLE1BQU1yRDtTQUM1QjtVQUFrQixRQWpGaEJvOEIsY0FnRm9CLzRCLE1BQU1yRDtVQUNsQm83QjtVQUFOelg7VUFDQTRaLGtCQWZGSixjQWFvQjk1QixNQUFNckQ7VUFJSixXQUFFLHNCQUhoQm83QixZQUNObUM7cUJBRUY7U0FERixXQUFFLDJCQUZFNVo7UUFJSDtpQkFHQzZaLHNCQUFzQm42QixNQUFNckQ7U0FDOUI7VUFBa0IsUUF6RmhCbzhCLGNBd0ZzQi80QixNQUFNckQ7VUFDcEJvN0I7VUFBTnpYO1VBQ0E0WixrQkF2QkZKLGNBcUJzQjk1QixNQUFNckQ7VUFLSixPQUFBLHNCQUpoQm83Qjs7Z0JBSWdCLHdDQUh0Qm1DO1VBR0YsV0FBRSwyQkFKQTVaO1NBSUYsT0FBQTtRQUF1RTtpQkFHdkU4WixjQUFjcDZCLE1BQU1yRDtTQUE4QixXQWhCbERzOUIsb0JBZ0JjajZCLE1BQU1yRDtTQUE4QixPQUFBO1FBQWdDO2lCQUNsRjA5QixjQUFjMTdILEdBQUksT0FEbEJ5N0gsY0FDY3o3SCxZQUFrQztpQkFHaERtL0csd0JBQXdCOWQsTUFBTXJEO1NBQ1QsV0FyQnJCczlCLG9CQW9Cd0JqNkIsTUFBTXJEO1NBQ1QsT0FBQTtRQUFnQztpQkFHckR1NUIsa0JBQWtCdjNILEdBQUdnK0Y7U0FDdkI7VUFBZ0IsUUF6R2RvOEIsY0F3R2tCcDZILEdBQUdnK0Y7VUFDYm9wQjtVQUFOekY7VUFDeUIsT0FBQSxzQkFEbkJ5RjtVQUNhLE9BQUE7VUFBdkIsT0FBQSwyQkFESXpGO1NBQ21CLE9BQUE7UUFBaUM7aUJBR3RENlYsY0FBY3gzSCxHQUFHZytGO1NBQ25CO1VBQWdCLFFBOUdkbzhCLGNBNkdjcDZILEdBQUdnK0Y7VUFDVG9wQjtVQUFOekY7VUFDeUIsT0FBQSxzQkFEbkJ5RjtVQUNhLE9BQUE7VUFBdkIsT0FBQSwyQkFESXpGO1NBQ21CLE9BQUE7UUFBNkI7aUJBR2xEZ2Esd0JBQXdCMzdILEdBQUdnK0Y7U0FBTyxJQUF3QixPQS9DMURtOUIsY0ErQ3dCbjdILEdBQUdnK0YsT0FBTyxPQUxsQ3c1QixjQUt3QngzSCxHQUFHZytGO1NBQStCLE9BQUE7UUFBcUI7aUJBRS9FNDlCLG1CQUFtQjU3SCxHQUFHZytGO1NBQ3hCO1VBQWtCLFFBckhoQm84QixjQW9IbUJwNkgsR0FBR2crRjtVQUNkbzdCO1VBQU56WDtVQUdxQyxNQUFBLHNCQUgvQnlYO1VBR1IsTUFBQTtVQURBLE9BQUE7VUFERixPQUFBLDJCQURJelg7U0FFRixPQUFBO1FBQzhEO2lCQUc5RGthLG1CQUFtQmo4SCxHQUFHbytGO1NBQ3hCO1VBQ1EsWUFBQSw0QkFGYXArRjs7V0FLTjs7WUFEQ3c1SDtZQUFOelg7WUFDRm1hLFNBQU8sMkJBRExuYTtZQUVGOFksVUFBUSxvQ0FGQXJCO1lBR1IyQyxVQUFRLHNCQURSdEI7a0JBbFBOdEIsY0E0T3NCbjdCLE1BS2hCODlCLFFBRUFDOzs7O2NBSkk7VUFLUjs7ZUFFRmw4SDtVQUF5RDtXQUF6REMsMEJBQUFEO1dBQXlELE1BQUEseUJBQXpEQztVQUFPLE9BQUEsd0NBVllGOztRQVU0RDtpQkFHL0VvOEgsb0JBQXFCaCtCLE1BQUs1eUQ7U0FDNUI7VUFDUSxZQUFBLDRCQUZvQkE7O1dBS2I7O1lBRENpMkQ7WUFBTnNnQjtZQUNGbWEsU0FBTywyQkFETG5hO1lBRUZ5WCxRQUFRLHNCQUZBLzNCO2tCQTdQZDgzQixjQXlQcUJuN0IsTUFLZjg5QixRQUNBMUM7O1dBSGdCO1lBQUEsTUFBQSx3Q0FISWh1RjtrQkFHaEI7VUFJUjs7ZUFFRjY4RTtjQUFBaDFELHdCQUFBZzFEO1VBQUssT0FBQSx3QkFBTGgxRDs7UUFBNkM7aUJBRzdDZ3BFLFdBQVdDLGlCQUFnQmw4SCxHQUFHbzVILE9BQU9wN0I7U0FDdkM7VUFBSW0rQixtQkFyS0ZwYSxRQW9LMkIvaEgsR0FBVWcrRjtVQUVuQ28rQixjQXZRRmpELGNBcVFxQ243QixNQUNuQ20rQixrQkFENEIvQzt5QkFBbkI4QztjQUdKaGxCLGVBQUxuc0U7O2NBQUttc0UsZ0JBQUxuc0U7U0FLRCxPQUFBLFdBTENBLEtBREFxeEYsYUFGeUJwOEg7bUJBRXpCbzhIO21CQXZRRmpEO29CQXFRcUNuN0I7b0JBVWQsMkJBVHJCbStCLGtCQUVLamxCO29CQUh1QmtpQjtRQVUwQztpQkFHeEVpRCx1QkFBdUIzeUQ7U0FDekIsSUFBSTR5RCxzQ0FEcUI1eUQ7U0FFdEIsR0FBQSx5QkFEQzR5RDtVQUVhLFVBQUEsZ0JBSFE1eUQ7VUFHdEIsR0FBQTtXQUNjLFVBQUEsZ0JBSlFBLFFBQ3JCNHlEO1dBR0QsR0FBQTtZQUNFLE9BQUEsa0NBTG9CNXlEOzs7U0FNTixVQUFBLGdCQU5NQTtTQU1qQixLQUFBO1VBQXdDLFVBQUEsZ0JBTnZCQTtVQU1ZLEtBQUE7V0FFQTs7YUFBN0IseUJBUEo0eUQ7a0JBT2lDLHlCQVBqQ0E7WUFXQTs7Ozs7aUJBRUU7O21CQWRtQjV5RDttQkFDckI0eUQ7bUJBQUFBOzthQVdBOztnQkFBRSw2QkFabUI1eUQsV0FDckI0eUQ7O1lBV0EsT0FBQTs7V0FIQyxPQUFBLHdDQVRvQjV5RDs7O1NBT3BCLE9BUG9CQTtRQWVwQjtRQUdQOzs7O1M7Ozs7Ozs7Ozs7aUJBRUk2eUQsY0FBZUMsY0FBY0MsV0FBVTc4SDtTQUN6QztVQUVVLFlBQUEsNEJBSCtCQTs7OztnQ0FRakMrK0c7O2FBQ0ssY0FBQSw0QkFETEE7Ozs7ZUFFYStkO2VBQU5DO2VBUklDO2VBQVB4RCxRQVFTc0Q7ZUFSZi9hLE9BUVNnYjs7Ozs7Y0FSSUM7Y0FBUHhEO2NBQU56WDs7OzhCQUtRakQ7MEJBTEtrZSxRQUFQeEQsUUFLRTFhLE9BTFJpRCxPQU1FaEQ7OEJBRmFIOzBCQUpGb2UsU0FJRXBlLE9BSlQ0YSxRQUtFMWEsT0FMUmlELE9BTUVoRDs7O2NBSmtCa2U7Y0FGUEQ7Y0FBUHhELFFBRWN5RDtjQUZwQmxiO2dCQUdBOzs7c0JBR0VoRCxvQkFETUQsc0JBRE9GOzs7Ozs7WUFKRm9lO1lBQVB4RDtZQUFOelg7OztXQVlBbWI7c0JBQWFDO2NBQWlCLFVBQUEsc0JBQWpCQTtjQUFpQixPQUFBO2FBQXFDO2FBWnRESDtlQWFOM0Isa0JBQVBSLFVBYk1yQjs7V0FpQlE7a0JBQUEsZ0JBakJSQSw2QkFBQUE7V0FpQkgsR0FBQTs7YUFKSTZCO2FBQVBSO2VBS0s7O2lCQWxCQ3JCOzt1Q0FBQUE7O1lBb0JFLGNBQUEsNEJBcEJGQTs7YUFzQnFDOztjQUQ5QmwwRztjQUFIMnNCO2NBQ2lDLE1BNUMvQ3dxRix1QkEyQ2lCbjNHO2NBUk4rMUcsbUJBRFA2QixhQVUwQjtjQVQxQnJDLFVBUVU1b0Y7O2FBR0MsY0FBQSw0QkF4Qkx1bkY7O2NBMEIrQzs7ZUFEckMvOUQ7ZUFBSGlxRDtlQUN3QyxNQWhEekQrVyx1QkErQ29CaGhFO2VBWlQ0L0Q7MkJBRFA2QixhQWNvQztlQWJwQ3JDLFVBWWFuVjs7a0JBWk4yVixrQkFBUFIsVUFiTXJCOzs7O1VBNkJDO1dBQVAwQyxTQUFPLDJCQTdCUG5hO1dBOEJBb2EsVUFBUSxzQkFqQlJ0QjtVQWtCSixHQS9CaUJtQzs7WUFnQ1ZJLE9BaENVSjtrQkF4U2pCekQsY0F3VWlDLFdBbENKc0QsV0FrQ3RCTyxPQUhIbEIsUUFDQUM7a0JBakJPZDtXQTBCTTtZQURQZ0MsZUF6QkNoQztZQTBCRmlDLFFBL1VUL0QsdUJBcVVJMkMsUUFDQUM7a0JBVUMsZ0JBREltQixPQUNNLHFCQUZMRDs7V0FGTTtZQUFQai9CLE9BQU8sV0F0Q0R3K0I7a0JBdFNmckQsY0E0VVNuN0IsTUFQTDg5QixRQUNBQztVQUVTOztlQVViOVQ7Y0FBQWgxRCx3QkFBQWcxRDtVQUFLLE1BQUEsZ0RBNUNrQ3JvSCxHQTRDdkNxekQ7O1FBQWtDO2lCQUdsQ2txRSwwQkFBMEJ2OUg7a0JBQ3hCNDhIO1VBQWtCO3VEQURNNThIOzs7Ozs7OztTQUNvRDtTQUNoRixTQUFJNjhILFVBQVVXO1VBQ1osT0FBQSx3Q0FEWUE7U0FDcUU7U0FFbkYsT0FwREViLGNBZ0RFQyxjQUNBQyxXQUZ3Qjc4SDtRQUtZO1FBTXhDO1NBREV3WjtXQUNGOzs7OztTQU1FRjtXQUNGO1NBR0VGO1dBQ0Y7aUJBR0V1N0QsU0FBU3NoRCxJQUFHQztTQUNkO1VBQXVDLE1BQUEsZ0NBRHpCQTtVQUNBLE1BQUEsZ0NBREhEO1VBQ1gsTUFBQTtTQUpBLE9BQUE7UUFLa0Q7aUJBR2hEcjlDLGlCQUFpQnE5QyxJQUFHQztTQUN0QjtVQUErQyxNQUFBLGdDQUR6QkE7VUFDQSxNQUFBLGdDQURIRDtVQUNuQixNQUFBOztRQUNrRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkF2WGhEcUQ7Z0JBNFdBbGdIO2dCQUpBRTtnQkFQQUU7Z0JBZUFtN0Q7Z0JBS0FpRTtnQkFwZEE0L0M7Z0JBQ0FDO2dCQWdHQWM7Z0JBS0FFO2dCQTRHQWU7Z0JBTUFDO2dCQXRCQXRZO2dCQU9Bb1k7Z0JBeERBUjtnQkFsSkF4QjtnQkEwUUEwQztnQkFLQUk7Z0JBd0RBVztnQkFPQUM7Z0JBM0JBSjtnQkFSQUQ7Z0JBUkFGO2dCQXdCQS9EO2dCQUtBQztnQkFLQW1FO2dCQXNCQUs7Z0JBNkNBTztnQkFqRkFwZDtnQkFnREE4YztnQkFnRkFrQjtnQkFBQUE7Z0JBbklBekI7Z0JBQUFBOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDalRRM2lFO0lBQUFFO0lBQUFEO0lBQUFyZ0I7SUFBQXkzQjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBL3RCO0lBQUFEO0lBQUFsK0M7SUFBQStSO0lBRlJpRDtJQUFBQztJQUFBL1U7SUFBQUQ7SUFBQUY7SUFBQUQ7SUFBQUQ7SUFBQXREO0lBQUFRO0lBQUFDO0lBQUFMO0lBQUFIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBZUFxM0MsS0FBS3lNLElBQUdDO0lBQWlCLFVBQUEscUJBQXBCRCxJQUFHQztJQUFpQixPQUFBO0dBQVM7WUFDbENyVSxJQUFJeHdDLEdBQUV3ckgsTUFBTyxPQUFUeHJILElBQWMsZ0NBQVp3ckgsTUFBNEI7WUFDbENqd0csSUFBSXZiLEdBQUV3ckgsTUFBTyxPQUFUeHJILElBQWMsZ0NBQVp3ckgsTUFBNEI7WUFDbEN6dUQsS0FBSy84RCxHQUFJLE9BQUEsc0NBQUpBLEdBQXlCO1lBQzlCK3lDLEtBQUsveUMsR0FBSSxPQUFBLGtDQUFKQSxHQUF1Qjs7SUFDNUIrakc7SUFDQUQ7WUFRQUUsOEJBQThCd25CO0lBQU8sT0FBQSxnQ0FBUEE7R0FBdUI7WUFDckR2bkIsOEJBQThCamtHO0lBQUksT0FBQSxnQ0FBSkE7R0FBaUI7WUFFL0NtNUgsY0FBY3hYLE1BQUt5WDtJQUNyQjs7S0FDZ0MsTUFBQSw4QkFGaEJ6WDtLQUVELE1BQUE7S0FEWEssT0FDRjtLQUU4QixNQUFBLGlDQUpYb1g7SUFJckIsT0FISXBYLGdCQUdnQjtHQUFvRDtZQUd0RXFiLFlBQVkzRSxVQUFVTSxpQkFBa0IsT0F0QnhDejlHLElBc0JZbTlHLFVBQVVNO0dBQThDO1lBQ3BFc0UsWUFBWUMsVUFBVXZFLGlCQUFrQixPQXhCeEN4b0YsSUF3Qlkrc0YsVUFBVXZFO0dBQThDO0dBZXRELElBQWR3RSxjQUFjO1lBRWRDLG1CQUFtQkM7SUFDckI7S0FSRyxNQUFBLDRCQU9rQkE7S0FYakJDO0tBSUQ7Y0FDQSw0QkFNa0JELGlCQVhqQkM7SUFLRCxRQUNFLHdDQUtnQkQ7SUFHUTtLQUFBLE1BQUEsMEJBSFJBO0tBR2pCRSx5QkFBeUIsbUNBTDNCSjtLQVMrQixNQUFBLDhCQUo3Qkksd0JBTEZKO0tBU2UsTUFBQTtJQUFkLE9BQUEsNEJBUGtCRTtjQVFoQiwyQkFMREU7Y0FBQUE7R0FNdUI7WUFHekJDLHlCQUF5Qjc5SCxHQUFHODlIO0lBQzlCO0tBQzRDLE1BQUEsOEJBRmRBLGlCQWQ1Qk47S0FnQkVPLHlCQUF5QjtLQUN6QjFwQixZQUh1QnIwRyxJQUV2Qis5SDtLQUVKLE1BQUEsZ0NBREkxcEI7SUFDSixPQUFBO0dBQTZEO1lBRzNEMnBCLHdCQUF5QkY7SUFDM0I7S0FBQSxNQUFBLDBCQUQyQkE7S0FDM0IsTUFBQTtJQUFBLE9BQUE7R0FFcUI7WUFHbkIvYixRQUFRL2hIO0lBQ1ksSUFBbEI4OUgsa0JBMUJGTCxtQkF5QlF6OUg7SUFFVixPQVJFZytILHdCQU9FRjtHQUNvQztZQUd0QzNELFNBQVNuNkg7SUFDVyxJQUFsQjg5SCxrQkEvQkZMLG1CQThCU3o5SDtJQUVYLE9BcEJFNjlILHlCQWtCUzc5SCxHQUNQODlIO0dBQ3VDO1lBR3pDMUQsY0FBY3A2SDtJQUNoQjtLQUFJODlILGtCQXBDRkwsbUJBbUNjejlIO0tBRVoyaEgsT0FsQkZxYyx3QkFpQkVGO0tBRUExRSxRQTFCRnlFLHlCQXVCYzc5SCxHQUNaODlIO0lBR0osV0FGSW5jLE1BQ0F5WDtHQUNPO1lBSVg2RSx1QkFBd0JDLGlCQUFpQkMsTUFBTTM1QixPQUFPNDVCO0lBQ3hELEdBQUcsZ0NBRHFEQTtLQUd0RDs7Ozs7T0FIc0RBOztJQVFwQyxJQUFoQkMsZ0JBN0ZBbG1GLEtBcUY2Q3FzRCxPQUFOMjVCO0lBU3hDLEdBQUEsZ0NBRENFO0tBRUMsT0FWc0NGO0lBaUJWO0tBQUEsTUFBQSxpQ0FUN0JFLGVBUm9ERDtLQWlCL0MsTUFBQTtLQUxIcnJGLE9BaEdGdkMsSUFvRnVDMnRGLE1BZXJDLGlDQWZrREM7O1NBbUJuRCxxQkFQQ3JyRixNQVoyQ3l4RDtLQW1CUixHQW5CZjA1QixtQkFtQmUscUJBUG5DbnJGLE1BWjJDeXhEO0tBbUJxQixPQXZHbEVoMEQsSUFnR0V1QyxNQVprRHFyRjs7SUFtQkksT0FQdERyckY7R0FPa0Y7WUFHdEZ1ckYsY0FBZ0J2OEgsS0FBMEJvOEgsTUFBTTM1QixPQUFPNDVCO0lBQ3pELEdBRGtCcjhIO1NBQWtCQyxNQUFsQkQsUUFBQW04SCxrQkFBa0JsOEg7O1NBQWxCazhIO0lBQ2xCLE9BdkJFRCx1QkFzQmdCQyxpQkFBMEJDLE1BQU0zNUIsT0FBTzQ1QjtHQUNLO1lBRzVERyxjQUFnQng4SCxLQUEyQm84SCxNQUFNMTVCLFFBQVEyNUI7SUFDM0QsR0FEa0JyOEg7U0FBbUJDLE1BQW5CRCxRQUFBeThILG1CQUFtQng4SDs7U0FBbkJ3OEg7SUFDbEIsT0EzQkVQO2lCQTBCZ0JPLGtCQUEyQkwsTUE3R3pDNWlILElBNkcrQ2twRixRQUFRMjVCLFdBQUFBO0dBS2hEO1lBR1RLO0lBQ0Y7S0FBZSxNQUFBO0tBQVhDLFdBQVc7SUFDSyxPQUFBO2FBbkhoQjU2QjthQW1IZ0IsZ0NBRGhCNDZCO0dBQ2dEO0dBR3RDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BM0lWNTlIO09BQUFHO09BQUFLO09BQUFEO09BQUFSO09BQUFzRDtPQUFBQztPQUFBQztPQUFBRTtPQUFBQztPQUFBK1U7T0FBQUQ7Ozs7Ozs7OztPQWdCQWszQjtPQUNBajFCO09BRkE0OEI7T0FJQXBGO09BREFncUI7T0FFQWduQztPQUNBRDs7Ozs7OztPQW5CUXp0RjtPQUFBL1I7T0FBQWsrQztPQUFBQztPQUFBK3RCO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUF6M0I7T0FBQXFnQjtPQUFBQztPQUFBRjs7UUE4QlJvZ0U7UUE0REFpQjtRQVZBclk7UUFLQW9ZO1FBL0NBbUQ7UUFEQUQ7UUFWQXI1QjtRQUNBQztPQTRGRnE2QjtPQUlBQztPQVFBRTs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDdElVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBWVIzOUg7SUFBQUc7SUFBQUk7SUFBQUM7Ozs7O0lBQUFpRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7SUFaUTtJQUNnQjtJQUlYO0lBSUg7SUFHVixjQUFZO0lBQVosTUFBQTtJQUFBNUosUUFBQTtJQUFBLE1BQUE7SUFBWWlLLGdCQUFaLFdBQUEsK0JBQUFqSztJQUFBb0sscUJBQUFoRSxZQUFBRztJQUFBZ0UscUJBQUE1RCxZQUFBQztJQUFBNEQsY0FBWVAsZUFBWkcsZ0JBQUFHOzs7Ozs7Ozs7O0dBQUEsU0FBQU0sT0FBQS9FLEdBQUEsT0FBQSxpQkFBQUEsR0FBb0Q7WUFFaERULFVBQVVDO0lBQVksSUFBdUM2eEIsUUFBdkMsZ0NBQVo3eEI7c0VBQW1ENnhCOztZQUU3RG55QixVQUFVQztJQUNaOzs7ZUFEWUE7aUJBQUFBOzs7Ozs7NEJBR2NnaUg7O1dBS1o7WUFMNEJnZDtZQUs1QjtjQUFBOzhDQUw0QkE7WUFLcEMsTUFBQSxrQ0FMb0JoZDs7O2VBSWxCLE9BQ0Y7Ozt3QkFSTWhpSDtjQU9xRTs7Y0FIN0U7K0NBQzJCLGVBQVE7Ozs7Ozs7OztTQUk5QjttRUFUR0E7O0tBU0g7O1VBR1Bzb0g7U0FBQWgxRCx3QkFBQWcxRDtRQUFBaDFEO01BRHdCLE1BQUEsNEJBQ3hCQTtLQUVtRDtNQUFBLE1BQUEseUJBRm5EQTtNQUVFLE1BQUE7S0FERixPQUFBLHdDQWJVdHpEOztHQWVKO0dBR1c7SUFBakJvWixpQkFBaUI7SUFHUjtJQUNBO0lBS0g7OztJQURBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFZQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXSztJQUNGO0lBQ0w7SUFDd0I7SUFDeEI7SUFDRTtJQVBIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWtEYTtJQUNQO0lBQ0Y7SUFDTDtJQUNBO0lBQ0U7Ozs7Ozs7O09BMUdUalk7T0FBQUc7T0FBQUk7T0FBQUM7Ozs7O09BQUFpRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FBQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQUFBQztVQUFBZ0I7VUFzQkl3VDtVQXRCSmpZO1VBQUFHO1VBQUFJO1VBQUFDO1VBQVlxRDtVQUFaRztVQUFBRztVQUFBQztVQUFBWjtVQUlJNUU7VUFGQUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ3hCTjYrSCxRQUFRdjlCLE1BQU1yRDtJQUFPLE9BQUEsZ0NBQWJxRCxNQUFNckQ7R0FBb0M7WUFDbEQ2Z0MsTUFBTzdnQztJQUFPLE9BRGQ0Z0MsUUFDc0Isb0NBQWY1Z0M7R0FBd0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQUQvQzRnQztPQUNBQzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7SUNrckJTQzs7O0lBanJCVHh3RjtJQVVGejBDO0lBV0F1eUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FqQm1CO0lBQWpCMlMsaUJBQWlCO0lBQ2pCaHBEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBQ0FveUIsUUFBTTNuRyxHQUFJLE9BQUEsMEJBQUpBLEdBQW9CO0dBSTVCLElBNEtNK0QsK0JBNUtOdUk7R0FBQSxTQUFBdEksS0FBQWhFLEdBQUEsT0FBQSxXQUFBc00sTUFBQXRNLEdBQWlGO0dBQWpGOztJQUFBLGNBQUs7SUFBTCxNQUFBO0lBQUE5RixRQUFBO0lBQUEsTUFBQTtJQUFLbUcsY0FBTCxXQUFBLCtCQUFBbkc7SUE0S01vRztJQUFBRztJQTVLTmtELG1CQTRLTXJELFlBQUFHO0lBQUFJO0lBQUFDO0lBNUtOOEMsbUJBNEtNOUMsY0FBQUQ7SUE1S05nRCxZQUFLeEQsYUFBTHNELGNBQUFDO0lBQUs0VTtJQUFBRTtJQUFBRTtpRUFBTHZmO0lBQUF5ZjtJQUFBRTtJQUFBRCx1QkFBQUM7SUFJSW8rRDtHQU9KLFNBQUF0ekUsUUFBQXJJLE9BQUFDO0lBQ1csR0FBQSwrQkFEWEQsT0FBQUMsUUFDVztJQUFBLElBQUE0b0IsSUFBQSwwQkFEWDdvQixVQUFBQzthQUNXNG9CLEdBQUEsT0FBQUE7SUFDRixJQUFBQyxNQUFBLG1DQUZUOW9CLFVBQUFDO2FBRVM2b0IsS0FBQSxPQUFBQTtJQUNDLElBQUFDLE1BQUEsbUNBSFYvb0IsVUFBQUM7YUFHVThvQixLQUFBLE9BQUFBO0lBQ0EsSUFBQXFuRyxNQUFBLG1DQUpWcHdILFVBQUFDO2FBSVVtd0gsS0FBQSxPQUFBQTtJQUNELElBQUFDLE1BQUEsbUNBTFRyd0gsVUFBQUM7YUFLU293SCxLQUFBLE9BQUFBO0lBQ0EsSUFBQUMsTUFBQSxtQ0FOVHR3SCxVQUFBQztpQkFNU3F3SDtpREFOVHR3SCxVQUFBQztjQU1TcXdIO0dBTFE7R0FEakIsU0FBQTdzSCxVQUFBMG5CO0ksU0FBQUE7S0FBQSxPQUFBOzRDQUFBZ2xHLGtCQUFBaGxHO0lBQUE7S0FBQUMsa0JBQUFEO0tBQ0lvbEc7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FQSkM7S0FBQUM7Ozs7Ozs7OzttQkFBQTNsRztPQUFBOztZQUFBTztpQkFBQUE7bUJBQUFBOzs7O1lBQUFxbEcsMkJBQUFDO1dBQUFELG1CQUFBQTs7U0FBQUU7U0FBQUM7b0JBQUFIO3FCQUFBSTthQUFBLEtBQUFKO2NBQUEsT0FBQTtxREFBQWIsa0JBQUFobEc7Z0JBQUE2bEc7Y0FBQSxNQUFBO2lCQUFBSyxRQUFBTDthQUFBLE9BQUFLO1lBU3dDO21CQVR4Q0Q7O1NBQUFBLGlCQUFBRCxpQkFBQUg7Z0NBQUFDO2lDQUFBQTtrQ0FBQUE7bUNBQUFBO29DQUFBQTtxQ0FBQUE7c0NBQUFBOztnQkFBQUYsbUJBQUFFLGdCQUFBRjs7c0JBTUlIO2VBTkpFLHdCQUFBRyxnQkFBQUg7O2VBTUk7Z0JBTkpRLG1CQUFBRjtnQkFNSUc7a0JBQUEsbUNBTkpEO2VBTUlWLGdCQUFBVzs7cUJBTEFoQjtjQURKTyx3QkFBQUcsZ0JBQUFIOztjQUNJO2VBREpVLG1CQUFBSjtlQUNJSyxhQUFBLDBCQURKRDtjQUNJakIsa0JBQUFrQjs7b0JBR0FmO2FBSkpJLHdCQUFBRyxnQkFBQUg7O2FBSUk7Y0FKSlksbUJBQUFOO2NBSUlPO2dCQUFBLG1DQUpKRDthQUlJaEIsaUJBQUFpQjs7bUJBR0FkO1lBUEpDLHdCQUFBRyxnQkFBQUg7O1lBT0k7YUFQSmMsbUJBQUFSO2FBT0lTLGFBQUEsbUNBUEpEO1lBT0lmLGdCQUFBZ0I7O2tCQUZBbEI7V0FMSkcsd0JBQUFHLGdCQUFBSDs7V0FLSTtZQUxKZ0IsbUJBQUFWO1lBS0lXLGFBQUEsbUNBTEpEO1dBS0luQixnQkFBQW9COztpQkFGQXRCO1VBSEpLLHdCQUFBRyxnQkFBQUg7O1VBR0k7V0FISmtCLG1CQUFBWjtXQUdJYSxhQUFBLG1DQUhKRDtVQUdJdkIsaUJBQUF3Qjs7Z0JBREF6QjtTQUZKTSx3QkFBQUcsZ0JBQUFIOztTQUVJO1VBRkpvQixtQkFBQWQ7VUFFSWUsYUFBQSxtQ0FGSkQ7U0FFSTFCLGdCQUFBMkI7O29CQUZKakI7Ozs7OztLQUFBLHlDQUFBZixrQkFBQXhrRzs7T0FBQW1sRztLQUFBLE9BQUE7O2NBQUFYO2NBQUFXO2NBQUEzbEc7T0FBQTRsRztLQUFBLE9BQUE7O2NBQUFaO2NBQUFZO2NBQUE1bEc7O1lBQ0lvbEc7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7YUFDQUM7OztNQUFBdUI7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7S0FESixXQUNJQSxVQUNBRCxRQUNBRCxTQUNBRCxTQUNBRCxRQUNBRCxRQUNBRDs7SUFQSixPQUFBOzthQUFBakM7YUFBQWhsRzs7d0JBQ0lvbEc7O3lCQUNBQzs7MEJBQ0FDOzsyQkFDQUM7OzRCQUNBQzs7NkJBQ0FDO2lDQUNBQzs7WUFQSi9zSDtJQUFBO0tBT0k2dUg7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FNQUMsVUFBQSxtQ0FBQVA7S0FQSlEsZ0NBT0lEO0tBREFFLFVBQUEsbUNBQUFSO0tBTkpTLGtDQU1JRCxlQU5KRDtLQUtJRyxVQUFBLG1DQUFBVDtLQUxKVSxrQ0FLSUQsZUFMSkQ7S0FJSUcsVUFBQSxtQ0FBQVY7S0FKSlcsa0NBSUlELGVBSkpEO0tBR0lHLFVBQUEsbUNBQUFYO0tBSEpZLGtDQUdJRCxlQUhKRDtLQUVJRyxVQUFBLG1DQUFBWjtLQUZKYSxrQ0FFSUQsZUFGSkQ7S0FDSUcsVUFBQSwwQkFBQWI7S0FESmMsa0NBQ0lELGVBREpEO0lBQUEsV0FBQUU7R0FTd0M7R0FUeEM7SUFBS2ozRzs7OztTQUFMOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQURhLFlBQ2J6VSxTQUFBNUUsV0FBQUssV0FBS2daO1lBWUhnNkIsS0FBSy95QyxHQUFJLE9BQUEsMkJBQUpBLEdBQWdCO1lBQ3JCKzhELEtBQUsvOEQsR0FBSSxPQUFBLDJCQUFKQSxHQUFnQjtHQUNSO0lBQWJrd0gsYUFBYTtJQUNRLE1BQUE7SUFBckJDLGNBQXFCLGdDQURyQkQ7SUFFcUIsTUFBQTtJQUFyQkUsY0FBcUIsZ0NBRHJCRDtJQUVnQixNQUFBO0lBQWhCcHZELFNBQWdCLGdDQURoQnF2RDtJQUVnQixNQUFBO0lBQWhCQyxTQUFnQixnQ0FEaEJ0dkQ7SUFFYyxNQUFBO0lBQWR1dkQsT0FBYyxnQ0FEZEQ7SUFFYSxNQUFBO0lBQWIxUixNQUFhLGdDQURiMlI7SUFTaUQsTUFBQTtJQUFiLE1BQUE7SUFBQSxNQUFBO0lBQXBDME8sNkJBQW9DLGdDQVJwQ3JnQjtJQVNBc2dCO01BQTZCLDJCQUQ3QkQ7WUFHQXJrSCxPQUNTNVk7SUFVWCxHQVZXQSxTQUFRQyxNQUFSRCxRQUFBbzJFLE9BQVFuMkUsY0FBUm0yRTtJQVVYLGFBVGlCbHNDLGlCQUFQKzFFLE9BQU8vMUUsZ0JBQVArMUU7SUFTVixhQVJXbVEsaUJBQUxyTCxLQUFLcUwsZ0JBQUxyTDtJQVFOLGFBUG9Cc0wsaUJBQVZ2QixVQUFVdUIsZ0JBQVZ2QjtJQU9WLGFBTll3QixpQkFBTmpMLE1BQU1pTCxnQkFBTmpMO0lBTU4sYUFMV2tMLGlCQUFMdEcsS0FBS3NHLGdCQUFMdEc7SUFLTixhQUpXdUcsaUJBQUx0RyxLQUFLc0csZ0JBQUx0RztJQUlOLGFBSFd1RyxpQkFBTHRHLEtBQUtzRyxnQkFBTHRHO0lBV0Q7S0FBQSxPQUFBLDJCQVhDQTtLQVdGLE9BQUEsaUNBcENGZ0U7S0FtQ0csT0FBQSwyQkFYQ2pFO0tBV0YsT0FBQSxpQ0FsQ0ZrRTtLQWlDRyxPQUFBLDJCQVhDbkU7S0FXRixPQUFBLGlDQWhDRm9FO0tBK0JHLE9BQUEsMkJBWENoSjtLQVdGLE9BQUEsaUNBOUJGcm1EO0tBNkJHLE9BQUEsMkJBWEs4dkQ7S0FXTixPQUFBLGlDQTVCRlI7S0EyQkcsT0FBQSwyQkFYQ3ZKO0tBV0YsT0FBQSxpQ0ExQkZ3SjtLQXlCQyxPQUFBLDJCQVhPdE87S0FXUixPQUFBLGlDQXhCQXJEO0tBd0JBLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBREUzK0csSUFDRjtJQVFGLE9BcEJXbTRFLE9BV1BuNEUsSUFVSywyQkFWTEE7R0FXYTtZQUdmdXdILFNBQVN2d0g7SUFDWDtLQUNJay9ILE1BQU0sMkJBRkNsL0g7S0FTUSxPQUFBLDJCQVBmay9ILEtBNUNGL087S0FtRGdCLE9BQUEsaUNBcERoQkQ7S0FvREssT0FBQTtLQURZLE9BQUEsMkJBTmZnUCxLQTNDRjlPO0tBaURnQixPQUFBLGlDQWxEaEJEO0tBa0RLLE9BQUE7S0FEWSxPQUFBLDJCQUxmK08sS0ExQ0ZuK0Q7S0ErQ2dCLE9BQUEsaUNBaERoQnF2RDtLQWdESyxPQUFBO0tBRGEsT0FBQSwyQkFKaEI4TyxLQXpDRjdPO0tBNkNpQixPQUFBLGlDQTlDakJ0dkQ7S0E4Q00sT0FBQTtLQURZLE9BQUEsMkJBSGhCbStELEtBeENGNU87S0EyQ2lCLE9BQUEsaUNBNUNqQkQ7S0E0Q00sT0FBQTtLQURVLE9BQUEsMkJBRmQ2TyxLQXhDRjVPO0tBMENLLE9BQUE7S0FEWTtPQUFBLDRCQUhSdHdIOztVQUdrQyw0QkFIbENBO0lBR1g7R0FPQztZQUdDbS9IOztLQUE2Q2pUO0tBQUpEO0tBQUpEO0tBQUw1RTtLQUFMNWtFO0tBQUpza0U7S0FBWjN1QztJQUNiLE9BeENFeDlEO2lCQXVDV3c5RDs7aUJBQVkydUM7aUJBQUl0a0U7aUJBQUs0a0U7aUJBQUs0RTtpQkFBSUM7aUJBQUlDOzs7WUFJN0NxRixNQUFNN3VILEdBQUksT0FBQSxXQTFGVnF6RSxlQTBGTXJ6RSxHQUFtQjtZQUN6QjA4SCxZQUFZdG9ILEdBQUksT0FBSkEsRUFBSztZQUNqQnVvSCxVQUFVdm9IO0lBQVcsV0FBQSwyQkFBWEE7NENBN0RWcTVHO0dBNkQ0QztZQUM1Q21QLFVBQVV4b0g7SUFBVyxXQUFBLDJCQUFYQTs0Q0E3RFZzNUc7R0E2RDRDO1lBQzVDdUIsV0FBVzc2RztJQUFXLFdBQUEsMkJBQVhBOzRDQTdEWGlxRDtHQTZEd0M7WUFDeEN5d0QsTUFBTTl1SDtJQUFJLE9BQWMsV0EvRnhCcXpFLGVBK0ZNcnpFLElBOUZOeWxHLFFBOEJBZ29CO0dBZ0VnRDtZQUNoRHNCLE1BQU0vdUg7SUFBSSxPQUFjLFdBaEd4QnF6RSxlQWdHTXJ6RSxJQS9GTnlsRyxRQStCQWlvQjtHQWdFZ0Q7WUFDaERzQixPQUFPaHZILEdBQUksT0FBYyxXQWpHekJxekUsZUFpR09yekUsSUFoR1B5bEcsUUFnQ0FwbkMsU0FnRTRDO1lBQzVDOHdELE9BQU9udkgsR0FBSSxPQUFjLFdBbEd6QnF6RSxlQWtHT3J6RSxJQWpHUHlsRyxRQWlDQWtvQixTQWdFNEM7WUFDNUN5QixNQUFNcHZILEdBQUksT0FBYyxXQW5HeEJxekUsZUFtR01yekUsSUFsR055bEcsUUFrQ0Ftb0IsT0FnRXlDO1lBQ3pDeUIsT0FBT3J2SCxHQUFJLE9BQWMsV0FwR3pCcXpFLGVBb0dPcnpFLElBbkdQeWxHLFFBbUNBd1csTUFnRXlDO1lBRXpDNGdCLCtCQUFrQ25ZO0lBQ3BDO0tBQUk2RSxLQUFLLFdBdkdQbDJDLGVBc0drQ3F4QztLQUVaLE9BQUE7SUFBTCxPQUFBLDJCQURmNkU7R0FDZ0M7WUFHbENyb0IsaUJBQWlCcGpHO0lBQUkscUNBQUpBLEdBMUVqQnVnRTtHQTBFK0I7WUFDL0I2d0QsaUJBQWlCcHhIO0lBQUksT0FEckJvakcsaUJBQ3NDLDJCQUFyQnBqRztHQUF1QztZQUV4RHd3SCxNQUFNaHhILEdBQUksT0E3R1Ztb0csUUE2R01ub0csR0FBVztZQUNqQncvSCxZQUFZeC9ILEdBQUksT0FBSkEsRUFBSztZQUNqQml4SCxNQUFNanhIO0lBQWUsV0EvR3JCbW9HLFFBOEJBZ29CO0lBaUZVLE9BL0dWaG9CLFFBK0dNbm9HO0dBQWdDO1lBQ3RDa3hILE1BQU1seEg7SUFBZSxXQWhIckJtb0csUUErQkFpb0I7SUFpRlUsT0FoSFZqb0IsUUFnSE1ub0c7R0FBZ0M7WUFDdENteEgsT0FBT254SCxHQUFlLFdBakh0Qm1vRyxRQWdDQXBuQyxTQWlGVyxPQWpIWG9uQyxRQWlIT25vRyxVQUEyQjtZQUNsQ294SCxPQUFPcHhILEdBQWUsV0FsSHRCbW9HLFFBaUNBa29CLFNBaUZXLE9BbEhYbG9CLFFBa0hPbm9HLFVBQTJCO1lBQ2xDcXhILE1BQU1yeEgsR0FBZSxXQW5IckJtb0csUUFrQ0Ftb0IsT0FpRlUsT0FuSFZub0IsUUFtSE1ub0csVUFBeUI7WUFDL0JzeEgsT0FBT3R4SCxHQUFlLFdBcEh0Qm1vRyxRQW1DQXdXLE1BaUZXLE9BcEhYeFcsUUFvSE9ub0csVUFBd0I7WUFDL0J5L0gsVUFBVXovSDtJQUFzQixXQUFBLDJCQUF0QkEsR0F2RlZtd0g7SUF1RmdDLE9BQUE7R0FBa0I7WUFDbER1UCxVQUFVMS9IO0lBQXNCLFdBQUEsMkJBQXRCQSxHQXZGVm93SDtJQXVGZ0MsT0FBQTtHQUFrQjtZQUNsRHVQLFdBQVczL0g7SUFBc0IsV0FBQSwyQkFBdEJBLEdBdkZYK2dFO0lBdUZpQyxPQUFBO0dBQWE7WUFDOUM4aUMsK0JBQWdDN2pHO0lBQUksc0NBQUpBLEdBeEZoQytnRTtHQXdGK0M7WUFDL0M2K0QsVUFBVTlvSCxHQUFJLE9BQVksMkJBQWhCQSxHQUFnQzs7SUFFMUMrb0g7TUE3SEFkO2tCQStITy8rSCxHQUFLLE9BQWlCLDBCQUF0QkEsR0FBcUM7OztTQUNoQyxPQUFBOztRQUFnRTtZQUc1RTBXLE9BQU0xVyxHQUFFOC9ILEdBQUksT0FBQSwyQkFBTjkvSCxHQUFFOC9ILEdBQW1CO1lBQzNCcnZELFNBQU16d0UsR0FBRTgvSCxHQUFJLE9BQUEsMkJBQU45L0gsR0FBRTgvSCxHQUFtQjtPQUMzQm5vRCxzQkFDQXV6QztZQUNBcFUsTUFBTTkyRyxHQUFFMEMsR0FBSSxPQUFjLFdBdEkxQnF6RSxlQUNBb3lCLFFBcUlNbm9HLEtBQUUwQyxHQUFnQztZQUN4Q3E5SCxZQUFZLy9ILEdBQUU4VyxHQUFJLE9BQUEsMkJBQU45VyxHQUFFOFcsR0FBbUI7WUFDakNrcEgsVUFBVWhnSSxHQUFFOFc7SUFBSSxPQURoQmlwSCxZQUNVLy9ILEdBQW9CLDJCQUFsQjhXO0dBQWtDO09BQzlDbXBIO1lBQ0F2dkQsU0FBTTF3RSxHQUFFMEMsR0FBSSxPQUFjLFdBMUkxQnF6RSxlQUNBb3lCLFFBeUlNbm9HLEtBQUUwQyxHQUFnQztPQUN4Q2l1RTtZQUNBdXZELHNCQUFzQmxnSSxHQUFJLE9BQUEsMEJBQUpBLEdBQW9CO1lBRTFDK3lILGdCQUFnQitNO0lBQ2xCLE9BRGtCQTs7T0FoSEgsT0FBYjVQOztPQUNxQixPQUFyQkM7O09BQ3FCLE9BQXJCQzs7T0FDZ0IsT0FBaEJydkQ7O09BQ2dCLE9BQWhCc3ZEOztPQUNjLE9BQWRDO3NCQUNBM1I7O0dBa0hVO1lBR1ZtVSxnQkFBZ0I5eUg7SUFDTixJQUFSNnlILFFBQVEsV0F0QlZsN0MsS0FxQmdCMzNFO0lBRWYsT0FBQSwrQkFEQzZ5SCxPQXRIRmxVOztjQXlITTtvQ0FISmtVLE9BdkhGdkM7O2dCQTRITTtzQ0FMSnVDLE9BeEhGeEM7O2tCQStITTt3Q0FQSndDLE9BekhGOXhEOztvQkFrSU07MENBVEo4eEQsT0ExSEZ6Qzs7c0JBcUlNLCtCQVhKeUMsT0EzSEYxQztHQXdJYTtHQUlIO0lBQUE7SUFDSTtJQUtWO2NBQVksOENBNUtidHZIO0lBNEtDLE1BQUE7SUFBQTZELFVBQUE7SUFBQSxNQUFBO0lBQVlDO01BQVosV0FBQSwrQkFBQUQ7SUFBQUkscUJBQUFoRSxZQUFBRztJQUFBZ0UscUJBQUEzRCxjQUFBRDtJQUFBNkQsY0FBWVAsZUFBWkcsZ0JBQUFHO0lBQUFFO0dBQUEsU0FBQUksT0FBQS9FLEdBQUEsT0E1S05nRSxLQTRLTWhFLEdBQTJEO09BQTNENlY7WUFFSThwSCxhQUFhbmdJLEdBQUksT0FBSkEsRUFBaUI7WUFDOUJvZ0ksU0FBU3BnSSxHQUFJLE9BQUpBLEVBQWlCO1lBR3hCcWdJLDBCQUEyQkM7SUFDN0IsU0FENkJBLHFCQUd4QjtZQUh3QkEscUJBS3hCO2FBTHdCQSxxQkFPeEI7Y0FQd0JBLHFCQVN4QjtlQVR3QkEscUJBV3hCO2lCQVh3QkE7S0FjeEIsTUFBQTtJQURBO0dBQ1k7WUE2QmZDLFdBQVdqbEksS0FBSzRGLEtBQUkyb0U7SUFDdEIsc0JBRGF2dUUsS0FBSzRGLEtBQUkyb0U7SUFHdEIsT0FIa0Izb0U7R0FHWDtZQUdMcy9ILGNBQWNsbEksS0FBSzRGLEtBQUl1L0gsT0FBTUM7SUFDL0Isc0JBRGdCcGxJLEtBQUs0RixLQUFJdS9IOzBCQUFUbmxJLEtBQUs0RixhQUFVdy9IO0lBSS9CLE9BSnFCeC9IO0dBSWQ7WUFHTHkvSCxhQUFhcmxJLEtBQUs0RixLQUFLd3hHLFFBQU9oSztJQUVrQixXQUFBLDJCQUZsQkE7SUFFaEMseUNBRmVwdEcsS0FBSzRGLEtBQUt3eEc7V0FBTHh4RyxNQUFLd3hHO0dBR2I7WUFhVmt1QixtQkFBbUJ0bEksS0FBSzRGLEtBQUt3eEcsUUFBT2hLLE9BQUlwN0I7SUFDMUMsU0FEK0JvbEMsUUFHMUIsT0FIcUJ4eEc7SUFLZDtLQUFOQyxRQXJCSncvSCxhQWdCbUJybEksS0FBSzRGLEtBQUt3eEcsUUFBT2hLO0tBTWhDdG5HLFFBbkNKbS9ILFdBNkJtQmpsSSxLQUtmNkYsT0FMb0Ntc0U7SUFPeEMsT0FESWxzRTtHQUNBO0dBR21CO0lBQXZCeS9ILHVCQUF1QiwwQkF6T2pDelE7SUEwT1UwUSx1QkFBdUIsMEJBM09qQzNRO0lBNE9VNFEsV0FBVztJQUNYQyxXQUFXO1lBeVhyQnZnSSxVQXJTb0JUO0lBQ1QsR0FBQSxXQWhMUHFXLE9BK0tnQnJXLEdBdlZsQjQzRSxPQXlWVztJQUVlO0tBQWR0QyxjQUFjLCtCQUpSdDFFLEdBdlZsQjQzRTtLQTRWWW1xQixVQUFVLDJCQUxKL2hHLEdBL1RwQitnRTtLQXNVWSxPQUFBLDJCQVBRL2dFLEdBL1RwQitnRTtLQXFVY21yRCxLQUNGO0tBRUUwRSxZQUFVLDJCQUpWN3VCO0tBckRZMjBCLE9BMERQLHlCQUpMeEs7S0FLSSxPQUFBLDJCQUZKMEUsV0E5RkptUTtLQTJCYW5oSSxJQXFFTDtLQUNKaXhILFVBQVUsMkJBSFZELFdBOUZKbVE7S0FrR1EsT0FBQSwyQkFESmxRLFNBakdKa1E7S0FrR0lwL0gsSUFBSTtLQUNKcy9ILFFBQVEsMkJBRlJwUSxTQWpHSmtRO0tBb0dRLE9BQUEsMkJBREpFLE9BbEdKRDtLQW1HSTl6RixJQUFJO0tBQ0EsT0FBQSwyQkFGSit6RixPQWxHSkQ7S0FvR0lsa0UsSUFBSTtLQUVKb2tFLGNBM0xKYiwwQkF5TEl2akU7S0FHQXFrRSxjQTVMSmQsMEJBd0xJbnpGO0tBS0FrMEYsY0E3TEpmLDBCQXNMSTErSDtLQTlCSTAvSDtXQXpDS3poSTs7VUE3QmJpaEk7YUF1Q2dCbks7O1lBdENoQm9LLHdCQXNDZ0JwSyxnQkFBQUE7V0ErQlIySzs7V0FBWUMsdUJBekNQMWhJOztXQXlDTzBoSSxnQ0EvQko1SyxNQXZDaEJtSzs7V0FzRW9CUyxnQ0EvQko1SyxNQXRDaEJvSzs7V0FxRW9CUSx1QkEvQko1SzttQkErQkk0Szs7V0FBWkQ7O1dBQTZCRSwwQkEvQnJCN0s7OztRQStCcUI2SztVQTNCcEIsNEJBSkQ3SyxNQXZDaEJtSzs7OztRQXNFcUNVO1VBMUJwQiw0QkFMRDdLLE1BdENoQm9LOzs7O1dBcUVxQ1M7bUJBQUFBOztJQTBDbkM7S0ExQzJCQyx5QkF4SjdCbkIsMEJBd0pvQmlCO1lBQWlCQyx3Q0FBQUE7S0ErQ3JDO01BL0NpREU7Y0FBWkY7OztlQWhJL0IsNEJBZ0krQkE7O2lCQTlIL0IsNEJBOEgrQkE7O21CQTVIL0IsNEJBNEgrQkE7OztrQkExSC9CLDRCQTBIK0JBOzs7b0JBeEgvQiw0QkF3SCtCQTs7O3NCQXRIL0I7eUNBc0grQkE7Ozt3QkFwSC9COzJDQW9IK0JBOzs7MEJBbEgvQjs2Q0FrSCtCQTs7Ozs7Ozs7OztNQWdEL0JHLFdBM0JGcHNEO01BNEJFcXNELFlBZEZULGNBQUFBO01BZUVVLFlBZEZULGNBQUFBO01BZUVVLFlBZEZULGNBQUFBO01BeERBVTtRQW1CSVQ7Z0JBQUFBLG1CQUFxQkc7V0FBQUE7TUFiekJPO1lBYTZDTiwyQkFBQUE7TUFvRDNDTyxtQkF2RUZGLGFBTUFDO01BNERBRTtXQUNFUCxXQUNBQyxhQUNBQyxhQUNBQyxhQUNBRzs7S0FRTixRQWJJQztNQWFKLE1BQUE7S0FDVTtNQTdEQTNtSSxNQTZEQSwyQkFkTjJtSTtNQWVBeHFIO01BQ0FPLFFBMUNBczlELGNBbElKaXJELFdBNkdVamxJLEtBOERObWMsYUFBQUE7TUFFQW1ULFFBaEpKZzJHLG1CQWdGVXRsSSxLQStETjBjLE9BNUJBa3BILGFBRkFwa0U7TUFnQ0FqeUMsUUFqSkorMUcsbUJBZ0ZVdGxJLEtBZ0VOc3ZCLE9BNUJBdTJHLGFBSkFqMEY7TUFoQ1dwaUIsUUFoRmY4MUcsbUJBZ0ZVdGxJLEtBaUVOdXZCLE9BNUJBdTJHLGFBUEF6L0g7Y0E5QnlCNi9IO1VBbUV6QnoyRyxRQW5FV0Q7O01BS0g7T0FBTjVwQjtTQXJHTnkvSDtXQWdHVXJsSSxLQUFLd3ZCLE9BQWMwMkcsd0JBQVRGO01BTWxCLFNBTitDRztXQVQzQnRnSSxRQWNoQkQ7O09BS1U7UUFwR0lFLFFBbkJwQm0vSCxXQTZHVWpsSSxLQUtKNEY7OztZQUwrQnFnSTtZQXBGVCxpQ0FvRnFCRTtRQXBGakQsT0FBQTtPQUpGOztTQXdGWW5tSTtTQTFGVThGO1NBMEY2QnFnSTs7V0FUM0J0Z0ksUUFqRkZDLFFBMEY2QnFnSTs7YUFBekNKOzthQW1FSnQyRyxRQWhMSncxRyxXQTZHVWpsSSxLQVRZNkY7O2FBNEVsQjRwQixRQTFLSnkxRyxjQXVHVWxsSSxLQVRZNkY7O2FBNEVsQjRwQixRQTFLSnkxRyxjQXVHVWxsSSxLQVRZNkY7O2FBNEVsQjRwQixRQTFLSnkxRyxjQXVHVWxsSSxLQVRZNkY7cUJBNEVsQjRwQixRQTVFa0I1cEI7OztRQTRFbEI0cEIsVUFwQkFrM0csZUErQkosT0FBQSwyQkE5RVUzbUk7S0E2RVYsTUFBQTs7SUFoTkYsTUFBQTs7R0ErTmE7SUFBWDRtSSxXQUFXO0lBQ1hDO01BQXNDLDJDQUR0Q0Q7WUFHT3hiLGVBQWVwN0UsUUFBUW0zRDtJQUNoQzs7OzREQURnQ0E7Ozs7NERBQVJuM0Q7Ozs7Ozs7O0dBS0E7WUFJdEI4MkYsc0JBQXVCOTJGLFFBQU85cUMsR0FBRW1XO0lBRXhCLElBQU55RCxNQUFNLDhCQUZzQjVaLEdBQUVtVztJQUcvQixHQUFBLCtCQURDeUQsS0FGNEI1WjtLQVR2QmttSCxlQVNnQnA3RTtJQUlwQixPQUZEbHhCO0dBR0Q7WUFXRGlvSCxjQUFjN1c7SUFBTyxPQUE0QiwyQ0FBbkNBO0dBQXFEO0dBQ3RDO0lBQTdCOFcsNkJBREFELGNBbmFWMWpCO0lBcWFVNGpCLDhCQUZBRixjQXBhVi9SO0lBdWFVa1MsZ0NBSEFILGNBcmFWaFM7SUF5YVVvUyxnQ0FKQUosY0F0YVZ0aEU7SUEyYVUyaEUsaUNBTEFMLGNBdmFWalM7SUE2YVV1UyxpQ0FOQU4sY0F4YVZsUztJQSthVXlTLGlDQVBBUCxjQXphVm5TO1lBd21CQTN2SCxVQTFLWStxQztJQWdDSjtLQUNJdTNGO0tBQ0EzaEk7S0FDQWtXLE1BQUosc0JBbkNJazBCO2FBbUNBbDBCLEtBakZLc3ZHLGVBOENMcDdFOzBDQUFBQSxRQWtDQXBxQzs7Ozs7OztTQUFBQTs7O2lCQUFBQTs7VUFHQW8wRTs7O1NBQUFBOztJQVVKLElBMUNLd3RELDZCQWdDRHh0RDs7UUFIQXAwRSxVQUNBa1c7O09BbUdBODBHO1NBakdBNTJDO1lBSkF1dEQ7WUF3R007K0JBeEdOQTtjQS9FS25jLGVBOENMcDdFO2NBMklHLDJCQTFHSHUzRjtNQTRHSixPQVBJM1c7O0tBM0VjLElBQVo2VyxvQkFFRWpzSCx5QkFDQWtzSDs7U0E1Qko5aEksVUFDQWtXO1NBMkJJNHJIO1VBM0ZzQm41RCxnQ0E2QjFCditCLFFBa0NBcHFDOzs7T0ErQkUsU0E5RndCMm9FO2tCQUFBQSxRQStEMUIzb0U7O3FCQS9EMEIyb0U7UUFFTDtTQUZEK3JDLFFBMEZoQjkrRjtTQXhGaUIsT0FBQSwwQkFGSyt5RDtTQUUxQm90QyxRQUFRO1FBQ1Q7VUFBQSwrQkFIcUJyQixPQW5CdEJ1c0I7U0FFT3piLGVBOENMcDdFO1FBeEI2QyxXQUFBLDhCQUg3QzJyRTtRQXdGSW5nRztTQWxHTnNySDtXQXFDRTkyRixRQXhCMEIsOEJBTE5zcUUsT0FwQnRCc3NCO1FBNEdJYTtRQXpCRjdoSTs7O09BNEJJOGhJOzs7S0FhTjtNQTFFR0MsY0E0REduc0g7TUEzREhvc0gsY0FnQ0RoaUk7YUFBQUEsU0FDQWtXOzs7V0F5Q2U7c0RBNUVmazBCLFFBa0NBcHFDOztLQTBDZTtNQTFDZkE7TUE2Q3NCLElBQWxCaWlJOztVQTdDSmppSSxVQUNBa1c7VUE0Q0krckg7MENBL0VKNzNGLFFBa0NBcHFDOzs7OzBCQUFBQTs7NkJBeUJFNmhJLGtCQXpCRjdoSTtRQTZDSWlpSTs7OztTQTVFSEMsVUErQkRsaUk7WUF5QkU2aEk7TUF6R0dyYyxlQThDTHA3RTs7O01BNEZxQjtTQTFEckJwcUMsa0JBQ0FrVzs7U0F5RHFCO3NEQTVGckJrMEIsUUFrQ0FwcUM7K0NBbENBb3FDLFFBa0NBcHFDOzs7Ozs7O1lBQUFBLFNBQUFBOztZQUFBQSxTQUFBQTs7WUFBQUEsU0FBQUE7Ozs7OzttQkFoRkt3bEgsZUE4Q0xwN0U7O1dBSUMybUY7OztTQThCRC93SCxTQUNBa1c7K0NBbkNBazBCLFFBa0NBcHFDOzs7Ozs7O1lBQUFBOztZQUFBQTs7WUFBQUE7O1lBQUFBOzs7Ozs7bUJBaEZLd2xILGVBOENMcDdFOztXQUlDMm1GOzs7O1FBQUFBLGVBbERJdkwsZUE4Q0xwN0U7O0tBUW9CLElBQXBCd3JFLFFBdFZaaWMsZ0JBa1ZhZDtZQUFBQTs7WUFLRG9SLHdCQXZCRlQ7O1lBdUJFUyx3QkF4QkZWOztZQXdCRVUsd0JBekJGWDs7WUF5QkVXLHdCQTFCRlo7O1lBMEJFWSx3QkEzQkZiOztZQTJCRWEsd0JBNUJGZDtvQkE0QkVjLHdCQTdCRmY7O0tBZ0NDLEdBQUEsNEJBWEVXLGFBUURJO01BdkRLM2MsZUE4Q0xwN0U7S0FjaUI7TUFBakJnNEYsaUJBQWlCLDJCQWJoQkwsYUFPRG5zQjtNQU9BeXNCLGVBYkNMO1FBQ0FFLFdBWURHO1VBNEdFQyxvQkE3R0ZGOztNQU1BO09BREVHO1NBQ0Y7O1dBcEJBbjRGO1dBZUFpNEY7V0FaQ0gsVUFZREc7V0FQQXpzQjtXQUhDZ3NCOztPQXNIQ1U7U0FoS0pwQjtXQXFDRTkyRixRQWNBZzRGLGdCQWMyQywyQkFUekNHO0tBY0ZaLFlBdEVGVCxzQkFxQ0U5MkYsUUFpQ0F1M0YsV0EwRkVXOztHQWtCUTtZQXFIdEI5OUgsWUFoSGtCMUYsR0FBSSxXQXVCdEJTLFVBdkJrQlQsSUFBMkI7WUFnSDdDd0YsWUE5R2tCN0Y7SUFDWixTQURZQTtLQU1WLE9BQUE7c0VBTlVBO1FBRUFhLElBRkFiO0lBR1YsSUFBSyxXQW1CYlksVUFwQmtCQyxJQUNMO1VBQ0ZYO0tBQXFCO01BQXJCQywwQkFBQUQ7TUFBcUIsT0FBQSx5QkFBckJDO0tBQU8sT0FBQSx5Q0FKQUg7O0dBTWlFO0dBRzFEO0lBbUJmeXJELG1CQW5CZTs7Z0RBeGNyQmptRCxXQTZpQkpPO0lBR0lpekM7Ozs7O1NBaGpCQTczQztTQUFBRztTQUFBSztTQUFBRDtTQUFZc0Q7U0FBWkc7U0FBQUc7U0FBQUM7U0FBQUM7U0E2aUJKSztTQUFBRTtTQUdJaXpDOzs7SUF0RmdCLHFCQW1GcEJuekMsYUFBQUUsYUFsRlUwbEQ7SUFJVmhsRDs7MENBQUFBLFdBOEVBVixhQXJ0QkVreUU7Ozs7Ozs7Ozs7WUFrcEJGaEgsU0FBUTV3RSxHQUFFOC9IO0lBQWdCLFdBQUEsMkJBQWhCQSxHQTVuQlYzUDtJQTRuQjBCLE9BQUEsK0JBQWxCbndIO0dBQWtEO1lBQzFENndFLFNBQVE3d0UsR0FBRTgvSDtJQUFnQixXQUFBLDJCQUFoQkEsR0E3bkJWM1A7SUE2bkIwQixPQUFBLCtCQUFsQm53SDtHQUFrRDtZQUMxRHVoSCxTQUFPdmhILEdBQUU4L0g7SUFBSTtLQUFXLE9BQUEsMkJBQWpCOS9ILEdBQUU4L0g7S0FBVyxPQUFBO2dEQTluQnBCM1A7R0E4bkIrRDtZQUMvRG5oRCxTQUFPaHZFLEdBQUU4L0g7SUFBZSxXQUFBLDJCQUFmQSxHQS9uQlQzUDtJQStuQndCLE9BQUEsK0JBQWpCbndIO0dBQWlEO1lBQ3hEaXZFLFNBQU9qdkUsR0FBRTgvSDtJQUFlLFdBQUEsMkJBQWZBLEdBaG9CVDNQO0lBZ29Cd0IsT0FBQSwrQkFBakJud0g7R0FBaUQ7WUFDeERrdkUsU0FBUWx2RSxHQUFFOC9IO0lBQUk7S0FBVyxPQUFBLDJCQUFqQjkvSCxHQUFFOC9IO0tBQVcsT0FBQTtnREFqb0JyQjNQO0dBaW9CK0Q7WUFDL0Q3OEMsaUJBQWlCdHpFLEdBQUU4L0g7SUFBSSxPQUZ2Qjd3RCxTQUVpQmp2RSxHQUFFOC9ILFVBSG5COXdELFNBR2lCaHZFLEdBQUU4L0g7R0FBa0Q7WUFJckUzOUQsY0FDSXBnRSxpQkFHRGt3SCxjQUNEanlIO0lBRUosR0FOTStCLFNBQVlDLE1BQVpELFFBQUEwekgsWUFBWXp6SCxjQUFaeXpIO0lBTU4sYUFMaUJ4cEYsaUJBQVh3cUUsV0FBV3hxRSxnQkFBWHdxRTtJQUtOO1NBSnNCMGIsaUJBQWhCdUQsZ0JBQWdCdkQ7O1NBQWhCdUQ7SUFLcUMsV0FwaEJ6QzVDLGdCQWloQkU5eUg7V0FHSSw0QkFKSGl5SDs7V0FHTTlGLG1CQUFQaGtCLFVBOWpCRjZvQixNQTRqQkVoeEg7O1dBRU9tc0gscUJBQVBoa0IsVUE1akJGOG9CLE1BMGpCRWp4SDs7V0FFT21zSCxxQkFBUGhrQixVQTNqQkYrb0IsTUF5akJFbHhIOztXQUVPbXNILHFCQUFQaGtCLFVBMWpCRmdwQixPQXdqQkVueEg7O1dBRU9tc0gscUJBQVBoa0IsVUF6akJGaXBCLE9BdWpCRXB4SDs7V0FFT21zSCxxQkFBUGhrQixVQXhqQkZrcEIsTUFzakJFcnhIOztPQUlPLElBRlAyMUgsVUF2akJGckUsT0FxakJFdHhILElBRU9tc0gsV0FBQTJTLFVBQVAzMkIsVUFBQXd0Qjs7SUFXRjtLQURFcG9EO09BQ0Y7O2FBakJJa29EO2FBQ0FoZjtpQkFDQWlmOztTQUlGdnRCOzs7S0Fja0I7T0FsQmhCdXRCO1VBa0JnQiwrQ0FkWHZKO1VBYVB5SixXQUMwRCxrQ0FkbkR6Sjs7O1NBYVB5SixXQWJPeko7O0lBZ0JYLE9BQUEsa0NBTkk1K0MsUUFHQXFvRDtHQUdXO1lBR2I4Tix3QkFBc0IsT0FBQSwyQkFBdUQ7WUFFN0UxNUYsT0FBUXNoQjtJQUNWO0tBQUE7S0FDc0IsTUFqa0JwQjUwQyxPQWlrQnFCLFdBOWpCckJ3MEcsS0F4RkErVDtLQXNwQkEsT0FBQSwyQkFGUTN6RTtLQUNVLE9BaGtCbEI1MEMsT0F0RkFzb0g7SUF1cEJBLE9BaGtCQXZ1RCxTQStqQkYsMkJBRFVubEI7R0FFd0Q7WUFHaEVpZ0UsVUFBVXZySCxHQUFHeXJIO0lBQVUsd0NBQWJ6ckgsR0FBR3lySCxTQWhrQmIzVTtHQWdrQitEO1lBRS9EMmIsZ0JBQWdCenlIO0lBQ2xCO0tBQXFELFFBaG9CbkR1d0gsU0ErbkJnQnZ3SDtLQUNpQmtzSDtLQUFKRDtLQUFKRDtLQUFMNUU7S0FBTDVrRTtLQUFKc2tFO0tBQU4zdUM7SUFDUCxPQUFBLGlDQURPQSxNQUFNMnVDLElBQUl0a0UsS0FBSzRrRSxLQUFLNEUsSUFBSUMsSUFBSUM7R0FDc0I7R0FjdkQ7SUFYQTMzQztJQUNBaUU7OzZDQW50QkFscUMsYUEwb0JBN3RDOztJQW1GQTtjQUFZLDhDQW50QlRJO0lBbXRCSCxNQUFBO0lBQUE4RSxVQUFBO0lBQUEsTUFBQTtJQUFZQztNQUFaLFdBQUEsK0JBQUFEO0lBQUFJLHFCQXZpQklqRixZQUFBRztJQXVpQkppRixxQkF2aUJJNUUsY0FBQUQ7SUF1aUJKOEUsY0FBWVAsZUFBWkcsZ0JBQUFHO0lBQUF5QjtHQUFBLFNBQUFuQixPQUFBaEcsR0FBQSxPQW50QkZnRSxLQW10QkVoRSxHQUEwRDtHQU0xRDs7Ozs7U0E3aUJJK0Q7U0FBQXpEO1NBQUFHO1NBQUFLO1NBQUFEO1NBdWlCUXVFO1NBQVpHO1NBQUFHO1NBQUFDO1NBTUFYO1NBTkFtQztTQU1BakM7U0FOQWM7Ozs7Ozs7SUFNQTtjQUFZLDhDQXp0QlQzRjtJQXl0QkgsTUFBQTtJQUFBbUcsVUFBQTtJQUFBLE1BQUE7SUFBWUM7TUFBWixXQUFBLCtCQUFBRDtJQUFBTSxxQkE3aUJJeEcsWUFBQUc7SUE2aUJKd0cscUJBN2lCSW5HLGNBQUFEO0lBNmlCSnFHLGNBQVlULGVBQVpLLGdCQUFBRzs7Ozs7U0E3aUJJM0c7U0FBQUc7U0FBQUs7U0FBQUQ7U0E2aUJRNEY7U0FBWks7U0FBQUc7U0FBQUM7U0FBQWxDO1NBQUFFO1NBR0lpekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBUUpnckYsNEJBQTRCM2pJO0lBQXNCLFVBdm5CbERteEgsT0F1bkI0Qm54SDtJQUFzQixPQUFBO0dBQVU7WUFDNUQ0akksNEJBQTRCaGtJO0lBQUksT0F6b0JoQzh4SCxPQXlvQnVDLGdDQUFYOXhIO0dBQWdDO0dBQ3pDLElBQW5CaWtJLG1CQUFtQjtZQWtCbkJDLCtCQUF3QzlqSTtJQUMxQzs7S0FOcUM7O09BQWxDLHNCQUt1Q0EsR0FodEJ4Q2kvSDtZQTJzQm1DLHNCQUtLai9ILEdBanRCeENnL0gsaUNBZ3NCb0J0ckUsTUFpQm9CMXpEOzs7NkJBL0J4QzBGLFlBbHJCQXM1SDs7OzBCQWtyQkF0NUgsWUFqckJBdTVIOztpQ0FpckJBdjVILFlBK0J3QzFGOzs7Ozs7TUFqQnBCMHpEOztJQUFpRDtLQUFBLE1BQUE7S0FBdEMsTUFBQSwyQkFBWEEsS0FEcEJtd0U7S0FDcUUsTUFBQTtLQWtCdEQsTUFBQTtJQUFBLE9BQUE7R0FBdUU7R0FJeEY7SUFERUU7TUF4QkFKLDRCQTVyQkExRTtJQXd0QkErRTtNQTVCQUwsNEJBN3JCQTNFO1lBNnRCQWlGLCtCQUF3Q3JrSTtJQUMxQztLQUFHLE1BQUEsZ0NBRHVDQSxHQUp4Q29rSTtLQUtDOztVQUNBLGdDQUZ1Q3BrSSxHQVJ4Q21rSTtJQVVDO0tBRUQ7Ozs7O09BSndDbmtJOztJQWFSLE9BaHJCaEMyL0gsK0JBZ3JCZ0MsZ0NBYlEzL0g7R0FhYTtHQUczQjtJQUExQnNrSTtJQUNBQztJQUVhLGNBdHNCYmhGLFVBYkE1TztJQSt0Qlk7Ozs7Ozs7O09Bdm5CUnp2SDtPQUFBRztPQUFBSztPQUFBRDtPQTVLRFI7T0FBTHNEO09BQUFDO09BQUFDO09BeXRCRW1CO09BQUFFO09BbEZVMGxEO09Bdm9CWjd4QztPQUFBRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXNwQkVzM0Q7T0FDQUM7T0FDQTB3QztPQUNBdnlDO09BQ0FDO09BQ0FDO09BQ0FvRTtPQTVwQkd0NkQ7T0FBQUU7T0FBQUU7T0F3c0JIbTdEO09BQ0FpRTtPQXpFQS8zRTtPQUNBRjtPQXhtQkEydkg7T0FDQUM7T0FDQUM7T0FDQXJ2RDtPQUNBc3ZEO09BQ0FDO09BQ0EzUjtPQUxBd1I7T0F0QkV2NEM7T0FzQ0ZqOUQ7T0EwQkE0MUc7T0FpQkFnQjtPQUtBQztPQUNBQztPQUNBQztPQUhBQztPQWNBQztPQURBaHVCO09BVEFpdUI7T0FDQUM7T0FDQUM7T0FVQWY7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FJQXp0QjtPQW1CQXE4QjtPQVZBeHBIO09BQ0ErNUQ7T0FDQWtIO09BQ0F1ekM7T0FDQXBVO09BSUFwbUM7T0FDQUM7T0EvR0E1OUI7T0FDQWdxQjtPQTJxQkEwMUQ7T0EvaUJBSztPQVhBQztPQXVoQkE1d0Q7T0FpQ0FvcEQ7T0FobUJBZ1U7T0FWQUY7T0FDQUM7T0F5QkFHO09BQ0FDO09BQ0FDO09BaXFCQXVFO09BQ0FDO09BN3VCQWxGO09BREFEO09BQ0FDO09BREFEO09BNEZBZ0I7T0FEQUQ7T0FFQUU7T0ExQkFUO09BcEJBSjtPQWlDQVM7T0FGQUQ7T0Fxa0JBOEQ7T0FFQTE1RjtPQTREQTg1RjtPQVlBRztPQWhDQU47T0FvQkFHO09BbkJBRjtPQStCQUs7Ozs7Ozs7OztTQXhsQkkxL0g7U0FBQWdCO1NBQUE4UTtTQUFBdlY7U0FBQUc7U0FBQUs7U0FBQUQ7U0FBWXNEO1NBQVpHO1NBQUFHO1NBQUFDO1NBQUFDO1NBNmlCSks7U0FBQUU7U0FHSWl6QztTQTdpQkl5bkY7U0FEQUQ7OztTQW1kUjUvSDtTQURBRTs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJQ3pvQko1RztJQWlOUXkwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWpOUjs7SUFBQSxjQUFLO0lBQUwsTUFBQTtJQUFBNXpDLFFBQUE7SUFBQSxNQUFBO0lBQUttRyxjQUFMLFdBQUEsK0JBQUFuRztJQXVNSW9HO0lBQUFHO0lBQUFJO0lBQUFDO0lBQUFnRDtpRUF2TUp6SztJQUFBeWY7SUFBQUU7SUFBQUQsdUJBQUFDO0lBR2dCODVEO0lBQUE1OEQ7SUFBQSs1RDtJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFFWjAvQyxTQUFTdndILEdBQUksT0FBQSw2QkFBSkEsR0FBbUI7R0FLSDtJQUZ6QnUySDtJQUNBRDtJQUNBRztNQUF5Qiw2QkFEekJIO1lBRUFOLDJCQUEyQmgySCxHQUFJLE9BQUpBLEVBQUs7WUFTaEJva0ksV0FBVzVZO0lBTTdCLFdBQUEsNkJBTjZCQSxNQVozQitLO0lBa0JGLGtEQU42Qi9LLE1BWDNCOEs7R0FpQitEO1lBRy9ESCwrQkFBaUMzSyxNQUFPLFdBVHhCNFksV0FTaUI1WSxNQUE0QjtZQUM3RDBLLCtCQUFxQzFLLE1BQU8sT0FBUEEsS0FBVztZQUVoRDRLLCtCQUErQjVLO0lBQ2pDLEtBYmtCNFksV0FZZTVZLE9BQ3FCLE9BRHJCQTs7NkNBQUFBOzs7Ozs7O0dBQ3lCO1lBR3hENlksK0JBQStCN1ksTUFBTyxPQWhCdEI0WSxXQWdCZTVZLGdCQUFBQTtHQUFrRDtZQUNqRmo3RSxRQUFRdndDLEdBQUV3ckg7SUFBTyxPQUxqQjRLO2FBS2dELDZCQUF4Q3AySCxHQUFFd3JIO0dBQXlEO1lBQ25FOFksUUFBUXRrSSxHQUFFd3JIO0lBQU8sT0FOakI0SzthQU1nRCw2QkFBeENwMkgsR0FBRXdySDtHQUF5RDtZQUNuRWg3RSxJQUFJeHdDLEdBQUV3ckg7SUFBTyxPQUhiNlk7YUFHNEMsNkJBQXhDcmtJLEdBQUV3ckg7R0FBeUQ7WUFDL0Rqd0csSUFBSXZiLEdBQUV3ckg7SUFBTyxPQUpiNlk7YUFJNEMsNkJBQXhDcmtJLEdBQUV3ckg7R0FBeUQ7WUFDL0R6NEUsS0FBSy95QztJQUFJLE9BTFRxa0ksK0JBS3dDLDhCQUFuQ3JrSTtHQUFnRDtZQUNyRCs4RCxLQUFLLzhEO0lBQUksT0FOVHFrSSwrQkFNd0MsOEJBQW5DcmtJO0dBQWdEO1lBQ3JEbTRDLEtBQUtuNEMsR0FBRTgvSCxHQUFJLE9BQUEsNkJBQU45L0gsR0FBRTgvSCxHQUFrQjtZQUV6Qm5sSCxPQUFRbXNHLElBQUl0a0UsS0FBSzRrRSxLQUdmNEUsSUFBSUMsSUFBSUM7SUFBWjs7UUFIbUI5RSxjQUFBQTtVQUdQc1AsWUFBSkMsWUFBSkM7OztTQUFRRixPQUFBeEssSUFBSnlLLE9BQUExSyxJQUFKMkssT0FBQTVLOztJQUsyQixPQXJCN0JvSzthQXFCNkI7dUNBUnJCdFAsSUFBSXRrRSxLQUFLNGtFLEtBR2Z3UCxNQUFJRCxNQUFJRDtHQUs2RDtHQUl6RDtJQUFBO0lBQ0Q7SUFpSlQvOUU7SUF4SUosY0FBWSw0Q0FuRVg5M0M7SUFtRUQsTUFBQTtJQUFBNkQsVUFBQTtJQUFBLE1BQUE7SUFBWUM7TUFBWixXQUFBLCtCQUFBRDtJQUFBUCxtQkFvSUFyRCxZQUFBRztJQXBJQW1ELG1CQW9JQTlDLGNBQUFEO0lBcElBZ0QsWUFBWU0sZUFBWlIsY0FBQUM7SUFHTW05RztJQUNBMFY7SUFDQWpvRDtJQUNBbDREO1lBSkZ5dEgsb0JBS0V2a0ksR0FtQkk2aEU7SUFsQk47O01BQUcsNkJBREQ3aEUsR0FsRU51Mkg7V0FtRW9DLDZCQWxFcENELG1CQWlFTXQySDtLQUlZO01BQVJ3a0ksUUFBUSxXQU5aeDFEO01BT0l5MUQsV0FBVyxXQVBmejFEO01BUUlrOUMsS0FBSyw4QkFOVGxzSDtNQU9JaXNILEtBQUssV0FYVDFLLFVBVUkySyxJQURBdVk7TUFHQS9OLE9BQUssV0FUVDUvRyxHQVNTLFdBWFRtZ0gsS0FTSS9LLElBREF1WTtNQUlBelksS0FBSyxXQWJUekssVUFXSTBLLElBRkF3WTtNQUtBOU4sT0FBSyxXQVhUNy9HLEdBV1MsV0FiVG1nSCxLQVVJaEwsSUFGQXdZO01BTUE3a0ksSUFBSSxXQWZSMmhILFVBYUl5SyxJQUpBeVk7TUFPQTdOLE9BQUssV0FiVDkvRyxHQWFTLFdBZlRtZ0gsS0FZSWpMLElBSkF5WTtNQVFBOWlJLElBQUksV0FqQlI0L0csVUFlSTNoSCxHQVBBNGtJO01BVUF2TSxNQUFJLFdBZlJuaEgsR0FlUSxXQWpCUm1nSCxLQWNJcjNILEdBUEE0a0k7TUFXQXQzRixJQUFJLFdBaEJScDJCLEdBZ0JRLFdBbkJSeXFHLFVBaUJJNS9HLEdBVEE2aUk7TUFZQTNrQixNQUFJLFdBakJSL29HLEdBaUJRLFdBbkJSbWdILEtBZ0JJdDFILEdBVEE2aUk7TUFhQUU7b0JBRUE3aUU7V0FBQUE7O2VBWEE2MEQ7O2lCQUVBQztxQkFFQUMsYUFFQXFCOzs7TUFpQkE3Z0g7c0JBZEFzdEg7OztjQUFBQTswQkFBQUE7MEJBQUFBO01Bc0JBdDVGLE1BQU0sMkJBUk5oMEI7S0FTSix5Q0FESWcwQixRQXhCQThCO0tBMEJKLDJCQUZJOUI7S0FHSix5Q0FISUEsUUF2QkF5MEU7c0JBQ0E2a0I7TUE2QkQsMkJBUEN0NUY7TUFRRCx5Q0FSQ0EsUUF6QkE2c0Y7dUJBR0F5TTtPQWtDRSwyQkFaRnQ1RjtPQWFFLHlDQWJGQSxRQTNCQXdyRjtzQkFLQThOO1FBdUNLLHlDQWpCTHQ1RixTQTdCQXVyRjt1QkFPQStOO1NBMEN1Qix5Q0FwQnZCdDVGLFNBL0JBc3JGOzs7O0tBb0RKLE9BQUEsMkJBckJJdHJGOztJQXJDRDtHQTBENEQ7WUEwQmpFMnNGLG1CQXZCa0J6c0YsUUF1QlN3N0UsSUFBSXRrRSxLQUFLNGtFLEtBQUtELFlBQVlEO0lBQ3ZELEdBQ0sseUJBRmtEQTtTQUNuRHdKOztLQXRCUztNQUZvQmpuRCxRQXVCVTA5QyxhQUFZRDtNQXZCM0IvbEgsUUF1QmVnbUg7TUFyQnZDelU7TUFDQWl5QjtNQUNBempJLFVBSndCQzs7U0FJeEJELFVBSjZCdW9FO2VBRzdCazdEO01BSU0sSUFBSmo3RixJQUFJLHdCQVBVNEIsUUFJaEJwcUM7TUFJQyxHQUFBLDBCQURDd29DO09BSkZpN0Y7Z0JBQUFBO1FBVVEsUUFBQSwwQkFOTmo3RixJQUxGZ3BFOzs7UUFVZ0MsVUFBQSwwQkFMOUJocEU7UUFMRmdwRSxhQUFBQTs7O01BRUF4eEc7O1FBREF5akk7TUFnQndDLFVBQUEsaUNBaEJ4Q0E7TUFEQWp5Qiw2QkFBQUE7O1NBc0JBZ2UsY0F0QkFoZTs7SUE0QmE7S0FBQSxNQUFBLDJCQU5iZ2U7S0FNSixNQUFBO0tBQ2MsTUFBQSxnREFSd0J0SjtLQU90QyxNQUFBO0tBRWMsTUFBQSxnREFUbUI1a0U7S0FPakMsTUFBQTtLQUdjLE9BQUEsZ0RBVmVza0U7SUFPN0IsT0F2SUZzUDthQXVJRTtHQUlpQztZQW9DZDcxSCxVQWpDUCtxQztJQUFTLHlDQUFUQSxRQWRWeXNGO0dBY21FO1lBeUJ2RXI0SCxVQXZCY0M7SUFDWixTQURZQTtLQUVLLE9BQUEsbURBRkxBO1FBR0FDLElBSEFEO0lBSVYsSUFBSyxVQTJCWVksVUE1QlBYLElBQ0w7VUFDRkM7U0FBQUMsMEJBQUFEO0tBQU8sT0FBQSw2QkFBUEMsS0FMT0g7O0dBSzJCO09BR3JDb1o7WUF1QmlCdFksVUF0Qk5ULEdBQVMsT0FwSHBCdWtJLG9CQW9IV3ZrSSxhQUFnRDtZQWMvREQsVUFiZUMsR0FBUyxXQXFCSFMsVUFyQk5ULElBQWdDO1lBQzNDb2dJLFNBQVNwZ0ksR0FBSSxPQUFBLHFDQUFKQSxHQUFnQztZQUN6Q21nSSxhQUFhbmdJO0lBQUksT0E1SnJCbzJIO2FBNEpvRCxxQ0FBbkNwMkg7R0FBcUU7R0FXdEY7SUFBQTtjQUFLLDhDQXBJTzJFO0lBb0laLE1BQUE7SUFBQWdCLFVBQUE7SUFBQSxNQUFBO0lBQUtDO01BQUwsV0FBQSwrQkFBQUQ7SUFBQWIscUJBQUFoRSxZQUFBRztJQUFBZ0UscUJBQUEzRCxjQUFBRDtJQUFBNkQsY0FBS1UsZUFBTGQsZ0JBQUFHO0lBV0lUO0lBQ0FEOzs7OztTQVpKekQ7U0FBQUc7U0FBQUs7U0FBQUQ7U0FBS3VFO1NBQUxkO1NBQUFHO1NBQUFDO1NBQUFaO1NBWUlDO1NBREFDO1NBWEo5RTtTQUFBSztTQUlJNDRDO1NBSWlCcDRDO1NBQUFFO1NBRWpCNnRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUtKOGMsbUJBQWlCLG9DQTlCYnJ5QztZQStCSjZySCxzQkFBc0I1a0k7SUFBSSxPQWxKdEJ1a0ksb0JBa0prQnZrSTtHQUFzRDtZQUM1RXkzSCxzQkFBc0J6M0g7SUFBSSxPQW5KdEJ1a0ksb0JBbUprQnZrSTtHQUFzRDtZQUM1RXczSCxjQUFjeDNILEdBQUksT0FwSmR1a0ksb0JBb0pVdmtJLGNBQWlEO1lBQy9EdTNILGtCQUFrQnYzSCxHQUFJLE9BckpsQnVrSSxvQkFxSmN2a0ksY0FBeUQ7WUFFM0VrNEgsMkJBQTRCaDNILEtBQUtrVyxLQUFJZzBCO0lBQ3ZDO0tBQ0U7O1FBQUEsa0NBRjRCbHFDLEtBQUtrVyxLQUFJZzBCLEtBNURqQzJzRjtLQThESjs7VUFFQWw0SDtLQUlVO01BSlZDLDBCQUFBRDs0Q0FBQUM7TUFJVSxNQUFBLDJCQVJrQm9CLEtBQUtrVyxLQUFJZzBCOzs7Ozs7Ozs7R0FTaEI7WUFHckJ5NUYsTUFXUXJaLE1BQU1zWixTQUFPNXRIO0lBQ3JCLEdBQUcsNkJBRFc0dEgsU0FBTzV0SDs7eURBQUFBO3lEQUFQNHRIOzs7Ozs7OztJQU1OLEdBQUEsNkJBTkF0Wjs7NkNBQUFBOzs7Ozs7OztJQVVBLEdBek9RNFksV0ErTlI1WSxPQVdILGVBWFNzWjtRQVZxQjd0SCxRQVVyQjZ0SCxTQVZrQ3QrRztJQUdoRDtLQUFVO01BSHNDd3pDLFlBQWIvaUQsT0FBYXVQO01BQWJvMEcsVUFJdkIsNkJBSnVCM2pILE9BVTNCdTBHO0tBTEwsR0FBQSw2QkFMZ0NvUCxTQVVkMWpIO01BWWhCLFdBaEJBLDBCQU4yQzhpRDtTQUFiL2lELFFBQUEyakgsU0FBYXAwRyxNQUFBd3pDOztHQXNCVTtHQU1qRCxJQUFQczJELE9BQU87WUFEVG9ILFdBRUVDLFFBQU9DO0lBQ1Q7S0FDSUMsV0FBUyw4QkFGWEY7S0FHRUcsV0FBUyw4QkFISkY7S0FJTHovRSxPQUFPLDhCQUZQMC9FLFVBQ0FDO0tBR0E5VCxLQUFLLDJCQUZMN3JFLE1BTEZtNEU7S0FTaUIsTUFBQSw4QkFGZnRNLElBUEZzTTtLQVNFck0sS0FBSyxnQ0FUUHFNO0tBVXFCLE1BQUE7S0FBUCxNQUFBLDhCQVZkQTtLQVVFeHpEO09BQU8sK0JBRFBtbkQ7VUFDdUMsOEJBRHZDQSxJQVRGcU07VUFTRXJNO0lBRUosT0FBQSw4QkFESW5uRDtHQUNjOzs7OzthQUloQnp3QixLQUFLN3JDLEdBQUVtVztLQUNUO01BQUl3aEMsT0FqQkp1L0UsV0FnQk9sM0gsR0FBRW1XO01BRXFELE1BQUEsNkJBRDFEd2hDO01BQzRDLE1BQUEsd0JBRnZDeGhDO01BRXlCLE1BQUEsd0JBRjNCblc7S0FFdUQsT0FBQTtJQUFxQjtJQUVyRjtLQUVPLElBQVNtVyxjQUFIblcsY0FBc0IsTUFBQSx3QkFBbkJtVztLQUFNLFdBQUEsd0JBQVRuVztJQUFrQztJQUQ3QyxJQURFOHJDLFdBQ0Y7SUFJRjtLQUFzQixJQUFTMzFCLGNBQUhuVztLQVR4QjZyQyxLQVN3QjdyQyxHQUFHbVc7S0FDN0IsT0FWRTAxQixLQVMyQjExQixHQUFIblc7SUFFakI7SUFGWCx5QkFMSThyQztJQVFKOzs7UUFBQTs7Ozs7SUFBQSxPQUFBO0dBUzJEO0dBVDNEO0lBQUE7O09BQUE7Ozs7Ozs7Ozs7O1NBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FjeUI7SUFGdkJpb0M7SUFDQWlFO0lBQ0F4L0Q7TUFBdUIsV0FGdkJ1N0QsVUFwU0FnaUQsY0FDQUQ7SUFzU0FwOUc7SUFDQUUsc0JBQXNCO0lBRVZxcEM7SUFBQUQ7SUFBQXI5QztJQUFBa1I7SUFBQTQ0RDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBa0U7SUFZQTtJQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F6R1hub0I7T0F0Tko3eEM7T0FBQUQ7T0FrVGdCaTZEO09BQUFsRTtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBNTREO09BQUFsUjtPQUFBcTlDO09BQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQS9TQW91QjtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBRDtPQUFBLzVEO09BQUE0OEQ7T0EyU1p0NkQ7T0FDQUU7T0FDQUU7T0FKQW03RDtPQUNBaUU7OztPQWhRQTc5RDtPQXhDQTQxRztPQUdBZ0c7T0FDQUQ7T0FFQU47T0FxQkFJO09BQUFBO09BSEFEO09BQ0FEO09BU0ExbEY7T0FDQWoxQjtPQUNBdzNCO09BQ0FncUI7T0FDQTVrQjtPQXlOQXUvRTtPQTFDQUg7T0FEQUM7T0FHQVU7T0FKQVQ7T0FBQUE7T0E5TUFoQjtPQTJCQWxtRjtPQUNBK3pGO09Ba01BTztPQWpCQUQ7Ozs7Ozs7Ozs7O1NBaEJBOWpJO1NBQUFHO1NBQUFLO1NBQUFEO1NBcElZc0Q7U0FBWlI7U0FBQUM7U0FBQUM7U0FvSUFDO1NBQUE1RTtTQUFBSztTQUlJNDRDO1NBaEJBeW5GO1NBQ0FEOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUN6TFJ0bUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBTHFCO0lBQWpCa2xJLGlCQUFpQjs7SUFLckIsY0FBSztJQUFMLE1BQUE7SUFBQXJrSSxRQUFBO0lBQUEsTUFBQTtJQUFLbUcsY0FBTCxXQUFBLCtCQUFBbkc7SUFpVVFvRztJQUFBRztJQWpVUmtELG1CQWlVUXJELFlBQUFHO0lBQUFJO0lBQUFDO0lBalVSOEMsbUJBaVVROUMsY0FBQUQ7SUFqVVJnRCxZQUFLeEQsYUFBTHNELGNBQUFDO0lBaVVRRztJQWpVUnVJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FBQSxTQUFBdEksS0FBQWhFLEdBQUEsT0FBQSxXQUFBc00sTUFBQXRNLEdBQzJDO0dBRDNDO2lFQUFBM0c7SUFBQXlmO0lBQUFFO0lBQUFELHVCQUFBQzs7Ozs7Ozs7SUF5TElsVjtJQW5MWWswRTtJQUFBakU7SUFBQW43RDtJQUFBRjtJQUFBRjtJQUVaeWxIO0lBQ0Fwb0g7SUFDQTRvSDtJQUNBRDtJQUNBN0c7SUFDQTNuRjtJQUNBajFCO0lBQ0E0OEI7WUFDQStnRixTQUFTbDVILEdBQUU4L0g7SUFBYSxXQUFBLFdBRHhCM25GLE1BQ1NuNEMsR0FBRTgvSDtJQUFhLE9BQUE7R0FBVTs7SUFDbENyOUU7SUFDQUQ7SUFDQXpQO0lBQ0FncUI7WUFDQWduQyxvQkFBb0IvakcsR0FBSSxPQUFKQSxFQUFLO1lBQ3pCOGpHLG9CQUFvQmxrRyxHQUFJLE9BQUpBLEVBQUs7WUFDekJtbEksd0JBQXdCL2tJO0lBQWMsT0FBaUIsOEJBQS9CQTtHQUFzRDtZQUM5RWdsSSx3QkFBd0JsdUg7SUFBSSxPQUFvQiw4QkFBeEJBO0dBQTRDO1lBQzdEbXVIO0lBQWM7O0dBQXNDO1lBQzNEN00sV0FBV3h6RSxJQUFTQyxJQUFLLE9BQUEscUJBQWRELElBQVNDLElBQVk7WUFDaEN3ekUsU0FBU3p6RSxJQUFTQyxJQUFLLE9BQUEscUJBQWRELElBQVNDLElBQVk7WUFFOUJxZ0YsZUFBZTFrSSxHQUFFbVcsR0FBR3lEO0lBQ3RCLE9BQUcsNkJBRGdCekQ7Y0FDWSw2QkFEVHlELEtBQUw1WjtjQUNvQyw2QkFEL0I0WixLQUFMNVo7R0FDb0Q7WUFHbkUya0ksZUFBZTNrSSxHQUFFbVcsR0FBR3doQztJQUN0QixPQUFHLDZCQURnQnhoQztjQUNZLDZCQURUd2hDLE1BQUwzM0M7Y0FDcUMsNkJBRGhDMjNDLE1BQUwzM0M7R0FDc0Q7WUFhckU0a0ksZUFBZTVrSSxHQUFFbVc7SUFDVCxJQUFOeUQsTUFBTSxXQW5DUm8yQixLQWtDZWh3QyxHQUFFbVc7SUFFaEIsT0FwQkR1dUgsZUFrQmUxa0ksR0FBRW1XLEdBQ2Z5RDtjQUdPO2tDQUpRekQ7OztjQUNmeUQ7R0FJSTtZQUdOaXJILGVBQWU3a0ksR0FBRW1XO0lBQ1IsSUFBUHdoQyxPQUFPLFdBMUNUNThCLEtBeUNlL2EsR0FBRW1XO0lBRWhCLE9BeEJEd3VILGVBc0JlM2tJLEdBQUVtVyxHQUNmd2hDO2NBR087a0NBSlF4aEM7OztjQUNmd2hDO0dBSUs7O0lBR1BtdEY7TUFwRUF2Rzs7U0FzRU8vK0g7U0FBc0IsV0ExQzdCK2tJLHdCQTBDTy9rSTtTQUFzQixPQUFBO1FBQTJCOzs7U0FDNUMsT0FBQTs7UUFBdUU7WUFHbkZ1bEksc0JBQXNCenVIO0lBQUksT0E3QzFCa3VILHdCQTZDa0QsMkJBQTVCbHVIO0dBQTRDO1lBRWxFMHVILDRCQUE0QnhsSTtJQUU1QixXQUFBLDhCQUY0QkE7SUFFNUIsT0FBQTtHQUEwRDtZQUcxRHlsSSwrQkFBd0N6bEk7SUFFeEMsV0FBQSw4QkFGd0NBO0lBRXhDLE9BQUE7R0FBc0U7R0FJeEU7SUFERTBsSTtNQVZBRiw0QkE3REF2RztJQTJFQTBHO01BZEFILDRCQTVEQXhHO1lBeUZBNEcsNEJBQTRCdmtDO0lBRU0sV0FBQSxnQ0FGTkE7SUFFNUIsT0FBQTtHQUF3RTtZQUd4RXdrQywrQkFBd0N4a0M7SUFDMUM7S0FoQkc7T0FBQSxnQ0FldUNBLE1BeEJ4Q3FrQztLQVNDOzs7UUFDQSxnQ0FjdUNya0MsTUFwQnhDc2tDO0lBTUM7Ozs7OztPQWN1Q3RrQzs7SUFHTSxXQUFBLGdDQUhOQTtJQUd4QyxPQUFBO0dBQW9GO1lBV3BGNDhCLHVCQUF3QkMsaUJBQWlCQyxNQUFNMzVCLE9BQU80NUI7SUFDeEQsR0FBRyw2QkFEcURBO0tBUHhEOzs7OztPQU93REE7O0lBR3BDLElBQWhCQyxnQkFBZ0IsV0EzR2xCbG1GLE1Bd0crQ3FzRCxPQUFOMjVCO0lBSXhDLEdBQUEsNkJBRENFO0tBRUMsT0FMc0NGO0lBT007S0FBQSxPQUFBLDhCQUo3Q0UsZUFIb0REO0tBT2xEcnJGO09BQU8sV0FqSFh2QyxLQTBHeUMydEYsTUFPckIsOEJBUGtDQzs7U0FRbkQscUJBRENyckYsTUFQMkN5eEQ7S0FRUixHQVJmMDVCLG1CQVFlLHFCQURuQ25yRixNQVAyQ3l4RDtLQVFxQixPQUFBLFdBbEhwRWgwRCxLQWlISXVDLE1BUGtEcXJGOztJQVFJLE9BRHREcnJGO0dBQ2tGO1lBR3RGdXJGLGNBQWdCdjhILEtBQTBCbzhILE1BQU0zNUIsT0FBTzQ1QjtJQUN6RCxHQURrQnI4SDtTQUFrQkMsTUFBbEJELFFBQUFtOEgsa0JBQWtCbDhIOztTQUFsQms4SDtJQUNsQixPQVpFRCx1QkFXZ0JDLGlCQUEwQkMsTUFBTTM1QixPQUFPNDVCO0dBQ0s7WUFHNURHLGNBQWdCeDhILEtBQTJCbzhILE1BQU0xNUIsUUFBUTI1QjtJQUMzRCxHQURrQnI4SDtTQUFtQkMsTUFBbkJELFFBQUF5OEgsbUJBQW1CeDhIOztTQUFuQnc4SDtJQUNsQixPQWhCRVA7aUJBZWdCTzthQUEyQkw7YUFJcEMsV0E1SFA1aUgsS0F3SGlEa3BGLFFBQVEyNUI7YUFBQUE7R0FLaEQ7WUFHVHAwRixPQUFRc2hCO0lBQVcsT0FBQSw4QkFBWEE7R0FBZ0M7WUFRdEN3NkUsK0JBQW9DOWxJO0lBQ3RDLFNBQ0kwVyxPQUFPSSxHQUFJLE9BQUEsMEJBQUpBLEdBQXNCO0lBRVo7S0FBakJpdkgsaUJBbklKaEIsd0JBK0hzQy9rSTtLQUtWLE9BSHhCMFc7S0FHYSxPQUhiQTtLQUdBc3ZILGFBQWE7S0FDYkM7T0FBeUIsOEJBRnpCRixnQkFDQUM7S0FHa0IsT0FObEJ0dkg7OztLQU1DLEdBQUEsK0JBSkRxdkg7TUFJeUI7O1NBQUEsOEJBRnpCRSx3QkFEQUQ7TUFHeUIsR0FBQSxxQ0FKekJEO09BSzRCO1FBQUEsT0FQNUJydkg7UUFDT29uSDtVQU1KLDhCQUhIbUk7Ozs7U0FIT25JLGtCQUdQbUk7O0lBTXlDO0tBQUEsT0FBQSw4QkFQekNELFlBRk9sSTtLQVNQb0k7T0FBd0IsOEJBUnhCSDtLQURXLE9BQUEsMEJBQUpqSTtLQVdULE9BQUE7S0FERW5jLE9BQ0Y7S0FFRXdrQjtPQUEwQiw4QkFKMUJEO0lBS0osV0FKSXZrQixNQUdBd2tCO0dBQ3lCO1lBRzNCQywrQkFBb0N6a0IsTUFBS3drQjtJQUMzQztNQUNFLDZCQUZ5Q0E7O09BR3RDLDZCQUhzQ0E7S0FLekI7O01BQUEsT0FBQSw4QkFMb0J4a0I7TUFJbENtYyxrQkFDRjtNQUVFdUk7UUFBMkIsZ0RBSDNCdkk7TUFJQXdJO1FBQW1COzRCQURuQkQsMEJBUHVDRjtLQVMzQyxPQURJRzs7SUFQSixNQUFBO0dBUW9DO0dBaENsQztjQUdBUixnQ0FvQkFNO0dBZUYsU0FBQTdnSSxPQUFBL0UsR0FBQSxPQXpMSmdFLEtBeUxJaEUsR0FBNEM7WUFhdEMrbEksb0JBQW9CajdGO0lBQ3RCO2tDQURzQkE7U0FDYyw0QkFEZEE7S0FFdEIsT0FBQSx5QkFGc0JBO0lBQ3RCLE1BQUE7R0FDb0I7O0lBYWxCazdGO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO1lBb0VGdm1JLFVBQVVUO0lBQ1o7S0FBb0MsUUFBQSxtQkFEeEJBO0tBcEJFbW1JO0tBcUJWeGtCO0lBcEJvQztNQUE5Qiw2QkFESXdrQjs7T0FDMEIsNkJBRDFCQTtLQUVPO01BQUEsT0FBQSw4QkFGUEE7TUEvRVFjLGVBaUZEO01BaERJQztRQWlERCw2QkFIVmYseUJBL0VRYztNQW1DWCxPQUFBLDhCQUZjQztNQUVuQmhiLEtBQUs7TUFDVDtjQURJQTs7O2VBR0ksNEJBSEpBLElBWkZzYTtxREFZRXRhOztpQkFLSSw0QkFMSkEsSUFYRnVhO3VEQVdFdmE7O21CQU9JLDRCQVBKQSxJQVZGd2E7eURBVUV4YTs7cUJBU0ksNEJBVEpBLElBVEZ5YTsyREFTRXphOzt1QkFXSSw0QkFYSkEsSUFSRjBhOzZEQVFFMWE7O3lCQWFJLDRCQWJKQSxJQVBGMmE7K0RBT0UzYTs7MkJBZUksNEJBZkpBLElBTkY0YTtpRUFNRTVhOzs2QkFpQkksNEJBakJKQSxJQUxGNmE7bUVBS0U3YTsyQkFtQkMsd0NBbkJEQTtNQWxDQW5xQixVQUFVLDhCQURNa2xDO01BRWhCLzVGLElBREE2MEQ7TUFFQXBnRyxJQUFJLDRCQUZKb2dHO01BR0FuaUcsSUFBSSw0QkFISm1pRztNQUlKLE9BQUEsd0NBSEk3MEQsR0FDQXZyQyxHQUNBL0I7TUErRTZCLE9BQUE7TUFrQk4sT0FBQTtNQUFOLE9BQUE7TUFBdkIsT0FBQSwyQkFESStoSDtLQUNtQixPQUFBOztJQXJCckIsTUFBQTtHQXFCZ0Y7WUFHaEZwaEgsVUFBVStxQztJQUNaO0tBQTBDLFVBQUEsNEJBRDlCQTtLQUNLNjdGO0tBQWJDO0tBbkJVQztPQW9CSyw0QkFERkY7S0FFYnhsQixPQUFPLDJCQUZQeWxCO0tBbEJFaHdILDRCQURRaXdIO0tBSVJDLGFBSEFsd0g7S0ExRWdCbXdILGlCQThFQywyQkFMVEY7S0E3QldHO09BbUNDLDJCQU5aSCxpQkFJUkM7S0E1RUUsUUFBQSw0QkFEY0M7Ozs7OztPQUdWO1FBRGNFO1FBQVZDO1FBQVZDO1FBQ0V6NkYsSUFSSnE1RixvQkFPRW9CO1FBRUVobUksSUFUSjRrSSxvQkFPWW1CO1FBR1I5bkksSUFWSjJtSSxvQkFPc0JrQjtRQThFcEJSOztpQ0E3RUUvNUYsY0FDQXZyQyxtQkFDQS9CO09Bd0NILEdBQUEsMkJBRG9CNG5JO1lBcUNuQk47O1FBakNXLElBQVR4MEIsU0FBUyw0QkFKUTgwQjtRQUtkLEtBQUEsNEJBREg5MEI7U0FDSixNQUFBOzZDQURJQTs7U0FhSyxNQUFBOzs7ZUFYTGsxQixhQXhDSnBCOztlQXdDSW9CLGFBdkNKbkI7O2VBdUNJbUIsYUF0Q0psQjs7ZUFzQ0lrQixhQXJDSmpCOztlQXFDSWlCLGFBcENKaEI7O2VBb0NJZ0IsYUFuQ0pmOztlQW1DSWUsYUFsQ0pkOztlQWtDSWMsYUFqQ0piO3VCQWlDSWEsYUFoQ0paOztRQTZDZ0M7U0FBQSxPQUFBLGlCQUFBLHlCQWY1QnQwQixTQUVBazFCO1NBYWEsT0FBQTtTQWtCZlYsa0JBbEJlOztPQW1CbkI7UUFhRTlOLFFBYkYsNkJBRkk2TixjQUNBQztPQWVOLE9BQUEsbUJBRkl2bEIsTUFDQXlYOzs7O0lBeEZLLE1BQUE7R0F5RnlDO0dBRy9CO0lBbUJMcmdILGlCQW5CSzsrQ0FSakJ4WSxXQUxBRTtJQWdDQWY7SUFBQUs7OENBeElKdUUsU0F3SUk1RSxXQUFBSzs7Ozs7O0lBR0k0NEM7Ozs7Ozs7Ozs7Ozs7OztJQUhKeHpDOzs7SUFBQSxjQUFZLDRDQWpVZnRFO0lBaVVHLE1BQUE7SUFBQTZELFVBQUE7SUFBQSxNQUFBO0lBQVlDO01BQVosV0FBQSwrQkFBQUQ7SUFBQUkscUJBQUFoRSxZQUFBRztJQUFBZ0UscUJBQUEzRCxjQUFBRDtJQUFBNkQsY0FBWVAsZUFBWkcsZ0JBQUFHO0dBQUEsU0FBQXVCLE9BQUFoRyxHQUFBLE9BeElKK0UsT0F3SUkvRSxHQUF3RTtHQWFsRTs7Ozs7U0FiTk07U0FBQUc7U0FBQUs7U0FBQUQ7U0FBWXNEO1NBQVpHO1NBQUFHO1NBQUFDO1NBQUFDO1NBQUF6RjtTQUFBSztTQUdJNDRDOzs7SUFVRTtJQUNJO1lBa0VWc3JELDhCQUE4QmprRyxHQUFJLE9BQUEsOEJBQUpBO0dBQXNCO1lBV3BEcTlILFlBQVkzRSxVQUFVTTtJQUN4QjtLQW5YTXg0SCxJQW1YRSw4QkFETWs0SDtLQWpYZHZnRixPQUFPLFdBN0JUNThCLEtBNEJRL2EsR0FrWGtCdzRIO0lBaFh6QixPQVhEbU0sZUFTUTNrSSxHQWtYa0J3NEgsaUJBalh4QjdnRixRQWxCSzhzRixjQWtCTDlzRjtHQWtYbUQ7WUFHakRtbEYsWUFBWUMsVUFBVXZFO0lBQ3hCO0tBM1hBNStHLE1BQU0sV0F6QlJvMkIsS0FtWmdCK3NGLFVBQVV2RTtLQXpYekIsT0FWRGtNLGVBbVlnQjNILFVBQVV2RSxpQkExWHhCNStHLE9BYks2cUgsY0FhTDdxSDtJQTJYaUIsT0FBQTtHQUFrQztHQUdwQyxJQUFiNHJILGFBQWE7WUFFYnZJLG1CQUFtQno5SDtJQUdyQjtLQUNJNDlILHlCQUF5Qiw4QkFKUjU5SCxHQUZuQmdtSTtLQVVLLE9BQUEsOEJBSkhwSSx3QkFORm9JO0lBVUMsT0FBQSwrQkFSa0JobUk7Y0FTaEIsMkJBTEQ0OUg7Y0FBQUE7R0FNdUI7Ozs7Ozs7Ozs7Ozs7O1lBNER6QnRGLG1CQUFtQkM7SUFFckIsV0FBQSxrQ0FGcUJBO0lBRXJCLE9BQUE7R0FDd0I7WUFHdEJDLG1CQUFtQkM7SUFDckI7S0FBQSxPQUFBLCtCQURxQkE7S0FDckIsT0FBQTtJQUFBLE9BQUE7R0FJc0I7WUFpQnBCeHRELE1BQU1qckUsR0FBRXFoRztJQUFPO0tBYmpCLE9BQUEsNkJBYVVBO0tBYlYsT0FBQTtJQWF5QixPQUFBLGdCQUFqQnJoRyxHQWJSO0dBYWlFO1lBTS9ENGtHLDBCQUEwQjVrRyxHQUFFaXJFO0lBQzlCLE9BbkNFcXRELG1CQW1DaUIsZ0JBRFN0NEgsR0FBRWlyRTtHQUN3QjtZQUdwRG81QiwrQkFBZ0Nya0csR0FBRWlyRTtJQUNwQyxPQWpDRXV0RCxtQkFpQ2lCLGdCQURleDRILEdBQUVpckU7R0FDd0I7WUFXMUQydEQsdUJBQXVCNTRILEdBQUVpckU7SUFDM0IsS0FBTSx1Q0FEbUJqckUsR0FBRWlyRSxRQUVoQjtJQUxRLFdBL0NqQnF0RCxtQkErQ2lCLGdCQUdNdDRILEdBQUVpckU7SUFJekIsZUFoQkFvNUIsK0JBWXVCcmtHLEdBQUVpckU7R0FNc0I7WUFLL0M2dEQsaUJBQWlCOTRILEdBQWtCcWhHO0lBQWdDLElBRjFDa0MsVUEvQnpCdDRCLE1BaUNpQmpyRSxHQUFrQnFoRztJQUZ1QixPQVQxRHUzQix1QkFXaUI1NEgsR0FGeUMscUJBQWpDdWpHO0dBRXdEO1lBak52RjQxQixjQWtPbUJuN0IsTUFBSzJqQixNQUFLeVg7SUFDM0I7O0tBdEtvQixPQUFBLDhCQXFLRXpYO0tBcktsQixPQUFBO0tBREVLLE9BQ0Y7S0FJaUIsT0FBQSw4QkFpS01vWDtLQWpLdkIsT0FBQTtLQURNLE9BQUE7S0FBUixPQUFBLDhCQUpJcFg7S0F1S0YwVyxXQWxLQTtLQXlHRixPQWpIRXowQiw4QkEwS0F5MEI7S0F6REYsT0FBQTtLQUFBLE9BQUE7S0FpREl6dEQsUUF4Q3NCLGdCQStDWCt5QixNQXhEZjtLQW1ESWc3QixrQkF2Q0ZwMEIsMEJBNENhNUcsTUFQWC95QjtJQUdKLE9BMUpFb3lELFlBK0pBM0UsVUFORU07R0FPNEM7WUFsT3BESyxzQkFxTzBCMVgsTUFBS3lYLE9BQU9wN0I7SUFFcEM7S0FBSXU0QixlQXpPTjRDLGNBdU9zQ243QixNQUFaMmpCO0tBR3BCMlg7T0FBZ0IsV0FyakJwQjlvRixLQW9qQkkrbEYsY0FDaUMsOEJBSFI2QztLQUl2QixRQTFCRk4saUJBc0JnQzk2QixNQUVoQ3U0QjtnQkFHTSxzQkFGTitDO0lBSTBCOztLQURUQztLQUFiQztLQUNGQztPQUF3Qiw2QkFEVEY7T0FDZkU7U0FFR3htRSxJQUhEdW1FLGFBR0Y1NUgsSUFFRyxXQTdqQlQ0d0MsS0F3akJRZ3BGLGFBQWFEOztLQU1DO01BSGJ0UixNQUdhLFdBOWpCdEJ6M0UsS0F3akJRZ3BGLGFBQWFEO01BR1p0bUUsSUFBQWcxRDtNQUFIcm9ILElBSEU0NUg7SUFRSCxHQUFBLHFCQVhERixlQU1FMTVIO0tBTUMsc0JBWkgwNUg7SUFhNEI7TUFBdEIscUJBUEoxNUgsR0FORjA1SDtTQWE0QixxQkFiNUJBLGVBTUtybUU7WUFGSHdtRTs7OztnQkFKRkg7Z0JBZ0I0QixXQXBrQmhDLzlHLEtBb2pCSSs5RyxlQUdpQkM7OEJBQWJDO0lBZUQsc0JBQU0sV0F0a0JiaitHLEtBb2pCSSs5RyxlQUdpQkM7R0Fld0I7R0FjN0MsSUFERUcsc0JBcmxCRnZCLE9BQUFBLE9BQUFBO1lBOFZGd0I7SUF1UElEO0lBQUFBLGdCQXJsQkZ2QjtJQXFsQkV1QixnQkFybEJGdkI7SUFxbEJFdUIsZ0JBcmxCRnZCO0lBcWxCRXVCOztHQWNpQztZQVNqQ0UsZUFBZXY0QixNQUFNckQ7SUFMdkIsV0FBQSxtQ0FLdUJBLE1BdkJyQjA3Qjs7O0tBa0JGO01BQ0csV0FBQSxtQkFJY3I0QixNQXZCZnE0QjtNQW1CQzt3Q0FJY3I0QixNQXZCZnE0Qjs7Ozs7Ozs7O2NBeUJRO0lBRUk7S0F0R3dCbjJCLFVBZGxDdDRCLE1BZ0htQit5QixNQUFOcUQ7S0FNWDIzQixrQkFoSEZwMEIsMEJBMEdtQjVHLE1BbEdldUY7S0FqRnpCczJCLE1BckNUeUQsWUF3TmFqOEIsTUFNWDIzQjtLQXBNdUI4RSxrQkFwQnpCTCxtQkErQlM1RDtLQVZYLE9BQUEsMEJBRDJCaUU7S0FDM0IsT0FBQTtLQXFNSW5jLE9Bck1KO0tBUjhCa21CLG9CQWI1QnBLLG1CQStCUzVEO0tBaEJQaU87T0FBd0IsOEJBRkVELG1CQWY1QjdCO0tBa0JFM3hCLFlBQVksOEJBZUx3bEIsS0FoQlBpTztLQUVKLE9BQUEsOEJBREl6ekI7S0FDSixPQUFBO0tBME1JbVgsT0FBTztLQUNQc087T0FDRixXQXJuQkp2K0csS0E4WUk4aEgsWUF5Q1N4RCxLQXlMUGIsa0JBR0F4TjtLQUlBdU87T0FBc0IsV0F4bkI1QnZwRixLQXFuQk1zcEY7S0FJQUU7T0FDSSx1Q0FmYWg4QixNQWxHZXVGO1VBb0hoQztXQXpuQk45Z0Q7V0FpZ0JJNGhELCtCQXNHbUJyRyxNQWxHZXVGO1dBNEdoQ3UyQjtVQUFBQTtLQVVBRztPQUNJLHVDQXJCYWo4QixNQWxHZXVGO1VBMEhoQztXQTluQk4vZ0Q7V0FnZUlnMkUsbUJBcUNpQixnQkFpR0V4NkIsTUFsR2V1RjtXQStHaEN3MkI7VUFBQUE7SUFwQ0pMLGdCQXVCcUIxN0I7SUF2QnJCMDdCLGdCQXFDSU07SUFyQ0pOLGdCQTJDSU87SUEzQ0pQLGdCQWlDSUk7SUFqQ0pKLGdCQStCSS9YOztHQXNCbUI7WUEvUzNCSSxRQWtUWTFnQixNQUFNckQ7SUFqQ2Q0N0IsZUFpQ1F2NEIsTUFBTXJEO1dBeERkMDdCO0dBMERhO1lBblRqQlMsU0FzVGE5NEIsTUFBTXJEO0lBdENmNDdCLGVBc0NTdjRCLE1BQU1yRDtJQUVqQixXQUFBLFdBanBCQTdsRCxNQStvQldrcEQsTUE3RFRxNEI7SUErREYsT0FBQTtHQUFnRjtZQWhVbEZVLGNBbVVrQi80QixNQUFNckQ7SUFBMkIsV0EzVG5EbThCLFNBMlRrQjk0QixNQUFNckQ7SUFBTyxXQTVUL0IrakIsUUE0VGtCMWdCLE1BQU1yRDtHQUE4QztZQWpVdEVxOEIsc0JBdVUwQmg1QixNQUFNckQ7SUFDOUI7S0FBa0IsUUExVXBCbzhCLGNBeVUwQi80QixNQUFNckQ7S0FDcEJvN0I7S0FBTnpYO0tBQ0EyWSxvQkFsSUF4QixpQkFnSTBCOTZCLE1BQU5xRDtLQUdwQms1QjtPQTlJQTNCLHVCQTJJMEI1NkIsTUFqSzFCL3lCLE1BaUswQit5QixNQUFOcUQ7OztLQWtCeEIsR0FmSWs1Qjs7aUJBQUFBO09Bc0JhQztPQUFQdmpIO01BQXVCO1FBQUE7O1VBQUEsV0FyckJqQ3U1QixLQXFyQlV2NUIsT0FBaUMsNkJBQTFCdWpIO1VBekJPbjVCO09BMkJYLEdBQUEsNkJBRkltNUI7UUFoQlQsY0FBQSw4QkFSRXBCLE9Bd0JPb0I7O2FBZlJDLGlEQVRMOVksTUFTSzhZOzs7OERBVnFCejhCOzs7MkRBQU5xRDs7Ozs7Ozs7Ozs7O1FBaUNKLEtBQUEsNkJBUkhtNUI7U0FRWCxNQUFBOzs7OztZQUNTLFdBN3JCZmovRyxLQTJwQndCOGxGLE1Ba0NDLDZCQVRSbTVCOztXQVBiRTs7OztRQWhCQUo7O2lCQUFBQTtPQWlDZ0JLO09BQVBDO01BQW9CO1FBQUE7O1VBQUEsV0E5ckJqQ3IvRyxLQThyQmFxL0csU0FBOEIsNkJBQXZCRDtVQW5DSXQ1QjtPQXFDWCxHQUFBLDZCQUZPczVCOzs7UUFPQSxLQUFBLDZCQVBBQTtTQU9kLE1BQUE7Ozs7O1lBQ1MsV0F2c0JmbnFGLEtBNHBCd0I2d0QsTUEyQ0MsNkJBUkxzNUI7O1dBakJoQkQ7Ozs7U0FBQUE7O0lBNEJKLFdBN0NJL1ksTUFBTXlYLE9BaUJOc0I7R0E0QmtCO1lBOVd4QkcsUUFpWGFDLFNBQVNDLE9BQU1wWixNQUFLeVg7SUFDZCxJQUFiNEIsYUFuWU43QixjQWtZYTJCLFNBQWVuWixNQUFLeVg7SUFFL0IsT0E1WEZnQixjQTJYTVksWUFEZ0JEO0dBRWdCO1lBalh0Q0ssV0FvWGUvNUIsTUFBR3JEO0lBQ2hCO0tBcExNdUYsVUFwQ0Z0NEIsTUF1TlkreUIsTUFBSHFEO0tBakxQMjNCLGtCQWhDRnAwQiwwQkFpTlk1RyxNQW5MVnVGO0tBb0xGMjNCLFlBaFVBb0MsWUErVFNqOEIsTUFqTFAyM0I7S0FvTEosT0FqVkUvMEIsOEJBK1VBaTNCO0lBR0YsT0FBQSxtQ0FKVzc1QjtHQUlZO1lBR3ZCODVCLGNBQWM5NUIsTUFBTXJEO0lBQ3RCO0tBQUlpOUIsZUE1WE5HLFdBMlhrQi81QixNQUFNckQ7S0FFbEJxOUIsU0FBUyw2QkFEVEo7SUFFSixHQURJSSxRQUVDO0lBS3lDO0tBQUEsT0FBQSw2QkFSMUNKO0tBUUksT0FBQTtnQkFERjtLQURJO09BQUEsNkJBTk5BOzs7SUFNQSxPQUFBO0dBR0M7WUFJRDhNLFFBQVExbUMsTUFBTXJEO0lBQ2hCO0tBQWtCLFFBclp0Qm84QixjQW9aYy80QixNQUFNckQ7S0FDTm83QjtLQUFOelg7S0FDQTRaLGtCQWhCSkosY0FjVTk1QixNQUFNckQ7S0FJUSxXQUFFLDhCQUhoQm83QixZQUNObUM7Z0JBRUY7SUFERixXQUFFLDJCQUZFNVo7R0FJSDtZQXZYTDJaLG9CQXlYTWo2QixNQUFNckQ7SUFDUixJQUFJLFdBUkYrcEMsUUFPQTFtQyxNQUFNckQsT0FDSjtnQkFHRixPQVhBK3BDLFFBT0ExbUM7R0FJMkI7WUE5WGpDbTZCLHNCQWlZMEJuNkIsTUFBTXJEO0lBQzlCO0tBQWtCLFFBbmFwQm84QixjQWthMEIvNEIsTUFBTXJEO0tBQ3BCbzdCO0tBQU56WDtLQUNBNFosa0JBOUJGSixjQTRCc0I5NUIsTUFBTXJEO0tBS0osT0FBQSw4QkFKaEJvN0I7Z0JBSWdCLHdDQUh0Qm1DO0tBR0YsV0FBRSwyQkFKQTVaO0lBSUYsT0FBQTtHQUF1RTtZQXZZM0U4WixjQTBZa0JwNkIsTUFBTXJEO0lBQThCLFdBeFl0RHM5QixvQkF3WWtCajZCLE1BQU1yRDtJQUE4QixPQUFBO0dBQWdDO1lBeFp0RjA5QixjQXlaa0IxN0gsR0FBSSxPQTNZdEJ5N0gsY0EyWWtCejdILFFBQWtDO1lBeFlwRG0vRyx3QkEyWTRCOWQsTUFBTXJEO0lBQ1QsV0E3WXpCczlCLG9CQTRZNEJqNkIsTUFBTXJEO0lBQ1QsT0FBQTtHQUFnQztZQTFaekR1NUIsa0JBNlpzQnYzSCxHQUFHZytGO0lBQ3ZCO0tBQWdCLFFBbmJsQm84QixjQWtic0JwNkgsR0FBR2crRjtLQUNib3BCO0tBQU56RjtLQUN5QixPQUFBLDhCQURuQnlGO0tBQ2EsT0FBQTtLQUF2QixPQUFBLDJCQURJekY7SUFDbUIsT0FBQTtHQUFpQztZQTlaMUQ2VixjQWlha0J4M0gsR0FBR2crRjtJQUNuQjtLQUFnQixRQXhibEJvOEIsY0F1YmtCcDZILEdBQUdnK0Y7S0FDVG9wQjtLQUFOekY7S0FDeUIsT0FBQSw4QkFEbkJ5RjtLQUNhLE9BQUE7S0FBdkIsT0FBQSwyQkFESXpGO0lBQ21CLE9BQUE7R0FBNkI7WUFsYXREZ2Esd0JBcWE0QjM3SCxHQUFHZytGO0lBQU8sSUFBd0IsT0F0RDFEbTlCLGNBc0R3Qm43SCxHQUFHZytGLE9BQU8sT0F0YXRDdzVCLGNBc2E0QngzSCxHQUFHZytGO0lBQStCLE9BQUE7R0FBcUI7WUF6YW5GNDlCLG1CQTJhdUI1N0gsR0FBR2crRjtJQUN4QjtLQUFrQixRQS9icEJvOEIsY0E4YnVCcDZILEdBQUdnK0Y7S0FDZG83QjtLQUFOelg7S0FNb0IsT0FBQSw4QkFOZHlYO0tBTU4sT0FBQTtLQUhGLE9BQUE7S0FEQSxPQUFBO0tBREYsT0FBQSwyQkFESXpYO0lBRUYsT0FBQTtHQUlnRDtZQWpicERrYSxtQkFvYnVCajhILEdBQUdvK0Y7SUFDeEI7S0FDUSxZQUFBLDRCQUZhcCtGOztNQUtOOztPQURDdzVIO09BQU56WDtPQUNGbWEsU0FBTywyQkFETG5hO09BRUY4WSxVQUFRLG9DQUZBckI7T0FHUjJDLFVBQVEsOEJBRFJ0QjtjQXRkVnRCLGNBZ2QwQm43QixNQUtoQjg5QixRQUVBQzs7O2NBSkk7S0FLUjs7VUFFRmw4SDtLQUF5RDtNQUF6REMsMEJBQUFEO01BQXlELE9BQUEseUJBQXpEQztLQUFPLE9BQUEsd0NBVllGOztHQVU0RDtZQTFibkZvOEgsb0JBNmJ5QmgrQixNQUFLNXlEO0lBQzVCO0tBQ1EsWUFBQSw0QkFGb0JBOztNQUtiOztPQURDaTJEO09BQU5zZ0I7T0FDRm1hLFNBQU8sMkJBRExuYTtPQUVGeVgsUUFBUSw4QkFGQS8zQjtjQWplbEI4M0IsY0E2ZHlCbjdCLE1BS2Y4OUIsUUFDQTFDOztNQUhnQjtPQUFBLE9BQUEsd0NBSElodUY7Y0FHaEI7S0FJUjs7VUFFRjY4RTtTQUFBaDFELHdCQUFBZzFEO0tBQUssT0FBQSx3QkFBTGgxRDs7R0FBNkM7WUF6YmpEZ3BFLFdBNGJlQyxpQkFBZ0JsOEgsR0FBR281SCxPQUFPcDdCO0lBQ3ZDO0tBQUltK0IsbUJBM2ROcGEsUUEwZCtCL2hILEdBQVVnK0Y7S0FFbkNvK0IsY0EzZU5qRCxjQXlleUNuN0IsTUFDbkNtK0Isa0JBRDRCL0M7b0JBQW5COEM7U0FHSmhsQixlQUFMbnNFOztTQUFLbXNFLGdCQUFMbnNFO0lBS0QsT0FBQSxXQUxDQSxLQURBcXhGLGFBRnlCcDhIO2NBRXpCbzhIO2NBM2VOakQ7ZUF5ZXlDbjdCO2VBVWQsMkJBVHJCbStCLGtCQUVLamxCO2VBSHVCa2lCO0dBVTBDO1lBR3hFaUQsdUJBQXVCM3lEO0lBQ3pCLElBQUk0eUQsc0NBRHFCNXlEO0lBRXRCLEdBQUEseUJBREM0eUQ7S0FFYSxXQUFBLGdCQUhRNXlEO0tBR3RCLEdBQUE7TUFDYyxXQUFBLGdCQUpRQSxRQUNyQjR5RDtNQUdELEdBQUE7T0FDRSxPQUFBLGtDQUxvQjV5RDs7O0lBTU4sV0FBQSxnQkFOTUE7SUFNakIsS0FBQTtLQUF3QyxXQUFBLGdCQU52QkE7S0FNWSxLQUFBO01BRUE7O1FBQTdCLHlCQVBKNHlEO2FBT2lDLHlCQVBqQ0E7T0FXQTs7Ozs7WUFFRTtnQ0FkbUI1eUQsUUFDckI0eUQsdUJBQUFBOztRQVdBOztXQUFFLDZCQVptQjV5RCxXQUNyQjR5RDs7T0FXQSxPQUFBOztNQUhDLE9BQUEsd0NBVG9CNXlEOzs7SUFPcEIsT0FQb0JBO0dBZXBCO0dBR1A7Ozs7STs7Ozs7Ozs7OztZQXRlQTZ5RCxjQXdlbUJDLGNBQWNDLFdBQVU3OEg7SUFDekM7S0FFVSxZQUFBLDRCQUgrQkE7Ozs7NEJBUWpDKytHOztRQUNLLGNBQUEsNEJBRExBOzs7O1VBRWErZDtVQUFOQztVQVJJQztVQUFQeEQsUUFRU3NEO1VBUmYvYSxPQVFTZ2I7Ozs7O1NBUklDO1NBQVB4RDtTQUFOelg7OzsyQkFLUWpEO3NCQUxLa2UsUUFBUHhELFFBS0UxYSxPQUxSaUQsT0FNRWhEOzJCQUZhSDtzQkFKRm9lLFNBSUVwZSxPQUpUNGEsUUFLRTFhLE9BTFJpRCxPQU1FaEQ7OztTQUprQmtlO1NBRlBEO1NBQVB4RCxRQUVjeUQ7U0FGcEJsYjtXQUdBOzs7aUJBR0VoRCxxQkFETUQsc0JBRE9GOzs7Ozs7T0FKRm9lO09BQVB4RDtPQUFOelg7O0tBWUo7TUFBSW1iO2lCQUFhQztTQUFpQixXQUFBLDhCQUFqQkE7U0FBaUIsT0FBQTtRQUFxQztRQVp0REg7VUFhTnhCLGdCQUFQWCxVQWJNckI7O01BaUJRLFdBQUEsZ0JBakJSQSw2QkFBQUE7TUFpQkgsR0FBQTs7UUFKSWdDO1FBQVBYO1VBS0s7NEJBbEJDckIsZ0NBQUFBOztPQW9CRSxjQUFBLDRCQXBCRkE7O1FBc0JxQzs7U0FEOUJsMEc7U0FBSDJzQjtTQUNpQyxPQTVDL0N3cUYsdUJBMkNpQm4zRztTQVJOazJHLGlCQURQMEIsYUFVMEI7U0FUMUJyQyxVQVFVNW9GOztRQUdDLGNBQUEsNEJBeEJMdW5GOztTQTBCK0M7O1VBRHJDLzlEO1VBQUhpcUQ7VUFDd0MsT0FoRHpEK1csdUJBK0NvQmhoRTtVQVpUKy9EO3NCQURQMEIsYUFjb0M7VUFicENyQyxVQVlhblY7O2FBWk44VixnQkFBUFgsVUFiTXJCOzs7O0tBNkJDO01BQVAwQyxTQUFPLDJCQTdCUG5hO01BOEJBb2EsVUFBUSw4QkFqQlJ0QjtLQWtCSixHQS9CaUJtQzs7T0FnQ1ZJLE9BaENVSjtjQTVnQnJCekQsY0E0aUJxQyxXQWxDSnNELFdBa0N0Qk8sT0FISGxCLFFBQ0FDO2FBakJPWDtNQTBCTTtPQURQNkIsZUF6QkM3QjtPQTBCRjhCLFFBbmpCYi9ELG1CQXlpQlEyQyxRQUNBQzs7U0FVQyxXQTkzQlB4Z0gsS0E2M0JXMmhILE9BQ00sNkJBRkxEOztNQUZNO09BQVBqL0IsT0FBTyxXQXRDRHcrQjtjQTFnQm5CckQsY0FnakJhbjdCLE1BUEw4OUIsUUFDQUM7S0FFUzs7VUFVYjlUO1NBQUFoMUQsd0JBQUFnMUQ7S0FBSyxNQUFBLG1EQTVDa0Nyb0gsR0E0Q3ZDcXpEOztHQUFxQztZQTloQnpDa3FFLDBCQWlpQjhCdjlIO2FBQ3hCNDhIO0tBQWtCO21EQURNNThIOzs7Ozs7O0lBQ29EO0lBQ2hGLFNBQUk2OEgsVUFBVVc7S0FDWixPQUFBLHdDQURZQTtJQUNxRTtJQUVuRixPQTVoQkZiLGNBd2hCTUMsY0FDQUMsV0FGd0I3OEg7R0FLWTtHQVFkO0lBQTFCc2tJO0lBQ0FDO1lBZU02RCxpQkFBaUJsckU7SUFBSSxXQUFBLDJDQUFKQTtJQUFJLE9BQUE7R0FBZ0Q7WUFDckVnUyxZQUFVeGpDO0lBQVM7S0FGRjFyQyxJQUVFLDZCQUFUMHJDO0tBRlcsT0FBQSw4QkFBSjFyQztJQUFJLE9BQUE7R0FFMEM7WUFFL0Rxb0kseUJBQXlCQztJQUMzQjtLQUFJQyxRQUFRLDBCQURlRCxXQUh6QkY7S0FJVTtLQUVWLE1BQUEsMEJBRkVHO0tBQ0FsVyxlQUNGO0tBQUE7S0FNd0MsVUFQdENBOztLLGtCQU9zQzs7cUNBUnRDa1c7R0FRdUU7O1FBWHpFcjVELGFBRUFtNUQ7R0FlVTtJQUFBO0lBQ0Y7SUFDTDtJQUNHO0lBQ0g7SUFDRTtJQUNEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bcm9CTjFqSTtPQWpVUkM7T0FBQStVO09BQUFEO09BaVVReFk7T0FBQUc7T0FBQUs7T0FBQUQ7T0FqVUhSO09BQUxzRDtPQUFBQztPQUFBQzs7Ozs7OztPQVNJZ1M7T0FnTEEvUjtPQXZLQWsrQztPQURBQzs7UUFnVElsK0M7UUF4SUpnQjtRQXdJSTdGO1FBQUFLO1FBQVlnWjs7Ozs7Ozs7UUFBWjVUOzs7Ozs7OztRQUdJd3pDOzs7Ozs7O09BOVRJMy9CO09BQUFFO09BQUFFO09BQUFtN0Q7T0FBQWlFO09Bb0JaNC9DO09BQ0FDO09BNlRGYztPQUVBRTtPQU1BZTtPQUVBQztPQUtBdFk7T0FDQW9ZO09BRUFSO09BREFrQjtPQUVBTztPQVFBUTtPQUNBQztPQVlBSjtPQUNBRDtPQUNBRjtPQWJBL0Q7T0FDQUM7T0FDQW1FO09BQ0FLO09BRUFPO09BU0FwZDtPQUVBOGM7T0FyQkFrQjtPQUFBQTtPQUVBekI7T0FBQUE7T0F0V0V2RDtPQWs1QkErTDtPQUNBQztPQXI1QkFsRjtPQUNBRDtPQURBQztPQUNBRDtPQUhBUDtPQUtBanVGO09Ba0NBNDBGO09BUUFDO09BekNBOXBIO09BS0F3M0I7T0FDQWdxQjtPQUxBNWtCO09BQ0ErZ0Y7T0FLQW4xQjtPQUNBRDtPQUNBaWhDO09BQ0FDO09BdUNBTTtPQU1BQztPQTZEQWpIO09BSUFDO09BUUF2MEY7T0FyQ0E2N0Y7T0E3QkFKO09BTEFEO09BS0FDO09Bd0JBRztPQUtBQzs7Ozs7OztVQXdOSS9rSTtVQUFBRztVQUFBSztVQUFBRDtVQUFZc0Q7VUFBWkc7VUFBQUc7VUFBQUM7VUFBQUM7VUFBQVo7VUFBQWlDO1VBQUE5RztVQUFBSztVQUFZZ1o7VUFHUjQvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7SUtsT1JpakI7Ozs7Ozs7Ozs7Ozs7Ozs7R0F2R0U7SUFXVWpxQjs7SUFYVjs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7SUFTRWdIOztJQVRGOzs7Ozs7Ozs7Ozs7OztJQUFBOzs7Ozs7Ozs7Ozs7OztJQUVFNTRDO0lBQUFMO0lBQUE0RTtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBdEQ7SUFBQVE7SUFBQUM7SUFBQUw7SUFBQUg7OztJQWtCTjs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFXVXF6QztJQUFBM3ZDO0lBQUFEO0lBQUFZO0lBRlJ3N0M7OztJQVRGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lvWTtJQUFBRTtJQUFBRDtJQUFBb1g7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQS90QjtJQUFBRDtJQUFBbnNDO0lBQUFLO0lBQUErNUQ7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFIRm5yRTtJQUFBRjtJQUFBTjtJQUFBRDtJQUFBSDtJQUFBSDtJQUFBSTtJQUFBQztJQUFBSDtJQUFBRDtJQWVFK2xJO0lBQ0FDO0lBQ0ExOUQ7SUFDQTI5RDtJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQyxnQkFBZ0I7SUFDaEJDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBR0ZDLFlBQVlwaEcsR0FBSSxXQUFJLFdBVGxCNmdHLGFBU1U3Z0csR0FBdUI7WUFFbkNsdkIsT0FRd0J1d0gsSUFNREM7SUFiekIsR0FBRywyQkFPdUJEO0tBTHhCLHdDQVd1QkM7OztTQUFBQyxNQUFBRDtLQUN2QjtNQUFNLGNBQUEsNEJBRGlCQzs7Ozs7VUFBQUMsY0FBQUQsTUFBQUM7OztJQUtGLElBWEcvckksSUFBQTRySSxJQVdILE1BQUEseUNBTEVFO0lBTHZCO0tBQU0sWUFBQSw0QkFEa0I5ckk7Ozs7OzJCQUFBcTRIOztpQ0FBQUE7Ozs7Ozs7Ozs7OztXQUFBcjRILElBQUFxNEg7OztnQkFBQXI0SDs7S0FXSCxPQUFBOztHQUF5QjtZQUc5Q2dzSSxnQkFBZ0J6aEcsR0FBRzBoRztJQUNyQixPQUFHLFdBbENDYixhQWlDaUJhO2NBR25CLHdDQUhtQkE7Y0F4Qm5CTixZQXdCZ0JwaEcsS0FBQUEsSUF0QmhCbHZCLE9Bc0JtQjR3SCxhQUFIMWhHO0dBU087WUFHdkJtUSxNQUFNMTZDO0lBQWUsVUFBQSxXQXZDbkIwckksVUF1Q0kxckk7SUFBSSxXQUFBLFdBeENSeXJJLFNBd0NJenJJO0dBQXlCO09BRy9Ca3NJO1lBRUFDLDRCQUE0Qm5zSTtJQUU5QixVQUFBLFdBdEVJOFcsUUFvRTBCOVc7SUFFOUI7S0FDRyxVQUFBLFdBdkVDOFcsUUFvRTBCOVc7S0FHM0I7TUFDSyxVQUFBLGtEQUpzQkE7TUFJdEI7T0FDQTs7VUFBQTs7a0NBTHNCQTtZQUY1QmtzSTtPQU9NO1FBQ0E7U0FBQSxVQUFBLGtDQU5zQmxzSTt5QkFPdkIsa0NBUHVCQTs7Ozs7Ozs7Ozs7O0lBT3ZCO0dBQXFCO1lBSzFCb3NJLGdCQUNPQztJQUNELFlBQUEsNEJBRENBOzs7O01BR09DO01BQU43NEM7TUFFTjg0QyxPQUZZRDtNQUhaRSxVQUdNLzRDOztTQUVOODRDLE9BTEtGLElBQUxHO0lBTUksY0FBQSw0QkFESkQ7Ozs7TUFHZUU7TUFBVEM7TUFIRkMsWUFHV0Y7TUFIZkcsT0FHTUY7O1NBSEZDLFdBQUpDLE9BQUFMO09BTEFDO0tBYWtCO01BQWJLLFFBYkxMO01BYWtCLE1BQUEseUNBUmxCSTtNQUtBRSxPQUdZLGtDQUFQRDs7U0FITEMsT0FMQUY7SUFVSixXQUxJRSxNQUxJSDtHQVVEO1lBR0xJLE1BQ2V0bkU7SUFBakIsSUFBYTcrQyxTQUFJb21ILGFBQUF2bkU7SUFDZjtLQUFNLElBQUEsUUF0Q04vcUIsTUFxQ2VzeUYsYUFFYkM7NkJBQUFBOzs7NkJBQUFBOztPQUNzQixXQUR0QkEsWUFGU3JtSDs7O01BRWEsV0FBdEJxbUgsWUFGU3JtSDtLQUlTO01BQVo0bEg7TUFKR3B5RSxZQUlIb3lFLEtBSkc1bEg7TUFBQUEsTUFBQXd6QztNQUFJNHlFLGFBRWJDOztHQUlZO1lBR2QxTjtJQUFXO0tBQ0wsT0FBQTtRQUNFeDlCLGlCQUFSL2xDO0lBQWdCLE9BQUEsMEJBQVIrbEMsTUFBUi9sQztHQUFpRTtZQVNqRWt4RSxnQkFBZ0JseUksR0FBZXdaO0lBQ2pDLEdBQUcsV0F2R0M0MkgsYUFzR2Nwd0k7OztnRUFBQUE7Ozs7OztLQUdoQjs7SUFJQyxHQUFBLFdBN0dDb3dJLGFBc0c2QjUySDs7O2dFQUFBQTs7Ozs7O0tBUy9COztJQUlZO0tBbkJXMjRILFVBZnZCSixNQXFCZ0IveEk7S0FOVW95SSxVQWYxQkwsTUFxQitCdjRIO0tBZTdCNjRILFdBckJxQkY7S0FxQlhHLFdBckJjRjtJQUM1QjtRQW9CSUMsWUFBVUM7O09BckJjcm9GLEtBcUJkcW9GO09BbkJGQyxLQW1CRUQ7T0FyQld0b0YsS0FxQnJCcW9GO09BbkJGRyxLQW1CRUg7TUFuQnNCLEdBQUEsNkJBQXhCRyxJQUFVRDtXQW1CUkYsV0FyQnFCcm9GLElBcUJYc29GLFdBckJjcm9GOzs7O0tBc0I1QjtNQUFBLHNCQUFrQyxPQXJIOUJvbUYsZ0JBcUg2QztNQUE3Q29DLFFBQVEsMEJBREVIO01BSVpJLFVBRkksbUNBREZELE9BREFKO1lBSUZLLFVBOUJBbk8sU0E4QkFtTyxXQTNIRXhDOztHQTJIeUI7Ozs7Ozs7O09BOUkzQmxtSTtPQUFBQztPQUFBRztPQUFBRDtPQUFBSjtPQUFBRztPQUFBRztPQUFBQztPQUFBTTtPQUFBRTtPQUdFbXJFO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUEvNUQ7T0FBQUw7T0FBQW1zQztPQUFBQztPQUFBK3RCO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BSUZ6dkI7T0FKRXFZO09BQUFDO09BQUFGOzs7O09BTU01ekQ7T0FBQVo7T0FBQUM7T0FBQTJ2Qzs7OztPQXdFUnluQjtPQVZBbXdFO09BOUNFWDtPQU5BTjtPQUdBRztPQUNBQztPQVNGandIO09BWEUrdkg7T0FTRk87T0FWRVI7T0FMQUo7T0FFQXo5RDtPQUNBMjlEO09BRkFEO09BbUVGb0I7T0F4REVWO09BREFEO09BNEJGTztPQXFFQWtCO09BekRBeHlGO09Bb0NBcXlGO09BVUF4TjtPQXhGRWdNOzs7Ozs7Ozs7O1NBNUNFcnFJO1NBQUFHO1NBQUFLO1NBQUFEO1NBQUFSO1NBQUFzRDtTQUFBQztTQUFBQztTQUFBQztTQUFBNUU7U0FBQUs7U0FPQTQ0Qzs7Ozs7U0FFUWhIOzs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJVXFMRnZ1QztJQVFFRzs7SUFuS2QxSjtJQXNOVXc2TDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdE5EOzs7SUFBQTs7Ozs7Ozs7SUFBQTs7Ozs7SUFBQTs7Ozs7SUFBQTs7Ozs7Ozs7OztJQUFBOzs7Ozs7Ozs7O0lBQUE7Ozs7O0lBQUE7Ozs7Ozs7Ozs7SUFBQTs7Ozs7SUFBQTs7Ozs7Ozs7OztJQUFBLE1BQUE7SUFBQSxVQUFBO0lBQVQsY0FBUztJQUFULE1BQUE7SUFBQTM1TCxRQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUFTLFNBbkJUbUcsWUFtQlNqRztJQUFULFdBQUE7SUFBQSxPQUFBLFdBQUEsK0JBQUFGLGtCQUFTRTtHQVF5QztZQTNCbERrRyxXQW1CTWhHO0lBQU4sOEJBQUE7OztPQUFBO1FBQUF3YztRQUFBdlc7ZUFuQkFELFdBbUJNaEcsV0FBTmlHO1FBQUF3VyxPQUFBO2VBbkJBelcsV0FtQk1oRyxXQUFOd2M7OENBQUFDOztPQUFBO1FBQUF3UztRQUFBL29CO2VBbkJBRixXQW1CTWhHLFdBQU5rRztRQUFBd2pCLFNBQUE7ZUFuQkExakIsV0FtQk1oRyxXQUFOaXZCOzhDQUFBdkY7O1dBQUF6TSx3QkFuQkFqWCxXQW1CTWhHLFdBQU5pZDs7O09BQUE7UUFBQXdNO1FBQUEyRjtRQUFBTDtlQW5CQS9vQixXQW1CTWhHLFdBQU4rdUI7UUFBQXBGLFNBQUE7ZUFuQkEzakIsV0FtQk1oRyxXQUFOb3ZCO1FBQUFFLFNBQUEsZ0NBQUEzRjtlQW5CQTNqQixXQW1CTWhHLFdBQU55cEI7OENBQUE2Rjs7T0FBQSxJQUFBTixpQkFBQSxPQUFBLFdBQU1odkIsV0FBTmd2QjtPQUFBLE9BQUE7O0dBUWtEO1lBM0JsRDdvQixZQW1CTWpHLFNBQU5NO0lBQUEsSUFBQTZGO0lBQUE7OztnQkFBQSwrQkFBQTdGLEtBQUE2RjtnQkFBQSwrQkFBQTdGLEtBQUE2Rjs7O1FBQUE7U0FBQW1XO1NBQUF2VztTQUFBSyxRQUFBLCtCQUFBOUYsS0FBQTZGO1NBQUEycEIsUUFuQkE3cEIsWUFtQk1qRyxTQUFOTSxLQUFBOEYsT0FBQUw7U0FBQUksUUFBQTJwQjttQkFBQXhUOzs7UUFBQTtTQUFBeVM7U0FBQS9vQjtTQUFBeVcsUUFBQSwrQkFBQW5jLEtBQUE2RjtTQUFBNHBCLFFBbkJBOXBCLFlBbUJNakcsU0FBTk0sS0FBQW1jLE9BQUF6VztTQUFBRyxRQUFBNHBCO21CQUFBaEI7OztRQUFBO1NBQUFoUztTQUFBQyxRQUFBLCtCQUFBMWMsS0FBQTZGO1NBQUFBLFFBQUE2VzttQkFBQUQ7OztRQUFBO1NBQUF3TTtTQUFBMkY7U0FBQUw7U0FBQWUsUUFBQSwrQkFBQXR2QixLQUFBNkY7U0FBQThwQixRQW5CQWhxQixZQW1CTWpHLFNBQU5NLEtBQUFzdkIsT0FBQWY7U0FBQW1CLFFBbkJBL3BCLFlBbUJNakcsU0FBTk0sS0FBQTJ2QixPQUFBZjtTQUFBL29CLFFBQUE2cEI7bUJBQUF6Rzs7O1FBQUE7U0FBQXVGO1NBQUFlLFFBQUEsK0JBQUF2dkIsS0FBQTZGO1FBQUEsT0FBQSxXQUFNbkcsU0FBTk0sS0FBQXV2QixPQUFBZjs7O0dBUWtEO1lBM0JsRDNsQixhQW1CTWpKO2tCQUFOQztLQUFBLFdBQU1EO0tBQU4sNEIsT0FuQkErRixrQkFtQkE5RjtJQVFrRDtJQVJsRCxvQkFBQUEsR0FBQSxPQW5CQTJGLFdBbUJNNUYsaUJBQU5DLEdBUWtEO0dBQUE7WUEzQmxEa0csV0FtQk1oRyxNQUFOQyxLQUFBQyxTQUFBQztJQUFBOzZEQUFBRDtHQVFrRDtZQTNCbEQrRixhQW1CTWpHLE1BQU5DLEtBQUFDO0lBQUEsWUFBQSw4QkFBQUQsS0FBQUM7O2lEQUFBQTs7O09BQ0U7O09BQ0E7OztRQUZGaUcsVUFuQkFGLGFBbUJNakcsTUFBTkMsS0FBQUM7UUFBQXFjLFFBbkJBdFcsYUFtQk1qRyxNQUFOQyxLQUFBQztPQUdFLFdBSEZpRyxTQUFBb1c7OztRQUFBSyxVQW5CQTNXLGFBbUJNakcsTUFBTkMsS0FBQUM7UUFBQXN3QixVQW5CQXZxQixhQW1CTWpHLE1BQU5DLEtBQUFDO09BSUUsV0FKRjBjLFNBQUE0VDs7V0FBQUosVUFuQkFucUIsYUFtQk1qRyxNQUFOQyxLQUFBQyxVQUtFLFdBTEZrd0I7OztRQUFBQyxVQW5CQXBxQixhQW1CTWpHLE1BQU5DLEtBQUFDO1FBQUF3d0IsVUFuQkF6cUIsYUFtQk1qRyxNQUFOQyxLQUFBQztRQUFBb3dCLFFBbkJBcnFCLGFBbUJNakcsTUFBTkMsS0FBQUM7T0FNRSxXQU5GbXdCLFNBQUFLLFNBQUFKO2VBQUEsSUFBQXBxQixRQUFBLFdBQU1sRyxNQUFOQyxLQUFBQyxVQU9FLFdBUEZnRzs7R0FRa0Q7WUEzQmxENkMsYUFtQk16STtrQkFBTkwsS0FBQUMsU0FBQUs7S0FBQSxPQW5CQXlGLFdBbUJNMUYsaUJBQU5MLEtBQUFDLFNBQUFLO0lBUWtEO0lBUmxEO3FCQUFBTixLQUFBQzthQUFBLE9BbkJBK0YsYUFtQk0zRixpQkFBTkwsS0FBQUM7WUFRa0Q7O0dBQUE7WUEzQmxEOEksTUFtQkF2STtJQUFBLElBQUEsT0FuQkFzSSxhQW1CQXRJLFdBQUEsT0FuQkFxSSxhQW1CQXJJO0lBQUEsV0FuQkErRSxZQW1CQS9FO0dBUWtEO1lBM0JsRHdJLFFBbUJBdEksT0FBQUMsT0FBQUM7SUFBQSxJQUFBbzRMLFVBQUF0NEwsT0FBQXl6SSxVQUFBeHpJLE9BQUF5ekksVUFBQXh6STtJQUFBO0tBQUEsR0FBQSwrQkFBQXV6SSxTQUFBQyxVQUFBOzs7Z0JBQUFEOzs7Ozs7O2lCQUFBQTs7aUJBQUEzNkgsUUFBQTI2SCxZQUdFNzZILFFBSEY2Nkg7dUJBQUFDO3VCQUFBQTs7O3NCQUFBQSxZQUdFO2FBQVk7Y0FIZDM2SCxRQUFBMjZIO2NBR0U3NkgsUUFIRjY2SDtjQUdjNXFIO2dCQXRCZHhnQjsyQkFtQkF0STtvQixnQkFHVzArRCxPQUFBQztxQkFBQSxPQUFBLFdBSFgzK0QsT0FHVzArRCxPQUFBQyxPQUFFOztvQkFIYjI1SDtrQkFHRTEvSztrQkFBQUM7c0JBQVlpUSxHQUFBLE9BQUFBOztjQUhkeXZLO3lCQUFBdjRMOzBCQUFBczRMLFFBR2tCMTVILE9BQUFDO2tCQUFBLE9BQUEsV0FIbEI3K0QsT0FHa0I0K0QsT0FBQUM7aUJBQUU7d0JBSHBCeTVIOztjQUFBRSxVQUFBRCxRQUFBRDtjQUFBQSxVQUFBRTtjQUFBL2tELFVBQUEzNkg7Y0FBQTQ2SCxVQUFBMzZIOzs7aUJBQUFxTCxRQUFBcXZILFlBSUVwcEksUUFKRm9wSTt1QkFBQUM7cUJBQUFBOzs7O2lCQUlhO2tCQUpicnZILFFBQUFxdkg7a0JBSUVwcEksUUFKRm9wSTtrQkFJYTNxSDtvQkF2QmJ6Z0I7K0JBbUJBdEk7d0IsZ0JBSVV5NEwsT0FBQUM7eUJBQUEsT0FBQSxXQUpWMTRMLE9BSVV5NEwsT0FBQUMsT0FBRTs7d0JBSlpKO3NCQUlFanVMO3NCQUFBQzswQkFBV3llLEtBQUEsT0FBQUE7O2tCQUpiNHZLOzZCQUFBMzRMOzhCQUFBczRMLFFBSWlCTSxPQUFBQztzQkFBQSxPQUFBLFdBSmpCNzRMLE9BSWlCNDRMLE9BQUFDO3FCQUFFOzRCQUpuQlA7O2tCQUFBUSxVQUFBSCxRQUFBTDtrQkFBQUEsVUFBQVE7a0JBQUFybEQsVUFBQXJ2SDtrQkFBQXN2SCxVQUFBcnZIOzt5QkFJRTs7c0JBSkZxdkg7OztpQkFBQXFsRCxRQUFBdGxEO3VCQUFBQztxQkFBQUE7Ozs7Ozs7a0JBQUFzbEQsUUFBQXRsRDtrQkFBQXVsRDs2QkFBQWo1TDs4QkFBQXM0TCxRQUtXMXNMLE9BQUFDO3NCQUFBLE9BQUEsV0FMWDdMLE9BS1c0TCxPQUFBQztxQkFBRTs0QkFMYnlzTDs7a0JBQUFZLFVBQUFELFFBQUFYO2tCQUFBQSxVQUFBWTtrQkFBQXpsRCxVQUFBc2xEO2tCQUFBcmxELFVBQUFzbEQ7O3lCQUtFOztzQkFMRnRsRDs7O2lCQUFBK3dDLFFBQUFoeEMsWUFNRTR3QyxRQU5GNXdDLFlBTUUwbEQsUUFORjFsRDt1QkFBQUM7dUJBQUFBOzs7b0JBQUFBOzs7Ozs7O2dCQU1hO2lCQU5iZ3hDLFFBQUFoeEM7aUJBTUU0d0MsUUFORjV3QztpQkFNRTBsRCxRQU5GMWxEO2lCQU1hMXFIO21CQXpCYjFnQjs4QkFtQkF0STt1QixnQkFNVTBsQixPQUFBQzt3QkFBQSxPQUFBLFdBTlYzbEIsT0FNVTBsQixPQUFBQyxPQUFFOzt1QkFOWjJ5SztxQkFNRWE7cUJBQUFDO3lCQUFXcHdLLEtBQUEsT0FBQUE7Z0JBQU87aUJBQUFxbkc7bUJBekJwQi9uSDs4QkFtQkF0STt1QixnQkFNaUIya0wsT0FBQUM7d0JBQUEsT0FBQSxXQU5qQjVrTCxPQU1pQjJrTCxPQUFBQyxPQUFFOzt1QkFObkIwVDtxQkFNRWpVO3FCQUFBQzt5QkFBa0JqMEQsS0FBQSxPQUFBQTs7aUJBTnBCZ3BFOzRCQUFBcjVMOzZCQUFBczRMLFFBTXdCZ0IsT0FBQUM7cUJBQUEsT0FBQSxXQU54QnY1TCxPQU13QnM1TCxPQUFBQztvQkFBRTsyQkFOMUJqQjs7aUJBQUFrQixVQUFBSCxRQUFBZjtpQkFBQUEsVUFBQWtCO2lCQUFBL2xELFVBQUFneEM7aUJBQUEvd0MsVUFBQWd4Qzs7d0JBTUU7Ozs7aUJBQ0FscUssUUFQRmk1SDt1QkFBQUM7dUJBQUFBOzs7b0JBQUFBOzs7Ozs7O2dCQU1FOztvQkFDQWo1SCxRQVBGaTVIO2dCQU9ZLE9BQUEsV0FQWjRrRCxTQU9FOTlLLE9BQUFDOzs7VUFGQTs7U0FEQTs7UUFEQTs7T0FEQTs7ZUFGRmc1SDtpQkFBQUMsMEJBQUFBLFNBQ0U7T0FBQTs7Z0JBREZBLHNCQUVFO1NBRkZBLFNBRUU7O0tBREE7O0dBT2dEO1lBM0JsRHI1SCxNQW1CQXJhLE9BQUF3TixPQUFBQztJQUFBLElBQUE2cUwsVUFBQXQ0TCxPQUFBeTVMLFVBQUFqc0wsT0FBQWtzTCxVQUFBanNMO0lBQUE7S0FBQSxHQUFBLCtCQUFBZ3NMLFNBQUFDLFVBQUE7OztnQkFBQUQ7Ozs7Ozs7aUJBQUFBOztpQkFBQUUsUUFBQUYsWUFHRUcsUUFIRkg7dUJBQUFDO3VCQUFBQTs7O3NCQUFBQSxZQUdFO2FBQVk7Y0FIZEcsUUFBQUg7Y0FHRUksUUFIRko7Y0FHYztnQkF0QmRyL0s7MkJBbUJBcmE7b0IsZ0JBR1crNUwsT0FBQUM7cUJBQUEsT0FBQSxXQUhYaDZMLE9BR1crNUwsT0FBQUMsT0FBRTs7b0JBSGIxQjtrQkFHRXNCO2tCQUFBRTthQUFZLFdBQUE7O2NBSGR2Qjt5QkFBQXY0TDswQkFBQXM0TCxRQUdrQjJCLE9BQUFDO2tCQUFBLE9BQUEsV0FIbEJsNkwsT0FHa0JpNkwsT0FBQUM7aUJBQUU7d0JBSHBCNUI7O2NBQUFFLFVBQUFELFFBQUFEO2NBQUFBLFVBQUFFO2NBQUFpQixVQUFBRTtjQUFBRCxVQUFBRzs7O2lCQUFBTSxRQUFBVixZQUlFVyxRQUpGWDt1QkFBQUM7cUJBQUFBOzs7O2lCQUlhO2tCQUpiVyxRQUFBWDtrQkFJRVksUUFKRlo7a0JBSWE7b0JBdkJici9LOytCQW1CQXJhO3dCLGdCQUlVdXpHLE9BQUFDO3lCQUFBLE9BQUEsV0FKVnh6RyxPQUlVdXpHLE9BQUFDLE9BQUU7O3dCQUpaOGtGO3NCQUlFOEI7c0JBQUFFO2lCQUFXLFdBQUE7O2tCQUpiM0I7NkJBQUEzNEw7OEJBQUFzNEwsUUFJaUJpQyxPQUFBQztzQkFBQSxPQUFBLFdBSmpCeDZMLE9BSWlCdTZMLE9BQUFDO3FCQUFFOzRCQUpuQmxDOztrQkFBQVEsVUFBQUgsUUFBQUw7a0JBQUFBLFVBQUFRO2tCQUFBVyxVQUFBVTtrQkFBQVQsVUFBQVc7O3lCQUlFOztzQkFKRlg7OztpQkFBQXR3RyxRQUFBcXdHO3VCQUFBQztxQkFBQUE7Ozs7Ozs7a0JBQUFyd0csUUFBQXF3RztrQkFBQVQ7NkJBQUFqNUw7OEJBQUFzNEwsUUFLV2h2RyxPQUFBQztzQkFBQSxPQUFBLFdBTFh2cEYsT0FLV3NwRixPQUFBQztxQkFBRTs0QkFMYit1Rzs7a0JBQUFZLFVBQUFELFFBQUFYO2tCQUFBQSxVQUFBWTtrQkFBQU8sVUFBQXJ3RztrQkFBQXN3RyxVQUFBcndHOzt5QkFLRTs7c0JBTEZxd0c7OztpQkFBQWUsUUFBQWhCLFlBTUU3dkcsUUFORjZ2RyxZQU1FL3ZHLFFBTkYrdkc7dUJBQUFDO3VCQUFBQTs7O29CQUFBQTs7Ozs7OztnQkFNYTtpQkFOYmdCLFFBQUFoQjtpQkFNRTd2RyxRQU5GNnZHO2lCQU1FL3ZHLFFBTkYrdkc7aUJBTWE7bUJBekJici9LOzhCQW1CQXJhO3VCLGdCQU1VMjZMLE9BQUFDO3dCQUFBLE9BQUEsV0FOVjU2TCxPQU1VMjZMLE9BQUFDLE9BQUU7O3VCQU5adEM7cUJBTUU1dUc7cUJBQUFDO2dCQUFXO2lCQUFPOztvQkF6QnBCdHZFOytCQW1CQXJhO3dCLGdCQU1pQjY2TCxPQUFBQzt5QkFBQSxPQUFBLFdBTmpCOTZMLE9BTWlCNjZMLE9BQUFDLE9BQUU7O3dCQU5uQnhDO3NCQU1FMXVHO3NCQUFBQztpQkFBa0I7O21CQU5wQnd2Rzs4QkFBQXI1TDsrQkFBQXM0TCxRQU13QnlDLE9BQUFDO3VCQUFBLE9BQUEsV0FOeEJoN0wsT0FNd0IrNkwsT0FBQUM7c0JBQUU7NkJBTjFCMUM7O21CQUFBa0IsVUFBQUgsUUFBQWY7bUJBQUFBLFVBQUFrQjttQkFBQUMsVUFBQWdCO21CQUFBZixVQUFBZ0I7Ozs7Ozs7Z0JBTW9CO3dCQUFsQjs7OztpQkFDQU8sUUFQRnhCO3VCQUFBQzt1QkFBQUE7OztvQkFBQUE7Ozs7Ozs7Z0JBTUU7O29CQUNBd0IsUUFQRnhCO2dCQU9ZLE9BQUEsV0FQWnBCLFNBT0UyQyxPQUFBQzs7O1VBRkE7O1NBREE7O1FBREE7O09BREE7O2VBRkZ6QjtpQkFBQUMsMEJBQUFBLFNBQ0U7T0FBQTs7Z0JBREZBLHNCQUVFO1NBRkZBLFNBRUU7O0tBREE7O0dBT2dEO1lBM0JsRG54TCxZQW1CQW5JLGFBQUFDLEtBQUFDO1FBQUEyTCxRQUFBNUwsS0FBQXkvSyxRQUFBeC9LOztlQUFBdy9LO21CQUFBQTtnQkFDRSx5QkFERjd6SztnQkFFRSx5QkFGRkE7WUFBQTZ6Szs7UUFHRTtTQUhGeVEsUUFBQXpRO1NBR0VueUosS0FIRm15SjtTQUdFNTBKLFFBQUEseUJBSEZqZjtTQUFBa2YsUUFuQkE1aUIsWUFtQkFuSSxhQUdFOHFCLE9BQUF5QztTQUhGMWhCLFFBQUFrZjtTQUFBMjBKLFFBQUF5UTs7O1FBSUU7U0FKRjRLLFFBQUFyYjtTQUlFbHlKLE9BSkZreUo7U0FJRXNiLFFBQUEseUJBSkZudkw7U0FBQW92TCxRQW5CQTl5TCxZQW1CQW5JLGFBSUVnN0wsT0FBQXh0SztTQUpGM2hCLFFBQUFvdkw7U0FBQXZiLFFBQUFxYjs7O1FBS0U7U0FMRkcsUUFBQXhiO1NBQUF5YixRQUtFLHlCQUxGdHZMO1NBQUFBLFFBQUFzdkw7U0FBQXpiLFFBQUF3Yjs7O1FBTUU7U0FORkUsUUFBQTFiO1NBTUUxc0gsS0FORjBzSDtTQU1FMmIsT0FORjNiO1NBTUU0YixRQUFBLHlCQU5GenZMO1NBTUUwdkwsUUF6QkZwekwsWUFtQkFuSSxhQU1FczdMLE9BQUFEO1NBTkZHLFFBbkJBcnpMLFlBbUJBbkksYUFNRXU3TCxPQUFBdm9JO1NBTkZubkQsUUFBQTJ2TDtTQUFBOWIsUUFBQTBiOzs7UUFPRSxJQUFBSyxPQVBGL2IsVUFPRWdjLFFBQUEseUJBUEY3dkw7MEJBQUE3TCxhQU9FMDdMLE9BQUFEOzs7OztpRUFQRmgrTDtJQW5CQXlmO1lBQUFDLGFBbUJBbGU7SUFBQSxJQUFBbWUsWUFBQSw2QkFBQW5lO0lBQUE7O2FBQUFtZTs7OztnQkFBQTtpQkFBQTZKO21CQUFBOzs7Ozs7Ozs7OztpQkFBQUM7bUJBQUE7Ozs7Ozs7Ozs7O2lCQUFBOzs7cUJBQUEsSUFBQXZpQixlQUFBcWlCO3FCQUFBLFdBQUFBLElBQUFyaUI7b0JBUWtEO2lCQVJsRCxPQUFBO3dCQW5CQXdZLGFBbUJBbGU7d0JBbkJBa2UsYUFtQkFsZTtpQkFBQTs7Ozs7Ozs7OztpQkFBQTgzRSxPQUFBO2lCQUFBOzs7cUJBQUEsSUFBQXB5RSxlQUFBcWlCO3FCQUFBLFdBQUFBLElBQUFyaUI7b0JBUWtEO2lCQVJsRCxPQUFBO3dCQW5CQXdZLGFBbUJBbGU7d0JBbkJBa2UsYUFtQkFsZTtpQkFBQTs7Ozs7Ozs7OztpQkFBQTA4TCxPQUFBO2lCQUFBLG9CQUFBMzBLLElBQUEsV0FBQUEsSUFRa0Q7aUJBUmxELE9BQUE7aUJBQUE7Z0NBbkJBN0osYUFtQkFsZTtpQkFBQTI4TCxPQUFBO2lCQUFBOzs7cUJBQUEsSUFBQTFnTCxlQUFBdlcsZUFBQXFpQjtxQkFBQSxXQUFBQSxJQUFBcmlCLElBQUF1VztvQkFRa0Q7aUJBUmxELE9BQUE7d0JBbkJBaUMsYUFtQkFsZTt3QkFuQkFrZSxhQW1CQWxlO3dCQW5CQWtlLGFBbUJBbGU7aUJBQUE7Ozs7Ozs7Ozs7aUJBQUE0OEwsT0FBQTtpQkFBQSxvQkFBQTcwSyxJQUFBLFdBQUFBLElBUWtEO2lCQVJsRDs7O29CQUFBL25COzs7OztvQkFBQTs7aUJBQUE2OEwsT0FBQTtpQkFBQTMwSyxXQUFBLHFDQUFBL0o7aUJBQUFnSzs7d0JBQUFIO3dCQUFBQzt3QkFBQTZ2RDt3QkFBQTRrSDt3QkFBQUM7d0JBQUFDO3dCQUFBQztpQkFBQXowSzt5QkFBQUM7aUJBQUE7O2dDQUFBTDtnQ0FBQUM7Ozt3QkFBQXZpQixlQUFBcWlCO29CQUFBLFdBQUErdkQsVUFBQS92RCxJQUFBcmlCOzt3QkFBQUMsaUJBQUEyaUI7b0JBQUEsV0FBQW8wSyxVQUFBcDBLLE1BQUEzaUI7O3dCQUFBbTNMLGlCQUFBLFdBQUFILE1BQUFHOzt3QkFBQTdnTCxlQUFBUyxpQkFBQXFnTDtvQkFBQSxXQUFBSCxVQUFBRyxNQUFBcmdMLE1BQUFUO2dDQUFBK2dMLGlCQUFBLFdBQUFILE1BQUFHOztnQkFRa0Q7Z0JBUmxEO3dCQUFBOzs4QkFBQTkwSyxVQUFBQyxNQUFBQyxhQUFBQzs7R0FRa0Q7WUFHNUM0MEs7SUFBVzs7O1lBRVB2OEgsaUJBQU0sV0FBTkE7O1lBRVF1akgsZUFBSnJqSCxpQkFBSnM4SDtRQUFlLFdBQWZBLFVBQUl0OEgsVUFBSXFqSDs7b0JBREh6NkgsZUFBSkQsZUFBeUIsV0FBekJBLFFBQUlDOztJQUZnQjtHQUdRO0dBRXJDLFNBQVEyekksc0JBRUp4NEw7SUFGNEIsVUFFNUJBO0tBRGdCLE1BQUE7SUFDd0IsV0FSeENzNEwsU0FRQXQ0TDtJQUF3QyxPQUFBLCtCQUZwQ3c0TDtHQUVnRDtZQTVCMURwMkssVUE4Qk1waUI7SUFBd0MsV0FWeENzNEwsU0FVQXQ0TDtJQUFKLE9BQUEsK0JBSlF3NEw7R0FJZ0Q7T0E3QjFEQyxZQUNBQztZQUtBdjZELEtBNEJTaGpJLEdBQUksV0FBSkEsR0FBVTtZQWhDbkJ3OUwsSUFzQ0kzNEw7SUFKTyxVQUlQQSw2QkFBQUE7YUFBQUEsTUFBSyxXQUFMQTtRQURJMHpELE1BQ0oxekQ7SUFEUyxPQUFMMHpEO0dBQ007WUFyQ2RrbEksUUF3Q2dCaDBJLElBQUdDO0lBQ2pCOztlQURpQkEsbUJBQUFBO2VBQUhELG1CQUFBQTs7O2dCQUFHQztpQkFBSEQ7aUJBQUFBLFFBR1ppMEksUUFIZWgwSTs7cUJBQUhEO1lBSUZrMEksTUFKRWwwSSxPQUlQbTBJLE1BSk9uMEk7UUFNWixXQUZLbTBJLEtBNUNUSCxRQTRDY0UsS0FKS2owSTs7T0FPVixXQVBPRCxJQUFHQzs7VUFHZmcwSSxRQUhZajBJOztLQUdpQixPQUE3QmkwSTs7SUFEdUI7R0FLTjtZQTlDckJHLE9BaURlcDBJLElBQUdDO0lBQ2hCOztlQURnQkEscUJBQUFBO2VBQUhELHFCQUFBQTs7O2dCQUFHQztpQkFBSEQ7aUJBQUFBLFFBR1hpMEksUUFIY2gwSTs7cUJBQUhEO1lBSUZrMEksTUFKRWwwSSxPQUlQbTBJLE1BSk9uMEk7UUFNWCxXQUZJbTBJLEtBckRSQyxPQXFEYUYsS0FKS2owSTs7T0FPVCxXQVBNRCxJQUFHQzs7VUFHZGcwSSxRQUhXajBJOztLQUdvQixPQUEvQmkwSTs7SUFEcUI7R0FLTDtZQXZEcEJJLEtBMERRcitMLEdBQUV3WixHQUFFczFCO0lBQ1YsVUFETTl1Qyx1QkFBQUEsSUFBSTh1QyxJQUFGdDFCO2NBQUFBLG9CQUFBQSxHQU1RLE9BakVsQjRrTCxPQTJEUXArTCxHQUFJOHVDO2tCQUFBQTtjQUFBQSxJQTVEWmt2SixRQTREUWgrTCxHQUFFd1osS0EzRFY0a0wsT0FGQUwsSUE2RFEvOUwsSUFBRXdaO3FCQUFBQSxpQkE1RFZ3a0wsUUFEQUQsSUE2RFEvOUwsSUFBSTh1QyxTQUFKOXVDLEdBQUV3WixHQUFFczFCO0dBVWE7R0FLekIsU0FBQTNwQyxVQUFLbTVMO0lBQUw7OztPQUdFO1FBQUFDO1FBQUF2bkQ7UUFBQXduRCxXQUhGcjVMLFVBQUttNUwsVUFHSHRuRDtRQUFBeW5ELFdBSEZ0NUwsVUFBS201TCxVQUdIQztPQUFBLHdCQUFBQyxjQUFBQzs7T0FDQTtRQUFBQztRQUFBQztRQUFBQyxXQUpGejVMLFVBQUttNUwsVUFJSEs7UUFBQUUsV0FKRjE1TCxVQUFLbTVMLFVBSUhJO09BQUEseUJBQUFFLGNBQUFDOztPQUNBLElBQUFDLHFCQUFBQyxXQUxGNTVMLFVBQUttNUwsVUFLSFE7T0FBQSx5QkFBQUM7O09BQ0E7UUFBQUM7UUFBQUM7UUFBQUM7UUFBQUMsV0FORmg2TCxVQUFLbTVMLFVBTUhZO1FBQUFFLFdBTkZqNkwsVUFBS201TCxVQU1IVztRQUFBSSxXQU5GbDZMLFVBQUttNUwsVUFNSFU7T0FBQSx5QkFBQUcsY0FBQUMsY0FBQUM7O09BQ0EsSUFBQUMscUJBQUFDLFdBQUEsV0FQR2pCLFVBT0hnQjtPQUFBLHlCQUFBQzs7R0FDa0I7R0FUVCxjQUNYcDZMO1lBMExtQnE2TCxpQkEvSElwNkw7SUFDbkIsSUFBYXdtQixxQkFETXhtQjs7aUJBS1QsT0FBQSwwQkFKR3dtQjtTQUdUa3RDO2VBQUFBO2VBQUFBLFNBRlE2MkUsdUJBQUFBOzttQkFFUjcyRTs7T0FEZ0IybUk7T0FBUHgxSSxLQUNUNk87T0FESzlPLEtBQ0w4TzttQkFESzlPLFFBQUlDLElBQU93MUk7OztLQUNBLElBQVh2VixpQkFBVyxZQUFoQnB4SCxLQUhTbHRDLE1BQUFBLHFCQUdKcytKOztHQUdJO1lBd0hFd1YsaUJBcEhJdDZMO0lBQ25CLElBQWF3bUIscUJBRE14bUI7O2lCQUtULE9BQUEsMEJBSkd3bUI7U0FHVGt0QztlQUFBQTtlQUFBQSxTQUZTb3hILHlCQUFBQTs7bUJBRVRweEg7O09BRGUybUk7T0FBUHgxSSxLQUNSNk87T0FESTlPLEtBQ0o4TzttQkFESTlPLFFBQUlDLElBQU93MUk7OztLQUNDLElBQVg5dkQsZUFBVyxZQUFoQjcyRSxLQUhTbHRDLE1BQUFBLHFCQUdKK2pIOztHQUdJO1lBNkdFZ3dELElBeEdSaHdELElBQUssaUNBQUxBLElBN0pYcXVELFNBSEFILFFBZ0t5RDtZQXdHdEMrQixHQXZHVGp3RCxJQUFLLGlDQUFMQSxJQTdKVnl1RCxRQUhBTixTQWdLd0Q7WUF1R3JDaHpMLFlBckZIMG5DLGVBQWNwdEM7YUFDbEJ5NkwsSUFBSXo2TDtLQUNWLFVBRFVBLDZCQUFBQTtZQUFBQTs7UUFRQyxJQUFMdXFJLEtBNEVPNnZELGlCQXBGSHA2TDtRQVNSLHFCQUFvQiwwQkFEaEJ1cUksSUFSQWt3RDs7UUFXSyxJQUFMM1YsT0F5RU93VixpQkFwRkh0Nkw7UUFZUixxQkFBbUIsMEJBRGY4a0wsTUFYQTJWOztZQUtBL21JLE1BTEkxekQsTUFLQyx5QkFMTHk2TCxJQUtBL21JOzs7U0FDUTRySCxLQU5KdC9LO1NBTUE2a0QsS0FOQTdrRDtTQU1KNGtELEtBTkk1a0Q7b0JBQUp5NkwsSUFNUW5iO29CQU5SbWIsSUFNSTUxSTtRQUFXLHlCQU5mNDFJLElBTUE3MUk7b0JBSkNwa0QsSUFGR1IsTUFFRSxPQUFBLFdBSEZvdEMsZUFHSDVzQzs7SUFVaUM7SUFFMUMsT0FkUWk2TCxJQURrQno2TDtHQWVyQjtZQXNFVU4sVUFuRUhnN0wsY0FBYS82TDthQUNyQncrSCxLQUFLeCtILE1BQU8sV0FBSyxXQURUKzZMLGNBQ0gvNkwsT0FBK0I7YUFDaEM4NkwsSUFBSTk2TDtLQUNWLFNBRFVBO01BR0QsSUFERmc3TCxLQUZHaDdMLFNBR0QsUUFBQSw0QkFERmc3TDs7d0RBSEx4OEQsS0FDUXgrSCxRQXZNaEI4NEw7Z0JBQ0FDOztnQkFzTWdCLzRMOzs7O09BUUQ7UUFEVXdIO1FBQU55ekw7UUFDSixVQUFBLDRCQURJQTs7UUFFTSxPQXdETkwsSUF4RE0sMEJBRkFwekwsTUFQYnN6TDs7OzttQkFESnQ4RCxLQUNReCtIO21CQWlFRzY2TCxHQXZESSwwQkFIRXJ6TCxNQVBic3pMOzs7WUFPYXR6TCxVQUFBQSxhQXpDakIzRyxJQXlDaUIyRyxnQkF6Q2pCM0c7U0FFTTtVQUFKc2tCLElBQUkseUJBdUNXM2Q7VUF0Q0wsT0FBQSx5Q0FMUi9ELFFBSUYwaEI7aUJBQ0oseUNBK0JVbmxCOztRQVdTLE9BaE56Qmc1TCxJQXFNWThCOzs7O1dBT2F0ekw7b0JBQUFBOzs7OztZQWpDWCt6RTtZQUFIdmtFO1lBQUhsVixNQWlDaUIwRjswQkFqQ2pCMUYsS0FBR2tWLEdBQUd1a0U7Ozs7O1FBRUE7U0FBSm4yRCxNQUFJLHlCQStCVzVkO1NBOUJMLE9BQUEseUNBTE41RCxRQUlKd2hCO21CQUNKLHlDQXVCVXBsQjs7T0FjZTtRQURWb3ZHO1FBQUg5QjtRQUFIaGdEO1FBQ2dCLE9BZG5Cd3RJLElBYVMxckY7UUFDRSxPQWRYMHJGLElBYU14dEY7T0FDYSxPQWhOL0Jnc0YsS0FrTVl3QixJQWFHeHRJOzs7S0FHRixPQWpCTGt4RSxLQUNReCtIO0lBZ0JNO0lBRWxCLE9BbEJRODZMLElBRmlCOTZMO0dBb0JqQjtHQU1OO0lBRkVrN0w7Ozs7Ozs7Ozs7Ozs7Ozs7O3dDQUNFeEcsV0FBQUEsV0FBQUE7OzBDQUFBQTs7MENBQUFBOytDQUFBQTs7O0dBb0NOLFNBTWV0N0ssZUFOWCtoTDtJQUNGLGdDQURFQSxtQkFyQ0FEO0dBc0N3RTtZQU85RUUsU0FBUzNtTCxHQUFJLE9BQUpBLElBMVFYcWtMLFNBQ0FDLFFBeVEwQztZQXNCdENoaUwsT0FBUTliLEdBQUV3WixHQUFJLE9BNVJsQjRrTCxPQUZBTCxJQThSWS85TCxJQUFFd1osR0FBZ0I7WUFHNUI0bUw7SUFBaUI7R0FHUjtZQUlUanVKLE9BQU8vc0M7SUFDVCxJQUFhd21CLHFCQURKeG1COztpQkFTQyxPQUFBLDBCQVJHd21COzs7O1dBRUQrakgsdUJBQUFBOztXQUNDdTZDLHlCQUFBQTs7Ozs7VUFFT3VWO1VBQVB4MUk7VUFBSkQ7c0JBQUFBLFFBQUlDLElBQU93MUk7Ozs7VUFDRFk7VUFBUGgvSDtVQUFKRjtzQkFBQUEsVUFBSUUsTUFBT2cvSDs7O2FBRkxDLGlCQUFOM0MsNkJBQUFBLE1BQU0yQzs7O1VBR1NDO1VBQVA3YjtVQUFKOGI7VUFBSkM7c0JBQUFBLFVBQUlELFVBQUk5YixJQUFPNmI7OztTQU5FO1VBQVhHO1VBQUxuZ007VUFBZ0IsWUFBaEJBLEdBRElxckI7VUFBQUE7a0JBQ0M4MEs7OztHQVNEO1lBTVB4aEwsS0FBSzlaLEdBQUc2YSxNQUFNblk7YUFDUjY0TCxnQkFBSy8wSyxLQUFJeG1CLEdBQUV3N0w7S0FDakIsSUFEZTluSSxNQUFBMXpELEdBQUV5N0wsWUFBQUQ7S0FDakI7Z0JBRGU5bkk7T0FHRztRQUFBLE9BQUEsdUJBSWhCM2dCLFVBUFN2c0IsS0FBTWkxSzs7T0FHQyxPQUloQjFvSixnQkFQU3ZzQixLQUFNaTFLOzthQUFGL25JOzthQUFBc0gsTUFBQXRILFFBQUFBLE1BQUFzSDs7U0FNa0I7VUFBbkJza0gsS0FOQzVySDtVQU1MdUksT0FOS3ZJO1VBQUFxSSxPQUFBckk7VUFBRWdvSSxnQkFNUHovSCxVQUFJcWpILElBTkdtYztVQUFGL25JLE1BQUFxSTtVQUFFMC9ILFlBQUFDOzs7U0FFQSxJQUFWOWdNLElBRlE4NEQsUUFFRSxPQUFBLFdBSEhoeEQsR0FDSDhqQixLQUVKNXJCO1NBQUs7VUFBQSxPQUFBLHVCQUtWbTRDLGdCQVBlMG9KOztTQUVMLE9BS1Yxb0osc0JBUGUwb0o7O1NBSzJCO1VBQWpDNTJJLEtBTEk2TztVQUFBOU8sS0FBQThPO1VBQUVpb0ksZ0JBS045MkksSUFMTTQySTtVQUFGL25JLE1BQUE5TztVQUFFNjJJLFlBQUFFOzs7SUFNcUM7YUFDcEQ1b0osY0FBS3ZzQjtLLFlBQ0MsT0FEREE7U0FFQStqSCxlQUFMdnFJO0tBQVcsa0JBQUEsT0FBQSx1QkFUUHU3TCxZQU9DLzBLLEtBRUx4bUIsR0FBS3VxSTs7S0FBTSxPQVRQZ3hELGtCQU9DLzBLLEtBRUx4bUIsR0FBS3VxSTs7YUFURHcwQyxLQUFLdjRKLEtBQUl4bUIsR0FBRXc3TDtLLHVCQUFYRCxVQUFLLzBLLEtBQUl4bUIsR0FBRXc3TDs7SUFXbkIsT0FYUXpjLEtBREVsa0ssTUFBSDdhO0dBWU87OzJDQVpaOFo7SUFtQkpLO0lBQ0FDO0lBQ0FIO0lBQ0FJO0lBQ0FDO0lBQ0FzTTtJQUNBMU07SUFDQU47SUFDQUM7SUFDQTRGO0lBQ0E5RjtJQUNBYTtJQUNBRDtJQUNBRTtJQUNBQztJQUNBWDtJQUNBQztZQU9RbS9ELEtBQUtuNUUsR0FBS29xQztJQUNoQixJQURXc3BCLE1BQUExekQ7SUFDWDtlQURXMHpELCtCQUFBQSxNQXJXZitrSSxTQUNBQztZQW9XZWhsSTs7UUFVRixJQURFN08sS0FUQTZPLFFBU0o5TyxLQVRJOE8sUUFZTm1sSSxRQVpDMS9HLEtBU0N2MEIsSUFUU3hhO2tCQVlYeXVKLHNCQUFBQSxjQWhYVEg7UUFnWGdDLE9BOVdoQ0UsUUE4V1NDLE9BWkMxL0csS0FTS3QwQixJQVRLemE7O1FBY1AsSUFEQzZ4QixPQWJDdkksUUFhTHFJLE9BYktySSxRQWdCTmtvSSxVQWhCQ3ppSCxLQWFBcGQsTUFiVTN4QjtRQWNQLFVBRUp3eEosMEJBQUFBLGdCQXJYVG5EO1FBcVgrQixPQWpYL0JPLE9BaVhTNEMsU0FoQkN6aUgsS0FhSWxkLE1BYk03eEI7O1lBS1ZtdUosT0FMSzdrSSxRQUtNLE9BeFdyQmlsSSxJQW1XVXgvRyxLQUtBby9HLE1BTFVudUo7O1FBa0JQO1NBREtrMUksS0FqQkg1ckg7U0FpQkQwbkksT0FqQkMxbkk7U0FpQkwybkksT0FqQkszbkk7U0FxQk5tb0ksVUFyQkMxaUgsS0FpQkFraUgsTUFqQlVqeEo7a0JBcUJYeXhKO1NBQWtDLFdBckJqQzFpSCxLQWlCUW1tRyxJQWpCRWwxSTtTQXFCdUIsT0FyWDNDNnVKLEtBcVhTNEMsU0FyQkMxaUgsS0FpQklpaUgsTUFqQk1oeEo7O1lBQUxzcEIsTUFxQk5tb0ksVUFKU3ZjLEtBQUo4Yjs7b0JBZkhqZ00sSUFGSXU0RCxRQUVDLE9BQUEsV0FGSXRwQixHQUVUanZDOzs7R0FtQitDOzs0Q0FyQmhEZytFLE1BL1ZWZ2xEOzs7Ozs7Ozs7Ozs7WUE0WE0yOUQsT0FBSzk3TCxHQUFFKzdMO0lBQ2IsSUFEV3JvSSxNQUFBMXpEO0lBQ1g7ZUFEVzB6RCwrQkFBQUE7WUFBQUE7O1FBSU8sSUFKUDdPLEtBQUE2TyxRQUlKOU8sS0FKSThPLFFBSU8sT0FKWm9vSSxPQUlDbDNJLElBSk1tM0k7UUFJSyxXQUFBO1lBSlByb0ksTUFBQTdPOzs7UUFLTSxJQUxOb1gsT0FBQXZJLFFBS0xxSSxPQUxLckksUUFLTSxPQUxYb29JLE9BS0EvL0gsTUFMT2dnSTtRQUtJLFNBQUE7WUFMTnJvSSxNQUFBdUk7OztZQU1MakIsTUFOS3RILFFBTUksV0FOVG9vSSxPQU1BOWdJLEtBTk8rZ0k7O1FBT1c7U0FQYnpjLEtBQUE1ckg7U0FBQTBuSSxPQUFBMW5JO1NBT0w2a0ksT0FQSzdrSTtTQUFBQSxNQUFMb29JLE9BT0F2RCxNQVBPd0QsYUFBRlgsT0FBQTliOztvQkFRSjkrSyxJQVJJa3pELFFBUUMsT0FBQSxXQVJDcW9JLFdBUU52N0w7OztHQUFnQjtZQUdyQnc3TCxXQUFXaDhMLEdBQUUwQztJQUNmLE9BQVU7O2FBREcxQztzQkFDRTdFO2NBQ1AsWUFBQSxXQUZPdUgsR0FDQXZIOzRDQUdDLFdBSERBO2tCQUVKdXVDO2NBQUssT0F0SWRxeEosU0FzSVNyeEo7YUFDVztHQUFDO1lBR3JCdXlKLFNBQW1CbnJILEtBQUlvckg7YUFDakJ6QixJQUFLcm1MO0tBQ1gsVUFEV0E7YUFBQUE7O1NBSXVCLElBQXhCK25MLE1BSkMvbkwsTUFJSnhaLElBSkl3WixNQUl1QixPQUo1QnFtTCxJQUlJMEIsTUFBZ0IsT0FKcEIxQixJQUlDNy9MO1NBQTJCLE9BQUE7O1NBQ0QsSUFBeEJ3aE0sTUFMRWhvTCxNQUtMaW9MLE1BTEtqb0wsTUFLc0IsT0FMM0JxbUwsSUFLRzJCLE1BQWdCLE9BTG5CM0IsSUFLQTRCO1NBQTJCLE9BQUE7O1NBQ0Q7VUFBMUJDLE1BTktsb0w7VUFNcUIsT0FOMUJxbUwsSUFNQTZCO1VBQWMsT0FBQSxtQ0FQRHhySDtTQU9hLE9BQUE7O1NBR25CO1VBREV5ckgsTUFSSm5vTDtVQVFDb29MLE1BUkRwb0w7VUFRTHFvTCxPQVJLcm9MO1VBU0xzb0wsU0FUQWpDLElBUUFnQztVQUVzRSxPQVZ0RWhDLElBUVM4QjtVQUUyQyxPQUFBLG1DQVh2Q3pySDtVQVc2QixPQUFBLCtCQUQxQzRySDtVQUMrQixPQUFBO1VBQVQsT0FWdEJqQyxJQVFNK0I7VUFFQSxPQUFBLHlCQURORTtTQUMrQixPQUFBO3FCQUg5QkMsTUFQSXZvTCxNQU9DLE9BQUEsV0FSVzhuTCxhQVFoQlM7O2NBUEl2b0wsNkNBRFEwOEQ7S0FJK0M7TUFBQSxPQUFBLG1DQUovQ0E7TUFJK0IsT0FBQTtLQUFBLE9BQUE7SUFPa0M7SUFFdEYsT0FaUTJwSDtHQVlMOzthQWNLdGhILEtBQUtuNUUsR0FBRzBDO0tBQ2QsVUFEVzFDO21CQUFBQSxxQkEvYWJ5NEwsMkJBQ0FDO1lBOGFhMTRMOztRQU1UO1NBRFFvVSxJQUxDcFU7U0FLSnBGLElBTElvRjs7b0JBVUxwRjtZQUhBLFVBR0FBO29CQUFBQSxxQkF4YlI4OUwsV0E4YVF2L0csS0FLSS9rRSxHQUxJMVI7MEJBVWUwUixHQUFLLE9BdGJwQ3drTCxRQXNiUWgrTCxHQUF1QndaLEdBQWdCO1lBQWxDLFdBVkwra0UsS0FLSS9rRSxHQUxJMVI7WUFVVyxPQUFBO1dBQXFCO1NBSjVDLE9BTkl5MkUsS0FLQ3YrRSxHQUxPOEg7UUFPUixPQUFBOztRQUtKO1NBRE95NUwsTUFYRW44TDtTQVdMcThMLE1BWEtyOEw7O29CQWdCTHBGO1lBSEEsVUFHQUE7b0JBQUFBLElBaEJBdStFLEtBV0dnakgsS0FYS3o1TCxzQkEvYWhCKzFMOzBCQStiK0Jya0wsR0FBSyxPQTNicEM0a0wsT0EyYlFwK0wsR0FBdUJ3WixHQUFlO1lBQWpDLFdBaEJMK2tFLEtBV0dnakgsS0FYS3o1TDtZQWdCVyxPQUFBO1dBQW9CO1NBSjNDLE9BWkl5MkUsS0FXQWtqSCxLQVhRMzVMO1FBYVIsT0FBQTs7UUFJSyxJQUFMNDVMLE1BakJLdDhMLE1BaUJBLE9BakJMbTVFLEtBaUJBbWpILEtBakJRNTVMO1FBaUJILE9BQUEsMEJBOWJiaTJMOztRQWdjSTtTQURVanZKLElBbEJEMXBDO1NBa0JGbzhMLE1BbEJFcDhMO1NBa0JMdzhMLE1BbEJLeDhMOztvQkF1QkxwRjtZQUhBLFVBR0FBLHVCQUFBQSxJQXZCQXUrRSxLQWtCTXp2QyxHQWxCRWhuQyxLQUFSeTJFLEtBa0JHaWpILEtBbEJLMTVMOzBCQXVCZTBSOzJCQUF1QnMxQixHQUFLLE9BamMzRHV2SixLQWljUXIrTCxHQUF1QndaLEdBQXVCczFCLEdBQWM7YUFBaEMsV0F2QjVCeXZDLEtBa0JNenZDLEdBbEJFaG5DO2FBdUJrQyxPQUFBO1lBQWtCO1lBQXZELFdBdkJMeTJFLEtBa0JHaWpILEtBbEJLMTVMO1lBdUJXLE9BQUE7V0FBMEM7U0FKakUsT0FuQkl5MkUsS0FrQkFxakgsS0FsQlE5NUw7UUFvQlIsT0FBQTtvQkFsQkNsQyxJQUZJUixNQUVDLE9BQUEsV0FGRTBDLEdBRVBsQzs7SUFxQjREO2FBR2pFd1YsSUFBSWhXLEdBQUcwQztLQUFJLE9BMUJQeTJFO2NBMEJBbjVFO3VCQUFzQlE7ZUFBSyxXQUFBLFdBQXhCa0MsR0FBbUJsQztlQUFLLE9BQUEsMEJBbmNuQzI5SDtjQW1jK0M7SUFBQzthQUU1Q3krRCxPQUFLNThMLEdBQUcwQzttQkFNRjFDLEdBQUssT0EvRVQ4N0wsT0ErRUk5N0wsb0JBQW9DO0tBTDVDOztRQTdCTW01RTtVQTRCQ241RTttQkFDUVE7Z0NBRVQsZUE5Y1JpNEwsU0FDQUMsUUErY3FCO1dBSGpCLFdBQUEsV0FGUWgyTCxHQUNLbEM7V0FFVCxPQUFBO1VBRWE7S0FDZixPQUFBO0lBQXdDO0lBckNjLFdBNkJ4RHdWLEtBMUJJbWpFLE1BNEJKeWpIOztZQVlGNWpMLHFCQUFxQjZqTDtrQkFNYkM7S0FDTjs7WUFHRSxtQ0FKSUEsTUFBQUEsTUFBQUEsTUF4ZFY3RDs7WUEyZE0sbUNBSEk2RCxNQUFBQSxNQTFkVmxFO2lCQTRkTSxtQ0FGSWtFLE1BQUFBLE1BemRWOUQ7S0EwZEksV0FBRSxtQ0FESThELE1BM2RWbkU7SUFnZUs7SUFUSDtnQkFFRSxtQ0ExZEpEO2dCQXlkSSxtQ0ExZEpEO0tBeWRFLFdBQUUsbUNBRm1Cb0UsYUFqZHZCMStEO0lBdWRLLE9BQUE7R0FLQztZQUdKL2tILG9CQUE4QjJqTDtrQkFDS0Q7Y0FDL0JFLE1BQU1DLFVBQVN6a0osTUFBS0M7TUFDdEI7b0JBS2lFQSxPQUMzRCxPQUFBLFdBUEV3a0osVUFBU3prSixNQU1nREMsT0FDeEM7TUFEUjtPQUFBLE9BQUEsa0NBUGdCcWtKLE1BQ1hya0o7a0JBTWxCO29CQUY0REQsTUFDMUQsa0JBTEV5a0osVUFJd0R6a0osTUFKMUNDLE9BS0c7TUFEUjtPQUFBLE9BQUEsa0NBTGdCcWtKLE1BQ2hCdGtKO2tCQUliO2tCQURBLCtCQUhrQkM7T0FFcEIsV0FBRSwrQkFGYUQ7TUFFZixPQUFBO0tBTUM7bUJBRTJCeDRDO01BQzlCLFVBRDhCQSxnQkFFWjthQUZZQTs7YUFLakJ5NEMsUUFMaUJ6NEMsTUFLdkJ3NEMsT0FMdUJ4NEMsTUFLUCxPQWZyQmc5TCxNQXBlTnBFLFNBbWZXcGdKLE1BQU1DOzthQUREeWtKLFVBSmtCbDlMLE1BSXhCbTlMLFNBSndCbjlMO1NBSVIsT0FkcEJnOUwsTUFuZU5oRSxRQWlmVW1FLFFBQU1EOztTQUtjO1VBSHBCeHBJLE1BTndCMXpEO1VBU0osT0FBQSxrQ0FwQk84OEwsTUFpQjNCcHBJO1VBR0YsT0FBQSxvQ0F4ZlJpbEk7VUF1ZlEsT0FBQSwrQkFGRWpsSTtTQUdGLE9BQUE7O1NBVWU7VUFURDBwSSxTQVZZcDlMO1VBVW5CcTlMLE9BVm1CcjlMO1VBVXhCczlMLE9BVndCdDlMOzswQkFtQnFDbzlMLFFBQzNELE9BaGdCWm5FLEtBc2ZVcUUsTUFBS0QsTUFTd0RELFFBQ3RDO1VBRFYsT0FBQSxrQ0E5QmNOLE1BcUJmTTtxQkFTWjswQkFGNkRDLE1BQzNELE9BOWZacEUsS0FzZlVxRSxNQU82REQsTUFQakRELFFBUVc7VUFEVixPQUFBLGtDQTVCY04sTUFxQnRCTztxQkFPTDswQkFGMkRDLE1BQ3pELE9BNWZackUsS0EyZnFFcUUsTUFMdERELE1BQU9ELFFBTVc7VUFEVixPQUFBLGtDQTFCY04sTUFxQjNCUTtxQkFLQTtxQkFEQSwrQkFKWUY7cUJBR1osK0JBSEtDO1VBRVAsV0FBRSwrQkFGQUM7U0FFRixPQUFBOztTQVQ2QjtVQUExQjFpTSxJQUh1Qm9GO1VBR0csT0FBQSxrQ0FmTCs4TCxZQWVyQm5pTTtTQUFLLE9BQUEsb0NBOWVoQnVqSTs7S0FnZ0JTO0tBckJvQixPQUFBO0lBcUJuQjtJQWhDc0IsT0FBQTtHQWdDckI7WUFHVGpsSCxvQkFBOEJxa0w7a0JBQ0t2OUwsR0FBR3VYLE1BQU0vUztLQUM1QyxPQXRoQkZEO3VCQXVoQlNDLE1BQUs1SjtlQUFLLE9BQUE7K0NBSGEyaU0sWUFHbEIzaU0sR0FGMEIyYyxNQUUvQi9TO2NBQThEO2NBRnpCQTtjQUFUeEU7SUFJaEM7SUFKMkIsT0FBQTtHQUkxQjs7Ozs7Ozs7T0F6aEJOYTtPQUFBQztPQUFBRztPQUFBSztPQUFBRDtPQUFBOEM7T0FBQUM7T0FBQUM7T0FBQUM7T0FBQStSO09BQUE5UjtPQW1SbUI3RTtPQUFBZ0c7T0FBQXFUO09BblJuQlE7T0FBQUQ7O09BaUJBNmtIO09BTkFzNkQ7T0FDQUM7T0F5UUVxQztPQXhRRnBDO09Bc1FtQjRCO09BQUFDO09BblFuQnZCOztRQUNBOTZEO1FBTkFzNkQ7UUFDQUM7UUF5UUVxQztRQXhRRnBDO1FBc1FtQjRCO1FBQUFDO1FBblFuQnZCO1FBRkFMO1FBQ0FJO1FBNFJJdGlMO1FBOVJKaWlMO09BaVNFcUM7T0EzQmlCWjtPQUFBRTtPQWdGakIzZ0w7T0FEQThGO09BRkE3RjtPQUNBQztPQUhBK007T0FVQTdNO09BQ0FDO09BZEFDO09BSUFDO09BTkFDO09BQ0FDO09BRUFDO09BQ0FDO09BUUFDO09BREFDO09BRUFDO09BQ0FDO09BMkhBMUI7T0FrREFFO09BcENBRTs7Ozs7Ozs7Ozs7O09BM0xBMnpCO09Bd0ZJK3VKO09Ba0JKRztPQVBBRDs7T0E5WUY1NUs7OztTQXlRbUIxaUI7U0FBQWdHO1NBQUFxVDtTQW5SbkJsWTtTQUFBQztTQUFBRztTQUFBSztTQUFBRDtTQUFBOEM7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQStSO1NBQUE5Ujs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHRW5CRixTQUFBeEUsVUFBS2tzRyxVQUFMLE9BQUtBLFNBQThCO1lBSy9CdHhGLE9BQU94ZjtJQUFJLE9BQUcsc0NBQVBBLFNBQUFBO0dBQW9DO1lBRTNDZ3FHLFdBQVdocUc7SUFDYixPQUFHLHNDQURVQTtjQUFBQTtjQUNVO0dBQTJEO1lBR2hGdW9CLE1BQU0xakIsR0FBSSxPQUFKQSxFQUFLO0dBQ2lCO0lBQTVCcWhNLGlCQUE0QjtZQUU1QjF1RyxNQUFnQjN5RjtJQUNsQix3QkFEa0JBLHNCQUZoQnFoTTtHQUc0RDs7Ozs7NkJBZmhFdGhNLFdBS0k0YSxRQUVBd3FGLFlBSUF6aEYsT0FHQWl2RTs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0lDWEVxaEY7SUEyREFzdEI7SUFzQkFDO0lBb0RBQztJQWdER3A5Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXVHQTBxSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTVSRTtJQUFBO01BQUE7Ozs7O0lBQUwsY0FBSztJQUFMLE1BQUE7SUFBQXAwSSxRQUFBO0lBQUEsTUFBQTtJQUFLbUcsY0FBTCxXQUFBLCtCQUFBbkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUFBb0csa0JBQUEsU0FJK0M7WUFKL0NHLFlBQUEzRixLQUFBNEY7SUFBQTs7T0FBQSxPQUFBLCtCQUFBNUYsS0FBQTRGOztPQUFBLE9BQUEsK0JBQUE1RixLQUFBNEY7ZUFBQSxPQUFBLCtCQUFBNUYsS0FBQTRGOztHQUkrQztHQUovQyxJQUFBaUQsbUJBQUFyRCxZQUFBRztZQUFBSSxXQUFBL0YsS0FBQUMsU0FBQUM7SUFBQTtrRUFBQUQ7R0FJK0M7WUFKL0MrRixhQUFBaEcsS0FBQUM7SUFBQSxZQUFBLDhCQUFBRCxLQUFBQzs7aURBQUFBOzBCQUNFLGlCQUNBLGtCQUNBOztHQUM2QztHQUovQztJQUFBNkksbUJBQUE5QyxjQUFBRDtJQUFBZ0QsWUFBS3hELGFBQUxzRCxjQUFBQztJQUFBRTtZQUFBK1Isa0I7WUFBQTlSLFlBQUFsSSxLQUFBQztJLE9BQUFBOztPQUNFLE9BQUEseUJBREZEOztPQUVFLE9BQUEseUJBRkZBO2VBR0UsT0FBQSx5QkFIRkE7OztHQUFBLFNBQUFtSSxLQUFBbEk7SUFBQSxJQUFBRCw4Q0FBQWtJLFlBQUFsSSxLQUFBQzs7R0FJK0M7R0FKL0MsU0FBQW9ELFVBQUF5c0c7SUFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7O1FBQUE7O09BQUE7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBNm5FLGtCQUFBN25FOzs7TUFBQSxPQUFBOzRDQUFBNm5FLGtCQUFBN25FOzs7Ozs7Ozs7OztPQUFBLE9BQUE7NkNBQUE2bkUsa0JBQUE3bkU7O01BQUEsT0FBQTs0Q0FBQTZuRSxrQkFBQTduRTs7S0FBQSxPQUFBOzJDQUFBNm5FLGtCQUFBN25FOztJQUFBLE9BQUEsd0NBQUE2bkUsa0JBQUE3bkU7R0FJK0M7WUFKL0Nwc0c7SUFBQSxzQkFDRSxtQkFDQSxvQkFDQTs7R0FDNkM7R0F1RDFDO0lBQUE7TUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUwsY0FBSztJQUFMLE1BQUE7SUFBQTJFLFVBQUE7SUFBQSxNQUFBO0lBQUtDO01BQUwsV0FBQSwrQkFBQUQ7WUFBQUU7SUFBQTtLQUFBNjhMO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUF0b0c7S0FBQUM7S0FBQUY7S0FBQXAxRTtLQUFBQztLQUFBak47S0FBQXZXO0tBQUEsT0FBQSw2QkFBQUE7S0FBQXdXLE9BQUE7S0FBQSxPQUFBLDZCQUFBRDtLQUFBa04sU0FBQSxnQ0FBQWpOO0tBQUEsT0FBQSw2QkFBQWdOO0tBQUFFLFNBQUEsZ0NBQUFEO0tBQUEsT0FBQSw2QkFBQUY7S0FBQThGLFNBQUEsZ0NBQUEzRjtLQUFBLE9BQUEsNkJBQUFpMUU7S0FBQXJ2RSxTQUFBLGdDQUFBRDtLQUFBLE9BQUEsNkJBQUF3dkU7S0FBQXB2RSxTQUFBLGdDQUFBSDtLQUFBLE9BQUEsNkJBQUFzdkU7S0FBQWh2RSxTQUFBLGdDQUFBSDtLQUFBLE9BQUEsNkJBQUF5M0s7S0FBQUMsU0FBQSxnQ0FBQXYzSztLQUFBLE9BQUEsNkJBQUFxM0s7S0FBQUcsU0FBQSxnQ0FBQUQ7S0FBQSxPQUFBLDZCQUFBSDtLQUFBSyxTQUFBLGdDQUFBRDtLQUFBLE9BQUEsNkJBQUFMO0tBQUFPLFNBQUEsZ0NBQUFEO0tBQUEsT0FBQSw2QkFBQVA7S0FBQVMsVUFBQSxnQ0FBQUQ7S0FBQSxPQUFBLDZCQUFBVDtLQUFBVyxVQUFBLGdDQUFBRDtLQUFBLE9BQUEsNkJBQUFYO0tBQUFhLFVBQUEsZ0NBQUFEO0tBQUEsT0FBQSw2QkFBQWI7S0FBQWUsVUFBQSxnQ0FBQUQ7S0FBQSxPQUFBLDZCQUFBZjtJQUFBLE9BQUEsZ0NBQUFnQjs7WUFBQTU5TCxjQUFBdkosS0FBQTRGO0lBQUE7S0FBQXVnTTtLQUFBQztLQUFBQztLQUFBQztLQUFBQztLQUFBQztLQUFBQztLQUFBQztLQUFBQztLQUFBdG9HO0tBQUFDO0tBQUFGO0tBQUFwMUU7S0FBQUM7S0FBQWpOO0tBQUF2VztLQUFBSSxRQUFBLDZCQUFBN0YsS0FBQTRGLEtBQUFIO0tBQUFLLFFBQUEsNkJBQUE5RixLQUFBNkYsT0FBQW1XO0tBQUFHLFFBQUEsNkJBQUFuYyxLQUFBOEYsT0FBQW1qQjtLQUFBdk0sUUFBQSw2QkFBQTFjLEtBQUFtYyxPQUFBNk07S0FBQXNHLFFBQUEsNkJBQUF0dkIsS0FBQTBjLE9BQUEwaEY7S0FBQTd1RSxRQUFBLDZCQUFBdnZCLEtBQUFzdkIsT0FBQWd2RTtLQUFBOXVFLFFBQUEsNkJBQUF4dkIsS0FBQXV2QixPQUFBOHVFO0tBQUE1dUUsUUFBQSw2QkFBQXp2QixLQUFBd3ZCLE9BQUFtM0s7S0FBQWozSyxRQUFBLDZCQUFBMXZCLEtBQUF5dkIsT0FBQWkzSztLQUFBLzJLLFFBQUEsNkJBQUEzdkIsS0FBQTB2QixPQUFBKzJLO0tBQUE3MkssU0FBQSw2QkFBQTV2QixLQUFBMnZCLE9BQUE2Mks7S0FBQTMySyxTQUFBLDZCQUFBN3ZCLEtBQUE0dkIsUUFBQTIySztLQUFBejJLLFNBQUEsNkJBQUE5dkIsS0FBQTZ2QixRQUFBeTJLO0tBQUF2MkssU0FBQSw2QkFBQS92QixLQUFBOHZCLFFBQUF1Mks7S0FBQXIySyxTQUFBLDZCQUFBaHdCLEtBQUErdkIsUUFBQXEySztJQUFBLE9BQUEsNkJBQUFwbU0sS0FBQWd3QixRQUFBbTJLOztHQUFBLElBQUEzOEwscUJBQUFGLGNBQUFDO1lBQUFFLGFBQUF6SixLQUFBQyxTQUFBQztJQUFBO2tFQUFBRDtHQWtCK0M7WUFsQi9DeUosYUFBQTFKLEtBQUFDO0lBQ0k7S0FBQW1uTSxnQkFBQSw2QkFESnBuTSxLQUFBQztLQUVJb25NLG1CQUFBLDZCQUZKcm5NLEtBQUFDO0tBR0lxbk0sZ0JBQUEsNkJBSEp0bk0sS0FBQUM7S0FJSXNuTSxzQkFBQSw2QkFKSnZuTSxLQUFBQztLQUtJdW5NLHNCQUFBLDZCQUxKeG5NLEtBQUFDO0tBTUl3bk0sZUFBQSw2QkFOSnpuTSxLQUFBQztLQU9JeW5NLGdCQUFBLDZCQVBKMW5NLEtBQUFDO0tBUUkwbk0sZUFBQSw2QkFSSjNuTSxLQUFBQztLQVNJMm5NLGdCQUFBLDZCQVRKNW5NLEtBQUFDO0tBVUk0bk0sZUFBQSw2QkFWSjduTSxLQUFBQztLQVdJNm5NLGdCQUFBLDZCQVhKOW5NLEtBQUFDO0tBWUk4bk0saUJBQUEsNkJBWkovbk0sS0FBQUM7S0FhSStuTSxjQUFBLDZCQWJKaG9NLEtBQUFDO0tBY0lnb00sZ0JBQUEsNkJBZEpqb00sS0FBQUM7S0FlSWlvTSxtQkFBQSw2QkFmSmxvTSxLQUFBQztLQWdCSWtvTSxlQUFBLDZCQWhCSm5vTSxLQUFBQztJQUFBO1lBQ0ltbk07WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7O0dBaEJKO0lBQUF4K0wscUJBQUFELGNBQUFEO0lBQUFHLGNBQUtQLGVBQUxHLGdCQUFBRztZQUFBRSxVQUFBeTFELE9BQUFDO0lBQ2tCLEdBQUEsK0JBRGxCRCxPQUFBQyxRQUNrQjtJQUFBLElBQUEvMUMsSUFBQSw0QkFEbEI4MUMsVUFBQUM7YUFDa0IvMUMsR0FBQSxPQUFBQTtJQUNHLElBQUFDLE1BQUEsNEJBRnJCNjFDLFVBQUFDO2FBRXFCOTFDLEtBQUEsT0FBQUE7SUFDSCxJQUFBQyxNQUFBLDRCQUhsQjQxQyxVQUFBQzthQUdrQjcxQyxLQUFBLE9BQUFBO0lBQ00sSUFBQXFuRyxNQUFBLDRCQUp4Qnp4RCxVQUFBQzthQUl3Qnd4RCxLQUFBLE9BQUFBO0lBQ0EsSUFBQUMsTUFBQSw0QkFMeEIxeEQsVUFBQUM7YUFLd0J5eEQsS0FBQSxPQUFBQTtJQUNQLElBQUFDLE1BQUEsNEJBTmpCM3hELFVBQUFDO2FBTWlCMHhELEtBQUEsT0FBQUE7SUFDQyxJQUFBbTNFLE1BQUEsNEJBUGxCOW9JLFVBQUFDO2FBT2tCNm9JLEtBQUEsT0FBQUE7SUFDRCxJQUFBQyxNQUFBLDRCQVJqQi9vSSxVQUFBQzthQVFpQjhvSSxLQUFBLE9BQUFBO0lBQ0MsSUFBQUMsTUFBQSw0QkFUbEJocEksVUFBQUM7YUFTa0Irb0ksS0FBQSxPQUFBQTtJQUNELElBQUFDLE1BQUEsNEJBVmpCanBJLFdBQUFDO2FBVWlCZ3BJLEtBQUEsT0FBQUE7SUFDQyxJQUFBQyxNQUFBLDRCQVhsQmxwSSxXQUFBQzthQVdrQmlwSSxLQUFBLE9BQUFBO0lBQ0MsSUFBQUMsT0FBQSw0QkFabkJucEksV0FBQUM7YUFZbUJrcEksTUFBQSxPQUFBQTtJQUNILElBQUFDLE9BQUEsNEJBYmhCcHBJLFdBQUFDO2FBYWdCbXBJLE1BQUEsT0FBQUE7SUFDRSxJQUFBQyxPQUFBLDRCQWRsQnJwSSxXQUFBQzthQWNrQm9wSSxNQUFBLE9BQUFBO0lBQ0csSUFBQUMsT0FBQSw0QkFmckJ0cEksV0FBQUM7aUJBZXFCcXBJOzBDQWZyQnRwSSxXQUFBQztjQWVxQnFwSTtHQWRFO1lBRHZCamtMLFFBQUE1WixPQUFBQztJQUNrQixHQUFBLCtCQURsQkQsT0FBQUMsUUFDa0I7SUFBQSxXQUFBLDRCQURsQkQsVUFBQUM7SUFDa0I7S0FDRyxXQUFBLDRCQUZyQkQsVUFBQUM7S0FFcUI7TUFDSCxXQUFBLDRCQUhsQkQsVUFBQUM7TUFHa0I7T0FDTSxXQUFBLDRCQUp4QkQsVUFBQUM7T0FJd0I7UUFDQSxXQUFBLDRCQUx4QkQsVUFBQUM7UUFLd0I7U0FDUCxXQUFBLDRCQU5qQkQsVUFBQUM7U0FNaUI7VUFDQyxXQUFBLDRCQVBsQkQsVUFBQUM7VUFPa0I7V0FDRCxXQUFBLDRCQVJqQkQsVUFBQUM7V0FRaUI7WUFDQyxXQUFBLDRCQVRsQkQsVUFBQUM7WUFTa0I7YUFDRCxXQUFBLDRCQVZqQkQsV0FBQUM7YUFVaUI7Y0FDQyxXQUFBLDRCQVhsQkQsV0FBQUM7Y0FXa0I7ZUFDQyxXQUFBLDRCQVpuQkQsV0FBQUM7ZUFZbUI7Z0JBQ0gsV0FBQSw0QkFiaEJELFdBQUFDO2dCQWFnQjtpQkFDRSxXQUFBLDRCQWRsQkQsV0FBQUM7aUJBY2tCO2tCQUNHOzBCQUFBLDRCQWZyQkQsV0FBQUM7a0JBZXFCO3NEQWZyQkQsV0FBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZXFCO0dBZEU7WUFEdkJoQixjQUFBakosS0FBQUM7O0tBQUEyTCxvQ0FBQTVMLEtBQUFDO0tBQUE0cUIsb0NBQUFqZixPQUFBM0w7S0FBQTZxQixvQ0FBQUQsT0FBQTVxQjtLQUFBODZMLG9DQUFBandLLE9BQUE3cUI7S0FBQSs2TCxvQ0FBQUQsT0FBQTk2TDtLQUFBaTdMLG9DQUFBRixPQUFBLzZMO0tBQUFvN0wsb0NBQUFILE9BQUFqN0w7S0FBQXE3TCxvQ0FBQUQsT0FBQXA3TDtLQUFBczdMLG9DQUFBRCxPQUFBcjdMO0tBQUF3N0wsb0NBQUFGLE9BQUF0N0w7S0FBQTZuTSxxQ0FBQXJNLE9BQUF4N0w7S0FBQThuTSxxQ0FBQUQsUUFBQTduTTtLQUFBK25NLHFDQUFBRCxRQUFBOW5NO0tBQUFnb00scUNBQUFELFFBQUEvbk07S0FBQWlvTSxxQ0FBQUQsUUFBQWhvTTt1Q0FBQWlvTSxRQUFBam9NOztHQUFBLFNBQUFpSixPQUFBako7SUFBQSxJQUFBRCw4Q0FBQWlKLGNBQUFqSixLQUFBQzs7R0FrQitDO0dBbEIvQyxTQUFBa0osWUFBQWcvTDtJLFNBQUFBO0tBQUEsT0FBQTs0Q0FBQWxELGtCQUFBa0Q7SUFBQTtLQUFBQyxrQkFBQUQ7S0FDSUU7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FoQkpDO0tBQUFDO2FBQUFDO0tBQUE7S0FBQTtvQkFBQTtVQUFBQztlQUFBQTtrQkFBQUE7Ozs7O2FBQUFDLDJCQUFBQztZQUFBRCxtQkFBQUE7O1VBQUFFO1VBQUFDO3FCQUFBSDtzQkFBQUk7Y0FBQSxLQUFBSjtlQUFBLE9BQUE7c0RBQUF4RSxrQkFBQWtEO2lCQUFBc0I7ZUFBQSxNQUFBO2tCQUFBSyxRQUFBTDtjQUFBLE9BQUFLO2FBa0IrQztvQkFsQi9DRDs7VUFBQUEsaUJBQUFELGtCQUFBSDt5Q0FBQUM7Ozs7Ozs7cUNBQUFBO3NDQUFBQTs7c0NBQUFBO3dDQUFBQTs7d0NBQUFBOzBDQUFBQTs7MENBQUFBOztzQkFlSVA7b0JBZkpFLHdCQUFBSyxnQkFBQUw7O29CQWVJO3FCQWZKVSxtQkFBQUY7cUJBZUlHLGFBQUEsNEJBZkpEO29CQWVJWiw0QkFBQWE7OzswQkFDQVo7bUJBaEJKQyx3QkFBQUssZ0JBQUFMOzttQkFnQkk7b0JBaEJKWSxtQkFBQUo7b0JBZ0JJSyxhQUFBLDRCQWhCSkQ7bUJBZ0JJYix3QkFBQWM7O3lCQWRBNUI7a0JBRkplLHdCQUFBSyxnQkFBQUw7O2tCQUVJO21CQUZKYyxtQkFBQU47bUJBRUlsdEcsYUFBQSw0QkFGSnd0RztrQkFFSTdCLDRCQUFBM3JHOzt3QkFEQTByRztpQkFESmdCLHdCQUFBSyxnQkFBQUw7O2lCQUNJO2tCQURKZSxtQkFBQVA7a0JBQ0lRLGFBQUEsNEJBREpEO2lCQUNJL0IseUJBQUFnQzs7dUJBR0E3QjtnQkFKSmEsd0JBQUFLLGdCQUFBTDs7Z0JBSUk7aUJBSkppQixtQkFBQVQ7aUJBSUlVLGFBQUEsNEJBSkpEO2dCQUlJOUIsK0JBQUErQjs7c0JBREFoQztlQUhKYyx3QkFBQUssZ0JBQUFMOztlQUdJO2dCQUhKbUIsbUJBQUFYO2dCQUdJaHRHLGFBQUEsNEJBSEoydEc7ZUFHSWpDLHlCQUFBMXJHOztxQkFFQTRyRztjQUxKWSx3QkFBQUssZ0JBQUFMOztjQUtJO2VBTEpvQixtQkFBQVo7ZUFLSWEsYUFBQSw0QkFMSkQ7Y0FLSWhDLCtCQUFBaUM7O29CQUdBOUI7YUFSSlMsd0JBQUFLLGdCQUFBTDs7YUFRSTtjQVJKc0IsbUJBQUFkO2NBUUllLGFBQUEsNEJBUkpEO2FBUUkvQix3QkFBQWdDOzt3Q0FSSmxCO29DQUFBQTtxQ0FBQUE7c0NBQUFBO3VDQUFBQTt3Q0FBQUE7eUNBQUFBOzBDQUFBQTs7cUJBU0liO21CQVRKUSx3QkFBQUssZ0JBQUFMOzttQkFTSTtvQkFUSndCLG1CQUFBaEI7b0JBU0lpQixhQUFBLDRCQVRKRDttQkFTSWhDLHlCQUFBaUM7Ozt5QkFHQTlCO2tCQVpKSyx3QkFBQUssZ0JBQUFMOztrQkFZSTttQkFaSjBCLG1CQUFBbEI7bUJBWUltQixhQUFBLDRCQVpKRDtrQkFZSS9CLDBCQUFBZ0M7O3dCQU5BdEM7aUJBTkpXLHdCQUFBSyxnQkFBQUw7O2lCQU1JO2tCQU5KNEIsb0JBQUFwQjtrQkFNSXFCLGFBQUEsNEJBTkpEO2lCQU1JdkMsd0JBQUF3Qzs7dUJBQ0F2QztnQkFQSlUsd0JBQUFLLGdCQUFBTDs7Z0JBT0k7aUJBUEo4QixvQkFBQXRCO2lCQU9JdUIsYUFBQSw0QkFQSkQ7Z0JBT0l4Qyx5QkFBQXlDOztzQkFHQXRDO2VBVkpPLHdCQUFBSyxnQkFBQUw7O2VBVUk7Z0JBVkpnQyxvQkFBQXhCO2dCQVVJeUIsYUFBQSw0QkFWSkQ7ZUFVSXZDLHdCQUFBd0M7O3FCQUNBdkM7Y0FYSk0sd0JBQUFLLGdCQUFBTDs7Y0FXSTtlQVhKa0Msb0JBQUExQjtlQVdJMkIsYUFBQSw0QkFYSkQ7Y0FXSXhDLHlCQUFBeUM7O29CQUVBdkM7YUFiSkksd0JBQUFLLGdCQUFBTDs7YUFhSTtjQWJKb0Msb0JBQUE1QjtjQWFJNkIsYUFBQSw0QkFiSkQ7YUFhSXhDLHVCQUFBeUM7O21CQUNBeEM7WUFkSkcsd0JBQUFLLGdCQUFBTDs7WUFjSTthQWRKc0Msb0JBQUE5QjthQWNJK0IsYUFBQSw0QkFkSkQ7WUFjSXpDLHlCQUFBMEM7Ozs7O1dBZEp0QyxtQkFBQUksZ0JBQUFKOzt1QkFBQUs7Ozs7O01BQUEsT0FBQTs2Q0FBQTFFLGtCQUFBdUU7O0lBa0IrQztJQWxCL0NELFNBQUFuQjtPQUFBaUI7S0FBQSxPQUFBOztjQUFBcEU7Y0FBQW9FO2NBQUFsQjtPQUFBbUI7S0FBQSxPQUFBOztjQUFBckU7Y0FBQXFFO2NBQUFuQjs7WUFDSUU7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7YUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFBQXlDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO0tBREo7YUFDSUE7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7O0lBaEJKLE9BQUE7O2FBQUE1RzthQUFBa0Q7O3dCQUNJRTs7eUJBQ0FDOzswQkFDQUM7Ozt3QkFDQUM7Ozs7eUJBQ0FDOzs7NkJBQ0FDOzs4QkFDQUM7OytCQUNBQzs7Z0NBQ0FDOztpQ0FDQUM7O2tDQUNBQzs7bUNBQ0FDOztvQ0FDQUM7O3FDQUNBQzs7O21DQUNBQzs7O3VDQUNBQzs7O1lBaEJKLy9MO0lBZ0JJO0tBQUF3ak07S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FlQTcxRCxVQUFBLDRCQUFBODBEO0tBaEJKZ0IsZ0NBZ0JJOTFEO0tBREErMUQsVUFBQSw0QkFBQWhCO0tBZkppQixrQ0FlSUQsZUFmSkQ7S0FjSUcsVUFBQSw0QkFBQWpCO0tBZEprQixrQ0FjSUQsZUFkSkQ7S0FhSUcsVUFBQSw0QkFBQWxCO0tBYkptQixrQ0FhSUQsZUFiSkQ7S0FZSUcsVUFBQSw0QkFBQW5CO0tBWkpvQixrQ0FZSUQsZUFaSkQ7S0FXSUcsVUFBQSw0QkFBQXBCO0tBWEpxQixrQ0FXSUQsZUFYSkQ7S0FVSUcsVUFBQSw0QkFBQXJCO0tBVkpzQixrQ0FVSUQsZUFWSkQ7S0FTSUcsVUFBQSw0QkFBQXRCO0tBVEp1QixrQ0FTSUQsZUFUSkQ7S0FRSUcsVUFBQSw0QkFBQXZCO0tBUkp3QixrQ0FRSUQsZUFSSkQ7S0FPSUcsVUFBQSw0QkFBQXhCO0tBUEp5QixrQ0FPSUQsZUFQSkQ7S0FNSUcsVUFBQSw0QkFBQXpCO0tBTkowQixrQ0FNSUQsZUFOSkQ7S0FLSUcsVUFBQSw0QkFBQTFCO0tBTEoyQixtQ0FLSUQsZUFMSkQ7S0FJSUcsVUFBQSw0QkFBQTNCO0tBSko0QixtQ0FJSUQsZUFKSkQ7S0FHSUcsVUFBQSw0QkFBQTVCO0tBSEo2QixtQ0FHSUQsZUFISkQ7S0FFSUcsVUFBQSw0QkFBQTdCO0tBRko4QixtQ0FFSUQsZUFGSkQ7S0FDSUcsVUFBQSw0QkFBQTlCO0tBREorQixtQ0FDSUQsZUFESkQ7SUFBQSxXQUFBRTs7R0FzQks7SUFBQTtNQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFMLGNBQUs7SUFBTCxNQUFBO0lBQUFybU0sVUFBQTtJQUFBLE1BQUE7SUFBS0M7TUFBTCxXQUFBLCtCQUFBRDtZQUFBRTtJQUFBO0tBQUFvbU07S0FBQXhLO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUF0b0c7S0FBQUM7S0FBQUY7S0FBQXAxRTtLQUFBQztLQUFBak47S0FBQXZXO0tBQUEsT0FBQSw2QkFBQUE7S0FBQXdXLE9BQUE7S0FBQSxPQUFBLDZCQUFBRDtLQUFBa04sU0FBQSxnQ0FBQWpOO0tBQUEsT0FBQSw2QkFBQWdOO0tBQUFFLFNBQUEsZ0NBQUFEO0tBQUEsT0FBQSw2QkFBQUY7S0FBQThGLFNBQUEsZ0NBQUEzRjtLQUFBLE9BQUEsNkJBQUFpMUU7S0FBQXJ2RSxTQUFBLGdDQUFBRDtLQUFBLE9BQUEsNkJBQUF3dkU7S0FBQXB2RSxTQUFBLGdDQUFBSDtLQUFBLE9BQUEsNkJBQUFzdkU7S0FBQWh2RSxTQUFBLGdDQUFBSDtLQUFBLE9BQUEsNkJBQUF5M0s7S0FBQUMsU0FBQSxnQ0FBQXYzSztLQUFBLE9BQUEsNkJBQUFxM0s7S0FBQUcsU0FBQSxnQ0FBQUQ7S0FBQSxPQUFBLDZCQUFBSDtLQUFBSyxTQUFBLGdDQUFBRDtLQUFBLE9BQUEsNkJBQUFMO0tBQUFPLFNBQUEsZ0NBQUFEO0tBQUEsT0FBQSw2QkFBQVA7S0FBQVMsVUFBQSxnQ0FBQUQ7S0FBQSxPQUFBLDZCQUFBVDtLQUFBVyxVQUFBLGdDQUFBRDtLQUFBLE9BQUEsNkJBQUFYO0tBQUFhLFVBQUEsZ0NBQUFEO0tBQUEsT0FBQSw2QkFBQWI7S0FBQWUsVUFBQSxnQ0FBQUQ7S0FBQSxPQUFBLDZCQUFBZjtLQUFBeUssVUFBQSxnQ0FBQXpKO0tBQUEsT0FBQSw2QkFBQXdKO0lBQUEsT0FBQSxnQ0FBQUM7O1lBQUFwbU0sY0FBQXhLLEtBQUE0RjtJQUFBO0tBQUErcU07S0FBQXhLO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUF0b0c7S0FBQUM7S0FBQUY7S0FBQXAxRTtLQUFBQztLQUFBak47S0FBQXZXO0tBQUFJLFFBQUEsNkJBQUE3RixLQUFBNEYsS0FBQUg7S0FBQUssUUFBQSw2QkFBQTlGLEtBQUE2RixPQUFBbVc7S0FBQUcsUUFBQSw2QkFBQW5jLEtBQUE4RixPQUFBbWpCO0tBQUF2TSxRQUFBLDZCQUFBMWMsS0FBQW1jLE9BQUE2TTtLQUFBc0csUUFBQSw2QkFBQXR2QixLQUFBMGMsT0FBQTBoRjtLQUFBN3VFLFFBQUEsNkJBQUF2dkIsS0FBQXN2QixPQUFBZ3ZFO0tBQUE5dUUsUUFBQSw2QkFBQXh2QixLQUFBdXZCLE9BQUE4dUU7S0FBQTV1RSxRQUFBLDZCQUFBenZCLEtBQUF3dkIsT0FBQW0zSztLQUFBajNLLFFBQUEsNkJBQUExdkIsS0FBQXl2QixPQUFBaTNLO0tBQUEvMkssUUFBQSw2QkFBQTN2QixLQUFBMHZCLE9BQUErMks7S0FBQTcySyxTQUFBLDZCQUFBNXZCLEtBQUEydkIsT0FBQTYySztLQUFBMzJLLFNBQUEsNkJBQUE3dkIsS0FBQTR2QixRQUFBMjJLO0tBQUF6MkssU0FBQSw2QkFBQTl2QixLQUFBNnZCLFFBQUF5Mks7S0FBQXYySyxTQUFBLDZCQUFBL3ZCLEtBQUE4dkIsUUFBQXUySztLQUFBcjJLLFNBQUEsNkJBQUFod0IsS0FBQSt2QixRQUFBcTJLO0tBQUFuMkssU0FBQSw2QkFBQWp3QixLQUFBZ3dCLFFBQUFtMks7SUFBQSxPQUFBLDZCQUFBbm1NLEtBQUFpd0IsUUFBQTBnTDs7R0FBQSxJQUFBbG1NLHFCQUFBRixjQUFBQztZQUFBRSxhQUFBMUssS0FBQUMsU0FBQUM7SUFBQTs7O2FBQUFEO0dBbUIrQztZQW5CL0MwSyxhQUFBM0ssS0FBQUM7SUFDSTtLQUFBbW5NLGdCQUFBLDZCQURKcG5NLEtBQUFDO0tBRUlvbk0sbUJBQUEsNkJBRkpybk0sS0FBQUM7S0FHSXFuTSxnQkFBQSw2QkFISnRuTSxLQUFBQztLQUlJc25NLHNCQUFBLDZCQUpKdm5NLEtBQUFDO0tBS0l1bk0sc0JBQUEsNkJBTEp4bk0sS0FBQUM7S0FNSXduTSxlQUFBLDZCQU5Kem5NLEtBQUFDO0tBT0l5bk0sZ0JBQUEsNkJBUEoxbk0sS0FBQUM7S0FRSTBuTSxlQUFBLDZCQVJKM25NLEtBQUFDO0tBU0kybk0sZ0JBQUEsNkJBVEo1bk0sS0FBQUM7S0FVSTRuTSxlQUFBLDZCQVZKN25NLEtBQUFDO0tBV0k2bk0sZ0JBQUEsNkJBWEo5bk0sS0FBQUM7S0FZSThuTSxpQkFBQSw2QkFaSi9uTSxLQUFBQztLQWFJK25NLGNBQUEsNkJBYkpob00sS0FBQUM7S0FjSWdvTSxnQkFBQSw2QkFkSmpvTSxLQUFBQztLQWVJaW9NLG1CQUFBLDZCQWZKbG9NLEtBQUFDO0tBZ0JJa29NLGVBQUEsNkJBaEJKbm9NLEtBQUFDO0tBaUJJNHdNLDZCQUFBLDZCQWpCSjd3TSxLQUFBQztJQUFBO1lBQ0ltbk07WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQTBJOztHQWpCSjtJQUFBam1NLHFCQUFBRCxjQUFBRDtJQUFBRyxjQUFLUCxlQUFMRyxnQkFBQUc7WUFBQUUsVUFBQWdtTSxPQUFBQztJQUNrQixHQUFBLCtCQURsQkQsT0FBQUMsUUFDa0I7SUFBQSxJQUFBdm5MLElBQUEsNEJBRGxCc25MLFVBQUFDO2FBQ2tCdm5MLEdBQUEsT0FBQUE7SUFDRyxJQUFBQyxNQUFBLDRCQUZyQnFuTCxVQUFBQzthQUVxQnRuTCxLQUFBLE9BQUFBO0lBQ0gsSUFBQUMsTUFBQSw0QkFIbEJvbkwsVUFBQUM7YUFHa0JybkwsS0FBQSxPQUFBQTtJQUNNLElBQUFxbkcsTUFBQSw0QkFKeEIrL0UsVUFBQUM7YUFJd0JoZ0YsS0FBQSxPQUFBQTtJQUNBLElBQUFDLE1BQUEsNEJBTHhCOC9FLFVBQUFDO2FBS3dCLy9FLEtBQUEsT0FBQUE7SUFDUCxJQUFBQyxNQUFBLDRCQU5qQjYvRSxVQUFBQzthQU1pQjkvRSxLQUFBLE9BQUFBO0lBQ0MsSUFBQW0zRSxNQUFBLDRCQVBsQjBJLFVBQUFDO2FBT2tCM0ksS0FBQSxPQUFBQTtJQUNELElBQUFDLE1BQUEsNEJBUmpCeUksVUFBQUM7YUFRaUIxSSxLQUFBLE9BQUFBO0lBQ0MsSUFBQUMsTUFBQSw0QkFUbEJ3SSxVQUFBQzthQVNrQnpJLEtBQUEsT0FBQUE7SUFDRCxJQUFBQyxNQUFBLDRCQVZqQnVJLFdBQUFDO2FBVWlCeEksS0FBQSxPQUFBQTtJQUNDLElBQUFDLE1BQUEsNEJBWGxCc0ksV0FBQUM7YUFXa0J2SSxLQUFBLE9BQUFBO0lBQ0MsSUFBQUMsT0FBQSw0QkFabkJxSSxXQUFBQzthQVltQnRJLE1BQUEsT0FBQUE7SUFDSCxJQUFBQyxPQUFBLDRCQWJoQm9JLFdBQUFDO2FBYWdCckksTUFBQSxPQUFBQTtJQUNFLElBQUFDLE9BQUEsNEJBZGxCbUksV0FBQUM7YUFja0JwSSxNQUFBLE9BQUFBO0lBQ0csSUFBQUMsT0FBQSw0QkFmckJrSSxXQUFBQzthQWVxQm5JLE1BQUEsT0FBQUE7SUFDSixJQUFBb0ksT0FBQSw0QkFoQmpCRixXQUFBQztpQkFnQmlCQzswQ0FoQmpCRixXQUFBQztjQWdCaUJDO0dBZk07WUFEdkI3ckwsUUFBQThyTCxPQUFBQztJQUNrQixHQUFBLCtCQURsQkQsT0FBQUMsUUFDa0I7SUFBQSxXQUFBLDRCQURsQkQsVUFBQUM7SUFDa0I7S0FDRyxXQUFBLDRCQUZyQkQsVUFBQUM7S0FFcUI7TUFDSCxXQUFBLDRCQUhsQkQsVUFBQUM7TUFHa0I7T0FDTSxXQUFBLDRCQUp4QkQsVUFBQUM7T0FJd0I7UUFDQSxXQUFBLDRCQUx4QkQsVUFBQUM7UUFLd0I7U0FDUCxXQUFBLDRCQU5qQkQsVUFBQUM7U0FNaUI7VUFDQyxXQUFBLDRCQVBsQkQsVUFBQUM7VUFPa0I7V0FDRCxXQUFBLDRCQVJqQkQsVUFBQUM7V0FRaUI7WUFDQyxXQUFBLDRCQVRsQkQsVUFBQUM7WUFTa0I7YUFDRCxXQUFBLDRCQVZqQkQsV0FBQUM7YUFVaUI7Y0FDQyxXQUFBLDRCQVhsQkQsV0FBQUM7Y0FXa0I7ZUFDQyxXQUFBLDRCQVpuQkQsV0FBQUM7ZUFZbUI7Z0JBQ0gsV0FBQSw0QkFiaEJELFdBQUFDO2dCQWFnQjtpQkFDRSxXQUFBLDRCQWRsQkQsV0FBQUM7aUJBY2tCO2tCQUNHOzBCQUFBLDRCQWZyQkQsV0FBQUM7a0JBZXFCO21CQUNKOzJCQUFBLDRCQWhCakJELFdBQUFDO21CQWdCaUI7dURBaEJqQkQsV0FBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBZ0JpQjtHQWZNO1lBRHZCam1NLGNBQUFsSyxLQUFBQzs7S0FBQTJMLG9DQUFBNUwsS0FBQUM7S0FBQTRxQixvQ0FBQWpmLE9BQUEzTDtLQUFBNnFCLG9DQUFBRCxPQUFBNXFCO0tBQUE4Nkwsb0NBQUFqd0ssT0FBQTdxQjtLQUFBKzZMLG9DQUFBRCxPQUFBOTZMO0tBQUFpN0wsb0NBQUFGLE9BQUEvNkw7S0FBQW83TCxvQ0FBQUgsT0FBQWo3TDtLQUFBcTdMLG9DQUFBRCxPQUFBcDdMO0tBQUFzN0wsb0NBQUFELE9BQUFyN0w7S0FBQXc3TCxvQ0FBQUYsT0FBQXQ3TDtLQUFBNm5NLHFDQUFBck0sT0FBQXg3TDtLQUFBOG5NLHFDQUFBRCxRQUFBN25NO0tBQUErbk0scUNBQUFELFFBQUE5bk07S0FBQWdvTSxxQ0FBQUQsUUFBQS9uTTtLQUFBaW9NLHFDQUFBRCxRQUFBaG9NO0tBQUFtd00scUNBQUFsSSxRQUFBam9NO3VDQUFBbXdNLFFBQUFud007O0dBQUEsU0FBQWtLLE9BQUFsSztJQUFBLElBQUFELDhDQUFBa0ssY0FBQWxLLEtBQUFDOztHQW1CK0M7R0FuQi9DLFNBQUFtSyxZQUFBaW1NO0ksU0FBQUE7S0FBQSxPQUFBOzRDQUFBbkwsa0JBQUFtTDtJQUFBO0tBQUFDLGtCQUFBRDtLQUNJRTtLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQWpCSkM7S0FBQUM7YUFBQUM7S0FBQTtLQUFBO29CQUFBO1VBQUFDO2VBQUFBO2tCQUFBQTs7Ozs7YUFBQUMsMkJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTtjQUFBLEtBQUFKO2VBQUEsT0FBQTtzREFBQTFNLGtCQUFBbUw7aUJBQUF1QjtlQUFBLE1BQUE7a0JBQUFLLFFBQUFMO2NBQUEsT0FBQUs7YUFtQitDO29CQW5CL0NEOztVQUFBQSxpQkFBQUQsa0JBQUFIO3lDQUFBQzs7Ozs7OztxQ0FBQUE7O3FDQUFBQTt1Q0FBQUE7OztvQkFBQUE7eUNBQUFBOzt5Q0FBQUE7MkNBQUFBOzsyQ0FBQUE7O3VCQWVJUjtxQkFmSkcsd0JBQUFLLGdCQUFBTDs7cUJBZUk7c0JBZkpVLG1CQUFBRjtzQkFlSUcsYUFBQSw0QkFmSkQ7cUJBZUliLDRCQUFBYzs7OzJCQUNBYjtvQkFoQkpFLHdCQUFBSyxnQkFBQUw7O29CQWdCSTtxQkFoQkpZLG1CQUFBSjtxQkFnQklLLGFBQUEsNEJBaEJKRDtvQkFnQklkLHdCQUFBZTs7MEJBZEE3QjttQkFGSmdCLHdCQUFBSyxnQkFBQUw7O21CQUVJO29CQUZKYyxtQkFBQU47b0JBRUlwZ0QsYUFBQSw0QkFGSjBnRDttQkFFSTlCLDRCQUFBNStDOzt5QkFEQTIrQztrQkFESmlCLHdCQUFBSyxnQkFBQUw7O2tCQUNJO21CQURKZSxtQkFBQVA7bUJBQ0kxZ0QsYUFBQSw0QkFESmloRDtrQkFDSWhDLHlCQUFBai9DOzt3QkFHQW8vQztpQkFKSmMsd0JBQUFLLGdCQUFBTDs7aUJBSUk7a0JBSkpnQixtQkFBQVI7a0JBSUlTLGFBQUEsNEJBSkpEO2lCQUlJOUIsK0JBQUErQjs7dUJBREFoQztnQkFISmUsd0JBQUFLLGdCQUFBTDs7Z0JBR0k7aUJBSEprQixtQkFBQVY7aUJBR0lXLGFBQUEsNEJBSEpEO2dCQUdJakMseUJBQUFrQzs7c0JBRUFoQztlQUxKYSx3QkFBQUssZ0JBQUFMOztlQUtJO2dCQUxKb0IsbUJBQUFaO2dCQUtJYSxhQUFBLDRCQUxKRDtlQUtJakMsK0JBQUFrQzs7cUJBR0EvQjtjQVJKVSx3QkFBQUssZ0JBQUFMOztjQVFJO2VBUkpzQixtQkFBQWQ7ZUFRSWUsYUFBQSw0QkFSSkQ7Y0FRSWhDLHdCQUFBaUM7O29CQUNBaEM7YUFUSlMsd0JBQUFLLGdCQUFBTDs7YUFTSTtjQVRKd0IsbUJBQUFoQjtjQVNJaUIsYUFBQSw0QkFUSkQ7YUFTSWpDLHlCQUFBa0M7O3dDQVRKcEI7OztnQkFBQUE7cUNBQUFBO3NDQUFBQTt1Q0FBQUE7d0NBQUFBO3lDQUFBQTswQ0FBQUE7O3FCQVlJWDttQkFaSk0sd0JBQUFLLGdCQUFBTDs7bUJBWUk7b0JBWkowQixtQkFBQWxCO29CQVlJbUIsYUFBQSw0QkFaSkQ7bUJBWUloQywwQkFBQWlDOzs7eUJBTkF2QztrQkFOSlksd0JBQUFLLGdCQUFBTDs7a0JBTUk7bUJBTko0QixvQkFBQXBCO21CQU1JcUIsYUFBQSw0QkFOSkQ7a0JBTUl4Qyx3QkFBQXlDOzt3QkFDQXhDO2lCQVBKVyx3QkFBQUssZ0JBQUFMOztpQkFPSTtrQkFQSjhCLG9CQUFBdEI7a0JBT0l1QixhQUFBLDRCQVBKRDtpQkFPSXpDLHlCQUFBMEM7O3VCQUdBdkM7Z0JBVkpRLHdCQUFBSyxnQkFBQUw7O2dCQVVJO2lCQVZKZ0Msb0JBQUF4QjtpQkFVSXlCLGFBQUEsNEJBVkpEO2dCQVVJeEMsd0JBQUF5Qzs7c0JBQ0F4QztlQVhKTyx3QkFBQUssZ0JBQUFMOztlQVdJO2dCQVhKa0Msb0JBQUExQjtnQkFXSTJCLGFBQUEsNEJBWEpEO2VBV0l6Qyx5QkFBQTBDOztxQkFFQXhDO2NBYkpLLHdCQUFBSyxnQkFBQUw7O2NBYUk7ZUFiSm9DLG9CQUFBNUI7ZUFhSTZCLGFBQUEsNEJBYkpEO2NBYUl6Qyx1QkFBQTBDOztvQkFJQXRDO2FBakJKQyx3QkFBQUssZ0JBQUFMOzthQWlCSTtjQWpCSnNDLG9CQUFBOUI7Y0FpQkkrQixhQUFBLDRCQWpCSkQ7YUFpQkl2QyxzQ0FBQXdDOzttQkFIQTNDO1lBZEpJLHdCQUFBSyxnQkFBQUw7O1lBY0k7YUFkSndDLG9CQUFBaEM7YUFjSWlDLGFBQUEsNEJBZEpEO1lBY0k1Qyx5QkFBQTZDOzs7OztXQWRKeEMsbUJBQUFJLGdCQUFBSjs7dUJBQUFLOzs7OztNQUFBLE9BQUE7NkNBQUE1TSxrQkFBQXlNOztJQW1CK0M7SUFuQi9DRCxTQUFBcEI7T0FBQWtCO0tBQUEsT0FBQTs7Y0FBQXRNO2NBQUFzTTtjQUFBbkI7T0FBQW9CO0tBQUEsT0FBQTs7Y0FBQXZNO2NBQUF1TTtjQUFBcEI7O1lBQ0lFO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO2FBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TUFBQTJDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO0tBREo7YUFDSUE7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7O0lBakJKLE9BQUE7O2FBQUFoUDthQUFBbUw7O3dCQUNJRTs7eUJBQ0FDOzswQkFDQUM7Ozt3QkFDQUM7Ozs7eUJBQ0FDOzs7NkJBQ0FDOzs4QkFDQUM7OytCQUNBQzs7Z0NBQ0FDOztpQ0FDQUM7O2tDQUNBQzs7bUNBQ0FDOztvQ0FDQUM7O3FDQUNBQzs7O21DQUNBQzs7O3VDQUNBQzs7O3FDQUNBQzs7OztZQWpCSjdtTTtJQWlCSTtLQUFBeXFNO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBZ0JBQyxVQUFBLDRCQUFBakI7S0FqQkprQixnQ0FpQklEO0tBREFFLFVBQUEsNEJBQUFsQjtLQWhCSm1CLGtDQWdCSUQsZUFoQkpEO0tBZUlHLFVBQUEsNEJBQUFuQjtLQWZKb0Isa0NBZUlELGVBZkpEO0tBY0lHLFVBQUEsNEJBQUFwQjtLQWRKcUIsa0NBY0lELGVBZEpEO0tBYUlHLFVBQUEsNEJBQUFyQjtLQWJKc0Isa0NBYUlELGVBYkpEO0tBWUlHLFVBQUEsNEJBQUF0QjtLQVpKdUIsa0NBWUlELGVBWkpEO0tBV0lHLFVBQUEsNEJBQUF2QjtLQVhKd0Isa0NBV0lELGVBWEpEO0tBVUlHLFVBQUEsNEJBQUF4QjtLQVZKeUIsa0NBVUlELGVBVkpEO0tBU0lHLFVBQUEsNEJBQUF6QjtLQVRKMEIsa0NBU0lELGVBVEpEO0tBUUlHLFVBQUEsNEJBQUExQjtLQVJKMkIsa0NBUUlELGVBUkpEO0tBT0lHLFVBQUEsNEJBQUEzQjtLQVBKNEIsa0NBT0lELGVBUEpEO0tBTUlobEQsVUFBQSw0QkFBQXVqRDtLQU5KNEIsbUNBTUlubEQsZUFOSmtsRDtLQUtJaGxELFVBQUEsNEJBQUFzakQ7S0FMSjRCLG1DQUtJbGxELGVBTEppbEQ7S0FJSTlrRCxVQUFBLDRCQUFBb2pEO0tBSko0QixtQ0FJSWhsRCxlQUpKK2tEO0tBR0lFLFVBQUEsNEJBQUE1QjtLQUhKNkIsbUNBR0lELGVBSEpEO0tBRUk3a0QsVUFBQSw0QkFBQW1qRDtLQUZKNkIsbUNBRUlobEQsZUFGSitrRDtLQUNJRSxVQUFBLDRCQUFBN0I7S0FESjhCLG1DQUNJRCxlQURKRDtJQUFBLFdBQUFFOztHQW9ESztJQUFBO01BQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUwsY0FBSztJQUFMLE1BQUE7SUFBQXR0TSxVQUFBO0lBQUEsT0FBQTtJQUFLQztNQUFMLFdBQUEsK0JBQUFEO1lBQUFFO0lBQUE7S0FBQTQ2TDtLQUFBQztLQUFBQztLQUFBQztLQUFBdG9HO0tBQUFDO0tBQUFGO0tBQUFwMUU7S0FBQUM7S0FBQWpOO0tBQUF2VztLQUFBLE9BQUEsNkJBQUFBO0tBQUF3VyxPQUFBO0tBQUEsT0FBQSw2QkFBQUQ7S0FBQWtOLFNBQUEsZ0NBQUFqTjtLQUFBLE9BQUEsNkJBQUFnTjtLQUFBRSxTQUFBLGdDQUFBRDtLQUFBLE9BQUEsNkJBQUFGO0tBQUE4RixTQUFBLGdDQUFBM0Y7S0FBQSxPQUFBLDZCQUFBaTFFO0tBQUFydkUsU0FBQSxnQ0FBQUQ7S0FBQSxPQUFBLDZCQUFBd3ZFO0tBQUFwdkUsU0FBQSxnQ0FBQUg7S0FBQSxPQUFBLDZCQUFBc3ZFO0tBQUFodkUsU0FBQSxnQ0FBQUg7S0FBQSxPQUFBLDZCQUFBeTNLO0tBQUFDLFNBQUEsZ0NBQUF2M0s7S0FBQSxPQUFBLDZCQUFBcTNLO0tBQUFHLFNBQUEsZ0NBQUFEO0tBQUEsT0FBQSw2QkFBQUg7S0FBQUssU0FBQSxnQ0FBQUQ7S0FBQSxPQUFBLDZCQUFBTDtJQUFBLE9BQUEsZ0NBQUFNO0dBYXlDO1lBYnpDLzZMLGNBQUEvTCxLQUFBNEY7SUFBQTtLQUFBNGdNO0tBQUFDO0tBQUFDO0tBQUFDO0tBQUF0b0c7S0FBQUM7S0FBQUY7S0FBQXAxRTtLQUFBQztLQUFBak47S0FBQXZXO0tBQUFJLFFBQUEsNkJBQUE3RixLQUFBNEYsS0FBQUg7S0FBQUssUUFBQSw2QkFBQTlGLEtBQUE2RixPQUFBbVc7S0FBQUcsUUFBQSw2QkFBQW5jLEtBQUE4RixPQUFBbWpCO0tBQUF2TSxRQUFBLDZCQUFBMWMsS0FBQW1jLE9BQUE2TTtLQUFBc0csUUFBQSw2QkFBQXR2QixLQUFBMGMsT0FBQTBoRjtLQUFBN3VFLFFBQUEsNkJBQUF2dkIsS0FBQXN2QixPQUFBZ3ZFO0tBQUE5dUUsUUFBQSw2QkFBQXh2QixLQUFBdXZCLE9BQUE4dUU7S0FBQTV1RSxRQUFBLDZCQUFBenZCLEtBQUF3dkIsT0FBQW0zSztLQUFBajNLLFFBQUEsNkJBQUExdkIsS0FBQXl2QixPQUFBaTNLO0tBQUEvMkssUUFBQSw2QkFBQTN2QixLQUFBMHZCLE9BQUErMks7SUFBQSxPQUFBLDZCQUFBem1NLEtBQUEydkIsT0FBQTYySzs7R0FBQSxJQUFBeDZMLHFCQUFBSixjQUFBRztZQUFBRSxhQUFBak0sS0FBQUMsU0FBQUM7SUFBQTtrRUFBQUQ7R0FheUM7WUFiekNpTSxhQUFBbE0sS0FBQUM7SUFBQTtLQUNJZzVNLG9CQUFBLDZCQURKajVNLEtBQUFDO0tBRUlpNU0seUJBQUEsNkJBRkpsNU0sS0FBQUM7S0FHSWs1TSxtQkFBQSw2QkFISm41TSxLQUFBQztLQUlJbTVNLFlBQUEsNkJBSkpwNU0sS0FBQUM7S0FLSW81TSxpQkFBQSw2QkFMSnI1TSxLQUFBQztLQU1JcTVNLGdCQUFBLDZCQU5KdDVNLEtBQUFDO0tBT0lzNU0sc0JBQUEsNkJBUEp2NU0sS0FBQUM7S0FRSXU1TSxnQkFBQSw2QkFSSng1TSxLQUFBQztLQVNJdzVNLHVCQUFBLDZCQVRKejVNLEtBQUFDO0tBVUl5NU0sdUJBQUEsNkJBVkoxNU0sS0FBQUM7S0FXSTA1TSwwQkFBQSw2QkFYSjM1TSxLQUFBQztJQUFBO1lBQ0lnNU07WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7R0FFcUM7R0FiekM7SUFBQXh0TSxxQkFBQUQsY0FBQUQ7SUFBQUcsY0FBS1QsZUFBTEssZ0JBQUFHO1lBQUFFLFVBQUF1dE0sT0FBQUM7SUFDc0IsR0FBQSwrQkFEdEJELE9BQUFDLFFBQ3NCO0lBQUEsSUFBQXJ3TCxJQUFBLDRCQUR0Qm93TCxVQUFBQzthQUNzQnJ3TCxHQUFBLE9BQUFBO0lBQ0ssSUFBQUMsTUFBQSw0QkFGM0Jtd0wsVUFBQUM7YUFFMkJwd0wsS0FBQSxPQUFBQTtJQUNOLElBQUFDLE1BQUEsNEJBSHJCa3dMLFVBQUFDO2FBR3FCbndMLEtBQUEsT0FBQUE7SUFDUCxJQUFBcW5HLE1BQUEsNEJBSmQ2b0YsVUFBQUM7YUFJYzlvRixLQUFBLE9BQUFBO0lBQ0ssSUFBQUMsTUFBQSw0QkFMbkI0b0YsVUFBQUM7YUFLbUI3b0YsS0FBQSxPQUFBQTtJQUNELElBQUFDLE1BQUEsNEJBTmxCMm9GLFVBQUFDO2FBTWtCNW9GLEtBQUEsT0FBQUE7SUFDTSxJQUFBbTNFLE1BQUEsNEJBUHhCd1IsVUFBQUM7YUFPd0J6UixLQUFBLE9BQUFBO0lBQ04sSUFBQUMsTUFBQSw0QkFSbEJ1UixVQUFBQzthQVFrQnhSLEtBQUEsT0FBQUE7SUFDTyxJQUFBQyxNQUFBLDRCQVR6QnNSLFVBQUFDO2FBU3lCdlIsS0FBQSxPQUFBQTtJQUNBLElBQUFDLE1BQUEsNEJBVnpCcVIsV0FBQUM7aUJBVXlCdFIsa0NBVnpCcVIsV0FBQUMsYUFVeUJ0UjtHQVRBO1lBRHpCMXNJLFFBQUFpK0ksT0FBQUM7SUFDc0IsR0FBQSwrQkFEdEJELE9BQUFDLFFBQ3NCO0lBQUEsV0FBQSw0QkFEdEJELFVBQUFDO0lBQ3NCO0tBQ0ssV0FBQSw0QkFGM0JELFVBQUFDO0tBRTJCO01BQ04sV0FBQSw0QkFIckJELFVBQUFDO01BR3FCO09BQ1AsV0FBQSw0QkFKZEQsVUFBQUM7T0FJYztRQUNLLFdBQUEsNEJBTG5CRCxVQUFBQztRQUttQjtTQUNELFdBQUEsNEJBTmxCRCxVQUFBQztTQU1rQjtVQUNNLFdBQUEsNEJBUHhCRCxVQUFBQztVQU93QjtXQUNOLFdBQUEsNEJBUmxCRCxVQUFBQztXQVFrQjtZQUNPLFdBQUEsNEJBVHpCRCxVQUFBQztZQVN5QjthQUNBLFdBQUEsNEJBVnpCRCxXQUFBQzthQVV5QjtpREFWekJELFdBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQVV5QjtHQVRBO0dBRHpCLFNBQUF4dU0sWUFBQXl1TTtJLFNBQUFBO0tBQUEsT0FBQTs0Q0FBQTlULGtCQUFBOFQ7SUFBQTtLQUFBQyxrQkFBQUQ7S0FDSUU7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FDQUM7S0FYSkM7S0FBQUM7YUFBQUM7S0FBQTtLQUFBO29CQUFBO1VBQUFDO2VBQUFBO2tCQUFBQTs7Ozs7YUFBQUMsMkJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTtjQUFBLEtBQUFKO2VBQUEsT0FBQTtzREFBQS9VLGtCQUFBOFQ7aUJBQUFpQjtlQUFBLE1BQUE7a0JBQUFLLFFBQUFMO2NBQUEsT0FBQUs7YUFheUM7b0JBYnpDRDs7VUFBQUEsaUJBQUFELGtCQUFBSDt5Q0FBQUM7Ozs7Ozs7cUNBQUFBO3NDQUFBQTt1Q0FBQUE7d0NBQUFBO3lDQUFBQTs7b0JBUUlUO2tCQVJKSSx3QkFBQUssZ0JBQUFMOztrQkFRSTttQkFSSlUsbUJBQUFGO21CQVFJRyxhQUFBLDRCQVJKRDtrQkFRSWQseUJBQUFlOzs7d0JBSkFuQjtpQkFKSlEsd0JBQUFLLGdCQUFBTDs7aUJBSUk7a0JBSkpZLG1CQUFBSjtrQkFJSUssYUFBQSw0QkFKSkQ7aUJBSUlwQixxQkFBQXFCOzt1QkFFQW5CO2dCQU5KTSx3QkFBQUssZ0JBQUFMOztnQkFNSTtpQkFOSmMsbUJBQUFOO2lCQU1JTyxhQUFBLDRCQU5KRDtnQkFNSXBCLHlCQUFBcUI7O3NCQUhBeEI7ZUFISlMsd0JBQUFLLGdCQUFBTDs7ZUFHSTtnQkFISmdCLG1CQUFBUjtnQkFHSVMsYUFBQSw0QkFISkQ7ZUFHSXpCLDRCQUFBMEI7O3FCQUZBNUI7Y0FESlcsd0JBQUFLLGdCQUFBTDs7Y0FDSTtlQURKa0IsbUJBQUFWO2VBQ0lXLGFBQUEsNEJBREpEO2NBQ0k3Qiw2QkFBQThCOztvQkFJQTFCO2FBTEpPLHdCQUFBSyxnQkFBQUw7O2FBS0k7Y0FMSm9CLG1CQUFBWjtjQUtJYSxhQUFBLDRCQUxKRDthQUtJM0IsMEJBQUE0Qjs7O2tDQUxKaEI7b0NBQUFBOzs7aUJBQUFBOztxQ0FBQUE7OzttQkFBQUE7O2tCQUVJZjtnQkFGSlUsd0JBQUFLLGdCQUFBTDs7Z0JBRUk7aUJBRkpzQixtQkFBQWQ7aUJBRUllLGFBQUEsNEJBRkpEO2dCQUVJaEMsa0NBQUFpQzs7O3NCQVFBekI7ZUFWSkUsd0JBQUFLLGdCQUFBTDs7ZUFVSTtnQkFWSndCLG1CQUFBaEI7Z0JBVUlpQixhQUFBLDRCQVZKRDtlQVVJMUIsZ0NBQUEyQjs7cUJBQ0ExQjtjQVhKQyx3QkFBQUssZ0JBQUFMOztjQVdJO2VBWEowQixtQkFBQWxCO2VBV0ltQixhQUFBLDRCQVhKRDtjQVdJM0IsbUNBQUE0Qjs7b0JBRkE5QjthQVRKRyx3QkFBQUssZ0JBQUFMOzthQVNJO2NBVEo0QixtQkFBQXBCO2NBU0lxQixhQUFBLDRCQVRKRDthQVNJL0IsZ0NBQUFnQzs7bUJBRkFsQztZQVBKSyx3QkFBQUssZ0JBQUFMOztZQU9JO2FBUEo4QixvQkFBQXRCO2FBT0l1QixhQUFBLDRCQVBKRDtZQU9JbkMsK0JBQUFvQzs7Ozs7V0FQSjlCLG1CQUFBSSxnQkFBQUo7O3VCQUFBSzs7Ozs7TUFBQSxPQUFBOzZDQUFBalYsa0JBQUE4VTs7SUFheUM7SUFiekNELFNBQUFkO09BQUFZO0tBQUEsT0FBQTs7Y0FBQTNVO2NBQUEyVTtjQUFBYjtPQUFBYztLQUFBLE9BQUE7O2NBQUE1VTtjQUFBNFU7Y0FBQWQ7O1lBQ0lFO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO2FBQ0FDOzs7Ozs7OztNQUFBaUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7S0FESjthQUNJQTthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDs7SUFYSixPQUFBOzthQUFBM1c7YUFBQThUOzt3QkFDSUU7OztzQkFDQUM7OzswQkFDQUM7OzJCQUNBQzs7NEJBQ0FDOzs2QkFDQUM7OzsyQkFDQUM7OzsrQkFDQUM7Ozs2QkFDQUM7Ozs7OEJBQ0FDOzs7OytCQUNBQzs7OztZQVhKdHRNO0lBQUE7S0FXSWt3TTtLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQVVBejdELFVBQUEsNEJBQUErNkQ7S0FYSlcsaUNBV0kxN0Q7S0FEQTI3RCxVQUFBLDRCQUFBWDtLQVZKWSxtQ0FVSUQsZUFWSkQ7S0FTSUcsVUFBQSw0QkFBQVo7S0FUSmEsbUNBU0lELGVBVEpEO0tBUUlHLFVBQUEsNEJBQUFiO0tBUkpjLG1DQVFJRCxlQVJKRDtLQU9JRyxVQUFBLDRCQUFBZDtLQVBKZSxtQ0FPSUQsZUFQSkQ7S0FNSUcsVUFBQSw0QkFBQWY7S0FOSmdCLG1DQU1JRCxlQU5KRDtLQUtJRyxVQUFBLDRCQUFBaEI7S0FMSmlCLG1DQUtJRCxlQUxKRDtLQUlJRyxVQUFBLDRCQUFBakI7S0FKSmtCLG1DQUlJRCxlQUpKRDtLQUdJRyxVQUFBLDRCQUFBbEI7S0FISm1CLG1DQUdJRCxlQUhKRDtLQUVJRyxVQUFBLDRCQUFBbkI7S0FGSm9CLG1DQUVJRCxlQUZKRDtLQUNJRyxVQUFBLDRCQUFBcEI7S0FESnFCLG1DQUNJRCxlQURKRDtJQUFBLFdBQUFFO0dBYXlDOzs7Ozs7R0FtQzNDLFNBQUF0eE0sVUFBQXV4TSxPQUFBQztJQUNrQixHQUFBLCtCQURsQkQsT0FBQUMsUUFDa0I7SUFBQSxJQUFBajJMLElBQUEsNEJBRGxCZzJMLFVBQUFDO2FBQ2tCajJMLEdBQUEsT0FBQUE7SUFDRyxJQUFBQyxNQUFBLDRCQUZyQisxTCxVQUFBQzthQUVxQmgyTCxLQUFBLE9BQUFBO0lBQ0gsSUFBQUMsTUFBQSw0QkFIbEI4MUwsVUFBQUM7YUFHa0IvMUwsS0FBQSxPQUFBQTtJQUNNLElBQUFxbkcsTUFBQSw0QkFKeEJ5dUYsVUFBQUM7YUFJd0IxdUYsS0FBQSxPQUFBQTtJQUNBLElBQUFDLE1BQUEsNEJBTHhCd3VGLFVBQUFDO2FBS3dCenVGLEtBQUEsT0FBQUE7SUFDUCxJQUFBQyxNQUFBLDRCQU5qQnV1RixVQUFBQzthQU1pQnh1RixLQUFBLE9BQUFBO0lBQ0MsSUFBQW0zRSxNQUFBLDRCQVBsQm9YLFVBQUFDO2FBT2tCclgsS0FBQSxPQUFBQTtJQUNELElBQUFDLE1BQUEsNEJBUmpCbVgsVUFBQUM7YUFRaUJwWCxLQUFBLE9BQUFBO0lBQ0MsSUFBQUMsTUFBQSw0QkFUbEJrWCxVQUFBQzthQVNrQm5YLEtBQUEsT0FBQUE7SUFDRCxJQUFBQyxNQUFBLDRCQVZqQmlYLFdBQUFDO2FBVWlCbFgsS0FBQSxPQUFBQTtJQUNDLElBQUFDLE1BQUEsNEJBWGxCZ1gsV0FBQUM7YUFXa0JqWCxLQUFBLE9BQUFBO0lBQ0MsSUFBQUMsT0FBQSw0QkFabkIrVyxXQUFBQzthQVltQmhYLE1BQUEsT0FBQUE7SUFDSCxJQUFBQyxPQUFBLDRCQWJoQjhXLFdBQUFDO2FBYWdCL1csTUFBQSxPQUFBQTtJQUNFLElBQUFDLE9BQUEsNEJBZGxCNlcsV0FBQUM7YUFja0I5VyxNQUFBLE9BQUFBO0lBQ0csSUFBQUMsT0FBQSw0QkFmckI0VyxXQUFBQzthQWVxQjdXLE1BQUEsT0FBQUE7SUFDSixJQUFBb0ksT0FBQSw0QkFoQmpCd08sV0FBQUM7aUJBZ0JpQnpPOzBDQWhCakJ3TyxXQUFBQztjQWdCaUJ6TztHQWZNO1lBRHZCamlNO0lBaUJJO0tBQUEyd007S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FnQkFDLFVBQUEsNEJBQUFqQjtLQWpCSmtCLGlDQWlCSUQ7S0FEQUUsVUFBQSw0QkFBQWxCO0tBaEJKbUIsbUNBZ0JJRCxlQWhCSkQ7S0FlSUcsVUFBQSw0QkFBQW5CO0tBZkpvQixtQ0FlSUQsZUFmSkQ7S0FjSUcsVUFBQSw0QkFBQXBCO0tBZEpxQixtQ0FjSUQsZUFkSkQ7S0FhSUcsVUFBQSw0QkFBQXJCO0tBYkpzQixtQ0FhSUQsZUFiSkQ7S0FZSUcsVUFBQSw0QkFBQXRCO0tBWkp1QixtQ0FZSUQsZUFaSkQ7S0FXSUcsVUFBQSw0QkFBQXZCO0tBWEp3QixtQ0FXSUQsZUFYSkQ7S0FVSUcsVUFBQSw0QkFBQXhCO0tBVkp5QixtQ0FVSUQsZUFWSkQ7S0FTSUcsVUFBQSw0QkFBQXpCO0tBVEowQixtQ0FTSUQsZUFUSkQ7S0FRSUcsVUFBQSw0QkFBQTFCO0tBUkoyQixtQ0FRSUQsZUFSSkQ7S0FPSUcsVUFBQSw0QkFBQTNCO0tBUEo0QixtQ0FPSUQsZUFQSkQ7S0FNSUcsVUFBQSw0QkFBQTVCO0tBTko2QixvQ0FNSUQsZUFOSkQ7S0FLSUcsVUFBQSw0QkFBQTdCO0tBTEo4QixvQ0FLSUQsZUFMSkQ7S0FJSUcsVUFBQSw0QkFBQTlCO0tBSkorQixvQ0FJSUQsZUFKSkQ7S0FHSUcsVUFBQSw0QkFBQS9CO0tBSEpnQyxvQ0FHSUQsZUFISkQ7S0FFSUcsVUFBQSw0QkFBQWhDO0tBRkppQyxvQ0FFSUQsZUFGSkQ7S0FDSUcsVUFBQSw0QkFBQWpDO0tBREprQyxvQ0FDSUQsZUFESkQ7SUFBQSxXQUFBRTs7WUFpQklDLHlCQUFBajVMLEdBQUEsT0FBQUEsTUFBd0I7WUFEeEJrNUwsV0FBQWw1TCxHQUFBLE9BQUFBLE1BQVU7WUFEVm01TCxlQUFBbjVMLEdBQUEsT0FBQUEsTUFBYztZQURkbzVMLFlBQUFwNUwsR0FBQSxPQUFBQSxNQUFXO1lBRFhxNUwsVUFBQXI1TCxHQUFBLE9BQUFBLE1BQVM7WUFEVHM1TCxhQUFBdDVMLEdBQUEsT0FBQUEsTUFBWTtZQURadTVMLFlBQUF2NUwsR0FBQSxPQUFBQSxNQUFXO1lBRFh3NUwsV0FBQXg1TCxHQUFBLE9BQUFBLE1BQVU7WUFEVnk1TCxZQUFBejVMLEdBQUEsT0FBQUEsS0FBVztZQURYMDVMLFdBQUExNUwsR0FBQSxPQUFBQSxLQUFVO1lBRFYyNUwsWUFBQTM1TCxHQUFBLE9BQUFBLEtBQVc7WUFEWDQ1TCxXQUFBNTVMLEdBQUEsT0FBQUEsS0FBVTtZQURWNjVMLGtCQUFBNzVMLEdBQUEsT0FBQUEsS0FBaUI7WUFEakI4NUwsa0JBQUE5NUwsR0FBQSxPQUFBQSxLQUFpQjtZQURqQis1TCxZQUFBLzVMLEdBQUEsT0FBQUEsS0FBVztZQURYZzZMLGVBQUFoNkwsR0FBQSxPQUFBQSxLQUFjO1lBRGRpNkwsWUFBQWo2TCxHQUFBLE9BQUFBLEtBQVc7aUJBZ0JYQSxHQUFBL3BCO0lBQUE7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBL3BCO0dBQXdCO0dBQXhCOztJQUFBaWtOOzt1QkFBQSxTQUF3Qjs7O09BQXhCakI7O2lCQURBajVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtHQUFVO0dBQVY7O0lBQUFtNkw7O3VCQUFBLFNBQVU7OztPQUFWakI7O2lCQURBbDVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtHQUFjO0dBQWQ7O0lBQUFvNkw7O3VCQUFBLFNBQWM7OztPQUFkakI7O2lCQURBbjVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtHQUFXO0dBQVg7O0lBQUFxNkw7O3VCQUFBLFNBQVc7OztPQUFYakI7O2lCQURBcDVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtHQUFTO0dBQVQ7O0lBQUFzNkw7MEJBQUEsU0FBUywwQkFBVGpCO2lCQURBcjVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtHQUFZO0dBQVo7O0lBQUF1Nkw7O3VCQUFBLFNBQVk7OztPQUFaakI7O2lCQURBdDVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtHQUFXO0dBQVg7O0lBQUF3Nkw7O3VCQUFBLFNBQVc7OztPQUFYakI7O2lCQURBdjVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtHQUFVO0dBQVY7O0lBQUF5Nkw7O3VCQUFBLFNBQVU7OztPQUFWakI7O2lCQURBeDVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtHQUFXO0dBQVg7O0lBQUEwNkw7O3VCQUFBLFNBQVc7OztPQUFYakI7O2lCQURBejVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtHQUFVO0dBQVY7O0lBQUEyNkw7O3VCQUFBLFNBQVU7OztPQUFWakI7O2lCQURBMTVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtHQUFXO0dBQVg7O0lBQUE0Nkw7O3VCQUFBLFNBQVc7OztPQUFYakI7O2lCQURBMzVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtHQUFVO0dBQVY7O0lBQUE2Nkw7O3VCQUFBLFNBQVU7OztPQUFWakI7O2lCQURBNTVMLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtHQUFpQjtHQUFqQjs7SUFBQTg2TDs7dUJBQUEsU0FBaUI7OztPQUFqQmpCOztpQkFEQTc1TCxHQUFBL3BCO0lBQUE7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBL3BCO1lBQUErcEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBaUI7R0FBakI7O0lBQUErNkw7O3VCQUFBLFNBQWlCOzs7T0FBakJqQjs7aUJBREE5NUwsR0FBQS9wQjtJQUFBO1lBQUErcEI7WUFBQUE7WUFBQS9wQjtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0dBQVc7R0FBWDs7SUFBQWc3TDs7dUJBQUEsU0FBVzs7O09BQVhqQjs7aUJBREEvNUwsR0FBQS9wQjtJQUFBO1lBQUErcEI7WUFBQS9wQjtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0dBQWM7R0FBZDs7SUFBQWk3TDs7dUJBQUEsU0FBYzs7O09BQWRqQjs7aUJBREFoNkwsR0FBQS9wQjtJQUFBO1lBQUFBO1lBQUErcEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBVztHQUFYOztJQUFBazdMOzt1QkFBQSxTQUFXOzs7T0FBWGpCOztZQURDejVMO0lBQUEyNkw7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQXQ3TDtJQUFBO0tBQUEsUUFBQSxXQUFBczZMLGlCQUNERCxlQURDcjZMO0tBQUFDO0tBQUFzN0w7S0FBQSxVQUFBLFdBQUFoQixvQkFFREgsa0JBRkNuNkw7S0FBQUU7S0FBQXE3TDtLQUFBLFVBQUEsV0FBQWhCLGlCQUdETCxlQUhDaDZMO0tBQUFFO0tBQUFvN0w7S0FBQTtPQUFBLFdBQUFoQix1QkFJRFAscUJBSkM3NUw7S0FBQUU7S0FBQW03TDtLQUFBO09BQUEsV0FBQWhCLHVCQUtEVCxxQkFMQzE1TDtLQUFBMjJGO0tBQUF5a0c7S0FBQSxVQUFBLFdBQUFoQixnQkFNRFgsY0FOQzlpRztLQUFBRTtLQUFBd2tHO0tBQUEsVUFBQSxXQUFBaEIsaUJBT0RiLGVBUEMzaUc7S0FBQUU7S0FBQXVrRztLQUFBLFVBQUEsV0FBQWhCLGdCQVFEZixjQVJDeGlHO0tBQUFFO0tBQUFza0c7S0FBQSxVQUFBLFdBQUFoQixpQkFTRGpCLGVBVENyaUc7S0FBQUU7S0FBQXFrRztLQUFBLFVBQUEsV0FBQWhCLGdCQVVEbkIsY0FWQ2xpRztLQUFBRTtLQUFBb2tHO0tBQUEsVUFBQSxXQUFBaEIsaUJBV0RyQixlQVhDL2hHO0tBQUFFO0tBQUFta0c7S0FBQSxXQUFBLFdBQUFoQixrQkFZRHZCLGdCQVpDNWhHO0tBQUFFO0tBQUFra0c7S0FBQSxXQUFBLFdBQUFoQixlQWFEekIsYUFiQ3poRztLQUFBbWtHO0tBQUFDO0tBQUEsV0FBQSxXQUFBakIsaUJBY0QzQixlQWRDMkM7S0FBQUU7S0FBQUM7S0FBQTtPQUFBLFdBQUFsQixvQkFlRDdCLGtCQWZDOEM7S0FBQUU7S0FBQUM7S0FBQSxXQUFBLFdBQUFuQixnQkFnQkQvQixjQWhCQ2lEO0tBQUFFO0tBQUFDO0tBQUE7T0FBQTtTQUFBcEI7U0FpQkRqQztTQWpCQ29EO0tBQUFFO0tBQUFDO0lBQUE7cUJBQUFuOEw7YUFBQTtjQUFBMjRMLGNBQUEsV0FBQW1DLGlCQUFBOTZMO2NBQUEwNEwsaUJBQUEsV0FBQXFDLG9CQUFBLzZMO2NBQUF5NEwsY0FBQSxXQUFBdUMsaUJBQUFoN0w7Y0FBQXc0TCxvQkFBQSxXQUFBeUMsdUJBQUFqN0w7Y0FBQXU0TCxvQkFBQSxXQUFBMkMsdUJBQUFsN0w7Y0FBQXM0TCxhQUFBLFdBQUE2QyxnQkFBQW43TDtjQUFBcTRMLGNBQUEsV0FBQStDLGlCQUFBcDdMO2NBQUFvNEwsYUFBQSxXQUFBaUQsZ0JBQUFyN0w7Y0FBQW00TCxjQUFBLFdBQUFtRCxpQkFBQXQ3TDtjQUFBazRMLGFBQUEsV0FBQXFELGdCQUFBdjdMO2NBQUFpNEwsY0FBQSxXQUFBdUQsaUJBQUF4N0w7Y0FBQWc0TCxlQUFBLFdBQUF5RCxrQkFBQXo3TDtjQUFBKzNMLFlBQUEsV0FBQTRELGVBQUEzN0w7Y0FBQTgzTCxjQUFBLFdBQUErRCxpQkFBQTc3TDtjQUFBNjNMLGlCQUFBLFdBQUFrRSxvQkFBQS83TDtjQUFBNDNMLGFBQUEsV0FBQXFFLGdCQUFBajhMO2NBQUEyM0w7Z0JBQUEsV0FBQXdFLDhCQUFBbjhMO2FBQUE7cUJBQUEyNEw7cUJBQUFEO3FCQUFBRDtxQkFBQUQ7cUJBQUFEO3FCQUFBRDtxQkFBQUQ7cUJBQUFEO3FCQUFBRDtxQkFBQUQ7cUJBQUFEO3FCQUFBRDtxQkFBQUQ7cUJBQUFEO3FCQUFBRDtxQkFBQUQ7cUJBQUFEOztZQUFBdUU7O1lBQUEvbk07SUFBQXdrTTtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBO1lBQUFnQjtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDs7WUFBQW5vTTtJQUFBcXFNO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQTtPQUFBLFdBQUFBLDhCQWlCRGpDO0tBakJDLE9BQUEsV0FBQWdDLGdCQWdCRC9CO0tBaEJDLE9BQUEsV0FBQThCLG9CQWVEN0I7S0FmQyxPQUFBLFdBQUE0QixpQkFjRDNCO0tBZEMsT0FBQSxXQUFBMEIsZUFhRHpCO0tBYkMsT0FBQSxXQUFBd0Isa0JBWUR2QjtLQVpDLE9BQUEsV0FBQXNCLGlCQVdEckI7S0FYQyxPQUFBLFdBQUFvQixnQkFVRG5CO0tBVkMsT0FBQSxXQUFBa0IsaUJBU0RqQjtLQVRDLE9BQUEsV0FBQWdCLGdCQVFEZjtLQVJDLE9BQUEsV0FBQWMsaUJBT0RiO0tBUEMsT0FBQSxXQUFBWSxnQkFNRFg7S0FOQyxPQUFBLFdBQUFVLHVCQUtEVDtLQUxDLE9BQUEsV0FBQVEsdUJBSURQO0tBSkMsT0FBQSxXQUFBTSxpQkFHREw7S0FIQyxPQUFBLFdBQUFJLG9CQUVESDtJQUZDO1lBQUEsV0FBQUUsaUJBQ0REOzs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFEQ3ZtTTtJQUFBd21NO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUEsV0FBQWhCLGlCQUNERDtJQURDLFdBQUFFLG9CQUVESDtJQUZDLFdBQUFJLGlCQUdETDtJQUhDLFdBQUFNLHVCQUlEUDtJQUpDLFdBQUFRLHVCQUtEVDtJQUxDLFdBQUFVLGdCQU1EWDtJQU5DLFdBQUFZLGlCQU9EYjtJQVBDLFdBQUFjLGdCQVFEZjtJQVJDLFdBQUFnQixpQkFTRGpCO0lBVEMsV0FBQWtCLGdCQVVEbkI7SUFWQyxXQUFBb0IsaUJBV0RyQjtJQVhDLFdBQUFzQixrQkFZRHZCO0lBWkMsV0FBQXdCLGVBYUR6QjtJQWJDLFdBQUEwQixpQkFjRDNCO0lBZEMsV0FBQTRCLG9CQWVEN0I7SUFmQyxXQUFBOEIsZ0JBZ0JEL0I7SUFDQSxPQUFBO2FBakJDZ0MsOEJBaUJEakM7R0FqQkU7WUFBRHRsTTtJQUFBZTtJQUFBd2xNO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBaUJELE9BQUE7YUFqQkNBO2FBQUE7ZUFBQUQ7ZUFBQTtpQkFBQUQ7aUJBQUE7bUJBQUFEO21CQUFBO3FCQUFBRDtxQkFBQTt1QkFBQUQ7dUJBQUE7eUJBQUFEO3lCQUFBOzJCQUFBRDsyQkFBQTs2QkFBQUQ7NkJBQUE7K0JBQUFEOytCQUFBO2lDQUFBRDtpQ0FBQTttQ0FBQUQ7bUNBQUE7cUNBQUFEO3FDQUFBO3VDQUFBRDt1Q0FBQTt5Q0FBQUQ7eUNBQUE7MkNBQUFEOzJDQUFBLFdBQUFELGlCQUFBeGxNLE1BQ0R1bE07MkNBQ0FEO3lDQUNBRDt1Q0FDQUQ7cUNBQ0FEO21DQUNBRDtpQ0FDQUQ7K0JBQ0FEOzZCQUNBRDsyQkFDQUQ7eUJBQ0FEO3VCQUNBRDtxQkFDQUQ7bUJBQ0FEO2lCQUNBRDtlQUNBRDthQUNBRDs7WUFqQkMzNEwsU0FBQUM7SUFBQTtLQUFBLFdBQUEsV0FBQUEsV0FpQkQwNEw7S0FqQkMsV0FBQSxXQUFBMTRMLFdBZ0JEMjRMO0tBaEJDLFdBQUEsV0FBQTM0TCxXQWVENDRMO0tBZkMsV0FBQSxXQUFBNTRMLFdBY0Q2NEw7S0FkQyxXQUFBLFdBQUE3NEwsV0FhRDg0TDtLQWJDLFdBQUEsV0FBQTk0TCxXQVlEKzRMO0tBWkMsV0FBQSxXQUFBLzRMLFdBV0RnNUw7S0FYQyxXQUFBLFdBQUFoNUwsV0FVRGk1TDtLQVZDLFdBQUEsV0FBQWo1TCxXQVNEazVMO0tBVEMsV0FBQSxXQUFBbDVMLFdBUURtNUw7S0FSQyxXQUFBLFdBQUFuNUwsV0FPRG81TDtLQVBDLFdBQUEsV0FBQXA1TCxXQU1EcTVMO0tBTkMsV0FBQSxXQUFBcjVMLFdBS0RzNUw7S0FMQyxXQUFBLFdBQUF0NUwsV0FJRHU1TDtLQUpDLFdBQUEsV0FBQXY1TCxXQUdEdzVMO0tBSEMsV0FBQSxXQUFBeDVMLFdBRUR5NUw7SUFGQyxXQUFBLFdBQUF6NUwsV0FDRDA1TDtHQURFO1lBQURsbU07SUFBQW1tTTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBaEIsaUJBQ0REO0tBREMsY0FBQSxXQUFBRSxvQkFFREg7S0FGQyxjQUFBLFdBQUFJLGlCQUdETDtLQUhDO2NBQUEsV0FBQU0sdUJBSURQO0tBSkM7Y0FBQSxXQUFBUSx1QkFLRFQ7S0FMQyxjQUFBLFdBQUFVLGdCQU1EWDtLQU5DLGNBQUEsV0FBQVksaUJBT0RiO0tBUEMsY0FBQSxXQUFBYyxnQkFRRGY7S0FSQyxjQUFBLFdBQUFnQixpQkFTRGpCO0tBVEMsY0FBQSxXQUFBa0IsZ0JBVURuQjtLQVZDLGNBQUEsV0FBQW9CLGlCQVdEckI7S0FYQyxjQUFBLFdBQUFzQixrQkFZRHZCO0tBWkMsY0FBQSxXQUFBd0IsZUFhRHpCO0tBYkMsY0FBQSxXQUFBMEIsaUJBY0QzQjtLQWRDLGNBQUEsV0FBQTRCLG9CQWVEN0I7S0FmQyxjQUFBLFdBQUE4QixnQkFnQkQvQjtJQWhCQztjQWlCRDtlQWpCQ2dDLDhCQWlCRGpDOztHQWpCRTtZQUFEbmxNO0lBQUFvbU07SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBLE9BQUEsV0FBQWhCLGlCQUNERDtLQURDLGVBQUEsV0FBQUUsb0JBRURIO0tBRkMsZUFBQSxXQUFBSSxpQkFHREw7S0FIQyxlQUFBLFdBQUFNLHVCQUlEUDtLQUpDLGVBQUEsV0FBQVEsdUJBS0RUO0tBTEMsZUFBQSxXQUFBVSxnQkFNRFg7S0FOQyxlQUFBLFdBQUFZLGlCQU9EYjtLQVBDLGVBQUEsV0FBQWMsZ0JBUURmO0tBUkMsZUFBQSxXQUFBZ0IsaUJBU0RqQjtLQVRDLGVBQUEsV0FBQWtCLGdCQVVEbkI7S0FWQyxlQUFBLFdBQUFvQixpQkFXRHJCO0tBWEMsZUFBQSxXQUFBc0Isa0JBWUR2QjtLQVpDLGVBQUEsV0FBQXdCLGVBYUR6QjtLQWJDLGVBQUEsV0FBQTBCLGlCQWNEM0I7S0FkQyxlQUFBLFdBQUE0QixvQkFlRDdCO0tBZkMsZUFBQSxXQUFBOEIsZ0JBZ0JEL0I7SUFoQkM7O2NBaUJEO2VBakJDZ0MsOEJBaUJEakM7R0FqQkU7WUFBRDdrTTtJQUFBOGxNO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQTs7UUFBQSxXQUFBQSw4QkFpQkRqQzs7S0FqQkMsV0FBQSxXQUFBZ0MsZ0JBZ0JEL0I7S0FoQkMsV0FBQSxXQUFBOEIsb0JBZUQ3QjtLQWZDLFdBQUEsV0FBQTRCLGlCQWNEM0I7S0FkQyxXQUFBLFdBQUEwQixlQWFEekI7S0FiQyxXQUFBLFdBQUF3QixrQkFZRHZCO0tBWkMsV0FBQSxXQUFBc0IsaUJBV0RyQjtLQVhDLFdBQUEsV0FBQW9CLGdCQVVEbkI7S0FWQyxXQUFBLFdBQUFrQixpQkFTRGpCO0tBVEMsV0FBQSxXQUFBZ0IsZ0JBUURmO0tBUkMsV0FBQSxXQUFBYyxpQkFPRGI7S0FQQyxXQUFBLFdBQUFZLGdCQU1EWDtLQU5DLFdBQUEsV0FBQVUsdUJBS0RUO0tBTEMsV0FBQSxXQUFBUSx1QkFJRFA7S0FKQyxXQUFBLFdBQUFNLGlCQUdETDtLQUhDLFdBQUEsV0FBQUksb0JBRURIO0lBRkMsV0FBQSxXQUFBRSxpQkFDREQ7R0FERTtZQUFEejVMO0lBQUFEO0lBQUEyNUw7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQSxXQUFBaEIsaUJBQ0RELGVBREMxNUwsUUFBQUE7SUFBQSxXQUFBNDVMLG9CQUVESCxrQkFGQ3o1TCxRQUFBQTtJQUFBLFdBQUE2NUwsaUJBR0RMLGVBSEN4NUwsUUFBQUE7SUFBQSxXQUFBODVMLHVCQUlEUCxxQkFKQ3Y1TCxRQUFBQTtJQUFBLFdBQUErNUwsdUJBS0RULHFCQUxDdDVMLFFBQUFBO0lBQUEsV0FBQWc2TCxnQkFNRFgsY0FOQ3I1TCxRQUFBQTtJQUFBLFdBQUFpNkwsaUJBT0RiLGVBUENwNUwsUUFBQUE7SUFBQSxXQUFBazZMLGdCQVFEZixjQVJDbjVMLFFBQUFBO0lBQUEsV0FBQW02TCxpQkFTRGpCLGVBVENsNUwsUUFBQUE7SUFBQSxXQUFBbzZMLGdCQVVEbkIsY0FWQ2o1TCxRQUFBQTtJQUFBLFdBQUFxNkwsaUJBV0RyQixlQVhDaDVMLFFBQUFBO0lBQUEsV0FBQXM2TCxrQkFZRHZCLGdCQVpDLzRMLFFBQUFBO0lBQUEsV0FBQXU2TCxlQWFEekIsYUFiQzk0TCxRQUFBQTtJQUFBLFdBQUF3NkwsaUJBY0QzQixlQWRDNzRMLFFBQUFBO0lBQUEsV0FBQXk2TCxvQkFlRDdCLGtCQWZDNTRMLFFBQUFBO0lBQUEsV0FBQTA2TCxnQkFnQkQvQixjQWhCQzM0TCxRQUFBQTtJQWlCRCxPQUFBO2FBakJDMjZMO2FBaUJEakM7YUFqQkMxNEw7YUFBQUE7R0FBQztZQUFERTtJQUFBRjtJQUFBN0w7SUFBQXdsTTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7WUFBQTM2TDtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtJQUFBLE9BQUE7YUFBQTI2TDthQUFBO2VBQUFEO2VBQUE7aUJBQUFEO2lCQUFBO21CQUFBRDttQkFBQTtxQkFBQUQ7cUJBQUE7dUJBQUFEO3VCQUFBO3lCQUFBRDt5QkFBQTsyQkFBQUQ7MkJBQUE7NkJBQUFEOzZCQUFBOytCQUFBRDsrQkFBQTtpQ0FBQUQ7aUNBQUE7bUNBQUFEO21DQUFBO3FDQUFBRDtxQ0FBQTt1Q0FBQUQ7dUNBQUE7eUNBQUFEO3lDQUFBOzJDQUFBRDsyQ0FBQTs2Q0FBQUQsaUJBQUF4bE0sTUFDRHVsTSxlQURDMTVMLFFBQUFBOzJDQUVEeTVMOzJDQUZDejVMOzt5Q0FHRHc1TDt5Q0FIQ3g1TDs7dUNBSUR1NUw7dUNBSkN2NUw7O3FDQUtEczVMO3FDQUxDdDVMOzttQ0FNRHE1TDttQ0FOQ3I1TDs7aUNBT0RvNUw7aUNBUENwNUw7OytCQVFEbTVMOytCQVJDbjVMOzs2QkFTRGs1TDs2QkFUQ2w1TDs7MkJBVURpNUw7MkJBVkNqNUw7O3lCQVdEZzVMO3lCQVhDaDVMOzt1QkFZRCs0TDt1QkFaQy80TDs7cUJBYUQ4NEw7cUJBYkM5NEw7O21CQWNENjRMO21CQWRDNzRMOztpQkFlRDQ0TDtpQkFmQzU0TDs7ZUFnQkQyNEw7ZUFoQkMzNEw7O2FBaUJEMDRMO2FBakJDMTRMOzs7WUFBQUc7SUFBQUg7SUFBQTI1TDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBaEIsaUJBQ0RELGVBREMxNUwsUUFBQUE7S0FBQTs7VUFBQSxXQUFBNDVMLG9CQUVESCxrQkFGQ3o1TCxRQUFBQTs7S0FBQTs7VUFBQSxXQUFBNjVMLGlCQUdETCxlQUhDeDVMLFFBQUFBOztLQUFBOztVQUFBO1dBQUE4NUwsdUJBSURQLHFCQUpDdjVMLFFBQUFBOztLQUFBOztVQUFBO1dBQUErNUwsdUJBS0RULHFCQUxDdDVMLFFBQUFBOztLQUFBOztVQUFBLFdBQUFnNkwsZ0JBTURYLGNBTkNyNUwsUUFBQUE7O0tBQUE7O1VBQUEsV0FBQWk2TCxpQkFPRGIsZUFQQ3A1TCxRQUFBQTs7S0FBQTs7VUFBQSxXQUFBazZMLGdCQVFEZixjQVJDbjVMLFFBQUFBOztLQUFBOztVQUFBLFdBQUFtNkwsaUJBU0RqQixlQVRDbDVMLFFBQUFBOztLQUFBOztVQUFBLFdBQUFvNkwsZ0JBVURuQixjQVZDajVMLFFBQUFBOztLQUFBOztVQUFBLFdBQUFxNkwsaUJBV0RyQixlQVhDaDVMLFFBQUFBOztLQUFBOztVQUFBLFdBQUFzNkwsa0JBWUR2QixnQkFaQy80TCxRQUFBQTs7S0FBQTs7VUFBQSxXQUFBdTZMLGVBYUR6QixhQWJDOTRMLFFBQUFBOztLQUFBOztVQUFBLFdBQUF3NkwsaUJBY0QzQixlQWRDNzRMLFFBQUFBOztLQUFBOztVQUFBLFdBQUF5Nkwsb0JBZUQ3QixrQkFmQzU0TCxRQUFBQTs7S0FBQTs7VUFBQSxXQUFBMDZMLGdCQWdCRC9CLGNBaEJDMzRMLFFBQUFBOztJQUFBO2NBaUJEO2VBakJDMjZMO2VBaUJEakM7ZUFqQkMxNEw7ZUFBQUE7O0dBQUM7WUFBREk7SUFBQUo7SUFBQTI1TDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBaEIsaUJBQ0RELGVBREMxNUwsUUFBQUE7S0FBQTs7VUFBQSxXQUFBNDVMLG9CQUVESCxrQkFGQ3o1TCxRQUFBQTtLQUFBO2VBQUEsV0FBQTY1TCxpQkFHREwsZUFIQ3g1TCxRQUFBQTtLQUFBOzs7UUFBQTtVQUFBODVMLHVCQUlEUCxxQkFKQ3Y1TCxRQUFBQTtLQUFBOzs7UUFBQTtVQUFBKzVMLHVCQUtEVCxxQkFMQ3Q1TCxRQUFBQTtLQUFBO2VBQUEsV0FBQWc2TCxnQkFNRFgsY0FOQ3I1TCxRQUFBQTtLQUFBO2VBQUEsV0FBQWk2TCxpQkFPRGIsZUFQQ3A1TCxRQUFBQTtLQUFBO2VBQUEsV0FBQWs2TCxnQkFRRGYsY0FSQ241TCxRQUFBQTtLQUFBO2VBQUEsV0FBQW02TCxpQkFTRGpCLGVBVENsNUwsUUFBQUE7S0FBQTtlQUFBLFdBQUFvNkwsZ0JBVURuQixjQVZDajVMLFFBQUFBO0tBQUE7ZUFBQSxXQUFBcTZMLGlCQVdEckIsZUFYQ2g1TCxRQUFBQTtLQUFBOztVQUFBLFdBQUFzNkwsa0JBWUR2QixnQkFaQy80TCxRQUFBQTtLQUFBLGVBQUEsV0FBQXU2TCxlQWFEekIsYUFiQzk0TCxRQUFBQTtLQUFBO2VBQUEsV0FBQXc2TCxpQkFjRDNCLGVBZEM3NEwsUUFBQUE7S0FBQTs7VUFBQSxXQUFBeTZMLG9CQWVEN0Isa0JBZkM1NEwsUUFBQUE7S0FBQTtlQUFBLFdBQUEwNkwsZ0JBZ0JEL0IsY0FoQkMzNEwsUUFBQUE7SUFBQTs7Y0FpQkQ7ZUFqQkMyNkw7ZUFpQkRqQztlQWpCQzE0TDtlQUFBQTtHQUFDO1lBQURLO0lBQUFMO0lBQUEyNUw7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBOztRQUFBO1VBQUFBO1VBaUJEakM7VUFqQkMxNEw7VUFBQUE7O0tBQUE7V0FBQSxXQUFBMDZMLGdCQWdCRC9CLGNBaEJDMzRMLFFBQUFBO0tBQUE7O1FBQUEsV0FBQXk2TCxvQkFlRDdCLGtCQWZDNTRMLFFBQUFBOztLQUFBOztRQUFBLFdBQUF3NkwsaUJBY0QzQixlQWRDNzRMLFFBQUFBOztLQUFBO1dBQUEsV0FBQXU2TCxlQWFEekIsYUFiQzk0TCxRQUFBQTtLQUFBOztRQUFBLFdBQUFzNkwsa0JBWUR2QixnQkFaQy80TCxRQUFBQTs7S0FBQTs7UUFBQSxXQUFBcTZMLGlCQVdEckIsZUFYQ2g1TCxRQUFBQTs7S0FBQTtXQUFBLFdBQUFvNkwsZ0JBVURuQixjQVZDajVMLFFBQUFBO0tBQUE7O1FBQUEsV0FBQW02TCxpQkFTRGpCLGVBVENsNUwsUUFBQUE7O0tBQUE7V0FBQSxXQUFBazZMLGdCQVFEZixjQVJDbjVMLFFBQUFBO0tBQUE7O1FBQUEsV0FBQWk2TCxpQkFPRGIsZUFQQ3A1TCxRQUFBQTs7S0FBQTtXQUFBLFdBQUFnNkwsZ0JBTURYLGNBTkNyNUwsUUFBQUE7S0FBQTs7UUFBQTtVQUFBKzVMLHVCQUtEVCxxQkFMQ3Q1TCxRQUFBQTs7S0FBQTs7UUFBQTtVQUFBODVMLHVCQUlEUCxxQkFKQ3Y1TCxRQUFBQTs7S0FBQTs7UUFBQSxXQUFBNjVMLGlCQUdETCxlQUhDeDVMLFFBQUFBOztLQUFBOztRQUFBLFdBQUE0NUwsb0JBRURILGtCQUZDejVMLFFBQUFBOztJQUFBO1lBQUEsV0FBQTI1TCxpQkFDREQsZUFEQzE1TCxRQUFBQTs7R0FBQztZQUFETTtJQUFBTjtJQUFBMjVMO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQTtPQUFBO1NBQUFBO1NBaUJEakM7U0FqQkMxNEw7U0FBQUE7S0FBQSxPQUFBLFdBQUEwNkwsZ0JBZ0JEL0IsY0FoQkMzNEwsUUFBQUE7S0FBQTtPQUFBLFdBQUF5Nkwsb0JBZUQ3QixrQkFmQzU0TCxRQUFBQTtLQUFBLE9BQUEsV0FBQXc2TCxpQkFjRDNCLGVBZEM3NEwsUUFBQUE7S0FBQSxPQUFBLFdBQUF1NkwsZUFhRHpCLGFBYkM5NEwsUUFBQUE7S0FBQSxPQUFBLFdBQUFzNkwsa0JBWUR2QixnQkFaQy80TCxRQUFBQTtLQUFBLE9BQUEsV0FBQXE2TCxpQkFXRHJCLGVBWENoNUwsUUFBQUE7S0FBQSxPQUFBLFdBQUFvNkwsZ0JBVURuQixjQVZDajVMLFFBQUFBO0tBQUEsT0FBQSxXQUFBbTZMLGlCQVNEakIsZUFUQ2w1TCxRQUFBQTtLQUFBLE9BQUEsV0FBQWs2TCxnQkFRRGYsY0FSQ241TCxRQUFBQTtLQUFBLE9BQUEsV0FBQWk2TCxpQkFPRGIsZUFQQ3A1TCxRQUFBQTtLQUFBLE9BQUEsV0FBQWc2TCxnQkFNRFgsY0FOQ3I1TCxRQUFBQTtLQUFBO09BQUE7U0FBQSs1TCx1QkFLRFQscUJBTEN0NUwsUUFBQUE7S0FBQTtPQUFBO1NBQUE4NUwsdUJBSURQLHFCQUpDdjVMLFFBQUFBO0tBQUEsT0FBQSxXQUFBNjVMLGlCQUdETCxlQUhDeDVMLFFBQUFBO0tBQUE7T0FBQSxXQUFBNDVMLG9CQUVESCxrQkFGQ3o1TCxRQUFBQTtJQUFBO1lBQUEsV0FBQTI1TCxpQkFDREQsZUFEQzE1TCxRQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBQUFPLHVCQUFBUDtJQUFBLDZCQUFBQTtJQUFBO0dBQUM7R0FBRDtJQUFBOztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztrREFBTDFkLFdBQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQW1ERTh0QyxLQUFLcXNELE9BQU1DO0lBQ2I7WUFET0QsWUFBTUM7WUFBTkQsWUFBTUM7WUFBTkQsWUFBTUM7WUFBTkQsWUFBTUM7WUFBTkQsWUFBTUM7WUFBTkQsWUFBTUM7WUFBTkQsWUFBTUM7WUFBTkQsWUFBTUM7WUFBTkQsV0FBTUM7WUFBTkQsV0FBTUM7WUFBTkQsV0FBTUM7WUFBTkQsV0FBTUM7WUFBTkQsV0FBTUM7WUFBTkQsV0FBTUM7S0FHRyxPQUFBLDZCQUhURCxVQUFNQztLQUVNLE9BQUEsNkJBRlpELFVBQU1DO0lBQ2I7WUFBZ0IsNkJBRFRELFVBQU1DOzs7Ozs7Ozs7Ozs7Ozs7OztHQW1CWjtHQWlDRCxTQUFBLzFGLFVBQUFrME0sT0FBQUM7SUFDc0IsR0FBQSwrQkFEdEJELE9BQUFDLFFBQ3NCO0lBQUEsSUFBQS85TCxJQUFBLDRCQUR0Qjg5TCxVQUFBQzthQUNzQi85TCxHQUFBLE9BQUFBO0lBQ0ssSUFBQUMsTUFBQSw0QkFGM0I2OUwsVUFBQUM7YUFFMkI5OUwsS0FBQSxPQUFBQTtJQUNOLElBQUFDLE1BQUEsNEJBSHJCNDlMLFVBQUFDO2FBR3FCNzlMLEtBQUEsT0FBQUE7SUFDUCxJQUFBcW5HLE1BQUEsNEJBSmR1MkYsVUFBQUM7YUFJY3gyRixLQUFBLE9BQUFBO0lBQ0ssSUFBQUMsTUFBQSw0QkFMbkJzMkYsVUFBQUM7YUFLbUJ2MkYsS0FBQSxPQUFBQTtJQUNELElBQUFDLE1BQUEsNEJBTmxCcTJGLFVBQUFDO2FBTWtCdDJGLEtBQUEsT0FBQUE7SUFDTSxJQUFBbTNFLE1BQUEsNEJBUHhCa2YsVUFBQUM7YUFPd0JuZixLQUFBLE9BQUFBO0lBQ04sSUFBQUMsTUFBQSw0QkFSbEJpZixVQUFBQzthQVFrQmxmLEtBQUEsT0FBQUE7SUFDTyxJQUFBQyxNQUFBLDRCQVR6QmdmLFVBQUFDO2FBU3lCamYsS0FBQSxPQUFBQTtJQUNBLElBQUFDLE1BQUEsNEJBVnpCK2UsV0FBQUM7aUJBVXlCaGYsa0NBVnpCK2UsV0FBQUMsYUFVeUJoZjtHQVRBO1lBRHpCcjRMO0lBQUE7S0FXSXMzTTtLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQVVBQyxVQUFBLDRCQUFBWDtLQVhKWSxpQ0FXSUQ7S0FEQUUsVUFBQSw0QkFBQVo7S0FWSmEsbUNBVUlELGVBVkpEO0tBU0lHLFVBQUEsNEJBQUFiO0tBVEpjLG1DQVNJRCxlQVRKRDtLQVFJeGlFLFVBQUEsNEJBQUE2aEU7S0FSSmMsbUNBUUkzaUUsZUFSSjBpRTtLQU9JeGlFLFVBQUEsNEJBQUE0aEU7S0FQSmMsbUNBT0kxaUUsZUFQSnlpRTtLQU1JdmlFLFVBQUEsNEJBQUEyaEU7S0FOSmMsbUNBTUl6aUUsZUFOSndpRTtLQUtJcmlFLFVBQUEsNEJBQUF5aEU7S0FMSmMsbUNBS0l2aUUsZUFMSnNpRTtLQUlJRSxVQUFBLDRCQUFBZDtLQUpKZSxtQ0FJSUQsZUFKSkQ7S0FHSXBpRSxVQUFBLDRCQUFBd2hFO0tBSEplLG1DQUdJdmlFLGVBSEpzaUU7S0FFSUUsVUFBQSw0QkFBQWY7S0FGSmdCLG1DQUVJRCxlQUZKRDtLQUNJRyxVQUFBLDRCQUFBaEI7S0FESmlCLG1DQUNJRCxlQURKRDtJQUFBLFdBQUFFO0dBYXFDO1lBRmpDQyxzQkFBQXgvTCxHQUFBLE9BQUFBLE1BQXFCO1lBRHJCeS9MLG1CQUFBei9MLEdBQUEsT0FBQUEsTUFBa0I7WUFEbEIwL0wsbUJBQUExL0wsR0FBQSxPQUFBQSxLQUFrQjtZQURsQjIvTCxZQUFBMy9MLEdBQUEsT0FBQUEsS0FBVztZQURYNC9MLGtCQUFBNS9MLEdBQUEsT0FBQUEsS0FBaUI7WUFEakI2L0wsWUFBQTcvTCxHQUFBLE9BQUFBLEtBQVc7WUFEWDgvTCxhQUFBOS9MLEdBQUEsT0FBQUEsS0FBWTtZQURac29LLFFBQUF0b0ssR0FBQSxPQUFBQSxLQUFPO1lBRFArL0wsZUFBQS8vTCxHQUFBLE9BQUFBLEtBQWM7WUFEZGdnTSxxQkFBQWhnTSxHQUFBLE9BQUFBLEtBQW9CO1lBRHBCaWdNLGdCQUFBamdNLEdBQUEsT0FBQUEsS0FBZTtpQkFVZkEsR0FBQS9wQjtJQUFBLFdBQUErcEIsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUEsT0FBQS9wQjtHQUFxQjtHQUFyQjs7SUFBQWlxTjs7dUJBQUEsU0FBcUI7OztPQUFyQlY7O2lCQURBeC9MLEdBQUEvcEI7SUFBQSxXQUFBK3BCLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUFBLE1BQUEvcEIsR0FBQStwQjtHQUFrQjtHQUFsQjs7SUFBQW1nTTs7dUJBQUEsU0FBa0I7OztPQUFsQlY7O2lCQURBei9MLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtHQUFrQjtHQUFsQjs7SUFBQW9nTTs7dUJBQUEsU0FBa0I7OztPQUFsQlY7O2lCQURBMS9MLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtHQUFXO0dBQVg7O0lBQUFxZ007O3VCQUFBLFNBQVc7OztPQUFYVjs7aUJBREEzL0wsR0FBQS9wQjtJQUFBO1lBQUErcEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQS9wQjtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO0dBQWlCO0dBQWpCOztJQUFBc2dNOzt1QkFBQSxTQUFpQjs7O09BQWpCVjs7aUJBREE1L0wsR0FBQS9wQjtJQUFBO1lBQUErcEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQS9wQjtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0dBQVc7R0FBWDs7SUFBQXVnTTs7dUJBQUEsU0FBVzs7O09BQVhWOztpQkFEQTcvTCxHQUFBL3BCO0lBQUE7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBL3BCO1lBQUErcEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBWTtHQUFaOztJQUFBd2dNOzt1QkFBQSxTQUFZOzs7T0FBWlY7O2lCQURBOS9MLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtHQUFPO0dBQVA7O0lBQUF5Z007MEJBQUEsU0FBTyx3QkFBUG40QjtpQkFEQXRvSyxHQUFBL3BCO0lBQUE7WUFBQStwQjtZQUFBQTtZQUFBL3BCO1lBQUErcEI7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7R0FBYztHQUFkOztJQUFBMGdNOzt1QkFBQSxTQUFjOzs7T0FBZFg7O2lCQURBLy9MLEdBQUEvcEI7SUFBQTtZQUFBK3BCO1lBQUEvcEI7WUFBQStwQjtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtHQUFvQjtHQUFwQjs7SUFBQTJnTTs7dUJBQUEsU0FBb0I7OztPQUFwQlg7O2lCQURBaGdNLEdBQUEvcEI7SUFBQTtZQUFBQTtZQUFBK3BCO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO1lBQUFBO0dBQWU7R0FBZjs7SUFBQTRnTTs7dUJBQUEsU0FBZTs7O09BQWZYOztZQURDdHNEO0lBQUFrdEQ7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTFnTTtJQUFBO0tBQUEsUUFBQSxXQUFBZ2dNLHFCQUNERCxtQkFEQy8vTDtLQUFBQztLQUFBMGdNO0tBQUE7T0FBQTtTQUFBViwwQkFFREgsd0JBRkM3L0w7S0FBQUU7S0FBQXlnTTtLQUFBLFVBQUEsV0FBQVYsb0JBR0RMLGtCQUhDMS9MO0tBQUFFO0tBQUF3Z007S0FBQSxVQUFBLFdBQUFWLGFBSURQLFdBSkN2L0w7S0FBQUU7S0FBQXVnTTtLQUFBLFVBQUEsV0FBQVYsa0JBS0RULGdCQUxDcC9MO0tBQUEyMkY7S0FBQTZwRztLQUFBLFVBQUEsV0FBQVYsaUJBTURYLGVBTkN4b0c7S0FBQUU7S0FBQTRwRztLQUFBO09BQUEsV0FBQVYsdUJBT0RiLHFCQVBDcm9HO0tBQUFFO0tBQUEycEc7S0FBQSxVQUFBLFdBQUFWLGlCQVFEZixlQVJDbG9HO0tBQUFFO0tBQUEwcEc7S0FBQTtPQUFBLFdBQUFWLHdCQVNEakIsc0JBVEMvbkc7S0FBQUU7S0FBQXlwRztLQUFBO09BQUEsV0FBQVYsd0JBVURuQixzQkFWQzVuRztLQUFBRTtLQUFBd3BHO0tBQUE7T0FBQTtTQUFBViwyQkFXRHJCLHlCQVhDem5HO0tBQUFFO0tBQUF1cEc7SUFBQTtxQkFBQTVnTTthQUFBO2NBQUEyK0wsa0JBQUEsV0FBQXVCLHFCQUFBbGdNO2NBQUEwK0wsdUJBQUEsV0FBQXlCLDBCQUFBbmdNO2NBQUF5K0wsaUJBQUEsV0FBQTJCLG9CQUFBcGdNO2NBQUFnbkssVUFBQSxXQUFBcTVCLGFBQUFyZ007Y0FBQXcrTCxlQUFBLFdBQUE4QixrQkFBQXRnTTtjQUFBdStMLGNBQUEsV0FBQWdDLGlCQUFBdmdNO2NBQUFzK0wsb0JBQUEsV0FBQWtDLHVCQUFBeGdNO2NBQUFxK0wsY0FBQSxXQUFBb0MsaUJBQUF6Z007Y0FBQW8rTCxxQkFBQSxXQUFBc0Msd0JBQUExZ007Y0FBQW0rTCxxQkFBQSxXQUFBd0Msd0JBQUEzZ007Y0FBQWsrTDtnQkFBQSxXQUFBMEMsMkJBQUE1Z007YUFBQTtxQkFBQTIrTDtxQkFBQUQ7cUJBQUFEO3FCQUFBejNCO3FCQUFBdzNCO3FCQUFBRDtxQkFBQUQ7cUJBQUFEO3FCQUFBRDtxQkFBQUQ7cUJBQUFEO1lBQUM7WUFBRDdtRzs7WUFBQTc5RjtJQUFBbWxNO0lBQUFEO0lBQUFEO0lBQUF6M0I7SUFBQXczQjtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBRDtJQUFBO1lBQUFTO1lBQUFEO1lBQUFEO1lBQUF6M0I7WUFBQXczQjtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtZQUFBRDtHQUFDO1lBQURwMEw7SUFBQXkxTDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBQSwyQkFXRHJCO0tBWEMsT0FBQSxXQUFBb0Isd0JBVURuQjtLQVZDLE9BQUEsV0FBQWtCLHdCQVNEakI7S0FUQyxPQUFBLFdBQUFnQixpQkFRRGY7S0FSQyxPQUFBLFdBQUFjLHVCQU9EYjtLQVBDLE9BQUEsV0FBQVksaUJBTURYO0tBTkMsT0FBQSxXQUFBVSxrQkFLRFQ7S0FMQyxPQUFBLFdBQUFRLGFBSURQO0tBSkMsT0FBQSxXQUFBTSxvQkFHREw7S0FIQyxPQUFBLFdBQUFJLDBCQUVESDtJQUZDO1lBQUEsV0FBQUUscUJBQ0REOzs7Ozs7Ozs7OztHQURFO1lBQURqeks7SUFBQWt6SztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBLFdBQUFWLHFCQUNERDtJQURDLFdBQUFFLDBCQUVESDtJQUZDLFdBQUFJLG9CQUdETDtJQUhDLFdBQUFNLGFBSURQO0lBSkMsV0FBQVEsa0JBS0RUO0lBTEMsV0FBQVUsaUJBTURYO0lBTkMsV0FBQVksdUJBT0RiO0lBUEMsV0FBQWMsaUJBUURmO0lBUkMsV0FBQWdCLHdCQVNEakI7SUFUQyxXQUFBa0Isd0JBVURuQjtJQUNBLE9BQUEsV0FYQ29CLDJCQVdEckI7R0FYRTtZQUFEcjlKO0lBQUFsdEM7SUFBQWtyTTtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBLE9BV0Q7YUFYQ0E7YUFBQTtlQUFBRDtlQUFBO2lCQUFBRDtpQkFBQTttQkFBQUQ7bUJBQUE7cUJBQUFEO3FCQUFBO3VCQUFBRDt1QkFBQTt5QkFBQUQ7eUJBQUE7MkJBQUFEOzJCQUFBOzZCQUFBRDs2QkFBQTsrQkFBQUQ7K0JBQUEsV0FBQUQscUJBQUFsck0sTUFDRGlyTTsrQkFDQUQ7NkJBQ0FEOzJCQUNBRDt5QkFDQUQ7dUJBQ0FEO3FCQUNBRDttQkFDQUQ7aUJBQ0FEO2VBQ0FEO2FBQ0FEO0dBWEU7WUFBRGhzRCxXQUFBMXlJO0lBQUE7S0FBQSxXQUFBLFdBQUFBLFdBV0QwK0w7S0FYQyxXQUFBLFdBQUExK0wsV0FVRDIrTDtLQVZDLFdBQUEsV0FBQTMrTCxXQVNENCtMO0tBVEMsV0FBQSxXQUFBNStMLFdBUUQ2K0w7S0FSQyxXQUFBLFdBQUE3K0wsV0FPRDgrTDtLQVBDLFdBQUEsV0FBQTkrTCxXQU1EKytMO0tBTkMsV0FBQSxXQUFBLytMLFdBS0RnL0w7S0FMQyxXQUFBLFdBQUFoL0wsV0FJRGkvTDtLQUpDLFdBQUEsV0FBQWovTCxXQUdEay9MO0tBSEMsV0FBQSxXQUFBbC9MLFdBRURtL0w7SUFGQyxXQUFBLFdBQUFuL0wsV0FDRG8vTDtHQURFO1lBQURuOEo7SUFBQW84SjtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUEsT0FBQSxXQUFBVixxQkFDREQ7S0FEQzs7VUFBQSxXQUFBRSwwQkFFREg7O0tBRkMsY0FBQSxXQUFBSSxvQkFHREw7S0FIQyxjQUFBLFdBQUFNLGFBSURQO0tBSkMsY0FBQSxXQUFBUSxrQkFLRFQ7S0FMQyxjQUFBLFdBQUFVLGlCQU1EWDtLQU5DO2NBQUEsV0FBQVksdUJBT0RiO0tBUEMsY0FBQSxXQUFBYyxpQkFRRGY7S0FSQztjQUFBLFdBQUFnQix3QkFTRGpCO0tBVEM7Y0FBQSxXQUFBa0Isd0JBVURuQjtJQVZDO2NBV0QsV0FYQ29CLDJCQVdEckI7O0dBWEU7WUFBRHY3SjtJQUFBazhKO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQSxPQUFBLFdBQUFWLHFCQUNERDtLQURDO2VBQUEsV0FBQUUsMEJBRURIO0tBRkMsZUFBQSxXQUFBSSxvQkFHREw7S0FIQyxlQUFBLFdBQUFNLGFBSURQO0tBSkMsZUFBQSxXQUFBUSxrQkFLRFQ7S0FMQyxlQUFBLFdBQUFVLGlCQU1EWDtLQU5DLGVBQUEsV0FBQVksdUJBT0RiO0tBUEMsZUFBQSxXQUFBYyxpQkFRRGY7S0FSQyxlQUFBLFdBQUFnQix3QkFTRGpCO0tBVEMsZUFBQSxXQUFBa0Isd0JBVURuQjtJQVZDOztjQVdELFdBWENvQiwyQkFXRHJCO0dBWEU7WUFBRHZ6SjtJQUFBazBKO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQTtXQUFBLFdBQUFBLDJCQVdEckI7S0FYQztXQUFBLFdBQUFvQix3QkFVRG5CO0tBVkM7V0FBQSxXQUFBa0Isd0JBU0RqQjtLQVRDLFdBQUEsV0FBQWdCLGlCQVFEZjtLQVJDLFdBQUEsV0FBQWMsdUJBT0RiO0tBUEMsV0FBQSxXQUFBWSxpQkFNRFg7S0FOQyxXQUFBLFdBQUFVLGtCQUtEVDtLQUxDLFdBQUEsV0FBQVEsYUFJRFA7S0FKQyxXQUFBLFdBQUFNLG9CQUdETDtLQUhDO1dBQUEsV0FBQUksMEJBRURIO0lBRkMsV0FBQSxXQUFBRSxxQkFDREQ7R0FERTtZQUFEcitKO0lBQUEvZ0M7SUFBQXEvTDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBLFdBQUFWLHFCQUNERCxtQkFEQ3AvTCxRQUFBQTtJQUFBO01BQUFzL0wsMEJBRURILHdCQUZDbi9MLFFBQUFBO0lBQUEsV0FBQXUvTCxvQkFHREwsa0JBSENsL0wsUUFBQUE7SUFBQSxXQUFBdy9MLGFBSURQLFdBSkNqL0wsUUFBQUE7SUFBQSxXQUFBeS9MLGtCQUtEVCxnQkFMQ2gvTCxRQUFBQTtJQUFBLFdBQUEwL0wsaUJBTURYLGVBTkMvK0wsUUFBQUE7SUFBQSxXQUFBMi9MLHVCQU9EYixxQkFQQzkrTCxRQUFBQTtJQUFBLFdBQUE0L0wsaUJBUURmLGVBUkM3K0wsUUFBQUE7SUFBQTtNQUFBNi9MLHdCQVNEakIsc0JBVEM1K0wsUUFBQUE7SUFBQTtNQUFBOC9MLHdCQVVEbkIsc0JBVkMzK0wsUUFBQUE7SUFXRCxPQUFBO2FBWEMrL0w7YUFXRHJCO2FBWEMxK0w7YUFBQUE7R0FBQztZQUFEeXZDO0lBQUF6dkM7SUFBQTdMO0lBQUFrck07SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7O1lBQUEvL0w7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7WUFBQUE7SUFBQSxPQUFBO2FBQUErL0w7YUFBQTtlQUFBRDtlQUFBO2lCQUFBRDtpQkFBQTttQkFBQUQ7bUJBQUE7cUJBQUFEO3FCQUFBO3VCQUFBRDt1QkFBQTt5QkFBQUQ7eUJBQUE7MkJBQUFEOzJCQUFBOzZCQUFBRDs2QkFBQTsrQkFBQUQ7K0JBQUE7aUNBQUFEO2lDQUFBbHJNO2lDQUNEaXJNO2lDQURDcC9MO2lDQUFBQTsrQkFFRG0vTDsrQkFGQ24vTDs7NkJBR0RrL0w7NkJBSENsL0w7OzJCQUlEaS9MOzJCQUpDai9MOzt5QkFLRGcvTDt5QkFMQ2gvTDs7dUJBTUQrK0w7dUJBTkMvK0w7O3FCQU9EOCtMO3FCQVBDOStMOzttQkFRRDYrTDttQkFSQzcrTDs7aUJBU0Q0K0w7aUJBVEM1K0w7O2VBVUQyK0w7ZUFWQzMrTDs7YUFXRDArTDthQVhDMStMOzs7WUFBQW12QztJQUFBbnZDO0lBQUFxL0w7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBO09BQUEsV0FBQVYscUJBQ0RELG1CQURDcC9MLFFBQUFBO0tBQUE7O1VBQUE7V0FBQXMvTDtXQUVESDtXQUZDbi9MO1dBQUFBOztLQUFBOztVQUFBLFdBQUF1L0wsb0JBR0RMLGtCQUhDbC9MLFFBQUFBOztLQUFBO2NBQUEsV0FBQXcvTCxhQUlEUCxXQUpDai9MLFFBQUFBO0tBQUE7O1VBQUEsV0FBQXkvTCxrQkFLRFQsZ0JBTENoL0wsUUFBQUE7O0tBQUE7O1VBQUEsV0FBQTAvTCxpQkFNRFgsZUFOQy8rTCxRQUFBQTs7S0FBQTs7VUFBQTtXQUFBMi9MLHVCQU9EYixxQkFQQzkrTCxRQUFBQTs7S0FBQTs7VUFBQSxXQUFBNC9MLGlCQVFEZixlQVJDNytMLFFBQUFBOztLQUFBOztVQUFBO1dBQUE2L0wsd0JBU0RqQixzQkFUQzUrTCxRQUFBQTs7S0FBQTs7VUFBQTtXQUFBOC9MLHdCQVVEbkIsc0JBVkMzK0wsUUFBQUE7O0lBQUE7Y0FXRDtlQVhDKy9MO2VBV0RyQjtlQVhDMStMO2VBQUFBOztHQUFDO1lBQURrdkM7SUFBQWx2QztJQUFBcS9MO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUE7S0FBQTtPQUFBLFdBQUFWLHFCQUNERCxtQkFEQ3AvTCxRQUFBQTtLQUFBOzs7UUFBQTtVQUFBcy9MLDBCQUVESCx3QkFGQ24vTCxRQUFBQTtLQUFBOztVQUFBLFdBQUF1L0wsb0JBR0RMLGtCQUhDbC9MLFFBQUFBO0tBQUEsZUFBQSxXQUFBdy9MLGFBSURQLFdBSkNqL0wsUUFBQUE7S0FBQTtlQUFBLFdBQUF5L0wsa0JBS0RULGdCQUxDaC9MLFFBQUFBO0tBQUE7ZUFBQSxXQUFBMC9MLGlCQU1EWCxlQU5DLytMLFFBQUFBO0tBQUE7OztRQUFBO1VBQUEyL0wsdUJBT0RiLHFCQVBDOStMLFFBQUFBO0tBQUE7ZUFBQSxXQUFBNC9MLGlCQVFEZixlQVJDNytMLFFBQUFBO0tBQUE7OztRQUFBO1VBQUE2L0wsd0JBU0RqQixzQkFUQzUrTCxRQUFBQTtLQUFBOzs7UUFBQTtVQUFBOC9MLHdCQVVEbkIsc0JBVkMzK0wsUUFBQUE7SUFBQTs7Y0FXRDtlQVhDKy9MO2VBV0RyQjtlQVhDMStMO2VBQUFBO0dBQUM7WUFBRDh1QztJQUFBOXVDO0lBQUFxL0w7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQUM7SUFBQTtLQUFBOztRQUFBO1VBQUFBO1VBV0RyQjtVQVhDMStMO1VBQUFBOztLQUFBOztRQUFBO1VBQUE4L0wsd0JBVURuQixzQkFWQzMrTCxRQUFBQTs7S0FBQTs7UUFBQTtVQUFBNi9MLHdCQVNEakIsc0JBVEM1K0wsUUFBQUE7O0tBQUE7O1FBQUEsV0FBQTQvTCxpQkFRRGYsZUFSQzcrTCxRQUFBQTs7S0FBQTs7UUFBQTtVQUFBMi9MLHVCQU9EYixxQkFQQzkrTCxRQUFBQTs7S0FBQTs7UUFBQSxXQUFBMC9MLGlCQU1EWCxlQU5DLytMLFFBQUFBOztLQUFBOztRQUFBLFdBQUF5L0wsa0JBS0RULGdCQUxDaC9MLFFBQUFBOztLQUFBLFdBQUEsV0FBQXcvTCxhQUlEUCxXQUpDai9MLFFBQUFBO0tBQUE7O1FBQUEsV0FBQXUvTCxvQkFHREwsa0JBSENsL0wsUUFBQUE7O0tBQUE7O1FBQUE7VUFBQXMvTCwwQkFFREgsd0JBRkNuL0wsUUFBQUE7O0lBQUE7WUFBQTtjQUFBcS9MLHFCQUNERCxtQkFEQ3AvTCxRQUFBQTs7R0FBQztZQUFEbWhDO0lBQUFuaEM7SUFBQXEvTDtJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBO0tBQUE7T0FBQTtTQUFBQTtTQVdEckI7U0FYQzErTDtTQUFBQTtLQUFBO09BQUE7U0FBQTgvTCx3QkFVRG5CLHNCQVZDMytMLFFBQUFBO0tBQUE7T0FBQTtTQUFBNi9MLHdCQVNEakIsc0JBVEM1K0wsUUFBQUE7S0FBQSxPQUFBLFdBQUE0L0wsaUJBUURmLGVBUkM3K0wsUUFBQUE7S0FBQTtPQUFBO1NBQUEyL0wsdUJBT0RiLHFCQVBDOStMLFFBQUFBO0tBQUEsT0FBQSxXQUFBMC9MLGlCQU1EWCxlQU5DLytMLFFBQUFBO0tBQUEsT0FBQSxXQUFBeS9MLGtCQUtEVCxnQkFMQ2gvTCxRQUFBQTtLQUFBLE9BQUEsV0FBQXcvTCxhQUlEUCxXQUpDai9MLFFBQUFBO0tBQUE7T0FBQSxXQUFBdS9MLG9CQUdETCxrQkFIQ2wvTCxRQUFBQTtLQUFBO09BQUE7U0FBQXMvTCwwQkFFREgsd0JBRkNuL0wsUUFBQUE7SUFBQTtZQUFBO2NBQUFxL0wscUJBQ0RELG1CQURDcC9MLFFBQUFBOzs7Ozs7Ozs7OztHQUFDO1lBQUQ0eUkseUJBQUE1eUk7SUFBQSw2QkFBQUE7SUFBQTtHQUFDO0dBQUQ7SUFBQTs7T0FBQStnQztPQUFBME87T0FBQU47T0FBQUQ7T0FBQUo7T0FBQTNOO09BQUF5eEc7b0RBQUw1cUosV0FBQWxEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXVCRnlwSjtZQUFBb3lELG9CO1lBQUFyL00sY0FBQTNMLEtBQUFDO0ksT0FBQUE7O09BQ0UsT0FBQSx5QkFERkQ7O09BRUUsT0FBQSx5QkFGRkE7ZUFHRSxPQUFBLHlCQUhGQTs7O0dBQUEsU0FBQTZMLE9BQUE1TDtJQUFBLElBQUFELDhDQUFBMkwsY0FBQTNMLEtBQUFDOztHQUkwQztZQUoxQyt4QjtJQUFBOztPQUNFOztPQUNBO2VBQ0E7O0dBQ3dDO1lBRXRDOGhEO0lBQVMsc0JBQ0csaUJBQ0Msa0JBQ0Q7O0dBQUM7WUFJZm0zSTtJQUNHQztJQUNBcEM7SUFDQUQ7SUFDQUQ7SUFDQXozQjtJQUNBdzNCO0lBQ0FEO0lBQ0FEO0lBQ0FEO0lBQ0FEO0lBQ0FEO0lBQ0FEOztJQUdvQixJQUFyQjhDLHFCQUFxQjthQUNyQjlrTixFQUFFWCxLQUFJdEIsV0FBVWduTjtLQUNGLElBQVpDLFlBQVksMEJBREVELE9BRGhCRDtLQUdGLEtBRkl6bE4sS0FHTSxPQUZOMmxOO1NBR0dyNUIsWUFKSHRzTDttQkFLeUJXO01BQ3pCO09BS0UsT0FBQSxXQVhFakMsV0FJRDR0TDtPQU1ELE9BQUEsV0FWRTV0TCxXQUNKaW5OO09BUUUsT0FBQSwwQkFUWUQ7TUFXWixPQUFBLDJCQU51Qi9rTjtLQU1GO0tBTnpCLDRCQXBCQzZrTjtLQW9CRCxPQURLbDVCO0lBUUk7SUFFVztLQUFwQm0zQjtPQUFvQiw0QkF0Qm5CVixtQkFmRDMwSTs7SUFrRHVCLG9CLE9BM0J2Qnp0RSxFQUpDZ2lOO0lBK0JzQjtJQURILG9CLE9BMUJwQmhpTixFQUxDaWlOO0lBK0JtQjtJQURBLG9CLE9BekJwQmppTixFQU5Da2lOO0lBK0JtQjtJQURQLG9CLE9BeEJibGlOLEVBUENtaU47SUErQlk7SUFETSxvQixPQXZCbkJuaU4sRUFjQThpTjtJQVNtQjtJQUROLG9CLE9BdEJiOWlOLEVBVENxaU47SUErQlk7SUFEQyxvQixPQXJCZHJpTixFQVZDc2lOO0lBK0JhO0lBREwsb0IsT0FwQlR0aU4sRUFYQzhxTDtJQStCUTtJQURPLG9CLE9BbkJoQjlxTCxFQVpDdWlOO0lBK0JlO0lBRE0sb0IsT0FsQnRCdmlOLEVBYkN3aU47SUErQnFCO0tBQUE7S0FIdEJ5QztPQW5FR3IzTDt3QixPQW9ESDV0QixFQWRDeWlOOzs7Ozs7Ozs7OztJQTJDTCxPQUFBLG9CQWRJd0M7O1lBaUJGQyxtQkFBb0JMLFFBQVF6QztJQUM5QixVQUQ4QkE7U0FDMUJVOztTQUdRcUMsU0FKa0IvQyxzQkFDMUJVLDBCQUdRcUM7SUFNWixPQTFERVA7YUFnRG9CQyw2QkFDbEIvQjtHQVNzRDtHQVk3QixJQUEzQjV0SSxPQUEyQjtZQUl2Qmt3SSxXQUFXQztJQUFJLHlCQUpuQm53STtHQUl1RTtZQUdyRW93SSxzQ0FHRiwwQkFNNEI7R0FBd0M7WUFLM0RDLGlCQUFrQkMsV0FBVXhsTjtJQUNyQztLQUFJeWxOLHFCQUFxQjtLQUNyQkMscUJBQXFCO0tBR3JCNW5OLElBQXdCLFdBTFNrQztLQU1qQzJsTixvQkFBb0I7S0FDcEJDLG9CQUFvQjtLQUNwQkMsd0JBREFELG9CQUxBRjtLQU9BSSx3QkFIQUgsb0JBTEFGO0lBU0osT0FBQTthQVYyQkQsV0FRdkJLLHVCQUNBQyx1QkFKQWhvTjtHQUtxRDtZQUd2RGlvTixjQUF3Qi9sTjtJQVExQixPQXJCU3VsTjtzQkF1QlVNLHVCQUF1QkMsdUJBQXNCOWtNO2NBQzVEOzRCQURlNmtNO21DQUF1QkM7O2FBRWtCO2FBWmxDOWxOO0dBWW1DO0dBSTdELFNBQUE0ckI7SUFBQTtLQUVJbzZMO0tBREFDO0tBQ0FDLFVBQUEsNEJBQUFGO0tBRkpHLGlDQUVJRDtLQURBRSxVQUFBLDRCQUFBSDtLQURKSSxtQ0FDSUQsZUFESkQ7SUFBQSxXQUFBRTtHQUlvQjtZQU9sQkMsbUJBQW1CdG1OO0lBdERuQnNsTjtJQXVERixPQXpDU0M7c0JBMEMyQk0sdUJBQXVCQyx1QkFBc0Job047Y0FDL0UsV0FEK0VBLE9BQTdDK25OLHVCQUF1QkM7YUFDZ0I7YUFIdEQ5bE47R0FHdUQ7R0FJNUUsU0FBQXVqSjtJQUFBO0tBR0lnakU7S0FEQUM7S0FEQUM7S0FFQUMsVUFBQSw0QkFBQUg7S0FISkksaUNBR0lEO0tBREFFLFVBQUEsNEJBQUFKO0tBRkpLLG1DQUVJRCxlQUZKRDtLQUNJRyxVQUFBLDRCQUFBTDtLQURKTSxtQ0FDSUQsZUFESkQ7SUFBQSxXQUFBRTtHQUtvQjtHQU5FLHlCQUN0QnhqRTtZQVVFeWpFLDJCQUEyQmhuTjtJQUM3QixJQUFJaW5OLGNBQ0FDLHVCQUNBQzthQUNBQyxTQUFVQyxVQUFVNS9CO0tBQ3RCLEdBRFk0L0I7TUFGVkgsa0JBQUFBLGtCQUVvQnovQjs7TUFEcEIwL0Isa0JBQUFBLGtCQUNvQjEvQjtLQUlOO01BQVo2L0IsWUFBWSxnQ0FKTTcvQjtNQU9kO1FBQUE7OEJBSEo2L0I7O01BUUE7T0FESzcvSztPQUNMLE9BQUEsMkJBUkE2L0ssY0FPSzcvSztPQUVrQiwyQkFBQSw0QkFFVDtPQVRkOC9LLGNBTUE7O1VBTkFBLGNBRkFEO0tBY0YsSUFERUUsYUFqQmtCLy9CLFNBQVY0L0IsVUFNUkU7S0FURk4sYUFvQkVPLFFBcEJGUDtLQXdCRjtJQUFJO0lBRU47S0FBQTs7Ozs7SUFHa0Isb0IsT0ExQmRHO0lBMEJjO0tBQUE7S0FIZEs7O3VCLE9BdkJBTDs7Ozs7SUE2Qkosb0NBTklLO0lBTUosSUFHUSxJQURKdDZILFNBQ0ksV0FwQ3FCbnRGO1VBMkNmdWxIO1NBQUFoMUQsd0JBQUFnMUQ7S0FDVjtLQUNBLE1BQUEsNEJBRlVoMUQ7O0lBRlY7SUFVRixXQUFBLDBCQWxERTAySjtJQThDSixXQVpJOTVILFlBakNBKzVILGlCQUNBQztHQWdEYTtZQWNmTyxjQUFjNXBOLEdBQUVrQztJQUNsQjtLQUFJOztpQkFBc0JsQzs4QkFBNkMsT0FBeEMsV0FEYmtDLEdBQ1FsQyxHQUFnRDtTQUFkLE9BQUE7UUFBZTtNQUF2RSxPQUFBLCtCQURZQTtLQUNaOzs7OytCQU1GOzs7R0FBRTtZQU9GNnBOLGtCQUFrQjdwTixHQUFFa0M7SUFDdEI7S0FBSTs7aUJBQXNCbEM7OEJBQTZDLE9BQXhDLFdBRFRrQyxHQUNJbEMsR0FBZ0Q7U0FBZCxPQUFBO1FBQWU7TUFBdkUsT0FBQSwrQkFEZ0JBO0tBQ2hCOzs7OztLQUVNLCtCQUhVQTtLQU1sQjs7R0FBRTtZQUdGOHBOLG1CQUFtQjlwTixHQUFFa0M7SUFDdkI7S0FBSTs2QkFBaUMsZ0NBRGRBLEdBQzRDO01BQS9ELE9BQUEsK0JBRGlCbEM7S0FDakI7Ozs7K0JBTUY7OztHQUFFO1lBR0YrcE4sdUJBQXVCL3BOLEdBQUVrQztJQUMzQjtLQUFJOzZCQUFpQyxnQ0FEVkEsR0FDd0M7TUFBL0QsT0FBQSwrQkFEcUJsQztLQUNyQjs7Ozs7S0FFTSwrQkFIZUE7S0FNdkI7O0dBQUU7T0FHRmdxTjtZQUtFdmhFO0lBQWMsT0FBQTtHQUFrQztZQUNoRHpvSSxTQUFPOWQ7SUFBSSxPQUFhOzs2QkFBVyxPQUF4Qix5QkFBSkEsR0FBMEQ7R0FBQztHQUp6RDtJQUFBLFlBR1R1bUosYUFDQXpvSTtJQWpEUTs7T0FDVjRwTTtPQWNBQztPQVNBQztPQVVBQztPQVNBQzs7Ozs7Ozs7OztRQTFZRm5nTjtRQWlCSTh6TTtRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQzs7U0FEQy82TDtTQWlCRGc3TDtTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURDdG1NO1NBQUE0TDtTQUFBL0s7U0FBQTNFO1NBQUE2RDtTQUFBSztTQUFBRDtTQUFBTTtTQUFBa007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztRQW1ESDB4Qjs7UUFvREYzc0M7UUFXSWs1TTtRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBQztRQURBeDNCO1FBREF5M0I7UUFEQUM7UUFEQUM7O1NBRENyMkU7U0FXRHMyRTtTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURBQztTQURDLzlKO1NBQUE4d0c7U0FBQTc0STtTQUFBc1E7U0FBQXVpQjtTQUFBOFc7U0FBQUU7U0FBQWdJO1NBQUF1bkc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BOEdEMHVEO1dBdkZON3lELFdBQUFveUQsU0FBQXIvTSxlQUFBRSxRQUFBbW1CO09BYUVpNUw7T0FnREFNOztZQXdFQXQ1TDtRQVdFMDZMOztRQWlCQVU7UUE1Q0FqQjtRQTNCQVQ7Ozs7O1VBbFZBcGpOO1VBQUFDO1VBQUFHO1VBQUFEO1VBQUtKO1VBQUxHO1VBQUFHO1VBQUFDO1VBQUFDO1VBQUE4YTtVQUFBM2E7VUFBQUM7VUFBQUM7VUFBQUU7O1VBc0JBRztVQUFBQztVQUFBRztVQUFBRDtVQUFLSjtVQUFMRztVQUFBRztVQUFBQztVQUFBQztVQUFBcWE7VUFBQWxhO1VBQUFDO1VBQUFDO1VBQUFNOzs7VUFqRkFqRztVQUFBRztVQUFBSztVQUFBRDtVQUFLUjtVQUFMc0Q7VUFBQUM7VUFBQUM7VUFBQUM7VUFBQStSO1VBQUE5UjtVQUFBQztVQUFBOUU7VUFBQUs7OztVQXFJQW1IO1VBQUFHO1VBQUFHO1VBQUFEO1VBQUtOO1VBQUxLO1VBQUFHO1VBQUFDO1VBQUFDO1VBQUF3dkQ7VUFBQXR3RDtVQUFBK0I7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0dqRlE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0luREE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsVUFBQTtJQUFSLGNBQVE7SUFBUixNQUFBO0lBQUFsTyxRQUFBOzs7O0lBRUQ7R0FGUyxTQUFBbUcsWUFBQWpHO0lBQVIsVUFBQTtJQUFBLE9BQUEsV0FBQSwrQkFBQUYsaUJBQVFFO0dBQTZDO1lBQXJEa0csV0FBS2hHLFdBQUxLOzJDQUFLTDs2Q0FBTEs7O1lBQUE4RixZQUFLakcsU0FBTE0sS0FBQTRGLEtBQUEvRjtJQUFBLHVDQUFLSDtJQUFMLE9BQUEsOENBQUFNLEtBQUE0RixLQUFBL0Y7R0FBcUQ7WUFBckRrRyxXQUFLaEcsTUFBaUJDLEtBQUFDLFNBQUFDOzJDQUFqQkg7eURBQWlCQyxLQUFBQyxTQUFBQzs7WUFBdEI4RixhQUFLakcsTUFBTEMsS0FBQUM7SUFBQSx1Q0FBS0Y7SUFBTCxPQUFBLDhDQUFBQyxLQUFBQztHQUFxRDs7Ozs7O2NBQTdDc0YsYUFBUkMsWUFBQUcsYUFBQUssY0FBQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUdJQXNvQztJQUFTLHVCQUNKeHVDLGNBQUssT0FBTEE7UUFDQTgzRDtJQUFLLE1BQUEsNEJBQUxBO0dBQVk7WUFHakI4N0osUUFBUXJzTixHQUFFbEM7SUFDWixJQUFJLGNBQUssV0FEQ2tDLEdBQUVsQyxLQUNSO1VBRUZ5bkg7U0FBQWgxRCx3QkFBQWcxRDtRQUFBaDFELHNCQUR1QixNQUFBLDRCQUN2QkE7S0FBSyxXQUFMQTs7R0FBVztZQUliNE8sS0FBS24vRDtJQUNDLElBQUptdkMsSUFBSSwwQkFERG52QztJQUVQO0tBQVUsK0JBRE5tdkM7NEJBQUFBO29DQUNKLE9BRElBO0tBQ0osT0FBQSxnQ0FESUEsR0FDa0I7R0FBQTtZQTZDcEJtOUssUUFBU0MsWUFBVUMsa0JBQWlCeHNOO0lBQ3RDLEdBRHFCd3NOO1NBeEIrQkMsaUJBd0IvQkQ7UUFBVkQ7VUF4QmlCaGpMLFFBd0JqQmdqTCxlQXhCTTk2SyxhQUFXbEk7O1VBQVhrSTtLQUNkLEdBQUEsa0NBRGlEZzdLO01BRS9DLHdDQUYrQ0E7S0FVeEM7TUFIOEJ6cE4sY0FQekJ5dUM7TUFPZ0JodkMsWUFQaEJndkM7TUFPUDV1QyxTQVBPNHVDOzs0Q0FPZ0JodkMsV0FBU08sYUFBaENIO01BR042cE4sVUFBUTtLQUNaLGdCQUFJOXlOO01BRU8sWUFBQSxzQkFIUDh5TixTQUNBOXlOOztXQUdRdXpGLG1CQUFBcVAsV0FBQXJQOztPQUVRLElBQVRzUCxXQTlDUDR2SCxRQXNEa0Nyc04sR0FibENwRztPQU1HLHNCQVBIOHlOLFNBQ0E5eU4sS0FLTzZpRztPQUdELFVBQUEscUJBVE5pd0g7T0FTTSxHQUFBLHVDQW5CMENEO1FBb0JoQyxzQkFWaEJDO1dBSVFsd0gsV0FFREM7O2FBbkRQeDFELFNBaURRdTFELFVBT0U7O09BR0grdkg7U0ExQ3VCanROLE1BMEN2Qml0TixlQTFDWXQ5SyxXQUFXM3ZDOztTQUFYMnZDO0lBQ3ZCO0tBSzRDNXhDLFlBTnJCNHhDO0tBTVlydEMsVUFOWnF0QztLQU1YbnRDLE9BTldtdEM7MENBTVlydEMsU0FBU3ZFLFdBQWhDeUU7S0FMUjZxTixRQVFGO2FBSUVDLGNBQWNoek4sS0FBTSxPQXpCcEJ5eU4sUUFzRGtDcnNOLEdBN0JwQnBHLEtBQTBCO0lBQzVDLGdCQUFJQTtLQUFPLE9BL0JQcXRDLFNBK0JxQiw2QkFickIwbEwsT0FhQS95TixLQURBZ3pOLGdCQUM0RTtHQStCbkM7WUF5QjNDdGtDLFVBQVdyNUksVUFBVXU5SyxrQkFBaUJLO0lBQ3hDLElBQVFDOztNQUFBQTs7O1FBQ29DLE9BOUIxQ1I7cUJBNEJXcjlLO2lCQUFVdTlLO2lCQUVxQjttQkFGSks7NEJBRW9CL3VOO29CQUFLLE9BQUE7NkJBQUEsbUNBRHpEZ3ZOLFdBQ29EaHZOO21CQUF1Qjs7SUFFbkYsT0FBQSxtQ0FIUWd2TjtHQUdNO1lBR1pDLGNBQW1DMW1MO0ksZ0JBQTRDcm1DO0tBQ3pFLElBQUpmLFFBRGlDb25DO0tBRXJDLGdCQUFLdm9DO01BRUssWUFBQSx5QkFITm1CLE1BQ0NuQjs7V0FHTXJGLGNBRkxtOUMsTUFFS245Qzs7T0FFRyxJQUFKdTBOLE1BaEdOWCxRQXlGNkVyc04sR0FFNUVsQztPQUREbUIsT0FPTyx5QkFQUEEsTUFDQ25CLEdBS0trdk47V0FKSnAzSyxNQUlJbzNLOztNQUlSLE9BekdFL2xMLFNBaUdFMk8sS0FRVyxFQUFBOzs7Ozs7dUJBOUNmMDJLLFNBNEJBaGtDLFdBM0VBbnBILE1Ba0ZBNHRKOzs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJRzZWSW5oTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBN2FKM3pCLE9BQVFnMU0sZ0JBQWdCQztJQUMxQixHQUQwQkE7U0FJakJ4N00sSUFKaUJ3N00saUJBQ3RCQyxpQkFHS3o3TTs7U0FITHk3TSxpQkFFUSw0QkFIRkY7SUFNVyxJQUFqQkcsbUJBQWlCLDRCQU5YSDtJQU9QLEdBQUEsa0NBRENHO0tBRUMsd0NBRkRBO0lBRUMsSUFHREMsYUFMQUQ7SUFNSjtZQUFRLGtDQURKQzs7Ozs7WUFBQUE7WUFWQUY7R0FrQkg7WUFHQ3B3TSxPQUFPemYsR0FBSSxPQUFKQSxLQUFZO1lBQ25CNFosU0FBUzVaLEdBQUksT0FBQSxrQ0FBSkEsU0FBZ0I7WUFlekJnd04sK0JBQW9DaHdOLEdBQUksT0FBSkEsS0FBMEI7WUFDOURpd04sK0JBQW1DandOLEdBQUksUUFBSkEsT0FBQUE7R0FBeUM7WUFFNUVrd04sK0JBQWtDbHdOO0lBQ3BDLE9BQUcsa0NBRGlDQSxNQUFBQTs7Y0FBQUE7R0FDNkI7WUFHL0Rtd04sK0JBQWlDbndOO0lBQ25DLE9BQUcsa0NBRGdDQTtjQUFBQTtjQUFBQTtHQUM0QjtZQUc3RG93TixRQUFRcHdOLEdBQUUwQyxHQUFJLE9BMUJka1gsU0EwQlE1WixhQUF3QyxXQUF0QzBDLEdBQUYxQyxJQUE2QztZQUNyRHF3TixxQkFBcUJyd047SUFBSSxPQUR6Qm93TixRQUNxQnB3TixHQVpyQmd3TjtHQVlzRTtZQUN0RU0sb0JBQW9CdHdOO0lBQUksT0FGeEJvd04sUUFFb0Jwd04sR0FacEJpd047R0FZb0U7WUFFcEVqME0sTUFBT2hjLEdBQUVvc0ksS0FBS3Z4SCxNQUFNblk7SUFDdEIsR0EvQkVrWCxTQThCTzVaLElBRUosT0FGVzZhO0lBSU87S0FBakIwMU0saUJBSkd2d047S0FLSHd3TixnQkFuQkpQLCtCQWNPandOO0tBTUh5d04sZUFsQkpQLCtCQVlPbHdOO0tBT0gwd04sY0FmSlAsK0JBUU9ud047YUFRQysrSyxLQUFLdjRKLEtBQUttcU0sWUFBWUMsUUFBUUMsVUFBVXZzRztLQUM5QyxJQURXdHFELFFBQUF4ekMsS0FBS3NxTSxlQUFBSCxZQUFZSSxXQUFBSDtLQUM1QjtNQUFHLEdBQUEsa0NBRHlCRyxVQUFRRjtPQUUvQixXQUZNNzJKLE9BQUs4Mko7TUFLWjtPQUx3QkUsV0FBQUQsV0FBa0J6c0c7T0FBOUIyc0csZUFBQUgsZUFBOEJ4c0c7T0FBbkM0c0c7U0FLUDtXQWJjeHVOO1dBUUZvdU47V0FBTDkySjtXQUtXLGtDQWJqQmg2RCxNQVF1Qit3TjtPQUFqQi8ySixRQUFBazNKO09BQUtKLGVBQUFHO09BQVlGLFdBQUFDOztJQVNuQjtvQkFqQkY1a0Y7S0FxREosR0FBQSxrQ0EvQ0Rxa0YsY0FDQUM7O09BZ0RJbHFNO1NBL0NBdTRKLEtBUk1sa0ssTUFLVjIxTSxlQUVBRSxhQURBRDtNQXlEQSxPQVJJanFNOztLQVdGO01BQUEsUUExREV1NEosS0FSTWxrSyxNQUtWMjFNLGVBRUFFO01BMERTQztNQUFMMzJKO01BUUFrM0o7UUFqRUFueUMsS0F5REEva0gsT0FBSzIySixZQWpFTjN3TixjQU1IeXdOO0tBMkVBLE9BUklTOztJQTNDSCxHQUFBLGtDQXhCRFQsY0FDQUM7O01BeUJJUztRQXhCQXB5QyxLQVJNbGtLLE1BSVYwMU0sZ0JBRUFFLGNBQ0FDO0tBaUNBLE9BUklTOztJQVdGO0tBQUEsVUFuQ0VweUMsS0FSTWxrSyxNQUlWMDFNLGdCQUVBRSxjQU5HendOO0tBMENNOHdOO0tBQUxNO0tBUUFDLFFBMUNBdHlDLEtBa0NBcXlDLE9BQUtOLGlCQW5DVEo7SUE0Q0EsT0FESVc7R0ErQkM7WUFHVHYzTSxLQUFNOVosR0FBRW9zSSxLQUFLdnhILE1BQU1uWTtJQUFJLE9BcEZ2QnNaO2FBb0ZNaGM7YUFBRW9zSTthQUFLdnhIOzZCQUF1QzJMLEtBQUlyckIsR0FBSyxPQUFBLFdBQTFDdUgsR0FBaUM4akIsS0FBSXJyQixHQUFZO0dBQUM7WUFDckUyZ0IsTUFBTzliLEdBQUVvc0ksS0FBSzFwSTtJQUFJLE9BckZsQnNaO2FBcUZPaGMsR0FBRW9zSSxpQkFBdUN0MUgsVUFBSzNiLEdBQUssT0FBQSxXQUE1Q3VILEdBQWtDb1UsR0FBSzNiLEdBQVU7R0FBQztZQUNoRTBlLEtBQU03WixHQUFFb3NJLEtBQUsxcEk7SUFBSSxPQXRGakJzWixNQXNGTWhjLEdBQUVvc0ksNkJBQTRDanhJLEdBQUssT0FBQSxXQUE1Q3VILEdBQXVDdkgsR0FBUTtHQUFDO1lBQzdEeXJCLE9BQUs1bUIsR0FBRzZhLE1BQU1uWSxHQUFJLE9BSGxCb1gsS0FHSzlaLGNBQUc2YSxNQUFNblksR0FBbUM7WUFDakQ4bUksUUFBTXhwSSxHQUFHNmEsTUFBTW5ZLEdBQUksT0F4Rm5Cc1osTUF3Rk1oYyxjQUFHNmEsTUFBTW5ZLEdBQW9DO1lBQ25ENjZDLFFBQU12OUMsR0FBRzBDLEdBQUksT0FKYm9aLE1BSU05YixjQUFHMEMsR0FBOEI7WUFFdkM0dU4sZUFBZXR4TixHQUFHMEM7SUFDYixjQTFITGtYLFNBeUhlNVo7Y0FDVjtJQUVjO0tBQWZ5d04sZUExR0pQLCtCQXVHZWx3TjtLQUlYMHdOLGNBdkdKUCwrQkFtR2Vud047YUFLUCsrSyxLQUFNNnhDLFFBQVFDO0tBQ3BCLElBRFlFLFdBQUFIO0tBQ1o7TUFBRyxVQUFBLGtDQURTRyxVQUFRRjtNQUNqQixVQUFBO01BRUQsV0FSY251TixHQUFIMUMsTUFLRCt3TjtVQUFBQyxXQUFBRCxrQkFBQUEsV0FBQUM7O0lBSTBCO0lBRXJDLE9BQUEsa0NBUkNQLGNBQ0FDO2NBQ0kzeEMsS0FGSjB4QyxjQUNBQztlQUNJM3hDLEtBRkoweEMsY0FIV3p3TixPQUtQKytLLFFBREoyeEM7R0FXMEM7WUFHOUMvcE0sT0FBSzNtQixHQUFHMEM7SUFBSSxPQWxCWjR1TjthQWtCS3R4TjtzQkFBZ0NpK0QsS0FBSW5uRDtjQUFLLE9BQUEsV0FBdENwVSxHQUFzQyxrQ0FBVHU3RCxLQUFJbm5EO2FBQXlDO0dBQUM7WUFFbkYrNUIsTUFBTTd3QztJQUNSLEdBRFFBO0tBcEJOc3hOLGVBb0JNdHhOOztLQUFBQSxPQUtNO0lBTE5BO0lBQUFBO0lBQUFBO0lBQUFBLE9BU1Esa0NBVFJBOztHQVNpQztHQVU1QjtJQUFQNnlDLHlCQXJCSmxzQjtJQXNCSSsxQiwyQkFsS0pqOUI7MkNBc0hBbUgsUUEyQ0lpc0IsUUFDQTZKO0lBR0p2aUM7SUFDQUM7SUFDQUg7SUFDQU47SUFDQU87SUFDQUk7SUFDQUQ7SUFDQUU7SUFDQUU7SUFDQUM7SUFDQVg7SUFDQUM7WUFFQW9CLEtBQUttMk0sU0FBUXZ4TjtJQUNmLEdBbExFNFosU0FpTGE1WjtLQUNmLE1BQUE7SUFDbUI7S0FBZnl3TixlQWpLRlAsK0JBK0phbHdOO0tBR1gwd04sY0E5SkZQLCtCQTJKYW53TjtLQUlYd3hOLFVBSld4eE47SUFLWixHQUFBLGtDQUhDeXdOLGNBQ0FDO0tBSUY7OEJBSEVjLFNBRkFmLGNBRkdjLFlBQVF2eE47O0tBY0c7TUFBWnl4TjtRQUFZLGtDQVZkRCxXQUZBZjtLQWFGOzhCQVhFZSxTQUZBZixjQUZHYyxZQWNERTtLQU9KOztPQWpCRUQ7O09BSkdEO09BY0RFO09BWEZmOztJQUhXMXdOLE9BQUFBO0lBQUFBLE9BQVJ1eE47SUFBUXZ4TixPQThCQyxrQ0E5QlR1eE47SUFBUXZ4TixPQStCRSxrQ0EvQlZ1eE47SUFzQ0EsR0FBQSxrQ0F0Q1F2eE4sTUFBQUE7SUFzQ2YsTUFBQTtHQUFxQztZQUduQzB4Tix3QkFBd0IxeE47SUFDMUIsY0FEMEJBOztLQUNDO01BQUEsTUFBQSxrQ0FEREE7TUFDQyxZQUFxQixrQ0FEdEJBLGNBQUFBOzs7SUFDc0IsVUFBQTtJQUVoQyxJQUFWdXhOLFVBQVUsa0NBSFV2eE47SUFJeEIsT0E3Q0FvYixLQTRDSW0yTSxTQUhvQnZ4TjtHQUlUO1lBR2YyeE4sZ0JBQWdCM3hOO0lBQ0osSUFBVnV4TixVQUFVLGtDQURJdnhOO0lBRWxCLE9BbERFb2IsS0FpREVtMk0sU0FEY3Z4TjtHQUVKO1lBR1prbkUsYUFBYWxuRSxHQUFFN0U7SUFDakIsR0FBRyxrQ0FEWTZFLE1BQUFBLE9BTGIyeE4sZ0JBS2EzeE47SUFFZixrQ0FGZUEsTUFBQUEsTUFBRTdFO0lBR0c7O09BQUEsa0NBSEw2RSxNQUFBQTs7VUFBQUE7SUFBQUE7SUFBQUEsT0FBQUE7O0dBSVM7WUFHdEJtbkUsY0FBY25uRSxHQUFFN0U7SUFDbEIsR0FBRyxrQ0FEYTZFLE1BQUFBLE9BWmQyeE4sZ0JBWWMzeE47SUFFaEIsa0NBRmdCQSxNQUFBQSxNQUFFN0U7SUFHRzs7T0FBQSxrQ0FITDZFO1VBQUFBO1VBQUFBO0lBQUFBO0lBQUFBLE9BQUFBO0lBQUFBLE9BQUFBOztHQUtRO1lBR3RCK21FLFFBQVEvbUUsR0FBRWduRSxlQUFjN3JFO0lBQzFCLG9CQURZNnJFO2NBUlZHLGNBUVFubkUsR0FBZ0I3RTtjQWZ4QityRSxhQWVRbG5FLEdBQWdCN0U7R0FHRztZQUczQnkyTixvQkFBb0I1eE47SUFDVSxVQTFPOUJrd04sK0JBeU9vQmx3TjtJQUNVLE9BQUEsa0NBRFZBO0dBQytDO1lBR25FbzJLLGVBQWVwMks7SUFDakIsT0FoUUU0WixTQStQZTVaO2NBRVo7Y0FOSDR4TixvQkFJZTV4TjtHQUdTO1lBR3hCeTJLLFdBQVd6Mks7SUFBSSxPQXJRZjRaLFNBcVFXNVosYUFWWDR4TixvQkFVVzV4TjtHQUE2RDtZQUV4RTZ4TixtQkFBbUI3eE47SUFDVyxVQWxQOUJtd04sK0JBaVBtQm53TjtJQUNXLE9BQUEsa0NBRFhBO0dBQytDO1lBR2xFcTJLLGNBQWNyMks7SUFDaEIsT0E1UUU0WixTQTJRYzVaO2NBRVg7Y0FOSDZ4TixtQkFJYzd4TjtHQUdTO1lBR3ZCMDJLLFVBQVUxMkssR0FBSSxPQWpSZDRaLFNBaVJVNVosYUFWVjZ4TixtQkFVVTd4TixJQUE0RDtZQUV0RTIySyxLQUFLMzJLLEdBQUVnbkU7SUFDVCxvQkFEU0EsZ0JBZFB5dkcsV0FjS3oySyxLQUZMMDJLLFVBRUsxMks7R0FHaUI7WUFHdEI4eE4sdUJBQXVCOXhOO0lBQ3pCO0tBQUk4VyxJQXhRRm81TSwrQkF1UXVCbHdOO0tBRXJCaXRDLE1BQU0sa0NBRmVqdEMsTUFDckI4VztJQUVKLGtDQUh5QjlXLE1BQ3JCOFc7SUFEcUI5VyxPQUNyQjhXO0lBRHFCOVcsT0FBQUE7SUFBQUEsT0FBQUE7SUEvRHZCMHhOLHdCQStEdUIxeE47SUFPekIsT0FMSWl0QztHQU1EO1lBR0R3N0Isa0JBQWtCem9FO0lBQ3BCLE9BclNFNFosU0FvU2tCNVo7Y0FFZjtjQWJIOHhOLHVCQVdrQjl4TjtHQUdTO1lBRzNCb29FLGNBQWNwb0U7SUFBSSxPQTFTbEI0WixTQTBTYzVaLGFBakJkOHhOLHVCQWlCYzl4TjtHQUFnRTtZQUU5RSt4TixzQkFBc0IveE47SUFDeEI7S0FBSThXLElBdlJGcTVNLCtCQXNSc0Jud047S0FFcEJpdEMsTUFBTSxrQ0FGY2p0QyxNQUNwQjhXO0lBRUosa0NBSHdCOVcsTUFDcEI4VztJQURvQjlXLE9BQ3BCOFc7SUFEb0I5VyxPQUFBQTtJQWxGdEIweE4sd0JBa0ZzQjF4TjtJQU14QixPQUpJaXRDO0dBS0Q7WUFHRHU3QixpQkFBaUJ4b0U7SUFDbkIsT0F2VEU0WixTQXNUaUI1WjtjQUVkO2NBWkgreE4sc0JBVWlCL3hOO0dBR1M7WUFHMUJtb0UsYUFBYW5vRTtJQUFJLE9BNVRqQjRaLFNBNFRhNVosYUFoQmIreE4sc0JBZ0JhL3hOO0dBQStEO1lBRTVFdW9FLFlBQVl2b0UsR0FBRWduRTtJQUNoQixvQkFEZ0JBO2NBMUJkeUIsa0JBMEJZem9FO2NBUlp3b0UsaUJBUVl4b0U7R0FHZTtZQUczQmtvRSxRQUFRbG9FLEdBQUVnbkU7SUFDWixvQkFEWUEsZ0JBMUJWb0IsY0EwQlFwb0UsS0FSUm1vRSxhQVFRbm9FO0dBR2U7WUFHdkJneU4sU0FBV2p3TixLQUFRbW1FLFNBQVFsb0U7SUFDN0IsR0FEYStCLFNBQUlDLE1BQUpELFFBRUEraUIsSUFGSTlpQixjQUVKOGlCO0lBRFYsR0FBQSxrQ0FDVUE7S0FEQyx3Q0FDREE7UUFBQUMsTUFBQUQ7SUFDWDtLQUFHLFVBQUEsa0NBRFFDO0tBQ1I7U0FFSyxXQUxXbWpELFNBQVFsb0UsSUFPYixJQUxIZ2xCLE1BQUFELGFBQUFBLE1BQUFDOzs7OztLQUlDOztHQUdSO1lBR0pra0QsV0FBWXBrRCxHQUFFOWtCLEdBQUksT0FabEJneU4sU0FZWWx0TSxHQTVDWnNqRCxlQTRDY3BvRSxHQUF3QztZQUN0RGlwRSxVQUFXbmtELEdBQUU5a0IsR0FBSSxPQWJqQmd5TixTQWFXbHRNLEdBM0JYcWpELGNBMkJhbm9FLEdBQXVDO1lBRXBEZ3BFLEtBQU1sa0QsR0FBRTlrQixHQUFFZ25FO0lBQ1osb0JBRFlBLGdCQUhWa0MsV0FHTXBrRCxHQUFFOWtCLEtBRlJpcEUsVUFFTW5rRCxHQUFFOWtCO0dBR2lCO1lBR3pCaXlOLGlCQUFpQmp5TixHQUFFbkc7SUFBVSxVQS9WN0IrZixTQStWaUI1WjtJQUFZLGFBQWdCLHdDQUExQm5HO0dBQWtFO1lBRXJGcTROLGVBQWVseU4sR0FBRThXO0lBQ25CO0tBQUlxN00sY0FEZXI3TSxJQUFGOVc7S0FFZCxNQUFBLGtDQURDbXlOO0tBQ0QsYUFBbUIsa0NBRkxueU4sTUFDYm15TjtJQUNrQjtLQUpwQkYsaUJBRWVqeU47S0FLTTtNQUFqQnV3TixpQkFMV3Z3TjtNQU1Yd3dOLGdCQXZWSlAsK0JBaVZlandOO0tBT2Y7b0NBUGlCOFcsR0FLYnk1TSxnQkFDQUM7O1FBT0Y0QixVQWJhcHlOLGdCQUNibXlOO0lBYUQsT0FBQSxrQ0FEQ0MsUUFiYXB5TjtjQWFib3lOLFNBYmFweU47Y0FhYm95TjtHQUM0RDtZQUc5RDF5TSxJQUFJMWYsR0FBRThXO0lBQW9DLFVBakIxQ283TSxlQWlCSWx5TixHQUFFOFc7SUFBb0MsT0FBQSxrQ0FBdEM5VztHQUEwRDtZQUU5RHF5TixRQUFRcnlOLEdBQUU4VztJQUNaLElBQUksY0FIRjRJLElBRVExZixHQUFFOFcsS0FDUix1QkFDRztHQUFJO1lBR1R5Z0ssUUFBUXYzSyxHQUFFOFcsR0FBRTNiO0lBQWdDLFVBeEI1QysyTixlQXdCUWx5TixHQUFFOFc7SUFBTSxPQUFBLGtDQUFSOVcsV0FBSTdFO0dBQXNEO1lBRWxFcWYsU0FBU3hhO0lBQ0wsWUF2SEp5MkssV0FzSFN6Mks7Z0JBRUQ7SUFFRSxJQURMNDFLLGtCQUNEMzNHLE1BQU0sMkJBSkRqK0QsTUFHSjQxSztJQXpRTGh2SjtNQXNRUzVtQjs7ZUFNaUI4VyxHQUFFM2I7T0FDdkIseUJBSEQ4aUUsS0FFc0JubkQsT0FBQUEsS0FBRTNiO09BQ3ZCLE9BRHFCMmI7TUFFaEI7SUFFVixPQU5JbW5EO0dBTUQ7WUFHSDlLLFNBQVM4SztJQUNILElBQUpqK0QsSUFoYUYyYSxXQStaU3NqRDtpQkFFWTlpRSxHQUFLLE9BcEsxQityRSxhQW1LRWxuRSxHQUNtQjdFLEdBQXFCO0lBQTVDLDJCQUZXOGlFO0lBRVgsT0FESWorRDtHQUVIO0dBS1M7Ozs7SUFBQSxVQUFBO0lBQVIsY0FBUTtJQUFSLE1BQUE7SUFBQXRGLFFBQUE7R0FBUSxTQUFBKzNDLGFBQUE3M0M7SUFBUixVQUFBO0lBQUEsT0FBQSxXQUFBLCtCQUFBRixpQkFBUUU7R0FBMkI7WUFBbkM4M0MsWUFBSzUzQyxXLE9BQUFBO1lBQUw2M0MsYUFBSzMzQyxTLE9BQUFBO1lBQUw0M0MsWUFBS3YzQyxNLE9BQUFBO0dBR0g7SUFERXVGO01BQ0Y7WUFLRTZtRCxPQUFLem5ELEdBQUcwQyxHQUFJLE9BN1FoQmlrQixPQTZRUzNtQixHQUFHMEMsR0FBYTtZQUVyQm1ZLEtBQU16RCxLQUFLMjdCO0lBQ2IsSUFBSS95QyxJQWxiTjJhLFdBaWJVdkQsYUFFUixNQUZRQSxhQUNBOztTQUNSTjs7TUFDVSxJQUFKdFcsSUFBSSxXQUhHdXlDO01BcExmbTBCLGFBcUxNbG5FLEdBRUVRO01BRE4sVUFBQXNXO2lCQUFBQTtVQUFBQTs7O0lBSUEsT0FMSTlXO0dBS0g7Ozs7OztTQWRDWTtTQUlBMHRDO1NBdlpKN3VCO1NBeVpJZ29DO1NBRUE1c0M7U0FWSjYzQjtTQUFBQztTQUFBQztTQUFRSDs7Ozs7Ozs7O1lBb0JSL3lDLFVBQVVnRCxHQUFFL0M7SUFBTyxPQTVCbkJ3ekQsU0E0QjRCLDJCQUFsQnp3RCxHQUFFL0M7R0FBd0M7WUFDcERJLFVBQVUyQyxHQUFFMUM7SUFBc0IsVUExQ2xDd2EsU0EwQ1l4YTtJQUFzQixPQUFBLDJCQUF4QjBDO0dBQW9DO1lBRTlDcVcsZUFBZTQ3QztJQUNXLFVBQUEsMkJBRFhBO0lBQ1csT0FBQTtHQUFrQztZQU81RDI5SixlQUFldHlOO0lBaEZmaXlOLGlCQWdGZWp5TjtJQUNqQixPQWhhRWl3TiwrQkErWmVqd047R0FFbUI7WUFHbEN1eU4sZ0JBQWdCdnlOO0lBckZoQml5TixpQkFxRmdCanlOO0lBQ2xCLE9BRGtCQTtHQUVtQjtZQU0vQnd5TixNQUFJeHlOLEdBQUU4VyxHQUFJLE9BMUVkNEksSUEwRVExZixHQVJSdXlOLGdCQVFRdnlOLEtBQUU4VyxPQUFpQztHQUd6QjtJQUFBLGVBdkRsQnE4Qzs7OytDQW9ESXEvSixPQTdiSi95TTtZQXljQWhHLGNBQWV2WSxLQUFLa1csS0FBSXBYLEdBQUdzRSxTQUFRdStDLEtBQUkxbkQ7SUFDekMsR0FEaUIrRjtTQUlSQyxRQUpRRCxRQUNiRSxZQUdLRCxRQUppQm5COztTQUN0Qm9CO0lBS0U7YUFBQSxpQ0FMRkEsT0FEa0JnVyxLQUFJcFgsR0FBR3NFLFNBQVF1K0MsS0FBSTFuRDtnQkFPL0I7UUFDSHMzTjtJQUFrQixXQVJDenlOLE9BUW5CeXlOO0dBQWdFO1lBR3JFLzRNLHdCQUF5QnhZLEtBQUtrVyxLQUFJcFgsR0FBRzhpRCxZQUFXRDtJQUNsRCxHQUQyQjNoRDtTQUlsQkMsUUFKa0JELFFBQ3ZCRSxZQUdLRCxRQUoyQm5COztTQUNoQ29CO0lBS0U7YUFBQSxpQ0FMRkEsT0FENEJnVyxLQUFJcFgsR0FBRzhpRCxZQUFXRDtnQkFPeEM7UUFDSDR2SztJQUFrQixXQVJXenlOLE9BUTdCeXlOO0dBQWdFOzs7Ozs7Ozs7Ozs7Ozs7O09BdkRyRS95TjtPQUNBSztPQUVBZ1o7T0FpQ0FVO09BV0FDO09BNVNBQztPQXhLQThGO09BQ0E3RjtPQTJJQStNO09BdEJBQztPQXlEQTdNO09BQ0FDO09BVEFDO09BRUFDO09BSkFDO09BQ0FDO09BS0FDO09BREFDO09BRUFDO09BZ05BQztPQS9NQUM7T0FDQUM7T0FwTUFDO09BK1pBdzRDO09BN1dBazlKO09BeVpBa0M7T0F4WkFqQztPQW1aQWdDO09BM0RBRDtPQUZBM3lNO09BL0ZBaTNKO09BZEFGO09BTkFMO09Ba0JBTTtPQU5BTDtPQThHQWtCO09BclFBMTlKO09BR0EwakM7T0FKQXpoQztPQURBaEM7T0FJQTB2SDtPQXhGQXh0SDtPQXVOQStxRDtPQVJBSTtPQVBBRDtPQXpGQXIyQjtPQTRNQW00QjtPQUhBRTtPQUNBRDtPQW5CQWY7T0FOQUs7T0FwQkFIO09BTkFLO09Bd0JBTjtPQU5BSzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ2pXQWtxSixPQUFPNWpNLFNBQVUsT0FBQSxnQ0FBVkEsU0FBeUM7WUFDaERvdEQsU0FBU3Y4RSxNQUFPLE9BRGhCK3lOLE9BQ3VCLDZCQUFkL3lOLE9BQXVDO1lBQ2hEZ3pOLFFBQW1EMTRKLFVBQUFzTSxVQUFqQ3JtRTtJQUFZO0tBQXFCc21FLHVDQUFBdk07S0FBQXdNLHNCQUFqQ3ZtRSxXQUFpQ3FtRTtJQUFaLE9BRHZDMlYsaUJBQ21EMVYsY0FBQUM7R0FBeUI7WUFDNUV0a0UsUUFBUWlvSDtJQUFTLE9BQUEsMkJBSGpCc29HLFFBR1F0b0c7R0FBc0M7T0FDOUN6N0Y7O0lBR29CLElBQWxCaWtNLDBCQUNBQzthQUVBQztLQUFNMXdNLFdBQVdrc0IsYUFBWXowQyxNQUFLMHdJLElBQUdqdUksS0FBSXkyTixhQUFZQyxnQkFBZXR3TjtLQUN0RSxHQUhFbXdOO01BTkZGO1FBVWE7b0NBRk1ya0wsNEJBQVl6MEM7UUFBUXlDO1FBQUl5Mk47UUFIekNIO01BT0csSUFDQyx5QkFMOEJyb0YsSUFBNUJub0g7WUFNSnZpQjtXQUFBQywwQkFBQUQ7T0FDQTtTQWJKOHVCOzs7O2FBTStCOTBCLE1BTTNCaUc7OztXQUthbXpOO1dBQUFocUc7V0FBQWlxRyx1Q0FBQWpxRztXQUFBa3FHLHVDQUFBRjt5QkFBQUMsY0FBQUM7OztLQUNHLElBQWhCQyxnQkFBZ0IsNEJBWmtEMXdOO1FBSHBFa3dOO01BaUJHLElBQ0MseUJBZjhCcm9GLElBQTVCbm9IO1lBZ0JKdGlCO1dBQUFELDRCQUFBQztPQUNBO1NBdkJKNnVCOzs7O2FBTStCOTBCLE1BZ0IzQmdHOzs7V0FLYXd6TjtXQUFBaG5NO1dBQUFva0UsdUNBQUFwa0U7V0FBQXNrRSx1Q0FBQTBpSTt5QkFBQTVpSSxjQUFBRTs7O1FBdkJma2lJOzs7a0JBNkJhbnNIO1U7b0NBM0J3Q3NzSCxpQ0EyQnhDdHNIOztNQW5DZmlzSDtRQWlDSTtvQ0F6QmVya0wsNEJBQVl6MEM7UUFZM0J1NU47OztLQVlGLE9BQUEsNEJBWkVBO0lBZ0J1QjtJQWhDZCxXQUNYUixpQkFDQUMsZUFFQUM7O0dBZ0N1QixJQUF6QlE7WUFFQUMsWUFBWTFrTSxNQUFLQztJQUlJLFVBQUEseUNBSlREO0lBSWQ7T0FORXlrTTtLQVdHO01BQUEsTUFBQTtNQUFBLE1BQUE7TUFBRCxNQUFBO0tBRkY7O09BUGlCeGtNO1NBWVhxbUosWUFaV3JtSjtLQVlBLGdDQUFYcW1KOztJQUNSLE9BQUE7R0FBbUI7WUFHakJ4dUQsR0FBRzkzRixNQUFPLE9BaEJWMGtNLFlBZ0JHMWtNLFNBQTRCO1lBQy9CMmtNLElBQUkza00sTUFBS3JzQjtpQkFBMkI4b0MsUUFBVSxPQWpCOUNpb0wsWUFpQkkxa00sVUFBZ0N5YyxTQUF3QztJQUE3RCxPQUFBLGdDQUFOOW9DO0dBQXdFO1lBRWpGaXhOLElBQUk1a00sTUFDNkNtaUssVUFBQUQsVUFEOUI3d0w7SUFDckI7S0FBbUQwc0IsdUNBQUFva0s7S0FBQUcsc0JBRDlCanhMLFdBQzhCNndMO0lBQWxDLE9BcEJmd2lDO2FBbUJJMWtNOztjQUNpQjswQ0FBNEJqQyxjQUFBdWtLO0dBQW1DOzs7Ozs7OztPQWhFcEZ1aEM7T0FFQUM7T0FEQXoySTtPQUVBLzVFOztPQXlEQXdrSDtPQUdBOHNHO09BRkFEO09BbkJBRjs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzNDQUksV0FBV2x6TjtJQUNiLEtBQVEsMkJBREtBOzs7O1NBRVU7Ozs7Ozs7Ozs7Ozs7O1VBSTZDOztTQUN4RDtRQUFNO0tBTGYsR0FBQSw0QkFGVUE7b0NBQUFBOzs7Ozs7O2dDQUFBQTs7aUNBQUFBOztrQ0FBQUE7O21DQUFBQTs7b0NBQUFBOztxQ0FBQUE7O3NDQUFBQTs7dUNBQUFBOzBDQUFBQTs7OztzQ0FBQUE7Ozs7O2lDQUFBQTs7a0NBQUFBOzttQ0FBQUE7c0NBQUFBOzs7OytCQUFBQTs7Z0NBQUFBOztpQ0FBQUE7O2tDQUFBQTtxQ0FBQUE7OztPQWlDTSxPQUFBLDhCQWpDTkE7O01Ba0NKLE9BbENJQTs7O0lBbUNSLE9BQUEsOEJBbkNRQTtHQW1DUTs7SUFHbkIycUk7OztTQXRDQXVvRjtZQTRDQUMsY0FBY0M7SUFDaEIsVUFBQSwwQkFEZ0JBLGVBTmR6b0Y7SUFPRixPQUFBO0dBQXlEO0dBNkIxQyw0QkFBQSxjQTFFYnVvRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXNDQXZvRjtPQU1Bd29GOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUMxQ0FFLFNBQVM3ek4sR0FBRTdFLEdBQUkseUJBQU42RSxHQUFFN0UsSUFBSSxTQUFxQztZQUNwRDZrRSxLQUFLaGdFO0lBQUksT0FBdUI7dUJBQTNCQSxlQUFnQ3dtQixLQUFJMU4sS0FBTyxXQUFQQSxLQUFKME4sS0FBcUI7R0FBQztZQUkzRHN0TSxZQUFZOXpOLEdBQUUwQzthQUNScThLO2tCQUM2QjVqTCxHQUNqQyxXQUhZdUgsR0FFcUJ2SCxJQUNqQyxPQUZJNGpMLFFBR0c7S0FGRyxVQUFBLHlCQUZBLytLO0tBRWtCLE9BQUE7SUFFcEI7SUFFWixPQUxRKytLO0dBS0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FYTDgwQzs7Ozs7Ozs7O09BS0FDOzs7T0FKQTl6Sjs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHTWdDaUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBO0lBR0o7SUFDQztJQUNGO0lBQ007SUFaUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBd0ZDO0lBNERDO0lBa0JGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEwQlZ4Z0U7SUFDQUM7SUFDQWk1TjtJQUNB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Ozs7O0k7Ozs7O1E7Ozs7WTtZO1c7UyxPO1Esc0I7O08sZ0IsTztPLHNCOzs7OzRDOzs7bUI7O087Ozs7STtHOztJO0ksTztHOztJO0k7OztHOztJO0ksSSwyRDs7OztNLFE7OztPOzs7Ozs7Ozs7O2E7O2E7O2E7O2E7O2E7O2E7Ozs7Ozs7Ozs7OztPO087TztPO087Tzs7O007Ozs7O0k7Szs7Ozs7Ozs7O0s7Ozs7OztLLE07O0ksTztHOztJLFM7STtJLE87Rzs7SSxPO0c7O0k7SSxPO0c7O0ksWTs7STtJO0ssSTtLLE87SSxPO0c7O0k7Ozs7Z0I7aUI7Rzs7STs7Ozs7TyxZOzs7Ozs7O1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJLFk7OztLLE87O21CLE87STtLLEs7O087O1U7STtJO0ksYztHOztJOzthOzs7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7d0I7O0k7STtJLGM7Rzs7SSxZOzs7ZTs7O0ksTztHOztJLFk7Ozs7Ozs7SyxPOzs7SyxPO0k7SyxLOztPOztVO0k7STtJLGM7Rzs7SSxZOzs7ZTs7Ozs7OztJLE87Rzs7O0ksYzs7STs7O2lCOztLO0s7Ozs7c0IsTyxzQzs7SSwwQjs7OzBDOzs0Qzs7TTs7eUM7O0s7Ozt5Qzs7Szs7OztLLE87OztJO0c7Ozs7SztLO0s7O0k7STtJLE87Rzs7STtJO0ksTztHOztJO0k7SSxPO0c7O0k7STs7O0s7Szs7SSxPO0c7O0ksMEI7OzswQzs7Ozs7Ozs7VztXO1c7O087TztPLE87OztNO007TSxPOzt5Qzs7Szs7O3lDOztLOzs7O0ssTzs7O0k7Rzs7STtJO0ksTztHOztJLFE7O0k7STtJO0k7SSxPO0c7O0k7STtJLFEsNEI7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxRO0k7STtHOztJO0k7STs7Szs7OztnQjtJO0k7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxXO0k7OztNOzs7SSxPO0c7O0k7SSxTO0k7SztLLFc7Szs7OztLO0ssTTs7Rzs7STtJO0ksb0I7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxRO0k7STtHOztJO0k7STs7Szs7OztnQjs7SztLO0ssTztJO0ksTztHOztJO0ksUztJO0s7SyxXO0s7Ozs7SztLLE07O0c7O0k7Ozs7TyxjLE87TyxzQjs7O087Ozs7VztXO1U7USxPO1EsTTs7O1c7VyxPO1U7TyxzQjs7Ozs7O08sK0I7Ozs7O00sZ0IsTztNLHNCOzs7STtHOzs7SyxPO0k7SSxPO0c7O0k7Ozs7Ozs7Ozs7OztLOztJO0c7O0k7STs7TSxPOzs7OztRLGtCLE87USxPOzs7TztRLFc7UTtrQjs7O1EsUztRO2tCOztPLE87Ozs7TyxPOztNLGtCO00sTzs7OztNO21CLE87MEI7Tzs7USw0QjtRLDRCO087O3FCOztNLEk7Ozs7OztrQixPOzJCO1E7Uzs7O1ksMEI7WTtZLE87O1M7Z0M7UTs7c0I7OztpQixPOzBCO08sRztROztTLDRCO1M7Z0M7UTs7O1E7O1MsNEI7UztnQztROzs7cUI7Ozs7TyxPOzs7OztPO1E7Uzs7Uyw0QjtRLE87O087UTtROzs7OztRO1EsTzs7TyxJOzs7O0c7O0k7O0ksMEI7SSxPO0c7O0k7SyxPOzs7OztNO007Ozs7O1UsUTtVO1U7UztNO007TSxPOzs7OztPO087Ozs7O1c7VyxRO1c7VztXO1c7VztXO1U7TztPO08sTzs7O007TTs7Ozs7VSxRO1U7VTtTO007TTtNLE87Ozs7TTtNO00sTzs7O0s7SztLO0s7OztNO007TTs7O007SztLLE87Ozs7O007TTtNLE87OztLO0s7SyxPOzs7O0s7SztLLE87OztJO0k7SSxPOztvQixPLDhDOztJO0k7Ozs7Tzs7Ozs7Ozs7OztTOzs7VTs7YTthLE87WTtVLE87VSxPO1M7VTs7O2M7Ozs7O3FCOzs7YTtXLFc7VTs7OztvQzs7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7YywwQjs7Ozs7OzswQjtTOzs7Ozs7TztRLGE7UTs7OztrQzs7Ozs7Ozs7UyxPOzs7O2dILE87Ozs7OztTLE87Ozs7Ozs7USxPOzs7Szs7RztzQyx1Qjs7SSwwQjtJLE87Rzs7SSxVO0ksMEI7SSxPO0c7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0ssTTtJO0ksaUI7STthOzs7RztHOzs7OztJOztJOztLO0s7SztLOzs7O3dCLE07TSxXOztNOzs7Ozs7SSxNO0c7O0k7O0s7SztLO0s7Ozs7d0IsTTtNLFc7O007Ozs7O2lCLE07O0c7O0k7OztHOztJO0ksTztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UTs7UTtTO1M7Ozs7O1UsdUI7Ozs7UTtTO1M7Ozs7O1UsdUI7Ozs7UTs7Z0IscUI7O1E7UTtTO1M7UztTO1M7Uzs7OztVO1U7VTtVO1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UztTOzs7O1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UztTOzs7O1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UTtROzs7UTs7UTs7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7Ozs7UTs7UTtnQjs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxjLE87USxPLGM7O1E7O1E7Z0I7OztHOztJO0k7Szs7UTs7Szs7Ozs7TyxRO08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O087USxJO1EsSTtRLE07USxJO1E7UTtROzs7O1E7Uzs7WTs7Uzs7Ozs7VztZLE07WSxNO1ksTTtZLE07WTtZO1k7OztZLE87Vzs7Vzs7Vzs7O08sTzs7TztlOztHOztJO0k7Szs7UTs7OztTOztVLEk7UztTO1MsTzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLG9DOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROzs7Rzs7STtJO0s7O1E7aUM7aUM7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7aUM7aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLEkseUM7Ozs7Vzs7OztTLEkseUM7Ozs7Vzs7OztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcsbUI7VTs7cUI7O1M7UztTLEksVyx1Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1UsVyxxQjtVOztxQjs7UztTO1MsSSxXLHlCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1MsTyxxQjs7UztTO1MsSSxXLHlCOzs7Ozs7Ozs7Ozs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7UyxRO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOzs7UyxPOztrQjs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7aUI7O1M7UztTO2tCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7O3FCOztTO1M7Uzs7c0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TyxJLGM7TztRO1E7aUI7OztTO1M7UztrQjs7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztpQjtTLE07O2lCLE07UztpQjs7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O2lCO1MsTTs7aUIsTTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7USxpQjtRO1E7UTtpQjs7UztTO1M7UyxtQjtTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UztTO1M7UztTO1M7UztTO1U7VTtVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7UztTO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1E7UTtROzs7UTs7UTs7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7UztTO1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7UTtTOztZOztTOzs7OztXO1c7Vzs7VztZOztlOzs7O2dCLE87O2dCOztnQjs7WTs7Ozs7VyxPOztXOztXOzs7O1E7O1E7UTs7O1EseUM7O1E7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztRLDBCOztRO1E7OztRLHlDOztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UyxPOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztRLE87O1E7O1EseUM7Z0I7OztHOztJOzJCLE87STtHOztJO0ksTztHOztJO1k7STs7O0ssTTtLLEk7SztLOzs7O00sVztNO2E7TTs7Ozs7STtHOztJO0s7Rzs7O0k7STtJO0ssTTtJOztLOztNOztJO0c7O0k7SztNLFM7TSxJO007Szs7Ozs7TSxPOzs7Rzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJLFM7STtLO0s7Szs7OztLO0ssTTs7RztHOztJOzs7K0IsTzs7SyxJLG1EOzs7aUMsb0I7TSxJOzs7TyxNOztNLE07O0k7STtHOztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs7OytCLE87STtJLHVCOztLO007TyxPO087TyxzQjtPOzs7O007Ozs7MkIsb0I7TTtNLDJDOztJO0ksc0I7Rzs7SSxTO0ksb0IsTywyQjtJO0k7Rzs7STtHOztJO0c7Rzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07NEI7RztHOztJOztLLEksVyx3Qzs7OzZCOzs7O0ksVztJLGM7OztJO0k7ZTs7OztNLEksWTs7OzhCOzs7Ozs7Szs7Rzs7STtLOztNLE07TTs7TSxPO0s7TSxPO00sTztLLE07NEI7O0k7SyxPO0ssTztJLGM7OztJOztLLHNCOztJOzs7SSxtRTtJO0c7O0ksNkM7SSxXOzs7SSxpRTtJO0c7O0k7MEI7O2dEO0k7Rzs7STs7eUM7MkM7O0k7Rzs7STswQjs7Ozt5QzsyQzs7STtHOztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJLCtEO0k7Rzs7STswQjs7OEM7STtHOztJLGlFO0k7Rzs7SSxrRTtJO0c7O0k7MEI7O2lEO0k7Rzs7STs7SyxPOztJOzs7STtJO2EsTztLLHlCLFE7O00sa0I7Ozs7Rzs7STtJO2EsTzs7O007O08sUTs7Ozs7OztHOztJOztjOztlO2dCLGU7Z0I7OzJCOztjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjOztlO2dCLGU7Z0I7OzJCOztjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yyx3RTtjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjOztzRDswRDs7YzthOztHOztJOztjLDJFO2M7YTs7Rzs7STt5QixvQixXO0ksTyxXO0c7O0k7eUIsc0IsYTtJLE8sVztHOztJOzs7Ozs7SyxzQjs7SSxNOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDckZBQyxzQkFBd0IsaUJBQUs7WUFDN0JDLGVBQWVDLEdBQVEsc0JBQVJBLEdBQWU7WUFDOUJDLGlCQUFpQkMsS0FBVSx1QkFBVkEsS0FBcUI7WUFDdENDLGdCQUFnQkM7SUFBWSx1QkFBUSxrQ0FBcEJBO0dBQTJDO1lBQzNEQyxlQUFlQztJQUFRLHVCQUFRLHNDQUFoQkE7R0FBaUM7WUFDaERDLGNBQWNDLEdBQVEsb0JBQVJBLEdBQWM7WUFDNUJDLGdCQUFnQkQsR0FBUSxzQkFBUkEsR0FBZ0I7WUFDaENFLGdCQUFpQkY7SUFBbUIsdUJBQVEsNkJBQTNCQTtHQUE4QztZQUMvREcsZ0JBQWlCSDtJQUFtQix1QkFBUSw2QkFBM0JBO0dBQThDO1lBQy9ESSxvQkFBb0JKO0lBQVEsdUJBQVEsaUNBQWhCQTtHQUF1QztZQUMzREssY0FBY0MsYUFBYUMsSUFBSyxrQkFBbEJELGFBQWFDO0dBQXFCO1lBQ2hE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Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO3VCLHVDO0k7Ozs7SztLLEk7STtJO0k7O0s7SztLO0s7O0k7STtJO0k7STtLLEk7SztLO0s7SztLO0s7SztLO0s7Szs7Szs7Ozs7O087O1EsTTtRLE07USxNO1EsTTtPO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsTTs7O087O1E7UztTO1M7UztTO1M7UTs7O087UTs7UTs7Ozs7O087Ozs7Ozs7OztNOzs7OztJLFE7O0s7SztLO0s7SztJO0k7STtJO0k7STtJLE87OztJO0ssTSxtQjtLLE07SyxJO2tDOytCO0ksTztHO3NCLCtCO3NCLGlDOztJO0ssSTtlO2dCO0k7STtJLE87RzsyQixPLG9DO0csVTtHLDJCOztJO0ssSztLLEs7SyxLO0ssSztLLEs7SyxJOzs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxxQjtJLHVCLG9DO0c7O0ksOEI7OztLOzs7STtHOzBCLGEsb0M7O3dCLFM7O0k7SSxVOzZCO2dDO0ksVztHOztJO0ssUTtLLHFCO0s7SztJO0ksUTtJO0k7STtJO0ksTztHO3FDLHNCOztJO2dCOztJO0c7K0IsUzsrQixTOztJO0ksVTtJOzs7Yzs7ZTs7Z0I7bUI7SztNO08sSTtPO087Tzs7VSxXLE07c0I7cUIsTTtzQjtxQixNO3NCLE07VTtTO087O1UsZTtzQjtTOzs7TztPOzs7Ozs7O087Tzs7Ozs7OztPO087Ozs7Ozs7TztPOzs7Ozs7O1EsYztROztPO087Ozs7Ozs7NEI7OztJO0c7O0k7STtJLHVCLDRDO0k7SyxJO0s7Szs7Szs7O0k7OztLLFU7Szs7Ozs7OztLLFU7Szs7Ozs7OztLLFU7Szs7Ozs7OztLLFU7Szs7Ozs7O29CLE87SyxVO0s7Ozs7Rzs7STtJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7OztJQ3hCSnFDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFoT0FDO0lBQUFDO1lBQUE5bEg7Z0RBQUE7Z0RBQzJCOztLQUQzQjZsSDtjQUNBL3FI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bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUFqZ0s7bURBNENNO1lBNUNOa2dLO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBcGdLO21EQTRDTTtZQTVDTnErRDttREFBQSxPQUFBcitEO21EQTRDTTtZQTVDTnMrRDttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQXgrRDttREE0Q007WUE1Q055K0Q7bURBQUEsT0FBQXorRDttREE0Q007WUE1Q04wK0Q7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTs7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUE3K0Q7bURBNENNO1lBNUNOOCtEO21EQUFBOzttREE0Q007WUE1Q05DO21EQUFBLE9BQUEvK0Q7bURBNENNO1lBNUNOZy9EO21EQUFBOzttREE0Q007WUE1Q05DO21EQUFBLE9BQUFqL0Q7bURBNENNO1lBNUNOay9EO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUFyL0Q7bURBNENNO1lBNUNOcy9EO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUF6L0Q7bURBNENNO1lBNUNOMC9EO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBNS9EO21EQTRDTTtZQTVDTjYvRDttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQS8vRDttREE0Q007WUE1Q05nZ0U7bURBQUEsT0FBQWhnRTttREE0Q007WUE1Q05pZ0U7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTs7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUFwZ0U7bURBNENNO1lBNUNOcWdFO21E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Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ2xWVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQSt1RnVCSztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7SUFBQUM7OztJQUFBQzs7Ozs7OztJQXZWWEM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUFuNUVwQkM7Ozs7Ozs7Ozs7Ozs7O0lBTFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUk7T0FZQUU7T0FDQUM7T0FLQUs7T0FDQUM7T0FDQUM7T0FHQUU7T0FDQUM7T0FFQWxCO09BRUFtQjtPQU1BQztPQUVBQztPQVlBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVFBRzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJQzFJSkM7SUFBQUM7SUFPQUM7SUFBQUM7SUFPQUM7SUFBQUM7SUFvQkFDO0lBQUFDO0lBbUJBQztJQUFBQztJQW9CQUM7SUFBQUM7SUEwQ0FDO0lBQUFDO0lBT0FDO0lBQUFDO0lBcUJBQztJQUFBQztJQWlGQUM7SUFBQUM7SUFXQUM7SUFBQUM7SUFpRkFDO0lBQUFDO0lBT0VDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUE7c0NBQUFBOztVQUFBLE9BQUE7c0NBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOzs7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NB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OytHQUFBQTsrR0FBQUE7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OzZHQUFBQTs7OzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7NEdBQUFBOzs7O21IQUFBQTs7O29IQUFBQTs7O2dIQUFBQTs7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOzhHQUFBQTs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7NkdBQUFBOzs7bUhBQUFBOzs7K0dBQUFBOytHQUFBQTsrR0FBQUE7Ozs7eUZBQUFBOzs7OzRHQUFBQTs7K0dBQUFBOytHQUFBQTsrR0FBQUE7NkdBQUFBOzs7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OzRHQUFBQTs7Ozs7a0hBQUFBOzttSEFBQUE7OztvSEFBQUE7OztnSEFBQUE7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOztnSEFBQUE7OEdBQUFBOzs7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7K0dBQUFBOytHQUFBQTs2R0FBQUE7OzttSEFBQUE7OzsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzs2R0FBQUE7Ozs7OEdBQUFBOzhHQUFBQTs7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7NEdBQUFBOzs7O21IQUFBQTs7O29IQUFBQTs7O2dIQUFBQTs7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOzhHQUFBQTs7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzs2R0FBQUE7OzttSEFBQUE7OzsrR0FB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QkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOzs7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7Ozs7OzZDQUFBeUU7Ozs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7OztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOzs7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Q0EwRFZILE9BdEVRRSxRQUFRSixPQUFRSjtXQWE5Qiw0QkFiY1E7dUJBWVZDOztnQkFJTkM7V0FHSTtZQUhKQywwQkFBQUQ7WUFHSSxNQUFBLCtCQUhKQztXQUNFOytCQUlnQiwrQkFMbEJBOztpQ0FRR0Msb0JBQVUsT0FBVkE7Y0FNR0M7b0JBQUFBLDBCQUFBQTtXQUhRO1lBRlFDLFFBS2hCRDtZQUhRLE1BQUEsdUNBRlFDO1dBRXRCO1dBQUEsT0EyQ1FSOztVQXZDTSxVQUFBLG1DQURSTztVQUNOO1VBQUEsT0F1Q1FQOztLQU1OLE9BQUEsaURBTk1BO0lBc0JOOytDQTNCRUE7R0E0Qkw7R0FHSSxZQUFBOzs7bUVBQ1k7SUFHUDtLQUFBOzs7OztRQTNETlA7UUFzQkFNO0tBd0NhLE1BQUE7SUFKakI7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7R0N2SE07R0FBQTs7O0UiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gc3RyZnRpbWVcbi8vIGdpdGh1Yi5jb20vc2Ftc29uanMvc3RyZnRpbWVcbi8vIEBfc2pzXG4vL1xuLy8gQ29weXJpZ2h0IDIwMTAgLSAyMDE1IFNhbWkgU2FtaHVyaSA8c2FtaUBzYW1odXJpLm5ldD5cbi8vXG4vLyBNSVQgTGljZW5zZVxuLy8gaHR0cDovL3Nqcy5taXQtbGljZW5zZS5vcmdcbi8vXG5cbjsoZnVuY3Rpb24oKSB7XG5cbiAgICB2YXIgRGVmYXVsdExvY2FsZSA9IHtcbiAgICAgICAgICAgIGRheXM6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXSxcbiAgICAgICAgICAgIHNob3J0RGF5czogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSxcbiAgICAgICAgICAgIG1vbnRoczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sXG4gICAgICAgICAgICBzaG9ydE1vbnRoczogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuICAgICAgICAgICAgQU06ICdBTScsXG4gICAgICAgICAgICBQTTogJ1BNJyxcbiAgICAgICAgICAgIGFtOiAnYW0nLFxuICAgICAgICAgICAgcG06ICdwbScsXG4gICAgICAgICAgICBmb3JtYXRzOiB7XG4gICAgICAgICAgICAgICAgRDogJyVtLyVkLyV5JyxcbiAgICAgICAgICAgICAgICBGOiAnJVktJW0tJWQnLFxuICAgICAgICAgICAgICAgIFI6ICclSDolTScsXG4gICAgICAgICAgICAgICAgVDogJyVIOiVNOiVTJyxcbiAgICAgICAgICAgICAgICBYOiAnJVQnLFxuICAgICAgICAgICAgICAgIGM6ICclYSAlYiAlZCAlWCAlWScsXG4gICAgICAgICAgICAgICAgcjogJyVJOiVNOiVTICVwJyxcbiAgICAgICAgICAgICAgICB2OiAnJWUtJWItJVknLFxuICAgICAgICAgICAgICAgIHg6ICclRCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFN0cmZ0aW1lID0gbmV3IFN0cmZ0aW1lKERlZmF1bHRMb2NhbGUsIDAsIGZhbHNlKSxcbiAgICAgICAgaXNDb21tb25KUyA9IHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnLFxuICAgICAgICBuYW1lc3BhY2U7XG5cbiAgICAvLyBDb21tb25KUyAvIE5vZGUgbW9kdWxlXG4gICAgaWYgKGlzQ29tbW9uSlMpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gbW9kdWxlLmV4cG9ydHMgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGRlcHJlY2F0ZWRTdHJmdGltZTtcbiAgICAgICAgaWYoam9vX2dsb2JhbF9vYmplY3QpIGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cbiAgICAvLyBCcm93c2VycyBhbmQgb3RoZXIgZW52aXJvbm1lbnRzXG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEdldCB0aGUgZ2xvYmFsIG9iamVjdC4gV29ya3MgaW4gRVMzLCBFUzUsIGFuZCBFUzUgc3RyaWN0IG1vZGUuXG4gICAgICAgIG5hbWVzcGFjZSA9IGpvb19nbG9iYWxfb2JqZWN0IHx8IChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMgfHwgKDEsZXZhbCkoJ3RoaXMnKTsgfSgpKTtcbiAgICAgICAgbmFtZXNwYWNlLnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cblxuICAgIC8vIERlcHJlY2F0ZWQgQVBJLCB0byBiZSByZW1vdmVkIGluIHYxLjBcbiAgICB2YXIgX3JlcXVpcmUgPSBpc0NvbW1vbkpTID8gXCJyZXF1aXJlKCdzdHJmdGltZScpXCIgOiBcInN0cmZ0aW1lXCI7XG4gICAgdmFyIF9kZXByZWNhdGlvbldhcm5pbmdzID0ge307XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRpb25XYXJuaW5nKG5hbWUsIGluc3RlYWQpIHtcbiAgICAgICAgaWYgKCFfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gXCIgKyBuYW1lICsgXCIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMS4wLiBJbnN0ZWFkLCB1c2UgYFwiICsgaW5zdGVhZCArIFwiYC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVUWiA9IGRlcHJlY2F0ZWRTdHJmdGltZVRaO1xuICAgIG5hbWVzcGFjZS5zdHJmdGltZVVUQyA9IGRlcHJlY2F0ZWRTdHJmdGltZVVUQztcbiAgICBuYW1lc3BhY2UubG9jYWxpemVkU3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWVMb2NhbGl6ZWQ7XG5cbiAgICAvLyBBZGFwdCB0aGUgb2xkIEFQSSB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBuZXcgQVBJLlxuICAgIGZ1bmN0aW9uIGFkYXB0Rm9yd2FyZHMoZm4pIHtcbiAgICAgICAgZm4ubG9jYWxpemUgPSBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi50aW1lem9uZSA9IGRlZmF1bHRTdHJmdGltZS50aW1lem9uZS5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgICAgIGZuLnV0YyA9IGRlZmF1bHRTdHJmdGltZS51dGMuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgIH1cblxuICAgIGFkYXB0Rm9yd2FyZHMoYWRhcHRlZFN0cmZ0aW1lKTtcbiAgICBmdW5jdGlvbiBhZGFwdGVkU3RyZnRpbWUoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgLy8gZCBhbmQgbG9jYWxlIGFyZSBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBsb2NhbGUpXG4gICAgICAgIGlmIChkICYmIGQuZGF5cykge1xuICAgICAgICAgICAgbG9jYWxlID0gZDtcbiAgICAgICAgICAgIGQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSwgW2xvY2FsZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGRlcHJlY2F0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0pYFwiLCBfcmVxdWlyZSArIFwiKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVFooZm10LCBkLCBsb2NhbGUsIHRpbWV6b25lKSB7XG4gICAgICAgIC8vIGxvY2FsZSBpcyBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBkYXRlLCB0aW1lem9uZSlcbiAgICAgICAgaWYgKCh0eXBlb2YgbG9jYWxlID09ICdudW1iZXInIHx8IHR5cGVvZiBsb2NhbGUgPT0gJ3N0cmluZycpICYmIHRpbWV6b25lID09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWV6b25lID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0eilgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKS50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgdmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcy50aW1lem9uZSh0eikoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KTsgcyhmb3JtYXQsIFtkYXRlXSlgIG9yIGBcIiArIF9yZXF1aXJlICsgXCIudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IChsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZSkudGltZXpvbmUodGltZXpvbmUpO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICB2YXIgdXRjU3RyZnRpbWUgPSBkZWZhdWx0U3RyZnRpbWUudXRjKCk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVVRDKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBkYXRlLCBsb2NhbGUpYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVVUQyhmb3JtYXQsIFtkYXRlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IHV0Y1N0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiB1dGNTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkKGxvY2FsZSkge1xuICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplZFN0cmZ0aW1lKGxvY2FsZSlgXCIsIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKVwiKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpO1xuICAgIH1cbiAgICAvLyBFbmQgb2YgZGVwcmVjYXRlZCBBUElcblxuICAgIC8vIFBvbHlmaWxsIERhdGUubm93IGZvciBvbGQgYnJvd3NlcnMuXG4gICAgaWYgKHR5cGVvZiBEYXRlLm5vdyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBEYXRlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiArbmV3IERhdGUoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBTdHJmdGltZShsb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNUaW1lem9uZSkge1xuICAgICAgICB2YXIgX2xvY2FsZSA9IGxvY2FsZSB8fCBEZWZhdWx0TG9jYWxlLFxuICAgICAgICAgICAgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID0gY3VzdG9tVGltZXpvbmVPZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIF91c2VVdGNCYXNlZERhdGUgPSB1c2VVdGNUaW1lem9uZSB8fCBmYWxzZSxcblxuICAgICAgICAgICAgLy8gd2Ugc3RvcmUgdW5peCB0aW1lc3RhbXAgdmFsdWUgaGVyZSB0byBub3QgY3JlYXRlIG5ldyBEYXRlKCkgZWFjaCBpdGVyYXRpb24gKGVhY2ggbWlsbGlzZWNvbmQpXG4gICAgICAgICAgICAvLyBEYXRlLm5vdygpIGlzIDIgdGltZXMgZmFzdGVyIHRoYW4gbmV3IERhdGUoKVxuICAgICAgICAgICAgLy8gd2hpbGUgbWlsbGlzZWNvbmQgcHJlY2lzZSBpcyBlbm91Z2ggaGVyZVxuICAgICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSB2ZXJ5IGhlbHBmdWwgd2hlbiBzdHJmdGltZSB0cmlnZ2VyZWQgYSBsb3Qgb2YgdGltZXMgb25lIGJ5IG9uZVxuICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSAwLFxuICAgICAgICAgICAgX2NhY2hlZERhdGU7XG5cbiAgICAgICAgZnVuY3Rpb24gX3N0cmZ0aW1lKGZvcm1hdCwgZGF0ZSkge1xuICAgICAgICAgICAgdmFyIHRpbWVzdGFtcDtcblxuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZXN0YW1wID4gX2NhY2hlZERhdGVUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSBjdXJyZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wKTtcblxuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBfY2FjaGVkRGF0ZVRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG93IHRvIGF2b2lkIGR1cGxpY2F0aW9uIG9mIGRhdGUgaW5zdGFudGlhdGlvbiBmb3IgdXRjIGhlcmU/XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSB0aWVkIHRvIGdldFRpbWV6b25lT2Zmc2V0IG9mIHRoZSBjdXJyZW50IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlID0gbmV3IERhdGUoX2NhY2hlZERhdGVUaW1lc3RhbXAgKyBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihfY2FjaGVkRGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGUgPSBfY2FjaGVkRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgX2xvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSAnJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nID0gbnVsbCxcbiAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZSxcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBmb3JtYXQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRDaGFyQ29kZSA9IGZvcm1hdC5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzSW5TY29wZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAnLSdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICdfJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDk1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnOidcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA1OCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRlbmRlZFRaKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gZGV0ZWN0ZWQgdXNlIG9mIHVuc3VwcG9ydGVkICU6OiBvciAlOjo6IG1vZGlmaWVycyB0byBzdHJmdGltZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRUWiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDaGFyQ29kZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlcyBmb3IgbmV3IERhdGUoMCkgaW4gR01UXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdUaHVyc2RheSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLmRheXNbZGF0ZS5nZXREYXkoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW51YXJ5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUubW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyAxMDApLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxLzAxLzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ELCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwLTAxLTAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5GLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnSSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDczOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhNYXRoLmZsb29yKHRpbWVzdGFtcCAlIDEwMDApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1pbnV0ZXMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdhbSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuYW0gOiBsb2NhbGUucG07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuUiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0U2Vjb25kcygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwOjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ULCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIod2Vla051bWJlcihkYXRlLCAnc3VuZGF5JyksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ21vbmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE2OjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5YLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdHTVQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUgJiYgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBcIkdNVFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZml4bWUgb3B0aW1pemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR6U3RyaW5nID0gZGF0ZS50b1N0cmluZygpLm1hdGNoKC9cXCgoW1xcd1xcc10rKVxcKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gdHpTdHJpbmcgJiYgdHpTdHJpbmdbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnREYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuYywgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0RGF0ZSgpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydE1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnaic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IE1hdGguY2VpbCgoZGF0ZS5nZXRUaW1lKCkgLSB5LmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhkYXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldEhvdXJzKCksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1vbnRoKCkgKyAxLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1xcbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMXN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKSArIG9yZGluYWwoZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnQU0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/IGxvY2FsZS5BTSA6IGxvY2FsZS5QTTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyOjAwOjAwIEFNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuciwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IE1hdGguZmxvb3IodGltZXN0YW1wIC8gMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFx0JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd1JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXkgPT09IDAgPyA3IDogZGF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxIC0gNywgTW9uZGF5IGlzIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEtSmFuLTE5NzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy52LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMCAtIDYsIFN1bmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyLzMxLzY5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMueCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAoJycgKyBkYXRlLmdldEZ1bGxZZWFyKCkpLnNsaWNlKDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnKzAwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd6JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZXh0ZW5kZWRUWiA/IFwiKzAwOjAwXCIgOiBcIiswMDAwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2ZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2N1c3RvbVRpbWV6b25lT2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQgLyAoNjAgKiAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IC1kYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ24gPSBvZmYgPCAwID8gJy0nIDogJysnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VwID0gZXh0ZW5kZWRUWiA/ICc6JyA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaG91cnMgPSBNYXRoLmZsb29yKE1hdGguYWJzKG9mZiAvIDYwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW5zID0gTWF0aC5hYnMob2ZmICUgNjApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gc2lnbiArIHBhZFRpbGwyKGhvdXJzKSArIHNlcCArIHBhZFRpbGwyKG1pbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAnJSdcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJDb2RlID09PSAzNykge1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0U3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gX3N0cmZ0aW1lO1xuXG4gICAgICAgIHN0cmZ0aW1lLmxvY2FsaXplID0gZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKGxvY2FsZSB8fCBfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIF91c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnRpbWV6b25lID0gZnVuY3Rpb24odGltZXpvbmUpIHtcbiAgICAgICAgICAgIHZhciBjdXN0b21UaW1lem9uZU9mZnNldCA9IF9jdXN0b21UaW1lem9uZU9mZnNldDtcbiAgICAgICAgICAgIHZhciB1c2VVdGNCYXNlZERhdGUgPSBfdXNlVXRjQmFzZWREYXRlO1xuXG4gICAgICAgICAgICB2YXIgdGltZXpvbmVUeXBlID0gdHlwZW9mIHRpbWV6b25lO1xuICAgICAgICAgICAgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicgfHwgdGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHVzZVV0Y0Jhc2VkRGF0ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAvLyBJU08gODYwMSBmb3JtYXQgdGltZXpvbmUgc3RyaW5nLCBbLStdSEhNTVxuICAgICAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gdGltZXpvbmVbMF0gPT09ICctJyA/IC0xIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMSwgMyksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBwYXJzZUludCh0aW1lem9uZS5zbGljZSgzLCA1KSwgMTApO1xuXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gc2lnbiAqICgoNjAgKiBob3VycykgKyBtaW51dGVzKSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gbWludXRlczogNDIwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSB0aW1lem9uZSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUoX2xvY2FsZSwgY3VzdG9tVGltZXpvbmVPZmZzZXQsIHVzZVV0Y0Jhc2VkRGF0ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc3RyZnRpbWUudXRjID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIF9jdXN0b21UaW1lem9uZU9mZnNldCwgdHJ1ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZFRpbGwyKG51bWJlclRvUGFkLCBwYWRkaW5nQ2hhcikge1xuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT09ICcnIHx8IG51bWJlclRvUGFkID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkaW5nQ2hhciA9PSBudWxsKSB7XG4gICAgICAgICAgICBwYWRkaW5nQ2hhciA9ICcwJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFkZGluZ0NoYXIgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMyhudW1iZXJUb1BhZCkge1xuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5OSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiAnMCcgKyBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzAwJyArIG51bWJlclRvUGFkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvdXJzMTIoaG91cikge1xuICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGhvdXIgPiAxMikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgLSAxMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG5cbiAgICAvLyBmaXJzdFdlZWtkYXk6ICdzdW5kYXknIG9yICdtb25kYXknLCBkZWZhdWx0IGlzICdzdW5kYXknXG4gICAgLy9cbiAgICAvLyBQaWxmZXJlZCAmIHBvcnRlZCBmcm9tIFJ1YnkncyBzdHJmdGltZSBpbXBsZW1lbnRhdGlvbi5cbiAgICBmdW5jdGlvbiB3ZWVrTnVtYmVyKGRhdGUsIGZpcnN0V2Vla2RheSkge1xuICAgICAgICBmaXJzdFdlZWtkYXkgPSBmaXJzdFdlZWtkYXkgfHwgJ3N1bmRheSc7XG5cbiAgICAgICAgLy8gVGhpcyB3b3JrcyBieSBzaGlmdGluZyB0aGUgd2Vla2RheSBiYWNrIGJ5IG9uZSBkYXkgaWYgd2VcbiAgICAgICAgLy8gYXJlIHRyZWF0aW5nIE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICB2YXIgd2Vla2RheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChmaXJzdFdlZWtkYXkgPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBpZiAod2Vla2RheSA9PT0gMCkgLy8gU3VuZGF5XG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IDY7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgd2Vla2RheS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGZpcnN0RGF5T2ZZZWFyVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKSxcbiAgICAgICAgICAgIGRhdGVVdGMgPSBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLFxuICAgICAgICAgICAgeWRheSA9IE1hdGguZmxvb3IoKGRhdGVVdGMgLSBmaXJzdERheU9mWWVhclV0YykgLyA4NjQwMDAwMCksXG4gICAgICAgICAgICB3ZWVrTnVtID0gKHlkYXkgKyA3IC0gd2Vla2RheSkgLyA3O1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHdlZWtOdW0pO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgb3JkaW5hbCBzdWZmaXggZm9yIGEgbnVtYmVyOiBzdCwgbmQsIHJkLCBvciB0aFxuICAgIGZ1bmN0aW9uIG9yZGluYWwobnVtYmVyKSB7XG4gICAgICAgIHZhciBpID0gbnVtYmVyICUgMTA7XG4gICAgICAgIHZhciBpaSA9IG51bWJlciAlIDEwMDtcblxuICAgICAgICBpZiAoKGlpID49IDExICYmIGlpIDw9IDEzKSB8fCBpID09PSAwIHx8IGkgPj0gNCkge1xuICAgICAgICAgICAgcmV0dXJuICd0aCc7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiAnc3QnO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gJ25kJztcbiAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICdyZCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihkYXRlKSB7XG4gICAgICAgIHJldHVybiAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIHx8IDApICogNjAwMDA7XG4gICAgfVxuXG59KCkpO1xuIiwiKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZSE9PVwidW5kZWZpbmVkXCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT1cInVuZGVmaW5lZFwiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09XCJ1bmRlZmluZWRcIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuVmlydHVhbERvbSA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZShcIi4vdmRvbS9jcmVhdGUtZWxlbWVudC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVsZW1lbnRcblxufSx7XCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIjoyNH1dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRpZmYgPSByZXF1aXJlKFwiLi92dHJlZS9kaWZmLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG59LHtcIi4vdnRyZWUvZGlmZi5qc1wiOjQ3fV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vKiFcbiAqIENyb3NzLUJyb3dzZXIgU3BsaXQgMS4xLjFcbiAqIENvcHlyaWdodCAyMDA3LTIwMTIgU3RldmVuIExldml0aGFuIDxzdGV2ZW5sZXZpdGhhbi5jb20+XG4gKiBBdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBFQ01BU2NyaXB0IGNvbXBsaWFudCwgdW5pZm9ybSBjcm9zcy1icm93c2VyIHNwbGl0IG1ldGhvZFxuICovXG5cbi8qKlxuICogU3BsaXRzIGEgc3RyaW5nIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncyB1c2luZyBhIHJlZ2V4IG9yIHN0cmluZyBzZXBhcmF0b3IuIE1hdGNoZXMgb2YgdGhlXG4gKiBzZXBhcmF0b3IgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IGFycmF5LiBIb3dldmVyLCBpZiBgc2VwYXJhdG9yYCBpcyBhIHJlZ2V4IHRoYXQgY29udGFpbnNcbiAqIGNhcHR1cmluZyBncm91cHMsIGJhY2tyZWZlcmVuY2VzIGFyZSBzcGxpY2VkIGludG8gdGhlIHJlc3VsdCBlYWNoIHRpbWUgYHNlcGFyYXRvcmAgaXMgbWF0Y2hlZC5cbiAqIEZpeGVzIGJyb3dzZXIgYnVncyBjb21wYXJlZCB0byB0aGUgbmF0aXZlIGBTdHJpbmcucHJvdG90eXBlLnNwbGl0YCBhbmQgY2FuIGJlIHVzZWQgcmVsaWFibHlcbiAqIGNyb3NzLWJyb3dzZXIuXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFN0cmluZyB0byBzcGxpdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gc2VwYXJhdG9yIFJlZ2V4IG9yIHN0cmluZyB0byB1c2UgZm9yIHNlcGFyYXRpbmcgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbGltaXRdIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUgaW4gdGhlIHJlc3VsdCBhcnJheS5cbiAqIEByZXR1cm5zIHtBcnJheX0gQXJyYXkgb2Ygc3Vic3RyaW5ncy5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQmFzaWMgdXNlXG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJyk7XG4gKiAvLyAtPiBbJ2EnLCAnYicsICdjJywgJ2QnXVxuICpcbiAqIC8vIFdpdGggbGltaXRcbiAqIHNwbGl0KCdhIGIgYyBkJywgJyAnLCAyKTtcbiAqIC8vIC0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBCYWNrcmVmZXJlbmNlcyBpbiByZXN1bHQgYXJyYXlcbiAqIHNwbGl0KCcuLndvcmQxIHdvcmQyLi4nLCAvKFthLXpdKykoXFxkKykvaSk7XG4gKiAvLyAtPiBbJy4uJywgJ3dvcmQnLCAnMScsICcgJywgJ3dvcmQnLCAnMicsICcuLiddXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uIHNwbGl0KHVuZGVmKSB7XG5cbiAgdmFyIG5hdGl2ZVNwbGl0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxpdCxcbiAgICBjb21wbGlhbnRFeGVjTnBjZyA9IC8oKT8/Ly5leGVjKFwiXCIpWzFdID09PSB1bmRlZixcbiAgICAvLyBOUENHOiBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cFxuICAgIHNlbGY7XG5cbiAgc2VsZiA9IGZ1bmN0aW9uKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgYG5hdGl2ZVNwbGl0YFxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc2VwYXJhdG9yKSAhPT0gXCJbb2JqZWN0IFJlZ0V4cF1cIikge1xuICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9XG4gICAgdmFyIG91dHB1dCA9IFtdLFxuICAgICAgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyBcImlcIiA6IFwiXCIpICsgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyBcIm1cIiA6IFwiXCIpICsgKHNlcGFyYXRvci5leHRlbmRlZCA/IFwieFwiIDogXCJcIikgKyAvLyBQcm9wb3NlZCBmb3IgRVM2XG4gICAgICAoc2VwYXJhdG9yLnN0aWNreSA/IFwieVwiIDogXCJcIiksXG4gICAgICAvLyBGaXJlZm94IDMrXG4gICAgICBsYXN0TGFzdEluZGV4ID0gMCxcbiAgICAgIC8vIE1ha2UgYGdsb2JhbGAgYW5kIGF2b2lkIGBsYXN0SW5kZXhgIGlzc3VlcyBieSB3b3JraW5nIHdpdGggYSBjb3B5XG4gICAgICBzZXBhcmF0b3IgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgXCJnXCIpLFxuICAgICAgc2VwYXJhdG9yMiwgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICBzdHIgKz0gXCJcIjsgLy8gVHlwZS1jb252ZXJ0XG4gICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZykge1xuICAgICAgLy8gRG9lc24ndCBuZWVkIGZsYWdzIGd5LCBidXQgdGhleSBkb24ndCBodXJ0XG4gICAgICBzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cChcIl5cIiArIHNlcGFyYXRvci5zb3VyY2UgKyBcIiQoPyFcXFxccylcIiwgZmxhZ3MpO1xuICAgIH1cbiAgICAvKiBWYWx1ZXMgZm9yIGBsaW1pdGAsIHBlciB0aGUgc3BlYzpcbiAgICAgKiBJZiB1bmRlZmluZWQ6IDQyOTQ5NjcyOTUgLy8gTWF0aC5wb3coMiwgMzIpIC0gMVxuICAgICAqIElmIDAsIEluZmluaXR5LCBvciBOYU46IDBcbiAgICAgKiBJZiBwb3NpdGl2ZSBudW1iZXI6IGxpbWl0ID0gTWF0aC5mbG9vcihsaW1pdCk7IGlmIChsaW1pdCA+IDQyOTQ5NjcyOTUpIGxpbWl0IC09IDQyOTQ5NjcyOTY7XG4gICAgICogSWYgbmVnYXRpdmUgbnVtYmVyOiA0Mjk0OTY3Mjk2IC0gTWF0aC5mbG9vcihNYXRoLmFicyhsaW1pdCkpXG4gICAgICogSWYgb3RoZXI6IFR5cGUtY29udmVydCwgdGhlbiB1c2UgdGhlIGFib3ZlIHJ1bGVzXG4gICAgICovXG4gICAgbGltaXQgPSBsaW1pdCA9PT0gdW5kZWYgPyAtMSA+Pj4gMCA6IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICBsaW1pdCA+Pj4gMDsgLy8gVG9VaW50MzIobGltaXQpXG4gICAgd2hpbGUgKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3RyKSkge1xuICAgICAgLy8gYHNlcGFyYXRvci5sYXN0SW5kZXhgIGlzIG5vdCByZWxpYWJsZSBjcm9zcy1icm93c2VyXG4gICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHN0ci5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYCBmb3JcbiAgICAgICAgLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBzXG4gICAgICAgIGlmICghY29tcGxpYW50RXhlY05wY2cgJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgIG1hdGNoWzBdLnJlcGxhY2Uoc2VwYXJhdG9yMiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWYpIHtcbiAgICAgICAgICAgICAgICBtYXRjaFtpXSA9IHVuZGVmO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggPj0gbGltaXQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlcGFyYXRvci5sYXN0SW5kZXggPT09IG1hdGNoLmluZGV4KSB7XG4gICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXgrKzsgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvci50ZXN0KFwiXCIpKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKFwiXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0Lmxlbmd0aCA+IGxpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIGxpbWl0KSA6IG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn0pKCk7XG5cbn0se31dLDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgT25lVmVyc2lvbkNvbnN0cmFpbnQgPSByZXF1aXJlKCdpbmRpdmlkdWFsL29uZS12ZXJzaW9uJyk7XG5cbnZhciBNWV9WRVJTSU9OID0gJzcnO1xuT25lVmVyc2lvbkNvbnN0cmFpbnQoJ2V2LXN0b3JlJywgTVlfVkVSU0lPTik7XG5cbnZhciBoYXNoS2V5ID0gJ19fRVZfU1RPUkVfS0VZQCcgKyBNWV9WRVJTSU9OO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2U3RvcmU7XG5cbmZ1bmN0aW9uIEV2U3RvcmUoZWxlbSkge1xuICAgIHZhciBoYXNoID0gZWxlbVtoYXNoS2V5XTtcblxuICAgIGlmICghaGFzaCkge1xuICAgICAgICBoYXNoID0gZWxlbVtoYXNoS2V5XSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xufVxuXG59LHtcImluZGl2aWR1YWwvb25lLXZlcnNpb25cIjo2fV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG4ndXNlIHN0cmljdCc7XG5cbi8qZ2xvYmFsIHdpbmRvdywgZ2xvYmFsKi9cblxudmFyIHJvb3QgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/XG4gICAgd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIGdsb2JhbCA6IHt9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEluZGl2aWR1YWw7XG5cbmZ1bmN0aW9uIEluZGl2aWR1YWwoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gcm9vdCkge1xuICAgICAgICByZXR1cm4gcm9vdFtrZXldO1xuICAgIH1cblxuICAgIHJvb3Rba2V5XSA9IHZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se31dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgSW5kaXZpZHVhbCA9IHJlcXVpcmUoJy4vaW5kZXguanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPbmVWZXJzaW9uO1xuXG5mdW5jdGlvbiBPbmVWZXJzaW9uKG1vZHVsZU5hbWUsIHZlcnNpb24sIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciBrZXkgPSAnX19JTkRJVklEVUFMX09ORV9WRVJTSU9OXycgKyBtb2R1bGVOYW1lO1xuICAgIHZhciBlbmZvcmNlS2V5ID0ga2V5ICsgJ19FTkZPUkNFX1NJTkdMRVRPTic7XG5cbiAgICB2YXIgdmVyc2lvblZhbHVlID0gSW5kaXZpZHVhbChlbmZvcmNlS2V5LCB2ZXJzaW9uKTtcblxuICAgIGlmICh2ZXJzaW9uVmFsdWUgIT09IHZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gb25seSBoYXZlIG9uZSBjb3B5IG9mICcgK1xuICAgICAgICAgICAgbW9kdWxlTmFtZSArICcuXFxuJyArXG4gICAgICAgICAgICAnWW91IGFscmVhZHkgaGF2ZSB2ZXJzaW9uICcgKyB2ZXJzaW9uVmFsdWUgK1xuICAgICAgICAgICAgJyBpbnN0YWxsZWQuXFxuJyArXG4gICAgICAgICAgICAnVGhpcyBtZWFucyB5b3UgY2Fubm90IGluc3RhbGwgdmVyc2lvbiAnICsgdmVyc2lvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEluZGl2aWR1YWwoa2V5LCBkZWZhdWx0VmFsdWUpO1xufVxuXG59LHtcIi4vaW5kZXguanNcIjo1fV0sNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG52YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1wibWluLWRvY3VtZW50XCI6MTd9XSw4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG5cbnZhciBDb21tZW50ID0gcmVxdWlyZShcIi4vZG9tLWNvbW1lbnQuanNcIilcbnZhciBET01UZXh0ID0gcmVxdWlyZShcIi4vZG9tLXRleHQuanNcIilcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcbnZhciBEb2N1bWVudEZyYWdtZW50ID0gcmVxdWlyZShcIi4vZG9tLWZyYWdtZW50LmpzXCIpXG52YXIgRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC5qc1wiKVxudmFyIGRpc3BhdGNoRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiKVxudmFyIGFkZEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciByZW1vdmVFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnQ7XG5cbmZ1bmN0aW9uIERvY3VtZW50KCkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IHRoaXMuY3JlYXRlRWxlbWVudChcImhlYWRcIilcbiAgICB0aGlzLmJvZHkgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oZWFkKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYm9keSlcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbdGhpcy5kb2N1bWVudEVsZW1lbnRdXG4gICAgdGhpcy5ub2RlVHlwZSA9IDlcbn1cblxudmFyIHByb3RvID0gRG9jdW1lbnQucHJvdG90eXBlO1xucHJvdG8uY3JlYXRlVGV4dE5vZGUgPSBmdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudE5TID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gbnVsbCA/IG51bGwgOiBTdHJpbmcobmFtZXNwYWNlKVxuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzLCBucylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnTmFtZSkge1xuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzKVxufVxuXG5wcm90by5jcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpIHtcbiAgICByZXR1cm4gbmV3IERvY3VtZW50RnJhZ21lbnQodGhpcylcbn1cblxucHJvdG8uY3JlYXRlRXZlbnQgPSBmdW5jdGlvbiBjcmVhdGVFdmVudChmYW1pbHkpIHtcbiAgICByZXR1cm4gbmV3IEV2ZW50KGZhbWlseSlcbn1cblxucHJvdG8uY3JlYXRlQ29tbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhLCB0aGlzKVxufVxuXG5wcm90by5nZXRFbGVtZW50QnlJZCA9IGZ1bmN0aW9uIGdldEVsZW1lbnRCeUlkKGlkKSB7XG4gICAgaWQgPSBTdHJpbmcoaWQpXG5cbiAgICB2YXIgcmVzdWx0ID0gZG9tV2Fsayh0aGlzLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChTdHJpbmcobm9kZS5pZCkgPT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQgfHwgbnVsbFxufVxuXG5wcm90by5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxucHJvdG8uZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZVxucHJvdG8uY29udGFpbnMgPSBET01FbGVtZW50LnByb3RvdHlwZS5jb250YWluc1xuXG5wcm90by5yZW1vdmVFdmVudExpc3RlbmVyID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxucHJvdG8uYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXJcbnByb3RvLmRpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50XG5cbn0se1wiLi9kb20tY29tbWVudC5qc1wiOjksXCIuL2RvbS1lbGVtZW50LmpzXCI6MTAsXCIuL2RvbS1mcmFnbWVudC5qc1wiOjExLFwiLi9kb20tdGV4dC5qc1wiOjEyLFwiLi9ldmVudC5qc1wiOjEzLFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCJkb20td2Fsa1wiOjE4fV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IENvbW1lbnRcblxuZnVuY3Rpb24gQ29tbWVudChkYXRhLCBvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDb21tZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgb3duZXIpXG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICAgIHRoaXMubm9kZVZhbHVlID0gZGF0YVxuICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkNvbW1lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gOFxuQ29tbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNjb21tZW50XCJcblxuQ29tbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfQ29tbWVudF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IENvbW1lbnRdXCJcbn1cblxufSx7fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvbVdhbGsgPSByZXF1aXJlKFwiZG9tLXdhbGtcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHNlcmlhbGl6ZU5vZGUgPSByZXF1aXJlKFwiLi9zZXJpYWxpemUuanNcIilcblxudmFyIGh0bWxucyA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG5cbm1vZHVsZS5leHBvcnRzID0gRE9NRWxlbWVudFxuXG5mdW5jdGlvbiBET01FbGVtZW50KHRhZ05hbWUsIG93bmVyLCBuYW1lc3BhY2UpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUpXG4gICAgfVxuXG4gICAgdmFyIG5zID0gbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBodG1sbnMgOiAobmFtZXNwYWNlIHx8IG51bGwpXG5cbiAgICB0aGlzLnRhZ05hbWUgPSBucyA9PT0gaHRtbG5zID8gU3RyaW5nKHRhZ05hbWUpLnRvVXBwZXJDYXNlKCkgOiB0YWdOYW1lXG4gICAgdGhpcy5ub2RlTmFtZSA9IHRoaXMudGFnTmFtZVxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJcIlxuICAgIHRoaXMuZGF0YXNldCA9IHt9XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5zdHlsZSA9IHt9XG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxuICAgIHRoaXMubmFtZXNwYWNlVVJJID0gbnNcbiAgICB0aGlzLl9hdHRyaWJ1dGVzID0ge31cblxuICAgIGlmICh0aGlzLnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgIHRoaXMudHlwZSA9ICd0ZXh0J1xuICAgIH1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUudHlwZSA9IFwiRE9NRWxlbWVudFwiXG5ET01FbGVtZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDFcblxuRE9NRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9hcHBlbmRDaGlsZChjaGlsZCkge1xuICAgIGlmIChjaGlsZC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpXG4gICAgY2hpbGQucGFyZW50Tm9kZSA9IHRoaXNcblxuICAgIHJldHVybiBjaGlsZFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlcGxhY2VDaGlsZChlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBuZWVkbGUucGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIG5lZWRsZS5wYXJlbnROb2RlID0gbnVsbFxuICAgICAgICB0aGlzLmNoaWxkTm9kZXNbaW5kZXhdID0gZWxlbVxuICAgICAgICBlbGVtLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICAgICAgcmV0dXJuIG5lZWRsZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVDaGlsZChlbGVtKSB7XG4gICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBlbGVtLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGVsZW0pXG4gICAgdGhpcy5jaGlsZE5vZGVzLnNwbGljZShpbmRleCwgMSlcblxuICAgIGVsZW0ucGFyZW50Tm9kZSA9IG51bGxcbiAgICByZXR1cm4gZWxlbVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2luc2VydEJlZm9yZShlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiByZWZlcmVuY2VFbGVtZW50IGlzIGEgZG9tIG5vZGVcbiAgICAgICAgLy8gYW5kIHBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IG5lZWRsZSA9PT0gbnVsbCB8fCBuZWVkbGUgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAtMSA6XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihuZWVkbGUpXG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDAsIGVsZW0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuICAgICAgICByZXR1cm4gZWxlbVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3NldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIHByZWZpeCA9IG51bGxcbiAgICAgICAgdmFyIGxvY2FsTmFtZSA9IG5hbWVcbiAgICAgICAgdmFyIGNvbG9uUG9zaXRpb24gPSBuYW1lLmluZGV4T2YoXCI6XCIpXG4gICAgICAgIGlmIChjb2xvblBvc2l0aW9uID4gLTEpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyKDAsIGNvbG9uUG9zaXRpb24pXG4gICAgICAgICAgICBsb2NhbE5hbWUgPSBuYW1lLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSlcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSB8fCAodGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdID0ge30pXG4gICAgICAgIGF0dHJpYnV0ZXNbbG9jYWxOYW1lXSA9IHt2YWx1ZTogdmFsdWUsIHByZWZpeDogcHJlZml4fVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVzW25hbWVdICYmIGF0dHJpYnV0ZXNbbmFtZV0udmFsdWVcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVzW25hbWVdXG4gICAgICAgIH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV1cbiAgICAgICAgcmV0dXJuICEhYXR0cmlidXRlcyAmJiBuYW1lIGluIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lLCB2YWx1ZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0QXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2hhc0F0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbkRPTUVsZW1lbnQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG4vLyBVbi1pbXBsZW1lbnRlZFxuRE9NRWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiBfRWxlbWVudF9mb2N1cygpIHtcbiAgICByZXR1cm4gdm9pZCAwXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0VsZW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUodGhpcylcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lcykge1xuICAgIHZhciBjbGFzc2VzID0gY2xhc3NOYW1lcy5zcGxpdChcIiBcIik7XG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWUgfHwgXCJcIlxuICAgICAgICAgICAgdmFyIG5vZGVDbGFzc2VzID0gbm9kZUNsYXNzTmFtZS5zcGxpdChcIiBcIilcblxuICAgICAgICAgICAgaWYgKGNsYXNzZXMuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUNsYXNzZXMuaW5kZXhPZihpdGVtKSAhPT0gLTFcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpIHtcbiAgICB0YWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiAodGFnTmFtZSA9PT0gJyonIHx8IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lKSkge1xuICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIF9FbGVtZW50X2NvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZG9tV2Fsayh0aGlzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCA9PT0gbm9kZVxuICAgIH0pIHx8IGZhbHNlXG59XG5cbn0se1wiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCIuL3NlcmlhbGl6ZS5qc1wiOjE5LFwiZG9tLXdhbGtcIjoxOH1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBEb2N1bWVudEZyYWdtZW50XG5cbmZ1bmN0aW9uIERvY3VtZW50RnJhZ21lbnQob3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KClcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXVxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGxcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRvY3VtZW50RnJhZ21lbnRcIlxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxMVxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNkb2N1bWVudC1mcmFnbWVudFwiXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGRcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgICBmdW5jdGlvbiBfRG9jdW1lbnRGcmFnbWVudF90b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcobm9kZSlcbiAgICAgICAgfSkuam9pbihcIlwiKVxuICAgIH1cblxufSx7XCIuL2RvbS1lbGVtZW50LmpzXCI6MTB9XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IERPTVRleHRcblxuZnVuY3Rpb24gRE9NVGV4dCh2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01UZXh0KHZhbHVlKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IHZhbHVlIHx8IFwiXCJcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnR5cGUgPSBcIkRPTVRleHROb2RlXCJcbkRPTVRleHQucHJvdG90eXBlLm5vZGVUeXBlID0gM1xuRE9NVGV4dC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiN0ZXh0XCJcblxuRE9NVGV4dC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfVGV4dF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnJlcGxhY2VEYXRhID0gZnVuY3Rpb24gcmVwbGFjZURhdGEoaW5kZXgsIGxlbmd0aCwgdmFsdWUpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZGF0YVxuICAgIHZhciBsZWZ0ID0gY3VycmVudC5zdWJzdHJpbmcoMCwgaW5kZXgpXG4gICAgdmFyIHJpZ2h0ID0gY3VycmVudC5zdWJzdHJpbmcoaW5kZXggKyBsZW5ndGgsIGN1cnJlbnQubGVuZ3RoKVxuICAgIHRoaXMuZGF0YSA9IGxlZnQgKyB2YWx1ZSArIHJpZ2h0XG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG59XG5cbn0se31dLDEzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gRXZlbnRcblxuZnVuY3Rpb24gRXZlbnQoZmFtaWx5KSB7fVxuXG5FdmVudC5wcm90b3R5cGUuaW5pdEV2ZW50ID0gZnVuY3Rpb24gX0V2ZW50X2luaXRFdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZVxuICAgIHRoaXMuYnViYmxlcyA9IGJ1YmJsZXNcbiAgICB0aGlzLmNhbmNlbGFibGUgPSBjYW5jZWxhYmxlXG59XG5cbkV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uIF9FdmVudF9wcmV2ZW50RGVmYXVsdCgpIHtcbiAgICBcbn1cblxufSx7fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBhZGRFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnNbdHlwZV0pIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0gPSBbXVxuICAgIH1cblxuICAgIGlmIChlbGVtLmxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0ucHVzaChsaXN0ZW5lcilcbiAgICB9XG59XG5cbn0se31dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gZGlzcGF0Y2hFdmVudFxuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2KSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG4gICAgdmFyIHR5cGUgPSBldi50eXBlXG5cbiAgICBpZiAoIWV2LnRhcmdldCkge1xuICAgICAgICBldi50YXJnZXQgPSBlbGVtXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICBlbGVtLmxpc3RlbmVycyA9IHt9XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG5cbiAgICBpZiAobGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGV2LmN1cnJlbnRUYXJnZXQgPSBlbGVtXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZXYpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyLmhhbmRsZUV2ZW50KGV2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWxlbS5wYXJlbnROb2RlLmRpc3BhdGNoRXZlbnQoZXYpXG4gICAgfVxufVxuXG59LHt9XSwxNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBsaXN0ID0gZWxlbS5saXN0ZW5lcnNbdHlwZV1cbiAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2YobGlzdGVuZXIpXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSlcbiAgICB9XG59XG5cbn0se31dLDE3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBEb2N1bWVudCA9IHJlcXVpcmUoJy4vZG9jdW1lbnQuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgRG9jdW1lbnQoKTtcblxufSx7XCIuL2RvY3VtZW50LmpzXCI6OH1dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdGl2ZWx5V2Fsa1xuXG5mdW5jdGlvbiBpdGVyYXRpdmVseVdhbGsobm9kZXMsIGNiKSB7XG4gICAgaWYgKCEoJ2xlbmd0aCcgaW4gbm9kZXMpKSB7XG4gICAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH1cbiAgICBcbiAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZXMpXG5cbiAgICB3aGlsZShub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlcy5zaGlmdCgpLFxuICAgICAgICAgICAgcmV0ID0gY2Iobm9kZSlcblxuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZE5vZGVzICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vZGVzID0gc2xpY2UuY2FsbChub2RlLmNoaWxkTm9kZXMpLmNvbmNhdChub2RlcylcbiAgICAgICAgfVxuICAgIH1cbn1cblxufSx7fV0sMTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWxpemVOb2RlXG5cbnZhciB2b2lkRWxlbWVudHMgPSAvYXJlYXxiYXNlfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8a2V5Z2VufGxpbmt8bWVudWl0ZW18bWV0YXxwYXJhbXxzb3VyY2V8dHJhY2t8d2JyL2k7XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZU5vZGUobm9kZSkge1xuICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gZXNjYXBlVGV4dChub2RlLmRhdGEpXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiBcIjwhLS1cIiArIG5vZGUuZGF0YSArIFwiLS0+XCJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVFbGVtZW50KG5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVFbGVtZW50KGVsZW0pIHtcbiAgICB2YXIgc3RyaW5ncyA9IFtdXG5cbiAgICB2YXIgdGFnbmFtZSA9IGVsZW0udGFnTmFtZVxuXG4gICAgaWYgKGVsZW0ubmFtZXNwYWNlVVJJID09PSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIikge1xuICAgICAgICB0YWduYW1lID0gdGFnbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgfVxuXG4gICAgc3RyaW5ncy5wdXNoKFwiPFwiICsgdGFnbmFtZSArIHByb3BlcnRpZXMoZWxlbSkgKyBkYXRhc2V0aWZ5KGVsZW0pKVxuXG4gICAgaWYgKHZvaWRFbGVtZW50cy50ZXN0KHRhZ25hbWUpKSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIiAvPlwiKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIj5cIilcblxuICAgICAgICBpZiAoZWxlbS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoLmFwcGx5KHN0cmluZ3MsIGVsZW0uY2hpbGROb2Rlcy5tYXAoc2VyaWFsaXplTm9kZSkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoKGVzY2FwZVRleHQoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS5pbm5lckhUTUwpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlbGVtLmlubmVySFRNTClcbiAgICAgICAgfVxuXG4gICAgICAgIHN0cmluZ3MucHVzaChcIjwvXCIgKyB0YWduYW1lICsgXCI+XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ3Muam9pbihcIlwiKVxufVxuXG5mdW5jdGlvbiBpc1Byb3BlcnR5KGVsZW0sIGtleSkge1xuICAgIHZhciB0eXBlID0gdHlwZW9mIGVsZW1ba2V5XVxuXG4gICAgaWYgKGtleSA9PT0gXCJzdHlsZVwiICYmIE9iamVjdC5rZXlzKGVsZW0uc3R5bGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW0uaGFzT3duUHJvcGVydHkoa2V5KSAmJlxuICAgICAgICAodHlwZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlID09PSBcImJvb2xlYW5cIiB8fCB0eXBlID09PSBcIm51bWJlclwiKSAmJlxuICAgICAgICBrZXkgIT09IFwibm9kZU5hbWVcIiAmJiBrZXkgIT09IFwiY2xhc3NOYW1lXCIgJiYga2V5ICE9PSBcInRhZ05hbWVcIiAmJlxuICAgICAgICBrZXkgIT09IFwidGV4dENvbnRlbnRcIiAmJiBrZXkgIT09IFwiaW5uZXJUZXh0XCIgJiYga2V5ICE9PSBcIm5hbWVzcGFjZVVSSVwiICYmICBrZXkgIT09IFwiaW5uZXJIVE1MXCJcbn1cblxuZnVuY3Rpb24gc3R5bGlmeShzdHlsZXMpIHtcbiAgICBpZiAodHlwZW9mIHN0eWxlcyA9PT0gJ3N0cmluZycpIHJldHVybiBzdHlsZXNcbiAgICB2YXIgYXR0ciA9IFwiXCJcbiAgICBPYmplY3Qua2V5cyhzdHlsZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzdHlsZXNba2V5XVxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSgvW0EtWl0vZywgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgcmV0dXJuIFwiLVwiICsgYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9KVxuICAgICAgICBhdHRyICs9IGtleSArIFwiOlwiICsgdmFsdWUgKyBcIjtcIlxuICAgIH0pXG4gICAgcmV0dXJuIGF0dHJcbn1cblxuZnVuY3Rpb24gZGF0YXNldGlmeShlbGVtKSB7XG4gICAgdmFyIGRzID0gZWxlbS5kYXRhc2V0XG4gICAgdmFyIHByb3BzID0gW11cblxuICAgIGZvciAodmFyIGtleSBpbiBkcykge1xuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogXCJkYXRhLVwiICsga2V5LCB2YWx1ZTogZHNba2V5XSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkobGlzdCkge1xuICAgIHZhciBhdHRyaWJ1dGVzID0gW11cbiAgICBsaXN0LmZvckVhY2goZnVuY3Rpb24gKHR1cGxlKSB7XG4gICAgICAgIHZhciBuYW1lID0gdHVwbGUubmFtZVxuICAgICAgICB2YXIgdmFsdWUgPSB0dXBsZS52YWx1ZVxuXG4gICAgICAgIGlmIChuYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gc3R5bGlmeSh2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXMucHVzaChuYW1lICsgXCI9XCIgKyBcIlxcXCJcIiArIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKSArIFwiXFxcIlwiKVxuICAgIH0pXG5cbiAgICByZXR1cm4gYXR0cmlidXRlcy5sZW5ndGggPyBcIiBcIiArIGF0dHJpYnV0ZXMuam9pbihcIiBcIikgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIHByb3BlcnRpZXMoZWxlbSkge1xuICAgIHZhciBwcm9wcyA9IFtdXG4gICAgZm9yICh2YXIga2V5IGluIGVsZW0pIHtcbiAgICAgICAgaWYgKGlzUHJvcGVydHkoZWxlbSwga2V5KSkge1xuICAgICAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IGVsZW1ba2V5XSB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbnMgaW4gZWxlbS5fYXR0cmlidXRlcykge1xuICAgICAgZm9yICh2YXIgYXR0cmlidXRlIGluIGVsZW0uX2F0dHJpYnV0ZXNbbnNdKSB7XG4gICAgICAgIHZhciBwcm9wID0gZWxlbS5fYXR0cmlidXRlc1tuc11bYXR0cmlidXRlXVxuICAgICAgICB2YXIgbmFtZSA9IChwcm9wLnByZWZpeCA/IHByb3AucHJlZml4ICsgXCI6XCIgOiBcIlwiKSArIGF0dHJpYnV0ZVxuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHByb3AudmFsdWUgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5jbGFzc05hbWUpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiY2xhc3NcIiwgdmFsdWU6IGVsZW0uY2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLmxlbmd0aCA/IHN0cmluZ2lmeShwcm9wcykgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIGVzY2FwZVRleHQocykge1xuICAgIHZhciBzdHIgPSAnJztcblxuICAgIGlmICh0eXBlb2YocykgPT09ICdzdHJpbmcnKSB7IFxuICAgICAgICBzdHIgPSBzOyBcbiAgICB9IGVsc2UgaWYgKHMpIHtcbiAgICAgICAgc3RyID0gcy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJcbiAgICAgICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCBcIiZsdDtcIilcbiAgICAgICAgLnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpXG59XG5cbmZ1bmN0aW9uIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHN0cikge1xuICAgIHJldHVybiBlc2NhcGVUZXh0KHN0cikucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIilcbn1cblxufSx7fV0sMjA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNPYmplY3QoeCkge1xuXHRyZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgeCAhPT0gbnVsbDtcbn07XG5cbn0se31dLDIxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBuYXRpdmVJc0FycmF5ID0gQXJyYXkuaXNBcnJheVxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUlzQXJyYXkgfHwgaXNBcnJheVxuXG5mdW5jdGlvbiBpc0FycmF5KG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09IFwiW29iamVjdCBBcnJheV1cIlxufVxuXG59LHt9XSwyMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgcGF0Y2ggPSByZXF1aXJlKFwiLi92ZG9tL3BhdGNoLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxufSx7XCIuL3Zkb20vcGF0Y2guanNcIjoyN31dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoXCJpcy1vYmplY3RcIilcbnZhciBpc0hvb2sgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdmhvb2suanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVByb3BlcnRpZXNcblxuZnVuY3Rpb24gYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzLCBwcmV2aW91cykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV1cblxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0hvb2socHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpXG4gICAgICAgICAgICBpZiAocHJvcFZhbHVlLmhvb2spIHtcbiAgICAgICAgICAgICAgICBwcm9wVmFsdWUuaG9vayhub2RlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QocHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKSB7XG4gICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKCFpc0hvb2socHJldmlvdXNWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnN0eWxlW2ldID0gXCJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByZXZpb3VzVmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IFwiXCJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNWYWx1ZS51bmhvb2spIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUudW5ob29rKG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSkge1xuICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWRcblxuICAgIC8vIFNldCBhdHRyaWJ1dGVzXG4gICAgaWYgKHByb3BOYW1lID09PSBcImF0dHJpYnV0ZXNcIikge1xuICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBhdHRyVmFsdWUgPSBwcm9wVmFsdWVbYXR0ck5hbWVdXG5cbiAgICAgICAgICAgIGlmIChhdHRyVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgYXR0clZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYocHJldmlvdXNWYWx1ZSAmJiBpc09iamVjdChwcmV2aW91c1ZhbHVlKSAmJlxuICAgICAgICBnZXRQcm90b3R5cGUocHJldmlvdXNWYWx1ZSkgIT09IGdldFByb3RvdHlwZShwcm9wVmFsdWUpKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNPYmplY3Qobm9kZVtwcm9wTmFtZV0pKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0ge31cbiAgICB9XG5cbiAgICB2YXIgcmVwbGFjZXIgPSBwcm9wTmFtZSA9PT0gXCJzdHlsZVwiID8gXCJcIiA6IHVuZGVmaW5lZFxuXG4gICAgZm9yICh2YXIgayBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tdXG4gICAgICAgIG5vZGVbcHJvcE5hbWVdW2tdID0gKHZhbHVlID09PSB1bmRlZmluZWQpID8gcmVwbGFjZXIgOiB2YWx1ZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUuX19wcm90b19fKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdmhvb2suanNcIjozOCxcImlzLW9iamVjdFwiOjIwfV0sMjQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZShcImdsb2JhbC9kb2N1bWVudFwiKVxuXG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodm5vZGUsIG9wdHMpIHtcbiAgICB2YXIgZG9jID0gb3B0cyA/IG9wdHMuZG9jdW1lbnQgfHwgZG9jdW1lbnQgOiBkb2N1bWVudFxuICAgIHZhciB3YXJuID0gb3B0cyA/IG9wdHMud2FybiA6IG51bGxcblxuICAgIHZub2RlID0gaGFuZGxlVGh1bmsodm5vZGUpLmFcblxuICAgIGlmIChpc1dpZGdldCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHZub2RlLmluaXQoKVxuICAgIH0gZWxzZSBpZiAoaXNWVGV4dCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGRvYy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KVxuICAgIH0gZWxzZSBpZiAoIWlzVk5vZGUodm5vZGUpKSB7XG4gICAgICAgIGlmICh3YXJuKSB7XG4gICAgICAgICAgICB3YXJuKFwiSXRlbSBpcyBub3QgYSB2YWxpZCB2aXJ0dWFsIGRvbSBub2RlXCIsIHZub2RlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSAodm5vZGUubmFtZXNwYWNlID09PSBudWxsKSA/XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KHZub2RlLnRhZ05hbWUpIDpcbiAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnROUyh2bm9kZS5uYW1lc3BhY2UsIHZub2RlLnRhZ05hbWUpXG5cbiAgICB2YXIgcHJvcHMgPSB2bm9kZS5wcm9wZXJ0aWVzXG4gICAgYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzKVxuXG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGNyZWF0ZUVsZW1lbnQoY2hpbGRyZW5baV0sIG9wdHMpXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGROb2RlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVcbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIjozNixcIi4uL3Zub2RlL2lzLXZub2RlLmpzXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dC5qc1wiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuL2FwcGx5LXByb3BlcnRpZXNcIjoyMyxcImdsb2JhbC9kb2N1bWVudFwiOjd9XSwyNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vLyBNYXBzIGEgdmlydHVhbCBET00gdHJlZSBvbnRvIGEgcmVhbCBET00gdHJlZSBpbiBhbiBlZmZpY2llbnQgbWFubmVyLlxuLy8gV2UgZG9uJ3Qgd2FudCB0byByZWFkIGFsbCBvZiB0aGUgRE9NIG5vZGVzIGluIHRoZSB0cmVlIHNvIHdlIHVzZVxuLy8gdGhlIGluLW9yZGVyIHRyZWUgaW5kZXhpbmcgdG8gZWxpbWluYXRlIHJlY3Vyc2lvbiBkb3duIGNlcnRhaW4gYnJhbmNoZXMuXG4vLyBXZSBvbmx5IHJlY3Vyc2UgaW50byBhIERPTSBub2RlIGlmIHdlIGtub3cgdGhhdCBpdCBjb250YWlucyBhIGNoaWxkIG9mXG4vLyBpbnRlcmVzdC5cblxudmFyIG5vQ2hpbGQgPSB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUluZGV4XG5cbmZ1bmN0aW9uIGRvbUluZGV4KHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcykge1xuICAgIGlmICghaW5kaWNlcyB8fCBpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRpY2VzLnNvcnQoYXNjZW5kaW5nKVxuICAgICAgICByZXR1cm4gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIDApXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWN1cnNlKHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KSB7XG4gICAgbm9kZXMgPSBub2RlcyB8fCB7fVxuXG5cbiAgICBpZiAocm9vdE5vZGUpIHtcbiAgICAgICAgaWYgKGluZGV4SW5SYW5nZShpbmRpY2VzLCByb290SW5kZXgsIHJvb3RJbmRleCkpIHtcbiAgICAgICAgICAgIG5vZGVzW3Jvb3RJbmRleF0gPSByb290Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZDaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW5cblxuICAgICAgICBpZiAodkNoaWxkcmVuKSB7XG5cbiAgICAgICAgICAgIHZhciBjaGlsZE5vZGVzID0gcm9vdE5vZGUuY2hpbGROb2Rlc1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByb290SW5kZXggKz0gMVxuXG4gICAgICAgICAgICAgICAgdmFyIHZDaGlsZCA9IHZDaGlsZHJlbltpXSB8fCBub0NoaWxkXG4gICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleCA9IHJvb3RJbmRleCArICh2Q2hpbGQuY291bnQgfHwgMClcblxuICAgICAgICAgICAgICAgIC8vIHNraXAgcmVjdXJzaW9uIGRvd24gdGhlIHRyZWUgaWYgdGhlcmUgYXJlIG5vIG5vZGVzIGRvd24gaGVyZVxuICAgICAgICAgICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCBuZXh0SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2UoY2hpbGROb2Rlc1tpXSwgdkNoaWxkLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvb3RJbmRleCA9IG5leHRJbmRleFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzXG59XG5cbi8vIEJpbmFyeSBzZWFyY2ggZm9yIGFuIGluZGV4IGluIHRoZSBpbnRlcnZhbCBbbGVmdCwgcmlnaHRdXG5mdW5jdGlvbiBpbmRleEluUmFuZ2UoaW5kaWNlcywgbGVmdCwgcmlnaHQpIHtcbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdmFyIG1pbkluZGV4ID0gMFxuICAgIHZhciBtYXhJbmRleCA9IGluZGljZXMubGVuZ3RoIC0gMVxuICAgIHZhciBjdXJyZW50SW5kZXhcbiAgICB2YXIgY3VycmVudEl0ZW1cblxuICAgIHdoaWxlIChtaW5JbmRleCA8PSBtYXhJbmRleCkge1xuICAgICAgICBjdXJyZW50SW5kZXggPSAoKG1heEluZGV4ICsgbWluSW5kZXgpIC8gMikgPj4gMFxuICAgICAgICBjdXJyZW50SXRlbSA9IGluZGljZXNbY3VycmVudEluZGV4XVxuXG4gICAgICAgIGlmIChtaW5JbmRleCA9PT0gbWF4SW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50SXRlbSA+PSBsZWZ0ICYmIGN1cnJlbnRJdGVtIDw9IHJpZ2h0XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEl0ZW0gPCBsZWZ0KSB7XG4gICAgICAgICAgICBtaW5JbmRleCA9IGN1cnJlbnRJbmRleCArIDFcbiAgICAgICAgfSBlbHNlICBpZiAoY3VycmVudEl0ZW0gPiByaWdodCkge1xuICAgICAgICAgICAgbWF4SW5kZXggPSBjdXJyZW50SW5kZXggLSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICAgIHJldHVybiBhID4gYiA/IDEgOiAtMVxufVxuXG59LHt9XSwyNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgVlBhdGNoID0gcmVxdWlyZShcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiKVxuXG52YXIgdXBkYXRlV2lkZ2V0ID0gcmVxdWlyZShcIi4vdXBkYXRlLXdpZGdldFwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5UGF0Y2hcblxuZnVuY3Rpb24gYXBwbHlQYXRjaCh2cGF0Y2gsIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgdHlwZSA9IHZwYXRjaC50eXBlXG4gICAgdmFyIHZOb2RlID0gdnBhdGNoLnZOb2RlXG4gICAgdmFyIHBhdGNoID0gdnBhdGNoLnBhdGNoXG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBWUGF0Y2guUkVNT1ZFOlxuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZU5vZGUoZG9tTm9kZSwgdk5vZGUpXG4gICAgICAgIGNhc2UgVlBhdGNoLklOU0VSVDpcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WVEVYVDpcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLldJREdFVDpcbiAgICAgICAgICAgIHJldHVybiB3aWRnZXRQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLlZOT0RFOlxuICAgICAgICAgICAgcmV0dXJuIHZOb2RlUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5PUkRFUjpcbiAgICAgICAgICAgIHJlb3JkZXJDaGlsZHJlbihkb21Ob2RlLCBwYXRjaClcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlBST1BTOlxuICAgICAgICAgICAgYXBwbHlQcm9wZXJ0aWVzKGRvbU5vZGUsIHBhdGNoLCB2Tm9kZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICAgICAgY2FzZSBWUGF0Y2guVEhVTks6XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZVJvb3QoZG9tTm9kZSxcbiAgICAgICAgICAgICAgICByZW5kZXJPcHRpb25zLnBhdGNoKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZG9tTm9kZSlcbiAgICB9XG5cbiAgICBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHZOb2RlKTtcblxuICAgIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIGluc2VydE5vZGUocGFyZW50Tm9kZSwgdk5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChuZXdOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIHN0cmluZ1BhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgdlRleHQsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGRvbU5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgZG9tTm9kZS5yZXBsYWNlRGF0YSgwLCBkb21Ob2RlLmxlbmd0aCwgdlRleHQudGV4dClcbiAgICAgICAgbmV3Tm9kZSA9IGRvbU5vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuICAgICAgICBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodlRleHQsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHdpZGdldFBhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgd2lkZ2V0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHVwZGF0aW5nID0gdXBkYXRlV2lkZ2V0KGxlZnRWTm9kZSwgd2lkZ2V0KVxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAodXBkYXRpbmcpIHtcbiAgICAgICAgbmV3Tm9kZSA9IHdpZGdldC51cGRhdGUobGVmdFZOb2RlLCBkb21Ob2RlKSB8fCBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHdpZGdldCwgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIGlmICghdXBkYXRpbmcpIHtcbiAgICAgICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCBsZWZ0Vk5vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gdk5vZGVQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgdykge1xuICAgIGlmICh0eXBlb2Ygdy5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIgJiYgaXNXaWRnZXQodykpIHtcbiAgICAgICAgdy5kZXN0cm95KGRvbU5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgbW92ZXMpIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IGRvbU5vZGUuY2hpbGROb2Rlc1xuICAgIHZhciBrZXlNYXAgPSB7fVxuICAgIHZhciBub2RlXG4gICAgdmFyIHJlbW92ZVxuICAgIHZhciBpbnNlcnRcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW92ZXMucmVtb3Zlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZW1vdmUgPSBtb3Zlcy5yZW1vdmVzW2ldXG4gICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzW3JlbW92ZS5mcm9tXVxuICAgICAgICBpZiAocmVtb3ZlLmtleSkge1xuICAgICAgICAgICAga2V5TWFwW3JlbW92ZS5rZXldID0gbm9kZVxuICAgICAgICB9XG4gICAgICAgIGRvbU5vZGUucmVtb3ZlQ2hpbGQobm9kZSlcbiAgICB9XG5cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGhcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1vdmVzLmluc2VydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaW5zZXJ0ID0gbW92ZXMuaW5zZXJ0c1tqXVxuICAgICAgICBub2RlID0ga2V5TWFwW2luc2VydC5rZXldXG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIHdlaXJkZXN0IGJ1ZyBpJ3ZlIGV2ZXIgc2VlbiBpbiB3ZWJraXRcbiAgICAgICAgZG9tTm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgaW5zZXJ0LnRvID49IGxlbmd0aCsrID8gbnVsbCA6IGNoaWxkTm9kZXNbaW5zZXJ0LnRvXSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSb290KG9sZFJvb3QsIG5ld1Jvb3QpIHtcbiAgICBpZiAob2xkUm9vdCAmJiBuZXdSb290ICYmIG9sZFJvb3QgIT09IG5ld1Jvb3QgJiYgb2xkUm9vdC5wYXJlbnROb2RlKSB7XG4gICAgICAgIG9sZFJvb3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Um9vdCwgb2xkUm9vdClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Um9vdDtcbn1cblxufSx7XCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MSxcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiOjQ0LFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCIuL3VwZGF0ZS13aWRnZXRcIjoyOH1dLDI3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIHJlbmRlciA9IHJlcXVpcmUoXCIuL2NyZWF0ZS1lbGVtZW50XCIpXG52YXIgZG9tSW5kZXggPSByZXF1aXJlKFwiLi9kb20taW5kZXhcIilcbnZhciBwYXRjaE9wID0gcmVxdWlyZShcIi4vcGF0Y2gtb3BcIilcbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxuZnVuY3Rpb24gcGF0Y2gocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICByZW5kZXJPcHRpb25zID0gcmVuZGVyT3B0aW9ucyB8fCB7fVxuICAgIHJlbmRlck9wdGlvbnMucGF0Y2ggPSByZW5kZXJPcHRpb25zLnBhdGNoICYmIHJlbmRlck9wdGlvbnMucGF0Y2ggIT09IHBhdGNoXG4gICAgICAgID8gcmVuZGVyT3B0aW9ucy5wYXRjaFxuICAgICAgICA6IHBhdGNoUmVjdXJzaXZlXG4gICAgcmVuZGVyT3B0aW9ucy5yZW5kZXIgPSByZW5kZXJPcHRpb25zLnJlbmRlciB8fCByZW5kZXJcblxuICAgIHJldHVybiByZW5kZXJPcHRpb25zLnBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKVxufVxuXG5mdW5jdGlvbiBwYXRjaFJlY3Vyc2l2ZShyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBpbmRpY2VzID0gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpXG5cbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlXG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZG9tSW5kZXgocm9vdE5vZGUsIHBhdGNoZXMuYSwgaW5kaWNlcylcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IHJvb3ROb2RlLm93bmVyRG9jdW1lbnRcblxuICAgIGlmICghcmVuZGVyT3B0aW9ucy5kb2N1bWVudCAmJiBvd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCkge1xuICAgICAgICByZW5kZXJPcHRpb25zLmRvY3VtZW50ID0gb3duZXJEb2N1bWVudFxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZUluZGV4ID0gaW5kaWNlc1tpXVxuICAgICAgICByb290Tm9kZSA9IGFwcGx5UGF0Y2gocm9vdE5vZGUsXG4gICAgICAgICAgICBpbmRleFtub2RlSW5kZXhdLFxuICAgICAgICAgICAgcGF0Y2hlc1tub2RlSW5kZXhdLFxuICAgICAgICAgICAgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gYXBwbHlQYXRjaChyb290Tm9kZSwgZG9tTm9kZSwgcGF0Y2hMaXN0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgaWYgKCFkb21Ob2RlKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAoaXNBcnJheShwYXRjaExpc3QpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0Y2hMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXdOb2RlID0gcGF0Y2hPcChwYXRjaExpc3RbaV0sIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0LCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgcm9vdE5vZGUgPSBuZXdOb2RlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2hlcykge1xuICAgICAgICBpZiAoa2V5ICE9PSBcImFcIikge1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKE51bWJlcihrZXkpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGljZXNcbn1cblxufSx7XCIuL2NyZWF0ZS1lbGVtZW50XCI6MjQsXCIuL2RvbS1pbmRleFwiOjI1LFwiLi9wYXRjaC1vcFwiOjI2LFwiZ2xvYmFsL2RvY3VtZW50XCI6NyxcIngtaXMtYXJyYXlcIjoyMX1dLDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSB1cGRhdGVXaWRnZXRcblxuZnVuY3Rpb24gdXBkYXRlV2lkZ2V0KGEsIGIpIHtcbiAgICBpZiAoaXNXaWRnZXQoYSkgJiYgaXNXaWRnZXQoYikpIHtcbiAgICAgICAgaWYgKFwibmFtZVwiIGluIGEgJiYgXCJuYW1lXCIgaW4gYikge1xuICAgICAgICAgICAgcmV0dXJuIGEuaWQgPT09IGIuaWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhLmluaXQgPT09IGIuaW5pdFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDF9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXR0cmlidXRlSG9vaztcblxuZnVuY3Rpb24gQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEF0dHJpYnV0ZUhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgcHJldikge1xuICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIHByZXYudmFsdWUgPT09IHRoaXMudmFsdWUgJiZcbiAgICAgICAgcHJldi5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBwcm9wLCB0aGlzLnZhbHVlKTtcbn07XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgJiYgbmV4dC50eXBlID09PSAnQXR0cmlidXRlSG9vaycgJiZcbiAgICAgICAgbmV4dC5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29sb25Qb3NpdGlvbiA9IHByb3AuaW5kZXhPZignOicpO1xuICAgIHZhciBsb2NhbE5hbWUgPSBjb2xvblBvc2l0aW9uID4gLTEgPyBwcm9wLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSkgOiBwcm9wO1xuICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlTlModGhpcy5uYW1lc3BhY2UsIGxvY2FsTmFtZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS50eXBlID0gJ0F0dHJpYnV0ZUhvb2snO1xuXG59LHt9XSwzMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdlN0b3JlID0gcmVxdWlyZSgnZXYtc3RvcmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdkhvb2s7XG5cbmZ1bmN0aW9uIEV2SG9vayh2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFdkhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXZIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkV2SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB0aGlzLnZhbHVlO1xufTtcblxuRXZIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbihub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB1bmRlZmluZWQ7XG59O1xuXG59LHtcImV2LXN0b3JlXCI6NH1dLDMxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBTb2Z0U2V0SG9vaztcblxuZnVuY3Rpb24gU29mdFNldEhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuU29mdFNldEhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgaWYgKG5vZGVbcHJvcGVydHlOYW1lXSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlW3Byb3BlcnR5TmFtZV0gPSB0aGlzLnZhbHVlO1xuICAgIH1cbn07XG5cbn0se31dLDMyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBWTm9kZSA9IHJlcXVpcmUoJy4uL3Zub2RlL3Zub2RlLmpzJyk7XG52YXIgVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS92dGV4dC5qcycpO1xudmFyIGlzVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12bm9kZScpO1xudmFyIGlzVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12dGV4dCcpO1xudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtd2lkZ2V0Jyk7XG52YXIgaXNIb29rID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdmhvb2snKTtcbnZhciBpc1ZUaHVuayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXRodW5rJyk7XG5cbnZhciBwYXJzZVRhZyA9IHJlcXVpcmUoJy4vcGFyc2UtdGFnLmpzJyk7XG52YXIgc29mdFNldEhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL3NvZnQtc2V0LWhvb2suanMnKTtcbnZhciBldkhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL2V2LWhvb2suanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBoO1xuXG5mdW5jdGlvbiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBbXTtcbiAgICB2YXIgdGFnLCBwcm9wcywga2V5LCBuYW1lc3BhY2U7XG5cbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BzID0gcHJvcHMgfHwgcHJvcGVydGllcyB8fCB7fTtcbiAgICB0YWcgPSBwYXJzZVRhZyh0YWdOYW1lLCBwcm9wcyk7XG5cbiAgICAvLyBzdXBwb3J0IGtleXNcbiAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgICAgIGtleSA9IHByb3BzLmtleTtcbiAgICAgICAgcHJvcHMua2V5ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnQgbmFtZXNwYWNlXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCduYW1lc3BhY2UnKSkge1xuICAgICAgICBuYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgICAgIHByb3BzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBmaXggY3Vyc29yIGJ1Z1xuICAgIGlmICh0YWcgPT09ICdJTlBVVCcgJiZcbiAgICAgICAgIW5hbWVzcGFjZSAmJlxuICAgICAgICBwcm9wcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJlxuICAgICAgICBwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFpc0hvb2socHJvcHMudmFsdWUpXG4gICAgKSB7XG4gICAgICAgIHByb3BzLnZhbHVlID0gc29mdFNldEhvb2socHJvcHMudmFsdWUpO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybVByb3BlcnRpZXMocHJvcHMpO1xuXG4gICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgY2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgICAgYWRkQ2hpbGQoY2hpbGRyZW4sIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpO1xuICAgIH1cblxuXG4gICAgcmV0dXJuIG5ldyBWTm9kZSh0YWcsIHByb3BzLCBjaGlsZE5vZGVzLCBrZXksIG5hbWVzcGFjZSk7XG59XG5cbmZ1bmN0aW9uIGFkZENoaWxkKGMsIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpIHtcbiAgICBpZiAodHlwZW9mIGMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoYykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoU3RyaW5nKGMpKSk7XG4gICAgfSBlbHNlIGlmIChpc0NoaWxkKGMpKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChjKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoYykpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhZGRDaGlsZChjW2ldLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYyA9PT0gbnVsbCB8fCBjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IFVuZXhwZWN0ZWRWaXJ0dWFsRWxlbWVudCh7XG4gICAgICAgICAgICBmb3JlaWduT2JqZWN0OiBjLFxuICAgICAgICAgICAgcGFyZW50Vm5vZGU6IHtcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiB0YWcsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoaXNIb29rKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocHJvcE5hbWUuc3Vic3RyKDAsIDMpID09PSAnZXYtJykge1xuICAgICAgICAgICAgICAgIC8vIGFkZCBldi1mb28gc3VwcG9ydFxuICAgICAgICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGV2SG9vayh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGQoeCkge1xuICAgIHJldHVybiBpc1ZOb2RlKHgpIHx8IGlzVlRleHQoeCkgfHwgaXNXaWRnZXQoeCkgfHwgaXNWVGh1bmsoeCk7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KSB8fCBpc0NoaWxkKHgpO1xufVxuXG5mdW5jdGlvbiBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoZGF0YSkge1xuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTtcblxuICAgIGVyci50eXBlID0gJ3ZpcnR1YWwtaHlwZXJzY3JpcHQudW5leHBlY3RlZC52aXJ0dWFsLWVsZW1lbnQnO1xuICAgIGVyci5tZXNzYWdlID0gJ1VuZXhwZWN0ZWQgdmlydHVhbCBjaGlsZCBwYXNzZWQgdG8gaCgpLlxcbicgK1xuICAgICAgICAnRXhwZWN0ZWQgYSBWTm9kZSAvIFZ0aHVuayAvIFZXaWRnZXQgLyBzdHJpbmcgYnV0OlxcbicgK1xuICAgICAgICAnZ290OlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLmZvcmVpZ25PYmplY3QpICtcbiAgICAgICAgJy5cXG4nICtcbiAgICAgICAgJ1RoZSBwYXJlbnQgdm5vZGUgaXM6XFxuJyArXG4gICAgICAgIGVycm9yU3RyaW5nKGRhdGEucGFyZW50Vm5vZGUpXG4gICAgICAgICdcXG4nICtcbiAgICAgICAgJ1N1Z2dlc3RlZCBmaXg6IGNoYW5nZSB5b3VyIGBoKC4uLiwgWyAuLi4gXSlgIGNhbGxzaXRlLic7XG4gICAgZXJyLmZvcmVpZ25PYmplY3QgPSBkYXRhLmZvcmVpZ25PYmplY3Q7XG4gICAgZXJyLnBhcmVudFZub2RlID0gZGF0YS5wYXJlbnRWbm9kZTtcblxuICAgIHJldHVybiBlcnI7XG59XG5cbmZ1bmN0aW9uIGVycm9yU3RyaW5nKG9iaikge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsICcgICAgJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG9iaik7XG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiLi4vdm5vZGUvaXMtdm5vZGVcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0XCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXRcIjo0MSxcIi4uL3Zub2RlL3Zub2RlLmpzXCI6NDMsXCIuLi92bm9kZS92dGV4dC5qc1wiOjQ1LFwiLi9ob29rcy9ldi1ob29rLmpzXCI6MzAsXCIuL2hvb2tzL3NvZnQtc2V0LWhvb2suanNcIjozMSxcIi4vcGFyc2UtdGFnLmpzXCI6MzMsXCJ4LWlzLWFycmF5XCI6MjF9XSwzMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBzcGxpdCA9IHJlcXVpcmUoJ2Jyb3dzZXItc3BsaXQnKTtcblxudmFyIGNsYXNzSWRTcGxpdCA9IC8oW1xcLiNdP1thLXpBLVowLTlcXHUwMDdGLVxcdUZGRkZfOi1dKykvO1xudmFyIG5vdENsYXNzSWQgPSAvXlxcLnwjLztcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVRhZztcblxuZnVuY3Rpb24gcGFyc2VUYWcodGFnLCBwcm9wcykge1xuICAgIGlmICghdGFnKSB7XG4gICAgICAgIHJldHVybiAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgbm9JZCA9ICEocHJvcHMuaGFzT3duUHJvcGVydHkoJ2lkJykpO1xuXG4gICAgdmFyIHRhZ1BhcnRzID0gc3BsaXQodGFnLCBjbGFzc0lkU3BsaXQpO1xuICAgIHZhciB0YWdOYW1lID0gbnVsbDtcblxuICAgIGlmIChub3RDbGFzc0lkLnRlc3QodGFnUGFydHNbMV0pKSB7XG4gICAgICAgIHRhZ05hbWUgPSAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NlcywgcGFydCwgdHlwZSwgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCB0YWdQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJ0ID0gdGFnUGFydHNbaV07XG5cbiAgICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUgPSBwYXJ0LmNoYXJBdCgwKTtcblxuICAgICAgICBpZiAoIXRhZ05hbWUpIHtcbiAgICAgICAgICAgIHRhZ05hbWUgPSBwYXJ0O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcuJykge1xuICAgICAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMgfHwgW107XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnIycgJiYgbm9JZCkge1xuICAgICAgICAgICAgcHJvcHMuaWQgPSBwYXJ0LnN1YnN0cmluZygxLCBwYXJ0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xhc3Nlcykge1xuICAgICAgICBpZiAocHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocHJvcHMuY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3BzLmNsYXNzTmFtZSA9IGNsYXNzZXMuam9pbignICcpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5uYW1lc3BhY2UgPyB0YWdOYW1lIDogdGFnTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG59LHtcImJyb3dzZXItc3BsaXRcIjozfV0sMzQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgREVGQVVMVF9OQU1FU1BBQ0UgPSBudWxsO1xudmFyIEVWX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMnO1xudmFyIFhMSU5LX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcbnZhciBYTUxfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSc7XG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWR1RpbnkxMi9hdHRyaWJ1dGVUYWJsZS5odG1sXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvYXR0aW5kZXguaHRtbFxudmFyIFNWR19QUk9QRVJUSUVTID0ge1xuICAgICdhYm91dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2NlbnQtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FjY3VtdWxhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWRkaXRpdmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWxpZ25tZW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYW1wbGl0dWRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FyYWJpYy1mb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVOYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F0dHJpYnV0ZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXppbXV0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYW5kd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZUZyZXF1ZW5jeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlUHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlbGluZS1zaGlmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JpYXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FsY01vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FwLWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGFzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAtcGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcFBhdGhVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1wcm9maWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTY3JpcHRUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTdHlsZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3Vyc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGF0YXR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVmYXVsdEFjdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkZXNjZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RpZmZ1c2VDb25zdGFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXJlY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlzcGxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXZpc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RvbWluYW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R1cic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGdlTW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGl0YWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbGV2YXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5hYmxlLWJhY2tncm91bmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V2OmV2ZW50JzogRVZfTkFNRVNQQUNFLFxuICAgICdldmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtcnVsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyUmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNIaWdobGlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNhYmxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtZmFtaWx5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUtYWRqdXN0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc3RyZXRjaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0eWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtdmFyaWFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXdlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb3JtYXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnJvbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1uYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGhSZWYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRUcmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5kbGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LWFkdi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkZW9ncmFwaGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ltYWdlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbjInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW5pdGlhbFZpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW50ZXJjZXB0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2snOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmVsTWF0cml4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbFVuaXRMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlQb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5U3BsaW5lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlUaW1lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsYW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xlbmd0aEFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZXR0ZXItc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaWdodGluZy1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaW1pdGluZ0NvbmVBbmdsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsb2NhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1taWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLXN0YXJ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlckhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJXaWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tDb250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFza1VuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDaGFyYWN0ZXJFbmNvZGluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYUNvbnRlbnRFbmNvZGluZ3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFTaXplJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhVGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWluJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1uZXh0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1wcmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ251bU9jdGF2ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2JzZXJ2ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3BlcmF0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JkZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVyZmxvdyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYW5vc2UtMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdGhMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVybkNvbnRlbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Vbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwaGFzZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwbGF5YmFja09yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50ZXItZXZlbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0Wic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFscGhhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJpbWl0aXZlVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJvcGFnYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BlcnR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmFkaXVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVmWSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVuZGVyaW5nLWludGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXRDb3VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXREdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRFeHRlbnNpb25zJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRmVhdHVyZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb250cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZvcm1hdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzb3VyY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXN1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncm90YXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NlZWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2hhcGUtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Nsb3BlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NuYXBzaG90VGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BlY3VsYXJFeHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcHJlYWRNZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RhcnRPZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RkRGV2aWF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW1oJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW12JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0aXRjaFRpbGVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3AtY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RvcC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaWtldGhyb3VnaC10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaGFycmF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1kYXNob2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lY2FwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lam9pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbWl0ZXJsaW1pdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3VyZmFjZVNjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNCZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3JEZWZhdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNNYXN0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jVG9sZXJhbmNlRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeXN0ZW1MYW5ndWFnZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YWJsZVZhbHVlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtYW5jaG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtZGVjb3JhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpbWVsaW5lQmVnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGl0bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndG8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybUJlaGF2aW9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHlwZW9mJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuZGVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZS1iaWRpJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtcmFuZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pdHMtcGVyLWVtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtYWxwaGFiZXRpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWhhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1pZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LW1hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2YWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVyc2lvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LWFkdi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3Qm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZpZXdUYXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlzaWJpbGl0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd29yZC1zcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dyaXRpbmctbW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6YXJjcm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6aHJlZic6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6cm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6c2hvdyc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6dGl0bGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnR5cGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3htbDpiYXNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmlkJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmxhbmcnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6c3BhY2UnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3lDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd6b29tQW5kUGFuJzogREVGQVVMVF9OQU1FU1BBQ0Vcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU1ZHQXR0cmlidXRlTmFtZXNwYWNlO1xuXG5mdW5jdGlvbiBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UodmFsdWUpIHtcbiAgaWYgKFNWR19QUk9QRVJUSUVTLmhhc093blByb3BlcnR5KHZhbHVlKSkge1xuICAgIHJldHVybiBTVkdfUFJPUEVSVElFU1t2YWx1ZV07XG4gIH1cbn1cblxufSx7fV0sMzU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ3gtaXMtYXJyYXknKTtcblxudmFyIGggPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cblxudmFyIFNWR0F0dHJpYnV0ZU5hbWVzcGFjZSA9IHJlcXVpcmUoJy4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2UnKTtcbnZhciBhdHRyaWJ1dGVIb29rID0gcmVxdWlyZSgnLi9ob29rcy9hdHRyaWJ1dGUtaG9vaycpO1xuXG52YXIgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbm1vZHVsZS5leHBvcnRzID0gc3ZnO1xuXG5mdW5jdGlvbiBzdmcodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pIHtcbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwge307XG5cbiAgICAvLyBzZXQgbmFtZXNwYWNlIGZvciBzdmdcbiAgICBwcm9wZXJ0aWVzLm5hbWVzcGFjZSA9IFNWR19OQU1FU1BBQ0U7XG5cbiAgICB2YXIgYXR0cmlidXRlcyA9IHByb3BlcnRpZXMuYXR0cmlidXRlcyB8fCAocHJvcGVydGllcy5hdHRyaWJ1dGVzID0ge30pO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5hbWVzcGFjZSA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZShrZXkpO1xuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCkgeyAvLyBub3QgYSBzdmcgYXR0cmlidXRlXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnRpZXNba2V5XTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgIT09IG51bGwpIHsgLy8gbmFtZXNwYWNlZCBhdHRyaWJ1dGVcbiAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IGF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlXG4gICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fCBpc0FycmF5KHgpO1xufVxuXG59LHtcIi4vaG9va3MvYXR0cmlidXRlLWhvb2tcIjoyOSxcIi4vaW5kZXguanNcIjozMixcIi4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2VcIjozNCxcIngtaXMtYXJyYXlcIjoyMX1dLDM2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4vaXMtdm5vZGVcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4vaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi9pcy10aHVua1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhbmRsZVRodW5rXG5cbmZ1bmN0aW9uIGhhbmRsZVRodW5rKGEsIGIpIHtcbiAgICB2YXIgcmVuZGVyZWRBID0gYVxuICAgIHZhciByZW5kZXJlZEIgPSBiXG5cbiAgICBpZiAoaXNUaHVuayhiKSkge1xuICAgICAgICByZW5kZXJlZEIgPSByZW5kZXJUaHVuayhiLCBhKVxuICAgIH1cblxuICAgIGlmIChpc1RodW5rKGEpKSB7XG4gICAgICAgIHJlbmRlcmVkQSA9IHJlbmRlclRodW5rKGEsIG51bGwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYTogcmVuZGVyZWRBLFxuICAgICAgICBiOiByZW5kZXJlZEJcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlclRodW5rKHRodW5rLCBwcmV2aW91cykge1xuICAgIHZhciByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGVcblxuICAgIGlmICghcmVuZGVyZWRUaHVuaykge1xuICAgICAgICByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGUgPSB0aHVuay5yZW5kZXIocHJldmlvdXMpXG4gICAgfVxuXG4gICAgaWYgKCEoaXNWTm9kZShyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNWVGV4dChyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNXaWRnZXQocmVuZGVyZWRUaHVuaykpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInRodW5rIGRpZCBub3QgcmV0dXJuIGEgdmFsaWQgbm9kZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRUaHVua1xufVxuXG59LHtcIi4vaXMtdGh1bmtcIjozNyxcIi4vaXMtdm5vZGVcIjozOSxcIi4vaXMtdnRleHRcIjo0MCxcIi4vaXMtd2lkZ2V0XCI6NDF9XSwzNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzVGh1bmtcclxuXHJcbmZ1bmN0aW9uIGlzVGh1bmsodCkge1xyXG4gICAgcmV0dXJuIHQgJiYgdC50eXBlID09PSBcIlRodW5rXCJcclxufVxyXG5cbn0se31dLDM4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNIb29rXG5cbmZ1bmN0aW9uIGlzSG9vayhob29rKSB7XG4gICAgcmV0dXJuIGhvb2sgJiZcbiAgICAgICh0eXBlb2YgaG9vay5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJob29rXCIpIHx8XG4gICAgICAgdHlwZW9mIGhvb2sudW5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJ1bmhvb2tcIikpXG59XG5cbn0se31dLDM5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVmlydHVhbE5vZGVcblxuZnVuY3Rpb24gaXNWaXJ0dWFsTm9kZSh4KSB7XG4gICAgcmV0dXJuIHggJiYgeC50eXBlID09PSBcIlZpcnR1YWxOb2RlXCIgJiYgeC52ZXJzaW9uID09PSB2ZXJzaW9uXG59XG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIGlzVmlydHVhbFRleHQoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsVGV4dFwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1dpZGdldFxuXG5mdW5jdGlvbiBpc1dpZGdldCh3KSB7XG4gICAgcmV0dXJuIHcgJiYgdy50eXBlID09PSBcIldpZGdldFwiXG59XG5cbn0se31dLDQyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gXCIyXCJcblxufSx7fV0sNDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcbnZhciBpc1ZIb29rID0gcmVxdWlyZShcIi4vaXMtdmhvb2tcIilcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsTm9kZVxuXG52YXIgbm9Qcm9wZXJ0aWVzID0ge31cbnZhciBub0NoaWxkcmVuID0gW11cblxuZnVuY3Rpb24gVmlydHVhbE5vZGUodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4sIGtleSwgbmFtZXNwYWNlKSB7XG4gICAgdGhpcy50YWdOYW1lID0gdGFnTmFtZVxuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwgbm9Qcm9wZXJ0aWVzXG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IG5vQ2hpbGRyZW5cbiAgICB0aGlzLmtleSA9IGtleSAhPSBudWxsID8gU3RyaW5nKGtleSkgOiB1bmRlZmluZWRcbiAgICB0aGlzLm5hbWVzcGFjZSA9ICh0eXBlb2YgbmFtZXNwYWNlID09PSBcInN0cmluZ1wiKSA/IG5hbWVzcGFjZSA6IG51bGxcblxuICAgIHZhciBjb3VudCA9IChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpIHx8IDBcbiAgICB2YXIgZGVzY2VuZGFudHMgPSAwXG4gICAgdmFyIGhhc1dpZGdldHMgPSBmYWxzZVxuICAgIHZhciBoYXNUaHVua3MgPSBmYWxzZVxuICAgIHZhciBkZXNjZW5kYW50SG9va3MgPSBmYWxzZVxuICAgIHZhciBob29rc1xuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcGVydGllcykge1xuICAgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbcHJvcE5hbWVdXG4gICAgICAgICAgICBpZiAoaXNWSG9vayhwcm9wZXJ0eSkgJiYgcHJvcGVydHkudW5ob29rKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFob29rcykge1xuICAgICAgICAgICAgICAgICAgICBob29rcyA9IHt9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaG9va3NbcHJvcE5hbWVdID0gcHJvcGVydHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkpIHtcbiAgICAgICAgICAgIGRlc2NlbmRhbnRzICs9IGNoaWxkLmNvdW50IHx8IDBcblxuICAgICAgICAgICAgaWYgKCFoYXNXaWRnZXRzICYmIGNoaWxkLmhhc1dpZGdldHMpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhhc1RodW5rcyAmJiBjaGlsZC5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZGVzY2VuZGFudEhvb2tzICYmIChjaGlsZC5ob29rcyB8fCBjaGlsZC5kZXNjZW5kYW50SG9va3MpKSB7XG4gICAgICAgICAgICAgICAgZGVzY2VuZGFudEhvb2tzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNXaWRnZXRzICYmIGlzV2lkZ2V0KGNoaWxkKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZC5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNUaHVua3MgJiYgaXNUaHVuayhjaGlsZCkpIHtcbiAgICAgICAgICAgIGhhc1RodW5rcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50ID0gY291bnQgKyBkZXNjZW5kYW50c1xuICAgIHRoaXMuaGFzV2lkZ2V0cyA9IGhhc1dpZGdldHNcbiAgICB0aGlzLmhhc1RodW5rcyA9IGhhc1RodW5rc1xuICAgIHRoaXMuaG9va3MgPSBob29rc1xuICAgIHRoaXMuZGVzY2VuZGFudEhvb2tzID0gZGVzY2VuZGFudEhvb2tzXG59XG5cblZpcnR1YWxOb2RlLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbE5vZGUucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxOb2RlXCJcblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZob29rXCI6MzgsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXdpZGdldFwiOjQxLFwiLi92ZXJzaW9uXCI6NDJ9XSw0NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxuVmlydHVhbFBhdGNoLk5PTkUgPSAwXG5WaXJ0dWFsUGF0Y2guVlRFWFQgPSAxXG5WaXJ0dWFsUGF0Y2guVk5PREUgPSAyXG5WaXJ0dWFsUGF0Y2guV0lER0VUID0gM1xuVmlydHVhbFBhdGNoLlBST1BTID0gNFxuVmlydHVhbFBhdGNoLk9SREVSID0gNVxuVmlydHVhbFBhdGNoLklOU0VSVCA9IDZcblZpcnR1YWxQYXRjaC5SRU1PVkUgPSA3XG5WaXJ0dWFsUGF0Y2guVEhVTksgPSA4XG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFBhdGNoXG5cbmZ1bmN0aW9uIFZpcnR1YWxQYXRjaCh0eXBlLCB2Tm9kZSwgcGF0Y2gpIHtcbiAgICB0aGlzLnR5cGUgPSBOdW1iZXIodHlwZSlcbiAgICB0aGlzLnZOb2RlID0gdk5vZGVcbiAgICB0aGlzLnBhdGNoID0gcGF0Y2hcbn1cblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsUGF0Y2hcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFRleHRcblxuZnVuY3Rpb24gVmlydHVhbFRleHQodGV4dCkge1xuICAgIHRoaXMudGV4dCA9IFN0cmluZyh0ZXh0KVxufVxuXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxUZXh0LnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsVGV4dFwiXG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlByb3BzXG5cbmZ1bmN0aW9uIGRpZmZQcm9wcyhhLCBiKSB7XG4gICAgdmFyIGRpZmZcblxuICAgIGZvciAodmFyIGFLZXkgaW4gYSkge1xuICAgICAgICBpZiAoIShhS2V5IGluIGIpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFWYWx1ZSA9IGFbYUtleV1cbiAgICAgICAgdmFyIGJWYWx1ZSA9IGJbYUtleV1cblxuICAgICAgICBpZiAoYVZhbHVlID09PSBiVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYVZhbHVlKSAmJiBpc09iamVjdChiVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoZ2V0UHJvdG90eXBlKGJWYWx1ZSkgIT09IGdldFByb3RvdHlwZShhVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSG9vayhiVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIG9iamVjdERpZmYgPSBkaWZmUHJvcHMoYVZhbHVlLCBiVmFsdWUpXG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdERpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IG9iamVjdERpZmZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYktleSBpbiBiKSB7XG4gICAgICAgIGlmICghKGJLZXkgaW4gYSkpIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2JLZXldID0gYltiS2V5XVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDQ3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2hcIilcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12dGV4dFwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdGh1bmtcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIilcblxudmFyIGRpZmZQcm9wcyA9IHJlcXVpcmUoXCIuL2RpZmYtcHJvcHNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmXG5cbmZ1bmN0aW9uIGRpZmYoYSwgYikge1xuICAgIHZhciBwYXRjaCA9IHsgYTogYSB9XG4gICAgd2FsayhhLCBiLCBwYXRjaCwgMClcbiAgICByZXR1cm4gcGF0Y2hcbn1cblxuZnVuY3Rpb24gd2FsayhhLCBiLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICB2YXIgYXBwbHlDbGVhciA9IGZhbHNlXG5cbiAgICBpZiAoaXNUaHVuayhhKSB8fCBpc1RodW5rKGIpKSB7XG4gICAgICAgIHRodW5rcyhhLCBiLCBwYXRjaCwgaW5kZXgpXG4gICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcblxuICAgICAgICAvLyBJZiBhIGlzIGEgd2lkZ2V0IHdlIHdpbGwgYWRkIGEgcmVtb3ZlIHBhdGNoIGZvciBpdFxuICAgICAgICAvLyBPdGhlcndpc2UgYW55IGNoaWxkIHdpZGdldHMvaG9va3MgbXVzdCBiZSBkZXN0cm95ZWQuXG4gICAgICAgIC8vIFRoaXMgcHJldmVudHMgYWRkaW5nIHR3byByZW1vdmUgcGF0Y2hlcyBmb3IgYSB3aWRnZXQuXG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICAgICAgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgYSwgYikpXG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKGIpKSB7XG4gICAgICAgIGlmIChpc1ZOb2RlKGEpKSB7XG4gICAgICAgICAgICBpZiAoYS50YWdOYW1lID09PSBiLnRhZ05hbWUgJiZcbiAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSA9PT0gYi5uYW1lc3BhY2UgJiZcbiAgICAgICAgICAgICAgICBhLmtleSA9PT0gYi5rZXkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHNQYXRjaCA9IGRpZmZQcm9wcyhhLnByb3BlcnRpZXMsIGIucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNQYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guUFJPUFMsIGEsIHByb3BzUGF0Y2gpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcHBseSA9IGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZOT0RFLCBhLCBiKSlcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVlRleHQoYikpIHtcbiAgICAgICAgaWYgKCFpc1ZUZXh0KGEpKSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9IGVsc2UgaWYgKGEudGV4dCAhPT0gYi50ZXh0KSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5XSURHRVQsIGEsIGIpKVxuICAgIH1cblxuICAgIGlmIChhcHBseSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBseVxuICAgIH1cblxuICAgIGlmIChhcHBseUNsZWFyKSB7XG4gICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZGlmZkNoaWxkcmVuKGEsIGIsIHBhdGNoLCBhcHBseSwgaW5kZXgpIHtcbiAgICB2YXIgYUNoaWxkcmVuID0gYS5jaGlsZHJlblxuICAgIHZhciBvcmRlcmVkU2V0ID0gcmVvcmRlcihhQ2hpbGRyZW4sIGIuY2hpbGRyZW4pXG4gICAgdmFyIGJDaGlsZHJlbiA9IG9yZGVyZWRTZXQuY2hpbGRyZW5cblxuICAgIHZhciBhTGVuID0gYUNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBiTGVuID0gYkNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBsZW4gPSBhTGVuID4gYkxlbiA/IGFMZW4gOiBiTGVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBsZWZ0Tm9kZSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgcmlnaHROb2RlID0gYkNoaWxkcmVuW2ldXG4gICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICBpZiAoIWxlZnROb2RlKSB7XG4gICAgICAgICAgICBpZiAocmlnaHROb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXhjZXNzIG5vZGVzIGluIGIgbmVlZCB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksXG4gICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLklOU0VSVCwgbnVsbCwgcmlnaHROb2RlKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdhbGsobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVk5vZGUobGVmdE5vZGUpICYmIGxlZnROb2RlLmNvdW50KSB7XG4gICAgICAgICAgICBpbmRleCArPSBsZWZ0Tm9kZS5jb3VudFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyZWRTZXQubW92ZXMpIHtcbiAgICAgICAgLy8gUmVvcmRlciBub2RlcyBsYXN0XG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICBWUGF0Y2guT1JERVIsXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgb3JkZXJlZFNldC5tb3Zlc1xuICAgICAgICApKVxuICAgIH1cblxuICAgIHJldHVybiBhcHBseVxufVxuXG5mdW5jdGlvbiBjbGVhclN0YXRlKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYSBzaW5nbGUgd2Fsaywgbm90IHR3b1xuICAgIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgIGRlc3Ryb3lXaWRnZXRzKHZOb2RlLCBwYXRjaCwgaW5kZXgpXG59XG5cbi8vIFBhdGNoIHJlY29yZHMgZm9yIGFsbCBkZXN0cm95ZWQgd2lkZ2V0cyBtdXN0IGJlIGFkZGVkIGJlY2F1c2Ugd2UgbmVlZFxuLy8gYSBET00gbm9kZSByZWZlcmVuY2UgZm9yIHRoZSBkZXN0cm95IGZ1bmN0aW9uXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzV2lkZ2V0KHZOb2RlKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZOb2RlLmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgdk5vZGUsIG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVk5vZGUodk5vZGUpICYmICh2Tm9kZS5oYXNXaWRnZXRzIHx8IHZOb2RlLmhhc1RodW5rcykpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgICAgICBkZXN0cm95V2lkZ2V0cyhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkgJiYgY2hpbGQuY291bnQpIHtcbiAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbi8vIENyZWF0ZSBhIHN1Yi1wYXRjaCBmb3IgdGh1bmtzXG5mdW5jdGlvbiB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgdmFyIG5vZGVzID0gaGFuZGxlVGh1bmsoYSwgYilcbiAgICB2YXIgdGh1bmtQYXRjaCA9IGRpZmYobm9kZXMuYSwgbm9kZXMuYilcbiAgICBpZiAoaGFzUGF0Y2hlcyh0aHVua1BhdGNoKSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBuZXcgVlBhdGNoKFZQYXRjaC5USFVOSywgbnVsbCwgdGh1bmtQYXRjaClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhdGNoZXMocGF0Y2gpIHtcbiAgICBmb3IgKHZhciBpbmRleCBpbiBwYXRjaCkge1xuICAgICAgICBpZiAoaW5kZXggIT09IFwiYVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIEV4ZWN1dGUgaG9va3Mgd2hlbiB0d28gbm9kZXMgYXJlIGlkZW50aWNhbFxuZnVuY3Rpb24gdW5ob29rKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoaXNWTm9kZSh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHZOb2RlLmhvb2tzKSB7XG4gICAgICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBlbmRQYXRjaChcbiAgICAgICAgICAgICAgICBwYXRjaFtpbmRleF0sXG4gICAgICAgICAgICAgICAgbmV3IFZQYXRjaChcbiAgICAgICAgICAgICAgICAgICAgVlBhdGNoLlBST1BTLFxuICAgICAgICAgICAgICAgICAgICB2Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkS2V5cyh2Tm9kZS5ob29rcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodk5vZGUuZGVzY2VuZGFudEhvb2tzIHx8IHZOb2RlLmhhc1RodW5rcykge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHVuaG9vayhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IGNoaWxkLmNvdW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZEtleXMob2JqKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBMaXN0IGRpZmYsIG5haXZlIGxlZnQgdG8gcmlnaHQgcmVvcmRlcmluZ1xuZnVuY3Rpb24gcmVvcmRlcihhQ2hpbGRyZW4sIGJDaGlsZHJlbikge1xuICAgIC8vIE8oTSkgdGltZSwgTyhNKSBtZW1vcnlcbiAgICB2YXIgYkNoaWxkSW5kZXggPSBrZXlJbmRleChiQ2hpbGRyZW4pXG4gICAgdmFyIGJLZXlzID0gYkNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBiRnJlZSA9IGJDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChiRnJlZS5sZW5ndGggPT09IGJDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhOKSB0aW1lLCBPKE4pIG1lbW9yeVxuICAgIHZhciBhQ2hpbGRJbmRleCA9IGtleUluZGV4KGFDaGlsZHJlbilcbiAgICB2YXIgYUtleXMgPSBhQ2hpbGRJbmRleC5rZXlzXG4gICAgdmFyIGFGcmVlID0gYUNoaWxkSW5kZXguZnJlZVxuXG4gICAgaWYgKGFGcmVlLmxlbmd0aCA9PT0gYUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IGJDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPKE1BWChOLCBNKSkgbWVtb3J5XG4gICAgdmFyIG5ld0NoaWxkcmVuID0gW11cblxuICAgIHZhciBmcmVlSW5kZXggPSAwXG4gICAgdmFyIGZyZWVDb3VudCA9IGJGcmVlLmxlbmd0aFxuICAgIHZhciBkZWxldGVkSXRlbXMgPSAwXG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggYSBhbmQgbWF0Y2ggYSBub2RlIGluIGJcbiAgICAvLyBPKE4pIHRpbWUsXG4gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgYUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhSXRlbSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgaXRlbUluZGV4XG5cbiAgICAgICAgaWYgKGFJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKGJLZXlzLmhhc093blByb3BlcnR5KGFJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBNYXRjaCB1cCB0aGUgb2xkIGtleXNcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBiS2V5c1thSXRlbS5rZXldXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIGtleWVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTWF0Y2ggdGhlIGl0ZW0gaW4gYSB3aXRoIHRoZSBuZXh0IGZyZWUgaXRlbSBpbiBiXG4gICAgICAgICAgICBpZiAoZnJlZUluZGV4IDwgZnJlZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYkZyZWVbZnJlZUluZGV4KytdXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGZyZWUgaXRlbXMgaW4gYiB0byBtYXRjaCB3aXRoXG4gICAgICAgICAgICAgICAgLy8gdGhlIGZyZWUgaXRlbXMgaW4gYSwgc28gdGhlIGV4dHJhIGZyZWUgbm9kZXNcbiAgICAgICAgICAgICAgICAvLyBhcmUgZGVsZXRlZC5cbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBpIC0gZGVsZXRlZEl0ZW1zKytcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFzdEZyZWVJbmRleCA9IGZyZWVJbmRleCA+PSBiRnJlZS5sZW5ndGggP1xuICAgICAgICBiQ2hpbGRyZW4ubGVuZ3RoIDpcbiAgICAgICAgYkZyZWVbZnJlZUluZGV4XVxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGIgYW5kIGFwcGVuZCBhbnkgbmV3IGtleXNcbiAgICAvLyBPKE0pIHRpbWVcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbmV3SXRlbSA9IGJDaGlsZHJlbltqXVxuXG4gICAgICAgIGlmIChuZXdJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKCFhS2V5cy5oYXNPd25Qcm9wZXJ0eShuZXdJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgYW55IG5ldyBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhZGRpbmcgbmV3IGl0ZW1zIHRvIHRoZSBlbmQgYW5kIHRoZW4gc29ydGluZyB0aGVtXG4gICAgICAgICAgICAgICAgLy8gaW4gcGxhY2UuIEluIGZ1dHVyZSB3ZSBzaG91bGQgaW5zZXJ0IG5ldyBpdGVtcyBpbiBwbGFjZS5cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0l0ZW0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaiA+PSBsYXN0RnJlZUluZGV4KSB7XG4gICAgICAgICAgICAvLyBBZGQgYW55IGxlZnRvdmVyIG5vbi1rZXllZCBpdGVtc1xuICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNpbXVsYXRlID0gbmV3Q2hpbGRyZW4uc2xpY2UoKVxuICAgIHZhciBzaW11bGF0ZUluZGV4ID0gMFxuICAgIHZhciByZW1vdmVzID0gW11cbiAgICB2YXIgaW5zZXJ0cyA9IFtdXG4gICAgdmFyIHNpbXVsYXRlSXRlbVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBiQ2hpbGRyZW4ubGVuZ3RoOykge1xuICAgICAgICB2YXIgd2FudGVkSXRlbSA9IGJDaGlsZHJlbltrXVxuICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtc1xuICAgICAgICB3aGlsZSAoc2ltdWxhdGVJdGVtID09PSBudWxsICYmIHNpbXVsYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgbnVsbCkpXG4gICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIG5lZWQgYSBrZXkgaW4gdGhpcyBwb3NpdGlvbi4uLlxuICAgICAgICAgICAgaWYgKHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFuIGluc2VydCBkb2Vzbid0IHB1dCB0aGlzIGtleSBpbiBwbGFjZSwgaXQgbmVlZHMgdG8gbW92ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoYktleXNbc2ltdWxhdGVJdGVtLmtleV0gIT09IGsgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcmVtb3ZlIGRpZG4ndCBwdXQgdGhlIHdhbnRlZCBpdGVtIGluIHBsYWNlLCB3ZSBuZWVkIHRvIGluc2VydCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0ZW1zIGFyZSBtYXRjaGluZywgc28gc2tpcCBhaGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGVJbmRleCsrXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGsrK1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYSBrZXkgaW4gc2ltdWxhdGUgaGFzIG5vIG1hdGNoaW5nIHdhbnRlZCBrZXksIHJlbW92ZSBpdFxuICAgICAgICAgICAgZWxzZSBpZiAoc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgaysrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYWxsIHRoZSByZW1haW5pbmcgbm9kZXMgZnJvbSBzaW11bGF0ZVxuICAgIHdoaWxlKHNpbXVsYXRlSW5kZXggPCBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBvbmx5IG1vdmVzIHdlIGhhdmUgYXJlIGRlbGV0ZXMgdGhlbiB3ZSBjYW4ganVzdFxuICAgIC8vIGxldCB0aGUgZGVsZXRlIHBhdGNoIHJlbW92ZSB0aGVzZSBpdGVtcy5cbiAgICBpZiAocmVtb3Zlcy5sZW5ndGggPT09IGRlbGV0ZWRJdGVtcyAmJiAhaW5zZXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBuZXdDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgIG1vdmVzOiB7XG4gICAgICAgICAgICByZW1vdmVzOiByZW1vdmVzLFxuICAgICAgICAgICAgaW5zZXJ0czogaW5zZXJ0c1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmUoYXJyLCBpbmRleCwga2V5KSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSlcblxuICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IGluZGV4LFxuICAgICAgICBrZXk6IGtleVxuICAgIH1cbn1cblxuZnVuY3Rpb24ga2V5SW5kZXgoY2hpbGRyZW4pIHtcbiAgICB2YXIga2V5cyA9IHt9XG4gICAgdmFyIGZyZWUgPSBbXVxuICAgIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cblxuICAgICAgICBpZiAoY2hpbGQua2V5KSB7XG4gICAgICAgICAgICBrZXlzW2NoaWxkLmtleV0gPSBpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcmVlLnB1c2goaSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleXM6IGtleXMsICAgICAvLyBBIGhhc2ggb2Yga2V5IG5hbWUgdG8gaW5kZXhcbiAgICAgICAgZnJlZTogZnJlZSAgICAgIC8vIEFuIGFycmF5IG9mIHVua2V5ZWQgaXRlbSBpbmRpY2VzXG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBlbmRQYXRjaChhcHBseSwgcGF0Y2gpIHtcbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgaWYgKGlzQXJyYXkoYXBwbHkpKSB7XG4gICAgICAgICAgICBhcHBseS5wdXNoKHBhdGNoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbHkgPSBbYXBwbHksIHBhdGNoXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFwcGx5XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2hhbmRsZS10aHVua1wiOjM2LFwiLi4vdm5vZGUvaXMtdGh1bmtcIjozNyxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92cGF0Y2hcIjo0NCxcIi4vZGlmZi1wcm9wc1wiOjQ2LFwieC1pcy1hcnJheVwiOjIxfV0sNDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHZkb20gPSB7XG4gIFZOb2RlOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS92bm9kZS92bm9kZScpLFxuICBWVGV4dDogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdnRleHQnKSxcbiAgZGlmZjogcmVxdWlyZSgndmlydHVhbC1kb20vZGlmZicpLFxuICBwYXRjaDogcmVxdWlyZSgndmlydHVhbC1kb20vcGF0Y2gnKSxcbiAgY3JlYXRlRWxlbWVudDogcmVxdWlyZSgndmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnQnKSxcbiAgc3ZnOiByZXF1aXJlKFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIiksXG59O1xuXG5nbG9iYWwuVmlydHVhbERvbSA9IHZkb207XG5tb2R1bGUuZXhwb3J0cyA9IHZkb207XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCJ2aXJ0dWFsLWRvbS9jcmVhdGUtZWxlbWVudFwiOjEsXCJ2aXJ0dWFsLWRvbS9kaWZmXCI6MixcInZpcnR1YWwtZG9tL3BhdGNoXCI6MjIsXCJ2aXJ0dWFsLWRvbS92aXJ0dWFsLWh5cGVyc2NyaXB0L3N2Z1wiOjM1LFwidmlydHVhbC1kb20vdm5vZGUvdm5vZGVcIjo0MyxcInZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0XCI6NDV9XX0se30sWzQ4XSkoNDgpXG59KTtcbiIsIi8vIFVzZWQgYnkgd29ya2Fyb3VuZCBmb3IgaW5wdXQgZWxlbWVudCB2YWx1ZSBmaWVsZFxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9ob29rcy9zb2Z0LXNldC1ob29rLmpzXG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG5cbnZhciBHZW5lcmljSG9vayA9IGZ1bmN0aW9uIChpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHZW5lcmljSG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljSG9vayhpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0ID0gaW5pdDtcbiAgICB0aGlzLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmV4dHJhID0gZXh0cmE7XG59O1xuXG52YXIgaG9va19zdGF0ZV9rZXkgPSBcInZkb21faG9va19zdGF0ZV9rZXlcIjtcblxuaWYgKHRoaXMuU3ltYm9sKSB7XG4gICAgaG9va19zdGF0ZV9rZXkgPSBTeW1ib2woaG9va19zdGF0ZV9rZXkpO1xufVxuXG5HZW5lcmljSG9vay53cml0ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgc3RhdGUpIHtcbiAgICBpZiAoIW5vZGVbaG9va19zdGF0ZV9rZXldKSB7XG4gICAgICAgIG5vZGVbaG9va19zdGF0ZV9rZXldID0ge307XG4gICAgfVxuICAgIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXSA9IHN0YXRlO1xufVxuXG5HZW5lcmljSG9vay5yZWFkX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgcmV0dXJuIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2sucmVtb3ZlX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgZGVsZXRlIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbiA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgIHJldHVybiBmcm9tIGluc3RhbmNlb2YgdGhpcyAmJiB0byBpbnN0YW5jZW9mIHRoaXMgJiYgZnJvbS5pZCA9PT0gdG8uaWQgJiYgdG8udXBkYXRlO1xufTtcblxuR2VuZXJpY0hvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHByZXYpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbihwcmV2LCB0aGlzKSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBHZW5lcmljSG9vay5yZWFkX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICAgICAgc3RhdGUgPSB0aGlzLnVwZGF0ZShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLndyaXRlX3N0YXRlKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5pbml0KG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH1cbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIG5leHQpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbih0aGlzLCBuZXh0KSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nLCB0aGUgaW1wZW5kaW5nIFtob29rXSB3aWxsIGhhbmRsZSB0aGUgY2FsbCB0byB1cGRhdGUuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgfVxufTtcblxuam9vX2dsb2JhbF9vYmplY3QuR2VuZXJpY0hvb2sgPSBHZW5lcmljSG9vaztcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mZnNldFxudmFyIGNhbWxfaW50NjRfb2Zmc2V0ID0gTWF0aC5wb3coMiwgLTI0KTtcblxuLy9Qcm92aWRlczogTWxJbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIE1sSW50NjQgKGxvLG1pLGhpKSB7XG4gIHRoaXMubG8gPSBsbyAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IGhpICYgMHhmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9qXCJcbk1sSW50NjQucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvLHRoaXMubWksdGhpcy5oaSk7XG59XG5cbk1sSW50NjQucHJvdG90eXBlLnVjb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMuaGkgPCB4LmhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGhpID0gdGhpcy5oaSA8PCAxNjtcbiAgdmFyIHhoaSA9IHguaGkgPDwgMTY7XG4gIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gIGlmIChoaSA8IHhoaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbG8gPSAtIHRoaXMubG87XG4gIHZhciBtaSA9IC0gdGhpcy5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IC0gdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKyB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgKyB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgLSB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSAtIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICogeC5sbztcbiAgdmFyIG1pID0gKChsbyAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5taSAqIHgubG8gKyB0aGlzLmxvICogeC5taTtcbiAgdmFyIGhpID0gKChtaSAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5oaSAqIHgubG8gKyB0aGlzLm1pICogeC5taSArIHRoaXMubG8gKiB4LmhpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5sb3x0aGlzLm1pfHRoaXMuaGkpID09IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmhpIDw8IDE2KSA8IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvfHgubG8sIHRoaXMubWl8eC5taSwgdGhpcy5oaXx4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvXngubG8sIHRoaXMubWleeC5taSwgdGhpcy5oaV54LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X2xlZnQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNCkge1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5sbyA8PCBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5oaSA8PCBzKSB8ICh0aGlzLm1pID4+ICgyNCAtIHMpKSk7XG4gIH1cbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvIDw8IChzIC0gMjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KDAsIDAsIHRoaXMubG8gPDwgKHMgLSA0OCkpXG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodF91bnNpZ25lZCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gcykpO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiAocyAtIDI0KSksXG4gICAgICAwKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmhpID4+IChzIC0gNDgpLCAwLCAwKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKGggPDwgKDI0IC0gcykpLFxuICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYpO1xuICB2YXIgc2lnbiA9ICh0aGlzLmhpIDw8IDE2KSA+PiAzMTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMjQpID4+IDE2LFxuICAgICAgc2lnbiAmIDB4ZmZmZik7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMzIpLCBzaWduLCBzaWduKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzbDEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGkgPSAodGhpcy5oaSA8PCAxKSB8ICh0aGlzLm1pID4+IDIzKTtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5sbyA9ICh0aGlzLmxvIDw8IDEpICYgMHhmZmZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc3IxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvID0gKCh0aGlzLmxvID4+PiAxKSB8ICh0aGlzLm1pIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSB0aGlzLmhpID4+PiAxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudWRpdm1vZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBvZmZzZXQgPSAwO1xuICB2YXIgbW9kdWx1cyA9IHRoaXMuY29weSgpO1xuICB2YXIgZGl2aXNvciA9IHguY29weSgpO1xuICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLDAsMCk7XG4gIHdoaWxlIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID4gMCkge1xuICAgIG9mZnNldCsrO1xuICAgIGRpdmlzb3IubHNsMSgpO1xuICB9XG4gIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgIG9mZnNldCAtLTtcbiAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgaWYgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPj0gMCkge1xuICAgICAgcXVvdGllbnQubG8gKys7XG4gICAgICBtb2R1bHVzID0gbW9kdWx1cy5zdWIoZGl2aXNvcik7XG4gICAgfVxuICAgIGRpdmlzb3IubHNyMSgpO1xuICB9XG4gIHJldHVybiB7IHF1b3RpZW50IDogcXVvdGllbnQsIG1vZHVsdXMgOiBtb2R1bHVzIH07XG59XG5NbEludDY0LnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgcSA9IHEubmVnKCk7XG4gIHJldHVybiBxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciByID0geC51ZGl2bW9kKHkpLm1vZHVsdXM7XG4gIGlmIChzaWduICYgMHg4MDAwKSByID0gci5uZWcoKTtcbiAgcmV0dXJuIHI7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0ludCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAodGhpcy5taSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0Zsb2F0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkpICsgdGhpcy5sbztcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbdGhpcy5oaSA+PiA4LFxuICAgICAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgPj4gMTYsXG4gICAgICAgICAgKHRoaXMubWkgPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gPj4gMTYsXG4gICAgICAgICAgKHRoaXMubG8gPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gJiAweGZmXTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxvMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaGkzMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5taSA+Pj4gOCkgJiAweGZmZmYpIHwgKHRoaXMuaGkgPDwgMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VsdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bHQoeCx5KSB7IHJldHVybiB4LnVjb21wYXJlKHkpIDwgMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LHksIHRvdGFsKSB7IHJldHVybiB4LmNvbXBhcmUoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X25lZyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9uZWcgKHgpIHsgcmV0dXJuIHgubmVnKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FkZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hZGQgKHgsIHkpIHsgcmV0dXJuIHguYWRkKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViICh4LCB5KSB7IHJldHVybiB4LnN1Yih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tdWwoeCx5KSB7IHJldHVybiB4Lm11bCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfemVybyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc196ZXJvKHgpIHsgcmV0dXJuICt4LmlzWmVybygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkgeyByZXR1cm4gK3guaXNOZWcoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQgKHgsIHkpIHsgcmV0dXJuIHguYW5kKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IgKHgsIHkpIHsgcmV0dXJuIHgub3IoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yICh4LCB5KSB7IHJldHVybiB4Lnhvcih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X2xlZnQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZGl2IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2RpdiAoeCwgeSkgeyByZXR1cm4geC5kaXYoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21vZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tb2QgKHgsIHkpIHsgcmV0dXJuIHgubW9kKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9pbnQzMiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoeCAmIDB4ZmZmZmZmLCAoeCA+PiAyNCkgJiAweGZmZmZmZiwgKHggPj4gMzEpICYgMHhmZmZmKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2ludDMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2ludDMyICh4KSB7IHJldHVybiB4LnRvSW50KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2Zsb2F0ICh4KSB7IHJldHVybiB4LnRvRmxvYXQgKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoeCkge1xuICBpZiAoeCA8IDApIHggPSBNYXRoLmNlaWwoeCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICB4ICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQgKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQgKGZtdCwgeCkge1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSkge1xuICAgIGYuc2lnbiA9IC0xOyB4ID0gY2FtbF9pbnQ2NF9uZWcoeCk7XG4gIH1cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIHZhciB3YmFzZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZi5iYXNlKTtcbiAgdmFyIGN2dGJsID0gXCIwMTIzNDU2Nzg5YWJjZGVmXCI7XG4gIGRvIHtcbiAgICB2YXIgcCA9IHgudWRpdm1vZCh3YmFzZSk7XG4gICAgeCA9IHAucXVvdGllbnQ7XG4gICAgYnVmZmVyID0gY3Z0YmwuY2hhckF0KGNhbWxfaW50NjRfdG9faW50MzIocC5tb2R1bHVzKSkgKyBidWZmZXI7XG4gIH0gd2hpbGUgKCEgY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBidWZmZXIubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgYnVmZmVyID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9XG4gICAgICBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmZmLCAweGZmZmYpLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgZm9yICg7Oykge1xuICAgIGkrKztcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgICBkID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X2FkZChjYW1sX2ludDY0X211bChiYXNlNjQsIHJlcyksIGQpO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBhZGRpdGlvbiAoYmFzZSAqIHJlcykgKyBkICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHJlcywgZCkpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChiYXNlID09IDEwICYmIGNhbWxfaW50NjRfdWx0KG5ldyBNbEludDY0KDAsIDAsIDB4ODAwMCksIHJlcykpXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChzaWduIDwgMCkgcmVzID0gY2FtbF9pbnQ2NF9uZWcocmVzKTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2xvMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbG8zMih2KXsgcmV0dXJuIHYubG8zMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oaTMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hpMzIodil7IHJldHVybiB2LmhpMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoYVs3XSA8PCAwIHwgKGFbNl0gPDwgOCkgfCAoYVs1XSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzRdIDw8IDAgfCAoYVszXSA8PCA4KSB8IChhWzJdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbMV0gPDwgMCB8IChhWzBdIDw8IDgpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkgeyByZXR1cm4geC50b0FycmF5KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hhc2ggY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGFzaCh2KXtcbiAgcmV0dXJuICh2LmxvMzIoKSkgXiAodi5oaTMyKCkpXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBBbiBPQ2FtbCBzdHJpbmcgaXMgYW4gb2JqZWN0IHdpdGggdGhyZWUgZmllbGRzOlxuLy8gLSB0YWcgJ3QnXG4vLyAtIGxlbmd0aCAnbCdcbi8vIC0gY29udGVudHMgJ2MnXG4vL1xuLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgY2FuIGJlIGVpdGhlciBhIEphdmFTY3JpcHQgYXJyYXkgb3Jcbi8vIGEgSmF2YVNjcmlwdCBzdHJpbmcuIFRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgY2FuIGJlIGxlc3MgdGhhbiB0aGVcbi8vIGxlbmd0aCBvZiB0aGUgT0NhbWwgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHJlbWFpbmluZyBieXRlcyBhcmVcbi8vIGFzc3VtZWQgdG8gYmUgemVyb2VzLiBBcnJheXMgYXJlIG11dGFibGUgYnV0IGNvbnN1bWVzIG1vcmUgbWVtb3J5XG4vLyB0aGFuIHN0cmluZ3MuIEEgY29tbW9uIHBhdHRlcm4gaXMgdG8gc3RhcnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgYW5kXG4vLyBwcm9ncmVzc2l2ZWx5IGZpbGwgaXQgZnJvbSB0aGUgc3RhcnQuIFBhcnRpYWwgc3RyaW5ncyBtYWtlcyBpdFxuLy8gcG9zc2libGUgdG8gaW1wbGVtZW50IHRoaXMgZWZmaWNpZW50bHkuXG4vL1xuLy8gV2hlbiBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIFVURi0xNiwgd2Uga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZVxuLy8gc3RyaW5nIGlzIGNvbXBvc2VkIG9ubHkgb2YgQVNDSUkgY2hhcmFjdGVycyAoaW4gd2hpY2ggY2FzZSwgbm9cbi8vIGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkKSBvciBub3QuXG4vL1xuLy8gVGhlIHN0cmluZyB0YWcgY2FuIHRodXMgdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi8vICAgZnVsbCBzdHJpbmcgICAgIEJZVEUgfCBVTktOT1dOOiAgICAgIDBcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBBU0NJSTogICAgICAgIDlcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBOT1RfQVNDSUk6ICAgIDhcbi8vICAgc3RyaW5nIHByZWZpeCAgIFBBUlRJQUw6ICAgICAgICAgICAgIDJcbi8vICAgYXJyYXkgICAgICAgICAgIEFSUkFZOiAgICAgICAgICAgICAgIDRcbi8vXG4vLyBPbmUgY2FuIHVzZSBiaXQgbWFza2luZyB0byBkaXNjcmltaW5hdGUgdGhlc2UgZGlmZmVyZW50IGNhc2VzOlxuLy8gICBrbm93bl9lbmNvZGluZyh4KSA9IHgmOFxuLy8gICBpc19hc2NpaSh4KSA9ICAgICAgIHgmMVxuLy8gICBraW5kKHgpID0gICAgICAgICAgIHgmNlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfc3RyX3JlcGVhdChuLCBzKSB7XG4gIGlmKG4gPT0gMCkgcmV0dXJuIFwiXCI7XG4gIGlmIChzLnJlcGVhdCkge3JldHVybiBzLnJlcGVhdChuKTt9IC8vIEVDTUFzY3JpcHQgNiBhbmQgRmlyZWZveCAyNCtcbiAgdmFyIHIgPSBcIlwiLCBsID0gMDtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKG4gJiAxKSByICs9IHM7XG4gICAgbiA+Pj0gMTtcbiAgICBpZiAobiA9PSAwKSByZXR1cm4gcjtcbiAgICBzICs9IHM7XG4gICAgbCsrO1xuICAgIGlmIChsID09IDkpIHtcbiAgICAgIHMuc2xpY2UoMCwxKTsgLy8gZmxhdHRlbiB0aGUgc3RyaW5nXG4gICAgICAvLyB0aGVuLCB0aGUgZmxhdHRlbmluZyBvZiB0aGUgd2hvbGUgc3RyaW5nIHdpbGwgYmUgZmFzdGVyLFxuICAgICAgLy8gYXMgaXQgd2lsbCBiZSBjb21wb3NlZCBvZiBsYXJnZXIgcGllY2VzXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuLy9XZWFrZGVmXG4vLyBQcmUgRUNNQVNjcmlwdCA1LCBbYXBwbHldIHdvdWxkIG5vdCBzdXBwb3J0IGFycmF5LWxpa2Ugb2JqZWN0LlxuLy8gSW4gc3VjaCBzZXR1cCwgVHlwZWRfYXJyYXkgd291bGQgYmUgaW1wbGVtZW50ZWQgYXMgcG9seWZpbGwsIGFuZCBbZi5hcHBseV0gd291bGRcbi8vIGZhaWwgaGVyZS4gTWFyayB0aGUgcHJpbWl0aXZlIGFzIFdlYWtkZWYsIHNvIHRoYXQgcGVvcGxlIGNhbiBvdmVycmlkZSBpdCBlYXNpbHkuXG5mdW5jdGlvbiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09IGEubGVuZ3RoKSByZXR1cm4gZi5hcHBseSAobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCxsZW4tPTEwMjQpXG4gICAgcyArPSBmLmFwcGx5IChudWxsLCBhLnNsaWNlKGksaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmOF9vZl91dGYxNlxuZnVuY3Rpb24gY2FtbF91dGY4X29mX3V0ZjE2KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBiLCBjLCBkLCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYyA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYyA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhjMCB8IChjID4+IDYpKTtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjIDwgMHhkODAwIHx8IGMgPj0gMHhkZmZmKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlMCB8IChjID4+IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA+PSAweGRiZmYgfHwgaSArIDEgPT0gbCB8fFxuICAgICAgICAgICAgICAgKGQgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBkID4gMHhkZmZmKSB7XG4gICAgICAvLyBVbm1hdGNoZWQgc3Vycm9nYXRlIHBhaXIsIHJlcGxhY2VkIGJ5IFxcdWZmZmQgKHJlcGxhY2VtZW50IGNoYXJhY3RlcilcbiAgICAgIHQgKz0gXCJcXHhlZlxceGJmXFx4YmRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgaSsrO1xuICAgICAgYyA9IChjIDw8IDEwKSArIGQgLSAweDM1ZmRjMDA7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmMCB8IChjID4+IDE4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDEyKSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfVxuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBjYW1sX3V0ZjE2X29mX3V0Zjgocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IFwiXCIsIGMsIGMxLCBjMiwgdiwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjMSA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYzEgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgdiA9IDE7XG4gICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgIGMgPSBjMiArIChjMSA8PCA2KTtcbiAgICAgIGlmIChjMSA8IDB4ZTApIHtcbiAgICAgICAgdiA9IGMgLSAweDMwODA7XG4gICAgICAgIGlmICh2IDwgMHg4MCkgdiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ID0gMjtcbiAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgICAgICBjID0gYzIgKyAoYyA8PCA2KTtcbiAgICAgICAgICBpZiAoYzEgPCAweGYwKSB7XG4gICAgICAgICAgICB2ID0gYyAtIDB4ZTIwODA7XG4gICAgICAgICAgICBpZiAoKHYgPCAweDgwMCkgfHwgKCh2ID49IDB4ZDdmZikgJiYgKHYgPCAweGUwMDApKSkgdiA9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHYgPSAzO1xuICAgICAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkgJiZcbiAgICAgICAgICAgICAgICAoYzEgPCAweGY1KSkge1xuICAgICAgICAgICAgICB2ID0gYzIgLSAweDNjODIwODAgKyAoYyA8PCA2KTtcbiAgICAgICAgICAgICAgaWYgKHYgPCAweDEwMDAwIHx8IHYgPiAweDEwZmZmZikgdiA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2IDwgNCkgeyAvLyBJbnZhbGlkIHNlcXVlbmNlXG4gICAgICBpIC09IHY7XG4gICAgICB0ICs9IFwiXFx1ZmZmZFwiO1xuICAgIH0gZWxzZSBpZiAodiA+IDB4ZmZmZilcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ3YzAgKyAodiA+PiAxMCksIDB4ZGMwMCArICh2ICYgMHgzRkYpKVxuICAgIGVsc2VcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh2KTtcbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkgKHMpIHtcbiAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBnZXRzIGJldHRlciBhdCBhcm91bmQgdGhpcyBwb2ludCBmb3IgYWxsIGJyb3dzZXJzXG4gIGlmIChzLmxlbmd0aCA8IDI0KSB7XG4gICAgLy8gU3BpZGVybW9ua2V5IGdldHMgbXVjaCBzbG93ZXIgd2hlbiBzLmxlbmd0aCA+PSAyNCAob24gNjQgYml0IGFyY2hzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgaWYgKHMuY2hhckNvZGVBdChpKSA+IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2VcbiAgICByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSkge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgcmV0dXJuIHMuY1tpXVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgLy8gVGhlIE9DYW1sIGNvbXBpbGVyIHVzZXMgQ2hhci51bnNhZmVfY2hyIG9uIGludGVnZXJzIGxhcmdlciB0aGFuIDI1NSFcbiAgYyAmPSAweGZmO1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIHtcbiAgICBpZiAoaSA9PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICBpZiAoaSArIDEgPT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAzKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjIgPSAweEZGICYgaTE2ID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMTY7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDE2XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQxNlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhGRiAmIGkzMiA+PiAyNCxcbiAgICAgIGIzID0gMHhGRiAmIGkzMiA+PiAxNixcbiAgICAgIGIyID0gMHhGRiAmIGkzMiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAzLCBiNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MzJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKykge1xuICAgIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDY0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyAocykge1xuICB2YXIgdGFnID0gOSAvKiBCWVRFUyB8IEFTQ0lJICovO1xuICBpZiAoIWpzb29faXNfYXNjaWkocykpXG4gICAgdGFnID0gOCAvKiBCWVRFUyB8IE5PVF9BU0NJSSAqLywgcyA9IGNhbWxfdXRmOF9vZl91dGYxNihzKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRhZywgcywgcy5sZW5ndGgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sQnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gTWxCeXRlcyAodGFnLCBjb250ZW50cywgbGVuZ3RoKSB7XG4gIHRoaXMudD10YWc7IHRoaXMuYz1jb250ZW50czsgdGhpcy5sPWxlbmd0aDtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcbiAgc3dpdGNoICh0aGlzLnQpIHtcbiAgY2FzZSA5OiAvKkJZVEVTIHwgQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyh0aGlzKTtcbiAgY2FzZSAwOiAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB7XG4gICAgICB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgcmV0dXJuIHRoaXMuYztcbiAgICB9XG4gICAgdGhpcy50ID0gODsgLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gIGNhc2UgODogLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgfVxufTtcbk1sQnl0ZXMucHJvdG90eXBlLnRvVXRmMTYgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIHIgPSB0aGlzLnRvU3RyaW5nKCk7XG4gIGlmKHRoaXMudCA9PSA5KSByZXR1cm4gclxuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHIpO1xufVxuTWxCeXRlcy5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIGNvbnRlbnQgPSB0aGlzLnQgPT0gNCA/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkocy5sKTtcbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHRvYykge1xuICB2YXIgc3ltYjtcbiAgd2hpbGUodG9jKSB7XG4gICAgaWYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodG9jWzFdWzFdKSA9PSBcIlNZSlNcIikge1xuICAgICAgc3ltYiA9IHRvY1sxXVsyXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBlbHNlIHRvYyA9IHRvY1syXVxuICB9XG4gIHZhciByID0ge307XG4gIGlmKHN5bWIpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKyl7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IHN5bWJbaV1bMl1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChjb25zdCwgc2hhbGxvdywgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX2NhbGxiYWNrLCBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZiAobmFtZV9vcHQpIHtcbiAgICB2YXIgbmFtZSA9IG5hbWVfb3B0O1xuICAgIGlmKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jLCBbbmFtZV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYW1sX2dsb2JhbF9kYXRhLnRvYykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMgPSBjYW1sX2J1aWxkX3N5bWJvbHMoY2FtbF9nbG9iYWxfZGF0YS50b2MpXG4gICAgICB9XG4gICAgICB2YXIgbmlkID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzW25hbWVdXG4gICAgICBpZihuaWQgPj0gMClcbiAgICAgICAgbiA9IG5pZFxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3JlZ2lzdGVyX2dsb2JhbDogY2Fubm90IGxvY2F0ZSBcIiArIG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmKG5hbWVfb3B0KSBjYW1sX2dsb2JhbF9kYXRhW25hbWVfb3B0XSA9IHY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2dsb2JhbF9kYXRhIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZ2V0X2dsb2JhbF9kYXRhICgpIHsgcmV0dXJuIGNhbWxfZ2xvYmFsX2RhdGE7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykgeyByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9wcmludF9zdGF0c1xuZnVuY3Rpb24gY2FtbF9tYXliZV9wcmludF9zdGF0cyh1bml0KSB7IHJldHVybiAwIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIGlmKGdsb2JhbFRoaXMucXVpdCkgZ2xvYmFsVGhpcy5xdWl0KGNvZGUpO1xuICAvL25vZGVqc1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQpXG4gICAgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKXtcbiAgc3dpdGNoKGV4blsyXSkge1xuICBjYXNlIC04OiAvLyBNYXRjaF9mYWlsdXJlXG4gIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICBjYXNlIC0xMjogLy8gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcbiAgICByZXR1cm4gMTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihleG4pe1xuICB2YXIgciA9IFwiXCI7XG4gIGlmKGV4blswXSA9PSAwKSB7XG4gICAgciArPSBleG5bMV1bMV07XG4gICAgaWYoZXhuLmxlbmd0aCA9PSAzICYmIGV4blsyXVswXSA9PSAwICYmIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKSkge1xuXG4gICAgICB2YXIgYnVja2V0ID0gZXhuWzJdO1xuICAgICAgdmFyIHN0YXJ0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YXJ0ID0gMlxuICAgICAgdmFyIGJ1Y2tldCA9IGV4bjtcbiAgICB9XG4gICAgciArPSBcIihcIjtcbiAgICBmb3IodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkgKyspe1xuICAgICAgaWYoaSA+IHN0YXJ0KSByKz1cIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXVxuICAgICAgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcis9IHYudG9TdHJpbmcoKTtcbiAgICAgIGVsc2UgaWYodiBpbnN0YW5jZW9mIE1sQnl0ZXMpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHR5cGVvZiB2ID09IFwic3RyaW5nXCIpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCJcbiAgfSBlbHNlIGlmIChleG5bMF0gPT0gMjQ4KXtcbiAgICByICs9IGV4blsxXVxuICB9XG4gIHJldHVybiByXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX2Zvcm1hdF9leGNlcHRpb24sIGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycil7XG4gIGlmKGVyciBpbnN0YW5jZW9mIEFycmF5ICYmIChlcnJbMF0gPT0gMCB8fCBlcnJbMF0gPT0gMjQ4KSkge1xuICAgIHZhciBoYW5kbGVyID0gY2FtbF9uYW1lZF92YWx1ZShcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIik7XG4gICAgaWYoaGFuZGxlcikgY2FtbF9jYWxsYmFjayhoYW5kbGVyLCBbZXJyLGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSBjYW1sX2NhbGxiYWNrKGF0X2V4aXQsIFswXSk7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyk7XG4gICAgICBpZihlcnIuanNfZXJyb3IpIHRocm93IGVyci5qc19lcnJvcjtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuZnVuY3Rpb24ganNvb19zeXNfZ2V0ZW52KG4pIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIC8vbm9kZWpzIGVudlxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuZW52XG4gICAgICYmIHByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnZbbl07XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xuICBpZihyID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSl7XG4gIHJldHVybiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKChmdW5jdGlvbiAoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5hcmd2XG4gICAgICYmIHByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3ZcbiAgICAvL25vZGVqc1xuICAgIG1haW4gPSBhcmd2WzFdO1xuICAgIGFyZ3MgPSBhcmd2LnNsaWNlKDIpO1xuICB9XG5cbiAgdmFyIHAgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhtYWluKTtcbiAgdmFyIGFyZ3MyID0gWzAsIHBdO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKylcbiAgICBhcmdzMi5wdXNoKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFyZ3NbaV0pKTtcbiAgcmV0dXJuIGFyZ3MyO1xufSkoKSlcblxuLy9Qcm92aWRlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxudmFyIGNhbWxfZXhlY3V0YWJsZV9uYW1lID0gY2FtbF9hcmd2WzFdXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2IChhKSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YgKGEpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKXtcbiAgY2FtbF9hcmd2ID0gYXJnO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuZnVuY3Rpb24gY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lKGEpe1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWVcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICB2YXIgY21kID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoY21kKTtcbiAgaWYgKHR5cGVvZiByZXF1aXJlICE9IFwidW5kZWZpbmVkXCIpe1xuICAgIHZhciBjaGlsZF9wcm9jZXNzID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuICAgIGlmKGNoaWxkX3Byb2Nlc3MgJiYgY2hpbGRfcHJvY2Vzcy5leGVjU3luYylcbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMoY21kLHtzdGRpbzogJ2luaGVyaXQnfSk7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gIH1cbiAgZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICAgdmFyIGEgPSBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoNCkpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMpIHtcbiAgICAgICB2YXIgYSA9IG5ldyBJbnQzMkFycmF5KGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS5idWZmZXIpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH1cbiAgfVxuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3deMHhmZmZmZmZmZipNYXRoLnJhbmRvbSgpO1xuICByZXR1cm4gWzAseF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfaW50X3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSBjb25zdFxuLy8gbWF4X2ludCAvIDQgc28gdGhhdCB0aGUgZm9sbG93aW5nIGRvZXMgbm90IG92ZXJmbG93XG4vL2xldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMTs7XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplICgpIHsgcmV0dXJuICgweDdGRkZGRkZGLzQpIHwgMDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCAoKSB7IHJldHVybiBvc190eXBlID09IFwiVW5peFwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJXaW4zMlwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIkN5Z3dpblwiID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbnZhciBvc190eXBlID0gKGdsb2JhbFRoaXMucHJvY2VzcyAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT0gXCJ3aW4zMlwiKSA/IFwiQ3lnd2luXCIgOiBcIlVuaXhcIjtcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG9zX3R5cGUpLCAzMiwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzYXR0eVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNhdHR5KF9jaGFuKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfdmFyaWFudFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3ZhcmlhbnQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyKCl7cmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xudmFyIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyAoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3J1bnRpbWVfd2FybmluZ3M7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9lbmFibGVkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lKF9jaGFubmVsKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJTcGFjZXRpbWUgcHJvZmlsaW5nIG9ubHkgd29ya3MgZm9yIG5hdGl2ZSBjb2RlXCIpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5pc0ZpbGUocm9vdC5yZXN0KTtcbn1cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIGlmKHByb2Nlc3MgJiYgcHJvY2Vzcy5vbikge1xuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZnVuY3Rpb24gKGVyciwgb3JpZ2luKSB7XG4gICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgcHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxudmFyIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKVxuICBpZihyICE9PSB1bmRlZmluZWQpe1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspe1xuICAgICAgaWYobFtpXSA9PSBcImJcIikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IDE7IGJyZWFrIH1cbiAgICAgIGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gKyhsW2ldLnNsaWNlKDIpKX1cbiAgICAgIGVsc2UgY29udGludWU7XG4gICAgfVxuICB9XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIChfdW5pdCkgeyByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKGIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBiOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbnZhciBjYW1sX3N0YWNrX2RlcHRoID0gMDtcblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2NoZWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGhcbmZ1bmN0aW9uIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKSB7XG4gICAgcmV0dXJuIC0tY2FtbF9zdGFja19kZXB0aCA+IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6ICFlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFjaywgY2FtbF93cmFwX2V4Y2VwdGlvbiwgY2FtbF9yZXN1bWVfc3RhY2ssIGNhbWxfZnJlc2hfb29faWQsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnRcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZixhcmdzKSB7XG4gIGZ1bmN0aW9uIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyKGVmZixrLG1zKSB7XG4gICAgLy8gUmVzdW1lcyB0aGUgY29udGludWF0aW9uIGsgYnkgcmFpc2luZyBleGNlcHRpb24gVW5oYW5kbGVkLlxuICAgIGNhbWxfcmVzdW1lX3N0YWNrKGtbMV0sbXMpO1xuICAgIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgICBpZihleG4pIGNhbWxfcmFpc2Vfd2l0aF9hcmcoZXhuLCBlZmYpO1xuICAgIGVsc2Uge1xuICAgICAgZXhuID0gWzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRWZmZWN0LlVuaGFuZGxlZFwiKSwgY2FtbF9mcmVzaF9vb19pZCgwKV07XG4gICAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGV4bik7XG4gICAgfVxuICB9XG4gIHZhciBzYXZlZF9zdGFja19kZXB0aCA9IGNhbWxfc3RhY2tfZGVwdGg7XG4gIHZhciBzYXZlZF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFjaztcbiAgdmFyIHNhdmVkX2ZpYmVyX3N0YWNrID0gY2FtbF9maWJlcl9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2V4bl9zdGFjayA9IDA7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpbMCwgMCwgMCwgdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXJdLCByOntrOjAsIHg6MCwgZTowfX07XG4gICAgdmFyIHJlcyA9IHtqb29fdHJhbXA6IGYsXG4gICAgICAgICAgICAgICBqb29fYXJnczogYXJncy5jb25jYXQoZnVuY3Rpb24gKHgpe3JldHVybiB4O30pfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfZXhuX3N0YWNrKSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICAgICAgICBjYW1sX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrWzJdO1xuICAgICAgICByZXMgPSB7am9vX3RyYW1wOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IFtjYW1sX3dyYXBfZXhjZXB0aW9uKGUpXX07XG4gICAgICB9XG4gICAgfSB3aGlsZShyZXMgJiYgcmVzLmpvb19hcmdzKVxuICB9IGZpbmFsbHkge1xuICAgIGNhbWxfc3RhY2tfZGVwdGggPSBzYXZlZF9zdGFja19kZXB0aDtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHNhdmVkX2V4bl9zdGFjaztcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID0gc2F2ZWRfZmliZXJfc3RhY2s7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJ1c2UtanMtc3RyaW5nXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJlZmZlY3RzXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd3JhcF9leGNlcHRpb24gY29uc3QgKG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfd3JhcF9leGNlcHRpb24oZSkge1xuICBpZiAoRkxBRyhcImV4Y3dyYXBcIikpIHtcbiAgICBpZihlIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZihnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgICBleG4gPSBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgICBlbHNlXG4gICAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICAgIGV4biA9IFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG4gICAgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVycm9yIGF0IGhhbmQsIGxldCdzIHVzZSBpdC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IpXG4gICAgICBleG4uanNfZXJyb3IgPSBlO1xuICAgIHJldHVybiBleG47XG4gIH0gZWxzZVxuICAgIHJldHVybiBlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgaWYoY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcpXG4gICAgcmV0dXJuIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpO1xuICBlbHNlIHJldHVybiBleG5cbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZighZXhuLmpzX2Vycm9yIHx8IGZvcmNlIHx8IGV4blswXSA9PSAyNDgpIGV4bi5qc19lcnJvciA9IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiSnMgZXhjZXB0aW9uIGNvbnRhaW5pbmcgYmFja3RyYWNlXCIpO1xuICByZXR1cm4gZXhuO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIFswLCBleG4uanNfZXJyb3JdOyB9XG4gIHJldHVybiAwO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Jvb2woeCkgeyByZXR1cm4gISF4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHsgcmV0dXJuICt4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fZmxvYXQgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc19mcm9tX2ludDMyXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkgeyByZXR1cm4geHwwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGJbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGxlbjtpKyspIGJbaSsxXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdmFyKHgpIHtcbiAgdmFyIHggPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh4KTtcbiAgLy9DaGVja3MgdGhhdCB4IGhhcyB0aGUgZm9ybSBpZGVudFsuaWRlbnRdKlxuICBpZigheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSl7XG4gICAgY29uc29sZS5lcnJvcihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gW3VuZGVmaW5lZF07XG4gICAgfVxuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZik7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLFt0aGlzLGFyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSArIDEpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSAtIDE7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgcmV0dXJuIChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIC8vIEZ1bmN0aW9ucyBoYXZlIGFuIGFkZGl0aW9uYWwgY29udGludWF0aW9uIHBhcmFtZXRlci4gVGhpcyBzaG91bGRcbiAgLy8gbm90IGJlIHZpc2libGUgd2hlbiBjYWxsaW5nIHRoZW0gZnJvbSBKYXZhU2NyaXB0XG4gIHJldHVybiAoKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKSkgLSAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zdHJpY3RfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfc3RyaWN0X2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX3B1cmVfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QgKGEpIHtcbiAgdmFyIG8gPSB7fTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBhW2ldO1xuICAgIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocFsxXSldID0gcFsyXTtcbiAgfVxuICByZXR1cm4gbztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRm9ybWF0XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZm9ybWF0IChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID1cbiAgICAgIHsganVzdGlmeTonKycsIHNpZ25zdHlsZTonLScsIGZpbGxlcjonICcsIGFsdGVybmF0ZTpmYWxzZSxcbiAgICAgICAgYmFzZTowLCBzaWduZWRjb252OmZhbHNlLCB3aWR0aDowLCB1cHBlcmNhc2U6ZmFsc2UsXG4gICAgICAgIHNpZ246MSwgcHJlYzotMSwgY29udjonZicgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gZm10LmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlICctJzpcbiAgICAgIGYuanVzdGlmeSA9ICctJzsgYnJlYWs7XG4gICAgY2FzZSAnKyc6IGNhc2UgJyAnOlxuICAgICAgZi5zaWduc3R5bGUgPSBjOyBicmVhaztcbiAgICBjYXNlICcwJzpcbiAgICAgIGYuZmlsbGVyID0gJzAnOyBicmVhaztcbiAgICBjYXNlICcjJzpcbiAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOlxuICAgIGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgZi53aWR0aCA9IDA7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYud2lkdGggPSBmLndpZHRoICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy4nOlxuICAgICAgZi5wcmVjID0gMDtcbiAgICAgIGkrKztcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi5wcmVjID0gZi5wcmVjICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICBjYXNlICdkJzogY2FzZSAnaSc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgJ3UnOlxuICAgICAgZi5iYXNlID0gMTA7IGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgZi5iYXNlID0gMTY7IGJyZWFrO1xuICAgIGNhc2UgJ1gnOlxuICAgICAgZi5iYXNlID0gMTY7IGYudXBwZXJjYXNlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnbyc6XG4gICAgICBmLmJhc2UgPSA4OyBicmVhaztcbiAgICBjYXNlICdlJzogY2FzZSAnZic6IGNhc2UgJ2cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi5jb252ID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnRSc6IGNhc2UgJ0YnOiBjYXNlICdHJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgIGYuY29udiA9IGMudG9Mb3dlckNhc2UgKCk7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCByYXdidWZmZXIpIHtcbiAgaWYgKGYudXBwZXJjYXNlKSByYXdidWZmZXIgPSByYXdidWZmZXIudG9VcHBlckNhc2UoKTtcbiAgdmFyIGxlbiA9IHJhd2J1ZmZlci5sZW5ndGg7XG4gIC8qIEFkanVzdCBsZW4gdG8gcmVmbGVjdCBhZGRpdGlvbmFsIGNoYXJzIChzaWduLCBldGMpICovXG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgKGYuc2lnbiA8IDAgfHwgZi5zaWduc3R5bGUgIT0gJy0nKSkgbGVuKys7XG4gIGlmIChmLmFsdGVybmF0ZSkge1xuICAgIGlmIChmLmJhc2UgPT0gOCkgbGVuICs9IDE7XG4gICAgaWYgKGYuYmFzZSA9PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcgJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICBpZiAoZi5zaWduZWRjb252KSB7XG4gICAgaWYgKGYuc2lnbiA8IDApIGJ1ZmZlciArPSAnLSc7XG4gICAgZWxzZSBpZiAoZi5zaWduc3R5bGUgIT0gJy0nKSBidWZmZXIgKz0gZi5zaWduc3R5bGU7XG4gIH1cbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSA4KSBidWZmZXIgKz0gJzAnO1xuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDE2KSBidWZmZXIgKz0gZi51cHBlcmNhc2U/XCIwWFwiOlwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19mbG9vcl9sb2cyXG52YXIgbG9nMl9vayA9IE1hdGgubG9nMiAmJiBNYXRoLmxvZzIoMS4xMjM1NTgyMDkyODg5NDc0RSszMDcpID09IDEwMjBcbmZ1bmN0aW9uIGpzb29fZmxvb3JfbG9nMih4KSB7XG4gIGlmKGxvZzJfb2spIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMih4KSlcbiAgdmFyIGkgPSAwO1xuICBpZiAoeCA9PSAwKSByZXR1cm4gLUluZmluaXR5O1xuICBpZih4Pj0xKSB7d2hpbGUgKHg+PTIpIHt4Lz0yOyBpKyt9IH1cbiAgZWxzZSB7d2hpbGUgKHggPCAxKSB7eCo9MjsgaS0tfSB9O1xuICByZXR1cm4gaTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSlcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgxLCAwLCAweDdmZjApO1xuICAgIGlmICh4ID4gMClcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweDdmZjApXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4ZmZmMClcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzB4ODAwMDooeD49MCk/MDoweDgwMDA7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIC8vIEludDY0LmJpdHNfb2ZfZmxvYXQgMS4xMjM1NTgyMDkyODg5NDc0RSszMDcgPSAweDdmYjAwMDAwMDAwMDAwMDBMXG4gIC8vIHVzaW5nIE1hdGguTE9HMkUqTWF0aC5sb2coeCkgaW4gcGxhY2Ugb2YgTWF0aC5sb2cyIHJlc3VsdCBpbiBwcmVjaXNpb24gbG9zdFxuICB2YXIgZXhwID0ganNvb19mbG9vcl9sb2cyKHgpICsgMTAyMztcbiAgaWYgKGV4cCA8PSAwKSB7XG4gICAgZXhwID0gMDtcbiAgICB4IC89IE1hdGgucG93KDIsLTEwMjYpO1xuICB9IGVsc2Uge1xuICAgIHggLz0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gICAgaWYgKHggPCAxNikge1xuICAgICAgeCAqPSAyOyBleHAgLT0xOyB9XG4gICAgaWYgKGV4cCA9PSAwKSB7XG4gICAgICB4IC89IDI7IH1cbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsMjQpO1xuICB2YXIgcjMgPSB4fDA7XG4gIHggPSAoeCAtIHIzKSAqIGs7XG4gIHZhciByMiA9IHh8MDtcbiAgeCA9ICh4IC0gcjIpICogaztcbiAgdmFyIHIxID0geHwwO1xuICByMyA9IChyMyAmMHhmKSB8IHNpZ24gfCBleHAgPDwgNDtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHIxLCByMiwgcjMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7XG4gIGZsb2F0MzJhWzBdID0geDtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KGZsb2F0MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBpbnQzMmFbMF0gfCAwO1xufVxuXG4vL0ZQIGxpdGVyYWxzIGNhbiBiZSB3cml0dGVuIHVzaW5nIHRoZSBoZXhhZGVjaW1hbFxuLy9ub3RhdGlvbiAweDxtYW50aXNzYSBpbiBoZXg+cDxleHBvbmVudD4gZnJvbSBJU08gQzk5LlxuLy9odHRwczovL2dpdGh1Yi5jb20vZGFua29nYWkvanMtaGV4ZmxvYXQvYmxvYi9tYXN0ZXIvaGV4ZmxvYXQuanNcbi8vUHJvdmlkZXM6IGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCAoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSkgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKFwibmFuXCIpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoKHggPiAwKT9cImluZmluaXR5XCI6XCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8xOih4Pj0wKT8wOjE7XG4gIGlmKHNpZ24pIHggPSAteDtcbiAgdmFyIGV4cCA9IDA7XG4gIGlmICh4ID09IDApIHsgfVxuICBlbHNlIGlmICh4IDwgMSkge1xuICAgIHdoaWxlICh4IDwgMSAmJiBleHAgPiAtMTAyMikgIHsgeCAqPSAyOyBleHAtLSB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikgeyB4IC89IDI7IGV4cCsrIH1cbiAgfVxuICB2YXIgZXhwX3NpZ24gPSBleHAgPCAwID8gJycgOiAnKyc7XG4gIHZhciBzaWduX3N0ciA9ICcnO1xuICBpZiAoc2lnbikgc2lnbl9zdHIgPSAnLSdcbiAgZWxzZSB7XG4gICAgc3dpdGNoKHN0eWxlKXtcbiAgICBjYXNlIDQzIC8qICcrJyAqLzogc2lnbl9zdHIgPSAnKyc7IGJyZWFrO1xuICAgIGNhc2UgMzIgLyogJyAnICovOiBzaWduX3N0ciA9ICcgJzsgYnJlYWs7XG4gICAgZGVmYXVsdDogYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChwcmVjID49IDAgJiYgcHJlYyA8IDEzKSB7XG4gICAgLyogSWYgYSBwcmVjaXNpb24gaXMgZ2l2ZW4sIGFuZCBpcyBzbWFsbCwgcm91bmQgbWFudGlzc2EgYWNjb3JkaW5nbHkgKi9cbiAgICB2YXIgY3N0ID0gTWF0aC5wb3coMixwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmKHByZWMgPj0gMCl7XG4gICAgdmFyIGlkeCA9IHhfc3RyLmluZGV4T2YoJy4nKTtcbiAgICBpZihpZHg8MCkge1xuICAgICAgeF9zdHIgKz0gJy4nICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsICcwJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHgrMStwcmVjO1xuICAgICAgaWYoeF9zdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICAgICAgeF9zdHIgKz0gY2FtbF9zdHJfcmVwZWF0KHNpemUgLSB4X3N0ci5sZW5ndGgsICcwJyk7XG4gICAgICBlbHNlXG4gICAgICAgIHhfc3RyID0geF9zdHIuc3Vic3RyKDAsc2l6ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoc2lnbl9zdHIgKyAnMHgnICsgeF9zdHIgKyAncCcgKyBleHBfc2lnbiArIGV4cC50b1N0cmluZygxMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgbG8gPSB4LmxvO1xuICB2YXIgbWkgPSB4Lm1pO1xuICB2YXIgaGkgPSB4LmhpO1xuICB2YXIgZXhwID0gKGhpICYgMHg3ZmZmKSA+PiA0O1xuICBpZiAoZXhwID09IDIwNDcpIHtcbiAgICBpZiAoKGxvfG1pfChoaSYweGYpKSA9PSAwKVxuICAgICAgcmV0dXJuIChoaSAmIDB4ODAwMCk/KC1JbmZpbml0eSk6SW5maW5pdHk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE5hTjtcbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsLTI0KTtcbiAgdmFyIHJlcyA9IChsbyprK21pKSprKyhoaSYweGYpO1xuICBpZiAoZXhwID4gMCkge1xuICAgIHJlcyArPSAxNjtcbiAgICByZXMgKj0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gIH0gZWxzZVxuICAgIHJlcyAqPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgaWYgKGhpICYgMHg4MDAwKSByZXMgPSAtIHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9zdWIsY2FtbF9pbnQ2NF9vZl9pbnQzMlxuZnVuY3Rpb24gY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgKHgseSkge1xuICBpZihpc05hTih4KSB8fCBpc05hTih5KSkgcmV0dXJuIE5hTjtcbiAgaWYoeD09eSkgcmV0dXJuIHk7XG4gIGlmKHg9PTApe1xuICAgIGlmKHkgPCAwKVxuICAgICAgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpXG4gIH1cbiAgdmFyIGJpdHMgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoeCk7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X29mX2ludDMyKDEpO1xuICBpZiAoKHg8eSkgPT0gKHg+MCkpXG4gICAgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSlcbiAgZWxzZVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X3N1YihiaXRzLCBvbmUpXG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCl7XG4gIHJldHVybiBNYXRoLnRydW5jKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoMSk7XG4gIGludDMyYVswXSA9IHg7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoaW50MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBmbG9hdDMyYVswXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4KSByZXR1cm4gMDtcbiAgICBpZiAoeCAhPSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gaXNOYU4oeCk/NDozO1xufVxuLy9Qcm92aWRlczogY2FtbF9tb2RmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX21vZGZfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIHZhciBuZWcgPSAoMS94KSA8IDA7XG4gICAgeCA9IE1hdGguYWJzKHgpO1xuICAgIHZhciBpID0gTWF0aC5mbG9vciAoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7IGkgPSAtaTsgZiA9IC1mOyB9XG4gICAgcmV0dXJuIFswLCBmLCBpXTtcbiAgfVxuICBpZiAoaXNOYU4gKHgpKSByZXR1cm4gWzAsIE5hTiwgTmFOXTtcbiAgcmV0dXJuIFswLCAxL3gsIHhdO1xufVxuLy9Qcm92aWRlczogY2FtbF9sZGV4cF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sZGV4cF9mbG9hdCAoeCxleHApIHtcbiAgZXhwIHw9IDA7XG4gIGlmIChleHAgPiAxMDIzKSB7XG4gICAgZXhwIC09IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1hbFxuICAgICAgZXhwIC09IDEwMjM7XG4gICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIH1cbiAgfVxuICBpZiAoZXhwIDwgLTEwMjMpIHtcbiAgICBleHAgKz0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIC0xMDIzKTtcbiAgfVxuICB4ICo9IE1hdGgucG93KDIsIGV4cCk7XG4gIHJldHVybiB4O1xufVxuLy9Qcm92aWRlczogY2FtbF9mcmV4cF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0ICh4KSB7XG4gIGlmICgoeCA9PSAwKSB8fCAhaXNGaW5pdGUoeCkpIHJldHVybiBbMCwgeCwgMF07XG4gIHZhciBuZWcgPSB4IDwgMDtcbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgdmFyIGV4cCA9IE1hdGgubWF4KC0xMDIzLCBqc29vX2Zsb29yX2xvZzIoeCkgKyAxKTtcbiAgeCAqPSBNYXRoLnBvdygyLC1leHApO1xuICB3aGlsZSAoeCA8IDAuNSkge1xuICAgIHggKj0gMjtcbiAgICBleHAtLTtcbiAgfVxuICB3aGlsZSAoeCA+PSAxKSB7XG4gICAgeCAqPSAwLjU7XG4gICAgZXhwKys7XG4gIH1cbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgcmV0dXJuIFswLCB4LCBleHBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfY29tcGFyZSAoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoeCA9PT0geCkgcmV0dXJuIDE7XG4gIGlmICh5ID09PSB5KSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0ICh4LCB5KSB7XG4gIGlmICh5ID09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4gKHkgPCAwKT8oLXgpOng7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaWduYml0X2Zsb2F0KHgpIHtcbiAgaWYgKHggPT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4gKHggPCAwKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhwbTFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwbTFfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguZXhwbTEoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZXhwMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHAyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgucG93KDIsIHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMXAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMih4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9oeXBvdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9oeXBvdF9mbG9hdCAoeCwgeSkgeyByZXR1cm4gTWF0aC5oeXBvdCh4LCB5KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxMF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxMF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5sb2cxMCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9jb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Nvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9zaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF90YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3RhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgudGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hdGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9yb3VuZF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9yb3VuZF9mbG9hdCAoeCkge1xuICBpZiAoeCA+PSAwKSB7XG4gICAgdmFyIHkgPSBNYXRoLmZsb29yKHgpO1xuICAgIHJldHVybiAoeCAtIHkgPj0gMC41KT8oeSArIDEpOnlcbiAgfSBlbHNlIHtcbiAgICB2YXIgeSA9IE1hdGguY2VpbCh4KTtcbiAgICByZXR1cm4gKHkgLSB4ID49IDAuNSk/KHkgLSAxKTp5XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNicnQoeCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9IDEuMCAtICgoKChhNSAqIHQgKyBhNCkgKiB0ICsgYTMpICogdCArIGEyKSAqIHQgKyBhMSkgKiB0ICogTWF0aC5leHAoLXggKiB4KTtcblxuICByZXR1cm4gc2lnbiAqIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmY19mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9lcmZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfZXJmY19mbG9hdCh4KSB7XG4gIHJldHVybiAxIC0gY2FtbF9lcmZfZmxvYXQoeCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5IChhLCBiKSB7XG4gICAgdmFyIGF0ID0gU1BMSVQgKiBhO1xuICAgIHZhciBhaGkgPSBhdCAtIChhdCAtIGEpO1xuICAgIHZhciBhbG8gPSBhIC0gYWhpO1xuICAgIHZhciBidCA9IFNQTElUICogYjtcbiAgICB2YXIgYmhpID0gYnQgLSAoYnQgLSBiKTtcbiAgICB2YXIgYmxvID0gYiAtIGJoaTtcbiAgICB2YXIgcCA9IGEgKiBiO1xuICAgIHZhciBlID0gKChhaGkgKiBiaGkgLSBwKSArIGFoaSAqIGJsbyArIGFsbyAqIGJoaSkgKyBhbG8gKiBibG87XG4gICAgcmV0dXJuIHtcbiAgICAgIHA6IHAsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSAoYSAtIChzIC0gdikpICsgKGIgLSB2KTtcbiAgICByZXR1cm4ge1xuICAgICAgczogcyxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkanVzdCAoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4ID8geCAqICgxICsgKHggPCAwID8gLTEgOiArMSkgKiAoeSA8IDAgPyAtMSA6ICsxKSAqIEVQU0lMT04pIDogeDtcbiAgfTtcblxuICBpZiAoeCA9PT0gMCB8fCB4ICE9PSB4IHx8IHggPT09ICsxIC8gMCB8fCB4ID09PSAtMSAvIDAgfHxcbiAgICAgIHkgPT09IDAgfHwgeSAhPT0geSB8fCB5ID09PSArMSAvIDAgfHwgeSA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICsgejtcbiAgfVxuICBpZiAoeiA9PT0gMCkge1xuICAgIHJldHVybiB4ICogeTtcbiAgfVxuICBpZiAoeiAhPT0geiB8fCB6ID09PSArMSAvIDAgfHwgeiA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiBNYXRoLmFicyh4cyAqIHlzKSAqIDQgLyBFUFNJTE9OKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cbiAgaWYgKE1hdGguYWJzKHpzKSA8IE1hdGguYWJzKHhzICogeXMpICogRVBTSUxPTiAvIDQgKiBFUFNJTE9OIC8gNCkge1xuICAgIHpzID0gKHogPCAwID8gLTEgOiArMSkgKiBNSU5fVkFMVUU7XG4gIH1cblxuICB2YXIgeHkgPSBtdWx0aXBseSh4cywgeXMpO1xuICB2YXIgcyA9IGFkZCh4eS5wLCB6cyk7XG4gIHZhciB1ID0gYWRkKHh5LmUsIHMuZSk7XG4gIHZhciBpID0gYWRkKHMucywgdS5zKTtcblxuICB2YXIgZiA9IGkucyArIGFkanVzdChpLmUsIHUuZSk7XG4gIGlmIChmID09PSAwKSB7XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICB2YXIgZnMgPSBmICogc2NhbGU7XG4gIGlmIChNYXRoLmFicyhmcykgPiBNSU5fVkFMVUUpIHtcbiAgICByZXR1cm4gZnM7XG4gIH1cblxuICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXJlIHdhcyBleHRyYSByb3VuZGluZyBmb3IgYSBkZW5vcm1hbGl6ZWQgdmFsdWUuXG4gIHJldHVybiBmcyArIGFkanVzdChmIC0gZnMgLyBzY2FsZSwgaS5lKSAqIHNjYWxlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2Zsb2F0IChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LGRwKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpIDwgMS4wKSB7XG4gICAgICByZXR1cm4geC50b0ZpeGVkKGRwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGUgPSBwYXJzZUludCh4LnRvU3RyaW5nKCkuc3BsaXQoJysnKVsxXSk7XG4gICAgICBpZiAoZSA+IDIwKSB7XG4gICAgICAgIGUgLT0gMjA7XG4gICAgICAgIHggLz0gTWF0aC5wb3coMTAsZSk7XG4gICAgICAgIHggKz0gKG5ldyBBcnJheShlKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIGlmKGRwID4gMCkge1xuICAgICAgICAgIHggPSB4ICsgJy4nICsgKG5ldyBBcnJheShkcCsxKSkuam9pbignMCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuICAgICAgZWxzZSByZXR1cm4geC50b0ZpeGVkKGRwKVxuICAgIH1cbiAgfVxuICB2YXIgcywgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIHZhciBwcmVjID0gKGYucHJlYyA8IDApPzY6Zi5wcmVjO1xuICBpZiAoeCA8IDAgfHwgKHggPT0gMCAmJiAxL3ggPT0gLUluZmluaXR5KSkgeyBmLnNpZ24gPSAtMTsgeCA9IC14OyB9XG4gIGlmIChpc05hTih4KSkgeyBzID0gXCJuYW5cIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZSBpZiAoIWlzRmluaXRlKHgpKSB7IHMgPSBcImluZlwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlXG4gICAgc3dpdGNoIChmLmNvbnYpIHtcbiAgICBjYXNlICdlJzpcbiAgICAgIHZhciBzID0geC50b0V4cG9uZW50aWFsKHByZWMpO1xuICAgICAgLy8gZXhwb25lbnQgc2hvdWxkIGJlIGF0IGxlYXN0IHR3byBkaWdpdHNcbiAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2YnOlxuICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7IGJyZWFrO1xuICAgIGNhc2UgJ2cnOlxuICAgICAgcHJlYyA9IHByZWM/cHJlYzoxO1xuICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICB2YXIgaiA9IHMuaW5kZXhPZignZScpO1xuICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgIGlmIChleHAgPCAtNCB8fCB4ID49IDFlMjEgfHwgeC50b0ZpeGVkKDApLmxlbmd0aCA+IHByZWMpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICB2YXIgaSA9IGogLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgaSA9IHMubGVuZ3RoO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgaWYgKGV4cCA8IDApIHsgcCAtPSBleHAgKyAxOyBzID0geC50b0ZpeGVkKHApOyB9XG4gICAgICAgIGVsc2Ugd2hpbGUgKHMgPSB4LnRvRml4ZWQocCksIHMubGVuZ3RoID4gcHJlYyArIDEpIHAtLTtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgICAgdmFyIGkgPSBzLmxlbmd0aCAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpXG4gIHJlcyA9ICtzO1xuICBpZiAoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLFwiXCIpO1xuICByZXMgPSArcztcbiAgaWYgKCgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSB8fCAvXlsrLV0/bmFuJC9pLnRlc3QocykpIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8vaS5leGVjKHMpO1xuICAvLyAgICAgICAgICAxICAgICAgICAyICAgICAgICAgICAgIDMgICAgICAgICAgIDVcbiAgaWYobSl7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCcnKTtcbiAgICB2YXIgbWFudGlzc2EgPSBwYXJzZUludChtWzFdICsgbVsyXSArIG0zLCAxNik7XG4gICAgdmFyIGV4cG9uZW50ID0gKG1bNV18MCkgLSA0Km0zLmxlbmd0aDtcbiAgICByZXMgPSBtYW50aXNzYSAqIE1hdGgucG93KDIsIGV4cG9uZW50KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmKC9eXFwrP2luZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBJbmZpbml0eTtcbiAgaWYoL14taW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIC1JbmZpbml0eTtcbiAgY2FtbF9mYWlsd2l0aChcImZsb2F0X29mX3N0cmluZ1wiKTtcbn1cbiIsIi8qXG5UbyBkZWFsIHdpdGggZWZmZWN0cywgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGludHVpdGl2ZWx5IGNvbXBvc2VkIG9mXG5hIHN0YWNrIG9mIGZpYmVycy4gRWFjaCBmaWJlciBoYXMgYSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb25cbihvbmUtYXJndW1lbnQgSmF2YVNjcmlwdCBmdW5jdGlvbiksIGEgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZFxuYSB0cmlwbGUgb2YgaGFuZGxlcnMsIHdoaWNoIGFyZSBpbnZva2VkIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXNcbihlaXRoZXIgd2l0aCBhIHZhbHVlIG9yIGFuIGV4Y2VwdGlvbikgb3Igd2hlbiBhbiBlZmZlY3QgaXMgcGVyZm9ybWVkLlxuVGhlIGxvdy1sZXZlbCBjb250aW51YXRpb24gb2YgdGhlIHRvcG1vc3QgZmliZXIgKHdoaWNoIGlzIGN1cnJlbnRseVxuZXhlY3V0aW5nKSBpcyBwYXNzZWQgZnJvbSBmdW5jdGlvbiB0byBmdW5jdGlvbiBhcyBhbiBhZGRpdGlvbmFsXG5hcmd1bWVudC4gSXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBpcyBzdG9yZWQgaW5cbltjYW1sX2V4bl9zdGFja10uIEV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFjayB3aGVuXG5lbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuIFRoZW4sIGhhbmRsZXJzIGFuZFxudGhlIHJlbWFpbmluZyBmaWJlcnMgYXJlIHN0b3JlZCBpbiBbY2FtbF9maWJlcl9zdGFja10uIFRvIGluc3RhbGwgYW5cbmVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBpcyBhbiBPQ2FtbCBsaXN0IG9mIGV4Y2VwdGlvbiBoYW5kbGVyc1xudmFyIGNhbWxfZXhuX3N0YWNrID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3B1c2hfdHJhcChoYW5kbGVyKSB7XG4gIGNhbWxfZXhuX3N0YWNrPVswLGhhbmRsZXIsY2FtbF9leG5fc3RhY2tdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfdHJhcCgpIHtcbiAgaWYgKCFjYW1sX2V4bl9zdGFjaykgcmV0dXJuIGZ1bmN0aW9uKHgpe3Rocm93IHg7fVxuICB2YXIgaCA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICBjYW1sX2V4bl9zdGFjaz1jYW1sX2V4bl9zdGFja1syXTtcbiAgcmV0dXJuIGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBoYXMgdGhlIHNoYXBlIHtoLCByOntrLCB4LCBlfX0gd2hlcmUgaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVyc1xuLy8gKHNlZSBlZmZlY3QuanMpIGFuZCBrLCB4IGFuZCBlIGFyZSB0aGUgc2F2ZWQgY29udGludWF0aW9uLFxuLy8gZXhjZXB0aW9uIHN0YWNrIGFuZCBmaWJlciBzdGFjayBvZiB0aGUgcGFyZW50IGZpYmVyLlxudmFyIGNhbWxfZmliZXJfc3RhY2s7XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgaykge1xuICBpZiAoIXN0YWNrKSBjYW1sX3JhaXNlX2NvbnN0YW50XG4gICAgICAgICAgICAgICAgIChjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIikpO1xuICAvLyBVcGRhdGUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggdGhlIHN0YWNrIG9mIGZpYmVycyBpbiBbc3RhY2tdIGluXG4gIC8vIG9yZGVyIHRvIHJlc3VtZSB0aGUgY29udGludWF0aW9uXG4gIGRvIHtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOnN0YWNrWzNdLCByOntrOmssIHg6Y2FtbF9leG5fc3RhY2ssIGU6Y2FtbF9maWJlcl9zdGFja319O1xuICAgIGsgPSBzdGFja1sxXTtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHN0YWNrWzJdO1xuICAgIHN0YWNrID0gc3RhY2tbNF07XG4gIH0gd2hpbGUgKHN0YWNrKVxuICByZXR1cm4gaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfZmliZXJcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIHJlbSA9IGNhbWxfZmliZXJfc3RhY2sucjtcbiAgY2FtbF9leG5fc3RhY2sgPSByZW0ueDtcbiAgY2FtbF9maWJlcl9zdGFjayA9IHJlbS5lO1xuICByZXR1cm4gcmVtLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGVyZm9ybV9lZmZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGNvbnQsIGswKSB7XG4gIC8vIEFsbG9jYXRlIGEgY29udGludWF0aW9uIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBvbmVcbiAgaWYgKCFjb250KSBjb250ID0gWzI0NSAvKmNvbnRpbnVhdGlvbiovLCAwXTtcbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2ZpYmVyX3N0YWNrLmhbM107XG4gIC8vIENvbnMgdGhlIGN1cnJlbnQgZmliZXIgb250byB0aGUgY29udGludWF0aW9uOlxuICAvLyAgIGNvbnQgOj0gQ29ucyAoaywgZXhuX3N0YWNrLCBoYW5kbGVycywgIWNvbnQpXG4gIGNvbnRbMV0gPSBbMCxrMCxjYW1sX2V4bl9zdGFjayxjYW1sX2ZpYmVyX3N0YWNrLmgsY29udFsxXV07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2hhbmRsZXIoZWZmLGNvbnQsazEsazEpXG4gICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLFtlZmYsY29udCxrMSxrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9maWJlcl9zdGFjaywgY2FtbF9jYWxsX2dlbiwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVyblxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIGZ1bmN0aW9uIGNhbGwoaSwgeCkge1xuICAgIHZhciBmPWNhbWxfZmliZXJfc3RhY2suaFtpXTtcbiAgICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2NhbWxfY2FsbF9nZW4oZixhcmdzKVxuICAgICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpO1xuICB9XG4gIGZ1bmN0aW9uIGh2YWwoeCkge1xuICAgIC8vIENhbGwgW2h2XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMSwgeCk7XG4gIH1cbiAgZnVuY3Rpb24gaGV4bihlKSB7XG4gICAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgyLCBlKTtcbiAgfVxuICByZXR1cm4gWzAsIGh2YWwsIFswLCBoZXhuLCAwXSwgWzAsIGh2LCBoeCwgaGZdLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCkge1xuICB2YXIgc3RhY2s9Y29udFsxXTtcbiAgY29udFsxXT0wO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Yyhjb250LCBodmFsLCBoZXhuLCBoZWZmKSB7XG4gIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgc3RhY2tbM10gPSBbMCwgaHZhbCwgaGV4biwgaGVmZl07XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1xuZnVuY3Rpb24gY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fbmV3XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcodW5pdCl7XG4gICAgcmV0dXJuIHtjb25kaXRpb246MX07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3dhaXQodCxtdXRleHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3RcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIUlmOiBlZmZlY3RzXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJFZmZlY3QgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0ZpbGUoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLHttb2RlOm1vZGV9KTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucm1kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNEaXJlY3RvcnkoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGIgPSB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICAgIHRoaXMuZnMudW5saW5rU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gYjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZiwgcmFpc2VfdW5peCkge1xuICB2YXIgY29uc3RzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGtleSBpbiBmKXtcbiAgICBzd2l0Y2goa2V5KXtcbiAgICBjYXNlIFwicmRvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1JET05MWTsgYnJlYWs7XG4gICAgY2FzZSBcIndyb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19XUk9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJhcHBlbmRcIiAgOlxuICAgICAgcmVzIHw9IGNvbnN0cy5PX1dST05MWSB8IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjcmVhdGVcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0NSRUFUOyAgICBicmVhaztcbiAgICBjYXNlIFwidHJ1bmNhdGVcIiA6IHJlcyB8PSBjb25zdHMuT19UUlVOQzsgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4Y2xcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fRVhDTDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiaW5hcnlcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTsgICBicmVhaztcbiAgICBjYXNlIFwidGV4dFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19URVhUOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm5vbmJsb2NrXCIgOiByZXMgfD0gY29uc3RzLk9fTk9OQkxPQ0s7IGJyZWFrO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHZhciBmZCA9IHRoaXMuZnMub3BlblN5bmModGhpcy5ubShuYW1lKSwgcmVzKTtcbiAgICB2YXIgaXNDaGFyYWN0ZXJEZXZpY2UgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0NoYXJhY3RlckRldmljZSgpO1xuICAgIGYuaXNDaGFyYWN0ZXJEZXZpY2UgPSBpc0NoYXJhY3RlckRldmljZTtcbiAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLm9wZW5kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJhaXNlX25vZGVqc19lcnJvciA9IGZ1bmN0aW9uKGVyciwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpIHtcbiAgICB2YXIgYXJncyA9IG1ha2VfdW5peF9lcnJfYXJncyhlcnIuY29kZSwgZXJyLnN5c2NhbGwsIGVyci5wYXRoLCBlcnIuZXJybm8pO1xuICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0c19mcm9tX2pzID0gZnVuY3Rpb24oanNfc3RhdHMpIHtcbiAgLyogPT09VW5peC5maWxlX2tpbmQ9PT1cbiAgICogdHlwZSBmaWxlX2tpbmQgPVxuICAgKiAgICAgU19SRUcgICAgICAgICAgICAgICAgICAgICAgICgqKiBSZWd1bGFyIGZpbGUgKilcbiAgICogICB8IFNfRElSICAgICAgICAgICAgICAgICAgICAgICAoKiogRGlyZWN0b3J5ICopXG4gICAqICAgfCBTX0NIUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIENoYXJhY3RlciBkZXZpY2UgKilcbiAgICogICB8IFNfQkxLICAgICAgICAgICAgICAgICAgICAgICAoKiogQmxvY2sgZGV2aWNlICopXG4gICAqICAgfCBTX0xOSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFN5bWJvbGljIGxpbmsgKilcbiAgICogICB8IFNfRklGTyAgICAgICAgICAgICAgICAgICAgICAoKiogTmFtZWQgcGlwZSAqKVxuICAgKiAgIHwgU19TT0NLICAgICAgICAgICAgICAgICAgICAgICgqKiBTb2NrZXQgKilcbiAgICovXG4gIHZhciBmaWxlX2tpbmQ7XG4gIGlmIChqc19zdGF0cy5pc0ZpbGUoKSkge1xuICAgIGZpbGVfa2luZCA9IDA7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVfa2luZCA9IDE7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDI7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMztcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgZmlsZV9raW5kID0gNDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0ZJRk8oKSkge1xuICAgIGZpbGVfa2luZCA9IDU7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTb2NrZXQoKSkge1xuICAgIGZpbGVfa2luZCA9IDY7XG4gIH1cbiAgLyogPT09VW5peC5zdGF0cz09PVxuICAgKiB0eXBlIHN0YXRzID1cbiAgICogIHsgc3RfZGV2IDogaW50OyAgICAgICAgICAgICAgICgqKiBEZXZpY2UgbnVtYmVyICopXG4gICAqICAgIHN0X2lubyA6IGludDsgICAgICAgICAgICAgICAoKiogSW5vZGUgbnVtYmVyICopXG4gICAqICAgIHN0X2tpbmQgOiBmaWxlX2tpbmQ7ICAgICAgICAoKiogS2luZCBvZiB0aGUgZmlsZSAqKVxuICAgKiAgICBzdF9wZXJtIDogZmlsZV9wZXJtOyAgICAgICAgKCoqIEFjY2VzcyByaWdodHMgKilcbiAgICogICAgc3RfbmxpbmsgOiBpbnQ7ICAgICAgICAgICAgICgqKiBOdW1iZXIgb2YgbGlua3MgKilcbiAgICogICAgc3RfdWlkIDogaW50OyAgICAgICAgICAgICAgICgqKiBVc2VyIGlkIG9mIHRoZSBvd25lciAqKVxuICAgKiAgICBzdF9naWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIEdyb3VwIElEIG9mIHRoZSBmaWxlJ3MgZ3JvdXAgKilcbiAgICogICAgc3RfcmRldiA6IGludDsgICAgICAgICAgICAgICgqKiBEZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSkgKilcbiAgICogICAgc3Rfc2l6ZSA6IGludDsgICAgICAgICAgICAgICgqKiBTaXplIGluIGJ5dGVzICopXG4gICAqICAgIHN0X2F0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBhY2Nlc3MgdGltZSAqKVxuICAgKiAgICBzdF9tdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUgKilcbiAgICogICAgc3RfY3RpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IHN0YXR1cyBjaGFuZ2UgdGltZSAqKVxuICAgKiAgfVxuICAgKi9cbiAgcmV0dXJuIEJMT0NLKFxuICAgIDAsXG4gICAganNfc3RhdHMuZGV2LFxuICAgIGpzX3N0YXRzLmlubyxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAganNfc3RhdHMuc2l6ZSxcbiAgICBqc19zdGF0cy5hdGltZU1zLFxuICAgIGpzX3N0YXRzLm10aW1lTXMsXG4gICAganNfc3RhdHMuY3RpbWVNc1xuICApO1xufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKCkge1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGZChmZCwgZmxhZ3Mpe1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5mZCA9IGZkO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxOb2RlRmQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRmQ7XG5cbk1sTm9kZUZkLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5mdHJ1bmNhdGVTeW5jKHRoaXMuZmQsbGVufDApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYSxidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gICAgcmV0dXJuIHJlYWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmNsb3NlU3luYyh0aGlzLmZkKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRmQoKXtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICBpZihmbGFncy5uYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIHZhciBmZDIgPSBmcy5vcGVuU3luYyhmbGFncy5uYW1lLCBcInJzXCIpO1xuICAgICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZDIsIGZsYWdzKTtcbiAgICB9IGNhdGNoKGUpIHsgIH1cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIER1bW15IGZpbGVzeXN0ZW1cblxuLy9Qcm92aWRlczogY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKXtcbiAgcmV0dXJuIChuYW1lLnNsaWNlKC0xKSAhPT0gXCIvXCIpID8gKG5hbWUgKyBcIi9cIikgOiBuYW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QpXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZCgpLnJlcGxhY2UoL1xcXFwvZywnLycpO1xuZWxzZVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9ICBcIi9zdGF0aWNcIjtcbmNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKGNhbWxfY3VycmVudF9kaXIpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9yb290XG4vL1JlcXVpcmVzOiBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX2dldF9yb290KHBhdGgpe1xuICB2YXIgeCA9IHBhdGhfaXNfYWJzb2x1dGUocGF0aCk7XG4gIGlmICgheCkgcmV0dXJuO1xuICByZXR1cm4geFswXSArIFwiL1wifVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jvb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2V0X3Jvb3QsIGNhbWxfY3VycmVudF9kaXIsIGNhbWxfZmFpbHdpdGhcbnZhciBjYW1sX3Jvb3QgPSBjYW1sX2dldF9yb290KGNhbWxfY3VycmVudF9kaXIpIHx8IGNhbWxfZmFpbHdpdGgoXCJ1bmFibGUgdG8gY29tcHV0ZSBjYW1sX3Jvb3RcIik7XG5cblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKXsgIH1cblxuLy9Qcm92aWRlczogcGF0aF9pc19hYnNvbHV0ZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpIHtcbiAgZnVuY3Rpb24gcG9zaXgocGF0aCkge1xuICAgIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJy8nKSByZXR1cm4gW1wiXCIsIHBhdGguc3Vic3RyaW5nKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9IC9eKFthLXpBLVpdOnxbXFxcXC9dezJ9W15cXFxcL10rW1xcXFwvXStbXlxcXFwvXSspPyhbXFxcXC9dKT8oW1xcc1xcU10qPykkLztcbiAgICB2YXIgcmVzdWx0ID0gc3BsaXREZXZpY2VSZS5leGVjKHBhdGgpO1xuICAgIHZhciBkZXZpY2UgPSByZXN1bHRbMV0gfHwgJyc7XG4gICAgdmFyIGlzVW5jID0gQm9vbGVhbihkZXZpY2UgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gJzonKTtcblxuICAgIC8vIFVOQyBwYXRocyBhcmUgYWx3YXlzIGFic29sdXRlXG4gICAgaWYgKEJvb2xlYW4ocmVzdWx0WzJdIHx8IGlzVW5jKSkge1xuICAgICAgdmFyIHJvb3QgPSAocmVzdWx0WzFdIHx8ICcnKTtcbiAgICAgIHZhciBzZXAgPSAocmVzdWx0WzJdIHx8ICcnKTtcbiAgICAgIHJldHVybiBbcm9vdCwgcGF0aC5zdWJzdHJpbmcocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gd2luMzIgOiBwb3NpeDtcbiAgfVxuICBlbHNlIHJldHVybiBwb3NpeFxufVxudmFyIHBhdGhfaXNfYWJzb2x1dGUgPSBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3BhdGhcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX21ha2VfcGF0aCAobmFtZSkge1xuICBuYW1lPWNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiggIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkgKVxuICAgIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdChcIi9cIik7XG4gIHZhciBuY29tcCA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGk8Y29tcC5sZW5ndGg7IGkrKyl7XG4gICAgc3dpdGNoKGNvbXBbaV0pe1xuICAgIGNhc2UgXCIuLlwiOiBpZihuY29tcC5sZW5ndGg+MSkgbmNvbXAucG9wKCk7IGJyZWFrO1xuICAgIGNhc2UgXCIuXCI6IGJyZWFrO1xuICAgIGNhc2UgXCJcIjogYnJlYWs7XG4gICAgZGVmYXVsdDogbmNvbXAucHVzaChjb21wW2ldKTticmVha1xuICAgIH1cbiAgfVxuICBuY29tcC51bnNoaWZ0KGNvbXAwWzBdKTtcbiAgbmNvbXAub3JpZyA9IG5hbWU7XG4gIHJldHVybiBuY29tcDtcbn1cblxuLy9Qcm92aWRlczpqc29vX21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIE1sTm9kZURldmljZSwgY2FtbF9yb290LCBmc19ub2RlX3N1cHBvcnRlZFxudmFyIGpzb29fbW91bnRfcG9pbnQgPSBbXVxuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShjYW1sX3Jvb3QpfSk7XG59IGVsc2Uge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn1cbmpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpcIi9zdGF0aWMvXCIsIGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKFwiL3N0YXRpYy9cIil9KTtcblxuLy9Qcm92aWRlczpjYW1sX2xpc3RfbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpe1xuICB2YXIgcHJldiA9IDBcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspe1xuICAgIHZhciBvbGQgPSBwcmV2O1xuICAgIHByZXYgPSBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc29vX21vdW50X3BvaW50W2ldLnBhdGgpLCBvbGRdXG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IHBhdGguam9pbihcIi9cIik7XG4gIHZhciBuYW1lX3NsYXNoID0gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKTtcbiAgdmFyIHJlcztcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbSA9IGpzb29fbW91bnRfcG9pbnRbaV07XG4gICAgaWYobmFtZV9zbGFzaC5zZWFyY2gobS5wYXRoKSA9PSAwXG4gICAgICAgJiYgKCFyZXMgfHwgcmVzLnBhdGgubGVuZ3RoIDwgbS5wYXRoLmxlbmd0aCkpXG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICB9XG4gIGlmKCAhcmVzICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgcm9vdCA9IGNhbWxfZ2V0X3Jvb3QobmFtZSk7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5tYXRjaCgvXlthLXpBLVpdOlxcLyQvKSl7XG4gICAgICB2YXIgbSA9IHtwYXRoOnJvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2Uocm9vdCl9O1xuICAgICAganNvb19tb3VudF9wb2ludC5wdXNoKG0pO1xuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgICB9XG4gIH1cbiAgaWYoIHJlcyApIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsZil7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOm5hbWUsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UobmFtZSxmKX0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAgdmFyIGlkeCA9IC0xO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKylcbiAgICBpZihqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT0gbmFtZSkgaWR4ID0gaTtcbiAgaWYoaWR4ID4gLTEpIGpzb29fbW91bnRfcG9pbnQuc3BsaWNlKGlkeCwxKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0Y3dkXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfY3VycmVudF9kaXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jaGRpclxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIGlmKHJvb3QucmVzdCkgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhkaXIpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9hX2RpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2FfZGlyKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2ZpbGVfZXhpc3RzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfZmlsZV9leGlzdHMgKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfYV9kaXIsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5yZWFkZGlyKHJvb3QucmVzdCk7XG4gIHZhciBsID0gbmV3IEFycmF5KGEubGVuZ3RoICsgMSk7XG4gIGxbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylcbiAgICBsW2krMV0gPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbW92ZShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIG9rID0gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCk7XG4gIGlmKG9rID09IDApIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbmFtZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbmFtZShvLG4pe1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYob19yb290LmRldmljZSAhPSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IGNhbm5vdCBtb3ZlIGZpbGUgYmV0d2VlbiB0d28gZmlsZXN5c3RlbVwiKTtcbiAgaWYoIW9fcm9vdC5kZXZpY2UucmVuYW1lKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IG5vIGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19ta2RpcihuYW1lLCBwZXJtKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub3RfYV9kaXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3JtZGlyKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ybWRpcihyb290LnJlc3QpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZSh2ZmQsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW1zLCBwb3MpIHtcbiAgLy8gdmFyIGRhdGEgPSBjYW1sX3N5c19mZHNbdmZkXTtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfYmFfbWFwX2ZpbGUgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX21hcF9maWxlXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlKGFyZ3YsYXJnbil7XG4gIHJldHVybiBjYW1sX2JhX21hcF9maWxlKGFyZ3ZbMF0sYXJndlsxXSxhcmd2WzJdLGFyZ3ZbM10sYXJndls0XSxhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsY29udGVudCl7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSlcbiAgICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KTtcbiAgZWxzZSB7XG4gICAgaWYoIWdsb2JhbFRoaXMuY2FtbF9mc190bXApIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wLnB1c2goe25hbWU6bmFtZSxjb250ZW50OmNvbnRlbnR9KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mc19pbml0XG4vL1JlcXVpcmVzOiBqc29vX2NyZWF0ZV9maWxlXG5mdW5jdGlvbiBjYW1sX2ZzX2luaXQgKCl7XG4gIHZhciB0bXA9Z2xvYmFsVGhpcy5jYW1sX2ZzX3RtcFxuICBpZih0bXApe1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0bXAubGVuZ3RoOyBpKyspe1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSx0bXBbaV0uY29udGVudCk7XG4gICAgfVxuICB9XG4gIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSA9IGpzb29fY3JlYXRlX2ZpbGU7XG4gIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZighIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKSBjYW1sX2ZhaWx3aXRoKFwiY2Fubm90IHJlZ2lzdGVyIGZpbGVcIik7XG4gIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKHJvb3QucmVzdCxjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpO1xuICB2YXIgY29udGVudCA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY29udGVudCk7XG4gIHJldHVybiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVhZF9maWxlX2NvbnRlbnRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVhZF9maWxlX2NvbnRlbnQgKG5hbWUpIHtcbiAgdmFyIG5hbWUgPSAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIik/Y2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTpuYW1lO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3Qse3Jkb25seToxfSk7XG4gICAgdmFyIGxlbiAgPSBmaWxlLmxlbmd0aCgpO1xuICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIGZpbGUucmVhZCgwLGJ1ZiwwLGxlbik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGJ1ZilcbiAgfVxuICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ210aW1lXG4vL0FsaWFzOiB1bml4X2dtdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9ta3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gY2FtbF91bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuICAgIHJldHVybiB0dHkuaXNhdHR5KGZpbGVEZXNjcmlwdG9yKT8xOjA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLCBcIkVBQ0NFU1wiLCBcIkVBR0FJTlwiLCBcIkVCQURGXCIsIFwiRUJVU1lcIiwgXCJFQ0hJTERcIiwgXCJFREVBRExLXCIsIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLCBcIkVGQVVMVFwiLCBcIkVGQklHXCIsIFwiRUlOVFJcIiwgXCJFSU5WQUxcIiwgXCJFSU9cIiwgXCJFSVNESVJcIiwgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIiwgXCJFTkFNRVRPT0xPTkdcIiwgXCJFTkZJTEVcIiwgXCJFTk9ERVZcIiwgXCJFTk9FTlRcIiwgXCJFTk9FWEVDXCIsIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsIFwiRU5PU1BDXCIsIFwiRU5PU1lTXCIsIFwiRU5PVERJUlwiLCBcIkVOT1RFTVBUWVwiLCBcIkVOT1RUWVwiLCBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIiwgXCJFUElQRVwiLCBcIkVSQU5HRVwiLCBcIkVST0ZTXCIsIFwiRVNQSVBFXCIsIFwiRVNSQ0hcIiwgXCJFWERFVlwiLCBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIiwgXCJFQUxSRUFEWVwiLCBcIkVOT1RTT0NLXCIsIFwiRURFU1RBRERSUkVRXCIsIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsIFwiRU5PUFJPVE9PUFRcIiwgXCJFUFJPVE9OT1NVUFBPUlRcIiwgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsIFwiRVBGTk9TVVBQT1JUXCIsIFwiRUFGTk9TVVBQT1JUXCIsIFwiRUFERFJJTlVTRVwiLCBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLCBcIkVORVRVTlJFQUNIXCIsIFwiRU5FVFJFU0VUXCIsIFwiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRVNFVFwiLCBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsIFwiRU5PVENPTk5cIiwgXCJFU0hVVERPV05cIiwgXCJFVE9PTUFOWVJFRlNcIiwgXCJFVElNRURPVVRcIiwgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIiwgXCJFSE9TVFVOUkVBQ0hcIiwgXCJFTE9PUFwiLCBcIkVPVkVSRkxPV1wiXG5dO1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5XG4gICAgfVxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIHZhcmlhbnRzLCBmYWxsYmFjayB0byBFVU5LTk9XTkVSUihpbnQpXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIGVycm5vKTtcbiAgfVxuICB2YXIgYXJncyA9IFtcbiAgICB2YXJpYW50LFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHN5c2NhbGwgfHwgXCJcIiksXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aCB8fCBcIlwiKVxuICBdO1xuICByZXR1cm4gYXJncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X3N0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9zdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbHN0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X2xzdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmsodG9fZGlyLCBzcmNfcm9vdC5yZXN0LCBkc3Rfcm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JlYWRsaW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9yZWFkbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5yZWFkbGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3VubGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dWlkKHVuaXQpIHtcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQpe1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKCk7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9oYXNfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X2hhc19zeW1saW5rKHVuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCk/MTowXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9vcGVuZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UocGF0aCk7XG4gIGlmICghcm9vdC5kZXZpY2Uub3BlbmRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfb3BlbmRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHZhciBkaXJfaGFuZGxlID0gcm9vdC5kZXZpY2Uub3BlbmRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiB7IHBvaW50ZXIgOiBkaXJfaGFuZGxlLCBwYXRoOiBwYXRoIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgICAgZW50cnkgPSBkaXJfaGFuZGxlLnBvaW50ZXIucmVhZFN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwicmVhZGRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxuICBpZiAoZW50cnkgPT09IG51bGwpIHtcbiAgICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhlbnRyeS5uYW1lKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfY2xvc2VkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKSB7XG4gIHRyeSB7XG4gICAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZXdpbmRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpciwgY2FtbF91bml4X29wZW5kaXJcbi8vQWxpYXM6IHVuaXhfcmV3aW5kZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmV3aW5kZGlyKGRpcl9oYW5kbGUpIHtcbiAgY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xuICB2YXIgbmV3X2Rpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihkaXJfaGFuZGxlLnBhdGgpO1xuICBkaXJfaGFuZGxlLnBvaW50ZXIgPSBuZXdfZGlyX2hhbmRsZS5wb2ludGVyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRmaXJzdFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfb3BlbmRpciwgY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kZmlyc3RcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kZmlyc3QocGF0aCkge1xuICAvLyBUaGUgV2luZG93cyBjb2RlIGFkZHMgdGhpcyBnbG9iIHRvIHRoZSBwYXRoLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSBpdFxuICB2YXIgcGF0aF9qcyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBhdGgpO1xuICBwYXRoX2pzID0gcGF0aF9qcy5yZXBsYWNlKC8oXnxbXFxcXFxcL10pXFwqXFwuXFwqJC8sIFwiXCIpO1xuICBwYXRoID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aF9qcyk7XG4gIC8vICouKiBpcyBub3cgc3RyaXBwZWRcbiAgdmFyIGRpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKTtcbiAgdmFyIGZpcnN0X2VudHJ5ID0gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG4gIC8vIFRoZSBXaW5kb3dzIGJpbmRpbmdzIHR5cGUgZGlyX2hhbmRsZSBhcyBhbiBgaW50YCBidXQgaXQncyBub3QgaW4gSlNcbiAgcmV0dXJuIFswLCBmaXJzdF9lbnRyeSwgZGlyX2hhbmRsZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kbmV4dFxuLy9SZXF1aXJlczogY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kbmV4dFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRuZXh0KGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGNsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vQWxpYXM6IHdpbl9maW5kY2xvc2VcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kY2xvc2UoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nICgpIHtyZXR1cm4gMDt9XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkgJiYgIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcblxuICB2YXIgYSA9IHRoaXMucmVhZGRpcihuYW1lKTtcbiAgdmFyIGMgPSBmYWxzZTtcbiAgdmFyIGkgPSAwO1xuICByZXR1cm4geyByZWFkU3luYyA6IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGMpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihpID09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgZW50cnkgPSBhW2ldO1xuICAgIGkrKztcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9XG4gIH0pXG4gICAgLCBjbG9zZVN5bmM6IChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoYykge1xuICAgICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjID0gdHJ1ZTtcbiAgICAgIGEgPSBbXTtcbiAgICB9KVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWdpc3Rlcj0gZnVuY3Rpb24gKG5hbWUsY29udGVudCl7XG4gIHZhciBmaWxlO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV0pIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gIGlmKGNhbWxfaXNfbWxfYnl0ZXMoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNvbnRlbnQpO1xuICBpZihjYW1sX2lzX21sX3N0cmluZyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9hcnJheShjb250ZW50KSk7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudC50b1N0cmluZykge1xuICAgIHZhciBieXRlcyA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSkpO1xuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShieXRlcyk7XG4gIH1cbiAgaWYoZmlsZSl7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICB9XG4gIGVsc2UgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbk1sRmFrZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdmFyIG9sZCA9IHRoaXMuZGF0YTtcbiAgdGhpcy5kYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICBjYW1sX2JsaXRfYnl0ZXMob2xkLCAwLCB0aGlzLmRhdGEsIDAsIGxlbik7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aCh0aGlzLmRhdGEpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgdmFyIG5ld19zdHIgPSBjYW1sX2NyZWF0ZV9ieXRlcyhvZmZzZXQgKyBsZW4pO1xuICAgIHZhciBvbGRfZGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGRfZGF0YSwgMCwgdGhpcy5kYXRhLCAwLCBjbGVuKTtcbiAgfVxuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHRoaXMuZGF0YSwgb2Zmc2V0LCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICB9XG4gIGlmKGxlbikge1xuICAgIHZhciBkYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICBidWYuc2V0KGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoZGF0YSksIHBvcyk7XG4gIH1cbiAgcmV0dXJuIGxlblxufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkX291dChmZCxmbGFncykge1xuICBNbEZha2VGaWxlLmNhbGwodGhpcywgY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICB0aGlzLmxvZyA9IChmdW5jdGlvbiAocykgeyByZXR1cm4gMCB9KTtcbiAgaWYoZmQgPT0gMSAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gIGVsc2UgaWYoZmQgPT0gMiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmVycm9yO1xuICBlbHNlIGlmKHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZ1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCB9XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmxvZykge1xuICAgIGlmKGxlbiA+IDBcbiAgICAgICAmJiBwb3MgPj0gMFxuICAgICAgICYmIHBvcytsZW4gPD0gYnVmLmxlbmd0aFxuICAgICAgICYmIGJ1Zltwb3MrbGVuLTFdID09IDEwKVxuICAgICAgbGVuIC0tO1xuICAgIC8vIERvIG5vdCBvdXRwdXQgdGhlIGxhc3QgXFxuIGlmIHByZXNlbnRcbiAgICAvLyBhcyBjb25zb2xlIGxvZ2dpbmcgZGlzcGxheSBhIG5ld2xpbmUgYXQgdGhlIGVuZFxuICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgc3JjLCAwLCBsZW4pO1xuICAgIHRoaXMubG9nKHNyYy50b1V0ZjE2KCkpO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGlzIHdyaXRlIG9ubHlcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvZyA9IHVuZGVmaW5lZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkKG5hbWUsIGZpbGUsZmxhZ3MpIHtcbiAgdGhpcy5maWxlID0gZmlsZTtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuXG5NbEZha2VGZC5wcm90b3R5cGUuZXJyX2Nsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5uYW1lICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGggKClcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS53cml0ZShvZmZzZXQsYnVmLHBvcyxsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZmlsZSA9IHVuZGVmaW5lZDtcbn1cbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gIC8vIEZvciBudW0gPCAxLjVcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC5cbiAgLy8gV2UgYWRkICsyIHRvIHRoZSBhcnJheSBsZW5ndGg6XG4gIC8vIC0gKzEgZm9yIHRoZSB0YWdcbiAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBsZW5ndGhfbmF0XG5mdW5jdGlvbiBsZW5ndGhfbmF0KHgpIHtcbiAgcmV0dXJuIHguZGF0YS5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfZ2V0KCkge1xuICBpZihjYW1sX2dyX3N0YXRlKSB7XG4gICAgcmV0dXJuIGNhbWxfZ3Jfc3RhdGU7XG4gIH1cbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGU9Y3R4O1xuICBjYW1sX2dyX3N0YXRlX2luaXQoKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbyl7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyKGV2ZW50X25hbWUsIGV2ZW50X3RhZywgZXZlbnRfdHlwZSkge1xuICBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCArPSAxO1xuICByZXR1cm4gWzAsIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4LCBldmVudF9uYW1lLCBldmVudF90eXBlLCBldmVudF90YWddO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZShldmVudCwgZXZlbnRfY29udGVudCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2UoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICBpZihjYW1sX2RlY29tcHJlc3NfaW5wdXQpIHtcbiAgICAgIHZhciBkYXRhID0gcmVhZGVyLnJlYWR1aW50OGFycmF5KGRhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRfZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IGNhbWxfZGVjb21wcmVzc19pbnB1dChkYXRhLCByZXMpO1xuICAgICAgdmFyIHJlYWRlciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKHJlcywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29tcHJlc3NlZCBvYmplY3QsIGNhbm5vdCBkZWNvbXByZXNzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA+PSA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDE2XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIHN3aXRjaChyLnJlYWQzMnUoKSl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGRhdGFfbGVuID0gci5yZWFkMzJ1KCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgICBicmVha1xuICB9XG4gIHJldHVybiBoZWFkZXJfbGVuIC0gY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplICsgZGF0YV9sZW47XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLk1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS4gSXQgc2VlbXMgYmV0dGVyIHRvXG4gICAgICAgICAgLy8gc3lzdGVtYXRpY2FsbHkgZmFpbCBvbiBtYXJzaGFsbGluZy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIit0eXBlX29mX3YrXCIpXCIpO1xuICAgICAgICAgIC8vICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIC8vICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQiAvKmNzdC5DT0RFX0RPVUJMRV9CSUcqLyk7XG4gICAgICAgICAgLy8gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbaV0pfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmRzXG52YXIgY2FtbF9zeXNfZmRzID0gbmV3IEFycmF5KDMpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUpIGZpbGUuY2xvc2UoKTtcbiAgZGVsZXRlIGNhbWxfc3lzX2Zkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUsaWR4KSB7XG4gIGlmKGlkeCA9PSB1bmRlZmluZWQpe1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIH1cbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSBmaWxlO1xuICByZXR1cm4gaWR4IHwgMDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZmlsZShmZCwgZmxhZ3MpIHtcbiAgICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpXG4gIH1cbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDAse3Jkb25seToxLGFsdG5hbWU6XCIvZGV2L3N0ZGluXCIsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAwKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDEse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAxKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDIse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAyKTtcbn0pKClcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZShjaGFuaWQsIG5hbWUpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ubmFtZSA9IG5hbWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vcGVuZWQgPSBmYWxzZTtcbiAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vdXRwdXQgPSAoZnVuY3Rpb24gKHMpIHtmKHMpfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWZpbGwgKGNoYW4pIHtcbiAgaWYoY2hhbi5yZWZpbGwgIT0gbnVsbCl7XG4gICAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gICAgdmFyIHN0cl9hID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyKTtcbiAgICBpZiAoc3RyX2EubGVuZ3RoID09IDApIHtcbiAgICAgIGNoYW4ucmVmaWxsID0gbnVsbFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyLmxlbmd0aCA8IGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCl7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsY2hhbi5idWZmZXJfbWF4KTtcbiAgICAgIGNoYW4ub2Zmc2V0ICs9IHN0cl9hLmxlbmd0aDtcbiAgICAgIGNoYW4uYnVmZmVyX21heCArPSBzdHJfYS5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBucmVhZCA9IGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgY2hhbi5idWZmZXJfbWF4LCBjaGFuLmJ1ZmZlci5sZW5ndGggLSBjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgIGNoYW4ub2Zmc2V0ICs9IG5yZWFkO1xuICAgIGNoYW4uYnVmZmVyX21heCArPSBucmVhZDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheSAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrIChjaGFuaWQsIGJhLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgbiA9IGw7XG4gIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gIGlmKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbDtcbiAgfVxuICBlbHNlIGlmKGF2YWlsID4gMCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZihuID4gYXZhaWwpIG4gPSBhdmFpbDtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbiksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbjtcbiAgfVxuICByZXR1cm4gbiB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGhlYWRlciA9IG5ldyBVaW50OEFycmF5KGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGZ1bmN0aW9uIGJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBuKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHdoaWxlKHIgPCBuKXtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgICAgICBicmVhaztcbiAgICAgIGJ1ZmZlcltvZmZzZXQrcl0gPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdmFyIHIgPSBibG9jayhoZWFkZXIsIDAsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGlmKHIgPT0gMClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIGVsc2UgaWYgKHIgPCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0XCIpO1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoY2FtbF9ieXRlc19vZl9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLDApO1xuICB2YXIgciA9IGJsb2NrKGJ1ZiwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplLCBsZW4pXG4gIGlmKHIgPCBsZW4pXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0IFwiICsgciArIFwiICBcIiArIGxlbik7XG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcFxuLy9SZXF1aXJlczogY2FtbF9pbnB1dF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAoYykge1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZShjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICB9XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKyl7XG4gICAgcmVzID0gKHJlcyA8PCA4KSArIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGlmKHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heFxuICAgICAmJiBwb3MgPD0gY2hhbi5vZmZzZXRcbiAgICAgJiYgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSBjaGFuLmJ1ZmZlcl9tYXggLSAoY2hhbi5vZmZzZXQgLSBwb3MpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3NfaW4oY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBwID0gY2hhbi5idWZmZXJfY3VycjtcbiAgZG8ge1xuICAgIGlmKHAgPj0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksMCk7XG4gICAgICAgIHAgLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4IC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgfVxuICAgICAgaWYoY2hhbi5idWZmZXJfbWF4ID49IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsIChjaGFuKTtcbiAgICAgIGlmKHByZXZfbWF4ID09IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGNoYW4uYnVmZmVyW3ArK10gIT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyX2N1cnIgPT0gMCkgcmV0dXJuIDA7XG4gIGlmKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3Vycik7XG4gIH1cbiAgY2hhbi5vZmZzZXQgKz0gY2hhbi5idWZmZXJfY3VycjtcbiAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF90YVxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoID4gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCk7XG4gICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgIGNoYW4uYnVmZmVyID0gYlxuICB9XG4gIHN3aXRjaChjaGFuLmJ1ZmZlcmVkKXtcbiAgY2FzZSAwOiAvLyBVbmJ1ZmZlcmVkXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWtcbiAgY2FzZSAxOiAvLyBCdWZmZXJlZCAodGhlIGRlZmF1bHQpXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVhaztcbiAgY2FzZSAyOiAvLyBCdWZmZXJlZCAob25seSBmb3Igc3Rkb3V0IGFuZCBzdGRlcnIpXG4gICAgdmFyIGlkID0gYnVmZmVyLmxhc3RJbmRleE9mKDEwKVxuICAgIGlmKGlkIDwgMCkge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KDAsIGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aCAtIGlkIC0gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXkoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICAvLyBBIGZpZWxkIHdhcyBhZGRlZCBpbiBPQ2FtbCA0LjEyLiBJdCBpcyB1bmxpa2VseSB0byBiZSBhbiBpc3N1ZSB0b1xuICAvLyByZXR1cm4gdG9vIG1hbnkgZmllbGRzIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sLlxuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3NldFxuZnVuY3Rpb24gY2FtbF9nY19zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZ2V0XG5mdW5jdGlvbiBjYW1sX2djX2dldCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc2V0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVxudmFyIGFsbF9maW5hbGl6ZXJzID0gbmV3IGdsb2JhbFRoaXMuU2V0KClcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUgKGNiLCBhKSB7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpe2FsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTsgY2IoMCk7IHJldHVybjt9KTtcbiAgICB4LnJlZ2lzdGVyKGEseCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZSAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdGFydFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0YXJ0KHJhdGUsc3RhY2tfc2l6ZSx0cmFja2VyKXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdG9wXG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RvcCh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX2Rpc2NhcmQodCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy8vLy8vLy8vIENPUkVcblxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxudmFyIGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG4vL1Byb3ZpZGVzOiBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG5cbi8vUHJvdmlkZXM6IGNvcmVfdGltZV9uc19mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfdGltZV9uc19mb3JtYXQodGltZSxmb3JtYXQpe1xuICB2YXIgZCA9IG5ldyBEYXRlKHRpbWUgKiAxMDAwKTtcbiAgdmFyIGZvcm1hdGpzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmb3JtYXQpO1xuICB2YXIganN0cmluZyA9IGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lKGZvcm1hdGpzLCBkKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanN0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfY29tcGFjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfY29tcGFjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX2hlYXBfY2h1bmtzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfY2h1bmtzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19taW5vcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3Byb21vdGVkX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX3Byb21vdGVkX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY190b3BfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY190b3BfaGVhcF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzXG5mdW5jdGlvbiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2tcbmZ1bmN0aW9uIGNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrKHgpe1xuICByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX21kNV9mZFxuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4sIGNhbWxfbWQ1X2NoYW4sIGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuZnVuY3Rpb24gY29yZV9tZDVfZmQoZmQpe1xuICAgIHZhciBpYyA9IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gY2FtbF9tZDVfY2hhbihpYywgLTEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGNhbWxfbWxfY2xvc2VfY2hhbm5lbChpYyk7XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21kNV9zdHJpbmcsIGNhbWxfYmxpdF9zdHJpbmcsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmcoYnVmLCBvZnMsIGxlbiwgcmVzKXtcbiAgICB2YXIgYnl0ZXMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKGJ1Ziwgb2ZzLCBieXRlcywgMCwgbGVuKTtcbiAgICB2YXIgcmVzMiA9IGNhbWxfbWQ1X3N0cmluZyhjYW1sX3N0cmluZ19vZl9ieXRlcyhieXRlcyksIDAsIGxlbik7XG4gICAgY2FtbF9ibGl0X3N0cmluZyhyZXMyLCAwLCByZXMsIDAsIDE2KTtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9CaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBiaWdzdHJpbmdfZGVzdHJveV9zdHViKHZfYnN0cikge1xuICBpZiAodl9ic3RyLmhhc093blByb3BlcnR5KCdfX2lzX2RlYWxsb2NhdGVkJykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdzdHJpbmdfZGVzdHJveTogYmlnc3RyaW5nIGlzIGFscmVhZHkgZGVhbGxvY2F0ZWRcIik7XG4gIH1cbiAgLy8gTXV0YXRlIHRoZSBvcmlnaW5hbCBiaWdzdHJpbmcgaW4tcGxhY2UsIHRvIHNpbXVsYXRlIHdoYXQgdGhlIEMgdmVyc2lvbiBkb2VzXG4gIHZfYnN0ci5fX2lzX2RlYWxsb2NhdGVkID0gdHJ1ZTtcbiAgdl9ic3RyLmRhdGEgPSBuZXcgdl9ic3RyLmRhdGEuX19wcm90b19fLmNvbnN0cnVjdG9yKDApO1xuICB2X2JzdHIuZGltcyA9IFsgMCBdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3JlYWxsb2Ncbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBiaWdzdHJpbmdfZGVzdHJveV9zdHViXG5mdW5jdGlvbiBiaWdzdHJpbmdfcmVhbGxvYyhiaWdzdHJpbmcsIHNpemUpIHtcbiAgICBpZiAoYmlnc3RyaW5nLmhhc093blByb3BlcnR5KCdfX2lzX2RlYWxsb2NhdGVkJykpIHtcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnc3RyaW5nX3JlYWxsb2M6IGJpZ3N0cmluZyBpcyBhbHJlYWR5IGRlYWxsb2NhdGVkXCIpO1xuICAgIH1cblxuICAgIHZhciBuZXdfZGF0YSA9IG5ldyBiaWdzdHJpbmcuZGF0YS5fX3Byb3RvX18uY29uc3RydWN0b3Ioc2l6ZSk7XG4gICAgbmV3X2RhdGEuc2V0KGJpZ3N0cmluZy5kYXRhLnNsaWNlKDAsIHNpemUpKTtcbiAgICB2YXIgbmV3X2JpZ3N0cmluZyA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiaWdzdHJpbmcua2luZCwgYmlnc3RyaW5nLmxheW91dCwgW3NpemVdLCBuZXdfZGF0YSk7XG4gICAgYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YihiaWdzdHJpbmcpO1xuXG4gICAgcmV0dXJuIG5ld19iaWdzdHJpbmc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIHZpZXc7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAwOiAgdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTogIHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gSW50OEFycmF5OyBicmVhaztcbiAgY2FzZSAzOiAgdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDQ6ICB2aWV3ID0gSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBVaW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNjogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA3OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgOTogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMDogdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDEyOiB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIH1cbiAgaWYgKCF2aWV3KSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHZhciBkYXRhID0gbmV3IHZpZXcoc2l6ZSAqIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA8IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyYXlcIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246ID49IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIlxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9oaTMyLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5IChraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuXG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gY2FtbF9iYV9jdXN0b21fbmFtZTtcblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIG9mcyA9IDA7XG4gIGlmKHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIpIGFyZyA9IFthcmddO1xuICBpZiAoISAoYXJnIGluc3RhbmNlb2YgQXJyYXkpKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdhcnJheS5qczogaW52YWxpZCBvZmZzZXRcIik7XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGFyZy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZ2V0L3NldDogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICBpZih0aGlzLmxheW91dCA9PSAwIC8qIGNfbGF5b3V0ICovKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pXG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgYXJnW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMSB8fCBhcmdbaV0gPiB0aGlzLmRpbXNbaV0pe1xuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICB9XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIChhcmdbaV0gLSAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9mcztcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBsID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGwsaCk7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGkgPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBbMjU0LCByLCBpXTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gdGhpcy5kYXRhW29mc11cbiAgfVxufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gdlsxXTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB2YXIgYiA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBpZihhID09IGIpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gYSA6IGI7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIGltID0gdlsxXTtcbiAgICB2YXIgcmUgPSB2WzJdO1xuICAgIGlmKGltID09IHJlKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGltKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBpbSA6IHJlO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKGIsIHRvdGFsKSB7XG4gIGlmICh0aGlzLmxheW91dCAhPSBiLmxheW91dCB8fCB0aGlzLmtpbmQgIT0gYi5raW5kKSB7XG4gICAgdmFyIGsxID0gdGhpcy5raW5kIHwgKHRoaXMubGF5b3V0IDw8IDgpO1xuICAgIHZhciBrMiA9ICAgIGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICByZXR1cm4gazIgLSBrMTtcbiAgfVxuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBiLmRpbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmICh0aGlzLmRpbXNbaV0gIT0gYi5kaW1zW2ldKVxuICAgICAgcmV0dXJuICh0aGlzLmRpbXNbaV0gPCBiLmRpbXNbaV0pID8gLTEgOiAxO1xuICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgY2FzZSAxMDpcbiAgY2FzZSAxMTpcbiAgICAvLyBGbG9hdHNcbiAgICB2YXIgeCwgeTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgeCA9IHRoaXMuZGF0YVtpXTtcbiAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICBpZiAoeCA8IHkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh4ID4geSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoeCAhPSB5KSB7XG4gICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgIGlmICh4ID09IHgpIHJldHVybiAxO1xuICAgICAgICBpZiAoeSA9PSB5KSByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrPTIpIHtcbiAgICAgIC8vIENoZWNrIGhpZ2hlc3QgYml0cyBmaXJzdFxuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdIDwgYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA+IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA8IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPiAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDI6XG4gIGNhc2UgMzpcbiAgY2FzZSA0OlxuICBjYXNlIDU6XG4gIGNhc2UgNjpcbiAgY2FzZSA4OlxuICBjYXNlIDk6XG4gIGNhc2UgMTI6XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPiBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSAgID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUgPSBuZXcgTWxfQmlnYXJyYXkoKVxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgaWYodHlwZW9mIGFyZyAhPT0gXCJudW1iZXJcIil7XG4gICAgaWYoKGFyZyBpbnN0YW5jZW9mIEFycmF5KSAmJiBhcmcubGVuZ3RoID09IDEpXG4gICAgICBhcmcgPSBhcmdbMF07XG4gICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gIH1cbiAgaWYgKGFyZyA8IDAgfHwgYXJnID49IHRoaXMuZGltc1swXSlcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcmc7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgdGhpcy5kYXRhLmZpbGwodik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9iYV9jb21wYXJlKGEsYix0b3RhbCl7XG4gIHJldHVybiBhLmNvbXBhcmUoYix0b3RhbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSl7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKTtcbiAgaWYoY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSAqIHNpemVfcGVyX2VsZW1lbnQgIT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmKGxheW91dCA9PSAwICYmIC8vIGNfbGF5b3V0XG4gICAgIGRpbXMubGVuZ3RoID09IDEgJiYgLy8gQXJyYXkxXG4gICAgIHNpemVfcGVyX2VsZW1lbnQgPT0gMSkgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcblxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZShraW5kLCBsYXlvdXQsIGRpbXNfbWwpIHtcbiAgdmFyIGRpbXMgPSBjYW1sX2pzX2Zyb21fYXJyYXkoZGltc19tbCk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIGNhbWxfYmFfZ2V0X3NpemUoZGltcykpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY2hhbmdlX2xheW91dFxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2NoYW5nZV9sYXlvdXQoYmEsIGxheW91dCkge1xuICBpZihiYS5sYXlvdXQgPT0gbGF5b3V0KSByZXR1cm4gYmE7XG4gIHZhciBuZXdfZGltcyA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbYmEuZGltcy5sZW5ndGggLSBpIC0gMV07XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgbGF5b3V0LCBuZXdfZGltcywgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kKGJhKSB7XG4gIHJldHVybiBiYS5raW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2xheW91dFxuZnVuY3Rpb24gY2FtbF9iYV9sYXlvdXQoYmEpIHtcbiAgcmV0dXJuIGJhLmxheW91dDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9udW1fZGltc1xuZnVuY3Rpb24gY2FtbF9iYV9udW1fZGltcyhiYSkge1xuICByZXR1cm4gYmEuZGltcy5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZGltKGJhLCBpKSB7XG4gIGlmIChpIDwgMCB8fCBpID49IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMgKyAxKTtcbiAgcmV0dXJuIChiMSB8IChiMiA8PCA4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MzIoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHJldHVybiAoIChiMSA8PCAwKSAgfFxuICAgICAgICAgICAoYjIgPDwgOCkgIHxcbiAgICAgICAgICAgKGIzIDw8IDE2KSB8XG4gICAgICAgICAgIChiNCA8PCAyNCkgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQ2NChiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgdmFyIGI1ID0gYmEuZ2V0KG9mcys0KTtcbiAgdmFyIGI2ID0gYmEuZ2V0KG9mcys1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcys2KTtcbiAgdmFyIGI4ID0gYmEuZ2V0KG9mcys3KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW2I4LGI3LGI2LGI1LGI0LGIzLGIyLGIxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzEoYmEsIGkwKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KGkwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzIoYmEsIGkwLCBpMSkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxLGkyXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0X2dlbmVyaWMoYmEsIGksIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMrMywgKHYgPj4+IDI0KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQ2NChiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgODsgaSsrKSBiYS5zZXQob2ZzK2ksIHZbNy1pXSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMihiYSwgaTAsIGkxLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMyhiYSwgaTAsIGkxLCBpMiwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZmlsbFxuZnVuY3Rpb24gY2FtbF9iYV9maWxsKGJhLCB2KSB7XG4gIGJhLmZpbGwodik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9ibGl0KHNyYywgZHN0KSB7XG4gIGlmIChkc3QuZGltcy5sZW5ndGggIT0gc3JjLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkc3QuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoZHN0LmRpbXNbaV0gIT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IChiYS5kaW1zLmxlbmd0aCAtIDEpOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCAob2ZzICsgbGVuKSA+IGJhLmRpbXNbY2hhbmdlZF9kaW1dKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zdWI6IGJhZCBzdWItYXJyYXlcIik7XG4gIH1cbiAgdmFyIG5ld19kaW1zID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAwO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZShudW1faW5kcyk7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyArIGldID0gdmluZFtpXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMTtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UoMCwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyk7XG4gIH1cbiAgb2ZzID0gYmEub2Zmc2V0KGluZGV4KTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKHN1Yl9kaW1zKTtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIHNpemVfcGVyX2VsZW1lbnQsIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgc3ViX2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9yZXNoYXBlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG5mdW5jdGlvbiBjYW1sX2JhX3Jlc2hhcGUoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG5ld19kaW0gPSBbXTtcbiAgdmFyIG51bV9kaW1zID0gdmluZC5sZW5ndGg7XG5cbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPSBzaXplKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IHNpemUgbWlzbWF0Y2hcIik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX3NlcmlhbGl6ZSh3cml0ZXIsIGJhLCBzeikge1xuICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXMubGVuZ3RoKTtcbiAgd3JpdGVyLndyaXRlKDMyLCAoYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpKTtcbiAgaWYoYmEuY2FtbF9jdXN0b20gPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYoYmEuZGltc1tpXSA8IDB4ZmZmZilcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHdyaXRlci53cml0ZSgzMixiYS5kaW1zW2ldKVxuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoOCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB3cml0ZXIud3JpdGUoOCwwKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhiYS5nZXQoaSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgaiA9IGJhLmdldChpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMV0pKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsxXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMl0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogNDtcbiAgc3pbMV0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGVzZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlcywgY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKXtcbiAgdmFyIG51bV9kaW1zID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogd3JvbmcgbnVtYmVyIG9mIGJpZ2FycmF5IGRpbWVuc2lvbnNcIik7XG4gIHZhciB0YWcgPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIga2luZCA9IHRhZyAmIDB4ZmZcbiAgdmFyIGxheW91dCA9ICh0YWcgPj4gOCkgJiAxO1xuICB2YXIgZGltcyA9IFtdXG4gIGlmKG5hbWUgPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICAgIHZhciBzaXplX2RpbSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICBpZihzaXplX2RpbSA9PSAweGZmZmYpe1xuICAgICAgICB2YXIgc2l6ZV9kaW1faGkgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICB2YXIgc2l6ZV9kaW1fbG8gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICBpZihzaXplX2RpbV9oaSAhPSAwKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogYmlnYXJyYXkgZGltZW5zaW9uIG92ZXJmbG93IGluIDMyYml0XCIpO1xuICAgICAgICBzaXplX2RpbSA9IHNpemVfZGltX2xvO1xuICAgICAgfVxuICAgICAgZGltcy5wdXNoKHNpemVfZGltKTtcbiAgICB9XG4gIGVsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIGRpbXMucHVzaChyZWFkZXIucmVhZDMydSgpKTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGRpbXMpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKTtcbiAgdmFyIGJhID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDhzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgdmFyIHNpeHR5ID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIGlmKHNpeHR5KSBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNhbm5vdCByZWFkIGJpZ2FycmF5IHdpdGggNjQtYml0IE9DYW1sIGludHNcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogLy8gKGludDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICBiYS5zZXQoaSxpbnQ2NCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrXG4gIH1cbiAgc3pbMF0gPSAoNCArIG51bV9kaW1zKSAqIDQ7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9EZXByZWNhdGVkXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIGpzdHlwLCBraW5kLCBsYXlvdXQsIGRpbXMpe1xuICBpZihkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09IDIpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfY3JlYXRlX2Zyb206IHVzZSByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlXCIpO1xuICB9XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfaGFzaChiYSl7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyA0IDw9IGJhLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDgpIHwgKGJhLmRhdGFbaSsyXSA8PCAxNikgfCAoYmEuZGF0YVtpKzNdIDw8IDI0KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICB3ID0gMDtcbiAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgIGNhc2UgMzogdyAgPSBiYS5kYXRhW2krMl0gPDwgMTY7ICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAyOiB3IHw9IGJhLmRhdGFbaSsxXSA8PCA4OyAgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDE6IHcgfD0gYmEuZGF0YVtpKzBdO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgMiA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9Mil7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCAxNik7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgaWYgKChudW1fZWx0cyAmIDEpICE9IDApXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgbnVtX2VsdHMgKj0gMlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9iYV90b190eXBlZF9hcnJheShiYSl7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZDtcbiAgaWYgICAgICAodGEgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkga2luZCA9IDE7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50OEFycmF5KSBraW5kID0gMjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MTZBcnJheSkga2luZCA9IDQ7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXk6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHJldHVybiBraW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAgIC8qIE5lZWRlZCB0byBhdm9pZCB1bnNpZ25lZCBzZXR0ZXJzIG92ZXJmbG93aW5nXG4gICAgICAgICB0aGUgcmFuZ2Ugb2YgT0NhbWwgW2ludDMyXSB2YWx1ZXMuICovXG4gICAgICB0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5ID9cbiAgICAgIG5ldyBJbnQzMkFycmF5KHRhLmJ1ZmZlciAsdGEuYnl0ZU9mZnNldCwgdGEubGVuZ3RoKSA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfdGFnKGEpe1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKGEpKSByZXR1cm4gMjUyOyAvLyBzdHJpbmdfdGFnXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGEpKSByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGFbMF0gPT09IChhWzBdPj4+MCkgJiYgYVswXSA8PSAyNTUpIHtcbiAgICAvLyBMb29rIGxpa2UgYW4gb2NhbWwgYmxvY2tcbiAgICB2YXIgdGFnID0gYVswXSB8IDA7XG4gICAgLy8gaWdub3JlIGRvdWJsZV9hcnJheV90YWcgYmVjYXVzZSB3ZSBjYW5ub3QgYWNjdXJhdGVseSBzZXRcbiAgICAvLyB0aGlzIHRhZyB3aGVuIHdlIGNyZWF0ZSBhbiBhcnJheSBvZiBmbG9hdC5cbiAgICByZXR1cm4gKHRhZyA9PSAyNTQpPzA6dGFnXG4gIH1cbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIFN0cmluZykgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgTnVtYmVyKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYSAmJiBhLmNhbWxfY3VzdG9tKSByZXR1cm4gMTI1NTsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKGEgJiYgYS5jb21wYXJlKSByZXR1cm4gMTI1NjsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDEyNDc7IC8vIGxpa2UgY2xvc3VyZV90YWcgKDI0NylcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpe1xuICByZXR1cm4gY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXS5jb21wYXJlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKG51bSwgY3VzdG9tLCBzd2FwLCB0b3RhbCkge1xuICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShjdXN0b20pO1xuICBpZihjb21wKSB7XG4gICAgdmFyIHggPSAoc3dhcCA+IDApP2NvbXAoY3VzdG9tLG51bSx0b3RhbCk6Y29tcChudW0sY3VzdG9tLHRvdGFsKTtcbiAgICBpZih0b3RhbCAmJiB4ICE9IHgpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZigreCAhPSAreCkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZigoeCB8IDApICE9IDApIHJldHVybiAoeCB8IDApOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbCAoY29uc3QsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX2NvbXBhcmUsIGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20sIGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNyBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYyxzcmNfb2ZmLGRzdCxkc3Rfb2ZmLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXMoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmcoYmExLCBiYTFfb2ZmLCBiYTIsIGJhMl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmExLCBiYTFfb2ZmICsgaSksIGNhbWxfYmFfZ2V0XzEoYmEyLCBiYTJfb2ZmICsgaSkpO1xuICAgIGlmIChjICE9IDApIHJldHVybiBjXG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmcoYmEsIGJhX29mZiwgc3RyLCBzdHJfb2ZmLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gY2FtbF9pbnRfY29tcGFyZShjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzdHIsIHN0cl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY2hyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jaHIoYmEsIGJhX29mZiwgY2hyLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSA9PSBjaHIpIHtcbiAgICAgIHJldHVybiAoYmFfb2ZmICsgaSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyhoLCBicykge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCxicy5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyKGJzKSB7XG4gIHJldHVybiBicy5kYXRhLmJ1ZmZlclxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyKGFiKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGFiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGJhKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGJhLmJ1ZmZlciwgYmEuYnl0ZU9mZnNldCwgYmEubGVuZ3RoICogYmEuQllURVNfUEVSX0VMRU1FTlQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19tZW1jbXBcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX21lbWNtcChzMSwgcG9zMSwgczIsIHBvczIsIGxlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEoczEscG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMixwb3MyICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKGJhMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsb2ZzMStsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UscG9zMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKGJhMSwgcG9zMSwgYnl0ZXMyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnNsaWNlKG9mczEsIG9mczErbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwXG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19hbGxvY1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19hbGxvYyhfLHNpemUpe1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGUoMTIsIDAsIFswLHNpemVdKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1Yih4KXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X3N0dWIoczEsIGkxLCBzMiwgaTIsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHMxLGkxLHMyLGkyLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtc2V0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1zZXRfc3R1YihiaWdzdHJpbmcsIHZfcG9zLCB2X2xlbiwgdl9jaGFyKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIGNhbWxfYmFfc2V0XzEoYmlnc3RyaW5nLCB2X3BvcyArIGksIHZfY2hhcik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMSh2X3MxLHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHZfczIsdl9zMl9wb3MgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfYnl0ZXNfZ2V0XG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSwgdl9zMV9wb3MgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYnl0ZXNfZ2V0KHZfczIsIHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG52YXIgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nID0gY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2ZpbmRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19maW5kKGJzLCBjaHIsIHBvcywgbGVuKXtcbiAgd2hpbGUobGVuID4gMCl7XG4gICAgaWYoY2FtbF9iYV9nZXRfMShicyxwb3MpID09IGNocikgcmV0dXJuIHBvcztcbiAgICBwb3MrKztcbiAgICBsZW4tLTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9pbnQgY29uc3QgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nLCBjYW1sX3N0cl9yZXBlYXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2ludChmbXQsIGkpIHtcbiAgaWYgKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KSA9PSBcIiVkXCIpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIraSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7IGlmIChmLnNpZ25lZGNvbnYpIHsgZi5zaWduID0gLTE7IGkgPSAtaTsgfSBlbHNlIGkgPj4+PSAwOyB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIHMubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgcyA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpIHtcbiAgdmFyIGkgPSAwLCBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyksIGJhc2UgPSAxMCwgc2lnbiA9IDE7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSkpIHtcbiAgICBjYXNlIDQ1OiBpKys7IHNpZ24gPSAtMTsgYnJlYWs7XG4gICAgY2FzZSA0MzogaSsrOyBzaWduID0gMTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChpICsgMSA8IGxlbiAmJiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpID09IDQ4KVxuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMSkpIHtcbiAgICBjYXNlIDEyMDogY2FzZSA4ODogYmFzZSA9IDE2OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTExOiBjYXNlIDc5OiBiYXNlID0gIDg7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAgOTg6IGNhc2UgNjY6IGJhc2UgPSAgMjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExNzogY2FzZSA4NTogaSArPSAyOyBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSAgcmV0dXJuIGMgLSA0ODtcbiAgaWYgKGMgPj0gNjUgJiYgYyA8PSA5MCkgIHJldHVybiBjIC0gNTU7XG4gIGlmIChjID49IDk3ICYmIGMgPD0gMTIyKSByZXR1cm4gYyAtIDg3O1xuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9wYXJzZV9kaWdpdCwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9pbnRfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSAoaSA8IGxlbik/Y2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTowO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gZDtcbiAgZm9yIChpKys7aTxsZW47aSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIHJlcyA9IGJhc2UgKiByZXMgKyBkO1xuICAgIGlmIChyZXMgPiB0aHJlc2hvbGQpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGxlbikgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIC8vIEZvciBiYXNlIGRpZmZlcmVudCBmcm9tIDEwLCB3ZSBleHBlY3QgYW4gdW5zaWduZWQgcmVwcmVzZW50YXRpb24sXG4gIC8vIGhlbmNlIGFueSB2YWx1ZSBvZiAncmVzJyAobGVzcyB0aGFuICd0aHJlc2hvbGQnKSBpcyBhY2NlcHRhYmxlLlxuICAvLyBCdXQgd2UgaGF2ZSB0byBjb252ZXJ0IHRoZSByZXN1bHQgYmFjayB0byBhIHNpZ25lZCBpbnRlZ2VyLlxuICByZXMgPSBzaWduICogcmVzO1xuICBpZiAoKGJhc2UgPT0gMTApICYmICgocmVzIHwgMCkgIT0gcmVzKSlcbiAgICAvKiBTaWduZWQgcmVwcmVzZW50YXRpb24gZXhwZWN0ZWQsIGFsbG93IC0yXihuYml0cy0xKSB0byAyXihuYml0cy0xKSAtIDEgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbXVsIGNvbnN0XG5mdW5jdGlvbiBjYW1sX211bChhLGIpe1xuICByZXR1cm4gTWF0aC5pbXVsKGEsYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX2Rpdih4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuICh4L3kpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX21vZCh4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuIHgleTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ic3dhcDE2XG5mdW5jdGlvbiBjYW1sX2Jzd2FwMTYoeCkge1xuICByZXR1cm4gKCgoKHggJiAweDAwRkYpIDw8IDgpIHxcbiAgICAgICAgICAgKCh4ICYgMHhGRjAwKSA+PiA4KSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoKCh4ICYgMHgwMDAwMDBGRikgPDwgMjQpIHxcbiAgICAgICAgICAoKHggJiAweDAwMDBGRjAwKSA8PCA4KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMEZGMDAwMCkgPj4+IDgpIHxcbiAgICAgICAgICAoKHggJiAweEZGMDAwMDAwKSA+Pj4gMjQpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYnN3YXBcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYnN3YXAoeCkge1xuICB2YXIgeSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoeCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFt5WzddLCB5WzZdLCB5WzVdLCB5WzRdLCB5WzNdLCB5WzJdLCB5WzFdLCB5WzBdXSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEhhc2h0YmxcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2hhc2hfdW5pdl9wYXJhbSAoY291bnQsIGxpbWl0LCBvYmopIHtcbiAgdmFyIGhhc2hfYWNjdSA9IDA7XG4gIGZ1bmN0aW9uIGhhc2hfYXV4IChvYmopIHtcbiAgICBsaW1pdCAtLTtcbiAgICBpZiAoY291bnQgPCAwIHx8IGxpbWl0IDwgMCkgcmV0dXJuO1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSAmJiBvYmpbMF0gPT09IChvYmpbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAob2JqWzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmpbMl0pIHwgMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBsaW1pdCsrOyBoYXNoX2F1eChvYmopOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBvYmpbMF0pIHwgMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IG9iai5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSBoYXNoX2F1eCAob2JqW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMob2JqKSkge1xuICAgICAgY291bnQgLS07XG4gICAgICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudChvYmopO1xuICAgICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYiA9IGNvbnRlbnQsIGwgPSBiLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgICB9IGVsc2UgeyAvKiBBUlJBWSAqL1xuICAgICAgICBmb3IgKHZhciBhID0gY29udGVudCwgbCA9IGEubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBhW2ldKSB8IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhvYmopKSB7XG4gICAgICB2YXIganNieXRlcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob2JqKTtcbiAgICAgIGZvciAodmFyIGIgPSBqc2J5dGVzLCBsID0ganNieXRlcy5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGZvciAodmFyIGIgPSBvYmosIGwgPSBvYmoubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09IChvYmp8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGNvdW50IC0tO1xuICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09ICtvYmopIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBjb3VudC0tO1xuICAgICAgdmFyIHAgPSBjYW1sX2ludDY0X3RvX2J5dGVzIChjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKG9iaikpO1xuICAgICAgZm9yICh2YXIgaSA9IDc7IGkgPj0gMDsgaS0tKSBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBwW2ldKSB8IDA7XG4gICAgfSBlbHNlIGlmKG9iaiAmJiBvYmouY2FtbF9jdXN0b20pIHtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGggPSBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKG9iaikgfCAwO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBoKSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhc2hfYXV4IChvYmopO1xuICByZXR1cm4gaGFzaF9hY2N1ICYgMHgzRkZGRkZGRjtcbn1cblxuLy9mdW5jdGlvbiBST1RMMzIoeCxuKSB7IHJldHVybiAoKHggPDwgbikgfCAoeCA+Pj4gKDMyLW4pKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQoaCxkKSB7XG4gIGQgPSBjYW1sX211bChkLCAweGNjOWUyZDUxfDApO1xuICBkID0gKChkIDw8IDE1KSB8IChkID4+PiAoMzItMTUpKSk7IC8vIFJPVEwzMihkLCAxNSk7XG4gIGQgPSBjYW1sX211bChkLCAweDFiODczNTkzKTtcbiAgaCBePSBkO1xuICBoID0gKChoIDw8IDEzKSB8IChoID4+PiAoMzItMTMpKSk7ICAgLy9ST1RMMzIoaCwgMTMpO1xuICByZXR1cm4gKCgoaCArIChoIDw8IDIpKXwwKSArICgweGU2NTQ2YjY0fDApKXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9maW5hbChoKSB7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIGggPSBjYW1sX211bCAoaCwgMHg4NWViY2E2YnwwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsIChoLCAweGMyYjJhZTM1fDApO1xuICBoIF49IGggPj4+IDE2O1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2hhc2hfbWl4X2ludDY0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0IChoLCB2MCkge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9pbnQ2NChoLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHYwKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9sbzMyLCBjYW1sX2ludDY0X2hpMzJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50NjQgKGgsIHYpIHtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfbG8zMih2KSk7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2hpMzIodikpO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzLmNoYXJDb2RlQXQoaSlcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDgpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNilcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gcy5jaGFyQ29kZUF0KGkrMikgPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzLmNoYXJDb2RlQXQoaSsxKSA8PCA4O1xuICBjYXNlIDE6XG4gICAgdyB8PSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gc1tpXVxuICAgICAgfCAoc1tpKzFdIDw8IDgpXG4gICAgICB8IChzW2krMl0gPDwgMTYpXG4gICAgICB8IChzW2krM10gPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzW2krMl0gPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzW2krMV0gPDwgODtcbiAgY2FzZSAxOiB3IHw9IHNbaV07XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsIHYpIHtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQodik7XG4gIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY29udGVudClcbiAgZWxzZSAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQsIGNhbWxfaGFzaF9taXhfc3RyaW5nLCBjYW1sX2hhc2hfbWl4X2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpIHtcbiAgICAgICAgICAvKiBBbGwgY29udGludWF0aW9ucyBoYXNoIHRvIHRoZSBzYW1lIHZhbHVlLFxuICAgICAgICAgICAgIHNpbmNlIHdlIGhhdmUgbm8gaWRlYSBob3cgdG8gZGlzdGluZ3Vpc2ggdGhlbS4gKi9cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbCwgY2FtbF9oYXNoX21peF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdil7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KTtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NCA9IGNhbWxfaGFzaF9taXhfaW50NjQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludCA9IGNhbWxfaGFzaF9taXhfaW50O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXQgPSBjYW1sX2hhc2hfbWl4X2Zsb2F0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmcgPSBjYW1sX2hhc2hfbWl4X3N0cmluZztcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG5mdW5jdGlvbiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZShzZWVkKSB7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChzZWVkKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZXJfdHJhY2VcbnZhciBjYW1sX3BhcnNlcl90cmFjZSA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheSwgY2FtbF9wYXJzZXJfdHJhY2UsY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuXG4gIGZ1bmN0aW9uIGxvZyh4KSB7XG4gICAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHggKyBcIlxcblwiKTtcbiAgICBjYW1sX21sX291dHB1dCgyLCBzLCAwLCBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5fbmFtZShuYW1lcywgbnVtYmVyKVxuICB7XG4gICAgdmFyIHN0ciA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWVzKTtcbiAgICBpZiAoc3RyWzBdID09ICdcXHgwMCcpXG4gICAgICByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCdcXHgwMCcpW251bWJlcl07XG4gIH1cblxuICBmdW5jdGlvbiBwcmludF90b2tlbihzdGF0ZSwgdG9rKVxuICB7XG4gICAgdmFyIHRva2VuLCBraW5kO1xuICAgIGlmICh0b2sgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJudW1iZXJcIilcbiAgICAgICAga2luZCA9IFwiXCIgKyB0b2tbMV07XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdG9rWzFdID09IFwic3RyaW5nXCIpXG4gICAgICAgIGtpbmQgPSB0b2tbMV1cbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpXG4gICAgICAgIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSlcbiAgICAgIGVsc2VcbiAgICAgICAga2luZCA9IFwiX1wiXG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbiArIFwiKFwiICsga2luZCArIFwiKVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfY29uc3RdLCB0b2spO1xuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBuZXh0OnN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBwcmludF90b2tlbiAoc3RhdGUsIGFyZyk7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJSZWNvdmVyaW5nIGluIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrIG5leHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgICBsb2coXCJObyBtb3JlIHN0YXRlcyB0byBkaXNjYXJkXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApXG4gICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SOyAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgbGFzdCB0b2tlbiByZWFkXCIpO1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHNoaWZ0IHRvIHN0YXRlIFwiICsgdGFibGVzLnRhYmxlW24yXSk7XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2luZml4XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2luZml4ICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYgKHgpIHsgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIFt4XSkgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG5mdW5jdGlvbiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwKHgsaSxvbGQsbil7XG4gIGlmKHhbaSsxXSA9PSBvbGQpIHtcbiAgICB4W2krMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfc2hhcmVkKHgpe1xuICByZXR1cm4gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3VwZGF0ZV90YWcoYixvLG4pIHtcbiAgICBpZihiWzBdPT1vKSB7IGJbMF0gPSBuOyByZXR1cm4gMSB9XG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmcobykge1xuICBpZiAoKG8gaW5zdGFuY2VvZiBBcnJheSkgJiYgb1swXSA9PSAob1swXSA+Pj4gMCkgJiZcbiAgICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4gIGZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjUwKTtcbiAgcmV0dXJuIDA7IC8vIHVuaXRcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3JlYWRfcmVzdWx0KG8pIHtcbiAgcmV0dXJuIChjYW1sX29ial90YWcobykgPT0gMjUwKT9vWzFdOm87XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246IDwgNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gKHQgPT0gMjQ1KSA/IDEgOiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliOiBjb2RlIHNwZWNpZmljIHRvIEpzX29mX29jYW1sXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb25faWUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfb25faWUgKCkge1xuICB2YXIgdWEgPVxuICAgICAgKGdsb2JhbFRoaXMubmF2aWdhdG9yJiZnbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgICA/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50OlwiXCI7XG4gIHJldHVybiB1YS5pbmRleE9mKFwiTVNJRVwiKSAhPSAtMSAmJiB1YS5pbmRleE9mKFwiT3BlcmFcIikgIT0gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6LyYvZywgbHQ6LzwvZywgcXVvdDovXFxcIi9nLCBhbGw6L1smPFxcXCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZSAocykge1xuICBpZiAoIWNhbWxfanNfcmVnZXhwcy5hbGwudGVzdChzKSkgcmV0dXJuIHM7XG4gIHJldHVybiBzLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmFtcCwgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5sdCwgXCImbHQ7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLnF1b3QsIFwiJnF1b3Q7XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZW50aXRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lbnRpdGllcyhzKSB7XG4gIHZhciBlbnRpdHkgPSAvXiYjP1swLTlhLXpBLVpdKzskL1xuICBpZihzLm1hdGNoKGVudGl0eSkpXG4gIHtcbiAgICB2YXIgc3RyLCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIHRlbXAuaW5uZXJIVE1MPSBzO1xuICAgIHN0cj0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wPW51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW52YWxpZCBlbnRpdHkgXCIgKyBzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldF9jb25zb2xlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX2dldF9jb25zb2xlICgpIHtcbiAgdmFyIGMgPSBjb25zb2xlO1xuICB2YXIgbSA9IFtcImxvZ1wiLCBcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiLCBcImFzc2VydFwiLCBcImRpclwiLCBcImRpcnhtbFwiLFxuICAgICAgICAgICBcInRyYWNlXCIsIFwiZ3JvdXBcIiwgXCJncm91cENvbGxhcHNlZFwiLCBcImdyb3VwRW5kXCIsIFwidGltZVwiLCBcInRpbWVFbmRcIl07XG4gIGZ1bmN0aW9uIGYgKCkge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSBpZiAoIWNbbVtpXV0pIGNbbVtpXV09ZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKHVuaXQpe1xuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgfSBjYXRjaCAoZSkgeyB9O1xuICB9XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gIH1cbiAgY2FtbF9mYWlsd2l0aChcIkNhbm5vdCBjcmVhdGUgYSBYTUxIdHRwUmVxdWVzdFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIGV4bi5qc19lcnJvcjsgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbnZhciBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IFxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyclxudmFyIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnJcblxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0XG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyLCBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG5mdW5jdGlvbiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3QgKHZvdXRwdXQsIHZzdGRvdXQsIHZzdGRlcnIpe1xuICBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyID0gY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXTtcbiAgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dCA9IGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF07XG4gIHZhciBvdXRwdXQgPSBjYW1sX21sX2NoYW5uZWxzW3ZvdXRwdXRdO1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdID0gb3V0cHV0O1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdID0gb3V0cHV0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIsIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbmZ1bmN0aW9uIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0ICh2c3Rkb3V0LCB2c3RkZXJyKXtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XSA9IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQ7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl0gPSBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczpjYW1sX291dF9jaGFubmVsX3Bvc19mZFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmQoY2hhbil7XG4gIHZhciBpbmZvID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuXTtcbiAgcmV0dXJuIGluZm8ub2Zmc2V0XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEFycmF5XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc3ViIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc3ViIChhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYTJbMF09MDtcbiAgZm9yKHZhciBpMiA9IDEsIGkxPSBpKzE7IGkyIDw9IGxlbjsgaTIrKyxpMSsrICl7XG4gICAgYTJbaTJdPWFbaTFdO1xuICB9XG4gIHJldHVybiBhMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCwgbDIgPSBhMi5sZW5ndGg7XG4gIHZhciBsID0gbDErbDItMVxuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IDA7XG4gIHZhciBpID0gMSxqID0gMTtcbiAgZm9yKDtpPGwxO2krKykgYVtpXT1hMVtpXTtcbiAgZm9yKDtpPGw7aSsrLGorKykgYVtpXT1hMltqXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfY29uY2F0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwpIHtcbiAgdmFyIGEgPSBbMF07XG4gIHdoaWxlIChsICE9PSAwKSB7XG4gICAgdmFyIGIgPSBsWzFdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYi5sZW5ndGg7IGkrKykgYS5wdXNoKGJbaV0pO1xuICAgIGwgPSBsWzJdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy8vLy8vLy8vLy8vLyBQZXJ2YXNpdmVcbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0IChhcnJheSwgaW5kZXgsIG5ld3ZhbCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGFycmF5W2luZGV4KzFdPW5ld3ZhbDsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZ2V0IG11dGFibGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZCAoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA+Pj4gMCA+PSBhcnJheS5sZW5ndGggLSAxKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3ZlY3QgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QgKGxlbiwgaW5pdCkge1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IGluaXQ7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfZmxvYXRfdmVjdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfZmxvYXRfdmVjdChsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jcmVhdGUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2NyZWF0ZShsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbiIsIi8vLy8vLy8vLyBCSU5fUFJPVFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoYmlnc3RyaW5nLCBpKXtcbiAgaWYgKGkgPj4+IDAgPj0gYmlnc3RyaW5nLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG59XG5cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfY2hlY2tfYm91bmQsIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGNhbWxfY2hlY2tfYm91bmQoZHN0LGRzdF9wb3MpOyAvLyBmaXJzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZChkc3QsZHN0X3BvcytsZW4tMSk7IC8vIGxhc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKHNyYywgc3JjX3Bvcyk7ICAvKiBmaXJzdCBwb3MgKi9cbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoc3JjLCBzcmNfcG9zICsgbGVuICogOCAtIDEpOyAvKiBsYXN0IHBvcyAqL1xuICB2YXIgdmlldyA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5GbG9hdDY0QXJyYXkobGVuKTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5VaW50OEFycmF5KHZpZXcuYnVmZmVyKTtcbiAgYnVmZmVyLnNldChzcmMuZGF0YS5zdWJhcnJheShzcmNfcG9zLCBzcmNfcG9zICsgKGxlbiAqIDgpKSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgLy8gWysgMV0gYmVjYXVzZSB0aGUgdGFnIGlzIGF0IHBvcyAwIFxuICAgIGRzdFtkc3RfcG9zK2krMV0gPSB2aWV3W2ldO1xuICB9XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKTtcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfY2hlY2tfYm91bmQsIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViKHNyY19wb3Msc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMCBcbiAgY2FtbF9jaGVja19ib3VuZCAoc3JjLCBzcmNfcG9zKTsgLy8gZmlyc3QgcG9zIFxuICBjYW1sX2NoZWNrX2JvdW5kIChzcmMsIHNyY19wb3MgKyBsZW4gLSAxKTsgLy8gbGFzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoZHN0LCBkc3RfcG9zKTsgLyogZmlyc3QgcG9zICovXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGRzdCwgZHN0X3BvcyArIGxlbiAqIDggLSAxKTsgLyogbGFzdCBwb3MgKi9cbiAgLy8gWysgMV0gYmVjYXVzZSB0aGUgdGFnIGlzIGF0IHBvcyAwXG4gIHNyY19wb3MgPSBzcmNfcG9zICsgMVxuICB2YXIgZmxvYXQ2NCA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5GbG9hdDY0QXJyYXkoc3JjLnNsaWNlKHNyY19wb3Msc3JjX3BvcyArIGxlbikpO1xuICB2YXIgZmxvYXQ2NF91aW50OCA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5VaW50OEFycmF5KGZsb2F0NjQuYnVmZmVyKTtcbiAgdmFyIHZpZXcgPSBkc3QuZGF0YS5zdWJhcnJheShkc3RfcG9zLCBkc3RfcG9zICsgKGxlbiAqIDgpKTtcbiAgdmlldy5zZXQoZmxvYXQ2NF91aW50OCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfc3RyaW5nX2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYyxzcmNfcG9zLCBkc3QsIGRzdF9wb3MsbGVuKTtcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYyxzcmNfcG9zLCBkc3QsIGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSwgYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgLy8gW2Jpbl9wcm90X2JsaXRfYnVmX3N0dWJdIGlzIHVzZWQgd2l0aCBtaXhlZCBiaWdhcnJheSBraW5kcy5cbiAgLy8gQ29udmVydGVyIGV2ZXJ5dGhpbmcgdG8gYmlnYXJyYXkgb2YgY2hhciBiZWZvcmUgdGhlIGJsaXQuXG4gIGlmKHNyYy5raW5kICE9IDEyKSAvLyAxMiBpcyB0aGUgY2hhciBraW5kXG4gICAgc3JjID0gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KHNyYy5kYXRhKTtcbiAgaWYoZHN0LmtpbmQgIT0gMTIpIC8vIDEyIGlzIHRoZSBjaGFyIGtpbmRcbiAgICBkc3QgPSBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoZHN0LmRhdGEpO1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2NoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9jaGFuKGNoYW5pZCx0b3JlYWQpe1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYodG9yZWFkIDwgMCl7XG4gICAgd2hpbGUodHJ1ZSl7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgaWYocmVhZCA9PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSh0b3JlYWQgPiAwKSB7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLCAodG9yZWFkID4gYnVmZmVyLmxlbmd0aCA/IGJ1ZmZlci5sZW5ndGggOiB0b3JlYWQpKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZFxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9tZDVfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X3N0cmluZyhzLCBvZnMsIGxlbikge1xuICByZXR1cm4gY2FtbF9tZDVfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcocyksb2ZzLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh3LCBidWZmZXIpIHtcbiAgICB2YXIgYSA9IHdbMF0sIGIgPSB3WzFdLCBjID0gd1syXSwgZCA9IHdbM107XG5cbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTcsIDB4MjQyMDcwREIpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDVdLCAxMiwgMHg0Nzg3QzYyQSk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA3LCAweDY5ODA5OEQ4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NUNEN0JFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4QTY3OTQzOEUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNl0sIDksIDB4QzA0MEIzNDApO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNSwgMHhENjJGMTA1RCk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNF0sIDIwLCAweEU3RDNGQkM4KTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNCwgMHhGNEQ1MEQ4Nyk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMl0sIDksIDB4RkNFRkEzRjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA0LCAweEZGRkEzOTQyKTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweEZERTUzODBDKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTYsIDB4RjZCQjRCNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDBdLCAxMSwgMHhFQUExMjdGQSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA0LCAweEQ5RDREMDM5KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMl0sIDIzLCAweEM0QUM1NjY1KTtcblxuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNSwgMHhBQjk0MjNBNyk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgM10sIDEwLCAweDhGMENDQzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDYsIDB4NkZBODdFNEYpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NEUwODExQTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNSwgMHgyQUQ3RDJCQik7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH19KSgpXG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1SW5pdFxuZnVuY3Rpb24gY2FtbF9NRDVJbml0KCkge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTtcbiAgdmFyIGIzMiA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICB2YXIgYjggPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICByZXR1cm4ge2xlbjowLFxuICAgICAgICAgIHc6bmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XSksXG4gICAgICAgICAgYjMyOmIzMixcbiAgICAgICAgICBiODpiOH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVVcGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENVVwZGF0ZShjdHgsIGlucHV0LCBpbnB1dF9sZW4pe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYoaW5fYnVmKXtcbiAgICB2YXIgbWlzc2luZyA9IDY0IC0gaW5fYnVmO1xuICAgIGlmKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxpbnB1dF9sZW4pLGluX2J1Zik7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLG1pc3NpbmcpLGluX2J1Zik7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSBtaXNzaW5nO1xuICAgIGlucHV0X3BvcyArPSBtaXNzaW5nO1xuICB9XG4gIHdoaWxlKGlucHV0X2xlbiA+PSA2NCl7XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgNjQpLCAwKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IDY0O1xuICAgIGlucHV0X3BvcyArPSA2NDtcbiAgfVxuICBpZihpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgaW5wdXRfbGVuKSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1RmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENUZpbmFsKGN0eCl7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgY3R4LmI4W2luX2J1Zl0gPSAweDgwO1xuICBpbl9idWYgKys7XG4gIGlmKGluX2J1ZiA+IDU2KSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfVxuICBjdHguYjMyWzE0XSA9IGN0eC5sZW4gPDwgMztcbiAgY3R4LmIzMlsxNV0gPSAoY3R4LmxlbiA+PiAyOSkgJiAweDFGRkZGRkZGO1xuICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gIHZhciB0ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgIHRbaSAqIDQgKyBqXSA9IChjdHgud1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gIHJldHVybiB0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfYnl0ZXMocywgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyk7XG4gIGNhbWxfTUQ1VXBkYXRlKGN0eCxhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50KHYpIHtcbiAgdiA9IHYgLSAoKHYgPj4+IDEpICYgMHg1NTU1NTU1NSk7XG4gIHYgPSAodiAmIDB4MzMzMzMzMzMpICsgKCh2ID4+PiAyKSAmIDB4MzMzMzMzMzMpO1xuICByZXR1cm4gKCh2ICsgKHYgPj4+IDQpICYgMHhGMEYwRjBGKSAqIDB4MTAxMDEwMSkgPj4+IDI0O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3BvcyBjb25zdFxuZnVuY3Rpb24gQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MoeCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG4gY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuKHgpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KSB7XG4gIHZhciBuID0gMzI7XG4gIHZhciB5O1xuICB5ID0geCA+PjE2OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IHggPj4gODsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDg7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDQ7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA0OyB4ID0geTsgfVxuICB5ID0geCA+PiAyOyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMTsgaWYgKHkgIT0gMCkgcmV0dXJuIG4gLSAyO1xuICByZXR1cm4gbiAtIHg7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X2NseiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X2Nseih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF90b19pbnQzMlxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHooeCkge1xuICB2YXIgbiA9IDY0O1xuICB2YXIgeTtcbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMzIpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtMzI7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTE2OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA4KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA0KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSA0OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSAyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSBjYW1sX2ludDY0X3RvX2ludDMyKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCkge1xuICBpZiAoeCA9PT0gMCkgeyByZXR1cm4gMzI7IH1cbiAgdmFyIG4gPSAxO1xuICBpZiAoICh4ICYgMHgwMDAwRkZGRikgPT09IDApIHsgbiA9IG4gKyAxNjsgeCA9IHggPj4gMTY7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwRkYpID09PSAwKSB7IG4gPSBuICsgIDg7IHggPSB4ID4+ICA4OyB9XG4gIGlmICggKHggJiAweDAwMDAwMDBGKSA9PT0gMCkgeyBuID0gbiArICA0OyB4ID0geCA+PiAgNDsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwMykgPT09IDApIHsgbiA9IG4gKyAgMjsgeCA9IHggPj4gIDI7IH1cbiAgcmV0dXJuIG4gLSAoeCAmIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jdHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYW5kLCBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHooeCkge1xuICBpZiAoY2FtbF9pbnQ2NF9pc196ZXJvKHgpKSB7IHJldHVybiA2NDsgfVxuICB2YXIgbiA9IDE7XG4gIGZ1bmN0aW9uIGlzX3plcm8gKHgpICAgIHsgcmV0dXJuIGNhbWxfaW50NjRfaXNfemVybyh4KTsgfVxuICBmdW5jdGlvbiBsYW5kICh4LHkpICAgICB7IHJldHVybiBjYW1sX2ludDY0X2FuZCh4LCB5KTsgfVxuICBmdW5jdGlvbiBzbWFsbF9pbnQ2NCh4KSB7IHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSh4LDAsMCk7IH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgweEZGRkZGRiwgMHgwMDAwRkYsIDB4MDAwMCkpKSkge1xuICAgIG4gPSBuICsgMzI7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDBGRkZGKSkpKSB7XG4gICAgbiA9IG4gKyAxNjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMTYpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwRkYpKSkpIHtcbiAgICBuID0gbiArICA4OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA4KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDBGKSkpKSB7XG4gICAgbiA9IG4gKyAgNDsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwMykpKSkge1xuICAgIG4gPSBuICsgIDI7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDIpO1xuICB9XG4gIHJldHVybiBuIC0gKGNhbWxfaW50NjRfdG9faW50MzIoY2FtbF9pbnQ2NF9hbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDEpKSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IDE7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghZXhwb25lbnQ9PTApIHtcbiAgICBtdWxbMV0gPSAobXVsWzFdICogbXVsWzNdKSB8IDA7XG4gICAgbXVsWzJdID0gKG11bFsxXSAqIG11bFsxXSkgfCAwO1xuICAgIG11bFszXSA9IChtdWxbMl0gKiBtdWxbMV0pIHwgMDtcbiAgICByZXMgPSAocmVzICogbXVsW2V4cG9uZW50ICYgM10pIHwgMDtcbiAgICBleHBvbmVudCA9IGV4cG9uZW50ID4+IDI7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YihiYXNlLCBleHBvbmVudCkge1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkoMSwwKTtcbiAgdmFyIG11bCA9IFtvbmUsIGJhc2UsIG9uZSwgb25lXTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgd2hpbGUgKCFjYW1sX2ludDY0X2lzX3plcm8oZXhwb25lbnQpKSB7XG4gICAgbXVsWzFdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzFdLCBtdWxbM10pO1xuICAgIG11bFsyXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzFdKTtcbiAgICBtdWxbM10gPSBjYW1sX2ludDY0X211bChtdWxbMl0sIG11bFsxXSk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9tdWwocmVzLCBtdWxbY2FtbF9pbnQ2NF9sbzMyKGV4cG9uZW50KSAmIDNdKTtcbiAgICBleHBvbmVudCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoZXhwb25lbnQsIDIpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoXG5mdW5jdGlvbiBCYXNlX2hhc2hfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaCgxLDEsMCxzKVxufVxuLy9Qcm92aWRlczogQmFzZV9oYXNoX2RvdWJsZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoXG5mdW5jdGlvbiBCYXNlX2hhc2hfZG91YmxlKGQpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaCgxLDEsMCxkKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9hbV90ZXN0aW5nIGNvbnN0XG4vL1dlYWtkZWZcbmZ1bmN0aW9uIEJhc2VfYW1fdGVzdGluZyh4KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG52YXIgY2FtbF9kb21haW5fZGxzID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19zZXQoYSkge1xuICBjYW1sX2RvbWFpbl9kbHMgPSBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19nZXQodW5pdCkge1xuICByZXR1cm4gY2FtbF9kb21haW5fZGxzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWQocmVmKXtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfY2FzXG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLG8sbikge1xuICBpZihyZWZbMV0gPT09IG8pe1xuICAgIHJlZlsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZmV0Y2hfYWRkKHJlZiwgaSkge1xuICB2YXIgb2xkID0gcmVmWzFdO1xuICByZWZbMV0gKz0gaTtcbiAgcmV0dXJuIG9sZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZXhjaGFuZ2VcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZChhKSB7XG4gIHJldHVybiBbMCwgYV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG52YXIgY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyA9IFswXVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl9cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fc2V0X25hbWUoX25hbWUpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCh1bml0KSB7IHJldHVybiAxIH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9pZFxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZix0ZXJtX3N5bmMpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sodGVybV9zeW5jWzJdKTtcbiAgICAvL1RPRE86IGZpeCBleG4gY2FzZVxuICAgIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gICAgcmV0dXJuIGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsbXV0ZXgpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sobXV0ZXgpO1xuICAgIHJldHVybiBpZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2lkKHVuaXQpe1xuICAgIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCh1bml0KXtcbiAgICByZXR1cm4gMDtcbn1cbiIsIlxuLy9Qcm92aWRlczogTWxNdXRleFxuZnVuY3Rpb24gTWxNdXRleCgpIHtcbiAgdGhpcy5sb2NrZWQgPSBmYWxzZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcodW5pdCkge1xuICByZXR1cm4gbmV3IE1sTXV0ZXgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X2xvY2sodCkge1xuICBpZih0LmxvY2tlZClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYoIXQubG9ja2VkKSB7XG4gICAgdC5sb2NrZWQgPSB0cnVlO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF91bmxvY2sodCkge1xuICB0LmxvY2tlZCA9IGZhbHNlO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gM1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfZGF0YV9vZmZzZXQgPSAyXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2tleSh4LCBpLCB2KSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmICh2IGluc3RhbmNlb2YgT2JqZWN0ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0ucmVnaXN0ZXIpIHhbMV0ucmVnaXN0ZXIodiwgdW5kZWZpbmVkLCB2KTtcbiAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBuZXcgZ2xvYmFsVGhpcy5XZWFrUmVmKHYpO1xuICB9XG4gIGVsc2UgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFsxXS51bnJlZ2lzdGVyKSB7XG4gICAgdmFyIG9sZCA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXS5kZXJlZigpO1xuICAgIGlmKG9sZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgY291bnQgPSAwXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKXtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKVxuICAgICAgICAgIGlmKGtleSA9PT0gb2xkKSBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihjb3VudCA9PSAxKSB4WzFdLnVucmVnaXN0ZXIob2xkKTtcbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jcmVhdGUsIGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZSAobikge1xuICB2YXIgeCA9IGNhbWxfd2Vha19jcmVhdGUobik7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2NyZWF0ZSAobikge1xuICBpZiAobiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgdmFyIHggPSBbMjUxLFwiY2FtbF9lcGhlX2xpc3RfaGVhZFwiXTtcbiAgeC5sZW5ndGggPSBjYW1sX2VwaGVfa2V5X29mZnNldCArIG47XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYodiA9PSAwKSBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsaSlcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2tleSh4LGksdlsxXSlcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgcmV0dXJuICh3ZWFrPT09dW5kZWZpbmVkKT8wOlswLCB3ZWFrXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfa2V5LGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXAsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9jb3B5XCIpO1xuICB2YXIgeSA9IGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2tleSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2NoZWNrXG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICBpZih3ZWFrPT09dW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIC8vIG1pbnVzIG9uZSBiZWNhdXNlIGNhbWxfYXJyYXlfYmxpdCB3b3JrcyBvbiBvY2FtbCBhcnJheVxuICBjYW1sX2FycmF5X2JsaXQoYTEsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgICAgICAgICAgICAgICAgYTIsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgICAgICAgICAgICAgICAgbGVuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX3NldF9kYXRhLCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCl7XG4gIHZhciBuID0gc3JjW2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmKG4gPT09IHVuZGVmaW5lZCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoZHN0KTtcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2RhdGEoZHN0LCBuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoISAoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpKSB7XG4gICAgICB4WzFdID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKCkgeyBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB9KTtcbiAgICAgIC8vcmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0ucmVnaXN0ZXIoa2V5LCB1bmRlZmluZWQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gZGF0YTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSl7XG4gICAgICAvL3VucmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0udW5yZWdpc3RlcihrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiLy9Qcm92aWRlczoganNfcGVyZm9ybWFuY2VcbnZhciBqc19wZXJmb3JtYW5jZSA9IHttYXJrOiAoZnVuY3Rpb24gKCkge30pLCBtZWFzdXJlOiAoZnVuY3Rpb24gKCkge30pIH07XG5pZiAodHlwZW9mIGpvb19nbG9iYWxfb2JqZWN0LnBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGpzX3BlcmZvcm1hbmNlID0gam9vX2dsb2JhbF9vYmplY3QucGVyZm9ybWFuY2U7XG59IGVsc2Uge1xuICB0cnkge1xuICAgIGpzX3BlcmZvcm1hbmNlID0gcmVxdWlyZSgncGVyZl9ob29rcycpLnBlcmZvcm1hbmNlO1xuICB9IGNhdGNoIChfZSkge1xuICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihcImNvdWxkbid0IGxvYWQgcGVyZm9ybWFuY2UgaG9va3NcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9tYXJrXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX21hcmsobmFtZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLm1hcmsoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX21lYXN1cmVcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfbWVhc3VyZShuYW1lLCBzdGFydCwgZW5kKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UubWVhc3VyZShcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSksIFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzdGFydCksIFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhlbmQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfY2xlYXJfbWFya3Ncbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfY2xlYXJfbWFya3MoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UuY2xlYXJNYXJrcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9jbGVhcl9tZWFzdXJlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9jbGVhcl9tZWFzdXJlcygpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2x4bV9uZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfeG9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25ld19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbHhtX25leHQodikge1xuICBmdW5jdGlvbiBzaGlmdF9sKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBzaGlmdF9yKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gb3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfb3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiB4b3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfeG9yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gYWRkKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X2FkZChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIG11bChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiByb3RsKHgsIGspIHtcbiAgICByZXR1cm4gb3Ioc2hpZnRfbCh4LGspLHNoaWZ0X3IgKHgsIDY0IC0gaykpO1xuICB9XG4gIGZ1bmN0aW9uIGdldChhLCBpKSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfZ2V0XzEoYSwgaSk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0KGEsIGksIHgpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9zZXRfMShhLCBpLCB4KTtcbiAgfVxuICB2YXIgTSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZDEzNDI1NDNkZTgyZWY5NVwiKSk7XG4gIHZhciBkYWJhID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkYWJhMGI2ZWIwOTMyMmUzXCIpKTtcbiAgdmFyIHosIHEwLCBxMTtcbiAgdmFyIHN0ID0gdjtcbiAgdmFyIGEgPSBnZXQoc3QsMCk7XG4gIHZhciBzID0gZ2V0KHN0LDEpO1xuICB2YXIgeDAgPSBnZXQoc3QsMik7XG4gIHZhciB4MSA9IGdldChzdCwzKTtcbiAgLyogQ29tYmluaW5nIG9wZXJhdGlvbiAqL1xuICB6ID0gYWRkKHMsIHgwKTtcbiAgLyogTWl4aW5nIGZ1bmN0aW9uICovXG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IHhvcih6LHNoaWZ0X3IoeiwzMikpO1xuICAvKiBMQ0cgdXBkYXRlICovXG4gIHNldChzdCwgMSwgYWRkIChtdWwocyxNKSwgYSkpO1xuICAvKiBYQkcgdXBkYXRlICovXG4gIHZhciBxMCA9IHgwXG4gIHZhciBxMSA9IHgxXG4gIHExID0geG9yKHExLHEwKTtcbiAgcTAgPSByb3RsKHEwLCAyNCk7XG4gIHEwID0geG9yKHhvcihxMCwgcTEpLCAoc2hpZnRfbChxMSwxNikpKTtcbiAgcTEgPSByb3RsKHExLCAzNyk7XG4gIHNldChzdCwgMiwgcTApO1xuICBzZXQoc3QsIDMsIHExKTtcbiAgLyogUmV0dXJuIHJlc3VsdCAqL1xuICByZXR1cm4gejtcbn1cbiIsIlxuLy9Qcm92aWRlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMVxudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG5cInVzZSBzdHJpY3RcIjtcbi8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG52YXIgYWIgPSBBcnJheUJ1ZmZlciwgdTggPSBVaW50OEFycmF5LCB1MTYgPSBVaW50MTZBcnJheSwgaTE2ID0gSW50MTZBcnJheSwgdTMyID0gVWludDMyQXJyYXksIGkzMiA9IEludDMyQXJyYXk7XG52YXIgc2xjID0gZnVuY3Rpb24gKHYsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLnNsaWNlKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLnNsaWNlLmNhbGwodiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB2YXIgbiA9IG5ldyB1OChlIC0gcyk7XG4gICAgbi5zZXQodi5zdWJhcnJheShzLCBlKSk7XG4gICAgcmV0dXJuIG47XG59O1xudmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbClcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcylcbiAgICAgICAgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG59O1xudmFyIGNwdyA9IGZ1bmN0aW9uICh2LCB0LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5jb3B5V2l0aGluKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmNvcHlXaXRoaW4uY2FsbCh2LCB0LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHdoaWxlIChzIDwgZSkge1xuICAgICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxufTtcbi8qKlxuICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICovXG4vLyBlcnJvciBjb2Rlc1xudmFyIGVjID0gW1xuICAgICdpbnZhbGlkIHpzdGQgZGF0YScsXG4gICAgJ3dpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQiknLFxuICAgICdpbnZhbGlkIGJsb2NrIHR5cGUnLFxuICAgICdGU0UgYWNjdXJhY3kgdG9vIGhpZ2gnLFxuICAgICdtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2snLFxuICAgICd1bmV4cGVjdGVkIEVPRidcbl07XG47XG52YXIgZXJyID0gZnVuY3Rpb24gKGluZCwgbXNnLCBudCkge1xuICAgIHZhciBlID0gbmV3IEVycm9yKG1zZyB8fCBlY1tpbmRdKTtcbiAgICBlLmNvZGUgPSBpbmQ7XG4gICAgaWYgKCFudClcbiAgICAgICAgdGhyb3cgZTtcbiAgICByZXR1cm4gZTtcbn07XG52YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCwgbyA9IDA7XG4gICAgZm9yICg7IGkgPCBuOyArK2kpXG4gICAgICAgIG8gfD0gZFtiKytdIDw8IChpIDw8IDMpO1xuICAgIHJldHVybiBvO1xufTtcbnZhciBiNCA9IGZ1bmN0aW9uIChkLCBiKSB7IHJldHVybiAoZFtiXSB8IChkW2IgKyAxXSA8PCA4KSB8IChkW2IgKyAyXSA8PCAxNikgfCAoZFtiICsgM10gPDwgMjQpKSA+Pj4gMDsgfTtcbi8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxudmFyIHJ6ZmggPSBmdW5jdGlvbiAoZGF0LCB3KSB7XG4gICAgdmFyIG4zID0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSB8IChkYXRbMl0gPDwgMTYpO1xuICAgIGlmIChuMyA9PSAweDJGQjUyOCAmJiBkYXRbM10gPT0gMjUzKSB7XG4gICAgICAgIC8vIFpzdGFuZGFyZFxuICAgICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgICAvLyAgICBzaW5nbGUgc2VnbWVudCAgICAgICBjaGVja3N1bSAgICAgICAgICAgICBkaWN0IGZsYWcgICAgIGZyYW1lIGNvbnRlbnQgZmxhZ1xuICAgICAgICB2YXIgc3MgPSAoZmxnID4+IDUpICYgMSwgY2MgPSAoZmxnID4+IDIpICYgMSwgZGYgPSBmbGcgJiAzLCBmY2YgPSBmbGcgPj4gNjtcbiAgICAgICAgaWYgKGZsZyAmIDgpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vIGJ5dGVcbiAgICAgICAgdmFyIGJ0ID0gNiAtIHNzO1xuICAgICAgICAvLyBkaWN0IGJ5dGVzXG4gICAgICAgIHZhciBkYiA9IGRmID09IDMgPyA0IDogZGY7XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgaWRcbiAgICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgICBidCArPSBkYjtcbiAgICAgICAgLy8gZnJhbWUgc2l6ZSBieXRlc1xuICAgICAgICB2YXIgZnNiID0gZmNmID8gKDEgPDwgZmNmKSA6IHNzO1xuICAgICAgICAvLyBmcmFtZSBzb3VyY2Ugc2l6ZVxuICAgICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArICgoZmNmID09IDEpICYmIDI1Nik7XG4gICAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICAgIHZhciB3cyA9IGZzcztcbiAgICAgICAgaWYgKCFzcykge1xuICAgICAgICAgICAgLy8gd2luZG93IGRlc2NyaXB0b3JcbiAgICAgICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgICAgICB3cyA9IHdiICsgKHdiID4+IDMpICogKGRhdFs1XSAmIDcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3cyA+IDIxNDUzODY0OTYpXG4gICAgICAgICAgICBlcnIoMSk7XG4gICAgICAgIHZhciBidWYgPSBuZXcgdTgoKHcgPT0gMSA/IChmc3MgfHwgd3MpIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAgIGJ1ZlswXSA9IDEsIGJ1Zls0XSA9IDQsIGJ1Zls4XSA9IDg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiOiBidCArIGZzYixcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBsOiAwLFxuICAgICAgICAgICAgZDogZGksXG4gICAgICAgICAgICB3OiAodyAmJiB3ICE9IDEpID8gdyA6IGJ1Zi5zdWJhcnJheSgxMiksXG4gICAgICAgICAgICBlOiB3cyxcbiAgICAgICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgICAgICB1OiBmc3MsXG4gICAgICAgICAgICBjOiBjYyxcbiAgICAgICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT0gMHgxODREMkE1KSB7XG4gICAgICAgIC8vIHNraXBwYWJsZVxuICAgICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbn07XG4vLyBtb3N0IHNpZ25pZmljYW50IGJpdCBmb3Igbm9uemVyb1xudmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7ICgxIDw8IGJpdHMpIDw9IHZhbDsgKytiaXRzKVxuICAgICAgICA7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xufTtcbi8vIHJlYWQgZmluaXRlIHN0YXRlIGVudHJvcHlcbnZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKVxuICAgICAgICBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osIHN5bSA9IC0xLCByZSA9IC0xLCBpID0gLTEsIGh0ID0gc3o7XG4gICAgLy8gb3B0aW1pemF0aW9uOiBzaW5nbGUgYWxsb2NhdGlvbiBpcyBtdWNoIGZhc3RlclxuICAgIHZhciBidWYgPSBuZXcgYWIoNTEyICsgKHN6IDw8IDIpKTtcbiAgICB2YXIgZnJlcSA9IG5ldyBpMTYoYnVmLCAwLCAyNTYpO1xuICAgIC8vIHNhbWUgdmlldyBhcyBmcmVxXG4gICAgdmFyIGRzdGF0ZSA9IG5ldyB1MTYoYnVmLCAwLCAyNTYpO1xuICAgIHZhciBuc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgNTEyLCBzeik7XG4gICAgdmFyIGJiMSA9IDUxMiArIChzeiA8PCAxKTtcbiAgICB2YXIgc3ltcyA9IG5ldyB1OChidWYsIGJiMSwgc3opO1xuICAgIHZhciBuYml0cyA9IG5ldyB1OChidWYsIGJiMSArIHN6KTtcbiAgICB3aGlsZSAoc3ltIDwgMjU1ICYmIHByb2JzID4gMCkge1xuICAgICAgICB2YXIgYml0cyA9IG1zYihwcm9icyArIDEpO1xuICAgICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgICAvLyBtYXNrXG4gICAgICAgIHZhciBtc2sgPSAoMSA8PCAoYml0cyArIDEpKSAtIDE7XG4gICAgICAgIHZhciB2YWwgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAodHBvcyAmIDcpKSAmIG1zaztcbiAgICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICAgIHZhciBtc2sxZmIgPSAoMSA8PCBiaXRzKSAtIDE7XG4gICAgICAgIC8vIG1heCBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgICAvLyBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgc3ZhbCA9IHZhbCAmIG1zazFmYjtcbiAgICAgICAgaWYgKHN2YWwgPCBtc3YpXG4gICAgICAgICAgICB0cG9zICs9IGJpdHMsIHZhbCA9IHN2YWw7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgICAgIGlmICh2YWwgPiBtc2sxZmIpXG4gICAgICAgICAgICAgICAgdmFsIC09IG1zdjtcbiAgICAgICAgfVxuICAgICAgICBmcmVxWysrc3ltXSA9IC0tdmFsO1xuICAgICAgICBpZiAodmFsID09IC0xKSB7XG4gICAgICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgICAgICBzeW1zWy0taHRdID0gc3ltO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHByb2JzIC09IHZhbDtcbiAgICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAvLyByZXBlYXQgYnl0ZVxuICAgICAgICAgICAgICAgIHZhciByYnQgPSB0cG9zID4+IDM7XG4gICAgICAgICAgICAgICAgcmUgPSAoKGRhdFtyYnRdIHwgKGRhdFtyYnQgKyAxXSA8PCA4KSkgPj4gKHRwb3MgJiA3KSkgJiAzO1xuICAgICAgICAgICAgICAgIHRwb3MgKz0gMjtcbiAgICAgICAgICAgICAgICBzeW0gKz0gcmU7XG4gICAgICAgICAgICB9IHdoaWxlIChyZSA9PSAzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICAgIHZhciBzZiA9IGZyZXFbc107XG4gICAgICAgIGlmIChzZiA8IDEpIHtcbiAgICAgICAgICAgIGRzdGF0ZVtzXSA9IC1zZjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgc3BsaXQgaW50byB0d28gbG9vcHMgaW4genN0ZCB0byBhdm9pZCBicmFuY2hpbmcsIGJ1dCBhcyBKUyBpcyBoaWdoZXItbGV2ZWwgdGhhdCBpcyB1bm5lY2Vzc2FyeVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICAgICAgc3ltc1tzeW1wb3NdID0gcztcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBzeW1wb3MgPSAoc3ltcG9zICsgc3N0ZXApICYgc21hc2s7XG4gICAgICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIHNwcmVhZGluZyBzeW1ib2xzLCBzaG91bGQgYmUgemVybyBhZ2FpblxuICAgIGlmIChzeW1wb3MpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc3o7ICsraSkge1xuICAgICAgICAvLyBuZXh0IHN0YXRlXG4gICAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgICAvLyBudW0gYml0c1xuICAgICAgICB2YXIgbmIgPSBuYml0c1tpXSA9IGFsIC0gbXNiKG5zKTtcbiAgICAgICAgbnN0YXRlW2ldID0gKG5zIDw8IG5iKSAtIHN6O1xuICAgIH1cbiAgICByZXR1cm4gWyh0cG9zICsgNykgPj4gMywge1xuICAgICAgICAgICAgYjogYWwsXG4gICAgICAgICAgICBzOiBzeW1zLFxuICAgICAgICAgICAgbjogbmJpdHMsXG4gICAgICAgICAgICB0OiBuc3RhdGVcbiAgICAgICAgfV07XG59O1xuLy8gcmVhZCBodWZmbWFuXG52YXIgcmh1ID0gZnVuY3Rpb24gKGRhdCwgYnQpIHtcbiAgICAvLyAgaW5kZXggIHdlaWdodCBjb3VudFxuICAgIHZhciBpID0gMCwgd2MgPSAtMTtcbiAgICAvLyAgICBidWZmZXIgICAgICAgICAgICAgaGVhZGVyIGJ5dGVcbiAgICB2YXIgYnVmID0gbmV3IHU4KDI5MiksIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgICAgLy8gZW5kIGJ5dGUsIGZzZSBkZWNvZGUgdGFibGVcbiAgICAgICAgdmFyIF9hID0gcmZzZShkYXQsIGJ0ICsgMSwgNiksIGVidCA9IF9hWzBdLCBmZHQgPSBfYVsxXTtcbiAgICAgICAgYnQgKz0gaGI7XG4gICAgICAgIHZhciBlcG9zID0gZWJ0IDw8IDM7XG4gICAgICAgIC8vIGxhc3QgYnl0ZVxuICAgICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyAgc3RhdGUxICAgc3RhdGUyICAgc3RhdGUxIGJpdHMgICBzdGF0ZTIgYml0c1xuICAgICAgICB2YXIgc3QxID0gMCwgc3QyID0gMCwgYnRyMSA9IGZkdC5iLCBidHIyID0gYnRyMTtcbiAgICAgICAgLy8gZnNlIHBvc1xuICAgICAgICAvLyBwcmUtaW5jcmVtZW50IHRvIGFjY291bnQgZm9yIG9yaWdpbmFsIGRlZmljaXQgb2YgMVxuICAgICAgICB2YXIgZnBvcyA9ICgrK2J0IDw8IDMpIC0gOCArIG1zYihsYik7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMTtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIHZhciBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDEgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjEpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0MV07XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDIgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0Ml07XG4gICAgICAgICAgICBidHIxID0gZmR0Lm5bc3QxXTtcbiAgICAgICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgICAgICBidHIyID0gZmR0Lm5bc3QyXTtcbiAgICAgICAgICAgIHN0MiA9IGZkdC50W3N0Ml07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCsrd2MgPiAyNTUpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3YyA9IGhiIC0gMTI3O1xuICAgICAgICBmb3IgKDsgaSA8IHdjOyBpICs9IDIpIHtcbiAgICAgICAgICAgIHZhciBieXRlID0gZGF0WysrYnRdO1xuICAgICAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgICAgICBod1tpICsgMV0gPSBieXRlICYgMTU7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICB9XG4gICAgLy8gd2VpZ2h0IGV4cG9uZW50aWFsIHN1bVxuICAgIHZhciB3ZXMgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgICAgaWYgKHd0ID4gMTEpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIHdlcyArPSB3dCAmJiAoMSA8PCAod3QgLSAxKSk7XG4gICAgfVxuICAgIC8vIG1heCBiaXRzXG4gICAgdmFyIG1iID0gbXNiKHdlcykgKyAxO1xuICAgIC8vIHRhYmxlIHNpemVcbiAgICB2YXIgdHMgPSAxIDw8IG1iO1xuICAgIC8vIHJlbWFpbmluZyBzdW1cbiAgICB2YXIgcmVtID0gdHMgLSB3ZXM7XG4gICAgLy8gbXVzdCBiZSBwb3dlciBvZiAyXG4gICAgaWYgKHJlbSAmIChyZW0gLSAxKSlcbiAgICAgICAgZXJyKDApO1xuICAgIGh3W3djKytdID0gbXNiKHJlbSkgKyAxO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICArK3JjW2h3W2ldID0gd3QgJiYgKG1iICsgMSAtIHd0KV07XG4gICAgfVxuICAgIC8vIGh1ZiBidWZcbiAgICB2YXIgaGJ1ZiA9IG5ldyB1OCh0cyA8PCAxKTtcbiAgICAvLyAgICBzeW1ib2xzICAgICAgICAgICAgICAgICAgICAgIG51bSBiaXRzXG4gICAgdmFyIHN5bXMgPSBoYnVmLnN1YmFycmF5KDAsIHRzKSwgbmIgPSBoYnVmLnN1YmFycmF5KHRzKTtcbiAgICByaVttYl0gPSAwO1xuICAgIGZvciAoaSA9IG1iOyBpID4gMDsgLS1pKSB7XG4gICAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgICBmaWxsKG5iLCBpLCBwdiwgcmlbaSAtIDFdID0gcHYgKyByY1tpXSAqICgxIDw8IChtYiAtIGkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPSB0cylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciBiaXRzID0gaHdbaV07XG4gICAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJpW2JpdHNdO1xuICAgICAgICAgICAgZmlsbChzeW1zLCBpLCBjb2RlLCByaVtiaXRzXSA9IGNvZGUgKyAoMSA8PCAobWIgLSBiaXRzKSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbYnQsIHtcbiAgICAgICAgICAgIG46IG5iLFxuICAgICAgICAgICAgYjogbWIsXG4gICAgICAgICAgICBzOiBzeW1zXG4gICAgICAgIH1dO1xufTtcbi8vIFRhYmxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhpczpcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzEwMWFycm93ei9hOTc5NDUyZDQzNTU5OTJjYmY4ZjI1N2NiZmZjOWVkZFxuLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxudmFyIGRsbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDgxLCAxNiwgOTksIDE0MCwgNDksIDE5OCwgMjQsIDk5LCAxMiwgMzMsIDE5NiwgMjQsIDk5LCAxMDIsIDEwMiwgMTM0LCA3MCwgMTQ2LCA0XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxudmFyIGRtbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMzLCAyMCwgMTk2LCAyNCwgOTksIDE0MCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA5XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG52YXIgZG9jdCA9IC8qI19fUFVSRV9fICovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMyLCAxMzIsIDE2LCA2NiwgMTAyLCA3MCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA3MywgMlxuXSksIDAsIDUpWzFdO1xuLy8gYml0cyB0byBiYXNlbGluZVxudmFyIGIyYmwgPSBmdW5jdGlvbiAoYiwgcykge1xuICAgIHZhciBsZW4gPSBiLmxlbmd0aCwgYmwgPSBuZXcgaTMyKGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICBibFtpXSA9IHM7XG4gICAgICAgIHMgKz0gMSA8PCBiW2ldO1xuICAgIH1cbiAgICByZXR1cm4gYmw7XG59O1xuLy8gbGl0ZXJhbCBsZW5ndGggYml0c1xudmFyIGxsYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMzQ2NzgwMjAsIDIwMjA1MDA1NywgMjY5NDIyMDkzXG5dKSkuYnVmZmVyLCAwLCAzNik7XG4vLyBsaXRlcmFsIGxlbmd0aCBiYXNlbGluZVxudmFyIGxsYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKGxsYiwgMCk7XG4vLyBtYXRjaCBsZW5ndGggYml0c1xudmFyIG1sYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCwgMjUyNTc5MDg0LCAxNlxuXSkpLmJ1ZmZlciwgMCwgNTMpO1xuLy8gbWF0Y2ggbGVuZ3RoIGJhc2VsaW5lXG52YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbVxudmFyIGRodSA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgbGVuID0gZGF0Lmxlbmd0aCwgc3MgPSBvdXQubGVuZ3RoLCBsYiA9IGRhdFtsZW4gLSAxXSwgbXNrID0gKDEgPDwgaHUuYikgLSAxLCBlYiA9IC1odS5iO1xuICAgIGlmICghbGIpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3QgPSAwLCBidHIgPSBodS5iLCBwb3MgPSAobGVuIDw8IDMpIC0gOCArIG1zYihsYikgLSBidHIsIGkgPSAtMTtcbiAgICBmb3IgKDsgcG9zID4gZWIgJiYgaSA8IHNzOykge1xuICAgICAgICB2YXIgY2J0ID0gcG9zID4+IDM7XG4gICAgICAgIHZhciB2YWwgPSAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgICAgc3QgPSAoKHN0IDw8IGJ0cikgfCB2YWwpICYgbXNrO1xuICAgICAgICBvdXRbKytpXSA9IGh1LnNbc3RdO1xuICAgICAgICBwb3MgLT0gKGJ0ciA9IGh1Lm5bc3RdKTtcbiAgICB9XG4gICAgaWYgKHBvcyAhPSBlYiB8fCBpICsgMSAhPSBzcylcbiAgICAgICAgZXJyKDApO1xufTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbSA0eFxuLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbnZhciBkaHU0ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBidCA9IDY7XG4gICAgdmFyIHNzID0gb3V0Lmxlbmd0aCwgc3oxID0gKHNzICsgMykgPj4gMiwgc3oyID0gc3oxIDw8IDEsIHN6MyA9IHN6MSArIHN6MjtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpKSwgb3V0LnN1YmFycmF5KDAsIHN6MSksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6MSwgc3oyKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFs0XSB8IChkYXRbNV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCksIG91dC5zdWJhcnJheShzejMpLCBodSk7XG59O1xuLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbnZhciByemIgPSBmdW5jdGlvbiAoZGF0LCBzdCwgb3V0KSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBidCA9IHN0LmI7XG4gICAgLy8gICAgYnl0ZSAwICAgICAgICBibG9jayB0eXBlXG4gICAgdmFyIGIwID0gZGF0W2J0XSwgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09IDEpIHtcbiAgICAgICAgaWYgKGJ0ID49IGRhdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN0LmIgPSBidCArIDE7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIGZpbGwob3V0LCBkYXRbYnRdLCBzdC55LCBzdC55ICs9IHN6KTtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGwobmV3IHU4KHN6KSwgZGF0W2J0XSk7XG4gICAgfVxuICAgIGlmIChlYnQgPiBkYXQubGVuZ3RoKVxuICAgICAgICByZXR1cm47XG4gICAgaWYgKGJ0eXBlID09IDApIHtcbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgb3V0LnNldChkYXQuc3ViYXJyYXkoYnQsIGVidCksIHN0LnkpO1xuICAgICAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNsYyhkYXQsIGJ0LCBlYnQpO1xuICAgIH1cbiAgICBpZiAoYnR5cGUgPT0gMikge1xuICAgICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgICAgdmFyIGIzID0gZGF0W2J0XSwgbGJ0ID0gYjMgJiAzLCBzZiA9IChiMyA+PiAyKSAmIDM7XG4gICAgICAgIC8vIGxpdCBzcmMgc2l6ZSAgbGl0IGNtcCBzeiA0IHN0cmVhbXNcbiAgICAgICAgdmFyIGxzcyA9IGIzID4+IDQsIGxjcyA9IDAsIHM0ID0gMDtcbiAgICAgICAgaWYgKGxidCA8IDIpIHtcbiAgICAgICAgICAgIGlmIChzZiAmIDEpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKHNmICYgMikgJiYgKGRhdFsrK2J0XSA8PCAxMikpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyA9IGIzID4+IDM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHNmO1xuICAgICAgICAgICAgaWYgKHNmIDwgMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKChkYXRbKytidF0gJiA2MykgPDwgNCksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNmID09IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiA2MykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikgfCAoZGF0WysrYnRdIDw8IDEwKTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgICAgICAvLyBhZGQgbGl0ZXJhbHMgdG8gZW5kIC0gY2FuIG5ldmVyIG92ZXJsYXAgd2l0aCBiYWNrcmVmZXJlbmNlcyBiZWNhdXNlIHVudXNlZCBsaXRlcmFscyBhbHdheXMgYXBwZW5kZWRcbiAgICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAgIC8vIHN0YXJ0aW5nIHBvaW50IGZvciBsaXRlcmFsc1xuICAgICAgICB2YXIgc3BsID0gYnVmLmxlbmd0aCAtIGxzcztcbiAgICAgICAgaWYgKGxidCA9PSAwKVxuICAgICAgICAgICAgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxzcyksIHNwbCk7XG4gICAgICAgIGVsc2UgaWYgKGxidCA9PSAxKVxuICAgICAgICAgICAgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgICAgICB2YXIgaHUgPSBzdC5oO1xuICAgICAgICAgICAgaWYgKGxidCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGh1ZCA9IHJodShkYXQsIGJ0KTtcbiAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdCBkZXNjcmlwdGlvbiBsZW5ndGhcbiAgICAgICAgICAgICAgICBsY3MgKz0gYnQgLSAoYnQgPSBodWRbMF0pO1xuICAgICAgICAgICAgICAgIHN0LmggPSBodSA9IGh1ZFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFodSlcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxjcyksIGJ1Zi5zdWJhcnJheShzcGwpLCBodSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbnVtIHNlcXVlbmNlc1xuICAgICAgICB2YXIgbnMgPSBkYXRbYnQrK107XG4gICAgICAgIGlmIChucykge1xuICAgICAgICAgICAgaWYgKG5zID09IDI1NSlcbiAgICAgICAgICAgICAgICBucyA9IChkYXRbYnQrK10gfCAoZGF0W2J0KytdIDw8IDgpKSArIDB4N0YwMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KVxuICAgICAgICAgICAgICAgIG5zID0gKChucyAtIDEyOCkgPDwgOCkgfCBkYXRbYnQrK107XG4gICAgICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgICAgIHZhciBzY20gPSBkYXRbYnQrK107XG4gICAgICAgICAgICBpZiAoc2NtICYgMylcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgZHRzID0gW2RtbHQsIGRvY3QsIGRsbHRdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgICAgICAgIGlmIChtZCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJsZSBidWZcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbjogcmJ1Zi5zdWJhcnJheSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQ6IG5ldyB1MTYocmJ1Zi5idWZmZXIsIDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYjogMFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjY3VyYWN5IGxvZyA4IGZvciBvZmZzZXRzLCA5IGZvciBvdGhlcnNcbiAgICAgICAgICAgICAgICAgICAgX2EgPSByZnNlKGRhdCwgYnQsIDkgLSAoaSAmIDEpKSwgYnQgPSBfYVswXSwgZHRzW2ldID0gX2FbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdC50KVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBfYiA9IHN0LnQgPSBkdHMsIG1sdCA9IF9iWzBdLCBvY3QgPSBfYlsxXSwgbGx0ID0gX2JbMl07XG4gICAgICAgICAgICB2YXIgbGIgPSBkYXRbZWJ0IC0gMV07XG4gICAgICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBzcG9zID0gKGVidCA8PCAzKSAtIDggKyBtc2IobGIpIC0gbGx0LmIsIGNidCA9IHNwb3MgPj4gMywgb3VidCA9IDA7XG4gICAgICAgICAgICB2YXIgbHN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2N0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgb3N0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWx0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgbXN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICAgICAgZm9yICgrK25zOyAtLW5zOykge1xuICAgICAgICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgICAgICAgdmFyIG9mZiA9IG9mcCArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpIHwgKGRhdFtjYnQgKyAzXSA8PCAyNCkpID4+PiAoc3BvcyAmIDcpKSAmIChvZnAgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWxiW21sY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG1sID0gbWxibFttbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sYlttbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsbGJbbGxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbGwgPSBsbGJsW2xsY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbHN0ID0gbGx0LnRbbHN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBtc3QgPSBtbHQudFttc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG9zdCA9IG9jdC50W29zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IG9mZiAtIChsbCAhPSAwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gaWR4ID09IDMgPyBzdC5vWzBdIC0gMSA6IHN0Lm9baWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPiAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IGxsLCBzcGwgKz0gbGw7XG4gICAgICAgICAgICAgICAgdmFyIHN0aW4gPSBvdWJ0IC0gb2ZmO1xuICAgICAgICAgICAgICAgIGlmIChzdGluIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gLXN0aW47XG4gICAgICAgICAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gbWwpXG4gICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBtbDtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvdWJ0ICs9IGxlbiwgbWwgLT0gbGVuLCBzdGluID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91YnQgIT0gc3BsKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHNwbCA8IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdWJ0ID0gYnVmLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvdXQpXG4gICAgICAgICAgICAgICAgc3QueSArPSBvdWJ0O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIDAsIG91YnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgICAgIHN0LnkgKz0gbHNzO1xuICAgICAgICAgICAgICAgIGlmIChzcGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW2ldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3BsKVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIHNwbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgZXJyKDIpO1xufTtcbi8vIGNvbmNhdFxudmFyIGNjdCA9IGZ1bmN0aW9uIChidWZzLCBvbCkge1xuICAgIGlmIChidWZzLmxlbmd0aCA9PSAxKVxuICAgICAgICByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjaGsgPSBidWZzW2ldO1xuICAgICAgICBidWYuc2V0KGNoaywgYik7XG4gICAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn07XG4vKipcbiAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICogQHBhcmFtIGRhdCBUaGUgaW5wdXQgZGF0YVxuICogQHBhcmFtIGJ1ZiBUaGUgb3V0cHV0IGJ1ZmZlci4gSWYgdW5zcGVjaWZpZWQsIHRoZSBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlXG4gKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gKiAgICAgICAgICAgIGRhdGEgaGFzIG11bHRpcGxlIGZyYW1lcyBhbmQgeW91IGtub3cgdGhlIG91dHB1dCBzaXplLCBzcGVjaWZ5aW5nXG4gKiAgICAgICAgICAgIGl0IHdpbGwgeWllbGQgYmV0dGVyIHBlcmZvcm1hbmNlLlxuICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gKi9cbnJldHVybiBmdW5jdGlvbiBkZWNvbXByZXNzKGRhdCwgYnVmKSB7XG4gICAgdmFyIGJ0ID0gMCwgYnVmcyA9IFtdLCBuYiA9ICshYnVmLCBvbCA9IDA7XG4gICAgZm9yICg7IGRhdC5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBzdCA9IHJ6ZmgoZGF0LCBuYiB8fCBidWYpO1xuICAgICAgICBpZiAodHlwZW9mIHN0ID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAobmIpIHtcbiAgICAgICAgICAgICAgICBidWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzdC53Lmxlbmd0aCA9PSBzdC51KSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYgPSBzdC53KTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmKTtcbiAgICAgICAgICAgICAgICBzdC5lID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoOyAhc3QubDspIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxrID0gcnpiKGRhdCwgc3QsIGJ1Zik7XG4gICAgICAgICAgICAgICAgaWYgKCFibGspXG4gICAgICAgICAgICAgICAgICAgIGVycig1KTtcbiAgICAgICAgICAgICAgICBpZiAoYnVmKVxuICAgICAgICAgICAgICAgICAgICBzdC5lID0gc3QueTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJsayk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNwdyhzdC53LCAwLCBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgc3Qudy5zZXQoYmxrLCBzdC53Lmxlbmd0aCAtIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ0ID0gc3QuYiArIChzdC5jICogNCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnQgPSBzdDtcbiAgICAgICAgZGF0ID0gZGF0LnN1YmFycmF5KGJ0KTtcbiAgICB9XG4gICAgcmV0dXJuIGNjdChidWZzLCBvbCk7XG59XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjBcbi8vVmVyc2lvbjogPCA1LjEuMVxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjFcbi8vVmVyc2lvbjogPCA1LjIuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMlxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3pzdGRfaW5pdGlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xLjFcbmZ1bmN0aW9uIGNhbWxfenN0ZF9pbml0aWFsaXplKHVuaXQpIHtcbiAgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuICByZXR1cm4gMVxufVxuXG4iLCIvL1Byb3ZpZGVzOiBjYW1sX29qc193cmFwX2Z1bl9hcmd1bWVudHNcbi8vUmVxdWlyZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9vanNfd3JhcF9mdW5fYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikoYXJndW1lbnRzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNfdG9fc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXMobywgZikge1xuICB2YXIgbmFtZTtcbiAgZm9yKG5hbWUgaW4gbykge1xuICAgIGlmKG8uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGYobmFtZSk7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8gVElNRV9OT1dcblxuLy9Qcm92aWRlczogdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxudmFyIG1zX3RvX25hbm8gPSBjYW1sX2ludDY0X29mX2ludDMyKDEwMDAqMTAwMCk7XG5mdW5jdGlvbiB0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm8oKXtcbiAgICB2YXIgbXMgPSBEYXRlLm5vdygpO1xuICAgIC8vIG11bHRpcGxlIGJ5IHR3byAtIGludDYzIGludGVnZXJzIGFyZSBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICAgdmFyIG1zX2k2MyA9IGNhbWxfaW50NjRfb2ZfZmxvYXQobXMqMik7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKG1zX2k2Myxtc190b19uYW5vKTtcbn1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldCByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBoZCA6OiB0bCAtPiBoZCA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbigqIGZvciBhdF9leGl0ICopXG50eXBlICdhIGF0b21pY190XG5leHRlcm5hbCBhdG9taWNfbWFrZSA6ICdhIC0+ICdhIGF0b21pY190ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgYXRvbWljX2dldCA6ICdhIGF0b21pY190IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgYXRvbWljX2NvbXBhcmVfYW5kX3NldCA6ICdhIGF0b21pY190IC0+ICdhIC0+ICdhIC0+IGJvb2xcbiAgPSBcIiVhdG9taWNfY2FzXCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBhdG9taWNfbWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IGF0b21pY19tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgYXRvbWljX2NvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gYXRvbWljX2NvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19kb21haW5fbG9jYWxfYXRfZXhpdCA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gICghZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQpICgpO1xuICAoYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgICAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgICA9IENvbXBsZXhcbm1vZHVsZSBDb25kaXRpb24gICAgICA9IENvbmRpdGlvblxubW9kdWxlIERpZ2VzdCAgICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRG9tYWluICAgICAgICAgPSBEb21haW5cbm1vZHVsZSBFZmZlY3QgICAgICAgICA9IEVmZmVjdFxubW9kdWxlIEVpdGhlciAgICAgICAgID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uICAgICAgPSBFcGhlbWVyb25cbm1vZHVsZSBGaWxlbmFtZSAgICAgICA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgICAgICAgICAgPSBGbG9hdFxubW9kdWxlIEZvcm1hdCAgICAgICAgID0gRm9ybWF0XG5tb2R1bGUgRnVuICAgICAgICAgICAgPSBGdW5cbm1vZHVsZSBHYyAgICAgICAgICAgICA9IEdjXG5tb2R1bGUgSGFzaHRibCAgICAgICAgPSBIYXNodGJsXG5tb2R1bGUgSW5fY2hhbm5lbCAgICAgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW50ICAgICAgICAgICAgPSBJbnRcbm1vZHVsZSBJbnQzMiAgICAgICAgICA9IEludDMyXG5tb2R1bGUgSW50NjQgICAgICAgICAgPSBJbnQ2NFxubW9kdWxlIExhenkgICAgICAgICAgID0gTGF6eVxubW9kdWxlIExleGluZyAgICAgICAgID0gTGV4aW5nXG5tb2R1bGUgTGlzdCAgICAgICAgICAgPSBMaXN0XG5tb2R1bGUgTGlzdExhYmVscyAgICAgPSBMaXN0TGFiZWxzXG5tb2R1bGUgTWFwICAgICAgICAgICAgPSBNYXBcbm1vZHVsZSBNYXJzaGFsICAgICAgICA9IE1hcnNoYWxcbm1vZHVsZSBNb3JlTGFiZWxzICAgICA9IE1vcmVMYWJlbHNcbm1vZHVsZSBNdXRleCAgICAgICAgICA9IE11dGV4XG5tb2R1bGUgTmF0aXZlaW50ICAgICAgPSBOYXRpdmVpbnRcbm1vZHVsZSBPYmogICAgICAgICAgICA9IE9ialxubW9kdWxlIE9vICAgICAgICAgICAgID0gT29cbm1vZHVsZSBPcHRpb24gICAgICAgICA9IE9wdGlvblxubW9kdWxlIE91dF9jaGFubmVsICAgID0gT3V0X2NoYW5uZWxcbm1vZHVsZSBQYXJzaW5nICAgICAgICA9IFBhcnNpbmdcbm1vZHVsZSBQcmludGV4YyAgICAgICA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmICAgICAgICAgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSAgICAgICAgICA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tICAgICAgICAgPSBSYW5kb21cbm1vZHVsZSBSZXN1bHQgICAgICAgICA9IFJlc3VsdFxubW9kdWxlIFNjYW5mICAgICAgICAgID0gU2NhbmZcbm1vZHVsZSBTZW1hcGhvcmUgICAgICA9IFNlbWFwaG9yZVxubW9kdWxlIFNlcSAgICAgICAgICAgID0gU2VxXG5tb2R1bGUgU2V0ICAgICAgICAgICAgPSBTZXRcbm1vZHVsZSBTdGFjayAgICAgICAgICA9IFN0YWNrXG5tb2R1bGUgU3RkTGFiZWxzICAgICAgPSBTdGRMYWJlbHNcbm1vZHVsZSBTdHJpbmcgICAgICAgICA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ0xhYmVscyAgID0gU3RyaW5nTGFiZWxzXG5tb2R1bGUgU3lzICAgICAgICAgICAgPSBTeXNcbm1vZHVsZSBVY2hhciAgICAgICAgICA9IFVjaGFyXG5tb2R1bGUgVW5pdCAgICAgICAgICAgPSBVbml0XG5tb2R1bGUgV2VhayAgICAgICAgICAgPSBXZWFrXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnNpZmFsLCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuXG5sZXQgbGVmdCB2ID0gTGVmdCB2XG5sZXQgcmlnaHQgdiA9IFJpZ2h0IHZcblxubGV0IGlzX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gdHJ1ZVxufCBSaWdodCBfIC0+IGZhbHNlXG5cbmxldCBpc19yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBmYWxzZVxufCBSaWdodCBfIC0+IHRydWVcblxubGV0IGZpbmRfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBTb21lIHZcbnwgUmlnaHQgXyAtPiBOb25lXG5cbmxldCBmaW5kX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IE5vbmVcbnwgUmlnaHQgdiAtPiBTb21lIHZcblxubGV0IG1hcF9sZWZ0IGYgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAoZiB2KVxufCBSaWdodCBfIGFzIGUgLT4gZVxuXG5sZXQgbWFwX3JpZ2h0IGYgPSBmdW5jdGlvblxufCBMZWZ0IF8gYXMgZSAtPiBlXG58IFJpZ2h0IHYgLT4gUmlnaHQgKGYgdilcblxubGV0IG1hcCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAobGVmdCB2KVxufCBSaWdodCB2IC0+IFJpZ2h0IChyaWdodCB2KVxuXG5sZXQgZm9sZCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gbGVmdCB2XG58IFJpZ2h0IHYgLT4gcmlnaHQgdlxuXG5sZXQgaXRlciA9IGZvbGRcblxubGV0IGZvcl9hbGwgPSBmb2xkXG5cbmxldCBlcXVhbCB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyB8IFJpZ2h0IF8sIExlZnQgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyAtPiAoLTEpXG58IFJpZ2h0IF8sIExlZnQgXyAtPiAxXG4iLCIoKiBAY29uZmlndXJlX2lucHV0QCAqKVxuIzMgXCJzeXMubWwuaW5cIlxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGJhY2tlbmRfdHlwZSA9XG4gIHwgTmF0aXZlXG4gIHwgQnl0ZWNvZGVcbiAgfCBPdGhlciBvZiBzdHJpbmdcbigqIFN5c3RlbSBpbnRlcmZhY2UgKilcblxuZXh0ZXJuYWwgZ2V0X2NvbmZpZzogdW5pdCAtPiBzdHJpbmcgKiBpbnQgKiBib29sID0gXCJjYW1sX3N5c19nZXRfY29uZmlnXCJcbmV4dGVybmFsIGdldF9leGVjdXRhYmxlX25hbWUgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lXCJcbmV4dGVybmFsIGFyZ3YgOiBzdHJpbmcgYXJyYXkgPSBcIiVzeXNfYXJndlwiXG5leHRlcm5hbCBiaWdfZW5kaWFuIDogdW5pdCAtPiBib29sID0gXCIlYmlnX2VuZGlhblwiXG5leHRlcm5hbCB3b3JkX3NpemUgOiB1bml0IC0+IGludCA9IFwiJXdvcmRfc2l6ZVwiXG5leHRlcm5hbCBpbnRfc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIlaW50X3NpemVcIlxuZXh0ZXJuYWwgbWF4X3dvc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIlbWF4X3dvc2l6ZVwiXG5leHRlcm5hbCB1bml4IDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3VuaXhcIlxuZXh0ZXJuYWwgd2luMzIgOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfd2luMzJcIlxuZXh0ZXJuYWwgY3lnd2luIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX2N5Z3dpblwiXG5leHRlcm5hbCBnZXRfYmFja2VuZF90eXBlIDogdW5pdCAtPiBiYWNrZW5kX3R5cGUgPSBcIiViYWNrZW5kX3R5cGVcIlxuXG5sZXQgZXhlY3V0YWJsZV9uYW1lID0gZ2V0X2V4ZWN1dGFibGVfbmFtZSgpXG5sZXQgKG9zX3R5cGUsIF8sIF8pID0gZ2V0X2NvbmZpZygpXG5sZXQgYmFja2VuZF90eXBlID0gZ2V0X2JhY2tlbmRfdHlwZSAoKVxubGV0IGJpZ19lbmRpYW4gPSBiaWdfZW5kaWFuICgpXG5sZXQgd29yZF9zaXplID0gd29yZF9zaXplICgpXG5sZXQgaW50X3NpemUgPSBpbnRfc2l6ZSAoKVxubGV0IHVuaXggPSB1bml4ICgpXG5sZXQgd2luMzIgPSB3aW4zMiAoKVxubGV0IGN5Z3dpbiA9IGN5Z3dpbiAoKVxubGV0IG1heF9hcnJheV9sZW5ndGggPSBtYXhfd29zaXplICgpXG5sZXQgbWF4X2Zsb2F0YXJyYXlfbGVuZ3RoID0gbWF4X2FycmF5X2xlbmd0aCAvICg2NCAvIHdvcmRfc2l6ZSlcbmxldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMVxuZXh0ZXJuYWwgcnVudGltZV92YXJpYW50IDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfcnVudGltZV92YXJpYW50XCJcbmV4dGVybmFsIHJ1bnRpbWVfcGFyYW1ldGVycyA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1wiXG5cbmV4dGVybmFsIGZpbGVfZXhpc3RzOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfZmlsZV9leGlzdHNcIlxuZXh0ZXJuYWwgaXNfZGlyZWN0b3J5IDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX2RpcmVjdG9yeVwiXG5leHRlcm5hbCByZW1vdmU6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW1vdmVcIlxuZXh0ZXJuYWwgcmVuYW1lIDogc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW5hbWVcIlxuZXh0ZXJuYWwgZ2V0ZW52OiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19nZXRlbnZcIlxuXG5sZXQgZ2V0ZW52X29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAoZ2V0ZW52IHMpXG4gIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuZXh0ZXJuYWwgY29tbWFuZDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcIlxuZXh0ZXJuYWwgdGltZTogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfc3lzX3RpbWVcIiBcImNhbWxfc3lzX3RpbWVfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjaGRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX2NoZGlyXCJcbmV4dGVybmFsIG1rZGlyOiBzdHJpbmcgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX21rZGlyXCJcbmV4dGVybmFsIHJtZGlyOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcm1kaXJcIlxuZXh0ZXJuYWwgZ2V0Y3dkOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0Y3dkXCJcbmV4dGVybmFsIHJlYWRkaXIgOiBzdHJpbmcgLT4gc3RyaW5nIGFycmF5ID0gXCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVwiXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoaW50IC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IGludCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcblxuZXhjZXB0aW9uIEJyZWFrXG5cbmxldCBjYXRjaF9icmVhayBvbiA9XG4gIGlmIG9uIHRoZW5cbiAgICBzZXRfc2lnbmFsIHNpZ2ludCAoU2lnbmFsX2hhbmRsZShmdW4gXyAtPiByYWlzZSBCcmVhaykpXG4gIGVsc2VcbiAgICBzZXRfc2lnbmFsIHNpZ2ludCBTaWduYWxfZGVmYXVsdFxuXG5cbmV4dGVybmFsIGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzOiBib29sIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcIlxuZXh0ZXJuYWwgcnVudGltZV93YXJuaW5nc19lbmFibGVkOiB1bml0IC0+IGJvb2wgPVxuICBcImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXCJcblxuKCogVGhlIHZlcnNpb24gc3RyaW5nIGlzIGZvdW5kIGluIGZpbGUgLi4vVkVSU0lPTiAqKVxuXG5sZXQgb2NhbWxfdmVyc2lvbiA9IFwiQFZFUlNJT05AXCJcblxubGV0IGRldmVsb3BtZW50X3ZlcnNpb24gPSBAT0NBTUxfREVWRUxPUE1FTlRfVkVSU0lPTkBcblxudHlwZSBleHRyYV9wcmVmaXggPSBQbHVzIHwgVGlsZGVcblxudHlwZSBleHRyYV9pbmZvID0gZXh0cmFfcHJlZml4ICogc3RyaW5nXG5cbnR5cGUgb2NhbWxfcmVsZWFzZV9pbmZvID0ge1xuICBtYWpvciA6IGludDtcbiAgbWlub3IgOiBpbnQ7XG4gIHBhdGNobGV2ZWwgOiBpbnQ7XG4gIGV4dHJhIDogZXh0cmFfaW5mbyBvcHRpb25cbn1cblxubGV0IG9jYW1sX3JlbGVhc2UgPSB7XG4gIG1ham9yID0gQE9DQU1MX1ZFUlNJT05fTUFKT1JAO1xuICBtaW5vciA9IEBPQ0FNTF9WRVJTSU9OX01JTk9SQDtcbiAgcGF0Y2hsZXZlbCA9IEBPQ0FNTF9WRVJTSU9OX1BBVENITEVWRUxAO1xuICBleHRyYSA9IEBPQ0FNTF9SRUxFQVNFX0VYVFJBQFxufVxuXG4oKiBPcHRpbWl6YXRpb24gKilcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogJ2EgLT4gJ2EgPSBcIiVvcGFxdWVcIlxuXG5tb2R1bGUgSW1tZWRpYXRlNjQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UoSW1tZWRpYXRlIDogSW1tZWRpYXRlKShOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcbiAgICBleHRlcm5hbCBtYWdpYyA6IF8gcmVwciAtPiB0IHJlcHIgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IHJlcHIgPVxuICAgICAgaWYgd29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICBtYWdpYyBJbW1lZGlhdGVcbiAgICAgIGVsc2VcbiAgICAgICAgbWFnaWMgTm9uX2ltbWVkaWF0ZVxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgY29tcGFyZV9hbmRfc3dhcF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdCAtPiBib29sXG4gID0gXCJjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXCJcbmV4dGVybmFsIGlzX3NoYXJlZCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9vYmpfaXNfc2hhcmVkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0M1xuXG5sZXQgZm9yY2luZ190YWcgPSAyNDRcbmxldCBjb250X3RhZyA9IDI0NVxubGV0IGxhenlfdGFnID0gMjQ2XG5sZXQgY2xvc3VyZV90YWcgPSAyNDdcbmxldCBvYmplY3RfdGFnID0gMjQ4XG5sZXQgaW5maXhfdGFnID0gMjQ5XG5sZXQgZm9yd2FyZF90YWcgPSAyNTBcblxubGV0IG5vX3NjYW5fdGFnID0gMjUxXG5cbmxldCBhYnN0cmFjdF90YWcgPSAyNTFcbmxldCBzdHJpbmdfdGFnID0gMjUyXG5sZXQgZG91YmxlX3RhZyA9IDI1M1xubGV0IGRvdWJsZV9hcnJheV90YWcgPSAyNTRcbmxldCBjdXN0b21fdGFnID0gMjU1XG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBDbG9zdXJlID0gc3RydWN0XG4gIHR5cGUgaW5mbyA9IHtcbiAgICBhcml0eTogaW50O1xuICAgIHN0YXJ0X2VudjogaW50O1xuICB9XG5cbiAgbGV0IGluZm9fb2ZfcmF3IChpbmZvIDogbmF0aXZlaW50KSA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50IGluXG4gICAgbGV0IGFyaXR5ID1cbiAgICAgICgqIHNpZ25lZDogbmVnYXRpdmUgZm9yIHR1cGxlZCBmdW5jdGlvbnMgKilcbiAgICAgIGlmIFN5cy53b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyA1NilcbiAgICAgIGVsc2VcbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDI0KVxuICAgIGluXG4gICAgbGV0IHN0YXJ0X2VudiA9XG4gICAgICAoKiBzdGFydF9lbnYgaXMgdW5zaWduZWQsIGJ1dCB3ZSBrbm93IGl0IGNhbiBhbHdheXMgZml0IGFuIE9DYW1sXG4gICAgICAgICBpbnRlZ2VyIHNvIHdlIHVzZSBbdG9faW50XSBpbnN0ZWFkIG9mIFt1bnNpZ25lZF90b19pbnRdLiAqKVxuICAgICAgdG9faW50IChzaGlmdF9yaWdodF9sb2dpY2FsIChzaGlmdF9sZWZ0IGluZm8gOCkgOSkgaW5cbiAgICB7IGFyaXR5OyBzdGFydF9lbnYgfVxuXG4gICgqIG5vdGU6IHdlIGV4cGVjdCBhIGNsb3N1cmUsIG5vdCBhbiBpbmZpeCBwb2ludGVyICopXG4gIGxldCBpbmZvIChvYmogOiB0KSA9XG4gICAgYXNzZXJ0ICh0YWcgb2JqID0gY2xvc3VyZV90YWcpO1xuICAgIGluZm9fb2ZfcmF3IChyYXdfZmllbGQgb2JqIDEpXG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCJcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgbWFrZSA6ICdhIC0+ICdhIHQgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgZXhjaGFuZ2UgOiAnYSB0IC0+ICdhIC0+ICdhID0gXCIlYXRvbWljX2V4Y2hhbmdlXCJcbmV4dGVybmFsIGNvbXBhcmVfYW5kX3NldCA6ICdhIHQgLT4gJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWF0b21pY19jYXNcIlxuZXh0ZXJuYWwgZmV0Y2hfYW5kX2FkZCA6IGludCB0IC0+IGludCAtPiBpbnQgPSBcIiVhdG9taWNfZmV0Y2hfYWRkXCJcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgc2V0IHIgeCA9IGlnbm9yZSAoZXhjaGFuZ2UgciB4KVxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbigqIFt1cGRhdGVfdG9fZm9yY2luZyBibGtdIHRyaWVzIHRvIHVwZGF0ZSBhIFtibGtdIHdpdGggW2xhenlfdGFnXSB0b1xuICAgW2ZvcmNpbmdfdGFnXSB1c2luZyBjb21wYXJlLWFuZC1zd2FwIChDQVMpLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGUgaGVhZGVyIHdvcmQgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gUmV0dXJucyBbMF0gaWYgdGhlXG4gICBDQVMgaXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIENBUyBmYWlscywgdGhlbiB0aGUgdGFnIHdhcyBvYnNlcnZlZCB0byBiZVxuICAgc29tZXRoaW5nIG90aGVyIHRoYW4gW2xhenlfdGFnXSBkdWUgdG8gYSBjb25jdXJyZW50IG11dGF0b3IuIEluIHRoaXMgY2FzZSxcbiAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIFsxXS4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3JjaW5nIDogT2JqLnQgLT4gaW50ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcIiBbQEBub2FsbG9jXVxuXG4oKiBbcmVzZXRfdG9fbGF6eSBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoIFtPYmouZm9yY2luZ190YWddXG4gICBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmoubGF6eV90YWddLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiAqKVxuZXh0ZXJuYWwgcmVzZXRfdG9fbGF6eSA6IE9iai50IC0+IHVuaXQgPSBcImNhbWxfbGF6eV9yZXNldF90b19sYXp5XCIgW0BAbm9hbGxvY11cblxuKCogW3VwZGF0ZV90b19mb3J3YXJkIGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGhcbiAgIFtPYmouZm9yY2luZ190YWddIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5mb3J3YXJkX3RhZ10sIHRha2luZyBjYXJlIHRvXG4gICBoYW5kbGUgY29uY3VycmVudCBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuXG4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3J3YXJkIDogT2JqLnQgLT4gdW5pdCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXCIgW0BAbm9hbGxvY11cblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICAgIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByZXNldF90b19sYXp5IGI7XG4gICAgcmFpc2UgZVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgcmVzdWx0XG5cbigqIENhbGxlZCBieSBbZm9yY2VfZ2VuXSAqKVxubGV0IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgKCogV2UgZXhwZWN0IHRoZSB0YWcgdG8gYmUgW2xhenlfdGFnXSwgYnV0IG1heSBiZSBvdGhlciB0YWdzIGR1ZSB0b1xuICAgICBjb25jdXJyZW50IGZvcmNpbmcgb2YgbGF6eSB2YWx1ZXMuICopXG4gIG1hdGNoIHVwZGF0ZV90b19mb3JjaW5nIChPYmoucmVwciBibGspIHdpdGhcbiAgfCAwIHdoZW4gb25seV92YWwgLT4gZG9fZm9yY2VfdmFsX2Jsb2NrIGJsa1xuICB8IDAgLT4gZG9fZm9yY2VfYmxvY2sgYmxrXG4gIHwgXyAtPiByYWlzZSBVbmRlZmluZWRcblxuKCogdXNlZCBpbiB0aGUgJWxhenlfZm9yY2UgcHJpbWl0aXZlICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayBibGsgPSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWw6ZmFsc2UgYmxrXG5cbigqIFtmb3JjZV9nZW4gfm9ubHlfdmFsOmZhbHNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzXG4gICBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZSB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHNcbiAgIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmwgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcbmxldCBmb3JjZV9nZW4gfm9ubHlfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdCBjb3VsZCBoYXZlIGJlZW5cbiAgICAgICBzaG9ydGN1dCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKS4gVGhpcyBpcyBub3QgYW4gaXNzdWUgaGVyZSBhdCB0aGUgbW9tZW50IHNpbmNlXG4gICAgICAgW09iai50YWddIGlzIG5vdCBzaW1wbGlmaWVkIGJ5IHRoZSBjb21waWxlciwgYW5kIEdQUiM3MTMgYWxzb1xuICAgICAgIGVuc3VyZXMgdGhhdCBubyB2YWx1ZSB3aWxsIGJlIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcuXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICAoKiBTVEFSVCBubyBzYWZlIHBvaW50cy4gSWYgYSBHQyBvY2N1cnMgaGVyZSwgdGhlbiB0aGUgb2JqZWN0IFt4XSBtYXkgYmVcbiAgICAgc2hvcnQtY2lyY3VpdGVkLCBhbmQgZ2V0dGluZyB0aGUgZmlyc3QgZmllbGQgb2YgW3hdIHdvdWxkIGdldCB1cyB0aGUgd3JvbmdcbiAgICAgdmFsdWUuIEx1Y2tpbHksIHRoZSBjb21waWxlciBkb2VzIG5vdCBpbnNlcnQgR0Mgc2FmZSBwb2ludHMgYXQgdGhpcyBwbGFjZSxcbiAgICAgc28gaXQgaXMgb2suICopXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpXG4gICgqIEVORCBubyBzYWZlIHBvaW50cyAqKVxuICBlbHNlIGlmIHQgPSBPYmouZm9yY2luZ190YWcgdGhlbiByYWlzZSBVbmRlZmluZWRcbiAgZWxzZSBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCBsenZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX21ha2VfYXJyYXldIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBmb3JjZV92YWwgbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfZ2VuIH5vbmx5X3ZhbDp0cnVlIGxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHxcbiAgICAgdCA9IE9iai5mb3JjaW5nX3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBmcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgZm9sZF9sZWZ0IGYgYWNjIG5leHRcblxubGV0IHJlYyBpdGVyIGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBpdGVyIGYgbmV4dFxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuXG5sZXQgaXNfZW1wdHkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zIChfLCBfKSAtPlxuICAgICAgZmFsc2VcblxubGV0IHVuY29ucyB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgU29tZSAoeCwgeHMpXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG5cblxuXG5sZXQgcmVjIGxlbmd0aF9hdXggYWNjdSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGVuZ3RoX2F1eCAoYWNjdSArIDEpIHhzXG5cbmxldFtAaW5saW5lXSBsZW5ndGggeHMgPVxuICBsZW5ndGhfYXV4IDAgeHNcblxubGV0IHJlYyBpdGVyaV9hdXggZiBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgZiBpIHg7XG4gICAgICBpdGVyaV9hdXggZiAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gaXRlcmkgZiB4cyA9XG4gIGl0ZXJpX2F1eCBmIDAgeHNcblxubGV0IHJlYyBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgaSB4IGluXG4gICAgICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGZvbGRfbGVmdGkgZiBhY2N1IHhzID1cbiAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IDAgeHNcblxubGV0IHJlYyBmb3JfYWxsIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCAmJiBmb3JfYWxsIHAgeHNcblxubGV0IHJlYyBleGlzdHMgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCB8fCBleGlzdHMgcCB4c1xuXG5sZXQgcmVjIGZpbmQgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZCBwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG4oKiBbaXRlcjJdLCBbZm9sZF9sZWZ0Ml0sIFtmb3JfYWxsMl0sIFtleGlzdHMyXSwgW21hcDJdLCBbemlwXSB3b3JrIGFsc28gaW5cbiAgIHRoZSBjYXNlIHdoZXJlIHRoZSB0d28gc2VxdWVuY2VzIGhhdmUgZGlmZmVyZW50IGxlbmd0aHMuIFRoZXkgc3RvcCBhcyBzb29uXG4gICBhcyBvbmUgc2VxdWVuY2UgaXMgZXhoYXVzdGVkLiBUaGVpciBiZWhhdmlvciBpcyBzbGlnaHRseSBhc3ltbWV0cmljOiB3aGVuXG4gICBbeHNdIGlzIGVtcHR5LCB0aGV5IGRvIG5vdCBmb3JjZSBbeXNdOyBob3dldmVyLCB3aGVuIFt5c10gaXMgZW1wdHksIFt4c10gaXNcbiAgIGZvcmNlZCwgZXZlbiB0aG91Z2ggdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gYXBwbGljYXRpb24gW3hzKCldIHR1cm5zIG91dFxuICAgdG8gYmUgdXNlbGVzcy4gKilcblxubGV0IHJlYyBpdGVyMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgpXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5O1xuICAgICAgICAgIGl0ZXIyIGYgeHMgeXNcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGFjY3VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgeCB5IGluXG4gICAgICAgICAgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXNcblxubGV0IHJlYyBmb3JfYWxsMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSAmJiBmb3JfYWxsMiBmIHhzIHlzXG5cbmxldCByZWMgZXhpc3RzMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5IHx8IGV4aXN0czIgZiB4cyB5c1xuXG5sZXQgcmVjIGVxdWFsIGVxIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgZXEgeCB5ICYmIGVxdWFsIGVxIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgIGZhbHNlXG5cbmxldCByZWMgY29tcGFyZSBjbXAgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgMFxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBsZXQgYyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjb21wYXJlIGNtcCB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXykgLT5cbiAgICAgIC0xXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgKzFcblxuXG5cbigqIFtpbml0X2F1eCBmIGkgal0gaXMgdGhlIHNlcXVlbmNlIFtmIGksIC4uLiwgZiAoai0xKV0uICopXG5cbmxldCByZWMgaW5pdF9hdXggZiBpIGogKCkgPVxuICBpZiBpIDwgaiB0aGVuIGJlZ2luXG4gICAgQ29ucyAoZiBpLCBpbml0X2F1eCBmIChpICsgMSkgailcbiAgZW5kXG4gIGVsc2VcbiAgICBOaWxcblxubGV0IGluaXQgbiBmID1cbiAgaWYgbiA8IDAgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU2VxLmluaXRcIlxuICBlbHNlXG4gICAgaW5pdF9hdXggZiAwIG5cblxubGV0IHJlYyByZXBlYXQgeCAoKSA9XG4gIENvbnMgKHgsIHJlcGVhdCB4KVxuXG5sZXQgcmVjIGZvcmV2ZXIgZiAoKSA9XG4gIENvbnMgKGYoKSwgZm9yZXZlciBmKVxuXG4oKiBUaGlzIHByZWxpbWluYXJ5IGRlZmluaXRpb24gb2YgW2N5Y2xlXSByZXF1aXJlcyB0aGUgc2VxdWVuY2UgW3hzXVxuICAgdG8gYmUgbm9uZW1wdHkuIEFwcGx5aW5nIGl0IHRvIGFuIGVtcHR5IHNlcXVlbmNlIHdvdWxkIHByb2R1Y2UgYVxuICAgc2VxdWVuY2UgdGhhdCBkaXZlcmdlcyB3aGVuIGl0IGlzIGZvcmNlZC4gKilcblxubGV0IHJlYyBjeWNsZV9ub25lbXB0eSB4cyAoKSA9XG4gIGFwcGVuZCB4cyAoY3ljbGVfbm9uZW1wdHkgeHMpICgpXG5cbigqIFtjeWNsZSB4c10gY2hlY2tzIHdoZXRoZXIgW3hzXSBpcyBlbXB0eSBhbmQsIGlmIHNvLCByZXR1cm5zIGFuIGVtcHR5XG4gICBzZXF1ZW5jZS4gT3RoZXJ3aXNlLCBbY3ljbGUgeHNdIHByb2R1Y2VzIG9uZSBjb3B5IG9mIFt4c10gZm9sbG93ZWRcbiAgIHdpdGggdGhlIGluZmluaXRlIHNlcXVlbmNlIFtjeWNsZV9ub25lbXB0eSB4c10uIFRodXMsIHRoZSBub25lbXB0aW5lc3NcbiAgIGNoZWNrIGlzIHBlcmZvcm1lZCBqdXN0IG9uY2UuICopXG5cbmxldCBjeWNsZSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMnKSAtPlxuICAgICAgQ29ucyAoeCwgYXBwZW5kIHhzJyAoY3ljbGVfbm9uZW1wdHkgeHMpKVxuXG4oKiBbaXRlcmF0ZTEgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW2YgeCwgZiAoZiB4KSwgLi4uXS5cbiAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKGl0ZXJhdGUgZiB4KV0uXG4gICBbaXRlcmF0ZTFdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgaXRlcmF0ZTEgZiB4ICgpID1cbiAgbGV0IHkgPSBmIHggaW5cbiAgQ29ucyAoeSwgaXRlcmF0ZTEgZiB5KVxuXG4oKiBbaXRlcmF0ZSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbeCwgZiB4LCAuLi5dLiAqKVxuXG4oKiBUaGUgcmVhc29uIHdoeSB3ZSBnaXZlIHRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0sXG4gICBhcyBvcHBvc2VkIHRvIHRoZSBtb3JlIG5haXZlIGRlZmluaXRpb24gdGhhdCBtYXkgY29tZSB0byBtaW5kLCBpcyB0aGF0XG4gICB3ZSBhcmUgY2FyZWZ1bCB0byBhdm9pZCBldmFsdWF0aW5nIFtmIHhdIHVudGlsIHRoaXMgZnVuY3Rpb24gY2FsbCBpc1xuICAgYWN0dWFsbHkgbmVjZXNzYXJ5LiBUaGUgbmFpdmUgZGVmaW5pdGlvbiAobm90IHNob3duIGhlcmUpIGNvbXB1dGVzIHRoZVxuICAgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBzZXF1ZW5jZSwgW2YgeF0sIHdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IGlzXG4gICByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuICopXG5cbmxldCBpdGVyYXRlIGYgeCA9XG4gIGNvbnMgeCAoaXRlcmF0ZTEgZiB4KVxuXG5cblxubGV0IHJlYyBtYXBpX2F1eCBmIGkgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoZiBpIHgsIG1hcGlfYXV4IGYgKGkrMSkgeHMpXG5cbmxldFtAaW5saW5lXSBtYXBpIGYgeHMgPVxuICBtYXBpX2F1eCBmIDAgeHNcblxuKCogW3RhaWxfc2NhbiBmIHMgeHNdIGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKHNjYW4gZiBzIHhzKV0uXG4gICBbdGFpbF9zY2FuXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW3NjYW5dLiAqKVxuXG4oKiBUaGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW3NjYW5dIGlzIG1lYW50IHRvIGF2b2lkIGNvbXB1dGluZ1xuICAgZWxlbWVudHMgdG9vIGVhcmx5OyBzZWUgdGhlIGFib3ZlIGNvbW1lbnQgYWJvdXQgW2l0ZXJhdGUxXSBhbmQgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIHRhaWxfc2NhbiBmIHMgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IHMgPSBmIHMgeCBpblxuICAgICAgQ29ucyAocywgdGFpbF9zY2FuIGYgcyB4cylcblxubGV0IHNjYW4gZiBzIHhzID1cbiAgY29ucyBzICh0YWlsX3NjYW4gZiBzIHhzKVxuXG4oKiBbdGFrZV0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW3Rha2UgMCB4c10gcmV0dXJucyBbZW1wdHldXG4gICBpbW1lZGlhdGVseSwgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCByZWMgdGFrZV9hdXggbiB4cyA9XG4gIGlmIG4gPSAwIHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgIENvbnMgKHgsIHRha2VfYXV4IChuLTEpIHhzKVxuXG5sZXQgdGFrZSBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS50YWtlXCI7XG4gIHRha2VfYXV4IG4geHNcblxuKCogW2ZvcmNlX2Ryb3AgbiB4c10gaXMgZXF1aXZhbGVudCB0byBbZHJvcCBuIHhzICgpXS5cbiAgIFtmb3JjZV9kcm9wIG4geHNdIHJlcXVpcmVzIFtuID4gMF0uXG4gICBbZm9yY2VfZHJvcF0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtkcm9wXS4gKilcblxubGV0IHJlYyBmb3JjZV9kcm9wIG4geHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGV0IG4gPSBuIC0gMSBpblxuICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICB4cygpXG4gICAgICBlbHNlXG4gICAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG4oKiBbZHJvcF0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW2Ryb3AgMCB4c10gcmV0dXJucyBbeHNdIGltbWVkaWF0ZWx5LFxuICAgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCBkcm9wIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLmRyb3BcIlxuICBlbHNlIGlmIG4gPSAwIHRoZW5cbiAgICB4c1xuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBmb3JjZV9kcm9wIG4geHNcblxubGV0IHJlYyB0YWtlX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gQ29ucyAoeCwgdGFrZV93aGlsZSBwIHhzKSBlbHNlIE5pbFxuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIGFzIG5vZGUgLT5cbiAgICAgIGlmIHAgeCB0aGVuIGRyb3Bfd2hpbGUgcCB4cyAoKSBlbHNlIG5vZGVcblxubGV0IHJlYyBncm91cCBlcSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChjb25zIHggKHRha2Vfd2hpbGUgKGVxIHgpIHhzKSwgZ3JvdXAgZXEgKGRyb3Bfd2hpbGUgKGVxIHgpIHhzKSlcblxuZXhjZXB0aW9uIEZvcmNlZF90d2ljZVxuXG5tb2R1bGUgU3VzcGVuc2lvbiA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egc3VzcGVuc2lvbiA9XG4gICAgdW5pdCAtPiAnYVxuXG4gICgqIENvbnZlcnNpb25zLiAqKVxuXG4gIGxldCB0b19sYXp5IDogJ2Egc3VzcGVuc2lvbiAtPiAnYSBMYXp5LnQgPVxuICAgIExhenkuZnJvbV9mdW5cbiAgICAoKiBmdW4gcyAtPiBsYXp5IChzKCkpICopXG5cbiAgbGV0IGZyb21fbGF6eSAocyA6ICdhIExhenkudCkgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT4gTGF6eS5mb3JjZSBzXG5cbiAgKCogW21lbW9pemVdIHR1cm5zIGFuIGFyYml0cmFyeSBzdXNwZW5zaW9uIGludG8gYSBwZXJzaXN0ZW50IHN1c3BlbnNpb24uICopXG5cbiAgbGV0IG1lbW9pemUgKHMgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZyb21fbGF6eSAodG9fbGF6eSBzKVxuXG4gICgqIFtmYWlsdXJlXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBmYWlscyB3aGVuIGZvcmNlZC4gKilcblxuICBsZXQgZmFpbHVyZSA6IF8gc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBBIHN1c3BlbnNpb24gY3JlYXRlZCBieSBbb25jZV0gaGFzIGJlZW4gZm9yY2VkIHR3aWNlLiAqKVxuICAgICAgcmFpc2UgRm9yY2VkX3R3aWNlXG5cbiAgKCogSWYgW2ZdIGlzIGEgc3VzcGVuc2lvbiwgdGhlbiBbb25jZSBmXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBjYW4gYmUgZm9yY2VkXG4gICAgIGF0IG1vc3Qgb25jZS4gSWYgaXQgaXMgZm9yY2VkIG1vcmUgdGhhbiBvbmNlLCB0aGVuIFtGb3JjZWRfdHdpY2VdIGlzXG4gICAgIHJhaXNlZC4gKilcblxuICBsZXQgb25jZSAoZiA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgbGV0IGFjdGlvbiA9IEF0b21pYy5tYWtlIGYgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEdldCB0aGUgZnVuY3Rpb24gY3VycmVudGx5IHN0b3JlZCBpbiBbYWN0aW9uXSwgYW5kIHdyaXRlIHRoZVxuICAgICAgICAgZnVuY3Rpb24gW2ZhaWx1cmVdIGluIGl0cyBwbGFjZSwgc28gdGhlIG5leHQgYWNjZXNzIHdpbGwgcmVzdWx0XG4gICAgICAgICBpbiBhIGNhbGwgdG8gW2ZhaWx1cmUoKV0uICopXG4gICAgICBsZXQgZiA9IEF0b21pYy5leGNoYW5nZSBhY3Rpb24gZmFpbHVyZSBpblxuICAgICAgZigpXG5cbmVuZCAoKiBTdXNwZW5zaW9uICopXG5cbmxldCByZWMgbWVtb2l6ZSB4cyA9XG4gIFN1c3BlbnNpb24ubWVtb2l6ZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgbWVtb2l6ZSB4cylcbiAgKVxuXG5sZXQgcmVjIG9uY2UgeHMgPVxuICBTdXNwZW5zaW9uLm9uY2UgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG9uY2UgeHMpXG4gIClcblxuXG5sZXQgcmVjIHppcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKCh4LCB5KSwgemlwIHhzIHlzKVxuXG5sZXQgcmVjIG1hcDIgZiB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKGYgeCB5LCBtYXAyIGYgeHMgeXMpXG5cbmxldCByZWMgaW50ZXJsZWF2ZSB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgeXMoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoeCwgaW50ZXJsZWF2ZSB5cyB4cylcblxuKCogW3NvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIHlzXS5cblxuICAgW3NvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIHhzIChjb25zIHkgeXMpXS5cblxuICAgW3NvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSAoY29ucyB5IHlzKV0uXG5cbiAgIFRoZXNlIHRocmVlIGZ1bmN0aW9ucyBhcmUgdXNlZCBhcyBidWlsZGluZyBibG9ja3MgaW4gdGhlIGRlZmluaXRpb25cbiAgIG9mIFtzb3J0ZWRfbWVyZ2VdLiAqKVxuXG5sZXQgcmVjIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzICgpID1cbiAgbWF0Y2ggeXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh4LCB4cylcbiAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHksIHlzKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXMgPVxuICBpZiBjbXAgeCB5IDw9IDAgdGhlblxuICAgIENvbnMgKHgsIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzKVxuICBlbHNlXG4gICAgQ29ucyAoeSwgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMpXG5cbmxldCBzb3J0ZWRfbWVyZ2UgY21wIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gICAgfCBOaWwsIE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IE5pbCwgY1xuICAgIHwgYywgTmlsIC0+XG4gICAgICAgIGNcbiAgICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5cbmxldCByZWMgbWFwX2ZzdCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoeCwgXyksIHh5cykgLT5cbiAgICAgIENvbnMgKHgsIG1hcF9mc3QgeHlzKVxuXG5sZXQgcmVjIG1hcF9zbmQgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKF8sIHkpLCB4eXMpIC0+XG4gICAgICBDb25zICh5LCBtYXBfc25kIHh5cylcblxubGV0IHVuemlwIHh5cyA9XG4gIG1hcF9mc3QgeHlzLCBtYXBfc25kIHh5c1xuXG5sZXQgc3BsaXQgPVxuICB1bnppcFxuXG4oKiBbZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgIFtmaWx0ZXJfbWFwIEVpdGhlci5maW5kX2xlZnQgKG1hcCBmIHhzKV0uICopXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgeSAtPlxuICAgICAgICAgIENvbnMgKHksIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKClcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IHogLT5cbiAgICAgICAgICBDb25zICh6LCBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMpXG5cbmxldCBwYXJ0aXRpb25fbWFwIGYgeHMgPVxuICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyxcbiAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzXG5cbmxldCBwYXJ0aXRpb24gcCB4cyA9XG4gIGZpbHRlciBwIHhzLCBmaWx0ZXIgKGZ1biB4IC0+IG5vdCAocCB4KSkgeHNcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW3BlZWwgeHNzXSBpcyBhIHBhaXIgb2ZcbiAgIHRoZSBmaXJzdCBjb2x1bW4gKGEgc2VxdWVuY2Ugb2YgZWxlbWVudHMpIGFuZCBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgbWF0cml4IChhIHNlcXVlbmNlIG9mIHNob3J0ZXIgcm93cykuIFRoZXNlIHR3byBzZXF1ZW5jZXMgaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBBbiBlbXB0eSByb3cgaXMgaWdub3JlZC4gKilcblxuKCogQmVjYXVzZSBbcGVlbF0gdXNlcyBbdW56aXBdLCBpdHMgYXJndW1lbnQgbXVzdCBiZSBwZXJzaXN0ZW50LiBUaGUgc2FtZVxuICAgcmVtYXJrIGFwcGxpZXMgdG8gW3RyYW5zcG9zZV0sIFtkaWFnb25hbHNdLCBbcHJvZHVjdF0sIGV0Yy4gKilcblxubGV0IHBlZWwgeHNzID1cbiAgdW56aXAgKGZpbHRlcl9tYXAgdW5jb25zIHhzcylcblxubGV0IHJlYyB0cmFuc3Bvc2UgeHNzICgpID1cbiAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgeHNzIGluXG4gIGlmIGlzX2VtcHR5IGhlYWRzIHRoZW4gYmVnaW5cbiAgICBhc3NlcnQgKGlzX2VtcHR5IHRhaWxzKTtcbiAgICBOaWxcbiAgZW5kXG4gIGVsc2VcbiAgICBDb25zIChoZWFkcywgdHJhbnNwb3NlIHRhaWxzKVxuXG4oKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gW2RpYWdvbmFsc10gdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQsIFtyZW1haW5kZXJzXSxcbiAgIHdoaWNoIGNvbnRhaW5zIHRoZSByZW1haW5kZXJzIG9mIHRoZSByb3dzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW5cbiAgIGRpc2NvdmVyZWQuICopXG5cbmxldCByZWMgZGlhZ29uYWxzIHJlbWFpbmRlcnMgeHNzICgpID1cbiAgbWF0Y2ggeHNzKCkgd2l0aFxuICB8IENvbnMgKHhzLCB4c3MpIC0+XG4gICAgICBiZWdpbiBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgbm9uZW1wdHkgcm93IFt4IDo6IHhzXS4gVGh1cywgdGhlIG5leHQgZGlhZ29uYWxcbiAgICAgICAgICAgICBpcyBbeCA6OiBoZWFkc106IHRoaXMgZGlhZ29uYWwgYmVnaW5zIHdpdGggW3hdIGFuZCBjb250aW51ZXMgd2l0aFxuICAgICAgICAgICAgIHRoZSBmaXJzdCBlbGVtZW50IG9mIGV2ZXJ5IHJvdyBpbiBbcmVtYWluZGVyc10uIEluIHRoZSByZWN1cnNpdmVcbiAgICAgICAgICAgICBjYWxsLCB0aGUgYXJndW1lbnQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIFt4cyA6OlxuICAgICAgICAgICAgIHRhaWxzXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3csIFt4c10sXG4gICAgICAgICAgICAgYW5kIHRoYXQgd2Uga2VlcCB0aGUgdGFpbHMgb2YgdGhlIHByZS1leGlzdGluZyByZW1haW5pbmcgcm93cy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoY29ucyB4IGhlYWRzLCBkaWFnb25hbHMgKGNvbnMgeHMgdGFpbHMpIHhzcylcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgZW1wdHkgcm93LiBJbiB0aGlzIGNhc2UsIHRoZSBuZXcgZGlhZ29uYWwgaXNcbiAgICAgICAgICAgICBqdXN0IFtoZWFkc10sIGFuZCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGgganVzdCBbdGFpbHNdLFxuICAgICAgICAgICAgIGFzIHdlIGRvIG5vdCBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3cuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGhlYWRzLCBkaWFnb25hbHMgdGFpbHMgeHNzKVxuICAgICAgZW5kXG4gIHwgTmlsIC0+XG4gICAgICAoKiBUaGVyZSBhcmUgbm8gbW9yZSByb3dzIHRvIGJlIGRpc2NvdmVyZWQuIFRoZXJlIHJlbWFpbnMgdG8gZXhoYXVzdFxuICAgICAgICAgdGhlIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgdHJhbnNwb3NlIHJlbWFpbmRlcnMgKClcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW2RpYWdvbmFscyB4c3NdIGlzXG4gICB0aGUgc2VxdWVuY2Ugb2YgaXRzIGRpYWdvbmFscy5cblxuICAgVGhlIGZpcnN0IGRpYWdvbmFsIGNvbnRhaW5zIGp1c3QgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBmaXJzdCByb3cuIFRoZSBzZWNvbmQgZGlhZ29uYWwgY29udGFpbnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBzZWNvbmQgcm93IGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHJvdzsgYW5kIHNvIG9uLlxuICAgVGhpcyBraW5kIG9mIGRpYWdvbmFsIGlzIGluIGZhY3Qgc29tZXRpbWVzIGtub3duIGFzIGFuIGFudGlkaWFnb25hbC5cblxuICAgLSBFdmVyeSBkaWFnb25hbCBpcyBhIGZpbml0ZSBzZXF1ZW5jZS5cbiAgIC0gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIGlzIG5vdCByZXF1aXJlZCB0byBiZSBmaW5pdGUgKGluIGVpdGhlciBkaXJlY3Rpb24pLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIG11c3QgYmUgcGVyc2lzdGVudC4gKilcblxubGV0IGRpYWdvbmFscyB4c3MgPVxuICBkaWFnb25hbHMgZW1wdHkgeHNzXG5cbmxldCBtYXBfcHJvZHVjdCBmIHhzIHlzID1cbiAgY29uY2F0IChkaWFnb25hbHMgKFxuICAgIG1hcCAoZnVuIHggLT5cbiAgICAgIG1hcCAoZnVuIHkgLT5cbiAgICAgICAgZiB4IHlcbiAgICAgICkgeXNcbiAgICApIHhzXG4gICkpXG5cbmxldCBwcm9kdWN0IHhzIHlzID1cbiAgbWFwX3Byb2R1Y3QgKGZ1biB4IHkgLT4gKHgsIHkpKSB4cyB5c1xuXG5sZXQgb2ZfZGlzcGVuc2VyIGl0ID1cbiAgbGV0IHJlYyBjICgpID1cbiAgICBtYXRjaCBpdCgpIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgTmlsXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQ29ucyAoeCwgYylcbiAgaW5cbiAgY1xuXG5sZXQgdG9fZGlzcGVuc2VyIHhzID1cbiAgbGV0IHMgPSByZWYgeHMgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggKCFzKSgpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgcyA6PSB4cztcbiAgICAgICAgU29tZSB4XG5cblxuXG5sZXQgcmVjIGludHMgaSAoKSA9XG4gIENvbnMgKGksIGludHMgKGkgKyAxKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBlIHwgT2sgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBPayBfXCJcbmxldCBiaW5kIHIgZiA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IGYgdiB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgam9pbiA9IGZ1bmN0aW9uIE9rIHIgLT4gciB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwIGYgPSBmdW5jdGlvbiBPayB2IC0+IE9rIChmIHYpIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXBfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gRXJyb3IgKGYgZSkgfCBPayBfIGFzIHYgLT4gdlxubGV0IGZvbGQgfm9rIH5lcnJvciA9IGZ1bmN0aW9uIE9rIHYgLT4gb2sgdiB8IEVycm9yIGUgLT4gZXJyb3IgZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyAtPiAoKVxubGV0IGl0ZXJfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZiBlIHwgT2sgXyAtPiAoKVxubGV0IGlzX29rID0gZnVuY3Rpb24gT2sgXyAtPiB0cnVlIHwgRXJyb3IgXyAtPiBmYWxzZVxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgXyAtPiB0cnVlIHwgT2sgXyAtPiBmYWxzZVxuXG5sZXQgZXF1YWwgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgXywgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBPayBfLCBFcnJvciBfIC0+IC0xXG58IEVycm9yIF8sIE9rIF8gLT4gMVxuXG5sZXQgdG9fb3B0aW9uID0gZnVuY3Rpb24gT2sgdiAtPiBTb21lIHYgfCBFcnJvciBfIC0+IE5vbmVcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gT2sgdiAtPiBbdl0gfCBFcnJvciBfIC0+IFtdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gT2sgdiAtPiBTZXEucmV0dXJuIHYgfCBFcnJvciBfIC0+IFNlcS5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBib29sID0gZmFsc2UgfCB0cnVlXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmxldCBlcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5leHRlcm5hbCB0b19pbnQgOiBib29sIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uIGZhbHNlIC0+IDAuIHwgdHJ1ZSAtPiAxLlxuXG4oKlxubGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG58IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG58IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxufCBfIC0+IE5vbmVcbiopXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvbiBmYWxzZSAtPiBcImZhbHNlXCIgfCB0cnVlIC0+IFwidHJ1ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhbiBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG5sZXQgZXJyX25vdF9sYXRpbjEgdSA9IFwiVStcIiBeIGZvcm1hdF9pbnQgXCIlMDRYXCIgdSBeIFwiIGlzIG5vdCBhIGxhdGluMSBjaGFyYWN0ZXJcIlxuXG50eXBlIHQgPSBpbnRcblxubGV0IG1pbiA9IDB4MDAwMFxubGV0IG1heCA9IDB4MTBGRkZGXG5sZXQgbG9fYm91bmQgPSAweEQ3RkZcbmxldCBoaV9ib3VuZCA9IDB4RTAwMFxuXG5sZXQgYm9tID0gMHhGRUZGXG5sZXQgcmVwID0gMHhGRkZEXG5cbmxldCBzdWNjIHUgPVxuICBpZiB1ID0gbG9fYm91bmQgdGhlbiBoaV9ib3VuZCBlbHNlXG4gIGlmIHUgPSBtYXggdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fc3VjYyBlbHNlXG4gIHUgKyAxXG5cbmxldCBwcmVkIHUgPVxuICBpZiB1ID0gaGlfYm91bmQgdGhlbiBsb19ib3VuZCBlbHNlXG4gIGlmIHUgPSBtaW4gdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fcHJlZCBlbHNlXG4gIHUgLSAxXG5cbmxldCBpc192YWxpZCBpID0gKG1pbiA8PSBpICYmIGkgPD0gbG9fYm91bmQpIHx8IChoaV9ib3VuZCA8PSBpICYmIGkgPD0gbWF4KVxubGV0IG9mX2ludCBpID0gaWYgaXNfdmFsaWQgaSB0aGVuIGkgZWxzZSBpbnZhbGlkX2FyZyAoZXJyX25vdF9zdiBpKVxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19jaGFyIHUgPSB1IDwgMjU2XG5sZXQgb2ZfY2hhciBjID0gQ2hhci5jb2RlIGNcbmxldCB0b19jaGFyIHUgPVxuICBpZiB1ID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgKGVycl9ub3RfbGF0aW4xIHUpIGVsc2VcbiAgQ2hhci51bnNhZmVfY2hyIHVcblxubGV0IHVuc2FmZV90b19jaGFyID0gQ2hhci51bnNhZmVfY2hyXG5cbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBoYXNoID0gdG9faW50XG5cbigqIFVURiBjb2RlY3MgdG9vbHMgKilcblxudHlwZSB1dGZfZGVjb2RlID0gaW50XG4oKiBUaGlzIGlzIGFuIGludCBbMHhEVVVVVVVVXSBkZWNvbXBvc2VkIGFzIGZvbGxvd3M6XG4gICAtIFtEXSBpcyBmb3VyIGJpdHMgZm9yIGRlY29kZSBpbmZvcm1hdGlvbiwgdGhlIGhpZ2hlc3QgYml0IGlzIHNldCBpZiB0aGVcbiAgICAgZGVjb2RlIGlzIHZhbGlkLiBUaGUgdGhyZWUgbG93ZXIgYml0cyBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4gICAgIGZyb20gdGhlIHNvdXJjZSB0aGF0IHdlcmUgY29uc3VtZWQgYnkgdGhlIGRlY29kZS5cbiAgIC0gW1VVVVVVVV0gaXMgdGhlIGRlY29kZWQgVW5pY29kZSBjaGFyYWN0ZXIgb3IgdGhlIFVuaWNvZGUgcmVwbGFjZW1lbnRcbiAgICAgY2hhcmFjdGVyIFUrRkZGRCBpZiBmb3IgaW52YWxpZCBkZWNvZGVzLiAqKVxuXG5sZXQgdmFsaWRfYml0ID0gMjdcbmxldCBkZWNvZGVfYml0cyA9IDI0XG5cbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2lzX3ZhbGlkIGQgPSAoZCBsc3IgdmFsaWRfYml0KSA9IDFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2xlbmd0aCBkID0gKGQgbHNyIGRlY29kZV9iaXRzKSBsYW5kIDBiMTExXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV91Y2hhciBkID0gdW5zYWZlX29mX2ludCAoZCBsYW5kIDB4RkZGRkZGKVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGUgbiB1ID0gKCg4IGxvciBuKSBsc2wgZGVjb2RlX2JpdHMpIGxvciAodG9faW50IHUpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pbnZhbGlkIG4gPSAobiBsc2wgZGVjb2RlX2JpdHMpIGxvciByZXBcblxubGV0IHV0Zl84X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+IDFcbnwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDNcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgdXRmXzE2X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IGhkID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcImhkXCJcbiAgfCBhOjpfIC0+IGFcblxubGV0IHRsID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcInRsXCJcbiAgfCBfOjpsIC0+IGxcblxubGV0IG50aCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJudGhcIlxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IG50aF9vcHQgbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IGFwcGVuZCA9IChAKVxuXG5sZXQgcmVjIHJldl9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBhIDo6IGwgLT4gcmV2X2FwcGVuZCBsIChhIDo6IGwyKVxuXG5sZXQgcmV2IGwgPSByZXZfYXBwZW5kIGwgW11cblxubGV0IHJlYyBpbml0X3RhaWxyZWNfYXV4IGFjYyBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIGFjY1xuICBlbHNlIGluaXRfdGFpbHJlY19hdXggKGYgaSA6OiBhY2MpIChpKzEpIG4gZlxuXG5sZXQgcmVjIGluaXRfYXV4IGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByID0gZiBpIGluXG4gICAgciA6OiBpbml0X2F1eCAoaSsxKSBuIGZcblxubGV0IHJldl9pbml0X3RocmVzaG9sZCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMTBfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3NcbiAgICAgc21hbGwuICopXG4gIHwgU3lzLk90aGVyIF8gLT4gNTBcblxubGV0IGluaXQgbGVuIGYgPVxuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LmluaXRcIiBlbHNlXG4gIGlmIGxlbiA+IHJldl9pbml0X3RocmVzaG9sZCB0aGVuIHJldiAoaW5pdF90YWlscmVjX2F1eCBbXSAwIGxlbiBmKVxuICBlbHNlIGluaXRfYXV4IDAgbGVuIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGEgaW4gciA6OiBtYXAgZiBsXG5cbmxldCByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgaSBhIGluIHIgOjogbWFwaSAoaSArIDEpIGYgbFxuXG5sZXQgbWFwaSBmIGwgPSBtYXBpIDAgZiBsXG5cbmxldCByZXZfbWFwIGYgbCA9XG4gIGxldCByZWMgcm1hcF9mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgYTo6bCAtPiBybWFwX2YgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIHJtYXBfZiBbXSBsXG5cblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGE7IGl0ZXIgZiBsXG5cbmxldCByZWMgaXRlcmkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBpIGE7IGl0ZXJpIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaSBmIGwgPSBpdGVyaSAwIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjY3UgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGZvbGRfbGVmdCBmIChmIGFjY3UgYSkgbFxuXG5sZXQgcmVjIGZvbGRfcmlnaHQgZiBsIGFjY3UgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmIGEgKGZvbGRfcmlnaHQgZiBsIGFjY3UpXG5cbmxldCByZWMgbWFwMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBsZXQgciA9IGYgYTEgYTIgaW4gciA6OiBtYXAyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lm1hcDJcIlxuXG5sZXQgcmV2X21hcDIgZiBsMSBsMiA9XG4gIGxldCByZWMgcm1hcDJfZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgfCAoW10sIFtdKSAtPiBhY2N1XG4gICAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHJtYXAyX2YgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBybWFwMl9mIFtdIGwxIGwyXG5cblxubGV0IHJlYyBpdGVyMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+ICgpXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyOyBpdGVyMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZm9sZF9sZWZ0MiBmIChmIGFjY3UgYTEgYTIpIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX2xlZnQyXCJcblxubGV0IHJlYyBmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMiAoZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1KVxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9yaWdodDJcIlxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gdHJ1ZVxuICB8IGE6OmwgLT4gcCBhICYmIGZvcl9hbGwgcCBsXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBwIGEgfHwgZXhpc3RzIHAgbFxuXG5sZXQgcmVjIGZvcl9hbGwyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gdHJ1ZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiAmJiBmb3JfYWxsMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG5cbmxldCByZWMgZXhpc3RzMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGZhbHNlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyIHx8IGV4aXN0czIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG5cbmxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtIHggbFxuXG5sZXQgcmVjIG1lbXEgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGEgPT0geCB8fCBtZW1xIHggbFxuXG5sZXQgcmVjIGFzc29jIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGIgZWxzZSBhc3NvYyB4IGxcblxubGV0IHJlYyBhc3NvY19vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIFNvbWUgYiBlbHNlIGFzc29jX29wdCB4IGxcblxubGV0IHJlYyBhc3NxIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIGIgZWxzZSBhc3NxIHggbFxuXG5sZXQgcmVjIGFzc3Ffb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBTb21lIGIgZWxzZSBhc3NxX29wdCB4IGxcblxubGV0IHJlYyBtZW1fYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtX2Fzc29jIHggbFxuXG5sZXQgcmVjIG1lbV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gYSA9PSB4IHx8IG1lbV9hc3NxIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NvYyB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT4gaWYgYSA9PSB4IHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc3EgeCBsXG5cbmxldCByZWMgZmluZCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCBlbHNlIGZpbmQgcCBsXG5cbmxldCByZWMgZmluZF9vcHQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kX29wdCBwIGxcblxubGV0IHJlYyBmaW5kX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCBmIGxcbiAgICAgZW5kXG5cbmxldCBmaW5kX2FsbCBwID1cbiAgbGV0IHJlYyBmaW5kIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2N1XG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIGZpbmQgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgYWNjdSBsIGluXG4gIGZpbmQgW11cblxubGV0IGZpbHRlciA9IGZpbmRfYWxsXG5cbmxldCBmaWx0ZXJpIHAgbCA9XG4gIGxldCByZWMgYXV4IGkgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjXG4gIHwgeDo6bCAtPiBhdXggKGkgKyAxKSAoaWYgcCBpIHggdGhlbiB4OjphY2MgZWxzZSBhY2MpIGxcbiAgaW5cbiAgYXV4IDAgW10gbFxuXG5sZXQgZmlsdGVyX21hcCBmID1cbiAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggYWNjdSBsXG4gICAgICAgIHwgU29tZSB2IC0+IGF1eCAodiA6OiBhY2N1KSBsXG4gIGluXG4gIGF1eCBbXVxuXG5sZXQgY29uY2F0X21hcCBmIGwgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICBsZXQgeHMgPSBmIHggaW5cbiAgICAgICBhdXggZiAocmV2X2FwcGVuZCB4cyBhY2MpIGxcbiAgaW4gYXV4IGYgW10gbFxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjY3UgbCA9XG4gIGxldCByZWMgYXV4IGFjY3UgbF9hY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3UsIHJldiBsX2FjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgYWNjdSwgeCA9IGYgYWNjdSB4IGluXG4gICAgICAgIGF1eCBhY2N1ICh4IDo6IGxfYWNjdSkgbCBpblxuICBhdXggYWNjdSBbXSBsXG5cbmxldCBwYXJ0aXRpb24gcCBsID1cbiAgbGV0IHJlYyBwYXJ0IHllcyBubyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiB5ZXMsIHJldiBubylcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gcGFydCAoeCA6OiB5ZXMpIG5vIGwgZWxzZSBwYXJ0IHllcyAoeCA6OiBubykgbCBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBwIHggd2l0aFxuICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbFxuICAgICBlbmRcbiAgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCByZWMgc3BsaXQgPSBmdW5jdGlvblxuICAgIFtdIC0+IChbXSwgW10pXG4gIHwgKHgseSk6OmwgLT5cbiAgICAgIGxldCAocngsIHJ5KSA9IHNwbGl0IGwgaW4gKHg6OnJ4LCB5OjpyeSlcblxubGV0IHJlYyBjb21iaW5lIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiAoYTEsIGEyKSA6OiBjb21iaW5lIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5jb21iaW5lXCJcblxuKCoqIHNvcnRpbmcgKilcblxubGV0IHJlYyBtZXJnZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsMiAtPiBsMlxuICB8IGwxLCBbXSAtPiBsMVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgIHRoZW4gaDEgOjogbWVyZ2UgY21wIHQxIGwyXG4gICAgICBlbHNlIGgyIDo6IG1lcmdlIGNtcCBsMSB0MlxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA8PSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA+IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCBzb3J0ID0gc3RhYmxlX3NvcnRcbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiBOb3RlOiBvbiBhIGxpc3Qgb2YgbGVuZ3RoIGJldHdlZW4gYWJvdXQgMTAwMDAwIChkZXBlbmRpbmcgb24gdGhlIG1pbm9yXG4gICBoZWFwIHNpemUgYW5kIHRoZSB0eXBlIG9mIHRoZSBsaXN0KSBhbmQgU3lzLm1heF9hcnJheV9zaXplLCBpdCBpc1xuICAgYWN0dWFsbHkgZmFzdGVyIHRvIHVzZSB0aGUgZm9sbG93aW5nLCBidXQgaXQgbWlnaHQgYWxzbyB1c2UgbW9yZSBtZW1vcnlcbiAgIGJlY2F1c2UgdGhlIGFyZ3VtZW50IGxpc3QgY2Fubm90IGJlIGRlYWxsb2NhdGVkIGluY3JlbWVudGFsbHkuXG5cbiAgIEFsc28sIHRoZXJlIHNlZW1zIHRvIGJlIGEgYnVnIGluIHRoaXMgY29kZSBvciBpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIG9ial90cnVuY2F0ZS5cblxuZXh0ZXJuYWwgb2JqX3RydW5jYXRlIDogJ2EgYXJyYXkgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcblxubGV0IGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGFjY3UgbiBwID1cbiAgICBpZiBwIDw9IDAgdGhlbiBhY2N1IGVsc2UgYmVnaW5cbiAgICAgIGlmIHAgPSBuIHRoZW4gYmVnaW5cbiAgICAgICAgb2JqX3RydW5jYXRlIGEgcDtcbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSAobi0xMDAwKSAocC0xKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSBuIChwLTEpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBbXSAobC0xMDAwKSBsXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgQXJyYXkuc3RhYmxlX3NvcnQgY21wIGE7XG4gIGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYVxuXG4qKVxuXG5cbigqKiBzb3J0aW5nICsgcmVtb3ZpbmcgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgcmVjIGRpcmVjdCBkZXB0aCBzZXEgOiBfIGxpc3QgPVxuICAgIGlmIGRlcHRoPTBcbiAgICB0aGVuXG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBzZXFcbiAgICAgIHw+IHJldiAoKiB0YWlscmVjICopXG4gICAgZWxzZSBtYXRjaCBzZXEoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW11cbiAgICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+IHggOjogZGlyZWN0IChkZXB0aC0xKSBuZXh0XG4gIGluXG4gIGRpcmVjdCA1MDAgc2VxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IHVuc2FmZV9lc2NhcGUgcyA9XG4gICgqIFdlIHBlcmZvcm0gdHdvIHBhc3NlcyBvbiB0aGUgaW5wdXQgc2VxdWVuY2UsIG9uZSB0byBjb21wdXRlIHRoZVxuICAgICByZXN1bHQgc2l6ZSBhbmQgb25lIHRvIHdyaXRlIHRoZSByZXN1bHQuXG5cbiAgICAgIzExNTA4LCAjMTE1MDk6IFRoaXMgbG9naWMgd291bGQgYmUgaW5jb3JyZWN0IGluIHByZXNlbmNlIG9mXG4gICAgIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIHRvIHRoZSBpbnB1dCwgbWFraW5nIHRoZSB1c2Ugb2ZcbiAgICAgW3Vuc2FmZV9zZXRdIGJlbG93IG1lbW9yeS11bnNhZmUuXG5cbiAgICAgUHJlY29uZGl0aW9uOiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBzYWZlbHkgY2FsbGVkIG9uOlxuICAgICAtIGFuIGltbXV0YWJsZSBieXRlIHNlcXVlbmNlXG4gICAgIC0gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlICh0aGUgZnVuY3Rpb24gdGFrZXMgb3duZXJzaGlwKVxuXG4gICAgIEluIGVpdGhlciBjYXNlIHdlIHJldHVybiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UuXG4gICopXG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gc1xuICBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IGVzY2FwZWQgYiA9XG4gIGxldCBiID0gY29weSBiIGluXG4gICgqIFdlIGNvcHkgb3VyIGlucHV0IHRvIG9idGFpbiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgW2JdXG4gICAgIHRvIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uICopXG4gIHVuc2FmZV9lc2NhcGUgYlxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcbiAgZWxzZSBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHhcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeCBlbHNlXG4gIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuXG4oKiBVVEYgY29kZWNzIGFuZCB2YWxpZGF0aW9ucyAqKVxuXG5sZXQgZGVjX2ludmFsaWQgPSBVY2hhci51dGZfZGVjb2RlX2ludmFsaWRcbmxldFtAaW5saW5lXSBkZWNfcmV0IG4gdSA9IFVjaGFyLnV0Zl9kZWNvZGUgbiAoVWNoYXIudW5zYWZlX29mX2ludCB1KVxuXG4oKiBJbiBjYXNlIG9mIGRlY29kaW5nIGVycm9yLCBpZiB3ZSBlcnJvciBvbiB0aGUgZmlyc3QgYnl0ZSwgd2VcbiAgIGNvbnN1bWUgdGhlIGJ5dGUsIG90aGVyd2lzZSB3ZSBjb25zdW1lIHRoZSBbbl0gYnl0ZXMgcHJlY2VkaW5nXG4gICB0aGUgZXJyb3JpbmcgYnl0ZS5cblxuICAgVGhpcyBtZWFucyB0aGF0IGlmIGEgY2xpZW50IHVzZXMgZGVjb2RlcyB3aXRob3V0IGNhcmluZyBhYm91dFxuICAgdmFsaWRpdHkgaXQgbmF0dXJhbGx5IHJlcGxhY2UgYm9ndXMgZGF0YSB3aXRoIFVjaGFyLnJlcCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBXSEFUV0cgRW5jb2Rpbmcgc3RhbmRhcmQuIE90aGVyIHNjaGVtZXMgYXJlIHBvc3NpYmxlIGJ5XG4gICBjb25zdWx0aW5nIHRoZSBudW1iZXIgb2YgdXNlZCBieXRlcyBvbiBpbnZhbGlkIGRlY29kZXMuIEZvciBtb3JlXG4gICBkZXRhaWxzIHNlZSBodHRwczovL2hzaXZvbmVuLmZpL2Jyb2tlbi11dGYtOC9cblxuICAgRm9yIHRoaXMgcmVhc29uIGluIFtnZXRfdXRmXzhfdWNoYXJdIHdlIGdyYWR1YWxseSBjaGVjayB0aGUgbmV4dFxuICAgYnl0ZSBpcyBhdmFpbGFibGUgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlXG4gICBmaXJzdCBieXRlLiBDb250cmFzdCB3aXRoIFtpc192YWxpZF91dGZfOF0uICopXG5cbigqIFVURi04ICopXG5cbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3hCRiBiID0gYiBsc3IgNiA8PiAwYjEwXG5sZXRbQGlubGluZV0gbm90X2luX3hBMF90b194QkYgYiA9IGIgbHNyIDUgPD4gMGIxMDFcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g5RiBiID0gYiBsc3IgNSA8PiAwYjEwMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94OTBfdG9feEJGIGIgPSBiIDwgMHg5MCB8fCAweEJGIDwgYlxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDhGIGIgPSBiIGxzciA0IDw+IDB4OFxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMiBiMCBiMSA9XG4gICgoYjAgbGFuZCAweDFGKSBsc2wgNikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIgPVxuICAoKGIwIGxhbmQgMHgwRikgbHNsIDEyKSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMyA9XG4gICgoYjAgbGFuZCAweDA3KSBsc2wgMTgpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDEyKSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMyBsYW5kIDB4M0YpKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIGIgaSA9XG4gIGxldCBiMCA9IGdldF91aW50OCBiIGkgaW4gKCogcmFpc2VzIGlmIFtpXSBpcyBub3QgYSB2YWxpZCBpbmRleC4gKilcbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgYjAgd2l0aCAoKiBTZWUgVGhlIFVuaWNvZGUgU3RhbmRhcmQsIFRhYmxlIDMuNyAqKVxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBkZWNfcmV0IDEgYjBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgZGVjX3JldCAyICh1dGZfOF91Y2hhcl8yIGIwIGIxKVxuICB8ICdcXHhFMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feEEwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFRCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g5RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEYwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94OTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGNCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g4RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCBfIC0+IGRlY19pbnZhbGlkIDFcblxubGV0IHNldF91dGZfOF91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgIHNldF91aW50OCBiIGkgdTtcbiAgICAgIDFcbiAgfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEMwIGxvciAodSBsc3IgNikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDIpXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhFMCBsb3IgKHUgbHNyIDEyKSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAzKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhGMCBsb3IgKHUgbHNyIDE4KSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgKGkgKyAyKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICA0KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfOCBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICAgIG1hdGNoIENoYXIudW5zYWZlX2NociAoZ2V0IGIgaSkgd2l0aFxuICAgIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGxvb3AgbWF4IGIgKGkgKyAxKVxuICAgIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3hBMF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEVEJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OUYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDkwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGNCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDhGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2QkUgKilcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZiZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2TEUgKilcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZsZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+ICBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubW9kdWxlIEIgPSBCeXRlc1xuXG5sZXQgYnRzID0gQi51bnNhZmVfdG9fc3RyaW5nXG5sZXQgYm9zID0gQi51bnNhZmVfb2Zfc3RyaW5nXG5cbmxldCBtYWtlIG4gYyA9XG4gIEIubWFrZSBuIGMgfD4gYnRzXG5sZXQgaW5pdCBuIGYgPVxuICBCLmluaXQgbiBmIHw+IGJ0c1xubGV0IGVtcHR5ID0gXCJcIlxubGV0IG9mX2J5dGVzID0gQi50b19zdHJpbmdcbmxldCB0b19ieXRlcyA9IEIub2Zfc3RyaW5nXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIEIuc3ViIChib3Mgcykgb2ZzIGxlbiB8PiBidHNcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgYiA9IGJvcyBzIGluXG4gICgqIFdlIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uIGJ5IHBhc3NpbmcgYW5cbiAgICAgaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2UgW2JdLiAqKVxuICBidHMgKEIudW5zYWZlX2VzY2FwZSBiKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3RyaW5nX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoIDAgeFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCogVVRGIGRlY29kZXJzIGFuZCB2YWxpZGF0b3JzICopXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzhfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzggcyA9IEIuaXNfdmFsaWRfdXRmXzggKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmJlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmJlIChib3MgcylcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZsZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZsZSBzID0gQi5pc192YWxpZF91dGZfMTZsZSAoYm9zIHMpXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuKCogbm90ZTogdGhpcyB0eXBlIGRlZmluaXRpb24gaXMgdXNlZCBpbiAncnVudGltZS9kZWJ1Z2dlci5jJyAqKVxuXG5leHRlcm5hbCB0b19jaGFubmVsOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiB1bml0XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmV4dGVybmFsIHRvX2J5dGVzOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBieXRlc1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlc1wiXG5leHRlcm5hbCB0b19zdHJpbmc6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHN0cmluZ1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fYnVmZmVyX3Vuc2FmZTpcbiAgICAgIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gaW50XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclwiXG5cbmxldCB0b19idWZmZXIgYnVmZiBvZnMgbGVuIHYgZmxhZ3MgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwudG9fYnVmZmVyOiBzdWJzdHJpbmcgb3V0IG9mIGJvdW5kc1wiXG4gIGVsc2UgdG9fYnVmZmVyX3Vuc2FmZSBidWZmIG9mcyBsZW4gdiBmbGFnc1xuXG4oKiBUaGUgZnVuY3Rpb25zIGJlbG93IHVzZSBieXRlIHNlcXVlbmNlcyBhcyBpbnB1dCwgbmV2ZXIgdXNpbmcgYW55XG4gICBtdXRhdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gdXNlIG5vbi1tdXRhdGVkIFtieXRlc10gcmF0aGVyIHRoYW5cbiAgIFtzdHJpbmddLCBiZWNhdXNlIHdlIHJlYWxseSB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGJ5dGVzLCBub3RcbiAgIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiopXG5cbmV4dGVybmFsIGZyb21fY2hhbm5lbDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBmcm9tX2J5dGVzX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXNcIlxuZXh0ZXJuYWwgZGF0YV9zaXplX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZVwiXG5cbmxldCBoZWFkZXJfc2l6ZSA9IDIwXG5sZXQgZGF0YV9zaXplIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmRhdGFfc2l6ZVwiXG4gIGVsc2UgZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mc1xubGV0IHRvdGFsX3NpemUgYnVmZiBvZnMgPSBoZWFkZXJfc2l6ZSArIGRhdGFfc2l6ZSBidWZmIG9mc1xuXG5sZXQgZnJvbV9ieXRlcyBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCBsZW4gPSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzIGluXG4gICAgaWYgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSAoaGVhZGVyX3NpemUgKyBsZW4pXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gICAgZWxzZSBmcm9tX2J5dGVzX3Vuc2FmZSBidWZmIG9mc1xuICBlbmRcblxubGV0IGZyb21fc3RyaW5nIGJ1ZmYgb2ZzID1cbiAgKCogQnl0ZXMudW5zYWZlX29mX3N0cmluZyBpcyBzYWZlIGhlcmUsIGFzIHRoZSBwcm9kdWNlZCBieXRlXG4gICAgIHNlcXVlbmNlIGlzIG5ldmVyIG11dGF0ZWQgKilcbiAgZnJvbV9ieXRlcyAoQnl0ZXMudW5zYWZlX29mX3N0cmluZyBidWZmKSBvZnNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGFycmF5cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbigqIEFycmF5IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgYXJyYXkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbmV4dGVybmFsIGdldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbmV4dGVybmFsIG1ha2U6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIHVuc2FmZV9zdWIgOiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X3N1YlwiXG5leHRlcm5hbCBhcHBlbmRfcHJpbSA6ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2FwcGVuZFwiXG5leHRlcm5hbCBjb25jYXQgOiAnYSBhcnJheSBsaXN0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2NvbmNhdFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gICdhIGFycmF5IC0+IGludCAtPiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6XG4gICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9maWxsXCJcbmV4dGVybmFsIGNyZWF0ZV9mbG9hdDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG5cbm1vZHVsZSBGbG9hdGFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBmbG9hdGFycmF5ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogZmxvYXRhcnJheSAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcbmVuZFxuXG5sZXQgaW5pdCBsIGYgPVxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZVxuICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gICgqIFNlZSAjNjU3NS4gV2UgY291bGQgYWxzbyBjaGVjayBmb3IgbWF4aW11bSBhcnJheSBzaXplLCBidXQgdGhpcyBkZXBlbmRzXG4gICAgIG9uIHdoZXRoZXIgd2UgY3JlYXRlIGEgZmxvYXQgYXJyYXkgb3IgYSByZWd1bGFyIG9uZS4uLiAqKVxuICBlbHNlXG4gICBsZXQgcmVzID0gY3JlYXRlIGwgKGYgMCkgaW5cbiAgIGZvciBpID0gMSB0byBwcmVkIGwgZG9cbiAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgZG9uZTtcbiAgIHJlc1xuXG5sZXQgbWFrZV9tYXRyaXggc3ggc3kgaW5pdCA9XG4gIGxldCByZXMgPSBjcmVhdGUgc3ggW3x8XSBpblxuICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgIHVuc2FmZV9zZXQgcmVzIHggKGNyZWF0ZSBzeSBpbml0KVxuICBkb25lO1xuICByZXNcblxubGV0IGNvcHkgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW4gaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG5sZXQgYXBwZW5kIGExIGEyID1cbiAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsZW5ndGggYTIgPSAwIHRoZW4gdW5zYWZlX3N1YiBhMSAwIGwxXG4gIGVsc2UgYXBwZW5kX3ByaW0gYTEgYTJcblxubGV0IHN1YiBhIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LnN1YlwiXG4gIGVsc2UgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxubGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuXG5cbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgaXRlcjIgZiBhIGIgPVxuICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbmxldCBtYXAgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwIGYgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gaW50IC0+IGZsb2F0IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGV4aXN0cyBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb3JfYWxsIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgZmFsc2UgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1lbSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBidXQgc2xpZ2h0bHkgZGlmZmVyZW50ICopXG4gIGxldCBtZW1faWVlZSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHggPSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBleGNlcHRpb24gQm90dG9tIG9mIGludFxuICBsZXQgc29ydCBjbXAgYSA9XG4gICAgbGV0IG1heHNvbiBsIGkgPVxuICAgICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICAgIXhcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgICB0aGVuIGkzMSsxXG4gICAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgICBpblxuICAgIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICBidWJibGVkb3duIGwgalxuICAgIGluXG4gICAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gICAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gICAgZG9uZTtcbiAgICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgZXhjZXB0IGZvciB0aGUgY2FsbCB0byBbY3JlYXRlXSAqKVxuICBsZXQgY3V0b2ZmID0gNVxuICBsZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICAgIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICAgIGVuZFxuICAgICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gICAgaW5cbiAgICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDMyXTogMzItYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl90b19mbG9hdFwiIFwiY2FtbF9pbnQzMl90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgemVybyA9IDBsXG5sZXQgb25lID0gMWxcbmxldCBtaW51c19vbmUgPSAtMWxcbmxldCBzdWNjIG4gPSBhZGQgbiAxbFxubGV0IHByZWQgbiA9IHN1YiBuIDFsXG5sZXQgYWJzIG4gPSBpZiBuID49IDBsIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDBsXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZsXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFsKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gIHwgMzIgLT5cbiAgICAgIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gICAgICBmdW4gbiAtPlxuICAgICAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gaW50MzJcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5cblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtOYXRpdmVpbnRdOiBwcm9jZXNzb3ItbmF0aXZlIGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZzogbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9uZWdcIlxuZXh0ZXJuYWwgYWRkOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hZGRcIlxuZXh0ZXJuYWwgc3ViOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9zdWJcIlxuZXh0ZXJuYWwgbXVsOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tdWxcIlxuZXh0ZXJuYWwgZGl2OiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9kaXZcIlxuZXh0ZXJuYWwgcmVtOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29yXCJcbmV4dGVybmFsIGxvZ3hvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWw6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzclwiXG5leHRlcm5hbCBvZl9pbnQ6IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludDogbmF0aXZlaW50IC0+IGludCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogbmF0aXZlaW50IC0+IGZsb2F0XG4gID0gXCJjYW1sX25hdGl2ZWludF90b19mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyOiBuYXRpdmVpbnQgLT4gaW50MzIgPSBcIiVuYXRpdmVpbnRfdG9faW50MzJcIlxuXG5sZXQgemVybyA9IDBuXG5sZXQgb25lID0gMW5cbmxldCBtaW51c19vbmUgPSAtMW5cbmxldCBzdWNjIG4gPSBhZGQgbiAxblxubGV0IHByZWQgbiA9IHN1YiBuIDFuXG5sZXQgYWJzIG4gPSBpZiBuID49IDBuIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgc2l6ZSA9IFN5cy53b3JkX3NpemVcbmxldCBtaW5faW50ID0gc2hpZnRfbGVmdCAxbiAoc2l6ZSAtIDEpXG5sZXQgbWF4X2ludCA9IHN1YiBtaW5faW50IDFuXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFuKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBuYXRpdmVpbnRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+IHVuaXQ7XG4gICAgbmFtZXNfY29uc3QgOiBzdHJpbmc7XG4gICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcgfVxuXG5leGNlcHRpb24gWVlleGl0IG9mIE9iai50XG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBwYXJzZXJfaW5wdXQgPVxuICAgIFN0YXJ0XG4gIHwgVG9rZW5fcmVhZFxuICB8IFN0YWNrc19ncm93bl8xXG4gIHwgU3RhY2tzX2dyb3duXzJcbiAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWRcbiAgfCBFcnJvcl9kZXRlY3RlZFxuXG50eXBlIHBhcnNlcl9vdXRwdXQgPVxuICAgIFJlYWRfdG9rZW5cbiAgfCBSYWlzZV9wYXJzZV9lcnJvclxuICB8IEdyb3dfc3RhY2tzXzFcbiAgfCBHcm93X3N0YWNrc18yXG4gIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb25cbiAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uXG5cbigqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5sZXQgXyA9IFtSZWFkX3Rva2VuOyBSYWlzZV9wYXJzZV9lcnJvcjsgR3Jvd19zdGFja3NfMTsgR3Jvd19zdGFja3NfMjtcbiAgICAgICAgIENvbXB1dGVfc2VtYW50aWNfYWN0aW9uOyBDYWxsX2Vycm9yX2Z1bmN0aW9uXVxuXG5leHRlcm5hbCBwYXJzZV9lbmdpbmUgOlxuICAgIHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52IC0+IHBhcnNlcl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0XG4gICAgPSBcImNhbWxfcGFyc2VfZW5naW5lXCJcblxuZXh0ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2xcbiAgICA9IFwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlXCJcblxubGV0IGVudiA9XG4gIHsgc19zdGFjayA9IEFycmF5Lm1ha2UgMTAwIDA7XG4gICAgdl9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIChPYmoucmVwciAoKSk7XG4gICAgc3ltYl9zdGFydF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzeW1iX2VuZF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzdGFja3NpemUgPSAxMDA7XG4gICAgc3RhY2tiYXNlID0gMDtcbiAgICBjdXJyX2NoYXIgPSAwO1xuICAgIGx2YWwgPSBPYmoucmVwciAoKTtcbiAgICBzeW1iX3N0YXJ0ID0gZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kID0gZHVtbXlfcG9zO1xuICAgIGFzcCA9IDA7XG4gICAgcnVsZV9sZW4gPSAwO1xuICAgIHJ1bGVfbnVtYmVyID0gMDtcbiAgICBzcCA9IDA7XG4gICAgc3RhdGUgPSAwO1xuICAgIGVycmZsYWcgPSAwIH1cblxubGV0IGdyb3dfc3RhY2tzKCkgPVxuICBsZXQgb2xkc2l6ZSA9IGVudi5zdGFja3NpemUgaW5cbiAgbGV0IG5ld3NpemUgPSBvbGRzaXplICogMiBpblxuICBsZXQgbmV3X3MgPSBBcnJheS5tYWtlIG5ld3NpemUgMFxuICBhbmQgbmV3X3YgPSBBcnJheS5tYWtlIG5ld3NpemUgKE9iai5yZXByICgpKVxuICBhbmQgbmV3X3N0YXJ0ID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3Bvc1xuICBhbmQgbmV3X2VuZCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3MgaW5cbiAgICBBcnJheS5ibGl0IGVudi5zX3N0YWNrIDAgbmV3X3MgMCBvbGRzaXplO1xuICAgIGVudi5zX3N0YWNrIDwtIG5ld19zO1xuICAgIEFycmF5LmJsaXQgZW52LnZfc3RhY2sgMCBuZXdfdiAwIG9sZHNpemU7XG4gICAgZW52LnZfc3RhY2sgPC0gbmV3X3Y7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9zdGFydF9zdGFjayAwIG5ld19zdGFydCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfc3RhcnRfc3RhY2sgPC0gbmV3X3N0YXJ0O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfZW5kX3N0YWNrIDAgbmV3X2VuZCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfZW5kX3N0YWNrIDwtIG5ld19lbmQ7XG4gICAgZW52LnN0YWNrc2l6ZSA8LSBuZXdzaXplXG5cbmxldCBjbGVhcl9wYXJzZXIoKSA9XG4gIEFycmF5LmZpbGwgZW52LnZfc3RhY2sgMCBlbnYuc3RhY2tzaXplIChPYmoucmVwciAoKSk7XG4gIGVudi5sdmFsIDwtIE9iai5yZXByICgpXG5cbmxldCBjdXJyZW50X2xvb2thaGVhZF9mdW4gPSByZWYgKGZ1biAoXyA6IE9iai50KSAtPiBmYWxzZSlcblxubGV0IHl5cGFyc2UgdGFibGVzIHN0YXJ0IGxleGVyIGxleGJ1ZiA9XG4gIGxldCByZWMgbG9vcCBjbWQgYXJnID1cbiAgICBtYXRjaCBwYXJzZV9lbmdpbmUgdGFibGVzIGVudiBjbWQgYXJnIHdpdGhcbiAgICAgIFJlYWRfdG9rZW4gLT5cbiAgICAgICAgbGV0IHQgPSBPYmoucmVwcihsZXhlciBsZXhidWYpIGluXG4gICAgICAgIGVudi5zeW1iX3N0YXJ0IDwtIGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICAgICAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBsb29wIFRva2VuX3JlYWQgdFxuICAgIHwgUmFpc2VfcGFyc2VfZXJyb3IgLT5cbiAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uIC0+XG4gICAgICAgIGxldCAoYWN0aW9uLCB2YWx1ZSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgKFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCwgdGFibGVzLmFjdGlvbnMuKGVudi5ydWxlX251bWJlcikgZW52KVxuICAgICAgICAgIHdpdGggUGFyc2VfZXJyb3IgLT5cbiAgICAgICAgICAgIChFcnJvcl9kZXRlY3RlZCwgT2JqLnJlcHIgKCkpIGluXG4gICAgICAgIGxvb3AgYWN0aW9uIHZhbHVlXG4gICAgfCBHcm93X3N0YWNrc18xIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzEgKE9iai5yZXByICgpKVxuICAgIHwgR3Jvd19zdGFja3NfMiAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8yIChPYmoucmVwciAoKSlcbiAgICB8IENhbGxfZXJyb3JfZnVuY3Rpb24gLT5cbiAgICAgICAgdGFibGVzLmVycm9yX2Z1bmN0aW9uIFwic3ludGF4IGVycm9yXCI7XG4gICAgICAgIGxvb3AgRXJyb3JfZGV0ZWN0ZWQgKE9iai5yZXByICgpKSBpblxuICBsZXQgaW5pdF9hc3AgPSBlbnYuYXNwXG4gIGFuZCBpbml0X3NwID0gZW52LnNwXG4gIGFuZCBpbml0X3N0YWNrYmFzZSA9IGVudi5zdGFja2Jhc2VcbiAgYW5kIGluaXRfc3RhdGUgPSBlbnYuc3RhdGVcbiAgYW5kIGluaXRfY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhclxuICBhbmQgaW5pdF9sdmFsID0gZW52Lmx2YWxcbiAgYW5kIGluaXRfZXJyZmxhZyA9IGVudi5lcnJmbGFnIGluXG4gIGVudi5zdGFja2Jhc2UgPC0gZW52LnNwICsgMTtcbiAgZW52LmN1cnJfY2hhciA8LSBzdGFydDtcbiAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICB0cnlcbiAgICBsb29wIFN0YXJ0IChPYmoucmVwciAoKSlcbiAgd2l0aCBleG4gLT5cbiAgICBsZXQgY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhciBpblxuICAgIGVudi5hc3AgPC0gaW5pdF9hc3A7XG4gICAgZW52LnNwIDwtIGluaXRfc3A7XG4gICAgZW52LnN0YWNrYmFzZSA8LSBpbml0X3N0YWNrYmFzZTtcbiAgICBlbnYuc3RhdGUgPC0gaW5pdF9zdGF0ZTtcbiAgICBlbnYuY3Vycl9jaGFyIDwtIGluaXRfY3Vycl9jaGFyO1xuICAgIGVudi5sdmFsIDwtIGluaXRfbHZhbDtcbiAgICBlbnYuZXJyZmxhZyA8LSBpbml0X2VycmZsYWc7XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIFlZZXhpdCB2IC0+XG4gICAgICAgIE9iai5tYWdpYyB2XG4gICAgfCBfIC0+XG4gICAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1biA6PVxuICAgICAgICAgIChmdW4gdG9rIC0+XG4gICAgICAgICAgICBpZiBPYmouaXNfYmxvY2sgdG9rXG4gICAgICAgICAgICB0aGVuIHRhYmxlcy50cmFuc2xfYmxvY2suKE9iai50YWcgdG9rKSA9IGN1cnJfY2hhclxuICAgICAgICAgICAgZWxzZSB0YWJsZXMudHJhbnNsX2NvbnN0LihPYmoubWFnaWMgdG9rKSA9IGN1cnJfY2hhcik7XG4gICAgICAgIHJhaXNlIGV4blxuXG5sZXQgcGVla192YWwgZW52IG4gPVxuICBPYmoubWFnaWMgZW52LnZfc3RhY2suKGVudi5hc3AgLSBuKVxuXG5sZXQgc3ltYm9sX3N0YXJ0X3BvcyAoKSA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDw9IDAgdGhlbiBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHN0ID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGxldCBlbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgaWYgc3QgPD4gZW4gdGhlbiBzdCBlbHNlIGxvb3AgKGkgLSAxKVxuICAgIGVuZFxuICBpblxuICBsb29wIGVudi5ydWxlX2xlblxuXG5sZXQgc3ltYm9sX2VuZF9wb3MgKCkgPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG5sZXQgcmhzX3N0YXJ0X3BvcyBuID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5sZXQgcmhzX2VuZF9wb3MgbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcblxubGV0IHN5bWJvbF9zdGFydCAoKSA9IChzeW1ib2xfc3RhcnRfcG9zICgpKS5wb3NfY251bVxubGV0IHN5bWJvbF9lbmQgKCkgPSAoc3ltYm9sX2VuZF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgcmhzX3N0YXJ0IG4gPSAocmhzX3N0YXJ0X3BvcyBuKS5wb3NfY251bVxubGV0IHJoc19lbmQgbiA9IChyaHNfZW5kX3BvcyBuKS5wb3NfY251bVxuXG5sZXQgaXNfY3VycmVudF9sb29rYWhlYWQgdG9rID1cbiAgKCFjdXJyZW50X2xvb2thaGVhZF9mdW4pKE9iai5yZXByIHRvaylcblxubGV0IHBhcnNlX2Vycm9yIChfIDogc3RyaW5nKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGVsdFxuICAgIHR5cGUgdFxuICAgIHZhbCBlbXB0eTogdFxuICAgIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gICAgdmFsIG1lbTogZWx0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgc2luZ2xldG9uOiBlbHQgLT4gdFxuICAgIHZhbCByZW1vdmU6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gICAgdmFsIGludGVyOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBkaXNqb2ludDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZGlmZjogdCAtPiB0IC0+IHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGVsdCAtPiBlbHQgb3B0aW9uKSAtPiB0IC0+IHRcbiAgICB2YWwgcGFydGl0aW9uOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgICB2YWwgY2FyZGluYWw6IHQgLT4gaW50XG4gICAgdmFsIGVsZW1lbnRzOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG1pbl9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1pbl9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgbWF4X2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWF4X2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBjaG9vc2U6IHQgLT4gZWx0XG4gICAgdmFsIGNob29zZV9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgb2ZfbGlzdDogZWx0IGxpc3QgLT4gdFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGVsdCAtPiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IGVsdCBTZXEudCAtPiB0IC0+IHRcbiAgICB2YWwgb2Zfc2VxIDogZWx0IFNlcS50IC0+IHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID1cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB7bDp0OyB2OmVsdDsgcjp0OyBoOmludH1cblxuICAgICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlXG4gICAgICAgY2hpbGRyZW4gZGlmZmVyIGJ5IGF0IG1vc3QgMiAqKVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gICAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgICBsZXQgYmFsIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgICBsZXQgcmVjIGFkZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHQgZWxzZVxuICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0IGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0IGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHNpbmdsZXRvbiB4ID0gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgdiBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBlbGVtZW50cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBlbGVtZW50LlxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fZWxlbWVudCB4IGwpIHYgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgKGFkZF9tYXhfZWxlbWVudCB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9lbGVtZW50IHYgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfZWxlbWVudCB2IGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgcj1scjsgaD1saH0sIE5vZGV7bD1ybDsgdj1ydjsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiByXG5cbiAgICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHQgbFxuXG4gICAgbGV0IHJlYyBtaW5fZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0X29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdCByXG5cbiAgICBsZXQgcmVjIG1heF9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHRfb3B0IHJcblxuICAgICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gYmFsIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGpvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIFNwbGl0dGluZy4gIHNwbGl0IHggcyByZXR1cm5zIGEgdHJpcGxlIChsLCBwcmVzZW50LCByKSB3aGVyZVxuICAgICAgICAtIGwgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlIDwgeFxuICAgICAgICAtIHIgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlID4geFxuICAgICAgICAtIHByZXNlbnQgaXMgZmFsc2UgaWYgcyBjb250YWlucyBubyBlbGVtZW50IGVxdWFsIHRvIHgsXG4gICAgICAgICAgb3IgdHJ1ZSBpZiBzIGNvbnRhaW5zIGFuIGVsZW1lbnQgZXF1YWwgdG8geC4gKilcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBmYWxzZSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIHRydWUsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGxyLCBwcmVzLCBycilcblxuICAgICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0gYXMgdCkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluXG4gICAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluXG4gICAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdDIpIC0+IHQyXG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjE7IGg9aDF9LCBOb2Rle2w9bDI7IHY9djI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMSB0aGVuIGFkZCB2MiBzMSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDIsIF8sIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBoMSA9IDEgdGhlbiBhZGQgdjEgczIgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwxLCBfLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAoXywgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMilcblxuICAgICgqIFNhbWUgYXMgc3BsaXQsIGJ1dCBjb21wdXRlIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlc1xuICAgICAgIG9ubHkgaWYgdGhlIHBpdm90IGVsZW1lbnQgaXMgbm90IGluIHRoZSBzZXQuICBUaGUgcmlnaHQgc3VidHJlZVxuICAgICAgIGlzIGNvbXB1dGVkIG9uIGRlbWFuZC4gKilcblxuICAgIHR5cGUgc3BsaXRfYmlzID1cbiAgICAgIHwgRm91bmRcbiAgICAgIHwgTm90Rm91bmQgb2YgdCAqICh1bml0IC0+IHQpXG5cbiAgICBsZXQgcmVjIHNwbGl0X2JpcyB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb3RGb3VuZCAoRW1wdHksIChmdW4gKCkgLT4gRW1wdHkpKVxuICAgICAgfCBOb2Rle2w7IHY7IHI7IF99IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIEZvdW5kXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCBsIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxsLCBybCkgLT4gTm90Rm91bmQgKGxsLCAoZnVuICgpIC0+IGpvaW4gKHJsICgpKSB2IHIpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IHIgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobHIsIHJyKSAtPiBOb3RGb3VuZCAoam9pbiBsIHYgbHIsIHJyKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgfCAoXywgRW1wdHkpIC0+IHRydWVcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIGlmIHMxID09IHMyIHRoZW4gZmFsc2VcbiAgICAgICAgICBlbHNlIG1hdGNoIHNwbGl0X2JpcyB2MSB0MiB3aXRoXG4gICAgICAgICAgICAgIE5vdEZvdW5kKGwyLCByMikgLT4gZGlzam9pbnQgbDEgbDIgJiYgZGlzam9pbnQgcjEgKHIyICgpKVxuICAgICAgICAgICAgfCBGb3VuZCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMilcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgciwgZSkpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgIHwgKE1vcmUodjEsIHIxLCBlMSksIE1vcmUodjIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcblxuICAgIGxldCBjb21wYXJlIHMxIHMyID1cbiAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gczEgRW5kKSAoY29uc19lbnVtIHMyIEVuZClcblxuICAgIGxldCBlcXVhbCBzMSBzMiA9XG4gICAgICBjb21wYXJlIHMxIHMyID0gMFxuXG4gICAgbGV0IHJlYyBzdWJzZXQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICBFbXB0eSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsPWwxOyB2PXYxOyByPXIxfSwgKE5vZGUge2w9bDI7IHY9djI7IHI9cjJ9IGFzIHQyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgbDEgbDIgJiYgc3Vic2V0IHIxIHIyXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9bDE7IHY9djE7IHI9RW1wdHk7IGg9MH0pIGwyICYmIHN1YnNldCByMSB0MlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1FbXB0eTsgdj12MTsgcj1yMTsgaD0wfSkgcjIgJiYgc3Vic2V0IGwxIHQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gaXRlciBmIGw7IGYgdjsgaXRlciBmIHJcblxuICAgIGxldCByZWMgZm9sZCBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGZvbGQgZiByIChmIHYgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2ICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0pIGFzIHQgLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHYgdGhlblxuICAgICAgICAgICAgaWYgbD09bCcgJiYgcj09cicgdGhlbiB0IGVsc2Ugam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2XG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgcmYpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2Rle2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGVsZW1lbnRzIHMgPVxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fZWx0XG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9lbHRfb3B0XG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHZcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIHZcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgdHJ5X2pvaW4gbCB2IHIgPVxuICAgICAgKCogW2pvaW4gbCB2IHJdIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIChlbGVtZW50cyBvZiBsIDwgdiA8XG4gICAgICAgICBlbGVtZW50cyBvZiByKTsgdXNlIFt0cnlfam9pbiBsIHYgcl0gd2hlbiB0aGlzIHByb3BlcnR5IG1heVxuICAgICAgICAgbm90IGhvbGQsIGJ1dCB5b3UgaG9wZSBpdCBkb2VzIGhvbGQgaW4gdGhlIGNvbW1vbiBjYXNlICopXG4gICAgICBpZiAobCA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIChtYXhfZWx0IGwpIHYgPCAwKVxuICAgICAgJiYgKHIgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSB2IChtaW5fZWx0IHIpIDwgMClcbiAgICAgIHRoZW4gam9pbiBsIHYgclxuICAgICAgZWxzZSB1bmlvbiBsIChhZGQgdiByKVxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG5cbiAgICBsZXQgdHJ5X2NvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IHRyeV9qb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCB2JyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB2JyAtPlxuICAgICAgICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgdHJ5X2NvbmNhdCBsJyByJ1xuICAgICAgICAgZW5kXG5cbiAgICBsZXQgb2Zfc29ydGVkX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIHN1YiBuIGwgPVxuICAgICAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICAgICAgfCAwLCBsIC0+IEVtcHR5LCBsXG4gICAgICAgIHwgMSwgeDAgOjogbCAtPiBOb2RlIHtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9LCBsXG4gICAgICAgIHwgMiwgeDAgOjogeDEgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTsgcj1FbXB0eTsgaD0yfSwgbFxuICAgICAgICB8IDMsIHgwIDo6IHgxIDo6IHgyIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7XG4gICAgICAgICAgICAgICAgIHI9Tm9kZXtsPUVtcHR5OyB2PXgyOyByPUVtcHR5OyBoPTF9OyBoPTJ9LCBsXG4gICAgICAgIHwgbiwgbCAtPlxuICAgICAgICAgIGxldCBubCA9IG4gLyAyIGluXG4gICAgICAgICAgbGV0IGxlZnQsIGwgPSBzdWIgbmwgbCBpblxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBtaWQgOjogbCAtPlxuICAgICAgICAgICAgbGV0IHJpZ2h0LCBsID0gc3ViIChuIC0gbmwgLSAxKSBsIGluXG4gICAgICAgICAgICBjcmVhdGUgbGVmdCBtaWQgcmlnaHQsIGxcbiAgICAgIGluXG4gICAgICBmc3QgKHN1YiAoTGlzdC5sZW5ndGggbCkgbClcblxuICAgIGxldCBvZl9saXN0IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVtcHR5XG4gICAgICB8IFt4MF0gLT4gc2luZ2xldG9uIHgwXG4gICAgICB8IFt4MDsgeDFdIC0+IGFkZCB4MSAoc2luZ2xldG9uIHgwKVxuICAgICAgfCBbeDA7IHgxOyB4Ml0gLT4gYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4M10gLT4gYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4MzsgeDRdIC0+IGFkZCB4NCAoYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpKVxuICAgICAgfCBfIC0+IG9mX3NvcnRlZF9saXN0IChMaXN0LnNvcnRfdW5pcSBPcmQuY29tcGFyZSBsKVxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBzIHggLT4gYWRkIHggcykgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIGMgPSBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBjIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9IHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgcyA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgcyBjID0gbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHI7IHY7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgcyBFbmQpXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbTogIGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG4oKiBUaGUgW2lubmVyX2J1ZmZlcl0gdHlwZSBlbnN1cmVzIHRoYXQgdGhlIFtsZW5ndGhdIGFuZCBbYnVmZmVyXSBmaWVsZHMgYXJlXG4gICBhbHdheXMgc3luY2hyb25pemVkLCBbbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGJ1ZmZlcl0sIGV2ZW4gaW4gcHJlc2VuY2VcbiAgIG9mIGRhdGEgcmFjZXMuXG4qKVxudHlwZSBpbm5lcl9idWZmZXIgPSB7XG4gIGJ1ZmZlcjogYnl0ZXM7XG4gIGxlbmd0aDogaW50O1xufVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGlubmVyIDogaW5uZXJfYnVmZmVyO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFtpbm5lci5sZW5ndGggPSBCeXRlcy5sZW5ndGggaW5uZXIuYnVmZmVyXVxuICAgSW4gYWJzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBhbHNvIGhhdmVcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmlubmVyLmxlbmd0aF1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmlubmVyLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7IGlubmVyID0geyBidWZmZXIgPSBzOyBsZW5ndGggPSBufTsgcG9zaXRpb24gPSAwOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy5ibGl0IHNyYy5pbm5lci5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gcG9zaXRpb24gfHwgcG9zaXRpb24gPiBsZW5ndGggdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBsZXQgaW5uZXIgPVxuICAgIHsgYnVmZmVyID0gYi5pbml0aWFsX2J1ZmZlcjsgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuaW5pdGlhbF9idWZmZXIgfVxuICBpblxuICBiLmlubmVyIDwtIGlubmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIuaW5uZXIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmlubmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IuaW5uZXIubGVuZ3RoXS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIuaW5uZXIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmlubmVyLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmlubmVyIDwtIHsgYnVmZmVyID0gbmV3X2J1ZmZlcjsgbGVuZ3RoID0gIW5ld19sZW4gfVxuXG4oKiBOb3RlOlxuICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyBoYXZlIGEgZmFzdCBwYXRoIHdoZW4gdGhlIGlubmVyXG4gIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZXh0ZW5kZWQuXG4gICAgSW4gdGhpcyBjYXNlLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdW5zYWZlIGFjY2Vzc2VzIG9uIHRoZVxuICBjb250ZW50cyBvZiB0aGUgW2lubmVyXSBmaWVsZCBzaW5jZSBpdHMgZmllbGRzIGFyZSBpbW11dGFibGUuXG4gIEluIHByZXNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIG1heSBhY2Nlc3MgdGhlIHdyb25nIGlubmVyIGJ1ZmZlciwgYnV0IHdlXG4gIHdpbGwgdXNlIHRoaXMgYnVmZmVyIHNhZmVseS5cbiAgQXMgc29vbiBhcyB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgYnVmZmVyLCB3ZSBmYWxsIGJhY2sgdG8gc2FmZSBhY2Nlc3Nlcy5cbiopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBwb3MgPj0gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgQnl0ZXMuc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gY1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyBvZmZzZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW5cbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgb2Zmc2V0IGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7IGxlbmd0aH0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyAwIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5pbm5lci5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyAoc3RhcnQgKyAxKSBpblxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIGogbGltIGluXG4gICAgICAgICBhZGRfc3RyaW5nIGIgKGYgaWRlbnQpO1xuICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gcHJldmlvdXMgPT0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICdcXFxcJyBhcyBjdXJyZW50IC0+XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAxO1xuICAgIHNldF9pbnQ4IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDggYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMjtcbiAgICBzZXRfaW50MTYgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MTYgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgNDtcbiAgICBzZXRfaW50MzIgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MzIgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgODtcbiAgICBzZXRfaW50NjQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50NjQgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBDb2xsw6hnZSBkZSBGcmFuY2UgYW5kIElOUklBIFBhcmlzICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFNlbWFwaG9yZXMgKilcblxudHlwZSBzZW0gPSB7XG4gIG11dDogTXV0ZXgudDsgICAgICAgICAgICAgICAgICAgICAgICAgKCogcHJvdGVjdHMgW3ZdICopXG4gIG11dGFibGUgdjogaW50OyAgICAgICAgICAgICAgICAgICAgICAgKCogdGhlIGN1cnJlbnQgdmFsdWUgKilcbiAgbm9uemVybzogQ29uZGl0aW9uLnQgICAgICAgICAgICAgICAgICAoKiBzaWduYWxlZCB3aGVuIFt2ID4gMF0gKilcbn1cblxubW9kdWxlIENvdW50aW5nID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSB2ID1cbiAgaWYgdiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlbWFwaG9yZS5Db3VudGluZy5pbml0OiB3cm9uZyBpbml0aWFsIHZhbHVlXCI7XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7IHY7IG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgaWYgcy52IDwgbWF4X2ludCB0aGVuIGJlZ2luXG4gICAgcy52IDwtIHMudiArIDE7XG4gICAgQ29uZGl0aW9uLnNpZ25hbCBzLm5vbnplcm87XG4gICAgTXV0ZXgudW5sb2NrIHMubXV0XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICAgIHJhaXNlIChTeXNfZXJyb3IgXCJTZW1hcGhvcmUuQ291bnRpbmcucmVsZWFzZTogb3ZlcmZsb3dcIilcbiAgZW5kXG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gcy52IC0gMTtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gcy52IC0gMTsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxubGV0IGdldF92YWx1ZSBzID0gcy52XG5cbmVuZFxuXG5tb2R1bGUgQmluYXJ5ID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSBiID1cbiAgeyBtdXQgPSBNdXRleC5jcmVhdGUoKTtcbiAgICB2ID0gaWYgYiB0aGVuIDEgZWxzZSAwO1xuICAgIG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgcy52IDwtIDE7XG4gIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IGFjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHdoaWxlIHMudiA9IDAgZG8gQ29uZGl0aW9uLndhaXQgcy5ub256ZXJvIHMubXV0IGRvbmU7XG4gIHMudiA8LSAwO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IHRyeV9hY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBsZXQgcmV0ID0gaWYgcy52ID0gMCB0aGVuIGZhbHNlIGVsc2UgKHMudiA8LSAwOyB0cnVlKSBpblxuICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gIHJldFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+IHVuaXQpIC0+IE11dGV4LnQgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIlxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHN0YXRlID1cbnwgUnVubmluZ1xufCBGaW5pc2hlZCBvZiAoJ2EsIGV4bikgcmVzdWx0XG5cbnR5cGUgJ2EgdCA9IHtcbiAgZG9tYWluIDogUmF3LnQ7XG4gIHRlcm1fbXV0ZXg6IE11dGV4LnQ7XG4gIHRlcm1fY29uZGl0aW9uOiBDb25kaXRpb24udDtcbiAgdGVybV9zdGF0ZTogJ2Egc3RhdGUgcmVmICgqIHByb3RlY3RlZCBieSBbdGVybV9tdXRleF0gKilcbn1cblxubW9kdWxlIERMUyA9IHN0cnVjdFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqLnQgYXJyYXlcblxuICBsZXQgdW5pcXVlX3ZhbHVlID0gT2JqLnJlcHIgKHJlZiAwKVxuXG4gIGV4dGVybmFsIGdldF9kbHNfc3RhdGUgOiB1bml0IC0+IGRsc19zdGF0ZSA9IFwiJWRsc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2RvbWFpbl9kbHNfc2V0XCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlX2RscyAoKSA9XG4gICAgbGV0IHN0ID0gQXJyYXkubWFrZSA4IHVuaXF1ZV92YWx1ZSBpblxuICAgIHNldF9kbHNfc3RhdGUgc3RcblxuICBsZXQgXyA9IGNyZWF0ZV9kbHMgKClcblxuICB0eXBlICdhIGtleSA9IGludCAqICh1bml0IC0+ICdhKVxuXG4gIGxldCBrZXlfY291bnRlciA9IEF0b21pYy5tYWtlIDBcblxuICB0eXBlIGtleV9pbml0aWFsaXplciA9XG4gICAgS0k6ICdhIGtleSAqICgnYSAtPiAnYSkgLT4ga2V5X2luaXRpYWxpemVyXG5cbiAgbGV0IHBhcmVudF9rZXlzID0gQXRvbWljLm1ha2UgKFtdIDoga2V5X2luaXRpYWxpemVyIGxpc3QpXG5cbiAgbGV0IHJlYyBhZGRfcGFyZW50X2tleSBraSA9XG4gICAgbGV0IGwgPSBBdG9taWMuZ2V0IHBhcmVudF9rZXlzIGluXG4gICAgaWYgbm90IChBdG9taWMuY29tcGFyZV9hbmRfc2V0IHBhcmVudF9rZXlzIGwgKGtpIDo6IGwpKVxuICAgIHRoZW4gYWRkX3BhcmVudF9rZXkga2lcblxuICBsZXQgbmV3X2tleSA/c3BsaXRfZnJvbV9wYXJlbnQgaW5pdF9vcnBoYW4gPVxuICAgIGxldCBpZHggPSBBdG9taWMuZmV0Y2hfYW5kX2FkZCBrZXlfY291bnRlciAxIGluXG4gICAgbGV0IGsgPSAoaWR4LCBpbml0X29ycGhhbikgaW5cbiAgICBiZWdpbiBtYXRjaCBzcGxpdF9mcm9tX3BhcmVudCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNwbGl0IC0+IGFkZF9wYXJlbnRfa2V5IChLSShrLCBzcGxpdCkpXG4gICAgZW5kO1xuICAgIGtcblxuICAoKiBJZiBuZWNlc3NhcnksIGdyb3cgdGhlIGN1cnJlbnQgZG9tYWluJ3MgbG9jYWwgc3RhdGUgYXJyYXkgc3VjaCB0aGF0IFtpZHhdXG4gICAqIGlzIGEgdmFsaWQgaW5kZXggaW4gdGhlIGFycmF5LiAqKVxuICBsZXQgbWF5YmVfZ3JvdyBpZHggPVxuICAgIGxldCBzdCA9IGdldF9kbHNfc3RhdGUgKCkgaW5cbiAgICBsZXQgc3ogPSBBcnJheS5sZW5ndGggc3QgaW5cbiAgICBpZiBpZHggPCBzeiB0aGVuIHN0XG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHJlYyBjb21wdXRlX25ld19zaXplIHMgPVxuICAgICAgICBpZiBpZHggPCBzIHRoZW4gcyBlbHNlIGNvbXB1dGVfbmV3X3NpemUgKDIgKiBzKVxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3ogPSBjb21wdXRlX25ld19zaXplIHN6IGluXG4gICAgICBsZXQgbmV3X3N0ID0gQXJyYXkubWFrZSBuZXdfc3ogdW5pcXVlX3ZhbHVlIGluXG4gICAgICBBcnJheS5ibGl0IHN0IDAgbmV3X3N0IDAgc3o7XG4gICAgICBzZXRfZGxzX3N0YXRlIG5ld19zdDtcbiAgICAgIG5ld19zdFxuICAgIGVuZFxuXG4gIGxldCBzZXQgKGlkeCwgX2luaXQpIHggPVxuICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluXG4gICAgKCogW1N5cy5vcGFxdWVfaWRlbnRpdHldIGVuc3VyZXMgdGhhdCBmbGFtYmRhIGRvZXMgbm90IGxvb2sgYXQgdGhlIHR5cGUgb2ZcbiAgICAgKiBbeF0sIHdoaWNoIG1heSBiZSBhIFtmbG9hdF0gYW5kIGNvbmNsdWRlIHRoYXQgdGhlIFtzdF0gaXMgYSBmbG9hdCBhcnJheS5cbiAgICAgKiBXZSBkbyBub3Qgd2FudCBPQ2FtbCdzIGZsb2F0IGFycmF5IG9wdGltaXNhdGlvbiBraWNraW5nIGluIGhlcmUuICopXG4gICAgc3QuKGlkeCkgPC0gT2JqLnJlcHIgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuICBsZXQgZ2V0IChpZHgsIGluaXQpID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCB2ID0gc3QuKGlkeCkgaW5cbiAgICBpZiB2ID09IHVuaXF1ZV92YWx1ZSB0aGVuXG4gICAgICBsZXQgdicgPSBPYmoucmVwciAoaW5pdCAoKSkgaW5cbiAgICAgIHN0LihpZHgpIDwtIChTeXMub3BhcXVlX2lkZW50aXR5IHYnKTtcbiAgICAgIE9iai5tYWdpYyB2J1xuICAgIGVsc2UgT2JqLm1hZ2ljIHZcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IChpbnQgKiBPYmoudCkgbGlzdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKEtJICgoaWR4LCBfKSBhcyBrLCBzcGxpdCkpIC0+XG4gICAgICAgICAgIChpZHgsIE9iai5yZXByIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDogKGludCAqIE9iai50KSBsaXN0KSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpZHgsIHYpIC0+XG4gICAgICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluIHN0LihpZHgpIDwtIHYpXG4gICAgICBsXG5cbmVuZFxuXG4oKioqKioqKiogSWRlbnRpdHkgKioqKioqKioqKilcblxubGV0IGdldF9pZCB7IGRvbWFpbjsgXyB9ID0gZG9tYWluXG5cbmxldCBzZWxmICgpID0gUmF3LnNlbGYgKClcblxubGV0IGlzX21haW5fZG9tYWluICgpID0gKHNlbGYgKCkgOj4gaW50KSA9IDBcblxuKCoqKioqKioqIENhbGxiYWNrcyAqKioqKioqKioqKVxuXG4oKiBmaXJzdCBzcGF3biwgZG9tYWluIHN0YXJ0dXAgYW5kIGF0IGV4aXQgZnVuY3Rpb25hbGl0eSAqKVxubGV0IGZpcnN0X2RvbWFpbl9zcGF3bmVkID0gQXRvbWljLm1ha2UgZmFsc2VcblxubGV0IGZpcnN0X3NwYXduX2Z1bmN0aW9uID0gcmVmIChmdW4gKCkgLT4gKCkpXG5cbmxldCBiZWZvcmVfZmlyc3Rfc3Bhd24gZiA9XG4gIGlmIEF0b21pYy5nZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiZmlyc3QgZG9tYWluIGFscmVhZHkgc3Bhd25lZFwiKVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG9sZF9mID0gIWZpcnN0X3NwYXduX2Z1bmN0aW9uIGluXG4gICAgbGV0IG5ld19mICgpID0gb2xkX2YgKCk7IGYgKCkgaW5cbiAgICBmaXJzdF9zcGF3bl9mdW5jdGlvbiA6PSBuZXdfZlxuICBlbmRcblxubGV0IGRvX2JlZm9yZV9maXJzdF9zcGF3biAoKSA9XG4gIGlmIG5vdCAoQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCkgdGhlbiBiZWdpblxuICAgIEF0b21pYy5zZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgdHJ1ZTtcbiAgICAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24oKTtcbiAgICAoKiBSZWxlYXNlIHRoZSBvbGQgZnVuY3Rpb24gKilcbiAgICBmaXJzdF9zcGF3bl9mdW5jdGlvbiA6PSAoZnVuICgpIC0+ICgpKVxuICBlbmRcblxubGV0IGF0X2V4aXRfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPiAoZnVuICgpIC0+ICgpKSlcblxubGV0IGF0X2V4aXQgZiA9XG4gIGxldCBvbGRfZXhpdCA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICAoKiBUaGUgZG9tYWluIHRlcm1pbmF0aW9uIGNhbGxiYWNrcyAoW2F0X2V4aXRdKSBhcmUgcnVuIGluXG4gICAgICAgbGFzdC1pbi1maXJzdC1vdXQgKExJRk8pIG9yZGVyIGluIG9yZGVyIHRvIGJlIHN5bW1ldHJpYyB3aXRoIHRoZSBkb21haW5cbiAgICAgICBjcmVhdGlvbiBjYWxsYmFja3MgKFthdF9lYWNoX3NwYXduXSkgd2hpY2ggcnVuIGluIGZpcnN0LWluLWZpc3J0LW91dFxuICAgICAgIChGSUZPKSBvcmRlci4gKilcbiAgICBmICgpOyBvbGRfZXhpdCAoKVxuICBpblxuICBETFMuc2V0IGF0X2V4aXRfa2V5IG5ld19leGl0XG5cbmxldCBkb19hdF9leGl0ICgpID1cbiAgbGV0IGYgOiB1bml0IC0+IHVuaXQgPSBETFMuZ2V0IGF0X2V4aXRfa2V5IGluXG4gIGYgKClcblxubGV0IF8gPSBTdGRsaWIuZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQgOj0gZG9fYXRfZXhpdFxuXG4oKioqKioqKiBDcmVhdGlvbiBhbmQgVGVybWluYXRpb24gKioqKioqKiopXG5cbmxldCBzcGF3biBmID1cbiAgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpO1xuICBsZXQgcGsgPSBETFMuZ2V0X2luaXRpYWxfa2V5cyAoKSBpblxuXG4gICgqIFRoZSBbdGVybV9tdXRleF0gYW5kIFt0ZXJtX2NvbmRpdGlvbl0gYXJlIHVzZWQgdG9cbiAgICAgc3luY2hyb25pemUgd2l0aCB0aGUgam9pbmluZyBkb21haW5zICopXG4gIGxldCB0ZXJtX211dGV4ID0gTXV0ZXguY3JlYXRlICgpIGluXG4gIGxldCB0ZXJtX2NvbmRpdGlvbiA9IENvbmRpdGlvbi5jcmVhdGUgKCkgaW5cbiAgbGV0IHRlcm1fc3RhdGUgPSByZWYgUnVubmluZyBpblxuXG4gIGxldCBib2R5ICgpID1cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoXG4gICAgICAgIERMUy5jcmVhdGVfZGxzICgpO1xuICAgICAgICBETFMuc2V0X2luaXRpYWxfa2V5cyBwaztcbiAgICAgICAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgICAgICAgcmVzXG4gICAgICB3aXRoXG4gICAgICB8IHggLT4gT2sgeFxuICAgICAgfCBleGNlcHRpb24gZXggLT4gRXJyb3IgZXhcbiAgICBpblxuXG4gICAgbGV0IHJlc3VsdCcgPVxuICAgICAgKCogUnVuIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzIHdoZW4gdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBlaXRoZXJcbiAgICAgICAgIHRlcm1pbmF0ZXMgbm9ybWFsbHkgb3IgZXhjZXB0aW9uYWxseS4gKilcbiAgICAgIG1hdGNoIGRvX2F0X2V4aXQgKCkgd2l0aFxuICAgICAgfCAoKSAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIGV4IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIF8gLT5cbiAgICAgICAgICAgICAgKCogSWYgdGhlIGRvbWFpbiBjb21wdXRhdGlvbiB0ZXJtaW5hdGVkIG5vcm1hbGx5LCBidXQgdGhlXG4gICAgICAgICAgICAgICAgIFthdF9leGl0XSBjYWxsYmFja3MgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgdGhlbiByZXR1cm4gdGhlXG4gICAgICAgICAgICAgICAgIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICAgRXJyb3IgZXhcbiAgICAgICAgICB8IEVycm9yIF8gLT5cbiAgICAgICAgICAgICAgKCogSWYgYm90aCB0aGUgZG9tYWluIGNvbXB1dGF0aW9uIGFuZCB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrc1xuICAgICAgICAgICAgICAgICByYWlzZWQgZXhjZXB0aW9ucywgdGhlbiBpZ25vcmUgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZVxuICAgICAgICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIGFuZCByZXR1cm4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICAgcmVzdWx0XG4gICAgICAgICAgZW5kXG4gICAgaW5cblxuICAgICgqIFN5bmNocm9uaXplIHdpdGggam9pbmluZyBkb21haW5zICopXG4gICAgTXV0ZXgubG9jayB0ZXJtX211dGV4O1xuICAgIG1hdGNoICF0ZXJtX3N0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgdGVybV9zdGF0ZSA6PSBGaW5pc2hlZCByZXN1bHQnO1xuICAgICAgICBDb25kaXRpb24uYnJvYWRjYXN0IHRlcm1fY29uZGl0aW9uO1xuICAgIHwgRmluaXNoZWQgXyAtPlxuICAgICAgICBmYWlsd2l0aCBcImludGVybmFsIGVycm9yOiBBbSBJIGFscmVhZHkgZmluaXNoZWQ/XCJcbiAgICAoKiBbdGVybV9tdXRleF0gaXMgdW5sb2NrZWQgaW4gdGhlIHJ1bnRpbWUgYWZ0ZXIgdGhlIGNsZWFudXAgZnVuY3Rpb25zIG9uXG4gICAgICAgdGhlIEMgc2lkZSBhcmUgZmluaXNoZWQuICopXG4gIGluXG4gIHsgZG9tYWluID0gUmF3LnNwYXduIGJvZHkgdGVybV9tdXRleDtcbiAgICB0ZXJtX211dGV4O1xuICAgIHRlcm1fY29uZGl0aW9uO1xuICAgIHRlcm1fc3RhdGUgfVxuXG5sZXQgam9pbiB7IHRlcm1fbXV0ZXg7IHRlcm1fY29uZGl0aW9uOyB0ZXJtX3N0YXRlOyBfIH0gPVxuICBNdXRleC5sb2NrIHRlcm1fbXV0ZXg7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggIXRlcm1fc3RhdGUgd2l0aFxuICAgIHwgUnVubmluZyAtPlxuICAgICAgICBDb25kaXRpb24ud2FpdCB0ZXJtX2NvbmRpdGlvbiB0ZXJtX211dGV4O1xuICAgICAgICBsb29wICgpXG4gICAgfCBGaW5pc2hlZCByZXMgLT5cbiAgICAgICAgTXV0ZXgudW5sb2NrIHRlcm1fbXV0ZXg7XG4gICAgICAgIHJlc1xuICBpblxuICBtYXRjaCBsb29wICgpIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleCAtPiByYWlzZSBleFxuXG5sZXQgcmVjb21tZW5kZWRfZG9tYWluX2NvdW50ID0gUmF3LmdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmluZVxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0LiBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBpdCB3aWxsIHJlamVjdCBhbnlcbiAgICAgIGZvcm1hdCB0aGF0IGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi5cblxuICAgICAgQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgXCIlKyBkXCI6IHNwZWNpZnlpbmcgYm90aCAnKycgKGlmIHRoZVxuICAgICAgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aCBhICcrJyB0byBnZXQgdGhlIHNhbWUgd2lkdGggYXNcbiAgICAgIG5lZ2F0aXZlIG51bWJlcnMpIGFuZCAnICcgKGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoXG4gICAgICBhIHNwYWNlKSBkb2VzIG5vdCBtYWtlIHNlbnNlLCBidXQgdGhlIGxlZ2FjeSAoPCA0LjAyKVxuICAgICAgaW1wbGVtZW50YXRpb24gd2FzIGhhcHB5IHRvIGp1c3QgaWdub3JlIHRoZSBzcGFjZS5cbiAgKilcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmQgbXNnID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBtc2dcbiAgaW5cblxuICAoKiBVc2VkIHdoZW4gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IChvciB0aGUgY3VycmVudCBzdWItZm9ybWF0KSB3YXMgZW5jb3VudGVyZWRcbiAgICAgIHVuZXhwZWN0ZWRseS4gKilcbiAgbGV0IHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIGVuZF9pbmRcbiAgICAgIFwidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0XCJcbiAgaW5cblxuICAoKiBVc2VkIGZvciAlMGM6IG5vIG90aGVyIHdpZHRocyBhcmUgaW1wbGVtZW50ZWQgKilcbiAgbGV0IGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZFxuICAgICAgXCJub24temVybyB3aWR0aHMgYXJlIHVuc3VwcG9ydGVkIGZvciAlYyBjb252ZXJzaW9uc1wiXG4gIGluXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiBvcHRpb24gZGVwZW5kZW5jeVxuICAgICBwcm9ibGVtLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfd2l0aG91dCBzdHJfaW5kIGMgcyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVjJyB3aXRob3V0ICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIGMgc1xuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiB1bmV4cGVjdGVkXG4gICAgIGNoYXJhY3Rlci4gKilcbiAgbGV0IGV4cGVjdGVkX2NoYXJhY3RlciBzdHJfaW5kIGV4cGVjdGVkIHJlYWQgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUNcIlxuICAgICAgc3RyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZFxuICBpblxuXG4gICgqIFBhcnNlIHRoZSBzdHJpbmcgZnJvbSBiZWdfaW5kIChpbmNsdWRlZCkgdG8gZW5kX2luZCAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIHBhcnNlIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGJlZ19pbmQgZW5kX2luZCAtPiBwYXJzZV9saXRlcmFsIGJlZ19pbmQgYmVnX2luZCBlbmRfaW5kXG5cbiAgKCogUmVhZCBsaXRlcmFsIGNoYXJhY3RlcnMgdXAgdG8gJyUnIG9yICdAJyBzcGVjaWFsIGNoYXJhY3RlcnMuICopXG4gIGFuZCBwYXJzZV9saXRlcmFsIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBFbmRfb2ZfZm9ybWF0IGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9mb3JtYXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2FmdGVyX2F0IChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX2xpdGVyYWwgbGl0X3N0YXJ0IChzdHJfaW5kICsgMSkgZW5kX2luZFxuXG4gICgqIFBhcnNlIGEgZm9ybWF0IGFmdGVyICclJyAqKVxuICBhbmQgcGFyc2VfZm9ybWF0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgZW5kX2luZCAtPiBwYXJzZV9pZ24gcGN0X2luZCAocGN0X2luZCArIDEpIGVuZF9pbmRcblxuICBhbmQgcGFyc2VfaWduIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdfJyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIChzdHJfaW5kKzEpIGVuZF9pbmQgdHJ1ZVxuICAgICAgfCBfIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGZhbHNlXG5cbiAgYW5kIHBhcnNlX2ZsYWdzIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiXG4gID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGlnbiAtPlxuICAgIGxldCB6ZXJvID0gcmVmIGZhbHNlIGFuZCBtaW51cyA9IHJlZiBmYWxzZVxuICAgIGFuZCBwbHVzID0gcmVmIGZhbHNlIGFuZCBzcGFjZSA9IHJlZiBmYWxzZVxuICAgIGFuZCBoYXNoID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNldF9mbGFnIHN0cl9pbmQgZmxhZyA9XG4gICAgICAoKiBpbiBsZWdhY3kgbW9kZSwgZHVwbGljYXRlIGZsYWdzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgaWYgIWZsYWcgJiYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAlQ1wiXG4gICAgICAgICAgc3RyIHN0cl9pbmQgc3RyLltzdHJfaW5kXTtcbiAgICAgIGZsYWcgOj0gdHJ1ZTtcbiAgICBpblxuICAgIGxldCByZWMgcmVhZF9mbGFncyBzdHJfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzAnIC0+IHNldF9mbGFnIHN0cl9pbmQgemVybzsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnLScgLT4gc2V0X2ZsYWcgc3RyX2luZCBtaW51czsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcrJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHBsdXM7ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyMnIC0+IHNldF9mbGFnIHN0cl9pbmQgaGFzaDsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcgJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHNwYWNlOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kXG4gICAgICAgICAgIXplcm8gIW1pbnVzICFwbHVzICFoYXNoICFzcGFjZSBpZ25cbiAgICAgIGVuZFxuICAgIGluXG4gICAgcmVhZF9mbGFncyBzdHJfaW5kXG5cbiAgKCogVHJ5IHRvIHJlYWQgYSBkaWdpdGFsIG9yIGEgJyonIHBhZGRpbmcuICopXG4gIGFuZCBwYXJzZV9wYWRkaW5nIDogdHlwZSBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgemVybyBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFkdHkgPSBtYXRjaCB6ZXJvLCBtaW51cyB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPiBSaWdodFxuICAgICAgfCBmYWxzZSwgdHJ1ZSAgLT4gTGVmdFxuICAgICAgfCAgdHJ1ZSwgZmFsc2UgLT4gWmVyb3NcbiAgICAgIHwgIHRydWUsIHRydWUgIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExlZnRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJy0nIFwiMFwiIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICBsZXQgbmV3X2luZCwgd2lkdGggPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIChMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIChBcmdfcGFkZGluZyBwYWR0eSlcbiAgICB8IF8gLT5cbiAgICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICAgIHwgTGVmdCAgLT5cbiAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICctJyBcInBhZGRpbmdcIjtcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgfCBaZXJvcyAtPlxuICAgICAgICAgKCogYSAnMCcgcGFkZGluZyBpbmRpY2F0aW9uIG5vdCBmb2xsb3dlZCBieSBhbnl0aGluZyBzaG91bGRcbiAgICAgICAgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBSaWdodCBwYWRkaW5nIG9mIHdpZHRoIDAuIFRoaXMgaXMgdXNlZFxuICAgICAgICAgICBieSBzY2FubmluZyBjb252ZXJzaW9ucyAlMHMgYW5kICUwYyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICAoTGl0X3BhZGRpbmcgKFJpZ2h0LCAwKSlcbiAgICAgIHwgUmlnaHQgLT5cbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgZW5kXG5cbiAgKCogSXMgcHJlY2lzaW9uIGRlZmluZWQ/ICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wYWRkaW5nIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJy4nIC0+XG4gICAgICBwYXJzZV9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWRcbiAgICB8IHN5bWIgLT5cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgTm9fcHJlY2lzaW9uIHBhZCBzeW1iXG5cbiAgKCogUmVhZCB0aGUgZGlnaXRhbCBvciAnKicgcHJlY2lzaW9uLiAqKVxuICBhbmQgcGFyc2VfcHJlY2lzaW9uIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmQgPVxuICAgICAgbGV0IG5ld19pbmQsIHByZWMgPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIHByZWMpIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZFxuICAgIHwgKCcrJyB8ICctJykgYXMgc3ltYiB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPlxuICAgICAgKCogTGVnYWN5IG1vZGUgd291bGQgYWNjZXB0IGFuZCBpZ25vcmUgJysnIG9yICctJyBiZWZvcmUgdGhlXG4gICAgICAgICBpbnRlZ2VyIGRlc2NyaWJpbmcgdGhlIGRlc2lyZWQgcHJlY2lzaW9uOyBub3RlIHRoYXQgdGhpc1xuICAgICAgICAgY2Fubm90IGhhcHBlbiBmb3IgcGFkZGluZyB3aWR0aCwgYXMgJysnIGFuZCAnLScgYWxyZWFkeSBoYXZlXG4gICAgICAgICBhIHNlbWFudGljcyB0aGVyZS5cblxuICAgICAgICAgVGhhdCBzYWlkLCB0aGUgaWRlYSAoc3VwcG9ydGVkIGJ5IHRoaXMgdHdlYWspIHRoYXQgd2lkdGggYW5kXG4gICAgICAgICBwcmVjaXNpb24gbGl0ZXJhbHMgYXJlIFwiaW50ZWdlciBsaXRlcmFsc1wiIGluIHRoZSBPQ2FtbCBzZW5zZSBpc1xuICAgICAgICAgc3RpbGwgYmxhdGFudGx5IHdyb25nLCBhcyAxMjNfNDU2IG9yIDB4RkYgYXJlIHJlamVjdGVkLiAqKVxuICAgICAgcGFyc2VfbGl0ZXJhbCAobWludXMgfHwgc3ltYiA9ICctJykgKHN0cl9pbmQgKyAxKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiBwYWQgQXJnX3ByZWNpc2lvblxuICAgIHwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogbm90ZSB0aGF0IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IGlnbm9yZSAnLicgd2l0aG91dFxuICAgICAgICAgICBhIG51bWJlciAoYXMgaXQgZG9lcyBmb3IgcGFkZGluZyBpbmRpY2F0aW9ucyksIGJ1dFxuICAgICAgICAgICBpbnRlcnByZXRzIGl0IGFzICcuMCcgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gMClcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICcuJyBcInByZWNpc2lvblwiXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wcmVjaXNpb24gOiB0eXBlIHggeSB6IHQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9jb252ICh0eXBlIHUpICh0eXBlIHYpIChwYWRwcmVjIDogKHUsIHYpIHBhZGRpbmcpID1cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgcHJlYyBwYWRwcmVjIHN0ci5bc3RyX2luZF0gaW5cbiAgICAoKiBpbiBsZWdhY3kgbW9kZSwgc29tZSBmb3JtYXRzICglcyBhbmQgJVMpIGFjY2VwdCBhIHdlaXJkIG1peCBvZlxuICAgICAgIHBhZGRpbmcgYW5kIHByZWNpc2lvbiwgd2hpY2ggaXMgbWVyZ2VkIGFzIGEgc2luZ2xlIHBhZGRpbmdcbiAgICAgICBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUsIGluICUuMTBzIHRoZSBwcmVjaXNpb24gaXMgaW1wbGljaXRseVxuICAgICAgIHVuZGVyc3Rvb2QgYXMgcGFkZGluZyAlMTBzLCBidXQgdGhlIGxlZnQtcGFkZGluZyBjb21wb25lbnQgbWF5XG4gICAgICAgYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIGxlZnQgcGFkZGluZyBvciBhIG5lZ2F0aXZlIHByZWNpc2lvbjpcbiAgICAgICAlLS4zcyBhbmQgJS4tM3MgYXJlIGVxdWl2YWxlbnQgdG8gJS0zcyAqKVxuICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nIC0+IChcbiAgICAgIG1hdGNoIG1pbnVzLCBwcmVjIHdpdGhcbiAgICAgICAgfCBfLCBOb19wcmVjaXNpb24gLT4gcGFyc2VfY29udiBOb19wYWRkaW5nXG4gICAgICAgIHwgZmFsc2UsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoUmlnaHQsIG4pKVxuICAgICAgICB8IHRydWUsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoTGVmdCwgbikpXG4gICAgICAgIHwgZmFsc2UsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgUmlnaHQpXG4gICAgICAgIHwgdHJ1ZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBMZWZ0KVxuICAgIClcbiAgICB8IHBhZCAtPiBwYXJzZV9jb252IHBhZFxuXG4gICgqIENhc2UgYW5hbHlzaXMgb24gY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2NvbnZlcnNpb24gOiB0eXBlIHggeSB6IHQgdSB2IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+ICh4LCB5KSBwYWRkaW5nIC0+XG4gICAgICAgICh6LCB0KSBwcmVjaXNpb24gLT4gKHUsIHYpIHBhZGRpbmcgLT4gY2hhciAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIHBhZHByZWMgc3ltYiAtPlxuICAgICgqIEZsYWdzIHVzZWQgdG8gY2hlY2sgb3B0aW9uIHVzYWdlcy9jb21wYXRpYmlsaXRpZXMuICopXG4gICAgbGV0IHBsdXNfdXNlZCAgPSByZWYgZmFsc2UgYW5kIGhhc2hfdXNlZCA9IHJlZiBmYWxzZVxuICAgIGFuZCBzcGFjZV91c2VkID0gcmVmIGZhbHNlIGFuZCBpZ25fdXNlZCAgID0gcmVmIGZhbHNlXG4gICAgYW5kIHBhZF91c2VkICAgPSByZWYgZmFsc2UgYW5kIHByZWNfdXNlZCAgPSByZWYgZmFsc2UgaW5cblxuICAgICgqIEFjY2VzcyB0byBvcHRpb25zLCB1cGRhdGUgZmxhZ3MuICopXG4gICAgbGV0IGdldF9wbHVzICAgICgpID0gcGx1c191c2VkICA6PSB0cnVlOyBwbHVzXG4gICAgYW5kIGdldF9oYXNoICAgKCkgPSBoYXNoX3VzZWQgOj0gdHJ1ZTsgaGFzaFxuICAgIGFuZCBnZXRfc3BhY2UgICAoKSA9IHNwYWNlX3VzZWQgOj0gdHJ1ZTsgc3BhY2VcbiAgICBhbmQgZ2V0X2lnbiAgICAgKCkgPSBpZ25fdXNlZCAgIDo9IHRydWU7IGlnblxuICAgIGFuZCBnZXRfcGFkICAgICAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkXG4gICAgYW5kIGdldF9wcmVjICAgICgpID0gcHJlY191c2VkICA6PSB0cnVlOyBwcmVjXG4gICAgYW5kIGdldF9wYWRwcmVjICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRwcmVjIGluXG5cbiAgICBsZXQgZ2V0X2ludF9wYWQgKCkgOiAoeCx5KSBwYWRkaW5nID1cbiAgICAgICgqICU1LjNkIGlzIGFjY2VwdGVkIGFuZCBtZWFuaW5nZnVsOiBwYWQgdG8gbGVuZ3RoIDUgd2l0aFxuICAgICAgICAgc3BhY2VzLCBidXQgZmlyc3QgcGFkIHdpdGggemVyb3MgdXB0byBsZW5ndGggMyAoMC1wYWRkaW5nXG4gICAgICAgICBpcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgXCJwcmVjaXNpb25cIiBmb3IgaW50ZWdlciBmb3JtYXRzKS5cblxuICAgICAgICAgJTA1LjNkIGlzIHJlZHVuZGFudDogcGFkIHRvIGxlbmd0aCA1ICp3aXRoIHplcm9zKiwgYnV0XG4gICAgICAgICBmaXJzdCBwYWQgd2l0aCB6ZXJvcy4uLiBUbyBhZGQgaW5zdWx0IHRvIHRoZSBpbmp1cnksIHRoZVxuICAgICAgICAgbGVnYWN5IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIDAtcGFkZGluZyBpbmRpY2F0aW9uIGFuZFxuICAgICAgICAgZG9lcyB0aGUgNSBwYWRkaW5nIHdpdGggc3BhY2VzIGluc3RlYWQuIFdlIHJldXNlIHRoaXNcbiAgICAgICAgIGludGVycHJldGF0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBidXQgc3RhdGljYWxseSByZWplY3QgdGhpc1xuICAgICAgICAgZm9ybWF0IHdoZW4gdGhlIGxlZ2FjeSBtb2RlIGlzIGRpc2FibGVkLCB0byBwcm90ZWN0IHN0cmljdFxuICAgICAgICAgdXNlcnMgZnJvbSB0aGlzIGNvcm5lciBjYXNlLiAqKVxuICAgICAgIG1hdGNoIGdldF9wYWQgKCksIGdldF9wcmVjICgpIHdpdGhcbiAgICAgICAgIHwgcGFkLCBOb19wcmVjaXNpb24gLT4gcGFkXG4gICAgICAgICB8IE5vX3BhZGRpbmcsIF8gICAgIC0+IE5vX3BhZGRpbmdcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCBuKSwgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIG4pXG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIFplcm9zLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IExpdF9wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZFxuICAgICAgICAgfCBBcmdfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWQgaW5cblxuICAgICgqIENoZWNrIHRoYXQgcGFkdHkgPD4gWmVyb3MuICopXG4gICAgbGV0IGNoZWNrX25vXzAgc3ltYiAodHlwZSBhIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgOiAoYSxiKSBwYWRkaW5nID1cbiAgICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nICgoTGVmdCB8IFJpZ2h0KSwgXykgLT4gcGFkXG4gICAgICB8IEFyZ19wYWRkaW5nIChMZWZ0IHwgUmlnaHQpIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgICB8IEFyZ19wYWRkaW5nIFplcm9zIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICBpblxuXG4gICAgKCogR2V0IHBhZGRpbmcgYXMgYSBwYWRfb3B0aW9uIChzZWUgXCIlX1wiLCBcIiV7XCIsIFwiJShcIiBhbmQgXCIlW1wiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBvcHRfb2ZfcGFkIGMgKHR5cGUgYSkgKHR5cGUgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA9IG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gTm9uZVxuICAgICAgfCBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKSAtPiBTb21lIHdpZHRoXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicwJ1wiXG4gICAgICB8IExpdF9wYWRkaW5nIChMZWZ0LCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJy0nXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicqJ1wiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3BhZF9vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZCAoKSkgaW5cbiAgICBsZXQgZ2V0X3BhZHByZWNfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWRwcmVjICgpKSBpblxuXG4gICAgKCogR2V0IHByZWNpc2lvbiBhcyBhIHByZWNfb3B0aW9uIChzZWUgXCIlX2ZcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgZ2V0X3ByZWNfb3B0ICgpID0gbWF0Y2ggZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgfCBOb19wcmVjaXNpb24gICAgICAgLT4gTm9uZVxuICAgICAgfCBMaXRfcHJlY2lzaW9uIG5kZWMgLT4gU29tZSBuZGVjXG4gICAgICB8IEFyZ19wcmVjaXNpb24gICAgICAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJyonXCJcbiAgICBpblxuXG4gICAgbGV0IGZtdF9yZXN1bHQgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICcsJyAtPlxuICAgICAgcGFyc2Ugc3RyX2luZCBlbmRfaW5kXG4gICAgfCAnYycgLT5cbiAgICAgIGxldCBjaGFyX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICVjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChDaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBzY2FuX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICUwYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9zY2FuX25leHRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBiZWdpbiBtYXRjaCBnZXRfcGFkX29wdCAnYycgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIDAgLT4gc2Nhbl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIF9uIC0+XG4gICAgICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3JcbiAgICAgICAgICAgdGhlbiBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kXG4gICAgICAgICAgIGVsc2UgKCogbGVnYWN5IGlnbm9yZXMgJWMgd2lkdGhzICopIGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICBlbmRcbiAgICB8ICdDJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NhbWxfY2hhcixmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKENhbWxfY2hhciBmbXRfcmVzdClcbiAgICB8ICdzJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKFN0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdTJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9jYW1sX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT5cbiAgICAgIGxldCBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdOJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gVG9rZW5fY291bnRlciBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgfCAnbicgfCAnTCcgd2hlbiBzdHJfaW5kPWVuZF9pbmQgfHwgbm90IChpc19pbnRfYmFzZSBzdHIuW3N0cl9pbmRdKSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl9vZl9jaGFyIHN5bWIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQzMiAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDMyIChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnbicgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSlcbiAgICAgICAgICAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ0wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQ2NCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDY0IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnZicgfCAnZScgfCAnRScgfCAnZycgfCAnRycgfCAnRicgfCAnaCcgfCAnSCcgLT5cbiAgICAgIGxldCBmY29udiA9XG4gICAgICAgIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmRcbiAgICAgICAgICAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZmxvYXQgKGdldF9wYWRfb3B0ICdfJywgZ2V0X3ByZWNfb3B0ICgpKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2InIHwgJ0InIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Jvb2wgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEJvb2wgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnYScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChBbHBoYSBmbXRfcmVzdClcbiAgICB8ICd0JyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKFRoZXRhIGZtdF9yZXN0KVxuICAgIHwgJ3InIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKFJlYWRlciBmbXRfcmVzdClcbiAgICB8ICchJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZsdXNoIGZtdF9yZXN0KVxuICAgIHwgKCclJyB8ICdAJykgYXMgYyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoYywgZm10X3Jlc3QpKVxuICAgIHwgJ3snIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnfScgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ3snLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICcoJyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJyknIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnKCcsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJ1snIC0+XG4gICAgICBsZXQgbmV4dF9pbmQsIGNoYXJfc2V0ID0gcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ18nLCBjaGFyX3NldCkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnWycsIGNoYXJfc2V0LCBmbXRfcmVzdCkpXG4gICAgfCAnLScgfCAnKycgfCAnIycgfCAnICcgfCAnXycgLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgc3ltYlxuICAgIHwgXyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgaW52YWxpZCBjb252ZXJzaW9uIFxcXCIlJSVjXFxcIlwiIHN0ciAoc3RyX2luZCAtIDEpIHN5bWJcbiAgICBpblxuICAgICgqIENoZWNrIGZvciB1bnVzZWQgb3B0aW9ucywgYW5kIHJlamVjdCB0aGVtIGFzIGluY29tcGF0aWJsZS5cblxuICAgICAgIFN1Y2ggY2hlY2tzIG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsIGFzIHRoZSBsZWdhY3lcbiAgICAgICBwYXJzZXIgc2lsZW50bHkgaWdub3JlZCBpbmNvbXBhdGlibGUgZmxhZ3MuICopXG4gICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuIGJlZ2luXG4gICAgaWYgbm90ICFwbHVzX3VzZWQgJiYgcGx1cyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiO1xuICAgIGlmIG5vdCAhaGFzaF91c2VkICYmIGhhc2ggdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIjtcbiAgICBpZiBub3QgIXNwYWNlX3VzZWQgJiYgc3BhY2UgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIjtcbiAgICBpZiBub3QgIXBhZF91c2VkICAmJiBQYWRkaW5nX0VCQiBwYWQgPD4gUGFkZGluZ19FQkIgTm9fcGFkZGluZyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcImBwYWRkaW5nJ1wiO1xuICAgIGlmIG5vdCAhcHJlY191c2VkICYmIFByZWNpc2lvbl9FQkIgcHJlYyA8PiBQcmVjaXNpb25fRUJCIE5vX3ByZWNpc2lvbiB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgKGlmIGlnbiB0aGVuICdfJyBlbHNlIHN5bWIpXG4gICAgICAgIFwiYHByZWNpc2lvbidcIjtcbiAgICBpZiBpZ24gJiYgcGx1cyB0aGVuIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKydcIjtcbiAgICBlbmQ7XG4gICAgKCogdGhpcyBsYXN0IHRlc3QgbXVzdCBub3QgYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsXG4gICAgICAgYXMgaWdub3JpbmcgaXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0eXBpbmdcbiAgICAgICB0aGFuIHdoYXQgdGhlIGxlZ2FjeSBwYXJzZXIgdXNlZCAqKVxuICAgIGlmIG5vdCAhaWduX3VzZWQgJiYgaWduIHRoZW5cbiAgICAgIGJlZ2luIG1hdGNoIHN5bWIgd2l0aFxuICAgICAgICAoKiBhcmd1bWVudC1sZXNzIGZvcm1hdHMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGluIGxlZ2FjeSBtb2RlICopXG4gICAgICAgIHwgKCdAJyB8ICclJyB8ICchJyB8ICcsJykgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInXydcIlxuICAgICAgZW5kO1xuICAgIGZtdF9yZXN1bHRcblxuICAoKiBQYXJzZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIChhZnRlciAnQCcpLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgRW5kX29mX2Zvcm1hdCkpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdbJyAtPlxuICAgICAgICBwYXJzZV90YWcgZmFsc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICddJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfYm94LCBmbXRfcmVzdCkpXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBwYXJzZV90YWcgdHJ1ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ30nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV90YWcsIGZtdF9yZXN0KSlcbiAgICAgIHwgJywnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJALFwiLCAwLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAgXCIsIDEsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICc7JyAtPlxuICAgICAgICBwYXJzZV9nb29kX2JyZWFrIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnPycgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZGbHVzaCwgZm10X3Jlc3QpKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRm9yY2VfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZsdXNoX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIHBhcnNlX21hZ2ljX3NpemUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9hdCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgd2hlbiBzdHJfaW5kICsgMSA8IGVuZF9pbmQgJiYgc3RyLltzdHJfaW5kICsgMV0gPSAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfcGVyY2VudCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIGZtdF9yZXN0KSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyBjLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDxuYW1lPiBhZnRlciBcIkB7XCIgb3IgXCJAW1wiLiAqKVxuICBhbmQgcGFyc2VfdGFnIDogdHlwZSBlIGYgLiBib29sIC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gaXNfb3Blbl90YWcgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgdHJ5XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgbGV0IGluZCA9IFN0cmluZy5pbmRleF9mcm9tIHN0ciAoc3RyX2luZCArIDEpICc+JyBpblxuICAgICAgICBpZiBpbmQgPj0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciBzdHJfaW5kIChpbmQgLSBzdHJfaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCAoaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKHN1Yl9mbXQsIHN1Yl9zdHIpIGluXG4gICAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoRW5kX29mX2Zvcm1hdCwgXCJcIikgaW5cbiAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPHdpZHRoIG9mZnNldD4gYWZ0ZXIgXCJAO1wiLiAqKVxuICBhbmQgcGFyc2VfZ29vZF9icmVhayA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBsZXQgbmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0ID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB8fCBzdHIuW3N0cl9pbmRdIDw+ICc8JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IChcbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCB3aWR0aCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8zXSB3aXRoXG4gICAgICAgICAgICAgIHwgJz4nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF8zLXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxLCBCcmVhayAocywgd2lkdGgsIDApXG4gICAgICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzQsIG9mZnNldCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8zIGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfNCBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzVdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzUtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfNSArIDEsIEJyZWFrIChzLCB3aWR0aCwgb2Zmc2V0KVxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIClcbiAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgc3RyX2luZCwgQnJlYWsgKFwiQDtcIiwgMSwgMClcbiAgICBpblxuICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIHRoZSBzaXplIGluIGEgPG4+LiAqKVxuICBhbmQgcGFyc2VfbWFnaWNfc2l6ZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBtYXRjaFxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHNpemUgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF8zXSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZCAtIDIpIChzdHJfaW5kXzMgLSBzdHJfaW5kICsgMykgaW5cbiAgICAgICAgICBTb21lIChzdHJfaW5kXzMgKyAxLCBNYWdpY19zaXplIChzLCBzaXplKSlcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBTb21lIChuZXh0X2luZCwgZm9ybWF0dGluZ19saXQpIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljICc8JywgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIGFuZCBjb25zdHJ1Y3QgYSBjaGFyIHNldC4gKilcbiAgYW5kIHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcblxuICAgIGxldCBjaGFyX3NldCA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICAgIGxldCBhZGRfY2hhciBjID1cbiAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjO1xuICAgIGluXG4gICAgbGV0IGFkZF9yYW5nZSBjIGMnID1cbiAgICAgIGZvciBpID0gaW50X29mX2NoYXIgYyB0byBpbnRfb2ZfY2hhciBjJyBkb1xuICAgICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKGNoYXJfb2ZfaW50IGkpO1xuICAgICAgZG9uZTtcbiAgICBpblxuXG4gICAgbGV0IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZCA9XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCBcXFxuICAgICAgICAgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC5cIiBzdHIgc3RyX2luZFxuICAgIGluXG5cbiAgICAoKiBQYXJzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgY2hhciBzZXQuICopXG4gICAgbGV0IHJlYyBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGxldCBjID0gc3RyLltzdHJfaW5kXSBpblxuICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogUGFyc2UgdGhlIGNvbnRlbnQgb2YgYSBjaGFyIHNldCB1bnRpbCB0aGUgZmlyc3QgJ10nLiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9jb250ZW50IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFRlc3QgZm9yIHJhbmdlIGluIGNoYXIgc2V0LiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyB3aGVuIGMgPSAnJScgLT5cbiAgICAgICAgYWRkX2NoYXIgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGlmIGMgPSAnJScgdGhlbiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQ7XG4gICAgICAgICgqIG5vdGUgdGhhdCAnQCcgYWxvbmUgaXMgYWNjZXB0ZWQsIGFzIGRvbmUgYnkgdGhlIGxlZ2FjeVxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjsgdGhlIGRvY3VtZW50YXRpb24gc3BlY2lmaWNhbGx5IHJlcXVpcmVzICVAXG4gICAgICAgICAgIHNvIHdlIGNvdWxkIHdhcm4gb24gdGhhdCAqKVxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjJ1xuXG4gICAgKCogTWFuYWdlIHJhbmdlIGluIGNoYXIgc2V0IChleGNlcHQgaWYgdGhlICctJyB0aGUgbGFzdCBjaGFyIGJlZm9yZSAnXScpICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyAtPlxuICAgICAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMikgZW5kX2luZFxuICAgICAgICAgIHwgXyAtPiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgIGluXG4gICAgbGV0IHN0cl9pbmQsIHJldmVyc2UgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgICB8ICdeJyAtPiBzdHJfaW5kICsgMSwgdHJ1ZVxuICAgICAgICB8IF8gLT4gc3RyX2luZCwgZmFsc2UgaW5cbiAgICBsZXQgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICBsZXQgY2hhcl9zZXQgPSBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgaW5cbiAgICBuZXh0X2luZCwgKGlmIHJldmVyc2UgdGhlbiByZXZfY2hhcl9zZXQgY2hhcl9zZXQgZWxzZSBjaGFyX3NldClcblxuICAoKiBDb25zdW1lIGFsbCBuZXh0IHNwYWNlcywgcmFpc2UgYW4gRmFpbHVyZSBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGlmIHN0ci5bc3RyX2luZF0gPSAnICcgdGhlbiBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGVsc2Ugc3RyX2luZFxuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlIGlmIGVuZF9pbmQgaXNcbiAgICAgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCBhY2MgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gYWNjICogMTAgKyAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJykgaW5cbiAgICAgIGlmIG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkXCJcbiAgICAgICAgICBzdHIgbmV3X2FjYyBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG5ld19hY2NcbiAgICB8IF8gLT4gc3RyX2luZCwgYWNjXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmVcbiAgICAgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfaW50ZWdlciBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwXG4gICAgfCAnLScgLT4gKFxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgbGV0IG5leHRfaW5kLCBuID0gcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIDAgaW5cbiAgICAgICAgbmV4dF9pbmQsIC1uXG4gICAgICB8IGMgLT5cbiAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJkaWdpdFwiIGNcbiAgICApXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIEFkZCBhIGxpdGVyYWwgdG8gYSBmb3JtYXQgZnJvbSBhIGxpdGVyYWwgY2hhcmFjdGVyIHN1Yi1zZXF1ZW5jZS4gKilcbiAgYW5kIGFkZF9saXRlcmFsIDogdHlwZSBhIGQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gKGEsIF8sIF8sIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZm10IC0+IG1hdGNoIHN0cl9pbmQgLSBsaXRfc3RhcnQgd2l0aFxuICAgIHwgMCAgICAtPiBGbXRfRUJCIGZtdFxuICAgIHwgMSAgICAtPiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKHN0ci5bbGl0X3N0YXJ0XSwgZm10KSlcbiAgICB8IHNpemUgLT4gRm10X0VCQiAoU3RyaW5nX2xpdGVyYWwgKFN0cmluZy5zdWIgc3RyIGxpdF9zdGFydCBzaXplLCBmbXQpKVxuXG4gICgqIFNlYXJjaCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXRcbiAgICAgKGkuZS4gdGhlIGNvcnJlc3BvbmRpbmcgXCIlfVwiIG9yIFwiJSlcIikgKilcbiAgYW5kIHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIFxcXG4gICAgICAgICBleHBlY3RlZCBcXFwiJSUlY1xcXCIgYXQgY2hhcmFjdGVyIG51bWJlciAlZFwiIHN0ciBjIGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnJScgLT5cbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgaWYgc3RyLltzdHJfaW5kICsgMV0gPSBjIHRoZW4gKCogRW5kIG9mIGZvcm1hdCBmb3VuZCAqKSBzdHJfaW5kIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICB8ICdfJyAtPlxuICAgICAgICAgICgqIFNlYXJjaCBmb3IgXCIlXyhcIiBvciBcIiVfe1wiLiAqKVxuICAgICAgICAgIGlmIHN0cl9pbmQgKyAyID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDJdIHdpdGhcbiAgICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCBjXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgKCogJXsuLi4lfSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgKCogJSguLi4lKSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJ30nIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICUoLi4uJX0uICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJyknXCIgJ30nXG4gICAgICAgIHwgJyknIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICV7Li4uJSkuICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJ30nXCIgJyknXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIGVuZFxuICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICgqIENoZWNrIGlmIHN5bWIgaXMgYSB2YWxpZCBpbnQgY29udmVyc2lvbiBhZnRlciBcIiVsXCIsIFwiJW5cIiBvciBcIiVMXCIgKilcbiAgYW5kIGlzX2ludF9iYXNlIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgKCogQ29udmVydCBhIGNoYXIgKGwsIG4gb3IgTCkgdG8gaXRzIGFzc29jaWF0ZWQgY291bnRlci4gKilcbiAgYW5kIGNvdW50ZXJfb2ZfY2hhciBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnbCcgLT4gTGluZV9jb3VudGVyICB8ICduJyAtPiBDaGFyX2NvdW50ZXJcbiAgICB8ICdMJyAtPiBUb2tlbl9jb3VudGVyIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBpbnRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBtYXRjaCBwbHVzLCBoYXNoLCBzcGFjZSwgc3ltYiB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X2QgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9pXG4gICAgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnZCcgLT4gSW50X3NkIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2knIC0+IEludF9zaVxuICAgIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9wZCB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfcGlcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd4JyAtPiBJbnRfeCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnWCcgLT4gSW50X1hcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd4JyAtPiBJbnRfQ3ggfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnWCcgLT4gSW50X0NYXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnbycgLT4gSW50X29cbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdvJyAtPiBJbnRfQ29cbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd1JyAtPiBJbnRfdVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2QnIC0+IEludF9DZFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2knIC0+IEludF9DaVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3UnIC0+IEludF9DdVxuICAgIHwgXywgdHJ1ZSwgXywgJ3gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DeFxuICAgIHwgXywgdHJ1ZSwgXywgJ1gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DWFxuICAgIHwgXywgdHJ1ZSwgXywgJ28nIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9Db1xuICAgIHwgXywgdHJ1ZSwgXywgKCdkJyB8ICdpJyB8ICd1JykgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGZhbHNlIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIlxuICAgIHwgdHJ1ZSwgXywgdHJ1ZSwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgdHJ1ZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCJcbiAgICB8IHRydWUsIF8sIGZhbHNlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgZmFsc2UgaGFzaCBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCBmYWxzZSwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzcGFjZSwgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgZmxvYXRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIGxldCBmbGFnID0gbWF0Y2ggcGx1cywgc3BhY2Ugd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfXG4gICAgfCBmYWxzZSwgIHRydWUgLT4gRmxvYXRfZmxhZ19zXG4gICAgfCAgdHJ1ZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19wXG4gICAgfCAgdHJ1ZSwgIHRydWUgLT5cbiAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBGbG9hdF9mbGFnX3BcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiIGluXG4gICAgbGV0IGtpbmQgPSBtYXRjaCBoYXNoLCBzeW1iIHdpdGhcbiAgICB8IF8sICdmJyAtPiBGbG9hdF9mXG4gICAgfCBfLCAnZScgLT4gRmxvYXRfZVxuICAgIHwgXywgJ0UnIC0+IEZsb2F0X0VcbiAgICB8IF8sICdnJyAtPiBGbG9hdF9nXG4gICAgfCBfLCAnRycgLT4gRmxvYXRfR1xuICAgIHwgXywgJ2gnIC0+IEZsb2F0X2hcbiAgICB8IF8sICdIJyAtPiBGbG9hdF9IXG4gICAgfCBmYWxzZSwgJ0YnIC0+IEZsb2F0X0ZcbiAgICB8IHRydWUsICdGJyAtPiBGbG9hdF9DRlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgICBmbGFnLCBraW5kXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGluY29tcGF0aWJsZSBvcHRpb25zLiopXG4gIGFuZCBpbmNvbXBhdGlibGVfZmxhZyA6IHR5cGUgYSAuIGludCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmcgLT4gYSA9XG4gICAgZnVuIHBjdF9pbmQgc3RyX2luZCBzeW1iIG9wdGlvbiAtPlxuICAgICAgbGV0IHN1YmZtdCA9IFN0cmluZy5zdWIgc3RyIHBjdF9pbmQgKHN0cl9pbmQgLSBwY3RfaW5kKSBpblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWItZm9ybWF0ICVTXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgb3B0aW9uIHN5bWIgc3ViZm10XG5cbiAgaW4gcGFyc2UgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAoKiBHdWFyZGVkIHN0cmluZyB0byBmb3JtYXQgY29udmVyc2lvbnMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHN0ciBmbXR0eSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgZm10dHksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCJcbiAgICAgIHN0ciAoc3RyaW5nX29mX2ZtdHR5IGZtdHR5KVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCBhbiBvdGhlciBmb3JtYXQuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgKEZvcm1hdCAoZm10Jywgc3RyJykpID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCAoZm10dHlfb2ZfZm10IGZtdCcpLCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiIHN0ciBzdHInXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIFhhdmllciBMZXJveSBhbmQgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG5sZXQga2ZwcmludGYgayBvIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBvIGFjYzsgayBvKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGticHJpbnRmIGsgYiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IGJ1ZnB1dF9hY2MgYiBhY2M7IGsgYikgRW5kX29mX2FjYyBmbXRcbmxldCBpa2ZwcmludGYgayBvYyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIG9jIGZtdFxubGV0IGlrYnByaW50ZiA9IGlrZnByaW50ZlxuXG5sZXQgZnByaW50ZiBvYyBmbXQgPSBrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgYnByaW50ZiBiIGZtdCA9IGticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IGlmcHJpbnRmIG9jIGZtdCA9IGlrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgaWJwcmludGYgYiBmbXQgPSBpa2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3Rkb3V0IGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBzdGRlcnIgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGsnIGFjYyA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBzdHJwdXRfYWNjIGJ1ZiBhY2M7XG4gICAgayAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXRcblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IHMpIGZtdFxuXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gc3RyaW5nXG50eXBlIGRvYyA9IHN0cmluZ1xudHlwZSB1c2FnZV9tc2cgPSBzdHJpbmdcbnR5cGUgYW5vbl9mdW4gPSAoc3RyaW5nIC0+IHVuaXQpXG5cbnR5cGUgc3BlYyA9XG4gIHwgVW5pdCBvZiAodW5pdCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB1bml0IGFyZ3VtZW50ICopXG4gIHwgQm9vbCBvZiAoYm9vbCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGJvb2wgYXJndW1lbnQgKilcbiAgfCBTZXQgb2YgYm9vbCByZWYgICAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0cnVlICopXG4gIHwgQ2xlYXIgb2YgYm9vbCByZWYgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gZmFsc2UgKilcbiAgfCBTdHJpbmcgb2YgKHN0cmluZyAtPiB1bml0KSAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgU2V0X3N0cmluZyBvZiBzdHJpbmcgcmVmICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IEludCBvZiAoaW50IC0+IHVuaXQpICAgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYW4gaW50IGFyZ3VtZW50ICopXG4gIHwgU2V0X2ludCBvZiBpbnQgcmVmICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGludCBhcmd1bWVudCAqKVxuICB8IEZsb2F0IG9mIChmbG9hdCAtPiB1bml0KSAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFNldF9mbG9hdCBvZiBmbG9hdCByZWYgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFR1cGxlIG9mIHNwZWMgbGlzdCAgICAgICAgICgqIFRha2Ugc2V2ZXJhbCBhcmd1bWVudHMgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMgbGlzdCAqKVxuICB8IFN5bWJvbCBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUYWtlIG9uZSBvZiB0aGUgc3ltYm9scyBhcyBhcmd1bWVudCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBzeW1ib2wuICopXG4gIHwgUmVzdCBvZiAoc3RyaW5nIC0+IHVuaXQpICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBlYWNoIHJlbWFpbmluZyBhcmd1bWVudCAqKVxuICB8IFJlc3RfYWxsIG9mIChzdHJpbmcgbGlzdCAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggYWxsIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG4gIHwgRXhwYW5kIG9mIChzdHJpbmcgLT4gc3RyaW5nIGFycmF5KSAoKiBJZiB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyB0byBwcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgb2YgdGhlIGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbXCItZm9vXCI7IFwiYXJnXCJdIEAgcmVzdF0gd2hlcmUgXCJmb29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVnaXN0ZXJlZCBhcyBbRXhwYW5kIGZdLCB0aGVuIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIFtmIFwiYXJnXCIgQCByZXN0XSBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZC4gT25seSBhbGxvd2VkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNdLiAqKVxuXG5leGNlcHRpb24gQmFkIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEhlbHAgb2Ygc3RyaW5nXG5cbnR5cGUgZXJyb3IgPVxuICB8IFVua25vd24gb2Ygc3RyaW5nXG4gIHwgV3Jvbmcgb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nICAoKiBvcHRpb24sIGFjdHVhbCwgZXhwZWN0ZWQgKilcbiAgfCBNaXNzaW5nIG9mIHN0cmluZ1xuICB8IE1lc3NhZ2Ugb2Ygc3RyaW5nXG5cbmV4Y2VwdGlvbiBTdG9wIG9mIGVycm9yICgqIHVzZWQgaW50ZXJuYWxseSAqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcmVjIGFzc29jMyB4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoeTEsIHkyLCBfKSA6OiBfIHdoZW4geTEgPSB4IC0+IHkyXG4gIHwgXyA6OiB0IC0+IGFzc29jMyB4IHRcblxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJz0nIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgU3RyaW5nLnN1YiBzIDAgaSwgU3RyaW5nLnN1YiBzIChpKzEpIChsZW4tKGkrMSkpXG5cblxubGV0IG1ha2Vfc3ltbGlzdCBwcmVmaXggc2VwIHN1ZmZpeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCI8bm9uZT5cIlxuICB8IGg6OnQgLT4gKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IHggXiBzZXAgXiB5KSAocHJlZml4IF4gaCkgdCkgXiBzdWZmaXhcblxuXG5sZXQgcHJpbnRfc3BlYyBidWYgKGtleSwgc3BlYywgZG9jKSA9XG4gIGlmIFN0cmluZy5sZW5ndGggZG9jID4gMCB0aGVuXG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBTeW1ib2wgKGwsIF8pIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlcyVzXFxuXCIga2V5IChtYWtlX3N5bWxpc3QgXCJ7XCIgXCJ8XCIgXCJ9XCIgbCkgZG9jXG4gICAgfCBfIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlc1xcblwiIGtleSBkb2NcblxuXG5sZXQgaGVscF9hY3Rpb24gKCkgPSByYWlzZSAoU3RvcCAoVW5rbm93biBcIi1oZWxwXCIpKVxuXG5sZXQgYWRkX2hlbHAgc3BlY2xpc3QgPVxuICBsZXQgYWRkMSA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgYW5kIGFkZDIgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi0taGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLS1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgaW5cbiAgc3BlY2xpc3QgQCAoYWRkMSBAIGFkZDIpXG5cblxubGV0IHVzYWdlX2IgYnVmIHNwZWNsaXN0IGVycm1zZyA9XG4gIGJwcmludGYgYnVmIFwiJXNcXG5cIiBlcnJtc2c7XG4gIExpc3QuaXRlciAocHJpbnRfc3BlYyBidWYpIChhZGRfaGVscCBzcGVjbGlzdClcblxuXG5sZXQgdXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgdXNhZ2VfYiBiIHNwZWNsaXN0IGVycm1zZztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgdXNhZ2Ugc3BlY2xpc3QgZXJybXNnID1cbiAgZXByaW50ZiBcIiVzXCIgKHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cpXG5cblxubGV0IGN1cnJlbnQgPSByZWYgMFxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoYm9vbF9vZl9zdHJpbmcgeClcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGFsbG93X2V4cGFuZCBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgPVxuICBsZXQgaW5pdHBvcyA9ICFjdXJyZW50IGluXG4gIGxldCBjb252ZXJ0X2Vycm9yIGVycm9yID1cbiAgICAoKiBjb252ZXJ0IGFuIGludGVybmFsIGVycm9yIHRvIGEgQmFkL0hlbHAgZXhjZXB0aW9uXG4gICAgICAgKm9yKiBhZGQgdGhlIHByb2dyYW0gbmFtZSBhcyBhIHByZWZpeCBhbmQgdGhlIHVzYWdlIG1lc3NhZ2UgYXMgYSBzdWZmaXhcbiAgICAgICB0byBhbiB1c2VyLXJhaXNlZCBCYWQgZXhjZXB0aW9uLlxuICAgICopXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICAgIGxldCBwcm9nbmFtZSA9XG4gICAgICBpZiBpbml0cG9zIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oaW5pdHBvcykgZWxzZSBcIig/KVwiIGluXG4gICAgYmVnaW4gbWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgfCBVbmtub3duIFwiLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIFwiLS1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHVua25vd24gb3B0aW9uICclcycuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBNaXNzaW5nIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogb3B0aW9uICclcycgbmVlZHMgYW4gYXJndW1lbnQuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBXcm9uZyAob3B0LCBhcmcsIGV4cGVjdGVkKSAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB3cm9uZyBhcmd1bWVudCAnJXMnOyBvcHRpb24gJyVzJyBleHBlY3RzICVzLlxcblwiXG4gICAgICAgICAgICAgICAgICBwcm9nbmFtZSBhcmcgb3B0IGV4cGVjdGVkXG4gICAgICB8IE1lc3NhZ2UgcyAtPiAoKiB1c2VyIGVycm9yIG1lc3NhZ2UgKilcbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogJXMuXFxuXCIgcHJvZ25hbWUgc1xuICAgIGVuZDtcbiAgICB1c2FnZV9iIGIgIXNwZWNsaXN0IGVycm1zZztcbiAgICBpZiBlcnJvciA9IFVua25vd24gXCItaGVscFwiIHx8IGVycm9yID0gVW5rbm93biBcIi0taGVscFwiXG4gICAgdGhlbiBIZWxwIChCdWZmZXIuY29udGVudHMgYilcbiAgICBlbHNlIEJhZCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gIGluXG4gIGluY3IgY3VycmVudDtcbiAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSBkb1xuICAgIGJlZ2luIHRyeVxuICAgICAgbGV0IHMgPSAhYXJndi4oIWN1cnJlbnQpIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMSAmJiBzLlswXSA9ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbnR5cGUgYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgIDogc3RyaW5nO1xuICAgICAgbGluZV9udW1iZXIgOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgIDogaW50O1xuICAgICAgaXNfaW5saW5lICAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG4oKiB0byBhdm9pZCB3YXJuaW5nICopXG5sZXQgXyA9IFtLbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2U7IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSAwOyBzdGFydF9jaGFyID0gMDsgZW5kX2NoYXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbmxpbmUgPSBmYWxzZTsgZGVmbmFtZSA9IFwiXCIgfTtcbiAgICAgICAgIFVua25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlIH1dXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsLmxpbmVfbnVtYmVyIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLmxpbmVfbnVtYmVyO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG1pbm9yX2hlYXBfc2l6ZSA6IGludDtcbiAgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICB2ZXJib3NlIDogaW50O1xuICBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIHN0YWNrX2xpbWl0IDogaW50O1xuICBhbGxvY2F0aW9uX3BvbGljeSA6IGludDtcbiAgd2luZG93X3NpemUgOiBpbnQ7XG4gIGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnQ7XG59XG5cbmV4dGVybmFsIHN0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2Nfc3RhdFwiXG5leHRlcm5hbCBxdWlja19zdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3F1aWNrX3N0YXRcIlxuZXh0ZXJuYWwgY291bnRlcnMgOiB1bml0IC0+IChmbG9hdCAqIGZsb2F0ICogZmxvYXQpID0gXCJjYW1sX2djX2NvdW50ZXJzXCJcbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSlcbiAgPSBcImNhbWxfZ2NfbWlub3Jfd29yZHNcIiBcImNhbWxfZ2NfbWlub3Jfd29yZHNfdW5ib3hlZFwiXG5leHRlcm5hbCBnZXQgOiB1bml0IC0+IGNvbnRyb2wgPSBcImNhbWxfZ2NfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGNvbnRyb2wgLT4gdW5pdCA9IFwiY2FtbF9nY19zZXRcIlxuZXh0ZXJuYWwgbWlub3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWlub3JcIlxuZXh0ZXJuYWwgbWFqb3Jfc2xpY2UgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2djX21ham9yX3NsaWNlXCJcbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIGZ1bGxfbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfZnVsbF9tYWpvclwiXG5leHRlcm5hbCBjb21wYWN0IDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2NvbXBhY3Rpb25cIlxuZXh0ZXJuYWwgZ2V0X21pbm9yX2ZyZWUgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWlub3JfZnJlZVwiXG5cbmxldCBldmVudGxvZ19wYXVzZSAoKSA9ICgpXG5sZXQgZXZlbnRsb2dfcmVzdW1lICgpID0gKClcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIEF0b21pYy50XG50eXBlIGFsYXJtX3JlYyA9IHthY3RpdmUgOiBhbGFybTsgZiA6IHVuaXQgLT4gdW5pdH1cblxubGV0IHJlYyBjYWxsX2FsYXJtIGFyZWMgPVxuICBpZiBBdG9taWMuZ2V0IGFyZWMuYWN0aXZlIHRoZW4gYmVnaW5cbiAgICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gICAgYXJlYy5mICgpO1xuICBlbmRcblxuXG5sZXQgY3JlYXRlX2FsYXJtIGYgPVxuICBsZXQgYXJlYyA9IHsgYWN0aXZlID0gQXRvbWljLm1ha2UgdHJ1ZTsgZiA9IGYgfSBpblxuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubGV0IGRlbGV0ZV9hbGFybSBhID0gQXRvbWljLnNldCBhIGZhbHNlXG5cbm1vZHVsZSBNZW1wcm9mID1cbiAgc3RydWN0XG4gICAgdHlwZSBhbGxvY2F0aW9uX3NvdXJjZSA9IE5vcm1hbCB8IE1hcnNoYWwgfCBDdXN0b21cbiAgICB0eXBlIGFsbG9jYXRpb24gPVxuICAgICAgeyBuX3NhbXBsZXMgOiBpbnQ7XG4gICAgICAgIHNpemUgOiBpbnQ7XG4gICAgICAgIHNvdXJjZSA6IGFsbG9jYXRpb25fc291cmNlO1xuICAgICAgICBjYWxsc3RhY2sgOiBQcmludGV4Yy5yYXdfYmFja3RyYWNlIH1cblxuICAgIHR5cGUgKCdtaW5vciwgJ21ham9yKSB0cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3I6IGFsbG9jYXRpb24gLT4gJ21pbm9yIG9wdGlvbjtcbiAgICAgIGFsbG9jX21ham9yOiBhbGxvY2F0aW9uIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBwcm9tb3RlOiAnbWlub3IgLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIGRlYWxsb2NfbWlub3I6ICdtaW5vciAtPiB1bml0O1xuICAgICAgZGVhbGxvY19tYWpvcjogJ21ham9yIC0+IHVuaXQ7XG4gICAgfVxuXG4gICAgbGV0IG51bGxfdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBwcm9tb3RlID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgZGVhbGxvY19taW5vciA9IChmdW4gXyAtPiAoKSk7XG4gICAgICBkZWFsbG9jX21ham9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICB9XG5cbiAgICBleHRlcm5hbCBjX3N0YXJ0IDpcbiAgICAgIGZsb2F0IC0+IGludCAtPiAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgLT4gdW5pdFxuICAgICAgPSBcImNhbWxfbWVtcHJvZl9zdGFydFwiXG5cbiAgICBsZXQgc3RhcnRcbiAgICAgIH5zYW1wbGluZ19yYXRlXG4gICAgICA/KGNhbGxzdGFja19zaXplID0gbWF4X2ludClcbiAgICAgIHRyYWNrZXIgPVxuICAgICAgY19zdGFydCBzYW1wbGluZ19yYXRlIGNhbGxzdGFja19zaXplIHRyYWNrZXJcblxuICAgIGV4dGVybmFsIHN0b3AgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9zdG9wXCJcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1lc3NhZ2UgZGlnZXN0IChNRDUpICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG5sZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfc3RyaW5nXCJcbmV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG5sZXQgc3RyaW5nIHN0ciA9XG4gIHVuc2FmZV9zdHJpbmcgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG5sZXQgYnl0ZXMgYiA9IHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG5sZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbmxldCBzdWJieXRlcyBiIG9mcyBsZW4gPSBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG5sZXQgZmlsZSBmaWxlbmFtZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGVuYW1lIGluXG4gIG1hdGNoIGNoYW5uZWwgaWMgKC0xKSB3aXRoXG4gICAgfCBkIC0+IGNsb3NlX2luIGljOyBkXG4gICAgfCBleGNlcHRpb24gZSAtPiBjbG9zZV9pbiBpYzsgcmFpc2UgZVxuXG5sZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID1cbiAgb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG5sZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG5sZXQgY2hhcl9oZXggbiA9XG4gIENoYXIudW5zYWZlX2NociAobiArIGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgZWxzZSAoQ2hhci5jb2RlICdhJyAtIDEwKSlcblxubGV0IHRvX2hleCBkID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMzIgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IGZyb21faGV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICBsZXQgZGlnaXQgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnMCcuLic5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdBJy4uJ0YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCAnYScuLidmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkRpZ2VzdC5mcm9tX2hleFwiKVxuICBpblxuICBsZXQgYnl0ZSBpID0gZGlnaXQgcy5baV0gbHNsIDQgKyBkaWdpdCBzLltpKzFdIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgQnl0ZXMuc2V0IHJlc3VsdCBpIChDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICAgIEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIGxldCBkbGVuID0gQXJyYXkubGVuZ3RoIGRpbXMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zOyBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgYXNzaWduIChkc3Q6IHQpIChzcmM6IHQpID1cbiAgICBBcnJheTEuYmxpdCBzcmMgZHN0XG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHMnID0gY3JlYXRlKCkgaW4gYXNzaWduIHMnIHM7IHMnXG5cbiAgKCogVGhlIHNlZWQgaXMgYW4gYXJyYXkgb2YgaW50ZWdlcnMuICBJdCBjYW4gYmUganVzdCBvbmUgaW50ZWdlcixcbiAgICAgYnV0IGl0IGNhbiBhbHNvIGJlIDEyIG9yIG1vcmUgYnl0ZXMuICBUbyBoaWRlIHRoZSBkaWZmZXJlbmNlLFxuICAgICB3ZSBzZXJpYWxpemUgdGhlIGFycmF5IGFzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMsIHRoZW4gaGFzaCB0aGVcbiAgICAgc2VxdWVuY2Ugd2l0aCBNRDUgKERpZ2VzdC5ieXRlcykuICBNRDUgZ2l2ZXMgb25seSAxMjggYml0cyB3aGlsZVxuICAgICB3ZSBuZWVkIDI1NiBiaXRzLCBzbyB3ZSBoYXNoIHR3aWNlIHdpdGggZGlmZmVyZW50IHN1ZmZpeGVzLiAqKVxuICBsZXQgcmVpbml0IHMgc2VlZCA9XG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggc2VlZCBpblxuICAgIGxldCBiID0gQnl0ZXMuY3JlYXRlIChuICogOCArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGIgKGkgKiA4KSAoSW50NjQub2ZfaW50IHNlZWQuKGkpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDEnO1xuICAgIGxldCBkMSA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDInO1xuICAgIGxldCBkMiA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgc2V0IHMgKFN0cmluZy5nZXRfaW50NjRfbGUgZDEgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSA4KVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQyIDApXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgOClcblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcyA9IGNyZWF0ZSgpIGluIHJlaW5pdCBzIHNlZWQ7IHNcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgKCkgPVxuICAgIG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDEwNzM3NDE4MjQgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgMHgzRkZGX0ZGRkZcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpICopXG4gIGxldCByZWMgaW50YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBiaXRzIHMgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IDB4M0ZGRkZGRkYgLSBuICsgMSB0aGVuIGludGF1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgfHwgYm91bmQgPD0gMFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50XCJcbiAgICBlbHNlIGludGF1eCBzIGJvdW5kXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS5cbiAgICAgW2JvdW5kXSBtYXkgYmUgYW55IHBvc2l0aXZlIFtpbnRdLiAqKVxuICBsZXQgcmVjIGludDYzYXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQ2NC50b19pbnQgKG5leHQgcykgbGFuZCBtYXhfaW50IGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiBtYXhfaW50IC0gbiArIDEgdGhlbiBpbnQ2M2F1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgIGVsc2UgaWYgYm91bmQgPiAweDNGRkZGRkZGIHRoZW5cbiAgICAgIGludDYzYXV4IHMgYm91bmRcbiAgICBlbHNlXG4gICAgICBpbnRhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiAzMiByYW5kb20gYml0cyBhcyBhbiBbaW50MzJdICopXG4gIGxldCBiaXRzMzIgcyA9XG4gICAgSW50NjQudG9faW50MzIgKG5leHQgcylcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzMzIgcykgMSBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgIGlmIEludDMyLihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxbClcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiA2NCByYW5kb20gYml0cyBhcyBhbiBbaW50NjRdICopXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbmV4dCBzXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czY0IHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICBpZiBJbnQ2NC4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMUwpXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gMzIgb3IgNjQgcmFuZG9tIGJpdHMgYXMgYSBbbmF0aXZlaW50XSAqKVxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG4gICgqIFJldHVybiBhIGZsb2F0IDAgPCB4IDwgMSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlXG4gICAgIG11bHRpcGxlcyBvZiAyXi01MyAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHMgPVxuICAgIGxldCBiID0gbmV4dCBzIGluXG4gICAgbGV0IG4gPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIGIgMTEgaW5cbiAgICBpZiBuIDw+IDBMIHRoZW4gSW50NjQudG9fZmxvYXQgbiAqLiAweDEucC01MyBlbHNlIHJhd2Zsb2F0IHNcblxuICAoKiBSZXR1cm4gYSBmbG9hdCBiZXR3ZWVuIDAgYW5kIFtib3VuZF0gKilcbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgKCogUmV0dXJuIGEgcmFuZG9tIEJvb2xlYW4gKilcbiAgbGV0IGJvb2wgcyA9IG5leHQgcyA8IDBMXG5cbiAgKCogU3BsaXQgYSBuZXcgUFJORyBvZmYgdGhlIGdpdmVuIFBSTkcgKilcbiAgbGV0IHNwbGl0IHMgPVxuICAgIGxldCBpMSA9IGJpdHM2NCBzIGluIGxldCBpMiA9IGJpdHM2NCBzIGluXG4gICAgbGV0IGkzID0gYml0czY0IHMgaW4gbGV0IGk0ID0gYml0czY0IHMgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuZW5kXG5cbmxldCBta19kZWZhdWx0ICgpID1cbiAgKCogVGhpcyBpcyB0aGUgc3RhdGUgb2J0YWluZWQgd2l0aCBbU3RhdGUubWFrZSBbfCAzMTQxNTkyNjUgfF1dLiAqKVxuICBTdGF0ZS5tayAoLTYxOTY4NzQyODk1Njc3MDUwOTdMKVxuICAgICAgICAgICA1ODY1NzMyNDk4MzM3MTMxODlMXG4gICAgICAgICAgICgtODU5MTI2ODgwMzg2NTA0MzQwN0wpXG4gICAgICAgICAgIDYzODg2MTM1OTU4NDk3NzIwNDRMXG5cbmxldCByYW5kb21fa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudDpTdGF0ZS5zcGxpdCBta19kZWZhdWx0XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQzMiBib3VuZCA9IFN0YXRlLmludDMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IG5hdGl2ZWludCBib3VuZCA9IFN0YXRlLm5hdGl2ZWludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUucmVpbml0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIFNwbGl0dGluZyAqKVxuXG5sZXQgc3BsaXQgKCkgPSBTdGF0ZS5zcGxpdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIHRoZSBsb2FkIGZhY3RvciBiZWNvbWVzIHRvbyBoaWdoLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSBBdG9taWMubWFrZSByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IEF0b21pYy5zZXQgcmFuZG9taXplZCB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9IEF0b21pYy5nZXQgcmFuZG9taXplZFxuXG5sZXQgcHJuZ19rZXkgPSBEb21haW4uRExTLm5ld19rZXkgUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0XG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSkgZWxzZSAwXG4gIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IG1lbSBoIGtleSA9XG4gIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFdlYWsgYXJyYXkgb3BlcmF0aW9ucyAqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0ID0gXCJjYW1sX3dlYWtfY3JlYXRlXCJcblxuKCoqIG51bWJlciBvZiBhZGRpdGlvbmFsIHZhbHVlcyBpbiBhIHdlYWsgcG9pbnRlclxuICogICAgLSBMaW5rXG4gKiAgICAtIERhdGEgKilcbmxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDIgKCogQ0FNTF9FUEhFX0ZJUlNUX0tFWSBpbiB3ZWFrLmggKilcblxubGV0IGNyZWF0ZSBsID1cbiAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBPYmouRXBoZW1lcm9uLm1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgIGludmFsaWRfYXJnKFwiV2Vhay5jcmVhdGVcIik7XG4gIGNyZWF0ZSBsXG5cblxubGV0IGxlbmd0aCB4ID0gT2JqLnNpemUoT2JqLnJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG5sZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgIGludmFsaWRfYXJnKG1zZylcblxuZXh0ZXJuYWwgc2V0JyA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbmV4dGVybmFsIHVuc2V0IDogJ2EgdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG5sZXQgc2V0IGUgbyB4ID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5zZXRcIjtcbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB1bnNldCBlIG9cbiAgfCBTb21lIHggLT4gc2V0JyBlIG8geFxuXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRcIlxubGV0IGdldCBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldFwiO1xuICBnZXQgZSBvXG5cbmV4dGVybmFsIGdldF9jb3B5IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0X2NvcHlcIlxubGV0IGdldF9jb3B5IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0X2NvcHlcIjtcbiAgZ2V0X2NvcHkgZSBvXG5cbmV4dGVybmFsIGNoZWNrIDogJ2EgdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF93ZWFrX2NoZWNrXCJcbmxldCBjaGVjayBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmNoZWNrXCI7XG4gIGNoZWNrIGUgb1xuXG5leHRlcm5hbCBibGl0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfd2Vha19ibGl0XCJcblxuKCogYmxpdDogc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiAqKVxubGV0IGJsaXQgZTEgbzEgZTIgbzIgbCA9XG4gIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICB0aGVuIGludmFsaWRfYXJnIFwiV2Vhay5ibGl0XCJcbiAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0IGUxIG8xIGUyIG8yIGxcblxubGV0IGZpbGwgYXIgb2ZzIGxlbiB4ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhciAtIGxlblxuICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiV2Vhay5maWxsXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBmb3IgaSA9IG9mcyB0byAob2ZzICsgbGVuIC0gMSkgZG9cbiAgICAgIHNldCBhciBpIHhcbiAgICBkb25lXG4gIGVuZFxuXG5cbigqKiBXZWFrIGhhc2ggdGFibGVzICopXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBkYXRhXG4gIHR5cGUgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gIHZhbCBtZXJnZSA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBhZGQgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIGZpbmQgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgZmluZF9vcHQgOiB0IC0+IGRhdGEgLT4gZGF0YSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogdCAtPiBkYXRhIC0+IGRhdGEgbGlzdFxuICB2YWwgbWVtIDogdCAtPiBkYXRhIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZGF0YSAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoZGF0YSAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuXG4gIGxldCBmaW5kX29yIHQgZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBtZXJnZSB0IGQgPVxuICAgIGZpbmRfb3IgdCBkIChmdW4gaCBpbmRleCAtPiBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaW5kZXg7IGQpXG5cblxuICBsZXQgZmluZCB0IGQgPSBmaW5kX29yIHQgZCAoZnVuIF9oIF9pbmRleCAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgZmluZF9zaGFkb3cgdCBkIGlmZm91bmQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmRcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGQgLT4gaWZmb3VuZCBidWNrZXQgaVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IHJlbW92ZSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biB3IGkgLT4gc2V0IHcgaSBOb25lKSAoKVxuXG5cbiAgbGV0IG1lbSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biBfdyBfaSAtPiB0cnVlKSBmYWxzZVxuXG5cbiAgbGV0IGZpbmRfYWxsIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgYWNjdSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYWNjdVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuXG4gIGxldCBzdGF0cyB0ID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbGVucyA9IEFycmF5Lm1hcCBsZW5ndGggdC50YWJsZSBpblxuICAgIEFycmF5LnNvcnQgY29tcGFyZSBsZW5zO1xuICAgIGxldCB0b3RsZW4gPSBBcnJheS5mb2xkX2xlZnQgKCArICkgMCBsZW5zIGluXG4gICAgKGxlbiwgY291bnQgdCwgdG90bGVuLCBsZW5zLigwKSwgbGVucy4obGVuLzIpLCBsZW5zLihsZW4tMSkpXG5cblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX2JyZWFrIG9mIHsgICAgICAgICAgICAgICgqIGNvbXBsZXRlIGJyZWFrICopXG4gICAgICBmaXRzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICAgKCogbGluZSBpcyBub3Qgc3BsaXQgKilcbiAgICAgIGJyZWFrczogc3RyaW5nICogaW50ICogc3RyaW5nOyAoKiBsaW5lIGlzIHNwbGl0ICopXG4gICAgfVxuICB8IFBwX3RicmVhayBvZiBpbnQgKiBpbnQgICAgICgqIGdvIHRvIG5leHQgdGFidWxhdGlvbiAqKVxuICB8IFBwX3N0YWIgICAgICAgICAgICAgICAgICAgICgqIHNldCBhIHRhYnVsYXRpb24gKilcbiAgfCBQcF9iZWdpbiBvZiBpbnQgKiBib3hfdHlwZSAoKiBiZWdpbm5pbmcgb2YgYSBib3ggKilcbiAgfCBQcF9lbmQgICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSBib3ggKilcbiAgfCBQcF90YmVnaW4gb2YgdGJveCAgICAgICAgICAoKiBiZWdpbm5pbmcgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX3RlbmQgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfbmV3bGluZSAgICAgICAgICAgICAgICAgKCogdG8gZm9yY2UgYSBuZXdsaW5lIGluc2lkZSBhIGJveCAqKVxuICB8IFBwX2lmX25ld2xpbmUgICAgICAgICAgICAgICgqIHRvIGRvIHNvbWV0aGluZyBvbmx5IGlmIHRoaXMgdmVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgaGFzIGJlZW4gYnJva2VuICopXG4gIHwgUHBfb3Blbl90YWcgb2Ygc3RhZyAgICAgICAgICgqIG9wZW5pbmcgYSB0YWcgbmFtZSAqKVxuICB8IFBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIG1vc3QgcmVjZW50bHkgb3BlbiB0YWcgKilcblxuYW5kIHN0YWcgPSAuLlxuXG5hbmQgdGJveCA9IFBwX3Rib3ggb2YgaW50IGxpc3QgcmVmICAoKiBUYWJ1bGF0aW9uIGJveCAqKVxuXG50eXBlIHRhZyA9IHN0cmluZ1xudHlwZSBzdGFnICs9IFN0cmluZ190YWcgb2YgdGFnXG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlOlxuICAgcHJldHR5LXByaW50aW5nIG1hdGVyaWFsIGlzIG5vdCB3cml0dGVuIGluIHRoZSBvdXRwdXQgYXMgc29vbiBhcyBlbWl0dGVkO1xuICAgaW5zdGVhZCwgdGhlIG1hdGVyaWFsIGlzIHNpbXBseSByZWNvcmRlZCBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUsXG4gICB1bnRpbCB0aGUgZW5jbG9zaW5nIGJveCBoYXMgYSBrbm93biBjb21wdXRlZCBzaXplIGFuZCBwcm9wZXIgc3BsaXR0aW5nXG4gICBkZWNpc2lvbnMgY2FuIGJlIG1hZGUuXG5cbiAgIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBjb250YWlucyBmb3JtYXR0aW5nIGVsZW1lbnRzIHRvIGJlIHByaW50ZWQuXG4gICBFYWNoIGZvcm1hdHRpbmcgZWxlbWVudCBpcyBhIHR1cGxlIChzaXplLCB0b2tlbiwgbGVuZ3RoKSwgd2hlcmVcbiAgIC0gbGVuZ3RoIGlzIHRoZSBkZWNsYXJlZCBsZW5ndGggb2YgdGhlIHRva2VuLFxuICAgLSBzaXplIGlzIGVmZmVjdGl2ZSBzaXplIG9mIHRoZSB0b2tlbiB3aGVuIGl0IGlzIHByaW50ZWRcbiAgICAgKHNpemUgaXMgc2V0IHdoZW4gdGhlIHNpemUgb2YgdGhlIGJveCBpcyBrbm93biwgc28gdGhhdCBzaXplIG9mIGJyZWFrXG4gICAgICBoaW50cyBhcmUgZGVmaW5pdGl2ZSkuICopXG50eXBlIHBwX3F1ZXVlX2VsZW0gPSB7XG4gIG11dGFibGUgc2l6ZSA6IFNpemUudDtcbiAgdG9rZW4gOiBwcF90b2tlbjtcbiAgbGVuZ3RoIDogaW50O1xufVxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9xdWV1ZSA9IHBwX3F1ZXVlX2VsZW0gUXVldWUudFxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjazogc2Nhbm5pbmcgZWxlbWVudCBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9zY2FuX2VsZW0gPSB7XG4gIGxlZnRfdG90YWwgOiBpbnQ7ICgqIFZhbHVlIG9mIHBwX2xlZnRfdG90YWwgd2hlbiB0aGUgZWxlbWVudCB3YXMgZW5xdWV1ZWQuICopXG4gIHF1ZXVlX2VsZW0gOiBwcF9xdWV1ZV9lbGVtXG59XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOlxuICAgdGhlIGZvcm1hdHRpbmcgc3RhY2sgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5IGFjdGl2ZVxuICAgYm94ZXM7IHRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrIGlzIHVzZWQgdG8gc3BsaXQgdGhlIGxpbmVzXG4gICB3aGlsZSBwcmludGluZyB0b2tlbnMuICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOiBmb3JtYXR0aW5nIHN0YWNrIGVsZW1lbnQgZGVmaW5pdGlvbi5cbiAgIEVhY2ggc3RhY2sgZWxlbWVudCBkZXNjcmliZXMgYSBwcmV0dHktcHJpbnRpbmcgYm94LiAqKVxudHlwZSBwcF9mb3JtYXRfZWxlbSA9IHsgYm94X3R5cGUgOiBib3hfdHlwZTsgd2lkdGggOiBpbnQgfVxuXG4oKiBUaGUgZm9ybWF0dGVyIGRlZmluaXRpb24uXG4gICBFYWNoIGZvcm1hdHRlciB2YWx1ZSBpcyBhIHByZXR0eS1wcmludGVyIGluc3RhbmNlIHdpdGggYWxsIGl0c1xuICAgbWFjaGluZXJ5LiAqKVxudHlwZSBmb3JtYXR0ZXIgPSB7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcbiAgcHBfc2Nhbl9zdGFjayA6IHBwX3NjYW5fZWxlbSBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjay4gKilcbiAgcHBfZm9ybWF0X3N0YWNrIDogcHBfZm9ybWF0X2VsZW0gU3RhY2sudDtcbiAgcHBfdGJveF9zdGFjayA6IHRib3ggU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNlbWFudGljcyB0YWcgc3RhY2suICopXG4gIHBwX3RhZ19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgcHBfbWFya19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgKCogVmFsdWUgb2YgcmlnaHQgbWFyZ2luLiAqKVxuICBtdXRhYmxlIHBwX21hcmdpbiA6IGludDtcbiAgKCogTWluaW1hbCBzcGFjZSBsZWZ0IGJlZm9yZSBtYXJnaW4sIHdoZW4gb3BlbmluZyBhIGJveC4gKilcbiAgbXV0YWJsZSBwcF9taW5fc3BhY2VfbGVmdCA6IGludDtcbiAgKCogTWF4aW11bSB2YWx1ZSBvZiBpbmRlbnRhdGlvbjpcbiAgICAgbm8gYm94IGNhbiBiZSBvcGVuZWQgZnVydGhlci4gKilcbiAgbXV0YWJsZSBwcF9tYXhfaW5kZW50IDogaW50O1xuICAoKiBTcGFjZSByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbXV0YWJsZSBwcF9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBDdXJyZW50IHZhbHVlIG9mIGluZGVudGF0aW9uLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJlbnRfaW5kZW50IDogaW50O1xuICAoKiBUcnVlIHdoZW4gdGhlIGxpbmUgaGFzIGJlZW4gYnJva2VuIGJ5IHRoZSBwcmV0dHktcHJpbnRlci4gKilcbiAgbXV0YWJsZSBwcF9pc19uZXdfbGluZSA6IGJvb2w7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBhbHJlYWR5IHByaW50ZWQuICopXG4gIG11dGFibGUgcHBfbGVmdF90b3RhbCA6IGludDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGV2ZXIgcHV0IGluIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHBwX3JpZ2h0X3RvdGFsIDogaW50O1xuICAoKiBDdXJyZW50IG51bWJlciBvZiBvcGVuIGJveGVzLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJfZGVwdGggOiBpbnQ7XG4gICgqIE1heGltdW0gbnVtYmVyIG9mIGJveGVzIHdoaWNoIGNhbiBiZSBzaW11bHRhbmVvdXNseSBvcGVuLiAqKVxuICBtdXRhYmxlIHBwX21heF9ib3hlcyA6IGludDtcbiAgKCogRWxsaXBzaXMgc3RyaW5nLiAqKVxuICBtdXRhYmxlIHBwX2VsbGlwc2lzIDogc3RyaW5nO1xuICAoKiBPdXRwdXQgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gICgqIEZsdXNoaW5nIGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGJyZWFrIGhpbnRzIHNwYWNlcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xuICAoKiBBcmUgdGFncyBwcmludGVkID8gKilcbiAgbXV0YWJsZSBwcF9wcmludF90YWdzIDogYm9vbDtcbiAgKCogQXJlIHRhZ3MgbWFya2VkID8gKilcbiAgbXV0YWJsZSBwcF9tYXJrX3RhZ3MgOiBib29sO1xuICAoKiBGaW5kIG9wZW5pbmcgYW5kIGNsb3NpbmcgbWFya2VycyBvZiB0YWdzLiAqKVxuICBtdXRhYmxlIHBwX21hcmtfb3Blbl90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9tYXJrX2Nsb3NlX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX3ByaW50X29wZW5fdGFnIDogc3RhZyAtPiB1bml0O1xuICBtdXRhYmxlIHBwX3ByaW50X2Nsb3NlX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxuICBwcF9xdWV1ZSA6IHBwX3F1ZXVlO1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgc3BlY2lmaWMgdGFnIGhhbmRsaW5nIGZ1bmN0aW9ucy4gKilcbnR5cGUgZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl9zdGFnIDogc3RhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV9zdGFnIDogc3RhZyAtPiB1bml0O1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25zIHRvIG91dHB1dCBtYXRlcmlhbC4gKilcbnR5cGUgZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPSB7XG4gIG91dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBvdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICBvdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gIG91dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbn1cblxuXG4oKlxuXG4gIEF1eGlsaWFyaWVzIGFuZCBiYXNpYyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEVudGVyIGEgdG9rZW4gaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2VucXVldWUgc3RhdGUgdG9rZW4gPVxuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBzdGF0ZS5wcF9yaWdodF90b3RhbCArIHRva2VuLmxlbmd0aDtcbiAgUXVldWUuYWRkIHRva2VuIHN0YXRlLnBwX3F1ZXVlXG5cblxubGV0IHBwX2NsZWFyX3F1ZXVlIHN0YXRlID1cbiAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSAxOyBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSAxO1xuICBRdWV1ZS5jbGVhciBzdGF0ZS5wcF9xdWV1ZVxuXG5cbigqIFBwX2luZmluaXR5OiBsYXJnZSB2YWx1ZSBmb3IgZGVmYXVsdCB0b2tlbnMgc2l6ZS5cblxuICAgUHBfaW5maW5pdHkgaXMgZG9jdW1lbnRlZCBhcyBiZWluZyBncmVhdGVyIHRoYW4gMWUxMDsgdG8gYXZvaWRcbiAgIGNvbmZ1c2lvbiBhYm91dCB0aGUgd29yZCAnZ3JlYXRlcicsIHdlIGNob29zZSBwcF9pbmZpbml0eSBncmVhdGVyXG4gICB0aGFuIDFlMTAgKyAxOyBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB0ZXN0cyBpbiB0aGUgYWxnb3JpdGhtLFxuICAgcHBfaW5maW5pdHkgbXVzdCBiZSBldmVuIG9uZSBtb3JlIHRoYW4gMWUxMCArIDE7IGxldCdzIHN0YW5kIG9uIHRoZVxuICAgc2FmZSBzaWRlIGJ5IGNob29zaW5nIDEuZTEwKzEwLlxuXG4gICBQcF9pbmZpbml0eSBjb3VsZCBwcm9iYWJseSBiZSAxMDczNzQxODIzIHRoYXQgaXMgMl4zMCAtIDEsIHRoYXQgaXNcbiAgIHRoZSBtaW5pbWFsIHVwcGVyIGJvdW5kIGZvciBpbnRlZ2Vyczsgbm93IHRoYXQgbWF4X2ludCBpcyBkZWZpbmVkLFxuICAgdGhpcyBsaW1pdCBjb3VsZCBhbHNvIGJlIGRlZmluZWQgYXMgbWF4X2ludCAtIDEuXG5cbiAgIEhvd2V2ZXIsIGJlZm9yZSBzZXR0aW5nIHBwX2luZmluaXR5IHRvIHNvbWV0aGluZyBhcm91bmQgbWF4X2ludCwgd2VcbiAgIG11c3QgY2FyZWZ1bGx5IGRvdWJsZS1jaGVjayBhbGwgdGhlIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4gICB0aGF0IGludm9sdmUgcHBfaW5maW5pdHksIHNpbmNlIGFueSBvdmVyZmxvdyB3b3VsZCB3cmVjayBoYXZvYyB0aGVcbiAgIHByZXR0eS1wcmludGluZyBhbGdvcml0aG0ncyBpbnZhcmlhbnRzLiBHaXZlbiB0aGF0IHRoaXMgYXJpdGhtZXRpY1xuICAgY29ycmVjdG5lc3MgY2hlY2sgaXMgZGlmZmljdWx0IGFuZCBlcnJvciBwcm9uZSBhbmQgZ2l2ZW4gdGhhdCAxZTEwXG4gICArIDEgaXMgaW4gcHJhY3RpY2UgbGFyZ2UgZW5vdWdoLCB0aGVyZSBpcyBubyBuZWVkIHRvIGF0dGVtcHQgdG8gc2V0XG4gICBwcF9pbmZpbml0eSB0byB0aGUgdGhlb3JldGljYWxseSBtYXhpbXVtIGxpbWl0LiBJdCBpcyBub3Qgd29ydGggdGhlXG4gICBidXJkZW4gISAqKVxubGV0IHBwX2luZmluaXR5ID0gMTAwMDAwMDAxMFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIGZvciB0aGUgZm9ybWF0dGVyLiAqKVxubGV0IHBwX291dHB1dF9zdHJpbmcgc3RhdGUgcyA9IHN0YXRlLnBwX291dF9zdHJpbmcgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5hbmQgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZSAoKVxuYW5kIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9zcGFjZXMgblxuYW5kIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9pbmRlbnQgblxuXG4oKiBGb3JtYXQgYSB0ZXh0dWFsIHRva2VuICopXG5sZXQgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSB0ZXh0ID1cbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gc2l6ZTtcbiAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSB0ZXh0O1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSBmYWxzZVxuXG4oKiBGb3JtYXQgYSBzdHJpbmcgYnkgaXRzIGxlbmd0aCwgaWYgbm90IGVtcHR5ICopXG5sZXQgZm9ybWF0X3N0cmluZyBzdGF0ZSBzID1cbiAgaWYgcyA8PiBcIlwiIHRoZW4gZm9ybWF0X3BwX3RleHQgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG4oKiBUbyBmb3JtYXQgYSBicmVhaywgaW5kZW50aW5nIGEgbmV3IGxpbmUuICopXG5sZXQgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKGJlZm9yZSwgb2Zmc2V0LCBhZnRlcikgd2lkdGggPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIHRydWU7XG4gIGxldCBpbmRlbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZnNldCBpblxuICAoKiBEb24ndCBpbmRlbnQgbW9yZSB0aGFuIHBwX21heF9pbmRlbnQuICopXG4gIGxldCByZWFsX2luZGVudCA9IEludC5taW4gc3RhdGUucHBfbWF4X2luZGVudCBpbmRlbnQgaW5cbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gcmVhbF9pbmRlbnQ7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBmb3JjZSBhIGxpbmUgYnJlYWsgaW5zaWRlIGEgYm94OiBubyBvZmZzZXQgaXMgYWRkZWQuICopXG5sZXQgYnJlYWtfbGluZSBzdGF0ZSB3aWR0aCA9IGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCAwLCBcIlwiKSB3aWR0aFxuXG4oKiBUbyBmb3JtYXQgYSBicmVhayB0aGF0IGZpdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCBicmVha19zYW1lX2xpbmUgc3RhdGUgKGJlZm9yZSwgd2lkdGgsIGFmdGVyKSA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSB3aWR0aDtcbiAgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSB3aWR0aDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGluZGVudCBubyBtb3JlIHRoYW4gcHBfbWF4X2luZGVudCwgaWYgb25lIHRyaWVzIHRvIG9wZW4gYSBib3hcbiAgIGJleW9uZCBwcF9tYXhfaW5kZW50LCB0aGVuIHRoZSBib3ggaXMgcmVqZWN0ZWQgb24gdGhlIGxlZnRcbiAgIGJ5IHNpbXVsYXRpbmcgYSBicmVhay4gKilcbmxldCBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGVcbiAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICBpZiB3aWR0aCA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlblxuICAgICAgbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9maXRzIHwgUHBfaGJveCAtPiAoKVxuICAgICAgfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuXG5cbigqIFRvIHNraXAgYSB0b2tlbiwgaWYgdGhlIHByZXZpb3VzIGxpbmUgaGFzIGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3NraXBfdG9rZW4gc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBwcmludF9pZl9uZXdsaW5lIG11c3QgaGF2ZSBiZWVuIHRoZSBsYXN0IHByaW50aW5nIGNvbW1hbmQgKilcbiAgfCBTb21lIHsgc2l6ZTsgbGVuZ3RoOyBfIH0gLT5cbiAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIHN0YXRlLnBwX2xlZnRfdG90YWwgLSBsZW5ndGg7XG4gICAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0ICsgU2l6ZS50b19pbnQgc2l6ZVxuXG5cbigqXG5cbiAgVGhlIG1haW4gcHJldHR5IHByaW50aW5nIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRm9ybWF0dGluZyBhIHRva2VuIHdpdGggYSBnaXZlbiBzaXplLiAqKVxubGV0IGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplID0gZnVuY3Rpb25cblxuICB8IFBwX3RleHQgcyAtPlxuICAgIGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgc1xuXG4gIHwgUHBfYmVnaW4gKG9mZiwgdHkpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBpZiBpbnNlcnRpb25fcG9pbnQgPiBzdGF0ZS5wcF9tYXhfaW5kZW50IHRoZW5cbiAgICAgICgqIGNhbiBub3Qgb3BlbiBhIGJveCByaWdodCB0aGVyZS4gKilcbiAgICAgIGJlZ2luIHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgZW5kO1xuICAgIGxldCB3aWR0aCA9IHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBvZmYgaW5cbiAgICBsZXQgYm94X3R5cGUgPVxuICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgfCBQcF92Ym94IC0+IFBwX3Zib3hcbiAgICAgIHwgUHBfaGJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0cyAtPlxuICAgICAgICBpZiBzaXplID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIHR5IGVsc2UgUHBfZml0cyBpblxuICAgIFN0YWNrLnB1c2ggeyBib3hfdHlwZTsgd2lkdGggfSBzdGF0ZS5wcF9mb3JtYXRfc3RhY2tcblxuICB8IFBwX2VuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfdGJlZ2luIChQcF90Ym94IF8gYXMgdGJveCkgLT5cbiAgICBTdGFjay5wdXNoIHRib3ggc3RhdGUucHBfdGJveF9zdGFja1xuXG4gIHwgUHBfdGVuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3N0YWIgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHJlYyBhZGRfdGFiIG4gPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtuXVxuICAgICAgICB8IHggOjogbCBhcyBscyAtPiBpZiBuIDwgeCB0aGVuIG4gOjogbHMgZWxzZSB4IDo6IGFkZF90YWIgbiBsIGluXG4gICAgICB0YWJzIDo9IGFkZF90YWIgKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQpICF0YWJzXG4gICAgZW5kXG5cbiAgfCBQcF90YnJlYWsgKG4sIG9mZikgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgdGFiID1cbiAgICAgICAgbWF0Y2ggIXRhYnMgd2l0aFxuICAgICAgICB8IFtdIC0+IGluc2VydGlvbl9wb2ludFxuICAgICAgICB8IGZpcnN0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgcmVjIGZpbmQgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgaWYgaGVhZCA+PSBpbnNlcnRpb25fcG9pbnQgdGhlbiBoZWFkIGVsc2UgZmluZCB0YWlsXG4gICAgICAgICAgICB8IFtdIC0+IGZpcnN0IGluXG4gICAgICAgICAgZmluZCAhdGFicyBpblxuICAgICAgbGV0IG9mZnNldCA9IHRhYiAtIGluc2VydGlvbl9wb2ludCBpblxuICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIChcIlwiLCBvZmZzZXQgKyBuLCBcIlwiKVxuICAgICAgZWxzZSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgdGFiICsgb2ZmLCBcIlwiKSBzdGF0ZS5wcF9tYXJnaW5cbiAgICBlbmRcblxuICB8IFBwX25ld2xpbmUgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IHdpZHRoOyBffSAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG4gICAgZW5kXG5cbiAgfCBQcF9pZl9uZXdsaW5lIC0+XG4gICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgIT0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgIHRoZW4gcHBfc2tpcF90b2tlbiBzdGF0ZVxuXG4gIHwgUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSAtPlxuICAgIGxldCBiZWZvcmUsIG9mZiwgXyA9IGJyZWFrcyBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfaG92Ym94IC0+XG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoIGVsc2VcbiAgICAgICAgKCogYnJlYWsgdGhlIGxpbmUgaGVyZSBsZWFkcyB0byBuZXcgaW5kZW50YXRpb24gPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA+IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2ZmXG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfaHZib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2ZpdHMgLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfdmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfaGJveCAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgIHwgUHBfb3Blbl90YWcgdGFnX25hbWUgLT5cbiAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXI7XG4gICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfbWFya19zdGFja1xuXG4gICB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICBiZWdpbiBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX21hcmtfc3RhY2sgd2l0aFxuICAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyB0YWdfbmFtZSBpblxuICAgICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyXG4gICAgIGVuZFxuXG5cbigqIFByaW50IGlmIHRva2VuIHNpemUgaXMga25vd24gZWxzZSBwcmludGluZyBpcyBkZWxheWVkLlxuICAgUHJpbnRpbmcgaXMgZGVsYXllZCB3aGVuIHRoZSB0ZXh0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlIHJlcXVpcmVzXG4gICBtb3JlIHJvb20gdG8gZm9ybWF0IHRoYW4gZXhpc3RzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgcmVjIGFkdmFuY2VfbGVmdCBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnBlZWtfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIE5vIHRva2VucyB0byBwcmludCAqKVxuICB8IFNvbWUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gLT5cbiAgICBsZXQgcGVuZGluZ19jb3VudCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIC0gc3RhdGUucHBfbGVmdF90b3RhbCBpblxuICAgIGlmIFNpemUuaXNfa25vd24gc2l6ZSB8fCBwZW5kaW5nX2NvdW50ID49IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiBiZWdpblxuICAgICAgUXVldWUudGFrZSBzdGF0ZS5wcF9xdWV1ZSB8PiBpZ25vcmU7ICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICBsZXQgc2l6ZSA9IGlmIFNpemUuaXNfa25vd24gc2l6ZSB0aGVuIFNpemUudG9faW50IHNpemUgZWxzZSBwcF9pbmZpbml0eSBpblxuICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIGxlbmd0aCArIHN0YXRlLnBwX2xlZnRfdG90YWw7XG4gICAgICAoYWR2YW5jZV9sZWZ0IFtAdGFpbGNhbGxdKSBzdGF0ZVxuICAgIGVuZFxuXG5cbigqIFRvIGVucXVldWUgYSB0b2tlbiA6IHRyeSB0byBhZHZhbmNlLiAqKVxubGV0IGVucXVldWVfYWR2YW5jZSBzdGF0ZSB0b2sgPSBwcF9lbnF1ZXVlIHN0YXRlIHRvazsgYWR2YW5jZV9sZWZ0IHN0YXRlXG5cblxuKCogVG8gZW5xdWV1ZSBzdHJpbmdzLiAqKVxubGV0IGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgcyA9XG4gIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemU7IHRva2VuID0gUHBfdGV4dCBzOyBsZW5ndGggPSBTaXplLnRvX2ludCBzaXplIH1cblxuXG5sZXQgZW5xdWV1ZV9zdHJpbmcgc3RhdGUgcyA9XG4gIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIChTaXplLm9mX2ludCAoU3RyaW5nLmxlbmd0aCBzKSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3RhYiB8IFBwX3RiZWdpbiBfIHwgUHBfdGVuZCB8IFBwX2VuZFxuICAgICAgfCBQcF9uZXdsaW5lIHwgUHBfaWZfbmV3bGluZSB8IFBwX29wZW5fdGFnIF8gfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgICAgKCkgKCogc2Nhbl9wdXNoIGlzIG9ubHkgdXNlZCBmb3IgYnJlYWtzIGFuZCBib3hlcy4gKilcblxuXG4oKiBQdXNoIGEgdG9rZW4gb24gcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suXG4gICBJZiBiIGlzIHRydWUgc2V0X3NpemUgaXMgY2FsbGVkLiAqKVxubGV0IHNjYW5fcHVzaCBzdGF0ZSBiIHRva2VuID1cbiAgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbjtcbiAgaWYgYiB0aGVuIHNldF9zaXplIHN0YXRlIHRydWU7XG4gIGxldCBlbGVtID0geyBsZWZ0X3RvdGFsID0gc3RhdGUucHBfcmlnaHRfdG90YWw7IHF1ZXVlX2VsZW0gPSB0b2tlbiB9IGluXG4gIFN0YWNrLnB1c2ggZWxlbSBzdGF0ZS5wcF9zY2FuX3N0YWNrXG5cblxuKCogVG8gb3BlbiBhIG5ldyBib3ggOlxuICAgdGhlIHVzZXIgbWF5IHNldCB0aGUgZGVwdGggYm91bmQgcHBfbWF4X2JveGVzXG4gICBhbnkgdGV4dCBuZXN0ZWQgZGVlcGVyIGlzIHByaW50ZWQgYXMgdGhlIGVsbGlwc2lzIHN0cmluZy4gKilcbmxldCBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IGJyX3R5ID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF9iZWdpbiAoaW5kZW50LCBicl90eSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSBmYWxzZSBlbGVtIGVsc2VcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nIHN0YXRlIHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVGhlIGJveCB3aGljaCBpcyBhbHdheXMgb3Blbi4gKilcbmxldCBwcF9vcGVuX3N5c19ib3ggc3RhdGUgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9ob3Zib3hcblxuKCogQ2xvc2UgYSBib3gsIHNldHRpbmcgc2l6ZXMgb2YgaXRzIHN1YiBib3hlcy4gKilcbmxldCBwcF9jbG9zZV9ib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgYmVnaW5cbiAgICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2VuZDsgbGVuZ3RoID0gMCB9O1xuICAgICAgc2V0X3NpemUgc3RhdGUgdHJ1ZTsgc2V0X3NpemUgc3RhdGUgZmFsc2VcbiAgICBlbmQ7XG4gICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMTtcbiAgZW5kXG5cblxuKCogT3BlbiBhIHRhZywgcHVzaGluZyBpdCBvbiB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX29wZW5fc3RhZyBzdGF0ZSB0YWdfbmFtZSA9XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICBiZWdpblxuICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfdGFnX3N0YWNrO1xuICAgIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIHRhZ19uYW1lXG4gIGVuZDtcbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBsZXQgdG9rZW4gPSBQcF9vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbjsgbGVuZ3RoID0gMCB9XG5cblxuKCogQ2xvc2UgYSB0YWcsIHBvcHBpbmcgaXQgZnJvbSB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2Nsb3NlX3RhZzsgbGVuZ3RoID0gMCB9O1xuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgICBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3RhZ19zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIHRhZ19uYW1lXG5cbmxldCBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfcHJpbnRfdGFncyA8LSBiXG5sZXQgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfbWFya190YWdzIDwtIGJcbmxldCBwcF9nZXRfcHJpbnRfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX3ByaW50X3RhZ3NcbmxldCBwcF9nZXRfbWFya190YWdzIHN0YXRlICgpID0gc3RhdGUucHBfbWFya190YWdzXG5sZXQgcHBfc2V0X3RhZ3Mgc3RhdGUgYiA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0YXRlIGI7IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYlxuXG5cbigqIEhhbmRsaW5nIHRhZyBoYW5kbGluZyBmdW5jdGlvbnM6IGdldC9zZXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG1hcmtfb3Blbl9zdGFnID0gc3RhdGUucHBfbWFya19vcGVuX3RhZztcbiAgbWFya19jbG9zZV9zdGFnID0gc3RhdGUucHBfbWFya19jbG9zZV90YWc7XG4gIHByaW50X29wZW5fc3RhZyA9IHN0YXRlLnBwX3ByaW50X29wZW5fdGFnO1xuICBwcmludF9jbG9zZV9zdGFnID0gc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnO1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl9zdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV9zdGFnID0gcGN0O1xuICB9ID1cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBtb3Q7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIG1jdDtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gcG90O1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gcGN0XG5cblxuKCogSW5pdGlhbGl6ZSBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9yaW5pdCBzdGF0ZSA9XG4gIHBwX2NsZWFyX3F1ZXVlIHN0YXRlO1xuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfZm9ybWF0X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90Ym94X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX21hcmtfc3RhY2s7XG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIDA7XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gMDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW47XG4gIHBwX29wZW5fc3lzX2JveCBzdGF0ZVxuXG5sZXQgY2xlYXJfdGFnX3N0YWNrIHN0YXRlID1cbiAgU3RhY2suaXRlciAoZnVuIF8gLT4gcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSkgc3RhdGUucHBfdGFnX3N0YWNrXG5cblxuKCogRmx1c2hpbmcgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZmx1c2hfcXVldWUgc3RhdGUgYiA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgYiB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgdHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG4oKiBJbml0aWFsaXNlIGRvbWFpbiBsb2NhbCBzdGF0ZSAqKVxubW9kdWxlIERMUyA9IERvbWFpbi5ETFNcblxubGV0IHN0ZGJ1Zl9rZXkgPSBETFMubmV3X2tleSBwcF9tYWtlX2J1ZmZlclxubGV0IF8gPSBETFMuc2V0IHN0ZGJ1Zl9rZXkgc3RkYnVmXG5cbmxldCBzdHJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgZm9ybWF0dGVyX29mX2J1ZmZlciAoRExTLmdldCBzdGRidWZfa2V5KSlcbmxldCBfID0gRExTLnNldCBzdHJfZm9ybWF0dGVyX2tleSBzdHJfZm9ybWF0dGVyXG5cbmxldCBidWZmZXJlZF9vdXRfc3RyaW5nIGtleSBzdHIgb2ZzIGxlbiA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIChEb21haW4uRExTLmdldCBrZXkpIHN0ciBvZnMgbGVuXG5cbmxldCBidWZmZXJlZF9vdXRfZmx1c2ggb2Mga2V5ICgpID1cbiAgbGV0IGJ1ZiA9IERvbWFpbi5ETFMuZ2V0IGtleSBpblxuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHIgMCBsZW4gO1xuICBTdGRsaWIuZmx1c2ggb2M7XG4gIEJ1ZmZlci5jbGVhciBidWZcblxubGV0IHN0ZF9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcbmxldCBlcnJfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5cbmxldCBzdGRfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBzdGRfZm9ybWF0dGVyX2tleSBzdGRfZm9ybWF0dGVyXG5cbmxldCBlcnJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBlcnJfZm9ybWF0dGVyX2tleSBlcnJfZm9ybWF0dGVyXG5cbmxldCBnZXRfc3RkX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfZXJyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RkYnVmICgpID0gRExTLmdldCBzdGRidWZfa2V5XG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID1cbiAgbGV0IHN0ZGJ1ZiA9IERMUy5nZXQgc3RkYnVmX2tleSBpblxuICBsZXQgc3RyX2Zvcm1hdHRlciA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXkgaW5cbiAgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG5sZXQgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBvdXRwdXQnID0gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGluXG4gICAgbGV0IGZsdXNoJyAoKSA9XG4gICAgICBvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBidWYpIDAgKEJ1ZmZlci5sZW5ndGggYnVmKTtcbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBmbHVzaCAoKVxuICAgIGluXG4gICAgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0JyBmbHVzaCcpXG5cbmxldCBzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggdiA9IHBwX29wZW5faGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fdmJveCB2ID0gcHBfb3Blbl92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9odmJveCB2ID0gcHBfb3Blbl9odmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faG92Ym94IHYgPSBwcF9vcGVuX2hvdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fYm94IHYgPSBwcF9vcGVuX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX2JveCB2ID0gcHBfY2xvc2VfYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9zdGFnIHYgPSBwcF9vcGVuX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9zdGFnIHYgPSBwcF9jbG9zZV9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYXMgdiB3ID0gcHBfcHJpbnRfYXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X3N0cmluZyB2ID0gcHBfcHJpbnRfc3RyaW5nIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnl0ZXMgdiA9IHBwX3ByaW50X2J5dGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaW50IHYgPSBwcF9wcmludF9pbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbG9hdCB2ID0gcHBfcHJpbnRfZmxvYXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9jaGFyIHYgPSBwcF9wcmludF9jaGFyIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYm9vbCB2ID0gcHBfcHJpbnRfYm9vbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2JyZWFrIHYgdyA9IHBwX3ByaW50X2JyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9jdXQgdiA9IHBwX3ByaW50X2N1dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3NwYWNlIHYgPSBwcF9wcmludF9zcGFjZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGZvcmNlX25ld2xpbmUgdiA9IHBwX2ZvcmNlX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbHVzaCB2ID0gcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9uZXdsaW5lIHYgPSBwcF9wcmludF9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaWZfbmV3bGluZSB2ID0gcHBfcHJpbnRfaWZfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgb3Blbl90Ym94IHYgPSBwcF9vcGVuX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV90Ym94IHYgPSBwcF9jbG9zZV90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGJyZWFrIHYgdyA9IHBwX3ByaW50X3RicmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5cbmFuZCBzZXRfdGFiIHYgPSBwcF9zZXRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGFiIHYgPSBwcF9wcmludF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXJnaW4gdiA9IHBwX3NldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFyZ2luIHYgPSBwcF9nZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2luZGVudCB2ID0gcHBfc2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2luZGVudCB2ID0gcHBfZ2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NhZmVfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgZ2V0X2dlb21ldHJ5IHYgPSBwcF9nZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgdiA9IHBwX3VwZGF0ZV9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9ib3hlcyB2ID0gcHBfc2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfYm94ZXMgdiA9IHBwX2dldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvdmVyX21heF9ib3hlcyB2ID0gcHBfb3Zlcl9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgdyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX3NldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX2dldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X21hcmtfdGFncyB2ID1cbiAgcHBfc2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX2dldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfdGFncyB2ID1cbiAgcHBfc2V0X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHJlYyBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbdl0gLT4gcHBfdiBwcGYgdlxuICB8IHYgOjogdnMgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBwX3YgcHBmIHZzXG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcmVjIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9zdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcblxubGV0IHByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBlcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpICgpO1xuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbmxldCAoKSA9IERvbWFpbi5iZWZvcmVfZmlyc3Rfc3Bhd24gKGZ1biAoKSAtPlxuICBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpO1xuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5fTtcblxuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5fTtcbilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaW5dIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyX29wdCA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCBvcHRpb24sICdkKSBmb3JtYXQ2IC0+ICdjXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxubGV0IGtzY2FuZl9nZW4gaWIgZWYgYWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycyB3aXRoXG4gICAgfCBleGNlcHRpb24gKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUgYXMgZXhjKSAtPlxuICAgICAgICBlZiBpYiBleGNcbiAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHwgYXJncyAtPlxuICAgICAgICBhZiAoYXBwbHkgZiBhcmdzKVxuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbmxldCBrc2NhbmYgaWIgZWYgZm10ID1cbiAga3NjYW5mX2dlbiBpYiBlZiAoZnVuIHggLT4geCkgZm10XG5cbmxldCBrc2NhbmZfb3B0IGliIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgKGZ1biBfIF8gLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeCkgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IGJzY2FuZl9vcHQgaWIgZm10ID0ga3NjYW5mX29wdCBpYiBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc3NjYW5mX29wdCBzIGZtdCA9IGtzY2FuZl9vcHQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGluIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBzY2FuZl9vcHQgZm10ID0ga3NjYW5mX29wdCBTY2FubmluZy5zdGRpbiBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIE9ialxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChtYWdpYyAoKSA6IGl0ZW0pXG5cbigqKioqIFR5cGVzICoqKiopXG5cbnR5cGUgdGFnXG50eXBlIGxhYmVsID0gaW50XG50eXBlIGNsb3N1cmUgPSBpdGVtXG50eXBlIHQgPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbnR5cGUgb2JqID0gdCBhcnJheVxuZXh0ZXJuYWwgcmV0IDogKG9iaiAtPiAnYSkgLT4gY2xvc3VyZSA9IFwiJWlkZW50aXR5XCJcblxuKCoqKiogTGFiZWxzICoqKiopXG5cbmxldCBwdWJsaWNfbWV0aG9kX2xhYmVsIHMgOiB0YWcgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbGV0IHRhZyA9IGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1IGluXG4gICgqIFByaW50Zi5lcHJpbnRmIFwiJXMgPSAlZFxcblwiIHMgdGFnOyBmbHVzaCBzdGRlcnI7ICopXG4gIG1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBvYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gbWFnaWMgbGVuO1xuICBtZXRob2RzLigxKSA8LSBtYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIG1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IG1hZ2ljIDAgdGhlbiBbXSBlbHNlIEFycmF5LnRvX2xpc3QgYXJyXG5cbmxldCBuYXJyb3cgdGFibGUgdmFycyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzID1cbiAgbGV0IHZhcnMgPSB0b19saXN0IHZhcnNcbiAgYW5kIHZpcnRfbWV0aHMgPSB0b19saXN0IHZpcnRfbWV0aHNcbiAgYW5kIGNvbmNyX21ldGhzID0gdG9fbGlzdCBjb25jcl9tZXRocyBpblxuICBsZXQgdmlydF9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgdmlydF9tZXRocyBpblxuICBsZXQgY29uY3JfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIGNvbmNyX21ldGhzIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LVxuICAgICAodGFibGUubWV0aG9kc19ieV9uYW1lLCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsLCB0YWJsZS5oaWRkZW5fbWV0aHMsXG4gICAgICB0YWJsZS52YXJzLCB2aXJ0X21ldGhfbGFicywgdmFycylcbiAgICAgOjogdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgVmFycy5mb2xkXG4gICAgICAoZnVuIGxhYiBpbmZvIHR2YXJzIC0+XG4gICAgICAgIGlmIExpc3QubWVtIGxhYiB2YXJzIHRoZW4gVmFycy5hZGQgbGFiIGluZm8gdHZhcnMgZWxzZSB0dmFycylcbiAgICAgIHRhYmxlLnZhcnMgVmFycy5lbXB0eTtcbiAgbGV0IGJ5X25hbWUgPSByZWYgTWV0aHMuZW1wdHkgaW5cbiAgbGV0IGJ5X2xhYmVsID0gcmVmIExhYnMuZW1wdHkgaW5cbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9XG4gICAgICAgICAgTGFicy5hZGQgbGFiZWxcbiAgICAgICAgICAgICh0cnkgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZSlcbiAgICAgICAgICAgICFieV9sYWJlbClcbiAgICBjb25jcl9tZXRocyBjb25jcl9tZXRoX2xhYnM7XG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PSBMYWJzLmFkZCBsYWJlbCBmYWxzZSAhYnlfbGFiZWwpXG4gICAgdmlydF9tZXRocyB2aXJ0X21ldGhfbGFicztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtICFieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtICFieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRoX2xhYnMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgW11cblxubGV0IHdpZGVuIHRhYmxlID1cbiAgbGV0IChieV9uYW1lLCBieV9sYWJlbCwgc2F2ZWRfaGlkZGVuX21ldGhzLCBzYXZlZF92YXJzLCB2aXJ0X21ldGhzLCB2YXJzKSA9XG4gICAgTGlzdC5oZCB0YWJsZS5wcmV2aW91c19zdGF0ZXNcbiAgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtIExpc3QudGwgdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBzIHYgLT4gVmFycy5hZGQgdiAoVmFycy5maW5kIHYgdGFibGUudmFycykgcylcbiAgICAgICBzYXZlZF92YXJzIHZhcnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIGJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIHNhdmVkX2hpZGRlbl9tZXRoc1xuXG5sZXQgbmV3X3Nsb3QgdGFibGUgPVxuICBsZXQgaW5kZXggPSB0YWJsZS5zaXplIGluXG4gIHRhYmxlLnNpemUgPC0gaW5kZXggKyAxO1xuICBpbmRleFxuXG5sZXQgbmV3X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFyc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBpbmRleCA9IG5ld19zbG90IHRhYmxlIGluXG4gICAgaWYgbmFtZSA8PiBcIlwiIHRoZW4gdGFibGUudmFycyA8LSBWYXJzLmFkZCBuYW1lIGluZGV4IHRhYmxlLnZhcnM7XG4gICAgaW5kZXhcblxubGV0IHRvX2FycmF5IGFyciA9XG4gIGlmIGFyciA9IE9iai5tYWdpYyAwIHRoZW4gW3x8XSBlbHNlIGFyclxuXG5sZXQgbmV3X21ldGhvZHNfdmFyaWFibGVzIHRhYmxlIG1ldGhzIHZhbHMgPVxuICBsZXQgbWV0aHMgPSB0b19hcnJheSBtZXRocyBpblxuICBsZXQgbm1ldGhzID0gQXJyYXkubGVuZ3RoIG1ldGhzIGFuZCBudmFscyA9IEFycmF5Lmxlbmd0aCB2YWxzIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChubWV0aHMgKyBudmFscykgMCBpblxuICBmb3IgaSA9IDAgdG8gbm1ldGhzIC0gMSBkb1xuICAgIHJlcy4oaSkgPC0gZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBtZXRocy4oaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG52YWxzIC0gMSBkb1xuICAgIHJlcy4oaStubWV0aHMpIDwtIG5ld192YXJpYWJsZSB0YWJsZSB2YWxzLihpKVxuICBkb25lO1xuICByZXNcblxubGV0IGdldF92YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnMgd2l0aCBOb3RfZm91bmQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBnZXRfdmFyaWFibGVzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfdmFyaWFibGUgdGFibGUpIG5hbWVzXG5cbmxldCBhZGRfaW5pdGlhbGl6ZXIgdGFibGUgZiA9XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBmOjp0YWJsZS5pbml0aWFsaXplcnNcblxuKCpcbm1vZHVsZSBLZXlzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHRhZyBhcnJheSBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxubGV0IGtleV9tYXAgPSByZWYgS2V5cy5lbXB0eVxubGV0IGdldF9rZXkgdGFncyA6IGl0ZW0gPVxuICB0cnkgbWFnaWMgKEtleXMuZmluZCB0YWdzICFrZXlfbWFwIDogdGFnIGFycmF5KVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGtleV9tYXAgOj0gS2V5cy5hZGQgdGFncyB0YWdzICFrZXlfbWFwO1xuICAgIG1hZ2ljIHRhZ3NcbiopXG5cbmxldCBjcmVhdGVfdGFibGUgcHVibGljX21ldGhvZHMgPVxuICBpZiBwdWJsaWNfbWV0aG9kcyA9PSBtYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCByZXByIGluaXQgfF07XG4gICAgIG1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gcmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplXG4gICAgdGhlbiBuIGVsc2UgbmV3X21ldGhvZCB0YWJsZVxuICBpblxuICB0YWJsZS5tZXRob2RzLihuKSA8LSBPYmoubWFnaWMgMDtcbiAgblxuXG50eXBlIGltcGwgPVxuICAgIEdldENvbnN0XG4gIHwgR2V0VmFyXG4gIHwgR2V0RW52XG4gIHwgR2V0TWV0aFxuICB8IFNldFZhclxuICB8IEFwcENvbnN0XG4gIHwgQXBwVmFyXG4gIHwgQXBwRW52XG4gIHwgQXBwTWV0aFxuICB8IEFwcENvbnN0Q29uc3RcbiAgfCBBcHBDb25zdFZhclxuICB8IEFwcENvbnN0RW52XG4gIHwgQXBwQ29uc3RNZXRoXG4gIHwgQXBwVmFyQ29uc3RcbiAgfCBBcHBFbnZDb25zdFxuICB8IEFwcE1ldGhDb25zdFxuICB8IE1ldGhBcHBDb25zdFxuICB8IE1ldGhBcHBWYXJcbiAgfCBNZXRoQXBwRW52XG4gIHwgTWV0aEFwcE1ldGhcbiAgfCBTZW5kQ29uc3RcbiAgfCBTZW5kVmFyXG4gIHwgU2VuZEVudlxuICB8IFNlbmRNZXRoXG4gIHwgQ2xvc3VyZSBvZiBjbG9zdXJlXG5cbmxldCBtZXRob2RfaW1wbCB0YWJsZSBpIGFyciA9XG4gIGxldCBuZXh0ICgpID0gaW5jciBpOyBtYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBtYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6ID9yYW5kb20gKCp0aHdhcnQgdG9vbHMvc3luY19zdGRsaWJfZG9jcyopIDogYm9vbCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5IGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5IGVwaCBrZXk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkgPVxuICAgIG1hdGNoIGdldF9rZXkgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkgLT4gZ2V0X2RhdGEgZXBoXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoID0gSC5zZWVkZWRfaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsxX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrMV9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5IGsgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5IGUgd2l0aFxuICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5IGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleSBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXkxIGtleTIgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkxIGVwaCBrZXkxO1xuICAgIHNldF9rZXkyIGVwaCBrZXkyO1xuICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBrZXkxKTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleTEga2V5MiA9XG4gICAgbWF0Y2ggZ2V0X2tleTEgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkxIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGdldF9rZXkyIGVwaCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkyIC0+IGdldF9kYXRhIGVwaFxuICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuc2VlZGVkX2hhc2ggc2VlZCBrMSArIEgyLnNlZWRlZF9oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrMSwgJ2syLCAnZCkgdCA9ICgnazEsICdrMiwgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazJfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrMSBrMiBkID0gYiA6PSBrMl9tYWtlIGsxIGsyIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgazEgazIgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5MSBlLCBnZXRfa2V5MiBlIHdpdGhcbiAgICAgIHwgU29tZSB4MSwgU29tZSB4MiB3aGVuIHgxID09IGsxICYmIHgyID09IGsyIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsxIGsyID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsxIGsyIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsxIGsyID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrMSBrMikgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXlzIGRhdGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGtleXMgaW5cbiAgICBsZXQgZXBoID0gY3JlYXRlIGwgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gc2V0X2tleSBlcGggaSBrZXlzLihpKSBkb25lO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5cyA9XG4gICAgbGV0IGwgPSBsZW5ndGggZXBoIGluXG4gICAgdHJ5XG4gICAgICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBrZXlzIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICBtYXRjaCBnZXRfa2V5IGVwaCBpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleXMuKGkpIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBnZXRfZGF0YSBlcGhcbiAgICB3aXRoIEV4aXQgLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5zZWVkZWRfaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrbl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0ga25fbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgayBlID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBsZW5ndGggZSA8PiBBcnJheS5sZW5ndGggayB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggayAtIDEgZG9cbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGUgaSB3aXRoXG4gICAgICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsuKGkpIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCBFeGl0IC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZiAnXFxcIicgfHwgU3RyaW5nLmNvbnRhaW5zIGYgJyUnIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFwiXFxcIlwiIF4gZiBeIFwiXFxcIlwiXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGlmIGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmZcbiAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICBlbHNlIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIlxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmdfa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByYW5kb21fc3RhdGUgPSBEb21haW4uRExTLmdldCBwcm5nX2tleSBpblxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRvbV9zdGF0ZSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6RnVuLmlkIChmdW4gKCkgLT4gdGVtcF9kaXJfbmFtZSlcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBEb21haW4uRExTLnNldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCBvcGVuX3RlbXBfZmlsZSA/KG1vZGUgPSBbT3Blbl90ZXh0XSkgPyhwZXJtcyA9IDBvNjAwKVxuICAgID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpXG4gICAgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICAobmFtZSxcbiAgICAgICBvcGVuX291dF9nZW4gKE9wZW5fd3Jvbmx5OjpPcGVuX2NyZWF0OjpPcGVuX2V4Y2w6Om1vZGUpIHBlcm1zIG5hbWUpXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID0gRmxvYXQuaHlwb3QgeC5yZSB4LmltXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGluX2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3RkaW4gPSBTdGRsaWIuc3RkaW5cbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX2luX2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX2luXG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9pbl9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBpYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9pbl9ub2VyciBpYylcbiAgICAoZnVuICgpIC0+IGYgaWMpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbl9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW4gcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9pbl9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLmluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9pbl9ub2VyclxuXG5sZXQgaW5wdXRfY2hhciBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgfCBjIC0+IFNvbWUgY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9ieXRlIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2J5dGUgaWMgd2l0aFxuICB8IG4gLT4gU29tZSBuXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2xpbmUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXQgPSBTdGRsaWIuaW5wdXRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluICgqIElPX0JVRkZFUl9TSVpFICopXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIHRyeVxuICAgICAgU3RkbGliLmluX2NoYW5uZWxfbGVuZ3RoIGljIC0gU3RkbGliLnBvc19pbiBpY1xuICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgIC0xXG4gIGluXG4gIGxldCBpbml0aWFsX3NpemUgPSBpZiBpbml0aWFsX3NpemUgPCAwIHRoZW4gY2h1bmtfc2l6ZSBlbHNlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICBpZiBpbml0aWFsX3NpemUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIGluaXRpYWxfc2l6ZVxuICAgIGVsc2VcbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgbnJlYWQgPSByZWFkX3VwdG8gaWMgYnVmIDAgaW5pdGlhbF9zaXplIGluXG4gIGlmIG5yZWFkIDwgaW5pdGlhbF9zaXplIHRoZW4gKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBwYXJ0aWFsbHkgZmlsbGVkICopXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCBucmVhZFxuICBlbHNlIGJlZ2luICgqIG5yZWFkID0gaW5pdGlhbF9zaXplLCBtYXliZSBFT0YgcmVhY2hlZCAqKVxuICAgIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgICAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIGlzIGNvbXBsZXRlbHkgZmlsbGVkICopXG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gICAgfCBjIC0+XG4gICAgICAgICgqIEVPRiBub3QgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYnVmIG9mcyA9XG4gICAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgb2ZzIGNodW5rX3NpemUgaW5cbiAgICAgICAgICBsZXQgcmVtID0gQnl0ZXMubGVuZ3RoIGJ1ZiAtIG9mcyBpblxuICAgICAgICAgICgqIFtyZW1dIGNhbiBiZSA8IFtjaHVua19zaXplXSBpZiBidWZmZXIgc2l6ZSBjbG9zZSB0b1xuICAgICAgICAgICAgIFtTeXMubWF4X3N0cmluZ19sZW5ndGhdICopXG4gICAgICAgICAgbGV0IHIgPSByZWFkX3VwdG8gaWMgYnVmIG9mcyByZW0gaW5cbiAgICAgICAgICBpZiByIDwgcmVtIHRoZW4gKCogRU9GIHJlYWNoZWQgKilcbiAgICAgICAgICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgKG9mcyArIHIpXG4gICAgICAgICAgZWxzZSAoKiByID0gcmVtICopXG4gICAgICAgICAgICBsb29wIGJ1ZiAob2ZzICsgcmVtKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBucmVhZCAoY2h1bmtfc2l6ZSArIDEpIGluXG4gICAgICAgIEJ5dGVzLnNldCBidWYgbnJlYWQgYztcbiAgICAgICAgbG9vcCBidWYgKG5yZWFkICsgMSlcbiAgZW5kXG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IG91dF9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9vdXRfYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5fb3V0XG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9vdXRfZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgb2MgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyIG9jKVxuICAgIChmdW4gKCkgLT4gZiBvYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dF9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0IHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnJcbmxldCBmbHVzaCA9IFN0ZGxpYi5mbHVzaFxubGV0IGZsdXNoX2FsbCA9IFN0ZGxpYi5mbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IFN0ZGxpYi5vdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmdcbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX291dFxuXG5leHRlcm5hbCBzZXRfYnVmZmVyZWQgOiB0IC0+IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZXRfYnVmZmVyZWRcIlxuXG5leHRlcm5hbCBpc19idWZmZXJlZCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9pc19idWZmZXJlZFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IC4uXG5leHRlcm5hbCBwZXJmb3JtIDogJ2EgdCAtPiAnYSA9IFwiJXBlcmZvcm1cIlxuXG50eXBlIGV4biArPSBVbmhhbmRsZWQ6ICdhIHQgLT4gZXhuXG5leGNlcHRpb24gQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFxuXG5sZXQgKCkgPVxuICBsZXQgcHJpbnRlciA9IGZ1bmN0aW9uXG4gICAgfCBVbmhhbmRsZWQgeCAtPlxuICAgICAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCJTdGRsaWIuRWZmZWN0LlVuaGFuZGxlZCglcylcIlxuICAgICAgICAgICAgKFByaW50ZXhjLnN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgQEAgT2JqLnJlcHIgeClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSBtc2dcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIHByaW50ZXJcblxuKCogUmVnaXN0ZXIgdGhlIGV4Y2VwdGlvbnMgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gYWNjZXNzIGl0ICopXG50eXBlIF8gdCArPSBTaG91bGRfbm90X3NlZV90aGlzX18gOiB1bml0IHRcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LlVuaGFuZGxlZFwiXG4gICAgICAgICAgKFVuaGFuZGxlZCBTaG91bGRfbm90X3NlZV90aGlzX18pXG5sZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCJcbiAgICAgICAgICBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbnR5cGUgKCdhLCAnYikgc3RhY2tcblxuZXh0ZXJuYWwgcmVzdW1lIDogKCdhLCAnYikgc3RhY2sgLT4gKCdjIC0+ICdhKSAtPiAnYyAtPiAnYiA9IFwiJXJlc3VtZVwiXG5leHRlcm5hbCBydW5zdGFjayA6ICgnYSwgJ2IpIHN0YWNrIC0+ICgnYyAtPiAnYSkgLT4gJ2MgLT4gJ2IgPSBcIiVydW5zdGFja1wiXG5cbm1vZHVsZSBEZWVwID0gc3RydWN0XG5cbiAgdHlwZSAoJ2EsJ2IpIGNvbnRpbnVhdGlvblxuICB0eXBlIGxhc3RfZmliZXJcblxuICBleHRlcm5hbCB0YWtlX2NvbnRfbm9leGMgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gKCdhLCAnYikgc3RhY2sgPVxuICAgIFwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXCIgW0BAbm9hbGxvY11cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcblxuICBsZXQgY29udGludWUgayB2ID0gcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biB4IC0+IHgpIHZcblxuICBsZXQgZGlzY29udGludWUgayBlID0gcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+IHJhaXNlIGUpIGVcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayBlIGJ0ID0gcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+XG4gICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidCkgZVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgbWF0Y2hfd2l0aCBjb21wIGFyZyBoYW5kbGVyID1cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT4gZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBzID0gYWxsb2Nfc3RhY2sgaGFuZGxlci5yZXRjIGhhbmRsZXIuZXhuYyBlZmZjIGluXG4gICAgcnVuc3RhY2sgcyBjb21wIGFyZ1xuXG4gIHR5cGUgJ2EgZWZmZWN0X2hhbmRsZXIgPVxuICAgIHsgZWZmYzogJ2IuICdiIHQgLT4gKCgnYiwnYSkgY29udGludWF0aW9uIC0+ICdhKSBvcHRpb24gfVxuXG4gIGxldCB0cnlfd2l0aCBjb21wIGFyZyBoYW5kbGVyID1cbiAgICBsZXQgZWZmYycgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+IGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIChmdW4geCAtPiB4KSAoZnVuIGUgLT4gcmFpc2UgZSkgZWZmYycgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcblxubW9kdWxlIFNoYWxsb3cgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG4gIHR5cGUgbGFzdF9maWJlclxuXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG5cblxuICBsZXQgZmliZXIgOiB0eXBlIGEgYi4gKGEgLT4gYikgLT4gKGEsIGIpIGNvbnRpbnVhdGlvbiA9IGZ1biBmIC0+XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0IHR5cGUgXyB0ICs9IEluaXRpYWxfc2V0dXBfXyA6IGEgdCBlbmQgaW5cbiAgICBsZXQgZXhjZXB0aW9uIEUgb2YgKGEsYikgY29udGludWF0aW9uIGluXG4gICAgbGV0IGYnICgpID0gZiAocGVyZm9ybSBNLkluaXRpYWxfc2V0dXBfXykgaW5cbiAgICBsZXQgZXJyb3IgXyA9IGZhaWx3aXRoIFwiaW1wb3NzaWJsZVwiIGluXG4gICAgbGV0IGVmZmMgZWZmIGsgX2xhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggZWZmIHdpdGhcbiAgICAgIHwgTS5Jbml0aWFsX3NldHVwX18gLT4gcmFpc2Vfbm90cmFjZSAoRSBrKVxuICAgICAgfCBfIC0+IGVycm9yICgpXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGVycm9yIGVycm9yIGVmZmMgaW5cbiAgICBtYXRjaCBydW5zdGFjayBzIGYnICgpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFIGsgLT4ga1xuICAgIHwgXyAtPiBlcnJvciAoKVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdhKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgdXBkYXRlX2hhbmRsZXIgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+XG4gICAgKCdiIC0+ICdjKSAtPlxuICAgIChleG4gLT4gJ2MpIC0+XG4gICAgKCdkIHQgLT4gKCdkLCdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYykgLT5cbiAgICAoJ2EsJ2MpIHN0YWNrID0gXCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBjb250aW51ZV9nZW4gayByZXN1bWVfZnVuIHYgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+IGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSB1cGRhdGVfaGFuZGxlciBrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJlc3VtZSBzdGFjayByZXN1bWVfZnVuIHZcblxuICBsZXQgY29udGludWVfd2l0aCBrIHYgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biB4IC0+IHgpIHYgaGFuZGxlclxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gcmFpc2UgZSkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIGsgdiBidCBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidCkgdiBoYW5kbGVyXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcbiIsIltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCogYmxpdF9zdHJpbmcgZG9lc24ndCBleGlzdCBpbiBbU3RkTGFiZWxzLkJ5dGVzXS4uLiAgKilcbmxldCBieXRlc19ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIEJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuOztcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gRm9ybWF0XG5cbigqKiBUeXBlIG9mIFMtZXhwcmVzc2lvbnMgKilcbnR5cGUgdCA9XG4gIHwgQXRvbSBvZiBzdHJpbmdcbiAgfCBMaXN0IG9mIHQgbGlzdFxuXG5sZXQgc2V4cF9vZl90IHQgPSB0XG5sZXQgdF9vZl9zZXhwIHQgPSB0XG5cbmxldCByZWMgY29tcGFyZV9saXN0IGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCByZXMgPSBjb21wYXJlIHggeSBpblxuICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgY29tcGFyZV9saXN0IHhzIHlzXG5cbmFuZCBjb21wYXJlIGEgYiA9XG4gIGlmIGEgPT0gYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBBdG9tIGEsIEF0b20gYiAtPiBTdHJpbmcuY29tcGFyZSBhIGJcbiAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICB8IExpc3QgYSwgTGlzdCBiIC0+IGNvbXBhcmVfbGlzdCBhIGIpXG47O1xuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyBvZiB0XG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiB0XG5cbm1vZHVsZSBQcmludGluZyA9IHN0cnVjdFxuICAoKiBEZWZhdWx0IGluZGVudGF0aW9uIGxldmVsIGZvciBodW1hbi1yZWFkYWJsZSBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCBkZWZhdWx0X2luZGVudCA9IHJlZiAxXG5cbiAgKCogRXNjYXBpbmcgb2Ygc3RyaW5ncyB1c2VkIGFzIGF0b21zIGluIFMtZXhwcmVzc2lvbnMgKilcblxuICBsZXQgbXVzdF9lc2NhcGUgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZW4gPSAwXG4gICAgfHxcbiAgICBsZXQgcmVjIGxvb3Agc3RyIGl4ID1cbiAgICAgIG1hdGNoIHN0ci5baXhdIHdpdGhcbiAgICAgIHwgJ1wiJyB8ICcoJyB8ICcpJyB8ICc7JyB8ICdcXFxcJyAtPiB0cnVlXG4gICAgICB8ICd8JyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICcjJyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICcjJyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICd8JyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICdcXDAwMCcgLi4gJ1xcMDMyJyB8ICdcXDEyNycgLi4gJ1xcMjU1JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gaXggPiAwICYmIGxvb3Agc3RyIChpeCAtIDEpXG4gICAgaW5cbiAgICBsb29wIHN0ciAobGVuIC0gMSlcbiAgOztcblxuICBsZXQgZXNjYXBlZCBzID1cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG5cbiAgICAgIDo9ICFuXG4gICAgICAgICArXG4gICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgICAgfCBfIC0+IDRcbiAgICBkb25lO1xuICAgIGlmICFuID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcycgPSBCeXRlcy5jcmVhdGUgIW4gaW5cbiAgICAgIG4gOj0gMDtcbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgICAgfCAnICcgLi4gJ34nIGFzIGMgLT4gQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgbGV0IGEgPSBDaGFyLmNvZGUgYyBpblxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwIG1vZCAxMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSBtb2QgMTApKSkpO1xuICAgICAgICBpbmNyIG5cbiAgICAgIGRvbmU7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMnKVxuICA7O1xuXG4gIGxldCBlc2Nfc3RyIHN0ciA9XG4gICAgbGV0IGVzdHIgPSBlc2NhcGVkIHN0ciBpblxuICAgIGxldCBlbGVuID0gU3RyaW5nLmxlbmd0aCBlc3RyIGluXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAoZWxlbiArIDIpIGluXG4gICAgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYzplc3RyIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6MSB+bGVuOmVsZW47XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgMCAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIChlbGVuICsgMSkgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICA7O1xuXG4gIGxldCBpbmRleF9vZl9uZXdsaW5lIHN0ciBzdGFydCA9XG4gICAgdHJ5IFNvbWUgKFN0cmluZy5pbmRleF9mcm9tIHN0ciBzdGFydCAnXFxuJykgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggZW5kX3Bvc19vcHQgPVxuICAgIGxldCBlbmRfcG9zID1cbiAgICAgIG1hdGNoIGVuZF9wb3Nfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgfCBTb21lIGVuZF9wb3MgLT4gZW5kX3Bvc1xuICAgIGluXG4gICAgU3RyaW5nLnN1YiBzdHIgfnBvczppbmRleCB+bGVuOihlbmRfcG9zIC0gaW5kZXgpXG4gIDs7XG5cbiAgbGV0IGlzX29uZV9saW5lIHN0ciA9XG4gICAgbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgaW5kZXggLT4gaW5kZXggKyAxID0gU3RyaW5nLmxlbmd0aCBzdHJcbiAgOztcblxuICBsZXQgcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0ciA9XG4gICAgaWYgbm90IChtdXN0X2VzY2FwZSBzdHIpXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIHN0clxuICAgIGVsc2UgaWYgaXNfb25lX2xpbmUgc3RyXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIChlc2Nfc3RyIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpbmRleCA9XG4gICAgICAgIGxldCBuZXh0X25ld2xpbmUgPSBpbmRleF9vZl9uZXdsaW5lIHN0ciBpbmRleCBpblxuICAgICAgICBsZXQgbmV4dF9saW5lID0gZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggbmV4dF9uZXdsaW5lIGluXG4gICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY2FwZWQgbmV4dF9saW5lKTtcbiAgICAgICAgbWF0Y2ggbmV4dF9uZXdsaW5lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBuZXdsaW5lX2luZGV4IC0+XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxcIjtcbiAgICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXG5cIjtcbiAgICAgICAgICBsb29wIChuZXdsaW5lX2luZGV4ICsgMSlcbiAgICAgIGluXG4gICAgICBwcF9vcGVuX2JveCBwcGYgMDtcbiAgICAgICgqIHRoZSBsZWFkaW5nIHNwYWNlIGlzIHRvIGxpbmUgdXAgdGhlIGxpbmVzICopXG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFxcXCJcIjtcbiAgICAgIGxvb3AgMDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFwiXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpKVxuICA7O1xuXG4gIGxldCBtYWNoX21heWJlX2VzY19zdHIgc3RyID0gaWYgbXVzdF9lc2NhcGUgc3RyIHRoZW4gZXNjX3N0ciBzdHIgZWxzZSBzdHJcblxuICAoKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmb3JtYXR0ZXJzICopXG5cbiAgbGV0IHJlYyBwcF9odW1faW5kZW50IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0clxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfb3Blbl9ib3ggcHBmIGluZGVudDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgTGlzdCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIlxuXG4gIGFuZCBwcF9odW1fcmVzdCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgcHBfcHJpbnRfc3BhY2UgcHBmICgpO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKVxuICA7O1xuXG4gIGxldCByZWMgcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFwiO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHInO1xuICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0O1xuICAgICAgZmFsc2VcbiAgICB8IExpc3QgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiO1xuICAgICAgZmFsc2VcblxuICBhbmQgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdFxuICAgIHwgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIlxuICA7O1xuXG4gIGxldCBwcF9odW0gcHBmIHNleHAgPSBwcF9odW1faW5kZW50ICFkZWZhdWx0X2luZGVudCBwcGYgc2V4cFxuICBsZXQgcHBfbWFjaCBwcGYgc2V4cCA9IGlnbm9yZSAocHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgc2V4cClcbiAgbGV0IHBwID0gcHBfbWFjaFxuXG4gICgqIFNleHAgc2l6ZSAqKVxuXG4gIGxldCByZWMgc2l6ZV9sb29wICgodiwgYykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiB2ICsgMSwgYyArIFN0cmluZy5sZW5ndGggc3RyXG4gICAgfCBMaXN0IGxzdCAtPiBMaXN0LmZvbGRfbGVmdCBsc3QgfmluaXQ6YWNjIH5mOnNpemVfbG9vcFxuICA7O1xuXG4gIGxldCBzaXplIHNleHAgPSBzaXplX2xvb3AgKDAsIDApIHNleHBcblxuICAoKiBCdWZmZXIgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fYnVmZmVyX2h1bSB+YnVmID8oaW5kZW50ID0gIWRlZmF1bHRfaW5kZW50KSBzZXhwID1cbiAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWFAP1wiIChwcF9odW1faW5kZW50IGluZGVudCkgc2V4cFxuICA7O1xuXG4gIGxldCB0b19idWZmZXJfbWFjaCB+YnVmIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gIGxldCB0b19idWZmZXIgPSB0b19idWZmZXJfbWFjaFxuXG4gIGxldCB0b19idWZmZXJfZ2VuIH5idWYgfmFkZF9jaGFyIH5hZGRfc3RyaW5nIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBhZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICAoKiBUaGUgbWF4aW11bSBzaXplIG9mIGEgdGhpbmcgb24gdGhlIG1pbm9yIGhlYXAgaXMgMjU2IHdvcmRzLlxuICAgICBQcmV2aW91c2x5LCB0aGlzIHNpemUgb2YgdGhlIHJldHVybmVkIGJ1ZmZlciBoZXJlIHdhcyA0MDk2IGJ5dGVzLCB3aGljaFxuICAgICBjYXVzZWQgdGhlIEJ1ZmZlciB0byBiZSBhbGxvY2F0ZWQgb24gdGhlICptYWpvciogaGVhcCBldmVyeSB0aW1lLlxuXG4gICAgIEFjY29yZGluZyB0byBhIHNpbXBsZSBiZW5jaG1hcmsgYnkgUm9uLCB3ZSBjYW4gaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3JcbiAgICAgc21hbGwgcy1leHByZXNzaW9ucyBieSBhIGZhY3RvciBvZiB+NCBpZiB3ZSBvbmx5IGFsbG9jYXRlIDEwMjQgYnl0ZXNcbiAgICAgKDEyOCB3b3JkcyArIHNvbWUgc21hbGwgb3ZlcmhlYWQpIHdvcnRoIG9mIGJ1ZmZlciBpbml0aWFsbHkuICBBbmQgb25lXG4gICAgIGNhbiBhcmd1ZSB0aGF0IGlmIGl0J3MgZnJlZSB0byBhbGxvY2F0ZSBzdHJpbmdzIHNtYWxsZXIgdGhhbiAyNTYgd29yZHMsXG4gICAgIGxhcmdlIHMtZXhwcmVzc2lvbnMgcmVxdWlyaW5nIGxhcmdlciBleHBlbnNpdmUgYnVmZmVycyB3b24ndCBub3RpY2VcbiAgICAgdGhlIGV4dHJhIHR3byBkb3VibGluZ3MgZnJvbSAxMDI0IGJ5dGVzIHRvIDIwNDggYW5kIDQwOTYuIEFuZCBlc3BlY2lhbGx5XG4gICAgIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcHBsaWNhdGlvbnMgdG8gYWx3YXlzIHBhc3MgaW4gYSBsYXJnZXIgYnVmZmVyIHRvXG4gICAgIHVzZS4gKilcbiAgbGV0IGJ1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgMTAyNFxuXG4gICgqIFN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19zdHJpbmdfaHVtID9pbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHJcbiAgICAgIHdoZW4gbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBfIC0+IGZhbHNlIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9odW0gP2luZGVudCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19tYWNoID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX21hY2hcbmVuZFxuXG5pbmNsdWRlIFByaW50aW5nXG5cbmxldCBvZl9mbG9hdF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xubGV0IG9mX2ludF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFByaW50aW5nXG5lbmRcblxubGV0IG1lc3NhZ2UgbmFtZSBmaWVsZHMgPVxuICBsZXQgcmVjIGNvbnZfZmllbGRzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCAoZm5hbWUsIGZzZXhwKSA6OiByZXN0IC0+XG4gICAgICAobWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgIHwgXCJcIiAtPiBmc2V4cCA6OiBjb252X2ZpZWxkcyByZXN0XG4gICAgICAgfCBfIC0+IExpc3QgWyBBdG9tIGZuYW1lOyBmc2V4cCBdIDo6IGNvbnZfZmllbGRzIHJlc3QpXG4gIGluXG4gIExpc3QgKEF0b20gbmFtZSA6OiBjb252X2ZpZWxkcyBmaWVsZHMpXG47O1xuIiwiKCoqIFJlcHJlc2VudGF0aW9uIG9mIFMtZXhwcmVzc2lvbiBncmFtbWFycyAqKVxuXG4oKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIHJlcHJlc2VudGF0aW9uIGZvciBzLWV4cHJlc3Npb24gZ3JhbW1hcnMuIFVzaW5nIHBweF9zZXhwX2NvbnZcbiAgICBhbmQgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHByb2R1Y2VzIGEgZ3JhbW1hciB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGVyaXZlZFxuICAgIFtvZl9zZXhwXSBmb3IgYSBnaXZlbiB0eXBlLlxuXG4gICAgQXMgd2l0aCBvdGhlciBkZXJpdmVkIGRlZmluaXRpb25zLCBwb2x5bW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFcbiAgICBncmFtbWFyIGZvciBlYWNoIHR5cGUgYXJndW1lbnQgYW5kIHByb2R1Y2VzIGEgZ3JhbW1hciBmb3IgdGhlIG1vbm9tb3JwaGl6ZWQgdHlwZS5cblxuICAgIE1vbm9tb3JwaGljIHR5cGVzIGRlcml2ZSBhIGdyYW1tYXIgZGlyZWN0bHkuIFRvIGF2b2lkIHRvcC1sZXZlbCBzaWRlIGVmZmVjdHMsXG4gICAgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHdyYXBzIGdyYW1tYXJzIGluIHRoZSBbTGF6eV0gY29uc3RydWN0b3IgYXMgbmVlZGVkLlxuXG4gICAgVGhpcyB0eXBlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lIGFzIG91ciBuZWVkcyBmb3IgZXhwcmVzc2l2ZSBncmFtbWFycyBjaGFuZ2UuIFdlIHdpbGxcbiAgICBhdHRlbXB0IHRvIG1ha2UgY2hhbmdlcyBiYWNrd2FyZC1jb21wYXRpYmxlLCBvciBhdCBsZWFzdCBwcm92aWRlIGEgcmVhc29uYWJsZSB1cGdyYWRlXG4gICAgcGF0aC4gKilcblxuW0BAQHdhcm5pbmcgXCItMzBcIl0gKCogYWxsb3cgZHVwbGljYXRlIGZpZWxkIG5hbWVzICopXG5cbigqKiBHcmFtbWFyIG9mIGEgc2V4cC4gKilcbnR5cGUgZ3JhbW1hciA9XG4gIHwgQW55IG9mIHN0cmluZyAoKiogYWNjZXB0cyBhbnkgc2V4cDsgc3RyaW5nIGlzIGEgdHlwZSBuYW1lIGZvciBodW1hbiByZWFkYWJpbGl0eSAqKVxuICB8IEJvb2wgKCoqIGFjY2VwdHMgdGhlIGF0b21zIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiwgbW9kdWxvIGNhcGl0YWxpemF0aW9uICopXG4gIHwgQ2hhciAoKiogYWNjZXB0cyBhbnkgc2luZ2xlLWNoYXJhY3RlciBhdG9tICopXG4gIHwgSW50ZWdlciAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBpbnRlZ2VyIHN5bnRheCwgcmVnYXJkbGVzcyBvZiBiaXQgd2lkdGggKilcbiAgfCBGbG9hdCAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBmbG9hdCBzeW50YXggKilcbiAgfCBTdHJpbmcgKCoqIGFjY2VwdHMgYW55IGF0b20gKilcbiAgfCBPcHRpb24gb2YgZ3JhbW1hciAoKiogYWNjZXB0cyBhbiBvcHRpb24sIGJvdGggW05vbmVdIHZzIFtTb21lIF9dIGFuZCBbKCldIHZzIFsoXyldLiAqKVxuICB8IExpc3Qgb2YgbGlzdF9ncmFtbWFyICgqKiBhY2NlcHRzIGEgbGlzdCAqKVxuICB8IFZhcmlhbnQgb2YgdmFyaWFudCAoKiogYWNjZXB0cyBjbGF1c2VzIGtleWVkIGJ5IGEgbGVhZGluZyBvciBzb2xlIGF0b20gKilcbiAgfCBVbmlvbiBvZiBncmFtbWFyIGxpc3QgKCoqIGFjY2VwdHMgYSBzZXhwIGlmIGFueSBvZiB0aGUgbGlzdGVkIGdyYW1tYXJzIGFjY2VwdHMgaXQgKilcbiAgfCBUYWdnZWQgb2YgZ3JhbW1hciB3aXRoX3RhZ1xuICAoKiogYW5ub3RhdGVzIGEgZ3JhbW1hciB3aXRoIGEgY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyICopXG4gIHwgVHl2YXIgb2Ygc3RyaW5nXG4gICgqKiBOYW1lIG9mIGEgdHlwZSB2YXJpYWJsZSwgZS5nLiBbVHl2YXIgXCJhXCJdIGZvciBbJ2FdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgYm9keSBvZlxuICAgICAgdGhlIGlubmVybW9zdCBlbmNsb3NpbmcgW2RlZm5dIGRlZmluZXMgYSBjb3JyZXNwb25kaW5nIHR5cGUgdmFyaWFibGUuICopXG4gIHwgVHljb24gb2Ygc3RyaW5nICogZ3JhbW1hciBsaXN0XG4gICgqKiBUeXBlIGNvbnN0cnVjdG9yIGFwcGxpZWQgdG8gYXJndW1lbnRzLiBGb3IgZXhhbXBsZSwgW1R5Y29uIChcImxpc3RcIiwgWyBJbnRlZ2VyIF0pXVxuICAgICAgcmVwcmVzZW50cyBbaW50IGxpc3RdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyBbUmVjdXJzaXZlXVxuICAgICAgZ3JhbW1hciBkZWZpbmVzIGEgY29ycmVzcG9uZGluZyB0eXBlIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlY3Vyc2l2ZSBvZiBncmFtbWFyICogZGVmbiBsaXN0XG4gICgqKiBbUmVjdXJzaXZlIChncmFtbWFyLCBkZWZpbml0aW9ucyldIGFsbG93cyBbZ3JhbW1hcl0gdG8gcmVmZXIgdG8gdHlwZSBjb25zdHJ1Y3RvcnNcbiAgICAgIGZyb20gdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSBbZGVmaW5pdGlvbnNdLiBUaGUgZGVmaW5pdGlvbnMgbWF5IGFsc28gcmVmZXIgdG8gZWFjaFxuICAgICAgb3RoZXJzJyB0eXBlIGNvbnN0cnVjdG9ycy5cblxuICAgICAgT3JkaW5hcmlseSwgW2dyYW1tYXJdIGl0c2VsZiBpcyBqdXN0IGEgW1R5Y29uXSBhcmd1bWVudCwgYWx0aG91Z2ggdGVjaG5pY2FsbHkgaXQgY2FuXG4gICAgICBiZSBhbnkgZ3JhbW1hci5cblxuICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgZGVmaW5lIGEgYmluYXJ5IHRyZWUgcGFyYW1ldGVyaXplZCBieSBhIHR5cGVcbiAgICAgIHN0b3JlZCBhdCBpdHMgbGVhdmVzLlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgZGVmbnMgPVxuICAgICAgICAgIFsgeyB0eWNvbiA9IFwidHJlZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiVHJlZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJsZWFmXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOyB7IHR5Y29uID0gXCJub2RlXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gTGlzdCAoTWFueSAoVHljb24gXCJ0cmVlXCIsIFtUeXZhciBcImFcIl0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibGVhZlwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IFtUeXZhciBcImFcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIDs7XG4gICAgICBdfVxuXG4gICAgICBOb3JtYWxseSwgdGhlIHR5cGUgb2YgYSB0cmVlIHN0b3JpbmcgaW50ZWdlcnMgd291bGQgYmUgd3JpdHRlbiBsaWtlIHRoaXM6XG5cbiAgICAgIHtbXG4gICAgICAgIFJlY3Vyc2l2ZSAoVHljb24gKFwidHJlZVwiLCBbIEludGVnZXIgXSksIGRlZm5zKVxuICAgICAgXX1cblxuICAgICAgSXQgaXMgZXF1aXZhbGVudCwgdGhvdWdoIG5lZWRsZXNzbHkgdmVyYm9zZSwgdG8gcmVwbGFjZSB0aGUgW1R5Y29uXSByZWZlcmVuY2Ugd2l0aFxuICAgICAgdGhlIGdyYW1tYXIgb2YgW1widHJlZVwiXSwgc3Vic3RpdHV0aW5nIFtJbnRlZ2VyXSBmb3IgW1R5dmFyIFwiYVwiXTpcblxuICAgICAge1tcbiAgICAgICAgUmVjdXJzaXZlXG4gICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgIHsgbmFtZV9raW5kID0gQ2FwaXRhbGl6ZWRcbiAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDsgeyBuYW1lID0gXCJUcmVlXCJcbiAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICwgZGVmbnMgKVxuICAgICAgXX1cbiAgKilcbiAgfCBMYXp5IG9mIGdyYW1tYXIgbGF6eV90XG4gICgqKiBMYXppbHkgY29tcHV0ZWQgZ3JhbW1hci4gVXNlIFtMYXp5XSB0byBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLiBUbyBkZWZpbmVcbiAgICAgIHJlY3Vyc2l2ZSBncmFtbWFycywgdXNlIFtSZWN1cnNpdmVdIGluc3RlYWQuICopXG5cbigqKiBHcmFtbWFyIG9mIGEgbGlzdCBvZiBzZXhwcy4gKilcbmFuZCBsaXN0X2dyYW1tYXIgPVxuICB8IEVtcHR5ICgqKiBhY2NlcHRzIGFuIGVtcHR5IGxpc3Qgb2Ygc2V4cHMgKilcbiAgfCBDb25zIG9mIGdyYW1tYXIgKiBsaXN0X2dyYW1tYXJcbiAgKCoqIGFjY2VwdHMgYSBub24tZW1wdHkgbGlzdCB3aXRoIGhlYWQgYW5kIHRhaWwgbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXJzICopXG4gIHwgTWFueSBvZiBncmFtbWFyICgqKiBhY2NlcHRzIHplcm8gb3IgbW9yZSBzZXhwcywgZWFjaCBtYXRjaGluZyB0aGUgZ2l2ZW4gZ3JhbW1hciAqKVxuICB8IEZpZWxkcyBvZiByZWNvcmQgKCoqIGFjY2VwdHMgc2V4cHMgcmVwcmVzZW50aW5nIGZpZWxkcyBvZiBhIHJlY29yZCAqKVxuXG4oKiogQ2FzZSBzZW5zaXRpdml0eSBvcHRpb25zIGZvciBuYW1lcyBvZiB2YXJpYW50IGNvbnN0cnVjdG9ycy4gKilcbmFuZCBjYXNlX3NlbnNpdGl2aXR5ID1cbiAgfCBDYXNlX2luc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFVzZWQgZm9yIGN1c3RvbSBwYXJzZXJzLiAqKVxuICB8IENhc2Vfc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLiBVc2VkIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUgZm9yIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGNhc2Ugc2Vuc2l0aXZlIGFmdGVyd2FyZC5cbiAgICAgIFVzZWQgZm9yIHJlZ3VsYXIgdmFyaWFudHMuICopXG5cbigqKiBHcmFtbWFyIG9mIHZhcmlhbnRzLiBBY2NlcHRzIGFueSBzZXhwIG1hdGNoaW5nIG9uZSBvZiB0aGUgY2xhdXNlcy4gKilcbmFuZCB2YXJpYW50ID1cbiAgeyBjYXNlX3NlbnNpdGl2aXR5IDogY2FzZV9zZW5zaXRpdml0eVxuICA7IGNsYXVzZXMgOiBjbGF1c2Ugd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSBzaW5nbGUgdmFyaWFudCBjbGF1c2UuIEFjY2VwdHMgc2V4cHMgYmFzZWQgb24gdGhlIFtjbGF1c2Vfa2luZF0uICopXG5hbmQgY2xhdXNlID1cbiAgeyBuYW1lIDogc3RyaW5nXG4gIDsgY2xhdXNlX2tpbmQgOiBjbGF1c2Vfa2luZFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlJ3MgY29udGVudHMuIFtBdG9tX2NsYXVzZV0gYWNjZXB0cyBhbiBhdG9tIG1hdGNoaW5nXG4gICAgdGhlIGNsYXVzZSdzIG5hbWUuIFtMaXN0X2NsYXVzZV0gYWNjZXB0cyBhIGxpc3Qgd2hvc2UgaGVhZCBpcyBhbiBhdG9tIG1hdGNoaW5nIHRoZVxuICAgIGNsYXVzZSdzIG5hbWUgYW5kIHdob3NlIHRhaWwgbWF0Y2hlcyBbYXJnc10uIFRoZSBjbGF1c2UncyBuYW1lIGlzIG1hdGNoZWQgbW9kdWxvIHRoZVxuICAgIHZhcmlhbnQncyBbbmFtZV9raW5kXS4gKilcbmFuZCBjbGF1c2Vfa2luZCA9XG4gIHwgQXRvbV9jbGF1c2VcbiAgfCBMaXN0X2NsYXVzZSBvZiB7IGFyZ3MgOiBsaXN0X2dyYW1tYXIgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZC4gQWNjZXB0cyBhbnkgbGlzdCBvZiBzZXhwcyBzcGVjaWZ5aW5nIGVhY2ggb2YgdGhlIGZpZWxkcyxcbiAgICByZWdhcmRsZXNzIG9mIG9yZGVyLiBJZiBbYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBzcGVjaWZpZWQsIGlnbm9yZXMgc2V4cHMgd2l0aCBuYW1lc1xuICAgIG5vdCBmb3VuZCBpbiBbZmllbGRzXS4gKilcbmFuZCByZWNvcmQgPVxuICB7IGFsbG93X2V4dHJhX2ZpZWxkcyA6IGJvb2xcbiAgOyBmaWVsZHMgOiBmaWVsZCB3aXRoX3RhZ19saXN0IGxpc3RcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZCBmaWVsZC4gQSBmaWVsZCBtdXN0IHNob3cgdXAgZXhhY3RseSBvbmNlIGluIGEgcmVjb3JkIGlmXG4gICAgW3JlcXVpcmVkXSwgb3IgYXQgbW9zdCBvbmNlIG90aGVyd2lzZS4gQWNjZXB0cyBhIGxpc3QgaGVhZGVkIGJ5IFtuYW1lXSBhcyBhbiBhdG9tLFxuICAgIGZvbGxvd2VkIGJ5IHNleHBzIG1hdGNoaW5nIFthcmdzXS4gKilcbmFuZCBmaWVsZCA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IHJlcXVpcmVkIDogYm9vbFxuICA7IGFyZ3MgOiBsaXN0X2dyYW1tYXJcbiAgfVxuXG4oKiogR3JhbW1hciB0YWdnZWQgd2l0aCBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIuICopXG5hbmQgJ2Egd2l0aF90YWcgPVxuICB7IGtleSA6IHN0cmluZ1xuICA7IHZhbHVlIDogU2V4cC50XG4gIDsgZ3JhbW1hciA6ICdhXG4gIH1cblxuYW5kICdhIHdpdGhfdGFnX2xpc3QgPVxuICB8IFRhZyBvZiAnYSB3aXRoX3RhZ19saXN0IHdpdGhfdGFnXG4gIHwgTm9fdGFnIG9mICdhXG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjdXJzaXZlIHR5cGUgZGVmaW5pdGlvbi4gTmFtZXMgdGhlIFt0eWNvbl0gYmVpbmcgZGVmaW5lZCwgYW5kIHRoZVxuICAgIFt0eXZhcnNdIGl0IHRha2VzIGFzIHBhcmFtZXRlcnMuIFNwZWNpZmllcyB0aGUgW2dyYW1tYXJdIG9mIHRoZSBbdHljb25dLiBUaGUgZ3JhbW1hclxuICAgIG1heSByZWZlciB0byBhbnkgb2YgdGhlIFt0eXZhcnNdLCBhbmQgdG8gYW55IG9mIHRoZSBbdHljb25dcyBmcm9tIHRoZSBzYW1lIHNldCBvZlxuICAgIFtSZWN1cnNpdmVdIGRlZmluaXRpb25zLiAqKVxuYW5kIGRlZm4gPVxuICB7IHR5Y29uIDogc3RyaW5nXG4gIDsgdHl2YXJzIDogc3RyaW5nIGxpc3RcbiAgOyBncmFtbWFyIDogZ3JhbW1hclxuICB9XG5cbigqKiBUb3AtbGV2ZWwgZ3JhbW1hciB0eXBlLiBIYXMgYSBwaGFudG9tIHR5cGUgcGFyYW1ldGVyIHRvIGFzc29jaWF0ZSBlYWNoIGdyYW1tYXIgd2l0aFxuICAgIHRoZSB0eXBlIGl0cyBzZXhwcyByZXByZXNlbnQuIFRoaXMgbWFrZXMgaXQgaGFyZGVyIHRvIGFwcGx5IGdyYW1tYXJzIHRvIHRoZSB3cm9uZ1xuICAgIHR5cGUsIHdoaWxlIGdyYW1tYXJzIGNhbiBzdGlsbCBiZSBlYXNpbHkgY29lcmNlZCB0byBhIG5ldyB0eXBlIGlmIG5lZWRlZC4gKilcbnR5cGUgXyB0ID0geyB1bnR5cGVkIDogZ3JhbW1hciB9IFtAQHVuYm94ZWRdXG5cbmxldCBjb2VyY2UgKHR5cGUgYSBiKSAoeyB1bnR5cGVkID0gXyB9IGFzIHQgOiBhIHQpIDogYiB0ID0gdFxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaXMgdXNlZCBmb3IgYWxsIHRhZ3MgZ2VuZXJhdGVkIGZyb20gZG9jIGNvbW1lbnRzLiAqKVxubGV0IGRvY19jb21tZW50X3RhZyA9IFwic2V4cF9ncmFtbWFyLmRvY19jb21tZW50XCJcbiIsImxldCB1bml0X3NleHBfZ3JhbW1hciA6IHVuaXQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBMaXN0IEVtcHR5IH1cbmxldCBib29sX3NleHBfZ3JhbW1hciA6IGJvb2wgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBCb29sIH1cbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cbmxldCBieXRlc19zZXhwX2dyYW1tYXIgOiBieXRlcyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgY2hhcl9zZXhwX2dyYW1tYXIgOiBjaGFyIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQ2hhciB9XG5sZXQgaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gRmxvYXQgfVxubGV0IGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyIDogaW50NjQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIDogbmF0aXZlaW50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgc2V4cF90X3NleHBfZ3JhbW1hciA6IFNleHAudCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIlNleHAudFwiIH1cbmxldCByZWZfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwX2dyYW1tYXIuY29lcmNlIGdyYW1tYXJcbmxldCBsYXp5X3Rfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwX2dyYW1tYXIuY29lcmNlIGdyYW1tYXJcblxubGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIG9wdGlvbiBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IE9wdGlvbiB1bnR5cGVkIH1cbjs7XG5cbmxldCBsaXN0X3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gbGlzdCBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKE1hbnkgdW50eXBlZCkgfVxuOztcblxubGV0IGFycmF5X3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gYXJyYXkgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBlbXB0eV9zZXhwX2dyYW1tYXIgOiBfIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxubGV0IG9wYXF1ZV9zZXhwX2dyYW1tYXIgPSBlbXB0eV9zZXhwX2dyYW1tYXJcbmxldCBmdW5fc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG4iLCIoKiBVdGlsaXR5IE1vZHVsZSBmb3IgUy1leHByZXNzaW9uIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4gUHJpbnRmXG5vcGVuIFNleHBcblxuKCogQ29udmVyc2lvbiBvZiBPQ2FtbC12YWx1ZXMgdG8gUy1leHByZXNzaW9ucyAqKVxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiAnJS4xN2cnIGlzIGd1YXJhbnRlZWQgdG8gYmUgcm91bmQtdHJpcHBhYmxlLlxuXG4gICAnJS4xNWcnIHdpbGwgYmUgcm91bmQtdHJpcHBhYmxlIGFuZCBub3QgaGF2ZSBub2lzZSBhdCB0aGUgbGFzdCBkaWdpdCBvciB0d28gZm9yIGEgZmxvYXRcbiAgIHdoaWNoIHdhcyBjb252ZXJ0ZWQgZnJvbSBhIGRlY2ltYWwgKHN0cmluZykgd2l0aCA8PSAxNSBzaWduaWZpY2FudCBkaWdpdHMuICBTbyBpdCdzXG4gICB3b3J0aCB0cnlpbmcgZmlyc3QgdG8gYXZvaWQgdGhpbmdzIGxpa2UgXCIzLjE0MDAwMDAwMDAwMDAwMDFcIi5cblxuICAgU2VlIGNvbW1lbnQgYWJvdmUgW3RvX3N0cmluZ19yb3VuZF90cmlwcGFibGVdIGluIHshQ29yZS5GbG9hdH0gZm9yXG4gICBkZXRhaWxlZCBleHBsYW5hdGlvbiBhbmQgZXhhbXBsZXMuICopXG5sZXQgZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgPVxuICByZWYgKGZ1biB4IC0+XG4gICAgbGV0IHkgPSBmb3JtYXRfZmxvYXQgXCIlLjE1R1wiIHggaW5cbiAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN0dcIiB4KVxuOztcblxubGV0IHJlYWRfb2xkX29wdGlvbl9mb3JtYXQgPSByZWYgdHJ1ZVxubGV0IHdyaXRlX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCBsaXN0X21hcCBmIGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGwgfmYpXG5sZXQgc2V4cF9vZl91bml0ICgpID0gTGlzdCBbXVxubGV0IHNleHBfb2ZfYm9vbCBiID0gQXRvbSAoc3RyaW5nX29mX2Jvb2wgYilcbmxldCBzZXhwX29mX3N0cmluZyBzdHIgPSBBdG9tIHN0clxubGV0IHNleHBfb2ZfYnl0ZXMgYnl0ZXMgPSBBdG9tIChCeXRlcy50b19zdHJpbmcgYnl0ZXMpXG5sZXQgc2V4cF9vZl9jaGFyIGMgPSBBdG9tIChTdHJpbmcubWFrZSAxIGMpXG5sZXQgc2V4cF9vZl9pbnQgbiA9IEF0b20gKHN0cmluZ19vZl9pbnQgbilcbmxldCBzZXhwX29mX2Zsb2F0IG4gPSBBdG9tICghZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgbilcbmxldCBzZXhwX29mX2ludDMyIG4gPSBBdG9tIChJbnQzMi50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX2ludDY0IG4gPSBBdG9tIChJbnQ2NC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX25hdGl2ZWludCBuID0gQXRvbSAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfcmVmIHNleHBfb2ZfX2EgcmYgPSBzZXhwX29mX19hICFyZlxubGV0IHNleHBfb2ZfbGF6eV90IHNleHBfb2ZfX2EgbHYgPSBzZXhwX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9fYSA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IHdoZW4gIXdyaXRlX29sZF9vcHRpb25fZm9ybWF0IC0+IExpc3QgWyBzZXhwX29mX19hIHggXVxuICB8IFNvbWUgeCAtPiBMaXN0IFsgQXRvbSBcInNvbWVcIjsgc2V4cF9vZl9fYSB4IF1cbiAgfCBOb25lIHdoZW4gIXdyaXRlX29sZF9vcHRpb25fZm9ybWF0IC0+IExpc3QgW11cbiAgfCBOb25lIC0+IEF0b20gXCJub25lXCJcbjs7XG5cbmxldCBzZXhwX29mX3BhaXIgc2V4cF9vZl9fYSBzZXhwX29mX19iIChhLCBiKSA9IExpc3QgWyBzZXhwX29mX19hIGE7IHNleHBfb2ZfX2IgYiBdXG5cbmxldCBzZXhwX29mX3RyaXBsZSBzZXhwX29mX19hIHNleHBfb2ZfX2Igc2V4cF9vZl9fYyAoYSwgYiwgYykgPVxuICBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGI7IHNleHBfb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgc2V4cF9vZl9saXN0IHNleHBfb2ZfX2EgbHN0ID0gTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBsc3QgfmY6c2V4cF9vZl9fYSkpXG5cbmxldCBzZXhwX29mX2FycmF5IHNleHBfb2ZfX2EgYXIgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5Lmxlbmd0aCBhciAtIDEgZG93bnRvIDAgZG9cbiAgICBsc3RfcmVmIDo9IHNleHBfb2ZfX2EgYXIuKGkpIDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCBzZXhwX29mX2hhc2h0Ymwgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWwgaHRibCA9XG4gIGxldCBjb2xsIH5rZXk6ayB+ZGF0YTp2IGFjYyA9IExpc3QgWyBzZXhwX29mX2tleSBrOyBzZXhwX29mX3ZhbCB2IF0gOjogYWNjIGluXG4gIExpc3QgKEhhc2h0YmwuZm9sZCBodGJsIH5pbml0OltdIH5mOmNvbGwpXG47O1xuXG5sZXQgc2V4cF9vZl9vcGFxdWUgXyA9IEF0b20gXCI8b3BhcXVlPlwiXG5sZXQgc2V4cF9vZl9mdW4gXyA9IEF0b20gXCI8ZnVuPlwiXG5cbigqIEV4Y2VwdGlvbiBjb252ZXJ0ZXIgcmVnaXN0cmF0aW9uIGFuZCBsb29rdXAgKilcblxubW9kdWxlIEV4bl9jb252ZXJ0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhlc2UgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgY29udGV4dC1zd2l0Y2hlc1xuICAgICBjYW5ub3QgaGFwcGVuIHVubGVzcyB0aGVyZSBpcyBhbiBhbGxvY2F0aW9uLiAgSXQgaXMgcmVhc29uYWJsZSB0byBleHBlY3RcbiAgICAgdGhhdCB0aGlzIHdpbGwgcmVtYWluIHRydWUgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUuICBUaGF0IHdheSB3ZVxuICAgICBhdm9pZCB1c2luZyBtdXRleGVzIGFuZCB0aHVzIGEgZGVwZW5kZW5jeSBvbiB0aGUgdGhyZWFkcyBsaWJyYXJ5LiAqKVxuXG4gICgqIEZhc3QgYW5kIGF1dG9tYXRpYyBleGNlcHRpb24gcmVnaXN0cmF0aW9uICopXG5cbiAgbW9kdWxlIFJlZ2lzdHJhdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHNleHBfb2ZfZXhuIDogZXhuIC0+IFNleHAudFxuICAgICAgOyAoKiBJZiBbcHJpbnRleGMgPSB0cnVlXSB0aGVuIHRoaXMgc2V4cCBjb252ZXJ0ZXIgaXMgdXNlZCBmb3IgUHJpbnRleGMudG9fc3RyaW5nICopXG4gICAgICAgIHByaW50ZXhjIDogYm9vbFxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgRXhuX3RhYmxlID0gRXBoZW1lcm9uLksxLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG5cbiAgICAgIGxldCBlcXVhbCA9ICggPT0gKVxuICAgICAgbGV0IGhhc2ggPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG4gICAgZW5kKVxuXG4gIGxldCB0aGVfZXhuX3RhYmxlIDogUmVnaXN0cmF0aW9uLnQgRXhuX3RhYmxlLnQgPSBFeG5fdGFibGUuY3JlYXRlIDE3XG5cbiAgKCogRXBoZW1lcm9ucyBhcmUgdXNlZCBzbyB0aGF0IFtzZXhwX29mX2V4bl0gY2xvc3VyZSBkb24ndCBrZWVwIHRoZVxuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgbGl2ZS4gKilcbiAgbGV0IGFkZCA/KHByaW50ZXhjID0gdHJ1ZSkgP2ZpbmFsaXNlOl8gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHNleHBfb2ZfZXhuID1cbiAgICBFeG5fdGFibGUuYWRkIHRoZV9leG5fdGFibGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHsgc2V4cF9vZl9leG47IHByaW50ZXhjIH1cbiAgOztcblxuICBsZXQgZmluZF9hdXRvIH5mb3JfcHJpbnRleGMgZXhuID1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhuIGluXG4gICAgbWF0Y2ggRXhuX3RhYmxlLmZpbmRfb3B0IHRoZV9leG5fdGFibGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9IC0+XG4gICAgICAobWF0Y2ggZm9yX3ByaW50ZXhjLCBwcmludGV4YyB3aXRoXG4gICAgICAgfCBmYWxzZSwgXyB8IF8sIHRydWUgLT4gU29tZSAoc2V4cF9vZl9leG4gZXhuKVxuICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3VuaXRfdGVzdHNfb25seSA9IHN0cnVjdFxuICAgIGxldCBzaXplICgpID0gKEV4bl90YWJsZS5zdGF0c19hbGl2ZSB0aGVfZXhuX3RhYmxlKS5udW1fYmluZGluZ3NcbiAgZW5kXG5lbmRcblxubGV0IHNleHBfb2ZfZXhuX29wdF9mb3JfcHJpbnRleGMgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4Yzp0cnVlIGV4blxubGV0IHNleHBfb2ZfZXhuX29wdCBleG4gPSBFeG5fY29udmVydGVyLmZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjOmZhbHNlIGV4blxuXG5sZXQgc2V4cF9vZl9leG4gZXhuID1cbiAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IGV4biB3aXRoXG4gIHwgTm9uZSAtPiBMaXN0IFsgQXRvbSAoUHJpbnRleGMudG9fc3RyaW5nIGV4bikgXVxuICB8IFNvbWUgc2V4cCAtPiBzZXhwXG47O1xuXG5sZXQgZXhuX3RvX3N0cmluZyBlID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX2V4biBlKVxuXG4oKiB7W2V4Y2VwdGlvbiBCbGFoIFtAQGRlcml2aW5nIHNleHBdXX0gZ2VuZXJhdGVzIGEgY2FsbCB0byB0aGUgZnVuY3Rpb25cbiAgIFtFeG5fY29udmVydGVyLmFkZF0gZGVmaW5lZCBpbiB0aGlzIGZpbGUuICBTbyB3ZSBhcmUgZ3VhcmFudGVkIHRoYXQgYXMgc29vbiBhcyB3ZVxuICAgbWFyayBhbiBleGNlcHRpb24gYXMgc2V4cGFibGUsIHRoaXMgbW9kdWxlIHdpbGwgYmUgbGlua2VkIGluIGFuZCB0aGlzIHByaW50ZXIgd2lsbCBiZVxuICAgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiAqKVxubGV0ICgpID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGV4biAtPlxuICAgIG1hdGNoIHNleHBfb2ZfZXhuX29wdF9mb3JfcHJpbnRleGMgZXhuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBzZXhwIC0+IFNvbWUgKFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgc2V4cCkpXG47O1xuXG5sZXQgcHJpbnRleGNfcHJlZmVyX3NleHAgZXhuID1cbiAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IGV4biB3aXRoXG4gIHwgTm9uZSAtPiBQcmludGV4Yy50b19zdHJpbmcgZXhuXG4gIHwgU29tZSBzZXhwIC0+IFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgc2V4cFxuOztcblxuKCogQ29udmVyc2lvbiBvZiBTLWV4cHJlc3Npb25zIHRvIE9DYW1sLXZhbHVlcyAqKVxuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IFNleHAuT2Zfc2V4cF9lcnJvclxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhjIHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoZXhjLCBzZXhwKSlcbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9IHJhaXNlIChPZl9zZXhwX2Vycm9yIChGYWlsdXJlIHdoYXQsIHNleHApKVxuXG5sZXQgdW5pdF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+ICgpXG4gIHwgQXRvbSBfIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJ1bml0X29mX3NleHA6IGVtcHR5IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGJvb2xfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSAoXCJ0cnVlXCIgfCBcIlRydWVcIikgLT4gdHJ1ZVxuICB8IEF0b20gKFwiZmFsc2VcIiB8IFwiRmFsc2VcIikgLT4gZmFsc2VcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImJvb2xfb2Zfc2V4cDogdW5rbm93biBzdHJpbmdcIiBzZXhwXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHN0cmluZ19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPiBzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcInN0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBieXRlc19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPiBCeXRlcy5vZl9zdHJpbmcgc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJieXRlc19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjaGFyX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPD4gMVxuICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBzdHJpbmcgbXVzdCBjb250YWluIG9uZSBjaGFyYWN0ZXIgb25seVwiIHNleHA7XG4gICAgc3RyLlswXVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiY2hhcl9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGludF9vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgZmxvYXRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiZmxvYXRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDMyX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQzMi5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQzMl9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50MzJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50NjRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IEludDY0Lm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludDY0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnQ2NF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IE5hdGl2ZWludC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJuYXRpdmVpbnRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm5hdGl2ZWludF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCByZWZfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPSByZWYgKGFfX29mX3NleHAgc2V4cClcbmxldCBsYXp5X3Rfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPSBMYXp5LmZyb21fdmFsIChhX19vZl9zZXhwIHNleHApXG5cbmxldCBvcHRpb25fb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBpZiAhcmVhZF9vbGRfb3B0aW9uX2Zvcm1hdFxuICB0aGVuIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgW10gfCBBdG9tIChcIm5vbmVcIiB8IFwiTm9uZVwiKSAtPiBOb25lXG4gICAgfCBMaXN0IFsgZWwgXSB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IHJlcHJlc2VudCBvcHRpb25hbCB2YWx1ZVwiIHNleHBcbiAgICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IG9ubHkgbm9uZSBjYW4gYmUgYXRvbVwiIHNleHApXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIEF0b20gKFwic29tZVwiIHwgXCJTb21lXCIpOyBlbCBdIC0+IFNvbWUgKGFfX29mX3NleHAgZWwpXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwXG4gICAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBsaXN0IG11c3QgYmUgKHNvbWUgZWwpXCIgc2V4cClcbjs7XG5cbmxldCBwYWlyX29mX3NleHAgYV9fb2Zfc2V4cCBiX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFsgYV9zZXhwOyBiX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgYSwgYlxuICB8IExpc3QgXyAtPlxuICAgIG9mX3NleHBfZXJyb3IgXCJwYWlyX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdHdvIGVsZW1lbnRzIG9ubHlcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJwYWlyX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHRyaXBsZV9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBjX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFsgYV9zZXhwOyBiX3NleHA7IGNfc2V4cCBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl9zZXhwIGFfc2V4cCBpblxuICAgIGxldCBiID0gYl9fb2Zfc2V4cCBiX3NleHAgaW5cbiAgICBsZXQgYyA9IGNfX29mX3NleHAgY19zZXhwIGluXG4gICAgYSwgYiwgY1xuICB8IExpc3QgXyAtPlxuICAgIG9mX3NleHBfZXJyb3IgXCJ0cmlwbGVfb2Zfc2V4cDogbGlzdCBtdXN0IGNvbnRhaW4gZXhhY3RseSB0aHJlZSBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGxpc3Rfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCByZXZfbHN0ID0gTGlzdC5yZXZfbWFwIGxzdCB+ZjphX19vZl9zZXhwIGluXG4gICAgTGlzdC5yZXYgcmV2X2xzdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwibGlzdF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBhcnJheV9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gW3x8XVxuICB8IExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3NleHAgaCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLihpKSA8LSBhX19vZl9zZXhwIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiYXJyYXlfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaGFzaHRibF9vZl9zZXhwIGtleV9vZl9zZXhwIHZhbF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgMCBpblxuICAgIGxldCBhY3QgPSBmdW5jdGlvblxuICAgICAgfCBMaXN0IFsga19zZXhwOyB2X3NleHAgXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl9zZXhwIGtfc2V4cCkgfmRhdGE6KHZhbF9vZl9zZXhwIHZfc2V4cClcbiAgICAgIHwgTGlzdCBfIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJoYXNodGJsX29mX3NleHA6IHR1cGxlIGxpc3QgbmVlZGVkXCIgc2V4cFxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBvcGFxdWVfb2Zfc2V4cCBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciBcIm9wYXF1ZV9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgc2V4cFxuOztcblxubGV0IGZ1bl9vZl9zZXhwIHNleHAgPSBvZl9zZXhwX2Vycm9yIFwiZnVuX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IGZ1bmN0aW9uIHZhbHVlc1wiIHNleHBcblxuKCogU2V4cCBHcmFtbWFycyAqKVxuXG5pbmNsdWRlIFNleHBfY29udl9ncmFtbWFyXG5cbigqIFJlZ2lzdGVyaW5nIGRlZmF1bHQgZXhjZXB0aW9uIHByaW50ZXJzICopXG5cbmxldCBnZXRfZmxjX2Vycm9yIG5hbWUgKGZpbGUsIGxpbmUsIGNocikgPSBBdG9tIChzcHJpbnRmIFwiJXMgJXM6JWQ6JWRcIiBuYW1lIGZpbGUgbGluZSBjaHIpXG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4YzpmYWxzZSB+ZmluYWxpc2U6ZmFsc2UgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGhhbmRsZXIpXG4gICAgWyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFzc2VydF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFzc2VydF9mYWlsdXJlIGFyZyAtPiBnZXRfZmxjX2Vycm9yIFwiQXNzZXJ0X2ZhaWx1cmVcIiBhcmdcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEV4aXRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRXhpdCAtPiBBdG9tIFwiRXhpdFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFbmRfb2ZfZmlsZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBFbmRfb2ZfZmlsZSAtPiBBdG9tIFwiRW5kX29mX2ZpbGVcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBGYWlsdXJlIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTm90X2ZvdW5kXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE5vdF9mb3VuZCAtPiBBdG9tIFwiTm90X2ZvdW5kXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEludmFsaWRfYXJndW1lbnRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBhcmcgLT4gTGlzdCBbIEF0b20gXCJJbnZhbGlkX2FyZ3VtZW50XCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hdGNoX2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTWF0Y2hfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIk1hdGNoX2ZhaWx1cmVcIiBhcmdcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF9zXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE5vdF9mb3VuZF9zIGFyZyAtPiBMaXN0IFsgQXRvbSBcIk5vdF9mb3VuZF9zXCI7IGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTeXNfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3lzX2Vycm9yIGFyZyAtPiBMaXN0IFsgQXRvbSBcIlN5c19lcnJvclwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBcmcuSGVscF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuSGVscCBhcmcgLT4gTGlzdCBbIEF0b20gXCJBcmcuSGVscFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBcmcuQmFkXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFyZy5CYWQgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkJhZFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBMYXp5LlVuZGVmaW5lZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBMYXp5LlVuZGVmaW5lZCAtPiBBdG9tIFwiTGF6eS5VbmRlZmluZWRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2luZy5QYXJzZV9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IEF0b20gXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFF1ZXVlLkVtcHR5XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFF1ZXVlLkVtcHR5IC0+IEF0b20gXCJRdWV1ZS5FbXB0eVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTY2FuZi5TY2FuX2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIGFyZyAtPiBMaXN0IFsgQXRvbSBcIlNjYW5mLlNjYW5fZmFpbHVyZVwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTdGFjay5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTdGFjay5FbXB0eSAtPiBBdG9tIFwiU3RhY2suRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzLkJyZWFrXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5cy5CcmVhayAtPiBBdG9tIFwiU3lzLkJyZWFrXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgXVxuOztcblxubGV0ICgpID1cbiAgTGlzdC5pdGVyXG4gICAgfmY6KGZ1biAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLCBoYW5kbGVyKSAtPlxuICAgICAgRXhuX2NvbnZlcnRlci5hZGQgfnByaW50ZXhjOnRydWUgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkgLT5cbiAgICAgICAgICBMaXN0IFsgQXRvbSBcIlNleHBsaWIuQ29udi5PZl9zZXhwX2Vycm9yXCI7IHNleHBfb2ZfZXhuIGV4Yzsgc2V4cCBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4iLCIoKiBDb252X2Vycm9yOiBNb2R1bGUgZm9yIEhhbmRsaW5nIEVycm9ycyBkdXJpbmcgQXV0b21hdGVkIFMtZXhwcmVzc2lvblxuICAgQ29udmVyc2lvbnMgKilcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gUHJpbnRmXG5vcGVuIFNleHBfY29udlxuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3JcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgdHVwbGVzICopXG5cbmxldCB0dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgbG9jIG4gc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlc19vZl9zZXhwOiB0dXBsZSBvZiBzaXplICVkIGV4cGVjdGVkXCIgbG9jIG4pIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgc3RhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyB0YWcgc2V4cCA9XG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogc3VtIHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIiBsb2MgdGFnIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGEgbmVzdGVkIGxpc3RcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9zdW0gbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGFuIGVtcHR5IGxpc3RcIikgc2V4cFxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyByZWNvcmRzICopXG5cbmxldCByZWNvcmRfc2V4cF9ib29sX3dpdGhfcGF5bG9hZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvYyBeIFwiX29mX3NleHA6IHJlY29yZCBjb252ZXJzaW9uOiBhIFtzZXhwLmJvb2xdIGZpZWxkIHdhcyBnaXZlbiBhIHBheWxvYWQuXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogb25seSBwYWlycyBleHBlY3RlZCwgdGhlaXIgZmlyc3QgZWxlbWVudCBtdXN0IGJlIGFuIFxcXG4gICAgICAgYXRvbVwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0IH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgbGV0IGZsZF9uYW1lc19zdHIgPSBTdHJpbmcuY29uY2F0IChMaXN0LnJldiByZXZfZmxkX25hbWVzKSB+c2VwOlwiIFwiIGluXG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHNleHBcbjs7XG5cbmxldCByZWNvcmRfZXh0cmFfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZXh0cmEgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHNleHBcbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHNleHAgbHN0ID1cbiAgbGV0IHVuZGVmaW5lZCA9IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgW10gbHN0IGluXG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl9zZXhwOiB0aGUgZm9sbG93aW5nIHJlY29yZCBlbGVtZW50cyB3ZXJlIHVuZGVmaW5lZDogJXNcIiBsb2MgdW5kZWZpbmVkXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gbG9jIHNleHAgPVxuICBsZXQgbXNnID0gbG9jIF4gXCJfb2Zfc2V4cDogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfcG9seV9maWVsZF92YWx1ZSBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgdmFsdWVzIG9mIHR5cGVzIHJlc3VsdGluZyBmcm9tIHBvbHltb3JwaGljIHJlY29yZCBmaWVsZHNcIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fdmFyaWFudF9tYXRjaCAoKSA9IHJhaXNlIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBubyBtYXRjaGluZyB2YXJpYW50IGZvdW5kXCIpIHNleHBcbjs7XG5cbmxldCBwdGFnX25vX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmXG4gICAgICBcIiVzX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiXG4gICAgICBsb2NcbiAgICAgIGNuc3RyXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCBwdGFnX3Rha2VzX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyB0YWtlcyBhbiBhcmd1bWVudFwiKSBzZXhwXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X3R5cGUgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0cnlpbmcgdG8gY29udmVydCBhbiBlbXB0eSB0eXBlXCIpIHNleHBcbjs7XG4iLCIoKiogUHJpbWl0aXZlcyBmb3IgcG9seW1vcnBoaWMgY29tcGFyZS4gKilcblxuKCpfIFBvbHltb3JwaGljIGNvbXBpbGVyIHByaW1pdGl2ZXMgY2FuJ3QgYmUgYWxpYXNlcyBhcyB0aGlzIGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAgaW5saW5pbmcuIChJZiBhbGlhc2VkIHdpdGhvdXQgYSB0eXBlIGFubm90YXRpb24sIHRoZSBjb21waWxlciB3b3VsZCBpbXBsZW1lbnQgdGhlbVxuICB1c2luZyB0aGUgZ2VuZXJpYyBjb2RlIGRvaW5nIGEgQyBjYWxsLCBhbmQgaXQncyB0aGlzIGNvZGUgdGhhdCB3b3VsZCBiZSBpbmxpbmVkLikgQXMgYVxuICByZXN1bHQgd2UgaGF2ZSB0byBjb3B5IHRoZSBbZXh0ZXJuYWwgLi4uXSBkZWNsYXJhdGlvbiBoZXJlLiAqKVxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBhc2NlbmRpbmcgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbmxldCBtYXggPSBDYW1sLm1heFxubGV0IG1pbiA9IENhbWwubWluXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBpbmNsdWRlZCBpbiBbSW1wb3J0XS4gIEl0IGlzIGFpbWVkIGF0IG1vZHVsZXMgdGhhdCBkZWZpbmUgdGhlIHN0YW5kYXJkXG4gICBjb21iaW5hdG9ycyBmb3IgW3NleHBfb2ZdLCBbb2Zfc2V4cF0sIFtjb21wYXJlXSBhbmQgW2hhc2hdIGFuZCBhcmUgaW5jbHVkZWQgaW5cbiAgIFtJbXBvcnRdLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAoKiBUaGVzZSBtb2R1bGVzIGFyZSByZWRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG50eXBlICdhIHJlZiA9ICdhIENhbWwucmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG4oKiBSZXNodWZmbGUgW0NhbWxdIHNvIHRoYXQgd2UgY2hvb3NlIHRoZSBtb2R1bGVzIHVzaW5nIGxhYmVscyB3aGVuIGF2YWlsYWJsZS4gKilcbm1vZHVsZSBDYW1sID0gc3RydWN0XG5cbiAgaW5jbHVkZSBDYW1sXG5cbiAgbW9kdWxlIEFyZyA9IENhbWwuQXJnICgqKiBAY2Fub25pY2FsIENhbWwuQXJnICopXG5cbiAgbW9kdWxlIEFycmF5ID0gQ2FtbC5TdGRMYWJlbHMuQXJyYXkgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuQXJyYXkgKilcblxuICBtb2R1bGUgQm9vbCA9IENhbWwuQm9vbCAoKiogQGNhbm9uaWNhbCBDYW1sLkJvb2wgKilcblxuICBtb2R1bGUgQnVmZmVyID0gQ2FtbC5CdWZmZXIgKCoqIEBjYW5vbmljYWwgQ2FtbC5CdWZmZXIgKilcblxuICBtb2R1bGUgQnl0ZXMgPSBDYW1sLlN0ZExhYmVscy5CeXRlcyAoKiogQGNhbm9uaWNhbCBDYW1sLlN0ZExhYmVscy5CeXRlcyAqKVxuXG4gIG1vZHVsZSBDaGFyID0gQ2FtbC5DaGFyICgqKiBAY2Fub25pY2FsIENhbWwuQ2hhciAqKVxuXG4gIG1vZHVsZSBFcGhlbWVyb24gPSBDYW1sLkVwaGVtZXJvbiAoKiogQGNhbm9uaWNhbCBDYW1sLkVwaGVtZXJvbiAqKVxuXG4gIG1vZHVsZSBGbG9hdCA9IENhbWwuRmxvYXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5GbG9hdCAqKVxuXG4gIG1vZHVsZSBGb3JtYXQgPSBDYW1sLkZvcm1hdCAoKiogQGNhbm9uaWNhbCBDYW1sLkZvcm1hdCAqKVxuXG4gIG1vZHVsZSBGdW4gPSBDYW1sLkZ1biAoKiogQGNhbm9uaWNhbCBDYW1sLkZ1biAqKVxuXG4gIG1vZHVsZSBHYyA9IENhbWwuR2MgKCoqIEBjYW5vbmljYWwgQ2FtbC5HYyAqKVxuXG4gIG1vZHVsZSBIYXNodGJsID0gQ2FtbC5Nb3JlTGFiZWxzLkhhc2h0YmwgKCoqIEBjYW5vbmljYWwgQ2FtbC5Nb3JlTGFiZWxzLkhhc2h0YmwgKilcblxuICBtb2R1bGUgSW50MzIgPSBDYW1sLkludDMyICgqKiBAY2Fub25pY2FsIENhbWwuSW50MzIgKilcblxuICBtb2R1bGUgSW50ID0gQ2FtbC5JbnQgKCoqIEBjYW5vbmljYWwgQ2FtbC5JbnQgKilcblxuICBtb2R1bGUgSW50NjQgPSBDYW1sLkludDY0ICgqKiBAY2Fub25pY2FsIENhbWwuSW50NjQgKilcblxuICBtb2R1bGUgTGF6eSA9IENhbWwuTGF6eSAoKiogQGNhbm9uaWNhbCBDYW1sLkxhenkgKilcblxuICBtb2R1bGUgTGV4aW5nID0gQ2FtbC5MZXhpbmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5MZXhpbmcgKilcblxuICBtb2R1bGUgTGlzdCA9IENhbWwuU3RkTGFiZWxzLkxpc3QgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuTGlzdCAqKVxuXG4gIG1vZHVsZSBNYXAgPSBDYW1sLk1vcmVMYWJlbHMuTWFwICgqKiBAY2Fub25pY2FsIENhbWwuTW9yZUxhYmVscy5NYXAgKilcblxuICBtb2R1bGUgTmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQgKCoqIEBjYW5vbmljYWwgQ2FtbC5OYXRpdmVpbnQgKilcblxuICBtb2R1bGUgT2JqID0gQ2FtbC5PYmogKCoqIEBjYW5vbmljYWwgQ2FtbC5PYmogKilcblxuICBtb2R1bGUgT3B0aW9uID0gQ2FtbC5PcHRpb24gKCoqIEBjYW5vbmljYWwgQ2FtbC5PcHRpb24gKilcblxuICBtb2R1bGUgUGFyc2luZyA9IENhbWwuUGFyc2luZyAoKiogQGNhbm9uaWNhbCBDYW1sLlBhcnNpbmcgKilcblxuICBtb2R1bGUgUHJpbnRleGMgPSBDYW1sLlByaW50ZXhjICgqKiBAY2Fub25pY2FsIENhbWwuUHJpbnRleGMgKilcblxuICBtb2R1bGUgUHJpbnRmID0gQ2FtbC5QcmludGYgKCoqIEBjYW5vbmljYWwgQ2FtbC5QcmludGYgKilcblxuICBtb2R1bGUgUXVldWUgPSBDYW1sLlF1ZXVlICgqKiBAY2Fub25pY2FsIENhbWwuUXVldWUgKilcblxuICBtb2R1bGUgUmFuZG9tID0gQ2FtbC5SYW5kb20gKCoqIEBjYW5vbmljYWwgQ2FtbC5SYW5kb20gKilcblxuICBtb2R1bGUgUmVzdWx0ID0gQ2FtbC5SZXN1bHQgKCoqIEBjYW5vbmljYWwgQ2FtbC5SZXN1bHQgKilcblxuICBtb2R1bGUgU2NhbmYgPSBDYW1sLlNjYW5mICgqKiBAY2Fub25pY2FsIENhbWwuU2NhbmYgKilcblxuICBtb2R1bGUgU2VxID0gQ2FtbC5TZXEgKCoqIEBjYW5vbmljYWwgQ2FtbC5TZXEgKilcblxuICBtb2R1bGUgU2V0ID0gQ2FtbC5Nb3JlTGFiZWxzLlNldCAoKiogQGNhbm9uaWNhbCBDYW1sLk1vcmVMYWJlbHMuU2V0ICopXG5cbiAgbW9kdWxlIFN0YWNrID0gQ2FtbC5TdGFjayAoKiogQGNhbm9uaWNhbCBDYW1sLlN0YWNrICopXG5cbiAgbW9kdWxlIFN0cmluZyA9IENhbWwuU3RkTGFiZWxzLlN0cmluZyAoKiogQGNhbm9uaWNhbCBDYW1sLlN0ZExhYmVscy5TdHJpbmcgKilcblxuICBtb2R1bGUgU3lzID0gQ2FtbC5TeXMgKCoqIEBjYW5vbmljYWwgQ2FtbC5TeXMgKilcblxuICBtb2R1bGUgVWNoYXIgPSBDYW1sLlVjaGFyICgqKiBAY2Fub25pY2FsIENhbWwuVWNoYXIgKilcblxuICBtb2R1bGUgVW5pdCA9IENhbWwuVW5pdCAoKiogQGNhbm9uaWNhbCBDYW1sLlVuaXQgKilcblxuICBleGNlcHRpb24gTm90X2ZvdW5kID0gQ2FtbC5Ob3RfZm91bmRcbmVuZFxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuXG4oKiBXZSB1c2UgW09iai5tYWdpY10gaGVyZSBhcyBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZ2VuZXJhdGUgYSBjb25kaXRpb25hbCBqdW1wIGFuZCB0aGVcbiAgIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgaXMgbm90aWNlYWJsZS4gKilcbmxldCBib29sX3RvX2ludCAoeCA6IGJvb2wpIDogaW50ID0gQ2FtbC5PYmoubWFnaWMgeFxuXG4oKiBUaGlzIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5ICopXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgKCAhPSApID0gQ2FtbC4oICE9IClcbmxldCAoICogKSA9IENhbWwuKCAqIClcbmxldCAoICoqICkgPSBDYW1sLiggKiogKVxubGV0ICggKi4gKSA9IENhbWwuKCAqLiApXG5sZXQgKCArICkgPSBDYW1sLiggKyApXG5sZXQgKCArLiApID0gQ2FtbC4oICsuIClcbmxldCAoIC0gKSA9IENhbWwuKCAtIClcbmxldCAoIC0uICkgPSBDYW1sLiggLS4gKVxubGV0ICggLyApID0gQ2FtbC4oIC8gKVxubGV0ICggLy4gKSA9IENhbWwuKCAvLiApXG5cbm1vZHVsZSBQb2x5ID0gUG9seTAgKCoqIEBjYW5vbmljYWwgQmFzZS5Qb2x5ICopXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG4gIGV4dGVybmFsICggPj0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBpbnQpIHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBDYW1sLkludDMyLnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuICBleHRlcm5hbCAoIDwgKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG4gIGV4dGVybmFsICggPj0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuSW50NjQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBib29sKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGJvb2wpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGJvb2wpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGJvb2wpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYm9vbCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBib29sKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGNoYXIpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogY2hhcikgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBjaGFyKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCBpIHggPSBDYW1sLlVjaGFyLnRvX2ludCB4XG4gIGxldCAoIDwgKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPD0gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIChpIHgpIChpIHkpXG4gIGxldCAoIDw+ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD4gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA9ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChpIHgpIChpIHkpXG4gIGxldCAoID4gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPj0gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIChpIHgpIChpIHkpXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5hc2NlbmRpbmcgKGkgeCkgKGkgeSlcbiAgOztcblxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5kZXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgKGkgeCkgKGkgeSlcbiAgbGV0IGVxdWFsICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCAoaSB4KSAoaSB5KVxuICBsZXQgbWF4ICh4IDogQ2FtbC5VY2hhci50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuVWNoYXIudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBmbG9hdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBmbG9hdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogZmxvYXQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogZmxvYXQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogZmxvYXQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogc3RyaW5nKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogc3RyaW5nKSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IHN0cmluZykgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBieXRlcykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYnl0ZXMpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYnl0ZXMpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogYnl0ZXMpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbigqIFRoaXMgbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gc3BlY2lhbGl6ZSBpdCBhcyBhXG4gICBkaXJlY3Qgc2V0IG9yIGNhbWxfbW9kaWZ5ICopXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbigqIFRoZXNlIG5lZWQgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdvbid0IHVuYm94XG4gICByZWZlcmVuY2VzICopXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5cbmxldCAoIEAgKSA9IENhbWwuKCBAIClcbmxldCAoIF4gKSA9IENhbWwuKCBeIClcbmxldCAoIH4tICkgPSBDYW1sLiggfi0gKVxubGV0ICggfi0uICkgPSBDYW1sLiggfi0uIClcbmxldCAoIGFzciApID0gQ2FtbC4oIGFzciApXG5sZXQgKCBsYW5kICkgPSBDYW1sLiggbGFuZCApXG5sZXQgbG5vdCA9IENhbWwubG5vdFxubGV0ICggbG9yICkgPSBDYW1sLiggbG9yIClcbmxldCAoIGxzbCApID0gQ2FtbC4oIGxzbCApXG5sZXQgKCBsc3IgKSA9IENhbWwuKCBsc3IgKVxubGV0ICggbHhvciApID0gQ2FtbC4oIGx4b3IgKVxubGV0ICggbW9kICkgPSBDYW1sLiggbW9kIClcbmxldCBhYnMgPSBDYW1sLmFic1xubGV0IGZhaWx3aXRoID0gQ2FtbC5mYWlsd2l0aFxubGV0IGZzdCA9IENhbWwuZnN0XG5sZXQgaW52YWxpZF9hcmcgPSBDYW1sLmludmFsaWRfYXJnXG5sZXQgc25kID0gQ2FtbC5zbmRcblxuKCogW3JhaXNlXSBuZWVkcyB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIGFzIHRoZSBjb21waWxlciBhdXRvbWF0aWNhbGx5IHJlcGxhY2VzXG4gICAnJXJhaXNlJyBieSAnJXJlcmFpc2UnIHdoZW4gYXBwcm9wcmlhdGUuICopXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG5sZXQgcGh5c19lcXVhbCA9IENhbWwuKCA9PSApXG5sZXQgZGVjciA9IENhbWwuZGVjclxubGV0IGluY3IgPSBDYW1sLmluY3JcblxuKCogdXNlZCBieSBzZXhwX2NvbnYsIHdoaWNoIGZsb2F0MCBkZXBlbmRzIG9uIHRocm91Z2ggb3B0aW9uICopXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gQ2FtbC5mbG9hdF9vZl9zdHJpbmdcblxuKCogW2FtX3Rlc3RpbmddIGlzIHVzZWQgaW4gYSBmZXcgcGxhY2VzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIGluIHRlc3RpbmcgbW9kZSwgc3VjaFxuICAgYXMgaW4gW3JhbmRvbS5tbF0uICBbYW1fdGVzdGluZ10gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW0Jhc2VfYW1fdGVzdGluZ10sIGEgd2VhayBDL2pzXG4gICBwcmltaXRpdmUgdGhhdCByZXR1cm5zIFtmYWxzZV0sIGJ1dCB3aGVuIGxpbmtpbmcgYW4gaW5saW5lLXRlc3QtcnVubmVyIGV4ZWN1dGFibGUsIGlzXG4gICBvdmVycmlkZGVuIGJ5IGFub3RoZXIgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbdHJ1ZV0uICopXG5leHRlcm5hbCBhbV90ZXN0aW5nIDogdW5pdCAtPiBib29sID0gXCJCYXNlX2FtX3Rlc3RpbmdcIlxuXG5sZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmcgKClcbiIsIm9wZW4hIEltcG9ydDBcbmluY2x1ZGUgQ2FtbC5QcmludGZcblxuKCoqIGZhaWx3aXRoLCBpbnZhbGlkX2FyZywgYW5kIGV4aXQgYWNjZXB0aW5nIHByaW50ZidzIGZvcm1hdC4gKilcblxubGV0IGZhaWx3aXRoZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gZmFpbHdpdGggcykgZm10XG5sZXQgaW52YWxpZF9hcmdmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAoKSAtPiBpbnZhbGlkX2FyZyBzKSBmbXRcbiIsIigqIFtTeXMwXSBkZWZpbmVzIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW0NhbWwuU3lzXS4gIFtTeXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtDYW1sLlN5c10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzeXMubWxcbiAgIHNob3VsZCB1c2UgW0NhbWwuU3lzXS4gW1N5czBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlXG4gICBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHRoZXNlXG4gICBmdW5jdGlvbnMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN5c10gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIFN5cyA9IFN5czBdLiAgRGVmaW5pbmcgW21vZHVsZSBTeXMgPSBTeXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlXG4gICBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN5c10uICopXG5cbm9wZW4hIEltcG9ydDBcblxudHlwZSBiYWNrZW5kX3R5cGUgPSBDYW1sLlN5cy5iYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG5cbmxldCBiYWNrZW5kX3R5cGUgPSBDYW1sLlN5cy5iYWNrZW5kX3R5cGVcbmxldCBpbnRlcmFjdGl2ZSA9IENhbWwuU3lzLmludGVyYWN0aXZlXG5sZXQgb3NfdHlwZSA9IENhbWwuU3lzLm9zX3R5cGVcbmxldCB1bml4ID0gQ2FtbC5TeXMudW5peFxubGV0IHdpbjMyID0gQ2FtbC5TeXMud2luMzJcbmxldCBjeWd3aW4gPSBDYW1sLlN5cy5jeWd3aW5cbmxldCB3b3JkX3NpemVfaW5fYml0cyA9IENhbWwuU3lzLndvcmRfc2l6ZVxubGV0IGludF9zaXplX2luX2JpdHMgPSBDYW1sLlN5cy5pbnRfc2l6ZVxubGV0IGJpZ19lbmRpYW4gPSBDYW1sLlN5cy5iaWdfZW5kaWFuXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSBDYW1sLlN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0IG1heF9hcnJheV9sZW5ndGggPSBDYW1sLlN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5sZXQgcnVudGltZV92YXJpYW50ID0gQ2FtbC5TeXMucnVudGltZV92YXJpYW50XG5sZXQgcnVudGltZV9wYXJhbWV0ZXJzID0gQ2FtbC5TeXMucnVudGltZV9wYXJhbWV0ZXJzXG5sZXQgYXJndiA9IENhbWwuU3lzLmFyZ3ZcbmxldCBnZXRfYXJndiAoKSA9IENhbWwuU3lzLmFyZ3ZcbmxldCBvY2FtbF92ZXJzaW9uID0gQ2FtbC5TeXMub2NhbWxfdmVyc2lvblxubGV0IGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzID0gQ2FtbC5TeXMuZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcbmxldCBydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgPSBDYW1sLlN5cy5ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcblxubGV0IGdldGVudl9leG4gdmFyID1cbiAgdHJ5IENhbWwuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IENhbWwuTm90X2ZvdW5kIC0+XG4gICAgUHJpbnRmLmZhaWx3aXRoZiBcIlN5cy5nZXRlbnZfZXhuOiBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBpcyBub3Qgc2V0XCIgdmFyICgpXG47O1xuXG5sZXQgZ2V0ZW52IHZhciA9XG4gIG1hdGNoIENhbWwuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxuZXhjZXB0aW9uIEJyZWFrID0gQ2FtbC5TeXMuQnJlYWtcbiIsIigqIFtBcnJheTBdIGRlZmluZXMgYXJyYXkgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zXG4gICBvZiBbQ2FtbC5BcnJheV0uICBbQXJyYXkwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW0NhbWwuQXJyYXldXG4gICB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGFycmF5MC5tbCBzaG91bGQgdXNlIFtDYW1sLkFycmF5XS5cbiAgIFtBcnJheTBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGFycmF5cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQXJyYXldIGluIGJ1aWxkIG9yZGVyIHNob3VsZFxuICAgZG8gW21vZHVsZSBBcnJheSA9IEFycmF5MF0uICBUaGlzIGluY2x1ZGVzIHVzZXMgb2Ygc3Vic2NyaXB0IHN5bnRheCAoW3guKGkpXSwgW3guKGkpIDwtXG4gICBlXSksIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbQXJyYXkuZ2V0XSBhbmQgW0FycmF5LnNldF0uXG4gICBEZWZpbmluZyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzIG9jYW1sZGVwIGZyb21cbiAgIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkFycmF5XS4gKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIFN5cyA9IFN5czBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuICBleHRlcm5hbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuICBleHRlcm5hbCBnZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIHNldCA6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgOiAgc3JjOidhIGFycmF5XG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6J2EgYXJyYXlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5lbmRcblxuaW5jbHVkZSBBcnJheVxuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgdHJ5IGNyZWF0ZSBsZW4geCB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZSB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW4gPVxuICB0cnkgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgbGVuIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGFwcGVuZCA9IENhbWwuQXJyYXkuYXBwZW5kXG5sZXQgYmxpdCA9IENhbWwuQXJyYXkuYmxpdFxubGV0IGNvbmNhdCA9IENhbWwuQXJyYXkuY29uY2F0XG5sZXQgY29weSA9IENhbWwuQXJyYXkuY29weVxubGV0IGZpbGwgPSBDYW1sLkFycmF5LmZpbGxcbmxldCBpbml0ID0gQ2FtbC5BcnJheS5pbml0XG5sZXQgbWFrZV9tYXRyaXggPSBDYW1sLkFycmF5Lm1ha2VfbWF0cml4XG5sZXQgb2ZfbGlzdCA9IENhbWwuQXJyYXkub2ZfbGlzdFxubGV0IHN1YiA9IENhbWwuQXJyYXkuc3ViXG5sZXQgdG9fbGlzdCA9IENhbWwuQXJyYXkudG9fbGlzdFxuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBDYW1sLkFycmF5LmZvbGRfbGVmdCB0IH5pbml0IH5mXG5sZXQgZm9sZF9yaWdodCB0IH5mIH5pbml0ID0gQ2FtbC5BcnJheS5mb2xkX3JpZ2h0IHQgfmYgfmluaXRcbmxldCBpdGVyIHQgfmYgPSBDYW1sLkFycmF5Lml0ZXIgdCB+ZlxubGV0IGl0ZXJpIHQgfmYgPSBDYW1sLkFycmF5Lml0ZXJpIHQgfmZcbmxldCBtYXAgdCB+ZiA9IENhbWwuQXJyYXkubWFwIHQgfmZcbmxldCBtYXBpIHQgfmYgPSBDYW1sLkFycmF5Lm1hcGkgdCB+ZlxubGV0IHN0YWJsZV9zb3J0IHQgfmNvbXBhcmUgPSBDYW1sLkFycmF5LnN0YWJsZV9zb3J0IHQgfmNtcDpjb21wYXJlXG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGVsdF9pID0gdC4oaSkgaW5cbiAgbGV0IGVsdF9qID0gdC4oaikgaW5cbiAgdW5zYWZlX3NldCB0IGkgZWx0X2o7XG4gIHVuc2FmZV9zZXQgdCBqIGVsdF9pXG47O1xuIiwiKCogW0NoYXIwXSBkZWZpbmVzIGNoYXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbQ2FtbC5DaGFyXS4gIFtDaGFyMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtDYW1sLkNoYXJdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGNoYXIwLm1sIHNob3VsZCB1c2UgW0NhbWwuQ2hhcl0uXG4gICBbQ2hhcjBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGNoYXJzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5DaGFyXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgQ2hhciA9IENoYXIwXS4gIERlZmluaW5nIFttb2R1bGUgQ2hhciA9IENoYXIwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkNoYXJdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5sZXQgZXNjYXBlZCA9IENhbWwuQ2hhci5lc2NhcGVkXG5sZXQgbG93ZXJjYXNlID0gQ2FtbC5DaGFyLmxvd2VyY2FzZV9hc2NpaVxubGV0IHRvX2ludCA9IENhbWwuQ2hhci5jb2RlXG5sZXQgdW5zYWZlX29mX2ludCA9IENhbWwuQ2hhci51bnNhZmVfY2hyXG5sZXQgdXBwZXJjYXNlID0gQ2FtbC5DaGFyLnVwcGVyY2FzZV9hc2NpaVxuXG4oKiBXZSB1c2Ugb3VyIG93biByYW5nZSB0ZXN0IHdoZW4gY29udmVydGluZyBpbnRlZ2VycyB0byBjaGFycyByYXRoZXIgdGhhblxuICAgY2FsbGluZyBbQ2FtbC5DaGFyLmNocl0gYmVjYXVzZSBpdCdzIHNpbXBsZSBhbmQgaXQgc2F2ZXMgdXMgYSBmdW5jdGlvbiBjYWxsXG4gICBhbmQgdGhlIHRyeS13aXRoIChleGNlcHRpb25zIGNvc3QsIGVzcGVjaWFsbHkgaW4gdGhlIHdvcmxkIHdpdGggYmFja3RyYWNlcykuICopXG5sZXQgaW50X2lzX29rIGkgPSAwIDw9IGkgJiYgaSA8PSAyNTVcbmxldCBtaW5fdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDBcbmxldCBtYXhfdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDI1NVxubGV0IG9mX2ludCBpID0gaWYgaW50X2lzX29rIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2ZfaW50X2V4biBpID1cbiAgaWYgaW50X2lzX29rIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLm9mX2ludF9leG4gZ290IGludGVnZXIgb3V0IG9mIHJhbmdlOiAlZFwiIGkgKClcbjs7XG5cbmxldCBlcXVhbCAodDEgOiBjaGFyKSB0MiA9IFBvbHkuZXF1YWwgdDEgdDJcbiIsIigqIFtJbnQwXSBkZWZpbmVzIGludGVnZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbQ2FtbF0uIFtJbnQwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlXG4gICBwYXJ0IG9mIFtDYW1sXSB0aGF0IFtCYXNlXSB1c2VzIGZvciBpbnRlZ2VycyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXJcbiAgIHRoYW4gaW50MC5tbCBzaG91bGQgdXNlIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseSB0aHJvdWdoIFtDYW1sXS4gW0ludDBdIGhhc1xuICAgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgaW50cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuSW50XSBpbiBidWlsZFxuICAgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgSW50ICA9IEludDBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgSW50ID0gSW50MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcFxuICAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5JbnRdLiAqKVxuXG5sZXQgdG9fc3RyaW5nID0gQ2FtbC5zdHJpbmdfb2ZfaW50XG5sZXQgb2Zfc3RyaW5nID0gQ2FtbC5pbnRfb2Zfc3RyaW5nXG5sZXQgdG9fZmxvYXQgPSBDYW1sLmZsb2F0X29mX2ludFxubGV0IG9mX2Zsb2F0ID0gQ2FtbC5pbnRfb2ZfZmxvYXRcbmxldCBtYXhfdmFsdWUgPSBDYW1sLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBDYW1sLm1pbl9pbnRcbmxldCBzdWNjID0gQ2FtbC5zdWNjXG4iLCIoKiBbTGlzdDBdIGRlZmluZXMgbGlzdCBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgIFtDYW1sLkxpc3RdLiAgW0xpc3QwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW0NhbWwuTGlzdF0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gbGlzdDAubWwgc2hvdWxkIHVzZSBbQ2FtbC5MaXN0XS5cbiAgIFtMaXN0MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgbGlzdHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkxpc3RdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBMaXN0ID0gTGlzdDBdLiAgRGVmaW5pbmcgW21vZHVsZSBMaXN0ID0gTGlzdDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXRcbiAgIHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuTGlzdF0uICopXG5cbm9wZW4hIEltcG9ydDBcblxubGV0IGhkX2V4biA9IENhbWwuTGlzdC5oZFxubGV0IGxlbmd0aCA9IENhbWwuTGlzdC5sZW5ndGhcbmxldCByZXZfYXBwZW5kID0gQ2FtbC5MaXN0LnJldl9hcHBlbmRcbmxldCB0bF9leG4gPSBDYW1sLkxpc3QudGxcbmxldCB1bnppcCA9IENhbWwuTGlzdC5zcGxpdFxuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBleGlzdHMgdCB+ZiA9IENhbWwuTGlzdC5leGlzdHMgdCB+ZlxubGV0IGV4aXN0czJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuZXhpc3RzMiBsMSBsMiB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IENhbWwuTGlzdC5mb2xkX2xlZnQgdCB+ZiB+aW5pdFxubGV0IGZvbGQyX29rIGwxIGwyIH5pbml0IH5mID0gQ2FtbC5MaXN0LmZvbGRfbGVmdDIgbDEgbDIgfmluaXQgfmZcbmxldCBmb3JfYWxsIHQgfmYgPSBDYW1sLkxpc3QuZm9yX2FsbCB0IH5mXG5sZXQgZm9yX2FsbDJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuZm9yX2FsbDIgbDEgbDIgfmZcbmxldCBpdGVyIHQgfmYgPSBDYW1sLkxpc3QuaXRlciB0IH5mXG5sZXQgaXRlcjJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuaXRlcjIgbDEgbDIgfmZcbmxldCBub250YWlsX21hcCB0IH5mID0gQ2FtbC5MaXN0Lm1hcCB0IH5mXG5sZXQgbm9udGFpbF9tYXBpIHQgfmYgPSBDYW1sLkxpc3QubWFwaSB0IH5mXG5sZXQgcGFydGl0aW9uIHQgfmYgPSBDYW1sLkxpc3QucGFydGl0aW9uIHQgfmZcbmxldCByZXZfbWFwIHQgfmYgPSBDYW1sLkxpc3QucmV2X21hcCB0IH5mXG5sZXQgcmV2X21hcDJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QucmV2X21hcDIgbDEgbDIgfmZcbmxldCBzb3J0IGwgfmNvbXBhcmUgPSBDYW1sLkxpc3Quc29ydCBsIH5jbXA6Y29tcGFyZVxubGV0IHN0YWJsZV9zb3J0IGwgfmNvbXBhcmUgPSBDYW1sLkxpc3Quc3RhYmxlX3NvcnQgbCB+Y21wOmNvbXBhcmVcblxubGV0IHJldiA9IGZ1bmN0aW9uXG4gIHwgKFtdIHwgWyBfIF0pIGFzIHJlcyAtPiByZXNcbiAgfCB4IDo6IHkgOjogcmVzdCAtPiByZXZfYXBwZW5kIHJlc3QgWyB5OyB4IF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0IGwgfmYgfmluaXQgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfIC0+IGZvbGQgfmY6KGZ1biBhIGIgLT4gZiBiIGEpIH5pbml0IChyZXYgbClcbjs7XG4iLCIoKlxuICAgVGhpcyBpcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBydW50aW1lIHN1cHBvcnQgZm9yIFtwcHhfaGFzaF0uXG5cbiAgIFRoZSBbcHB4X2hhc2hdIHN5bnRheCBleHRlbnNpb24gc3VwcG9ydHM6IFtAQGRlcml2aW5nIGhhc2hdIGFuZCBbJWhhc2hfZm9sZDogVFlQRV0gYW5kXG4gICBbJWhhc2g6IFRZUEVdXG5cbiAgIEZvciB0eXBlIFt0XSBhIGZ1bmN0aW9uIFtoYXNoX2ZvbGRfdF0gb2YgdHlwZSBbSGFzaC5zdGF0ZSAtPiB0IC0+IEhhc2guc3RhdGVdIGlzXG4gICBnZW5lcmF0ZWQuXG5cbiAgIFRoZSBnZW5lcmF0ZWQgW2hhc2hfZm9sZF88VD5dIGZ1bmN0aW9uIGlzIGNvbXBvc2l0aW9uYWwsIGZvbGxvd2luZyB0aGUgc3RydWN0dXJlIG9mIHRoZVxuICAgdHlwZTsgYWxsb3dpbmcgdXNlciBvdmVycmlkZXMgYXQgZXZlcnkgbGV2ZWwuIFRoaXMgaXMgaW4gY29udHJhc3QgdG8gb2NhbWwncyBidWlsdGluXG4gICBwb2x5bW9ycGhpYyBoYXNoaW5nIFtIYXNodGJsLmhhc2hdIHdoaWNoIGlnbm9yZXMgdXNlciBvdmVycmlkZXMuXG5cbiAgIFRoZSBnZW5lcmF0b3IgYWxzbyBwcm92aWRlcyBhIGRpcmVjdCBoYXNoLWZ1bmN0aW9uIFtoYXNoXSAobmFtZWQgW2hhc2hfPFQ+XSB3aGVuIDxUPiAhPVxuICAgXCJ0XCIpIG9mIHR5cGU6IFt0IC0+IEhhc2guaGFzaF92YWx1ZV0uXG5cbiAgIFRoZSBmb2xkaW5nIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGFjY2Vzc2VkIGFzIFslaGFzaF9mb2xkOiBUWVBFXVxuICAgVGhlIGRpcmVjdCBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2g6IFRZUEVdXG4qKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBDaGFyID0gQ2hhcjBcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEhhc2hfaW50ZlxuXG4oKiogQnVpbHRpbiBmb2xkaW5nLXN0eWxlIGhhc2ggZnVuY3Rpb25zLCBhYnN0cmFjdGVkIG92ZXIgW0hhc2hfaW50Zi5TXSAqKVxubW9kdWxlIEZvbGRpbmcgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuQnVpbHRpbl9pbnRmXG4gIHdpdGggdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgaGFzaF9mb2xkX3VuaXQgcyAoKSA9IHNcbiAgbGV0IGhhc2hfZm9sZF9pbnQgPSBIYXNoLmZvbGRfaW50XG4gIGxldCBoYXNoX2ZvbGRfaW50NjQgPSBIYXNoLmZvbGRfaW50NjRcbiAgbGV0IGhhc2hfZm9sZF9mbG9hdCA9IEhhc2guZm9sZF9mbG9hdFxuICBsZXQgaGFzaF9mb2xkX3N0cmluZyA9IEhhc2guZm9sZF9zdHJpbmdcbiAgbGV0IGFzX2ludCBmIHMgeCA9IGhhc2hfZm9sZF9pbnQgcyAoZiB4KVxuXG4gICgqIFRoaXMgaWdub3JlcyB0aGUgc2lnbiBiaXQgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIHVubGlrZWx5IHRvIGxlYWQgdG9cbiAgICAgZnJlcXVlbnQgY29sbGlzaW9ucyAobWluX3ZhbHVlIGNvbGxpZGluZyB3aXRoIDAgaXMgdGhlIG1vc3QgbGlrZWx5IG9uZSkuICAqKVxuICBsZXQgaGFzaF9mb2xkX2ludDMyID0gYXNfaW50IENhbWwuSW50MzIudG9faW50XG4gIGxldCBoYXNoX2ZvbGRfY2hhciA9IGFzX2ludCBDaGFyLnRvX2ludFxuXG4gIGxldCBoYXNoX2ZvbGRfYm9vbCA9XG4gICAgYXNfaW50IChmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IDFcbiAgICAgIHwgZmFsc2UgLT4gMClcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX25hdGl2ZWludCBzIHggPSBoYXNoX2ZvbGRfaW50NjQgcyAoQ2FtbC5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiBoYXNoX2ZvbGRfZWxlbSBzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gaGFzaF9mb2xkX2ludCBzIDBcbiAgICB8IFNvbWUgeCAtPiBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2ludCBzIDEpIHhcbiAgOztcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IHggOjogeHMgLT4gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyB4KSB4c1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgICgqIFRoZSBbbGVuZ3RoXSBvZiB0aGUgbGlzdCBtdXN0IGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBoYXNoLXN0YXRlIHNvIHZhbHVlcyBvZlxuICAgICAgIHR5cGVzIHN1Y2ggYXMgW3VuaXQgbGlzdF0gLSAoW10sIFsoKV0sIFsoKTsoKV0sLi4pIGFyZSBoYXNoZWQgZGlmZmVyZW50bHkuICopXG4gICAgKCogVGhlIFtsZW5ndGhdIG11c3QgY29tZSBiZWZvcmUgdGhlIGVsZW1lbnRzIHRvIGF2b2lkIGEgdmlvbGF0aW9uIG9mIHRoZSBydWxlXG4gICAgICAgZW5mb3JjZWQgYnkgUGVyZmVjdF9oYXNoLiAqKVxuICAgIGxldCBzID0gaGFzaF9mb2xkX2ludCBzIChMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIGxldCBzID0gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgaW5cbiAgICBzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9sYXp5X3QgaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAoQ2FtbC5MYXp5LmZvcmNlIHgpXG4gIGxldCBoYXNoX2ZvbGRfcmVmX2Zyb3plbiBoYXNoX2ZvbGRfZWxlbSBzIHggPSBoYXNoX2ZvbGRfZWxlbSBzICF4XG5cbiAgbGV0IHJlYyBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2kgaGFzaF9mb2xkX2VsZW0gcyBhcnJheSBpID1cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIGFycmF5XG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZSA9IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSBpblxuICAgICAgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfZWxlbSBzIGUpIGFycmF5IChpICsgMSkpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9hcnJheV9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyBhcnJheSA9XG4gICAgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pXG4gICAgICAoKiBbbGVuZ3RoXSBtdXN0IGJlIGluY29ycG9yYXRlZCBmb3IgYXJyYXlzLCBhcyBpdCBpcyBmb3IgbGlzdHMuIFNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBoYXNoX2ZvbGRfZWxlbVxuICAgICAgKGhhc2hfZm9sZF9pbnQgcyAoQXJyYXkubGVuZ3RoIGFycmF5KSlcbiAgICAgIGFycmF5XG4gICAgICAwXG4gIDs7XG5cbiAgKCogdGhlIGR1cGxpY2F0aW9uIGhlcmUgaXMgYmVjYXVzZSB3ZSB0aGlua1xuICAgICBvY2FtbCBjYW4ndCBlbGltaW5hdGUgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgb3RoZXJ3aXNlLiAqKVxuICBsZXQgaGFzaF9uYXRpdmVpbnQgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX25hdGl2ZWludCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5cbiAgbGV0IGhhc2hfaW50NjQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQ2NCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2ludDMyIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50MzIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9jaGFyIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfY2hhciAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2ludCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2Jvb2wgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9ib29sIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcblxuICBsZXQgaGFzaF9zdHJpbmcgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3N0cmluZyAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZmxvYXQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9mbG9hdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX3VuaXQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF91bml0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbmVuZFxuXG5tb2R1bGUgRiAoSGFzaCA6IEhhc2hfaW50Zi5TKSA6XG4gIEhhc2hfaW50Zi5GdWxsXG4gIHdpdGggdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlXG4gICBhbmQgdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgIGFuZCB0eXBlIHNlZWQgPSBIYXNoLnNlZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNoXG5cbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBjcmVhdGUgP3NlZWQgKCkgPSByZXNldCA/c2VlZCAoYWxsb2MgKCkpXG4gIGxldCBvZl9mb2xkIGhhc2hfZm9sZF90IHQgPSBnZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3QgKGNyZWF0ZSAoKSkgdClcblxuICBtb2R1bGUgQnVpbHRpbiA9IEZvbGRpbmcgKEhhc2gpXG5cbiAgbGV0IHJ1biA/c2VlZCBmb2xkZXIgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoZm9sZGVyIChIYXNoLnJlc2V0ID9zZWVkIChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxoYXNoIDogc2lnXG4gIGluY2x1ZGVcbiAgICBIYXNoX2ludGYuU1xuICAgIHdpdGggdHlwZSBzdGF0ZSA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLnN0YXRlXG4gICAgICgqIFdlIGdpdmUgYSBjb25jcmV0ZSB0eXBlIGZvciBbc3RhdGVdLCBhbGJlaXQgb25seSBwYXJ0aWFsbHkgZXhwb3NlZCAoc2VlXG4gICAgICAgIEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzKSwgc28gdGhhdCBpdCB1bmlmaWVzIHdpdGggdGhlIHNhbWUgdHlwZSBpbiBbQmFzZV9ib290XSxcbiAgICAgICAgYW5kIHRvIGFsbG93IG9wdGltaXphdGlvbnMgZm9yIHRoZSBpbW1lZGlhdGUgdHlwZS4gKilcbiAgICAgYW5kIHR5cGUgc2VlZCA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLnNlZWRcbiAgICAgYW5kIHR5cGUgaGFzaF92YWx1ZSA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLmhhc2hfdmFsdWVcblxuICBleHRlcm5hbCBmb2xkX2ludDY0IDogc3RhdGUgLT4gaW50NjQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfaW50IDogc3RhdGUgLT4gaW50IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludFwiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9mbG9hdCA6IHN0YXRlIC0+IGZsb2F0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX3N0cmluZyA6IHN0YXRlIC0+IHN0cmluZyAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGdldF9oYXNoX3ZhbHVlIDogc3RhdGUgLT4gaGFzaF92YWx1ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWVcIlxuICBbQEBub2FsbG9jXVxuZW5kID0gc3RydWN0XG4gIGxldCBkZXNjcmlwdGlvbiA9IFwiaW50ZXJuYWxoYXNoXCJcblxuICBpbmNsdWRlIEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzXG5cbiAgbGV0IGFsbG9jICgpID0gY3JlYXRlX3NlZWRlZCAwXG4gIGxldCByZXNldCA/KHNlZWQgPSAwKSBfdCA9IGNyZWF0ZV9zZWVkZWQgc2VlZFxuXG4gIG1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcGFyZV9zdGF0ZSAoYSA6IHN0YXRlKSAoYiA6IHN0YXRlKSA9IGNvbXBhcmUgKGEgOj4gaW50KSAoYiA6PiBpbnQpXG4gICAgbGV0IHN0YXRlX3RvX3N0cmluZyAoc3RhdGUgOiBzdGF0ZSkgPSBJbnQudG9fc3RyaW5nIChzdGF0ZSA6PiBpbnQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgSW50ZXJuYWxoYXNoXG5cbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBjcmVhdGUgP3NlZWQgKCkgPSByZXNldCA/c2VlZCAoYWxsb2MgKCkpXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPSBnZXRfaGFzaF92YWx1ZSAoZm9sZGVyIChyZXNldCA/c2VlZCAoYWxsb2MgKCkpKSB4KVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRm9sZGluZyA9IEZvbGRpbmcgKEludGVybmFsaGFzaClcbiAgICBpbmNsdWRlIEZvbGRpbmdcblxuICAgICgqIFtGb2xkaW5nXSBwcm92aWRlcyBzb21lIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgW2hhc2hfKl0gZnVuY3Rpb25zIGJlbG93LFxuICAgICAgIGJ1dCB0aGV5IGFyZSBpbmVmZmljaWVudCBmb3Igc29tZSB1c2UtY2FzZXMgYmVjYXVzZSBvZiB0aGUgdXNlIG9mIHRoZSBbaGFzaF9mb2xkXVxuICAgICAgIGZ1bmN0aW9ucy4gQXQgdGhpcyBwb2ludCwgdGhlIFtoYXNoX3ZhbHVlXSB0eXBlIGhhcyBiZWVuIGZpeGVkIHRvIFtpbnRdLCBzbyB0aGlzXG4gICAgICAgbW9kdWxlIGNhbiBwcm92aWRlIHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9ucy4gKilcblxuICAgIGxldCBoYXNoX2NoYXIgPSBDaGFyMC50b19pbnRcblxuICAgICgqIFRoaXMgaGFzaCB3YXMgY2hvc2VuIGZyb20gaGVyZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYmFkYm95LzYyNjc3NDNcblxuICAgICAgIEl0IGF0dGVtcHRzIHRvIGZ1bGZpbGwgdGhlIHByaW1hcnkgZ29hbHMgb2YgYSBub24tY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uOlxuXG4gICAgICAgLSBhIGJpdCBjaGFuZ2UgaW4gdGhlIGlucHV0IHNob3VsZCBjaGFuZ2UgfjEvMiBvZiB0aGUgb3V0cHV0IGJpdHNcbiAgICAgICAtIHRoZSBvdXRwdXQgc2hvdWxkIGJlIHVuaWZvcm1seSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIG91dHB1dCByYW5nZVxuICAgICAgIC0gaW5wdXRzIHRoYXQgYXJlIGNsb3NlIHRvIGVhY2ggb3RoZXIgc2hvdWxkbid0IGxlYWQgdG8gb3V0cHV0cyB0aGF0IGFyZSBjbG9zZSB0b1xuICAgICAgICAgZWFjaCBvdGhlci5cbiAgICAgICAtIGFsbCBiaXRzIG9mIHRoZSBpbnB1dCBhcmUgdXNlZCBpbiBnZW5lcmF0aW5nIHRoZSBvdXRwdXRcblxuICAgICAgIEluIG91ciBjYXNlIHdlIGFsc28gd2FudCBpdCB0byBiZSBmYXN0LCBub24tYWxsb2NhdGluZywgYW5kIGlubGluYWJsZS4gICopXG4gICAgbGV0W0BpbmxpbmUgYWx3YXlzXSBoYXNoX2ludCAodCA6IGludCkgPVxuICAgICAgbGV0IHQgPSBsbm90IHQgKyAodCBsc2wgMjEpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMjQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMykgKyAodCBsc2wgOCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAxNCkgaW5cbiAgICAgIGxldCB0ID0gdCArICh0IGxzbCAyKSArICh0IGxzbCA0KSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI4KSBpblxuICAgICAgdCArICh0IGxzbCAzMSlcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfYm9vbCB4ID0gaWYgeCB0aGVuIDEgZWxzZSAwXG5cbiAgICBleHRlcm5hbCBoYXNoX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCJCYXNlX2hhc2hfZG91YmxlXCIgW0BAbm9hbGxvY11cblxuICAgIGxldCBoYXNoX3VuaXQgKCkgPSAwXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgVFxuIiwib3BlbiBJbXBvcnQwXG5cbmxldCBwaHlzX2VxdWFsID0gcGh5c19lcXVhbFxuXG5leHRlcm5hbCBwb2x5bW9ycGhpY19jb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBwb2x5bW9ycGhpY19lcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuXG5sZXQgY29tcGFyZV9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJDb21wYXJlIGNhbGxlZCBvbiB0aGUgdHlwZSAlcywgd2hpY2ggaXMgYWJzdHJhY3QgaW4gYW4gaW1wbGVtZW50YXRpb24uXCJcbiAgICB0eXBlX25hbWVcbjs7XG5cbmxldCBlcXVhbF9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJFcXVhbCBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG50eXBlICdhIGNvbXBhcmUgPSAnYSAtPiAnYSAtPiBpbnRcbnR5cGUgJ2EgZXF1YWwgPSAnYSAtPiAnYSAtPiBib29sXG5cbm1vZHVsZSBDb21wYXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjb21wYXJlIDogdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2EgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAoJ2EsICdiKSB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAnYyBjb21wYXJlIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEVxdWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdhIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdiIGVxdWFsIC0+ICgnYSwgJ2IpIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAnYyBlcXVhbCAtPiAoJ2EsICdiLCAnYykgdCBlcXVhbFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICBsZXQgY29tcGFyZV9ib29sIDogYm9vbCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2NoYXIgOiBjaGFyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfZmxvYXQgOiBmbG9hdCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludCA6IGludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludDMyIDogaW50MzIgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQ2NCA6IGludDY0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50IDogbmF0aXZlaW50IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfc3RyaW5nIDogc3RyaW5nIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfdW5pdCA6IHVuaXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBjb21wYXJlX2FycmF5IGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgaWYgcGh5c19lcXVhbCBhIGJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgICAgaWYgcmV0IDw+IDBcbiAgICAgIHRoZW4gcmV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwgPSBBcnJheTAudW5zYWZlX2dldCBhIGlcbiAgICAgICAgICAgIGFuZCByID0gQXJyYXkwLnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCAwKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IFtdLCBfIC0+IC0xXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgeCB5IGluXG4gICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCB4cyB5c1xuICA7O1xuXG4gIGxldCBjb21wYXJlX29wdGlvbiBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgfCBOb25lLCBTb21lIF8gLT4gLTFcbiAgICB8IFNvbWUgXywgTm9uZSAtPiAxXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBjb21wYXJlX2VsdCBhIGJcbiAgOztcblxuICBsZXQgY29tcGFyZV9yZWYgY29tcGFyZV9lbHQgYSBiID0gY29tcGFyZV9lbHQgIWEgIWJcbiAgbGV0IGVxdWFsX2Jvb2wgOiBib29sIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfY2hhciA6IGNoYXIgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQgOiBpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQzMiA6IGludDMyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50NjQgOiBpbnQ2NCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA6IG5hdGl2ZWludCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3N0cmluZyA6IHN0cmluZyBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3VuaXQgOiB1bml0IGVxdWFsID0gUG9seS5lcXVhbFxuXG4gICgqIFtQb2x5LmVxdWFsXSBpcyBJRUVFIGNvbXBsaWFudCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudCBoZXJlLiAqKVxuICBsZXQgZXF1YWxfZmxvYXQgeCB5ID0gZXF1YWxfaW50IChjb21wYXJlX2Zsb2F0IHggeSkgMFxuXG4gIGxldCBlcXVhbF9hcnJheSBlcXVhbF9lbHQgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8XG4gICAgbGV0IGxlbl9hID0gQXJyYXkwLmxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgZXF1YWwgbGVuX2EgbGVuX2JcbiAgICAmJlxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGkgPSBsZW5fYVxuICAgICAgfHxcbiAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgZXF1YWxfZWx0IGwgciAmJiBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCByZWMgZXF1YWxfbGlzdCBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCBbXSwgXyB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IGVxdWFsX2VsdCB4IHkgJiYgZXF1YWxfbGlzdCBlcXVhbF9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIGVxdWFsX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGVxdWFsX2VsdCBhIGJcbiAgOztcblxuICBsZXQgZXF1YWxfcmVmIGVxdWFsX2VsdCBhIGIgPSBlcXVhbF9lbHQgIWEgIWJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIGZvciB1c2UgYnkgcHB4X2hhc2gsIGFuZCBpcyB0aHVzIG5vdCBpbiB0aGUgaW50ZXJmYWNlIG9mIEJhc2UuICopXG5tb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBIYXNoID0gSGFzaCAoKiogQGNhbm9uaWNhbCBCYXNlLkhhc2ggKilcbmVuZFxuXG50eXBlICdhIGhhc2hfZm9sZCA9IFN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFN0ZC5IYXNoLnN0YXRlXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiB0IGhhc2hfZm9sZFxuICAgIHZhbCBoYXNoIDogdCAtPiBTdGQuSGFzaC5oYXNoX3ZhbHVlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2EgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6ICdhIGhhc2hfZm9sZCAtPiAnYiBoYXNoX2ZvbGQgLT4gKCdhLCAnYikgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3RcbiAgICAgIDogICdhIGhhc2hfZm9sZFxuICAgICAgLT4gJ2IgaGFzaF9mb2xkXG4gICAgICAtPiAnYyBoYXNoX2ZvbGRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGhhc2hfZm9sZFxuICBlbmRcbmVuZFxuIiwib3BlbiBIYXNoLkJ1aWx0aW5cbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPSBTZXhwbGliMC5TZXhwLnQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG5sZXQgcmVjIGNvbXBhcmUgPVxuICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgICAgdGhlbiAwXG4gICAgIGVsc2UgKFxuICAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgIHwgQXRvbSBfYV9fMDAzXywgQXRvbSBfYl9fMDA0XyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDAzXyBfYl9fMDA0X1xuICAgICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgICAgIHwgTGlzdCBfYV9fMDA1XywgTGlzdCBfYl9fMDA2XyAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSBfYV9fMDA1XyBfYl9fMDA2XylcbiAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG47O1xuXG5sZXQgcmVjIChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBBdG9tIF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgX2EwXG4gICAgIHwgTGlzdCBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF90IGhzdiBfYTBcbiAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcblxuYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2NvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxubGV0IG9mX3N0cmluZyA9ICgpXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPVxuICB8IFczMlxuICB8IFc2NFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFczMiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXMzJcIlxuICAgIHwgVzY0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlc2NFwiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBudW1fYml0cyA9IGZ1bmN0aW9uXG4gIHwgVzMyIC0+IDMyXG4gIHwgVzY0IC0+IDY0XG47O1xuXG5sZXQgd29yZF9zaXplID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZV9pbl9iaXRzIHdpdGhcbiAgfCAzMiAtPiBXMzJcbiAgfCA2NCAtPiBXNjRcbiAgfCBfIC0+IGZhaWx3aXRoIFwidW5rbm93biB3b3JkIHNpemVcIlxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgciA9IHJlZiBbIFwiQmFzZS5TZXhwLnBwX2h1bVwiIF1cbmxldCBhbGwgKCkgPSAhclxubGV0IHJlZ2lzdGVyIHAgPSByIDo9IHAgOjogIXJcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcHAgOiBGb3JtYXR0ZXIudCAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfcHAgKE0gOiBzaWdcbiAgICBpbmNsdWRlIFNcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cblxuICBsZXQgKCkgPSByZWdpc3RlciAoTS5tb2R1bGVfbmFtZSBeIFwiLnBwXCIpXG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyIChNIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG4gIFJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGxldCBwcCBmb3JtYXR0ZXIgdCA9IENhbWwuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmb3JtYXR0ZXIgKE0udG9fc3RyaW5nIHQpXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBleG4gW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9leG4gOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuW0BAQGVuZF1cblxubGV0IGV4aXQgPSBDYW1sLmV4aXRcblxuZXhjZXB0aW9uIEZpbmFsbHkgb2YgdCAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGaW5hbGx5XSAoZnVuY3Rpb25cbiAgICB8IEZpbmFsbHkgKGFyZzBfXzAwMV8sIGFyZzFfXzAwMl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfXG4gICAgICBhbmQgcmVzMV9fMDA0XyA9IHNleHBfb2ZfdCBhcmcxX18wMDJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleG4ubWwuRmluYWxseVwiOyByZXMwX18wMDNfOyByZXMxX18wMDRfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFJlcmFpc2VkIG9mIHN0cmluZyAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBSZXJhaXNlZF0gKGZ1bmN0aW9uXG4gICAgfCBSZXJhaXNlZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgIGxldCByZXMwX18wMDdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA1X1xuICAgICAgYW5kIHJlczFfXzAwOF8gPSBzZXhwX29mX3QgYXJnMV9fMDA2XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLlJlcmFpc2VkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5leGNlcHRpb24gU2V4cCBvZiBTZXhwLnRcblxuKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZTpcblxuICAge1tcbiAgICAgZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuICAgICAoKiAuLi4gKilcbiAgICAgW0BAQGVuZF1cbiAgIF19XG5cbiAgIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmEgd3JhcHBpbmcgb2YgWyhTZXhwIC4uLildLiAqKVxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNleHBdIChmdW5jdGlvblxuICAgIHwgU2V4cCB0IC0+IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBTZXhwIHNleHBcblxubGV0IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIHQgYmFja3RyYWNlID1cbiAgQ2FtbC5QcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB0IGJhY2t0cmFjZVxuOztcblxuZXh0ZXJuYWwgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCA6IHQgLT4gYm9vbCA9IFwiQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG5cIlxuXG5sZXQgcmVyYWlzZSBleG4gc3RyID1cbiAgbGV0IGV4bicgPSBSZXJhaXNlZCAoc3RyLCBleG4pIGluXG4gIGlmIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuXG4gIHRoZW4gKFxuICAgIGxldCBidCA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSBleG4nIGJ0KVxuICBlbHNlIHJhaXNlIGV4bidcbjs7XG5cbmxldCByZXJhaXNlZiBleGMgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gc3RyICgpIC0+IHJlcmFpc2UgZXhjIHN0cikgZm9ybWF0XG5sZXQgdG9fc3RyaW5nIGV4YyA9IFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgKHNleHBfb2ZfZXhuIGV4YylcbmxldCB0b19zdHJpbmdfbWFjaCBleGMgPSBTZXhwLnRvX3N0cmluZ19tYWNoIChzZXhwX29mX2V4biBleGMpXG5sZXQgc2V4cF9vZl90ID0gc2V4cF9vZl9leG5cblxubGV0IHByb3RlY3R4IH5mIHggfihmaW5hbGx5IDogXyAtPiB1bml0KSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgcmVzIC0+XG4gICAgZmluYWxseSB4O1xuICAgIHJlc1xuICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKG1hdGNoIGZpbmFsbHkgeCB3aXRoXG4gICAgIHwgKCkgLT4gcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuIGJ0XG4gICAgIHwgZXhjZXB0aW9uIGZpbmFsX2V4biAtPlxuICAgICAgICgqIFVuZm9ydHVuYXRlbHksIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFtmaW5hbF9leG5dIGlzIGRpc2NhcmRlZCBoZXJlLiAqKVxuICAgICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChGaW5hbGx5IChleG4sIGZpbmFsX2V4bikpIGJ0KVxuOztcblxubGV0IHByb3RlY3QgfmYgfmZpbmFsbHkgPSBwcm90ZWN0eCB+ZiAoKSB+ZmluYWxseVxuXG5sZXQgZG9lc19yYWlzZSAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICB0cnlcbiAgICBpZ25vcmUgKGYgKCkgOiBhKTtcbiAgICBmYWxzZVxuICB3aXRoXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBleG5cblxuICAgIGxldCBwcCBwcGYgdCA9XG4gICAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgdCB3aXRoXG4gICAgICB8IFNvbWUgc2V4cCAtPiBTZXhwLnBwX2h1bSBwcGYgc2V4cFxuICAgICAgfCBOb25lIC0+IENhbWwuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKENhbWwuUHJpbnRleGMudG9fc3RyaW5nIHQpXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FeG5cIlxuICBlbmQpXG5cbmxldCBwcmludF93aXRoX2JhY2t0cmFjZSBleGMgcmF3X2JhY2t0cmFjZSA9XG4gIENhbWwuRm9ybWF0LmVwcmludGYgXCJAWzwyPlVuY2F1Z2h0IGV4Y2VwdGlvbjpAXFxuQFxcbkBbJWFAXUBdQFxcbkAuXCIgcHAgZXhjO1xuICBpZiBDYW1sLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXMgKClcbiAgdGhlbiBDYW1sLlByaW50ZXhjLnByaW50X3Jhd19iYWNrdHJhY2UgQ2FtbC5zdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgQ2FtbC5mbHVzaCBDYW1sLnN0ZGVyclxuOztcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciAoKSA9XG4gIENhbWwuUHJpbnRleGMuc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIHByaW50X3dpdGhfYmFja3RyYWNlXG47O1xuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2F1eCB+ZG9fYXRfZXhpdCB+ZXhpdCBmID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4YyAtPlxuICAgIGxldCByYXdfYmFja3RyYWNlID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICgqIE9uZSByZWFzb24gdG8gcnVuIFtkb19hdF9leGl0XSBoYW5kbGVycyBiZWZvcmUgcHJpbnRpbmcgb3V0IHRoZSBlcnJvciBtZXNzYWdlIGlzXG4gICAgICAgdGhhdCBpdCBoZWxwcyBjdXJzZXMgYXBwbGljYXRpb25zIGJyaW5nIHRoZSB0ZXJtaW5hbCBpbiBhIGdvb2Qgc3RhdGUsIG90aGVyd2lzZSB0aGVcbiAgICAgICBlcnJvciBtZXNzYWdlIG1pZ2h0IGdldCBjb3JydXB0ZWQuICBBbHNvLCB0aGUgT0NhbWwgdG9wLWxldmVsIHVuY2F1Z2h0IGV4Y2VwdGlvblxuICAgICAgIGhhbmRsZXIgZG9lcyB0aGUgc2FtZS4gKilcbiAgICBpZiBkb19hdF9leGl0XG4gICAgdGhlbiAoXG4gICAgICB0cnkgQ2FtbC5kb19hdF9leGl0ICgpIHdpdGhcbiAgICAgIHwgXyAtPiAoKSk7XG4gICAgKHRyeSBwcmludF93aXRoX2JhY2t0cmFjZSBleGMgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgIHwgXyAtPlxuICAgICAgICh0cnlcbiAgICAgICAgICBDYW1sLlByaW50Zi5lcHJpbnRmIFwiRXhuLmhhbmRsZV91bmNhdWdodCBjb3VsZCBub3QgcHJpbnQ7IGV4aXRpbmcgYW55d2F5XFxuJSFcIlxuICAgICAgICB3aXRoXG4gICAgICAgIHwgXyAtPiAoKSkpO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID0gaGFuZGxlX3VuY2F1Z2h0X2F1eCBmIH5leGl0IH5kb19hdF9leGl0OnRydWVcblxubGV0IGhhbmRsZV91bmNhdWdodCB+ZXhpdDptdXN0X2V4aXQgZiA9XG4gIGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdDooaWYgbXVzdF9leGl0IHRoZW4gZXhpdCBlbHNlIGlnbm9yZSkgfmRvX2F0X2V4aXQ6bXVzdF9leGl0XG47O1xuXG5sZXQgcmVyYWlzZV91bmNhdWdodCBzdHIgZnVuYyA9XG4gIHRyeSBmdW5jICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKFJlcmFpc2VkIChzdHIsIGV4bikpIGJ0XG47O1xuXG5leHRlcm5hbCBjbGVhcl9iYWNrdHJhY2UgOiB1bml0IC0+IHVuaXQgPSBcIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zXCIgW0BAbm9hbGxvY11cblxubGV0IHJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIGUgPVxuICAoKiBXZSBjbGVhciB0aGUgYmFja3RyYWNlIHRvIHJlZHVjZSBjb25mdXNpb24sIHNvIHRoYXQgcGVvcGxlIGRvbid0IHRoaW5rIHdoYXRldmVyXG4gICAgIGlzIHN0b3JlZCBjb3JyZXNwb25kcyB0byB0aGlzIHJhaXNlLiAqKVxuICBjbGVhcl9iYWNrdHJhY2UgKCk7XG4gIENhbWwucmFpc2Vfbm90cmFjZSBlXG47O1xuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGNsZWFyX2JhY2t0cmFjZSA9IGNsZWFyX2JhY2t0cmFjZVxuZW5kXG4iLCIoKiBiZWxvbmdzIGluIENvbW1vbiwgYnV0IG1vdmVkIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHJldHVybiA9IHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxubGV0IHdpdGhfcmV0dXJuICh0eXBlIGEpIGYgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAoKiBSYWlzZWQgdG8gaW5kaWNhdGUgfnJldHVybiB3YXMgY2FsbGVkLiAgTG9jYWwgc28gdGhhdCB0aGUgZXhjZXB0aW9uIGlzIHRpZWQgdG8gYVxuICAgICAgIHBhcnRpY3VsYXIgY2FsbCBvZiBbd2l0aF9yZXR1cm5dLiAqKVxuICAgIGV4Y2VwdGlvbiBSZXR1cm4gb2YgYVxuICBlbmRcbiAgaW5cbiAgbGV0IGlzX2FsaXZlID0gcmVmIHRydWUgaW5cbiAgbGV0IHJldHVybiBhID1cbiAgICBpZiBub3QgIWlzX2FsaXZlXG4gICAgdGhlbiBmYWlsd2l0aCBcInVzZSBvZiBbcmV0dXJuXSBmcm9tIGEgW3dpdGhfcmV0dXJuXSB0aGF0IGFscmVhZHkgcmV0dXJuZWRcIjtcbiAgICBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgKE0uUmV0dXJuIGEpXG4gIGluXG4gIHRyeVxuICAgIGxldCBhID0gZiB7IHJldHVybiB9IGluXG4gICAgaXNfYWxpdmUgOj0gZmFsc2U7XG4gICAgYVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgaXNfYWxpdmUgOj0gZmFsc2U7XG4gICAgKG1hdGNoIGV4biB3aXRoXG4gICAgIHwgTS5SZXR1cm4gYSAtPiBhXG4gICAgIHwgXyAtPiByYWlzZSBleG4pXG47O1xuXG5sZXQgd2l0aF9yZXR1cm5fb3B0aW9uIGYgPVxuICB3aXRoX3JldHVybiAoZnVuIHJldHVybiAtPlxuICAgIGYgeyByZXR1cm4gPSAoZnVuIGEgLT4gcmV0dXJuLnJldHVybiAoU29tZSBhKSkgfTtcbiAgICBOb25lKVxuOztcblxubGV0IHByZXBlbmQgeyByZXR1cm4gfSB+ZiA9IHsgcmV0dXJuID0gKGZ1biB4IC0+IHJldHVybiAoZiB4KSkgfVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIEJhc2ljID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgaWRlbnRpdGllcyBvdWdodCB0byBob2xkIChmb3Igc29tZSB2YWx1ZSBvZiA9KTpcblxuICAgICAgLSBbcmV0dXJuIHggPj49IGYgPSBmIHhdXG4gICAgICAtIFt0ID4+PSBmdW4geCAtPiByZXR1cm4geCA9IHRdXG4gICAgICAtIFsodCA+Pj0gZikgPj49IGcgPSB0ID4+PSBmdW4geCAtPiAoZiB4ID4+PSBnKV1cblxuICAgICAgTm90ZTogWz4+PV0gaXMgdGhlIGluZml4IG5vdGF0aW9uIGZvciBbYmluZF0pICopXG5cbiAgKCoqIFRoZSBbbWFwXSBhcmd1bWVudCB0byBbTW9uYWQuTWFrZV0gc2F5cyBob3cgdG8gaW1wbGVtZW50IHRoZSBtb25hZCdzIFttYXBdIGZ1bmN0aW9uLlxuICAgICAgW2BEZWZpbmVfdXNpbmdfYmluZF0gbWVhbnMgdG8gZGVmaW5lIFttYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC5cblxuICAgICAgU29tZSBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW01vbmFkLk1ha2VdIGFyZSBkZWZpbmVkIGluIHRlcm1zIG9mIFttYXBdLCBzb1xuICAgICAgcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFttYXBdIHdpbGwgaW1wcm92ZSB0aGVpciBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBtYXAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdCBdXG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXggPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIFt0ID4+PSBmXSByZXR1cm5zIGEgY29tcHV0YXRpb24gdGhhdCBzZXF1ZW5jZXMgdGhlIGNvbXB1dGF0aW9ucyByZXByZXNlbnRlZCBieSB0d29cbiAgICAgIG1vbmFkIGVsZW1lbnRzLiAgVGhlIHJlc3VsdGluZyBjb21wdXRhdGlvbiBmaXJzdCBkb2VzIFt0XSB0byB5aWVsZCBhIHZhbHVlIFt2XSwgYW5kXG4gICAgICB0aGVuIHJ1bnMgdGhlIGNvbXB1dGF0aW9uIHJldHVybmVkIGJ5IFtmIHZdLiAqKVxuICB2YWwgKCA+Pj0gKSA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAoKiogW3QgPj58IGZdIGlzIFt0ID4+PSAoZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uICopXG4gIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXggPSBzaWdcbiAgKCoqIE9wZW5pbmcgYSBtb2R1bGUgb2YgdGhpcyB0eXBlIGFsbG93cyBvbmUgdG8gdXNlIHRoZSBbJWJpbmRdIGFuZCBbJW1hcF0gc3ludGF4XG4gICAgICBleHRlbnNpb25zIGRlZmluZWQgYnkgcHB4X2xldCwgYW5kIGJyaW5ncyBbcmV0dXJuXSBpbnRvIHNjb3BlLiAqKVxuXG4gIHR5cGUgJ2EgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgKCoqIFRoZXNlIGFyZSBjb252ZW5pZW50IHRvIGhhdmUgaW4gc2NvcGUgd2hlbiBwcm9ncmFtbWluZyB3aXRoIGEgbW9uYWQ6ICopXG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgaW5jbHVkZSBJbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICAgIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgKCoqIFtiaW5kIHQgfmZdID0gW3QgPj49IGZdICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCoqIFtyZXR1cm4gdl0gcmV0dXJucyB0aGUgKHRyaXZpYWwpIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyB2LiAqKVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIHQgfmZdIGlzIHQgPj58IGYuICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5cbiAgKCoqIFtqb2luIHRdIGlzIFt0ID4+PSAoZnVuIHQnIC0+IHQnKV0uICopXG4gIHZhbCBqb2luIDogJ2EgdCB0IC0+ICdhIHRcblxuICAoKiogW2lnbm9yZV9tIHRdIGlzIFttYXAgdCB+ZjooZnVuIF8gLT4gKCkpXS4gIFtpZ25vcmVfbV0gdXNlZCB0byBiZSBjYWxsZWQgW2lnbm9yZV0sXG4gICAgICBidXQgd2UgZGVjaWRlZCB0aGF0IHdhcyBhIGJhZCBuYW1lLCBiZWNhdXNlIGl0IHNoYWRvd2VkIHRoZSB3aWRlbHkgdXNlZFxuICAgICAgW0NhbWwuaWdub3JlXS4gIFNvbWUgbW9uYWRzIHN0aWxsIGRvIFtsZXQgaWdub3JlID0gaWdub3JlX21dIGZvciBoaXN0b3JpY2FsXG4gICAgICByZWFzb25zLiAqKVxuICB2YWwgaWdub3JlX20gOiAnYSB0IC0+IHVuaXQgdFxuXG4gIHZhbCBhbGwgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG5cbiAgKCoqIExpa2UgW2FsbF0sIGJ1dCBlbnN1cmVzIHRoYXQgZXZlcnkgbW9uYWRpYyB2YWx1ZSBpbiB0aGUgbGlzdCBwcm9kdWNlcyBhIHVuaXQgdmFsdWUsXG4gICAgICBhbGwgb2Ygd2hpY2ggYXJlIGRpc2NhcmRlZCByYXRoZXIgdGhhbiBiZWluZyBjb2xsZWN0ZWQgaW50byBhIGxpc3QuICopXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBTX3dpdGhvdXRfc3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTeW50YXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMiA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBnZXRzIHVuaWZpZWQgYWNyb3NzIGFsbCB0aGUgY29tcHV0YXRpb24uXG4gICAgICBUaGlzIGlzIHVzZWQgdG8gZW5jb2RlIG1vbmFkcyB3b3JraW5nIG9uIGEgbXVsdGkgcGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGxpa2VcbiAgICAgIChbKCdhLCdiKSByZXN1bHRdKS4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHQgXVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgyID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MiA9IHNpZ1xuICB0eXBlICgnYSwgJ2UpIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcblxuICAgIGluY2x1ZGUgSW5maXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZSkgdCAtPiAoJ2IsICdlKSB0IC0+ICgnYSAqICdiLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdHdvIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBpcyBhbHdheXMganVzdFxuICAgICAgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgaW5jbHVkZSBJbmZpeDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICBpbmNsdWRlIFN5bnRheDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdlKSB0KSAtPiAoJ2IsICdlKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnZSkgdCwgJ2UpIHQgLT4gKCdhLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2UpIHQgLT4gKHVuaXQsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMyA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGdldCB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlXG4gICAgICBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgzID0gc2lnXG4gICgqKiBTYW1lIGFzIEluZml4LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmQgdGhpcmQgYXJlXG4gICAgICBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDMgPSBzaWdcbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuXG4gICAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdiLCAnZCwgJ2UpIHQgLT4gKCdhICogJ2IsICdkLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kXG4gICAgICBhbmQgdGhpcmQgYXJlIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgaW5jbHVkZSBTeW50YXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2QsICdlKSB0LCAnZCwgJ2UpIHQgLT4gKCdhLCAnZCwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdkLCAnZSkgdCAtPiAodW5pdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdkLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdkLCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gc2lnXG4gICgqKiBJbmRleGVkIG1vbmFkLCBpbiB0aGUgc3R5bGUgb2YgQXRrZXkuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlIGNvbXBvc2VkXG4gICAgICBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiBUbyBzZWUgdGhpcyBtb3JlIGNsZWFybHksIHlvdSBjYW4gbG9vayBhdCB0aGUgdHlwZSBvZiBiaW5kOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgXX1cblxuICAgICAgYW5kIGlzb2xhdGUgc29tZSBvZiB0aGUgdHlwZSB2YXJpYWJsZXMgdG8gc2VlIHRoZWlyIGluZGl2aWR1YWwgYmVoYXZpb3JzOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICdhICAgICAgICAgICAgIC0+IGY6KCdhIC0+ICAnYiAgICAgICAgICAgKSAtPiAgJ2JcbiAgICAgICAgdmFsIGJpbmQgOiAgICAgICdpLCAnaiAgICAtPiAgICAgICAgICAgICAgICdqLCAnayAgICAgLT4gICAgICdpLCAna1xuICAgICAgXX1cblxuICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQXRrZXktc3R5bGUgaW5kZXhlZCBtb25hZHMsIHNlZTpcblxuICAgICAge3ZcbiAgICAgICAgUGFyYW1ldGVyaXNlZCBOb3Rpb25zIG9mIENvbXB1dGF0aW9uXG4gICAgICAgIFJvYmVydCBBdGtleVxuICAgICAgICBodHRwOi8vYmVudG5pYi5vcmcvcGFyYW1ub3Rpb25zLWpmcC5wZGZcbiAgICAgIHZ9ICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuXG4gICAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdiLCAnaiwgJ2spIHQgLT4gKCdhICogJ2IsICdpLCAnaykgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIGluY2x1ZGUgU3ludGF4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnaiwgJ2spIHQsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaykgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2ksICdqKSB0IC0+ICh1bml0LCAnaSwgJ2opIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2ksICdpKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdpLCAnaSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2ksICdpKSB0IGxpc3QgLT4gKHVuaXQsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTX3RvX1NfaW5kZXhlZCAoWCA6IFMpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgU19pbmRleGVkX3RvX1MyIChYIDogU19pbmRleGVkKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1vbmFkID0gc2lnXG4gICgqKiBBIG1vbmFkIGlzIGFuIGFic3RyYWN0aW9uIG9mIHRoZSBjb25jZXB0IG9mIHNlcXVlbmNpbmcgb2YgY29tcHV0YXRpb25zLiAgQSB2YWx1ZSBvZlxuICAgICAgdHlwZSBbJ2EgbW9uYWRdIHJlcHJlc2VudHMgYSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIFsnYV0uICopXG5cbiAgbW9kdWxlIHR5cGUgQmFzaWMgPSBCYXNpY1xuICBtb2R1bGUgdHlwZSBCYXNpYzIgPSBCYXNpYzJcbiAgbW9kdWxlIHR5cGUgQmFzaWMzID0gQmFzaWMzXG4gIG1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBCYXNpY19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEluZml4ID0gSW5maXhcbiAgbW9kdWxlIHR5cGUgSW5maXgyID0gSW5maXgyXG4gIG1vZHVsZSB0eXBlIEluZml4MyA9IEluZml4M1xuICBtb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gSW5maXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTeW50YXggPSBTeW50YXhcbiAgbW9kdWxlIHR5cGUgU3ludGF4MiA9IFN5bnRheDJcbiAgbW9kdWxlIHR5cGUgU3ludGF4MyA9IFN5bnRheDNcbiAgbW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBTeW50YXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gU193aXRob3V0X3N5bnRheFxuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gIG1vZHVsZSB0eXBlIFMzID0gUzNcbiAgbW9kdWxlIHR5cGUgU19pbmRleGVkID0gU19pbmRleGVkXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudFxuICBtb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50XG4gIG1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gIG1vZHVsZSBNYWtlX2luZGV4ZWQgKFggOiBCYXNpY19pbmRleGVkKSA6XG4gICAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgKCoqIERlZmluZSBhIG1vbmFkIHRocm91Z2ggYW4gaXNvbW9ycGhpc20gd2l0aCBhbiBleGlzdGluZyBtb25hZC4gRm9yIGV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgJ2EgdCA9IHsgdmFsdWUgOiAnYSB9XG5cbiAgICAgICAgaW5jbHVkZSBNb25hZC5PZl9tb25hZCAoTW9uYWQuSWRlbnQpIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgICAgIGxldCB0b19tb25hZCB7IHZhbHVlIH0gPSB2YWx1ZVxuICAgICAgICAgICAgbGV0IG9mX21vbmFkIHZhbHVlID0geyB2YWx1ZSB9XG4gICAgICAgICAgZW5kKVxuICAgICAgXX0gKilcbiAgbW9kdWxlIE9mX21vbmFkXG4gICAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkMlxuICAgICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDNcbiAgICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50XG5cbiAgbW9kdWxlIElkZW50IDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNb25hZF9pbnRmXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbmVyYWwgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmRcbiAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5lcmFsIChNIDogQmFzaWNfZ2VuZXJhbCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgPSBNLmJpbmRcbiAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gIGxldCBtYXBfdmlhX2JpbmQgbWEgfmYgPSBNLmJpbmQgbWEgfmY6KGZ1biBhIC0+IE0ucmV0dXJuIChmIGEpKVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIE0ubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYmluZCAtPiBtYXBfdmlhX2JpbmRcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gICAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggYSBiID0gYSA+Pj0gZnVuIGEgLT4gYiA+PnwgZnVuIGIgLT4gYSwgYlxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBqb2luIHQgPSB0ID4+PSBmdW4gdCcgLT4gdCdcbiAgbGV0IGlnbm9yZV9tIHQgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpXG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pbmRleGVkIChNIDogQmFzaWNfaW5kZXhlZCkgOlxuICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMyAoTSA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIE0udCA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyIChNIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0IDo9ICgnYSwgJ2QpIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoTSA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9nZW5lcmFsIChNb25hZCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgdmFsIGJpbmRcbiAgICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG4gIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudFxuICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gYSA9IE0ub2ZfbW9uYWQgKE1vbmFkLnJldHVybiBhKVxuICAgIGxldCBiaW5kIHQgfmYgPSBNLm9mX21vbmFkIChNb25hZC5iaW5kIChNLnRvX21vbmFkIHQpIH5mOihmdW4gYSAtPiBNLnRvX21vbmFkIChmIGEpKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSAoZnVuIHQgfmYgLT4gTS5vZl9tb25hZCAoTW9uYWQubWFwIChNLnRvX21vbmFkIHQpIH5mKSlcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQzXG4gICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyXG4gICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZFxuICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICAgIGVuZClcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCBiaW5kIGEgfmYgPSBmIGFcbiAgICAgIGxldCByZXR1cm4gYSA9IGFcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIChmdW4gYSB+ZiAtPiBmIGEpXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG4oKiogVGhpcyBtb2R1bGUgc2VydmVzIG1vc3RseSBhcyBhIHBhcnRpYWwgY2hlY2sgdGhhdCBbUzJdIGFuZCBbU10gYXJlIGluIHN5bmMsIGJ1dFxuICAgIGFjdHVhbGx5IGNhbGxpbmcgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bC4gKilcbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TMyAoWCA6IFMyKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MyIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkKSB0ID0gKCdhLCAnZCwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYXBwbHkgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IG1hcDIgdGEgdGIgfmYgPSBtYXAgfmYgdGEgPCo+IHRiXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwIH5mIHRhIDwqPiB0YiA8Kj4gdGNcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuICBsZXQgKCAqPiApIHUgdiA9IHJldHVybiAoZnVuICgpIHkgLT4geSkgPCo+IHUgPCo+IHZcbiAgbGV0ICggPCogKSB1IHYgPSByZXR1cm4gKGZ1biB4ICgpIC0+IHgpIDwqPiB1IDwqPiB2XG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTMgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChYIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBNYWtlMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4M1xuICAgIChYIDogRm9yX2xldF9zeW50YXgzKSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbnN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gSW1wbFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4MlxuICAgIChYIDogRm9yX2xldF9zeW50YXgyKSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbiAgTWFrZV9sZXRfc3ludGF4M1xuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuXG4gICAgICB0eXBlICgnYSwgJ2QsIF8pIHQgPSAoJ2EsICdkKSBYLnRcbiAgICBlbmQpXG4gICAgKEludGYpXG4gICAgKEltcGwpXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXhcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4KSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBYLnRcbiAgICBlbmQpXG4gICAgKEludGYpXG4gICAgKEltcGwpXG5cbigqKiBUaGlzIGZ1bmN0b3IgY2xvc2VseSByZXNlbWJsZXMgW01ha2UzXSwgYW5kIGluZGVlZCBpdCBjb3VsZCBiZSBpbXBsZW1lbnRlZFxuICAgIG11Y2ggc2hvcnRlciBpbiB0ZXJtcyBvZiBbTWFrZTNdLiBIb3dldmVyLCB3ZSBpbXBsZW1lbnQgaXQgYnkgaGFuZCBzbyB0aGF0XG4gICAgdGhlIHJlc3VsdGluZyBmdW5jdGlvbnMgYXJlIG1vcmUgZWZmaWNpZW50LCBlLmcuIHVzaW5nIFttYXAyXSBkaXJlY3RseSBpbnN0ZWFkIG9mXG4gICAgZGVmaW5pbmcgW2FwcGx5XSBpbiB0ZXJtcyBvZiBpdCBhbmQgdGhlbiBbbWFwMl0gaW4gdGVybXMgb2YgdGhhdC4gRm9yIG1vc3RcbiAgICBhcHBsaWNhdGl2ZXMgdGhpcyBkb2VzIG5vdCBtYXR0ZXIsIGJ1dCBmb3Igc29tZSAoc3VjaCBhcyBCb25zYWkuVmFsdWUudCksIGl0IGhhcyBhXG4gICAgbGFyZ2VyIGltcGFjdC4gKilcbm1vZHVsZSBNYWtlM191c2luZ19tYXAyIChYIDogQmFzaWMzX3VzaW5nX21hcDIpIDpcbiAgUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgbGV0IGFwcGx5IHRmIHRhID0gbWFwMiB0ZiB0YSB+ZjooZnVuIGYgYSAtPiBmIGEpXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfbWFwMiAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPSBtYXAyIChtYXAyIHRhIHRiIH5mKSB0YyB+ZjooZnVuIGZhYiBjIC0+IGZhYiBjKVxuICBsZXQgYWxsIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihtYXAyIH5mOihmdW4geCB4cyAtPiB4IDo6IHhzKSlcbiAgbGV0ICggKj4gKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuICgpIHkgLT4geSlcbiAgbGV0ICggPCogKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuIHggKCkgLT4geClcbiAgbGV0IGFsbF91bml0IHRzID0gTGlzdC5mb2xkIHRzIH5pbml0OihyZXR1cm4gKCkpIH5mOiggKj4gKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSAoICo+IClcbiAgICBsZXQgKCA8KiApID0gKCA8KiApXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlMl91c2luZ19tYXAyIChYIDogQmFzaWMyX3VzaW5nX21hcDIpIDpcbiAgUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTNfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfbWFwMiAoWCA6IEJhc2ljX3VzaW5nX21hcDIpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPVxuICBNYWtlMl91c2luZ19tYXAyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDIgKE0gOiBNb25hZC5TMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBNLnQgPSBNYWtlMiAoc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgTS50XG5cbiAgICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cbiAgICBsZXQgYXBwbHkgbWYgbXggPSBNLmJpbmQgbWYgfmY6KGZ1biBmIC0+IE0ubWFwIG14IH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIE0ubWFwXG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkIChNIDogTW9uYWQuUykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IE9mX21vbmFkMiAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgXykgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBDb21wb3NlIChGIDogUykgKEcgOiBTKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYSBGLnQgRy50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEYudCBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRy5yZXR1cm4gKEYucmV0dXJuIGEpXG4gICAgICBsZXQgYXBwbHkgdGYgdHggPSBHLmFwcGx5IChHLm1hcCB+ZjpGLmFwcGx5IHRmKSB0eFxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEcubWFwIH5mOihGLm1hcCB+ZikgdFxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gY3VzdG9tX21hcFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgUGFpciAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50ICogJ2EgRy50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudFxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBGLnJldHVybiBhLCBHLnJldHVybiBhXG4gICAgICBsZXQgYXBwbHkgdGYgdHggPSBGLmFwcGx5IChmc3QgdGYpIChmc3QgdHgpLCBHLmFwcGx5IChzbmQgdGYpIChzbmQgdHgpXG4gICAgICBsZXQgY3VzdG9tX21hcCB0IH5mID0gRi5tYXAgfmYgKGZzdCB0KSwgRy5tYXAgfmYgKHNuZCB0KVxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gY3VzdG9tX21hcFxuICAgIGVuZClcbmVuZFxuIiwiKCogW0J5dGVzMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbQ2FtbC5CeXRlc10uIFtCeXRlczBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzc1xuICAgdGhlIHBhcnQgb2YgW0NhbWwuQnl0ZXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGJ5dGVzMC5tbCBzaG91bGQgdXNlIFtDYW1sLkJ5dGVzXS4gW0J5dGVzMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZFxuICAgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBzdHJpbmdzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5CeXRlc10gaW5cbiAgIGJ1aWxkIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEJ5dGVzICA9IEJ5dGVzMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBCeXRlcyA9IEJ5dGVzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5CeXRlc10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0ICAgICAgICA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5cbiAgKCogW3Vuc2FmZV9ibGl0X3N0cmluZ10gaXMgbm90IGV4cG9ydGVkIGluIHRoZSBbc3RkbGliXSBzbyB3ZSBleHBvcnQgaXQgaGVyZSAqKVxuICBleHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICA6ICBzcmM6c3RyaW5nXG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6Ynl0ZXNcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0dVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmVuZFxuXG5pbmNsdWRlIFByaW1pdGl2ZXNcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBibGl0ID0gQ2FtbC5CeXRlcy5ibGl0XG5sZXQgYmxpdF9zdHJpbmcgPSBDYW1sLkJ5dGVzLmJsaXRfc3RyaW5nXG5sZXQgY29tcGFyZSA9IENhbWwuQnl0ZXMuY29tcGFyZVxubGV0IGNvcHkgPSBDYW1sLkJ5dGVzLmNvcHlcbmxldCBjcmVhdGUgPSBDYW1sLkJ5dGVzLmNyZWF0ZVxubGV0IGZpbGwgPSBDYW1sLkJ5dGVzLmZpbGxcbmxldCBtYWtlID0gQ2FtbC5CeXRlcy5tYWtlXG5sZXQgbWFwID0gQ2FtbC5CeXRlcy5tYXBcbmxldCBtYXBpID0gQ2FtbC5CeXRlcy5tYXBpXG5sZXQgc3ViID0gQ2FtbC5CeXRlcy5zdWJcbmxldCB1bnNhZmVfYmxpdCA9IENhbWwuQnl0ZXMudW5zYWZlX2JsaXRcbmxldCB0b19zdHJpbmcgPSBDYW1sLkJ5dGVzLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IENhbWwuQnl0ZXMub2Zfc3RyaW5nXG5sZXQgdW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpzID0gQ2FtbC5CeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcbmxldCB1bnNhZmVfb2Zfc3RyaW5nX3Byb21pc2Vfbm9fbXV0YXRpb24gPSBDYW1sLkJ5dGVzLnVuc2FmZV9vZl9zdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EgdCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgU19mYyA9IHNpZ1xuICB0eXBlIGNvbXBhcmFibGVfdFxuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgdCA6PSBjb21wYXJhYmxlX3RcbmVuZFxuXG5tb2R1bGUgTW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdiKVxuZW5kXG5cbmxldCBtYWtlICh0eXBlIHQpIH5jb21wYXJlIH5zZXhwX29mX3QgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgY29tcGFyYWJsZV90ID0gdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kIDogU19mY1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlX3QgPSB0KVxuOztcblxubW9kdWxlIFNfdG9fUzEgKFMgOiBTKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBTLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG9wZW4gU1xuXG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IE0ueyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICdhIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIl9cIlxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIGNvbXBhcmF0b3IgLT4gKCdhIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yXG4gICAgOiAgKCdhLCAnY21wX2EpIGNvbXBhcmF0b3JcbiAgICAtPiAoJ2IsICdjbXBfYikgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsICdiKSB0LCAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkMiAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2EsICdiKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhIGIgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdFxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcCkgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsIF8pIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWRfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYSwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wX2EgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2YsICdzKSB0ID1cbiAgfCBGaXJzdCBvZiAnZlxuICB8IFNlY29uZCBvZiAnc1xuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOlxuICAnZiAncy4gKCdmIC0+ICdmIC0+IGludCkgLT4gKCdzIC0+ICdzIC0+IGludCkgLT4gKCdmLCAncykgdCAtPiAoJ2YsICdzKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19mIF9jbXBfX3MgYV9fMDAxXyBiX18wMDJfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgfCBGaXJzdCBfYV9fMDAzXywgRmlyc3QgX2JfXzAwNF8gLT4gX2NtcF9fZiBfYV9fMDAzXyBfYl9fMDA0X1xuICAgIHwgRmlyc3QgXywgXyAtPiAtMVxuICAgIHwgXywgRmlyc3QgXyAtPiAxXG4gICAgfCBTZWNvbmQgX2FfXzAwNV8sIFNlY29uZCBfYl9fMDA2XyAtPiBfY21wX19zIF9hX18wMDVfIF9iX18wMDZfKVxuOztcblxubGV0IGhhc2hfZm9sZF90XG4gIDogdHlwZSBmIHMuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBmIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHMgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+IChmLCBzKSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfZiBfaGFzaF9mb2xkX3MgaHN2IGFyZyAtPlxuICBtYXRjaCBhcmcgd2l0aFxuICB8IEZpcnN0IF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9mIGhzdiBfYTBcbiAgfCBTZWNvbmQgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX3MgaHN2IF9hMFxuOztcblxubGV0IHRfb2Zfc2V4cCA6XG4gICdmICdzLlxuICAoU2V4cGxpYjAuU2V4cC50IC0+ICdmKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdzKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKCdmLCAncykgdFxuICA9XG4gIGZ1biAodHlwZSBmX18wMjNfIHNfXzAyNF8pXG4gICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBmX18wMjNfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IHNfXzAyNF8pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgIC0+IChmX18wMjNfLCBzX18wMjRfKSB0KSAtPlxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAxMV8gPSBcImVpdGhlcjAubWwudFwiIGluXG4gICAgZnVuIF9vZl9mX18wMDdfIF9vZl9zX18wMDhfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIF90YWdfXzAxNF8pIDo6IHNleHBfYXJnc19fMDE1XykgYXNcbiAgICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE2XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2ZfXzAwN18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgICBGaXJzdCByZXMwX18wMTdfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgICBfc2V4cF9fMDEzXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBfdGFnX18wMTlfKSA6OiBzZXhwX2FyZ3NfXzAyMF8pIGFzXG4gICAgICAgIF9zZXhwX18wMThfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAyMF8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAyMV8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IF9vZl9zX18wMDhfIGFyZzBfXzAyMV8gaW5cbiAgICAgICAgICAgU2Vjb25kIHJlczBfXzAyMl9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMTFfXG4gICAgICAgICAgICAgX3RhZ19fMDE5X1xuICAgICAgICAgICAgIF9zZXhwX18wMThfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZmlyc3RcIiB8IFwiRmlyc3RcIikgYXMgc2V4cF9fMDEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTJfXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJzZWNvbmRcIiB8IFwiU2Vjb25kXCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG4gICAgICB8IHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuOztcblxubGV0IHNleHBfb2ZfdCA6XG4gICdmICdzLlxuICAoJ2YgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2YsICdzKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBmX18wMzFfIHNfXzAzMl8pXG4gICAgICA6ICAoKGZfXzAzMV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDMyXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGZfXzAzMV8sIHNfXzAzMl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfZl9fMDI1XyBfb2Zfc19fMDI2XyAtPiBmdW5jdGlvblxuICAgICAgfCBGaXJzdCBhcmcwX18wMjdfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjhfID0gX29mX2ZfXzAyNV8gYXJnMF9fMDI3XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJGaXJzdFwiOyByZXMwX18wMjhfIF1cbiAgICAgIHwgU2Vjb25kIGFyZzBfXzAyOV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMF8gPSBfb2Zfc19fMDI2XyBhcmcwX18wMjlfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNlY29uZFwiOyByZXMwX18wMzBfIF1cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICdmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICdzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICgnZiwgJ3MpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gID1cbiAgZnVuIF8nZl9zZXhwX2dyYW1tYXIgXydzX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRmlyc3RcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlNlY29uZFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nc19zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cbiIsIigqIFRoZSB0eXBlIFt0XSBzaG91bGQgYmUgYWJzdHJhY3QgdG8gbWFrZSB0aGUgZnNldCBhbmQgc2V0IGZ1bmN0aW9ucyB1bmF2YWlsYWJsZVxuICAgZm9yIHByaXZhdGUgdHlwZXMgYXQgdGhlIGxldmVsIG9mIHR5cGVzIChhbmQgbm90IGJ5IHB1dHRpbmcgTm9uZSBpbiB0aGUgZmllbGQpLlxuICAgVW5mb3J0dW5hdGVseSwgbWFraW5nIHRoZSB0eXBlIGFic3RyYWN0IG1lYW5zIHRoYXQgd2hlbiBjcmVhdGluZyBmaWVsZHMgKHRocm91Z2hcbiAgIGEgW2NyZWF0ZV0gZnVuY3Rpb24pIHZhbHVlIHJlc3RyaWN0aW9uIGtpY2tzIGluLiBUaGlzIGlzIHdvcmtlZCBhcm91bmQgYnkgaW5zdGVhZFxuICAgbm90IG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCwgYnV0IGZvcmNpbmcgYW55b25lIGJyZWFraW5nIHRoZSBhYnN0cmFjdGlvbiB0byB1c2VcbiAgIHRoZSBbRm9yX2dlbmVyYXRlZF9jb2RlXSBtb2R1bGUsIG1ha2luZyBpdCBvYnZpb3VzIHRvIGFueSByZWFkZXIgdGhhdCBzb21ldGhpbmcgdWdseVxuICAgaXMgZ29pbmcgb24uXG4gICB0X3dpdGhfcGVybSAoYW5kIGRlcml2YXRpdmVzKSBpcyB0aGUgdHlwZSB0aGF0IHVzZXJzIHJlYWxseSB1c2UuIEl0IGlzIGEgY29uc3RydWN0b3JcbiAgIGJlY2F1c2U6XG4gICAxLiBpdCBtYWtlcyB0eXBlIGVycm9ycyBtb3JlIHJlYWRhYmxlIChsZXNzIGFsaWFzaW5nKVxuICAgMi4gdGhlIHR5cGVyIGluIG9jYW1sIDQuMDEgYWxsb3dzIHRoaXM6XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBBID0gc3RydWN0XG4gICAgICAgdHlwZSB0ID0ge2EgOiBpbnR9XG4gICAgIGVuZFxuICAgICB0eXBlIHQgPSBBLnRcbiAgICAgbGV0IGYgKHggOiB0KSA9IHguYVxuICAgXX1cblxuICAgKGFsdGhvdWdoIHdpdGggV2FybmluZyA0MDogYSBpcyB1c2VkIG91dCBvZiBzY29wZSlcbiAgIHdoaWNoIG1lYW5zIHRoYXQgaWYgW3Rfd2l0aF9wZXJtXSB3YXMgcmVhbGx5IGFuIGFsaWFzIG9uIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0sXG4gICBwZW9wbGUgY291bGQgc2F5IFt0LnNldHRlcl0gYW5kIGJyZWFrIHRoZSBhYnN0cmFjdGlvbiB3aXRoIG5vIGluZGljYXRpb24gdGhhdFxuICAgc29tZXRoaW5nIHVnbHkgaXMgZ29pbmcgb24gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgVGhlIHdhcm5pbmcgaXMgKEkgdGhpbmspIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gbWFrZSB0aGVpciBjb2RlIGNvbXBhdGlibGUgd2l0aFxuICAgcHJldmlvdXMgdmVyc2lvbnMgb2Ygb2NhbWwsIHNvIHdlIG1heSB2ZXJ5IHdlbGwgdHVybiBpdCBvZmYuXG5cbiAgIFRoZSB0eXBlIHRfd2l0aF9wZXJtIGNvdWxkIGFsc28gaGF2ZSBiZWVuIGEgW3VuaXQgLT4gRm9yX2dlbmVyYXRlZF9jb2RlLnRdIHRvIHdvcmtcbiAgIGFyb3VuZCB2YWx1ZSByZXN0cmljdGlvbiBhbmQgdGhlbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdIHdvdWxkIGhhdmUgYmVlbiBhIHByb3BlclxuICAgYWJzdHJhY3QgdHlwZSwgYnV0IGl0IGxvb2tzIGxpa2UgaXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIChmb3IgZXhhbXBsZSwgYSBmb2xkIG9uIGFcbiAgIHJlY29yZCB0eXBlIHdpdGggNDAgZmllbGRzIHdvdWxkIGFjdHVhbGx5IGFsbG9jYXRlIHRoZSA0MCBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdJ3MgYXRcbiAgIGV2ZXJ5IHNpbmdsZSBmb2xkLikgKilcblxubW9kdWxlIEZvcl9nZW5lcmF0ZWRfY29kZSA9IHN0cnVjdFxuICB0eXBlICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICB7IGZvcmNlX3ZhcmlhbmNlIDogJ3Blcm0gLT4gdW5pdFxuICAgIDsgKCogZm9yY2UgW3RdIHRvIGJlIGNvbnRyYXZhcmlhbnQgaW4gWydwZXJtXSwgYmVjYXVzZSBwaGFudG9tIHR5cGUgdmFyaWFibGVzIG9uXG4gICAgICAgICBjb25jcmV0ZSB0eXBlcyBkb24ndCB3b3JrIHRoYXQgd2VsbCBvdGhlcndpc2UgKHVzaW5nIDo+IGNhbiByZW1vdmUgdGhlbSBlYXNpbHkpICopXG4gICAgICBuYW1lIDogc3RyaW5nXG4gICAgOyBzZXR0ZXIgOiAoJ3JlY29yZCAtPiAnZmllbGQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBnZXR0ZXIgOiAncmVjb3JkIC0+ICdmaWVsZFxuICAgIDsgZnNldCA6ICdyZWNvcmQgLT4gJ2ZpZWxkIC0+ICdyZWNvcmRcbiAgICB9XG5cbiAgbGV0IG9wYXF1ZV9pZGVudGl0eSA9IFN5czAub3BhcXVlX2lkZW50aXR5XG5lbmRcblxudHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm0gPVxuICB8IEZpZWxkIG9mICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSBGb3JfZ2VuZXJhdGVkX2NvZGUudFxuW0BAdW5ib3hlZF1cblxudHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID0gKFsgYFJlYWQgfCBgU2V0X2FuZF9jcmVhdGUgXSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybVxudHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSByZWFkb25seV90ID0gKFsgYFJlYWQgXSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybVxuXG5sZXQgbmFtZSAoRmllbGQgZmllbGQpID0gZmllbGQubmFtZVxubGV0IGdldCAoRmllbGQgZmllbGQpIHIgPSBmaWVsZC5nZXR0ZXIgclxubGV0IGZzZXQgKEZpZWxkIGZpZWxkKSByIHYgPSBmaWVsZC5mc2V0IHIgdlxubGV0IHNldHRlciAoRmllbGQgZmllbGQpID0gZmllbGQuc2V0dGVyXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAncmVzdWx0KSB1c2VyID1cbiAgeyBmIDogJ2ZpZWxkLiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm0gLT4gJ3Jlc3VsdCB9XG5cbmxldCBtYXAgKEZpZWxkIGZpZWxkKSByIH5mID0gZmllbGQuZnNldCByIChmIChmaWVsZC5nZXR0ZXIgcikpXG5cbmxldCB1cGRhdGVyIChGaWVsZCBmaWVsZCkgPVxuICBtYXRjaCBmaWVsZC5zZXR0ZXIgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgc2V0dGVyIC0+IFNvbWUgKGZ1biByIH5mIC0+IHNldHRlciByIChmIChmaWVsZC5nZXR0ZXIgcikpKVxuOztcbiIsIigqIFtTdHJpbmcwXSBkZWZpbmVzIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtDYW1sLlN0cmluZ10uIFtTdHJpbmcwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtDYW1sLlN0cmluZ10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzdHJpbmcwLm1sIHNob3VsZFxuICAgdXNlIFtDYW1sLlN0cmluZ10uICBbU3RyaW5nMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzXG4gICBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBzdHJpbmdzLCBpbmNsdWRpbmcgdGhlIHN1YnNjcmlwdCBzeW50YXhcbiAgIFt4LihpKV0gb3IgW3guKGkpIDwtIGVdIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0b1xuICAgW1N0cmluZ10sIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TdHJpbmddIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuXG4gICB7W1xuICAgICBtb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN0cmluZ10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIFN5cyA9IFN5czBcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCAgICAgICAgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmluY2x1ZGUgU3RyaW5nXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgKCBeICkgPSAoIF4gKVxubGV0IGNhcGl0YWxpemUgPSBDYW1sLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG5sZXQgY29tcGFyZSA9IENhbWwuU3RyaW5nLmNvbXBhcmVcblxubGV0IGNvcHkgeCA9XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpcbiAgICAgIChCeXRlcy5vZl9zdHJpbmcgeClcbjs7XG5cbmxldCBlc2NhcGVkID0gQ2FtbC5TdHJpbmcuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IENhbWwuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IG1ha2UgPSBDYW1sLlN0cmluZy5tYWtlXG5sZXQgc3ViID0gQ2FtbC5TdHJpbmcuc3ViXG5sZXQgdW5jYXBpdGFsaXplID0gQ2FtbC5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG5sZXQgdW5zYWZlX2JsaXQgPSBDYW1sLlN0cmluZy51bnNhZmVfYmxpdFxubGV0IHVwcGVyY2FzZSA9IENhbWwuU3RyaW5nLnVwcGVyY2FzZV9hc2NpaVxuXG5sZXQgY29uY2F0ID8oc2VwID0gXCJcIikgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiXCJcbiAgKCogVGhlIHN0ZGxpYiBkb2VzIG5vdCBzcGVjaWFsaXplIHRoaXMgY2FzZSBiZWNhdXNlIGl0IGNvdWxkIGJyZWFrIGV4aXN0aW5nIHByb2plY3RzLiAqKVxuICB8IFsgeCBdIC0+IHhcbiAgfCBsIC0+IENhbWwuU3RyaW5nLmNvbmNhdCB+c2VwIGxcbjs7XG5cbigqIFRoZXNlIGFyZSBldGEgZXhwYW5kZWQgaW4gb3JkZXIgdG8gcGVybXV0ZSBwYXJhbWV0ZXIgb3JkZXIgdG8gZm9sbG93IEJhc2VcbiAgIGNvbnZlbnRpb25zLiAqKVxubGV0IGl0ZXIgdCB+ZiA9IENhbWwuU3RyaW5nLml0ZXIgdCB+ZlxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQ2FtbC5MZXhpbmcucG9zaXRpb24gPVxuICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgOyBwb3NfbG51bSA6IGludFxuICAgIDsgcG9zX2JvbCA6IGludFxuICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICAgICAgIHRoZW4gMFxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbWF0Y2ggY29tcGFyZV9zdHJpbmcgYV9fMDAxXy5wb3NfZm5hbWUgYl9fMDAyXy5wb3NfZm5hbWUgd2l0aFxuICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMDFfLnBvc19sbnVtIGJfXzAwMl8ucG9zX2xudW0gd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMDFfLnBvc19ib2wgYl9fMDAyXy5wb3NfYm9sIHdpdGhcbiAgICAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2ludCBhX18wMDFfLnBvc19jbnVtIGJfXzAwMl8ucG9zX2NudW1cbiAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgIDogdCAtPiB0IC0+IGludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgZnVuIGhzdiBhcmcgLT5cbiAgICAgIGxldCBoc3YgPVxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICAgIGhhc2hfZm9sZF9zdHJpbmcgaHN2IGFyZy5wb3NfZm5hbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfbG51bVxuICAgICAgICBpblxuICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2JvbFxuICAgICAgaW5cbiAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfY251bVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW4geyBwb3NfZm5hbWUgPSBwb3NfZm5hbWVfXzAwNF9cbiAgICAgICAgIDsgcG9zX2xudW0gPSBwb3NfbG51bV9fMDA2X1xuICAgICAgICAgOyBwb3NfYm9sID0gcG9zX2JvbF9fMDA4X1xuICAgICAgICAgOyBwb3NfY251bSA9IHBvc19jbnVtX18wMTBfXG4gICAgICAgICB9IC0+XG4gICAgICBsZXQgYm5kc19fMDAzXyA9IFtdIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAxMV8gPSBzZXhwX29mX2ludCBwb3NfY251bV9fMDEwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfY251bVwiOyBhcmdfXzAxMV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9pbnQgcG9zX2JvbF9fMDA4XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfYm9sXCI7IGFyZ19fMDA5XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBwb3NfbG51bV9fMDA2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfbG51bVwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgcG9zX2ZuYW1lX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19mbmFtZVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwM19cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIFBweF9oZXJlLmxpZnRfcG9zaXRpb25fYXNfc3RyaW5nLiAqKVxubGV0IG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBbIHBvc19mbmFtZTsgXCI6XCI7IEludC50b19zdHJpbmcgcG9zX2xudW07IFwiOlwiOyBJbnQudG9fc3RyaW5nIChwb3NfY251bSAtIHBvc19ib2wpIF1cbjs7XG5cbmxldCB0b19zdHJpbmcgeyBDYW1sLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCB9ID1cbiAgbWFrZV9sb2NhdGlvbl9zdHJpbmcgfnBvc19mbmFtZSB+cG9zX2xudW0gfnBvc19jbnVtIH5wb3NfYm9sXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpc3QwXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIChmIHggOiBfIEVpdGhlcjAudCkgd2l0aFxuICAgICAgIHwgRmlyc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmRcbiAgICAgICB8IFNlY29uZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBDYW1sLnJlc3VsdCA9XG4gIHwgT2sgb2YgJ2FcbiAgfCBFcnJvciBvZiAnYlxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgZXF1YWwsIGhhc2hdXG5cbmxldCB0X29mX3NleHAgOlxuICAnYSAnYi5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYikgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnYSwgJ2IpIHRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDE3XyBiX18wMThfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE3XykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBiX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoYV9fMDE3XywgYl9fMDE4XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMDVfID0gXCJyZXN1bHQubWwudFwiIGluXG4gICAgZnVuIF9vZl9hX18wMDFfIF9vZl9iX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcIm9rXCIgfCBcIk9rXCIpIGFzIF90YWdfXzAwOF8pIDo6IHNleHBfYXJnc19fMDA5XykgYXNcbiAgICAgICAgX3NleHBfXzAwN18gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDA5XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDEwXyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTFfID0gX29mX2FfXzAwMV8gYXJnMF9fMDEwXyBpblxuICAgICAgICAgICBPayByZXMwX18wMTFfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAwOF9cbiAgICAgICAgICAgICBfc2V4cF9fMDA3XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgX3RhZ19fMDEzXykgOjogc2V4cF9hcmdzX18wMTRfKSBhc1xuICAgICAgICBfc2V4cF9fMDEyXyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTRfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTVfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxNl8gPSBfb2ZfYl9fMDAyXyBhcmcwX18wMTVfIGluXG4gICAgICAgICAgIEVycm9yIHJlczBfXzAxNl9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDVfXG4gICAgICAgICAgICAgX3RhZ19fMDEzX1xuICAgICAgICAgICAgIF9zZXhwX18wMTJfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwib2tcIiB8IFwiT2tcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcnJvclwiIHwgXCJFcnJvclwiKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgfCBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDI1XyBiX18wMjZfKVxuICAgICAgOiAgKChhX18wMjVfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMjVfLCBiX18wMjZfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAxOV8gX29mX2JfXzAyMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgT2sgYXJnMF9fMDIxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgcmVzMF9fMDIyXyBdXG4gICAgICB8IEVycm9yIGFyZzBfXzAyM18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyNF8gPSBfb2ZfYl9fMDIwXyBhcmcwX18wMjNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkVycm9yXCI7IHJlczBfXzAyNF8gXVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJPa1wiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXJyb3JcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAyN18gYl9fMDI4XyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMjdfIGJfXzAyOF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAyN18sIGJfXzAyOF8gd2l0aFxuICAgIHwgT2sgX2FfXzAyOV8sIE9rIF9iX18wMzBfIC0+IF9jbXBfX2EgX2FfXzAyOV8gX2JfXzAzMF9cbiAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICB8IF8sIE9rIF8gLT4gMVxuICAgIHwgRXJyb3IgX2FfXzAzMV8sIEVycm9yIF9iX18wMzJfIC0+IF9jbXBfX2IgX2FfXzAzMV8gX2JfXzAzMl8pXG47O1xuXG5sZXQgZXF1YWwgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDMzXyBiX18wMzRfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAzM18gYl9fMDM0X1xuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDMzXywgYl9fMDM0XyB3aXRoXG4gICAgfCBPayBfYV9fMDM1XywgT2sgX2JfXzAzNl8gLT4gX2NtcF9fYSBfYV9fMDM1XyBfYl9fMDM2X1xuICAgIHwgT2sgXywgXyAtPiBmYWxzZVxuICAgIHwgXywgT2sgXyAtPiBmYWxzZVxuICAgIHwgRXJyb3IgX2FfXzAzN18sIEVycm9yIF9iX18wMzhfIC0+IF9jbXBfX2IgX2FfXzAzN18gX2JfXzAzOF8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGEgYi5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGEsIGIpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgT2sgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICB8IEVycm9yIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9iIGhzdiBfYTBcbjs7XG5cbltAQEBlbmRdXG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gT2sgKGYgeClcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IHJldHVybiB4ID0gT2sgeFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgY2hlY2tfb2sgY2hlY2tfZXJyb3IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIG9rIC0+IGNoZWNrX29rIG9rXG4gIHwgRXJyb3IgZXJyb3IgLT4gY2hlY2tfZXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBmYWlsIHggPSBFcnJvciB4XG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5cbmxldCBtYXBfZXJyb3IgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIF8gYXMgeCAtPiB4XG4gIHwgRXJyb3IgeCAtPiBFcnJvciAoZiB4KVxuOztcblxubW9kdWxlIEVycm9yID0gTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPayBfIGFzIG9rIC0+IG9rXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcF9lcnJvclxuICAgIGxldCByZXR1cm4gZSA9IEVycm9yIGVcbiAgZW5kKVxuXG5sZXQgaXNfb2sgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBmYWxzZVxuICB8IEVycm9yIF8gLT4gdHJ1ZVxuOztcblxubGV0IG9rID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IFNvbWUgeFxuICB8IEVycm9yIF8gLT4gTm9uZVxuOztcblxubGV0IGVycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IE5vbmVcbiAgfCBFcnJvciB4IC0+IFNvbWUgeFxuOztcblxubGV0IG9mX29wdGlvbiBvcHQgfmVycm9yID1cbiAgbWF0Y2ggb3B0IHdpdGhcbiAgfCBTb21lIHggLT4gT2sgeFxuICB8IE5vbmUgLT4gRXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBpdGVyIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayB4IC0+IGYgeFxuICB8IEVycm9yIF8gLT4gKClcbjs7XG5cbmxldCBpdGVyX2Vycm9yIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayBfIC0+ICgpXG4gIHwgRXJyb3IgeCAtPiBmIHhcbjs7XG5cbmxldCB0b19laXRoZXIgOiBfIHQgLT4gXyBFaXRoZXIudCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBGaXJzdCB4XG4gIHwgRXJyb3IgeCAtPiBTZWNvbmQgeFxuOztcblxubGV0IG9mX2VpdGhlciA6IF8gRWl0aGVyLnQgLT4gXyB0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IE9rIHhcbiAgfCBTZWNvbmQgeCAtPiBFcnJvciB4XG47O1xuXG5sZXQgb2tfaWZfdHJ1ZSBib29sIH5lcnJvciA9IGlmIGJvb2wgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yXG5cbmxldCB0cnlfd2l0aCBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIGV4blxuOztcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IG9rX29yX2ZhaWx3aXRoID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBzdHIgLT4gZmFpbHdpdGggc3RyXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdvaywgJ2VycikgX3Jlc3VsdCA9ICgnb2ssICdlcnIpIHQgPVxuICAgIHwgT2sgb2YgJ29rXG4gICAgfCBFcnJvciBvZiAnZXJyXG5cbiAgbGV0IGlzX2Vycm9yID0gaXNfZXJyb3JcbiAgbGV0IGlzX29rID0gaXNfb2tcbmVuZFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgT2sgXywgRXJyb3IgZSB8IEVycm9yIGUsIE9rIF8gLT4gRXJyb3IgZVxuICB8IE9rIG9rMSwgT2sgb2syIC0+IE9rIChvayBvazEgb2syKVxuICB8IEVycm9yIGVycjEsIEVycm9yIGVycjIgLT4gRXJyb3IgKGVyciBlcnIxIGVycjIpXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QxLnBhcnRpdGlvbl9tYXAgbCB+Zjp0b19laXRoZXIgaW5cbiAgbWF0Y2ggZXJycyB3aXRoXG4gIHwgW10gLT4gT2sgb2tcbiAgfCBfIDo6IF8gLT4gRXJyb3IgZXJyc1xuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IG1hcCAoY29tYmluZV9lcnJvcnMgbCkgfmY6KGZ1biAoXyA6IHVuaXQgbGlzdCkgLT4gKCkpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZyBmb3IgZXhwb3J0IG9ubHkgKilcbmxldCBva19mc3QgPSB0b19laXRoZXJcbiIsIigqKiBQcm92aWRlcyBnZW5lcmljIHNpZ25hdHVyZXMgZm9yIGNvbnRhaW5lciBkYXRhIHN0cnVjdHVyZXMuXG5cbiAgICBUaGVzZSBzaWduYXR1cmVzIGluY2x1ZGUgZnVuY3Rpb25zIChbaXRlcl0sIFtmb2xkXSwgW2V4aXN0c10sIFtmb3JfYWxsXSwgLi4uKSB0aGF0XG4gICAgeW91IHdvdWxkIGV4cGVjdCB0byBmaW5kIGluIGFueSBjb250YWluZXIuIFVzZWQgYnkgaW5jbHVkaW5nIFtDb250YWluZXIuUzBdIG9yXG4gICAgW0NvbnRhaW5lci5TMV0gaW4gdGhlIHNpZ25hdHVyZSBmb3IgZXZlcnkgY29udGFpbmVyLWxpa2UgZGF0YSBzdHJ1Y3R1cmUgKFtBcnJheV0sXG4gICAgW0xpc3RdLCBbU3RyaW5nXSwgLi4uKSB0byBlbnN1cmUgYSBjb25zaXN0ZW50IGludGVyZmFjZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCoqIFtDb250aW51ZV9vcl9zdG9wLnRdIGlzIHVzZWQgYnkgdGhlIFtmXSBhcmd1bWVudCB0byBbZm9sZF91bnRpbF0gaW4gb3JkZXIgdG9cbiAgICAgIGluZGljYXRlIHdoZXRoZXIgZm9sZGluZyBzaG91bGQgY29udGludWUsIG9yIHN0b3AgZWFybHkuXG5cbiAgICAgIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuQ29udGludWVfb3Jfc3RvcFxuICAqKVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB8IENvbnRpbnVlIG9mICdhXG4gICAgICB8IFN0b3Agb2YgJ2JcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuU3VtbWFibGUgKilcbm1vZHVsZSB0eXBlIFN1bW1hYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqKiBUaGUgcmVzdWx0IG9mIHN1bW1pbmcgbm8gdmFsdWVzLiAqKVxuICB2YWwgemVybyA6IHRcblxuICAoKiogQW4gb3BlcmF0aW9uIHRoYXQgY29tYmluZXMgdHdvIFt0XSdzIGFuZCBoYW5kbGVzIFt6ZXJvICsgeF0gYnkganVzdCByZXR1cm5pbmcgW3hdLFxuICAgICAgYXMgd2VsbCBhcyBpbiB0aGUgc3ltbWV0cmljIGNhc2UuICopXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVyIC0gYSBjb250YWluZXIgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlLCBlLmcuLFxuICAgIHN0cmluZywgd2hpY2ggaXMgYSBjb250YWluZXIgb2YgY2hhcmFjdGVycyAoW3R5cGUgZWx0ID0gY2hhcl0pIGFuZCBuZXZlciBvZiBhbnl0aGluZ1xuICAgIGVsc2UuICopXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBlbHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIGVxdWFsaXR5IG9uIFtlbHRdcy4gKilcbiAgdmFsIG1lbSA6IHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5cbiAgKCoqIFtpdGVyXSBtdXN0IGFsbG93IGV4Y2VwdGlvbnMgcmFpc2VkIGluIFtmXSB0byBlc2NhcGUsIHRlcm1pbmF0aW5nIHRoZSBpdGVyYXRpb25cbiAgICAgIGNsZWFubHkuICBUaGUgc2FtZSBob2xkcyBmb3IgYWxsIGZ1bmN0aW9ucyBiZWxvdyB0YWtpbmcgYW4gW2ZdLiAqKVxuICB2YWwgaXRlciA6IHQgLT4gZjooZWx0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+IHQgLT4gZjooZWx0IC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiB0IC0+IGY6KGVsdCAtPiAnYSBvcHRpb24pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogdCAtPiBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwLiBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbi4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGVcbiAgICAgIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWVcbiAgICAgIGNvbXBsZXhpdHkgYXMgW2ZvbGRdLiBSZXR1cm5zIFtOb25lXSBpZmYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiBfIHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IF8gdCAtPiBmOihlbHQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiBfIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gVGhlIG9yZGVyIGluIHdoaWNoIHRoZVxuICAgICAgZWxlbWVudHMgd2lsbCBiZSBzdW1tZWQgaXMgdW5zcGVjaWZpZWQuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gXyB0IC0+IGY6KGVsdCAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiBfIHQgLT4gZjooZWx0IC0+ICdhIG9wdGlvbikgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiBfIHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogXyB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gKilcbiAgdmFsIG1pbl9lbHQgOiBfIHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IF8gdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbigqKiBTaWduYXR1cmUgZm9yIHBvbHltb3JwaGljIGNvbnRhaW5lciwgZS5nLiwgWydhIGxpc3RdIG9yIFsnYSBhcnJheV0uICopXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIFtlcXVhbF0uICopXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XSAgKilcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiAnYSB0IC0+IGY6KCdhIC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogJ2EgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbmltdW0gKHJlc3AgbWF4aW11bSkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZFxuICAgICAgW2NvbXBhcmVdIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdFxuICAgICAgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5IGFzIFtmb2xkXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5XG4gICAgICBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICsncGhhbnRvbSkgdFxuXG4gIGluY2x1ZGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdlbmVyaWMgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gJ2EgdCAtPiBmOignYSBlbHQgLT4gJ3N1bSkgLT4gJ3N1bVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICdhIHQgLT4gJ2EgZWx0IGFycmF5XG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSBlbHQgLT4gJ2EgZWx0IC0+IGludCkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCdhIGVsdCAtPiAnc3VtKVxuICAgIC0+ICdzdW1cblxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgYXJyYXlcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2dlbl9hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogVGhlIFtpdGVyXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2l0ZXJdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lIFtpdGVyXVxuICAgICAgdmlhOlxuXG4gICAgICB7W1xuICAgICAgICBpdGVyIHQgfmYgPSBDb250YWluZXIuaXRlciB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtpdGVyXSwgc28gcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFtpdGVyXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeVxuICAgICAgYXMgd2VsbC4gKilcbiAgdmFsIGl0ZXIgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBmOignYSBlbHQgLT4gdW5pdCkgLT4gdW5pdCBdXG5cbiAgKCoqIFRoZSBbbGVuZ3RoXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2xlbmd0aF0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmVcbiAgICAgIFtsZW5ndGhdIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgbGVuZ3RoIHQgfmYgPSBDb250YWluZXIubGVuZ3RoIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2xlbmd0aF0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbGVuZ3RoXSB3aWxsIGltcHJvdmUgdGhlaXJcbiAgICAgIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIGxlbmd0aCA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAnYSB0IC0+IGludCBdXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBNb25hZC5JZGVudC50XG5cbm1vZHVsZSB0eXBlIE1ha2UwX2FyZyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICB0eXBlIHRcblxuICBpbmNsdWRlIE1ha2VfZ2VuX2FyZyB3aXRoIHR5cGUgJ2EgdCA6PSB0IGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbnRhaW5lciA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwb3J0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMwID0gUzBcbiAgbW9kdWxlIHR5cGUgUzBfcGhhbnRvbSA9IFMwX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBTMV9waGFudG9tX2ludmFyaWFudCA9IFMxX3BoYW50b21faW52YXJpYW50XG4gIG1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBTMV9waGFudG9tXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWMgPSBHZW5lcmljXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWNfcGhhbnRvbSA9IEdlbmVyaWNfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTdW1tYWJsZSA9IFN1bW1hYmxlXG5cbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2ZvbGRdLlxuXG4gICAgICBFLmcuOiBbaXRlciB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpXS4gKilcblxuICB0eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9ICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuICB0eXBlICgndCwgJ2EpIGl0ZXIgPSAndCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbiAgdmFsIGl0ZXIgOiBmb2xkOigndCwgJ2EsIHVuaXQpIGZvbGQgLT4gKCd0LCAnYSkgaXRlclxuICB2YWwgY291bnQgOiBmb2xkOigndCwgJ2EsIGludCkgZm9sZCAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgbWluX2VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2Egb3B0aW9uKSBmb2xkXG4gICAgLT4gJ3RcbiAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBsZW5ndGggOiBmb2xkOigndCwgXywgaW50KSBmb2xkIC0+ICd0IC0+IGludFxuICB2YWwgdG9fbGlzdCA6IGZvbGQ6KCd0LCAnYSwgJ2EgbGlzdCkgZm9sZCAtPiAndCAtPiAnYSBsaXN0XG5cbiAgdmFsIHN1bVxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ3N1bSkgZm9sZFxuICAgIC0+IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICd0XG4gICAgLT4gZjooJ2EgLT4gJ3N1bSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYikgZm9sZFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdlKSBSZXN1bHQudClcbiAgICAtPiAndFxuICAgIC0+ICgnYiwgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBmb2xkOigndCwgJ2EsICdiKSBmb2xkXG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ3RcbiAgICAtPiAnZmluYWxcblxuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbaXRlcl0gYW5kIFtsZW5ndGhdLiAqKVxuICB2YWwgaXNfZW1wdHkgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gYm9vbFxuXG4gIHZhbCBleGlzdHMgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmaW5kIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2FycmF5IDogbGVuZ3RoOid0IGxlbmd0aCAtPiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gJ2EgYXJyYXlcblxuICAoKiogVGhlIGlkaW9tIGZvciB1c2luZyBbQ29udGFpbmVyLk1ha2VdIGlzIHRvIGJpbmQgdGhlIHJlc3VsdGluZyBtb2R1bGUgYW5kIHRvXG4gICAgICBleHBsaWNpdGx5IGltcG9ydCBlYWNoIG9mIHRoZSBmdW5jdGlvbnMgdGhhdCBvbmUgd2FudHM6XG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgICBsZXQgY291bnQgICAgPSBDLmNvdW50XG4gICAgICAgIGxldCBleGlzdHMgICA9IEMuZXhpc3RzXG4gICAgICAgIGxldCBmaW5kICAgICA9IEMuZmluZFxuICAgICAgICAoKiAuLi4gKilcbiAgICAgIF19XG5cbiAgICAgIFRoaXMgaXMgcHJlZmVyYWJsZSB0bzpcblxuICAgICAge1tcbiAgICAgICAgaW5jbHVkZSBDb250YWluZXIuTWFrZSAoc3RydWN0IC4uLiBlbmQpXG4gICAgICBdfVxuXG4gICAgICBiZWNhdXNlIHRoZSBbaW5jbHVkZV0gbWFrZXMgaXQgdG9vIGVhc3kgdG8gc2hhZG93IHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICAgY29udGFpbmVyIGZ1bmN0aW9ucyAoW2xlbmd0aF0gYmVpbmcgYSBjb21tb24gb25lKS5cblxuICAgICAgW0NvbnRhaW5lci5NYWtlMF0gaXMgbGlrZSBbQ29udGFpbmVyLk1ha2VdLCBidXQgZm9yIG1vbm9tb3JwaGljIGNvbnRhaW5lcnMgbGlrZVxuICAgICAgW3N0cmluZ10uICopXG4gIG1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5cbiAgbW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA6IFMwIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBlbHQgOj0gVC5FbHQudFxuXG4gIG1vZHVsZSBNYWtlX2dlbiAoVCA6IE1ha2VfZ2VuX2FyZykgOlxuICAgIEdlbmVyaWMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBDb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9ICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxudHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxudHlwZSAndCBsZW5ndGggPSAndCAtPiBpbnRcblxubGV0IGl0ZXIgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKVxubGV0IGNvdW50IH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gYSAtPiBpZiBmIGEgdGhlbiBuICsgMSBlbHNlIG4pXG5cbmxldCBzdW0gKHR5cGUgYSkgfmZvbGQgKG1vZHVsZSBNIDogU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgZm9sZCB0IH5pbml0Ok0uemVybyB+ZjooZnVuIG4gYSAtPiBNLiggKyApIG4gKGYgYSkpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIFJlc3VsdC5Pa1xuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgUmVzdWx0Lk9rIHggLT4geFxuICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gcmV0dXJuIGUpKSlcbjs7XG5cbmxldCBmb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIH5maW5pc2ggdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIGZpbmlzaFxuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSB4IC0+IHhcbiAgICAgICAgIHwgU3RvcCB4IC0+IHJldHVybiB4KSkpXG47O1xuXG5sZXQgbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWluIC0+IGlmIGNvbXBhcmUgbWluIGVsdCA+IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYylcbjs7XG5cbmxldCBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmUgPVxuICBmb2xkIHQgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICBtYXRjaCBhY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIGVsdFxuICAgIHwgU29tZSBtYXggLT4gaWYgY29tcGFyZSBtYXggZWx0IDwgMCB0aGVuIFNvbWUgZWx0IGVsc2UgYWNjKVxuOztcblxubGV0IGxlbmd0aCB+Zm9sZCBjID0gZm9sZCBjIH5pbml0OjAgfmY6KGZ1biBhY2MgXyAtPiBhY2MgKyAxKVxuXG5sZXQgaXNfZW1wdHkgfml0ZXIgYyA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIF8gLT4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZXhpc3RzIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKVxuOztcblxubGV0IGZvcl9hbGwgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgbm90IChmIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZmluZF9tYXAgfml0ZXIgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgdCB+ZjooZnVuIHggLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZCB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiAoU29tZSB4KSk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCB0b19saXN0IH5mb2xkIGMgPSBMaXN0LnJldiAoZm9sZCBjIH5pbml0OltdIH5mOihmdW4gYWNjIHggLT4geCA6OiBhY2MpKVxuXG5sZXQgdG9fYXJyYXkgfmxlbmd0aCB+aXRlciBjID1cbiAgbGV0IGFycmF5ID0gcmVmIFt8fF0gaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICBpdGVyIGMgfmY6KGZ1biB4IC0+XG4gICAgaWYgIWkgPSAwIHRoZW4gYXJyYXkgOj0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCBjKSB4O1xuICAgICFhcnJheS4oIWkpIDwtIHg7XG4gICAgaW5jciBpKTtcbiAgIWFycmF5XG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDogc2lnXG4gIGluY2x1ZGUgR2VuZXJpYyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuZW5kID0gc3RydWN0XG4gIGxldCBmb2xkID0gVC5mb2xkXG5cbiAgbGV0IGl0ZXIgPVxuICAgIG1hdGNoIFQuaXRlciB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXIgLT4gaXRlclxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXIgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBsZW5ndGggPVxuICAgIG1hdGNoIFQubGVuZ3RoIHdpdGhcbiAgICB8IGBDdXN0b20gbGVuZ3RoIC0+IGxlbmd0aFxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IC0+IGxlbmd0aCB+Zm9sZCB0XG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBpc19lbXB0eSB+aXRlciB0XG4gIGxldCBzdW0gbSB0ID0gc3VtIH5mb2xkIG0gdFxuICBsZXQgY291bnQgdCB+ZiA9IGNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzIH5pdGVyIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGwgfml0ZXIgdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmQgfml0ZXIgdCB+ZlxuICBsZXQgdG9fbGlzdCB0ID0gdG9fbGlzdCB+Zm9sZCB0XG4gIGxldCB0b19hcnJheSB0ID0gdG9fYXJyYXkgfmxlbmd0aCB+aXRlciB0XG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBtaW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IG1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IGZvbGRfcmVzdWx0IHQgfmZvbGQgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gZm9sZF91bnRpbCB0IH5mb2xkIH5pbml0IH5mIH5maW5pc2hcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCBhIH5lcXVhbCA9IGV4aXN0cyB0IH5mOihlcXVhbCBhKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IGVsdCA9IGV4aXN0cyB0IH5mOihULkVsdC5lcXVhbCBlbHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDYW1sLkxhenlcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsYXp5X3Rfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGF6eV90XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxhenlfdF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxubGV0IG1hcCB0IH5mID0gbGF6eSAoZiAoZm9yY2UgdCkpXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiAwIGVsc2UgY29tcGFyZV9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPSBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gdHJ1ZSBlbHNlIGVxdWFsX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG5sZXQgaGFzaF9mb2xkX3QgPSBIYXNoLkJ1aWx0aW4uaGFzaF9mb2xkX2xhenlfdFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuIHggPSBmcm9tX3ZhbCB4XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGxhenkgKGZvcmNlIChmIChmb3JjZSB0KSkpXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBUX3VuZm9yY2luZyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGlmIGlzX3ZhbCB0IHRoZW4gc2V4cF9vZl9hIChmb3JjZSB0KSBlbHNlIHNleHBfb2Zfc3RyaW5nIFwiPHVuZm9yY2VkIGxhenk+XCJcbiAgOztcbmVuZFxuIiwiKCogU3BsaXQgb2ZmIHRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3kgd2l0aCBbT3JfZXJyb3JdLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubGV0IHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTmVnYXRpdmUgcG9zaXRpb246ICVkXCIgcG9zICgpO1xuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTmVnYXRpdmUgbGVuZ3RoOiAlZFwiIGxlbiAoKTtcbiAgKCogV2UgdXNlIFtwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5dIHJhdGhlciB0aGFuIFtwb3MgKyBsZW4gPiB0b3RhbF9sZW5ndGhdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwicG9zICsgbGVuIHBhc3QgZW5kOiAlZCArICVkID4gJWRcIiBwb3MgbGVuIHRvdGFsX2xlbmd0aCAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aCA9XG4gICgqIFRoaXMgaXMgYmV0dGVyIHRoYW4gW3Nsb3dfY2hlY2tfcG9zX2xlbl9leG5dIGZvciB0d28gcmVhc29uczpcblxuICAgICAtIG11Y2ggbGVzcyBpbmxpbmVkIGNvZGVcbiAgICAgLSBvbmx5IG9uZSBjb25kaXRpb25hbCBqdW1wXG5cbiAgICAgVGhlIHJlYXNvbiBpdCB3b3JrcyBpcyB0aGF0IGNoZWNraW5nIFs8IDBdIGlzIHRlc3RpbmcgdGhlIGhpZ2hlc3Qgb3JkZXIgYml0LCBzb1xuICAgICBbYSA8IDAgfHwgYiA8IDBdIGlzIHRoZSBzYW1lIGFzIFthIGxvciBiIDwgMF0uXG5cbiAgICAgW3BvcyArIGxlbl0gY2FuIG92ZXJmbG93LCBzbyBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSBpcyBub3QgZXF1aXZhbGVudCB0b1xuICAgICBbdG90YWxfbGVuZ3RoIC0gbGVuIC0gcG9zIDwgMF0sIHdlIG5lZWQgdG8gdGVzdCBmb3IgW3BvcyArIGxlbl0gb3ZlcmZsb3cgYXNcbiAgICAgd2VsbC4gKilcbiAgbGV0IHN0b3AgPSBwb3MgKyBsZW4gaW5cbiAgaWYgcG9zIGxvciBsZW4gbG9yIHN0b3AgbG9yICh0b3RhbF9sZW5ndGggLSBzdG9wKSA8IDBcbiAgdGhlbiBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoXG47O1xuXG5sZXQgZ2V0X3Bvc19sZW5fZXhuID8ocG9zID0gMCkgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgcG9zLCBsZW5cbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuID0gc2xvd19jaGVja19wb3NfbGVuX2V4blxuZW5kXG4iLCJcbm1vZHVsZSBSZXByID0gc3RydWN0XG4gIG9wZW4gQ2FtbC5CaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBsZXQgb2Zfc3RhdGUgOiBDYW1sLlJhbmRvbS5TdGF0ZS50IC0+IHQgPSBDYW1sLk9iai5tYWdpY1xuZW5kXG5cbmxldCBhc3NpZ24gZHN0IHNyYyA9XG4gIGxldCBkc3QgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIGRzdCkgaW5cbiAgbGV0IHNyYyA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2Ugc3JjKSBpblxuICBDYW1sLkJpZ2FycmF5LkFycmF5MS5ibGl0IHNyYyBkc3RcblxubGV0IG1ha2VfZGVmYXVsdCBkZWZhdWx0ID1cbiAgbGV0IHNwbGl0X2Zyb21fcGFyZW50IHYgPVxuICAgIENhbWwuTGF6eS5tYXBfdmFsIENhbWwuUmFuZG9tLlN0YXRlLnNwbGl0IHZcbiAgaW5cbiAgQ2FtbC5Eb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50IChmdW4gKCkgLT4gZGVmYXVsdClcblxubGV0IGdldF9zdGF0ZSByYW5kb21fa2V5ID0gQ2FtbC5Eb21haW4uRExTLmdldCByYW5kb21fa2V5XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5cbigqIFVuZm9ydHVuYXRlbHksIGJlY2F1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lcyBub3QgZXhwb3NlXG4gICBbQ2FtbC5SYW5kb20uU3RhdGUuZGVmYXVsdF0sIHdlIGhhdmUgdG8gY29uc3RydWN0IG91ciBvd24uICBXZSB0aGVuIGJ1aWxkIHRoZVxuICAgW0NhbWwuUmFuZG9tLmludF0sIFtDYW1sLlJhbmRvbS5ib29sXSBmdW5jdGlvbnMgYW5kIGZyaWVuZHMgdXNpbmcgdGhhdCBkZWZhdWx0IHN0YXRlIGluXG4gICBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeS5cblxuICAgT25lIG90aGVyIHRyaWNraW5lc3MgaXMgdGhhdCB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgdW5leHBvc2VkIFtDYW1sLlJhbmRvbS5TdGF0ZS5hc3NpZ25dXG4gICBmdW5jdGlvbiwgd2hpY2ggYWNjZXNzZXMgdGhlIHVuZXhwb3NlZCBzdGF0ZSByZXByZXNlbnRhdGlvbi4gIFNvLCB3ZSBjb3B5IHRoZVxuICAgW1N0YXRlLnJlcHJdIHR5cGUgZGVmaW5pdGlvbiBhbmQgW2Fzc2lnbl0gZnVuY3Rpb24gdG8gaGVyZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LFxuICAgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBnZXQgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uLiAqKVxuXG4oKiBSZWdyZXNzaW9uIHRlc3RzIG91Z2h0IHRvIGJlIGRldGVybWluaXN0aWMgYmVjYXVzZSB0aGF0IHdheSBhbnlvbmUgd2hvIGJyZWFrcyB0aGUgdGVzdFxuICAga25vd3MgdGhhdCBpdCdzIHRoZWlyIGNvZGUgdGhhdCBicm9rZSB0aGUgdGVzdC4gIElmIHRlc3RzIGFyZSBub25kZXRlcm1pbmlzdGljLCBhIHRlc3RcbiAgIGZhaWx1cmUgbWF5IGluc3RlYWQgaGFwcGVuIGJlY2F1c2UgdGhlIHRlc3QgcnVubmVyIGdvdCB1bmx1Y2t5IGFuZCB1bmNvdmVyZWQgYW5cbiAgIGV4aXN0aW5nIGJ1ZyBpbiB0aGUgY29kZSBzdXBwb3NlZGx5IGJlaW5nIFwicHJvdGVjdGVkXCIgYnkgdGhlIHRlc3QgaW4gcXVlc3Rpb24uICopXG5sZXQgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cyA9XG4gIGlmIGFtX3Rlc3RpbmdcbiAgdGhlbiAoXG4gICAgbWF0Y2ggYWxsb3dfaW5fdGVzdHMgd2l0aFxuICAgIHwgU29tZSB0cnVlIC0+ICgpXG4gICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPlxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgXCJpbml0aWFsaXppbmcgUmFuZG9tIHdpdGggYSBub25kZXRlcm1pbmlzdGljIHNlZWQgaXMgZm9yYmlkZGVuIGluIGlubGluZSB0ZXN0c1wiKVxuOztcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQgOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5sZXQgcmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cztcbiAgcmFuZG9tX3NlZWQgKClcbjs7XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAoKiBXZSBhbGxvdyBsYXppbmVzcyBvbmx5IGZvciB0aGUgZGVmaW5pdGlvbiBvZiBbZGVmYXVsdF0sIGJlbG93LCB3aGljaCBtYXkgbGF6aWx5IGNhbGxcbiAgICAgW21ha2Vfc2VsZl9pbml0XS4gRm9yIGFsbCBvdGhlciBwdXJwb3Nlcywgd2UgY3JlYXRlIGFuZCB1c2UgW3RdIGVhZ2VybHkuICopXG4gIHR5cGUgdCA9IENhbWwuUmFuZG9tLlN0YXRlLnQgTGF6eS50XG5cbiAgbGV0IGJpdHMgdCA9IENhbWwuUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgdClcbiAgbGV0IGJvb2wgdCA9IENhbWwuUmFuZG9tLlN0YXRlLmJvb2wgKExhenkuZm9yY2UgdClcbiAgbGV0IGludCB0IHggPSBDYW1sLlJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50MzIgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUuaW50MzIgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50NjQgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUuaW50NjQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbmF0aXZlaW50IHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLm5hdGl2ZWludCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBtYWtlIHNlZWQgPSBMYXp5LmZyb21fdmFsIChDYW1sLlJhbmRvbS5TdGF0ZS5tYWtlIHNlZWQpXG4gIGxldCBjb3B5IHQgPSBMYXp5LmZyb21fdmFsIChDYW1sLlJhbmRvbS5TdGF0ZS5jb3B5IChMYXp5LmZvcmNlIHQpKVxuICBsZXQgY2hhciB0ID0gaW50IHQgMjU2IHw+IENoYXIudW5zYWZlX29mX2ludFxuICBsZXQgYXNjaWkgdCA9IGludCB0IDEyOCB8PiBDaGFyLnVuc2FmZV9vZl9pbnRcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICAgIExhenkuZnJvbV92YWwgKENhbWwuUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuICA7O1xuXG4gIGxldCBhc3NpZ24gPSBSYW5kb21fcmVwci5hc3NpZ25cblxuICBsZXQgZnVsbF9pbml0IHQgc2VlZCA9IGFzc2lnbiB0IChtYWtlIHNlZWQpXG5cbiAgbGV0IGRlZmF1bHQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIGRlZmluZSBCYXNlJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUgYXMgYSBjb3B5IG9mIE9DYW1sJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUuXG4gICAgICAgICBUaGlzIG1lYW5zIHRoYXQgcHJvZ3JhbXMgdGhhdCB1c2UgQmFzZS5SYW5kb20gd2lsbCBzZWUgdGhlIHNhbWUgc2VxdWVuY2Ugb2ZcbiAgICAgICAgIHJhbmRvbSBiaXRzIGFzIGlmIHRoZXkgaGFkIHVzZWQgQ2FtbC5SYW5kb20uIEhvd2V2ZXIsIGJlY2F1c2UgW2dldF9zdGF0ZV0gcmV0dXJuc1xuICAgICAgICAgYSBjb3B5LCBCYXNlLlJhbmRvbSBhbmQgT0NhbWwuUmFuZG9tIGFyZSBub3QgdXNpbmcgdGhlIHNhbWUgc3RhdGUuIElmIGEgcHJvZ3JhbVxuICAgICAgICAgdXNlZCBib3RoLCBlYWNoIG9mIHRoZW0gd291bGQgZ28gdGhyb3VnaCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiByYW5kb20gYml0cy4gVG9cbiAgICAgICAgIGF2b2lkIHRoYXQsIHdlIHJlc2V0IE9DYW1sJ3MgcmFuZG9tIHN0YXRlIHRvIGEgZGlmZmVyZW50IHNlZWQsIGdpdmluZyBpdCBhXG4gICAgICAgICBkaWZmZXJlbnQgc2VxdWVuY2UuICopXG4gICAgICBsZXQgdCA9IENhbWwuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICAgICAgQ2FtbC5SYW5kb20uaW5pdCAxMzc7XG4gICAgICBMYXp5LmZyb21fdmFsIHQpXG4gICAgZWxzZVxuICAgICAgbGF6eVxuICAgICAgICAoKiBPdXRzaWRlIG9mIHRlc3RzLCB3ZSBpbml0aWFsaXplIHJhbmRvbSBzdGF0ZSBub25kZXRlcm1pbmlzdGljYWxseSBhbmQgbGF6aWx5LlxuICAgICAgICAgICBXZSBmb3JjZSB0aGUgcmFuZG9tIGluaXRpYWxpemF0aW9uIHRvIGJlIGxhenkgc28gdGhhdCB3ZSBkbyBub3QgcGF5IGFueSBjb3N0XG4gICAgICAgICAgIGZvciBpdCBpbiBwcm9ncmFtcyB0aGF0IGRvIG5vdCB1c2UgcmFuZG9tbmVzcy4gKilcbiAgICAgICAgKExhenkuZm9yY2UgKG1ha2Vfc2VsZl9pbml0ICgpKSlcbiAgOztcblxuICBsZXQgaW50X29uXzY0Yml0cyB0IGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgQ2FtbC5JbnQ2NC50b19pbnQgKGludDY0IHQgKENhbWwuSW50NjQub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50X29uXzMyYml0cyB0IGJvdW5kID1cbiAgICAoKiBOb3QgYWx3YXlzIHRydWUgd2l0aCB0aGUgSmF2YVNjcmlwdCBiYWNrZW5kLiAqKVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBDYW1sLkludDMyLnRvX2ludCAoaW50MzIgdCAoQ2FtbC5JbnQzMi5vZl9pbnQgYm91bmQpKVxuICA7O1xuXG4gIGxldCBpbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBpbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50NjQgPVxuICAgIGxldCBvcGVuIENhbWwuSW50NjQgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT5cbiAgICAgIGxvZ3hvclxuICAgICAgICAoYml0cyBzdGF0ZSlcbiAgICAgICAgKGxvZ3hvciAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSA2MCkpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50MzIgPVxuICAgIGxldCBvcGVuIENhbWwuSW50MzIgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT4gbG9neG9yIChiaXRzIHN0YXRlKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0cyBzdGF0ZSA9IENhbWwuSW50NjQudG9faW50IChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKVxuICBsZXQgZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIHN0YXRlID0gQ2FtbC5JbnQzMi50b19pbnQgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzIHN0YXRlID1cbiAgICBDYW1sLkludDY0LnRvX25hdGl2ZWludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzIHN0YXRlID1cbiAgICBDYW1sLk5hdGl2ZWludC5vZl9pbnQzMiAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCByYWlzZV9jcm9zc2VkX2JvdW5kcyBuYW1lIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kIHN0cmluZ19vZl9ib3VuZCA9XG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJSYW5kb20uJXM6IGNyb3NzZWQgYm91bmRzIFslcyA+ICVzXVwiXG4gICAgICBuYW1lXG4gICAgICAoc3RyaW5nX29mX2JvdW5kIGxvd2VyX2JvdW5kKVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCB1cHBlcl9ib3VuZClcbiAgICAgICgpXG4gIFtAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG4gIDs7XG5cbiAgbGV0IGludF9pbmNsID1cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludFwiIGxvIGhpIEludC50b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IGhpIC0gbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBJbnQubWF4X3ZhbHVlXG4gICAgICB0aGVuIGxvICsgKGZ1bGxfcmFuZ2VfaW50IHN0YXRlIGxhbmQgSW50Lm1heF92YWx1ZSlcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwXG4gICAgICB0aGVuIGxvICsgaW50IHN0YXRlIChJbnQuc3VjYyBkaWZmKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBpbnQzMl9pbmNsID1cbiAgICBsZXQgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludDMyIHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIENhbWwuSW50MzIgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDMyXCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBsXG4gICAgICB0aGVuIGFkZCBsbyAoaW50MzIgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9pbmNsID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gQ2FtbC5OYXRpdmVpbnQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcIm5hdGl2ZWludFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMG5cbiAgICAgIHRoZW4gYWRkIGxvIChuYXRpdmVpbnQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDY0X2luY2wgPVxuICAgIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gQ2FtbC5JbnQ2NCBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50NjRcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICAgIHRoZW4gYWRkIGxvIChpbnQ2NCBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICAoKiBSZXR1cm4gYSB1bmlmb3JtbHkgcmFuZG9tIGZsb2F0IGluIFswLCAxKS4gKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzdGF0ZSA9XG4gICAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHNjYWxlID0gMHgxcC0zMCBpblxuICAgICgqIDJeLTMwICopXG4gICAgbGV0IHIxID0gQ2FtbC5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHIyID0gQ2FtbC5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHJlc3VsdCA9ICgocjEgKi4gc2NhbGUpICsuIHIyKSAqLiBzY2FsZSBpblxuICAgICgqIFdpdGggdmVyeSBzbWFsbCBwcm9iYWJpbGl0eSwgcmVzdWx0IGNhbiByb3VuZCB1cCB0byAxLjAsIHNvIGluIHRoYXQgY2FzZSwgd2UganVzdFxuICAgICAgIHRyeSBhZ2Fpbi4gKilcbiAgICBpZiByZXN1bHQgPCAxLjAgdGhlbiByZXN1bHQgZWxzZSByYXdmbG9hdCBzdGF0ZVxuICA7O1xuXG4gIGxldCBmbG9hdCBzdGF0ZSBoaSA9IHJhd2Zsb2F0IHN0YXRlICouIGhpXG5cbiAgbGV0IGZsb2F0X3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJmbG9hdFwiIGxvIGhpIENhbWwuc3RyaW5nX29mX2Zsb2F0O1xuICAgIGxvICsuIGZsb2F0IHN0YXRlIChoaSAtLiBsbylcbiAgOztcbmVuZFxuXG5sZXQgZGVmYXVsdCA9IFJhbmRvbV9yZXByLm1ha2VfZGVmYXVsdCBTdGF0ZS5kZWZhdWx0XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgaW50IHggPSBTdGF0ZS5pbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50MzIgeCA9IFN0YXRlLmludDMyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IG5hdGl2ZWludCB4ID0gU3RhdGUubmF0aXZlaW50IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludDY0IHggPSBTdGF0ZS5pbnQ2NCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBmbG9hdCB4ID0gU3RhdGUuZmxvYXQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50X2luY2wgeCB5ID0gU3RhdGUuaW50X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBpbnQzMl9pbmNsIHggeSA9IFN0YXRlLmludDMyX2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBuYXRpdmVpbnRfaW5jbCB4IHkgPSBTdGF0ZS5uYXRpdmVpbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDY0X2luY2wgeCB5ID0gU3RhdGUuaW50NjRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGZsb2F0X3JhbmdlIHggeSA9IFN0YXRlLmZsb2F0X3JhbmdlIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGNoYXIgKCkgPSBTdGF0ZS5jaGFyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBhc2NpaSAoKSA9IFN0YXRlLmFzY2lpIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkID9hbGxvd19pbl90ZXN0cyAoKSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNcbiIsIigqKiBBbiBpbnRlcm5hbC1vbmx5IG1vZHVsZSBmYWN0b3JlZCBvdXQgZHVlIHRvIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvcmVfYXJyYXlcbiAgICBhbmQgY29yZV9saXN0LiAgQ29udGFpbnMgY29kZSBmb3IgcGVybXV0aW5nIGFuIGFycmF5LiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQXJyYXkwXG5cbmxldCBwZXJtdXRlID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpID8ocG9zID0gMCkgP2xlbiB0ID1cbiAgKCogQ29waWVkIGZyb20gW09yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjb21waWxpbmdcbiAgICAgd2l0aG91dCBmbGFtYmRhLiAqKVxuICBsZXQgdG90YWxfbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgbCAtPiBsXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMC5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgbGV0IG51bV9zd2FwcyA9IGxlbiAtIDEgaW5cbiAgZm9yIGkgPSBudW1fc3dhcHMgZG93bnRvIDEgZG9cbiAgICBsZXQgdGhpc19pID0gcG9zICsgaSBpblxuICAgICgqIFtyYW5kb21faV0gaXMgZHJhd24gZnJvbSBbcG9zLHRoaXNfaV0gKilcbiAgICBsZXQgcmFuZG9tX2kgPSBwb3MgKyBSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAoaSArIDEpIGluXG4gICAgc3dhcCB0IHRoaXNfaSByYW5kb21faVxuICBkb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIHRoaXMgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIFtDYW1sLmlnbm9yZV0gKilcblxubGV0IG5vbiBmIHggPSBub3QgKGYgeClcblxubGV0IGZvcmV2ZXIgZiA9XG4gIGxldCByZWMgZm9yZXZlciAoKSA9XG4gICAgZiAoKTtcbiAgICBmb3JldmVyICgpXG4gIGluXG4gIHRyeSBmb3JldmVyICgpIHdpdGhcbiAgfCBlIC0+IGVcbjs7XG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGUgdHlwaWNhbCB1c2UgY2FzZSBmb3IgdGhlc2UgZnVuY3Rpb25zIGlzIHRvIHBhc3MgaW4gZnVuY3Rpb25hbCBhcmd1bWVudHMgYW5kIGdldFxuICAgZnVuY3Rpb25zIGFzIGEgcmVzdWx0LiAqKVxubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgcmVjIGFwcGx5X25fdGltZXMgfm4gZiB4ID0gaWYgbiA8PSAwIHRoZW4geCBlbHNlIGFwcGx5X25fdGltZXMgfm46KG4gLSAxKSBmIChmIHgpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBMZXNzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEVxdWFsIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEdyZWF0ZXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIExlc3M7IEVxdWFsOyBHcmVhdGVyIF0gOiB0IGxpc3QpXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwib3JkZXJpbmcubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIC0+IExlc3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIC0+IEVxdWFsXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgLT4gR3JlYXRlclxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZXNzXCIgfCBcIkxlc3NcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IExlc3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVzc1wiXG4gICAgfCBFcXVhbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJFcXVhbFwiXG4gICAgfCBHcmVhdGVyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkdyZWF0ZXJcIlxuICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJMZXNzXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJFcXVhbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiR3JlYXRlclwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBfb3JkZXJpbmcgPSB0ID1cbiAgICB8IExlc3NcbiAgICB8IEVxdWFsXG4gICAgfCBHcmVhdGVyXG5lbmRcblxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBMZXNzIGVsc2UgaWYgbiA9IDAgdGhlbiBFcXVhbCBlbHNlIEdyZWF0ZXJcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTGVzcyAtPiAtMVxuICB8IEVxdWFsIC0+IDBcbiAgfCBHcmVhdGVyIC0+IDFcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxuXG5pbmNsdWRlIExpc3QxXG5cbigqIFRoaXMgaXRzZWxmIGluY2x1ZGVzIFtMaXN0MF0uICopXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gbGlzdF9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2xpc3RcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxpc3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBPcl91bmVxdWFsX2xlbmd0aHMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBVbmVxdWFsX2xlbmd0aHNcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA2XyBiX18wMDdfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDA2XyBiX18wMDdfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDZfLCBiX18wMDdfIHdpdGhcbiAgICAgIHwgT2sgX2FfXzAwOF8sIE9rIF9iX18wMDlfIC0+IF9jbXBfX2EgX2FfXzAwOF8gX2JfXzAwOV9cbiAgICAgIHwgT2sgXywgXyAtPiAtMVxuICAgICAgfCBfLCBPayBfIC0+IDFcbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzLCBVbmVxdWFsX2xlbmd0aHMgLT4gMClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gKHR5cGUgYV9fMDEzXykgOiAoKGFfXzAxM18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMTNfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDEwXyAtPiBmdW5jdGlvblxuICAgICAgfCBPayBhcmcwX18wMTFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMTJfID0gX29mX2FfXzAxMF8gYXJnMF9fMDExXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyByZXMwX18wMTJfIF1cbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxfbGVuZ3Roc1wiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcbmxldCBvZl9saXN0IHQgPSB0XG5cbmxldCByYW5nZScgfmNvbXBhcmUgfnN0cmlkZSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfaSBzdG9wX2kgPVxuICBsZXQgbmV4dF9pID0gc3RyaWRlIHN0YXJ0X2kgaW5cbiAgbGV0IG9yZGVyIHggeSA9IE9yZGVyaW5nLm9mX2ludCAoY29tcGFyZSB4IHkpIGluXG4gIGxldCByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpID1cbiAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZVwiXG4gIGluXG4gIGxldCBpbml0aWFsX3N0cmlkZV9vcmRlciA9XG4gICAgbWF0Y2ggb3JkZXIgc3RhcnRfaSBuZXh0X2kgd2l0aFxuICAgIHwgRXF1YWwgLT4gcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKVxuICAgIHwgTGVzcyAtPiBgTGVzc1xuICAgIHwgR3JlYXRlciAtPiBgR3JlYXRlclxuICBpblxuICBsZXQgcmVjIGxvb3AgaSBhY2N1bSA9XG4gICAgbGV0IGlfdG9fc3RvcF9vcmRlciA9IG9yZGVyIGkgc3RvcF9pIGluXG4gICAgbWF0Y2ggaV90b19zdG9wX29yZGVyLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+XG4gICAgICAoKiBoYXZlbid0IHlldCByZWFjaGVkIFtzdG9wX2ldLiBDb250aW51ZS4gKilcbiAgICAgIGxldCBuZXh0X2kgPSBzdHJpZGUgaSBpblxuICAgICAgKG1hdGNoIG9yZGVyIGkgbmV4dF9pLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgICAgfCBFcXVhbCwgXyAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IGNoYW5nZSBkaXJlY3Rpb25cIlxuICAgICAgIHwgTGVzcywgYExlc3MgfCBHcmVhdGVyLCBgR3JlYXRlciAtPiBsb29wIG5leHRfaSAoaSA6OiBhY2N1bSkpXG4gICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAoKiBzdGVwcGVkIHBhc3QgW3N0b3BfaV0uICBGaW5pc2hlZC4gKilcbiAgICAgIGFjY3VtXG4gICAgfCBFcXVhbCwgXyAtPlxuICAgICAgKCogcmVhY2hlZCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgKG1hdGNoIHN0b3Agd2l0aFxuICAgICAgIHwgYGluY2x1c2l2ZSAtPiBpIDo6IGFjY3VtXG4gICAgICAgfCBgZXhjbHVzaXZlIC0+IGFjY3VtKVxuICBpblxuICBsZXQgc3RhcnRfaSA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgYGluY2x1c2l2ZSAtPiBzdGFydF9pXG4gICAgfCBgZXhjbHVzaXZlIC0+IG5leHRfaVxuICBpblxuICByZXYgKGxvb3Agc3RhcnRfaSBbXSlcbjs7XG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGlmIHN0cmlkZSA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2U6IHN0cmlkZSBtdXN0IGJlIG5vbi16ZXJvXCI7XG4gIHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlOihmdW4geCAtPiB4ICsgc3RyaWRlKSB+c3RhcnQgfnN0b3Agc3RhcnRfaSBzdG9wX2lcbjs7XG5cbmxldCBoZCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogXyAtPiBTb21lIHhcbjs7XG5cbmxldCB0bCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogdCcgLT4gU29tZSB0J1xuOztcblxubGV0IG50aCB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBudGhfYXV4IHQgbiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhIDo6IHQgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IHQgKG4gLSAxKVxuICAgIGluXG4gICAgbnRoX2F1eCB0IG4pXG47O1xuXG5sZXQgbnRoX2V4biB0IG4gPVxuICBtYXRjaCBudGggdCBuIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIkxpc3QubnRoX2V4biAlZCBjYWxsZWQgb24gbGlzdCBvZiBsZW5ndGggJWRcIiBuIChsZW5ndGggdCkgKClcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHVub3JkZXJlZF9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsIHwgbCwgW10gLT4gbFxuICB8IF8gLT4gcmV2X2FwcGVuZCBsMSBsMlxuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFNhbWVfbGVuZ3RoIG9mIGludFxuICAgIHwgVW5lcXVhbF9sZW5ndGhzIG9mXG4gICAgICAgIHsgc2hhcmVkX2xlbmd0aCA6IGludFxuICAgICAgICA7IHRhaWxfb2ZfYSA6ICdhIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2IgOiAnYiBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIHNoYXJlZF9sZW5ndGggPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiIC0+IGxvb3AgYSBiIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8gfCBfLCBbXSAtPiBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIGwxIGwyID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMi5vZl9saXN0cyBsMSBsMiB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iIH0gLT5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiXG4gICAgICBuYW1lXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EpXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IpXG4gICAgICAoKVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmYgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+IE9yX3VuZXF1YWxfbGVuZ3Rocy5PayAoZiBsMSBsMilcbiAgfCBVbmVxdWFsX2xlbmd0aHMgXyAtPiBVbmVxdWFsX2xlbmd0aHNcbjs7XG5cbm1vZHVsZSBDaGVja19sZW5ndGgzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2MgOiAnYyBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyIGwzID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIGMgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiLCBjIHdpdGhcbiAgICAgIHwgW10sIFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiLCBfIDo6IGMgLT4gbG9vcCBhIGIgYyAoc2hhcmVkX2xlbmd0aCArIDEpXG4gICAgICB8IFtdLCBfLCBfIHwgXywgW10sIF8gfCBfLCBfLCBbXSAtPlxuICAgICAgICBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiOyB0YWlsX29mX2MgPSBjIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgbDMgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgzX2V4biBuYW1lIGwxIGwyIGwzID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iOyB0YWlsX29mX2MgfSAtPlxuICAgIGxldCBuMSA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9hIGluXG4gICAgbGV0IG4yID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IgaW5cbiAgICBsZXQgbjMgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYyBpblxuICAgIGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWQgfHwgJWQgPD4gJWRcIiBuYW1lIG4xIG4yIG4yIG4zICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDMub2ZfbGlzdHMgbDEgbDIgbDMgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyIGwzKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubGV0IGl0ZXIyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooaXRlcjJfb2sgfmYpXG5cbmxldCBpdGVyMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIml0ZXIyX2V4blwiIGwxIGwyO1xuICBpdGVyMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IHJldl9tYXAyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjoocmV2X21hcDJfb2sgfmYpXG5cbmxldCByZXZfbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcInJldl9tYXAyX2V4blwiIGwxIGwyO1xuICByZXZfbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGZvbGQyIGwxIGwyIH5pbml0IH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9sZDJfb2sgfmluaXQgfmYpXG5cbmxldCBmb2xkMl9leG4gbDEgbDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvbGQyX2V4blwiIGwxIGwyO1xuICBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZlxuOztcblxubGV0IGZvcl9hbGwyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9yX2FsbDJfb2sgfmYpXG5cbmxldCBmb3JfYWxsMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvcl9hbGwyX2V4blwiIGwxIGwyO1xuICBmb3JfYWxsMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGV4aXN0czIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihleGlzdHMyX29rIH5mKVxuXG5sZXQgZXhpc3RzMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImV4aXN0czJfZXhuXCIgbDEgbDI7XG4gIGV4aXN0czJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBlcXVhbCBhID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBiIDo6IGJzIC0+IGVxdWFsIGEgYiB8fCBsb29wIGVxdWFsIGEgYnNcbiAgaW5cbiAgbG9vcCBlcXVhbCBhIHRcbjs7XG5cbigqIFRoaXMgaXMgYSBjb3B5IG9mIHRoZSBjb2RlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggYW4gZXh0cmEgZXRhLWV4cGFuc2lvbiB0b1xuICAgYXZvaWQgY3JlYXRpbmcgcGFydGlhbCBjbG9zdXJlcyAoc2hvd2VkIHVwIGZvciBbZmlsdGVyXSkgaW4gcHJvZmlsaW5nKS4gKilcbmxldCByZXZfZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVjIGZpbmQgfmYgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gZmluZCB+ZiAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCB+ZiBhY2N1IGxcbiAgaW5cbiAgZmluZCB+ZiBbXSB0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSByZXYgKHJldl9maWx0ZXIgdCB+ZilcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBsXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICBpblxuICBsb29wIHRcbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIGxvb3AgbFxuICBpblxuICBsb29wIHRcbjs7XG5cbmxldCBmaW5kX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmVjIGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCB4IDo6IHQgLT4gaWYgZiB4IHRoZW4geCBlbHNlIGZpbmRfZXhuIHQgfmZcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX2V4blxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgKGksIHgpIGVsc2UgbG9vcCAoaSArIDEpIGxcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbmxldCBmaW5kaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgZmluZGlfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBsKVxuICBpblxuICBsb29wIDAgdFxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcGlfZXhuXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkICYmIGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdFxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IGhkIDo6IHRsIC0+IGYgaSBoZCB8fCBsb29wIChpICsgMSkgdGxcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbigqKiBGb3IgdGhlIGNvbnRhaW5lciBpbnRlcmZhY2UuICopXG5sZXQgZm9sZF9sZWZ0ID0gZm9sZFxuXG5sZXQgdG9fYXJyYXkgPSBBcnJheS5vZl9saXN0XG5sZXQgdG9fbGlzdCB0ID0gdFxuXG5sZXQgbWF4X25vbl90YWlsY2FsbCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMV8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQncyBzbWFsbC4gVGhpc1xuICAgICBudW1iZXIgd2FzIHRha2VuIGZyb20gb2NhbWwjc3RkbGliL2xpc3QubWwgd2hpY2ggaXMgYWxzbyBlcXVhbCB0byB0aGUgZGVmYXVsdCBsaW1pdFxuICAgICBvZiByZWN1cnNpdmUgY2FsbCBpbiB0aGUganNfb2Zfb2NhbWwgY29tcGlsZXIgYmVmb3JlIHN3aXRjaGluZyB0byB0cmFtcG9saW5lLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG47O1xuXG4oKiogVGFpbCByZWN1cnNpdmUgdmVyc2lvbnMgb2Ygc3RhbmRhcmQgW0xpc3RdIG1vZHVsZSAqKVxuXG5sZXQgdGFpbF9hcHBlbmQgbDEgbDIgPSByZXZfYXBwZW5kIChyZXYgbDEpIGwyXG5cbigqIFRoZXJlIGFyZSBhIGZldyBvcHRpbWl6ZWQgbGlzdCBvcGVyYXRpb25zIGhlcmUsIGluY2x1ZGluZyBhcHBlbmQgYW5kIG1hcC4gIFRoZXJlIGFyZVxuICAgYmFzaWNhbGx5IHR3byBvcHRpbWl6YXRpb25zIGluIHBsYXk6IGxvb3AgdW5yb2xsaW5nLCBhbmQgZHluYW1pYyBzd2l0Y2hpbmcgYmV0d2VlblxuICAgc3RhY2sgYW5kIGhlYXAgYWxsb2NhdGlvbi5cblxuICAgVGhlIGxvb3AtdW5yb2xsaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZCwgd2UganVzdCB1bnJvbGwgNSBsZXZlbHMgb2YgdGhlIGxvb3AuICBUaGlzIG1ha2VzXG4gICBlYWNoIGl0ZXJhdGlvbiBmYXN0ZXIsIGFuZCBhbHNvIHJlZHVjZXMgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgY29uc3VtZWQgcGVyIGxpc3RcbiAgIGVsZW1lbnQuXG5cbiAgIFRoZSBkeW5hbWljIHN3aXRjaGluZyBpcyBkb25lIGJ5IGNvdW50aW5nIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzLCBhbmQgdGhlblxuICAgc3dpdGNoaW5nIHRvIHRoZSBcInNsb3dcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIHdlIGV4Y2VlZCBhIGdpdmVuIGxpbWl0LiAgVGhpcyBtZWFucyB0aGF0XG4gICBzaG9ydCBsaXN0cyB1c2UgdGhlIGZhc3Qgc3RhY2stYWxsb2NhdGlvbiBtZXRob2QsIGFuZCBsb25nIGxpc3RzIHVzZSBhIHNsb3dlciBvbmUgdGhhdFxuICAgZG9lc24ndCByZXF1aXJlIHN0YWNrIHNwYWNlLiAqKVxubGV0IHJlYyBjb3VudF9hcHBlbmQgbDEgbDIgY291bnQgPVxuICBtYXRjaCBsMiB3aXRoXG4gIHwgW10gLT4gbDFcbiAgfCBfIC0+XG4gICAgKG1hdGNoIGwxIHdpdGhcbiAgICAgfCBbXSAtPiBsMlxuICAgICB8IFsgeDEgXSAtPiB4MSA6OiBsMlxuICAgICB8IFsgeDE7IHgyIF0gLT4geDEgOjogeDIgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDMgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiBsMlxuICAgICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiBsMlxuICAgICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgICAgeDFcbiAgICAgICA6OiB4MlxuICAgICAgIDo6IHgzXG4gICAgICAgOjogeDRcbiAgICAgICA6OiB4NVxuICAgICAgIDo6XG4gICAgICAgKGlmIGNvdW50ID4gbWF4X25vbl90YWlsY2FsbFxuICAgICAgICB0aGVuIHRhaWxfYXBwZW5kIHRsIGwyXG4gICAgICAgIGVsc2UgY291bnRfYXBwZW5kIHRsIGwyIChjb3VudCArIDEpKSlcbjs7XG5cbmxldCBhcHBlbmQgbDEgbDIgPSBjb3VudF9hcHBlbmQgbDEgbDIgMFxuXG4oKiBBbiBvcmRpbmFyeSB0YWlsIHJlY3Vyc2l2ZSBtYXAgYnVpbGRzIHVwIGFuIGludGVybWVkaWF0ZSAocmV2ZXJzZWQpIHJlcHJlc2VudGF0aW9uLFxuICAgd2l0aCBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0IHBlciBlbGVtZW50LiBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIGluc3RlYWQgY2h1bmtzXG4gICA5IG9iamVjdHMgaW50byBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0LCByZWR1Y2luZyBhbGxvY2F0aW9uIGFuZCBwZXJmb3JtYW5jZSBjb3N0c1xuICAgYWNjb3JkaW5nbHkuIE5vdGUgdGhhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGxpc3QgaXMgZG9uZSBieSB0aGUgc3RkbGliJ3MgbWFwXG4gICBmdW5jdGlvbi4gKilcbmxldCB0YWlsX21hcCB4cyB+ZiA9XG4gIGxldCByZWMgcmlzZSB5cyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB5c1xuICAgIHwgKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzIC0+XG4gICAgICByaXNlICh5MCA6OiB5MSA6OiB5MiA6OiB5MyA6OiB5NCA6OiB5NSA6OiB5NiA6OiB5NyA6OiB5OCA6OiB5cykgYnNcbiAgaW5cbiAgbGV0IHJlYyBkaXZlIGJzID0gZnVuY3Rpb25cbiAgICB8IHgwIDo6IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHg2IDo6IHg3IDo6IHg4IDo6IHhzIC0+XG4gICAgICBsZXQgeTAgPSBmIHgwIGluXG4gICAgICBsZXQgeTEgPSBmIHgxIGluXG4gICAgICBsZXQgeTIgPSBmIHgyIGluXG4gICAgICBsZXQgeTMgPSBmIHgzIGluXG4gICAgICBsZXQgeTQgPSBmIHg0IGluXG4gICAgICBsZXQgeTUgPSBmIHg1IGluXG4gICAgICBsZXQgeTYgPSBmIHg2IGluXG4gICAgICBsZXQgeTcgPSBmIHg3IGluXG4gICAgICBsZXQgeTggPSBmIHg4IGluXG4gICAgICBkaXZlICgoeTAsIHkxLCB5MiwgeTMsIHk0LCB5NSwgeTYsIHk3LCB5OCkgOjogYnMpIHhzXG4gICAgfCB4cyAtPiByaXNlIChub250YWlsX21hcCB+ZiB4cykgYnNcbiAgaW5cbiAgZGl2ZSBbXSB4c1xuOztcblxubGV0IHJlYyBjb3VudF9tYXAgfmYgbCBjdHIgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IFsgeDEgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBbIGYxIF1cbiAgfCBbIHgxOyB4MiBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBbIGYxOyBmMiBdXG4gIHwgWyB4MTsgeDI7IHgzIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBbIGYxOyBmMjsgZjMgXVxuICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIGxldCBmNCA9IGYgeDQgaW5cbiAgICBbIGYxOyBmMjsgZjM7IGY0IF1cbiAgfCB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB0bCAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIGxldCBmNCA9IGYgeDQgaW5cbiAgICBsZXQgZjUgPSBmIHg1IGluXG4gICAgZjFcbiAgICA6OiBmMlxuICAgIDo6IGYzXG4gICAgOjogZjRcbiAgICA6OiBmNVxuICAgIDo6IChpZiBjdHIgPiBtYXhfbm9uX3RhaWxjYWxsIHRoZW4gdGFpbF9tYXAgfmYgdGwgZWxzZSBjb3VudF9tYXAgfmYgdGwgKGN0ciArIDEpKVxuOztcblxubGV0IG1hcCBsIH5mID0gY291bnRfbWFwIH5mIGwgMFxuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCAoID4+fCApIGwgZiA9IG1hcCBsIH5mXG5sZXQgbWFwMl9vayBsMSBsMiB+ZiA9IHJldiAocmV2X21hcDJfb2sgbDEgbDIgfmYpXG5sZXQgbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KG1hcDJfb2sgfmYpXG5cbmxldCBtYXAyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwibWFwMl9leG5cIiBsMSBsMjtcbiAgbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IHJldl9tYXAzX29rIGwxIGwyIGwzIH5mID1cbiAgbGV0IHJlYyBsb29wIGwxIGwyIGwzIGFjID1cbiAgICBtYXRjaCBsMSwgbDIsIGwzIHdpdGhcbiAgICB8IFtdLCBbXSwgW10gLT4gYWNcbiAgICB8IHgxIDo6IGwxLCB4MiA6OiBsMiwgeDMgOjogbDMgLT4gbG9vcCBsMSBsMiBsMyAoZiB4MSB4MiB4MyA6OiBhYylcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGxvb3AgbDEgbDIgbDMgW11cbjs7XG5cbmxldCByZXZfbWFwMyBsMSBsMiBsMyB+ZiA9IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmY6KHJldl9tYXAzX29rIH5mKVxuXG5sZXQgcmV2X21hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJyZXZfbWFwM19leG5cIiBsMSBsMiBsMztcbiAgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCBtYXAzX29rIGwxIGwyIGwzIH5mID0gcmV2IChyZXZfbWFwM19vayBsMSBsMiBsMyB+ZilcbmxldCBtYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoobWFwM19vayB+ZilcblxubGV0IG1hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJtYXAzX2V4blwiIGwxIGwyIGwzO1xuICBtYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kIGwxIGwyIH5mID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaCA6OiB0IC0+IHJldl9tYXBfYXBwZW5kIH5mIHQgKGYgaCA6OiBsMilcbjs7XG5cbmxldCB1bnppcCBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyXG4gICAgfCAoeCwgeSkgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpXG4gIGluXG4gIGxvb3AgKHJldiBsaXN0KSBbXSBbXVxuOztcblxubGV0IHVuemlwMyBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgbDMgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyLCBsM1xuICAgIHwgKHgsIHksIHopIDo6IHRsIC0+IGxvb3AgdGwgKHggOjogbDEpICh5IDo6IGwyKSAoeiA6OiBsMylcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdIFtdXG47O1xuXG5sZXQgemlwX2V4biBsMSBsMiA9XG4gIHRyeSBtYXAyX29rIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyIHdpdGhcbiAgfCBfIC0+IGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiB6aXBfZXhuOiAlZCA8PiAlZFwiIChsZW5ndGggbDEpIChsZW5ndGggbDIpICgpXG47O1xuXG5sZXQgemlwIGwxIGwyID0gbWFwMiB+ZjooZnVuIGEgYiAtPiBhLCBiKSBsMSBsMlxuXG4oKiogQWRkaXRpb25hbCBsaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJldl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoIDo6IHQgLT4gbG9vcCAoaSArIDEpIChmIGkgaCA6OiBhY2MpIHRcbiAgaW5cbiAgbG9vcCAwIFtdIGxcbjs7XG5cbmxldCBtYXBpIGwgfmYgPSByZXYgKHJldl9tYXBpIGwgfmYpXG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGl0ZXJpIGwgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCBsIH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIHNuZCAoZm9sZCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHYgLT4gaSArIDEsIGYgaSBhY2MgdikpXG47O1xuXG5sZXQgZmlsdGVyaSBsIH5mID1cbiAgcmV2IChmb2xkaSBsIH5mOihmdW4gcG9zIGFjYyB4IC0+IGlmIGYgcG9zIHggdGhlbiB4IDo6IGFjYyBlbHNlIGFjYykgfmluaXQ6W10pXG47O1xuXG5sZXQgcmVkdWNlIGwgfmYgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgaGQgOjogdGwgLT4gU29tZSAoZm9sZCB+aW5pdDpoZCB+ZiB0bClcbjs7XG5cbmxldCByZWR1Y2VfZXhuIGwgfmYgPVxuICBtYXRjaCByZWR1Y2UgbCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCByZWR1Y2VfYmFsYW5jZWQgbCB+ZiA9XG4gICgqIENhbGwgdGhlIFwic2l6ZVwiIG9mIGEgdmFsdWUgdGhlIG51bWJlciBvZiBsaXN0IGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGNvbWJpbmVkIGludG9cbiAgICAgaXQgdmlhIGNhbGxzIHRvIFtmXS4gIFdlIHByb2NlZWQgYnkgdXNpbmcgW2ZdIHRvIGNvbWJpbmUgZWxlbWVudHMgaW4gdGhlIGFjY3VtdWxhdG9yXG4gICAgIG9mIHRoZSBzYW1lIHNpemUgdW50aWwgd2UgY2FuJ3QgY29tYmluZSBhbnkgbW9yZSwgdGhlbiBnZXR0aW5nIGEgbmV3IGVsZW1lbnQgZnJvbSB0aGVcbiAgICAgaW5wdXQgbGlzdCBhbmQgcmVwZWF0aW5nLlxuXG4gICAgIFdpdGggdGhpcyBzdHJhdGVneSwgaW4gdGhlIGFjY3VtdWxhdG9yOlxuICAgICAtIHdlIG9ubHkgZXZlciBoYXZlIGVsZW1lbnRzIG9mIHNpemVzIGEgcG93ZXIgb2YgdHdvXG4gICAgIC0gd2UgbmV2ZXIgaGF2ZSBtb3JlIHRoYW4gb25lIGVsZW1lbnQgb2YgZWFjaCBzaXplXG4gICAgIC0gdGhlIHN1bSBvZiBhbGwgdGhlIGVsZW1lbnQgc2l6ZXMgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZFxuXG4gICAgIFRoZXNlIGNvbmRpdGlvbnMgZW5mb3JjZSB0aGF0IGxpc3Qgb2YgZWxlbWVudHMgb2YgZWFjaCBzaXplIGlzIHByZWNpc2VseSB0aGUgYmluYXJ5XG4gICAgIGV4cGFuc2lvbiBvZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnN1bWVkOiBpZiB5b3UndmUgY29uc3VtZWQgMTMgPSAwYjExMDFcbiAgICAgZWxlbWVudHMsIHlvdSBoYXZlIG9uZSBlbGVtZW50IG9mIHNpemUgOCwgb25lIG9mIHNpemUgNCwgYW5kIG9uZSBvZiBzaXplIDEuICBIZW5jZVxuICAgICB3aGVuIGEgbmV3IGVsZW1lbnQgY29tZXMgYWxvbmcsIHRoZSBudW1iZXIgb2YgY29tYmluaW5ncyB5b3UgbmVlZCB0byBkbyBpcyB0aGUgbnVtYmVyXG4gICAgIG9mIHRyYWlsaW5nIDFzIGluIHRoZSBiaW5hcnkgZXhwYW5zaW9uIG9mIFtudW1dLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgaGF2ZVxuICAgICBhbHJlYWR5IGdvbmUgaW50byB0aGUgYWNjdW11bGF0b3IuICBUaGUgYWNjdW11bGF0b3IgaXMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHNpemUsIHNvXG4gICAgIHRoZSBuZXh0IGVsZW1lbnQgdG8gY29tYmluZSB3aXRoIGlzIGFsd2F5cyB0aGUgaGVhZCBvZiB0aGUgbGlzdC4gKilcbiAgbGV0IHJlYyBzdGVwX2FjY3VtIG51bSBhY2MgeCA9XG4gICAgaWYgbnVtIGxhbmQgMSA9IDBcbiAgICB0aGVuIHggOjogYWNjXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIE5ldyBlbGVtZW50cyBmcm9tIGxhdGVyIGluIHRoZSBpbnB1dCBsaXN0IGdvIG9uIHRoZSBmcm9udCBvZiB0aGUgYWNjdW11bGF0b3IsIHNvXG4gICAgICAgICB0aGUgYWNjdW11bGF0b3IgaXMgaW4gcmV2ZXJzZSBvcmRlciB3cnQgdGhlIG9yaWdpbmFsIGxpc3Qgb3JkZXIsIGhlbmNlIFtmIHkgeF1cbiAgICAgICAgIGluc3RlYWQgb2YgW2YgeCB5XS4gKilcbiAgICAgIHwgeSA6OiB5cyAtPiBzdGVwX2FjY3VtIChudW0gYXNyIDEpIHlzIChmIHkgeCkpXG4gIGluXG4gICgqIEV4cGVyaW1lbnRhbGx5LCBpbmxpbmluZyBbZm9sZGldIGFuZCB1bnJvbGxpbmcgdGhpcyBsb29wIGEgZmV3IHRpbWVzIGNhbiByZWR1Y2VcbiAgICAgcnVudGltZSBkb3duIHRvIGEgdGhpcmQgYW5kIGFsbG9jYXRpb24gdG8gMS8xNnRoIG9yIHNvIGluIHRoZSBtaWNyb2JlbmNobWFya3MgYmVsb3cuXG4gICAgIEhvd2V2ZXIsIGluIG1vc3QgdXNlIGNhc2VzIFtmXSBpcyBsaWtlbHkgdG8gYmUgZXhwZW5zaXZlIChvdGhlcndpc2Ugd2h5IGRvIHlvdSBjYXJlXG4gICAgIGFib3V0IHRoZSBvcmRlciBvZiByZWR1Y3Rpb24/KSBzbyB0aGUgb3ZlcmhlYWQgb2YgdGhpcyBmdW5jdGlvbiBpdHNlbGYgZG9lc24ndCByZWFsbHlcbiAgICAgbWF0dGVyLiBJZiB5b3UgY29tZSB1cCB3aXRoIGEgdXNlLWNhc2Ugd2hlcmUgaXQgZG9lcywgdGhlbiB0aGF0J3Mgc29tZXRoaW5nIHlvdSBtaWdodFxuICAgICB3YW50IHRvIHRyeTogc2VlIGhnIGxvZyAtcHIgNDllZjA2NWY0MjlkLiAqKVxuICBtYXRjaCBmb2xkaSBsIH5pbml0OltdIH5mOnN0ZXBfYWNjdW0gd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IFNvbWUgKGZvbGQgeHMgfmluaXQ6eCB+ZjooZnVuIHggeSAtPiBmIHkgeCkpXG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlX2JhbGFuY2VkIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9iYWxhbmNlZF9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgZ3JvdXBpIGwgfmJyZWFrID1cbiAgbGV0IGdyb3VwcyA9XG4gICAgZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIHggLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IFtdIC0+IFsgWyB4IF0gXVxuICAgICAgfCBjdXJyZW50X2dyb3VwIDo6IHRsIC0+XG4gICAgICAgIGlmIGJyZWFrIGkgKGhkX2V4biBjdXJyZW50X2dyb3VwKSB4XG4gICAgICAgIHRoZW4gWyB4IF0gOjogY3VycmVudF9ncm91cCA6OiB0bCAoKiBzdGFydCBuZXcgZ3JvdXAgKilcbiAgICAgICAgZWxzZSAoeCA6OiBjdXJyZW50X2dyb3VwKSA6OiB0bClcbiAgICAoKiBleHRlbmQgY3VycmVudCBncm91cCAqKVxuICBpblxuICBtYXRjaCBncm91cHMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgbCAtPiByZXZfbWFwIGwgfmY6cmV2XG47O1xuXG5sZXQgZ3JvdXAgbCB+YnJlYWsgPSBncm91cGkgbCB+YnJlYWs6KGZ1biBfIHggeSAtPiBicmVhayB4IHkpXG5cbmxldCBzb3J0X2FuZF9ncm91cCBsIH5jb21wYXJlID1cbiAgbCB8PiBzdGFibGVfc29ydCB+Y29tcGFyZSB8PiBncm91cCB+YnJlYWs6KGZ1biB4IHkgLT4gY29tcGFyZSB4IHkgPD4gMClcbjs7XG5cbmxldCBjb25jYXRfbWFwIGwgfmYgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChyZXZfYXBwZW5kIChmIGhkKSBhY2MpIHRsXG4gIGluXG4gIGF1eCBbXSBsXG47O1xuXG5sZXQgY29uY2F0X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgYXV4IGNvbnQgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAoY29udCArIDEpIChyZXZfYXBwZW5kIChmIGNvbnQgaGQpIGFjYykgdGxcbiAgaW5cbiAgYXV4IDAgW10gbFxuOztcblxubGV0IG1lcmdlIGwxIGwyIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGFjYyBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGFjYyBsMlxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgYWNjIGwxXG4gICAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNvbXBhcmUgaDEgaDIgPD0gMCB0aGVuIGxvb3AgKGgxIDo6IGFjYykgdDEgbDIgZWxzZSBsb29wIChoMiA6OiBhY2MpIGwxIHQyXG4gIGluXG4gIGxvb3AgW10gbDEgbDJcbjs7XG5cbm1vZHVsZSBDYXJ0ZXNpYW5fcHJvZHVjdCA9IHN0cnVjdFxuICAoKiBXZSBhcmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZSBleHBvcnQgZnJvbSBmdW5jdG9ycyBzbyB0aGF0IHdlIGRvbid0IGFjY2lkZW50YWxseVxuICAgICByZWJpbmQgbW9yZSBlZmZpY2llbnQgbGlzdC1zcGVjaWZpYyBmdW5jdGlvbnMuICopXG5cbiAgbGV0IGJpbmQgPSBjb25jYXRfbWFwXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcDIgYSBiIH5mID0gY29uY2F0X21hcCBhIH5mOihmdW4geCAtPiBtYXAgYiB+ZjooZnVuIHkgLT4gZiB4IHkpKVxuICBsZXQgcmV0dXJuIHggPSBbIHggXVxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG5cbiAgb3BlbiBzdHJ1Y3RcbiAgICBtb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgICBlbmQpXG5cbiAgICBtb2R1bGUgTW9uYWQgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgZW5kKVxuICBlbmRcblxuICBsZXQgYWxsID0gTW9uYWQuYWxsXG4gIGxldCBhbGxfdW5pdCA9IE1vbmFkLmFsbF91bml0XG4gIGxldCBpZ25vcmVfbSA9IE1vbmFkLmlnbm9yZV9tXG4gIGxldCBqb2luID0gTW9uYWQuam9pblxuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuICBlbmRcblxuICBsZXQgYXBwbHkgPSBBcHBsaWNhdGl2ZS5hcHBseVxuICBsZXQgYm90aCA9IEFwcGxpY2F0aXZlLmJvdGhcbiAgbGV0IG1hcDMgPSBBcHBsaWNhdGl2ZS5tYXAzXG4gIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gIGxldCAoIDwqICkgPSBBcHBsaWNhdGl2ZS4oIDwqIClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA8Kj4gKSA9IEFwcGxpY2F0aXZlLiggPCo+IClcbiAgICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gICAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuICBlbmRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKENhcnRlc2lhbl9wcm9kdWN0IDogTW9uYWQuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4oKiogcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdF9leG4gbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFsgeCBdIC0+IHhcbiAgfCBfIDo6IHRsIC0+IGxhc3RfZXhuIHRsXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJMaXN0Lmxhc3RcIlxuOztcblxuKCoqIG9wdGlvbmFsbHkgcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdCBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4gU29tZSB4XG4gIHwgXyA6OiB0bCAtPiBsYXN0IHRsXG4gIHwgW10gLT4gTm9uZVxuOztcblxubGV0IHJlYyBpc19wcmVmaXggbGlzdCB+cHJlZml4IH5lcXVhbCA9XG4gIG1hdGNoIHByZWZpeCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IGhkIDo6IHRsIC0+XG4gICAgKG1hdGNoIGxpc3Qgd2l0aFxuICAgICB8IFtdIC0+IGZhbHNlXG4gICAgIHwgaGQnIDo6IHRsJyAtPiBlcXVhbCBoZCBoZCcgJiYgaXNfcHJlZml4IHRsJyB+cHJlZml4OnRsIH5lcXVhbClcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBhMSA6OiB0IC0+XG4gICAgbGV0IHJlYyBsb29wIGExIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgYTIgOjogdCAtPiBpZiBlcXVhbCBhMSBhMiB0aGVuIFNvbWUgKGExLCBhMikgZWxzZSBsb29wIGEyIHRcbiAgICBpblxuICAgIGxvb3AgYTEgdFxuOztcblxuKCogcmV0dXJucyBsaXN0IHdpdGhvdXQgYWRqYWNlbnQgZHVwbGljYXRlcyAqKVxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzID8od2hpY2hfdG9fa2VlcCA9IGBMYXN0KSBsaXN0IH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCB0b19rZWVwIGFjY3VtID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHRvX2tlZXAgOjogYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBlcXVhbCBoZCB0b19rZWVwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRvX2tlZXAgPVxuICAgICAgICAgIG1hdGNoIHdoaWNoX3RvX2tlZXAgd2l0aFxuICAgICAgICAgIHwgYEZpcnN0IC0+IHRvX2tlZXBcbiAgICAgICAgICB8IGBMYXN0IC0+IGhkXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgdG9fa2VlcCBhY2N1bSB0bClcbiAgICAgIGVsc2UgbG9vcCBoZCAodG9fa2VlcCA6OiBhY2N1bSkgdGxcbiAgaW5cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiByZXYgKGxvb3AgaGQgW10gdGwpXG47O1xuXG4oKiogcmV0dXJucyBzb3J0ZWQgdmVyc2lvbiBvZiBsaXN0IHdpdGggZHVwbGljYXRlcyByZW1vdmVkICopXG5sZXQgZGVkdXBfYW5kX3NvcnQgbGlzdCB+Y29tcGFyZSA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIHwgWyBfIF0gLT4gbGlzdCAoKiBwZXJmb3JtYW5jZSBoYWNrICopXG4gIHwgXyAtPlxuICAgIGxldCBlcXVhbCB4IHgnID0gY29tcGFyZSB4IHgnID0gMCBpblxuICAgIGxldCBzb3J0ZWQgPSBzb3J0IH5jb21wYXJlIGxpc3QgaW5cbiAgICByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyB+ZXF1YWwgc29ydGVkXG47O1xuXG5sZXQgZmluZF9hX2R1cCBsIH5jb21wYXJlID1cbiAgbGV0IHNvcnRlZCA9IHNvcnQgbCB+Y29tcGFyZSBpblxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IE5vbmVcbiAgICB8IGhkMSA6OiAoaGQyIDo6IF8gYXMgdGwpIC0+IGlmIGNvbXBhcmUgaGQxIGhkMiA9IDAgdGhlbiBTb21lIGhkMSBlbHNlIGxvb3AgdGxcbiAgaW5cbiAgbG9vcCBzb3J0ZWRcbjs7XG5cbmxldCBjb250YWluc19kdXAgbHN0IH5jb21wYXJlID1cbiAgbWF0Y2ggZmluZF9hX2R1cCBsc3QgfmNvbXBhcmUgd2l0aFxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZpbmRfYWxsX2R1cHMgbCB+Y29tcGFyZSA9XG4gICgqIFdlIGFkZCB0aGlzIHJldmVyc2FsLCBzbyB3ZSBjYW4gc2tpcCBhIFtyZXZdIGF0IHRoZSBlbmQuIFdlIGNvdWxkIHNraXBcbiAgICAgW3Jldl0gYW55d2F5IHNpbmNlIHdlIGRvbiBub3QgZ2l2ZSBhbnkgb3JkZXJpbmcgZ3VhcmFudGVlcywgYnV0IGl0IGlzXG4gICAgIG5pY2UgdG8gZ2V0IHJlc3VsdHMgaW4gbmF0dXJhbCBvcmRlci4gKilcbiAgbGV0IGNvbXBhcmUgYSBiID0gLTEgKiBjb21wYXJlIGEgYiBpblxuICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsIGluXG4gICgqIFdhbGsgdGhlIGxpc3QgYW5kIHJlY29yZCB0aGUgZmlyc3Qgb2YgZWFjaCBjb25zZWN1dGl2ZSBydW4gb2YgaWRlbnRpY2FsIGVsZW1lbnRzICopXG4gIGxldCByZWMgbG9vcCBzb3J0ZWQgcHJldiB+YWxyZWFkeV9yZWNvcmRlZCBhY2MgPVxuICAgIG1hdGNoIHNvcnRlZCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBjb21wYXJlIHByZXYgaGQgPD4gMFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIGFjY1xuICAgICAgZWxzZSBpZiBhbHJlYWR5X3JlY29yZGVkXG4gICAgICB0aGVuIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSBhY2NcbiAgICAgIGVsc2UgbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDp0cnVlIChoZCA6OiBhY2MpXG4gIGluXG4gIG1hdGNoIHNvcnRlZCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIFtdXG47O1xuXG5sZXQgcmVjIGFsbF9lcXVhbF90byB0IHYgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IHggOjogeHMgLT4gZXF1YWwgeCB2ICYmIGFsbF9lcXVhbF90byB4cyB2IH5lcXVhbFxuOztcblxubGV0IGFsbF9lcXVhbCB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IGlmIGFsbF9lcXVhbF90byB4cyB4IH5lcXVhbCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpXG47O1xuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJMaXN0LmluaXQgJWRcIiBuICgpO1xuICBsZXQgcmVjIGxvb3AgaSBhY2N1bSA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIGkgPSAwIHRoZW4gYWNjdW0gZWxzZSBsb29wIChpIC0gMSkgKGYgKGkgLSAxKSA6OiBhY2N1bSlcbiAgaW5cbiAgbG9vcCBuIFtdXG47O1xuXG5sZXQgcmV2X2ZpbHRlcl9tYXAgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgbCBbXVxuOztcblxubGV0IGZpbHRlcl9tYXAgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXAgbCB+ZilcblxubGV0IHJldl9maWx0ZXJfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGkgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGkgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgKGkgKyAxKSB0bCAoeCA6OiBhY2N1bSlcbiAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIHRsIGFjY3VtKVxuICBpblxuICBsb29wIDAgbCBbXVxuOztcblxubGV0IGZpbHRlcl9tYXBpIGwgfmYgPSByZXYgKHJldl9maWx0ZXJfbWFwaSBsIH5mKVxubGV0IGZpbHRlcl9vcHQgbCA9IGZpbHRlcl9tYXAgbCB+ZjpGbi5pZFxuXG5sZXQgcGFydGl0aW9uM19tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IGZzdCBzbmQgdHJkID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmQsIHJldiB0cmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBgRnN0IHkgLT4gbG9vcCB0ICh5IDo6IGZzdCkgc25kIHRyZFxuICAgICAgIHwgYFNuZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSB0cmRcbiAgICAgICB8IGBUcmQgeSAtPiBsb29wIHQgZnN0IHNuZCAoeSA6OiB0cmQpKVxuICBpblxuICBsb29wIHQgW10gW10gW11cbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCBmIHggOiBfIEVpdGhlci50ID0gaWYgZiB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4IGluXG4gIHBhcnRpdGlvbl9tYXAgdCB+ZlxuOztcblxubGV0IHBhcnRpdGlvbl9yZXN1bHQgdCA9IHBhcnRpdGlvbl9tYXAgdCB+ZjpSZXN1bHQudG9fZWl0aGVyXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EgKiAnYikgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAyMl8gPSBcImxpc3QubWwuQXNzb2MudFwiIGluXG4gICAgZnVuIF9vZl9hX18wMTRfIF9vZl9iX18wMTVfIHhfXzAyM18gLT5cbiAgICAgIGxpc3Rfb2Zfc2V4cFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzAxN187IGFyZzFfXzAxOF8gXSAtPlxuICAgICAgICAgICAgbGV0IHJlczBfXzAxOV8gPSBfb2ZfYV9fMDE0XyBhcmcwX18wMTdfXG4gICAgICAgICAgICBhbmQgcmVzMV9fMDIwXyA9IF9vZl9iX18wMTVfIGFyZzFfXzAxOF8gaW5cbiAgICAgICAgICAgIHJlczBfXzAxOV8sIHJlczFfXzAyMF9cbiAgICAgICAgICB8IHNleHBfXzAyMV8gLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjJfXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgc2V4cF9fMDIxXylcbiAgICAgICAgeF9fMDIzX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfYV9fMDI0XyBfb2ZfYl9fMDI1XyB4X18wMzBfIC0+XG4gICAgICBzZXhwX29mX2xpc3RcbiAgICAgICAgKGZ1biAoYXJnMF9fMDI2XywgYXJnMV9fMDI3XykgLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAyOF8gPSBfb2ZfYV9fMDI0XyBhcmcwX18wMjZfXG4gICAgICAgICAgIGFuZCByZXMxX18wMjlfID0gX29mX2JfXzAyNV8gYXJnMV9fMDI3XyBpblxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wMjhfOyByZXMxX18wMjlfIF0pXG4gICAgICAgIHhfXzAzMF9cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gICAgICBsaXN0X3NleHBfZ3JhbW1hclxuICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgTGlzdCAoQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSkpXG4gICAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBwYWlyX29mX2dyb3VwID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgKGssIF8pIDo6IF8gYXMgbGlzdCAtPiBrLCBtYXAgbGlzdCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ3JvdXAgYWxpc3QgfmVxdWFsID1cbiAgICBncm91cCBhbGlzdCB+YnJlYWs6KGZ1biAoeCwgXykgKHksIF8pIC0+IG5vdCAoZXF1YWwgeCB5KSkgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgc29ydF9hbmRfZ3JvdXAgYWxpc3QgfmNvbXBhcmUgPVxuICAgIHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlOihmdW4gKHgsIF8pICh5LCBfKSAtPiBjb21wYXJlIHggeSlcbiAgICB8PiBtYXAgfmY6cGFpcl9vZl9ncm91cFxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5mOihmdW4gKGtleScsIF8pIC0+IGVxdWFsIGtleSBrZXknKSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIChzbmQgeClcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuQXNzb2MuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICAgIGxldCBmaW5kX2V4biB0IH5lcXVhbCBrZXkgPVxuICAgICAgbWF0Y2ggZmluZCB0IGtleSB+ZXF1YWwgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHZhbHVlIC0+IHZhbHVlXG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5lcXVhbCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBfIC0+IHRydWVcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgfmVxdWFsIGtleSA9IGZpbHRlciB0IH5mOihmdW4gKGtleScsIF8pIC0+IG5vdCAoZXF1YWwga2V5IGtleScpKVxuXG4gIGxldCBhZGQgdCB+ZXF1YWwga2V5IHZhbHVlID1cbiAgICAoKiB0aGUgcmVtb3ZlIGRvZXNuJ3QgY2hhbmdlIHRoZSBtYXAgc2VtYW50aWNzLCBidXQga2VlcHMgdGhlIGxpc3Qgc21hbGwgKilcbiAgICAoa2V5LCB2YWx1ZSkgOjogcmVtb3ZlIHQgfmVxdWFsIGtleVxuICA7O1xuXG4gIGxldCBpbnZlcnNlIHQgPSBtYXAgdCB+ZjooZnVuICh4LCB5KSAtPiB5LCB4KVxuICBsZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZjooZnVuIChrZXksIHZhbHVlKSAtPiBrZXksIGYgdmFsdWUpXG5lbmRcblxubGV0IHN1YiBsIH5wb3MgfmxlbiA9XG4gICgqIFdlIHVzZSBbcG9zID4gbGVuZ3RoIGwgLSBsZW5dIHJhdGhlciB0aGFuIFtwb3MgKyBsZW4gPiBsZW5ndGggbF0gdG8gYXZvaWQgdGhlXG4gICAgIHBvc3NpYmlsaXR5IG9mIG92ZXJmbG93LiAqKVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gbGVuZ3RoIGwgLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3Quc3ViXCI7XG4gIHJldlxuICAgIChmb2xkaSBsIH5pbml0OltdIH5mOihmdW4gaSBhY2MgZWwgLT5cbiAgICAgICBpZiBpID49IHBvcyAmJiBpIDwgcG9zICsgbGVuIHRoZW4gZWwgOjogYWNjIGVsc2UgYWNjKSlcbjs7XG5cbmxldCBzcGxpdF9uIHRfb3JpZyBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gW10sIHRfb3JpZ1xuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bSwgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZywgW10gKCogaW4gdGhpcyBjYXNlLCB0X29yaWcgPSByZXYgYWNjdW0gKilcbiAgICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGwgKGhkIDo6IGFjY3VtKSlcbiAgICBpblxuICAgIGxvb3AgbiB0X29yaWcgW10pXG47O1xuXG4oKiBjb3BpZWQgZnJvbSBbc3BsaXRfbl0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZSB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBuIHQgYWNjdW0gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gcmV2IGFjY3VtXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gdF9vcmlnXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxubGV0IHJlYyBkcm9wIHQgbiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IF8gOjogdGwgd2hlbiBuID4gMCAtPiBkcm9wIHRsIChuIC0gMSlcbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBjaHVua3Nfb2YgbCB+bGVuZ3RoID1cbiAgaWYgbGVuZ3RoIDw9IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJMaXN0LmNodW5rc19vZjogRXhwZWN0ZWQgbGVuZ3RoID4gMCwgZ290ICVkXCIgbGVuZ3RoICgpO1xuICBsZXQgcmVjIGF1eCBvZl9sZW5ndGggYWNjIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgc3VibGlzdCwgbCA9IHNwbGl0X24gbCBsZW5ndGggaW5cbiAgICAgIGF1eCBvZl9sZW5ndGggKHN1Ymxpc3QgOjogYWNjKSBsXG4gIGluXG4gIGF1eCBsZW5ndGggW10gbFxuOztcblxubGV0IHNwbGl0X3doaWxlIHhzIH5mID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gbG9vcCAoaGQgOjogYWNjKSB0bFxuICAgIHwgdCAtPiByZXYgYWNjLCB0XG4gIGluXG4gIGxvb3AgW10geHNcbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF93aGlsZV0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZV93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IF8gLT4gcmV2IGFjY1xuICBpblxuICBsb29wIFtdIHhzXG47O1xuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBkcm9wX3doaWxlIHRsIH5mXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgZHJvcF9sYXN0IHQgPVxuICBtYXRjaCByZXYgdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogbHN0IC0+IFNvbWUgKHJldiBsc3QpXG47O1xuXG5sZXQgZHJvcF9sYXN0X2V4biB0ID1cbiAgbWF0Y2ggZHJvcF9sYXN0IHQgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJMaXN0LmRyb3BfbGFzdF9leG46IGVtcHR5IGxpc3RcIlxuICB8IFNvbWUgbHN0IC0+IGxzdFxuOztcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IGxpc3QxIGxpc3QyID1cbiAgaWYgaXNfZW1wdHkgbGlzdDJcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbDEgbDIgYWNjdW0gPVxuICAgICAgbWF0Y2ggbDEgd2l0aFxuICAgICAgfCBbXSAtPiBhY2N1bVxuICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGwyIChyZXZfYXBwZW5kIChtYXAgfmY6KGZ1biB4IC0+IGhkLCB4KSBsMikgYWNjdW0pXG4gICAgaW5cbiAgICByZXYgKGxvb3AgbGlzdDEgbGlzdDIgW10pKVxuOztcblxubGV0IGNvbmNhdCBsID0gZm9sZF9yaWdodCBsIH5pbml0OltdIH5mOmFwcGVuZFxubGV0IGNvbmNhdF9ub19vcmRlciBsID0gZm9sZCBsIH5pbml0OltdIH5mOihmdW4gYWNjIGwgLT4gcmV2X2FwcGVuZCBsIGFjYylcbmxldCBjb25zIHggbCA9IHggOjogbFxuXG5sZXQgaXNfc29ydGVkIGwgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgICB8IHgxIDo6ICh4MiA6OiBfIGFzIHJlc3QpIC0+IGNvbXBhcmUgeDEgeDIgPD0gMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsXG47O1xuXG5sZXQgaXNfc29ydGVkX3N0cmljdGx5IGwgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgICB8IHgxIDo6ICh4MiA6OiBfIGFzIHJlc3QpIC0+IGNvbXBhcmUgeDEgeDIgPCAwICYmIGxvb3AgcmVzdFxuICBpblxuICBsb29wIGxcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gICgqIHNwZWNpYWwgY2FzZXMgdG8gc3BlZWQgdGhpbmdzIHVwIGluIHRyaXZpYWwgY2FzZXMgKilcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3RcbiAgfCBbIHg7IHkgXSAtPiBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGUgdGhlbiBbIHk7IHggXSBlbHNlIGxpc3RcbiAgfCBfIC0+XG4gICAgbGV0IGFyciA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIEFycmF5X3Blcm11dGUucGVybXV0ZSBhcnIgfnJhbmRvbV9zdGF0ZTtcbiAgICBBcnJheS50b19saXN0IGFyclxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgaWYgaXNfZW1wdHkgbGlzdFxuICB0aGVuIGZhaWx3aXRoIFwiTGlzdC5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGxpc3RcIlxuICBlbHNlIG50aF9leG4gbGlzdCAoUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCBsaXN0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIGxpc3QpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY29tcGFyZSBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgaWYgbiA9IDAgdGhlbiBjb21wYXJlIGNtcCB4cyB5cyBlbHNlIG5cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF9saXN0XG5cbmxldCBlcXVhbCBlcXVhbCB0MSB0MiA9XG4gIGxldCByZWMgbG9vcCB+ZXF1YWwgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgeDEgOjogdDEsIHgyIDo6IHQyIC0+IGVxdWFsIHgxIHgyICYmIGxvb3AgfmVxdWFsIHQxIHQyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgfmVxdWFsIHQxIHQyXG47O1xuXG5sZXQgdHJhbnNwb3NlID1cbiAgbGV0IHJlYyBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHQgY29sdW1uX2FjYyB0cmltbWVkIGZvdW5kX2VtcHR5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGNvbHVtbl9hY2MsIHRyaW1tZWQsIGZvdW5kX2VtcHR5XG4gICAgfCBbXSA6OiB0bCAtPiBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsIGNvbHVtbl9hY2MgdHJpbW1lZCB0cnVlXG4gICAgfCAoeCA6OiB4cykgOjogdGwgLT5cbiAgICAgIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdGwgKHggOjogY29sdW1uX2FjYykgKHhzIDo6IHRyaW1tZWQpIGZvdW5kX2VtcHR5XG4gIGluXG4gIGxldCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgPSBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgW10gW10gZmFsc2UgaW5cbiAgbGV0IHJlYyBsb29wIHJvd3MgY29sdW1ucyBkb19yZXYgPVxuICAgIG1hdGNoIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyB3aXRoXG4gICAgfCBbXSwgW10sIF8gLT4gU29tZSAocmV2IGNvbHVtbnMpXG4gICAgfCBjb2x1bW4sIHRyaW1tZWRfcm93cywgZm91bmRfZW1wdHkgLT5cbiAgICAgIGlmIGZvdW5kX2VtcHR5XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY29sdW1uID0gaWYgZG9fcmV2IHRoZW4gcmV2IGNvbHVtbiBlbHNlIGNvbHVtbiBpblxuICAgICAgICBsb29wIHRyaW1tZWRfcm93cyAoY29sdW1uIDo6IGNvbHVtbnMpIChub3QgZG9fcmV2KSlcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdIHRydWVcbjs7XG5cbmV4Y2VwdGlvbiBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIG9mIGludCBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzXVxuICAgIChmdW5jdGlvblxuICAgICAgfCBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIGFyZzBfXzAzMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9pbnQgYXJnMF9fMDMxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpc3QubWwuVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc1wiXG4gICAgICAgICAgOyByZXMwX18wMzJfXG4gICAgICAgICAgXVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0cmFuc3Bvc2VfZXhuIGwgPVxuICBtYXRjaCB0cmFuc3Bvc2UgbCB3aXRoXG4gIHwgU29tZSBsIC0+IGxcbiAgfCBOb25lIC0+IHJhaXNlIChUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIChtYXAgbCB+ZjpsZW5ndGgpKVxuOztcblxubGV0IGludGVyc3BlcnNlIHQgfnNlcCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPiB4IDo6IGZvbGRfcmlnaHQgeHMgfmluaXQ6W10gfmY6KGZ1biB5IGFjYyAtPiBzZXAgOjogeSA6OiBhY2MpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuXG5sZXQgaXNfc3VmZml4IGxpc3QgfnN1ZmZpeCB+ZXF1YWw6ZXF1YWxfZWx0ID1cbiAgbGV0IGxpc3RfbGVuID0gbGVuZ3RoIGxpc3QgaW5cbiAgbGV0IHN1ZmZpeF9sZW4gPSBsZW5ndGggc3VmZml4IGluXG4gIGxpc3RfbGVuID49IHN1ZmZpeF9sZW4gJiYgZXF1YWwgZXF1YWxfZWx0IChkcm9wIGxpc3QgKGxpc3RfbGVuIC0gc3VmZml4X2xlbikpIHN1ZmZpeFxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGFzIG1hbnkgcGxhY2VzIGFzIHBvc3NpYmxlLiBQbGVhc2UgYXZvaWRcbiAgIGFkZGluZyBuZXcgZGVwZW5kZW5jaWVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5mb19pbnRmXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG5tb2R1bGUgTWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBvZiBTZXhwLnRcbiAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IEV4biBvZiBleG5cbiAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbjAudCBvcHRpb25cbiAgICB8IFRhZ190IG9mIHN0cmluZyAqIHRcbiAgICB8IFRhZ19hcmcgb2Ygc3RyaW5nICogU2V4cC50ICogdFxuICAgIHwgT2ZfbGlzdCBvZiBpbnQgb3B0aW9uICogdCBsaXN0XG4gICAgfCBXaXRoX2JhY2t0cmFjZSBvZiB0ICogc3RyaW5nICgqIGJhY2t0cmFjZSAqKVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgcmVjIHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3QgYXJnMF9fMDAxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDAyXyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ291bGRfbm90X2NvbnN0cnVjdFwiOyByZXMwX18wMDJfIF1cbiAgICAgIHwgU3RyaW5nIGFyZzBfXzAwM18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNF8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlN0cmluZ1wiOyByZXMwX18wMDRfIF1cbiAgICAgIHwgRXhuIGFyZzBfXzAwNV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNl8gPSBzZXhwX29mX2V4biBhcmcwX18wMDVfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4blwiOyByZXMwX18wMDZfIF1cbiAgICAgIHwgU2V4cCBhcmcwX18wMDdfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDhfID0gU2V4cC5zZXhwX29mX3QgYXJnMF9fMDA3XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZXhwXCI7IHJlczBfXzAwOF8gXVxuICAgICAgfCBUYWdfc2V4cCAoYXJnMF9fMDA5XywgYXJnMV9fMDEwXywgYXJnMl9fMDExXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAxMl8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDlfXG4gICAgICAgIGFuZCByZXMxX18wMTNfID0gU2V4cC5zZXhwX29mX3QgYXJnMV9fMDEwX1xuICAgICAgICBhbmQgcmVzMl9fMDE0XyA9IHNleHBfb2Zfb3B0aW9uIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgYXJnMl9fMDExXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ19zZXhwXCI7IHJlczBfXzAxMl87IHJlczFfXzAxM187IHJlczJfXzAxNF8gXVxuICAgICAgfCBUYWdfdCAoYXJnMF9fMDE1XywgYXJnMV9fMDE2XykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAxN18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMTVfXG4gICAgICAgIGFuZCByZXMxX18wMThfID0gc2V4cF9vZl90IGFyZzFfXzAxNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX3RcIjsgcmVzMF9fMDE3XzsgcmVzMV9fMDE4XyBdXG4gICAgICB8IFRhZ19hcmcgKGFyZzBfXzAxOV8sIGFyZzFfXzAyMF8sIGFyZzJfXzAyMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMjJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE5X1xuICAgICAgICBhbmQgcmVzMV9fMDIzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAyMF9cbiAgICAgICAgYW5kIHJlczJfXzAyNF8gPSBzZXhwX29mX3QgYXJnMl9fMDIxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ19hcmdcIjsgcmVzMF9fMDIyXzsgcmVzMV9fMDIzXzsgcmVzMl9fMDI0XyBdXG4gICAgICB8IE9mX2xpc3QgKGFyZzBfXzAyNV8sIGFyZzFfXzAyNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMjdfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9pbnQgYXJnMF9fMDI1X1xuICAgICAgICBhbmQgcmVzMV9fMDI4XyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX3QgYXJnMV9fMDI2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPZl9saXN0XCI7IHJlczBfXzAyN187IHJlczFfXzAyOF8gXVxuICAgICAgfCBXaXRoX2JhY2t0cmFjZSAoYXJnMF9fMDI5XywgYXJnMV9fMDMwXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMV8gPSBzZXhwX29mX3QgYXJnMF9fMDI5X1xuICAgICAgICBhbmQgcmVzMV9fMDMyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzFfXzAzMF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiV2l0aF9iYWNrdHJhY2VcIjsgcmVzMF9fMDMxXzsgcmVzMV9fMDMyXyBdXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgcmVjIHRvX3N0cmluZ3NfaHVtIHQgYWMgPVxuICAgICgqIFdlIHVzZSBbU2V4cC50b19zdHJpbmdfbWFjaF0sIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB3ZSBhcmUgaW1wbGVtZW50aW5nXG4gICAgICAgW3RvX3N0cmluZ3NfaHVtXSwgYmVjYXVzZSB3ZSB3YW50IHRoZSBpbmZvIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lLCBhbmQgb25jZSB3ZSd2ZVxuICAgICAgIGhhZCB0byByZXNvcnQgdG8gc2V4cHMsIHRoZSBtZXNzYWdlIGlzIGdvaW5nIHRvIHN0YXJ0IG5vdCBsb29raW5nIHNvIHByZXR0eVxuICAgICAgIGFueXdheS4gKilcbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgc2V4cCAtPlxuICAgICAgXCJjb3VsZCBub3QgY29uc3RydWN0IGluZm86IFwiIDo6IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgU3RyaW5nIHN0cmluZyAtPiBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gU2V4cC50b19zdHJpbmdfbWFjaCAoRXhuLnNleHBfb2ZfdCBleG4pIDo6IGFjXG4gICAgfCBTZXhwIHNleHAgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBfKSAtPiB0YWcgOjogXCI6IFwiIDo6IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gdGFnIDo6IFwiOiBcIiA6OiB0b19zdHJpbmdzX2h1bSB0IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhYyBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwIHRoZW4gYm9keSBlbHNlIHRhZyA6OiBcIjogXCIgOjogYm9keVxuICAgIHwgV2l0aF9iYWNrdHJhY2UgKHQsIGJhY2t0cmFjZSkgLT5cbiAgICAgIHRvX3N0cmluZ3NfaHVtIHQgKFwiXFxuQmFja3RyYWNlOlxcblwiIDo6IGJhY2t0cmFjZSA6OiBhYylcbiAgICB8IE9mX2xpc3QgKHRydW5jX2FmdGVyLCB0cykgLT5cbiAgICAgIGxldCB0cyA9XG4gICAgICAgIG1hdGNoIHRydW5jX2FmdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRzXG4gICAgICAgIHwgU29tZSBtYXggLT5cbiAgICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIHRzIGluXG4gICAgICAgICAgaWYgbiA8PSBtYXhcbiAgICAgICAgICB0aGVuIHRzXG4gICAgICAgICAgZWxzZSBMaXN0LnRha2UgdHMgbWF4IEAgWyBTdHJpbmcgKFByaW50Zi5zcHJpbnRmIFwiYW5kICVkIG1vcmUgaW5mb1wiIChuIC0gbWF4KSkgXVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPlxuICAgICAgICB0b19zdHJpbmdzX2h1bSB0IChpZiBMaXN0LmlzX2VtcHR5IGFjIHRoZW4gYWMgZWxzZSBcIjsgXCIgOjogYWMpKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IFN0cmluZy5jb25jYXQgKHRvX3N0cmluZ3NfaHVtIHQgW10pXG5cbiAgbGV0IHJlYyB0b19zZXhwc19odW0gdCBhYyA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IF8gYXMgdCAtPiBzZXhwX29mX3QgdCA6OiBhY1xuICAgIHwgU3RyaW5nIHN0cmluZyAtPiBBdG9tIHN0cmluZyA6OiBhY1xuICAgIHwgRXhuIGV4biAtPiBFeG4uc2V4cF9vZl90IGV4biA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IHNleHAgOjogYWNcbiAgICB8IFRhZ19zZXhwICh0YWcsIHNleHAsIGhlcmUpIC0+XG4gICAgICBMaXN0XG4gICAgICAgIChBdG9tIHRhZ1xuICAgICAgICAgOjogc2V4cFxuICAgICAgICAgOjpcbiAgICAgICAgIChtYXRjaCBoZXJlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgaGVyZSAtPiBbIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgaGVyZSBdKSlcbiAgICAgIDo6IGFjXG4gICAgfCBUYWdfdCAodGFnLCB0KSAtPiBMaXN0IChBdG9tIHRhZyA6OiB0b19zZXhwc19odW0gdCBbXSkgOjogYWNcbiAgICB8IFRhZ19hcmcgKHRhZywgc2V4cCwgdCkgLT5cbiAgICAgIGxldCBib2R5ID0gc2V4cCA6OiB0b19zZXhwc19odW0gdCBbXSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwIHRoZW4gTGlzdCBib2R5IDo6IGFjIGVsc2UgTGlzdCAoQXRvbSB0YWcgOjogYm9keSkgOjogYWNcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICBTZXhwLkxpc3QgWyB0b19zZXhwX2h1bSB0OyBTZXhwLkF0b20gYmFja3RyYWNlIF0gOjogYWNcbiAgICB8IE9mX2xpc3QgKF8sIHRzKSAtPlxuICAgICAgTGlzdC5mb2xkIChMaXN0LnJldiB0cykgfmluaXQ6YWMgfmY6KGZ1biBhYyB0IC0+IHRvX3NleHBzX2h1bSB0IGFjKVxuXG4gIGFuZCB0b19zZXhwX2h1bSB0ID1cbiAgICBtYXRjaCB0b19zZXhwc19odW0gdCBbXSB3aXRoXG4gICAgfCBbIHNleHAgXSAtPiBzZXhwXG4gICAgfCBzZXhwcyAtPiBTZXhwLkxpc3Qgc2V4cHNcbiAgOztcblxuICAoKiBXZSB1c2UgW3Byb3RlY3RdIHRvIGd1YXJkIGFnYWluc3QgZXhjZXB0aW9ucyByYWlzZWQgYnkgdXNlci1zdXBwbGllZCBmdW5jdGlvbnMsIHNvXG4gICAgIHRoYXQgZmFpbHVyZSB0byBwcm9kdWNlIG9uZSBwYXJ0IG9mIGFuIGluZm8gZG9lc24ndCBpbnRlcmZlcmUgd2l0aCBvdGhlciBwYXJ0cy4gKilcbiAgbGV0IHByb3RlY3QgZiA9XG4gICAgdHJ5IGYgKCkgd2l0aFxuICAgIHwgZXhuIC0+IENvdWxkX25vdF9jb25zdHJ1Y3QgKEV4bi5zZXhwX29mX3QgZXhuKVxuICA7O1xuXG4gIGxldCBvZl9pbmZvIGluZm8gPSBwcm90ZWN0IChmdW4gKCkgLT4gTGF6eS5mb3JjZSBpbmZvKVxuICBsZXQgdG9faW5mbyB0ID0gbGF6eSB0XG5lbmRcblxub3BlbiBNZXNzYWdlXG5cbnR5cGUgdCA9IE1lc3NhZ2UudCBMYXp5LnRcblxubGV0IGludmFyaWFudCBfID0gKClcbmxldCB0b19tZXNzYWdlID0gTWVzc2FnZS5vZl9pbmZvXG5sZXQgb2ZfbWVzc2FnZSA9IE1lc3NhZ2UudG9faW5mb1xuXG4oKiBJdCBpcyBPSyB0byB1c2UgW01lc3NhZ2UudG9fc2V4cF9odW1dLCB3aGljaCBpcyBub3Qgc3RhYmxlLCBiZWNhdXNlIFt0X29mX3NleHBdIGJlbG93XG4gICBjYW4gaGFuZGxlIGFueSBzZXhwLiAqKVxubGV0IHNleHBfb2ZfdCB0ID0gTWVzc2FnZS50b19zZXhwX2h1bSAodG9fbWVzc2FnZSB0KVxubGV0IHRfb2Zfc2V4cCBzZXhwID0gbGF6eSAoTWVzc2FnZS5TZXhwIHNleHApXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBBbnkgXCJJbmZvLnRcIiB9XG5sZXQgY29tcGFyZSB0MSB0MiA9IFNleHAuY29tcGFyZSAoc2V4cF9vZl90IHQxKSAoc2V4cF9vZl90IHQyKVxubGV0IGVxdWFsIHQxIHQyID0gU2V4cC5lcXVhbCAoc2V4cF9vZl90IHQxKSAoc2V4cF9vZl90IHQyKVxubGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBTZXhwLmhhc2hfZm9sZF90IHN0YXRlIChzZXhwX29mX3QgdClcbmxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG5cbmxldCB0b19zdHJpbmdfaHVtIHQgPVxuICBtYXRjaCB0b19tZXNzYWdlIHQgd2l0aFxuICB8IFN0cmluZyBzIC0+IHNcbiAgfCBtZXNzYWdlIC0+IFNleHAudG9fc3RyaW5nX2h1bSAoTWVzc2FnZS50b19zZXhwX2h1bSBtZXNzYWdlKVxuOztcblxubGV0IHRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCB0ID0gTWVzc2FnZS50b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgKHRvX21lc3NhZ2UgdClcbmxldCB0b19zdHJpbmdfbWFjaCB0ID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl90IHQpXG5sZXQgb2ZfbGF6eSBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFN0cmluZyAoTGF6eS5mb3JjZSBsKSkpXG5sZXQgb2ZfbGF6eV9zZXhwIGwgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU2V4cCAoTGF6eS5mb3JjZSBsKSkpXG5sZXQgb2ZfbGF6eV90IGxhenlfdCA9IExhenkuam9pbiBsYXp5X3RcbmxldCBvZl9zdHJpbmcgbWVzc2FnZSA9IExhenkuZnJvbV92YWwgKFN0cmluZyBtZXNzYWdlKVxubGV0IGNyZWF0ZWYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIG9mX3N0cmluZyBmb3JtYXRcbmxldCBvZl90aHVuayBmID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFN0cmluZyAoZiAoKSkpKVxuXG5sZXQgY3JlYXRlID9oZXJlID9zdHJpY3QgdGFnIHggc2V4cF9vZl94ID1cbiAgbWF0Y2ggc3RyaWN0IHdpdGhcbiAgfCBOb25lIC0+IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfc2V4cCAodGFnLCBzZXhwX29mX3ggeCwgaGVyZSkpKVxuICB8IFNvbWUgKCkgLT4gb2ZfbWVzc2FnZSAoVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBMYXp5LmZyb21fdmFsIChTZXhwIHNleHApXG5sZXQgdGFnIHQgfnRhZyA9IGxhenkgKFRhZ190ICh0YWcsIHRvX21lc3NhZ2UgdCkpXG5cbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9XG4gIGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfYXJnIChcIlwiLCBMYXp5LmZvcmNlIHRhZywgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgdGFnX3MgdCB+dGFnID0gdGFnX3NfbGF6eSB0IH50YWc6KExhenkuZnJvbV92YWwgdGFnKVxuXG5sZXQgdGFnX2FyZyB0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfYXJnICh0YWcsIHNleHBfb2ZfeCB4LCB0b19tZXNzYWdlIHQpKSlcbjs7XG5cbmxldCBvZl9saXN0ID90cnVuY19hZnRlciB0cyA9IGxhenkgKE9mX2xpc3QgKHRydW5jX2FmdGVyLCBMaXN0Lm1hcCB0cyB+Zjp0b19tZXNzYWdlKSlcblxuZXhjZXB0aW9uIEV4biBvZiB0XG5cbmxldCAoKSA9XG4gICgqIFdlIGluc3RhbGwgYSBjdXN0b20gZXhuLWNvbnZlcnRlciByYXRoZXIgdGhhbiB1c2VcbiAgICAgW2V4Y2VwdGlvbiBFeG4gb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF0gLi4uIFtAQEBlbmRdXSB0byBlbGltaW5hdGUgdGhlIGV4dHJhXG4gICAgIHdyYXBwaW5nIG9mIFwiKEV4biAuLi4pXCIuICopXG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeG5dIChmdW5jdGlvblxuICAgIHwgRXhuIHQgLT4gc2V4cF9vZl90IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IHRvX2V4biB0ID1cbiAgaWYgbm90IChMYXp5LmlzX3ZhbCB0KVxuICB0aGVuIEV4biB0XG4gIGVsc2UgKFxuICAgIG1hdGNoIExhenkuZm9yY2UgdCB3aXRoXG4gICAgfCBNZXNzYWdlLkV4biBleG4gLT4gZXhuXG4gICAgfCBfIC0+IEV4biB0KVxuOztcblxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9XG4gIGxldCBiYWNrdHJhY2UgPVxuICAgIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYEdldCAtPiBTb21lIChDYW1sLlByaW50ZXhjLmdldF9iYWNrdHJhY2UgKCkpXG4gICAgfCBTb21lIChgVGhpcyBzKSAtPiBTb21lIHNcbiAgaW5cbiAgbWF0Y2ggZXhuLCBiYWNrdHJhY2Ugd2l0aFxuICB8IEV4biB0LCBOb25lIC0+IHRcbiAgfCBFeG4gdCwgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKHRvX21lc3NhZ2UgdCwgYmFja3RyYWNlKSlcbiAgfCBfLCBOb25lIC0+IExhenkuZnJvbV92YWwgKE1lc3NhZ2UuRXhuIGV4bilcbiAgfCBfLCBTb21lIGJhY2t0cmFjZSAtPiBsYXp5IChXaXRoX2JhY2t0cmFjZSAoU2V4cCAoRXhuLnNleHBfb2ZfdCBleG4pLCBiYWNrdHJhY2UpKVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbmZvXCJcbiAgICBsZXQgcHAgcHBmIHQgPSBDYW1sLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmdfaHVtIHQpXG4gIGVuZClcblxubW9kdWxlIEludGVybmFsX3JlcHIgPSBNZXNzYWdlXG5cbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0Vycm9yXSBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIHZhcmlvdXMgcGxhY2VzLiAgUGxlYXNlIGF2b2lkIGFkZGluZyBuZXdcbiAgIGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9cblxubGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIkVycm9yLnRcIiB9XG5sZXQgcmFpc2UgdCA9IHJhaXNlICh0b19leG4gdClcbmxldCByYWlzZV9zIHNleHAgPSByYWlzZSAoY3JlYXRlX3Mgc2V4cClcbmxldCB0b19pbmZvIHQgPSB0XG5sZXQgb2ZfaW5mbyB0ID0gdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkVycm9yXCJcbiAgICBsZXQgcHAgPSBwcFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW52YXJpYW50X2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbmxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmIDogdW5pdCA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIlxuICAgICAgICAgWyBcIlwiLCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmVcbiAgICAgICAgIDsgXCJleG5cIiwgc2V4cF9vZl9leG4gZXhuXG4gICAgICAgICA7IFwiXCIsIHNleHBfb2ZfdCB0XG4gICAgICAgICBdKVxuOztcblxubGV0IGNoZWNrX2ZpZWxkIHQgZiBmaWVsZCA9XG4gIHRyeSBmIChGaWVsZC5nZXQgZmllbGQgdCkgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwicHJvYmxlbSB3aXRoIGZpZWxkXCJcbiAgICAgICAgIFsgXCJmaWVsZFwiLCBzZXhwX29mX3N0cmluZyAoRmllbGQubmFtZSBmaWVsZCk7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbiAgUmVzdWx0IDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFJlc3VsdFxuICBlbmRcbiAgd2l0aCBtb2R1bGUgRXJyb3IgOj0gUmVzdWx0LkVycm9yKVxuXG50eXBlICdhIHQgPSAoJ2EsIEVycm9yLnQpIFJlc3VsdC50XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPiBSZXN1bHQuY29tcGFyZSBfY21wX19hIEVycm9yLmNvbXBhcmUgYV9fMDAxXyBiX18wMDJfXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+IFJlc3VsdC5lcXVhbCBfY21wX19hIEVycm9yLmVxdWFsIGFfXzAwN18gYl9fMDA4X1xuOztcblxubGV0IGhhc2hfZm9sZF90IDpcbiAgJ2EuXG4gIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgLT4gJ2EgdFxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIGhzdiBhcmcgLT4gUmVzdWx0Lmhhc2hfZm9sZF90IF9oYXNoX2ZvbGRfYSBFcnJvci5oYXNoX2ZvbGRfdCBoc3YgYXJnXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMTNfIHhfXzAxNV8gLT4gUmVzdWx0LnRfb2Zfc2V4cCBfb2ZfYV9fMDEzXyBFcnJvci50X29mX3NleHAgeF9fMDE1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE2XyB4X18wMTdfIC0+IFJlc3VsdC5zZXhwX29mX3QgX29mX2FfXzAxNl8gRXJyb3Iuc2V4cF9vZl90IHhfXzAxN19cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IFJlc3VsdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyIEVycm9yLnRfc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBhIC0+IGludmFyaWFudF9hIGFcbiAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5pbnZhcmlhbnQgZXJyb3Jcbjs7XG5cbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgUmVzdWx0LmNvbWJpbmUgZiB4IH5vazooZnVuIGYgeCAtPiBmIHgpIH5lcnI6KGZ1biBlMSBlMiAtPiBFcnJvci5vZl9saXN0IFsgZTE7IGUyIF0pXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgb2sgPSBSZXN1bHQub2tcbmxldCBpc19vayA9IFJlc3VsdC5pc19va1xubGV0IGlzX2Vycm9yID0gUmVzdWx0LmlzX2Vycm9yXG5cbmxldCB0cnlfd2l0aCA/KGJhY2t0cmFjZSA9IGZhbHNlKSBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuID9iYWNrdHJhY2U6KGlmIGJhY2t0cmFjZSB0aGVuIFNvbWUgYEdldCBlbHNlIE5vbmUpKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2JhY2t0cmFjZSBmID0gam9pbiAodHJ5X3dpdGggP2JhY2t0cmFjZSBmKVxuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBlcnIgLT4gRXJyb3IucmFpc2UgZXJyXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID0gRXJyb3IgKEVycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcblxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSA9IGZ1bmN0aW9uXG4gIHwgT2sgXyBhcyB6IC0+IHpcbiAgfCBFcnJvciBleG4gLT4gb2ZfZXhuID9iYWNrdHJhY2UgZXhuXG47O1xuXG5sZXQgZXJyb3IgP2hlcmUgP3N0cmljdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRXJyb3IgKEVycm9yLmNyZWF0ZSA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZXJyb3JfcyBzZXhwID0gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1lc3NhZ2UgPSBFcnJvciAoRXJyb3Iub2Zfc3RyaW5nIG1lc3NhZ2UpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooZnVuIGUgLT4gRXJyb3IudGFnX2FyZyBlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBzID0gZXJyb3IgXCJ1bmltcGxlbWVudGVkXCIgcyBzZXhwX29mX3N0cmluZ1xubGV0IGNvbWJpbmVfZXJyb3JzIGwgPSBSZXN1bHQubWFwX2Vycm9yIChSZXN1bHQuY29tYmluZV9lcnJvcnMgbCkgfmY6RXJyb3Iub2ZfbGlzdFxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IFJlc3VsdC5tYXAgKGNvbWJpbmVfZXJyb3JzIGwpIH5mOihmdW4gKF8gOiB1bml0IGxpc3QpIC0+ICgpKVxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdC5wYXJ0aXRpb25fbWFwIGwgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICBtYXRjaCBvayB3aXRoXG4gIHwgW10gLT4gRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJycylcbiAgfCBfIC0+IE9rIG9rXG47O1xuXG5sZXQgZmluZF9vayBsID1cbiAgbWF0Y2ggTGlzdC5maW5kX21hcCBsIH5mOlJlc3VsdC5vayB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgT2sgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBFcnJvclxuICAgICAgKEVycm9yLm9mX2xpc3RcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgICAgICB8IE9rIF8gYXMgeCAtPiByZXR1cm4geFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyKSkpKVxuOztcblxubGV0IG1hcCA9IFJlc3VsdC5tYXBcbmxldCBpdGVyID0gUmVzdWx0Lml0ZXJcbmxldCBpdGVyX2Vycm9yID0gUmVzdWx0Lml0ZXJfZXJyb3JcbiIsIigqIFRoaXMgaXMgYnJva2VuIG9mZiB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gU2lnbiBhbmQgQ29tcGFyYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTmVnXG4gIHwgWmVyb1xuICB8IFBvc1xuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlXVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ24wLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDJfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IHNleHBfXzAwMl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgfCBQb3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUG9zXCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlBvc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IFplcm8gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIE5lZzsgWmVybzsgUG9zIF0gOiB0IGxpc3QpXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiB0KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiB0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiB0KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiB0KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG5sZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IE5lZyAtPiAtMVxuICB8IFplcm8gLT4gMFxuICB8IFBvcyAtPiAxXG47O1xuXG5sZXQgXyA9IGhhc2hcblxuKCogSWdub3JlIHRoZSBoYXNoIGZ1bmN0aW9uIHByb2R1Y2VkIGJ5IFtAQGRlcml2aW5nX2lubGluZSBoYXNoXSAqKVxubGV0IGhhc2ggPSB0b19pbnRcbmxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduXCJcbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTmVnIGVsc2UgaWYgbiA9IDAgdGhlbiBaZXJvIGVsc2UgUG9zXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29tcGFyYWJsZV9pbnRmXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIFRcblxuICBsZXQgaXNfcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID4gMFxuICBsZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA+PSAwXG4gIGxldCBpc19uZWdhdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPCAwXG4gIGxldCBpc19ub25fcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvIDw9IDBcbiAgbGV0IHNpZ24gdCA9IFNpZ24wLm9mX2ludCAoY29tcGFyZSB0IHplcm8pXG5lbmRcblxubW9kdWxlIFBvbHkgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBQb2x5XG4gIGVuZFxuXG4gIGluY2x1ZGUgUG9seVxuXG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuXG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSlcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG5lbmRcblxubGV0IGd0IGNtcCBhIGIgPSBjbXAgYSBiID4gMFxubGV0IGx0IGNtcCBhIGIgPSBjbXAgYSBiIDwgMFxubGV0IGdlcSBjbXAgYSBiID0gY21wIGEgYiA+PSAwXG5sZXQgbGVxIGNtcCBhIGIgPSBjbXAgYSBiIDw9IDBcbmxldCBlcXVhbCBjbXAgYSBiID0gY21wIGEgYiA9IDBcbmxldCBub3RfZXF1YWwgY21wIGEgYiA9IGNtcCBhIGIgPD4gMFxubGV0IG1pbiBjbXAgdCB0JyA9IGlmIGxlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xubGV0IG1heCBjbXAgdCB0JyA9IGlmIGdlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xuXG5tb2R1bGUgSW5maXggKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IEluZml4IHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBsZXQgKCA+ICkgYSBiID0gZ3QgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8ICkgYSBiID0gbHQgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA+PSApIGEgYiA9IGdlcSBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDw9ICkgYSBiID0gbGVxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPSApIGEgYiA9IGVxdWFsIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD4gKSBhIGIgPSBub3RfZXF1YWwgVC5jb21wYXJlIGEgYlxuZW5kXG5cbm1vZHVsZSBQb2x5bW9ycGhpY19jb21wYXJlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgOiBQb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4IChUKVxuXG4gIGxldCBjb21wYXJlID0gVC5jb21wYXJlXG4gIGxldCBlcXVhbCA9ICggPSApXG4gIGxldCBtaW4gdCB0JyA9IG1pbiBjb21wYXJlIHQgdCdcbiAgbGV0IG1heCB0IHQnID0gbWF4IGNvbXBhcmUgdCB0J1xuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJhdG9yLmNvbXBhcmVcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBQb2x5bW9ycGhpY19jb21wYXJlIChUKVxuICBpbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhc2NlbmRpbmcgPSBjb21wYXJlXG4gIGxldCBkZXNjZW5kaW5nIHQgdCcgPSBjb21wYXJlIHQnIHRcbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbiAgTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgSW5oZXJpdCAoQyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIChUIDogc2lnXG4gICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICAgICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgICAgICBbQEBAZW5kXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgdCB0JyA9IEMuY29tcGFyZSAoVC5jb21wb25lbnQgdCkgKFQuY29tcG9uZW50IHQnKVxuICBlbmQpXG5cbigqIGNvbXBhcmUgW3hdIGFuZCBbeV0gbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgZnVuY3Rpb25zIGluIHRoZSBsaXN0IFtjbXBzXSAqKVxubGV0IGxleGljb2dyYXBoaWMgY21wcyB4IHkgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgY21wIDo6IGNtcHMgLT5cbiAgICAgIGxldCByZXMgPSBjbXAgeCB5IGluXG4gICAgICBpZiByZXMgPSAwIHRoZW4gbG9vcCBjbXBzIGVsc2UgcmVzXG4gICAgfCBbXSAtPiAwXG4gIGluXG4gIGxvb3AgY21wc1xuOztcblxubGV0IGxpZnQgY21wIH5mIHggeSA9IGNtcCAoZiB4KSAoZiB5KVxubGV0IHJldmVyc2UgY21wIHggeSA9IGNtcCB5IHhcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2hhYmxlLktleSAqKVxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIFZhbHVlcyByZXR1cm5lZCBieSBbaGFzaF0gbXVzdCBiZSBub24tbmVnYXRpdmUuICBBbiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaW4gdGhlXG4gICAgICBjYXNlIHRoYXQgW2hhc2hdIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZS4gKilcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gICgqKiBUaGlzIGZ1bmN0aW9uIGlzIHNvdW5kIGJ1dCBub3QgY29tcGxldGUsIG1lYW5pbmcgdGhhdCBpZiBpdCByZXR1cm5zIFt0cnVlXSB0aGVuIGl0J3NcbiAgICAgIHNhZmUgdG8gdXNlIHRoZSB0d28gaW50ZXJjaGFuZ2VhYmx5LiAgSWYgaXQncyBbZmFsc2VdLCB5b3UgaGF2ZSBubyBndWFyYW50ZWVzLiAgRm9yXG4gICAgICBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICA+IHV0b3BcbiAgICAgICAgb3BlbiBDb3JlOztcbiAgICAgICAgbGV0IGVxdWFsIChhIDogJ2EgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnQpIGIgPVxuICAgICAgICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgICAgICAgfHwgKHBoeXNfZXF1YWwgYS5oYXNoIGIuaGFzaFxuICAgICAgICAgICAgICAmJiBwaHlzX2VxdWFsIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdClcbiAgICAgICAgOztcbiAgICAgICAgbGV0IGEgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBsZXQgYiA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS57IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCA9IEludC5zZXhwX29mX3QgfTs7XG4gICAgICAgIGVxdWFsIGEgYjs7ICAoKiBmYWxzZT8hICopXG4gICAgICBdfVxuICAqKVxuICBsZXQgZXF1YWwgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGhhc2hfcGFyYW0gPSBDYW1sLkhhc2h0YmwuaGFzaF9wYXJhbVxuICBsZXQgaGFzaCA9IENhbWwuSGFzaHRibC5oYXNoXG4gIGxldCBwb2x5ID0geyBoYXNoOyBjb21wYXJlID0gUG9seS5jb21wYXJlOyBzZXhwX29mX3QgPSAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB9XG5cbiAgbGV0IG9mX2tleSAodHlwZSBhKSAobW9kdWxlIEtleSA6IEtleSB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICB7IGhhc2ggPSBLZXkuaGFzaDsgY29tcGFyZSA9IEtleS5jb21wYXJlOyBzZXhwX29mX3QgPSBLZXkuc2V4cF9vZl90IH1cbiAgOztcblxuICBsZXQgdG9fa2V5ICh0eXBlIGEpIHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBoYXNoID0gaGFzaFxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kIDogS2V5XG4gICAgICB3aXRoIHR5cGUgdCA9IGEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBIYXNoYWJsZVxuXG5tb2R1bGUgdHlwZSBIYXNoYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBIYXNoYWJsZS50ID1cbiAgICB7IGhhc2ggOiAnYSAtPiBpbnRcbiAgICA7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgcG9seSA6ICdhIHRcbiAgdmFsIG9mX2tleSA6IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpIC0+ICdhIHRcbiAgdmFsIHRvX2tleSA6ICdhIHQgLT4gKG1vZHVsZSBLZXkgd2l0aCB0eXBlIHQgPSAnYSlcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuICB2YWwgaGFzaCA6ICdhIC0+IGludFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlX2ludGZcblxubW9kdWxlIE1ha2UgKFQgOiBBcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IEFyZ193aXRoX2NvbXBhcmF0b3IpID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBhbGwgPSAoWyAoKSBdIDogdCBsaXN0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfdW5pdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfdW5pdCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAodW5pdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl91bml0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHVuaXRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgY29tcGFyZSBfIF8gPSAwXG5cbiAgbGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcIigpXCIgLT4gKClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJCYXNlLlVuaXQub2Zfc3RyaW5nOiAoKSBleHBlY3RlZFwiXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuVW5pdFwiXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG5sZXQgaW52YXJpYW50ICgpID0gKClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMFxuXG5sZXQgZ2V0X3Bvc19sZW4gP3BvcyA/bGVuICgpIH50b3RhbF9sZW5ndGggPVxuICB0cnkgUmVzdWx0Lk9rIChnZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGgpIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhlc2UgZnVuY3Rpb25zIGltcGxlbWVudCBhIHNlYXJjaCBmb3IgdGhlIGZpcnN0IChyZXNwLiBsYXN0KSBlbGVtZW50XG4gICBzYXRpc2Z5aW5nIGEgcHJlZGljYXRlLCBhc3N1bWluZyB0aGF0IHRoZSBwcmVkaWNhdGUgaXMgaW5jcmVhc2luZyBvblxuICAgdGhlIGNvbnRhaW5lciwgbWVhbmluZyB0aGF0LCBpZiB0aGUgY29udGFpbmVyIGlzIFt1MS4uLnVuXSwgdGhlcmUgZXhpc3RzIGFcbiAgIGsgc3VjaCB0aGF0IHAodTEpPS4uLi49cCh1aykgPSBmYWxzZSBhbmQgcCh1aysxKT0uLi4uPXAodW4pPSB0cnVlLlxuICAgSWYgdGhpcyBrID0gMSAocmVzcCBuKSwgZmluZF9sYXN0X25vdF9zYXRpc2Z5aW5nIChyZXNwIGZpbmRfZmlyc3Rfc2F0aXNmeWluZylcbiAgIHdpbGwgcmV0dXJuIE5vbmUuICopXG5cbmxldCByZWMgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkID1cbiAgaWYgbG8gPiBoaVxuICB0aGVuIE5vbmVcbiAgZWxzZSBpZiBwcmVkIChnZXQgdCBsbylcbiAgdGhlbiBTb21lIGxvXG4gIGVsc2UgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG86KGxvICsgMSkgfmhpIH5wcmVkXG47O1xuXG4oKiBUYWtlcyBhIGNvbnRhaW5lciBbdF0sIGEgcHJlZGljYXRlIFtwcmVkXSBhbmQgdHdvIGluZGljZXMgW2xvIDwgaGldLCBzdWNoIHRoYXRcbiAgIFtwcmVkXSBpcyBpbmNyZWFzaW5nIG9uIFt0XSBiZXR3ZWVuIFtsb10gYW5kIFtoaV0uXG5cbiAgIHJldHVybiBhIHJhbmdlIChsbywgaGkpIHdoZXJlOlxuICAgLSBsbyBhbmQgaGkgYXJlIGNsb3NlIGVub3VnaCB0b2dldGhlciBmb3IgYSBsaW5lYXIgc2VhcmNoXG4gICAtIElmIFtwcmVkXSBpcyBub3QgY29uc3RhbnRseSBbZmFsc2VdIG9uIFt0XSBiZXR3ZWVuIFtsb10gYW5kIFtoaV0sIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgIG9uIHdoaWNoIFtwcmVkXSBpcyBbdHJ1ZV0gaXMgYmV0d2VlbiBbbG9dIGFuZCBbaGldLiAqKVxuKCogSW52YXJpYW50OiB0aGUgZmlyc3QgZWxlbWVudCBzYXRpc2Z5aW5nIFtwcmVkXSwgaWYgaXQgZXhpc3RzIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXSAqKVxubGV0IHJlYyBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gICgqIFdhcm5pbmc6IHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgdGVybWluYXRlIGlmIHRoZSBjb25zdGFudCAoY3VycmVudGx5IDgpIGlzXG4gICAgIHNldCA8PSAxICopXG4gIGlmIGhpIC0gbG8gPD0gOFxuICB0aGVuIGxvLCBoaVxuICBlbHNlIChcbiAgICBsZXQgbWlkID0gbG8gKyAoKGhpIC0gbG8pIC8gMikgaW5cbiAgICBpZiBwcmVkIChnZXQgdCBtaWQpXG4gICAgKCogSU5WQVJJQU5UIGNoZWNrOiBpdCBtZWFucyB0aGUgZmlyc3Qgc2F0aXNmeWluZyBlbGVtZW50IGlzIGJldHdlZW4gW2xvXSBhbmQgW21pZF0gKilcbiAgICB0aGVuXG4gICAgICBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaTptaWQgfnByZWRcbiAgICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCwgaWYgaXQgZXhpc3RzLFxuICAgICAgICAgaXMgYmV0d2VlbiBbbWlkKzFdIGFuZCBbaGldICopXG4gICAgZWxzZSBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihtaWQgKyAxKSB+aGkgfnByZWQpXG47O1xuXG5sZXQgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZCA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbG8gPSBwb3MgaW5cbiAgbGV0IGhpID0gcG9zICsgbGVuIC0gMSBpblxuICBsZXQgbG8sIGhpID0gZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgaW5cbiAgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkXG47O1xuXG4oKiBUYWtlcyBhbiBhcnJheSB3aXRoIHNoYXBlIFt0cnVlLC4uLnRydWUsZmFsc2UsLi4uZmFsc2VdIChpLmUuLCB0aGUgX3JldmVyc2VfIG9mIHdoYXRcbiAgIGlzIGRlc2NyaWJlZCBhYm92ZSkgYW5kIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRydWUgb3IgTm9uZSBpZiB0aGVyZSBhcmUgbm9cbiAgIHRydWUqKVxubGV0IGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5wcmVkIH5nZXQgfmxlbmd0aCA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICAoKiBUaGUgbGFzdCBzYXRpc2Z5aW5nIGlzIHRoZSBvbmUganVzdCBiZWZvcmUgdGhlIGZpcnN0IG5vdCBzYXRpc2Z5aW5nICopXG4gICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIH5wb3MgfmxlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooRm4ubm9uIHByZWQpIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSAocG9zICsgbGVuIC0gMSlcbiAgICAoKiBUaGlzIG1lYW5zIHRoYXQgYWxsIGVsZW1lbnRzIHNhdGlzZnkgcHJlZC5cbiAgICAgICBUaGVyZSBpcyBhdCBsZWFzdCBhbiBlbGVtZW50IGFzIChsZW4gPiAwKSAqKVxuICAgIHwgU29tZSBpIHdoZW4gaSA9IHBvcyAtPiBOb25lICgqIG5vIGVsZW1lbnQgc2F0aXNmaWVzIHByZWQgKilcbiAgICB8IFNvbWUgaSAtPiBTb21lIChpIC0gMSkpXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfmNvbXBhcmUgaG93IHYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKVxuICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAobWF0Y2hcbiAgICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKVxuICAgICB3aXRoXG4gICAgIHwgU29tZSB4IHdoZW4gY29tcGFyZSAoZ2V0IHQgeCkgdiA9IDAgLT4gU29tZSB4XG4gICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKVxuICAgICB3aXRoXG4gICAgIHwgU29tZSB4IHdoZW4gY29tcGFyZSAoZ2V0IHQgeCkgdiA9IDAgLT4gU29tZSB4XG4gICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKVxuICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBpc19sZWZ0IHggPVxuICAgIG1hdGNoIHNlZ21lbnRfb2YgeCB3aXRoXG4gICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgaW5cbiAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+cHJlZDppc19sZWZ0XG4gIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfcmlnaHRcbjs7XG4iLCIoKiogTW9kdWxlIHR5cGVzIGZvciBhIFtiaW5hcnlfc2VhcmNoXSBmdW5jdGlvbiBmb3IgYSBzZXF1ZW5jZSwgYW5kIGZ1bmN0b3JzIGZvciBidWlsZGluZ1xuICAgIFtiaW5hcnlfc2VhcmNoXSBmdW5jdGlvbnMuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogQW4gW0luZGV4YWJsZV0gdHlwZSBpcyBhIGZpbml0ZSBzZXF1ZW5jZSBvZiBlbGVtZW50cyBpbmRleGVkIGJ5IGNvbnNlY3V0aXZlIGludGVnZXJzXG4gICAgWzBdIC4uLiBbbGVuZ3RoIHQgLSAxXS4gIFtnZXRdIGFuZCBbbGVuZ3RoXSBtdXN0IGJlIE8oMSkgZm9yIHRoZSByZXN1bHRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gdG8gYmUgbGcobikuICopXG5tb2R1bGUgdHlwZSBJbmRleGFibGUgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGVsdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmRleGFibGUxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBXaGljaF90YXJnZXRfYnlfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlXVxuXG4gIGxldCBhbGwgPVxuICAgIChbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhblxuICAgICA7IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90b1xuICAgICA7IGBMYXN0X2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgXVxuICAgICA6IHQgbGlzdClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaGljaF90YXJnZXRfYnlfc2VnbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfb25fbGVmdFxuICAgIHwgYEZpcnN0X29uX3JpZ2h0XG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlXVxuXG4gIGxldCBhbGwgPSAoWyBgTGFzdF9vbl9sZWZ0OyBgRmlyc3Rfb25fcmlnaHQgXSA6IHQgbGlzdClcblxuICBbQEBAZW5kXVxuZW5kXG5cbnR5cGUgKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoID1cbiAgP3BvczppbnRcbiAgLT4gP2xlbjppbnRcbiAgLT4gJ3RcbiAgLT4gY29tcGFyZTooJ2VsdCAtPiAna2V5IC0+IGludClcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gIC0+ICdrZXlcbiAgLT4gaW50IG9wdGlvblxuXG50eXBlICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBzZWdtZW50X29mOignZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAtPiBpbnQgb3B0aW9uXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgKCoqIFNlZSBbQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKHQsIGVsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGluIGJpbmFyeV9zZWFyY2gubWwgKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKHQsIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgQmluYXJ5X3NlYXJjaGFibGUgPSBzaWdcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBJbmRleGFibGUgPSBJbmRleGFibGVcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IEluZGV4YWJsZTFcblxuICBtb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IFdoaWNoX3RhcmdldF9ieV9rZXlcbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnRcblxuICB0eXBlIG5vbnJlYyAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9ICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICBtb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCB3aXRoIHR5cGUgZWx0IDo9IFQuZWx0XG4gIG1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlICdhIGVsdFxuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgZWx0XG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogQXJnKSA9IHN0cnVjdFxuICBsZXQgZ2V0ID0gVC5nZXRcbiAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIEJpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfmNvbXBhcmUgaG93IHZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+c2VnbWVudF9vZiBob3dcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICB0eXBlICdhIGVsdCA9IFQuZWx0XG4gICAgdHlwZSAnYSB0ID0gVC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UxIChUIDogSW5kZXhhYmxlMSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCbGl0X2ludGZcblxubW9kdWxlIHR5cGUgU2VxdWVuY2VfZ2VuID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuXG4gICAgKFNyYyA6IFNlcXVlbmNlX2dlbikgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VfZ2VuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlX2xpa2UgOiBsZW46aW50IC0+ICdhIFNyYy50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgU3JjLnQsICdhIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHVuc2FmZV9ibGl0ID0gRHN0LnVuc2FmZV9ibGl0XG5cbiAgbGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6c3JjX3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6ZHN0X3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooRHN0Lmxlbmd0aCBkc3QpO1xuICAgIGlmIGxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlblxuICA7O1xuXG4gIGxldCBibGl0b1xuICAgICAgICB+c3JjXG4gICAgICAgID8oc3JjX3BvcyA9IDApXG4gICAgICAgID8oc3JjX2xlbiA9IFNyYy5sZW5ndGggc3JjIC0gc3JjX3BvcylcbiAgICAgICAgfmRzdFxuICAgICAgICA/KGRzdF9wb3MgPSAwKVxuICAgICAgICAoKVxuICAgID1cbiAgICBibGl0IH5zcmMgfnNyY19wb3MgfmxlbjpzcmNfbGVuIH5kc3QgfmRzdF9wb3NcbiAgOztcblxuICAoKiBbc3ViXSBhbmQgW3N1Ym9dIGVuc3VyZSB0aGF0IGV2ZXJ5IHBvc2l0aW9uIG9mIHRoZSBjcmVhdGVkIHNlcXVlbmNlIGlzIHBvcHVsYXRlZCBieVxuICAgICBhbiBlbGVtZW50IG9mIHRoZSBzb3VyY2UgYXJyYXkuICBUaHVzIGV2ZXJ5IGVsZW1lbnQgb2YgW2RzdF0gYmVsb3cgaXMgd2VsbFxuICAgICBkZWZpbmVkLiAqKVxuICBsZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KFNyYy5sZW5ndGggc3JjKTtcbiAgICBsZXQgZHN0ID0gRHN0LmNyZWF0ZV9saWtlIH5sZW4gc3JjIGluXG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCBzdWJvID8ocG9zID0gMCkgP2xlbiBzcmMgPVxuICAgIHN1YlxuICAgICAgc3JjXG4gICAgICB+cG9zXG4gICAgICB+bGVuOlxuICAgICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgIHwgTm9uZSAtPiBTcmMubGVuZ3RoIHNyYyAtIHBvcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIGJsaXRcbiAgZW5kKSA9XG4gIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UgOiBTZXF1ZW5jZTEpID0gTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlIChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBTZXF1ZW5jZS50XG5cbiAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9kaXN0aW5jdFxuICAgIChTcmMgOiBTZXF1ZW5jZSkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5cbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBTcmMudFxuXG4gICAgICBvcGVuIFNyY1xuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IERzdC50XG5cbiAgICAgIG9wZW4gRHN0XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgICBlbmQpXG5cbm1vZHVsZSBNYWtlX3RvX3N0cmluZyAoVCA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmQpXG4gICAgKFRvX2J5dGVzIDogU19kaXN0aW5jdCB3aXRoIHR5cGUgc3JjIDo9IFQudCB3aXRoIHR5cGUgZHN0IDo9IGJ5dGVzKSA9XG5zdHJ1Y3RcbiAgb3BlbiBUb19ieXRlc1xuXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1YiBzcmMgfnBvcyB+bGVuKVxuICA7O1xuXG4gIGxldCBzdWJvID9wb3MgP2xlbiBzcmMgPVxuICAgIEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihzdWJvID9wb3MgP2xlbiBzcmMpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9vcHRpb25cblxuICBsZXQgaGFzaF9mb2xkX3QgOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgaGFzaF9mb2xkX29wdGlvblxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICAgIG9wdGlvbl9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgc2V4cF9vZl9vcHRpb25cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IG9wdGlvbl9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPVxuICB8IE5vbmVcbiAgfCBTb21lIG9mICdhXG5cbmxldCBpc19ub25lID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uXG4gIHwgU29tZSBfIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgdmFsdWVfbWFwIG8gfmRlZmF1bHQgfmYgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBTb21lIHggLT4gZiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0XG47O1xuXG5sZXQgaXRlciBvIH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBmIGFcbjs7XG5cbmxldCBpbnZhcmlhbnQgZiB0ID0gaXRlciB0IH5mXG5cbmxldCBjYWxsIHggfmYgPVxuICBtYXRjaCBmIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmIC0+IGYgeFxuOztcblxubGV0IHZhbHVlIHQgfmRlZmF1bHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGRlZmF1bHRcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IHZhbHVlX2V4biA/aGVyZSA/ZXJyb3IgP21lc3NhZ2UgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvciA9XG4gICAgICBtYXRjaCBoZXJlLCBlcnJvciwgbWVzc2FnZSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUsIE5vbmUgLT4gRXJyb3Iub2Zfc3RyaW5nIFwiT3B0aW9uLnZhbHVlX2V4biBOb25lXCJcbiAgICAgIHwgTm9uZSwgTm9uZSwgU29tZSBtIC0+IEVycm9yLm9mX3N0cmluZyBtXG4gICAgICB8IE5vbmUsIFNvbWUgZSwgTm9uZSAtPiBlXG4gICAgICB8IE5vbmUsIFNvbWUgZSwgU29tZSBtIC0+IEVycm9yLnRhZyBlIH50YWc6bVxuICAgICAgfCBTb21lIHAsIE5vbmUsIE5vbmUgLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlIFwiT3B0aW9uLnZhbHVlX2V4blwiIHAgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdFxuICAgICAgfCBTb21lIHAsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5jcmVhdGUgbSBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBTb21lIGUsIF8gLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlXG4gICAgICAgICAgKHZhbHVlIG1lc3NhZ2UgfmRlZmF1bHQ6XCJcIilcbiAgICAgICAgICAoZSwgcClcbiAgICAgICAgICAoc2V4cF9vZl9wYWlyIEVycm9yLnNleHBfb2ZfdCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90KVxuICAgIGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCB2YWx1ZV9vcl90aHVuayBvIH5kZWZhdWx0ID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+IGRlZmF1bHQgKClcbjs7XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbfHxdXG4gIHwgU29tZSB4IC0+IFt8IHggfF1cbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSB4IC0+IFsgeCBdXG47O1xuXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlOl8gPSB0XG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlOl8gPSB0XG5cbmxldCBzdW0gKHR5cGUgYSkgKG1vZHVsZSBNIDogQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gIHZhbHVlX21hcCB0IH5kZWZhdWx0Ok0uemVybyB+ZlxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCAtPiBmIHhcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBhJyAtPiBlcXVhbCBhIGEnXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIF8gLT4gMVxuOztcblxubGV0IGlzX2VtcHR5ID0gaXNfbm9uZVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSB4IC0+IGYgaW5pdCB4XG47O1xuXG5sZXQgY291bnQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgYSAtPiBpZiBmIGEgdGhlbiAxIGVsc2UgMFxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgeCAtPiBpZiBmIHggdGhlbiB0IGVsc2UgTm9uZVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgZXF1YWwgZiB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCwgU29tZSB4JyAtPiBmIHggeCdcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgc29tZSB4ID0gU29tZSB4XG5cbmxldCBmaXJzdF9zb21lIHggeSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgXyAtPiB4XG4gIHwgTm9uZSAtPiB5XG47O1xuXG5sZXQgc29tZV9pZiBjb25kIHggPSBpZiBjb25kIHRoZW4gU29tZSB4IGVsc2UgTm9uZVxuXG5sZXQgbWVyZ2UgYSBiIH5mID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgeCB8IHgsIE5vbmUgLT4geFxuICB8IFNvbWUgYSwgU29tZSBiIC0+IFNvbWUgKGYgYSBiKVxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU29tZSB2IGFzIG8gd2hlbiBmIHYgLT4gb1xuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHRyeV93aXRoIGYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luIGYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+IHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGEgLT4gU29tZSAoZiBhKVxuOztcblxubGV0IGFwcGx5IGYgeCA9XG4gIG1hdGNoIGYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZiAtPiBtYXAgfmYgeFxuOztcblxubW9kdWxlIE1vbmFkX2FyZyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb25cblxuICBsZXQgcmV0dXJuIHggPSBTb21lIHhcbiAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5cbiAgbGV0IGJpbmQgbyB+ZiA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgOztcbmVuZFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKE1vbmFkX2FyZylcbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoTW9uYWRfYXJnKVxuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlXG5cbm1vZHVsZSBPZl9zZXhwYWJsZVxuICAgIChTZXhwYWJsZSA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiBTZXhwYWJsZS50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGFibGUuc2V4cF9vZl90IChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMVxuICAgIChTZXhwYWJsZSA6IFMxKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogJ2EgU2V4cGFibGUudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSAoTS50b19zZXhwYWJsZSB0KVxuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTJcbiAgICAoU2V4cGFibGUgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IpIFNleHBhYmxlLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUzXG4gICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZSAoTSA6IFN0cmluZ2FibGUuUykgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoTS50b19zdHJpbmcgdClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEVpdGhlcl9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEVpdGhlcjBcblxubGV0IHN3YXAgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gU2Vjb25kIHhcbiAgfCBTZWNvbmQgeCAtPiBGaXJzdCB4XG47O1xuXG5sZXQgaXNfZmlyc3QgPSBmdW5jdGlvblxuICB8IEZpcnN0IF8gLT4gdHJ1ZVxuICB8IFNlY29uZCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc2Vjb25kID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IGZhbHNlXG4gIHwgU2Vjb25kIF8gLT4gdHJ1ZVxuOztcblxubGV0IHZhbHVlIChGaXJzdCB4IHwgU2Vjb25kIHgpID0geFxuXG5sZXQgdmFsdWVfbWFwIHQgfmZpcnN0IH5zZWNvbmQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGaXJzdCB4IC0+IGZpcnN0IHhcbiAgfCBTZWNvbmQgeCAtPiBzZWNvbmQgeFxuOztcblxubGV0IGl0ZXIgPSB2YWx1ZV9tYXBcblxubGV0IG1hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBGaXJzdCAoZmlyc3QgeClcbiAgfCBTZWNvbmQgeCAtPiBTZWNvbmQgKHNlY29uZCB4KVxuOztcblxubGV0IGZpcnN0IHggPSBGaXJzdCB4XG5sZXQgc2Vjb25kIHggPSBTZWNvbmQgeFxuXG5sZXQgZXF1YWwgZXExIGVxMiB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBlcTEgeCB5XG4gIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IGVxMiB4IHlcbiAgfCBGaXJzdCBfLCBTZWNvbmQgXyB8IFNlY29uZCBfLCBGaXJzdCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaW52YXJpYW50IGYgcyA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBmIHhcbiAgfCBTZWNvbmQgeSAtPiBzIHlcbjs7XG5cbm1vZHVsZSBNYWtlX2ZvY3VzZWQgKE0gOiBzaWdcbiAgICB0eXBlICgrJ2EsICsnYikgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuICAgIHZhbCBvdGhlciA6ICdiIC0+IChfLCAnYikgdFxuICAgIHZhbCBlaXRoZXIgOiAoJ2EsICdiKSB0IC0+IHJldHVybjooJ2EgLT4gJ2MpIC0+IG90aGVyOignYiAtPiAnYykgLT4gJ2NcblxuICAgIHZhbCBjb21iaW5lXG4gICAgICA6ICAoJ2EsICdkKSB0XG4gICAgICAtPiAoJ2IsICdkKSB0XG4gICAgICAtPiBmOignYSAtPiAnYiAtPiAnYylcbiAgICAgIC0+IG90aGVyOignZCAtPiAnZCAtPiAnZClcbiAgICAgIC0+ICgnYywgJ2QpIHRcblxuICAgIHZhbCBiaW5kIDogKCdhLCAnYikgdCAtPiBmOignYSAtPiAoJ2MsICdiKSB0KSAtPiAoJ2MsICdiKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuICBvcGVuIFdpdGhfcmV0dXJuXG5cbiAgbGV0IG1hcCB0IH5mID0gYmluZCB0IH5mOihmdW4geCAtPiByZXR1cm4gKGYgeCkpXG5cbiAgaW5jbHVkZSBNb25hZC5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGVuZClcblxuICBtb2R1bGUgQXBwID0gQXBwbGljYXRpdmUuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGFwcGx5IHQxIHQyID0gYmluZCB0MSB+ZjooZnVuIGYgLT4gYmluZCB0MiB+ZjooZnVuIHggLT4gcmV0dXJuIChmIHgpKSlcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGVuZClcblxuICBpbmNsdWRlIEFwcFxuXG4gIGxldCBjb21iaW5lX2FsbCA9XG4gICAgbGV0IHJlYyBvdGhlcl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gb3RoZXIgYWNjXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgZWl0aGVyXG4gICAgICAgICAgdFxuICAgICAgICAgIH5yZXR1cm46KGZ1biBfIC0+IG90aGVyX2xvb3AgZiBhY2MgdHMpXG4gICAgICAgICAgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgKGYgYWNjIG8pIHRzKVxuICAgIGluXG4gICAgbGV0IHJlYyByZXR1cm5fbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgYWNjKVxuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlclxuICAgICAgICAgIHRcbiAgICAgICAgICB+cmV0dXJuOihmdW4geCAtPiByZXR1cm5fbG9vcCBmICh4IDo6IGFjYykgdHMpXG4gICAgICAgICAgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgbyB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIFtdIHRzXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfYWxsX3VuaXQgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlclxuICAgICAgICAgIHRcbiAgICAgICAgICB+cmV0dXJuOihmdW4gKCkgLT4gb3RoZXJfbG9vcCBmIGFjYyB0cylcbiAgICAgICAgICB+b3RoZXI6KGZ1biBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2MgbykgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXIgdCB+cmV0dXJuOihmdW4gKCkgLT4gcmV0dXJuX2xvb3AgZiB0cykgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgbyB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIHRzXG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID0gZWl0aGVyIHQgfnJldHVybjpPcHRpb24uc29tZSB+b3RoZXI6KGZ1biBfIC0+IE5vbmUpXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gZWl0aGVyIHQgfnJldHVybjpGbi5pZCB+b3RoZXI6KGZ1biBfIC0+IGRlZmF1bHQpXG5cbiAgbGV0IHdpdGhfcmV0dXJuIGYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gcmV0IC0+IG90aGVyIChmIChXaXRoX3JldHVybi5wcmVwZW5kIHJldCB+ZjpyZXR1cm4pKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlyc3QgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gZmlyc3RcbiAgICBsZXQgb3RoZXIgPSBzZWNvbmRcblxuICAgIGxldCBlaXRoZXIgdCB+cmV0dXJuIH5vdGhlciA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiByZXR1cm4geFxuICAgICAgfCBTZWNvbmQgeSAtPiBvdGhlciB5XG4gICAgOztcblxuICAgIGxldCBjb21iaW5lIHQxIHQyIH5mIH5vdGhlciA9XG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IEZpcnN0IChmIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IFNlY29uZCAob3RoZXIgeCB5KVxuICAgICAgfCBTZWNvbmQgeCwgXyB8IF8sIFNlY29uZCB4IC0+IFNlY29uZCB4XG4gICAgOztcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEZpcnN0IHggLT4gZiB4XG4gICAgICAoKiBSZXVzZSB0aGUgdmFsdWUgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGlvbi4gKilcbiAgICAgIHwgU2Vjb25kIF8gYXMgeSAtPiB5XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgU2Vjb25kID0gTWFrZV9mb2N1c2VkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdiLCAnYSkgdFxuXG4gICAgbGV0IHJldHVybiA9IHNlY29uZFxuICAgIGxldCBvdGhlciA9IGZpcnN0XG5cbiAgICBsZXQgZWl0aGVyIHQgfnJldHVybiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB5IC0+IHJldHVybiB5XG4gICAgICB8IEZpcnN0IHggLT4gb3RoZXIgeFxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IFNlY29uZCAoZiB4IHkpXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKG90aGVyIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgXyB8IF8sIEZpcnN0IHggLT4gRmlyc3QgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLCBsaWtlIFtGaXJzdC5iaW5kXSBhYm92ZS4gKilcbiAgICAgIHwgRmlyc3QgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2YsICdzKSBfZWl0aGVyID0gKCdmLCAncykgdCA9XG4gICAgfCBGaXJzdCBvZiAnZlxuICAgIHwgU2Vjb25kIG9mICdzXG5lbmRcbiIsImluY2x1ZGUgSW5kZXhlZF9jb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5sZXQgaXRlcmkgfmZvbGQgdCB+ZiA9XG4gIGlnbm9yZVxuICAgIChmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIGkgeCAtPlxuICAgICAgIGYgaSB4O1xuICAgICAgIGkgKyAxKVxuICAgICA6IGludClcbjs7XG5cbmxldCBmb2xkaSB+Zm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgdiAtPlxuICAgIGxldCBhY2MgPSBmICFpIGFjYyB2IGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgYWNjKVxuOztcblxubGV0IGNvdW50aSB+Zm9sZGkgdCB+ZiA9IGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgbiBhIC0+IGlmIGYgaSBhIHRoZW4gbiArIDEgZWxzZSBuKVxuXG5sZXQgZXhpc3RzaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSlcbjs7XG5cbmxldCBmb3JfYWxsaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgbm90IChmIGkgeCkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBmaW5kX21hcGkgfml0ZXJpIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIHgpKSk7XG4gICAgTm9uZSlcbjs7XG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IHNpZ1xuICAgIGluY2x1ZGUgQ29udGFpbmVyX2ludGYuTWFrZV9nZW5fYXJnXG5cbiAgICB2YWwgaXRlcmkgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgKCdhIHQsICdhIGVsdCkgaXRlcmkgXVxuICAgIHZhbCBmb2xkaSA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAoJ2EgdCwgJ2EgZWx0LCBfKSBmb2xkaSBdXG4gIGVuZCkgOiBHZW5lcmljIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID0gc3RydWN0XG4gIGluY2x1ZGUgQ29udGFpbmVyLk1ha2VfZ2VuIChUKVxuXG4gIGxldCBpdGVyaSA9XG4gICAgbWF0Y2ggVC5pdGVyaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXJpIC0+IGl0ZXJpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlcmkgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBmb2xkaSA9XG4gICAgbWF0Y2ggVC5mb2xkaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGZvbGRpIC0+IGZvbGRpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmluaXQgfmYgLT4gZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBjb3VudGkgdCB+ZiA9IGNvdW50aSB+Zm9sZGkgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gZXhpc3RzaSB+aXRlcmkgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IGZvcl9hbGxpIH5pdGVyaSB0IH5mXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZGkgdCB+ZiA9IGZpbmRpIH5pdGVyaSB0IH5mXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoVClcblxuICAoKiBOb3QgcGFydCBvZiBbQ29udGFpbmVyLkdlbmVyaWNdLiAqKVxuICBsZXQgbWVtID0gQy5tZW1cblxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlMCAoVClcblxuICAoKiBOb3QgcGFydCBvZiBbQ29udGFpbmVyLkdlbmVyaWNdLiAqKVxuICBsZXQgbWVtID0gQy5tZW1cblxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbnRhaW5lcl9pbnRmLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgTGlzdCA9IExpc3QxXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gICgqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZlxuICAgICB0aGUgc2VxdWVuY2UgKilcbiAgdHlwZSAoJ2EsICdzKSB0ID1cbiAgICB8IERvbmVcbiAgICB8IFNraXAgb2YgJ3NcbiAgICB8IFlpZWxkIG9mICdhICogJ3NcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ3MuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ3MpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzAwOV8gc19fMDEwXylcbiAgICAgICAgOiAgKChhX18wMDlfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgICAgLT4gKGFfXzAwOV8sIHNfXzAxMF8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgICAgZnVuIF9vZl9hX18wMDFfIF9vZl9zX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgRG9uZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJEb25lXCJcbiAgICAgICAgfCBTa2lwIGFyZzBfXzAwM18gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDA0XyA9IF9vZl9zX18wMDJfIGFyZzBfXzAwM18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTa2lwXCI7IHJlczBfXzAwNF8gXVxuICAgICAgICB8IFlpZWxkIChhcmcwX18wMDVfLCBhcmcxX18wMDZfKSAtPlxuICAgICAgICAgIGxldCByZXMwX18wMDdfID0gX29mX2FfXzAwMV8gYXJnMF9fMDA1X1xuICAgICAgICAgIGFuZCByZXMxX18wMDhfID0gX29mX3NfXzAwMl8gYXJnMV9fMDA2XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIllpZWxkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxub3BlbiBTdGVwXG5cbigqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIHNlcXVlbmNlICopXG50eXBlICtfIHQgPSBTZXF1ZW5jZSA6ICdzICogKCdzIC0+ICgnYSwgJ3MpIFN0ZXAudCkgLT4gJ2EgdFxudHlwZSAnYSBzZXF1ZW5jZSA9ICdhIHRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgbmV4dF9zdGVwIChTZXF1ZW5jZSAocywgZikpID1cbiAgICBtYXRjaCBmIHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMgLT4gU2tpcCAoU2VxdWVuY2UgKHMsIGYpKVxuICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBTZXF1ZW5jZSAocywgZikpXG4gIDs7XG5cbiAgbGV0IGRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBsb29wIHMgbmV4dCBmaW5pc2ggZiBhY2MgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgICB8IFNraXAgcyAtPiBmIGFjYyBOb25lIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGYgYWNjIChTb21lIGEpIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0IGZpbmlzaCBmIGluaXRcbiAgOztcbmVuZFxuXG5sZXQgdW5mb2xkX3N0ZXAgfmluaXQgfmYgPSBTZXF1ZW5jZSAoaW5pdCwgZilcblxubGV0IHVuZm9sZCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOihmdW4gcyAtPlxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBOb25lIC0+IFN0ZXAuRG9uZVxuICAgIHwgU29tZSAoYSwgcykgLT4gU3RlcC5ZaWVsZCAoYSwgcykpXG47O1xuXG5sZXQgdW5mb2xkX3dpdGggcyB+aW5pdCB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIChpbml0LCBzKVxuICAgICAgLCBmdW4gKHNlZWQsIHMpIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKHNlZWQsIHMpXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAgICAgKG1hdGNoIGYgc2VlZCBhIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHNlZWQgLT4gU2tpcCAoc2VlZCwgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgc2VlZCkgLT4gWWllbGQgKGEsIChzZWVkLCBzKSkpIClcbjs7XG5cbmxldCB1bmZvbGRfd2l0aF9hbmRfZmluaXNoIHMgfmluaXQgfnJ1bm5pbmdfc3RlcCB+aW5uZXJfZmluaXNoZWQgfmZpbmlzaGluZ19zdGVwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYElubmVyX3J1bm5pbmcgKGluaXQsIHMpXG4gICAgICAsIGZ1biBzdGF0ZSAtPlxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBpbm5lcl9zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBTa2lwIChgSW5uZXJfZmluaXNoZWQgKGlubmVyX2ZpbmlzaGVkIHN0YXRlKSlcbiAgICAgICAgICAgfCBTa2lwIGlubmVyX3N0YXRlIC0+IFNraXAgKGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpKVxuICAgICAgICAgICB8IFlpZWxkICh4LCBpbm5lcl9zdGF0ZSkgLT5cbiAgICAgICAgICAgICAobWF0Y2ggcnVubmluZ19zdGVwIHN0YXRlIHggd2l0aFxuICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICB8IFNraXAgc3RhdGUgLT4gU2tpcCAoYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkpXG4gICAgICAgICAgICAgIHwgWWllbGQgKHksIHN0YXRlKSAtPiBZaWVsZCAoeSwgYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkpKSlcbiAgICAgICAgfCBgSW5uZXJfZmluaXNoZWQgc3RhdGUgLT5cbiAgICAgICAgICAobWF0Y2ggZmluaXNoaW5nX3N0ZXAgc3RhdGUgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgc3RhdGUgLT4gU2tpcCAoYElubmVyX2ZpbmlzaGVkIHN0YXRlKVxuICAgICAgICAgICB8IFlpZWxkICh5LCBzdGF0ZSkgLT4gWWllbGQgKHksIGBJbm5lcl9maW5pc2hlZCBzdGF0ZSkpIClcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpsIH5mOihmdW5jdGlvblxuICAgIHwgW10gLT4gRG9uZVxuICAgIHwgeCA6OiBsIC0+IFlpZWxkICh4LCBsKSlcbjs7XG5cblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzZWVkIHYgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgIHwgRG9uZSAtPiB2XG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIHYgbmV4dCBmXG4gICAgfCBZaWVsZCAoYSwgcykgLT4gbG9vcCBzIChmIHYgYSkgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgaW5pdCBuZXh0IGZcbjs7XG5cbmxldCB0b19saXN0X3JldiB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbClcblxuXG5sZXQgdG9fbGlzdCAoU2VxdWVuY2UgKHMsIG5leHQpKSA9XG4gIGxldCBzYWZlX3RvX2xpc3QgdCA9IExpc3QucmV2ICh0b19saXN0X3JldiB0KSBpblxuICBsZXQgcmVjIHRvX2xpc3QgcyBuZXh0IGkgPVxuICAgIGlmIGkgPSAwXG4gICAgdGhlbiBzYWZlX3RvX2xpc3QgKFNlcXVlbmNlIChzLCBuZXh0KSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gW11cbiAgICAgIHwgU2tpcCBzIC0+IHRvX2xpc3QgcyBuZXh0IGlcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGEgOjogdG9fbGlzdCBzIG5leHQgKGkgLSAxKSlcbiAgaW5cbiAgdG9fbGlzdCBzIG5leHQgNTAwXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxuXG5sZXQgcmFuZ2UgPyhzdHJpZGUgPSAxKSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfdiBzdG9wX3YgPVxuICBsZXQgc3RlcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIHdoZW4gc3RyaWRlID49IDAgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPiBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gICAgfCBgaW5jbHVzaXZlIC0+IGZ1biBpIC0+IGlmIGkgPCBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gICAgfCBgZXhjbHVzaXZlIHdoZW4gc3RyaWRlID49IDAgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPj0gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBmdW4gaSAtPiBpZiBpIDw9IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoaSwgaSArIHN0cmlkZSlcbiAgaW5cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfdlxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBzdGFydF92ICsgc3RyaWRlXG4gIGluXG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOnN0ZXBcbjs7XG5cbmxldCBvZl9sYXp5IHRfbGF6eSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnRfbGF6eSB+ZjooZnVuIHRfbGF6eSAtPlxuICAgIGxldCAoU2VxdWVuY2UgKHMsIG5leHQpKSA9IExhenkuZm9yY2UgdF9sYXp5IGluXG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzIC0+XG4gICAgICBTa2lwXG4gICAgICAgIChsZXQgdiA9IFNlcXVlbmNlIChzLCBuZXh0KSBpblxuICAgICAgICAgbGF6eSB2KVxuICAgIHwgWWllbGQgKHgsIHMpIC0+XG4gICAgICBZaWVsZFxuICAgICAgICAoIHhcbiAgICAgICAgLCBsZXQgdiA9IFNlcXVlbmNlIChzLCBuZXh0KSBpblxuICAgICAgICAgIGxhenkgdiApKVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggc2VlZFxuICAgICAgLCBmdW4gc2VlZCAtPlxuICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGYgYSwgcykgKVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChmIGkgYSwgKGkgKyAxLCBzKSkgKVxuOztcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICB1bmZvbGRfd2l0aCB0IH5pbml0IH5mOihmdW4gYWNjIHggLT5cbiAgICBsZXQgYWNjLCB4ID0gZiBhY2MgeCBpblxuICAgIFlpZWxkICh4LCBhY2MpKVxuOztcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdDooMCwgaW5pdCkgfmY6KGZ1biAoaSwgYWNjKSB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgaSBhY2MgeCBpblxuICAgIFlpZWxkICh4LCAoaSArIDEsIGFjYykpKVxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggc2VlZFxuICAgICAgLCBmdW4gc2VlZCAtPlxuICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBmIGEgLT4gWWllbGQgKGEsIHMpXG4gICAgICAgIHwgWWllbGQgKF8sIHMpIC0+IFNraXAgcyApXG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbWFwIH5mOnNuZCAoZmlsdGVyIChtYXBpIHQgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKSlcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIGxldCByZWMgbG9vcCBpIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gaVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgaSBzIG5leHRcbiAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIChpICsgMSkgcyBuZXh0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIDAgc2VlZCBuZXh0XG47O1xuXG5sZXQgdG9fbGlzdF9yZXZfd2l0aF9sZW5ndGggdCA9IGZvbGQgdCB+aW5pdDooW10sIDApIH5mOihmdW4gKGwsIGkpIHggLT4geCA6OiBsLCBpICsgMSlcblxubGV0IHRvX2FycmF5IHQgPVxuICBsZXQgbCwgbGVuID0gdG9fbGlzdF9yZXZfd2l0aF9sZW5ndGggdCBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgeCA6OiBsIC0+XG4gICAgbGV0IGEgPSBBcnJheS5jcmVhdGUgfmxlbiB4IGluXG4gICAgbGV0IHJlYyBsb29wIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IChpID0gLTEpXG4gICAgICB8IHggOjogbCAtPlxuICAgICAgICBhLihpKSA8LSB4O1xuICAgICAgICBsb29wIChpIC0gMSkgbFxuICAgIGluXG4gICAgbG9vcCAobGVuIC0gMikgbDtcbiAgICBhXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBmIGEgLT4gU29tZSBhXG4gICAgfCBZaWVsZCAoXywgcykgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIGYgYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgcyBuZXh0IGZcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggZiBpIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIG5vdCAoZiBhKSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIG5vdCAoZiBpIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIGYgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoXywgcykgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gZiBpIGEgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgIHwgRG9uZSAtPiAoKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgZiBhO1xuICAgICAgbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIF8gLT4gZmFsc2VcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGEgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoYiwgXykgd2hlbiBlcXVhbCBhIGIgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGFcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGFcbjs7XG5cbmxldCBlbXB0eSA9IFNlcXVlbmNlICgoKSwgZnVuICgpIC0+IERvbmUpXG5cbmxldCBiaW5kIHQgfmYgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCksIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICB8IERvbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoZW1wdHksIFNlcXVlbmNlIChzLCBuZXh0KSlcbiAgICAgICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFNraXAgKGYgYSwgU2VxdWVuY2UgKHMsIG5leHQpKSkpXG4gICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChTZXF1ZW5jZSAocywgbmV4dCksIHJlc3QpXG4gICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgKFNlcXVlbmNlIChzLCBuZXh0KSwgcmVzdCkpKSlcbiAgICB+aW5pdDooZW1wdHksIHQpXG47O1xuXG5sZXQgcmV0dXJuIHggPVxuICB1bmZvbGRfc3RlcCB+aW5pdDooU29tZSB4KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRG9uZVxuICAgIHwgU29tZSB4IC0+IFlpZWxkICh4LCBOb25lKSlcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kKVxuXG5sZXQgbnRoIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBOb25lXG4gICAgICB8IFNraXAgcyAtPiBsb29wIGkgcyBuZXh0XG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBpZiBwaHlzX2VxdWFsIGkgMCB0aGVuIFNvbWUgYSBlbHNlIGxvb3AgKGkgLSAxKSBzIG5leHRcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgbiBzIG5leHQpXG47O1xuXG5sZXQgbnRoX2V4biBzIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UubnRoXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggbnRoIHMgbiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UubnRoXCJcbiAgICB8IFNvbWUgeCAtPiB4KVxuOztcblxubW9kdWxlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBMZWZ0IG9mICdhXG4gICAgfCBSaWdodCBvZiAnYlxuICAgIHwgQm90aCBvZiAnYSAqICdiXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDExXyBiX18wMTJfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDExXyBiX18wMTJfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTFfLCBiX18wMTJfIHdpdGhcbiAgICAgIHwgTGVmdCBfYV9fMDEzXywgTGVmdCBfYl9fMDE0XyAtPiBfY21wX19hIF9hX18wMTNfIF9iX18wMTRfXG4gICAgICB8IExlZnQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBMZWZ0IF8gLT4gMVxuICAgICAgfCBSaWdodCBfYV9fMDE1XywgUmlnaHQgX2JfXzAxNl8gLT4gX2NtcF9fYiBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBSaWdodCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFJpZ2h0IF8gLT4gMVxuICAgICAgfCBCb3RoIChfYV9fMDE3XywgX2FfXzAxOV8pLCBCb3RoIChfYl9fMDE4XywgX2JfXzAyMF8pIC0+XG4gICAgICAgIChtYXRjaCBfY21wX19hIF9hX18wMTdfIF9iX18wMThfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19iIF9hX18wMTlfIF9iX18wMjBfXG4gICAgICAgICB8IG4gLT4gbikpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90XG4gICAgOiB0eXBlIGEgYi5cbiAgICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgICAtPiAoYSwgYikgdFxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICB8IExlZnQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgfCBSaWdodCBfYTAgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG4gICAgICB8IEJvdGggKF9hMCwgX2ExKSAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyIGluXG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgICBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNDRfIGJfXzA0NV8pXG4gICAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzA0NF8pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDQ1XylcbiAgICAgICAgICAgIC0+IFNleHBsaWIwLlNleHAudCAtPiAoYV9fMDQ0XywgYl9fMDQ1XykgdCkgLT5cbiAgICAgIGxldCBlcnJvcl9zb3VyY2VfXzAyNV8gPSBcInNlcXVlbmNlLm1sLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnRcIiBpblxuICAgICAgZnVuIF9vZl9hX18wMjFfIF9vZl9iX18wMjJfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJsZWZ0XCIgfCBcIkxlZnRcIikgYXMgX3RhZ19fMDI4XykgOjogc2V4cF9hcmdzX18wMjlfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMjdfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDI5XyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wMzBfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDMxXyA9IF9vZl9hX18wMjFfIGFyZzBfXzAzMF8gaW5cbiAgICAgICAgICAgICBMZWZ0IHJlczBfXzAzMV9cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjVfXG4gICAgICAgICAgICAgICBfdGFnX18wMjhfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDI3XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIF90YWdfXzAzM18pIDo6IHNleHBfYXJnc19fMDM0XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDMyXyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzNF8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDM1XyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzNl8gPSBfb2ZfYl9fMDIyXyBhcmcwX18wMzVfIGluXG4gICAgICAgICAgICAgUmlnaHQgcmVzMF9fMDM2X1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNV9cbiAgICAgICAgICAgICAgIF90YWdfXzAzM19cbiAgICAgICAgICAgICAgIF9zZXhwX18wMzJfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiYm90aFwiIHwgXCJCb3RoXCIpIGFzIF90YWdfXzAzOF8pIDo6IHNleHBfYXJnc19fMDM5XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM3XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzOV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDQwXzsgYXJnMV9fMDQxXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzA0Ml8gPSBfb2ZfYV9fMDIxXyBhcmcwX18wNDBfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzA0M18gPSBfb2ZfYl9fMDIyXyBhcmcxX18wNDFfIGluXG4gICAgICAgICAgICAgQm90aCAocmVzMF9fMDQyXywgcmVzMV9fMDQzXylcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjVfXG4gICAgICAgICAgICAgICBfdGFnX18wMzhfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDM3XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjZfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjZfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDI0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI0X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNF9cbiAgICAgICAgfCBzZXhwX18wMjRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI0X1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNTZfIGJfXzA1N18pXG4gICAgICAgIDogICgoYV9fMDU2XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wNTdfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wNTZfLCBiX18wNTdfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDQ2XyBfb2ZfYl9fMDQ3XyAtPiBmdW5jdGlvblxuICAgICAgICB8IExlZnQgYXJnMF9fMDQ4XyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNDlfID0gX29mX2FfXzA0Nl8gYXJnMF9fMDQ4XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgcmVzMF9fMDQ5XyBdXG4gICAgICAgIHwgUmlnaHQgYXJnMF9fMDUwXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTFfID0gX29mX2JfXzA0N18gYXJnMF9fMDUwXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IHJlczBfXzA1MV8gXVxuICAgICAgICB8IEJvdGggKGFyZzBfXzA1Ml8sIGFyZzFfXzA1M18pIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1NF8gPSBfb2ZfYV9fMDQ2XyBhcmcwX18wNTJfXG4gICAgICAgICAgYW5kIHJlczFfXzA1NV8gPSBfb2ZfYl9fMDQ3XyBhcmcxX18wNTNfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiOyByZXMwX18wNTRfOyByZXMxX18wNTVfIF1cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFZhcmlhbnRcbiAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJMZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkJvdGhcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSB+Y29tcGFyZSA9XG4gIGxldCB1bnNoYWRvd2VkX2NvbXBhcmUgPSBjb21wYXJlIGluXG4gIGxldCBvcGVuIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50IGluXG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgczEsIHMyIC0+IFNraXAgKG5leHQxIHMxLCBzMilcbiAgICB8IHMxLCBTa2lwIHMyIC0+IFNraXAgKHMxLCBuZXh0MiBzMilcbiAgICB8IChZaWVsZCAoYSwgczEnKSBhcyBzMSksIChZaWVsZCAoYiwgczInKSBhcyBzMikgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gdW5zaGFkb3dlZF9jb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8IDBcbiAgICAgIHRoZW4gWWllbGQgKExlZnQgYSwgKFNraXAgczEnLCBzMikpXG4gICAgICBlbHNlIGlmIGNvbXBhcmlzb24gPSAwXG4gICAgICB0aGVuIFlpZWxkIChCb3RoIChhLCBiKSwgKFNraXAgczEnLCBTa2lwIHMyJykpXG4gICAgICBlbHNlIFlpZWxkIChSaWdodCBiLCAoczEsIFNraXAgczInKSlcbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgKGEsIHMxKSwgRG9uZSAtPiBZaWVsZCAoTGVmdCBhLCAoU2tpcCBzMSwgRG9uZSkpXG4gICAgfCBEb25lLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChSaWdodCBiLCAoRG9uZSwgU2tpcCBzMikpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgbWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIHMxIHMyIH5jb21wYXJlID1cbiAgbWFwIChtZXJnZV93aXRoX2R1cGxpY2F0ZXMgczEgczIgfmNvbXBhcmUpIH5mOihmdW5jdGlvblxuICAgIHwgTGVmdCB4IHwgUmlnaHQgeCB8IEJvdGggKHgsIF8pIC0+IHgpXG47O1xuXG5sZXQgKG1lcmdlIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMjEtMDddIEZvciBpZGVudGljYWwgYmVoYXZpb3IsIHVzZSBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkXSwgYnV0IGNvbnNpZGVyIHVzaW5nIFxcXG4gICAgICAgIFtTZXF1ZW5jZS5tZXJnZV9zb3J0ZWRdIGluc3RlYWQuXCJdKVxuICA9XG4gIG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZFxuOztcblxubGV0IG1lcmdlX3NvcnRlZCAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgfmNvbXBhcmUgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gICAgfCAoWWllbGQgKGEsIHMxJykgYXMgczEpLCAoWWllbGQgKGIsIHMyJykgYXMgczIpIC0+XG4gICAgICBsZXQgY29tcGFyaXNvbiA9IGNvbXBhcmUgYSBiIGluXG4gICAgICBpZiBjb21wYXJpc29uIDw9IDAgdGhlbiBZaWVsZCAoYSwgKFNraXAgczEnLCBzMikpIGVsc2UgWWllbGQgKGIsIChzMSwgU2tpcCBzMicpKVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBZaWVsZCAoYSwgczEpLCBEb25lIC0+IFlpZWxkIChhLCAoU2tpcCBzMSwgRG9uZSkpXG4gICAgfCBEb25lLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChiLCAoRG9uZSwgU2tpcCBzMikpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgaGQgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgKGEsIF8pIC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBoZF9leG4gcyA9XG4gIG1hdGNoIGhkIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJoZF9leG5cIlxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdGwgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgKF8sIGEpIC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICAobWF0Y2ggbG9vcCBzIG5leHQgd2l0aFxuICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICB8IFNvbWUgcyAtPiBTb21lIChTZXF1ZW5jZSAocywgbmV4dCkpKVxuOztcblxubGV0IHRsX2VhZ2VybHlfZXhuIHMgPVxuICBtYXRjaCB0bCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UudGxfZXhuXCJcbiAgfCBTb21lIHMgLT4gc1xuOztcblxubGV0IGxpZnRfaWRlbnRpdHkgbmV4dCBzID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBEb25lIC0+IERvbmVcbiAgfCBTa2lwIHMgLT4gU2tpcCAoYElkZW50aXR5IHMpXG4gIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBgSWRlbnRpdHkgcylcbjs7XG5cbmxldCBuZXh0IHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIChhLCBzKSAtPiBTb21lIChhLCBTZXF1ZW5jZSAocywgbmV4dCkpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dFxuOztcblxubGV0IGZpbHRlcl9vcHQgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNcbiAgICAgICwgZnVuIHMgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKE5vbmUsIHMpIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChTb21lIGEsIHMpIC0+IFlpZWxkIChhLCBzKSApXG47O1xuXG5sZXQgZmlsdGVyX21hcCBzIH5mID0gZmlsdGVyX29wdCAobWFwIHMgfmYpXG5sZXQgZmlsdGVyX21hcGkgcyB+ZiA9IGZpbHRlcl9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBzcGxpdF9uIHMgbiA9XG4gIGxldCByZWMgbG9vcCBzIGkgYWNjdW0gbmV4dCA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiBMaXN0LnJldiBhY2N1bSwgU2VxdWVuY2UgKHMsIG5leHQpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IExpc3QucmV2IGFjY3VtLCBlbXB0eVxuICAgICAgfCBTa2lwIHMgLT4gbG9vcCBzIGkgYWNjdW0gbmV4dFxuICAgICAgfCBZaWVsZCAoYSwgcykgLT4gbG9vcCBzIChpIC0gMSkgKGEgOjogYWNjdW0pIG5leHQpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbiBbXSBuZXh0XG47O1xuXG5sZXQgY2h1bmtzX2V4biB0IG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmNodW5rc19leG5cIlxuICBlbHNlXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQ6dCB+ZjooZnVuIHQgLT5cbiAgICAgIG1hdGNoIHNwbGl0X24gdCBuIHdpdGhcbiAgICAgIHwgW10sIF9lbXB0eSAtPiBEb25lXG4gICAgICB8IChfIDo6IF8gYXMgeHMpLCB0IC0+IFlpZWxkICh4cywgdCkpXG47O1xuXG5sZXQgZmluZGkgcyB+ZiA9IGZpbmQgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBmaW5kX2V4biBzIH5mID1cbiAgbWF0Y2ggZmluZCBzIH5mIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UuZmluZF9leG5cIlxuICB8IFNvbWUgeCAtPiB4XG47O1xuXG5sZXQgYXBwZW5kIHMxIHMyID1cbiAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgfCBTZXF1ZW5jZSAoczEsIG5leHQxKSwgU2VxdWVuY2UgKHMyLCBuZXh0MikgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgRmlyc3RfbGlzdCBzMVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBGaXJzdF9saXN0IHMxIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQxIHMxIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IFNraXAgKGBTZWNvbmRfbGlzdCBzMilcbiAgICAgICAgICAgfCBTa2lwIHMxIC0+IFNraXAgKGBGaXJzdF9saXN0IHMxKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzMSkgLT4gWWllbGQgKGEsIGBGaXJzdF9saXN0IHMxKSlcbiAgICAgICAgfCBgU2Vjb25kX2xpc3QgczIgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dDIgczIgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgczIgLT4gU2tpcCAoYFNlY29uZF9saXN0IHMyKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzMikgLT4gWWllbGQgKGEsIGBTZWNvbmRfbGlzdCBzMikpIClcbjs7XG5cbmxldCBjb25jYXRfbWFwIHMgfmYgPSBiaW5kIHMgfmZcbmxldCBjb25jYXQgcyA9IGNvbmNhdF9tYXAgcyB+ZjpGbi5pZFxubGV0IGNvbmNhdF9tYXBpIHMgfmYgPSBjb25jYXRfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgemlwIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIChhLCBzMSksIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKChhLCBiKSwgKFNraXAgczEsIFNraXAgczIpKVxuICAgIHwgRG9uZSwgXyB8IF8sIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IHppcF9mdWxsIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIChhLCBzMSksIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKGBCb3RoIChhLCBiKSwgKFNraXAgczEsIFNraXAgczIpKVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gICAgfCBEb25lLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChgUmlnaHQgYiwgKERvbmUsIG5leHQyIHMyKSlcbiAgICB8IFlpZWxkIChhLCBzMSksIERvbmUgLT4gWWllbGQgKGBMZWZ0IGEsIChuZXh0MSBzMSwgRG9uZSkpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgYm91bmRlZF9sZW5ndGggKFNlcXVlbmNlIChzZWVkLCBuZXh0KSkgfmF0X21vc3QgPVxuICBsZXQgcmVjIGxvb3AgaSBzZWVkIG5leHQgPVxuICAgIGlmIGkgPiBhdF9tb3N0XG4gICAgdGhlbiBgR3JlYXRlclxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBgSXMgaVxuICAgICAgfCBTa2lwIHNlZWQgLT4gbG9vcCBpIHNlZWQgbmV4dFxuICAgICAgfCBZaWVsZCAoXywgc2VlZCkgLT4gbG9vcCAoaSArIDEpIHNlZWQgbmV4dClcbiAgaW5cbiAgbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IGxlbmd0aF9pc19ib3VuZGVkX2J5ID8obWluID0gLTEpID9tYXggdCA9XG4gIGxldCBsZW5ndGhfaXNfYXRfbGVhc3QgKFNlcXVlbmNlIChzLCBuZXh0KSkgPVxuICAgIGxldCByZWMgbG9vcCBzIGFjYyA9XG4gICAgICBpZiBhY2MgPj0gbWluXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTa2lwIHMgLT4gbG9vcCBzIGFjY1xuICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIHMgKGFjYyArIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIDBcbiAgaW5cbiAgbWF0Y2ggbWF4IHdpdGhcbiAgfCBOb25lIC0+IGxlbmd0aF9pc19hdF9sZWFzdCB0XG4gIHwgU29tZSBtYXggLT5cbiAgICAobWF0Y2ggYm91bmRlZF9sZW5ndGggdCB+YXRfbW9zdDptYXggd2l0aFxuICAgICB8IGBJcyBsZW4gd2hlbiBsZW4gPj0gbWluIC0+IHRydWVcbiAgICAgfCBfIC0+IGZhbHNlKVxuOztcblxubGV0IGl0ZXJpIHMgfmYgPSBpdGVyIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgZm9sZGkgcyB+aW5pdCB+ZiA9XG4gIGZvbGQgfmluaXQgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biBhY2MgKGksIHMpIC0+IGYgaSBhY2Mgcylcbjs7XG5cbmxldCByZWR1Y2UgcyB+ZiA9XG4gIG1hdGNoIG5leHQgcyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYSwgcykgLT4gU29tZSAoZm9sZCBzIH5pbml0OmEgfmYpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBzIH5mID1cbiAgbWF0Y2ggcmVkdWNlIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHJlcyAtPiByZXNcbjs7XG5cbmxldCBncm91cCAoU2VxdWVuY2UgKHMsIG5leHQpKSB+YnJlYWsgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5pbml0OihTb21lIChbXSwgcykpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgfCBTb21lIChhY2MsIHMpIC0+XG4gICAgICAgIChtYXRjaCBhY2MsIG5leHQgcyB3aXRoXG4gICAgICAgICB8IF8sIFNraXAgcyAtPiBTa2lwIChTb21lIChhY2MsIHMpKVxuICAgICAgICAgfCBbXSwgRG9uZSAtPiBEb25lXG4gICAgICAgICB8IGFjYywgRG9uZSAtPiBZaWVsZCAoTGlzdC5yZXYgYWNjLCBOb25lKVxuICAgICAgICAgfCBbXSwgWWllbGQgKGN1ciwgcykgLT4gU2tpcCAoU29tZSAoWyBjdXIgXSwgcykpXG4gICAgICAgICB8IChwcmV2IDo6IF8gYXMgYWNjKSwgWWllbGQgKGN1ciwgcykgLT5cbiAgICAgICAgICAgaWYgYnJlYWsgcHJldiBjdXJcbiAgICAgICAgICAgdGhlbiBZaWVsZCAoTGlzdC5yZXYgYWNjLCBTb21lIChbIGN1ciBdLCBzKSlcbiAgICAgICAgICAgZWxzZSBTa2lwIChTb21lIChjdXIgOjogYWNjLCBzKSkpKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIChTZXF1ZW5jZSAocywgbmV4dCkpIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBsYXN0X2VsdCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBsYXN0X2VsdCBzXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCBsYXN0X2VsdCB3aXRoXG4gICAgICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU29tZSAoYiwgYSlcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gbG9vcCAoU29tZSBhKSBzKVxuICBpblxuICBsb29wIE5vbmUgc1xuOztcblxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIHMgfmVxdWFsID1cbiAgdW5mb2xkX3dpdGggcyB+aW5pdDpOb25lIH5mOihmdW4gcHJldiBhIC0+XG4gICAgbWF0Y2ggcHJldiB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU2tpcCAoU29tZSBhKVxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBZaWVsZCAoYSwgU29tZSBhKSlcbjs7XG5cbmxldCBjb3VudCBzIH5mID0gbGVuZ3RoIChmaWx0ZXIgcyB+ZilcbmxldCBjb3VudGkgdCB+ZiA9IGxlbmd0aCAoZmlsdGVyaSB0IH5mKVxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBpbml0IG4gfmYgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gaSAtPiBpZiBpID49IG4gdGhlbiBEb25lIGVsc2UgWWllbGQgKGYgaSwgaSArIDEpKVxuOztcblxubGV0IHN1YiBzIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2Uuc3ViXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIGlmIGkgLSBwb3MgPj0gbGVuXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGkgPj0gcG9zIC0+IFlpZWxkIChhLCAoaSArIDEsIHMpKVxuICAgICAgICAgIHwgWWllbGQgKF8sIHMpIC0+IFNraXAgKGkgKyAxLCBzKSkgKVxuOztcblxubGV0IHRha2UgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS50YWtlXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIGlmIGkgPj0gbGVuXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgKGkgKyAxLCBzKSkpIClcbjs7XG5cbmxldCBkcm9wIHMgbGVuID1cbiAgaWYgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2UuZHJvcFwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChpLCBzKVxuICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGkgPj0gbGVuIC0+IFlpZWxkIChhLCAoaSArIDEsIHMpKVxuICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBTa2lwIChpICsgMSwgcykgKVxuOztcblxubGV0IHRha2Vfd2hpbGUgcyB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNcbiAgICAgICwgZnVuIHMgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gZiBhIC0+IFlpZWxkIChhLCBzKVxuICAgICAgICB8IFlpZWxkIChfLCBfKSAtPiBEb25lIClcbjs7XG5cbmxldCBkcm9wX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgRHJvcHBpbmcgc1xuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBEcm9wcGluZyBzIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGBEcm9wcGluZyBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGYgYSAtPiBTa2lwIChgRHJvcHBpbmcgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIGBJZGVudGl0eSBzKSlcbiAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcyApXG47O1xuXG5sZXQgc2hpZnRfcmlnaHQgcyB4ID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYENvbnNpbmcgKHNlZWQsIHgpXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgYENvbnNpbmcgKHNlZWQsIHgpIC0+IFlpZWxkICh4LCBgSWRlbnRpdHkgc2VlZClcbiAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcyApXG47O1xuXG5sZXQgc2hpZnRfcmlnaHRfd2l0aF9saXN0IHMgbCA9IGFwcGVuZCAob2ZfbGlzdCBsKSBzXG5sZXQgc2hpZnRfbGVmdCA9IGRyb3BcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIEAgKSA9IGFwcGVuZFxuZW5kXG5cbmxldCBpbnRlcnNwZXJzZSBzIH5zZXAgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgSW5pdCBzXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgYEluaXQgcyAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChgSW5pdCBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgYFJ1bm5pbmcgcykpXG4gICAgICAgIHwgYFJ1bm5pbmcgcyAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChgUnVubmluZyBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoc2VwLCBgUHV0dGluZyAoYSwgcykpKVxuICAgICAgICB8IGBQdXR0aW5nIChhLCBzKSAtPiBZaWVsZCAoYSwgYFJ1bm5pbmcgcykgKVxuOztcblxubGV0IHJlcGVhdCB4ID0gdW5mb2xkX3N0ZXAgfmluaXQ6eCB+ZjooZnVuIHggLT4gWWllbGQgKHgsIHgpKVxuXG5sZXQgY3ljbGVfbGlzdF9leG4geHMgPVxuICBpZiBMaXN0LmlzX2VtcHR5IHhzIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5jeWNsZV9saXN0X2V4blwiO1xuICBsZXQgcyA9IG9mX2xpc3QgeHMgaW5cbiAgY29uY2F0X21hcCB+ZjooZnVuICgpIC0+IHMpIChyZXBlYXQgKCkpXG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3Qgc2Egc2IgPSBjb25jYXRfbWFwIHNhIH5mOihmdW4gYSAtPiB6aXAgKHJlcGVhdCBhKSBzYilcbmxldCBzaW5nbGV0b24geCA9IHJldHVybiB4XG5cbmxldCBkZWxheWVkX2ZvbGQgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmZpbmlzaCB+ZjooZnVuIGFjYyBvcHRpb24gfmsgLT5cbiAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiBrIGFjY1xuICAgIHwgU29tZSBhIC0+IGYgYWNjIGEgfmspXG47O1xuXG5sZXQgZm9sZF9tIH5iaW5kIH5yZXR1cm4gdCB+aW5pdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdFxuICAgIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBiaW5kIChyZXR1cm4gYWNjKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGFjYyBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgaXRlcl9tIH5iaW5kIH5yZXR1cm4gdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdDooKVxuICAgIH5mOihmdW4gKCkgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiAoKSkgfmY6a1xuICAgICAgfCBTb21lIGEgLT4gYmluZCAoZiBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgZm9sZF91bnRpbCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgYWNjID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKCdhLCAnYikgQ29udGludWVfb3Jfc3RvcC50KSB3aXRoXG4gICAgICAgfCBTdG9wIHggLT4geFxuICAgICAgIHwgQ29udGludWUgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHQgZiBpbml0XG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgcyB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IFJlc3VsdC5yZXR1cm4gYWNjXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKF8sIF8pIFJlc3VsdC50KSB3aXRoXG4gICAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICAgIHwgT2sgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHQgZiBpbml0XG47O1xuXG5sZXQgZm9yY2VfZWFnZXJseSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxuXG5sZXQgbWVtb2l6ZSAodHlwZSBhKSAoU2VxdWVuY2UgKHMsIG5leHQpKSA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgb2YgKGEsIHQpIFN0ZXAudCBMYXp5LnRcbiAgZW5kXG4gIGluXG4gIGxldCByZWMgbWVtb2l6ZSBzID0gTS5UIChsYXp5IChmaW5kX3N0ZXAgcykpXG4gIGFuZCBmaW5kX3N0ZXAgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzIC0+IGZpbmRfc3RlcCBzXG4gICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIG1lbW9pemUgcylcbiAgaW5cbiAgU2VxdWVuY2UgKG1lbW9pemUgcywgZnVuIChNLlQgbCkgLT4gTGF6eS5mb3JjZSBsKVxuOztcblxubGV0IGRyb3BfZWFnZXJseSBzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpIH5sZW4gcyBuZXh0ID1cbiAgICBpZiBpID49IGxlblxuICAgIHRoZW4gU2VxdWVuY2UgKHMsIG5leHQpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGVtcHR5XG4gICAgICB8IFNraXAgcyAtPiBsb29wIGkgfmxlbiBzIG5leHRcbiAgICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgKGkgKyAxKSB+bGVuIHMgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgMCB+bGVuIHMgbmV4dFxuOztcblxubGV0IGRyb3Bfd2hpbGVfb3B0aW9uIChTZXF1ZW5jZSAocywgbmV4dCkpIH5mID1cbiAgbGV0IHJlYyBsb29wIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHNcbiAgICB8IFlpZWxkICh4LCBzKSAtPiBpZiBmIHggdGhlbiBsb29wIHMgZWxzZSBTb21lICh4LCBTZXF1ZW5jZSAocywgbmV4dCkpXG4gIGluXG4gIGxvb3Agc1xuOztcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgICAgfCBgTGVmdCBfIC0+IHIucmV0dXJuIDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gci5yZXR1cm4gKC0xKVxuICAgICAgfCBgQm90aCAodjEsIHYyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlbiByLnJldHVybiBjKTtcbiAgICAwKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPVxuICBmb3JfYWxsICh6aXBfZnVsbCB0MSB0MikgfmY6KGZ1bmN0aW9uXG4gICAgfCBgQm90aCAoYTEsIGEyKSAtPiBlcXVhbF9hIGExIGEyXG4gICAgfCBgTGVmdCBfIHwgYFJpZ2h0IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgcm91bmRfcm9iaW4gbGlzdCA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSAocywgZikgOjogdG9kb19zdGFjayAtPlxuICAgICAgKG1hdGNoIGYgcyB3aXRoXG4gICAgICAgfCBZaWVsZCAoeCwgcykgLT4gWWllbGQgKHgsICh0b2RvX3N0YWNrLCBTZXF1ZW5jZSAocywgZikgOjogZG9uZV9zdGFjaykpXG4gICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoU2VxdWVuY2UgKHMsIGYpIDo6IHRvZG9fc3RhY2ssIGRvbmVfc3RhY2spXG4gICAgICAgfCBEb25lIC0+IFNraXAgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2spKVxuICAgIHwgW10gLT4gaWYgTGlzdC5pc19lbXB0eSBkb25lX3N0YWNrIHRoZW4gRG9uZSBlbHNlIFNraXAgKExpc3QucmV2IGRvbmVfc3RhY2ssIFtdKVxuICBpblxuICBsZXQgc3RhdGUgPSBsaXN0LCBbXSBpblxuICBTZXF1ZW5jZSAoc3RhdGUsIG5leHQpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZSAoU2VxdWVuY2UgKHMxLCBmMSkpID1cbiAgbGV0IG5leHQgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSAoczIsIGYyKSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZjIgczIgd2l0aFxuICAgICAgIHwgWWllbGQgKHgsIHMyKSAtPiBZaWVsZCAoeCwgKHRvZG9fc3RhY2ssIFNlcXVlbmNlIChzMiwgZjIpIDo6IGRvbmVfc3RhY2ssIHMxKSlcbiAgICAgICB8IFNraXAgczIgLT4gU2tpcCAodG9kb19zdGFjaywgU2VxdWVuY2UgKHMyLCBmMikgOjogZG9uZV9zdGFjaywgczEpXG4gICAgICAgfCBEb25lIC0+IFNraXAgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxKSlcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggZjEgczEsIGRvbmVfc3RhY2sgd2l0aFxuICAgICAgIHwgWWllbGQgKHQsIHMxKSwgXyAtPiBTa2lwIChMaXN0LnJldiAodCA6OiBkb25lX3N0YWNrKSwgW10sIHMxKVxuICAgICAgIHwgU2tpcCBzMSwgXyAtPiBTa2lwIChMaXN0LnJldiBkb25lX3N0YWNrLCBbXSwgczEpXG4gICAgICAgfCBEb25lLCBfIDo6IF8gLT4gU2tpcCAoTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxKVxuICAgICAgIHwgRG9uZSwgW10gLT4gRG9uZSlcbiAgaW5cbiAgbGV0IHN0YXRlID0gW10sIFtdLCBzMSBpblxuICBTZXF1ZW5jZSAoc3RhdGUsIG5leHQpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZWRfY2FydGVzaWFuX3Byb2R1Y3QgczEgczIgPVxuICBtYXAgczEgfmY6KGZ1biB4MSAtPiBtYXAgczIgfmY6KGZ1biB4MiAtPiB4MSwgeDIpKSB8PiBpbnRlcmxlYXZlXG47O1xuXG5sZXQgb2Zfc2VxIChzZXEgOiBfIENhbWwuU2VxLnQpID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6c2VxIH5mOihmdW4gc2VxIC0+XG4gICAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBEb25lXG4gICAgfCBDb25zIChoZCwgdGwpIC0+IFlpZWxkIChoZCwgdGwpKVxuOztcblxubGV0IHRvX3NlcSAoU2VxdWVuY2UgKHN0YXRlLCBuZXh0KSkgPVxuICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgIG1hdGNoIG5leHQgc3RhdGUgd2l0aFxuICAgIHwgRG9uZSAtPiBDYW1sLlNlcS5OaWxcbiAgICB8IFNraXAgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgIHwgWWllbGQgKGhkLCBzdGF0ZSkgLT4gQ2FtbC5TZXEuQ29ucyAoaGQsIGZ1biAoKSAtPiBsb29wIHN0YXRlKVxuICBpblxuICBmdW4gKCkgLT4gbG9vcCBzdGF0ZVxuOztcblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlICdlbHQgc3RlcHMgPSBXcmFwIG9mICgnZWx0LCB1bml0IC0+ICdlbHQgc3RlcHMpIFN0ZXAudFxuXG4gIGxldCB1bndyYXAgKFdyYXAgc3RlcCkgPSBzdGVwXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2VsdCkgdCA9ICgnYSAtPiAnZWx0IHN0ZXBzKSAtPiAnZWx0IHN0ZXBzXG5cbiAgICBsZXQgcmV0dXJuIHggayA9IGsgeFxuXG4gICAgbGV0IGJpbmQgbSB+ZiBrID1cbiAgICAgIG0gKGZ1biBhIC0+XG4gICAgICAgIGxldCBtJyA9IGYgYSBpblxuICAgICAgICBtJyBrKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIG0gfmYgayA9IG0gKGZ1biBhIC0+IGsgKGYgYSkpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIE1vbmFkLk1ha2UyIChUKVxuXG4gIGxldCB5aWVsZCBlIGsgPSBXcmFwIChZaWVsZCAoZSwgaykpXG4gIGxldCB0b19zdGVwcyB0ID0gdCAoZnVuICgpIC0+IFdyYXAgRG9uZSlcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGRlbGF5ZWRfZm9sZFxuICAgICAgc2VxdWVuY2VcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZjooZnVuICgpIHggfmsgZiAtPiBXcmFwIChZaWVsZCAoeCwgZnVuICgpIC0+IGsgKCkgZikpKVxuICAgICAgfmZpbmlzaDpyZXR1cm5cbiAgOztcblxuICBsZXQgcnVuIHQgPVxuICAgIGxldCBpbml0ICgpID0gdG9fc3RlcHMgdCBpblxuICAgIGxldCBmIHRodW5rID0gdW53cmFwICh0aHVuayAoKSkgaW5cbiAgICB1bmZvbGRfc3RlcCB+aW5pdCB+ZlxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXJyYXkwXG5cbnR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX2FycmF5XG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gYXJyYXlfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfYXJyYXlcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gYXJyYXlfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbigqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSBuZXcgaW4tcGxhY2UsIGNvbnN0YW50IGhlYXAgc29ydGluZyBhbGdvcml0aG0gdG8gcmVwbGFjZSB0aGVcbiAgIG9uZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMuICBJdHMgb25seSBwdXJwb3NlIGlzIHRvIGJlIGZhc3RlciAoaG9wZWZ1bGx5XG4gICBzdHJpY3RseSBmYXN0ZXIpIHRoYW4gdGhlIGJhc2Ugc29ydCBhbmQgc3RhYmxlX3NvcnQuXG5cbiAgIEF0IGEgaGlnaCBsZXZlbCB0aGUgYWxnb3JpdGhtIGlzOlxuICAgLSBwaWNrIHR3byBwaXZvdCBwb2ludHMgYnk6XG4gICAtIHBpY2sgNSBhcmJpdHJhcnkgZWxlbWVudHMgZnJvbSB0aGUgYXJyYXlcbiAgIC0gc29ydCB0aGVtIHdpdGhpbiB0aGUgYXJyYXlcbiAgIC0gdGFrZSB0aGUgZWxlbWVudHMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIG1pZGRsZSBlbGVtZW50IG9mIHRoZSBzb3J0IGFzIHRoZSBwaXZvdHNcbiAgIC0gc29ydCB0aGUgYXJyYXkgd2l0aDpcbiAgIC0gYWxsIGVsZW1lbnRzIGxlc3MgdGhhbiBwaXZvdDEgdG8gdGhlIGxlZnQgKHJhbmdlIDEpXG4gICAtIGFsbCBlbGVtZW50cyA+PSBwaXZvdDEgYW5kIDw9IHBpdm90MiBpbiB0aGUgbWlkZGxlIChyYW5nZSAyKVxuICAgLSBhbGwgZWxlbWVudHMgPiBwaXZvdDIgdG8gdGhlIHJpZ2h0IChyYW5nZSAzKVxuICAgLSBpZiBwaXZvdDEgYW5kIHBpdm90MiBhcmUgZXF1YWwsIHRoZW4gdGhlIG1pZGRsZSByYW5nZSBpcyBzb3J0ZWQsIHNvIGlnbm9yZSBpdFxuICAgLSByZWN1cnNlIGludG8gcmFuZ2UgMSwgMiAoaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIHVuZXF1YWwpLCBhbmQgM1xuICAgLSBkdXJpbmcgcmVjdXJzaW9uIHRoZXJlIGFyZSB0d28gaW5mbGVjdGlvbiBwb2ludHM6XG4gICAtIGlmIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IHJhbmdlIGlzIHNtYWxsLCB1c2UgaW5zZXJ0aW9uIHNvcnQgdG8gc29ydCBpdFxuICAgLSBpZiB0aGUgc3RhY2sgZGVwdGggaXMgbGFyZ2UsIHNvcnQgdGhlIHJhbmdlIHdpdGggaGVhcC1zb3J0IHRvIGF2b2lkIG5eMiB3b3JzdC1jYXNlXG4gICAgIGJlaGF2aW9yXG5cbiAgIFNlZSB0aGUgZm9sbG93aW5nIGZvciBtb3JlIGluZm9ybWF0aW9uOlxuICAgLSBcIkR1YWwtUGl2b3QgUXVpY2tzb3J0XCIgYnkgVmxhZGltaXIgWWFyb3NsYXZza2l5LlxuICAgICBBdmFpbGFibGUgYXRcbiAgICAgaHR0cDovL3d3dy5rcmljaGUuY29tLmFyL3Jvb3QvcHJvZ3JhbW1pbmcvc3BhY2VUaW1lQ29tcGxleGl0eS9EdWFsUGl2b3RRdWlja3NvcnQucGRmXG4gICAtIFwiUXVpY2tzb3J0IGlzIE9wdGltYWxcIiBieSBTZWRnZXdpY2sgYW5kIEJlbnRsZXkuXG4gICAgIFNsaWRlcyBhdCBodHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvfnJzL3RhbGtzL1F1aWNrc29ydElzT3B0aW1hbC5wZGZcbiAgIC0gaHR0cDovL3d3dy5zb3J0aW5nLWFsZ29yaXRobXMuY29tL3F1aWNrLXNvcnQtMy13YXkgKilcblxubW9kdWxlIFNvcnQgPSBzdHJ1Y3RcbiAgKCogRm9yIHRoZSBzYWtlIG9mIHNwZWVkIHdlIGNvdWxkIHVzZSB1bnNhZmUgZ2V0L3NldCB0aHJvdWdob3V0LCBidXQgc3BlZWQgdGVzdHMgZG9uJ3RcbiAgICAgc2hvdyBhIHNpZ25pZmljYW50IGltcHJvdmVtZW50LiAqKVxuICBsZXQgZ2V0ID0gZ2V0XG4gIGxldCBzZXQgPSBzZXRcblxuICBsZXQgc3dhcCBhcnIgaSBqID1cbiAgICBsZXQgdG1wID0gZ2V0IGFyciBpIGluXG4gICAgc2V0IGFyciBpIChnZXQgYXJyIGopO1xuICAgIHNldCBhcnIgaiB0bXBcbiAgOztcblxuICBtb2R1bGUgdHlwZSBTb3J0ID0gc2lnXG4gICAgdmFsIHNvcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAgIC0+IGxlZnQ6aW50ICgqIGxlZnRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiByaWdodDppbnQgKCogcmlnaHRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiB1bml0XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zZXJ0aW9uX3NvcnQgKilcbiAgbW9kdWxlIEluc2VydGlvbl9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgKCogbG9vcCBpbnZhcmlhbnQ6XG4gICAgICAgICBbYXJyXSBpcyBzb3J0ZWQgZnJvbSBbbGVmdF0gdG8gW3BvcyAtIDFdLCBpbmNsdXNpdmUgKilcbiAgICAgIGZvciBwb3MgPSBsZWZ0ICsgMSB0byByaWdodCBkb1xuICAgICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4gaS0xXSBpcyBzb3J0ZWRcbiAgICAgICAgICAgMi4gIHRoZSBzdWJhcnJheSBhcnJbaSsxIC4uIHBvc10gaXMgc29ydGVkIGFuZCBjb250YWlucyBvbmx5IGVsZW1lbnRzID4gdlxuICAgICAgICAgICAzLiAgYXJyW2ldIG1heSBiZSB0aG91Z2h0IG9mIGFzIGNvbnRhaW5pbmcgdlxuXG4gICAgICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFsbG9jYXRlIGEgY2xvc3VyZSwgYnV0IGlzIGxlZnQgaW4gdGhlIGZvclxuICAgICAgICAgICBsb29wIGZvciB0aGUgcmVhZGFiaWxpdHkgb2YgdGhlIGRvY3VtZW50YXRpb24uICopXG4gICAgICAgIGxldCByZWMgbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaSB2ID1cbiAgICAgICAgICBsZXQgaV9uZXh0ID0gaSAtIDEgaW5cbiAgICAgICAgICBpZiBpX25leHQgPj0gbGVmdCAmJiBjb21wYXJlIChnZXQgYXJyIGlfbmV4dCkgdiA+IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHNldCBhcnIgaSAoZ2V0IGFyciBpX25leHQpO1xuICAgICAgICAgICAgbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaV9uZXh0IHYpXG4gICAgICAgICAgZWxzZSBpXG4gICAgICAgIGluXG4gICAgICAgIGxldCB2ID0gZ2V0IGFyciBwb3MgaW5cbiAgICAgICAgbGV0IGZpbmFsX3BvcyA9IGxvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIHBvcyB2IGluXG4gICAgICAgIHNldCBhcnIgZmluYWxfcG9zIHZcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlYXBzb3J0ICopXG4gIG1vZHVsZSBIZWFwX3NvcnQgOiBTb3J0ID0gc3RydWN0XG4gICAgKCogbG9vcCBpbnZhcmlhbnQ6XG4gICAgICAgcm9vdCdzIGNoaWxkcmVuIGFyZSBib3RoIGVpdGhlciByb290cyBvZiBtYXgtaGVhcHMgb3IgPiByaWdodCAqKVxuICAgIGxldCByZWMgaGVhcGlmeSBhcnIgfmNvbXBhcmUgcm9vdCB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHJlbGF0aXZlX3Jvb3QgPSByb290IC0gbGVmdCBpblxuICAgICAgbGV0IGxlZnRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDEgaW5cbiAgICAgIGxldCByaWdodF9jaGlsZCA9ICgyICogcmVsYXRpdmVfcm9vdCkgKyBsZWZ0ICsgMiBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiBsZWZ0X2NoaWxkIDw9IHJpZ2h0ICYmIGNvbXBhcmUgKGdldCBhcnIgbGVmdF9jaGlsZCkgKGdldCBhcnIgcm9vdCkgPiAwXG4gICAgICAgIHRoZW4gbGVmdF9jaGlsZFxuICAgICAgICBlbHNlIHJvb3RcbiAgICAgIGluXG4gICAgICBsZXQgbGFyZ2VzdCA9XG4gICAgICAgIGlmIHJpZ2h0X2NoaWxkIDw9IHJpZ2h0ICYmIGNvbXBhcmUgKGdldCBhcnIgcmlnaHRfY2hpbGQpIChnZXQgYXJyIGxhcmdlc3QpID4gMFxuICAgICAgICB0aGVuIHJpZ2h0X2NoaWxkXG4gICAgICAgIGVsc2UgbGFyZ2VzdFxuICAgICAgaW5cbiAgICAgIGlmIGxhcmdlc3QgPD4gcm9vdFxuICAgICAgdGhlbiAoXG4gICAgICAgIHN3YXAgYXJyIHJvb3QgbGFyZ2VzdDtcbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgbGFyZ2VzdCB+bGVmdCB+cmlnaHQpXG4gICAgOztcblxuICAgIGxldCBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgKCogRWxlbWVudHMgaW4gdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBhcnJheSBhcmUgYWxyZWFkeSBoZWFwcyBvZiBzaXplIDEuICBXZSBtb3ZlXG4gICAgICAgICB0aHJvdWdoIHRoZSBmaXJzdCBoYWxmIG9mIHRoZSBhcnJheSBmcm9tIGJhY2sgdG8gZnJvbnQgZXhhbWluaW5nIHRoZSBlbGVtZW50IGF0XG4gICAgICAgICBoYW5kLCBhbmQgdGhlIGxlZnQgYW5kIHJpZ2h0IGNoaWxkcmVuLCBmaXhpbmcgdGhlIGhlYXAgcHJvcGVydHkgYXMgd2UgZ28uICopXG4gICAgICBmb3IgaSA9IChsZWZ0ICsgcmlnaHQpIC8gMiBkb3dudG8gbGVmdCBkb1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBpIH5sZWZ0IH5yaWdodFxuICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGJ1aWxkX2hlYXAgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodDtcbiAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4uIGldIGlzIGEgbWF4LWhlYXAgSFxuICAgICAgICAgMi4gIHRoZSBzdWJhcnJheSBhcnJbaSsxIC4uLiByaWdodF0gaXMgc29ydGVkIChjYWxsIGl0IFMpXG4gICAgICAgICAzLiAgZXZlcnkgZWxlbWVudCBvZiBIIGlzIGxlc3MgdGhhbiBldmVyeSBlbGVtZW50IG9mIFMgKilcbiAgICAgIGZvciBpID0gcmlnaHQgZG93bnRvIGxlZnQgKyAxIGRvXG4gICAgICAgIHN3YXAgYXJyIGxlZnQgaTtcbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgbGVmdCB+bGVmdCB+cmlnaHQ6KGkgLSAxKVxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50cm9zb3J0ICopXG4gIG1vZHVsZSBJbnRyb19zb3J0IDogc2lnXG4gICAgaW5jbHVkZSBTb3J0XG5cbiAgICB2YWwgZml2ZV9lbGVtZW50X3NvcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmUgbTEgbTIgbTMgbTQgbTUgPVxuICAgICAgbGV0IGNvbXBhcmVfYW5kX3N3YXAgaSBqID1cbiAgICAgICAgaWYgY29tcGFyZSAoZ2V0IGFyciBpKSAoZ2V0IGFyciBqKSA+IDAgdGhlbiBzd2FwIGFyciBpIGpcbiAgICAgIGluXG4gICAgICAoKiBPcHRpbWFsIDUtZWxlbWVudCBzb3J0aW5nIG5ldHdvcms6XG5cbiAgICAgICAgIHt2XG4gICAgICAgICAgICAxLS1vLS0tLS1vLS0tLS1vLS0tLS0tLS0tLS0tLS0xXG4gICAgICAgICAgICAgICB8ICAgICB8ICAgICB8XG4gICAgICAgICAgICAyLS1vLS0tLS18LS1vLS18LS0tLS1vLS1vLS0tLS0yXG4gICAgICAgICAgICAgICAgICAgICB8ICB8ICB8ICAgICB8ICB8XG4gICAgICAgICAgICAzLS0tLS0tLS1vLS1vLS18LS1vLS18LS1vLS0tLS0zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICB8XG4gICAgICAgICAgICA0LS0tLS1vLS0tLS0tLS1vLS1vLS18LS0tLS1vLS00XG4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICB8XG4gICAgICAgICAgICA1LS0tLS1vLS0tLS0tLS0tLS0tLS1vLS0tLS1vLS01XG4gICAgICAgICAgdn0gKilcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTI7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG00IG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG00O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMyBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTU7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNVxuICAgIDs7XG5cbiAgICAoKiBjaG9vc2UgcGl2b3RzIGZvciB0aGUgYXJyYXkgYnkgc29ydGluZyA1IGVsZW1lbnRzIGFuZCBleGFtaW5pbmcgdGhlIGNlbnRlciB0aHJlZVxuICAgICAgIGVsZW1lbnRzLiAgVGhlIGdvYWwgaXMgdG8gY2hvb3NlIHR3byBwaXZvdHMgdGhhdCB3aWxsIGVpdGhlcjpcbiAgICAgICAtIGJyZWFrIHRoZSByYW5nZSB1cCBpbnRvIDMgZXZlbiBwYXJ0aXRpb25zXG4gICAgICAgICBvclxuICAgICAgIC0gZWxpbWluYXRlIGEgY29tbW9ubHkgYXBwZWFyaW5nIGVsZW1lbnQgYnkgc29ydGluZyBpdCBpbnRvIHRoZSBjZW50ZXIgcGFydGl0aW9uXG4gICAgICAgICBieSBpdHNlbGZcbiAgICAgICAgIFRvIHRoaXMgZW5kIHdlIGxvb2sgYXQgdGhlIGNlbnRlciAzIGVsZW1lbnRzIG9mIHRoZSA1IGFuZCByZXR1cm4gcGFpcnMgb2YgZXF1YWxcbiAgICAgICAgIGVsZW1lbnRzIG9yIHRoZSB3aWRlc3QgcmFuZ2UgKilcbiAgICBsZXQgY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBzaXh0aCA9IChyaWdodCAtIGxlZnQpIC8gNiBpblxuICAgICAgbGV0IG0xID0gbGVmdCArIHNpeHRoIGluXG4gICAgICBsZXQgbTIgPSBtMSArIHNpeHRoIGluXG4gICAgICBsZXQgbTMgPSBtMiArIHNpeHRoIGluXG4gICAgICBsZXQgbTQgPSBtMyArIHNpeHRoIGluXG4gICAgICBsZXQgbTUgPSBtNCArIHNpeHRoIGluXG4gICAgICBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmUgbTEgbTIgbTMgbTQgbTU7XG4gICAgICBsZXQgbTJfdmFsID0gZ2V0IGFyciBtMiBpblxuICAgICAgbGV0IG0zX3ZhbCA9IGdldCBhcnIgbTMgaW5cbiAgICAgIGxldCBtNF92YWwgPSBnZXQgYXJyIG00IGluXG4gICAgICBpZiBjb21wYXJlIG0yX3ZhbCBtM192YWwgPSAwXG4gICAgICB0aGVuIG0yX3ZhbCwgbTNfdmFsLCB0cnVlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgbTNfdmFsIG00X3ZhbCA9IDBcbiAgICAgIHRoZW4gbTNfdmFsLCBtNF92YWwsIHRydWVcbiAgICAgIGVsc2UgbTJfdmFsLCBtNF92YWwsIGZhbHNlXG4gICAgOztcblxuICAgIGxldCBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBwaXZvdDEsIHBpdm90MiwgcGl2b3RzX2VxdWFsID0gY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgbGVmdCA8PSBsIDwgciA8PSByaWdodFxuICAgICAgICAgMi4gIGwgPD0gcCA8PSByXG4gICAgICAgICAzLiAgbCA8PSB4IDwgcCAgICAgaW1wbGllcyBhcnJbeF0gPj0gcGl2b3QxXG4gICAgICAgICBhbmQgYXJyW3hdIDw9IHBpdm90MlxuICAgICAgICAgNC4gIGxlZnQgPD0geCA8IGwgIGltcGxpZXMgYXJyW3hdIDwgcGl2b3QxXG4gICAgICAgICA1LiAgciA8IHggPD0gcmlnaHQgaW1wbGllcyBhcnJbeF0gPiBwaXZvdDIgKilcbiAgICAgIGxldCByZWMgbG9vcCBsIHAgciA9XG4gICAgICAgIGxldCBwdiA9IGdldCBhcnIgcCBpblxuICAgICAgICBpZiBjb21wYXJlIHB2IHBpdm90MSA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgc3dhcCBhcnIgcCBsO1xuICAgICAgICAgIGNvbnQgKGwgKyAxKSAocCArIDEpIHIpXG4gICAgICAgIGVsc2UgaWYgY29tcGFyZSBwdiBwaXZvdDIgPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIGxvb3AgaW52YXJpYW50czogIHNhbWUgYXMgdGhvc2Ugb2YgdGhlIG91dGVyIGxvb3AgKilcbiAgICAgICAgICBsZXQgcmVjIHNjYW5fYmFja3dhcmRzIHIgPVxuICAgICAgICAgICAgaWYgciA+IHAgJiYgY29tcGFyZSAoZ2V0IGFyciByKSBwaXZvdDIgPiAwIHRoZW4gc2Nhbl9iYWNrd2FyZHMgKHIgLSAxKSBlbHNlIHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByID0gc2Nhbl9iYWNrd2FyZHMgciBpblxuICAgICAgICAgIHN3YXAgYXJyIHIgcDtcbiAgICAgICAgICBjb250IGwgcCAociAtIDEpKVxuICAgICAgICBlbHNlIGNvbnQgbCAocCArIDEpIHJcbiAgICAgIGFuZCBjb250IGwgcCByID0gaWYgcCA+IHIgdGhlbiBsLCByIGVsc2UgbG9vcCBsIHAgciBpblxuICAgICAgbGV0IGwsIHIgPSBjb250IGxlZnQgbGVmdCByaWdodCBpblxuICAgICAgbCwgciwgcGl2b3RzX2VxdWFsXG4gICAgOztcblxuICAgIGxldCByZWMgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IGxlbiA9IHJpZ2h0IC0gbGVmdCArIDEgaW5cbiAgICAgICgqIFRoaXMgdGFrZXMgY2FyZSBvZiBzb21lIGVkZ2UgY2FzZXMsIHN1Y2ggYXMgbGVmdCA+IHJpZ2h0IG9yIHZlcnkgc2hvcnQgYXJyYXlzLFxuICAgICAgICAgc2luY2UgSW5zZXJ0aW9uX3NvcnQuc29ydCBoYW5kbGVzIHRoZXNlIGNhc2VzIHByb3Blcmx5LiAgVGh1cyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICBtYWtlIHN1cmUgdGhhdCBsZWZ0IGFuZCByaWdodCBhcmUgdmFsaWQgaW4gcmVjdXJzaXZlIGNhbGxzLiAqKVxuICAgICAgaWYgbGVuIDw9IDMyXG4gICAgICB0aGVuIEluc2VydGlvbl9zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgICAgZWxzZSBpZiBtYXhfZGVwdGggPCAwXG4gICAgICB0aGVuIEhlYXBfc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbWF4X2RlcHRoID0gbWF4X2RlcHRoIC0gMSBpblxuICAgICAgICBsZXQgbCwgciwgbWlkZGxlX3NvcnRlZCA9IGR1YWxfcGl2b3RfcGFydGl0aW9uIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgaW5cbiAgICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ6KGwgLSAxKTtcbiAgICAgICAgaWYgbm90IG1pZGRsZV9zb3J0ZWQgdGhlbiBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OmwgfnJpZ2h0OnI7XG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQ6KHIgKyAxKSB+cmlnaHQpXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IGhlYXBfc29ydF9zd2l0Y2hfZGVwdGggPVxuICAgICAgICAoKiBXZSBiYWlsIG91dCB0byBoZWFwIHNvcnQgYXQgYSByZWN1cnNpb24gZGVwdGggb2YgMzIuIEdOVSBpbnRyb3NvcnQgdXNlcyAybGcobikuXG4gICAgICAgICAgIFRoZSBleHBlY3RlZCByZWN1cnNpb24gZGVwdGggZm9yIHBlcmZlY3QgMy13YXkgc3BsaXRzIGlzIGxvZ18zKG4pLlxuXG4gICAgICAgICAgIFVzaW5nIDMyIG1lYW5zIGEgYmFsYW5jZWQgMy13YXkgc3BsaXQgd291bGQgd29yayB1cCB0byAzXjMyIGVsZW1lbnRzIChyb3VnaGx5XG4gICAgICAgICAgIDJeNTAgb3IgMTBeMTUpLiBHTlUgcmVhY2hlcyBhIGRlcHRoIG9mIDMyIGF0IDY1NTM2IGVsZW1lbnRzLlxuXG4gICAgICAgICAgIEZvciBzbWFsbCBhcnJheXMsIHRoaXMgbWFrZXMgdXMgbGVzcyBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0LCBidXQgdGhlXG4gICAgICAgICAgIDMyKk4gY29zdCBiZWZvcmUgd2UgZG8gaXMgbm90IHRoYXQgbXVjaC5cblxuICAgICAgICAgICBGb3IgbGFyZ2UgYXJyYXlzLCB0aGlzIG1lYW5zIHdlIGFyZSBtb3JlIGxpa2VseSB0byBiYWlsIG91dCB0byBoZWFwIHNvcnQgYXRcbiAgICAgICAgICAgc29tZSBwb2ludCBpZiB3ZSBnZXQgc29tZSBiYWQgc3BsaXRzIG9yIGlmIHRoZSBhcnJheSBpcyBodWdlLiBCdXQgdGhhdCdzIG9ubHkgYVxuICAgICAgICAgICBjb25zdGFudCBmYWN0b3IgY29zdCBpbiB0aGUgZmluYWwgc3RhZ2VzIG9mIHJlY3Vyc2lvbi5cblxuICAgICAgICAgICBBbGwgaW4gYWxsLCB0aGlzIHNlZW1zIHRvIGJlIGEgc21hbGwgdHJhZGVvZmYgYW5kIGF2b2lkcyBwYXlpbmcgYSBjb3N0IHRvXG4gICAgICAgICAgIGNvbXB1dGUgYSBsb2dhcml0aG0gYXQgdGhlIHN0YXJ0LiAqKVxuICAgICAgICAzMlxuICAgICAgaW5cbiAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGg6aGVhcF9zb3J0X3N3aXRjaF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgc29ydCA/cG9zID9sZW4gYXJyIH5jb21wYXJlID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIGFycilcbiAgaW5cbiAgU29ydC5JbnRyb19zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0OnBvcyB+cmlnaHQ6KHBvcyArIGxlbiAtIDEpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IHRcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBpc19zb3J0ZWQgdCB+Y29tcGFyZSA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+IDAgJiYgIXJlc3VsdCBkb1xuICAgIGxldCBlbHRfaSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgIGxldCBlbHRfaV9taW51c18xID0gdW5zYWZlX2dldCB0ICghaSAtIDEpIGluXG4gICAgaWYgY29tcGFyZSBlbHRfaV9taW51c18xIGVsdF9pID4gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPj0gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lcmdlIGExIGEyIH5jb21wYXJlID1cbiAgbGV0IGwxID0gQXJyYXkubGVuZ3RoIGExIGluXG4gIGxldCBsMiA9IEFycmF5Lmxlbmd0aCBhMiBpblxuICBpZiBsMSA9IDBcbiAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbDIgPSAwXG4gIHRoZW4gY29weSBhMVxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTIgMCkgKHVuc2FmZV9nZXQgYTEgKGwxIC0gMSkpID49IDBcbiAgdGhlbiBhcHBlbmQgYTEgYTJcbiAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGExIDApICh1bnNhZmVfZ2V0IGEyIChsMiAtIDEpKSA+IDBcbiAgdGhlbiBhcHBlbmQgYTIgYTFcbiAgZWxzZSAoXG4gICAgbGV0IGxlbiA9IGwxICsgbDIgaW5cbiAgICBsZXQgbWVyZ2VkID0gY3JlYXRlIH5sZW4gKHVuc2FmZV9nZXQgYTEgMCkgaW5cbiAgICBsZXQgYTFfaW5kZXggPSByZWYgMCBpblxuICAgIGxldCBhMl9pbmRleCA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCB1c2VfYTEgPVxuICAgICAgICBpZiBsMSA9ICFhMV9pbmRleFxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgaWYgbDIgPSAhYTJfaW5kZXhcbiAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgIGVsc2UgY29tcGFyZSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCkgPD0gMFxuICAgICAgaW5cbiAgICAgIGlmIHVzZV9hMVxuICAgICAgdGhlbiAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTEgIWExX2luZGV4KTtcbiAgICAgICAgYTFfaW5kZXggOj0gIWExX2luZGV4ICsgMSlcbiAgICAgIGVsc2UgKFxuICAgICAgICB1bnNhZmVfc2V0IG1lcmdlZCBpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCk7XG4gICAgICAgIGEyX2luZGV4IDo9ICFhMl9pbmRleCArIDEpXG4gICAgZG9uZTtcbiAgICBtZXJnZWQpXG47O1xuXG5sZXQgY29weV9tYXRyaXggPSBtYXAgfmY6Y29weVxuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGFjYyA6PSBmIGkgIWFjYyAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaWR4IGNvdW50IGEgLT4gaWYgZiBpZHggYSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuOztcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAodG9fbGlzdCAobWFwIH5mIHQpKVxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcGkgfmYgdCkpXG5cbmxldCByZXZfaW5wbGFjZSB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICB3aGlsZSAhaSA8ICFqIGRvXG4gICAgc3dhcCB0ICFpICFqO1xuICAgIGluY3IgaTtcbiAgICBkZWNyIGpcbiAgZG9uZVxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IHQgPSBjb3B5IHQgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgYSA6OiBsIC0+XG4gICAgbGV0IGxlbiA9IDEgKyBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgICgqIFdlIHN0YXJ0IGF0IFtsZW4gLSAyXSBiZWNhdXNlIHdlIGFscmVhZHkgcHV0IFthXSBhdCBbdC4obGVuIC0gMSldLiAqKVxuICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIHQuKGkpIDwtIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgdFxuOztcblxuKCogW29mX2xpc3RfbWFwXSBhbmQgW29mX2xpc3RfcmV2X21hcF0gYXJlIGJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBPQ2FtbFxuICAgZGlzdHJpYnV0aW9uLiAqKVxuXG5sZXQgb2ZfbGlzdF9tYXAgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaGQpO1xuICAgICAgICBmaWxsIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgMSB0bFxuOztcblxubGV0IG9mX2xpc3RfbWFwaSB4cyB+ZiA9XG4gIG1hdGNoIHhzIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgYSA9IGNyZWF0ZSB+bGVuOigxICsgTGlzdC5sZW5ndGggdGwpIChmIDAgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGEgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaSBoZCk7XG4gICAgICAgIGZpbGwgYSAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIGEgMSB0bFxuOztcblxubGV0IG9mX2xpc3RfcmV2X21hcCB4cyB+ZiA9XG4gIGxldCB0ID0gb2ZfbGlzdF9tYXAgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2X21hcGkgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwaSB4cyB+ZiBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCByID0gcmVmIFt8fF0gaW5cbiAgbGV0IGsgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IHQgaSkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBpZiAhayA9IDAgdGhlbiByIDo9IGNyZWF0ZSB+bGVuOihsZW5ndGggdCkgYTtcbiAgICAgIHVuc2FmZV9zZXQgIXIgIWsgYTtcbiAgICAgIGluY3Iga1xuICBkb25lO1xuICBpZiAhayA9IGxlbmd0aCB0IHRoZW4gIXIgZWxzZSBpZiAhayA+IDAgdGhlbiBzdWIgfnBvczowIH5sZW46IWsgIXIgZWxzZSBbfHxdXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIF9pIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9vcHQgdCA9IGZpbHRlcl9tYXAgdCB+ZjpGbi5pZFxuXG5sZXQgcmFpc2VfbGVuZ3RoX21pc21hdGNoIG5hbWUgbjEgbjIgPVxuICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIHQxIHQyID1cbiAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yXG47O1xuXG5sZXQgaXRlcjJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5pdGVyMl9leG5cIiB0MSB0MjtcbiAgaXRlcmkgdDEgfmY6KGZ1biBpIHgxIC0+IGYgeDEgKHVuc2FmZV9nZXQgdDIgaSkpXG47O1xuXG5sZXQgbWFwMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5Lm1hcDJfZXhuXCIgdDEgdDI7XG4gIGluaXQgKGxlbmd0aCB0MSkgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpXG47O1xuXG5sZXQgZm9sZDJfZXhuIHQxIHQyIH5pbml0IH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5mb2xkMl9leG5cIiB0MSB0MjtcbiAgZm9sZGkgdDEgfmluaXQgfmY6KGZ1biBpIGFjIHggLT4gZiBhYyB4ICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxubGV0IGZpbHRlcmkgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxuXG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAhaSAodW5zYWZlX2dldCB0ICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9IGV4aXN0cyB0IH5mOihlcXVhbCBhKVxuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0ICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHMyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZXhpc3RzMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvcl9hbGwyX2V4blwiIHQxIHQyO1xuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQxIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0MSAhaSkgKHVuc2FmZV9nZXQgdDIgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXF1YWwgZXF1YWwgdDEgdDIgPSBsZW5ndGggdDEgPSBsZW5ndGggdDIgJiYgZm9yX2FsbDJfZXhuIHQxIHQyIH5mOmVxdWFsXG5cblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBmaW5kaV9pbnRlcm5hbCB0IH5mIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBpZl9ub3RfZm91bmQgKClcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgKG5vdCAhZm91bmQpICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGYgIWkgdmFsdWVcbiAgICAgIHRoZW4gKFxuICAgICAgICB2YWx1ZV9mb3VuZCA6PSB2YWx1ZTtcbiAgICAgICAgZm91bmQgOj0gdHJ1ZSlcbiAgICAgIGVsc2UgaW5jciBpXG4gICAgZG9uZTtcbiAgICBpZiAhZm91bmQgdGhlbiBpZl9mb3VuZCB+aTohaSB+dmFsdWU6IXZhbHVlX2ZvdW5kIGVsc2UgaWZfbm90X2ZvdW5kICgpKVxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBTb21lIChpLCB2YWx1ZSkpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBpLCB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZGlfZXhuOiBub3QgZm91bmRcIikpKVxuOztcblxubGV0IGZpbmRfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZjooZnVuIF9pIHggLT4gZiB4KVxuICAgIH5pZl9mb3VuZDooZnVuIH5pOl8gfnZhbHVlIC0+IHZhbHVlKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiByYWlzZSAoTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX2V4bjogbm90IGZvdW5kXCIpKSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPSBPcHRpb24ubWFwIChmaW5kaSB0IH5mOihmdW4gX2kgeCAtPiBmIHgpKSB+ZjooZnVuIChfaSwgeCkgLT4geClcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgIWkgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbiA8PSAxXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVzdWx0ID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgaSA9IHJlZiAxIGluXG4gICAgbGV0IHByZXYgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGN1ciA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgaWYgZXF1YWwgY3VyICFwcmV2XG4gICAgICB0aGVuIChcbiAgICAgICAgcmVzdWx0IDo9IFNvbWUgKCFwcmV2LCBjdXIpO1xuICAgICAgICBpIDo9IG4pXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJldiA6PSBjdXI7XG4gICAgICAgIGluY3IgaSlcbiAgICBkb25lO1xuICAgICFyZXN1bHQpXG47O1xuXG5sZXQgcmVkdWNlIHQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKVxuICAgIGRvbmU7XG4gICAgU29tZSAhcilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHQgfmYgPVxuICBtYXRjaCByZWR1Y2UgdCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkFycmF5LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcGVybXV0ZSA9IEFycmF5X3Blcm11dGUucGVybXV0ZVxuXG5sZXQgcmFuZG9tX2VsZW1lbnRfZXhuID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGFycmF5XCJcbiAgZWxzZSB0LihSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAobGVuZ3RoIHQpKVxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICB0cnkgU29tZSAocmFuZG9tX2VsZW1lbnRfZXhuIH5yYW5kb21fc3RhdGUgdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHppcCB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDIgdGhlbiBOb25lIGVsc2UgU29tZSAobWFwMl9leG4gdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpKVxuOztcblxubGV0IHppcF9leG4gdDEgdDIgPVxuICBpZiBsZW5ndGggdDEgPD4gbGVuZ3RoIHQyXG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS56aXBfZXhuXCJcbiAgZWxzZSBtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4Milcbjs7XG5cbmxldCB1bnppcCB0ID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuID0gMFxuICB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHgsIHkgPSB0LigwKSBpblxuICAgIGxldCByZXMxID0gY3JlYXRlIH5sZW46biB4IGluXG4gICAgbGV0IHJlczIgPSBjcmVhdGUgfmxlbjpuIHkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCB4LCB5ID0gdC4oaSkgaW5cbiAgICAgIHJlczEuKGkpIDwtIHg7XG4gICAgICByZXMyLihpKSA8LSB5XG4gICAgZG9uZTtcbiAgICByZXMxLCByZXMyKVxuOztcblxubGV0IHNvcnRlZF9jb3B5IHQgfmNvbXBhcmUgPVxuICBsZXQgdDEgPSBjb3B5IHQgaW5cbiAgc29ydCB0MSB+Y29tcGFyZTtcbiAgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICBsZXQgYm90aCA9IG1hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIEVpdGhlci5GaXJzdCB4IGVsc2UgRWl0aGVyLlNlY29uZCB4KSBpblxuICBsZXQgdHJ1ZXMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgeCAtPiBTb21lIHhcbiAgICAgIHwgU2Vjb25kIF8gLT4gTm9uZSlcbiAgaW5cbiAgbGV0IGZhbHNlcyA9XG4gICAgZmlsdGVyX21hcCBib3RoIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCBfIC0+IE5vbmVcbiAgICAgIHwgU2Vjb25kIHggLT4gU29tZSB4KVxuICBpblxuICB0cnVlcywgZmFsc2VzXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biBfaSB4IC0+IGYgeClcbmxldCBsYXN0IHQgPSB0LihsZW5ndGggdCAtIDEpXG5cbigqIENvbnZlcnQgdG8gYSBzZXF1ZW5jZSBidXQgZG9lcyBub3QgYXR0ZW1wdCB0byBwcm90ZWN0IGFnYWluc3QgbW9kaWZpY2F0aW9uXG4gICBpbiB0aGUgYXJyYXkuICopXG5sZXQgdG9fc2VxdWVuY2VfbXV0YWJsZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT5cbiAgICBpZiBpID49IGxlbmd0aCB0IHRoZW4gU2VxdWVuY2UuU3RlcC5Eb25lIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCAodC4oaSksIGkgKyAxKSlcbjs7XG5cbmxldCB0b19zZXF1ZW5jZSB0ID0gdG9fc2VxdWVuY2VfbXV0YWJsZSAoY29weSB0KVxuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgdDEgdDIgPVxuICBpZiBpc19lbXB0eSB0MSB8fCBpc19lbXB0eSB0MlxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IG4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbjoobjEgKiBuMikgKHQxLigwKSwgdDIuKDApKSBpblxuICAgIGxldCByID0gcmVmIDAgaW5cbiAgICBmb3IgaTEgPSAwIHRvIG4xIC0gMSBkb1xuICAgICAgZm9yIGkyID0gMCB0byBuMiAtIDEgZG9cbiAgICAgICAgdC4oIXIpIDwtIHQxLihpMSksIHQyLihpMik7XG4gICAgICAgIGluY3IgclxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCB0cmFuc3Bvc2UgdHQgPVxuICBpZiBsZW5ndGggdHQgPSAwXG4gIHRoZW4gU29tZSBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCB3aWR0aCA9IGxlbmd0aCB0dCBpblxuICAgIGxldCBkZXB0aCA9IGxlbmd0aCB0dC4oMCkgaW5cbiAgICBpZiBleGlzdHMgdHQgfmY6KGZ1biB0IC0+IGxlbmd0aCB0IDw+IGRlcHRoKVxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoaW5pdCBkZXB0aCB+ZjooZnVuIGQgLT4gaW5pdCB3aWR0aCB+ZjooZnVuIHcgLT4gdHQuKHcpLihkKSkpKSlcbjs7XG5cbmxldCB0cmFuc3Bvc2VfZXhuIHR0ID1cbiAgbWF0Y2ggdHJhbnNwb3NlIHR0IHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkudHJhbnNwb3NlX2V4blwiXG4gIHwgU29tZSB0dCcgLT4gdHQnXG47O1xuXG5pbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gW3x8XVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAobGVuZ3RoIHQgPiAwKTtcbiAgICAgICAgY3JlYXRlIH5sZW4gdC4oMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBTb3J0ID0gU29ydFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbigqIFdlIG1haW50YWluIHRoZSBwcm9wZXJ0eSB0aGF0IGFsbCB2YWx1ZXMgb2YgdHlwZSBbdF0gZG8gbm90IGhhdmUgdGhlIHRhZ1xuICAgW2RvdWJsZV9hcnJheV90YWddLiAgU29tZSBmdW5jdGlvbnMgYmVsb3cgYXNzdW1lIHRoaXMgaW4gb3JkZXIgdG8gYXZvaWQgdGVzdGluZyB0aGVcbiAgIHRhZywgYW5kIHdpbGwgc2VnZmF1bHQgaWYgdGhpcyBwcm9wZXJ0eSBkb2Vzbid0IGhvbGQuICopXG50eXBlIHQgPSBDYW1sLk9iai50IGFycmF5XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAoQ2FtbC5PYmoudGFnIChDYW1sLk9iai5yZXByIHQpIDw+IENhbWwuT2JqLmRvdWJsZV9hcnJheV90YWcpXG5sZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoICgqIHdvdWxkIGNoZWNrIGZvciBmbG9hdCBhcnJheXMgaW4gMzIgYml0LCBidXQgd2hhdGV2ZXIgKilcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgU2V4cC5BdG9tXG4gICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgXCI8T2JqX2FycmF5LnQgb2YgbGVuZ3RoIFwiOyBJbnQudG9fc3RyaW5nIChsZW5ndGggdCk7IFwiPlwiIF0pXG47O1xuXG5sZXQgemVyb19vYmogPSBDYW1sLk9iai5yZXByICgwIDogaW50KVxuXG4oKiBXZSBjYWxsIFtBcnJheS5jcmVhdGVdIHdpdGggYSB2YWx1ZSB0aGF0IGlzIG5vdCBhIGZsb2F0IHNvIHRoYXQgdGhlIGFycmF5IGRvZXNuJ3QgZ2V0XG4gICB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICopXG5sZXQgY3JlYXRlX3plcm8gfmxlbiA9IEFycmF5LmNyZWF0ZSB+bGVuIHplcm9fb2JqXG5sZXQgZW1wdHkgPSBbfHxdXG5cbnR5cGUgbm90X2FfZmxvYXQgPVxuICB8IE5vdF9hX2Zsb2F0XzBcbiAgfCBOb3RfYV9mbG9hdF8xIG9mIGludFxuXG5sZXQgX25vdF9hX2Zsb2F0XzAgPSBOb3RfYV9mbG9hdF8wXG5sZXQgX25vdF9hX2Zsb2F0XzEgPSBOb3RfYV9mbG9hdF8xIDQyXG5cbmxldCBnZXQgdCBpID1cbiAgKCogTWFrZSB0aGUgY29tcGlsZXIgYmVsaWV2ZSBbdF0gaXMgYW4gYXJyYXkgbm90IGNvbnRhaW5pbmcgZmxvYXRzIHNvIGl0IGRvZXMgbm90IGNoZWNrXG4gICAgIGlmIFt0XSBpcyB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICBJdCBpcyBOT1Qgb2sgdG8gdXNlIFtpbnQgYXJyYXldIHNpbmNlIChpZlxuICAgICB0aGlzIGZ1bmN0aW9uIGlzIGlubGluZWQgYW5kIHRoZSBhcnJheSBjb250YWlucyBpbi1oZWFwIGJveGVkIHZhbHVlcykgd3JvbmcgcmVnaXN0ZXJcbiAgICAgdHlwaW5nIG1heSByZXN1bHQsIGxlYWRpbmcgdG8gYSBmYWlsdXJlIHRvIHJlZ2lzdGVyIG5lY2Vzc2FyeSBHQyByb290cy4gKilcbiAgQ2FtbC5PYmoucmVwciAoKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkuKGkpIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXQgdCBpID1cbiAgKCogTWFrZSB0aGUgY29tcGlsZXIgYmVsaWV2ZSBbdF0gaXMgYW4gYXJyYXkgbm90IGNvbnRhaW5pbmcgZmxvYXRzIHNvIGl0IGRvZXMgbm90IGNoZWNrXG4gICAgIGlmIFt0XSBpcyB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICopXG4gIENhbWwuT2JqLnJlcHJcbiAgICAoQXJyYXkudW5zYWZlX2dldCAoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSBpIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogU2FtZSBjb21tZW50IGFzIFt1bnNhZmVfZ2V0XS4gU3lzLm9wYXF1ZV9pZGVudGl0eSBwcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbVxuICAgICBwb3RlbnRpYWxseSB3cm9uZ2x5IGd1ZXNzaW5nIHRoZSB0eXBlIG9mIHRoZSBhcnJheSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBlbGVtZW50LCB0aGF0XG4gICAgIGlzIHByZXZlbnQgdGhlIGltcGxpY2F0aW9uOiAoT2JqLnRhZyBvYmogPSBPYmouZG91YmxlX3RhZykgPT4gKE9iai50YWcgdCA9XG4gICAgIE9iai5kb3VibGVfYXJyYXlfdGFnKSB3aGljaCBmbGFtYmRhIGhhcyB0cmllZCBpbiB0aGUgcGFzdCAoYXQgbGVhc3QgdGhhdCdzIGFzc3VtaW5nXG4gICAgIHRoZSBjb21waWxlciByZXNwZWN0cyBTeXMub3BhcXVlX2lkZW50aXR5LCB3aGljaCBpcyBub3QgYWx3YXlzIHRoZSBjYXNlKS4gKilcbiAgQXJyYXkudW5zYWZlX3NldFxuICAgIChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpXG4gICAgaVxuICAgIChDYW1sLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogc2FtZSBhcyB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgYnV0IHNhZmUgKilcbiAgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkuKGkpXG4gIDwtIChDYW1sLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnQgPVxuICAoKiBUaGlzIHNraXBzIFtjYW1sX21vZGlmeV0sIHdoaWNoIGlzIE9LIGlmIGJvdGggdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmUgaW50ZWdlcnMuICopXG4gIEFycmF5LnVuc2FmZV9zZXQgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBpbnQgYXJyYXkpIGkgKFN5cy5vcGFxdWVfaWRlbnRpdHkgaW50KVxuOztcblxuKCogRm9yIFtzZXRdIGFuZCBbdW5zYWZlX3NldF0sIGlmIGEgcG9pbnRlciBpcyBpbnZvbHZlZCwgd2UgZmlyc3QgZG8gYSBwaHlzaWNhbC1lcXVhbGl0eVxuICAgdGVzdCB0byBzZWUgaWYgdGhlIHBvaW50ZXIgaXMgY2hhbmdpbmcuICBJZiBub3QsIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhlIFtzZXRdLCB3aGljaFxuICAgc2F2ZXMgYSBjYWxsIHRvIFtjYW1sX21vZGlmeV0uICBXZSB0aGluayB0aGlzIHBoeXNpY2FsLWVxdWFsaXR5IHRlc3QgaXMgd29ydGggaXRcbiAgIGJlY2F1c2UgaXQgaXMgdmVyeSBjaGVhcCAoYm90aCB2YWx1ZXMgYXJlIGFscmVhZHkgYXZhaWxhYmxlIGZyb20gdGhlIFtpc19pbnRdIHRlc3QpXG4gICBhbmQgYmVjYXVzZSBbY2FtbF9tb2RpZnldIGlzIGV4cGVuc2l2ZS4gKilcblxubGV0IHNldCB0IGkgb2JqID1cbiAgKCogV2UgdXNlIFtnZXRdIGZpcnN0IGJ1dCB0aGVuIHdlIHVzZSBbQXJyYXkudW5zYWZlX3NldF0gc2luY2Ugd2Uga25vdyB0aGF0IFtpXSBpc1xuICAgICB2YWxpZC4gKilcbiAgbGV0IG9sZF9vYmogPSBnZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqICYmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldCB0IGkgb2JqID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29iaiAmJiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9vYmogb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqICYmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHN3YXAgdCBpIGogPVxuICBsZXQgYSA9IGdldCB0IGkgaW5cbiAgbGV0IGIgPSBnZXQgdCBqIGluXG4gIHVuc2FmZV9zZXQgdCBpIGI7XG4gIHVuc2FmZV9zZXQgdCBqIGFcbjs7XG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgKCogSWYgd2UgY2FuLCB1c2UgW0FycmF5LmNyZWF0ZV0gZGlyZWN0bHkuICopXG4gIGlmIENhbWwuT2JqLnRhZyB4IDw+IENhbWwuT2JqLmRvdWJsZV90YWdcbiAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiB4XG4gIGVsc2UgKFxuICAgICgqIE90aGVyd2lzZSB1c2UgW2NyZWF0ZV96ZXJvXSBhbmQgc2V0IHRoZSBjb250ZW50cyAqKVxuICAgIGxldCB0ID0gY3JlYXRlX3plcm8gfmxlbiBpblxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeFxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCBzaW5nbGV0b24gb2JqID0gY3JlYXRlIH5sZW46MSBvYmpcblxuKCogUHJlLWNvbmRpdGlvbjogdC4oaSkgaXMgYW4gaW50ZWdlci4gKilcbmxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIG9iaiA9XG4gIGlmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZVxuICAgICgqIFt0LihpKV0gaXMgYW4gaW50ZWdlciBhbmQgW29ial0gaXMgbm90LCBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBpZiB0aGV5IGFyZVxuICAgICAgIGVxdWFsLiAqKVxuICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQgdCBpIGludCA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9sZF9vYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnRcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIGludClcbjs7XG5cbmxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciB0IGkgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIG5vdCAoQ2FtbC5PYmouaXNfaW50IG9sZF9vYmopIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciAwKVxuOztcblxuKCoqIFt1bnNhZmVfYmxpdF0gaXMgbGlrZSBbQXJyYXkuYmxpdF0sIGV4Y2VwdCBpdCB1c2VzIG91ciBvd24gZm9yLWxvb3AgdG8gYXZvaWRcbiAgICBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlLiAgSXRzIHBlcmZvcm1hbmNlIGlzIHN0aWxsIG5vdCBjb21wYXJhYmxlIHRvIGEgbWVtY3B5LiAqKVxubGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgKCogV2hlbiBbcGh5c19lcXVhbCBzcmMgZHN0XSwgd2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIFtkc3RfcG9zIDwgc3JjX3Bvc10gYW5kIGhhdmUgdGhlXG4gICAgIGZvciBsb29wIGdvIGluIHRoZSByaWdodCBkaXJlY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBvdmVyd3JpdGUgZGF0YSB0aGF0IHdlIHN0aWxsIG5lZWRcbiAgICAgdG8gcmVhZC4gIFdoZW4gW25vdCAocGh5c19lcXVhbCBzcmMgZHN0KV0sIGRvaW5nIHRoaXMgaXMgaGFybWxlc3MuICBGcm9tIGFcbiAgICAgbWVtb3J5LXBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIG9uZSBsb29wcyB1cCBvciBkb3duLlxuICAgICBDb25zdGFudC1zdHJpZGUgYWNjZXNzLCBmb3J3YXJkIG9yIGJhY2t3YXJkLCBzaG91bGQgYmUgaW5kaXN0aW5ndWlzaGFibGUgKGF0IGxlYXN0IG9uXG4gICAgIGFuIGludGVsIGk3KS4gIFNvLCB3ZSBkb24ndCBkbyBhIGNoZWNrIGZvciBbcGh5c19lcXVhbCBzcmMgZHN0XSBhbmQgYWx3YXlzIGxvb3AgdXAgaW5cbiAgICAgdGhhdCBjYXNlLiAqKVxuICBpZiBkc3RfcG9zIDwgc3JjX3Bvc1xuICB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgZHN0IChkc3RfcG9zICsgaSkgKHVuc2FmZV9nZXQgc3JjIChzcmNfcG9zICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbjs7XG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZV96ZXJvXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZV96ZXJvIH5sZW46KGxlbmd0aCBzcmMpIGluXG4gIGJsaXRvIH5zcmMgfmRzdCAoKTtcbiAgZHN0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFdBUk5JTkc6XG4gICBXZSB1c2Ugbm9uLW1lbW9yeS1zYWZlIHRoaW5ncyB0aHJvdWdob3V0IHRoZSBbVHJ1c3RlZF0gbW9kdWxlLlxuICAgTW9zdCBvZiBpdCBpcyBvbmx5IHNhZmUgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgdHlwZSBzaWduYXR1cmUgKGUuZy4gZXhwb3NpbmdcbiAgIFt2YWwgY29weSA6ICdhIHQgLT4gJ2IgdF0gd291bGQgYmUgYSBiaWcgbWlzdGFrZSkuICopXG5tb2R1bGUgVHJ1c3RlZCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV9vYmpfYXJyYXkgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHN3YXAgOiBfIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHVuc2FmZV9zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0X3dpdGhfY2FtbF9tb2RpZnkgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgdCwgJ2EgdCkgQmxpdC5ibGl0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA6IF8gdCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IE9ial9hcnJheS50XG5cbiAgbGV0IGVtcHR5ID0gT2JqX2FycmF5LmVtcHR5XG4gIGxldCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbiA9IE9ial9hcnJheS5jcmVhdGVfemVybyB+bGVuXG4gIGxldCBjcmVhdGVfb2JqX2FycmF5IH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlIH5sZW4geCA9IE9ial9hcnJheS5jcmVhdGUgfmxlbiAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgc2luZ2xldG9uIHggPSBPYmpfYXJyYXkuc2luZ2xldG9uIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCBzd2FwIHQgaSBqID0gT2JqX2FycmF5LnN3YXAgdCBpIGpcbiAgbGV0IGdldCBhcnIgaSA9IENhbWwuT2JqLm9iaiAoT2JqX2FycmF5LmdldCBhcnIgaSlcbiAgbGV0IHNldCBhcnIgaSB4ID0gT2JqX2FycmF5LnNldCBhcnIgaSAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2dldCBhcnIgaSA9IENhbWwuT2JqLm9iaiAoT2JqX2FycmF5LnVuc2FmZV9nZXQgYXJyIGkpXG4gIGxldCB1bnNhZmVfc2V0IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldCBhcnIgaSAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX3NldF9pbnQgYXJyIGkgeCA9IE9ial9hcnJheS51bnNhZmVfc2V0X2ludCBhcnIgaSB4XG5cbiAgbGV0IHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeFxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSAoQ2FtbC5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBPYmpfYXJyYXkubGVuZ3RoXG4gIGxldCB1bnNhZmVfYmxpdCA9IE9ial9hcnJheS51bnNhZmVfYmxpdFxuICBsZXQgY29weSA9IE9ial9hcnJheS5jb3B5XG5cbiAgbGV0IHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIChDYW1sLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKENhbWwuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHggPSBPYmpfYXJyYXkuc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA9IE9ial9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlclxuZW5kXG5cbmluY2x1ZGUgVHJ1c3RlZFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKENhbWwuT2JqLnRhZyAoQ2FtbC5PYmoucmVwciB0KSA8PiBDYW1sLk9iai5kb3VibGVfYXJyYXlfdGFnKVxuXG5sZXQgaW5pdCBsIH5mID1cbiAgaWYgbCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlVuaWZvcm1fYXJyYXkuaW5pdFwiXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbjpsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgZG9uZTtcbiAgICByZXMpXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID0gaW5pdCB+ZjooQXJyYXkudW5zYWZlX2dldCBhcnIpIChBcnJheS5sZW5ndGggYXJyKVxubGV0IG1hcCBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpXG5sZXQgbWFwaSBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiBpICh1bnNhZmVfZ2V0IGEgaSkpIChsZW5ndGggYSlcblxubGV0IGl0ZXIgYSB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuOztcblxubGV0IGZvbGRpIGEgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGFjYyA6PSBmIGkgIWFjYyAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFhY2Ncbjs7XG5cbmxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgfmY6KGdldCB0KSAobGVuZ3RoIHQpXG5cbmxldCBvZl9saXN0IGwgPVxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSB4IC0+IHNldCByZXMgaSB4KTtcbiAgcmVzXG47O1xuXG4oKiBJdCBpcyBub3Qgc2FmZSBmb3IgW3RvX2FycmF5XSB0byBiZSB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gYmVjYXVzZSB3ZSBoYXZlIGNvZGUgdGhhdFxuICAgcmVsaWVzIG9uIFtmbG9hdCBhcnJheV1zIGJlaW5nIHVuYm94ZWQsIGZvciBleGFtcGxlIGluIFtiaW5fd3JpdGVfYXJyYXldLiAqKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID1cbiAgICBpZiBpIDwgMCB0aGVuIGZhbHNlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpIHx8IGxvb3AgdCB+ZiAoaSAtIDEpXG4gIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IH5mIGkgPSBpZiBpIDwgMCB0aGVuIHRydWUgZWxzZSBmICh1bnNhZmVfZ2V0IHQgaSkgJiYgbG9vcCB0IH5mIChpIC0gMSkgaW5cbiAgbG9vcCB0IH5mIChsZW5ndGggdCAtIDEpXG47O1xuXG5sZXQgbWFwMl9leG4gdDEgdDIgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQxIGluXG4gIGlmIGxlbmd0aCB0MiA8PiBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5Lm1hcDJfZXhuXCI7XG4gIGluaXQgbGVuIH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IHQxIGkpICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKGdyYW1tYXIgOiBlbHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogZWx0IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChBcnJheS50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxuaW5jbHVkZVxuICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAoQXJyYXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2FycmF5XG4gICAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gZW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIChnZXQgdCAwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBwcHhfY29tcGFyZSBbY29tcGFyZV9hcnJheV0gYnV0IHVzZXMgb3VyIFt1bnNhZmVfZ2V0XSBhbmQgW2xlbmd0aF0uICopXG5sZXQgY29tcGFyZSBjb21wYXJlX2VsdCBhIGIgPVxuICBpZiBwaHlzX2VxdWFsIGEgYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGVuX2IgPSBsZW5ndGggYiBpblxuICAgIGxldCByZXQgPSBjb21wYXJlIGxlbl9hIGxlbl9iIGluXG4gICAgaWYgcmV0IDw+IDBcbiAgICB0aGVuIHJldFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgdGhlbiAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsID0gdW5zYWZlX2dldCBhIGlcbiAgICAgICAgICBhbmQgciA9IHVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgbG9vcCAoaSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgY2VpbCA9IENhbWwuY2VpbFxubGV0IGZsb29yID0gQ2FtbC5mbG9vclxubGV0IG1vZF9mbG9hdCA9IENhbWwubW9kX2Zsb2F0XG5sZXQgbW9kZiA9IENhbWwubW9kZlxubGV0IGZsb2F0X29mX3N0cmluZyA9IENhbWwuZmxvYXRfb2Zfc3RyaW5nXG5sZXQgbmFuID0gQ2FtbC5uYW5cbmxldCBpbmZpbml0eSA9IENhbWwuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBDYW1sLm5lZ19pbmZpbml0eVxubGV0IG1heF9maW5pdGVfdmFsdWUgPSBDYW1sLm1heF9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBDYW1sLmVwc2lsb25fZmxvYXRcbmxldCBjbGFzc2lmeV9mbG9hdCA9IENhbWwuY2xhc3NpZnlfZmxvYXRcbmxldCBhYnNfZmxvYXQgPSBDYW1sLmFic19mbG9hdFxubGV0IGlzX2ludGVnZXIgPSBDYW1sLkZsb2F0LmlzX2ludGVnZXJcbmxldCAoICoqICkgPSBDYW1sLiggKiogKVxuXG5sZXQgKCAlLiApIGEgYiA9XG4gICgqIFJhaXNlIGluIGNhc2Ugb2YgYSBuZWdhdGl2ZSBtb2R1bHVzLCBhcyBkb2VzIEludC4oICUgKS4gKilcbiAgaWYgYiA8IDAuXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIiVmICUlICVmIGluIGZsb2F0MC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIiBhIGIgKCk7XG4gIGxldCBtID0gQ2FtbC5tb2RfZmxvYXQgYSBiIGluXG4gICgqIFByb2R1Y2UgYSBub24tbmVnYXRpdmUgcmVzdWx0IGluIGFuYWxvZ3kgd2l0aCBJbnQuKCAlICkuICopXG4gIGlmIG0gPCAwLiB0aGVuIG0gKy4gYiBlbHNlIG1cbjs7XG5cbigqIFRoZSBiaXRzIG9mIElOUklBJ3MgW1BlcnZhc2l2ZXNdIHRoYXQgd2UganVzdCB3YW50IHRvIGV4cG9zZSBpbiBbRmxvYXRdLiBNb3N0IGFyZVxuICAgYWxyZWFkeSBkZXByZWNhdGVkIGluIFtQZXJ2YXNpdmVzXSwgYW5kIGV2ZW50dWFsbHkgYWxsIG9mIHRoZW0gc2hvdWxkIGJlLiAqKVxuaW5jbHVkZSAoXG4gIENhbWwgOlxuICBzaWdcbiAgICBleHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcblxuICAgIGV4dGVybmFsIGxkZXhwXG4gICAgICA6ICAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgICAgLT4gKGZsb2F0W0B1bmJveGVkXSlcbiAgICAgID0gXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIlxuICAgIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICBlbmQpXG5cbigqIFdlIG5lZWQgdGhpcyBpbmRpcmVjdGlvbiBiZWNhdXNlIHRoZXNlIGFyZSBleHBvc2VkIGFzIFwidmFsXCIgaW5zdGVhZCBvZiBcImV4dGVybmFsXCIgKilcbmxldCBmcmV4cCA9IGZyZXhwXG5sZXQgbGRleHAgPSBsZGV4cFxubGV0IGlzX25hbiB4ID0gKHggOiBmbG9hdCkgPD4geFxuXG4oKiBBbiBvcmRlci1wcmVzZXJ2aW5nIGJpamVjdGlvbiBiZXR3ZWVuIGFsbCBmbG9hdHMgZXhjZXB0IGZvciBOYU5zLCBhbmQgOTkuOTUlIG9mXG4gICBpbnQ2NHMuXG5cbiAgIE5vdGUgd2UgZG9uJ3QgZGlzdGluZ3Vpc2ggMC4gYW5kIC0wLiBhcyBzZXBhcmF0ZSB2YWx1ZXMgaGVyZSwgdGhleSBib3RoIG1hcCB0byAwTCwgd2hpY2hcbiAgIG1hcHMgYmFjayB0byAwLlxuXG4gICBUaGlzIHNob3VsZCB3b3JrIGJvdGggb24gbGl0dGxlLWVuZGlhbiBhbmQgaGlnaC1lbmRpYW4gQ1BVcy4gIFdpa2lwZWRpYSBzYXlzOiBcIm9uXG4gICBtb2Rlcm4gc3RhbmRhcmQgY29tcHV0ZXJzIChpLmUuLCBpbXBsZW1lbnRpbmcgSUVFRSA3NTQpLCBvbmUgbWF5IGluIHByYWN0aWNlIHNhZmVseVxuICAgYXNzdW1lIHRoYXQgdGhlIGVuZGlhbm5lc3MgaXMgdGhlIHNhbWUgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXMgZm9yIGludGVnZXJzXCJcbiAgIChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuZGlhbm5lc3MjRmxvYXRpbmctcG9pbnRfYW5kX2VuZGlhbm5lc3MpLlxuKilcbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB0ID1cbiAgaWYgaXNfbmFuIHRcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gKCogYWxzbyBpbmNsdWRlcyAtMC4gKilcbiAgICBTb21lIDBMXG4gIGVsc2UgaWYgdCA+IDAuXG4gIHRoZW4gU29tZSAoQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQpXG4gIGVsc2UgU29tZSAoQ2FtbC5JbnQ2NC5uZWcgKENhbWwuSW50NjQuYml0c19vZl9mbG9hdCAoLS50KSkpXG47O1xuXG5sZXQgdG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIHggPSBPcHRpb24udmFsdWVfZXhuICh0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4KVxuXG5sZXQgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXIgeCA9XG4gIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgeCAwTFxuICB0aGVuIENhbWwuSW50NjQuZmxvYXRfb2ZfYml0cyB4XG4gIGVsc2Ugfi0uKENhbWwuSW50NjQuZmxvYXRfb2ZfYml0cyAoQ2FtbC5JbnQ2NC5uZWcgeCkpXG47O1xuXG5sZXQgb25lX3VscCBkaXIgdCA9XG4gIG1hdGNoIHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgd2l0aFxuICB8IE5vbmUgLT4gQ2FtbC5uYW5cbiAgfCBTb21lIHggLT5cbiAgICBvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlclxuICAgICAgKENhbWwuSW50NjQuYWRkXG4gICAgICAgICB4XG4gICAgICAgICAobWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICB8IGBVcCAtPiAxTFxuICAgICAgICAgIHwgYERvd24gLT4gLTFMKSlcbjs7XG5cbigqIFt1cHBlcl9ib3VuZF9mb3JfaW50XSBhbmQgW2xvd2VyX2JvdW5kX2Zvcl9pbnRdIGFyZSBmb3IgY2FsY3VsYXRpbmcgdGhlIG1heC9taW4gZmxvYXRcbiAgIHRoYXQgZml0cyBpbiBhIGdpdmVuLXNpemUgaW50ZWdlciB3aGVuIHJvdW5kZWQgdG93YXJkcyAwICh1c2luZyBbaW50X29mX2Zsb2F0XSkuXG5cbiAgIG1heF9pbnQvbWluX2ludCBkZXBlbmQgb24gW251bV9iaXRzXSwgZS5nLiArLy0gMl4zMCwgKy8tIDJeNjIgaWYgMzEtYml0LCA2My1iaXRcbiAgIChyZXNwZWN0aXZlbHkpIHdoaWxlIGZsb2F0IGlzIElFRUUgc3RhbmRhcmQgZm9yIGRvdWJsZSAoNTIgc2lnbmlmaWNhbnQgYml0cykuXG5cbiAgIEluIGFsbCBjYXNlcywgd2Ugd2FudCB0byBndWFyYW50ZWUgdGhhdFxuICAgW2xvd2VyX2JvdW5kX2Zvcl9pbnQgPD0geCA8PSB1cHBlcl9ib3VuZF9mb3JfaW50XVxuICAgaWZmIFtpbnRfb2ZfZmxvYXQgeF0gZml0cyBpbiBhbiBpbnQgd2l0aCBbbnVtX2JpdHNdIGJpdHMuXG5cbiAgIFsyICoqIChudW1fYml0cyAtIDEpXSBpcyB0aGUgZmlyc3QgZmxvYXQgZ3JlYXRlciB0aGF0IG1heF9pbnQsIHdlIHVzZSB0aGUgcHJlY2VkaW5nXG4gICBmbG9hdCBhcyB1cHBlciBib3VuZC5cblxuICAgWy0gKDIgKiogKG51bV9iaXRzIC0gMSkpXSBpcyBlcXVhbCB0byBtaW5faW50LlxuICAgRm9yIGxvd2VyIGJvdW5kIHdlIGxvb2sgZm9yIHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXSBzbyB0aGF0XG4gICBbZl0gcm91bmRzIHRvd2FyZCB6ZXJvIHRvIFttaW5faW50XVxuXG4gICBTbyBpbiBwYXJ0aWN1bGFyIHdlIHdpbGwgaGF2ZTpcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IHggPD0gLSAoMiAqKiAoMS14KSldXG4gICBbdXBwZXJfYm91bmRfZm9yX2ludCB4ICA8ICAgIDIgKiogKDEteCkgXVxuKilcbmxldCB1cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzID1cbiAgbGV0IGV4cCA9IENhbWwuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIG9uZV91bHAgYERvd24gKDIuICoqIGV4cClcbjs7XG5cbmxldCBpc194X21pbnVzX29uZV9leGFjdCB4ID1cbiAgKCogW3ggPSB4IC0uIDEuXSBkb2VzIG5vdCB3b3JrIHdpdGggeDg3IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFja2VuZCAod2hpY2ggaXMgdXNlZFxuICAgICBvbiAzMi1iaXQgb2NhbWwpIGJlY2F1c2Ugb2YgODAtYml0IHJlZ2lzdGVyIHByZWNpc2lvbiBvZiBpbnRlcm1lZGlhdGUgY29tcHV0YXRpb25zLlxuXG4gICAgIEFuIGFsdGVybmF0aXZlIHdheSBvZiBjb21wdXRpbmcgdGhpczogW3ggLS4gb25lX3VscCBgRG93biB4IDw9IDEuXSBpcyBhbHNvIHByb25lIHRvXG4gICAgIHRoZSBzYW1lIHByZWNpc2lvbiBpc3N1ZXM6IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSBbeF0gaXMgNjQtYml0LlxuICAqKVxuICBsZXQgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgbm90IChDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgeCA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCAoeCAtLiAxLikpXG47O1xuXG5sZXQgbG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBDYW1sLmZsb2F0X29mX2ludCAobnVtX2JpdHMgLSAxKSBpblxuICBsZXQgbWluX2ludF9hc19mbG9hdCA9IH4tLigyLiAqKiBleHApIGluXG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbnVtX2JpdHMgLSAxIDwgNTMgKCogNTMgPSAjYml0cyBpbiB0aGUgZmxvYXQncyBtYW50aXNzYSB3aXRoIHNpZ24gaW5jbHVkZWQgKilcbiAgdGhlbiAoXG4gICAgKCogVGhlIHNtYWxsZXN0IGZsb2F0IHRoYXQgcm91bmRzIHRvd2FyZHMgemVybyB0byBbbWluX2ludF0gaXNcbiAgICAgICBbbWluX2ludCAtIDEgKyBlcHNpbG9uXSAqKVxuICAgIGFzc2VydCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCk7XG4gICAgb25lX3VscCBgVXAgKG1pbl9pbnRfYXNfZmxvYXQgLS4gMS4pKVxuICBlbHNlIChcbiAgICAoKiBbbWluX2ludF9hc19mbG9hdF0gaXMgYWxyZWFkeSB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0uICopXG4gICAgYXNzZXJ0IChub3QgKGlzX3hfbWludXNfb25lX2V4YWN0IG1pbl9pbnRfYXNfZmxvYXQpKTtcbiAgICBtaW5faW50X2FzX2Zsb2F0KVxuOztcblxuKCogRmxvYXQgY2xhbXBpbmcgaXMgc3RydWN0dXJlZCBzbGlnaHRseSBkaWZmZXJlbnRseSB0aGFuIGNsYW1waW5nIGZvciBvdGhlciB0eXBlcywgc29cbiAgIHRoYXQgd2UgZ2V0IHRoZSBiZWhhdmlvciBvZiBbY2xhbXBfdW5jaGVja2VkIG5hbiB+bWluIH5tYXggPSBuYW5dIChmb3IgYW55IFttaW5dIGFuZFxuICAgW21heF0pIGZvciBmcmVlLlxuKilcbmxldCBjbGFtcF91bmNoZWNrZWQgKHQgOiBmbG9hdCkgfm1pbiB+bWF4ID1cbiAgaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIG1heCA8IHQgdGhlbiBtYXggZWxzZSB0XG47O1xuXG5sZXQgYm94ID1cbiAgKCogUHJldmVudCBwb3RlbnRpYWwgY29uc3RhbnQgZm9sZGluZyBvZiBbKy4gMC5dIGluIHRoZSBuZWFyIG9jYW1sb3B0IGZ1dHVyZS4gKilcbiAgbGV0IHggPSBTeXMwLm9wYXF1ZV9pZGVudGl0eSAwLiBpblxuICBmdW4gZiAtPiBmICsuIHhcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuaW5jbHVkZSBDaGFyMFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9jaGFyIDogdCAtPiB0IC0+IGludClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2NoYXJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2NoYXIgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGNoYXJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLm1ha2UgMSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIHMgd2l0aFxuICAgIHwgMSAtPiBzLlswXVxuICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJDaGFyLm9mX3N0cmluZzogJVNcIiBzICgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkNoYXJcIlxuICBlbmQpXG5cbmxldCBwcCBmbXQgYyA9IENhbWwuRm9ybWF0LmZwcmludGYgZm10IFwiJUNcIiBjXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYWxsID0gQXJyYXkuaW5pdCAyNTYgfmY6dW5zYWZlX29mX2ludCB8PiBBcnJheS50b19saXN0XG5cbmxldCBpc19sb3dlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc191cHBlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19wcmludCA9IGZ1bmN0aW9uXG4gIHwgJyAnIC4uICd+JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3doaXRlc3BhY2UgPSBmdW5jdGlvblxuICB8ICdcXHQnIHwgJ1xcbicgfCAnXFwwMTEnICgqIHZlcnRpY2FsIHRhYiAqKSB8ICdcXDAxMicgKCogZm9ybSBmZWVkICopIHwgJ1xccicgfCAnICcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2FscGhhID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxuKCogV3JpdGluZyB0aGVzZSBvdXQsIGluc3RlYWQgb2YgY2FsbGluZyBbaXNfYWxwaGFdIGFuZCBbaXNfZGlnaXRdLCByZWR1Y2VzXG4gICBydW50aW1lIGJ5IGFwcHJveC4gMzAlICopXG5sZXQgaXNfYWxwaGFudW0gPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGdldF9kaWdpdF91bnNhZmUgdCA9IHRvX2ludCB0IC0gdG9faW50ICcwJ1xuXG5sZXQgZ2V0X2RpZ2l0X2V4biB0ID1cbiAgaWYgaXNfZGlnaXQgdFxuICB0aGVuIGdldF9kaWdpdF91bnNhZmUgdFxuICBlbHNlIGZhaWx3aXRoZiBcIkNoYXIuZ2V0X2RpZ2l0X2V4biAlQzogbm90IGEgZGlnaXRcIiB0ICgpXG47O1xuXG5sZXQgZ2V0X2RpZ2l0IHQgPSBpZiBpc19kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2RpZ2l0X3Vuc2FmZSB0KSBlbHNlIE5vbmVcblxubGV0IGlzX2hleF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfaGV4X2RpZ2l0X2xvd2VyID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF91cHBlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfaGV4X2RpZ2l0X2V4biA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICcwJ1xuICB8ICdhJyAuLiAnZicgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnYScgKyAxMFxuICB8ICdBJyAuLiAnRicgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnQScgKyAxMFxuICB8IHQgLT5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIkNoYXIuZ2V0X2hleF9kaWdpdF9leG46IG5vdCBhIGhleGFkZWNpbWFsIGRpZ2l0XCJcbiAgICAgICAgIFsgXCJjaGFyXCIsIHNleHBfb2ZfdCB0IF0pXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdCB0ID0gaWYgaXNfaGV4X2RpZ2l0IHQgdGhlbiBTb21lIChnZXRfaGV4X2RpZ2l0X2V4biB0KSBlbHNlIE5vbmVcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgbGV0ICggPj0gKSA9ICggPj0gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID0gKSA9ICggPSApXG4gIGxldCAoID4gKSA9ICggPiApXG4gIGxldCAoIDwgKSA9ICggPCApXG4gIGxldCAoIDw+ICkgPSAoIDw+IClcbmVuZFxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGNoYXJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9jaGFyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gY2hhcl9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY29tcGFyZSBjMSBjMiA9IGNvbXBhcmUgKGxvd2VyY2FzZSBjMSkgKGxvd2VyY2FzZSBjMilcbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9jaGFyIHN0YXRlIChsb3dlcmNhc2UgdClcbiAgICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJtb2R1bGUgTGlzdCA9IExpc3RcblxubW9kdWxlIEVudW1lcmFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGFsbCA6IHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2EgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICgnYSwgJ2IpIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gJ2MgbGlzdCAtPiAoJ2EsICdiLCAnYykgdCBsaXN0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnQwLkludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxuKCogQ29uc3RydWN0IGEgYnl0ZSBzdHJpbmcgb2YgbGVuZ3RoIDI1NiwgbWFwcGluZyBldmVyeSBpbnB1dCBjaGFyYWN0ZXIgY29kZSB0b1xuICAgaXRzIGNvcnJlc3BvbmRpbmcgb3V0cHV0IGNoYXJhY3Rlci5cblxuICAgQmVuY2htYXJrcyBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMgZmFzdGVyIHRoYW4gdGhlIGxhbWJkYSAoaW5jbHVkaW5nIGNvc3Qgb2ZcbiAgIHRoaXMgZnVuY3Rpb24pLCBldmVuIGlmIHRhcmdldC9yZXBsYWNlbWVudCBhcmUganVzdCAyIGNoYXJhY3RlcnMgZWFjaC5cblxuICAgUmV0dXJuIE5vbmUgaWYgdGhlIHRyYW5zbGF0aW9uIG1hcCBpcyBlcXVpdmFsZW50IHRvIGp1c3QgdGhlIGlkZW50aXR5LiAqKVxubGV0IHRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBsZXQgdHJfbWFwID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaSAoQ2hhci5vZl9pbnRfZXhuIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgLSAxIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IChTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCBpKVxuICBkb25lO1xuICBsZXQgbGFzdF9yZXBsYWNlbWVudCA9IFN0cmluZy51bnNhZmVfZ2V0IHJlcGxhY2VtZW50IChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50IC0gMSkgaW5cbiAgZm9yXG4gICAgaSA9IG1pbiAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSB0byBTdHJpbmcubGVuZ3RoIHRhcmdldCAtIDFcbiAgZG9cbiAgICBsZXQgaW5kZXggPSBDaGFyLnRvX2ludCAoU3RyaW5nLnVuc2FmZV9nZXQgdGFyZ2V0IGkpIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaW5kZXggbGFzdF9yZXBsYWNlbWVudFxuICBkb25lO1xuICBsZXQgcmVjIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgaSA9XG4gICAgaWYgaSA9IDI1NlxuICAgIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgaSkgKENoYXIub2ZfaW50X2V4biBpKVxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCAoaSArIDEpXG4gIGluXG4gICgqIHF1aWNrIGNoZWNrIG9uIHRoZSBmaXJzdCB0YXJnZXQgY2hhcmFjdGVyIHdoaWNoIHdpbGwgOTklIGJlIHRydWUgKilcbiAgbGV0IGZpcnN0X3RhcmdldCA9IHRhcmdldC5bMF0gaW5cbiAgaWYgQ2hhci4oIDw+ICkgKEJ5dGVzMC51bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgZmlyc3RfdGFyZ2V0KSkgZmlyc3RfdGFyZ2V0XG4gIHx8IGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgMFxuICB0aGVuIFNvbWUgKEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRyX21hcClcbiAgZWxzZSBOb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhXG5cbmxldCBzdGFnZSA9IEZuLmlkXG5sZXQgdW5zdGFnZSA9IEZuLmlkXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuaW5jbHVkZSBTdHJpbmcwXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbigqIFRoaXMgYWxpYXMgaXMgbmVjZXNzYXJ5IGRlc3BpdGUgW1N0cmluZzBdIGRlZmluaW5nIFtCeXRlcyA9IEJ5dGVzMF0sIGluIG9yZGVyIHRvXG4gICBjb252aW5jZSBvY2FtbGRlcCB0aGF0IHRoaXMgZmlsZSBkb2Vzbid0IGRlcGVuZCBvbiBieXRlcy5tbC4gKilcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfc3RyaW5nXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9zdHJpbmcgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gc3RyaW5nX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG50eXBlIGVsdCA9IGNoYXJcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxuKCogVGhpcyBpcyBjb3BpZWQvYWRhcHRlZCBmcm9tICdibGl0Lm1sJy5cbiAgIFtzdWJdLCBbc3Vib10gY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW0JsaXQuTWFrZShCeXRlcyldIHBsdXMgdW5zYWZlIGNhc3RzIHRvL2Zyb21cbiAgIHN0cmluZyBidXQgd2VyZSBpbmxpbmVkIGhlcmUgdG8gYXZvaWQgdXNpbmcgW0J5dGVzLnVuc2FmZV9vZl9zdHJpbmddIGFzIG11Y2ggYXMgcG9zc2libGUuXG4qKVxubGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgaWYgcG9zID0gMCAmJiBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyY1xuICB0aGVuIHNyY1xuICBlbHNlIChcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggc3JjKTtcbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBcIlwiXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpKVxuOztcblxubGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gIHN1YlxuICAgIHNyY1xuICAgIH5wb3NcbiAgICB+bGVuOlxuICAgICAgKG1hdGNoIGxlbiB3aXRoXG4gICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgIHwgTm9uZSAtPiBsZW5ndGggc3JjIC0gcG9zKVxuOztcblxubGV0IHJlYyBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfIGNoYXIgPVxuICBwb3MgPCBlbmRfXG4gICYmIChDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHQgcG9zKSBjaGFyIHx8IGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3M6KHBvcyArIDEpIH5lbmRfIGNoYXIpXG47O1xuXG5sZXQgY29udGFpbnMgPyhwb3MgPSAwKSA/bGVuIHQgY2hhciA9XG4gIGxldCB0b3RhbF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9IE9wdGlvbi52YWx1ZSBsZW4gfmRlZmF1bHQ6KHRvdGFsX2xlbmd0aCAtIHBvcykgaW5cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgY29udGFpbnNfdW5zYWZlIHQgfnBvcyB+ZW5kXzoocG9zICsgbGVuKSBjaGFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgcmVjIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zID49IGxlblxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgKyAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciA9XG4gIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczowIH5sZW46KGxlbmd0aCB0KSB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCBpbmRleF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcuaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2V4biB0IGNoYXIgPSBpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9leG5cbjs7XG5cbmxldCBpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgaW5kZXhfZnJvbV9leG5cbjs7XG5cbmxldCByZWMgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zIDwgMFxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvczoocG9zIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3M6KGxlbiAtIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgcmluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9leG4gdCBjaGFyID0gcmluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9leG5cbjs7XG5cbmxldCByaW5kZXhfZnJvbV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAtMSB8fCBwb3MgPj0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhclxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9mcm9tX2V4blxuOztcblxubGV0IGluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChpbmRleF9leG4gdCBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByaW5kZXggdCBjaGFyID1cbiAgdHJ5IFNvbWUgKHJpbmRleF9leG4gdCBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCBpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4X2Zyb20gdCBwb3MgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm4wID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgOyBjYXNlX3NlbnNpdGl2ZSA6IGJvb2xcbiAgICA7IGttcF9hcnJheSA6IGludCBhcnJheVxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSA9IF8gfSA6IFNleHAudCA9XG4gICAgTGlzdFxuICAgICAgWyBMaXN0IFsgQXRvbSBcInBhdHRlcm5cIjsgc2V4cF9vZl9zdHJpbmcgcGF0dGVybiBdXG4gICAgICA7IExpc3QgWyBBdG9tIFwiY2FzZV9zZW5zaXRpdmVcIjsgc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlIF1cbiAgICAgIF1cbiAgOztcblxuICBsZXQgcGF0dGVybiB0ID0gdC5wYXR0ZXJuXG4gIGxldCBjYXNlX3NlbnNpdGl2ZSB0ID0gdC5jYXNlX3NlbnNpdGl2ZVxuXG4gICgqIEZpbmQgbWF4IG51bWJlciBvZiBtYXRjaGVkIGNoYXJhY3RlcnMgYXQgW25leHRfdGV4dF9jaGFyXSwgZ2l2ZW4gdGhlIGN1cnJlbnRcbiAgICAgW21hdGNoZWRfY2hhcnNdLiBUcnkgdG8gZXh0ZW5kIHRoZSBjdXJyZW50IG1hdGNoLCBpZiBjaGFycyBkb24ndCBtYXRjaCwgdHJ5IHRvIG1hdGNoXG4gICAgIGZld2VyIGNoYXJzLiBJZiBjaGFycyBtYXRjaCB0aGVuIGV4dGVuZCB0aGUgbWF0Y2guICopXG4gIGxldCBrbXBfaW50ZXJuYWxfbG9vcCB+bWF0Y2hlZF9jaGFycyB+bmV4dF90ZXh0X2NoYXIgfnBhdHRlcm4gfmttcF9hcnJheSB+Y2hhcl9lcXVhbCA9XG4gICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgbWF0Y2hlZF9jaGFycyBpblxuICAgIHdoaWxlXG4gICAgICAhbWF0Y2hlZF9jaGFycyA+IDBcbiAgICAgICYmIG5vdCAoY2hhcl9lcXVhbCBuZXh0X3RleHRfY2hhciAodW5zYWZlX2dldCBwYXR0ZXJuICFtYXRjaGVkX2NoYXJzKSlcbiAgICBkb1xuICAgICAgbWF0Y2hlZF9jaGFycyA6PSBBcnJheS51bnNhZmVfZ2V0IGttcF9hcnJheSAoIW1hdGNoZWRfY2hhcnMgLSAxKVxuICAgIGRvbmU7XG4gICAgaWYgY2hhcl9lcXVhbCBuZXh0X3RleHRfY2hhciAodW5zYWZlX2dldCBwYXR0ZXJuICFtYXRjaGVkX2NoYXJzKVxuICAgIHRoZW4gbWF0Y2hlZF9jaGFycyA6PSAhbWF0Y2hlZF9jaGFycyArIDE7XG4gICAgIW1hdGNoZWRfY2hhcnNcbiAgOztcblxuICBsZXQgZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBtYXRjaCBjYXNlX3NlbnNpdGl2ZSB3aXRoXG4gICAgfCB0cnVlIC0+IENoYXIuZXF1YWxcbiAgICB8IGZhbHNlIC0+IENoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgOztcblxuICAoKiBDbGFzc2ljIEtNUCBwcmUtcHJvY2Vzc2luZyBvZiB0aGUgcGF0dGVybjogYnVpbGQgdGhlIGludCBhcnJheSwgd2hpY2gsIGZvciBlYWNoIGksXG4gICAgIGNvbnRhaW5zIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qgbm9uLXRyaXZpYWwgcHJlZml4IG9mIHMgd2hpY2ggaXMgZXF1YWwgdG8gYSBzdWZmaXhcbiAgICAgZW5kaW5nIGF0IHMuW2ldICopXG4gIGxldCBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmUgPVxuICAgIGxldCBuID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICBsZXQga21wX2FycmF5ID0gQXJyYXkuY3JlYXRlIH5sZW46biAoLTEpIGluXG4gICAgaWYgbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGttcF9hcnJheSAwIDA7XG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyOih1bnNhZmVfZ2V0IHBhdHRlcm4gaSlcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgaSAhbWF0Y2hlZF9jaGFyc1xuICAgICAgZG9uZSk7XG4gICAgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH1cbiAgOztcblxuICAoKiBDbGFzc2ljIEtNUDogdXNlIHRoZSBwcmUtcHJvY2Vzc2VkIHBhdHRlcm4gdG8gb3B0aW1pemUgbG9vay1iZWhpbmRzIG9uIG5vbi1tYXRjaGVzLlxuICAgICBXZSByZXR1cm4gaW50IHRvIGF2b2lkIGFsbG9jYXRpb24gaW4gW2luZGV4X2V4bl0uIC0xIG1lYW5zIG5vIG1hdGNoLiAqKVxuICBsZXQgaW5kZXhfaW50ZXJuYWwgPyhwb3MgPSAwKSB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfSB+aW5fOnRleHQgPVxuICAgIGlmIHBvcyA8IDAgfHwgcG9zID4gbGVuZ3RoIHRleHQgLSBsZW5ndGggcGF0dGVyblxuICAgIHRoZW4gLTFcbiAgICBlbHNlIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBsZXQgaiA9IHJlZiBwb3MgaW5cbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGxldCBrID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAgIGxldCBuID0gbGVuZ3RoIHRleHQgaW5cbiAgICAgIHdoaWxlICFqIDwgbiAmJiAhbWF0Y2hlZF9jaGFycyA8IGsgZG9cbiAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0ICFqIGluXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhclxuICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgIH5jaGFyX2VxdWFsO1xuICAgICAgICBqIDo9ICFqICsgMVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFtYXRjaGVkX2NoYXJzID0gayB0aGVuICFqIC0gayBlbHNlIC0xKVxuICA7O1xuXG4gIGxldCBtYXRjaGVzIHQgc3RyID0gaW5kZXhfaW50ZXJuYWwgdCB+aW5fOnN0ciA+PSAwXG5cbiAgbGV0IGluZGV4ID9wb3MgdCB+aW5fID1cbiAgICBsZXQgcCA9IGluZGV4X2ludGVybmFsID9wb3MgdCB+aW5fIGluXG4gICAgaWYgcCA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSBwXG4gIDs7XG5cbiAgbGV0IGluZGV4X2V4biA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPj0gMFxuICAgIHRoZW4gcFxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIlN1YnN0cmluZyBub3QgZm91bmRcIiBbIFwic3Vic3RyaW5nXCIsIHNleHBfb2Zfc3RyaW5nIHQucGF0dGVybiBdKVxuICA7O1xuXG4gIGxldCBpbmRleF9hbGwgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfm1heV9vdmVybGFwIH5pbl86dGV4dCA9XG4gICAgaWYgbGVuZ3RoIHBhdHRlcm4gPSAwXG4gICAgdGhlbiBMaXN0LmluaXQgKDEgKyBsZW5ndGggdGV4dCkgfmY6Rm4uaWRcbiAgICBlbHNlIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICBsZXQgZm91bmQgPSByZWYgW10gaW5cbiAgICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAgIGlmICFtYXRjaGVkX2NoYXJzID0ga1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBmb3VuZCA6PSAoaiAtIGspIDo6ICFmb3VuZDtcbiAgICAgICAgICAoKiB3ZSBqdXN0IGZvdW5kIGEgbWF0Y2ggaW4gdGhlIHByZXZpb3VzIGl0ZXJhdGlvbiAqKVxuICAgICAgICAgIG1hdGNoIG1heV9vdmVybGFwIHdpdGhcbiAgICAgICAgICB8IHRydWUgLT4gbWF0Y2hlZF9jaGFycyA6PSBBcnJheS51bnNhZmVfZ2V0IGttcF9hcnJheSAoayAtIDEpXG4gICAgICAgICAgfCBmYWxzZSAtPiBtYXRjaGVkX2NoYXJzIDo9IDApO1xuICAgICAgICBpZiBqIDwgblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV4dF90ZXh0X2NoYXIgPSB1bnNhZmVfZ2V0IHRleHQgaiBpblxuICAgICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhclxuICAgICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICAgIH5jaGFyX2VxdWFsKVxuICAgICAgZG9uZTtcbiAgICAgIExpc3QucmV2ICFmb3VuZClcbiAgOztcblxuICBsZXQgcmVwbGFjZV9maXJzdCA/cG9zIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbWF0Y2ggaW5kZXggP3BvcyB0IH5pbl86cyB3aXRoXG4gICAgfCBOb25lIC0+IHNcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgbGV0IGxlbl9zID0gbGVuZ3RoIHMgaW5cbiAgICAgIGxldCBsZW5fdCA9IGxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICAgIGxldCBsZW5fd2l0aCA9IGxlbmd0aCB3aXRoXyBpblxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuX3MgKyBsZW5fd2l0aCAtIGxlbl90KSBpblxuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczowIH5sZW46aTtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6d2l0aF8gfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOmkgfmxlbjpsZW5fd2l0aDtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6c1xuICAgICAgICB+c3JjX3BvczooaSArIGxlbl90KVxuICAgICAgICB+ZHN0XG4gICAgICAgIH5kc3RfcG9zOihpICsgbGVuX3dpdGgpXG4gICAgICAgIH5sZW46KGxlbl9zIC0gaSAtIGxlbl90KTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0XG4gIDs7XG5cblxuICBsZXQgcmVwbGFjZV9hbGwgdCB+aW5fOnMgfndpdGhfID1cbiAgICBsZXQgbWF0Y2hlcyA9IGluZGV4X2FsbCB0IH5tYXlfb3ZlcmxhcDpmYWxzZSB+aW5fOnMgaW5cbiAgICBtYXRjaCBtYXRjaGVzIHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IGxlbl9zID0gbGVuZ3RoIHMgaW5cbiAgICAgIGxldCBsZW5fdCA9IGxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICAgIGxldCBsZW5fd2l0aCA9IGxlbmd0aCB3aXRoXyBpblxuICAgICAgbGV0IG51bV9tYXRjaGVzID0gTGlzdC5sZW5ndGggbWF0Y2hlcyBpblxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuX3MgKyAoKGxlbl93aXRoIC0gbGVuX3QpICogbnVtX21hdGNoZXMpKSBpblxuICAgICAgbGV0IG5leHRfZHN0X3BvcyA9IHJlZiAwIGluXG4gICAgICBsZXQgbmV4dF9zcmNfcG9zID0gcmVmIDAgaW5cbiAgICAgIExpc3QuaXRlciBtYXRjaGVzIH5mOihmdW4gaSAtPlxuICAgICAgICBsZXQgbGVuID0gaSAtICFuZXh0X3NyY19wb3MgaW5cbiAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5zcmNfcG9zOiFuZXh0X3NyY19wb3MgfmRzdCB+ZHN0X3BvczohbmV4dF9kc3RfcG9zIH5sZW47XG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgICAgfnNyYzp3aXRoX1xuICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICB+ZHN0XG4gICAgICAgICAgfmRzdF9wb3M6KCFuZXh0X2RzdF9wb3MgKyBsZW4pXG4gICAgICAgICAgfmxlbjpsZW5fd2l0aDtcbiAgICAgICAgbmV4dF9kc3RfcG9zIDo9ICFuZXh0X2RzdF9wb3MgKyBsZW4gKyBsZW5fd2l0aDtcbiAgICAgICAgbmV4dF9zcmNfcG9zIDo9ICFuZXh0X3NyY19wb3MgKyBsZW4gKyBsZW5fdCk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6IW5leHRfc3JjX3Bvc1xuICAgICAgICB+ZHN0XG4gICAgICAgIH5kc3RfcG9zOiFuZXh0X2RzdF9wb3NcbiAgICAgICAgfmxlbjoobGVuX3MgLSAhbmV4dF9zcmNfcG9zKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0XG4gIDs7XG5cbiAgbGV0IHNwbGl0X29uIHQgcyA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICBsZXQgbWF0Y2hlcyA9IGluZGV4X2FsbCB0IH5tYXlfb3ZlcmxhcDpmYWxzZSB+aW5fOnMgaW5cbiAgICBMaXN0Lm1hcDJfZXhuXG4gICAgICAoLXBhdHRlcm5fbGVuIDo6IG1hdGNoZXMpXG4gICAgICAobWF0Y2hlcyBAIFsgU3RyaW5nLmxlbmd0aCBzIF0pXG4gICAgICB+ZjooZnVuIGkgaiAtPiBzdWIgcyB+cG9zOihpICsgcGF0dGVybl9sZW4pIH5sZW46KGogLSBpIC0gcGF0dGVybl9sZW4pKVxuICA7O1xuXG4gIG1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gICAgdHlwZSBwdWJsaWMgPSB0XG5cbiAgICB0eXBlIG5vbnJlYyB0ID0gdCA9XG4gICAgICB7IHBhdHRlcm4gOiBzdHJpbmdcbiAgICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgICA7IGttcF9hcnJheSA6IGludCBhcnJheVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGxldCBlcXVhbCA9XG4gICAgICAoZnVuIGFfXzAwMl8gYl9fMDAzXyAtPlxuICAgICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDAyXyBiX18wMDNfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAgICAgIChlcXVhbF9zdHJpbmcgYV9fMDAyXy5wYXR0ZXJuIGJfXzAwM18ucGF0dGVybilcbiAgICAgICAgICAgICAoUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAgICAgICAgIChlcXVhbF9ib29sIGFfXzAwMl8uY2FzZV9zZW5zaXRpdmUgYl9fMDAzXy5jYXNlX3NlbnNpdGl2ZSlcbiAgICAgICAgICAgICAgICAoZXF1YWxfYXJyYXkgZXF1YWxfaW50IGFfXzAwMl8ua21wX2FycmF5IGJfXzAwM18ua21wX2FycmF5KSlcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gYm9vbClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgcGF0dGVybiA9IHBhdHRlcm5fXzAwN19cbiAgICAgICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA9IGNhc2Vfc2Vuc2l0aXZlX18wMDlfXG4gICAgICAgICAgIDsga21wX2FycmF5ID0ga21wX2FycmF5X18wMTFfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPSBbXSBpblxuICAgICAgICBsZXQgYm5kc19fMDA2XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9pbnQga21wX2FycmF5X18wMTFfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwia21wX2FycmF5XCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2Jvb2wgY2FzZV9zZW5zaXRpdmVfXzAwOV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBhcmdfXzAxMF8gXVxuICAgICAgICAgIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX3N0cmluZyBwYXR0ZXJuX18wMDdfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicGF0dGVyblwiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDZfXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDZfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBGbi5pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm5faGVscGVyID0gc3RydWN0XG4gIG1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IFNlYXJjaF9wYXR0ZXJuMFxuZW5kXG5cbm9wZW4gU2VhcmNoX3BhdHRlcm5faGVscGVyXG5cbmxldCBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9leG4gP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+bWF5X292ZXJsYXAgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9hbGxcbiAgICAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKVxuICAgIH5tYXlfb3ZlcmxhcFxuICAgIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9maXJzdCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5yZXBsYWNlX2FsbCAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5zdWJzdHJpbmcgPVxuICBPcHRpb24uaXNfc29tZSAoc3Vic3RyX2luZGV4X2dlbiB0IH5wYXR0ZXJuOnN1YnN0cmluZyB+Y2FzZV9zZW5zaXRpdmUpXG47O1xuXG5sZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9hbGwgPSBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IGlzX3N1YnN0cmluZyA9IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcblxubGV0IGlzX3N1YnN0cmluZ19hdF9nZW4gPVxuICBsZXQgcmVjIGxvb3AgfnN0ciB+c3RyX3BvcyB+c3ViIH5zdWJfcG9zIH5zdWJfbGVuIH5jaGFyX2VxdWFsID1cbiAgICBpZiBzdWJfcG9zID0gc3ViX2xlblxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgY2hhcl9lcXVhbCAodW5zYWZlX2dldCBzdHIgc3RyX3BvcykgKHVuc2FmZV9nZXQgc3ViIHN1Yl9wb3MpXG4gICAgdGhlbiBsb29wIH5zdHIgfnN0cl9wb3M6KHN0cl9wb3MgKyAxKSB+c3ViIH5zdWJfcG9zOihzdWJfcG9zICsgMSkgfnN1Yl9sZW4gfmNoYXJfZXF1YWxcbiAgICBlbHNlIGZhbHNlXG4gIGluXG4gIGZ1biBzdHIgfnBvczpzdHJfcG9zIH5zdWJzdHJpbmc6c3ViIH5jaGFyX2VxdWFsIC0+XG4gICAgbGV0IHN0cl9sZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHN1Yl9sZW4gPSBsZW5ndGggc3ViIGluXG4gICAgaWYgc3RyX3BvcyA8IDAgfHwgc3RyX3BvcyA+IHN0cl9sZW5cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJTdHJpbmcuaXNfc3Vic3RyaW5nX2F0OiBpbnZhbGlkIGluZGV4ICVkIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgICAgc3RyX3Bvc1xuICAgICAgICBzdHJfbGVuXG4gICAgICAgICgpO1xuICAgIHN0cl9wb3MgKyBzdWJfbGVuIDw9IHN0cl9sZW5cbiAgICAmJiBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvczowIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfc3VmZml4X2dlbiBzdHJpbmcgfnN1ZmZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW5cbiAgICAgICBzdHJpbmdcbiAgICAgICB+cG9zOihzdHJpbmdfbGVuIC0gc3VmZml4X2xlbilcbiAgICAgICB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfcHJlZml4X2dlbiBzdHJpbmcgfnByZWZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgcHJlZml4X2xlbiA9IGxlbmd0aCBwcmVmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBwcmVmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW4gc3RyaW5nIH5wb3M6MCB+c3Vic3RyaW5nOnByZWZpeCB+Y2hhcl9lcXVhbFxuOztcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcl9jb21wYXJlX2Nhc2VsZXNzIGMxIGMyID0gQ2hhci5jb21wYXJlIChDaGFyLmxvd2VyY2FzZSBjMSkgKENoYXIubG93ZXJjYXNlIGMyKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2xvb3AgfnBvcyB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMiA9XG4gICAgICBpZiBwb3MgPSBsZW4xXG4gICAgICB0aGVuIGlmIHBvcyA9IGxlbjIgdGhlbiAwIGVsc2UgLTFcbiAgICAgIGVsc2UgaWYgcG9zID0gbGVuMlxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMgPSBjaGFyX2NvbXBhcmVfY2FzZWxlc3MgKHVuc2FmZV9nZXQgc3RyaW5nMSBwb3MpICh1bnNhZmVfZ2V0IHN0cmluZzIgcG9zKSBpblxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbG9vcCB+cG9zOihwb3MgKyAxKSB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMlxuICAgICAgICB8IF8gLT4gYylcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgc3RyaW5nMSBzdHJpbmcyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgc3RyaW5nMSBzdHJpbmcyXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2VcbiAgICAgICAgY29tcGFyZV9sb29wXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfnN0cmluZzFcbiAgICAgICAgICB+bGVuMTooU3RyaW5nLmxlbmd0aCBzdHJpbmcxKVxuICAgICAgICAgIH5zdHJpbmcyXG4gICAgICAgICAgfmxlbjI6KFN0cmluZy5sZW5ndGggc3RyaW5nMilcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPVxuICAgICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgICBsZXQgc3RhdGUgPSByZWYgKGhhc2hfZm9sZF9pbnQgc3RhdGUgbGVuKSBpblxuICAgICAgZm9yIHBvcyA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBzdGF0ZSA6PSBoYXNoX2ZvbGRfY2hhciAhc3RhdGUgKENoYXIubG93ZXJjYXNlICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgICAgIGRvbmU7XG4gICAgICAhc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgICBsZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2V4biA9IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9hbGwgPSBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmdfYXQgPSBpc19zdWJzdHJpbmdfYXRfZ2VuIH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGbi5pZFxubGV0IHRvX3N0cmluZyA9IEZuLmlkXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIlN0cmluZy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPCAwIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSAtIDEpIGluXG4gIGxvb3AgW10gKGxlbmd0aCBzIC0gMSlcbjs7XG5cbmxldCB0b19saXN0X3JldiBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPSBsZW4gdGhlbiBhY2MgZWxzZSBsb29wIChzLltpXSA6OiBhY2MpIChpICsgMSkgaW5cbiAgbG9vcCBbXSAwXG47O1xuXG5sZXQgcmV2IHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHJlcyBpICh1bnNhZmVfZ2V0IHQgKGxlbiAtIDEgLSBpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXNcbjs7XG5cbigqKiBFZmZpY2llbnQgc3RyaW5nIHNwbGl0dGluZyAqKVxuXG5sZXQgbHNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcubHNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgbHNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSBpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgbHNwbGl0Ml9leG5cbjs7XG5cbmxldCByc3BsaXQyX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yc3BsaXQyX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByc3BsaXQyX2V4biBsaW5lIH5vbjpkZWxpbSA9XG4gICAgbGV0IHBvcyA9IHJpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcnNwbGl0Ml9leG5cbjs7XG5cbmxldCBsc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKGxzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKHJzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY2hhcl9saXN0X21lbSBsIChjIDogY2hhcikgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IGhkIDo6IHRsIC0+IENoYXIuZXF1YWwgaGQgYyB8fCBjaGFyX2xpc3RfbWVtIHRsIGNcbjs7XG5cbmxldCBzcGxpdF9nZW4gc3RyIH5vbiA9XG4gIGxldCBpc19kZWxpbSA9XG4gICAgbWF0Y2ggb24gd2l0aFxuICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgfCBgY2hhcl9saXN0IGwgLT4gZnVuIGMgLT4gY2hhcl9saXN0X21lbSBsIGNcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBsYXN0X3BvcyBwb3MgPVxuICAgIGlmIHBvcyA9IC0xXG4gICAgdGhlbiBzdWIgc3RyIH5wb3M6MCB+bGVuOmxhc3RfcG9zIDo6IGFjY1xuICAgIGVsc2UgaWYgaXNfZGVsaW0gc3RyLltwb3NdXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcG9zMSA9IHBvcyArIDEgaW5cbiAgICAgIGxldCBzdWJfc3RyID0gc3ViIHN0ciB+cG9zOnBvczEgfmxlbjoobGFzdF9wb3MgLSBwb3MxKSBpblxuICAgICAgbG9vcCAoc3ViX3N0ciA6OiBhY2MpIHBvcyAocG9zIC0gMSkpXG4gICAgZWxzZSBsb29wIGFjYyBsYXN0X3BvcyAocG9zIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSBsZW4gKGxlbiAtIDEpXG47O1xuXG5sZXQgc3BsaXQgc3RyIH5vbiA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhciBvbilcbmxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbmxldCBzcGxpdF9saW5lcyA9XG4gIGxldCBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sID1cbiAgICBwb3MgOj0gIXBvcyAtIGlmICFwb3MgPiAwICYmIENoYXIuZXF1YWwgdC5bIXBvcyAtIDFdICdcXHInIHRoZW4gMiBlbHNlIDE7XG4gICAgZW9sIDo9ICFwb3MgKyAxXG4gIGluXG4gIGZ1biB0IC0+XG4gICAgbGV0IG4gPSBsZW5ndGggdCBpblxuICAgIGlmIG4gPSAwXG4gICAgdGhlbiBbXVxuICAgIGVsc2UgKFxuICAgICAgKCogSW52YXJpYW50OiBbLTEgPD0gcG9zIDwgZW9sXS4gKilcbiAgICAgIGxldCBwb3MgPSByZWYgKG4gLSAxKSBpblxuICAgICAgbGV0IGVvbCA9IHJlZiBuIGluXG4gICAgICBsZXQgYWMgPSByZWYgW10gaW5cbiAgICAgICgqIFdlIHRyZWF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBzcGVjaWFsbHksIGJlY2F1c2UgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggYVxuICAgICAgICAgbmV3bGluZSwgd2UgZG9uJ3Qgd2FudCBhbiBleHRyYSBlbXB0eSBzdHJpbmcgYXQgdGhlIGVuZCBvZiB0aGUgb3V0cHV0LiAqKVxuICAgICAgaWYgQ2hhci5lcXVhbCB0LlshcG9zXSAnXFxuJyB0aGVuIGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2w7XG4gICAgICB3aGlsZSAhcG9zID49IDAgZG9cbiAgICAgICAgaWYgQ2hhci4oIDw+ICkgdC5bIXBvc10gJ1xcbidcbiAgICAgICAgdGhlbiBkZWNyIHBvc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBCZWNhdXNlIFtwb3MgPCBlb2xdLCB3ZSBrbm93IHRoYXQgW3N0YXJ0IDw9IGVvbF0uICopXG4gICAgICAgICAgbGV0IHN0YXJ0ID0gIXBvcyArIDEgaW5cbiAgICAgICAgICBhYyA6PSBzdWIgdCB+cG9zOnN0YXJ0IH5sZW46KCFlb2wgLSBzdGFydCkgOjogIWFjO1xuICAgICAgICAgIGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2wpXG4gICAgICBkb25lO1xuICAgICAgc3ViIHQgfnBvczowIH5sZW46IWVvbCA6OiAhYWMpXG47O1xuXG5sZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcbmxldCBpc19wcmVmaXggcyB+cHJlZml4ID0gaXNfcHJlZml4X2dlbiBzIH5wcmVmaXggfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuXG5sZXQgaXNfc3Vic3RyaW5nX2F0IHMgfnBvcyB+c3Vic3RyaW5nID1cbiAgaXNfc3Vic3RyaW5nX2F0X2dlbiBzIH5wb3MgfnN1YnN0cmluZyB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG47O1xuXG5sZXQgd3JhcF9zdWJfbiB0IG4gfm5hbWUgfnBvcyB+bGVuIH5vbl9lcnJvciA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgKG5hbWUgXiBcIiBleHBlY3Rpbmcgbm9ubmVnYXRpdmUgYXJndW1lbnRcIilcbiAgZWxzZSAoXG4gICAgdHJ5IHN1YiB0IH5wb3MgfmxlbiB3aXRoXG4gICAgfCBfIC0+IG9uX2Vycm9yKVxuOztcblxubGV0IGRyb3BfcHJlZml4IHQgbiA9XG4gIHdyYXBfc3ViX24gfm5hbWU6XCJkcm9wX3ByZWZpeFwiIHQgbiB+cG9zOm4gfmxlbjoobGVuZ3RoIHQgLSBuKSB+b25fZXJyb3I6XCJcIlxuOztcblxubGV0IGRyb3Bfc3VmZml4IHQgbiA9XG4gIHdyYXBfc3ViX24gfm5hbWU6XCJkcm9wX3N1ZmZpeFwiIHQgbiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQgLSBuKSB+b25fZXJyb3I6XCJcIlxuOztcblxubGV0IHByZWZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwicHJlZml4XCIgdCBuIH5wb3M6MCB+bGVuOm4gfm9uX2Vycm9yOnRcbmxldCBzdWZmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInN1ZmZpeFwiIHQgbiB+cG9zOihsZW5ndGggdCAtIG4pIH5sZW46biB+b25fZXJyb3I6dFxuXG5sZXQgbGZpbmRpID8ocG9zID0gMCkgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPSBpZiBpID0gbiB0aGVuIE5vbmUgZWxzZSBpZiBmIGkgdC5baV0gdGhlbiBTb21lIGkgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgbG9vcCBwb3Ncbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBmIGMpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT4gU29tZSB0LltpXVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gblxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZiB0LltpXSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbmxldCByZmluZGkgP3BvcyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgPSBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZSBpZiBmIGkgdC5baV0gdGhlbiBTb21lIGkgZWxzZSBsb29wIChpIC0gMSkgaW5cbiAgbGV0IHBvcyA9XG4gICAgbWF0Y2ggcG9zIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICAgIHwgTm9uZSAtPiBsZW5ndGggdCAtIDFcbiAgaW5cbiAgbG9vcCBwb3Ncbjs7XG5cbmxldCBsYXN0X25vbl9kcm9wIH5kcm9wIHQgPSByZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBub3QgKGRyb3AgYykpXG5cbmxldCByc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG47O1xuXG5sZXQgZmlyc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IGxmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSlcblxubGV0IGxzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBtYXRjaCBmaXJzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIDAgLT4gdFxuICB8IFNvbWUgbiAtPiBkcm9wX3ByZWZpeCB0IG5cbjs7XG5cbigqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICBiZWxvdyBzYXZlcyAoYXQgbGVhc3QpIGEgZmFjdG9yIG9mIHR3byBhbGxvY2F0aW9uLCBieSBvbmx5IGFsbG9jYXRpbmcgdGhlXG4gICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbmxldCBzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBTb21lIGxhc3QgLT4gc3ViIHQgfnBvczpmaXJzdCB+bGVuOihsYXN0IC0gZmlyc3QgKyAxKSkpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgaSB0LltpXSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0J1xuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBtYXAgdCB+ZiA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHQnID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0JyBpIChmIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKGxlbmd0aCBzKSB+ZjooZnVuIGkgLT4gcy5baV0pXG5cbmxldCBleGlzdHMgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpIDwgbGVuICYmIChmIHMuW2ldIHx8IGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvcl9hbGwgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpID0gbGVuIHx8IChmIHMuW2ldICYmIGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGFjIHQuW2ldKSB+ZiB+bGVuXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCAwIGluaXQgfmYgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGkgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0XG5sZXQgbWF4X2VsdCB0ID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdFxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbmxldCBmaW5kX21hcGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxubGV0IGZpbmRpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kaSB+aXRlcmkgdCB+ZlxubGV0IGNvdW50aSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuY291bnRpIH5mb2xkaSB0IH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZvcl9hbGxpIH5pdGVyaSB0IH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZXhpc3RzaSB+aXRlcmkgdCB+ZlxuXG5sZXQgbWVtID1cbiAgbGV0IHJlYyBsb29wIHQgYyB+cG9zOmkgfmxlbiA9XG4gICAgaSA8IGxlbiAmJiAoQ2hhci5lcXVhbCBjICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IGMgfnBvczooaSArIDEpIH5sZW4pXG4gIGluXG4gIGZ1biB0IGMgLT4gbG9vcCB0IGMgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBpZiBDaGFyLmVxdWFsIHRhcmdldCByZXBsYWNlbWVudFxuICB0aGVuIHNcbiAgZWxzZSBpZiBtZW0gcyB0YXJnZXRcbiAgdGhlbiBtYXAgcyB+ZjooZnVuIGMgLT4gaWYgQ2hhci5lcXVhbCBjIHRhcmdldCB0aGVuIHJlcGxhY2VtZW50IGVsc2UgYylcbiAgZWxzZSBzXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBpc19lbXB0eSB0YXJnZXRcbiAgdGhlbiBzdGFnZSBGbi5pZFxuICBlbHNlIGlmIGlzX2VtcHR5IHJlcGxhY2VtZW50XG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aSByZXBsYWNlbWVudCBpcyBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgRm4uaWRcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgaWYgZXhpc3RzIHMgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgKHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSkpXG4gICAgICAgIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSlcbiAgICAgICAgZWxzZSBzKSlcbjs7XG5cbigqIGZhc3QgdmVyc2lvbiwgaWYgd2UgZXZlciBuZWVkIGl0OlxuICAge1tcbiAgICAgbGV0IGNvbmNhdF9hcnJheSB+c2VwIGFyID1cbiAgICAgICBsZXQgYXJfbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgICAgaWYgYXJfbGVuID0gMCB0aGVuIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBsZXQgc2VwX2xlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgIGxldCByZXNfbGVuX3JlZiA9IHJlZiAoc2VwX2xlbiAqIChhcl9sZW4gLSAxKSkgaW5cbiAgICAgICAgIGZvciBpID0gMCB0byBhcl9sZW4gLSAxIGRvXG4gICAgICAgICAgIHJlc19sZW5fcmVmIDo9ICFyZXNfbGVuX3JlZiArIGxlbmd0aCBhci4oaSlcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICBsZXQgcmVzID0gY3JlYXRlICFyZXNfbGVuX3JlZiBpblxuICAgICAgICAgbGV0IHN0cl8wID0gYXIuKDApIGluXG4gICAgICAgICBsZXQgbGVuXzAgPSBsZW5ndGggc3RyXzAgaW5cbiAgICAgICAgIGJsaXQgfnNyYzpzdHJfMCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjAgfmxlbjpsZW5fMDtcbiAgICAgICAgIGxldCBwb3NfcmVmID0gcmVmIGxlbl8wIGluXG4gICAgICAgICBmb3IgaSA9IDEgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgICAgICAgICAgYmxpdCB+c3JjOnNlcCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOnBvcyB+bGVuOnNlcF9sZW47XG4gICAgICAgICAgIGxldCBuZXdfcG9zID0gcG9zICsgc2VwX2xlbiBpblxuICAgICAgICAgICBsZXQgc3RyX2kgPSBhci4oaSkgaW5cbiAgICAgICAgICAgbGV0IGxlbl9pID0gbGVuZ3RoIHN0cl9pIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzdHJfaSB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOm5ld19wb3MgfmxlbjpsZW5faTtcbiAgICAgICAgICAgcG9zX3JlZiA6PSBuZXdfcG9zICsgbGVuX2lcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICByZXNcbiAgIF19ICopXG5cbmxldCBjb25jYXRfYXJyYXkgP3NlcCBhciA9IGNvbmNhdCA/c2VwIChBcnJheS50b19saXN0IGFyKVxubGV0IGNvbmNhdF9tYXAgP3NlcCBzIH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcCAodG9fYXJyYXkgcykgfmYpXG5cbigqIFtmaWx0ZXIgdCBmXSBpcyBpbXBsZW1lbnRlZCBieSB0aGUgZm9sbG93aW5nIGFsZ29yaXRobS5cblxuICAgTGV0IFtuID0gbGVuZ3RoIHRdLlxuXG4gICAxLiBGaW5kIHRoZSBsb3dlc3QgW2ldIHN1Y2ggdGhhdCBbbm90IChmIHQuW2ldKV0uXG5cbiAgIDIuIElmIHRoZXJlIGlzIG5vIHN1Y2ggW2ldLCB0aGVuIHJldHVybiBbdF0uXG5cbiAgIDMuIElmIHRoZXJlIGlzIHN1Y2ggYW4gW2ldLCBhbGxvY2F0ZSBhIHN0cmluZywgW291dF0sIHRvIGhvbGQgdGhlIHJlc3VsdC4gIFtvdXRdIGhhc1xuICAgbGVuZ3RoIFtuIC0gMV0sIHdoaWNoIGlzIHRoZSBtYXhpbXVtIHBvc3NpYmxlIG91dHB1dCBzaXplIGdpdmVuIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3RcbiAgIG9uZSBjaGFyYWN0ZXIgbm90IHNhdGlzZnlpbmcgW2ZdLlxuXG4gICA0LiBDb3B5IGNoYXJhY3RlcnMgYXQgaW5kaWNlcyAwIC4uLiBbaSAtIDFdIGZyb20gW3RdIHRvIFtvdXRdLlxuXG4gICA1LiBXYWxrIHRocm91Z2ggY2hhcmFjdGVycyBhdCBpbmRpY2VzIFtpKzFdIC4uLiBbbi0xXSBvZiBbdF0sIGNvcHlpbmcgdGhvc2UgdGhhdFxuICAgc2F0aXNmeSBbZl0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDYuIElmIHdlIGNvbXBsZXRlbHkgZmlsbGVkIFtvdXRdLCB0aGVuIHJldHVybiBpdC4gIElmIG5vdCwgcmV0dXJuIHRoZSBwcmVmaXggb2YgW291dF1cbiAgIHRoYXQgd2UgZGlkIGZpbGwgaW4uXG5cbiAgIFRoaXMgYWxnb3JpdGhtIGhhcyB0aGUgcHJvcGVydHkgdGhhdCBpdCBkb2Vzbid0IGFsbG9jYXRlIGEgbmV3IHN0cmluZyBpZiB0aGVyZSdzXG4gICBub3RoaW5nIHRvIGZpbHRlciwgd2hpY2ggaXMgYSBjb21tb24gY2FzZS4gKilcbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IG4gJiYgZiB0LlshaV0gZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgaWYgIWkgPSBuXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gQnl0ZXMuY3JlYXRlIChuIC0gMSkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om91dCB+ZHN0X3BvczowIH5sZW46IWk7XG4gICAgbGV0IG91dF9wb3MgPSByZWYgIWkgaW5cbiAgICBpbmNyIGk7XG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgYyA9IHQuWyFpXSBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dCAhb3V0X3BvcyBjO1xuICAgICAgICBpbmNyIG91dF9wb3MpO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBsZXQgb3V0ID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXQgaW5cbiAgICBpZiAhb3V0X3BvcyA9IG4gLSAxIHRoZW4gb3V0IGVsc2Ugc3ViIG91dCB+cG9zOjAgfmxlbjohb3V0X3Bvcylcbjs7XG5cbigqIHJlcGVhdGVkIGNvZGUgdG8gYXZvaWQgcmVxdWlyaW5nIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yIGEgY2xvc3VyZSBvbiBlYWNoIGNhbGwuICopXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmICFpIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmICFpIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxubGV0IGNob3BfcHJlZml4IHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBTb21lIChkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9wcmVmaXhfaWZfZXhpc3RzIHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9leG4gcyB+cHJlZml4ID1cbiAgbWF0Y2ggY2hvcF9wcmVmaXggcyB+cHJlZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3ByZWZpeF9leG4gJVMgJVNcIiBzIHByZWZpeCAoKVxuOztcblxubGV0IGNob3Bfc3VmZml4IHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBTb21lIChkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9zdWZmaXhfaWZfZXhpc3RzIHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9leG4gcyB+c3VmZml4ID1cbiAgbWF0Y2ggY2hvcF9zdWZmaXggcyB+c3VmZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3N1ZmZpeF9leG4gJVMgJVNcIiBzIHN1ZmZpeCAoKVxuOztcblxubW9kdWxlIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXggPSBzdHJ1Y3RcbiAgKCogV2hlbiB0YWtpbmcgYSBzdHJpbmcgcHJlZml4IG9yIHN1ZmZpeCwgd2UgZXh0cmFjdCBmcm9tIHRoZSBzaG9ydGVzdCBpbnB1dCBhdmFpbGFibGVcbiAgICAgaW4gY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gb25lIG9mIG91ciBpbnB1dHMgd2l0aG91dCBhbGxvY2F0aW5nIGEgbmV3IHN0cmluZy4gKilcblxuICBsZXQgc2hvcnRlciBhIGIgPSBpZiBsZW5ndGggYSA8PSBsZW5ndGggYiB0aGVuIGEgZWxzZSBiXG5cbiAgbGV0IHNob3J0ZXN0IGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgZmlyc3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpmaXJzdCB+ZjpzaG9ydGVyXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIGZvciBjb21tb24gcHJlZml4L3N1ZmZpeCBhYnN0cmFjdCBvdmVyIFtnZXRfcG9zXSwgd2hpY2ggaXNcbiAgICAgZWl0aGVyIFtwb3NfZnJvbV9sZWZ0XSBvciBbcG9zX2Zyb21fcmlnaHRdLiAqKVxuXG4gIGxldCBwb3NfZnJvbV9sZWZ0IChfIDogdCkgKGkgOiBpbnQpID0gaVxuICBsZXQgcG9zX2Zyb21fcmlnaHQgdCBpID0gbGVuZ3RoIHQgLSBpIC0gMVxuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhciA9XG4gICAgaWYgbGVuX3NvX2ZhciA+PSBtYXhfbGVuXG4gICAgdGhlbiBtYXhfbGVuXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsXG4gICAgICAgICAgICAgICh1bnNhZmVfZ2V0IGEgKGdldF9wb3MgYSBsZW5fc29fZmFyKSlcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYiAoZ2V0X3BvcyBiIGxlbl9zb19mYXIpKVxuICAgIHRoZW4gY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjoobGVuX3NvX2ZhciArIDEpXG4gICAgZWxzZSBsZW5fc29fZmFyXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zID1cbiAgICBsZXQgbWF4X2xlbiA9IG1pbiAobGVuZ3RoIGEpIChsZW5ndGggYikgaW5cbiAgICBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOjBcbiAgOztcblxuICBsZXQgcmVjIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IGxpc3QgfmdldF9wb3Mgfm1heF9sZW4gPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbWF4X2xlblxuICAgIHwgc2Vjb25kIDo6IHJlc3QgLT5cbiAgICAgIGxldCBtYXhfbGVuID1cbiAgICAgICAgKCogV2UgY2FsbCBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wXSByYXRoZXIgdGhhbiBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF0gc29cbiAgICAgICAgICAgdGhhdCBbbWF4X2xlbl0gbGltaXRzIG91ciB0cmF2ZXJzYWwgb2YgW2ZpcnN0XSBhbmQgW3NlY29uZF0uICopXG4gICAgICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBmaXJzdCBzZWNvbmQgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICAgICAgaW5cbiAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIHNlY29uZCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IDBcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIFByZWNvbXB1dGluZyBbbWF4X2xlbl0gYmFzZWQgb24gW3Nob3J0ZXN0IGxpc3RdIHNhdmVzIHVzIHdvcmsgaW4gbG9uZ2VyIHN0cmluZ3MsXG4gICAgICAgICBhdCB0aGUgY29zdCBvZiBhbiBleHRyYSBwYXNzIG92ZXIgdGhlIHNwaW5lIG9mIFtsaXN0XS5cblxuICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSdyZSBsb29raW5nIGZvciB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgdGhlIHN0cmluZ3M6XG5cbiAgICAgICAgIHt2XG4gICAgICAgICAgICBsZXQgbG9uZ19hID0gTGlzdC5pbml0IDEwMDAgfmY6KEZuLmNvbnN0ICdhJylcbiAgICAgICAgICAgIFsgbG9uZ19hOyBsb25nX2E7ICdhYScgXVxuICAgICAgICAgdn1cblxuICAgICAgICAgdGhlIGFwcHJvYWNoIGJlbG93IHdpbGwganVzdCBjaGVjayB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgYWxsIHRoZSBzdHJpbmdzLlxuICAgICAgKilcbiAgICAgIGxldCBtYXhfbGVuID0gbGVuZ3RoIChzaG9ydGVzdCBsaXN0KSBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICA7O1xuXG4gICgqIE91ciBnZW5lcmljIGFjY2Vzc29ycyB0aGF0IHByb2R1Y2UgYSBzdHJpbmcgYWJzdHJhY3Qgb3ZlciBbdGFrZV0sIHdoaWNoIGlzIGVpdGhlclxuICAgICBbcHJlZml4XSBvciBbc3VmZml4XS4gKilcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyIGEgYiB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbGV0IGxlbiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zIGluXG4gICAgKCogVXNlIHRoZSBzaG9ydGVyIG9mIHRoZSB0d28gc3RyaW5ncywgc28gdGhhdCBpZiB0aGUgc2hvcnRlciBvbmUgaXMgdGhlIHNoYXJlZFxuICAgICAgIHByZWZpeCwgW3Rha2VdIHdvbid0IGFsbG9jYXRlIGFub3RoZXIgc3RyaW5nLiAqKVxuICAgIHRha2UgKHNob3J0ZXIgYSBiKSBsZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMgbGlzdCB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+XG4gICAgICAoKiBBcyB3aXRoIFtjb21tb25fZ2VuZXJpY19sZW5ndGhdLCB3ZSBiYXNlIFttYXhfbGVuXSBvbiBbc2hvcnRlc3QgbGlzdF0uIFdlIGFsc29cbiAgICAgICAgIHVzZSB0aGlzIHJlc3VsdCBmb3IgW3Rha2VdLCBiZWxvdywgdG8gcG90ZW50aWFsbHkgYXZvaWQgYWxsb2NhdGluZyBhIHN0cmluZy4gKilcbiAgICAgIGxldCBzID0gc2hvcnRlc3QgbGlzdCBpblxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggcyBpblxuICAgICAgaWYgbWF4X2xlbiA9IDBcbiAgICAgIHRoZW4gXCJcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICgqIFdlIGNhbGwgZGlyZWN0bHkgaW50byBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuXG4gICAgICAgICAgICAgW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0gdG8gYXZvaWQgcmVjb21wdXRpbmcgW3Nob3J0ZXN0IGxpc3RdLiAqKVxuICAgICAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgICAgICAgaW5cbiAgICAgICAgdGFrZSBzIGxlbilcbiAgOztcbmVuZFxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXhcblxuICBsZXQgY29tbW9uX3ByZWZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6cHJlZml4IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6c3VmZml4IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeF9sZW5ndGggbGlzdCA9IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIGEgYiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG5lbmRcblxuKCogVGhlcmUgdXNlZCB0byBiZSBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB0aGF0IHdhcyBmYXN0ZXIgZm9yIHZlcnkgc2hvcnQgc3RyaW5nc1xuICAgKHBlYWtpbmcgYXQgNDAlIGZhc3RlciBmb3IgNC02IGNoYXIgbG9uZyBzdHJpbmdzKS5cbiAgIFRoaXMgbmV3IGZ1bmN0aW9uIGlzIGFyb3VuZCAyMCUgZmFzdGVyIHRoYW4gdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlvbiwgYnV0IHNsb3dlclxuICAgdGhhbiB0aGUgcHJldmlvdXMgY3VzdG9tIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCB0aGUgbmV3IE9DYW1sIGZ1bmN0aW9uIGlzIHdlbGxcbiAgIGJlaGF2ZWQsIGFuZCB0aGlzIGltcGxlbWVudGF0aW9uIGlzIGxlc3MgbGlrZWx5IHRvIGRpdmVyZ2UgZnJvbSB0aGUgZGVmYXVsdCBPQ2FtbFxuICAgaW1wbGVtZW50YXRpb24gZG9lcywgd2hpY2ggaXMgYSBkZXNpcmFibGUgcHJvcGVydHkuIChUaGUgb25seSB3YXkgdG8gYXZvaWQgdGhlXG4gICBkaXZlcmdlbmNlIGlzIHRvIGV4cG9zZSB0aGUgbWFjcm8gcmVkZWZpbmVkIGluIGhhc2hfc3R1YnMuYyBpbiB0aGUgaGFzaC5oIGhlYWRlciBvZlxuICAgdGhlIE9DYW1sIGNvbXBpbGVyLikgKilcbm1vZHVsZSBIYXNoID0gc3RydWN0XG4gIGV4dGVybmFsIGhhc2ggOiBzdHJpbmcgLT4gaW50ID0gXCJCYXNlX2hhc2hfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmVuZFxuXG4oKiBbaW5jbHVkZSBIYXNoXSB0byBtYWtlIHRoZSBbZXh0ZXJuYWxdIHZlcnNpb24gb3ZlcnJpZGUgdGhlIFtoYXNoXSBmcm9tXG4gICBbSGFzaGFibGUuTWFrZV9iaW5hYmxlXSwgc28gdGhhdCB3ZSBnZXQgYSBsaXR0bGUgYml0IG9mIGEgc3BlZWR1cCBieSBleHBvc2luZyBpdCBhc1xuICAgZXh0ZXJuYWwgaW4gdGhlIG1saS4gKilcbmxldCBfID0gaGFzaFxuXG5pbmNsdWRlIEhhc2hcblxuKCogZm9yIGludGVyYWN0aXZlIHRvcC1sZXZlbHMgLS0gbW9kdWxlcyBkZXJpdmluZyBmcm9tIFN0cmluZyBzaG91bGQgaGF2ZSBTdHJpbmcncyBwcmV0dHlcbiAgIHByaW50ZXIuICopXG5sZXQgcHAgcHBmIHN0cmluZyA9IENhbWwuRm9ybWF0LmZwcmludGYgcHBmIFwiJVNcIiBzdHJpbmdcbmxldCBvZl9jaGFyIGMgPSBtYWtlIDEgY1xuXG5sZXQgb2ZfY2hhcl9saXN0IGwgPVxuICBsZXQgdCA9IEJ5dGVzLmNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSBjIC0+IEJ5dGVzLnNldCB0IGkgYyk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubW9kdWxlIEVzY2FwaW5nID0gc3RydWN0XG4gICgqIElmIHRoaXMgaXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRvIHVwZGF0ZSBbZXNjYXBlXSwgd2hpY2ggYXR0ZW1wdHMgdG8gZW5zdXJlIGFsbCB0aGVcbiAgICAgaW52YXJpYW50cyBjaGVja2VkIGhlcmUuICAqKVxuICBsZXQgYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBmdW5jID1cbiAgICBsZXQgZXNjYXBld29ydGh5X21hcCA9XG4gICAgICBpZiBMaXN0LkFzc29jLm1lbSBlc2NhcGV3b3J0aHlfbWFwIH5lcXVhbDpDaGFyLmVxdWFsIGVzY2FwZV9jaGFyXG4gICAgICB0aGVuIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgIGVsc2UgKGVzY2FwZV9jaGFyLCBlc2NhcGVfY2hhcikgOjogZXNjYXBld29ydGh5X21hcFxuICAgIGluXG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOjI1NiAoLTEpIGluXG4gICAgbGV0IHZhbHMgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgZmFsc2UgaW5cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBPayBhcnJcbiAgICAgIHwgKGNfZnJvbSwgY190bykgOjogbCAtPlxuICAgICAgICBsZXQgaywgdiA9XG4gICAgICAgICAgbWF0Y2ggZnVuYyB3aXRoXG4gICAgICAgICAgfCBgRXNjYXBlIC0+IENoYXIudG9faW50IGNfZnJvbSwgY190b1xuICAgICAgICAgIHwgYFVuZXNjYXBlIC0+IENoYXIudG9faW50IGNfdG8sIGNfZnJvbVxuICAgICAgICBpblxuICAgICAgICBpZiBhcnIuKGspIDw+IC0xIHx8IHZhbHMuKENoYXIudG9faW50IHYpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgICBcImVzY2FwZXdvcnRoeV9tYXAgbm90IG9uZS10by1vbmVcIlxuICAgICAgICAgICAgICAgWyBcImNfZnJvbVwiLCBzZXhwX29mX2NoYXIgY19mcm9tXG4gICAgICAgICAgICAgICA7IFwiY190b1wiLCBzZXhwX29mX2NoYXIgY190b1xuICAgICAgICAgICAgICAgOyAoIFwiZXNjYXBld29ydGh5X21hcFwiXG4gICAgICAgICAgICAgICAgICwgc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9jaGFyIHNleHBfb2ZfY2hhcikgZXNjYXBld29ydGh5X21hcFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICBdKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhcnIuKGspIDwtIENoYXIudG9faW50IHY7XG4gICAgICAgICAgdmFscy4oQ2hhci50b19pbnQgdikgPC0gdHJ1ZTtcbiAgICAgICAgICBsb29wIGwpXG4gICAgaW5cbiAgICBsb29wIGVzY2FwZXdvcnRoeV9tYXBcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYEVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBjYWxjdWxhdGUgYSBsaXN0IG9mIChpbmRleCBvZiBjaGFyIHRvIGVzY2FwZSAqIGVzY2FwZWQgY2hhcikgZmlyc3QsIHRoZSBvcmRlclxuICAgICAgICAgICAgICBpcyBmcm9tIHRhaWwgdG8gaGVhZCAqKVxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlX2xlbiA9IHJlZiAwIGluXG4gICAgICAgICAgIGxldCB0b19lc2NhcGUgPVxuICAgICAgICAgICAgIGZvbGRpIHNyYyB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGMgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgYykgd2l0aFxuICAgICAgICAgICAgICAgfCAtMSAtPiBhY2NcbiAgICAgICAgICAgICAgIHwgbiAtPlxuICAgICAgICAgICAgICAgICAoKiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpICopXG4gICAgICAgICAgICAgICAgIGluY3IgdG9fZXNjYXBlX2xlbjtcbiAgICAgICAgICAgICAgICAgKGksIENoYXIudW5zYWZlX29mX2ludCBuKSA6OiBhY2MpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIHRvX2VzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICgqIFt0b19lc2NhcGVdIGRpdmlkZSBbc3JjXSB0byBbTGlzdC5sZW5ndGggdG9fZXNjYXBlICsgMV0gcGllY2VzIHNlcGFyYXRlZCBieVxuICAgICAgICAgICAgICAgIHRoZSBjaGFycyB0byBlc2NhcGUuXG5cbiAgICAgICAgICAgICAgICBMZXRzIHRha2VcbiAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgZXNjYXBlX2dlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgfmVzY2FwZXdvcnRoeV9tYXA6WygnYScsICdBJyk7ICgnYicsICdCJyk7ICgnYycsICdDJyldXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGVfY2hhcjonXydcbiAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgIGZvciBleGFtcGxlLCBhbmQgYXNzdW1lIHRoZSBzdHJpbmcgdG8gZXNjYXBlIGlzXG5cbiAgICAgICAgICAgICAgICBcIjAwMGExMTFiMjIyYzMzM1wiXG5cbiAgICAgICAgICAgICAgICB0aGVuIFt0b19lc2NhcGVdIGlzIFsoMTEsICdDJyk7ICg3LCAnQicpOyAoMywgJ0EnKV0uXG5cbiAgICAgICAgICAgICAgICBUaGVuIHdlIGNyZWF0ZSBhIFtkc3RdIG9mIGxlbmd0aCBbbGVuZ3RoIHNyYyArIDNdIHRvIHN0b3JlIHRoZVxuICAgICAgICAgICAgICAgIHJlc3VsdCwgY29weSBwaWVjZSBcIjMzM1wiIHRvIFtkc3RdIGRpcmVjdGx5LCB0aGVuIGNvcHkgJ18nIGFuZCAnQycgdG8gW2RzdF07XG4gICAgICAgICAgICAgICAgdGhlbiBtb3ZlIG9uIHRvIG5leHQ7IGFmdGVyIDMgaXRlcmF0aW9ucywgY29weSBwaWVjZSBcIjAwMFwiIGFuZCB3ZSBhcmUgZG9uZS5cblxuICAgICAgICAgICAgICAgIEZpbmFsbHkgdGhlIHJlc3VsdCB3aWxsIGJlXG5cbiAgICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiICopXG4gICAgICAgICAgICAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gICAgICAgICAgICAgbGV0IGRzdF9sZW4gPSBzcmNfbGVuICsgIXRvX2VzY2FwZV9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGRzdF9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IChpZHgsIGVzY2FwZWRfY2hhcikgOjogdG9fZXNjYXBlIC0+XG4gICAgICAgICAgICAgICAgICgqW2lkeF0gPSB0aGUgY2hhciB0byBlc2NhcGUqKVxuICAgICAgICAgICAgICAgICAoKiB0YWtlIGZpcnN0IGl0ZXJhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgICAgICAgICAgICAgICAoKiBjYWxjdWxhdGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDEgYmVjYXVzZSB3ZSBkb24ndCBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAxIGluXG4gICAgICAgICAgICAgICAgICgqIHNldCB0aGUgZHN0X3BvcyB0byBjb3B5IHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiwgc2V0IFtzcmNfcG9zXSB0byBbaWR4ICsgMV0gdG8gc2tpcCAnYycgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczooaWR4ICsgMSkgfmRzdCB+ZHN0X3BvcyB+bGVuO1xuICAgICAgICAgICAgICAgICAoKiBiYWNrb2ZmIFtkc3RfcG9zXSBieSAyIHRvIGNvcHkgJ18nIGFuZCAnQycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMiBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IGRzdF9wb3MgZXNjYXBlX2NoYXI7XG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBkc3QgKGRzdF9wb3MgKyAxKSBlc2NhcGVkX2NoYXI7XG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fZXNjYXBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSBmaXJzdCAqKVxuICAgICAgICAgICAgIGxvb3Agc3JjX2xlbiBkc3RfbGVuIHRvX2VzY2FwZTtcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBPcl9lcnJvci5va19leG4gKGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCBlc2NhcGUgfmVzY2FwZXdvcnRoeSB+ZXNjYXBlX2NoYXIgPVxuICAgICgqIEZvciBbZXNjYXBlX2dlbl9leG5dLCB3ZSBkb24ndCBrbm93IGhvdyB0byBmaXggaW52YWxpZCBlc2NhcGV3b3J0aHlfbWFwIHNvIHdlIGhhdmVcbiAgICAgICB0byByYWlzZSBleGNlcHRpb247IGJ1dCBpbiB0aGlzIGNhc2UsIHdlIGtub3cgaG93IHRvIGZpeCBkdXBsaWNhdGVkIGVsZW1lbnRzIGluXG4gICAgICAgZXNjYXBld29ydGh5IGxpc3QsIHNvIHdlIGp1c3QgZml4IGl0IGluc3RlYWQgb2YgcmFpc2luZyBleGNlcHRpb24gdG8gbWFrZSB0aGlzXG4gICAgICAgZnVuY3Rpb24gZWFzaWVyIHRvIHVzZS4gICopXG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgZXNjYXBld29ydGh5XG4gICAgICB8PiBMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOkNoYXIuY29tcGFyZVxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjIC0+IGMsIGMpXG4gICAgaW5cbiAgICBlc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXJcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYFVuZXNjYXBlIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgfCBPayBlc2NhcGV3b3J0aHkgLT5cbiAgICAgIE9rXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgICgqIENvbnRpbnVlIHRoZSBleGFtcGxlIGluIFtlc2NhcGVfZ2VuX2V4bl0sIG5vdyB3ZSB1bmVzY2FwZVxuXG4gICAgICAgICAgICAgIFwiMDAwX0ExMTFfQjIyMl9DMzMzXCJcblxuICAgICAgICAgICAgICBiYWNrIHRvXG5cbiAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgIFRoZW4gW3RvX3VuZXNjYXBlXSBpcyBbMTQ7IDk7IDRdLCB3aGljaCBpcyBpbmRleGVzIG9mICdfJ3MuXG5cbiAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBzdHJpbmcgW2RzdF0gdG8gc3RvcmUgdGhlIHJlc3VsdCwgY29weSBcIjMzM1wiIHRvIGl0LCB0aGVuIGNvcHlcbiAgICAgICAgICAgICAgJ2MnLCB0aGVuIG1vdmUgb24gdG8gbmV4dCBpdGVyYXRpb24uIEFmdGVyIDMgaXRlcmF0aW9ucyBjb3B5IFwiMDAwXCIgYW5kIHdlIGFyZVxuICAgICAgICAgICAgICBkb25lLiAgKilcbiAgICAgICAgICAgKCogaW5kZXhlcyBvZiBlc2NhcGUgY2hhcnMgKilcbiAgICAgICAgICAgbGV0IHRvX3VuZXNjYXBlID1cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgYWNjID1cbiAgICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHNyY1xuICAgICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3JjIH5lc2NhcGVfY2hhciBpIHN0YXR1cyBpblxuICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGluZyAtPiBpIDo6IGFjY1xuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gYWNjKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxvb3AgMCBgTGl0ZXJhbCBbXVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b191bmVzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgaWR4IDo6IHRvX3VuZXNjYXBlJyAtPlxuICAgICAgICAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbmd0aCBzcmMgLSBMaXN0Lmxlbmd0aCB0b191bmVzY2FwZSkgaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbaWR4XSA9IGluZGV4IG9mIGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSAxc3QgaXRlcmF0aW9uIGFzIGV4YW1wbGUsIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDIgdG9cbiAgICAgICAgICAgICAgICAgICAgc2tpcCAnX0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBsZW4gPSBsYXN0X2lkeCAtIGlkeCAtIDIgaW5cbiAgICAgICAgICAgICAgICAgKCogcG9pbnQgW2RzdF9wb3NdIHRvIHRoZSBwb3NpdGlvbiB0byBjb3B5IFwiMzMzXCIgdG8gKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBsYXN0X2RzdF9wb3MgLSBsZW4gaW5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjMzM1wiICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDIpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMSB0byBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGRzdF9wb3MgLSAxIGluXG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldFxuICAgICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgICAgICAgIGRzdF9wb3NcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXNjYXBld29ydGh5LihDaGFyLnRvX2ludCBzcmMuW2lkeCArIDFdKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgLTEgLT4gc3JjLltpZHggKyAxXVxuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gQ2hhci51bnNhZmVfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgICAoKiB1cGRhdGUgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gKilcbiAgICAgICAgICAgICAgICAgbG9vcCBpZHggZHN0X3BvcyB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgaWR4IDwgbGVuZ3RoIHNyYyAtIDFcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSAqKVxuICAgICAgICAgICAgICAgbG9vcCAobGVuZ3RoIHNyYykgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgKCogZm9yIGVzY2FwZWQgc3RyaW5nIGVuZGluZyB3aXRoIGFuIGVzY2FwaW5nIGNoYXIgbGlrZSBcIjAwMF9cIiwganVzdCBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIHRoZSBsYXN0IGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMgLSAxKSAoQnl0ZXMubGVuZ3RoIGRzdCkgdG9fdW5lc2NhcGUnO1xuICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuICh1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZSB+ZXNjYXBlX2NoYXIgPSB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwOltdIH5lc2NhcGVfY2hhclxuXG4gIGxldCBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgcmVjIGxvb3AgcCBjbnQgPVxuICAgICAgaWYgcCA8IDAgfHwgQ2hhci4oIDw+ICkgc3RyLltwXSBlc2NhcGVfY2hhciB0aGVuIGNudCBlbHNlIGxvb3AgKHAgLSAxKSAoY250ICsgMSlcbiAgICBpblxuICAgIGxvb3AgKHBvcyAtIDEpIDBcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGxldCBvZGQgPSBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIG1vZCAyID0gMSBpblxuICAgIG1hdGNoIG9kZCwgQ2hhci5lcXVhbCBzdHIuW3Bvc10gZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgdHJ1ZSwgKHRydWUgfCBmYWxzZSkgLT4gYEVzY2FwZWRcbiAgICB8IGZhbHNlLCB0cnVlIC0+IGBFc2NhcGluZ1xuICAgIHwgZmFsc2UsIGZhbHNlIC0+IGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2JvdW5kIHN0ciBwb3MgZnVuY3Rpb25fbmFtZSA9XG4gICAgaWYgcG9zID49IGxlbmd0aCBzdHIgfHwgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIiVzOiBvdXQgb2YgYm91bmRzXCIgZnVuY3Rpb25fbmFtZSAoKVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2VzY2FwaW5nIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGluZ1wiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwaW5nIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGVkIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGVkXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgRXNjYXBlZCAtPiB0cnVlXG4gICAgfCBgRXNjYXBpbmcgfCBgTGl0ZXJhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2xpdGVyYWwgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2xpdGVyYWxcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImluZGV4X2Zyb21cIjtcbiAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgPVxuICAgICAgaWYgaSA+PSBwb3NcbiAgICAgICYmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAmJiBDaGFyLmVxdWFsIHN0ci5baV0gY2hhclxuICAgICAgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaSA9IGkgKyAxIGluXG4gICAgICAgIGlmIGkgPj0gbGVuZ3RoIHN0clxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSBsb29wIGkgKHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMpKVxuICAgIGluXG4gICAgbG9vcCBwb3MgKGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCJcbiAgICAgICAgICAgWyBcInN0clwiLCBzZXhwX29mX3Qgc3RyXG4gICAgICAgICAgIDsgXCJlc2NhcGVfY2hhclwiLCBzZXhwX29mX2NoYXIgZXNjYXBlX2NoYXJcbiAgICAgICAgICAgOyBcInBvc1wiLCBzZXhwX29mX2ludCBwb3NcbiAgICAgICAgICAgOyBcImNoYXJcIiwgc2V4cF9vZl9jaGFyIGNoYXJcbiAgICAgICAgICAgXSlcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICA7O1xuXG4gIGxldCBpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPSBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG4gIGxldCBpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAwIGNoYXJcblxuICBsZXQgcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcInJpbmRleF9mcm9tXCI7XG4gICAgKCogaWYgdGhlIHRhcmdldCBjaGFyIGlzIHRoZSBzYW1lIGFzIFtlc2NhcGVfY2hhcl0sIHdlIGhhdmUgbm8gd2F5IHRvIGRldGVybWluZSB3aGljaFxuICAgICAgIGVzY2FwZV9jaGFyIGlzIGxpdGVyYWwsIHNvIGp1c3QgcmV0dXJuIE5vbmUgKilcbiAgICBpZiBDaGFyLmVxdWFsIGNoYXIgZXNjYXBlX2NoYXJcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBwb3MgPVxuICAgICAgICBpZiBwb3MgPCAwXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXNjYXBlX2NoYXJzID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBpblxuICAgICAgICAgIGlmIGVzY2FwZV9jaGFycyBtb2QgMiA9IDAgJiYgQ2hhci5lcXVhbCBzdHIuW3Bvc10gY2hhclxuICAgICAgICAgIHRoZW4gU29tZSBwb3NcbiAgICAgICAgICBlbHNlIGxvb3AgKHBvcyAtIGVzY2FwZV9jaGFycyAtIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgcG9zKVxuICA7O1xuXG4gIGxldCByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJyaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgcmluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgaWYgaXNfZW1wdHkgc3RyIHRoZW4gTm9uZSBlbHNlIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgbGV0IHJpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID1cbiAgICByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAobGVuZ3RoIHN0ciAtIDEpIGNoYXJcbiAgOztcblxuICAoKiBbc3BsaXRfZ2VuIHN0ciB+ZXNjYXBlX2NoYXIgfm9uXSB3b3JrcyBzaW1pbGFybHkgdG8gW1N0cmluZy5zcGxpdF9nZW5dLCB3aXRoIGFuXG4gICAgIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnQ6IG9ubHkgc3BsaXQgb24gbGl0ZXJhbCBjaGFycywgbm90IGVzY2FwaW5nIG9yIGVzY2FwZWQgKilcbiAgbGV0IHNwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbiA9XG4gICAgbGV0IGlzX2RlbGltID1cbiAgICAgIG1hdGNoIG9uIHdpdGhcbiAgICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICAgIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyBwb3MgPVxuICAgICAgaWYgcG9zID0gbGVuXG4gICAgICB0aGVuIExpc3QucmV2IChzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoobGVuIC0gbGFzdF9wb3MpIDo6IGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgc3RhdHVzIGluXG4gICAgICAgIGlmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAgICYmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpsYXN0X3BvcyB+bGVuOihwb3MgLSBsYXN0X3BvcykgaW5cbiAgICAgICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgc3RhdHVzIChwb3MgKyAxKSAocG9zICsgMSkpXG4gICAgICAgIGVsc2UgbG9vcCBhY2Mgc3RhdHVzIGxhc3RfcG9zIChwb3MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgW10gYExpdGVyYWwgMCAwXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG4gIGxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbiAgbGV0IHNwbGl0X2F0IHN0ciBwb3MgPVxuICAgIHN1YiBzdHIgfnBvczowIH5sZW46cG9zLCBzdWIgc3RyIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBzdHIgLSBwb3MgLSAxKVxuICA7O1xuXG4gIGxldCBsc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IHJzcGxpdDIgc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPVxuICAgIE9wdGlvbi5tYXAgKHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IGxzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBvbilcbiAgbGV0IHJzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChyaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG5cbiAgKCogW2xhc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYW5kIFtmaXJzdF9ub25fZHJvcF9saXRlcmFsXSBhcmUgZWl0aGVyIGJvdGggW05vbmVdIG9yIGJvdGhcbiAgICAgW1NvbWVdLiBJZiBbU29tZV0sIHRoZW4gdGhlIGZvcm1lciBpcyA+PSB0aGUgbGF0dGVyLiAqKVxuICBsZXQgbGFzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICByZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpXG4gIDs7XG5cbiAgbGV0IGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgfmRyb3AgfmVzY2FwZV9jaGFyIHQgPVxuICAgIGxmaW5kaSB0IH5mOihmdW4gaSBjIC0+XG4gICAgICAobm90IChkcm9wIGMpKVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGluZyB0IH5lc2NhcGVfY2hhciBpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwZWQgdCB+ZXNjYXBlX2NoYXIgaSlcbiAgOztcblxuICBsZXQgcnN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSBpIC0+IGlmIGkgPSBsZW5ndGggdCAtIDEgdGhlbiB0IGVsc2UgcHJlZml4IHQgKGkgKyAxKVxuICA7O1xuXG4gIGxldCBsc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSAwIC0+IHRcbiAgICB8IFNvbWUgbiAtPiBkcm9wX3ByZWZpeCB0IG5cbiAgOztcblxuICAoKiBbc3RyaXAgdF0gY291bGQgYmUgaW1wbGVtZW50ZWQgYXMgW2xzdHJpcCAocnN0cmlwIHQpXS4gIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgICBiZWxvdyBzYXZlcyAoYXQgbGVhc3QpIGEgZmFjdG9yIG9mIHR3byBhbGxvY2F0aW9uLCBieSBvbmx5IGFsbG9jYXRpbmcgdGhlXG4gICAgIGZpbmFsIHJlc3VsdC4gIFRoaXMgYWxzbyBzYXZlcyBzb21lIGFtb3VudCBvZiB0aW1lLiAqKVxuICBsZXQgc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgICAoKiBwZXJmb3JtYW5jZSBoYWNrOiBhdm9pZCBjb3B5aW5nIFt0XSBpbiBjb21tb24gY2FzZXMgKilcbiAgICBpZiBsZW5ndGggPSAwIHx8IG5vdCAoZHJvcCB0LlswXSB8fCBkcm9wIHQuW2xlbmd0aCAtIDFdKVxuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICAgIChtYXRjaCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgfCBTb21lIGxhc3QgLT4gc3ViIHQgfnBvczpmaXJzdCB+bGVuOihsYXN0IC0gZmlyc3QgKyAxKSkpXG4gIDs7XG5lbmRcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG4oKiBPdmVycmlkZSBbU2VhcmNoX3BhdHRlcm5dIHdpdGggZGVmYXVsdCBjYXNlLXNlbnNpdGl2aXR5IGFyZ3VtZW50IGF0IHRoZSBlbmQgb2YgdGhlXG4gICBmaWxlLCBzbyB0aGF0IGNhbGwgc2l0ZXMgYWJvdmUgYXJlIGZvcmNlZCB0byBzdXBwbHkgY2FzZS1zZW5zaXRpdml0eSBleHBsaWNpdGx5LiAqKVxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuID0gc3RydWN0XG4gIGluY2x1ZGUgU2VhcmNoX3BhdHRlcm4wXG5cbiAgbGV0IGNyZWF0ZSA/KGNhc2Vfc2Vuc2l0aXZlID0gdHJ1ZSkgcGF0dGVybiA9IGNyZWF0ZSBwYXR0ZXJuIH5jYXNlX3NlbnNpdGl2ZVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwID0gKGJ5dGVzX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2J5dGVzIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGJ5dGVzX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBCeXRlczBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQnl0ZXNcIlxuICBsZXQgcHAgZm10IHQgPSBDYW1sLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgKHRvX3N0cmluZyB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgVG9fYnl0ZXMgPSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoVCkgKFRvX2J5dGVzKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgZW5kKVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBuIDBcbiAgdGhlbiBQcmludGYuaW52YWxpZF9hcmdmIFwiQnl0ZXMuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCB0ID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgaSlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBzZXQgdCBpIGMpO1xuICB0XG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaSAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCAoaSAtIDEpICh1bnNhZmVfZ2V0IHQgaSA6OiBhY2MpXG4gIGluXG4gIGxvb3AgdCAobGVuZ3RoIHQgLSAxKSBbXVxuOztcblxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxubGV0IG1hcCB0IH5mID0gbWFwIHQgfmZcbmxldCBtYXBpIHQgfmYgPSBtYXBpIHQgfmZcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiB+bGVuIH5wb3MgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIHBvcyBsZW5cbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IH5mIH5sZW4gfnBvczoocG9zICsgMSkgKGYgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IGZvbGRpID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIHBvcyBhY2MgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgfmYgfmxlbjoobGVuZ3RoIHQpIH5wb3M6MCBpbml0XG47O1xuXG5sZXQgdHIgfnRhcmdldCB+cmVwbGFjZW1lbnQgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHMgaSkgdGFyZ2V0IHRoZW4gdW5zYWZlX3NldCBzIGkgcmVwbGFjZW1lbnRcbiAgZG9uZVxuOztcblxubGV0IHRyX211bHRpIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIDBcbiAgdGhlbiBzdGFnZSBpZ25vcmVcbiAgZWxzZSBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aTogcmVwbGFjZW1lbnQgaXMgdGhlIGVtcHR5IHN0cmluZ1wiXG4gIGVsc2UgKFxuICAgIG1hdGNoIEJ5dGVzX3RyLnRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBzdGFnZSBpZ25vcmVcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgcyBpIChTdHJpbmcudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50ICh1bnNhZmVfZ2V0IHMgaSkpKVxuICAgICAgICBkb25lKSlcbjs7XG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCBjb250YWlucyA/cG9zID9sZW4gdCBjaGFyID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGxldCBsYXN0ID0gcG9zICsgbGVuIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgbGFzdFxuICAgICYmIChDaGFyLmVxdWFsIChnZXQgdCBpKSBjaGFyIHx8IGxvb3AgKGkgKyAxKSlcbiAgaW5cbiAgbG9vcCBwb3Ncbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIiMgMSBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiBcbnR5cGUgcmVzdWx0ID1cbnwgTmVnIG9mIHN0cmluZ1xufCBQb3Mgb2Ygc3RyaW5nXG5cbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAyN1xcMDAwXFwwODJcXDAwMFxcMTA1XFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHBhcnNlX2hleCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDEzNSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE0IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIE5lZyBib2R5IClcbiMgMTM5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlcbiMgMTQ1IFwic3JjL2hleF9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTUgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggUG9zIGJvZHkgKVxuIyAxNDkgXCJzcmMvaGV4X2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN5cyA9IFN5czBcblxubGV0IGNvbnZlcnRfZmFpbHVyZSB4IGEgYiB0b19zdHJpbmcgPVxuICBQcmludGYuZmFpbHdpdGhmXG4gICAgXCJjb252ZXJzaW9uIGZyb20gJXMgdG8gJXMgZmFpbGVkOiAlcyBpcyBvdXQgb2YgcmFuZ2VcIlxuICAgIGFcbiAgICBiXG4gICAgKHRvX3N0cmluZyB4KVxuICAgICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IG51bV9iaXRzX2ludCA9IFN5cy5pbnRfc2l6ZV9pbl9iaXRzXG5sZXQgbnVtX2JpdHNfaW50MzIgPSAzMlxubGV0IG51bV9iaXRzX2ludDY0ID0gNjRcbmxldCBudW1fYml0c19uYXRpdmVpbnQgPSBXb3JkX3NpemUubnVtX2JpdHMgV29yZF9zaXplLndvcmRfc2l6ZVxubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPSA2MyB8fCBudW1fYml0c19pbnQgPSAzMSB8fCBudW1fYml0c19pbnQgPSAzMilcbmxldCBtaW5faW50MzIgPSBDYW1sLkludDMyLm1pbl9pbnRcbmxldCBtYXhfaW50MzIgPSBDYW1sLkludDMyLm1heF9pbnRcbmxldCBtaW5faW50NjQgPSBDYW1sLkludDY0Lm1pbl9pbnRcbmxldCBtYXhfaW50NjQgPSBDYW1sLkludDY0Lm1heF9pbnRcbmxldCBtaW5fbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQubWluX2ludFxubGV0IG1heF9uYXRpdmVpbnQgPSBDYW1sLk5hdGl2ZWludC5tYXhfaW50XG5sZXQgaW50X3RvX3N0cmluZyA9IENhbWwuc3RyaW5nX29mX2ludFxubGV0IGludDMyX3RvX3N0cmluZyA9IENhbWwuSW50MzIudG9fc3RyaW5nXG5sZXQgaW50NjRfdG9fc3RyaW5nID0gQ2FtbC5JbnQ2NC50b19zdHJpbmdcbmxldCBuYXRpdmVpbnRfdG9fc3RyaW5nID0gQ2FtbC5OYXRpdmVpbnQudG9fc3RyaW5nXG5cbigqIGludCA8LT4gaW50MzIgKilcblxubGV0IGludF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludFwiIFwiaW50MzJcIiBpbnRfdG9fc3RyaW5nXG5sZXQgaW50MzJfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50MzJcIiBcImludFwiIGludDMyX3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF90cnVuYyA9IENhbWwuSW50MzIudG9faW50XG5sZXQgaW50X3RvX2ludDMyX3RydW5jID0gQ2FtbC5JbnQzMi5vZl9pbnRcblxubGV0IGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgaWYgbnVtX2JpdHNfaW50IDw9IG51bV9iaXRzX2ludDMyXG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50MzJfdG9faW50X3RydW5jIG1pbl9pbnQzMiBpblxuICAgIGxldCBtYXggPSBpbnQzMl90b19pbnRfdHJ1bmMgbWF4X2ludDMyIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50X3RvX2ludDMyX3RydW5jIEludC5taW5fdmFsdWUgaW5cbiAgICBsZXQgbWF4ID0gaW50X3RvX2ludDMyX3RydW5jIEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDMyIG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQzMiB4IG1heCA8PSAwKVxuOztcblxubGV0IGludF90b19pbnQzMiB4ID1cbiAgaWYgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludF90b19pbnQzMl90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQzMl90b19pbnQgeCA9XG4gIGlmIGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChpbnQzMl90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIGludF90b19pbnQzMl90cnVuYyB4IGVsc2UgaW50X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxubGV0IGludDMyX3RvX2ludF9leG4geCA9XG4gIGlmIGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBpbnQzMl90b19pbnRfdHJ1bmMgeCBlbHNlIGludDMyX3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludCA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnRcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50IDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50X3RvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9pbnRcbmxldCBpbnQ2NF90b19pbnRfdHJ1bmMgPSBDYW1sLkludDY0LnRvX2ludFxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBsZXQgbWluID0gaW50X3RvX2ludDY0IEludC5taW5fdmFsdWUgaW5cbiAgbGV0IG1heCA9IGludF90b19pbnQ2NCBJbnQubWF4X3ZhbHVlIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChpbnQ2NF90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9faW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDY0X3RvX2ludF90cnVuYyB4IGVsc2UgaW50NjRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJuYXRpdmVpbnRcIiBcImludFwiIG5hdGl2ZWludF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50IDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnRfdG9fbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQub2ZfaW50XG5sZXQgbmF0aXZlaW50X3RvX2ludF90cnVuYyA9IENhbWwuTmF0aXZlaW50LnRvX2ludFxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19uYXRpdmVpbnQgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9fbmF0aXZlaW50IEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludCB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnRfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnRfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDMyXCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50MzJfdG9faW50NjQgPSBDYW1sLkludDY0Lm9mX2ludDMyXG5sZXQgaW50NjRfdG9faW50MzJfdHJ1bmMgPSBDYW1sLkludDY0LnRvX2ludDMyXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgbGV0IG1pbiA9IGludDMyX3RvX2ludDY0IG1pbl9pbnQzMiBpblxuICBsZXQgbWF4ID0gaW50MzJfdG9faW50NjQgbWF4X2ludDMyIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQzMiB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gU29tZSAoaW50NjRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzJfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBpbnQ2NF90b19pbnQzMl90cnVuYyB4XG4gIGVsc2UgaW50NjRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzJfZmFpbHVyZSB4ID1cbiAgY29udmVydF9mYWlsdXJlIHggXCJuYXRpdmVpbnRcIiBcImludDMyXCIgbmF0aXZlaW50X3RvX3N0cmluZ1xuOztcblxubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQzMiA8PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50MzJfdG9fbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQub2ZfaW50MzJcbmxldCBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgPSBDYW1sLk5hdGl2ZWludC50b19pbnQzMlxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19uYXRpdmVpbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19uYXRpdmVpbnQgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX25hdGl2ZWludCBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludDMyX3RydW5jIHgpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9leG4geCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDY0IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IGludDY0X3RvX25hdGl2ZWludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJuYXRpdmVpbnRcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50NjQgPj0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDY0X3RvX25hdGl2ZWludF90cnVuYyA9IENhbWwuSW50NjQudG9fbmF0aXZlaW50XG5sZXQgbmF0aXZlaW50X3RvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9uYXRpdmVpbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50NjQgPD0gbnVtX2JpdHNfbmF0aXZlaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gbmF0aXZlaW50X3RvX2ludDY0IG1pbl9uYXRpdmVpbnQgaW5cbiAgICBsZXQgbWF4ID0gbmF0aXZlaW50X3RvX2ludDY0IG1heF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDY0X3RvX25hdGl2ZWludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIFNvbWUgKGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCB4XG4gIHRoZW4gaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gaW50NjMgKilcblxubGV0IGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDYzXCIgaW50NjRfdG9fc3RyaW5nXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzID1cbiAgbGV0IG1pbiA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHQgbWluX2ludDY0IDEgaW5cbiAgbGV0IG1heCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHQgbWF4X2ludDY0IDEgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X2ZpdF9vbl9pbnQ2M19leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgeCB0aGVuICgpIGVsc2UgaW50NjRfdG9faW50NjNfZmFpbHVyZSB4XG47O1xuXG4oKiBzdHJpbmcgY29udmVyc2lvbnMgKilcblxubGV0IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlciA9XG4gIGxldCBpbnB1dF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIGlucHV0IGluXG4gIGlmIGlucHV0X2xlbmd0aCA8PSBjaGFyc19wZXJfZGVsaW1pdGVyXG4gIHRoZW4gaW5wdXRcbiAgZWxzZSAoXG4gICAgbGV0IGhhc19zaWduID1cbiAgICAgIG1hdGNoIGlucHV0LlswXSB3aXRoXG4gICAgICB8ICcrJyB8ICctJyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBudW1fZGlnaXRzID0gaWYgaGFzX3NpZ24gdGhlbiBpbnB1dF9sZW5ndGggLSAxIGVsc2UgaW5wdXRfbGVuZ3RoIGluXG4gICAgbGV0IG51bV9kZWxpbWl0ZXJzID0gKG51bV9kaWdpdHMgLSAxKSAvIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgb3V0cHV0X2xlbmd0aCA9IGlucHV0X2xlbmd0aCArIG51bV9kZWxpbWl0ZXJzIGluXG4gICAgbGV0IG91dHB1dCA9IEJ5dGVzLmNyZWF0ZSBvdXRwdXRfbGVuZ3RoIGluXG4gICAgbGV0IGlucHV0X3BvcyA9IHJlZiAoaW5wdXRfbGVuZ3RoIC0gMSkgaW5cbiAgICBsZXQgb3V0cHV0X3BvcyA9IHJlZiAob3V0cHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgPSByZWYgY2hhcnNfcGVyX2RlbGltaXRlciBpblxuICAgIGxldCBmaXJzdF9kaWdpdF9wb3MgPSBpZiBoYXNfc2lnbiB0aGVuIDEgZWxzZSAwIGluXG4gICAgd2hpbGUgIWlucHV0X3BvcyA+PSBmaXJzdF9kaWdpdF9wb3MgZG9cbiAgICAgIGlmICFudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXRwdXQgIW91dHB1dF9wb3MgZGVsaW1pdGVyO1xuICAgICAgICBkZWNyIG91dHB1dF9wb3M7XG4gICAgICAgIG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgOj0gY2hhcnNfcGVyX2RlbGltaXRlcik7XG4gICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGlucHV0LlshaW5wdXRfcG9zXTtcbiAgICAgIGRlY3IgaW5wdXRfcG9zO1xuICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgZGVjciBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyXG4gICAgZG9uZTtcbiAgICBpZiBoYXNfc2lnbiB0aGVuIEJ5dGVzLnNldCBvdXRwdXQgMCBpbnB1dC5bMF07XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXRwdXQpXG47O1xuXG5sZXQgaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyID1cbiAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBpbnB1dCB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyOjNcbjs7XG5cbmxldCBpbnNlcnRfdW5kZXJzY29yZXMgaW5wdXQgPSBpbnNlcnRfZGVsaW1pdGVyIGlucHV0IH5kZWxpbWl0ZXI6J18nXG5sZXQgc2V4cF9vZl9pbnRfc3R5bGUgPSBTZXhwLm9mX2ludF9zdHlsZVxuXG5tb2R1bGUgTWFrZSAoSSA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG9wZW4gSVxuXG4gIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gM1xuXG4gIGxldCB0b19zdHJpbmdfaHVtID8oZGVsaW1pdGVyID0gJ18nKSB0ID1cbiAgICBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5ICh0b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgdCBpblxuICAgIFNleHAuQXRvbVxuICAgICAgKG1hdGNoICFzZXhwX29mX2ludF9zdHlsZSB3aXRoXG4gICAgICAgfCBgVW5kZXJzY29yZXMgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBzIH5jaGFyc19wZXJfZGVsaW1pdGVyIH5kZWxpbWl0ZXI6J18nXG4gICAgICAgfCBgTm9fdW5kZXJzY29yZXMgLT4gcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9oZXggKEkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIG5lZyA6IHQgLT4gdFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVF9oZXggPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChJLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgSS5oYXNoX2ZvbGRfdFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBJLmhhc2ggaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNoYXJzX3Blcl9kZWxpbWl0ZXIgPSA0XG5cbiAgICBsZXQgdG9fc3RyaW5nJyA/ZGVsaW1pdGVyIHQgPVxuICAgICAgbGV0IG1ha2Vfc3VmZml4ID1cbiAgICAgICAgbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEkudG9fc3RyaW5nXG4gICAgICAgIHwgU29tZSBkZWxpbWl0ZXIgLT5cbiAgICAgICAgICBmdW4gdCAtPiBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IChJLnRvX3N0cmluZyB0KSB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyXG4gICAgICBpblxuICAgICAgaWYgSS4oIDwgKSB0IEkuemVybyB0aGVuIFwiLTB4XCIgXiBtYWtlX3N1ZmZpeCAoSS5uZWcgdCkgZWxzZSBcIjB4XCIgXiBtYWtlX3N1ZmZpeCB0XG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgdCA9IHRvX3N0cmluZycgdCA/ZGVsaW1pdGVyOk5vbmVcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9IHRvX3N0cmluZycgdCB+ZGVsaW1pdGVyXG5cbiAgICBsZXQgaW52YWxpZCBzdHIgPVxuICAgICAgUHJpbnRmLmZhaWx3aXRoZiBcIiVzLm9mX3N0cmluZzogaW52YWxpZCBpbnB1dCAlU1wiIEkubW9kdWxlX25hbWUgc3RyICgpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgc3RyID1cbiAgICAgIEkub2Zfc3RyaW5nIChTdHJpbmcuZmlsdGVyIHN0ciB+ZjooZnVuIGMgLT4gQ2hhci4oIDw+ICkgYyAnXycpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgICBsZXQgbW9kdWxlIEwgPSBIZXhfbGV4ZXIgaW5cbiAgICAgIGxldCBsZXggPSBDYW1sLkxleGluZy5mcm9tX3N0cmluZyBzdHIgaW5cbiAgICAgIGxldCByZXN1bHQgPSBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBMLnBhcnNlX2hleCBsZXgpIGluXG4gICAgICBpZiBsZXgubGV4X2N1cnJfcG9zID0gbGV4LmxleF9idWZmZXJfbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWQgc3RyXG4gICAgICAgIHwgU29tZSAoTmVnIGJvZHkpIC0+IEkubmVnIChvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgYm9keSlcbiAgICAgICAgfCBTb21lIChQb3MgYm9keSkgLT4gb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICBlbHNlIGludmFsaWQgc3RyXG4gICAgOztcblxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRfaGV4XG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChUX2hleClcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgZmlsZSB3YXMgYXV0b2dlbmVyYXRlZCBieSAuLi9nZW5lcmF0ZS9nZW5lcmF0ZV9wb3dfb3ZlcmZsb3dfYm91bmRzLmV4ZSAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbigqIFdlIGhhdmUgdG8gdXNlIEludDY0LnRvX2ludF9leG4gaW5zdGVhZCBvZiBpbnQgY29uc3RhbnRzIHRvIG1ha2VcbiAgIHN1cmUgdGhhdCBmaWxlIGNhbiBiZSBwcmVwcm9jZXNzZWQgb24gMzItYml0IG1hY2hpbmVzLiAqKVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIDogaW50MzIgPVxuICAyMTQ3NDgzNjQ3bFxuXG5sZXQgaW50MzJfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50MzIgYXJyYXkgPVxuICBbfCAyMTQ3NDgzNjQ3bFxuICA7ICAyMTQ3NDgzNjQ3bFxuICA7ICA0NjM0MGxcbiAgOyAgMTI5MGxcbiAgOyAgMjE1bFxuICA7ICA3M2xcbiAgOyAgMzVsXG4gIDsgIDIxbFxuICA7ICAxNGxcbiAgOyAgMTBsXG4gIDsgIDhsXG4gIDsgIDdsXG4gIDsgIDVsXG4gIDsgIDVsXG4gIDsgIDRsXG4gIDsgIDRsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIHxdXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIDogaW50ID1cbiAgKC0xKSBsc3IgMVxuXG5sZXQgaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludCBhcnJheSA9XG4gIG1hdGNoIEludF9jb252ZXJzaW9ucy5udW1fYml0c19pbnQgd2l0aFxuICB8IDMyIC0+IEFycmF5Lm1hcCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgfmY6Q2FtbC5JbnQzMi50b19pbnRcbiAgfCA2MyAtPlxuICAgIFt8IENhbWwuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgQ2FtbC5JbnQ2NC50b19pbnQgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgICA7ICBDYW1sLkludDY0LnRvX2ludCAyMTQ3NDgzNjQ3TFxuICAgIDsgIDE2NjQ1MTBcbiAgICA7ICA0NjM0MFxuICAgIDsgIDU0MDRcbiAgICA7ICAxMjkwXG4gICAgOyAgNDYzXG4gICAgOyAgMjE1XG4gICAgOyAgMTE4XG4gICAgOyAgNzNcbiAgICA7ICA0OVxuICAgIDsgIDM1XG4gICAgOyAgMjdcbiAgICA7ICAyMVxuICAgIDsgIDE3XG4gICAgOyAgMTRcbiAgICA7ICAxMlxuICAgIDsgIDEwXG4gICAgOyAgOVxuICAgIDsgIDhcbiAgICA7ICA3XG4gICAgOyAgN1xuICAgIDsgIDZcbiAgICA7ICA1XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgfF1cbiAgfCAzMSAtPlxuICAgIFt8IDEwNzM3NDE4MjNcbiAgICA7ICAxMDczNzQxODIzXG4gICAgOyAgMzI3NjdcbiAgICA7ICAxMDIzXG4gICAgOyAgMTgxXG4gICAgOyAgNjNcbiAgICA7ICAzMVxuICAgIDsgIDE5XG4gICAgOyAgMTNcbiAgICA7ICAxMFxuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbnQ2NF92YWx1ZSA6IGludDY0ID1cbiAgNDYxMTY4NjAxODQyNzM4NzkwM0xcblxubGV0IGludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgOyAgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgOyAgMjE0NzQ4MzY0N0xcbiAgOyAgMTY2NDUxMExcbiAgOyAgNDYzNDBMXG4gIDsgIDU0MDRMXG4gIDsgIDEyOTBMXG4gIDsgIDQ2M0xcbiAgOyAgMjE1TFxuICA7ICAxMThMXG4gIDsgIDczTFxuICA7ICA0OUxcbiAgOyAgMzVMXG4gIDsgIDI3TFxuICA7ICAyMUxcbiAgOyAgMTdMXG4gIDsgIDE0TFxuICA7ICAxMkxcbiAgOyAgMTBMXG4gIDsgIDlMXG4gIDsgIDhMXG4gIDsgIDdMXG4gIDsgIDdMXG4gIDsgIDZMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDFMXG4gIDsgIDFMXG4gIHxdXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG5cbmxldCBpbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIDMwMzcwMDA0OTlMXG4gIDsgIDIwOTcxNTFMXG4gIDsgIDU1MTA4TFxuICA7ICA2MjA4TFxuICA7ICAxNDQ4TFxuICA7ICA1MTFMXG4gIDsgIDIzNExcbiAgOyAgMTI3TFxuICA7ICA3OExcbiAgOyAgNTJMXG4gIDsgIDM4TFxuICA7ICAyOExcbiAgOyAgMjJMXG4gIDsgIDE4TFxuICA7ICAxNUxcbiAgOyAgMTNMXG4gIDsgIDExTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCAtOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC0zMDM3MDAwNDk5TFxuICA7ICAtMjA5NzE1MUxcbiAgOyAgLTU1MTA4TFxuICA7ICAtNjIwOExcbiAgOyAgLTE0NDhMXG4gIDsgIC01MTFMXG4gIDsgIC0yMzRMXG4gIDsgIC0xMjdMXG4gIDsgIC03OExcbiAgOyAgLTUyTFxuICA7ICAtMzhMXG4gIDsgIC0yOExcbiAgOyAgLTIyTFxuICA7ICAtMThMXG4gIDsgIC0xNUxcbiAgOyAgLTEzTFxuICA7ICAtMTFMXG4gIDsgIC05TFxuICA7ICAtOExcbiAgOyAgLTdMXG4gIDsgIC03TFxuICA7ICAtNkxcbiAgOyAgLTZMXG4gIDsgIC01TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTFMXG4gIHxdXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCBuZWdhdGl2ZV9leHBvbmVudCAoKSA9IFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJleHBvbmVudCBjYW4gbm90IGJlIG5lZ2F0aXZlXCIgKClcbmxldCBvdmVyZmxvdyAoKSA9IFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJpbnRlZ2VyIG92ZXJmbG93IGluIHBvd1wiICgpXG5cbigqIFRvIGltcGxlbWVudCBbaW50NjRfcG93XSwgd2UgdXNlIEMgY29kZSByYXRoZXIgdGhhbiBPQ2FtbCB0byBlbGltaW5hdGUgYWxsb2NhdGlvbi4gKilcbmV4dGVybmFsIGludF9tYXRoX2ludF9wb3cgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWJcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaW50X21hdGhfaW50NjRfcG93IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWJcIlxuXG5sZXQgaW50X3BvdyBiYXNlIGV4cG9uZW50ID1cbiAgaWYgZXhwb25lbnQgPCAwIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMVxuICAmJiAoZXhwb25lbnQgPiA2M1xuICAgICAgfHwgYWJzIGJhc2UgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKGV4cG9uZW50KSlcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgSW50NjRfd2l0aF9jb21wYXJpc29ucyA9IHN0cnVjdFxuICBpbmNsdWRlIENhbWwuSW50NjRcblxuICBleHRlcm5hbCAoIDwgKSA6IGludDY0IC0+IGludDY0IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5lbmRcblxuKCogd2UgZG9uJ3QgZG8gW2Fic10gaW4gaW50NjQgY2FzZSB0byBhdm9pZCBhbGxvY2F0aW9uICopXG5sZXQgaW50NjRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBsZXQgb3BlbiBJbnQ2NF93aXRoX2NvbXBhcmlzb25zIGluXG4gIGlmIGV4cG9uZW50IDwgMEwgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgKGJhc2UgPiAxTCB8fCBiYXNlIDwgLTFMKVxuICAmJiAoZXhwb25lbnQgPiA2M0xcbiAgICAgIHx8IChiYXNlID49IDBMXG4gICAgICAgICAgJiYgYmFzZSA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpXG4gICAgICAgICApXG4gICAgICB8fCAoYmFzZSA8IDBMXG4gICAgICAgICAgJiYgYmFzZSA8IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpXG4gICAgICAgICApKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubGV0IGludDYzX3Bvd19vbl9pbnQ2NCBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMUxcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCBhYnMgYmFzZVxuICAgICAgICAgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICApXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludDY0X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgdHlwZSBNYWtlX2FyZyA9IHNpZ1xuICB0eXBlIHRcblxuICBpbmNsdWRlIEZsb2F0YWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIH4tICkgOiB0IC0+IHRcblxuICBpbmNsdWRlIENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIE1ha2UgKFggOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgb3BlbiBYXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gWC5yZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgb25lID0gb2ZfaW50X2V4biAxXG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gICgqKiBmbG9hdCBkaXZpc2lvbiBvZiBpbnRlZ2VycyAqKVxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGxldCByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPSBpIC0gKGkgJSBtb2R1bHVzKVxuXG4gIGxldCByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBpZiByZW1haW5kZXIgPSB6ZXJvIHRoZW4gaSBlbHNlIGkgKyBtb2R1bHVzIC0gcmVtYWluZGVyXG4gIDs7XG5cbiAgbGV0IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgaWYgaSA9IHplcm9cbiAgICB0aGVuIHplcm9cbiAgICBlbHNlIGlmIGkgPiB6ZXJvXG4gICAgdGhlbiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgZWxzZSByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuXG4gIGxldCByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPVxuICAgIGxldCByZW1haW5kZXIgPSBpICUgbW9kdWx1cyBpblxuICAgIGxldCBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA9IG1vZHVsdXMgLSByZW1haW5kZXIgaW5cbiAgICBpZiBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA8PSByZW1haW5kZXJcbiAgICB0aGVuIGkgKyBtb2R1bHVzX21pbnVzX3JlbWFpbmRlclxuICAgIGVsc2UgaSAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldCByb3VuZCA/KGRpciA9IGBOZWFyZXN0KSBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgbWF0Y2ggZGlyIHdpdGhcbiAgICB8IGBOZWFyZXN0IC0+IHJvdW5kX25lYXJlc3QgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBEb3duIC0+IHJvdW5kX2Rvd24gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBVcCAtPiByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYFplcm8gLT4gcm91bmRfdG93YXJkc196ZXJvIGkgfnRvX211bHRpcGxlX29mXG4gIDs7XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGludF9wb3cgPSBpbnRfcG93XG4gIGxldCBpbnQ2NF9wb3cgPSBpbnQ2NF9wb3dcbiAgbGV0IGludDYzX3Bvd19vbl9pbnQ2NCA9IGludDYzX3Bvd19vbl9pbnQ2NFxuXG4gIG1vZHVsZSBQb3dfb3ZlcmZsb3dfYm91bmRzID0gUG93X292ZXJmbG93X2JvdW5kc1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCogQyBzdHViIGZvciBpbnQgcG9wY291bnQgdG8gdXNlIHRoZSBQT1BDTlQgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbmV4dGVybmFsIGludF9wb3Bjb3VudCA6IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50XCIgW0BAbm9hbGxvY11cblxuKCogVG8gbWFpbnRhaW4gamF2YXNjcmlwdCBjb21wYXRpYmlsaXR5IGFuZCBlbmFibGUgdW5ib3hpbmcsIHdlIGltcGxlbWVudCBwb3Bjb3VudCBpblxuICAgT0NhbWwgcmF0aGVyIHRoYW4gdXNlIEMgc3R1YnMuIEltcGxlbWVudGF0aW9uIGFkYXB0ZWQgZnJvbTpcbiAgIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbW1pbmdfd2VpZ2h0I0VmZmljaWVudF9pbXBsZW1lbnRhdGlvbiAqKVxubGV0IGludDY0X3BvcGNvdW50ID1cbiAgbGV0IG9wZW4gQ2FtbC5JbnQ2NCBpblxuICBsZXQgKCArICkgPSBhZGQgaW5cbiAgbGV0ICggLSApID0gc3ViIGluXG4gIGxldCAoICogKSA9IG11bCBpblxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgaW5cbiAgbGV0ICggbGFuZCApID0gbG9nYW5kIGluXG4gIGxldCBtMSA9IDB4NTU1NTU1NTU1NTU1NTU1NUwgaW5cbiAgKCogMGIwMTAxMDEwMS4uLiAqKVxuICBsZXQgbTIgPSAweDMzMzMzMzMzMzMzMzMzMzNMIGluXG4gICgqIDBiMDAxMTAwMTEuLi4gKilcbiAgbGV0IG00ID0gMHgwZjBmMGYwZjBmMGYwZjBmTCBpblxuICAoKiAwYjAwMDAxMTExLi4uICopXG4gIGxldCBoMDEgPSAweDAxMDEwMTAxMDEwMTAxMDFMIGluXG4gICgqIDEgYml0IHNldCBwZXIgYnl0ZSAqKVxuICBmdW4gW0BpbmxpbmVdIHggLT5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgcGFpciBvZiBiaXRzICopXG4gICAgbGV0IHggPSB4IC0gKCh4IGxzciAxKSBsYW5kIG0xKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSA0IGJpdHMgKilcbiAgICBsZXQgeCA9ICh4IGxhbmQgbTIpICsgKCh4IGxzciAyKSBsYW5kIG0yKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSBieXRlICopXG4gICAgbGV0IHggPSAoeCArICh4IGxzciA0KSkgbGFuZCBtNCBpblxuICAgICgqIHN1bSB0aGUgYml0IGNvdW50cyBpbiB0aGUgdG9wIGJ5dGUgYW5kIHNoaWZ0IGl0IGRvd24gKilcbiAgICB0b19pbnQgKCh4ICogaDAxKSBsc3IgNTYpXG47O1xuXG5sZXQgaW50MzJfcG9wY291bnQgPVxuICAoKiBPbiA2NC1iaXQgc3lzdGVtcywgdGhpcyBpcyBmYXN0ZXIgdGhhbiBpbXBsZW1lbnRpbmcgdXNpbmcgW2ludDMyXSBhcml0aG1ldGljLiAqKVxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmTCBpblxuICBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKENhbWwuSW50NjQubG9nYW5kIChDYW1sLkludDY0Lm9mX2ludDMyIHgpIG1hc2spXG47O1xuXG5sZXQgbmF0aXZlaW50X3BvcGNvdW50ID1cbiAgbWF0Y2ggQ2FtbC5OYXRpdmVpbnQuc2l6ZSB3aXRoXG4gIHwgMzIgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDMyX3BvcGNvdW50IChDYW1sLk5hdGl2ZWludC50b19pbnQzMiB4KVxuICB8IDY0IC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQ2NF9wb3Bjb3VudCAoQ2FtbC5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTaWduMFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoU2lnbjApXG5cbigqIE9wZW4gW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb25zIHNvXG4gICB0aGV5IGRvIG5vdCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IE5lZyAtPiAtMS5cbiAgfCBaZXJvIC0+IDAuXG4gIHwgUG9zIC0+IDEuXG47O1xuXG5sZXQgZmxpcCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFBvc1xuICB8IFplcm8gLT4gWmVyb1xuICB8IFBvcyAtPiBOZWdcbjs7XG5cbmxldCAoICogKSB0IHQnID0gb2ZfaW50ICh0b19pbnQgdCAqIHRvX2ludCB0JylcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYXQgdGhlIGVuZCwgYWZ0ZXIgYW55XG4gICBmdW5jdG9yIGFwcGxpY2F0aW9ucyB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzb1xuICAgdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzXG4gICBtb2R1bGUuICopXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludF9pbnRmXG5pbmNsdWRlIEludDBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlIHggeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSB4IHlcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgfCBfIC0+IFByaW50Zi5mYWlsd2l0aGYgXCJJbnQub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG5lbmRcblxubGV0IG51bV9iaXRzID0gSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgdG9fZmxvYXQgPSBDYW1sLmZsb2F0X29mX2ludFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IENhbWwuaW50X29mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIENhbWwuaW50X29mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJXhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiV4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50XCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5leHRlcm5hbCB0b19pbnQzMl90cnVuYyA6IHQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzJfdHJ1bmMgOiBpbnQzMiAtPiB0ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2ludDY0X3RydW5jIDogaW50NjQgLT4gdCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnRfdHJ1bmMgOiBuYXRpdmVpbnQgLT4gdCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuXG5sZXQgcHJlZCBpID0gaSAtIDFcbmxldCBzdWNjIGkgPSBpICsgMVxubGV0IHRvX2ludCBpID0gaVxubGV0IHRvX2ludF9leG4gPSB0b19pbnRcbmxldCBvZl9pbnQgaSA9IGlcbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgbWF4X3ZhbHVlID0gQ2FtbC5tYXhfaW50XG5sZXQgbWluX3ZhbHVlID0gQ2FtbC5taW5faW50XG5sZXQgbWF4X3ZhbHVlXzMwX2JpdHMgPSAweDNGRkZfRkZGRlxubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19pbnRcbmxldCBvZl9pbnQzMl9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnQzMiA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IHRvX2ludDY0ID0gQ29udi5pbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBhYnMgeCA9IGFicyB4XG5cbigqIG5vdGUgdGhhdCByZW0gaXMgbm90IHNhbWUgYXMgJSAqKVxubGV0IHJlbSBhIGIgPSBhIG1vZCBiXG5sZXQgaW5jciA9IENhbWwuaW5jclxubGV0IGRlY3IgPSBDYW1sLmRlY3JcbmxldCBzaGlmdF9yaWdodCBhIGIgPSBhIGFzciBiXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCBhIGIgPSBhIGxzciBiXG5sZXQgc2hpZnRfbGVmdCBhIGIgPSBhIGxzbCBiXG5sZXQgYml0X25vdCBhID0gbG5vdCBhXG5sZXQgYml0X29yIGEgYiA9IGEgbG9yIGJcbmxldCBiaXRfYW5kIGEgYiA9IGEgbGFuZCBiXG5sZXQgYml0X3hvciBhIGIgPSBhIGx4b3IgYlxubGV0IHBvdyA9IEludF9tYXRoLlByaXZhdGUuaW50X3Bvd1xubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IC0gMSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgeCArIDFcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggLSAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kICh4IC0gMSkgPSAwXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogICgqIE5vdGUgdGhhdCB3ZSBwYXNzIHRoZSB0YWdnZWQgaW50IGhlcmUuIFNlZSBpbnRfbWF0aF9zdHVicy5jIGZvciBkZXRhaWxzIG9uIHdoeVxuICAgICAgICAgIHRoaXMgaXMgY29ycmVjdC4gKilcbiAgICBpbnRcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50X2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6X3VudGFnZ2VkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50W0B1bnRhZ2dlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2N0el91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIGlmIGkgPSAxIHRoZW4gMCBlbHNlIG51bV9iaXRzIC0gY2x6IChpIC0gMSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcblxubGV0IHNpZ24gPSBTaWduLm9mX2ludFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50X3BvcGNvdW50XG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBleHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbiAgZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG4gIGV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuICBleHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbiAgZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiB0IC0+IHQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgbW9kdWxlIEYgPSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBpbmNsdWRlIEZcblxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuXG4gICgqIFRoZXNlIGlubGluZWQgdmVyc2lvbnMgb2YgKCUpLCAoLyUpLCBhbmQgKC8vKSBwZXJmb3JtIGJldHRlciB0aGFuIHRoZWlyIGZ1bmN0b3JpemVkXG4gICAgIGNvdW50ZXJwYXJ0cyBpbiBbRl0gKHNlZSBiZW5jaG1hcmtzIGJlbG93KS5cblxuICAgICBUaGUgcmVhc29uIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBpbiBbSW50XSBidXQgbm90IGluIGFueSBvZiB0aGUgb3RoZXIgaW50ZWdlclxuICAgICBtb2R1bGVzIGlzIHRoYXQgdGhleSBleGlzdGVkIGluIFtJbnRdIGFuZCBbSW50XSBhbG9uZSBwcmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9mXG4gICAgIHRoZSBbSW50X21hdGguTWFrZV0gZnVuY3RvciwgYW5kIHdlIGRpZG4ndCB3YW50IHRvIGRlZ3JhZGUgdGhlaXIgcGVyZm9ybWFuY2UuXG5cbiAgICAgV2Ugd29uJ3QgcHJlLWVtcHRpdmVseSBkbyB0aGUgc2FtZSBmb3IgbmV3IGZ1bmN0aW9ucywgdW5sZXNzIHNvbWVvbmUgY2FyZXMsIG9uIGEgY2FzZVxuICAgICBieSBjYXNlIGZhc2hpb24uICAqKVxuXG4gIGxldCAoICUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAlJSAlcyBpbiBjb3JlX2ludC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgbGV0IHJ2YWwgPSByZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgKCAvJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gIGxldCAoIC8vICkgeCB5ID0gdG9fZmxvYXQgeCAvLiB0b19mbG9hdCB5XG5cbiAgZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG4gIGV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbiAgbGV0IGxub3QgPSBsbm90XG5cbiAgZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbiAgZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbiAgZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludF0gYW5kIFtJbnQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgT19GID0gTy5GXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yXG4gICBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgVWNoYXIwXG5cbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVjaGFyXCJcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBIYXNoLmZvbGRfaW50IHN0YXRlICh0b19pbnQgdClcbiAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgbGV0IHRvX3N0cmluZyB0ID0gUHJpbnRmLnNwcmludGYgXCJVKyUwNFhcIiAodG9faW50IHQpXG5cbiAgKCogRG8gbm90IGFjdHVhbGx5IGV4cG9ydCB0aGlzLiBTZWUgZGlzY3Vzc2lvbiBpbiB0aGUgLm1saSAqKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIlUrJVhcIiAoZnVuIGkgLT4gVWNoYXIwLm9mX2ludCBpKSB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gb2YgdGhlIGZvcm0gVStYWFhYIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgaW50X2lzX3NjYWxhciA9IGlzX3ZhbGlkXG5cbmxldCBzdWNjX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5zdWNjIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnN1Y2NfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHN1Y2MgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAuc3VjYyBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBwcmVkX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5wcmVkIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnByZWRfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHByZWQgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAucHJlZCBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBvZl9zY2FsYXIgaSA9IGlmIGludF9pc19zY2FsYXIgaSB0aGVuIFNvbWUgKHVuc2FmZV9vZl9pbnQgaSkgZWxzZSBOb25lXG5cbmxldCBvZl9zY2FsYXJfZXhuIGkgPVxuICBpZiBpbnRfaXNfc2NhbGFyIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJVY2hhci5vZl9pbnRfZXhuIGdvdCBhIGludmFsaWQgVW5pY29kZSBzY2FsYXIgdmFsdWU6ICUwNFhcIiBpICgpXG47O1xuXG5sZXQgdG9fc2NhbGFyIHQgPSBVY2hhcjAudG9faW50IHRcbmxldCB0b19jaGFyIGMgPSBpZiBpc19jaGFyIGMgdGhlbiBTb21lICh1bnNhZmVfdG9fY2hhciBjKSBlbHNlIE5vbmVcblxubGV0IHRvX2NoYXJfZXhuIGMgPVxuICBpZiBpc19jaGFyIGNcbiAgdGhlbiB1bnNhZmVfdG9fY2hhciBjXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIudG9fY2hhcl9leG4gZ290IGEgbm9uIGxhdGluLTEgY2hhcmFjdGVyOiBVKyUwNFhcIiAodG9faW50IGMpICgpXG47O1xuXG5sZXQgdXRmOF9ieXRlX2xlbmd0aCB1Y2hhciA9XG4gIGxldCBjb2RlcG9pbnQgPSB0b19zY2FsYXIgdWNoYXIgaW5cbiAgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MDBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIDRcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYSkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMDNfIGJfXzAwNF8pXG4gICAgICA6ICAoKGFfXzAwM18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDA0XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAwM18sIGJfXzAwNF8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyBUIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlRcIlxuOztcblxuW0BAQGVuZF1cblxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgc3ltICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYiwgYSkgdCA9IFRcbmxldCB0cmFucyAodHlwZSBhIGIgYykgKFQgOiAoYSwgYikgdCkgKFQgOiAoYiwgYykgdCkgOiAoYSwgYykgdCA9IFRcbmxldCBjb252ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgKGEgOiBhKSA6IGIgPSBhXG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG5cbm1vZHVsZSBMaWZ0MiAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGExIGIxIGEyIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdClcbiAgICA6ICgoYTEsIGEyKSBYLnQsIChiMSwgYjIpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubW9kdWxlIExpZnQzIChYIDogc2lnXG4gICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMiBhMyBiMykgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIChUIDogKGEzLCBiMykgdClcbiAgICA6ICgoYTEsIGEyLCBhMykgWC50LCAoYjEsIGIyLCBiMykgWC50KSB0XG4gICAgPVxuICAgIFRcbiAgOztcbmVuZFxuXG5sZXQgZGV0dXBsZTIgKHR5cGUgYTEgYTIgYjEgYjIpIChUIDogKGExICogYTIsIGIxICogYjIpIHQpIDogKGExLCBiMSkgdCAqIChhMiwgYjIpIHQgPVxuICBULCBUXG47O1xuXG5sZXQgdHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdCkgOiAoYTEgKiBhMiwgYjEgKiBiMikgdCA9IFRcblxubW9kdWxlIHR5cGUgSW5qZWN0aXZlID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBzdHJpcCA6ICgnYSB0LCAnYiB0KSBlcXVhbCAtPiAoJ2EsICdiKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZTIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHRcblxuICB2YWwgc3RyaXAgOiAoKCdhMSwgJ2EyKSB0LCAoJ2IxLCAnYjIpIHQpIGVxdWFsIC0+ICgnYTEsICdiMSkgZXF1YWwgKiAoJ2EyLCAnYjIpIGVxdWFsXG5lbmRcblxubW9kdWxlIENvbXBvc2l0aW9uX3ByZXNlcnZlc19pbmplY3Rpdml0eSAoTTEgOiBJbmplY3RpdmUpIChNMiA6IEluamVjdGl2ZSkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgTTEudCBNMi50XG5cbiAgbGV0IHN0cmlwIGUgPSBNMS5zdHJpcCAoTTIuc3RyaXAgZSlcbmVuZFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVpZCA9IEludFxuXG4gIG1vZHVsZSBXaXRuZXNzID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSAuLlxuICAgICAgdHlwZSB0eXBlX3dpdG5lc3NfaW50ID0gWyBgdHlwZV93aXRuZXNzIG9mIGludCBdIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICBsZXQgc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50ID1cbiAgICAgICAgKGZ1biAoYHR5cGVfd2l0bmVzcyB2X18wMDVfKSAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ0eXBlX3dpdG5lc3NcIjsgc2V4cF9vZl9pbnQgdl9fMDA1XyBdXG4gICAgICAgICAgIDogdHlwZV93aXRuZXNzX2ludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICA7O1xuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICBsZXQgc2V4cF9vZl90IF9zZXhwX29mX2EgdCA9XG4gICAgICAgIGB0eXBlX3dpdG5lc3NcbiAgICAgICAgICAoQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIHQpKVxuICAgICAgICB8PiBzZXhwX29mX3R5cGVfd2l0bmVzc19pbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgXyBLZXkudCArPSBLZXkgOiB0IEtleS50XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIGxldCBzZXhwX29mX3QgKHR5cGUgYSkgc2V4cF9vZl9hIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBNLktleSB8PiBLZXkuc2V4cF9vZl90IHNleHBfb2ZfYVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIHQpICgpID1cbiAgICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgOztcblxuICAgIGxldCB1aWQgKHR5cGUgYSkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAgIENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBNLktleSlcbiAgICA7O1xuXG4gICAgKCogV2Ugd2FudCBhIGNvbnN0YW50IGFsbG9jYXRlZCBvbmNlIHRoYXQgW3NhbWVdIGNhbiByZXR1cm4gd2hlbmV2ZXIgaXQgZ2V0cyB0aGUgc2FtZVxuICAgICAgIHdpdG5lc3Nlcy4gIElmIHdlIHdyaXRlIHRoZSBjb25zdGFudCBpbnNpZGUgdGhlIGJvZHkgb2YgW3NhbWVdLCB0aGUgbmF0aXZlLWNvZGVcbiAgICAgICBjb21waWxlciB3aWxsIGRvIHRoZSByaWdodCB0aGluZyBhbmQgbGlmdCBpdCBvdXQuICBCdXQgZm9yIGNsYXJpdHkgYW5kIHJvYnVzdG5lc3MsXG4gICAgICAgd2UgZG8gaXQgb3Vyc2VsdmVzLiAqKVxuICAgIGxldCBzb21lX3QgPSBTb21lIFRcblxuICAgIGxldCBzYW1lICh0eXBlIGEgYikgKGEgOiBhIHQpIChiIDogYiB0KSA6IChhLCBiKSBlcXVhbCBvcHRpb24gPVxuICAgICAgbGV0IG1vZHVsZSBBID0gKHZhbCBhIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEIgPSAodmFsIGIgOiBTIHdpdGggdHlwZSB0ID0gYikgaW5cbiAgICAgIG1hdGNoIEEuS2V5IHdpdGhcbiAgICAgIHwgQi5LZXkgLT4gc29tZV90XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIDs7XG4gIGVuZFxuXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHdpdG5lc3MgOiAnYSBXaXRuZXNzLnRcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICA7IHRvX3NleHAgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCBfIHsgd2l0bmVzczsgbmFtZTsgdG9fc2V4cCB9IDogU2V4cC50ID1cbiAgICBpZiBhbV90ZXN0aW5nXG4gICAgdGhlbiBBdG9tIG5hbWVcbiAgICBlbHNlXG4gICAgICBMaXN0XG4gICAgICAgIFsgTGlzdCBbIEF0b20gXCJuYW1lXCI7IEF0b20gbmFtZSBdXG4gICAgICAgIDsgTGlzdCBbIEF0b20gXCJ3aXRuZXNzXCI7IHdpdG5lc3MgfD4gV2l0bmVzcy5zZXhwX29mX3QgdG9fc2V4cCBdXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc2V4cCB0ID0gdC50b19zZXhwXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IGNyZWF0ZSB+bmFtZSB0b19zZXhwID0geyB3aXRuZXNzID0gV2l0bmVzcy5jcmVhdGUgKCk7IG5hbWU7IHRvX3NleHAgfVxuICBsZXQgdWlkIHQgPSBXaXRuZXNzLnVpZCB0LndpdG5lc3NcbiAgbGV0IGhhc2ggdCA9IHVpZCB0XG4gIGxldCBoYXNoX2ZvbGRfdCBzIHQgPSBoYXNoX2ZvbGRfaW50IHMgKHVpZCB0KVxuICBsZXQgc2FtZV93aXRuZXNzIHQxIHQyID0gV2l0bmVzcy5zYW1lIHQxLndpdG5lc3MgdDIud2l0bmVzc1xuICBsZXQgc2FtZSB0MSB0MiA9IE9wdGlvbi5pc19zb21lIChzYW1lX3dpdG5lc3MgdDEgdDIpXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gdDEgdDIgPVxuICAgIG1hdGNoIHNhbWVfd2l0bmVzcyB0MSB0MiB3aXRoXG4gICAgfCBTb21lIHcgLT4gd1xuICAgIHwgTm9uZSAtPlxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIGdvdCBkaWZmZXJlbnQgaWRzXCJcbiAgICAgICAgICAgWyAoIFwiXCJcbiAgICAgICAgICAgICAsIHNleHBfb2ZfcGFpciAoc2V4cF9vZl90IHNleHBfb2Zfb3BhcXVlKSAoc2V4cF9vZl90IHNleHBfb2Zfb3BhcXVlKSAodDEsIHQyKVxuICAgICAgICAgICAgIClcbiAgICAgICAgICAgXSlcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqKiBbJ2EgQ2hlYXBfb3B0aW9uLnRdIGlzIGxpa2UgWydhIG9wdGlvbl0sIGJ1dCBpdCBkb2Vzbid0IGJveCBbc29tZSBfXSB2YWx1ZXMuXG5cbiAgICBUaGVyZSBhcmUgc2V2ZXJhbCB0aGluZ3MgdGhhdCBhcmUgdW5zYWZlIGFib3V0IGl0OlxuXG4gICAgLSBbZmxvYXQgdCBhcnJheV0gKG9yIGFueSBhcnJheS1iYWNrZWQgY29udGFpbmVyKSBpcyBub3QgbWVtb3J5LXNhZmVcbiAgICAgIGJlY2F1c2UgZmxvYXQgYXJyYXkgb3B0aW1pemF0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIHVuYm94ZWQgb3B0aW9uXG4gICAgICBvcHRpbWl6YXRpb24uIFlvdSBoYXZlIHRvIHVzZSBbVW5pZm9ybV9hcnJheS50XSBpbnN0ZWFkIG9mIFthcnJheV0uXG5cbiAgICAtIE5lc3RlZCBvcHRpb25zIChbJ2EgdCB0XSkgZG9uJ3Qgd29yay4gVGhleSBhcmUgYmVsaWV2ZWQgdG8gYmVcbiAgICAgIG1lbW9yeS1zYWZlLCBidXQgbm90IHBhcmFtZXRyaWMuXG5cbiAgICAtIEEgcmVjb3JkIHdpdGggW2Zsb2F0IHRdcyBpbiBpdCBzaG91bGQgYmUgc2FmZSwgYnV0IGl0J3Mgb25seSBbdF0gYmVpbmdcbiAgICAgIGFic3RyYWN0IHRoYXQgZ2l2ZXMgeW91IHNhZmV0eS4gSWYgdGhlIGNvbXBpbGVyIHdhcyBzbWFydCBlbm91Z2ggdG8gcGVla1xuICAgICAgdGhyb3VnaCB0aGUgbW9kdWxlIHNpZ25hdHVyZSB0aGVuIGl0IGNvdWxkIGRlY2lkZSB0byBjb25zdHJ1Y3QgYSBmbG9hdFxuICAgICAgYXJyYXkgaW5zdGVhZC4gKilcbm1vZHVsZSBDaGVhcF9vcHRpb24gPSBzdHJ1Y3RcbiAgKCogVGhpcyBpcyB0YWtlbiBmcm9tIGNvcmUuIFJhdGhlciB0aGFuIGV4cG9zZSBpdCBpbiB0aGUgcHVibGljIGludGVyZmFjZSBvZiBiYXNlLCBqdXN0XG4gICAgIGtlZXAgYSBjb3B5IGFyb3VuZCBoZXJlLiAqKVxuICBsZXQgcGh5c19zYW1lICh0eXBlIGEgYikgKGEgOiBhKSAoYiA6IGIpID0gcGh5c19lcXVhbCBhIChDYW1sLk9iai5tYWdpYyBiIDogYSlcblxuICBtb2R1bGUgVDAgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBub25lIDogXyB0XG4gICAgdmFsIHNvbWUgOiAnYSAtPiAnYSB0XG4gICAgdmFsIGlzX25vbmUgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc19zb21lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdmFsdWVfZXhuIDogJ2EgdCAtPiAnYVxuICAgIHZhbCB2YWx1ZV91bnNhZmUgOiAnYSB0IC0+ICdhXG4gICAgdmFsIGl0ZXJfc29tZSA6ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICsnYSB0XG5cbiAgICAoKiBCZWluZyBhIHBvaW50ZXIsIG5vIG9uZSBvdXRzaWRlIHRoaXMgbW9kdWxlIGNhbiBjb25zdHJ1Y3QgYSB2YWx1ZSB0aGF0IGlzXG4gICAgICAgW3BoeXNfc2FtZV0gYXMgdGhpcyBvbmUuXG5cbiAgICAgICBJdCB3b3VsZCBiZSBzaW1wbGVyIHRvIHVzZSB0aGlzIHZhbHVlIGFzIFtub25lXSwgYnV0IHdlIHVzZSBhbiBpbW1lZGlhdGUgaW5zdGVhZFxuICAgICAgIGJlY2F1c2UgaXQgbGV0cyB1cyBhdm9pZCBjYW1sX21vZGlmeSB3aGVuIHNldHRpbmcgdG8gW25vbmVdLCBtYWtpbmcgY2VydGFpblxuICAgICAgIGJlbmNobWFya3Mgc2lnbmlmaWNhbnRseSBmYXN0ZXIgKGUuZy4gLi4vYmVuY2gvYXJyYXlfcXVldWUuZXhlKS5cblxuICAgICAgIHRoaXMgY29kZSBpcyBkdXBsaWNhdGVkIGluIE1vcHRpb24sIGFuZCBpZiB3ZSBmaW5kIHlldCBhbm90aGVyIHBsYWNlIHdoZXJlIHdlIHdhbnRcbiAgICAgICBpdCB3ZSBzaG91bGQgcmVjb25zaWRlciBtYWtpbmcgaXQgc2hhcmVkLiAqKVxuICAgIGxldCBub25lX3N1YnN0aXR1dGUgOiBfIHQgPSBDYW1sLk9iai5vYmogKENhbWwuT2JqLm5ld19ibG9jayBDYW1sLk9iai5hYnN0cmFjdF90YWcgMSlcblxuICAgIGxldCBub25lIDogXyB0ID1cbiAgICAgICgqIFRoZSBudW1iZXIgd2FzIHByb2R1Y2VkIGJ5XG4gICAgICAgICBbPCAvZGV2L3VyYW5kb20gdHIgLWMgLWQgJzEyMzQ1Njc4OTBhYmNkZWYnIHwgaGVhZCAtYyAxNl0uXG5cbiAgICAgICAgIFRoZSBpZGVhIGlzIHRoYXQgYSByYW5kb20gbnVtYmVyIHdpbGwgaGF2ZSBsb3dlciBwcm9iYWJpbGl0eSB0byBjb2xsaWRlIHdpdGhcbiAgICAgICAgIGFueXRoaW5nIHRoYW4gYW55IG51bWJlciB3ZSBjYW4gY2hvb3NlIG91cnNlbHZlcy5cblxuICAgICAgICAgV2UgYXJlIHVzaW5nIGEgcG9seW1vcnBoaWMgdmFyaWFudCBpbnN0ZWFkIG9mIGFuIGludGVnZXIgY29uc3RhbnQgYmVjYXVzZSB0aGVyZVxuICAgICAgICAgaXMgYSBjb21waWxlciBidWcgd2hlcmUgaXQgd3JvbmdseSBhc3N1bWVzIHRoYXQgdGhlIHJlc3VsdCBvZiBbaWYgXyB0aGVuIGMgZWxzZVxuICAgICAgICAgeV0gaXMgbm90IGEgcG9pbnRlciBpZiBbY10gaXMgYW4gaW50ZWdlciBjb21waWxlLXRpbWUgY29uc3RhbnQuICBUaGlzIGlzIGJlaW5nXG4gICAgICAgICBmaXhlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvcHVsbC81NTUuICBUaGUgXCJtZW1vcnkgY29ycnVwdGlvblwiIHRlc3RcbiAgICAgICAgIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgaXNzdWUuICAqKVxuICAgICAgQ2FtbC5PYmoubWFnaWMgYHg2ZThlZTM0NzhlMWQ3NDQ5XG4gICAgOztcblxuICAgIGxldCBpc19ub25lIHggPSBwaHlzX2VxdWFsIHggbm9uZVxuICAgIGxldCBpc19zb21lIHggPSBub3QgKHBoeXNfZXF1YWwgeCBub25lKVxuXG4gICAgbGV0IHNvbWUgKHR5cGUgYSkgKHggOiBhKSA6IGEgdCA9XG4gICAgICBpZiBwaHlzX3NhbWUgeCBub25lIHRoZW4gbm9uZV9zdWJzdGl0dXRlIGVsc2UgQ2FtbC5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfdW5zYWZlICh0eXBlIGEpICh4IDogYSB0KSA6IGEgPVxuICAgICAgaWYgcGh5c19lcXVhbCB4IG5vbmVfc3Vic3RpdHV0ZSB0aGVuIENhbWwuT2JqLm1hZ2ljIG5vbmUgZWxzZSBDYW1sLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV9leG4geCA9XG4gICAgICBpZiBpc19zb21lIHhcbiAgICAgIHRoZW4gdmFsdWVfdW5zYWZlIHhcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuOiB0aGUgZWxlbWVudCBpcyBbTm9uZV1cIlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcl9zb21lIHQgfmYgPSBpZiBpc19zb21lIHQgdGhlbiBmICh2YWx1ZV91bnNhZmUgdClcbiAgZW5kXG5cbiAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuXG4gICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgfCBTb21lIHggLT4gc29tZSB4XG4gICAgOztcblxuICAgIGxldFtAaW5saW5lXSB0b19vcHRpb24geCA9IGlmIGlzX3NvbWUgeCB0aGVuIFNvbWUgKHZhbHVlX3Vuc2FmZSB4KSBlbHNlIE5vbmVcbiAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19vcHRpb25cbiAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9vcHRpb25cblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgPVxuICAgICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoT3B0aW9uLnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUMVxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMSAoT3B0aW9uKSAoVDEpXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgQ2hlYXBfb3B0aW9uLnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gX29mX2FfXzAwMV8geF9fMDAzXyAtPlxuICBVbmlmb3JtX2FycmF5LnRfb2Zfc2V4cCAoQ2hlYXBfb3B0aW9uLnRfb2Zfc2V4cCBfb2ZfYV9fMDAxXykgeF9fMDAzX1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDA0XyB4X18wMDVfIC0+XG4gIFVuaWZvcm1fYXJyYXkuc2V4cF9vZl90IChDaGVhcF9vcHRpb24uc2V4cF9vZl90IF9vZl9hX18wMDRfKSB4X18wMDVfXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICBVbmlmb3JtX2FycmF5LnRfc2V4cF9ncmFtbWFyIChDaGVhcF9vcHRpb24udF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hcilcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBlbXB0eSA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbmxldCBjcmVhdGUgfmxlbiA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW4gQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBpbml0IG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiAoZiBpKSlcbmxldCBpbml0X3NvbWUgbiB+ZiA9IFVuaWZvcm1fYXJyYXkuaW5pdCBuIH5mOihmdW4gaSAtPiBDaGVhcF9vcHRpb24uc29tZSAoZiBpKSlcbmxldCBsZW5ndGggPSBVbmlmb3JtX2FycmF5Lmxlbmd0aFxubGV0W0BpbmxpbmVdIGdldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgZ2V0X3NvbWVfZXhuIHQgaSA9IENoZWFwX29wdGlvbi52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBpc19ub25lIHQgaSA9IENoZWFwX29wdGlvbi5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IHNldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHNldF9zb21lIHQgaSB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHNldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSBDaGVhcF9vcHRpb24ubm9uZVxubGV0IHN3YXAgdCBpIGogPSBVbmlmb3JtX2FycmF5LnN3YXAgdCBpIGpcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IENoZWFwX29wdGlvbi50b19vcHRpb24gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX2dldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgdW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgdCBpID1cbiAgQ2hlYXBfb3B0aW9uLnZhbHVlX3Vuc2FmZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbjs7XG5cbmxldCB1bnNhZmVfaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSB4ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHVuc2FmZV9zZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5zb21lIHgpXG5sZXQgdW5zYWZlX3NldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcblxubGV0IGNsZWFyIHQgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldF9ub25lIHQgaVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgaW5wdXQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGlucHV0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBpbnB1dCBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlciBpbnB1dCB+ZiA9IGl0ZXJpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIHggLT4gZiB4KVxuXG5sZXQgZm9sZGkgaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gYWNjIDo9IGYgaSAhYWNjIGVsZW0pO1xuICAhYWNjXG47O1xuXG5sZXQgZm9sZCBpbnB1dCB+aW5pdCB+ZiA9IGZvbGRpIGlucHV0IH5pbml0IH5mOihmdW4gKF8gOiBpbnQpIGFjYyB4IC0+IGYgYWNjIHgpXG5cbmluY2x1ZGUgSW5kZXhlZF9jb250YWluZXIuTWFrZV9nZW4gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbHQgPSAnYSBvcHRpb25cblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbWFwaSBpbnB1dCB+ZiA9XG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbjoobGVuZ3RoIGlucHV0KSBpblxuICBpdGVyaSBpbnB1dCB+ZjooZnVuIGkgZWxlbSAtPiB1bnNhZmVfc2V0IG91dHB1dCBpIChmIGkgZWxlbSkpO1xuICBvdXRwdXRcbjs7XG5cbmxldCBtYXAgaW5wdXQgfmYgPSBtYXBpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIGVsZW0gLT4gZiBlbGVtKVxuXG5sZXQgbWFwX3NvbWUgaW5wdXQgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0IGluXG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbiBpblxuICBsZXQgKCkgPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgb3B0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGlucHV0IGkgaW5cbiAgICAgIENoZWFwX29wdGlvbi5pdGVyX3NvbWUgb3B0IH5mOihmdW4geCAtPiB1bnNhZmVfc2V0X3NvbWUgb3V0cHV0IGkgKGYgeCkpXG4gICAgZG9uZVxuICBpblxuICBvdXRwdXRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcblxubGV0IG9mX2FycmF5X3NvbWUgYXJyYXkgPVxuICBpbml0X3NvbWUgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxuaW5jbHVkZSBCbGl0Lk1ha2UxX2dlbmVyaWMgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5ID0gVW5pZm9ybV9hcnJheS5jb3B5XG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlX2NoZWFwX29wdGlvbiA9IENoZWFwX29wdGlvblxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhY2tfaW50ZlxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIFtEZXF1ZV0gaW4gdGhhdCBpdCB1c2VzIGFuIGFycmF5IG9mIFsnYV0gYW5kXG4gICBhIG11dGFibGUgW2ludF0gdG8gaW5kaWNhdGUgd2hhdCBpbiB0aGUgYXJyYXkgaXMgdXNlZC4gIFdlIGNob29zZSB0byBpbXBsZW1lbnQgW1N0YWNrXVxuICAgZGlyZWN0bHkgcmF0aGVyIHRoYW4gb24gdG9wIG9mIFtEZXF1ZV0gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBFLmcuIGEgc2ltcGxlXG4gICBtaWNyb2JlbmNobWFyayBzaG93cyB0aGF0IHB1c2gvcG9wIGlzIGFib3V0IDIwJSBmYXN0ZXIuICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV8geyBsZW5ndGggPSBsZW5ndGhfXzAwM187IGVsdHMgPSBlbHRzX18wMDVfIH0gLT5cbiAgbGV0IGJuZHNfXzAwMl8gPSBbXSBpblxuICBsZXQgYm5kc19fMDAyXyA9XG4gICAgbGV0IGFyZ19fMDA2XyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDA1XyBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICBpblxuICBsZXQgYm5kc19fMDAyXyA9XG4gICAgbGV0IGFyZ19fMDA0XyA9IHNleHBfb2ZfaW50IGxlbmd0aF9fMDAzXyBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAwNF8gXSA6OiBibmRzX18wMDJfXG4gIGluXG4gIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgc2V4cF9vZl90ID0gYFJlYm91bmRfbGF0ZXJcbmxldCBfID0gc2V4cF9vZl90XG5sZXQgY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgKHsgbGVuZ3RoOyBlbHRzIH0gYXMgdCkgOiB1bml0ID1cbiAgdHJ5XG4gICAgYXNzZXJ0ICgwIDw9IGxlbmd0aCAmJiBsZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgICAgaW52YXJpYW50X2EgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBpKVxuICAgIGRvbmU7XG4gICAgKCogV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHVudXNlZCBlbGVtZW50cyBhcmUgdW5zZXQgdG8gYXZvaWQgYSBzcGFjZVxuICAgICAgIGxlYWsuICopXG4gICAgZm9yIGkgPSBsZW5ndGggdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzIC0gMSBkb1xuICAgICAgYXNzZXJ0IChub3QgKE9wdGlvbl9hcnJheS5pc19zb21lIGVsdHMgaSkpXG4gICAgZG9uZVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJTdGFjay5pbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJleG5cIiwgZXhuIHw+IEV4bi5zZXhwX29mX3Q7IFwic3RhY2tcIiwgdCB8PiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9vcGFxdWUgXSlcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgKCkgOiBhIHQgPSB7IGxlbmd0aCA9IDA7IGVsdHMgPSBPcHRpb25fYXJyYXkuZW1wdHkgfVxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFRoZSBvcmRlciBpbiB3aGljaCBlbGVtZW50cyBhcmUgdmlzaXRlZCBoYXMgYmVlbiBjaG9zZW4gc28gYXMgdG8gYmUgYmFja3dhcmRzXG4gICBjb21wYXRpYmxlIHdpdGggW0NhbWwuU3RhY2tdICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAhciAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIGYgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpXG4gIGRvbmVcbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2xpc3QgKHR5cGUgYSkgKGwgOiBhIGxpc3QpID1cbiAgaWYgTGlzdC5pc19lbXB0eSBsXG4gIHRoZW4gY3JlYXRlICgpXG4gIGVsc2UgKFxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGVsdHMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KDIgKiBsZW5ndGgpIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgIGZvciBpID0gbGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIE9wdGlvbl9hcnJheS5zZXRfc29tZSBlbHRzIGkgYTtcbiAgICAgICAgciA6PSBsXG4gICAgZG9uZTtcbiAgICB7IGxlbmd0aDsgZWx0cyB9KVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCByZXNpemUgdCBzaXplID1cbiAgbGV0IGFyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpzaXplIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5zcmM6dC5lbHRzIH5kc3Q6YXJyIH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnQubGVuZ3RoO1xuICB0LmVsdHMgPC0gYXJyXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgbmV3X2NhcGFjaXR5ID1cbiAgbGV0IG5ld19jYXBhY2l0eSA9IG1heCBuZXdfY2FwYWNpdHkgKGxlbmd0aCB0KSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdCB0aGVuIHJlc2l6ZSB0IG5ld19jYXBhY2l0eVxuOztcblxubGV0IHB1c2ggdCBhID1cbiAgaWYgdC5sZW5ndGggPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0cyB0aGVuIHJlc2l6ZSB0ICgyICogKHQubGVuZ3RoICsgMSkpO1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5lbHRzIHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHBvcF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSB0Lmxlbmd0aCAtIDEgaW5cbiAgbGV0IHJlc3VsdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpO1xuICB0Lmxlbmd0aCA8LSBpO1xuICByZXN1bHRcbjs7XG5cbmxldCBwb3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay5wb3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHBvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3Bfbm9uZW1wdHkgdClcbmxldCBwb3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgcG9wX2Vycm9yIGVsc2UgcG9wX25vbmVtcHR5IHRcbmxldCB0b3Bfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzICh0Lmxlbmd0aCAtIDEpXG5sZXQgdG9wX2Vycm9yID0gRXJyb3Iub2Zfc3RyaW5nIFwiU3RhY2sudG9wIG9mIGVtcHR5IHN0YWNrXCJcbmxldCB0b3AgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX25vbmVtcHR5IHQpXG5sZXQgdG9wX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIEVycm9yLnJhaXNlIHRvcF9lcnJvciBlbHNlIHRvcF9ub25lbXB0eSB0XG5sZXQgY29weSB7IGxlbmd0aDsgZWx0cyB9ID0geyBsZW5ndGg7IGVsdHMgPSBPcHRpb25fYXJyYXkuY29weSBlbHRzIH1cblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpXG4gICAgZG9uZTtcbiAgICB0Lmxlbmd0aCA8LSAwKVxuOztcblxubGV0IHVudGlsX2VtcHR5IHQgZiA9XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBmIChwb3Bfbm9uZW1wdHkgdCk7XG4gICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBwdXNoIHQgeDtcbiAgdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGlzIGxpZnRlZCBvdXQgb2YgW01dIGJlY2F1c2UgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uMF0gZXhwb3J0cyBbU3RyaW5nMF1cbiAgIGFzIFtTdHJpbmddLCB3aGljaCBkb2VzIG5vdCBleHBvcnQgYSBoYXNoIGZ1bmN0aW9uLiAqKVxubGV0IGhhc2hfb3ZlcnJpZGUgeyBDYW1sLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9ID1cbiAgU3RyaW5nLmhhc2ggcG9zX2ZuYW1lXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2xudW1cbiAgbHhvciBJbnQuaGFzaCBwb3NfYm9sXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2NudW1cbjs7XG5cbm1vZHVsZSBNID0gc3RydWN0XG4gIGluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5cbiAgbGV0IGhhc2ggPSBoYXNoX292ZXJyaWRlXG5lbmRcblxuaW5jbHVkZSBNXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChNKVxuXG5sZXQgb2ZfcG9zIChwb3NfZm5hbWUsIHBvc19sbnVtLCBwb3NfY251bSwgXykgPVxuICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sID0gMCB9XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdcbiAgICB8IFplcm9cbiAgICB8IFBvc1xuICAgIHwgTmFuXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbl9vcl9uYW4ubWwuVC50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIChmdW4gaHN2IGFyZyAtPlxuICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgIHwgTmFuIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgM1xuICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvczsgTmFuIF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25fb3JfbmFuXCJcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogVC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogVC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBULnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogVC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IFQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IG9mX3NpZ24gPSBmdW5jdGlvblxuICB8IFNpZ24uTmVnIC0+IE5lZ1xuICB8IFNpZ24uWmVybyAtPiBaZXJvXG4gIHwgU2lnbi5Qb3MgLT4gUG9zXG47O1xuXG5sZXQgdG9fc2lnbl9leG4gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBTaWduLk5lZ1xuICB8IFplcm8gLT4gU2lnbi5aZXJvXG4gIHwgUG9zIC0+IFNpZ24uUG9zXG4gIHwgTmFuIC0+IGludmFsaWRfYXJnIFwiQmFzZS5TaWduX29yX25hbi50b19zaWduX2V4bjogTmFuXCJcbjs7XG5cbmxldCBvZl9pbnQgbiA9IG9mX3NpZ24gKFNpZ24ub2ZfaW50IG4pXG5sZXQgdG9faW50X2V4biB0ID0gU2lnbi50b19pbnQgKHRvX3NpZ25fZXhuIHQpXG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuICB8IE5hbiAtPiBOYW5cbjs7XG5cbmxldCAoICogKSB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5hbiwgXyB8IF8sIE5hbiAtPiBOYW5cbiAgfCBfIC0+IG9mX3NpZ24gKFNpZ24uKCAqICkgKHRvX3NpZ25fZXhuIHQpICh0b19zaWduX2V4biB0JykpXG47O1xuXG4oKiBJbmNsdWRlIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyIGFueSBmdW5jdG9yIGFwcGxpY2F0aW9ucyB0aGF0XG4gICBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcbltAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGFsbCA6ICdhLiAnYSBsaXN0IC0+ICdhIHQgbGlzdCA9XG4gIGZ1biBfYWxsX29mX2EgLT5cbiAgUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5hcHBlbmRcbiAgICAobGV0IHJlYyBtYXAgbCBhY2MgPVxuICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgIHwgW10gLT4gUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5yZXYgYWNjXG4gICAgICAgfCBlbnVtZXJhdGVfXzAwMV8gOjogbCAtPiBtYXAgbCAoSW5jbCBlbnVtZXJhdGVfXzAwMV8gOjogYWNjKVxuICAgICBpblxuICAgICBtYXAgX2FsbF9vZl9hIFtdKVxuICAgIChQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICAgICB8IGVudW1lcmF0ZV9fMDAyXyA6OiBsIC0+IG1hcCBsIChFeGNsIGVudW1lcmF0ZV9fMDAyXyA6OiBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgICAgWyBVbmJvdW5kZWQgXSlcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gKHR5cGUgYV9fMDE4XykgOiAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE4XyB0KSAtPlxuICBsZXQgZXJyb3Jfc291cmNlX18wMDZfID0gXCJtYXliZV9ib3VuZC5tbC50XCIgaW5cbiAgZnVuIF9vZl9hX18wMDNfIC0+IGZ1bmN0aW9uXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIF90YWdfXzAwOV8pIDo6IHNleHBfYXJnc19fMDEwXykgYXNcbiAgICAgIF9zZXhwX18wMDhfIC0+XG4gICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTBfIHdpdGhcbiAgICAgICB8IFsgYXJnMF9fMDExXyBdIC0+XG4gICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IF9vZl9hX18wMDNfIGFyZzBfXzAxMV8gaW5cbiAgICAgICAgIEluY2wgcmVzMF9fMDEyX1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNl9cbiAgICAgICAgICAgX3RhZ19fMDA5X1xuICAgICAgICAgICBfc2V4cF9fMDA4XylcbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgX3RhZ19fMDE0XykgOjogc2V4cF9hcmdzX18wMTVfKSBhc1xuICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTZfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2FfXzAwM18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgRXhjbCByZXMwX18wMTdfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgIF9zZXhwX18wMTNfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInVuYm91bmRlZFwiIHwgXCJVbmJvdW5kZWRcIikgLT4gVW5ib3VuZGVkXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIHNleHBfXzAwN18gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSA6OiBfKSBhc1xuICAgICAgc2V4cF9fMDA3XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG47O1xuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuICh0eXBlIGFfXzAyNF8pIDogKChhX18wMjRfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDI0XyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgZnVuIF9vZl9hX18wMTlfIC0+IGZ1bmN0aW9uXG4gICAgfCBJbmNsIGFyZzBfXzAyMF8gLT5cbiAgICAgIGxldCByZXMwX18wMjFfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIwXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5jbFwiOyByZXMwX18wMjFfIF1cbiAgICB8IEV4Y2wgYXJnMF9fMDIyXyAtPlxuICAgICAgbGV0IHJlczBfXzAyM18gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeGNsXCI7IHJlczBfXzAyM18gXVxuICAgIHwgVW5ib3VuZGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuYm91bmRlZFwiXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiSW5jbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXhjbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlVuYm91bmRlZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG50eXBlIGludGVydmFsX2NvbXBhcmlzb24gPVxuICB8IEJlbG93X2xvd2VyX2JvdW5kXG4gIHwgSW5fcmFuZ2VcbiAgfCBBYm92ZV91cHBlcl9ib3VuZFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaF1cblxubGV0IGludGVydmFsX2NvbXBhcmlzb25fb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMjdfID0gXCJtYXliZV9ib3VuZC5tbC5pbnRlcnZhbF9jb21wYXJpc29uXCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJiZWxvd19sb3dlcl9ib3VuZFwiIHwgXCJCZWxvd19sb3dlcl9ib3VuZFwiKSAtPiBCZWxvd19sb3dlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5fcmFuZ2VcIiB8IFwiSW5fcmFuZ2VcIikgLT4gSW5fcmFuZ2VcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIC0+IEFib3ZlX3VwcGVyX2JvdW5kXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IHNleHBfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IGludGVydmFsX2NvbXBhcmlzb24pXG47O1xuXG5sZXQgc2V4cF9vZl9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJCZWxvd19sb3dlcl9ib3VuZFwiXG4gICAgfCBJbl9yYW5nZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbl9yYW5nZVwiXG4gICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJBYm92ZV91cHBlcl9ib3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0IChpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW1hciA6IGludGVydmFsX2NvbXBhcmlzb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJCZWxvd19sb3dlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiSW5fcmFuZ2VcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkFib3ZlX3VwcGVyX2JvdW5kXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24gPVxuICAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmVcbiAgIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludClcbjs7XG5cbmxldCAoaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gOlxuICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBJbl9yYW5nZSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaF9pbnRlcnZhbF9jb21wYXJpc29uIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gSW5jbCAoZiBpbmNsKVxuICB8IEV4Y2wgZXhjbCAtPiBFeGNsIChmIGV4Y2wpXG4gIHwgVW5ib3VuZGVkIC0+IFVuYm91bmRlZFxuOztcblxubGV0IGlzX2xvd2VyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgaW5jbCBhIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBleGNsIGEgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBpc191cHBlcl9ib3VuZCB0IH5vZl86YSB+Y29tcGFyZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBjb21wYXJlIGEgaW5jbCA8PSAwXG4gIHwgRXhjbCBleGNsIC0+IGNvbXBhcmUgYSBleGNsIDwgMFxuICB8IFVuYm91bmRlZCAtPiB0cnVlXG47O1xuXG5sZXQgYm91bmRzX2Nyb3NzZWQgfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIG1hdGNoIGxvd2VyIHdpdGhcbiAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgfCBJbmNsIGxvd2VyIHwgRXhjbCBsb3dlciAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gICAgIHwgSW5jbCB1cHBlciB8IEV4Y2wgdXBwZXIgLT4gY29tcGFyZSBsb3dlciB1cHBlciA+IDApXG47O1xuXG5sZXQgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgPVxuICBpZiBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlXG4gIHRoZW4gZmFpbHdpdGggXCJNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4bjogbG93ZXIgYm91bmQgPiB1cHBlciBib3VuZFwiXG47O1xuXG5sZXQgY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlID1cbiAgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmU7XG4gIGlmIG5vdCAoaXNfbG93ZXJfYm91bmQgbG93ZXIgfm9mXzphIH5jb21wYXJlKVxuICB0aGVuIEJlbG93X2xvd2VyX2JvdW5kXG4gIGVsc2UgaWYgbm90IChpc191cHBlcl9ib3VuZCB1cHBlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQWJvdmVfdXBwZXJfYm91bmRcbiAgZWxzZSBJbl9yYW5nZVxuOztcblxubGV0IGludGVydmFsX2NvbnRhaW5zX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBtYXRjaCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgd2l0aFxuICB8IEluX3JhbmdlIC0+IHRydWVcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYER1cGxpY2F0ZVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgICB8IGBPayBfbGVmdF9fMDAzXywgYE9rIF9yaWdodF9fMDA0XyAtPiBfY21wX19hIF9sZWZ0X18wMDNfIF9yaWdodF9fMDA0X1xuICAgICAgfCBgRHVwbGljYXRlLCBgRHVwbGljYXRlIC0+IDBcbiAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSB4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA1XyBiX18wMDZfIC0+XG4gICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDVfIGJfXzAwNl9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzAwNV8sIGJfXzAwNl8gd2l0aFxuICAgICAgICB8IGBPayBfbGVmdF9fMDA3XywgYE9rIF9yaWdodF9fMDA4XyAtPiBfY21wX19hIF9sZWZ0X18wMDdfIF9yaWdodF9fMDA4X1xuICAgICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gdHJ1ZVxuICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAwOV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYE9rIHZfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgX29mX2FfXzAwOV8gdl9fMDEwXyBdXG4gICAgICB8IGBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRHVwbGljYXRlXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAnelxuZW5kXG5cbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSBjb21wYXJhdG9yOigna2V5LCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnelxuZW5kXG5cbm1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2sgJ3YuICgnayAtPiAnayAtPiBpbnQpIC0+ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMTFfIGJfXzAxMl8gLT5cbiAgICBsZXQgdF9fMDEzXywgdF9fMDE0XyA9IGFfXzAxMV8gaW5cbiAgICBsZXQgdF9fMDE1XywgdF9fMDE2XyA9IGJfXzAxMl8gaW5cbiAgICBtYXRjaCBfY21wX19rIHRfXzAxM18gdF9fMDE1XyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCB0X18wMTRfIHRfXzAxNl9cbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHRfXzAxNF8sIHRfXzAxNl8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wMTdfLCBgTGVmdCBfcmlnaHRfXzAxOF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE3XyBfcmlnaHRfXzAxOF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzAxOV8sIGBSaWdodCBfcmlnaHRfXzAyMF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE5XyBfcmlnaHRfXzAyMF9cbiAgICAgICAgfCBgVW5lcXVhbCBfbGVmdF9fMDIxXywgYFVuZXF1YWwgX3JpZ2h0X18wMjJfIC0+XG4gICAgICAgICAgbGV0IHRfXzAyM18sIHRfXzAyNF8gPSBfbGVmdF9fMDIxXyBpblxuICAgICAgICAgIGxldCB0X18wMjVfLCB0X18wMjZfID0gX3JpZ2h0X18wMjJfIGluXG4gICAgICAgICAgKG1hdGNoIF9jbXBfX3YgdF9fMDIzXyB0X18wMjVfIHdpdGhcbiAgICAgICAgICAgfCAwIC0+IF9jbXBfX3YgdF9fMDI0XyB0X18wMjZfXG4gICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgeCB5KVxuICAgIHwgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gJ2sgLT4gYm9vbCkgLT4gKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDI3XyBiX18wMjhfIC0+XG4gICAgICBsZXQgdF9fMDI5XywgdF9fMDMwXyA9IGFfXzAyN18gaW5cbiAgICAgIGxldCB0X18wMzFfLCB0X18wMzJfID0gYl9fMDI4XyBpblxuICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAoX2NtcF9fayB0X18wMjlfIHRfXzAzMV8pXG4gICAgICAgIChpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCB0X18wMzBfIHRfXzAzMl9cbiAgICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIG1hdGNoIHRfXzAzMF8sIHRfXzAzMl8gd2l0aFxuICAgICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wMzNfLCBgTGVmdCBfcmlnaHRfXzAzNF8gLT4gX2NtcF9fdiBfbGVmdF9fMDMzXyBfcmlnaHRfXzAzNF9cbiAgICAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzAzNV8sIGBSaWdodCBfcmlnaHRfXzAzNl8gLT4gX2NtcF9fdiBfbGVmdF9fMDM1XyBfcmlnaHRfXzAzNl9cbiAgICAgICAgICAgfCBgVW5lcXVhbCBfbGVmdF9fMDM3XywgYFVuZXF1YWwgX3JpZ2h0X18wMzhfIC0+XG4gICAgICAgICAgICAgbGV0IHRfXzAzOV8sIHRfXzA0MF8gPSBfbGVmdF9fMDM3XyBpblxuICAgICAgICAgICAgIGxldCB0X18wNDFfLCB0X18wNDJfID0gX3JpZ2h0X18wMzhfIGluXG4gICAgICAgICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKSAoX2NtcF9fdiB0X18wMzlfIHRfXzA0MV8pIChfY21wX192IHRfXzA0MF8gdF9fMDQyXylcbiAgICAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCB4IHkpKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdrICd2LlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2spXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAndilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgPVxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzA1N18gPSBcIm1hcF9pbnRmLm1sLlN5bW1ldHJpY19kaWZmX2VsZW1lbnQudFwiIGluXG4gICAgZnVuIF9vZl9rX18wNDNfIF9vZl92X18wNDRfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzA2N187IGFyZzFfXzA2OF8gXSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDY5XyA9IF9vZl9rX18wNDNfIGFyZzBfXzA2N19cbiAgICAgICAgYW5kIHJlczFfXzA3MF8gPVxuICAgICAgICAgIGxldCBzZXhwX18wNjZfID0gYXJnMV9fMDY4XyBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbWF0Y2ggc2V4cF9fMDY2XyB3aXRoXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIGFzIF9zZXhwX18wNDlfIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhdG9tX18wNDdfIHdpdGhcbiAgICAgICAgICAgICAgIHwgXCJMZWZ0XCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXCJSaWdodFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiVW5lcXVhbFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIGF0b21fXzA0N18gOjogc2V4cF9hcmdzX18wNTBfKSBhc1xuICAgICAgICAgICAgICBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIGFzIF90YWdfXzA2M18gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDY0XyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNjVfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDY0XyBpblxuICAgICAgICAgICAgICAgICAgICBgTGVmdCByZXMwX18wNjVfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA2M19cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXCJSaWdodFwiIGFzIF90YWdfXzA2MF8gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDYxXyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNjJfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDYxXyBpblxuICAgICAgICAgICAgICAgICAgICBgUmlnaHQgcmVzMF9fMDYyX1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjBfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiVW5lcXVhbFwiIGFzIF90YWdfXzA1MV8gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDU4XyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTlfID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhcmcwX18wNThfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzA1Ml87IGFyZzFfXzA1M18gXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA1NF8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNTJfXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVzMV9fMDU1XyA9IF9vZl92X18wNDRfIGFyZzFfXzA1M18gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlczBfXzA1NF8sIHJlczFfXzA1NV9cbiAgICAgICAgICAgICAgICAgICAgICB8IHNleHBfXzA1Nl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V4cF9fMDU2X1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBgVW5lcXVhbCByZXMwX18wNTlfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA1MV9cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKSlcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wNDhfIC0+XG4gICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgc2V4cF9fMDQ4X1xuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgc2V4cF9fMDQ4X1xuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgc2V4cF9fMDY2X1xuICAgICAgICBpblxuICAgICAgICByZXMwX18wNjlfLCByZXMxX18wNzBfXG4gICAgICB8IHNleHBfXzA3MV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBlcnJvcl9zb3VyY2VfXzA1N18gMiBzZXhwX18wNzFfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2sgJ3YuXG4gICAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9rX18wNzJfIF9vZl92X18wNzNfIChhcmcwX18wODFfLCBhcmcxX18wODJfKSAtPlxuICAgICAgbGV0IHJlczBfXzA4M18gPSBfb2Zfa19fMDcyXyBhcmcwX18wODFfXG4gICAgICBhbmQgcmVzMV9fMDg0XyA9XG4gICAgICAgIG1hdGNoIGFyZzFfXzA4Ml8gd2l0aFxuICAgICAgICB8IGBMZWZ0IHZfXzA3NF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IF9vZl92X18wNzNfIHZfXzA3NF8gXVxuICAgICAgICB8IGBSaWdodCB2X18wNzVfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3ZfXzA3M18gdl9fMDc1XyBdXG4gICAgICAgIHwgYFVuZXF1YWwgdl9fMDc2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgIDsgKGxldCBhcmcwX18wNzdfLCBhcmcxX18wNzhfID0gdl9fMDc2XyBpblxuICAgICAgICAgICAgICAgbGV0IHJlczBfXzA3OV8gPSBfb2Zfdl9fMDczXyBhcmcwX18wNzdfXG4gICAgICAgICAgICAgICBhbmQgcmVzMV9fMDgwXyA9IF9vZl92X18wNzNfIGFyZzFfXzA3OF8gaW5cbiAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzA3OV87IHJlczFfXzA4MF8gXSlcbiAgICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wODNfOyByZXMxX18wODRfIF1cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydrX3NleHBfZ3JhbW1hciBfJ3Zfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIExpc3RcbiAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAoIF8na19zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgLCBDb25zXG4gICAgICAgICAgICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIEVtcHR5IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpXG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wODVfIGJfXzA4Nl8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wODVfIGJfXzA4Nl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzA4NV8sIGJfXzA4Nl8gd2l0aFxuICAgICAgfCBgTGVmdCBfbGVmdF9fMDg3XywgYExlZnQgX3JpZ2h0X18wODhfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA4N18gX3JpZ2h0X18wODhfXG4gICAgICB8IGBSaWdodCBfbGVmdF9fMDg5XywgYFJpZ2h0IF9yaWdodF9fMDkwXyAtPiBfY21wX19yaWdodCBfbGVmdF9fMDg5XyBfcmlnaHRfXzA5MF9cbiAgICAgIHwgYEJvdGggX2xlZnRfXzA5MV8sIGBCb3RoIF9yaWdodF9fMDkyXyAtPlxuICAgICAgICBsZXQgdF9fMDkzXywgdF9fMDk0XyA9IF9sZWZ0X18wOTFfIGluXG4gICAgICAgIGxldCB0X18wOTVfLCB0X18wOTZfID0gX3JpZ2h0X18wOTJfIGluXG4gICAgICAgIChtYXRjaCBfY21wX19sZWZ0IHRfXzA5M18gdF9fMDk1XyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fcmlnaHQgdF9fMDk0XyB0X18wOTZfXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSB4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gYm9vbClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gYm9vbFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wOTdfIGJfXzA5OF8gLT5cbiAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzA5N18gYl9fMDk4X1xuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYV9fMDk3XywgYl9fMDk4XyB3aXRoXG4gICAgICAgIHwgYExlZnQgX2xlZnRfXzA5OV8sIGBMZWZ0IF9yaWdodF9fMTAwXyAtPiBfY21wX19sZWZ0IF9sZWZ0X18wOTlfIF9yaWdodF9fMTAwX1xuICAgICAgICB8IGBSaWdodCBfbGVmdF9fMTAxXywgYFJpZ2h0IF9yaWdodF9fMTAyXyAtPiBfY21wX19yaWdodCBfbGVmdF9fMTAxXyBfcmlnaHRfXzEwMl9cbiAgICAgICAgfCBgQm90aCBfbGVmdF9fMTAzXywgYEJvdGggX3JpZ2h0X18xMDRfIC0+XG4gICAgICAgICAgbGV0IHRfXzEwNV8sIHRfXzEwNl8gPSBfbGVmdF9fMTAzXyBpblxuICAgICAgICAgIGxldCB0X18xMDdfLCB0X18xMDhfID0gX3JpZ2h0X18xMDRfIGluXG4gICAgICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKSAoX2NtcF9fbGVmdCB0X18xMDVfIHRfXzEwN18pIChfY21wX19yaWdodCB0X18xMDZfIHRfXzEwOF8pXG4gICAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgeCB5KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgncmlnaHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfbGVmdF9fMTA5XyBfb2ZfcmlnaHRfXzExMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgdl9fMTExXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IF9vZl9sZWZ0X18xMDlfIHZfXzExMV8gXVxuICAgICAgfCBgUmlnaHQgdl9fMTEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyBfb2ZfcmlnaHRfXzExMF8gdl9fMTEyXyBdXG4gICAgICB8IGBCb3RoIHZfXzExM18gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJCb3RoXCJcbiAgICAgICAgICA7IChsZXQgYXJnMF9fMTE0XywgYXJnMV9fMTE1XyA9IHZfXzExM18gaW5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMTE2XyA9IF9vZl9sZWZ0X18xMDlfIGFyZzBfXzExNF9cbiAgICAgICAgICAgICBhbmQgcmVzMV9fMTE3XyA9IF9vZl9yaWdodF9fMTEwXyBhcmcxX18xMTVfIGluXG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMTE2XzsgcmVzMV9fMTE3XyBdKVxuICAgICAgICAgIF1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkNvbnRpbnVlX29yX3N0b3AgKilcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb250aW51ZVxuICAgIHwgU3RvcFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBDb250aW51ZTsgU3RvcCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IENvbnRpbnVlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkNvbnRpbnVlXCJcbiAgICAgIHwgU3RvcCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJTdG9wXCJcbiAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5NYXAuRmluaXNoZWRfb3JfdW5maW5pc2hlZCAqKVxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEZpbmlzaGVkXG4gICAgfCBVbmZpbmlzaGVkXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIEZpbmlzaGVkOyBVbmZpbmlzaGVkIF0gOiB0IGxpc3QpXG4gIGxldCBlcXVhbCA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgOiB0IC0+IHQgLT4gYm9vbClcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRmluaXNoZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmluaXNoZWRcIlxuICAgICAgfCBVbmZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZmluaXNoZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgJ2NtcCBjbXBcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG5cbiAgdmFsIGludmFyaWFudHMgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcblxuICB2YWwgYWRkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYWRkX2V4blxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHNldFxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGFkZF9tdWx0aVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCByZW1vdmVfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmluZF9tdWx0aSA6ICgnaywgJ2NtcCwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBsaXN0KSBvcHRpb25zXG5cbiAgdmFsIGNoYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+IGY6KCd2IG9wdGlvbiAtPiAndiBvcHRpb24pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHVwZGF0ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+IGY6KCd2IG9wdGlvbiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmluZCA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3Ygb3B0aW9uKSBvcHRpb25zXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YpIG9wdGlvbnNcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgbWVtIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOignayBrZXkgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAndiwgXykgdCAtPiBmOigndiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgdmFsIG1hcGkgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgdmFsIGZvbGQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gIHZhbCBmb2xkMlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gaW5pdDonYVxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICdhIC0+ICdhKVxuICAgICAgLT4gJ2EgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9rZXlzXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ2sga2V5IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MiBvcHRpb24pIC0+ICgnaywgJ3YyLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgY29tYmluZV9lcnJvcnNcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogKCdrLCAnY21wLCAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50KSBvcHRpb25zXG5cbiAgdmFsIGVxdWFsXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGtleSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICd2LCBfKSB0IC0+ICd2IGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+ICgnayBrZXkgKiAndikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgICAgLT4gKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbWJpbmU6KGtleTonayBrZXkgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gaW5pdDonYVxuICAgICAgLT4gZjooJ2EgLT4gKCdrIGtleSwgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYSlcbiAgICAgIC0+ICdhIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayBrZXkgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYXBwZW5kXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGxvd2VyX2JvdW5kOidrIGtleSBNYXliZV9ib3VuZC50XG4gICAgICAtPiB1cHBlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBtaW46J2sga2V5XG4gICAgICAtPiBtYXg6J2sga2V5XG4gICAgICAtPiBpbml0OidhXG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpXG4gICAgICAtPiAnYSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayBrZXkgLT4gbWF4OidrIGtleSAtPiAoJ2sga2V5ICogJ3YpIGxpc3QgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgICAgLT4gJ2sga2V5XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbnRoIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAnayBrZXkgKiAndlxuICB2YWwgcmFuayA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICdrIGtleSAtPiBpbnQgb3B0aW9uKSBvcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrIGtleVxuICAgICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gc2VnbWVudF9vZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUga2V5XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2EgdCBPcl9kdXBsaWNhdGUudFxuICB2YWwgYWRkX2V4biA6ICdhIHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIHRcbiAgdmFsIHNldCA6ICdhIHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIHRcbiAgdmFsIGFkZF9tdWx0aSA6ICdhIGxpc3QgdCAtPiBrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2EgbGlzdCB0XG4gIHZhbCByZW1vdmVfbXVsdGkgOiAnYSBsaXN0IHQgLT4ga2V5IC0+ICdhIGxpc3QgdFxuICB2YWwgZmluZF9tdWx0aSA6ICdhIGxpc3QgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICB2YWwgY2hhbmdlIDogJ2EgdCAtPiBrZXkgLT4gZjooJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdFxuICB2YWwgdXBkYXRlIDogJ2EgdCAtPiBrZXkgLT4gZjooJ2Egb3B0aW9uIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiAnYSB0XG4gIHZhbCBtZW0gOiBfIHQgLT4ga2V5IC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6IF8gdCAtPiBmOihrZXkgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyIDogJ2EgdCAtPiAnYiB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTooJ2EsICdiKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgbWFwaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjYyAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBmb2xkMlxuICAgIDogICdhIHRcbiAgICAtPiAnYiB0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTooJ2EsICdiKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmlsdGVyX2tleXMgOiAnYSB0IC0+IGY6KGtleSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIGZpbHRlcmkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBwYXJ0aXRpb25fbWFwaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICgnYiwgJ2MpIEVpdGhlci50KSAtPiAnYiB0ICogJ2MgdFxuICB2YWwgcGFydGl0aW9uX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gKCdiLCAnYykgRWl0aGVyLnQpIC0+ICdiIHQgKiAnYyB0XG4gIHZhbCBwYXJ0aXRpb25pX3RmIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogJ2EgT3JfZXJyb3IudCB0IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwga2V5cyA6IF8gdCAtPiBrZXkgbGlzdFxuICB2YWwgZGF0YSA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYWxpc3QgOiA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdIC0+ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2IgdCAtPiBmOihrZXk6a2V5IC0+ICgnYSwgJ2IpIE1lcmdlX2VsZW1lbnQudCAtPiAnYyBvcHRpb24pIC0+ICdjIHRcbiAgdmFsIG1lcmdlX3NrZXdlZCA6ICd2IHQgLT4gJ3YgdCAtPiBjb21iaW5lOihrZXk6a2V5IC0+ICd2IC0+ICd2IC0+ICd2KSAtPiAndiB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+IChrZXksICdhKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAoa2V5LCAnYSkgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICdhIHQgLT4ga2V5ICogJ2FcbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICdhIHQgLT4ga2V5ICogJ2FcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBzcGxpdCA6ICdhIHQgLT4ga2V5IC0+ICdhIHQgKiAoa2V5ICogJ2EpIG9wdGlvbiAqICdhIHRcblxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDonYSB0XG4gICAgLT4gdXBwZXJfcGFydDonYSB0XG4gICAgLT4gWyBgT2sgb2YgJ2EgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAnYSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6a2V5IE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDprZXkgTWF5YmVfYm91bmQudFxuICAgIC0+ICdhIHRcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAnYSB0XG4gICAgLT4gbWluOmtleVxuICAgIC0+IG1heDprZXlcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIC0+ICdiKVxuICAgIC0+ICdiXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogJ2EgdCAtPiBtaW46a2V5IC0+IG1heDprZXkgLT4gKGtleSAqICdhKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgJ2EgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiBrZXlcbiAgICAtPiAoa2V5ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBudGggOiAnYSB0IC0+IGludCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICdhIHQgLT4gaW50IC0+IGtleSAqICdhXG4gIHZhbCByYW5rIDogXyB0IC0+IGtleSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogJ2EgdCAtPiAnYSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOmtleVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86a2V5XG4gICAgLT4gJ2EgdFxuICAgIC0+IChrZXkgKiAnYSkgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgJ2EgdFxuICAgIC0+IGNvbXBhcmU6KGtleTprZXkgLT4gZGF0YTonYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKGtleSAqICdhKSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAnYSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKGtleSAqICdhKSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICdhIHRcbiAgICAtPiBjb21wYXJlOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGFkZCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYikgdCBPcl9kdXBsaWNhdGUudFxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYikgdFxuICB2YWwgc2V0IDogKCdhLCAnYikgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiKSB0XG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiBsaXN0KSB0XG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2EgLT4gKCdhLCAnYiBsaXN0KSB0XG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIC0+ICdiIGxpc3RcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbikgLT4gKCdhLCAnYikgdFxuICB2YWwgdXBkYXRlIDogKCdhLCAnYikgdCAtPiAnYSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbmQgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICdiXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG1lbSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdjKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBtYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG4gIHZhbCBtYXBpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuICB2YWwgZm9sZCA6ICgnYSwgJ2IpIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsICdiKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2MpIHRcbiAgICAtPiBpbml0OidkXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIC0+ICdkKVxuICAgIC0+ICdkXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdhLCAnYikgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuICB2YWwgZmlsdGVyX21hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudCkgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogKCdhLCAnYiBPcl9lcnJvci50KSB0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICB2YWwga2V5cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICdiKSB0IC0+ICdiIGxpc3RcbiAgdmFsIHRvX2FsaXN0IDogP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXSAtPiAoJ2EsICdiKSB0IC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2MpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gKCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIG9wdGlvbilcbiAgICAtPiAoJ2EsICdkKSB0XG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gY29tYmluZTooa2V5OidrIC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgIC0+ICgnaywgJ3YpIHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2EsICdiKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSAqICdiXG4gIHZhbCBtYXhfZWx0IDogKCdhLCAnYikgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2EgKiAnYlxuICB2YWwgZm9yX2FsbCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIHNwbGl0IDogKCdhLCAnYikgdCAtPiAnYSAtPiAoJ2EsICdiKSB0ICogKCdhICogJ2IpIG9wdGlvbiAqICgnYSwgJ2IpIHRcblxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDooJ2EsICdiKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2EsICdiKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2EgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IG1pbjonYVxuICAgIC0+IG1heDonYVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICgnYSwgJ2IpIHQgLT4gbWluOidhIC0+IG1heDonYSAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIG50aCA6ICgnYSwgJ2IpIHQgLT4gaW50IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2EsICdiKSB0IC0+IGludCAtPiAnYSAqICdiXG4gIHZhbCByYW5rIDogKCdhLCBfKSB0IC0+ICdhIC0+IGludCBvcHRpb25cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcbiAgdmFsIGFkZCA6ICgnYSwgJ2IsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgc2V0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2EsICdiIGxpc3QsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0LCAnY21wKSB0IC0+ICdhIC0+ICdiIGxpc3RcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbikgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgdXBkYXRlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbmQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIG1lbSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfLCAnY21wKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBtYXAgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjLCAnY21wKSB0XG4gIHZhbCBtYXBpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgZm9sZCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBpbml0OidkXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIC0+ICdkKVxuICAgIC0+ICdkXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICgnYSwgJ2IgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGtleXMgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAnYiwgXykgdCAtPiAnYiBsaXN0XG5cbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ICgnYSwgJ2IsIF8pIHRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+ICgnYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCBvcHRpb24pXG4gICAgLT4gKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgbWF4X2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIGZvcl9hbGwgOiAoXywgJ2IsIF8pIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiLCBfKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYiwgXykgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYiwgXykgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6IChfLCAnYiwgXykgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IsIF8pIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICdrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnYSwgJ2IsIF8pIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAoJ2EsICdiLCBfKSB0IC0+IG1pbjonYSAtPiBtYXg6J2EgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2EsICdiLCBfKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdhXG4gICAgLT4gKCdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBudGggOiAoJ2EsICdiLCBfKSB0IC0+IGludCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdhLCAnYiwgXykgdCAtPiBpbnQgLT4gJ2EgKiAnYlxuICB2YWwgcmFuayA6ICgnYSwgXywgXykgdCAtPiAnYSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2IsIF8pIHRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gaW50XG5cbiAgdmFsIGFkZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcblxuICB2YWwgYWRkX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgc2V0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBrZXk6J2FcbiAgICAtPiBkYXRhOidiXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBhZGRfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gIHZhbCByZW1vdmVfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgZmluZF9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICdiIGxpc3RcblxuICB2YWwgY2hhbmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCB1cGRhdGVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZmluZCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiXG5cbiAgdmFsIHJlbW92ZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG1lbSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8sICdjbXApIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBtYXAgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjLCAnY21wKSB0XG4gIHZhbCBtYXBpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgZm9sZCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gaW5pdDonZFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCAtPiAnZClcbiAgICAtPiAnZFxuXG4gIHZhbCBmaWx0ZXJfa2V5c1xuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGNvbWJpbmVfZXJyb3JzXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgT3JfZXJyb3IudCwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2IgLT4gJ2IgLT4gaW50KVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHZhbCBrZXlzIDogKCdhLCBfLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ2IsIF8pIHQgLT4gJ2IgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2EsICdiLCBfKSB0XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gKCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIG9wdGlvbilcbiAgICAtPiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAqICdiXG4gIHZhbCBtYXhfZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgZm9yX2FsbCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSAqICdiKSBvcHRpb24gKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBsb3dlcl9wYXJ0OignYSwgJ2IsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignYSwgJ2IsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2EgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IG1pbjonYVxuICAgIC0+IG1heDonYVxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIG50aCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gaW50IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+IGludCAtPiAnYSAqICdiXG4gIHZhbCByYW5rIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGludCBvcHRpb25cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbmVuZFxuXG4oKiogQ29uc2lzdGVuY3kgY2hlY2tzIChzYW1lIGFzIGluIFtDb250YWluZXJdKS4gKilcbm1vZHVsZSBDaGVja19hY2Nlc3NvcnNcbiAgICAoVCA6IFQzKVxuICAgIChUcmVlIDogVDMpXG4gICAgKEtleSA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczMgKE0gOiBBY2Nlc3NvcnMzKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdHJlZVxuICB0eXBlICdrIGtleVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2ssICdjbXAsICdrIGtleSAtPiAndiAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAoICdrMlxuICAgICAgLCAnY21wMlxuICAgICAgLCAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAgIC0+IGY6KCdrMSBrZXkgLT4gJ2syIGtleSlcbiAgICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBrZXkgXSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAoICdrMlxuICAgICAgLCAnY21wMlxuICAgICAgLCAoJ2sxLCAndiwgJ2NtcDEpIHQgLT4gZjooJ2sxIGtleSAtPiAnazIga2V5KSAtPiAoJ2syLCAndiwgJ2NtcDIpIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgYXJyYXkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogKCdrLCAnY21wLCBsZW46aW50IC0+IGY6KGludCAtPiAnayBrZXkgKiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgbGlzdCAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfYWxpc3RfbXVsdGkgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIGxpc3QgLT4gaW5pdDondjIgLT4gZjooJ3YyIC0+ICd2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+IGY6KCd2IC0+ICd2IC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF1cbiAgICAgIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2MSkgU2VxdWVuY2UudFxuICAgICAgLT4gaW5pdDondjJcbiAgICAgIC0+IGY6KCd2MiAtPiAndjEgLT4gJ3YyKVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiBmOigndiAtPiAndiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGl0ZXJpOihmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdCkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YsICdjbXApIHRyZWUgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUga2V5XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGVtcHR5IDogXyB0XG4gIHZhbCBzaW5nbGV0b24gOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgbWFwX2tleXMgOiAndiB0IC0+IGY6KGtleSAtPiBrZXkpIC0+IFsgYE9rIG9mICd2IHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuICB2YWwgbWFwX2tleXNfZXhuIDogJ3YgdCAtPiBmOihrZXkgLT4ga2V5KSAtPiAndiB0XG4gIHZhbCBvZl9hbGlzdCA6IChrZXkgKiAnYSkgbGlzdCAtPiBbIGBPayBvZiAnYSB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yIDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2FsaXN0X211bHRpIDogKGtleSAqICdhKSBsaXN0IC0+ICdhIGxpc3QgdFxuICB2YWwgb2ZfYWxpc3RfZm9sZCA6IChrZXkgKiAnYSkgbGlzdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2UgOiAoa2V5ICogJ2EpIGxpc3QgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6IChrZXkgKiAnYSkgYXJyYXkgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogKGtleSAqICdhKSBhcnJheSAtPiAnYSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+IGtleSAqICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gWyBgT2sgb2YgJ2EgdCB8IGBEdXBsaWNhdGVfa2V5IG9mIGtleSBdXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvciA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlX2V4biA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSBsaXN0IHRcbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGQgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYSB0XG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgaXRlcmk6KGY6KGtleTprZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICd2IHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuXG4gIHZhbCBvZl9pdGVyaV9leG4gOiBpdGVyaTooZjooa2V5OmtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpIC0+ICd2IHRcbiAgdmFsIG9mX3RyZWUgOiAnYSB0cmVlIC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6IChfLCBfKSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAnYiAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgKCdrMSwgJ3YpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2KSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIF1cblxuICB2YWwgbWFwX2tleXNfZXhuIDogKCdrMSwgJ3YpIHQgLT4gZjooJ2sxIC0+ICdrMikgLT4gKCdrMiwgJ3YpIHRcbiAgdmFsIG9mX2FsaXN0IDogKCdhICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yIDogKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9hbGlzdF9tdWx0aSA6ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IgbGlzdCkgdFxuICB2YWwgb2ZfYWxpc3RfZm9sZCA6ICgnYSAqICdiKSBsaXN0IC0+IGluaXQ6J2MgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZSA6ICgnYSAqICdiKSBsaXN0IC0+IGY6KCdiIC0+ICdiIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoJ2EgKiAnYikgYXJyYXkgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogKCdhICogJ2IpIGFycmF5IC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gJ2EgKiAnYikgLT4gKCdhLCAnYikgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlX2V4biA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gKCdhLCAnYiBsaXN0KSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+IGY6KCdiIC0+ICdiIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICB2YWwgb2ZfaXRlcmlfZXhuIDogaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX3RyZWUgOiAoJ2EsICdiKSB0cmVlIC0+ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgZW1wdHkgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgXywgJ2NtcCkgdFxuICB2YWwgc2luZ2xldG9uIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSAtPiAnYiAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIgXVxuXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgdFxuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGY6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KGludCAtPiAnYSAqICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGY6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfdHJlZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0cmVlXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yc1xuICAgIChUIDogVDMpXG4gICAgKFRyZWUgOiBUMylcbiAgICAoS2V5IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBDcmVhdG9yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMxIChNIDogQ3JlYXRvcnMxKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczIgKE0gOiBDcmVhdG9yczIpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzMVxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMxXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRyZWVcbiAgICB3aXRoIHR5cGUga2V5IDo9IGtleVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczJcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzMlxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKFNleHAudCAtPiAndilcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3RcbiAgICA6ICAobW9kdWxlIENvbXBhcmVfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gaW50KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChIYXNoLnN0YXRlIC0+ICd2IC0+IEhhc2guc3RhdGUpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwID0gc2lnXG4gICgqKiBbTWFwXSBpcyBhIGZ1bmN0aW9uYWwgZGF0YSBzdHJ1Y3R1cmUgKGJhbGFuY2VkIGJpbmFyeSB0cmVlKSBpbXBsZW1lbnRpbmcgZmluaXRlIG1hcHNcbiAgICAgIG92ZXIgYSB0b3RhbGx5LW9yZGVyZWQgZG9tYWluLCBjYWxsZWQgYSBcImtleVwiLiAqKVxuXG4gIHR5cGUgKCdrZXksICsndmFsdWUsICdjbXApIHRcblxuICBtb2R1bGUgT3JfZHVwbGljYXRlID0gT3JfZHVwbGljYXRlXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG4gIG1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkIDogc2lnXG4gICAgdHlwZSB0ID0gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgVW5maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9lbnVtZXJhdGVfbGliLkVudW1lcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICAoKiogTWFwcyBbQ29udGludWVdIHRvIFtGaW5pc2hlZF0gYW5kIFtTdG9wXSB0byBbVW5maW5pc2hlZF0uICopXG4gICAgdmFsIG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdFxuXG4gICAgKCoqIE1hcHMgW0ZpbmlzaGVkXSB0byBbQ29udGludWVdIGFuZCBbVW5maW5pc2hlZF0gdG8gW1N0b3BdLiAqKVxuICAgIHZhbCB0b19jb250aW51ZV9vcl9zdG9wIDogdCAtPiBDb250aW51ZV9vcl9zdG9wLnRcbiAgZW5kXG5cbiAgbW9kdWxlIE1lcmdlX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICAgIFsgYExlZnQgb2YgJ2xlZnRcbiAgICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIHZhbCBjb21wYXJlXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gaW50KVxuICAgICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBpbnRcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBib29sXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2xlZnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIGxlZnQgOiAoJ2xlZnQsIF8pIHQgLT4gJ2xlZnQgb3B0aW9uXG4gICAgdmFsIHJpZ2h0IDogKF8sICdyaWdodCkgdCAtPiAncmlnaHQgb3B0aW9uXG4gICAgdmFsIGxlZnRfdmFsdWUgOiAoJ2xlZnQsIF8pIHQgLT4gZGVmYXVsdDonbGVmdCAtPiAnbGVmdFxuICAgIHZhbCByaWdodF92YWx1ZSA6IChfLCAncmlnaHQpIHQgLT4gZGVmYXVsdDoncmlnaHQgLT4gJ3JpZ2h0XG5cbiAgICB2YWwgdmFsdWVzXG4gICAgICA6ICAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gbGVmdF9kZWZhdWx0OidsZWZ0XG4gICAgICAtPiByaWdodF9kZWZhdWx0OidyaWdodFxuICAgICAgLT4gJ2xlZnQgKiAncmlnaHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdCBpZiB0aGUgaW52YXJpYW50cyBvZiB0aGUgaW50ZXJuYWwgQVZMIHNlYXJjaCB0cmVlIGhvbGQuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGMuXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIFRoZSBlbXB0eSBtYXAuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIEEgbWFwIHdpdGggb25lIChrZXksIGRhdGEpIHBhaXIuICopXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgLT4gJ2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJldHVybmluZyBhbiBlcnJvciBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC4gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gVGhlIGFjY3VtdWxhdG9yIGlzIHBlci1rZXkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgICMgbGV0IG1hcCA9IFN0cmluZy5NYXAub2ZfYWxpc3RfZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJhXCIsIDE7IFwiYVwiLCAxMDsgXCJiXCIsIDI7IFwiYlwiLCAyMDsgXCJiXCIsIDIwMCBdXG4gICAgICAgICAgICAgICAgICAgICAgfmluaXQ6SW50LlNldC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICAgIH5mOlNldC5hZGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHByaW50X3MgWyVzZXhwIChtYXAgOiBJbnQuU2V0LnQgU3RyaW5nLk1hcC50KV07O1xuICAgICAgICAoKGEgKDEgMTApKSAoYiAoMiAyMCAyMDApKSlcbiAgICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgXX1cbiAgKilcbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pdGVyaSB+aXRlcmldIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RdLCBleGNlcHQgdGhhdCBpbnN0ZWFkIG9mIHRha2luZyBhIGNvbmNyZXRlXG4gICAgICBkYXRhIHN0cnVjdHVyZSwgaXQgdGFrZXMgYW4gaXRlcmF0aW9uIGZ1bmN0aW9uLiAgRm9yIGluc3RhbmNlLCB0byBjb252ZXJ0IGEgc3RyaW5nIHRhYmxlXG4gICAgICBpbnRvIGEgbWFwOiBbb2ZfaXRlcmkgKG1vZHVsZSBTdHJpbmcpIH5mOihIYXNodGJsLml0ZXJpIHRhYmxlKV0uICBJdCBpcyBmYXN0ZXIgdGhhblxuICAgICAgYWRkaW5nIHRoZSBlbGVtZW50cyBvbmUgYnkgb25lLiAqKVxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBMaWtlIFtvZl9pdGVyaV0gZXhjZXB0IHRoYXQgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGEgc29ydGVkIGFycmF5IG9mIGtleS1kYXRhIHBhaXJzLiBUaGUgaW5wdXQgYXJyYXkgbXVzdCBiZSBzb3J0ZWRcbiAgICAgIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIpLCBhcyBnaXZlbiBieSB0aGUgcmVsZXZhbnQgY29tcGFyYXRvciwgYW5kXG4gICAgICBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZSBrZXlzLiBJZiBlaXRoZXIgb2YgdGhlc2UgY29uZGl0aW9ucyBkb2VzIG5vdCBob2xkLFxuICAgICAgYW4gZXJyb3IgaXMgcmV0dXJuZWQuICAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIExpa2UgW29mX3NvcnRlZF9hcnJheV0gZXhjZXB0IHRoYXQgaXQgcmV0dXJucyBhIG1hcCB3aXRoIGJyb2tlbiBpbnZhcmlhbnRzIHdoZW4gYW5cbiAgICAgIFtFcnJvcl0gd291bGQgaGF2ZSBiZWVuIHJldHVybmVkLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EgKiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheSBjIChTZXF1ZW5jZS50b19hcnJheVxuICAgICAgc2VxKV0sIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGFycmF5LlxuXG4gICAgICBUaGUgc2VxdWVuY2Ugd2lsbCBiZSBmb2xkZWQgb3ZlciBvbmNlLCBhbmQgdGhlIGFkZGl0aW9uYWwgdGltZSBjb21wbGV4aXR5IGlzIHtlIE8obil9LlxuICAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2UgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3QgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cblxuICAgICAgSWYgeW91ciBzZXF1ZW5jZSBpcyBpbmNyZWFzaW5nLCB1c2UgW29mX2luY3JlYXNpbmdfc2VxdWVuY2VdLlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLlxuXG4gICAgICBbb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3Rfb3JfZXJyb3IgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX2V4biBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9leG4gYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfbXVsdGkgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfZm9sZCBjIHNlcSB+aW5pdCB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9mb2xkIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+aW5pdCB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSBpbnRvIGEgbWFwLCByZWR1Y2luZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9yZWR1Y2UgYyBzZXEgfmZdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfcmVkdWNlIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFRlc3RzIHdoZXRoZXIgYSBtYXAgaXMgZW1wdHkuICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW2xlbmd0aCBtYXBdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBbbWFwXS4gIE8oMSksIGJ1dCBbVHJlZS5sZW5ndGhdIGlzXG4gICAgICBPKG4pLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBuZXcgYmluZGluZzsgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBib3VuZCwgaXRzXG4gICAgICBwcmV2aW91cyBiaW5kaW5nIGRpc2FwcGVhcnMuICopXG4gIHZhbCBzZXQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FkZCB0IH5rZXkgfmRhdGFdIGFkZHMgYSBuZXcgZW50cnkgdG8gW3RdIG1hcHBpbmcgW2tleV0gdG8gW2RhdGFdIGFuZCByZXR1cm5zIFtgT2tdXG4gICAgICB3aXRoIHRoZSBuZXcgbWFwLCBvciBpZiBba2V5XSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gW3RdLCByZXR1cm5zIFtgRHVwbGljYXRlXS4gKilcbiAgdmFsIGFkZCA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuXG4gIHZhbCBhZGRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIElmIFtrZXldIGlzIG5vdCBwcmVzZW50IHRoZW4gYWRkIGEgc2luZ2xldG9uIGxpc3QsIG90aGVyd2lzZSwgY29ucyBkYXRhIG9udG8gdGhlXG4gICAgICBoZWFkIG9mIHRoZSBleGlzdGluZyBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBJZiB0aGUga2V5IGlzIHByZXNlbnQsIHRoZW4gcmVtb3ZlIGl0cyBoZWFkIGVsZW1lbnQ7IGlmIHRoZSByZXN1bHQgaXMgZW1wdHksIHJlbW92ZVxuICAgICAgdGhlIGtleS4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgdGhlIGVtcHR5IGxpc3QgaWYgdGhlcmUgaXMgbm9uZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gJ3YgbGlzdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSByZXR1cm5zIGEgbmV3IG1hcCBbbV0gdGhhdCBpcyB0aGUgc2FtZSBhcyBbdF0gb24gYWxsIGtleXMgZXhjZXB0XG4gICAgICBmb3IgW2tleV0sIGFuZCB3aG9zZSB2YWx1ZSBmb3IgW2tleV0gaXMgZGVmaW5lZCBieSBbZl0sIGkuZS4sIFtmaW5kIG0ga2V5ID0gZiAoZmluZFxuICAgICAgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gZjooJ3Ygb3B0aW9uIC0+ICd2IG9wdGlvbikgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbdXBkYXRlIHQga2V5IH5mXSBpcyBbY2hhbmdlIHQga2V5IH5mOihmdW4gbyAtPiBTb21lIChmIG8pKV0uICopXG4gIHZhbCB1cGRhdGUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGY6KCd2IG9wdGlvbiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG5cbiAgKCoqIFJldHVybnMgW1NvbWUgdmFsdWVdIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIFtOb25lXSBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSB2YWx1ZSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCByYWlzaW5nIFtDYW1sLk5vdF9mb3VuZF0gb3IgW05vdF9mb3VuZF9zXVxuICAgICAgaWYgbm9uZSBleGlzdHMuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gJ3ZcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBhbnkgYmluZGluZyBmb3IgdGhlIGtleSBpbiBxdWVzdGlvbiByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFttZW0gbWFwIGtleV0gdGVzdHMgd2hldGhlciBbbWFwXSBjb250YWlucyBhIGJpbmRpbmcgZm9yIFtrZXldLiAqKVxuICB2YWwgbWVtIDogKCdrLCBfLCAnY21wKSB0IC0+ICdrIC0+IGJvb2xcblxuICB2YWwgaXRlcl9rZXlzIDogKCdrLCBfLCBfKSB0IC0+IGY6KCdrIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZXMgdW50aWwgdGhlIGZpcnN0IHRpbWUgW2ZdIHJldHVybnMgW1N0b3BdLiBJZiBbZl0gcmV0dXJucyBbU3RvcF0sIHRoZSBmaW5hbFxuICAgICAgcmVzdWx0IGlzIFtVbmZpbmlzaGVkXS4gT3RoZXJ3aXNlLCB0aGUgZmluYWwgcmVzdWx0IGlzIFtGaW5pc2hlZF0uICopXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgKCoqIEl0ZXJhdGVzIHR3byBtYXBzIHNpZGUgYnkgc2lkZS4gVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBpcyBPKE0gKyBOKS4gIElmIHR3b1xuICAgICAgaW5wdXRzIGFyZSBbWygwLCBhKTsgKDEsIGEpXV0gYW5kIFtbKDEsIGIpOyAoMiwgYildXSwgW2ZdIHdpbGwgYmUgY2FsbGVkIHdpdGggW1soMCxcbiAgICAgIGBMZWZ0IGEpOyAoMSwgYEJvdGggKGEsIGIpKTsgKDIsIGBSaWdodCBiKV1dLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIHJlcGxhY2VkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuKilcbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRha2VzIGJvdGggW2tleV0gYW5kIFtkYXRhXSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBtYXBpIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogQ29udmVydCBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdG8gYSBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdXNpbmcgW2ZdLiAqKVxuICB2YWwgbWFwX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YsICdjbXAyKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIF1cblxuICAoKiogTGlrZSBbbWFwX2tleXNdLCBidXQgcmFpc2VzIG9uIGR1cGxpY2F0ZSBrZXkuICopXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gKCdrMiwgJ3YsICdjbXAyKSB0XG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0uICopXG4gIHZhbCBmb2xkIDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLCB1bnRpbCB0aGUgZmlyc3RcbiAgICAgIHRpbWUgdGhhdCBbZl0gcmV0dXJucyBbU3RvcCBfXS4gSWYgW2ZdIHJldHVybnMgW1N0b3AgZmluYWxdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgIGltbWVkaWF0ZWx5IHdpdGggdGhlIHZhbHVlIFtmaW5hbF0uIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCBhbmQgdGhlIGZpbmFsXG4gICAgICBjYWxsIHRvIFtmXSByZXR1cm5zIFtDb250aW51ZSBsYXN0XSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFtmaW5pc2ggbGFzdF0uICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2MgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZF9yaWdodCA6ICgnaywgJ3YsIF8pIHQgLT4gaW5pdDonYSAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICAoKiogRm9sZHMgb3ZlciB0d28gbWFwcyBzaWRlIGJ5IHNpZGUsIGxpa2UgW2l0ZXIyXS4gKilcbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYSAtPiAnYSlcbiAgICAtPiAnYVxuXG4gICgqKiBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyX21hcGldIHJ1biBpbiBPKG4gKiBsZ1xuICAgICAgbikgdGltZTsgdGhleSBzaW1wbHkgYWNjdW11bGF0ZSBlYWNoIGtleSAmIGRhdGEgcGFpciByZXRhaW5lZCBieSBbZl0gaW50byBhIG5ldyBtYXBcbiAgICAgIHVzaW5nIFthZGRdLiAqKVxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCdrIC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIGZpbHRlcmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MiBvcHRpb24pIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW2ZpbHRlcl9tYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXNcbiAgICAgIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcGkgdCB+Zl0gcmV0dXJucyB0d28gbmV3IFt0XXMsIHdpdGggZWFjaCBrZXkgaW4gW3RdIGFwcGVhcmluZyBpblxuICAgICAgZXhhY3RseSBvbmUgb2YgdGhlIHJlc3VsdGluZyBtYXBzIGRlcGVuZGluZyBvbiBpdHMgbWFwcGluZyBpbiBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXSAqKVxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKlxuICAgICB7W1xuICAgICAgIHBhcnRpdGlvbmlfdGYgdCB+ZlxuICAgICAgID1cbiAgICAgICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgaWYgZiB+a2V5IH5kYXRhXG4gICAgICAgICB0aGVuIEZpcnN0IGRhdGFcbiAgICAgICAgIGVsc2UgU2Vjb25kIGRhdGEpXG4gICAgIF19ICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBQcm9kdWNlcyBbT2tdIG9mIGEgbWFwIGluY2x1ZGluZyBhbGwga2V5cyBpZiBhbGwgZGF0YSBpcyBbT2tdLCBvciBhbiBbRXJyb3JdXG4gICAgICBpbmNsdWRpbmcgYWxsIGVycm9ycyBvdGhlcndpc2UuICopXG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogUmV0dXJucyBhIHRvdGFsIG9yZGVyaW5nIGJldHdlZW4gbWFwcy4gVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgdG90YWwgb3JkZXJpbmcgdXNlZFxuICAgICAgdG8gY29tcGFyZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBlcXVhbCBrZXlzIGluIHRoZSB0d28gbWFwcy4gKilcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGludFxuXG4gICgqKiBIYXNoIGZ1bmN0aW9uOiBhIGJ1aWxkaW5nIGJsb2NrIHRvIHVzZSB3aGVuIGhhc2hpbmcgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgbWFwcyBpblxuICAgICAgdGhlbS4gW2hhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFtjb21wYXJlX2RpcmVjdF0gaWZmXG4gICAgICBbaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFsoY29tcGFyYXRvciBtKS5jb21wYXJlXSBvZiB0aGUgbWFwIFttXSBiZWluZ1xuICAgICAgaGFzaGVkLiAqKVxuICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdrIEhhc2guZm9sZGVyIC0+ICd2IEhhc2guZm9sZGVyIC0+ICgnaywgJ3YsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAoKiogW2VxdWFsIGNtcCBtMSBtMl0gdGVzdHMgd2hldGhlciB0aGUgbWFwcyBbbTFdIGFuZCBbbTJdIGFyZSBlcXVhbCwgdGhhdCBpcywgY29udGFpblxuICAgICAgdGhlIHNhbWUga2V5cyBhbmQgYXNzb2NpYXRlIGVhY2gga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUuICBbY21wXSBpcyB0aGUgZXF1YWxpdHlcbiAgICAgIHByZWRpY2F0ZSB1c2VkIHRvIGNvbXBhcmUgdGhlIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGtleXMuICopXG4gIHZhbCBlcXVhbCA6ICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUga2V5cyBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwga2V5cyA6ICgnaywgXywgXykgdCAtPiAnayBsaXN0XG5cbiAgKCoqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBkYXRhIGluIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCBkYXRhIDogKF8sICd2LCBfKSB0IC0+ICd2IGxpc3RcblxuICAoKiogQ3JlYXRlcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGZyb20gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXSAoKiogZGVmYXVsdCBpcyBbYEluY3JlYXNpbmddICopXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIHsyIEFkZGl0aW9uYWwgb3BlcmF0aW9ucyBvbiBtYXBzfSAqKVxuXG4gICgqKiBNZXJnZXMgdHdvIG1hcHMuIFRoZSBydW50aW1lIGlzIE8obGVuZ3RoKHQxKSArIGxlbmd0aCh0MikpLiBZb3Ugc2hvdWxkbid0IHVzZSB0aGlzXG4gICAgICBmdW5jdGlvbiB0byBtZXJnZSBhIGxpc3Qgb2YgbWFwczsgY29uc2lkZXIgdXNpbmcgW21lcmdlX3NrZXdlZF0gaW5zdGVhZC4gKilcbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIEEgc3BlY2lhbCBjYXNlIG9mIFttZXJnZV0sIFttZXJnZV9za2V3ZWQgdDEgdDJdIGlzIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZVxuICAgICAgYmluZGluZ3Mgb2YgW3QxXSBhbmQgW3QyXS4gQmluZGluZ3MgdGhhdCBhcHBlYXIgaW4gYm90aCBbdDFdIGFuZCBbdDJdIGFyZVxuICAgICAgY29tYmluZWQgaW50byBhIHNpbmdsZSB2YWx1ZSB1c2luZyB0aGUgW2NvbWJpbmVdIGZ1bmN0aW9uLiBJbiBhIGNhbGxcbiAgICAgIFtjb21iaW5lIH5rZXkgdjEgdjJdLCB0aGUgdmFsdWUgW3YxXSBjb21lcyBmcm9tIFt0MV0gYW5kIFt2Ml0gZnJvbSBbdDJdLlxuXG4gICAgICBUaGUgcnVudGltZSBvZiBbbWVyZ2Vfc2tld2VkXSBpcyBbTyhtaW4obDEsIGwyKSAqIGxvZyhtYXgobDEsIGwyKSkpXSwgd2hlcmUgW2wxXSBpc1xuICAgICAgdGhlIGxlbmd0aCBvZiBbdDFdIGFuZCBbbDJdIHRoZSBsZW5ndGggb2YgW3QyXS4gVGhpcyBpcyBsaWtlbHkgdG8gYmUgZmFzdGVyIHRoYW5cbiAgICAgIFttZXJnZV0gd2hlbiBvbmUgb2YgdGhlIG1hcHMgaXMgYSBsb3Qgc21hbGxlciwgb3Igd2hlbiB5b3UgbWVyZ2UgYSBsaXN0IG9mIG1hcHMuICopXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgbW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgICAgOiAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsXSByZXR1cm5zIGEgbGlzdCBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS5cbiAgICAgIEl0IGlzIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50XG4gICAgICBvZiBzdHJ1Y3R1cmUuIFRoZSBrZXlzIGluIHRoZSBvdXRwdXQgc2VxdWVuY2Ugd2lsbCBiZSBpbiBzb3J0ZWQgb3JkZXIuXG5cbiAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBbZGF0YV9lcXVhbF0gaXMgYXQgbGVhc3QgYXMgZXF1YXRpbmcgYXMgcGh5c2ljYWwgZXF1YWxpdHk6IHRoYXRcbiAgICAgIFtwaHlzX2VxdWFsIHggeV0gaW1wbGllcyBbZGF0YV9lcXVhbCB4IHldLiBPdGhlcndpc2UsIFtzeW1tZXRyaWNfZGlmZl0gbWF5IGJlaGF2ZSBpblxuICAgICAgdW5leHBlY3RlZCB3YXlzLiBGb3IgZXhhbXBsZSwgd2l0aCBbfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gZmFsc2UpXSBpdCBpcyBOT1RcbiAgICAgIG5lY2Vzc2FyaWx5IHRoZSBjYXNlIHRoZSByZXN1bHRpbmcgY2hhbmdlIHNlcXVlbmNlIHdpbGwgY29udGFpbiBhbiBlbGVtZW50XG4gICAgICBbKGssIGBVbmVxdWFsIF8pXSBmb3IgZXZlcnkga2V5IFtrXSBzaGFyZWQgYnkgYm90aCBtYXBzLlxuXG4gICAgICBXYXJuaW5nOiBGbG9hdCBlcXVhbGl0eSB2aW9sYXRlcyB0aGlzIHByb3BlcnR5ISBbcGh5c19lcXVhbCBGbG9hdC5uYW4gRmxvYXQubmFuXSBpc1xuICAgICAgdHJ1ZSwgYnV0IFtGbG9hdC4oPSkgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXMgZmFsc2UuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gZm9sZHMgYWNyb3NzIGFuIGltcGxpY2l0IHNlcXVlbmNlIG9mIGNoYW5nZXNcbiAgICAgIGJldHdlZW4gW3QxXSBhbmQgW3QyXSwgaW4gc29ydGVkIG9yZGVyIGJ5IGtleXMuIEVxdWl2YWxlbnQgdG9cbiAgICAgIFtTZXF1ZW5jZS5mb2xkIChzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCldLCBhbmQgbW9yZSBlZmZpY2llbnQuICopXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOignYSAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2EpXG4gICAgLT4gJ2FcblxuICAoKiogW21pbl9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1pbmltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBbbWF4X2VsdCBtYXBdIHJldHVybnMgW1NvbWUgKGtleSwgZGF0YSldIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgbWF4aW11bSBrZXkgaW5cbiAgICAgIFttYXBdLCBvciBbTm9uZV0gaWYgW21hcF0gaXMgZW1wdHkuICopXG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayAqICd2XG5cbiAgKCoqIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBhcyBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBbTGlzdF0uICopXG5cbiAgdmFsIGZvcl9hbGwgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gaW50XG5cblxuICAoKiogW3NwbGl0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrZXldLCB0aGUgbWFwcGluZyBvZiBba2V5XSBpZlxuICAgICAgYW55LCBhbmQgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydF0gcmV0dXJucyBbYE9rIG1hcF0gd2hlcmUgW21hcF0gY29udGFpbnMgYWxsIHRoZVxuICAgICAgWyhrZXksIHZhbHVlKV0gcGFpcnMgZnJvbSB0aGUgdHdvIGlucHV0IG1hcHMgaWYgYWxsIHRoZSBrZXlzIGZyb20gW2xvd2VyX3BhcnRdIGFyZVxuICAgICAgbGVzcyB0aGFuIGFsbCB0aGUga2V5cyBmcm9tIFt1cHBlcl9wYXJ0XS4gIE90aGVyd2lzZSBpdCByZXR1cm5zXG4gICAgICBbYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNdLlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG4pIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGxhcmdlciBpbnB1dCBtYXAuICBUaGlzIGNhbiBiZVxuICAgICAgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBbTWFwLm1lcmdlXSBvciByZXBlYXRlZCBbTWFwLmFkZF0uXG5cbiAgICAgIHtbXG4gICAgICAgIGFzc2VydCAobWF0Y2ggTWFwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB3aXRoXG4gICAgICAgICAgfCBgT2sgd2hvbGVfbWFwIC0+XG4gICAgICAgICAgICBNYXAudG9fYWxpc3Qgd2hvbGVfbWFwXG4gICAgICAgICAgICA9IExpc3QuYXBwZW5kICh0b19hbGlzdCBsb3dlcl9wYXJ0KSAodG9fYWxpc3QgdXBwZXJfcGFydClcbiAgICAgICAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+IHRydWUpO1xuICAgICAgXX0gKilcbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgKCoqIFtzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRdIHJldHVybnMgYSBtYXAgY29udGFpbmluZyBhbGwgdGhlIGVudHJpZXMgZnJvbVxuICAgICAgW3RdIHdob3NlIGtleXMgbGllIGluc2lkZSB0aGUgaW50ZXJ2YWwgaW5kaWNhdGVkIGJ5IFt+bG93ZXJfYm91bmRdIGFuZFxuICAgICAgW351cHBlcl9ib3VuZF0uICBJZiB0aGlzIGludGVydmFsIGlzIGVtcHR5LCBhbiBlbXB0eSBtYXAgaXMgcmV0dXJuZWQuXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBvdXRwdXQgbWFwLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgdGhlXG4gICAgICBvdXRwdXQgbWFwLiAqKVxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+Zl0gZm9sZHMgW2ZdICh3aXRoIGluaXRpYWwgdmFsdWUgW35pbml0XSlcbiAgICAgIG92ZXIgYWxsIGtleXMgKGFuZCB0aGVpciBhc3NvY2lhdGVkIHZhbHVlcykgdGhhdCBhcmUgaW4gdGhlIHJhbmdlIFtbbWluLCBtYXhdXVxuICAgICAgKGluY2x1c2l2ZSkuICAqKVxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gbWluOidrXG4gICAgLT4gbWF4OidrXG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKVxuICAgIC0+ICdhXG5cbiAgKCoqIFtyYW5nZV90b19hbGlzdCB0IH5taW4gfm1heF0gcmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBsaXN0IG9mIHRoZSBlbGVtZW50cyB3aG9zZSBrZXlzXG4gICAgICBsaWUgaW4gW1ttaW4sIG1heF1dIChpbmNsdXNpdmUpLCB3aXRoIHRoZSBzbWFsbGVzdCBrZXkgYmVpbmcgYXQgdGhlIGhlYWQgb2YgdGhlXG4gICAgICBsaXN0LiAqKVxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayAtPiBtYXg6J2sgLT4gKCdrICogJ3YpIGxpc3RcblxuICAoKiogW2Nsb3Nlc3Rfa2V5IHQgZGlyIGtdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgaW4gW3RdIHdpdGggW2tleV0gY2xvc2VzdCB0b1xuICAgICAgW2tdIHRoYXQgc2F0aXNmaWVzIHRoZSBnaXZlbiBpbmVxdWFsaXR5IGJvdW5kLlxuXG4gICAgICBGb3IgZXhhbXBsZSwgW2Nsb3Nlc3Rfa2V5IHQgYExlc3NfdGhhbiBrXSB3b3VsZCBiZSB0aGUgcGFpciB3aXRoIHRoZSBjbG9zZXN0IGtleSB0b1xuICAgICAgW2tdIHdoZXJlIFtrZXkgPCBrXS5cblxuICAgICAgW3RvX3NlcXVlbmNlXSBjYW4gYmUgdXNlZCB0byBnZXQgdGhlIHNhbWUgcmVzdWx0cyBhcyBbY2xvc2VzdF9rZXldLiAgSXQgaXMgbGVzc1xuICAgICAgZWZmaWNpZW50IGZvciBpbmRpdmlkdWFsIGxvb2t1cHMgYnV0IG1vcmUgZWZmaWNpZW50IGZvciBmaW5kaW5nIG1hbnkgZWxlbWVudHMgc3RhcnRpbmdcbiAgICAgIGF0IHNvbWUgdmFsdWUuICopXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2tcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtudGggdCBuXSBmaW5kcyB0aGUgKGtleSwgdmFsdWUpIHBhaXIgb2YgcmFuayBuIChpLmUuLCBzdWNoIHRoYXQgdGhlcmUgYXJlIGV4YWN0bHkgblxuICAgICAga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIGZvdW5kIGtleSksIGlmIG9uZSBleGlzdHMuICBPKGxvZyhsZW5ndGggdCkgKyBuKSB0aW1lLiAqKVxuICB2YWwgbnRoIDogKCdrLCAndiwgXykgdCAtPiBpbnQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBudGhfZXhuIDogKCdrLCAndiwgXykgdCAtPiBpbnQgLT4gJ2sgKiAndlxuXG4gICgqKiBbcmFuayB0IGtdIElmIFtrXSBpcyBpbiBbdF0sIHJldHVybnMgdGhlIG51bWJlciBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba10gaW5cbiAgICAgIFt0XSwgYW5kIFtOb25lXSBvdGhlcndpc2UuICopXG4gIHZhbCByYW5rIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBpbnQgb3B0aW9uXG5cblxuXG4gICgqKiBbdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XVxuICAgICAgZ2l2ZXMgYSBzZXF1ZW5jZSBvZiBrZXktdmFsdWUgcGFpcnMgYmV0d2VlbiBba2V5c19sZXNzX29yX2VxdWFsX3RvXSBhbmRcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSwgcHJlc2VudGVkIGluIFtvcmRlcl0uICBJZlxuICAgICAgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA+IGtleXNfbGVzc19vcl9lcXVhbF90b10sIHRoZSBzZXF1ZW5jZSBpc1xuICAgICAgZW1wdHkuXG5cbiAgICAgIFdoZW4gbmVpdGhlciBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBub3IgW2tleXNfbGVzc19vcl9lcXVhbF90b10gYXJlXG4gICAgICBwcm92aWRlZCwgdGhlIGNvc3QgaXMgTyhsb2cgbikgdXAgZnJvbnQgYW5kIGFtb3J0aXplZCBPKDEpIHRvIHByb2R1Y2VcbiAgICAgIGVhY2ggZWxlbWVudC4gSWYgZWl0aGVyIGlzIHByb3ZpZGVkIChhbmQgaXMgdXNlZCBieSB0aGUgb3JkZXIgcGFyYW1ldGVyXG4gICAgICBwcm92aWRlZCksIHRoZW4gdGhlIHRoZSBjb3N0IGlzIE8obikgdXAgZnJvbnQsIGFuZCBhbW9ydGl6ZWQgTygxKSB0b1xuICAgICAgcHJvZHVjZSBlYWNoIGVsZW1lbnQuICopXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzona1xuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgaW4gW3RdXG4gICAgICBzcGVjaWZpZWQgYnkgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZVxuICAgICAgc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGVcbiAgICAgIGxlZnQgc2VnbWVudCwgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LlxuICAgICAgSXQgcmV0dXJucyBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zdWJyYW5nZV0gdGFrZXMgYSBbY29tcGFyZV0gZnVuY3Rpb24gdGhhdCBkaXZpZGVzIFt0XSBpbnRvIHRocmVlXG4gICAgICAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzIHdpdGggcmVzcGVjdCB0byBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdOlxuXG4gICAgICB7dlxuICAgICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgSW5fcmFuZ2UgfCBBYm92ZV91cHBlcl9ib3VuZCB8XG4gICAgICB2fVxuXG4gICAgICBhbmQgcmV0dXJucyBhIG1hcCBvZiB0aGUgW0luX3JhbmdlXSBzZWdtZW50LlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG0gKyBuKSB3aGVyZSBbbV0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgbWFwIGFuZCBbbl0gaXMgdGhlXG4gICAgICBsZW5ndGggb2YgdGhlIG91dHB1dC4gVGhlIGxpbmVhciB0ZXJtIGluIFtuXSBpcyB0byBjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dC5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIFtjb21wYXJlXSBkb2VzIG5vdCBzZWdtZW50IFt0XSBhcyBzaG93biBhYm92ZSwgb3IgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIGl0cyBpbnB1dHMuICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfbWFwID0gaW50IE1hcC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IChTdHJpbmcudCwgaW50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBNYXAudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW2ludCBNYXAuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmQgc3ludGF4XG4gICAgICBkb2Vzbid0IChiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMsIHNheSwgW1N0cmluZy5zZXhwX29mX2NvbXBhcmF0b3Jfd2l0bmVzc11cbiAgICAgIC0tIGluc3RlYWQgeW91IHdvdWxkIHdhbnQgdG8gcGFzcyB0aGUgY29tcGFyYXRvciBkaXJlY3RseSkuXG5cbiAgICAgIEluIGFkZGl0aW9uLCB3aGVuIHVzaW5nIFtAQGRlcml2aW5nXSwgdGhlIHJlcXVpcmVtZW50cyBvbiB0aGUga2V5IG1vZHVsZSBhcmUgb25seVxuICAgICAgdGhvc2UgbmVlZGVkIHRvIHNhdGlzZnkgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBkZXJpdmUgb24gdGhlIG1hcCBpdHNlbGYuIFNheSB5b3VcbiAgICAgIHdyaXRlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHQgPSBpbnQgTWFwLk0oWCkudCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgXX1cblxuICAgICAgdGhlbiB0aGlzIHdpbGwgYmUgd2VsbCB0eXBlZCBleGFjdGx5IGlmIFtYXSBjb250YWlucyBhdCBsZWFzdDpcbiAgICAgIC0gYSB0eXBlIFt0XSB3aXRoIG5vIHBhcmFtZXRlcnNcbiAgICAgIC0gYSBjb21wYXJhdG9yIHdpdG5lc3NcbiAgICAgIC0gYSBbaGFzaF9mb2xkX3RdIGZ1bmN0aW9uIHdpdGggdGhlIHJpZ2h0IHR5cGUgKilcbiAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdrZXksICd2YWx1ZSwgJ2NtcCkgdCA6PSAoJ2tleSwgJ3ZhbHVlLCAnY21wKSB0XG5cbiAgKCoqIFtVc2luZ19jb21wYXJhdG9yXSBpcyBhIHNpbWlsYXIgaW50ZXJmYWNlIGFzIHRoZSB0b3BsZXZlbCBvZiBbTWFwXSwgZXhjZXB0IHRoZVxuICAgICAgZnVuY3Rpb25zIHRha2UgYSBbfmNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRdLCB3aGVyZWFzIHRoZSBmdW5jdGlvbnMgYXQgdGhlXG4gICAgICB0b3BsZXZlbCBvZiBbTWFwXSB0YWtlIGEgWygnaywgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdrLCArJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKFNleHAudCAtPiAnaylcbiAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICB0eXBlICgrJ2ssICsndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgLT4gKFNleHAudCAtPiAnaylcbiAgICAgICAgLT4gKFNleHAudCAtPiAndilcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfLCBfKSB0XG5cbiAgICAgICgqKiBbQnVpbGRfaW5jcmVhc2luZ10gY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgbWFwIGluY3JlbWVudGFsbHkgZnJvbSBhXG4gICAgICAgICAgc2VxdWVuY2UgdGhhdCBpcyBrbm93biB0byBiZSBpbmNyZWFzaW5nLlxuXG4gICAgICAgICAgVGhlIHRvdGFsIHRpbWUgY29tcGxleGl0eSBvZiBjb25zdHJ1Y3RpbmcgYSBtYXAgdGhpcyB3YXkgaXMgTyhuKSwgd2hpY2ggaXMgbW9yZVxuICAgICAgICAgIGVmZmljaWVudCB0aGFuIHVzaW5nIFtNYXAuYWRkXSBieSBhIGxvZ2FyaXRobWljIGZhY3Rvci5cblxuICAgICAgICAgIFRoaXMgaW50ZXJmYWNlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgZHVhbCBvZiBbdG9fc2VxdWVuY2VdLCBidXQgd2UgZG9uJ3QgaGF2ZVxuICAgICAgICAgIGFuIGVxdWFsbHkgbmVhdCBpZGlvbSBmb3IgdGhlIGR1YWxzIG9mIHNlcXVlbmNlcyAoW29mX3NlcXVlbmNlXSBpcyBtdWNoIGxlc3NcbiAgICAgICAgICBnZW5lcmFsIGJlY2F1c2UgaXQgZG9lcyBub3QgYWxsb3cgdGhlIHNlcXVlbmNlIHRvIGJlIHByb2R1Y2VkIGFzeW5jaHJvbm91c2x5KS4gKilcbiAgICAgIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nIDogc2lnXG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgdHlwZSAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgIHZhbCBlbXB0eSA6ICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgKCoqIFRpbWUgY29tcGxleGl0eSBvZiBbYWRkX2V4bl0gaXMgYW1vcnRpemVkIGNvbnN0YW50LXRpbWUgKGlmIFt0XSBpcyB1c2VkXG4gICAgICAgICAgICBsaW5lYXJseSksIHdpdGggYSB3b3JzdC1jYXNlIE8obG9nKG4pKSB0aW1lLiAqKVxuICAgICAgICB2YWwgYWRkX2V4blxuICAgICAgICAgIDogICgnaywgJ3YsICd3KSB0XG4gICAgICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICd3KSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiBrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOid2XG4gICAgICAgICAgLT4gKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IGlzIE8obG9nKG4pKS4gKilcbiAgICAgICAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAndykgdCAtPiAoJ2ssICd2LCAndykgdHJlZVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBBY2Nlc3NvcnMzXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3RcbiAgICAgIDogICdrIEhhc2guZm9sZGVyXG4gICAgICAtPiAndiBIYXNoLmZvbGRlclxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgKCoqIFRvIGdldCBhcm91bmQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uLCBhcHBseSB0aGUgZnVuY3RvciBhbmQgaW5jbHVkZSBpdC4gWW91XG4gICAgICAgIGNhbiBzZWUgYW4gZXhhbXBsZSBvZiB0aGlzIGluIHRoZSBbUG9seV0gc3VibW9kdWxlIGJlbG93LiAqKVxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBNYXAuICopXG4gIG1vZHVsZSBQb2x5IDpcbiAgICBTX3BvbHlcbiAgICB3aXRoIHR5cGUgKCdrZXksICsndmFsdWUpIHQgPSAoJ2tleSwgJ3ZhbHVlLCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgIGFuZCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0cmVlID1cbiAgICAgICAgICAgKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICgqKiBDcmVhdGUgYSBtYXAgZnJvbSBhIHRyZWUgdXNpbmcgdGhlIGdpdmVuIGNvbXBhcmF0b3IuICopXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIEV4dHJhY3QgYSB0cmVlIGZyb20gYSBtYXAuICopXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG5cbiAgKCoqIHsyIE1vZHVsZXMgYW5kIG1vZHVsZSB0eXBlcyBmb3IgZXh0ZW5kaW5nIFtNYXBdfVxuXG4gICAgICBGb3IgdXNlIGluIGV4dGVuc2lvbnMgb2YgQmFzZSwgbGlrZSBbQ29yZV0uICopXG5cbiAgbW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFdpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxuICBtb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gV2l0aG91dF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gQWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gQWNjZXNzb3JzMlxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMzID0gQWNjZXNzb3JzM1xuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gQWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gQ3JlYXRvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IENyZWF0b3JzMlxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yID0gQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwX2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuR2VuZXJpY19waGFudG9tXG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICAoKiogVGhlIFtvcHRpb25zXSB0eXBlIGlzIHVzZWQgdG8gbWFrZSBbQWNjZXNzb3JzX2dlbmVyaWNdIGZsZXhpYmxlIGFzIHRvIHdoZXRoZXIgYVxuICAgICAgY29tcGFyYXRvciBpcyByZXF1aXJlZCB0byBiZSBwYXNzZWQgdG8gY2VydGFpbiBmdW5jdGlvbnMuICopXG4gIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9uc1xuXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgaW52YXJpYW50cyA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcblxuICAoKiogb3ZlcnJpZGUgW0NvbnRhaW5lcl0ncyBbbWVtXSAqKVxuICB2YWwgbWVtIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+IGJvb2wpIG9wdGlvbnNcblxuICB2YWwgYWRkIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgdW5pb24gOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnYSBlbHQpIEVpdGhlci50IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludCkgb3B0aW9uc1xuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuXG4gIHR5cGUgKCdhLCAnY21wKSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXRcbiAgICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIG5hbWVkIC0+IG9mXzooJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSBuYW1lZCAtPiAoJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudCkgb3B0aW9uc1xuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSBlbHQgLT4gKCdiLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYiAtPiBmOignYSBlbHQgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgZWx0IHwgYFJpZ2h0IG9mICdhIGVsdCB8IGBCb3RoIG9mICdhIGVsdCAqICdhIGVsdCBdIC0+IHVuaXQpXG4gICAgICAtPiB1bml0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICdhIGVsdCBvcHRpb24gKiAoJ2EsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGdyb3VwX2J5XG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+IGVxdWl2OignYSBlbHQgLT4gJ2EgZWx0IC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCBsaXN0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gJ2EgZWx0XG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gJ2EgZWx0IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAna2V5IC0+IGludClcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KCdhIGVsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAnYSBlbHQgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EgZWx0LCAnYSBlbHQpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczAgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuUzBcblxuICB0eXBlIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgaW52YXJpYW50cyA6IHQgLT4gYm9vbFxuICB2YWwgbWVtIDogdCAtPiBlbHQgLT4gYm9vbFxuICB2YWwgYWRkIDogdCAtPiBlbHQgLT4gdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBlbHQgLT4gdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuICB2YWwgaW50ZXIgOiB0IC0+IHQgLT4gdFxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6IHQgLT4gdCAtPiAoZWx0LCBlbHQpIEVpdGhlci50IFNlcXVlbmNlLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaXNfc3Vic2V0IDogdCAtPiBvZl86dCAtPiBib29sXG4gIHZhbCBhcmVfZGlzam9pbnQgOiB0IC0+IHQgLT4gYm9vbFxuXG4gIHR5cGUgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0IDogbmFtZWQgLT4gb2ZfOm5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBlcXVhbCA6IG5hbWVkIC0+IG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gZWx0IC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogdCAtPiBpbml0OidiIC0+IGY6KGVsdCAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICB0XG4gICAgLT4gdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgZWx0IHwgYFJpZ2h0IG9mIGVsdCB8IGBCb3RoIG9mIGVsdCAqIGVsdCBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXIgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiB0ICogdFxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBtaW5fZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6IHQgLT4gZWx0XG4gIHZhbCBtYXhfZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6IHQgLT4gZWx0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiB0IC0+IGVsdFxuICB2YWwgc3BsaXQgOiB0IC0+IGVsdCAtPiB0ICogZWx0IG9wdGlvbiAqIHRcbiAgdmFsIGdyb3VwX2J5IDogdCAtPiBlcXVpdjooZWx0IC0+IGVsdCAtPiBib29sKSAtPiB0IGxpc3RcbiAgdmFsIGZpbmRfZXhuIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gZWx0XG4gIHZhbCBudGggOiB0IC0+IGludCAtPiBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiB0IC0+IGludCAtPiB0XG4gIHZhbCB0b190cmVlIDogdCAtPiB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gdFxuICAgIC0+IGVsdCBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICB0XG4gICAgLT4gY29tcGFyZTooZWx0IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGVsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzplbHRcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzplbHRcbiAgICAtPiB0XG4gICAgLT4gdFxuICAgIC0+IChlbHQsIGVsdCkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxXG5cbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiBfIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBhZGQgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgdW5pb24gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgaW50ZXIgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZGlmZiA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6ICdhIHQgLT4gJ2EgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGlzX3N1YnNldCA6ICdhIHQgLT4gb2ZfOidhIHQgLT4gYm9vbFxuICB2YWwgYXJlX2Rpc2pvaW50IDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICB0eXBlICdhIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldCA6ICdhIG5hbWVkIC0+IG9mXzonYSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgZXF1YWwgOiAnYSBuYW1lZCAtPiAnYSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdhIC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBpdGVyMlxuICAgIDogICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBlbGVtZW50cyA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICdhIHQgLT4gJ2FcbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAnYSB0IC0+ICdhXG4gIHZhbCBjaG9vc2UgOiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICdhIHQgLT4gJ2FcbiAgdmFsIHNwbGl0IDogJ2EgdCAtPiAnYSAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICB2YWwgZ3JvdXBfYnkgOiAnYSB0IC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IGxpc3RcbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgbnRoIDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAnYSB0IC0+IGludCAtPiAnYSB0XG4gIHZhbCB0b190cmVlIDogJ2EgdCAtPiAnYSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICdhIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAnYSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICdhIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAnYSB0XG4gICAgLT4gJ2EgdFxuICAgIC0+ICgnYSwgJ2EpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMV9waGFudG9tX2ludmFyaWFudFxuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgYWRkIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgdW5pb24gOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gIHR5cGUgKCdhLCAnY21wKSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIG5hbWVkIC0+IG9mXzooJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgbmFtZWQgLT4gKCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gKCdiLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYiAtPiBmOignYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgc3BsaXQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG4gIHZhbCBncm91cF9ieSA6ICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0IGxpc3RcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxX3BoYW50b21faW52YXJpYW50XG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgaW52YXJpYW50cyA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGFkZCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgcmVtb3ZlIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHVuaW9uXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBpbnRlclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWwgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gIHZhbCBpc19zdWJzZXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gb2ZfOignYSwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwgYXJlX2Rpc2pvaW50XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB0eXBlICgnYSwgJ2NtcCkgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0XG4gICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiBvZl86KCdhLCAnY21wKSBuYW1lZFxuICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2EgLT4gJ2FjY3VtIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIGZpbHRlclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOignYSAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICB2YWwgc3BsaXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcblxuICB2YWwgZ3JvdXBfYnlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZXF1aXY6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHJlbW92ZV9pbmRleFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBpbnRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbigqKiBDb25zaXN0ZW5jeSBjaGVja3MgKHNhbWUgYXMgaW4gW0NvbnRhaW5lcl0pLiAqKVxubW9kdWxlIENoZWNrX2FjY2Vzc29yc1xuICAgIChUIDogVDIpXG4gICAgKFRyZWUgOiBUMilcbiAgICAoRWx0IDogVDEpXG4gICAgKE5hbWVkIDogVDIpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczAgKE0gOiBBY2Nlc3NvcnMwKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5lbHRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yIChNIDogQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGVsdFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXAsICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfbGlzdCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGxpc3QgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICgnYSwgJ2NtcCwgbGVuOmludCAtPiBmOihpbnQgLT4gJ2EgZWx0KSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8sICdhIGVsdCBsaXN0IC0+ICdhIGVsdCBsaXN0KSBvcHRpb25zXG5cbiAgKCoqIFRoZSB0eXBlcyBvZiBbbWFwXSBhbmQgW2ZpbHRlcl9tYXBdIGFyZSBzdWJ0bGUuICBUaGUgaW5wdXQgc2V0LCBbKCdhLCBfKSBzZXRdLFxuICAgICAgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBhIHNldCBvZiAqYW55KiB0eXBlLCB3aXRoIGFueVxuICAgICAgY29tcGFyYXRvciwgd2hpbGUgdGhlIG91dHB1dCBzZXQsIFsoJ2IsICdjbXApIHRdLCByZWZsZWN0cyB0aGF0IHRoZSBvdXRwdXQgc2V0IGhhc1xuICAgICAgdGhlIHBhcnRpY3VsYXIgWydjbXBdIG9mIHRoZSBjcmVhdGlvbiBmdW5jdGlvbi4gIFRoZSBjb21wYXJhdG9yIGNhbiBjb21lIGluIG9uZSBvZlxuICAgICAgdGhyZWUgd2F5cywgZGVwZW5kaW5nIG9uIHdoaWNoIHNldCBtb2R1bGUgaXMgdXNlZFxuXG4gICAgICAtIFtTZXQubWFwXSAtLSBjb21wYXJhdG9yIGNvbWVzIGFzIGFuIGFyZ3VtZW50XG4gICAgICAtIFtTZXQuUG9seS5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgcG9seW1vcnBoaWMgY29tcGFyaXNvblxuICAgICAgLSBbRm9vLlNldC5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgW0Zvby5jb21wYXJhdG9yXSAqKVxuICB2YWwgbWFwIDogKCdiLCAnY21wLCAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBlbHQpIC0+ICgnYiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAoJ2IsICdjbXAsICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiIGVsdCBvcHRpb24pIC0+ICgnYiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdhLCAnY21wLCAoJ2EgZWx0LCAnY21wKSB0cmVlIC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMCA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgdFxuICB0eXBlIHRyZWVcbiAgdHlwZSBlbHRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBzaW5nbGV0b24gOiBlbHQgLT4gdFxuICB2YWwgdW5pb25fbGlzdCA6IHQgbGlzdCAtPiB0XG4gIHZhbCBvZl9saXN0IDogZWx0IGxpc3QgLT4gdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiBlbHQgU2VxdWVuY2UudCAtPiB0XG4gIHZhbCBvZl9hcnJheSA6IGVsdCBhcnJheSAtPiB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiBlbHQgYXJyYXkgLT4gdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogZWx0IGFycmF5IC0+IHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gZWx0KSAtPiB0XG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6IGVsdCBsaXN0IC0+IGVsdCBsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiBlbHQpIC0+IHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiBlbHQgb3B0aW9uKSAtPiB0XG4gIHZhbCBvZl90cmVlIDogdHJlZSAtPiB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdhIHRcbiAgdmFsIHVuaW9uX2xpc3QgOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAnYSBTZXF1ZW5jZS50IC0+ICdhIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gJ2EgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogJ2EgYXJyYXkgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogJ2EgYXJyYXkgLT4gJ2EgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgdmFsIG1hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBvZl90cmVlIDogJ2EgdHJlZSAtPiAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgdW5pb25fbGlzdCA6ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICdhIFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gJ2EpIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgdmFsIG1hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICgnYiwgJ2NtcCkgdFxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2NtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgZW1wdHkgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgc2luZ2xldG9uIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHVuaW9uX2xpc3QgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfbGlzdCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfYXJyYXkgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EpXG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICB2YWwgbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2IsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgXykgc2V0XG4gICAgLT4gZjooJ2EgLT4gJ2IpXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICBjb21wYXJhdG9yOignYiwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCBfKSBzZXRcbiAgICAtPiBmOignYSAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3RyZWUgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnNcbiAgICAoVCA6IFQyKVxuICAgIChUcmVlIDogVDIpXG4gICAgKEVsdCA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMCAoTSA6IENyZWF0b3JzMCkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5lbHRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMxIChNIDogQ3JlYXRvcnMxKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczIgKE0gOiBDcmVhdG9yczIpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gJ2NtcFxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciAoTSA6IENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gJ2NtcFxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczBcbiAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgd2l0aCB0eXBlIHRyZWUgOj0gdHJlZVxuICAgIHdpdGggdHlwZSBlbHQgOj0gZWx0XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczFcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMxXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRyZWVcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMlxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbiAgdmFsIHNleHBfb2ZfbV9fdCA6IChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2VsdCkgLT4gKCdlbHQsICdjbXApIHQgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2VsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdlbHQpXG4gICAgLT4gKCdlbHQsICdjbXApIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgY29tcGFyZV9tX190IDogKG1vZHVsZSBDb21wYXJlX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGludFxuICB2YWwgZXF1YWxfbV9fdCA6IChtb2R1bGUgRXF1YWxfbSkgLT4gKCdlbHQsICdjbXApIHQgLT4gKCdlbHQsICdjbXApIHQgLT4gYm9vbFxuXG4gIHZhbCBoYXNoX2ZvbGRfbV9fdFxuICAgIDogIChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+IEhhc2guc3RhdGVcbiAgICAtPiAoJ2VsdCwgXykgdFxuICAgIC0+IEhhc2guc3RhdGVcblxuICB2YWwgaGFzaF9tX190IDogKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCBfKSB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICAoKiogU2V0cyBiYXNlZCBvbiB7IUNvbXBhcmF0b3IuU30uXG5cbiAgICAgIENyZWF0b3JzIHJlcXVpcmUgYSBjb21wYXJhdG9yIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCBpbiwgd2hlcmVhcyBhY2Nlc3NvcnMgdXNlIHRoZVxuICAgICAgY29tcGFyYXRvciBwcm92aWRlZCBieSB0aGUgaW5wdXQgc2V0LiAqKVxuXG4gICgqKiBUaGUgdHlwZSBvZiBhIHNldC4gIFRoZSBmaXJzdCB0eXBlIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50LCBhbmRcbiAgICAgIHRoZSBzZWNvbmQgaWRlbnRpZmllcyB0aGUgY29tcGFyYXRvciwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbiB0aGF0XG4gICAgICBpcyB1c2VkIGZvciBvcmRlcmluZyBlbGVtZW50cyBpbiB0aGlzIHNldC4gIE1hbnkgb3BlcmF0aW9ucyAoZS5nLiwgeyF1bmlvbn0pLFxuICAgICAgcmVxdWlyZSB0aGF0IHRoZXkgYmUgcGFzc2VkIHNldHMgd2l0aCB0aGUgc2FtZSBlbGVtZW50IHR5cGUgYW5kIHRoZSBzYW1lIGNvbXBhcmF0b3JcbiAgICAgIHR5cGUuICopXG4gIHR5cGUgKCdlbHQsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdlbHQsICdjbXApIHQgOj0gKCdlbHQsICdjbXApIHRcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID0gKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMl0gdXNlIFtDb21wYXJhdG9yLk1vZHVsZS50XSBpbnN0ZWFkXCJdXG5cbiAgKCoqIFRlc3RzIGludGVybmFsIGludmFyaWFudHMgb2YgdGhlIHNldCBkYXRhIHN0cnVjdHVyZS4gIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiAqKVxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGZpcnN0LWNsYXNzIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIG90aGVyIG1hcC9zZXQvZXRjXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIENyZWF0ZXMgYW4gZW1wdHkgc2V0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb21wYXJhdG9yLiAqKVxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IgdGhhdCBjb250YWlucyBvbmx5IHRoZSBwcm92aWRlZFxuICAgICAgZWxlbWVudC4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgY2FyZGluYWxpdHkgb2YgdGhlIHNldC4gW08oMSldLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFtpc19lbXB0eSB0XSBpcyBbdHJ1ZV0gaWZmIFt0XSBpcyBlbXB0eS4gIFtPKDEpXS4gKilcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBbbWVtIHQgYV0gcmV0dXJucyBbdHJ1ZV0gaWZmIFthXSBpcyBpbiBbdF0uICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGJvb2xcblxuICAoKiogW2FkZCB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIGFkZGVkIHRvIFt0XSwgb3IgcmV0dXJucyBbdF0gaWYgW21lbSB0IGFdLlxuICAgICAgW08obG9nIG4pXS4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3JlbW92ZSB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIHJlbW92ZWQgZnJvbSBbdF0gaWYgW21lbSB0IGFdLCBvciByZXR1cm5zIFt0XVxuICAgICAgb3RoZXJ3aXNlLiAgW08obG9nIG4pXS4gKilcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIHQxIHQyXSByZXR1cm5zIHRoZSB1bmlvbiBvZiB0aGUgdHdvIHNldHMuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIGMgbGlzdF0gcmV0dXJucyB0aGUgdW5pb24gb2YgYWxsIHRoZSBzZXRzIGluIFtsaXN0XS4gIFRoZVxuICAgICAgW2NvbXBhcmF0b3JdIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGZvciB0aGUgY2FzZSB3aGVyZSBbbGlzdF0gaXMgZW1wdHkuXG4gICAgICBbTyhtYXgoTGlzdC5sZW5ndGggbGlzdCwgbiBsb2cgbikpXSwgd2hlcmUgW25dIGlzIHRoZSBzdW0gb2Ygc2l6ZXMgb2YgdGhlIGlucHV0IHNldHMuICopXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaW50ZXIgdDEgdDJdIGNvbXB1dGVzIHRoZSBpbnRlcnNlY3Rpb24gb2Ygc2V0cyBbdDFdIGFuZCBbdDJdLiAgW08obGVuZ3RoIHQxICtcbiAgICAgIGxlbmd0aCB0MildLiAqKVxuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZGlmZiB0MSB0Ml0gY29tcHV0ZXMgdGhlIHNldCBkaWZmZXJlbmNlIFt0MSAtIHQyXSwgaS5lLiwgdGhlIHNldCBjb250YWluaW5nIGFsbFxuICAgICAgZWxlbWVudHMgaW4gW3QxXSB0aGF0IGFyZSBub3QgaW4gW3QyXS4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0Ml0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIGNoYW5nZXMgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLiBJdCBpc1xuICAgICAgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50IGluIHRoZSBjYXNlIHdoZXJlIFt0MV0gYW5kIFt0Ml0gc2hhcmUgYSBsYXJnZSBhbW91bnQgb2ZcbiAgICAgIHN0cnVjdHVyZS4gKilcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtjb21wYXJlX2RpcmVjdCB0MSB0Ml0gY29tcGFyZXMgdGhlIHNldHMgW3QxXSBhbmQgW3QyXS4gIEl0IHJldHVybnMgdGhlIHNhbWUgcmVzdWx0XG4gICAgICBhcyBbY29tcGFyZV0sIGJ1dCB1bmxpa2UgY29tcGFyZSwgZG9lc24ndCByZXF1aXJlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgaW4gZm9yIHRoZVxuICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBzZXQuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIHNldHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgcykuY29tcGFyZV0gb2YgdGhlIHNldCBbc10gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnYSBIYXNoLmZvbGRlciAtPiAoJ2EsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlIHR3byBzZXRzIGhhdmUgdGhlIHNhbWUgZWxlbWVudHMuICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0gKilcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtleGlzdHMgdCB+Zl0gcmV0dXJucyBbdHJ1ZV0gaWZmIHRoZXJlIGV4aXN0cyBhbiBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhXS4gIFtPKG4pXSxcbiAgICAgIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbZiBhXS4gKilcbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFtmb3JfYWxsIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiBmb3IgYWxsIFthXSBpbiBbdF0sIFtmIGFdLiAgW08obildLCBidXQgcmV0dXJucyBhc1xuICAgICAgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtub3QgKGYgYSldLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFtjb3VudCB0XSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgb2YgW3RdIGZvciB3aGljaCBbZl0gcmV0dXJucyBbdHJ1ZV0uXG4gICAgICBbTyhuKV0uICopXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICAoKiogW3N1bSB0XSByZXR1cm5zIHRoZSBzdW0gb2YgW2YgdF0gZm9yIGVhY2ggW3RdIGluIHRoZSBzZXQuXG4gICAgICBbTyhuKV0uICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooJ2EgLT4gJ3N1bSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFtmaW5kIHQgZl0gcmV0dXJucyBhbiBlbGVtZW50IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgdHJ1ZSwgd2l0aCBubyBndWFyYW50ZWUgYXNcbiAgICAgIHRvIHdoaWNoIGVsZW1lbnQgaXMgcmV0dXJuZWQuICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZSBlbGVtZW50IGlzXG4gICAgICBmb3VuZC4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtmaW5kX21hcCB0IGZdIHJldHVybnMgW2JdIGZvciBzb21lIFthXSBpbiBbdF0gZm9yIHdoaWNoIFtmIGEgPSBTb21lIGJdLiAgSWYgbm8gc3VjaFxuICAgICAgW2FdIGV4aXN0cywgdGhlbiBbZmluZF0gcmV0dXJucyBbTm9uZV0uICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZVxuICAgICAgZWxlbWVudCBpcyBmb3VuZC4gKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIExpa2UgW2ZpbmRdLCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcblxuICAoKiogW250aCB0IGldIHJldHVybnMgdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgb2YgW3RdLCBpbiBbTyhsb2cgbildIHRpbWUuICBUaGVcbiAgICAgIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFtOb25lXSBpZiBbaSA8IDBdIG9yIFtpID49IGxlbmd0aCB0XS4gKilcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtyZW1vdmVfaW5kZXggdCBpXSByZXR1cm5zIGEgdmVyc2lvbiBvZiBbdF0gd2l0aCB0aGUgW2lddGggc21hbGxlc3QgZWxlbWVudCByZW1vdmVkLFxuICAgICAgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFt0XSBpZiBbaSA8IDBdIG9yXG4gICAgICBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaXNfc3Vic2V0IHQxIH5vZl86dDJdIHJldHVybnMgdHJ1ZSBpZmYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdLiAqKVxuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbYXJlX2Rpc2pvaW50IHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgW2lzX2VtcHR5IChpbnRlciB0MSB0MildLCBidXQgaXMgbW9yZVxuICAgICAgZWZmaWNpZW50LiAqKVxuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtOYW1lZF0gYWxsb3dzIHRoZSB2YWxpZGF0aW9uIG9mIHN1YnNldCBhbmQgZXF1YWxpdHkgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHNldHMuICBBXG4gICAgICBbTmFtZWQudF0gaXMgYSByZWNvcmQgb2YgYSBzZXQgYW5kIGEgbmFtZSwgd2hlcmUgdGhlIG5hbWUgaXMgdXNlZCBpbiBlcnJvciBtZXNzYWdlcyxcbiAgICAgIGFuZCBbTmFtZWQuaXNfc3Vic2V0XSBhbmQgW05hbWVkLmVxdWFsXSB2YWxpZGF0ZSBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHNcbiAgICAgIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgZm9yLCBlLmcuLFxuICAgICAge1tcbiAgICAgICAgTmFtZWQuaXNfc3Vic2V0IHsgc2V0ID0gc2V0MTsgbmFtZSA9IFwic2V0MVwiIH0gfm9mXzp7c2V0ID0gc2V0MjsgbmFtZSA9IFwic2V0MlwiIH1cbiAgICAgIF19XG5cbiAgICAgIGxvb2tzIGxpa2VcbiAgICAgIHt2XG4gICAgICAgIChcInNldDEgaXMgbm90IGEgc3Vic2V0IG9mIHNldDJcIiAoaW52YWxpZF9lbGVtZW50cyAoLi4uZWxlbWVudHMgb2Ygc2V0MSAtIHNldDIuLi4pKSlcbiAgICAgdn1cblxuICAgICAgc28gW25hbWVdIHNob3VsZCBiZSBhIG5vdW4gcGhyYXNlIHRoYXQgZG9lc24ndCBzb3VuZCBhd2t3YXJkIGluIHRoZSBhYm92ZSBlcnJvclxuICAgICAgbWVzc2FnZS4gIEV2ZW4gdGhvdWdoIGl0IGFkZHMgdmVyYm9zaXR5LCBjaG9vc2luZyBbbmFtZV1zIHRoYXQgc3RhcnQgd2l0aCB0aGUgcGhyYXNlXG4gICAgICBcInRoZSBzZXQgb2ZcIiBvZnRlbiBtYWtlcyB0aGUgZXJyb3IgbWVzc2FnZSBzb3VuZCBtb3JlIG5hdHVyYWwuXG4gICopXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9XG4gICAgICB7IHNldCA6ICgnYSwgJ2NtcCkgdFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdIGFuZCBhXG4gICAgICAgIGh1bWFuLXJlYWRhYmxlIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgKCoqIFtlcXVhbCB0MSB0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgZXF1YWwgdG8gW3QyXSBhbmQgYSBodW1hbi1yZWFkYWJsZVxuICAgICAgICBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gICgqKiBUaGUgbGlzdCBvciBhcnJheSBnaXZlbiB0byBbb2ZfbGlzdF0gYW5kIFtvZl9hcnJheV0gbmVlZCBub3QgYmUgc29ydGVkLiAqKVxuICB2YWwgb2ZfbGlzdCA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfYXJyYXkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt0b19saXN0XSBhbmQgW3RvX2FycmF5XSBwcm9kdWNlIHNlcXVlbmNlcyBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGFjY29yZGluZyB0byB0aGVcbiAgICAgIGNvbXBhcmF0b3IuICopXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcblxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogQ3JlYXRlIHNldCBmcm9tIHNvcnRlZCBhcnJheS4gIFRoZSBpbnB1dCBtdXN0IGJlIHNvcnRlZCAoZWl0aGVyIGluIGFzY2VuZGluZyBvclxuICAgICAgZGVzY2VuZGluZyBvcmRlciBhcyBnaXZlbiBieSB0aGUgY29tcGFyYXRvcikgYW5kIGNvbnRhaW4gbm8gZHVwbGljYXRlcywgb3RoZXJ3aXNlIHRoZVxuICAgICAgcmVzdWx0IGlzIGFuIGVycm9yLiAgVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBpcyBbTyhuKV0uICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFNpbWlsYXIgdG8gW29mX3NvcnRlZF9hcnJheV0sIGJ1dCB3aXRob3V0IGNoZWNraW5nIHRoZSBpbnB1dCBhcnJheS4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgYyB+bGVuIH5mXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgY1xuICAgICAgKEFycmF5LmluaXQgbGVuIH5mKV0sIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBhIGRlY3JlYXNpbmcgb3JkZXIgaXMgbm90XG4gICAgICBzdXBwb3J0ZWQuICBUaGUgYWR2YW50YWdlIGlzIG5vdCByZXF1aXJpbmcgeW91IHRvIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZSBhcnJheS4gIFtmXVxuICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCAwLCAxLCAuLi4gW2xlbiAtIDFdLCBpbiBvcmRlci4gKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KGludCAtPiAnYSlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N0YWJsZV9kZWR1cF9saXN0XSBpcyBoZXJlIHJhdGhlciB0aGFuIGluIHRoZSBbTGlzdF0gbW9kdWxlIGJlY2F1c2UgdGhlXG4gICAgICBpbXBsZW1lbnRhdGlvbiByZWxpZXMgY3J1Y2lhbGx5IG9uIHNldHMsIGFuZCBiZWNhdXNlIGRvaW5nIHNvIGFsbG93cyBvbmUgdG8gYXZvaWQgdXNlc1xuICAgICAgb2YgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBieSBpbnN0YW50aWF0aW5nIHRoZSBmdW5jdG9yIGF0IGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uXG4gICAgICBvZiBbQ29tcGFyYXRvcl0gYW5kIHVzaW5nIHRoZSByZXN1bHRpbmcgW3N0YWJsZV9kZWR1cF9saXN0XS4gKilcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogKCdhLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICgqKiBbbWFwIGMgdCB+Zl0gcmV0dXJucyBhIG5ldyBzZXQgY3JlYXRlZCBieSBhcHBseWluZyBbZl0gdG8gZXZlcnkgZWxlbWVudCBpblxuICAgICAgW3RdLiAgVGhlIHJldHVybmVkIHNldCBpcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgW2NvbXBhcmF0b3JdLiAgW08obiBsb2cgbildLiAqKVxuICB2YWwgbWFwIDogKCdiLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgXykgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgeyFtYXB9LCBleGNlcHQgZWxlbWVudHMgZm9yIHdoaWNoIFtmXSByZXR1cm5zIFtOb25lXSB3aWxsIGJlIGRyb3BwZWQuICAqKVxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCdhIC0+ICdiIG9wdGlvbilcbiAgICAtPiAoJ2IsICdjbXApIHRcblxuICAoKiogW2ZpbHRlciB0IH5mXSByZXR1cm5zIHRoZSBzdWJzZXQgb2YgW3RdIGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICBbTyhuIGxvZ1xuICAgICAgbildLiAqKVxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG8gbGFyZ2VzdC4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB+aW5pdCB+Zl0gZm9sZHMgb3ZlciB0aGUgZWxlbWVudHMgb2YgdGhlIHNldCBmcm9tIHNtYWxsZXN0IHRvXG4gICAgICBsYXJnZXN0LCBzaG9ydCBjaXJjdWl0aW5nIHRoZSBmb2xkIGlmIFtmIGFjY3VtIHhdIGlzIGFuIFtFcnJvciBfXSAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cblxuICAoKiogTGlrZSB7IWZvbGR9LCBleGNlcHQgdGhhdCBpdCBnb2VzIGZyb20gdGhlIGxhcmdlc3QgdG8gdGhlIHNtYWxsZXN0IGVsZW1lbnQuICopXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhIC0+ICdhY2N1bSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbaXRlciB0IH5mXSBjYWxscyBbZl0gb24gZXZlcnkgZWxlbWVudCBvZiBbdF0sIGdvaW5nIGluIG9yZGVyIGZyb20gdGhlIHNtYWxsZXN0IHRvXG4gICAgICBsYXJnZXN0LiAgKilcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlIHR3byBzZXRzIHNpZGUgYnkgc2lkZS4gIENvbXBsZXhpdHkgaXMgW08obStuKV0gd2hlcmUgW21dIGFuZCBbbl0gYXJlIHRoZSBzaXplc1xuICAgICAgb2YgdGhlIHR3byBpbnB1dCBzZXRzLiAgQXMgYW4gZXhhbXBsZSwgd2l0aCB0aGUgaW5wdXRzIFswOyAxXSBhbmQgWzE7IDJdLCBbZl0gd2lsbCBiZVxuICAgICAgY2FsbGVkIHdpdGggW2BMZWZ0IDBdOyBbYEJvdGggKDEsIDEpXTsgYW5kIFtgUmlnaHQgMl0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIGlmIFthLCBiID0gcGFydGl0aW9uX3RmIHNldCB+Zl0gdGhlbiBbYV0gaXMgdGhlIGVsZW1lbnRzIG9uIHdoaWNoIFtmXSBwcm9kdWNlZCBbdHJ1ZV0sXG4gICAgICBhbmQgW2JdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZXMgW2ZhbHNlXS4gKilcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogU2FtZSBhcyB7IXRvX2xpc3R9LiAqKVxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBzZXQuICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1pbl9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFJldHVybnMgdGhlIGxhcmdlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gICopXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshbWF4X2VsdH0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogcmV0dXJucyBhbiBhcmJpdHJhcnkgZWxlbWVudCwgb3IgW05vbmVdIGlmIHRoZSBzZXQgaXMgZW1wdHkuICopXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFjaG9vc2V9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFtzcGxpdCB0IHhdIHByb2R1Y2VzIGEgdHJpcGxlIFsodDEsIG1heWJlX3gsIHQyKV0gd2hlcmUgW3QxXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzXG4gICAgICBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLCBbbWF5YmVfeF0gaXMgdGhlIG1lbWJlciAoaWYgYW55KSBvZiBbdF0gd2hpY2ggY29tcGFyZXMgZXF1YWxcbiAgICAgIHRvIFt4XSwgYW5kIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsYXJnZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcblxuICAoKiogaWYgW2VxdWl2XSBpcyBhbiBlcXVpdmFsZW5jZSBwcmVkaWNhdGUsIHRoZW4gW2dyb3VwX2J5IHNldCB+ZXF1aXZdIHByb2R1Y2VzIGEgbGlzdFxuICAgICAgb2YgZXF1aXZhbGVuY2UgY2xhc3NlcyAoaS5lLiwgYSBzZXQtdGhlb3JldGljIHF1b3RpZW50KS4gIEUuZy4sXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBjaGFycyA9IFNldC5vZl9saXN0IFsnQSc7ICdhJzsgJ2InOyAnYyddIGluXG4gICAgICAgIGxldCBlcXVpdiBjIGMnID0gQ2hhci5lcXVhbCAoQ2hhci51cHBlcmNhc2UgYykgKENoYXIudXBwZXJjYXNlIGMnKSBpblxuICAgICAgICBncm91cF9ieSBjaGFycyB+ZXF1aXZcbiAgICAgIF19XG5cbiAgICAgIHByb2R1Y2VzOlxuXG4gICAgICB7W1xuICAgICAgICBbU2V0Lm9mX2xpc3QgWydBJzsnYSddOyBTZXQuc2luZ2xldG9uICdiJzsgU2V0LnNpbmdsZXRvbiAnYyddXG4gICAgICBdfVxuXG4gICAgICBbZ3JvdXBfYnldIHJ1bnMgaW4gTyhuXjIpIHRpbWUsIHNvIGlmIHlvdSBoYXZlIGEgY29tcGFyaXNvbiBmdW5jdGlvbiwgaXQncyB1c3VhbGx5XG4gICAgICBtdWNoIGZhc3RlciB0byB1c2UgW1NldC5vZl9saXN0XS4gKilcbiAgdmFsIGdyb3VwX2J5IDogKCdhLCAnY21wKSB0IC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgbGlzdFxuXG4gICgqKiBbdG9fc2VxdWVuY2UgdF0gY29udmVydHMgdGhlIHNldCBbdF0gdG8gYSBzZXF1ZW5jZSBvZiB0aGUgZWxlbWVudHMgYmV0d2VlblxuICAgICAgW2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGFuZCBbbGVzc19vcl9lcXVhbF90b10gaW5jbHVzaXZlIGluIHRoZSBvcmRlciBpbmRpY2F0ZWQgYnlcbiAgICAgIFtvcmRlcl0uICBJZiBbZ3JlYXRlcl9vcl9lcXVhbF90byA+IGxlc3Nfb3JfZXF1YWxfdG9dIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eS4gIENvc3QgaXNcbiAgICAgIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSBmb3IgZWFjaCBlbGVtZW50IHByb2R1Y2VkLiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIHdoaWNoIGVsdF0gcmV0dXJucyB0aGUgZWxlbWVudCBpbiBbdF0gc3BlY2lmaWVkIGJ5XG4gICAgICBbY29tcGFyZV0gYW5kIFt3aGljaF0sIGlmIG9uZSBleGlzdHMuXG5cbiAgICAgIFt0XSBtdXN0IGJlIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIGFjY29yZGluZyB0byBbY29tcGFyZV0sIHdoZXJlIFtjb21wYXJlXSBhbmRcbiAgICAgIFtlbHRdIGRpdmlkZSBbdF0gaW50byB0aHJlZSAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8ICA8IGVsdCAgfCAgPSBlbHQgIHwgID4gZWx0ICB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gcmV0dXJucyBhbiBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnlcbiAgICAgIFt3aGljaF0uICBTZWUgdGhlIGRpYWdyYW0gYmVsb3cgbmV4dCB0byB0aGUgW3doaWNoXSB2YXJpYW50cy5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIGRvZXMgbm90IGNoZWNrIHRoYXQgW2NvbXBhcmVdIG9yZGVycyBbdF0sIGFuZCBiZWhhdmlvciBpc1xuICAgICAgdW5zcGVjaWZpZWQgaWYgW2NvbXBhcmVdIGRvZXNuJ3Qgb3JkZXIgW3RdLiAgQmVoYXZpb3IgaXMgYWxzbyB1bnNwZWNpZmllZCBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgICAgIF1cbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZSBzZWdtZW50cyBhc1xuICAgICAgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgbGVmdCBzZWdtZW50LFxuICAgICAgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LiAgSXQgcmV0dXJuc1xuICAgICAgW05vbmVdIGlmIHRoZSBzZWdtZW50IGlzIGVtcHR5LlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGRvZXMgbm90IGNoZWNrIHRoYXQgW3NlZ21lbnRfb2ZdIHNlZ21lbnRzIFt0XSBhcyBpbiB0aGVcbiAgICAgIGRpYWdyYW0sIGFuZCBiZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gZG9lc24ndCBzZWdtZW50IFt0XS4gIEJlaGF2aW9yXG4gICAgICBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFByb2R1Y2VzIHRoZSBlbGVtZW50cyBvZiB0aGUgdHdvIHNldHMgYmV0d2VlbiBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kXG4gICAgICBbbGVzc19vcl9lcXVhbF90b10gaW4gW29yZGVyXSwgbm90aW5nIHdoZXRoZXIgZWFjaCBlbGVtZW50IGFwcGVhcnMgaW4gdGhlIGxlZnQgc2V0LFxuICAgICAgdGhlIHJpZ2h0IHNldCwgb3IgYm90aC4gIEluIHRoZSBib3RoIGNhc2UsIGJvdGggZWxlbWVudHMgYXJlIHJldHVybmVkLCBpbiBjYXNlIHRoZVxuICAgICAgY2FsbGVyIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQgYXJlIGVxdWFsIHRvIHRoZSBzZXRzJyBjb21wYXJhdG9yLiAgUnVuc1xuICAgICAgaW4gTyhsZW5ndGggdCArIGxlbmd0aCB0JykuICopXG4gIG1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgICB8IExlZnQgb2YgJ2FcbiAgICAgIHwgUmlnaHQgb2YgJ2JcbiAgICAgIHwgQm90aCBvZiAnYSAqICdiXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IFNldC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfc2V0ID0gKFN0cmluZy50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBTZXQudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW1NldC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3MsXG4gICAgICBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLiAqKVxuICBtb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKiBBIHBvbHltb3JwaGljIFNldC4gKilcbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICdlbHQgdCA9ICgnZWx0LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgKCoqIFVzaW5nIGNvbXBhcmF0b3IgaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW1NldF0sIGV4Y2VwdCB0aGUgZnVuY3Rpb25zXG4gICAgICB0YWtlIGEgW35jb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRdIHdoZXJlIHRoZSBmdW5jdGlvbnMgYXQgdGhlIHRvcGxldmVsIG9mXG4gICAgICBbU2V0XSB0YWtlcyBhIFsoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnZWx0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgKCoqIEEgW1RyZWUudF0gY29udGFpbnMganVzdCB0aGUgdHJlZSBkYXRhIHN0cnVjdHVyZSB0aGF0IGEgc2V0IGlzIGJhc2VkIG9uLCB3aXRob3V0XG4gICAgICAgICAgaW5jbHVkaW5nIHRoZSBjb21wYXJhdG9yLiAgQWNjb3JkaW5nbHksIGFueSBvcGVyYXRpb24gb24gYSBbVHJlZS50XSBtdXN0IGFsc28gdGFrZVxuICAgICAgICAgIGFzIGFuIGFyZ3VtZW50IHRoZSBjb3JyZXNwb25kaW5nIGNvbXBhcmF0b3IuICopXG4gICAgICB0eXBlICgnYSwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2VsdClcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICAgIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgICAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgICAgIHsgdHJlZSA6ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgICAgIH1cblxuICAgICAgICB2YWwgaXNfc3Vic2V0XG4gICAgICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+IG9mXzooJ2EsICdjbXApIHRcbiAgICAgICAgICAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgICB2YWwgZXF1YWxcbiAgICAgICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgTmFtZWQudFxuICAgICAgICB3aXRoIG1vZHVsZSBOYW1lZCA6PSBOYW1lZFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfKSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBBY2Nlc3NvcnMyXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdlbHQgSGFzaC5mb2xkZXIgLT4gKCdlbHQsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICAgICAgdmFsIGVtcHR5IDogKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbU2V0XX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMCA9IEFjY2Vzc29yczBcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IEFjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IEFjY2Vzc29yczJcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMCA9IENyZWF0b3JzMFxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBDcmVhdG9yczFcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gQ3JlYXRvcnMyXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgPSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczBcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID1cbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBFbHRfcGxhaW5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlLiBTZWUgLi4vVEhJUkQtUEFSVFkudHh0ICAqKVxuKCogIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU2V0X2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuXG5tb2R1bGUgVHJlZTAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEVtcHR5XG4gICAgKCogKExlYWYgeCkgaXMgdGhlIHNhbWUgYXMgKE5vZGUgKEVtcHR5LCB4LCBFbXB0eSwgMSwgMSkpIGJ1dCB1c2VzIGxlc3Mgc3BhY2UuICopXG4gICAgfCBMZWFmIG9mICdhXG4gICAgKCogZmlyc3QgaW50IGlzIGhlaWdodCwgc2Vjb25kIGlzIHN1Yi10cmVlIHNpemUgKilcbiAgICB8IE5vZGUgb2YgJ2EgdCAqICdhICogJ2EgdCAqIGludCAqIGludFxuXG4gIHR5cGUgJ2EgdHJlZSA9ICdhIHRcblxuICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZSBjaGlsZHJlbiBkaWZmZXIgYnlcbiAgICAgYXQgbW9zdCAyLiAqKVxuICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzID1cbiAgICBsZXQgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdiA9XG4gICAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgfCBTb21lIGxvd2VyIC0+IGNvbXBhcmVfZWx0IGxvd2VyIHYgPCAwKVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgdXBwZXIgLT4gY29tcGFyZV9lbHQgdiB1cHBlciA8IDBcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgICB8IExlYWYgdiAtPiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIGgsIG4pIC0+XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICAgIGFicyAoaGwgLSBocikgPD0gMlxuICAgICAgICAmJiBoID0gbWF4IGhsIGhyICsgMVxuICAgICAgICAmJiBuID0gbGVuZ3RoIGwgKyBsZW5ndGggciArIDFcbiAgICAgICAgJiYgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgICAmJiBsb29wIGxvd2VyIChTb21lIHYpIGNvbXBhcmVfZWx0IGxcbiAgICAgICAgJiYgbG9vcCAoU29tZSB2KSB1cHBlciBjb21wYXJlX2VsdCByXG4gICAgaW5cbiAgICBmdW4gdCB+Y29tcGFyZV9lbHQgLT4gbG9vcCBOb25lIE5vbmUgY29tcGFyZV9lbHQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIF8gfCBOb2RlIF8gLT4gZmFsc2VcbiAgOztcblxuICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgbGV0IGhsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBociA9XG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaCA9IGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxIGluXG4gICAgaWYgaCA9IDFcbiAgICB0aGVuIExlYWYgdlxuICAgIGVsc2UgKFxuICAgICAgbGV0IHNsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGxldCBzciA9XG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBOb2RlIChsLCB2LCByLCBoLCBzbCArIHNyICsgMSkpXG4gIDs7XG5cbiAgKCogV2UgbXVzdCBjYWxsIFtmXSB3aXRoIGluY3JlYXNpbmcgaW5kZXhlcywgYmVjYXVzZSB0aGUgYmluX3Byb3QgcmVhZGVyIGluXG4gICAgIENvcmUuU2V0IG5lZWRzIGl0LiAqKVxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIG4gfmYgaSA9XG4gICAgICBtYXRjaCBuIHdpdGhcbiAgICAgIHwgMCAtPiBFbXB0eVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBrID0gZiBpIGluXG4gICAgICAgIExlYWYga1xuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBrbCA9IGYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyAxKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgRW1wdHlcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgbGV0IGtyID0gZiAoaSArIDIpIGluXG4gICAgICAgIGNyZWF0ZSAoTGVhZiBrbCkgayAoTGVhZiBrcilcbiAgICAgIHwgbiAtPlxuICAgICAgICBsZXQgbGVmdF9sZW5ndGggPSBuIGxzciAxIGluXG4gICAgICAgIGxldCByaWdodF9sZW5ndGggPSBuIC0gbGVmdF9sZW5ndGggLSAxIGluXG4gICAgICAgIGxldCBsZWZ0ID0gbG9vcCBsZWZ0X2xlbmd0aCB+ZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIGxlZnRfbGVuZ3RoKSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBsb29wIHJpZ2h0X2xlbmd0aCB+ZiAoaSArIGxlZnRfbGVuZ3RoICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIGxlZnQgayByaWdodFxuICAgIGluXG4gICAgbG9vcCBsZW4gfmYgMFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IGFycmF5X2xlbmd0aCA9IEFycmF5Lmxlbmd0aCBhcnJheSBpblxuICAgIGxldCBuZXh0ID1cbiAgICAgICgqIFdlIGRvbid0IGNoZWNrIGlmIHRoZSBhcnJheSBpcyBzb3J0ZWQgb3Iga2V5cyBhcmUgZHVwbGljYXRlZCwgYmVjYXVzZSB0aGF0XG4gICAgICAgICBjaGVja2luZyBpcyBzbG93ZXIgdGhhbiB0aGUgd2hvbGUgW29mX3NvcnRlZF9hcnJheV0gZnVuY3Rpb24gKilcbiAgICAgIGlmIGFycmF5X2xlbmd0aCA8IDIgfHwgY29tcGFyZV9lbHQgYXJyYXkuKDApIGFycmF5LigxKSA8IDBcbiAgICAgIHRoZW4gZnVuIGkgLT4gYXJyYXkuKGkpXG4gICAgICBlbHNlIGZ1biBpIC0+IGFycmF5LihhcnJheV9sZW5ndGggLSAxIC0gaSlcbiAgICBpblxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHRcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggYXJyYXkgd2l0aFxuICAgIHwgW3x8XSB8IFt8IF8gfF0gLT4gUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdClcbiAgICB8IF8gLT5cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgaW5jcmVhc2luZyA9XG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKDApIGFycmF5LigxKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT4gaSA8IDBcbiAgICAgICAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDIgZG9cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2VsdCBhcnJheS4oaSkgYXJyYXkuKGkgKyAxKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT5cbiAgICAgICAgICAgIGlmIFBvbHkuKCA8PiApIChpIDwgMCkgaW5jcmVhc2luZ1xuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByLnJldHVyblxuICAgICAgICAgICAgICAgIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGVsZW1lbnRzIGFyZSBub3Qgb3JkZXJlZFwiKVxuICAgICAgICBkb25lO1xuICAgICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KSlcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgbGV0IGJhbCBsIHYgciA9XG4gICAgbGV0IGhsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBociA9XG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGJlY2F1c2UgaChsKT5oKHIpKzIgYW5kIGgobGVhZik9MSAqKVxuICAgICAgfCBOb2RlIChsbCwgbHYsIGxyLCBfLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IExlYWYgbHJ2IC0+XG4gICAgICAgICAgICBhc3NlcnQgKGlzX2VtcHR5IGxsKTtcbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IEVtcHR5KSBscnYgKGNyZWF0ZSBFbXB0eSB2IHIpXG4gICAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJyLCBfLCBfKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpKSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKHIpPmgobCkrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcnIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBybHYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgcnIpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IEVtcHR5KSBybHYgKGNyZWF0ZSBFbXB0eSBydiBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybHIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycikpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgICAgbGV0IHNsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGxldCBzciA9XG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBpZiBoID0gMSB0aGVuIExlYWYgdiBlbHNlIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICBleGNlcHRpb24gU2FtZVxuXG4gIGxldCBhZGQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gcmFpc2UgU2FtZVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gY3JlYXRlIChMZWFmIHgpIHYgRW1wdHlcbiAgICAgICAgZWxzZSBjcmVhdGUgRW1wdHkgdiAoTGVhZiB4KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJhaXNlIFNhbWUgZWxzZSBpZiBjIDwgMCB0aGVuIGJhbCAoYXV4IGwpIHYgciBlbHNlIGJhbCBsIHYgKGF1eCByKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZFxuICAgICByLiAqKVxuICBsZXQgcmVjIGpvaW4gbCB2IHIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBsLCByIHdpdGhcbiAgICB8IEVtcHR5LCBfIC0+IGFkZCByIHYgfmNvbXBhcmVfZWx0XG4gICAgfCBfLCBFbXB0eSAtPiBhZGQgbCB2IH5jb21wYXJlX2VsdFxuICAgIHwgTGVhZiBsdiwgXyAtPiBhZGQgKGFkZCByIHYgfmNvbXBhcmVfZWx0KSBsdiB+Y29tcGFyZV9lbHRcbiAgICB8IF8sIExlYWYgcnYgLT4gYWRkIChhZGQgbCB2IH5jb21wYXJlX2VsdCkgcnYgfmNvbXBhcmVfZWx0XG4gICAgfCBOb2RlIChsbCwgbHYsIGxyLCBsaCwgXyksIE5vZGUgKHJsLCBydiwgcnIsIHJoLCBfKSAtPlxuICAgICAgaWYgbGggPiByaCArIDJcbiAgICAgIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgciB+Y29tcGFyZV9lbHQpXG4gICAgICBlbHNlIGlmIHJoID4gbGggKyAyXG4gICAgICB0aGVuIGJhbCAoam9pbiBsIHYgcmwgfmNvbXBhcmVfZWx0KSBydiByclxuICAgICAgZWxzZSBjcmVhdGUgbCB2IHJcbiAgOztcblxuICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgYWNjID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiB2YWx1ZSAtPiBmIGFjYyB2YWx1ZVxuICAgICAgfCBOb2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIChtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiBsZWZ0IGFjYyB3aXRoXG4gICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICB8IENvbnRpbnVlIGFjYyAtPlxuICAgICAgICAgICAobWF0Y2ggZiBhY2MgdmFsdWUgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIF9hIGFzIHggLT4geFxuICAgICAgICAgICAgfCBDb250aW51ZSBhIC0+IGZvbGRfdW50aWxfaGVscGVyIH5mIHJpZ2h0IGEpKVxuICAgIGluXG4gICAgbWF0Y2ggZm9sZF91bnRpbF9oZWxwZXIgfmYgdCBpbml0IHdpdGhcbiAgICB8IENvbnRpbnVlIHggLT4gZmluaXNoIHhcbiAgICB8IFN0b3AgeCAtPiB4XG4gIDs7XG5cbiAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiB8IE5vZGUgKF8sIHYsIEVtcHR5LCBfLCBfKSAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIF8sIHIsIF8sIF8pIC0+IG1heF9lbHQgclxuICA7O1xuXG4gIGxldCBtYXhfZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtYXhfZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgfCBMZWFmIF8gLT4gRW1wdHlcbiAgICB8IE5vZGUgKEVtcHR5LCBfLCByLCBfLCBfKSAtPiByXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcbiAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPiBiYWwgdDEgKG1pbl9lbHRfZXhuIHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcbiAgbGV0IGNvbmNhdCB0MSB0MiB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gam9pbiB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MikgfmNvbXBhcmVfZWx0XG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgc3BsaXQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEVtcHR5LCBTb21lIHYsIEVtcHR5XG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgTm9uZSwgTGVhZiB2XG4gICAgICAgIGVsc2UgTGVhZiB2LCBOb25lLCBFbXB0eVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIGwsIFNvbWUgdiwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsbCwgbWF5YmVfZWx0LCBybCA9IHNwbGl0IGwgaW5cbiAgICAgICAgICBsbCwgbWF5YmVfZWx0LCBqb2luIHJsIHYgciB+Y29tcGFyZV9lbHQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsciwgbWF5YmVfZWx0LCByciA9IHNwbGl0IHIgaW5cbiAgICAgICAgICBqb2luIGwgdiBsciB+Y29tcGFyZV9lbHQsIG1heWJlX2VsdCwgcnIpXG4gICAgaW5cbiAgICBzcGxpdCB0XG4gIDs7XG5cbiAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgcmVjIG1lbSB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICBjID0gMFxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICBjID0gMCB8fCBtZW0gKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfZWx0XG4gIDs7XG5cbiAgbGV0IHNpbmdsZXRvbiB4ID0gTGVhZiB4XG5cbiAgbGV0IHJlbW92ZSB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGF1eCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBTYW1lXG4gICAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPSAwIHRoZW4gRW1wdHkgZWxzZSByYWlzZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByIGVsc2UgaWYgYyA8IDAgdGhlbiBiYWwgKGF1eCBsKSB2IHIgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6XyA9XG4gICAgbGV0IHJlYyBhdXggdCBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBTYW1lXG4gICAgICB8IExlYWYgXyAtPiBpZiBpID0gMCB0aGVuIEVtcHR5IGVsc2UgcmFpc2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGJhbCAoYXV4IGwgaSkgdiByXG4gICAgICAgIGVsc2UgYmFsIGwgdiAoYXV4IHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgICBpblxuICAgIHRyeSBhdXggdCBpIHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gIGxldCB1bmlvbiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgICAgIHwgTGVhZiB2MSwgXyAtPiB1bmlvbiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHMyXG4gICAgICAgIHwgXywgTGVhZiB2MiAtPiB1bmlvbiBzMSAoTm9kZSAoRW1wdHksIHYyLCBFbXB0eSwgMSwgMSkpXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgaDEsIF8pLCBOb2RlIChsMiwgdjIsIHIyLCBoMiwgXykgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMlxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMVxuICAgICAgICAgICAgdGhlbiBhZGQgczEgdjIgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGwyLCBfLCByMiA9IHNwbGl0IHMyIHYxIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKSB+Y29tcGFyZV9lbHQpXG4gICAgICAgICAgZWxzZSBpZiBoMSA9IDFcbiAgICAgICAgICB0aGVuIGFkZCBzMiB2MSB+Y29tcGFyZV9lbHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsMSwgXywgcjEgPSBzcGxpdCBzMSB2MiB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpIH5jb21wYXJlX2VsdCkpXG4gICAgaW5cbiAgICB1bmlvbiBzMSBzMlxuICA7O1xuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIHhzID1cbiAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIExpc3QuZm9sZCB4cyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjIHggLT4gdW5pb24gYWMgKHRvX3RyZWUgeCkgfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlciBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IChMZWFmIGVsdCBhcyBzaW5nbGV0b24pLCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIChMZWFmIGVsdCBhcyBzaW5nbGV0b24pIC0+XG4gICAgICAgICAgaWYgbWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0IHRoZW4gc2luZ2xldG9uIGVsc2UgRW1wdHlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKSB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgfCBsMiwgU29tZSB2MSwgcjIgLT4gam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMikgfmNvbXBhcmVfZWx0KSlcbiAgICBpblxuICAgIGludGVyIHMxIHMyXG4gIDs7XG5cbiAgbGV0IGRpZmYgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBFbXB0eVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gLT4gRW1wdHlcbiAgICAgICAgfCB0MSwgRW1wdHkgLT4gdDFcbiAgICAgICAgfCBMZWFmIHYxLCB0MiAtPiBkaWZmIChOb2RlIChFbXB0eSwgdjEsIEVtcHR5LCAxLCAxKSkgdDJcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpIH5jb21wYXJlX2VsdFxuICAgICAgICAgICB8IGwyLCBTb21lIF8sIHIyIC0+IGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpIH5jb21wYXJlX2VsdCkpXG4gICAgaW5cbiAgICBkaWZmIHMxIHMyXG4gIDs7XG5cbiAgbW9kdWxlIEVudW0gPSBzdHJ1Y3RcbiAgICB0eXBlIGluY3JlYXNpbmdcbiAgICB0eXBlIGRlY3JlYXNpbmdcblxuICAgIHR5cGUgKCdhLCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2EgKiAnYSB0cmVlICogKCdhLCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgcyAoZSA6IChfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29ucyBsIChNb3JlICh2LCByLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb25zX3JpZ2h0IHMgKGUgOiAoXywgZGVjcmVhc2luZykgdCkgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmIHYgLT4gTW9yZSAodiwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXQgcyA6IChfLCBpbmNyZWFzaW5nKSB0ID0gY29ucyBzIEVuZFxuICAgIGxldCBvZl9zZXRfcmlnaHQgcyA6IChfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCBzIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChfLCB2LCByLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPCAwIC0+IGxvb3AgciBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCBsIChNb3JlICh2LCByLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgdiAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgRW1wdHksIDEsIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2VsdCBlMSBlMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgZTEgZTIgPVxuICAgICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCByMSwgZTEpLCBNb3JlICh2MiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgICAgICAgICB0aGVuIGxvb3AgZTEgZTJcbiAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKVxuICAgICAgaW5cbiAgICAgIGxvb3AgZTEgZTJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpdGVyIH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+ICgpXG4gICAgICB8IE1vcmUgKGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgIGYgYTtcbiAgICAgICAgaXRlciAoY29ucyB0cmVlIGVudW0pIH5mXG4gICAgOztcblxuICAgIGxldCBpdGVyMiBjb21wYXJlX2VsdCB0MSB0MiB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+ICgpXG4gICAgICAgIHwgRW5kLCBfIC0+IGl0ZXIgdDIgfmY6KGZ1biBhIC0+IGYgKGBSaWdodCBhKSlcbiAgICAgICAgfCBfLCBFbmQgLT4gaXRlciB0MSB+ZjooZnVuIGEgLT4gZiAoYExlZnQgYSkpXG4gICAgICAgIHwgTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBCb3RoIChhMSwgYTIpKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgZiAoYExlZnQgYTEpO1xuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBmIChgUmlnaHQgYTIpO1xuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0ID1cbiAgICAgIGxldCBzdGVwIHN0YXRlIDogKChfLCBfKSBFaXRoZXIudCwgXykgU2VxdWVuY2UuU3RlcC50ID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IERvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGVsdCwgdHJlZSwgZW51bSkgLT4gWWllbGQgKFNlY29uZCBlbHQsIChFbmQsIGNvbnMgdHJlZSBlbnVtKSlcbiAgICAgICAgfCBNb3JlIChlbHQsIHRyZWUsIGVudW0pLCBFbmQgLT4gWWllbGQgKEZpcnN0IGVsdCwgKGNvbnMgdHJlZSBlbnVtLCBFbmQpKVxuICAgICAgICB8IChNb3JlIChhMSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9XG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgICAgdGhlbiBlbnVtMSwgZW51bTJcbiAgICAgICAgICAgICAgZWxzZSBjb25zIHRyZWUxIGVudW0xLCBjb25zIHRyZWUyIGVudW0yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU2tpcCBuZXh0X3N0YXRlKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiBZaWVsZCAoRmlyc3QgYTEsIChjb25zIHRyZWUxIGVudW0xLCByaWdodCkpXG4gICAgICAgICAgZWxzZSBZaWVsZCAoU2Vjb25kIGEyLCAobGVmdCwgY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6KG9mX3NldCB0MSwgb2Zfc2V0IHQyKSB+ZjpzdGVwXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoaywgRW51bS5jb25zIHQgZSlcbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fZWx0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3NldCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKGssIEVudW0uY29uc19yaWdodCB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXRfcmlnaHQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGluY2x1c2l2ZV9ib3VuZCBzaWRlIHQgYm91bmQgPVxuICAgICAgbGV0IGNvbXBhcmVfZWx0ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBsLCBtYXliZSwgciA9IHNwbGl0IHQgYm91bmQgfmNvbXBhcmVfZWx0IGluXG4gICAgICBsZXQgdCA9IHNpZGUgKGwsIHIpIGluXG4gICAgICBtYXRjaCBtYXliZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIGVsdCAtPiBhZGQgdCBlbHQgfmNvbXBhcmVfZWx0XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZyAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBsZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0OmdyZWF0ZXJfb3JfZXF1YWxfdG8gdFxuICAgIHwgYERlY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgZ3JlYXRlcl9vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgc25kKSBpblxuICAgICAgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpsZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuXG4gIGxldCByZWMgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIHZcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9sYXN0X3NhdGlzZnlpbmcgbCB+ZlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgd2l0aFxuICAgICAgIHwgU29tZSB4IGFzIGVsdCB3aGVuIGNvbXBhcmUgeCB2ID0gMCAtPiBlbHRcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgd2l0aFxuICAgICAgIHwgU29tZSB4IGFzIGVsdCB3aGVuIGNvbXBhcmUgeCB2ID0gMCAtPiBlbHRcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID4gMClcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IHggPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB4ID0gbm90IChpc19sZWZ0IHgpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfcmlnaHRcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICAgICAgdCdcbiAgICA9XG4gICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdClcbiAgICAgICh0b19zZXF1ZW5jZSBjb21wYXJhdG9yIH5vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0JylcbiAgICAgIH5jb21wYXJlOlxuICAgICAgICAobWF0Y2ggb3JkZXIgd2l0aFxuICAgICAgICAgfCBgSW5jcmVhc2luZyAtPiBjb21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIHwgYERlY3JlYXNpbmcgLT4gRm4uZmxpcCBjb21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPVxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMilcbiAgOztcblxuICBsZXQgaXRlcjIgczEgczIgfmNvbXBhcmVfZWx0ID0gRW51bS5pdGVyMiBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMilcbiAgbGV0IGVxdWFsIHMxIHMyIH5jb21wYXJlX2VsdCA9IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPSAwXG5cbiAgbGV0IGlzX3N1YnNldCBzMSB+b2ZfOnMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBpc19zdWJzZXQgczEgfm9mXzpzMiA9XG4gICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgfCBFbXB0eSwgXyAtPiB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IExlYWYgdjEsIHQyIC0+IG1lbSB0MiB2MSB+Y29tcGFyZV9lbHRcbiAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIExlYWYgdjIgLT5cbiAgICAgICAgKG1hdGNoIGwxLCByMSB3aXRoXG4gICAgICAgICB8IEVtcHR5LCBFbXB0eSAtPlxuICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkbid0IG9jY3VyIGluIHByYWN0aWNlIGJlY2F1c2Ugd2Ugc2hvdWxkIGhhdmUgY29uc3RydWN0ZWRcbiAgICAgICAgICAgICAgYSBMZWFmIHJhdGhlciB0aGFuIGEgTm9kZSB3aXRoIHR3byBFbXB0eSBzdWJ0cmVlcyAqKVxuICAgICAgICAgICBjb21wYXJlX2VsdCB2MSB2MiA9IDBcbiAgICAgICAgIHwgXywgXyAtPiBmYWxzZSlcbiAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIChOb2RlIChsMiwgdjIsIHIyLCBfLCBfKSBhcyB0MikgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB2MSB2MiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgcGh5c19lcXVhbCBzMSBzMiB8fCAoaXNfc3Vic2V0IGwxIH5vZl86bDIgJiYgaXNfc3Vic2V0IHIxIH5vZl86cjIpXG4gICAgICAgICAgKCogTm90ZSB0aGF0IGhlaWdodCBhbmQgc2l6ZSBkb24ndCBtYXR0ZXIgaGVyZS4gKilcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGlzX3N1YnNldCAoTm9kZSAobDEsIHYxLCBFbXB0eSwgMCwgMCkpIH5vZl86bDIgJiYgaXNfc3Vic2V0IHIxIH5vZl86dDJcbiAgICAgICAgZWxzZSBpc19zdWJzZXQgKE5vZGUgKEVtcHR5LCB2MSwgcjEsIDAsIDApKSB+b2ZfOnIyICYmIGlzX3N1YnNldCBsMSB+b2ZfOnQyXG4gICAgaW5cbiAgICBpc19zdWJzZXQgczEgfm9mXzpzMlxuICA7O1xuXG4gIGxldCByZWMgYXJlX2Rpc2pvaW50IHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICB8IEVtcHR5LCBfIHwgXywgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBlbHQsIG90aGVyX3NldCB8IG90aGVyX3NldCwgTGVhZiBlbHQgLT4gbm90IChtZW0gb3RoZXJfc2V0IGVsdCB+Y29tcGFyZV9lbHQpXG4gICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICB8IGwyLCBOb25lLCByMiAtPlxuICAgICAgICAgIGFyZV9kaXNqb2ludCBsMSBsMiB+Y29tcGFyZV9lbHQgJiYgYXJlX2Rpc2pvaW50IHIxIHIyIH5jb21wYXJlX2VsdFxuICAgICAgICB8IF8sIFNvbWUgXywgXyAtPiBmYWxzZSlcbiAgOztcblxuICBsZXQgaXRlciB0IH5mID1cbiAgICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBMZWFmIHYgLT4gZiB2XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGl0ZXIgbDtcbiAgICAgICAgZiB2O1xuICAgICAgICBpdGVyIHJcbiAgICBpblxuICAgIGl0ZXIgdFxuICA7O1xuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiA9IEVudW0uc3ltbWV0cmljX2RpZmZcblxuICBsZXQgcmVjIGZvbGQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIGFjY3UgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkgdilcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9lbGVtIHN0YXRlIHQgPVxuICAgIGZvbGQgdCB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKSB+ZjpoYXNoX2ZvbGRfZWxlbVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuXG4gIGxldCByZWMgZm9sZF9yaWdodCBzIH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IGYgdiBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX3JpZ2h0IH5mIGwgfmluaXQ6KGYgdiAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCByZWMgZm9yX2FsbCB0IH5mOnAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2ICYmIGZvcl9hbGwgfmY6cCBsICYmIGZvcl9hbGwgfmY6cCByXG4gIDs7XG5cbiAgbGV0IHJlYyBleGlzdHMgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT4gcCB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBwIHYgfHwgZXhpc3RzIH5mOnAgbCB8fCBleGlzdHMgfmY6cCByXG4gIDs7XG5cbiAgbGV0IGZpbHRlciBzIH5mOnAgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGZpbHQgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTGVhZiB2IC0+IGlmIHAgdiB0aGVuIGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0IGVsc2UgYWNjdVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBmaWx0IChmaWx0IChpZiBwIHYgdGhlbiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdCBlbHNlIGFjY3UpIGwpIHJcbiAgICBpblxuICAgIGZpbHQgRW1wdHkgc1xuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgfCBTb21lIHYgLT4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGZpbHRcbiAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgIChtYXRjaCBwIHYgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgIHJcbiAgICBpblxuICAgIGZpbHQgRW1wdHkgc1xuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBwYXJ0ICgodCwgZikgYXMgYWNjdSkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPiBpZiBwIHYgdGhlbiBhZGQgdCB2IH5jb21wYXJlX2VsdCwgZiBlbHNlIHQsIGFkZCBmIHYgfmNvbXBhcmVfZWx0XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIHBhcnQgKHBhcnQgKGlmIHAgdiB0aGVuIGFkZCB0IHYgfmNvbXBhcmVfZWx0LCBmIGVsc2UgdCwgYWRkIGYgdiB+Y29tcGFyZV9lbHQpIGwpIHJcbiAgICBpblxuICAgIHBhcnQgKEVtcHR5LCBFbXB0eSkgc1xuICA7O1xuXG4gIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IHYgOjogYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcbiAgOztcblxuICBsZXQgZWxlbWVudHMgcyA9IGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgbGV0IGNob29zZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBjaG9vc2VfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTZXQuY2hvb3NlX2V4bjogZW1wdHkgc2V0XCIpIGluXG4gICAgbGV0IGNob29zZV9leG4gdCA9XG4gICAgICBtYXRjaCBjaG9vc2UgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgY2hvb3NlX2V4blxuICA7O1xuXG4gIGxldCBvZl9saXN0IGxzdCB+Y29tcGFyZV9lbHQgPVxuICAgIExpc3QuZm9sZCBsc3QgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlIH5jb21wYXJlX2VsdCA9XG4gICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgdG9fbGlzdCBzID0gZWxlbWVudHMgc1xuXG4gIGxldCBvZl9hcnJheSBhIH5jb21wYXJlX2VsdCA9XG4gICAgQXJyYXkuZm9sZCBhIH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gICgqIGZhc3RlciBidXQgZXF1aXZhbGVudCB0byBbQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KV0gKilcbiAgbGV0IHRvX2FycmF5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IFt8fF1cbiAgICB8IExlYWYgdiAtPiBbfCB2IHxdXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgbGV0IHJlcyA9IEFycmF5LmNyZWF0ZSB+bGVuOnMgdiBpblxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgKCogSW52YXJpYW50OiBvbiBlbnRyeSBhbmQgb24gZXhpdCB0byBbbG9vcF0sICFwb3NfcmVmIGlzIHRoZSBuZXh0XG4gICAgICAgICAgIGF2YWlsYWJsZSBjZWxsIGluIHRoZSBhcnJheS4gKilcbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IExlYWYgdiAtPlxuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgICBsb29wIGw7XG4gICAgICAgICAgcmVzLighcG9zX3JlZikgPC0gdjtcbiAgICAgICAgICBpbmNyIHBvc19yZWY7XG4gICAgICAgICAgbG9vcCByXG4gICAgICBpblxuICAgICAgbG9vcCBsO1xuICAgICAgKCogcmVzLighcG9zX3JlZikgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAoYnkgQXJyYXkuY3JlYXRlIH5sZW46YWJvdmUpLiAqKVxuICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgbG9vcCByO1xuICAgICAgcmVzXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mIH5jb21wYXJlX2VsdCA9IGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCAoZiB4KSB+Y29tcGFyZV9lbHQpXG5cbiAgbGV0IGdyb3VwX2J5IHNldCB+ZXF1aXYgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGxvb3Agc2V0IGVxdWl2X2NsYXNzZXMgPVxuICAgICAgaWYgaXNfZW1wdHkgc2V0XG4gICAgICB0aGVuIGVxdWl2X2NsYXNzZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeCA9IGNob29zZV9leG4gc2V0IGluXG4gICAgICAgIGxldCBlcXVpdl94LCBub3RfZXF1aXZfeCA9XG4gICAgICAgICAgcGFydGl0aW9uX3RmIHNldCB+ZjooZnVuIGVsdCAtPiBwaHlzX2VxdWFsIHggZWx0IHx8IGVxdWl2IHggZWx0KSB+Y29tcGFyZV9lbHRcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCBub3RfZXF1aXZfeCAoZXF1aXZfeCA6OiBlcXVpdl9jbGFzc2VzKSlcbiAgICBpblxuICAgIGxvb3Agc2V0IFtdXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gU29tZSB2XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggZmluZCBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbmQgciB+ZlxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX21hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAobWF0Y2ggZiB2IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBmaW5kX21hcCBsIH5mIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgciB+ZlxuICAgICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcikpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2V0LmZpbmRfZXhuIGZhaWxlZCB0byBmaW5kIGEgbWF0Y2hpbmcgZWxlbWVudFwiXG4gICAgfCBTb21lIGUgLT4gZVxuICA7O1xuXG4gIGxldCByZWMgbnRoIHQgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgaSA9IDAgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgaWYgaSA+PSBzXG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBudGggbCBpIGVsc2UgaWYgYyA9IDAgdGhlbiBTb21lIHYgZWxzZSBudGggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgbG9vcCB4cyBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuID1cbiAgICAgIG1hdGNoIHhzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgbGVmdG92ZXJzXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGlmIG1lbSBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0XG4gICAgICAgIHRoZW4gbG9vcCB0bCBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuXG4gICAgICAgIGVsc2UgbG9vcCB0bCAoaGQgOjogbGVmdG92ZXJzKSAoYWRkIGFscmVhZHlfc2VlbiBoZCB+Y29tcGFyZV9lbHQpXG4gICAgaW5cbiAgICBsb29wIHhzIFtdIGVtcHR5XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBsc3QgLT5cbiAgICAgIGxldCBlbHRfbHN0ID0gTGlzdC5tYXAgbHN0IH5mOmFfb2Zfc2V4cCBpblxuICAgICAgbGV0IHNldCA9IG9mX2xpc3QgZWx0X2xzdCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGxlbmd0aCBzZXQgPSBMaXN0Lmxlbmd0aCBsc3RcbiAgICAgIHRoZW4gc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNldCA9IHJlZiBlbXB0eSBpblxuICAgICAgICBMaXN0Lml0ZXIyX2V4biBsc3QgZWx0X2xzdCB+ZjooZnVuIGVsX3NleHAgZWwgLT5cbiAgICAgICAgICBpZiBtZW0gIXNldCBlbCB+Y29tcGFyZV9lbHRcbiAgICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJTZXQudF9vZl9zZXhwOiBkdXBsaWNhdGUgZWxlbWVudCBpbiBzZXRcIiBlbF9zZXhwXG4gICAgICAgICAgZWxzZSBzZXQgOj0gYWRkICFzZXQgZWwgfmNvbXBhcmVfZWx0KTtcbiAgICAgICAgYXNzZXJ0IGZhbHNlKVxuICAgIHwgc2V4cCAtPiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biBlbCBhY2MgLT4gc2V4cF9vZl9hIGVsIDo6IGFjYykpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgIHsgdHJlZSA6ICdhIHRcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgbGV0IGlzX3N1YnNldCAoc3Vic2V0IDogXyB0KSB+b2ZfOihzdXBlcnNldCA6IF8gdCkgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdCA9XG4gICAgICBsZXQgaW52YWxpZF9lbGVtZW50cyA9IGRpZmYgc3Vic2V0LnRyZWUgc3VwZXJzZXQudHJlZSB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGlzX2VtcHR5IGludmFsaWRfZWxlbWVudHNcbiAgICAgIHRoZW4gT2sgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaW52YWxpZF9lbGVtZW50c19zZXhwID0gc2V4cF9vZl90IHNleHBfb2ZfZWx0IGludmFsaWRfZWxlbWVudHMgaW5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICAoc3Vic2V0Lm5hbWUgXiBcIiBpcyBub3QgYSBzdWJzZXQgb2YgXCIgXiBzdXBlcnNldC5uYW1lKVxuICAgICAgICAgICAgIFsgXCJpbnZhbGlkX2VsZW1lbnRzXCIsIGludmFsaWRfZWxlbWVudHNfc2V4cCBdKSlcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIHMxIHMyIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHQgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgICBbIGlzX3N1YnNldCBzMSB+b2ZfOnMyIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHRcbiAgICAgICAgOyBpc19zdWJzZXQgczIgfm9mXzpzMSB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIF1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHQgPVxuICB7ICgqIFtjb21wYXJhdG9yXSBpcyB0aGUgZmlyc3QgZmllbGQgc28gdGhhdCBwb2x5bW9ycGhpYyBlcXVhbGl0eSBmYWlscyBvbiBhIG1hcCBkdWVcbiAgICAgICB0byB0aGUgZnVuY3Rpb25hbCB2YWx1ZSBpbiB0aGUgY29tcGFyYXRvci5cbiAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgcG9seW1vcnBoaWMgW2NvbXBhcmVdOiB0aGF0IHN0aWxsIHByb2R1Y2VzXG4gICAgICAgbm9uc2Vuc2UuICopXG4gICAgY29tcGFyYXRvciA6ICgnYSwgJ2NvbXBhcmF0b3IpIENvbXBhcmF0b3IudFxuICA7IHRyZWUgOiAnYSBUcmVlMC50XG4gIH1cblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0cmVlID0gJ2EgVHJlZTAudFxuXG5sZXQgbGlrZSB7IHRyZWUgPSBfOyBjb21wYXJhdG9yIH0gdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvciB9XG5sZXQgY29tcGFyZV9lbHQgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG4gIGxldCBpbnZhcmlhbnRzIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0LnRyZWVcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0LnRyZWVcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdC50cmVlXG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHQudHJlZVxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0LnRyZWVcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0LnRyZWVcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0LnRyZWUgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEudHJlZSBiLnRyZWUgfmYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdC50cmVlIH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQudHJlZSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQudHJlZSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUwLnN1bSBtIHQudHJlZSB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZTAuZmluZCB0LnRyZWUgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0LnRyZWUgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlMC5maW5kX21hcCB0LnRyZWUgfmZcbiAgbGV0IG1lbSB0IGEgPSBUcmVlMC5tZW0gdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuICBsZXQgZmlsdGVyIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlciB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IGFkZCB0IGEgPSBsaWtlIHQgKFRyZWUwLmFkZCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgcmVtb3ZlIHQgYSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCB1bmlvbiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLnVuaW9uIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcbiAgbGV0IGludGVyIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuaW50ZXIgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgZGlmZiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLmRpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZTAuY29tcGFyZSAoY29tcGFyZV9lbHQgdDEpIHQxLnRyZWUgdDIudHJlZVxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgbGV0IGlzX3N1YnNldCB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdC50cmVlIH5vZl86b2ZfLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuXG4gIGxldCBhcmVfZGlzam9pbnQgdDEgdDIgPVxuICAgIFRyZWUwLmFyZV9kaXNqb2ludCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgeyBzZXQgOiAoJ2EsICdjbXApIHRcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgbGV0IHRvX25hbWVkX3RyZWUgeyBzZXQ7IG5hbWUgfSA9IHsgVHJlZTAuTmFtZWQudHJlZSA9IHNldC50cmVlOyBuYW1lIH1cblxuICAgIGxldCBpc19zdWJzZXQgKHN1YnNldCA6IChfLCBfKSB0KSB+b2ZfOihzdXBlcnNldCA6IChfLCBfKSB0KSA9XG4gICAgICBUcmVlMC5OYW1lZC5pc19zdWJzZXRcbiAgICAgICAgKHRvX25hbWVkX3RyZWUgc3Vic2V0KVxuICAgICAgICB+b2ZfOih0b19uYW1lZF90cmVlIHN1cGVyc2V0KVxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHN1YnNldC5zZXQpXG4gICAgICAgIH5zZXhwX29mX2VsdDpzdWJzZXQuc2V0LmNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBlcXVhbCB0MSB0MiA9XG4gICAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0IFsgaXNfc3Vic2V0IHQxIH5vZl86dDI7IGlzX3N1YnNldCB0MiB+b2ZfOnQxIF1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIGxldCB0cmVlX3QsIHRyZWVfZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlX3QsIGxpa2UgdCB0cmVlX2ZcbiAgOztcblxuICBsZXQgc3BsaXQgdCBhID1cbiAgICBsZXQgdHJlZTEsIGIsIHRyZWUyID0gVHJlZTAuc3BsaXQgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgYiwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IGdyb3VwX2J5IHQgfmVxdWl2ID1cbiAgICBMaXN0Lm1hcCAoVHJlZTAuZ3JvdXBfYnkgdC50cmVlIH5lcXVpdiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKSB+ZjoobGlrZSB0KVxuICA7O1xuXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQudHJlZSBpXG4gIGxldCByZW1vdmVfaW5kZXggdCBpID0gbGlrZSB0IChUcmVlMC5yZW1vdmVfaW5kZXggdC50cmVlIGkgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfYSB0LnRyZWVcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIHQuY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnID1cbiAgICBUcmVlMC5tZXJnZV90b19zZXF1ZW5jZVxuICAgICAgdC5jb21wYXJhdG9yXG4gICAgICA/b3JkZXJcbiAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gICAgICB0Jy50cmVlXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBzdGF0ZSB0LnRyZWVcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG5sZXQgY29tcGFyZSBfIF8gdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHQgPSAoJ2EsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGNlIGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBUcmVlMC50X29mX3NleHBfZGlyZWN0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcikgYV9vZl9zZXhwIHNleHBcbiAgOztcblxuICBsZXQgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFRyZWUwLmVtcHR5XG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvcjpfID0gZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gZSA9IFRyZWUwLnNpbmdsZXRvbiBlXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0XG4gIGxldCBpbnZhcmlhbnRzIH5jb21wYXJhdG9yIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHRcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0XG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0XG4gIGxldCBjaG9vc2UgdCA9IFRyZWUwLmNob29zZSB0XG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHRcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUwLnRvX2xpc3QgdFxuICBsZXQgdG9fYXJyYXkgdCA9IFRyZWUwLnRvX2FycmF5IHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdCB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUwLnN1bSBtIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdCB+ZlxuICBsZXQgZmluZF9leG4gdCB+ZiA9IFRyZWUwLmZpbmRfZXhuIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlMC5maW5kX21hcCB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfdW50aWwgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5pbml0IH5mXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGZpbHRlciB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAuZmlsdGVyIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHBhcnRpdGlvbl90ZiB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAucGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgYSBiIH5mID0gVHJlZTAuaXRlcjIgYSBiIH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG1lbSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5tZW0gdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGFkZCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5hZGQgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHJlbW92ZSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5yZW1vdmUgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAudW5pb24gdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaW50ZXIgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5pbnRlciB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBkaWZmIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuY29tcGFyZSAoY2UgY29tcGFyYXRvcikgdDEgdDJcbiAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuZXF1YWwgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQgfm9mXyA9IFRyZWUwLmlzX3N1YnNldCB0IH5vZl8gfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBhcmVfZGlzam9pbnQgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgIFRyZWUwLmFyZV9kaXNqb2ludCB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID0gVHJlZTAub2Zfc2VxdWVuY2UgcyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBvZl9hcnJheSB+Y29tcGFyYXRvciBhID0gVHJlZTAub2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYSA9XG4gICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6XyB+bGVuIH5mID1cbiAgICBUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhID0gVHJlZTAub2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsID0gVHJlZTAudW5pb25fbGlzdCBsIH50b190cmVlOkZuLmlkIH5jb21wYXJhdG9yXG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzID1cbiAgICBUcmVlMC5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IGdyb3VwX2J5IH5jb21wYXJhdG9yIHQgfmVxdWl2ID0gVHJlZTAuZ3JvdXBfYnkgdCB+ZXF1aXYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXQgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG50aCB0IGkgPSBUcmVlMC5udGggdCBpXG4gIGxldCByZW1vdmVfaW5kZXggfmNvbXBhcmF0b3IgdCBpID0gVHJlZTAucmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdFxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvcjpfIHQgPSB0XG5cbiAgbGV0IHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnID1cbiAgICBUcmVlMC5tZXJnZV90b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVHJlZTAuTmFtZWRcblxuICAgIGxldCBpc19zdWJzZXQgfmNvbXBhcmF0b3IgdDEgfm9mXzp0MiA9XG4gICAgICBUcmVlMC5OYW1lZC5pc19zdWJzZXRcbiAgICAgICAgdDFcbiAgICAgICAgfm9mXzp0MlxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gICAgICAgIH5zZXhwX29mX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgICBUcmVlMC5OYW1lZC5lcXVhbFxuICAgICAgICB0MVxuICAgICAgICB0MlxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gICAgICAgIH5zZXhwX29mX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZVxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC50X29mX3NleHBfZGlyZWN0IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLmNvbXBhcmUgYV9vZl9zZXhwIHNleHApXG4gIDs7XG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuZW1wdHkgfVxuXG4gIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICAgIGxldCBlbXB0eSA9IHsgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuZW1wdHkgfVxuICBlbmRcblxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5zaW5nbGV0b24gZSB9XG5cbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZTAudW5pb25fbGlzdCB+Y29tcGFyYXRvciB+dG9fdHJlZSBsKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBsZXQgdHJlZSA9XG4gICAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgeyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZilcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5Nb25hZF9pbmZpeC4oXG4gICAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICA+PnwgZnVuIHRyZWUgLT4geyBjb21wYXJhdG9yOyB0cmVlIH0pXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgfmNvbXBhcmF0b3IgbCA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2ZfbGlzdCBsIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHMgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG1hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yXG4gICAgOyB0cmVlID0gVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfVxuICA7O1xuXG4gIG1vZHVsZSBUcmVlID0gVHJlZVxuZW5kXG5cbnR5cGUgKCdlbHQsICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgZWx0IGNtcCkgKChtb2R1bGUgTSkgOiAoZWx0LCBjbXApIGNvbXBhcmF0b3IpID0gTS5jb21wYXJhdG9yXG5sZXQgZW1wdHkgbSA9IFVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbmxldCBzaW5nbGV0b24gbSBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IHVuaW9uX2xpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBtIH5sZW4gfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIH5sZW4gfmZcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2xpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9zZXF1ZW5jZSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IHN0YWJsZV9kZWR1cF9saXN0IG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG1hcCBtIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG5sZXQgZmlsdGVyX21hcCBtIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxuXG5tb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGVsdCBjbXApXG4gICAgICAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdClcbiAgOiAoZWx0LCBfKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9IGVsdCkgc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZVxuOztcblxubGV0IGhhc2hfbV9fdCBmb2xkZXIgdCA9XG4gIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9tX190IGZvbGRlciAoSGFzaC5jcmVhdGUgKCkpIHQgaW5cbiAgSGFzaC5nZXRfaGFzaF92YWx1ZSBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSBzZXQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgJ2VsdCB0cmVlID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICB0eXBlIG5vbnJlYyAnZWx0IG5hbWVkID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgTmFtZWQudFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuXG4gIGluY2x1ZGUgVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgbGV0IHNpbmdsZXRvbiBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgYVxuICBsZXQgdW5pb25fbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yIGFcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2Zfc2VxdWVuY2UgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvciBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX3JlZlxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID0gZXF1YWxfcmVmXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSByZWZfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9yZWZcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IHJlZl9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxuKCogSW4gdGhlIGRlZmluaXRpb24gb2YgW3RdLCB3ZSBkbyBub3QgaGF2ZSBbW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1dIGJlY2F1c2VcbiAgIGluIGdlbmVyYWwsIHN5bnRheCBleHRlbnNpb25zIHRlbmQgdG8gdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiB3aGVuIGF2YWlsYWJsZSByYXRoZXIgdGhhblxuICAgdXNpbmcgdGhlIGFsaWFzLiAgSGVyZSB0aGF0IHdvdWxkIGxlYWQgdG8gdXNlIHRoZSByZWNvcmQgcmVwcmVzZW50YXRpb24gWyB7IG11dGFibGVcbiAgIGNvbnRlbnRzIDogJ2EgfSBdIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBkaWZmZXJlbnQgKGFuZCB1bndhbnRlZCkgYmVoYXZpb3IuICAqKVxudHlwZSAnYSB0ID0gJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG5leHRlcm5hbCBjcmVhdGUgOiAnYSAtPiAnYSB0ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSB0IC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHQgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbmxldCBzd2FwIHQxIHQyID1cbiAgbGV0IHRtcCA9ICF0MSBpblxuICB0MSA6PSAhdDI7XG4gIHQyIDo9IHRtcFxuOztcblxubGV0IHJlcGxhY2UgdCBmID0gdCA6PSBmICF0XG5cbmxldCBzZXRfdGVtcG9yYXJpbHkgdCBhIH5mID1cbiAgbGV0IHJlc3RvcmVfdG8gPSAhdCBpblxuICB0IDo9IGE7XG4gIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gdCA6PSByZXN0b3JlX3RvKVxuOztcblxubW9kdWxlIEFuZF92YWx1ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUIDogJ2EgcmVmICogJ2EgLT4gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzZXQgKFQgKHIsIGEpKSA9IHIgOj0gYVxuICBsZXQgc2V0cyB0cyA9IExpc3QuaXRlciB0cyB+ZjpzZXRcbiAgbGV0IHNuYXBzaG90IChUIChyLCBfKSkgPSBUIChyLCAhcilcbiAgbGV0IHNuYXBzaG90cyB0cyA9IExpc3QubWFwIHRzIH5mOnNuYXBzaG90XG5lbmRcblxubGV0IHNldHNfdGVtcG9yYXJpbHkgYW5kX3ZhbHVlcyB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gQW5kX3ZhbHVlLnNuYXBzaG90cyBhbmRfdmFsdWVzIGluXG4gIEFuZF92YWx1ZS5zZXRzIGFuZF92YWx1ZXM7XG4gIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gQW5kX3ZhbHVlLnNldHMgcmVzdG9yZV90bylcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuXG4oKiBbdF0gc3RvcmVzIHRoZSBbdC5sZW5ndGhdIHF1ZXVlIGVsZW1lbnRzIGF0IGNvbnNlY3V0aXZlIGluY3JlYXNpbmcgaW5kaWNlcyBvZiBbdC5lbHRzXSxcbiAgIG1vZCB0aGUgY2FwYWNpdHkgb2YgW3RdLCB3aGljaCBpcyBbT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNdLiAgVGhlIGNhcGFjaXR5IGlzXG4gICByZXF1aXJlZCB0byBiZSBhIHBvd2VyIG9mIHR3byAodXNlci1yZXF1ZXN0ZWQgY2FwYWNpdGllcyBhcmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdFxuICAgcG93ZXIpLCBzbyB0aGF0IG1vZCBjYW4gcXVpY2tseSBiZSBjb21wdXRlZCB1c2luZyBbbGFuZCB0Lm1hc2tdLCB3aGVyZSBbdC5tYXNrID1cbiAgIGNhcGFjaXR5IHQgLSAxXS4gIFNvLCBxdWV1ZSBlbGVtZW50IFtpXSBpcyBhdCBbdC5lbHRzLiggKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFzayApXS5cblxuICAgW251bV9tdXRhdGlvbnNdIGlzIHVzZWQgdG8gZGV0ZWN0IG1vZGlmaWNhdGlvbiBkdXJpbmcgaXRlcmF0aW9uLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIG51bV9tdXRhdGlvbnMgOiBpbnRcbiAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGVsdHMgOiAnYSBPcHRpb25fYXJyYXkudFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDAxX1xuICAgIHsgbnVtX211dGF0aW9ucyA9IG51bV9tdXRhdGlvbnNfXzAwM19cbiAgICA7IGZyb250ID0gZnJvbnRfXzAwNV9cbiAgICA7IG1hc2sgPSBtYXNrX18wMDdfXG4gICAgOyBsZW5ndGggPSBsZW5ndGhfXzAwOV9cbiAgICA7IGVsdHMgPSBlbHRzX18wMTFfXG4gICAgfSAtPlxuICAgIGxldCBibmRzX18wMDJfID0gW10gaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTJfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMTFfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbHRzXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwOV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9pbnQgbWFza19fMDA3XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFza1wiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDZfID0gc2V4cF9vZl9pbnQgZnJvbnRfXzAwNV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImZyb250XCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBudW1fbXV0YXRpb25zX18wMDNfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJudW1fbXV0YXRpb25zXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5tb2R1bGUgdHlwZSBTID0gUXVldWVfaW50Zi5TXG5cbmxldCBpbmNfbnVtX211dGF0aW9ucyB0ID0gdC5udW1fbXV0YXRpb25zIDwtIHQubnVtX211dGF0aW9ucyArIDFcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxubGV0IGVsdHNfaW5kZXggdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFza1xubGV0IHVuc2FmZV9nZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcbmxldCB1bnNhZmVfaXNfc2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfaXNfc29tZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9zZXQgdCBpIGEgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpIGFcbmxldCB1bnNhZmVfdW5zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxuXG5sZXQgY2hlY2tfaW5kZXhfZXhuIHQgaSA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gdC5sZW5ndGhcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiUXVldWUgaW5kZXggb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBbIFwiaW5kZXhcIiwgaSB8PiBJbnQuc2V4cF9vZl90OyBcImxlbmd0aFwiLCB0Lmxlbmd0aCB8PiBJbnQuc2V4cF9vZl90IF0pXG47O1xuXG5sZXQgZ2V0IHQgaSA9XG4gIGNoZWNrX2luZGV4X2V4biB0IGk7XG4gIHVuc2FmZV9nZXQgdCBpXG47O1xuXG5sZXQgc2V0IHQgaSBhID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgdW5zYWZlX3NldCB0IGkgYVxuOztcblxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcbmxldCBsZW5ndGggeyBsZW5ndGg7IF8gfSA9IGxlbmd0aFxuXG5sZXQgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucyA9XG4gIGlmIHQubnVtX211dGF0aW9ucyA8PiBudW1fbXV0YXRpb25zXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIm11dGF0aW9uIG9mIHF1ZXVlIGR1cmluZyBpdGVyYXRpb25cIlxuICAgICAgICAgWyBcIlwiLCB0IHw+IHNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSBdKVxuOztcblxubGV0IGNvbXBhcmUgPVxuICBsZXQgcmVjIHVuc2FmZV9jb21wYXJlX2Zyb20gY29tcGFyZV9lbHQgcG9zIH50MSB+dDIgfmxlbjEgfmxlbjIgfm11dDEgfm11dDIgPVxuICAgIG1hdGNoIHBvcyA9IGxlbjEsIHBvcyA9IGxlbjIgd2l0aFxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgfCB0cnVlLCBmYWxzZSAtPiAtMVxuICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgIHwgZmFsc2UsIGZhbHNlIC0+XG4gICAgICBsZXQgeCA9IGNvbXBhcmVfZWx0ICh1bnNhZmVfZ2V0IHQxIHBvcykgKHVuc2FmZV9nZXQgdDIgcG9zKSBpblxuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICB8IDAgLT4gdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MlxuICAgICAgIHwgbiAtPiBuKVxuICBpblxuICBmdW4gY29tcGFyZV9lbHQgdDEgdDIgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gICAgdGhlbiAwXG4gICAgZWxzZVxuICAgICAgdW5zYWZlX2NvbXBhcmVfZnJvbVxuICAgICAgICBjb21wYXJlX2VsdFxuICAgICAgICAwXG4gICAgICAgIH50MVxuICAgICAgICB+dDJcbiAgICAgICAgfmxlbjE6dDEubGVuZ3RoXG4gICAgICAgIH5sZW4yOnQyLmxlbmd0aFxuICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgIH5tdXQyOnQyLm51bV9tdXRhdGlvbnNcbjs7XG5cbmxldCBlcXVhbCA9XG4gIGxldCByZWMgdW5zYWZlX2VxdWFsX2Zyb20gZXF1YWxfZWx0IHBvcyB+dDEgfnQyIH5tdXQxIH5tdXQyIH5sZW4gPVxuICAgIHBvcyA9IGxlblxuICAgIHx8XG4gICAgbGV0IGIgPSBlcXVhbF9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQyIG11dDI7XG4gICAgYiAmJiB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgKHBvcyArIDEpIH50MSB+dDIgfm11dDEgfm11dDIgfmxlblxuICBpblxuICBmdW4gZXF1YWxfZWx0IHQxIHQyIC0+XG4gICAgcGh5c19lcXVhbCB0MSB0MlxuICAgIHx8XG4gICAgbGV0IGxlbjEgPSB0MS5sZW5ndGggaW5cbiAgICBsZXQgbGVuMiA9IHQyLmxlbmd0aCBpblxuICAgIGxlbjEgPSBsZW4yXG4gICAgJiYgdW5zYWZlX2VxdWFsX2Zyb21cbiAgICAgICAgIGVxdWFsX2VsdFxuICAgICAgICAgMFxuICAgICAgICAgfnQxXG4gICAgICAgICB+dDJcbiAgICAgICAgIH5sZW46bGVuMVxuICAgICAgICAgfm11dDE6dDEubnVtX211dGF0aW9uc1xuICAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IHsgbnVtX211dGF0aW9uczsgbWFzayA9IF87IGVsdHM7IGZyb250OyBsZW5ndGggfSA9IHQgaW5cbiAgYXNzZXJ0IChmcm9udCA+PSAwKTtcbiAgYXNzZXJ0IChmcm9udCA8IGNhcGFjaXR5IHQpO1xuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGFzc2VydCAoY2FwYWNpdHkgPSBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMpO1xuICBhc3NlcnQgKGNhcGFjaXR5ID49IDEpO1xuICBhc3NlcnQgKEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5KTtcbiAgZm9yIGkgPSAwIHRvIGNhcGFjaXR5IC0gMSBkb1xuICAgIGlmIGkgPCB0Lmxlbmd0aFxuICAgIHRoZW4gKFxuICAgICAgaW52YXJpYW50X2EgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnMpXG4gICAgZWxzZSBhc3NlcnQgKG5vdCAodW5zYWZlX2lzX3NldCB0IGkpKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpID9jYXBhY2l0eSAoKSA6IGEgdCA9XG4gIGxldCBjYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiAxXG4gICAgfCBTb21lIGNhcGFjaXR5IC0+XG4gICAgICBpZiBjYXBhY2l0eSA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcImNhbm5vdCBoYXZlIHF1ZXVlIHdpdGggbmVnYXRpdmUgY2FwYWNpdHlcIlxuICAgICAgICAgICAgIFsgXCJjYXBhY2l0eVwiLCBjYXBhY2l0eSB8PiBJbnQuc2V4cF9vZl90IF0pXG4gICAgICBlbHNlIGlmIGNhcGFjaXR5ID0gMFxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIEludC5jZWlsX3BvdzIgY2FwYWNpdHlcbiAgaW5cbiAgeyBudW1fbXV0YXRpb25zID0gMFxuICA7IGZyb250ID0gMFxuICA7IG1hc2sgPSBjYXBhY2l0eSAtIDFcbiAgOyBsZW5ndGggPSAwXG4gIDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpjYXBhY2l0eVxuICB9XG47O1xuXG5sZXQgYmxpdF90b19hcnJheSB+c3JjIGRzdCA9XG4gIGFzc2VydCAoc3JjLmxlbmd0aCA8PSBPcHRpb25fYXJyYXkubGVuZ3RoIGRzdCk7XG4gIGxldCBmcm9udF9sZW4gPSBJbnQubWluIHNyYy5sZW5ndGggKGNhcGFjaXR5IHNyYyAtIHNyYy5mcm9udCkgaW5cbiAgbGV0IHJlc3RfbGVuID0gc3JjLmxlbmd0aCAtIGZyb250X2xlbiBpblxuICBPcHRpb25fYXJyYXkuYmxpdCB+bGVuOmZyb250X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOnNyYy5mcm9udCB+ZHN0IH5kc3RfcG9zOjA7XG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46cmVzdF9sZW4gfnNyYzpzcmMuZWx0cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6ZnJvbnRfbGVuXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgZGVzaXJlZF9jYXBhY2l0eSA9XG4gICgqIFdlIGFsbG93IGFyZ3VtZW50cyBsZXNzIHRoYW4gMSB0byBbc2V0X2NhcGFjaXR5XSwgYnV0IHRyYW5zbGF0ZSB0aGVtIHRvIDEgdG8gc2ltcGxpZnlcbiAgICAgdGhlIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGFycmF5IGxlbmd0aCBiZWluZyBhIHBvd2VyIG9mIDIuICopXG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBuZXdfY2FwYWNpdHkgPSBJbnQuY2VpbF9wb3cyIChtYXggMSAobWF4IGRlc2lyZWRfY2FwYWNpdHkgdC5sZW5ndGgpKSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdFxuICB0aGVuIChcbiAgICBsZXQgZHN0ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICAgIGJsaXRfdG9fYXJyYXkgfnNyYzp0IGRzdDtcbiAgICB0LmZyb250IDwtIDA7XG4gICAgdC5tYXNrIDwtIG5ld19jYXBhY2l0eSAtIDE7XG4gICAgdC5lbHRzIDwtIGRzdClcbjs7XG5cbmxldCBlbnF1ZXVlIHQgYSA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGlmIHQubGVuZ3RoID0gY2FwYWNpdHkgdCB0aGVuIHNldF9jYXBhY2l0eSB0ICgyICogdC5sZW5ndGgpO1xuICB1bnNhZmVfc2V0IHQgdC5sZW5ndGggYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgZGVxdWV1ZV9ub25lbXB0eSB0ID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgbGV0IGVsdHMgPSB0LmVsdHMgaW5cbiAgbGV0IGZyb250ID0gdC5mcm9udCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBlbHRzIGZyb250IGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSBlbHRzIGZyb250O1xuICB0LmZyb250IDwtIGVsdHNfaW5kZXggdCAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgQ2FtbC5RdWV1ZS5FbXB0eSBlbHNlIGRlcXVldWVfbm9uZW1wdHkgdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9ub25lbXB0eSB0KVxubGV0IGZyb250X25vbmVtcHR5IHQgPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmVsdHMgdC5mcm9udFxubGV0IGxhc3Rfbm9uZW1wdHkgdCA9IHVuc2FmZV9nZXQgdCAodC5sZW5ndGggLSAxKVxubGV0IHBlZWsgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZnJvbnRfbm9uZW1wdHkgdClcbmxldCBwZWVrX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIENhbWwuUXVldWUuRW1wdHkgZWxzZSBmcm9udF9ub25lbXB0eSB0XG5sZXQgbGFzdCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChsYXN0X25vbmVtcHR5IHQpXG5sZXQgbGFzdF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBDYW1sLlF1ZXVlLkVtcHR5IGVsc2UgbGFzdF9ub25lbXB0eSB0XG5cbmxldCBjbGVhciB0ID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPiAwXG4gIHRoZW4gKFxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHVuc2FmZV91bnNldCB0IGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgdC5mcm9udCA8LSAwKVxuOztcblxubGV0IGJsaXRfdHJhbnNmZXIgfnNyYyB+ZHN0ID9sZW4gKCkgPVxuICBpbmNfbnVtX211dGF0aW9ucyBzcmM7XG4gIGluY19udW1fbXV0YXRpb25zIGRzdDtcbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gc3JjLmxlbmd0aFxuICAgIHwgU29tZSBsZW4gLT5cbiAgICAgIGlmIGxlbiA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcIlF1ZXVlLmJsaXRfdHJhbnNmZXI6IG5lZ2F0aXZlIGxlbmd0aFwiXG4gICAgICAgICAgICAgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgICAgIG1pbiBsZW4gc3JjLmxlbmd0aFxuICBpblxuICBpZiBsZW4gPiAwXG4gIHRoZW4gKFxuICAgIHNldF9jYXBhY2l0eSBkc3QgKG1heCAoY2FwYWNpdHkgZHN0KSAoZHN0Lmxlbmd0aCArIGxlbikpO1xuICAgIGxldCBkc3Rfc3RhcnQgPSBkc3QuZnJvbnQgKyBkc3QubGVuZ3RoIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICgqIFRoaXMgaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBzaW1wbHkgW2VucXVldWUgZHN0IChkZXF1ZXVlX25vbmVtcHR5IHNyYyldICopXG4gICAgICBsZXQgc3JjX2kgPSAoc3JjLmZyb250ICsgaSkgbGFuZCBzcmMubWFzayBpblxuICAgICAgbGV0IGRzdF9pID0gKGRzdF9zdGFydCArIGkpIGxhbmQgZHN0Lm1hc2sgaW5cbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWVcbiAgICAgICAgZHN0LmVsdHNcbiAgICAgICAgZHN0X2lcbiAgICAgICAgKE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHNyYy5lbHRzIHNyY19pKTtcbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgc3JjLmVsdHMgc3JjX2lcbiAgICBkb25lO1xuICAgIGRzdC5sZW5ndGggPC0gZHN0Lmxlbmd0aCArIGxlbjtcbiAgICBzcmMuZnJvbnQgPC0gKHNyYy5mcm9udCArIGxlbikgbGFuZCBzcmMubWFzaztcbiAgICBzcmMubGVuZ3RoIDwtIHNyYy5sZW5ndGggLSBsZW4pXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIHNldF9jYXBhY2l0eSB0IChJbnQubWF4IChjYXBhY2l0eSB0KSAodC5sZW5ndGggKyBMaXN0Lmxlbmd0aCBsKSk7XG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gICAgbGV0IHIgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICAgIGRvbmU7XG4gICAgIXIpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGEgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYylcbjs7XG5cblxuKCogW2l0ZXJdIGlzIGltcGxlbWVudGVkIGRpcmVjdGx5IGJlY2F1c2UgaW1wbGVtZW50aW5nIGl0IGluIHRlcm1zIG9mIFtmb2xkXSBpc1xuICAgc2xvd2VyLiAqKVxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gIGRvbmVcbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgcmVzdWx0IDo9IHVuc2FmZV9nZXQgdCBpIDo6ICFyZXN1bHRcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgICBsZXQgZm9sZGkgPSBgQ3VzdG9tIGZvbGRpXG4gICAgbGV0IGl0ZXJpID0gYEN1c3RvbSBpdGVyaVxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBtZW0gPSBDLm1lbVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGNvdW50aSA9IEMuY291bnRpXG5sZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxubGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5sZXQgZmluZGkgPSBDLmZpbmRpXG5sZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG5cblxuKCogRm9yIFtjb25jYXRfbWFwXSwgW2ZpbHRlcl9tYXBdLCBhbmQgW2ZpbHRlcl0sIHdlIGRvbid0IGNyZWF0ZSBbdF9yZXN1bHRdIHdpdGggW3RdJ3NcbiAgIGNhcGFjaXR5IGJlY2F1c2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyBtYW55IGVsZW1lbnRzIFt0X3Jlc3VsdF0gd2lsbCB1bHRpbWF0ZWx5IGhvbGQuICopXG5sZXQgY29uY2F0X21hcCB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gTGlzdC5pdGVyIChmIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gTGlzdC5pdGVyIChmIGkgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgdF9yZXN1bHQgYikpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+XG4gICAgbWF0Y2ggZiBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoIGYgaSBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gZW5xdWV1ZSB0X3Jlc3VsdCBhKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBpZiBmIGkgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0MiA9IGZpbHRlciB0IH5mIGluXG4gIGNsZWFyIHQ7XG4gIGJsaXRfdHJhbnNmZXIgfnNyYzp0MiB+ZHN0OnQgKClcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0MiA9IGZpbHRlcmkgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgY29weSBzcmMgPVxuICBsZXQgZHN0ID0gY3JlYXRlIH5jYXBhY2l0eTpzcmMubGVuZ3RoICgpIGluXG4gIGJsaXRfdG9fYXJyYXkgfnNyYyBkc3QuZWx0cztcbiAgZHN0Lmxlbmd0aCA8LSBzcmMubGVuZ3RoO1xuICBkc3Rcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICAoKiBUcmF2ZXJzaW5nIHRoZSBsaXN0IHVwIGZyb250IHRvIGNvbXB1dGUgaXRzIGxlbmd0aCBpcyBwcm9iYWJseSAoYnV0IG5vdCBkZWZpbml0ZWx5KVxuICAgICBiZXR0ZXIgdGhhbiBkb3VibGluZyB0aGUgdW5kZXJseWluZyBhcnJheSBzaXplIHNldmVyYWwgdGltZXMgZm9yIGxhcmdlIHF1ZXVlcy4gKilcbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OihMaXN0Lmxlbmd0aCBsKSAoKSBpblxuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG4oKiBUaGUgcXVldWUgW3RdIHJldHVybmVkIGJ5IFtjcmVhdGVdIHdpbGwgaGF2ZSBbdC5sZW5ndGggPSAwXSwgW3QuZnJvbnQgPSAwXSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IEludC5jZWlsX3BvdzIgbGVuXS4gIFNvLCB3ZSBvbmx5IGhhdmUgdG8gc2V0IFt0Lmxlbmd0aF0gdG8gW2xlbl0gYWZ0ZXJcbiAgIHRoZSBibGl0IHRvIG1haW50YWluIGFsbCB0aGUgaW52YXJpYW50czogW3QubGVuZ3RoXSBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4gICBpbiB0aGUgcXVldWUsIFt0LmZyb250XSBpcyB0aGUgYXJyYXkgaW5kZXggb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHF1ZXVlLCBhbmRcbiAgIFtjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNdLiAqKVxubGV0IGluaXQgbGVuIH5mID1cbiAgaWYgbGVuIDwgMFxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIlF1ZXVlLmluaXQ6IG5lZ2F0aXZlIGxlbmd0aFwiIFsgXCJsZW5ndGhcIiwgbGVuIHw+IEludC5zZXhwX29mX3QgXSk7XG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTpsZW4gKCkgaW5cbiAgYXNzZXJ0IChPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0cyA+PSBsZW4pO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzIGkgKGYgaSlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gbGVuO1xuICB0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhKSB+ZjooQXJyYXkudW5zYWZlX2dldCBhKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IHQubGVuZ3RoIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IG1hcCB0YSB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdGEubnVtX211dGF0aW9ucyBpblxuICBsZXQgdGIgPSBjcmVhdGUgfmNhcGFjaXR5OnRhLmxlbmd0aCAoKSBpblxuICB0Yi5sZW5ndGggPC0gdGEubGVuZ3RoO1xuICBmb3IgaSA9IDAgdG8gdGEubGVuZ3RoIC0gMSBkb1xuICAgIGxldCBiID0gZiAodW5zYWZlX2dldCB0YSBpKSBpblxuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0YSBudW1fbXV0YXRpb25zO1xuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdGIuZWx0cyBpIGJcbiAgZG9uZTtcbiAgdGJcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIG1hcCB0IH5mOihmdW4gYSAtPlxuICAgIGxldCByZXN1bHQgPSBmICFpIGEgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICByZXN1bHQpXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBlbnF1ZXVlIHQgeDtcbiAgdFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHRvX2xpc3QgdCB8PiBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2FcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCB8PiBvZl9saXN0XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB8XG5cbiAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBmdW5jdGlvblxuICAgIHwgKF8gOiB0KSAtPiAuXG4gIDs7XG5cbiAgbGV0IGFsbCA9IFtdXG4gIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBcIkJhc2UuTm90aGluZy50XCIgc2V4cFxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG4gIGxldCB0b19zdHJpbmcgPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBvZl9zdHJpbmcgKF8gOiBzdHJpbmcpID0gZmFpbHdpdGggXCJCYXNlLk5vdGhpbmcub2Zfc3RyaW5nOiBub3Qgc3VwcG9ydGVkXCJcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTm90aGluZ1wiXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgQ2FtbC5OYXRpdmVpbnRcbmluY2x1ZGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChuYXRpdmVpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfbmF0aXZlaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IG5hdGl2ZWludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX25hdGl2ZWludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJW54XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlbnhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBudW1fYml0cyA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJOYXRpdmVpbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBDYW1sLk5hdGl2ZWludC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IENhbWwuTmF0aXZlaW50LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gQ2FtbC5OYXRpdmVpbnQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyICh4IDogbmF0aXZlaW50KSA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IENhbWwuTmF0aXZlaW50LnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5OYXRpdmVpbnQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5OYXRpdmVpbnQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgQ2FtbC5OYXRpdmVpbnQucHJlZCB4ID0gMG5cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBuYXRpdmVpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAobmF0aXZlaW50W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBDYW1sLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIENhbWwuTmF0aXZlaW50Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJbTmF0aXZlaW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgaWYgQ2FtbC5OYXRpdmVpbnQuZXF1YWwgaSBDYW1sLk5hdGl2ZWludC5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChDYW1sLk5hdGl2ZWludC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfbmF0aXZlaW50IHQgPSB0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCB0ID0gdFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50Lm5hdGl2ZWludF9wb3Bjb3VudFxubGV0IG9mX2ludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludF90cnVuY1xubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19uYXRpdmVpbnRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCB0b19pbnQzMl90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX25hdGl2ZWludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgcG93IGIgZSA9IG9mX2ludF9leG4gKEludF9tYXRoLlByaXZhdGUuaW50X3BvdyAodG9faW50X2V4biBiKSAodG9faW50X2V4biBlKSlcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbTmF0aXZlaW50XSBhbmQgW05hdGl2ZWludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmV4dGVybmFsIGJzd2FwIDogdCAtPiB0ID0gXCIlYnN3YXBfbmF0aXZlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1hcF9pbnRmXG5cbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG4gICgqIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIHRlc3RlZCBpbiBbdGVzdF9tYXAubWxdIHRvIG1ha2Ugc3VyZSBvdXIgdXNlIG9mXG4gICAgIFtDYW1sLk9iai5tYWdpY10gaXMgY29ycmVjdCBhbmQgc2FmZS4gKilcbiAgbGV0IG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdCA9IENhbWwuT2JqLm1hZ2ljXG4gIGxldCB0b19jb250aW51ZV9vcl9zdG9wIDogdCAtPiBDb250aW51ZV9vcl9zdG9wLnQgPSBDYW1sLk9iai5tYWdpY1xuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuTWVyZ2VfZWxlbWVudFxuXG4gIGxldCBsZWZ0ID0gZnVuY3Rpb25cbiAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICB8IGBMZWZ0IGxlZnQgfCBgQm90aCAobGVmdCwgXykgLT4gU29tZSBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgIHwgYFJpZ2h0IHJpZ2h0IHwgYEJvdGggKF8sIHJpZ2h0KSAtPiBTb21lIHJpZ2h0XG4gIDs7XG5cbiAgbGV0IGxlZnRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgUmlnaHQgXyAtPiBkZWZhdWx0XG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IGxlZnRcbiAgOztcblxuICBsZXQgcmlnaHRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBfIC0+IGRlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gcmlnaHRcbiAgOztcblxuICBsZXQgdmFsdWVzIHQgfmxlZnRfZGVmYXVsdCB+cmlnaHRfZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBsZWZ0IC0+IGxlZnQsIHJpZ2h0X2RlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCAtPiBsZWZ0X2RlZmF1bHQsIHJpZ2h0XG4gICAgfCBgQm90aCAobGVmdCwgcmlnaHQpIC0+IGxlZnQsIHJpZ2h0XG4gIDs7XG5lbmRcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuZXhjZXB0aW9uIER1cGxpY2F0ZSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIER1cGxpY2F0ZV0gKGZ1bmN0aW9uXG4gICAgfCBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLkR1cGxpY2F0ZVwiXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPVxuICAgIHwgRW1wdHlcbiAgICB8IExlYWYgb2YgJ2sgKiAndlxuICAgIHwgTm9kZSBvZiAoJ2ssICd2KSB0ICogJ2sgKiAndiAqICgnaywgJ3YpIHQgKiBpbnRcblxuICB0eXBlICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSB0XG5cbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgXywgaCkgLT4gaFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzID1cbiAgICBsZXQgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkgayA9XG4gICAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgfCBTb21lIGxvd2VyIC0+IGNvbXBhcmVfa2V5IGxvd2VyIGsgPCAwKVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgdXBwZXIgLT4gY29tcGFyZV9rZXkgayB1cHBlciA8IDBcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBsb3dlciB1cHBlciBjb21wYXJlX2tleSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgICB8IExlYWYgKGssIF8pIC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgIHwgTm9kZSAobCwgaywgXywgciwgaCkgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSBrKSBjb21wYXJlX2tleSBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgaykgdXBwZXIgY29tcGFyZV9rZXkgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfa2V5IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfa2V5IHRcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDIgKilcbiAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPSAwICYmIGhyID0gMFxuICAgIHRoZW4gTGVhZiAoeCwgZClcbiAgICBlbHNlIE5vZGUgKGwsIHgsIGQsIHIsIGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKVxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPSBMZWFmIChrZXksIGRhdGEpXG5cbiAgKCogV2UgbXVzdCBjYWxsIFtmXSB3aXRoIGluY3JlYXNpbmcgaW5kZXhlcywgYmVjYXVzZSB0aGUgYmluX3Byb3QgcmVhZGVyIGluXG4gICAgIENvcmUuTWFwIG5lZWRzIGl0LiAqKVxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIG4gfmYgaSA6IChfLCBfKSB0ID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGssIHYgPSBmIGkgaW5cbiAgICAgICAgTGVhZiAoaywgdilcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wsIHZsID0gZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIDEpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIEVtcHR5LCAyKVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgbGV0IGtyLCB2ciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBOb2RlIChMZWFmIChrbCwgdmwpLCBrLCB2LCBMZWFmIChrciwgdnIpLCAyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHYgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyXG4gICAgICAgICB8fFxuICAgICAgICAgbGV0IGswLCBfID0gYXJyYXkuKDApIGluXG4gICAgICAgICBsZXQgazEsIF8gPSBhcnJheS4oMSkgaW5cbiAgICAgICAgIGNvbXBhcmVfa2V5IGswIGsxIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbjphcnJheV9sZW5ndGggfmY6bmV4dCwgYXJyYXlfbGVuZ3RoXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+IFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfa2V5IChmc3QgYXJyYXkuKDApKSAoZnN0IGFycmF5LigxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oaSkpIChmc3QgYXJyYXkuKGkgKyAxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm5cbiAgICAgICAgICAgICAgICAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSkpXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwpIC0gaGVpZ2h0KHIpfCA8PSAzICopXG4gIGxldCBiYWwgbCB4IGQgciA9XG4gICAgbGV0IGhsID0gaGVpZ2h0IGwgaW5cbiAgICBsZXQgaHIgPSBoZWlnaHQgciBpblxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBoZWlnaHQoTGVhZikgPSAxICYmIDEgaXMgbm90IGxhcmdlciB0aGFuIGhyICsgMiAqKVxuICAgICAgfCBOb2RlIChsbCwgbHYsIGxkLCBsciwgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsclxuICAgICAgICB0aGVuIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgIHwgTGVhZiAobHJ2LCBscmQpIC0+IGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIEVtcHR5KSBscnYgbHJkIChjcmVhdGUgRW1wdHkgeCBkIHIpXG4gICAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJkLCBscnIsIF8pIC0+XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpKSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBoZWlnaHQoTGVhZikgPSAxICYmIDEgaXMgbm90IGxhcmdlciB0aGFuIGhsICsgMiAqKVxuICAgICAgfCBOb2RlIChybCwgcnYsIHJkLCByciwgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybFxuICAgICAgICB0aGVuIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgIHwgTGVhZiAocmx2LCBybGQpIC0+IGNyZWF0ZSAoY3JlYXRlIGwgeCBkIEVtcHR5KSBybHYgcmxkIChjcmVhdGUgRW1wdHkgcnYgcmQgcnIpXG4gICAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxkLCBybHIsIF8pIC0+XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpKSlcbiAgICBlbHNlIGNyZWF0ZSBsIHggZCByXG4gIDs7XG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCByYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlIFwiW01hcC5hZGRfZXhuXSBnb3Qga2V5IGFscmVhZHkgcHJlc2VudFwiIFsgXCJrZXlcIiwga2V5IHw+IHNleHBfb2Zfa2V5IF0pXG4gIDs7XG5cbiAgbW9kdWxlIEFkZF9vcl9zZXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBZGRfZXhuX2ludGVybmFsXG4gICAgICB8IEFkZF9leG5cbiAgICAgIHwgU2V0XG4gIGVuZFxuXG5cbiAgbGV0IHJlYyBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+bGVuZ3RoXG4gICAgICAgICAgICB+a2V5OnhcbiAgICAgICAgICAgIH5kYXRhXG4gICAgICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgICAgIH5zZXhwX29mX2tleVxuICAgICAgICAgICAgfihhZGRfb3Jfc2V0IDogQWRkX29yX3NldC50KVxuICAgID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgKHgsIGRhdGEpLCBsZW5ndGggKyAxXG4gICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgRHVwbGljYXRlXG4gICAgICAgIHwgQWRkX2V4biAtPiByYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXk6eCB+c2V4cF9vZl9rZXlcbiAgICAgICAgfCBTZXQgLT4gTGVhZiAoeCwgZGF0YSksIGxlbmd0aClcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gTm9kZSAoTGVhZiAoeCwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKSwgbGVuZ3RoICsgMVxuICAgICAgZWxzZSBOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoeCwgZGF0YSksIDIpLCBsZW5ndGggKyAxXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgRHVwbGljYXRlXG4gICAgICAgIHwgQWRkX2V4biAtPiByYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXk6eCB+c2V4cF9vZl9rZXlcbiAgICAgICAgfCBTZXQgLT4gTm9kZSAobCwgeCwgZGF0YSwgciwgaCksIGxlbmd0aClcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbCwgbGVuZ3RoID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIGwgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCByLCBsZW5ndGggPVxuICAgICAgICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgfmxlbmd0aCB+a2V5OnggfmRhdGEgciB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0XG4gICAgICAgIGluXG4gICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgZmluZF9hbmRfYWRkX29yX3NldCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0OkFkZF9leG5cbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICB0XG4gICAgICB+bGVuZ3RoXG4gICAgICB+a2V5XG4gICAgICB+ZGF0YVxuICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICB+c2V4cF9vZl9rZXlcbiAgICAgIH5hZGRfb3Jfc2V0OkFkZF9leG5faW50ZXJuYWxcbiAgOztcblxuICBsZXQgc2V0IHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgdFxuICAgICAgfmxlbmd0aFxuICAgICAgfmtleVxuICAgICAgfmRhdGFcbiAgICAgIH5jb21wYXJlX2tleVxuICAgICAgfnNleHBfb2Zfa2V5OihmdW4gXyAtPiBMaXN0IFtdKVxuICAgICAgfmFkZF9vcl9zZXQ6U2V0XG4gIDs7XG5cbiAgbGV0IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXkgPSBmc3QgKHNldCB0IH5sZW5ndGg6MCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSlcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBGcmFnbWVudCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9XG4gICAgICAgIHsgbGVmdF9zdWJ0cmVlIDogKCdrLCAndikgdFxuICAgICAgICA7IGtleSA6ICdrXG4gICAgICAgIDsgZGF0YSA6ICd2XG4gICAgICAgIH1cblxuICAgICAgbGV0IHNpbmdsZXRvbl90b190cmVlX2V4biA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH0gLT4gc2luZ2xldG9uIGtleSBkYXRhXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIk1hcC5zaW5nbGV0b25fdG9fdHJlZV9leG46IG5vdCBhIHNpbmdsZXRvblwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2luZ2xldG9uIH5rZXkgfmRhdGEgPSB7IGxlZnRfc3VidHJlZSA9IEVtcHR5OyBrZXk7IGRhdGEgfVxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIpfCA8PSAyLFxuICAgICAgICAgbWF4X2tleShsKSA8IG1pbl9rZXkocilcbiAgICAgICopXG4gICAgICBsZXQgY29sbGFwc2UgbCByID0gY3JlYXRlIGwubGVmdF9zdWJ0cmVlIGwua2V5IGwuZGF0YSByXG5cbiAgICAgICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsLmxlZnRfc3VidHJlZSkgLSBoZWlnaHQoci5sZWZ0X3N1YnRyZWUpfCA8PSAyLFxuICAgICAgICAgbWF4X2tleShsKSA8IG1pbl9rZXkocilcbiAgICAgICopXG4gICAgICBsZXQgam9pbiBsIHIgPSB7IHIgd2l0aCBsZWZ0X3N1YnRyZWUgPSBjb2xsYXBzZSBsIHIubGVmdF9zdWJ0cmVlIH1cbiAgICAgIGxldCBtYXhfa2V5IHQgPSB0LmtleVxuICAgIGVuZFxuXG4gICAgKCoqIEJ1aWxkIHRyZWVzIGZyb20gc2luZ2xldG9ucyBpbiBhIGJhbGFuY2VkIHdheSBieSB1c2luZyBza2V3IGJpbmFyeSBlbmNvZGluZy5cbiAgICAgICAgRWFjaCBsZXZlbCBjb250YWlucyB0cmVlcyBvZiB0aGUgc2FtZSBoZWlnaHQsIGNvbnNlY3V0aXZlIGxldmVscyBoYXZlIGNvbnNlY3V0aXZlXG4gICAgICAgIGhlaWdodHMuIFRoZXJlIGFyZSBubyBnYXBzLiBUaGUgZmlyc3QgbGV2ZWwgYXJlIHNpbmdsZSBrZXlzLlxuICAgICopXG4gICAgdHlwZSAoJ2ssICd2KSB0ID1cbiAgICAgIHwgWmVybyBvZiB1bml0XG4gICAgICAoKiBbdW5pdF0gdG8gbWFrZSBwYXR0ZXJuIG1hdGNoaW5nIGZhc3RlciAqKVxuICAgICAgfCBPbmUgb2YgKCdrLCAndikgdCAqICgnaywgJ3YpIEZyYWdtZW50LnRcbiAgICAgIHwgVHdvIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50ICogKCdrLCAndikgRnJhZ21lbnQudFxuXG4gICAgbGV0IGVtcHR5ID0gWmVybyAoKVxuXG4gICAgbGV0IGFkZF91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHggPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IE9uZSAodCwgeClcbiAgICAgICAgfCBPbmUgKHQsIHkpIC0+IFR3byAodCwgeSwgeClcbiAgICAgICAgfCBUd28gKHQsIHosIHkpIC0+IE9uZSAoZ28gdCAoRnJhZ21lbnQuam9pbiB6IHkpLCB4KVxuICAgICAgaW5cbiAgICAgIGZ1biB0IH5rZXkgfmRhdGEgLT4gZ28gdCAoRnJhZ21lbnQuc2luZ2xldG9uIH5rZXkgfmRhdGEpXG4gICAgOztcblxuICAgIGxldCB0b190cmVlX3VuY2hlY2tlZCA9XG4gICAgICBsZXQgcmVjIGdvIHQgciA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFplcm8gKCkgLT4gclxuICAgICAgICB8IE9uZSAodCwgbCkgLT4gZ28gdCAoRnJhZ21lbnQuY29sbGFwc2UgbCByKVxuICAgICAgICB8IFR3byAodCwgbGwsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIChGcmFnbWVudC5qb2luIGxsIGwpIHIpXG4gICAgICBpblxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgWmVybyAoKSAtPiBFbXB0eVxuICAgICAgfCBPbmUgKHQsIHIpIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgICAgfCBUd28gKHQsIGwsIHIpIC0+IGdvIChPbmUgKHQsIGwpKSAoRnJhZ21lbnQuc2luZ2xldG9uX3RvX3RyZWVfZXhuIHIpXG4gICAgOztcblxuICAgIGxldCBtYXhfa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAoKSAtPiBOb25lXG4gICAgICB8IE9uZSAoXywgcikgfCBUd28gKF8sIF8sIHIpIC0+IFNvbWUgKEZyYWdtZW50Lm1heF9rZXkgcilcbiAgICA7O1xuICBlbmRcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5ID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGxldCBidWlsZGVyLCBsZW5ndGggPVxuICAgICAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICAgICAgc2VxXG4gICAgICAgICAgfmluaXQ6KEJ1aWxkX2luY3JlYXNpbmcuZW1wdHksIDApXG4gICAgICAgICAgfmY6KGZ1biAoYnVpbGRlciwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgbWF0Y2ggQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IGJ1aWxkZXIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyZV9rZXkgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX2luY3JlYXNpbmdfc2VxdWVuY2U6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgICAgICAgfCBfIC0+IEJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCBidWlsZGVyIH5rZXkgfmRhdGEsIGxlbmd0aCArIDEpXG4gICAgICBpblxuICAgICAgT2sgKEJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgYnVpbGRlciwgbGVuZ3RoKSlcbiAgOztcblxuICAoKiBMaWtlIFtiYWxdIGJ1dCBhbGxvd3MgYW55IGRpZmZlcmVuY2UgaW4gaGVpZ2h0IGJldHdlZW4gW2xdIGFuZCBbcl0uXG5cbiAgICAgTyh8aGVpZ2h0IGwgLSBoZWlnaHQgcnwpICopXG4gIGxldCByZWMgam9pbiBsIGsgZCByIH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBzZXQnIHIgayBkIH5jb21wYXJlX2tleVxuICAgIHwgXywgRW1wdHkgLT4gc2V0JyBsIGsgZCB+Y29tcGFyZV9rZXlcbiAgICB8IExlYWYgKGxrLCBsZCksIF8gLT4gc2V0JyAoc2V0JyByIGsgZCB+Y29tcGFyZV9rZXkpIGxrIGxkIH5jb21wYXJlX2tleVxuICAgIHwgXywgTGVhZiAocmssIHJkKSAtPiBzZXQnIChzZXQnIGwgayBkIH5jb21wYXJlX2tleSkgcmsgcmQgfmNvbXBhcmVfa2V5XG4gICAgfCBOb2RlIChsbCwgbGssIGxkLCBsciwgbGgpLCBOb2RlIChybCwgcmssIHJkLCByciwgcmgpIC0+XG4gICAgICAoKiBbYmFsXSByZXF1aXJlcyBoZWlnaHQgZGlmZmVyZW5jZSA8PSAzLiAqKVxuICAgICAgaWYgbGggPiByaCArIDNcbiAgICAgICgqIFtoZWlnaHQgbHIgPj0gaGVpZ2h0IHJdLFxuICAgICAgICAgdGhlcmVmb3JlIFtoZWlnaHQgKGpvaW4gbHIgayBkIHIgLi4uKV0gaXMgW2hlaWdodCBybCArIDFdIG9yIFtoZWlnaHQgcmxdXG4gICAgICAgICB0aGVyZWZvcmUgdGhlIGhlaWdodCBkaWZmZXJlbmNlIHdpdGggW2xsXSB3aWxsIGJlIDw9IDMgKilcbiAgICAgIHRoZW4gYmFsIGxsIGxrIGxkIChqb2luIGxyIGsgZCByIH5jb21wYXJlX2tleSlcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDNcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgayBkIHJsIH5jb21wYXJlX2tleSkgcmsgcmQgcnJcbiAgICAgIGVsc2UgYmFsIGwgayBkIHJcbiAgOztcblxuICBsZXQgcmVjIHNwbGl0IHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IHggayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBFbXB0eSwgU29tZSAoaywgZCksIEVtcHR5XG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gRW1wdHksIE5vbmUsIHRcbiAgICAgIGVsc2UgdCwgTm9uZSwgRW1wdHlcbiAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgeCBrIGluXG4gICAgICBpZiBjbXAgPSAwXG4gICAgICB0aGVuIGwsIFNvbWUgKGssIGQpLCByXG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIG1heWJlLCBsciA9IHNwbGl0IGwgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgbGwsIG1heWJlLCBqb2luIGxyIGsgZCByIH5jb21wYXJlX2tleSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcmwsIG1heWJlLCByciA9IHNwbGl0IHIgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgam9pbiBsIGsgZCBybCB+Y29tcGFyZV9rZXksIG1heWJlLCBycilcbiAgOztcblxuICBsZXQgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG8geCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBsZWZ0LCBib3VuZGFyeV9vcHQsIHJpZ2h0ID0gc3BsaXQgdCB4IH5jb21wYXJlX2tleSBpblxuICAgIG1hdGNoIGJvdW5kYXJ5X29wdCB3aXRoXG4gICAgfCBOb25lIC0+IGxlZnQsIHJpZ2h0XG4gICAgfCBTb21lIChrZXksIGRhdGEpIC0+XG4gICAgICBsZXQgaW5zZXJ0X2ludG8gdHJlZSA9IGZzdCAoc2V0IHRyZWUgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5KSBpblxuICAgICAgKG1hdGNoIGludG8gd2l0aFxuICAgICAgIHwgYExlZnQgLT4gaW5zZXJ0X2ludG8gbGVmdCwgcmlnaHRcbiAgICAgICB8IGBSaWdodCAtPiBsZWZ0LCBpbnNlcnRfaW50byByaWdodClcbiAgOztcblxuICBsZXQgc3BsaXRfcmFuZ2VcbiAgICAgICAgdFxuICAgICAgICB+KGxvd2VyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfih1cHBlcl9ib3VuZCA6ICdhIE1heWJlX2JvdW5kLnQpXG4gICAgICAgIH5jb21wYXJlX2tleVxuICAgID1cbiAgICBpZiBNYXliZV9ib3VuZC5ib3VuZHNfY3Jvc3NlZFxuICAgICAgICAgfmNvbXBhcmU6Y29tcGFyZV9rZXlcbiAgICAgICAgIH5sb3dlcjpsb3dlcl9ib3VuZFxuICAgICAgICAgfnVwcGVyOnVwcGVyX2JvdW5kXG4gICAgdGhlbiBlbXB0eSwgZW1wdHksIGVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVmdCwgbWlkX2FuZF9yaWdodCA9XG4gICAgICAgIG1hdGNoIGxvd2VyX2JvdW5kIHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQgLT4gZW1wdHksIHRcbiAgICAgICAgfCBJbmNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgdCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgTGVmdCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxldCBtaWQsIHJpZ2h0ID1cbiAgICAgICAgbWF0Y2ggdXBwZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBtaWRfYW5kX3JpZ2h0LCBlbXB0eVxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IG1pZF9hbmRfcmlnaHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICAgIHwgRXhjbCBsYiAtPlxuICAgICAgICAgIHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBsZWZ0LCBtaWQsIHJpZ2h0KVxuICA7O1xuXG4gIGxldCByZWMgZmluZCB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKHYsIGQpIC0+IGlmIGNvbXBhcmVfa2V5IHggdiA9IDAgdGhlbiBTb21lIGQgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkIGVsc2UgZmluZCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGRhdGEgPSBkYXRhIDo6IE9wdGlvbi52YWx1ZSAoZmluZCB0IGtleSB+Y29tcGFyZV9rZXkpIH5kZWZhdWx0OltdIGluXG4gICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB4IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIGwgLT4gbFxuICA7O1xuXG4gIGxldCBmaW5kX2V4biA9XG4gICAgbGV0IGlmX25vdF9mb3VuZCBrZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIHJhaXNlIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJNYXAuZmluZF9leG46IG5vdCBmb3VuZFwiOyBzZXhwX29mX2tleSBrZXkgXSkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbmRfZXhuIHQgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIGQgZWxzZSBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiBkIGVsc2UgZmluZF9leG4gKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IHggfmNvbXBhcmVfa2V5ID0gT3B0aW9uLmlzX3NvbWUgKGZpbmQgdCB4IH5jb21wYXJlX2tleSlcblxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKEVtcHR5LCBrLCBkLCBfLCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIGQpIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChfLCBrLCBkLCBFbXB0eSwgXykgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIF8sIF8sIHIsIF8pIC0+IG1heF9lbHQgclxuICA7O1xuXG4gIGxldCBtYXhfZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtYXhfZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgfCBMZWFmIF8gLT4gRW1wdHlcbiAgICB8IE5vZGUgKEVtcHR5LCBfLCBfLCByLCBfKSAtPiByXG4gICAgfCBOb2RlIChsLCB4LCBkLCByLCBfKSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHggZCByXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIG1heF9lbHQgbG93ZXJfcGFydCwgbWluX2VsdCB1cHBlcl9wYXJ0IHdpdGhcbiAgICB8IE5vbmUsIF8gLT4gYE9rIHVwcGVyX3BhcnRcbiAgICB8IF8sIE5vbmUgLT4gYE9rIGxvd2VyX3BhcnRcbiAgICB8IFNvbWUgKG1heF9sb3dlciwgXyksIFNvbWUgKG1pbl91cHBlciwgdikgd2hlbiBjb21wYXJlX2tleSBtYXhfbG93ZXIgbWluX3VwcGVyIDwgMCAtPlxuICAgICAgbGV0IHVwcGVyX3BhcnRfd2l0aG91dF9taW4gPSByZW1vdmVfbWluX2VsdCB1cHBlcl9wYXJ0IGluXG4gICAgICBgT2sgKGpvaW4gfmNvbXBhcmVfa2V5IGxvd2VyX3BhcnQgbWluX3VwcGVyIHYgdXBwZXJfcGFydF93aXRob3V0X21pbilcbiAgICB8IF8gLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgPVxuICAgICgqIFRoaXMgYXNzdW1lcyB0aGF0IG1pbiA8PSBtYXgsIHdoaWNoIGlzIGNoZWNrZWQgYnkgdGhlIG91dGVyIGZ1bmN0aW9uLiAqKVxuICAgIGxldCByZWMgZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbml0XG4gICAgICB8IExlYWYgKGssIGQpIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IGsgbWluIDwgMCB8fCBjb21wYXJlX2tleSBrIG1heCA+IDBcbiAgICAgICAgdGhlbiAoKiBrIDwgbWluIHx8IGsgPiBtYXggKilcbiAgICAgICAgICBpbml0XG4gICAgICAgIGVsc2UgZiB+a2V5OmsgfmRhdGE6ZCBpbml0XG4gICAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjX21pbiA9IGNvbXBhcmVfa2V5IGsgbWluIGluXG4gICAgICAgIGlmIGNfbWluIDwgMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogaWYgayA8IG1pbiwgdGhlbiB0aGlzIG5vZGUgYW5kIGl0cyBsZWZ0IGJyYW5jaCBhcmUgb3V0c2lkZSBvdXIgcmFuZ2UgKilcbiAgICAgICAgICBnbyByIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXlcbiAgICAgICAgZWxzZSBpZiBjX21pbiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPSBtaW4sIHRoZW4gdGhpcyBub2RlJ3MgbGVmdCBicmFuY2ggaXMgb3V0c2lkZSBvdXIgcmFuZ2UgKilcbiAgICAgICAgICBnbyByIH5taW4gfm1heCB+aW5pdDooZiB+a2V5OmsgfmRhdGE6ZCBpbml0KSB+ZiB+Y29tcGFyZV9rZXlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogayA+IG1pbiAqKVxuICAgICAgICAgIGxldCB6ID0gZ28gbCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgbGV0IGNfbWF4ID0gY29tcGFyZV9rZXkgayBtYXggaW5cbiAgICAgICAgICAoKiBpZiBrID4gbWF4LCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgaWYgY19tYXggPiAwXG4gICAgICAgICAgdGhlbiB6XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgeiA9IGYgfmtleTprIH5kYXRhOmQgeiBpblxuICAgICAgICAgICAgKCogaWYgayA9IG1heCwgdGhlbiB3ZSBmb2xkIGluIHRoaXMgb25lIGxhc3QgdmFsdWUgYW5kIHdlJ3JlIGRvbmUgKilcbiAgICAgICAgICAgIGlmIGNfbWF4ID0gMCB0aGVuIHogZWxzZSBnbyByIH5taW4gfm1heCB+aW5pdDp6IH5mIH5jb21wYXJlX2tleSkpXG4gICAgaW5cbiAgICBmdW4gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IC0+XG4gICAgICBpZiBjb21wYXJlX2tleSBtaW4gbWF4IDw9IDAgdGhlbiBnbyB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgZWxzZSBpbml0XG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJlX2tleSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgICAgICAgdFxuICAgICAgICAgfm1pblxuICAgICAgICAgfm1heFxuICAgICAgICAgfmluaXQ6W11cbiAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSBsIC0+IChrZXksIGRhdGEpIDo6IGwpXG4gICAgICAgICB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IGNvbmNhdF91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICBleGNlcHRpb24gUmVtb3ZlX25vX29wXG5cbiAgbGV0IHJlbW92ZSB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgcmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wXG4gICAgICB8IExlYWYgKHYsIF8pIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IHggdiA9IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgbGVuZ3RoIC0gMVxuICAgICAgICBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBSZW1vdmVfbm9fb3BcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBjb25jYXRfdW5jaGVja2VkIGwgciwgbGVuZ3RoIC0gMVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSByZW1vdmVfbG9vcCBsIHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gcmVtb3ZlX2xvb3AgciB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICBpblxuICAgIHRyeSByZW1vdmVfbG9vcCB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgd2l0aFxuICAgIHwgUmVtb3ZlX25vX29wIC0+IHQsIGxlbmd0aFxuICA7O1xuXG4gICgqIFVzZSBleGNlcHRpb24gdG8gYXZvaWQgdHJlZS1yZWJ1aWxkIGluIG5vLW9wIGNhc2UgKilcbiAgZXhjZXB0aW9uIENoYW5nZV9ub19vcFxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgY2hhbmdlX2NvcmUgdCBrZXkgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gcmFpc2UgQ2hhbmdlX25vX29wICgqIGVxdWl2YWxlbnQgdG8gcmV0dXJuaW5nOiBFbXB0eSAqKVxuICAgICAgICAgfCBTb21lIGRhdGEgLT4gTGVhZiAoa2V5LCBkYXRhKSwgbGVuZ3RoICsgMSlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHksIGxlbmd0aCAtIDFcbiAgICAgICAgICB8IFNvbWUgZCcgLT4gTGVhZiAodiwgZCcpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IGNoYW5nZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIEVtcHR5LCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBFbXB0eSB2IGQgciwgbGVuZ3RoKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXRfdW5jaGVja2VkIGwgciwgbGVuZ3RoIC0gMVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGUgKGwsIGtleSwgZGF0YSwgciwgaCksIGxlbmd0aClcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgbCBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSBjaGFuZ2VfY29yZSByIGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICBpblxuICAgIHRyeSBjaGFuZ2VfY29yZSB0IGtleSBmIHdpdGhcbiAgICB8IENoYW5nZV9ub19vcCAtPiB0LCBsZW5ndGhcbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHVwZGF0ZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIGxldCBkYXRhID0gZiBOb25lIGluXG4gICAgICAgIExlYWYgKGtleSwgZGF0YSksIGxlbmd0aCArIDFcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZCcgPSBmIChTb21lIGQpIGluXG4gICAgICAgICAgTGVhZiAodiwgZCcpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IHVwZGF0ZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIEVtcHR5LCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBFbXB0eSB2IGQgciwgbGVuZ3RoKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkYXRhID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgIE5vZGUgKGwsIGtleSwgZGF0YSwgciwgaCksIGxlbmd0aClcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgbCBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSB1cGRhdGVfY29yZSByIGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICBpblxuICAgIHVwZGF0ZV9jb3JlIHQga2V5IGZcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBjaGFuZ2UgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgfCBTb21lIChbXSB8IFsgXyBdKSAtPiBOb25lXG4gICAgICB8IFNvbWUgKF8gOjogKF8gOjogXyBhcyBub25fZW1wdHlfdGFpbCkpIC0+IFNvbWUgbm9uX2VtcHR5X3RhaWwpXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyX2tleXMgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAodiwgXykgLT4gZiB2XG4gICAgfCBOb2RlIChsLCB2LCBfLCByLCBfKSAtPlxuICAgICAgaXRlcl9rZXlzIH5mIGw7XG4gICAgICBmIHY7XG4gICAgICBpdGVyX2tleXMgfmYgclxuICA7O1xuXG4gIGxldCByZWMgaXRlciB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIChfLCBkKSAtPiBmIGRcbiAgICB8IE5vZGUgKGwsIF8sIGQsIHIsIF8pIC0+XG4gICAgICBpdGVyIH5mIGw7XG4gICAgICBmIGQ7XG4gICAgICBpdGVyIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXJpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmRcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBpdGVyaSB+ZiBsO1xuICAgICAgZiB+a2V5OnYgfmRhdGE6ZDtcbiAgICAgIGl0ZXJpIH5mIHJcbiAgOztcblxuICBsZXQgaXRlcmlfdW50aWwgPVxuICAgIGxldCByZWMgaXRlcmlfdW50aWxfbG9vcCB0IH5mIDogQ29udGludWVfb3Jfc3RvcC50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250aW51ZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIChtYXRjaCBpdGVyaV91bnRpbF9sb29wIH5mIGwgd2l0aFxuICAgICAgICAgfCBTdG9wIC0+IFN0b3BcbiAgICAgICAgIHwgQ29udGludWUgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIC0+IFN0b3BcbiAgICAgICAgICAgIHwgQ29udGludWUgLT4gaXRlcmlfdW50aWxfbG9vcCB+ZiByKSlcbiAgICBpblxuICAgIGZ1biB0IH5mIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQub2ZfY29udGludWVfb3Jfc3RvcCAoaXRlcmlfdW50aWxfbG9vcCB0IH5mKVxuICA7O1xuXG4gIGxldCByZWMgbWFwIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgZClcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgbCcgPSBtYXAgfmYgbCBpblxuICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICBsZXQgcicgPSBtYXAgfmYgciBpblxuICAgICAgTm9kZSAobCcsIHYsIGQnLCByJywgaClcbiAgOztcblxuICBsZXQgcmVjIG1hcGkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTGVhZiAodiwgZiB+a2V5OnYgfmRhdGE6ZClcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgbCcgPSBtYXBpIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgIGxldCByJyA9IG1hcGkgfmYgciBpblxuICAgICAgTm9kZSAobCcsIHYsIGQnLCByJywgaClcbiAgOztcblxuICBsZXQgcmVjIGZvbGQgdCB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfbG9vcCB0IH5hY2MgfmYgOiAoXywgXykgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWUgYWNjXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIChtYXRjaCBmb2xkX3VudGlsX2xvb3AgbCB+YWNjIH5mIHdpdGhcbiAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICB8IENvbnRpbnVlIGFjYyAtPlxuICAgICAgICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCBhY2Mgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIGZpbmFsIC0+IFN0b3AgZmluYWxcbiAgICAgICAgICAgIHwgQ29udGludWUgYWNjIC0+IGZvbGRfdW50aWxfbG9vcCByIH5hY2MgfmYpKVxuICAgIGluXG4gICAgbWF0Y2ggZm9sZF91bnRpbF9sb29wIHQgfmFjYzppbml0IH5mIHdpdGhcbiAgICB8IENvbnRpbnVlIGFjYyAtPiBmaW5pc2ggYWNjXG4gICAgfCBTdG9wIHN0b3AgLT4gc3RvcFxuICA7O1xuXG4gIGxldCByZWMgZm9sZF9yaWdodCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkX3JpZ2h0IH5mIHIgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIGlmIGYga2V5IHRoZW4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBhY2N1IH5jb21wYXJlX2tleSBlbHNlIGFjY3UsIGxlbmd0aClcbiAgOztcblxuXG4gIGxldCBmaWx0ZXIgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgaWYgZiBkYXRhIHRoZW4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBhY2N1IH5jb21wYXJlX2tleSBlbHNlIGFjY3UsIGxlbmd0aClcbiAgOztcblxuICBsZXQgZmlsdGVyaSB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBpZiBmIH5rZXkgfmRhdGEgdGhlbiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIGFjY3UgfmNvbXBhcmVfa2V5IGVsc2UgYWNjdSwgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIG1hdGNoIGYgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjdSwgbGVuZ3RoXG4gICAgICB8IFNvbWUgYiAtPiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhOmIgYWNjdSB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjdSwgbGVuZ3RoXG4gICAgICB8IFNvbWUgYiAtPiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhOmIgYWNjdSB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkXG4gICAgICB0XG4gICAgICB+aW5pdDooKEVtcHR5LCAwKSwgKEVtcHR5LCAwKSlcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAocGFpcjEsIHBhaXIyKSAtPlxuICAgICAgICBtYXRjaCAoZiB+a2V5IH5kYXRhIDogXyBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IHggLT5cbiAgICAgICAgICBsZXQgdCwgbGVuZ3RoID0gcGFpcjEgaW5cbiAgICAgICAgICBzZXQgdCB+a2V5IH5kYXRhOnggfmNvbXBhcmVfa2V5IH5sZW5ndGgsIHBhaXIyXG4gICAgICAgIHwgU2Vjb25kIHkgLT5cbiAgICAgICAgICBsZXQgdCwgbGVuZ3RoID0gcGFpcjIgaW5cbiAgICAgICAgICBwYWlyMSwgc2V0IHQgfmtleSB+ZGF0YTp5IH5jb21wYXJlX2tleSB+bGVuZ3RoKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBwYXJ0aXRpb25fbWFwaSB0IH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIHBhcnRpdGlvbl9tYXBpIHQgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgaWYgZiB+a2V5IH5kYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIHBhcnRpdGlvbl9tYXBpIHQgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBpZiBmIGRhdGEgdGhlbiBGaXJzdCBkYXRhIGVsc2UgU2Vjb25kIGRhdGEpXG4gIDs7XG5cbiAgbW9kdWxlIEVudW0gPSBzdHJ1Y3RcbiAgICB0eXBlIGluY3JlYXNpbmdcbiAgICB0eXBlIGRlY3JlYXNpbmdcblxuICAgIHR5cGUgKCdrLCAndiwgJ2RpcmVjdGlvbikgdCA9XG4gICAgICB8IEVuZFxuICAgICAgfCBNb3JlIG9mICdrICogJ3YgKiAoJ2ssICd2KSB0cmVlICogKCdrLCAndiwgJ2RpcmVjdGlvbikgdFxuXG4gICAgbGV0IHJlYyBjb25zIHQgKGUgOiAoXywgXywgaW5jcmVhc2luZykgdCkgOiAoXywgXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gY29ucyBsIChNb3JlICh2LCBkLCByLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb25zX3JpZ2h0IHQgKGUgOiAoXywgXywgZGVjcmVhc2luZykgdCkgOiAoXywgXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gY29uc19yaWdodCByIChNb3JlICh2LCBkLCBsLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RyZWUgdHJlZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID0gY29ucyB0cmVlIEVuZFxuICAgIGxldCBvZl90cmVlX3JpZ2h0IHRyZWUgOiAoXywgXywgZGVjcmVhc2luZykgdCA9IGNvbnNfcmlnaHQgdHJlZSBFbmRcblxuICAgIGxldCBzdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBkLCBFbXB0eSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChfLCB2LCBfLCByLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPCAwIC0+IGxvb3AgciBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbG9vcCBsIChNb3JlICh2LCBkLCByLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBkLCBFbXB0eSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBfLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPiAwIC0+IGxvb3AgbCBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbG9vcCByIChNb3JlICh2LCBkLCBsLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2RhdGEgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgICBlbHNlIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgICAgICAgICAgIHRoZW4gbG9vcCBlMSBlMlxuICAgICAgICAgICAgZWxzZSBsb29wIChjb25zIHIxIGUxKSAoY29ucyByMiBlMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgZGF0YV9lcXVhbCB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IHRydWVcbiAgICAgICAgfCBFbmQsIF8gfCBfLCBFbmQgLT4gZmFsc2VcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGNvbXBhcmVfa2V5IHYxIHYyID0gMFxuICAgICAgICAgICYmIGRhdGFfZXF1YWwgZDEgZDJcbiAgICAgICAgICAmJiBpZiBwaHlzX2VxdWFsIHIxIHIyIHRoZW4gbG9vcCBlMSBlMiBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmb2xkIH5pbml0IH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+IGluaXRcbiAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBsZXQgbmV4dCA9IGYgfmtleSB+ZGF0YSBpbml0IGluXG4gICAgICAgIGZvbGQgKGNvbnMgdHJlZSBlbnVtKSB+aW5pdDpuZXh0IH5mXG4gICAgOztcblxuICAgIGxldCBmb2xkMiBjb21wYXJlX2tleSB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgY3VyciA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gY3VyclxuICAgICAgICB8IEVuZCwgXyAtPlxuICAgICAgICAgIGZvbGQgdDIgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYFJpZ2h0IGRhdGEpIGFjYylcbiAgICAgICAgfCBfLCBFbmQgLT5cbiAgICAgICAgICBmb2xkIHQxIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBMZWZ0IGRhdGEpIGFjYylcbiAgICAgICAgfCBNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMSB+ZGF0YTooYEJvdGggKHYxLCB2MikpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSBuZXh0KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMSB+ZGF0YTooYExlZnQgdjEpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHQyIG5leHQpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMiB+ZGF0YTooYFJpZ2h0IHYyKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIHQxIChjb25zIHRyZWUyIGVudW0yKSBuZXh0KVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDIgaW5pdFxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsID1cbiAgICAgIGxldCBzdGVwIHN0YXRlID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrZXksIGBSaWdodCBkYXRhKSwgKEVuZCwgY29ucyB0cmVlIGVudW0pKVxuICAgICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSksIEVuZCAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrZXksIGBMZWZ0IGRhdGEpLCAoY29ucyB0cmVlIGVudW0sIEVuZCkpXG4gICAgICAgIHwgKE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHRfc3RhdGUgPVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICAgICAgICAgIHRoZW4gZW51bTEsIGVudW0yXG4gICAgICAgICAgICAgIGVsc2UgY29ucyB0cmVlMSBlbnVtMSwgY29ucyB0cmVlMiBlbnVtMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGRhdGFfZXF1YWwgdjEgdjJcbiAgICAgICAgICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5Ta2lwIG5leHRfc3RhdGVcbiAgICAgICAgICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGsxLCBgVW5lcXVhbCAodjEsIHYyKSksIG5leHRfc3RhdGUpKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiBTZXF1ZW5jZS5TdGVwLllpZWxkICgoazEsIGBMZWZ0IHYxKSwgKGNvbnMgdHJlZTEgZW51bTEsIHJpZ2h0KSlcbiAgICAgICAgICBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrMiwgYFJpZ2h0IHYyKSwgKGxlZnQsIGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OihvZl90cmVlIHQxLCBvZl90cmVlIHQyKSB+ZjpzdGVwXG4gICAgOztcblxuICAgIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgICBsZXQgcmVtb3ZlIGFjYyBrIHYgPSBmIGFjYyAoaywgYExlZnQgdikgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsZWZ0IHJpZ2h0IGFjYyA9XG4gICAgICAgIG1hdGNoIGxlZnQsIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBFbmQsIGVudW0gLT4gZm9sZCBlbnVtIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpXG4gICAgICAgIHwgZW51bSwgRW5kIC0+IGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSBpZiBkYXRhX2VxdWFsIHYxIHYyIHRoZW4gYWNjIGVsc2UgZiBhY2MgKGsxLCBgVW5lcXVhbCAodjEsIHYyKSkgaW5cbiAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgIHRoZW4gbG9vcCBlbnVtMSBlbnVtMiBhY2NcbiAgICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpIGFjYylcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgazEgdjEgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHJpZ2h0IGFjYylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIGsyIHYyIGluXG4gICAgICAgICAgICBsb29wIGxlZnQgKGNvbnMgdHJlZTIgZW51bTIpIGFjYylcbiAgICAgIGluXG4gICAgICBsb29wIChvZl90cmVlIHQxKSAob2ZfdHJlZSB0MikgaW5pdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHYsIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrLCB2KSwgRW51bS5jb25zIHQgZSlcbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWUgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkICgoaywgdiksIEVudW0uY29uc19yaWdodCB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2tleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl90cmVlX3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nX2tleSlcbiAgICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/a2V5c19sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGluY2x1c2l2ZV9ib3VuZCBzaWRlIHQgYm91bmQgPVxuICAgICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBsLCBtYXliZSwgciA9IHNwbGl0IHQgYm91bmQgfmNvbXBhcmVfa2V5IGluXG4gICAgICBsZXQgdCA9IHNpZGUgKGwsIHIpIGluXG4gICAgICBtYXRjaCBtYXliZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIChrZXksIGRhdGEpIC0+IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXlcbiAgICBpblxuICAgIG1hdGNoIG9yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nX2tleSAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBrZXlzX2xlc3Nfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIGZzdCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXk6a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nX2tleSAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXk6a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MilcbiAgOztcblxuICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBFbnVtLmVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSAoRW51bS5vZl90cmVlIHQxKSAoRW51bS5vZl90cmVlIHQyKVxuICA7O1xuXG4gIGxldCBpdGVyMiB0MSB0MiB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDJcbiAgICAgIGNvbXBhcmVfa2V5XG4gICAgICAoRW51bS5vZl90cmVlIHQxKVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MilcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgKCkgLT4gZiB+a2V5IH5kYXRhKVxuICA7O1xuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDIgY29tcGFyZV9rZXkgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MikgfmYgfmluaXRcbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAoKiBbRW51bS5mb2xkX2RpZmZzXSBpcyBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwgYnV0IGlzIGNvbnNpZGVyYWJseVxuICAgICAgIHNsb3dlciwgYXMgd2UgaGF2ZSB0byBhbGxvY2F0ZSBxdWl0ZSBhIGxvdCBvZiBzdGF0ZSB0byB0cmFjayBlbnVtZXJhdGlvbiBvZiBhIHRyZWUuXG4gICAgICAgQXZvaWQgaWYgd2UgY2FuLlxuICAgICopXG4gICAgbGV0IHNsb3cgeCB5IH5pbml0ID0gRW51bS5mb2xkX3N5bW1ldHJpY19kaWZmIHggeSB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmYgfmluaXQgaW5cbiAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgbGV0IGRlbHRhIGFjYyBrIHYgdicgPSBpZiBkYXRhX2VxdWFsIHYgdicgdGhlbiBhY2MgZWxzZSBmIGFjYyAoaywgYFVuZXF1YWwgKHYsIHYnKSkgaW5cbiAgICAoKiBJZiB0d28gdHJlZXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXQgdGhlIHJvb3QgKGFuZCB0aGUgc2FtZSBrZXksIGlmIHRoZXkncmVcbiAgICAgICBbTm9kZV1zKSB3ZSBjYW4gdHJpdmlhbGx5IGRpZmYgZWFjaCBzdWJwYXJ0IGluIG9idmlvdXMgd2F5cy4gKilcbiAgICBsZXQgcmVjIGxvb3AgdCB0JyBhY2MgPVxuICAgICAgaWYgcGh5c19lcXVhbCB0IHQnXG4gICAgICB0aGVuIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQsIHQnIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgbmV3X3ZhbHMgLT5cbiAgICAgICAgICBmb2xkIG5ld192YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpXG4gICAgICAgIHwgb2xkX3ZhbHMsIEVtcHR5IC0+XG4gICAgICAgICAgZm9sZCBvbGRfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IExlYWYgKGssIHYpLCBMZWFmIChrJywgdicpIC0+XG4gICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IGsgaycgd2l0aFxuICAgICAgICAgICB8IHggd2hlbiB4ID0gMCAtPiBkZWx0YSBhY2MgayB2IHYnXG4gICAgICAgICAgIHwgeCB3aGVuIHggPCAwIC0+XG4gICAgICAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgayB2IGluXG4gICAgICAgICAgICAgYWRkIGFjYyBrJyB2J1xuICAgICAgICAgICB8IF8gKCogd2hlbiB4ID4gMCAqKSAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIGsnIHYnIGluXG4gICAgICAgICAgICAgcmVtb3ZlIGFjYyBrIHYpXG4gICAgICAgIHwgTm9kZSAobCwgaywgdiwgciwgXyksIE5vZGUgKGwnLCBrJywgdicsIHInLCBfKSB3aGVuIGNvbXBhcmVfa2V5IGsgaycgPSAwIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IGxvb3AgbCBsJyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gZGVsdGEgYWNjIGsgdiB2JyBpblxuICAgICAgICAgIGxvb3AgciByJyBhY2NcbiAgICAgICAgKCogT3VyIHJvb3RzIGFyZW4ndCB0aGUgc2FtZSBrZXkuIEZhbGxiYWNrIHRvIHRoZSBzbG93IG1vZGUuIFRyZWVzIHdpdGggc21hbGxcbiAgICAgICAgICAgZGlmZnMgd2lsbCBvbmx5IGRvIHRoaXMgb24gdmVyeSBzbWFsbCBwYXJ0cyBvZiB0aGUgdHJlZSAoaG9wZWZ1bGx5IC0gaWYgdGhlXG4gICAgICAgICAgIG92ZXJhbGwgcm9vdCBpcyByZWJhbGFuY2VkLCB3ZSdsbCBlYXQgdGhlIHdob2xlIGNvc3QsIHVuZm9ydHVuYXRlbHkuKSAqKVxuICAgICAgICB8IE5vZGUgXywgTm9kZSBfIHwgTm9kZSBfLCBMZWFmIF8gfCBMZWFmIF8sIE5vZGUgXyAtPiBzbG93IHQgdCcgfmluaXQ6YWNjKVxuICAgIGluXG4gICAgbG9vcCB0MSB0MiBpbml0XG4gIDs7XG5cbiAgbGV0IHJlYyBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKGwsIF8sIF8sIHIsIF8pIC0+IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIGZvbGRcbiAgICAgIHRcbiAgICAgIH5pbml0OihoYXNoX2ZvbGRfaW50IHN0YXRlIChsZW5ndGggdCkpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgc3RhdGUgLT4gaGFzaF9mb2xkX2RhdGEgKGhhc2hfZm9sZF9rZXkgc3RhdGUga2V5KSBkYXRhKVxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleSB+ZGF0YTpfIGxpc3QgLT4ga2V5IDo6IGxpc3QpIHQgfmluaXQ6W11cbiAgbGV0IGRhdGEgdCA9IGZvbGRfcmlnaHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIHQgfmluaXQ6W11cblxuICBtb2R1bGUgdHlwZSBGb2xkYWJsZSA9IHNpZ1xuICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiKSAtPiAnYlxuICBlbmRcblxuICBtb2R1bGUgT2ZfZm9sZGFibGUgKE0gOiBGb2xkYWJsZSkgPSBzdHJ1Y3RcbiAgICBsZXQgb2ZfZm9sZGFibGVfZm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgTS5mb2xkIGZvbGRhYmxlIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biAoYWNjdW0sIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgbGV0IHByZXZfZGF0YSA9XG4gICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5pdFxuICAgICAgICAgIHwgU29tZSBwcmV2IC0+IHByZXZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRhdGEgPSBmIHByZXZfZGF0YSBkYXRhIGluXG4gICAgICAgIHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5KVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfcmVkdWNlIGZvbGRhYmxlIH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBNLmZvbGQgZm9sZGFibGUgfmluaXQ6KGVtcHR5LCAwKSB+ZjooZnVuIChhY2N1bSwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICBsZXQgbmV3X2RhdGEgPVxuICAgICAgICAgIG1hdGNoIGZpbmQgYWNjdW0ga2V5IH5jb21wYXJlX2tleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBmIHByZXYgZGF0YVxuICAgICAgICBpblxuICAgICAgICBzZXQgYWNjdW0gfmxlbmd0aCB+a2V5IH5kYXRhOm5ld19kYXRhIH5jb21wYXJlX2tleSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleSA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgTS5mb2xkIGZvbGRhYmxlIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biAodCwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgbGV0ICgoXywgbGVuZ3RoJykgYXMgYWNjKSA9IHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCcgdGhlbiByLnJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KSBlbHNlIGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgYE9rIG1hcClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX29yX2Vycm9yIGZvbGRhYmxlIH5jb21wYXJhdG9yID1cbiAgICAgIG1hdGNoIG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX29yX2Vycm9yOiBkdXBsaWNhdGUga2V5XCIpXG4gICAgICAgICAga2V5XG4gICAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX2V4biBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgKFwiTWFwLm9mX1wiIF4gTS5uYW1lIF4gXCJfZXhuOiBkdXBsaWNhdGUga2V5XCIpIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9hbGlzdCA9IE9mX2ZvbGRhYmxlIChzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gXCJhbGlzdFwiXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGZvbGQgPSBMaXN0LmZvbGRcbiAgICBlbmQpXG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9mb2xkXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9yZWR1Y2VcbiAgbGV0IG9mX2FsaXN0ID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfb3JfZXJyb3JcbiAgbGV0IG9mX2FsaXN0X2V4biA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX2V4blxuXG4gICgqIFJldmVyc2UgdGhlIGlucHV0LCB0aGVuIGZvbGQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBUaGUgcmVzdWx0aW5nIG1hcCB1c2VzIHRoZSBmaXJzdFxuICAgICBpbnN0YW5jZSBvZiBlYWNoIGtleSBmcm9tIHRoZSBpbnB1dCBsaXN0LiBUaGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgZWxlbWVudHMgaW4gZWFjaFxuICAgICBvdXRwdXQgbGlzdCBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgaW5wdXQgbGlzdC4gKilcbiAgbGV0IG9mX2ZvbGRhYmxlX211bHRpIGZvbGRhYmxlIH5mb2xkIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFsaXN0ID0gZm9sZCBmb2xkYWJsZSB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpIGluXG4gICAgb2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXkgPVxuICAgIG9mX2ZvbGRhYmxlX211bHRpIGFsaXN0IH5mb2xkOkxpc3QuZm9sZCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBtb2R1bGUgT2Zfc2VxdWVuY2UgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwic2VxdWVuY2VcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICAgIGxldCBmb2xkID0gU2VxdWVuY2UuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2Zfc2VxdWVuY2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfZXhuXG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHNlcXVlbmNlIH5jb21wYXJlX2tleSA9XG4gICAgb2ZfZm9sZGFibGVfbXVsdGkgc2VxdWVuY2UgfmZvbGQ6U2VxdWVuY2UuZm9sZCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXIgdCB+ZjooZnVuIGRhdGEgLT4gaWYgbm90IChmIGRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSlcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBub3QgKGYgfmtleSB+ZGF0YSkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgICB0cnVlKVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIGYgZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbiAgOztcblxuICBsZXQgdG9fYWxpc3QgPyhrZXlfb3JkZXIgPSBgSW5jcmVhc2luZykgdCA9XG4gICAgbWF0Y2gga2V5X29yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgeCAtPiAoa2V5LCBkYXRhKSA6OiB4KVxuICAgIHwgYERlY3JlYXNpbmcgLT4gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gIDs7XG5cbiAgbGV0IG1lcmdlIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGVsdHMgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOihsZW5ndGggdDEgKyBsZW5ndGggdDIpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIyIHQxIHQyIH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXkgfmRhdGE6dmFsdWVzIC0+XG4gICAgICBtYXRjaCBmIH5rZXkgdmFsdWVzIHdpdGhcbiAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICBVbmlmb3JtX2FycmF5LnNldCBlbHRzICFpIChrZXksIHZhbHVlKTtcbiAgICAgICAgaW5jciBpXG4gICAgICB8IE5vbmUgLT4gKCkpO1xuICAgIGxldCBsZW4gPSAhaSBpblxuICAgIGxldCBnZXQgaSA9IFVuaWZvcm1fYXJyYXkuZ2V0IGVsdHMgaSBpblxuICAgIGxldCB0cmVlID0gb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZjpnZXQgaW5cbiAgICB0cmVlLCBsZW5cbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkID1cbiAgICBsZXQgbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoX2xhcmdlIHRfbGFyZ2UgdF9zbWFsbCB+Y2FsbCB+Y29tYmluZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgZm9sZCB0X3NtYWxsIH5pbml0Oih0X2xhcmdlLCBsZW5ndGhfbGFyZ2UpIH5mOihmdW4gfmtleSB+ZGF0YTpkYXRhJyAodCwgbGVuZ3RoKSAtPlxuICAgICAgICB1cGRhdGUgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGRhdGEnXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gY2FsbCBjb21iaW5lIH5rZXkgZGF0YSBkYXRhJykpXG4gICAgaW5cbiAgICBsZXQgY2FsbCBmIH5rZXkgeCB5ID0gZiB+a2V5IHggeSBpblxuICAgIGxldCBzd2FwIGYgfmtleSB4IHkgPSBmIH5rZXkgeSB4IGluXG4gICAgZnVuIHQxIHQyIH5sZW5ndGgxIH5sZW5ndGgyIH5jb21iaW5lIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgbGVuZ3RoMiA8PSBsZW5ndGgxXG4gICAgICB0aGVuIG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aDEgdDEgdDIgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aDIgdDIgdDEgfmNhbGw6c3dhcCB+Y29tYmluZSB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBtb2R1bGUgQ2xvc2VzdF9rZXlfaW1wbCA9IHN0cnVjdFxuICAgICgqIFttYXJrZXJdIGFuZCBbcmVwYWNrYWdlXSBhbGxvdyB1cyB0byBjcmVhdGUgXCJsb2dpY2FsXCIgb3B0aW9ucyB3aXRob3V0IGFjdHVhbGx5XG4gICAgICAgYWxsb2NhdGluZyBhbnkgb3B0aW9ucy4gUGFzc2luZyBbRm91bmQga2V5IHZhbHVlXSB0byBhIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICBwYXNzaW5nIFtTb21lIChrZXksIHZhbHVlKV07IHBhc3NpbmcgW01pc3NpbmcgKCkgKCldIGlzIGVxdWl2YWxlbnQgdG8gcGFzc2luZ1xuICAgICAgIFtOb25lXS4gKilcbiAgICB0eXBlICgnaywgJ3YsICdrX29wdCwgJ3Zfb3B0KSBtYXJrZXIgPVxuICAgICAgfCBNaXNzaW5nIDogKCdrLCAndiwgdW5pdCwgdW5pdCkgbWFya2VyXG4gICAgICB8IEZvdW5kIDogKCdrLCAndiwgJ2ssICd2KSBtYXJrZXJcblxuICAgIGxldCByZXBhY2thZ2VcbiAgICAgICAgICAodHlwZSBrIHYga19vcHQgdl9vcHQpXG4gICAgICAgICAgKG1hcmtlciA6IChrLCB2LCBrX29wdCwgdl9vcHQpIG1hcmtlcilcbiAgICAgICAgICAoayA6IGtfb3B0KVxuICAgICAgICAgICh2IDogdl9vcHQpXG4gICAgICA6IChrICogdikgb3B0aW9uXG4gICAgICA9XG4gICAgICBtYXRjaCBtYXJrZXIgd2l0aFxuICAgICAgfCBNaXNzaW5nIC0+IE5vbmVcbiAgICAgIHwgRm91bmQgLT4gU29tZSAoaywgdilcbiAgICA7O1xuXG4gICAgKCogVGhlIHR5cGUgc2lnbmF0dXJlIGlzIGV4cGxpY2l0IGhlcmUgdG8gYWxsb3cgcG9seW1vcnBoaWMgcmVjdXJzaW9uLiAqKVxuICAgIGxldCByZWMgbG9vcCA6XG4gICAgICAnayAndiAna19vcHQgJ3Zfb3B0LlxuICAgICAgKCdrLCAndikgdHJlZVxuICAgICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgICAgLT4gJ2tcbiAgICAgIC0+IGNvbXBhcmVfa2V5OignayAtPiAnayAtPiBpbnQpXG4gICAgICAtPiAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyXG4gICAgICAtPiAna19vcHRcbiAgICAgIC0+ICd2X29wdFxuICAgICAgLT4gKCdrICogJ3YpIG9wdGlvblxuICAgICAgPVxuICAgICAgZnVuIHQgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgfCBMZWFmIChrJywgdicpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICAgICAgaWYgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gLT4gYyA+PSAwXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT4gYyA+IDBcbiAgICAgICAgICAgIHwgYExlc3Nfb3JfZXF1YWxfdG8gLT4gYyA8PSAwXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT4gYyA8IDBcbiAgICAgICAgICB0aGVuIFNvbWUgKGsnLCB2JylcbiAgICAgICAgICBlbHNlIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTm9kZSAobCwgaycsIHYnLCByLCBfKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIGMgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBUaGlzIGlzIGEgYmFzZSBjYXNlIChubyByZWN1cnNpdmUgY2FsbCkuICopXG4gICAgICAgICAgICBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IFNvbWUgKGsnLCB2JylcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBpc19lbXB0eSByIHRoZW4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgZWxzZSBtaW5fZWx0IHJcbiAgICAgICAgICAgIHwgYExlc3NfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBpc19lbXB0eSBsIHRoZW4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgZWxzZSBtYXhfZWx0IGwpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBXZSBhcmUgZ3VhcmFudGVlZCBoZXJlIHRoYXQgaycgPD4gay4gKilcbiAgICAgICAgICAgICgqIFRoaXMgaXMgdGhlIG9ubHkgcmVjdXJzaXZlIGNhc2UuICopXG4gICAgICAgICAgICBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA+IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIGwgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCByIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBjIDwgMFxuICAgICAgICAgICAgICB0aGVuIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgRm91bmQgaycgdidcbiAgICAgICAgICAgICAgZWxzZSBsb29wIGwgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBjbG9zZXN0X2tleSB0IGRpciBrIH5jb21wYXJlX2tleSA9IGxvb3AgdCBkaXIgayB+Y29tcGFyZV9rZXkgTWlzc2luZyAoKSAoKVxuICBlbmRcblxuICBsZXQgY2xvc2VzdF9rZXkgPSBDbG9zZXN0X2tleV9pbXBsLmNsb3Nlc3Rfa2V5XG5cbiAgbGV0IHJlYyByYW5rIHQgayB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaycsIF8pIC0+IGlmIGNvbXBhcmVfa2V5IGsnIGsgPSAwIHRoZW4gU29tZSAwIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaycsIF8sIHIsIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIFNvbWUgKGxlbmd0aCBsKVxuICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgdGhlbiByYW5rIGwgayB+Y29tcGFyZV9rZXlcbiAgICAgIGVsc2UgT3B0aW9uLm1hcCAocmFuayByIGsgfmNvbXBhcmVfa2V5KSB+ZjooZnVuIHJhbmsgLT4gcmFuayArIDEgKyBsZW5ndGggbClcbiAgOztcblxuICAoKiB0aGlzIGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIFtTZXF1ZW5jZV0gaW50ZXJmYWNlIGJ1dCB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uXG4gICAgIGFsbG9jYXRlcyBvbmx5IDIgd29yZHMgYW5kIGRvZXNuJ3QgcmVxdWlyZSB3cml0ZS1iYXJyaWVyICopXG4gIGxldCByZWMgbnRoJyBudW1fdG9fc2VhcmNoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+XG4gICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgIGVsc2UgKFxuICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgIE5vbmUpXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgKG1hdGNoIG50aCcgbnVtX3RvX3NlYXJjaCBsIHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHNvbWVcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGlmICFudW1fdG9fc2VhcmNoID0gMFxuICAgICAgICAgdGhlbiBTb21lIChrLCB2KVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGRlY3IgbnVtX3RvX3NlYXJjaDtcbiAgICAgICAgICAgbnRoJyBudW1fdG9fc2VhcmNoIHIpKVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gbnRoJyAocmVmIG4pIHRcblxuXG4gIGxldCByZWMgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgZiB+a2V5OmsgfmRhdGE6diB0aGVuIFNvbWUgKGssIHYpIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIGlmIGYgfmtleTprIH5kYXRhOnZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIChrLCB2KVxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyByIH5mXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgciB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIChrLCB2KVxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8IDApXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPj0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPD0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID4gMClcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB+a2V5IH5kYXRhID0gbm90IChpc19sZWZ0IH5rZXkgfmRhdGEpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfcmlnaHRcbiAgOztcblxuICAoKiBbYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRdIGZpbmRzIHRoZSBrZXkgaW4gW3RdIHdoaWNoIHNhdGlzZmllcyBbbWF5YmVfYm91bmRdXG4gICAgIGFuZCB0aGUgcmVsZXZhbnQgb25lIG9mIFtpZl9leGNsdXNpdmVdIG9yIFtpZl9pbmNsdXNpdmVdLCBhcyBqdWRnZWQgYnkgW2NvbXBhcmVdLiAqKVxuICBsZXQgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSB+aWZfZXhjbHVzaXZlIH5pZl9pbmNsdXNpdmUgPVxuICAgIGxldCBmaW5kX2JvdW5kIHQgaG93IGJvdW5kIH5jb21wYXJlIDogXyBNYXliZV9ib3VuZC50IG9wdGlvbiA9XG4gICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIHQgaG93IGJvdW5kIH5jb21wYXJlIHdpdGhcbiAgICAgIHwgU29tZSAoYm91bmQsIF8pIC0+IFNvbWUgKEluY2wgYm91bmQpXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggKG1heWJlX2JvdW5kIDogXyBNYXliZV9ib3VuZC50KSB3aXRoXG4gICAgfCBFeGNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9leGNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IEluY2wgYm91bmQgLT4gZmluZF9ib3VuZCB0IGlmX2luY2x1c2l2ZSBib3VuZCB+Y29tcGFyZVxuICAgIHwgVW5ib3VuZGVkIC0+IFNvbWUgVW5ib3VuZGVkXG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kc10gZmluZHMgdGhlIChub3QgbmVjZXNzYXJpbHkgZGlzdGluY3QpIGtleXMgaW4gW3RdXG4gICAgIHdoaWNoIG1vc3QgY2xvc2VseSBhcHByb2FjaCAoYnV0IGRvIG5vdCBjcm9zcykgW2xvd2VyX2JvdW5kXSBhbmQgW3VwcGVyX2JvdW5kXSwgYXNcbiAgICAganVkZ2VkIGJ5IFtjb21wYXJlXS4gSXQgcmV0dXJucyBbTm9uZV0gaWYgbm8ga2V5cyBpbiBbdF0gYXJlIHdpdGhpbiB0aGF0IHJhbmdlLiAqKVxuICBsZXQgYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IGZpbmRfbG93ZXJfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSA9XG4gICAgICBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZFxuICAgICAgICB0XG4gICAgICAgIG1heWJlX2JvdW5kXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIH5pZl9leGNsdXNpdmU6YEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhblxuICAgICAgICB+aWZfaW5jbHVzaXZlOmBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIGxldCBmaW5kX3VwcGVyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBMYXN0X3N0cmljdGx5X2xlc3NfdGhhblxuICAgICAgICB+aWZfaW5jbHVzaXZlOmBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90b1xuICAgIGluXG4gICAgbWF0Y2ggZmluZF9sb3dlcl9ib3VuZCB0IGxvd2VyX2JvdW5kIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBsb3dlcl9ib3VuZCAtPlxuICAgICAgKG1hdGNoIGZpbmRfdXBwZXJfYm91bmQgdCB1cHBlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgdXBwZXJfYm91bmQgLT4gU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSlcbiAgOztcblxuICB0eXBlICgnaywgJ3YpIGFjYyA9XG4gICAgeyBtdXRhYmxlIGJhZF9rZXkgOiAnayBvcHRpb25cbiAgICA7IG11dGFibGUgbWFwX2xlbmd0aCA6ICgnaywgJ3YpIHQgKiBpbnRcbiAgICB9XG5cbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhY2MgPSB7IGJhZF9rZXkgPSBOb25lOyBtYXBfbGVuZ3RoID0gZW1wdHksIDAgfSBpblxuICAgIGl0ZXJpIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgbGV0IG1hcCwgbGVuZ3RoID0gYWNjLm1hcF9sZW5ndGggaW5cbiAgICAgIGxldCAoKF8sIGxlbmd0aCcpIGFzIHBhaXIpID0gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBtYXAgfmNvbXBhcmVfa2V5IGluXG4gICAgICBpZiBsZW5ndGggPSBsZW5ndGgnICYmIE9wdGlvbi5pc19ub25lIGFjYy5iYWRfa2V5XG4gICAgICB0aGVuIGFjYy5iYWRfa2V5IDwtIFNvbWUga2V5XG4gICAgICBlbHNlIGFjYy5tYXBfbGVuZ3RoIDwtIHBhaXIpO1xuICAgIG1hdGNoIGFjYy5iYWRfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9rIGFjYy5tYXBfbGVuZ3RoXG4gICAgfCBTb21lIGtleSAtPiBgRHVwbGljYXRlX2tleSBrZXlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSB+KGNvbXBhcmF0b3IgOiBfIENvbXBhcmF0b3IudCkgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuY3JlYXRlIFwiTWFwLm9mX2l0ZXJpX2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwIHNleHAgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwKSBzZXhwIGluXG4gICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgbWF0Y2ggb2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgICBMaXN0Lml0ZXIyX29rIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBrMiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiTWFwLnRfb2Zfc2V4cF9kaXJlY3Q6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgIGxldCBmIH5rZXkgfmRhdGEgYWNjID0gU2V4cC5MaXN0IFsgc2V4cF9vZl9rZXkga2V5OyBzZXhwX29mX3ZhbHVlIGRhdGEgXSA6OiBhY2MgaW5cbiAgICBTZXhwLkxpc3QgKGZvbGRfcmlnaHQgfmYgdCB+aW5pdDpbXSlcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBsZXQgb2tzLCAoZXJyb3JfdHJlZSwgXykgPSBwYXJ0aXRpb25fbWFwIHQgfmNvbXBhcmVfa2V5IH5mOlJlc3VsdC50b19laXRoZXIgaW5cbiAgICBpZiBpc19lbXB0eSBlcnJvcl90cmVlXG4gICAgdGhlbiBPayBva3NcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yX3MgKHNleHBfb2ZfdCBzZXhwX29mX2tleSBFcnJvci5zZXhwX29mX3QgZXJyb3JfdHJlZSlcbiAgOztcblxuICBsZXQgbWFwX2tleXNcbiAgICAgICAgdDFcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3I6KHsgY29tcGFyZSA9IGNvbXBhcmVfa2V5OyBzZXhwX29mX3QgPSBzZXhwX29mX2tleSB9IDogXyBDb21wYXJhdG9yLnQpXG4gICAgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgYE9rXG4gICAgICAgIChmb2xkIHQxIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biB+a2V5IH5kYXRhICh0MiwgbGVuZ3RoKSAtPlxuICAgICAgICAgICBsZXQga2V5ID0gZiBrZXkgaW5cbiAgICAgICAgICAgdHJ5IGFkZF9leG5faW50ZXJuYWwgdDIgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgd2l0aFxuICAgICAgICAgICB8IER1cGxpY2F0ZSAtPiByZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSkpKSlcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgfmNvbXBhcmF0b3IgPVxuICAgIG1hdGNoIG1hcF9rZXlzIHQgfmYgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIHJlc3VsdCAtPiByZXN1bHRcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiTWFwLm1hcF9rZXlzX2V4bjogZHVwbGljYXRlIGtleVwiIFsgXCJrZXlcIiwga2V5IHw+IHNleHBfb2Zfa2V5IF0pXG4gIDs7XG5lbmRcblxudHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdrLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICgnaywgJ3YpIFRyZWUwLnRcbiAgOyBsZW5ndGggOiBpbnRcbiAgfVxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlID0gKCdrLCAndikgVHJlZTAudFxuXG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuXG5sZXQgbGlrZSB7IHRyZWUgPSBfOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gKHRyZWUsIGxlbmd0aCkgPVxuICB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgbGlrZTIgeCAoeSwgeikgPSBsaWtlIHggeSwgbGlrZSB4IHpcblxubGV0IGxpa2VfbWF5YmVfbm9fb3AgKHsgdHJlZSA9IG9sZF90cmVlOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gYXMgb2xkX3QpICh0cmVlLCBsZW5ndGgpXG4gID1cbiAgaWYgcGh5c19lcXVhbCBvbGRfdHJlZSB0cmVlIHRoZW4gb2xkX3QgZWxzZSB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgd2l0aF9zYW1lX2xlbmd0aCB7IHRyZWUgPSBfOyBjb21wYXJhdG9yOyBsZW5ndGggfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxubGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG4oKiBFeHBvc2luZyB0aGlzIGZ1bmN0aW9uIHdvdWxkIG1ha2UgaXQgdmVyeSBlYXN5IGZvciB0aGUgaW52YXJpYW50c1xuICAgb2YgdGhpcyBtb2R1bGUgdG8gYmUgYnJva2VuLiAqKVxubGV0IG9mX3RyZWVfdW5zYWZlIH5jb21wYXJhdG9yIH5sZW5ndGggdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoIH1cblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcblxuICBsZXQgaW52YXJpYW50cyB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpICYmIFRyZWUwLmxlbmd0aCB0LnRyZWUgPSB0Lmxlbmd0aFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2UgdCAoVHJlZTAuc2V0IHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5sZW5ndGg6dC5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfZXhuX2ludGVybmFsXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5sZW5ndGg6dC5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgcmVzdWx0IC0+IGBPayByZXN1bHRcbiAgICB8IGV4Y2VwdGlvbiBEdXBsaWNhdGUgLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX211bHRpIHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5ID1cbiAgICBsaWtlIHQgKFRyZWUwLnJlbW92ZV9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB0IGtleSA9IFRyZWUwLmZpbmRfbXVsdGkgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+ZiA9XG4gICAgbGlrZSB0IChUcmVlMC5jaGFuZ2UgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiA9XG4gICAgbGlrZSB0IChUcmVlMC51cGRhdGUgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX2V4blxuICAgICAgdC50cmVlXG4gICAgICBrZXlcbiAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGZpbmQgdCBrZXkgPSBUcmVlMC5maW5kIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCByZW1vdmUgdCBrZXkgPVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIHRcbiAgICAgIChUcmVlMC5yZW1vdmUgdC50cmVlIGtleSB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IG1lbSB0IGtleSA9IFRyZWUwLm1lbSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQudHJlZSB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIHQxIHQyIH5mID0gVHJlZTAuaXRlcjIgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIGxldCBtYXAgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwIHQudHJlZSB+ZilcbiAgbGV0IG1hcGkgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwaSB0LnRyZWUgfmYpXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF91bnRpbCB0LnRyZWUgfmYgfmluaXRcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MS50cmVlIHQyLnRyZWUgfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyX2tleXMgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyaSB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXJpIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXJfbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyX21hcGkgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gICAgbGlrZTIgdCAoVHJlZTAucGFydGl0aW9uaV90ZiB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+ZjoobGlrZSB0KVxuICAgICAgKFRyZWUwLmNvbWJpbmVfZXJyb3JzXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmNvbXBhcmUgKGNvbXBhcmVfa2V5IHQxKSBjb21wYXJlX2RhdGEgdDEudHJlZSB0Mi50cmVlXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfZGF0YSB0MSB0MiA9IFRyZWUwLmVxdWFsIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICBsZXQga2V5cyB0ID0gVHJlZTAua2V5cyB0LnRyZWVcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdC50cmVlXG4gIGxldCB0b19hbGlzdCA/a2V5X29yZGVyIHQgPSBUcmVlMC50b19hbGlzdCA/a2V5X29yZGVyIHQudHJlZVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpIH5kYXRhX2VxdWFsXG4gIDs7XG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgIHQxLnRyZWVcbiAgICAgIHQyLnRyZWVcbiAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gIDs7XG5cbiAgbGV0IG1lcmdlIHQxIHQyIH5mID1cbiAgICBsaWtlIHQxIChUcmVlMC5tZXJnZSB0MS50cmVlIHQyLnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogVGhpcyBpcyBvbmx5IGEgbm8tb3AgaW4gdGhlIGNhc2Ugd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBtYXBzIGlzIGVtcHR5LiAqKVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIChpZiB0Mi5sZW5ndGggPD0gdDEubGVuZ3RoIHRoZW4gdDEgZWxzZSB0MilcbiAgICAgIChUcmVlMC5tZXJnZV9za2V3ZWRcbiAgICAgICAgIHQxLnRyZWVcbiAgICAgICAgIHQyLnRyZWVcbiAgICAgICAgIH5sZW5ndGgxOnQxLmxlbmd0aFxuICAgICAgICAgfmxlbmd0aDI6dDIubGVuZ3RoXG4gICAgICAgICB+Y29tYmluZVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQudHJlZSB+ZlxuXG4gIGxldCBzcGxpdCB0IGsgPVxuICAgIGxldCBsLCBtYXliZSwgciA9IFRyZWUwLnNwbGl0IHQudHJlZSBrIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgaW5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgYm90aF9sZW4gPSBpZiBPcHRpb24uaXNfc29tZSBtYXliZSB0aGVuIHQubGVuZ3RoIC0gMSBlbHNlIHQubGVuZ3RoIGluXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG1heWJlLCBvZl90cmVlX3Vuc2FmZSByIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIGwpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBvZl90cmVlIHIgfmNvbXBhcmF0b3IgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIGwgfmNvbXBhcmF0b3Igfmxlbmd0aDooYm90aF9sZW4gLSBsZW5ndGggciksIG1heWJlLCByKVxuICA7O1xuXG4gIGxldCBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBsZWZ0LCBtaWQsIHJpZ2h0ID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlIHQudHJlZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgb3V0ZXJfam9pbmVkX2hlaWdodCA9XG4gICAgICBsZXQgaF9sID0gVHJlZTAuaGVpZ2h0IGxlZnRcbiAgICAgIGFuZCBoX3IgPSBUcmVlMC5oZWlnaHQgcmlnaHQgaW5cbiAgICAgIGlmIGhfbCA9IGhfciB0aGVuIGhfbCArIDEgZWxzZSBtYXggaF9sIGhfclxuICAgIGluXG4gICAgaWYgb3V0ZXJfam9pbmVkX2hlaWdodCA8IFRyZWUwLmhlaWdodCBtaWRcbiAgICB0aGVuIChcbiAgICAgIGxldCBtaWRfbGVuZ3RoID0gdC5sZW5ndGggLSAoVHJlZTAubGVuZ3RoIGxlZnQgKyBUcmVlMC5sZW5ndGggcmlnaHQpIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBtaWQgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgdCkgfmxlbmd0aDptaWRfbGVuZ3RoKVxuICAgIGVsc2Ugb2ZfdHJlZSBtaWQgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgdClcbiAgOztcblxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAuYXBwZW5kXG4gICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgbG93ZXJfcGFydClcbiAgICAgICAgfmxvd2VyX3BhcnQ6bG93ZXJfcGFydC50cmVlXG4gICAgICAgIH51cHBlcl9wYXJ0OnVwcGVyX3BhcnQudHJlZVxuICAgIHdpdGhcbiAgICB8IGBPayB0cmVlIC0+XG4gICAgICBgT2tcbiAgICAgICAgKG9mX3RyZWVfdW5zYWZlXG4gICAgICAgICAgIHRyZWVcbiAgICAgICAgICAgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgbG93ZXJfcGFydClcbiAgICAgICAgICAgfmxlbmd0aDoobG93ZXJfcGFydC5sZW5ndGggKyB1cHBlcl9wYXJ0Lmxlbmd0aCkpXG4gICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiBgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc1xuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmUgdC50cmVlIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0LnRyZWUgfm1pbiB+bWF4IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0LnRyZWUgZGlyIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdC50cmVlIG5cbiAgbGV0IG50aF9leG4gdCBuID0gT3B0aW9uLnZhbHVlX2V4biAobnRoIHQgbilcbiAgbGV0IHJhbmsgdCBrZXkgPSBUcmVlMC5yYW5rIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICA/a2V5c19sZXNzX29yX2VxdWFsX3RvXG4gICAgICB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0LnRyZWUgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJlZSB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIFRyZWUwLmhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0LnRyZWUgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IGxpa2VfbWF5YmVfbm9fb3AgdCAoRW1wdHksIDApXG4gIDs7XG5lbmRcblxuKCogWzBdIGlzIHVzZWQgYXMgdGhlIFtsZW5ndGhdIGFyZ3VtZW50IGV2ZXJ5d2hlcmUgaW4gdGhpcyBtb2R1bGUsIHNpbmNlIHRyZWVzIGRvIG5vdFxuICAgaGF2ZSB0aGVpciBsZW5ndGhzIHN0b3JlZCBhdCB0aGUgcm9vdCwgdW5saWtlIG1hcHMuIFRoZSB2YWx1ZXMgYXJlIGRpc2NhcmRlZCBhbHdheXMuICopXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0ID0gKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHRyZWVcblxuICBsZXQgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFRyZWUwLmVtcHR5XG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvcjpfID0gZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvcjpfIHRyZWUgPSB0cmVlXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3I6XyBrIHYgPSBUcmVlMC5zaW5nbGV0b24gayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIGZzdCAoVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rICh0cmVlLCBfc2l6ZSkgLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIFRyZWUwLm9mX2FsaXN0X29yX2Vycm9yIGFsaXN0IH5jb21wYXJhdG9yIHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0ID0gZnN0IChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBmc3QgKFRyZWUwLm9mX2FsaXN0X211bHRpIGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgKHRyZWUsIF9zaXplKSAtPiBgT2sgdHJlZVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSA9IGZzdCAoVHJlZTAub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcilcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6X3JlcXVpcmVkX2J5X2ludGYgfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+Zjpmc3RcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rICh0cmVlLCBfc2l6ZSkgLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3IgfD4gT3JfZXJyb3IubWFwIH5mOmZzdFxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID0gZnN0IChUcmVlMC5vZl9zZXF1ZW5jZV9leG4gc2VxIH5jb21wYXJhdG9yKVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB0b190cmVlIHQgPSB0XG5cbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9XG4gICAgVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuXG4gIGxldCBzZXQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICBmc3QgKFRyZWUwLnNldCB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgYWRkX2V4biB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIGZzdFxuICAgICAgKFRyZWUwLmFkZF9leG5cbiAgICAgICAgIHRcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+bGVuZ3RoOjBcbiAgICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICB0cnkgYE9rIChhZGRfZXhuIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSkgd2l0aFxuICAgIHwgXyAtPiBgRHVwbGljYXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIFRyZWUwLmFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IGZzdFxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLnJlbW92ZV9tdWx0aSB0IGtleSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHw+IGZzdFxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX211bHRpIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIGZzdCAoVHJlZTAuY2hhbmdlIHQga2V5IH5mIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB+Y29tcGFyYXRvciB0IGtleSB+ZiA9XG4gICAgY2hhbmdlIH5jb21wYXJhdG9yIHQga2V5IH5mOihmdW4gZGF0YSAtPiBTb21lIChmIGRhdGEpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHRcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAuZmluZCB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBmc3QgKFRyZWUwLnJlbW92ZSB0IGtleSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBrZXkgPSBUcmVlMC5tZW0gdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIGxldCBpdGVyX2tleXMgdCB+ZiA9IFRyZWUwLml0ZXJfa2V5cyB0IH5mXG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0IH5mXG4gIGxldCBpdGVyaV91bnRpbCB0IH5mID0gVHJlZTAuaXRlcmlfdW50aWwgdCB+ZlxuXG4gIGxldCBpdGVyMiB+Y29tcGFyYXRvciB0MSB0MiB+ZiA9XG4gICAgVHJlZTAuaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gVHJlZTAubWFwIHQgfmZcbiAgbGV0IG1hcGkgdCB+ZiA9IFRyZWUwLm1hcGkgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5mIH5pbml0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdCB+ZiB+aW5pdCB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQgfmYgfmluaXRcblxuICBsZXQgZm9sZDIgfmNvbXBhcmF0b3IgdDEgdDIgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGQyIHQxIHQyIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlcl9rZXlzIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXIgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXIgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJpIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJfbWFwaSB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBhLCBiXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbl9tYXAgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uaV90ZiB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBsZXQgKGEsIF8pLCAoYiwgXykgPVxuICAgICAgVHJlZTAucGFydGl0aW9uaV90ZiB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB+Y29tcGFyYXRvciB0ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOmZzdFxuICAgICAgKFRyZWUwLmNvbWJpbmVfZXJyb3JzXG4gICAgICAgICB0XG4gICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmNvbXBhcmUgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgY29tcGFyZV9kYXRhIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuZXF1YWwgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgY29tcGFyZV9kYXRhIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdFxuICBsZXQgZGF0YSB0ID0gVHJlZTAuZGF0YSB0XG4gIGxldCB0b19hbGlzdCA/a2V5X29yZGVyIHQgPSBUcmVlMC50b19hbGlzdCA/a2V5X29yZGVyIHRcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MVxuICAgICAgdDJcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB+Y29tcGFyYXRvciB0MSB0MiB+ZiA9XG4gICAgZnN0IChUcmVlMC5tZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB+Y29tcGFyYXRvciB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogTGVuZ3RoIGNvbXB1dGF0aW9uIG1ha2VzIHRoaXMgc2lnbmlmaWNhbnRseSBzbG93ZXIgdGhhbiBbbWVyZ2Vfc2tld2VkXSBvbiBhIG1hcFxuICAgICAgIHdpdGggYSBbbGVuZ3RoXSBmaWVsZCwgYnV0IGRvZXMgcHJlc2VydmUgYW1vdW50IG9mIGFsbG9jYXRpb24uICopXG4gICAgZnN0XG4gICAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgICB0MVxuICAgICAgICAgdDJcbiAgICAgICAgIH5sZW5ndGgxOihsZW5ndGggdDEpXG4gICAgICAgICB+bGVuZ3RoMjoobGVuZ3RoIHQyKVxuICAgICAgICAgfmNvbWJpbmVcbiAgICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0IH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdCB+ZlxuICBsZXQgY291bnRpIHQgfmYgPSBUcmVlMC5jb3VudGkgdCB+ZlxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBrID0gVHJlZTAuc3BsaXQgdCBrIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCBhcHBlbmQgfmNvbXBhcmF0b3Igfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIFRyZWUwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgXywgcmV0LCBfID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfmxvd2VyX2JvdW5kXG4gICAgICAgIH51cHBlcl9ib3VuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHJldFxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB+Y29tcGFyYXRvciB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgIHRcbiAgICAgIH5taW5cbiAgICAgIH5tYXhcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IH5jb21wYXJhdG9yIHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgfmNvbXBhcmF0b3IgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0IGRpciBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdCBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAucmFuayB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHRcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIGZzdCAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvcjpfIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3I6XyB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoIFRyZWUwLmJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgd2l0aFxuICAgIHwgU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSAtPiBzdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB8IE5vbmUgLT4gRW1wdHlcbiAgOztcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiB3aXRoXG4gICAgfCBgT2sgKHQsIF8pIC0+IGBPayB0XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPSBmc3QgKFRyZWUwLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mKVxuXG4gIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nID0gc3RydWN0XG4gICAgdHlwZSAoJ2ssICd2LCAndykgdCA9ICgnaywgJ3YpIFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudFxuXG4gICAgbGV0IGVtcHR5ID0gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5lbXB0eVxuXG4gICAgbGV0IGFkZF9leG4gdCB+Y29tcGFyYXRvciB+a2V5IH5kYXRhID1cbiAgICAgIG1hdGNoIFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcubWF4X2tleSB0IHdpdGhcbiAgICAgIHwgU29tZSBwcmV2X2tleSB3aGVuIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHByZXZfa2V5IGtleSA+PSAwIC0+XG4gICAgICAgIEVycm9yLnJhaXNlX3MgKFNleHAuQXRvbSBcIk1hcC5CdWlsZF9pbmNyZWFzaW5nLmFkZDogbm9uLWluY3JlYXNpbmcga2V5XCIpXG4gICAgICB8IF8gLT4gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQgfmtleSB+ZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZSB0ID0gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3IgPSB7IHRyZWUgPSBUcmVlMC5lbXB0eTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gMCB9XG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2ID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGsgdjsgbGVuZ3RoID0gMSB9XG4gIGxldCBvZl90cmVlMCB+Y29tcGFyYXRvciAodHJlZSwgbGVuZ3RoKSA9IHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IG9mX3RyZWUwIH5jb21wYXJhdG9yICh0cmVlLCBUcmVlMC5sZW5ndGggdHJlZSlcbiAgbGV0IHRvX3RyZWUgPSB0b190cmVlXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgICB+ZjooZnVuIHRyZWUgLT4gb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgKHRyZWUsIGxlbmd0aCkgLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5pdGVyaSB3aXRoXG4gICAgfCBgT2sgdHJlZV9sZW5ndGggLT4gYE9rIChvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlX2xlbmd0aClcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiwgbGVuKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+Zjoob2ZfdHJlZTAgfmNvbXBhcmF0b3IpXG4gICAgICAoVHJlZTAub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG1hdGNoIFRyZWUwLm9mX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rICh0cmVlLCBsZW5ndGgpIC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXEgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9tdWx0aSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgdC50cmVlIH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBwYWlyIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgcGFpcilcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZHVwIC0+IGR1cFxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm1hcF9rZXlzX2V4biB0LnRyZWUgfmYgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEsgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICAgIGxldCBlbXB0eSA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yID0gSy5jb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgZW5kXG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJhdG9yX3MgKHR5cGUgayBjbXApIHQgOiAoaywgY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl90cmVlICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpIHRyZWUgPVxuICBvZl90cmVlIH5jb21wYXJhdG9yOk0uY29tcGFyYXRvciB0cmVlXG47O1xuXG5sZXQgZW1wdHkgbSA9IFVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbmxldCBzaW5nbGV0b24gbSBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hbGlzdF9tdWx0aSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX2FsaXN0X2ZvbGQgbSBhIH5pbml0IH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmluaXQgfmZcbjs7XG5cbmxldCBvZl9hbGlzdF9yZWR1Y2UgbSBhIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2l0ZXJpIG0gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcblxubGV0IG9mX2l0ZXJpX2V4biBtIH5pdGVyaSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgbSBzZXEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc2VxXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2UgbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9leG4gbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuXG5sZXQgb2Zfc2VxdWVuY2VfbXVsdGkgbSBzID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfZm9sZCBtIHMgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgcyB+aW5pdCB+ZlxuOztcblxubGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBtIHMgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5mXG47O1xuXG5sZXQgbWFwX2tleXMgbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0IH5mXG5sZXQgbWFwX2tleXNfZXhuIG0gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcblxubW9kdWxlIE0gKEsgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cFxuICAgICAgKHR5cGUgayBjbXApXG4gICAgICAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgIHZfb2Zfc2V4cFxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpLLmNvbXBhcmF0b3IgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hclxuICAgICAgKHR5cGUgaylcbiAgICAgIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaylcbiAgICAgICh2X2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICB7IHVudHlwZWQgPVxuICAgICAgTGlzdFxuICAgICAgICAoTWFueSAoTGlzdCAoQ29ucyAoSy50X3NleHBfZ3JhbW1hci51bnR5cGVkLCBDb25zICh2X2dyYW1tYXIudW50eXBlZCwgRW1wdHkpKSkpKVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9tX190IChtb2R1bGUgXyA6IENvbXBhcmVfbSkgY29tcGFyZV92IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY29tcGFyZV92IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuXG5sZXQgaGFzaF9mb2xkX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBrKSBoYXNoX2ZvbGRfdiBzdGF0ZSA9XG4gIGhhc2hfZm9sZF9kaXJlY3QgSy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfdiBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyYXRvciA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2V4biBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGEgfmluaXQgfmZcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYSB+ZlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHMgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzIH5mXG4gIGxldCBtYXBfa2V5cyB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmZcbmVuZFxuIiwib3BlbiEgSW1wb3J0MFxuXG50eXBlICdhIHQgPSAnYSBDYW1sLlF1ZXVlLnRcblxubGV0IGNyZWF0ZSA9IENhbWwuUXVldWUuY3JlYXRlXG5sZXQgY2xlYXIgPSBDYW1sLlF1ZXVlLmNsZWFyXG5sZXQgY29weSA9IENhbWwuUXVldWUuY29weVxubGV0IGlzX2VtcHR5ID0gQ2FtbC5RdWV1ZS5pc19lbXB0eVxubGV0IGxlbmd0aCA9IENhbWwuUXVldWUubGVuZ3RoXG5sZXQgcGVlayA9IENhbWwuUXVldWUucGVla1xubGV0IHBvcCA9IENhbWwuUXVldWUucG9wXG5sZXQgcHVzaCA9IENhbWwuUXVldWUucHVzaFxubGV0IHRyYW5zZmVyID0gQ2FtbC5RdWV1ZS50cmFuc2ZlclxubGV0IGl0ZXIgdCB+ZiA9IENhbWwuUXVldWUuaXRlciBmIHRcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBDYW1sLlF1ZXVlLmZvbGQgZiBpbml0IHRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBMaW5rZWRfcXVldWUwXG5cbmxldCBlbnF1ZXVlIHQgeCA9IExpbmtlZF9xdWV1ZTAucHVzaCB4IHRcbmxldCBkZXF1ZXVlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKExpbmtlZF9xdWV1ZTAucG9wIHQpXG5sZXQgZGVxdWV1ZV9leG4gPSBMaW5rZWRfcXVldWUwLnBvcFxubGV0IHBlZWsgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wZWVrIHQpXG5sZXQgcGVla19leG4gPSBMaW5rZWRfcXVldWUwLnBlZWtcblxubW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgICBsZXQgZm9sZGkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgaXRlcmkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb2xkaSA9IEMuZm9sZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbmxldCBpdGVyaSA9IEMuaXRlcmlcbmxldCB0cmFuc2ZlciB+c3JjIH5kc3QgPSBMaW5rZWRfcXVldWUwLnRyYW5zZmVyIHNyYyBkc3RcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgcmVzIGIpKTtcbiAgcmVzXG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSByZXMgYSk7XG4gIHJlc1xuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGVucXVldWUgcmVzIChmIGEpKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGVucXVldWUgcmVzIChmIGkgYSkpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyIHEgfmYgaW5cbiAgY2xlYXIgcTtcbiAgdHJhbnNmZXIgfnNyYzpxJyB+ZHN0OnFcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgcSB+ZiA9XG4gIGxldCBxJyA9IGZpbHRlcmkgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGVucXVldWVfYWxsIHQgbGlzdCA9IExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyYXkgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IGluaXQgbGVuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBlbnF1ZXVlIHQgKGYgaSlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBsZW5ndGggdCB3aXRoXG4gIHwgMCAtPiBbfHxdXG4gIHwgbGVuIC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuIChwZWVrX2V4biB0KSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biB2IC0+XG4gICAgICBhcnIuKCFpKSA8LSB2O1xuICAgICAgaW5jciBpKTtcbiAgICBhcnJcbjs7XG5cbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChsaXN0X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCBzaW5nbGV0b24gYSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGVucXVldWUgdCBhO1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBDYW1sLkludDY0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDY0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludDY0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBjb21wYXJlID0gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxubGV0IG51bV9iaXRzID0gNjRcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzXG5sZXQgYml0c19vZl9mbG9hdCA9IGJpdHNfb2ZfZmxvYXRcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnQ2NF9wb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBDYW1sLkludDY0Lm9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIENhbWwuSW50NjQub2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2NC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwNjQgOiB0IC0+IHQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAxNiB4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDQ4XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAzMiB4ID1cbiAgKCogVGhpcyBpcyBzdHJpY3RseSBiZXR0ZXIgdGhhbiBjb2VyY2luZyB0byBhbiBpbnQzMiB0byBwZXJmb3JtIGJ5dGVzd2FwLiBDb2VyY2luZ1xuICAgICBmcm9tIGFuIGludDMyIHdpbGwgYWRkIHVubmVjZXNzYXJ5IHNoaWZ0IG9wZXJhdGlvbnMgdG8gc2lnbiBleHRlbmQgdGhlIG51bWJlclxuICAgICBhcHByb3ByaWF0ZWx5LlxuICAqKVxuICBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMzJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXA0OCB4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDE2XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCBpbmNyIHIgPSByIDo9IGFkZCAhciBvbmVcbmxldCBkZWNyIHIgPSByIDo9IHN1YiAhciBvbmVcblxuZXh0ZXJuYWwgb2ZfaW50NjQgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NFxubGV0IHRvX2ludDY0IHQgPSB0XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5leHRlcm5hbCB0b19pbnRfdHJ1bmMgOiB0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCB0b19pbnQzMl90cnVuYyA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50X3RydW5jIDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuXG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IHRvX2ludCA9IENvbnYuaW50NjRfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBvZl9uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludDY0X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG5cblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gQ2FtbC5JbnQ2NC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBDYW1sLkludDY0LmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IENhbWwuSW50NjQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBDYW1sLkludDY0LnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBDYW1sLkludDY0LnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBDYW1sLkludDY0LnByZWQgeCA9IENhbWwuSW50NjQuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50NjRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50NjRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IENhbWwuSW50NjQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIltJbnQ2NC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQ2NCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgQ2FtbC5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBpZiBDYW1sLkludDY0LmVxdWFsIGkgQ2FtbC5JbnQ2NC5vbmUgdGhlbiAwIGVsc2UgbnVtX2JpdHMgLSBjbHogKENhbWwuSW50NjQucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDY0IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJUx4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlTHhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDY0XCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X2FkZFwiXG4gIGV4dGVybmFsICggLSApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9zdWJcIlxuICBleHRlcm5hbCAoICogKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfbXVsXCJcbiAgZXh0ZXJuYWwgKCAvICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X2RpdlwiXG4gIGV4dGVybmFsICggfi0gKSA6IHQgLT4gdCA9IFwiJWludDY0X25lZ1wiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFicyA9IGFic1xuXG4gIGV4dGVybmFsIG5lZyA6IHQgLT4gdCA9IFwiJWludDY0X25lZ1wiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9hbmRcIlxuICBleHRlcm5hbCAoIGxvciApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9vclwiXG4gIGV4dGVybmFsICggbHhvciApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF94b3JcIlxuXG4gIGxldCBsbm90ID0gYml0X25vdFxuXG4gIGV4dGVybmFsICggbHNsICkgOiB0IC0+IGludCAtPiB0ID0gXCIlaW50NjRfbHNsXCJcbiAgZXh0ZXJuYWwgKCBhc3IgKSA6IHQgLT4gaW50IC0+IHQgPSBcIiVpbnQ2NF9hc3JcIlxuICBleHRlcm5hbCAoIGxzciApIDogdCAtPiBpbnQgLT4gdCA9IFwiJWludDY0X2xzclwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2NF0gYW5kIFtJbnQ2NC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEEgNjNiaXQgaW50ZWdlciBpcyBhIDY0Yml0IGludGVnZXIgd2l0aCBpdHMgYml0cyBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICBhbmQgaXRzIGxvd2VzdCBiaXQgc2V0IHRvIDAuXG4gICBUaGlzIGlzIHRoZSBzYW1lIGtpbmQgb2YgZW5jb2RpbmcgYXMgT0NhbWwgaW50IG9uIDY0Yml0IGFyY2hpdGVjdHVyZS5cbiAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmVpbmcgdGhlIGxvd2VzdCBiaXQgKGltbWVkaWF0ZSBiaXQpIHNldCB0byAxLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cblxubW9kdWxlIFQwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5tb2R1bGUgVyA6IHNpZ1xuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuICBlbmRcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIHZhbCB3cmFwX2V4biA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCB3cmFwX21vZHVsbyA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCB1bndyYXAgOiB0IC0+IENhbWwuSW50NjQudFxuXG4gICgqKiBSZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIGludDY0IHRoYXQgaXMgZXF1YWwgdG8gdGhlIGlucHV0IGludDYzIG1vZHVsbyAyXjYzLiAqKVxuICB2YWwgdW53cmFwX3Vuc2lnbmVkIDogdCAtPiBDYW1sLkludDY0LnRcblxuICB2YWwgaW52YXJpYW50IDogdCAtPiB1bml0XG4gIHZhbCBhZGQgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3ViIDogdCAtPiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBzdWNjIDogdCAtPiB0XG4gIHZhbCBwcmVkIDogdCAtPiB0XG4gIHZhbCBtdWwgOiB0IC0+IHQgLT4gdFxuICB2YWwgcG93IDogdCAtPiB0IC0+IHRcbiAgdmFsIGRpdiA6IHQgLT4gdCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuICB2YWwgcG9wY291bnQgOiB0IC0+IGludFxuICB2YWwgYml0X25vdCA6IHQgLT4gdFxuICB2YWwgYml0X3hvciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfb3IgOiB0IC0+IHQgLT4gdFxuICB2YWwgYml0X2FuZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzaGlmdF9sZWZ0IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgc2hpZnRfcmlnaHQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50NjQgOiB0IC0+IENhbWwuSW50NjQudFxuICB2YWwgb2ZfaW50NjQgOiBDYW1sLkludDY0LnQgLT4gdCBvcHRpb25cbiAgdmFsIG9mX2ludDY0X2V4biA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCBvZl9pbnQ2NF90cnVuYyA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgY2VpbF9wb3cyIDogdCAtPiB0XG4gIHZhbCBmbG9vcl9wb3cyIDogdCAtPiB0XG4gIHZhbCBjZWlsX2xvZzIgOiB0IC0+IGludFxuICB2YWwgZmxvb3JfbG9nMiA6IHQgLT4gaW50XG4gIHZhbCBpc19wb3cyIDogdCAtPiBib29sXG4gIHZhbCBjbHogOiB0IC0+IGludFxuICB2YWwgY3R6IDogdCAtPiBpbnRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFQwXG5cbiAgdHlwZSB0ID0gaW50NjRcblxuICBsZXQgd3JhcF9leG4geCA9XG4gICAgKCogUmFpc2VzIGlmIHRoZSBpbnQ2NCB2YWx1ZSBkb2VzIG5vdCBmaXQgb24gaW50NjMuICopXG4gICAgQ29udi5pbnQ2NF9maXRfb25faW50NjNfZXhuIHg7XG4gICAgQ2FtbC5JbnQ2NC5tdWwgeCAyTFxuICA7O1xuXG4gIGxldCB3cmFwIHggPVxuICAgIGlmIENvbnYuaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gU29tZSAoQ2FtbC5JbnQ2NC5tdWwgeCAyTCkgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHdyYXBfbW9kdWxvIHggPSBDYW1sLkludDY0Lm11bCB4IDJMXG4gIGxldCB1bndyYXAgeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHQgeCAxXG4gIGxldCB1bndyYXBfdW5zaWduZWQgeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDFcblxuICAoKiBUaGlzIGRvZXMgbm90IHVzZSB3cmFwIG9yIHVud3JhcCB0byBhdm9pZCBnZW5lcmF0aW5nIGV4Y2VwdGlvbnMgaW4gdGhlIGNhc2Ugb2ZcbiAgICAgb3ZlcmZsb3dzLiBUaGlzIGlzIHRvIHByZXNlcnZlIHRoZSBzZW1hbnRpY3Mgb2YgaW50IHR5cGUgb24gNjQgYml0IGFyY2hpdGVjdHVyZS4gKilcbiAgbGV0IGYyIGYgYSBiID1cbiAgICBDYW1sLkludDY0Lm11bCAoZiAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBhIDEpIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSkpIDJMXG4gIDs7XG5cbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZl9mZmZmX2ZmZmVMXG4gIGxldCBtIHggPSBDYW1sLkludDY0LmxvZ2FuZCB4IG1hc2tcbiAgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0IChtIHQgPSB0KVxuICBsZXQgYWRkIHggeSA9IENhbWwuSW50NjQuYWRkIHggeVxuICBsZXQgc3ViIHggeSA9IENhbWwuSW50NjQuc3ViIHggeVxuICBsZXQgbmVnIHggPSBDYW1sLkludDY0Lm5lZyB4XG4gIGxldCBhYnMgeCA9IENhbWwuSW50NjQuYWJzIHhcbiAgbGV0IG9uZSA9IHdyYXBfZXhuIDFMXG4gIGxldCBzdWNjIGEgPSBhZGQgYSBvbmVcbiAgbGV0IHByZWQgYSA9IHN1YiBhIG9uZVxuICBsZXQgbWluX3ZhbHVlID0gbSBDYW1sLkludDY0Lm1pbl9pbnRcbiAgbGV0IG1heF92YWx1ZSA9IG0gQ2FtbC5JbnQ2NC5tYXhfaW50XG4gIGxldCBiaXRfbm90IHggPSBtIChDYW1sLkludDY0LmxvZ25vdCB4KVxuICBsZXQgYml0X2FuZCA9IENhbWwuSW50NjQubG9nYW5kXG4gIGxldCBiaXRfeG9yID0gQ2FtbC5JbnQ2NC5sb2d4b3JcbiAgbGV0IGJpdF9vciA9IENhbWwuSW50NjQubG9nb3JcbiAgbGV0IHNoaWZ0X2xlZnQgeCBpID0gQ2FtbC5JbnQ2NC5zaGlmdF9sZWZ0IHggaVxuICBsZXQgc2hpZnRfcmlnaHQgeCBpID0gbSAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCB4IGkpXG4gIGxldCBzaGlmdF9yaWdodF9sb2dpY2FsIHggaSA9IG0gKENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkpXG4gIGxldCBwb3cgPSBmMiBJbnRfbWF0aC5Qcml2YXRlLmludDYzX3Bvd19vbl9pbnQ2NFxuICBsZXQgbXVsIGEgYiA9IENhbWwuSW50NjQubXVsIGEgKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgYiAxKVxuICBsZXQgZGl2IGEgYiA9IHdyYXBfbW9kdWxvIChDYW1sLkludDY0LmRpdiBhIGIpXG4gIGxldCByZW0gYSBiID0gQ2FtbC5JbnQ2NC5yZW0gYSBiXG4gIGxldCBwb3Bjb3VudCB4ID0gUG9wY291bnQuaW50NjRfcG9wY291bnQgeFxuICBsZXQgdG9faW50NjQgdCA9IHVud3JhcCB0XG4gIGxldCBvZl9pbnQ2NCB0ID0gd3JhcCB0XG4gIGxldCBvZl9pbnQ2NF9leG4gdCA9IHdyYXBfZXhuIHRcbiAgbGV0IG9mX2ludDY0X3RydW5jIHQgPSB3cmFwX21vZHVsbyB0XG4gIGxldCB0X29mX3NleHAgeCA9IHdyYXBfZXhuIChpbnQ2NF9vZl9zZXhwIHgpXG4gIGxldCBzZXhwX29mX3QgeCA9IHNleHBfb2ZfaW50NjQgKHVud3JhcCB4KVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgaXNfcG93MiB4ID0gSW50NjQuaXNfcG93MiAodW53cmFwIHgpXG5cbiAgbGV0IGNseiB4ID1cbiAgICAoKiBXZSBydW4gSW50NjQuY2x6IGRpcmVjdGx5IG9uIHRoZSB3cmFwcGVkIGludDYzIHZhbHVlLiBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB0aGVcbiAgICAgICBiaXRzIG9mIHRoZSBpbnQ2M19lbXVsIGFyZSBsZWZ0LWFsaWduZWQgaW4gdGhlIEludDY0LiAqKVxuICAgIEludDY0LmNseiB4XG4gIDs7XG5cbiAgbGV0IGN0eiB4ID0gSW50NjQuY3R6ICh1bndyYXAgeClcbiAgbGV0IGZsb29yX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgY2VpbF9wb3cyIHggPSBJbnQ2NC5mbG9vcl9wb3cyICh1bndyYXAgeCkgfD4gd3JhcF9leG5cbiAgbGV0IGZsb29yX2xvZzIgeCA9IEludDY0LmZsb29yX2xvZzIgKHVud3JhcCB4KVxuICBsZXQgY2VpbF9sb2cyIHggPSBJbnQ2NC5jZWlsX2xvZzIgKHVud3JhcCB4KVxuZW5kXG5cbm9wZW4gV1xuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBXLnQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgVy5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFcuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoVy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChXLnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBXLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFcuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBXLmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmUgPSBXLmNvbXBhcmVcbiAgbGV0IGludmFyaWFudCA9IFcuaW52YXJpYW50XG5cbiAgKCogV2UgZG9uJ3QgZXhwZWN0IFtoYXNoXSB0byBmb2xsb3cgdGhlIGJlaGF2aW9yIG9mIGludCBpbiA2NGJpdCBhcmNoaXRlY3R1cmUgKilcbiAgbGV0IF8gPSBoYXNoXG4gIGxldCBoYXNoICh4IDogdCkgPSBDYW1sLkhhc2h0YmwuaGFzaCB4XG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGludmFsaWRfc3RyIHggPSBQcmludGYuZmFpbHdpdGhmIFwiSW50NjMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgeCAoKVxuXG4gICgqXG4gICAgIFwic2lnblwiIHJlZmVycyB0byB3aGV0aGVyIHRoZSBudW1iZXIgc3RhcnRzIHdpdGggYSAnLSdcbiAgICAgXCJzaWduZWRuZXNzID0gZmFsc2VcIiBtZWFucyB0aGUgcmVzdCBvZiB0aGUgbnVtYmVyIGlzIHBhcnNlZCBhcyB1bnNpZ25lZCBhbmQgdGhlbiBjYXN0XG4gICAgIHRvIHNpZ25lZCB3aXRoIHdyYXAtYXJvdW5kIG1vZHVsbyAyXmlcbiAgICAgXCJzaWduZWRuZXNzID0gdHJ1ZVwiIG1lYW5zIG5vIHN1Y2ggY3JhemluZXNzIGhhcHBlbnNcblxuICAgICBUaGUgdGVybWlub2xvZ3kgYW5kIHRoZSBsb2dpYyBpcyBkdWUgdG8gdGhlIGNvZGUgaW4gYnl0ZXJ1bi9pbnRzLmMgaW4gb2NhbWwgNC4wM1xuICAgICAoW3BhcnNlX3NpZ25fYW5kX2Jhc2VdIGZ1bmN0aW9uKS5cblxuICAgICBTaWduZWRuZXNzIGVxdWFscyB0cnVlIGZvciBwbGFpbiBkZWNpbWFsIG51bWJlciAoZS5nLiAxMjM1LCAtNjc4OSlcblxuICAgICBTaWduZWRuZXNzIGVxdWFscyBmYWxzZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAtIFsweGZmZmZdLCBbLTB4ZmZmZl0gKGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswYjAxMDFdLCBbLTBiMDEwMV0gKGJpbmFyeSByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMG8xMjM3XSwgWy0wbzEyMzddIChvY3RhbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMHU5ODEyXSwgWy0wdTk4MTJdICh1bnNpZ25lZCBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIC0gYXZhaWxhYmxlIGZyb20gT0NhbWwgNC4wMykgKilcbiAgbGV0IHNpZ25fYW5kX3NpZ25lZG5lc3MgeCA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggeCBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcG9zLCBzaWduID1cbiAgICAgIGlmIDAgPCBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCB4LlswXSB3aXRoXG4gICAgICAgIHwgJy0nIC0+IDEsIGBOZWdcbiAgICAgICAgfCAnKycgLT4gMSwgYFBvc1xuICAgICAgICB8IF8gLT4gMCwgYFBvcylcbiAgICAgIGVsc2UgMCwgYFBvc1xuICAgIGluXG4gICAgaWYgcG9zICsgMiA8IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IGMxID0geC5bcG9zXSBpblxuICAgICAgbGV0IGMyID0geC5bcG9zICsgMV0gaW5cbiAgICAgIG1hdGNoIGMxLCBjMiB3aXRoXG4gICAgICB8ICcwJywgJzAnIC4uICc5JyAtPiBzaWduLCB0cnVlXG4gICAgICB8ICcwJywgXyAtPiBzaWduLCBmYWxzZVxuICAgICAgfCBfIC0+IHNpZ24sIHRydWUpXG4gICAgZWxzZSBzaWduLCB0cnVlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gQ2FtbC5JbnQ2NC50b19zdHJpbmcgKHVud3JhcCB4KVxuXG4gIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICB0cnlcbiAgICAgIGxldCBzaWduLCBzaWduZWRuZXNzID0gc2lnbl9hbmRfc2lnbmVkbmVzcyBzdHIgaW5cbiAgICAgIGlmIHNpZ25lZG5lc3NcbiAgICAgIHRoZW4gb2ZfaW50NjRfZXhuIChDYW1sLkludDY0Lm9mX3N0cmluZyBzdHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHBvc19zdHIgPVxuICAgICAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgICAgIHwgYE5lZyAtPiBTdHJpbmcuc3ViIHN0ciB+cG9zOjEgfmxlbjooU3RyaW5nLmxlbmd0aCBzdHIgLSAxKVxuICAgICAgICAgIHwgYFBvcyAtPiBzdHJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGludDY0ID0gQ2FtbC5JbnQ2NC5vZl9zdHJpbmcgcG9zX3N0ciBpblxuICAgICAgICAoKiB1bnNpZ25lZCA2My1iaXQgaW50IG11c3QgcGFyc2UgYXMgYSBwb3NpdGl2ZSBzaWduZWQgNjQtYml0IGludCAqKVxuICAgICAgICBpZiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaW50NjQgMEwgdGhlbiBpbnZhbGlkX3N0ciBzdHI7XG4gICAgICAgIGxldCBpbnQ2MyA9IHdyYXBfbW9kdWxvIGludDY0IGluXG4gICAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgICB8IGBOZWcgLT4gbmVnIGludDYzXG4gICAgICAgIHwgYFBvcyAtPiBpbnQ2MylcbiAgICB3aXRoXG4gICAgfCBfIC0+IGludmFsaWRfc3RyIHN0clxuICA7O1xuXG4gIGxldCBic3dhcDE2IHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAxNiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXAzMiB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwMzIgKHVud3JhcCB0KSlcbiAgbGV0IGJzd2FwNDggdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDQ4ICh1bndyYXAgdCkpXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBudW1fYml0cyA9IDYzXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBiaXRfbm90XG5sZXQgYml0X3hvciA9IGJpdF94b3JcbmxldCBiaXRfb3IgPSBiaXRfb3JcbmxldCBiaXRfYW5kID0gYml0X2FuZFxubGV0IHBvcGNvdW50ID0gcG9wY291bnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gcG93XG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlXG5sZXQgbWludXNfb25lID0gd3JhcF9leG4gQ2FtbC5JbnQ2NC5taW51c19vbmVcbmxldCBvbmUgPSB3cmFwX2V4biBDYW1sLkludDY0Lm9uZVxubGV0IHplcm8gPSB3cmFwX2V4biBDYW1sLkludDY0Lnplcm9cbmxldCBpc19wb3cyID0gaXNfcG93MlxubGV0IGZsb29yX3BvdzIgPSBmbG9vcl9wb3cyXG5sZXQgY2VpbF9wb3cyID0gY2VpbF9wb3cyXG5sZXQgZmxvb3JfbG9nMiA9IGZsb29yX2xvZzJcbmxldCBjZWlsX2xvZzIgPSBjZWlsX2xvZzJcbmxldCBjbHogPSBjbHpcbmxldCBjdHogPSBjdHpcbmxldCB0b19mbG9hdCB4ID0gQ2FtbC5JbnQ2NC50b19mbG9hdCAodW53cmFwIHgpXG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkIHggPSB3cmFwX21vZHVsbyAoQ2FtbC5JbnQ2NC5vZl9mbG9hdCB4KVxuXG5sZXQgb2ZfZmxvYXQgdCA9XG4gIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiB0ID49IGZsb2F0X2xvd2VyX2JvdW5kICYmIHQgPD0gZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiB3cmFwX21vZHVsbyAoQ2FtbC5JbnQ2NC5vZl9mbG9hdCB0KVxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2My5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IG9mX2ludDY0ID0gb2ZfaW50NjRcbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NF9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IG9mX2ludDY0X3RydW5jXG5sZXQgdG9faW50NjQgPSB0b19pbnQ2NFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcblxuKCogV2UgY2FuIHJldXNlIGNvbnZlcnNpb24gZnVuY3Rpb24gZnJvbS90byBpbnQ2NCBoZXJlLiAqKVxubGV0IG9mX2ludCB4ID0gd3JhcF9leG4gKENvbnYuaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50X2V4biB4ID0gb2ZfaW50IHhcbmxldCB0b19pbnQgeCA9IENvbnYuaW50NjRfdG9faW50ICh1bndyYXAgeClcbmxldCB0b19pbnRfZXhuIHggPSBDb252LmludDY0X3RvX2ludF9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludF90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnRfdHJ1bmMgKHVud3JhcCB4KVxubGV0IG9mX2ludDMyIHggPSB3cmFwX2V4biAoQ29udi5pbnQzMl90b19pbnQ2NCB4KVxubGV0IG9mX2ludDMyX2V4biB4ID0gb2ZfaW50MzIgeFxubGV0IHRvX2ludDMyIHggPSBDb252LmludDY0X3RvX2ludDMyICh1bndyYXAgeClcbmxldCB0b19pbnQzMl9leG4geCA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuICh1bndyYXAgeClcbmxldCB0b19pbnQzMl90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfbmF0aXZlaW50IHggPSBvZl9pbnQ2NCAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfZXhuIHggPSB3cmFwX2V4biAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgeCA9IG9mX2ludDY0X3RydW5jIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IHRvX25hdGl2ZWludCB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnQgKHVud3JhcCB4KVxubGV0IHRvX25hdGl2ZWludF9leG4geCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuYyAodW53cmFwIHgpXG5cbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKFQuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBULmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IFQuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcblxuICAgIGxldCB0b19zdHJpbmcgaSA9XG4gICAgICAoKiB0aGUgdXNlIG9mIFt1bndyYXBfdW5zaWduZWRdIGhlcmUgaXMgaW1wb3J0YW50IGZvciB0aGUgY2FzZSBvZiBbbWluX3ZhbHVlXSAqKVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlTHhcIiAodW53cmFwX3Vuc2lnbmVkIGkpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgcyA9IG9mX3N0cmluZyAoXCIweFwiIF4gcylcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjMuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyB4ID0gdG9fc3RyaW5nIHhcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjNcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDYzXSBhbmQgW0ludDYzLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgdHlwZSBlbXVsYXRlZCA9IHRcblxuICB0eXBlICgndW5kZXJseWluZ190eXBlLCAnaW50ZXJtZWRpYXRlX3R5cGUpIHQgPVxuICAgIHwgSW50IDogKGludCwgaW50KSB0XG4gICAgfCBJbnQ2NCA6IChpbnQ2NCwgZW11bGF0ZWQpIHRcbmVuZFxuXG5sZXQgcmVwciA9IFJlcHIuSW50NjRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfYm9vbCA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBmYWxzZTsgdHJ1ZSBdIDogdCBsaXN0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfYm9vbFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfYm9vbCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoYm9vbF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9ib29sIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGJvb2xfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5cbiAgbGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcInRydWVcIiAtPiB0cnVlXG4gICAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgICB8IHMgLT4gaW52YWxpZF9hcmdmIFwiQm9vbC5vZl9zdHJpbmc6IGV4cGVjdGVkIHRydWUgb3IgZmFsc2UgYnV0IGdvdCAlc1wiIHMgKClcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gQ2FtbC5zdHJpbmdfb2ZfYm9vbFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJvb2xcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgdG9faW50IHggPSBib29sX3RvX2ludCB4XG5cbm1vZHVsZSBOb25fc2hvcnRfY2lyY3VpdGluZyA9IHN0cnVjdFxuICAoKiBXZSBkb24ndCBleHBvc2UgdGhpcywgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBicmVhayB0aGUgaW52YXJpYW50IG1lbnRpb25lZCBiZWxvdyBvZlxuICAgICAodG9faW50IHRydWUgPSAxKSBhbmQgKHRvX2ludCBmYWxzZSA9IDApLiAqKVxuICBsZXQgdW5zYWZlX29mX2ludCAoeCA6IGludCkgOiBib29sID0gQ2FtbC5PYmoubWFnaWMgeFxuICBsZXQgKCB8fCApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxvciB0b19pbnQgYilcbiAgbGV0ICggJiYgKSBhIGIgPSB1bnNhZmVfb2ZfaW50ICh0b19pbnQgYSBsYW5kIHRvX2ludCBiKVxuZW5kXG5cbigqIFdlIGRvIHRoaXMgYXMgYSBkaXJlY3QgYXNzZXJ0IG9uIHRoZSB0aGVvcnkgdGhhdCBpdCdzIGEgY2hlYXAgdGhpbmcgdG8gdGVzdCBhbmQgYVxuICAgcmVhbGx5IGNvcmUgaW52YXJpYW50IHRoYXQgd2UgbmV2ZXIgZXhwZWN0IHRvIGJyZWFrLCBhbmQgd2Ugc2hvdWxkIGJlIGhhcHB5IGZvciBhXG4gICBwcm9ncmFtIHRvIGZhaWwgaW1tZWRpYXRlbHkgaWYgdGhpcyBpcyB2aW9sYXRlZC4gKilcbmxldCAoKSA9IGFzc2VydCAoUG9seS4oID0gKSAodG9faW50IHRydWUpIDEgJiYgUG9seS4oID0gKSAodG9faW50IGZhbHNlKSAwKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgQ2FtbC5JbnQzMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50MzJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQzMl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQzMiA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQzMl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxubGV0IG51bV9iaXRzID0gMzJcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzXG5sZXQgYml0c19vZl9mbG9hdCA9IGJpdHNfb2ZfZmxvYXRcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCBjb21wYXJlID0gY29tcGFyZVxubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBvZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBvZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDMyLm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBJbmZpeF9jb21wYXJlID0gc3RydWN0XG4gIG9wZW4gUG9seVxuXG4gIGxldCAoID49ICkgKHggOiB0KSB5ID0geCA+PSB5XG4gIGxldCAoIDw9ICkgKHggOiB0KSB5ID0geCA8PSB5XG4gIGxldCAoID0gKSAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgKCA+ICkgKHggOiB0KSB5ID0geCA+IHlcbiAgbGV0ICggPCApICh4IDogdCkgeSA9IHggPCB5XG4gIGxldCAoIDw+ICkgKHggOiB0KSB5ID0geCA8PiB5XG5lbmRcblxubW9kdWxlIENvbXBhcmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZpeF9jb21wYXJlXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBhc2NlbmRpbmcgPSBjb21wYXJlXG4gIGxldCBkZXNjZW5kaW5nIHggeSA9IGNvbXBhcmUgeSB4XG4gIGxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IGVxdWFsICh4IDogdCkgeSA9IHggPSB5XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQ29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcbmxldCBvZl9pbnQzMiB0ID0gdFxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgdCA9IHRcbmxldCB0b19pbnQzMl9leG4gPSB0b19pbnQzMlxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50MzJfcG9wY291bnRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxubGV0IG9mX2ludCA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgb2ZfaW50X2V4biA9IENvbnYuaW50X3RvX2ludDMyX2V4blxubGV0IG9mX2ludF90cnVuYyA9IENvbnYuaW50X3RvX2ludDMyX3RydW5jXG5sZXQgdG9faW50ID0gQ29udi5pbnQzMl90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5pbnQzMl90b19pbnRfZXhuXG5sZXQgdG9faW50X3RydW5jID0gQ29udi5pbnQzMl90b19pbnRfdHJ1bmNcbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9faW50MzJcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX2ludDMyX2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gQ29udi5pbnQ2NF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludDY0ID0gQ29udi5pbnQzMl90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyXG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX2V4blxubGV0IG9mX25hdGl2ZWludF90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX3RydW5jXG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQzMl90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgcG93IGIgZSA9IG9mX2ludF9leG4gKEludF9tYXRoLlByaXZhdGUuaW50X3BvdyAodG9faW50X2V4biBiKSAodG9faW50X2V4biBlKSlcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5leHRlcm5hbCBic3dhcDMyIDogdCAtPiB0ID0gXCIlYnN3YXBfaW50MzJcIlxuXG5sZXQgYnN3YXAxNiB4ID0gQ2FtbC5JbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDMyIHgpIDE2XG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IENhbWwuSW50MzIubG9nb3JcbiAgbGV0ICggbHNyICkgPSBDYW1sLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gQ2FtbC5JbnQzMi5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBDYW1sLkludDMyLnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgQ2FtbC5JbnQzMi5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgQ2FtbC5JbnQzMi5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgQ2FtbC5JbnQzMi5wcmVkIHggPSBDYW1sLkludDMyLnplcm9cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQzMiBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50MzJbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50MzJfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IENhbWwuSW50MzIuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIltJbnQzMi5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQzMiBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIGkgPD0gQ2FtbC5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICAoKiBUaGUgW2kgPSAxXSBjaGVjayBpcyBuZWVkZWQgYmVjYXVzZSBjbHooMCkgaXMgdW5kZWZpbmVkICopXG4gICAgaWYgQ2FtbC5JbnQzMi5lcXVhbCBpIENhbWwuSW50MzIub25lIHRoZW4gMCBlbHNlIG51bV9iaXRzIC0gY2x6IChDYW1sLkludDMyLnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQzMiA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50MzJcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQzMiBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVseFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJWx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzIuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQzMlwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKENvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDMyXSBhbmQgW0ludDMyLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFJlcHIgPSBJbnQ2M19lbXVsLlJlcHJcblxuKCogSW4gYSB3b3JsZCB3aGVyZSB0aGUgY29tcGlsZXIgd291bGQgdW5kZXJzdGFuZCBbQEBpbW1lZGlhdGU2NF0gYXR0cmlidXRlcyBvbiB0eXBlXG4gICBkZWNsYXJhdGlvbnMsIHRoaXMgbW9kdWxlIGlzIGhvdyBvbmUgd291bGQgcHJvZHVjZSBhIFt0eXBlIHRdIHdpdGggdGhpcyBhdHRyaWJ1dGUuICopXG5tb2R1bGUgSW1tZWRpYXRlNjQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW1tZWRpYXRlIDogSW1tZWRpYXRlKSAoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpIDogc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcblxuICAgIHZhbCByZXByIDogdCByZXByXG4gIGVuZFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICBsZXQgcmVwciA9XG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+IChDYW1sLk9iai5tYWdpYyBJbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgICB8IFczMiAtPiAoQ2FtbC5PYmoubWFnaWMgTm9uX2ltbWVkaWF0ZSA6IHQgcmVwcilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEltbWVkaWF0ZTY0Lk1ha2UgKEludCkgKEludDYzX2VtdWwpXG5cbm1vZHVsZSBCYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgSW50X2ludGYuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludF90cnVuYyA6IHQgLT4gaW50XG4gICAgdmFsIG9mX2ludDMyIDogaW50MzIgLT4gdFxuICAgIHZhbCB0b19pbnQzMiA6IHQgLT4gSW50MzIudCBvcHRpb25cbiAgICB2YWwgdG9faW50MzJfdHJ1bmMgOiB0IC0+IEludDMyLnRcbiAgICB2YWwgb2ZfaW50NjQgOiBJbnQ2NC50IC0+IHQgb3B0aW9uXG4gICAgdmFsIG9mX2ludDY0X3RydW5jIDogSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0IG9wdGlvblxuICAgIHZhbCB0b19uYXRpdmVpbnQgOiB0IC0+IG5hdGl2ZWludCBvcHRpb25cbiAgICB2YWwgb2ZfbmF0aXZlaW50X3RydW5jIDogbmF0aXZlaW50IC0+IHRcbiAgICB2YWwgdG9fbmF0aXZlaW50X3RydW5jIDogdCAtPiBuYXRpdmVpbnRcbiAgICB2YWwgb2ZfZmxvYXRfdW5jaGVja2VkIDogZmxvYXQgLT4gdFxuICAgIHZhbCByZXByIDogKHQsIHQpIEludDYzX2VtdWwuUmVwci50XG4gICAgdmFsIGJzd2FwMTYgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXAzMiA6IHQgLT4gdFxuICAgIHZhbCBic3dhcDQ4IDogdCAtPiB0XG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE5hdGl2ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdG9faW50IHggPSBTb21lIHhcbiAgICBsZXQgdG9faW50X3RydW5jIHggPSB4XG5cbiAgICAoKiBbb2ZfaW50MzJfZXhuXSBpcyBhIHNhZmUgb3BlcmF0aW9uIG9uIHBsYXRmb3JtcyB3aXRoIDY0LWJpdCB3b3JkIHNpemVzLiAqKVxuICAgIGxldCBvZl9pbnQzMiA9IG9mX2ludDMyX2V4blxuICAgIGxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IHRvX25hdGl2ZWludCB4XG4gICAgbGV0IHRvX25hdGl2ZWludCB4ID0gU29tZSAodG9fbmF0aXZlaW50IHgpXG4gICAgbGV0IHJlcHIgPSBJbnQ2M19lbXVsLlJlcHIuSW50XG4gICAgbGV0IGJzd2FwMzIgdCA9IEludDY0LnRvX2ludF90cnVuYyAoSW50NjQuYnN3YXAzMiAoSW50NjQub2ZfaW50IHQpKVxuICAgIGxldCBic3dhcDQ4IHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwNDggKEludDY0Lm9mX2ludCB0KSlcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIFMpID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiAobW9kdWxlIE5hdGl2ZSA6IFMpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgSW50NjNfZW11bCA6IFMpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSAodmFsIEJhY2tlbmQuaW1wbCA6IEJhY2tlbmQuUylcblxubW9kdWxlIE92ZXJmbG93X2V4biA9IHN0cnVjdFxuICBsZXQgKCArICkgdCB1ID1cbiAgICBsZXQgc3VtID0gdCArIHUgaW5cbiAgICBpZiBiaXRfb3IgKGJpdF94b3IgdCB1KSAoYml0X3hvciB0IChiaXRfbm90IHN1bSkpIDwgemVyb1xuICAgIHRoZW4gc3VtXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCArICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInN1bVwiLCBzZXhwX29mX3Qgc3VtIF0pXG4gIDs7XG5cbiAgbGV0ICggLSApIHQgdSA9XG4gICAgbGV0IGRpZmYgPSB0IC0gdSBpblxuICAgIGxldCBwb3NfZGlmZiA9IHQgPiB1IGluXG4gICAgaWYgdCA8PiB1ICYmIEJvb2wuKCA8PiApIHBvc19kaWZmIChpc19wb3NpdGl2ZSBkaWZmKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLSApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJkaWZmXCIsIHNleHBfb2ZfdCBkaWZmIF0pXG4gICAgZWxzZSBkaWZmXG4gIDs7XG5cbiAgbGV0IG5lZ2F0aXZlX29uZSA9IG9mX2ludCAoLTEpXG4gIGxldCBkaXZfd291bGRfb3ZlcmZsb3cgdCB1ID0gdCA9IG1pbl92YWx1ZSAmJiB1ID0gbmVnYXRpdmVfb25lXG5cbiAgbGV0ICggKiApIHQgdSA9XG4gICAgbGV0IHByb2R1Y3QgPSB0ICogdSBpblxuICAgIGlmIHUgPD4gemVybyAmJiAoZGl2X3dvdWxkX292ZXJmbG93IHByb2R1Y3QgdSB8fCBwcm9kdWN0IC8gdSA8PiB0KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKiApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCBwcm9kdWN0IF0pXG4gICAgZWxzZSBwcm9kdWN0XG4gIDs7XG5cbiAgbGV0ICggLyApIHQgdSA9XG4gICAgaWYgZGl2X3dvdWxkX292ZXJmbG93IHQgdVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCAodCAvIHUpIF0pXG4gICAgZWxzZSB0IC8gdVxuICA7O1xuXG4gIGxldCBhYnMgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcImFicyBvdmVyZmxvd1wiIGVsc2UgYWJzIHRcbiAgbGV0IG5lZyB0ID0gaWYgdCA9IG1pbl92YWx1ZSB0aGVuIGZhaWx3aXRoIFwibmVnIG92ZXJmbG93XCIgZWxzZSBuZWcgdFxuZW5kXG5cbmxldCAoKSA9IGFzc2VydCAoSW50LiggPSApIG51bV9iaXRzIDYzKVxuXG5sZXQgcmFuZG9tX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGJvdW5kID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50IHN0YXRlICh0b19pbnRfZXhuIGJvdW5kKSlcbjs7XG5cbmxldCByYW5kb21fb2ZfaW50NjQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludDY0X2V4biAoUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlICh0b19pbnQ2NCBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHJhbmRvbV9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX29mX2ludDY0XG47O1xuXG5sZXQgcmFuZG9tX2luY2xfb2ZfaW50ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQgKFJhbmRvbS5TdGF0ZS5pbnRfaW5jbCBzdGF0ZSAodG9faW50X2V4biBsbykgKHRvX2ludF9leG4gaGkpKVxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHN0YXRlICh0b19pbnQ2NCBsbykgKHRvX2ludDY0IGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21faW5jbF9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX2luY2xfb2ZfaW50NjRcbjs7XG5cbmxldCBmbG9vcl9sb2cyIHQgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gdCB8PiB0b19pbnRfZXhuIHw+IEludC5mbG9vcl9sb2cyXG4gIHwgVzMyIC0+XG4gICAgaWYgdCA8PSB6ZXJvXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKTtcbiAgICBsZXQgZmxvb3JfbG9nMiA9IHJlZiAoSW50LiggLSApIG51bV9iaXRzIDIpIGluXG4gICAgd2hpbGUgZXF1YWwgemVybyAoYml0X2FuZCB0IChzaGlmdF9sZWZ0IG9uZSAhZmxvb3JfbG9nMikpIGRvXG4gICAgICBmbG9vcl9sb2cyIDo9IEludC4oIC0gKSAhZmxvb3JfbG9nMiAxXG4gICAgZG9uZTtcbiAgICAhZmxvb3JfbG9nMlxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcHIgPSBSZXByXG5cbiAgbGV0IHJlcHIgPSByZXByXG5cbiAgbW9kdWxlIEVtdWwgPSBJbnQ2M19lbXVsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2h0YmwuS2V5ICopXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIFR3byBbdF1zIHRoYXQgW2NvbXBhcmVdIGVxdWFsIG11c3QgaGF2ZSBlcXVhbCBoYXNoZXMgZm9yIHRoZSBoYXNodGFibGVcbiAgICAgICAgdG8gYmVoYXZlIHByb3Blcmx5LiAqKVxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLk1lcmdlX2ludG9fYWN0aW9uICopXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJlbW92ZVxuICAgIHwgU2V0X3RvIG9mICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gc2lnXG4gICgqKiB7MiBBY2Nlc3NvcnN9ICopXG5cbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG5cbiAgdmFsIHNleHBfb2Zfa2V5IDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBTZXhwLnRcbiAgdmFsIGNsZWFyIDogKF8sIF8pIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBBdHRlbXB0aW5nIHRvIG1vZGlmeSAoW3NldF0sIFtyZW1vdmVdLCBldGMuKSB0aGUgaGFzaHRhYmxlIGR1cmluZyBpdGVyYXRpb24gKFtmb2xkXSxcbiAgICAgIFtpdGVyXSwgW2l0ZXJfa2V5c10sIFtpdGVyaV0pIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgJ2IpIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXykgdCAtPiBmOignYSBrZXkgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYikgdCAtPiBmOignYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIG92ZXIgYm90aCBrZXlzIGFuZCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLml0ZXJpIGggfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIHByaW50X2VuZGxpbmUgKFByaW50Zi5zcHJpbnRmIFwiJWQtJWRcIiBrZXkgZGF0YSkpOztcbiAgICAgIDEtNFxuICAgICAgNS02XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fSAqKVxuICB2YWwgaXRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnQgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBib29sXG4gIHZhbCByZW1vdmUgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IHVuaXRcbiAgdmFsIGNob29zZSA6ICgnYSwgJ2IpIHQgLT4gKCdhIGtleSAqICdiKSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAqICdiXG5cbiAgKCoqIFNldHMgdGhlIGdpdmVuIFtrZXldIHRvIFtkYXRhXS4gKilcbiAgdmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2FkZF0gYW5kIFthZGRfZXhuXSBsZWF2ZSB0aGUgdGFibGUgdW5jaGFuZ2VkIGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgcHJlc2VudC4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IFsgYE9rIHwgYER1cGxpY2F0ZSBdXG5cbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtjaGFuZ2UgdCBrZXkgfmZdIGNoYW5nZXMgW3RdJ3MgdmFsdWUgZm9yIFtrZXldIHRvIGJlIFtmIChmaW5kIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOignYiBvcHRpb24gLT4gJ2Igb3B0aW9uKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCdiIG9wdGlvbiAtPiAnYikgLT4gdW5pdFxuXG4gICgqKiBbdXBkYXRlX2FuZF9yZXR1cm4gdCBrZXkgfmZdIGlzIFt1cGRhdGVdLCBidXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIFtmIG9dLiAqKVxuICB2YWwgdXBkYXRlX2FuZF9yZXR1cm4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+ICdiXG5cbiAgKCoqIFttYXAgdCBmXSByZXR1cm5zIGEgbmV3IHRhYmxlIHdpdGggdmFsdWVzIHJlcGxhY2VkIGJ5IHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgW2ZdXG4gICAgICB0byB0aGUgY3VycmVudCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBsZXQgaCcgPSBIYXNodGJsLm1hcCBoIH5mOihmdW4geCAtPiB4ICogMikgaW5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaCc7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDEyKTsgKDEsIDgpXVxuICAgICAgdn0gKilcbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogTGlrZSBbbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgdGFibGUgYnkgZmlsdGVyaW5nIHRoZSBnaXZlbiB0YWJsZSdzIHZhbHVlcyBieSBbZl06IHRoZSBrZXlzIGZvciB3aGljaFxuICAgICAgW2ZdIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgdmFsdWUgcmV0dXJucyBbU29tZV0gYXJlIGtlcHQsIGFuZCB0aG9zZSBmb3Igd2hpY2ggaXRcbiAgICAgIHJldHVybnMgW05vbmVdIGFyZSBkaXNjYXJkZWQuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLmZpbHRlcl9tYXAgaCB+ZjooZnVuIHggLT4gaWYgeCA+IDUgdGhlbiBTb21lIHggZWxzZSBOb25lKVxuICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoNSwgNildXG4gICAgICB2fSAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW2ZpbHRlcl9tYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IpIHQgLT4gZjooJ2Ega2V5IC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogUmV0dXJucyBuZXcgdGFibGVzIHdpdGggYm91bmQgdmFsdWVzIHBhcnRpdGlvbmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZFxuICAgICAgdmFsdWVzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIExpa2UgW3BhcnRpdGlvbl9tYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogUmV0dXJucyBhIHBhaXIgb2YgdGFibGVzIFsodDEsIHQyKV0sIHdoZXJlIFt0MV0gY29udGFpbnMgYWxsIHRoZSBlbGVtZW50cyBvZiB0aGVcbiAgICAgIGluaXRpYWwgdGFibGUgd2hpY2ggc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXSwgYW5kIFt0Ml0gY29udGFpbnMgdGhlIHJlc3QuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgKCoqIExpa2UgW3BhcnRpdGlvbl90Zl0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogW2ZpbmRfb3JfYWRkIHQgayB+ZGVmYXVsdF0gcmV0dXJucyB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGgga2V5IFtrXSBpZiBpdCBpcyBpbiB0aGVcbiAgICAgIHRhYmxlIFt0XSwgYW5kIG90aGVyd2lzZSBhc3NpZ25zIFtrXSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgW2RlZmF1bHQgKCldLiAqKVxuICB2YWwgZmluZF9vcl9hZGQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBkZWZhdWx0Oih1bml0IC0+ICdiKSAtPiAnYlxuXG4gICgqKiBMaWtlIFtmaW5kX29yX2FkZF0gYnV0IFtkZWZhdWx0XSB0YWtlcyB0aGUga2V5IGFzIGFuIGFyZ3VtZW50LiAqKVxuICB2YWwgZmluZGlfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDooJ2Ega2V5IC0+ICdiKSAtPiAnYlxuXG4gICgqKiBbZmluZCB0IGtdIHJldHVybnMgW1NvbWVdICh0aGUgY3VycmVudCBiaW5kaW5nKSBvZiBba10gaW4gW3RdLCBvciBbTm9uZV0gaWYgbm8gc3VjaFxuICAgICAgYmluZGluZyBleGlzdHMuICopXG4gIHZhbCBmaW5kIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIFtmaW5kX2V4biB0IGtdIHJldHVybnMgdGhlIGN1cnJlbnQgYmluZGluZyBvZiBba10gaW4gW3RdLCBvciByYWlzZXMgW0NhbWwuTm90X2ZvdW5kXVxuICAgICAgb3IgW05vdF9mb3VuZF9zXSBpZiBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYlxuXG4gICgqKiBbZmluZF9hbmRfY2FsbCB0IGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRdXG5cbiAgICAgIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIFttYXRjaCBmaW5kIHQgayB3aXRoIFNvbWUgdiAtPiBpZl9mb3VuZCB2IHwgTm9uZSAtPiBpZl9ub3RfZm91bmQga11cblxuICAgICAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSB0aGUgb3B0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooJ2IgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICAoKiogSnVzdCBsaWtlIFtmaW5kX2FuZF9jYWxsXSwgYnV0IHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50IHdoaWNoIGlzIHBhc3NlZCB0byBbaWZfZm91bmRdXG4gICAgICBhbmQgW2lmX25vdF9mb3VuZF0sIHNvIHRoYXQgdGhlIGNsaWVudCBjb2RlIGNhbiBhdm9pZCBhbGxvY2F0aW5nIGNsb3N1cmVzIG9yIHVzaW5nXG4gICAgICByZWZzIHRvIHBhc3MgdGhpcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWZ1bCBpbiBjb2RlXG4gICAgICB3aGljaCB0cmllcyB0byBtaW5pbWl6ZSBoZWFwIGFsbG9jYXRpb24uICopXG4gIHZhbCBmaW5kX2FuZF9jYWxsMVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gaWZfZm91bmQ6KCdiIC0+ICdkIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRfYW5kX2NhbGwyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBiOidlXG4gICAgLT4gaWZfZm91bmQ6KCdiIC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGlmX2ZvdW5kOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2QgLT4gJ2UgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICAoKiogW2ZpbmRfYW5kX3JlbW92ZSB0IGtdIHJldHVybnMgU29tZSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgayBpbiB0IGFuZCByZW1vdmVzIGl0LFxuICAgICAgb3IgTm9uZSBpcyBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9hbmRfcmVtb3ZlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIE1lcmdlcyB0d28gaGFzaHRhYmxlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiBbbWVyZ2UgZiBoMSBoMl0gaGFzIGFzIGtleXMgdGhlIHNldCBvZiBhbGwgW2tdIGluIHRoZSB1bmlvbiBvZiB0aGVcbiAgICAgIHNldHMgb2Yga2V5cyBvZiBbaDFdIGFuZCBbaDJdIGZvciB3aGljaCBbZChrKV0gaXMgbm90IE5vbmUsIHdoZXJlOlxuXG4gICAgICBkKGspID1cbiAgICAgIC0gW2YgfmtleTprIChgTGVmdCBkMSldXG4gICAgICAgIGlmIFtrXSBpbiBbaDFdIG1hcHMgdG8gZDEsIGFuZCBbaDJdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYFJpZ2h0IGQyKV1cbiAgICAgICAgaWYgW2tdIGluIFtoMl0gbWFwcyB0byBkMiwgYW5kIFtoMV0gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciBba107XG5cbiAgICAgIC0gW2YgfmtleTprIChgQm90aCAoZDEsIGQyKSldXG4gICAgICAgIG90aGVyd2lzZSwgd2hlcmUgW2tdIGluIFtoMV0gbWFwcyB0byBbZDFdIGFuZCBba10gaW4gW2gyXSBtYXBzIHRvIFtkMl0uXG5cbiAgICAgIEVhY2gga2V5IFtrXSBpcyBtYXBwZWQgdG8gYSBzaW5nbGUgcGllY2Ugb2YgZGF0YSBbeF0sIHdoZXJlIFtkKGspID0gU29tZSB4XS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ2EpIHRcbiAgICAtPiAoJ2ssICdiKSB0XG4gICAgLT4gZjooa2V5OidrIGtleSAtPiBbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdiIHwgYEJvdGggb2YgJ2EgKiAnYiBdIC0+ICdjIG9wdGlvbilcbiAgICAtPiAoJ2ssICdjKSB0XG5cblxuICAoKiogRXZlcnkgW2tleV0gaW4gW3NyY10gd2lsbCBiZSByZW1vdmVkIG9yIHNldCBpbiBbZHN0XSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZVxuICAgICAgb2YgW2ZdLiAqKVxuICB2YWwgbWVyZ2VfaW50b1xuICAgIDogIHNyYzooJ2ssICdhKSB0XG4gICAgLT4gZHN0OignaywgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2sga2V5IC0+ICdhIC0+ICdiIG9wdGlvbiAtPiAnYiBNZXJnZV9pbnRvX2FjdGlvbi50KVxuICAgIC0+IHVuaXRcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwga2V5cyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwga2V5cyA6ICgnYSwgXykgdCAtPiAnYSBrZXkgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBkYXRhIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCBkYXRhIDogKF8sICdiKSB0IC0+ICdiIGxpc3RcblxuICAoKiogW2ZpbHRlcl9pbnBsYWNlIHQgfmZdIHJlbW92ZXMgYWxsIHRoZSBlbGVtZW50cyBmcm9tIFt0XSB0aGF0IGRvbid0IHNhdGlzZnkgW2ZdLiAqKVxuICB2YWwgZmlsdGVyX2tleXNfaW5wbGFjZSA6ICgnYSwgXykgdCAtPiBmOignYSBrZXkgLT4gYm9vbCkgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiB1bml0XG5cbiAgKCoqIFttYXBfaW5wbGFjZSB0IH5mXSBhcHBsaWVzIFtmXSB0byBhbGwgZWxlbWVudHMgaW4gW3RdLCB0cmFuc2Zvcm1pbmcgdGhlbSBpblxuICAgICAgcGxhY2UuICopXG4gIHZhbCBtYXBfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOignYiAtPiAnYikgLT4gdW5pdFxuXG4gIHZhbCBtYXBpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYikgLT4gdW5pdFxuXG4gICgqKiBbZmlsdGVyX21hcF9pbnBsYWNlXSBjb21iaW5lcyB0aGUgZWZmZWN0cyBvZiBbbWFwX2lucGxhY2VdIGFuZCBbZmlsdGVyX2lucGxhY2VdLiAqKVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+ICdiIG9wdGlvbikgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2Igb3B0aW9uKSAtPiB1bml0XG5cbiAgKCoqIFtlcXVhbCBmIHQxIHQyXSBhbmQgW3NpbWlsYXIgZiB0MSB0Ml0gYm90aCByZXR1cm4gdHJ1ZSBpZmYgW3QxXSBhbmQgW3QyXSBoYXZlIHRoZVxuICAgICAgc2FtZSBrZXlzIGFuZCBmb3IgYWxsIGtleXMgW2tdLCBbZiAoZmluZF9leG4gdDEgaykgKGZpbmRfZXhuIHQyIGspXS4gIFtlcXVhbF0gYW5kXG4gICAgICBbc2ltaWxhcl0gb25seSBkaWZmZXIgaW4gdGhlaXIgdHlwZXMuICopXG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuXG4gIHZhbCBzaW1pbGFyIDogKCdiMSAtPiAnYjIgLT4gYm9vbCkgLT4gKCdhLCAnYjEpIHQgLT4gKCdhLCAnYjIpIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCAoa2V5LCBkYXRhKSBwYWlycyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgdG9fYWxpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgbGlzdFxuXG5cbiAgKCoqIFtyZW1vdmVfaWZfemVyb10ncyBkZWZhdWx0IGlzIFtmYWxzZV0uICopXG4gIHZhbCBpbmNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gIHZhbCBkZWNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE11bHRpID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gICgqKiBbYWRkX211bHRpIHQgfmtleSB+ZGF0YV0gaWYgW2tleV0gaXMgcHJlc2VudCBpbiB0aGUgdGFibGUgdGhlbiBjb25zXG4gICAgICBbZGF0YV0gb24gdGhlIGxpc3QsIG90aGVyd2lzZSBhZGQgW2tleV0gd2l0aCBhIHNpbmdsZSBlbGVtZW50IGxpc3QuICopXG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW3JlbW92ZV9tdWx0aSB0IGtleV0gdXBkYXRlcyB0aGUgdGFibGUsIHJlbW92aW5nIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGJvdW5kIHRvXG4gICAgICBba2V5XS4gSWYgdGhlIGxpc3QgaGFzIG9ubHkgb25lIGVsZW1lbnQgKG9yIGlzIGVtcHR5KSB0aGVuIHRoZSBiaW5kaW5nIGlzXG4gICAgICByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCBfIGxpc3QpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogW2ZpbmRfbXVsdGkgdCBrZXldIHJldHVybnMgdGhlIGVtcHR5IGxpc3QgaWYgW2tleV0gaXMgbm90IHByZXNlbnQgaW4gdGhlIHRhYmxlLFxuICAgICAgcmV0dXJucyBbdF0ncyB2YWx1ZXMgZm9yIFtrZXldIG90aGVyd2lzZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2Ega2V5IC0+ICdiIGxpc3RcbmVuZFxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ2tleSBLZXkudFxuICAtPiAnelxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ3pcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGUgOiAoJ2Ega2V5LCAnYiwgdW5pdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnYSBrZXksICdiLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAoJ2Ega2V5LCAnYiBsaXN0LCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYiBsaXN0KSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpXG4gICAgICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfZXhuXG4gICAgOiAoJ2Ega2V5LCAnciwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KSAtPiAnciBsaXN0IC0+ICgnYSwgJ3IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cblxuICB2YWwgZ3JvdXBcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCdyIC0+ICdiKVxuICAgICAgICAtPiBjb21iaW5lOignYiAtPiAnYiAtPiAnYilcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiAoJ2EsICdiKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9ycyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICAoKiogezIgQ3JlYXRvcnN9ICopXG5cbiAgKCoqIFRoZSBtb2R1bGUgeW91IHBhc3MgdG8gW2NyZWF0ZV0gbXVzdCBoYXZlIGEgdHlwZSB0aGF0IGlzIGhhc2hhYmxlLCBzZXhwYWJsZSwgYW5kXG4gICAgICBjb21wYXJhYmxlLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIEludCk7O1xuICAgICAgICAtIDogKGludCwgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+OztcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDMsIFwic29tZXRoaW5nXCIpOyAoMiwgXCJ3aGF0ZXZlclwiKV1cbiAgICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogV2hlcmVhcyBbb2ZfYWxpc3RdIHdpbGwgcmVwb3J0IFtEdXBsaWNhdGVfa2V5XSBubyBtYXR0ZXIgaG93IG1hbnkgZHVwcyB0aGVyZSBhcmUgaW5cbiAgICAgIHlvdXIgbGlzdCwgW29mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc10gd2lsbCByZXBvcnQgZWFjaCBhbmQgZXZlcnkgZHVwbGljYXRlIGVudHJ5LlxuXG4gICAgICBGb3IgZXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgSGFzaHRibC5vZl9hbGlzdCAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleSBvZiBpbnQgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5IDFcblxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleXMgb2YgaW50IGxpc3QgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5cyBbMTsgMl1cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSB7eyFNdWx0aX0gXCJtdWx0aVwifSBoYXNodGFibGUsIGkuZS4sIGEgaGFzaHRhYmxlIHdoZXJlIGVhY2gga2V5IHBvaW50cyB0byBhXG4gICAgICBsaXN0IHBvdGVudGlhbGx5IGNvbnRhaW5pbmcgbXVsdGlwbGUgdmFsdWVzLiBTbyBpbnN0ZWFkIG9mIHNob3J0LWNpcmN1aXRpbmcgd2l0aCBhXG4gICAgICBbYER1cGxpY2F0ZV9rZXldIHZhcmlhbnQgb24gZHVwbGljYXRlcywgYXMgaW4gW29mX2FsaXN0XSwgW29mX2FsaXN0X211bHRpXSBmb2xkc1xuICAgICAgdGhvc2UgdmFsdWVzIGludG8gYSBsaXN0IGZvciB0aGUgZ2l2ZW4ga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X211bHRpIChtb2R1bGUgSW50KSBbKDEsIFwiYVwiKTsgKDEsIFwiYlwiKTsgKDIsIFwiY1wiKTsgKDIsIFwiZFwiKV07O1xuICAgICAgdmFsIGggOiAoaW50LCBzdHJpbmcgbGlzdCkgSGFzaHRibC50ID0gPGFic3RyPlxuXG4gICAgICBIYXNodGJsLmZpbmRfZXhuIGggMTs7XG4gICAgICAtIDogc3RyaW5nIGxpc3QgPSBbXCJiXCI7IFwiYVwiXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QpIHRcblxuICAoKiogQXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyIGxpc3RdIHRvIGNyZWF0ZSB0aGVcbiAgICAgIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZS5cblxuICAgICAge1sgY3JlYXRlX21hcHBlZCBnZXRfa2V5IGdldF9kYXRhIFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCBnZXRfZGF0YSB4MTsgLi4uOyBnZXRfa2V5IHhuLCBnZXRfZGF0YSB4bl1cbiAgICAgIF19XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBIYXNodGJsLmNyZWF0ZV9tYXBwZWQgKG1vZHVsZSBJbnQpXG4gICAgICAgICAgICB+Z2V0X2tleTooZnVuIHggLT4geClcbiAgICAgICAgICAgIH5nZXRfZGF0YTooZnVuIHggLT4geCArIDEpXG4gICAgICAgICAgIFsxOyAyOyAzXTs7XG4gICAgICAgIHZhbCBoIDogWyBgRHVwbGljYXRlX2tleXMgb2YgaW50IGxpc3QgfCBgT2sgb2YgKGludCwgaW50KSBIYXNodGJsLnQgXSA9IGBPayA8YWJzdHI+XG5cbiAgICAgICAgbGV0IGggPVxuICAgICAgICAgIG1hdGNoIGggd2l0aFxuICAgICAgICAgIHwgYE9rIHggLT4geFxuICAgICAgICAgIHwgYER1cGxpY2F0ZV9rZXlzIF8gLT4gZmFpbHdpdGggXCJcIlxuICAgICAgICBpblxuICAgICAgICBIYXNodGJsLmZpbmRfZXhuIGggMTs7XG4gICAgICAgIC0gOiBpbnQgPSAyXG4gICAgICB2fSAqKVxuICB2YWwgY3JlYXRlX21hcHBlZFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdCBPcl9lcnJvci50XG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdFxuXG4gICgqKiBMaWtlIFtjcmVhdGVfbWFwcGVkXSwgYXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyXG4gICAgICBsaXN0XSB0byBjcmVhdGUgdGhlIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZSAtLVxuICAgICAgYW5kIHRoZW4sIGxpa2UgW2FkZF9tdWx0aV0sIGZvbGRzIHRvZ2V0aGVyIHZhbHVlcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUga2V5cy4gSGVyZSxcbiAgICAgIHRob3VnaCwgdGhlIGZ1bmN0aW9uIHVzZWQgZm9yIHRoZSBmb2xkaW5nIGlzIGdpdmVuIGJ5IFtjb21iaW5lXSAoaW5zdGVhZCBvZiBqdXN0XG4gICAgICBiZWluZyBhIFtjb25zXSkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLmdyb3VwIChtb2R1bGUgSW50KVxuICAgICAgICAgICB+Z2V0X2tleTooZnVuIHggLT4geCAvIDIpXG4gICAgICAgICAgIH5nZXRfZGF0YTooZnVuIHggLT4geClcbiAgICAgICAgICAgfmNvbWJpbmU6KGZ1biB4IHkgLT4geCAqIHkpXG4gICAgICAgICAgICBbIDE7IDI7IDM7IDRdXG4gICAgICAgICB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWygyLCA0KTsgKDEsIDYpOyAoMCwgMSldXG4gICAgICAgdn0gKilcbiAgdmFsIGdyb3VwXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gZ2V0X2RhdGE6KCdyIC0+ICdiKVxuICAgIC0+IGNvbWJpbmU6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBzaWdcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gICgqKiBXZSBwcm92aWRlIGEgW3NleHBfb2ZfdF0gYnV0IG5vdCBhIFt0X29mX3NleHBdIGZvciB0aGlzIHR5cGUgYmVjYXVzZSBvbmUgbmVlZHMgdG8gYmVcbiAgICAgIGV4cGxpY2l0IGFib3V0IHRoZSBoYXNoIGFuZCBjb21wYXJpc29uIGZ1bmN0aW9ucyB1c2VkIHdoZW4gY3JlYXRpbmcgYSBoYXNodGFibGUuXG4gICAgICBOb3RlIHRoYXQgW0hhc2h0YmwuUG9seS50XSBkb2VzIGhhdmUgW1tAQGRlcml2aW5nIHNleHBdXSwgYW5kIHVzZXMgT0NhbWwncyBidWlsdC1pblxuICAgICAgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBhbmQgYW5kIHBvbHltb3JwaGljIGhhc2hpbmcuICopXG4gIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2IgLT4gU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHAudFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCAoKiogQGlubGluZSAqKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICgqKiBAaW5saW5lICopXG5cblxuICBpbmNsdWRlIE11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgKCoqIEBpbmxpbmUgKilcblxuICB2YWwgaGFzaGFibGVfcyA6ICgna2V5LCBfKSB0IC0+ICdrZXkgS2V5LnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgIDogICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cblxuICB2YWwgaGFzaGFibGUgOiAnYSBIYXNoYWJsZS50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAnYSBrZXkgPSAnYVxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBpbmNsdWRlIEFjY2Vzc29ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnaywgJ3YpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxuICB2YWwgc2V4cF9vZl9tX190XG4gICAgOiAgKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoJ3YgLT4gU2V4cC50KVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaHRibCA9IHNpZ1xuICAoKiogQSBoYXNoIHRhYmxlIGlzIGEgbXV0YWJsZSBkYXRhIHN0cnVjdHVyZSBpbXBsZW1lbnRpbmcgYSBtYXAgYmV0d2VlbiBrZXlzIGFuZCB2YWx1ZXMuXG4gICAgICBJdCBzdXBwb3J0cyBjb25zdGFudC10aW1lIGxvb2t1cCBhbmQgaW4tcGxhY2UgbW9kaWZpY2F0aW9uLlxuXG4gICAgICB7MSBVc2FnZX1cblxuICAgICAgQXMgYSBzaW1wbGUgZXhhbXBsZSwgd2UnbGwgY3JlYXRlIGEgaGFzaCB0YWJsZSB3aXRoIHN0cmluZyBrZXlzIHVzaW5nIHRoZVxuICAgICAge3shY3JlYXRlfVtjcmVhdGVdfSBjb25zdHJ1Y3Rvciwgd2hpY2ggZXhwZWN0cyBhIG1vZHVsZSBkZWZpbmluZyB0aGUga2V5J3MgdHlwZTpcblxuICAgICAge1tcbiAgICAgICAgbGV0IGggPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFN0cmluZyk7O1xuICAgICAgICB2YWwgaCA6IChzdHJpbmcsICdfYSkgSGFzaHRibC50ID0gPGFic3RyPlxuICAgICAgXX1cblxuICAgICAgV2UgY2FuIHNldCB0aGUgdmFsdWVzIG9mIGluZGl2aWR1YWwga2V5cyB3aXRoIHt7IXNldH1bc2V0XX0uIElmIHRoZSBrZXkgYWxyZWFkeSBoYXNcbiAgICAgIGEgdmFsdWUsIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo1OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiZm9vXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImJhclwiIH5kYXRhOjY7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgdn1cblxuICAgICAgV2UgY2FuIGFjY2VzcyB2YWx1ZXMgYnkga2V5LCBvciBkdW1wIGFsbCBvZiB0aGUgaGFzaCB0YWJsZSdzIGRhdGE6XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmZpbmQgaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgb3B0aW9uID0gU29tZSA2XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgPSA2XG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgNik7IChcImJhclwiLCA2KV1cbiAgICAgIHZ9XG5cbiAgICAgIHt7IWNoYW5nZX1bY2hhbmdlXX0gbGV0cyB1cyBjaGFuZ2UgYSBrZXkncyB2YWx1ZSBieSBhcHBseWluZyB0aGUgZ2l2ZW4gZnVuY3Rpb246XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmNoYW5nZSBoIFwiZm9vXCIgKGZ1biB4IC0+XG4gICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gU29tZSAoeCAqIDIpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICk7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGg7O1xuICAgICAgLSA6IChzdHJpbmcgKiBpbnQpIGxpc3QgPSBbKFwiZm9vXCIsIDEyKTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuXG4gICAgICBXZSBjYW4gdXNlIHt7IW1lcmdlfVttZXJnZV19IHRvIG1lcmdlIHR3byBoYXNodGFibGVzIHdpdGggZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlclxuICAgICAgaG93IHdlIGNob29zZSB2YWx1ZXMgd2hlbiBhIGtleSBpcyBwcmVzZW50IGluIHRoZSBmaXJzdCAoXCJsZWZ0XCIpIGhhc2h0YWJsZSwgdGhlXG4gICAgICBzZWNvbmQgKFwicmlnaHRcIiksIG9yIGJvdGguIEhlcmUsIHdlJ2xsIGNvbnMgdGhlIHZhbHVlcyB3aGVuIGJvdGggaGFzaHRhYmxlcyBoYXZlIGFcbiAgICAgIGtleTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9XG5cbiAgICAgIHsxIEludGVyZmFjZX0gKilcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zdWJtb2R1bGVzICgqKiBAaW5saW5lICopXG5cbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gQWNjZXNzb3JzXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzID0gQ3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgTXVsdGkgPSBNdWx0aVxuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBTX3dpdGhvdXRfc3VibW9kdWxlc1xuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxuICBtb2R1bGUgS2V5ID0gS2V5XG4gIG1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IE1lcmdlX2ludG9fYWN0aW9uXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgPSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIG1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgICB0eXBlICdhIHRcblxuICAgICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIGVuZFxuXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IGludCBIYXNodGJsLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfdGFibGUgPSAoU3RyaW5nLnQsIGludCkgSGFzaHRibC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IEhhc2h0YmwuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmRcbiAgICAgIHN5bnRheCBkb2Vzbid0IChiZWNhdXNlIFt0X29mX3NleHBdIGRvZXNuJ3Qga25vdyB3aGF0IGNvbXBhcmlzb24vaGFzaCBmdW5jdGlvbiB0b1xuICAgICAgdXNlKS4gKilcbiAgbW9kdWxlIE0gKEsgOiBULlQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2KSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiovKiopXG5cbiAgKCpfIFNlZSB0aGUgSmFuZSBTdHJlZXQgU3R5bGUgR3VpZGUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIFtQcml2YXRlXSBzdWJtb2R1bGVzOlxuXG4gICAgaHR0cHM6Ly9vcGVuc291cmNlLmphbmVzdHJlZXQuY29tL3N0YW5kYXJkcy8jcHJpdmF0ZS1zdWJtb2R1bGVzICopXG4gIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcblxuICAgIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiAoJ2tleSwgXykgdCAtPiAna2V5IEhhc2hhYmxlLnRcbiAgZW5kXG5lbmRcbiIsIigqIEEgZmV3IHNtYWxsIHRoaW5ncyBjb3BpZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiBCYXNlIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gdXMsIHNvIHdlXG4gICBjYW4ndCB1c2UgdGhlbS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbigqIEl0cyBpbXBvcnRhbnQgdGhhdCBFbXB0eSBoYXZlIG5vIGFyZ3MuIEl0J3MgdGVtcHRpbmcgdG8gbWFrZSB0aGlzIHR5cGUgYSByZWNvcmRcbiAgIChlLmcuIHRvIGhvbGQgdGhlIGNvbXBhcmUgZnVuY3Rpb24pLCBidXQgYSBsb3Qgb2YgbWVtb3J5IGlzIHNhdmVkIGJ5IEVtcHR5IGJlaW5nIGFuXG4gICBpbW1lZGlhdGUsIHNpbmNlIGFsbCB1bnVzZWQgYnVja2V0cyBpbiB0aGUgaGFzaHRibCBkb24ndCB1c2UgYW55IG1lbW9yeSAoYmVzaWRlcyB0aGVcbiAgIGFycmF5IGNlbGwpICopXG50eXBlICgnaywgJ3YpIHQgPVxuICB8IEVtcHR5XG4gIHwgTm9kZSBvZlxuICAgICAgeyBtdXRhYmxlIGxlZnQgOiAoJ2ssICd2KSB0XG4gICAgICA7IGtleSA6ICdrXG4gICAgICA7IG11dGFibGUgdmFsdWUgOiAndlxuICAgICAgOyBtdXRhYmxlIGhlaWdodCA6IGludFxuICAgICAgOyBtdXRhYmxlIHJpZ2h0IDogKCdrLCAndikgdFxuICAgICAgfVxuICB8IExlYWYgb2ZcbiAgICAgIHsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICB9XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuOztcblxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IExlYWYgXyAtPiAxXG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodDsgcmlnaHQgPSBfIH0gLT4gaGVpZ2h0XG47O1xuXG5sZXQgaW52YXJpYW50IGNvbXBhcmUgPVxuICBsZXQgbGVnYWxfbGVmdF9rZXkga2V5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIHsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IGxlZnRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgbGVmdF9rZXkga2V5IDwgMClcbiAgaW5cbiAgbGV0IGxlZ2FsX3JpZ2h0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSByaWdodF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPlxuICAgICAgYXNzZXJ0IChjb21wYXJlIHJpZ2h0X2tleSBrZXkgPiAwKVxuICBpblxuICBsZXQgcmVjIGludiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSB8IExlYWYgXyAtPiAoKVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGs7IHZhbHVlID0gXzsgaGVpZ2h0ID0gaDsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGhsLCBociA9IGhlaWdodCBsZWZ0LCBoZWlnaHQgcmlnaHQgaW5cbiAgICAgIGludiBsZWZ0O1xuICAgICAgaW52IHJpZ2h0O1xuICAgICAgbGVnYWxfbGVmdF9rZXkgayBsZWZ0O1xuICAgICAgbGVnYWxfcmlnaHRfa2V5IGsgcmlnaHQ7XG4gICAgICBhc3NlcnQgKGggPSBJbnQubWF4IGhsIGhyICsgMSk7XG4gICAgICBhc3NlcnQgKGFicyAoaGwgLSBocikgPD0gMilcbiAgaW5cbiAgaW52XG47O1xuXG5sZXQgaW52YXJpYW50IHQgfmNvbXBhcmUgPSBpbnZhcmlhbnQgY29tcGFyZSB0XG5cbigqIEluIHRoZSBmb2xsb3dpbmcgY29tbWVudHMsXG4gICAndCBpcyBiYWxhbmNlZCcgbWVhbnMgdGhhdCAnaW52YXJpYW50IHQnIGRvZXMgbm90XG4gICByYWlzZSBhbiBleGNlcHRpb24uICBUaGlzIGltcGxpZXMgb2YgY291cnNlIHRoYXQgZWFjaCBub2RlJ3MgaGVpZ2h0IGZpZWxkIGlzXG4gICBjb3JyZWN0LlxuICAgJ3QgaXMgYmFsYW5jZWFibGUnIG1lYW5zIHRoYXQgaGVpZ2h0IG9mIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBvZiB0XG4gICBkaWZmZXIgYnkgYXQgbW9zdCAzLiAqKVxuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBoYXZlIGNvcnJlY3QgaGVpZ2h0c1xuICAgQHBvc3Q6IG91dHB1dCBoYXMgdGhlIGNvcnJlY3QgaGVpZ2h0ICopXG5sZXQgdXBkYXRlX2hlaWdodCA9IGZ1bmN0aW9uXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IG9sZF9oZWlnaHQ7IHJpZ2h0IH0gYXMgeCkgLT5cbiAgICBsZXQgbmV3X2hlaWdodCA9IEludC5tYXggKGhlaWdodCBsZWZ0KSAoaGVpZ2h0IHJpZ2h0KSArIDEgaW5cbiAgICBpZiBuZXdfaGVpZ2h0IDw+IG9sZF9oZWlnaHQgdGhlbiB4LmhlaWdodCA8LSBuZXdfaGVpZ2h0XG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBhcmUgYmFsYW5jZWRcbiAgIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwb3N0OiBvdXRwdXQgaXMgYmFsYW5jZWQgKGluIHBhcnRpY3VsYXIsIGhlaWdodCBpcyBjb3JyZWN0KSAqKVxubGV0IGJhbGFuY2UgdHJlZSA9XG4gIG1hdGNoIHRyZWUgd2l0aFxuICB8IEVtcHR5IHwgTGVhZiBfIC0+IHRyZWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByb290X25vZGUpIC0+XG4gICAgbGV0IGhsID0gaGVpZ2h0IGxlZnRcbiAgICBhbmQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAoKiArIDIgaXMgY3JpdGljYWxseSBpbXBvcnRhbnQsIGxvd2VyaW5nIGl0IHRvIDEgd2lsbCBicmVhayB0aGUgTGVhZlxuICAgICAgIGFzc3VtcHRpb25zIGluIHRoZSBjb2RlIGJlbG93LCBhbmQgd2lsbCBmb3JjZSB1cyB0byBwcm9tb3RlIGxlYWYgbm9kZXMgaW5cbiAgICAgICB0aGUgYmFsYW5jZSByb3V0aW5lLiBJdCdzIGFsc28gZmFzdGVyLCBzaW5jZSBpdCB3aWxsIGJhbGFuY2UgbGVzcyBvZnRlbi5cbiAgICAgICBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIGlzIGRlbGljYXRlLiAgVGhlIHVwZGF0ZV9oZWlnaHQgY2FsbHMgbXVzdFxuICAgICAgIG9jY3VyIGluIHRoZSBjb3JyZWN0IG9yZGVyLCBzaW5jZSB1cGRhdGVfaGVpZ2h0IGFzc3VtZXMgaXRzIGNoaWxkcmVuIGhhdmVcbiAgICAgICB0aGUgY29ycmVjdCBoZWlnaHRzLiAgKilcbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbGVmdCB3aXRoXG4gICAgICAoKiBJdCBjYW5ub3QgYmUgYSBsZWFmLCBiZWNhdXNlIGV2ZW4gaWYgcmlnaHQgaXMgZW1wdHksIGEgbGVhZlxuICAgICAgICAgaXMgb25seSBoZWlnaHQgMSAqKVxuICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTm9kZVxuICAgICAgICAgICh7IGxlZnQgPSBsZWZ0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyBsZWZ0X25vZGUpIC0+XG4gICAgICAgIGlmIGhlaWdodCBsZWZ0X25vZGVfbGVmdCA+PSBoZWlnaHQgbGVmdF9ub2RlX3JpZ2h0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5sZWZ0IDwtIGxlZnRfbm9kZV9yaWdodDtcbiAgICAgICAgICBsZWZ0X25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgIGxlZnQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGlmIHJpZ2h0IGlzIGEgbGVhZiwgdGhlbiBsZWZ0IG11c3QgYmUgZW1wdHkuIFRoYXQgbWVhbnNcbiAgICAgICAgICAgICBoZWlnaHQgaXMgMi4gRXZlbiBpZiBociBpcyBlbXB0eSB3ZSBzdGlsbCBjYW4ndCBnZXQgaGVyZS4gKilcbiAgICAgICAgICBtYXRjaCBsZWZ0X25vZGVfcmlnaHQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBscl9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gbHJfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgbHJfbm9kZSkgLT5cbiAgICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSBscl9sZWZ0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbHJfcmlnaHQ7XG4gICAgICAgICAgICBscl9ub2RlLnJpZ2h0IDwtIHRyZWU7XG4gICAgICAgICAgICBscl9ub2RlLmxlZnQgPC0gbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgICAgbGVmdF9ub2RlX3JpZ2h0KSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSByaWdodCBjYW5ub3QgYmUgYSBsZWFmICopXG4gICAgICBtYXRjaCByaWdodCB3aXRoXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSByaWdodF9ub2RlX3JpZ2h0XG4gICAgICAgICAgIH0gYXMgcmlnaHRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0X25vZGVfcmlnaHQgPj0gaGVpZ2h0IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByb290X25vZGUucmlnaHQgPC0gcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgIHJpZ2h0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgICAgICBtYXRjaCByaWdodF9ub2RlX2xlZnQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBybF9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gcmxfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgcmxfbm9kZSkgLT5cbiAgICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSBybF9yaWdodDtcbiAgICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSBybF9sZWZ0O1xuICAgICAgICAgICAgcmxfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgICBybF9ub2RlLnJpZ2h0IDwtIHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgICAgcmlnaHRfbm9kZV9sZWZ0KSlcbiAgICBlbHNlIChcbiAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgIHRyZWUpXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKHJpZ2h0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X2xlZnQgbm9kZSB0cmVlID1cbiAgbGV0IHRyZWUgPSBiYWxhbmNlIHRyZWUgaW5cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIHIpIC0+XG4gICAgaWYgcGh5c19lcXVhbCBsZWZ0IHRyZWUgdGhlbiAoKSBlbHNlIHIubGVmdCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAobGVmdCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxubGV0IHNldF9yaWdodCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHJpZ2h0IHRyZWUgdGhlbiAoKSBlbHNlIHIucmlnaHQgPC0gdHJlZTtcbiAgICB1cGRhdGVfaGVpZ2h0IG5vZGVcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogdCBpcyBiYWxhbmNlZC5cbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWQsIHdpdGggbmV3IG5vZGUgaW5zZXJ0ZWRcbiAgIEBwb3N0OiAhYWRkZWQgPSB0cnVlIGlmZiB0aGUgc2hhcGUgb2YgdGhlIGlucHV0IHRyZWUgY2hhbmdlZC4gICopXG5sZXQgYWRkID1cbiAgbGV0IHJlYyBhZGQgdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gICAgfCBMZWFmICh7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSBhcyByKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsnIGsgaW5cbiAgICAgICgqIFRoaXMgY29tcGFyZSBpcyByZXZlcnNlZCBvbiBwdXJwb3NlLCB3ZSBhcmUgcHJldGVuZGluZ1xuICAgICAgICAgdGhhdCB0aGUgbGVhZiB3YXMganVzdCBpbnNlcnRlZCBpbnN0ZWFkIG9mIHRoZSBvdGhlciB3YXlcbiAgICAgICAgIHJvdW5kLCB0aGF0IHdheSB3ZSBvbmx5IGFsbG9jYXRlIG9uZSBub2RlLiAqKVxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdjtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgICBpZiBjIDwgMFxuICAgICAgICB0aGVuIE5vZGUgeyBsZWZ0ID0gdDsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSAyOyByaWdodCA9IEVtcHR5IH1cbiAgICAgICAgZWxzZSBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gdCB9KVxuICAgIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdilcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gc2V0X2xlZnQgdCAoYWRkIGxlZnQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdilcbiAgICAgIGVsc2Ugc2V0X3JpZ2h0IHQgKGFkZCByaWdodCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KTtcbiAgICAgIHRcbiAgaW5cbiAgZnVuIHQgfnJlcGxhY2UgfmNvbXBhcmUgfmFkZGVkIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgdCA9IGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrZXkgZGF0YSBpblxuICAgIGlmICFhZGRlZCB0aGVuIGJhbGFuY2UgdCBlbHNlIHRcbjs7XG5cbmxldCByZWMgZmlyc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IFNvbWUgKGssIHYpXG4gIHwgTm9kZSB7IGxlZnQgPSBsOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IGZpcnN0IGxcbjs7XG5cbmxldCByZWMgbGFzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSByIH0gLT4gbGFzdCByXG47O1xuXG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pZl9ub3RfZm91bmRcbiAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGsgYXJnMSBhcmcyXG4gIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlIGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlXG4gICAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICAgIChpZiBjIDwgMCB0aGVuIGxlZnQgZWxzZSByaWdodClcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAga1xuICAgICAgICBhcmcxXG4gICAgICAgIGFyZzJcbiAgICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICAgIH5pZl9mb3VuZFxuICAgICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbCA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCBkYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCBkYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnICgpID0gaWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZyAoKSA9IGlmX25vdF9mb3VuZCBrZXkgYXJnIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCBkYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kID1cbiAgbGV0IGlmX2ZvdW5kIHYgPSBTb21lIHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gTm9uZSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIC0+IGZpbmRfYW5kX2NhbGwgdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtID1cbiAgbGV0IGlmX2ZvdW5kIF8gPSB0cnVlIGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IGZhbHNlIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCByZW1vdmUgPVxuICBsZXQgcmVjIG1pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiBfIC0+IHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gbWluX2VsdCBsZWZ0XG4gIGluXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IExlYWYgXyAtPiBFbXB0eSAoKiBUaGlzIG11c3QgYmUgdGhlIHJvb3QgKilcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPiByaWdodFxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBFbXB0eSB9IC0+XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gTGVhZiBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgRW1wdHk7XG4gICAgICB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyBub2RlIC0+XG4gICAgICBzZXRfbGVmdCBub2RlIChyZW1vdmVfbWluX2VsdCBsZWZ0KTtcbiAgICAgIHRyZWVcbiAgaW5cbiAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHRyZWUgPSBtaW5fZWx0IHQyIGluXG4gICAgICAobWF0Y2ggdHJlZSB3aXRoXG4gICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgICAgICAgbGV0IHQyID0gYmFsYW5jZSAocmVtb3ZlX21pbl9lbHQgdDIpIGluXG4gICAgICAgICBOb2RlXG4gICAgICAgICAgIHsgbGVmdCA9IHQxXG4gICAgICAgICAgIDsga2V5ID0ga1xuICAgICAgICAgICA7IHZhbHVlID0gdlxuICAgICAgICAgICA7IGhlaWdodCA9IEludC5tYXggKGhlaWdodCB0MSkgKGhlaWdodCB0MikgKyAxXG4gICAgICAgICAgIDsgcmlnaHQgPSB0MlxuICAgICAgICAgICB9XG4gICAgICAgfCBOb2RlIF8gYXMgbm9kZSAtPlxuICAgICAgICAgc2V0X3JpZ2h0IG5vZGUgKHJlbW92ZV9taW5fZWx0IHQyKTtcbiAgICAgICAgIHNldF9sZWZ0IG5vZGUgdDE7XG4gICAgICAgICBub2RlKVxuICBpblxuICBsZXQgcmVjIHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICByZW1vdmVkIDo9IGZhbHNlO1xuICAgICAgRW1wdHlcbiAgICB8IExlYWYgeyBrZXkgPSBrJzsgdmFsdWUgPSBfIH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIEVtcHR5KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICAgIHQpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlZCA6PSB0cnVlO1xuICAgICAgICBtZXJnZSBsZWZ0IHJpZ2h0KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHNldF9sZWZ0IHQgKHJlbW92ZSBsZWZ0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBzZXRfcmlnaHQgdCAocmVtb3ZlIHJpZ2h0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgaW5cbiAgZnVuIHQgfnJlbW92ZWQgfmNvbXBhcmUgayAtPiBiYWxhbmNlIChyZW1vdmUgdCByZW1vdmVkIGNvbXBhcmUgaylcbjs7XG5cbmxldCByZWMgZm9sZCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gaW5pdFxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YSBpbml0XG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9XG4gICAgICB9IC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH1cbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gRW1wdHlcbiAgICAgIH0gLT4gZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IEVtcHR5XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfSB9XG4gICAgLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZm9sZCBsZWZ0IH5pbml0IH5mKSlcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfVxuICAgIC0+IGZvbGQgcmlnaHQgfmluaXQ6KGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpIH5mXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKSB+ZlxuOztcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICB8IE5vZGUgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGl0ZXIgbGVmdCB+ZjtcbiAgICBmIH5rZXkgfmRhdGE7XG4gICAgaXRlciByaWdodCB+ZlxuOztcblxubGV0IHJlYyBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiAoeyBrZXk7IHZhbHVlIH0gYXMgdCkgLT4gdC52YWx1ZSA8LSBmIH5rZXkgfmRhdGE6dmFsdWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleTsgdmFsdWU7IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgdCkgLT5cbiAgICBtYXBpX2lucGxhY2UgfmYgbGVmdDtcbiAgICB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZTtcbiAgICBtYXBpX2lucGxhY2UgfmYgcmlnaHRcbjs7XG5cbmxldCBjaG9vc2VfZXhuID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbQXZsdHJlZS5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pXG4gIHwgTGVhZiB7IGtleTsgdmFsdWU7IF8gfSB8IE5vZGUgeyBrZXk7IHZhbHVlOyBfIH0gLT4ga2V5LCB2YWx1ZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNodGJsX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5LlNcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCBoYXNoX3BhcmFtID0gSGFzaGFibGUuaGFzaF9wYXJhbVxubGV0IGhhc2ggPSBIYXNoYWJsZS5oYXNoXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxudHlwZSAoJ2ssICd2KSB0ID1cbiAgeyBtdXRhYmxlIHRhYmxlIDogKCdrLCAndikgQXZsdHJlZS50IGFycmF5XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgKCogW3JlY2VudGx5X2FkZGVkXSBpcyB0aGUgcmVmZXJlbmNlIHBhc3NlZCB0byBbQXZsdHJlZS5hZGRdLiBXZSBwdXQgaXQgaW4gdGhlIGhhc2hcbiAgICAgdGFibGUgdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBhdCBldmVyeSBbc2V0XS4gKilcbiAgOyByZWNlbnRseV9hZGRlZCA6IGJvb2wgcmVmXG4gIDsgZ3Jvd3RoX2FsbG93ZWQgOiBib29sXG4gIDsgaGFzaGFibGUgOiAnayBIYXNoYWJsZS50XG4gIDsgbXV0YWJsZSBtdXRhdGlvbl9hbGxvd2VkIDogYm9vbCAoKiBTZXQgZHVyaW5nIGFsbCBpdGVyYXRpb24gb3BlcmF0aW9ucyAqKVxuICB9XG5cbnR5cGUgJ2Ega2V5ID0gJ2FcblxubGV0IHNleHBfb2Zfa2V5IHQgPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdFxubGV0IGNvbXBhcmVfa2V5IHQgPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmVcblxubGV0IGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQgPVxuICBpZiBub3QgdC5tdXRhdGlvbl9hbGxvd2VkIHRoZW4gZmFpbHdpdGggXCJIYXNodGJsOiBtdXRhdGlvbiBub3QgYWxsb3dlZCBkdXJpbmcgaXRlcmF0aW9uXCJcbjs7XG5cbmxldCB3aXRob3V0X211dGF0aW5nIHQgZiA9XG4gIGlmIHQubXV0YXRpb25fYWxsb3dlZFxuICB0aGVuIChcbiAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgfCB4IC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSB0cnVlO1xuICAgICAgcmFpc2UgZXhuKVxuICBlbHNlIGYgKClcbjs7XG5cbigqKiBJbnRlcm5hbGx5IHVzZSBhIG1heGltdW0gc2l6ZSB0aGF0IGlzIGEgcG93ZXIgb2YgMi4gUmV2ZXJzZXMgdGhlIGFib3ZlIHRvIGZpbmQgdGhlXG4gICAgZmxvb3IgcG93ZXIgb2YgMiBiZWxvdyB0aGUgc3lzdGVtIG1heCBhcnJheSBsZW5ndGggKilcbmxldCBtYXhfdGFibGVfbGVuZ3RoID0gSW50LmZsb29yX3BvdzIgQXJyYXkubWF4X2xlbmd0aFxuXG4oKiBUaGUgZGVmYXVsdCBzaXplIGlzIGNob3NlbiB0byBiZSAwIChhcyBvcHBvc2VkIHRvIDEyOCBhcyBpdCB3YXMgYmVmb3JlKSBiZWNhdXNlOlxuICAgLSAxMjggY2FuIGNyZWF0ZSBzdWJzdGFudGlhbCBtZW1vcnkgb3ZlcmhlYWQgKHgxMCkgd2hlbiBjcmVhdGluZyBtYW55IHRhYmxlcywgbW9zdFxuICAgICBvZiB3aGljaCBhcmUgbm90IGJpZyAoc2F5LCBpZiB5b3UgaGF2ZSBhIGhhc2h0Ymwgb2YgaGFzaHRibCkuIEFuZCBtZW1vcnkgb3ZlcmhlYWQgaXNcbiAgICAgbm90IHRoYXQgZWFzeSB0byBwcm9maWxlLlxuICAgLSBpZiBhIGhhc2h0YmwgaXMgZ29pbmcgdG8gZ3JvdywgaXQncyBub3QgY2xlYXIgd2h5IDEyOCBpcyBtYXJrZWRseSBiZXR0ZXIgdGhhbiBvdGhlclxuICAgICBzaXplcyAoaWYgeW91IGdvaW5nIHRvIHN0aWNrIDEwMDAgZWxlbWVudHMsIHlvdSdyZSBnb2luZyB0byBncm93IHRoZSBoYXNodGFibGUgb25jZVxuICAgICBvciB0d2ljZSBhbnl3YXkpXG4gICAtIGluIG90aGVyIGxhbmd1YWdlcyAobGlrZSBydXN0LCBweXRob24sIGFuZCBhcHBhcmVudGx5IGdvKSwgdGhlIGRlZmF1bHQgaXMgYWxzbyBhXG4gICAgIHNtYWxsIHNpemUuICopXG5sZXQgY3JlYXRlID8oZ3Jvd3RoX2FsbG93ZWQgPSB0cnVlKSA/KHNpemUgPSAwKSB+aGFzaGFibGUgKCkgPVxuICBsZXQgc2l6ZSA9IEludC5taW4gKEludC5tYXggMSBzaXplKSBtYXhfdGFibGVfbGVuZ3RoIGluXG4gIGxldCBzaXplID0gSW50LmNlaWxfcG93MiBzaXplIGluXG4gIHsgdGFibGUgPSBBcnJheS5jcmVhdGUgfmxlbjpzaXplIEF2bHRyZWUuZW1wdHlcbiAgOyBsZW5ndGggPSAwXG4gIDsgZ3Jvd3RoX2FsbG93ZWRcbiAgOyByZWNlbnRseV9hZGRlZCA9IHJlZiBmYWxzZVxuICA7IGhhc2hhYmxlXG4gIDsgbXV0YXRpb25fYWxsb3dlZCA9IHRydWVcbiAgfVxuOztcblxuKCoqIFN1cHBsZW1lbnRhbCBoYXNoLiBUaGlzIG1heSBub3QgYmUgbmVjZXNzYXJ5LCBpdCBpcyBpbnRlbmRlZCBhcyBhIGRlZmVuc2UgYWdhaW5zdCBwb29yXG4gICAgaGFzaCBmdW5jdGlvbnMsIGZvciB3aGljaCB0aGUgcG93ZXIgb2YgMiBzaXplZCB0YWJsZSB3aWxsIGJlIGVzcGVjaWFsbHkgc2Vuc2l0aXZlLlxuICAgIFdpdGggc29tZSB0ZXN0aW5nIHdlIG1heSBjaG9vc2UgdG8gYWRkIGl0LCBidXQgdGhpcyB0YWJsZSBpcyBkZXNpZ25lZCB0byBiZSByb2J1c3QgdG9cbiAgICBjb2xsaXNpb25zLCBhbmQgaW4gbW9zdCBvZiBteSB0ZXN0aW5nIHRoaXMgZGVncmFkZXMgcGVyZm9ybWFuY2UuICopXG5sZXQgX3N1cHBsZW1lbnRhbF9oYXNoIGggPVxuICBsZXQgaCA9IGggbHhvciAoKGggbHNyIDIwKSBseG9yIChoIGxzciAxMikpIGluXG4gIGggbHhvciAoaCBsc3IgNykgbHhvciAoaCBsc3IgNClcbjs7XG5cbmxldCBzbG90IHQga2V5ID1cbiAgbGV0IGhhc2ggPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLmhhc2gga2V5IGluXG4gICgqIHRoaXMgaXMgYWx3YXlzIG5vbi1uZWdhdGl2ZSBiZWNhdXNlIHdlIGRvIFtsYW5kXSB3aXRoIG5vbi1uZWdhdGl2ZSBudW1iZXIgKilcbiAgaGFzaCBsYW5kIChBcnJheS5sZW5ndGggdC50YWJsZSAtIDEpXG47O1xuXG5sZXQgYWRkX3dvcmtlciB0IH5yZXBsYWNlIH5rZXkgfmRhdGEgPVxuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWQgPSB0LnJlY2VudGx5X2FkZGVkIGluXG4gIGFkZGVkIDo9IGZhbHNlO1xuICBsZXQgbmV3X3Jvb3QgPVxuICAgICgqIFRoZSBhdmwgdHJlZSBtaWdodCByZXBsYWNlIHRoZSB2YWx1ZSBbcmVwbGFjZT10cnVlXSBvciBkbyBub3RoaW5nIFtyZXBsYWNlPWZhbHNlXVxuICAgICAgIHRvIHRoZSBlbnRyeSwgaW4gdGhhdCBjYXNlIHRoZSB0YWJsZSBkaWQgbm90IGdldCBiaWdnZXIsIHNvIHdlIHNob3VsZCBub3RcbiAgICAgICBpbmNyZW1lbnQgbGVuZ3RoLCB3ZSBwYXNzIGluIHRoZSBib29sIHJlZiB0LmFkZGVkIHNvIHRoYXQgaXQgY2FuIHRlbGwgdXMgd2hldGhlclxuICAgICAgIGl0IGFkZGVkIG9yIHJlcGxhY2VkLiBXZSBkbyBpdCB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLiBTaW5jZSB0aGUgYm9vbFxuICAgICAgIGlzIGFuIGltbWVkaWF0ZSBpdCBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuICAgIEF2bHRyZWUuYWRkIH5yZXBsYWNlIHJvb3QgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIH5hZGRlZCB+a2V5IH5kYXRhXG4gIGluXG4gIGlmICFhZGRlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgKCogVGhpcyBsaXR0bGUgb3B0aW1pemF0aW9uIHNhdmVzIGEgY2FtbF9tb2RpZnkgd2hlbiB0aGUgdHJlZVxuICAgICBoYXNuJ3QgYmVlbiByZWJhbGFuY2VkLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV3X3Jvb3Qgcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdFxuOztcblxubGV0IG1heWJlX3Jlc2l6ZV90YWJsZSB0ID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gIGxldCBzaG91bGRfZ3JvdyA9IHQubGVuZ3RoID4gbGVuIGluXG4gIGlmIHNob3VsZF9ncm93ICYmIHQuZ3Jvd3RoX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgbGV0IG5ld19hcnJheV9sZW5ndGggPSBJbnQubWluIChsZW4gKiAyKSBtYXhfdGFibGVfbGVuZ3RoIGluXG4gICAgaWYgbmV3X2FycmF5X2xlbmd0aCA+IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld190YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm5ld19hcnJheV9sZW5ndGggQXZsdHJlZS5lbXB0eSBpblxuICAgICAgbGV0IG9sZF90YWJsZSA9IHQudGFibGUgaW5cbiAgICAgIHQudGFibGUgPC0gbmV3X3RhYmxlO1xuICAgICAgdC5sZW5ndGggPC0gMDtcbiAgICAgIGxldCBmIH5rZXkgfmRhdGEgPSBhZGRfd29ya2VyIH5yZXBsYWNlOnRydWUgdCB+a2V5IH5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9sZF90YWJsZSAtIDEgZG9cbiAgICAgICAgQXZsdHJlZS5pdGVyIG9sZF90YWJsZS4oaSkgfmZcbiAgICAgIGRvbmUpKVxuOztcblxubGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBhZGRfd29ya2VyIH5yZXBsYWNlOnRydWUgdCB+a2V5IH5kYXRhO1xuICBtYXliZV9yZXNpemVfdGFibGUgdFxuOztcblxubGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBhZGRfd29ya2VyIH5yZXBsYWNlOmZhbHNlIHQgfmtleSB+ZGF0YTtcbiAgaWYgISh0LnJlY2VudGx5X2FkZGVkKVxuICB0aGVuIChcbiAgICBtYXliZV9yZXNpemVfdGFibGUgdDtcbiAgICBgT2spXG4gIGVsc2UgYER1cGxpY2F0ZVxuOztcblxubGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gIHwgYE9rIC0+ICgpXG4gIHwgYER1cGxpY2F0ZSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IHNleHBfb2Zfa2V5IHQgaW5cbiAgICBsZXQgZXJyb3IgPSBFcnJvci5jcmVhdGUgXCJIYXNodGJsLmFkZF9leG4gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBrZXkgc2V4cF9vZl9rZXkgaW5cbiAgICBFcnJvci5yYWlzZSBlcnJvclxuOztcblxubGV0IGNsZWFyIHQgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgdC50YWJsZS4oaSkgPC0gQXZsdHJlZS5lbXB0eVxuICBkb25lO1xuICB0Lmxlbmd0aCA8LSAwXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gICgqIHdpdGggYSBnb29kIGhhc2ggZnVuY3Rpb24gdGhlc2UgZmlyc3QgdHdvIGNhc2VzIHdpbGwgYmUgdGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSxcbiAgICAgYW5kIEF2bHRyZWUuZmluZCBpcyByZWN1cnNpdmUsIHNvIGl0IGNhbid0IGJlIGlubGluZWQsIHNvIGRvaW5nIHRoaXMgYXZvaWRzIGFcbiAgICAgZnVuY3Rpb24gY2FsbCBpbiBtb3N0IGNhc2VzLiAqKVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5XG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgZWxzZSBpZl9ub3RfZm91bmQga2V5XG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMSB0IGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgZWxzZSBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMiB0IGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgYSBiIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsMiB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gICgqIHdpdGggYSBnb29kIGhhc2ggZnVuY3Rpb24gdGhlc2UgZmlyc3QgdHdvIGNhc2VzIHdpbGwgYmUgdGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSxcbiAgICAgYW5kIEF2bHRyZWUuZmluZCBpcyByZWN1cnNpdmUsIHNvIGl0IGNhbid0IGJlIGlubGluZWQsIHNvIGRvaW5nIHRoaXMgYXZvaWRzIGFcbiAgICAgZnVuY3Rpb24gY2FsbCBpbiBtb3N0IGNhc2VzLiAqKVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5XG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMSB0IGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwxIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMiB0IGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwyXG4gICAgICB0cmVlXG4gICAgICB+Y29tcGFyZTooY29tcGFyZV9rZXkgdClcbiAgICAgIGtleVxuICAgICAgfmFcbiAgICAgIH5iXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kID1cbiAgbGV0IGlmX2ZvdW5kIHYgPSBTb21lIHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gTm9uZSBpblxuICBmdW4gdCBrZXkgLT4gZmluZF9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IG1lbSB0IGtleSA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGZhbHNlXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSBfIH0gLT4gY29tcGFyZV9rZXkgdCBrIGtleSA9IDBcbiAgfCB0cmVlIC0+IEF2bHRyZWUubWVtIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleVxuOztcblxubGV0IHJlbW92ZSB0IGtleSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGxldCBpID0gc2xvdCB0IGtleSBpblxuICBsZXQgcm9vdCA9IHQudGFibGUuKGkpIGluXG4gIGxldCBhZGRlZF9vcl9yZW1vdmVkID0gdC5yZWNlbnRseV9hZGRlZCBpblxuICBhZGRlZF9vcl9yZW1vdmVkIDo9IGZhbHNlO1xuICBsZXQgbmV3X3Jvb3QgPVxuICAgIEF2bHRyZWUucmVtb3ZlIHJvb3QgfnJlbW92ZWQ6YWRkZWRfb3JfcmVtb3ZlZCB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG4gIGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCByb290IG5ld19yb290KSB0aGVuIHQudGFibGUuKGkpIDwtIG5ld19yb290O1xuICBpZiAhYWRkZWRfb3JfcmVtb3ZlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGFjYyA6PSBmIH5rZXkgfmRhdGEgIWFjY1xuICAgICAgICB8IGJ1Y2tldCAtPiBhY2MgOj0gQXZsdHJlZS5mb2xkIGJ1Y2tldCB+aW5pdDohYWNjIH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgIWFjY1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICByYWlzZSBleG4pXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICAgICAgICB8IGJ1Y2tldCAtPiBBdmx0cmVlLml0ZXIgYnVja2V0IH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT4gdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG1cbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGl0ZXJfa2V5cyB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSlcblxubGV0IHJlYyBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgaSA9XG4gIGxldCBhdmx0cmVlID0gdGFibGUuKGkpIGluXG4gIGlmIEF2bHRyZWUuaXNfZW1wdHkgYXZsdHJlZVxuICB0aGVuIGNob29zZV9ub25lbXB0eSB0YWJsZSAoaSArIDEpXG4gIGVsc2UgQXZsdHJlZS5jaG9vc2VfZXhuIGF2bHRyZWVcbjs7XG5cbmxldCBjaG9vc2VfZXhuIHQgPVxuICBpZiB0Lmxlbmd0aCA9IDAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSGFzaHRibC5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pO1xuICBjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwXG47O1xuXG5sZXQgY2hvb3NlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9ub25lbXB0eSB0LnRhYmxlIDApXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2tleSBpbnZhcmlhbnRfZGF0YSB0ID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIEF2bHRyZWUuaW52YXJpYW50IHQudGFibGUuKGkpIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICBkb25lO1xuICBsZXQgcmVhbF9sZW4gPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBpIC0+XG4gICAgICBpbnZhcmlhbnRfa2V5IGtleTtcbiAgICAgIGludmFyaWFudF9kYXRhIGRhdGE7XG4gICAgICBpICsgMSlcbiAgaW5cbiAgYXNzZXJ0IChyZWFsX2xlbiA9IHQubGVuZ3RoKVxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IGlmX2ZvdW5kIHYgXyA9IHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBrIHQgPVxuICAgIHJhaXNlXG4gICAgICAoTm90X2ZvdW5kX3MgKExpc3QgWyBBdG9tIFwiSGFzaHRibC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHQuaGFzaGFibGUuc2V4cF9vZl90IGsgXSkpXG4gIGluXG4gIGxldCBmaW5kX2V4biB0IGtleSA9IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hOnQgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX2V4blxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKVxuOztcblxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBmb3JfYWxsaSB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IG5vdCAoZiB+a2V5IH5kYXRhKSkpXG5sZXQgZm9yX2FsbCB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gbm90IChmIGRhdGEpKSlcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBzZXQgbmV3X3QgfmtleSB+ZGF0YTooZiB+a2V5IH5kYXRhKSk7XG4gIG5ld190XG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGNvcHkgdCA9IG1hcCB0IH5mOkZuLmlkXG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IG5ld190ID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgU29tZSBuZXdfZGF0YSAtPiBzZXQgbmV3X3QgfmtleSB+ZGF0YTpuZXdfZGF0YVxuICAgIHwgTm9uZSAtPiAoKSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBmaWx0ZXJfa2V5cyB0IH5mID0gZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KVxuXG5sZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gIGxldCB0MCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGxldCB0MSA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IG5ld19kYXRhIC0+IHNldCB0MCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBTZWNvbmQgbmV3X2RhdGEgLT4gc2V0IHQxIH5rZXkgfmRhdGE6bmV3X2RhdGEpO1xuICB0MCwgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSlcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBmaW5kX29yX2FkZCB0IGlkIH5kZWZhdWx0ID1cbiAgZmluZF9hbmRfY2FsbDJcbiAgICB0XG4gICAgaWRcbiAgICB+YTp0XG4gICAgfmI6ZGVmYXVsdFxuICAgIH5pZl9mb3VuZDooZnVuIGRhdGEgXyBfIC0+IGRhdGEpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuIGtleSB0IGRlZmF1bHQgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCAoKSBpblxuICAgICAgc2V0IHQgfmtleSB+ZGF0YTpkZWZhdWx0O1xuICAgICAgZGVmYXVsdClcbjs7XG5cbmxldCBmaW5kaV9vcl9hZGQgdCBpZCB+ZGVmYXVsdCA9XG4gIGZpbmRfYW5kX2NhbGwyXG4gICAgdFxuICAgIGlkXG4gICAgfmE6dFxuICAgIH5iOmRlZmF1bHRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIF8gXyAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgdCBkZWZhdWx0IC0+XG4gICAgICBsZXQgZGVmYXVsdCA9IGRlZmF1bHQga2V5IGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KVxuOztcblxuKCogU29tZSBoYXNodGJsIGltcGxlbWVudGF0aW9ucyBtYXkgYmUgYWJsZSB0byBwZXJmb3JtIHRoaXMgbW9yZSBlZmZpY2llbnRseSB0aGFuIHR3b1xuICAgc2VwYXJhdGUgbG9va3VwcyAqKVxubGV0IGZpbmRfYW5kX3JlbW92ZSB0IGlkID1cbiAgbGV0IHJlc3VsdCA9IGZpbmQgdCBpZCBpblxuICBpZiBPcHRpb24uaXNfc29tZSByZXN1bHQgdGhlbiByZW1vdmUgdCBpZDtcbiAgcmVzdWx0XG47O1xuXG5cbmxldCBjaGFuZ2UgdCBpZCB+ZiA9XG4gIG1hdGNoIGYgKGZpbmQgdCBpZCkgd2l0aFxuICB8IE5vbmUgLT4gcmVtb3ZlIHQgaWRcbiAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleTppZCB+ZGF0YVxuOztcblxubGV0IHVwZGF0ZV9hbmRfcmV0dXJuIHQgaWQgfmYgPVxuICBsZXQgZGF0YSA9IGYgKGZpbmQgdCBpZCkgaW5cbiAgc2V0IHQgfmtleTppZCB+ZGF0YTtcbiAgZGF0YVxuOztcblxubGV0IHVwZGF0ZSB0IGlkIH5mID0gaWdub3JlICh1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mIDogXylcblxubGV0IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5ID1cbiAgaWYgcmVtb3ZlX2lmX3plcm9cbiAgdGhlblxuICAgIGNoYW5nZSB0IGtleSB+ZjooZnVuIG9wdCAtPlxuICAgICAgbWF0Y2ggYnkgKyBPcHRpb24udmFsdWUgb3B0IH5kZWZhdWx0OjAgd2l0aFxuICAgICAgfCAwIC0+IE5vbmVcbiAgICAgIHwgbiAtPiBTb21lIG4pXG4gIGVsc2VcbiAgICB1cGRhdGUgdCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYnlcbiAgICAgIHwgU29tZSBpIC0+IGJ5ICsgaSlcbjs7XG5cbmxldCBpbmNyID8oYnkgPSAxKSA/KHJlbW92ZV9pZl96ZXJvID0gZmFsc2UpIHQga2V5ID0gaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgYnlcbmxldCBkZWNyID8oYnkgPSAxKSA/KHJlbW92ZV9pZl96ZXJvID0gZmFsc2UpIHQga2V5ID0gaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgKC1ieSlcblxubGV0IGFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgPVxuICB1cGRhdGUgdCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFsgZGF0YSBdXG4gICAgfCBTb21lIGwgLT4gZGF0YSA6OiBsKVxuOztcblxubGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIFtdIHwgU29tZSBbIF8gXSAtPiByZW1vdmUgdCBrZXlcbiAgfCBTb21lIChfIDo6IHRsKSAtPiBzZXQgdCB+a2V5IH5kYXRhOnRsXG47O1xuXG5sZXQgZmluZF9tdWx0aSB0IGtleSA9XG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIGwgLT4gbFxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgcm93cyA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBzXG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIHJvd3NcbiAgaW5cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlIH5zaXplICgpIGluXG4gIGxldCBkdXBlcyA9IHJlZiBbXSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgaWYgbWVtIHJlcyBrZXkgdGhlbiBkdXBlcyA6PSBrZXkgOjogIWR1cGVzIGVsc2Ugc2V0IHJlcyB+a2V5IH5kYXRhKTtcbiAgbWF0Y2ggIWR1cGVzIHdpdGhcbiAgfCBbXSAtPiBgT2sgcmVzXG4gIHwga2V5cyAtPiBgRHVwbGljYXRlX2tleXMgKExpc3QuZGVkdXBfYW5kX3NvcnQgfmNvbXBhcmU6aGFzaGFibGUuSGFzaGFibGUuY29tcGFyZSBrZXlzKVxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgcm93cyA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBzXG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIHJvd3NcbiAgaW5cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfnNpemUgfmhhc2hhYmxlICgpIGluXG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gciAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHIgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHIgaW5cbiAgICBhZGRfbXVsdGkgcmVzIH5rZXkgfmRhdGEpO1xuICByZXNcbjs7XG5cbmxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Qgd2l0aFxuICB8IGBPayB0IC0+IGBPayB0XG4gIHwgYER1cGxpY2F0ZV9rZXlzIGsgLT4gYER1cGxpY2F0ZV9rZXkgKExpc3QuaGRfZXhuIGspXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdFxuOztcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3Qgd2l0aFxuICB8IGBPayB2IC0+IFJlc3VsdC5PayB2XG4gIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90IGluXG4gICAgT3JfZXJyb3IuZXJyb3IgXCJIYXNodGJsLm9mX2FsaXN0X2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBzZXhwX29mX2tleVxuOztcblxubGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBSZXN1bHQuT2sgdiAtPiB2XG4gIHwgUmVzdWx0LkVycm9yIGUgLT4gRXJyb3IucmFpc2UgZVxuOztcblxubGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgY3JlYXRlX21hcHBlZF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdFxuOztcblxubGV0IHRvX2FsaXN0IHQgPSBmb2xkIH5mOihmdW4gfmtleSB+ZGF0YSBsaXN0IC0+IChrZXksIGRhdGEpIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgdCA9XG4gIHRcbiAgfD4gdG9fYWxpc3RcbiAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gKGsxLCBfKSAoazIsIF8pIC0+IHQuaGFzaGFibGUuY29tcGFyZSBrMSBrMilcbiAgfD4gc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhKVxuOztcblxubGV0IHRfb2Zfc2V4cCB+aGFzaGFibGUga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID1cbiAgbGV0IGFsaXN0ID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCkgc2V4cCBpblxuICBtYXRjaCBvZl9hbGlzdCB+aGFzaGFibGUgYWxpc3QgfnNpemU6KExpc3QubGVuZ3RoIGFsaXN0KSB3aXRoXG4gIHwgYE9rIHYgLT4gdlxuICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAoKiBmaW5kIHRoZSBzZXhwIG9mIGEgZHVwbGljYXRlIGtleSwgc28gdGhlIGVycm9yIGlzIG5hcnJvd2VkIHRvIGEga2V5IGFuZCBub3RcbiAgICAgICB0aGUgd2hvbGUgbWFwICopXG4gICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICBsZXQgZm91bmRfZmlyc3RfayA9IHJlZiBmYWxzZSBpblxuICAgIExpc3QuaXRlcjJfZXhuIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgIGlmIGhhc2hhYmxlLmNvbXBhcmUgayBrMiA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgIWZvdW5kX2ZpcnN0X2tcbiAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiSGFzaHRibC50X29mX3NleHA6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgIGVsc2UgZm91bmRfZmlyc3RfayA6PSB0cnVlKTtcbiAgICBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hclxuICAgICAgKHR5cGUgayB2KVxuICAgICAgKGtfZ3JhbW1hciA6IGsgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICAodl9ncmFtbWFyIDogdiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiAoaywgdikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbjs7XG5cbmxldCBrZXlzIHQgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhOl8gYWNjIC0+IGtleSA6OiBhY2MpXG5sZXQgZGF0YSB0ID0gZm9sZCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBsaXN0IC0+IGRhdGEgOjogbGlzdCkgfmluaXQ6W10gdFxuXG5sZXQgYWRkX3RvX2dyb3VwcyBncm91cHMgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIH5yb3dzID1cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByb3cgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByb3cgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHJvdyBpblxuICAgIGxldCBkYXRhID1cbiAgICAgIG1hdGNoIGZpbmQgZ3JvdXBzIGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGF0YVxuICAgICAgfCBTb21lIG9sZCAtPiBjb21iaW5lIG9sZCBkYXRhXG4gICAgaW5cbiAgICBzZXQgZ3JvdXBzIH5rZXkgfmRhdGEpXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgcm93cyA9XG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSBpblxuICBhZGRfdG9fZ3JvdXBzIHJlcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3M7XG4gIHJlc1xuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhOkZuLmlkIHJvd3Ncbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgbWF0Y2ggY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyB3aXRoXG4gIHwgYE9rIHQgLT4gUmVzdWx0Lk9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMga2V5cyAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiSGFzaHRibC5jcmVhdGVfd2l0aF9rZXk6IGR1cGxpY2F0ZSBrZXlzXCJcbiAgICAgICAgIFsgXCJrZXlzXCIsIHNleHBfb2ZfbGlzdCBzZXhwX29mX2tleSBrZXlzIF0pXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBPcl9lcnJvci5va19leG4gKGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MpXG47O1xuXG5sZXQgbWVyZ2UgPVxuICBsZXQgbWF5YmVfc2V0IHQgfmtleSB+ZiBkID1cbiAgICBtYXRjaCBmIH5rZXkgZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gc2V0IHQgfmtleSB+ZGF0YTp2XG4gIGluXG4gIGZ1biB0X2xlZnQgdF9yaWdodCB+ZiAtPlxuICAgIGlmIG5vdCAoSGFzaGFibGUuZXF1YWwgdF9sZWZ0Lmhhc2hhYmxlIHRfcmlnaHQuaGFzaGFibGUpXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkhhc2h0YmwubWVyZ2U6IGRpZmZlcmVudCAnaGFzaGFibGUnIHZhbHVlc1wiO1xuICAgIGxldCBuZXdfdCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmdyb3d0aF9hbGxvd2VkOnRfbGVmdC5ncm93dGhfYWxsb3dlZFxuICAgICAgICB+aGFzaGFibGU6dF9sZWZ0Lmhhc2hhYmxlXG4gICAgICAgIH5zaXplOnRfbGVmdC5sZW5ndGhcbiAgICAgICAgKClcbiAgICBpblxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9sZWZ0IChmdW4gKCkgLT5cbiAgICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9yaWdodCAoZnVuICgpIC0+XG4gICAgICAgIGl0ZXJpIHRfbGVmdCB+ZjooZnVuIH5rZXkgfmRhdGE6bGVmdCAtPlxuICAgICAgICAgIG1hdGNoIGZpbmQgdF9yaWdodCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYExlZnQgbGVmdClcbiAgICAgICAgICB8IFNvbWUgcmlnaHQgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBCb3RoIChsZWZ0LCByaWdodCkpKTtcbiAgICAgICAgaXRlcmkgdF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6cmlnaHQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfbGVmdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYFJpZ2h0IHJpZ2h0KVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgICAgKCogYWxyZWFkeSBkb25lIGFib3ZlICopKSkpO1xuICAgIG5ld190XG47O1xuXG5sZXQgbWVyZ2VfaW50byB+c3JjIH5kc3QgfmYgPVxuICBpdGVyaSBzcmMgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0IGRzdF9kYXRhID0gZmluZCBkc3Qga2V5IGluXG4gICAgbGV0IGFjdGlvbiA9IHdpdGhvdXRfbXV0YXRpbmcgZHN0IChmdW4gKCkgLT4gZiB+a2V5IGRhdGEgZHN0X2RhdGEpIGluXG4gICAgbWF0Y2ggKGFjdGlvbiA6IF8gTWVyZ2VfaW50b19hY3Rpb24udCkgd2l0aFxuICAgIHwgUmVtb3ZlIC0+IHJlbW92ZSBkc3Qga2V5XG4gICAgfCBTZXRfdG8gZGF0YSAtPlxuICAgICAgKG1hdGNoIGRzdF9kYXRhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gc2V0IGRzdCB+a2V5IH5kYXRhXG4gICAgICAgfCBTb21lIGRzdF9kYXRhIC0+IGlmIG5vdCAocGh5c19lcXVhbCBkc3RfZGF0YSBkYXRhKSB0aGVuIHNldCBkc3QgfmtleSB+ZGF0YSkpXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjIGVsc2Uga2V5IDo6IGFjKVxuICBpblxuICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4ga2V5IC0+IHJlbW92ZSB0IGtleSlcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID0gZmlsdGVyaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KVxuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IG1hcF9yZXN1bHRzID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiAoa2V5LCBmIH5rZXkgfmRhdGEpIDo6IGFjKSBpblxuICBMaXN0Lml0ZXIgbWFwX3Jlc3VsdHMgfmY6KGZ1biAoa2V5LCByZXN1bHQpIC0+XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtb3ZlIHQga2V5XG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIHdpdGhvdXRfbXV0YXRpbmcgdCAoZnVuICgpIC0+IEFycmF5Lml0ZXIgdC50YWJsZSB+ZjooQXZsdHJlZS5tYXBpX2lucGxhY2UgfmYpKVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBtYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBlcXVhbCBlcXVhbCB0IHQnID1cbiAgbGVuZ3RoIHQgPSBsZW5ndGggdCdcbiAgJiYgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgd2l0aG91dF9tdXRhdGluZyB0JyAoZnVuICgpIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBtYXRjaCBmaW5kIHQnIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByLnJldHVybiBmYWxzZVxuICAgICAgICB8IFNvbWUgZGF0YScgLT4gaWYgbm90IChlcXVhbCBkYXRhIGRhdGEnKSB0aGVuIHIucmV0dXJuIGZhbHNlKSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBzaW1pbGFyID0gZXF1YWxcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBjaG9vc2UgPSBjaG9vc2VcbiAgbGV0IGNob29zZV9leG4gPSBjaG9vc2VfZXhuXG4gIGxldCBjbGVhciA9IGNsZWFyXG4gIGxldCBjb3B5ID0gY29weVxuICBsZXQgcmVtb3ZlID0gcmVtb3ZlXG4gIGxldCBzZXQgPSBzZXRcbiAgbGV0IGFkZCA9IGFkZFxuICBsZXQgYWRkX2V4biA9IGFkZF9leG5cbiAgbGV0IGNoYW5nZSA9IGNoYW5nZVxuICBsZXQgdXBkYXRlID0gdXBkYXRlXG4gIGxldCB1cGRhdGVfYW5kX3JldHVybiA9IHVwZGF0ZV9hbmRfcmV0dXJuXG4gIGxldCBhZGRfbXVsdGkgPSBhZGRfbXVsdGlcbiAgbGV0IHJlbW92ZV9tdWx0aSA9IHJlbW92ZV9tdWx0aVxuICBsZXQgZmluZF9tdWx0aSA9IGZpbmRfbXVsdGlcbiAgbGV0IG1lbSA9IG1lbVxuICBsZXQgaXRlcl9rZXlzID0gaXRlcl9rZXlzXG4gIGxldCBpdGVyID0gaXRlclxuICBsZXQgaXRlcmkgPSBpdGVyaVxuICBsZXQgZXhpc3RzID0gZXhpc3RzXG4gIGxldCBleGlzdHNpID0gZXhpc3RzaVxuICBsZXQgZm9yX2FsbCA9IGZvcl9hbGxcbiAgbGV0IGZvcl9hbGxpID0gZm9yX2FsbGlcbiAgbGV0IGNvdW50ID0gY291bnRcbiAgbGV0IGNvdW50aSA9IGNvdW50aVxuICBsZXQgZm9sZCA9IGZvbGRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXBpID0gbWFwaVxuICBsZXQgZmlsdGVyX21hcCA9IGZpbHRlcl9tYXBcbiAgbGV0IGZpbHRlcl9tYXBpID0gZmlsdGVyX21hcGlcbiAgbGV0IGZpbHRlcl9rZXlzID0gZmlsdGVyX2tleXNcbiAgbGV0IGZpbHRlciA9IGZpbHRlclxuICBsZXQgZmlsdGVyaSA9IGZpbHRlcmlcbiAgbGV0IHBhcnRpdGlvbl9tYXAgPSBwYXJ0aXRpb25fbWFwXG4gIGxldCBwYXJ0aXRpb25fbWFwaSA9IHBhcnRpdGlvbl9tYXBpXG4gIGxldCBwYXJ0aXRpb25fdGYgPSBwYXJ0aXRpb25fdGZcbiAgbGV0IHBhcnRpdGlvbmlfdGYgPSBwYXJ0aXRpb25pX3RmXG4gIGxldCBmaW5kX29yX2FkZCA9IGZpbmRfb3JfYWRkXG4gIGxldCBmaW5kaV9vcl9hZGQgPSBmaW5kaV9vcl9hZGRcbiAgbGV0IGZpbmQgPSBmaW5kXG4gIGxldCBmaW5kX2V4biA9IGZpbmRfZXhuXG4gIGxldCBmaW5kX2FuZF9jYWxsID0gZmluZF9hbmRfY2FsbFxuICBsZXQgZmluZF9hbmRfY2FsbDEgPSBmaW5kX2FuZF9jYWxsMVxuICBsZXQgZmluZF9hbmRfY2FsbDIgPSBmaW5kX2FuZF9jYWxsMlxuICBsZXQgZmluZGlfYW5kX2NhbGwgPSBmaW5kaV9hbmRfY2FsbFxuICBsZXQgZmluZGlfYW5kX2NhbGwxID0gZmluZGlfYW5kX2NhbGwxXG4gIGxldCBmaW5kaV9hbmRfY2FsbDIgPSBmaW5kaV9hbmRfY2FsbDJcbiAgbGV0IGZpbmRfYW5kX3JlbW92ZSA9IGZpbmRfYW5kX3JlbW92ZVxuICBsZXQgdG9fYWxpc3QgPSB0b19hbGlzdFxuICBsZXQgbWVyZ2UgPSBtZXJnZVxuICBsZXQgbWVyZ2VfaW50byA9IG1lcmdlX2ludG9cbiAgbGV0IGtleXMgPSBrZXlzXG4gIGxldCBkYXRhID0gZGF0YVxuICBsZXQgZmlsdGVyX2tleXNfaW5wbGFjZSA9IGZpbHRlcl9rZXlzX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9pbnBsYWNlID0gZmlsdGVyX2lucGxhY2VcbiAgbGV0IGZpbHRlcmlfaW5wbGFjZSA9IGZpbHRlcmlfaW5wbGFjZVxuICBsZXQgbWFwX2lucGxhY2UgPSBtYXBfaW5wbGFjZVxuICBsZXQgbWFwaV9pbnBsYWNlID0gbWFwaV9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgPSBmaWx0ZXJfbWFwaV9pbnBsYWNlXG4gIGxldCBlcXVhbCA9IGVxdWFsXG4gIGxldCBzaW1pbGFyID0gc2ltaWxhclxuICBsZXQgaW5jciA9IGluY3JcbiAgbGV0IGRlY3IgPSBkZWNyXG4gIGxldCBzZXhwX29mX2tleSA9IHNleHBfb2Zfa2V5XG5lbmRcblxubW9kdWxlIENyZWF0b3JzIChLZXkgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICBlbmQpIDogc2lnXG4gIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgS2V5LnQpIC0+IChTZXhwLnQgLT4gJ2IpIC0+IFNleHAudCAtPiAoJ2EsICdiKSB0X1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuZW5kID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEtleS5oYXNoYWJsZVxuXG4gIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKVxuICBsZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPSBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcblxuICBsZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBrX29mX3NleHAgZF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cFxuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICAgIGdyb3VwID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGxcbiAgOztcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICB0eXBlICdhIGtleSA9ICdhXG5cbiAgbGV0IGhhc2hhYmxlID0gSGFzaGFibGUucG9seVxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgSGFzaGFibGUgPSBIYXNoYWJsZS5IYXNoYWJsZVxuXG4gIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gIGxldCBoYXNoYWJsZSB0ID0gdC5oYXNoYWJsZVxuZW5kXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPVxuICBjcmVhdGUgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0IH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3Rfb3JfZXJyb3Igfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9tdWx0aSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICBjcmVhdGVfbWFwcGVkIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5IH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3Igfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXlfZXhuIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICBncm91cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGxcbjs7XG5cbmxldCBoYXNoYWJsZV9zIHQgPSBIYXNoYWJsZS50b19rZXkgdC5oYXNoYWJsZVxuXG5tb2R1bGUgTSAoSyA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2KSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIEtleS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGspIHNleHBfb2ZfdiB0ID1cbiAgc2V4cF9vZl90IEsuc2V4cF9vZl90IHNleHBfb2ZfdiB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGspIChtb2R1bGUgSyA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGspIHZfb2Zfc2V4cCBzZXhwID1cbiAgdF9vZl9zZXhwIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgSykpIEsudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgaykgKG1vZHVsZSBLIDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBrKSB2X2dyYW1tYXIgPVxuICB0X3NleHBfZ3JhbW1hciBLLnRfc2V4cF9ncmFtbWFyIHZfZ3JhbW1hclxuOztcblxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgZXF1YWxfdiB0MSB0MiA9IGVxdWFsIGVxdWFsX3YgdDEgdDJcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoX3NldF9pbnRmXG5cbmxldCBoYXNoYWJsZV9zID0gSGFzaHRibC5oYXNoYWJsZV9zXG5sZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbmxldCBwb2x5X2hhc2hhYmxlID0gSGFzaHRibC5Qb2x5Lmhhc2hhYmxlXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICdhIHQgPSAoJ2EsIHVuaXQpIEhhc2h0YmwudFxudHlwZSAnYSBoYXNoX3NldCA9ICdhIHRcbnR5cGUgJ2EgZWx0ID0gJ2FcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICBsZXQgY2xlYXIgPSBIYXNodGJsLmNsZWFyXG4gIGxldCBsZW5ndGggPSBIYXNodGJsLmxlbmd0aFxuICBsZXQgbWVtID0gSGFzaHRibC5tZW1cbiAgbGV0IGlzX2VtcHR5IHQgPSBIYXNodGJsLmlzX2VtcHR5IHRcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBIYXNodGJsLml0ZXJfa2V5cyB0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgIG1hdGNoIGYgZWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIGFzIG8gLT4gci5yZXR1cm4gbyk7XG4gICAgICBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kX21hcCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBTb21lIGEgZWxzZSBOb25lKVxuICBsZXQgYWRkIHQgayA9IEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpXG5cbiAgbGV0IHN0cmljdF9hZGQgdCBrID1cbiAgICBpZiBtZW0gdCBrXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJlbGVtZW50IGFscmVhZHkgZXhpc3RzXCJcbiAgICBlbHNlIChcbiAgICAgIEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpO1xuICAgICAgUmVzdWx0Lk9rICgpKVxuICA7O1xuXG4gIGxldCBzdHJpY3RfYWRkX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9hZGQgdCBrKVxuICBsZXQgcmVtb3ZlID0gSGFzaHRibC5yZW1vdmVcblxuICBsZXQgc3RyaWN0X3JlbW92ZSB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZSB0IGs7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvciBcImVsZW1lbnQgbm90IGluIHNldFwiIGsgKEhhc2h0Ymwuc2V4cF9vZl9rZXkgdClcbiAgOztcblxuICBsZXQgc3RyaWN0X3JlbW92ZV9leG4gdCBrID0gT3JfZXJyb3Iub2tfZXhuIChzdHJpY3RfcmVtb3ZlIHQgaylcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEhhc2h0YmwuZm9sZCB0IH5pbml0IH5mOihmdW4gfmtleSB+ZGF0YTooKSBhY2MgLT4gZiBhY2Mga2V5KVxuICBsZXQgaXRlciB0IH5mID0gSGFzaHRibC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgdG9fbGlzdCA9IEhhc2h0Ymwua2V5c1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lIHQgPVxuICAgIHNleHBfb2ZfbGlzdCBzZXhwX29mX2UgKHRvX2xpc3QgdCB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGhhc2hhYmxlIHQpLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBpbmRleCA9IHJlZiAobGVuIC0gMSkgaW5cbiAgICBmb2xkIHQgfmluaXQ6W3x8XSB+ZjooZnVuIGFjYyBrZXkgLT5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCBhY2MgPSAwXG4gICAgICB0aGVuIEFycmF5LmNyZWF0ZSB+bGVuIGtleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGluZGV4IDo9ICFpbmRleCAtIDE7XG4gICAgICAgIGFjYy4oIWluZGV4KSA8LSBrZXk7XG4gICAgICAgIGFjYykpXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyB0IH5mID0gSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KVxuICBsZXQgZm9yX2FsbCB0IH5mID0gbm90IChIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gbm90IChmIGtleSkpKVxuICBsZXQgZXF1YWwgdDEgdDIgPSBIYXNodGJsLmVxdWFsIChmdW4gKCkgKCkgLT4gdHJ1ZSkgdDEgdDJcbiAgbGV0IGNvcHkgdCA9IEhhc2h0YmwuY29weSB0XG4gIGxldCBmaWx0ZXIgdCB+ZiA9IEhhc2h0YmwuZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSlcbiAgbGV0IHVuaW9uIHQxIHQyID0gSGFzaHRibC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyBfIC0+IFNvbWUgKCkpXG4gIGxldCBkaWZmIHQxIHQyID0gZmlsdGVyIHQxIH5mOihmdW4ga2V5IC0+IG5vdCAoSGFzaHRibC5tZW0gdDIga2V5KSlcblxuICBsZXQgaW50ZXIgdDEgdDIgPVxuICAgIGxldCBzbWFsbGVyLCBsYXJnZXIgPSBpZiBsZW5ndGggdDEgPiBsZW5ndGggdDIgdGhlbiB0MiwgdDEgZWxzZSB0MSwgdDIgaW5cbiAgICBIYXNodGJsLmZpbHRlcmkgc21hbGxlciB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gSGFzaHRibC5tZW0gbGFyZ2VyIGtleSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gICAgbGV0IHRvX3JlbW92ZSA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjIHggLT4gaWYgZiB4IHRoZW4gYWMgZWxzZSB4IDo6IGFjKSBpblxuICAgIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biB4IC0+IHJlbW92ZSB0IHgpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsID0gSGFzaHRibC5tYXAgaGFzaHRibCB+ZjppZ25vcmVcbiAgbGV0IHRvX2hhc2h0YmwgdCB+ZiA9IEhhc2h0YmwubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSlcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG1cblxubGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIGxcbiAgaW5cbiAgbGV0IHQgPSBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfnNpemUgbSBpblxuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGsgLT4gYWRkIHQgayk7XG4gIHRcbjs7XG5cbmxldCB0X29mX3NleHAgbSBlX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IFNleHAuQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJIYXNoX3NldC50X29mX3NleHAgcmVxdWlyZXMgYSBsaXN0XCIgc2V4cFxuICB8IFNleHAuTGlzdCBsaXN0IC0+XG4gICAgbGV0IHQgPSBjcmVhdGUgbSB+c2l6ZTooTGlzdC5sZW5ndGggbGlzdCkgaW5cbiAgICBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHNleHAgLT5cbiAgICAgIGxldCBlID0gZV9vZl9zZXhwIHNleHAgaW5cbiAgICAgIG1hdGNoIHN0cmljdF9hZGQgdCBlIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgIHwgRXJyb3IgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIGdvdCBhIGR1cGxpY2F0ZSBlbGVtZW50XCIgc2V4cCk7XG4gICAgdFxuOztcblxubW9kdWxlIENyZWF0b3JzIChFbHQgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICBlbmQpIDogc2lnXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEVsdC50KSAtPiBTZXhwLnQgLT4gJ2EgRWx0LnQgdFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgRWx0LnQgdFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICB3aXRoIHR5cGUgKCdlbHQsICd6KSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdlbHQsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuZW5kID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgZV9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGVfb2Zfc2V4cCBzZXhwXG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgaGFzaF9zZXRcbiAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IHBvbHlfaGFzaGFibGVcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbmVuZFxuXG5tb2R1bGUgTSAoRWx0IDogVC5UKSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gRWx0LnQgdFxuZW5kXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IHRcbjs7XG5cbmxldCBtX190X29mX3NleHAgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCkgc2V4cCA9XG4gIHRfb2Zfc2V4cCAobW9kdWxlIEVsdCkgRWx0LnRfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gZWx0KSA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKGxpc3Rfc2V4cF9ncmFtbWFyIEVsdC50X3NleHBfZ3JhbW1hcilcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgUHJpbnRmXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbmluY2x1ZGUgRmxvYXQwXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfZmxvYXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Zsb2F0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChmbG9hdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9mbG9hdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBmbG9hdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgdG9fZmxvYXQgeCA9IHhcbmxldCBvZl9mbG9hdCB4ID0geFxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICB0cnkgZmxvYXRfb2Zfc3RyaW5nIHMgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwiRmxvYXQub2Zfc3RyaW5nICVzXCIgcyAoKVxuOztcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XS4gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGkgbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG4oKiBMZXQgW3ldIGJlIGEgcG93ZXIgb2YgMi4gIFRoZW4gdGhlIG5leHQgcmVwcmVzZW50YWJsZSBmbG9hdCBpczpcbiAgIFt6ID0geSAqICgxICsgMiAqKiAtNTIpXVxuICAgYW5kIHRoZSBwcmV2aW91cyBvbmUgaXNcbiAgIFt4ID0geSAqICgxIC0gMiAqKiAtNTMpXVxuXG4gICBJbiBnZW5lcmFsLCBldmVyeSB0d28gYWRqYWNlbnQgZmxvYXRzIGFyZSB3aXRoaW4gYSBmYWN0b3Igb2YgYmV0d2VlbiBbMSArIDIqKi01M11cbiAgIGFuZCBbMSArIDIqKi01Ml0gZnJvbSBlYWNoIG90aGVyLCB0aGF0IGlzIHdpdGhpbiBbMSArIDEuMWUtMTZdIGFuZCBbMSArIDIuM2UtMTZdLlxuXG4gICBTbyBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIGZsb2F0IHN0YXJ0cyB3aXRoIFwiMVwiLCB0aGVuIGl0cyBhZGphY2VudCBmbG9hdHNcbiAgIHdpbGwgdXN1YWxseSBkaWZmZXIgZnJvbSBpdCBieSAxLCBhbmQgc29tZXRpbWVzIGJ5IDIsIGF0IHRoZSAxN3RoIHNpZ25pZmljYW50IGRpZ2l0XG4gICAoY291bnRpbmcgZnJvbSAxKS5cblxuICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIHN0YXJ0cyB3aXRoIFwiOVwiLCB0aGVuIHRoZSBhZGphY2VudFxuICAgZmxvYXRzIHdpbGwgYmUgb2ZmIGJ5IG5vIG1vcmUgdGhhbiAyMyBhdCB0aGUgMTZ0aCBhbmQgMTd0aCBzaWduaWZpY2FudCBkaWdpdHMuXG5cbiAgIEUuZy46XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1NjdcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyMy45OTk5OTk5OTk5OTk5XCJcbiAgIHZ9XG4gICBQcmludGluZyBhIGNvdXBsZSBvZiBleHRyYSBkaWdpdHMgcmV2ZWFscyB0aGF0IHRoZSBkaWZmZXJlbmNlIGluZGVlZCBpcyByb3VnaGx5IDExIGF0XG4gICBkaWdpdHMgMTd0aCBhbmQgMTh0aCAodGhhdCBpcywgMTN0aCBhbmQgMTR0aCBhZnRlciBcIi5cIik6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTlnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2Nzg5XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5ODg2XCJcbiAgIHZ9XG5cbiAgIFRoZSB1bHAgKHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYWRqYWNlbnQgZmxvYXRzKSBpcyB0d2ljZSBhcyBiaWcgb24gdGhlIG90aGVyIHNpZGUgb2ZcbiAgIDEwMjQuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDI0LjAwMDAwMDAwMDAwMDIyN1wiXG4gICB2fVxuXG4gICBOb3cgdGFrZSBhIHBvd2VyIG9mIDIgd2hpY2ggc3RhcnRzIHdpdGggOTk6XG5cbiAgIHt2XG4gICAgICMgMi4qKjkzLiA7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgIDEgMjM0NTY3ODkwMTIzNDU2NzhcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDIyZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDQ0ZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDExZSsyN1xuICAgdn1cblxuICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAyKio5MyBhbmQgaXRzIHR3byBuZWlnaGJvcnMgaXMgc2xpZ2h0bHkgbW9yZSB0aGFuLCByZXNwZWN0aXZlbHksXG4gICAxIGFuZCAyIGF0IHNpZ25pZmljYW50IGRpZ2l0IDE2LlxuXG4gICBUaG9zZSBleGFtcGxlcyBzaG93IHRoYXQ6XG4gICAtIDE3IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBhbHdheXMgc3VmZmljaWVudCB0byByZXByZXNlbnQgYSBmbG9hdCB3aXRob3V0IGFtYmlndWl0eVxuICAgLSAxNXRoIHNpZ25pZmljYW50IGRpZ2l0IGNhbiBhbHdheXMgYmUgcmVwcmVzZW50ZWQgYWNjdXJhdGVseVxuICAgLSBjb252ZXJ0aW5nIGEgZGVjaW1hbCBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgdG8gaXRzIG5lYXJlc3QgZmxvYXQgYW5kIGJhY2tcbiAgICAgY2FuIGNoYW5nZSB0aGUgbGFzdCBkZWNpbWFsIGRpZ2l0IGJ5IG5vIG1vcmUgdGhhbiAxXG5cbiAgIFRvIG1ha2Ugc3VyZSB0aGF0IGZsb2F0cyBvYnRhaW5lZCBieSBjb252ZXJzaW9uIGZyb20gZGVjaW1hbCBmcmFjdGlvbnMgKGUuZy4gXCIzLjE0XCIpXG4gICBhcmUgcHJpbnRlZCB3aXRob3V0IHRyYWlsaW5nIG5vbi16ZXJvIGRpZ2l0cywgb25lIHNob3VsZCBjaG9vc2UgdGhlIGZpcnN0IGFtb25nIHRoZVxuICAgJyUuMTVnJywgJyUuMTZnJywgYW5kICclLjE3ZycgcmVwcmVzZW50YXRpb25zIHdoaWNoIGRvZXMgcm91bmQtdHJpcDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiICAgICAgICAgICAgICAgICAgICAgKCogcGljayB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0XCJcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUgKilcblxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOFwiICAgICAgICAgICAgICAgICAgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUtLWRvZXMgbm90IHJvdW5kLXRyaXAgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAyXCIgICAgICAgICgqIHByZWZlciB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOC4wMDAwMDAwMDAwMDAwMDE4XCIgICAgICAgKCogdGhpcyBvbmUgaGFzIG9uZSBkaWdpdCBvZiBqdW5rIGF0IHRoZSBlbmQgKilcbiAgIHZ9XG5cbiAgIFNraXBwaW5nIHRoZSAnJS4xNmcnIGluIHRoZSBhYm92ZSBwcm9jZWR1cmUgc2F2ZXMgdXMgc29tZSB0aW1lLCBidXQgaXQgbWVhbnMgdGhhdCwgYXNcbiAgIHNlZW4gaW4gdGhlIHNlY29uZCBleGFtcGxlIGFib3ZlLCBvY2Nhc2lvbmFsbHkgbnVtYmVycyB3aXRoIGV4YWN0bHkgMTYgc2lnbmlmaWNhbnRcbiAgIGRpZ2l0cyB3aWxsIGhhdmUgYW4gZXJyb3IgaW50cm9kdWNlZCBhdCB0aGUgMTd0aCBkaWdpdC4gIFRoYXQgaXMgcHJvYmFibHkgT0sgZm9yXG4gICB0eXBpY2FsIHVzZSwgYmVjYXVzZSBhIG51bWJlciB3aXRoIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBcInVnbHlcIiBhbHJlYWR5LiAgQWRkaW5nIG9uZVxuICAgbW9yZSBkb2Vzbid0IG1ha2UgaXQgbXVjaCB3b3JzZSBmb3IgYSBodW1hbiByZWFkZXIuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBjYW5ub3Qgc2tpcCAnJS4xNWcnIGFuZCBvbmx5IGxvb2sgYXQgJyUuMTZnJyBhbmQgJyUuMTdnJywgc2luY2VcbiAgIHRoZSBpbmFjY3VyYWN5IGF0IHRoZSAxNnRoIGRpZ2l0IG1pZ2h0IGludHJvZHVjZSB0aGUgbm9pc2Ugd2Ugd2FudCB0byBhdm9pZDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyXCIgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAxXCIgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1qdW5rIGF0IHRoZSBlbmQgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAwOVwiXG4gICB2fVxuKilcbmxldCB0b19zdHJpbmcgeCA9XG4gIHZhbGlkX2Zsb2F0X2xleGVtXG4gICAgKGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNWdcIiB4IGluXG4gICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3Z1wiIHgpXG47O1xuXG5sZXQgbWF4X3ZhbHVlID0gaW5maW5pdHlcbmxldCBtaW5fdmFsdWUgPSBuZWdfaW5maW5pdHlcbmxldCBtaW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID0gMi4gKiogLTEwNzQuXG5sZXQgbWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDIyLlxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgcGkgPSAweDMuMjQzRjZBODg4NUEzMDhEMzEzMTk4QTJFMDM3MDczXG5sZXQgc3FydF9waSA9IDB4MS5DNUJGODkxQjRFRjZBQTc5QzNCMDUyMEQ1REI5MzhcbmxldCBzcXJ0XzJwaSA9IDB4Mi44MUIyNjNGRUM0RTBCMkNBRjk0ODNGNUNFNDU5RENcbmxldCBldWxlciA9IDB4MC45M0M0NjdFMzdEQjBDN0E0RDFCRTNGODEwMTUyQ0JcbmxldCBvZl9pbnQgPSBJbnQudG9fZmxvYXRcbmxldCB0b19pbnQgPSBJbnQub2ZfZmxvYXRcbmxldCBvZl9pbnQ2MyBpID0gSW50NjMudG9fZmxvYXQgaVxubGV0IG9mX2ludDY0IGkgPSBDYW1sLkludDY0LnRvX2Zsb2F0IGlcbmxldCB0b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfZmxvYXRcbmxldCBpcm91bmRfbGJvdW5kID0gbG93ZXJfYm91bmRfZm9yX2ludCBJbnQubnVtX2JpdHNcbmxldCBpcm91bmRfdWJvdW5kID0gdXBwZXJfYm91bmRfZm9yX2ludCBJbnQubnVtX2JpdHNcblxuKCogVGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBcImV4blwiIHJvdW5kaW5nIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQsIHNvIHRoZXkgYXJlIHdyaXR0ZW5cbiAgIG91dCBzZXBhcmF0ZWx5LCBhbmQgdHVuZWQgaW5kaXZpZHVhbGx5LiAgKFdlIGNvdWxkIGhhdmUgdGhlIG9wdGlvbiB2ZXJzaW9ucyBjYWxsXG4gICB0aGUgXCJleG5cIiB2ZXJzaW9ucywgYnV0IHRoYXQgaW1wb3NlcyBhcmd1YWJseSBncmF0dWl0b3VzIG92ZXJoZWFkLS0tZXNwZWNpYWxseVxuICAgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGNhcHR1cmUgb2YgYmFja3RyYWNlcyBpcyBlbmFibGVkIHVwb24gXCJ3aXRoXCItLS1hbmQgdGhhdCBzZWVtc1xuICAgbm90IHdvcnRoIGl0IHdoZW4gY29tcGFyZWQgdG8gdGhlIHJlbGF0aXZlbHkgc21hbGwgYW1vdW50IG9mIGNvZGUgZHVwbGljYXRpb24uKSAqKVxuXG4oKiBFcnJvciByZXBvcnRpbmcgYmVsb3cgaXMgdmVyeSBjYXJlZnVsbHkgYXJyYW5nZWQgc28gdGhhdCwgZS5nLiwgW2lyb3VuZF9uZWFyZXN0X2V4bl1cbiAgIGl0c2VsZiBjYW4gYmUgaW5saW5lZCBpbnRvIGNhbGxlcnMgc3VjaCB0aGF0IHRoZXkgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhIGJveCBmb3IgdGhlXG4gICBbZmxvYXRdIGFyZ3VtZW50LiAgVGhpcyBpcyBkb25lIHdpdGggYSBib3ggW2JveF0gZnVuY3Rpb24gY2FyZWZ1bGx5IGNob3NlbiB0byBhbGxvdyB0aGVcbiAgIGNvbXBpbGVyIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIGJveCBmb3IgdGhlIGZsb2F0IG9ubHkgaW4gZXJyb3IgY2FzZXMuICBTZWUsIGUuZy4sXG4gICBbLi4vLi4vemVyby90ZXN0L3ByaWNlX3Rlc3QubWxdIGZvciBhIG1lY2hhbmljYWwgdGVzdCBvZiB0aGlzIHByb3BlcnR5IHdoZW4gYnVpbGRpbmdcbiAgIHdpdGggW1hfTElCUkFSWV9JTkxJTklORz10cnVlXS4gKilcblxubGV0IGlyb3VuZF91cCB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKClcbjs7XG5cbmxldCBpcm91bmRfZG93biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlbiBpZiB0IDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpIGVsc2UgTm9uZVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpKVxuOztcblxubGV0IGlyb3VuZF90b3dhcmRzX3plcm8gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdG93YXJkc196ZXJvX2V4biB0ID1cbiAgaWYgdCA+PSBpcm91bmRfbGJvdW5kICYmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0Lmlyb3VuZF90b3dhcmRzX3plcm9fZXhuOiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKGJveCB0KVxuICAgICAgKClcbjs7XG5cbigqIE91dHNpZGUgb2YgdGhlIHJhbmdlIChyb3VuZF9uZWFyZXN0X2xiLi5yb3VuZF9uZWFyZXN0X3ViKSwgYWxsIHJlcHJlc2VudGFibGUgZG91Ymxlc1xuICAgYXJlIGludGVnZXJzIGluIHRoZSBtYXRoZW1hdGljYWwgc2Vuc2UsIGFuZCBbcm91bmRfbmVhcmVzdF0gc2hvdWxkIGJlIGlkZW50aXR5LlxuXG4gICBIb3dldmVyLCBmb3Igb2RkIG51bWJlcnMgd2l0aCB0aGUgYWJzb2x1dGUgdmFsdWUgYmV0d2VlbiAyKio1MiBhbmQgMioqNTMsIHRoZSBmb3JtdWxhXG4gICBbcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKyAwLjUpXSBkb2VzIG5vdCBob2xkOlxuXG4gICB7dlxuICAgICAjIGxldCBuYWl2ZV9yb3VuZF9uZWFyZXN0IHggPSBmbG9vciAoeCArLiAwLjUpOztcbiAgICAgIyBsZXQgeCA9IDIuICoqIDUyLiArLiAxLjs7XG4gICAgIHZhbCB4IDogZmxvYXQgPSA0NTAzNTk5NjI3MzcwNDk3LlxuICAgICAjIG5haXZlX3JvdW5kX25lYXJlc3QgeDs7XG4gICAgIC0gOiAgICAgZmxvYXQgPSA0NTAzNTk5NjI3MzcwNDk4LlxuICAgdn1cbiopXG5cbmxldCByb3VuZF9uZWFyZXN0X2xiID0gLS4oMi4gKiogNTIuKVxubGV0IHJvdW5kX25lYXJlc3RfdWIgPSAyLiAqKiA1Mi5cblxuKCogRm9yIFt4ID0gb25lX3VscCBgRG93biAwLjVdLCB0aGUgZm9ybXVsYSBbZmxvb3IgKHggKy4gMC41KV0gZm9yIHJvdW5kaW5nIHRvIG5lYXJlc3RcbiAgIGRvZXMgbm90IHdvcmssIGJlY2F1c2UgdGhlIGV4YWN0IHJlc3VsdCBpcyBoYWxmd2F5IGJldHdlZW4gW29uZV91bHAgYERvd24gMS5dIGFuZCBbMS5dLFxuICAgYW5kIGl0IGdldHMgcm91bmRlZCB1cCB0byBbMS5dIGR1ZSB0byB0aGUgcm91bmQtdGllcy10by1ldmVuIHJ1bGUuICopXG5sZXQgb25lX3VscF9sZXNzX3RoYW5faGFsZiA9IG9uZV91bHAgYERvd24gMC41XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCA9XG4gIHRcbiAgKy5cbiAgaWYgdCA9IG9uZV91bHBfbGVzc190aGFuX2hhbGZcbiAgdGhlbiBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmICgqIHNpbmNlIHQgPCAwLjUsIG1ha2Ugc3VyZSB0aGUgcmVzdWx0IGlzIDwgMS4wICopXG4gIGVsc2UgMC41XG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfMzIgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yICh0ICsuIDAuNSkgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzY0IHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW5cbiAgICBpZiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICAgIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCkpXG4gICAgZWxzZSBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgICBlbHNlIE5vbmVcbiAgZWxzZSBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYlxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGZsb29yICh0ICsuIDAuNSkpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3QgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaXJvdW5kX25lYXJlc3RfNjRcbiAgfCBXMzIgLT4gaXJvdW5kX25lYXJlc3RfMzJcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF9leG5fMzIgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbFwiIChib3ggdCkgKCkpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9uZWFyZXN0X2V4bl82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpXG4gICAgZWxzZSBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKClcbiAgZWxzZSBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYlxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGZsb29yICh0ICsuIDAuNSkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKClcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF9leG4gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0X2V4bl8zMlxuOztcblxuKCogVGhlIGZvbGxvd2luZyBbaXJvdW5kX2V4bl0gYW5kIFtpcm91bmRdIGZ1bmN0aW9ucyBhcmUgc2xvd2VyIHRoYW4gdGhlIG9uZXMgYWJvdmUuXG4gICBUaGVpciBlcXVpdmFsZW5jZSB0byB0aG9zZSBmdW5jdGlvbnMgaXMgdGVzdGVkIGluIHRoZSB1bml0IHRlc3RzIGJlbG93LiAqKVxuXG5sZXRbQGlubGluZV0gaXJvdW5kX2V4biA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgbWF0Y2ggZGlyIHdpdGhcbiAgfCBgWmVybyAtPiBpcm91bmRfdG93YXJkc196ZXJvX2V4biB0XG4gIHwgYE5lYXJlc3QgLT4gaXJvdW5kX25lYXJlc3RfZXhuIHRcbiAgfCBgVXAgLT4gaXJvdW5kX3VwX2V4biB0XG4gIHwgYERvd24gLT4gaXJvdW5kX2Rvd25fZXhuIHRcbjs7XG5cbmxldCBpcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIHRyeSBTb21lIChpcm91bmRfZXhuIH5kaXIgdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IGlzX2luZiB0ID0gMS4gLy4gdCA9IDAuXG5sZXQgaXNfZmluaXRlIHQgPSB0IC0uIHQgPSAwLlxuXG5sZXQgbWluX2luYW4gKHggOiB0KSB5ID1cbiAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeVxuOztcblxubGV0IG1heF9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBhZGQgPSAoICsuIClcbmxldCBzdWIgPSAoIC0uIClcbmxldCBuZWcgPSAoIH4tLiApXG5sZXQgYWJzID0gYWJzX2Zsb2F0XG5sZXQgc2NhbGUgPSAoICouIClcbmxldCBzcXVhcmUgeCA9IHggKi4geFxuXG5tb2R1bGUgUGFydHMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGZyYWN0aW9uYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBpbnRlZ3JhbCA6IHQgLT4gZmxvYXRcbiAgdmFsIG1vZGYgOiBmbG9hdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgKiBmbG9hdFxuXG4gIGxldCBmcmFjdGlvbmFsIHQgPSBmc3QgdFxuICBsZXQgaW50ZWdyYWwgdCA9IHNuZCB0XG4gIGxldCBtb2RmID0gbW9kZlxuZW5kXG5cbmxldCBtb2RmID0gUGFydHMubW9kZlxubGV0IHJvdW5kX2Rvd24gPSBmbG9vclxubGV0IHJvdW5kX3VwID0gY2VpbFxubGV0IHJvdW5kX3Rvd2FyZHNfemVybyB0ID0gaWYgdCA+PSAwLiB0aGVuIHJvdW5kX2Rvd24gdCBlbHNlIHJvdW5kX3VwIHRcblxuKCogc2VlIHRoZSBjb21tZW50IGFib3ZlIFtyb3VuZF9uZWFyZXN0X2xiXSBhbmQgW3JvdW5kX25lYXJlc3RfdWJdIGZvciBhbiBleHBsYW5hdGlvbiAqKVxubGV0W0BvY2FtbC5pbmxpbmVdIHJvdW5kX25lYXJlc3RfaW5saW5lIHQgPVxuICBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYiAmJiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIGZsb29yIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICBlbHNlIHQgKy4gMC5cbjs7XG5cbmxldCByb3VuZF9uZWFyZXN0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHRcblxubGV0IHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIHQgPVxuICBpZiB0IDw9IHJvdW5kX25lYXJlc3RfbGIgfHwgdCA+PSByb3VuZF9uZWFyZXN0X3ViXG4gIHRoZW4gdCArLiAwLlxuICBlbHNlIChcbiAgICBsZXQgZmxvb3IgPSBmbG9vciB0IGluXG4gICAgKCogW2NlaWxfb3Jfc3VjYyA9IGlmIHQgaXMgYW4gaW50ZWdlciB0aGVuIHQgKy4gMS4gZWxzZSBjZWlsIHRdLiAgRmFzdGVyIHRoYW4gW2NlaWxdLiAqKVxuICAgIGxldCBjZWlsX29yX3N1Y2MgPSBmbG9vciArLiAxLiBpblxuICAgIGxldCBkaWZmX2Zsb29yID0gdCAtLiBmbG9vciBpblxuICAgIGxldCBkaWZmX2NlaWwgPSBjZWlsX29yX3N1Y2MgLS4gdCBpblxuICAgIGlmIGRpZmZfZmxvb3IgPCBkaWZmX2NlaWxcbiAgICB0aGVuIGZsb29yXG4gICAgZWxzZSBpZiBkaWZmX2Zsb29yID4gZGlmZl9jZWlsXG4gICAgdGhlbiBjZWlsX29yX3N1Y2NcbiAgICBlbHNlIGlmICgqIGV4YWN0IHRpZSwgcGljayB0aGUgZXZlbiAqKVxuICAgICAgbW9kX2Zsb2F0IGZsb29yIDIuID0gMC5cbiAgICB0aGVuIGZsb29yXG4gICAgZWxzZSBjZWlsX29yX3N1Y2MpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbGJvdW5kID0gbG93ZXJfYm91bmRfZm9yX2ludCBJbnQ2My5udW1fYml0c1xubGV0IGludDYzX3JvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcblxubGV0IGludDYzX3JvdW5kX3VwX2V4biB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKSlcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICgpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfZG93bl9leG4gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW5cbiAgICBpZiB0IDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gdDAgPVxuICBsZXQgdCA9IChyb3VuZF9uZWFyZXN0X2lubGluZSBbQG9jYW1sLmlubGluZWQgYWx3YXlzXSkgdDAgaW5cbiAgaWYgdCA+IDAuXG4gIHRoZW5cbiAgICBpZiB0IDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoYm94IHQwKVxuICAgICAgICAoKVxuICBlbHNlIGlmIHQgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChib3ggdDApXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuIGYgPSBJbnQ2My5vZl9pbnQgKGlyb3VuZF9uZWFyZXN0X2V4biBmKVxuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9leG4gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG5cbiAgfCBXMzIgLT4gaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG5cbjs7XG5cbmxldCByb3VuZCA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgbWF0Y2ggZGlyIHdpdGhcbiAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IHRcbiAgfCBgRG93biAtPiByb3VuZF9kb3duIHRcbiAgfCBgVXAgLT4gcm91bmRfdXAgdFxuICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyB0XG47O1xuXG5tb2R1bGUgQ2xhc3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEluZmluaXRlXG4gICAgfCBOYW5cbiAgICB8IE5vcm1hbFxuICAgIHwgU3Vibm9ybWFsXG4gICAgfCBaZXJvXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBJbmZpbml0ZTsgTmFuOyBOb3JtYWw7IFN1Ym5vcm1hbDsgWmVybyBdIDogdCBsaXN0KVxuXG4gIGxldCB0X29mX3NleHAgPVxuICAgIChsZXQgZXJyb3Jfc291cmNlX18wMDZfID0gXCJmbG9hdC5tbC5DbGFzcy50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgLT4gSW5maW5pdGVcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSAtPiBOb3JtYWxcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic3Vibm9ybWFsXCIgfCBcIlN1Ym5vcm1hbFwiKSAtPiBTdWJub3JtYWxcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmZpbml0ZVwiIHwgXCJJbmZpbml0ZVwiKSA6OiBfKSBhc1xuICAgICAgIHNleHBfXzAwN18gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJub3JtYWxcIiB8IFwiTm9ybWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwN18gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwic3Vibm9ybWFsXCIgfCBcIlN1Ym5vcm1hbFwiKSA6OiBfKSBhc1xuICAgICAgIHNleHBfXzAwN18gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICAgfCBzZXhwX18wMDVfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEluZmluaXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkluZmluaXRlXCJcbiAgICAgIHwgTmFuIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5hblwiXG4gICAgICB8IE5vcm1hbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOb3JtYWxcIlxuICAgICAgfCBTdWJub3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3Vibm9ybWFsXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgeyB1bnR5cGVkID1cbiAgICAgICAgVmFyaWFudFxuICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIkluZmluaXRlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5hblwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOb3JtYWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiU3Vibm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG5lbmRcblxubGV0IGNsYXNzaWZ5IHQgPVxuICBsZXQgbW9kdWxlIEMgPSBDbGFzcyBpblxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB0IHdpdGhcbiAgfCBGUF9ub3JtYWwgLT4gQy5Ob3JtYWxcbiAgfCBGUF9zdWJub3JtYWwgLT4gQy5TdWJub3JtYWxcbiAgfCBGUF96ZXJvIC0+IEMuWmVyb1xuICB8IEZQX2luZmluaXRlIC0+IEMuSW5maW5pdGVcbiAgfCBGUF9uYW4gLT4gQy5OYW5cbjs7XG5cbmxldCBpbnNlcnRfdW5kZXJzY29yZXMgPyhkZWxpbWl0ZXIgPSAnXycpID8oc3RyaXBfemVybyA9IGZhbHNlKSBzdHJpbmcgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHJpbmcgfm9uOicuJyB3aXRoXG4gIHwgTm9uZSAtPiBJbnRfY29udmVyc2lvbnMuaW5zZXJ0X2RlbGltaXRlciBzdHJpbmcgfmRlbGltaXRlclxuICB8IFNvbWUgKGxlZnQsIHJpZ2h0KSAtPlxuICAgIGxldCBsZWZ0ID0gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgbGVmdCB+ZGVsaW1pdGVyIGluXG4gICAgbGV0IHJpZ2h0ID1cbiAgICAgIGlmIHN0cmlwX3plcm8gdGhlbiBTdHJpbmcucnN0cmlwIHJpZ2h0IH5kcm9wOihmdW4gYyAtPiBDaGFyLiggPSApIGMgJzAnKSBlbHNlIHJpZ2h0XG4gICAgaW5cbiAgICAobWF0Y2ggcmlnaHQgd2l0aFxuICAgICB8IFwiXCIgLT4gbGVmdFxuICAgICB8IF8gLT4gbGVmdCBeIFwiLlwiIF4gcmlnaHQpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bSA/ZGVsaW1pdGVyID8oZGVjaW1hbHMgPSAzKSA/c3RyaXBfemVybyA/KGV4cGxpY2l0X3BsdXMgPSBmYWxzZSkgZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgZGVjaW1hbHMgMFxuICB0aGVuIGludmFsaWRfYXJnZiBcInRvX3N0cmluZ19odW06IGludmFsaWQgYXJndW1lbnQgfmRlY2ltYWxzPSVkXCIgZGVjaW1hbHMgKCk7XG4gIG1hdGNoIGNsYXNzaWZ5IGYgd2l0aFxuICB8IENsYXNzLkluZmluaXRlIC0+IGlmIGYgPiAwLiB0aGVuIFwiaW5mXCIgZWxzZSBcIi1pbmZcIlxuICB8IENsYXNzLk5hbiAtPiBcIm5hblwiXG4gIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBzID1cbiAgICAgIGlmIGV4cGxpY2l0X3BsdXMgdGhlbiBzcHJpbnRmIFwiJSsuKmZcIiBkZWNpbWFscyBmIGVsc2Ugc3ByaW50ZiBcIiUuKmZcIiBkZWNpbWFscyBmXG4gICAgaW5cbiAgICBpbnNlcnRfdW5kZXJzY29yZXMgcyA/ZGVsaW1pdGVyID9zdHJpcF96ZXJvXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPVxuICBsZXQgc2V4cCA9IHNleHBfb2ZfdCB0IGluXG4gIG1hdGNoICFTZXhwLm9mX2Zsb2F0X3N0eWxlIHdpdGhcbiAgfCBgTm9fdW5kZXJzY29yZXMgLT4gc2V4cFxuICB8IGBVbmRlcnNjb3JlcyAtPlxuICAgIChtYXRjaCBzZXhwIHdpdGhcbiAgICAgfCBMaXN0IF8gLT5cbiAgICAgICByYWlzZV9zXG4gICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICBcIltzZXhwX29mX2Zsb2F0XSBwcm9kdWNlZCBzdHJhbmdlIHNleHBcIlxuICAgICAgICAgICAgWyBcInNleHBcIiwgU2V4cC5zZXhwX29mX3Qgc2V4cCBdKVxuICAgICB8IEF0b20gc3RyaW5nIC0+XG4gICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHN0cmluZyAnRScgdGhlbiBzZXhwIGVsc2UgQXRvbSAoaW5zZXJ0X3VuZGVyc2NvcmVzIHN0cmluZykpXG47O1xuXG5sZXQgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0ID8ocHJlZml4ID0gXCJcIikgfmtpbG8gfm1lZ2EgfmdpZ2EgfnRlcmEgP3BldGEgKCkgPVxuICAoKiBSb3VuZCBhIHJhdGlvIHRvd2FyZCB0aGUgbmVhcmVzdCBpbnRlZ2VyLCByZXNvbHZpbmcgdGllcyB0b3dhcmQgdGhlIG5lYXJlc3QgZXZlblxuICAgICBudW1iZXIuICBGb3Igc2FuZSBpbnB1dHMgKGluIHBhcnRpY3VsYXIsIHdoZW4gW2Rlbm9taW5hdG9yXSBpcyBhbiBpbnRlZ2VyIGFuZFxuICAgICBbYWJzIG51bWVyYXRvciA8IDJlNTJdKSB0aGlzIHNob3VsZCBiZSBhY2N1cmF0ZS4gIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBtaWdodCBiZSBhXG4gICAgIGxpdHRsZSBiaXQgb2ZmLCBidXQgd2UgZG9uJ3QgcmVhbGx5IHVzZSB0aGF0IGNhc2UuICopXG4gIGxldCBpcm91bmRfcmF0aW9fZXhuIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yID1cbiAgICBsZXQgayA9IGZsb29yIChudW1lcmF0b3IgLy4gZGVub21pbmF0b3IpIGluXG4gICAgKCogaWYgW2FicyBrIDwgMmU1M10sIHRoZW4gYm90aCBba10gYW5kIFtrICsuIDEuXSBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYW5kIGluXG4gICAgICAgcGFydGljdWxhciBbayArLiAxLiA+IGtdLiAgSWYgW2Rlbm9taW5hdG9yXSBpcyBhbHNvIGFuIGludGVnZXIsIGFuZFxuICAgICAgIFthYnMgKGRlbm9taW5hdG9yICouIChrICsuIDEpKSA8IDJlNTNdIChhbmQgaW4gc29tZSBvdGhlciBjYXNlcywgdG9vKSwgdGhlbiBbbG93ZXJdXG4gICAgICAgYW5kIFtoaWdoZXJdIGFyZSBhY3R1YWxseSBib3RoIGFjY3VyYXRlLiAgU2luY2UgKHJvdWdobHkpXG4gICAgICAgW251bWVyYXRvciA9IGRlbm9taW5hdG9yICouIGtdIHRoZW4gZm9yIFthYnMgbnVtZXJhdG9yIDwgMmU1Ml0gd2Ugc2hvdWxkIGJlXG4gICAgICAgZmluZS4gKilcbiAgICBsZXQgbG93ZXIgPSBkZW5vbWluYXRvciAqLiBrIGluXG4gICAgbGV0IGhpZ2hlciA9IGRlbm9taW5hdG9yICouIChrICsuIDEuKSBpblxuICAgICgqIFN1YnRyYWN0aW5nIG51bWJlcnMgd2l0aGluIGEgZmFjdG9yIG9mIHR3byBmcm9tIGVhY2ggb3RoZXIgaXMgYWNjdXJhdGUuXG4gICAgICAgU28gZWl0aGVyIHRoZSB0d28gc3VidHJhY3Rpb25zIGJlbG93IGFyZSBhY2N1cmF0ZSwgb3IgayA9IDAsIG9yIGsgPSAtMS5cbiAgICAgICBJbiBjYXNlIG9mIGEgdGllLCByb3VuZCB0byBldmVuLiAqKVxuICAgIGxldCBkaWZmX3JpZ2h0ID0gaGlnaGVyIC0uIG51bWVyYXRvciBpblxuICAgIGxldCBkaWZmX2xlZnQgPSBudW1lcmF0b3IgLS4gbG93ZXIgaW5cbiAgICBsZXQgayA9IGlyb3VuZF9uZWFyZXN0X2V4biBrIGluXG4gICAgaWYgZGlmZl9yaWdodCA8IGRpZmZfbGVmdFxuICAgIHRoZW4gayArIDFcbiAgICBlbHNlIGlmIGRpZmZfcmlnaHQgPiBkaWZmX2xlZnRcbiAgICB0aGVuIGtcbiAgICBlbHNlIGlmICgqIGEgdGllICopXG4gICAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChrIG1vZCAyKSAwXG4gICAgdGhlbiBrXG4gICAgZWxzZSBrICsgMVxuICBpblxuICBtYXRjaCBjbGFzc2lmeSB0IHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiB0IDwgMC4wIHRoZW4gXCItaW5mICBcIiBlbHNlIFwiaW5mICBcIlxuICB8IENsYXNzLk5hbiAtPiBcIm5hbiAgXCJcbiAgfCBDbGFzcy5TdWJub3JtYWwgfCBDbGFzcy5Ob3JtYWwgfCBDbGFzcy5aZXJvIC0+XG4gICAgbGV0IGdvIHQgPVxuICAgICAgbGV0IGNvbnZfb25lIHQgPVxuICAgICAgICBhc3NlcnQgKDAuIDw9IHQgJiYgdCA8IDk5OS45NSk7XG4gICAgICAgIGxldCB4ID0gcHJlZml4IF4gZm9ybWF0X2Zsb2F0IFwiJS4xZlwiIHQgaW5cbiAgICAgICAgKCogRml4IHRoZSBcIi4wXCIgc3VmZml4ICopXG4gICAgICAgIGlmIFN0cmluZy5pc19zdWZmaXggeCB+c3VmZml4OlwiLjBcIlxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeCA9IEJ5dGVzLm9mX3N0cmluZyB4IGluXG4gICAgICAgICAgbGV0IG4gPSBCeXRlcy5sZW5ndGggeCBpblxuICAgICAgICAgIEJ5dGVzLnNldCB4IChuIC0gMSkgJyAnO1xuICAgICAgICAgIEJ5dGVzLnNldCB4IChuIC0gMikgJyAnO1xuICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6eClcbiAgICAgICAgZWxzZSB4XG4gICAgICBpblxuICAgICAgbGV0IGNvbnYgbWFnIHQgZGVub21pbmF0b3IgPVxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIChkZW5vbWluYXRvciA9IDEwMC4gJiYgdCA+PSA5OTkuOTUpXG4gICAgICAgICAgfHwgKGRlbm9taW5hdG9yID49IDEwMF8wMDAuICYmIHQgPj0gcm91bmRfbmVhcmVzdCAoZGVub21pbmF0b3IgKi4gOS45OTlfNSkpKTtcbiAgICAgICAgYXNzZXJ0ICh0IDwgcm91bmRfbmVhcmVzdCAoZGVub21pbmF0b3IgKi4gOV85OTkuNSkpO1xuICAgICAgICBsZXQgaSwgZCA9XG4gICAgICAgICAgbGV0IGsgPSBpcm91bmRfcmF0aW9fZXhuIH5udW1lcmF0b3I6dCB+ZGVub21pbmF0b3IgaW5cbiAgICAgICAgICAoKiBbbW9kXSBpcyBva2F5IGhlcmUgYmVjYXVzZSB3ZSBrbm93IGkgPj0gMC4gKilcbiAgICAgICAgICBrIC8gMTAsIGsgbW9kIDEwXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICAgICAgYXNzZXJ0ICgwIDw9IGkgJiYgaSA8IDEwMDApO1xuICAgICAgICBhc3NlcnQgKDAgPD0gZCAmJiBkIDwgMTApO1xuICAgICAgICBpZiBkID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIlcyVkJXMgXCIgcHJlZml4IGkgbWFnXG4gICAgICAgIGVsc2Ugc3ByaW50ZiBcIiVzJWQlcyVkXCIgcHJlZml4IGkgbWFnIGRcbiAgICAgIGluXG4gICAgICAoKiBXaGlsZSB0aGUgc3RhbmRhcmQgbWV0cmljIHByZWZpeGVzIChlLmcuIGNhcGl0YWwgXCJNXCIgcmF0aGVyIHRoYW4gXCJtXCIsIFsxXSkgYXJlXG4gICAgICAgICBub21pbmFsbHkgbW9yZSBjb3JyZWN0LCB0aGlzIGhpbmRlcnMgcmVhZGFiaWxpdHkgaW4gb3VyIGNhc2UuICBFLmcuLCAxMEc2IGFuZFxuICAgICAgICAgMTA2NiBsb29rIHRvbyBzaW1pbGFyLiAgVGhhdCdzIGFuIGV4dHJlbWUgZXhhbXBsZSwgYnV0IGluIGdlbmVyYWwgayxtLGcsdCxwXG4gICAgICAgICBwcm9iYWJseSBzdGFuZCBvdXQgYmV0dGVyIHRoYW4gSyxNLEcsVCxQIHdoZW4gaW50ZXJzcGVyc2VkIHdpdGggZGlnaXRzLlxuXG4gICAgICAgICBbMV0gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZXRyaWNfcHJlZml4ICopXG4gICAgICAoKiBUaGUgdHJpY2sgaGVyZSBpcyB0aGF0OlxuICAgICAgICAgLSB0aGUgZmlyc3QgYm91bmRhcnkgKDk5OS45NSkgYXMgYSBmbG9hdCBpcyBzbGlnaHRseSBvdmVyLXJlcHJlc2VudGVkIChzbyBpdCBpc1xuICAgICAgICAgICBiZXR0ZXIgYXBwcm94aW1hdGVkIGFzIFwiMWtcIiB0aGFuIGFzIFwiOTk5LjlcIiksXG4gICAgICAgICAtIHRoZSBvdGhlciBib3VuZGFyaWVzIGFyZSBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkLCBiZWNhdXNlIHRoZXkgYXJlIGludGVnZXJzLlxuICAgICAgICAgICBUaGF0J3Mgd2h5IHRoZSBzdHJpY3QgZXF1YWxpdGllcyBiZWxvdyBkbyBleGFjdGx5IHdoYXQgd2Ugd2FudC4gKilcbiAgICAgIGlmIHQgPCA5OTkuOTVFMFxuICAgICAgdGhlbiBjb252X29uZSB0XG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFM1xuICAgICAgdGhlbiBjb252IGtpbG8gdCAxMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFNlxuICAgICAgdGhlbiBjb252IG1lZ2EgdCAxMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTlcbiAgICAgIHRoZW4gY29udiBnaWdhIHQgMTAwXzAwMF8wMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFMTJcbiAgICAgIHRoZW4gY29udiB0ZXJhIHQgMTAwXzAwMF8wMDBfMDAwLlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHBldGEgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3ByaW50ZiBcIiVzJS4xZVwiIHByZWZpeCB0XG4gICAgICAgIHwgU29tZSBwZXRhIC0+XG4gICAgICAgICAgaWYgdCA8IDk5OS45NUUxNVxuICAgICAgICAgIHRoZW4gY29udiBwZXRhIHQgMTAwXzAwMF8wMDBfMDAwXzAwMC5cbiAgICAgICAgICBlbHNlIHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdClcbiAgICBpblxuICAgIGlmIHQgPj0gMC4gdGhlbiBnbyB0IGVsc2UgXCItXCIgXiBnbyB+LS50XG47O1xuXG5sZXQgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIHQgPVxuICB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG9tIHQgfmtpbG86XCJrXCIgfm1lZ2E6XCJtXCIgfmdpZ2E6XCJnXCIgfnRlcmE6XCJ0XCIgfnBldGE6XCJwXCIgKClcbjs7XG5cbigqIFBlcmZvcm1hbmNlIG5vdGU6IEluaXRpYWxpemluZyB0aGUgYWNjdW11bGF0b3IgdG8gMSByZXN1bHRzIGluIG9uZSBleHRyYVxuICAgbXVsdGlwbHk7IGUuZy4sIHRvIGNvbXB1dGUgeCAqKiA0LCB3ZSBpbiBwcmluY2lwbGUgb25seSBuZWVkIDIgbXVsdGlwbGllcyxcbiAgIGJ1dCB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSAzIG11bHRpcGxpZXMuICBIb3dldmVyLCBhdHRlbXB0cyB0byBhdm9pZCB0aGlzXG4gICAobGlrZSBkZWNyZW1lbnRpbmcgbiBhbmQgaW5pdGlhbGl6aW5nIGFjY3VtIHRvIGJlIHgsIG9yIGhhbmRsaW5nIHNtYWxsXG4gICBleHBvbmVudHMgYXMgYSBzcGVjaWFsIGNhc2UpIGhhdmUgbm90IHlpZWxkZWQgYW55dGhpbmcgdGhhdCBpcyBhIG5ldFxuICAgaW1wcm92ZW1lbnQuXG4qKVxubGV0IGludF9wb3cgeCBuID1cbiAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiBuID0gMFxuICB0aGVuIDEuXG4gIGVsc2UgKFxuICAgICgqIFVzaW5nIFt4ICsuICgtMC4pXSBvbiB0aGUgZm9sbG93aW5nIGxpbmUgY29udmluY2VzIHRoZSBjb21waWxlciB0byBhdm9pZCBhIGNlcnRhaW5cbiAgICAgICBib3hpbmcgKHRoYXQgd291bGQgcmVzdWx0IGluIGFsbG9jYXRpb24gaW4gZWFjaCBpdGVyYXRpb24pLiAgU29vbiwgdGhlIGNvbXBpbGVyXG4gICAgICAgc2hvdWxkbid0IG5lZWQgdGhpcyBcImhpbnRcIiB0byBhdm9pZCB0aGUgYm94aW5nLiAgVGhlIHJlYXNvbiB3ZSBhZGQgLTAgcmF0aGVyIHRoYW4gMFxuICAgICAgIGlzIHRoYXQgW3ggKy4gKC0wLildIGlzIGFwcGFyZW50bHkgYWx3YXlzIHRoZSBzYW1lIGFzIFt4XSwgd2hlcmVhcyBbeCArLiAwLl0gaXNcbiAgICAgICBub3QsIGluIHRoYXQgaXQgc2VuZHMgWy0wLl0gdG8gWzAuXS4gIFRoaXMgbWFrZXMgYSBkaWZmZXJlbmNlIGJlY2F1c2Ugd2Ugd2FudFxuICAgICAgIFtpbnRfcG93ICgtMC4pICgtMSldIHRvIHJldHVybiBuZWdfaW5maW5pdHkganVzdCBsaWtlIFstMC4gKiogLTEuXSB3b3VsZC4gICopXG4gICAgbGV0IHggPSByZWYgKHggKy4gLTAuKSBpblxuICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICBsZXQgYWNjdW0gPSByZWYgMS4gaW5cbiAgICBpZiAhbiA8IDBcbiAgICB0aGVuIChcbiAgICAgICgqIHggKiogbiA9ICgxL3gpICoqIC1uICopXG4gICAgICB4IDo9IDEuIC8uICF4O1xuICAgICAgbiA6PSB+LSAoIW4pO1xuICAgICAgaWYgIW4gPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogbiBtdXN0IGhhdmUgYmVlbiBtaW5faW50LCBzbyBpdCBpcyBub3cgc28gYmlnIHRoYXQgaXQgaGFzIHdyYXBwZWQgYXJvdW5kLlxuICAgICAgICAgICBXZSBkZWNyZW1lbnQgaXQgc28gdGhhdCBpdCBsb29rcyBwb3NpdGl2ZSBhZ2FpbiwgYnV0IGFjY29yZGluZ2x5IGhhdmVcbiAgICAgICAgICAgdG8gcHV0IGFuIGV4dHJhIGZhY3RvciBvZiB4IGluIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgICAgKilcbiAgICAgICAgYWNjdW0gOj0gIXg7XG4gICAgICAgIGRlY3IgbikpO1xuICAgICgqIExldHRpbmcgW2FdIGRlbm90ZSAodGhlIG9yaWdpbmFsIHZhbHVlIG9mKSBbeCAqKiBuXSwgd2UgbWFpbnRhaW5cbiAgICAgICB0aGUgaW52YXJpYW50IHRoYXQgWyh4ICoqIG4pICouIGFjY3VtID0gYV0uICopXG4gICAgd2hpbGUgIW4gPiAxIGRvXG4gICAgICBpZiAhbiBsYW5kIDEgPD4gMCB0aGVuIGFjY3VtIDo9ICF4ICouICFhY2N1bTtcbiAgICAgIHggOj0gIXggKi4gIXg7XG4gICAgICBuIDo9ICFuIGxzciAxXG4gICAgZG9uZTtcbiAgICAoKiBuIGlzIG5lY2Vzc2FyaWx5IDEgYXQgdGhpcyBwb2ludCwgc28gdGhlcmUgaXMgb25lIGFkZGl0aW9uYWxcbiAgICAgICBtdWx0aXBsaWNhdGlvbiBieSB4LiAqKVxuICAgICF4ICouICFhY2N1bSlcbjs7XG5cbmxldCByb3VuZF9nZW4geCB+aG93ID1cbiAgaWYgeCA9IDAuXG4gIHRoZW4gMC5cbiAgZWxzZSBpZiBub3QgKGlzX2Zpbml0ZSB4KVxuICB0aGVuIHhcbiAgZWxzZSAoXG4gICAgKCogU2lnbmlmaWNhbnQgZGlnaXRzIGFuZCBkZWNpbWFsIGRpZ2l0cy4gKilcbiAgICBsZXQgc2QsIGRkID1cbiAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICB8IGBzaWduaWZpY2FudF9kaWdpdHMgc2QgLT5cbiAgICAgICAgbGV0IGRkID0gc2QgLSB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgICB8IGBkZWNpbWFsX2RpZ2l0cyBkZCAtPlxuICAgICAgICBsZXQgc2QgPSBkZCArIHRvX2ludCAocm91bmRfdXAgKGxvZzEwIChhYnMgeCkpKSBpblxuICAgICAgICBzZCwgZGRcbiAgICBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBpZiBzZCA8IDBcbiAgICB0aGVuIDAuXG4gICAgZWxzZSBpZiBzZCA+PSAxN1xuICAgIHRoZW4geFxuICAgIGVsc2UgKFxuICAgICAgKCogQ2hvb3NlIHRoZSBvcmRlciB0aGF0IGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LiBTbWFsbCBwb3NpdGl2ZVxuICAgICAgICAgaW50ZWdlcnMgYXJlLCBidXQgdGhlaXIgaW52ZXJzZXMgaW4gbW9zdCBjYXNlcyBhcmUgbm90LiAqKVxuICAgICAgbGV0IGFic19kZCA9IEludC5hYnMgZGQgaW5cbiAgICAgIGlmIGFic19kZCA+IDIyIHx8IHNkID49IDE2XG4gICAgICAoKiAxMCoqMjIgaXMgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQsIGJ1dCAxMCoqMjMgaXMgbm90LCBzbyB1c2UgdGhlIHNsb3dcbiAgICAgICAgIHBhdGguICBTaW1pbGFybHksIGlmIHdlIG5lZWQgMTYgc2lnbmlmaWNhbnQgZGlnaXRzIGluIHRoZSByZXN1bHQsIHRoZW4gdGhlIGludGVnZXJcbiAgICAgICAgIFtyb3VuZF9uZWFyZXN0ICh4IDxvcD4gb3JkZXIpXSBtaWdodCBub3QgYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQsIHNpbmNlXG4gICAgICAgICBmb3Igc29tZSByYW5nZXMgd2Ugb25seSBoYXZlIDE1IGRpZ2l0cyBvZiBwcmVjaXNpb24gZ3VhcmFudGVlZC5cblxuICAgICAgICAgVGhhdCBzYWlkLCB3ZSBhcmUgc3RpbGwgcm91bmRpbmcgdHdpY2UgaGVyZTpcblxuICAgICAgICAgMSkgZmlyc3QgdGltZSB3aGVuIHJvdW5kaW5nIFt4ICouIG9yZGVyXSBvciBbeCAvLiBvcmRlcl0gdG8gdGhlIG5lYXJlc3QgZmxvYXRcbiAgICAgICAgIChqdXN0IHRoZSBub3JtYWwgd2F5IGZsb2F0aW5nLXBvaW50IG11bHRpcGxpY2F0aW9uIG9yIGRpdmlzaW9uIHdvcmtzKSxcblxuICAgICAgICAgMikgc2Vjb25kIHRpbWUgd2hlbiBhcHBseWluZyBbcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW5dIHRvIHRoZSByZXN1bHQgb2YgdGhlXG4gICAgICAgICBhYm92ZSBvcGVyYXRpb25cblxuICAgICAgICAgU28gZm9yIGFyZ3VtZW50cyB3aXRoaW4gYW4gdWxwIGZyb20gYSB0aWUgd2UgbWlnaHQgc3RpbGwgcHJvZHVjZSBhbiBvZmYtYnktb25lXG4gICAgICAgICByZXN1bHQuICopXG4gICAgICB0aGVuIG9mX3N0cmluZyAoc3ByaW50ZiBcIiUuKmdcIiBzZCB4KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBvcmRlciA9IGludF9wb3cgMTAuIGFic19kZCBpblxuICAgICAgICBpZiBkZCA+PSAwXG4gICAgICAgIHRoZW4gcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gKHggKi4gb3JkZXIpIC8uIG9yZGVyXG4gICAgICAgIGVsc2Ugcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gKHggLy4gb3JkZXIpICouIG9yZGVyKSkpXG47O1xuXG5sZXQgcm91bmRfc2lnbmlmaWNhbnQgeCB+c2lnbmlmaWNhbnRfZGlnaXRzID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgc2lnbmlmaWNhbnRfZGlnaXRzIDBcbiAgdGhlblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5yb3VuZF9zaWduaWZpY2FudDogaW52YWxpZCBhcmd1bWVudCBzaWduaWZpY2FudF9kaWdpdHM6JWRcIlxuICAgICAgc2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgICAoKVxuICBlbHNlIHJvdW5kX2dlbiB4IH5ob3c6KGBzaWduaWZpY2FudF9kaWdpdHMgc2lnbmlmaWNhbnRfZGlnaXRzKVxuOztcblxubGV0IHJvdW5kX2RlY2ltYWwgeCB+ZGVjaW1hbF9kaWdpdHMgPSByb3VuZF9nZW4geCB+aG93OihgZGVjaW1hbF9kaWdpdHMgZGVjaW1hbF9kaWdpdHMpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICgqIEFsc28gZmFpbHMgaWYgW21pbl0gb3IgW21heF0gaXMgbmFuICopXG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gICgqIGNsYW1wX3VuY2hlY2tlZCBpcyBpbiBmbG9hdDAubWwgKilcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBpZiBtaW4gPD0gbWF4XG4gIHRoZW4gT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgZWxzZVxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbjs7XG5cbmxldCAoICsgKSA9ICggKy4gKVxubGV0ICggLSApID0gKCAtLiApXG5sZXQgKCAqICkgPSAoICouIClcbmxldCAoICoqICkgPSAoICoqIClcbmxldCAoIC8gKSA9ICggLy4gKVxubGV0ICggJSApID0gKCAlLiApXG5sZXQgKCB+LSApID0gKCB+LS4gKVxuXG5sZXQgc2lnbl9leG4gdCA6IFNpZ24udCA9XG4gIGlmIHQgPiAwLlxuICB0aGVuIFBvc1xuICBlbHNlIGlmIHQgPCAwLlxuICB0aGVuIE5lZ1xuICBlbHNlIGlmIHQgPSAwLlxuICB0aGVuIFplcm9cbiAgZWxzZSBFcnJvci5yYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJGbG9hdC5zaWduX2V4biBvZiBOQU5cIiBbIFwiXCIsIHNleHBfb2ZfdCB0IF0pXG47O1xuXG5sZXQgc2lnbl9vcl9uYW4gdCA6IFNpZ25fb3JfbmFuLnQgPVxuICBpZiB0ID4gMC4gdGhlbiBQb3MgZWxzZSBpZiB0IDwgMC4gdGhlbiBOZWcgZWxzZSBpZiB0ID0gMC4gdGhlbiBaZXJvIGVsc2UgTmFuXG47O1xuXG5sZXQgaWVlZV9uZWdhdGl2ZSB0ID1cbiAgbGV0IGJpdHMgPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBQb2x5LihiaXRzIDwgQ2FtbC5JbnQ2NC56ZXJvKVxuOztcblxubGV0IGV4cG9uZW50X2JpdHMgPSAxMVxubGV0IG1hbnRpc3NhX2JpdHMgPSA1MlxubGV0IGV4cG9uZW50X21hc2s2NCA9IEludDY0LihzaGlmdF9sZWZ0IG9uZSBleHBvbmVudF9iaXRzIC0gb25lKVxubGV0IGV4cG9uZW50X21hc2sgPSBJbnQ2NC50b19pbnRfZXhuIGV4cG9uZW50X21hc2s2NFxubGV0IG1hbnRpc3NhX21hc2sgPSBJbnQ2My4oc2hpZnRfbGVmdCBvbmUgbWFudGlzc2FfYml0cyAtIG9uZSlcbmxldCBtYW50aXNzYV9tYXNrNjQgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYV9tYXNrXG5cbmxldCBpZWVlX2V4cG9uZW50IHQgPVxuICBsZXQgYml0cyA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gIEludDY0LihiaXRfYW5kIChzaGlmdF9yaWdodF9sb2dpY2FsIGJpdHMgbWFudGlzc2FfYml0cykgZXhwb25lbnRfbWFzazY0KVxuICB8PiBDYW1sLkludDY0LnRvX2ludFxuOztcblxubGV0IGllZWVfbWFudGlzc2EgdCA9XG4gIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgSW50NjMub2ZfaW50NjRfZXhuIENhbWwuSW50NjQuKGxvZ2FuZCBiaXRzIG1hbnRpc3NhX21hc2s2NClcbjs7XG5cbmxldCBjcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBpZiBJbnQuKGJpdF9hbmQgZXhwb25lbnQgZXhwb25lbnRfbWFzayA8PiBleHBvbmVudClcbiAgdGhlbiBmYWlsd2l0aGYgXCJleHBvbmVudCAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIGV4cG9uZW50IGV4cG9uZW50X21hc2sgKClcbiAgZWxzZSBpZiBJbnQ2My4oYml0X2FuZCBtYW50aXNzYSBtYW50aXNzYV9tYXNrIDw+IG1hbnRpc3NhKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIm1hbnRpc3NhICVzIG91dCBvZiByYW5nZSBbMCwgJXNdXCJcbiAgICAgIChJbnQ2My50b19zdHJpbmcgbWFudGlzc2EpXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhX21hc2spXG4gICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgc2lnbl9iaXRzID0gaWYgbmVnYXRpdmUgdGhlbiBDYW1sLkludDY0Lm1pbl9pbnQgZWxzZSBDYW1sLkludDY0Lnplcm8gaW5cbiAgICBsZXQgZXhwdF9iaXRzID0gQ2FtbC5JbnQ2NC5zaGlmdF9sZWZ0IChDYW1sLkludDY0Lm9mX2ludCBleHBvbmVudCkgbWFudGlzc2FfYml0cyBpblxuICAgIGxldCBtYW50X2JpdHMgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYSBpblxuICAgIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC4obG9nb3Igc2lnbl9iaXRzIChsb2dvciBleHB0X2JpdHMgbWFudF9iaXRzKSkgaW5cbiAgICBDYW1sLkludDY0LmZsb2F0X29mX2JpdHMgYml0cylcbjs7XG5cbmxldCBjcmVhdGVfaWVlZSB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSA9XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhKVxuOztcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdG9fc3RyaW5nIHggPSBQcmludGYuc3ByaW50ZiBcIiUuOEdcIiB4XG4gIGxldCBzZXhwX29mX3QgeCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX3N0cmluZyB4XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBUaGVzZSBhcmUgcGFydGx5IGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRvIGF2b2lkIHNvbWUgYm94aW5nIHdlJ3JlIGdldHRpbmcgd2l0aFxuICAgdGhlIHZlcnNpb25zIHdlIGdldCBmcm9tIFtXaXRoX3plcm9dLiAgVGhleSBhbHNvIG1ha2UgW0Zsb2F0LmlzX25lZ2F0aXZlIG5hbl0gYW5kXG4gICBbRmxvYXQuaXNfbm9uX3Bvc2l0aXZlIG5hbl0gcmV0dXJuIFtmYWxzZV07IHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXSByZXR1cm5cbiAgIFt0cnVlXS4gKilcbmxldCBpc19wb3NpdGl2ZSB0ID0gdCA+IDAuXG5sZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSB0ID49IDAuXG5sZXQgaXNfbmVnYXRpdmUgdCA9IHQgPCAwLlxubGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gdCA8PSAwLlxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5GbG9hdFwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoICUgKSA9ICggJSApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50ID0gb2ZfaW50XG4gIGxldCBvZl9mbG9hdCB4ID0geFxuZW5kXG5cbm1vZHVsZSBPX2RvdCA9IHN0cnVjdFxuICBsZXQgKCAqLiApID0gKCAqIClcbiAgbGV0ICggKy4gKSA9ICggKyApXG4gIGxldCAoIC0uICkgPSAoIC0gKVxuICBsZXQgKCAvLiApID0gKCAvIClcbiAgbGV0ICggJS4gKSA9ICggJSApXG4gIGxldCAoIH4tLiApID0gKCB+LSApXG4gIGxldCAoICoqLiApID0gKCAqKiApXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJveCA9IGJveFxuICBsZXQgY2xhbXBfdW5jaGVja2VkID0gY2xhbXBfdW5jaGVja2VkXG4gIGxldCBsb3dlcl9ib3VuZF9mb3JfaW50ID0gbG93ZXJfYm91bmRfZm9yX2ludFxuICBsZXQgdXBwZXJfYm91bmRfZm9yX2ludCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHNwZWNpYWxpemVkX2hhc2ggPSBoYXNoX2Zsb2F0XG4gIGxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICBsZXQgaXJvdW5kX25lYXJlc3RfZXhuXzY0ID0gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IHJlcGxhY2UgZGVmYXVsdHMgaW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLlxuXG4gICBUaGUgZGVzaXJlZCBiZWhhdmlvciBoZXJlIGlzIHRvIHByb3BhZ2F0ZSBhIG5hbiBpZiBlaXRoZXIgYXJndW1lbnQgaXMgbmFuLiBCZWNhdXNlIHRoZVxuICAgZmlyc3QgY29tcGFyaXNvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbiwgaXQgc3VmZmljZXMgdG9cbiAgIGNoZWNrIGlmIHggaXMgbmFuLiBUaGVuLCB3aGVuIHggaXMgbmFuIG9yIGJvdGggeCBhbmQgeSBhcmUgbmFuLCB3ZSByZXR1cm4geCA9IG5hbjsgYW5kXG4gICB3aGVuIHkgaXMgbmFuIGJ1dCBub3QgeCwgd2UgcmV0dXJuIHkgPSBuYW4uXG5cbiAgIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucy4gIFRoZSBiZW5jaG1hcmsgYmVsb3cgc2hvd3MgYSBmZXdcbiAgIGRpZmZlcmVudCB2ZXJzaW9ucy4gIFRoaXMgYmVuY2htYXJrIHdhcyBydW4gb3ZlciBhbiBhcnJheSBvZiByYW5kb20gZmxvYXRzIChub25lIG9mXG4gICB3aGljaCBhcmUgbmFuKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuNDJ1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDIuMDJ1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuODh1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuXG4gICBUaGUgYmVuY2htYXJrIGJlbG93IHdhcyBydW4gd2hlbiB4ID4geSBpcyBhbHdheXMgdHJ1ZSAoYWdhaW4sIG5vIG5hbiB2YWx1ZXMpLlxuXG4gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBUaW1lL1J1biDilIJcbiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAg4pSCIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHkg4pSCICAgMi44M3VzIOKUglxuICAg4pSCIGlmIGlzX25hbiB4IHx8IHggPCB5IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS45N3VzIOKUglxuICAg4pSCIGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS41NnVzIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4qKVxubGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5sZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCdWZmZXJfaW50ZlxuaW5jbHVkZSBDYW1sLkJ1ZmZlclxuXG5sZXQgY29udGVudHNfYnl0ZXMgPSB0b19ieXRlc1xubGV0IGFkZF9zdWJzdHJpbmcgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJzdHJpbmcgdCBzIHBvcyBsZW5cbmxldCBhZGRfc3ViYnl0ZXMgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJieXRlcyB0IHMgcG9zIGxlblxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9zdHJpbmcgKGNvbnRlbnRzIHQpXG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgICAgIENhbWwuQnVmZmVyLmJsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKENhbWwuQnVmZmVyKSAoVG9fYnl0ZXMpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9IENhbWwuUHJpbnRleGMucmF3X2JhY2t0cmFjZVxuXG5sZXQgZWxpZGUgPSByZWYgZmFsc2VcbmxldCBlbGlkZWRfbWVzc2FnZSA9IFwiPGJhY2t0cmFjZSBlbGlkZWQgaW4gdGVzdD5cIlxuXG5sZXQgZ2V0ID8oYXRfbW9zdF9udW1fZnJhbWVzID0gSW50Lm1heF92YWx1ZSkgKCkgPVxuICBDYW1sLlByaW50ZXhjLmdldF9jYWxsc3RhY2sgYXRfbW9zdF9udW1fZnJhbWVzXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBpZiAhZWxpZGUgdGhlbiBlbGlkZWRfbWVzc2FnZSBlbHNlIENhbWwuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgdFxuOztcblxubGV0IHRvX3N0cmluZ19saXN0IHQgPSBTdHJpbmcuc3BsaXRfbGluZXMgKHRvX3N0cmluZyB0KVxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5MaXN0IChMaXN0Lm1hcCAodG9fc3RyaW5nX2xpc3QgdCkgfmY6KGZ1biB4IC0+IFNleHAuQXRvbSB4KSlcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgc2V0X3JlY29yZGluZyA9IENhbWwuUHJpbnRleGMucmVjb3JkX2JhY2t0cmFjZVxuICBsZXQgYW1fcmVjb3JkaW5nID0gQ2FtbC5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4gIGxldCBtb3N0X3JlY2VudCAoKSA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKClcblxuICBsZXQgbW9zdF9yZWNlbnRfZm9yX2V4biBleG4gPVxuICAgIGlmIEV4bi5pc19waHlzX2VxdWFsX21vc3RfcmVjZW50IGV4biB0aGVuIFNvbWUgKG1vc3RfcmVjZW50ICgpKSBlbHNlIE5vbmVcbiAgOztcblxuICAoKiBXZSB0dXJuIG9uIGJhY2t0cmFjZXMgYnkgZGVmYXVsdCBpZiBPQ0FNTFJVTlBBUkFNIGRvZXNuJ3QgZXhwbGljaXRseSBtZW50aW9uIHRoZW0uICopXG4gIGxldCBtYXliZV9zZXRfcmVjb3JkaW5nICgpID1cbiAgICBsZXQgb2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhY2VzID1cbiAgICAgIG1hdGNoIFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgeCAtPiBMaXN0LmV4aXN0cyAoU3RyaW5nLnNwbGl0IHggfm9uOicsJykgfmY6KFN0cmluZy5pc19wcmVmaXggfnByZWZpeDpcImJcIilcbiAgICBpblxuICAgIGlmIG5vdCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgdGhlbiBzZXRfcmVjb3JkaW5nIHRydWVcbiAgOztcblxuICAoKiB0aGUgY2FsbGVyIHNldCBzb21ldGhpbmcsIHRoZXkgYXJlIHJlc3BvbnNpYmxlICopXG5cbiAgbGV0IHdpdGhfcmVjb3JkaW5nIGIgfmYgPVxuICAgIGxldCBzYXZlZCA9IGFtX3JlY29yZGluZyAoKSBpblxuICAgIHNldF9yZWNvcmRpbmcgYjtcbiAgICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHNldF9yZWNvcmRpbmcgc2F2ZWQpXG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gRXhuLm1heWJlX3NldF9yZWNvcmRpbmcgKClcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyB0aGUgdG9wbGV2ZWwgb2YgdGhlIEJhc2UgbGlicmFyeTsgaXQncyB3aGF0IHlvdSBnZXQgd2hlbiB5b3Ugd3JpdGVcbiAgICBbb3BlbiBCYXNlXS5cblxuICAgIFRoZSBnb2FsIG9mIEJhc2UgaXMgYm90aCB0byBiZSBhIG1vcmUgY29tcGxldGUgc3RhbmRhcmQgbGlicmFyeSwgd2l0aCByaWNoZXIgQVBJcyxcbiAgICBhbmQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGluIGl0cyBkZXNpZ24uIEZvciBpbnN0YW5jZSwgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnlcbiAgICBzb21lIHRoaW5ncyBoYXZlIG1vZHVsZXMgYW5kIG90aGVycyBkb24ndDsgaW4gQmFzZSwgZXZlcnl0aGluZyBpcyBhIG1vZHVsZS5cblxuICAgIEJhc2UgZXh0ZW5kcyBzb21lIG1vZHVsZXMgYW5kIGRhdGEgc3RydWN0dXJlcyBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBsaWtlIFtBcnJheV0sXG4gICAgW0J1ZmZlcl0sIFtCeXRlc10sIFtDaGFyXSwgW0hhc2h0YmxdLCBbSW50MzJdLCBbSW50NjRdLCBbTGF6eV0sIFtMaXN0XSwgW01hcF0sXG4gICAgW05hdGl2ZWludF0sIFtQcmludGZdLCBbUmFuZG9tXSwgW1NldF0sIFtTdHJpbmddLCBbU3lzXSwgYW5kIFtVY2hhcl0uIE9uZSBrZXlcbiAgICBkaWZmZXJlbmNlIGlzIHRoYXQgQmFzZSBkb2Vzbid0IHVzZSBleGNlcHRpb25zIGFzIG11Y2ggYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYW5kXG4gICAgaW5zdGVhZCBtYWtlcyBoZWF2eSB1c2Ugb2YgdGhlIFtSZXN1bHRdIHR5cGUsIGFzIGluOlxuXG4gICAge1sgdHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2IgXX1cblxuICAgIEJhc2UgYWxzbyBhZGRzIGVudGlyZWx5IG5ldyBtb2R1bGVzLCBtb3N0IG5vdGFibHk6XG5cbiAgICAtIFtDb21wYXJhYmxlXSwgW0NvbXBhcmF0b3JdLCBhbmQgW0NvbXBhcmlzb25zXSBpbiBsaWV1IG9mIHBvbHltb3JwaGljIGNvbXBhcmUuXG4gICAgLSBbQ29udGFpbmVyXSwgd2hpY2ggcHJvdmlkZXMgYSBjb25zaXN0ZW50IGludGVyZmFjZSBhY3Jvc3MgY29udGFpbmVyLWxpa2UgZGF0YVxuICAgICAgc3RydWN0dXJlcyAoYXJyYXlzLCBsaXN0cywgc3RyaW5ncykuXG4gICAgLSBbUmVzdWx0XSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0sIHN1cHBvcnRpbmcgdGhlIG9yLWVycm9yIHBhdHRlcm4uXG4qKVxuXG4oKl8gV2UgaGlkZSB0aGlzIGZyb20gdGhlIHdlYiBkb2NzIGJlY2F1c2UgdGhlIGxpbmUgd3JhcHBpbmcgaXMgYmFkLCBtYWtpbmcgaXRcbiAgcHJldHR5IG11Y2ggaW5zY3J1dGFibGUuICopXG4oKiovKiopXG5cbigqIFRoZSBpbnRlbnQgaXMgdG8gc2hhZG93IGFsbCBvZiBJTlJJQSdzIHN0YW5kYXJkIGxpYnJhcnkuICBNb2R1bGVzIGJlbG93IHdvdWxkIGNhdXNlXG4gICBjb21waWxhdGlvbiBlcnJvcnMgd2l0aG91dCBiZWluZyByZW1vdmVkIGZyb20gW1NoYWRvd19zdGRsaWJdIGJlZm9yZSBpbmNsdXNpb24uICopXG5cbmluY2x1ZGUgKFxuICBTaGFkb3dfc3RkbGliIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYWRvd19zdGRsaWJcbiAgZW5kXG4gICgqIE1vZHVsZXMgZGVmaW5lZCBpbiBCYXNlICopXG4gIHdpdGggbW9kdWxlIEFycmF5IDo9IFNoYWRvd19zdGRsaWIuQXJyYXlcbiAgd2l0aCBtb2R1bGUgQXRvbWljIDo9IFNoYWRvd19zdGRsaWIuQXRvbWljXG4gIHdpdGggbW9kdWxlIEJvb2wgOj0gU2hhZG93X3N0ZGxpYi5Cb29sXG4gIHdpdGggbW9kdWxlIEJ1ZmZlciA6PSBTaGFkb3dfc3RkbGliLkJ1ZmZlclxuICB3aXRoIG1vZHVsZSBCeXRlcyA6PSBTaGFkb3dfc3RkbGliLkJ5dGVzXG4gIHdpdGggbW9kdWxlIENoYXIgOj0gU2hhZG93X3N0ZGxpYi5DaGFyXG4gIHdpdGggbW9kdWxlIEVpdGhlciA6PSBTaGFkb3dfc3RkbGliLkVpdGhlclxuICB3aXRoIG1vZHVsZSBGbG9hdCA6PSBTaGFkb3dfc3RkbGliLkZsb2F0XG4gIHdpdGggbW9kdWxlIEhhc2h0YmwgOj0gU2hhZG93X3N0ZGxpYi5IYXNodGJsXG4gIHdpdGggbW9kdWxlIEluX2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5Jbl9jaGFubmVsXG4gIHdpdGggbW9kdWxlIEludCA6PSBTaGFkb3dfc3RkbGliLkludFxuICB3aXRoIG1vZHVsZSBJbnQzMiA6PSBTaGFkb3dfc3RkbGliLkludDMyXG4gIHdpdGggbW9kdWxlIEludDY0IDo9IFNoYWRvd19zdGRsaWIuSW50NjRcbiAgd2l0aCBtb2R1bGUgTGF6eSA6PSBTaGFkb3dfc3RkbGliLkxhenlcbiAgd2l0aCBtb2R1bGUgTGlzdCA6PSBTaGFkb3dfc3RkbGliLkxpc3RcbiAgd2l0aCBtb2R1bGUgTWFwIDo9IFNoYWRvd19zdGRsaWIuTWFwXG4gIHdpdGggbW9kdWxlIE5hdGl2ZWludCA6PSBTaGFkb3dfc3RkbGliLk5hdGl2ZWludFxuICB3aXRoIG1vZHVsZSBPcHRpb24gOj0gU2hhZG93X3N0ZGxpYi5PcHRpb25cbiAgd2l0aCBtb2R1bGUgT3V0X2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5PdXRfY2hhbm5lbFxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdFxuICAoKiBTdXBwb3J0IGZvciBnZW5lcmF0ZWQgbGV4ZXJzICopXG4gIHdpdGggbW9kdWxlIExleGluZyA6PSBTaGFkb3dfc3RkbGliLkxleGluZ1xuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZikgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCoqLyoqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxubW9kdWxlIEF2bHRyZWUgPSBBdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFja3RyYWNlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxpdCA9IEJsaXRcbm1vZHVsZSBCb29sID0gQm9vbFxubW9kdWxlIEJ1ZmZlciA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzID0gQnl0ZXNcbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3Jcbm1vZHVsZSBDb21wYXJpc29ucyA9IENvbXBhcmlzb25zXG5tb2R1bGUgQ29udGFpbmVyID0gQ29udGFpbmVyXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBFeG5cbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBIYXNoID0gSGFzaFxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaGVyID0gSGFzaGVyXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbmRleGVkX2NvbnRhaW5lciA9IEluZGV4ZWRfY29udGFpbmVyXG5tb2R1bGUgSW5mbyA9IEluZm9cbm1vZHVsZSBJbnQgPSBJbnRcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBJbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnQzMiA9IEludDMyXG5tb2R1bGUgSW50NjMgPSBJbnQ2M1xubW9kdWxlIEludDY0ID0gSW50NjRcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnZhcmlhbnQgPSBJbnZhcmlhbnRcbm1vZHVsZSBMYXp5ID0gTGF6eVxubW9kdWxlIExpc3QgPSBMaXN0XG5tb2R1bGUgTWFwID0gTWFwXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1vbmFkID0gTW9uYWRcbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBQb2x5ID0gUG9seVxubW9kdWxlIFBvbHltb3JwaGljX2NvbXBhcmUgPSBQb2x5IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMV0gdXNlIFtQb2x5XSBpbnN0ZWFkXCJdXG5cbm1vZHVsZSBQb3Bjb3VudCA9IFBvcGNvdW50XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiB0aGUgaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIExpbmtlZF9xdWV1ZSA9IExpbmtlZF9xdWV1ZVxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBSYW5kb20gPSBSYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBTeXNcbm1vZHVsZSBUID0gVFxubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IFVuaWZvcm1fYXJyYXlcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxuKCogQXZvaWQgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiBmb3IgdXNlcyBvZiB0aGUgc2lnbmF0dXJlcyBkZWZpbmVkIGluIFtUXS4gKilcbmluY2x1ZGUgVFxuXG4oKiBUaGlzIGlzIGEgaGFjayBzbyB0aGF0IG9kb2MgY3JlYXRlcyBiZXR0ZXIgZG9jdW1lbnRhdGlvbi4gKilcbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cF93aXRoX2NvbXBhcmFibGUgKCoqIEBpbmxpbmUgKilcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcyA9IHN0cnVjdFxuICBtb2R1bGUgRmllbGRzbGliID0gRmllbGRzbGliXG4gIG1vZHVsZSBQcHhfaGFzaF9saWIgPSBQcHhfaGFzaF9saWJcbiAgbW9kdWxlIFZhcmlhbnRzbGliID0gVmFyaWFudHNsaWJcbiAgbW9kdWxlIFBweF9jb21wYXJlX2xpYiA9IFBweF9jb21wYXJlX2xpYlxuICBtb2R1bGUgUHB4X2VudW1lcmF0ZV9saWIgPSBQcHhfZW51bWVyYXRlX2xpYlxuXG4gIGxldCBhbV90ZXN0aW5nID0gYW1fdGVzdGluZ1xuZW5kXG5cbigqKi8qKilcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAoKiBbZGVyaXZpbmcgaGFzaF0gaXMgbWlzc2luZyBmb3IgW2FycmF5XSBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+IGludCA9IEFycmF5LmNvbXBhcmVcbiAgbGV0IGVxdWFsX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBib29sID0gQXJyYXkuZXF1YWxcblxuICBsZXQgYXJyYXlfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgYXJyYXkgPVxuICAgIEFycmF5LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2FycmF5IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgQXJyYXkuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChhcnJheV9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgYXJyYXkgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IEFycmF5LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgYm9vbCA9IEJvb2wudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ib29sID0gKEJvb2wuY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQpXG4gIGxldCBlcXVhbF9ib29sID0gKEJvb2wuZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9ib29sIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBib29sIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgQm9vbC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9ib29sIDogYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gQm9vbC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGJvb2xfb2Zfc2V4cCA9IChCb29sLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBib29sKVxuICBsZXQgc2V4cF9vZl9ib29sID0gKEJvb2wuc2V4cF9vZl90IDogYm9vbCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJvb2wudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgY2hhciA9IENoYXIudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9jaGFyID0gKENoYXIuY29tcGFyZSA6IGNoYXIgLT4gY2hhciAtPiBpbnQpXG4gIGxldCBlcXVhbF9jaGFyID0gKENoYXIuZXF1YWwgOiBjaGFyIC0+IGNoYXIgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9jaGFyIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBjaGFyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgQ2hhci5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9jaGFyIDogY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gQ2hhci5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGNoYXJfb2Zfc2V4cCA9IChDaGFyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBjaGFyKVxuICBsZXQgc2V4cF9vZl9jaGFyID0gKENoYXIuc2V4cF9vZl90IDogY2hhciAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoY2hhcl9zZXhwX2dyYW1tYXIgOiBjaGFyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IENoYXIudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZXhuID0gRXhuLnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfZXhuID0gKEV4bi5zZXhwX29mX3QgOiBleG4gLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfZmxvYXQgPSAoRmxvYXQuY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludClcbiAgbGV0IGVxdWFsX2Zsb2F0ID0gKEZsb2F0LmVxdWFsIDogZmxvYXQgLT4gZmxvYXQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9mbG9hdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZmxvYXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBGbG9hdC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9mbG9hdCA6IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBGbG9hdC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGZsb2F0X29mX3NleHAgPSAoRmxvYXQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGZsb2F0KVxuICBsZXQgc2V4cF9vZl9mbG9hdCA9IChGbG9hdC5zZXhwX29mX3QgOiBmbG9hdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoZmxvYXRfc2V4cF9ncmFtbWFyIDogZmxvYXQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50ID0gSW50LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50ID0gKEludC5jb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQgPSAoSW50LmVxdWFsIDogaW50IC0+IGludCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2ludCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgSW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludCA6IGludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50X29mX3NleHAgPSAoSW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQpXG4gIGxldCBzZXhwX29mX2ludCA9IChJbnQuc2V4cF9vZl90IDogaW50IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnRfc2V4cF9ncmFtbWFyIDogaW50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQzMiA9IEludDMyLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50MzIgPSAoSW50MzIuY29tcGFyZSA6IGludDMyIC0+IGludDMyIC0+IGludClcbiAgbGV0IGVxdWFsX2ludDMyID0gKEludDMyLmVxdWFsIDogaW50MzIgLT4gaW50MzIgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQzMiA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50MzIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBJbnQzMi5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQzMiA6IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQzMi5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludDMyX29mX3NleHAgPSAoSW50MzIudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludDMyKVxuICBsZXQgc2V4cF9vZl9pbnQzMiA9IChJbnQzMi5zZXhwX29mX3QgOiBpbnQzMiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50MzJfc2V4cF9ncmFtbWFyIDogaW50MzIgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50MzIudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50NjQgPSBJbnQ2NC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDY0ID0gKEludDY0LmNvbXBhcmUgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQ2NCA9IChJbnQ2NC5lcXVhbCA6IGludDY0IC0+IGludDY0IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50NjQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDY0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50NjQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50NjQgOiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50NjQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQ2NF9vZl9zZXhwID0gKEludDY0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQ2NClcbiAgbGV0IHNleHBfb2ZfaW50NjQgPSAoSW50NjQuc2V4cF9vZl90IDogaW50NjQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDY0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIGxpc3QgPSAnYSBMaXN0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gaW50ID0gTGlzdC5jb21wYXJlXG4gIGxldCBlcXVhbF9saXN0IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gYm9vbCA9IExpc3QuZXF1YWxcblxuICBsZXQgaGFzaF9mb2xkX2xpc3QgOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIGxpc3RcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgTGlzdC5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCBsaXN0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGxpc3QgPVxuICAgIExpc3QudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfbGlzdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBsaXN0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgTGlzdC5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgKGxpc3Rfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgbGlzdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IExpc3QudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBuYXRpdmVpbnQgPSBOYXRpdmVpbnQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmNvbXBhcmUgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGludClcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA9IChOYXRpdmVpbnQuZXF1YWwgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfbmF0aXZlaW50IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBuYXRpdmVpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBOYXRpdmVpbnQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBOYXRpdmVpbnQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IChOYXRpdmVpbnQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IG5hdGl2ZWludClcbiAgbGV0IHNleHBfb2ZfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5zZXhwX29mX3QgOiBuYXRpdmVpbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gIGxldCAobmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIE5hdGl2ZWludC50X3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBvcHRpb24gPSAnYSBPcHRpb24udFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBpbnQgPVxuICAgIE9wdGlvbi5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBib29sID1cbiAgICBPcHRpb24uZXF1YWxcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2Egb3B0aW9uXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIE9wdGlvbi5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCBvcHRpb25fb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2Egb3B0aW9uID1cbiAgICBPcHRpb24udF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2Zfb3B0aW9uIDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIG9wdGlvbiAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIE9wdGlvbi5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgKG9wdGlvbl9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2Egb3B0aW9uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBPcHRpb24udF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9yZWYgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBpbnQgPSBSZWYuY29tcGFyZVxuICBsZXQgZXF1YWxfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSByZWYgLT4gJ2EgcmVmIC0+IGJvb2wgPSBSZWYuZXF1YWxcblxuICBsZXQgcmVmX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHJlZiA9XG4gICAgUmVmLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3JlZiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSByZWYgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBSZWYuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChyZWZfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgcmVmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVmLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfc3RyaW5nID0gKFN0cmluZy5jb21wYXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBpbnQpXG4gIGxldCBlcXVhbF9zdHJpbmcgPSAoU3RyaW5nLmVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX3N0cmluZyA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgU3RyaW5nLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3N0cmluZyA6IHN0cmluZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gU3RyaW5nLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc3RyaW5nX29mX3NleHAgPSAoU3RyaW5nLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBzdHJpbmcpXG4gIGxldCBzZXhwX29mX3N0cmluZyA9IChTdHJpbmcuc2V4cF9vZl90IDogc3RyaW5nIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYnl0ZXMgPSAoQnl0ZXMuY29tcGFyZSA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGludClcbiAgbGV0IGVxdWFsX2J5dGVzID0gKEJ5dGVzLmVxdWFsIDogYnl0ZXMgLT4gYnl0ZXMgLT4gYm9vbClcbiAgbGV0IGJ5dGVzX29mX3NleHAgPSAoQnl0ZXMudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGJ5dGVzKVxuICBsZXQgc2V4cF9vZl9ieXRlcyA9IChCeXRlcy5zZXhwX29mX3QgOiBieXRlcyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQnl0ZXMudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgdW5pdCA9IFVuaXQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV91bml0ID0gKFVuaXQuY29tcGFyZSA6IHVuaXQgLT4gdW5pdCAtPiBpbnQpXG4gIGxldCBlcXVhbF91bml0ID0gKFVuaXQuZXF1YWwgOiB1bml0IC0+IHVuaXQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF91bml0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB1bml0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgVW5pdC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF91bml0IDogdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gVW5pdC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHVuaXRfb2Zfc2V4cCA9IChVbml0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB1bml0KVxuICBsZXQgc2V4cF9vZl91bml0ID0gKFVuaXQuc2V4cF9vZl90IDogdW5pdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFVuaXQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gICgqKiBGb3JtYXQgc3R1ZmYgKilcblxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuXG4gICgqKiBMaXN0IG9wZXJhdG9ycyAqKVxuXG4gIGluY2x1ZGUgTGlzdC5JbmZpeFxuXG4gICgqKiBJbnQgb3BlcmF0b3JzIGFuZCBjb21wYXJpc29ucyAqKVxuXG4gIGluY2x1ZGUgSW50Lk9cbiAgaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgKCoqIEZsb2F0IG9wZXJhdG9ycyAqKVxuXG4gIGluY2x1ZGUgRmxvYXQuT19kb3RcblxuICAoKiBUaGlzIGlzIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGJlIG9wdGltaXplZCBhd2F5IGluIG1vcmUgY29udGV4dHMuICopXG5cbiAgKCoqIFJldmVyc2UgYXBwbGljYXRpb24gb3BlcmF0b3IuIFt4IHw+IGcgfD4gZl0gaXMgZXF1aXZhbGVudCB0byBbZiAoZyAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuICAoKiogQXBwbGljYXRpb24gb3BlcmF0b3IuIFtnIEBAIGYgQEAgeF0gaXMgZXF1aXZhbGVudCB0byBbZyAoZiAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuICAoKiogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbiAgKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbiAgZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuICBleHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuICAoKiBUaGlzIG11c3QgYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5LiAqKVxuICBleHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4gICgqKiBDb21tb24gc3RyaW5nIG9wZXJhdGlvbnMgKilcbiAgbGV0ICggXiApID0gU3RyaW5nLiggXiApXG5cbiAgKCoqIFJlZmVyZW5jZSBvcGVyYXRpb25zICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlIGFuZFxuICAgICB0byBrZWVwIHJlZmVyZW5jZSB1bmJveGluZyB3b3JraW5nICopXG4gIGV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuICBleHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbiAgKCoqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBmc3QgPSBmc3RcbiAgbGV0IHNuZCA9IHNuZFxuXG4gICgqKiBFeGNlcHRpb25zIHN0dWZmICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgbWF5IHJld3JpdGUgJyVyYWlzZScgYXMgJyVyZXJhaXNlJy4gKilcbiAgZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxuICBsZXQgZmFpbHdpdGggPSBmYWlsd2l0aFxuICBsZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICAoKiogTWlzYyAqKVxuXG4gIGxldCBwaHlzX2VxdWFsID0gcGh5c19lcXVhbFxuXG4gIGV4dGVybmFsIGZvcmNlIDogJ2EgTGF6eS50IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuaW5jbHVkZSBDb250YWluZXJfaW50Zi5FeHBvcnQgKCoqIEBpbmxpbmUgKilcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gTm90X2ZvdW5kX3NcblxuKCogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgW0Jhc2VdLiAgSWYgdGhpcyB3ZXJlIGluIGFub3RoZXIgbW9kdWxlIGluIFtCYXNlXSB0aGF0IHdhcyBub3QgdXNlZCBpbiBzb21lIHByb2dyYW0sXG4gICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gW0Jhc2VdOyByZWZlcnJpbmcgdG8gdmFsdWVzIGluXG4gICBbQmFzZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gQmFja3RyYWNlLmluaXRpYWxpemVfbW9kdWxlICgpXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuXG5sZXQgc2V0X2lucHV0X25hbWUgbmFtZSA9IGlucHV0X25hbWUgOj0gbmFtZVxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItMzdcIl1cblxuICB0eXBlIG9sZF90ICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSA9IHtcbiAgICBsb2M6IHQ7XG4gICAgbXNnOiBzdHJpbmc7XG4gICAgc3ViOiBvbGRfdCBsaXN0O1xuICAgIGlmX2hpZ2hsaWdodDogc3RyaW5nO1xuICB9XG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnRfa2luZCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5yZXBvcnRfa2luZCAqKSA9XG4gIHwgUmVwb3J0X2Vycm9yXG4gIHwgUmVwb3J0X3dhcm5pbmcgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X3dhcm5pbmdfYXNfZXJyb3Igb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0IG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydF9hc19lcnJvciBvZiBzdHJpbmdcblxuICB0eXBlIGxvY2F0aW9uX21zZyA9IChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpIGxvY1xuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydCAqKSA9IHtcbiAgICBraW5kIDogbG9jYXRpb25fcmVwb3J0X2tpbmQ7XG4gICAgbWFpbiA6IGxvY2F0aW9uX21zZztcbiAgICBzdWIgOiBsb2NhdGlvbl9tc2cgbGlzdDtcbiAgfVxuXG4gIHR5cGUgdCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBvbGRfdCAqKVxuICAoKiogT24gb2NhbWwgPj0gNC4wODogW3RdIGlzIGEgW2xvY2F0aW9uX3JlcG9ydF0gZm9yIHdoaWNoIFtsb2NhdGlvbl9yZXBvcnRfa2luZF0gbXVzdCBiZSBbUmVwb3J0X2Vycm9yXS4gKilcblxuICB0eXBlIHZlcnNpb25fc3BlY2lmaWNfdCA9IFtgTmV3X2Vycm9yIG9mIGxvY2F0aW9uX3JlcG9ydCB8IGBPbGRfZXJyb3Igb2Ygb2xkX3RdXG5cbiAgbGV0IHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IDogdCAtPiB2ZXJzaW9uX3NwZWNpZmljX3QgPSBmdW4geCAtPlxuICAgICgqSUZfQVRfTEVBU1QgNDA4IGBOZXdfZXJyb3IgeCAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBgT2xkX2Vycm9yIHggKilcblxuICBsZXQgaXNfd2VsbF9mb3JtZWQgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBraW5kID0gUmVwb3J0X2Vycm9yOyBfIH0gLT4gdHJ1ZVxuICAgIHwgYE5ld19lcnJvciBfIC0+IGZhbHNlXG4gICAgfCBgT2xkX2Vycm9yIF8gLT4gdHJ1ZVxuXG4gIGxldCBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIChtc2cgOiBsb2NhdGlvbl9tc2cpID0gRm9ybWF0LmFzcHJpbnRmIFwiJXRcIiBtc2cudHh0XG5cbiAgbGV0IG1haW5fbXNnIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBtYWluOyBsb2MgPSBtYWluLmxvYyB9XG4gICAgfCBgT2xkX2Vycm9yIHsgbXNnOyBsb2M7IF8gfSAtPiB7IHR4dCA9IG1zZzsgbG9jIH1cblxuICBsZXQgc3ViX21zZ3MgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gZXJyIC0+IHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBlcnI7IGxvYyA9IGVyci5sb2MgfSlcbiAgICAgICAgICBzdWJcbiAgICB8IGBPbGRfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBsZXQgcmVjIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICAgIHwgeyBsb2M7IG1zZzsgc3ViOyBfIH0gOjogdGFpbCAtPlxuICAgICAgICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzICh7IHR4dCA9IG1zZzsgbG9jIH0gOjogYWNjKSAoc3ViIEAgdGFpbClcbiAgICAgICAgaW5cbiAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBbXSBzdWJcblxuICBsZXQgb2ZfZXhuIGV4biA9XG4gICAgKCpJRl9BVF9MRUFTVCA0MDYgbWF0Y2ggZXJyb3Jfb2ZfZXhuIGV4biB3aXRoIHwgU29tZSAoYE9rIGUpIC0+IFNvbWUgZSB8IE5vbmUgfCBTb21lIGBBbHJlYWR5X2Rpc3BsYXllZCAtPiBOb25lICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA2IGVycm9yX29mX2V4biBleG4qKVxuXG4gIGxldCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cgPSB7IGVycm9yIHdpdGggbXNnIH1cblxuICBsZXQgX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnID1cbiAgICBsZXQgdHh0IHBwZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIG1zZyBpblxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggdHh0IH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX21zZyBlcnJvciBtc2cgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyopXG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgc3ViID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geyBsb2M7IHR4dCB9IC0+IHsgbG9jOyBtc2cgPSB0eHQ7IHN1YiA9IFtdOyBpZl9oaWdobGlnaHQgPSB0eHQgfSlcbiAgICAgICAgc3ViXG4gICAgaW5cbiAgICB7IGxvYzsgbXNnID0gdHh0OyBzdWI7IGlmX2hpZ2hsaWdodCA9IHR4dCB9XG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgbWtfdHh0IHggcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgeCBpblxuICAgIGxldCBtayBsb2MgeCA9IHsgbG9jOyB0eHQgPSBta190eHQgeCB9IGluXG4gICAge1xuICAgICAga2luZCA9IFJlcG9ydF9lcnJvcjtcbiAgICAgIG1haW4gPSBtayBsb2MgdHh0O1xuICAgICAgc3ViID0gTGlzdC5tYXAgKGZ1biB7IGxvYzsgdHh0IH0gLT4gbWsgbG9jIHR4dCkgc3ViO1xuICAgIH1cblxuICBsZXQgbWFrZSB+c3ViIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIG1zZyopXG5cbiAgbGV0IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyA9IHsgZXJyb3Igd2l0aCBsb2MgfVxuXG4gIGxldCBfc2V0X21haW5fbG9jX25ldyBlcnJvciBsb2MgPVxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggbG9jIH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX2xvYyBlcnJvciBsb2MgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbG9jX29sZCBlcnJvciBsb2MqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyopXG5lbmRcblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIG1zZyA9IHJhaXNlX2Vycm9yZiA/bG9jIG1zZ1xuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG5cbmxldCBwYXJzZSBzID1cbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDExIHBhcnNlIHMgKilcbiAgKCpJRl9BVF9MRUFTVCA0MTEgT2NhbWxfY29tbW9uLlBhcnNlLmxvbmdpZGVudCBAQCBMZXhpbmcuZnJvbV9zdHJpbmcgQEAgcyAqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3QgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmdcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMxXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMxXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgVGhvbWFzIEdhemFnbmFpcmUsIE9DYW1sUHJvICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgRmFicmljZSBMZSBGZXNzYW50LCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBIb25nYm8gWmhhbmcsIFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcmlnaW5hbCBDb2RlIGZyb20gQmVyLW1ldGFvY2FtbCwgbW9kaWZpZWQgZm9yIDMuMTIuMCBhbmQgZml4ZWQgKilcbigqIFByaW50aW5nIGNvZGUgZXhwcmVzc2lvbnMgKilcbigqIEF1dGhvcnM6ICBFZCBQaXp6aSwgRmFicmljZSBMZSBGZXNzYW50ICopXG4oKiBFeHRlbnNpdmUgUmV3cml0ZTogSG9uZ2JvIFpoYW5nOiBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYSAqKVxuKCogVE9ETyBtb3JlIGZpbmUtZ3JhaW5lZCBwcmVjZWRlbmNlIHByZXR0eS1wcmludGluZyAqKVxuXG5vcGVuIEFzdF80MTRcbm9wZW4gQXN0dHlwZXNcbm9wZW4gRm9ybWF0XG5vcGVuIExvY2F0aW9uXG5vcGVuIExvbmdpZGVudFxub3BlbiBQYXJzZXRyZWVcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IGRlZmF1bHQgfCBTb21lIHggLT4geFxuZW5kXG5cbmxldCB2YXJpZnlfdHlwZV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICBsZXQgY2hlY2tfdmFyaWFibGUgdmwgbG9jIHYgPVxuICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICBpblxuICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGxldCBkZXNjID1cbiAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgIHwgUHR5cF92YXIgeCAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKSB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzXG4gICAgICAgIC0+XG4gICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPiBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgIHN0cmluZ19sc3Q7XG4gICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgaW5cbiAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgbGV0IHBvZl9kZXNjID1cbiAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gIGluXG4gIGxvb3AgdFxuXG5sZXQgcHJlZml4X3N5bWJvbHMgPSBbICchJzsgJz8nOyAnficgXVxuXG5sZXQgaW5maXhfc3ltYm9scyA9XG4gIFsgJz0nOyAnPCc7ICc+JzsgJ0AnOyAnXic7ICd8JzsgJyYnOyAnKyc7ICctJzsgJyonOyAnLyc7ICckJzsgJyUnOyAnIycgXVxuXG4oKiB0eXBlIGZpeGl0eSA9IEluZml4fCBQcmVmaXggICopXG5sZXQgc3BlY2lhbF9pbmZpeF9zdHJpbmdzID1cbiAgWyBcImFzclwiOyBcImxhbmRcIjsgXCJsb3JcIjsgXCJsc2xcIjsgXCJsc3JcIjsgXCJseG9yXCI7IFwibW9kXCI7IFwib3JcIjsgXCI6PVwiOyBcIiE9XCI7IFwiOjpcIiBdXG5cbmxldCBsZXRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdsJ1xuICAmJiBzLlsxXSA9ICdlJ1xuICAmJiBzLlsyXSA9ICd0J1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbmxldCBhbmRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdhJ1xuICAmJiBzLlsxXSA9ICduJ1xuICAmJiBzLlsyXSA9ICdkJ1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbigqIGRldGVybWluZXMgaWYgdGhlIHN0cmluZyBpcyBhbiBpbmZpeCBzdHJpbmcuXG4gICBjaGVja3MgYmFja3dhcmRzLCBmaXJzdCBhbGxvd2luZyBhIHJlbmFtaW5nIHBvc3RmaXggKFwiXzEwMlwiKSB3aGljaFxuICAgbWF5IGhhdmUgcmVzdWx0ZWQgZnJvbSBQZXhwIC0+IFRleHAgLT4gUGV4cCB0cmFuc2xhdGlvbiwgdGhlbiBjaGVja2luZ1xuICAgaWYgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhcmUgdmFsaWQgaW5maXhcbiAgIGNoYXJhY3RlcnMuICopXG5sZXQgZml4aXR5X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJcIiAtPiBgTm9ybWFsXG4gIHwgcyB3aGVuIExpc3QubWVtIHMgc3BlY2lhbF9pbmZpeF9zdHJpbmdzIC0+IGBJbmZpeCBzXG4gIHwgcyB3aGVuIExpc3QubWVtIHMuWzBdIGluZml4X3N5bWJvbHMgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gcHJlZml4X3N5bWJvbHMgLT4gYFByZWZpeCBzXG4gIHwgcyB3aGVuIHMuWzBdID0gJy4nIC0+IGBNaXhmaXggc1xuICB8IHMgd2hlbiBsZXRvcCBzIC0+IGBMZXRvcCBzXG4gIHwgcyB3aGVuIGFuZG9wIHMgLT4gYEFuZG9wIHNcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IHZpZXdfZml4aXR5X29mX2V4cCA9IGZ1bmN0aW9uXG4gIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgZml4aXR5X29mX3N0cmluZyBsXG4gIHwgXyAtPiBgTm9ybWFsXG5cbmxldCBpc19pbmZpeCA9IGZ1bmN0aW9uIGBJbmZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfbWl4Zml4ID0gZnVuY3Rpb24gYE1peGZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfa3dkb3AgPSBmdW5jdGlvbiBgTGV0b3AgXyB8IGBBbmRvcCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgZmlyc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuWzBdID0gY1xubGV0IGxhc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuW1N0cmluZy5sZW5ndGggc3RyIC0gMV0gPSBjXG5sZXQgZmlyc3RfaXNfaW4gY3Mgc3RyID0gc3RyIDw+IFwiXCIgJiYgTGlzdC5tZW0gc3RyLlswXSBjc1xuXG4oKiB3aGljaCBpZGVudGlmaWVycyBhcmUgaW4gZmFjdCBvcGVyYXRvcnMgbmVlZGluZyBwYXJlbnRoZXNlcyAqKVxubGV0IG5lZWRzX3BhcmVucyB0eHQgPVxuICBsZXQgZml4ID0gZml4aXR5X29mX3N0cmluZyB0eHQgaW5cbiAgaXNfaW5maXggZml4IHx8IGlzX21peGZpeCBmaXggfHwgaXNfa3dkb3AgZml4XG4gIHx8IGZpcnN0X2lzX2luIHByZWZpeF9zeW1ib2xzIHR4dFxuXG4oKiBzb21lIGluZml4ZXMgbmVlZCBzcGFjZXMgYXJvdW5kIHBhcmVucyB0byBhdm9pZCBjbGFzaGVzIHdpdGggY29tbWVudFxuICAgc3ludGF4ICopXG5sZXQgbmVlZHNfc3BhY2VzIHR4dCA9IGZpcnN0X2lzICcqJyB0eHQgfHwgbGFzdF9pcyAnKicgdHh0XG5sZXQgc3RyaW5nX2xvYyBwcGYgeCA9IGZwcmludGYgcHBmIFwiJXNcIiB4LnR4dFxuXG4oKiBhZGQgcGFyZW50aGVzZXMgdG8gYmluZGVycyB3aGVuIHRoZXkgYXJlIGluIGZhY3QgaW5maXggb3IgcHJlZml4IG9wZXJhdG9ycyAqKVxubGV0IHByb3RlY3RfaWRlbnQgcHBmIHR4dCA9XG4gIGxldCBmb3JtYXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICBpZiBub3QgKG5lZWRzX3BhcmVucyB0eHQpIHRoZW4gXCIlc1wiXG4gICAgZWxzZSBpZiBuZWVkc19zcGFjZXMgdHh0IHRoZW4gXCIoQDslc0A7KVwiXG4gICAgZWxzZSBcIiglcylcIlxuICBpblxuICBmcHJpbnRmIHBwZiBmb3JtYXQgdHh0XG5cbmxldCBwcm90ZWN0X2xvbmdpZGVudCBwcGYgcHJpbnRfbG9uZ2lkZW50IGxvbmdwcmVmaXggdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVhLiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIiVhLihAOyVzQDspXCJcbiAgICBlbHNlIFwiJWEuKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHRcblxudHlwZSBzcGFjZV9mb3JtYXR0ZXIgPSAodW5pdCwgRm9ybWF0LmZvcm1hdHRlciwgdW5pdCkgZm9ybWF0XG5cbmxldCBvdmVycmlkZSA9IGZ1bmN0aW9uIE92ZXJyaWRlIC0+IFwiIVwiIHwgRnJlc2ggLT4gXCJcIlxuXG4oKiB2YXJpYW5jZSBlbmNvZGluZzogbmVlZCB0byBzeW5jIHVwIHdpdGggdGhlIFtwYXJzZXIubWx5XSAqKVxubGV0IHR5cGVfdmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IE5vVmFyaWFuY2UgLT4gXCJcIlxuICB8IENvdmFyaWFudCAtPiBcIitcIlxuICB8IENvbnRyYXZhcmlhbnQgLT4gXCItXCJcblxubGV0IHR5cGVfaW5qZWN0aXZpdHkgPSBmdW5jdGlvbiBOb0luamVjdGl2aXR5IC0+IFwiXCIgfCBJbmplY3RpdmUgLT4gXCIhXCJcblxudHlwZSBjb25zdHJ1Y3QgPVxuICBbIGBjb25zIG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBsaXN0IG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBuaWxcbiAgfCBgbm9ybWFsXG4gIHwgYHNpbXBsZSBvZiBMb25naWRlbnQudFxuICB8IGB0dXBsZSBdXG5cbmxldCB2aWV3X2V4cHIgeCA9XG4gIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCIoKVwiOyBfIH0sIF8pIC0+IGB0dXBsZVxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXykgLT4gYG5pbFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBfKSAtPlxuICAgICAgbGV0IHJlYyBsb29wIGV4cCBhY2MgPVxuICAgICAgICBtYXRjaCBleHAgd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXyk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgKExpc3QucmV2IGFjYywgdHJ1ZSlcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgICBTb21lIHsgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGUxOyBlMiBdOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgICAgKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBsb29wIGUyIChlMSA6OiBhY2MpXG4gICAgICAgIHwgZSAtPiAoTGlzdC5yZXYgKGUgOjogYWNjKSwgZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGxzLCBiID0gbG9vcCB4IFtdIGluXG4gICAgICBpZiBiIHRoZW4gYGxpc3QgbHMgZWxzZSBgY29ucyBsc1xuICB8IFBleHBfY29uc3RydWN0ICh4LCBOb25lKSAtPiBgc2ltcGxlIHgudHh0XG4gIHwgXyAtPiBgbm9ybWFsXG5cbmxldCBpc19zaW1wbGVfY29uc3RydWN0IDogY29uc3RydWN0IC0+IGJvb2wgPSBmdW5jdGlvblxuICB8IGBuaWwgfCBgdHVwbGUgfCBgbGlzdCBfIHwgYHNpbXBsZSBfIC0+IHRydWVcbiAgfCBgY29ucyBfIHwgYG5vcm1hbCAtPiBmYWxzZVxuXG5sZXQgcHAgPSBmcHJpbnRmXG5cbnR5cGUgY3R4dCA9IHsgcGlwZSA6IGJvb2w7IHNlbWkgOiBib29sOyBpZnRoZW5lbHNlIDogYm9vbCB9XG5cbmxldCByZXNldF9jdHh0ID0geyBwaXBlID0gZmFsc2U7IHNlbWkgPSBmYWxzZTsgaWZ0aGVuZWxzZSA9IGZhbHNlIH1cbmxldCB1bmRlcl9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlID0gdHJ1ZSB9XG5sZXQgdW5kZXJfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaSA9IHRydWUgfVxubGV0IHVuZGVyX2lmdGhlbmVsc2UgY3R4dCA9IHsgY3R4dCB3aXRoIGlmdGhlbmVsc2UgPSB0cnVlIH1cbigqXG5sZXQgcmVzZXRfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaT1mYWxzZSB9XG5sZXQgcmVzZXRfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZT1mYWxzZSB9XG5sZXQgcmVzZXRfcGlwZSBjdHh0ID0geyBjdHh0IHdpdGggcGlwZT1mYWxzZSB9XG4qKVxuXG5sZXQgbGlzdCA6XG4gICAgICAnYS5cbiAgICAgID9zZXA6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBsaXN0IC0+XG4gICAgICB1bml0ID1cbiBmdW4gP3NlcCA/Zmlyc3QgP2xhc3QgZnUgZiB4cyAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgc2VwID0gbWF0Y2ggc2VwIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIkAgXCIgOiBfIGZvcm1hdDYpIGluXG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgWyB4IF0gLT4gZnUgZiB4XG4gICAgfCB4cyAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICAgICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICAgICAgZnUgZiB4O1xuICAgICAgICAgICAgICBwcCBmIHNlcDtcbiAgICAgICAgICAgICAgbG9vcCBmIHhzXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIGZpcnN0O1xuICAgICAgICBsb29wIGYgeHM7XG4gICAgICAgIHBwIGYgbGFzdFxuICBpblxuICBhdXggZiB4c1xuXG5sZXQgb3B0aW9uIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2Egb3B0aW9uIC0+XG4gICAgICB1bml0ID1cbiBmdW4gP2ZpcnN0ID9sYXN0IGZ1IGYgYSAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KSBpblxuICBtYXRjaCBhIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBwcCBmIGZpcnN0O1xuICAgICAgZnUgZiB4O1xuICAgICAgcHAgZiBsYXN0XG5cbmxldCBwYXJlbiA6XG4gICAgICAnYS5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgYm9vbCAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIC0+XG4gICAgICB1bml0ID1cbiBmdW4gPyhmaXJzdCA9IChcIlwiIDogXyBmb3JtYXQ2KSkgPyhsYXN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSBiIGZ1IGYgeCAtPlxuICBpZiBiIHRoZW4gKFxuICAgIHBwIGYgXCIoXCI7XG4gICAgcHAgZiBmaXJzdDtcbiAgICBmdSBmIHg7XG4gICAgcHAgZiBsYXN0O1xuICAgIHBwIGYgXCIpXCIpXG4gIGVsc2UgZnUgZiB4XG5cbmxldCByZWMgbG9uZ2lkZW50IGYgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHByb3RlY3RfaWRlbnQgZiBzXG4gIHwgTGRvdCAoeSwgcykgLT4gcHJvdGVjdF9sb25naWRlbnQgZiBsb25naWRlbnQgeSBzXG4gIHwgTGFwcGx5ICh5LCBzKSAtPiBwcCBmIFwiJWEoJWEpXCIgbG9uZ2lkZW50IHkgbG9uZ2lkZW50IHNcblxubGV0IGxvbmdpZGVudF9sb2MgZiB4ID0gcHAgZiBcIiVhXCIgbG9uZ2lkZW50IHgudHh0XG5cbmxldCBjb25zdGFudCBmID0gZnVuY3Rpb25cbiAgfCBQY29uc3RfY2hhciBpIC0+IHBwIGYgXCIlQ1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBOb25lKSAtPiBwcCBmIFwiJVNcIiBpXG4gIHwgUGNvbnN0X3N0cmluZyAoaSwgXywgU29tZSBkZWxpbSkgLT4gcHAgZiBcInslc3wlc3wlc31cIiBkZWxpbSBpIGRlbGltXG4gIHwgUGNvbnN0X2ludGVnZXIgKGksIE5vbmUpIC0+IHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIC0+IHBwIGYgXCIlc1wiKSBmIGlcbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuICB8IFBjb25zdF9mbG9hdCAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9mbG9hdCAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuXG4oKiB0cmFpbGluZyBzcGFjZSopXG5sZXQgbXV0YWJsZV9mbGFnIGYgPSBmdW5jdGlvbiBJbW11dGFibGUgLT4gKCkgfCBNdXRhYmxlIC0+IHBwIGYgXCJtdXRhYmxlQDtcIlxubGV0IHZpcnR1YWxfZmxhZyBmID0gZnVuY3Rpb24gQ29uY3JldGUgLT4gKCkgfCBWaXJ0dWFsIC0+IHBwIGYgXCJ2aXJ0dWFsQDtcIlxuXG4oKiB0cmFpbGluZyBzcGFjZSBhZGRlZCAqKVxubGV0IHJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiAoKSB8IFJlY3Vyc2l2ZSAtPiBwcCBmIFwicmVjIFwiXG5cbmxldCBub25yZWNfZmxhZyBmIHJmID1cbiAgbWF0Y2ggcmYgd2l0aCBOb25yZWN1cnNpdmUgLT4gcHAgZiBcIm5vbnJlYyBcIiB8IFJlY3Vyc2l2ZSAtPiAoKVxuXG5sZXQgZGlyZWN0aW9uX2ZsYWcgZiA9IGZ1bmN0aW9uXG4gIHwgVXB0byAtPiBwcCBmIFwidG9AIFwiXG4gIHwgRG93bnRvIC0+IHBwIGYgXCJkb3dudG9AIFwiXG5cbmxldCBwcml2YXRlX2ZsYWcgZiA9IGZ1bmN0aW9uIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcInByaXZhdGVAIFwiXG5sZXQgaXRlcl9sb2MgZiBjdHh0IHsgdHh0OyBsb2MgPSBfIH0gPSBmIGN0eHQgdHh0XG5sZXQgY29uc3RhbnRfc3RyaW5nIGYgcyA9IHBwIGYgXCIlU1wiIHNcblxubGV0IHR5dmFyIHBwZiBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgcy5bMV0gPSAnXFwnJyB0aGVuXG4gICAgKCogd2l0aG91dCB0aGUgc3BhY2UsIHRoaXMgd291bGQgYmUgcGFyc2VkIGFzXG4gICAgICAgYSBjaGFyYWN0ZXIgbGl0ZXJhbCAqKVxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIicgJXNcIiBzXG4gIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJyVzXCIgc1xuXG5sZXQgdHl2YXJfbG9jIGYgc3RyID0gdHl2YXIgZiBzdHIudHh0XG5sZXQgc3RyaW5nX3F1b3QgZiB4ID0gcHAgZiBcImAlc1wiIHhcblxuKCogYyBbJ2EsJ2JdICopXG5sZXQgcmVjIGNsYXNzX3BhcmFtc19kZWYgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGwgLT4gcHAgZiBcIlslYV0gXCIgKCogc3BhY2UgKikgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfnNlcDpcIixcIikgbFxuXG5hbmQgdHlwZV93aXRoX2xhYmVsIGN0eHQgZiAobGFiZWwsIGMpID1cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IE5vbGFiZWwgLT4gY29yZV90eXBlMSBjdHh0IGYgYyAoKiBvdGhlcndpc2UgcGFyZW50aGVzaXplICopXG4gIHwgTGFiZWxsZWQgcyAtPiBwcCBmIFwiJXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcbiAgfCBPcHRpb25hbCBzIC0+IHBwIGYgXCI/JXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcblxuYW5kIGNvcmVfdHlwZSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAoY29yZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hcnJvdyAobCwgY3QxLCBjdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjdDEpIChjb3JlX3R5cGUgY3R4dCkgY3QyXG4gICAgfCBQdHlwX2FsaWFzIChjdCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgY3QgdHl2YXIgc1xuICAgIHwgUHR5cF9wb2x5IChbXSwgY3QpIC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICB8IFB0eXBfcG9seSAoc2wsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBwcCBmIFwiJWFcIlxuICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIGwpXG4gICAgICAgICAgICAgIGwpXG4gICAgICAgICAgc2wgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuXG5hbmQgY29yZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gY29yZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQdHlwX3ZhciBzIC0+IHR5dmFyIGYgc1xuICAgIHwgUHR5cF90dXBsZSBsIC0+IHBwIGYgXCIoJWEpXCIgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpIGxcbiAgICB8IFB0eXBfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiAoKiBcIiVhJWFAO1wiICopIFwiJWElYVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgfCBbIHggXSAtPiBwcCBmIFwiJWFAO1wiIChjb3JlX3R5cGUxIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPiBsaXN0IH5maXJzdDpcIihcIiB+bGFzdDpcIilAO1wiIChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixAO1wiIGYgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfdmFyaWFudCAobCwgY2xvc2VkLCBsb3cpIC0+XG4gICAgICAgIGxldCBmaXJzdF9pc19pbmhlcml0ID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IHsgUGFyc2V0cmVlLnByZl9kZXNjID0gUmluaGVyaXQgXyB9IDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwZV92YXJpYW50X2hlbHBlciBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUnRhZyAobCwgXywgY3RsKSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQDslYUBdXCIgKGl0ZXJfbG9jIHN0cmluZ19xdW90KSBsXG4gICAgICAgICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIiZcIikgY3RsKVxuICAgICAgICAgICAgICAgIGN0bCAoYXR0cmlidXRlcyBjdHh0KSB4LnByZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBSaW5oZXJpdCBjdCAtPiBjb3JlX3R5cGUgY3R4dCBmIGN0XG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPlslYSVhXUBdXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggKGwsIGNsb3NlZCkgd2l0aFxuICAgICAgICAgICAgfCBbXSwgQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgICB8IFtdLCBPcGVuIC0+IHBwIGYgXCI+XCIgKCogQ2YgIzcyMDA6IHByaW50IFs+XSBjb3JyZWN0bHkgKilcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIlc0A7JWFcIlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIChjbG9zZWQsIGxvdykgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIE5vbmUgLT4gaWYgZmlyc3RfaXNfaW5oZXJpdCB0aGVuIFwiIHxcIiBlbHNlIFwiXCJcbiAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkLCBTb21lIF8gLT4gXCI8XCIgKCogRklYTUUgZGVzdWdhciB0aGUgc3ludGF4IHN1Z2FyKilcbiAgICAgICAgICAgICAgICAgIHwgT3BlbiwgXyAtPiBcIj5cIilcbiAgICAgICAgICAgICAgICAgIChsaXN0IHR5cGVfdmFyaWFudF9oZWxwZXIgfnNlcDpcIkA7PDEgLTI+fCBcIilcbiAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgbFxuICAgICAgICAgIChmdW4gZiBsb3cgLT5cbiAgICAgICAgICAgIG1hdGNoIGxvdyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgW10gfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgeHMgLT4gcHAgZiBcIj5AICVhXCIgKGxpc3Qgc3RyaW5nX3F1b3QpIHhzKVxuICAgICAgICAgIGxvd1xuICAgIHwgUHR5cF9vYmplY3QgKGwsIG8pIC0+XG4gICAgICAgIGxldCBjb3JlX2ZpZWxkX3R5cGUgZiB4ID1cbiAgICAgICAgICBtYXRjaCB4LnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICB8IE90YWcgKGwsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lczogJWFAICVhQCBAXVwiIGwudHh0IChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAgICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBvZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBPaW5oZXJpdCBjdCAtPiBwcCBmIFwiQFs8aG92Mj4lYUAgQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBmaWVsZF92YXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBBc3R0eXBlcy5DbG9zZWQgLT4gKClcbiAgICAgICAgICB8IEFzdHR5cGVzLk9wZW4gLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gcHAgZiBcIi4uXCIgfCBfIC0+IHBwIGYgXCIgOy4uXCIpXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPjxAICVhJWFAID4gQF1cIlxuICAgICAgICAgIChsaXN0IGNvcmVfZmllbGRfdHlwZSB+c2VwOlwiO1wiKVxuICAgICAgICAgIGwgZmllbGRfdmFyIG9cbiAgICAgICAgKCogQ2YgIzcyMDAgKilcbiAgICB8IFB0eXBfY2xhc3MgKGxpLCBsKSAtPlxuICAgICAgICAoKkZJWE1FKilcbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEjJWFAXVwiXG4gICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfcGFja2FnZSAobGlkLCBjc3RycykgLT4gKFxuICAgICAgICBsZXQgYXV4IGYgKHMsIGN0KSA9XG4gICAgICAgICAgcHAgZiBcInR5cGUgJWFAID1AICVhXCIgbG9uZ2lkZW50X2xvYyBzIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY3N0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhKUBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4obW9kdWxlQCAlYUAgd2l0aEAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgICAgICAobGlzdCBhdXggfnNlcDpcIkAgYW5kQCBcIikgY3N0cnMpXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChjb3JlX3R5cGUgY3R4dCkgZiB4XG5cbigqKioqKioqKioqKioqKioqKioqKnBhdHRlcm4qKioqKioqKioqKioqKioqKioqKilcbigqIGJlIGNhdXRpb3VzIHdoZW4gdXNlIFtwYXR0ZXJuXSwgW3BhdHRlcm4xXSBpcyBwcmVmZXJyZWQgKilcbmFuZCBwYXR0ZXJuIGN0eHQgZiB4ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChwYXR0ZXJuIGN0eHQpXG4gICAgICB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBwYXRfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9hbGlhcyAocCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcCBwcm90ZWN0X2lkZW50IHMudHh0XG4gICAgfCBfIC0+IHBhdHRlcm5fb3IgY3R4dCBmIHhcblxuYW5kIHBhdHRlcm5fb3IgY3R4dCBmIHggPVxuICBsZXQgcmVjIGxlZnRfYXNzb2NpYXRpdmUgeCBhY2MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X29yIChwMSwgcDIpOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIGxlZnRfYXNzb2NpYXRpdmUgcDEgKHAyIDo6IGFjYylcbiAgICB8IHggLT4geCA6OiBhY2NcbiAgaW5cbiAgbWF0Y2ggbGVmdF9hc3NvY2lhdGl2ZSB4IFtdIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBbIHggXSAtPiBwYXR0ZXJuMSBjdHh0IGYgeFxuICB8IG9ycGF0cyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgfnNlcDpcIkAgfCBcIiAocGF0dGVybjEgY3R4dCkpIG9ycGF0c1xuXG5hbmQgcGF0dGVybjEgY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgbGV0IHJlYyBwYXR0ZXJuX2xpc3RfaGVscGVyIGYgPSBmdW5jdGlvblxuICAgIHwge1xuICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgIFBwYXRfY29uc3RydWN0XG4gICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LFxuICAgICAgICAgICAgICBTb21lIChbXSwgeyBwcGF0X2Rlc2MgPSBQcGF0X3R1cGxlIFsgcGF0MTsgcGF0MiBdOyBfIH0pICk7XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWE6OiVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdDEgcGF0dGVybl9saXN0X2hlbHBlciBwYXQyICgqUkEqKVxuICAgIHwgcCAtPiBwYXR0ZXJuMSBjdHh0IGYgcFxuICBpblxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBhdHRlcm4gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgU29tZSBwKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgXykgLT5cbiAgICAgICAgc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcbiAgICB8IFBwYXRfY29uc3RydWN0ICgoeyB0eHQ7IF8gfSBhcyBsaSksIHBvKSAtPiAoXG4gICAgICAgIGlmICgqIEZJWE1FIFRoZSB0aGlyZCBmaWVsZCBhbHdheXMgZmFsc2UgKilcbiAgICAgICAgICAgdHh0ID0gTGlkZW50IFwiOjpcIiB0aGVuIHBwIGYgXCIlYVwiIHBhdHRlcm5fbGlzdF9oZWxwZXIgeFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggcG8gd2l0aFxuICAgICAgICAgIHwgU29tZSAoW10sIHgpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7JWFcIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfcGF0dGVybiBjdHh0KSB4XG4gICAgICAgICAgfCBTb21lICh2bCwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQCAodHlwZSAlYSlAOyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgICAgICAgIChsaXN0IH5zZXA6XCJAIFwiIHN0cmluZ19sb2MpXG4gICAgICAgICAgICAgICAgdmwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaSlcbiAgICB8IF8gLT4gc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcblxuYW5kIHNpbXBsZV9wYXR0ZXJuIGN0eHQgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKSAoeCA6IHBhdHRlcm4pIDogdW5pdCA9XG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50ICgoXCIoKVwiIHwgXCJbXVwiKSBhcyB4KTsgXyB9LCBOb25lKSAtPlxuICAgICAgICBwcCBmIFwiJXNcIiB4XG4gICAgfCBQcGF0X2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHByb3RlY3RfaWRlbnQgZiB0eHRcbiAgICB8IFBwYXRfYXJyYXkgbCAtPiBwcCBmIFwiQFs8Mj5bfCVhfF1AXVwiIChsaXN0IChwYXR0ZXJuMSBjdHh0KSB+c2VwOlwiO1wiKSBsXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IE5vbmUgfSAtPiBwcCBmIFwiKG1vZHVsZUAgXylAIFwiXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IFNvbWUgcyB9IC0+IHBwIGYgXCIobW9kdWxlQCAlcylAIFwiIHNcbiAgICB8IFBwYXRfdHlwZSBsaSAtPiBwcCBmIFwiIyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHBhdF9yZWNvcmQgKGwsIGNsb3NlZCkgLT4gKFxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfcGF0dGVybiBmIChsaSwgcCkgPVxuICAgICAgICAgIG1hdGNoIChsaSwgcCkgd2l0aFxuICAgICAgICAgIHwgKCB7IHR4dCA9IExpZGVudCBzOyBfIH0sXG4gICAgICAgICAgICAgIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW107IF8gfSApXG4gICAgICAgICAgICB3aGVuIHMgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNsb3NlZCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8Mj57QDslYUA7fUBdXCIgKGxpc3QgbG9uZ2lkZW50X3hfcGF0dGVybiB+c2VwOlwiO0A7XCIpIGxcbiAgICAgICAgfCBfIC0+IHBwIGYgXCJAWzwyPntAOyVhO199QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbClcbiAgICB8IFBwYXRfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MT4oJWEpQF1cIiAobGlzdCB+c2VwOlwiLEA7XCIgKHBhdHRlcm4xIGN0eHQpKSBsICgqIGxldmVsMSopXG4gICAgfCBQcGF0X2NvbnN0YW50IGMgLT4gcHAgZiBcIiVhXCIgY29uc3RhbnQgY1xuICAgIHwgUHBhdF9pbnRlcnZhbCAoYzEsIGMyKSAtPiBwcCBmIFwiJWEuLiVhXCIgY29uc3RhbnQgYzEgY29uc3RhbnQgYzJcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgTm9uZSkgLT4gcHAgZiBcImAlc1wiIGxcbiAgICB8IFBwYXRfY29uc3RyYWludCAocCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiglYUA7OkA7JWEpQF1cIiAocGF0dGVybjEgY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQcGF0X2xhenkgcCAtPiBwcCBmIFwiQFs8Mj4obGF6eUA7JWEpQF1cIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgIHwgUHBhdF9leGNlcHRpb24gcCAtPiBwcCBmIFwiQFs8Mj5leGNlcHRpb25AOyVhQF1cIiAocGF0dGVybjEgY3R4dCkgcFxuICAgIHwgUHBhdF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBwYXRfb3BlbiAobGlkLCBwKSAtPlxuICAgICAgICBsZXQgd2l0aF9wYXJlbiA9XG4gICAgICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHBhdF9hcnJheSBfIHwgUHBhdF9yZWNvcmQgX1xuICAgICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IChcIigpXCIgfCBcIltdXCIpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWEuJWEgQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgIChwYXJlbiB3aXRoX3BhcmVuIEBAIHBhdHRlcm4xIGN0eHQpXG4gICAgICAgICAgcFxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChwYXR0ZXJuIGN0eHQpIGYgeFxuXG5hbmQgbGFiZWxfZXhwIGN0eHQgZiAobCwgb3B0LCBwKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT5cbiAgICAgICgqIHNpbmdsZSBjYXNlIHBhdHRlcm4gcGFyZW5zIG5lZWRlZCBoZXJlICopXG4gICAgICBwcCBmIFwiJWFAIFwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gIHwgT3B0aW9uYWwgcmVzdCAtPiAoXG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgIHdoZW4gdHh0ID0gcmVzdCAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPiBwcCBmIFwiPyglcz1AOyVhKUA7XCIgcmVzdCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXNAIFwiIHJlc3QpXG4gICAgICB8IF8gLT4gKFxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIj8lczooJWE9QDslYSlAO1wiIHJlc3QgKHBhdHRlcm4xIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgb1xuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiPyVzOiVhQDtcIiByZXN0IChzaW1wbGVfcGF0dGVybiBjdHh0KSBwKSlcbiAgfCBMYWJlbGxlZCBsIC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gd2hlbiB0eHQgPSBsXG4gICAgICAgIC0+XG4gICAgICAgICAgcHAgZiBcIn4lc0A7XCIgbFxuICAgICAgfCBfIC0+IHBwIGYgXCJ+JXM6JWFAO1wiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApXG5cbmFuZCBzdWdhcl9leHByIGN0eHQgZiBlID1cbiAgaWYgZS5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBmYWxzZVxuICBlbHNlXG4gICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9hcHBseVxuICAgICAgICAoIHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGlkOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICAgICAgYXJncyApXG4gICAgICB3aGVuIExpc3QuZm9yX2FsbCAoZnVuIChsYWIsIF8pIC0+IGxhYiA9IE5vbGFiZWwpIGFyZ3MgLT4gKFxuICAgICAgICBsZXQgcHJpbnRfaW5kZXhvcCBhIHBhdGhfcHJlZml4IGFzc2lnbiBsZWZ0IHNlcCByaWdodCBwcmludF9pbmRleFxuICAgICAgICAgICAgaW5kaWNlcyByZW1fYXJncyA9XG4gICAgICAgICAgbGV0IHByaW50X3BhdGggcHBmID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIG0gLT4gcHAgcHBmIFwiLiVhXCIgbG9uZ2lkZW50IG1cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIChhc3NpZ24sIHJlbV9hcmdzKSB3aXRoXG4gICAgICAgICAgfCBmYWxzZSwgW10gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0BdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aCBwYXRoX3ByZWZpeFxuICAgICAgICAgICAgICAgIGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodDtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgdHJ1ZSwgWyB2IF0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0AgPC1AOzwxIDI+JWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBhIHByaW50X3BhdGhcbiAgICAgICAgICAgICAgICBwYXRoX3ByZWZpeCBsZWZ0IChsaXN0IH5zZXAgcHJpbnRfaW5kZXgpIGluZGljZXMgcmlnaHRcbiAgICAgICAgICAgICAgICAoc2ltcGxlX2V4cHIgY3R4dCkgdjtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCAoaWQsIExpc3QubWFwIHNuZCBhcmdzKSB3aXRoXG4gICAgICAgIHwgTGlkZW50IFwiIVwiLCBbIGUgXSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdj4hJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlO1xuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICB8IExkb3QgKHBhdGgsICgoXCJnZXRcIiB8IFwic2V0XCIpIGFzIGZ1bmMpKSwgYSA6OiBvdGhlcl9hcmdzIC0+IChcbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBmdW5jID0gXCJzZXRcIiBpblxuICAgICAgICAgICAgbGV0IHByaW50ID0gcHJpbnRfaW5kZXhvcCBhIE5vbmUgYXNzaWduIGluXG4gICAgICAgICAgICBtYXRjaCAocGF0aCwgb3RoZXJfYXJncykgd2l0aFxuICAgICAgICAgICAgfCBMaWRlbnQgXCJBcnJheVwiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi4oXCIgXCJcIiBcIilcIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExpZGVudCBcIlN0cmluZ1wiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi5bXCIgXCJcIiBcIl1cIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkxXCIpLCBpMSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5MlwiKSwgaTEgOjogaTIgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMTsgaTIgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkzXCIpLCBpMSA6OiBpMiA6OiBpMyA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMjsgaTMgXSByZXN0XG4gICAgICAgICAgICB8ICggTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJHZW5hcnJheVwiKSxcbiAgICAgICAgICAgICAgICB7IHBleHBfZGVzYyA9IFBleHBfYXJyYXkgaW5kZXhlczsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSA6OiByZXN0XG4gICAgICAgICAgICAgICkgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIGluZGV4ZXMgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICB8IChMaWRlbnQgcyB8IExkb3QgKF8sIHMpKSwgYSA6OiBpIDo6IHJlc3Qgd2hlbiBmaXJzdF9pcyAnLicgcyAtPlxuICAgICAgICAgICAgKCogZXh0cmFjdCBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgb3BlcmF0b3JzIGVuZCB3aXRoIFtyaWdodF9icmFja2V0IF4gXCI8LVwiXSxcbiAgICAgICAgICAgICAgIGFjY2VzcyBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXRdIGRpcmVjdGx5XG4gICAgICAgICAgICAqKVxuICAgICAgICAgICAgbGV0IG11bHRpX2luZGljZXMgPSBTdHJpbmcuY29udGFpbnMgcyAnOycgaW5cbiAgICAgICAgICAgIGxldCBpID1cbiAgICAgICAgICAgICAgbWF0Y2ggaS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgbCB3aGVuIG11bHRpX2luZGljZXMgLT4gbFxuICAgICAgICAgICAgICB8IF8gLT4gWyBpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYXNzaWduID0gbGFzdF9pcyAnLScgcyBpblxuICAgICAgICAgICAgbGV0IGtpbmQgPVxuICAgICAgICAgICAgICAoKiBleHRyYWN0IHRoZSByaWdodCBlbmQgYnJhY2tldCAqKVxuICAgICAgICAgICAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBpZiBhc3NpZ24gdGhlbiBzLltuIC0gM10gZWxzZSBzLltuIC0gMV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCwgcmlnaHQgPVxuICAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICAgfCAnKScgLT4gKCcoJywgXCIpXCIpXG4gICAgICAgICAgICAgIHwgJ10nIC0+ICgnWycsIFwiXVwiKVxuICAgICAgICAgICAgICB8ICd9JyAtPiAoJ3snLCBcIn1cIilcbiAgICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwYXRoX3ByZWZpeCA9XG4gICAgICAgICAgICAgIG1hdGNoIGlkIHdpdGggTGRvdCAobSwgXykgLT4gU29tZSBtIHwgXyAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxlZnQgPSBTdHJpbmcuc3ViIHMgMCAoMSArIFN0cmluZy5pbmRleCBzIGxlZnQpIGluXG4gICAgICAgICAgICBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgXCI7XCIgcmlnaHRcbiAgICAgICAgICAgICAgKGlmIG11bHRpX2luZGljZXMgdGhlbiBleHByZXNzaW9uIGN0eHQgZWxzZSBzaW1wbGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICBpIHJlc3RcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5hbmQgZXhwcmVzc2lvbiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSlALCVhKVwiIChleHByZXNzaW9uIGN0eHQpXG4gICAgICB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBleHBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9mdW5jdGlvbiBfIHwgUGV4cF9mdW4gXyB8IFBleHBfbWF0Y2ggXyB8IFBleHBfdHJ5IF8gfCBQZXhwX3NlcXVlbmNlIF9cbiAgICB8IFBleHBfbmV3dHlwZSBfXG4gICAgICB3aGVuIGN0eHQucGlwZSB8fCBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IChQZXhwX2lmdGhlbmVsc2UgXyB8IFBleHBfc2VxdWVuY2UgXykgd2hlbiBjdHh0LmlmdGhlbmVsc2UgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfbGV0IF8gfCBQZXhwX2xldG1vZHVsZSBfIHwgUGV4cF9vcGVuIF8gfCBQZXhwX2xldGV4Y2VwdGlvbiBfXG4gICAgfCBQZXhwX2xldG9wIF9cbiAgICAgIHdoZW4gY3R4dC5zZW1pIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCBQZXhwX2Z1biAobCwgZTAsIHAsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7JWEtPkA7JWFAXVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGUwLCBwKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbmV3dHlwZSAobGlkLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5mdW5AOyh0eXBlQDslcylAOy0+QDslYUBdXCIgbGlkLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Z1bmN0aW9uIGwgLT4gcHAgZiBcIkBbPGh2PmZ1bmN0aW9uJWFAXVwiIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9tYXRjaCAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjA+QFs8Mj5tYXRjaCAlYUBdQCB3aXRoQF0lYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF90cnkgKGUsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwwPkBbPGh2Mj50cnlAICVhQF1AIEBbPDA+d2l0aCVhQF1AXVwiXG4gICAgICAgICAgKCogXCJ0cnlAO0BbPDI+JWFAXUBcXG53aXRoQFxcbiVhXCIqKVxuICAgICAgICAgIChleHByZXNzaW9uIHJlc2V0X2N0eHQpXG4gICAgICAgICAgZSAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfbGV0IChyZiwgbCwgZSkgLT5cbiAgICAgICAgKCogcHAgZiBcIkBbPDI+bGV0ICVhJWEgaW5AOzwxIC0yPiVhQF1cIlxuICAgICAgICAgICAoKm5vIGluZGVudGF0aW9uIGhlcmUsIGEgbmV3IGxpbmUqKSAqKVxuICAgICAgICAoKiAgIHJlY19mbGFnIHJmICopXG4gICAgICAgIHBwIGYgXCJAWzwyPiVhIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdzIHJlc2V0X2N0eHQpIChyZiwgbClcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2FwcGx5IChlLCBsKSAtPiAoXG4gICAgICAgIGlmIG5vdCAoc3VnYXJfZXhwciBjdHh0IGYgeCkgdGhlblxuICAgICAgICAgIG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCBlIHdpdGhcbiAgICAgICAgICB8IGBJbmZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoKE5vbGFiZWwsIF8pIGFzIGFyZzEpOyAoKE5vbGFiZWwsIF8pIGFzIGFyZzIpIF0gLT5cbiAgICAgICAgICAgICAgICAgICgqIEZJWE1FIGFzc29jaWF0aXZpdHkgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtICopXG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7JXNAOyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIHJlc2V0X2N0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzEgc1xuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzJcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IGBQcmVmaXggcyAtPiAoXG4gICAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTGlzdC5tZW0gcyBbIFwifitcIjsgXCJ+LVwiOyBcIn4rLlwiOyBcIn4tLlwiIF1cbiAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICAgICgqIFNlZSAjNzIwMDogYXZvaWQgdHVybmluZyAofi0gMSkgaW50byAoLSAxKSB3aGljaCBpc1xuICAgICAgICAgICAgICAgICAgICAgcGFyc2VkIGFzIGFuIGludCBsaXRlcmFsICopXG4gICAgICAgICAgICAgICAgICB8IFsgKF8sIHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdGFudCBfIH0pIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICAgICAgICAgICAgICBlbHNlIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoTm9sYWJlbCwgeCkgXSAtPiBwcCBmIFwiQFs8Mj4lc0A7JWFAXVwiIHMgKHNpbXBsZV9leHByIGN0eHQpIHhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiXG4gICAgICAgICAgICAgICAgKGZ1biBmIChlLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChleHByZXNzaW9uMiBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICgqIHJlc2V0IGhlcmUgb25seSBiZWNhdXNlIFtmdW5jdGlvbixtYXRjaCx0cnksc2VxdWVuY2VdXG4gICAgICAgICAgICAgICAgICAgICBhcmUgbG93ZXIgcHJpb3JpdHkgKikpXG4gICAgICAgICAgICAgICAgKGUsIGwpKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGxpLCBTb21lIGVvKSB3aGVuIG5vdCAoaXNfc2ltcGxlX2NvbnN0cnVjdCAodmlld19leHByIHgpKVxuICAgICAgLT4gKFxuICAgICAgICAoKiBOb3QgZWZmaWNpZW50IEZJWE1FKilcbiAgICAgICAgbWF0Y2ggdmlld19leHByIHggd2l0aFxuICAgICAgICB8IGBjb25zIGxzIC0+IGxpc3QgKHNpbXBsZV9leHByIGN0eHQpIGYgbHMgfnNlcDpcIkA7OjpAO1wiXG4gICAgICAgIHwgYG5vcm1hbCAtPiBwcCBmIFwiQFs8Mj4lYUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBQZXhwX3NldGZpZWxkIChlMSwgbGksIGUyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYUAgPC1AICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZTEgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSBlMlxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIChlMSwgZTIsIGVvKSAtPlxuICAgICAgICAoKiBAO0BbPDI+ZWxzZUAgJWFAXUBdICopXG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICAgICAgICBcIkBbPGh2MD5AWzwyPmlmQCAlYUBdQDtAWzwyPnRoZW5AICVhQF0lYUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSA9IGV4cHJlc3Npb24gKHVuZGVyX2lmdGhlbmVsc2UgY3R4dCkgaW5cbiAgICAgICAgcHAgZiBmbXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUxIGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSBlMlxuICAgICAgICAgIChmdW4gZiBlbyAtPlxuICAgICAgICAgICAgbWF0Y2ggZW8gd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiQDtAWzwyPmVsc2VAOyVhQF1cIiAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgeFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAoKiBwcCBmIFwiKClcIiAqKSlcbiAgICAgICAgICBlb1xuICAgIHwgUGV4cF9zZXF1ZW5jZSBfIC0+XG4gICAgICAgIGxldCByZWMgc2VxdWVuY2VfaGVscGVyIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfc2VxdWVuY2UgKGUxLCBlMik7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgc2VxdWVuY2VfaGVscGVyIChlMSA6OiBhY2MpIGUyXG4gICAgICAgICAgfCB2IC0+IExpc3QucmV2ICh2IDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxzdCA9IHNlcXVlbmNlX2hlbHBlciBbXSB4IGluXG4gICAgICAgIHBwIGYgXCJAWzxodj4lYUBdXCIgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIikgbHN0XG4gICAgfCBQZXhwX25ldyBsaSAtPiBwcCBmIFwiQFs8aG92Mj5uZXdAICVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NldGluc3R2YXIgKHMsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVzQCA8LUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfb3ZlcnJpZGUgbCAtPlxuICAgICAgICAoKiBGSVhNRSAqKVxuICAgICAgICBsZXQgc3RyaW5nX3hfZXhwcmVzc2lvbiBmIChzLCBlKSA9XG4gICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAID1AICVhQF1cIiBzLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPns8JWE+fUBdXCIgKGxpc3Qgc3RyaW5nX3hfZXhwcmVzc2lvbiB+c2VwOlwiO1wiKSBsXG4gICAgfCBQZXhwX2xldG1vZHVsZSAocywgbWUsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgbW9kdWxlQCAlc0AgPUAgJWFAIGluQCAlYUBdXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfZXhwciByZXNldF9jdHh0KSBtZSAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoY2QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgZXhjZXB0aW9uQCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICAgICAgICBjZCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Fzc2VydCBlIC0+IHBwIGYgXCJAWzxob3YyPmFzc2VydEAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX2xhenkgZSAtPiBwcCBmIFwiQFs8aG92Mj5sYXp5QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAoKiBQZXhwX3BvbHk6IGltcG9zc2libGUgYnV0IHdlIHNob3VsZCBwcmludCBpdCBhbnl3YXksIHJhdGhlciB0aGFuXG4gICAgICAgYXNzZXJ0IGZhbHNlICopXG4gICAgfCBQZXhwX3BvbHkgKGUsIE5vbmUpIC0+IHBwIGYgXCJAWzxob3YyPiFwb2x5IUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPighcG9seSFAICVhQCA6ICVhKUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvLnBvcGVuX2V4cHIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF92YXJpYW50IChsLCBTb21lIGVvKSAtPiBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfZXhwciBjdHh0KSBlb1xuICAgIHwgUGV4cF9sZXRvcCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5AWzx2PiVhQCwlYUBdIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdfb3AgY3R4dCkgbGV0X1xuICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChiaW5kaW5nX29wIGN0eHQpKVxuICAgICAgICAgIGFuZHMgKGV4cHJlc3Npb24gY3R4dCkgYm9keVxuICAgIHwgUGV4cF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gcHAgZiBcIi5cIlxuICAgIHwgXyAtPiBleHByZXNzaW9uMSBjdHh0IGYgeFxuXG5hbmQgZXhwcmVzc2lvbjEgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfb2JqZWN0IGNzIC0+IHBwIGYgXCIlYVwiIChjbGFzc19zdHJ1Y3R1cmUgY3R4dCkgY3NcbiAgICB8IF8gLT4gZXhwcmVzc2lvbjIgY3R4dCBmIHhcbigqIHVzZWQgaW4gW1BleHBfYXBwbHldICopXG5cbmFuZCBleHByZXNzaW9uMiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9maWVsZCAoZSwgbGkpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhLiVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NlbmQgKGUsIHMpIC0+IHBwIGYgXCJAWzxob3YyPiVhIyVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBzLnR4dFxuICAgIHwgXyAtPiBzaW1wbGVfZXhwciBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfY29uc3RydWN0IF8gd2hlbiBpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkgLT4gKFxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYG5pbCAtPiBwcCBmIFwiW11cIlxuICAgICAgICB8IGB0dXBsZSAtPiBwcCBmIFwiKClcIlxuICAgICAgICB8IGBsaXN0IHhzIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aHYwPlslYV1AXVwiXG4gICAgICAgICAgICAgIChsaXN0IChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO0A7XCIpXG4gICAgICAgICAgICAgIHhzXG4gICAgICAgIHwgYHNpbXBsZSB4IC0+IGxvbmdpZGVudCBmIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfaWRlbnQgbGkgLT4gbG9uZ2lkZW50X2xvYyBmIGxpXG4gICAgKCogKG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCB4IHdpdGggKilcbiAgICAoKiB8YE5vcm1hbCAtPiBsb25naWRlbnRfbG9jIGYgbGkgKilcbiAgICAoKiB8IGBQcmVmaXggXyB8IGBJbmZpeCBfIC0+IHBwIGYgXCIoICVhIClcIiBsb25naWRlbnRfbG9jIGxpKSAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBjIC0+IGNvbnN0YW50IGYgY1xuICAgIHwgUGV4cF9wYWNrIG1lIC0+IHBwIGYgXCIobW9kdWxlQDslYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBleHBfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWEpQF1cIiAobGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgfnNlcDpcIixAO1wiKSBsXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhIDogJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX2NvZXJjZSAoZSwgY3RvMSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWElYSA6PiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgICAgKG9wdGlvbiAoY29yZV90eXBlIGN0eHQpIH5maXJzdDpcIiA6IFwiIH5sYXN0OlwiIFwiKVxuICAgICAgICAgIGN0bzFcbiAgICAgICAgICAoKiBubyBzZXAgaGludCopIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICBjdFxuICAgIHwgUGV4cF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUGV4cF9yZWNvcmQgKGwsIGVvKSAtPlxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfZXhwcmVzc2lvbiBmIChsaSwgZSkgPVxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0OyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH1cbiAgICAgICAgICAgIHdoZW4gbGkudHh0ID0gdHh0IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQDs9QDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj57QDslYSVhQF1AO31AXVwiICgqIFwiQFs8aG92Mj57JWElYX1AXVwiICopXG4gICAgICAgICAgKG9wdGlvbiB+bGFzdDpcIiB3aXRoQDtcIiAoc2ltcGxlX2V4cHIgY3R4dCkpXG4gICAgICAgICAgZW9cbiAgICAgICAgICAobGlzdCBsb25naWRlbnRfeF9leHByZXNzaW9uIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX2FycmF5IGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8Mj5bfCVhfF1AXUBdXCJcbiAgICAgICAgICAobGlzdCAoc2ltcGxlX2V4cHIgKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbFxuICAgIHwgUGV4cF93aGlsZSAoZTEsIGUyKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9IFwiQFs8Mj53aGlsZUA7JWFAO2RvQDslYUA7ZG9uZUBdXCIgaW5cbiAgICAgICAgcHAgZiBmbXQgKGV4cHJlc3Npb24gY3R4dCkgZTEgKGV4cHJlc3Npb24gY3R4dCkgZTJcbiAgICB8IFBleHBfZm9yIChzLCBlMSwgZTIsIGRmLCBlMykgLT5cbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPGh2Mj5AWzwyPmZvciAlYSA9QDslYUA7JWElYUA7ZG9AXUA7JWFAXUA7ZG9uZUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb24gPSBleHByZXNzaW9uIGN0eHQgaW5cbiAgICAgICAgcHAgZiBmbXQgKHBhdHRlcm4gY3R4dCkgcyBleHByZXNzaW9uIGUxIGRpcmVjdGlvbl9mbGFnIGRmIGV4cHJlc3Npb24gZTJcbiAgICAgICAgICBleHByZXNzaW9uIGUzXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGV4cHJlc3Npb24gY3R4dCkgZiB4XG5cbmFuZCBhdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChhdHRyaWJ1dGUgY3R4dCBmKSBsXG5hbmQgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChpdGVtX2F0dHJpYnV0ZSBjdHh0IGYpIGxcblxuYW5kIGF0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgaXRlbV9hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCBmIHggPVxuICAoKiBub3RlOiB2YWx1ZV9kZXNjcmlwdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICAgICAgICBidXQgdGhleSdyZSBhbHJlYWR5IHByaW50ZWQgYnkgdGhlIGNhbGxlcnMgdGhpcyBtZXRob2QgKilcbiAgcHAgZiBcIkBbPGhvdjI+JWElYUBdXCIgKGNvcmVfdHlwZSBjdHh0KSB4LnB2YWxfdHlwZVxuICAgIChmdW4gZiB4IC0+XG4gICAgICBpZiB4LnB2YWxfcHJpbSA8PiBbXSB0aGVuXG4gICAgICAgIHBwIGYgXCJAID1AICVhXCIgKGxpc3QgY29uc3RhbnRfc3RyaW5nKSB4LnB2YWxfcHJpbSlcbiAgICB4XG5cbmFuZCBleHRlbnNpb24gY3R4dCBmIChzLCBlKSA9IHBwIGYgXCJAWzwyPlslJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiAocywgZSkgPVxuICBwcCBmIFwiQFs8Mj5bJSUlJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgeCA9XG4gIHBwIGYgXCJAWzxob3YyPmV4Y2VwdGlvbkAgJWFAXSVhXCJcbiAgICAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpXG4gICAgeC5wdHlleG5fY29uc3RydWN0b3IgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eWV4bl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3RmX2Rlc2Mgd2l0aFxuICB8IFBjdGZfaW5oZXJpdCBjdCAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJWFAXSVhXCIgKGNsYXNzX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfdmFsIChzLCBtZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIEAgJWElYSVzQCA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfbWV0aG9kIChzLCBwZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kICVhICVhJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHZpcnR1YWxfZmxhZyB2ZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludEAgJWFAID1AICVhQF0lYVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjdGZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdGZfYXR0cmlidXRlc1xuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlIGN0eHQgZiB7IHBjc2lnX3NlbGYgPSBjdDsgcGNzaWdfZmllbGRzID0gbDsgXyB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0QFs8MT4lYUBdQCAlYUBdQCBlbmRAXVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbnk7IHB0eXBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT4gKClcbiAgICAgIHwgY3QgLT4gcHAgZiBcIiAoJWEpXCIgKGNvcmVfdHlwZSBjdHh0KSBjdClcbiAgICBjdFxuICAgIChsaXN0IChjbGFzc190eXBlX2ZpZWxkIGN0eHQpIH5zZXA6XCJAO1wiKVxuICAgIGxcblxuKCogY2FsbCBbY2xhc3Nfc2lnbmF0dXJlXSBjYWxsZWQgYnkgW2NsYXNzX3NpZ25hdHVyZV0gKilcbmFuZCBjbGFzc190eXBlIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3R5X2Rlc2Mgd2l0aFxuICB8IFBjdHlfc2lnbmF0dXJlIGNzIC0+XG4gICAgICBjbGFzc19zaWduYXR1cmUgY3R4dCBmIGNzO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X2NvbnN0ciAobGksIGwpIC0+XG4gICAgICBwcCBmIFwiJWElYSVhXCJcbiAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KSB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfYXJyb3cgKGwsIGNvLCBjbCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgKHR5cGVfd2l0aF9sYWJlbCBjdHh0KSAobCwgY28pIChjbGFzc190eXBlIGN0eHQpIGNsXG4gIHwgUGN0eV9leHRlbnNpb24gZSAtPlxuICAgICAgZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X29wZW4gKG8sIGUpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc190eXBlIGN0eHQpIGVcblxuKCogW2NsYXNzIHR5cGUgYSA9IG9iamVjdCBlbmRdICopXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsID1cbiAgbGV0IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24ga3dkIGYgeCA9XG4gICAgbGV0IHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSA9IHggaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAID1AICVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJjbGFzcyB0eXBlXCIgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIilcbiAgICAgICAgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgeHNcblxuYW5kIGNsYXNzX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY2ZfZGVzYyB3aXRoXG4gIHwgUGNmX2luaGVyaXQgKG92ZiwgY2UsIHNvKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJXNAICVhJWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICAgICAgKGZ1biBmIHNvIC0+XG4gICAgICAgICAgbWF0Y2ggc28gd2l0aCBOb25lIC0+ICgpIHwgU29tZSBzIC0+IHBwIGYgXCJAIGFzICVzXCIgcy50eHQpXG4gICAgICAgIHNvIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfY29uY3JldGUgKG92ZiwgZSkpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwlcyAlYSVzID1AOyVhQF0lYVwiIChvdmVycmlkZSBvdmYpIG11dGFibGVfZmxhZyBtZiBzLnR4dFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9tZXRob2QgKHMsIHBmLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCB2aXJ0dWFsICVhICVzIDpAOyVhQF0lYVwiIHByaXZhdGVfZmxhZyBwZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCB2aXJ0dWFsICVhJXMgOkAgJWFAXSVhXCIgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIGxldCBiaW5kIGUgPVxuICAgICAgICBiaW5kaW5nIGN0eHQgZlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgcztcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHB2Yl9leHByID0gZTtcbiAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdmJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kJXMgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSBwcml2YXRlX2ZsYWcgcGZcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfcG9seSAoZSwgU29tZSBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVzIDpAOyVhPUA7JWFcIiBzLnR4dCAoY29yZV90eXBlIGN0eHQpIGN0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBOb25lKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBiaW5kIGVcbiAgICAgICAgICB8IF8gLT4gYmluZCBlKVxuICAgICAgICBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9jb25zdHJhaW50IChjdDEsIGN0MikgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmNvbnN0cmFpbnQgJWEgPUA7JWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDEgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2luaXRpYWxpemVyIGUgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaXRpYWxpemVyQCAlYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQY2ZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjZl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIHsgcGNzdHJfc2VsZiA9IHA7IHBjc3RyX2ZpZWxkcyA9IGwgfSA9XG4gIHBwIGYgXCJAWzxodjA+QFs8aHYyPm9iamVjdCVhQDslYUBdQDtlbmRAXVwiXG4gICAgKGZ1biBmIHAgLT5cbiAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50IF8gLT4gcHAgZiBcIiAlYVwiIChwYXR0ZXJuIGN0eHQpIHBcbiAgICAgIHwgXyAtPiBwcCBmIFwiICglYSlcIiAocGF0dGVybiBjdHh0KSBwKVxuICAgIHBcbiAgICAobGlzdCAoY2xhc3NfZmllbGQgY3R4dCkpXG4gICAgbFxuXG5hbmQgY2xhc3NfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGNsX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjbGFzc19leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGNsX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucGNsX2Rlc2Mgd2l0aFxuICAgIHwgUGNsX3N0cnVjdHVyZSBjcyAtPiBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIGNzXG4gICAgfCBQY2xfZnVuIChsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcImZ1bkAgJWFAIC0+QCAlYVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGVvLCBwKSAoY2xhc3NfZXhwciBjdHh0KSBlXG4gICAgfCBQY2xfbGV0IChyZiwgbCwgY2UpIC0+XG4gICAgICAgIHBwIGYgXCIlYUAgaW5AICVhXCIgKGJpbmRpbmdzIGN0eHQpIChyZiwgbCkgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICB8IFBjbF9hcHBseSAoY2UsIGwpIC0+XG4gICAgICAgIHBwIGYgXCIoKCVhKUAgJWEpXCJcbiAgICAgICAgICAoKiBDZjogIzcyMDAgKikgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgICAgICBjZVxuICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgbFxuICAgIHwgUGNsX2NvbnN0ciAobGksIGwpIC0+XG4gICAgICAgIHBwIGYgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgaWYgbCA8PiBbXSB0aGVuIHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQY2xfY29uc3RyYWludCAoY2UsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhQCA6QCAlYSlcIiAoY2xhc3NfZXhwciBjdHh0KSBjZSAoY2xhc3NfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGNsX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGNsX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc19leHByIGN0eHQpIGVcblxuYW5kIG1vZHVsZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wbXR5X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfdHlwZSBjdHh0KVxuICAgICAgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbXR5X2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfZnVuY3RvciAoVW5pdCwgbXQyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yICgpIC0+QCAlYUBdXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10MlxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAocywgbXQxKSwgbXQyKSAtPiAoXG4gICAgICAgIG1hdGNoIHMudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUAgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10MVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgICAgIHwgU29tZSBuYW1lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yQCAoJXNAIDpAICVhKUAgLT5AICVhQF1cIiBuYW1lXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDEgKG1vZHVsZV90eXBlIGN0eHQpIG10MilcbiAgICB8IFBtdHlfd2l0aCAobXQsIFtdKSAtPiBtb2R1bGVfdHlwZSBjdHh0IGYgbXRcbiAgICB8IFBtdHlfd2l0aCAobXQsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCB3aXRoQCAlYUBdXCIgKG1vZHVsZV90eXBlMSBjdHh0KSBtdFxuICAgICAgICAgIChsaXN0ICh3aXRoX2NvbnN0cmFpbnQgY3R4dCkgfnNlcDpcIkAgYW5kQCBcIilcbiAgICAgICAgICBsXG4gICAgfCBfIC0+IG1vZHVsZV90eXBlMSBjdHh0IGYgeFxuXG5hbmQgd2l0aF9jb25zdHJhaW50IGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUHdpdGhfdHlwZSAobGksICh7IHB0eXBlX3BhcmFtcyA9IGxzOyBfIH0gYXMgdGQpKSAtPlxuICAgICAgbGV0IGxzID0gTGlzdC5tYXAgZnN0IGxzIGluXG4gICAgICBwcCBmIFwidHlwZUAgJWEgJWEgPUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kdWxlIChsaSwgbGkyKSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSAlYSA9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlIChsaSwgbXR5KSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSB0eXBlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG4gIHwgUHdpdGhfdHlwZXN1YnN0IChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA6PUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kc3Vic3QgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhIDo9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG5cbmFuZCBtb2R1bGVfdHlwZTEgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuIG1vZHVsZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtdHlfYWxpYXMgbGkgLT4gcHAgZiBcIihtb2R1bGUgJWEpXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9zaWduYXR1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5zaWdAICVhQF1AIGVuZEBdXCIgKCogXCJAWzxob3Y+c2lnQCAlYUAgZW5kQF1cIiAqKVxuICAgICAgICAgIChsaXN0IChzaWduYXR1cmVfaXRlbSBjdHh0KSlcbiAgICAgICAgICBzXG4gICAgICAgICgqIEZJWE1FIHdyb25nIGluZGVudGF0aW9uKilcbiAgICB8IFBtdHlfdHlwZW9mIG1lIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgb2ZAICVhQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKG1vZHVsZV90eXBlIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzaWduYXR1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHNpZ25hdHVyZV9pdGVtIGN0eHQgZiB4IDogdW5pdCA9XG4gIG1hdGNoIHgucHNpZ19kZXNjIHdpdGhcbiAgfCBQc2lnX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHNpZ190eXBlc3Vic3QgbCAtPlxuICAgICAgKCogUHNpZ190eXBlc3Vic3QgaXMgbmV2ZXIgcmVjdXJzaXZlLCBidXQgd2Ugc3BlY2lmeSBbUmVjdXJzaXZlXSBoZXJlIHRvXG4gICAgICAgICBhdm9pZCBwcmludGluZyBhIFtub25yZWNdIGZsYWcsIHdoaWNoIHdvdWxkIGJlIHJlamVjdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAqKVxuICAgICAgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKFJlY3Vyc2l2ZSwgZmFsc2UsIGwpXG4gIHwgUHNpZ192YWx1ZSB2ZCAtPlxuICAgICAgbGV0IGludHJvID0gaWYgdmQucHZhbF9wcmltID0gW10gdGhlbiBcInZhbFwiIGVsc2UgXCJleHRlcm5hbFwiIGluXG4gICAgICBwcCBmIFwiQFs8Mj4lc0AgJWFAIDpAICVhQF0lYVwiIGludHJvIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX3R5cGV4dCB0ZSAtPiB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgdGVcbiAgfCBQc2lnX2V4Y2VwdGlvbiBlZCAtPiBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIGVkXG4gIHwgUHNpZ19jbGFzcyBsIC0+IChcbiAgICAgIGxldCBjbGFzc19kZXNjcmlwdGlvbiBrd2QgZlxuICAgICAgICAgICh7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gYXMgeCkgPVxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAOzpAOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dCAoY2xhc3NfdHlwZSBjdHh0KSB4LnBjaV9leHByXG4gICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IFsgeCBdIC0+IGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIiBmIHhcbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgICAgIChjbGFzc19kZXNjcmlwdGlvbiBcImNsYXNzXCIpXG4gICAgICAgICAgICB4XG4gICAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfZGVzY3JpcHRpb24gXCJhbmRcIikpXG4gICAgICAgICAgICB4cylcbiAgfCBQc2lnX21vZHVsZVxuICAgICAgKHtcbiAgICAgICAgIHBtZF90eXBlID0geyBwbXR5X2Rlc2MgPSBQbXR5X2FsaWFzIGFsaWFzOyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHBtZCkgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICBsb25naWRlbnRfbG9jIGFsaWFzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R1bGUgcG1kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDpAICVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kc3Vic3QgcG1zIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDo9QCAlYUBdJWFcIiBwbXMucG1zX25hbWUudHh0IGxvbmdpZGVudF9sb2NcbiAgICAgICAgcG1zLnBtc19tYW5pZmVzdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtcy5wbXNfYXR0cmlidXRlc1xuICB8IFBzaWdfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+b3BlbiVzQCAlYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIG9kLnBvcGVuX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3QgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIC0+XG4gICAgICBsZXQgbWQgPVxuICAgICAgICBtYXRjaCBtZCB3aXRoIE5vbmUgLT4gYXNzZXJ0IGZhbHNlICgqIGFzdCBpbnZhcmlhbnQgKikgfCBTb21lIG10IC0+IG10XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlc0AgOj1AICVhQF0lYVwiIHMudHh0IChtb2R1bGVfdHlwZSBjdHh0KSBtZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHNpZ19yZWNtb2R1bGUgZGVjbHMgLT5cbiAgICAgIGxldCByZWMgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmID8oZmlyc3QgPSB0cnVlKSBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBwbWQgOjogdGwgLT5cbiAgICAgICAgICAgIGlmIG5vdCBmaXJzdCB0aGVuXG4gICAgICAgICAgICAgIHBwIGYgXCJAIEBbPGhvdjI+YW5kQCAlczpAICVhQF0lYVwiXG4gICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZTEgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiB+Zmlyc3Q6ZmFsc2UgdGxcbiAgICAgIGluXG4gICAgICBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgZGVjbHNcbiAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIG1vZHVsZV9leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wbW9kX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgeyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbW9kX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG1vZF9kZXNjIHdpdGhcbiAgICB8IFBtb2Rfc3RydWN0dXJlIHMgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2Mj5zdHJ1Y3RAO0BbPDA+JWFAXUA7PDEgLTI+ZW5kQF1cIlxuICAgICAgICAgIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSB+c2VwOlwiQFxcblwiKVxuICAgICAgICAgIHNcbiAgICB8IFBtb2RfY29uc3RyYWludCAobWUsIG10KSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWFAIDpAICVhKUBdXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lIChtb2R1bGVfdHlwZSBjdHh0KSBtdFxuICAgIHwgUG1vZF9pZGVudCBsaSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIG1lKSAtPiBwcCBmIFwiZnVuY3RvciAoKUA7LT5AOyVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2Z1bmN0b3IgKE5hbWVkIChzLCBtdCksIG1lKSAtPlxuICAgICAgICBwcCBmIFwiZnVuY3RvckAgKCVzQCA6QCAlYSlAOy0+QDslYVwiXG4gICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2FwcGx5IChtZTEsIG1lMikgLT5cbiAgICAgICAgcHAgZiBcIiglYSkoJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lMSAobW9kdWxlX2V4cHIgY3R4dCkgbWUyXG4gICAgICAgICgqIENmOiAjNzIwMCAqKVxuICAgIHwgUG1vZF91bnBhY2sgZSAtPiBwcCBmIFwiKHZhbEAgJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUG1vZF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcblxuYW5kIHN0cnVjdHVyZSBjdHh0IGYgeCA9IGxpc3QgfnNlcDpcIkBcXG5cIiAoc3RydWN0dXJlX2l0ZW0gY3R4dCkgZiB4XG5cbmFuZCBwYXlsb2FkIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUFN0ciBbIHsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChlLCBhdHRycykgfSBdIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQU3RyIHggLT4gc3RydWN0dXJlIGN0eHQgZiB4XG4gIHwgUFR5cCB4IC0+XG4gICAgICBwcCBmIFwiOkAgXCI7XG4gICAgICBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgfCBQU2lnIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIHNpZ25hdHVyZSBjdHh0IGYgeFxuICB8IFBQYXQgKHgsIE5vbmUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgU29tZSBlKSAtPlxuICAgICAgcHAgZiBcIj9AIFwiO1xuICAgICAgcGF0dGVybiBjdHh0IGYgeDtcbiAgICAgIHBwIGYgXCIgd2hlbiBcIjtcbiAgICAgIGV4cHJlc3Npb24gY3R4dCBmIGVcblxuKCogdHJhbnNmb3JtIFtmID0gZnVuIGcgaCAtPiAuLl0gdG8gW2YgZyBoID0gLi4uIF0gY291bGQgYmUgaW1wcm92ZWQgKilcbmFuZCBiaW5kaW5nIGN0eHQgZiB7IHB2Yl9wYXQgPSBwOyBwdmJfZXhwciA9IHg7IF8gfSA9XG4gICgqIC5wdmJfYXR0cmlidXRlcyBoYXZlIGFscmVhZHkgYmVlbiBwcmludGVkIGJ5IHRoZSBjYWxsZXIsICNiaW5kaW5ncyAqKVxuICBsZXQgcmVjIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZiB4ID1cbiAgICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICBlbHNlXG4gICAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfZnVuIChsYWJlbCwgZW8sIHAsIGUpIC0+XG4gICAgICAgICAgaWYgbGFiZWwgPSBOb2xhYmVsIHRoZW5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobGFiZWwsIGVvLCBwKSBwcF9wcmludF9wZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIGVcbiAgICAgIHwgUGV4cF9uZXd0eXBlIChzdHIsIGUpIC0+XG4gICAgICAgICAgcHAgZiBcIih0eXBlQCAlcylAICVhXCIgc3RyLnR4dCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgIHwgXyAtPiBwcCBmIFwiPUA7JWFcIiAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGluXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdHl2YXJzIGluXG4gIGxldCBpc19kZXN1Z2FyZWRfZ2FkdCBwIGUgPVxuICAgIGxldCBnYWR0X3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIFNvbWUgKHBhdCwgYXJnc190eXZhcnMsIHJ0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCByZWMgZ2FkdF9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlICh0eXZhciwgZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBnYWR0X2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCBnYWR0X2V4cCA9IGdhZHRfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAoZ2FkdF9wYXR0ZXJuLCBnYWR0X2V4cCkgd2l0aFxuICAgIHwgU29tZSAocCwgcHRfdHl2YXJzLCBwdF9jdCksIFNvbWUgKGVfdHl2YXJzLCBlLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyBlX3R5dmFycyBlX2N0IGluXG4gICAgICAgIGlmIGV0eSA9IHB0X2N0IHRoZW4gU29tZSAocCwgcHRfdHl2YXJzLCBlX2N0LCBlKSBlbHNlIE5vbmVcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCB7XG4gICAgIHBwYXRfZGVzYyA9XG4gICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cCkgKTtcbiAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgIF87XG4gICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdCAoY29yZV90eXBlIGN0eHQpIHR5cFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICBlbHNlXG4gICAgbWF0Y2ggaXNfZGVzdWdhcmVkX2dhZHQgcCB4IHdpdGhcbiAgICB8IFNvbWUgKHAsIFtdLCBjdCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6ICVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBTb21lIChwLCB0eXZhcnMsIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogdHlwZUA7JWEuQDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgIChsaXN0IHBwX3ByaW50X3N0cmluZyB+c2VwOlwiQDtcIilcbiAgICAgICAgICAodHl2YXJzX3N0ciB0eXZhcnMpIChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwLCB0eSk7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT4gKFxuICAgICAgICAgICAgKCogc3BlY2lhbCBjYXNlIGZvciB0aGUgZmlyc3QqKVxuICAgICAgICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgICAgICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVhQDs6QDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgICAgICAgICAgICB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiKCVhQDs6QDslYSlAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICAgICAgICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgdHkgKGV4cHJlc3Npb24gY3R4dCkgeClcbiAgICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIHhcbiAgICAgICAgfCBfIC0+IHBwIGYgXCIlYUA7PUA7JWFcIiAocGF0dGVybiBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIHgpXG5cbigqIFtpbl0gaXMgbm90IHByaW50ZWQgKilcbmFuZCBiaW5kaW5ncyBjdHh0IGYgKHJmLCBsKSA9XG4gIGxldCBiaW5kaW5nIGt3ZCByZiBmIHggPVxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWFAXSVhXCIga3dkIHJlY19mbGFnIHJmIChiaW5kaW5nIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdmJfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGJpbmRpbmcgXCJsZXRcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiIChiaW5kaW5nIFwibGV0XCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmcgXCJhbmRcIiBOb25yZWN1cnNpdmUpKVxuICAgICAgICB4c1xuXG5hbmQgYmluZGluZ19vcCBjdHh0IGYgeCA9XG4gIG1hdGNoICh4LnBib3BfcGF0LCB4LnBib3BfZXhwKSB3aXRoXG4gIHwgKCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gcHZhcjsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9LFxuICAgICAge1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGV2YXI7IF8gfTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIF87XG4gICAgICB9IClcbiAgICB3aGVuIHB2YXIgPSBldmFyIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lcyAlc0BdXCIgeC5wYm9wX29wLnR4dCBldmFyXG4gIHwgcGF0LCBleHAgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVhQDs9QDslYUBdXCIgeC5wYm9wX29wLnR4dCAocGF0dGVybiBjdHh0KSBwYXRcbiAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZXhwXG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucHN0cl9kZXNjIHdpdGhcbiAgfCBQc3RyX2V2YWwgKGUsIGF0dHJzKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+OzslYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc3RyX3R5cGUgKF8sIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBQc3RyX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHN0cl92YWx1ZSAocmYsIGwpIC0+XG4gICAgICAoKiBwcCBmIFwiQFs8aG92Mj5sZXQgJWElYUBdXCIgIHJlY19mbGFnIHJmIGJpbmRpbmdzIGwgKilcbiAgICAgIHBwIGYgXCJAWzwyPiVhQF1cIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKVxuICB8IFBzdHJfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzdHJfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc3RyX21vZHVsZSB4IC0+XG4gICAgICBsZXQgcmVjIG1vZHVsZV9oZWxwZXIgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChhcmdfb3B0LCBtZScpOyBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAobWF0Y2ggYXJnX29wdCB3aXRoXG4gICAgICAgICAgICB8IFVuaXQgLT4gcHAgZiBcIigpXCJcbiAgICAgICAgICAgIHwgTmFtZWQgKHMsIG10KSAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJXM6JWEpXCJcbiAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQpO1xuICAgICAgICAgICAgbW9kdWxlX2hlbHBlciBtZSdcbiAgICAgICAgfCBtZSAtPiBtZVxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZSAlcyVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgeC5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIChmdW4gZiBtZSAtPlxuICAgICAgICAgIGxldCBtZSA9IG1vZHVsZV9oZWxwZXIgbWUgaW5cbiAgICAgICAgICBtYXRjaCBtZSB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAobWUnLCAoeyBwbXR5X2Rlc2MgPSBQbXR5X2lkZW50IF8gfCBQbXR5X3NpZ25hdHVyZSBfOyBfIH0gYXMgbXQpKTtcbiAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiIDpAOyVhQDs9QDslYUA7XCIgKG1vZHVsZV90eXBlIGN0eHQpIG10IChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICAgIG1lJ1xuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiID1AICVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lKVxuICAgICAgICB4LnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wbWJfYXR0cmlidXRlc1xuICB8IFBzdHJfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPDI+b3BlbiVzQDslYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzdHJfbW9kdHlwZSB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzJWFAXSVhXCIgcy50eHRcbiAgICAgICAgKGZ1biBmIG1kIC0+XG4gICAgICAgICAgbWF0Y2ggbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBwcF9wcmludF9zcGFjZSBmICgpO1xuICAgICAgICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdClcbiAgICAgICAgbWQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfY2xhc3MgbCAtPiAoXG4gICAgICBsZXQgZXh0cmFjdF9jbGFzc19hcmdzIGNsID1cbiAgICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2Z1biAobCwgZW8sIHAsIGNsJyk7IHBjbF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBsb29wICgobCwgZW8sIHApIDo6IGFjYykgY2wnXG4gICAgICAgICAgfCBjbCAtPiAoTGlzdC5yZXYgYWNjLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFyZ3MsIGNsID0gbG9vcCBbXSBjbCBpblxuICAgICAgICBsZXQgY29uc3RyLCBjbCA9XG4gICAgICAgICAgbWF0Y2ggY2wgd2l0aFxuICAgICAgICAgIHwgeyBwY2xfZGVzYyA9IFBjbF9jb25zdHJhaW50IChjbCcsIGN0KTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIChTb21lIGN0LCBjbCcpXG4gICAgICAgICAgfCBfIC0+IChOb25lLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgKGFyZ3MsIGNvbnN0ciwgY2wpXG4gICAgICBpblxuICAgICAgbGV0IGNsYXNzX2NvbnN0cmFpbnQgZiBjdCA9IHBwIGYgXCI6IEBbJWFAXSBcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCBpblxuICAgICAgbGV0IGNsYXNzX2RlY2xhcmF0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIGxldCBhcmdzLCBjb25zdHIsIGNsID0gZXh0cmFjdF9jbGFzc19hcmdzIHgucGNpX2V4cHIgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzICVhJWE9QDslYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHRcbiAgICAgICAgICAobGlzdCAobGFiZWxfZXhwIGN0eHQpKVxuICAgICAgICAgIGFyZ3MgKG9wdGlvbiBjbGFzc19jb25zdHJhaW50KSBjb25zdHIgKGNsYXNzX2V4cHIgY3R4dCkgY2xcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2RlY2xhcmF0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzdHJfY2xhc3NfdHlwZSBsIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbFxuICB8IFBzdHJfcHJpbWl0aXZlIHZkIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5leHRlcm5hbEAgJWFAIDpAICVhQF0lYVwiIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV9leHByIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9yZWNtb2R1bGUgZGVjbHMgLT4gKFxuICAgICAgKCogMy4wNyAqKVxuICAgICAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzOiVhQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSB0eXAgKG1vZHVsZV9leHByIGN0eHQpIGV4cHJcbiAgICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgfCBwbWIgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPkAgYW5kQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgcG1iLnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggZGVjbHMgd2l0aFxuICAgICAgfCAoeyBwbWJfZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9jb25zdHJhaW50IChleHByLCB0eXApIH0gfSBhcyBwbWIpXG4gICAgICAgIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOiVhQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IHBtYiA6OiBsMiAtPlxuICAgICAgICAgIHBwIGYgXCJAWzxodj5AWzxob3YyPm1vZHVsZUAgcmVjQCAlc0AgPUAgJWFAXSVhQCAlYUBdXCJcbiAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgICAgICAoZnVuIGYgbDIgLT4gTGlzdC5pdGVyIChhdXggZikgbDIpXG4gICAgICAgICAgICBsMlxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIHR5cGVfcGFyYW0gY3R4dCBmIChjdCwgKGEsIGIpKSA9XG4gIHBwIGYgXCIlcyVzJWFcIiAodHlwZV92YXJpYW5jZSBhKSAodHlwZV9pbmplY3Rpdml0eSBiKSAoY29yZV90eXBlIGN0eHQpIGN0XG5cbmFuZCB0eXBlX3BhcmFtcyBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiJWEgXCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsQDtcIikgbFxuXG5hbmQgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCBleHBvcnRlZCwgbCkgPVxuICBsZXQgdHlwZV9kZWNsIGt3ZCByZiBmIHggPVxuICAgIGxldCBlcSA9XG4gICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCAmJiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuIFwiXCJcbiAgICAgIGVsc2UgaWYgZXhwb3J0ZWQgdGhlbiBcIiA9XCJcbiAgICAgIGVsc2UgXCIgOj1cIlxuICAgIGluXG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzJXMlYUBdJWFcIiBrd2Qgbm9ucmVjX2ZsYWcgcmYgKHR5cGVfcGFyYW1zIGN0eHQpXG4gICAgICB4LnB0eXBlX3BhcmFtcyB4LnB0eXBlX25hbWUudHh0IGVxICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlwZV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHR5cGVfZGVjbCBcInR5cGVcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiICh0eXBlX2RlY2wgXCJ0eXBlXCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKHR5cGVfZGVjbCBcImFuZFwiIFJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCByZWNvcmRfZGVjbGFyYXRpb24gY3R4dCBmIGxibHMgPVxuICBsZXQgdHlwZV9yZWNvcmRfZmllbGQgZiBwbGQgPVxuICAgIHBwIGYgXCJAWzwyPiVhJXM6QDslYUA7JWFAXVwiIG11dGFibGVfZmxhZyBwbGQucGxkX211dGFibGUgcGxkLnBsZF9uYW1lLnR4dFxuICAgICAgKGNvcmVfdHlwZSBjdHh0KSBwbGQucGxkX3R5cGUgKGF0dHJpYnV0ZXMgY3R4dCkgcGxkLnBsZF9hdHRyaWJ1dGVzXG4gIGluXG4gIHBwIGYgXCJ7QFxcbiVhfVwiIChsaXN0IHR5cGVfcmVjb3JkX2ZpZWxkIH5zZXA6XCI7QFxcblwiKSBsYmxzXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgKCogdHlwZV9kZWNsYXJhdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICBidXQgaXQncyBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCAqKVxuICBsZXQgcHJpdiBmID1cbiAgICBtYXRjaCB4LnB0eXBlX3ByaXZhdGUgd2l0aCBQdWJsaWMgLT4gKCkgfCBQcml2YXRlIC0+IHBwIGYgXCJAO3ByaXZhdGVcIlxuICBpblxuICBsZXQgbWFuaWZlc3QgZiA9XG4gICAgbWF0Y2ggeC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHkgLT5cbiAgICAgICAgaWYgeC5wdHlwZV9raW5kID0gUHR5cGVfYWJzdHJhY3QgdGhlblxuICAgICAgICAgIHBwIGYgXCIldEA7JWFcIiBwcml2IChjb3JlX3R5cGUgY3R4dCkgeVxuICAgICAgICBlbHNlIHBwIGYgXCJAOyVhXCIgKGNvcmVfdHlwZSBjdHh0KSB5XG4gIGluXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBmIHBjZCA9XG4gICAgcHAgZiBcInxAO1wiO1xuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgKCBwY2QucGNkX25hbWUudHh0LFxuICAgICAgICBwY2QucGNkX3ZhcnMsXG4gICAgICAgIHBjZC5wY2RfYXJncyxcbiAgICAgICAgcGNkLnBjZF9yZXMsXG4gICAgICAgIHBjZC5wY2RfYXR0cmlidXRlcyApXG4gIGluXG4gIGxldCByZXByIGYgPVxuICAgIGxldCBpbnRybyBmID0gaWYgeC5wdHlwZV9tYW5pZmVzdCA9IE5vbmUgdGhlbiAoKSBlbHNlIHBwIGYgXCJAOz1cIiBpblxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IHhzIC0+XG4gICAgICAgIGxldCB2YXJpYW50cyBmbXQgeHMgPVxuICAgICAgICAgIGlmIHhzID0gW10gdGhlbiBwcCBmbXQgXCIgfFwiXG4gICAgICAgICAgZWxzZSBwcCBmbXQgXCJAXFxuJWFcIiAobGlzdCB+c2VwOlwiQFxcblwiIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSB4c1xuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiJXQldCVhXCIgaW50cm8gcHJpdiB2YXJpYW50cyB4c1xuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICB8IFB0eXBlX3JlY29yZCBsIC0+IHBwIGYgXCIldCV0QDslYVwiIGludHJvIHByaXYgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsXG4gICAgfCBQdHlwZV9vcGVuIC0+IHBwIGYgXCIldCV0QDsuLlwiIGludHJvIHByaXZcbiAgaW5cbiAgbGV0IGNvbnN0cmFpbnRzIGYgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoY3QxLCBjdDIsIF8pIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPkAgY29uc3RyYWludEAgJWFAID1AICVhQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0MVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyKVxuICAgICAgeC5wdHlwZV9jc3Ryc1xuICBpblxuICBwcCBmIFwiJXQldCV0XCIgbWFuaWZlc3QgcmVwciBjb25zdHJhaW50c1xuXG5hbmQgdHlwZV9leHRlbnNpb24gY3R4dCBmIHggPVxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGYgeCA9XG4gICAgcHAgZiBcIkBcXG58QDslYVwiIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCkgeFxuICBpblxuICBwcCBmIFwiQFs8Mj50eXBlICVhJWEgKz0gJWFAICVhQF0lYVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IGwgLT5cbiAgICAgICAgICBwcCBmIFwiJWFAO1wiIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIiB+c2VwOlwiLFwiKSBsKVxuICAgIHgucHR5ZXh0X3BhcmFtcyBsb25naWRlbnRfbG9jIHgucHR5ZXh0X3BhdGggcHJpdmF0ZV9mbGFnXG4gICAgeC5wdHlleHRfcHJpdmF0ZSAoKiBDZjogIzcyMDAgKilcbiAgICAobGlzdCB+c2VwOlwiXCIgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yKVxuICAgIHgucHR5ZXh0X2NvbnN0cnVjdG9ycyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZiAobmFtZSwgdmFycywgYXJncywgcmVzLCBhdHRycykgPVxuICBsZXQgbmFtZSA9IG1hdGNoIG5hbWUgd2l0aCBcIjo6XCIgLT4gXCIoOjopXCIgfCBzIC0+IHMgaW5cbiAgbGV0IHBwX3ZhcnMgZiB2cyA9XG4gICAgbWF0Y2ggdnMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHZzIC0+IHBwIGYgXCIlYUA7LkA7XCIgKGxpc3QgdHl2YXJfbG9jIH5zZXA6XCJAO1wiKSB2c1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHBwIGYgXCIlcyVhQDslYVwiIG5hbWVcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiAoKVxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQDtvZkA7JWFcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIGwgLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgU29tZSByIC0+XG4gICAgICBwcCBmIFwiJXM6QDslYSVhQDslYVwiIG5hbWUgcHBfdmFycyB2YXJzXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgW10gLT4gY29yZV90eXBlMSBjdHh0IGYgclxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiXG4gICAgICAgICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpXG4gICAgICAgICAgICAgICAgbCAoY29yZV90eXBlMSBjdHh0KSByXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiIChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbCAoY29yZV90eXBlMSBjdHh0KSByKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCBmIHggPVxuICAoKiBDZjogIzcyMDAgKilcbiAgbWF0Y2ggeC5wZXh0X2tpbmQgd2l0aFxuICB8IFBleHRfZGVjbCAodiwgbCwgcikgLT5cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgICAoeC5wZXh0X25hbWUudHh0LCB2LCBsLCByLCB4LnBleHRfYXR0cmlidXRlcylcbiAgfCBQZXh0X3JlYmluZCBsaSAtPlxuICAgICAgcHAgZiBcIiVzQDs9QDslYSVhXCIgeC5wZXh0X25hbWUudHh0IGxvbmdpZGVudF9sb2MgbGkgKGF0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNhc2VfbGlzdCBjdHh0IGYgbCA6IHVuaXQgPVxuICBsZXQgYXV4IGYgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSA9XG4gICAgcHAgZiBcIkA7fCBAWzwyPiVhJWFAOy0+QDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcGNfbGhzXG4gICAgICAob3B0aW9uIChleHByZXNzaW9uIGN0eHQpIH5maXJzdDpcIkA7d2hlbkA7XCIpXG4gICAgICBwY19ndWFyZFxuICAgICAgKGV4cHJlc3Npb24gKHVuZGVyX3BpcGUgY3R4dCkpXG4gICAgICBwY19yaHNcbiAgaW5cbiAgbGlzdCBhdXggZiBsIH5zZXA6XCJcIlxuXG5hbmQgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQgZiAobCwgZSkgPVxuICBsZXQgc2ltcGxlX25hbWUgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICBTb21lIGxcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBOb2xhYmVsIC0+IGV4cHJlc3Npb24yIGN0eHQgZiBlICgqIGxldmVsIDIqKVxuICB8IE9wdGlvbmFsIHN0ciAtPlxuICAgICAgaWYgU29tZSBzdHIgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCI/JXNcIiBzdHJcbiAgICAgIGVsc2UgcHAgZiBcIj8lczolYVwiIHN0ciAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICB8IExhYmVsbGVkIGxibCAtPlxuICAgICAgaWYgU29tZSBsYmwgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCJ+JXNcIiBsYmxcbiAgICAgIGVsc2UgcHAgZiBcIn4lczolYVwiIGxibCAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50IGYgeCA9XG4gIG1hdGNoIHgucGRpcmFfZGVzYyB3aXRoXG4gIHwgUGRpcl9zdHJpbmcgcyAtPiBwcCBmIFwiQCAlU1wiIHNcbiAgfCBQZGlyX2ludCAobiwgTm9uZSkgLT4gcHAgZiBcIkAgJXNcIiBuXG4gIHwgUGRpcl9pbnQgKG4sIFNvbWUgbSkgLT4gcHAgZiBcIkAgJXMlY1wiIG4gbVxuICB8IFBkaXJfaWRlbnQgbGkgLT4gcHAgZiBcIkAgJWFcIiBsb25naWRlbnQgbGlcbiAgfCBQZGlyX2Jvb2wgYiAtPiBwcCBmIFwiQCAlc1wiIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG5sZXQgdG9wbGV2ZWxfcGhyYXNlIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFB0b3BfZGVmIHMgLT4gcHAgZiBcIkBbPGhvdjA+JWFAXVwiIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSByZXNldF9jdHh0KSkgc1xuICAoKiBwcF9vcGVuX2h2Ym94IGYgMDsgKilcbiAgKCogcHBfcHJpbnRfbGlzdCBzdHJ1Y3R1cmVfaXRlbSBmIHMgOyAqKVxuICAoKiBwcF9jbG9zZV9ib3ggZiAoKTsgKilcbiAgfCBQdG9wX2RpciB7IHBkaXJfbmFtZTsgcGRpcl9hcmcgPSBOb25lOyBfIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPiMlc0BdXCIgcGRpcl9uYW1lLnR4dFxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IFNvbWUgcGRpcl9hcmc7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQCAlYUBdXCIgcGRpcl9uYW1lLnR4dCBkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmdcblxubGV0IGV4cHJlc3Npb24gZiB4ID0gcHAgZiBcIkBbJWFAXVwiIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIHhcblxubGV0IHN0cmluZ19vZl9leHByZXNzaW9uIHggPVxuICBpZ25vcmUgKGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpO1xuICBsZXQgZiA9IHN0cl9mb3JtYXR0ZXIgaW5cbiAgZXhwcmVzc2lvbiBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHN0cmluZ19vZl9zdHJ1Y3R1cmUgeCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBzdHJ1Y3R1cmUgcmVzZXRfY3R4dCBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHRvcF9waHJhc2UgZiB4ID1cbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpO1xuICB0b3BsZXZlbF9waHJhc2UgZiB4O1xuICBwcCBmIFwiOztcIjtcbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpXG5cbmxldCBjb3JlX3R5cGUgPSBjb3JlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHBhdHRlcm4gPSBwYXR0ZXJuIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmUgPSBzaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZSA9IHN0cnVjdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfZXhwciA9IGNsYXNzX2V4cHIgcmVzZXRfY3R4dFxubGV0IGNsYXNzX2ZpZWxkID0gY2xhc3NfZmllbGQgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGUgPSBjbGFzc190eXBlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19zaWduYXR1cmUgPSBjbGFzc19zaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGVfZmllbGQgPSBjbGFzc190eXBlX2ZpZWxkIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfZXhwciA9IG1vZHVsZV9leHByIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfdHlwZSA9IG1vZHVsZV90eXBlIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmVfaXRlbSA9IHNpZ25hdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCBzdHJ1Y3R1cmVfaXRlbSA9IHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCB0eXBlX2RlY2xhcmF0aW9uID0gdHlwZV9kZWNsYXJhdGlvbiByZXNldF9jdHh0XG4iLCIoKiBUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gNC4xNCBhbmQgNS4wIGZyb20gYSBQYXJzZXRyZWUgcG9pbnQgb2YgdmlldyBhcmUgdGhlIG1hZ2ljIG51bWJlcnMgKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5Bc3R0eXBlc1xuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfNDE0LlBhcnNldHJlZVxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMyXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMyXCJcbmVuZFxuIiwibW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3QgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmdcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfYXBwbHlfdW5pdCBvZiBtb2R1bGVfZXhwciAoKiogW01FMSgpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ICopID1cbiAgICB8IFB2Y19jb25zdHJhaW50IG9mIHtcbiAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczpzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICB0eXA6Y29yZV90eXBlO1xuICAgICAgfVxuICAgIHwgUHZjX2NvZXJjaW9uIG9mIHtncm91bmQ6Y29yZV90eXBlIG9wdGlvbjsgY29lcmNpb246Y29yZV90eXBlIH1cblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2NvbnN0cmFpbnQ6IHZhbHVlX2NvbnN0cmFpbnQgb3B0aW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMzXCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDFcbm1vZHVsZSBUbyA9IEFzdF81MDBcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMS5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIGxldCBtZXJnZV9sb2MgbGVmdCByaWdodCA9XG4gICAgTG9jYXRpb24uXG4gICAgICB7IGxvY19zdGFydCA9IGxlZnQubG9jX3N0YXJ0OyBsb2NfZW5kID0gcmlnaHQubG9jX2VuZDsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICBpblxuICBsZXQgZ2hvc3RfbG9jIGxvYyA9IHsgbG9jIHdpdGggTG9jYXRpb24ubG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCBnaG9zdF9jb25zdHJhaW50IHBhdCB0eXAgPVxuICAgIGxldCBwcGF0X2xvYyA9XG4gICAgICBnaG9zdF9sb2NcbiAgICAgICAgKG1lcmdlX2xvYyBwYXQuQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2MgdHlwLkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jKVxuICAgIGluXG4gICAge1xuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYztcbiAgICAgIHBwYXRfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAocGF0LCB0eXApO1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICB9XG4gIGluXG4gIGxldCBwdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQgYW5kIHB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByIGluXG4gIGxldCBjb25zdHJhaW5fcGF0IHBhdCB0eXAgZXhwciA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwIGluXG4gICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICBsZXQgcHZiX3BhdCwgcHZiX2V4cHIgPVxuICAgIG1hdGNoIChwdmJfY29uc3RyYWludCwgcHZiX3BhdCkgd2l0aFxuICAgIHwgKCBTb21lXG4gICAgICAgICAgKFB2Y19jb25zdHJhaW50XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdO1xuICAgICAgICAgICAgICB0eXAgPSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwO1xuICAgICAgICAgICAgfSksXG4gICAgICAgIHsgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSApIC0+XG4gICAgICAgICgqIHRoZSBzdWdhcmluZyBvZiBbbGV0IHg6IHVuaXZhcnMgLiB0eXAgPSBleHAgXSB3YXMgZGVzdWdhcmVkIHRvXG4gICAgICAgICAgIFtsZXQgKHg6dW5pdmFycyAuIHR5cCkgPSBleHBdIGluIDUuMCB3aGljaCBkb2Vzbid0IGZpdCB0aGUgY2FzZSBiZWxvdyAqKVxuICAgICAgICBjb25zdHJhaW5fcGF0IHB2Yl9wYXQgdHlwIHB2Yl9leHByXG4gICAgfCAoIFNvbWUgKFB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSksXG4gICAgICAgIHsgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSApIC0+XG4gICAgICAgICgqIENvcGllZCBhbmQgYWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBBc3RfaGVscGVyICopXG4gICAgICAgIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICAgICAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB2YXJfbmFtZXMgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICAgICAgICBsZXQgZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyIHggLT4gUHR5cF92YXIgeFxuICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgKCBMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnLFxuICAgICAgICAgICAgICAgICAgICAgIGxibF9sc3Rfb3B0aW9uIClcbiAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgICAgICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICAgICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgdFxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IG1lcmdlX2xvYyBwdmJfcGF0LnBwYXRfbG9jIHB2Yl9leHByLnBleHBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9XG4gICAgICAgICAgbWF0Y2ggbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGdob3N0X2xvYyB0eXAucHR5cF9sb2NcbiAgICAgICAgICB8IF8gOjogXyAtPiBnaG9zdF9sb2MgcGV4cF9sb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cF9wb2x5ID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXAgd2l0aFxuICAgICAgICAgICAgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9XG4gICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAgICAgICAgICggbG9jYWxseV9hYnN0cmFjdF91bml2YXJzLFxuICAgICAgICAgICAgICAgICAgdmFyaWZ5X2NvbnN0cnVjdG9ycyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgdHlwICk7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuXG4gICAgICAgIGxldCBwcGF0X2xvYyA9XG4gICAgICAgICAgZ2hvc3RfbG9jXG4gICAgICAgICAgICAobWVyZ2VfbG9jIHB2Yl9wYXQuQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2NcbiAgICAgICAgICAgICAgIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSB7IChnaG9zdF9jb25zdHJhaW50IHB2Yl9wYXQgdHlwX3BvbHkpIHdpdGggcHBhdF9sb2MgfVxuICAgICAgICBhbmQgcHZiX2V4cHIgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGV4cHIgdmFyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBleHByIHdpdGhcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh2YXIsIGV4cHIpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChwdmJfZXhwciwgdHlwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChMaXN0LnJldiBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMpXG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IFNvbWUgKFB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gW107IHR5cCB9KSwgXyAtPlxuICAgICAgICBjb25zdHJhaW5fcGF0IHB2Yl9wYXQgdHlwIHB2Yl9leHByXG4gICAgfCBTb21lIChQdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pLCBfIC0+XG4gICAgICAgIGxldCBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IGdob3N0X2xvYyBjb2VyY2lvbi5wdHlwX2xvYyBpblxuICAgICAgICBsZXQgdHlwID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2VyY2lvbiB3aXRoXG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5IChbXSwgY29lcmNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBnaG9zdF9jb25zdHJhaW50IHB2Yl9wYXQgdHlwIGluXG4gICAgICAgIGxldCBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9leHByIHdpdGhcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAocHZiX2V4cHIsIGdyb3VuZCwgY29lcmNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICAgIHwgXyAtPiAocHZiX3BhdCwgcHZiX2V4cHIpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIGxldCBsb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgbG9jIHBtb2RfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGxvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeDEgPSBjb3B5X21vZHVsZV9leHByIHgxIGluXG4gICAgICBsZXQgeDEgPVxuICAgICAgICBtYXRjaCB4MS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIFtdIC0+XG4gICAgICAgICAgICBsZXQgbG9jID0geyB4MS5wbW9kX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWUgPVxuICAgICAgICAgICAgICAgICAgeyB0eHQgPSBcInBweGxpYi5taWdyYXRpb24ua2VlcF9zdHJ1Y3R1cmVcIjsgbG9jIH07XG4gICAgICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciBbXTtcbiAgICAgICAgICAgICAgICBhdHRyX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6OiB4MS5wbW9kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHgxIHdpdGggcG1vZF9hdHRyaWJ1dGVzIH1cbiAgICAgICAgfCBfIC0+IHgxXG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBsZXQgZW1wdHlfc3RydWN0ID1cbiAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuXG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gUG1vZF9zdHJ1Y3R1cmUgW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBlbXB0eV9zdHJ1Y3QpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMC5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID1cbiBmdW4geyBMb2NhdGlvbi5sb2Nfc3RhcnQ7IExvY2F0aW9uLmxvY19lbmQ7IExvY2F0aW9uLmxvY19naG9zdCB9IC0+XG4gIHtcbiAgICBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBjb3B5X3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICBMb2NhdGlvbi5sb2NfZW5kID0gY29weV9wb3NpdGlvbiBsb2NfZW5kO1xuICAgIExvY2F0aW9uLmxvY19naG9zdDtcbiAgfVxuXG5hbmQgY29weV9wb3NpdGlvbiA6IExleGluZy5wb3NpdGlvbiAtPiBMZXhpbmcucG9zaXRpb24gPVxuIGZ1biB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9IC0+XG4gIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH1cbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAwXG5tb2R1bGUgVG8gPSBBc3RfNTAxXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLmxldF87IEFzdF81MDAuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT4gUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIHQpIC0+XG4gICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgIGluXG4gICAgbG9vcCB0XG4gIGluXG4gICgqIE1hdGNoIHRoZSBmb3JtIG9mIHRoZSBleHByIGFuZCBwYXR0ZXJuIHRvIGRlY2lkZSB0aGUgdmFsdWUgb2ZcbiAgICAgW3B2Yl9jb25zdHJhaW50XS4gQWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBQUHJpbnRlci4gKilcbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB0eXZhcnMgaW5cbiAgbGV0IHJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmcgcCBlID1cbiAgICBsZXQgdmFsdWVfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSBhcyB0eV9leHQpICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYXNzZXJ0IChtYXRjaCBydC5wdHlwX2Rlc2Mgd2l0aCBQdHlwX3BvbHkgXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSk7XG4gICAgICAgICAgbGV0IHR5ID0gbWF0Y2ggYXJnc190eXZhcnMgd2l0aCBbXSAtPiBydCB8IF8gLT4gdHlfZXh0IGluXG4gICAgICAgICAgYFZhciAocGF0LCBhcmdzX3R5dmFycywgcnQsIHR5KVxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwYXQsIHJ0KTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBgTm9uVmFyIChwYXQsIHJ0KVxuICAgICAgfCBfIC0+IGBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVjIHZhbHVlX2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAodHl2YXIsIGUpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIHZhbHVlX2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCB2YWx1ZV9leHAgPSB2YWx1ZV9leHAgW10gZSBpblxuICAgIG1hdGNoICh2YWx1ZV9wYXR0ZXJuLCB2YWx1ZV9leHApIHdpdGhcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIFNvbWUgKGVfdHl2YXJzLCBpbm5lcl9lLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV9jb25zdHJ1Y3RvcnMgZV90eXZhcnMgZV9jdCBpblxuICAgICAgICBpZiBldHkgPSBwdF9jdCB0aGVuXG4gICAgICAgICAgYERlc3VnYXJlZF9sb2NhbGx5X2Fic3RyYWN0IChwLCBwdF90eXZhcnMsIGVfY3QsIGlubmVyX2UpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiB0aGUgZXhwcmVzc2lvbiBjb25zdHJhaW50IGFuZCB0aGUgcGF0dGVybiBjb25zdHJhaW50LFxuICAgICAgICAgICAgIGRvbid0IG1hdGNoLCBidXQgd2Ugc3RpbGwgaGF2ZSBhIFB0eXBfcG9seSBwYXR0ZXJuIGNvbnN0cmFpbnQgdGhhdFxuICAgICAgICAgICAgIHNob3VsZCBiZSByZXN1Z2FyZWQgdG8gYSB2YWx1ZSBiaW5kaW5nICopXG4gICAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYFZhciAocCwgcHRfdHl2YXJzLCBwdF9jdCwgZXh0ZXJuX2N0KSwgXyAtPlxuICAgICAgICBgVW5pdmFycyAocCwgcHRfdHl2YXJzLCBleHRlcm5fY3QsIGUpXG4gICAgfCBgTm9uVmFyIChwYXQsIGN0KSwgXyAtPiBgTm9uVmFyIChwYXQsIGN0LCBlKVxuICAgIHwgXyAtPiBgTm9uZVxuICBpblxuICBsZXQgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwID1cbiAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgU29tZVxuICAgICAgKEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgICB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IHR5X3ZhcnM7IHR5cCB9KVxuICBpblxuICBsZXQgcHZiX3BhdCwgcHZiX2V4cHIsIHB2Yl9jb25zdHJhaW50ID1cbiAgICBtYXRjaCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHB2Yl9wYXQgcHZiX2V4cHIgd2l0aFxuICAgIHwgYERlc3VnYXJlZF9sb2NhbGx5X2Fic3RyYWN0IChwLCB0eV92YXJzLCB0eXAsIGUpIC0+XG4gICAgICAgIChwLCBlLCB3aXRoX2NvbnN0cmFpbnQgdHlfdmFycyB0eXApXG4gICAgfCBgVW5pdmFycyAocGF0LCBbXSwgY3QsIGV4cHIpIC0+IChcbiAgICAgICAgKCogY2hlY2sgaWYgd2UgYXJlIGluIHRoZSBbbGV0IHggOiB0eT8gOj4gY29lciA9IGV4cHIgXSBjYXNlICopXG4gICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb2VyY2UgKGV4cHIsIGdyLCBjb2VyY2UpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgLT5cbiAgICAgICAgICAgIGxldCBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyIGluXG4gICAgICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2UgaW5cbiAgICAgICAgICAgIGxldCBwdmJfY29uc3RyYWludCA9XG4gICAgICAgICAgICAgIFNvbWUgKEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAocGF0LCBleHByLCBwdmJfY29uc3RyYWludClcbiAgICAgICAgfCBfIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdCkpXG4gICAgfCBgVW5pdmFycyAocGF0LCBfLCBjdCwgZXhwcikgLT4gKHBhdCwgZXhwciwgd2l0aF9jb25zdHJhaW50IFtdIGN0KVxuICAgIHwgYE5vblZhciAocCwgdHlwLCBlKSAtPiAocCwgZSwgd2l0aF9jb25zdHJhaW50IFtdIHR5cClcbiAgICB8IGBOb25lIC0+IChwdmJfcGF0LCBwdmJfZXhwciwgTm9uZSlcbiAgaW5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeDEsIGlzX3VuaXQgPVxuICAgICAgICBtYXRjaCB4MS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIFtdIC0+XG4gICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0ciBhY2MgOiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IF8gPVxuICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIC0+IChMaXN0LnJldiBhY2MsIHRydWUpXG4gICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgYXR0cl9uYW1lID0geyB0eHQgPSBcInBweGxpYi5taWdyYXRpb24ua2VlcF9zdHJ1Y3R1cmVcIjsgXyB9O1xuICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogcSAtPlxuICAgICAgICAgICAgICAgICAgKExpc3QucmV2X2FwcGVuZCBhY2MgcSwgZmFsc2UpXG4gICAgICAgICAgICAgIHwgaGQgOjogdGwgLT4gZXh0cmFjdF9hdHRyIChoZCA6OiBhY2MpIHRsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYiA9IGV4dHJhY3RfYXR0ciBbXSB4MS5wbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgICAgICh7IHgxIHdpdGggcG1vZF9hdHRyaWJ1dGVzIH0sIGIpXG4gICAgICAgIHwgXyAtPiAoeDEsIGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3VuaXQgdGhlbiBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gICAgICBlbHNlXG4gICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID1cbiBmdW4geyBMb2NhdGlvbi5sb2Nfc3RhcnQ7IExvY2F0aW9uLmxvY19lbmQ7IExvY2F0aW9uLmxvY19naG9zdCB9IC0+XG4gIHtcbiAgICBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBjb3B5X3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICBMb2NhdGlvbi5sb2NfZW5kID0gY29weV9wb3NpdGlvbiBsb2NfZW5kO1xuICAgIExvY2F0aW9uLmxvY19naG9zdDtcbiAgfVxuXG5hbmQgY29weV9wb3NpdGlvbiA6IExleGluZy5wb3NpdGlvbiAtPiBMZXhpbmcucG9zaXRpb24gPVxuIGZ1biB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9IC0+XG4gIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH1cbiIsIm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzQxNFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF81MDAuUGFyc2V0cmVlLiVzIC0+IEFzdF80MTQuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVycyAkKilcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgUHJpbnRmLnByaW50ZlxuICAgICAgICBcImxldCBjb3B5XyVzXFxuXFxcbiAgICAgICAgXFwgIDogQXN0XzQxNC5QYXJzZXRyZWUuJXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuJXNcXG5cXFxuICAgICAgICBcXCAgPSBmdW4geCAtPiB4XFxuXFxuXCJcbiAgICAgICAgcyBzIHNcbiAgKVxuKilcbmxldCBjb3B5X3N0cnVjdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3RvcGxldmVsX3BocmFzZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NvcmVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHJlc3Npb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3BhdHRlcm5cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2Nhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2V4cHJcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV9leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV90eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3N0cnVjdHVyZV9pdGVtXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbigqJCopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSAoW10sIFApXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgIEMgKHR5cGUgYSBiKSBQICAgU29tZSAoW2E7IGJdLCBQKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA6PSAgLi4uICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiB3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMwXCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTRcbm1vZHVsZSBUbyA9IEFzdF80MTNcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTQuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5sZXRfOyBBc3RfNDE0LlBhcnNldHJlZS5hbmRzOyBBc3RfNDE0LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEzLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEzLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTQuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTMuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT4gKFxuICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICAgICAgfCBoZCA6OiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIGhkLmxvYyBcInR5cGUgcGFyYW1ldGVycyBpbiBleHRlbnNpb24gY29uc3RydWN0b3JzXCIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwY2RfdmFycyB3aXRoXG4gIHwgW10gLT5cbiAgICAgIHtcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgfVxuICB8IGhkIDo6IF8gLT4gbWlncmF0aW9uX2Vycm9yIGhkLmxvYyBcInBjZF92YXJzIGluIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uc1wiXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTQuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxNC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTQuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTQuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxNC5Bc3R0eXBlcy50eHQ7IEFzdF80MTQuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTNcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMy5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTQuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxNC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTQuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDE0LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoW10sIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTQuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF92YXJzID0gW107XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDE0LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTQuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTQuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDEyXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMy5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHgwIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICB8IHR5IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB0eS5Bc3RfNDEzLkFzdHR5cGVzLmxvY1xuICAgICAgICAgICAgICAgICAgICBcImV4aXN0ZW50aWFscyBpbiBwYXR0ZXJuLW1hdGNoaW5nXCIpO1xuICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4geDEpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyBcIm1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0IChfeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgxLkFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jXG4gICAgICAgIFwiZGVzdHJ1Y3RpdmUgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAuQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2NcbiAgICAgICAgXCJsb2NhbCBtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTJcbm1vZHVsZSBUbyA9IEFzdF80MTNcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMi5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiAoW10sIGNvcHlfcGF0dGVybiB4KSkgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTMuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTMuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI4XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI4XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTJcbm1vZHVsZSBUbyA9IEFzdF80MTFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMi5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDExLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMVxubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5sZXRfOyBBc3RfNDExLlBhcnNldHJlZS5hbmRzOyBBc3RfNDExLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDExLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTEuQXN0dHlwZXMudHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI3XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI3XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTBcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHIgeCA9IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXQgeCA9IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwIHggPSBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIF8sIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDExLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTEuQXN0dHlwZXMudHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDExLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBMb2NhdGlvbi5ub25lLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5cbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgdHlwID0gY29yZV90eXBlXG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAobW9kdWxlIFMpXG4gICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXQgPSBwYXR0ZXJuXG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICgqIChtb2R1bGUgUClcbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByID0gZXhwcmVzc2lvblxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlc1xuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBjYXNlcyA9IGNhc2UgbGlzdFxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgIHwgQyA9IERcbiAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgIHZhbCB4OiBUXG4gICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjZcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjZcIlxuZW5kXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MTBcbm1vZHVsZSBUbyA9IEFzdF80MDlcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xMFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgbWFwX29wdGlvbiBmIHggPSBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmcgPSBtYXBfb3B0aW9uIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvY1xuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgeDAubG9jIFwiYW5vbnltb3VzIGxldCBtb2R1bGVcIlxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jXG4gICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgeDAubG9jIFwiYW55bnltb3VzIHVucGFja1wiIHwgU29tZSB4IC0+IHgpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6IEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IExvY2F0aW9uLnQgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2NcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1iX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBiaW5kaW5nXCIpXG4gICAgICAgIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgsIHkgPSBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwIGluXG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgsIHksIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT5cbiAgICBzdHJpbmcgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgKiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSBvcHRpb24gPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gKHsgbG9jID0gTG9jYXRpb24ubm9uZTsgdHh0ID0gXCIqXCIgfSwgTm9uZSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgKCBjb3B5X2xvYyAoZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgeCAtPiB4KSB4MCxcbiAgICAgICAgU29tZSAoY29weV9tb2R1bGVfdHlwZSB4MSkgKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IG1hcF9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2NcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciBwbWRfbmFtZS5sb2MgXCJhbm9ueW1vdXMgbW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgICBwbWRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXMgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDkuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDlcbm1vZHVsZSBUbyA9IEFzdF80MTBcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCAobWF0Y2ggKHgwLnR4dCwgeDEpIHdpdGhcbiAgICAgICAgICB8IFwiKlwiLCBOb25lIC0+IFVuaXRcbiAgICAgICAgICB8IFwiX1wiLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIF8gLT4gTm9uZSkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBUaHUgTWFyIDIxIDA5OjUwOjQyIEdNVCAyMDE5XG4gICBPQ2FtbCB3YXM6XG4gICBjb21taXQgNTVjOWJhNDY2MzYyZjMwM2ViNGQ1ZWQ1MTFmNmZkYTE0Mjg3OTEzNyAoSEVBRCAtPiA0LjA4LCBvcmlnaW4vNC4wOClcbiAgICAgQXV0aG9yOiBOaWNvbMOhcyBPamVkYSBCw6RyIDxuLm9qZS5iYXJAZ21haWwuY29tPlxuICAgICBEYXRlOiAgIFR1ZSBNYXIgMTkgMDg6MTE6MDIgMjAxOSArMDEwMFxuXG4gICAgICAgICBNZXJnZSBwdWxsIHJlcXVlc3QgIzg1MjEgZnJvbSBub2piL2ZpeF91bml4X3Rlc3RzXzQwOFxuXG4gICAgICAgICBBY3R1YWxseSBydW4gYWxsIGxpYi11bml4IHRlc3RzIFs0LjA4XVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI1XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI1XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MDlcbm1vZHVsZSBUbyA9IEFzdF80MDhcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X3R5cCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cCAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXAgPVxuIGZ1biB4IC0+IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfcGF0IDogQXN0XzQwOS5QYXJzZXRyZWUucGF0IC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdCA9XG4gZnVuIHggLT4gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfZXhwciA6IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwciA9XG4gZnVuIHggLT4gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDguUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA5LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA5LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA4LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA4LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MDguUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDguUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDguQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDguQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA4LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDguQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA4LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDguQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDguQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDkuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA4LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MDhcbm1vZHVsZSBUbyA9IEFzdF80MDlcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X3R5cCA6IEFzdF80MDguUGFyc2V0cmVlLnR5cCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXAgPVxuIGZ1biB4IC0+IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfcGF0IDogQXN0XzQwOC5QYXJzZXRyZWUucGF0IC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdCA9XG4gZnVuIHggLT4gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfZXhwciA6IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwciA9XG4gZnVuIHggLT4gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDguUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA4LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA4LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA5LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA5LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDkuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDguQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDkuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDguQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA4LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDguQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBXZWQgQXByIDE4IDEwOjMzOjI5IEJTVCAyMDE4XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCBjMGJkNmEyN2UxMzg5MTE1NjBmNDNkYzc1ZDVmZGUyYWRlNGQ2Y2ZlIChIRUFELCB0YWc6IDQuMDcuMCtiZXRhMilcbiAgICAgQXV0aG9yOiBEYW1pZW4gRG9saWdleiA8ZGFtaWVuLmRvbGlnZXpAaW5yaWEuZnI+XG4gICAgIERhdGU6ICAgVHVlIEFwciAxMCAxNDo1MDo0OCAyMDE4ICswMjAwXG5cbiAgICAgICAgIGNoYW5nZSBWRVJTSU9OIGZvciA0LjA3LjArYmV0YTJcbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjNcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjNcIlxuZW5kXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDhcbm1vZHVsZSBUbyA9IEFzdF80MDdcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wOFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2xvYyA9IF87XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAgKCBwZGlyX25hbWUuTG9jYXRpb24udHh0LFxuICAgICAgICAgIG1hdGNoIHBkaXJfYXJnIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgYXJnIClcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgRnJvbS5QYXJzZXRyZWUucGRpcmFfbG9jID0gX3BkaXJhX2xvYyB9IC0+XG4gIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzY1xuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIuRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjIHdpdGhcbiAgICAgIHwgUG1vZF9pZGVudCBsaWQgLT5cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkLFxuICAgICAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEgKVxuICAgICAgfCBQbW9kX3N0cnVjdHVyZSBfIHwgUG1vZF9mdW5jdG9yIF8gfCBQbW9kX2FwcGx5IF8gfCBQbW9kX2NvbnN0cmFpbnQgX1xuICAgICAgfCBQbW9kX3VucGFjayBfIHwgUG1vZF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2MgXCJjb21wbGV4IG9wZW5cIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG9wIHsgbGV0XzsgYW5kcyA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsZXRfLnBib3Bfb3AubG9jIFwibGV0IG9wZXJhdG9yc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwcmZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMsXG4gICAgICAgICAgY29weV9ib29sIHgxLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHBvZl9kZXNjIHdpdGhcbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfbG9jID0gXztcbiAgICAgfSAtPlxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZSwgY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZClcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uXG4gICAgICAgIChsZXQgZSA9XG4gICAgICAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLkZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgZS5wZXh0X2F0dHJpYnV0ZXMgQCBjb3B5X2F0dHJpYnV0ZXMgeDAucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICB9KVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+IChcbiAgICAgIG1hdGNoIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIuRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjIHdpdGhcbiAgICAgIHwgUG1vZF9pZGVudCBsaWQgLT5cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsaWQ7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9XG4gICAgICAgICAgICAgICAgY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgIH1cbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxIClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIGxldCB4MF9sb2MgPVxuICAgICAgICBtYXRjaCB4MCB3aXRoXG4gICAgICAgIHwgW10gLT4gTG9jYXRpb24ubm9uZVxuICAgICAgICB8IHsgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jOyBfIH0gOjogXyAtPiBwdHlwZV9sb2NcbiAgICAgIGluXG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDBfbG9jIFwidHlwZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uXG4gICAgICAgIChsZXQgZSA9XG4gICAgICAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLkZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgZS5wZXh0X2F0dHJpYnV0ZXMgQCBjb3B5X2F0dHJpYnV0ZXMgeDAucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICB9KVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5wbXNfbG9jIFwibW9kdWxlIHN1YnN0aXR1dGlvbiBpbiBzaWduYXR1cmVzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICBsZXQgeDEgPVxuICAgIG1hdGNoIHgwLnR4dCB3aXRoXG4gICAgfCBcIm9jYW1sLmVycm9yXCIgfCBcImVycm9yXCIgLT4gKFxuICAgICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICAgIHwgUFN0ciAoaGQgOjogdGwpIC0+IEZyb20uUGFyc2V0cmVlLlBTdHIgKGhkIDo6IGhkIDo6IHRsKVxuICAgICAgICB8IF8gLT4geDEpXG4gICAgfCBfIC0+IHgxXG4gIGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbigqIGFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gICBmdW5cbiAgICAgeyBGcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHB0eWV4bl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBwdHlleG5fYXR0cmlidXRlcyB9XG4gICAgICAtPlxuICAgICB7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IChjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2MpO1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9XG4gICAgICAgICAoY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzKVxuICAgICB9KilcbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDhcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfbmFtZSA9XG4gICAgICAgICAgICB7IExvY2F0aW9uLnR4dCA9IHgwOyBMb2NhdGlvbi5sb2MgPSBMb2NhdGlvbi5ub25lIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfYXJnID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDE7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvblxuICAgID1cbiAgbGV0IHdyYXAgcGRpcmFfZGVzYyA9XG4gICAgU29tZSB7IFRvLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBUby5QYXJzZXRyZWUucGRpcmFfbG9jID0gTG9jYXRpb24ubm9uZSB9XG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IE5vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKSB8PiB3cmFwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSk7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfZGVzYyA9XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2Jvb2wgeDIsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyB4MTtcbiAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPSBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfZGVzYyA9XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgyKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyB4MTtcbiAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPSBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MDtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIHgxO1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDA7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXRhdDtcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICB7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgIH0gLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZCk7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHBvcGVuX2xvYztcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQpIChiIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQpIC0+XG4gICAgICAgIGNvbXBhcmUgYS5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSBiLnBjZl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzdHJfZmllbGRzXG4gIGluXG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIGxldCBhdGF0LCBhdCA9XG4gICAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IHsgTG9jYXRpb24udHh0ID0gXCJvY2FtbC5kZXByZWNhdGVkXCIgfCBcImRlcHJlY2F0ZWRcIjsgXyB9LCBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgICAgIHgwLnBleHRfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIGxldCB4MCA9IHsgeDAgd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdCB9IGluXG5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICBsZXQgZmllbGRzID1cbiAgICBMaXN0LnNvcnRcbiAgICAgIChmdW4gKGEgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKVxuICAgICAgICAgICAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQpIC0+XG4gICAgICAgIGNvbXBhcmUgYS5wY3RmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY3RmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0pXG4gICAgICBwY3NpZ19maWVsZHNcbiAgaW5cblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IF8gOjogdGwpIC0+IEZyb20uUGFyc2V0cmVlLlBTdHIgKGhkIDo6IHRsKVxuICAgICAgICB8IF8gLT4geDEpXG4gICAgfCBfIC0+IHgxXG4gIGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfbG9jID0gcHR5ZXh0X3BhdGguTG9jYXRpb24ubG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gTW9uIE9jdCAgMiAxMToyNTo1NyBDRVNUIDIwMTdcbiAgIE9DYW1sIHRydW5rIHdhczpcbiAgICAgY29tbWl0IDY1OTQwYTJjNmJlNDNjNDJmNzVjNmM2YjI1NTk3NGY3ZTZkZTAzY2EgKEhFQUQgLT4gNC4wNiwgb3JpZ2luLzQuMDYpXG4gICAgIEF1dGhvcjogQ2hyaXN0b3BoZSBSYWZmYWxsaSA8Y2hyaXN0b3BoZUByYWZmYWxsaS5ldT5cbiAgICAgRGF0ZTogICBTdW4gT2N0IDEgMTg6Mjc6MDcgMjAxNyArMDIwMFxuXG4gICAgICAgICBmaXhlZCBwb3NpdGlvbiBvZiBsYXN0IG9wdGlvbmFsIGxhc3Qgc2VtaWNvbHVtbiBpbiBzZXF1ZW5jZSAoIzEzODcpXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIyXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIyXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwN1xubW9kdWxlIFRvID0gQXN0XzQwNlxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA2XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHggLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4KVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAob3ZmLCBsb2MsIGNlKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsIGNvcHlfY2xhc3NfZXhwciBjZSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAob3ZmLCBsb2MsIGN0eSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYyxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgY3R5IClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA2XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICAgICAgICAgICAgICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IF8gLT5cbiAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBMb2NhdGlvbi5ub25lIFwiaW5oZXJpdGFuY2UgaW4gb2JqZWN0IHR5cGVcIilcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MC50eHQsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgZXhwcmVzc2lvblwiXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IF87IF8gfSwgeDApIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCB4MDsgbG9jIH0sIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IHgwOyBsb2MgfSwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh7IGxvYzsgXyB9LCBfeDApIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwidHlwZSBzdWJzdGl0dXRpb24gaW5zaWRlIGEgc3VibW9kdWxlXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyBsb2M7IF8gfSwgX3gxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW5zaWRlIGEgc3VibW9kdWxlXCJcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoXywgbG9jLCBfKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYy5Mb2NhdGlvbi5sb2MgXCJtb2R1bGUgb3BlbiBpbiBjbGFzcyB0eXBlXCJcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDVcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggeyB0eHQgPSBjb3B5X2xhYmVsIHgwOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHgwLkZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWUsXG4gICAgICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwIClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDVcbm1vZHVsZSBUbyA9IEFzdF80MDRcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxLkZyb20uQXN0dHlwZXMudHh0KVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MC5Gcm9tLkFzdHR5cGVzLnR4dCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IHguRnJvbS5Bc3R0eXBlcy50eHQpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIHgwLkZyb20uQXN0dHlwZXMudHh0LFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDA1XG5cbmxldCBub2xvYyB4ID0geyBMb2NhdGlvbi50eHQgPSB4OyBsb2MgPSBMb2NhdGlvbi5ub25lIH1cblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIG5vbG9jIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAobm9sb2MgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIChub2xvYyB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IG5vbG9jIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBub2xvYyB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIG5vbG9jIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxOVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDRcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGZyb21fbG9jIHsgTG9jYXRpb24udHh0ID0gXzsgbG9jIH0gPSBsb2NcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImxvY2FsIGV4Y2VwdGlvbnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfbG9jIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBvcGVuIGluIHBhdHRlcm5zXCJcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDRcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiBBdXhpbGlhcnkgYS5zLnQuIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBsYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIChsYWJlbCA9IFwiXCIpXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgKGxhYmVsID0gXCI/bFwiKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIGxhYiBtdXN0IHN0YXJ0IHdpdGggJz8nLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAobGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuXG4gICAgTm90ZTogd2hlbiB1c2VkIHVuZGVyIFBzdHJfcHJpbWl0aXZlLCBwcmltIGNhbm5vdCBiZSBlbXB0eVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvcmVfdHlwZSBsaXN0O1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKGFyZ3MgPSBbXSwgcmVzID0gU29tZSBUMClcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDApXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb3JlX3R5cGUgbGlzdCAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBsYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIChsYWJlbCA9IFwiXCIpXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICAobGFiZWwgPSBcImxcIilcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwibFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAobGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2YgaW50XG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDE2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE1XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwM1xubW9kdWxlIFRvID0gQXN0XzQwMlxuXG5sZXQgaW5qZWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgZCA9XG4gIGxldCBvcGVuIFRvIGluXG4gIGxldCBvcGVuIFBhcnNldHJlZSBpblxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCBfIC0+XG4gICAgICBsZXQgbG9jID0geyBkLnB0eXBfbG9jIHdpdGggTG9jYXRpb24ubG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBsZXQgdHh0ID0gTG9uZ2lkZW50Lkxkb3QgKExvbmdpZGVudC5MaWRlbnQgXCIqcHJlZGVmKlwiLCBcIm9wdGlvblwiKSBpblxuICAgICAgbGV0IGlkZW50ID0geyBMb2NhdGlvbi50eHQ7IGxvYyB9IGluXG4gICAgICB7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZGVudCwgWyBkIF0pO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG4gIHwgXyAtPiBkXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IGxvYyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInVucmVhY2hhYmxlIHBhdHRlcm5zXCJcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfbG9jIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IGxvYyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCBsb2MgeDAsIGNvcHlfY29uc3RhbnQgbG9jIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIChmcm9tX2xvYyB4MCkgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgbG9jIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyBfeDAgLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcInNpZ25hdHVyZXMgaW4gYXR0cmlidXRlXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZSAodHlwZV9kZWNsYXJhdGlvbnMgeDAgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgaW5qZWN0X3ByZWRlZl9vcHRpb24geDAgKGNvcHlfY29yZV90eXBlIHgxKSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIChmcm9tX2xvYyBwZXh0X25hbWUpIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgbG9jIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyAoZnJvbV9sb2MgcGNkX25hbWUpIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgbGlzdCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT4gTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJpbmxpbmUgcmVjb3Jkc1wiXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBcIlwiXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gXCI/XCIgXiB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgbG9jIDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uQXN0dHlwZXMuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQgKGludF9vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ2wnIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludDMyIChJbnQzMi5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ0wnIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludDY0IChJbnQ2NC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ24nIC0+IFRvLkFzdHR5cGVzLkNvbnN0X25hdGl2ZWludCAoTmF0aXZlaW50Lm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJjdXN0b20gaW50ZWdlciBsaXRlcmFsc1wiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+IFRvLkFzdHR5cGVzLkNvbnN0X3N0cmluZyAoeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfZmxvYXQgeDBcbiAgICAgIHwgU29tZSBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJjdXN0b20gZmxvYXQgbGl0ZXJhbHNcIilcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbnMgcmVjZmxhZyB0eXBlcyA9XG4gIG1hdGNoIChyZWNmbGFnLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gdHlwZXMpIHdpdGhcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSwgdHlwZXMgLT4gdHlwZXNcbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgW10gLT4gW11cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeCA6OiB4cyAtPlxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCJfbm9uZV9cIjtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAtMTtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9XG4gICAgICAgICh7IFRvLkFzdHR5cGVzLnR4dCA9IFwibm9ucmVjXCI7IGxvYyB9LCBUby5QYXJzZXRyZWUuUFN0ciBbXSlcbiAgICAgICAgOjogeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIHsgeCB3aXRoIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIH0gOjogeHNcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgX3gxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwMlxubW9kdWxlIFRvID0gQXN0XzQwM1xuXG5sZXQgZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHR5cCA9XG4gIGxldCBvcGVuIEZyb20gaW5cbiAgbGV0IG9wZW4gTG9uZ2lkZW50IGluXG4gIG1hdGNoIChsYWJlbCwgdHlwLlBhcnNldHJlZS5wdHlwX2Rlc2MpIHdpdGhcbiAgfCAoIFRvLkFzdHR5cGVzLk9wdGlvbmFsIF8sXG4gICAgICBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoeyBMb2NhdGlvbi50eHQgPSBMZG90IChMaWRlbnQgXCIqcHJlZGVmKlwiLCBcIm9wdGlvblwiKTsgXyB9LCBbIGQgXSkgKSAtPlxuICAgICAgZFxuICB8IF8gLT4gdHlwXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIGxldCBsYWJlbCA9IGNvcHlfYXJnX2xhYmVsIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoIGxhYmVsLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIChleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgeDAgLT5cbiAgICAgIGxldCByZWNmbGFnLCB0eXBlcyA9IHR5cGVfZGVjbGFyYXRpb25zIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlIChyZWNmbGFnLCB0eXBlcylcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MCksXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID1cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgcGNkX2FyZ3MpO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gZnVuIHggLT5cbiAgaWYgeCA8PiBcIlwiIHRoZW5cbiAgICBpZiB4LlswXSA9ICc/JyB0aGVuXG4gICAgICBUby5Bc3R0eXBlcy5PcHRpb25hbCAoU3RyaW5nLnN1YiB4IDEgKFN0cmluZy5sZW5ndGggeCAtIDEpKVxuICAgIGVsc2UgVG8uQXN0dHlwZXMuTGFiZWxsZWQgeFxuICBlbHNlIFRvLkFzdHR5cGVzLk5vbGFiZWxcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLkFzdHR5cGVzLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfZmxvYXQgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQzMiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgeDAsIFNvbWUgJ2wnKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50NjQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHgwLCBTb21lICdMJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X25hdGl2ZWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHgwLCBTb21lICduJylcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbnMgdHlwZXMgPVxuICBsZXQgaXNfbm9ucmVjIChhdHRyLCBfKSA9IGF0dHIuTG9jYXRpb24udHh0ID0gXCJub25yZWNcIiBpblxuICBtYXRjaCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gdHlwZXMgd2l0aFxuICB8IHggOjogeHMgd2hlbiBMaXN0LmV4aXN0cyBpc19ub25yZWMgeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyAtPlxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICBMaXN0LmZpbHRlciAoZnVuIHggLT4gbm90IChpc19ub25yZWMgeCkpIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICAoVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzKVxuICB8IHR5cGVzIC0+IChUby5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzKVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaW50IChzdHJpbmdfb2ZfaW50IHgwLCBOb25lKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibGV0IGlzX2tleXdvcmQgPSBmdW5jdGlvblxuICB8IFwiYW5kXCIgLT4gdHJ1ZVxuICB8IFwiYXNcIiAtPiB0cnVlXG4gIHwgXCJhc3NlcnRcIiAtPiB0cnVlXG4gIHwgXCJiZWdpblwiIC0+IHRydWVcbiAgfCBcImNsYXNzXCIgLT4gdHJ1ZVxuICB8IFwiY29uc3RyYWludFwiIC0+IHRydWVcbiAgfCBcImRvXCIgLT4gdHJ1ZVxuICB8IFwiZG9uZVwiIC0+IHRydWVcbiAgfCBcImRvd250b1wiIC0+IHRydWVcbiAgfCBcImVsc2VcIiAtPiB0cnVlXG4gIHwgXCJlbmRcIiAtPiB0cnVlXG4gIHwgXCJleGNlcHRpb25cIiAtPiB0cnVlXG4gIHwgXCJleHRlcm5hbFwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZm9yXCIgLT4gdHJ1ZVxuICB8IFwiZnVuXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3Rpb25cIiAtPiB0cnVlXG4gIHwgXCJmdW5jdG9yXCIgLT4gdHJ1ZVxuICB8IFwiaWZcIiAtPiB0cnVlXG4gIHwgXCJpblwiIC0+IHRydWVcbiAgfCBcImluY2x1ZGVcIiAtPiB0cnVlXG4gIHwgXCJpbmhlcml0XCIgLT4gdHJ1ZVxuICB8IFwiaW5pdGlhbGl6ZXJcIiAtPiB0cnVlXG4gIHwgXCJsYXp5XCIgLT4gdHJ1ZVxuICB8IFwibGV0XCIgLT4gdHJ1ZVxuICB8IFwibWF0Y2hcIiAtPiB0cnVlXG4gIHwgXCJtZXRob2RcIiAtPiB0cnVlXG4gIHwgXCJtb2R1bGVcIiAtPiB0cnVlXG4gIHwgXCJtdXRhYmxlXCIgLT4gdHJ1ZVxuICB8IFwibmV3XCIgLT4gdHJ1ZVxuICB8IFwibm9ucmVjXCIgLT4gdHJ1ZVxuICB8IFwib2JqZWN0XCIgLT4gdHJ1ZVxuICB8IFwib2ZcIiAtPiB0cnVlXG4gIHwgXCJvcGVuXCIgLT4gdHJ1ZVxuICB8IFwib3JcIiAtPiB0cnVlXG4gICgqIHwgXCJwYXJzZXJcIiAtPiB0cnVlICopXG4gIHwgXCJwcml2YXRlXCIgLT4gdHJ1ZVxuICB8IFwicmVjXCIgLT4gdHJ1ZVxuICB8IFwic2lnXCIgLT4gdHJ1ZVxuICB8IFwic3RydWN0XCIgLT4gdHJ1ZVxuICB8IFwidGhlblwiIC0+IHRydWVcbiAgfCBcInRvXCIgLT4gdHJ1ZVxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcInRyeVwiIC0+IHRydWVcbiAgfCBcInR5cGVcIiAtPiB0cnVlXG4gIHwgXCJ2YWxcIiAtPiB0cnVlXG4gIHwgXCJ2aXJ0dWFsXCIgLT4gdHJ1ZVxuICB8IFwid2hlblwiIC0+IHRydWVcbiAgfCBcIndoaWxlXCIgLT4gdHJ1ZVxuICB8IFwid2l0aFwiIC0+IHRydWVcbiAgfCBcImxvclwiIC0+IHRydWVcbiAgfCBcImx4b3JcIiAtPiB0cnVlXG4gIHwgXCJtb2RcIiAtPiB0cnVlXG4gIHwgXCJsYW5kXCIgLT4gdHJ1ZVxuICB8IFwibHNsXCIgLT4gdHJ1ZVxuICB8IFwibHNyXCIgLT4gdHJ1ZVxuICB8IFwiYXNyXCIgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVyc1xuICAgIG9wZW4gUHJpbnRmICQqKVxuXG4oKiBDb3B5IG9mIE9DYW1sIHBhcnNldHJlZXMgKilcbigqJFxuICBmb3JlYWNoX3ZlcnNpb24gKGZ1biBzdWZmaXggXyAtPlxuICAgICAgcHJpbnRmIFwibW9kdWxlIEFzdF8lcyA9IEFzdF8lc1xcblwiIHN1ZmZpeCBzdWZmaXgpXG4qKVxubW9kdWxlIEFzdF80MDIgPSBBc3RfNDAyXG5tb2R1bGUgQXN0XzQwMyA9IEFzdF80MDNcbm1vZHVsZSBBc3RfNDA0ID0gQXN0XzQwNFxubW9kdWxlIEFzdF80MDUgPSBBc3RfNDA1XG5tb2R1bGUgQXN0XzQwNiA9IEFzdF80MDZcbm1vZHVsZSBBc3RfNDA3ID0gQXN0XzQwN1xubW9kdWxlIEFzdF80MDggPSBBc3RfNDA4XG5tb2R1bGUgQXN0XzQwOSA9IEFzdF80MDlcbm1vZHVsZSBBc3RfNDEwID0gQXN0XzQxMFxubW9kdWxlIEFzdF80MTEgPSBBc3RfNDExXG5tb2R1bGUgQXN0XzQxMiA9IEFzdF80MTJcbm1vZHVsZSBBc3RfNDEzID0gQXN0XzQxM1xubW9kdWxlIEFzdF80MTQgPSBBc3RfNDE0XG5tb2R1bGUgQXN0XzUwMCA9IEFzdF81MDBcbm1vZHVsZSBBc3RfNTAxID0gQXN0XzUwMVxuKCokKilcblxuKCogTWFudWFsIG1pZ3JhdGlvbiBiZXR3ZWVuIHZlcnNpb25zICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biB4IHkgLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBNaWdyYXRlXyVzXyVzID0gTWlncmF0ZV8lc18lc1xcblwiIHggeSB4IHk7XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB5IHggeSB4KVxuKilcbm1vZHVsZSBNaWdyYXRlXzQwMl80MDMgPSBNaWdyYXRlXzQwMl80MDNcbm1vZHVsZSBNaWdyYXRlXzQwM180MDIgPSBNaWdyYXRlXzQwM180MDJcbm1vZHVsZSBNaWdyYXRlXzQwM180MDQgPSBNaWdyYXRlXzQwM180MDRcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDMgPSBNaWdyYXRlXzQwNF80MDNcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDUgPSBNaWdyYXRlXzQwNF80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDQgPSBNaWdyYXRlXzQwNV80MDRcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDYgPSBNaWdyYXRlXzQwNV80MDZcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDUgPSBNaWdyYXRlXzQwNl80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDcgPSBNaWdyYXRlXzQwNl80MDdcbm1vZHVsZSBNaWdyYXRlXzQwN180MDYgPSBNaWdyYXRlXzQwN180MDZcbm1vZHVsZSBNaWdyYXRlXzQwN180MDggPSBNaWdyYXRlXzQwN180MDhcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDcgPSBNaWdyYXRlXzQwOF80MDdcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDkgPSBNaWdyYXRlXzQwOF80MDlcbm1vZHVsZSBNaWdyYXRlXzQwOV80MDggPSBNaWdyYXRlXzQwOV80MDhcbm1vZHVsZSBNaWdyYXRlXzQwOV80MTAgPSBNaWdyYXRlXzQwOV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMF80MDkgPSBNaWdyYXRlXzQxMF80MDlcbm1vZHVsZSBNaWdyYXRlXzQxMF80MTEgPSBNaWdyYXRlXzQxMF80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTAgPSBNaWdyYXRlXzQxMV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTIgPSBNaWdyYXRlXzQxMV80MTJcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTEgPSBNaWdyYXRlXzQxMl80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTMgPSBNaWdyYXRlXzQxMl80MTNcbm1vZHVsZSBNaWdyYXRlXzQxM180MTIgPSBNaWdyYXRlXzQxM180MTJcbm1vZHVsZSBNaWdyYXRlXzQxM180MTQgPSBNaWdyYXRlXzQxM180MTRcbm1vZHVsZSBNaWdyYXRlXzQxNF80MTMgPSBNaWdyYXRlXzQxNF80MTNcbm1vZHVsZSBNaWdyYXRlXzQxNF81MDAgPSBNaWdyYXRlXzQxNF81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMF80MTQgPSBNaWdyYXRlXzUwMF80MTRcbm1vZHVsZSBNaWdyYXRlXzUwMF81MDEgPSBNaWdyYXRlXzUwMF81MDFcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDAgPSBNaWdyYXRlXzUwMV81MDBcbigqJCopXG5cbigqIENvbXBpbGVyIG1vZHVsZXMgKilcbm1vZHVsZSBBc3RfbWV0YWRhdGEgPSBBc3RfbWV0YWRhdGFcbm1vZHVsZSBDb25maWcgPSBDb25maWdcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBQYXJzZSA9IFBhcnNlXG5tb2R1bGUgUHByaW50YXN0ID0gUHByaW50YXN0XG5cbmxldCBpbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKSA9XG4gICgqSUZfQVRfTEVBU1QgNDA4IE9jYW1sX2NvbW1vbi5Db21wbWlzYy5yZWFkX2NsZmxhZ3NfZnJvbV9lbnYgKCkgKilcbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ICgpICopXG4oKiogQWRqdXN0IHRoZSByZXBvcnRpbmcgc3R5bGUgb2YgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBPQ0FNTF9DT0xPUiBhbmQgT0NBTUxfRVJST1JfU1RZTEUuICopXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRPRE86IHJlbW92ZSB0aGlzIG9wZW4gKilcbm9wZW4gU3RkbGliMFxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxub3BlbiBBc3RsaWIuQXN0XzUwMFxuXG5bQEBAd2FybmluZyBcIi05XCJdXG5cbm9wZW4gQXN0dHlwZXNcbm9wZW4gUGFyc2V0cmVlXG5cbnR5cGUgJ2Egd2l0aF9sb2MgPSAnYSBMb2NhdGlvbi5sb2NcbnR5cGUgbG9jID0gTG9jYXRpb24udFxudHlwZSBsaWQgPSBMb25naWRlbnQudCB3aXRoX2xvY1xudHlwZSBzdHIgPSBzdHJpbmcgd2l0aF9sb2NcbnR5cGUgc3RyX29wdCA9IHN0cmluZyBvcHRpb24gd2l0aF9sb2NcbnR5cGUgYXR0cnMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5sZXQgZGVmYXVsdF9sb2MgPSByZWYgTG9jYXRpb24ubm9uZVxuXG50eXBlIHJlZl9hbmRfdmFsdWUgPSBSIDogJ2EgcmVmICogJ2EgLT4gcmVmX2FuZF92YWx1ZVxuXG5sZXQgcHJvdGVjdF9yZWYgPVxuICBsZXQgc2V0X3JlZiAoUiAociwgdikpID0gciA6PSB2IGluXG4gIGZ1biByZWYgZiAtPlxuICAgIGxldCAoUiAociwgXykpID0gcmVmIGluXG4gICAgbGV0IGJhY2t1cCA9IFIgKHIsICFyKSBpblxuICAgIHNldF9yZWYgcmVmO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgICBzZXRfcmVmIGJhY2t1cDtcbiAgICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfZGVmYXVsdF9sb2MgbCBmID0gcHJvdGVjdF9yZWYgKFIgKGRlZmF1bHRfbG9jLCBsKSkgZlxuXG5tb2R1bGUgQ29uc3QgPSBzdHJ1Y3RcbiAgbGV0IGludGVnZXIgP3N1ZmZpeCBpID0gUGNvbnN0X2ludGVnZXIgKGksIHN1ZmZpeClcbiAgbGV0IGludCA/c3VmZml4IGkgPSBpbnRlZ2VyID9zdWZmaXggKEludC50b19zdHJpbmcgaSlcbiAgbGV0IGludDMyID8oc3VmZml4ID0gJ2wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQzMi50b19zdHJpbmcgaSlcbiAgbGV0IGludDY0ID8oc3VmZml4ID0gJ0wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQ2NC50b19zdHJpbmcgaSlcbiAgbGV0IG5hdGl2ZWludCA/KHN1ZmZpeCA9ICduJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxuICBsZXQgZmxvYXQgP3N1ZmZpeCBmID0gUGNvbnN0X2Zsb2F0IChmLCBzdWZmaXgpXG4gIGxldCBjaGFyIGMgPSBQY29uc3RfY2hhciBjXG5cbiAgbGV0IHN0cmluZyA/cXVvdGF0aW9uX2RlbGltaXRlciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgcyA9XG4gICAgUGNvbnN0X3N0cmluZyAocywgbG9jLCBxdW90YXRpb25fZGVsaW1pdGVyKVxuZW5kXG5cbm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgbmFtZSBwYXlsb2FkID1cbiAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgVHlwID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2MgPSBkO1xuICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGQucHR5cF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHR5cF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdmFyIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF90dXBsZSBhKVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NvbnN0ciAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX29iamVjdCAoYSwgYikpXG4gIGxldCBjbGFzc18gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfY2xhc3MgKGEsIGIpKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfYWxpYXMgKGEsIGIpKVxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9wb2x5IChhLCBiKSlcbiAgbGV0IHBhY2thZ2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcGFja2FnZSAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2V4dGVuc2lvbiBhKVxuXG4gIGxldCBmb3JjZV9wb2x5IHQgPVxuICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gdCB8IF8gLT4gcG9seSB+bG9jOnQucHR5cF9sb2MgW10gdFxuICAoKiAtPiBnaG9zdD8gKilcblxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gICAgaW5cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuZW5kXG5cbm1vZHVsZSBQYXQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYyA9IGQ7XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZC5wcGF0X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBhbnkgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQcGF0X2FueVxuICBsZXQgdmFyID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF92YXIgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2FsaWFzIChhLCBiKSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdGFudCBhKVxuICBsZXQgaW50ZXJ2YWwgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R1cGxlIGEpXG5cbiAgbGV0IGNvbnN0cnVjdCA/bG9jID9hdHRycyBhIGIgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cnVjdCAoYSwgT3B0aW9uLm1hcCAoZnVuIGIgLT4gKFtdLCBiKSkgYikpXG5cbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hcnJheSBhKVxuICBsZXQgb3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29yIChhLCBiKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgdHlwZV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R5cGUgYSlcbiAgbGV0IGxhenlfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9sYXp5IGEpXG4gIGxldCB1bnBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3VucGFjayBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfb3BlbiAoYSwgYikpXG4gIGxldCBleGNlcHRpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9leGNlcHRpb24gYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIEV4cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjID0gZDtcbiAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBkLnBleHBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9pZGVudCBhKVxuICBsZXQgY29uc3RhbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0YW50IGEpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0IChhLCBiLCBjKSlcbiAgbGV0IGZ1bl8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBmdW5jdGlvbl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1bmN0aW9uIGEpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcHBseSAoYSwgYikpXG4gIGxldCBtYXRjaF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbWF0Y2ggKGEsIGIpKVxuICBsZXQgdHJ5XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF90cnkgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3R1cGxlIGEpXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RydWN0IChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGZpZWxkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2ZpZWxkIChhLCBiKSlcbiAgbGV0IHNldGZpZWxkID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpKVxuICBsZXQgYXJyYXkgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2FycmF5IGEpXG4gIGxldCBpZnRoZW5lbHNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykpXG4gIGxldCBzZXF1ZW5jZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXF1ZW5jZSAoYSwgYikpXG4gIGxldCB3aGlsZV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfd2hpbGUgKGEsIGIpKVxuICBsZXQgZm9yXyA/bG9jID9hdHRycyBhIGIgYyBkIGUgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBjb2VyY2UgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb2VyY2UgKGEsIGIsIGMpKVxuICBsZXQgc2VuZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZW5kIChhLCBiKSlcbiAgbGV0IG5ld18gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX25ldyBhKVxuICBsZXQgc2V0aW5zdHZhciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSlcbiAgbGV0IG92ZXJyaWRlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vdmVycmlkZSBhKVxuICBsZXQgbGV0bW9kdWxlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSlcbiAgbGV0IGxldGV4Y2VwdGlvbiA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpKVxuICBsZXQgYXNzZXJ0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXNzZXJ0IGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGF6eSBhKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wb2x5IChhLCBiKSlcbiAgbGV0IG9iamVjdF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29iamVjdCBhKVxuICBsZXQgbmV3dHlwZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXd0eXBlIChhLCBiKSlcbiAgbGV0IHBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3BhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29wZW4gKGEsIGIpKVxuXG4gIGxldCBsZXRvcCA/bG9jID9hdHRycyBsZXRfIGFuZHMgYm9keSA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0pXG5cbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZXh0ZW5zaW9uIGEpXG4gIGxldCB1bnJlYWNoYWJsZSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFBleHBfdW5yZWFjaGFibGVcbiAgbGV0IGNhc2UgbGhzID9ndWFyZCByaHMgPSB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cblxuICBsZXQgYmluZGluZ19vcCBvcCBwYXQgZXhwIGxvYyA9XG4gICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNdHkgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcG10eV9kZXNjID0gZDsgcG10eV9sb2MgPSBsb2M7IHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBkLnBtdHlfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9pZGVudCBhKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2FsaWFzIGEpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3NpZ25hdHVyZSBhKVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZnVuY3RvciAoYSwgYikpXG4gIGxldCB3aXRoXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUG10eV93aXRoIChhLCBiKSlcbiAgbGV0IHR5cGVvZl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3R5cGVvZiBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgTW9kID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtb2RfZGVzYyA9IGQ7IHBtb2RfbG9jID0gbG9jOyBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gZC5wbW9kX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfaWRlbnQgeClcbiAgbGV0IHN0cnVjdHVyZSA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2Rfc3RydWN0dXJlIHgpXG4gIGxldCBmdW5jdG9yXyA/bG9jID9hdHRycyBhcmcgYm9keSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2Z1bmN0b3IgKGFyZywgYm9keSkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBtMSBtMiA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2FwcGx5IChtMSwgbTIpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgbSBtdHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9jb25zdHJhaW50IChtLCBtdHkpKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGUgPSBtayA/bG9jID9hdHRycyAoUG1vZF91bnBhY2sgZSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIFNpZyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIGQgPSB7IHBzaWdfZGVzYyA9IGQ7IHBzaWdfbG9jID0gbG9jIH1cbiAgbGV0IHZhbHVlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdmFsdWUgYSlcbiAgbGV0IHR5cGVfID9sb2MgcmVjX2ZsYWcgYSA9IG1rID9sb2MgKFBzaWdfdHlwZSAocmVjX2ZsYWcsIGEpKVxuICBsZXQgdHlwZV9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3R5cGVzdWJzdCBhKVxuICBsZXQgdHlwZV9leHRlbnNpb24gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBleHQgYSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19leGNlcHRpb24gYSlcbiAgbGV0IG1vZHVsZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2R1bGUgYSlcbiAgbGV0IG1vZF9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHN1YnN0IGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19vcGVuIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2luY2x1ZGUgYSlcbiAgbGV0IGNsYXNzXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzIGEpXG4gIGxldCBjbGFzc190eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfY2xhc3NfdHlwZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHNpZ19leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBTdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc3RyX2Rlc2MgPSBkOyBwc3RyX2xvYyA9IGxvYyB9XG4gIGxldCBldmFsID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9ldmFsIChhLCBhdHRycykpXG4gIGxldCB2YWx1ZSA/bG9jIGEgYiA9IG1rID9sb2MgKFBzdHJfdmFsdWUgKGEsIGIpKVxuICBsZXQgcHJpbWl0aXZlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcHJpbWl0aXZlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc3RyX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdWxlIGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9vcGVuIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGluY2x1ZGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfaW5jbHVkZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBDbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY2xfZGVzYyA9IGQ7IHBjbF9sb2MgPSBsb2M7IHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gZC5wY2xfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0ciAoYSwgYikpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2xfc3RydWN0dXJlIGEpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGNsX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2FwcGx5IChhLCBiKSlcbiAgbGV0IGxldF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNsX2xldCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3R5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdHlfZGVzYyA9IGQ7IHBjdHlfbG9jID0gbG9jOyBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gZC5wY3R5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfY29uc3RyIChhLCBiKSlcbiAgbGV0IHNpZ25hdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfc2lnbmF0dXJlIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfZXh0ZW5zaW9uIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0eV9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3RmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdGZfZGVzYyA9IGQ7IHBjdGZfbG9jID0gbG9jOyBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9pbmhlcml0IGEpXG4gIGxldCB2YWxfID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGN0Zl92YWwgKGEsIGIsIGMsIGQpKVxuICBsZXQgbWV0aG9kXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfbWV0aG9kIChhLCBiLCBjLCBkKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9leHRlbnNpb24gYSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQY3RmX2F0dHJpYnV0ZSBhKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBkLnBjdGZfYXR0cmlidXRlcyBAIFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgQ2YgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNmX2Rlc2MgPSBkOyBwY2ZfbG9jID0gbG9jOyBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgaW5oZXJpdF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaGVyaXQgKGEsIGIsIGMpKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfdmFsIChhLCBiLCBjKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX21ldGhvZCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgaW5pdGlhbGl6ZXJfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaXRpYWxpemVyIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2ZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGNmX2F0dHJpYnV0ZSBhKVxuICBsZXQgdmlydHVhbF8gY3QgPSBDZmtfdmlydHVhbCBjdFxuICBsZXQgY29uY3JldGUgbyBlID0gQ2ZrX2NvbmNyZXRlIChvLCBlKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGQucGNmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIFZhbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwcmltID0gW10pIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgcHZhbF90eXBlID0gdHlwO1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdmFsX2xvYyA9IGxvYztcbiAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSB0eXAgPVxuICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cDsgcG1kX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1kX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE1zID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIHN5biA9XG4gICAge1xuICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgcG1zX21hbmlmZXN0ID0gc3luO1xuICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtc19sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNdGQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID90eXAgbmFtZSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgIHBtdGRfdHlwZSA9IHR5cDtcbiAgICAgIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcG10ZF9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBleHByID1cbiAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IGF0dHJzOyBwbWJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgT3BuID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KG92ZXJyaWRlID0gRnJlc2gpIGV4cHIgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxubW9kdWxlIEluY2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG1leHByID1cbiAgICB7IHBpbmNsX21vZCA9IG1leHByOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5lbmRcblxubW9kdWxlIFZiID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBwYXQgZXhwciA9XG4gICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnM7IHB2Yl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBDaSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2aXJ0ID0gQ29uY3JldGUpID8ocGFyYW1zID0gW10pXG4gICAgICBuYW1lIGV4cHIgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICBwY2lfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8oY3N0cnMgPSBbXSlcbiAgICAgID8oa2luZCA9IFB0eXBlX2Fic3RyYWN0KSA/KHByaXYgPSBQdWJsaWMpID9tYW5pZmVzdCBuYW1lID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHB0eXBlX2xvYyA9IGxvYztcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgZmllbGQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhtdXQgPSBJbW11dGFibGUpIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbGRfbXV0YWJsZSA9IG11dDtcbiAgICAgIHBsZF90eXBlID0gdHlwO1xuICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbigqKiBUeXBlIGV4dGVuc2lvbnMgKilcbm1vZHVsZSBUZSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwYXJhbXMgPSBbXSkgPyhwcml2ID0gUHVibGljKVxuICAgICAgcGF0aCBjb25zdHJ1Y3RvcnMgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBta19leGNlcHRpb24gPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgY29uc3RydWN0b3IgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGtpbmQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGRlY2wgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2YXJzID0gW10pXG4gICAgICA/KGFyZ3MgPSBQY3N0cl90dXBsZSBbXSkgP3JlcyBuYW1lID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0gUGV4dF9kZWNsICh2YXJzLCBhcmdzLCByZXMpO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IHJlYmluZCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGxpZCA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfcmViaW5kIGxpZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBDc2lnID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxubW9kdWxlIENzdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rIHNlbGYgZmllbGRzID0geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbmVuZFxuXG4oKiogUm93IGZpZWxkcyAqKVxubW9kdWxlIFJmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHByZl9kZXNjID0gZGVzYzsgcHJmX2xvYyA9IGxvYzsgcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCBjb25zdCB0eXMgPVxuICAgIG1rID9sb2MgP2F0dHJzIChSdGFnIChsYWJlbCwgY29uc3QsIHR5cykpXG5cbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChSaW5oZXJpdCB0eSlcbmVuZFxuXG4oKiogT2JqZWN0IGZpZWxkcyAqKVxubW9kdWxlIE9mID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHBvZl9kZXNjID0gZGVzYzsgcG9mX2xvYyA9IGxvYzsgcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCB0eSA9IG1rID9sb2MgP2F0dHJzIChPdGFnIChsYWJlbCwgdHkpKVxuICBsZXQgaW5oZXJpdF8gP2xvYyB0eSA9IG1rID9sb2MgKE9pbmhlcml0IHR5KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCRUdJTiBvZiBCTEFDSyBNQUdJQyAqKVxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG50eXBlIF8gd2l0bmVzc2VzID0gLi5cblxudHlwZSBfIG1pZ3JhdGlvbiA9IC4uXG50eXBlIF8gbWlncmF0aW9uICs9IFVuZGVmaW5lZCA6IF8gbWlncmF0aW9uXG5cbnR5cGUgJ2EgbWlncmF0aW9uX2luZm8gPSB7XG4gIG11dGFibGUgbmV4dF92ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xuICBtdXRhYmxlIHByZXZpb3VzX3ZlcnNpb24gOiAnYSBtaWdyYXRpb247XG59XG5cbigqKiBBYnN0cmFjdCB2aWV3IG9mIGEgdmVyc2lvbiBvZiBhbiBPQ2FtbCBBc3QgKilcbm1vZHVsZSB0eXBlIEFzdCA9IHNpZ1xuICAoKiQgZm9yZWFjaF9tb2R1bGUgKGZ1biBtIHR5cGVzIC0+XG4gICAgICBwcmludGYgXCIgIG1vZHVsZSAlcyA6IHNpZ1xcblwiIG07XG4gICAgICBMaXN0Lml0ZXIgdHlwZXMgfmY6KHByaW50ZiBcIiAgICB0eXBlICVzXFxuXCIpO1xuICAgICAgcHJpbnRmIFwiICBlbmRcXG5cIlxuICAgIClcbiAgKilcbiAgbW9kdWxlIFBhcnNldHJlZSA6IHNpZ1xuICAgIHR5cGUgc3RydWN0dXJlXG4gICAgdHlwZSBzaWduYXR1cmVcbiAgICB0eXBlIHRvcGxldmVsX3BocmFzZVxuICAgIHR5cGUgY29yZV90eXBlXG4gICAgdHlwZSBleHByZXNzaW9uXG4gICAgdHlwZSBwYXR0ZXJuXG4gICAgdHlwZSBjYXNlXG4gICAgdHlwZSB0eXBlX2RlY2xhcmF0aW9uXG4gICAgdHlwZSB0eXBlX2V4dGVuc2lvblxuICAgIHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgdHlwZSBjbGFzc19leHByXG4gICAgdHlwZSBjbGFzc19maWVsZFxuICAgIHR5cGUgY2xhc3NfdHlwZVxuICAgIHR5cGUgY2xhc3Nfc2lnbmF0dXJlXG4gICAgdHlwZSBjbGFzc190eXBlX2ZpZWxkXG4gICAgdHlwZSBtb2R1bGVfZXhwclxuICAgIHR5cGUgbW9kdWxlX3R5cGVcbiAgICB0eXBlIHNpZ25hdHVyZV9pdGVtXG4gICAgdHlwZSBzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcbigqJCopXG4gIG1vZHVsZSBDb25maWcgOiBzaWdcbiAgICB2YWwgYXN0X2ltcGxfbWFnaWNfbnVtYmVyIDogc3RyaW5nXG4gICAgdmFsIGFzdF9pbnRmX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICBlbmRcbmVuZFxuXG4oKiBTaG9ydGN1dHMgZm9yIHRhbGtpbmcgYWJvdXQgYXN0IHR5cGVzIG91dHNpZGUgb2YgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG50eXBlICdhIF90eXBlcyA9ICdhIGNvbnN0cmFpbnQgJ2FcbiAgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBfO1xcblwiIHMpICopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBfO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IF87XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogXztcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBfO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IF87XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogXztcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBfO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IF87XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogXztcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IF87XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IF87XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogXztcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBfO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IF87XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogXztcbigqJCopXG4gID5cbjs7XG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICBwcmludGYgXCJ0eXBlICdhIGdldF8lcyA9XFxuXCIgcztcbiAgICBwcmludGYgXCIgICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCAlcyA6ICd4OyAuLiA+XFxuXCIgc1xuICApICopXG50eXBlICdhIGdldF9zdHJ1Y3R1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdG9wbGV2ZWxfcGhyYXNlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHRvcGxldmVsX3BocmFzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jb3JlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY29yZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2V4cHJlc3Npb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXhwcmVzc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9wYXR0ZXJuID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHBhdHRlcm4gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2FzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjYXNlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3R5cGVfZGVjbGFyYXRpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9kZWNsYXJhdGlvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2V4dGVuc2lvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0eXBlX2V4dGVuc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZXhwciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19maWVsZCA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3Nfc2lnbmF0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3NpZ25hdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlX2ZpZWxkID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGVfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc2lnbmF0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlX2l0ZW0gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc3RydWN0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlX2l0ZW0gOiAneDsgLi4gPlxuKCokKilcblxubW9kdWxlIHR5cGUgT0NhbWxfdmVyc2lvbiA9IHNpZ1xuICBtb2R1bGUgQXN0IDogQXN0XG4gIHZhbCB2ZXJzaW9uIDogaW50XG4gIHZhbCBzdHJpbmdfdmVyc2lvbiA6IHN0cmluZ1xuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIHZhbCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0bmVzcyhBc3QgOiBBc3QpID1cbnN0cnVjdFxuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIGxldCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvID1cbiAgICB7IG5leHRfdmVyc2lvbiA9IFVuZGVmaW5lZDsgcHJldmlvdXNfdmVyc2lvbiA9IFVuZGVmaW5lZCB9XG5lbmRcblxudHlwZSAndHlwZXMgb2NhbWxfdmVyc2lvbiA9XG4gIChtb2R1bGUgT0NhbWxfdmVyc2lvblxuICAgICgqJCBsZXQgc2VwID0gd2l0aF90aGVuX2FuZCAoKSBpblxuICAgICAgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICAgICAgcHJpbnRmIFwiICAgICV0IHR5cGUgQXN0LiVzLiVzID0gJ3R5cGVzIGdldF8lc1xcblwiIHNlcCBtIHMgcykgKilcbiAgICB3aXRoIHR5cGUgQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgPSAndHlwZXMgZ2V0X3N0cnVjdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSA9ICd0eXBlcyBnZXRfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gJ3R5cGVzIGdldF90b3BsZXZlbF9waHJhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUgPSAndHlwZXMgZ2V0X2NvcmVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gPSAndHlwZXMgZ2V0X2V4cHJlc3Npb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5wYXR0ZXJuID0gJ3R5cGVzIGdldF9wYXR0ZXJuXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2FzZSA9ICd0eXBlcyBnZXRfY2FzZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSAndHlwZXMgZ2V0X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9ICd0eXBlcyBnZXRfdHlwZV9leHRlbnNpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSAndHlwZXMgZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSAndHlwZXMgZ2V0X2NsYXNzX2V4cHJcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfZmllbGRcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlID0gJ3R5cGVzIGdldF9jbGFzc190eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0gJ3R5cGVzIGdldF9jbGFzc19zaWduYXR1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0gJ3R5cGVzIGdldF9jbGFzc190eXBlX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPSAndHlwZXMgZ2V0X21vZHVsZV9leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPSAndHlwZXMgZ2V0X21vZHVsZV90eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3NpZ25hdHVyZV9pdGVtXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICApXG5cbnR5cGUgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBwcmludGYgXCIgIGNvcHlfJXM6ICdmcm9tIGdldF8lcyAtPiAndG9fIGdldF8lcztcXG5cIiBzIHMgcykgKilcbiAgY29weV9zdHJ1Y3R1cmU6ICdmcm9tIGdldF9zdHJ1Y3R1cmUgLT4gJ3RvXyBnZXRfc3RydWN0dXJlO1xuICBjb3B5X3NpZ25hdHVyZTogJ2Zyb20gZ2V0X3NpZ25hdHVyZSAtPiAndG9fIGdldF9zaWduYXR1cmU7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlOiAnZnJvbSBnZXRfdG9wbGV2ZWxfcGhyYXNlIC0+ICd0b18gZ2V0X3RvcGxldmVsX3BocmFzZTtcbiAgY29weV9jb3JlX3R5cGU6ICdmcm9tIGdldF9jb3JlX3R5cGUgLT4gJ3RvXyBnZXRfY29yZV90eXBlO1xuICBjb3B5X2V4cHJlc3Npb246ICdmcm9tIGdldF9leHByZXNzaW9uIC0+ICd0b18gZ2V0X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybjogJ2Zyb20gZ2V0X3BhdHRlcm4gLT4gJ3RvXyBnZXRfcGF0dGVybjtcbiAgY29weV9jYXNlOiAnZnJvbSBnZXRfY2FzZSAtPiAndG9fIGdldF9jYXNlO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb246ICdmcm9tIGdldF90eXBlX2RlY2xhcmF0aW9uIC0+ICd0b18gZ2V0X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb246ICdmcm9tIGdldF90eXBlX2V4dGVuc2lvbiAtPiAndG9fIGdldF90eXBlX2V4dGVuc2lvbjtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6ICdmcm9tIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ3RvXyBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBjb3B5X2NsYXNzX2V4cHI6ICdmcm9tIGdldF9jbGFzc19leHByIC0+ICd0b18gZ2V0X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQ6ICdmcm9tIGdldF9jbGFzc19maWVsZCAtPiAndG9fIGdldF9jbGFzc19maWVsZDtcbiAgY29weV9jbGFzc190eXBlOiAnZnJvbSBnZXRfY2xhc3NfdHlwZSAtPiAndG9fIGdldF9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZTogJ2Zyb20gZ2V0X2NsYXNzX3NpZ25hdHVyZSAtPiAndG9fIGdldF9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZDogJ2Zyb20gZ2V0X2NsYXNzX3R5cGVfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwcjogJ2Zyb20gZ2V0X21vZHVsZV9leHByIC0+ICd0b18gZ2V0X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlOiAnZnJvbSBnZXRfbW9kdWxlX3R5cGUgLT4gJ3RvXyBnZXRfbW9kdWxlX3R5cGU7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW06ICdmcm9tIGdldF9zaWduYXR1cmVfaXRlbSAtPiAndG9fIGdldF9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbTogJ2Zyb20gZ2V0X3N0cnVjdHVyZV9pdGVtIC0+ICd0b18gZ2V0X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxubGV0IGlkIHggPSB4XG5sZXQgbWlncmF0aW9uX2lkZW50aXR5IDogKCdhLCAnYSkgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgIGNvcHlfJXMgPSBpZDtcXG5cIiBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZSA9IGlkO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSA9IGlkO1xuICBjb3B5X2NvcmVfdHlwZSA9IGlkO1xuICBjb3B5X2V4cHJlc3Npb24gPSBpZDtcbiAgY29weV9wYXR0ZXJuID0gaWQ7XG4gIGNvcHlfY2FzZSA9IGlkO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb24gPSBpZDtcbiAgY29weV90eXBlX2V4dGVuc2lvbiA9IGlkO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGlkO1xuICBjb3B5X2NsYXNzX2V4cHIgPSBpZDtcbiAgY29weV9jbGFzc19maWVsZCA9IGlkO1xuICBjb3B5X2NsYXNzX3R5cGUgPSBpZDtcbiAgY29weV9jbGFzc19zaWduYXR1cmUgPSBpZDtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkID0gaWQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgPSBpZDtcbiAgY29weV9tb2R1bGVfdHlwZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtID0gaWQ7XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gPSBpZDtcbigqJCopXG59XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IG1pZ3JhdGlvbl9jb21wb3NlIChhYiA6ICgnYSwgJ2IpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIChiYyA6ICgnYiwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIDogKCdhLCAnYykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyUtMjFzID0gY29tcG9zZSBiYy5jb3B5XyUtMjFzIGFiLmNvcHlfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgYWIuY29weV90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICBhYi5jb3B5X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgIGFiLmNvcHlfZXhwcmVzc2lvbjtcbiAgY29weV9wYXR0ZXJuICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfcGF0dGVybiAgICAgICAgICAgICAgIGFiLmNvcHlfcGF0dGVybjtcbiAgY29weV9jYXNlICAgICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2FzZSAgICAgICAgICAgICAgICAgIGFiLmNvcHlfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgIGFiLmNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgIGFiLmNvcHlfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gY29tcG9zZSBiYy5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhYi5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZXhwcjtcbiAgY29weV9jbGFzc19maWVsZCAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX3R5cGU7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICBhYi5jb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgIGFiLmNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwciAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgIGFiLmNvcHlfbW9kdWxlX2V4cHI7XG4gIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV90eXBlICAgICAgICAgICBhYi5jb3B5X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgYWIuY29weV9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxufVxuXG50eXBlIF8gbWlncmF0aW9uICs9IE1pZ3JhdGlvbiA6ICdmcm9tIG9jYW1sX3ZlcnNpb24gKiAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb24gLT4gJ2Zyb20gbWlncmF0aW9uXG5cbm1vZHVsZSB0eXBlIE1pZ3JhdGVfbW9kdWxlID0gc2lnXG4gIG1vZHVsZSBGcm9tIDogQXN0XG4gIG1vZHVsZSBUbyA6IEFzdFxuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICBwcmludGYgXCIgIHZhbCBjb3B5XyUtMjFzOiBGcm9tLiVzLiVzIC0+IFRvLiVzLiVzXFxuXCIgcyBtIHMgbSBzKSAqKVxuICB2YWwgY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgdmFsIGNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgOiBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICB2YWwgY29weV9jb3JlX3R5cGUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlXG4gIHZhbCBjb3B5X2V4cHJlc3Npb24gICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICB2YWwgY29weV9wYXR0ZXJuICAgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5cbiAgdmFsIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlXG4gIHZhbCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgIDogRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICB2YWwgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICB2YWwgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIHZhbCBjb3B5X2NsYXNzX2V4cHIgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICB2YWwgY29weV9jbGFzc19maWVsZCAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICB2YWwgY29weV9jbGFzc190eXBlICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgdmFsIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICB2YWwgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgdmFsIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgdmFsIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgdmFsIGNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgdmFsIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbigqJCopXG5lbmRcblxubW9kdWxlIE1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgICAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbilcbiAgICAoQV90b19CIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEEuQXN0IGFuZCBtb2R1bGUgVG8gPSBCLkFzdClcbj1cbnN0cnVjdFxuICBsZXQgbWlncmF0aW9uX2Z1bmN0aW9ucyA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBsZXQgb3BlbiBBX3RvX0IgaW5cbiAgICB7XG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICAgIGNvcHlfc3RydWN0dXJlO1xuICAgICAgY29weV9zaWduYXR1cmU7XG4gICAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICAgIGNvcHlfY29yZV90eXBlO1xuICAgICAgY29weV9leHByZXNzaW9uO1xuICAgICAgY29weV9wYXR0ZXJuO1xuICAgICAgY29weV9jYXNlO1xuICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgY29weV9jbGFzc19leHByO1xuICAgICAgY29weV9jbGFzc19maWVsZDtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZTtcbiAgICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgICAgY29weV9tb2R1bGVfZXhwcjtcbiAgICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgICAgY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9taWdyYXRpb24gKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG4gICAgKEJfdG9fQSA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBCLkFzdCBhbmQgbW9kdWxlIFRvID0gQS5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0ICgpID0gKFxuICAgIGxldCBpc191bmRlZmluZWQgOiB0eXBlIGEuIGEgbWlncmF0aW9uIC0+IGJvb2wgPSBmdW5jdGlvblxuICAgICAgfCBVbmRlZmluZWQgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBhc3NlcnQgKEEudmVyc2lvbiA8IEIudmVyc2lvbik7XG4gICAgYXNzZXJ0IChpc191bmRlZmluZWQgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEIubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvbik7XG4gICAgbGV0IG1vZHVsZSBBX3RvX0JfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhBKShCKShBX3RvX0IpIGluXG4gICAgbGV0IG1vZHVsZSBCX3RvX0FfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhCKShBKShCX3RvX0EpIGluXG4gICAgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBBKSwgQV90b19CX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEIpKTtcbiAgICBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBCKSwgQl90b19BX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEEpKTtcbiAgKVxuZW5kXG5cbnR5cGUgJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvbiA9XG4gIHwgTm9fbWlncmF0aW9uIDogJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvblxuICB8IEltbWVkaWF0ZV9taWdyYXRpb25cbiAgICA6ICAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb25cbiAgICAgIC0+ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cblxubGV0IGltbWVkaWF0ZV9taWdyYXRpb25cbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAodHlwZSAlcylcXG5cIiBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZSlcbiAgICAodHlwZSBzaWduYXR1cmUpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlKVxuICAgICh0eXBlIGNvcmVfdHlwZSlcbiAgICAodHlwZSBleHByZXNzaW9uKVxuICAgICh0eXBlIHBhdHRlcm4pXG4gICAgKHR5cGUgY2FzZSlcbiAgICAodHlwZSB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICAodHlwZSBjbGFzc19leHByKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkKVxuICAgICh0eXBlIGNsYXNzX3R5cGUpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0pXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0pXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiAgXCIgICAgICUtMjFzIDogJXM7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmU7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGU7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb247XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm47XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2U7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb247XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmU7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQ7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW07XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgIGRpcmVjdGlvblxuICA9XG4gIGxldCB2ZXJzaW9uID0gbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBOZXh0IC0+IEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uXG4gICAgfCBgUHJldmlvdXMgLT4gQS5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uXG4gIGluXG4gIG1hdGNoIHZlcnNpb24gd2l0aFxuICB8IFVuZGVmaW5lZCAtPiBOb19taWdyYXRpb25cbiAgfCBNaWdyYXRpb24gKF8sIGZ1bnMsIHRvXykgLT4gSW1tZWRpYXRlX21pZ3JhdGlvbiAoZnVucywgdG9fKVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBtaWdyYXRlXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMxKSAodHlwZSAlczIpXFxuXCIgcyBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZTEpICh0eXBlIHN0cnVjdHVyZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlMSkgKHR5cGUgc2lnbmF0dXJlMilcbiAgICAodHlwZSB0b3BsZXZlbF9waHJhc2UxKSAodHlwZSB0b3BsZXZlbF9waHJhc2UyKVxuICAgICh0eXBlIGNvcmVfdHlwZTEpICh0eXBlIGNvcmVfdHlwZTIpXG4gICAgKHR5cGUgZXhwcmVzc2lvbjEpICh0eXBlIGV4cHJlc3Npb24yKVxuICAgICh0eXBlIHBhdHRlcm4xKSAodHlwZSBwYXR0ZXJuMilcbiAgICAodHlwZSBjYXNlMSkgKHR5cGUgY2FzZTIpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbjEpICh0eXBlIHR5cGVfZGVjbGFyYXRpb24yKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uMSkgKHR5cGUgdHlwZV9leHRlbnNpb24yKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjEpICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjIpXG4gICAgKHR5cGUgY2xhc3NfZXhwcjEpICh0eXBlIGNsYXNzX2V4cHIyKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkMSkgKHR5cGUgY2xhc3NfZmllbGQyKVxuICAgICh0eXBlIGNsYXNzX3R5cGUxKSAodHlwZSBjbGFzc190eXBlMilcbiAgICAodHlwZSBjbGFzc19zaWduYXR1cmUxKSAodHlwZSBjbGFzc19zaWduYXR1cmUyKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQxKSAodHlwZSBjbGFzc190eXBlX2ZpZWxkMilcbiAgICAodHlwZSBtb2R1bGVfZXhwcjEpICh0eXBlIG1vZHVsZV9leHByMilcbiAgICAodHlwZSBtb2R1bGVfdHlwZTEpICh0eXBlIG1vZHVsZV90eXBlMilcbiAgICAodHlwZSBzaWduYXR1cmVfaXRlbTEpICh0eXBlIHNpZ25hdHVyZV9pdGVtMilcbiAgICAodHlwZSBzdHJ1Y3R1cmVfaXRlbTEpICh0eXBlIHN0cnVjdHVyZV9pdGVtMilcbigqJCopXG4gICAgKChtb2R1bGUgQSkgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAlLTIxcyA6ICVzMTtcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTE7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTE7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTE7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTE7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb24xO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuMTtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTE7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb24xO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjE7XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjE7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHIxO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDE7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGUxO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmUxO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkMTtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHIxO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTE7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtMTtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW0xO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgICgobW9kdWxlIEIpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczI7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUyO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUyO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UyO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUyO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMjtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjI7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UyO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMjtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24yO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IyO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMjtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQyO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMjtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMjtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDI7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUyO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTI7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMjtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9uc1xuICA9XG4gIG1hdGNoIEEuVmVyc2lvbiB3aXRoXG4gIHwgQi5WZXJzaW9uIC0+IG1pZ3JhdGlvbl9pZGVudGl0eVxuICB8IF8gLT5cbiAgICBsZXQgZGlyZWN0aW9uID0gaWYgQS52ZXJzaW9uIDwgQi52ZXJzaW9uIHRoZW4gYE5leHQgZWxzZSBgUHJldmlvdXMgaW5cbiAgICBsZXQgcmVjIG1pZ3JhdGUgKG0gOiBBLnR5cGVzIGltbWVkaWF0ZV9taWdyYXRpb24pIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgSW1tZWRpYXRlX21pZ3JhdGlvbiAoZiwgKG1vZHVsZSBUbykpIC0+XG4gICAgICAgIG1hdGNoIFRvLlZlcnNpb24gd2l0aFxuICAgICAgICB8IEIuVmVyc2lvbiAtPiBmXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1hdGNoIGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBUbykgZGlyZWN0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGcsIHRvMikgLT5cbiAgICAgICAgICAgIG1pZ3JhdGUgKEltbWVkaWF0ZV9taWdyYXRpb24gKG1pZ3JhdGlvbl9jb21wb3NlIGYgZywgdG8yKSlcbiAgICBpblxuICAgIG1pZ3JhdGUgKGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBBKSBkaXJlY3Rpb24pXG5cbm1vZHVsZSBDb252ZXJ0IChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKSA9IHN0cnVjdFxuICBsZXQge1xuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICBjb3B5X3NpZ25hdHVyZTtcbiAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICBjb3B5X2V4cHJlc3Npb247XG4gICAgY29weV9wYXR0ZXJuO1xuICAgIGNvcHlfY2FzZTtcbiAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjb3B5X2NsYXNzX2V4cHI7XG4gICAgY29weV9jbGFzc19maWVsZDtcbiAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgY29weV9jbGFzc19zaWduYXR1cmU7XG4gICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgY29weV9tb2R1bGVfdHlwZTtcbiAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICB9IDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgIG1pZ3JhdGUgKG1vZHVsZSBBKSAobW9kdWxlIEIpXG5lbmRcblxuKCokIGZvcmVhY2hfdmVyc2lvbiAoZnVuIG4gdmVyc2lvbiAtPlxuICAgIHByaW50ZiBcIm1vZHVsZSBPQ2FtbF8lZCA9IHN0cnVjdFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF8lZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XyVkKVxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgdmVyc2lvbiA9ICVkXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGxldCBzdHJpbmdfdmVyc2lvbiA9ICVTXFxuXCIgdmVyc2lvbjtcbiAgICBwcmludGYgXCJlbmRcXG5cIjtcbiAgICBwcmludGYgXCJsZXQgb2NhbWxfJWQgOiBPQ2FtbF8lZC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF8lZClcXG5cIlxuICAgICAgbiBuIG47XG4gIClcbiopXG5tb2R1bGUgT0NhbWxfNDAyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMilcbiAgbGV0IHZlcnNpb24gPSA0MDJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAyXCJcbmVuZFxubGV0IG9jYW1sXzQwMiA6IE9DYW1sXzQwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDIpXG5tb2R1bGUgT0NhbWxfNDAzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMylcbiAgbGV0IHZlcnNpb24gPSA0MDNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAzXCJcbmVuZFxubGV0IG9jYW1sXzQwMyA6IE9DYW1sXzQwMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDMpXG5tb2R1bGUgT0NhbWxfNDA0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNClcbiAgbGV0IHZlcnNpb24gPSA0MDRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA0XCJcbmVuZFxubGV0IG9jYW1sXzQwNCA6IE9DYW1sXzQwNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDQpXG5tb2R1bGUgT0NhbWxfNDA1ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNSlcbiAgbGV0IHZlcnNpb24gPSA0MDVcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA1XCJcbmVuZFxubGV0IG9jYW1sXzQwNSA6IE9DYW1sXzQwNS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDUpXG5tb2R1bGUgT0NhbWxfNDA2ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNilcbiAgbGV0IHZlcnNpb24gPSA0MDZcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA2XCJcbmVuZFxubGV0IG9jYW1sXzQwNiA6IE9DYW1sXzQwNi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDYpXG5tb2R1bGUgT0NhbWxfNDA3ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwN1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNylcbiAgbGV0IHZlcnNpb24gPSA0MDdcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA3XCJcbmVuZFxubGV0IG9jYW1sXzQwNyA6IE9DYW1sXzQwNy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDcpXG5tb2R1bGUgT0NhbWxfNDA4ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOClcbiAgbGV0IHZlcnNpb24gPSA0MDhcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA4XCJcbmVuZFxubGV0IG9jYW1sXzQwOCA6IE9DYW1sXzQwOC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDgpXG5tb2R1bGUgT0NhbWxfNDA5ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOSlcbiAgbGV0IHZlcnNpb24gPSA0MDlcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA5XCJcbmVuZFxubGV0IG9jYW1sXzQwOSA6IE9DYW1sXzQwOS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDkpXG5tb2R1bGUgT0NhbWxfNDEwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMClcbiAgbGV0IHZlcnNpb24gPSA0MTBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEwXCJcbmVuZFxubGV0IG9jYW1sXzQxMCA6IE9DYW1sXzQxMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTApXG5tb2R1bGUgT0NhbWxfNDExID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMSlcbiAgbGV0IHZlcnNpb24gPSA0MTFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjExXCJcbmVuZFxubGV0IG9jYW1sXzQxMSA6IE9DYW1sXzQxMS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTEpXG5tb2R1bGUgT0NhbWxfNDEyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMilcbiAgbGV0IHZlcnNpb24gPSA0MTJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEyXCJcbmVuZFxubGV0IG9jYW1sXzQxMiA6IE9DYW1sXzQxMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTIpXG5tb2R1bGUgT0NhbWxfNDEzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMylcbiAgbGV0IHZlcnNpb24gPSA0MTNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEzXCJcbmVuZFxubGV0IG9jYW1sXzQxMyA6IE9DYW1sXzQxMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTMpXG5tb2R1bGUgT0NhbWxfNDE0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxNClcbiAgbGV0IHZlcnNpb24gPSA0MTRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjE0XCJcbmVuZFxubGV0IG9jYW1sXzQxNCA6IE9DYW1sXzQxNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTQpXG5tb2R1bGUgT0NhbWxfNTAwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMClcbiAgbGV0IHZlcnNpb24gPSA1MDBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjBcIlxuZW5kXG5sZXQgb2NhbWxfNTAwIDogT0NhbWxfNTAwLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMClcbm1vZHVsZSBPQ2FtbF81MDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAxXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAxKVxuICBsZXQgdmVyc2lvbiA9IDUwMVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMVwiXG5lbmRcbmxldCBvY2FtbF81MDEgOiBPQ2FtbF81MDEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAxKVxuKCokKilcblxubGV0IGFsbF92ZXJzaW9ucyA6IChtb2R1bGUgT0NhbWxfdmVyc2lvbikgbGlzdCA9IFtcbiAgKCokZm9yZWFjaF92ZXJzaW9uIChmdW4gbiBfIC0+XG4gICAgICBwcmludGYgXCIobW9kdWxlIE9DYW1sXyVkIDogT0NhbWxfdmVyc2lvbik7XFxuXCIgbikqKVxuKG1vZHVsZSBPQ2FtbF80MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDAzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDUgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA2IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDggOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA5IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTEgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEyIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTQgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMSA6IE9DYW1sX3ZlcnNpb24pO1xuKCokKilcbl1cblxuKCokZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biBhIGIgLT5cbiAgICBwcmludGYgXCJpbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF8lZCkoT0NhbWxfJWQpXFxuXCIgYSBiO1xuICAgIHByaW50ZiBcIiAgICAoQXN0bGliLk1pZ3JhdGVfJWRfJWQpKEFzdGxpYi5NaWdyYXRlXyVkXyVkKVxcblwiIGEgYiBiIGFcbiAgKVxuKilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMikoT0NhbWxfNDAzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDJfNDAzKShBc3RsaWIuTWlncmF0ZV80MDNfNDAyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDAzKShPQ2FtbF80MDQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwM180MDQpKEFzdGxpYi5NaWdyYXRlXzQwNF80MDMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDQpKE9DYW1sXzQwNSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA0XzQwNSkoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNSkoT0NhbWxfNDA2KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDVfNDA2KShBc3RsaWIuTWlncmF0ZV80MDZfNDA1KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA2KShPQ2FtbF80MDcpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNl80MDcpKEFzdGxpYi5NaWdyYXRlXzQwN180MDYpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDcpKE9DYW1sXzQwOClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA3XzQwOCkoQXN0bGliLk1pZ3JhdGVfNDA4XzQwNylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOCkoT0NhbWxfNDA5KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDhfNDA5KShBc3RsaWIuTWlncmF0ZV80MDlfNDA4KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA5KShPQ2FtbF80MTApXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwOV80MTApKEFzdGxpYi5NaWdyYXRlXzQxMF80MDkpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTApKE9DYW1sXzQxMSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEwXzQxMSkoQXN0bGliLk1pZ3JhdGVfNDExXzQxMClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMSkoT0NhbWxfNDEyKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTFfNDEyKShBc3RsaWIuTWlncmF0ZV80MTJfNDExKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEyKShPQ2FtbF80MTMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMl80MTMpKEFzdGxpYi5NaWdyYXRlXzQxM180MTIpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTMpKE9DYW1sXzQxNClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEzXzQxNCkoQXN0bGliLk1pZ3JhdGVfNDE0XzQxMylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxNCkoT0NhbWxfNTAwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTRfNTAwKShBc3RsaWIuTWlncmF0ZV81MDBfNDE0KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAwKShPQ2FtbF81MDEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMF81MDEpKEFzdGxpYi5NaWdyYXRlXzUwMV81MDApXG4oKiQqKVxuXG5tb2R1bGUgT0NhbWxfY3VycmVudCA9IE9DYW1sX09DQU1MX1ZFUlNJT05cblxubW9kdWxlIEZpbmRfdmVyc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbXBsIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBJbnRmIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBVbmtub3duXG5cbiAgbGV0IGZyb21fbWFnaWMgbWFnaWMgPVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFVua25vd25cbiAgICAgIHwgKG1vZHVsZSBWZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbXBsIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbnRmIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb29wIHRhaWxcbiAgICBpblxuICAgICgqIFRyYXZlcnNlIHRoZSB2ZXJzaW9ucyBmcm9tIGxhc3QgdG8gZmlyc3Q6XG4gICAgICAgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlbid0IHVuaXF1ZSBhbW9uZyB2ZXJzaW9ucyxcbiAgICAgICB3ZSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiB3aXRoIGEgbWFnaWMgbnVtYmVyIG1hdGNoLlxuICAgICAgIFRoZSBzaXR1YXRpb24gaW4gbWluZCBpcyB0cnVuayBzdXBwb3J0LiAqKVxuICAgICAgbGV0IGFsbF92ZXJzaW9uc190b3BfZG93biA9IExpc3QucmV2IGFsbF92ZXJzaW9ucyBpblxuICAgICAgbG9vcCBhbGxfdmVyc2lvbnNfdG9wX2Rvd25cbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHVzZWQgdG8gY29udHJvbCB3aGF0IHdlIHVzZSBmcm9tIHRoZSBjdXJyZW50IGNvbXBpbGVyIGFuZCB3aGF0IGlzIGVtYmVkIGluXG4gICB0aGlzIGxpYnJhcnkuXG5cbiAgIEl0IG11c3QgYmUgb3BlbmVkIGluIGFsbCBtb2R1bGVzLCBlc3BlY2lhbGx5IHRoZSBvbmVzIGNvbWluZyBmcm9tIHRoZSBjb21waWxlci5cbiopXG5cbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxubW9kdWxlIEpzID0gVmVyc2lvbnMuT0NhbWxfNTAwXG5tb2R1bGUgT2NhbWwgPSBWZXJzaW9ucy5PQ2FtbF9jdXJyZW50XG5cbm1vZHVsZSBTZWxlY3RfYXN0IChPY2FtbCA6IFZlcnNpb25zLk9DYW1sX3ZlcnNpb24pID0gc3RydWN0XG4gIGluY2x1ZGUgSnNcblxuICBtb2R1bGUgVHlwZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdqcywgJ29jYW1sKSB0ID1cbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXNcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS4lcyxcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS4lcyApXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgICB0XFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgcyBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUb3BsZXZlbF9waHJhc2VcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ29yZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IEV4cHJlc3Npb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHByZXNzaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBQYXR0ZXJuXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUucGF0dGVybixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5wYXR0ZXJuIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2FzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2FzZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUeXBlX2V4dGVuc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19maWVsZFxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IE1vZHVsZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTaWduYXR1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSApXG4gICAgICAgICAgICB0XG4oKiQqKVxuICAgICAgfCBMaXN0IDogKCdhLCAnYikgdCAtPiAoJ2EgbGlzdCwgJ2IgbGlzdCkgdFxuICAgICAgfCBQYWlyIDogKCdhLCAnYikgdCAqICgnYywgJ2QpIHQgLT4gKCdhICogJ2MsICdiICogJ2QpIHRcbiAgZW5kXG5cbiAgb3BlbiBUeXBlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG4gIG1vZHVsZSBUb19vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKEpzKSAoT2NhbWwpXG5cbiAgbGV0IHJlYyBvZl9vY2FtbCA6IHR5cGUgb2NhbWwganMuIChqcywgb2NhbWwpIFR5cGUudCAtPiBvY2FtbCAtPiBqcyA9XG4gICAgbGV0IG9wZW4gT2Zfb2NhbWwgaW5cbiAgICBmdW4gbm9kZSAtPlxuICAgICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzIC0+IGNvcHlfJXNcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlIC0+IGNvcHlfc3RydWN0dXJlXG4gICAgICB8IFNpZ25hdHVyZSAtPiBjb3B5X3NpZ25hdHVyZVxuICAgICAgfCBUb3BsZXZlbF9waHJhc2UgLT4gY29weV90b3BsZXZlbF9waHJhc2VcbiAgICAgIHwgQ29yZV90eXBlIC0+IGNvcHlfY29yZV90eXBlXG4gICAgICB8IEV4cHJlc3Npb24gLT4gY29weV9leHByZXNzaW9uXG4gICAgICB8IFBhdHRlcm4gLT4gY29weV9wYXR0ZXJuXG4gICAgICB8IENhc2UgLT4gY29weV9jYXNlXG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gY29weV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICB8IENsYXNzX2V4cHIgLT4gY29weV9jbGFzc19leHByXG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IGNvcHlfY2xhc3NfZmllbGRcbiAgICAgIHwgQ2xhc3NfdHlwZSAtPiBjb3B5X2NsYXNzX3R5cGVcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlIC0+IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gY29weV9jbGFzc190eXBlX2ZpZWxkXG4gICAgICB8IE1vZHVsZV9leHByIC0+IGNvcHlfbW9kdWxlX2V4cHJcbiAgICAgIHwgTW9kdWxlX3R5cGUgLT4gY29weV9tb2R1bGVfdHlwZVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IGNvcHlfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gICAgICB8IExpc3QgdCAtPiBMaXN0Lm1hcCAob2Zfb2NhbWwgdClcbiAgICAgIHwgUGFpciAoYSwgYikgLT5cbiAgICAgICAgICBsZXQgZiA9IG9mX29jYW1sIGEgaW5cbiAgICAgICAgICBsZXQgZyA9IG9mX29jYW1sIGIgaW5cbiAgICAgICAgICBmdW4gKHgsIHkpIC0+IChmIHgsIGcgeSlcblxuICBsZXQgcmVjIHRvX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IGpzIC0+IG9jYW1sID1cbiAgICBsZXQgb3BlbiBUb19vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwICh0b19vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gdG9fb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gdG9fb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCBvZl9vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IHRvX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gb2Zfb2NhbWwgaXRlbVxuICBsZXQgdG9fb2NhbWxfbWFwcGVyIGl0ZW0gZiBjdHh0IHggPSBvZl9vY2FtbCBpdGVtIHggfD4gZiBjdHh0IHw+IHRvX29jYW1sIGl0ZW1cbmVuZFxuXG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gU2VsZWN0X2FzdCAoT2NhbWwpXG5tb2R1bGUgQXN0X2hlbHBlciA9IEFzdF9oZWxwZXJfbGl0ZVxuXG4oKiBNb2R1bGVzIGZyb20gQXN0XzxuPiBvZiBBc3RsaWIsIHdoZXJlIDxuPiBpcyB0aGUgY29tcGlsZXIgdmVyc2lvbiB0aGUgcHB4bGliIGRyaXZlciBpcyBjb21waWxlZCB3aXRoICopXG5tb2R1bGUgUGFyc2V0cmVlID0gU2VsZWN0ZWRfYXN0LkFzdC5QYXJzZXRyZWVcbm1vZHVsZSBBc3R0eXBlcyA9IFNlbGVjdGVkX2FzdC5Bc3QuQXN0dHlwZXNcblxuKCogT3RoZXIgQXN0bGliIG1vZHVsZXMgKilcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcblxubW9kdWxlIFBhcnNlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0bGliLlBhcnNlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uIGxleGJ1ZiA9IGltcGxlbWVudGF0aW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3N0cnVjdHVyZVxuICBsZXQgaW50ZXJmYWNlIGxleGJ1ZiA9IGludGVyZmFjZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9zaWduYXR1cmVcblxuICBsZXQgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiA9XG4gICAgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCB1c2VfZmlsZSBsZXhidWYgPVxuICAgIHVzZV9maWxlIGxleGJ1ZiB8PiBMaXN0Lm1hcCBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCBjb3JlX3R5cGUgbGV4YnVmID0gY29yZV90eXBlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2NvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiBsZXhidWYgPSBleHByZXNzaW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2V4cHJlc3Npb25cbiAgbGV0IHBhdHRlcm4gbGV4YnVmID0gcGF0dGVybiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9wYXR0ZXJuXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZGVmYXVsdF9wcmludF93YXJuaW5nIF9sb2MgPSAoKVxubGV0IGFib3V0X2l0ZV9icmFuY2hfcmVmID0gcmVmIGRlZmF1bHRfcHJpbnRfd2FybmluZ1xubGV0IGNhcmVfYWJvdXRfaXRlX2JyYW5jaCA9IHJlZiBmYWxzZVxubGV0IGFib3V0X2l0ZV9icmFuY2ggbG9jID0gIWFib3V0X2l0ZV9icmFuY2hfcmVmIGxvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogRGVmaW5pdGlvbiBvZiB0aGUgT0NhbWwgQVNUICopXG5cbm9wZW4gSW1wb3J0XG5cbigqIFRoaXMgZmlsZSBpcyBvYnRhaW5lZCBieTpcblxuICAgLSBjb3B5aW5nIGEgc3Vic2V0IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFzdF94eHgubWwgZmlsZSBmcm9tIEFzdGxpYlxuICAgKHN1Yi1tb2R1bGVzIEFzdHR5cGVzIGFuZCBQYXJzZXRyZWUpXG4gICAtIGFkZGluZyB0aGUgdHlwZSBkZWZpbml0aW9ucyBmb3IgcG9zaXRpb24sIGxvY2F0aW9uLCBsb2MgYW5kIGxvbmdpZGVudFxuICAgLSBmbGF0dGVuaW5nIGFsbCB0aGUgbW9kdWxlc1xuICAgLSByZW1vdmluZyBBc3R0eXBlcy5jb25zdGFudCAodW51c2VkIGFuZCBjb25mbGljdHMgd2l0aCBQYXJzZXRyZWUuY29uc3RhbnQpXG4gICAtIHJlbmFtaW5nIGEgZmV3IHR5cGVzOlxuICAgLSAtIExvY2F0aW9uLnQgLT4gbG9jYXRpb25cbiAgIC0gLSBMb25naWRlbnQudCAtPiBsb25naWRlbnRcbiAgIC0gYWRkaW5nIGEgdHlwZSBsb25naWRlbnRfbG9jID0gbG9uZ2lkZW50IGxvYyBhbmQgcmVwbGFjaW5nIGFsbCB0aGUgb2NjdXJyZW5jZXMgb2YgdGhlXG4gICBsYXR0ZXIgYnkgdGhlIGZvcm1lci4gVGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBvdmVycmlkZSBpdGVyYXRpb24gYW4gdGhlIGxldmVsIG9mIGFcbiAgIGxvbmdpZGVudCBsb2NcbiAgIC0gYWRkaW5nIGEgdHlwZSBjYXNlcyA9IGNhc2UgbGlzdFxuICAgLSByZXBsYWNpbmcgYWxsIG9jY3VyZW5jZXMgb2YgXCJjYXNlIGxpc3RcIiBieSBcImNhc2VzXCJcbiAgIC0gcmVwbGFjaW5nIGFsbCB0aGUgKCpJRl9DVVJSRU5UID0gRm9vLmJhciopIGJ5OiA9IEZvby5iYXJcbiAgIC0gcmVtb3ZpbmcgdGhlIGV4dHJhIHZhbHVlcyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlXG4gICAtIHJlcGxhY2luZyBhcHAgW3R5cGUgLi4uXSBieSBbYW5kIC4uLl0gdG8gbWFrZSBldmVyeXRoaW5nIG9uZSByZWN1cnNpdmUgYmxvY2tcbiAgIC0gYWRkaW5nIFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1bQEBAZW5kXSBhdCB0aGUgZW5kXG5cbiAgIFRvIHVwZGF0ZSBpdCB0byBhIG5ld2VyIE9DYW1sIHZlcnNpb24sIGNyZWF0ZSBhIG5ldyBtb2R1bGUgd2l0aCB0aGUgYWJvdmUgZnJvbSB0aGVcbiAgIGxhdGVzdCBjb21waWxlciBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBvcGVucyB0byBnZXQgaXQgdG9cbiAgIGNvbXBpbGU6XG4gICBbe1xuICAgIG1vZHVsZSBBc3QgPSBWZXJzaW9ucy5PQ2FtbF80eHhcbiAgICBvcGVuIEFzdC5Bc3RcbiAgICBtb2R1bGUgTG9jYXRpb24gICA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuICAgIG1vZHVsZSBMb25naWRlbnQgPSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG4gICB9XVxuXG4gICBPbmNlIHlvdSBoYXZlIGdlbmVyYXRlZCB0aGUgaW5saW5lZCBkZXJpdmVkIHRyYXZlcnNhbCBjbGFzc2VzIGJ5IHJ1bm5pbmdcbiAgIFt7IGR1bmUgYnVpbGQgQGxpbnQgfV0geW91IGNhbiByZXBsYWNlIHRoZSBhYm92ZSBtZW50aW9uZWQgbW9kdWxlIGRlZmluaXRpb25zIGJ5IGFcbiAgIFtvcGVuIEltcG9ydF0gYW5kIHVwZGF0ZSBbSW1wb3J0XSBzbyB0aGF0IHRoZSBbSnNdIG1vZHVsZSBwb2ludHMgdG9cbiAgIFtWZXJzaW9ucy5PQ2FtbF80eHhdLlxuKilcblxuKCogU291cmNlIGNvZGUgbG9jYXRpb25zIChyYW5nZXMgb2YgcG9zaXRpb25zKSwgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5cbnR5cGUgcG9zaXRpb24gPSBMZXhpbmcucG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5hbmQgbG9jYXRpb24gPSBMb2NhdGlvbi50ID0ge1xuICBsb2Nfc3RhcnQgOiBwb3NpdGlvbjtcbiAgbG9jX2VuZCA6IHBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5hbmQgbG9jYXRpb25fc3RhY2sgPSBsb2NhdGlvbiBsaXN0XG5cbigqIE5vdGUgb24gdGhlIHVzZSBvZiBMZXhpbmcucG9zaXRpb24gaW4gdGhpcyBtb2R1bGUuXG4gICBJZiBbcG9zX2ZuYW1lID0gXCJcIl0sIHRoZW4gdXNlIFshaW5wdXRfbmFtZV0gaW5zdGVhZC5cbiAgIElmIFtwb3NfbG51bSA9IC0xXSwgdGhlbiBbcG9zX2JvbCA9IDBdLiBVc2UgW3Bvc19jbnVtXSBhbmRcbiAgIHJlLXBhcnNlIHRoZSBmaWxlIHRvIGdldCB0aGUgbGluZSBhbmQgY2hhcmFjdGVyIG51bWJlcnMuXG4gICBFbHNlIGFsbCBmaWVsZHMgYXJlIGNvcnJlY3QuXG4qKVxuYW5kICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IGxvY2F0aW9uIH1cblxuKCogTG9uZyBpZGVudGlmaWVycywgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5hbmQgbG9uZ2lkZW50ID0gTG9uZ2lkZW50LnQgPVxuICB8IExpZGVudCBvZiBzdHJpbmdcbiAgfCBMZG90IG9mIGxvbmdpZGVudCAqIHN0cmluZ1xuICB8IExhcHBseSBvZiBsb25naWRlbnQgKiBsb25naWRlbnRcblxuYW5kIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jXG5cbigqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbmFuZCByZWNfZmxhZyA9IEFzdHR5cGVzLnJlY19mbGFnID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbmFuZCBkaXJlY3Rpb25fZmxhZyA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gVXB0byB8IERvd250b1xuXG4oKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbmFuZCBwcml2YXRlX2ZsYWcgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBQcml2YXRlIHwgUHVibGljXG5hbmQgbXV0YWJsZV9mbGFnID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuYW5kIHZpcnR1YWxfZmxhZyA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuYW5kIG92ZXJyaWRlX2ZsYWcgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gT3ZlcnJpZGUgfCBGcmVzaFxuYW5kIGNsb3NlZF9mbGFnID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBDbG9zZWQgfCBPcGVuXG5hbmQgbGFiZWwgPSBzdHJpbmdcblxuYW5kIGFyZ19sYWJlbCA9IEFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIHwgTm9sYWJlbFxuICB8IExhYmVsbGVkIG9mIHN0cmluZyAgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgfCBPcHRpb25hbCBvZiBzdHJpbmcgICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG5hbmQgdmFyaWFuY2UgPSBBc3R0eXBlcy52YXJpYW5jZSA9IENvdmFyaWFudCB8IENvbnRyYXZhcmlhbnQgfCBOb1ZhcmlhbmNlXG5hbmQgaW5qZWN0aXZpdHkgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSA9IEluamVjdGl2ZSB8IE5vSW5qZWN0aXZpdHlcblxuKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuYW5kIGNvbnN0YW50ID0gUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBleGNlcHRcbiAgICAgICAgICBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIgKilcbiAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBsb2NhdGlvbiAqIHN0cmluZyBvcHRpb25cbiAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuICopXG4gIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBhcmUgcmVqZWN0ZWRcbiAgICAgICAgICBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbigqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG5hbmQgYXR0cmlidXRlID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSA9IHtcbiAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgYXR0cl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tAaWQgQVJHXV0gYW5kIFtbQEBpZCBBUkddXS5cblxuICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC4gVGhlIGNvbXBpbGVyIGlnbm9yZXNcbiAgICB1bmtub3duIGF0dHJpYnV0ZXMuICopXG5cbmFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbmFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuYW5kIHBheWxvYWQgPSBQYXJzZXRyZWUucGF5bG9hZCA9XG4gIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogWz8gUF0gb3IgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbigqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBjb3JlX3R5cGUgPSBQYXJzZXRyZWUuY29yZV90eXBlID0ge1xuICBwdHlwX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYztcbiAgcHR5cF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHR5cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjb3JlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWRdfSxcbiAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfS4gKilcbiAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV0gcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZVxuICAgICAgICAgIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uICopXG4gIHwgUHR5cF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt0Y29uc3RyXSB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAtIFtUIHRjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfSxcbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfS4gKilcbiAgfCBQdHlwX2NsYXNzIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbI3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgI3Rjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uICopXG4gIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1sgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s+IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX0sXG4gICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s8IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLiAqKVxuICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1cbiAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gYSBjb25zdHJhaW50IG9uIGFcbiAgICAgICAgICAgIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAge1tcbiAgICAgICAgICAgIGxldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLlxuICAgICAgICAgIF19XG4gICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVxuICAgICAgICAgICAgW1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9IFtQZXhwX3BvbHldfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfSBbcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH0gW1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9IFtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS4gKilcbiAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbmFuZCBwYWNrYWdlX3R5cGUgPSBsb25naWRlbnRfbG9jICogKGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUpIGxpc3RcbigqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuXG4gICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldIHJlcHJlc2VudHNcbiAgICAgIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLiAqKVxuXG5hbmQgcm93X2ZpZWxkID0gUGFyc2V0cmVlLnJvd19maWVsZCA9IHtcbiAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgcHJmX2xvYyA6IGxvY2F0aW9uO1xuICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCByb3dfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbYl0gaXMgW3RydWVdIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGEgY29uc3RhbnQgKGVtcHR5KVxuICAgICAgICAgICAgY29uc3RydWN0b3IuXG4gICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3IgKHNlZVxuICAgICAgICAgICAgNC4yIGluIHRoZSBtYW51YWwpICopXG4gIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbmFuZCBvYmplY3RfZmllbGQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkID0ge1xuICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICBwb2ZfbG9jIDogbG9jYXRpb247XG4gIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIG9iamVjdF9maWVsZF9kZXNjID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4oKiogezIgUGF0dGVybnN9ICopXG5cbmFuZCBwYXR0ZXJuID0gUGFyc2V0cmVlLnBhdHRlcm4gPSB7XG4gIHBwYXRfZGVzYyA6IHBhdHRlcm5fZGVzYztcbiAgcHBhdF9sb2MgOiBsb2NhdGlvbjtcbiAgcHBhdF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHBhdF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBwYXR0ZXJuX2Rlc2MgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjID1cbiAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXIgYnV0IHJlamVjdGVkIGJ5XG4gICAgICAgICAgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQcGF0X2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtDIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV0gKilcbiAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXSAqKVxuICB8IFBwYXRfcmVjb3JkIG9mIChsb25naWRlbnRfbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfVxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gIHwgUHBhdF90eXBlIG9mIGxvbmdpZGVudF9sb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgfCBQcGF0X29wZW4gb2YgbG9uZ2lkZW50X2xvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG5hbmQgZXhwcmVzc2lvbiA9IFBhcnNldHJlZS5leHByZXNzaW9uID0ge1xuICBwZXhwX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2M7XG4gIHBleHBfbG9jIDogbG9jYXRpb247XG4gIHBleHBfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHBleHBfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgZXhwcmVzc2lvbl9kZXNjID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIHwgUGV4cF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdICopXG4gIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sXG4gICAgICAgICAgWzFuXSAqKVxuICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVxuICAgICAgICAgICAgW05vbGFiZWxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpc1xuICAgICAgICAgICAgW1NvbWUgRTBdXG5cbiAgICAgICAgICBOb3RlczpcblxuICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59IFtQZXhwX2Z1bl19LlxuICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZyB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59XG4gICAgICAgICAgICBbUGV4cF9mdW5dfS4gKilcbiAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgW2xpXSBjYW4gYmUge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0gKG5vbiBsYWJlbGVkXG4gICAgICAgICAgYXJndW1lbnQpLCB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9IFtMYWJlbGxlZF19IChsYWJlbGxlZFxuICAgICAgICAgIGFyZ3VtZW50cykgb3Ige3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWxdfSAob3B0aW9uYWxcbiAgICAgICAgICBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQZXhwX2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldICopXG4gIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdICopXG4gIHwgUGV4cF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAgKCoqIFtFLmxdICopXG4gIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfSBbVXB0b119XG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV0gd2hlbiBbZGlyZWN0aW9uXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfSBbRG93bnRvXX0gKilcbiAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFsoRSA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS4gKilcbiAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgfCBQZXhwX25ldyBvZiBsb25naWRlbnRfbG9jICAoKiogW25ldyBNLmNdICopXG4gIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfSBbQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgIHZhbHVlcykuICopXG4gIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuYW5kIGNhc2UgPSBQYXJzZXRyZWUuY2FzZSA9IHtcbiAgcGNfbGhzIDogcGF0dGVybjtcbiAgcGNfZ3VhcmQgOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgcGNfcmhzIDogZXhwcmVzc2lvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuYW5kIGxldG9wID0gUGFyc2V0cmVlLmxldG9wID0ge1xuICBsZXRfIDogYmluZGluZ19vcDtcbiAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgYm9keSA6IGV4cHJlc3Npb247XG59XG5cbmFuZCBiaW5kaW5nX29wID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgPSB7XG4gIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgcGJvcF9sb2MgOiBsb2NhdGlvbjtcbn1cblxuKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID0ge1xuICBwdmFsX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdmFsX3R5cGUgOiBjb3JlX3R5cGU7XG4gIHB2YWxfcHJpbSA6IHN0cmluZyBsaXN0O1xuICBwdmFsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdmFsX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG5cbiAgICAtIFt2YWwgeDogVF0sIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfSBbcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19XG4gICAgICBbcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV0gKilcblxuKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0ge1xuICBwdHlwZV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcHR5cGVfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gIHB0eXBlX2NzdHJzIDogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIGxvY2F0aW9uKSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgcHR5cGVfa2luZCA6IHR5cGVfa2luZDtcbiAgcHR5cGVfcHJpdmF0ZSA6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gIHB0eXBlX21hbmlmZXN0IDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gIHB0eXBlX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdHlwZV9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sIGZvciB2YXJpb3VzXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfSBbcHR5cGVfa2luZF19IGFuZFxuICAgIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9IFtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcblxuICAgIC0gW3R5cGUgdF0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9XG4gICAgICBbUHR5cGVfYWJzdHJhY3RdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVxuICAgICAgW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH0gW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9XG4gICAgICBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV0gd2hlbiBbdHlwZV9raW5kXSBpc1xuICAgICAge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH0gW1B0eXBlX3JlY29yZF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59IFtQdHlwZV9vcGVuXX0sXG4gICAgICBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0uICopXG5cbmFuZCB0eXBlX2tpbmQgPSBQYXJzZXRyZWUudHlwZV9raW5kID1cbiAgfCBQdHlwZV9hYnN0cmFjdFxuICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICB8IFB0eXBlX29wZW5cblxuYW5kIGxhYmVsX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID0ge1xuICBwbGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBsZF9tdXRhYmxlIDogbXV0YWJsZV9mbGFnO1xuICBwbGRfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcGxkX2xvYyA6IGxvY2F0aW9uO1xuICBwbGRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtAaWQxXSBbQGlkMl1dICopXG59XG4oKiogLSBbeyAuLi47IGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfSBbcGxkX211dGFibGVdfVxuICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19LFxuICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVxuICAgICAgW3BsZF9tdXRhYmxlXX0gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0uXG5cbiAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IHtcbiAgcGNkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2RfdmFycyA6IHN0cmluZyBsb2MgbGlzdDtcbiAgcGNkX2FyZ3MgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gIHBjZF9yZXMgOiBjb3JlX3R5cGUgb3B0aW9uO1xuICBwY2RfbG9jIDogbG9jYXRpb247XG4gIHBjZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufSByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvclxuICAgICAgICAgIGFyZ3VtZW50cyBvZjpcblxuICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQzogVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQyBvZiB7Li4ufV0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgICAgICAgLSBbQzogey4uLn0gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS4gKilcblxuYW5kIHR5cGVfZXh0ZW5zaW9uID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID0ge1xuICBwdHlleHRfcGF0aCA6IGxvbmdpZGVudF9sb2M7XG4gIHB0eWV4dF9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICBwdHlleHRfY29uc3RydWN0b3JzIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gIHB0eWV4dF9wcml2YXRlIDogcHJpdmF0ZV9mbGFnO1xuICBwdHlleHRfbG9jIDogbG9jYXRpb247XG4gIHB0eWV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgKFt0eXBlIHQgKz0gLi4uXSkuICopXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0ge1xuICBwZXh0X25hbWUgOiBzdHJpbmcgbG9jO1xuICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgcGV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHR5cGVfZXhjZXB0aW9uID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID0ge1xuICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gIHB0eWV4bl9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV0gZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvblxuICAgICAgICAgIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG5cbiAgICAgICAgICB7dWxcbiAgICAgICAgICAgey0gW0Mgb2YgVDEgKiAuLi4gKiBUbl1cbiAgICAgICAgICAgICAgd2hlbjpcblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW05vbmVdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICB9ICopXG4gIHwgUGV4dF9yZWJpbmQgb2YgbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbigqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc190eXBlID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgPSB7XG4gIHBjdHlfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYztcbiAgcGN0eV9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgfCBQY3R5X2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiAtIFtjXVxuICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0sXG4gICAgICAgICAgLSBbfmw6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19LFxuICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfS4gKilcbiAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9IHtcbiAgcGNzaWdfc2VsZiA6IGNvcmVfdHlwZTtcbiAgcGNzaWdfZmllbGRzIDogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9IFtwY3NpZ19zZWxmXX0gaXNcbiAgICAgIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fSBbUHR5cF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0ge1xuICBwY3RmX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gIHBjdGZfbG9jIDogbG9jYXRpb247XG4gIHBjdGZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX0gW1B0eXBfcG9seV19LiAqKVxuICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kICdhIGNsYXNzX2luZm9zID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zID0ge1xuICBwY2lfdmlydCA6IHZpcnR1YWxfZmxhZztcbiAgcGNpX3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHBjaV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGNpX2V4cHIgOiAnYTtcbiAgcGNpX2xvYyA6IGxvY2F0aW9uO1xuICBwY2lfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLiAqKVxuXG5hbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc19leHByID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSB7XG4gIHBjbF9kZXNjIDogY2xhc3NfZXhwcl9kZXNjO1xuICBwY2xfbG9jIDogbG9jYXRpb247XG4gIHBjbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19leHByX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgfCBQY2xfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF0uICopXG4gIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS4gW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvclxuICAgICAgICAgIHN0YXJ0IHdpdGggWz9dIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPSB7XG4gIHBjc3RyX3NlbGYgOiBwYXR0ZXJuO1xuICBwY3N0cl9maWVsZHMgOiBjbGFzc19maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuXG4gICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9IFtwY3N0cl9zZWxmXX0gaXNcbiAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX0gW1BwYXRfYW55XX0gKilcblxuYW5kIGNsYXNzX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID0ge1xuICBwY2ZfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gIHBjZl9sb2MgOiBsb2NhdGlvbjtcbiAgcGNmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2luaGVyaXQgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgIC0gW2luaGVyaXQhIENFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVxuICAgICAgICAgICAgW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9IFtPdmVycmlkZV19IGFuZCBbc10gaXMgW1NvbWUgeF0gKilcbiAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt2YWwgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9XG4gICAgICAgICAgICBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1cbiAgICAgICAgICAgIFtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVxuICAgICAgICAgICAgW011dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfSBbTXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19ICopXG4gIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1cbiAgICAgICAgICAgIFtQZXhwX3BvbHldfSlcbiAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXSAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1cbiAgICAgICAgICAgIFtQdHlwX3BvbHldfSkgKilcbiAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kIGNsYXNzX2ZpZWxkX2tpbmQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbmFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX3R5cGUgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgPSB7XG4gIHBtdHlfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2M7XG4gIHBtdHlfbG9jIDogbG9jYXRpb247XG4gIHBtdHlfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgfCBQbXR5X2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBtdHlfYWxpYXMgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG5hbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICB8IFVuaXQgICgqKiBbKCldICopXG4gIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG5hbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSB7XG4gIHBzaWdfZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gIHBzaWdfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzaWduYXR1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdICopXG4gIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICopXG4gIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAqKVxuICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtZF9uYW1lIDogc3RyaW5nIG9wdGlvbiBsb2M7XG4gIHBtZF90eXBlIDogbW9kdWxlX3R5cGU7XG4gIHBtZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1kX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9IHtcbiAgcG1zX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbXNfbWFuaWZlc3QgOiBsb25naWRlbnRfbG9jO1xuICBwbXNfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtc19sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtdGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtdGRfdHlwZSA6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgcG10ZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG10ZF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtTID0gTVRdLFxuICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgd2hlblxuICAgICAge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfSBbcG10ZF90eXBlXX0gaXMgW05vbmVdLiAqKVxuXG5hbmQgJ2Egb3Blbl9pbmZvcyA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zID0ge1xuICBwb3Blbl9leHByIDogJ2E7XG4gIHBvcGVuX292ZXJyaWRlIDogb3ZlcnJpZGVfZmxhZztcbiAgcG9wZW5fbG9jIDogbG9jYXRpb247XG4gIHBvcGVuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfSBbcG9wZW5fb3ZlcnJpZGVdfSBpc1xuICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gKHNpbGVuY2VzIHRoZSBcInVzZWRcbiAgICAgIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofSBbRnJlc2hdfSAqKVxuXG5hbmQgb3Blbl9kZXNjcmlwdGlvbiA9IGxvbmdpZGVudF9sb2Mgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbmFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuYW5kICdhIGluY2x1ZGVfaW5mb3MgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9IHtcbiAgcGluY2xfbW9kIDogJ2E7XG4gIHBpbmNsX2xvYyA6IGxvY2F0aW9uO1xuICBwaW5jbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbmFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG5hbmQgd2l0aF9jb25zdHJhaW50ID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIHwgUHdpdGhfdHlwZSBvZiBsb25naWRlbnRfbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiB0aGVcbiAgICAgICAgICB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICB8IFB3aXRoX21vZHVsZSBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvYyAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGUgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gIHwgUHdpdGhfdHlwZXN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gIHwgUHdpdGhfbW9kc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIGxvbmdpZGVudF9sb2NcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuYW5kIG1vZHVsZV9leHByID0gUGFyc2V0cmVlLm1vZHVsZV9leHByID0ge1xuICBwbW9kX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjO1xuICBwbW9kX2xvYyA6IGxvY2F0aW9uO1xuICBwbW9kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIG1vZHVsZV9leHByX2Rlc2MgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIHwgUG1vZF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogW1hdICopXG4gIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG5hbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSB7XG4gIHBzdHJfZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gIHBzdHJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIHZhbHVlX2JpbmRpbmcgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyA9IHtcbiAgcHZiX3BhdCA6IHBhdHRlcm47XG4gIHB2Yl9leHByIDogZXhwcmVzc2lvbjtcbiAgcHZiX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwdmJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBtb2R1bGVfYmluZGluZyA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9IHtcbiAgcG1iX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1iX2V4cHIgOiBtb2R1bGVfZXhwcjtcbiAgcG1iX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwbWJfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4oKiogezEgVG9wbGV2ZWx9ICopXG4oKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuYW5kIHRvcGxldmVsX3BocmFzZSA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgPSB7XG4gIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgcGRpcl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPSB7XG4gIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgcGRpcmFfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgfCBQZGlyX2lkZW50IG9mIGxvbmdpZGVudFxuICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmFuZCBjYXNlcyA9IGNhc2UgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgdHJhdmVyc2VdXG5cbmNsYXNzIHZpcnR1YWwgbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IGludFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsb2MgLT4gJ2EgbG9jID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgeyB0eHQ7IGxvYyB9XG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgTGRvdCAoYSwgYilcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHJlY19mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgTGFiZWxsZWQgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gdmFyaWFuY2UgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4geCAtPiB4XG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgUGNvbnN0X2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gcGF5bG9hZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBTaWcgYVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUFBhdCAoYSwgYilcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUHR5cF90dXBsZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9jbGFzcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHR5cF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBSaW5oZXJpdCBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIE9pbmhlcml0IGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9hcnJheSBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfbGF6eSBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBQZXhwX2Z1bmN0aW9uIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF93aGlsZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgUGV4cF9zZW5kIChhLCBiKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXRpbnN0dmFyIChhLCBiKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IFBleHBfdW5yZWFjaGFibGVcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9XG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHsgbGV0XzsgYW5kczsgYm9keSB9XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGluXG4gICAgICAgIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9XG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfdmFyaWFudCBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHRfcmViaW5kIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUGN0eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgUGN0eV9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY3R5X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9pbmhlcml0IGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfdmFsIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfbWV0aG9kIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdGZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUGNsX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNsX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIFBjbF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGNsX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX3ZhbCBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2ZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIENma19jb25jcmV0ZSAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9pZGVudCBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbXR5X2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgUG10eV90eXBlb2YgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc2lnX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfb3BlbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHNpZ19leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9XG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUG1vZF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXZhbCAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX3ByaW1pdGl2ZSBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZXh0IGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGlyIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUGRpcl9zdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgUGRpcl9pZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiBjYXNlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgaXRlciA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbGlzdCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcHRpb24gLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiB1bml0XG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgc2VsZiNzdHJpbmcgcG9zX2ZuYW1lO1xuICAgICAgICBzZWxmI2ludCBwb3NfbG51bTtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2JvbDtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2NudW1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICAgICAgc2VsZiNwb3NpdGlvbiBsb2NfZW5kO1xuICAgICAgICBzZWxmI2Jvb2wgbG9jX2dob3N0XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGxvYyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgX2EgdHh0O1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGxvY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYTtcbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYlxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IHVuaXQgPSBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiB1bml0ID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+ICgpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiB1bml0ID0gZnVuIF8gLT4gKClcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2xvY2F0aW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lO1xuICAgICAgICBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhO1xuICAgICAgICBzZWxmI3BheWxvYWQgYlxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+ICgpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPiBzZWxmI3BhY2thZ2VfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICBiXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcmZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjYm9vbCBiO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcGF0X2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPiBzZWxmI2xvYyBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBiXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGJcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXhwX2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+IHNlbGYjY2FzZXMgYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZFxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjYXNlcyBiXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYztcbiAgICAgICAgICAgIHNlbGYjZGlyZWN0aW9uX2ZsYWcgZDtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGJcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfcGFjayBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT4gc2VsZiNsZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjX2xocztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGNfcmhzXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBzZWxmI2JpbmRpbmdfb3AgbGV0XztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gYm9keVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3A7XG4gICAgICAgIHNlbGYjcGF0dGVybiBwYm9wX3BhdDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHBib3BfZXhwO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBib3BfbG9jXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWU7XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmFsX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYylcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lO1xuICAgICAgICBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGxkX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWU7XG4gICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzO1xuICAgICAgICBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZTtcbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPiBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGNcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY3RmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcGNpX3BhcmFtcztcbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWU7XG4gICAgICAgIF9hIHBjaV9leHByO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgZFxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgYlxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGNcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPiBzZWxmI21vZHVsZV9leHByIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwc2lnX2xvY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT4gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWRfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lO1xuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0O1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1zX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10ZF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcGVuX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBvcGVuX2V4cHI7XG4gICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBpbmNsX21vZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbW9kX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYlxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYlxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwdmJfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmJfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lO1xuICAgICAgICBzZWxmI21vZHVsZV9leHByIHBtYl9leHByO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1iX2xvY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+IHNlbGYjYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2FjY10gZm9sZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2xudW0gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfYm9sIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHR4dCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gYWNjXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IE9wdGlvbmFsIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhIGFjY1xuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGIgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUFR5cCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBhY2NcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBhY2NcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYSBhY2NcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT4gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjY1xuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhIGFjY1xuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGEgYWNjXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gYWNjXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBhY2NcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX29wZW4gLT4gYWNjXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhIGFjY1xuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcGNpX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2NcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPiBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50IGEgYWNjXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGEgYWNjXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkX21hcCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+IGJvb2wgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ2FjYyAtPiBjaGFyICogJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+IGludCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2EgbGlzdCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhIG9wdGlvbiAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+IHN0cmluZyAqICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gcG9zaXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUsIGFjYyA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19ib2wsIGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBwb3NfY251bSwgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgICh7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdhY2MgLT4gbG9jYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQsIGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgbG9jX2VuZCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgbG9jX2dob3N0LCBhY2MgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGFjYyBpblxuICAgICAgICAoeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+IGxvY2F0aW9uX3N0YWNrICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhIGxvYyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHR4dCwgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBhY2MgaW5cbiAgICAgICAgKHsgdHh0OyBsb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+IGxvbmdpZGVudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKExkb3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChMYXBwbHkgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiBsb25naWRlbnRfbG9jICogJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiByZWNfZmxhZyAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gZGlyZWN0aW9uX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAnYWNjIC0+IHByaXZhdGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gbXV0YWJsZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiB2aXJ0dWFsX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdhY2MgLT4gb3ZlcnJpZGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAnYWNjIC0+IGNsb3NlZF9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gbGFiZWwgKiAnYWNjID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ2FjYyAtPiBhcmdfbGFiZWwgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBhY2MpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoTGFiZWxsZWQgYSwgYWNjKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKE9wdGlvbmFsIGEsIGFjYylcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gdmFyaWFuY2UgKiAnYWNjID0gZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+IGluamVjdGl2aXR5ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gY29uc3RhbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9pbnRlZ2VyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NoYXIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfY2hhciBhLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2Zsb2F0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAnYWNjIC0+IGF0dHJpYnV0ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCwgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+IGV4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgKChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gYXR0cmlidXRlcyAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiBwYXlsb2FkICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQU3RyIGEsIGFjYylcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTaWcgYSwgYWNjKVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFR5cCBhLCBhY2MpXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQUGF0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+IGNvcmVfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjb3JlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IChQdHlwX2FueSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYXJyb3cgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jbGFzcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyaWFudCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wYWNrYWdlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gcGFja2FnZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdhY2MgLT4gcm93X2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHByZl9kZXNjLCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Jvb2wgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChSdGFnIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFJpbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MsIGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoT3RhZyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChPaW5oZXJpdCBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ2FjYyAtPiBwYXR0ZXJuICogJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MsIGFjYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+IHBhdHRlcm5fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgYWNjKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hbGlhcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdGFudCBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdGFudCBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3JlY29yZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiBleHByZXNzaW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2FzZXMgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Z1bmN0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBkIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX21hdGNoIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3RyeSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9maWVsZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXJyYXkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NlcXVlbmNlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF93aGlsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgZSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvZXJjZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VuZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXcgYSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9vdmVycmlkZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Fzc2VydCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX29iamVjdCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXd0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcGFjayBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb3BlbiAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xldG9wIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRvcCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKFBleHBfdW5yZWFjaGFibGUsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+IGNhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNfbGhzLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IHBjX3JocywgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgKHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0sIGFjYylcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdhY2MgLT4gbGV0b3AgKiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxldF8sIGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYW5kcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYm9keSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgICh7IGxldF87IGFuZHM7IGJvZHkgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gYmluZGluZ19vcCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGJvcF9vcCwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0LCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2V4cCwgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUsIGFjYyA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICAoeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kLCBhY2MgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0LCBhY2MgPVxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiB0eXBlX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIGFjYylcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3ZhcmlhbnQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwZV9yZWNvcmQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3JlcywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ2FjYyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNzdHJfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl9yZWNvcmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiB0eXBlX2V4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGgsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAnYWNjIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9raW5kLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+IHR5cGVfZXhjZXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IsIGFjYyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXh0X2RlY2wgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfcmViaW5kIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+IGNsYXNzX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X3NpZ25hdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiBjbGFzc19zaWduYXR1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgKHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfaW5oZXJpdCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX21ldGhvZCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBwY2lfdmlydCwgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2V4cHIsIGFjYyA9IF9hIHBjaV9leHByIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvblxuICAgICAgICA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdhY2MgLT4gY2xhc3NfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2xfZGVzYywgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9zdHJ1Y3R1cmUgYSwgYWNjKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2xfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiwgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgKHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc19maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbmhlcml0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfaW5pdGlhbGl6ZXIgYSwgYWNjKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogY2xhc3NfZmllbGRfa2luZCAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChDZmtfdmlydHVhbCBhLCBhY2MpXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKENma19jb25jcmV0ZSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+IG1vZHVsZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3dpdGggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3R5cGVvZiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfYWxpYXMgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyXG4gICAgICAgIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiBmdW5jdG9yX3BhcmFtZXRlciAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKFVuaXQsIGFjYylcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKE5hbWVkIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+IHNpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYywgYWNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ192YWx1ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBleHQgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHR5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3MgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3NfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1zX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0LCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF90eXBlLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIsIGFjYyA9IF9hIHBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QsIGFjYyA9IF9hIHBpbmNsX21vZCBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gd2l0aF9jb25zdHJhaW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R1bGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHN1YnN0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ2FjYyAtPiBtb2R1bGVfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAnYWNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9mdW5jdG9yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtICogJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MsIGFjYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl92YWx1ZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfcHJpbWl0aXZlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfaW5jbHVkZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiB2YWx1ZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdmJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAnYWNjIC0+IG1vZHVsZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9leHByLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gdG9wbGV2ZWxfcGhyYXNlICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kZWYgYSwgYWNjKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0b3BfZGlyIGEsIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ICogJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MsIGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9zdHJpbmcgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9pbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYm9vbCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfYm9vbCBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+IGNhc2VzICogJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogJ2N0eCAtPiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmdcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIGN0eCBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgY3R4IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgY3R4IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgY3R4IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGN0eCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIExhcHBseSAoYSwgYilcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogJ2N0eCAtPiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogJ2N0eCAtPiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiAnY3R4IC0+IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogJ2N0eCAtPiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IE5vbGFiZWxcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6ICdjdHggLT4gaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6ICdjdHggLT4gY29uc3RhbnQgLT4gY29uc3RhbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9pbnRlZ2VyIChhLCBiKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2Zsb2F0IChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4gY3R4IHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBjdHggYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGF0dHJfbG9jIGluXG4gICAgICAgIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBjdHggYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogJ2N0eCAtPiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBTdHIgYVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2FsaWFzIChhLCBiKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF92YXJpYW50IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBjdHggcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBSdGFnIChhLCBiLCBjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiAnY3R4IC0+IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIE90YWcgKGEsIGIpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3ZhciBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHVwbGUgYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X29yIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3R5cGUgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leGNlcHRpb24gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogJ2N0eCAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiAnY3R4IC0+IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbWF0Y2ggKGEsIGIpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF90dXBsZSBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2FycmF5IGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGN0eCBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZSBpblxuICAgICAgICAgICAgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xhenkgYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9vYmplY3QgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9wYWNrIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9sZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSA9XG4gICAgICBmdW4gY3R4IHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBjdHggcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgPVxuICAgICAgZnVuIGN0eCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBjdHggbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgY3R4IGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgPVxuICAgICAgZnVuIGN0eCB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIGN0eCBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgY3R4IHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IFB0eXBlX2Fic3RyYWN0XG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl9yZWNvcmQgYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogJ2N0eCAtPiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogJ2N0eCAtPiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHRfZGVjbCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY3R5X2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiAnY3R4IC0+IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBjdHggZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUGNsX29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX21ldGhvZCBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogJ2N0eCAtPiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGN0eCBiIGluXG4gICAgICAgICAgICBQbXR5X3dpdGggKGEsIGIpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfYWxpYXMgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogJ2N0eCAtPiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBVbml0XG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXh0IGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2RzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6ICdjdHggLT4gb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2EgaW5jbHVkZV9pbmZvc1xuICAgICAgICA9XG4gICAgICBmdW4gX2EgY3R4IHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgY3R4IHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHVsZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogJ2N0eCAtPiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6ICdjdHggLT4gbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX2lkZW50IGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiAnY3R4IC0+IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl92YWx1ZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl90eXBlIChhLCBiKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R1bGUgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9vcGVuIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2luY2x1ZGUgYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogJ2N0eCAtPiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogJ2N0eCAtPiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogJ2N0eCAtPiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RlZiBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6ICdjdHggLT4gdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGRpcl9pbnQgKGEsIGIpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wdGlvbiAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvc19mbmFtZVwiLCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgcG9zX2xudW0pO1xuICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBwb3NfYm9sKTtcbiAgICAgICAgICAgIChcInBvc19jbnVtXCIsIHBvc19jbnVtKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIGxvY19zdGFydCk7XG4gICAgICAgICAgICAoXCJsb2NfZW5kXCIsIGxvY19lbmQpO1xuICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIGxvY19naG9zdCk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsb2MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwidHh0XCIsIHR4dCk7IChcImxvY1wiLCBsb2MpIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxpZGVudFwiIFsgYSBdXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxkb3RcIiBbIGE7IGIgXVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhcHBseVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ3JlcyA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBzZWxmI2NvbnN0ciBcIk5vbnJlY3Vyc2l2ZVwiIFtdXG4gICAgICAgIHwgUmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiUmVjdXJzaXZlXCIgW11cblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVXB0byAtPiBzZWxmI2NvbnN0ciBcIlVwdG9cIiBbXVxuICAgICAgICB8IERvd250byAtPiBzZWxmI2NvbnN0ciBcIkRvd250b1wiIFtdXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZSAtPiBzZWxmI2NvbnN0ciBcIlByaXZhdGVcIiBbXVxuICAgICAgICB8IFB1YmxpYyAtPiBzZWxmI2NvbnN0ciBcIlB1YmxpY1wiIFtdXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgSW1tdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiSW1tdXRhYmxlXCIgW11cbiAgICAgICAgfCBNdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiTXV0YWJsZVwiIFtdXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVmlydHVhbCAtPiBzZWxmI2NvbnN0ciBcIlZpcnR1YWxcIiBbXVxuICAgICAgICB8IENvbmNyZXRlIC0+IHNlbGYjY29uc3RyIFwiQ29uY3JldGVcIiBbXVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3ZlcnJpZGUgLT4gc2VsZiNjb25zdHIgXCJPdmVycmlkZVwiIFtdXG4gICAgICAgIHwgRnJlc2ggLT4gc2VsZiNjb25zdHIgXCJGcmVzaFwiIFtdXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENsb3NlZCAtPiBzZWxmI2NvbnN0ciBcIkNsb3NlZFwiIFtdXG4gICAgICAgIHwgT3BlbiAtPiBzZWxmI2NvbnN0ciBcIk9wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ3JlcyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBzZWxmI2NvbnN0ciBcIk5vbGFiZWxcIiBbXVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMYWJlbGxlZFwiIFsgYSBdXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9wdGlvbmFsXCIgWyBhIF1cblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ292YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ292YXJpYW50XCIgW11cbiAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ29udHJhdmFyaWFudFwiIFtdXG4gICAgICAgIHwgTm9WYXJpYW5jZSAtPiBzZWxmI2NvbnN0ciBcIk5vVmFyaWFuY2VcIiBbXVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbmplY3RpdmUgLT4gc2VsZiNjb25zdHIgXCJJbmplY3RpdmVcIiBbXVxuICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gc2VsZiNjb25zdHIgXCJOb0luamVjdGl2aXR5XCIgW11cblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2ludGVnZXJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2NoYXJcIiBbIGEgXVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X3N0cmluZ1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9mbG9hdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAoXCJhdHRyX3BheWxvYWRcIiwgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIGF0dHJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFN0clwiIFsgYSBdXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFNpZ1wiIFsgYSBdXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFR5cFwiIFsgYSBdXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFBhdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jXCIsIHB0eXBfbG9jKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIHB0eXBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gc2VsZiNjb25zdHIgXCJQdHlwX2FueVwiIFtdXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfb2JqZWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2NsYXNzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyaWFudFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfcGFja2FnZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgcHJmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBwcmZfbG9jKTtcbiAgICAgICAgICAgIChcInByZl9hdHRyaWJ1dGVzXCIsIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSdGFnXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUmluaGVyaXRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9mX2Rlc2NcIiwgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBwb2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk90YWdcIiBbIGE7IGIgXVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcGF0X2Rlc2NcIiwgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIHBwYXRfbG9jKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBwYXRfYXR0cmlidXRlc1wiLCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBzZWxmI2NvbnN0ciBcIlBwYXRfYW55XCIgW11cbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfaW50ZXJ2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIHBleHBfbG9jKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBleHBfYXR0cmlidXRlc1wiLCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1bmN0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1blwiIFsgYTsgYjsgYzsgZCBdXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9tYXRjaFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3RyeVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJ1Y3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdmFyaWFudFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2ZpZWxkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NldGZpZWxkXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZnRoZW5lbHNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlcXVlbmNlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3doaWxlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZm9yXCIgWyBhOyBiOyBjOyBkOyBlIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29lcmNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlbmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXdcIiBbIGEgXVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0aW5zdHZhclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX292ZXJyaWRlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG1vZHVsZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hc3NlcnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGF6eVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcG9seVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb2JqZWN0XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXd0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3BlblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG9wXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gc2VsZiNjb25zdHIgXCJQZXhwX3VucmVhY2hhYmxlXCIgW11cblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNfbGhzXCIsIHBjX2xocyk7IChcInBjX2d1YXJkXCIsIHBjX2d1YXJkKTsgKFwicGNfcmhzXCIsIHBjX3JocykgXVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwibGV0X1wiLCBsZXRfKTsgKFwiYW5kc1wiLCBhbmRzKTsgKFwiYm9keVwiLCBib2R5KSBdXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBib3Bfb3BcIiwgcGJvcF9vcCk7XG4gICAgICAgICAgICAoXCJwYm9wX3BhdFwiLCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBwYm9wX2V4cCk7XG4gICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBwYm9wX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmFsX25hbWVcIiwgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBwdmFsX3R5cGUpO1xuICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAoXCJwdmFsX2F0dHJpYnV0ZXNcIiwgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIHB2YWxfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwZV9uYW1lXCIsIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIHB0eXBlX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9raW5kXCIsIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBwdHlwZV9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInB0eXBlX2F0dHJpYnV0ZXNcIiwgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgcHR5cGVfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9hYnN0cmFjdFwiIFtdXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cGVfdmFyaWFudFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV9yZWNvcmRcIiBbIGEgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9vcGVuXCIgW11cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbGRfbXV0YWJsZVwiLCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBwbGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbGRfbG9jXCIsIHBsZF9sb2MpO1xuICAgICAgICAgICAgKFwicGxkX2F0dHJpYnV0ZXNcIiwgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgcGNkX25hbWUpO1xuICAgICAgICAgICAgKFwicGNkX3ZhcnNcIiwgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgcGNkX2FyZ3MpO1xuICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBwY2RfcmVzKTtcbiAgICAgICAgICAgIChcInBjZF9sb2NcIiwgcGNkX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBwY2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfcmVjb3JkXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleHRfcGF0aFwiLCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIHB0eWV4dF9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wcml2YXRlXCIsIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgcHR5ZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBwZXh0X25hbWUpO1xuICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIHBleHRfa2luZCk7XG4gICAgICAgICAgICAoXCJwZXh0X2xvY1wiLCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgcGV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgKFwicHR5ZXhuX2F0dHJpYnV0ZXNcIiwgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X2RlY2xcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4dF9yZWJpbmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIHBjdHlfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2F0dHJpYnV0ZXNcIiwgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY3NpZ19zZWxmXCIsIHBjc2lnX3NlbGYpOyAoXCJwY3NpZ19maWVsZHNcIiwgcGNzaWdfZmllbGRzKSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgcGN0Zl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIHBjdGZfbG9jKTtcbiAgICAgICAgICAgIChcInBjdGZfYXR0cmlidXRlc1wiLCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2luaGVyaXRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2lfdmlydFwiLCBwY2lfdmlydCk7XG4gICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIHBjaV9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgcGNpX25hbWUpO1xuICAgICAgICAgICAgKFwicGNpX2V4cHJcIiwgcGNpX2V4cHIpO1xuICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBwY2lfbG9jKTtcbiAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNsX2Rlc2NcIiwgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBwY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX3N0cnVjdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9sZXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc3RyX3NlbGZcIiwgcGNzdHJfc2VsZik7IChcInBjc3RyX2ZpZWxkc1wiLCBwY3N0cl9maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjZl9kZXNjXCIsIHBjZl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjZl9sb2NcIiwgcGNmX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5oZXJpdFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfdmFsXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9jb25zdHJhaW50XCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5pdGlhbGl6ZXJcIiBbIGEgXVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma192aXJ0dWFsXCIgWyBhIF1cbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma19jb25jcmV0ZVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgcG10eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBtdHlfbG9jXCIsIHBtdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBwbXR5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfd2l0aFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV90eXBlb2ZcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfYWxpYXNcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IHNlbGYjY29uc3RyIFwiVW5pdFwiIFtdXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTmFtZWRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwc2lnX2Rlc2NcIiwgcHNpZ19kZXNjKTsgKFwicHNpZ19sb2NcIiwgcHNpZ19sb2MpIF1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ192YWx1ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2RzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfb3BlblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19pbmNsdWRlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXh0ZW5zaW9uXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtZF9uYW1lXCIsIHBtZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtZF90eXBlXCIsIHBtZF90eXBlKTtcbiAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtZF9sb2NcIiwgcG1kX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXNfbmFtZVwiLCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgcG1zX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtc19sb2NcIiwgcG1zX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgcG10ZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgKFwicG10ZF9hdHRyaWJ1dGVzXCIsIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBwbXRkX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAoXCJwb3Blbl9vdmVycmlkZVwiLCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgcG9wZW5fbG9jKTtcbiAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGluY2xfbW9kXCIsIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgcGluY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R1bGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZXN1YnN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kc3Vic3RcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIHBtb2RfZGVzYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2F0dHJpYnV0ZXNcIiwgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2Rfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9mdW5jdG9yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF91bnBhY2tcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzdHJfZGVzY1wiLCBwc3RyX2Rlc2MpOyAoXCJwc3RyX2xvY1wiLCBwc3RyX2xvYykgXVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl92YWx1ZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9wcmltaXRpdmVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwdmJfcGF0KTtcbiAgICAgICAgICAgIChcInB2Yl9leHByXCIsIHB2Yl9leHByKTtcbiAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgcHZiX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIHBtYl9uYW1lKTtcbiAgICAgICAgICAgIChcInBtYl9leHByXCIsIHBtYl9leHByKTtcbiAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIHBtYl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtYl9sb2NcIiwgcG1iX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdG9wX2RlZlwiIFsgYSBdXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGlyXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgKFwicGRpcl9hcmdcIiwgcGRpcl9hcmcpO1xuICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgcGRpcl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwZGlyYV9kZXNjXCIsIHBkaXJhX2Rlc2MpOyAoXCJwZGlyYV9sb2NcIiwgcGRpcmFfbG9jKSBdXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX3N0cmluZ1wiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfYm9vbFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAnY3R4IC0+IGNoYXIgLT4gY2hhciAqICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnQgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBsaXN0XG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmcgKiAncmVzXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiAnY3R4IC0+IHBvc2l0aW9uIC0+IHBvc2l0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3NfZm5hbWUgPSBTdGRsaWIuZnN0IHBvc19mbmFtZTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gU3RkbGliLmZzdCBwb3NfbG51bTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBTdGRsaWIuZnN0IHBvc19ib2w7XG4gICAgICAgICAgICBwb3NfY251bSA9IFN0ZGxpYi5mc3QgcG9zX2NudW07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIFN0ZGxpYi5zbmQgcG9zX2ZuYW1lKTtcbiAgICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgU3RkbGliLnNuZCBwb3NfbG51bSk7XG4gICAgICAgICAgICAgIChcInBvc19ib2xcIiwgU3RkbGliLnNuZCBwb3NfYm9sKTtcbiAgICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgU3RkbGliLnNuZCBwb3NfY251bSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6ICdjdHggLT4gbG9jYXRpb24gLT4gbG9jYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxvY19zdGFydCA9IFN0ZGxpYi5mc3QgbG9jX3N0YXJ0O1xuICAgICAgICAgICAgbG9jX2VuZCA9IFN0ZGxpYi5mc3QgbG9jX2VuZDtcbiAgICAgICAgICAgIGxvY19naG9zdCA9IFN0ZGxpYi5mc3QgbG9jX2dob3N0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxvY19zdGFydFwiLCBTdGRsaWIuc25kIGxvY19zdGFydCk7XG4gICAgICAgICAgICAgIChcImxvY19lbmRcIiwgU3RkbGliLnNuZCBsb2NfZW5kKTtcbiAgICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIFN0ZGxpYi5zbmQgbG9jX2dob3N0KTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogJ2N0eCAtPiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSBjdHggdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBsb2MgaW5cbiAgICAgICAgKCB7IHR4dCA9IFN0ZGxpYi5mc3QgdHh0OyBsb2MgPSBTdGRsaWIuZnN0IGxvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eCBbIChcInR4dFwiLCBTdGRsaWIuc25kIHR4dCk7IChcImxvY1wiLCBTdGRsaWIuc25kIGxvYykgXVxuICAgICAgICApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogJ2N0eCAtPiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIChMaWRlbnQgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIkxpZGVudFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGRvdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMZG90XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIExhcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyAqICdyZXMgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiAnY3R4IC0+IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBsYWJlbCA6ICdjdHggLT4gbGFiZWwgLT4gbGFiZWwgKiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBzZWxmI2NvbnN0ciBjdHggXCJOb2xhYmVsXCIgW10pXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBMYWJlbGxlZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGFiZWxsZWRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9wdGlvbmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPcHRpb25hbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2ludGVnZXIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2ludGVnZXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjb25zdF9jaGFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfY2hhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNvbnN0X3N0cmluZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9zdHJpbmdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfZmxvYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2Zsb2F0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiAnY3R4IC0+IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBhdHRyX25hbWUgPSBTdGRsaWIuZnN0IGF0dHJfbmFtZTtcbiAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IFN0ZGxpYi5mc3QgYXR0cl9wYXlsb2FkO1xuICAgICAgICAgICAgYXR0cl9sb2MgPSBTdGRsaWIuZnN0IGF0dHJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImF0dHJfbmFtZVwiLCBTdGRsaWIuc25kIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBTdGRsaWIuc25kIGF0dHJfcGF5bG9hZCk7XG4gICAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIFN0ZGxpYi5zbmQgYXR0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogJ2N0eCAtPiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFN0ciAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFN0clwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFNpZyAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFNpZ1wiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFR5cCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFR5cFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQUGF0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBQYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBjdHggcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IFN0ZGxpYi5mc3QgcHR5cF9kZXNjO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBTdGRsaWIuZnN0IHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgU3RkbGliLnNuZCBwdHlwX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwdHlwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FueVwiIFtdKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfb2JqZWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY2xhc3MgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9jbGFzc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9hbGlhcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FsaWFzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJpYW50XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3BhY2thZ2UgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfcGFja2FnZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggYlxuICAgICAgICBpblxuICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiAnY3R4IC0+IHJvd19maWVsZCAtPiByb3dfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHByZl9kZXNjID0gU3RkbGliLmZzdCBwcmZfZGVzYztcbiAgICAgICAgICAgIHByZl9sb2MgPSBTdGRsaWIuZnN0IHByZl9sb2M7XG4gICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgU3RkbGliLnNuZCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInByZl9sb2NcIiwgU3RkbGliLnNuZCBwcmZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcmZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6ICdjdHggLT4gcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUnRhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJ0YWdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFJpbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJSaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9mX2Rlc2MgPSBTdGRsaWIuZnN0IHBvZl9kZXNjO1xuICAgICAgICAgICAgcG9mX2xvYyA9IFN0ZGxpYi5mc3QgcG9mX2xvYztcbiAgICAgICAgICAgIHBvZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBvZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBTdGRsaWIuc25kIHBvZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggT3RhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPdGFnXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9pbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgY3R4IHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSBTdGRsaWIuZnN0IHBwYXRfZGVzYztcbiAgICAgICAgICAgIHBwYXRfbG9jID0gU3RkbGliLmZzdCBwcGF0X2xvYztcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBTdGRsaWIuc25kIHBwYXRfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcGF0X2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHBhdF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbnlcIiBbXSlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9pbnRlcnZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2ludGVydmFsXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RydWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RydWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF90eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfbGF6eSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9sYXp5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSBTdGRsaWIuZnN0IHBleHBfZGVzYztcbiAgICAgICAgICAgIHBleHBfbG9jID0gU3RkbGliLmZzdCBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBTdGRsaWIuc25kIHBleHBfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGV4cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9mdW5jdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5jdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbWF0Y2ggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9tYXRjaFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfdHJ5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHJ5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9yZWNvcmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9maWVsZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZpZWxkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX3NldGZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXRmaWVsZFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXJyYXkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXJyYXlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfaWZ0aGVuZWxzZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfaWZ0aGVuZWxzZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXF1ZW5jZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlcXVlbmNlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfd2hpbGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF93aGlsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICAoIFBleHBfZm9yXG4gICAgICAgICAgICAgICAgKCBTdGRsaWIuZnN0IGEsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGIsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGMsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGQsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGUgKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mb3JcIlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYTtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYjtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYztcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZDtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZTtcbiAgICAgICAgICAgICAgICBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2NvZXJjZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29lcmNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlbmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZW5kXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX25ldyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9uZXdcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0aW5zdHZhciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGluc3R2YXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX292ZXJyaWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX292ZXJyaWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRtb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRleGNlcHRpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Fzc2VydCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hc3NlcnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfb2JqZWN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX29iamVjdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3dHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRvcCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRvcFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgICAgICAgKFBleHBfdW5yZWFjaGFibGUsIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdW5yZWFjaGFibGVcIiBbXSlcblxuICAgIG1ldGhvZCBjYXNlIDogJ2N0eCAtPiBjYXNlIC0+IGNhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY19saHMgPSBTdGRsaWIuZnN0IHBjX2xocztcbiAgICAgICAgICAgIHBjX2d1YXJkID0gU3RkbGliLmZzdCBwY19ndWFyZDtcbiAgICAgICAgICAgIHBjX3JocyA9IFN0ZGxpYi5mc3QgcGNfcmhzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjX2xoc1wiLCBTdGRsaWIuc25kIHBjX2xocyk7XG4gICAgICAgICAgICAgIChcInBjX2d1YXJkXCIsIFN0ZGxpYi5zbmQgcGNfZ3VhcmQpO1xuICAgICAgICAgICAgICAoXCJwY19yaHNcIiwgU3RkbGliLnNuZCBwY19yaHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbGV0b3AgOiAnY3R4IC0+IGxldG9wIC0+IGxldG9wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxldF8gPSBTdGRsaWIuZnN0IGxldF87XG4gICAgICAgICAgICBhbmRzID0gU3RkbGliLmZzdCBhbmRzO1xuICAgICAgICAgICAgYm9keSA9IFN0ZGxpYi5mc3QgYm9keTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJsZXRfXCIsIFN0ZGxpYi5zbmQgbGV0Xyk7XG4gICAgICAgICAgICAgIChcImFuZHNcIiwgU3RkbGliLnNuZCBhbmRzKTtcbiAgICAgICAgICAgICAgKFwiYm9keVwiLCBTdGRsaWIuc25kIGJvZHkpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6ICdjdHggLT4gYmluZGluZ19vcCAtPiBiaW5kaW5nX29wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGJvcF9vcCA9IFN0ZGxpYi5mc3QgcGJvcF9vcDtcbiAgICAgICAgICAgIHBib3BfcGF0ID0gU3RkbGliLmZzdCBwYm9wX3BhdDtcbiAgICAgICAgICAgIHBib3BfZXhwID0gU3RkbGliLmZzdCBwYm9wX2V4cDtcbiAgICAgICAgICAgIHBib3BfbG9jID0gU3RkbGliLmZzdCBwYm9wX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwYm9wX29wXCIsIFN0ZGxpYi5zbmQgcGJvcF9vcCk7XG4gICAgICAgICAgICAgIChcInBib3BfcGF0XCIsIFN0ZGxpYi5zbmQgcGJvcF9wYXQpO1xuICAgICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBTdGRsaWIuc25kIHBib3BfZXhwKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9sb2NcIiwgU3RkbGliLnNuZCBwYm9wX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2YWxfbmFtZSA9IFN0ZGxpYi5mc3QgcHZhbF9uYW1lO1xuICAgICAgICAgICAgcHZhbF90eXBlID0gU3RkbGliLmZzdCBwdmFsX3R5cGU7XG4gICAgICAgICAgICBwdmFsX3ByaW0gPSBTdGRsaWIuZnN0IHB2YWxfcHJpbTtcbiAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZhbF9sb2MgPSBTdGRsaWIuZnN0IHB2YWxfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBTdGRsaWIuc25kIHB2YWxfbmFtZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBTdGRsaWIuc25kIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfcHJpbVwiLCBTdGRsaWIuc25kIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2YWxfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIFN0ZGxpYi5zbmQgcHZhbF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgY3R4IHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgY3R4IHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBlX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWUgPSBTdGRsaWIuZnN0IHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBTdGRsaWIuZnN0IHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gU3RkbGliLmZzdCBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBTdGRsaWIuZnN0IHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgU3RkbGliLnNuZCBwdHlwZV9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfY3N0cnNcIiwgU3RkbGliLnNuZCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgU3RkbGliLnNuZCBwdHlwZV9raW5kKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBlX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgU3RkbGliLnNuZCBwdHlwZV9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogJ2N0eCAtPiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFB0eXBlX2Fic3RyYWN0LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9hYnN0cmFjdFwiIFtdKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV92YXJpYW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV92YXJpYW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cGVfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChQdHlwZV9vcGVuLCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9vcGVuXCIgW10pXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBsZF9uYW1lID0gU3RkbGliLmZzdCBwbGRfbmFtZTtcbiAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gU3RkbGliLmZzdCBwbGRfbXV0YWJsZTtcbiAgICAgICAgICAgIHBsZF90eXBlID0gU3RkbGliLmZzdCBwbGRfdHlwZTtcbiAgICAgICAgICAgIHBsZF9sb2MgPSBTdGRsaWIuZnN0IHBsZF9sb2M7XG4gICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGxkX25hbWVcIiwgU3RkbGliLnNuZCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIFN0ZGxpYi5zbmQgcGxkX211dGFibGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBTdGRsaWIuc25kIHBsZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicGxkX2xvY1wiLCBTdGRsaWIuc25kIHBsZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBsZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZF9uYW1lID0gU3RkbGliLmZzdCBwY2RfbmFtZTtcbiAgICAgICAgICAgIHBjZF92YXJzID0gU3RkbGliLmZzdCBwY2RfdmFycztcbiAgICAgICAgICAgIHBjZF9hcmdzID0gU3RkbGliLmZzdCBwY2RfYXJncztcbiAgICAgICAgICAgIHBjZF9yZXMgPSBTdGRsaWIuZnN0IHBjZF9yZXM7XG4gICAgICAgICAgICBwY2RfbG9jID0gU3RkbGliLmZzdCBwY2RfbG9jO1xuICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBTdGRsaWIuc25kIHBjZF92YXJzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgU3RkbGliLnNuZCBwY2RfYXJncyk7XG4gICAgICAgICAgICAgIChcInBjZF9yZXNcIiwgU3RkbGliLnNuZCBwY2RfcmVzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBTdGRsaWIuc25kIHBjZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3JlY29yZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNzdHJfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBTdGRsaWIuZnN0IHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBTdGRsaWIuZnN0IHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jID0gU3RkbGliLmZzdCBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhdGgpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9jb25zdHJ1Y3RvcnNcIiwgU3RkbGliLnNuZCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgU3RkbGliLnNuZCBwdHlleHRfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgU3RkbGliLnNuZCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gU3RkbGliLmZzdCBwZXh0X25hbWU7XG4gICAgICAgICAgICBwZXh0X2tpbmQgPSBTdGRsaWIuZnN0IHBleHRfa2luZDtcbiAgICAgICAgICAgIHBleHRfbG9jID0gU3RkbGliLmZzdCBwZXh0X2xvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBTdGRsaWIuc25kIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBleHRfa2luZFwiLCBTdGRsaWIuc25kIHBleHRfa2luZCk7XG4gICAgICAgICAgICAgIChcInBleHRfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBTdGRsaWIuZnN0IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgICAgIHB0eWV4bl9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4bl9sb2M7XG4gICAgICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4bl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHRfZGVjbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfZGVjbFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHRfcmViaW5kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXh0X3JlYmluZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBjdHggcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcGN0eV9kZXNjO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBTdGRsaWIuZnN0IHBjdHlfbG9jO1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9sb2NcIiwgU3RkbGliLnNuZCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3R5X3NpZ25hdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9zaWduYXR1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGN0eV9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIGN0eCBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIGN0eCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3NpZ19zZWxmID0gU3RkbGliLmZzdCBwY3NpZ19zZWxmO1xuICAgICAgICAgICAgcGNzaWdfZmllbGRzID0gU3RkbGliLmZzdCBwY3NpZ19maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzaWdfc2VsZlwiLCBTdGRsaWIuc25kIHBjc2lnX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3NpZ19maWVsZHNcIiwgU3RkbGliLnNuZCBwY3NpZ19maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIGN0eCBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gU3RkbGliLmZzdCBwY3RmX2Rlc2M7XG4gICAgICAgICAgICBwY3RmX2xvYyA9IFN0ZGxpYi5mc3QgcGN0Zl9sb2M7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2xvY1wiLCBTdGRsaWIuc25kIHBjdGZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0Zl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX3ZhbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eFxuICAgICAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfbWV0aG9kXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIGN0eCBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjaV92aXJ0ID0gU3RkbGliLmZzdCBwY2lfdmlydDtcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBTdGRsaWIuZnN0IHBjaV9wYXJhbXM7XG4gICAgICAgICAgICBwY2lfbmFtZSA9IFN0ZGxpYi5mc3QgcGNpX25hbWU7XG4gICAgICAgICAgICBwY2lfZXhwciA9IFN0ZGxpYi5mc3QgcGNpX2V4cHI7XG4gICAgICAgICAgICBwY2lfbG9jID0gU3RkbGliLmZzdCBwY2lfbG9jO1xuICAgICAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIFN0ZGxpYi5zbmQgcGNpX3ZpcnQpO1xuICAgICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInBjaV9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNpX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBTdGRsaWIuc25kIHBjaV9leHByKTtcbiAgICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBTdGRsaWIuc25kIHBjaV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2lfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSBTdGRsaWIuZnN0IHBjbF9kZXNjO1xuICAgICAgICAgICAgcGNsX2xvYyA9IFN0ZGxpYi5mc3QgcGNsX2xvYztcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBTdGRsaWIuc25kIHBjbF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBTdGRsaWIuc25kIHBjbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX3N0cnVjdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBjbF9mdW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjbF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNsX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjbF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gY3R4IHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIGN0eCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3N0cl9zZWxmID0gU3RkbGliLmZzdCBwY3N0cl9zZWxmO1xuICAgICAgICAgICAgcGNzdHJfZmllbGRzID0gU3RkbGliLmZzdCBwY3N0cl9maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzdHJfc2VsZlwiLCBTdGRsaWIuc25kIHBjc3RyX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3N0cl9maWVsZHNcIiwgU3RkbGliLnNuZCBwY3N0cl9maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIGN0eCBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZl9kZXNjID0gU3RkbGliLmZzdCBwY2ZfZGVzYztcbiAgICAgICAgICAgIHBjZl9sb2MgPSBTdGRsaWIuZnN0IHBjZl9sb2M7XG4gICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY2ZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjZl9sb2NcIiwgU3RkbGliLnNuZCBwY2ZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjZl9pbmhlcml0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaGVyaXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl92YWwgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBjZl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfaW5pdGlhbGl6ZXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9pbml0aWFsaXplclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIENma192aXJ0dWFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfdmlydHVhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBDZmtfY29uY3JldGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiQ2ZrX2NvbmNyZXRlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcG10eV9kZXNjO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBTdGRsaWIuZnN0IHBtdHlfbG9jO1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG10eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcG10eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgU3RkbGliLnNuZCBwbXR5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtdHlfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV93aXRoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfd2l0aFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfdHlwZW9mIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3R5cGVvZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2FsaWFzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2FsaWFzXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgc2VsZiNjb25zdHIgY3R4IFwiVW5pdFwiIFtdKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggTmFtZWQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTmFtZWRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6ICdjdHggLT4gc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgICggeyBwc2lnX2Rlc2MgPSBTdGRsaWIuZnN0IHBzaWdfZGVzYzsgcHNpZ19sb2MgPSBTdGRsaWIuZnN0IHBzaWdfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzaWdfZGVzY1wiLCBTdGRsaWIuc25kIHBzaWdfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzaWdfbG9jXCIsIFN0ZGxpYi5zbmQgcHNpZ19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ192YWx1ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ192YWx1ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ19leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtZF9uYW1lID0gU3RkbGliLmZzdCBwbWRfbmFtZTtcbiAgICAgICAgICAgIHBtZF90eXBlID0gU3RkbGliLmZzdCBwbWRfdHlwZTtcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtZF9sb2MgPSBTdGRsaWIuZnN0IHBtZF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgU3RkbGliLnNuZCBwbWRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtZF90eXBlXCIsIFN0ZGxpYi5zbmQgcG1kX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbWRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBTdGRsaWIuc25kIHBtZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBTdGRsaWIuZnN0IHBtc19uYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gU3RkbGliLmZzdCBwbXNfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbXNfbG9jID0gU3RkbGliLmZzdCBwbXNfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtc19uYW1lXCIsIFN0ZGxpYi5zbmQgcG1zX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgU3RkbGliLnNuZCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwbXNfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBTdGRsaWIuc25kIHBtc19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdGRfbmFtZSA9IFN0ZGxpYi5mc3QgcG10ZF9uYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gU3RkbGliLmZzdCBwbXRkX3R5cGU7XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtdGRfbG9jID0gU3RkbGliLmZzdCBwbXRkX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgU3RkbGliLnNuZCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX3R5cGVcIiwgU3RkbGliLnNuZCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXRkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBTdGRsaWIuc25kIHBtdGRfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9wZW5fZXhwciA9IFN0ZGxpYi5mc3QgcG9wZW5fZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gU3RkbGliLmZzdCBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgIHBvcGVuX2xvYyA9IFN0ZGxpYi5mc3QgcG9wZW5fbG9jO1xuICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3Blbl9leHByXCIsIFN0ZGxpYi5zbmQgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIFN0ZGxpYi5zbmQgcG9wZW5fb3ZlcnJpZGUpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgU3RkbGliLnNuZCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwaW5jbF9tb2QgPSBTdGRsaWIuZnN0IHBpbmNsX21vZDtcbiAgICAgICAgICAgIHBpbmNsX2xvYyA9IFN0ZGxpYi5mc3QgcGluY2xfbG9jO1xuICAgICAgICAgICAgcGluY2xfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgU3RkbGliLnNuZCBwaW5jbF9tb2QpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgU3RkbGliLnNuZCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlc3Vic3RcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2RzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2RzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFN0ZGxpYi5mc3QgcG1vZF9kZXNjO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBTdGRsaWIuZnN0IHBtb2RfbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIFN0ZGxpYi5zbmQgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9sb2NcIiwgU3RkbGliLnNuZCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtb2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2Rfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX3VucGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF91bnBhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBjdHggcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzdHJfbG9jIGluXG4gICAgICAgICggeyBwc3RyX2Rlc2MgPSBTdGRsaWIuZnN0IHBzdHJfZGVzYzsgcHN0cl9sb2MgPSBTdGRsaWIuZnN0IHBzdHJfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzdHJfZGVzY1wiLCBTdGRsaWIuc25kIHBzdHJfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzdHJfbG9jXCIsIFN0ZGxpYi5zbmQgcHN0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfZXZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3ZhbHVlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdmFsdWVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3ByaW1pdGl2ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9wcmltaXRpdmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl90eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcmVjbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3JlY21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9tb2R0eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdmJfcGF0ID0gU3RkbGliLmZzdCBwdmJfcGF0O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBTdGRsaWIuZnN0IHB2Yl9leHByO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZiX2xvYyA9IFN0ZGxpYi5mc3QgcHZiX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIFN0ZGxpYi5zbmQgcHZiX3BhdCk7XG4gICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIFN0ZGxpYi5zbmQgcHZiX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBTdGRsaWIuc25kIHB2Yl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBTdGRsaWIuZnN0IHBtYl9uYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBTdGRsaWIuZnN0IHBtYl9leHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1iX2xvYyA9IFN0ZGxpYi5mc3QgcG1iX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWJfbmFtZVwiLCBTdGRsaWIuc25kIHBtYl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgU3RkbGliLnNuZCBwbWJfZXhwcik7XG4gICAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWJfbG9jXCIsIFN0ZGxpYi5zbmQgcG1iX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0b3BfZGVmIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdG9wX2RlZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kaXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGlyXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZGlyX25hbWUgPSBTdGRsaWIuZnN0IHBkaXJfbmFtZTtcbiAgICAgICAgICAgIHBkaXJfYXJnID0gU3RkbGliLmZzdCBwZGlyX2FyZztcbiAgICAgICAgICAgIHBkaXJfbG9jID0gU3RkbGliLmZzdCBwZGlyX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyX25hbWVcIiwgU3RkbGliLnNuZCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBTdGRsaWIuc25kIHBkaXJfYXJnKTtcbiAgICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgU3RkbGliLnNuZCBwZGlyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJhX2Rlc2MgPSBTdGRsaWIuZnN0IHBkaXJhX2Rlc2M7XG4gICAgICAgICAgICBwZGlyYV9sb2MgPSBTdGRsaWIuZnN0IHBkaXJhX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyYV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGRpcmFfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBkaXJhX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJhX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfc3RyaW5nIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX3N0cmluZ1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGRpcl9pbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9pbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfYm9vbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9ib29sXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzICogJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbltAQEBlbmRdXG5bQEBAZW5kXVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnRcblxubGV0IHRvX2V4dGVuc2lvbiAoZXJyb3IgOiBBc3RsaWIuTG9jYXRpb24uRXJyb3IudCkgPVxuICBsZXQgb3BlbiBBc3RsaWIuTG9jYXRpb24uRXJyb3IgaW5cbiAgbGV0IG9wZW4gQXN0X2hlbHBlciBpblxuICBpZiBub3QgKGlzX3dlbGxfZm9ybWVkIGVycm9yKSB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJ0b19leHRlbnNpb246IGV4cGVjdGVkIGtpbmQgUmVwb3J0X2Vycm9yXCIpO1xuICBsZXQgc3ViX21zZ3MgPSBzdWJfbXNncyBlcnJvciBpblxuICBsZXQgbWFpbl9tc2cgPSBtYWluX21zZyBlcnJvciBpblxuICBsZXQgZXJyX2V4dGVuc2lvbl9uYW1lIGxvYyA9IHsgTG9jYXRpb24ubG9jOyB0eHQgPSBcIm9jYW1sLmVycm9yXCIgfSBpblxuICBsZXQgbWtfc3RyaW5nX2NvbnN0YW50IHggPSBTdHIuZXZhbCAoRXhwLmNvbnN0YW50IChDb25zdC5zdHJpbmcgeCkpIGluXG4gIGxldCBleHRlbnNpb25fb2Zfc3ViX21zZyAoc3ViX21zZyA6IHN0cmluZyBMb2NhdGlvbi5sb2MpID1cbiAgICBTdHIuZXh0ZW5zaW9uXG4gICAgICAoZXJyX2V4dGVuc2lvbl9uYW1lIHN1Yl9tc2cubG9jLCBQU3RyIFsgbWtfc3RyaW5nX2NvbnN0YW50IHN1Yl9tc2cudHh0IF0pXG4gIGluXG4gICggZXJyX2V4dGVuc2lvbl9uYW1lIG1haW5fbXNnLmxvYyxcbiAgICBQYXJzZXRyZWUuUFN0clxuICAgICAgKG1rX3N0cmluZ19jb25zdGFudCBtYWluX21zZy50eHQgOjogTGlzdC5tYXAgZXh0ZW5zaW9uX29mX3N1Yl9tc2cgc3ViX21zZ3MpXG4gIClcblxubGV0IHJlZ2lzdGVyX2Vycm9yX29mX2V4biA9IEFzdGxpYi5Mb2NhdGlvbi5yZWdpc3Rlcl9lcnJvcl9vZl9leG5cblxubGV0IG1lc3NhZ2UgZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24udHh0OyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgdHh0XG5cbmxldCBzZXRfbWVzc2FnZSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5zZXRfbWFpbl9tc2dcblxubGV0IG1ha2UgfmxvYyB0eHQgfnN1YiA9XG4gIGxldCBzdWIgPSBMaXN0Lm1hcCAoZnVuIChsb2MsIHR4dCkgLT4geyBBc3RsaWIuTG9jYXRpb24ubG9jOyB0eHQgfSkgc3ViIGluXG4gIEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWtlIH5zdWIgeyBsb2M7IHR4dCB9XG5cbmxldCB1cGRhdGVfbG9jID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX2xvY1xuXG5sZXQgZ2V0X2xvY2F0aW9uIGVycm9yID1cbiAgbGV0IHsgQXN0bGliLkxvY2F0aW9uLmxvYzsgXyB9ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm1haW5fbXNnIGVycm9yIGluXG4gIGxvY1xuXG5sZXQgb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm9mX2V4blxubGV0IHJhaXNlIGVycm9yID0gcmFpc2UgKEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBlcnJvcilcbiIsIm1vZHVsZSBEb19ub3RfdXNlX2RpcmVjdGx5ID0gc3RydWN0IGVuZFxubW9kdWxlIEFmbF9pbnN0cnVtZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFmbF9pbnN0cnVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBBbGlhc19hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BbGlhc19hbmFseXNpcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQWxsb2NhdGVkX2NvbnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsbG9jYXRlZF9jb25zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEFyY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXJjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgQXJnX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFyZ19oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21nZW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saWJyYXJpYW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtbGluayBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtcGFja2FnZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3R0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXR0cl9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5BdHRyX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkF1Z21lbnRfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQmFja2VuZF9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBCYWNrZW5kX3ZhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CYWNrZW5kX3ZhciBpbnN0ZWFkXCJdXG5tb2R1bGUgQmludXRpbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CaW51dGlscyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb24gaW5zdGVhZFwiXVxubW9kdWxlIEJyYW5jaF9yZWxheGF0aW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb25faW50ZiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfZXhwb3J0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnVpbGRfZXhwb3J0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX3BhdGhfcHJlZml4X21hcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWxkX3BhdGhfcHJlZml4X21hcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbHRpbl9hdHRyaWJ1dGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbHRpbl9hdHRyaWJ1dGVzIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVwYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlc2VjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CeXRlc2VjdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIENTRSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0UgaW5zdGVhZFwiXVxubW9kdWxlIENTRWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0VnZW4gaW5zdGVhZFwiXVxubW9kdWxlIENhbWxpbnRlcm5hbE1lbmhpckxpYiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNhbWxpbnRlcm5hbE1lbmhpckxpYiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2NvbXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DY29tcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBDbGZsYWdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2xmbGFncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb25fYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbl9hdXggaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfZWxlbWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2VsZW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vZmZzZXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb2Zmc2V0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIENtaV9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbWlfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faGVscGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faGVscGVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW4gaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbl9zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW5fc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIENtb19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENtdDJhbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdDJhbm5vdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ210X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdF9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENteF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENteHNfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb2xvcmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db2xvcmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tYmFsbG9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbWJhbGxvYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGF0aW9uX3VuaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsYXRpb25fdW5pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQ29tcGlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZV9jb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21waWxlX2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcG1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wbWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29uZmlnIGluc3RlYWRcIl1cbm1vZHVsZSBDb25maWdfYm9vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29uZmlnX21haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbnNpc3RibCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbnNpc3RibCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29udmVydF9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbnZlcnRfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ3R5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGF0YWZsb3cgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRGF0YWZsb3cgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFyZXByID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGF0YXJlcHIgaW5zdGVhZFwiXVxubW9kdWxlIERlYWRjb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRlYWRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBEZWJ1Z2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZWJ1Z2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIERlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRGlmZmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmcgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmdfd2l0aF9rZXlzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGlmZmluZ193aXRoX2tleXMgaW5zdGVhZFwiXVxubW9kdWxlIERsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgRG9jc3RyaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvY3N0cmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIERvbWFpbnN0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRG9tYWluc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIEVmZmVjdF9hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FZmZlY3RfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FbWl0YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0Y29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuRW1pdGNvZGUgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgRW52YXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRW52YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVycm9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3J0cmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVycm9ydHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaWQgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mb19mb3JfcGFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mb19mb3JfcGFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwdW5nZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgRXh0cmFjdF9wcm9qZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHRyYWN0X3Byb2plY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGaW5kX3JlY3Vyc2l2ZV9mdW5jdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaXRlcmF0b3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfaXRlcmF0b3JzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3RvX2NsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV90b19jbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3V0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEZyZXNoZW5pbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRnJlc2hlbmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgR2VucHJpbnR2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLkdlbnByaW50dmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJZF90eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JZF90eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JZGVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnRpZmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBJbXBvcnRfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkltcG9ydF9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2RfZXJyb3JwcmludGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZW1vZF9lcnJvcnByaW50ZXIgaW5zdGVhZFwiXVxubW9kdWxlIEluY29uc3RhbnRfaWRlbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluY29uc3RhbnRfaWRlbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluaXRpYWxpemVfc3ltYm9sX3RvX2xldF9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2Nvc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfY29zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfZGVjaXNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfZGVjaXNpb24gaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIElubGluaW5nX3N0YXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3N0YXRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0c190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0c190eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfdHJhbnNmb3JtcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ190cmFuc2Zvcm1zIGluc3RlYWRcIl1cbm1vZHVsZSBJbnN0cnVjdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuSW5zdHJ1Y3QgaW5zdGVhZFwiXVxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJmIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcm5hbF92YXJpYWJsZV9uYW1lcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcm5hbF92YXJpYWJsZV9uYW1lcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJ2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJ2YWwgaW5zdGVhZFwiXVxubW9kdWxlIEludmFyaWFudF9wYXJhbXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW52YXJpYW50X3BhcmFtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBMYXp5X2JhY2t0cmFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhenlfYmFja3RyYWNrIGluc3RlYWRcIl1cbm1vZHVsZSBMZXhlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxleGVyIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcl9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyaXplID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcml6ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlua2FnZV9uYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmthZ2VfbmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluc2NhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5zY2FuIGluc3RlYWRcIl1cbm1vZHVsZSBMaXZlbmVzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaXZlbmVzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9hZF9wYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9hZF9wYXRoIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhbF9zdG9yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2FsX3N0b3JlIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2F0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBMb25naWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIE1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTWFjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgTWFpbl9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFpbl9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBNYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5NYWluZHJpdmVyIGluc3RlYWRcIl1cbm1vZHVsZSBNYWtlZGVwZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFrZWRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWF0Y2hpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYXRjaGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWV0YSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ldGEgaW5zdGVhZFwiXVxubW9kdWxlIE1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBNdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk10eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBNdXRhYmxlX3ZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk11dGFibGVfdmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIE51bWJlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5OdW1iZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBPcGNvZGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3Bjb2RlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3ByaW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3ByaW50IGluc3RlYWRcIl1cbm1vZHVsZSBPcHRjb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdGNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIE9wdGVycm9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRlcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIE9wdG1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE9wdG1haW5kcml2ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0bWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgT3V0Y29tZXRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFBhcmFtZXRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QYXJhbWV0ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2V0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXNzX3dyYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFzc193cmFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0dGVybnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXR0ZXJucyBpbnN0ZWFkXCJdXG5tb2R1bGUgUGVyc2lzdGVudF9lbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QZXJzaXN0ZW50X2VudiBpbnN0ZWFkXCJdXG5tb2R1bGUgUG9sbGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qb2xsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBQcGFyc2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBwcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBwcmludGFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJlZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJlZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBQcmltaXRpdmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmltaXRpdmUgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50YXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRpbnN0ciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuUHJpbnRpbnN0ciBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludGxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRsaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bWFjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludG1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIFByaW50cGF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRwYXQgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXAgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHR5cGVkIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2MgaW5zdGVhZFwiXVxubW9kdWxlIFByb2ZpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Qcm9maWxlIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9qZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2plY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFJlY19jaGVjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJlY19jaGVjayBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVmX3RvX3ZhcmlhYmxlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWZfdG9fdmFyaWFibGVzIGluc3RlYWRcIl1cbm1vZHVsZSBSZWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVnIGluc3RlYWRcIl1cbm1vZHVsZSBSZWxvYWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVsb2FkIGluc3RlYWRcIl1cbm1vZHVsZSBSZWxvYWRnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVsb2FkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfZnJlZV92YXJzX2VxdWFsX3RvX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX2FyZ3VtZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX2FyZ3VtZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9jbG9zdXJlX3ZhcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9jbG9zdXJlX3ZhcnMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfcHJvZ3JhbV9jb25zdHJ1Y3RzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfcHJvZ3JhbV9jb25zdHJ1Y3RzIGluc3RlYWRcIl1cbm1vZHVsZSBSdW50aW1lZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUnVudGltZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2NoZWRnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2NoZWRnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkdWxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2NoZWR1bGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VsZWN0Z2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbGVjdGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VsZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbGVjdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VtYW50aWNzX29mX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VtYW50aWNzX29mX3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIFNldF9vZl9jbG9zdXJlc19pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZXRfb2ZfY2xvc3VyZXNfaWQgaW5zdGVhZFwiXVxubW9kdWxlIFNldF9vZl9jbG9zdXJlc19vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX29yaWdpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaGFwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcmVfY29uc3RhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNoYXJlX2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2lnbmF0dXJlX2dyb3VwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2lnbmF0dXJlX2dyb3VwIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGVfdmFsdWVfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsZV92YWx1ZV9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaW1wbGlmIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHNfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgU2ltcGxpZnlfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTcGlsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TcGlsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BsaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BsaXQgaW5zdGVhZFwiXVxubW9kdWxlIFN0YXRpY19leGNlcHRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhdGljX2V4Y2VwdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RybWF0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Ryb25nbHlfY29ubmVjdGVkX2NvbXBvbmVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFN0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3Vic3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdWJzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3dpdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3dpdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBTeW10YWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN5bXRhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBTeW50YXhlcnIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW50YXhlcnIgaW5zdGVhZFwiXVxubW9kdWxlIFRhZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UYWcgaW5zdGVhZFwiXVxubW9kdWxlIFRhcmdldGludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhcmdldGludCBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfbWFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIFRlcm1pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGVybWluZm8gaW5zdGVhZFwiXVxubW9kdWxlIFRtYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRtYyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bjb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFRvcGRpcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGRpcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGV2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGV2YWwgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGhvb2tzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUb3Bsb29wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bsb29wIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BtYWluIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BzdGFydCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xhdHRyaWJ1dGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xhdHRyaWJ1dGUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG9iaiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG9iaiBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNscHJpbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbHByaW0gaW5zdGVhZFwiXVxubW9kdWxlIFRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2wgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfcHJvcGVydGllcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3Byb3BlcnRpZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3NlcGFyYWJpbGl0eSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3NlcGFyYWJpbGl0eSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdW5ib3hlZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3VuYm94ZWQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3ZhcmlhbmNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdmFyaWFuY2UgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkdHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkdHJlZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVvcHQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlb3B0IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBldGV4cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGV0ZXhwIGluc3RlYWRcIl1cbm1vZHVsZSBVbl9hbmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5fYW5mIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfc3BlY2lhbGlzZWRfYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBVbnR5cGVhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5VbnR5cGVhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFZhcl93aXRoaW5fY2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJfd2l0aGluX2Nsb3N1cmUgaW5zdGVhZFwiXVxubW9kdWxlIFZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBXYXJuaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLldhcm5pbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBYODZfZHNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9kc2wgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9nYXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X2dhcyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X21hc20gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X21hc20gaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9wcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9wcm9jIGluc3RlYWRcIl1cbiIsIm9wZW4gU3RkTGFiZWxzXG5cbmxldCBwYXRkaWZmX2NtZCB+dXNlX2NvbG9yIH5leHRyYV9wYXRkaWZmX2FyZ3MgPVxuICBsZXQgYXJncyA9XG4gICAgTGlzdC5jb25jYXRcbiAgICAgIFtcbiAgICAgICAgWyBcIi1rZWVwLXdoaXRlc3BhY2VcIiBdO1xuICAgICAgICBbIFwiLWxvY2F0aW9uLXN0eWxlIG9tYWtlXCIgXTtcbiAgICAgICAgKGlmIHVzZV9jb2xvciB0aGVuIFtdIGVsc2UgWyBcIi1hc2NpaVwiIF0pO1xuICAgICAgICBleHRyYV9wYXRkaWZmX2FyZ3M7XG4gICAgICBdXG4gIGluXG4gIFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoXCJwYXRkaWZmXCIgOjogYXJncylcblxubGV0IHByaW50ID9kaWZmX2NvbW1hbmQgPyhleHRyYV9wYXRkaWZmX2FyZ3MgPSBbXSkgPyh1c2VfY29sb3IgPSBmYWxzZSkgfmZpbGUxXG4gICAgfmZpbGUyICgpID1cbiAgbGV0IGV4ZWMgY21kID1cbiAgICBsZXQgY21kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgMT4mMlwiIGNtZCAoRmlsZW5hbWUucXVvdGUgZmlsZTEpXG4gICAgICAgIChGaWxlbmFtZS5xdW90ZSBmaWxlMilcbiAgICBpblxuICAgIG1hdGNoIFN5cy5jb21tYW5kIGNtZCB3aXRoXG4gICAgfCAwIC0+IGBTYW1lXG4gICAgfCAxIC0+IGBEaWZmZXJlbnRcbiAgICB8IG4gLT4gYEVycm9yIChuLCBjbWQpXG4gIGluXG4gIG1hdGNoIGRpZmZfY29tbWFuZCB3aXRoXG4gIHwgU29tZSBzIC0+IGlnbm9yZSAoZXhlYyBzIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggZXhlYyAocGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzKSB3aXRoXG4gICAgICB8IGBTYW1lIC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBwcm9kdWNlZCBubyBvdXRwdXQsIGZhbGxiYWNrIHRvIGRpZmYgLXUgKilcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAxLCBjaGFyYWN0ZXJzIDAtMDpcXG4lIVwiIGZpbGUxO1xuICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgKGV4ZWMgXCJkaWZmIC11XCIgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pXG4gICAgICB8IGBEaWZmZXJlbnQgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHN1Y2Nlc3NmdWxseSBmb3VuZCBhIGRpZmZlcmVuY2UgKilcbiAgICAgICAgICAoKVxuICAgICAgfCBgRXJyb3IgKGVycl9jb2RlLCBjbWQpIC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiB0aHJldyBhbiBlcnJvci4uLiBwZXJoYXBzIGl0IHdhc24ndCBpbnN0YWxsZWQ/IGZhbGxiYWNrIHRvIGRpZmYgLXUgKilcbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJFcnJvcjpcXG5cXFxuICAgICAgICAgICAgID4gJVMgZXhpdGVkIHdpdGggY29kZSAlZFxcblxcXG4gICAgICAgICAgICAgPiBQZXJoYXBzIHBhdGRpZmYgaXMgbm90IGluc3RhbGxlZD8gSGludCwgdHJ5OiBvcGFtIGluc3RhbGwgcGF0ZGlmZlxcblxcXG4gICAgICAgICAgICAgPiBGYWxsaW5nIGJhY2sgdG8gZGlmZiAtdVxcblxcblwiXG4gICAgICAgICAgICBjbWQgZXJyX2NvZGU7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKSlcbiIsInR5cGUgZGVyaXZlciA9IC4uXG5cbmxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSA0MlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSBkZXJpdmVyID1cbiAgaWYgSGFzaHRibC5tZW0gYWxsIG5hbWUgdGhlblxuICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgXCJQcHhfZGVyaXZpZXJzLnJlZ2lzdGVyOiAlUyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcIiBuYW1lO1xuICBIYXNodGJsLmFkZCBhbGwgbmFtZSBkZXJpdmVyXG5cbmxldCBsb29rdXAgbmFtZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCBhbGwgbmFtZSB3aXRoXG4gIHwgZHJ2IC0+IFNvbWUgZHJ2XG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbmxldCBkZXJpdmVycyAoKSA9XG4gIEhhc2h0YmwuZm9sZCAoZnVuIG5hbWUgZHJ2IGFjYyAtPiAobmFtZSwgZHJ2KSA6OiBhY2MpIGFsbCBbXVxuIiwibW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBtYXAgPSAnYSAtPiAnYVxuICB0eXBlICdhIGl0ZXIgPSAnYSAtPiB1bml0XG4gIHR5cGUgKCdhLCAnYWNjKSBmb2xkID0gJ2EgLT4gJ2FjYyAtPiAnYWNjXG4gIHR5cGUgKCdhLCAnYWNjKSBmb2xkX21hcCA9ICdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjXG4gIHR5cGUgKCdjdHgsICdhKSBtYXBfd2l0aF9jb250ZXh0ID0gJ2N0eCAtPiAnYSAtPiAnYVxuICB0eXBlICgnYSwgJ3JlcykgbGlmdCA9ICdhIC0+ICdyZXNcbiAgdHlwZSAoJ2N0eCwgJ2EsICdyZXMpIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzXG5lbmRcblxuY2xhc3MgbWFwID1cbiAgbGV0IGFueSB4ID0geCBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogaW50IFQubWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogYm9vbCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogY2hhciBULm1hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULm1hcCAtPiAnYSBvcHRpb24gVC5tYXAgPVxuICAgICAgZnVuIGYgeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICdhIFQubWFwIC0+ICdhIGxpc3QgVC5tYXAgPSBMaXN0Lm1hcFxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAnYSBULm1hcCAtPiAnYSBhcnJheSBULm1hcCA9IEFycmF5Lm1hcFxuICBlbmRcblxuY2xhc3MgaXRlciA9XG4gIGxldCBhbnkgPSBpZ25vcmUgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULml0ZXIgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogc3RyaW5nIFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBib29sIDogYm9vbCBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5pdGVyID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICdhIFQuaXRlciAtPiAnYSBvcHRpb24gVC5pdGVyID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHggLT4gZiB4XG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULml0ZXIgLT4gJ2EgbGlzdCBULml0ZXIgPSBMaXN0Lml0ZXJcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGFycmF5IFQuaXRlciA9IEFycmF5Lml0ZXJcbiAgZW5kXG5cbmNsYXNzIFsnYWNjXSBmb2xkID1cbiAgbGV0IGFueSBfIGFjYyA9IGFjYyBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKGludCwgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKGJvb2wsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKGNoYXIsICdhY2MpIFQuZm9sZCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2Egb3B0aW9uLCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgeCBhY2MgLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gYWNjIHwgU29tZSB4IC0+IGYgeCBhY2NcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGQgPVxuICAgICAgbGV0IHJlYyBsb29wIGYgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gYWNjIHwgeCA6OiBsIC0+IGxvb3AgZiBsIChmIHggYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgYXJyYXksICdhY2MpIFQuZm9sZCA9XG4gICAgICBmdW4gZiBhIGFjYyAtPlxuICAgICAgICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIHIgOj0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyXG4gICAgICAgIGRvbmU7XG4gICAgICAgICFyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZF9tYXAgPVxuICBsZXQgYW55IHggYWNjID0gKHgsIGFjYykgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKGJvb2wsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2Egb3B0aW9uLCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKE5vbmUsIGFjYylcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIHggYWNjIGluXG4gICAgICAgICAgICAoU29tZSB4LCBhY2MpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGxpc3QsICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgbGV0IHJlYyBsb29wIGYgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoW10sIGFjYylcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIHggYWNjIGluXG4gICAgICAgICAgICBsZXQgbCwgYWNjID0gbG9vcCBmIGwgYWNjIGluXG4gICAgICAgICAgICAoeCA6OiBsLCBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcFxuXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2EgYXJyYXksICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiAoYSwgYWNjKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHgsIGFjYyA9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSAwKSBhY2MgaW5cbiAgICAgICAgICBsZXQgYScgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkgIXIgaW5cbiAgICAgICAgICAgIEFycmF5LnVuc2FmZV9zZXQgYScgaSB4O1xuICAgICAgICAgICAgciA6PSBhY2NcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIChhJywgIXIpXG4gIGVuZFxuXG5jbGFzcyBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIGxldCBhbnkgXyB4ID0geCBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKCdjdHgsIGludCkgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBvcHRpb24pIFQubWFwX3dpdGhfY29udGV4dFxuICAgICAgICA9XG4gICAgICBmdW4gZiBjdHggeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgY3R4IHgpXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBsaXN0KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT4gTGlzdC5tYXAgKGYgY3R4KSBsXG5cbiAgICBtZXRob2QgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgYXJyYXkpIFQubWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggYSAtPiBBcnJheS5tYXAgKGYgY3R4KSBhXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogKHN0cmluZywgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IChib29sLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGFycmF5IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBhcnJheSwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDMyIDogKGludDMyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6IChpbnQ2NCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgdW5pdCA6ICh1bml0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2Egb3B0aW9uLCAncmVzKSBULmxpZnQgPVxuICAgICAgZnVuIGYgeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNlbGYjY29uc3RyIFwiTm9uZVwiIFtdXG4gICAgICAgIHwgU29tZSB4IC0+IHNlbGYjY29uc3RyIFwiU29tZVwiIFsgZiB4IF1cblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBsaXN0LCAncmVzKSBULmxpZnQgPVxuICAgICAgZnVuIGYgbCAtPlxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiBzZWxmI2NvbnN0ciBcIltdXCIgW11cbiAgICAgICAgfCB4IDo6IGwgLT4gc2VsZiNjb25zdHIgXCI6OlwiIFsgZiB4OyBzZWxmI2xpc3QgZiBsIF1cbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAoJ2N0eCwgaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICgnY3R4LCBib29sLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAoJ2N0eCwgY2hhciwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBhcnJheSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDMyIDogKCdjdHgsIGludDMyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDY0IDogKCdjdHgsIGludDY0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgdW5pdCA6ICgnY3R4LCB1bml0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG5cbiAgICBtZXRob2Qgb3B0aW9uXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKE5vbmUsIHNlbGYjY29uc3RyIGN0eCBcIk5vbmVcIiBbXSlcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCB4LCByZXMgPSBmIGN0eCB4IGluXG4gICAgICAgICAgICAoU29tZSB4LCBzZWxmI2NvbnN0ciBjdHggXCJTb21lXCIgWyByZXMgXSlcblxuICAgIG1ldGhvZCBsaXN0XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBsaXN0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggbCAtPlxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoW10sIHNlbGYjY29uc3RyIGN0eCBcIltdXCIgW10pXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzX2hlYWQgPSBmIGN0eCB4IGluXG4gICAgICAgICAgICBsZXQgbCwgcmVzX3RhaWwgPSBzZWxmI2xpc3QgZiBjdHggbCBpblxuICAgICAgICAgICAgKHggOjogbCwgc2VsZiNjb25zdHIgY3R4IFwiOjpcIiBbIHJlc19oZWFkOyByZXNfdGFpbCBdKVxuICBlbmRcblxuY2xhc3MgdHlwZSBbJ3Jlc10gc3RkX2xpZnRlcnMgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQgOiAoaW50LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYm9vbCA6IChib29sLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICBtZXRob2QgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBmbG9hdCA6IChmbG9hdCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQ2NCA6IChpbnQ2NCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBuYXRpdmVpbnQgOiAobmF0aXZlaW50LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBsaXN0LCAncmVzKSBULmxpZnRcbmVuZFxuXG5jbGFzcyB0eXBlIFsnY3R4LCAncmVzXSBzdGRfbGlmdF9tYXBwZXJzX3dpdGhfY29udGV4dCA9IG9iamVjdFxuICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gIG1ldGhvZCBpbnQgOiAoJ2N0eCwgaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2Qgc3RyaW5nIDogKCdjdHgsIHN0cmluZywgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGNoYXIgOiAoJ2N0eCwgY2hhciwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgYXJyYXkgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoJ2N0eCwgZmxvYXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGludDY0IDogKCdjdHgsIGludDY0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgbmF0aXZlaW50IDogKCdjdHgsIG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2Qgb3B0aW9uIDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgbGlzdCA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBsaXN0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuZW5kXG4iLCJtb2R1bGUgQ2FtbCA9IFN0ZGxpYiBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjMtMDZdIHVzZSBTdGRsaWIgaW5zdGVhZFwiXVxub3BlbiBTdGRsaWJcbm9wZW4gU3RkTGFiZWxzXG5tb2R1bGUgU2V4cCA9IFNleHBsaWIwLlNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBsaWIwLlNleHBhYmxlXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxuXG5tb2R1bGUgdHlwZSBDb21wYXJpc29ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPCApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPiApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPD4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw9ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA+PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIG1pbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBtYXggOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgZXF1YWwgPSAoID0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG4gIGxldCAoIDw9ICkgPSAoIDw9IClcbiAgbGV0ICggPj0gKSA9ICggPj0gKVxuICBsZXQgbWluID0gbWluXG4gIGxldCBtYXggPSBtYXhcbmVuZFxuXG5pbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gaW50KVxubW9kdWxlIEFycmF5ID0gQXJyYXlcblxubW9kdWxlIEJvb2wgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9ib29sXG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGJvb2wpXG5lbmRcblxubW9kdWxlIEJ5dGVzID0gc3RydWN0XG4gIGluY2x1ZGUgQnl0ZXNcblxuICBsZXQgc3ViX3N0cmluZyB0IH5wb3MgfmxlbiA9IFN0ZGxpYi5CeXRlcy5zdWJfc3RyaW5nIHQgcG9zIGxlblxuXG4gIGxldCBibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgU3RkbGliLkJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gY2hhcilcbmVuZFxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBwcm90ZWN0eCB4IH5mIH5maW5hbGx5ID1cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgeSAtPlxuICAgICAgICBmaW5hbGx5IHg7XG4gICAgICAgIHlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICByYWlzZSBleG5cbmVuZFxuXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9mbG9hdFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBmbG9hdClcbmVuZFxuXG5tb2R1bGUgRm4gPSBzdHJ1Y3RcbiAgbGV0IGlkIHggPSB4XG5lbmRcblxubW9kdWxlIEhhc2h0YmwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIHdoaWxlIG1lbSB0IGtleSBkb1xuICAgICAgcmVtb3ZlIHQga2V5XG4gICAgZG9uZTtcbiAgICBhZGQgdCBrZXkgZGF0YVxuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgICBpZiBtZW0gdCBrZXkgdGhlbiBFcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0YmwuYWRkX2V4blwiKVxuICAgIGVsc2UgKFxuICAgICAgYWRkIHQga2V5IGRhdGE7XG4gICAgICBPayAoKSlcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aCBPayAoKSAtPiAoKSB8IEVycm9yIGV4biAtPiByYWlzZSBleG5cblxuICBsZXQgZmluZF9vcHQgdCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aCBkYXRhIC0+IFNvbWUgZGF0YSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBmaW5kX29yX2FkZCB0IGtleSB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggZmluZF9vcHQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IGRhdGFcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgICAgIGFkZF9leG4gdCB+a2V5IH5kYXRhO1xuICAgICAgICBkYXRhXG5cbiAgbGV0IHJlYyBhZGRfYWxpc3QgdCBhbGlzdCA9XG4gICAgbWF0Y2ggYWxpc3Qgd2l0aFxuICAgIHwgW10gLT4gT2sgKClcbiAgICB8IChrZXksIGRhdGEpIDo6IHRhaWwgLT4gKFxuICAgICAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBhZGRfYWxpc3QgdCB0YWlsXG4gICAgICAgIHwgRXJyb3IgKF8gOiBleG4pIC0+IEVycm9yIGtleSlcblxuICBsZXQgb2ZfYWxpc3QgP3NpemUgYWxpc3QgPVxuICAgIGxldCBzaXplID1cbiAgICAgIG1hdGNoIHNpemUgd2l0aCBTb21lIHNpemUgLT4gc2l6ZSB8IE5vbmUgLT4gTGlzdC5sZW5ndGggYWxpc3RcbiAgICBpblxuICAgIGxldCB0ID0gY3JlYXRlIHNpemUgaW5cbiAgICBtYXRjaCBhZGRfYWxpc3QgdCBhbGlzdCB3aXRoIE9rICgpIC0+IE9rIHQgfCBFcnJvciBfIGFzIGVycm9yIC0+IGVycm9yXG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/c2l6ZSBhbGlzdCA9XG4gICAgbWF0Y2ggb2ZfYWxpc3QgP3NpemUgYWxpc3Qgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiSGFzaHRibC5vZl9hbGlzdF9leG5cIilcbmVuZFxuXG5tb2R1bGUgSW5fY2hhbm5lbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3Jkb25seSBdIGluXG4gICAgbGV0IGZsYWdzID0gaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgZmlsZW5hbWUgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlID9iaW5hcnkgZmlsZW5hbWUgaW5cbiAgICBFeG4ucHJvdGVjdHggdCB+ZiB+ZmluYWxseTpjbG9zZV9pblxuXG4gIGxldCBpbnB1dF9hbGwgdCA9XG4gICAgbGV0IHJlYyByZWFkX2FsbF9pbnRvIHQgYnVmID1cbiAgICAgIG1hdGNoIGlucHV0X2NoYXIgdCB3aXRoXG4gICAgICB8IGNoYXIgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgICAgICAgcmVhZF9hbGxfaW50byB0IGJ1ZlxuICAgICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gKClcbiAgICBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgcmVhZF9hbGxfaW50byB0IGJ1ZjtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHJlYWRfYWxsIGZpbGVuYW1lID0gd2l0aF9maWxlIGZpbGVuYW1lIH5mOmlucHV0X2FsbFxuZW5kXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IG1heF9pbnQgPSBtYXhfaW50XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbmVuZFxuXG5tb2R1bGUgRWl0aGVyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuZW5kXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgKCogc2hhZG93IG5vbi10YWlsLXJlY3Vyc2l2ZSBmdW5jdGlvbnMgKilcbiAgICBsZXQgbWVyZ2UgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NvYyA9IGBub3RfdGFpbF9yZWN1cnNpdmVcbiAgICBsZXQgcmVtb3ZlX2Fzc3EgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG5cbiAgICBsZXQgcmV2X21hcGkgbGlzdCB+ZiA9XG4gICAgICBsZXQgcmVjIHJldl9tYXBpX2F0IGxpc3QgaSB+ZiB+YWNjID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+IHJldl9tYXBpX2F0IHRhaWwgKGkgKyAxKSB+ZiB+YWNjOihmIGkgaGVhZCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgcmV2X21hcGlfYXQgbGlzdCAwIH5mIH5hY2M6W11cblxuICAgIGxldCBmb2xkX3JpZ2h0MiBsaXN0MSBsaXN0MiB+aW5pdCB+ZiA9XG4gICAgICBmb2xkX2xlZnQyIChyZXYgbGlzdDEpIChyZXYgbGlzdDIpIH5pbml0IH5mOihmdW4gYWNjIHggeSAtPiBmIHggeSBhY2MpXG5cbiAgICBsZXQgbWFwIGxpc3QgfmYgPSByZXYgKHJldl9tYXAgbGlzdCB+ZilcbiAgICBsZXQgbWFwaSBsaXN0IH5mID0gcmV2IChyZXZfbWFwaSBsaXN0IH5mKVxuXG4gICAgbGV0IGZvbGRfcmlnaHQgbGlzdCB+aW5pdCB+ZiA9XG4gICAgICBmb2xkX2xlZnQgKExpc3QucmV2IGxpc3QpIH5pbml0IH5mOihmdW4gYWNjIHggLT4gZiB4IGFjYylcblxuICAgIGxldCBhcHBlbmQgeCB5ID0gcmV2X2FwcGVuZCAocmV2IHgpIHlcbiAgICBsZXQgY29uY2F0IGxpc3QgPSBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6W10gfmY6YXBwZW5kXG5cbiAgICBsZXQgcmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIgPVxuICAgICAgZm9sZF9sZWZ0MiBsaXN0MSBsaXN0MiB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IHkgLT4gKHgsIHkpIDo6IGFjYylcblxuICAgIGxldCBjb21iaW5lIGxpc3QxIGxpc3QyID0gcmV2IChyZXZfY29tYmluZSBsaXN0MSBsaXN0MilcblxuICAgIGxldCBzcGxpdCBsaXN0ID1cbiAgICAgIGZvbGRfcmlnaHQgbGlzdCB+aW5pdDooW10sIFtdKSB+ZjooZnVuICh4LCB5KSAoeHMsIHlzKSAtPlxuICAgICAgICAgICh4IDo6IHhzLCB5IDo6IHlzKSlcblxuICAgIGxldCBtYXAyIGxpc3QxIGxpc3QyIH5mID1cbiAgICAgIHJldiAoZm9sZF9sZWZ0MiBsaXN0MSBsaXN0MiB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgOjogYWNjKSlcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICAgICAgfCB4IDo6IGwgLT4gKFxuICAgICAgICAgIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsKVxuICAgIGluXG4gICAgcGFydCBbXSBbXSBsXG5cbiAgbGV0IGluaXQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIH5sZW4gfnBvcyB+ZiB+YWNjID1cbiAgICAgIGlmIHBvcyA+PSBsZW4gdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgIGVsc2UgbG9vcCB+bGVuIH5wb3M6KHBvcyArIDEpIH5mIH5hY2M6KGYgcG9zIDo6IGFjYylcbiAgICBpblxuICAgIGxvb3AgfmxlbiB+cG9zOjAgfmYgfmFjYzpbXVxuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIFtdIC0+IHRydWUgfCBfIDo6IF8gLT4gZmFsc2VcblxuICBsZXQgcmV2X2ZpbHRlcl9vcHQgbGlzdCA9XG4gICAgZm9sZF9sZWZ0IGxpc3QgfmluaXQ6W10gfmY6KGZ1biB0YWlsIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aCBOb25lIC0+IHRhaWwgfCBTb21lIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuXG4gIGxldCBmaWx0ZXJfb3B0IGxpc3QgPSByZXYgKHJldl9maWx0ZXJfb3B0IGxpc3QpXG4gIGxldCBmaWx0ZXJfbWFwIGxpc3QgfmYgPSByZXZfZmlsdGVyX29wdCAocmV2X21hcCBsaXN0IH5mKVxuICBsZXQgY29uY2F0X21hcCBsaXN0IH5mID0gY29uY2F0IChtYXAgbGlzdCB+ZilcblxuICBsZXQgcmVjIGZpbmRfbWFwIGxpc3QgfmYgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggZiBoZWFkIHdpdGggU29tZSBfIGFzIHNvbWUgLT4gc29tZSB8IE5vbmUgLT4gZmluZF9tYXAgdGFpbCB+ZilcblxuICBsZXQgZmluZF9tYXBfZXhuIGxpc3QgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIGxpc3QgfmYgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbiAgbGV0IHJlYyBsYXN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgeCBdIC0+IFNvbWUgeFxuICAgIHwgXyA6OiAoXyA6OiBfIGFzIHJlc3QpIC0+IGxhc3QgcmVzdFxuXG4gIGxldCBzcGxpdF93aGlsZSBsaXN0IH5mID1cbiAgICBsZXQgcmVjIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBmIGhlYWQgLT4gc3BsaXRfd2hpbGVfaW50byB0YWlsIH5mIH5hY2M6KGhlYWQgOjogYWNjKVxuICAgICAgfCBfIDo6IF8gfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCBsaXN0KVxuICAgIGluXG4gICAgc3BsaXRfd2hpbGVfaW50byBsaXN0IH5mIH5hY2M6W11cblxuICBsZXQgZmluZF9hX2R1cCAodHlwZSBlbHQpIGxpc3QgfmNvbXBhcmUgPVxuICAgIGxldCBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBlbHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgZW5kIGluXG4gICAgbGV0IG1vZHVsZSBFbHRfc2V0ID0gU2V0Lk1ha2UgKEVsdCkgaW5cbiAgICBsZXQgcmVjIGZpbmRfYV9kdXBfaW4gbGlzdCB+c2V0ID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIEVsdF9zZXQubWVtIGhlYWQgc2V0IHRoZW4gU29tZSBoZWFkXG4gICAgICAgICAgZWxzZSBmaW5kX2FfZHVwX2luIHRhaWwgfnNldDooRWx0X3NldC5hZGQgaGVhZCBzZXQpXG4gICAgaW5cbiAgICBmaW5kX2FfZHVwX2luIGxpc3QgfnNldDpFbHRfc2V0LmVtcHR5XG5cbiAgbGV0IGFzc29jX29wdCBrZXkgYWxpc3QgPVxuICAgIG1hdGNoIGFzc29jIGtleSBhbGlzdCB3aXRoIHggLT4gU29tZSB4IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgKCogcmVvcmRlcnMgYXJndW1lbnRzIHRvIGltcHJvdmUgdHlwZSBpbmZlcmVuY2UgKilcbiAgbGV0IGl0ZXIgbGlzdCB+ZiA9IGl0ZXIgbGlzdCB+ZlxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcbiAgbGV0IGl0ZXIgdCB+ZiA9IG1hdGNoIHQgd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBkZWZhdWx0IHwgU29tZSB4IC0+IHhcbiAgbGV0IHRvX2xpc3QgdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IFtdIHwgU29tZSB4IC0+IFsgeCBdXG5lbmRcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICBsZXQgYmluZCB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gZiBhIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCBtYXAgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IE9rIChmIGEpIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCBtYXBfZXJyb3IgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IE9rIChmIGEpIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgaGFuZGxlX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBhIHwgRXJyb3IgZSAtPiBmIGVcbmVuZFxuXG5tb2R1bGUgTm9uRW1wdHlMaXN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogJ2EgbGlzdFxuXG4gIGxldCAoIEAgKSAodDEsIHExKSAodDIsIHEyKSA9ICh0MSwgcTEgQCAodDIgOjogcTIpKVxuICBsZXQgaGQgPSBmc3RcbiAgbGV0IHRvX2xpc3QgKHQsIHEpID0gdCA6OiBxXG4gIGxldCBtYXAgfmYgKHQsIHEpID0gKGYgdCwgTGlzdC5tYXAgfmYgcSlcbmVuZFxuXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpID8oYXBwZW5kID0gZmFsc2UpID8oZmFpbF9pZl9leGlzdHMgPSBmYWxzZSlcbiAgICAgID8ocGVybSA9IDBvNjY2KSBmaWxlID1cbiAgICBsZXQgZmxhZ3MgPSBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0IF0gaW5cbiAgICBsZXQgZmxhZ3MgPSAoaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgZWxzZSBPcGVuX3RleHQpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPSBpZiBmYWlsX2lmX2V4aXN0cyB0aGVuIE9wZW5fZXhjbCA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gICAgb3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0gZmlsZVxuXG4gIGxldCB3aXRoX2ZpbGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgaW5cbiAgICBFeG4ucHJvdGVjdHggdCB+ZiB+ZmluYWxseTpjbG9zZV9vdXRcblxuICBsZXQgd3JpdGVfYWxsIGZpbGVuYW1lIH5kYXRhID1cbiAgICB3aXRoX2ZpbGUgZmlsZW5hbWUgfmY6KGZ1biB0IC0+IG91dHB1dF9zdHJpbmcgdCBkYXRhKVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgaXNfZW1wdHkgKHQgOiB0KSA9IGxlbmd0aCB0ID0gMFxuICBsZXQgcHJlZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW5cbiAgbGV0IHN1ZmZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6KGxlbmd0aCB0IC0gbGVuKSB+bGVuXG4gIGxldCBkcm9wX3ByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6bGVuIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuICBsZXQgZHJvcF9zdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQgLSBsZW4pXG5cbiAgbGV0IGlzX3ByZWZpeCB0IH5wcmVmaXggPVxuICAgIGxldCByZWMgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPj0gbGVuXG4gICAgICB8fCBDaGFyLmVxdWFsIChnZXQgdCBwb3MpIChnZXQgcHJlZml4IHBvcylcbiAgICAgICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOihwb3MgKyAxKSB+bGVuXG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggcHJlZml4XG4gICAgJiYgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3M6MCB+bGVuOihsZW5ndGggcHJlZml4KVxuXG4gIGxldCBpc19zdWZmaXggdCB+c3VmZml4ID1cbiAgICBsZXQgcmVjIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXggfnBvcyB+c3VmZml4X29mZnNldCA9XG4gICAgICBwb3MgPCAwXG4gICAgICB8fCBDaGFyLmVxdWFsIChnZXQgdCAoc3VmZml4X29mZnNldCArIHBvcykpIChnZXQgc3VmZml4IHBvcylcbiAgICAgICAgICYmIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXggfnBvczoocG9zIC0gMSkgfnN1ZmZpeF9vZmZzZXRcbiAgICBpblxuICAgIGxlbmd0aCB0ID49IGxlbmd0aCBzdWZmaXhcbiAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4XG4gICAgICAgICB+cG9zOihsZW5ndGggc3VmZml4IC0gMSlcbiAgICAgICAgIH5zdWZmaXhfb2Zmc2V0OihsZW5ndGggdCAtIGxlbmd0aCBzdWZmaXgpXG5cbiAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICBsZXQgcmVjIGV4aXN0c19hdCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPCBsZW4gJiYgKGYgKGdldCB0IHBvcykgfHwgZXhpc3RzX2F0IHQgfmYgfnBvczoocG9zICsgMSkgfmxlbilcbiAgICBpblxuICAgIGV4aXN0c19hdCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICBsZXQgcmVjIGZvcl9hbGxfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlbiB8fCAoZiAoZ2V0IHQgcG9zKSAmJiBmb3JfYWxsX2F0IHQgfmYgfnBvczoocG9zICsgMSkgfmxlbilcbiAgICBpblxuICAgIGZvcl9hbGxfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGluZGV4X29wdCB0IGNoYXIgPVxuICAgIG1hdGNoIGluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCByaW5kZXggdCBjaGFyIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgaW5kZXhfZnJvbV9vcHQgdCBjaGFyIHBvcyA9XG4gICAgbWF0Y2ggaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgcmluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHQgY2hhciBwb3Mgd2l0aFxuICAgIHwgaSAtPiBTb21lIGlcbiAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBsc3BsaXQyIHQgfm9uID1cbiAgICBtYXRjaCBpbmRleF9vcHQgdCBvbiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgICBTb21lIChzdWIgdCB+cG9zOjAgfmxlbjppLCBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSkpXG5cbiAgbGV0IGNhcGl0YWxpemVfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IGxvd2VyY2FzZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcubG93ZXJjYXNlX2FzY2lpXG4gIGxldCB1bmNhcGl0YWxpemVfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaVxuICBsZXQgc3BsaXRfb25fY2hhciB0IH5zZXAgPSBTdGRsaWIuU3RyaW5nLnNwbGl0X29uX2NoYXIgc2VwIHRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gc3RyaW5nKVxuXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1hcC5NYWtlIChTdHJpbmcpXG5cbiAgICBsZXQgZmluZF9vcHQga2V5IHQgPVxuICAgICAgbWF0Y2ggZmluZCBrZXkgdCB3aXRoIHggLT4gU29tZSB4IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG4gIGVuZFxuXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoU3RyaW5nKVxuZW5kXG5cbmxldCAoIEAgKSA9IExpc3QuYXBwZW5kXG5sZXQgb3V0cHV0IG9jIGJ5dGVzIH5wb3MgfmxlbiA9IG91dHB1dCBvYyBieXRlcyBwb3MgbGVuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHJpbmcgfnBvcyB+bGVuID0gb3V0cHV0X3N1YnN0cmluZyBvYyBzdHJpbmcgcG9zIGxlblxuIiwib3BlbiBJbXBvcnRcbm1vZHVsZSBMID0gQXN0bGliLkxvY2F0aW9uXG5cbnR5cGUgdCA9IGxvY2F0aW9uID0ge1xuICBsb2Nfc3RhcnQgOiBMZXhpbmcucG9zaXRpb247XG4gIGxvY19lbmQgOiBMZXhpbmcucG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmxldCBpbl9maWxlIG5hbWUgPVxuICBsZXQgbG9jID0geyBwb3NfZm5hbWUgPSBuYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IC0xIH0gaW5cbiAgeyBsb2Nfc3RhcnQgPSBsb2M7IGxvY19lbmQgPSBsb2M7IGxvY19naG9zdCA9IHRydWUgfVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxvYyBmbiA9XG4gIGxldCBsb2Nfc3RhcnQgPSB7IGxvYy5sb2Nfc3RhcnQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIGxldCBsb2NfZW5kID0geyBsb2MubG9jX2VuZCB3aXRoIHBvc19mbmFtZSA9IGZuIH0gaW5cbiAgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQ7IGxvY19lbmQgfVxuXG5sZXQgbm9uZSA9IGluX2ZpbGUgXCJfbm9uZV9cIlxuXG5sZXQgaW5pdCBsZXhidWYgZm5hbWUgPVxuICBsZXQgb3BlbiBMZXhpbmcgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICB7IHBvc19mbmFtZSA9IGZuYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IDAgfVxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgZm10ID0gTC5yYWlzZV9lcnJvcmYgP2xvYyBmbXRcbmxldCByZXBvcnRfZXhjZXB0aW9uID0gTC5yZXBvcnRfZXhjZXB0aW9uXG5cbmxldCBvZl9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAge1xuICAgIGxvY19zdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICBsb2NfZW5kID0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgbG9jX2dob3N0ID0gZmFsc2U7XG4gIH1cblxubGV0IHByaW50IHBwZiB0ID1cbiAgU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcIlxuICAgIHQubG9jX3N0YXJ0LnBvc19mbmFtZSB0LmxvY19zdGFydC5wb3NfbG51bVxuICAgICh0LmxvY19zdGFydC5wb3NfY251bSAtIHQubG9jX3N0YXJ0LnBvc19ib2wpXG4gICAgKHQubG9jX2VuZC5wb3NfY251bSAtIHQubG9jX3N0YXJ0LnBvc19ib2wpXG5cbnR5cGUgbm9ucmVjICdhIGxvYyA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IHQgfVxuXG5sZXQgY29tcGFyZV9wb3MgcDEgcDIgPVxuICBsZXQgb3BlbiBMZXhpbmcgaW5cbiAgbGV0IGNvbHVtbiBwID1cbiAgICAoKiBNYW51YWwgZXh0cmFjdDpcbiAgICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBvc19jbnVtIGFuZCBwb3NfYm9sIGlzIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0XG4gICAgICAgd2l0aGluIHRoZSBsaW5lIChpLmUuIHRoZSBjb2x1bW4gbnVtYmVyLCBhc3N1bWluZyBlYWNoIGNoYXJhY3RlciBpc1xuICAgICAgIG9uZSBjb2x1bW4gd2lkZSkuICopXG4gICAgcC5wb3NfY251bSAtIHAucG9zX2JvbFxuICBpblxuICBtYXRjaCBJbnQuY29tcGFyZSBwMS5wb3NfbG51bSBwMi5wb3NfbG51bSB3aXRoXG4gIHwgMCAtPiBJbnQuY29tcGFyZSAoY29sdW1uIHAxKSAoY29sdW1uIHAyKVxuICB8IG4gLT4gblxuXG5sZXQgbWluX3BvcyBwMSBwMiA9IGlmIGNvbXBhcmVfcG9zIHAxIHAyIDw9IDAgdGhlbiBwMSBlbHNlIHAyXG5sZXQgbWF4X3BvcyBwMSBwMiA9IGlmIGNvbXBhcmVfcG9zIHAxIHAyID49IDAgdGhlbiBwMSBlbHNlIHAyXG5cbmxldCBjb21wYXJlIGxvYzEgbG9jMiA9XG4gIG1hdGNoIGNvbXBhcmVfcG9zIGxvYzEubG9jX3N0YXJ0IGxvYzIubG9jX3N0YXJ0IHdpdGhcbiAgfCAwIC0+IGNvbXBhcmVfcG9zIGxvYzEubG9jX2VuZCBsb2MyLmxvY19lbmRcbiAgfCBuIC0+IG5cblxubW9kdWxlIEVycm9yID0gc3RydWN0XG4gIGluY2x1ZGUgUHB4bGliX2FzdC5Mb2NhdGlvbl9lcnJvclxuXG4gIGxldCBjcmVhdGVmIH5sb2MgZm10ID0gRm9ybWF0Lmthc3ByaW50ZiAoZnVuIHN0ciAtPiBtYWtlIH5sb2MgfnN1YjpbXSBzdHIpIGZtdFxuZW5kXG5cbmxldCBlcnJvcl9leHRlbnNpb25mIH5sb2MgZm10ID1cbiAgRm9ybWF0Lmthc3ByaW50ZlxuICAgIChmdW4gc3RyIC0+IEVycm9yLnRvX2V4dGVuc2lvbiBAQCBFcnJvci5tYWtlIH5sb2MgfnN1YjpbXSBzdHIpXG4gICAgZm10XG5cbmV4Y2VwdGlvbiBFcnJvciA9IEwuRXJyb3JcblxubGV0ICgpID1cbiAgU3RkbGliLlByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgfCBFcnJvciBlIC0+IFNvbWUgKEVycm9yLm1lc3NhZ2UgZSlcbiAgICB8IF8gLT4gTm9uZSlcbiIsIm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gRXhwZWN0ZWQgb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgZmFpbCBsb2MgZXhwZWN0ZWQgPSByYWlzZSAoRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpKVxuXG50eXBlIGNvbnRleHQgPSB7XG4gICgqIFttYXRjaGVkXSBjb3VudHMgaG93IG1hbnkgY29uc3RydWN0b3JzIGhhdmUgYmVlbiBtYXRjaGVkLiBUaGlzIGlzIHVzZWQgdG8gZmluZCB3aGF0XG4gICAgIHBhdHRlcm4gbWF0Y2hlcyB0aGUgbW9zdCBzb21lIHBpZWNlIG9mIGFzdCBpbiBbQXN0X3BhdHRlcm4uYWx0XS4gSW4gdGhlIGNhc2Ugd2hlcmVcbiAgICAgYWxsIGJyYW5jaGVzIGZhaWwgdG8gbWF0Y2gsIHdlIHJlcG9ydCB0aGUgZXJyb3IgZnJvbSB0aGUgb25lIHRoYXQgbWF0Y2hlcyB0aGVcbiAgICAgbW9zdC5cblxuICAgICBUaGlzIGlzIG9ubHkgaW5jcmVtZW50ZWQgYnkgY29tYmluYXRvcnMgdGhhdCBjYW4gZmFpbC4gKilcbiAgbXV0YWJsZSBtYXRjaGVkIDogaW50O1xufVxuXG50eXBlICgnbWF0Y2hlZF92YWx1ZSwgJ2ssICdrX3Jlc3VsdCkgdCA9XG4gIHwgVCBvZiAoY29udGV4dCAtPiBMb2NhdGlvbi50IC0+ICdtYXRjaGVkX3ZhbHVlIC0+ICdrIC0+ICdrX3Jlc3VsdClcbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTSA9XG4gIHN0cnVjdFxuICAgIGxldCBhdHRyaWJ1dGUgfmxvYyAgfm5hbWUgIH5wYXlsb2FkICA9XG4gICAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbiAgICBsZXQgYmluZGluZ19vcCB+bG9jICB+b3AgIH5wYXQgIH5leHAgID1cbiAgICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbiAgICBsZXQgY2FzZSB+bGhzICB+Z3VhcmQgIH5yaHMgID1cbiAgICAgIHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuICAgIGxldCBwY2xfY29uc3RyIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB+bG9jICB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBjbF9sZXQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2ZfaW5oZXJpdCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNmX3ZhbCB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfmxvYyAgfnZpcnQgIH5wYXJhbXMgIH5uYW1lICB+ZXhwciAgPVxuICAgICAge1xuICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmICB+ZmllbGRzICA9XG4gICAgICB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuICAgIGxldCBwY3R5X2NvbnN0ciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjdHlfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9pbmhlcml0IH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgfmxvYyAgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dmFycyAgfmFyZ3MgIH5yZXMgID1cbiAgICAgIHtcbiAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FueSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3R1cGxlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jb25zdHIgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9vYmplY3QgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jbGFzcyB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY2xhc3MgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYWxpYXMgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BvbHkgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfcGFja2FnZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgfmxvYyAgeDAgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH1cbiAgICBsZXQgcGRpcl9pbnQgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pbnQgKHgwLCB4MSkpIH1cbiAgICBsZXQgcGRpcl9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9XG4gICAgbGV0IHBkaXJfYm9vbCB+bG9jICB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfVxuICAgIGxldCBwZXhwX2lkZW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZGVudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdGFudCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Z1bmN0aW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW5jdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW4gfmxvYyAgeDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcHBseSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9tYXRjaCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdHJ5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdHVwbGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3ZhcmlhbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfcmVjb3JkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZmllbGQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZpZWxkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGZpZWxkIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXJyYXkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2lmdGhlbmVsc2UgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlcXVlbmNlIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF93aGlsZSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZm9yIH5sb2MgIHgwIHgxIHgyIHgzIHg0ID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb2VyY2UgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2VuZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXcgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX292ZXJyaWRlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXNzZXJ0IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hc3NlcnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGF6eSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wb2x5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX29iamVjdCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ld3R5cGUgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfcGFjayB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG9wIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRvcCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF91bnJlYWNoYWJsZSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF91bnJlYWNoYWJsZVxuICAgICAgfVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgfmxvYyAgfm5hbWUgIH5raW5kICA9XG4gICAgICB7XG4gICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBpbmNsdWRlX2luZm9zIH5sb2MgIG1vZF8gPVxuICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+bXV0YWJsZV8gIH50eXBlXyAgPVxuICAgICAge1xuICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBsZF9tdXRhYmxlID0gbXV0YWJsZV87XG4gICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgbGV0b3AgfmxldF8gIH5hbmRzICB+Ym9keSAgPSB7IGxldF87IGFuZHM7IGJvZHkgfVxuICAgIGxldCBsb2NhdGlvbiB+c3RhcnQgIH5lbmRfICB+Z2hvc3QgID1cbiAgICAgIHsgbG9jX3N0YXJ0ID0gc3RhcnQ7IGxvY19lbmQgPSBlbmRfOyBsb2NfZ2hvc3QgPSBnaG9zdCB9XG4gICAgbGV0IG1vZHVsZV9iaW5kaW5nIH5sb2MgIH5uYW1lICB+ZXhwciAgPVxuICAgICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBbXTsgcG1iX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gfmxvYyAgfm5hbWUgIH50eXBlXyAgPVxuICAgICAgeyBwbWRfbmFtZSA9IG5hbWU7IHBtZF90eXBlID0gdHlwZV87IHBtZF9hdHRyaWJ1dGVzID0gW107IHBtZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApIH1cbiAgICBsZXQgcG1vZF9zdHJ1Y3R1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9mdW5jdG9yIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9hcHBseSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX3VucGFjayB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKSB9XG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfmxvYyAgfm5hbWUgIH5tYW5pZmVzdCAgPVxuICAgICAge1xuICAgICAgICBwbXNfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXNfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtdHlfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2lkZW50IHgwKSB9XG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfZnVuY3RvciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV93aXRoIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbXR5X3R5cGVvZiB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfdHlwZW9mIHgwKSB9XG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfYWxpYXMgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKSB9XG4gICAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBvdGFnIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSkgfVxuICAgIGxldCBvaW5oZXJpdCB+bG9jICB4MCA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE9pbmhlcml0IHgwKSB9XG4gICAgbGV0IG9wZW5faW5mb3MgfmxvYyAgfmV4cHIgIH5vdmVycmlkZSAgPVxuICAgICAge1xuICAgICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfYW55XG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYWxpYXMgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0YW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9pbnRlcnZhbCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdHVwbGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhcmlhbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfcmVjb3JkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYXJyYXkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29yIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R5cGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R5cGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfbGF6eSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF91bnBhY2sgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3VucGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leGNlcHRpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4Y2VwdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwb3NpdGlvbiB+Zm5hbWUgIH5sbnVtICB+Ym9sICB+Y251bSAgPVxuICAgICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSBsbnVtOyBwb3NfYm9sID0gYm9sOyBwb3NfY251bSA9IGNudW0gfVxuICAgIGxldCBydGFnIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUnRhZyAoeDAsIHgxLCB4MikpIH1cbiAgICBsZXQgcmluaGVyaXQgfmxvYyAgeDAgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwc2lnX3ZhbHVlIH5sb2MgIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH1cbiAgICBsZXQgcHNpZ190eXBlIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHNpZ190eXBlc3Vic3QgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZXh0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19yZWNtb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4gfmxvYyAgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3MgfmxvYyAgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHNpZ19leHRlbnNpb24gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfZXZhbCB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9ldmFsICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdmFsdWUgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9XG4gICAgbGV0IHBzdHJfdHlwZSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdHlwZXh0IH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHN0cl9tb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX29wZW4gfmxvYyAgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3MgfmxvYyAgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX2luY2x1ZGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHN0cl9leHRlbnNpb24gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bG9jICB+bmFtZSAgfmFyZyAgPVxuICAgICAgeyBwZGlyX25hbWUgPSBuYW1lOyBwZGlyX2FyZyA9IGFyZzsgcGRpcl9sb2MgPSBsb2MgfVxuICAgIGxldCB0eXBlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+cGFyYW1zICB+Y3N0cnMgIH5raW5kICB+cHJpdmF0ZV8gXG4gICAgICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwZV9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leGNlcHRpb24gfmxvYyAgY29uc3RydWN0b3IgPVxuICAgICAge1xuICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB0eXBlX2V4dGVuc2lvbiB+bG9jICB+cGF0aCAgfnBhcmFtcyAgfmNvbnN0cnVjdG9ycyAgfnByaXZhdGVfICA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB2YWx1ZV9iaW5kaW5nIH5sb2MgIH5wYXQgIH5leHByICA9XG4gICAgICB7IHB2Yl9wYXQgPSBwYXQ7IHB2Yl9leHByID0gZXhwcjsgcHZiX2F0dHJpYnV0ZXMgPSBbXTsgcHZiX2xvYyA9IGxvYyB9XG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gIH5wcmltICA9XG4gICAgICB7XG4gICAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgZW5kXG5tb2R1bGUgTWFrZShMb2M6c2lnIHZhbCBsb2MgOiBMb2NhdGlvbi50IGVuZCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgbG9jID0gTG9jLmxvY1xuICAgIGxldCBhdHRyaWJ1dGUgfm5hbWUgIH5wYXlsb2FkICA9XG4gICAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbiAgICBsZXQgYmluZGluZ19vcCB+b3AgIH5wYXQgIH5leHAgID1cbiAgICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbiAgICBsZXQgY2FzZSB+bGhzICB+Z3VhcmQgIH5yaHMgID1cbiAgICAgIHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuICAgIGxldCBwY2xfY29uc3RyIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2FwcGx5IHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBjbF9sZXQgeDAgeDEgeDIgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4geDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2ZfaW5oZXJpdCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNmX3ZhbCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfnZpcnQgIH5wYXJhbXMgIH5uYW1lICB+ZXhwciAgPVxuICAgICAge1xuICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmICB+ZmllbGRzICA9XG4gICAgICB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuICAgIGxldCBwY3R5X2NvbnN0ciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjdHlfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9pbmhlcml0IHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lICB+dmFycyAgfmFyZ3MgIH5yZXMgID1cbiAgICAgIHtcbiAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FueSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jb25zdHIgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9vYmplY3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jbGFzcyB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY2xhc3MgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYWxpYXMgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BvbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfcGFja2FnZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX3N0cmluZyB4MCkgfVxuICAgIGxldCBwZGlyX2ludCB4MCB4MSA9XG4gICAgICB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfVxuICAgIGxldCBwZGlyX2lkZW50IHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pZGVudCB4MCkgfVxuICAgIGxldCBwZGlyX2Jvb2wgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2Jvb2wgeDApIH1cbiAgICBsZXQgcGV4cF9pZGVudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuIHgwIHgxIHgyIHgzID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcHBseSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbWF0Y2ggeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3RyeSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF92YXJpYW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3JlY29yZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZpZWxkIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VxdWVuY2UgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfd2hpbGUgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZvciB4MCB4MSB4MiB4MyB4NCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29lcmNlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlbmQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlbmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXcgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0aW5zdHZhciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vdmVycmlkZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Fzc2VydCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfcG9seSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vYmplY3QgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXd0eXBlIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BhY2sgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRvcCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5uYW1lICB+a2luZCAgPVxuICAgICAge1xuICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgaW5jbHVkZV9pbmZvcyBtb2RfID1cbiAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bmFtZSAgfm11dGFibGVfICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGxldG9wIH5sZXRfICB+YW5kcyAgfmJvZHkgID0geyBsZXRfOyBhbmRzOyBib2R5IH1cbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICB+ZW5kXyAgfmdob3N0ICA9XG4gICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHsgcG1iX25hbWUgPSBuYW1lOyBwbWJfZXhwciA9IGV4cHI7IHBtYl9hdHRyaWJ1dGVzID0gW107IHBtYl9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cGVfOyBwbWRfYXR0cmlidXRlcyA9IFtdOyBwbWRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtb2RfaWRlbnQgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKSB9XG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtb2RfZnVuY3RvciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9hcHBseSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF91bnBhY2sgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3VucGFjayB4MCkgfVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5uYW1lICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbXR5X2lkZW50IHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MCkgfVxuICAgIGxldCBwbXR5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfd2l0aCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV90eXBlb2YgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MCkgfVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2FsaWFzIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MCkgfVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgb3RhZyB4MCB4MSA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpIH1cbiAgICBsZXQgb2luaGVyaXQgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5leHByICB+b3ZlcnJpZGUgID1cbiAgICAgIHtcbiAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYW55ID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXJpYW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3JlY29yZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90eXBlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICB+bG51bSAgfmJvbCAgfmNudW0gID1cbiAgICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gbG51bTsgcG9zX2JvbCA9IGJvbDsgcG9zX2NudW0gPSBjbnVtIH1cbiAgICBsZXQgcnRhZyB4MCB4MSB4MiA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKSB9XG4gICAgbGV0IHJpbmhlcml0IHgwID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUmluaGVyaXQgeDApIH1cbiAgICBsZXQgcHNpZ192YWx1ZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3ZhbHVlIHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZSB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2RzdWJzdCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4geDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzcyB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9ldmFsIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl92YWx1ZSB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl92YWx1ZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH1cbiAgICBsZXQgcHN0cl90eXBlIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl90eXBleHQgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH1cbiAgICBsZXQgcHN0cl9leGNlcHRpb24geDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdWxlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfb3BlbiB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX29wZW4geDApIH1cbiAgICBsZXQgcHN0cl9jbGFzcyB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfaW5jbHVkZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWUgIH5hcmcgID1cbiAgICAgIHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH1cbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnBhcmFtcyAgfmNzdHJzICB+a2luZCAgfnByaXZhdGVfICB+bWFuaWZlc3QgXG4gICAgICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfnBhdGggIH5wYXJhbXMgIH5jb25zdHJ1Y3RvcnMgIH5wcml2YXRlXyAgPVxuICAgICAge1xuICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdmFsdWVfYmluZGluZyB+cGF0ICB+ZXhwciAgPVxuICAgICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gW107IHB2Yl9sb2MgPSBsb2MgfVxuICAgIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bmFtZSAgfnR5cGVfICB+cHJpbSAgPVxuICAgICAge1xuICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICB9XG4gIGVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IExvY2F0aW9uLnQgfVxuXG5sZXQgdHh0IHQgPSB0LnR4dFxubGV0IGxvYyB0ID0gdC5sb2NcbmxldCBtYWtlIH5sb2MgdHh0ID0geyBsb2M7IHR4dCB9XG5sZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBsb25naWRlbnQgPSBMaWRlbnQgb2Ygc3RyaW5nIHwgTGRvdCBvZiB0ICogc3RyaW5nIHwgTGFwcGx5IG9mIHQgKiB0XG5cbiAgbGV0IGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50ID0gUG9seS5jb21wYXJlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudF9jaGFyID0gZnVuY3Rpb25cbiAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJzAnIC4uICc5JyB8ICdfJyB8ICdcXCcnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50ID0gZnVuY3Rpb25cbiAgICB8IFwiYXNyXCIgfCBcImxhbmRcIiB8IFwibG9yXCIgfCBcImxzbFwiIHwgXCJsc3JcIiB8IFwibHhvclwiIHwgXCJtb2RcIiB8IFwib3JcIiAtPiBmYWxzZVxuICAgIHwgc3RyaW5nIC0+IFN0cmluZy5mb3JfYWxsIHN0cmluZyB+Zjppc19ub3JtYWxfaWRlbnRfY2hhclxuXG4gIGxldCBzaG9ydF9uYW1lIHN0cmluZyA9XG4gICAgaWYgaXNfbm9ybWFsX2lkZW50IHN0cmluZyB0aGVuIHN0cmluZyBlbHNlIFwiKCBcIiBeIHN0cmluZyBeIFwiIClcIlxuXG4gIGxldCByZWMgbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBMaWRlbnQgcyAtPiBzaG9ydF9uYW1lIHNcbiAgICB8IExkb3QgKGEsIGIpIC0+IG5hbWUgYSBeIFwiLlwiIF4gc2hvcnRfbmFtZSBiXG4gICAgfCBMYXBwbHkgKGEsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwiJXMoJXMpXCIgKG5hbWUgYSkgKG5hbWUgYilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKG5hbWUgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHJlYyBmbGF0IGFjY3UgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHMgOjogYWNjdVxuICB8IExkb3QgKGxpZCwgcykgLT4gZmxhdCAocyA6OiBhY2N1KSBsaWRcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IGZsYXR0ZW5fZXhuIGxpZCA9IGZsYXQgW10gbGlkXG5cbmxldCBsYXN0X2V4biA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gc1xuICB8IExkb3QgKF8sIHMpIC0+IHNcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IHVuZmxhdHRlbiB+aW5pdCBsID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjooZnVuIGFjYyBzIC0+IExkb3QgKGFjYywgcykpXG5cbigqIGZvciBjYXNlcyB3aXRob3V0IGRvdHRlZCBvcGVyYXRvcnMgKGUuZy4gW3BhcnNlIFwiQS5CLkNcIl0pICopXG5sZXQgcGFyc2Vfc2ltcGxlIHMgPVxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6Jy4nIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBzIDo6IGwgLT4gdW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbFxuXG4oKiBoYW5kbGUgW1wiQS5CLigrLispXCJdIG9yIFtcIlZlYy4oLiUuKCk8LSlcIl0gKilcbmxldCBwYXJzZSBzID1cbiAgbGV0IGludmFsaWQgKCkgPVxuICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIlBweGxpYi5Mb25naWRlbnQucGFyc2U6ICVTXCIgcylcbiAgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDwgMSB0aGVuIGludmFsaWQgKCk7XG4gIGxldCBvcGVuX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKCcgaW5cbiAgbGV0IGNsb3NlX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKScgaW5cbiAgbWF0Y2ggKHMuWzBdLCBvcGVuX3BhciwgY2xvc2VfcGFyKSB3aXRoXG4gIHwgKCdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJ18nKSwgTm9uZSwgTm9uZSAtPiBwYXJzZV9zaW1wbGUgc1xuICB8IF8sIE5vbmUsIE5vbmUgLT4gTGlkZW50IHMgKCogVGhpcyBpcyBhIHJhdyBvcGVyYXRvciwgbm8gbW9kdWxlIHBhdGggKilcbiAgfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBpbnZhbGlkICgpXG4gIHwgXywgU29tZSBsLCBTb21lIHIgLT4gKFxuICAgICAgaWYgSW50LihyIDw+IFN0cmluZy5sZW5ndGggcyAtIDEpIHRoZW4gaW52YWxpZCAoKTtcbiAgICAgIGxldCBncm91cCA9XG4gICAgICAgIGlmIEludC4ociA9IGwgKyAxKSB0aGVuIFwiKClcIlxuICAgICAgICBlbHNlIFN0cmluZy50cmltIChTdHJpbmcuc3ViIHMgfnBvczoobCArIDEpIH5sZW46KHIgLSBsIC0gMSkpXG4gICAgICBpblxuICAgICAgaWYgSW50LihsID0gMCkgdGhlbiBMaWRlbnQgZ3JvdXBcbiAgICAgIGVsc2UgaWYgQ2hhci4ocy5bbCAtIDFdIDw+ICcuJykgdGhlbiBpbnZhbGlkICgpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KGwgLSAxKSBpblxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBiZWZvcmUgfnNlcDonLicgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHMgOjogbCAtPiBMZG90ICh1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsLCBncm91cCkpXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZSAoVClcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoVClcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIExvYy50XG5cbiAgICBsZXQgbG9jICh4IDogXyB0KSA9IHgubG9jXG4gICAgbGV0IG1rIH5sb2MgeCA9IHsgbG9jOyB0eHQgPSB4IH1cbiAgICBsZXQgbWFwIGYgdCA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuICAgIGxldCBtYXBfbGlkZW50IHggPSBtYXAgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeFxuICAgIGxldCBsaWRlbnQgfmxvYyB4ID0gbWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHgpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1cblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSAtLS0tLSopXG4gIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jIGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdmJzIC0+IFsgcHN0cl92YWx1ZSB+bG9jIHJlY19mbGFnIHZicyBdXG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2M6XyB+bmFtZTpfIH5wYXJhbXM6XyB+Y3N0cnM6XyB+a2luZDpfXG4gICAgICB+cHJpdmF0ZV86XyB+bWFuaWZlc3Q6XyA9XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiUHB4bGliLkFzdF9idWlsZGVyLm5vbnJlY190eXBlX2RlY2xhcmF0aW9uOiBkb24ndCB1c2UgdGhpcyBmdW5jdGlvblwiXG5cbiAgbGV0IGVpbnQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IGVjaGFyIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IGVzdHJpbmcgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgZWZsb2F0IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgZWludDMyIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgZWludDY0IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgZW5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBwaW50IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBwY2hhciB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBwc3RyaW5nIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IHBmbG9hdCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IHBpbnQzMiB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IHBpbnQ2NCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IHBuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgZWJvb2wgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBwYm9vbCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IGV2YXIgfmxvYyB2ID0gcGV4cF9pZGVudCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB2KSlcbiAgbGV0IHB2YXIgfmxvYyB2ID0gcHBhdF92YXIgfmxvYyAoTG9jYXRlZC5tayB+bG9jIHYpXG4gIGxldCBldW5pdCB+bG9jID0gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHB1bml0IH5sb2MgPSBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcGV4cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwdHlwX3R1cGxlIH5sb2MgbFxuXG4gIGxldCBwZXhwX3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBleHBfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwcGF0X3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5ID1cbiAgICBtYXRjaCB2YXJzIHdpdGggW10gLT4gdHkgfCBfIC0+IHB0eXBfcG9seSB+bG9jIHZhcnMgdHlcblxuICBsZXQgcGV4cF9hcHBseSB+bG9jIGUgZWwgPVxuICAgIG1hdGNoIChlLCBlbCkgd2l0aFxuICAgIHwgXywgW10gLT4gZVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSwgXyAtPlxuICAgICAgICB7IGUgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzIEAgZWwpIH1cbiAgICB8IF8gLT4gcGV4cF9hcHBseSB+bG9jIGUgZWxcblxuICBsZXQgZWFwcGx5IH5sb2MgZSBlbCA9XG4gICAgcGV4cF9hcHBseSB+bG9jIGUgKExpc3QubWFwIGVsIH5mOihmdW4gZSAtPiAoQXN0dHlwZXMuTm9sYWJlbCwgZSkpKVxuXG4gIGxldCBlYWJzdHJhY3QgfmxvYyBwcyBlID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgcHMgfmluaXQ6ZSB+ZjooZnVuIHAgZSAtPlxuICAgICAgICBwZXhwX2Z1biB+bG9jIEFzdHR5cGVzLk5vbGFiZWwgTm9uZSBwIGUpXG5cbiAgbGV0IGVzZXF1ZW5jZSB+bG9jIGVsID1cbiAgICBtYXRjaCBMaXN0LnJldiBlbCB3aXRoXG4gICAgfCBbXSAtPiBldW5pdCB+bG9jXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdCB0bCB+aW5pdDpoZCB+ZjooZnVuIGFjYyBlIC0+IHBleHBfc2VxdWVuY2UgfmxvYyBlIGFjYylcblxuICBsZXQgcGNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgZWNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgcmVjIGVsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBleHBfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBleHBfdHVwbGUgfmxvYyBbIHg7IGVsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgcmVjIHBsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBbIHg7IHBsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSB+bG9jIChpZGVudCA6IExvbmdpZGVudC50KSB+ZiA9XG4gICAgbWF0Y2ggaWRlbnQgd2l0aFxuICAgIHwgTGlkZW50IG4gLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGlkZW50IChmIG4pOyBsb2MgfVxuICAgIHwgTGRvdCAocGF0aCwgbikgLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGRvdCAocGF0aCwgZiBuKTsgbG9jIH1cbiAgICB8IExhcHBseSBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5leHBlY3RlZCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVcIlxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IH5sb2M6YXBwbHlfbG9jIHsgTG9jLmxvYzsgdHh0ID0gbG9uZ2lkZW50IH0gfmYgYXJncyA9XG4gICAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggKGxvbmdpZGVudCA6IExvbmdpZGVudC50KSB3aXRoXG4gICAgfCBMaWRlbnQgXyB8IExkb3QgKChMaWRlbnQgXyB8IExkb3QgXyksIF8pIHwgTGFwcGx5IF8gLT4gKFxuICAgICAgICBsZXQgaWRlbnQgPVxuICAgICAgICAgIHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgbG9uZ2lkZW50IH5sb2MgfmZcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gaWRlbnRcbiAgICAgICAgfCBfIDo6IF8gLT4gZWFwcGx5IH5sb2M6YXBwbHlfbG9jIGlkZW50IGFyZ3MpXG4gICAgfCBMZG90ICgoTGFwcGx5IF8gYXMgbW9kdWxlX3BhdGgpLCBuKSAtPlxuICAgICAgICBsZXQgc3VmZml4X24gZnVuY3Rvcl8gPSBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGZ1bmN0b3JfIF4gXCJfX1wiIF4gbiBpblxuICAgICAgICBsZXQgcmVjIGdhdGhlcl9sYXBwbHkgZnVuY3Rvcl9hcmdzIDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgKiBfID1cbiAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgTGFwcGx5IChyZXN0LCBhcmcpIC0+IGdhdGhlcl9sYXBwbHkgKGFyZyA6OiBmdW5jdG9yX2FyZ3MpIHJlc3RcbiAgICAgICAgICB8IExpZGVudCBmdW5jdG9yXyAtPiAoTGlkZW50IChzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgICB8IExkb3QgKGZ1bmN0b3JfcGF0aCwgZnVuY3Rvcl8pIC0+XG4gICAgICAgICAgICAgIChMZG90IChmdW5jdG9yX3BhdGgsIHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaWRlbnQsIGZ1bmN0b3JfYXJncyA9IGdhdGhlcl9sYXBwbHkgW10gbW9kdWxlX3BhdGggaW5cbiAgICAgICAgZWFwcGx5IH5sb2M6YXBwbHlfbG9jXG4gICAgICAgICAgKHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgaWRlbnQgfmxvYyB+ZilcbiAgICAgICAgICAoTGlzdC5tYXAgZnVuY3Rvcl9hcmdzIH5mOihmdW4gcGF0aCAtPlxuICAgICAgICAgICAgICAgcGV4cF9wYWNrIH5sb2MgKHBtb2RfaWRlbnQgfmxvYyB7IHR4dCA9IHBhdGg7IGxvYyB9KSlcbiAgICAgICAgICBAIGFyZ3MpXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgbG9uZ2lkZW50IH5mID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGxvbmdpZGVudCB+bG9jIH5mIFtdXG5cbiAgbGV0IGV0YV9yZWR1Y2UgPVxuICAgIGxldCByZWMgZ2F0aGVyX3BhcmFtcyBhY2MgZXhwciA9XG4gICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICBQZXhwX2Z1biAobGFiZWwsIE5vbmUgKCogbm8gZGVmYXVsdCBleHByZXNzaW9uICopLCBzdWJwYXQsIGJvZHkpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICB9IC0+IChcbiAgICAgICAgICBtYXRjaCBzdWJwYXQgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIE5vbmUpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICB0eSApO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAoKiBXZSByZWR1Y2UgW2Z1biAoeCA6IHR5KSAtPiBmIHhdIGJ5IHJld3JpdGluZyBpdCBbKGYgOiB0eSAtPiBfKV0uICopXG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgU29tZSB0eSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpKVxuICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpXG4gICAgaW5cbiAgICBsZXQgYW5ub3RhdGUgfmxvYyBleHByIHBhcmFtcyA9XG4gICAgICBpZiBMaXN0LmV4aXN0cyBwYXJhbXMgfmY6KGZ1biAoXywgXywgdHkpIC0+IE9wdGlvbi5pc19zb21lIHR5KSB0aGVuXG4gICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHBhcmFtcyB+aW5pdDoocHR5cF9hbnkgfmxvYylcbiAgICAgICAgICAgIH5mOihmdW4gKHBhcmFtX2xhYmVsLCBwYXJhbSwgdHlfb3B0KSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9IHBhcmFtLmxvYyBpblxuICAgICAgICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHR5X29wdCB3aXRoIE5vbmUgLT4gcHR5cF9hbnkgfmxvYyB8IFNvbWUgdHkgLT4gdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcHR5cF9hcnJvdyB+bG9jIHBhcmFtX2xhYmVsIHR5IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgcGV4cF9jb25zdHJhaW50IH5sb2MgZXhwciB0eVxuICAgICAgZWxzZSBleHByXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhdGhlcl9hcmdzIG4geCA9XG4gICAgICBpZiBuID0gMCB0aGVuIFNvbWUgKHgsIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChib2R5LCBhcmdzKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBhcmdzIDw9IG4gdGhlblxuICAgICAgICAgICAgICBtYXRjaCBnYXRoZXJfYXJncyAobiAtIExpc3QubGVuZ3RoIGFyZ3MpIGJvZHkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgKGJvZHksIGFyZ3MnKSAtPiBTb21lIChib2R5LCBhcmdzJyBAIGFyZ3MpXG4gICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGZ1biBleHByIC0+XG4gICAgICBsZXQgcGFyYW1zLCBib2R5ID0gZ2F0aGVyX3BhcmFtcyBbXSBleHByIGluXG4gICAgICBtYXRjaCBnYXRoZXJfYXJncyAoTGlzdC5sZW5ndGggcGFyYW1zKSBib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IGFzIGZfaWRlbnQpLCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExpc3QuZm9yX2FsbDIgYXJncyBwYXJhbXNcbiAgICAgICAgICAgICAgfmY6KGZ1biAoYXJnX2xhYmVsLCBhcmcpIChwYXJhbV9sYWJlbCwgcGFyYW0sIF8pIC0+XG4gICAgICAgICAgICAgICAgUG9seS4oID0gKSAoYXJnX2xhYmVsIDogYXJnX2xhYmVsKSBwYXJhbV9sYWJlbFxuICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBuYW1lJzsgXyB9O1xuICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcuKCA9ICkgbmFtZScgcGFyYW0udHh0XG4gICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT4gU29tZSAoYW5ub3RhdGUgfmxvYzpleHByLnBleHBfbG9jIGZfaWRlbnQgcGFyYW1zKSlcbiAgICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwciA9IE9wdGlvbi52YWx1ZSAoZXRhX3JlZHVjZSBleHByKSB+ZGVmYXVsdDpleHByXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyBleHByIH5yZWNfZmxhZyA9XG4gICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgIHwgUmVjdXJzaXZlIC0+IGV4cHJcbiAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHJcbmVuZFxuXG5tb2R1bGUgdHlwZSBMb2MgPSBBc3RfYnVpbGRlcl9pbnRmLkxvY1xuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfaW50Zi5TXG5cbiAgbW9kdWxlIExhdGVzdCA6IHNpZ1xuICAgIHZhbCBwcGF0X2NvbnN0cnVjdCA6XG4gICAgICBsb25naWRlbnQgbG9jIC0+IChsYWJlbCBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICAgIHZhcnM6bGFiZWwgbG9jIGxpc3QgLT5cbiAgICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgICAgdW5pdCAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgZW5kXG5cbiAgdmFsIHBwYXRfY29uc3RydWN0IDogbG9uZ2lkZW50IGxvYyAtPiBwYXR0ZXJuIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuZW5kXG5cbm1vZHVsZSBNYWtlIChMb2MgOiBzaWdcbiAgdmFsIGxvYyA6IExvY2F0aW9uLnRcbmVuZCkgOiBTID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYylcblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYykgLS0tLS0qKVxuXG4gIGxldCBwcGF0X2NvbnN0cnVjdCBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0ID0gRGVmYXVsdC5wc3RyX3ZhbHVlX2xpc3RcblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfIH5tYW5pZmVzdCA9XG4gICAgRGVmYXVsdC5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlX1xuICAgICAgfm1hbmlmZXN0XG5cbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmF1bHQuTG9jYXRlZFxuXG4gICAgbGV0IGxvYyBfID0gTG9jLmxvY1xuICAgIGxldCBtayB4ID0gbWsgfmxvYzpMb2MubG9jIHhcbiAgICBsZXQgbGlkZW50IHggPSBsaWRlbnQgfmxvYzpMb2MubG9jIHhcbiAgZW5kXG5cbiAgbGV0IHBleHBfdHVwbGUgbCA9IERlZmF1bHQucGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgbCA9IERlZmF1bHQucHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgbCA9IERlZmF1bHQucHR5cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBleHBfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBleHBfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZV9vcHQgbCA9IERlZmF1bHQucHBhdF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwdHlwX3BvbHkgdmFycyB0eSA9IERlZmF1bHQucHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuICBsZXQgcGV4cF9hcHBseSBlIGVsID0gRGVmYXVsdC5wZXhwX2FwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWludCB0ID0gRGVmYXVsdC5laW50IH5sb2MgdFxuICBsZXQgZWNoYXIgdCA9IERlZmF1bHQuZWNoYXIgfmxvYyB0XG4gIGxldCBlc3RyaW5nIHQgPSBEZWZhdWx0LmVzdHJpbmcgfmxvYyB0XG4gIGxldCBlZmxvYXQgdCA9IERlZmF1bHQuZWZsb2F0IH5sb2MgdFxuICBsZXQgZWludDMyIHQgPSBEZWZhdWx0LmVpbnQzMiB+bG9jIHRcbiAgbGV0IGVpbnQ2NCB0ID0gRGVmYXVsdC5laW50NjQgfmxvYyB0XG4gIGxldCBlbmF0aXZlaW50IHQgPSBEZWZhdWx0LmVuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBlYm9vbCB0ID0gRGVmYXVsdC5lYm9vbCB+bG9jIHRcbiAgbGV0IGV2YXIgdCA9IERlZmF1bHQuZXZhciB+bG9jIHRcbiAgbGV0IHBpbnQgdCA9IERlZmF1bHQucGludCB+bG9jIHRcbiAgbGV0IHBjaGFyIHQgPSBEZWZhdWx0LnBjaGFyIH5sb2MgdFxuICBsZXQgcHN0cmluZyB0ID0gRGVmYXVsdC5wc3RyaW5nIH5sb2MgdFxuICBsZXQgcGZsb2F0IHQgPSBEZWZhdWx0LnBmbG9hdCB+bG9jIHRcbiAgbGV0IHBpbnQzMiB0ID0gRGVmYXVsdC5waW50MzIgfmxvYyB0XG4gIGxldCBwaW50NjQgdCA9IERlZmF1bHQucGludDY0IH5sb2MgdFxuICBsZXQgcG5hdGl2ZWludCB0ID0gRGVmYXVsdC5wbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgcGJvb2wgdCA9IERlZmF1bHQucGJvb2wgfmxvYyB0XG4gIGxldCBwdmFyIHQgPSBEZWZhdWx0LnB2YXIgfmxvYyB0XG4gIGxldCBldW5pdCA9IERlZmF1bHQuZXVuaXQgfmxvY1xuICBsZXQgcHVuaXQgPSBEZWZhdWx0LnB1bml0IH5sb2NcbiAgbGV0IGVjb25zdHJ1Y3QgPSBEZWZhdWx0LmVjb25zdHJ1Y3RcbiAgbGV0IHBjb25zdHJ1Y3QgPSBEZWZhdWx0LnBjb25zdHJ1Y3RcbiAgbGV0IGVhcHBseSBlIGVsID0gRGVmYXVsdC5lYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlYWJzdHJhY3QgcHMgZSA9IERlZmF1bHQuZWFic3RyYWN0IH5sb2MgcHMgZVxuICBsZXQgZXNlcXVlbmNlIGVsID0gRGVmYXVsdC5lc2VxdWVuY2UgfmxvYyBlbFxuICBsZXQgZWxpc3QgbCA9IERlZmF1bHQuZWxpc3QgfmxvYyBsXG4gIGxldCBwbGlzdCBsID0gRGVmYXVsdC5wbGlzdCB+bG9jIGxcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiBpZGVudCB+ZiBhcmdzID1cbiAgICBEZWZhdWx0LnR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZiBhcmdzXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IGlkZW50IH5mID1cbiAgICBEZWZhdWx0LnVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgaWRlbnQgfmZcblxuICBsZXQgZXRhX3JlZHVjZSA9IERlZmF1bHQuZXRhX3JlZHVjZVxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSA9IERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgPVxuICAgIERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjXG5lbmRcblxubGV0IG1ha2UgbG9jID1cbiAgKG1vZHVsZSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgbG9jID0gbG9jXG4gIGVuZCkgOiBTKVxuIiwiKCoqIFNtYWxsIGhlbHBlciB0byBmaW5kIG91dCB3aG8gaXMgdGhlIGNhbGxlciBvZiBhIGZ1bmN0aW9uICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFByaW50ZXhjID0gU3RkbGliLlByaW50ZXhjXG5cbnR5cGUgdCA9IFByaW50ZXhjLmxvY2F0aW9uIG9wdGlvblxuXG5sZXQgZ2V0IH5za2lwID1cbiAgbGV0IHNraXAgPSBfX0ZJTEVfXyA6OiBza2lwIGluXG4gIGxldCBzdGFjayA9IFByaW50ZXhjLmdldF9jYWxsc3RhY2sgMTYgaW5cbiAgbGV0IGxlbiA9IFByaW50ZXhjLnJhd19iYWNrdHJhY2VfbGVuZ3RoIHN0YWNrIGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA9IGxlbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90IHN0YWNrIHBvc1xuICAgICAgICB8PiBQcmludGV4Yy5jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCB8PiBQcmludGV4Yy5TbG90LmxvY2F0aW9uXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGxvYyAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIH5zZXQ6c2tpcCBsb2MuZmlsZW5hbWUgdGhlbiBsb29wIChwb3MgKyAxKSBlbHNlIFNvbWUgbG9jXG4gIGluXG4gIGxvb3AgMFxuIiwiKCoqIEhlbHBlcnMgdG8gcHJvdmlkZSBoaW50cyB0byBQUFggdXNlcnMgZm9yIHR5cG9zIG9yIHNwZWxsY2hlY2tzLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEN1dG9mZl9tZXRcblxuKCogQXMgZm91bmQgaGVyZSBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2UjT0NhbWwgKilcbmxldCBsZXZlbnNodGVpbl9kaXN0YW5jZSBzIHQgY3V0b2ZmID1cbiAgbGV0IG0gPSBTdHJpbmcubGVuZ3RoIHMgYW5kIG4gPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgaWYgY3V0b2ZmID0gMCB8fCBhYnMgKG0gLSBuKSA+PSBjdXRvZmYgdGhlbiBOb25lXG4gIGVsc2VcbiAgICAoKiBmb3IgYWxsIGkgYW5kIGosIGQuKGkpLihqKSB3aWxsIGhvbGQgdGhlIExldmVuc2h0ZWluIGRpc3RhbmNlIGJldHdlZW4gdGhlXG4gICAgICAgZmlyc3QgaSBjaGFyYWN0ZXJzIG9mIHMgYW5kIHRoZSBmaXJzdCBqIGNoYXJhY3RlcnMgb2YgdCAqKVxuICAgIGxldCBkID0gQXJyYXkubWFrZV9tYXRyaXggfmRpbXg6KG0gKyAxKSB+ZGlteToobiArIDEpIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbSBkb1xuICAgICAgKCogdGhlIGRpc3RhbmNlIG9mIGFueSBmaXJzdCBzdHJpbmcgdG8gYW4gZW1wdHkgc2Vjb25kIHN0cmluZyAqKVxuICAgICAgZC4oaSkuKDApIDwtIGlcbiAgICBkb25lO1xuICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IHNlY29uZCBzdHJpbmcgdG8gYW4gZW1wdHkgZmlyc3Qgc3RyaW5nICopXG4gICAgICBkLigwKS4oaikgPC0galxuICAgIGRvbmU7XG4gICAgKCogdGhlIG1pbmltdW0gb2YgZWFjaCBsaW5lIHRvZ2V0aGVyIHdpdGggdGhlIGNvbHVtbiBpbmRleCB3aWxsIGJlIHVzZWRcbiAgICAgICB0byBub3RpY2UgY3V0b2ZmIGV4Y2VlZGluZyBhbmQgcmV0dXJuIGVhcmx5IGluIHRoYXQgY2FzZSAqKVxuICAgIGxldCBsaW5lX21pbiA9IHJlZiAwIGluXG4gICAgbGV0IGRpc3RhbmNlID1cbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlmICFsaW5lX21pbiA+PSBjdXRvZmYgLSAxICYmIGogPj0gY3V0b2ZmIC0gMSB0aGVuIHJhaXNlIEN1dG9mZl9tZXQ7XG4gICAgICAgICAgbGluZV9taW4gOj0gbWF4IG0gbjtcbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbSBkb1xuICAgICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBzLltpIC0gMV0gdC5baiAtIDFdIHRoZW4gZC4oaSAtIDEpLihqIC0gMSlcbiAgICAgICAgICAgICAgICAoKiBubyBvcGVyYXRpb24gcmVxdWlyZWQgKilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1pblxuICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaikgKyAxKSAoKiBhIGRlbGV0aW9uICopXG4gICAgICAgICAgICAgICAgICAobWluXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSkuKGogLSAxKSArIDEpICgqIGFuIGluc2VydGlvbiAqKVxuICAgICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaiAtIDEpICsgMSkgKCogYSBzdWJzdGl0dXRpb24gKikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZC4oaSkuKGopIDwtIHZhbHVlO1xuICAgICAgICAgICAgbGluZV9taW4gOj0gbWluICFsaW5lX21pbiB2YWx1ZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgZC4obSkuKG4pIDwgY3V0b2ZmIHRoZW4gU29tZSBkLihtKS4obikgZWxzZSBOb25lXG4gICAgICB3aXRoIEN1dG9mZl9tZXQgLT4gTm9uZVxuICAgIGluXG4gICAgZGlzdGFuY2VcblxubGV0IHNwZWxsY2hlY2sgbmFtZXMgbmFtZSA9XG4gIGxldCBjdXRvZmYgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggbmFtZSB3aXRoXG4gICAgfCAxIHwgMiAtPiAwXG4gICAgfCAzIHwgNCAtPiAxXG4gICAgfCA1IHwgNiAtPiAyXG4gICAgfCBfIC0+IDNcbiAgaW5cbiAgbGV0IF8sIHN1Z2dlc3Rpb25zID1cbiAgICBMaXN0LmZvbGRfbGVmdCBuYW1lcyB+aW5pdDooSW50Lm1heF9pbnQsIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgICgoYmVzdF9kaXN0YW5jZSwgbmFtZXNfYXRfYmVzdF9kaXN0YW5jZSkgYXMgYWNjKSByZWdpc3RlcmVkX25hbWUgLT5cbiAgICAgICAgbWF0Y2ggbGV2ZW5zaHRlaW5fZGlzdGFuY2UgbmFtZSByZWdpc3RlcmVkX25hbWUgY3V0b2ZmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgZGlzdCAtPlxuICAgICAgICAgICAgaWYgZGlzdCA8IGJlc3RfZGlzdGFuY2UgdGhlbiAoZGlzdCwgWyByZWdpc3RlcmVkX25hbWUgXSlcbiAgICAgICAgICAgIGVsc2UgaWYgZGlzdCA+IGJlc3RfZGlzdGFuY2UgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKGRpc3QsIHJlZ2lzdGVyZWRfbmFtZSA6OiBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgc3VnZ2VzdGlvbnMgfD4gTGlzdC5maWx0ZXIgfmY6KFN0cmluZy4oIDw+ICkgbmFtZSkgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBsYXN0IDo6IHJldl9yZXN0IC0+XG4gICAgICBTb21lXG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcIkhpbnQ6IERpZCB5b3UgbWVhbiAlcyVzJXM/XCJcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QucmV2IHJldl9yZXN0KSlcbiAgICAgICAgICAgKGlmIExpc3QuaXNfZW1wdHkgcmV2X3Jlc3QgdGhlbiBcIlwiIGVsc2UgXCIgb3IgXCIpXG4gICAgICAgICAgIGxhc3QpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZiA9XG4gIGxldCByZWMgY29sbGFwc2VfYWZ0ZXJfYXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHBhcnQgOjogcGFydHMgLT5cbiAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHBhcnQpKSAmJiBDaGFyLmVxdWFsIHBhcnQuWzBdICdAJyB0aGVuXG4gICAgICAgICAgWyBTdHJpbmcuY29uY2F0IChTdHJpbmcuZHJvcF9wcmVmaXggcGFydCAxIDo6IHBhcnRzKSB+c2VwOlwiLlwiIF1cbiAgICAgICAgZWxzZSBwYXJ0IDo6IGNvbGxhcHNlX2FmdGVyX2F0IHBhcnRzXG4gIGluXG4gIGxldCByZWMgbG9vcCBhY2MgcGFydHMgPVxuICAgIG1hdGNoIHBhcnRzIHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBsb29wIChmIChTdHJpbmcuY29uY2F0IChwYXJ0IDo6IHBhcnRzKSB+c2VwOlwiLlwiKSBhY2MpIHBhcnRzXG4gIGluXG4gIFN0cmluZy5zcGxpdF9vbl9jaGFyIG5hbWUgfnNlcDonLicgfD4gY29sbGFwc2VfYWZ0ZXJfYXQgfD4gbG9vcCBhY2NcblxubGV0IGRvdF9zdWZmaXhlcyBuYW1lID1cbiAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDpbXSB+ZjooZnVuIHggYWNjIC0+IHggOjogYWNjKVxuXG5sZXQgc3BsaXRfcGF0aCA9XG4gIGxldCByZWMgbG9vcCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGggJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSkgfCBfIC0+IGxvb3AgcyAoaSArIDEpXG4gIGFuZCBhZnRlcl9kb3QgcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gKHMsIE5vbmUpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnQScgLi4gJ1onIC0+IChTdHJpbmcucHJlZml4IHMgKGkgLSAxKSwgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHMgaSkpXG4gICAgICB8ICcuJyAtPiBhZnRlcl9kb3QgcyAoaSArIDEpXG4gICAgICB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgaW5cbiAgZnVuIHMgLT4gbG9vcCBzIDBcblxubW9kdWxlIFBhdHRlcm4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBuYW1lIDogc3RyaW5nOyBkb3Rfc3VmZml4ZXMgOiBTdHJpbmcuU2V0LnQgfVxuXG4gIGxldCBtYWtlIG5hbWUgPVxuICAgIHsgbmFtZTsgZG90X3N1ZmZpeGVzID0gU3RyaW5nLlNldC5vZl9saXN0IChkb3Rfc3VmZml4ZXMgbmFtZSkgfVxuXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IG1hdGNoZXMgdCBtYXRjaGVkID0gU3RyaW5nLlNldC5tZW0gbWF0Y2hlZCB0LmRvdF9zdWZmaXhlc1xuZW5kXG5cbigqIE9uIHRoZSBuYW1lc3BhY2UgXCJhLk5BTUVTUEFDRVwiLCByZXR1cm4gdGhlIHBhaXIgKFwiYVwiLCBOQU1FU1BBQ0UpICopXG5sZXQgc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgPVxuICBtYXRjaCBTdHJpbmcuaW5kZXhfb3B0IG5hbWUgJy4nIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBuYW1lIGluXG4gICAgICBsZXQgYmVmb3JlX2RvdCA9IFN0cmluZy5zdWIgbmFtZSB+cG9zOjAgfmxlbjppIGluXG4gICAgICBsZXQgYWZ0ZXJfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6KGkgKyAxKSB+bGVuOihuIC0gaSAtIDEpIGluXG4gICAgICBTb21lIChiZWZvcmVfZG90LCBhZnRlcl9kb3QpXG5cbm1vZHVsZSBBbGxvd2xpc3RlZCA9IHN0cnVjdFxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYXMgd2VsbCBhcyBhbGwgdGhlaXIgZG90IHN1ZmZpeGVzLlxuXG4gICAgIFNpbmNlIHRoZXNlIGF0dHJpYnV0ZXMgYXJlIGludGVycHJldGVkIGJ5IHRoZSBjb21waWxlciBpdHNlbGYsIHdlIGNhbm5vdCBjaGVja1xuICAgICBhdCB0aGUgbGV2ZWwgb2YgYSBwcHggcmV3cml0ZXIgdGhhdCB0aGV5IGhhdmUgYmVlbiBwcm9wZXJseSBpbnRlcnByZXRlZCwgc29cbiAgICAgd2UganVzdCBhY2NlcHQgdGhlbSBhbnl3aGVyZS5cblxuICAgICBTYWRseSwgdGhlIGNvbXBpbGVyIHNpbGVudGx5IGlnbm9yZXMgdGhlbSBpZiB0aGV5IGFyZSBtaXNwbGFjZWQuLi5cbiAgKilcbiAgbGV0IGNyZWF0ZV9zZXQgZnVsbHlfcXVhbGlmaWVkX25hbWVzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgfmY6KGZ1biBhY2MgbmFtZSAtPlxuICAgICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZjooZnVuIHggYWNjIC0+IFN0cmluZy5TZXQuYWRkIHggYWNjKSlcbiAgICAgIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgZnVsbHlfcXVhbGlmaWVkX25hbWVzXG5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGNyZWF0ZV9zZXRcbiAgICAgIFtcbiAgICAgICAgXCJvY2FtbC5hbGVydFwiO1xuICAgICAgICBcIm9jYW1sLmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZFwiO1xuICAgICAgICBcIm9jYW1sLmRlcHJlY2F0ZWRfbXV0YWJsZVwiO1xuICAgICAgICBcIm9jYW1sLmRvY1wiO1xuICAgICAgICBcIm9jYW1sLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZVwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZTY0XCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lXCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lZFwiO1xuICAgICAgICBcIm9jYW1sLmxvY2FsXCI7XG4gICAgICAgIFwib2NhbWwubm9hbGxvY1wiO1xuICAgICAgICBcIm9jYW1sLnBwd2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnJlbW92ZV9hbGlhc2VzXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZVwiO1xuICAgICAgICBcIm9jYW1sLnNwZWNpYWxpc2VkXCI7XG4gICAgICAgIFwib2NhbWwudGFpbGNhbGxcIjtcbiAgICAgICAgXCJvY2FtbC50ZXh0XCI7XG4gICAgICAgIFwib2NhbWwudW5ib3hlZFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbGVkXCI7XG4gICAgICAgIFwib2NhbWwudW50YWdnZWRcIjtcbiAgICAgICAgXCJvY2FtbC53YXJuX29uX2xpdGVyYWxfcGF0dGVyblwiO1xuICAgICAgICBcIm9jYW1sLndhcm5lcnJvclwiO1xuICAgICAgICBcIm9jYW1sLndhcm5pbmdcIjtcbiAgICAgICAgXCJvY2FtbC50b3BsZXZlbF9wcmludGVyXCIgKCpJbnRlcnByZXRlZCBieSB0aGUgdG9wbGV2ZWwvdXRvcCopO1xuICAgICAgICBcInRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICBdXG5cbiAgKCogQWxsb3cgbGlzdCB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbnMuXG5cbiAgICAgU2luY2UgdGhlc2UgZXh0ZW5zaW9ucyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuICAqKVxuICBsZXQgZXh0ZW5zaW9ucyA9IGNyZWF0ZV9zZXQgWyBcIm9jYW1sLmVycm9yXCI7IFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCIgXVxuXG4gIGxldCBpc19hbGxvd2xpc3RlZCB+a2luZCBuYW1lID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBdHRyaWJ1dGUgLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBhdHRyaWJ1dGVzXG4gICAgfCBgRXh0ZW5zaW9uIC0+IFN0cmluZy5TZXQubWVtIG5hbWUgZXh0ZW5zaW9uc1xuXG4gIGxldCBnZXRfYXR0cmlidXRlX2xpc3QgKCkgPSBTdHJpbmcuU2V0LmVsZW1lbnRzIGF0dHJpYnV0ZXNcbiAgbGV0IGdldF9leHRlbnNpb25fbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgZXh0ZW5zaW9uc1xuZW5kXG5cbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gc3RydWN0XG4gIHR5cGUgcmVzZXJ2ZWQgPSAoc3RyaW5nLCBzdWJfbmFtZXNwYWNlcykgSGFzaHRibC50XG4gIGFuZCBzdWJfbmFtZXNwYWNlcyA9IEFsbCB8IFN1Yl9uYW1lc3BhY2VzIG9mIHJlc2VydmVkXG5cbiAgKCogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW0FsbF0sIHRoZW4gXCJ4XCIgYW5kIGFsbCBwYXRocyB0aGF0XG4gICAqIHN0YXJ0IHdpdGggXCJ4LlwiIGFyZSByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibF1cbiAgICpcbiAgICogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW1N1Yl9uYW1lc3BhY2VzIHRibCddLCBhbmQgUCBpc1xuICAgKiByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibCddLCB0aGVuIGFsbCBwYXRocyBcInguUFwiIGFyZSByZXNlcnZlZCB3aXRoXG4gICAqIHJlc3BlY3QgdG8gW3RibF0uXG4gICAqKVxuICBsZXQgY3JlYXRlX3Jlc2VydmVkICgpIDogcmVzZXJ2ZWQgPSBIYXNodGJsLmNyZWF0ZSAxNlxuXG4gIGxldCByZWMgcmVzZXJ2ZSBucyB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBucyB3aXRoXG4gICAgfCBOb25lIC0+IEhhc2h0YmwuYWRkX2V4biB0YmwgfmtleTpucyB+ZGF0YTpBbGxcbiAgICB8IFNvbWUgKG91dGVyX25zLCByZXN0X25zKSAtPiAoXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaHRibC5maW5kX29yX2FkZCB0Ymwgb3V0ZXJfbnMgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBTdWJfbmFtZXNwYWNlcyAoY3JlYXRlX3Jlc2VydmVkICgpKSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsIC0+IHJlc2VydmUgcmVzdF9ucyByZXN0X3RibFxuICAgICAgICB8IEFsbCAtPiAoKSlcblxuICBsZXQgcmVjIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgKG5zLCByZXN0KSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5zIHdpdGhcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyByZXN0X3RibCkgLT5cbiAgICAgICAgICAgIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgcmVzdCByZXN0X3RibFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlKVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyBfKSB8IE5vbmUgLT4gZmFsc2UpXG5cbiAgbGV0IHRibCA9IGNyZWF0ZV9yZXNlcnZlZCAoKVxuICBsZXQgcmVzZXJ2ZSBucyA9IHJlc2VydmUgbnMgdGJsXG4gIGxldCBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgPSBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGJsXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXJsaW5cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVhc29uXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlZm10XCIgKCogcmVhc29uICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJuc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZXNcIiAoKiByZXNjcmlwdCAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwibWV0YW9jYW1sXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm9jYW1sZm9ybWF0XCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInBweGxpYi5taWdyYXRpb25cIlxuXG4gIGxldCBjaGVja19ub3RfcmVzZXJ2ZWQgfmtpbmQgbmFtZSA9XG4gICAgbGV0IGtpbmQsIGxpc3QgPVxuICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICB8IGBBdHRyaWJ1dGUgLT4gKFwiYXR0cmlidXRlXCIsIEFsbG93bGlzdGVkLmF0dHJpYnV0ZXMpXG4gICAgICB8IGBFeHRlbnNpb24gLT4gKFwiZXh0ZW5zaW9uXCIsIEFsbG93bGlzdGVkLmV4dGVuc2lvbnMpXG4gICAgaW5cbiAgICBpZiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGxpc3QgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0IG1hdGNoZXMgYW4gJXMgcmVzZXJ2ZWQgYnkgdGhlIFxcXG4gICAgICAgICBjb21waWxlclwiXG4gICAgICAgIGtpbmQgbmFtZSBraW5kXG4gICAgZWxzZSBpZiBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0cyBuYW1lc3BhY2UgaXMgbWFya2VkIGFzIFxcXG4gICAgICAgICByZXNlcnZlZFwiXG4gICAgICAgIGtpbmQgbmFtZVxuZW5kXG5cbmxldCBpZ25vcmVfY2hlY2tzIG5hbWUgPVxuICBSZXNlcnZlZF9uYW1lc3BhY2VzLmlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZVxuICB8fCBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpcIl9cIlxuXG5tb2R1bGUgUmVnaXN0cmFyID0gc3RydWN0XG4gIHR5cGUgZWxlbWVudCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgOiBzdHJpbmc7IGRlY2xhcmVkX2F0IDogQ2FsbGVyX2lkLnQgfVxuICB0eXBlIGFsbF9mb3JfY29udGV4dCA9IHsgbXV0YWJsZSBhbGwgOiBlbGVtZW50IFN0cmluZy5NYXAudCB9XG5cbiAgdHlwZSAnYSB0ID0ge1xuICAgIGFsbF9ieV9jb250ZXh0IDogKCdhLCBhbGxfZm9yX2NvbnRleHQpIEhhc2h0YmwudDtcbiAgICBza2lwIDogc3RyaW5nIGxpc3Q7XG4gICAga2luZCA6IHN0cmluZztcbiAgICBzdHJpbmdfb2ZfY29udGV4dCA6ICdhIC0+IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgY3JlYXRlIH5raW5kIH5jdXJyZW50X2ZpbGUgfnN0cmluZ19vZl9jb250ZXh0ID1cbiAgICB7XG4gICAgICBhbGxfYnlfY29udGV4dCA9IEhhc2h0YmwuY3JlYXRlIDE2O1xuICAgICAgc2tpcCA9IFsgY3VycmVudF9maWxlOyBfX0ZJTEVfXyBdO1xuICAgICAga2luZDtcbiAgICAgIHN0cmluZ19vZl9jb250ZXh0O1xuICAgIH1cblxuICBsZXQgZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgPVxuICAgIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5hbGxfYnlfY29udGV4dCBjb250ZXh0IH5kZWZhdWx0OihmdW4gKCkgLT5cbiAgICAgICAgeyBhbGwgPSBTdHJpbmcuTWFwLmVtcHR5IH0pXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lID1cbiAgICBtYXRjaCBTdHJpbmcuTWFwLmZpbmRfb3B0IG5hbWUgYWxsX2Zvcl9jb250ZXh0LmFsbCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGUgLT5cbiAgICAgICAgbGV0IGRlY2xhcmVkX2F0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobG9jIDogU3RkbGliLlByaW50ZXhjLmxvY2F0aW9uKSAtPlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIiBkZWNsYXJlZCBhdCAlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnRleHQgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgcyAtPiBcIiBvbiBcIiBeIHMgXiBcInNcIlxuICAgICAgICBpblxuICAgICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgICBcIlNvbWUgcHB4LWVzIHRyaWVkIHRvIHJlZ2lzdGVyIGNvbmZsaWN0aW5nIHRyYW5zZm9ybWF0aW9uczogJXMgXFxcbiAgICAgICAgICAgJyVzJyVzJXMgbWF0Y2hlcyAlcyAnJXMnJXNcIlxuICAgICAgICAgIChTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaSB0LmtpbmQpXG4gICAgICAgICAgbmFtZSBjb250ZXh0IChkZWNsYXJlZF9hdCBjYWxsZXIpIHQua2luZCBlLmZ1bGx5X3F1YWxpZmllZF9uYW1lXG4gICAgICAgICAgKGRlY2xhcmVkX2F0IGUuZGVjbGFyZWRfYXQpXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnMgdCBjb250ZXh0IG5hbWUgPVxuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lXG5cbiAgbGV0IHJlZ2lzdGVyIH5raW5kIHQgY29udGV4dCBuYW1lID1cbiAgICBSZXNlcnZlZF9uYW1lc3BhY2VzLmNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lO1xuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGwgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0OmFsbCB0IGNvbnRleHQgbmFtZTtcbiAgICBsZXQgdCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgPSBuYW1lOyBkZWNsYXJlZF9hdCA9IGNhbGxlciB9IGluXG4gICAgYWxsLmFsbCA8LVxuICAgICAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphbGwuYWxsIH5mOihmdW4gbmFtZSBhY2MgLT5cbiAgICAgICAgICBTdHJpbmcuTWFwLmFkZCBuYW1lIHQgYWNjKVxuXG4gIGxldCBzcGVsbGNoZWNrIHQgY29udGV4dCA/KGFsbG93bGlzdCA9IFtdKSBuYW1lID1cbiAgICBsZXQgYWxsX2Zvcl9jb250ZXh0ID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBsZXQgYWxsID1cbiAgICAgIFN0cmluZy5NYXAuZm9sZCAoZnVuIGtleSBfIGFjYyAtPiBrZXkgOjogYWNjKSBhbGxfZm9yX2NvbnRleHQuYWxsIFtdXG4gICAgaW5cbiAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKGFsbCBAIGFsbG93bGlzdCkgbmFtZSB3aXRoXG4gICAgfCBTb21lIF8gYXMgeCAtPiB4XG4gICAgfCBOb25lIHdoZW4gU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIC0+IE5vbmVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBsZXQgb3RoZXJfY29udGV4dHMgPVxuICAgICAgICAgIEhhc2h0YmwuZm9sZFxuICAgICAgICAgICAgKGZ1biBjdHggYWxsX2Zyb21fY29udGV4dCBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBQb2x5LiggPD4gKSBjb250ZXh0IGN0eFxuICAgICAgICAgICAgICAgICYmIFN0cmluZy5NYXAubWVtIG5hbWUgYWxsX2Zyb21fY29udGV4dC5hbGxcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY3R4IHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHMgLT4gKHMgXiBcInNcIikgOjogYWNjXG4gICAgICAgICAgICAgIGVsc2UgYWNjKVxuICAgICAgICAgICAgdC5hbGxfYnlfY29udGV4dCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHBfdGV4dCA9IEZvcm1hdC5wcF9wcmludF90ZXh0IGluXG4gICAgICAgIGxldCBjdXJyZW50X2NvbnRleHQgcHBmID1cbiAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGNvbnRleHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgIGxldCBhX29yX2FuID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgfCAneScgLT4gXCJhblwiXG4gICAgICAgICAgICAgICAgfCBfIC0+IFwiYVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICAgICAgICAgIFwiQCBidXRAIGlzQCB1c2VkQCBoZXJlQCBpbkAgdGhlQCBjb250ZXh0QCBvZkAgJXNAICVhXCIgYV9vcl9hblxuICAgICAgICAgICAgICAgIHBwX3RleHQgc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3Quc29ydCB+Y21wOihmdW4geCB5IC0+IC1TdHJpbmcuY29tcGFyZSB4IHkpIG90aGVyX2NvbnRleHRzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgWyBjIF0gLT5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWUgcHBfdGV4dCBjXG4gICAgICAgICAgICAgICAgIGN1cnJlbnRfY29udGV4dClcbiAgICAgICAgfCBsYXN0IDo6IHJldl9vdGhlcnMgLT5cbiAgICAgICAgICAgIGxldCBvdGhlcnMgPSBMaXN0LnJldiByZXZfb3RoZXJzIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJAW0hpbnQ6QCBgJXMnQCBpc0AgYXZhaWxhYmxlQCBmb3JAICVhQCBhbmRAICVhJXQuQF1AXFxuXFxcbiAgICAgICAgICAgICAgICAgIERpZCB5b3UgcHV0IGl0IGF0IHRoZSB3cm9uZyBsZXZlbD9cIiBuYW1lXG4gICAgICAgICAgICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCBwcF90ZXh0IH5wcF9zZXA6KGZ1biBwcGYgKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIsQCBcIikpXG4gICAgICAgICAgICAgICAgIG90aGVycyBwcF90ZXh0IGxhc3QgY3VycmVudF9jb250ZXh0KSlcblxuICBtb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgICAoKiBUT0RPOiBoaW50IHNwZWxsaW5nIGVycm9ycyByZWdhcmRpbmcgcmVzZXJ2ZWQgbmFtZXNwYWNlcyBuYW1lcyBhbmQgYWxsb3dsaXN0ZWRcbiAgICAgICBuYW1lcyBpbnN0ZWFkIG9mIHRha2luZyBhbiBvcHRpb25hbCBbYWxsb3dsaXN0XSBwYXJhbWV0ZXIuICopXG4gICAgbGV0IGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgKGZ1biBtc2cgLT5cbiAgICAgICAgICBtYXRjaCBzcGVsbGNoZWNrIHQgY29udGV4dCBuYW1lLnR4dCA/YWxsb3dsaXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiJXNcIiBtc2dcbiAgICAgICAgICB8IFNvbWUgcyAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlcy5cXG4lc1wiIG1zZyBzKVxuICAgICAgICBmbXQgbmFtZS50eHRcblxuICAgIGxldCByYWlzZV9lcnJvcmYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBMb2NhdGlvbi5FcnJvci5yYWlzZSBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG5cbiAgICBsZXQgZXJyb3JfZXh0ZW5zaW9uZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG4gIGVuZFxuXG4gIGxldCByYWlzZV9lcnJvcmYgPSBFcnJvci5yYWlzZV9lcnJvcmZcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBCdWZmZXIgPSBTdGRsaWIuQnVmZmVyXG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxuXG5sZXQgbGlkZW50IHggPSBMb25naWRlbnQuTGlkZW50IHhcblxubGV0IGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkID1cbiAgbGV0IGxvYyA9IHRkLnB0eXBlX25hbWUubG9jIGluXG4gIHB0eXBfY29uc3RyIH5sb2NcbiAgICAoTG9jYXRlZC5tYXAgbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgKExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+Zjpmc3QpXG5cbmxldCBzdHJpcF9nZW5fc3ltYm9sX3N1ZmZpeCA9XG4gIGxldCBjaG9wIG4gfm9yX21vcmUgc3RyaW5nIHBvcyBmID1cbiAgICBsZXQgdGFyZ2V0ID0gIXBvcyAtIG4gaW5cbiAgICB3aGlsZSAhcG9zID4gMCAmJiAob3JfbW9yZSB8fCAhcG9zID4gdGFyZ2V0KSAmJiBmIHN0cmluZy5bIXBvcyAtIDFdIGRvXG4gICAgICBwb3MgOj0gIXBvcyAtIDFcbiAgICBkb25lO1xuICAgICFwb3MgPD0gdGFyZ2V0XG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBsZXQgcG9zID0gcmVmIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBpZlxuICAgICAgY2hvcCAxIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgICAgJiYgY2hvcCAzIH5vcl9tb3JlOnRydWUgc3RyaW5nIHBvcyAoZnVuY3Rpb25cbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgJiYgY2hvcCAyIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgIHRoZW4gU3RyaW5nLnByZWZpeCBzdHJpbmcgIXBvc1xuICAgIGVsc2Ugc3RyaW5nXG5cbmxldCBnZW5fc3ltYm9sID1cbiAgbGV0IGNudCA9IHJlZiAwIGluXG4gIGZ1biA/KHByZWZpeCA9IFwiX3hcIikgKCkgLT5cbiAgICBjbnQgOj0gIWNudCArIDE7XG4gICAgbGV0IHByZWZpeCA9IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4IHByZWZpeCBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXNfXyUwM2lfXCIgcHJlZml4ICFjbnRcblxubGV0IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDpcbiAgICAodHlwZV9kZWNsYXJhdGlvbiwgXykgcmVzdWx0ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBwcmVmaXhfc3RyaW5nIGkgPVxuICAgICgqIGEsIGIsIC4uLiwgeSwgeiwgYWEsIGJiLCAuLi4gKilcbiAgICBTdHJpbmcubWFrZSAoKGkgLyAyNikgKyAxKSAoQ2hhci5jaHIgKENoYXIuY29kZSAnYScgKyAoaSBtb2QgMjYpKSlcbiAgaW5cbiAgbGV0IG5hbWVfcGFyYW0gaSAodHAsIHZhcmlhbmNlKSA9XG4gICAgKG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBPayAoUHR5cF92YXIgKGdlbl9zeW1ib2wgfnByZWZpeDoocHJlZml4X3N0cmluZyBpKSAoKSkpXG4gICAgfCBQdHlwX3ZhciBfIGFzIHYgLT4gT2sgdlxuICAgIHwgXyAtPlxuICAgICAgICBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOnRwLnB0eXBfbG9jIFwibm90IGEgdHlwZSBwYXJhbWV0ZXJcIikpXG4gICAgPj58IGZ1biBwdHlwX2Rlc2MgLT4gKHsgdHAgd2l0aCBwdHlwX2Rlc2MgfSwgdmFyaWFuY2UpXG4gIGluXG4gIGxldCBwdHlwZV9wYXJhbXMsIGVycm9ycyA9XG4gICAgdGQucHR5cGVfcGFyYW1zIHw+IExpc3QubWFwaSB+ZjpuYW1lX3BhcmFtXG4gICAgfD4gTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvblxuICAgICAgICAgfCBPayBvIC0+IEVpdGhlci5MZWZ0IG9cbiAgICAgICAgIHwgRXJyb3IgZSAtPiBFaXRoZXIuUmlnaHQgZSlcbiAgaW5cbiAgbWF0Y2ggZXJyb3JzIHdpdGggW10gLT4gT2sgeyB0ZCB3aXRoIHB0eXBlX3BhcmFtcyB9IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKVxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZCAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKSA6IHR5cGVfZGVjbGFyYXRpb24gPVxuICBtYXRjaCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyB0ZCB3aXRoXG4gIHwgT2sgcmVzIC0+IHJlc1xuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmYgPVxuICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gIGxldCByZXN1bHRfdHlwZSA9XG4gICAgZiB+bG9jOnRkLnB0eXBlX25hbWUubG9jIChjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZClcbiAgaW5cbiAgTGlzdC5mb2xkX3JpZ2h0IHRkLnB0eXBlX3BhcmFtcyB+aW5pdDpyZXN1bHRfdHlwZVxuICAgIH5mOihmdW4gKHRwLCBfdmFyaWFuY2UpIGFjYyAtPlxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBwdHlwX2Fycm93IH5sb2MgTm9sYWJlbCAoZiB+bG9jIHRwKSBhY2MpXG5cbmxldCBzdHJpbmdfb2ZfY29yZV90eXBlIGN0ID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgUHByaW50YXN0LmNvcmVfdHlwZSBwcGYgY3Q7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWVfcmVzICh0eSwgXykgPVxuICBsZXQgbG9jID0gdHkucHR5cF9sb2MgaW5cbiAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgfCBQdHlwX3ZhciBuYW1lIC0+IE9rIChMb2NhdGVkLm1rIH5sb2MgbmFtZSlcbiAgfCBfIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiLCBbXSlcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWUgdCA9XG4gIG1hdGNoIGdldF90eXBlX3BhcmFtX25hbWVfcmVzIHQgd2l0aFxuICB8IE9rIGUgLT4gZVxuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5leGNlcHRpb24gVHlwZV9pc19yZWN1cnNpdmVcblxuY2xhc3MgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG4gICAgdmFsIHR5cGVfbmFtZXMgOiBzdHJpbmcgbGlzdCA9IExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KVxuICAgIG1ldGhvZCByZXR1cm5fdHJ1ZSAoKSA9IHJhaXNlX25vdHJhY2UgVHlwZV9pc19yZWN1cnNpdmVcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYXJyb3cgXyAtPiAoKVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IGlkOyBfIH0sIF8pXG4gICAgICAgIHdoZW4gTGlzdC5tZW0gfnNldDp0eXBlX25hbWVzIGlkIC0+XG4gICAgICAgICAgc2VsZiNyZXR1cm5fdHJ1ZSAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCA9XG4gICAgICAoKiBEb24ndCByZWN1cnNlIHRocm91Z2ggY2QucGNkX3JlcyAqKVxuICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgfCBQY3N0cl90dXBsZSBhcmdzIC0+IExpc3QuaXRlciBhcmdzIH5mOnNlbGYjY29yZV90eXBlXG4gICAgICB8IFBjc3RyX3JlY29yZCBmaWVsZHMgLT4gTGlzdC5pdGVyIGZpZWxkcyB+ZjpzZWxmI2xhYmVsX2RlY2xhcmF0aW9uXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZXMgXyA9ICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBhdHRyaWJ1dGVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKVxuXG4gICAgbWV0aG9kIGdvICgpID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuaXRlciB0ZHMgfmY6c2VsZiN0eXBlX2RlY2xhcmF0aW9uIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZSAtPiBSZWN1cnNpdmVcbiAgICAgICAgICB8ICgpIC0+IE5vbnJlY3Vyc2l2ZSlcbiAgZW5kXG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9IChuZXcgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzKSNnbyAoKVxubGV0IHJlYyBsYXN0IHggbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiB4IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbmxldCBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQgPVxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyIFtdIC0+IG5hbWUubG9jXG4gIHwgUFN0ciAoeCA6OiBsKSAtPiB7IHgucHN0cl9sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc3RyX2xvYy5sb2NfZW5kIH1cbiAgfCBQU2lnIFtdIC0+IG5hbWUubG9jXG4gIHwgUFNpZyAoeCA6OiBsKSAtPiB7IHgucHNpZ19sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc2lnX2xvYy5sb2NfZW5kIH1cbiAgfCBQVHlwIHQgLT4gdC5wdHlwX2xvY1xuICB8IFBQYXQgKHgsIE5vbmUpIC0+IHgucHBhdF9sb2NcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+IHsgeC5wcGF0X2xvYyB3aXRoIGxvY19lbmQgPSBlLnBleHBfbG9jLmxvY19lbmQgfVxuXG5sZXQgbG9jX29mX3BheWxvYWQgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG5cbmxldCBsb2Nfb2ZfYXR0cmlidXRlIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jID0gXyB9ID1cbiAgKCogVE9ETzogZml4IHRoaXMgaW4gdGhlIGNvbXBpbGVyLCBhbmQgbW92ZSB0aGUgbG9naWMgdG8gb21wIHdoZW4gY29udmVydGluZ1xuICAgICBmcm9tIG9sZGVyIGFzdHMuICopXG4gICgqIFwib2NhbWwuZG9jXCIgYXR0cmlidXRlcyBhcmUgZ2VuZXJhdGVkIHdpdGggW0xvY2F0aW9uLm5vbmVdLCB3aGljaCBpcyBub3QgaGVscGZ1bCBmb3JcbiAgICAgZXJyb3IgbWVzc2FnZXMuICopXG4gIGlmIFBvbHkuKCA9ICkgYXR0cl9uYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW5cbiAgICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG4gIGVsc2VcbiAgICB7XG4gICAgICBhdHRyX25hbWUubG9jIHdpdGhcbiAgICAgIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZCkubG9jX2VuZDtcbiAgICB9XG5cbmxldCBsb2Nfb2ZfZXh0ZW5zaW9uIChuYW1lLCBwYXlsb2FkKSA9XG4gIGlmIFBvbHkuKCA9ICkgbmFtZS5sb2MgTG9jYXRpb24ubm9uZSB0aGVuIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZFxuICBlbHNlXG4gICAgeyBuYW1lLmxvYyB3aXRoIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkKS5sb2NfZW5kIH1cblxubGV0IGN1cnJ5X2FwcGxpY2F0aW9ucyBleHByID1cbiAgbGV0IG9wZW4gQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gaW5cbiAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfYXBwbHkgKGYsIG9yaWdfZm9yd2FyZF9hcmdzKSAtPlxuICAgICAgbGV0IGxvYyA9IGV4cHIucGV4cF9sb2MgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gZlxuICAgICAgICB8IGxhc3RfYXJnIDo6IHJldl9mcm9udF9hcmdzIC0+XG4gICAgICAgICAgICBwZXhwX2FwcGx5IH5sb2MgKGxvb3AgcmV2X2Zyb250X2FyZ3MpIFsgbGFzdF9hcmcgXVxuICAgICAgaW5cbiAgICAgIGxvb3AgKExpc3QucmV2IG9yaWdfZm9yd2FyZF9hcmdzKVxuICB8IF8gLT4gZXhwclxuXG5sZXQgYXR0cmlidXRlc19lcnJvcnMgPVxuICBMaXN0LmZpbHRlcl9tYXAgfmY6KGZ1bmN0aW9uXG4gICAgfCB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfbG9jID0gXzsgYXR0cl9wYXlsb2FkID0gXyB9XG4gICAgICB3aGVuIE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLkxvY2F0aW9uLnR4dCAtPlxuICAgICAgICBOb25lXG4gICAgfCBhdHRyIC0+XG4gICAgICAgIGxldCBsb2MgPSBsb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgICAgU29tZSAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlcyBub3QgYWxsb3dlZCBoZXJlXCIpKVxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSBhY2MgPSBhdHRyaWJ1dGVzX2Vycm9ycyBbIGEgXSBAIGFjY1xuICBlbmRcblxubGV0IGFzc2VydF9ub19hdHRyaWJ1dGVzIGwgPVxuICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4gPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlIGEgPSBhc3NlcnRfbm9fYXR0cmlidXRlcyBbIGEgXVxuICBlbmRcblxubGV0IGF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzID1cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgbG9jOyB0eHQgPSBcIm9jYW1sLnBwd2FybmluZ1wiIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgcykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaXNfcG9seW1vcnBoaWNfdmFyaWFudCA9XG4gIGxldCByZWMgY2hlY2sgPSBmdW5jdGlvblxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgXzsgXyB9IC0+IGBEZWZpbml0ZWx5XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKHR5cCwgXyk7IF8gfSAtPiBjaGVjayB0eXBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgXzsgXyB9IC0+IGBNYXliZVxuICAgIHwgXyAtPiBgU3VyZWx5X25vdFxuICAgICgqIFR5cGUgdmFycyBnbyBoZXJlIGV2ZW4gdGhvdWdoIHRoZXkgY291bGQgYmUgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cywgaG93ZXZlciB3ZSBkb24ndCBoYW5kbGUgaXQgaWYgdGhleSBnZXQgc3Vic3RpdHV0ZWRcbiAgICAgICBieSBhIHBvbHltb3JwaGljIHZhcmlhbnQgdGhhdCBpcyB0aGVuIGluY2x1ZGVkLiAqKVxuICBpblxuICBmdW4gdGQgfnNpZ18gLT5cbiAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX3JlY29yZCBfIHwgUHR5cGVfb3BlbiAtPiBgU3VyZWx5X25vdFxuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpZiBzaWdfIHRoZW4gYE1heWJlIGVsc2UgYFN1cmVseV9ub3RcbiAgICAgICAgfCBTb21lIHR5cCAtPiBjaGVjayB0eXApXG5cbmxldCBta19uYW1lZF9zaWcgfmxvYyB+c2dfbmFtZSB+aGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFsgdGQgXVxuICAgIHdoZW4gU3RyaW5nLmVxdWFsIHRkLnB0eXBlX25hbWUudHh0IFwidFwiICYmIExpc3QuaXNfZW1wdHkgdGQucHR5cGVfY3N0cnMgLT5cbiAgICAgIGlmXG4gICAgICAgIChub3QgaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQpXG4gICAgICAgICYmIFBvbHkuKCA9ICkgKGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSkgYERlZmluaXRlbHlcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYXJpdHkgPSBMaXN0Lmxlbmd0aCB0ZC5wdHlwZV9wYXJhbXMgaW5cbiAgICAgICAgaWYgYXJpdHkgPj0gNCB0aGVuIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtdHkgPVxuICAgICAgICAgICAgaWYgYXJpdHkgPSAwIHRoZW4gc2dfbmFtZSBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJXMlZFwiIHNnX25hbWUgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICAgICAgICBsZXQgZm9yX3N1YnN0ID1cbiAgICAgICAgICAgIEFzdF9oZWxwZXIuVHlwZS5tayB+bG9jIHRkLnB0eXBlX25hbWUgfnBhcmFtczp0ZC5wdHlwZV9wYXJhbXNcbiAgICAgICAgICAgICAgfm1hbmlmZXN0OlxuICAgICAgICAgICAgICAgIChwdHlwX2NvbnN0ciB+bG9jXG4gICAgICAgICAgICAgICAgICAgKExvY2F0ZWQubWFwX2xpZGVudCB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCB+Zjpmc3QgdGQucHR5cGVfcGFyYW1zKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChpbmNsdWRlX2luZm9zIH5sb2NcbiAgICAgICAgICAgICAgIChwbXR5X3dpdGggfmxvY1xuICAgICAgICAgICAgICAgICAgKHBtdHlfaWRlbnQgfmxvYyAoTG9jYXRlZC5saWRlbnQgbXR5IH5sb2MpKVxuICAgICAgICAgICAgICAgICAgWyBQd2l0aF90eXBlc3Vic3QgKExvY2F0ZWQubGlkZW50IH5sb2MgXCJ0XCIsIGZvcl9zdWJzdCkgXSkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBleG5fdG9fbG9jX2Vycm9yIGV4biA9XG4gIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aCBTb21lIGVycm9yIC0+IGVycm9yIHwgTm9uZSAtPiByYWlzZSBleG5cblxubW9kdWxlIFdpdGhfZXJyb3JzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0XG5cbiAgbGV0IHJldHVybiBlID0gKGUsIFtdKVxuXG4gIGxldCAoID4+PSApICh4LCBlcnJvcnMxKSBmID1cbiAgICBsZXQgeSwgZXJyb3JzMiA9IGYgeCBpblxuICAgICh5LCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICBsZXQgKCA+PnwgKSAoeCwgZXJyb3JzKSBmID0gKGYgeCwgZXJyb3JzKVxuXG4gIGxldCBvZl9yZXN1bHQgcmVzdWx0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgT2sgeCAtPiAoeCwgW10pXG4gICAgfCBFcnJvciBlcnJvcnMgLT4gKGRlZmF1bHQsIE5vbkVtcHR5TGlzdC50b19saXN0IGVycm9ycylcblxuICBsZXQgY29tYmluZV9lcnJvcnMgbGlzdCA9IChMaXN0Lm1hcCBsaXN0IH5mOmZzdCwgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6c25kKVxuZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfcGF0dGVybjBcbmxldCBub2xhYmVsID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vbGFiZWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbGFiZWxcIilcbmxldCBsYWJlbGxlZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGFiZWxsZWQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhYmVsbGVkXCIpXG5sZXQgb3B0aW9uYWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE9wdGlvbmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcHRpb25hbFwiKVxubGV0IGF0dHJpYnV0ZSB+bmFtZTooVCBuYW1lKSAgfnBheWxvYWQ6KFQgcGF5bG9hZCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LmF0dHJfbmFtZSkubG9jICh4LmF0dHJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IHBheWxvYWQgY3R4IGxvYyB4LmF0dHJfcGF5bG9hZCBrIGluIGspXG5sZXQgYmluZGluZ19vcCB+b3A6KFQgb3ApICB+cGF0OihUIHBhdCkgIH5leHA6KFQgZXhwKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gb3AgY3R4ICh4LnBib3Bfb3ApLmxvYyAoeC5wYm9wX29wKS50eHQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gcGF0IGN0eCBsb2MgeC5wYm9wX3BhdCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBleHAgY3R4IGxvYyB4LnBib3BfZXhwIGsgaW4gaylcbmxldCBjYXNlIH5saHM6KFQgbGhzKSAgfmd1YXJkOihUIGd1YXJkKSAgfnJoczooVCByaHMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBsaHMgY3R4IGxvYyB4LnBjX2xocyBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBndWFyZCBjdHggbG9jIHgucGNfZ3VhcmQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gcmhzIGN0eCBsb2MgeC5wY19yaHMgayBpbiBrKVxubGV0IHBjbF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9jb25zdHIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxubGV0IHBjbF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbmxldCBwY2xfZnVuIChUIGYwKSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1blwiKSlcbmxldCBwY2xfYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxubGV0IHBjbF9sZXQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldFwiKSlcbmxldCBwY2xfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBjbF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwY2xfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBjZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9pbmhlcml0IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbmxldCBwY2ZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfdmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWxcIikpXG5sZXQgcGNmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxubGV0IHBjZl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwY2ZfaW5pdGlhbGl6ZXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5pdGlhbGl6ZXJcIikpXG5sZXQgcGNmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxubGV0IHBjZl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBjZmtfdmlydHVhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZpcnR1YWxcIilcbmxldCBjZmtfY29uY3JldGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbmNyZXRlXCIpXG5sZXQgY2xhc3NfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNpX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjaV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjbGFzc19pbmZvcyB+dmlydDooVCB2aXJ0KSAgfnBhcmFtczooVCBwYXJhbXMpICB+bmFtZTooVCBuYW1lKSAgfmV4cHI6KFRcbiAgZXhwcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2lfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSB2aXJ0IGN0eCBsb2MgeC5wY2lfdmlydCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wY2lfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5wY2lfbmFtZSkubG9jICh4LnBjaV9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBjaV9leHByIGsgaW4gaykpXG5sZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmOihUIHNlbGYpICB+ZmllbGRzOihUIGZpZWxkcykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc2lnX3NlbGYgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZmllbGRzIGN0eCBsb2MgeC5wY3NpZ19maWVsZHMgayBpbiBrKVxubGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZjooVCBzZWxmKSAgfmZpZWxkczooVCBmaWVsZHMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3N0cl9zZWxmIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzdHJfZmllbGRzIGsgaW4gaylcbmxldCBwY3R5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3R5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3R5X2NvbnN0ciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxubGV0IHBjdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxubGV0IHBjdHlfYXJyb3cgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycm93XCIpKVxubGV0IHBjdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBjdHlfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbmxldCBwY3RmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3RmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbmxldCBwY3RmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbmxldCBwY3RmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1ldGhvZFwiKSlcbmxldCBwY3RmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwY3RmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbmxldCBwY3RmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBjbG9zZWQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ2xvc2VkIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDbG9zZWRcIilcbmxldCBvcGVuXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBPcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcGVuXCIpXG5sZXQgcGNvbnN0X2ludGVnZXIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZWdlclwiKVxubGV0IHBjb25zdF9jaGFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3RfY2hhciB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2hhclwiKVxubGV0IHBjb25zdF9zdHJpbmcgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG5sZXQgcGNvbnN0X2Zsb2F0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmbG9hdFwiKVxubGV0IHBjc3RyX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY3N0cl90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIilcbmxldCBwY3N0cl9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnZhcnM6KFQgdmFycykgIH5hcmdzOihUIGFyZ3MpIFxuICB+cmVzOihUIHJlcykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wY2RfbmFtZSkubG9jICh4LnBjZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHZhcnMgY3R4IGxvYyB4LnBjZF92YXJzIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBhcmdzIGN0eCBsb2MgeC5wY2RfYXJncyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcmVzIGN0eCBsb2MgeC5wY2RfcmVzIGsgaW4gaykpXG5sZXQgcHR5cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG5sZXQgcHR5cF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG5sZXQgcHR5cF9hcnJvdyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG5sZXQgcHR5cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcHR5cF9jb25zdHIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbmxldCBwdHlwX29iamVjdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG5sZXQgcHR5cF9jbGFzcyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKSlcbmxldCBwdHlwX2FsaWFzIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG5sZXQgcHR5cF92YXJpYW50IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcHR5cF9wb2x5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxubGV0IHB0eXBfcGFja2FnZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrYWdlXCIpKVxubGV0IHB0eXBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHVwdG8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgVXB0byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVXB0b1wiKVxubGV0IGRvd250b18gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgRG93bnRvIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJEb3dudG9cIilcbmxldCBwZGlyYV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGRpcl9zdHJpbmcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfc3RyaW5nIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJpbmdcIilcbmxldCBwZGlyX2ludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRcIilcbmxldCBwZGlyX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZGlyX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKVxubGV0IHBkaXJfYm9vbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGRpcl9ib29sIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJib29sXCIpXG5sZXQgcGV4cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZXhwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGV4cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxubGV0IHBleHBfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxubGV0IHBleHBfbGV0IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxubGV0IHBleHBfZnVuY3Rpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0aW9uXCIpKVxubGV0IHBleHBfZnVuIChUIGYwKSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG5sZXQgcGV4cF9hcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxubGV0IHBleHBfbWF0Y2ggKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtYXRjaFwiKSlcbmxldCBwZXhwX3RyeSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnlcIikpXG5sZXQgcGV4cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcGV4cF9jb25zdHJ1Y3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbmxldCBwZXhwX3ZhcmlhbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcGV4cF9yZWNvcmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxubGV0IHBleHBfZmllbGQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmllbGRcIikpXG5sZXQgcGV4cF9zZXRmaWVsZCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGZpZWxkXCIpKVxubGV0IHBleHBfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxubGV0IHBleHBfaWZ0aGVuZWxzZSAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZnRoZW5lbHNlXCIpKVxubGV0IHBleHBfc2VxdWVuY2UgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXF1ZW5jZVwiKSlcbmxldCBwZXhwX3doaWxlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwid2hpbGVcIikpXG5sZXQgcGV4cF9mb3IgKFQgZjApIChUIGYxKSAoVCBmMikgKFQgZjMpIChUIGY0KSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBsZXQgayA9IGY0IGN0eCBsb2MgeDQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZm9yXCIpKVxubGV0IHBleHBfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwZXhwX2NvZXJjZSAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvZXJjZVwiKSlcbmxldCBwZXhwX3NlbmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZW5kXCIpKVxubGV0IHBleHBfbmV3IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX25ldyB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld1wiKSlcbmxldCBwZXhwX3NldGluc3R2YXIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXRpbnN0dmFyXCIpKVxubGV0IHBleHBfb3ZlcnJpZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm92ZXJyaWRlXCIpKVxubGV0IHBleHBfbGV0bW9kdWxlIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG1vZHVsZVwiKSlcbmxldCBwZXhwX2xldGV4Y2VwdGlvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRleGNlcHRpb25cIikpXG5sZXQgcGV4cF9hc3NlcnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhc3NlcnRcIikpXG5sZXQgcGV4cF9sYXp5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xhenkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxhenlcIikpXG5sZXQgcGV4cF9wb2x5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxubGV0IHBleHBfb2JqZWN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX29iamVjdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxubGV0IHBleHBfbmV3dHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld3R5cGVcIikpXG5sZXQgcGV4cF9wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3BhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2tcIikpXG5sZXQgcGV4cF9vcGVuIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBleHBfbGV0b3AgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0b3AgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG9wXCIpKVxubGV0IHBleHBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucmVhY2hhYmxlXCIpKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZTooVCBuYW1lKSAgfmtpbmQ6KFQga2luZCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucGV4dF9uYW1lKS5sb2MgKHgucGV4dF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGtpbmQgY3R4IGxvYyB4LnBleHRfa2luZCBrIGluIGspKVxubGV0IHBleHRfZGVjbCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlY2xcIilcbmxldCBwZXh0X3JlYmluZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWJpbmRcIilcbmxldCB1bml0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFVuaXQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVuaXRcIilcbmxldCBuYW1lZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5hbWVkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOYW1lZFwiKVxubGV0IGluY2x1ZGVfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGluY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGluY2xfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBpbmNsdWRlX2luZm9zIH5tb2RfOihUIG1vZF8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBtb2RfIGN0eCBsb2MgeC5waW5jbF9tb2QgayBpbiBrKSlcbmxldCBpbmplY3RpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgSW5qZWN0aXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbmplY3RpdmVcIilcbmxldCBub2luamVjdGl2aXR5ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vSW5qZWN0aXZpdHlcIilcbmxldCBsYWJlbF9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGxkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+bXV0YWJsZV86KFQgbXV0YWJsZV8pICB+dHlwZV86KFRcbiAgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucGxkX25hbWUpLmxvYyAoeC5wbGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBtdXRhYmxlXyBjdHggbG9jIHgucGxkX211dGFibGUgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbGRfdHlwZSBrIGluIGspKVxubGV0IGxldG9wIH5sZXRfOihUIGxldF8pICB+YW5kczooVCBhbmRzKSAgfmJvZHk6KFQgYm9keSkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IGxldF8gY3R4IGxvYyB4LmxldF8gayBpblxuICAgICAgICAgICAgIGxldCBrID0gYW5kcyBjdHggbG9jIHguYW5kcyBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBib2R5IGN0eCBsb2MgeC5ib2R5IGsgaW4gaylcbmxldCBsb2NhdGlvbiB+c3RhcnQ6KFQgc3RhcnQpICB+ZW5kXzooVCBlbmRfKSAgfmdob3N0OihUIGdob3N0KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gc3RhcnQgY3R4IGxvYyB4LmxvY19zdGFydCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBlbmRfIGN0eCBsb2MgeC5sb2NfZW5kIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGdob3N0IGN0eCBsb2MgeC5sb2NfZ2hvc3QgayBpbiBrKVxubGV0IGxpZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGlkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMaWRlbnRcIilcbmxldCBsZG90IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGRvdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGRvdFwiKVxubGV0IGxhcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IExhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFwcGx5XCIpXG5sZXQgbW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1iX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtYl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfYmluZGluZyB+bmFtZTooVCBuYW1lKSAgfmV4cHI6KFQgZXhwcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWJfbmFtZSkubG9jICh4LnBtYl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBtYl9leHByIGsgaW4gaykpXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1kX25hbWUpLmxvYyAoeC5wbWRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG1kX3R5cGUgayBpbiBrKSlcbmxldCBwbW9kX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbW9kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG5sZXQgcG1vZF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJ1Y3R1cmVcIikpXG5sZXQgcG1vZF9mdW5jdG9yIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxubGV0IHBtb2RfYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbmxldCBwbW9kX2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcG1vZF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnBhY2tcIikpXG5sZXQgcG1vZF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXNfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1zX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWU6KFQgbmFtZSkgIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1zX25hbWUpLmxvYyAoeC5wbXNfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgIG1hbmlmZXN0IGN0eCAoeC5wbXNfbWFuaWZlc3QpLmxvYyAoeC5wbXNfbWFuaWZlc3QpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGspKVxubGV0IHBtdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbmxldCBwbXR5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbmxldCBwbXR5X2Z1bmN0b3IgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG5sZXQgcG10eV93aXRoIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aXRoXCIpKVxubGV0IHBtdHlfdHlwZW9mIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZW9mXCIpKVxubGV0IHBtdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBtdHlfYWxpYXMgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfYWxpYXMgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbmxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXRkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtdGRfbmFtZSkubG9jICh4LnBtdGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG10ZF90eXBlIGsgaW4gaykpXG5sZXQgaW1tdXRhYmxlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEltbXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiSW1tdXRhYmxlXCIpXG5sZXQgbXV0YWJsZV8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTXV0YWJsZVwiKVxubGV0IHBvZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBvZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9mX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG90YWcgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wb2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBPdGFnICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3RhZ1wiKSlcbmxldCBvaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9pbmhlcml0XCIpKVxubGV0IG9wZW5faW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9wZW5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9wZW5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvcGVuX2luZm9zIH5leHByOihUIGV4cHIpICB+b3ZlcnJpZGU6KFQgb3ZlcnJpZGUpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBleHByIGN0eCBsb2MgeC5wb3Blbl9leHByIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBvdmVycmlkZSBjdHggbG9jIHgucG9wZW5fb3ZlcnJpZGUgayBpbiBrKSlcbmxldCBvdmVycmlkZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBPdmVycmlkZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3ZlcnJpZGVcIilcbmxldCBmcmVzaCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBGcmVzaCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRnJlc2hcIilcbmxldCBwcGF0X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcGF0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbmxldCBwcGF0X3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG5sZXQgcHBhdF9hbGlhcyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbmxldCBwcGF0X2NvbnN0YW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdGFudFwiKSlcbmxldCBwcGF0X2ludGVydmFsIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZXJ2YWxcIikpXG5sZXQgcHBhdF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcHBhdF9jb25zdHJ1Y3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbmxldCBwcGF0X3ZhcmlhbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcHBhdF9yZWNvcmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxubGV0IHBwYXRfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxubGV0IHBwYXRfb3IgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvclwiKSlcbmxldCBwcGF0X2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcHBhdF90eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpKVxubGV0IHBwYXRfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxubGV0IHBwYXRfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbmxldCBwcGF0X2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKSlcbmxldCBwcGF0X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwcGF0X29wZW4gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBzdHIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBTdHIgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBTdHJcIilcbmxldCBwc2lnIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQU2lnIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU2lnXCIpXG5sZXQgcHR5cCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUFR5cCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFR5cFwiKVxubGV0IHBwYXQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQUGF0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQUGF0XCIpXG5sZXQgcG9zaXRpb24gfmZuYW1lOihUIGZuYW1lKSAgfmxudW06KFQgbG51bSkgIH5ib2w6KFQgYm9sKSAgfmNudW06KFQgY251bSkgXG4gID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IGZuYW1lIGN0eCBsb2MgeC5wb3NfZm5hbWUgayBpblxuICAgICAgICAgICAgIGxldCBrID0gbG51bSBjdHggbG9jIHgucG9zX2xudW0gayBpblxuICAgICAgICAgICAgIGxldCBrID0gYm9sIGN0eCBsb2MgeC5wb3NfYm9sIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGNudW0gY3R4IGxvYyB4LnBvc19jbnVtIGsgaW4gaylcbmxldCBwcml2YXRlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQcml2YXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQcml2YXRlXCIpXG5sZXQgcHVibGljID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB1YmxpYyAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUHVibGljXCIpXG5sZXQgbm9ucmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9ucmVjdXJzaXZlXCIpXG5sZXQgcmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmVjdXJzaXZlXCIpXG5sZXQgcHJmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHJmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcmZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcnRhZyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBSdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJ0YWdcIikpXG5sZXQgcmluaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnByZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFJpbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSaW5oZXJpdFwiKSlcbmxldCBwc2lnX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzaWdfdmFsdWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3ZhbHVlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxubGV0IHBzaWdfdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbmxldCBwc2lnX3R5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbmxldCBwc2lnX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbmxldCBwc2lnX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbmxldCBwc2lnX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbmxldCBwc2lnX21vZHN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kc3Vic3RcIilcbmxldCBwc2lnX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbmxldCBwc2lnX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwc2lnX21vZHR5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlc3Vic3RcIilcbmxldCBwc2lnX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbmxldCBwc2lnX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbmxldCBwc2lnX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbmxldCBwc2lnX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbmxldCBwc2lnX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbmxldCBwc2lnX2V4dGVuc2lvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG5sZXQgcHN0cl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwc3RyX2V2YWwgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJldmFsXCIpXG5sZXQgcHN0cl92YWx1ZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxubGV0IHBzdHJfcHJpbWl0aXZlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInByaW1pdGl2ZVwiKVxubGV0IHBzdHJfdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbmxldCBwc3RyX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbmxldCBwc3RyX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbmxldCBwc3RyX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbmxldCBwc3RyX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbmxldCBwc3RyX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwc3RyX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbmxldCBwc3RyX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbmxldCBwc3RyX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbmxldCBwc3RyX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbmxldCBwc3RyX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbmxldCBwc3RyX2V4dGVuc2lvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG5sZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lOihUIG5hbWUpICB+YXJnOihUIGFyZykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LnBkaXJfbmFtZSkubG9jICh4LnBkaXJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGFyZyBjdHggbG9jIHgucGRpcl9hcmcgayBpbiBrKVxubGV0IHB0b3BfZGVmIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdG9wX2RlZiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGVmXCIpXG5sZXQgcHRvcF9kaXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0b3BfZGlyIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkaXJcIilcbmxldCB0eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBlX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnBhcmFtczooVCBwYXJhbXMpICB+Y3N0cnM6KFQgY3N0cnMpIFxuICB+a2luZDooVCBraW5kKSAgfnByaXZhdGVfOihUIHByaXZhdGVfKSAgfm1hbmlmZXN0OihUIG1hbmlmZXN0KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucHR5cGVfbmFtZSkubG9jICh4LnB0eXBlX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wdHlwZV9wYXJhbXMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGNzdHJzIGN0eCBsb2MgeC5wdHlwZV9jc3RycyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucHR5cGVfa2luZCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eXBlX3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IG1hbmlmZXN0IGN0eCBsb2MgeC5wdHlwZV9tYW5pZmVzdCBrIGluIGspKVxubGV0IHR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4bl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleG5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leGNlcHRpb24gfmNvbnN0cnVjdG9yOihUIGNvbnN0cnVjdG9yKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IGNvbnN0cnVjdG9yIGN0eCBsb2MgeC5wdHlleG5fY29uc3RydWN0b3IgayBpbiBrKSlcbmxldCB0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoOihUIHBhdGgpICB+cGFyYW1zOihUIHBhcmFtcykgIH5jb25zdHJ1Y3RvcnM6KFRcbiAgY29uc3RydWN0b3JzKSAgfnByaXZhdGVfOihUIHByaXZhdGVfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IHBhdGggY3R4ICh4LnB0eWV4dF9wYXRoKS5sb2MgKHgucHR5ZXh0X3BhdGgpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wdHlleHRfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBjb25zdHJ1Y3RvcnMgY3R4IGxvYyB4LnB0eWV4dF9jb25zdHJ1Y3RvcnMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHByaXZhdGVfIGN0eCBsb2MgeC5wdHlleHRfcHJpdmF0ZSBrIGluIGspKVxubGV0IHB0eXBlX2Fic3RyYWN0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhYnN0cmFjdFwiKVxubGV0IHB0eXBlX3ZhcmlhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIilcbmxldCBwdHlwZV9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG5sZXQgcHR5cGVfb3BlbiA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG5sZXQgdmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZiX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2JpbmRpbmcgfnBhdDooVCBwYXQpICB+ZXhwcjooVCBleHByKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IHBhdCBjdHggbG9jIHgucHZiX3BhdCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucHZiX2V4cHIgayBpbiBrKSlcbmxldCB2YWx1ZV9kZXNjcmlwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmFsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB2YWxfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICB+cHJpbTooVCBwcmltKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wdmFsX25hbWUpLmxvYyAoeC5wdmFsX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnB2YWxfdHlwZSBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcHJpbSBjdHggbG9jIHgucHZhbF9wcmltIGsgaW4gaykpXG5sZXQgY292YXJpYW50ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENvdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ292YXJpYW50XCIpXG5sZXQgY29udHJhdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb250cmF2YXJpYW50XCIpXG5sZXQgbm92YXJpYW5jZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb1ZhcmlhbmNlXCIpXG5sZXQgdmlydHVhbF8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgVmlydHVhbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVmlydHVhbFwiKVxubGV0IGNvbmNyZXRlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENvbmNyZXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb25jcmV0ZVwiKVxubGV0IHB3aXRoX3R5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG5sZXQgcHdpdGhfbW9kdWxlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG5sZXQgcHdpdGhfbW9kdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwd2l0aF9tb2R0eXBlc3Vic3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxubGV0IHB3aXRoX3R5cGVzdWJzdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXN1YnN0XCIpXG5sZXQgcHdpdGhfbW9kc3Vic3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXN0X3BhdHRlcm4wXG5cbmxldCBzYXZlX2NvbnRleHQgY3R4ID0gY3R4Lm1hdGNoZWRcbmxldCByZXN0b3JlX2NvbnRleHQgY3R4IGJhY2t1cCA9IGN0eC5tYXRjaGVkIDwtIGJhY2t1cFxubGV0IGluY3JfbWF0Y2hlZCBjID0gYy5tYXRjaGVkIDwtIGMubWF0Y2hlZCArIDFcblxubGV0IHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIHRyeSBPayAoZiB7IG1hdGNoZWQgPSAwIH0gbG9jIHggaylcbiAgd2l0aCBFeHBlY3RlZCAobG9jLCBleHBlY3RlZCkgLT4gKFxuICAgIG1hdGNoIG9uX2Vycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIiVzIGV4cGVjdGVkXCIgZXhwZWN0ZWQsIFtdKVxuICAgIHwgU29tZSBmIC0+IE9rIChmICgpKSlcblxubGV0IHBhcnNlIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrID1cbiAgbWF0Y2ggcGFyc2VfcmVzIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrIHdpdGhcbiAgfCBPayByIC0+IHJcbiAgfCBFcnJvciAociwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgclxuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4wLnQgKiAnYiAtPiAoJ2EsICdjKSB0XG5cbiAgbGV0IGNyZWF0ZSB0IGYgPSBUICh0LCBmKVxuICBsZXQgcGFyc2VfcmVzIChUICh0LCBmKSkgbG9jIHggPSBwYXJzZV9yZXMgdCBsb2MgeCBmXG4gIGxldCBwYXJzZSAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2UgdCBsb2MgeCBmXG5lbmRcblxubGV0IF9fID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB4KVxuXG5sZXQgX18nID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIHsgbG9jOyB0eHQgPSB4IH0pXG5cbmxldCBkcm9wID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgXyBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgaylcblxubGV0IGFzX18gKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4IChrIHgpIGluXG4gICAgICBrKVxuXG5sZXQgY3N0IH50b19zdHJpbmcgPyhlcXVhbCA9IFBvbHkuZXF1YWwpIHYgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgaWYgZXF1YWwgeCB2IHRoZW4gKFxuICAgICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgICBrKVxuICAgICAgZWxzZSBmYWlsIGxvYyAodG9fc3RyaW5nIHYpKVxuXG5sZXQgaW50IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQudG9fc3RyaW5nIHZcbmxldCBjaGFyIHYgPSBjc3QgfnRvX3N0cmluZzooUHJpbnRmLnNwcmludGYgXCIlQ1wiKSB2XG5sZXQgc3RyaW5nIHYgPSBjc3QgfnRvX3N0cmluZzooUHJpbnRmLnNwcmludGYgXCIlU1wiKSB2XG5sZXQgZmxvYXQgdiA9IGNzdCB+dG9fc3RyaW5nOkZsb2F0LnRvX3N0cmluZyB2XG5sZXQgaW50MzIgdiA9IGNzdCB+dG9fc3RyaW5nOkludDMyLnRvX3N0cmluZyB2XG5sZXQgaW50NjQgdiA9IGNzdCB+dG9fc3RyaW5nOkludDY0LnRvX3N0cmluZyB2XG5sZXQgbmF0aXZlaW50IHYgPSBjc3QgfnRvX3N0cmluZzpOYXRpdmVpbnQudG9fc3RyaW5nIHZcbmxldCBib29sIHYgPSBjc3QgfnRvX3N0cmluZzpCb29sLnRvX3N0cmluZyB2XG5cbmxldCBib29sJyAoVCBmdW5jKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgXCJ0cnVlXCIgLT4gZnVuYyBjdHggbG9jIHRydWUga1xuICAgICAgfCBcImZhbHNlXCIgLT4gZnVuYyBjdHggbG9jIGZhbHNlIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkJvb2xcIilcblxubGV0IGZhbHNlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmFsc2VcIilcblxubGV0IHRydWVfID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInRydWVcIilcblxubGV0IG5pbCA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiW11cIilcblxubGV0ICggXjo6ICkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgeDAgOjogeDEgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAgbGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIjo6XCIpXG5cbmxldCBub25lID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbmVcIilcblxubGV0IHNvbWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBTb21lIHgwIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiU29tZVwiKVxuXG5sZXQgcGFpciAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgIGspXG5cbmxldCAoICoqICkgPSBwYWlyXG5cbmxldCB0cmlwbGUgKFQgZjEpIChUIGYyKSAoVCBmMykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICh4MSwgeDIsIHgzKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluXG4gICAgICBrKVxuXG5sZXQgYWx0IChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbGV0IGJhY2t1cCA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgIHRyeSBmMSBjdHggbG9jIHgga1xuICAgICAgd2l0aCBlMSAtPiAoXG4gICAgICAgIGxldCBtMSA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXA7XG4gICAgICAgIHRyeSBmMiBjdHggbG9jIHgga1xuICAgICAgICB3aXRoIGUyIC0+XG4gICAgICAgICAgbGV0IG0yID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgICAgIGlmIG0xID49IG0yIHRoZW4gKFxuICAgICAgICAgICAgcmVzdG9yZV9jb250ZXh0IGN0eCBtMTtcbiAgICAgICAgICAgIHJhaXNlIGUxKVxuICAgICAgICAgIGVsc2UgcmFpc2UgZTIpKVxuXG5sZXQgKCB8fHwgKSA9IGFsdFxubGV0IG1hcCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBrKSlcbmxldCBtYXAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmIGxvYyBrKSlcbmxldCBtYXBfcmVzdWx0IChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgKGZ1bmMgY3R4IGxvYyB4IGspKVxubGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbmxldCBtYXAwIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIGYpKVxubGV0IG1hcDEgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgYSkpKVxuXG5sZXQgbWFwMiAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgYiAtPiBrIChmIGEgYikpKVxuXG5sZXQgbWFwMCcgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGsgKGYgbG9jKSkpXG5cbmxldCBtYXAxJyAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgLT4gayAoZiBsb2MgYSkpKVxuXG5sZXQgbWFwMicgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBsb2MgYSBiKSkpXG5cbmxldCBtYXBfdmFsdWUgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIHgpIGspXG5sZXQgbWFwX3ZhbHVlJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgKGYgbG9jIHgpIGspXG5cbmxldCBhbHRfb3B0aW9uIHNvbWUgbm9uZSA9XG4gIGFsdCAobWFwMSBzb21lIH5mOihmdW4geCAtPiBTb21lIHgpKSAobWFwMCBub25lIH5mOk5vbmUpXG5cbmxldCBtYW55IChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyBsIGsgLT5cbiAgICAgIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGsgKExpc3QucmV2IGFjY3UpXG4gICAgICAgIHwgeCA6OiB4cyAtPiBmIGN0eCBsb2MgeCAoZnVuIHggLT4gYXV4ICh4IDo6IGFjY3UpIHhzKVxuICAgICAgaW5cbiAgICAgIGF1eCBbXSBsKVxuXG5sZXQgbG9jIChUIGYpID0gVCAoZnVuIGN0eCBfbG9jICh4IDogXyBMb2MudCkgayAtPiBmIGN0eCB4LmxvYyB4LnR4dCBrKVxubGV0IHBhY2swIHQgPSBtYXAgdCB+ZjooZnVuIGYgLT4gZiAoKSlcbmxldCBwYWNrMiB0ID0gbWFwIHQgfmY6KGZ1biBmIHggeSAtPiBmICh4LCB5KSlcbmxldCBwYWNrMyB0ID0gbWFwIHQgfmY6KGZ1biBmIHggeSB6IC0+IGYgKHgsIHksIHopKVxuXG5pbmNsdWRlIEFzdF9wYXR0ZXJuX2dlbmVyYXRlZFxuXG5sZXQgZWNoYXIgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9jaGFyIHQpXG5sZXQgZXN0cmluZyB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X3N0cmluZyB0IGRyb3AgZHJvcClcbmxldCBlZmxvYXQgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9mbG9hdCB0IGRyb3ApXG5sZXQgcGNoYXIgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9jaGFyIHQpXG5sZXQgcHN0cmluZyB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X3N0cmluZyB0IGRyb3AgZHJvcClcbmxldCBwZmxvYXQgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9mbG9hdCB0IGRyb3ApXG5sZXQgaW50JyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKGludF9vZl9zdHJpbmcgeCkgaylcbmxldCBpbnQzMicgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChJbnQzMi5vZl9zdHJpbmcgeCkgaylcbmxldCBpbnQ2NCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChJbnQ2NC5vZl9zdHJpbmcgeCkgaylcblxubGV0IG5hdGl2ZWludCcgKFQgZikgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChOYXRpdmVpbnQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBjb25zdF9pbnQgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQnIHQpIG5vbmVcbmxldCBjb25zdF9pbnQzMiB0ID0gcGNvbnN0X2ludGVnZXIgKGludDMyJyB0KSAoc29tZSAoY2hhciAnbCcpKVxubGV0IGNvbnN0X2ludDY0IHQgPSBwY29uc3RfaW50ZWdlciAoaW50NjQnIHQpIChzb21lIChjaGFyICdMJykpXG5sZXQgY29uc3RfbmF0aXZlaW50IHQgPSBwY29uc3RfaW50ZWdlciAobmF0aXZlaW50JyB0KSAoc29tZSAoY2hhciAnbicpKVxubGV0IGVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IGVpbnQzMiB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBlaW50NjQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgZW5hdGl2ZWludCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgcGludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50IHQpXG5sZXQgcGludDMyIHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQzMiB0KVxubGV0IHBpbnQ2NCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50NjQgdClcbmxldCBwbmF0aXZlaW50IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9uYXRpdmVpbnQgdClcbmxldCBzaW5nbGVfZXhwcl9wYXlsb2FkIHQgPSBwc3RyIChwc3RyX2V2YWwgdCBuaWwgXjo6IG5pbClcbmxldCBub19sYWJlbCB0ID0gY3N0IEFzdHR5cGVzLk5vbGFiZWwgfnRvX3N0cmluZzooZnVuIF8gLT4gXCJOb2xhYmVsXCIpICoqIHRcbmxldCBlYm9vbCB0ID0gcGV4cF9jb25zdHJ1Y3QgKGxpZGVudCAoYm9vbCcgdCkpIG5vbmVcbmxldCBwYm9vbCB0ID0gcHBhdF9jb25zdHJ1Y3QgKGxpZGVudCAoYm9vbCcgdCkpIG5vbmVcblxubGV0IGV4dGVuc2lvbiAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoKG5hbWUgOiBfIExvYy50KSwgcGF5bG9hZCkgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbmFtZS5sb2MgbmFtZS50eHQgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHBheWxvYWQgayBpblxuICAgICAgaylcblxubGV0IHJlYyBwYXJzZV9lbGlzdCAoZSA6IFBhcnNldHJlZS5leHByZXNzaW9uKSBhY2MgPVxuICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgZS5wZXhwX2F0dHJpYnV0ZXM7XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIE5vbmUpIC0+IExpc3QucmV2IGFjY1xuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBhcmcpIC0+IChcbiAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyBhcmcucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgbWF0Y2ggYXJnLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfdHVwbGUgWyBoZDsgdGwgXSAtPiBwYXJzZV9lbGlzdCB0bCAoaGQgOjogYWNjKVxuICAgICAgfCBfIC0+IGZhaWwgYXJnLnBleHBfbG9jIFwibGlzdFwiKVxuICB8IF8gLT4gZmFpbCBlLnBleHBfbG9jIFwibGlzdFwiXG5cbmxldCBlbGlzdCAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIGUgayAtPlxuICAgICAgbGV0IGwgPSBwYXJzZV9lbGlzdCBlIFtdIGluXG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayAoTGlzdC5tYXAgbCB+ZjooZnVuIHggLT4gZiBjdHggeC5QYXJzZXRyZWUucGV4cF9sb2MgeCAoZnVuIHggLT4geCkpKSlcblxubGV0IGVzZXF1ZW5jZSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIGUgayAtPlxuICAgICAgbGV0IHJlYyBwYXJzZV9zZXEgZXhwciBhY2MgPVxuICAgICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoZXhwciwgbmV4dCkgLT4gcGFyc2Vfc2VxIG5leHQgKGV4cHIgOjogYWNjKVxuICAgICAgICB8IF8gLT4gZXhwciA6OiBhY2NcbiAgICAgIGluXG4gICAgICBrXG4gICAgICAgIChMaXN0LnJldl9tYXAgKHBhcnNlX3NlcSBlIFtdKSB+ZjooZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICBmIGN0eCBleHByLnBleHBfbG9jIGV4cHIgKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBvZl9mdW5jIGYgPSBUIGZcbmxldCB0b19mdW5jIChUIGYpID0gZlxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBwb2x5X2VxdWFsIGEgYiA9XG4gIGxldCBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgOiBfIC0+IHRcbiAgZW5kIGluXG4gIFN0ZHBweC5Qb2x5LmVxdWFsIChQb2x5LlQgYSkgKFBvbHkuVCBiKVxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiB0XG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHRcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIHRcbiAgICB8IFR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gdFxuICAgIHwgVHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiB0XG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ2xhc3NfaW5mb3MgOiBfIGNsYXNzX2luZm9zIHRcbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiB0XG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiB0XG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiB0XG4gICAgfCBJbmNsdWRlX2luZm9zIDogXyBpbmNsdWRlX2luZm9zIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgVmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgdFxuICAgIHwgTW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyB0XG4gICAgfCBQc3RyX2V2YWwgOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc3RyX2V4dGVuc2lvbiA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgUnRhZyA6IHJvd19maWVsZCB0XG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCA6IG9iamVjdF9maWVsZCB0XG5cbiAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uID0gTGFiZWxfZGVjbGFyYXRpb25cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gQ29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgbGV0IHR5cGVfZGVjbGFyYXRpb24gPSBUeXBlX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA9IFR5cGVfZXh0ZW5zaW9uXG4gIGxldCB0eXBlX2V4Y2VwdGlvbiA9IFR5cGVfZXhjZXB0aW9uXG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBjb3JlX3R5cGUgPSBDb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gPSBFeHByZXNzaW9uXG4gIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiA9IFZhbHVlX2Rlc2NyaXB0aW9uXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNsYXNzX2luZm9zID0gQ2xhc3NfaW5mb3NcbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBtb2R1bGVfdHlwZSA9IE1vZHVsZV90eXBlXG4gIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gPSBNb2R1bGVfZGVjbGFyYXRpb25cbiAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0gTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgbGV0IG9wZW5fZGVzY3JpcHRpb24gPSBPcGVuX2Rlc2NyaXB0aW9uXG4gIGxldCBpbmNsdWRlX2luZm9zID0gSW5jbHVkZV9pbmZvc1xuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgdmFsdWVfYmluZGluZyA9IFZhbHVlX2JpbmRpbmdcbiAgbGV0IG1vZHVsZV9iaW5kaW5nID0gTW9kdWxlX2JpbmRpbmdcbiAgbGV0IHBzdHJfZXZhbCA9IFBzdHJfZXZhbFxuICBsZXQgcHN0cl9leHRlbnNpb24gPSBQc3RyX2V4dGVuc2lvblxuICBsZXQgcHNpZ19leHRlbnNpb24gPSBQc2lnX2V4dGVuc2lvblxuICBsZXQgcnRhZyA9IFJ0YWdcbiAgbGV0IG9iamVjdF90eXBlX2ZpZWxkID0gT2JqZWN0X3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X3BzdHJfZXZhbCBzdCA9XG4gICAgbWF0Y2ggc3QucHN0cl9kZXNjIHdpdGhcbiAgICB8IFBzdHJfZXZhbCAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXZhbFwiXG5cbiAgbGV0IGdldF9wc3RyX2V4dGVuc2lvbiBzdCA9XG4gICAgbWF0Y2ggc3QucHN0cl9kZXNjIHdpdGhcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHN0cl9leHRlbnNpb25cIlxuXG4gIGxldCBnZXRfcHNpZ19leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzaWdfZGVzYyB3aXRoXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzaWdfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4geC5wbGRfYXR0cmlidXRlc1xuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geC5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IHgucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHgucHR5ZXhuX2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB4LnBleHRfYXR0cmlidXRlc1xuICAgIHwgUGF0dGVybiAtPiB4LnBwYXRfYXR0cmlidXRlc1xuICAgIHwgQ29yZV90eXBlIC0+IHgucHR5cF9hdHRyaWJ1dGVzXG4gICAgfCBFeHByZXNzaW9uIC0+IHgucGV4cF9hdHRyaWJ1dGVzXG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiB4LnB2YWxfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfdHlwZSAtPiB4LnBjdHlfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB4LnBjdGZfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfaW5mb3MgLT4geC5wY2lfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZXhwciAtPiB4LnBjbF9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19maWVsZCAtPiB4LnBjZl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZSAtPiB4LnBtdHlfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHgucG1kX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHgucG10ZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHgucG1zX2F0dHJpYnV0ZXNcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geC5wb3Blbl9hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiB4LnBpbmNsX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9leHByIC0+IHgucG1vZF9hdHRyaWJ1dGVzXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IHgucHZiX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IHgucG1iX2F0dHJpYnV0ZXNcbiAgICB8IFBzdHJfZXZhbCAtPiBzbmQgKGdldF9wc3RyX2V2YWwgeClcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+IHNuZCAoZ2V0X3BzdHJfZXh0ZW5zaW9uIHgpXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc2lnX2V4dGVuc2lvbiB4KVxuICAgIHwgUnRhZyAtPiB4LnByZl9hdHRyaWJ1dGVzXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiB4LnBvZl9hdHRyaWJ1dGVzXG5cbiAgbGV0IHNldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwY2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IHsgeCB3aXRoIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4geyB4IHdpdGggcHR5ZXhuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geyB4IHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDb3JlX3R5cGUgLT4geyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfaW5mb3MgLT4geyB4IHdpdGggcGNpX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19leHByIC0+IHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZmllbGQgLT4geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZSAtPiB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG1kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHsgeCB3aXRoIHBtc19hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2V4cHIgLT4geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfYmluZGluZyAtPiB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgUHN0cl9ldmFsIC0+XG4gICAgICAgIHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZ2V0X3BzdHJfZXZhbCB4IHw+IGZzdCwgYXR0cnMpIH1cbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+XG4gICAgICAgIHtcbiAgICAgICAgICB4IHdpdGhcbiAgICAgICAgICBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZ2V0X3BzdHJfZXh0ZW5zaW9uIHggfD4gZnN0LCBhdHRycyk7XG4gICAgICAgIH1cbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+XG4gICAgICAgIHtcbiAgICAgICAgICB4IHdpdGhcbiAgICAgICAgICBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZ2V0X3BzaWdfZXh0ZW5zaW9uIHggfD4gZnN0LCBhdHRycyk7XG4gICAgICAgIH1cbiAgICB8IFJ0YWcgLT4geyB4IHdpdGggcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiBcImxhYmVsIGRlY2xhcmF0aW9uXCJcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IFwiY29uc3RydWN0b3IgZGVjbGFyYXRpb25cIlxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBcInR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgVHlwZV9leHRlbnNpb24gLT4gXCJ0eXBlIGV4dGVuc2lvblwiXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiBcInR5cGUgZXhjZXB0aW9uXCJcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiXG4gICAgfCBQYXR0ZXJuIC0+IFwicGF0dGVyblwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4gXCJ2YWx1ZVwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDbGFzc19pbmZvcyAtPiBcImNsYXNzIGRlY2xhcmF0aW9uXCJcbiAgICB8IENsYXNzX2V4cHIgLT4gXCJjbGFzcyBleHByZXNzaW9uXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgTW9kdWxlX3R5cGUgLT4gXCJtb2R1bGUgdHlwZVwiXG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4gXCJtb2R1bGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gXCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiXG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IFwibW9kdWxlIHN1YnN0aXR1dGlvblwiXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IFwib3BlblwiXG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IFwib3BlblwiXG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IFwiaW5jbHVkZVwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4gXCJ2YWx1ZSBiaW5kaW5nXCJcbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IFwibW9kdWxlIGJpbmRpbmdcIlxuICAgIHwgUHN0cl9ldmFsIC0+IFwidG9wbGV2ZWwgZXhwcmVzc2lvblwiXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBcInRvcGxldmVsIGV4dGVuc2lvblwiXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPiBcInRvcGxldmVsIHNpZ25hdHVyZSBleHRlbnNpb25cIlxuICAgIHwgUnRhZyAtPiBcInBvbHltb3JwaGljIHZhcmlhbnQgdGFnXCJcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IFwib2JqZWN0IHR5cGUgZmllbGRcIlxuXG4gICgqXG4gIGxldCBwYXR0ZXJuIDogdHlwZSBhIGIgYyBkLiBhIHRcbiAgICAtPiAoYXR0cmlidXRlcywgYiwgYykgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBjLCBkKSBBc3RfcGF0dGVybi50XG4gICAgLT4gKGEsIGIsIGQpIEFzdF9wYXR0ZXJuLnQgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gICAgICAgLT4gQXN0X3BhdHRlcm4ucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IEFzdF9wYXR0ZXJuLnBjZF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uICAgICAgICAtPiBBc3RfcGF0dGVybi5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAgICAgICAgICAtPiBBc3RfcGF0dGVybi5wdHlleHRfYXR0cmlidXRlc1xuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yICAgLT4gQXN0X3BhdHRlcm4ucGV4dF9hdHRyaWJ1dGVzXG4qKVxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG5tb2R1bGUgRmxvYXRpbmdfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuXG4gIGxldCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZSBvcHRpb24gPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoICh0LCB4KSB3aXRoXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgeyBwc2lnX2Rlc2MgPSBQc2lnX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgeyBwY3RmX2Rlc2MgPSBQY3RmX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZSB0IHggPVxuICAgIG1hdGNoIGdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSB0IHggd2l0aFxuICAgIHwgU29tZSBhIC0+IGFcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlXCJcblxuICBsZXQgcmVwbGFjZV9ieV9kdW1teSA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYSA9XG4gICAgbGV0IGR1bW15X2V4dCA9ICh7IHR4dCA9IFwiXCI7IGxvYyA9IExvY2F0aW9uLm5vbmUgfSwgUFN0ciBbXSkgaW5cbiAgICBmdW4gdCB4IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4geyB4IHdpdGggcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGR1bW15X2V4dCwgW10pIH1cbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4geyB4IHdpdGggcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGR1bW15X2V4dCwgW10pIH1cbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4geyB4IHdpdGggcGNmX2Rlc2MgPSBQY2ZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geyB4IHdpdGggcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZHVtbXlfZXh0IH1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG5cbiAgbGV0IGVxdWFsIDogXyB0IC0+IF8gdCAtPiBib29sID0gcG9seV9lcXVhbFxuZW5kXG5cbnR5cGUgcGFja2VkX2NvbnRleHQgPVxuICB8IE9uX2l0ZW0gOiBfIENvbnRleHQudCAtPiBwYWNrZWRfY29udGV4dFxuICB8IEZsb2F0aW5nIDogXyBGbG9hdGluZ19jb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcblxudHlwZSBfIHBheWxvYWRfcGFyc2VyID1cbiAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAocGF5bG9hZCwgJ2EsICdiKSBBc3RfcGF0dGVybi50XG4gICAgICAqIChhdHRyX2xvYzpMb2NhdGlvbi50IC0+IG5hbWVfbG9jOkxvY2F0aW9uLnQgLT4gJ2EpXG4gICAgICAtPiAnYiBwYXlsb2FkX3BhcnNlclxuXG50eXBlICgnYSwgJ2IpIHQgPSB7XG4gIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgY29udGV4dCA6ICdhIENvbnRleHQudDtcbiAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xufVxuXG50eXBlIHBhY2tlZCA9IFQgOiAoXywgXykgdCAtPiBwYWNrZWRcblxubGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxubGV0IGNvbnRleHQgdCA9IHQuY29udGV4dFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiYXR0cmlidXRlXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuY3Rpb25cbiAgICB8IE9uX2l0ZW0gdCAtPiBTb21lIChDb250ZXh0LmRlc2MgdClcbiAgICB8IEZsb2F0aW5nIHQgLT4gU29tZSAoRmxvYXRpbmdfY29udGV4dC5kZXNjIHQgXiBcIiAoZmxvYXRpbmcpXCIpKVxuXG5sZXQgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgQXR0cmlidXRlIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lO1xuICB7XG4gICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgY29udGV4dDtcbiAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspO1xuICB9XG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyAtPiBrKVxuXG5sZXQgZGVjbGFyZV93aXRoX25hbWVfbG9jIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2MgLT5cbiAgICAgIGsgfm5hbWVfbG9jKVxuXG5sZXQgZGVjbGFyZV93aXRoX2F0dHJfbG9jIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2Mgfm5hbWVfbG9jOl8gLT5cbiAgICAgIGsgfmF0dHJfbG9jKVxuXG50eXBlICdhIGZsYWcgPSAoJ2EsIHVuaXQpIHRcblxubGV0IGRlY2xhcmVfZmxhZyBuYW1lIGNvbnRleHQgPVxuICBsZXQgcGF5bG9hZF9wYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgbmlsKSBpblxuICBsZXQgY29udGludWF0aW9uIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfID0gKCkgaW5cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXlsb2FkX3BhdHRlcm4gY29udGludWF0aW9uXG5cbm1vZHVsZSBBdHRyaWJ1dGVfdGFibGUgPSBTdGRsaWIuSGFzaHRibC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxvY1xuXG4gIGxldCBub3JtYWxpemUgdCA9IHsgdCB3aXRoIGxvYyA9IHsgdC5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gfVxuICBsZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIChub3JtYWxpemUgdClcbiAgbGV0IGVxdWFsIHggeSA9IFBvbHkuZXF1YWwgKG5vcm1hbGl6ZSB4KSAobm9ybWFsaXplIHkpXG5lbmQpXG5cbmxldCBub3Rfc2VlbiA9IEF0dHJpYnV0ZV90YWJsZS5jcmVhdGUgMTI4XG5sZXQgbWFya19hc19zZWVuIHsgYXR0cl9uYW1lOyBfIH0gPSBBdHRyaWJ1dGVfdGFibGUucmVtb3ZlIG5vdF9zZWVuIGF0dHJfbmFtZVxubGV0IG1hcmtfYXNfaGFuZGxlZF9tYW51YWxseSA9IG1hcmtfYXNfc2VlblxuXG5sZXQgZXhwbGljaXRseV9kcm9wID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXJcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSA9IG1hcmtfYXNfc2VlblxuICBlbmRcblxubGV0IGdldF9pbnRlcm5hbCA9XG4gIGxldCByZWMgZmluZF9iZXN0X21hdGNoIHQgYXR0cmlidXRlcyBsb25nZXN0X21hdGNoID1cbiAgICBtYXRjaCBhdHRyaWJ1dGVzIHdpdGhcbiAgICB8IFtdIC0+IE9rIGxvbmdlc3RfbWF0Y2hcbiAgICB8ICh7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBhcyBhdHRyKSA6OiByZXN0IC0+XG4gICAgICAgIGlmIE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dCB0aGVuXG4gICAgICAgICAgbWF0Y2ggbG9uZ2VzdF9tYXRjaCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgKFNvbWUgYXR0cilcbiAgICAgICAgICB8IFNvbWUgeyBhdHRyX25hbWUgPSBuYW1lJzsgXyB9IC0+XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIG5hbWUudHh0IGluXG4gICAgICAgICAgICAgIGxldCBsZW4nID0gU3RyaW5nLmxlbmd0aCBuYW1lJy50eHQgaW5cbiAgICAgICAgICAgICAgaWYgbGVuID4gbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgKFNvbWUgYXR0cilcbiAgICAgICAgICAgICAgZWxzZSBpZiBsZW4gPCBsZW4nIHRoZW4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCBsb25nZXN0X21hdGNoXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCJEdXBsaWNhdGVkIGF0dHJpYnV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2UgZmluZF9iZXN0X21hdGNoIHQgcmVzdCBsb25nZXN0X21hdGNoXG4gIGluXG4gIGZ1biB0IGF0dHJpYnV0ZXMgLT4gZmluZF9iZXN0X21hdGNoIHQgYXR0cmlidXRlcyBOb25lXG5cbmxldCBjb252ZXJ0ID8oZG9fbWFya19hc19zZWVuID0gdHJ1ZSkgcGF0dGVybiBhdHRyID1cbiAgaWYgZG9fbWFya19hc19zZWVuIHRoZW4gbWFya19hc19zZWVuIGF0dHI7XG4gIGxldCAoUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspKSA9IHBhdHRlcm4gaW5cbiAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm5cbiAgICAoQ29tbW9uLmxvY19vZl9wYXlsb2FkIGF0dHIpXG4gICAgYXR0ci5hdHRyX3BheWxvYWRcbiAgICAoayB+YXR0cl9sb2M6YXR0ci5hdHRyX2xvYyB+bmFtZV9sb2M6YXR0ci5hdHRyX25hbWUubG9jKVxuXG5sZXQgZ2V0X3JlcyB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgY29udmVydCB0LnBheWxvYWQgYXR0ciA/ZG9fbWFya19hc19zZWVuID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuXG5sZXQgZ2V0IHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geCA9XG4gIGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBoYXNfZmxhZ19yZXMgdCA/bWFya19hc19zZWVuIHggPVxuICBtYXRjaCBnZXRfcmVzID9tYXJrX2FzX3NlZW4gdCB4IHdpdGhcbiAgfCBPayAoU29tZSAoKSkgLT4gT2sgdHJ1ZVxuICB8IE9rIE5vbmUgLT4gT2sgZmFsc2VcbiAgfCBFcnJvciBfIGFzIGUgLT4gZVxuXG5sZXQgaGFzX2ZsYWcgdCA/bWFya19hc19zZWVuIHggPVxuICBoYXNfZmxhZ19yZXMgdCA/bWFya19hc19zZWVuIHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IGNvbnN1bWVfcmVzIHQgeCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGluXG4gIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPiBPayBOb25lXG4gIHwgU29tZSBhdHRyIC0+XG4gICAgICBsZXQgYXR0cnMgPSBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoYXR0ciA9PSBhdHRyJykpIGluXG4gICAgICBsZXQgeCA9IENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggYXR0cnMgaW5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgPj58IGZ1biB2YWx1ZSAtPiBTb21lICh4LCB2YWx1ZSlcblxubGV0IGNvbnN1bWUgdCB4ID1cbiAgY29uc3VtZV9yZXMgdCB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCByZW1vdmVfc2Vlbl9yZXMgKHR5cGUgYSkgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGluXG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gT2sgYWNjXG4gICAgfCBUIHQgOjogcmVzdCAtPlxuICAgICAgICBpZiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0IHRoZW5cbiAgICAgICAgICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICAgICAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIHJlc3RcbiAgICAgICAgICB8IFNvbWUgYXR0ciAtPlxuICAgICAgICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgICAgICAgIGlmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZSB0aGVuIGxvb3AgYWNjIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBsb29wIChhdHRyIDo6IGFjYykgcmVzdFxuICAgICAgICBlbHNlIGxvb3AgYWNjIHJlc3RcbiAgaW5cbiAgbG9vcCBbXSBwYWNrZWRzID4+fCBmdW4gbWF0Y2hlZCAtPlxuICBsZXQgYXR0cnMgPVxuICAgIExpc3QuZmlsdGVyIGF0dHJzIH5mOihmdW4gYXR0cicgLT4gbm90IChMaXN0Lm1lbXEgfnNldDptYXRjaGVkIGF0dHInKSlcbiAgaW5cbiAgQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IHggYXR0cnNcblxubGV0IHJlbW92ZV9zZWVuICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIHJlbW92ZV9zZWVuX3JlcyAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSlcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IHBhdHRlcm5fcmVzIHQgcCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgZiA9IEFzdF9wYXR0ZXJuLnRvX2Z1bmMgcCBpblxuICBBc3RfcGF0dGVybi5vZl9mdW5jIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGNvbnN1bWVfcmVzIHQgeCA+PnwgZnVuIHJlcyAtPlxuICAgICAgbWF0Y2ggcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmIGN0eCBsb2MgeCAoayBOb25lKVxuICAgICAgfCBTb21lICh4LCB2KSAtPiBmIGN0eCBsb2MgeCAoayAoU29tZSB2KSkpXG5cbmxldCBwYXR0ZXJuIHQgcCA9XG4gIHBhdHRlcm5fcmVzIHQgcCB8PiBBc3RfcGF0dGVybi50b19mdW5jXG4gIHw+IChmdW4gZiBhIGIgYyBkIC0+XG4gICAgICAgZiBhIGIgYyBkXG4gICAgICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycikpXG4gIHw+IEFzdF9wYXR0ZXJuLm9mX2Z1bmNcblxubW9kdWxlIEZsb2F0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gRmxvYXRpbmdfY29udGV4dFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdhIENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogJ2IgcGF5bG9hZF9wYXJzZXI7XG4gIH1cblxuICBsZXQgbmFtZSB0ID0gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gayk7XG4gICAgfVxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB4ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBtYXRjaCB0cyB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCB7IGNvbnRleHQ7IF8gfSA6OiBfIC0+IChcbiAgICAgICAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgdHMgfmY6KGZ1biB0IC0+IENvbnRleHQuZXF1YWwgdC5jb250ZXh0IGNvbnRleHQpKTtcbiAgICAgICAgbGV0IGF0dHIgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGUgY29udGV4dCB4IGluXG4gICAgICAgIGxldCBuYW1lID0gYXR0ci5hdHRyX25hbWUgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0LmZpbHRlciB0cyB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUudHh0KVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgW10gLT4gT2sgTm9uZVxuICAgICAgICB8IFsgdCBdIC0+IGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgPj58IGZ1biB2YWx1ZSAtPiBTb21lIHZhbHVlXG4gICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGZsb2F0aW5nIGF0dHJpYnV0ZXM6ICVzXCJcbiAgICAgICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgICAgIFtdICkpXG5cbiAgbGV0IGNvbnZlcnQgdHMgeCA9XG4gICAgY29udmVydF9yZXMgdHMgeFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lID1cbiAgaWZcbiAgICAobm90XG4gICAgICAgKE5hbWUuQWxsb3dsaXN0ZWQuaXNfYWxsb3dsaXN0ZWQgfmtpbmQ6YEF0dHJpYnV0ZSBuYW1lLnR4dFxuICAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dCkpXG4gICAgJiYgQXR0cmlidXRlX3RhYmxlLm1lbSBub3Rfc2VlbiBuYW1lXG4gIHRoZW5cbiAgICBsZXQgYWxsb3dsaXN0ID0gTmFtZS5BbGxvd2xpc3RlZC5nZXRfYXR0cmlidXRlX2xpc3QgKCkgaW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciBjb250ZXh0IH5hbGxvd2xpc3RcbiAgICAgICAgXCJBdHRyaWJ1dGUgYCVzJyB3YXMgbm90IHVzZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9IF8gPVxuICAgICAgW1xuICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIjtcbiAgICAgIF1cblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX25vZGUgOiB0eXBlIGEuXG4gICAgICAgIGEgQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIGluXG4gICAgICAgIG1hdGNoIGF0dHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiAobm9kZSwgW10pXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICAgIExpc3QubWFwIGF0dHJzXG4gICAgICAgICAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBjb2xsZWN0ZWRfZXJyb3JzID1cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQgW11cbiAgICAgICAgICAgICAgICAgICAgQCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAoKiBJZiB3ZSBhbGxvdyB0aGUgYXR0cmlidXRlIHRvIHBhc3MgdGhyb3VnaCwgbWFyayBpdCBhcyBzZWVuICopXG4gICAgICAgICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3RlZF9lcnJvcnMpXG4gICAgICAgICAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdLCBlcnJvcnMpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19mbG9hdGluZyA6IHR5cGUgYS5cbiAgICAgICAgYSBGbG9hdGluZy5Db250ZXh0LnQgLT4gYSAtPiBhICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBGbG9hdGluZy5Db250ZXh0LmdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSBjb250ZXh0IG5vZGVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IFNvbWUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoRmxvYXRpbmcgY29udGV4dCkgbmFtZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyO1xuICAgICAgICAgICAgKEZsb2F0aW5nLkNvbnRleHQucmVwbGFjZV9ieV9kdW1teSBjb250ZXh0IG5vZGUsIGNvbGxlY3RlZF9lcnJvcnMpXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBMYWJlbF9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNsYWJlbF9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4dGVuc2lvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZXhjZXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZXhjZXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IGluXG4gICAgICBzdXBlciNleHRlbnNpb25fY29uc3RydWN0b3IgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFBhdHRlcm4geCBpblxuICAgICAgc3VwZXIjcGF0dGVybiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb3JlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY29yZV90eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHByZXNzaW9uIHggaW5cbiAgICAgIHN1cGVyI2V4cHJlc3Npb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9kZXNjcmlwdGlvbiB4IGluXG4gICAgICBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfdHlwZSB4IGluXG4gICAgICBzdXBlciNjbGFzc190eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19pbmZvcyB4IGluXG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19leHByIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2V4cHIgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfdHlwZSB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZXNjcmlwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgb3Blbl9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgT3Blbl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNvcGVuX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEluY2x1ZGVfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2V4cHIgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFZhbHVlX2JpbmRpbmcgeCBpblxuICAgICAgc3VwZXIjdmFsdWVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzMSA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19maWVsZCB4IGluXG4gICAgICBsZXQgeCwgZXJyb3JzMiA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfZmllbGQgeCAoYWNjIEAgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfdHlwZV9maWVsZCB4IGluXG4gICAgICBsZXQgeCwgZXJyb3JzMiA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgQ2xhc3NfdHlwZV9maWVsZCB4IGluXG4gICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9ycyA9XG4gICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aCBSdGFnIF8gLT4gc2VsZiNjaGVja19ub2RlIFJ0YWcgeCB8IF8gLT4gKHgsIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3Jvd19maWVsZCB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZykgLT5cbiAgICAgICAgICAgIGxldCBmaWVsZHMsIGVycm9ycyA9XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+Zjooc2VsZiNjaGVja19ub2RlIE9iamVjdF90eXBlX2ZpZWxkKVxuICAgICAgICAgICAgICB8PiBMaXN0LnNwbGl0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChmaWVsZHMsIGNsb3NlZF9mbGFnKSwgTGlzdC5jb25jYXQgZXJyb3JzKVxuICAgICAgICB8IF8gLT4gKHgsIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZV9kZXNjIHggKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSBhY2MgPVxuICAgICAgbGV0IGl0ZW0sIGVycm9ycyA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgU3RydWN0dXJlX2l0ZW0gaXRlbSBpblxuICAgICAgbGV0IGl0ZW0sIGVycm9yczIgPVxuICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXZhbCBpdGVtXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gXyAtPiBzZWxmI2NoZWNrX25vZGUgUHN0cl9leHRlbnNpb24gaXRlbVxuICAgICAgICB8IF8gLT4gKGl0ZW0sIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGl0ZW0gKGFjYyBAIGVycm9ycyBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFNpZ25hdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzaWdfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuICBlbmRcblxubGV0IGNoZWNrX2F0dHJpYnV0ZSByZWdpc3RyYXIgY29udGV4dCBuYW1lID1cbiAgbWF0Y2ggY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCByYWlzZV9pZl9ub25fZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX25vZGUgOiB0eXBlIGEuIGEgQ29udGV4dC50IC0+IGEgLT4gYSA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIGluXG4gICAgICAgIG1hdGNoIGF0dHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBub2RlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyIGF0dHJzXG4gICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgICAgICAgICAgIGNoZWNrX2F0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAgICAgICAgICAgICAgICAoKiBJZiB3ZSBhbGxvdyB0aGUgYXR0cmlidXRlIHRvIHBhc3MgdGhyb3VnaCwgbWFyayBpdCBhcyBzZWVuICopXG4gICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHIpO1xuICAgICAgICAgICAgQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgW11cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9ID1cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5hbWUubG9jXG4gICAgICAgIFwiYXR0cmlidXRlIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuQXR0cmlidXRlIG5lZWRzIHVwZGF0aW5nIVwiXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbGFiZWxfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXh0ZW5zaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9leGNlcHRpb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcGF0dGVybiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb3JlX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4cHJlc3Npb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9kZXNjcmlwdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4ID1cbiAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgKHNlbGYjY2hlY2tfbm9kZSBDbGFzc19pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfZXhwciB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgb3Blbl9kZXNjcmlwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI29wZW5fZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgKHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHgpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3ZhbHVlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfYmluZGluZyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNyb3dfZmllbGQgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb3JlX3R5cGVfZGVzYyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBpdGVtID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3N0cnVjdHVyZV9pdGVtIGl0ZW0gW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZV9pdGVtIGl0ZW0gW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuICBlbmRcblxubGV0IHJlc2V0X2NoZWNrcyAoKSA9IEF0dHJpYnV0ZV90YWJsZS5jbGVhciBub3Rfc2VlblxuXG5sZXQgY29sbGVjdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cilcbiAgICAgICAgPVxuICAgICAgbGV0IGxvYyA9IENvbW1vbi5sb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgIHN1cGVyI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgIEF0dHJpYnV0ZV90YWJsZS5hZGQgbm90X3NlZW4gbmFtZSBsb2NcbiAgZW5kXG5cbmxldCBjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgPVxuICBsZXQgZmFpbCBuYW1lIGxvYyBhY2MgPVxuICAgIGxldCB0eHQgPSBuYW1lLnR4dCBpblxuICAgIGlmIG5vdCAoTmFtZS5pZ25vcmVfY2hlY2tzIHR4dCkgdGhlblxuICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlIGAlcycgd2FzIHNpbGVudGx5IGRyb3BwZWRcIiB0eHRcbiAgICAgIDo6IGFjY1xuICAgIGVsc2UgYWNjXG4gIGluXG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkIGZhaWwgbm90X3NlZW4gW11cblxubGV0IGNoZWNrX2FsbF9zZWVuICgpID1cbiAgbWF0Y2ggY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSA9XG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUucmVtb3ZlIHRhYmxlIG5hbWVcbiAgZW5kXG5cbmxldCBjb3B5X29mX25vdF9zZWVuICgpID1cbiAgbGV0IGNvcHkgPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIChBdHRyaWJ1dGVfdGFibGUubGVuZ3RoIG5vdF9zZWVuKSBpblxuICBBdHRyaWJ1dGVfdGFibGUuaXRlciAoQXR0cmlidXRlX3RhYmxlLmFkZCBjb3B5KSBub3Rfc2VlbjtcbiAgY29weVxuXG5sZXQgZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIHN0ID1cbiAgbGV0IHRhYmxlID0gY29weV9vZl9ub3Rfc2VlbiAoKSBpblxuICAocmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSkjc3RydWN0dXJlIHN0O1xuICBBdHRyaWJ1dGVfdGFibGUuZm9sZFxuICAgIChmdW4gbmFtZSBsb2MgYWNjIC0+IHsgdHh0ID0gbmFtZS50eHQ7IGxvYyB9IDo6IGFjYylcbiAgICB0YWJsZSBbXVxuXG5sZXQgZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIHNnID1cbiAgbGV0IHRhYmxlID0gY29weV9vZl9ub3Rfc2VlbiAoKSBpblxuICAocmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSkjc2lnbmF0dXJlIHNnO1xuICBBdHRyaWJ1dGVfdGFibGUuZm9sZFxuICAgIChmdW4gbmFtZSBsb2MgYWNjIC0+IHsgdHh0ID0gbmFtZS50eHQ7IGxvYyB9IDo6IGFjYylcbiAgICB0YWJsZSBbXVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IHtcbiAgZmlsZV9wYXRoIDogc3RyaW5nO1xuICBtYWluX21vZHVsZV9uYW1lIDogc3RyaW5nO1xuICBzdWJtb2R1bGVfcGF0aCA6IHN0cmluZyBsb2MgbGlzdDtcbiAgZW5jbG9zaW5nX21vZHVsZSA6IHN0cmluZztcbiAgZW5jbG9zaW5nX3ZhbHVlIDogc3RyaW5nIG9wdGlvbjtcbiAgdmFsdWUgOiBzdHJpbmcgbG9jIG9wdGlvbjtcbiAgaW5fZXhwciA6IGJvb2w7XG59XG5cbmxldCB0b3BfbGV2ZWwgfmZpbGVfcGF0aCA9XG4gIGxldCBtYWluX21vZHVsZV9uYW1lID1cbiAgICBmaWxlX3BhdGggfD4gU3RkbGliLkZpbGVuYW1lLmJhc2VuYW1lIHw+IFN0ZGxpYi5GaWxlbmFtZS5yZW1vdmVfZXh0ZW5zaW9uXG4gICAgfD4gU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbiAgaW5cbiAge1xuICAgIGZpbGVfcGF0aDtcbiAgICBtYWluX21vZHVsZV9uYW1lO1xuICAgIHN1Ym1vZHVsZV9wYXRoID0gW107XG4gICAgZW5jbG9zaW5nX21vZHVsZSA9IG1haW5fbW9kdWxlX25hbWU7XG4gICAgZW5jbG9zaW5nX3ZhbHVlID0gTm9uZTtcbiAgICB2YWx1ZSA9IE5vbmU7XG4gICAgaW5fZXhwciA9IGZhbHNlO1xuICB9XG5cbmxldCBmaWxlX3BhdGggdCA9IHQuZmlsZV9wYXRoXG5sZXQgbWFpbl9tb2R1bGVfbmFtZSB0ID0gdC5tYWluX21vZHVsZV9uYW1lXG5sZXQgZW5jbG9zaW5nX21vZHVsZSB0ID0gdC5lbmNsb3NpbmdfbW9kdWxlXG5sZXQgZW5jbG9zaW5nX3ZhbHVlIHQgPSB0LmVuY2xvc2luZ192YWx1ZVxuXG5sZXQgc3VibW9kdWxlX3BhdGggdCA9XG4gIExpc3QucmV2X21hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQuc3VibW9kdWxlX3BhdGhcblxubGV0IHZhbHVlIHQgPSBPcHRpb24ubWFwIH5mOihmdW4gbG9jYXRlZCAtPiBsb2NhdGVkLnR4dCkgdC52YWx1ZVxuXG5sZXQgZnVsbHlfcXVhbGlmaWVkX3BhdGggdCA9XG4gIGxldCB2YWx1ZSA9IHZhbHVlIHQgaW5cbiAgbGV0IHN1Ym1vZHVsZV9wYXRoID1cbiAgICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IFNvbWUgbG9jYXRlZC50eHQpIHQuc3VibW9kdWxlX3BhdGhcbiAgaW5cbiAgbGV0IG5hbWVzID0gKFNvbWUgdC5tYWluX21vZHVsZV9uYW1lIDo6IHN1Ym1vZHVsZV9wYXRoKSBAIFsgdmFsdWUgXSBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgQEAgTGlzdC5maWx0ZXJfb3B0IG5hbWVzXG5cbmxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBpbl9leHByID0gdHJ1ZSB9XG5cbmxldCBlbnRlcl9tb2R1bGUgfmxvYyBtb2R1bGVfbmFtZSB0ID1cbiAgaWYgdC5pbl9leHByIHRoZW4geyB0IHdpdGggZW5jbG9zaW5nX21vZHVsZSA9IG1vZHVsZV9uYW1lIH1cbiAgZWxzZVxuICAgIHtcbiAgICAgIHQgd2l0aFxuICAgICAgc3VibW9kdWxlX3BhdGggPSB7IHR4dCA9IG1vZHVsZV9uYW1lOyBsb2MgfSA6OiB0LnN1Ym1vZHVsZV9wYXRoO1xuICAgICAgZW5jbG9zaW5nX21vZHVsZSA9IG1vZHVsZV9uYW1lO1xuICAgIH1cblxubGV0IGVudGVyX3ZhbHVlIH5sb2MgdmFsdWVfbmFtZSB0ID1cbiAgaWYgdC5pbl9leHByIHRoZW4geyB0IHdpdGggZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lIH1cbiAgZWxzZVxuICAgIHtcbiAgICAgIHQgd2l0aFxuICAgICAgdmFsdWUgPSBTb21lIHsgdHh0ID0gdmFsdWVfbmFtZTsgbG9jIH07XG4gICAgICBlbmNsb3NpbmdfdmFsdWUgPSBTb21lIHZhbHVlX25hbWU7XG4gICAgfVxuXG5sZXQgdG9fc3RyaW5nX3BhdGggdCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiAodC5maWxlX3BhdGggOjogc3VibW9kdWxlX3BhdGggdClcbmxldCB3aXRoX3N0cmluZ19wYXRoIGYgfmxvYyB+cGF0aCA9IGYgfmxvYyB+cGF0aDoodG9fc3RyaW5nX3BhdGggcGF0aCk7O1xuXG5sZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgbGV0IGEgPSBcImxvbFwiXG5lbmQgaW5cbk0uYVxuIiwibW9kdWxlIEJhc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyB0b29sX25hbWUgOiBzdHJpbmc7IGNvZGVfcGF0aCA6IENvZGVfcGF0aC50OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICBsZXQgdG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZSA9XG4gICAgbGV0IGNvZGVfcGF0aCA9IENvZGVfcGF0aC50b3BfbGV2ZWwgfmZpbGVfcGF0aCBpblxuICAgIHsgdG9vbF9uYW1lOyBjb2RlX3BhdGg7IGlucHV0X25hbWUgfVxuXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC50b29sX25hbWVcbiAgbGV0IGVudGVyX2V4cHIgdCA9IHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl9leHByIHQuY29kZV9wYXRoIH1cblxuICBsZXQgZW50ZXJfbW9kdWxlIH5sb2MgbmFtZSB0ID1cbiAgICB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfbW9kdWxlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0ID1cbiAgICB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfdmFsdWUgfmxvYyBuYW1lIHQuY29kZV9wYXRoIH1cbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYyA6IExvY2F0aW9uLnQ7IGJhc2UgOiBCYXNlLnQgfVxuXG4gIGxldCBtYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jIH5iYXNlICgpID0geyBleHRlbnNpb25fcG9pbnRfbG9jOyBiYXNlIH1cbiAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgdCA9IHQuZXh0ZW5zaW9uX3BvaW50X2xvY1xuICBsZXQgY29kZV9wYXRoIHQgPSB0LmJhc2UuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmJhc2UuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LmJhc2UudG9vbF9uYW1lXG5cbiAgbGV0IHdpdGhfbG9jX2FuZF9wYXRoIGYgfmN0eHQgPVxuICAgIGYgfmxvYzpjdHh0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgIH5wYXRoOihDb2RlX3BhdGgudG9fc3RyaW5nX3BhdGggY3R4dC5iYXNlLmNvZGVfcGF0aClcbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGRlcml2ZWRfaXRlbV9sb2MgOiBMb2NhdGlvbi50OyBpbmxpbmUgOiBib29sOyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZGVyaXZlZF9pdGVtX2xvYyB+aW5saW5lIH5iYXNlICgpID1cbiAgICB7IGRlcml2ZWRfaXRlbV9sb2M7IGJhc2U7IGlubGluZSB9XG5cbiAgbGV0IGRlcml2ZWRfaXRlbV9sb2MgdCA9IHQuZGVyaXZlZF9pdGVtX2xvY1xuICBsZXQgY29kZV9wYXRoIHQgPSB0LmJhc2UuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmJhc2UuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LmJhc2UudG9vbF9uYW1lXG4gIGxldCBpbmxpbmUgdCA9IHQuaW5saW5lXG5cbiAgbGV0IHdpdGhfbG9jX2FuZF9wYXRoIGYgfmN0eHQgPVxuICAgIGYgfmxvYzpjdHh0LmRlcml2ZWRfaXRlbV9sb2NcbiAgICAgIH5wYXRoOihDb2RlX3BhdGgudG9fc3RyaW5nX3BhdGggY3R4dC5iYXNlLmNvZGVfcGF0aClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vbi5XaXRoX2Vycm9yc1xuaW5jbHVkZSBBc3RfdHJhdmVyc2UwXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgWydjdHgsICdyZXNdIFBweGxpYl90cmF2ZXJzZV9idWlsdGlucy5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBBc3QubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIGVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBmdW5jdGlvbiBOb25lIC0+IFwiX1wiIHwgU29tZSBuYW1lIC0+IG5hbWVcbmxldCBlbnRlciBuYW1lIHBhdGggPSBpZiBTdHJpbmcuaXNfZW1wdHkgcGF0aCB0aGVuIG5hbWUgZWxzZSBwYXRoIF4gXCIuXCIgXiBuYW1lXG5sZXQgZW50ZXJfb3B0IG5hbWVfb3B0IHBhdGggPSBlbnRlciAobW9kdWxlX25hbWUgbmFtZV9vcHQpIHBhdGhcblxuY2xhc3MgbWFwX3dpdGhfcGF0aCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZ10gbWFwX3dpdGhfY29udGV4dCBhcyBzdXBlclxuXG4gICAgKCogV0FTOlxuICAgICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyBwYXRoIHggPVxuICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgIHwgUHN0cl9tb2R1bGUgbWIgLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyAoZW50ZXIgbWIucG1iX25hbWUudHh0IHBhdGgpIHhcbiAgICAgICB8IF8gLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyBwYXRoIHhcblxuICAgICAgIE92ZXJyaWRpbmcgW21vZHVsZV9iaW5kaW5nXSBzZWVtcyB0byBiZSBPSyBiZWNhdXNlIGl0IGRvZXMgbm90IGNhdGNoXG4gICAgICAgbG9jYWwgbW9kdWxlIGJpbmRpbmdzIGJlY2F1c2UgYXQgdGhlIG1vbWVudCB0aGUgcGFyc2V0cmVlIGRvZXNuJ3QgbWFrZVxuICAgICAgIHVzZSBvZiBbbW9kdWxlX2JpbmRpbmddIGZvciBsb2NhbCBtb2R1bGVzLCBidXQgdGhhdCBtaWdodCBjaGFuZ2UgaW4gdGhlXG4gICAgICAgZnV0dXJlLCBzbyB0aGlzIG1pZ2h0IGJlIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuXG5cbiAgICAgICBUaGUgZm9sbG93aW5nOlxuXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcblxuICAgICAgIGlzIGRpc2FsbG93ZWQsIGJ1dFxuXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbGV0IF8gPSAuLiBsZXQgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kIGluIC4uXG5cbiAgICAgICBpc24ndCwgYW5kIHRoZSBcInBhdGhcIiBjb25zdHJ1Y3RlZCBoZXJlIHdvdWxkIGJlIGFibGUgdG8gZGlmZmVyZW50aWF0ZVxuICAgICAgIGJldHdlZW4gdGhlbS4gKilcbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHBhdGggbWIgPVxuICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgKGVudGVyX29wdCBtYi5wbWJfbmFtZS50eHQgcGF0aCkgbWJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHBhdGggbWQgPVxuICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIChlbnRlcl9vcHQgbWQucG1kX25hbWUudHh0IHBhdGgpIG1kXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHBhdGggbXRkID1cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIChlbnRlciBtdGQucG10ZF9uYW1lLnR4dCBwYXRoKSBtdGRcbiAgZW5kXG5cbmxldCB2YXJfbmFtZXNfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmcgbGlzdF0gZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHAgYWNjID1cbiAgICAgIGxldCBhY2MgPSBzdXBlciNwYXR0ZXJuIHAgYWNjIGluXG4gICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoIFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gdHh0IDo6IGFjYyB8IF8gLT4gYWNjXG4gIGVuZFxuXG5sZXQgZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jIG5hbWVfb3B0IGN0eHQgPVxuICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIChtb2R1bGVfbmFtZSBuYW1lX29wdCkgY3R4dFxuXG5sZXQgZW50ZXJfdmFsdWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5lbnRlcl92YWx1ZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9pZGVudCAobGlkZW50IF9fJykpKVxuICAgIEZuLmlkXG5cbmxldCBlbnRlcl9tb2R1bGUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5lbnRlcl9tb2R1bGVcIiBNb2R1bGVfZXhwclxuICAgIEFzdF9wYXR0ZXJuLihzaW5nbGVfZXhwcl9wYXlsb2FkIChwZXhwX2NvbnN0cnVjdCAobGlkZW50IF9fJykgbm9uZSkpXG4gICAgRm4uaWRcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX3ZhbHVlXCIgVmFsdWVfYmluZGluZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX3ZhbHVlXCIgVmFsdWVfZGVzY3JpcHRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfYmluZGluZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX2xldF9tb2R1bGUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgRXhwcmVzc2lvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5jbGFzcyBtYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzID1cbiAgbGV0IHJldHVybiBfY3R4IHggPSAoeCwgW10pIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0XG4gICAgICBbRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50LCBMb2NhdGlvbi5FcnJvci50IGxpc3RdIGxpZnRfbWFwX3dpdGhfY29udGV4dCBhcyBzdXBlclxuXG4gICAgbWV0aG9kIGludCA9IHJldHVyblxuICAgIG1ldGhvZCBzdHJpbmcgPSByZXR1cm5cbiAgICBtZXRob2QgYm9vbCA9IHJldHVyblxuICAgIG1ldGhvZCBjaGFyID0gcmV0dXJuXG4gICAgbWV0aG9kIGZsb2F0ID0gcmV0dXJuXG4gICAgbWV0aG9kIGludDMyID0gcmV0dXJuXG4gICAgbWV0aG9kIGludDY0ID0gcmV0dXJuXG4gICAgbWV0aG9kIG5hdGl2ZWludCA9IHJldHVyblxuICAgIG1ldGhvZCB1bml0ID0gcmV0dXJuXG5cbiAgICBtZXRob2QgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0KSAtPlxuICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgICAgICdhIGFycmF5IC0+XG4gICAgICAgICAgJ2EgYXJyYXkgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGYgY3R4IGEgLT5cbiAgICAgICAgbGV0IGxpc3QsIGVycm9ycyA9IHNlbGYjbGlzdCBmIGN0eCAoQXJyYXkudG9fbGlzdCBhKSBpblxuICAgICAgICAoQXJyYXkub2ZfbGlzdCBsaXN0LCBlcnJvcnMpXG5cbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+IExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gXyBfIC0+IFtdXG5cbiAgICBtZXRob2QgcmVjb3JkIF9jdHggZmllbGRzID0gTGlzdC5jb25jYXRfbWFwIGZpZWxkcyB+ZjpzbmRcbiAgICBtZXRob2QgY29uc3RyIF9jdHggX3RhZyBhcmdzID0gTGlzdC5jb25jYXQgYXJnc1xuICAgIG1ldGhvZCB0dXBsZSBfY3R4IGwgPSBMaXN0LmNvbmNhdCBsXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gY3R4dFxuICAgICAgICAoeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYXMgZXhwcikgPVxuICAgICAgbGV0IHdpdGhfdmFsdWUgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl92YWx1ZSBleHByIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3R4dFxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfdmFsdWUgPj49IGZ1biBjdHh0IC0+XG4gICAgICBsZXQgY3R4dCA9IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfZXhwciBjdHh0IGluXG4gICAgICBsZXQgcGV4cF9kZXNjLCBkZXNjX2Vycm9ycyA9XG4gICAgICAgIG1hdGNoIHBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIG1vZHVsZV9leHByLCBib2R5KSAtPlxuICAgICAgICAgICAgbGV0IG5hbWUsIG5hbWVfZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHh0IG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlX2V4cHIsIG1vZHVsZV9leHByX2Vycm9ycyA9XG4gICAgICAgICAgICAgIGxldCB3aXRoX2xldF9tb2R1bGUgPVxuICAgICAgICAgICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIGV4cHJcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptb2R1bGVfZXhwci5wbW9kX2xvYyBuYW1lLnR4dCBjdHh0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHdpdGhfbGV0X21vZHVsZSA+Pj0gZnVuIGN0eHQgLT4gc2VsZiNtb2R1bGVfZXhwciBjdHh0IG1vZHVsZV9leHByXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGJvZHksIGJvZHlfZXJyb3JzID0gc2VsZiNleHByZXNzaW9uIGN0eHQgYm9keSBpblxuICAgICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eHQgXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBuYW1lX2Vycm9yczsgbW9kdWxlX2V4cHJfZXJyb3JzOyBib2R5X2Vycm9ycyBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSksIGVycm9ycylcbiAgICAgICAgfCBfIC0+IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eHQgcGV4cF9kZXNjXG4gICAgICBpblxuICAgICAgbGV0IHBleHBfbG9jLCBsb2NfZXJyb3JzID0gc2VsZiNsb2NhdGlvbiBjdHh0IHBleHBfbG9jIGluXG4gICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGxvY19zdGFja19lcnJvcnMgPVxuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvbiBjdHh0IHBleHBfbG9jX3N0YWNrXG4gICAgICBpblxuICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgY3R4dCBwZXhwX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICAoIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LFxuICAgICAgICBzZWxmI3JlY29yZCBjdHh0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIGRlc2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIGxvY19lcnJvcnMpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgbG9jX3N0YWNrX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJhdHRyaWJ1dGVzXCIsIGF0dHJpYnV0ZXNfZXJyb3JzKTtcbiAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgY3R4dCBtZSA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZXhwciA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGVudGVyX21vZHVsZSBtZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfZXhwciA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2V4cHIgY3R4dCBtZVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBjdHh0IG1iID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9iaW5kaW5nID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIG1iXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1iLnBtYl9sb2MgbWIucG1iX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9iaW5kaW5nID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfYmluZGluZyBjdHh0IG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBjdHh0IG1kID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gbWRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPiBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bWQucG1kX2xvYyBtZC5wbWRfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHh0IG10ZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBtdGRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYzptdGQucG10ZF9sb2NcbiAgICAgICAgICAgICAgbXRkLnBtdGRfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPj49IGZ1biBjdHh0IC0+XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHh0IG10ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IHZkID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIHZkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYzp2ZC5wdmFsX2xvYyB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICAgICAgIGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uID4+PSBmdW4gY3R4dCAtPiBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IHZkXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgY3R4dFxuICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhcyB2YikgPVxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX3ZhbHVlX2JpbmRpbmcgdmIgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lICgpIC0+IHN1cGVyI3ZhbHVlX2JpbmRpbmcgY3R4dCB2YlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGluX2JpbmRpbmdfY3R4dCA9XG4gICAgICAgICAgICBtYXRjaCB2YXJfbmFtZXNfb2YjcGF0dGVybiBwdmJfcGF0IFtdIHdpdGhcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPiBjdHh0XG4gICAgICAgICAgICB8IFsgdmFyX25hbWUgXSAtPlxuICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYzpwdmJfbG9jIHZhcl9uYW1lIGN0eHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfcGF0LCBwYXRfZXJyb3JzID0gc2VsZiNwYXR0ZXJuIGN0eHQgcHZiX3BhdCBpblxuICAgICAgICAgIGxldCBwdmJfZXhwciwgZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGluX2JpbmRpbmdfY3R4dCBwdmJfZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgaW5fYmluZGluZ19jdHh0IHB2Yl9hdHRyaWJ1dGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwdmJfbG9jIGluXG4gICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICBzZWxmI3JlY29yZCBjdHh0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHBhdF9lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIGV4cHJfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGVycm9ycylcbiAgZW5kXG5cbmNsYXNzIHNleHBfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtTZXhwLnRdIEFzdC5saWZ0XG4gICAgbWV0aG9kIGludCA9IHNleHBfb2ZfaW50XG4gICAgbWV0aG9kIHN0cmluZyA9IHNleHBfb2Zfc3RyaW5nXG4gICAgbWV0aG9kIGJvb2wgPSBzZXhwX29mX2Jvb2xcbiAgICBtZXRob2QgY2hhciA9IHNleHBfb2ZfY2hhclxuICAgIG1ldGhvZCBmbG9hdCA9IHNleHBfb2ZfZmxvYXRcbiAgICBtZXRob2QgaW50MzIgPSBzZXhwX29mX2ludDMyXG4gICAgbWV0aG9kIGludDY0ID0gc2V4cF9vZl9pbnQ2NFxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSBzZXhwX29mX25hdGl2ZWludFxuICAgIG1ldGhvZCB1bml0ID0gc2V4cF9vZl91bml0XG4gICAgbWV0aG9kIG9wdGlvbiA9IHNleHBfb2Zfb3B0aW9uXG4gICAgbWV0aG9kIGxpc3QgPSBzZXhwX29mX2xpc3RcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhIC0+IFNleHAudCkgLT4gJ2EgYXJyYXkgLT4gU2V4cC50ID0gc2V4cF9vZl9hcnJheVxuICAgIG1ldGhvZCBvdGhlciA6ICdhLiAnYSAtPiBTZXhwLnQgPSBmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCJcblxuICAgIG1ldGhvZCByZWNvcmQgZmllbGRzID1cbiAgICAgIExpc3RcbiAgICAgICAgKExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChsYWJlbCwgc2V4cCkgLT5cbiAgICAgICAgICAgICBTZXhwLkxpc3QgWyBBdG9tIGxhYmVsOyBzZXhwIF0pKVxuXG4gICAgbWV0aG9kIGNvbnN0ciB0YWcgYXJncyA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGggW10gLT4gQXRvbSB0YWcgfCBfIC0+IExpc3QgKEF0b20gdGFnIDo6IGFyZ3MpXG5cbiAgICBtZXRob2QgdHVwbGUgbCA9IExpc3QgbFxuICBlbmRcblxubGV0IHNleHBfb2YgPSBuZXcgc2V4cF9vZlxuIiwiIyAxIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gXG5vcGVuIExleGluZ1xuXG5sZXQgdXBkYXRlX2xvYyBsZXhidWYgbGluZXNfdG9fc2tpcCA9XG4gIGxldCBwb3MgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7IHBvcyB3aXRoXG4gICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyBsaW5lc190b19za2lwO1xuICAgIHBvc19ib2wgPSBwb3MucG9zX2NudW07XG4gIH1cblxuIyAxMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDZcXDAwMFxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBza2lwX2hhc2hfYmFuZyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTQgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICggdXBkYXRlX2xvYyBsZXhidWYgMyApXG4jIDExMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCAxIC0+XG4jIDE2IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDEgKVxuIyAxMTggXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMiAtPlxuIyAxNyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgICggKCkgKVxuIyAxMjMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4gSW1wb3J0XG5cbmxldCB3aXRoX291dHB1dCBmbiB+YmluYXJ5IH5mID1cbiAgbWF0Y2ggZm4gd2l0aFxuICB8IE5vbmUgfCBTb21lIFwiLVwiIC0+XG4gICAgICAoKiBGbGlwcGluZyBiYWNrIGFuZCBmb3J0aCBmcm9tIGJpbmFyeSB0byB0ZXh0IGlzIG5vdFxuICAgICAgICAgYSBnb29kIGlkZWEsIHNvIHdlJ2xsIG1ha2UgdHdvIHNpbXBsaWZ5aW5nIGFzc3VtcHRpb25zOlxuICAgICAgICAgMS4gQXNzdW1lIHRoYXQgbm90aGluZyBpcyBidWZmZXJlZCBvbiBzdGRvdXQgYmVmb3JlXG4gICAgICAgICAgICBlbnRlcmluZyBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgICAgIGZsdXNoIHRoZSBzdGRvdXQgb24gZW50cnkuXG4gICAgICAgICAyLiBBc3N1bWUgdGhhdCBub3RoaW5nIGVsc2UgaXMgc2VudCB0byBzdGRvdXQgYWZ0ZXJcbiAgICAgICAgICAgIFt3aXRoX291dHB1dF0uIFRoYXQgbWVhbnMgaXQgaXMgc2FmZSB0byBsZWF2ZSBzdGRvdXRcbiAgICAgICAgICAgIGNoYW5uZWwgaW4gYmluYXJ5IG1vZGUgKG9yIHRleHQgbW9kZSBpZiBbYmluYXJ5PXRydWVdKVxuICAgICAgICAgICAgYWZ0ZXIgdGhlIGZ1bmN0aW9uIGlzIGRvbmUuICopXG4gICAgICBzZXRfYmluYXJ5X21vZGVfb3V0IHN0ZG91dCBiaW5hcnk7XG4gICAgICBmIHN0ZG91dFxuICB8IFNvbWUgZm4gLT4gT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5iaW5hcnkgfmZcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiB8IEltcGxcblxuICBsZXQgb2ZfZmlsZW5hbWUgZm4gOiB0IG9wdGlvbiA9XG4gICAgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbFwiIHRoZW4gU29tZSBJbXBsXG4gICAgZWxzZSBpZiBTdGRsaWIuRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZuIFwiLm1saVwiIHRoZW4gU29tZSBJbnRmXG4gICAgZWxzZSBOb25lXG5cbiAgbGV0IGRlc2NyaWJlID0gZnVuY3Rpb24gSW1wbCAtPiBcImltcGxlbWVudGF0aW9uXCIgfCBJbnRmIC0+IFwiaW50ZXJmYWNlXCJcbiAgbGV0IGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBQb2x5LmVxdWFsXG5lbmRcblxubW9kdWxlIEludGZfb3JfaW1wbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG5cbiAgbGV0IG1hcCB0IChtYXAgOiBBc3RfdHJhdmVyc2UubWFwKSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbXBsIHggLT4gSW1wbCAobWFwI3N0cnVjdHVyZSB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgeClcblxuICBsZXQgbWFwX3dpdGhfY29udGV4dCB0IChtYXAgOiBfIEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9jb250ZXh0KSBjdHggPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgY3R4IHgpXG4gICAgfCBJbnRmIHggLT4gSW50ZiAobWFwI3NpZ25hdHVyZSBjdHggeClcblxuICBsZXQga2luZCA6IF8gLT4gS2luZC50ID0gZnVuY3Rpb24gSW50ZiBfIC0+IEludGYgfCBJbXBsIF8gLT4gSW1wbFxuZW5kXG5cbm1vZHVsZSBBc3RfaW8gPSBzdHJ1Y3RcbiAgdHlwZSBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKVxuXG4gIGxldCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pXG4gICgqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBpbnB1dCB2ZXJzaW9uIGNhbid0IGJlIGRldGVybWluZWQgZHVlIHRvXG4gICAgICBsb2FkaW5nIG9yIHByZXByb2Nlc3NpbmcgZXJyb3JzICopXG5cbiAgdHlwZSB0ID0ge1xuICAgIGlucHV0X25hbWUgOiBzdHJpbmc7XG4gICAgaW5wdXRfdmVyc2lvbiA6IGlucHV0X3ZlcnNpb247XG4gICAgYXN0IDogSW50Zl9vcl9pbXBsLnQ7XG4gIH1cblxuICB0eXBlIHJlYWRfZXJyb3IgPVxuICAgIHwgTm90X2FfYmluYXJ5X2FzdFxuICAgIHwgVW5rbm93bl92ZXJzaW9uIG9mIHN0cmluZyAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFNvdXJjZV9wYXJzZV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuICAgIHwgU3lzdGVtX2Vycm9yIG9mIExvY2F0aW9uLkVycm9yLnQgKiBpbnB1dF92ZXJzaW9uXG5cbiAgdHlwZSBpbnB1dF9zb3VyY2UgPSBTdGRpbiB8IEZpbGUgb2Ygc3RyaW5nXG4gIHR5cGUgaW5wdXRfa2luZCA9IFBvc3NpYmx5X3NvdXJjZSBvZiBLaW5kLnQgKiBzdHJpbmcgfCBOZWNlc3NhcmlseV9iaW5hcnlcblxuICBsZXQgcmVhZF9lcnJvcl90b19zdHJpbmcgKGVycm9yIDogcmVhZF9lcnJvcikgPVxuICAgIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vdF9hX2JpbmFyeV9hc3QgLT4gXCJFcnJvcjogTm90IGEgYmluYXJ5IGFzdFwiXG4gICAgfCBVbmtub3duX3ZlcnNpb24gKHMsIF8pIC0+IFwiRXJyb3I6IFVua25vd24gdmVyc2lvbiBcIiBeIHNcbiAgICB8IFNvdXJjZV9wYXJzZV9lcnJvciAobG9jLCBfKSAtPlxuICAgICAgICBcIlNvdXJjZSBwYXJzZSBlcnJvcjpcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG4gICAgfCBTeXN0ZW1fZXJyb3IgKGxvYywgXykgLT4gXCJTeXN0ZW0gZXJyb3I6IFwiIF4gTG9jYXRpb24uRXJyb3IubWVzc2FnZSBsb2NcblxuICBsZXQgcGFyc2Vfc291cmNlX2NvZGUgfihraW5kIDogS2luZC50KSB+aW5wdXRfbmFtZSB+cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgaWNcbiAgICAgID1cbiAgICAoKiBUaGUgaW5wdXQgdmVyc2lvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmYWN0IHRoYXQgdGhlIGlucHV0IHdpbGwgZ2V0IHBhcnNlZCBieVxuICAgICAgIHRoZSBjdXJyZW50IGNvbXBpbGVyIFBhcnNlIG1vZHVsZSAqKVxuICAgIGxldCBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBDb21waWxlcl92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgaW5cbiAgICB0cnlcbiAgICAgICgqIFRvIHRlc3QgaWYgYSBmaWxlIGlzIGFuIEFTVCBmaWxlLCB3ZSBoYXZlIHRvIHJlYWQgdGhlIGZpcnN0IGZldyBieXRlcyBvZiB0aGVcbiAgICAgICAgICBmaWxlLiBJZiBpdCBpcyBub3QsIHdlIGhhdmUgdG8gcGFyc2UgdGhlc2UgYnl0ZXMgYW5kIHRoZSByZXN0IG9mIHRoZSBmaWxlIGFzXG4gICAgICAgICAgc291cmNlIGNvZGUuXG5cbiAgICAgICAgICBUaGUgY29tcGlsZXIganVzdCBkb2VzIFtzZWVrX29uIDBdIGluIHRoaXMgY2FzZSwgaG93ZXZlciB0aGlzIGRvZXNuJ3Qgd29yayB3aGVuXG4gICAgICAgICAgdGhlIGlucHV0IGlzIGEgcGlwZS5cblxuICAgICAgICAgIFdoYXQgd2UgZG8gaW5zdGVhZCBpcyBjcmVhdGUgYSBsZXhpbmcgYnVmZmVyIGZyb20gdGhlIGlucHV0IGNoYW5uZWwgYW5kIHByZS1maWxsXG4gICAgICAgICAgaXQgd2l0aCB3aGF0IHdlIHJlYWQgdG8gZG8gdGhlIHRlc3QuICopXG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgaW5cbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgfnNyY19wb3M6MFxuICAgICAgICB+ZHN0OmxleGJ1Zi5sZXhfYnVmZmVyIH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZW47XG4gICAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgICB7IHBvc19mbmFtZSA9IGlucHV0X25hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gMCB9O1xuICAgICAgU2tpcF9oYXNoX2Jhbmcuc2tpcF9oYXNoX2JhbmcgbGV4YnVmO1xuICAgICAgbGV0IGFzdCA6IEludGZfb3JfaW1wbC50ID1cbiAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgIHwgSW50ZiAtPiBJbnRmIChQYXJzZS5pbnRlcmZhY2UgbGV4YnVmKVxuICAgICAgICB8IEltcGwgLT4gSW1wbCAoUGFyc2UuaW1wbGVtZW50YXRpb24gbGV4YnVmKVxuICAgICAgaW5cbiAgICAgIE9rIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH1cbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCBtYWdpY19sZW5ndGggPSBTdHJpbmcubGVuZ3RoIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyXG5cbiAgbGV0IHJlYWRfbWFnaWMgaWMgPVxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbWFnaWNfbGVuZ3RoIGluXG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBzID0gQnl0ZXMuc3ViX3N0cmluZyBidWYgfnBvczowIH5sZW4gaW5cbiAgICBpZiBsZW4gPSBtYWdpY19sZW5ndGggdGhlbiBPayBzIGVsc2UgRXJyb3Igc1xuXG4gIGxldCBmcm9tX2NoYW5uZWwgY2ggfmlucHV0X2tpbmQgPVxuICAgIGxldCBoYW5kbGVfbm9uX2JpbmFyeSBwcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSA9XG4gICAgICBtYXRjaCBpbnB1dF9raW5kIHdpdGhcbiAgICAgIHwgUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSAtPlxuICAgICAgICAgIHBhcnNlX3NvdXJjZV9jb2RlIH5raW5kIH5pbnB1dF9uYW1lIH5wcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBjaFxuICAgICAgfCBOZWNlc3NhcmlseV9iaW5hcnkgLT4gRXJyb3IgTm90X2FfYmluYXJ5X2FzdFxuICAgIGluXG4gICAgKCogTWFyc2hhbGxlZCBBU1QgbXVzdCBiZSByZWFkIGluIGJpbmFyeSBtb2RlLiBFdmVuIHRob3VnaCB3ZSBkb24ndCBrbm93XG4gICAgICAgYmVmb3JlIHJlYWRpbmcgdGhlIG1hZ2ljIG51bWJlciB3aGVuIHRoZSBmaWxlIGhhcyBhIG1hcnNoYWxsZWQgQVNULFxuICAgICAgIGl0IGlzIHNhZmUgdG8gcmVhZCBzb3VyY2UgZmlsZXMgaW4gYmluYXJ5IG1vZGUuICopXG4gICAgc2V0X2JpbmFyeV9tb2RlX2luIGNoIHRydWU7XG4gICAgbWF0Y2ggcmVhZF9tYWdpYyBjaCB3aXRoXG4gICAgfCBFcnJvciBzIC0+IGhhbmRsZV9ub25fYmluYXJ5IHNcbiAgICB8IE9rIHMgLT4gKFxuICAgICAgICBtYXRjaCBGaW5kX3ZlcnNpb24uZnJvbV9tYWdpYyBzIHdpdGhcbiAgICAgICAgfCBJbnRmIChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICBsZXQgaW5wdXRfbmFtZSA6IHN0cmluZyA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGUgSW5wdXRfdG9fcHB4bGliID0gQ29udmVydCAoSW5wdXRfdmVyc2lvbikgKEpzKSBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IEludGZfb3JfaW1wbC5JbnRmIChJbnB1dF90b19wcHhsaWIuY29weV9zaWduYXR1cmUgYXN0KSBpblxuICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0X25hbWU7XG4gICAgICAgICAgICAgICAgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICB8IEltcGwgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkltcGwgKElucHV0X3RvX3BweGxpYi5jb3B5X3N0cnVjdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgVW5rbm93biAtPlxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgIHx8IFN0cmluZy5lcXVhbFxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBBc3RsaWIuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgdGhlbiBFcnJvciAoVW5rbm93bl92ZXJzaW9uIChzLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpXG4gICAgICAgICAgICBlbHNlIGhhbmRsZV9ub25fYmluYXJ5IHMpXG5cbiAgbGV0IHJlYWQgaW5wdXRfc291cmNlIH5pbnB1dF9raW5kID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIGlucHV0X3NvdXJjZSB3aXRoXG4gICAgICB8IFN0ZGluIC0+XG4gICAgICAgICAgc2V0X2JpbmFyeV9tb2RlX2luIHN0ZGluIHRydWU7XG4gICAgICAgICAgZnJvbV9jaGFubmVsIHN0ZGluIH5pbnB1dF9raW5kXG4gICAgICB8IEZpbGUgZm4gLT4gSW5fY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZyb21fY2hhbm5lbCB+aW5wdXRfa2luZClcbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgd3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uKTsgYXN0IH1cbiAgICAgIH5hZGRfcHB4X2NvbnRleHQgPVxuICAgIGxldCBtb2R1bGUgUHB4bGliX3RvX2lucHV0ID0gQ29udmVydCAoSnMpIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIGxldCBtb2R1bGUgT2NhbWxfdG9faW5wdXQgPSBDb252ZXJ0IChDb21waWxlcl92ZXJzaW9uKSAoSW5wdXRfdmVyc2lvbikgaW5cbiAgICBtYXRjaCBhc3Qgd2l0aFxuICAgIHwgSW50ZiBzZyAtPlxuICAgICAgICBsZXQgc2cgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3NpZ25hdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlIHNnXG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzZ1xuICAgIHwgSW1wbCBzdCAtPlxuICAgICAgICBsZXQgc3QgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3N0cnVjdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlIHN0XG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzdFxuXG4gIG1vZHVsZSBSZWFkX2JpbiA9IHN0cnVjdFxuICAgIHR5cGUgYXN0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuICAgIHR5cGUgdCA9IHsgYXN0IDogYXN0OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICAgIGxldCByZWFkX2JpbmFyeSBmbiA9XG4gICAgICBtYXRjaFxuICAgICAgICBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kOk5lY2Vzc2FyaWx5X2JpbmFyeSlcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgeyBhc3Q7IGlucHV0X25hbWU7IF8gfSAtPlxuICAgICAgICAgIGxldCBhc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICAgIHwgSW1wbCBzdHJ1Y3R1cmUgLT4gSW1wbCBzdHJ1Y3R1cmVcbiAgICAgICAgICAgIHwgSW50ZiBzaWduYXR1cmUgLT4gSW50ZiBzaWduYXR1cmVcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgYXN0OyBpbnB1dF9uYW1lIH1cbiAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAocmVhZF9lcnJvcl90b19zdHJpbmcgZSlcblxuICAgIGxldCBnZXRfYXN0IHQgPSB0LmFzdFxuICAgIGxldCBnZXRfaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTeXN0ZW0gPSBzdHJ1Y3RcbiAgbGV0IHJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dCB+b3V0cHV0ID1cbiAgICBsZXQgY29tbWFuZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzID4gJXNcIiBwcFxuICAgICAgICAoaWYgU3RyaW5nLmVxdWFsIGlucHV0IFwiLVwiIHRoZW4gXCJcIiBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBpbnB1dClcbiAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBvdXRwdXQpXG4gICAgaW5cbiAgICBpZiBTdGRsaWIuU3lzLmNvbW1hbmQgY29tbWFuZCA9IDAgdGhlbiBPayAoKVxuICAgIGVsc2UgRXJyb3IgKGNvbW1hbmQsIEFzdF9pby5mYWxsX2JhY2tfaW5wdXRfdmVyc2lvbilcbmVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxubW9kdWxlIEZpbGVuYW1lID0gU3RkbGliLkZpbGVuYW1lXG5cbigqIFRPRE86IG1ha2UgdGhlIFwiZGVyaXZpbmcuXCIgZGVwZW5kIG9uIHRoZSBtYXRjaGluZyBhdHRyaWJ1dGUgbmFtZS4gKilcbmxldCBlbmRfbWFya2VyX3NpZyA9XG4gIEF0dHJpYnV0ZS5GbG9hdGluZy5kZWNsYXJlIFwiZGVyaXZpbmcuZW5kXCIgU2lnbmF0dXJlX2l0ZW1cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGVuZF9tYXJrZXJfc3RyID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTdHJ1Y3R1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5tb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICB0eXBlICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZ2V0X2xvYyA6IHQgLT4gTG9jYXRpb24udFxuICB2YWwgZW5kX21hcmtlciA6ICh0LCB1bml0KSBBdHRyaWJ1dGUuRmxvYXRpbmcudFxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgOiBzaWdcbiAgICB2YWwgYXBwbHkgOlxuICAgICAgPCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIFQudFxuICAgICAgOyBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIFQudFxuICAgICAgOyAuLiA+IC0+XG4gICAgICB0IFQudFxuICBlbmRcblxuICB2YWwgcGFyc2UgOiBMZXhpbmcubGV4YnVmIC0+IHQgbGlzdFxuICB2YWwgcHAgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IHQgLT4gdW5pdFxuICB2YWwgdG9fc2V4cCA6IHQgLT4gU2V4cC50XG5lbmQpID1cbnN0cnVjdFxuICBsZXQgZXh0cmFjdF9wcmVmaXggfnBvcyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJwcHhsaWI6IFtAQEBAQEAlc10gYXR0cmlidXRlIG1pc3NpbmdcIlxuICAgICAgICAgICAgICAgIChBdHRyaWJ1dGUuRmxvYXRpbmcubmFtZSBNLmVuZF9tYXJrZXIpLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICB8IHggOjogbCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXR0cmlidXRlLkZsb2F0aW5nLmNvbnZlcnRfcmVzIFsgTS5lbmRfbWFya2VyIF0geCB3aXRoXG4gICAgICAgICAgfCBPayBOb25lIC0+IGxvb3AgKHggOjogYWNjKSBsXG4gICAgICAgICAgfCBPayAoU29tZSAoKSkgLT4gT2sgKExpc3QucmV2IGFjYywgKE0uZ2V0X2xvYyB4KS5sb2Nfc3RhcnQpXG4gICAgICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBGYWlsdXJlIF8gLT4gbG9vcCAoeCA6OiBhY2MpIGwpXG4gICAgaW5cbiAgICBsb29wIFtdIGxcblxuICBsZXQgcmVtb3ZlX2xvYyA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBcbiAgICAgIG1ldGhvZCEgbG9jYXRpb24gXyA9IExvY2F0aW9uLm5vbmVcbiAgICAgIG1ldGhvZCEgbG9jYXRpb25fc3RhY2sgXyA9IFtdXG4gICAgZW5kXG5cbiAgbW9kdWxlIE1fbWFwID0gTS5UcmFuc2Zvcm0gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIC0+ICdhXG4gIGVuZClcblxuICBsZXQgcmVtb3ZlX2xvYyB4ID0gTV9tYXAuYXBwbHkgcmVtb3ZlX2xvYyB4XG4gIGxldCByZWMgbGFzdCBwcmV2ID0gZnVuY3Rpb24gW10gLT4gcHJldiB8IHggOjogbCAtPiBsYXN0IHggbFxuXG4gIGxldCBkaWZmX2FzdHMgfmdlbmVyYXRlZCB+cm91bmRfdHJpcCA9XG4gICAgbGV0IHdpdGhfdGVtcF9maWxlIGYgPVxuICAgICAgRXhuLnByb3RlY3R4XG4gICAgICAgIChGaWxlbmFtZS50ZW1wX2ZpbGUgXCJwcHhsaWJcIiBcIlwiKVxuICAgICAgICB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZlxuICAgIGluXG4gICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjEgLT5cbiAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjIgLT5cbiAgICAgICAgICAgIHdpdGhfdGVtcF9maWxlIChmdW4gb3V0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGR1bXAgZm4gYXN0ID1cbiAgICAgICAgICAgICAgICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBTZXhwLnBwX2h1bSBwcGYgKE0udG9fc2V4cCBhc3QpO1xuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBkdW1wIGZuMSBnZW5lcmF0ZWQ7XG4gICAgICAgICAgICAgICAgZHVtcCBmbjIgcm91bmRfdHJpcDtcbiAgICAgICAgICAgICAgICBsZXQgY21kID1cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIFwicGF0ZGlmZiAtYXNjaWkgLWFsdC1vbGQgZ2VuZXJhdGVkIC1hbHQtbmV3IFxcXG4gICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLT5wcmludGVkLT5wYXJzZWQnICVzICVzICY+ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvayA9XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiZGlmZiAtLWxhYmVsIGdlbmVyYXRlZCAtLWxhYmVsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBmbjEpIChGaWxlbmFtZS5xdW90ZSBmbjIpXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWYgb2sgdGhlbiBJbl9jaGFubmVsLnJlYWRfYWxsIG91dFxuICAgICAgICAgICAgICAgIGVsc2UgXCI8bm8gZGlmZmVyZW5jZXMgcHJvZHVjZWQgYnkgZGlmZj5cIikpKVxuXG4gIGxldCBwYXJzZV9zdHJpbmcgcyA9XG4gICAgbWF0Y2ggTS5wYXJzZSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IHJlYyBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlID1cbiAgICBtYXRjaCAoZXhwZWN0ZWQsIHNvdXJjZSkgd2l0aFxuICAgIHwgW10sIFtdIC0+ICgpXG4gICAgfCBbXSwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgIHsgKE0uZ2V0X2xvYyB4KSB3aXRoIGxvY19lbmQgPSAoTS5nZXRfbG9jIChsYXN0IHggbCkpLmxvY19lbmQgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbXVxuICAgIHwgXywgW10gLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyBMb2NhdGlvbi5sb2NfZ2hvc3QgPSBmYWxzZTsgbG9jX3N0YXJ0ID0gZW5kX3BvczsgbG9jX2VuZCA9IGVuZF9wb3MgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBleHBlY3RlZFxuICAgIHwgeCA6OiBleHBlY3RlZCwgeSA6OiBzb3VyY2UgLT5cbiAgICAgICAgbGV0IGxvYyA9IE0uZ2V0X2xvYyB5IGluXG4gICAgICAgIGxldCB4ID0gcmVtb3ZlX2xvYyB4IGluXG4gICAgICAgIGxldCB5ID0gcmVtb3ZlX2xvYyB5IGluXG4gICAgICAgIGlmIFBvbHkuKCA8PiApIHggeSB0aGVuIChcbiAgICAgICAgICBsZXQgcm91bmRfdHJpcCA9XG4gICAgICAgICAgICByZW1vdmVfbG9jIChwYXJzZV9zdHJpbmcgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiBNLnBwIHgpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgUG9seS4oIDw+ICkgeCByb3VuZF90cmlwIHRoZW5cbiAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgICAgICAgICAgIFwicHB4bGliOiB0aGUgY29ycmVjdGVkIGNvZGUgZG9lc24ndCByb3VuZC10cmlwLlxcblxcXG4gICAgICAgICAgICAgICBUaGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHRoZSBPQ2FtbCBwcmludGVyOlxcblxcXG4gICAgICAgICAgICAgICAlc1wiXG4gICAgICAgICAgICAgIChkaWZmX2FzdHMgfmdlbmVyYXRlZDp4IH5yb3VuZF90cmlwKTtcbiAgICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbIHggXSk7XG4gICAgICAgIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2VcblxuICBsZXQgZG9fbWF0Y2ggfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgc291cmNlID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBleHRyYWN0X3ByZWZpeCB+cG9zIHNvdXJjZSA+PnwgZnVuIChzb3VyY2UsIGVuZF9wb3MpIC0+XG4gICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuZW5kXG5cbigqJCopXG5tb2R1bGUgU3RyID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHN0cl9sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3N0clxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW1wbGVtZW50YXRpb25cbiAgbGV0IHBwID0gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gIGxldCB0b19zZXhwID0gQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlX2l0ZW1cbmVuZClcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxubW9kdWxlIFNpZyA9IE1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzaWduYXR1cmVfaXRlbVxuXG4gIGxldCBnZXRfbG9jIHggPSB4LnBzaWdfbG9jXG4gIGxldCBlbmRfbWFya2VyID0gZW5kX21hcmtlcl9zaWdcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpID0gc3RydWN0XG4gICAgbGV0IGFwcGx5IG8gPSBvI3NpZ25hdHVyZV9pdGVtXG4gIGVuZFxuXG4gIGxldCBwYXJzZSA9IFBhcnNlLmludGVyZmFjZVxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmVfaXRlbVxuZW5kKVxuXG4oKiQqKVxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlX3JlcyA9IFN0ci5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zdHJ1Y3R1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IG1hdGNoX3NpZ25hdHVyZV9yZXMgPSBTaWcuZG9fbWF0Y2hcblxubGV0IG1hdGNoX3NpZ25hdHVyZSB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsID1cbiAgbWF0Y2hfc2lnbmF0dXJlX3JlcyB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5cbnR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBweF9pbXBvcnQgOiB0eXBlX2RlY2xhcmF0aW9uIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBQcHhfaW1wb3J0IC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG5cbiAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgIGZ1biBhIGIgLT5cbiAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgQ2xhc3NfZXhwciAtPiBFcVxuICAgIHwgQ2xhc3NfZmllbGQsIENsYXNzX2ZpZWxkIC0+IEVxXG4gICAgfCBDbGFzc190eXBlLCBDbGFzc190eXBlIC0+IEVxXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCBDbGFzc190eXBlX2ZpZWxkIC0+IEVxXG4gICAgfCBDb3JlX3R5cGUsIENvcmVfdHlwZSAtPiBFcVxuICAgIHwgRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiAtPiBFcVxuICAgIHwgTW9kdWxlX2V4cHIsIE1vZHVsZV9leHByIC0+IEVxXG4gICAgfCBNb2R1bGVfdHlwZSwgTW9kdWxlX3R5cGUgLT4gRXFcbiAgICB8IFBhdHRlcm4sIFBhdHRlcm4gLT4gRXFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCBTaWduYXR1cmVfaXRlbSAtPiBFcVxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIFN0cnVjdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBQcHhfaW1wb3J0LCBQcHhfaW1wb3J0IC0+IEVxXG4gICAgfCBfIC0+XG4gICAgICAgIGFzc2VydCAoUG9seS4oIDw+ICkgKFQgYSkgKFQgYikpO1xuICAgICAgICBOZVxuXG4gIGxldCBnZXRfcHB4X2ltcG9ydF9leHRlbnNpb24gdHlwZV9kZWNsID1cbiAgICBtYXRjaCB0eXBlX2RlY2wgd2l0aFxuICAgIHwgeyBwdHlwZV9tYW5pZmVzdCA9IFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiAobmFtZSwgXyk7IF8gfTsgXyB9XG4gICAgICAtPlxuICAgICAgICBsZXQgdmlydHVhbF9wYXlsb2FkID1cbiAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfdHlwZSB+bG9jOnR5cGVfZGVjbC5wdHlwZV9sb2MgUmVjdXJzaXZlXG4gICAgICAgICAgICBbIHR5cGVfZGVjbCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyID0gW10gaW5cbiAgICAgICAgU29tZSAoKG5hbWUsIFBTdHIgWyB2aXJ0dWFsX3BheWxvYWQgXSksIGF0dHIpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2V4dGVuc2lvbiA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gKGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMpIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IENsYXNzX2V4cHIsIHsgcGNsX2Rlc2MgPSBQY2xfZXh0ZW5zaW9uIGU7IHBjbF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZTsgcGNmX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGUsIHsgcGN0eV9kZXNjID0gUGN0eV9leHRlbnNpb24gZTsgcGN0eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGU7IHBjdGZfYXR0cmlidXRlcyA9IGE7IF8gfVxuICAgICAgLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENvcmVfdHlwZSwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBlOyBwdHlwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IEV4cHJlc3Npb24sIHsgcGV4cF9kZXNjID0gUGV4cF9leHRlbnNpb24gZTsgcGV4cF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBNb2R1bGVfZXhwciwgeyBwbW9kX2Rlc2MgPSBQbW9kX2V4dGVuc2lvbiBlOyBwbW9kX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV90eXBlLCB7IHBtdHlfZGVzYyA9IFBtdHlfZXh0ZW5zaW9uIGU7IHBtdHlfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgUGF0dGVybiwgeyBwcGF0X2Rlc2MgPSBQcGF0X2V4dGVuc2lvbiBlOyBwcGF0X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZSwgYSk7IF8gfSAtPiBTb21lIChlLCBhKVxuICAgIHwgUHB4X2ltcG9ydCwgdHlwZV9kZWNsIC0+IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2xcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzX3JlcyA6XG4gICAgICB0eXBlIGEuXG4gICAgICBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IChhLCBMb2NhdGlvbi5FcnJvci50IE5vbkVtcHR5TGlzdC50KSByZXN1bHQgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciAtPiBPayB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IHgucGNsX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiBPayB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IHgucGNmX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IE9rIHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IHgucGN0eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPlxuICAgICAgICBPayB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSB4LnBjdGZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiBPayB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSB4LnB0eXBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4gT2sgeyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0geC5wZXhwX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiBPayB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSB4LnBtb2RfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IE9rIHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IHgucG10eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiBPayB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSB4LnBwYXRfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFBweF9pbXBvcnQgLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1lcmdlX2F0dHJpYnV0ZXNfcmVzIHQgeCBhdHRyc1xuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImV4dGVuc2lvblwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1biAoQ29udGV4dC5UIGN0eCkgLT4gU29tZSAoQ29udGV4dC5kZXNjIGN0eCkpXG5cbm1vZHVsZSBNYWtlIChDYWxsYmFjayA6IHNpZ1xuICB0eXBlICdhIHRcbmVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgcGF5bG9hZF9wYXJzZXIgPVxuICAgIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgICAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4udCAqICdiIENhbGxiYWNrLnRcbiAgICAgICAgLT4gKCdhLCAnYykgcGF5bG9hZF9wYXJzZXJcblxuICB0eXBlICgnY29udGV4dCwgJ3BheWxvYWQpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnY29udGV4dCBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6IChwYXlsb2FkLCAncGF5bG9hZCkgcGF5bG9hZF9wYXJzZXI7XG4gICAgd2l0aF9hcmcgOiBib29sO1xuICB9XG5cbiAgbGV0IGRlY2xhcmUgOlxuICAgICAgdHlwZSBhLlxuICAgICAgd2l0aF9hcmc6Ym9vbCAtPlxuICAgICAgc3RyaW5nIC0+XG4gICAgICBhIENvbnRleHQudCAtPlxuICAgICAgKHBheWxvYWQsICdiLCAncGF5bG9hZCkgQXN0X3BhdHRlcm4udCAtPlxuICAgICAgJ2IgQ2FsbGJhY2sudCAtPlxuICAgICAgKGEsICdwYXlsb2FkKSB0ID1cbiAgIGZ1biB+d2l0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayAtPlxuICAgICgqIENoZWNrIHRoYXQgdGhlcmUgaXMgbm8gY29sbGlzaW9ucyBiZXR3ZWVuIHBweF9pbXBvcnQgYW5kIGNvcmVfdHlwZVxuICAgICAgIGV4dGVuc2lvbnMgKilcbiAgICAobWF0Y2ggY29udGV4dCB3aXRoXG4gICAgfCBDb250ZXh0LlBweF9pbXBvcnQgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBDb3JlX3R5cGUpIG5hbWVcbiAgICB8IENvbnRleHQuQ29yZV90eXBlIC0+XG4gICAgICAgIE5hbWUuUmVnaXN0cmFyLmNoZWNrX2NvbGxpc2lvbnMgcmVnaXN0cmFyIChDb250ZXh0LlQgUHB4X2ltcG9ydCkgbmFtZVxuICAgIHwgXyAtPiAoKSk7XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEV4dGVuc2lvbiByZWdpc3RyYXIgKENvbnRleHQuVCBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gICAgICB3aXRoX2FyZztcbiAgICB9XG5cbiAgbGV0IGZpbmQgdHMgKGV4dCA6IGV4dGVuc2lvbikgPVxuICAgIGxldCB7IHR4dCA9IG5hbWU7IGxvYyB9ID0gZnN0IGV4dCBpblxuICAgIGxldCBuYW1lLCBhcmcgPSBOYW1lLnNwbGl0X3BhdGggbmFtZSBpblxuICAgIG1hdGNoIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZSkgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgXyA6OiBfIDo6IF8gYXMgbCAtPlxuICAgICAgICBFcnJvclxuICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGV4dGVuc2lvbnM6ICVzXCJcbiAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgIFtdIClcbiAgICB8IFsgdCBdIC0+XG4gICAgICAgIGlmIChub3QgdC53aXRoX2FyZykgJiYgT3B0aW9uLmlzX3NvbWUgYXJnIHRoZW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2NcbiAgICAgICAgICAgICAgICBcIkV4dGVuc2lvbiAlcyBkb2Vzbid0IGV4cGVjdCBhIHBhdGggYXJndW1lbnRcIiBuYW1lLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYXJnID1cbiAgICAgICAgICAgIE9wdGlvbi5tYXAgYXJnIH5mOihmdW4gcyAtPlxuICAgICAgICAgICAgICAgIGxldCBzaGlmdCA9IFN0cmluZy5sZW5ndGggbmFtZSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBsb2MubG9jX3N0YXJ0IGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHh0ID0gTG9uZ2lkZW50LnBhcnNlIHM7XG4gICAgICAgICAgICAgICAgICBsb2MgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGFydCB3aXRoIHBvc19jbnVtID0gc3RhcnQucG9zX2NudW0gKyBzaGlmdCB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayAoU29tZSAodCwgYXJnKSlcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuICBlbmQpXG5cbiAgbGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjdHggcGF0dCBmXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjdHggcGF0dCBmID1cbiAgICBkZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGN0eCBwYXR0IChmdW4gfmFyZzpfIC0+IGYpXG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBmaW5kIHRzIGV4dCA+Pj0gZnVuIHIgLT5cbiAgICBtYXRjaCByIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+YXJnKSA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgU29tZSBwYXlsb2FkXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmxvYyBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5tb2R1bGUgTSA9IE1ha2UgKHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLnQgLT4gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuZW5kKVxuXG50eXBlICdhIGV4cGFuZGVyX3Jlc3VsdCA9IFNpbXBsZSBvZiAnYSB8IElubGluZSBvZiAnYSBsaXN0XG5cbm1vZHVsZSBGb3JfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsICdhIGV4cGFuZGVyX3Jlc3VsdCkgTS50XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dCA9XG4gICAgbGV0IGxvYyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5leHRlbnNpb25fcG9pbnRfbG9jIGN0eHQgaW5cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBNLmZpbmQgdHMgZXh0ID4+PSBmdW4gZm91bmQgLT5cbiAgICBtYXRjaCBmb3VuZCB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IE0uUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT4gKFxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5jdHh0IH5hcmcpXG4gICAgICAgID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgICAgICAgfCBTaW1wbGUgeCAtPiBTb21lIHhcbiAgICAgICAgfCBJbmxpbmUgXyAtPiBmYWlsd2l0aCBcIkV4dGVuc2lvbi5jb252ZXJ0XCIpXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmN0eHQgZXh0ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aCBTaW1wbGUgeCAtPiBTb21lIFsgeCBdIHwgSW5saW5lIGwgLT4gU29tZSBsKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZSB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbnR5cGUgdCA9IFQgOiBfIEZvcl9jb250ZXh0LnQgLT4gdFxuXG5sZXQgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIDogdHlwZSBhLiBmdW5jOnN0cmluZyAtPiBhIENvbnRleHQudCAtPiB1bml0ID1cbiBmdW4gfmZ1bmMgY3R4IC0+XG4gIG1hdGNoIGN0eCB3aXRoXG4gIHwgQ29udGV4dC5DbGFzc19maWVsZCAtPiAoKVxuICB8IENvbnRleHQuQ2xhc3NfdHlwZV9maWVsZCAtPiAoKVxuICB8IENvbnRleHQuU2lnbmF0dXJlX2l0ZW0gLT4gKClcbiAgfCBDb250ZXh0LlN0cnVjdHVyZV9pdGVtIC0+ICgpXG4gIHwgY29udGV4dCAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiJXM6ICVzIGNhbid0IGJlIGlubGluZWRcIiBmdW5jXG4gICAgICAgIChDb250ZXh0LmRlc2MgY29udGV4dClcblxubGV0IHJlYyBmaWx0ZXJfYnlfY29udGV4dCA6XG4gICAgdHlwZSBhLiBhIENvbnRleHQudCAtPiB0IGxpc3QgLT4gYSBGb3JfY29udGV4dC50IGxpc3QgPVxuIGZ1biBjb250ZXh0IGV4cGFuZGVycyAtPlxuICBtYXRjaCBleHBhbmRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgVCB0IDo6IHJlc3QgLT4gKFxuICAgICAgbWF0Y2ggQ29udGV4dC5lcSBjb250ZXh0IHQuY29udGV4dCB3aXRoXG4gICAgICB8IEVxIC0+IHQgOjogZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0XG4gICAgICB8IE5lIC0+IGZpbHRlcl9ieV9jb250ZXh0IGNvbnRleHQgcmVzdClcblxubGV0IHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgY3R4IChuYW1lLCBfKSA9XG4gIGlmXG4gICAgbm90XG4gICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgRXh0ZW5zaW9uIG5hbWUudHh0XG4gICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpXG4gIHRoZW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciAoQ29udGV4dC5UIGN0eClcbiAgICAgICAgXCJFeHRlbnNpb24gYCVzJyB3YXMgbm90IHRyYW5zbGF0ZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSBhY2MgPVxuICAgICAgYWNjXG4gICAgICBAIFtcbiAgICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgIFwiZXh0ZW5zaW9uIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuRXh0ZW5zaW9uIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgICBdXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQdHlwX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDb3JlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBQYXR0ZXJuIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIEV4cHJlc3Npb24gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3RmX2V4dGVuc2lvbiBleHQgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX3R5cGVfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc19leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2ZpZWxkIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG10eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgTW9kdWxlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjbW9kdWxlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBfKSAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgU2lnbmF0dXJlX2l0ZW0gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfZXhwciBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTdHJ1Y3R1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggYWNjXG4gIGVuZFxuXG5sZXQgZXJyb3JfbGlzdF90b19leGNlcHRpb24gPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbiAobmFtZSwgXykgPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjcGF0dGVybl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjZXhwcmVzc2lvbl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZXhwcl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI21vZHVsZV9leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlX2l0ZW1fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuICBlbmRcblxubW9kdWxlIFYzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dCB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZVwiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUXG4gICAgICAoTS5kZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5jdHh0IH5hcmc6XyAtPlxuICAgICAgICAgICBrIH5jdHh0KSlcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcblxuICBsZXQgZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcbmVuZFxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBmID1cbiAgVjMuZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgbGV0IGsnID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGsgaW5cbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgIH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmdcIjtcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBfX2RlY2xhcmVfcHB4X2ltcG9ydCBuYW1lIGV4cGFuZCA9XG4gICgqIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIHVud3JhcCB0aGUgdHlwZSBkZWNsYXJhdGlvbiBmcm9tIHRoZSBwYXlsb2FkXG4gICAgIGFzc2VtYmxlZCBieSBbQ29udGV4dC5nZXRfcHB4X2ltcG9ydF9leHRlbnNpb25dICopXG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfdHlwZSByZWN1cnNpdmUgKF9fIF46OiBuaWwpIF46OiBuaWwpKSBpblxuICBWMy5kZWNsYXJlIG5hbWUgQ29udGV4dC5QcHhfaW1wb3J0IHBhdHRlcm4gZXhwYW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBkZWNsYXJlID0gZGVjbGFyZVxuICBsZXQgZGVjbGFyZV9pbmxpbmUgPSBkZWNsYXJlX2lubGluZVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgRSA9IEV4dGVuc2lvblxubW9kdWxlIEVDID0gRXh0ZW5zaW9uLkNvbnRleHRcbm1vZHVsZSBBID0gQXR0cmlidXRlXG5tb2R1bGUgQUMgPSBBdHRyaWJ1dGUuQ29udGV4dFxuXG5tb2R1bGUgUnVsZSA9IHN0cnVjdFxuICBtb2R1bGUgQXR0cl9ncm91cF9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6XG4gICAgICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+XG4gICAgICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgICAgICdiIGxpc3QgLT5cbiAgICAgICAgJ2Mgb3B0aW9uIGxpc3QgLT5cbiAgICAgICAgJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgQXR0cl9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3Q7XG4gICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsIF8pIHVucGFja2VkIC0+ICgnYSwgJ2IpIHRcblxuICAgIGxldCBhdHRyX25hbWUgKFQgdCkgPSBBdHRyaWJ1dGUubmFtZSB0LmF0dHJpYnV0ZVxuXG4gICAgbGV0IHNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IGwgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gbCB+ZjooZnVuIChUIHQpIC0+IG5vdCB0LmV4cGVjdClcbiAgZW5kXG5cbiAgbW9kdWxlIFNwZWNpYWxfZnVuY3Rpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgaWRlbnQgOiBMb25naWRlbnQudDtcbiAgICAgIGV4cGFuZCA6IFBhcnNldHJlZS5leHByZXNzaW9uIC0+IFBhcnNldHJlZS5leHByZXNzaW9uIG9wdGlvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudF9raW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRmxvYXQgfCBJbnRlZ2VyXG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN1ZmZpeCA6IGNoYXI7XG4gICAgICBraW5kIDogQ29uc3RhbnRfa2luZC50O1xuICAgICAgZXhwYW5kIDogTG9jYXRpb24udCAtPiBzdHJpbmcgLT4gUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBFeHRlbnNpb24gOiBFeHRlbnNpb24udCB0XG4gICAgICB8IFNwZWNpYWxfZnVuY3Rpb24gOiBTcGVjaWFsX2Z1bmN0aW9uLnQgdFxuICAgICAgfCBDb25zdGFudCA6IENvbnN0YW50LnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2xcbiAgICAgICAgICA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9ncm91cF9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgICAgICA6IChzaWduYXR1cmVfaXRlbSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ190eXBlX2V4dCA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24gOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4Y2VwdGlvbikgQXR0cl9pbmxpbmUudCB0XG5cbiAgICB0eXBlIChfLCBfKSBlcXVhbGl0eSA9IEVxIDogKCdhLCAnYSkgZXF1YWxpdHkgfCBOZSA6IChfLCBfKSBlcXVhbGl0eVxuXG4gICAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgICAgZnVuIGEgYiAtPlxuICAgICAgbWF0Y2ggKGEsIGIpIHdpdGhcbiAgICAgIHwgRXh0ZW5zaW9uLCBFeHRlbnNpb24gLT4gRXFcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiwgU3BlY2lhbF9mdW5jdGlvbiAtPiBFcVxuICAgICAgfCBDb25zdGFudCwgQ29uc3RhbnQgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9kZWNsLCBBdHRyX3N0cl90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsLCBBdHRyX3NpZ190eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9leHQsIEF0dHJfc3RyX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0LCBBdHRyX3NpZ190eXBlX2V4dCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24sIEF0dHJfc3RyX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24sIEF0dHJfc2lnX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgXyAtPiBOZVxuICBlbmRcblxuICB0eXBlIHQgPSBUIDogJ2EgRmllbGQudCAqICdhIC0+IHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBhdHRyX2dyb3VwX2lubGluZSA9XG4gICAgKCdiLCAnYykgQXR0cmlidXRlLnQgLT5cbiAgICAoY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICBBc3R0eXBlcy5yZWNfZmxhZyAtPlxuICAgICdiIGxpc3QgLT5cbiAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYyAtPiAnYSBsaXN0KSAtPlxuICAgIHRcblxuICBsZXQgcmVjIGZpbHRlciA6IHR5cGUgYS4gYSBGaWVsZC50IC0+IHQgbGlzdCAtPiBhIGxpc3QgPVxuICAgZnVuIGZpZWxkIGwgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBUIChmaWVsZCcsIHgpIDo6IGwgLT4gKFxuICAgICAgICBtYXRjaCBGaWVsZC5lcSBmaWVsZCBmaWVsZCcgd2l0aFxuICAgICAgICB8IEZpZWxkLkVxIC0+IHggOjogZmlsdGVyIGZpZWxkIGxcbiAgICAgICAgfCBGaWVsZC5OZSAtPiBmaWx0ZXIgZmllbGQgbClcblxuICBsZXQgZXh0ZW5zaW9uIGV4dCA9IFQgKEV4dGVuc2lvbiwgZXh0KVxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9uIGlkIGYgPVxuICAgIFQgKFNwZWNpYWxfZnVuY3Rpb24sIHsgbmFtZSA9IGlkOyBpZGVudCA9IExvbmdpZGVudC5wYXJzZSBpZDsgZXhwYW5kID0gZiB9KVxuXG4gIGxldCBjb25zdGFudCBraW5kIHN1ZmZpeCBleHBhbmQgPSBUIChDb25zdGFudCwgeyBzdWZmaXg7IGtpbmQ7IGV4cGFuZCB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb24gYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5lbmRcblxubW9kdWxlIEdlbmVyYXRlZF9jb2RlX2hvb2sgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBzaW5nbGVfb3JfbWFueSA9IFNpbmdsZSBvZiAnYSB8IE1hbnkgb2YgJ2EgbGlzdFxuXG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEV4dGVuc2lvbi5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBzaW5nbGVfb3JfbWFueSAtPiB1bml0O1xuICB9XG5cbiAgbGV0IG5vcCA9IHsgZiA9IChmdW4gXyBfIF8gLT4gKCkpIH1cbiAgbGV0IHJlcGxhY2UgdCBjb250ZXh0IGxvYyB4ID0gdC5mIGNvbnRleHQgbG9jIHhcblxuICBsZXQgaW5zZXJ0X2FmdGVyIHQgY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBNYW55IFtdIC0+ICgpXG4gICAgfCBfIC0+IHQuZiBjb250ZXh0IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSB4XG5lbmRcblxubGV0IHJlYyBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChOb25lLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBFQy5tZXJnZV9hdHRyaWJ1dGVzX3JlcyBjb250ZXh0IHggYXR0cnNcbiAgICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6eFxuICAgICAgICAgID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5lbWJlZF9lcnJvcnMpXG5cbmxldCBtYXBfbm9kZSBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5ob29rIH5lbWJlZF9lcnJvcnMgPVxuICBsZXQgY3R4dCA9XG4gICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2M6bG9jIH5iYXNlOmJhc2VfY3R4dCAoKVxuICBpblxuICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgKHRyeVxuICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpXG4gICAgICA+Pj0gZnVuIGNvbnZlcnRlZCAtPlxuICAgICAgbWF0Y2ggY29udmVydGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dFxuICAgICAgICAgICAgKEVDLm1lcmdlX2F0dHJpYnV0ZXMgY29udGV4dCB4IGF0dHJzKVxuICAgICAgICAgICAgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgID4+fCBmdW4gZ2VuZXJhdGVkX2NvZGUgLT5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBjb250ZXh0IGxvYyAoU2luZ2xlIGdlbmVyYXRlZF9jb2RlKTtcbiAgICAgICAgICBnZW5lcmF0ZWRfY29kZSlcblxubGV0IHJlYyBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2sgfmVtYmVkX2Vycm9yc1xuICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBbXVxuICB8IHggOjogbCAtPiAoXG4gICAgICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBUaGVzZSB0d28gbGV0cyBmb3JjZSB0aGUgZXZhbHVhdGlvbiBvcmRlciwgc28gdGhhdCBlcnJvcnMgYXJlIHJlcG9ydGVkIGluIHRoZVxuICAgICAgICAgICAgIHNhbWUgb3JkZXIgYXMgdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBmaWxlLiAqKVxuICAgICAgICAgIHN1cGVyX2NhbGwgYmFzZV9jdHh0IHggPj49IGZ1biB4IC0+XG4gICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgID4+fCBmdW4gbCAtPiB4IDo6IGxcbiAgICAgIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gZ2V0X2xvYyB4IGluXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpXG4gICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHN1cGVyX2NhbGwgYmFzZV9jdHh0IHggPj49IGZ1biB4IC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gbCAtPiB4IDo6IGxcbiAgICAgICAgICB8IFNvbWUgY29udmVydGVkIC0+XG4gICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBjb252ZXJ0ZWQgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgICAgICAgID4+PSBmdW4gZ2VuZXJhdGVkX2NvZGUgLT5cbiAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBjb250ZXh0IGV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgIChNYW55IGdlbmVyYXRlZF9jb2RlKTtcbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgPj58IGZ1biBjb2RlIC0+IGdlbmVyYXRlZF9jb2RlIEAgY29kZSkpXG5cbmxldCBtYXBfbm9kZXMgPSBtYXBfbm9kZXMgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbmxldCB0YWJsZV9vZl9zcGVjaWFsX2Z1bmN0aW9ucyBzcGVjaWFsX2Z1bmN0aW9ucyA9XG4gIG1hdGNoXG4gICAgTGlzdC5tYXAgc3BlY2lhbF9mdW5jdGlvbnNcbiAgICAgIH5mOihmdW4geyBSdWxlLlNwZWNpYWxfZnVuY3Rpb24uaWRlbnQ7IGV4cGFuZDsgXyB9IC0+IChpZGVudCwgZXhwYW5kKSlcbiAgICAoKiBXZSBleHBlY3QgdGhlIGxvb2t1cCB0byBmYWlsIG1vc3Qgb2YgdGhlIHRpbWUsIGJ5IG1ha2luZyB0aGUgdGFibGUgYmlnIChhbmRcbiAgICAgICBzcGFyc2UpLCB3ZSBtYWtlIGl0IG1vcmUgbGlrZWx5IHRvIGZhaWwgcXVpY2tseSAqKVxuICAgIHw+IEhhc2h0Ymwub2ZfYWxpc3QgfnNpemU6KG1heCAxMDI0IChMaXN0Lmxlbmd0aCBzcGVjaWFsX2Z1bmN0aW9ucyAqIDIpKVxuICB3aXRoXG4gIHwgT2sgdGFibGUgLT4gdGFibGVcbiAgfCBFcnJvciBpZGVudCAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICAgIFwiQ29udGV4dF9mcmVlLlYxLm1hcF90b3BfZG93bjogJXMgcHJlc2VudCB0d2ljZSBpbiBsaXN0IG9mIHNwZWNpYWwgXFxcbiAgICAgICAgIGZ1bmN0aW9uc1wiXG4gICAgICAgIChMaXN0LmZpbmRfbWFwX2V4biBzcGVjaWFsX2Z1bmN0aW9ucyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICBpZiBQb2x5LmVxdWFsIHIuaWRlbnQgaWRlbnQgdGhlbiBTb21lIHIubmFtZSBlbHNlIE5vbmUpKVxuXG4oKiBbZ2V0X2dyb3VwIGF0dHIgbF0gcmV0dXJucyB0aGUgbGlzdCBvZiB0aGUgYXR0cmlidXRlcyBmb3IgZWFjaFxuICAgbm9kZSBpbiBbbF0uXG4gICBJZiBbbF0gaXMgZW1wdHkgb3IgaWYgbm9uZSBvZiB0aGUgbm9kZXMgaW4gW2xdIGhhdmUgYW4gYXR0cmlidXRlIGF0dGFjaGVkLFxuICAgW2dldF9ncm91cF0gcmV0dXJucyBbTm9uZV0uXG4gICBJZiBbbF0gaXMgbm90IGVtcHR5IGFuZCBhdCBsZWFzdCBvbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXMgYW4gYXR0cmlidWVcbiAgIGF0dGFjaGVkLCBbZ2V0X2dyb3VwXSByZXR1cm5zIHRoZSBlcXVpdmFsZW50IG9mXG4gICBbU29tZSAoTGlzdC5tYXAgfmY6KEF0dHJpYnV0ZS5nZXQgYXR0cikgbCldLiAqKVxubGV0IHJlYyBnZXRfZ3JvdXAgYXR0ciBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgZ2V0X2dyb3VwIGF0dHIgbCA+Pj0gZnVuIGdyb3VwIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhdHRyIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmUgPj58IGZ1biBhdHRyMiAtPlxuICAgICAgbWF0Y2ggKGF0dHIyLCBncm91cCkgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICAgIHwgTm9uZSwgU29tZSB2YWxzIC0+IFNvbWUgKE5vbmUgOjogdmFscylcbiAgICAgIHwgU29tZSB2YWx1ZSwgTm9uZSAtPiBTb21lIChTb21lIHZhbHVlIDo6IExpc3QubWFwIGwgfmY6KGZ1biBfIC0+IE5vbmUpKVxuICAgICAgfCBTb21lIHZhbHVlLCBTb21lIHZhbHMgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiB2YWxzKSlcblxuKCogU2FtZSBhcyBbTGlzdC5yZXZdIHRoZW4gW0xpc3QuY29uY2F0XSBidXQgZXhwZWN0aW5nIHRoZSBpbnB1dCB0byBiZSBvZiBsZW5ndGggPD0gMiAqKVxubGV0IHJldl9jb25jYXQgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgWyB4IF0gLT4geFxuICB8IFsgeDsgeSBdIC0+IHkgQCB4XG4gIHwgbCAtPiBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgbClcblxubGV0IHNvcnRfYXR0cl9ncm91cF9pbmxpbmUgbCA9XG4gIExpc3Quc29ydCBsIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgIFN0cmluZy5jb21wYXJlXG4gICAgICAgIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLmF0dHJfbmFtZSBhKVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYikpXG5cbmxldCBzb3J0X2F0dHJfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyA9XG4gIEVycm9yXG4gICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2NcbiAgICAgICAgXCJBIGNvbnRleHQtZnJlZSBydWxlIGRlbGV0ZWQgb3IgYWRkZWQgYXR0cmlidWVzIG9mIGEgc3RyL3NpZyBpdGVtXCIsXG4gICAgICBbXSApXG5cbigqIFJldHVybnMgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGF0dHJpYnV0ZSBoYW5kbGVycy4gV2UgZG9uJ3QgcmVtb3ZlIHRoZXNlIGF0dHJpYnV0ZXMsIGFzXG4gICBhbm90aGVyIHBhc3MgbWlnaHQgaW50ZXJwcmV0IHRoZW0gbGF0ZXIuIEZvciBpbnN0YW5jZSBib3RoIHBweF9kZXJpdmluZyBhbmRcbiAgIHBweGxpYl9kZXJpdmluZyBpbnRlcnByZXRzIFtAQGRlcml2aW5nXSBhdHRyaWJ1dGVzLlxuXG4gICBUaGlzIGNvbXBsZXhpdHkgaXMgaG9ycmlibGUsIGJ1dCBpbiBwcmFjdGljZSB3ZSBkb24ndCBjYXJlIGFzIFthdHRyc10gaXMgYWx3YXlzIGEgbGlzdFxuICAgb2Ygb25lIGVsZW1lbnQ7IGl0IG9ubHkgaGFzIFtAQGRlcml2aW5nXS5cbiopXG5sZXQgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJzIHJmIH5pdGVtcyB+ZXhwYW5kZWRfaXRlbXMgfmxvYyB+YmFzZV9jdHh0XG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pXG4gICAgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuVCBncm91cCkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZ2V0X2dyb3VwIGdyb3VwLmF0dHJpYnV0ZSBpdGVtcyA+Pj0gZnVuIGcxIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW1zID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlcywgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6Z3JvdXAuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gZ3JvdXAuZXhwYW5kIH5jdHh0IHJmIGV4cGFuZGVkX2l0ZW1zIHZhbHVlcyBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChhY2MsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpKVxuXG5sZXQgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJzIH5pdGVtIH5leHBhbmRlZF9pdGVtIH5sb2MgfmJhc2VfY3R4dCB+ZW1iZWRfZXJyb3JzXG4gICAgPVxuICBMaXN0LmZvbGRfbGVmdCBhdHRycyB+aW5pdDoocmV0dXJuIFtdKSB+ZjooZnVuIGFjYyAoUnVsZS5BdHRyX2lubGluZS5UIGEpIC0+XG4gICAgICBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGEuYXR0cmlidXRlIGl0ZW0gfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW4gZzEgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGEuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW0gfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlLCBTb21lIF8gLT4gKFxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIubWFrZSB+ZGVyaXZlZF9pdGVtX2xvYzpsb2NcbiAgICAgICAgICAgICAgfmlubGluZTphLmV4cGVjdCB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGV4cGVjdF9pdGVtcyA9IGEuZXhwYW5kIH5jdHh0IGV4cGFuZGVkX2l0ZW0gdmFsdWUgaW5cbiAgICAgICAgICAgIHJldHVybiAoZXhwZWN0X2l0ZW1zIDo6IGFjYylcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoYWNjLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKSlcblxubW9kdWxlIEV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBsaXN0IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuZW5kXG5cbmNsYXNzIG1hcF90b3BfZG93biA/KGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wKVxuICA/KGdlbmVyYXRlZF9jb2RlX2hvb2sgPSBHZW5lcmF0ZWRfY29kZV9ob29rLm5vcCkgPyhlbWJlZF9lcnJvcnMgPSBmYWxzZSkgcnVsZXNcbiAgPVxuICBsZXQgaG9vayA9IGdlbmVyYXRlZF9jb2RlX2hvb2sgaW5cblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICAgIFJ1bGUuZmlsdGVyIFNwZWNpYWxfZnVuY3Rpb24gcnVsZXMgfD4gdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnNcbiAgaW5cbiAgbGV0IGNvbnN0YW50cyA9XG4gICAgUnVsZS5maWx0ZXIgQ29uc3RhbnQgcnVsZXNcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChjIDogUnVsZS5Db25zdGFudC50KSAtPiAoKGMuc3VmZml4LCBjLmtpbmQpLCBjLmV4cGFuZCkpXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdF9leG5cbiAgaW5cbiAgbGV0IGV4dGVuc2lvbnMgPSBSdWxlLmZpbHRlciBFeHRlbnNpb24gcnVsZXMgaW5cbiAgbGV0IGNsYXNzX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2V4cHIgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfZmllbGQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZV9maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZV9maWVsZCBleHRlbnNpb25zXG4gIGFuZCBjb3JlX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNvcmVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBleHByZXNzaW9uID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5leHByZXNzaW9uIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV9leHByID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfZXhwciBleHRlbnNpb25zXG4gIGFuZCBtb2R1bGVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMubW9kdWxlX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgcGF0dGVybiA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMucGF0dGVybiBleHRlbnNpb25zXG4gIGFuZCBzaWduYXR1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc2lnbmF0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgc3RydWN0dXJlX2l0ZW0gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnN0cnVjdHVyZV9pdGVtIGV4dGVuc2lvbnNcbiAgYW5kIHBweF9pbXBvcnQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLlBweF9pbXBvcnQgZXh0ZW5zaW9ucyBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xzLCBhdHRyX3N0cl90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xzLCBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRzLCBhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRzLCBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25zLCBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25zLCBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IG1hcF9ub2RlID0gbWFwX25vZGUgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5ob29rIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSA9IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBoYW5kbGVfYXR0cl9pbmxpbmUgPSBoYW5kbGVfYXR0cl9pbmxpbmUgfmVtYmVkX2Vycm9ycyBpblxuXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzIGFzIHN1cGVyXG5cbiAgICAoKiBObyBwb2ludCByZWN1cnNpbmcgaW50byBldmVyeSBsb2NhdGlvbiAqKVxuICAgIG1ldGhvZCEgbG9jYXRpb24gXyB4ID0gcmV0dXJuIHhcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNvcmVfdHlwZSBjb3JlX3R5cGUgc3VwZXIjY29yZV90eXBlIHgucHR5cF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgcGF0dGVybiBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5wYXR0ZXJuIHBhdHRlcm4gc3VwZXIjcGF0dGVybiB4LnBwYXRfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gYmFzZV9jdHh0IGUgPVxuICAgICAgbGV0IHdpdGhfY29udGV4dCA9XG4gICAgICAgICgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIGUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj49IGZ1biBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCBlKVxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+XG4gICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIEV4cHJlc3Npb25cbiAgICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl92YWx1ZSBdXG4gICAgICAgICAgICAgIGVcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDplXG4gICAgICAgICAgICA+PnwgZnVuIGUgLT5cbiAgICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGJhc2VfY3R4dCwgZSlcbiAgICAgIGluXG4gICAgICB3aXRoX2NvbnRleHQgPj49IGZ1biAoYmFzZV9jdHh0LCBlKSAtPlxuICAgICAgbGV0IGV4cGFuZGVkID1cbiAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICAgIG1hcF9ub2RlIEVDLmV4cHJlc3Npb24gZXhwcmVzc2lvblxuICAgICAgICAgICAgICAoZnVuIF8gZSAtPiByZXR1cm4gZSlcbiAgICAgICAgICAgICAgZS5wZXhwX2xvYyBiYXNlX2N0eHQgZVxuICAgICAgICB8IF8gLT4gcmV0dXJuIGVcbiAgICAgIGluXG4gICAgICBleHBhbmRlZCA+Pj0gZnVuIGUgLT5cbiAgICAgIGxldCBleHBhbmRfY29uc3RhbnQga2luZCBjaGFyIHRleHQgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IGNvbnN0YW50cyAoY2hhciwga2luZCkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICB8IFNvbWUgZXhwYW5kIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgKGV4cGFuZCBlLnBleHBfbG9jIHRleHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2FwcGx5ICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IGlkOyBfIH0gYXMgZnVuYyksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHNlbGYjcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoTm9uZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9pZGVudCBpZCAtPiAoXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBzcGVjaWFsX2Z1bmN0aW9ucyBpZC50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoTm9uZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgICAgIHwgU29tZSBlIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSkpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9pbnRlZ2VyIChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBJbnRlZ2VyIGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChlLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgfCBQZXhwX2NvbnN0YW50IChQY29uc3RfZmxvYXQgKHMsIFNvbWUgYykpIC0+IChcbiAgICAgICAgICB0cnkgZXhwYW5kX2NvbnN0YW50IEZsb2F0IGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChlLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcblxuICAgICgqIFByZS1jb25kaXRpb25zOlxuICAgICAgIC0gZS5wZXhwX2Rlc2MgPSBQZXhwX2FwcGx5KGZ1bmMsIGFyZ3MpXG4gICAgICAgLSBmdW5jLnBleHBfZGVzYyA9IFBleHBfaWRlbnQgX1xuICAgICopXG4gICAgbWV0aG9kIHByaXZhdGUgcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgID1cbiAgICAgIGxldCB7IHBleHBfZGVzYyA9IF87IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBlIGluXG4gICAgICBsZXQgZnVuYyA9XG4gICAgICAgIGxldCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfYXR0cmlidXRlczsgcGV4cF9sb2Nfc3RhY2sgfSA9IGZ1bmMgaW5cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgICAge1xuICAgICAgICAgIHBleHBfZGVzYztcbiAgICAgICAgICBwZXhwX2xvYyAoKiBsb2NhdGlvbiBkb2Vzbid0IG5lZWQgdG8gYmUgdHJhdmVyc2VkICopO1xuICAgICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGZ1bmMgPj49IGZ1biBmdW5jIC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biAobGFiLCBleHApIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGV4cCA+PnwgZnVuIGV4cCAtPiAobGFiLCBleHApKVxuICAgICAgICB8PiBjb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGFyZ3MgPj49IGZ1biBhcmdzIC0+XG4gICAgICBzZWxmI2F0dHJpYnV0ZXMgYmFzZV9jdHh0IHBleHBfYXR0cmlidXRlcyA+PnwgZnVuIHBleHBfYXR0cmlidXRlcyAtPlxuICAgICAge1xuICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChmdW5jLCBhcmdzKTtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICB9XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfdHlwZSBjbGFzc190eXBlIHN1cGVyI2NsYXNzX3R5cGUgeC5wY3R5X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIHgucGN0Zl9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc19leHByIGNsYXNzX2V4cHIgc3VwZXIjY2xhc3NfZXhwciB4LnBjbF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGQgeC5wY2ZfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV90eXBlIG1vZHVsZV90eXBlIHN1cGVyI21vZHVsZV90eXBlIHgucG10eV9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgKCgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIHgpXG4gICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIE1vZHVsZV9leHByXG4gICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl9tb2R1bGUgXVxuICAgICAgICAgICAgIHhcbiAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICAgPj58IGZ1biB4IC0+XG4gICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBiYXNlX2N0eHQsIHgpKVxuICAgICAgPj49IGZ1biAoYmFzZV9jdHh0LCB4KSAtPlxuICAgICAgbWFwX25vZGUgRUMubW9kdWxlX2V4cHIgbW9kdWxlX2V4cHIgc3VwZXIjbW9kdWxlX2V4cHIgeC5wbW9kX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zdHJ1Y3R1cmVfaXRlbSBzdHJ1Y3R1cmVfaXRlbSBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4LnBzdHJfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnNpZ25hdHVyZV9pdGVtIHNpZ25hdHVyZV9pdGVtIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHgucHNpZ19sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc3RydWN0dXJlIGJhc2VfY3R4dCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjcGF0dGVybiBiYXNlX2N0eHQgcGNzdHJfc2VsZiA+Pj0gZnVuIHBjc3RyX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc19maWVsZCBjbGFzc19maWVsZCBzdXBlciNjbGFzc19maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY2ZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzdHJfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc3RyX2ZpZWxkcyAtPiB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuUHB4X2ltcG9ydCBwcHhfaW1wb3J0IHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geC5wdHlwZV9sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc2lnbmF0dXJlIGJhc2VfY3R4dCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjY29yZV90eXBlIGJhc2VfY3R4dCBwY3NpZ19zZWxmID4+PSBmdW4gcGNzaWdfc2VsZiAtPlxuICAgICAgbWFwX25vZGVzIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIChmdW4geCAtPiB4LnBjdGZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzaWdfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc2lnX2ZpZWxkcyAtPiB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICAoKiBUT0RPOiB0cnkgdG8gZmFjdG9yaXplICNzdHJ1Y3R1cmUgYW5kICNzaWduYXR1cmUgd2l0aG91dCBtZXRhLXByb2dyYW1taW5nICopXG4gICAgKCokKilcbiAgICBtZXRob2QhIHN0cnVjdHVyZSBiYXNlX2N0eHQgc3QgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTdHJ1Y3R1cmVfaXRlbSBpdGVtLnBzdHJfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHN0cl9sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3N0cnVjdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTdHJ1Y3R1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzdHJ1Y3R1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc3RyX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHN0cl9kZXNjLCBleHBhbmRlZF9pdGVtLnBzdHJfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBlIChyZiwgdGRzKSwgUHN0cl90eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3N0cl90eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSBtdGQsIFBzdHJfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3RcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbTptdGQgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX3R5cGV4dCB0ZSwgUHN0cl90eXBleHQgZXhwX3RlIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl90eXBlX2V4dHMgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24gZWMsIFBzdHJfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3Qgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3N0cnVjdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHN0IH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuICAgIG1ldGhvZCEgc2lnbmF0dXJlIGJhc2VfY3R4dCBzZyA9XG4gICAgICBsZXQgcmVjIHdpdGhfZXh0cmFfaXRlbXMgaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtcyB+cmVzdFxuICAgICAgICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIGxvb3AgKHJldl9jb25jYXQgZXh0cmFfaXRlbXMpIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLmluc2VydF9hZnRlciBob29rIFNpZ25hdHVyZV9pdGVtIGl0ZW0ucHNpZ19sb2NcbiAgICAgICAgICAgIChNYW55IGV4dHJhX2l0ZW1zKTtcbiAgICAgICAgbGV0IG9yaWdpbmFsX3Jlc3QgPSByZXN0IGluXG4gICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biByZXN0IC0+XG4gICAgICAgIChtYXRjaCBleHBlY3RfaXRlbXMgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHJldl9jb25jYXQgZXhwZWN0X2l0ZW1zIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gaXRlbS5wc2lnX2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgICBDb2RlX21hdGNoZXIubWF0Y2hfc2lnbmF0dXJlX3JlcyBvcmlnaW5hbF9yZXN0IH5wb3MgfmV4cGVjdGVkXG4gICAgICAgICAgICAgIH5taXNtYXRjaF9oYW5kbGVyOihmdW4gbG9jIHJlcGwgLT5cbiAgICAgICAgICAgICAgICBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5mIFNpZ25hdHVyZV9pdGVtIGxvYyByZXBsKVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OigpKVxuICAgICAgICA+PnwgZnVuICgpIC0+IGl0ZW0gOjogKGV4dHJhX2l0ZW1zIEAgcmVzdClcbiAgICAgIGFuZCBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIG1hdGNoIHNnIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gW11cbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHNpZ25hdHVyZV9pdGVtIH5jdHh0IGV4dFxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gaXRlbSAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT4gaXRlbSA6OiByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXR0cnM7ICopXG4gICAgICAgICAgICAgICAgICAgIGxvb3AgaXRlbXMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWUgPj49IGZ1biBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBzaWdfbG9jIChNYW55IGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+PnwgZnVuIHJlc3QgLT4gaXRlbXMgQCByZXN0KVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGV4cGFuZGVkX2l0ZW0gLT5cbiAgICAgICAgICAgICAgICBtYXRjaCAoaXRlbS5wc2lnX2Rlc2MsIGV4cGFuZGVkX2l0ZW0ucHNpZ19kZXNjKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHJmLCB0ZHMpLCBQc2lnX3R5cGUgKGV4cF9yZiwgZXhwX3RkcykgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogTm8gY29udGV4dC1mcmVlIHJ1bGUgY2FuIHJld3JpdGUgcmVjIGZsYWdzIGF0bSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWN0cyBhcyBhIGZhaWxzYWZlIGluIGNhc2UgaXQgZXZlciBjaGFuZ2VzICopXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoUG9seS4ocmYgPSBleHBfcmYpKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc2lnX3R5cGVfZGVjbHMgcmYgfml0ZW1zOnRkc1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCByZlxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtczp0ZHMgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlIG10ZCwgUHNpZ19tb2R0eXBlIGV4cF9tdGQgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzIH5pdGVtOm10ZFxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHRlLCBQc2lnX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBlYywgUHNpZ19leGNlcHRpb24gZXhwX2VjIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zIH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc2lnbmF0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZF9pdGVtIDo6IHJlc3QpKVxuICAgICAgaW5cbiAgICAgIGxvb3Agc2cgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbiAgICAoKiQqKVxuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIFV0aWxzXG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFeHRlbnNpb24gb2YgJ2EgRXh0ZW5zaW9uLkNvbnRleHQudFxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIG9mICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnRcblxuICBsZXQgcGFyZW4gcHAgcHBmIHggPSBTdGRsaWIuRm9ybWF0LmZwcmludGYgcHBmIFwiKCVhKVwiIHBwIHhcblxuICBsZXQgcHJpbnRlciA6IHR5cGUgYS4gYSB0IC0+IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyIC0+IGEgLT4gdW5pdCA9XG4gICAgbGV0IG9wZW4gRXh0ZW5zaW9uLkNvbnRleHQgaW5cbiAgICBsZXQgb3BlbiBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dCBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfZXhwciAtPiBQcHJpbnRhc3QuY2xhc3NfZXhwclxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc19maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX3R5cGUgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc190eXBlX2ZpZWxkXG4gICAgfCBFeHRlbnNpb24gQ29yZV90eXBlIC0+IHBhcmVuIFBwcmludGFzdC5jb3JlX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBFeHByZXNzaW9uIC0+IHBhcmVuIFBwcmludGFzdC5leHByZXNzaW9uXG4gICAgfCBFeHRlbnNpb24gTW9kdWxlX2V4cHIgLT4gUHByaW50YXN0Lm1vZHVsZV9leHByXG4gICAgfCBFeHRlbnNpb24gTW9kdWxlX3R5cGUgLT4gUHByaW50YXN0Lm1vZHVsZV90eXBlXG4gICAgfCBFeHRlbnNpb24gUGF0dGVybiAtPiBwYXJlbiBQcHJpbnRhc3QucGF0dGVyblxuICAgIHwgRXh0ZW5zaW9uIFNpZ25hdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICAgIHwgRXh0ZW5zaW9uIFN0cnVjdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICAgIHwgRXh0ZW5zaW9uIFBweF9pbXBvcnQgLT4gUHByaW50YXN0LnR5cGVfZGVjbGFyYXRpb25cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBDbGFzc190eXBlX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc190eXBlX2ZpZWxkXG5lbmRcblxubW9kdWxlIFJlcGxhY2VtZW50ID0gc3RydWN0XG4gIHR5cGUgZGF0YSA9XG4gICAgfCBWYWx1ZXMgOlxuICAgICAgICAnYSBDb250ZXh0LnQgKiAnYSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5zaW5nbGVfb3JfbWFueVxuICAgICAgICAtPiBkYXRhXG4gICAgfCBUZXh0IG9mIHN0cmluZ1xuXG4gIHR5cGUgdCA9IHsgc3RhcnQgOiBMZXhpbmcucG9zaXRpb247IHN0b3AgOiBMZXhpbmcucG9zaXRpb247IGRhdGEgOiBkYXRhIH1cblxuICBsZXQgbWFrZSB+Y29udGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPVxuICAgIHsgc3RhcnQ7IHN0b3A7IGRhdGEgPSBWYWx1ZXMgKGNvbnRleHQsIHJlcGwpIH1cblxuICBsZXQgbWFrZV90ZXh0IH5zdGFydCB+c3RvcCB+cmVwbCAoKSA9IHsgc3RhcnQ7IHN0b3A7IGRhdGEgPSBUZXh0IHJlcGwgfVxuXG4gIGxldCB0ZXh0IGJsb2NrID1cbiAgICBtYXRjaCBibG9jay5kYXRhIHdpdGhcbiAgICB8IFRleHQgcyAtPiBzXG4gICAgfCBWYWx1ZXMgKGNvbnRleHQsIGdlbmVyYXRlZCkgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBwcmludGVyID0gQ29udGV4dC5wcmludGVyIGNvbnRleHQgaW5cbiAgICAgICAgICBtYXRjaCBnZW5lcmF0ZWQgd2l0aFxuICAgICAgICAgIHwgU2luZ2xlIHggLT4gU3RkbGliLkZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHJpbnRlciB4XG4gICAgICAgICAgfCBNYW55IGwgLT5cbiAgICAgICAgICAgICAgU3RkbGliLkZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAoZnVuIHBwZiBsIC0+XG4gICAgICAgICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICBwcmludGVyIHBwZiB4O1xuICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpKVxuICAgICAgICAgICAgICAgIGxcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlzX3dzID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgfCAnXFxyJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSBpblxuICAgICAgICBsZXQgc3RyaXBfd3MgcyBpIGxlbiA9XG4gICAgICAgICAgbGV0IGxlbiA9IHJlZiBsZW4gaW5cbiAgICAgICAgICB3aGlsZSAhbGVuID4gMCAmJiBpc193cyBzLltpICsgIWxlbiAtIDFdIGRvXG4gICAgICAgICAgICBsZW4gOj0gIWxlbiAtIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIFN0cmluZy5zdWIgcyB+cG9zOmkgfmxlbjohbGVuXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIHBvcyA9XG4gICAgICAgICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggcyB0aGVuIFtdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGlkeCA9XG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tX29wdCBzIHBvcyAnXFxuJyB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHN0cmlwX3dzIHMgcG9zIChpZHggLSBwb3MpIDo6IFwiXFxuXCIgOjogbG9vcCBzIChpZHggKyAxKVxuICAgICAgICBpblxuICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiAobG9vcCBzIDApXG5lbmRcblxub3BlbiBSZXBsYWNlbWVudFxuXG5tb2R1bGUgUmVwbGFjZW1lbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9IFJlcGxhY2VtZW50LnQgbGlzdFxuXG4gICgqIE1lcmdlIGxvY2F0aW9ucyBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIE92ZXJsYXBwaW5nIGxvY2F0aW9ucyBhcmUgbWVyZ2VkIGludG8gb25lLiBUaGVcbiAgICAgcmVzdWx0IGlzIHNvcnRlZCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgdG8gdGhlIGVuZC4gKilcbiAgbGV0IGNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyA9XG4gICAgTGlzdC5pdGVyIHJlcGxzIH5mOihmdW4gcmVwbCAtPlxuICAgICAgICBpZlxuICAgICAgICAgIFN0cmluZy4oIDw+ICkgcmVwbC5zdGFydC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICAgIHx8IFN0cmluZy4oIDw+ICkgcmVwbC5zdG9wLnBvc19mbmFtZSBpbnB1dF9uYW1lXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgaW5wdXRfZmlsZW5hbWUpXG4gICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IHRoZSByZXdyaXRpbmcgY29udGFpbnMgcGFydHMgZnJvbSBhbm90aGVyIGZpbGUuXFxuXFxcbiAgICAgICAgICAgICBJdCBpcyB0b28gY29tcGxpY2F0ZWQgdG8gcmVjb25jaWxlIGl0IHdpdGggdGhlIHNvdXJjZTogJXMgb3IgJXMgXFxcbiAgICAgICAgICAgICBhbmQgJXNcIlxuICAgICAgICAgICAgcmVwbC5zdGFydC5wb3NfZm5hbWUgcmVwbC5zdG9wLnBvc19mbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICBhc3NlcnQgKHJlcGwuc3RhcnQucG9zX2NudW0gPD0gcmVwbC5zdG9wLnBvc19jbnVtKSk7XG4gICAgbGV0IHJlcGxzID1cbiAgICAgIExpc3Quc29ydCByZXBscyB+Y21wOihmdW4gYSBiIC0+XG4gICAgICAgICAgbGV0IGQgPSBjb21wYXJlIGEuc3RhcnQucG9zX2NudW0gYi5zdG9wLnBvc19jbnVtIGluXG4gICAgICAgICAgaWYgZCA9IDAgdGhlblxuICAgICAgICAgICAgKCogUHV0IHRoZSBsYXJnZXN0IGZpcnN0LCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgW2ZpbHRlcl0gZnVuY3Rpb25zIGFsd2F5cyBwaWNrcyB1cFxuICAgICAgICAgICAgICAgdGhlIGxhcnRlc3QgZmlyc3Qgd2hlbiBzZXZlcmFsIGdlbmVyYXRlZCByZXBscyBzdGFydCBhdCB0aGUgc2FtZSBwb3NpdGlvbiAqKVxuICAgICAgICAgICAgY29tcGFyZSBiLnN0b3AucG9zX2NudW0gYS5zdG9wLnBvc19jbnVtXG4gICAgICAgICAgZWxzZSBkKVxuICAgIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgcHJldiByZXBscyB+YWNjID1cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgKHByZXYgOjogYWNjKVxuICAgICAgfCByZXBsIDo6IHJlcGxzIC0+XG4gICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID4gcmVwbC5zdGFydC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICBpZiBwcmV2LnN0b3AucG9zX2NudW0gPj0gcmVwbC5zdG9wLnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgICAgKCogW3JlcGxdIGlzIGluY2x1ZGVkIGluIFtwcmV2XSA9PiBza2lwIFtyZXBsXSAqKVxuICAgICAgICAgICAgICBmaWx0ZXIgcHJldiByZXBscyB+YWNjXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgIFwicHB4bGliX2RyaXZlcjogbG9jYXRpb25zIG9mIGdlbmVyYXRlZCBjb2RlIGFyZSBvdmVybGFwcGluZywgXFxcbiAgICAgICAgICAgICAgICAgY2Fubm90IHJlY29uY2lsZVwiXG4gICAgICAgICAgICAgICAgfmxvYzpcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jX3N0YXJ0ID0gcmVwbC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgbG9jX2VuZCA9IHByZXYuc3RvcDtcbiAgICAgICAgICAgICAgICAgICAgbG9jX2dob3N0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOihwcmV2IDo6IGFjYylcbiAgICBpblxuICAgIG1hdGNoIHJlcGxzIHdpdGggW10gLT4gW10gfCByZXBsIDo6IHJlcGxzIC0+IGZpbHRlciByZXBsIHJlcGxzIH5hY2M6W11cbmVuZFxuXG5sZXQgY291bnRfbmV3bGluZXMgcyA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgU3RyaW5nLml0ZXIgcyB+ZjooZnVuY3Rpb24gJ1xcbicgLT4gbiA6PSAhbiArIDEgfCBfIC0+ICgpKTtcbiAgIW5cblxubGV0IGdlbmVyYXRlZF9jb2RlX2JlZ2luID1cbiAgXCIoKiAtLS0tLXsgR0VORVJBVEVEIENPREUgQkVHSU4gfS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcIlxuXG5sZXQgZ2VuZXJhdGVkX2NvZGVfZW5kID1cbiAgXCIoKiAtLS0tLXsgR0VORVJBVEVEIENPREUgRU5EICAgfS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcIlxuXG50eXBlIG1vZGUgPSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3NcbnR5cGUgdGFyZ2V0ID0gT3V0cHV0IG9mIG1vZGUgfCBDb3JyZWN0ZWRcblxubGV0IHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIChwb3MgOiBMZXhpbmcucG9zaXRpb24pID1cbiAgbGV0IHJlYyBsb29wIGNudW0gPVxuICAgIGlmIGNudW0gPSBTdHJpbmcubGVuZ3RoIGNvbnRlbnRzIHRoZW4geyBwb3Mgd2l0aCBwb3NfY251bSA9IGNudW0gfVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGNvbnRlbnRzLltjbnVtXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gbG9vcCAoY251bSArIDEpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9zIHdpdGhcbiAgICAgICAgICAgIHBvc19jbnVtID0gY251bSArIDE7XG4gICAgICAgICAgICBwb3NfbG51bSA9IHBvcy5wb3NfbG51bSArIDE7XG4gICAgICAgICAgICBwb3NfYm9sID0gY251bSArIDE7XG4gICAgICAgICAgfVxuICAgICAgfCBfIC0+IHBvc1xuICBpblxuICBsb29wIHBvcy5wb3NfY251bVxuXG5sZXQgd2l0aF9vdXRwdXQgfnN0eWxlciB+KGtpbmQgOiBLaW5kLnQpIGZuIH5mID1cbiAgbWF0Y2ggc3R5bGVyIHdpdGhcbiAgfCBOb25lIC0+IHdpdGhfb3V0cHV0IGZuIH5iaW5hcnk6ZmFsc2UgfmZcbiAgfCBTb21lIGNtZCAtPlxuICAgICAgbGV0IHRtcF9mbiwgb2MgPVxuICAgICAgICBTdGRsaWIuRmlsZW5hbWUub3Blbl90ZW1wX2ZpbGUgXCJwcHhsaWJfZHJpdmVyXCJcbiAgICAgICAgICAobWF0Y2gga2luZCB3aXRoIEltcGwgLT4gXCIubWxcIiB8IEludGYgLT4gXCIubWxpXCIpXG4gICAgICBpblxuICAgICAgbGV0IGNtZCA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMlc1wiIGNtZFxuICAgICAgICAgIChTdGRsaWIuRmlsZW5hbWUucXVvdGUgdG1wX2ZuKVxuICAgICAgICAgIChtYXRjaCBmbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgZm4gLT4gXCIgPiBcIiBeIFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBmbilcbiAgICAgIGluXG4gICAgICBsZXQgbiA9XG4gICAgICAgIEV4bi5wcm90ZWN0eCB0bXBfZm4gfmZpbmFsbHk6U3RkbGliLlN5cy5yZW1vdmUgfmY6KGZ1biBfIC0+XG4gICAgICAgICAgICBFeG4ucHJvdGVjdHggb2MgfmZpbmFsbHk6Y2xvc2Vfb3V0IH5mO1xuICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZClcbiAgICAgIGluXG4gICAgICBpZiBuIDw+IDAgdGhlbiAoXG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiY29tbWFuZCBleGl0ZWQgd2l0aCBjb2RlICVkOiAlc1xcblwiIG4gY21kO1xuICAgICAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgcmVjb25jaWxlID9zdHlsZXIgKHJlcGxzIDogUmVwbGFjZW1lbnRzLnQpIH5raW5kIH5jb250ZW50cyB+aW5wdXRfZmlsZW5hbWVcbiAgICB+b3V0cHV0IH5pbnB1dF9uYW1lIH50YXJnZXQgPVxuICBsZXQgcmVwbHMgPSBSZXBsYWNlbWVudHMuY2hlY2tfYW5kX3NvcnQgfmlucHV0X2ZpbGVuYW1lIH5pbnB1dF9uYW1lIHJlcGxzIGluXG4gIGxldCBvdXRwdXRfbmFtZSA9IG1hdGNoIG91dHB1dCB3aXRoIE5vbmUgLT4gXCI8c3Rkb3V0PlwiIHwgU29tZSBmbiAtPiBmbiBpblxuICB3aXRoX291dHB1dCBvdXRwdXQgfnN0eWxlciB+a2luZCB+ZjooZnVuIG9jIC0+XG4gICAgICBsZXQgY29weV9pbnB1dCBwb3MgfnVwX3RvIH5saW5lIH5sYXN0X2lzX3RleHQgfmlzX3RleHQgPVxuICAgICAgICBsZXQgcG9zID0gaWYgbGFzdF9pc190ZXh0IHRoZW4gcG9zIGVsc2Ugc2tpcF9ibGFua19lb2wgY29udGVudHMgcG9zIGluXG4gICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHVwX3RvIHRoZW4gKFxuICAgICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPlxuICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiMgJWQgJVNcXG4lKnNcIiBwb3MucG9zX2xudW0gaW5wdXRfbmFtZVxuICAgICAgICAgICAgICAgIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbClcbiAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIHwgQ29ycmVjdGVkIC0+ICgpKTtcbiAgICAgICAgICBvdXRwdXRfc3Vic3RyaW5nIG9jIGNvbnRlbnRzIH5wb3M6cG9zLnBvc19jbnVtXG4gICAgICAgICAgICB+bGVuOih1cF90byAtIHBvcy5wb3NfY251bSk7XG4gICAgICAgICAgbGV0IGxpbmUgPSByZWYgKGxpbmUgKyAxKSBpblxuICAgICAgICAgIGZvciBpID0gcG9zLnBvc19jbnVtIHRvIHVwX3RvIC0gMSBkb1xuICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBjb250ZW50cy5baV0gJ1xcbicgdGhlbiBsaW5lIDo9ICFsaW5lICsgMVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgbGV0IGxpbmUgPSAhbGluZSBpblxuICAgICAgICAgIGlmIChub3QgaXNfdGV4dCkgJiYgQ2hhci4oIDw+ICkgY29udGVudHMuW3VwX3RvIC0gMV0gJ1xcbicgdGhlbiAoXG4gICAgICAgICAgICBvdXRwdXRfY2hhciBvYyAnXFxuJztcbiAgICAgICAgICAgIGxpbmUgKyAxKVxuICAgICAgICAgIGVsc2UgbGluZSlcbiAgICAgICAgZWxzZSBsaW5lXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wIGxpbmUgKHBvcyA6IExleGluZy5wb3NpdGlvbikgcmVwbHMgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChjb3B5X2lucHV0IHBvcyB+dXBfdG86KFN0cmluZy5sZW5ndGggY29udGVudHMpIH5saW5lXG4gICAgICAgICAgICAgICAgIH5sYXN0X2lzX3RleHQgfmlzX3RleHQ6ZmFsc2VcbiAgICAgICAgICAgICAgICA6IGludClcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzIC0+XG4gICAgICAgICAgICBsZXQgaXNfdGV4dCA9XG4gICAgICAgICAgICAgIG1hdGNoIHJlcGwuZGF0YSB3aXRoIFRleHQgXyAtPiB0cnVlIHwgVmFsdWVzIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGluZSA9XG4gICAgICAgICAgICAgIGNvcHlfaW5wdXQgcG9zIH51cF90bzpyZXBsLnN0YXJ0LnBvc19jbnVtIH5saW5lIH5sYXN0X2lzX3RleHRcbiAgICAgICAgICAgICAgICB+aXNfdGV4dFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID0gUmVwbGFjZW1lbnQudGV4dCByZXBsIGluXG4gICAgICAgICAgICBsZXQgbGluZSA9XG4gICAgICAgICAgICAgIG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuXCIgKGxpbmUgKyAxKSBvdXRwdXRfbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2JlZ2luO1xuICAgICAgICAgICAgICAgICAgbGluZSArIDFcbiAgICAgICAgICAgICAgfCBDb3JyZWN0ZWQgLT4gbGluZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG91dHB1dF9zdHJpbmcgb2MgcztcbiAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSByZXBsLnN0b3AgcmVwbHMgfmxhc3RfaXNfdGV4dDppc190ZXh0XG4gICAgICBhbmQgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzXG4gICAgICAgICAgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICB8IHJlcGwgOjogcmVwbHMnIC0+XG4gICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgaWYgbGFzdF9pc190ZXh0IHRoZW4gcG9zIGVsc2Ugc2tpcF9ibGFua19lb2wgY29udGVudHMgcG9zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgcG9zLnBvc19jbnVtIDwgcmVwbC5zdGFydC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgIGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBzID0gUmVwbGFjZW1lbnQudGV4dCByZXBsIGluXG4gICAgICAgICAgICAgIG91dHB1dF9zdHJpbmcgb2MgcztcbiAgICAgICAgICAgICAgbGV0IGxpbmUgPSBsaW5lICsgY291bnRfbmV3bGluZXMgcyBpblxuICAgICAgICAgICAgICBsZXQgbGFzdF9pc190ZXh0ID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSByZXBsLnN0b3AgcmVwbHMnIH5sYXN0X2lzX3RleHRcbiAgICAgIGFuZCBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBDb3JyZWN0ZWQgLT4gKClcbiAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfZW5kKTtcbiAgICAgICAgbG9vcCBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gaW5wdXRfbmFtZTtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgfCB7IHN0YXJ0ID0geyBwb3NfY251bSA9IDA7IF8gfTsgXyB9IDo6IF8gLT5cbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBDb3JyZWN0ZWQgLT4gKClcbiAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2JlZ2luKTtcbiAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIDEgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQ6ZmFsc2VcbiAgICAgIHwgXyAtPiBsb29wIDEgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQ6ZmFsc2UpXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgbmV4dF9pZCA6IGludDtcbiAgbXV0YWJsZSBiaW5kaW5ncyA6IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIGxpc3Q7XG59XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHRfaWQgPSAwOyBiaW5kaW5ncyA9IFtdIH1cblxubGV0IHNhbml0aXplIHQgZSA9XG4gIG1hdGNoIHQuYmluZGluZ3Mgd2l0aFxuICB8IFtdIC0+IGVcbiAgfCBiaW5kaW5ncyAtPlxuICAgICAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgZS5wZXhwX2xvYyBpblxuICAgICAgQXN0LnBleHBfbGV0IE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBlXG5cbmxldCBxdW90ZSB0IChlIDogZXhwcmVzc2lvbikgPVxuICBsZXQgbG9jID0gZS5wZXhwX2xvYyBpblxuICBsZXQgKG1vZHVsZSBBc3QpID0gQXN0X2J1aWxkZXIubWFrZSBsb2MgaW5cbiAgbGV0IG5hbWUgPSBcIl9fXCIgXiBJbnQudG9fc3RyaW5nIHQubmV4dF9pZCBpblxuICBsZXQgYmluZGluZ19leHByLCBxdW90ZWRfZXhwciA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgKCogT3B0aW1pemUgaWRlbnRpZmllciBxdW90aW5nIGJ5IGF2b2lkaW5nIGNsb3N1cmUuXG4gICAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC1wcHgvcHB4X2Rlcml2aW5nL3B1bGwvMjUyLiAqKVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSAtPiAoZSwgQXN0LmV2YXIgbmFtZSlcbiAgICB8IF8gLT5cbiAgICAgICAgbGV0IGJpbmRpbmdfZXhwciA9XG4gICAgICAgICAgQXN0LnBleHBfZnVuIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgKGxldCB1bml0ID0gQXN0X2J1aWxkZXIuRGVmYXVsdC5Mb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIiBpblxuICAgICAgICAgICAgIEFzdC5wcGF0X2NvbnN0cnVjdCB1bml0IE5vbmUpXG4gICAgICAgICAgICBlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBxdW90ZWRfZXhwciA9IEFzdC5lYXBwbHkgKEFzdC5ldmFyIG5hbWUpIFsgQXN0LmV1bml0IF0gaW5cbiAgICAgICAgKGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIpXG4gIGluXG4gIGxldCBiaW5kaW5nID1cbiAgICBsZXQgcGF0ID0gQXN0LnB2YXIgbmFtZSBpblxuICAgIEFzdC52YWx1ZV9iaW5kaW5nIH5wYXQgfmV4cHI6YmluZGluZ19leHByXG4gIGluXG4gIHQuYmluZGluZ3MgPC0gYmluZGluZyA6OiB0LmJpbmRpbmdzO1xuICB0Lm5leHRfaWQgPC0gdC5uZXh0X2lkICsgMTtcbiAgcXVvdGVkX2V4cHJcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgbWtfYXR0cl9ub2xvYyB0eHQgPSBBc3RfaGVscGVyLkF0dHIubWsgTG9jYXRpb24ueyB0eHQ7IGxvYyA9IG5vbmUgfVxubGV0IGhpZGVfYXR0cmlidXRlIDogYXR0cmlidXRlID0gbWtfYXR0cl9ub2xvYyBcIm1lcmxpbi5oaWRlXCIgKFBTdHIgW10pXG5sZXQgZm9jdXNfYXR0cmlidXRlIDogYXR0cmlidXRlID0gbWtfYXR0cl9ub2xvYyBcIm1lcmxpbi5mb2N1c1wiIChQU3RyIFtdKVxuXG5sZXQgaGlkZV9wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gaGlkZV9hdHRyaWJ1dGUgOjogcHBhdF9hdHRyaWJ1dGVzIH1cblxubGV0IGZvY3VzX3BhdHRlcm4gKHsgcHBhdF9hdHRyaWJ1dGVzOyBfIH0gYXMgcCkgPVxuICB7IHAgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBmb2N1c19hdHRyaWJ1dGUgOjogcHBhdF9hdHRyaWJ1dGVzIH1cblxubGV0IGhpZGVfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBleHBfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19leHByZXNzaW9uICh7IHBleHBfYXR0cmlidXRlczsgXyB9IGFzIGUpID1cbiAgeyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBleHBfYXR0cmlidXRlcyB9XG4iLCJvcGVuIEltcG9ydFxuXG5tb2R1bGUgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaW5zZXJ0IDogbm9kZV9uYW1lOnN0cmluZyAtPiBMb2NhdGlvbi50IC0+IHQgLT4gdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuXG4gIHZhbCBjb3ZlcmVkX2J5IDogdCAtPiBsb2M6TG9jYXRpb24udCAtPiBib29sXG4gICgqKiBbY292ZXJlZF9ieSB0IH5sb2MgPSB0cnVlXSBpZmYgW3RdIGlzIGNvdmVyZWQgYnkgW2xvY10gKilcblxuICB2YWwgZmluZF9vdXRzaWRlIDogTG9jYXRpb24udCAtPiB0IC0+IHN0cmluZyAqIExvY2F0aW9uLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWluX3BvcyA6IExleGluZy5wb3NpdGlvbiBvcHRpb247XG4gICAgbWF4X3BvcyA6IExleGluZy5wb3NpdGlvbiBvcHRpb247XG4gICAgcmFuZ2VzIDogKHN0cmluZyAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gIH1cblxuICBsZXQgZW1wdHkgPSB7IG1pbl9wb3MgPSBOb25lOyBtYXhfcG9zID0gTm9uZTsgcmFuZ2VzID0gW10gfVxuXG4gIGxldCByZWMgaW5zZXJ0IHJhbmdlcyAoKG5vZGVfbmFtZSwgbm9kZV9sb2MpIGFzIG5vZGUpID1cbiAgICBtYXRjaCByYW5nZXMgd2l0aFxuICAgIHwgW10gLT4gWyBub2RlIF1cbiAgICB8ICgoeF9uYW1lLCB4X2xvYykgYXMgeCkgOjogeHMgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24gaW5cbiAgICAgICAgaWYgY29tcGFyZV9wb3Mgbm9kZV9sb2MubG9jX3N0YXJ0IHhfbG9jLmxvY19lbmQgPj0gMCB0aGVuXG4gICAgICAgICAgbm9kZSA6OiB4IDo6IHhzXG4gICAgICAgIGVsc2UgaWYgY29tcGFyZV9wb3MgeF9sb2MubG9jX3N0YXJ0IG5vZGVfbG9jLmxvY19lbmQgPj0gMCB0aGVuXG4gICAgICAgICAgeCA6OiBpbnNlcnQgeHMgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2VfZXJyb3JmIH5sb2M6bm9kZV9sb2NcbiAgICAgICAgICAgIFwiaW52YWxpZCBvdXRwdXQgZnJvbSBwcHgsICVzIG92ZXJsYXBzIHdpdGggJXMgYXQgbG9jYXRpb246QC4lYVwiXG4gICAgICAgICAgICBub2RlX25hbWUgeF9uYW1lIExvY2F0aW9uLnByaW50IHhfbG9jXG5cbiAgbGV0IG1pbl9wb3MgcDEgcDIgPVxuICAgIG1hdGNoIChwMSwgcDIpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgKFNvbWUgXyBhcyBwKSwgTm9uZSB8IE5vbmUsIChTb21lIF8gYXMgcCkgLT4gcFxuICAgIHwgU29tZSBwMSwgU29tZSBwMiAtPiBTb21lIChMb2NhdGlvbi5taW5fcG9zIHAxIHAyKVxuXG4gIGxldCBtYXhfcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWF4X3BvcyBwMSBwMilcblxuICBsZXQgbG9uZ2VzdF9maXJzdCBsMSBsMiB+c3RvcF9hZnRlciA9XG4gICAgbGV0IHJlYyBsb29wIHhzIHlzIG4gPVxuICAgICAgbWF0Y2ggKHhzLCB5cywgbikgd2l0aFxuICAgICAgfCBbXSwgXywgXyB8IF8sIF8sIDAgLT4gKGwyLCBsMSlcbiAgICAgIHwgXywgW10sIF8gLT4gKGwxLCBsMilcbiAgICAgIHwgXyA6OiB4cywgXyA6OiB5cywgbiAtPiBsb29wIHhzIHlzIChuIC0gMSlcbiAgICBpblxuICAgIGxvb3AgbDEgbDIgc3RvcF9hZnRlclxuXG4gIGxldCB1bmlvbiB0MSB0MiA9XG4gICAgbGV0IGluaXQsIGwgPSBsb25nZXN0X2ZpcnN0IHQxLnJhbmdlcyB0Mi5yYW5nZXMgfnN0b3BfYWZ0ZXI6NDIgaW5cbiAgICBsZXQgcmFuZ2VzID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjppbnNlcnQgaW5cbiAgICB7XG4gICAgICBtaW5fcG9zID0gbWluX3BvcyB0MS5taW5fcG9zIHQyLm1pbl9wb3M7XG4gICAgICBtYXhfcG9zID0gbWF4X3BvcyB0MS5tYXhfcG9zIHQyLm1heF9wb3M7XG4gICAgICByYW5nZXM7XG4gICAgfVxuXG4gIGxldCBpbnNlcnQgfm5vZGVfbmFtZSBsb2MgdCA9XG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgKFNvbWUgbG9jLmxvY19zdGFydCkgdC5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgKFNvbWUgbG9jLmxvY19lbmQpIHQubWF4X3BvcztcbiAgICAgIHJhbmdlcyA9IGluc2VydCB0LnJhbmdlcyAobm9kZV9uYW1lLCBsb2MpO1xuICAgIH1cblxuICBsZXQgY292ZXJlZF9ieSB0IH5sb2MgPVxuICAgIG1hdGNoICh0Lm1pbl9wb3MsIHQubWF4X3Bvcykgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIG1pbl9wb3MsIFNvbWUgbWF4X3BvcyAtPlxuICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBtaW5fcG9zIGxvYy5sb2Nfc3RhcnQgPj0gMFxuICAgICAgICAmJiBMb2NhdGlvbi5jb21wYXJlX3BvcyBtYXhfcG9zIGxvYy5sb2NfZW5kIDw9IDBcbiAgICB8IF8sIF8gLT5cbiAgICAgICAgKCogdGhlcmUgYXJlIG5vIG9wZW4gcmFuZ2VzICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4gIGxldCBmaW5kX291dHNpZGUgbG9jIHQgPVxuICAgIExpc3QuZmluZCB0LnJhbmdlcyB+ZjooZnVuIChfLCBsKSAtPlxuICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX3N0YXJ0IGwubG9jX3N0YXJ0ID4gMFxuICAgICAgICB8fCBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX2VuZCBsLmxvY19lbmQgPCAwKVxuZW5kXG5cbmxldCByZWxvY19wbXR5X2Z1bmN0b3JzIHggPVxuICBsZXQgb3V0bW9zdF9sb2MgPSB4LnBtdHlfbG9jIGluXG4gIGxldCByZWMgYXV4IHggPVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfZnVuY3RvciAoVW5pdCwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoVW5pdCwgcmVzKSB9XG4gICAgfCBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBvdXRtb3N0X2xvYyByZXMucG10eV9sb2MgPSAwIHRoZW5cbiAgICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gbXR5LnBtdHlfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICBsZXQgcmVzID0geyByZXMgd2l0aCBwbXR5X2xvYyA9IHsgcmVzLnBtdHlfbG9jIHdpdGggbG9jX3N0YXJ0IH0gfSBpblxuICAgICAgICAgIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICAgICAgZWxzZSBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgIHwgXyAtPiB4XG4gIGluXG4gIGF1eCB4XG5cbmxldCByZWxvY19wbW9kX2Z1bmN0b3JzIHggPVxuICBsZXQgb3V0bW9zdF9sb2MgPSB4LnBtb2RfbG9jIGluXG4gIGxldCByZWMgYXV4IHggPVxuICAgIG1hdGNoIHgucG1vZF9kZXNjIHdpdGhcbiAgICB8IFBtb2RfZnVuY3RvciAoVW5pdCwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoVW5pdCwgcmVzKSB9XG4gICAgfCBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBvdXRtb3N0X2xvYyByZXMucG1vZF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gbXR5LnBtdHlfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICBsZXQgcmVzID0geyByZXMgd2l0aCBwbW9kX2xvYyA9IHsgcmVzLnBtb2RfbG9jIHdpdGggbG9jX3N0YXJ0IH0gfSBpblxuICAgICAgICAgIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICAgICAgZWxzZSBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgIHwgXyAtPiB4XG4gIGluXG4gIGF1eCB4XG5cbmxldCBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jID1cbiAgTGlzdC5mb3JfYWxsIH5mOihmdW4gYXR0ciAtPlxuICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgYXR0ci5hdHRyX2xvYy5sb2NfZW5kID49IDApXG5cbmxldCBmaWxlIDogc3RyaW5nIG9wdGlvbiByZWYgPSByZWYgTm9uZVxubGV0IHNhbWVfZmlsZV9zb19mYXIgPSByZWYgdHJ1ZVxuXG5sZXQgc3RheWVkX2luX3RoZV9zYW1lX2ZpbGUgZm5hbWUgPVxuICAoKiBUT0RPOiByZW1vdmUgdXNlcyBvZiBMb2NhdGlvbi5ub25lIGZyb20gdGhlIHBweGVzLiAqKVxuICBpZiBTdHJpbmcuZXF1YWwgZm5hbWUgXCJfbm9uZV9cIiB0aGVuIHRydWUgKCogZG8gbm90aGluZyBmb3Igbm93LiAqKVxuICBlbHNlXG4gICAgbWF0Y2ggIWZpbGUgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBmaWxlIDo9IFNvbWUgZm5hbWU7XG4gICAgICAgIHRydWVcbiAgICB8IFNvbWUgb3JpZ19mbmFtZSAtPlxuICAgICAgICBTdHJpbmcuZXF1YWwgb3JpZ19mbmFtZSBmbmFtZVxuICAgICAgICB8fFxuICAgICAgICAoc2FtZV9maWxlX3NvX2ZhciA6PSBmYWxzZTtcbiAgICAgICAgIGZhbHNlKVxuXG5sZXQgc2hvdWxkX2lnbm9yZSBsb2MgYXR0cnMgPVxuICAoKiBJZiB0aGUgZmlsZW5hbWUgY2hhbmdlZCwgdGhlbiB0aGVyZSB3ZXJlIGxpbmUgZGlyZWN0aXZlcywgYW5kIHRoZSBsb2NhdGlvbnNcbiAgICAgYXJlIGFsbCBtZXNzZWQgdXAuICopXG4gIChub3QgKHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lKSlcbiAgfHwgKCogSWdub3JlIHRoaW5ncyBleHBsaWNpdGx5IG1hcmtlZC4gKilcbiAgTGlzdC5leGlzdHNcbiAgICB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIFN0cmluZy5lcXVhbCBhdHRyLmF0dHJfbmFtZS50eHRcbiAgICAgICAgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUuYXR0cl9uYW1lLnR4dClcbiAgICBhdHRyc1xuXG5sZXQgcmVjIGV4dHJhY3RfY29uc3RyYWludCBlID1cbiAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RyYWludCAoZSwgY3QpIHwgUGV4cF9jb2VyY2UgKGUsIF8sIGN0KSAtPiBTb21lIChlLCBjdClcbiAgfCBQZXhwX25ld3R5cGUgKG5hbWUsIGV4cCkgLT5cbiAgICAgIE9wdGlvbi5tYXAgKGV4dHJhY3RfY29uc3RyYWludCBleHApIH5mOihmdW4gKGV4cCwgY3QpIC0+XG4gICAgICAgICAgKCB7XG4gICAgICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKG5hbWUsIGV4cCk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGN0ICkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBkb19jaGVjayB+bm9kZV9uYW1lIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3MgPVxuICBpZiBub3QgIXNhbWVfZmlsZV9zb19mYXIgdGhlbiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICBlbHNlIGlmIG5vZGVfbG9jLmxvY19naG9zdCB0aGVuXG4gICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudW5pb24gY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuICBlbHNlIGlmIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmNvdmVyZWRfYnkgY2hpbGRyZW5zX2xvY3MgfmxvYzpub2RlX2xvYyB0aGVuXG4gICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWUgbm9kZV9sb2Mgc2libGluZ3NfbG9jc1xuICBlbHNlXG4gICAgbGV0IGNoaWxkX25hbWUsIGNoaWxkX2xvYyA9XG4gICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5maW5kX291dHNpZGUgbm9kZV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICBpblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4OkAgdGhpcyAlcyBpcyBidWlsdCBmcm9tIGElcyB3aG9zZSBsb2NhdGlvbiBpcyBcXFxuICAgICAgIG91dHNpZGUgb2YgdGhpcyBub2RlJ3MuQC5DaGlsZCAlcyBmb3VuZCBhdDpAICVhXCJcbiAgICAgIG5vZGVfbmFtZVxuICAgICAgKChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBjaGlsZF9uYW1lIDAgd2l0aFxuICAgICAgIHwgJ2EnIHwgJ2UnIHwgJ2knIHwgJ28nIHwgJ3UnIC0+IFwibiBcIlxuICAgICAgIHwgXyAtPiBcIiBcIilcbiAgICAgIF4gY2hpbGRfbmFtZSlcbiAgICAgIGNoaWxkX25hbWUgTG9jYXRpb24ucHJpbnQgY2hpbGRfbG9jXG5cbmxldCBlbmZvcmNlX2ludmFyaWFudHMgZm5hbWUgPVxuICBsZXQgKCkgPSBmaWxlIDo9IGZuYW1lIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IFtOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgKCogVE9ETzogd2Ugc2hvdWxkIGdlbmVyYXRlIGEgY2xhc3Mgd2hpY2ggZW5mb3JjZXMgdGhlIGxvY2F0aW9uIGludmFyaWFudC5cbiAgICAgICBBbmQgdGhlbiB3ZSBzaG91bGQgb25seSBvdmVycmlkZSB0aGUgbWV0aG9kcyB3aGVyZSB3ZSBuZWVkIGFuIGVzY2FwZVxuICAgICAgIGhhdGNoIGJlY2F1c2UgdGhlIHBhcnNlciBpc24ndCBkb2luZyB0aGUgcmlnaHQgdGhpbmcuXG5cbiAgICAgICBUaGF0IHdvdWxkIGVuc3VyZSB0aGF0IHdlIHN0YXkgdXAgdG8gZGF0ZSBhcyB0aGUgQVNUIGNoYW5nZXMuICopXG5cbiAgICBtZXRob2QhIGxvbmdpZGVudF9sb2MgeCBzaWJsaW5ncyA9XG4gICAgICBpZiB4LmxvYy5sb2NfZ2hvc3QgdGhlbiBzaWJsaW5nc1xuICAgICAgZWxzZSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5pbnNlcnQgfm5vZGVfbmFtZTpcImlkZW50XCIgeC5sb2Mgc2libGluZ3NcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHJmX2xvYyB4LnByZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNyb3dfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwicm93IGZpZWxkXCIgeC5wcmZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgb2JqZWN0X2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG9mX2xvYyB4LnBvZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI29iamVjdF9maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJvYmplY3QgZmllbGRcIiB4LnBvZl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGJpbmRpbmdfb3AgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2JpbmRpbmdfb3AgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImJpbmRpbmcgb3BlcmF0b3JcIiB4LnBib3BfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmFsX2xvYyB4LnB2YWxfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBkZXNjcmlwdGlvblwiIHgucHZhbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlwZV9sb2MgeC5wdHlwZV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidHlwZSBkZWNsYXJhdGlvblwiIHgucHR5cGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBsZF9sb2MgeC5wbGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNsYWJlbF9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJsYWJlbCBkZWNsYXJhdGlvblwiIHgucGxkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2RfbG9jIHgucGNkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29uc3RydWN0b3IgZGVjbGFyYXRpb25cIiB4LnBjZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXh0X2xvYyB4LnB0eWV4dF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3R5cGVfZXh0ZW5zaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZXh0ZW5zaW9uXCIgeC5wdHlleHRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wZXh0X2xvYyB4LnBleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNleHRlbnNpb25fY29uc3RydWN0b3IgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXh0ZW5zaW9uIGNvbnN0cnVjdG9yXCIgeC5wZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjdHlfbG9jIHgucGN0eV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc190eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGVcIiB4LnBjdHlfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjdGZfbG9jIHgucGN0Zl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX3R5cGVfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgdHlwZSBmaWVsZFwiIHgucGN0Zl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2lfbG9jIHgucGNpX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzc1wiIHgucGNpX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2xfbG9jIHgucGNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2NsYXNzX2V4cHIgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgZXhwcmVzc2lvblwiIHgucGNsX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2ZfbG9jIHgucGNmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgZmllbGRcIiB4LnBjZl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBzaWdfbG9jIFtdIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInNpZ25hdHVyZSBpdGVtXCIgeC5wc2lnX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1kX2xvYyB4LnBtZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZGVjbGFyYXRpb25cIiB4LnBtZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXNfbG9jIHgucG1zX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX3N1YnN0aXR1dGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgc3Vic3RpdHV0aW9uXCIgeC5wbXNfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtdGRfbG9jIHgucG10ZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uXCIgeC5wbXRkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgb3Blbl9pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG9wZW5fbG9jIHgucG9wZW5fYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvcGVuX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib3BlblwiIHgucG9wZW5fbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGluY2xfbG9jIHgucGluY2xfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiaW5jbHVkZVwiIHgucGluY2xfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc3RyX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzdHJ1Y3R1cmUgaXRlbVwiIHgucHN0cl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1iX2xvYyB4LnBtYl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBiaW5kaW5nXCIgeC5wbWJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSAqKVxuICAgICgqIHRoZSB0eXBlIGNvbnN0cmFpbnQgaXMgZHVwbGljYXRlZC4gICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB2Yl9sb2MgeC5wdmJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBtYXRjaCAoeC5wdmJfcGF0LnBwYXRfZGVzYywgZXh0cmFjdF9jb25zdHJhaW50IHgucHZiX2V4cHIpIHdpdGhcbiAgICAgICAgICAoKiBsZXQgeCA6IHR5cGUgYSBiIGMuIGN0ID0gZSAqKVxuICAgICAgICAgIHwgKCBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgICAocHZiX3BhdCwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8gOjogXywgY3RwKTsgXyB9KSxcbiAgICAgICAgICAgICAgU29tZSAocHZiX2V4cHIsIGN0ZSkgKVxuICAgICAgICAgICgqIGxldCB4IDogIGN0ID0gZVxuICAgICAgICAgICAgIGxldCB4IDo+IGN0ID0gZSAqKVxuICAgICAgICAgIHwgKCBQcGF0X2NvbnN0cmFpbnQgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChbXSwgY3RwKTsgXyB9KSxcbiAgICAgICAgICAgICAgU29tZSAocHZiX2V4cHIsIGN0ZSkgKVxuICAgICAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlIGN0cC5wdHlwX2xvYyBjdGUucHR5cF9sb2MgPSAwIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBfYWNjID0gc2VsZiNjb3JlX3R5cGUgY3RwIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHgucHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInZhbHVlIGJpbmRpbmdcIiB4LnB2Yl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSBvZjogKilcbiAgICAoKiAgICAgTVQgW0BhdHRyIHBheWxvYWRdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIHBheWxvYWQgaXMgb3V0c2lkZSB0aGUgICAgKilcbiAgICAoKiBsb2Mgb2YgdGhlIG1vZHVsZSB0eXBlLi4uLiAgICAgICAgICAgICAgICAgKilcbiAgICAoKiBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAgICAgZnVuY3RvciAoQSA6IFMpIChCIDogUykgLi4uICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIFsoQiA6IFMpIC4uLl0gaXMgdGhlIHNhbWUgKilcbiAgICAoKiBhcyB0aGUgbG9jIG9mIHRoZSBvdXRlcm1vc3QgbW9kdWxlIHR5cGUuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXR5X2xvYyB4LnBtdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSByZWxvY19wbXR5X2Z1bmN0b3JzIHggaW5cbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjbW9kdWxlX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlX2Rlc2MgeC5wbXR5X2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHR5cGVcIiB4LnBtdHlfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1FIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgZXhwci4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSBleHByLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1vZF9sb2MgeC5wbW9kX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG1vZF9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV9leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHgucG1vZF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBleHByZXNzaW9uXCIgeC5wbW9kX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogU2FtZSBhcyBhYm92ZSAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlwX2xvYyB4LnB0eXBfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjY29yZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGVfZGVzYyB4LnB0eXBfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjb3JlIHR5cGVcIiB4LnB0eXBfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKilcbiAgICAoKiBBbmQgYWdhaW4gLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4cF9sb2MgeC5wZXhwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2V4cHJlc3Npb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb25fZGVzYyB4LnBleHBfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleHByZXNzaW9uXCIgeC5wZXhwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogLi4uIGFuZCBhZ2FpbiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBwYXRfbG9jIHgucHBhdF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNwYXR0ZXJuIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuX2Rlc2MgeC5wcGF0X2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwicGF0dGVyblwiIHgucHBhdF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiAgKilcbiAgICAoKiB0aGUgY29uc3RydWN0IGVxdWFscyB0aGUgbG9jYXRpb24gb2YgdGhlIHR5cGVfZXhjZXB0aW9uICopXG4gICAgKCogKGFuZCBzbyBjb3ZlcnMgdGhlIGxvY2F0aW9uIG9mIHRoZSBhdHRyaWJ1dGVzKS4gICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlleG5fbG9jIHgucHR5ZXhuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBpbml0ID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgbGV0IGNoaWxkc19sb2NzID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4LnB0eWV4bl9jb25zdHJ1Y3RvciBpbml0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyc19sb2NzID0gc2VsZiNhdHRyaWJ1dGVzIHgucHR5ZXhuX2F0dHJpYnV0ZXMgaW5pdCBpblxuICAgICAgICBpZ25vcmVcbiAgICAgICAgICAoZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBhdHRyc19sb2NzIHNpYmxpbmdzX2xvY3MpO1xuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhjZXB0aW9uXCIgeC5wdHlleG5fbG9jIGNoaWxkc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSAqKVxuICAgICgqIGxocyBpcyBzb21ldGltZXMgaW5jbHVkZWQgaW4gdGhlIHJocy4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFB3aXRoX3R5cGUgKF8sIHRkZWNsKSB8IFB3aXRoX3R5cGVzdWJzdCAoXywgdGRlY2wpIC0+XG4gICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIHRkZWNsIHNpYmxpbmdzX2xvY1xuICAgICAgfCBfIC0+IHN1cGVyI3dpdGhfY29uc3RyYWludCB4IHNpYmxpbmdzX2xvY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBvZjoqKVxuICAgICgqIC0gRm9vLnsgYmFyOyAuLi4gfSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uWyBiYXI7IC4uLiBdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIEZvby4oIGJhcjsgLi4uICkgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gbWV0aG9kIHggOiB0eXBlIGEuIC4uLiA9IC4uLiAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby5AKGJhcikgPC0gYmF6ICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS57YmFyfSA8LSBiYXogICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUuW2Jhcl0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQZXhwX3JlY29yZCAobGFiZWxzLCBleHByX28pIC0+XG4gICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAobGlkLCBlKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnRcbiAgICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgbGlkLmxvYyBlLnBleHBfbG9jID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICgqIHB1bm5pbmcuICopXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiB7IGZvbyA6IGludCB9IGFuZCB7IGZvbyA6IGludCA9IHggfSAuLi4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIE5vIGlkZWEgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGUgYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgICAgICBpblxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBleHByX28gYWNjXG4gICAgICB8IFBleHBfb3BlblxuICAgICAgICAgICgoeyBwb3Blbl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2lkZW50IGxpZDsgXyB9OyBfIH0gYXMgb3BuKSwgZSlcbiAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBlLnBleHBfbG9jLmxvY19zdGFydCA9IDBcbiAgICAgICAgICAgICAmJiBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19lbmQgZS5wZXhwX2xvYy5sb2NfZW5kIDw+IDAgLT5cbiAgICAgICAgICAoKiBsZXQncyByZWxvY2F0ZSAuLi4gKilcbiAgICAgICAgICBsZXQgZV9sb2MgPSB7IGUucGV4cF9sb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsaWQubG9jLmxvY19lbmQgfSBpblxuICAgICAgICAgIHN1cGVyI2V4cHJlc3Npb25fZGVzY1xuICAgICAgICAgICAgKFBleHBfb3BlbiAob3BuLCB7IGUgd2l0aCBwZXhwX2xvYyA9IGVfbG9jIH0pKVxuICAgICAgICAgICAgYWNjXG4gICAgICB8IFBleHBfcG9seSAoZSwgU29tZSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoXywgY3QpOyBfIH0pIC0+IChcbiAgICAgICAgICBtYXRjaCBleHRyYWN0X2NvbnN0cmFpbnQgZSB3aXRoXG4gICAgICAgICAgfCBTb21lIChlLCBjdGUpIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdGUucHR5cF9sb2MgY3QucHR5cF9sb2MgPSAwIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGN0IGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjKVxuICAgICAgfCBQZXhwX2FwcGx5ICh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBsaWQ7IF8gfTsgXyB9LCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggTG9uZ2lkZW50Lmxhc3RfZXhuIGxpZCB3aXRoXG4gICAgICAgICAgfCBpZFxuICAgICAgICAgICAgd2hlbiBTdHJpbmcuaXNfcHJlZml4IGlkIH5wcmVmaXg6XCIuXCJcbiAgICAgICAgICAgICAgICAgJiYgKFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiKCk8LVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiW108LVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9XCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4Olwie308LVwiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xpc3QgKGZ1biAoXywgZSkgLT4gc2VsZiNleHByZXNzaW9uIGUpIGFyZ3MgYWNjXG4gICAgICAgICAgfCBleGNlcHRpb24gXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6ICAgICAgICAgICAgICopXG4gICAgKCogLSBwdW5uaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSByZWNvcmQgZmllbGQgd2l0aCB0eXBlIGNvbnN0cmFpbnQuICAgICAgICAgICAgICAgICopXG4gICAgKCogLSB1bnBhY2sgbG9jYXRpb25zIGJlaW5nIGluY29ycmVjdCB3aGVuIGNvbnN0cmFpbmVkICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHBhdF9yZWNvcmQgKGxhYmVscywgXykgLT5cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGxpZCwgcGF0KSBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBwYXQucHBhdF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgPSAwXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgcGF0LnBwYXRfbG9jID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAoKiBzaW1wbGUgcHVubmluZyEgKilcbiAgICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RyYWludCAocCwgYykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKiB7IGZvbyA6IGludCB9IGFuZCB7IGZvbyA6IGludCA9IHggfSAuLi4gKilcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHAgYWNjXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gcGF0IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwYXQgYWNjIGluXG4gICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgbGFiZWxzIGFjY1xuICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHsgcHBhdF9kZXNjID0gUHBhdF91bnBhY2sgYTsgXyB9LCBiKSAtPlxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogZmFrZSBzdHJ1Y3R1cmUgZm9yIGEgZ2VuZXJhdGl2ZSBhcmd1bWVudCBjb3ZlcnMgdGhlICAgICAqKVxuICAgICgqIGxvY2F0aW9uIG9mIHRoZSBmdW5jdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtb2RfYXBwbHkgKG0sIHsgcG1vZF9kZXNjID0gUG1vZF9zdHJ1Y3R1cmUgW107IHBtb2RfbG9jOyBfIH0pXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbS5wbW9kX2xvYy5sb2Nfc3RhcnQgcG1vZF9sb2MubG9jX3N0YXJ0ID0gMCAtPlxuICAgICAgICAgIHN1cGVyI21vZHVsZV9leHByIG0gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjbW9kdWxlX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgKilcbiAgICAoKiBvcGVuX2luZm9zIGZvciBQY2xfb3BlbiBvbmx5IGNvdmVycyB0aGUgXCJvcGVuXCIga2V5d29yZCAgKilcbiAgICAoKiBhbmQgbm90IHRoZSBtb2R1bGUgb3BlbmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjbF9vcGVuIChvZCwgY2UpIC0+XG4gICAgICAgICAgKCogaW5saW5lIG9mIG9wZW5fZGVzY3JpcHRpb24gKHdoaWNoIGVmZmVjdGl2ZWx5IG1ha2VzIHRoYXQgbm9kZVxuICAgICAgICAgICAgIGRpc2FwcGVhcikgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBvZC5wb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBvZC5wb3Blbl9sb2MgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBvZC5wb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICgqIGNvbnRpbnVlICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjZSBhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNjbGFzc19leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogU2FtZSBhcyBhYm92ZSAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdHlfb3BlbiAob2QsIGN0KSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgY3QgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfdHlwZV9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBkb2NzdHJpbmdzIGhhdmUgICAgKilcbiAgICAoKiB0aGUgc2FtZSBsb2NhdGlvbiBhcyB0aGUgaXRlbSB0aGV5IGdldCBhdHRhY2hlZCB0by4gICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHggYWNjID1cbiAgICAgIG1hdGNoIHguYXR0cl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFwib2NhbWwuZG9jXCIgfCBcIm9jYW1sLnRleHRcIiAtPiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNhdHRyaWJ1dGUgeCBhY2NcbiAgZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuIEltcG9ydFxub3BlbiBVdGlsc1xub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBBcmcgPSBTdGRsaWIuQXJnXG5cbmxldCBleGVfbmFtZSA9IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSBTdGRsaWIuU3lzLmV4ZWN1dGFibGVfbmFtZVxubGV0IGFyZ3MgPSByZWYgW11cbmxldCBhZGRfYXJnIGtleSBzcGVjIH5kb2MgPSBhcmdzIDo9IChrZXksIHNwZWMsIGRvYykgOjogIWFyZ3NcbmxldCBsb2NfZm5hbWUgPSByZWYgTm9uZVxubGV0IHBlcmZvcm1fY2hlY2tzID0gcmVmIE9wdGlvbnMucGVyZm9ybV9jaGVja3NcbmxldCBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zID0gcmVmIE9wdGlvbnMucGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9uc1xubGV0IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrID0gcmVmIE9wdGlvbnMucGVyZm9ybV9sb2NhdGlvbnNfY2hlY2tcbmxldCBkZWJ1Z19hdHRyaWJ1dGVfZHJvcCA9IHJlZiBmYWxzZVxubGV0IGFwcGx5X2xpc3QgPSByZWYgTm9uZVxubGV0IHByZXByb2Nlc3NvciA9IHJlZiBOb25lXG5sZXQgbm9fbWVyZ2UgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3Bhc3NlcyA9IHJlZiBmYWxzZVxubGV0IHJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zID0gcmVmIGZhbHNlXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBkaWZmX2NvbW1hbmQgPSByZWYgT3B0aW9ucy5kaWZmX2NvbW1hbmRcbmxldCBwcmV0dHkgPSByZWYgZmFsc2VcbmxldCBzdHlsZXIgPSByZWYgTm9uZVxubGV0IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA9IHJlZiBOb25lXG5sZXQgY29ycmVjdGVkX3N1ZmZpeCA9IHJlZiBcIi5wcHgtY29ycmVjdGVkXCJcblxubGV0IGdob3N0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwXG4gICAgbWV0aG9kISBsb2NhdGlvbiBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfVxuICBlbmRcblxubGV0IGNob3BfcHJlZml4IH5wcmVmaXggeCA9XG4gIGlmIFN0cmluZy5pc19wcmVmaXggfnByZWZpeCB4IHRoZW5cbiAgICBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggeCAoU3RyaW5nLmxlbmd0aCBwcmVmaXgpKVxuICBlbHNlIE5vbmVcblxubGV0IGdldF9kZWZhdWx0X3BhdGggKGxvYyA6IExvY2F0aW9uLnQpID1cbiAgbGV0IGZuYW1lID0gbG9jLmxvY19zdGFydC5wb3NfZm5hbWUgaW5cbiAgbWF0Y2ggY2hvcF9wcmVmaXggfnByZWZpeDpcIi4vXCIgZm5hbWUgd2l0aFxuICB8IFNvbWUgZm5hbWUgLT4gZm5hbWVcbiAgfCBOb25lIC0+IGZuYW1lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoX3N0ciA6IHN0cnVjdHVyZSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFtdIC0+IFwiXCJcbiAgfCB7IHBzdHJfbG9jID0gbG9jOyBfIH0gOjogXyAtPiBnZXRfZGVmYXVsdF9wYXRoIGxvY1xuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zaWcgOiBzaWduYXR1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc2lnX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubW9kdWxlIExpbnRfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTG9jYXRpb24udCAqIHN0cmluZ1xuXG4gIGxldCBvZl9zdHJpbmcgbG9jIHMgPSAobG9jLCBzKVxuZW5kXG5cbm1vZHVsZSBDb29raWVzID0gc3RydWN0XG4gIHR5cGUgdCA9IFRcblxuICBsZXQgZ2l2ZW5fdGhyb3VnaF9jbGkgPSByZWYgW11cblxuICBsZXQgZ2V0IFQgbmFtZSBwYXR0ZXJuID1cbiAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgIGxldCBlID0gU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIEV4cHJlc3Npb24gZSBpblxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZSBwYXR0ZXJuIGUucGV4cF9sb2MgZSBGbi5pZClcblxuICBsZXQgZ2V0X3JlcyBUIG5hbWUgcGF0dGVybiA9XG4gICAgbWF0Y2hcbiAgICAgIE9wdGlvbi5tYXAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZ2V0X2Nvb2tpZSBuYW1lKSB+ZjooZnVuIGUgLT5cbiAgICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lIChPayBlKSAtPiBPayAoU29tZSBlKVxuICAgIHwgU29tZSAoRXJyb3IgZSkgLT4gRXJyb3IgZVxuXG4gIGxldCBzZXQgVCBuYW1lIGV4cHIgPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuc2V0X2Nvb2tpZSBuYW1lIChTZWxlY3RlZF9hc3QudG9fb2NhbWwgRXhwcmVzc2lvbiBleHByKVxuXG4gIGxldCBoYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX2hhbmRsZXIgZiA9IGhhbmRsZXJzIDo9ICFoYW5kbGVycyBAIFsgZiBdXG5cbiAgbGV0IGFkZF9zaW1wbGVfaGFuZGxlciBuYW1lIHBhdHRlcm4gfmYgPVxuICAgIGFkZF9oYW5kbGVyIChmdW4gVCAtPiBmIChnZXQgVCBuYW1lIHBhdHRlcm4pKVxuXG4gIGxldCBhY2tub3dsZWRnZV9jb29raWVzIFQgPSBMaXN0Lml0ZXIgIWhhbmRsZXJzIH5mOihmdW4gZiAtPiBmIFQpXG4gIGxldCBwb3N0X2hhbmRsZXJzID0gcmVmIFtdXG4gIGxldCBhZGRfcG9zdF9oYW5kbGVyIGYgPSBwb3N0X2hhbmRsZXJzIDo9ICFwb3N0X2hhbmRsZXJzIEAgWyBmIF1cbiAgbGV0IGNhbGxfcG9zdF9oYW5kbGVycyBUID0gTGlzdC5pdGVyICFwb3N0X2hhbmRsZXJzIH5mOihmdW4gZiAtPiBmIFQpXG5lbmRcblxubW9kdWxlIEluc3RydW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBCZWZvcmUgfCBBZnRlclxuXG4gIHR5cGUgdCA9IHtcbiAgICB0cmFuc2Zvcm1hdGlvbiA6XG4gICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudDtcbiAgICBwb3NpdGlvbiA6IHBvcztcbiAgfVxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGxldCBtYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvbiA9XG4gICAgICBsZXQgdHJhbnNmb3JtYXRpb24gY3R4IHN0ID0gcmV0dXJuICh0cmFuc2Zvcm1hdGlvbiBjdHggc3QpIGluXG4gICAgICB7IHRyYW5zZm9ybWF0aW9uOyBwb3NpdGlvbiB9XG4gIGVuZFxuXG4gIGxldCBtYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvbiA9XG4gICAgbGV0IHRyYW5zZm9ybWF0aW9uIF8gc3QgPSB0cmFuc2Zvcm1hdGlvbiBzdCBpblxuICAgIFYyLm1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uXG5lbmRcblxubW9kdWxlIFRyYW5zZm9ybSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBhbGlhc2VzIDogc3RyaW5nIGxpc3Q7XG4gICAgaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBsaW50X2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+IExpbnRfZXJyb3IudCBsaXN0KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgcHJlcHJvY2Vzc19pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgKiBQYXJzZXRyZWUuc3RydWN0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGVuY2xvc2VfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBMb2NhdGlvbi50IG9wdGlvbiAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAqIFBhcnNldHJlZS5zaWduYXR1cmUpXG4gICAgICBvcHRpb247XG4gICAgaW5zdHJ1bWVudCA6IEluc3RydW1lbnQudCBvcHRpb247XG4gICAgcnVsZXMgOiBDb250ZXh0X2ZyZWUuUnVsZS50IGxpc3Q7XG4gICAgcmVnaXN0ZXJlZF9hdCA6IENhbGxlcl9pZC50O1xuICB9XG5cbiAgbGV0IGhhc19uYW1lIHQgbmFtZSA9XG4gICAgU3RyaW5nLmVxdWFsIG5hbWUgdC5uYW1lIHx8IExpc3QuZXhpc3RzIH5mOihTdHJpbmcuZXF1YWwgbmFtZSkgdC5hbGlhc2VzXG5cbiAgbGV0IGFsbCA6IHQgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgcHJpbnRfY2FsbGVyX2lkIG9jIChjYWxsZXJfaWQgOiBDYWxsZXJfaWQudCkgPVxuICAgIG1hdGNoIGNhbGxlcl9pZCB3aXRoXG4gICAgfCBOb25lIC0+IG91dHB1dF9zdHJpbmcgb2MgXCI8dW5rbm93biBsb2NhdGlvbj5cIlxuICAgIHwgU29tZSBsb2MgLT4gUHJpbnRmLmZwcmludGYgb2MgXCIlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcblxuICBsZXQgcmVnaXN0ZXIgPyhleHRlbnNpb25zID0gW10pID8ocnVsZXMgPSBbXSkgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmXG4gICAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG4gICAgICA/aW5zdHJ1bWVudCA/KGFsaWFzZXMgPSBbXSkgbmFtZSA9XG4gICAgbGV0IHJ1bGVzID0gTGlzdC5tYXAgZXh0ZW5zaW9ucyB+ZjpDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gQCBydWxlcyBpblxuICAgIGxldCBjYWxsZXJfaWQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOlsgU3RkbGliLl9fRklMRV9fIF0gaW5cbiAgICAobWF0Y2ggTGlzdC5maWx0ZXIgIWFsbCB+ZjooZnVuIGN0IC0+IGhhc19uYW1lIGN0IG5hbWUpIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBjdCA6OiBfIC0+XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiV2FybmluZzogY29kZSB0cmFuc2Zvcm1hdGlvbiAlcyByZWdpc3RlcmVkIHR3aWNlLlxcblwiXG4gICAgICAgICAgbmFtZTtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gZmlyc3QgdGltZSB3YXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWRcbiAgICAgICAgICBjdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICBQcmludGYuZXByaW50ZiBcIiAgLSBzZWNvbmQgdGltZSBpcyBhdCAlYVxcblwiIHByaW50X2NhbGxlcl9pZCBjYWxsZXJfaWQpO1xuICAgIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSkgaW5cbiAgICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW1wbCA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgcHJlcHJvY2Vzc19pbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSlcbiAgICBpblxuICAgIGxldCBjdCA9XG4gICAgICB7XG4gICAgICAgIG5hbWU7XG4gICAgICAgIGFsaWFzZXM7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICBlbmNsb3NlX2ltcGw7XG4gICAgICAgIGVuY2xvc2VfaW50ZjtcbiAgICAgICAgaW1wbDtcbiAgICAgICAgaW50ZjtcbiAgICAgICAgbGludF9pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ltcGw7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgbGludF9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50O1xuICAgICAgICByZWdpc3RlcmVkX2F0ID0gY2FsbGVyX2lkO1xuICAgICAgfVxuICAgIGluXG4gICAgYWxsIDo9IGN0IDo6ICFhbGxcblxuICBsZXQgcmVjIGxhc3QgcHJldiBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHByZXYgfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxuICBsZXQgbG9jX29mX2xpc3QgfmdldF9sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGZpcnN0IDogTG9jYXRpb24udCA9IGdldF9sb2MgeCBpblxuICAgICAgICBsZXQgbGFzdCA9IGdldF9sb2MgKGxhc3QgeCBsKSBpblxuICAgICAgICBTb21lIHsgZmlyc3Qgd2l0aCBsb2NfZW5kID0gbGFzdC5sb2NfZW5kIH1cblxuICBsZXQgbWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgdCB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgfnRvb2xfbmFtZSB+aW5wdXRfbmFtZSA9XG4gICAgbGV0IHsgcnVsZXM7IGVuY2xvc2VfaW1wbDsgZW5jbG9zZV9pbnRmOyBpbXBsOyBpbnRmOyBfIH0gPSB0IGluXG4gICAgbGV0IG1hcCA9XG4gICAgICBuZXcgQ29udGV4dF9mcmVlLm1hcF90b3BfZG93blxuICAgICAgICBydWxlcyB+ZW1iZWRfZXJyb3JzIH5nZW5lcmF0ZWRfY29kZV9ob29rOmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgaW5cbiAgICBsZXQgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIGNvbnRleHQgd2hvbGVfbG9jIGYgPVxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID0gZiB3aG9sZV9sb2MgaW5cbiAgICAgIChtYXRjaCB3aG9sZV9sb2Mgd2l0aFxuICAgICAgfCBTb21lIChsb2MgOiBMb2NhdGlvbi50KSAtPiAoXG4gICAgICAgICAgbGV0IGxvY19oZWFkZXIgPSB7IGxvYyB3aXRoIGxvY19lbmQgPSBsb2MubG9jX3N0YXJ0IH0gaW5cbiAgICAgICAgICBsZXQgbG9jX2Zvb3RlciA9IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSBpblxuICAgICAgICAgIChtYXRjaCBoZWFkZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gaG9vay5mIGNvbnRleHQgbG9jX2hlYWRlciAoTWFueSBoZWFkZXIpKTtcbiAgICAgICAgICBtYXRjaCBmb290ZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gaG9vay5mIGNvbnRleHQgbG9jX2Zvb3RlciAoTWFueSBmb290ZXIpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBoZWFkZXIgQCBmb290ZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGhvb2suZiBjb250ZXh0IGxvYyAoTWFueSBsKSkpO1xuICAgICAgKGhlYWRlciwgZm9vdGVyKVxuICAgIGluXG4gICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgbWF0Y2ggaW5wdXRfbmFtZSB3aXRoIFNvbWUgaW5wdXRfbmFtZSAtPiBpbnB1dF9uYW1lIHwgTm9uZSAtPiBcIl9ub25lX1wiXG4gICAgaW5cbiAgICBsZXQgbWFwX2ltcGwgY3R4dCBzdF93aXRoX2F0dHJzID1cbiAgICAgIGxldCBhdHRycywgc3QgPVxuICAgICAgICBMaXN0LnNwbGl0X3doaWxlIHN0X3dpdGhfYXR0cnMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBzdHJfZGVzYyA9IFBzdHJfYXR0cmlidXRlIF87IF8gfSAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3N0ciBzdCBpblxuICAgICAgbGV0IGJhc2VfY3R4dCA9XG4gICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgaW5cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9XG4gICAgICAgIG1hdGNoIGVuY2xvc2VfaW1wbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoW10sIFtdKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IHdob2xlX2xvYyA9XG4gICAgICAgICAgICAgIGxvY19vZl9saXN0IHN0IH5nZXRfbG9jOihmdW4gc3QgLT4gc3QuUGFyc2V0cmVlLnBzdHJfbG9jKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBTdHJ1Y3R1cmVfaXRlbSB3aG9sZV9sb2MgKGYgYmFzZV9jdHh0KVxuICAgICAgaW5cbiAgICAgIG1hcCNzdHJ1Y3R1cmUgYmFzZV9jdHh0IChMaXN0LmNvbmNhdCBbIGF0dHJzOyBoZWFkZXI7IHN0OyBmb290ZXIgXSlcbiAgICAgID4+PSBmdW4gc3QgLT4gbWF0Y2ggaW1wbCB3aXRoIE5vbmUgLT4gcmV0dXJuIHN0IHwgU29tZSBmIC0+IGYgY3R4dCBzdFxuICAgIGluXG4gICAgbGV0IG1hcF9pbnRmIGN0eHQgc2dfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHNnID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzZ193aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc2lnX2Rlc2MgPSBQc2lnX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zaWcgc2cgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ludGYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzZyB+Z2V0X2xvYzooZnVuIHNnIC0+IHNnLlBhcnNldHJlZS5wc2lnX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU2lnbmF0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc2lnbmF0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzZzsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHNnIC0+IG1hdGNoIGludGYgd2l0aCBOb25lIC0+IHJldHVybiBzZyB8IFNvbWUgZiAtPiBmIGN0eHQgc2dcbiAgICBpblxuICAgIHsgdCB3aXRoIGltcGwgPSBTb21lIG1hcF9pbXBsOyBpbnRmID0gU29tZSBtYXBfaW50ZiB9XG5cbiAgbGV0IGJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+aG9vayB+cnVsZXMgfmVuY2xvc2VfaW1wbCB+ZW5jbG9zZV9pbnRmXG4gICAgICB+aW5wdXRfbmFtZSA9XG4gICAgbWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgfmhvb2sgfmlucHV0X25hbWVcbiAgICAgIHtcbiAgICAgICAgbmFtZSA9IFwiPGJ1aWx0aW46Y29udGV4dC1mcmVlPlwiO1xuICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgIGltcGwgPSBOb25lO1xuICAgICAgICBpbnRmID0gTm9uZTtcbiAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICBydWxlcztcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IENhbGxlcl9pZC5nZXQgfnNraXA6W107XG4gICAgICB9XG5cbiAgbGV0IHBhcnRpdGlvbl90cmFuc2Zvcm1hdGlvbnMgdHMgPVxuICAgIGxldCBiZWZvcmVfaW5zdHJzLCBhZnRlcl9pbnN0cnMsIHJlc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgdHMgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKGJlZl9pLCBhZnRfaSwgcmVzdCkgdCAtPlxuICAgICAgICAgIGxldCByZWR1Y2VkX3QgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0IHdpdGhcbiAgICAgICAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmIGluc3RyID1cbiAgICAgICAgICAgIChpbnN0ci5JbnN0cnVtZW50LnBvc2l0aW9uLCBpbnN0ci5JbnN0cnVtZW50LnRyYW5zZm9ybWF0aW9uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggT3B0aW9uLm1hcCB0Lmluc3RydW1lbnQgfmYgd2l0aFxuICAgICAgICAgIHwgU29tZSAoQmVmb3JlLCB0cmFuc2YpIC0+XG4gICAgICAgICAgICAgICggeyByZWR1Y2VkX3Qgd2l0aCBpbXBsID0gU29tZSB0cmFuc2Y7IHJ1bGVzID0gW10gfSA6OiBiZWZfaSxcbiAgICAgICAgICAgICAgICBhZnRfaSxcbiAgICAgICAgICAgICAgICByZWR1Y2VkX3QgOjogcmVzdCApXG4gICAgICAgICAgfCBTb21lIChBZnRlciwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIGJlZl9pLFxuICAgICAgICAgICAgICAgIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgTm9uZSAtPiAoYmVmX2ksIGFmdF9pLCByZWR1Y2VkX3QgOjogcmVzdCkpXG4gICAgaW5cbiAgICAoIGBMaW50ZXJzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgdC5saW50X2ltcGwgfHwgT3B0aW9uLmlzX3NvbWUgdC5saW50X2ludGYgdGhlblxuICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiPGxpbnQ6JXM+XCIgdC5uYW1lO1xuICAgICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSB0LmxpbnRfaW1wbDtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ludGYgPSB0LmxpbnRfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IHQucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgTm9uZSkpLFxuICAgICAgYFByZXByb2Nlc3NcbiAgICAgICAgKExpc3QuZmlsdGVyX21hcCB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgT3B0aW9uLmlzX3NvbWUgdC5wcmVwcm9jZXNzX2ltcGxcbiAgICAgICAgICAgICAgIHx8IE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbnRmXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiPHByZXByb2Nlc3M6JXM+XCIgdC5uYW1lO1xuICAgICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBpbXBsID0gdC5wcmVwcm9jZXNzX2ltcGw7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IHQucHJlcHJvY2Vzc19pbnRmO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IHQucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgTm9uZSkpLFxuICAgICAgYEJlZm9yZV9pbnN0cnMgYmVmb3JlX2luc3RycyxcbiAgICAgIGBBZnRlcl9pbnN0cnMgYWZ0ZXJfaW5zdHJzLFxuICAgICAgYFJlc3QgcmVzdCApXG5lbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIGxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA9IFRyYW5zZm9ybS5yZWdpc3RlclxuXG4gIGxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZiA/YWxpYXNlcyBuYW1lXG4gICAgICA9XG4gICAgbGV0IGltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBpbXBsIH5mOihQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbF9tYXBwZXIgU3RydWN0dXJlKVxuICAgIGluXG4gICAgbGV0IGludGYgPVxuICAgICAgT3B0aW9uLm1hcCBpbnRmIH5mOihQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbF9tYXBwZXIgU2lnbmF0dXJlKVxuICAgIGluXG4gICAgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuZW5kXG5cbmxldCBhZGRfY3R4dF9hcmcgKGYgOiAnYSAtPiAnYikgOiBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gJ2IgPVxuIGZ1biBfIHggLT4gZiB4XG5cbmxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/ZXh0ZW5zaW9ucyA/cnVsZXMgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmID9pbXBsXG4gICAgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZiA9XG4gIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW1wbCA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgcHJlcHJvY2Vzc19pbnRmID0gT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ltcGwgPSBPcHRpb24ubWFwIGxpbnRfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGxpbnRfaW50ZiA9IE9wdGlvbi5tYXAgbGludF9pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbXBsID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBlbmNsb3NlX2ludGYgPSBPcHRpb24ubWFwIGVuY2xvc2VfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgVjIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgID9pbXBsID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGZcblxubGV0IHJlZ2lzdGVyX2NvZGVfdHJhbnNmb3JtYXRpb24gfm5hbWUgPyhhbGlhc2VzID0gW10pIH5pbXBsIH5pbnRmID1cbiAgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gbmFtZSB+aW1wbCB+aW50ZiB+YWxpYXNlc1xuW0BAd2FybmluZyBcIi0xNlwiXVxuKCogVGhpcyBmdW5jdGlvbiB0cmlnZ2VycyBhIHdhcm5pbmcgMTYgYXMgb2Ygb2NhbWwgNC4xMiAqKVxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmXG5cbmxldCBkZWJ1Z19kcm9wcGVkX2F0dHJpYnV0ZSBuYW1lIH5vbGRfZHJvcHBlZCB+bmV3X2Ryb3BwZWQgPVxuICBsZXQgcHJpbnRfZGlmZiB3aGF0IGEgYiA9XG4gICAgbGV0IGRpZmYgPVxuICAgICAgTGlzdC5maWx0ZXIgYSB+ZjooZnVuIChuYW1lIDogXyBMb2MudCkgLT5cbiAgICAgICAgICBub3RcbiAgICAgICAgICAgIChMaXN0LmV4aXN0cyBiIH5mOihmdW4gKG5hbWUnIDogXyBMb2NhdGlvbi5sb2MpIC0+XG4gICAgICAgICAgICAgICAgIG5hbWUudHh0ID09IG5hbWUnLnR4dCkpKVxuICAgIGluXG4gICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IGRpZmYpIHRoZW4gKFxuICAgICAgUHJpbnRmLmVwcmludGYgXCJUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgJXMgYWZ0ZXIgYXBwbHlpbmcgJXM6XFxuXCIgd2hhdFxuICAgICAgICBuYW1lO1xuICAgICAgTGlzdC5pdGVyIGRpZmYgfmY6KGZ1biB7IExvY2F0aW9uLnR4dDsgbG9jIH0gLT5cbiAgICAgICAgICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCItICVhOiAlc1xcblwiIExvY2F0aW9uLnByaW50IGxvYyB0eHQpO1xuICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiQC5cIilcbiAgaW5cbiAgcHJpbnRfZGlmZiBcImRpc2FwcGVhcmVkXCIgbmV3X2Ryb3BwZWQgb2xkX2Ryb3BwZWQ7XG4gIHByaW50X2RpZmYgXCJyZWFwcGVhcmVkXCIgb2xkX2Ryb3BwZWQgbmV3X2Ryb3BwZWRcblxubGV0IGdldF93aG9sZV9hc3RfcGFzc2VzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH50b29sX25hbWVcbiAgICB+aW5wdXRfbmFtZSA9XG4gIGxldCBjdHMgPVxuICAgIG1hdGNoICFhcHBseV9saXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5yZXYgIVRyYW5zZm9ybS5hbGxcbiAgICB8IFNvbWUgbmFtZXMgLT5cbiAgICAgICAgTGlzdC5tYXAgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICAgICAgICBMaXN0LmZpbmQgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm0uaGFzX25hbWUgY3QgbmFtZSkpXG4gIGluXG4gIGxldCAoIGBMaW50ZXJzIGxpbnRlcnMsXG4gICAgICAgIGBQcmVwcm9jZXNzIHByZXByb2Nlc3MsXG4gICAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICAgIGBBZnRlcl9pbnN0cnMgYWZ0ZXJfaW5zdHJzLFxuICAgICAgICBgUmVzdCBjdHMgKSA9XG4gICAgVHJhbnNmb3JtLnBhcnRpdGlvbl90cmFuc2Zvcm1hdGlvbnMgY3RzXG4gIGluXG4gICgqIEFsbG93IG9ubHkgb25lIHByZXByb2Nlc3NvciB0byBhc3N1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlciAqKVxuICAoaWYgTGlzdC5sZW5ndGggcHJlcHJvY2VzcyA+IDEgdGhlblxuICAgICBsZXQgcHAgPVxuICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QubWFwIHByZXByb2Nlc3MgfmY6KGZ1biB0IC0+IHQubmFtZSkpXG4gICAgIGluXG4gICAgIGxldCBlcnIgPVxuICAgICAgIFByaW50Zi5zcHJpbnRmIFwiQXQgbW9zdCBvbmUgcHJlcHJvY2Vzc29yIGlzIGFsbG93ZWQsIHdoaWxlIGdvdDogJXNcIiBwcFxuICAgICBpblxuICAgICBmYWlsd2l0aCBlcnIpO1xuICBsZXQgbWFrZV9nZW5lcmljIHRyYW5zZm9ybXMgPVxuICAgIGlmICFub19tZXJnZSB0aGVuXG4gICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zXG4gICAgICAgIH5mOlxuICAgICAgICAgIChUcmFuc2Zvcm0ubWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgfmVtYmVkX2Vycm9ycyB+aG9vayB+dG9vbF9uYW1lXG4gICAgICAgICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lKVxuICAgIGVsc2VcbiAgICAgIChsZXQgZ2V0X2VuY2xvc2VycyB+ZiA9XG4gICAgICAgICBMaXN0LmZpbHRlcl9tYXAgdHJhbnNmb3JtcyB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIGYgY3Qgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoY3QubmFtZSwgeCkpXG4gICAgICAgICAoKiBTb3J0IHRoZW0gdG8gZW5zdXJlIGRldGVybWluaXN0aWMgb3JkZXJpbmcgKilcbiAgICAgICAgIHw+IExpc3Quc29ydCB+Y21wOihmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpXG4gICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgICBpblxuXG4gICAgICAgbGV0IHJ1bGVzID1cbiAgICAgICAgIExpc3QubWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QucnVsZXMpXG4gICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgIGFuZCBpbXBsX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ltcGwpXG4gICAgICAgYW5kIGludGZfZW5jbG9zZXJzID0gZ2V0X2VuY2xvc2VycyB+ZjooZnVuIGN0IC0+IGN0LmVuY2xvc2VfaW50ZikgaW5cbiAgICAgICBtYXRjaCAocnVsZXMsIGltcGxfZW5jbG9zZXJzLCBpbnRmX2VuY2xvc2Vycykgd2l0aFxuICAgICAgIHwgW10sIFtdLCBbXSAtPiB0cmFuc2Zvcm1zXG4gICAgICAgfCBfIC0+XG4gICAgICAgICAgIGxldCBtZXJnZV9lbmNsb3NlciA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgfCBlbmNsb3NlcnMgLT5cbiAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgIChmdW4gY3R4dCBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzLCBmb290ZXJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgZW5jbG9zZXJzIH5mOihmdW4gZiAtPiBmIGN0eHQgbG9jKSB8PiBMaXN0LnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMgPSBMaXN0LmNvbmNhdCBoZWFkZXJzIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgZm9vdGVycyA9IExpc3QuY29uY2F0IChMaXN0LnJldiBmb290ZXJzKSBpblxuICAgICAgICAgICAgICAgICAgICAgKGhlYWRlcnMsIGZvb3RlcnMpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBUcmFuc2Zvcm0uYnVpbHRpbl9vZl9jb250ZXh0X2ZyZWVfcmV3cml0ZXJzIH5ydWxlcyB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgICAgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICAgfmVuY2xvc2VfaW1wbDoobWVyZ2VfZW5jbG9zZXIgaW1wbF9lbmNsb3NlcnMpXG4gICAgICAgICAgICAgfmVuY2xvc2VfaW50ZjoobWVyZ2VfZW5jbG9zZXIgaW50Zl9lbmNsb3NlcnMpXG4gICAgICAgICAgICAgfnRvb2xfbmFtZSB+aW5wdXRfbmFtZVxuICAgICAgICAgICA6OiB0cmFuc2Zvcm1zKVxuICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCAoY3QuaW1wbCwgY3QuaW50Zikgd2l0aCBOb25lLCBOb25lIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICBpblxuICBsaW50ZXJzIEAgcHJlcHJvY2VzcyBAIGJlZm9yZV9pbnN0cnMgQCBtYWtlX2dlbmVyaWMgY3RzIEAgYWZ0ZXJfaW5zdHJzXG5cbmxldCBhcHBseV90cmFuc2Zvcm1zIH50b29sX25hbWUgfmZpbGVfcGF0aCB+ZmllbGQgfmxpbnRfZmllbGQgfmRyb3BwZWRfc29fZmFyXG4gICAgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnMgYXN0ID1cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfnRvb2xfbmFtZSB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgfmlucHV0X25hbWVcbiAgaW5cbiAgbGV0IGZpbmlzaCAoYXN0LCBfZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycykgPVxuICAgICggYXN0LFxuICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnMgfmY6KGZ1biAobG9jLCBzKSAtPlxuICAgICAgICAgIENvbW1vbi5hdHRyaWJ1dGVfb2Zfd2FybmluZyBsb2MgcyksXG4gICAgICBlcnJvcnMgKVxuICBpblxuICBsZXQgYWNjID1cbiAgICBMaXN0LmZvbGRfbGVmdCBjdHMgfmluaXQ6KGFzdCwgW10sIFtdLCBbXSlcbiAgICAgIH5mOihmdW5cbiAgICAgICAgICAoYXN0LCBkcm9wcGVkLCAobGludF9lcnJvcnMgOiBfIGxpc3QpLCBlcnJvcnMpIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICBsZXQgaW5wdXRfbmFtZSA9XG4gICAgICAgICAgbWF0Y2ggaW5wdXRfbmFtZSB3aXRoXG4gICAgICAgICAgfCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiBcIl9ub25lX1wiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgICAgICAgbWF0Y2ggbGludF9maWVsZCBjdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IChsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IChsaW50X2Vycm9ycyBAIGYgY3R4dCBhc3QsIGVycm9ycylcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAobGludF9lcnJvcnMsIGV4bl90b19sb2NfZXJyb3IgZXhuIDo6IGVycm9ycykpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGZpZWxkIGN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgKGFzdCwgbW9yZV9lcnJvcnMpLCBlcnJvcnMgPVxuICAgICAgICAgICAgICB0cnkgKGYgY3R4dCBhc3QsIGVycm9ycylcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAoKGFzdCwgW10pLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGRyb3BwZWQgPVxuICAgICAgICAgICAgICBpZiAhZGVidWdfYXR0cmlidXRlX2Ryb3AgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IG5ld19kcm9wcGVkID0gZHJvcHBlZF9zb19mYXIgYXN0IGluXG4gICAgICAgICAgICAgICAgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgY3QubmFtZSB+b2xkX2Ryb3BwZWQ6ZHJvcHBlZFxuICAgICAgICAgICAgICAgICAgfm5ld19kcm9wcGVkO1xuICAgICAgICAgICAgICAgIG5ld19kcm9wcGVkKVxuICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKGFzdCwgZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycyBAIG1vcmVfZXJyb3JzKSlcbiAgaW5cbiAgZmluaXNoIGFjY1xuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fc3RyX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5cbmxldCBlcnJvcl90b19zaWdfZXh0ZW5zaW9uIGVycm9yID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IGV4dCA9IExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvciBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0IFtdXG5cbigqJCopXG5cbmxldCBlcnJvcl90b19leHRlbnNpb24gZXJyb3IgfihraW5kIDogS2luZC50KSA9XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IEludGYgLT4gSW50Zl9vcl9pbXBsLkludGYgWyBlcnJvcl90b19zaWdfZXh0ZW5zaW9uIGVycm9yIF1cbiAgfCBJbXBsIC0+IEludGZfb3JfaW1wbC5JbXBsIFsgZXJyb3JfdG9fc3RyX2V4dGVuc2lvbiBlcnJvciBdXG5cbmxldCBleG5fdG9fZXh0ZW5zaW9uIGV4biB+KGtpbmQgOiBLaW5kLnQpID1cbiAgZXhuX3RvX2xvY19lcnJvciBleG4gfD4gZXJyb3JfdG9fZXh0ZW5zaW9uIH5raW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgQWN0dWFsIHJld3JpdGluZyBvZiBzdHJ1Y3R1cmUvc2lnbmF0dXJlcyAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHByaW50X3Bhc3NlcyAoKSA9XG4gIGxldCB0b29sX25hbWUgPSBcInBweGxpYl9kcml2ZXJcIiBpblxuICBsZXQgZW1iZWRfZXJyb3JzID0gZmFsc2UgaW5cbiAgbGV0IGhvb2sgPSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3AgaW5cbiAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcCBpblxuICBsZXQgY3RzID1cbiAgICBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgICB+aW5wdXRfbmFtZTpOb25lXG4gIGluXG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuXG4gICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmZyZXNoZW4tYW5kLWNvbGxlY3QtYXR0cmlidXRlcz5cXG5cIjtcbiAgTGlzdC5pdGVyIGN0cyB+ZjooZnVuIGN0IC0+IFByaW50Zi5wcmludGYgXCIlc1xcblwiIGN0LlRyYW5zZm9ybS5uYW1lKTtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpjaGVjay11bnVzZWQtYXR0cmlidXRlcz5cXG5cIjtcbiAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWV4dGVuc2lvbnM+XFxuXCIpXG5cbmxldCBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzID1cbiAgTGlzdC5zb3J0IGVycm9ycyB+Y21wOihmdW4gZXJyb3IgZXJyb3InIC0+XG4gICAgICBsZXQgbG9jID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yIGluXG4gICAgICBsZXQgbG9jJyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcicgaW5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmUgbG9jIGxvYycpXG5cbigqJCopXG5cbmxldCBtYXBfc3RydWN0dXJlX2dlbiBzdCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZVxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBDb29raWVzLmFja25vd2xlZGdlX2Nvb2tpZXMgVDtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIEF0dHJpYnV0ZS5yZXNldF9jaGVja3MgKCk7XG4gICAgQXR0cmlidXRlLmNvbGxlY3Qjc3RydWN0dXJlIHN0KTtcbiAgbGV0IGxpbnQgbGludF9lcnJvcnMgc3QgPVxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBsaW50X2Vycm9ycyB3aXRoXG4gICAgICB8IFtdIC0+IHN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsaW50X2Vycm9yc1xuICAgICAgICAgICAgfmY6KGZ1biAoeyBhdHRyX25hbWUgPSB7IGxvYzsgXyB9OyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2F0dHJpYnV0ZSB+bG9jIGF0dHIpXG4gICAgICAgICAgQCBzdFxuICAgIGluXG4gICAgc3RcbiAgaW5cbiAgbGV0IHdpdGhfZXJyb3JzIGVycm9ycyBzdCA9XG4gICAgbGV0IHNvcnRlZCA9IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgaW5cbiAgICBMaXN0Lm1hcCBzb3J0ZWQgfmY6KGZ1biBlcnJvciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgICAgICAgfmxvYzooTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yKVxuICAgICAgICAgIChMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IpXG4gICAgICAgICAgW11cbiAgICAgICAgfD4gZ2hvc3Qjc3RydWN0dXJlX2l0ZW0pXG4gICAgQCBzdFxuICBpblxuICBsZXQgY29va2llc19hbmRfY2hlY2sgc3QgPVxuICAgIENvb2tpZXMuY2FsbF9wb3N0X2hhbmRsZXJzIFQ7XG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR3byBwYXNzZXMgY291bGQgYmUgbWVyZ2VkLCB3ZSBub3cgaGF2ZSBtb3JlIHBhc3NlcyBmb3JcbiAgICAgICAgICAgY2hlY2tzIHRoYW4gZm9yIGFjdHVhbCByZXdyaXRpbmcuICopXG4gICAgICAgIGxldCB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgIEF0dHJpYnV0ZS5jb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzdHJ1Y3R1cmUgc3QgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVudXNlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgICAgICAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICAgICAgICBFeHRlbnNpb24uY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzdHJ1Y3R1cmUgc3QgW11cbiAgICAgICAgICBlbHNlIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub3Rfc2Vlbl9lcnJvcnMgPSBBdHRyaWJ1dGUuY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIGluXG4gICAgICAgIChpZiAhcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgdGhlblxuICAgICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbl9jaGVjayBpblxuICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAoKGVuZm9yY2VfaW52YXJpYW50cyAhbG9jX2ZuYW1lKSNzdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgICAgOiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50KSk7XG4gICAgICAgIHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyBAIHVudXNlZF9leHRlbnNpb25fZXJyb3JzIEAgbm90X3NlZW5fZXJyb3JzKVxuICAgICAgZWxzZSBbXVxuICAgIGluXG4gICAgd2l0aF9lcnJvcnMgZXJyb3JzIHN0XG4gIGluXG4gIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3N0ciBzdCBpblxuICBsZXQgc3QsIGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgIGFwcGx5X3RyYW5zZm9ybXMgc3QgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoXG4gICAgICB+ZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QuaW1wbClcbiAgICAgIH5saW50X2ZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmxpbnRfaW1wbClcbiAgICAgIH5kcm9wcGVkX3NvX2ZhcjpBdHRyaWJ1dGUuZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIH5ob29rXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9yc1xuICBpblxuICBzdCB8PiBsaW50IGxpbnRfZXJyb3JzIHw+IGNvb2tpZXNfYW5kX2NoZWNrIHw+IHdpdGhfZXJyb3JzIChMaXN0LnJldiBlcnJvcnMpXG5cbmxldCBtYXBfc3RydWN0dXJlIHN0ID1cbiAgbWF0Y2hcbiAgICBtYXBfc3RydWN0dXJlX2dlbiBzdFxuICAgICAgfnRvb2xfbmFtZTooQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkpXG4gICAgICB+aG9vazpDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlcjpDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wXG4gICAgICB+aW5wdXRfbmFtZTpOb25lIH5lbWJlZF9lcnJvcnM6ZmFsc2VcbiAgd2l0aFxuICB8IGFzdCAtPiBhc3RcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgbWFwX3NpZ25hdHVyZV9nZW4gc2cgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3NpZ25hdHVyZSBzZyk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHNnID1cbiAgICBsZXQgc2cgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzZ1xuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc2dcbiAgICBpblxuICAgIHNnXG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc2cgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3NpZ25hdHVyZV9pdGVtKVxuICAgIEAgc2dcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHNnID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc2lnbmF0dXJlIHNnIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc2lnbmF0dXJlIHNnIFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc2lnbmF0dXJlIHNnXG4gICAgICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9ycylcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzZ1xuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zaWcgc2cgaW5cbiAgbGV0IHNnLCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHNnIH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmludGYpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ludGYpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc2cgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3NpZ25hdHVyZSBzZyA9XG4gIG1hdGNoXG4gICAgbWFwX3NpZ25hdHVyZV9nZW4gc2dcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCopXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgRW50cnkgcG9pbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgPVxuICBsZXQgdGVzdCBtYWdpY19udW1iZXIgPVxuICAgIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OihTdHJpbmcuc3ViIG1hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICBpblxuICB0ZXN0IEFzdF9tYWdpYy5hc3RfaW50Zl9tYWdpY19udW1iZXIgfHwgdGVzdCBBc3RfbWFnaWMuYXN0X2ltcGxfbWFnaWNfbnVtYmVyXG5cbmxldCB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gaW5wdXRfZmlsZV9uYW1lID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gbXNnIC0+XG4gICAgICBsZXQgZXJyID1cbiAgICAgICAgTG9jYXRpb24uRXJyb3IubWFrZSB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVfbmFtZSkgbXNnIH5zdWI6W11cbiAgICAgIGluXG4gICAgICBFcnJvciAoZXJyLCBpbnB1dF92ZXJzaW9uKSlcblxubGV0IHJlbW92ZV9ub19lcnJvciBmbiA9IHRyeSBTdGRsaWIuU3lzLnJlbW92ZSBmbiB3aXRoIFN5c19lcnJvciBfIC0+ICgpXG5cbmxldCBwcm90ZWN0eCB4IH5mIH5maW5hbGx5ID1cbiAgbWF0Y2ggZiB4IHdpdGhcbiAgfCB2IC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICB2XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgIGZpbmFsbHkgeDtcbiAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmYgPVxuICBtYXRjaCAhcHJlcHJvY2Vzc29yIHdpdGhcbiAgfCBOb25lIC0+IGYgZm5cbiAgfCBTb21lIHBwIC0+XG4gICAgICBwcm90ZWN0eCAoU3RkbGliLkZpbGVuYW1lLnRlbXBfZmlsZSBcIm9jYW1scHBcIiBcIlwiKSB+ZmluYWxseTpyZW1vdmVfbm9fZXJyb3JcbiAgICAgICAgfmY6KGZ1biB0bXBmaWxlIC0+XG4gICAgICAgICAgbWF0Y2ggU3lzdGVtLnJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dDpmbiB+b3V0cHV0OnRtcGZpbGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gZiB0bXBmaWxlXG4gICAgICAgICAgfCBFcnJvciAoZmFpbGVkX2NvbW1hbmQsIGZhbGxfYmFja192ZXJzaW9uKSAtPlxuICAgICAgICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGZhbGxfYmFja192ZXJzaW9uIGZuXG4gICAgICAgICAgICAgICAgXCJFcnJvciB3aGlsZSBydW5uaW5nIGV4dGVybmFsIHByZXByb2Nlc3NvclxcbkNvbW1hbmQgbGluZTogJXNcXG5cIlxuICAgICAgICAgICAgICAgIGZhaWxlZF9jb21tYW5kKVxuXG5sZXQgcmVsb2NhdGVfbWFwcGVyID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nICogc3RyaW5nXSBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kISBwb3NpdGlvbiAob2xkX2ZuLCBuZXdfZm4pIHBvcyA9XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgcG9zLnBvc19mbmFtZSBvbGRfZm4gdGhlbiB7IHBvcyB3aXRoIHBvc19mbmFtZSA9IG5ld19mbiB9XG4gICAgICBlbHNlIHBvc1xuICBlbmRcblxuKCogU2V0IHRoZSBpbnB1dCBuYW1lIGdsb2JhbGx5LiBUaGlzIGlzIHVzZWQgYnkgc29tZSBwcHggcmV3cml0ZXJzXG4gICBzdWNoIGFzIGJpc2VjdF9wcHguICopXG5sZXQgc2V0X2lucHV0X25hbWUgPSBBc3RsaWIuTG9jYXRpb24uc2V0X2lucHV0X25hbWVcblxubGV0IGxvYWRfaW5wdXQgfihraW5kIDogS2luZC50KSB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgZm4gPVxuICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICBsZXQgaW5wdXRfc291cmNlID0gaWYgU3RyaW5nLmVxdWFsIGZuIFwiLVwiIHRoZW4gQXN0X2lvLlN0ZGluIGVsc2UgRmlsZSBmbiBpblxuICBsZXQgaW5wdXRfa2luZCA9IEFzdF9pby5Qb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIGluXG4gIG1hdGNoIEFzdF9pby5yZWFkIGlucHV0X3NvdXJjZSB+aW5wdXRfa2luZCB3aXRoXG4gIHwgT2sgeyBpbnB1dF9uYW1lID0gYXN0X2lucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IC0+XG4gICAgICBsZXQgYXN0X2tpbmQgPSBJbnRmX29yX2ltcGwua2luZCBhc3QgaW5cbiAgICAgIGlmIG5vdCAoS2luZC5lcXVhbCBraW5kIGFzdF9raW5kKSB0aGVuXG4gICAgICAgIHZlcnNpb25lZF9lcnJvcmYgaW5wdXRfdmVyc2lvbiBmblxuICAgICAgICAgIFwiRmlsZSBjb250YWlucyBhIGJpbmFyeSAlcyBBU1QgYnV0IGFuICVzIHdhcyBleHBlY3RlZFwiXG4gICAgICAgICAgKEtpbmQuZGVzY3JpYmUgYXN0X2tpbmQpIChLaW5kLmRlc2NyaWJlIGtpbmQpXG4gICAgICBlbHNlIGlmIFN0cmluZy5lcXVhbCBhc3RfaW5wdXRfbmFtZSBpbnB1dF9uYW1lIHx8IG5vdCByZWxvY2F0ZSB0aGVuIChcbiAgICAgICAgc2V0X2lucHV0X25hbWUgYXN0X2lucHV0X25hbWU7XG4gICAgICAgIE9rIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgT2tcbiAgICAgICAgICAoIGlucHV0X25hbWUsXG4gICAgICAgICAgICBpbnB1dF92ZXJzaW9uLFxuICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X25hbWUpIClcbiAgfCBFcnJvciAoVW5rbm93bl92ZXJzaW9uICh1bmtub3duX21hZ2ljLCBmYWxsX2JhY2tfdmVyc2lvbikpIC0+XG4gICAgICB2ZXJzaW9uZWRfZXJyb3JmIGZhbGxfYmFja192ZXJzaW9uIGZuXG4gICAgICAgIFwiRmlsZSBpcyBhIGJpbmFyeSBhc3QgZm9yIGFuIHVua25vd24gdmVyc2lvbiBvZiBPQ2FtbCB3aXRoIG1hZ2ljIFxcXG4gICAgICAgICBudW1iZXIgJyVzJ1wiXG4gICAgICAgIHVua25vd25fbWFnaWNcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKVxuICB8IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbikpIC0+XG4gICAgICBFcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKVxuICB8IEVycm9yIE5vdF9hX2JpbmFyeV9hc3QgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBsb2FkX2lucHV0X3J1bl9hc19wcHggZm4gPVxuICAoKiBJZiB0aGVyZSdzIGFuIGVycm9yIHdoaWxlIGxvYWRpbmcgaW4gcnVuX2FzX3BweCBtb2RlLCB0aGUga2luZCBvZiBBU1QgKGltcGwvaW50ZikgaXMgc3RpbGwgdW5rbm93bi5cbiAgICAgVGhhdCdzIHdoeSwgYXMgb3Bwb3NlZCB0byBsb2FkX2lucHV0LCB0aGlzIGZ1bmN0aW9uIHJhaXNlcyBlcnJvcnMgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSByZXN1bHQ6XG4gICAgIGhhbmRsaW5nIGFuIGVycm9yIGJ5IHJldHVybmluZyBhbiBBU1Qgd2l0aCB0aGUgZXJyb3IgcGFja2VkIGFzIGV4dGVuc2lvbiBub2RlIHdvdWxkbid0IGJlIHBvc3NpYmxlLiAqKVxuICBtYXRjaCBBc3RfaW8ucmVhZCAoRmlsZSBmbikgfmlucHV0X2tpbmQ6QXN0X2lvLk5lY2Vzc2FyaWx5X2JpbmFyeSB3aXRoXG4gIHwgT2sgeyBpbnB1dF9uYW1lID0gYXN0X2lucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2ggIWxvY19mbmFtZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgc2V0X2lucHV0X25hbWUgYXN0X2lucHV0X25hbWU7XG4gICAgICAgICAgICBhc3RcbiAgICAgICAgfCBTb21lIGlucHV0X25hbWUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGlucHV0X25hbWU7XG4gICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB0aGVuIGFzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBJbnRmX29yX2ltcGwubWFwX3dpdGhfY29udGV4dCBhc3QgcmVsb2NhdGVfbWFwcGVyXG4gICAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKVxuICAgICAgaW5cbiAgICAgICgqIFdpdGggYC0tYXMtcHB4YCwgb2NhbWwgY2FsbHMgdGhlIHN0YW5kYWxvbmUgc2VwYXJhdGVseSBmb3IgZXZlcnkgc3RydWN0dXJlL3NpZ25hdHVyZSBpdGVtXG4gICAgICAgICB3aXRoIHRoZSBmaWxlbmFtZSBhcyBtZXRhZGF0YSB0aGF0IGl0IGdldHMgZnJvbSB0aGUgcHJldmlvdXMgY2FsbC4gcmVsb2NhdGVfbWFwcGVyIG9ubHlcbiAgICAgICAgIHJlbG9jYXRlcyBwb3NpdGlvbnMgd2hvc2UgcG9zaXRpb24gZmlsZW5hbWUgY29pbmNpZGVzIHdpdGggdGhhdCBtZXRhZGF0YSBmaWxlbmFtZS5cbiAgICAgICAgIFNvIGFsd2F5cyByZXR1cm4gdGhlIG1ldGFkYXRhIGZpbGVuYW1lIGl0c2VsZiwgZXZlbiBpZiBgLWxvYy1maWxlbmFtZWAgaXMgcHJvdmlkZWQuICopXG4gICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgfCBFcnJvciAoVW5rbm93bl92ZXJzaW9uICh1bmtub3duX21hZ2ljLCBfKSkgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgICBcIlRoZSBpbnB1dCBpcyBhIGJpbmFyeSBhc3QgZm9yIGFuIHVua25vd24gdmVyc2lvbiBvZiBPQ2FtbCB3aXRoIG1hZ2ljIFxcXG4gICAgICAgICBudW1iZXIgJyVzJ1wiXG4gICAgICAgIHVua25vd25fbWFnaWNcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJFeHBlY3RlZCBhIGJpbmFyeSBBU1QgYXMgaW5wdXRcIlxuICB8IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBfKSkgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgXykpIC0+XG4gICAgICBsZXQgb3BlbiBMb2NhdGlvbi5FcnJvciBpblxuICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcblxubGV0IGxvYWRfc291cmNlX2ZpbGUgZm4gPVxuICBsZXQgcyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZm4gaW5cbiAgaWYgc3RyaW5nX2NvbnRhaW5zX2JpbmFyeV9hc3QgcyB0aGVuXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICBcInBweGxpYl9kcml2ZXI6IGNhbm5vdCB1c2UgLXJlY29uY2lsZSB3aXRoIGJpbmFyeSBBU1QgZmlsZXNcIjtcbiAgc1xuXG50eXBlIG91dHB1dF9tb2RlID1cbiAgfCBQcmV0dHlfcHJpbnRcbiAgfCBEdW1wX2FzdFxuICB8IERwYXJzZXRyZWVcbiAgfCBSZWNvbmNpbGUgb2YgUmVjb25jaWxlLm1vZGVcbiAgfCBOdWxsXG5cbigqJCopXG5sZXQgZXh0cmFjdF9jb29raWVzX3N0ciBzdCA9XG4gIGxldCBzdCA9XG4gICAgbWF0Y2ggc3Qgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgIFBzdHJfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHN0IC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTdHJ1Y3R1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc3RyIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHN0XG4gICAgfCBfIC0+IHN0XG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc3RcblxubGV0IGFkZF9jb29raWVzX3N0ciBzdCA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU3RydWN0dXJlXG4gIGluXG4gIHByZWZpeCBAIHN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbmxldCBleHRyYWN0X2Nvb2tpZXNfc2lnIHNnID1cbiAgbGV0IHNnID1cbiAgICBtYXRjaCBzZyB3aXRoXG4gICAgfCAoe1xuICAgICAgICAgcHNpZ19kZXNjID1cbiAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwucHB4LmNvbnRleHRcIjsgXyB9OyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcHJlZml4KVxuICAgICAgOjogc2cgLT5cbiAgICAgICAgbGV0IHByZWZpeCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0LnRvX29jYW1sIFNpZ25hdHVyZSBbIHByZWZpeCBdIGluXG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgTGlzdC5pc19lbXB0eVxuICAgICAgICAgICAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZHJvcF9wcHhfY29udGV4dF9zaWcgfnJlc3RvcmU6dHJ1ZSBwcmVmaXgpKTtcbiAgICAgICAgc2dcbiAgICB8IF8gLT4gc2dcbiAgaW5cbiAgKCogVGhlIGNsaSBjb29raWVzIGhhdmUgdG8gYmUgc2V0IGFmdGVyIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQsXG4gICAgIHNpbmNlIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQgcmVzZXRzIHRoZSBjb29raWVzICopXG4gIExpc3QuaXRlciAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSB+ZjooZnVuIChuYW1lLCBleHByKSAtPlxuICAgICAgQ29va2llcy5zZXQgVCBuYW1lIGV4cHIpO1xuICBzZ1xuXG5sZXQgYWRkX2Nvb2tpZXNfc2lnIHNnID1cbiAgbGV0IHByZWZpeCA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhsaWJfZHJpdmVyXCIgW11cbiAgICB8PiBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbCBTaWduYXR1cmVcbiAgaW5cbiAgcHJlZml4IEAgc2dcblxuKCokKilcblxubGV0IGV4dHJhY3RfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChleHRyYWN0X2Nvb2tpZXNfc2lnIHgpXG4gIHwgSW1wbCB4IC0+IEltcGwgKGV4dHJhY3RfY29va2llc19zdHIgeClcblxubGV0IGFkZF9jb29raWVzIChhc3QgOiBJbnRmX29yX2ltcGwudCkgOiBJbnRmX29yX2ltcGwudCA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+IEludGYgKGFkZF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChhZGRfY29va2llc19zdHIgeClcblxubGV0IGNvcnJlY3Rpb25zID0gcmVmIFtdXG5sZXQgYWRkX3RvX2xpc3QgciB4ID0gciA6PSB4IDo6ICFyXG5cbmxldCByZWdpc3Rlcl9jb3JyZWN0aW9uIH5sb2MgfnJlcGwgPVxuICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZV90ZXh0ICgpIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kXG4gICAgICAgfnJlcGwpXG5cbmxldCBwcm9jZXNzX2ZpbGVfaG9va3MgPSByZWYgW11cbmxldCByZWdpc3Rlcl9wcm9jZXNzX2ZpbGVfaG9vayBmID0gYWRkX3RvX2xpc3QgcHJvY2Vzc19maWxlX2hvb2tzIGZcblxubW9kdWxlIEZpbGVfcHJvcGVydHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgbXV0YWJsZSBkYXRhIDogJ2Egb3B0aW9uO1xuICAgIHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudDtcbiAgfVxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgYWxsID0gcmVmIFtdXG4gIGxldCByZWdpc3RlciB0ID0gYWRkX3RvX2xpc3QgYWxsIChUIHQpXG4gIGxldCByZXNldF9hbGwgKCkgPSBMaXN0Lml0ZXIgIWFsbCB+ZjooZnVuIChUIHQpIC0+IHQuZGF0YSA8LSBOb25lKVxuXG4gIGxldCBkdW1wX2FuZF9yZXNldF9hbGwgKCkgPVxuICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC5yZXYgIWFsbCkgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICBtYXRjaCB0LmRhdGEgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgICAgdC5kYXRhIDwtIE5vbmU7XG4gICAgICAgICAgICBTb21lICh0Lm5hbWUsIHQuc2V4cF9vZl90IHYpKVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZmlsZV9wcm9wZXJ0eVxuICAgIChOYW1lIDogc2lnXG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZClcbiAgICAoVCA6IFNleHBhYmxlLlMpID1cbnN0cnVjdFxuICBsZXQgdCA6IF8gRmlsZV9wcm9wZXJ0eS50ID1cbiAgICB7IG5hbWUgPSBOYW1lLm5hbWU7IGRhdGEgPSBOb25lOyBzZXhwX29mX3QgPSBULnNleHBfb2ZfdCB9XG5cbiAgbGV0ICgpID0gRmlsZV9wcm9wZXJ0eS5yZWdpc3RlciB0XG4gIGxldCBzZXQgeCA9IHQuZGF0YSA8LSBTb21lIHhcbmVuZFxuXG5sZXQgcHJvY2Vzc19hc3QgKGFzdCA6IEludGZfb3JfaW1wbC50KSB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rXG4gICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5lbWJlZF9lcnJvcnMgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbWFwX3NpZ25hdHVyZV9nZW4geCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgfmlucHV0X25hbWU6KFNvbWUgaW5wdXRfbmFtZSkgfmVtYmVkX2Vycm9yc1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgYXN0IC0+IGFzdFxuICAgICAgaW5cbiAgICAgIEludGZfb3JfaW1wbC5JbnRmIGFzdFxuICB8IEltcGwgeCAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbWFwX3N0cnVjdHVyZV9nZW4geCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgfmlucHV0X25hbWU6KFNvbWUgaW5wdXRfbmFtZSkgfmVtYmVkX2Vycm9yc1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgYXN0IC0+IGFzdFxuICAgICAgaW5cbiAgICAgIEludGZfb3JfaW1wbC5JbXBsIGFzdFxuXG5sZXQgcHJvY2Vzc19maWxlIChraW5kIDogS2luZC50KSBmbiB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgfm91dHB1dF9tb2RlXG4gICAgfmVtYmVkX2Vycm9ycyB+b3V0cHV0ID1cbiAgRmlsZV9wcm9wZXJ0eS5yZXNldF9hbGwgKCk7XG4gIExpc3QuaXRlciAoTGlzdC5yZXYgIXByb2Nlc3NfZmlsZV9ob29rcykgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBjb3JyZWN0aW9ucyA6PSBbXTtcbiAgbGV0IHJlcGxhY2VtZW50cyA9IHJlZiBbXSBpblxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhfZHJpdmVyXCIgaW5cbiAgbGV0IGhvb2sgOiBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay50ID1cbiAgICBtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gICAgfCBSZWNvbmNpbGUgKFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcykgLT5cbiAgICAgICAge1xuICAgICAgICAgIGYgPVxuICAgICAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICAgICAgYWRkX3RvX2xpc3QgcmVwbGFjZW1lbnRzXG4gICAgICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihFeHRlbnNpb24gY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZCB+cmVwbDpnZW5lcmF0ZWQpKTtcbiAgICAgICAgfVxuICAgIHwgXyAtPiBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgaW5cbiAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIDogQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLnQgPVxuICAgIHtcbiAgICAgIGYgPVxuICAgICAgICAoZnVuIGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIGdlbmVyYXRlZCAtPlxuICAgICAgICAgIGFkZF90b19saXN0IGNvcnJlY3Rpb25zXG4gICAgICAgICAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2UgKCkgfmNvbnRleHQ6KEZsb2F0aW5nX2F0dHJpYnV0ZSBjb250ZXh0KVxuICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6KE1hbnkgZ2VuZXJhdGVkKSkpO1xuICAgIH1cbiAgaW5cblxuICBsZXQgaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0ID1cbiAgICBsZXQgcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgPVxuICAgICAgd2l0aF9wcmVwcm9jZXNzZWRfZmlsZSBmbiB+ZjoobG9hZF9pbnB1dCB+a2luZCB+aW5wdXRfbmFtZSB+cmVsb2NhdGUpXG4gICAgaW5cbiAgICBtYXRjaCBwcmVwcm9jZXNzZWRfYW5kX2xvYWRlZCB3aXRoXG4gICAgfCBPayAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkgLT4gKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgYXN0ID1cbiAgICAgICAgICAgIGV4dHJhY3RfY29va2llcyBhc3RcbiAgICAgICAgICAgIHw+IHByb2Nlc3NfYXN0IH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KVxuICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQpKVxuICAgIHwgRXJyb3IgKGVycm9yLCBpbnB1dF92ZXJzaW9uKSB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAoaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH5raW5kKVxuICAgIHwgRXJyb3IgKGVycm9yLCBfKSAtPlxuICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbi5FcnJvciBpblxuICAgICAgICBMb2NhdGlvbi5zZXRfZmlsZW5hbWUgKGdldF9sb2NhdGlvbiBlcnJvcikgZm5cbiAgICAgICAgfD4gdXBkYXRlX2xvYyBlcnJvciB8PiByYWlzZVxuICBpblxuICBPcHRpb24uaXRlciAhb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIH5mOihmdW4gZm4gLT5cbiAgICAgIGxldCBtZXRhZGF0YSA9IEZpbGVfcHJvcGVydHkuZHVtcF9hbmRfcmVzZXRfYWxsICgpIGluXG4gICAgICBPdXRfY2hhbm5lbC53cml0ZV9hbGwgZm5cbiAgICAgICAgfmRhdGE6XG4gICAgICAgICAgKExpc3QubWFwIG1ldGFkYXRhIH5mOihmdW4gKHMsIHNleHApIC0+XG4gICAgICAgICAgICAgICBTZXhwLnRvX3N0cmluZ19odW0gKFNleHAuTGlzdCBbIEF0b20gczsgc2V4cCBdKSBeIFwiXFxuXCIpXG4gICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIpKTtcblxuICBsZXQgaW5wdXRfY29udGVudHMgPSBsYXp5IChsb2FkX3NvdXJjZV9maWxlIGZuKSBpblxuICBsZXQgY29ycmVjdGVkID0gZm4gXiAhY29ycmVjdGVkX3N1ZmZpeCBpblxuICBsZXQgbWlzbWF0Y2hlc19mb3VuZCA9XG4gICAgbWF0Y2ggIWNvcnJlY3Rpb25zIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAgIGlmIFN0ZGxpYi5TeXMuZmlsZV9leGlzdHMgY29ycmVjdGVkIHRoZW4gU3RkbGliLlN5cy5yZW1vdmUgY29ycmVjdGVkO1xuICAgICAgICBmYWxzZVxuICAgIHwgY29ycmVjdGlvbnMgLT5cbiAgICAgICAgUmVjb25jaWxlLnJlY29uY2lsZSBjb3JyZWN0aW9uc1xuICAgICAgICAgIH5jb250ZW50czooTGF6eS5mb3JjZSBpbnB1dF9jb250ZW50cylcbiAgICAgICAgICB+b3V0cHV0OihTb21lIGNvcnJlY3RlZCkgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lXG4gICAgICAgICAgfnRhcmdldDpDb3JyZWN0ZWQgP3N0eWxlcjohc3R5bGVyIH5raW5kO1xuICAgICAgICB0cnVlXG4gIGluXG5cbiAgKG1hdGNoIG91dHB1dF9tb2RlIHdpdGhcbiAgfCBOdWxsIC0+ICgpXG4gIHwgUHJldHR5X3ByaW50IC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTpmYWxzZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgbGV0IHBwZiA9IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgKG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgfCBJbnRmIGFzdCAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlIHBwZiBhc3RcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFBwcmludGFzdC5zdHJ1Y3R1cmUgcHBmIGFzdCk7XG4gICAgICAgICAgbGV0IG51bGxfYXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFzdCB3aXRoIEludGYgW10gfCBJbXBsIFtdIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgbnVsbF9hc3QgdGhlbiBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKVxuICB8IER1bXBfYXN0IC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTp0cnVlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBBc3RfaW8ud3JpdGUgb2NcbiAgICAgICAgICAgIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH1cbiAgICAgICAgICAgIH5hZGRfcHB4X2NvbnRleHQ6dHJ1ZSlcbiAgfCBEcGFyc2V0cmVlIC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTpmYWxzZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgbGV0IHBwZiA9IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgbGV0IGFzdCA9IGFkZF9jb29raWVzIGFzdCBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gU2V4cC5wcF9odW0gcHBmIChBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmUgYXN0KVxuICAgICAgICAgIHwgSW1wbCBhc3QgLT4gU2V4cC5wcF9odW0gcHBmIChBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmUgYXN0KSk7XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBSZWNvbmNpbGUgbW9kZSAtPlxuICAgICAgUmVjb25jaWxlLnJlY29uY2lsZSAhcmVwbGFjZW1lbnRzXG4gICAgICAgIH5jb250ZW50czooTGF6eS5mb3JjZSBpbnB1dF9jb250ZW50cylcbiAgICAgICAgfm91dHB1dCB+aW5wdXRfZmlsZW5hbWU6Zm4gfmlucHV0X25hbWUgfnRhcmdldDooT3V0cHV0IG1vZGUpXG4gICAgICAgID9zdHlsZXI6IXN0eWxlciB+a2luZCk7XG5cbiAgaWZcbiAgICBtaXNtYXRjaGVzX2ZvdW5kICYmIG1hdGNoICFkaWZmX2NvbW1hbmQgd2l0aCBTb21lIFwiLVwiIC0+IGZhbHNlIHwgXyAtPiB0cnVlXG4gIHRoZW4gKFxuICAgIFBweGxpYl9wcmludF9kaWZmLnByaW50ICgpIH5maWxlMTpmbiB+ZmlsZTI6Y29ycmVjdGVkIH51c2VfY29sb3I6IXVzZV9jb2xvclxuICAgICAgP2RpZmZfY29tbWFuZDohZGlmZl9jb21tYW5kO1xuICAgIFN0ZGxpYi5leGl0IDEpXG5cbmxldCBvdXRwdXRfbW9kZSA9IHJlZiBQcmV0dHlfcHJpbnRcbmxldCBvdXRwdXQgPSByZWYgTm9uZVxubGV0IGtpbmQgPSByZWYgTm9uZVxubGV0IGlucHV0ID0gcmVmIE5vbmVcbmxldCBlbWJlZF9lcnJvcnMgPSByZWYgZmFsc2VcblxubGV0IHNldF9pbnB1dCBmbiA9XG4gIG1hdGNoICFpbnB1dCB3aXRoXG4gIHwgTm9uZSAtPiBpbnB1dCA6PSBTb21lIGZuXG4gIHwgU29tZSBfIC0+IHJhaXNlIChBcmcuQmFkIFwidG9vIG1hbnkgaW5wdXQgZmlsZXNcIilcblxubGV0IHNldF9raW5kIGsgPVxuICBtYXRjaCAha2luZCB3aXRoXG4gIHwgU29tZSBrJyB3aGVuIG5vdCAoS2luZC5lcXVhbCBrIGsnKSAtPlxuICAgICAgcmFpc2UgKEFyZy5CYWQgXCJtdXN0IHNwZWNpZnkgYXQgbW9zdCBvbmUgb2YgLWltcGwgb3IgLWludGZcIilcbiAgfCBfIC0+IGtpbmQgOj0gU29tZSBrXG5cbmxldCBzZXRfb3V0cHV0X21vZGUgbW9kZSA9XG4gIG1hdGNoICghb3V0cHV0X21vZGUsIG1vZGUpIHdpdGhcbiAgfCBQcmV0dHlfcHJpbnQsIF8gLT4gb3V0cHV0X21vZGUgOj0gbW9kZVxuICB8IF8sIFByZXR0eV9wcmludCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBEdW1wX2FzdCwgRHVtcF9hc3QgfCBEcGFyc2V0cmVlLCBEcGFyc2V0cmVlIC0+ICgpXG4gIHwgUmVjb25jaWxlIGEsIFJlY29uY2lsZSBiIHdoZW4gUG9seS5lcXVhbCBhIGIgLT4gKClcbiAgfCB4LCB5IC0+XG4gICAgICBsZXQgYXJnX29mX291dHB1dF9tb2RlID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgRHVtcF9hc3QgLT4gXCItZHVtcC1hc3RcIlxuICAgICAgICB8IERwYXJzZXRyZWUgLT4gXCItZHBhcnNldHJlZVwiXG4gICAgICAgIHwgUmVjb25jaWxlIFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPiBcIi1yZWNvbmNpbGVcIlxuICAgICAgICB8IFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT4gXCItcmVjb25jaWxlLXdpdGgtY29tbWVudHNcIlxuICAgICAgICB8IE51bGwgLT4gXCItbnVsbFwiXG4gICAgICBpblxuICAgICAgcmFpc2VcbiAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgYW5kICVzIGFyZSBpbmNvbXBhdGlibGVcIiAoYXJnX29mX291dHB1dF9tb2RlIHgpXG4gICAgICAgICAgICAgIChhcmdfb2Zfb3V0cHV0X21vZGUgeSkpKVxuXG5sZXQgcHJpbnRfdHJhbnNmb3JtYXRpb25zICgpID1cbiAgTGlzdC5pdGVyICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5uYW1lKVxuXG5sZXQgcGFyc2VfYXBwbHlfbGlzdCBzID1cbiAgbGV0IG5hbWVzID1cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIlwiIHRoZW4gW10gZWxzZSBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6JywnXG4gIGluXG4gIExpc3QuaXRlciBuYW1lcyB+ZjooZnVuIG5hbWUgLT5cbiAgICAgIGlmXG4gICAgICAgIG5vdFxuICAgICAgICAgIChMaXN0LmV4aXN0cyAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChTdGRsaWIuQXJnLkJhZFxuICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcImNvZGUgdHJhbnNmb3JtYXRpb24gJyVzJyBkb2VzIG5vdCBleGlzdFwiIG5hbWUpKSk7XG4gIG5hbWVzXG5cbnR5cGUgbWFzayA9IHtcbiAgbXV0YWJsZSBhcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbiAgbXV0YWJsZSBkb250X2FwcGx5IDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xufVxuXG5sZXQgbWFzayA9IHsgYXBwbHkgPSBOb25lOyBkb250X2FwcGx5ID0gTm9uZSB9XG5cbmxldCBoYW5kbGVfYXBwbHkgcyA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IGNhbGxlZCB0b28gbWFueSB0aW1lc1wiKTtcbiAgKCogVGhpcyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzIG1vcmUgaW50dWl0aXZlICopXG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIC1kb250LWFwcGx5XCIpO1xuICBtYXNrLmFwcGx5IDwtIFNvbWUgKHBhcnNlX2FwcGx5X2xpc3QgcylcblxubGV0IGhhbmRsZV9kb250X2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IGNhbGxlZCB0b28gbWFueSB0aW1lc1wiKTtcbiAgbWFzay5kb250X2FwcGx5IDwtIFNvbWUgKHBhcnNlX2FwcGx5X2xpc3QgcylcblxubGV0IGludGVycHJldF9tYXNrICgpID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5hcHBseSB8fCBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIGxldCBzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSBjdCA9XG4gICAgICBsZXQgaXNfY2FuZGlkYXRlID1cbiAgICAgICAgbWF0Y2ggbWFzay5hcHBseSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPiBMaXN0LmV4aXN0cyBuYW1lcyB+ZjooVHJhbnNmb3JtLmhhc19uYW1lIGN0KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19zZWxlY3RlZCA9XG4gICAgICAgIG1hdGNoIG1hc2suZG9udF9hcHBseSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpc19jYW5kaWRhdGVcbiAgICAgICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgICAgICBpc19jYW5kaWRhdGUgJiYgbm90IChMaXN0LmV4aXN0cyBuYW1lcyB+ZjooVHJhbnNmb3JtLmhhc19uYW1lIGN0KSlcbiAgICAgIGluXG4gICAgICBpZiBpc19zZWxlY3RlZCB0aGVuIFNvbWUgY3QubmFtZSBlbHNlIE5vbmVcbiAgICBpblxuICAgIGFwcGx5X2xpc3QgOj1cbiAgICAgIFNvbWUgKExpc3QuZmlsdGVyX21hcCAhVHJhbnNmb3JtLmFsbCB+ZjpzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSlcblxubGV0IHNldF9jb29raWUgcyA9XG4gIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOic9JyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcmFpc2UgKEFyZy5CYWQgXCJpbnZhbGlkIGNvb2tpZSwgbXVzdCBiZSBvZiB0aGUgZm9ybSBcXFwiPG5hbWU+PTxleHByPlxcXCJcIilcbiAgfCBTb21lIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgdmFsdWUgaW5cbiAgICAgIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiPGNvbW1hbmQtbGluZT5cIjtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICB9O1xuICAgICAgbGV0IGV4cHIgPSBQYXJzZS5leHByZXNzaW9uIGxleGJ1ZiBpblxuICAgICAgQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSA6PSAobmFtZSwgZXhwcikgOjogIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGlcblxubGV0IHNoYXJlZF9hcmdzID1cbiAgW1xuICAgICggXCItbG9jLWZpbGVuYW1lXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBsb2NfZm5hbWUgOj0gU29tZSBzKSxcbiAgICAgIFwiPHN0cmluZz4gRmlsZSBuYW1lIHRvIHVzZSBpbiBsb2NhdGlvbnNcIiApO1xuICAgICggXCItcmVzZXJ2ZS1uYW1lc3BhY2VcIixcbiAgICAgIEFyZy5TdHJpbmcgTmFtZS5SZXNlcnZlZF9uYW1lc3BhY2VzLnJlc2VydmUsXG4gICAgICBcIjxzdHJpbmc+IE1hcmsgdGhlIGdpdmVuIG5hbWVzcGFjZSBhcyByZXNlcnZlZFwiICk7XG4gICAgKFwiLW5vLWNoZWNrXCIsIEFyZy5DbGVhciBwZXJmb3JtX2NoZWNrcywgXCIgRGlzYWJsZSBjaGVja3MgKHVuc2FmZSlcIik7XG4gICAgKFwiLWNoZWNrXCIsIEFyZy5TZXQgcGVyZm9ybV9jaGVja3MsIFwiIEVuYWJsZSBjaGVja3NcIik7XG4gICAgKCBcIi1uby1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyxcbiAgICAgIFwiIERpc2FibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLWNoZWNrLW9uLWV4dGVuc2lvbnNcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyxcbiAgICAgIFwiIEVuYWJsZSBjaGVja3Mgb24gZXh0ZW5zaW9uIHBvaW50IG9ubHlcIiApO1xuICAgICggXCItbm8tbG9jYXRpb25zLWNoZWNrXCIsXG4gICAgICBBcmcuQ2xlYXIgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBEaXNhYmxlIGxvY2F0aW9ucyBjaGVjayBvbmx5XCIgKTtcbiAgICAoIFwiLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLlNldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayxcbiAgICAgIFwiIEVuYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1hcHBseVwiLFxuICAgICAgQXJnLlN0cmluZyBoYW5kbGVfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gQXBwbHkgdGhlc2UgdHJhbnNmb3JtYXRpb25zIGluIG9yZGVyIChjb21tYS1zZXBhcmF0ZWQgbGlzdClcIiApO1xuICAgICggXCItZG9udC1hcHBseVwiLFxuICAgICAgQXJnLlN0cmluZyBoYW5kbGVfZG9udF9hcHBseSxcbiAgICAgIFwiPG5hbWVzPiBFeGNsdWRlIHRoZXNlIHRyYW5zZm9ybWF0aW9uc1wiICk7XG4gICAgKCBcIi1uby1tZXJnZVwiLFxuICAgICAgQXJnLlNldCBub19tZXJnZSxcbiAgICAgIFwiIERvIG5vdCBtZXJnZSBjb250ZXh0IGZyZWUgdHJhbnNmb3JtYXRpb25zIChiZXR0ZXIgZm9yIGRlYnVnZ2luZyBcXFxuICAgICAgIHJld3JpdGVycykuIEFzIGEgcmVzdWx0LCB0aGUgY29udGV4dC1mcmVlIHRyYW5zZm9ybWF0aW9ucyBhcmUgbm90IGFsbCBcXFxuICAgICAgIGFwcGxpZWQgYmVmb3JlIGFsbCBpbXBsIGFuZCBpbnRmLlwiICk7XG4gICAgKFwiLWNvb2tpZVwiLCBBcmcuU3RyaW5nIHNldF9jb29raWUsIFwiTkFNRT1FWFBSIFNldCB0aGUgY29va2llIE5BTUUgdG8gRVhQUlwiKTtcbiAgICAoXCItLWNvb2tpZVwiLCBBcmcuU3RyaW5nIHNldF9jb29raWUsIFwiIFNhbWUgYXMgLWNvb2tpZVwiKTtcbiAgXVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXIgc2hhcmVkX2FyZ3MgfmY6KGZ1biAoa2V5LCBzcGVjLCBkb2MpIC0+IGFkZF9hcmcga2V5IHNwZWMgfmRvYylcblxubGV0IGFzX3BwICgpID1cbiAgc2V0X291dHB1dF9tb2RlIER1bXBfYXN0O1xuICBlbWJlZF9lcnJvcnMgOj0gdHJ1ZVxuXG5sZXQgc3RhbmRhbG9uZV9hcmdzID1cbiAgW1xuICAgICggXCItYXMtcHB4XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHJhaXNlIChBcmcuQmFkIFwiLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBSdW4gYXMgYSAtcHB4IHJld3JpdGVyIChtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudClcIiApO1xuICAgICggXCItLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi0tYXMtcHB4IG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50XCIpKSxcbiAgICAgIFwiIFNhbWUgYXMgLWFzLXBweFwiICk7XG4gICAgKFwiLWFzLXBwXCIsIEFyZy5Vbml0IGFzX3BwLCBcIiBTaG9ydGhhbmQgZm9yOiAtZHVtcC1hc3QgLWVtYmVkLWVycm9yc1wiKTtcbiAgICAoXCItLWFzLXBwXCIsIEFyZy5Vbml0IGFzX3BwLCBcIiBTYW1lIGFzIC1hcy1wcFwiKTtcbiAgICAoIFwiLW9cIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dCA6PSBTb21lIHMpLFxuICAgICAgXCI8ZmlsZW5hbWU+IE91dHB1dCBmaWxlICh1c2UgJy0nIGZvciBzdGRvdXQpXCIgKTtcbiAgICAoXCItXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2lucHV0IFwiLVwiKSwgXCIgUmVhZCBpbnB1dCBmcm9tIHN0ZGluXCIpO1xuICAgICggXCItZHVtcC1hc3RcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIER1bXBfYXN0KSxcbiAgICAgIFwiIER1bXAgdGhlIG1hcnNoYWxlZCBhc3QgdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQgb2YgcHJldHR5LXByaW50aW5nIGl0XCJcbiAgICApO1xuICAgICggXCItLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBTYW1lIGFzIC1kdW1wLWFzdFwiICk7XG4gICAgKCBcIi1kcGFyc2V0cmVlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEcGFyc2V0cmVlKSxcbiAgICAgIFwiIFByaW50IHRoZSBwYXJzZXRyZWUgKHNhbWUgYXMgb2NhbWxjIC1kcGFyc2V0cmVlKVwiICk7XG4gICAgKCBcIi1lbWJlZC1lcnJvcnNcIixcbiAgICAgIEFyZy5TZXQgZW1iZWRfZXJyb3JzLFxuICAgICAgXCIgRW1iZWQgZXJyb3JzIGluIHRoZSBvdXRwdXQgQVNUIChkZWZhdWx0OiB0cnVlIHdoZW4gLWFzLXBwLCBmYWxzZSBcXFxuICAgICAgIG90aGVyd2lzZSlcIiApO1xuICAgICggXCItbnVsbFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgTnVsbCksXG4gICAgICBcIiBQcm9kdWNlIG5vIG91dHB1dCwgZXhjZXB0IGZvciBlcnJvcnNcIiApO1xuICAgICggXCItaW1wbFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbXBsKSxcbiAgICAgIFwiPGZpbGU+IFRyZWF0IHRoZSBpbnB1dCBhcyBhIC5tbCBmaWxlXCIgKTtcbiAgICAoXCItLWltcGxcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbXBsKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW1wbFwiKTtcbiAgICAoIFwiLWludGZcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW50ZiksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWxpIGZpbGVcIiApO1xuICAgIChcIi0taW50ZlwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLCBcIjxmaWxlPiBTYW1lIGFzIC1pbnRmXCIpO1xuICAgICggXCItZGVidWctYXR0cmlidXRlLWRyb3BcIixcbiAgICAgIEFyZy5TZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AsXG4gICAgICBcIiBEZWJ1ZyBhdHRyaWJ1dGUgZHJvcHBpbmdcIiApO1xuICAgICggXCItcHJpbnQtdHJhbnNmb3JtYXRpb25zXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zLFxuICAgICAgXCIgUHJpbnQgbGlua2VkLWluIGNvZGUgdHJhbnNmb3JtYXRpb25zLCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgYXBwbGllZFwiICk7XG4gICAgKCBcIi1wcmludC1wYXNzZXNcIixcbiAgICAgIEFyZy5TZXQgcmVxdWVzdF9wcmludF9wYXNzZXMsXG4gICAgICBcIiBQcmludCB0aGUgYWN0dWFsIHBhc3NlcyBvdmVyIHRoZSB3aG9sZSBBU1QgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIFxcXG4gICAgICAgYXBwbGllZFwiICk7XG4gICAgKCBcIi1pdGUtY2hlY2tcIixcbiAgICAgIEFyZy5Vbml0XG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJXYXJuaW5nOiB0aGUgLWl0ZS1jaGVjayBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIGhhcyBubyBlZmZlY3QuXFxuJSFcIjtcbiAgICAgICAgICBFeHRyYV93YXJuaW5ncy5jYXJlX2Fib3V0X2l0ZV9icmFuY2ggOj0gdHJ1ZSksXG4gICAgICBcIiAobm8gZWZmZWN0IC0tIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkpXCIgKTtcbiAgICAoIFwiLXBwXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBwcmVwcm9jZXNzb3IgOj0gU29tZSBzKSxcbiAgICAgIFwiPGNvbW1hbmQ+ICBQaXBlIHNvdXJjZXMgdGhyb3VnaCBwcmVwcm9jZXNzb3IgPGNvbW1hbmQ+IChpbmNvbXBhdGlibGUgXFxcbiAgICAgICB3aXRoIC1hcy1wcHgpXCIgKTtcbiAgICAoIFwiLXJlY29uY2lsZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMpKSxcbiAgICAgIFwiIChXSVApIFByZXR0eSBwcmludCB0aGUgb3V0cHV0IHVzaW5nIGEgbWl4IG9mIHRoZSBpbnB1dCBzb3VyY2UgYW5kIHRoZSBcXFxuICAgICAgIGdlbmVyYXRlZCBjb2RlXCIgKTtcbiAgICAoIFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSAoUmVjb25jaWxlIERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcykpLFxuICAgICAgXCIgKFdJUCkgc2FtZSBhcyAtcmVjb25jaWxlIGJ1dCB1c2VzIGNvbW1lbnRzIHRvIGVuY2xvc2UgdGhlIGdlbmVyYXRlZCBcXFxuICAgICAgIGNvZGVcIiApO1xuICAgIChcIi1uby1jb2xvclwiLCBBcmcuQ2xlYXIgdXNlX2NvbG9yLCBcIiBEb24ndCB1c2UgY29sb3JzIHdoZW4gcHJpbnRpbmcgZXJyb3JzXCIpO1xuICAgICggXCItZGlmZi1jbWRcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfY29tbWFuZCA6PSBTb21lIHMpLFxuICAgICAgXCIgRGlmZiBjb21tYW5kIHdoZW4gdXNpbmcgY29kZSBleHBlY3RhdGlvbnMgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIiApO1xuICAgICggXCItcHJldHR5XCIsXG4gICAgICBBcmcuU2V0IHByZXR0eSxcbiAgICAgIFwiIEluc3RydWN0IGNvZGUgZ2VuZXJhdG9ycyB0byBpbXByb3ZlIHRoZSBwcmV0dGluZXNzIG9mIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItc3R5bGVyXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHN0eWxlciA6PSBTb21lIHMpLCBcIiBDb2RlIHN0eWxlclwiKTtcbiAgICAoIFwiLW91dHB1dC1tZXRhZGF0YVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIkZJTEUgV2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBtZXRhZGF0YVwiICk7XG4gICAgKCBcIi1jb3JyZWN0ZWQtc3VmZml4XCIsXG4gICAgICBBcmcuU2V0X3N0cmluZyBjb3JyZWN0ZWRfc3VmZml4LFxuICAgICAgXCJTVUZGSVggU3VmZml4IHRvIGFwcGVuZCB0byBjb3JyZWN0ZWQgZmlsZXNcIiApO1xuICBdXG5cbmxldCBnZXRfYXJncyA/KHN0YW5kYWxvbmVfYXJncyA9IHN0YW5kYWxvbmVfYXJncykgKCkgPVxuICBzdGFuZGFsb25lX2FyZ3MgQCBMaXN0LnJldiAhYXJnc1xuXG5sZXQgc3RhbmRhbG9uZV9tYWluICgpID1cbiAgbGV0IHVzYWdlID0gUHJpbnRmLnNwcmludGYgXCIlcyBbZXh0cmFfYXJnc10gWzxmaWxlcz5dXCIgZXhlX25hbWUgaW5cbiAgbGV0IGFyZ3MgPSBnZXRfYXJncyAoKSBpblxuICBBcmcucGFyc2UgKEFyZy5hbGlnbiBhcmdzKSBzZXRfaW5wdXQgdXNhZ2U7XG4gIGludGVycHJldF9tYXNrICgpO1xuICBpZiAhcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMgdGhlbiAoXG4gICAgcHJpbnRfdHJhbnNmb3JtYXRpb25zICgpO1xuICAgIFN0ZGxpYi5leGl0IDApO1xuICBpZiAhcmVxdWVzdF9wcmludF9wYXNzZXMgdGhlbiAoXG4gICAgcHJpbnRfcGFzc2VzICgpO1xuICAgIFN0ZGxpYi5leGl0IDApO1xuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXM6IG5vIGlucHV0IGZpbGUgZ2l2ZW5cXG4lIVwiIGV4ZV9uYW1lO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IFNvbWUgZm4gLT5cbiAgICAgIGxldCBraW5kID1cbiAgICAgICAgbWF0Y2ggIWtpbmQgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICBtYXRjaCBLaW5kLm9mX2ZpbGVuYW1lIGZuIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBrIC0+IGtcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICBcIiVzOiBkb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCAnJXMnLCB1c2UgLWltcGwgb3IgLWludGYuXFxuXCJcbiAgICAgICAgICAgICAgICAgIGV4ZV9uYW1lIGZuO1xuICAgICAgICAgICAgICAgIFN0ZGxpYi5leGl0IDIpXG4gICAgICBpblxuICAgICAgbGV0IGlucHV0X25hbWUsIHJlbG9jYXRlID1cbiAgICAgICAgbWF0Y2ggIWxvY19mbmFtZSB3aXRoIE5vbmUgLT4gKGZuLCBmYWxzZSkgfCBTb21lIGZuIC0+IChmbiwgdHJ1ZSlcbiAgICAgIGluXG4gICAgICBwcm9jZXNzX2ZpbGUga2luZCBmbiB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgfm91dHB1dF9tb2RlOiFvdXRwdXRfbW9kZVxuICAgICAgICB+b3V0cHV0OiFvdXRwdXQgfmVtYmVkX2Vycm9yczohZW1iZWRfZXJyb3JzXG5cbmxldCByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm4gPVxuICBsZXQgaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0ID0gbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGlucHV0X2ZuIGluXG4gIGxldCBhc3QgPVxuICAgIHRyeVxuICAgICAgbGV0IGFzdCA9IGV4dHJhY3RfY29va2llcyBhc3QgaW5cbiAgICAgIGxldCB0b29sX25hbWUgPSBBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSBpblxuICAgICAgbGV0IGhvb2sgPSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3AgaW5cbiAgICAgIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgICAgIHByb2Nlc3NfYXN0IGFzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICB+ZW1iZWRfZXJyb3JzOnRydWVcbiAgICB3aXRoIGV4biAtPiBleG5fdG9fZXh0ZW5zaW9uIGV4biB+a2luZDooSW50Zl9vcl9pbXBsLmtpbmQgYXN0KVxuICBpblxuICB3aXRoX291dHB1dCAoU29tZSBvdXRwdXRfZm4pIH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICBBc3RfaW8ud3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSB+YWRkX3BweF9jb250ZXh0OnRydWUpXG5cbmxldCBwYXJzZV9pbnB1dCBwYXNzZWRfaW5fYXJncyB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZyA9XG4gIHRyeVxuICAgIEFyZy5wYXJzZV9hcmd2IHBhc3NlZF9pbl9hcmdzIChBcmcuYWxpZ24gdmFsaWRfYXJncylcbiAgICAgIChmdW4gXyAtPiByYWlzZSAoQXJnLkJhZCBcImFub255bW91cyBhcmd1bWVudHMgbm90IGFjY2VwdGVkXCIpKVxuICAgICAgaW5jb3JyZWN0X2lucHV0X21zZ1xuICB3aXRoXG4gIHwgQXJnLkJhZCBtc2cgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgICBTdGRsaWIuZXhpdCAyXG4gIHwgQXJnLkhlbHAgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMFxuXG5sZXQgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGlucHV0ID1cbiAgbGV0IHZhbGlkX2FyZ3MgPSBnZXRfYXJncyB+c3RhbmRhbG9uZV9hcmdzICgpIGluXG4gIG1hdGNoIExpc3QucmV2IEBAIEFycmF5LnRvX2xpc3QgQEAgaW5wdXQgd2l0aFxuICB8IG91dHB1dF9mbiA6OiBpbnB1dF9mbiA6OiBmbGFnc19hbmRfcHJvZ19uYW1lXG4gICAgd2hlbiBMaXN0Lmxlbmd0aCBmbGFnc19hbmRfcHJvZ19uYW1lID4gMCAtPlxuICAgICAgbGV0IHByb2dfbmFtZV9hbmRfZmxhZ3MgPSBMaXN0LnJldiBmbGFnc19hbmRfcHJvZ19uYW1lIHw+IEFycmF5Lm9mX2xpc3QgaW5cbiAgICAgIHBhcnNlX2lucHV0IHByb2dfbmFtZV9hbmRfZmxhZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBpbnRlcnByZXRfbWFzayAoKTtcbiAgICAgIHJld3JpdGVfYmluYXJ5X2FzdF9maWxlIGlucHV0X2ZuIG91dHB1dF9mbjtcbiAgICAgIFN0ZGxpYi5leGl0IDBcbiAgfCBbIGhlbHA7IF8gXSB3aGVuIFN0cmluZy5lcXVhbCBoZWxwIFwiLWhlbHBcIiB8fCBTdHJpbmcuZXF1YWwgaGVscCBcIi0taGVscFwiIC0+XG4gICAgICBwYXJzZV9pbnB1dCBpbnB1dCB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZzp1c2FnZTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICB8IF8gLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVXNhZ2U6ICVzXFxuJSFcIiB1c2FnZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcblxubGV0IHN0YW5kYWxvbmVfcnVuX2FzX3BweF9yZXdyaXRlciAoKSA9XG4gIGxldCBuID0gQXJyYXkubGVuZ3RoIFN0ZGxpYi5TeXMuYXJndiBpblxuICBsZXQgdXNhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgLWFzLXBweCBbZXh0cmFfYXJnc10gPGluZmlsZT4gPG91dGZpbGU+XCIgZXhlX25hbWVcbiAgaW5cbiAgbGV0IGFyZ3YgPSBBcnJheS5tYWtlIChuIC0gMSkgXCJcIiBpblxuICBhcmd2LigwKSA8LSBTdGRsaWIuU3lzLmFyZ3YuKDApO1xuICBmb3IgaSA9IDEgdG8gbiAtIDIgZG9cbiAgICBhcmd2LihpKSA8LSBTdGRsaWIuU3lzLmFyZ3YuKGkgKyAxKVxuICBkb25lO1xuICBsZXQgc3RhbmRhbG9uZV9hcmdzID1cbiAgICBMaXN0Lm1hcCBzdGFuZGFsb25lX2FyZ3MgfmY6KGZ1biAoYXJnLCBzcGVjLCBfZG9jKSAtPlxuICAgICAgICAoYXJnLCBzcGVjLCBcIiBVbnVzZWQgd2l0aCAtYXMtcHB4XCIpKVxuICBpblxuICBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJncyB+dXNhZ2UgYXJndlxuXG5sZXQgc3RhbmRhbG9uZSAoKSA9XG4gIEFzdGxpYi5pbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKTtcbiAgdHJ5XG4gICAgaWZcbiAgICAgIEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgPj0gMlxuICAgICAgJiZcbiAgICAgIG1hdGNoIFN0ZGxpYi5TeXMuYXJndi4oMSkgd2l0aFxuICAgICAgfCBcIi1hcy1wcHhcIiB8IFwiLS1hcy1wcHhcIiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuIHN0YW5kYWxvbmVfcnVuX2FzX3BweF9yZXdyaXRlciAoKVxuICAgIGVsc2Ugc3RhbmRhbG9uZV9tYWluICgpO1xuICAgIFN0ZGxpYi5leGl0IDBcbiAgd2l0aCBleG4gLT5cbiAgICBMb2NhdGlvbi5yZXBvcnRfZXhjZXB0aW9uIFN0ZGxpYi5Gb3JtYXQuZXJyX2Zvcm1hdHRlciBleG47XG4gICAgU3RkbGliLmV4aXQgMVxuXG5sZXQgcnVuX2FzX3BweF9yZXdyaXRlciAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lIGluXG4gIGxldCBpbnB1dCA9IFN0ZGxpYi5TeXMuYXJndiBpblxuICB0cnkgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3M6W10gfnVzYWdlIGlucHV0XG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHByZXR0eSAoKSA9ICFwcmV0dHlcblxubGV0IGVuYWJsZV9jaGVja3MgKCkgPVxuICAoKiBXZSBkbyBub3QgZW5hYmxlIHRoZSBsb2NhdGlvbnMgY2hlY2sgaGVyZSwgd2UgY3VycmVudGx5IHJlcXVpcmUgdGhhdCBvbmVcbiAgICAgdG8gYmUgc3BlY2lmaWNhbGx5IGVuYWJsZWQuICopXG4gIHBlcmZvcm1fY2hlY2tzIDo9IHRydWU7XG4gIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgOj0gdHJ1ZVxuXG5sZXQgZW5hYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gdHJ1ZVxubGV0IGRpc2FibGVfbG9jYXRpb25fY2hlY2sgKCkgPSBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA6PSBmYWxzZVxubGV0IG1hcF9zdHJ1Y3R1cmUgc3QgPSBtYXBfc3RydWN0dXJlIHN0XG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5cbmxldCB1bmRlcnNjb3JlX2JpbmRpbmcgZXhwID1cbiAgbGV0IGxvYyA9IGV4cC5wZXhwX2xvYyBpblxuICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHBhdF9hbnkgfmxvYykgfmV4cHI6ZXhwXG5cbmxldCB2YXJzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9uZ2lkZW50LnQgTG9jYXRlZC50IGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcGF0dCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0dC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X3ZhciB2IC0+IExvY2F0ZWQubWFwIChmdW4gdmFyIC0+IExvbmdpZGVudC5MaWRlbnQgdmFyKSB2IDo6IGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0dCBhY2NcbiAgZW5kXG5cbigqIEZvciBldmVyeSBbbGV0IHggPSAuLi5dIHN0cnVjdHVyZSBpdGVtLCBhZGQgYSBbbGV0IF8gPSB4XSAqKVxubGV0IGFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlIHN0ID1cbiAgICAgIGxldCByZWMgbG9vcCBzdCBhY2MgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICAgIHwgKHsgcHN0cl9kZXNjID0gUHN0cl92YWx1ZSAoXywgdmJzKTsgcHN0cl9sb2MgPSBsb2MgfSBhcyBpdGVtKSA6OiByZXN0XG4gICAgICAgICAgLT5cbiAgICAgICAgICAgIGxldCB2YXJzID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgdmJzIH5pbml0OltdIH5mOihmdW4gYWNjIHZiIC0+XG4gICAgICAgICAgICAgICAgICB2YXJzX29mI3BhdHRlcm4gdmIucHZiX3BhdCBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGlnbiA9XG4gICAgICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgIChMaXN0LnJldl9tYXAgdmFycyB+ZjooZnVuIHYgLT5cbiAgICAgICAgICAgICAgICAgICAgIHVuZGVyc2NvcmVfYmluZGluZyAocGV4cF9pZGVudCB+bG9jOnYubG9jIHYpKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsb29wIHJlc3QgKGlnbiBAIChpdGVtIDo6IGFjYykpXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IGxvb3AgcmVzdCAoaXRlbSA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAoc3VwZXIjc3RydWN0dXJlIHN0KSBbXVxuICBlbmRcblxubGV0IGJpbmRzX21vZHVsZV9uYW1lcyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW2Jvb2xdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIG1iIGFjYyA9XG4gICAgICBtYXRjaCBtYi5wbWJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICB8IE5vbmUgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgbWIgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBtZCBhY2MgPVxuICAgICAgbWF0Y2ggbWQucG1kX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiBtZCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3N1YnN0aXR1dGlvbiBtcyBfID1cbiAgICAgIG1hdGNoIG1zLnBtc19uYW1lLnR4dCB3aXRoIChfIDogc3RyaW5nKSAtPiB0cnVlXG5cbiAgICBtZXRob2QhIGZ1bmN0b3JfcGFyYW1ldGVyIGZwIGFjYyA9XG4gICAgICBtYXRjaCBmcCB3aXRoXG4gICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICB8IE5hbWVkIChuYW1lLCBfKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MpXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcGF0IGFjYyA9XG4gICAgICBtYXRjaCBwYXQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF91bnBhY2sgbmFtZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlIHwgTm9uZSAtPiBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybiBwYXQgYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gZXhwciBhY2MgPVxuICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2xldG1vZHVsZSAobmFtZSwgXywgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGV4cHIgYWNjXG4gIGVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG4oKiBbZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZV0gLS0gSWYgdHJ1ZSwgZ2VuZXJhdGVkIGNvZGVcbiAgIGNvbnRhaW5zIGNvbXBpbGVyIGF0dHJpYnV0ZSB0byBkaXNhYmxlIHVudXNlZCB3YXJuaW5ncywgaW5zdGVhZCBvZlxuICAgaW5zZXJ0aW5nIFtsZXQgXyA9IC4uLiBdLiAqKVxubGV0IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgPSByZWYgZmFsc2VcbmxldCBrZWVwX3czMl9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93MzJfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93MzJfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93MzJfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgbGV0IGNvbnZfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJjb2RlXCI7IFwiYXR0cmlidXRlXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImNvZGVcIiAtPiBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIDo9IGZhbHNlXG4gICAgICAgIHwgXCJhdHRyaWJ1dGVcIiAtPiBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWtlZXAtdzMyXCIga2VlcF93MzJfc3BlY1xuICAgIH5kb2M6XCIgRG8gbm90IHRyeSB0byBkaXNhYmxlIHdhcm5pbmcgMzIgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1kaXNhYmxlLXczMi1tZXRob2RcIiBjb252X3czMl9zcGVjXG4gICAgfmRvYzpcIiBIb3cgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LWtlZXAtdzMyXCIga2VlcF93MzJfc3BlY1xuICAgIH5kb2M6XCIgRGVwcmVjYXRlZCwgdXNlIC1kZXJpdmluZy1rZWVwLXczMlwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi10eXBlLWNvbnYtdzMyXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgRGVwcmVjYXRlZCwgdXNlIC1kZXJpdmluZy1kaXNhYmxlLXczMi1tZXRob2RcIlxuXG5sZXQga2VlcF93MzJfaW1wbCAoKSA9ICFrZWVwX3czMl9pbXBsIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3czMl9pbnRmICgpID0gIWtlZXBfdzMyX2ludGYgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzYwX2ltcGwgPSByZWYgZmFsc2VcbmxldCBrZWVwX3c2MF9pbnRmID0gcmVmIGZhbHNlXG5cbmxldCAoKSA9XG4gIGxldCBrZWVwX3c2MF9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiaW1wbFwiOyBcImludGZcIjsgXCJib3RoXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImltcGxcIiAtPiBrZWVwX3c2MF9pbXBsIDo9IHRydWVcbiAgICAgICAgfCBcImludGZcIiAtPiBrZWVwX3c2MF9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBcImJvdGhcIiAtPlxuICAgICAgICAgICAga2VlcF93NjBfaW1wbCA6PSB0cnVlO1xuICAgICAgICAgICAga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXc2MFwiIGtlZXBfdzYwX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDYwIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIlxuXG5sZXQga2VlcF93NjBfaW1wbCAoKSA9ICFrZWVwX3c2MF9pbXBsIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbnRmICgpID0gIWtlZXBfdzYwX2ludGYgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzID0gcmVmIE9wdGlvbnMuZGVmYXVsdF9hbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5sZXQgKCkgPVxuICBEcml2ZXIuYWRkX2FyZyBcIi11bnVzZWQtY29kZS13YXJuaW5nc1wiXG4gICAgKEJvb2wgKCggOj0gKSBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncykpXG4gICAgfmRvYzpcIl8gQWxsb3cgcHB4IGRlcml2ZXJzIHRvIGVuYWJsZSB1bnVzZWQgY29kZSB3YXJuaW5nc1wiXG5cbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKSA9ICFhbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5tb2R1bGUgQXJncyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBBc3RfcGF0dGVybiA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBBc3RfcGF0dGVyblxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuLnQpXG5cbiAgdHlwZSAnYSBwYXJhbSA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIHBhdHRlcm4gOiAoZXhwcmVzc2lvbiwgJ2EpIEFzdF9wYXR0ZXJuLlBhY2tlZC50O1xuICAgIGRlZmF1bHQgOiAnYTtcbiAgfVxuXG4gIGxldCBhcmcgbmFtZSBwYXR0ZXJuID1cbiAgICB7XG4gICAgICBuYW1lO1xuICAgICAgZGVmYXVsdCA9IE5vbmU7XG4gICAgICBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uUGFja2VkLmNyZWF0ZSBwYXR0ZXJuIChmdW4geCAtPiBTb21lIHgpO1xuICAgIH1cblxuICBsZXQgZmxhZyBuYW1lID1cbiAgICBsZXQgcGF0dGVybiA9IHBleHBfaWRlbnQgKGxpZGVudCAoc3RyaW5nIG5hbWUpKSBpblxuICAgIHsgbmFtZTsgZGVmYXVsdCA9IGZhbHNlOyBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uUGFja2VkLmNyZWF0ZSBwYXR0ZXJuIHRydWUgfVxuXG4gIHR5cGUgKF8sIF8pIHQgPVxuICAgIHwgTmlsIDogKCdtLCAnbSkgdFxuICAgIHwgQ29ucyA6ICgnbTEsICdhIC0+ICdtMikgdCAqICdhIHBhcmFtIC0+ICgnbTEsICdtMikgdFxuXG4gIGxldCBlbXB0eSA9IE5pbFxuICBsZXQgKCArPiApIGEgYiA9IENvbnMgKGEsIGIpXG5cbiAgbGV0IHJlYyBuYW1lcyA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBzdHJpbmcgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHQsIHApIC0+IHAubmFtZSA6OiBuYW1lcyB0XG5cbiAgbW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gICAgdHlwZSAoXywgXykgaW5zdGFuY2UgPVxuICAgICAgfCBJX25pbCA6ICgnbSwgJ20pIGluc3RhbmNlXG4gICAgICB8IElfY29ucyA6ICgnbTEsICdhIC0+ICdtMikgaW5zdGFuY2UgKiAnYSAtPiAoJ20xLCAnbTIpIGluc3RhbmNlXG5cbiAgICBsZXQgcmVjIGNyZWF0ZSA6XG4gICAgICAgIHR5cGUgYSBiLiAoYSwgYikgdCAtPiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdCAtPiAoYSwgYikgaW5zdGFuY2UgPVxuICAgICBmdW4gc3BlYyBhcmdzIC0+XG4gICAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICAgIHwgTmlsIC0+IElfbmlsXG4gICAgICB8IENvbnMgKHQsIHApIC0+XG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Nfb3B0IHAubmFtZSBhcmdzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwLmRlZmF1bHRcbiAgICAgICAgICAgIHwgU29tZSBleHByIC0+IEFzdF9wYXR0ZXJuLlBhY2tlZC5wYXJzZSBwLnBhdHRlcm4gZXhwci5wZXhwX2xvYyBleHByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBJX2NvbnMgKGNyZWF0ZSB0IGFyZ3MsIHZhbHVlKVxuXG4gICAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiLiAoYSwgYikgaW5zdGFuY2UgLT4gYSAtPiBiID1cbiAgICAgZnVuIHQgZiAtPiBtYXRjaCB0IHdpdGggSV9uaWwgLT4gZiB8IElfY29ucyAodCwgeCkgLT4gYXBwbHkgdCBmIHhcbiAgZW5kXG5cbiAgbGV0IGFwcGx5IHQgYXJncyBmID0gSW5zdGFuY2UuYXBwbHkgKEluc3RhbmNlLmNyZWF0ZSB0IGFyZ3MpIGZcbmVuZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEdlbmVyYXRvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgaWdub3JlIChfIDogdCkgPSAoKVxuXG50eXBlIHBhcnNlZF9hcmdzID1cbiAgfCBBcmdzIG9mIChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0XG4gIHwgVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG50eXBlICdpdGVtIGRlcml2ZWRfY29kZSA9IHsgaXRlbXMgOiAnaXRlbSBsaXN0OyB1bnVzZWRfY29kZV93YXJuaW5ncyA6IGJvb2wgfVxuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIHR5cGUgZGVyaXZlciA9IHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgVCA6IHtcbiAgICAgICAgc3BlYyA6ICgnYywgJ2EpIEFyZ3MudDtcbiAgICAgICAgZ2VuIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2M7XG4gICAgICAgIGFyZ19uYW1lcyA6IFN0cmluZy5TZXQudDtcbiAgICAgICAgZGVwcyA6IGRlcml2ZXIgbGlzdDtcbiAgICAgICAgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sO1xuICAgICAgfVxuICAgICAgICAtPiAoJ2EsICdiKSB0XG5cbiAgbGV0IGRlcHMgKFQgdCkgPSB0LmRlcHNcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSA/YXR0cmlidXRlczooXyA9IFtdKSA/KGRlcHMgPSBbXSkgPyh1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlKVxuICAgICAgICBzcGVjIGdlbiA9XG4gICAgICBsZXQgYXJnX25hbWVzID0gU3RyaW5nLlNldC5vZl9saXN0IChBcmdzLm5hbWVzIHNwZWMpIGluXG4gICAgICBUIHsgc3BlYzsgZ2VuOyBhcmdfbmFtZXM7IGRlcHM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH1cblxuICAgIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgICAgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgQXJncy5lbXB0eSBnZW5cbiAgZW5kXG5cbiAgbGV0IG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIHNwZWMgZ2VuID1cbiAgICBWMi5tYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjXG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci53aXRoX2xvY19hbmRfcGF0aCBnZW4pXG5cbiAgbGV0IG1ha2Vfbm9hcmcgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIGdlbiA9XG4gICAgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgQXJncy5lbXB0eSBnZW5cblxuICBsZXQgbWVyZ2VfYWNjZXB0ZWRfYXJncyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYWNjXG4gICAgICB8IFQgdCA6OiByZXN0IC0+IGxvb3AgKFN0cmluZy5TZXQudW5pb24gYWNjIHQuYXJnX25hbWVzKSByZXN0XG4gICAgaW5cbiAgICBsb29wIFN0cmluZy5TZXQuZW1wdHkgbFxuXG4gIGxldCBjaGVja19hcmd1bWVudHMgbmFtZSBnZW5lcmF0b3JzIChhcmdzIDogKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QpID1cbiAgICBsZXQgZW1wdHlfbGFiZWxfZXJyb3IgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwIGFyZ3MgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IGxhYmVsIHRoZW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBnZW5lcmF0b3IgYXJndW1lbnRzIG11c3QgYmUgbGFiZWxsZWRcIilcbiAgICAgICAgICBlbHNlIE5vbmUpXG4gICAgaW5cbiAgICBsZXQgZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yID1cbiAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgKExpc3QuZmluZF9hX2R1cCBhcmdzIH5jb21wYXJlOihmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpKVxuICAgICAgICB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGFyZ3VtZW50IGxhYmVsbGVkICclcycgYXBwZWFycyBtb3JlIHRoYW4gb25jZVwiXG4gICAgICAgICAgICBsYWJlbClcbiAgICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgaW5cbiAgICBsZXQgYWNjZXB0ZWRfYXJncyA9IG1lcmdlX2FjY2VwdGVkX2FyZ3MgZ2VuZXJhdG9ycyBpblxuICAgIGxldCB1bmFjY2VwdGVkX2FyZ3VtZW50ID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLlNldC5tZW0gbGFiZWwgYWNjZXB0ZWRfYXJncykgdGhlblxuICAgICAgICAgICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKFN0cmluZy5TZXQuZWxlbWVudHMgYWNjZXB0ZWRfYXJncykgbGFiZWxcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgcyAtPiBcIi5cXG5cIiBeIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yICclcycgZG9lc24ndCBhY2NlcHQgYXJndW1lbnQgXFxcbiAgICAgICAgICAgICAgICAgICclcyclc1wiXG4gICAgICAgICAgICAgICAgIG5hbWUgbGFiZWwgc3BlbGxjaGVja19tc2cpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBlbXB0eV9sYWJlbF9lcnJvciBAIGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciBAIHVuYWNjZXB0ZWRfYXJndW1lbnRcbiAgICBpblxuICAgIGlmIExpc3QubGVuZ3RoIGVycm9ycyA9IDAgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yc1xuXG4gIGxldCBhcHBseSAoVCB0KSB+bmFtZTpfIH5jdHh0IHggYXJncyA9IEFyZ3MuYXBwbHkgdC5zcGVjIGFyZ3MgKHQuZ2VuIH5jdHh0IHgpXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSAobmFtZSwgZ2VuZXJhdG9ycywgYXJncykgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGNoZWNrX2FyZ3VtZW50cyBuYW1lLnR4dCBnZW5lcmF0b3JzIGFyZ3MgPj58IGZ1biAoKSAtPlxuICAgIExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICB7XG4gICAgICAgICAgaXRlbXMgPSBhcHBseSAoVCB0KSB+bmFtZTpuYW1lLnR4dCB+Y3R4dCBlbnRyeSBhcmdzO1xuICAgICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzID0gdC51bnVzZWRfY29kZV93YXJuaW5ncztcbiAgICAgICAgfSlcblxuICBsZXQgYXBwbHlfYWxsIH5jdHh0IGVudHJ5IGdlbmVyYXRvcnMgZXh0X3RvX2l0ZW0gPVxuICAgIGxldCBsID0gTGlzdC5tYXAgZ2VuZXJhdG9ycyB+ZjooYXBwbHlfYWxsIH5jdHh0IGVudHJ5KSBpblxuICAgIGxldCBsMSwgbGVyciA9XG4gICAgICBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uIE9rIGUgLT4gTGVmdCBlIHwgRXJyb3IgZSAtPiBSaWdodCBlKSBsXG4gICAgaW5cbiAgICBsZXQgbGVyciA9XG4gICAgICBMaXN0LmNvbmNhdCBsZXJyXG4gICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGVyciAtPiBleHRfdG9faXRlbSB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgIGluXG4gICAgTGlzdC5jb25jYXQgbDEgQCBbIHsgaXRlbXMgPSBsZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH0gXVxuZW5kXG5cbm1vZHVsZSBEZXJpdmVyID0gc3RydWN0XG4gIG1vZHVsZSBBY3R1YWxfZGVyaXZlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBzdHJfdHlwZV9kZWNsIDpcbiAgICAgICAgKHN0cnVjdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfZXhjZXB0aW9uIDogKHN0cnVjdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHN0cnVjdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2RlY2wgOlxuICAgICAgICAoc2lnbmF0dXJlLCByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZSwgdHlwZV9leHRlbnNpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlLCB0eXBlX2V4Y2VwdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgOlxuICAgICAgICAoc2lnbmF0dXJlLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgZXh0ZW5zaW9uIDpcbiAgICAgICAgKGxvYzpMb2NhdGlvbi50IC0+IHBhdGg6c3RyaW5nIC0+IGNvcmVfdHlwZSAtPiBleHByZXNzaW9uKSBvcHRpb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgQWxpYXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdHJfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfdHlwZV9leHQgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl9leGNlcHRpb24gOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfdHlwZV9leHQgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ19leGNlcHRpb24gOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlIGtpbmQgPSBTdHIgfCBTaWdcblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBraW5kIDoga2luZDtcbiAgICAgIGdldCA6IEFjdHVhbF9kZXJpdmVyLnQgLT4gKCdhLCAnYikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgZ2V0X3NldCA6IEFsaWFzLnQgLT4gc3RyaW5nIGxpc3Q7XG4gICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJ0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX3R5cGVfZXh0ID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcImV4Y2VwdGlvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9leGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9tb2R1bGVfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwibW9kdWxlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ190eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ190eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSB0eXBlIGV4dGVuc2lvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9leHQpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfZXhjZXB0aW9uID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIGV4Y2VwdGlvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ19leGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ19tb2R1bGVfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIG1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ19tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ19tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cbiAgZW5kXG5cbiAgdHlwZSB0ID0gQWN0dWFsX2Rlcml2ZXIgb2YgQWN0dWFsX2Rlcml2ZXIudCB8IEFsaWFzIG9mIEFsaWFzLnRcbiAgdHlwZSBQcHhfZGVyaXZlcnMuZGVyaXZlciArPSBUIG9mIHRcblxuICBsZXQgZGVyaXZlcnMgKCkgPVxuICAgIExpc3QuZmlsdGVyX21hcCAoUHB4X2Rlcml2ZXJzLmRlcml2ZXJzICgpKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgVCB0IC0+IFNvbWUgKG5hbWUsIHQpXG4gICAgICB8IF8gLT4gTm9uZSlcblxuICBleGNlcHRpb24gTm90X3N1cHBvcnRlZCBvZiBzdHJpbmdcblxuICBsZXQgcmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpIG5hbWUgPVxuICAgIGxldCByZWMgbG9vcCBuYW1lIGNvbGxlY3RlZCA9XG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0cyBjb2xsZWN0ZWQgfmY6KGZ1biAoZCA6IEFjdHVhbF9kZXJpdmVyLnQpIC0+XG4gICAgICAgICAgICBTdHJpbmcuZXF1YWwgZC5uYW1lIG5hbWUpXG4gICAgICB0aGVuIGNvbGxlY3RlZFxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBQcHhfZGVyaXZlcnMubG9va3VwIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgKFQgKEFjdHVhbF9kZXJpdmVyIGRydikpIC0+IGRydiA6OiBjb2xsZWN0ZWRcbiAgICAgICAgfCBTb21lIChUIChBbGlhcyBhbGlhcykpIC0+XG4gICAgICAgICAgICBsZXQgc2V0ID0gZmllbGQuZ2V0X3NldCBhbGlhcyBpblxuICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHNldCB+aW5pdDpjb2xsZWN0ZWQgfmY6bG9vcFxuICAgICAgICB8IF8gLT4gcmFpc2UgKE5vdF9zdXBwb3J0ZWQgbmFtZSlcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIG5hbWUgW10pXG5cbiAgbGV0IHJlc29sdmVfaW50ZXJuYWwgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpIG5hbWUgPVxuICAgIExpc3QubWFwIChyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyBmaWVsZCBuYW1lKSB+ZjooZnVuIGRydiAtPlxuICAgICAgICBtYXRjaCBmaWVsZC5nZXQgZHJ2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgICAgIHwgU29tZSBnIC0+IChkcnYubmFtZSwgZykpXG5cbiAgbGV0IHN1cHBvcnRlZF9mb3IgZmllbGQgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChkZXJpdmVycyAoKSkgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSB+ZjooZnVuIGFjYyAobmFtZSwgXykgLT5cbiAgICAgICAgbWF0Y2ggcmVzb2x2ZV9pbnRlcm5hbCBmaWVsZCBuYW1lIHdpdGhcbiAgICAgICAgfCBfIC0+IFN0cmluZy5TZXQuYWRkIG5hbWUgYWNjXG4gICAgICAgIHwgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgXyAtPiBhY2MpXG4gICAgfD4gU3RyaW5nLlNldC5lbGVtZW50c1xuXG4gIGxldCBub3Rfc3VwcG9ydGVkIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSA/KHNwZWxsY2hlY2sgPSB0cnVlKSBuYW1lID1cbiAgICBsZXQgc3BlbGxjaGVja19tc2cgPVxuICAgICAgaWYgc3BlbGxjaGVjayB0aGVuXG4gICAgICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoc3VwcG9ydGVkX2ZvciBmaWVsZCkgbmFtZS50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgcyAtPiBcIi5cXG5cIiBeIHNcbiAgICAgIGVsc2UgXCJcIlxuICAgIGluXG4gICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICBcIlBweGxpYi5EZXJpdmluZzogJyVzJyBpcyBub3QgYSBzdXBwb3J0ZWQgJXMgZGVyaXZpbmcgZ2VuZXJhdG9yJXNcIlxuICAgICAgbmFtZS50eHQgZmllbGQubmFtZSBzcGVsbGNoZWNrX21zZ1xuXG4gIGxldCByZXNvbHZlIGZpZWxkIG5hbWUgPVxuICAgIHRyeSBPayAocmVzb2x2ZV9pbnRlcm5hbCBmaWVsZCBuYW1lLnR4dClcbiAgICB3aXRoIE5vdF9zdXBwb3J0ZWQgbmFtZScgLT5cbiAgICAgIEVycm9yIChub3Rfc3VwcG9ydGVkIGZpZWxkIH5zcGVsbGNoZWNrOihTdHJpbmcuZXF1YWwgbmFtZS50eHQgbmFtZScpIG5hbWUpXG5cbiAgbGV0IHJlc29sdmVfYWxsIGZpZWxkIGRlcml2ZXJzID1cbiAgICBsZXQgZGVyaXZlcnNfYW5kX2FyZ3MsIGRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyA9XG4gICAgICBMaXN0LnBhcnRpdGlvbl9tYXBcbiAgICAgICAgKGZ1biAobmFtZSwgYXJncykgLT5cbiAgICAgICAgICBtYXRjaCBQcHhfZGVyaXZlcnMubG9va3VwIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRWl0aGVyLlJpZ2h0IChub3Rfc3VwcG9ydGVkIGZpZWxkIG5hbWUpXG4gICAgICAgICAgfCBTb21lIChUIF8pIC0+IChcbiAgICAgICAgICAgICAgKCogSXQncyBvbmUgb2Ygb3VycywgcGFyc2UgdGhlIGFyZ3VtZW50cyBub3cuIFdlIGNhbid0IGRvIGl0IGJlZm9yZSBzaW5jZVxuICAgICAgICAgICAgICAgICBwcHhfZGVyaXZpbmcgdXNlcyBhIGRpZmZlcmVudCBzeW50YXggZm9yIGFyZ3VtZW50cy4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgICAgICAgIHwgQXJncyBsIC0+IEVpdGhlci5MZWZ0IChTb21lIChuYW1lLCBsKSlcbiAgICAgICAgICAgICAgfCBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpIC0+XG4gICAgICAgICAgICAgICAgICBFaXRoZXIuUmlnaHRcbiAgICAgICAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYyBcIlBweGxpYi5EZXJpdmluZzogJXNcIiBtc2cpKVxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICgqIEl0J3Mgbm90IG9uZSBvZiBvdXJzLCBpZ25vcmUgaXQuICopXG4gICAgICAgICAgICAgIEVpdGhlci5MZWZ0IE5vbmUpXG4gICAgICAgIGRlcml2ZXJzXG4gICAgICB8PiBmdW4gKGwxLCBsMikgLT4gKExpc3QuZmlsdGVyX29wdCBsMSwgbDIpXG4gICAgaW5cbiAgICAoKiBTZXQgb2YgYWN0dWFsIGRlcml2ZXIgbmFtZXMgKilcbiAgICBsZXQgc2VlbiA9IEhhc2h0YmwuY3JlYXRlIDE2IGluXG4gICAgbGV0IHJlc3VsdCwgZGVwX2Vycm9ycyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+aW5pdDooW10sIFtdKSBkZXJpdmVyc19hbmRfYXJnc1xuICAgICAgICB+ZjooZnVuIChyZXN1bHQsIGVycm9ycykgKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzb2x2ZSBmaWVsZCBuYW1lIHdpdGhcbiAgICAgICAgICB8IEVycm9yIGUgLT4gKHJlc3VsdCwgZXJyb3JzIEAgWyBlIF0pXG4gICAgICAgICAgfCBPayBuYW1lZF9nZW5lcmF0b3JzIC0+XG4gICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIG5hbWVkX2dlbmVyYXRvcnNcbiAgICAgICAgICAgICAgICAgIH5mOihmdW4gKGFjdHVhbF9kZXJpdmVyX25hbWUsIGdlbikgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGR1cF9lcnJvciA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMuZmFpbF9vbl9kdXBsaWNhdGVfZGVyaXZlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIEhhc2h0YmwubWVtIHNlZW4gYWN0dWFsX2Rlcml2ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGFwcGVhcnMgdHdpY2VcIiBhY3R1YWxfZGVyaXZlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxfZXJyID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgKEdlbmVyYXRvci5kZXBzIGdlbikgfmY6KGZ1biBkZXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyBmaWVsZCBkZXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXBfbmFtZSA9IGRydi5uYW1lIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEhhc2h0YmwubWVtIHNlZW4gZGVwX25hbWUpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlcml2ZXIgJXMgaXMgbmVlZGVkIGZvciAlcywgeW91IG5lZWQgdG8gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGl0IGJlZm9yZSBpbiB0aGUgbGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwX25hbWUgbmFtZS50eHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE5vbmUpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBIYXNodGJsLnNldCBzZWVuIH5rZXk6YWN0dWFsX2Rlcml2ZXJfbmFtZSB+ZGF0YTooKTtcbiAgICAgICAgICAgICAgICAgICAgZHVwX2Vycm9yIEAgbF9lcnIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggcmVzdWx0IEAgWyAobmFtZSwgTGlzdC5tYXAgbmFtZWRfZ2VuZXJhdG9ycyB+ZjpzbmQsIGFyZ3MpIF0sXG4gICAgICAgICAgICAgICAgZXJyb3JzIEAgbF9lcnIgKSlcbiAgICBpblxuICAgIChyZXN1bHQsIGRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyBAIGRlcF9lcnJvcnMpXG5cbiAgbGV0IGFkZCA/c3RyX3R5cGVfZGVjbCA/c3RyX3R5cGVfZXh0ID9zdHJfZXhjZXB0aW9uID9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgP3NpZ190eXBlX2RlY2wgP3NpZ190eXBlX2V4dCA/c2lnX2V4Y2VwdGlvbiA/c2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9leHRlbnNpb24gbmFtZSA9XG4gICAgbGV0IGFjdHVhbF9kZXJpdmVyIDogQWN0dWFsX2Rlcml2ZXIudCA9XG4gICAgICB7XG4gICAgICAgIG5hbWU7XG4gICAgICAgIHN0cl90eXBlX2RlY2w7XG4gICAgICAgIHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbjtcbiAgICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2V4dDtcbiAgICAgICAgc2lnX2V4Y2VwdGlvbjtcbiAgICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIGV4dGVuc2lvbjtcbiAgICAgIH1cbiAgICBpblxuICAgIFBweF9kZXJpdmVycy5yZWdpc3RlciBuYW1lIChUIChBY3R1YWxfZGVyaXZlciBhY3R1YWxfZGVyaXZlcikpO1xuICAgIChtYXRjaCBleHRlbnNpb24gd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGxldCBleHRlbnNpb24gPVxuICAgICAgICAgIEV4dGVuc2lvbi5kZWNsYXJlIG5hbWUgRXhwcmVzc2lvbiBBc3RfcGF0dGVybi4ocHR5cCBfXykgZlxuICAgICAgICBpblxuICAgICAgICBEcml2ZXIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25cbiAgICAgICAgICAoXCJQcHhsaWIuRGVyaXZpbmcuXCIgXiBuYW1lKVxuICAgICAgICAgIH5ydWxlczpbIENvbnRleHRfZnJlZS5SdWxlLmV4dGVuc2lvbiBleHRlbnNpb24gXSk7XG4gICAgbmFtZVxuXG4gIGxldCBhZGRfYWxpYXMgbmFtZSA/c3RyX3R5cGVfZGVjbCA/c3RyX3R5cGVfZXh0ID9zdHJfZXhjZXB0aW9uXG4gICAgICA/c3RyX21vZHVsZV90eXBlX2RlY2wgP3NpZ190eXBlX2RlY2wgP3NpZ190eXBlX2V4dCA/c2lnX2V4Y2VwdGlvblxuICAgICAgP3NpZ19tb2R1bGVfdHlwZV9kZWNsIHNldCA9XG4gICAgbGV0IGFsaWFzIDogQWxpYXMudCA9XG4gICAgICBsZXQgZ2V0ID0gZnVuY3Rpb24gTm9uZSAtPiBzZXQgfCBTb21lIHNldCAtPiBzZXQgaW5cbiAgICAgIHtcbiAgICAgICAgc3RyX3R5cGVfZGVjbCA9IGdldCBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQgPSBnZXQgc3RyX3R5cGVfZXh0O1xuICAgICAgICBzdHJfZXhjZXB0aW9uID0gZ2V0IHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsID0gZ2V0IHNpZ190eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2V4dCA9IGdldCBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb24gPSBnZXQgc2lnX2V4Y2VwdGlvbjtcbiAgICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgPSBnZXQgc2lnX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWxpYXMgYWxpYXMpKTtcbiAgICBuYW1lXG5lbmRcblxubGV0IGFkZCA9IERlcml2ZXIuYWRkXG5sZXQgYWRkX2FsaWFzID0gRGVyaXZlci5hZGRfYWxpYXNcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBbQEBkZXJpdmluZyBdIHBhcnNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgaW52YWxpZF93aXRoIH5sb2MgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcImludmFsaWQgW0BAZGVyaXZpbmcgXSBhdHRyaWJ1dGUgc3ludGF4XCJcblxubGV0IGdlbmVyYXRvcl9uYW1lX29mX2lkIGxvYyBpZCA9XG4gIG1hdGNoIExvbmdpZGVudC5mbGF0dGVuX2V4biBpZCB3aXRoXG4gIHwgbCAtPiB7IGxvYzsgdHh0ID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIGwgfVxuICB8IGV4Y2VwdGlvbiBfIC0+IGludmFsaWRfd2l0aCB+bG9jXG5cbmV4Y2VwdGlvbiBVbmtub3duX3N5bnRheCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbmxldCBwYXJzZV9hcmd1bWVudHMgbCA9XG4gIHRyeVxuICAgIEFyZ3NcbiAgICAgIChtYXRjaCBsIHdpdGhcbiAgICAgIHwgWyAoTm9sYWJlbCwgZSkgXSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgLT5cbiAgICAgICAgICAgICAgTGlzdC5tYXAgZmllbGRzIH5mOihmdW4gKGlkLCBleHByKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBpZC50eHQgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IExpZGVudCBzIC0+IHNcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheCAoaWQubG9jLCBcInNpbXBsZSBpZGVudGlmaWVyIGV4cGVjdGVkXCIpKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIChuYW1lLCBleHByKSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheFxuICAgICAgICAgICAgICAgICAgICggZS5wZXhwX2xvYyxcbiAgICAgICAgICAgICAgICAgICAgIFwibm9uLW9wdGlvbmFsIGxhYmVsbGVkIGFyZ3VtZW50IG9yIHJlY29yZCBleHBlY3RlZFwiICkpKVxuICAgICAgfCBsIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbCB+ZjooZnVuIChsYWJlbCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbGFiZWwgd2l0aFxuICAgICAgICAgICAgICB8IExhYmVsbGVkIHMgLT4gKHMsIGV4cHIpXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAgICAgKGV4cHIucGV4cF9sb2MsIFwibm9uLW9wdGlvbmFsIGxhYmVsbGVkIGFyZ3VtZW50IGV4cGVjdGVkXCIpKSkpXG4gIHdpdGggVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPiBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpXG5cbmxldCBta19kZXJpdmluZ19hdHRyIGNvbnRleHQgfnByZWZpeCB+c3VmZml4ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICAocHJlZml4IF4gXCJkZXJpdmluZ1wiIF4gc3VmZml4KVxuICAgIGNvbnRleHRcbiAgICBBc3RfcGF0dGVybi4oXG4gICAgICBsZXQgZ2VuZXJhdG9yX25hbWUgKCkgPVxuICAgICAgICBtYXAnIChwZXhwX2lkZW50IF9fKSB+ZjooZnVuIGxvYyBmIGlkIC0+XG4gICAgICAgICAgICBmIChnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3IgKCkgPVxuICAgICAgICBtYXAgKGdlbmVyYXRvcl9uYW1lICgpKSB+ZjooZnVuIGYgeCAtPiBmICh4LCBBcmdzIFtdKSlcbiAgICAgICAgfHx8IHBhY2syXG4gICAgICAgICAgICAgIChwZXhwX2FwcGx5IChnZW5lcmF0b3JfbmFtZSAoKSlcbiAgICAgICAgICAgICAgICAgKG1hcDEgKG1hbnkgX18pIH5mOnBhcnNlX2FyZ3VtZW50cykpXG4gICAgICBpblxuICAgICAgbGV0IGdlbmVyYXRvcnMgPVxuICAgICAgICBwZXhwX3R1cGxlIChtYW55IChnZW5lcmF0b3IgKCkpKVxuICAgICAgICB8fHwgbWFwIChnZW5lcmF0b3IgKCkpIH5mOihmdW4gZiB4IC0+IGYgWyB4IF0pXG4gICAgICBpblxuICAgICAgcHN0ciAocHN0cl9ldmFsIGdlbmVyYXRvcnMgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFVudXNlZCB3YXJuaW5nIHN0dWZmICsgbG9jYXRpb25zIGNoZWNrIHNpbGVuY2luZyAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncyA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBzdHJpbmcgPVxuICAgIExpc3Quc29ydCB3YXJuaW5ncyB+Y21wOkludC5jb21wYXJlXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biB3YXJuaW5nIC0+IFwiLVwiIF4gSW50LnRvX3N0cmluZyB3YXJuaW5nKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiXG4gIGluXG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwud2FybmluZ1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzdHJpbmcpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxubGV0IGlubGluZV9kb2NfYXR0ciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwuZG9jXCI7IGxvYyB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIFwiQGlubGluZVwiKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbigqIHdyYXAgYSBzdHJ1Y3R1cmUgaW4gZXh0cmEgYXR0cmlidXRlcyAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgPVxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IGluY2x1ZGVfaW5mb3MgfmxvYyAocG1vZF9zdHJ1Y3R1cmUgfmxvYyBzdCkgaW5cbiAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPVxuICAgIGlmIGhpZGUgdGhlbiBbIGlubGluZV9kb2NfYXR0cjsgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUgXVxuICAgIGVsc2UgWyBpbmxpbmVfZG9jX2F0dHIgXVxuICBpblxuICBbIHBzdHJfaW5jbHVkZSB+bG9jIHsgaW5jbHVkZV9pbmZvcyB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgfSBdXG5cbigqIGRlY2lkZSB3aGF0IHRvIHdyYXAgYSBzdHJ1Y3R1cmUgaW4sIHRoZW4gY2FsbCBhYm92ZSBbd3JhcF9zdHJdICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3Mgc3QgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICB1bnVzZWRfY29kZV93YXJuaW5ncyAmJiBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKVxuICBpblxuICBsZXQgd2FybmluZ3MsIHN0ID1cbiAgICBpZiBrZWVwX3czMl9pbXBsICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzIHRoZW4gKFtdLCBzdClcbiAgICBlbHNlIGlmIG5vdCAhZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSB0aGVuXG4gICAgICAoW10sIElnbm9yZV91bnVzZWRfd2FybmluZy5hZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzI3N0cnVjdHVyZSBzdClcbiAgICBlbHNlIChbIDMyIF0sIHN0KVxuICBpblxuICBsZXQgd2FybmluZ3MsIHN0ID1cbiAgICBpZlxuICAgICAga2VlcF93NjBfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgfHwgbm90IChJZ25vcmVfdW51c2VkX3dhcm5pbmcuYmluZHNfbW9kdWxlX25hbWVzI3N0cnVjdHVyZSBzdCBmYWxzZSlcbiAgICB0aGVuICh3YXJuaW5ncywgc3QpXG4gICAgZWxzZSAoNjAgOjogd2FybmluZ3MsIHN0KVxuICBpblxuICBsZXQgd3JhcCwgc3QgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgd2FybmluZ3MgdGhlbiAoaGlkZSwgc3QpXG4gICAgZWxzZSAodHJ1ZSwgcHN0cl9hdHRyaWJ1dGUgfmxvYyAoZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MpIDo6IHN0KVxuICBpblxuICBpZiB3cmFwIHRoZW4gd3JhcF9zdHIgfmxvYyB+aGlkZSBzdCBlbHNlIHN0XG5cbigqIHdyYXAgYmxvY2tzIHRoYXQgc2hhcmUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXSwgdXNpbmcgYWJvdmUgW3dyYXBfc3RyXSBhYm92ZSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgbGlzdCA9XG4gIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOihmdW4geyBpdGVtczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfSAtPlxuICAgICAgaWYgTGlzdC5pc19lbXB0eSBpdGVtcyB0aGVuIFtdXG4gICAgICBlbHNlIHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIGl0ZW1zKVxuXG4oKiB3cmFwIGEgc2lnbmF0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtdHlfc2lnbmF0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc2lnX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc2lnbmF0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc2lnXSAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHNnID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgdW51c2VkX2NvZGVfd2FybmluZ3MgJiYgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzID1cbiAgICBpZiBrZWVwX3czMl9pbnRmICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzIHRoZW4gW10gZWxzZSBbIDMyIF1cbiAgaW5cbiAgbGV0IHdhcm5pbmdzID1cbiAgICBpZlxuICAgICAga2VlcF93NjBfaW50ZiAoKVxuICAgICAgfHwgKG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzaWduYXR1cmUgc2cgZmFsc2UpKVxuICAgICAgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICB0aGVuIHdhcm5pbmdzXG4gICAgZWxzZSA2MCA6OiB3YXJuaW5nc1xuICBpblxuICBsZXQgd3JhcCwgc2cgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgd2FybmluZ3MgdGhlbiAoaGlkZSwgc2cpXG4gICAgZWxzZSAodHJ1ZSwgcHNpZ19hdHRyaWJ1dGUgfmxvYyAoZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MpIDo6IHNnKVxuICBpblxuICBpZiB3cmFwIHRoZW4gd3JhcF9zaWcgfmxvYyB+aGlkZSBzZyBlbHNlIHNnXG5cbigqIHdyYXAgYmxvY2tzIHRoYXQgc2hhcmUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXSwgdXNpbmcgYWJvdmUgW3dyYXBfc2lnXSBhYm92ZSAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgbGlzdCA9XG4gIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOihmdW4geyBpdGVtczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfSAtPlxuICAgICAgaWYgTGlzdC5pc19lbXB0eSBpdGVtcyB0aGVuIFtdXG4gICAgICBlbHNlIHdyYXBfc2lnIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIGl0ZW1zKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE1haW4gZXhwYW5zaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCB0eXBlc191c2VkX2J5X2Rlcml2aW5nICh0ZHMgOiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIDogc3RydWN0dXJlX2l0ZW0gbGlzdCA9XG4gIGlmIGtlZXBfdzMyX2ltcGwgKCkgdGhlbiBbXVxuICBlbHNlXG4gICAgTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgbGV0IHR5cCA9IENvbW1vbi5jb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCBpblxuICAgICAgICBsZXQgbG9jID0gdGQucHR5cGVfbG9jIGluXG4gICAgICAgIHBzdHJfdmFsdWUgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICBbXG4gICAgICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHBhdF9hbnkgfmxvYylcbiAgICAgICAgICAgICAgfmV4cHI6XG4gICAgICAgICAgICAgICAgKHBleHBfZnVuIH5sb2MgTm9sYWJlbCBOb25lXG4gICAgICAgICAgICAgICAgICAgKHBwYXRfY29uc3RyYWludCB+bG9jIChwcGF0X2FueSB+bG9jKSB0eXApXG4gICAgICAgICAgICAgICAgICAgKGV1bml0IH5sb2MpKTtcbiAgICAgICAgICBdKVxuXG5sZXQgbWVyZ2VfZ2VuZXJhdG9ycyBmaWVsZCBsID1cbiAgTGlzdC5maWx0ZXJfbWFwIGwgfmY6KGZ1biB4IC0+IHgpIHw+IExpc3QuY29uY2F0IHw+IERlcml2ZXIucmVzb2x2ZV9hbGwgZmllbGRcblxuKCogVGhpcyBmdW5jdGlvbiBtZXJnZXMgWydhIGRlcml2ZWRdIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLiBUaGlzXG4gICByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXMgd2UgYWRkIFtpbmNsdWRlIHN0cnVjdCAuLi4gZW5kXSB0byBkaXNhYmxlIHdhcm5pbmdzLiAqKVxubGV0IG1lcmdlX2Rlcml2ZWQgbGlzdHMgPVxuICBMaXN0LmZvbGRfcmlnaHQgbGlzdHMgfmluaXQ6W10gfmY6KGZ1biBkZXJpdmVkIGFjYyAtPlxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgb3RoZXIgOjogb3RoZXJzXG4gICAgICAgIHdoZW4gQm9vbC5lcXVhbCBkZXJpdmVkLnVudXNlZF9jb2RlX3dhcm5pbmdzIG90aGVyLnVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgICAgIC0+XG4gICAgICAgICAgeyBvdGhlciB3aXRoIGl0ZW1zID0gZGVyaXZlZC5pdGVtcyBAIG90aGVyLml0ZW1zIH0gOjogb3RoZXJzXG4gICAgICB8IF8gLT4gZGVyaXZlZCA6OiBhY2MpXG5cbmxldCBleHBhbmRfc3RyX3R5cGVfZGVjbHMgfmN0eHQgcmVjX2ZsYWcgdGRzIHZhbHVlcyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9IG1lcmdlX2dlbmVyYXRvcnMgRGVyaXZlci5GaWVsZC5zdHJfdHlwZV9kZWNsIHZhbHVlcyBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICAoKiBUT0RPOiBpbnN0ZWFkIG9mIGRpc2FibGluZyB0aGUgdW51c2VkIHdhcm5pbmcgZm9yIHR5cGVzIHRoZW1zZWx2ZXMsIHdlXG4gICAgIHNob3VsZCBhZGQgYSB0YWcgW0BAdW51c2VkXS4gKilcbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IHR5cGVzX3VzZWRfYnlfZGVyaXZpbmcgdGRzIEAgbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgKHJlY19mbGFnLCB0ZHMpIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfbW9kdWxlX3R5cGVfZGVjbCB+Y3R4dCBtdGQgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl9tb2R1bGVfdHlwZV9kZWNsIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IG10ZCBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfbW9kdWxlX3R5cGVfZGVjbCB+Y3R4dCBtdGQgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ19tb2R1bGVfdHlwZV9kZWNsIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IG10ZCBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ19leGNlcHRpb24gfmN0eHQgZWMgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ19leGNlcHRpb24gZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgZWMgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX3R5cGVfZXh0IH5jdHh0IHRlIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfdHlwZV9leHQgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgdGUgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX3R5cGVfZXh0IH5jdHh0IHRlIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfdHlwZV9leHQgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgdGUgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBydWxlcyB+dHlwIH5leHBhbmRfc2lnIH5leHBhbmRfc3RyIH5ydWxlX3N0ciB+cnVsZV9zaWcgfnJ1bGVfc3RyX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3QgPVxuICBsZXQgcHJlZml4ID0gXCJwcHhsaWIuXCIgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHIgPSBta19kZXJpdmluZ19hdHRyIH5zdWZmaXg6XCJcIiB+cHJlZml4IHR5cCBpblxuICBsZXQgZGVyaXZpbmdfYXR0cl9leHBlY3QgPSBta19kZXJpdmluZ19hdHRyIH5zdWZmaXg6XCJfaW5saW5lXCIgfnByZWZpeCB0eXAgaW5cbiAgW1xuICAgIHJ1bGVfc2lnIGRlcml2aW5nX2F0dHIgZXhwYW5kX3NpZztcbiAgICBydWxlX3N0ciBkZXJpdmluZ19hdHRyIGV4cGFuZF9zdHI7XG4gICAgcnVsZV9zdHJfZXhwZWN0IGRlcml2aW5nX2F0dHJfZXhwZWN0IGV4cGFuZF9zdHI7XG4gICAgcnVsZV9zaWdfZXhwZWN0IGRlcml2aW5nX2F0dHJfZXhwZWN0IGV4cGFuZF9zaWc7XG4gIF1cblxubGV0IHJ1bGVzX3R5cGVfZGVjbCA9XG4gIHJ1bGVzIH50eXA6VHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZGVjbHNcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX3R5cGVfZGVjbHNcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9kZWNsX2V4cGVjdFxuXG5sZXQgcnVsZXNfdHlwZV9leHQgPVxuICBydWxlcyB+dHlwOlR5cGVfZXh0ZW5zaW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfdHlwZV9leHRcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX3R5cGVfZXh0XG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZXh0XG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZXh0XG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZXh0X2V4cGVjdFxuXG5sZXQgcnVsZXNfZXhjZXB0aW9uID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4Y2VwdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX2V4Y2VwdGlvblxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX2V4Y2VwdGlvblxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25cbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX2V4Y2VwdGlvbl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3RcblxubGV0IHJ1bGVzX21vZHVsZV90eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOk1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuXG5sZXQgKCkgPVxuICBsZXQgcnVsZXMgPVxuICAgIFsgcnVsZXNfdHlwZV9kZWNsOyBydWxlc190eXBlX2V4dDsgcnVsZXNfZXhjZXB0aW9uOyBydWxlc19tb2R1bGVfdHlwZV9kZWNsIF1cbiAgICB8PiBMaXN0LmNvbmNhdFxuICBpblxuICBEcml2ZXIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gXCJkZXJpdmluZ1wiIH5hbGlhc2VzOlsgXCJ0eXBlX2NvbnZcIiBdIH5ydWxlc1xuIiwib3BlbiBJbXBvcnRcblxudHlwZSBhZmZpeCA9XG4gIHwgUHJlZml4IG9mIHN0cmluZ1xuICB8IFN1ZmZpeCBvZiBzdHJpbmdcbiAgfCBQcmVmaXhTdWZmaXggb2Ygc3RyaW5nICogc3RyaW5nXG5cbmxldCBtYW5nbGUgPyhmaXhwb2ludCA9IFwidFwiKSBhZmZpeCBuYW1lID1cbiAgbWF0Y2ggKFN0cmluZy4obmFtZSA9IGZpeHBvaW50KSwgYWZmaXgpIHdpdGhcbiAgfCB0cnVlLCAoUHJlZml4IHggfCBTdWZmaXggeCkgLT4geFxuICB8IHRydWUsIFByZWZpeFN1ZmZpeCAocCwgcykgLT4gcCBeIFwiX1wiIF4gc1xuICB8IGZhbHNlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIG5hbWUgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4IHggLT4geCBeIFwiX1wiIF4gbmFtZVxuICB8IGZhbHNlLCBTdWZmaXggeCAtPiBuYW1lIF4gXCJfXCIgXiB4XG5cbmxldCBtYW5nbGVfdHlwZV9kZWNsID9maXhwb2ludCBhZmZpeCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IG5hbWU7IF8gfTsgXyB9ID1cbiAgbWFuZ2xlID9maXhwb2ludCBhZmZpeCBuYW1lXG5cbmxldCBtYW5nbGVfbGlkID9maXhwb2ludCBhZmZpeCBsaWQgPVxuICBtYXRjaCBsaWQgd2l0aFxuICB8IExpZGVudCBzIC0+IExpZGVudCAobWFuZ2xlID9maXhwb2ludCBhZmZpeCBzKVxuICB8IExkb3QgKHAsIHMpIC0+IExkb3QgKHAsIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMYXBwbHkgXyAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5FeHBhbnNpb25faGVscGVycy5tYW5nbGVfbGlkOiBMYXBwbHlcIlxuXG5tb2R1bGUgUXVvdGVyID0gUXVvdGVyXG4iLCIoKiogU3RhbmRhcmQgbGlicmFyeSBmb3IgcHB4IHJld3JpdGVycyAqKVxuXG4oKiogW3BweGxpYl0gaXMgbWVhbnQgdG8gYmUgb3BlbmVkIGdsb2JhbGx5IGluIHlvdXIgUFBYIHNvdXJjZSBmaWxlcy5cblxuICAgIE9wZW5pbmcgaXQgY29tZXMgd2l0aCB0d28gYWR2YW50YWdlcy4gRmlyc3QsIGl0IHdpbGwgc2hhZG93IHRoZVxuICAgIFtjb21waWxlci1saWJzXSBtb2R1bGVzLiBUaGUgW2NvbXBpbGVyLWxpYnNdIG1vZHVsZXMgYXJlIHVuc3RhYmxlIGFuZCBhcmVuJ3RcbiAgICBtZWFudCB0byBiZSB1c2VkLCBzbyBzaGFkb3dpbmcgdGhlbSBpcyBhIGdvb2QgcHJvdGVjdGlvbiBtZWNoYW5pc20uIEluIGNhc2VcbiAgICB5b3UgZG9uJ3Qgd2FudCB0byBvcGVuIFtQcHhsaWJdLCB5b3UgY2FuIG9wZW4gW09jYW1sX3NoYWRvd10gdG8gZ2V0IHRoZSBzYW1lXG4gICAgcHJvdGVjdGlvbi4gU2Vjb25kLCBpdCB3aWxsIGJyaW5nIHNldmVyYWwgbW9kdWxlcyBpbiBzY29wZSwgdGhhdCBhcmUgdXNlZnVsXG4gICAgdG8gaGF2ZSB3aGVuIHdyaXRpbmcgYSByZXdyaXRlcjpcblxuICAgIC0gVGhlIG1haW4gW3BweGxpYl0gbW9kdWxlcywgc3VjaCBhcyBtb2R1bGVzIHRvIGhlbHAgbWFuaXB1bGF0ZSB0aGUgQVNUXG4gICAgICAoeyFBc3RfYnVpbGRlcn0sIHshQXN0X3BhdHRlcm59KSwgYW5kIGEgZmV3IGZ1bmN0aW9ucy5cbiAgICAtIE1vZHVsZXMgZnJvbSBvdGhlciBsaWJyYXJpZXMsIHN1Y2ggYXMgeyFBc3RfaGVscGVyfSBvciB7IVBwcmludGFzdH0sXG4gICAgLSBUaGUgd2hvbGUgQVNUIHR5cGVzIChieSBbaW5jbHVkaW5nXSB0aGUgeyFBc3R9IG1vZHVsZSkuXG5cbiAgICB7MSBUaGUgY29yZSBbcHB4bGliXSBlbnRyaWVzfSAqKVxuXG4oKiogezIgTWFuaXB1bGF0aW5nIHRoZSBBU1R9ICopXG5cbm1vZHVsZSBBc3RfYnVpbGRlciA9IEFzdF9idWlsZGVyXG5tb2R1bGUgQXN0X3BhdHRlcm4gPSBBc3RfcGF0dGVyblxubW9kdWxlIEFzdF90cmF2ZXJzZSA9IEFzdF90cmF2ZXJzZVxuXG4oKiogezIgQ29udGV4dC1mcmVlIHJld3JpdGluZ30gKilcblxubW9kdWxlIENvbnRleHRfZnJlZSA9IENvbnRleHRfZnJlZVxubW9kdWxlIERlcml2aW5nID0gRGVyaXZpbmdcbm1vZHVsZSBFeHRlbnNpb24gPSBFeHRlbnNpb25cbm1vZHVsZSBFeHBhbnNpb25fY29udGV4dCA9IEV4cGFuc2lvbl9jb250ZXh0XG5tb2R1bGUgQ29kZV9wYXRoID0gQ29kZV9wYXRoXG5cbigqKiB7MiBPdGhlciBoZWxwZXJzfSAqKVxuXG5tb2R1bGUgRXhwYW5zaW9uX2hlbHBlcnMgPSBFeHBhbnNpb25faGVscGVyc1xubW9kdWxlIE1lcmxpbl9oZWxwZXJzID0gTWVybGluX2hlbHBlcnNcbm1vZHVsZSBTcGVsbGNoZWNrID0gU3BlbGxjaGVja1xubW9kdWxlIEtleXdvcmQgPSBLZXl3b3JkXG5cbigqKiB7MiBEcml2ZXItcmVsYXRlZCBtb2R1bGVzfSAqKVxuXG5tb2R1bGUgRHJpdmVyID0gRHJpdmVyXG5tb2R1bGUgQ2FsbGVyX2lkID0gQ2FsbGVyX2lkXG5tb2R1bGUgQXN0X2lvID0gVXRpbHMuQXN0X2lvLlJlYWRfYmluXG5cbigqKiB7MiBDaGVja3N9ICopXG5cbm1vZHVsZSBBdHRyaWJ1dGUgPSBBdHRyaWJ1dGVcbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gTmFtZS5SZXNlcnZlZF9uYW1lc3BhY2VzXG5cbigqKiB7MiBDb21tb24gaGVscGVyIGZ1bmN0aW9uc30gKilcblxuaW5jbHVkZSBDb21tb25cblxuKCoqIHsxIE1vZHVsZXMgZnJvbSBvdGhlciBsaWJyYXJpZXN9XG5cbiAgICBFeHBvc2Ugc29tZSBtb2R1bGVzIGZyb20geyFQcHhsaWJfYXN0fS4gKilcblxubW9kdWxlIEFzdCA9IFBweGxpYl9hc3QuQXN0XG5tb2R1bGUgQXN0X2hlbHBlciA9IFBweGxpYl9hc3QuQXN0X2hlbHBlclxubW9kdWxlIEFzdHR5cGVzID0gUHB4bGliX2FzdC5Bc3R0eXBlc1xubW9kdWxlIFBhcnNlID0gUHB4bGliX2FzdC5QYXJzZVxubW9kdWxlIFBhcnNldHJlZSA9IFBweGxpYl9hc3QuUGFyc2V0cmVlXG5tb2R1bGUgUHByaW50YXN0ID0gUHB4bGliX2FzdC5QcHJpbnRhc3Rcbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBMb2MgPSBMb2NcblxuKCoqIHsxIFRoZSB3aG9sZSBBU1QgdHlwZXN9ICopXG5cbmluY2x1ZGUgQXN0XG4oKiogSW5jbHVkZSBhbGwgdGhlIEFzdCBkZWZpbml0aW9ucyBzaW5jZSB3ZSBuZWVkIHRoZW0gaW4gZXZlcnkgc2luZ2xlIHBweFxuXG4gICAgQGNsb3NlZCAqKVxuXG4oKiogTWFrZSBzdXJlIGNvZGUgdXNpbmcgUHB4bGliIGRvZXNuJ3QgcmVmZXIgdG8gY29tcGlsZXItbGlicyB3aXRob3V0IGJlaW5nXG4gICAgZXhwbGljaXQgYWJvdXQgaXQ6XG5cbiAgICBAY2xvc2VkICopXG5pbmNsdWRlIHN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgb3BlbiBPY2FtbF9zaGFkb3dcblxuICBpbmNsdWRlIChcbiAgICBPY2FtbF9zaGFkb3cgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgT2NhbWxfc2hhZG93XG4gICAgICBlbmRcbiAgICAgIHdpdGggbW9kdWxlIEFzdF9oZWxwZXIgOj0gQXN0X2hlbHBlclxuICAgICAgd2l0aCBtb2R1bGUgQXN0dHlwZXMgOj0gQXN0dHlwZXNcbiAgICAgIHdpdGggbW9kdWxlIERvY3N0cmluZ3MgOj0gRG9jc3RyaW5nc1xuICAgICAgd2l0aCBtb2R1bGUgSWRlbnRpZmlhYmxlIDo9IElkZW50aWZpYWJsZVxuICAgICAgd2l0aCBtb2R1bGUgTGV4ZXIgOj0gTGV4ZXJcbiAgICAgIHdpdGggbW9kdWxlIExvY2F0aW9uIDo9IExvY2F0aW9uXG4gICAgICB3aXRoIG1vZHVsZSBMb25naWRlbnQgOj0gTG9uZ2lkZW50XG4gICAgICB3aXRoIG1vZHVsZSBQYXJzZSA6PSBQYXJzZVxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2V0cmVlIDo9IFBhcnNldHJlZVxuICAgICAgd2l0aCBtb2R1bGUgUHByaW50YXN0IDo9IFBwcmludGFzdFxuICAgICAgd2l0aCBtb2R1bGUgU3ludGF4ZXJyIDo9IFN5bnRheGVycilcbmVuZFxuXG4oKiovKiopXG5cbigqIEZvciB0ZXN0cyBhbmQgUHB4X2NvcmUgY29tcGF0aWJpbGl0eSBsYXllciAqKVxubW9kdWxlIFBweGxpYl9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBDb21tb24gPSBDb21tb25cbiAgbW9kdWxlIE5hbWUgPSBOYW1lXG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIFBweGxpYlxuXG5sZXQgZGVmYXVsdCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uZGVmYXVsdFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLnlvanNvbl9kcm9wX2RlZmF1bHRcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKGFsdF9vcHRpb24gKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkgbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfZXF1YWwgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LmVxdWFsXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF9jb21wYXJlID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC5jb21wYXJlXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF95b2pzb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvblwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2lmID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi55b2pzb25fZHJvcF9pZlwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBvcGFxdWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInlvanNvbi5vcGFxdWVcIiBBdHRyaWJ1dGUuQ29udGV4dC5jb3JlX3R5cGUgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKSAoKVxuOztcblxubGV0IG9wdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ub3B0aW9uXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGFsbG93X2V4dHJhX2ZpZWxkc190ZCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uYWxsb3dfZXh0cmFfZmllbGRzXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC50eXBlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgYWxsb3dfZXh0cmFfZmllbGRzX2NkID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5hbGxvd19leHRyYV9maWVsZHNcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgeW9qc29uX2tleSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ua2V5XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCB5b2pzb25fdmFyaWFudF9uYW1lID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5uYW1lXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCB5b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5uYW1lXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5ydGFnXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGludmFsaWRfYXR0cmlidXRlIH5sb2MgYXR0ciBkZXNjcmlwdGlvbiA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgIH5sb2NcbiAgICBcInBweF95b2pzb25fY29udjogW0Alc10gaXMgb25seSBhbGxvd2VkIG9uIHR5cGUgWyVzXS5cIlxuICAgIChBdHRyaWJ1dGUubmFtZSBhdHRyKVxuICAgIGRlc2NyaXB0aW9uXG47O1xuXG5sZXQgZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIHggPVxuICBpZiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBhbGxvd19leHRyYV9maWVsZHNfY2QgeClcbiAgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgfmxvY1xuICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQGFsbG93X2V4dHJhX2ZpZWxkc10gaXMgb25seSBhbGxvd2VkIG9uIGlubGluZSByZWNvcmRzLlwiXG47O1xuXG5sZXQgZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHggPVxuICBpZiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBhbGxvd19leHRyYV9maWVsZHNfdGQgeClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggeC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgY2RzXG4gICAgICB3aGVuIExpc3QuZXhpc3RzIGNkcyB+ZjooZnVuIGNkIC0+XG4gICAgICAgIG1hdGNoIGNkLnBjZF9hcmdzIHdpdGhcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgXyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBAQGFsbG93X2V4dHJhX2ZpZWxkc10gb25seSB3b3JrcyBvbiByZWNvcmRzLiBGb3IgaW5saW5lIFxcXG4gICAgICAgICByZWNvcmRzLCBkbzogdHlwZSB0ID0gQSBvZiB7IGEgOiBpbnQgfSBbQEBhbGxvd19leHRyYV9maWVsZHNdIHwgQiBbQEBAQGRlcml2aW5nIFxcXG4gICAgICAgICB5b2pzb25dXCJcbiAgICB8IF8gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBAQGFsbG93X2V4dHJhX2ZpZWxkc10gaXMgb25seSBhbGxvd2VkIG9uIHJlY29yZHMuXCIpXG47O1xuXG5tb2R1bGUgUmVjb3JkX2ZpZWxkX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSBjb21tb24gPSBbIGB5b2pzb25fb3B0aW9uIG9mIGNvcmVfdHlwZSBdXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGUgYXR0ciBsZCB+ZiA9XG4gICAgT3B0aW9uLm1hcCAoQXR0cmlidXRlLmdldCBhdHRyIGxkKSB+ZjooZnVuIHggLT4gZiB4LCBBdHRyaWJ1dGUubmFtZSBhdHRyKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfmxvYyBnZXR0ZXJzIGxkID1cbiAgICBsZXQgY29tbW9uX2dldHRlcnMgPVxuICAgICAgWyAoZnVuIGxkIC0+XG4gICAgICAgICAgbWF0Y2ggQXR0cmlidXRlLmdldCBvcHRpb24gbGQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoKSAtPlxuICAgICAgICAgICAgKG1hdGNoIGxkLnBsZF90eXBlIHdpdGhcbiAgICAgICAgICAgICB8IFsldHlwZTogWyV0PyB0eV0gb3B0aW9uXSAtPiBTb21lIChgeW9qc29uX29wdGlvbiB0eSwgXCJbQHlvanNvbi5vcHRpb25dXCIpXG4gICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfYXR0cmlidXRlIH5sb2Mgb3B0aW9uIFwiXyBvcHRpb25cIilcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIF1cbiAgICBpblxuICAgIG1hdGNoIExpc3QuZmlsdGVyX21hcCAoZ2V0dGVycyBAIGNvbW1vbl9nZXR0ZXJzKSB+ZjooZnVuIGYgLT4gZiBsZCkgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgWyAodiwgXykgXSAtPiBTb21lIHZcbiAgICB8IF8gOjogXyA6OiBfIGFzIGF0dHJpYnV0ZXMgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwiVGhlIGZvbGxvd2luZyBlbGVtZW50cyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlOiAlc1wiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKExpc3QubWFwIGF0dHJpYnV0ZXMgfmY6c25kKSlcbiAgOztcblxuICBtb2R1bGUgT2ZfeW9qc29uID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgY29tbW9uXG4gICAgICB8IGBkZWZhdWx0IG9mIGV4cHJlc3Npb25cbiAgICAgIF1cblxuICAgIGxldCBjcmVhdGUgfmxvYyBsZCA9XG4gICAgICBjcmVhdGUgfmxvYyBbIGdldF9hdHRyaWJ1dGUgZGVmYXVsdCB+ZjooZnVuIGRlZmF1bHQgLT4gYGRlZmF1bHQgZGVmYXVsdCkgXSBsZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBZb2pzb25fb2YgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBjb21tb25cbiAgICAgIHwgYGRyb3BfZGVmYXVsdCBvZiBbIGBub19hcmcgfCBgY29tcGFyZSB8IGBlcXVhbCB8IGB5b2pzb24gfCBgZnVuYyBvZiBleHByZXNzaW9uIF1cbiAgICAgIHwgYGRyb3BfaWYgb2YgZXhwcmVzc2lvblxuICAgICAgfCBga2VlcFxuICAgICAgXVxuXG4gICAgbGV0IGNyZWF0ZSB+bG9jIGxkID1cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+bG9jXG4gICAgICAgIFsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT4gYGRyb3BfZGVmYXVsdCBgbm9fYXJnXG4gICAgICAgICAgICB8IFNvbWUgZSAtPiBgZHJvcF9kZWZhdWx0IChgZnVuYyBlKSlcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF9lcXVhbCB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYGVxdWFsKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X2NvbXBhcmUgfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGBjb21wYXJlKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X3lvanNvbiB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYHlvanNvbilcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfaWYgfmY6KGZ1biB4IC0+IGBkcm9wX2lmIHgpXG4gICAgICAgIF1cbiAgICAgICAgbGRcbiAgICAgIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpga2VlcFxuICAgIDs7XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9XG4gIHsgbGFiZWwgOiBzdHJpbmdcbiAgOyBuYW1lX292ZXJyaWRlIDogc3RyaW5nIG9wdGlvblxuICB9XG5cbmxldCBjcmVhdGUgfmxhYmVsIH5uYW1lX292ZXJyaWRlID0geyBsYWJlbDsgbmFtZV9vdmVycmlkZSB9XG5cbmxldCBvZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoY2QgOiBQcHhsaWIuY29uc3RydWN0b3JfZGVjbGFyYXRpb24pID1cbiAgbGV0IGxhYmVsID0gY2QucGNkX25hbWUudHh0IGluXG4gIGxldCBuYW1lX292ZXJyaWRlID0gUHB4bGliLkF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3ZhcmlhbnRfbmFtZSBjZCBpblxuICBjcmVhdGUgfmxhYmVsIH5uYW1lX292ZXJyaWRlXG47O1xuXG5sZXQgbGFiZWwgdCA9IHQubGFiZWxcbmxldCBuYW1lIHQgPSBPcHRpb24udmFsdWUgdC5uYW1lX292ZXJyaWRlIH5kZWZhdWx0OnQubGFiZWxcbiIsIm9wZW4gQmFzZVxub3BlbiBQcHhsaWJcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxubW9kdWxlIEF0dHJzID0gQXR0cnNcblxubGV0ICggLS0+ICkgbGhzIHJocyA9IGNhc2Ugfmd1YXJkOk5vbmUgfmxocyB+cmhzXG5cbigqIFNpbXBsaWZpZXMgbWF0Y2ggY2FzZXMsIGZvciByZWFkYWJpbGl0eSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIEl0J3Mgbm90IG9idmlvdXMgd2UgY2FuXG4gICBzdGljayB0aGlzIGluIHBweF9jb3JlLCBhcyAobWF0Y2ggZTEgd2l0aCBwIC0+IGUyKSBhbmQgKGxldCBwID0gZTEgaW4gZTIpIGFyZSBub3QgdHlwZWRcbiAgIGV4YWN0bHkgdGhlIHNhbWUgKHR5cGUgaW5mZXJlbmNlIGdvZXMgaW4gZGlmZmVyZW50IG9yZGVyLCBtZWFuaW5nIHR5cGUgZGlzYW1iaWd1YXRpb25cbiAgIGRpZmZlcnMpLiAqKVxubGV0IHBleHBfbWF0Y2ggfmxvYyBleHByIGNhc2VzID1cbiAgbWF0Y2ggY2FzZXMgd2l0aFxuICB8IFsgeyBwY19saHM7IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzIH0gXSAtPlxuICAgIChtYXRjaCBwY19saHMsIGV4cHIgd2l0aFxuICAgICB8ICggeyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQgPSBpZGVudDsgXyB9OyBfIH1cbiAgICAgICAsIHsgcGV4cF9hdHRyaWJ1dGVzID0gW107IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgaWRlbnQnOyBfIH07IF8gfSApXG4gICAgICAgd2hlbiBTdHJpbmcuZXF1YWwgaWRlbnQgaWRlbnQnIC0+IHBjX3Joc1xuICAgICB8IF8gLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpwY19saHMgfmV4cHIgXSBwY19yaHMpXG4gIHwgXyAtPiBwZXhwX21hdGNoIH5sb2MgZXhwciBjYXNlc1xuOztcblxubW9kdWxlIEZ1bl9vcl9tYXRjaCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRnVuIG9mIGV4cHJlc3Npb25cbiAgICB8IE1hdGNoIG9mIGNhc2UgbGlzdFxuXG4gIGxldCBleHByIH5sb2MgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBGdW4gZiAtPiBmXG4gICAgfCBNYXRjaCBjYXNlcyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgY2FzZXNcbiAgOztcblxuICBsZXQgdW5yb2xsIH5sb2MgZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEZ1biBmIC0+IGVhcHBseSB+bG9jIGYgWyBlIF1cbiAgICB8IE1hdGNoIGNhc2VzIC0+IHBleHBfbWF0Y2ggfmxvYyBlIGNhc2VzXG4gIDs7XG5cbiAgbGV0IG1hcF90bXBfdmFycyB+bG9jIHRzID1cbiAgICBsZXQgdmFycyA9IExpc3QubWFwaSB0cyB+ZjooZnVuIGkgXyAtPiBcInZcIiBeIEludC50b19zdHJpbmcgaSkgaW5cbiAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgTGlzdC5tYXAyX2V4biB2YXJzIHRzIH5mOihmdW4gdmFyIHQgLT5cbiAgICAgICAgbGV0IGV4cHIgPSB1bnJvbGwgfmxvYyAoZXZhciB+bG9jIHZhcikgdCBpblxuICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHZhciB+bG9jIHZhcikgfmV4cHIpXG4gICAgaW5cbiAgICBiaW5kaW5ncywgTGlzdC5tYXAgdmFycyB+ZjoocHZhciB+bG9jKSwgTGlzdC5tYXAgdmFycyB+ZjooZXZhciB+bG9jKVxuICA7O1xuZW5kXG5cbigqIEEgcmVuYW1pbmcgaXMgYSBtYXBwaW5nIGZyb20gdHlwZSB2YXJpYWJsZSBuYW1lIHRvIHR5cGUgdmFyaWFibGUgbmFtZS5cbiAgIEluIGRlZmluaXRpb25zIHN1Y2ggYXM6XG5cbiAgIHR5cGUgJ2EgdCA9XG4gICB8IEEgOiA8dHlwZT4gLT4gJ2IgdFxuICAgfCBCIG9mICdhXG5cbiAgIHdlIGdlbmVyYXRlIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiB5b2pzb25fb2YgcGFyYW1ldGVyIG5hbWVkIGFmdGVyICdhLCBidXQgJ2EgaXMgbm90IGluXG4gICBzY29wZSBpbiA8dHlwZT4gd2hlbiBoYW5kbGluZyB0aGUgY29uc3RydWN0b3IgQSAoYmVjYXVzZSBBIGlzIGEgZ2FkdCBjb25zdHJ1Y3RvcikuXG4gICBJbnN0ZWFkIHRoZSB0eXBlIHZhcmlhYmxlcyBpbiBzY29wZSBhcmUgdGhlIG9uZXMgZGVmaW5lZCBpbiB0aGUgcmV0dXJuIHR5cGUgb2YgQSxcbiAgIG5hbWVseSAnYi4gVGhlcmUgY291bGQgYmUgbGVzcyBvciBtb3JlIHR5cGUgdmFyaWFibGUgaW4gY2FzZXMgc3VjaCBhczpcblxuICAgdHlwZSBfIGxlc3MgPSBMZXNzIDogaW50IGxlc3NcbiAgIHR5cGUgXyBtb3JlID0gTW9yZSA6ICgnYSAqICdhKSBtb3JlXG5cbiAgIElmIGZvciBpbnN0YW5jZSwgPHR5cGU+IGlzIFsnYiAqICdjXSwgd2hlbiB3ZSBmaW5kICdiLCB3ZSB3aWxsIGxvb2sgZm9yIFsnYl0gaW4gdGhlXG4gICByZW5hbWluZyBhbmQgZmluZCBbJ2FdIChvbmx5IGluIHRoYXQgZ2FkdCBicmFuY2gsIGl0IGNvdWxkIGJlIHNvbWV0aGluZyBlbHNlIGluIG90aGVyXG4gICBicmFuY2hlcyksIGF0IHdoaWNoIHBvaW50IHdlIGNhbiBjYWxsIHRoZSBwcmV2aW91c2x5IGJvdW5kIHlvanNvbl9vZiBwYXJhbWV0ZXIgbmFtZWRcbiAgIGFmdGVyICdhLlxuICAgSWYgd2UgY2FuJ3QgZmluZCBhIHJlc3VsdGluZyBuYW1lLCBsaWtlIHdoZW4gbG9va2luZyB1cCBbJ2NdIGluIHRoZSByZW5hbWluZywgdGhlbiB3ZVxuICAgYXNzdW1lIHRoZSB2YXJpYWJsZSBpcyBleGlzdGVudGlhbGx5IHF1YW50aWZpZWQgYW5kIHRyZWF0IGl0IGFzIFtfXSAod2hpY2ggaXMgb2ssXG4gICBhc3N1bWluZyB0aGVyZSBhcmUgbm8gY29uc3RyYWludHMpLiAqKVxubW9kdWxlIFJlbmFtaW5nIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBpZGVudGl0eSA6IHRcbiAgdmFsIGFkZF91bml2ZXJzYWxseV9ib3VuZCA6IHQgLT4gc3RyaW5nIGxvYyAtPiB0XG5cbiAgdHlwZSBiaW5kaW5nX2tpbmQgPVxuICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgb2Ygc3RyaW5nXG4gICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kXG5cbiAgdmFsIGJpbmRpbmdfa2luZCA6IHQgLT4gc3RyaW5nIC0+IGJpbmRpbmdfa2luZFxuICB2YWwgb2ZfZ2FkdCA6IHN0cmluZyBsaXN0IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGVycm9yID0gc3RyaW5nIExvYy50XG4gIHR5cGUgdCA9IChzdHJpbmcsIGVycm9yKSBSZXN1bHQudCBNYXAuTShTdHJpbmcpLnQgb3B0aW9uXG5cbiAgbGV0IGlkZW50aXR5ID0gTm9uZVxuXG4gIHR5cGUgYmluZGluZ19raW5kID1cbiAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZFxuXG4gIGxldCBhZGRfdW5pdmVyc2FsbHlfYm91bmQgKHQgOiB0KSBuYW1lIDogdCA9XG4gICAgbGV0IG5hbWUgPSBuYW1lLnR4dCBpblxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIG1hcCAtPiBTb21lIChNYXAuc2V0IH5rZXk6bmFtZSB+ZGF0YTooT2sgbmFtZSkgbWFwKVxuICA7O1xuXG4gIGxldCBiaW5kaW5nX2tpbmQgdCB2YXIgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBVbml2ZXJzYWxseV9ib3VuZCB2YXJcbiAgICB8IFNvbWUgbWFwIC0+XG4gICAgICAobWF0Y2ggTWFwLmZpbmQgbWFwIHZhciB3aXRoXG4gICAgICAgfCBOb25lIC0+IEV4aXN0ZW50aWFsbHlfYm91bmRcbiAgICAgICB8IFNvbWUgKE9rIHZhbHVlKSAtPiBVbml2ZXJzYWxseV9ib3VuZCB2YWx1ZVxuICAgICAgIHwgU29tZSAoRXJyb3IgeyBsb2M7IHR4dCB9KSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIiVzXCIgdHh0KVxuICA7O1xuXG4gICgqIFJldHVybiBhIG1hcCB0cmFuc2xhdGluZyB0eXBlIHZhcmlhYmxlcyBhcHBlYXJpbmcgaW4gdGhlIHJldHVybiB0eXBlIG9mIGEgR0FEVFxuICAgICBjb25zdHJ1Y3RvciB0byB0aGVpciBuYW1lIGluIHRoZSB0eXBlIHBhcmFtZXRlciBsaXN0LlxuXG4gICAgIEZvciBpbnN0YW5jZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgKCdhLCAnYikgdCA9IFggOiAneCAqICd5IC0+ICgneCwgJ3kpIHRcbiAgICAgXX1cblxuICAgICB3aWxsIHByb2R1Y2U6XG5cbiAgICAge1tcbiAgICAgICBcInhcIiAtPiBPayBcImFcIlxuICAgICAgICAgICAgICAgIFwieVwiIC0+IE9rIFwiYlwiXG4gICAgIF19XG5cbiAgICAgSWYgYSB2YXJpYWJsZSBhcHBlYXJzIHR3aWNlIGluIHRoZSByZXR1cm4gdHlwZSBpdCB3aWxsIG1hcCB0byBbRXJyb3IgX10uIElmIGFcbiAgICAgdmFyaWFibGUgY2Fubm90IGJlIG1hcHBlZCB0byBhIHBhcmFtZXRlciBvZiB0aGUgdHlwZSBkZWNsYXJhdGlvbiwgaXQgd2lsbCBtYXAgdG9cbiAgICAgW0Vycm9yXSAoZm9yIGluc3RhbmNlIFtBIDogJ2EgLT4gJ2EgbGlzdCB0XSkuXG5cbiAgICAgSXQgcmV0dXJucyBOb25lIG9uIHVzZXIgZXJyb3IsIHRvIGxldCB0aGUgdHlwZXIgZ2l2ZSB0aGUgZXJyb3IgbWVzc2FnZSAqKVxuICBsZXQgb2ZfZ2FkdCA9XG4gICAgKCogQWRkIGFsbCB0eXBlIHZhcmlhYmxlcyBvZiBhIHR5cGUgdG8gYSBtYXAuICopXG4gICAgbGV0IGFkZF90eXBldmFycyA9XG4gICAgICBvYmplY3RcbiAgICAgICAgaW5oZXJpdCBbKHN0cmluZywgZXJyb3IpIFJlc3VsdC50IE1hcC5NKFN0cmluZykudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICAgICBtZXRob2QhIGNvcmVfdHlwZSB0eSBtYXAgPVxuICAgICAgICAgIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3ZhciB2YXIgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIHsgbG9jID0gdHkucHR5cF9sb2NcbiAgICAgICAgICAgICAgOyB0eHQgPVxuICAgICAgICAgICAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IHZhcmlhYmxlIGlzIG5vdCBhIHBhcmFtZXRlciBvZiB0aGUgdHlwZSBjb25zdHJ1Y3RvclwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBNYXAuc2V0IG1hcCB+a2V5OnZhciB+ZGF0YTooRXJyb3IgZXJyb3IpXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSB0eSBtYXBcbiAgICAgIGVuZFxuICAgIGluXG4gICAgbGV0IGF1eCBtYXAgdHBfbmFtZSB0cF9pbl9yZXR1cm5fdHlwZSA9XG4gICAgICBtYXRjaCB0cF9pbl9yZXR1cm5fdHlwZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX3ZhciB2YXIgLT5cbiAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgIGlmIE1hcC5tZW0gbWFwIHZhclxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IHRwX2luX3JldHVybl90eXBlLnB0eXBfbG9jIGluXG4gICAgICAgICAgICBFcnJvciB7IGxvYzsgdHh0ID0gXCJwcHhfeW9qc29uX2NvbnY6IGR1cGxpY2F0ZSB2YXJpYWJsZVwiIH0pXG4gICAgICAgICAgZWxzZSBPayB0cF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIE1hcC5zZXQgbWFwIH5rZXk6dmFyIH5kYXRhXG4gICAgICB8IF8gLT4gYWRkX3R5cGV2YXJzI2NvcmVfdHlwZSB0cF9pbl9yZXR1cm5fdHlwZSBtYXBcbiAgICBpblxuICAgIGZ1biB0cHMgY2QgLT5cbiAgICAgIG1hdGNoIGNkLnBjZF9yZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB0eSAtPlxuICAgICAgICAobWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgIHwgUHR5cF9jb25zdHIgKF8sIHBhcmFtcykgLT5cbiAgICAgICAgICAgaWYgTGlzdC5sZW5ndGggcGFyYW1zIDw+IExpc3QubGVuZ3RoIHRwc1xuICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgIChTdGRsaWIuTGlzdExhYmVscy5mb2xkX2xlZnQyXG4gICAgICAgICAgICAgICAgICB0cHNcbiAgICAgICAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgICAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZykpXG4gICAgICAgICAgICAgICAgICB+ZjphdXgpXG4gICAgICAgICB8IF8gLT4gTm9uZSlcbiAgOztcbmVuZFxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgPVxuICBsZXQgbWFwID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBQdHlwX3ZhciBfIC0+IFB0eXBfYW55XG4gICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgZW5kXG4gIGluXG4gIG1hcCNjb3JlX3R5cGVcbjs7XG5cbmxldCByaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHggPVxuICBsZXQgcHJlZml4ID0gXCJyaWdpZF9cIiBpblxuICBpZiBTdHJpbmcuZXF1YWwgeCB0eXBlX25hbWUgfHwgU3RyaW5nLmlzX3ByZWZpeCB4IH5wcmVmaXhcbiAgdGhlbiBwcmVmaXggXiB4IF4gXCJfb2ZfdHlwZV9cIiBeIHR5cGVfbmFtZVxuICBlbHNlIHhcbjs7XG5cbmxldCBtYWtlX3R5cGVfcmlnaWQgfnR5cGVfbmFtZSA9XG4gIGxldCBtYXAgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlIHR5ID1cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9XG4gICAgICAgICAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdmFyIHMgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChMb2NhdGVkLmxpZGVudCB+bG9jOnR5LnB0eXBfbG9jIChyaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHMpLCBbXSlcbiAgICAgICAgICB8IGRlc2MgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgZGVzY1xuICAgICAgICBpblxuICAgICAgICB7IHR5IHdpdGggcHR5cF9kZXNjIH1cbiAgICBlbmRcbiAgaW5cbiAgbWFwI2NvcmVfdHlwZVxuOztcblxuKCogR2VuZXJhdGVzIHRoZSBxdWFudGlmaWVkIHR5cGUgWyAhICdhIC4uICd6IC4gKG1ha2VfbW9ub190eXBlIHQgKCdhIC4uICd6KSkgXSBvclxuICAgW3R5cGUgYSAuLiB6LiBtYWtlX21vbm9fdHlwZSB0IChhIC4uIHopXSB3aGVuIFt1c2VfcmlnaWRfdmFyaWFibGVzXSBpcyB0cnVlLlxuICAgQW5ub3RhdGlvbiBhcmUgbmVlZGVkIGZvciBub24gcmVndWxhciByZWN1cnNpdmUgZGF0YXR5cGVzIGFuZCBnYWR0IHdoZW4gdGhlIHJldHVybiB0eXBlXG4gICBvZiBjb25zdHJ1Y3RvcnMgYXJlIGNvbnN0cmFpbmVkLiBVbmZvcnR1bmF0ZWx5LCBwdXR0aW5nIHJpZ2lkIHZhcmlhYmxlcyBldmVyeXdoZXJlIGRvZXNcbiAgIG5vdCB3b3JrIGJlY2F1c2Ugb2YgY2VydGFpbnMgdHlwZXMgd2l0aCBjb25zdHJhaW50cy4gV2UgdGh1cyBvbmx5IHVzZSByaWdpZCB2YXJpYWJsZXNcbiAgIGZvciBzdW0gdHlwZXMsIHdoaWNoIGluY2x1ZGVzIGFsbCBHQURUcy4gKilcblxubGV0IHR2YXJzX29mX2NvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiBzdHJpbmcgbGlzdCA9XG4gIGxldCB0dmFycyA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IFtzdHJpbmcgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGUgeCBhY2MgPVxuICAgICAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBpZiBMaXN0Lm1lbSBhY2MgeCB+ZXF1YWw6U3RyaW5nLmVxdWFsIHRoZW4gYWNjIGVsc2UgeCA6OiBhY2NcbiAgICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSB4IGFjY1xuICAgIGVuZFxuICBpblxuICBmdW4gdHlwIC0+IExpc3QucmV2ICh0dmFycyNjb3JlX3R5cGUgdHlwIFtdKVxuOztcblxubGV0IGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmdcbiAgICAgICgqIHBsYWNpbmcgYSBzdWl0YWJseSBwb2x5bW9ycGhpYyBvciByaWdpZCB0eXBlIGNvbnN0cmFpbnQgb24gdGhlIHBhdHRlcm4gb3IgYm9keSAqKVxuICAgICAgKGxvYyA6IExvY2F0aW9uLnQpXG4gICAgICAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICAgKHR5cCA6IGNvcmVfdHlwZSlcbiAgICAgIH4odHBzIDogc3RyaW5nIGxvYyBsaXN0KVxuICAgICAgfihmdW5jX25hbWUgOiBzdHJpbmcpXG4gICAgICAoYm9keSA6IGV4cHJlc3Npb24pXG4gID1cbiAgbGV0IHZhcnMgPSB0dmFyc19vZl9jb3JlX3R5cGUgdHlwIGluXG4gIGxldCBoYXNfdmFycyA9XG4gICAgbWF0Y2ggdmFycyB3aXRoXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgXyA6OiBfIC0+IHRydWVcbiAgaW5cbiAgbGV0IHBhdCA9XG4gICAgbGV0IHBhdCA9IHB2YXIgfmxvYyBmdW5jX25hbWUgaW5cbiAgICBpZiBub3QgaGFzX3ZhcnNcbiAgICB0aGVuIHBhdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHZhcnMgPSBMaXN0Lm1hcCB+ZjooZnVuIHR4dCAtPiB7IHR4dDsgbG9jIH0pIHZhcnMgaW5cbiAgICAgIHBwYXRfY29uc3RyYWludCB+bG9jIHBhdCAocHR5cF9wb2x5IH5sb2MgdmFycyB0eXApKVxuICBpblxuICBsZXQgYm9keSA9XG4gICAgbGV0IHVzZV9yaWdpZF92YXJpYWJsZXMgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICB8IFB0eXBlX3ZhcmlhbnQgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIHVzZV9yaWdpZF92YXJpYWJsZXNcbiAgICB0aGVuIChcbiAgICAgIGxldCB0eXBlX25hbWUgPSB0ZC5wdHlwZV9uYW1lLnR4dCBpblxuICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgIHRwc1xuICAgICAgICB+ZjooZnVuIHRwIGJvZHkgLT5cbiAgICAgICAgICBwZXhwX25ld3R5cGUgfmxvYyB7IHR4dCA9IHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgdHAudHh0OyBsb2MgPSB0cC5sb2MgfSBib2R5KVxuICAgICAgICB+aW5pdDoocGV4cF9jb25zdHJhaW50IH5sb2MgYm9keSAobWFrZV90eXBlX3JpZ2lkIH50eXBlX25hbWUgdHlwKSkpXG4gICAgZWxzZSBpZiBoYXNfdmFyc1xuICAgIHRoZW4gYm9keVxuICAgIGVsc2UgcGV4cF9jb25zdHJhaW50IH5sb2MgYm9keSB0eXBcbiAgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQgfmV4cHI6Ym9keVxuOztcblxubGV0IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgKG9iamVjdFxuICAgIGluaGVyaXQgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSBjdHlwZSA9XG4gICAgICBtYXRjaCBjdHlwZSB3aXRoXG4gICAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCB+bWFya19hc19zZWVuOmZhbHNlIEF0dHJzLm9wYXF1ZSBjdHlwZSkgLT5cbiAgICAgICAgKClcbiAgICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIC0+ICgpXG4gICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIGN0eXBlXG4gIGVuZClcbiAgI2dvXG4gICAgKClcbjs7XG5cbigqIEdlbmVyYXRlcyB0aGUgc2lnbmF0dXJlIGZvciB0eXBlIGNvbnZlcnNpb24gdG8gWW9qc29ucyAqKVxubW9kdWxlIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YgPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfb2ZfeW9qc29uX29mIH5sb2MgdCA9IFsldHlwZTogWyV0IHRdIC0+IFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudF1cbiAgbGV0IG1rX3R5cGUgdGQgPSBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+Zjp0eXBlX29mX3lvanNvbl9vZlxuXG4gIGxldCBta19zaWcgfmxvYzpfIH5wYXRoOl8gKF9yZiwgdGRzKSA9XG4gICAgTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgIGxldCBsb2MgPSB0ZC5wdHlwZV9sb2MgaW5cbiAgICAgIHBzaWdfdmFsdWVcbiAgICAgICAgfmxvY1xuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKCggXiApIFwieW9qc29uX29mX1wiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICB+dHlwZV86KG1rX3R5cGUgdGQpXG4gICAgICAgICAgIH5wcmltOltdKSlcbiAgOztcbmVuZFxuXG4oKiBHZW5lcmF0ZXMgdGhlIHNpZ25hdHVyZSBmb3IgdHlwZSBjb252ZXJzaW9uIGZyb20gWW9qc29ucyAqKVxubW9kdWxlIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfb2Zfb2ZfeW9qc29uIH5sb2MgdCA9IFsldHlwZTogUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50IC0+IFsldCB0XV1cbiAgbGV0IG1rX3R5cGUgdGQgPSBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+Zjp0eXBlX29mX29mX3lvanNvblxuXG4gIGxldCBzaWdfb2ZfdGQgd2l0aF9wb2x5IHRkID1cbiAgICBsZXQgb2ZfeW9qc29uX3R5cGUgPSBta190eXBlIHRkIGluXG4gICAgbGV0IGxvYyA9IHsgdGQucHR5cGVfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IG9mX3lvanNvbl9pdGVtID1cbiAgICAgIHBzaWdfdmFsdWVcbiAgICAgICAgfmxvY1xuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKGZ1biBzIC0+IHMgXiBcIl9vZl95b2pzb25cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgfnR5cGVfOm9mX3lvanNvbl90eXBlXG4gICAgICAgICAgIH5wcmltOltdKVxuICAgIGluXG4gICAgbWF0Y2ggd2l0aF9wb2x5LCBpc19wb2x5bW9ycGhpY192YXJpYW50IHRkIH5zaWdfOnRydWUgd2l0aFxuICAgIHwgdHJ1ZSwgYFN1cmVseV9ub3QgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwiU2lnX2dlbmVyYXRlX29mX3lvanNvbi5zaWdfb2ZfdGQ6IHlvanNvbl9wb2x5IGFubm90YXRpb24gYnV0IHR5cGUgaXMgc3VyZWx5IG5vdCBcXFxuICAgICAgICAgYSBwb2x5bW9ycGhpYyB2YXJpYW50XCJcbiAgICB8IGZhbHNlLCAoYFN1cmVseV9ub3QgfCBgTWF5YmUpIC0+IFsgb2ZfeW9qc29uX2l0ZW0gXVxuICAgIHwgKHRydWUgfCBmYWxzZSksIGBEZWZpbml0ZWx5IHwgdHJ1ZSwgYE1heWJlIC0+XG4gICAgICBbIG9mX3lvanNvbl9pdGVtXG4gICAgICA7IHBzaWdfdmFsdWVcbiAgICAgICAgICB+bG9jXG4gICAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoZnVuIHMgLT4gXCJfX1wiIF4gcyBeIFwiX29mX3lvanNvbl9fXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgICAgfnR5cGVfOm9mX3lvanNvbl90eXBlXG4gICAgICAgICAgICAgfnByaW06W10pXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IG1rX3NpZyB+cG9seSB+bG9jOl8gfnBhdGg6XyAoX3JmLCB0ZHMpID0gTGlzdC5jb25jYXRfbWFwIHRkcyB+Zjooc2lnX29mX3RkIHBvbHkpXG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV95b2pzb25fb2YgPSBzdHJ1Y3RcbiAgKCogSGFuZGxpbmcgb2YgcmVjb3JkIGRlZmF1bHRzICopXG5cbiAgbGV0IHlvanNvbl9vZl90eXBlX2NvbnN0ciB+bG9jIGlkIGFyZ3MgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZCB+ZjooZnVuIHMgLT4gXCJ5b2pzb25fb2ZfXCIgXiBzKSBhcmdzXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiB0eXBlcyAqKVxuICBsZXQgcmVjIHlvanNvbl9vZl90eXBlXG4gICAgICAgICAgICB+KHR5cGV2YXJfaGFuZGxpbmcgOiBbIGBvayBvZiBSZW5hbWluZy50IHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIF0pXG4gICAgICAgICAgICB0eXBcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBsb2MgPSB7IHR5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIHR5cCB3aXRoXG4gICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMub3BhcXVlIHR5cCkgLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgIHwgWyV0eXBlOiBfXSAtPiBGdW4gWyVleHByIGZ1biBfIC0+IGBTdHJpbmcgXCJfXCJdXG4gICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3R1cGxlIHRwOyBfIH0gLT5cbiAgICAgIE1hdGNoIFsgeW9qc29uX29mX3R1cGxlIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwKSBdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyIHBhcm07IF8gfSAtPlxuICAgICAgKG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBcIlR5cGUgdmFyaWFibGVzIG5vdCBhbGxvd2VkIGluIFslJXlvanNvbl9vZjogXS4gUGxlYXNlIHVzZSBsb2NhbGx5IGFic3RyYWN0IFxcXG4gICAgICAgICAgICB0eXBlcyBpbnN0ZWFkLlwiXG4gICAgICAgfCBgb2sgcmVuYW1pbmcgLT5cbiAgICAgICAgIChtYXRjaCBSZW5hbWluZy5iaW5kaW5nX2tpbmQgcmVuYW1pbmcgcGFybSB3aXRoXG4gICAgICAgICAgfCBVbml2ZXJzYWxseV9ib3VuZCBwYXJtIC0+IEZ1biAoZXZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0pKVxuICAgICAgICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZCAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyBbJXR5cGU6IF9dKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBhcmdzKTsgXyB9IC0+XG4gICAgICBGdW5cbiAgICAgICAgKHlvanNvbl9vZl90eXBlX2NvbnN0clxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIGlkXG4gICAgICAgICAgIChMaXN0Lm1hcCBhcmdzIH5mOihmdW4gdHAgLT5cbiAgICAgICAgICAgICAgRnVuX29yX21hdGNoLmV4cHIgfmxvYyAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHApKSkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYXJyb3cgKF8sIF8sIF8pOyBfIH0gLT5cbiAgICAgIEZ1blxuICAgICAgICBbJWV4cHJcbiAgICAgICAgICBmdW4gX2YgLT5cbiAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX2Z1biBQcHhfeW9qc29uX2NvbnZfbGliLmlnbm9yZV1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IChyb3dfZmllbGRzLCBfLCBfKTsgXyB9IC0+XG4gICAgICB5b2pzb25fb2ZfdmFyaWFudCB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCByb3dfZmllbGRzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKHBhcm1zLCBwb2x5X3RwKTsgXyB9IC0+XG4gICAgICB5b2pzb25fb2ZfcG9seSB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyBwb2x5X3RwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfb2JqZWN0IChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY2xhc3MgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BhY2thZ2UgXzsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIF87IF8gfSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJUeXBlIHVuc3VwcG9ydGVkIGZvciBwcHggW3lvanNvbl9vZl0gY29udmVyc2lvblwiXG5cbiAgKCogQ29udmVyc2lvbiBvZiB0dXBsZXMgKilcbiAgYW5kIHlvanNvbl9vZl90dXBsZSB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cHMpID1cbiAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KGZ1biB0cCAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0cCkgdHBzIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwdmFycywgZXZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgbGV0IGluX2V4cHIgPSBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgZXZhcnNdXSBpblxuICAgIGxldCBleHByID0gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgaW5fZXhwciBpblxuICAgIHBwYXRfdHVwbGUgfmxvYyBwdmFycyAtLT4gZXhwclxuXG4gICgqIENvbnZlcnNpb24gb2YgdmFyaWFudCB0eXBlcyAqKVxuICBhbmQgeW9qc29uX29mX3ZhcmlhbnRcbiAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgKChsb2MsIHJvd19maWVsZHMpIDogTG9jYXRpb24udCAqIHJvd19maWVsZCBsaXN0KVxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGl0ZW0gcm93ID1cbiAgICAgIGxldCBuYW1lX292ZXJyaWRlID0gQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lIHJvdyBpblxuICAgICAgbWF0Y2ggcm93LnByZl9kZXNjIHdpdGhcbiAgICAgIHwgUnRhZyAoY25zdHIsIHRydWUsIFtdKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgICAgcHBhdF92YXJpYW50IH5sb2MgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgTm9uZVxuICAgICAgICAtLT4gWyVleHByIGBMaXN0IFsgYFN0cmluZyBbJWUgZXN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldIF1dXG4gICAgICB8IFJ0YWcgKGNuc3RyLCBmYWxzZSwgWyB0cCBdKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgIG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3R1cGxlIHRwcyAtPiB0cHNcbiAgICAgICAgICB8IF8gLT4gWyB0cCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGVzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXV0gaW5cbiAgICAgICAgbGV0IHlvanNvbl9vZl9hcmdzID0gTGlzdC5tYXAgfmY6KHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nKSBhcmdzIGluXG4gICAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgeW9qc29uX29mX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBhdHQgPVxuICAgICAgICAgIG1hdGNoIHBhdHRzIHdpdGhcbiAgICAgICAgICB8IFsgcGF0dCBdIC0+IHBhdHRcbiAgICAgICAgICB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIHBhdHRzXG4gICAgICAgIGluXG4gICAgICAgIHBwYXRfdmFyaWFudCAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSB+bG9jIChTb21lIHBhdHQpXG4gICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgKGNuc3RyX2V4cHIgOjogdmFycyldXVxuICAgICAgfCBSaW5oZXJpdCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgW10pOyBfIH0gLT5cbiAgICAgICAgcHBhdF9hbGlhcyB+bG9jIChwcGF0X3R5cGUgfmxvYyBpZCkgKExvYy5tYWtlIFwidlwiIH5sb2MpXG4gICAgICAgIC0tPiB5b2pzb25fb2ZfdHlwZV9jb25zdHIgfmxvYyBpZCBbIFslZXhwciB2XSBdXG4gICAgICB8IFJ0YWcgKF8sIHRydWUsIFsgXyBdKSB8IFJ0YWcgKF8sIF8sIF8gOjogXyA6OiBfKSAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuc3VwcG9ydGVkOiB5b2pzb25fb2ZfdmFyaWFudC9SdGFnLyZcIlxuICAgICAgfCBSaW5oZXJpdCAoeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIF8gOjogXyk7IF8gfSBhcyB0eXApIC0+XG4gICAgICAgIGxldCBjYWxsID0gRnVuX29yX21hdGNoLmV4cHIgfmxvYyAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHlwKSBpblxuICAgICAgICBwcGF0X2FsaWFzIH5sb2MgKHBwYXRfdHlwZSB+bG9jIGlkKSAoTG9jLm1ha2UgXCJ2XCIgfmxvYykgLS0+IFslZXhwciBbJWUgY2FsbF0gdl1cbiAgICAgIHwgUmluaGVyaXQgXyAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuc3VwcG9ydGVkOiB5b2pzb25fb2ZfdmFyaWFudC9SaW5oZXJpdC9ub24taWRcIlxuICAgICAgKCogaW1wb3NzaWJsZT8qKVxuICAgICAgfCBSdGFnIChfLCBmYWxzZSwgW10pIC0+IGFzc2VydCBmYWxzZVxuICAgIGluXG4gICAgTWF0Y2ggKExpc3QubWFwIH5mOml0ZW0gcm93X2ZpZWxkcylcblxuICAoKiBQb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzICopXG4gIGFuZCB5b2pzb25fb2ZfcG9seSB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyB0cCA9XG4gICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgbWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICgqIFNob3VsZCBiZSBpbXBvc3NpYmxlIGJlY2F1c2UgW3lvanNvbl9vZl9wb2x5XSBpcyBvbmx5IGNhbGxlZCBvbiBwb2x5bW9ycGhpYyByZWNvcmRcbiAgICAgICAgIGZpZWxkcyBhbmQgcmVjb3JkIHR5cGUgZGVmaW5pdGlvbnMgY2FuJ3Qgb2NjdXIgaW4gdHlwZSBleHByZXNzaW9ucy4gKilcbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicG9seW1vcnBoaWMgdHlwZSBpbiBhIHR5cGUgZXhwcmVzc2lvblwiXG4gICAgfCBgb2sgcmVuYW1pbmcgLT5cbiAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgIGxldCBta19iaW5kaW5nIHBhcm0gPVxuICAgICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtLnR4dCkpXG4gICAgICAgICAgICB+ZXhwcjpbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCB+Zjpta19iaW5kaW5nIHBhcm1zXG4gICAgICBpblxuICAgICAgbGV0IHJlbmFtaW5nID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgcGFybXMgfmluaXQ6cmVuYW1pbmcgfmY6UmVuYW1pbmcuYWRkX3VuaXZlcnNhbGx5X2JvdW5kXG4gICAgICBpblxuICAgICAgKG1hdGNoIHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwIHdpdGhcbiAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBGdW4gKHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGZ1bl9leHByKVxuICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+XG4gICAgICAgICBNYXRjaFxuICAgICAgICAgICBbIFslcGF0PyBhcmddXG4gICAgICAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgICAgICAgKHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXJnXSBtYXRjaGluZ3MpXG4gICAgICAgICAgIF0pXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiByZWNvcmQgdHlwZXMgKilcblxuICBsZXQgbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSA9XG4gICAgbGV0IHAgPSBMb2MubWFrZSAoTG9uZ2lkZW50LkxpZGVudCBuYW1lKSB+bG9jLCBwdmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpIGluXG4gICAgcGF0dCBAIFsgcCBdXG4gIDs7XG5cbiAgdHlwZSBpc19lbXB0eV9leHByID1cbiAgICB8IEluc3BlY3RfdmFsdWUgb2YgKGxvY2F0aW9uIC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbilcbiAgICB8IEluc3BlY3RfeW9qc29uIG9mIChjbnZfZXhwcjpleHByZXNzaW9uIC0+IGxvY2F0aW9uIC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbilcblxuICBsZXQgeW9qc29uX29mX3JlY29yZF9maWVsZCB+cmVuYW1pbmcgcGF0dCBleHByIG5hbWUgdHAgP3lvanNvbl9vZiBpc19lbXB0eV9leHByIGtleSA9XG4gICAgbGV0IGxvYyA9IHsgdHAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICBsZXQgY252X2V4cHIgPVxuICAgICAgbWF0Y2ggeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHAgd2l0aFxuICAgICAgfCBGdW4gZXhwIC0+IGV4cFxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gWyVleHByIGZ1biBlbCAtPiBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciBlbF0gbWF0Y2hpbmdzXV1cbiAgICBpblxuICAgIGxldCBjbnZfZXhwciA9XG4gICAgICBtYXRjaCB5b2pzb25fb2Ygd2l0aFxuICAgICAgfCBOb25lIC0+IGNudl9leHByXG4gICAgICB8IFNvbWUgeW9qc29uX29mIC0+IFslZXhwciBbJWUgeW9qc29uX29mXSBbJWUgY252X2V4cHJdXVxuICAgIGluXG4gICAgbGV0IGV4cHIgPVxuICAgICAgbGV0IHZfbmFtZSA9IFwidl9cIiBeIG5hbWUgaW5cbiAgICAgIFslZXhwclxuICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgWyVlXG4gICAgICAgICAgICBtYXRjaCBpc19lbXB0eV9leHByIHdpdGhcbiAgICAgICAgICAgIHwgSW5zcGVjdF92YWx1ZSBpc19lbXB0eV9leHByIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIGlmIFslZSBpc19lbXB0eV9leHByIGxvYyAoZXZhciB+bG9jIHZfbmFtZSldXG4gICAgICAgICAgICAgICAgdGhlbiBibmRzXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBbJWUgZXZhciB+bG9jIHZfbmFtZV0gaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgICAgYm5kIDo6IGJuZHMpXVxuICAgICAgICAgICAgfCBJbnNwZWN0X3lvanNvbiBpc19lbXB0eV9leHByIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIFslZSBldmFyIH5sb2Mgdl9uYW1lXSBpblxuICAgICAgICAgICAgICAgIGlmIFslZSBpc19lbXB0eV9leHByIH5jbnZfZXhwciBsb2MgWyVleHByIGFyZ11dXG4gICAgICAgICAgICAgICAgdGhlbiBibmRzXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzKV1dXG4gICAgICAgIGluXG4gICAgICAgIFslZSBleHByXV1cbiAgICBpblxuICAgIHBhdHQsIGV4cHJcbiAgOztcblxuICBsZXQgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyB+dHlwZXNfYmVpbmdfZGVmaW5lZCB+bG9jIH53aHkgdHAgPVxuICAgIGxldCBkaXNhbGxvd192YXJpYWJsZXMgPVxuICAgICAgbGV0IGl0ZXIgPVxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyIGFzIHN1cGVyXG5cbiAgICAgICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFB0eXBfdmFyIHYgLT5cbiAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0LiVzXSB3YXMgdXNlZCwgYnV0IHRoZSB0eXBlIG9mIHRoZSBmaWVsZCBjb250YWlucyBcXFxuICAgICAgICAgICAgICAgICBhIHR5cGUgdmFyaWFibGU6ICclcy5cXG5cXFxuICAgICAgICAgICAgICAgICBDb21wYXJpc29uIGlzIG5vdCBhdmFpYWJsZSBmb3IgdHlwZSB2YXJpYWJsZXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdXNpbmcgW0B5b2pzb25fZHJvcF9pZiBfXSBvciBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBcXFxuICAgICAgICAgICAgICAgICBpbnN0ZWFkLlwiXG4gICAgICAgICAgICAgICAgKG1hdGNoIHdoeSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYGNvbXBhcmUgLT4gXCJjb21wYXJlXCJcbiAgICAgICAgICAgICAgICAgfCBgZXF1YWwgLT4gXCJlcXVhbFwiKVxuICAgICAgICAgICAgICAgIHZcbiAgICAgICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGl0ZXIjY29yZV90eXBlXG4gICAgaW5cbiAgICBsZXQgZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzID1cbiAgICAgIG1hdGNoIHR5cGVzX2JlaW5nX2RlZmluZWQgd2l0aFxuICAgICAgfCBgTm9ucmVjdXJzaXZlIC0+IGZ1biBfIC0+ICgpXG4gICAgICB8IGBSZWN1cnNpdmUgdHlwZXNfYmVpbmdfZGVmaW5lZCAtPlxuICAgICAgICBsZXQgaXRlciA9XG4gICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyIGFzIHN1cGVyXG5cbiAgICAgICAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh7IGxvYyA9IF87IHR4dCA9IExpZGVudCBzIH0sIF8pIGFzIHQgLT5cbiAgICAgICAgICAgICAgICBpZiBTZXQubWVtIHR5cGVzX2JlaW5nX2RlZmluZWQgc1xuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0LiVzXSB3YXMgdXNlZCwgYnV0IHRoZSB0eXBlIG9mIHRoZSBmaWVsZCBcXFxuICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYSB0eXBlIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgcmVjdXJzaXZlIGJsb2NrOiAlcy5cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBub3Qgc3VwcG9ydGVkLlxcblxcXG4gICAgICAgICAgICAgICAgICAgICBDb25zaWRlciB1c2luZyBbQHlvanNvbl9kcm9wX2lmIF9dIG9yIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIFxcXG4gICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLlwiXG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCB3aHkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBgY29tcGFyZSAtPiBcImNvbXBhcmVcIlxuICAgICAgICAgICAgICAgICAgICAgfCBgZXF1YWwgLT4gXCJlcXVhbFwiKVxuICAgICAgICAgICAgICAgICAgICBzO1xuICAgICAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgaW5cbiAgICAgICAgaXRlciNjb3JlX3R5cGVcbiAgICBpblxuICAgIGRpc2FsbG93X3ZhcmlhYmxlcyB0cDtcbiAgICBkaXNhbGxvd19yZWN1cnNpdmVfb2NjdXJyZW5jZXMgdHBcbiAgOztcblxuICBsZXQgeW9qc29uX29mX2RlZmF1bHRfZmllbGRcbiAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgaG93XG4gICAgICAgIH5yZW5hbWluZ1xuICAgICAgICBwYXR0XG4gICAgICAgIGV4cHJcbiAgICAgICAgbmFtZVxuICAgICAgICB0cFxuICAgICAgICA/eW9qc29uX29mXG4gICAgICAgIGRlZmF1bHRcbiAgICAgICAga2V5XG4gICAgPVxuICAgIGxldCBpc19lbXB0eSA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgeW9qc29uIC0+XG4gICAgICAgIEluc3BlY3RfeW9qc29uXG4gICAgICAgICAgKGZ1biB+Y252X2V4cHIgbG9jIHlvanNvbl9leHByIC0+XG4gICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgKFslZSBjbnZfZXhwcl0gWyVlIGRlZmF1bHRdKSBbJWUgeW9qc29uX2V4cHJdXSlcbiAgICAgIHwgKGBub19hcmcgfCBgZnVuYyBfIHwgYGNvbXBhcmUgfCBgZXF1YWwpIGFzIGhvdyAtPlxuICAgICAgICBsZXQgZXF1YWxpdHlfZiBsb2MgPVxuICAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICAgfCBgbm9fYXJnIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIFtAb2NhbWwucHB3YXJuaW5nXG4gICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHRdIGlzIGRlcHJlY2F0ZWQ6IFxcXG4gICAgICAgICAgICAgICAgIHBsZWFzZSB1c2Ugb25lIG9mOlxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0IGZdIGFuZCBnaXZlIGFuIFxcXG4gICAgICAgICAgICAgICAgIGV4cGxpY2l0IGVxdWFsaXR5IGZ1bmN0aW9uIChbZiA9IFxcXG4gICAgICAgICAgICAgICAgIFBvbHkuKD0pXSBjb3JyZXNwb25kcyB0byB0aGUgb2xkIFxcXG4gICAgICAgICAgICAgICAgIGJlaGF2aW9yKVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LmNvbXBhcmVdIGlmIHRoZSBcXFxuICAgICAgICAgICAgICAgICB0eXBlIHN1cHBvcnRzIFslY29tcGFyZV1cXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC5lcXVhbF0gaWYgdGhlIFxcXG4gICAgICAgICAgICAgICAgIHR5cGUgc3VwcG9ydHMgWyVlcXVhbF1cXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIGlmIHlvdSBcXFxuICAgICAgICAgICAgICAgICB3YW50IHRvIGNvbXBhcmUgdGhlIHlvanNvbiBcXFxuICAgICAgICAgICAgICAgICByZXByZXNlbnRhdGlvbnNcXG5cIl1dXG4gICAgICAgICAgfCBgZnVuYyBmIC0+IGZcbiAgICAgICAgICB8IGBjb21wYXJlIC0+XG4gICAgICAgICAgICBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53aHk6YGNvbXBhcmVcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICB0cDtcbiAgICAgICAgICAgIFslZXhwciBbJWNvbXBhcmUuZXF1YWw6IFsldCB0cF1dXVxuICAgICAgICAgIHwgYGVxdWFsIC0+XG4gICAgICAgICAgICBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53aHk6YGVxdWFsXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgdHA7XG4gICAgICAgICAgICBbJWV4cHIgWyVlcXVhbDogWyV0IHRwXV1dXG4gICAgICAgIGluXG4gICAgICAgIEluc3BlY3RfdmFsdWUgKGZ1biBsb2MgZXhwciAtPiBbJWV4cHIgWyVlIGVxdWFsaXR5X2YgbG9jXSBbJWUgZGVmYXVsdF0gWyVlIGV4cHJdXSlcbiAgICBpblxuICAgIHlvanNvbl9vZl9yZWNvcmRfZmllbGQgfnJlbmFtaW5nIHBhdHQgZXhwciBuYW1lIHRwID95b2pzb25fb2YgaXNfZW1wdHkga2V5XG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IH50eXBlc19iZWluZ19kZWZpbmVkIH5yZW5hbWluZyBsb2MgZmxkcyB+d3JhcF9leHByID1cbiAgICBsZXQgY29sbCAoKHBhdHQgOiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCksIGV4cHIpIGxkID1cbiAgICAgIGxldCBuYW1lID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmxkLnBsZF9uYW1lLnR4dCAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSB7IGxkLnBsZF9uYW1lLmxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuWW9qc29uX29mLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgIHwgYHlvanNvbl9vcHRpb24gdHAgLT5cbiAgICAgICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgICAgIGxldCB2bmFtZSA9IFslZXhwciB2XSBpblxuICAgICAgICBsZXQgY252X2V4cHIgPVxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIHZuYW1lXG4gICAgICAgICAgICAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICAgICAgbWF0Y2ggWyVlIGV2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSldIHdpdGhcbiAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+IGJuZHNcbiAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIHYgLT5cbiAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBpblxuICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgWyVlIGV4cHJdXVxuICAgICAgICBpblxuICAgICAgICBwYXR0LCBleHByXG4gICAgICB8IGBkcm9wX2RlZmF1bHQgaG93IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIChtYXRjaCBBdHRyaWJ1dGUuZ2V0IEF0dHJzLmRlZmF1bHQgbGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwibm8gZGVmYXVsdCB0byBkcm9wXCJcbiAgICAgICAgIHwgU29tZSBkZWZhdWx0IC0+XG4gICAgICAgICAgIHlvanNvbl9vZl9kZWZhdWx0X2ZpZWxkXG4gICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICBob3dcbiAgICAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICAgICBwYXR0XG4gICAgICAgICAgICAgZXhwclxuICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICB0cFxuICAgICAgICAgICAgIGRlZmF1bHRcbiAgICAgICAgICAgICBrZXkpXG4gICAgICB8IGBkcm9wX2lmIHRlc3QgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgeW9qc29uX29mX3JlY29yZF9maWVsZFxuICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgIHBhdHRcbiAgICAgICAgICBleHByXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIHRwXG4gICAgICAgICAgKEluc3BlY3RfdmFsdWUgKGZ1biBsb2MgZXhwciAtPiBbJWV4cHIgWyVlIHRlc3RdIFslZSBleHByXV0pKVxuICAgICAgICAgIGtleVxuICAgICAgfCBga2VlcCBhcyB0ZXN0IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgICAgICBsZXQgdm5hbWUgPSBldmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpIGluXG4gICAgICAgIGxldCBjbnZfZXhwciA9XG4gICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgdm5hbWVcbiAgICAgICAgICAgICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgYGtlZXAgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBpblxuICAgICAgICAgICAgICAoWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcpIDo6IGJuZHNdXG4gICAgICAgICAgfCBgb21pdF9uaWwgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBtYXRjaCBbJWUgY252X2V4cHJdIHdpdGhcbiAgICAgICAgICAgICAgfCBgTnVsbCAtPiBibmRzXG4gICAgICAgICAgICAgIHwgYXJnIC0+IChbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZykgOjogYm5kc11cbiAgICAgICAgaW5cbiAgICAgICAgKCBwYXR0XG4gICAgICAgICwgWyVleHByXG4gICAgICAgICAgbGV0IGJuZHMgPSBbJWUgYm5kc10gaW5cbiAgICAgICAgICBbJWUgZXhwcl1dIClcbiAgICBpblxuICAgIGxldCBpbml0X2V4cHIgPSB3cmFwX2V4cHIgWyVleHByIGJuZHNdIGluXG4gICAgbGV0IHBhdHQsIGV4cHIgPSBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihbXSwgaW5pdF9leHByKSBmbGRzIGluXG4gICAgKCBwcGF0X3JlY29yZCB+bG9jIHBhdHQgQ2xvc2VkXG4gICAgLCBbJWV4cHJcbiAgICAgIGxldCBibmRzIDogKHN0cmluZyAqIFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudCkgbGlzdCA9IFtdIGluXG4gICAgICBbJWUgZXhwcl1dIClcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHN1bSB0eXBlcyAqKVxuXG4gIGxldCBicmFuY2hfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIHJlbmFtaW5nIH5sb2MgY29uc3RyX2xpZCBjb25zdHJfc3RyIGFyZ3MgPVxuICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgUGNzdHJfcmVjb3JkIGxkcyAtPlxuICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgY29uc3RyX3N0cl1dIGluXG4gICAgICBsZXQgcGF0dCwgZXhwciA9XG4gICAgICAgIHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0XG4gICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICBsb2NcbiAgICAgICAgICBsZHNcbiAgICAgICAgICB+d3JhcF9leHByOihmdW4gZXhwciAtPiBbJWV4cHIgYExpc3QgWyBbJWUgY25zdHJfZXhwcl07IGBBc3NvYyBbJWUgZXhwcl0gXV0pXG4gICAgICBpblxuICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIChTb21lIHBhdHQpIC0tPiBleHByXG4gICAgfCBQY3N0cl90dXBsZSBwY2RfYXJncyAtPlxuICAgICAgKG1hdGNoIHBjZF9hcmdzIHdpdGhcbiAgICAgICB8IFtdIC0+XG4gICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgTm9uZSAtLT4gWyVleHByIGBMaXN0IFsgYFN0cmluZyBbJWUgY29uc3RyX3N0cl0gXV1cbiAgICAgICB8IGFyZ3MgLT5cbiAgICAgICAgIGxldCB5b2pzb25fb2ZfYXJncyA9XG4gICAgICAgICAgIExpc3QubWFwIH5mOih5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSkgYXJnc1xuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdXSBpblxuICAgICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyB5b2pzb25fb2ZfYXJncyBpblxuICAgICAgICAgbGV0IHBhdHQgPVxuICAgICAgICAgICBtYXRjaCBwYXR0cyB3aXRoXG4gICAgICAgICAgIHwgWyBwYXR0IF0gLT4gcGF0dFxuICAgICAgICAgICB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIHBhdHRzXG4gICAgICAgICBpblxuICAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIChTb21lIHBhdHQpXG4gICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgIFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyAoY25zdHJfZXhwciA6OiB2YXJzKV1dKVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2Zfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIHRwcyBjZHMgPVxuICAgIEZ1bl9vcl9tYXRjaC5NYXRjaFxuICAgICAgKExpc3QubWFwIGNkcyB+ZjooZnVuIGNkIC0+XG4gICAgICAgICBsZXQgcmVuYW1pbmcgPSBSZW5hbWluZy5vZl9nYWR0IHRwcyBjZCBpblxuICAgICAgICAgbGV0IGNvbnN0cl9saWQgPSBMb2NhdGVkLm1hcCBsaWRlbnQgY2QucGNkX25hbWUgaW5cbiAgICAgICAgIGxldCBjb25zdHJfbmFtZSA9XG4gICAgICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5vZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCBpblxuICAgICAgICAgICBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCB8PiBlc3RyaW5nIH5sb2M6Y2QucGNkX25hbWUubG9jXG4gICAgICAgICBpblxuICAgICAgICAgYnJhbmNoX3N1bVxuICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICByZW5hbWluZ1xuICAgICAgICAgICB+bG9jOmNkLnBjZF9sb2NcbiAgICAgICAgICAgY29uc3RyX2xpZFxuICAgICAgICAgICBjb25zdHJfbmFtZVxuICAgICAgICAgICBjZC5wY2RfYXJncykpXG4gIDs7XG5cbiAgKCogRW1wdHkgdHlwZSAqKVxuICBsZXQgeW9qc29uX29mX25pbCBsb2MgPSBGdW5fb3JfbWF0Y2guRnVuIFslZXhwciBmdW4gX3YgLT4gYXNzZXJ0IGZhbHNlXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG5cbiAgbGV0IHlvanNvbl9vZl90ZCB+dHlwZXNfYmVpbmdfZGVmaW5lZCB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IGJvZHkgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGNkcyAtPlxuICAgICAgICAgIHlvanNvbl9vZl9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgKExpc3QubWFwIHRwcyB+ZjooZnVuIHggLT4geC50eHQpKSBjZHNcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgbGRzIC0+XG4gICAgICAgICAgbGV0IHJlbmFtaW5nID0gUmVuYW1pbmcuaWRlbnRpdHkgaW5cbiAgICAgICAgICBsZXQgcGF0dCwgZXhwciA9XG4gICAgICAgICAgICB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdFxuICAgICAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgIGxkc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d3JhcF9leHByOihmdW4gZXhwciAtPiBbJWV4cHIgYEFzc29jIFslZSBleHByXV0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBNYXRjaCBbIHBhdHQgLS0+IGV4cHIgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogb3BlbiB0eXBlcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICAgIChtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiB5b2pzb25fb2ZfbmlsIGxvY1xuICAgICAgICAgICB8IFNvbWUgdHkgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayBSZW5hbWluZy5pZGVudGl0eSkgdHkpXG4gICAgICBpblxuICAgICAgbGV0IGlzX3ByaXZhdGVfYWxpYXMgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kLCB0ZC5wdHlwZV9tYW5pZmVzdCwgdGQucHR5cGVfcHJpdmF0ZSB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QsIFNvbWUgXywgUHJpdmF0ZSAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3ByaXZhdGVfYWxpYXNcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBSZXBsYWNlIGFsbCB0eXBlIHZhcmlhYmxlIGJ5IF8gdG8gYXZvaWQgZ2VuZXJhbGl6YXRpb24gcHJvYmxlbXMgKilcbiAgICAgICAgbGV0IHR5X3NyYyA9XG4gICAgICAgICAgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfD4gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1hbmlmZXN0ID1cbiAgICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG1hbmlmZXN0IC0+IG1hbmlmZXN0XG4gICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwieW9qc29uX29mX3RkL25vLW1hbmlmZXN0XCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5X2RzdCA9IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIG1hbmlmZXN0IGluXG4gICAgICAgIGxldCBjb2VyY2lvbiA9IFslZXhwciAodiA6IFsldCB0eV9zcmNdIDo+IFsldCB0eV9kc3RdKV0gaW5cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBjb2VyY2lvbiBdXV1cbiAgICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gWyVleHByIGZ1biB2IC0+IFslZSBwZXhwX21hdGNoIH5sb2MgY29lcmNpb24gbWF0Y2hpbmdzXV0pXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICgqIFByZXZlbnQgdmlvbGF0aW9uIG9mIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCBwcm9ibGVtcyB3aXRoIHJlY3Vyc2l2ZSB0eXBlcyBieVxuICAgICAgICAgICBldGEtZXhwYW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zICopXG4gICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBbJWV4cHIgdl0gXV1dXG4gICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBtYXRjaGluZ3MpXG4gICAgaW5cbiAgICBsZXQgdHlwID0gU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta190eXBlIHRkIGluXG4gICAgbGV0IGZ1bmNfbmFtZSA9IFwieW9qc29uX29mX1wiIF4gdHlwZV9uYW1lIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IHBhdHRzID0gTGlzdC5tYXAgdHBzIH5mOihmdW4gaWQgLT4gcHZhciB+bG9jIChcIl9vZl9cIiBeIGlkLnR4dCkpIGluXG4gICAgICBsZXQgcmVjX2ZsYWcgPVxuICAgICAgICBtYXRjaCB0eXBlc19iZWluZ19kZWZpbmVkIHdpdGhcbiAgICAgICAgfCBgUmVjdXJzaXZlIF8gLT4gUmVjdXJzaXZlXG4gICAgICAgIHwgYE5vbnJlY3Vyc2l2ZSAtPiBOb25yZWN1cnNpdmVcbiAgICAgIGluXG4gICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgfnJlY19mbGFnIChlYWJzdHJhY3QgfmxvYyBwYXR0cyBib2R5KVxuICAgIGluXG4gICAgWyBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHkgXVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfdGRzIH5sb2MgfnBhdGg6XyAocmVjX2ZsYWcsIHRkcykgPVxuICAgIGxldCByZWNfZmxhZyA9IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGluXG4gICAgbGV0IHR5cGVzX2JlaW5nX2RlZmluZWQgPVxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBOb25yZWN1cnNpdmUgLT4gYE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT5cbiAgICAgICAgYFJlY3Vyc2l2ZVxuICAgICAgICAgIChTZXQub2ZfbGlzdCAobW9kdWxlIFN0cmluZykgKExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KSkpXG4gICAgaW5cbiAgICBsZXQgYmluZGluZ3MgPSBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOih5b2pzb25fb2ZfdGQgfnR5cGVzX2JlaW5nX2RlZmluZWQpIGluXG4gICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgYmluZGluZ3NcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX3lvanNvbl9maWVsZHMgPSBzdHJ1Y3RcbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCBsb2MgZmxkcyA9XG4gICAgbGV0IGNvbGwgbGQgPVxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpsZC5wbGRfbmFtZS50eHQgKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZClcbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0gbGQucGxkX25hbWUubG9jIGluXG4gICAgICBlc3RyaW5nIH5sb2Mga2V5XG4gICAgaW5cbiAgICBlbGlzdCB+bG9jIChMaXN0Lm1hcCB+Zjpjb2xsIGZsZHMpXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfdGQgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgfCBQdHlwZV9yZWNvcmQgbGRzIC0+IHlvanNvbl9maWVsZHNfb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCBsb2MgbGRzXG4gICAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX29wZW4gfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogeW9qc29uX2ZpZWxkcyBvbmx5IHdvcmtzIG9uIHJlY29yZHNcIlxuICAgIGluXG4gICAgbGV0IHR5cCA9IFsldHlwZTogc3RyaW5nIGxpc3RdIGluXG4gICAgbGV0IGZ1bmNfbmFtZSA9IFwieW9qc29uX2ZpZWxkc19vZl9cIiBeIHR5cGVfbmFtZSBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBwYXR0cyA9IExpc3QubWFwIHRwcyB+ZjooZnVuIGlkIC0+IHB2YXIgfmxvYyAoXCJfZmllbGRzX29mX1wiIF4gaWQudHh0KSkgaW5cbiAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgKGVhYnN0cmFjdCB+bG9jIHBhdHRzIGJvZHkpXG4gICAgaW5cbiAgICBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHlcbiAgOztcblxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl90ZHMgfmxvYyB+cGF0aDpfIChfLCB0ZHMpID1cbiAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmUgKExpc3QubWFwIHRkcyB+Zjp5b2pzb25fZmllbGRzX29mX3RkKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfb2ZfeW9qc29uID0gc3RydWN0XG4gICgqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG4gICgqIEhhbmRsZSBiYWNrdHJhY2tpbmcgd2hlbiB2YXJpYW50cyBkbyBub3QgbWF0Y2ggKilcbiAgbGV0IGhhbmRsZV9ub192YXJpYW50X21hdGNoIGxvYyBleHByID1cbiAgICBbIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2hdIC0tPiBleHByIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgbWF0Y2ggZm9yIHRoZSBsYXN0XG4gICAgIGNhc2Ugb2YgbWF0Y2hpbmcgYSB2YXJpYW50ICopXG4gIGxldCBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaGVzID1cbiAgICBtYXRjaCBtYXRjaF9sYXN0LCBtYXRjaGVzIHdpdGhcbiAgICB8IHRydWUsIFsgeyBwY19saHMgPSBfOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyA9IGV4cHIgfSBdXG4gICAgfCBfLCBbIHsgcGNfbGhzID0gWyVwYXQ/IF9dOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyA9IGV4cHIgfSBdIC0+IGV4cHJcbiAgICB8IF8gLT4gcGV4cF9tYXRjaCB+bG9jIFslZXhwciBhdG9tXSBtYXRjaGVzXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgbWFsZm9ybWVkIFlvanNvbnMgKilcbiAgbGV0IG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHMgY2FsbCA9XG4gICAgbGV0IGNvbGxfc3RydWN0cyBhY2MgKGxvYywgbGFiZWwpID1cbiAgICAgIChwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKVxuICAgICAgIC0tPlxuICAgICAgIG1hdGNoIGNhbGwgd2l0aFxuICAgICAgIHwgYHB0YWdfbm9fYXJncyAtPlxuICAgICAgICAgWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ19ub19hcmdzIF90cF9sb2MgX3lvanNvbl1cbiAgICAgICB8IGBwdGFnX3Rha2VzX2FyZ3MgLT5cbiAgICAgICAgIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBfdHBfbG9jIF95b2pzb25dKVxuICAgICAgOjogYWNjXG4gICAgaW5cbiAgICBsZXQgZXhjX25vX3ZhcmlhbnRfbWF0Y2ggPVxuICAgICAgWyVwYXQ/IF9dIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpXVxuICAgIGluXG4gICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbF9zdHJ1Y3RzIH5pbml0OlsgZXhjX25vX3ZhcmlhbnRfbWF0Y2ggXSByZXZfZWxzXG4gIDs7XG5cbiAgKCogU3BsaXQgdGhlIHJvdyBmaWVsZHMgb2YgYSB2YXJpYW50IHR5cGUgaW50byBsaXN0cyBvZiBhdG9taWMgdmFyaWFudHMsXG4gICAgIHN0cnVjdHVyZWQgdmFyaWFudHMsIGF0b21pYyB2YXJpYW50cyArIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMsXG4gICAgIGFuZCBzdHJ1Y3R1cmVkIHZhcmlhbnRzICsgaW5jbHVkZWQgdmFyaWFudCB0eXBlcy4gKilcbiAgbGV0IHNwbGl0X3Jvd19maWVsZCB+bG9jIChhdG9tcywgc3RydWN0cywgYWluaHMsIHNpbmhzKSByb3dfZmllbGQgPVxuICAgIGxldCBuYW1lX292ZXJyaWRlID0gQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lIHJvd19maWVsZCBpblxuICAgIG1hdGNoIHJvd19maWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgfCBSdGFnIChjbnN0ciwgdHJ1ZSwgW10pIC0+XG4gICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgIGxldCB0cGwgPSBsb2MsIGxhYmVsIGluXG4gICAgICB0cGwgOjogYXRvbXMsIHN0cnVjdHMsIGBBIHRwbCA6OiBhaW5ocywgc2luaHNcbiAgICB8IFJ0YWcgKGNuc3RyLCBmYWxzZSwgWyB0cCBdKSAtPlxuICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICAgIGF0b21zLCAobG9jLCBsYWJlbCkgOjogc3RydWN0cywgYWluaHMsIGBTIChsb2MsIGxhYmVsLCB0cCwgcm93X2ZpZWxkKSA6OiBzaW5oc1xuICAgIHwgUmluaGVyaXQgaW5oIC0+XG4gICAgICBsZXQgaWluaCA9IGBJIGluaCBpblxuICAgICAgYXRvbXMsIHN0cnVjdHMsIGlpbmggOjogYWluaHMsIGlpbmggOjogc2luaHNcbiAgICB8IFJ0YWcgKF8sIHRydWUsIFsgXyBdKSB8IFJ0YWcgKF8sIF8sIF8gOjogXyA6OiBfKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJzcGxpdF9yb3dfZmllbGQvJlwiXG4gICAgfCBSdGFnIChfLCBmYWxzZSwgW10pIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCB0eXBlX2NvbnN0cl9vZl95b2pzb24gPyhpbnRlcm5hbCA9IGZhbHNlKSB+bG9jIGlkIGFyZ3MgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgaWQgYXJncyB+bG9jIH5mOihmdW4gcyAtPlxuICAgICAgbGV0IHMgPSBzIF4gXCJfb2ZfeW9qc29uXCIgaW5cbiAgICAgIGlmIGludGVybmFsIHRoZW4gXCJfX1wiIF4gcyBeIFwiX19cIiBlbHNlIHMpXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiB0eXBlcyAqKVxuICBsZXQgcmVjIHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgPyhpbnRlcm5hbCA9IGZhbHNlKSB0eXBcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBsb2MgPSB7IHR5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIHR5cCB3aXRoXG4gICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMub3BhcXVlIHR5cCkgLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5vcGFxdWVfb2ZfeW9qc29uXVxuICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIHwgWyV0eXBlOiBfXSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252Lm9wYXF1ZV9vZl95b2pzb25dXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdHVwbGUgdHA7IF8gfSAtPlxuICAgICAgTWF0Y2ggKHR1cGxlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cCkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyIHBhcm07IF8gfSAtPlxuICAgICAgKG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgICAgIHwgYG9rIC0+IEZ1biAoZXZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0pKVxuICAgICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBcIlR5cGUgdmFyaWFibGVzIG5vdCBhbGxvd2VkIGluIFslJW9mX3lvanNvbjogXS4gUGxlYXNlIHVzZSBsb2NhbGx5IGFic3RyYWN0IFxcXG4gICAgICAgICAgICB0eXBlcyBpbnN0ZWFkLlwiKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIGFyZ3MpOyBfIH0gLT5cbiAgICAgIGxldCBhcmdzID1cbiAgICAgICAgTGlzdC5tYXAgYXJncyB+ZjooZnVuIGFyZyAtPlxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIGFyZykpXG4gICAgICBpblxuICAgICAgRnVuICh0eXBlX2NvbnN0cl9vZl95b2pzb24gfmxvYyB+aW50ZXJuYWwgaWQgYXJncylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hcnJvdyAoXywgXywgXyk7IF8gfSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LmZ1bl9vZl95b2pzb25dXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkcywgXywgXyk7IF8gfSAtPlxuICAgICAgdmFyaWFudF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSAobG9jLCByb3dfZmllbGRzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKHBhcm1zLCBwb2x5X3RwKTsgXyB9IC0+XG4gICAgICBwb2x5X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyBwb2x5X3RwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfb2JqZWN0IChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY2xhc3MgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BhY2thZ2UgXzsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIF87IF8gfSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJUeXBlIHVuc3VwcG9ydGVkIGZvciBwcHggW29mX3lvanNvbl0gY29udmVyc2lvblwiXG5cbiAgKCogQ29udmVyc2lvbiBvZiB0dXBsZXMgKilcbiAgYW5kIHR1cGxlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cHMpID1cbiAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nKSB0cHMgaW5cbiAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgIGxldCBuID0gTGlzdC5sZW5ndGggZnBzIGluXG4gICAgWyBbJXBhdD8gYExpc3QgWyVwIHBsaXN0IH5sb2MgcGF0dHNdXVxuICAgICAgLS0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIChwZXhwX3R1cGxlIH5sb2MgdmFycylcbiAgICA7IFslcGF0PyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIFslZSBlaW50IH5sb2Mgbl1cbiAgICAgICAgICB5b2pzb25dXG4gICAgXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMgKilcbiAgYW5kIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmggPVxuICAgIGxldCBsb2MgPSBpbmgucHR5cF9sb2MgaW5cbiAgICBsZXQgZnVuY19leHByID0gdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmludGVybmFsOnRydWUgaW5oIGluXG4gICAgbGV0IGFwcCA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICAgIGxldCBmdW5fZXhwciA9IEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgZnVuY19leHByIGluXG4gICAgICBGdW4gWyVleHByIFslZSBmdW5fZXhwcl0gX3lvanNvbl1cbiAgICBpblxuICAgIGxldCBtYXRjaF9leGMgPVxuICAgICAgaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2hcbiAgICAgICAgbG9jXG4gICAgICAgIChoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzKVxuICAgIGluXG4gICAgbGV0IG5ld19vdGhlcl9tYXRjaGVzID1cbiAgICAgIFsgWyVwYXQ/IF9dXG4gICAgICAgIC0tPiBwZXhwX3RyeVxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIChbJWUgRnVuX29yX21hdGNoLmV4cHIgfmxvYyBhcHBdXG4gICAgICAgICAgICAgICAgIDo+IFsldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBmdWxsX3R5cGVdKV1cbiAgICAgICAgICAgICAgbWF0Y2hfZXhjXG4gICAgICBdXG4gICAgaW5cbiAgICBuZXdfb3RoZXJfbWF0Y2hlcywgdHJ1ZVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIGF0b21pYyB2YXJpYW50cyAqKVxuICBhbmQgbWtfdmFyaWFudF9tYXRjaF9hdG9tIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9hdG9tc19pbmhzIH5yZXZfc3RydWN0cyA9XG4gICAgbGV0IGNvbGwgKG90aGVyX21hdGNoZXMsIG1hdGNoX2xhc3QpID0gZnVuY3Rpb25cbiAgICAgIHwgYEEgKGxvYywgbGFiZWwpIC0+XG4gICAgICAgIGxldCBuZXdfbWF0Y2ggPVxuICAgICAgICAgIHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXG4gICAgICAgICAgLS0+IHBleHBfdmFyaWFudCB+bG9jIChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgbmV3X21hdGNoIDo6IG90aGVyX21hdGNoZXMsIGZhbHNlXG4gICAgICB8IGBJIGluaCAtPlxuICAgICAgICBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oXG4gICAgaW5cbiAgICBsZXQgb3RoZXJfbWF0Y2hlcyA9XG4gICAgICBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzOnJldl9zdHJ1Y3RzIGBwdGFnX3Rha2VzX2FyZ3NcbiAgICBpblxuICAgIGxldCBtYXRjaF9hdG9tc19pbmhzLCBtYXRjaF9sYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KG90aGVyX21hdGNoZXMsIGZhbHNlKSByZXZfYXRvbXNfaW5oc1xuICAgIGluXG4gICAgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hfYXRvbXNfaW5oc1xuXG4gICgqIFZhcmlhbnQgY29udmVyc2lvbnMgKilcblxuICAoKiBNYXRjaCBhcmd1bWVudHMgb2YgY29uc3RydWN0b3JzICh2YXJpYW50cyBvciBzdW0gdHlwZXMpICopXG4gIGFuZCBta19jbnN0cl9hcmdzX21hdGNoIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfmlzX3ZhcmlhbnQgbGFiZWwgdHBzID1cbiAgICBsZXQgY25zdHJfbGFiZWwgPSBMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwgaW5cbiAgICBsZXQgY25zdHIgdmFyc19leHByID1cbiAgICAgIGlmIGlzX3ZhcmlhbnRcbiAgICAgIHRoZW4gcGV4cF92YXJpYW50IH5sb2MgY25zdHJfbGFiZWwgKFNvbWUgdmFyc19leHByKVxuICAgICAgZWxzZSBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSAoU29tZSB2YXJzX2V4cHIpXG4gICAgaW5cbiAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCBnb29kX2FyZ19tYXRjaCA9XG4gICAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nKSB0cHMgaW5cbiAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgICBsZXQgZ29vZF9hcmdfbWF0Y2ggPVxuICAgICAgICBsZXQgdmFyc19leHByID1cbiAgICAgICAgICBtYXRjaCB2YXJzIHdpdGhcbiAgICAgICAgICB8IFsgdmFyX2V4cHIgXSAtPiB2YXJfZXhwclxuICAgICAgICAgIHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgdmFyc1xuICAgICAgICBpblxuICAgICAgICBjbnN0ciB2YXJzX2V4cHJcbiAgICAgIGluXG4gICAgICBiaW5kaW5ncywgcGF0dHMsIGdvb2RfYXJnX21hdGNoXG4gICAgaW5cbiAgICBbJWV4cHJcbiAgICAgIG1hdGNoIHlvanNvbl9hcmdzIHdpdGhcbiAgICAgIHwgWyVwIHBsaXN0IH5sb2MgcGF0dHNdIC0+IFslZSBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBnb29kX2FyZ19tYXRjaF1cbiAgICAgIHwgXyAtPlxuICAgICAgICBbJWVcbiAgICAgICAgICBpZiBpc192YXJpYW50XG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIF90YWdcbiAgICAgICAgICAgICAgICBfeW9qc29uXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICBfdGFnXG4gICAgICAgICAgICAgICAgX3lvanNvbl1dXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIHN0cnVjdHVyZWQgdmFyaWFudHMgKilcbiAgYW5kIG1rX3ZhcmlhbnRfbWF0Y2hfc3RydWN0IH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9zdHJ1Y3RzX2luaHMgfnJldl9hdG9tc1xuICAgID1cbiAgICBsZXQgaGFzX3N0cnVjdHNfcmVmID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IGNvbGwgKG90aGVyX21hdGNoZXMsIG1hdGNoX2xhc3QpID0gZnVuY3Rpb25cbiAgICAgIHwgYFMgKGxvYywgbGFiZWwsIHRwLCBfcm93KSAtPlxuICAgICAgICBoYXNfc3RydWN0c19yZWYgOj0gdHJ1ZTtcbiAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgIG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3R1cGxlIHRwcyAtPiB0cHNcbiAgICAgICAgICB8IF8gLT4gWyB0cCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBta19jbnN0cl9hcmdzX21hdGNoXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmxvYzp0cC5wdHlwX2xvY1xuICAgICAgICAgICAgfmlzX3ZhcmlhbnQ6dHJ1ZVxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5ld19tYXRjaCA9XG4gICAgICAgICAgWyVwYXQ/IFslcCBwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV0gYXMgX3RhZ10gLS0+IGV4cHJcbiAgICAgICAgaW5cbiAgICAgICAgbmV3X21hdGNoIDo6IG90aGVyX21hdGNoZXMsIGZhbHNlXG4gICAgICB8IGBJIGluaCAtPlxuICAgICAgICBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oXG4gICAgaW5cbiAgICBsZXQgb3RoZXJfbWF0Y2hlcyA9IG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHM6cmV2X2F0b21zIGBwdGFnX25vX2FyZ3MgaW5cbiAgICBsZXQgbWF0Y2hfc3RydWN0c19pbmhzLCBtYXRjaF9sYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KG90aGVyX21hdGNoZXMsIGZhbHNlKSByZXZfc3RydWN0c19pbmhzXG4gICAgaW5cbiAgICBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaF9zdHJ1Y3RzX2luaHMsICFoYXNfc3RydWN0c19yZWZcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBoYW5kbGluZyBhdG9taWMgYW5kIHN0cnVjdHVyZWQgdmFyaWFudHMgKGkuZS4gbm90XG4gICAgIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMpICopXG4gIGFuZCBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRfbGlzdCA9XG4gICAgbGV0IHJldl9hdG9tcywgcmV2X3N0cnVjdHMsIHJldl9hdG9tc19pbmhzLCByZXZfc3RydWN0c19pbmhzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOihzcGxpdF9yb3dfZmllbGQgfmxvYykgfmluaXQ6KFtdLCBbXSwgW10sIFtdKSByb3dfZmllbGRfbGlzdFxuICAgIGluXG4gICAgbGV0IG1hdGNoX3N0cnVjdCwgaGFzX3N0cnVjdHMgPVxuICAgICAgbWtfdmFyaWFudF9tYXRjaF9zdHJ1Y3QgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X3N0cnVjdHNfaW5ocyB+cmV2X2F0b21zXG4gICAgaW5cbiAgICBsZXQgbWF5YmVfeW9qc29uX2FyZ3NfcGF0dCA9IGlmIGhhc19zdHJ1Y3RzIHRoZW4gWyVwYXQ/IHlvanNvbl9hcmdzXSBlbHNlIFslcGF0PyBfXSBpblxuICAgIFsgWyVwYXQ/IGBMaXN0IFsgYFN0cmluZyBhdG9tIF0gYXMgX3lvanNvbl1cbiAgICAgIC0tPiBta192YXJpYW50X21hdGNoX2F0b21cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGZ1bGxfdHlwZVxuICAgICAgICAgICAgfnJldl9hdG9tc19pbmhzXG4gICAgICAgICAgICB+cmV2X3N0cnVjdHNcbiAgICA7IFslcGF0PyBgTGlzdCAoYFN0cmluZyBhdG9tIDo6IFslcCBtYXliZV95b2pzb25fYXJnc19wYXR0XSkgYXMgX3lvanNvbl1cbiAgICAgIC0tPiBtYXRjaF9zdHJ1Y3RcbiAgICA7IFslcGF0PyBgTGlzdCAoYExpc3QgXyA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICB5b2pzb25dXG4gICAgOyBbJXBhdD8gYExpc3QgW10gYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICB5b2pzb25dXG4gICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIF90cF9sb2MgeW9qc29uXVxuICAgIF1cblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciB2YXJpYW50cyAqKVxuICBhbmQgdmFyaWFudF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSAobG9jLCByb3dfZmllbGRzKSA9XG4gICAgbGV0IGlzX2NvbnRhaW5lZCwgZnVsbF90eXBlID1cbiAgICAgIG1hdGNoIGZ1bGxfdHlwZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgcHR5cF92YXJpYW50IH5sb2Mgcm93X2ZpZWxkcyBDbG9zZWQgTm9uZVxuICAgICAgfCBTb21lIGZ1bGxfdHlwZSAtPiBmYWxzZSwgZnVsbF90eXBlXG4gICAgaW5cbiAgICBsZXQgdG9wX21hdGNoID1cbiAgICAgIG1hdGNoIHJvd19maWVsZHMgd2l0aFxuICAgICAgfCB7IHByZl9kZXNjID0gUmluaGVyaXQgaW5oOyBfIH0gOjogcmVzdCAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgaW5oIHJvd19maWVsZHMgPVxuICAgICAgICAgIGxldCBjYWxsID1cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAoWyVlXG4gICAgICAgICAgICAgICAgRnVuX29yX21hdGNoLmV4cHJcbiAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+aW50ZXJuYWw6dHJ1ZSBpbmgpXVxuICAgICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgICAgIDo+IFsldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBmdWxsX3R5cGVdKV1cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJvd19maWVsZHMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gY2FsbFxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgICAgIG1hdGNoIGgucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IFJpbmhlcml0IGluaCAtPiBsb29wIGluaCB0XG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCByZnRhZ19tYXRjaGVzID1cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZHNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSByZnRhZ19tYXRjaGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcGV4cF90cnkgfmxvYyBjYWxsIChoYW5kbGVfbm9fdmFyaWFudF9tYXRjaCBsb2MgZXhwcilcbiAgICAgICAgaW5cbiAgICAgICAgWyBbJXBhdD8geW9qc29uXSAtLT4gbG9vcCBpbmggcmVzdCBdXG4gICAgICB8IF8gOjogXyAtPiBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRzXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogaW1wb3NzaWJsZSAqKVxuICAgIGluXG4gICAgaWYgaXNfY29udGFpbmVkXG4gICAgdGhlblxuICAgICAgRnVuXG4gICAgICAgIFslZXhwclxuICAgICAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgICAgIHRyeSBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIHRvcF9tYXRjaF0gd2l0aFxuICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2ggLT5cbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICBlbHNlIE1hdGNoIHRvcF9tYXRjaFxuXG4gIGFuZCBwb2x5X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyB0cCA9XG4gICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgbGV0IGJpbmRpbmdzID1cbiAgICAgIGxldCBta19iaW5kaW5nIHBhcm0gPVxuICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgfmxvY1xuICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtLnR4dCkpXG4gICAgICAgICAgfmV4cHI6XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX3BvbHlfZmllbGRfdmFsdWVcbiAgICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgIGluXG4gICAgICBMaXN0Lm1hcCB+Zjpta19iaW5kaW5nIHBhcm1zXG4gICAgaW5cbiAgICBtYXRjaCB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB0cCB3aXRoXG4gICAgfCBGdW4gZnVuX2V4cHIgLT4gRnVuIChwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBmdW5fZXhwcilcbiAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPlxuICAgICAgTWF0Y2hcbiAgICAgICAgWyBbJXBhdD8gYXJnXVxuICAgICAgICAgIC0tPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyAocGV4cF9tYXRjaCB+bG9jIFslZXhwciBhcmddIG1hdGNoaW5ncylcbiAgICAgICAgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGV4dHJhY3RpbmcgcmVjb3JkIGZpZWxkcyAqKVxuICBsZXQgbWtfZXh0cmFjdF9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKSA9XG4gICAgbGV0IHJlYyBsb29wIGluaXRzIG5vX2FyZ3MgYXJncyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGluaXRzLCBub19hcmdzLCBhcmdzXG4gICAgICB8IGxkIDo6IG1vcmVfZmxkcyAtPlxuICAgICAgICBsZXQgbG9jID0gbGQucGxkX25hbWUubG9jIGluXG4gICAgICAgIGxldCBubSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgICBsZXQga2V5ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0Om5tIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpIGluXG4gICAgICAgIChtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQsIGxkLnBsZF90eXBlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoYHlvanNvbl9vcHRpb24gdHApLCBfIHwgKE5vbmUgfCBTb21lIChgZGVmYXVsdCBfKSksIHRwIC0+XG4gICAgICAgICAgIGxldCBpbml0cyA9IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lXSA6OiBpbml0cyBpblxuICAgICAgICAgICBsZXQgdW5yb2xsZWQgPVxuICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgIFslZXhwciBfZmllbGRfeW9qc29uXVxuICAgICAgICAgICAgICAgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHRwKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgICAgKHBzdHJpbmcgfmxvYyBrZXlcbiAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgIG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV0gd2l0aFxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZSA9IFslZSB1bnJvbGxlZF0gaW5cbiAgICAgICAgICAgICAgICAgIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildXG4gICAgICAgICAgICAgICAgICA6PSBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZVxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzIDo9IGZpZWxkX25hbWUgOjogUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzXSlcbiAgICAgICAgICAgICA6OiBhcmdzXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxvb3AgaW5pdHMgbm9fYXJncyBhcmdzIG1vcmVfZmxkcylcbiAgICBpblxuICAgIGxldCBoYW5kbGVfZXh0cmEgPVxuICAgICAgWyAoWyVwYXQ/IF9dXG4gICAgICAgICAtLT5cbiAgICAgICAgIGlmIGFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICAgdGhlbiBbJWV4cHIgKCldXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgIGlmIFBweF95b2pzb25fY29udl9saWIuKCAhIClcbiAgICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgIHRoZW4gZXh0cmEgOj0gZmllbGRfbmFtZSA6OiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhXG4gICAgICAgICAgICAgZWxzZSAoKV0pXG4gICAgICBdXG4gICAgaW5cbiAgICBsb29wIFtdIGhhbmRsZV9leHRyYSBoYW5kbGVfZXh0cmEgKExpc3QucmV2IGZsZHMpXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgaGFuZGxpbmcgdGhlIHJlc3VsdCBvZiBtYXRjaGluZyByZWNvcmQgZmllbGRzICopXG4gIGxldCBta19oYW5kbGVfcmVjb3JkX21hdGNoX3Jlc3VsdCBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByID1cbiAgICBsZXQgaGFzX25vbm9wdF9maWVsZHMgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgcmVzX3RwbHMsIGJpX2xzdCwgZ29vZF9wYXR0cyA9XG4gICAgICBsZXQgcmVjIGxvb3AgKChyZXNfdHBscywgYmlfbHN0LCBnb29kX3BhdHRzKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICAgICAgfCAoeyBwbGRfbmFtZSA9IHsgdHh0ID0gbm07IGxvYyB9OyBfIH0gYXMgbGQpIDo6IG1vcmVfZmxkcyAtPlxuICAgICAgICAgIGxldCBmbGQgPSBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXV0gaW5cbiAgICAgICAgICBsZXQgbWtfZGVmYXVsdCBsb2MgPVxuICAgICAgICAgICAgYmlfbHN0LCBbJXBhdD8gWyVwIHB2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV1dIDo6IGdvb2RfcGF0dHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuZXdfYmlfbHN0LCBuZXdfZ29vZF9wYXR0cyA9XG4gICAgICAgICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChgZGVmYXVsdCBfIHwgYHlvanNvbl9vcHRpb24gXykgLT4gbWtfZGVmYXVsdCBsb2NcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBoYXNfbm9ub3B0X2ZpZWxkcyA6PSB0cnVlO1xuICAgICAgICAgICAgICAoIFslZXhwclxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCBbJWUgZmxkXSBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICwgWyVlIGVzdHJpbmcgfmxvYyBubV1dXG4gICAgICAgICAgICAgICAgOjogYmlfbHN0XG4gICAgICAgICAgICAgICwgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgWyVwIHB2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV1dXG4gICAgICAgICAgICAgICAgOjogZ29vZF9wYXR0cyApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYWNjID0gWyVleHByIFslZSBmbGRdXSA6OiByZXNfdHBscywgbmV3X2JpX2xzdCwgbmV3X2dvb2RfcGF0dHMgaW5cbiAgICAgICAgICBsb29wIGFjYyBtb3JlX2ZsZHNcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIChbXSwgW10sIFtdKSAoTGlzdC5yZXYgZmxkcylcbiAgICBpblxuICAgIGxldCBtYXRjaF9nb29kX2V4cHIgPVxuICAgICAgaWYgaGFzX3BvbHlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY252dCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBsZF9uYW1lID0geyB0eHQgPSBubTsgXyB9OyBfIH0gLT4gZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIExpc3QubWFwIH5mOmNudnQgZmxkcyB3aXRoXG4gICAgICAgIHwgWyBtYXRjaF9nb29kX2V4cHIgXSAtPiBtYXRjaF9nb29kX2V4cHJcbiAgICAgICAgfCBtYXRjaF9nb29kX2V4cHJzIC0+IHBleHBfdHVwbGUgfmxvYyBtYXRjaF9nb29kX2V4cHJzKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjbnZ0IGxkID1cbiAgICAgICAgICBsZXQgbm0gPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoYGRlZmF1bHQgZGVmYXVsdCkgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgbWF0Y2ggWyVlIGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV0gd2l0aFxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPiBbJWUgZGVmYXVsdF1cbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgdiAtPiB2XVxuICAgICAgICAgICAgfCBTb21lIChgeW9qc29uX29wdGlvbiBfKSB8IE5vbmUgLT4gZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMb2NhdGVkLmxpZGVudCB+bG9jIG5tLCB2YWx1ZVxuICAgICAgICBpblxuICAgICAgICB3cmFwX2V4cHIgKHBleHBfcmVjb3JkIH5sb2MgKExpc3QubWFwIH5mOmNudnQgZmxkcykgTm9uZSkpXG4gICAgaW5cbiAgICBsZXQgZXhwciwgcGF0dCA9XG4gICAgICBtYXRjaCByZXNfdHBscywgZ29vZF9wYXR0cyB3aXRoXG4gICAgICB8IFsgcmVzX2V4cHIgXSwgWyByZXNfcGF0dCBdIC0+IHJlc19leHByLCByZXNfcGF0dFxuICAgICAgfCBfIC0+IHBleHBfdHVwbGUgfmxvYyByZXNfdHBscywgcHBhdF90dXBsZSB+bG9jIGdvb2RfcGF0dHNcbiAgICBpblxuICAgIGlmICFoYXNfbm9ub3B0X2ZpZWxkc1xuICAgIHRoZW5cbiAgICAgIHBleHBfbWF0Y2hcbiAgICAgICAgfmxvY1xuICAgICAgICBleHByXG4gICAgICAgIFsgcGF0dCAtLT4gbWF0Y2hfZ29vZF9leHByXG4gICAgICAgIDsgWyVwYXQ/IF9dXG4gICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzXG4gICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgICAgIFslZSBlbGlzdCB+bG9jIGJpX2xzdF1dXG4gICAgICAgIF1cbiAgICBlbHNlIHBleHBfbWF0Y2ggfmxvYyBleHByIFsgcGF0dCAtLT4gbWF0Y2hfZ29vZF9leHByIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBjb252ZXJ0aW5nIHJlY29yZCBmaWVsZHMgKilcblxuICBsZXQgbWtfY252X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHIgPVxuICAgIGxldCBleHByX3JlZl9pbml0cywgX21jX25vX2FyZ3NfZmllbGRzLCBtY19maWVsZHNfd2l0aF9hcmdzID1cbiAgICAgIG1rX2V4dHJhY3RfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcylcbiAgICBpblxuICAgIGxldCBmaWVsZF9yZWZzID1cbiAgICAgIExpc3QubWFwMl9leG5cbiAgICAgICAgZmxkc1xuICAgICAgICBleHByX3JlZl9pbml0c1xuICAgICAgICB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gaW5pdCAtPlxuICAgICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAobmFtZSBeIFwiX2ZpZWxkXCIpKVxuICAgICAgICAgICAgfmV4cHI6WyVleHByIHJlZiBbJWUgaW5pdF1dKVxuICAgIGluXG4gICAgcGV4cF9sZXRcbiAgICAgIH5sb2NcbiAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgKGZpZWxkX3JlZnNcbiAgICAgICBAIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6WyVwYXQ/IGR1cGxpY2F0ZXNdIH5leHByOlslZXhwciByZWYgW11dXG4gICAgICAgICA7IHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OlslcGF0PyBleHRyYV0gfmV4cHI6WyVleHByIHJlZiBbXV1cbiAgICAgICAgIF0pXG4gICAgICBbJWV4cHJcbiAgICAgICAgbGV0IHJlYyBpdGVyID1cbiAgICAgICAgICBbJWVcbiAgICAgICAgICAgIHBleHBfZnVuY3Rpb25cbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBbIFslcGF0PyAoZmllbGRfbmFtZSwgX2ZpZWxkX3lvanNvbikgOjogdGFpbF1cbiAgICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgICBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciBmaWVsZF9uYW1lXSBtY19maWVsZHNfd2l0aF9hcmdzXTtcbiAgICAgICAgICAgICAgICAgIGl0ZXIgdGFpbF1cbiAgICAgICAgICAgICAgOyBbJXBhdD8gW11dIC0tPiBbJWV4cHIgKCldXG4gICAgICAgICAgICAgIF1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgZmllbGRfeW9qc29ucztcbiAgICAgICAgbWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzIHdpdGhcbiAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9kdXBsaWNhdGVfZmllbGRzXG4gICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAoUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzKVxuICAgICAgICAgICAgeW9qc29uXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAobWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYSB3aXRoXG4gICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAoUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYSlcbiAgICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICB8IFtdIC0+IFslZSBta19oYW5kbGVfcmVjb3JkX21hdGNoX3Jlc3VsdCBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByXSldXG4gIDs7XG5cbiAgbGV0IGlzX3BvbHkgKF8sIGZsZHMpID1cbiAgICBMaXN0LmV4aXN0cyBmbGRzIH5mOihmdW5jdGlvblxuICAgICAgfCB7IHBsZF90eXBlID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9OyBfIH0gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICA7O1xuXG4gIGxldCBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgIGxvY1xuICAgICAgICBmbGRzXG4gICAgICAgIH53cmFwX2V4cHJcbiAgICA9XG4gICAgbGV0IGhhc19wb2x5ID0gaXNfcG9seSAobG9jLCBmbGRzKSBpblxuICAgIGxldCBjbnZfZmllbGRzID1cbiAgICAgIG1rX2Nudl9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByXG4gICAgaW5cbiAgICBpZiBoYXNfcG9seVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBhdHQgPVxuICAgICAgICBsZXQgcGF0cyA9XG4gICAgICAgICAgTGlzdC5tYXAgZmxkcyB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gLT4gcHZhciB+bG9jIG5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHBhdHMgd2l0aFxuICAgICAgICB8IFsgcGF0IF0gLT4gcGF0XG4gICAgICAgIHwgcGF0cyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0c1xuICAgICAgaW5cbiAgICAgIGxldCByZWNvcmRfZGVmID1cbiAgICAgICAgd3JhcF9leHByXG4gICAgICAgICAgKHBleHBfcmVjb3JkXG4gICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgIChMaXN0Lm1hcCBmbGRzIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSAtPlxuICAgICAgICAgICAgICAgIExvY2F0ZWQubGlkZW50IH5sb2MgbmFtZSwgZXZhciB+bG9jIG5hbWUpKVxuICAgICAgICAgICAgIE5vbmUpXG4gICAgICBpblxuICAgICAgcGV4cF9sZXRcbiAgICAgICAgfmxvY1xuICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpwYXR0IH5leHByOmNudl9maWVsZHMgXVxuICAgICAgICByZWNvcmRfZGVmKVxuICAgIGVsc2UgY252X2ZpZWxkc1xuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHJlY29yZHMgKilcbiAgbGV0IHJlY29yZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKSA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBNYXRjaFxuICAgICAgWyBbJXBhdD8gYEFzc29jIGZpZWxkX3lvanNvbnMgYXMgeW9qc29uXVxuICAgICAgICAtLT4gbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICAgZmxkc1xuICAgICAgICAgICAgICB+d3JhcF9leHByOihmdW4geCAtPiB4KVxuICAgICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9saXN0X2luc3RlYWRfYXRvbVxuICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgeW9qc29uXVxuICAgICAgXVxuICA7O1xuXG4gICgqIFN1bSB0eXBlIGNvbnZlcnNpb25zICopXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHdlbGwtZm9ybWVkIFlvanNvbnMgd3J0LiBzdW0gdHlwZXMgKilcbiAgbGV0IG1rX2dvb2Rfc3VtX21hdGNoZXMgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgY2RzKSA9XG4gICAgTGlzdC5tYXAgY2RzIH5mOihmdW4gKGNkLCBsYWJlbCkgLT5cbiAgICAgIGxldCBjbnN0cl9sYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCBpblxuICAgICAgbGV0IGNuc3RyX25hbWUgPSBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCBpblxuICAgICAgbWF0Y2ggY2Qgd2l0aFxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfcmVjb3JkIGZpZWxkczsgXyB9IC0+XG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHM6XG4gICAgICAgICAgICAgIChPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5hbGxvd19leHRyYV9maWVsZHNfY2QgY2QpKVxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBmaWVsZHNcbiAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBlIC0+XG4gICAgICAgICAgICAgIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIChTb21lIGUpKVxuICAgICAgICBpblxuICAgICAgICBbJXBhdD9cbiAgICAgICAgICAgICAgIGBMaXN0IFsgYFN0cmluZyAoWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyBfdGFnKTsgYEFzc29jIGZpZWxkX3lvanNvbnMgXVxuICAgICAgICAgIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IGV4cHJcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIFtdOyBfIH0gLT5cbiAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIGNkO1xuICAgICAgICBbJXBhdD8gYExpc3QgWyBgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gXV1cbiAgICAgICAgLS0+IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIE5vbmVcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIChfIDo6IF8gYXMgdHBzKTsgXyB9IC0+XG4gICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyBjZDtcbiAgICAgICAgWyVwYXQ/XG4gICAgICAgICAgICAgICBgTGlzdCAoYFN0cmluZyAoWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyBfdGFnKSA6OiB5b2pzb25fYXJncykgYXNcbiAgICAgICAgICBfeW9qc29uXVxuICAgICAgICAtLT4gbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50OmZhbHNlIGxhYmVsIHRwcylcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBtYWxmb3JtZWQgWW9qc29ucyB3aXRoIGdvb2QgdGFnc1xuICAgICB3cnQuIHN1bSB0eXBlcyAqKVxuICBsZXQgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbmFtZSA9IExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIGluXG4gICAgICBtYXRjaCBjZCB3aXRoXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgTGlzdCAoYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBfdHBfbG9jIHlvanNvbl1cbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIChfIDo6IF8pIHwgUGNzdHJfcmVjb3JkIF87IF8gfSAtPlxuICAgICAgICBbJXBhdD8gYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBfdHBfbG9jIHlvanNvbl0pXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3Igc3VtIHR5cGVzICopXG4gIGxldCBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpIDogRnVuX29yX21hdGNoLnQgPVxuICAgIGxldCBhbHRzID1cbiAgICAgIExpc3QubWFwIGFsdHMgfmY6KGZ1biBjZCAtPiBjZCwgTGFiZWxfd2l0aF9uYW1lLm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkKVxuICAgIGluXG4gICAgTWF0Y2hcbiAgICAgIChMaXN0LmNvbmNhdFxuICAgICAgICAgWyBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpXG4gICAgICAgICA7IG1rX2JhZF9zdW1fbWF0Y2hlcyAobG9jLCBhbHRzKVxuICAgICAgICAgOyBbIFslcGF0PyBgTGlzdCAoYExpc3QgXyA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gYExpc3QgW10gYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgX3RwX2xvYyB5b2pzb25dXG4gICAgICAgICAgIF1cbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgKCogRW1wdHkgdHlwZSAqKVxuICBsZXQgbmlsX29mX3lvanNvbiBsb2MgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgRnVuXG4gICAgICBbJWV4cHJcbiAgICAgICAgZnVuIHlvanNvbiAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X3R5cGUgX3RwX2xvYyB5b2pzb25dXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcblxuICBsZXQgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2M6XyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBmdWxsX3R5cGUgPVxuICAgICAgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfD4gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXNcbiAgICBpblxuICAgIGxldCBpc19wcml2YXRlID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgfCBQcml2YXRlIC0+IHRydWVcbiAgICAgIHwgUHVibGljIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBpc19wcml2YXRlXG4gICAgdGhlbiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm9mX3lvanNvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwcml2YXRlIHR5cGVcIjtcbiAgICBsZXQgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uID1cbiAgICAgIG1hdGNoIGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186ZmFsc2Ugd2l0aFxuICAgICAgfCBgRGVmaW5pdGVseSAtPiB0cnVlXG4gICAgICB8IGBNYXliZSAtPiBwb2x5XG4gICAgICB8IGBTdXJlbHlfbm90IC0+XG4gICAgICAgIGlmIHBvbHlcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgXCJ5b2pzb25fcG9seSBhbm5vdGF0aW9uIG9uIGEgdHlwZSB0aGF0IGlzIHN1cmVseSBub3QgYSBwb2x5bW9ycGhpYyB2YXJpYW50XCI7XG4gICAgICAgIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgYm9keSA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYWx0cyAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nICh0ZC5wdHlwZV9sb2MsIGFsdHMpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxibHMgLT5cbiAgICAgICAgICByZWNvcmRfb2ZfeW9qc29uXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpcbiAgICAgICAgICAgICAgKE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLmFsbG93X2V4dHJhX2ZpZWxkc190ZCB0ZCkpXG4gICAgICAgICAgICAobG9jLCBsYmxzKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogb3BlbiB0eXBlcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbmlsX29mX3lvanNvbiB0ZC5wdHlwZV9sb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgICAgICAgdHlwZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgIH5mdWxsX3R5cGVcbiAgICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgICB+aW50ZXJuYWw6Y3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgICAgICAgICB0eSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICgqIFByZXZlbnQgdmlvbGF0aW9uIG9mIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCBwcm9ibGVtcyB3aXRoXG4gICAgICAgICByZWN1cnNpdmUgdHlwZXMgYnkgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB0IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIFslZXhwciB0XSBdXV1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9uYW1lID0gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uXCIgaW5cbiAgICBsZXQgaW50ZXJuYWxfbmFtZSA9IFwiX19cIiBeIHR5cGVfbmFtZSBeIFwiX29mX3lvanNvbl9fXCIgaW5cbiAgICBsZXQgYXJnX3BhdHRzLCBhcmdfZXhwcnMgPVxuICAgICAgTGlzdC51bnppcFxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgfmY6KGZ1biB0cCAtPlxuICAgICAgICAgICAgIGxldCBuYW1lID0gXCJfb2ZfXCIgXiB0cC50eHQgaW5cbiAgICAgICAgICAgICBwdmFyIH5sb2MgbmFtZSwgZXZhciB+bG9jIG5hbWUpXG4gICAgICAgICAgIHRwcylcbiAgICBpblxuICAgIGxldCBiaW5kX3RwX2xvY19pbiA9XG4gICAgICBsZXQgZnVsbF90eXBlX25hbWUgPSBQcmludGYuc3ByaW50ZiBcIiVzLiVzXCIgcGF0aCB0eXBlX25hbWUgaW5cbiAgICAgIGZ1biBlIC0+XG4gICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT5cbiAgICAgICAgICAoKiB3ZSBkZWZpbml0ZWx5IGRvbid0IHVzZSB0aGUgc3RyaW5nLCBzbyBjbGVhbiB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUgYSBiaXQgKilcbiAgICAgICAgICBlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICAgICAgWyVlIGVdXVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgdGhlblxuICAgICAgICBTb21lXG4gICAgICAgICAgKGJpbmRfdHBfbG9jX2luXG4gICAgICAgICAgICAgKGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyB+cmVjX2ZsYWcgKGVhYnN0cmFjdCB+bG9jIGFyZ19wYXR0cyBib2R5KSkpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9mdW5fYm9keSA9XG4gICAgICBsZXQgbmVlZF90cF9sb2MsIGJvZHlfYmVsb3dfbGFtYmRhcyA9XG4gICAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbm9fdmFyaWFudF9tYXRjaF9tYyA9XG4gICAgICAgICAgICBbIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2hdXG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBpbnRlcm5hbF9jYWxsID1cbiAgICAgICAgICAgIGxldCBpbnRlcm5hbF9leHByID0gZXZhciB+bG9jIGludGVybmFsX25hbWUgaW5cbiAgICAgICAgICAgIGVhcHBseSB+bG9jIGludGVybmFsX2V4cHIgKGFyZ19leHBycyBAIFsgWyVleHByIHlvanNvbl0gXSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cnlfd2l0aCA9IHBleHBfdHJ5IH5sb2MgaW50ZXJuYWxfY2FsbCBub192YXJpYW50X21hdGNoX21jIGluXG4gICAgICAgICAgZmFsc2UsIGJpbmRfdHBfbG9jX2luIFslZXhwciBmdW4geW9qc29uIC0+IFslZSB0cnlfd2l0aF1dKVxuICAgICAgICBlbHNlIHRydWUsIGJvZHlcbiAgICAgIGluXG4gICAgICBsZXQgYm9keV93aXRoX2xhbWJkYXMgPVxuICAgICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbiAgICAgICAgICB+cmVjX2ZsYWdcbiAgICAgICAgICAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHlfYmVsb3dfbGFtYmRhcylcbiAgICAgIGluXG4gICAgICBpZiBuZWVkX3RwX2xvYyB0aGVuIGJpbmRfdHBfbG9jX2luIGJvZHlfd2l0aF9sYW1iZGFzIGVsc2UgYm9keV93aXRoX2xhbWJkYXNcbiAgICBpblxuICAgIGxldCBta19iaW5kaW5nIGZ1bmNfbmFtZSBib2R5ID1cbiAgICAgIGxldCB0eXAgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3R5cGUgdGQgaW5cbiAgICAgIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2JpbmRpbmdzID1cbiAgICAgIG1hdGNoIGludGVybmFsX2Z1bl9ib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIGJvZHkgLT4gWyBta19iaW5kaW5nIGludGVybmFsX25hbWUgYm9keSBdXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfYmluZGluZyA9IG1rX2JpbmRpbmcgZXh0ZXJuYWxfbmFtZSBleHRlcm5hbF9mdW5fYm9keSBpblxuICAgIGludGVybmFsX2JpbmRpbmdzLCBbIGV4dGVybmFsX2JpbmRpbmcgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG4gIGxldCB0ZHNfb2ZfeW9qc29uIH5sb2MgfnBvbHkgfnBhdGggKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgdHlwZXZhcl9oYW5kbGluZyA9IGBvayBpblxuICAgIGxldCBzaW5nbGV0b24gPVxuICAgICAgbWF0Y2ggdGRzIHdpdGhcbiAgICAgIHwgWyBfIF0gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBzaW5nbGV0b25cbiAgICB0aGVuIChcbiAgICAgIGxldCByZWNfZmxhZyA9IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGluXG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IFJlY3Vyc2l2ZSAtPlxuICAgICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgICBpblxuICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBSZWN1cnNpdmUgYmluZGluZ3NcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBpbnRlcm5hbHNcbiAgICAgICAgICBAIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBleHRlcm5hbHMpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cG9seSB+bG9jIH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgaW5cbiAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzKVxuICA7O1xuXG4gIGxldCB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cGF0aCBjdHlwID1cbiAgICBsZXQgbG9jID0geyBjdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IGZwID0gdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgY3R5cCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIG1hdGNoIGZwIHdpdGhcbiAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBbJWUgZnVuX2V4cHJdIHlvanNvbl1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9XG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzIGxpbmUgJWk6ICVzXCJcbiAgICAgICAgcGF0aFxuICAgICAgICBsb2MubG9jX3N0YXJ0LnBvc19sbnVtXG4gICAgICAgIChzdHJpbmdfb2ZfY29yZV90eXBlIGN0eXApXG4gICAgaW5cbiAgICBbJWV4cHJcbiAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICBbJWUgYm9keV1dXG4gIDs7XG5lbmRcblxubW9kdWxlIFlvanNvbl9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YudHlwZV9vZl95b2pzb25fb2YgfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSB0eSA9XG4gICAgU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgdHlcbiAgICB8PiBGdW5fb3JfbWF0Y2guZXhwciB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdGRzXG5lbmRcblxubW9kdWxlIFlvanNvbl9maWVsZHMgPSBzdHJ1Y3RcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX2ZpZWxkcy55b2pzb25fZmllbGRzX29mX3Rkc1xuZW5kXG5cbm1vZHVsZSBPZl95b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uIHR5ID1cbiAgICBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLnR5cGVfb2Zfb2ZfeW9qc29uIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB0eVxuICA7O1xuXG4gIGxldCBjb3JlX3R5cGUgPVxuICAgIFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmc6YGRpc2FsbG93ZWRfaW5fdHlwZV9leHByXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZ1xuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udGRzX29mX3lvanNvblxuZW5kXG5cbm1vZHVsZSBTaWdfeW9qc29uID0gc3RydWN0XG4gIGxldCBta19zaWcgfmxvYyB+cGF0aCBkZWNscyA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICAgIEAgU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta19zaWcgfnBvbHk6ZmFsc2UgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsIH5sb2MgfnBhdGggKChfcmYsIHRkcykgYXMgZGVjbHMpID1cbiAgICBtYXRjaFxuICAgICAgbWtfbmFtZWRfc2lnXG4gICAgICAgIH5sb2NcbiAgICAgICAgfnNnX25hbWU6XCJQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbmFibGUuU1wiXG4gICAgICAgIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudDpmYWxzZVxuICAgICAgICB0ZHNcbiAgICB3aXRoXG4gICAgfCBTb21lIGluY2x1ZGVfaW5mb3MgLT4gWyBwc2lnX2luY2x1ZGUgfmxvYyBpbmNsdWRlX2luZm9zIF1cbiAgICB8IE5vbmUgLT4gbWtfc2lnIH5sb2MgfnBhdGggZGVjbHNcbiAgOztcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNvb19ydW50aW1lLlJ1bnRpbWVfdmVyc2lvbiAqKVxubW9kdWxlIFJ1bnRpbWVfdmVyc2lvbiA9IEpzb29fcnVudGltZV9fUnVudGltZV92ZXJzaW9uXG5cbm1vZHVsZSBKc29vX3J1bnRpbWVfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwibW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwgZWZmZWN0cyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcIlxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFzU2NyaXB0IGVycm9yIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbi4gIGlmIFtmb3JjZSA9IGZhbHNlXSBhbmQgYVxuICAgIEphdmFzU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YXNTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHN0cmFjZSwgZXNwZWNpYWxseSB3aGVuIHNvdXJjZW1hcCBpcyBlbmFibGVkLiAqKVxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuICAoKiogVGhlIFtFcnJvcl0gZXhjZXB0aW9uIHdyYXAgamF2YXNjcmlwdCBleGNlcHRpb25zIHdoZW4gY2F1Z2h0IGJ5IE9DYW1sIGNvZGUuXG4gICAgICBJbiBjYXNlIHRoZSBqYXZhc2NyaXB0IGV4Y2VwdGlvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgamF2YXNjcmlwdCBbRXJyb3JdLFxuICAgICAgaXQgd2lsbCBiZSBzZXJpYWxpemVkIGFuZCB3cmFwcGVkIGludG8gYSBbRmFpbHVyZV0gZXhjZXB0aW9uLlxuICAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuXG4gIGxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwianNFcnJvclwiIChFeG4gKE9iai5tYWdpYyBbfHxdKSlcblxuICBsZXQgcmFpc2VfIDogdCAtPiAnYSA9IEpzLmpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb250IHdhbnQgdGhlIG9jYW1sIGNvbXBpbGVyXG4gICAgIHRvIGNvbXBsYWluIGFib3V0IHRoZXNlcyBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkNTUyAqKVxubW9kdWxlIENTUyA9IEpzX29mX29jYW1sX19DU1NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tICopXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWxfX0RvbVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fZXZlbnRzICopXG5tb2R1bGUgRG9tX2V2ZW50cyA9IEpzX29mX29jYW1sX19Eb21fZXZlbnRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9odG1sICopXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbF9fRG9tX2h0bWxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX3N2ZyAqKVxubW9kdWxlIERvbV9zdmcgPSBKc19vZl9vY2FtbF9fRG9tX3N2Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5FdmVudFNvdXJjZSAqKVxubW9kdWxlIEV2ZW50U291cmNlID0gSnNfb2Zfb2NhbWxfX0V2ZW50U291cmNlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpbGUgKilcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWxfX0ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlyZWJ1ZyAqKVxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbF9fRmlyZWJ1Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Gb3JtICopXG5tb2R1bGUgRm9ybSA9IEpzX29mX29jYW1sX19Gb3JtXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkdlb2xvY2F0aW9uICopXG5tb2R1bGUgR2VvbG9jYXRpb24gPSBKc19vZl9vY2FtbF9fR2VvbG9jYXRpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRlcnNlY3Rpb25PYnNlcnZlciAqKVxubW9kdWxlIEludGVyc2VjdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGwgKilcbm1vZHVsZSBJbnRsID0gSnNfb2Zfb2NhbWxfX0ludGxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnMgKilcbm1vZHVsZSBKcyA9IEpzX29mX29jYW1sX19Kc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc29uICopXG5tb2R1bGUgSnNvbiA9IEpzX29mX29jYW1sX19Kc29uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzdGFibGUgKilcbm1vZHVsZSBKc3RhYmxlID0gSnNfb2Zfb2NhbWxfX0pzdGFibGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTGliX3ZlcnNpb24gKilcbm1vZHVsZSBMaWJfdmVyc2lvbiA9IEpzX29mX29jYW1sX19MaWJfdmVyc2lvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5NdXRhdGlvbk9ic2VydmVyICopXG5tb2R1bGUgTXV0YXRpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19NdXRhdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlBlcmZvcm1hbmNlT2JzZXJ2ZXIgKilcbm1vZHVsZSBQZXJmb3JtYW5jZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVnZXhwICopXG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWxfX1JlZ2V4cFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZXNpemVPYnNlcnZlciAqKVxubW9kdWxlIFJlc2l6ZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1Jlc2l6ZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlN5c19qcyAqKVxubW9kdWxlIFN5c19qcyA9IEpzX29mX29jYW1sX19TeXNfanNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXkgKilcbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sX19UeXBlZF9hcnJheVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5VcmwgKilcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbF9fVXJsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYkdMICopXG5tb2R1bGUgV2ViR0wgPSBKc19vZl9vY2FtbF9fV2ViR0xcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViU29ja2V0cyAqKVxubW9kdWxlIFdlYlNvY2tldHMgPSBKc19vZl9vY2FtbF9fV2ViU29ja2V0c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Xb3JrZXIgKilcbm1vZHVsZSBXb3JrZXIgPSBKc19vZl9vY2FtbF9fV29ya2VyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0ICopXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9fWG1sSHR0cFJlcXVlc3RcblxubW9kdWxlIEpzX29mX29jYW1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVGhpcyBsb2NhbCBtb2R1bGUgW0pzXSBpcyBuZWVkZWQgc28gdGhhdCB0aGUgcHB4X2pzIGV4dGVuc2lvbiB3b3JrIHdpdGhpbiB0aGF0IGZpbGUuICopXG5tb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuXG4gIHR5cGUgKC0nYSwgKydiKSBtZXRoX2NhbGxiYWNrXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIHR5cGUgdG9wXG5cbiAgICB0eXBlIGFueSA9IHRvcCB0XG5cbiAgICB0eXBlIGFueV9qc19hcnJheSA9IGFueVxuXG4gICAgZXh0ZXJuYWwgaW5qZWN0IDogJ2EgLT4gYW55ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgY29lcmNlIDogXyB0IC0+IF8gdCA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGdldCA6ICdhIC0+ICdiIC0+ICdjID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXQgOiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgICBleHRlcm5hbCBkZWxldGUgOiAnYSAtPiAnYiAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsIDogJ2EgLT4gJ2IgLT4gYW55IGFycmF5IC0+ICdjID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgZnVuX2NhbGwgOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogJ2EgLT4gc3RyaW5nIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29iaiA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19uZXdcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiAnYSAtPiBhbnlfanNfYXJyYXkgLT4gJ2IgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gICAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIGFueSkgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICAgIGV4dGVybmFsIGVxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgICBsZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKGFueV9qc19hcnJheSAtPiAnYikgLT4gKCdjLCBhbnlfanNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoJ2IgLT4gYW55X2pzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIGFueV9qc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICAoKiBERVBSRUNBVEVEICopXG4gICAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBvcHQgPSAnYVxuXG4gIHR5cGUgJ2Egb3B0ZGVmID0gJ2FcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGxldCBudWxsIDogJ2Egb3B0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSBvcHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IHVuZGVmaW5lZCA6ICdhIG9wdGRlZiA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIG9wdGRlZiA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgdHlwZSBPUFQgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlbXB0eSA6ICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcblxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICAgdmFsIHRlc3QgOiAnYSB0IC0+IGJvb2xcblxuICAgIHZhbCBpdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGNhc2UgOiAnYSB0IC0+ICh1bml0IC0+ICdiKSAtPiAoJ2EgLT4gJ2IpIC0+ICdiXG5cbiAgICB2YWwgZ2V0IDogJ2EgdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FcblxuICAgIHZhbCBvcHRpb24gOiAnYSBvcHRpb24gLT4gJ2EgdFxuXG4gICAgdmFsIHRvX29wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHQgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRcblxuICAgIGxldCBlbXB0eSA9IG51bGxcblxuICAgIGxldCByZXR1cm4gPSBzb21lXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoZXF1YWxzIHggbnVsbClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoZXF1YWxzIHggbnVsbCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICBtb2R1bGUgT3B0ZGVmIDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmXG5cbiAgICBsZXQgZW1wdHkgPSB1bmRlZmluZWRcblxuICAgIGxldCByZXR1cm4gPSBkZWZcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICAoKioqKilcblxuICBsZXQgY29lcmNlIHggZiBnID0gT3B0LmdldCAoZiB4KSAoZnVuICgpIC0+IGcgeClcblxuICBsZXQgY29lcmNlX29wdCB4IGYgZyA9IE9wdC5nZXQgKE9wdC5iaW5kIHggZikgKGZ1biAoKSAtPiBnIHgpXG5cbiAgKCoqKiopXG5cbiAgdHlwZSArJ2EgbWV0aFxuXG4gIHR5cGUgKydhIGdlbl9wcm9wXG5cbiAgdHlwZSAnYSByZWFkb25seV9wcm9wID0gPCBnZXQgOiAnYSA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSB3cml0ZW9ubHlfcHJvcCA9IDwgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBwcm9wID0gPCBnZXQgOiAnYSA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egb3B0ZGVmX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgKydhIGNvbnN0clxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAodW5pdCwgJ2EpIG1ldGhfY2FsbGJhY2tcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICAoKioqKilcblxuICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICgqKioqKVxuXG4gIGxldCBfdHJ1ZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0cnVlXCJcblxuICBsZXQgX2ZhbHNlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcImZhbHNlXCJcblxuICB0eXBlIG1hdGNoX3Jlc3VsdF9oYW5kbGVcblxuICB0eXBlIHN0cmluZ19hcnJheVxuXG4gIHR5cGUgbnVtYmVyX3QgPSBmbG9hdFxuXG4gIGNsYXNzIHR5cGUgbnVtYmVyID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nX3JhZGl4IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0ZpeGVkIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWxfZGlnaXRzIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1ByZWNpc2lvbiA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIGVuZFxuXG4gIGFuZCBqc19zdHJpbmcgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdmFsdWVPZiA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQXQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJDb2RlQXQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgKCogVGhpcyBtYXkgcmV0dXJuIE5hTi4uLiAqKVxuICAgIG1ldGhvZCBjb25jYXQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzQgOlxuICAgICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbG9jYWxlQ29tcGFyZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICAgIG1ldGhvZCBfbWF0Y2ggOiByZWdFeHAgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemUgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplX2Zvcm0gOiBub3JtYWxpemF0aW9uIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2UgOiByZWdFeHAgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZV9zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2VhcmNoIDogcmVnRXhwIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXQgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfbGltaXRlZCA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwIDogcmVnRXhwIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cExpbWl0ZWQgOiByZWdFeHAgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZyA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZ190b0VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVMb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9VcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVVcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdHJpbSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBhbmQgcmVnRXhwID0gb2JqZWN0XG4gICAgbWV0aG9kIGV4ZWMgOiBqc19zdHJpbmcgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCB0ZXN0IDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzb3VyY2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZ2xvYmFsIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVDYXNlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtdWx0aWxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleCA6IGludCBwcm9wXG4gIGVuZFxuXG4gIGFuZCBub3JtYWxpemF0aW9uID0ganNfc3RyaW5nXG5cbiAgKCogc3RyaW5nIGlzIHVzZWQgYnkgcHB4X2pzLCBpdCBuZWVkcyB0byBjb21lIGJlZm9yZSBhbnkgdXNlIG9mIHRoZVxuICAgICBuZXcgc3ludGF4IGluIHRoaXMgZmlsZSAqKVxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBsZXQgbmZjID0gc3RyaW5nIFwiTkZDXCJcblxuICBsZXQgbmZkID0gc3RyaW5nIFwiTkZEXCJcblxuICBsZXQgbmZrYyA9IHN0cmluZyBcIk5GS0NcIlxuXG4gIGxldCBuZmtkID0gc3RyaW5nIFwiTkZLRFwiXG5lbmRcblxuaW5jbHVkZSBKc1xuXG5jbGFzcyB0eXBlIHN0cmluZ19jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIGZyb21DaGFyQ29kZSA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IHN0cmluZ19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX1N0cmluZ1xuXG5sZXQgcmVnRXhwID0gVW5zYWZlLmdsb2JhbCMjLl9SZWdFeHBcblxubGV0IHJlZ0V4cF9jb3B5ID0gcmVnRXhwXG5cbmxldCByZWdFeHBfd2l0aEZsYWdzID0gcmVnRXhwXG5cbmNsYXNzIHR5cGUgWydhXSBqc19hcnJheSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25jYXQgOiAnYSBqc19hcnJheSB0IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBqb2luIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBwb3AgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcmV2ZXJzZSA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzaGlmdCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0IDogKCdhIC0+ICdhIC0+IG51bWJlcl90KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydF9hc1N0cmluZ3MgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzEgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMiA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8zIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzQgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0IDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc29tZSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGV2ZXJ5IDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9yRWFjaCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWFwIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZmlsdGVyIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZV9pbml0IDogKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZSA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodF9pbml0IDpcbiAgICAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHQgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcbmVuZFxuXG5sZXQgb2JqZWN0X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IG9iamVjdF9rZXlzIG8gOiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gb2JqZWN0X2NvbnN0cnVjdG9yIyNrZXlzIG9cblxubGV0IGFycmF5X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9BcnJheVxuXG5sZXQgYXJyYXlfZW1wdHkgPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfbGVuZ3RoID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2dldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBVbnNhZmUuZ2V0XG5cbmxldCBhcnJheV9zZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFVuc2FmZS5zZXRcblxubGV0IGFycmF5X21hcF9wb2x5IDpcbiAgICAnYSAjanNfYXJyYXkgdCAtPiAoJ2EgLT4gaW50IC0+ICdhICNqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAjanNfYXJyYXkgdCA9XG4gZnVuIGEgY2IgLT4gKFVuc2FmZS5jb2VyY2UgYSkjI21hcCBjYlxuXG5sZXQgYXJyYXlfbWFwIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IF9pZHggXyAtPiBmIHgpKVxuXG5sZXQgYXJyYXlfbWFwaSBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBpZHggXyAtPiBmIGlkeCB4KSlcblxuY2xhc3MgdHlwZSBtYXRjaF9yZXN1bHQgPSBvYmplY3RcbiAgaW5oZXJpdCBbanNfc3RyaW5nIHRdIGpzX2FycmF5XG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5wdXQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHN0cl9hcnJheSA6IHN0cmluZ19hcnJheSB0IC0+IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBVbnNhZmUuY29lcmNlXG5cbmxldCBtYXRjaF9yZXN1bHQgOiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgLT4gbWF0Y2hfcmVzdWx0IHQgPSBVbnNhZmUuY29lcmNlXG5cbmNsYXNzIHR5cGUgZGF0ZSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9UaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVEYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVRpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHZhbHVlT2YgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZ1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0hvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDU2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWV6b25lT2Zmc2V0IDogaW50IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZSA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEhvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDSG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdG9VVENTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSVNPU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0pTT04gOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkYXRlX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbW9udGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19kYXkgOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19ob3VyIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19taW4gOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19zZWMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbXMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBub3cgOiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IGRhdGVfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9EYXRlXG5cbmxldCBkYXRlIDogZGF0ZV9jb25zdHIgdCA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX25vdyA6IGRhdGUgdCBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9mcm9tVGltZVZhbHVlIDogKG51bWJlcl90IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbW9udGggOiAoaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2RheSA6IChpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2hvdXIgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbWluIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9zZWMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tcyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPVxuICBkYXRlX2NvbnN0clxuXG5jbGFzcyB0eXBlIG1hdGggPSBvYmplY3RcbiAgbWV0aG9kIF9FIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4yIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4xMCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzJFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMTBFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMV8yXyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQyIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjZWlsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGV4cCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZmxvb3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGxvZyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBwb3cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJhbmRvbSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgcm91bmQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc3FydCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBtYXRoID0gVW5zYWZlLmdsb2JhbCMjLl9NYXRoXG5cbmNsYXNzIHR5cGUgZXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YWNrIDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGVycm9yX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRXJyb3JcblxubW9kdWxlIEpzX2Vycm9yID0gc3RydWN0XG4gIHR5cGUgZXJyb3JfdCA9IGVycm9yIHRcblxuICBpbmNsdWRlIEpzb29fcnVudGltZS5FcnJvclxuXG4gIGV4dGVybmFsIG9mX2Vycm9yIDogZXJyb3JfdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGV4dGVybmFsIHRvX2Vycm9yIDogdCAtPiBlcnJvcl90ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBuYW1lIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubmFtZVxuXG4gIGxldCBtZXNzYWdlIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubWVzc2FnZVxuXG4gIGxldCBzdGFjayAoZSA6IHQpIDogc3RyaW5nIG9wdGlvbiA9XG4gICAgT3B0LnRvX29wdGlvbiAoT3B0Lm1hcCAodG9fZXJyb3IgZSkjIy5zdGFjayB0b19zdHJpbmcpXG5cbiAgbGV0IHRvX3N0cmluZyBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjdG9TdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFnaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIGV4Y2VwdGlvbiBFcnJvciBvZiBlcnJvciB0XG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnYikgZXEgPSBFcSA6ICgnYSwgJ2EpIGVxXG5cbiAgbGV0IChlcSA6IChlcnJvciB0LCBKc19lcnJvci50KSBlcSkgPSBPYmoubWFnaWMgRXFcblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggZXEgd2l0aFxuICAgIHwgRXEgLT5cbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICBleGNlcHRpb24gRXJyb3IgPSBKc19lcnJvci5FeG5cbiAgICAgICAgZW5kIDogVClcblxuICBtb2R1bGUgRXJyb3IgPSAodmFsIG0gOiBUKVxuZW5kXG5cbmluY2x1ZGUgTWFnaWMuRXJyb3JcblxubGV0IHJhaXNlX2pzX2Vycm9yIGUgPSBKc19lcnJvci5yYWlzZV8gKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgZSA9IEpzX2Vycm9yLnRvX3N0cmluZyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IGV4bl93aXRoX2pzX2JhY2t0cmFjZSA9IEpzX2Vycm9yLmF0dGFjaF9qc19iYWNrdHJhY2VcblxuZXh0ZXJuYWwganNfZXJyb3Jfb2ZfZXhuIDogZXhuIC0+IGVycm9yIHQgb3B0ID0gXCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblwiXG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgX0pTT04gOiBqc29uIHQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGRlY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBkZWNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgdW5lc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMudW5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmV4dGVybmFsIGJvb2wgOiBib29sIC0+IGJvb2wgdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCB0b19ib29sIDogYm9vbCB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbmV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gJ2EganNfYXJyYXkgdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fYXJyYXkgOiAnYSBqc19hcnJheSB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG5leHRlcm5hbCBmbG9hdCA6IGZsb2F0IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCB0b19mbG9hdCA6IG51bWJlcl90IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gbnVtYmVyIHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IG51bWJlciB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgaW50MzIgOiBpbnQzMiAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBudW1iZXJfdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbmV4dGVybmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IG51bWJlcl90IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0eXBlb2YgOiBfIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IF8gdCAtPiBfIGNvbnN0ciAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG5sZXQgaXNOYU4gKGkgOiAnYSkgOiBib29sID1cbiAgdG9fYm9vbCAoVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5pc05hTiBbfCBVbnNhZmUuaW5qZWN0IGkgfF0pXG5cbmxldCBwYXJzZUludCAocyA6IGpzX3N0cmluZyB0KSA6IGludCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUludCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VJbnRcIiBlbHNlIHNcblxubGV0IHBhcnNlRmxvYXQgKHMgOiBqc19zdHJpbmcgdCkgOiBudW1iZXJfdCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUZsb2F0IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUZsb2F0XCIgZWxzZSBzXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgSnNfZXJyb3IuRXhuIGUgLT4gU29tZSAoSnNfZXJyb3IudG9fc3RyaW5nIGUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZSAtPlxuICAgICAgbGV0IGUgOiA8IC4uID4gdCA9IE9iai5tYWdpYyBlIGluXG4gICAgICBpZiBpbnN0YW5jZW9mIGUgYXJyYXlfY29uc3RydWN0b3IgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fc3RyaW5nIGUjI3RvU3RyaW5nKSlcblxubGV0IGV4cG9ydF9qcyAoZmllbGQgOiBqc19zdHJpbmcgdCkgeCA9XG4gIFVuc2FmZS5zZXRcbiAgICAoVW5zYWZlLnB1cmVfanNfZXhwciBcImpzb29fZXhwb3J0c1wiKVxuICAgIGZpZWxkXG4gICAgKGlmIFN0cmluZy5lcXVhbCAoSnMudG9fc3RyaW5nICh0eXBlb2YgKE9iai5tYWdpYyB4KSkpIFwiZnVuY3Rpb25cIlxuICAgICAgICAoKiBmdW5jdGlvbiB3aXRoIGFyaXR5L2xlbmd0aCBlcXVhbCB0byB6ZXJvIGFyZSBhbHJlYWR5IHdyYXBwZWQgKilcbiAgICAgICAgJiYgVW5zYWZlLmdldCAoT2JqLm1hZ2ljIHgpIChKcy5zdHJpbmcgXCJsZW5ndGhcIikgPiAwXG4gICAgIHRoZW4gT2JqLm1hZ2ljICh3cmFwX2NhbGxiYWNrIChPYmoubWFnaWMgeCkpXG4gICAgIGVsc2UgeClcblxubGV0IGV4cG9ydCBmaWVsZCB4ID0gZXhwb3J0X2pzIChzdHJpbmcgZmllbGQpIHhcblxubGV0IGV4cG9ydF9hbGwgb2JqID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvYmogaW5cbiAga2V5cyMjZm9yRWFjaFxuICAgICh3cmFwX2NhbGxiYWNrIChmdW4gKGtleSA6IGpzX3N0cmluZyB0KSBfIF8gLT4gZXhwb3J0X2pzIGtleSAoVW5zYWZlLmdldCBvYmoga2V5KSkpXG5cbigqKioqKVxuXG4oKiBERVBSRUNBVEVEICopXG5cbnR5cGUgZmxvYXRfcHJvcCA9IG51bWJlcl90IHByb3BcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIG5vZGVMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbGlzdF9vZl9ub2RlTGlzdCAobm9kZUxpc3QgOiAnYSBub2RlTGlzdCB0KSA9XG4gIGxldCBsZW5ndGggPSBub2RlTGlzdCMjLmxlbmd0aCBpblxuICBsZXQgcmVjIGFkZF9pdGVtIGFjYyBpID1cbiAgICBpZiBpIDwgbGVuZ3RoXG4gICAgdGhlblxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobm9kZUxpc3QjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFkZF9pdGVtIGFjYyAoaSArIDEpXG4gICAgICB8IFNvbWUgZSAtPiBhZGRfaXRlbSAoZSA6OiBhY2MpIChpICsgMSlcbiAgICBlbHNlIExpc3QucmV2IGFjY1xuICBpblxuICBhZGRfaXRlbSBbXSAwXG5cbnR5cGUgbm9kZVR5cGUgPVxuICB8IE9USEVSXG4gICgqIFdpbGwgbm90IGhhcHBlbiAqKVxuICB8IEVMRU1FTlRcbiAgfCBBVFRSSUJVVEVcbiAgfCBURVhUXG4gIHwgQ0RBVEFfU0VDVElPTlxuICB8IEVOVElUWV9SRUZFUkVOQ0VcbiAgfCBFTlRJVFlcbiAgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OXG4gIHwgQ09NTUVOVFxuICB8IERPQ1VNRU5UXG4gIHwgRE9DVU1FTlRfVFlQRVxuICB8IERPQ1VNRU5UX0ZSQUdNRU5UXG4gIHwgTk9UQVRJT05cblxubW9kdWxlIERvY3VtZW50UG9zaXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgdHlwZSBtYXNrID0gaW50XG5cbiAgbGV0IGRpc2Nvbm5lY3RlZCA9IDB4MDFcblxuICBsZXQgcHJlY2VkaW5nID0gMHgwMlxuXG4gIGxldCBmb2xsb3dpbmcgPSAweDA0XG5cbiAgbGV0IGNvbnRhaW5zID0gMHgwOFxuXG4gIGxldCBjb250YWluZWRfYnkgPSAweDEwXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uX3NwZWNpZmljID0gMHgyMFxuXG4gIGxldCBoYXMgdCBtYXNrID0gdCBsYW5kIG1hc2sgPSBtYXNrXG5cbiAgbGV0IGFkZCB4IHkgPSB4IGxvciB5XG5cbiAgbGV0ICggKyApID0gYWRkXG5lbmRcblxuY2xhc3MgdHlwZSBub2RlID0gb2JqZWN0XG4gIG1ldGhvZCBub2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVR5cGUgOiBub2RlVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IG5vZGUgbm9kZUxpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRCZWZvcmUgOiBub2RlIHQgLT4gbm9kZSB0IG9wdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZENoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0NoaWxkTm9kZXMgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZU5vZGUgOiBib29sIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgY29tcGFyZURvY3VtZW50UG9zaXRpb24gOiBub2RlIHQgLT4gRG9jdW1lbnRQb3NpdGlvbi50IG1ldGhcblxuICBtZXRob2QgbG9va3VwTmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbG9va3VwUHJlZml4IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgYXBwZW5kQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNhcHBlbmRDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVtb3ZlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNyZW1vdmVDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVwbGFjZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQpID1cbiAgaWdub3JlIChwIyNyZXBsYWNlQ2hpbGQgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQpKVxuXG5sZXQgaW5zZXJ0QmVmb3JlIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQgb3B0KSA9XG4gIGlnbm9yZSAocCMjaW5zZXJ0QmVmb3JlIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0IG9wdCkpXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtBdHRyXSBvYmplY3RzLiAqKVxuY2xhc3MgdHlwZSBhdHRyID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVjaWZpZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJFbGVtZW50IDogZWxlbWVudCB0IHByb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbTmFtZWROb2RlTWFwXSBvYmplY3RzLiAqKVxuYW5kIFsnbm9kZV0gbmFtZWROb2RlTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBnZXROYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldE5hbWVkSXRlbSA6ICdub2RlIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVOYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtFbGVtZW50XSBvYmplY3RzLiAqKVxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIHRhZ05hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZU5TIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyIG5hbWVkTm9kZU1hcCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGNoYXJhY3RlckRhdGEgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YmpzX3N0cmluZ0RhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnREYXRhIDogaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVEYXRhIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZURhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgY29tbWVudCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSB0ZXh0ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIGRvY3VtZW50RnJhZ21lbnQgPSBub2RlXG5cbmNsYXNzIHR5cGUgWydlbGVtZW50XSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogJ2VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQgOiBkb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50IDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnROUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0Tm9kZSA6IGpzX3N0cmluZyB0IC0+IHRleHQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNvbW1lbnQgOiBqc19zdHJpbmcgdCAtPiBjb21tZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgaW1wb3J0Tm9kZSA6IGVsZW1lbnQgdCAtPiBib29sIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGFkb3B0Tm9kZSA6IGVsZW1lbnQgdCAtPiAnZWxlbWVudCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vZGVfdHlwZSA9XG4gIHwgRWxlbWVudCBvZiBlbGVtZW50IHRcbiAgfCBBdHRyIG9mIGF0dHIgdFxuICB8IFRleHQgb2YgdGV4dCB0XG4gIHwgT3RoZXIgb2Ygbm9kZSB0XG5cbmxldCBub2RlVHlwZSBlID1cbiAgbWF0Y2ggZSMjLm5vZGVUeXBlIHdpdGhcbiAgfCBFTEVNRU5UIC0+IEVsZW1lbnQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBBVFRSSUJVVEUgLT4gQXR0ciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IENEQVRBX1NFQ1RJT04gfCBURVhUIC0+IFRleHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBfIC0+IE90aGVyIChlIDo+IG5vZGUgdClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBjYXN0IChlIDogI25vZGUgSnMudCkgdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IHQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBlbGVtZW50IGUgOiBlbGVtZW50IEpzLnQgSnMub3B0ID0gY2FzdCBlIEVMRU1FTlRcblxuICBsZXQgdGV4dCBlIDogdGV4dCBKcy50IEpzLm9wdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IFRFWFQgfHwgZSMjLm5vZGVUeXBlID09IENEQVRBX1NFQ1RJT05cbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXR0ciBlIDogYXR0ciBKcy50IEpzLm9wdCA9IGNhc3QgZSBBVFRSSUJVVEVcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYiAtPiBib29sIHQpIG1ldGhfY2FsbGJhY2sgb3B0XG4oKiogVGhlIHR5cGUgb2YgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zLiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyXG4gICAgICBbJ2FdIGlzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQgb2JqZWN0OyB0aGUgc2Vjb25kIHBhcmFtZXRlclxuICAgICAgWydiXSBpcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgb2JqZWN0LiAqKVxuXG5jbGFzcyB0eXBlIFsnYV0gZXZlbnQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUYXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgKCogTGVnYWN5IG1ldGhvZHMgKilcbiAgbWV0aG9kIHNyY0VsZW1lbnQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogJ2IgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gSnMubnVsbFxuXG5sZXQgd2luZG93X2V2ZW50ICgpIDogJ2EgI2V2ZW50IHQgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiZXZlbnRcIlxuXG4oKiBUaGUgZnVuY3Rpb24gcHJldmVudERlZmF1bHQgbXVzdCBiZSBjYWxsZWQgZXhwbGljaXRseSB3aGVuXG4gICB1c2luZyBhZGRFdmVudExpc3RlbmVyLi4uICopXG5sZXQgaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUuY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkLiAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgZnVsbF9oYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5tZXRoX2NhbGxiYWNrIChmdW4gdGhpcyBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgaW52b2tlX2hhbmRsZXIgKGYgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lcikgKHRoaXMgOiAnYSkgKGV2ZW50IDogJ2IpIDogYm9vbCB0ID1cbiAgSnMuVW5zYWZlLmNhbGwgZiB0aGlzIFt8IEpzLlVuc2FmZS5pbmplY3QgZXZlbnQgfF1cblxubGV0IGV2ZW50VGFyZ2V0IChlIDogKDwgLi4gPiBhcyAnYSkgI2V2ZW50IHQpIDogJ2EgdCA9XG4gIGxldCB0YXJnZXQgPVxuICAgIE9wdC5nZXQgZSMjLnRhcmdldCAoZnVuICgpIC0+IE9wdC5nZXQgZSMjLnNyY0VsZW1lbnQgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpKVxuICBpblxuICBpZiBKcy5pbnN0YW5jZW9mIHRhcmdldCBKcy5VbnNhZmUuZ2xvYmFsIyMuX05vZGVcbiAgdGhlblxuICAgICgqIFdvcmthcm91bmQgZm9yIFNhZmFyaSBidWcgKilcbiAgICBsZXQgdGFyZ2V0JyA6IG5vZGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2UgdGFyZ2V0IGluXG4gICAgaWYgdGFyZ2V0JyMjLm5vZGVUeXBlID09IFRFWFRcbiAgICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKE9wdC5nZXQgdGFyZ2V0JyMjLnBhcmVudE5vZGUgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgIGVsc2UgdGFyZ2V0XG4gIGVsc2UgdGFyZ2V0XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IG1ha2UgcyA9IEpzLnN0cmluZyBzXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IHVuaXQgLT4gdW5pdFxuXG5jbGFzcyB0eXBlIGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGNhcHR1cmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXNzaXZlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmFkZEV2ZW50TGlzdGVuZXIpXG4gIHRoZW5cbiAgICBsZXQgZXYgPSAoSnMuc3RyaW5nIFwib25cIikjI2NvbmNhdCB0eXAgaW5cbiAgICBsZXQgY2FsbGJhY2sgZSA9IEpzLlVuc2FmZS5jYWxsIChoLCBlLCBbfHxdKSBpblxuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhdHRhY2hFdmVudCBldiBjYWxsYmFjayBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjZGV0YWNoRXZlbnQgZXYgY2FsbGJhY2tcbiAgZWxzZVxuICAgIGxldCBvcHRzIDogZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyB0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgbGV0IGl0ZXIgdCBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYiAtPiBmIGJcbiAgICBpblxuICAgIGl0ZXIgY2FwdHVyZSAoZnVuIGIgLT4gb3B0cyMjLmNhcHR1cmUgOj0gYik7XG4gICAgaXRlciBvbmNlIChmdW4gYiAtPiBvcHRzIyMub25jZSA6PSBiKTtcbiAgICBpdGVyIHBhc3NpdmUgKGZ1biBiIC0+IG9wdHMjIy5wYXNzaXZlIDo9IGIpO1xuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhZGRFdmVudExpc3RlbmVyIHR5cCBoIG9wdHMgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3JlbW92ZUV2ZW50TGlzdGVuZXIgdHlwIGggb3B0c1xuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCBoIGNhcHQgPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSB0eXAgfmNhcHR1cmU6Y2FwdCBoXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyIGlkID0gaWQgKClcblxubGV0IHByZXZlbnREZWZhdWx0IGV2ID1cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucHJldmVudERlZmF1bHQgKCogSUUgaGFjayAqKVxuICB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjcHJldmVudERlZmF1bHRcbiAgZWxzZSAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5yZXR1cm5WYWx1ZSA6PSBKcy5ib29sIGZhbHNlXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/ZGV0YWlsIHR5cCA9XG4gIGxldCBvcHRfaXRlciBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9wdHMgPSBVbnNhZmUub2JqIFt8fF0gaW5cbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5idWJibGVzIDo9IGJvb2wgeCkgYnViYmxlcztcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5jYW5jZWxhYmxlIDo9IGJvb2wgeCkgY2FuY2VsYWJsZTtcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5kZXRhaWwgOj0gc29tZSB4KSBkZXRhaWw7XG4gIGxldCBjb25zdHIgOlxuICAgICAgKCAgICgnYSwgJ2IpICNjdXN0b21FdmVudCBKcy50IEV2ZW50LnR5cFxuICAgICAgIC0+IDwgZGV0YWlsIDogJ2Igb3B0IHByb3AgPiB0XG4gICAgICAgLT4gKCdhLCAnYikgY3VzdG9tRXZlbnQgdClcbiAgICAgIGNvbnN0ciA9XG4gICAgVW5zYWZlLmdsb2JhbCMjLl9DdXN0b21FdmVudFxuICBpblxuICBuZXclanMgY29uc3RyIHR5cCBvcHRzXG5cbigqIElFIDwgOSAqKVxuXG5jbGFzcyB0eXBlIHN0cmluZ0xpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBKc1xuXG50eXBlIHVpbnQzMiA9IGZsb2F0XG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuZW5kXG5cbmxldCBhcnJheUJ1ZmZlciA6IChpbnQgLT4gYXJyYXlCdWZmZXIgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9BcnJheUJ1ZmZlclxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyVmlldyA9IG9iamVjdFxuICBtZXRob2QgYnVmZmVyIDogYXJyYXlCdWZmZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHR5cGVkQXJyYXkgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgX0JZVEVTX1BFUl9FTEVNRU5UIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0X2Zyb21BcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRfZnJvbVR5cGVkQXJyYXkgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXlfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgKCogVGhpcyBmYWtlIG1ldGhvZCBpcyBuZWVkZWQgZm9yIHR5cGluZyBwdXJwb3Nlcy5cbiAgICAgV2l0aG91dCBpdCwgWydiXSB3b3VsZCBub3QgYmUgY29uc3RyYWluZWQuICopXG4gIG1ldGhvZCBfY29udGVudF90eXBlXyA6ICdiIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxudHlwZSBpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0MzJBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDY0QXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlZEFycmF5XG5cbmV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdFxuICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG5sZXQgaW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9pbkJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgdWludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9pbkJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IGludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfaW5CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21BcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2luQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IGludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfaW5CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21BcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2luQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfaW5CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0NjRBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfaW5CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IHNldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9XG4gZnVuIGEgaSB2IC0+IGFycmF5X3NldCAoVW5zYWZlLmNvZXJjZSBhKSBpIHZcblxubGV0IGdldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5sZXQgdW5zYWZlX2dldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmNsYXNzIHR5cGUgZGF0YVZpZXcgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgZ2V0SW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMiA6IGludCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjRfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzIgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyIDogaW50IC0+IHVpbnQzMiAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyXyA6IGludCAtPiB1aW50MzIgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyXyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjRfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZGF0YVZpZXcgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0RhdGFWaWV3XG5cbmxldCBkYXRhVmlld19pbkJ1ZmZlciA9IGRhdGFWaWV3XG5cbm1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgSnMudCA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSBKcy50ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuXG4gIGxldCBvZl9hcnJheUJ1ZmZlciBhYiA9XG4gICAgbGV0IHVpbnQ4ID0gbmV3JWpzIHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciBhYiBpblxuICAgIG9mX3VpbnQ4QXJyYXkgdWludDhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgYmxvYiA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYmxvYiB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2Vfd2l0aENvbnRlbnRUeXBlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiBibG9iIHQgbWV0aFxuZW5kXG5cbmxldCBibG9iX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fQmxvYlxuXG50eXBlICdhIG1ha2VfYmxvYiA9XG4gID9jb250ZW50VHlwZTpzdHJpbmcgLT4gP2VuZGluZ3M6WyBgVHJhbnNwYXJlbnQgfCBgTmF0aXZlIF0gLT4gJ2EgLT4gYmxvYiB0XG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmxldCBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzID1cbiAgbGV0IG9wdGlvbnMgPVxuICAgIGZpbHRlcl9tYXBcbiAgICAgIChmdW4gKG5hbWUsIHYpIC0+XG4gICAgICAgIG1hdGNoIHYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBTb21lIChuYW1lLCBVbnNhZmUuaW5qZWN0IChzdHJpbmcgdikpKVxuICAgICAgWyBcInR5cGVcIiwgY29udGVudFR5cGVcbiAgICAgIDsgKCBcImVuZGluZ3NcIlxuICAgICAgICAsIG1hdGNoIGVuZGluZ3Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGBUcmFuc3BhcmVudCAtPiBTb21lIFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgIHwgU29tZSBgTmF0aXZlIC0+IFNvbWUgXCJuYXRpdmVcIiApXG4gICAgICBdXG4gIGluXG4gIG1hdGNoIG9wdGlvbnMgd2l0aFxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGwgLT4gVW5zYWZlLm9iaiAoQXJyYXkub2ZfbGlzdCBsKVxuXG5sZXQgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGEgPVxuICBsZXQgb3B0aW9ucyA9IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgaW5cbiAgbmV3JWpzIGJsb2JfY29uc3RyIChhcnJheSBhKSBvcHRpb25zXG5cbmxldCBibG9iX2Zyb21fc3RyaW5nID9jb250ZW50VHlwZSA/ZW5kaW5ncyBzID1cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIFt8IHN0cmluZyBzIHxdXG5cbmxldCBibG9iX2Zyb21fYW55ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBsID1cbiAgbGV0IGwgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBgYXJyYXlCdWZmZXIgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgYXJyYXlCdWZmZXJWaWV3IGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYHN0cmluZyBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKVxuICAgICAgICB8IGBqc19zdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IHNcbiAgICAgICAgfCBgYmxvYiBiIC0+IFVuc2FmZS5pbmplY3QgYilcbiAgICAgIGxcbiAgaW5cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIChBcnJheS5vZl9saXN0IGwpXG5cbmNsYXNzIHR5cGUgZmlsZSA9IG9iamVjdFxuICBpbmhlcml0IGJsb2JcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdE1vZGlmaWVkRGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbiBmaXJlZm94IDMuMC0zLjUgZmlsZS5uYW1lIGlzIG5vdCBhdmFpbGFibGUsIHdlIHVzZSB0aGUgbm9uc3RhbmRhcmQgZmlsZU5hbWUgaW5zdGVhZCAqKVxuY2xhc3MgdHlwZSBmaWxlX25hbWVfb25seSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVOYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZmlsZW5hbWUgZmlsZSA9XG4gIGxldCBmaWxlIDogZmlsZV9uYW1lX29ubHkgdCA9IEpzLlVuc2FmZS5jb2VyY2UgZmlsZSBpblxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5uYW1lIHdpdGhcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLmZpbGVOYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbid0IHJldHJpZXZlIGZpbGUgbmFtZTogbm90IGltcGxlbWVudGVkXCJcbiAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWUpXG4gIHwgU29tZSBuYW1lIC0+IG5hbWVcblxudHlwZSBmaWxlX2FueSA9IDwgPiB0XG5cbmxldCBkb2NfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9Eb2N1bWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwganNvbiA6IGZpbGVfYW55IC0+ICdhIE9wdC50ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBkb2N1bWVudCAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGRvY19jb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGVsZW1lbnQgZG9jdW1lbnQgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYmxvYiAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGJsb2JfY29uc3RyIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogI2Jsb2IgdCkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHN0cmluZyAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDoganNfc3RyaW5nIHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGFycmF5QnVmZmVyIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQpXG4gICAgZWxzZSBKcy5udWxsXG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFtmaWxlXSBEb20ubm9kZUxpc3RcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVFcnJvciA9IG9iamVjdFxuICBtZXRob2QgY29kZSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb2dyZXNzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGxlbmd0aENvbXB1dGFibGUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2FkZWQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3RhbCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcm9ncmVzc0V2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZW5kIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEVNUFRZXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxuY2xhc3MgdHlwZSBmaWxlUmVhZGVyID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHJlYWRBc0FycmF5QnVmZmVyIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzQmluYXJ5U3RyaW5nIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIDogI2Jsb2IgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzRGF0YVVSTCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzdWx0IDogZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IGZpbGVFcnJvciB0IHJlYWRvbmx5X3Byb3BcblxuICBpbmhlcml0IHByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgUmVhZGVyRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSBmaWxlUmVhZGVyIHByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGxvYWRzdGFydCA9IEV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IEV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBFdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCBsb2FkZW5kID0gRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmxldCBmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmlsZVJlYWRlclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNhbWxfanNfb25faWUgOiB1bml0IC0+IGJvb2wgdCA9IFwiY2FtbF9qc19vbl9pZVwiXG5cbmxldCBvbklFID0gSnMudG9fYm9vbCAoY2FtbF9qc19vbl9pZSAoKSlcblxuZXh0ZXJuYWwgaHRtbF9lc2NhcGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VzY2FwZVwiXG5cbmV4dGVybmFsIGRlY29kZV9odG1sX2VudGl0aWVzIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lbnRpdGllc1wiXG5cbmNsYXNzIHR5cGUgY3NzU3R5bGVEZWNsYXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2Qgc2V0UHJvcGVydHkgOlxuICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5VmFsdWUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5UHJpb3JpdHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVByb3BlcnR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRlbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkR1cmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25GaWxsTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblBsYXlTdGF0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRBdHRhY2htZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUmVwZWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sbGFwc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSYWRpdXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjYXB0aW9uU2lkZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVySW5jcmVtZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVyUmVzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc0Zsb2F0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJzb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzcGxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW1wdHlDZWxscyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udEZhbWlseSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFNpemUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFZhcmlhbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRXZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGV0dGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5MZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5SaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGFjaXR5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2Qgb3V0bGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lT2Zmc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3cgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dZIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1JpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtBZnRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQmVmb3JlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyRXZlbnRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYmxlTGF5b3V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbmNob3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHREZWNvcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0SW5kZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0VHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmVydGljYWxBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmlzaWJpbGl0eSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2hpdGVTcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdvcmRTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB6SW5kZXggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IpIERvbS5ldmVudF9saXN0ZW5lclxuXG50eXBlIG1vdXNlX2J1dHRvbiA9XG4gIHwgTm9fYnV0dG9uXG4gIHwgTGVmdF9idXR0b25cbiAgfCBNaWRkbGVfYnV0dG9uXG4gIHwgUmlnaHRfYnV0dG9uXG5cbnR5cGUgZGVsdGFfbW9kZSA9XG4gIHwgRGVsdGFfcGl4ZWxcbiAgfCBEZWx0YV9saW5lXG4gIHwgRGVsdGFfcGFnZVxuXG5jbGFzcyB0eXBlIGV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5ldmVudFxuZW5kXG5cbmFuZCBbJ2FdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnQsICdhXSBEb20uY3VzdG9tRXZlbnRcbmVuZFxuXG5hbmQgZm9jdXNFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnV0dG9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBtb3VzZV9idXR0b24gb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJvbUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQga2V5Ym9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyQ29kZSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXlDb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TW9kaWZpZXJTdGF0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGtleUlkZW50aWZpZXIgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZXdoZWVsRXZlbnQgPSBvYmplY3RcbiAgKCogQWxsIG1vZGVybiBicm93c2VycyAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2Qgd2hlZWxEZWx0YSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVogOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhTW9kZSA6IGRlbHRhX21vZGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZVNjcm9sbEV2ZW50ID0gb2JqZWN0XG4gICgqIEZpcmVmb3ggKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hPUklaT05UQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVElDQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgdG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0VG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhbmdlZFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gdG91Y2ggdCBvcHRkZWYgbWV0aFxuZW5kXG5cbmFuZCB0b3VjaCA9IG9iamVjdFxuICBtZXRob2QgaWRlbnRpZmllciA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN1Ym1pdEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3VibWl0dGVyIDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRyYWdFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGF0YVRyYW5zZmVyIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGlwYm9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGNsaXBib2FyZERhdGEgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRhdGFUcmFuc2ZlciA9IG9iamVjdFxuICBtZXRob2QgZHJvcEVmZmVjdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZWZmZWN0QWxsb3dlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0eXBlcyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRFbGVtZW50IDogZWxlbWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhX2FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldERyYWdJbWFnZSA6IGVsZW1lbnQgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBldmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kYmxjbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vkb3duIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZXVwIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW92ZXIgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlbW92ZSA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdXQgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXByZXNzIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlkb3duIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXl1cCA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Nyb2xsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2hlZWwgOiAoJ3NlbGYgdCwgbW91c2V3aGVlbEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ3N0YXJ0IDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbmQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VudGVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdvdmVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdsZWF2ZSA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyb3AgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25lbmQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25pdGVyYXRpb24gOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9ucnVuIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25zdGFydCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uZW5kIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZ290cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9zdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJlbnRlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyY2FuY2VsIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJkb3duIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJsZWF2ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybW92ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3V0IDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdmVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJ1cCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzcGF0Y2hFdmVudCA6IGV2ZW50IHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG5hbmQgcG9wU3RhdGVFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHBvaW50ZXJFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgcG9pbnRlcklkIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhbmdlbnRpYWxQcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR3aXN0IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9pbnRlclR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzUHJpbWFyeSA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cmwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3JhZ2VBcmVhIDogc3RvcmFnZSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGhhc2hDaGFuZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG9sZFVSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBhbmltYXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0cmFuc2l0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBwcm9wZXJ0eU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtZWRpYUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcbmVuZFxuXG5hbmQgbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc291cmNlIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBub2RlU2VsZWN0b3IgPSBvYmplY3RcbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3IgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgcXVlcnlTZWxlY3RvckFsbCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuZW5kXG5cbmFuZCB0b2tlbkxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBhZGQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRvZ2dsZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmaWVyIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NOYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc0xpc3QgOiB0b2tlbkxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3Nlc3QgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc3R5bGUgOiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dENvbnRlbnQgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lclRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaWVudExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRQYXJlbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxMZWZ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsVG9wIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsV2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxIZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBnZXRDbGllbnRSZWN0cyA6IGNsaWVudFJlY3RMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgOiBjbGllbnRSZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxJbnRvVmlldyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5hbmQgY2xpZW50UmVjdCA9IG9iamVjdFxuICBtZXRob2QgdG9wIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm90dG9tIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaWVudFJlY3RMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGNsaWVudFJlY3QgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBEb20ubm9faGFuZGxlclxuXG5sZXQgaGFuZGxlciA9IERvbS5oYW5kbGVyXG5cbmxldCBmdWxsX2hhbmRsZXIgPSBEb20uZnVsbF9oYW5kbGVyXG5cbmxldCBpbnZva2VfaGFuZGxlciA9IERvbS5pbnZva2VfaGFuZGxlclxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSAnYSBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJjbGlja1wiXG5cbiAgbGV0IGNvcHkgPSBEb20uRXZlbnQubWFrZSBcImNvcHlcIlxuXG4gIGxldCBjdXQgPSBEb20uRXZlbnQubWFrZSBcImN1dFwiXG5cbiAgbGV0IHBhc3RlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXN0ZVwiXG5cbiAgbGV0IGRibGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJkYmxjbGlja1wiXG5cbiAgbGV0IG1vdXNlZG93biA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vkb3duXCJcblxuICBsZXQgbW91c2V1cCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V1cFwiXG5cbiAgbGV0IG1vdXNlb3ZlciA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdmVyXCJcblxuICBsZXQgbW91c2Vtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW1vdmVcIlxuXG4gIGxldCBtb3VzZW91dCA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdXRcIlxuXG4gIGxldCBrZXlwcmVzcyA9IERvbS5FdmVudC5tYWtlIFwia2V5cHJlc3NcIlxuXG4gIGxldCBrZXlkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlkb3duXCJcblxuICBsZXQga2V5dXAgPSBEb20uRXZlbnQubWFrZSBcImtleXVwXCJcblxuICBsZXQgbW91c2V3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V3aGVlbFwiXG5cbiAgbGV0IHdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJ3aGVlbFwiXG5cbiAgbGV0IF9ET01Nb3VzZVNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwiRE9NTW91c2VTY3JvbGxcIlxuXG4gIGxldCB0b3VjaHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaHN0YXJ0XCJcblxuICBsZXQgdG91Y2htb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaG1vdmVcIlxuXG4gIGxldCB0b3VjaGVuZCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hlbmRcIlxuXG4gIGxldCB0b3VjaGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hjYW5jZWxcIlxuXG4gIGxldCBkcmFnc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdzdGFydFwiXG5cbiAgbGV0IGRyYWdlbmQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbmRcIlxuXG4gIGxldCBkcmFnZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbnRlclwiXG5cbiAgbGV0IGRyYWdvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnb3ZlclwiXG5cbiAgbGV0IGRyYWdsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2xlYXZlXCJcblxuICBsZXQgZHJhZyA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ1wiXG5cbiAgbGV0IGRyb3AgPSBEb20uRXZlbnQubWFrZSBcImRyb3BcIlxuXG4gIGxldCBoYXNoY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICBsZXQgY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGFuZ2VcIlxuXG4gIGxldCBpbnB1dCA9IERvbS5FdmVudC5tYWtlIFwiaW5wdXRcIlxuXG4gIGxldCB0aW1ldXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1ldXBkYXRlXCJcblxuICBsZXQgc3VibWl0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzdWJtaXRcIlxuXG4gIGxldCBzY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcInNjcm9sbFwiXG5cbiAgbGV0IGZvY3VzID0gRG9tLkV2ZW50Lm1ha2UgXCJmb2N1c1wiXG5cbiAgbGV0IGJsdXIgPSBEb20uRXZlbnQubWFrZSBcImJsdXJcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJ1bmxvYWRcIlxuXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcImJlZm9yZXVubG9hZFwiXG5cbiAgbGV0IHJlc2l6ZSA9IERvbS5FdmVudC5tYWtlIFwicmVzaXplXCJcblxuICBsZXQgb3JpZW50YXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcIm9yaWVudGF0aW9uY2hhbmdlXCJcblxuICBsZXQgcG9wc3RhdGUgPSBEb20uRXZlbnQubWFrZSBcInBvcHN0YXRlXCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgc2VsZWN0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWxlY3RcIlxuXG4gIGxldCBvbmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9ubGluZVwiXG5cbiAgbGV0IG9mZmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9mZmxpbmVcIlxuXG4gIGxldCBjaGVja2luZyA9IERvbS5FdmVudC5tYWtlIFwiY2hlY2tpbmdcIlxuXG4gIGxldCBub3VwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwibm91cGRhdGVcIlxuXG4gIGxldCBkb3dubG9hZGluZyA9IERvbS5FdmVudC5tYWtlIFwiZG93bmxvYWRpbmdcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCB1cGRhdGVyZWFkeSA9IERvbS5FdmVudC5tYWtlIFwidXBkYXRlcmVhZHlcIlxuXG4gIGxldCBjYWNoZWQgPSBEb20uRXZlbnQubWFrZSBcImNhY2hlZFwiXG5cbiAgbGV0IG9ic29sZXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJvYnNvbGV0ZVwiXG5cbiAgbGV0IGRvbUNvbnRlbnRMb2FkZWQgPSBEb20uRXZlbnQubWFrZSBcIkRPTUNvbnRlbnRMb2FkZWRcIlxuXG4gIGxldCBhbmltYXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uc3RhcnRcIlxuXG4gIGxldCBhbmltYXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmVuZFwiXG5cbiAgbGV0IGFuaW1hdGlvbml0ZXJhdGlvbiA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uaXRlcmF0aW9uXCJcblxuICBsZXQgYW5pbWF0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25jYW5jZWxcIlxuXG4gIGxldCB0cmFuc2l0aW9ucnVuID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9ucnVuXCJcblxuICBsZXQgdHJhbnNpdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uc3RhcnRcIlxuXG4gIGxldCB0cmFuc2l0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uZW5kXCJcblxuICBsZXQgdHJhbnNpdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmNhbmNlbFwiXG5cbiAgbGV0IGNhbnBsYXkgPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXlcIlxuXG4gIGxldCBjYW5wbGF5dGhyb3VnaCA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheXRocm91Z2hcIlxuXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiZHVyYXRpb25jaGFuZ2VcIlxuXG4gIGxldCBlbXB0aWVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbXB0aWVkXCJcblxuICBsZXQgZW5kZWQgPSBEb20uRXZlbnQubWFrZSBcImVuZGVkXCJcblxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImdvdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbG9hZGVkZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkZGF0YVwiXG5cbiAgbGV0IGxvYWRlZG1ldGFkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRtZXRhZGF0YVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBtZXNzYWdlID0gRG9tLkV2ZW50Lm1ha2UgXCJtZXNzYWdlXCJcblxuICBsZXQgcGF1c2UgPSBEb20uRXZlbnQubWFrZSBcInBhdXNlXCJcblxuICBsZXQgcGxheSA9IERvbS5FdmVudC5tYWtlIFwicGxheVwiXG5cbiAgbGV0IHBsYXlpbmcgPSBEb20uRXZlbnQubWFrZSBcInBsYXlpbmdcIlxuXG4gIGxldCBwb2ludGVyZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJlbnRlclwiXG5cbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJjYW5jZWxcIlxuXG4gIGxldCBwb2ludGVyZG93biA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmRvd25cIlxuXG4gIGxldCBwb2ludGVybGVhdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJsZWF2ZVwiXG5cbiAgbGV0IHBvaW50ZXJtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybW92ZVwiXG5cbiAgbGV0IHBvaW50ZXJvdXQgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdXRcIlxuXG4gIGxldCBwb2ludGVyb3ZlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm92ZXJcIlxuXG4gIGxldCBwb2ludGVydXAgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJ1cFwiXG5cbiAgbGV0IHJhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJhdGVjaGFuZ2VcIlxuXG4gIGxldCBzZWVrZWQgPSBEb20uRXZlbnQubWFrZSBcInNlZWtlZFwiXG5cbiAgbGV0IHNlZWtpbmcgPSBEb20uRXZlbnQubWFrZSBcInNlZWtpbmdcIlxuXG4gIGxldCBzdGFsbGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJzdGFsbGVkXCJcblxuICBsZXQgc3VzcGVuZCA9IERvbS5FdmVudC5tYWtlIFwic3VzcGVuZFwiXG5cbiAgbGV0IHZvbHVtZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwidm9sdW1lY2hhbmdlXCJcblxuICBsZXQgd2FpdGluZyA9IERvbS5FdmVudC5tYWtlIFwid2FpdGluZ1wiXG5cbiAgbGV0IG1ha2UgPSBEb20uRXZlbnQubWFrZVxuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSBEb20uZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IERvbS5yZW1vdmVFdmVudExpc3RlbmVyXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA9IERvbS5jcmVhdGVDdXN0b21FdmVudFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gY29sbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIG5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGh0bWxFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBwcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGlua0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Jvc3NvcmlnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtZXRhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHR0cEVxdWl2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY2hlbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBiYXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJvZHlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGZvcm1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBlbGVtZW50cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0Q2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbmN0eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfbWV0aG9kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1Ym1pdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXNldCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbnN1Ym1pdCA6ICgnc2VsZiB0LCBzdWJtaXRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0R3JvdXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGxhYmVsIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG9wdEdyb3VwRWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0U2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzZWxlY3RFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZEluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wdGlvbnMgOiBvcHRpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBhZGQgOiAjb3B0R3JvdXBFbGVtZW50IHQgLT4gI29wdEdyb3VwRWxlbWVudCB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW5wdXRFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmYXVsdENoZWNrZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGVja2VkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhMZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRleHRBcmVhRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29scyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJ1dHRvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxhYmVsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodG1sRm9yIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZmllbGRTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGVnZW5kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdUxpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG9MaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbGlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRpdkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcGFyYWdyYXBoRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkaW5nRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBxdW90ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcmVFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGJyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBockVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbW9kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0ZVRpbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhbmNob3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG93bmxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGltYWdlRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpc01hcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgbmF0dXJhbFdpZHRoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxIZWlnaHQgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29tcGxldGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhcmNoaXZlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlQmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlY2xhcmUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YW5kYnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBhcmFtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcmVhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9IcmVmIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWFwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYXJlYXMgOiBhcmVhRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBlbWJlZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNlbGxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjZWxsSW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYmJyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXhpcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xTcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgaGVhZGVycyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93U3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjb3BlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVJvd0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VjdGlvblJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2VsbHMgOiB0YWJsZUNlbGxFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0Q2VsbCA6IGludCAtPiB0YWJsZUNlbGxFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDZWxsIDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDb2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlU2VjdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNhcHRpb25FbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRCb2RpZXMgOiB0YWJsZVNlY3Rpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxQYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZnJhbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJ1bGVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdW1tYXJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3JlYXRlVEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUSGVhZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVURm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRGb290IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDYXB0aW9uIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRpbWVSYW5nZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZW5kXyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxudHlwZSBuZXR3b3JrU3RhdGUgPVxuICB8IE5FVFdPUktfRU1QVFlcbiAgfCBORVRXT1JLX0lETEVcbiAgfCBORVRXT1JLX0xPQURJTkdcbiAgfCBORVRXT1JLX05PX1NPVVJDRVxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEhBVkVfTk9USElOR1xuICB8IEhBVkVfTUVUQURBVEFcbiAgfCBIQVZFX0NVUlJFTlRfREFUQVxuICB8IEhBVkVfRlVUVVJFX0RBVEFcbiAgfCBIQVZFX0VOT1VHSF9EQVRBXG5cbigqIGh0dHA6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL3JlZl9hdl9kb20uYXNwICopXG4oKiBvbmx5IGZlYXR1cmVzIHN1cHBvcnRlZCBieSBhbGwgYnJvd3Nlci4gKElFOSspICopXG5jbGFzcyB0eXBlIG1lZGlhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FuUGxheVR5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGxvYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGxheSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhdXRvcGxheSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udHJvbHMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U3JjIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGltZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9vcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhZ3JvdXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG11dGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZSA6IG5ldHdvcmtTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdXNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXliYWNrUmF0ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcGxheWVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlbG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWthYmxlIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2luZyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdm9sdW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXl0aHJvdWdoIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kdXJhdGlvbmNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW1wdGllZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW5kZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZGRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZG1ldGFkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBhdXNlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25yYXRlY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVrZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN0YWxsZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN1c3BlbmQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnZvbHVtZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2FpdGluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhdWRpb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG5jbGFzcyB0eXBlIHZpZGVvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbnR5cGUgY29udGV4dCA9IGpzX3N0cmluZyB0XG5cbmxldCBfMmRfID0gSnMuc3RyaW5nIFwiMmRcIlxuXG50eXBlIGNhbnZhc1BhdHRlcm5cblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRvRGF0YVVSTCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlX2NvbXByZXNzaW9uIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgPSBvYmplY3RcbiAgbWV0aG9kIGNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNhdmUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzdG9yZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdsb2JhbEFscGhhIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVMaW5lYXJHcmFkaWVudCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhZGlhbEdyYWRpZW50IDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybiA6IGltYWdlRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21WaWRlbyA6IHZpZGVvRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGluZUNhcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUpvaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pdGVyTGltaXQgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0JsdXIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0NvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhclJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZWdpblBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VQYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vdmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcXVhZHJhdGljQ3VydmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZXppZXJDdXJ2ZVRvIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc1BvaW50SW5QYXRoIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ZvY3VzUmluZyA6ICNlbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEJhc2VsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsVGV4dF93aXRoV2lkdGggOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0X3dpdGhXaWR0aCA6XG4gICAganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1lYXN1cmVUZXh0IDoganNfc3RyaW5nIHQgLT4gdGV4dE1ldHJpY3MgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZSA6IGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2Vfd2l0aFNpemUgOlxuICAgIGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbCA6XG4gICAgICAgaW1hZ2VFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhc1dpdGhTaXplIDpcbiAgICBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbUNhbnZhcyA6XG4gICAgICAgY2FudmFzRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFZpZGVvIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhTaXplIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tVmlkZW8gOlxuICAgICAgIHZpZGVvRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVJbWFnZURhdGEgOiBpbnQgLT4gaW50IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgZ2V0SW1hZ2VEYXRhIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBwdXRJbWFnZURhdGEgOiBpbWFnZURhdGEgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzR3JhZGllbnQgPSBvYmplY3RcbiAgbWV0aG9kIGFkZENvbG9yU3RvcCA6IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCB0ZXh0TWV0cmljcyA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGltYWdlRGF0YSA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDogY2FudmFzUGl4ZWxBcnJheSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2FudmFzUGl4ZWxBcnJheSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leHRlcm5hbCBwaXhlbF9nZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9qc19nZXRcIlxuXG5leHRlcm5hbCBwaXhlbF9zZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbmNsYXNzIHR5cGUgcmFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGNvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kQ29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFN0YXJ0IDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBleHRyYWN0Q29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ29udGVudHMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1cnJvdW5kQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbigqKiBJbmZvcm1hdGlvbiBvbiBjdXJyZW50IHNlbGVjdGlvbiAqKVxuY2xhc3MgdHlwZSBzZWxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGFuY2hvck5vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9yT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNDb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZUNvdW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmFuZ2VBdCA6IGludCAtPiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4dGVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb2RpZnkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb1N0YXJ0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9FbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0QWxsQ2hpbGRyZW4gOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhZGRSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQWxsUmFuZ2VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyb21Eb2N1bWVudCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb250YWluc05vZGUgOiBEb20ubm9kZSB0IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZCA6IGhlYWRFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBib2R5IDogYm9keUVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6IGh0bWxFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbWFnZXMgOiBpbWFnZUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGV0cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGlua3MgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvcm1zIDogZm9ybUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9ycyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXNpZ25Nb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3cml0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleGVjQ29tbWFuZCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeU5hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYWN0aXZlRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaWRkZW4gOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbnR5cGUgaW50ZXJ2YWxfaWRcblxudHlwZSB0aW1lb3V0X2lkXG5cbnR5cGUgYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3RuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3J0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYXRobmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VhcmNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoYXNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3NpZ24gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWxvYWQgOiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgbG9jYXRpb25fb3JpZ2luIChsb2MgOiBsb2NhdGlvbiB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgbG9jIyMub3JpZ2luXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0IHByb3RvY29sID0gbG9jIyMucHJvdG9jb2wgaW5cbiAgICAgIGxldCBob3N0bmFtZSA9IGxvYyMjLmhvc3RuYW1lIGluXG4gICAgICBsZXQgcG9ydCA9IGxvYyMjLnBvcnQgaW5cbiAgICAgIGlmIHByb3RvY29sIyMubGVuZ3RoID0gMCAmJiBob3N0bmFtZSMjLmxlbmd0aCA9IDBcbiAgICAgIHRoZW4gSnMuc3RyaW5nIFwiXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IG9yaWdpbiA9IHByb3RvY29sIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiLy9cIikgaG9zdG5hbWUgaW5cbiAgICAgICAgaWYgcG9ydCMjLmxlbmd0aCA+IDAgdGhlbiBvcmlnaW4jI2NvbmNhdF8yIChKcy5zdHJpbmcgXCI6XCIpIGxvYyMjLnBvcnQgZWxzZSBvcmlnaW4pXG4gICAgKGZ1biBvIC0+IG8pXG5cbmNsYXNzIHR5cGUgaGlzdG9yeSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ28gOiBpbnQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiYWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcndhcmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcHVzaFN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZVN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHVuZG9NYW5hZ2VyID0gb2JqZWN0IGVuZFxuXG5jbGFzcyB0eXBlIG5hdmlnYXRvciA9IG9iamVjdFxuICBtZXRob2QgYXBwQ29kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcE5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcFZlcnNpb24gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZUVuYWJsZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbkxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF0Zm9ybSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmVuZG9yIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyQWdlbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4VG91Y2hQb2ludHMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyZWVuID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcHBsaWNhdGlvbkNhY2hlID0gb2JqZWN0XG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGRhdGUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3dhcENhY2hlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2hlY2tpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ubm91cGRhdGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZG93bmxvYWRpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udXBkYXRlcmVhZHkgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2FjaGVkIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ic29sZXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5jbGFzcyB0eXBlIF9VUkwgPSBvYmplY3RcbiAgbWV0aG9kIGNyZWF0ZU9iamVjdFVSTCA6ICNGaWxlLmJsb2IgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJldm9rZU9iamVjdFVSTCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgd2luZG93ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgZG9jdW1lbnQgOiBkb2N1bWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGljYXRpb25DYWNoZSA6IGFwcGxpY2F0aW9uQ2FjaGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpc3RvcnkgOiBoaXN0b3J5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1bmRvTWFuYWdlciA6IHVuZG9NYW5hZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXZpZ2F0b3IgOiBuYXZpZ2F0b3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFNlbGVjdGlvbiA6IHNlbGVjdGlvbiB0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEJ5IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Vzc2lvblN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYWxTdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvcCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcmFtZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3Blbl8gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gd2luZG93IHQgb3B0IG1ldGhcblxuICBtZXRob2QgYWxlcnQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29uZmlybSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHByb21wdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHByaW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludGVydmFsIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gaW50ZXJ2YWxfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckludGVydmFsIDogaW50ZXJ2YWxfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWVvdXQgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiB0aW1lb3V0X2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJUaW1lb3V0IDogdGltZW91dF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDpcbiAgICAobnVtYmVyX3QgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgbWV0aFxuXG4gIG1ldGhvZCBjYW5jZWxBbmltYXRpb25GcmFtZSA6IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JlZW4gOiBzY3JlZW4gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGUgOiAjZWxlbWVudCB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGVfcHNldWRvRWx0IDpcbiAgICAjZWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGF0b2IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGJ0b2EgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJlZm9yZXVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25yZXNpemUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vcmllbnRhdGlvbmNoYW5nZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnBvcHN0YXRlIDogKHdpbmRvdyB0LCBwb3BTdGF0ZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25oYXNoY2hhbmdlIDogKHdpbmRvdyB0LCBoYXNoQ2hhbmdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ubGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vZmZsaW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDogX1VSTCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGV2aWNlUGl4ZWxSYXRpbyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2luZG93IDogd2luZG93IHQgPSBKcy5VbnNhZmUuZ2xvYmFsXG5cbigqIFRoZSB0b3BsZXZlbCBvYmplY3QgKilcblxubGV0IGRvY3VtZW50ID0gd2luZG93IyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9leG4gaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJnZXRFbGVtZW50QnlJZF9leG46ICVTIG5vdCBmb3VuZFwiIGlkKSlcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfb3B0IGlkID0gSnMuT3B0LnRvX29wdGlvbiAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfY29lcmNlIGlkIGNvZXJjZSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgKGZ1biBlIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjZSBlKSlcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgZnJhbWVTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb2xzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vUmVzaXplIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlGcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFdpbmRvdyA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKioqKilcblxuKCpYWFggU2hvdWxkIHByb3ZpZGUgY3JlYXRpb24gZnVuY3Rpb25zIGEgbGEgbGFibGd0ay4uLiAqKVxuXG5sZXQgb3B0X2l0ZXIgeCBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgdiAtPiBmIHZcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVFbGVtZW50U3ludGF4ID0gcmVmIGBVbmtub3duXG5cbmxldCByZWMgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0ID1cbiAgaWYgUG9seS4oX3R5cGUgPSBOb25lKSAmJiBQb2x5LihuYW1lID0gTm9uZSlcbiAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpXG4gIGVsc2VcbiAgICBtYXRjaCAhY3JlYXRlRWxlbWVudFN5bnRheCB3aXRoXG4gICAgfCBgU3RhbmRhcmQgLT5cbiAgICAgICAgbGV0IHJlcyA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdCkgaW5cbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+IHJlcyMjLl90eXBlIDo9IHQpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPiByZXMjIy5uYW1lIDo9IG4pO1xuICAgICAgICByZXNcbiAgICB8IGBFeHRlbmRlZCAtPlxuICAgICAgICBsZXQgYSA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMiAoSnMuc3RyaW5nIFwiPFwiKSAoSnMuc3RyaW5nIGVsdCkpO1xuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgdHlwZT1cXFwiXCIpIChodG1sX2VzY2FwZSB0KSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiBuYW1lPVxcXCJcIikgKGh0bWxfZXNjYXBlIG4pIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaCAoSnMuc3RyaW5nIFwiPlwiKSk7XG4gICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgKGRvYyMjY3JlYXRlRWxlbWVudCAoYSMjam9pbiAoSnMuc3RyaW5nIFwiXCIpKSlcbiAgICB8IGBVbmtub3duIC0+XG4gICAgICAgIGNyZWF0ZUVsZW1lbnRTeW50YXggOj1cbiAgICAgICAgICBpZiB0cnlcbiAgICAgICAgICAgICAgIGxldCBlbCA6IGlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgICAgICAgICAgICAgIChkb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIFwiPGlucHV0IG5hbWU9XFxcInhcXFwiPlwiKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5lcXVhbHMgZWwjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIFwiaW5wdXRcIilcbiAgICAgICAgICAgICAgICYmIEpzLmVxdWFscyBlbCMjLm5hbWUgKEpzLnN0cmluZyBcInhcIilcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICB0aGVuIGBFeHRlbmRlZFxuICAgICAgICAgIGVsc2UgYFN0YW5kYXJkO1xuICAgICAgICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHRcblxubGV0IGNyZWF0ZUh0bWwgZG9jIDogaHRtbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHRtbFwiXG5cbmxldCBjcmVhdGVIZWFkIGRvYyA6IGhlYWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhlYWRcIlxuXG5sZXQgY3JlYXRlTGluayBkb2MgOiBsaW5rRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5rXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVNZXRhIGRvYyA6IG1ldGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFcIlxuXG5sZXQgY3JlYXRlQmFzZSBkb2MgOiBiYXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiYXNlXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVCb2R5IGRvYyA6IGJvZHlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJvZHlcIlxuXG5sZXQgY3JlYXRlRm9ybSBkb2MgOiBmb3JtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JtXCJcblxubGV0IGNyZWF0ZU9wdGdyb3VwIGRvYyA6IG9wdEdyb3VwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRncm91cFwiXG5cbmxldCBjcmVhdGVPcHRpb24gZG9jIDogb3B0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRpb25cIlxuXG5sZXQgY3JlYXRlU2VsZWN0ID9fdHlwZSA/bmFtZSBkb2MgOiBzZWxlY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInNlbGVjdFwiXG5cbmxldCBjcmVhdGVJbnB1dCA/X3R5cGUgP25hbWUgZG9jIDogaW5wdXRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImlucHV0XCJcblxubGV0IGNyZWF0ZVRleHRhcmVhID9fdHlwZSA/bmFtZSBkb2MgOiB0ZXh0QXJlYUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwidGV4dGFyZWFcIlxuXG5sZXQgY3JlYXRlQnV0dG9uID9fdHlwZSA/bmFtZSBkb2MgOiBidXR0b25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImJ1dHRvblwiXG5cbmxldCBjcmVhdGVMYWJlbCBkb2MgOiBsYWJlbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGFiZWxcIlxuXG5sZXQgY3JlYXRlRmllbGRzZXQgZG9jIDogZmllbGRTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpZWxkc2V0XCJcblxubGV0IGNyZWF0ZUxlZ2VuZCBkb2MgOiBsZWdlbmRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxlZ2VuZFwiXG5cbmxldCBjcmVhdGVVbCBkb2MgOiB1TGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidWxcIlxuXG5sZXQgY3JlYXRlT2wgZG9jIDogb0xpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9sXCJcblxubGV0IGNyZWF0ZURsIGRvYyA6IGRMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkbFwiXG5cbmxldCBjcmVhdGVMaSBkb2MgOiBsaUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlcIlxuXG5sZXQgY3JlYXRlRGl2IGRvYyA6IGRpdkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGl2XCJcblxubGV0IGNyZWF0ZUVtYmVkIGRvYyA6IGVtYmVkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbWJlZFwiXG5cbmxldCBjcmVhdGVQIGRvYyA6IHBhcmFncmFwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicFwiXG5cbmxldCBjcmVhdGVIMSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMVwiXG5cbmxldCBjcmVhdGVIMiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMlwiXG5cbmxldCBjcmVhdGVIMyBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoM1wiXG5cbmxldCBjcmVhdGVINCBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNFwiXG5cbmxldCBjcmVhdGVINSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNVwiXG5cbmxldCBjcmVhdGVINiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNlwiXG5cbmxldCBjcmVhdGVRIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJxXCJcblxubGV0IGNyZWF0ZUJsb2NrcXVvdGUgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJsb2NrcXVvdGVcIlxuXG5sZXQgY3JlYXRlUHJlIGRvYyA6IHByZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicHJlXCJcblxubGV0IGNyZWF0ZUJyIGRvYyA6IGJyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiclwiXG5cbmxldCBjcmVhdGVIciBkb2MgOiBockVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHJcIlxuXG5sZXQgY3JlYXRlSW5zIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW5zXCJcblxubGV0IGNyZWF0ZURlbCBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlbFwiXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFuY2hvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVJbWcgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltZ1wiXG5cbmxldCBjcmVhdGVPYmplY3QgZG9jIDogb2JqZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvYmplY3RcIlxuXG5sZXQgY3JlYXRlUGFyYW0gZG9jIDogcGFyYW1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhcmFtXCJcblxubGV0IGNyZWF0ZU1hcCBkb2MgOiBtYXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hcFwiXG5cbmxldCBjcmVhdGVBcmVhIGRvYyA6IGFyZWFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFyZWFcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVRhYmxlIGRvYyA6IHRhYmxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0YWJsZVwiXG5cbmxldCBjcmVhdGVDYXB0aW9uIGRvYyA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FwdGlvblwiXG5cbmxldCBjcmVhdGVDb2wgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbFwiXG5cbmxldCBjcmVhdGVDb2xncm91cCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sZ3JvdXBcIlxuXG5sZXQgY3JlYXRlVGhlYWQgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aGVhZFwiXG5cbmxldCBjcmVhdGVUZm9vdCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRmb290XCJcblxubGV0IGNyZWF0ZVRib2R5IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGJvZHlcIlxuXG5sZXQgY3JlYXRlVHIgZG9jIDogdGFibGVSb3dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyXCJcblxubGV0IGNyZWF0ZVRoIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhcIlxuXG5sZXQgY3JlYXRlVGQgZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZFwiXG5cbmxldCBjcmVhdGVTdWIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdWJcIlxuXG5sZXQgY3JlYXRlU3VwIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3VwXCJcblxubGV0IGNyZWF0ZVNwYW4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzcGFuXCJcblxubGV0IGNyZWF0ZVR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidHRcIlxuXG5sZXQgY3JlYXRlSSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImlcIlxuXG5sZXQgY3JlYXRlQiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJcIlxuXG5sZXQgY3JlYXRlQmlnIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYmlnXCJcblxubGV0IGNyZWF0ZVNtYWxsIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic21hbGxcIlxuXG5sZXQgY3JlYXRlRW0gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJlbVwiXG5cbmxldCBjcmVhdGVTdHJvbmcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdHJvbmdcIlxuXG5sZXQgY3JlYXRlQ2l0ZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNpdGVcIlxuXG5sZXQgY3JlYXRlRGZuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGZuXCJcblxubGV0IGNyZWF0ZUNvZGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjb2RlXCJcblxubGV0IGNyZWF0ZVNhbXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzYW1wXCJcblxubGV0IGNyZWF0ZUtiZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImtiZFwiXG5cbmxldCBjcmVhdGVWYXIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ2YXJcIlxuXG5sZXQgY3JlYXRlQWJiciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFiYnJcIlxuXG5sZXQgY3JlYXRlRGQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZFwiXG5cbmxldCBjcmVhdGVEdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImR0XCJcblxubGV0IGNyZWF0ZU5vc2NyaXB0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwibm9zY3JpcHRcIlxuXG5sZXQgY3JlYXRlQWRkcmVzcyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFkZHJlc3NcIlxuXG5sZXQgY3JlYXRlRnJhbWVzZXQgZG9jIDogZnJhbWVTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lc2V0XCJcblxubGV0IGNyZWF0ZUZyYW1lIGRvYyA6IGZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZVwiXG5cbmxldCBjcmVhdGVJZnJhbWUgZG9jIDogaUZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpZnJhbWVcIlxuXG5sZXQgY3JlYXRlQXVkaW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImF1ZGlvXCJcblxubGV0IGNyZWF0ZVZpZGVvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWRlb1wiXG5cbmV4Y2VwdGlvbiBDYW52YXNfbm90X2F2YWlsYWJsZVxuXG5sZXQgY3JlYXRlQ2FudmFzIGRvYyA6IGNhbnZhc0VsZW1lbnQgdCA9XG4gIGxldCBjID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYW52YXNcIiBpblxuICBpZiBub3QgKE9wdC50ZXN0IGMjIy5nZXRDb250ZXh0KSB0aGVuIHJhaXNlIENhbnZhc19ub3RfYXZhaWxhYmxlO1xuICBjXG5cbmxldCBodG1sX2VsZW1lbnQgOiBodG1sRWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSFRNTEVsZW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IDogI0RvbS5ub2RlIEpzLnQgLT4gZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIGh0bWxfZWxlbWVudCkpXG4gICAgdGhlblxuICAgICAgKCogaWUgPCA5IGRvZXMgbm90IGhhdmUgSFRNTEVsZW1lbnQ6IHdlIGhhdmUgdG8gY2hlYXQgdG8gY2hlY2tcbiAgICAgICAgIHRoYXQgc29tZXRoaW5nIGlzIGFuIGh0bWwgZWxlbWVudCAqKVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmlubmVySFRNTCkpXG4gICAgICB0aGVuIEpzLm51bGxcbiAgICAgIGVsc2UgSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2VcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBKcy5pbnN0YW5jZW9mIGUgaHRtbF9lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIHRhZyAoZSA6ICNlbGVtZW50IHQpID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgPSB1bnNhZmVDb2VyY2UgXCJhXCIgZVxuXG4gIGxldCBhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJhcmVhXCIgZVxuXG4gIGxldCBiYXNlIGUgPSB1bnNhZmVDb2VyY2UgXCJiYXNlXCIgZVxuXG4gIGxldCBibG9ja3F1b3RlIGUgPSB1bnNhZmVDb2VyY2UgXCJibG9ja3F1b3RlXCIgZVxuXG4gIGxldCBib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJib2R5XCIgZVxuXG4gIGxldCBiciBlID0gdW5zYWZlQ29lcmNlIFwiYnJcIiBlXG5cbiAgbGV0IGJ1dHRvbiBlID0gdW5zYWZlQ29lcmNlIFwiYnV0dG9uXCIgZVxuXG4gIGxldCBjYW52YXMgZSA9IHVuc2FmZUNvZXJjZSBcImNhbnZhc1wiIGVcblxuICBsZXQgY2FwdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwiY2FwdGlvblwiIGVcblxuICBsZXQgY29sIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xcIiBlXG5cbiAgbGV0IGNvbGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xncm91cFwiIGVcblxuICBsZXQgZGVsIGUgPSB1bnNhZmVDb2VyY2UgXCJkZWxcIiBlXG5cbiAgbGV0IGRpdiBlID0gdW5zYWZlQ29lcmNlIFwiZGl2XCIgZVxuXG4gIGxldCBkbCBlID0gdW5zYWZlQ29lcmNlIFwiZGxcIiBlXG5cbiAgbGV0IGZpZWxkc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmaWVsZHNldFwiIGVcblxuICBsZXQgZW1iZWQgZSA9IHVuc2FmZUNvZXJjZSBcImVtYmVkXCIgZVxuXG4gIGxldCBmb3JtIGUgPSB1bnNhZmVDb2VyY2UgXCJmb3JtXCIgZVxuXG4gIGxldCBmcmFtZXNldCBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVzZXRcIiBlXG5cbiAgbGV0IGZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZVwiIGVcblxuICBsZXQgaDEgZSA9IHVuc2FmZUNvZXJjZSBcImgxXCIgZVxuXG4gIGxldCBoMiBlID0gdW5zYWZlQ29lcmNlIFwiaDJcIiBlXG5cbiAgbGV0IGgzIGUgPSB1bnNhZmVDb2VyY2UgXCJoM1wiIGVcblxuICBsZXQgaDQgZSA9IHVuc2FmZUNvZXJjZSBcImg0XCIgZVxuXG4gIGxldCBoNSBlID0gdW5zYWZlQ29lcmNlIFwiaDVcIiBlXG5cbiAgbGV0IGg2IGUgPSB1bnNhZmVDb2VyY2UgXCJoNlwiIGVcblxuICBsZXQgaGVhZCBlID0gdW5zYWZlQ29lcmNlIFwiaGVhZFwiIGVcblxuICBsZXQgaHIgZSA9IHVuc2FmZUNvZXJjZSBcImhyXCIgZVxuXG4gIGxldCBodG1sIGUgPSB1bnNhZmVDb2VyY2UgXCJodG1sXCIgZVxuXG4gIGxldCBpZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImlmcmFtZVwiIGVcblxuICBsZXQgaW1nIGUgPSB1bnNhZmVDb2VyY2UgXCJpbWdcIiBlXG5cbiAgbGV0IGlucHV0IGUgPSB1bnNhZmVDb2VyY2UgXCJpbnB1dFwiIGVcblxuICBsZXQgaW5zIGUgPSB1bnNhZmVDb2VyY2UgXCJpbnNcIiBlXG5cbiAgbGV0IGxhYmVsIGUgPSB1bnNhZmVDb2VyY2UgXCJsYWJlbFwiIGVcblxuICBsZXQgbGVnZW5kIGUgPSB1bnNhZmVDb2VyY2UgXCJsZWdlbmRcIiBlXG5cbiAgbGV0IGxpIGUgPSB1bnNhZmVDb2VyY2UgXCJsaVwiIGVcblxuICBsZXQgbGluayBlID0gdW5zYWZlQ29lcmNlIFwibGlua1wiIGVcblxuICBsZXQgbWFwIGUgPSB1bnNhZmVDb2VyY2UgXCJtYXBcIiBlXG5cbiAgbGV0IG1ldGEgZSA9IHVuc2FmZUNvZXJjZSBcIm1ldGFcIiBlXG5cbiAgbGV0IF9vYmplY3QgZSA9IHVuc2FmZUNvZXJjZSBcIm9iamVjdFwiIGVcblxuICBsZXQgb2wgZSA9IHVuc2FmZUNvZXJjZSBcIm9sXCIgZVxuXG4gIGxldCBvcHRncm91cCBlID0gdW5zYWZlQ29lcmNlIFwib3B0Z3JvdXBcIiBlXG5cbiAgbGV0IG9wdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwib3B0aW9uXCIgZVxuXG4gIGxldCBwIGUgPSB1bnNhZmVDb2VyY2UgXCJwXCIgZVxuXG4gIGxldCBwYXJhbSBlID0gdW5zYWZlQ29lcmNlIFwicGFyYW1cIiBlXG5cbiAgbGV0IHByZSBlID0gdW5zYWZlQ29lcmNlIFwicHJlXCIgZVxuXG4gIGxldCBxIGUgPSB1bnNhZmVDb2VyY2UgXCJxXCIgZVxuXG4gIGxldCBzY3JpcHQgZSA9IHVuc2FmZUNvZXJjZSBcInNjcmlwdFwiIGVcblxuICBsZXQgc2VsZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJzZWxlY3RcIiBlXG5cbiAgbGV0IHN0eWxlIGUgPSB1bnNhZmVDb2VyY2UgXCJzdHlsZVwiIGVcblxuICBsZXQgdGFibGUgZSA9IHVuc2FmZUNvZXJjZSBcInRhYmxlXCIgZVxuXG4gIGxldCB0Ym9keSBlID0gdW5zYWZlQ29lcmNlIFwidGJvZHlcIiBlXG5cbiAgbGV0IHRkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZFwiIGVcblxuICBsZXQgdGV4dGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcInRleHRhcmVhXCIgZVxuXG4gIGxldCB0Zm9vdCBlID0gdW5zYWZlQ29lcmNlIFwidGZvb3RcIiBlXG5cbiAgbGV0IHRoIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aFwiIGVcblxuICBsZXQgdGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcInRoZWFkXCIgZVxuXG4gIGxldCB0aXRsZSBlID0gdW5zYWZlQ29lcmNlIFwidGl0bGVcIiBlXG5cbiAgbGV0IHRyIGUgPSB1bnNhZmVDb2VyY2UgXCJ0clwiIGVcblxuICBsZXQgdWwgZSA9IHVuc2FmZUNvZXJjZSBcInVsXCIgZVxuXG4gIGxldCBhdWRpbyBlID0gdW5zYWZlQ29lcmNlIFwiYXVkaW9cIiBlXG5cbiAgbGV0IHZpZGVvIGUgPSB1bnNhZmVDb2VyY2UgXCJ2aWRlb1wiIGVcblxuICBsZXQgdW5zYWZlQ29lcmNlRXZlbnQgY29uc3RyIChldiA6ICNldmVudCB0KSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKGRlZiBjb25zdHIpICYmIEpzLmluc3RhbmNlb2YgZXYgY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGV2KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBtb3VzZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZUV2ZW50IGV2XG5cbiAgbGV0IGtleWJvYXJkRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX0tleWJvYXJkRXZlbnQgZXZcblxuICBsZXQgd2hlZWxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2hlZWxFdmVudCBldlxuXG4gIGxldCBtb3VzZVNjcm9sbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZVNjcm9sbEV2ZW50IGV2XG5cbiAgbGV0IHBvcFN0YXRlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BvcFN0YXRlRXZlbnQgZXZcblxuICBsZXQgbWVzc2FnZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9NZXNzYWdlRXZlbnQgZXZcbmVuZFxuXG4oKioqKilcblxubGV0IGV2ZW50VGFyZ2V0ID0gRG9tLmV2ZW50VGFyZ2V0XG5cbmxldCBldmVudFJlbGF0ZWRUYXJnZXQgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5nZXQgZSMjLnJlbGF0ZWRUYXJnZXQgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggSnMudG9fc3RyaW5nIGUjIy5fdHlwZSB3aXRoXG4gICAgICB8IFwibW91c2VvdmVyXCIgLT4gT3B0ZGVmLmdldCBlIyMuZnJvbUVsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IFwibW91c2VvdXRcIiAtPiBPcHRkZWYuZ2V0IGUjIy50b0VsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IF8gLT4gSnMubnVsbClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCBlIyMuY2xpZW50WCArIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnRcbiAgLCBlIyMuY2xpZW50WSArIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wIClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbiAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMucGFnZVhcbiAgICAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSlcbiAgICAoZnVuIHggLT4gT3B0ZGVmLmNhc2UgZSMjLnBhZ2VZIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKSAoZnVuIHkgLT4geCwgeSkpXG5cbmxldCBlbGVtZW50Q2xpZW50UG9zaXRpb24gKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCByID0gZSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLmxlZnQpIC0gYm9keSMjLmNsaWVudExlZnQgLSBodG1sIyMuY2xpZW50TGVmdFxuICAsIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMudG9wKSAtIGJvZHkjIy5jbGllbnRUb3AgLSBodG1sIyMuY2xpZW50VG9wIClcblxubGV0IGdldERvY3VtZW50U2Nyb2xsICgpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0LCBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcFxuXG5sZXQgYnV0dG9uUHJlc3NlZCAoZXYgOiAjbW91c2VFdmVudCBKcy50KSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgZXYjIy53aGljaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIGV2IyMuYnV0dG9uIHdpdGhcbiAgICAgIHwgMSAtPiBMZWZ0X2J1dHRvblxuICAgICAgfCAyIC0+IFJpZ2h0X2J1dHRvblxuICAgICAgfCA0IC0+IE1pZGRsZV9idXR0b25cbiAgICAgIHwgXyAtPiBOb19idXR0b24pXG4gICAgKGZ1biB4IC0+IHgpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgID9jYXB0dXJlXG4gICAgP29uY2VcbiAgICA/cGFzc2l2ZVxuICAgIGVcbiAgICBFdmVudC53aGVlbFxuICAgIChoYW5kbGVyIChmdW4gKGUgOiBtb3VzZXdoZWVsRXZlbnQgdCkgLT5cbiAgICAgICAgIGxldCBkeCA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWCAoZnVuICgpIC0+IDApIC8gNDAgaW5cbiAgICAgICAgIGxldCBkeSA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWSAoZnVuICgpIC0+IGUjIy53aGVlbERlbHRhKSAvIDQwIGluXG4gICAgICAgICBoIChlIDo+IG1vdXNlRXZlbnQgdCkgfmR4IH5keSkpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lciBlIGggY2FwdCA9XG4gIGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgfmNhcHR1cmU6Y2FwdCBlIGhcblxuKCoqKioqKVxuXG5tb2R1bGUgS2V5Ym9hcmRfY29kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVW5pZGVudGlmaWVkXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBLZXlBXG4gICAgfCBLZXlCXG4gICAgfCBLZXlDXG4gICAgfCBLZXlEXG4gICAgfCBLZXlFXG4gICAgfCBLZXlGXG4gICAgfCBLZXlHXG4gICAgfCBLZXlIXG4gICAgfCBLZXlJXG4gICAgfCBLZXlKXG4gICAgfCBLZXlLXG4gICAgfCBLZXlMXG4gICAgfCBLZXlNXG4gICAgfCBLZXlOXG4gICAgfCBLZXlPXG4gICAgfCBLZXlQXG4gICAgfCBLZXlRXG4gICAgfCBLZXlSXG4gICAgfCBLZXlTXG4gICAgfCBLZXlUXG4gICAgfCBLZXlVXG4gICAgfCBLZXlWXG4gICAgfCBLZXlXXG4gICAgfCBLZXlYXG4gICAgfCBLZXlZXG4gICAgfCBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBEaWdpdDBcbiAgICB8IERpZ2l0MVxuICAgIHwgRGlnaXQyXG4gICAgfCBEaWdpdDNcbiAgICB8IERpZ2l0NFxuICAgIHwgRGlnaXQ1XG4gICAgfCBEaWdpdDZcbiAgICB8IERpZ2l0N1xuICAgIHwgRGlnaXQ4XG4gICAgfCBEaWdpdDlcbiAgICB8IE1pbnVzXG4gICAgfCBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFRhYlxuICAgIHwgRW50ZXJcbiAgICB8IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgRXNjYXBlXG4gICAgfCBCYWNrc3BhY2VcbiAgICB8IEluc2VydFxuICAgIHwgRGVsZXRlXG4gICAgfCBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBCcmFja2V0TGVmdFxuICAgIHwgQnJhY2tldFJpZ2h0XG4gICAgfCBTZW1pY29sb25cbiAgICB8IFF1b3RlXG4gICAgfCBCYWNrcXVvdGVcbiAgICB8IEJhY2tzbGFzaFxuICAgIHwgQ29tbWFcbiAgICB8IFBlcmlvZFxuICAgIHwgU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBGMVxuICAgIHwgRjJcbiAgICB8IEYzXG4gICAgfCBGNFxuICAgIHwgRjVcbiAgICB8IEY2XG4gICAgfCBGN1xuICAgIHwgRjhcbiAgICB8IEY5XG4gICAgfCBGMTBcbiAgICB8IEYxMVxuICAgIHwgRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IE51bXBhZDBcbiAgICB8IE51bXBhZDFcbiAgICB8IE51bXBhZDJcbiAgICB8IE51bXBhZDNcbiAgICB8IE51bXBhZDRcbiAgICB8IE51bXBhZDVcbiAgICB8IE51bXBhZDZcbiAgICB8IE51bXBhZDdcbiAgICB8IE51bXBhZDhcbiAgICB8IE51bXBhZDlcbiAgICB8IE51bXBhZE11bHRpcGx5XG4gICAgfCBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgTnVtcGFkQWRkXG4gICAgfCBOdW1wYWREZWNpbWFsXG4gICAgfCBOdW1wYWRFcXVhbFxuICAgIHwgTnVtcGFkRW50ZXJcbiAgICB8IE51bXBhZERpdmlkZVxuICAgIHwgTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IENvbnRyb2xMZWZ0XG4gICAgfCBDb250cm9sUmlnaHRcbiAgICB8IE1ldGFMZWZ0XG4gICAgfCBNZXRhUmlnaHRcbiAgICB8IFNoaWZ0TGVmdFxuICAgIHwgU2hpZnRSaWdodFxuICAgIHwgQWx0TGVmdFxuICAgIHwgQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBBcnJvd0xlZnRcbiAgICB8IEFycm93UmlnaHRcbiAgICB8IEFycm93VXBcbiAgICB8IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFBhZ2VVcFxuICAgIHwgUGFnZURvd25cbiAgICB8IEhvbWVcbiAgICB8IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBWb2x1bWVNdXRlXG4gICAgfCBWb2x1bWVEb3duXG4gICAgfCBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBNZWRpYVBsYXlQYXVzZVxuICAgIHwgTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBDb250ZXh0TWVudVxuICAgIHwgQnJvd3NlclNlYXJjaFxuICAgIHwgQnJvd3NlckhvbWVcbiAgICB8IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBCcm93c2VyU3RvcFxuICAgIHwgQnJvd3NlckZvcndhcmRcbiAgICB8IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgT1NMZWZ0XG4gICAgfCBPU1JpZ2h0XG4gICAgfCBTY3JvbGxMb2NrXG4gICAgfCBQcmludFNjcmVlblxuICAgIHwgSW50bEJhY2tzbGFzaFxuICAgIHwgSW50bFllblxuICAgIHwgUGF1c2VcblxuICBsZXQgdHJ5X2NvZGUgdiA9XG4gICAgbWF0Y2ggSnMudG9fc3RyaW5nIHYgd2l0aFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgXCJLZXlBXCIgLT4gS2V5QVxuICAgIHwgXCJLZXlCXCIgLT4gS2V5QlxuICAgIHwgXCJLZXlDXCIgLT4gS2V5Q1xuICAgIHwgXCJLZXlEXCIgLT4gS2V5RFxuICAgIHwgXCJLZXlFXCIgLT4gS2V5RVxuICAgIHwgXCJLZXlGXCIgLT4gS2V5RlxuICAgIHwgXCJLZXlHXCIgLT4gS2V5R1xuICAgIHwgXCJLZXlIXCIgLT4gS2V5SFxuICAgIHwgXCJLZXlJXCIgLT4gS2V5SVxuICAgIHwgXCJLZXlKXCIgLT4gS2V5SlxuICAgIHwgXCJLZXlLXCIgLT4gS2V5S1xuICAgIHwgXCJLZXlMXCIgLT4gS2V5TFxuICAgIHwgXCJLZXlNXCIgLT4gS2V5TVxuICAgIHwgXCJLZXlOXCIgLT4gS2V5TlxuICAgIHwgXCJLZXlPXCIgLT4gS2V5T1xuICAgIHwgXCJLZXlQXCIgLT4gS2V5UFxuICAgIHwgXCJLZXlRXCIgLT4gS2V5UVxuICAgIHwgXCJLZXlSXCIgLT4gS2V5UlxuICAgIHwgXCJLZXlTXCIgLT4gS2V5U1xuICAgIHwgXCJLZXlUXCIgLT4gS2V5VFxuICAgIHwgXCJLZXlVXCIgLT4gS2V5VVxuICAgIHwgXCJLZXlWXCIgLT4gS2V5VlxuICAgIHwgXCJLZXlXXCIgLT4gS2V5V1xuICAgIHwgXCJLZXlYXCIgLT4gS2V5WFxuICAgIHwgXCJLZXlZXCIgLT4gS2V5WVxuICAgIHwgXCJLZXlaXCIgLT4gS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgXCJEaWdpdDBcIiAtPiBEaWdpdDBcbiAgICB8IFwiRGlnaXQxXCIgLT4gRGlnaXQxXG4gICAgfCBcIkRpZ2l0MlwiIC0+IERpZ2l0MlxuICAgIHwgXCJEaWdpdDNcIiAtPiBEaWdpdDNcbiAgICB8IFwiRGlnaXQ0XCIgLT4gRGlnaXQ0XG4gICAgfCBcIkRpZ2l0NVwiIC0+IERpZ2l0NVxuICAgIHwgXCJEaWdpdDZcIiAtPiBEaWdpdDZcbiAgICB8IFwiRGlnaXQ3XCIgLT4gRGlnaXQ3XG4gICAgfCBcIkRpZ2l0OFwiIC0+IERpZ2l0OFxuICAgIHwgXCJEaWdpdDlcIiAtPiBEaWdpdDlcbiAgICB8IFwiTWludXNcIiAtPiBNaW51c1xuICAgIHwgXCJFcXVhbFwiIC0+IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgXCJUYWJcIiAtPiBUYWJcbiAgICB8IFwiRW50ZXJcIiAtPiBFbnRlclxuICAgIHwgXCJTcGFjZVwiIC0+IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgXCJFc2NhcGVcIiAtPiBFc2NhcGVcbiAgICB8IFwiQmFja3NwYWNlXCIgLT4gQmFja3NwYWNlXG4gICAgfCBcIkluc2VydFwiIC0+IEluc2VydFxuICAgIHwgXCJEZWxldGVcIiAtPiBEZWxldGVcbiAgICB8IFwiQ2Fwc0xvY2tcIiAtPiBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBcIkJyYWNrZXRMZWZ0XCIgLT4gQnJhY2tldExlZnRcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCBcIlNlbWljb2xvblwiIC0+IFNlbWljb2xvblxuICAgIHwgXCJRdW90ZVwiIC0+IFF1b3RlXG4gICAgfCBcIkJhY2txdW90ZVwiIC0+IEJhY2txdW90ZVxuICAgIHwgXCJCYWNrc2xhc2hcIiAtPiBCYWNrc2xhc2hcbiAgICB8IFwiQ29tbWFcIiAtPiBDb21tYVxuICAgIHwgXCJQZXJpb2RcIiAtPiBQZXJpb2RcbiAgICB8IFwiU2xhc2hcIiAtPiBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IFwiRjFcIiAtPiBGMVxuICAgIHwgXCJGMlwiIC0+IEYyXG4gICAgfCBcIkYzXCIgLT4gRjNcbiAgICB8IFwiRjRcIiAtPiBGNFxuICAgIHwgXCJGNVwiIC0+IEY1XG4gICAgfCBcIkY2XCIgLT4gRjZcbiAgICB8IFwiRjdcIiAtPiBGN1xuICAgIHwgXCJGOFwiIC0+IEY4XG4gICAgfCBcIkY5XCIgLT4gRjlcbiAgICB8IFwiRjEwXCIgLT4gRjEwXG4gICAgfCBcIkYxMVwiIC0+IEYxMVxuICAgIHwgXCJGMTJcIiAtPiBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgXCJOdW1wYWQwXCIgLT4gTnVtcGFkMFxuICAgIHwgXCJOdW1wYWQxXCIgLT4gTnVtcGFkMVxuICAgIHwgXCJOdW1wYWQyXCIgLT4gTnVtcGFkMlxuICAgIHwgXCJOdW1wYWQzXCIgLT4gTnVtcGFkM1xuICAgIHwgXCJOdW1wYWQ0XCIgLT4gTnVtcGFkNFxuICAgIHwgXCJOdW1wYWQ1XCIgLT4gTnVtcGFkNVxuICAgIHwgXCJOdW1wYWQ2XCIgLT4gTnVtcGFkNlxuICAgIHwgXCJOdW1wYWQ3XCIgLT4gTnVtcGFkN1xuICAgIHwgXCJOdW1wYWQ4XCIgLT4gTnVtcGFkOFxuICAgIHwgXCJOdW1wYWQ5XCIgLT4gTnVtcGFkOVxuICAgIHwgXCJOdW1wYWRNdWx0aXBseVwiIC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCBcIk51bXBhZFN1YnRyYWN0XCIgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IFwiTnVtcGFkQWRkXCIgLT4gTnVtcGFkQWRkXG4gICAgfCBcIk51bXBhZERlY2ltYWxcIiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCBcIk51bXBhZEVxdWFsXCIgLT4gTnVtcGFkRXF1YWxcbiAgICB8IFwiTnVtcGFkRW50ZXJcIiAtPiBOdW1wYWRFbnRlclxuICAgIHwgXCJOdW1wYWREaXZpZGVcIiAtPiBOdW1wYWREaXZpZGVcbiAgICB8IFwiTnVtTG9ja1wiIC0+IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBcIkNvbnRyb2xMZWZ0XCIgLT4gQ29udHJvbExlZnRcbiAgICB8IFwiQ29udHJvbFJpZ2h0XCIgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCBcIk1ldGFMZWZ0XCIgLT4gTWV0YUxlZnRcbiAgICB8IFwiTWV0YVJpZ2h0XCIgLT4gTWV0YVJpZ2h0XG4gICAgfCBcIlNoaWZ0TGVmdFwiIC0+IFNoaWZ0TGVmdFxuICAgIHwgXCJTaGlmdFJpZ2h0XCIgLT4gU2hpZnRSaWdodFxuICAgIHwgXCJBbHRMZWZ0XCIgLT4gQWx0TGVmdFxuICAgIHwgXCJBbHRSaWdodFwiIC0+IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgXCJBcnJvd0xlZnRcIiAtPiBBcnJvd0xlZnRcbiAgICB8IFwiQXJyb3dSaWdodFwiIC0+IEFycm93UmlnaHRcbiAgICB8IFwiQXJyb3dVcFwiIC0+IEFycm93VXBcbiAgICB8IFwiQXJyb3dEb3duXCIgLT4gQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgXCJQYWdlVXBcIiAtPiBQYWdlVXBcbiAgICB8IFwiUGFnZURvd25cIiAtPiBQYWdlRG93blxuICAgIHwgXCJIb21lXCIgLT4gSG9tZVxuICAgIHwgXCJFbmRcIiAtPiBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgXCJWb2x1bWVNdXRlXCIgLT4gVm9sdW1lTXV0ZVxuICAgIHwgXCJWb2x1bWVEb3duXCIgLT4gVm9sdW1lRG93blxuICAgIHwgXCJWb2x1bWVVcFwiIC0+IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IFwiTWVkaWFUcmFja1ByZXZpb3VzXCIgLT4gTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBcIk1lZGlhVHJhY2tOZXh0XCIgLT4gTWVkaWFUcmFja05leHRcbiAgICB8IFwiTWVkaWFQbGF5UGF1c2VcIiAtPiBNZWRpYVBsYXlQYXVzZVxuICAgIHwgXCJNZWRpYVN0b3BcIiAtPiBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IFwiQ29udGV4dE1lbnVcIiAtPiBDb250ZXh0TWVudVxuICAgIHwgXCJCcm93c2VyU2VhcmNoXCIgLT4gQnJvd3NlclNlYXJjaFxuICAgIHwgXCJCcm93c2VySG9tZVwiIC0+IEJyb3dzZXJIb21lXG4gICAgfCBcIkJyb3dzZXJGYXZvcml0ZXNcIiAtPiBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBcIkJyb3dzZXJSZWZyZXNoXCIgLT4gQnJvd3NlclJlZnJlc2hcbiAgICB8IFwiQnJvd3NlclN0b3BcIiAtPiBCcm93c2VyU3RvcFxuICAgIHwgXCJCcm93c2VyRm9yd2FyZFwiIC0+IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBcIkJyb3dzZXJCYWNrXCIgLT4gQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBcIk9TTGVmdFwiIC0+IE9TTGVmdFxuICAgIHwgXCJPU1JpZ2h0XCIgLT4gT1NSaWdodFxuICAgIHwgXCJTY3JvbGxMb2NrXCIgLT4gU2Nyb2xsTG9ja1xuICAgIHwgXCJQcmludFNjcmVlblwiIC0+IFByaW50U2NyZWVuXG4gICAgfCBcIkludGxCYWNrc2xhc2hcIiAtPiBJbnRsQmFja3NsYXNoXG4gICAgfCBcIkludGxZZW5cIiAtPiBJbnRsWWVuXG4gICAgfCBcIlBhdXNlXCIgLT4gUGF1c2VcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9sZWZ0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0TGVmdFxuICAgIHwgMTcgLT4gQ29udHJvbExlZnRcbiAgICB8IDE4IC0+IEFsdExlZnRcbiAgICB8IDkxIC0+IE1ldGFMZWZ0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRSaWdodFxuICAgIHwgMTcgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCAxOCAtPiBBbHRSaWdodFxuICAgIHwgOTEgLT4gTWV0YVJpZ2h0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbnVtcGFkID0gZnVuY3Rpb25cbiAgICB8IDQ2IC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDQ1IC0+IE51bXBhZDBcbiAgICB8IDM1IC0+IE51bXBhZDFcbiAgICB8IDQwIC0+IE51bXBhZDJcbiAgICB8IDM0IC0+IE51bXBhZDNcbiAgICB8IDM3IC0+IE51bXBhZDRcbiAgICB8IDEyIC0+IE51bXBhZDVcbiAgICB8IDM5IC0+IE51bXBhZDZcbiAgICB8IDM2IC0+IE51bXBhZDdcbiAgICB8IDM4IC0+IE51bXBhZDhcbiAgICB8IDMzIC0+IE51bXBhZDlcbiAgICB8IDEzIC0+IE51bXBhZEVudGVyXG4gICAgfCAxMTEgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCAxMDcgLT4gTnVtcGFkQWRkXG4gICAgfCAxMDkgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IDEwNiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgMTEwIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDk2IC0+IE51bXBhZDBcbiAgICB8IDk3IC0+IE51bXBhZDFcbiAgICB8IDk4IC0+IE51bXBhZDJcbiAgICB8IDk5IC0+IE51bXBhZDNcbiAgICB8IDEwMCAtPiBOdW1wYWQ0XG4gICAgfCAxMDEgLT4gTnVtcGFkNVxuICAgIHwgMTAyIC0+IE51bXBhZDZcbiAgICB8IDEwMyAtPiBOdW1wYWQ3XG4gICAgfCAxMDQgLT4gTnVtcGFkOFxuICAgIHwgMTA1IC0+IE51bXBhZDlcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9ub3JtYWwgPSBmdW5jdGlvblxuICAgIHwgMjcgLT4gRXNjYXBlXG4gICAgfCAxMTIgLT4gRjFcbiAgICB8IDExMyAtPiBGMlxuICAgIHwgMTE0IC0+IEYzXG4gICAgfCAxMTUgLT4gRjRcbiAgICB8IDExNiAtPiBGNVxuICAgIHwgMTE3IC0+IEY2XG4gICAgfCAxMTggLT4gRjdcbiAgICB8IDExOSAtPiBGOFxuICAgIHwgMTIwIC0+IEY5XG4gICAgfCAxMjEgLT4gRjEwXG4gICAgfCAxMjIgLT4gRjExXG4gICAgfCAxMjMgLT4gRjEyXG4gICAgfCA0MiAtPiBQcmludFNjcmVlblxuICAgIHwgMTQ1IC0+IFNjcm9sbExvY2tcbiAgICB8IDE5IC0+IFBhdXNlXG4gICAgfCAxOTIgLT4gQmFja3F1b3RlXG4gICAgfCA0OSAtPiBEaWdpdDFcbiAgICB8IDUwIC0+IERpZ2l0MlxuICAgIHwgNTEgLT4gRGlnaXQzXG4gICAgfCA1MiAtPiBEaWdpdDRcbiAgICB8IDUzIC0+IERpZ2l0NVxuICAgIHwgNTQgLT4gRGlnaXQ2XG4gICAgfCA1NSAtPiBEaWdpdDdcbiAgICB8IDU2IC0+IERpZ2l0OFxuICAgIHwgNTcgLT4gRGlnaXQ5XG4gICAgfCA0OCAtPiBEaWdpdDBcbiAgICB8IDE4OSAtPiBNaW51c1xuICAgIHwgMTg3IC0+IEVxdWFsXG4gICAgfCA4IC0+IEJhY2tzcGFjZVxuICAgIHwgOSAtPiBUYWJcbiAgICB8IDgxIC0+IEtleVFcbiAgICB8IDg3IC0+IEtleVdcbiAgICB8IDY5IC0+IEtleUVcbiAgICB8IDgyIC0+IEtleVJcbiAgICB8IDg0IC0+IEtleVRcbiAgICB8IDg5IC0+IEtleVlcbiAgICB8IDg1IC0+IEtleVVcbiAgICB8IDczIC0+IEtleUlcbiAgICB8IDc5IC0+IEtleU9cbiAgICB8IDgwIC0+IEtleVBcbiAgICB8IDIxOSAtPiBCcmFja2V0TGVmdFxuICAgIHwgMjIxIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgMjIwIC0+IEJhY2tzbGFzaFxuICAgIHwgMjAgLT4gQ2Fwc0xvY2tcbiAgICB8IDY1IC0+IEtleUFcbiAgICB8IDgzIC0+IEtleVNcbiAgICB8IDY4IC0+IEtleURcbiAgICB8IDcwIC0+IEtleUZcbiAgICB8IDcxIC0+IEtleUdcbiAgICB8IDcyIC0+IEtleUhcbiAgICB8IDc0IC0+IEtleUpcbiAgICB8IDc1IC0+IEtleUtcbiAgICB8IDc2IC0+IEtleUxcbiAgICB8IDE4NiAtPiBTZW1pY29sb25cbiAgICB8IDIyMiAtPiBRdW90ZVxuICAgIHwgMTMgLT4gRW50ZXJcbiAgICB8IDkwIC0+IEtleVpcbiAgICB8IDg4IC0+IEtleVhcbiAgICB8IDY3IC0+IEtleUNcbiAgICB8IDg2IC0+IEtleVZcbiAgICB8IDY2IC0+IEtleUJcbiAgICB8IDc4IC0+IEtleU5cbiAgICB8IDc3IC0+IEtleU1cbiAgICB8IDE4OCAtPiBDb21tYVxuICAgIHwgMTkwIC0+IFBlcmlvZFxuICAgIHwgMTkxIC0+IFNsYXNoXG4gICAgfCAzMiAtPiBTcGFjZVxuICAgIHwgOTMgLT4gQ29udGV4dE1lbnVcbiAgICB8IDQ1IC0+IEluc2VydFxuICAgIHwgMzYgLT4gSG9tZVxuICAgIHwgMzMgLT4gUGFnZVVwXG4gICAgfCA0NiAtPiBEZWxldGVcbiAgICB8IDM1IC0+IEVuZFxuICAgIHwgMzQgLT4gUGFnZURvd25cbiAgICB8IDM3IC0+IEFycm93TGVmdFxuICAgIHwgNDAgLT4gQXJyb3dEb3duXG4gICAgfCAzOSAtPiBBcnJvd1JpZ2h0XG4gICAgfCAzOCAtPiBBcnJvd1VwXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCBtYWtlX3VuaWRlbnRpZmllZCBfID0gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IE9wdGRlZi5jYXNlIHZhbHVlIG1ha2VfdW5pZGVudGlmaWVkIGZcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBydW5fbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBmIHZhbHVlXG4gICAgfCB2IC0+IHZcblxuICBsZXQgZ2V0X2tleV9jb2RlIGV2dCA9IGV2dCMjLmtleUNvZGVcblxuICBsZXQgdHJ5X2tleV9sb2NhdGlvbiBldnQgPVxuICAgIG1hdGNoIGV2dCMjLmxvY2F0aW9uIHdpdGhcbiAgICB8IDEgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9sZWZ0XG4gICAgfCAyIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfcmlnaHRcbiAgICB8IDMgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9udW1wYWRcbiAgICB8IF8gLT4gbWFrZV91bmlkZW50aWZpZWRcblxuICBsZXQgKCB8PiApIHggZiA9IGYgeFxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIFVuaWRlbnRpZmllZFxuICAgIHw+IHRyeV9uZXh0IGV2dCMjLmNvZGUgdHJ5X2NvZGVcbiAgICB8PiB0cnlfa2V5X2xvY2F0aW9uIGV2dFxuICAgIHw+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5cbiAgbGV0IG9mX2tleV9jb2RlID0gdHJ5X2tleV9jb2RlX25vcm1hbFxuZW5kXG5cbm1vZHVsZSBLZXlib2FyZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVWNoYXIudCBvcHRpb25cblxuICBsZXQgY2hhcl9vZl9pbnQgdmFsdWUgPVxuICAgIGlmIDAgPCB2YWx1ZSB0aGVuIHRyeSBTb21lIChVY2hhci5vZl9pbnQgdmFsdWUpIHdpdGggXyAtPiBOb25lIGVsc2UgTm9uZVxuXG4gIGxldCBlbXB0eV9zdHJpbmcgXyA9IEpzLnN0cmluZyBcIlwiXG5cbiAgbGV0IG5vbmUgXyA9IE5vbmVcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBsZXQga2V5ID0gT3B0ZGVmLmdldCBldnQjIy5rZXkgZW1wdHlfc3RyaW5nIGluXG4gICAgbWF0Y2gga2V5IyMubGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gT3B0ZGVmLmNhc2UgZXZ0IyMuY2hhckNvZGUgbm9uZSBjaGFyX29mX2ludFxuICAgIHwgMSAtPiBjaGFyX29mX2ludCAoaW50X29mX2Zsb2F0IChKcy50b19mbG9hdCAoa2V5IyNjaGFyQ29kZUF0IDApKSlcbiAgICB8IF8gLT4gTm9uZVxuZW5kXG5cbigqKioqKilcblxubGV0IGVsZW1lbnQgOiAjRG9tLmVsZW1lbnQgdCAtPiBlbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbnR5cGUgdGFnZ2VkRWxlbWVudCA9XG4gIHwgQSBvZiBhbmNob3JFbGVtZW50IHRcbiAgfCBBcmVhIG9mIGFyZWFFbGVtZW50IHRcbiAgfCBBdWRpbyBvZiBhdWRpb0VsZW1lbnQgdFxuICB8IEJhc2Ugb2YgYmFzZUVsZW1lbnQgdFxuICB8IEJsb2NrcXVvdGUgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBCb2R5IG9mIGJvZHlFbGVtZW50IHRcbiAgfCBCciBvZiBickVsZW1lbnQgdFxuICB8IEJ1dHRvbiBvZiBidXR0b25FbGVtZW50IHRcbiAgfCBDYW52YXMgb2YgY2FudmFzRWxlbWVudCB0XG4gIHwgQ2FwdGlvbiBvZiB0YWJsZUNhcHRpb25FbGVtZW50IHRcbiAgfCBDb2wgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBDb2xncm91cCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IERlbCBvZiBtb2RFbGVtZW50IHRcbiAgfCBEaXYgb2YgZGl2RWxlbWVudCB0XG4gIHwgRGwgb2YgZExpc3RFbGVtZW50IHRcbiAgfCBFbWJlZCBvZiBlbWJlZEVsZW1lbnQgdFxuICB8IEZpZWxkc2V0IG9mIGZpZWxkU2V0RWxlbWVudCB0XG4gIHwgRm9ybSBvZiBmb3JtRWxlbWVudCB0XG4gIHwgRnJhbWVzZXQgb2YgZnJhbWVTZXRFbGVtZW50IHRcbiAgfCBGcmFtZSBvZiBmcmFtZUVsZW1lbnQgdFxuICB8IEgxIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDMgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg0IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDYgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEhlYWQgb2YgaGVhZEVsZW1lbnQgdFxuICB8IEhyIG9mIGhyRWxlbWVudCB0XG4gIHwgSHRtbCBvZiBodG1sRWxlbWVudCB0XG4gIHwgSWZyYW1lIG9mIGlGcmFtZUVsZW1lbnQgdFxuICB8IEltZyBvZiBpbWFnZUVsZW1lbnQgdFxuICB8IElucHV0IG9mIGlucHV0RWxlbWVudCB0XG4gIHwgSW5zIG9mIG1vZEVsZW1lbnQgdFxuICB8IExhYmVsIG9mIGxhYmVsRWxlbWVudCB0XG4gIHwgTGVnZW5kIG9mIGxlZ2VuZEVsZW1lbnQgdFxuICB8IExpIG9mIGxpRWxlbWVudCB0XG4gIHwgTGluayBvZiBsaW5rRWxlbWVudCB0XG4gIHwgTWFwIG9mIG1hcEVsZW1lbnQgdFxuICB8IE1ldGEgb2YgbWV0YUVsZW1lbnQgdFxuICB8IE9iamVjdCBvZiBvYmplY3RFbGVtZW50IHRcbiAgfCBPbCBvZiBvTGlzdEVsZW1lbnQgdFxuICB8IE9wdGdyb3VwIG9mIG9wdEdyb3VwRWxlbWVudCB0XG4gIHwgT3B0aW9uIG9mIG9wdGlvbkVsZW1lbnQgdFxuICB8IFAgb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQYXJhbSBvZiBwYXJhbUVsZW1lbnQgdFxuICB8IFByZSBvZiBwcmVFbGVtZW50IHRcbiAgfCBRIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgU2NyaXB0IG9mIHNjcmlwdEVsZW1lbnQgdFxuICB8IFNlbGVjdCBvZiBzZWxlY3RFbGVtZW50IHRcbiAgfCBTdHlsZSBvZiBzdHlsZUVsZW1lbnQgdFxuICB8IFRhYmxlIG9mIHRhYmxlRWxlbWVudCB0XG4gIHwgVGJvZHkgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGQgb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGV4dGFyZWEgb2YgdGV4dEFyZWFFbGVtZW50IHRcbiAgfCBUZm9vdCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUaGVhZCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaXRsZSBvZiB0aXRsZUVsZW1lbnQgdFxuICB8IFRyIG9mIHRhYmxlUm93RWxlbWVudCB0XG4gIHwgVWwgb2YgdUxpc3RFbGVtZW50IHRcbiAgfCBWaWRlbyBvZiB2aWRlb0VsZW1lbnQgdFxuICB8IE90aGVyIG9mIGVsZW1lbnQgdFxuXG5sZXQgb3RoZXIgZSA9IE90aGVyIChlIDogI2VsZW1lbnQgdCA6PiBlbGVtZW50IHQpXG5cbmxldCB0YWdnZWQgKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCB0YWcgPSBKcy50b19ieXRlc3RyaW5nIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDBcbiAgdGhlbiBvdGhlciBlXG4gIGVsc2VcbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCB0YWcgMCB3aXRoXG4gICAgfCAnYScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYVwiIC0+IEEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImFyZWFcIiAtPiBBcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhdWRpb1wiIC0+IEF1ZGlvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2InIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImJhc2VcIiAtPiBCYXNlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJibG9ja3F1b3RlXCIgLT4gQmxvY2txdW90ZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYm9keVwiIC0+IEJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJyXCIgLT4gQnIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJ1dHRvblwiIC0+IEJ1dHRvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdjJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJjYW52YXNcIiAtPiBDYW52YXMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNhcHRpb25cIiAtPiBDYXB0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xcIiAtPiBDb2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbGdyb3VwXCIgLT4gQ29sZ3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZGVsXCIgLT4gRGVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkaXZcIiAtPiBEaXYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRsXCIgLT4gRGwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZW1iZWRcIiAtPiBFbWJlZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdmJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJmaWVsZHNldFwiIC0+IEZpZWxkc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmb3JtXCIgLT4gRm9ybSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVzZXRcIiAtPiBGcmFtZXNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVcIiAtPiBGcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdoJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJoMVwiIC0+IEgxIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoMlwiIC0+IEgyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoM1wiIC0+IEgzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNFwiIC0+IEg0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNVwiIC0+IEg1IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNlwiIC0+IEg2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoZWFkXCIgLT4gSGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHJcIiAtPiBIciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHRtbFwiIC0+IEh0bWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaWZyYW1lXCIgLT4gSWZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbWdcIiAtPiBJbWcgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImlucHV0XCIgLT4gSW5wdXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImluc1wiIC0+IElucyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdsJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJsYWJlbFwiIC0+IExhYmVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsZWdlbmRcIiAtPiBMZWdlbmQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpXCIgLT4gTGkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpbmtcIiAtPiBMaW5rIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ20nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm1hcFwiIC0+IE1hcCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibWV0YVwiIC0+IE1ldGEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwib2JqZWN0XCIgLT4gT2JqZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvbFwiIC0+IE9sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRncm91cFwiIC0+IE9wdGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRpb25cIiAtPiBPcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicFwiIC0+IFAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInBhcmFtXCIgLT4gUGFyYW0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInByZVwiIC0+IFByZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdxJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJxXCIgLT4gUSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdzJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJzY3JpcHRcIiAtPiBTY3JpcHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInNlbGVjdFwiIC0+IFNlbGVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic3R5bGVcIiAtPiBTdHlsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd0JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ0YWJsZVwiIC0+IFRhYmxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Ym9keVwiIC0+IFRib2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZFwiIC0+IFRkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZXh0YXJlYVwiIC0+IFRleHRhcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Zm9vdFwiIC0+IFRmb290IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aFwiIC0+IFRoIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aGVhZFwiIC0+IFRoZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aXRsZVwiIC0+IFRpdGxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0clwiIC0+IFRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInVsXCIgLT4gVWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidmlkZW9cIiAtPiBWaWRlbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8IF8gLT4gb3RoZXIgZVxuXG5sZXQgb3B0X3RhZ2dlZCBlID0gT3B0LmNhc2UgZSAoZnVuICgpIC0+IE5vbmUpIChmdW4gZSAtPiBTb21lICh0YWdnZWQgZSkpXG5cbnR5cGUgdGFnZ2VkRXZlbnQgPVxuICB8IE1vdXNlRXZlbnQgb2YgbW91c2VFdmVudCB0XG4gIHwgS2V5Ym9hcmRFdmVudCBvZiBrZXlib2FyZEV2ZW50IHRcbiAgfCBNZXNzYWdlRXZlbnQgb2YgbWVzc2FnZUV2ZW50IHRcbiAgfCBNb3VzZXdoZWVsRXZlbnQgb2YgbW91c2V3aGVlbEV2ZW50IHRcbiAgfCBNb3VzZVNjcm9sbEV2ZW50IG9mIG1vdXNlU2Nyb2xsRXZlbnQgdFxuICB8IFBvcFN0YXRlRXZlbnQgb2YgcG9wU3RhdGVFdmVudCB0XG4gIHwgT3RoZXJFdmVudCBvZiBldmVudCB0XG5cbmxldCB0YWdnZWRFdmVudCAoZXYgOiAjZXZlbnQgSnMudCkgPVxuICBKcy5PcHQuY2FzZVxuICAgIChDb2VyY2VUby5tb3VzZUV2ZW50IGV2KVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChDb2VyY2VUby5rZXlib2FyZEV2ZW50IGV2KVxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChDb2VyY2VUby53aGVlbEV2ZW50IGV2KVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgIChDb2VyY2VUby5tb3VzZVNjcm9sbEV2ZW50IGV2KVxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5wb3BTdGF0ZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5tZXNzYWdlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IE90aGVyRXZlbnQgKGV2IDo+IGV2ZW50IHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNZXNzYWdlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IFBvcFN0YXRlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2VTY3JvbGxFdmVudCBldikpXG4gICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNld2hlZWxFdmVudCBldikpXG4gICAgICAgIChmdW4gZXYgLT4gS2V5Ym9hcmRFdmVudCBldikpXG4gICAgKGZ1biBldiAtPiBNb3VzZUV2ZW50IGV2KVxuXG5sZXQgb3B0X3RhZ2dlZEV2ZW50IGV2ID0gT3B0LmNhc2UgZXYgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGV2IC0+IFNvbWUgKHRhZ2dlZEV2ZW50IGV2KSlcblxubGV0IHN0b3BQcm9wYWdhdGlvbiBldiA9XG4gIGxldCBlID0gSnMuVW5zYWZlLmNvZXJjZSBldiBpblxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5zdG9wUHJvcGFnYXRpb25cbiAgICAoZnVuICgpIC0+IGUjIy5jYW5jZWxCdWJibGUgOj0gSnMuX3RydWUpXG4gICAgKGZ1biBfIC0+IGUjI19zdG9wUHJvcGFnYXRpb24pXG5cbmxldCBfcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdCA9XG4gIEpzLlVuc2FmZS5wdXJlX2V4cHIgKGZ1biBfIC0+XG4gICAgICBsZXQgdyA9IEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IGluXG4gICAgICBsZXQgbCA9XG4gICAgICAgIFsgdyMjLnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgcmVxID0gTGlzdC5maW5kIChmdW4gYyAtPiBKcy5PcHRkZWYudGVzdCBjKSBsIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgcmVxIFt8IEpzLlVuc2FmZS5pbmplY3QgY2FsbGJhY2sgfF1cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBub3cgKCkgPSBKcy50b19mbG9hdCAobmV3JWpzIEpzLmRhdGVfbm93KSMjZ2V0VGltZSBpblxuICAgICAgICBsZXQgbGFzdCA9IHJlZiAobm93ICgpKSBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT5cbiAgICAgICAgICBsZXQgdCA9IG5vdyAoKSBpblxuICAgICAgICAgIGxldCBkdCA9ICFsYXN0ICsuICgxMDAwLiAvLiA2MC4pIC0uIHQgaW5cbiAgICAgICAgICBsZXQgZHQgPSBpZiBQb2x5LihkdCA8IDAuKSB0aGVuIDAuIGVsc2UgZHQgaW5cbiAgICAgICAgICBsYXN0IDo9IHQ7XG4gICAgICAgICAgaWdub3JlICh3aW5kb3cjI3NldFRpbWVvdXQgY2FsbGJhY2sgKEpzLmZsb2F0IGR0KSkpXG5cbigqKioqKVxuXG5sZXQgaGFzUHVzaFN0YXRlICgpID0gSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IyMuaGlzdG9yeSkjIy5wdXNoU3RhdGVcblxubGV0IGhhc1BsYWNlaG9sZGVyICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnBsYWNlaG9sZGVyXG5cbmxldCBoYXNSZXF1aXJlZCAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5yZXF1aXJlZFxuXG5sZXQgb3ZlcmZsb3dfbGltaXQgPSAyMTQ3NDgzXzAwMC5cblxuKCogbXMgKilcblxudHlwZSB0aW1lb3V0X2lkX3NhZmUgPSB0aW1lb3V0X2lkIG9wdGlvbiByZWZcblxubGV0IHNldFRpbWVvdXQgY2FsbGJhY2sgZCA6IHRpbWVvdXRfaWRfc2FmZSA9XG4gIGxldCBpZCA9IHJlZiBOb25lIGluXG4gIGxldCByZWMgbG9vcCBkICgpID1cbiAgICBsZXQgc3RlcCwgcmVtYWluID1cbiAgICAgIGlmIFBvbHkuKGQgPiBvdmVyZmxvd19saW1pdCkgdGhlbiBvdmVyZmxvd19saW1pdCwgZCAtLiBvdmVyZmxvd19saW1pdCBlbHNlIGQsIDAuXG4gICAgaW5cbiAgICBsZXQgY2IgPSBpZiBQb2x5LihyZW1haW4gPSAwLikgdGhlbiBjYWxsYmFjayBlbHNlIGxvb3AgcmVtYWluIGluXG4gICAgaWQgOj0gU29tZSAod2luZG93IyNzZXRUaW1lb3V0IChKcy53cmFwX2NhbGxiYWNrIGNiKSAoSnMuZmxvYXQgc3RlcCkpXG4gIGluXG4gIGxvb3AgZCAoKTtcbiAgaWRcblxubGV0IGNsZWFyVGltZW91dCAoaWQgOiB0aW1lb3V0X2lkX3NhZmUpID1cbiAgbWF0Y2ggIWlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBpZCA6PSBOb25lO1xuICAgICAgd2luZG93IyNjbGVhclRpbWVvdXQgeFxuXG5sZXQganNfYXJyYXlfb2ZfY29sbGVjdGlvbiAoYyA6ICNlbGVtZW50IGNvbGxlY3Rpb24gSnMudCkgOiAjZWxlbWVudCBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICA9XG4gIEpzLlVuc2FmZS4obWV0aF9jYWxsIChqc19leHByIFwiW10uc2xpY2VcIikgXCJjYWxsXCIgW3wgaW5qZWN0IGMgfF0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGZvcm1EYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBlbmQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kX2Jsb2IgOiBqc19zdHJpbmcgdCAtPiBGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZm9ybURhdGEgOiBmb3JtRGF0YSB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxubGV0IGZvcm1EYXRhX2Zvcm0gOiAoZm9ybUVsZW1lbnQgdCAtPiBmb3JtRGF0YSB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbnR5cGUgZm9ybV9lbHQgPVxuICBbIGBTdHJpbmcgb2YganNfc3RyaW5nIHRcbiAgfCBgRmlsZSBvZiBGaWxlLmZpbGUgdFxuICBdXG5cbnR5cGUgZm9ybV9jb250ZW50cyA9XG4gIFsgYEZpZWxkcyBvZiAoc3RyaW5nICogZm9ybV9lbHQpIGxpc3QgcmVmXG4gIHwgYEZvcm1EYXRhIG9mIGZvcm1EYXRhIHRcbiAgXVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5jbGFzcyB0eXBlIHN1Ym1pdHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5sZXQgaGF2ZV9jb250ZW50IChlbHQgOiBzdWJtaXR0YWJsZUVsZW1lbnQgdCkgPVxuICBlbHQjIy5uYW1lIyMubGVuZ3RoID4gMCAmJiBub3QgKEpzLnRvX2Jvb2wgZWx0IyMuZGlzYWJsZWQpXG5cbmxldCBnZXRfdGV4dGFyZWFfdmFsIChlbHQgOiB0ZXh0QXJlYUVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfc2VsZWN0X3ZhbCAoZWx0IDogc2VsZWN0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGlmIHRvX2Jvb2wgZWx0IyMubXVsdGlwbGVcbiAgICB0aGVuXG4gICAgICBsZXQgb3B0aW9ucyA9XG4gICAgICAgIEFycmF5LmluaXQgZWx0IyMub3B0aW9ucyMjLmxlbmd0aCAoZnVuIGkgLT4gT3B0LnRvX29wdGlvbiAoZWx0IyMub3B0aW9ucyMjaXRlbSBpKSlcbiAgICAgIGluXG4gICAgICBmaWx0ZXJfbWFwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICAgICAgaWYgSnMudG9fYm9vbCBlIyMuc2VsZWN0ZWQgdGhlbiBTb21lIChuYW1lLCBgU3RyaW5nIGUjIy52YWx1ZSkgZWxzZSBOb25lKVxuICAgICAgICAoQXJyYXkudG9fbGlzdCBvcHRpb25zKVxuICAgIGVsc2UgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5jbGFzcyB0eXBlIGZpbGVfaW5wdXQgPSBvYmplY3RcbiAgaW5oZXJpdCBpbnB1dEVsZW1lbnRcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGdldF9pbnB1dF92YWwgPyhnZXQgPSBmYWxzZSkgKGVsdCA6IGlucHV0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGxldCB2YWx1ZSA9IGVsdCMjLnZhbHVlIGluXG4gICAgbWF0Y2ggdG9fYnl0ZXN0cmluZyBlbHQjIy5fdHlwZSMjdG9Mb3dlckNhc2Ugd2l0aFxuICAgIHwgXCJjaGVja2JveFwiIHwgXCJyYWRpb1wiIC0+XG4gICAgICAgIGlmIHRvX2Jvb2wgZWx0IyMuY2hlY2tlZCB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdIGVsc2UgW11cbiAgICB8IFwic3VibWl0XCIgfCBcInJlc2V0XCIgLT4gW11cbiAgICB8IFwidGV4dFwiIHwgXCJwYXNzd29yZFwiIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgfCBcImZpbGVcIiAtPiAoXG4gICAgICAgIGlmIGdldFxuICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgZWx0IDogZmlsZV9pbnB1dCB0ID0gVW5zYWZlLmNvZXJjZSBlbHQgaW5cbiAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLmZpbGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgbGlzdCAtPiAoXG4gICAgICAgICAgICAgIGlmIGxpc3QjIy5sZW5ndGggPSAwXG4gICAgICAgICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIChKcy5zdHJpbmcgXCJcIikgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5tdWx0aXBsZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGxpc3QjI2l0ZW0gMCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gWyBuYW1lLCBgRmlsZSBmaWxlIF0pXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyX21hcFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiBmIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBTb21lIChuYW1lLCBgRmlsZSBmaWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkudG9fbGlzdCAoQXJyYXkuaW5pdCBsaXN0IyMubGVuZ3RoIChmdW4gaSAtPiBsaXN0IyNpdGVtIGkpKSkpKVxuICAgIHwgXyAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfZm9ybV9lbGVtZW50cyAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID1cbiAgICBpZiBpIDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAoZm9ybSMjLmVsZW1lbnRzIyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyAoaSAtIGkpXG4gICAgICB8IFNvbWUgeCAtPiBsb29wICh4IDo6IGFjYykgKGkgLSAxKVxuICBpblxuICBsb29wIFtdIChmb3JtIyMuZWxlbWVudHMjIy5sZW5ndGggLSAxKVxuXG5sZXQgZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYgPVxuICBtYXRjaCB0YWdnZWQgdiB3aXRoXG4gIHwgU2VsZWN0IHYgLT4gZ2V0X3NlbGVjdF92YWwgdlxuICB8IElucHV0IHYgLT4gZ2V0X2lucHV0X3ZhbCA/Z2V0IHZcbiAgfCBUZXh0YXJlYSB2IC0+IGdldF90ZXh0YXJlYV92YWwgdlxuICB8IF8gLT4gW11cblxubGV0IGZvcm1fZWxlbWVudHMgP2dldCAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHYgLT4gZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYpIChnZXRfZm9ybV9lbGVtZW50cyBmb3JtKSlcblxubGV0IGFwcGVuZCAoZm9ybV9jb250ZW50cyA6IGZvcm1fY29udGVudHMpIChmb3JtX2VsdCA6IHN0cmluZyAqIGZvcm1fZWx0KSA9XG4gIG1hdGNoIGZvcm1fY29udGVudHMgd2l0aFxuICB8IGBGaWVsZHMgbGlzdCAtPiBsaXN0IDo9IGZvcm1fZWx0IDo6ICFsaXN0XG4gIHwgYEZvcm1EYXRhIGYgLT4gKFxuICAgICAgbWF0Y2ggZm9ybV9lbHQgd2l0aFxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gZiMjYXBwZW5kIChzdHJpbmcgbmFtZSkgc1xuICAgICAgfCBuYW1lLCBgRmlsZSBmaWxlIC0+IGYjI2FwcGVuZF9ibG9iIChzdHJpbmcgbmFtZSkgKGZpbGUgOj4gRmlsZS5ibG9iIHQpKVxuXG5sZXQgZW1wdHlfZm9ybV9jb250ZW50cyAoKSA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gKEpzLmRlZiBmb3JtRGF0YSkgd2l0aFxuICB8IE5vbmUgLT4gYEZpZWxkcyAocmVmIFtdKVxuICB8IFNvbWUgY29uc3RyIC0+IGBGb3JtRGF0YSAobmV3JWpzIGNvbnN0cilcblxubGV0IHBvc3RfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgbGV0IGNvbnRlbnRzID0gZW1wdHlfZm9ybV9jb250ZW50cyAoKSBpblxuICBMaXN0Lml0ZXIgKGFwcGVuZCBjb250ZW50cykgKGZvcm1fZWxlbWVudHMgZm9ybSk7XG4gIGNvbnRlbnRzXG5cbmxldCBnZXRfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IG5hbWUsIHRvX3N0cmluZyBzXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIChmb3JtX2VsZW1lbnRzIH5nZXQ6dHJ1ZSBmb3JtKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IFVOU0VOVFxuICB8IE9QRU5FRFxuICB8IEhFQURFUlNfUkVDRUlWRURcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG50eXBlIF8gcmVzcG9uc2UgPVxuICB8IEFycmF5QnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCBPcHQudCByZXNwb25zZVxuICB8IEJsb2IgOiAjRmlsZS5ibG9iIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IE9wdC50IHJlc3BvbnNlXG4gIHwgSlNPTiA6ICdhIE9wdC50IHJlc3BvbnNlXG4gIHwgVGV4dCA6IGpzX3N0cmluZyB0IHJlc3BvbnNlXG4gIHwgRGVmYXVsdCA6IHN0cmluZyByZXNwb25zZVxuXG5jbGFzcyB0eXBlIHhtbEh0dHBSZXF1ZXN0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ucmVhZHlzdGF0ZWNoYW5nZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX29wZW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIF9vcGVuX2Z1bGwgOlxuICAgICAgIGpzX3N0cmluZyB0XG4gICAgLT4ganNfc3RyaW5nIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UmVxdWVzdEhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvdmVycmlkZU1pbWVUeXBlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmQgOiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6ICNGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9kb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Zvcm1EYXRhIDogRm9ybS5mb3JtRGF0YSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0dXNUZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSZXNwb25zZUhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFsbFJlc3BvbnNlSGVhZGVycyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVzcG9uc2UgOiBGaWxlLmZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUZXh0IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VYTUwgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9udGltZW91dCA6XG4gICAgKCdzZWxmIHQsICdzZWxmIEZpbGUucHJvZ3Jlc3NFdmVudCB0KSBEb20uZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdXBsb2FkIDogeG1sSHR0cFJlcXVlc3RVcGxvYWQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB4bWxIdHRwUmVxdWVzdFVwbG9hZCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0geG1sSHR0cFJlcXVlc3QgRmlsZS5wcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyZWFkeXN0YXRlY2hhbmdlXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdGltZW91dCA9IERvbS5FdmVudC5tYWtlIFwidGltZW91dFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmV4dGVybmFsIGNyZWF0ZSA6IHVuaXQgLT4geG1sSHR0cFJlcXVlc3QgSnMudCA9IFwiY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcIlxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBPQ2FtbFBybzogR3LDqWdvaXJlIEhlbnJ5LCDDh2HEn2RhxZ8gQm96bWFuLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB3b3JrZXIgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXJyb3JFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ2IgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvc3RNZXNzYWdlIDogJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRlcm1pbmF0ZSA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBlcnJvckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZW5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmVubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbG5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBVbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogJ2EgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3b3JrZXIgPSBVbnNhZmUuZ2xvYmFsIyMuX1dvcmtlclxuXG5sZXQgY3JlYXRlIHNjcmlwdCA9IG5ldyVqcyB3b3JrZXIgKHN0cmluZyBzY3JpcHQpXG5cbmxldCBpbXBvcnRfc2NyaXB0cyBzY3JpcHRzIDogdW5pdCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHMpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIuaW1wb3J0X3NjcmlwdHMgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5mdW5fY2FsbFxuICAgIFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzXG4gICAgKEFycmF5Lm1hcCAoZnVuIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpKSAoQXJyYXkub2ZfbGlzdCBzY3JpcHRzKSlcblxubGV0IHNldF9vbm1lc3NhZ2UgaGFuZGxlciA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIGxldCBqc19oYW5kbGVyIChldiA6ICdhIG1lc3NhZ2VFdmVudCBKcy50KSA9IGhhbmRsZXIgZXYjIy5kYXRhIGluXG4gIFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UgOj0gd3JhcF9jYWxsYmFjayBqc19oYW5kbGVyXG5cbmxldCBwb3N0X21lc3NhZ2UgbXNnID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMucG9zdE1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZ2xvYmFsIyNwb3N0TWVzc2FnZSBtc2dcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSmFjcXVlcy1QYXNjYWwgRGVwbGFpeFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0lOR1xuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gY2xvc2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGNvZGUgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFzb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdhc0NsZWFuIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9ibG9iIDogRmlsZS5ibG9iIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgd2ViU29ja2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB1cmwgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnVmZmVyZWRBbW91bnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNsb3NlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgY2xvc2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGV4dGVuc2lvbnMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZSA6IGludCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGVBbmRSZWFzb24gOiBpbnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIG1lc3NhZ2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYmluYXJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICBtZXRob2Qgc2VuZCA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6IEZpbGUuYmxvYiBKcy50IC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCB3ZWJTb2NrZXQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1dlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbCA9IHdlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbHMgPSB3ZWJTb2NrZXRcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHdlYlNvY2tldFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG4oKiogNS4xIFR5cGVzICopXG5cbnR5cGUgc2l6ZWkgPSBpbnRcblxudHlwZSBzaXplaXB0ciA9IGludFxuXG50eXBlIGludHB0ciA9IGludFxuXG50eXBlIHVpbnQgPSBpbnRcblxudHlwZSBjbGFtcGYgPSBudW1iZXJfdFxuXG50eXBlIHZvaWRcblxudHlwZSBjbGVhckJ1ZmZlck1hc2sgPSBpbnRcblxudHlwZSBiZWdpbk1vZGVcblxudHlwZSBibGVuZGluZ0ZhY3RvclxuXG50eXBlIGJsZW5kTW9kZVxuXG50eXBlIGJ1ZmZlclRhcmdldFxuXG50eXBlIGJ1ZmZlclVzYWdlXG5cbnR5cGUgY3VsbEZhY2VNb2RlXG5cbnR5cGUgZGVwdGhGdW5jdGlvblxuXG50eXBlIGVuYWJsZUNhcFxuXG50eXBlIGVycm9yQ29kZVxuXG50eXBlIGZyb250RmFjZURpclxuXG50eXBlIGhpbnRUYXJnZXRcblxudHlwZSBoaW50TW9kZVxuXG50eXBlIHRleHR1cmVVbml0ID0gaW50XG5cbnR5cGUgJ2EgcGl4ZWxTdG9yZVBhcmFtXG5cbnR5cGUgc3RlbmNpbE9wXG5cbnR5cGUgZmJUYXJnZXRcblxudHlwZSBhdHRhY2htZW50UG9pbnRcblxudHlwZSByYlRhcmdldFxuXG50eXBlIHRleFRhcmdldFxuXG50eXBlICdhIHBhcmFtZXRlclxuXG50eXBlICdhIGJ1ZmZlclBhcmFtZXRlclxuXG50eXBlICdhIHZlcnRleEF0dHJpYlBhcmFtXG5cbnR5cGUgdmVydGV4QXR0cmliUG9pbnRlclBhcmFtXG5cbnR5cGUgJ2EgYXR0YWNoUGFyYW1cblxudHlwZSBmcmFtZWJ1ZmZlclN0YXR1c1xuXG50eXBlICdhIHJlbmRlcmJ1ZmZlclBhcmFtXG5cbnR5cGUgZm9ybWF0XG5cbnR5cGUgcGl4ZWxGb3JtYXRcblxudHlwZSBwaXhlbFR5cGVcblxudHlwZSAnYSB0ZXhQYXJhbVxuXG50eXBlIGRhdGFUeXBlXG5cbnR5cGUgc2hhZGVyVHlwZVxuXG50eXBlICdhIHByb2dyYW1QYXJhbVxuXG50eXBlICdhIHNoYWRlclBhcmFtXG5cbnR5cGUgdGV4dHVyZUZpbHRlclxuXG50eXBlIHdyYXBNb2RlXG5cbnR5cGUgdGV4RmlsdGVyXG5cbnR5cGUgdW5pZm9ybVR5cGVcblxudHlwZSBjb2xvcnNwYWNlQ29udmVyc2lvblxuXG50eXBlIHNoYWRlclByZWNpc2lvblR5cGVcblxudHlwZSBvYmplY3RUeXBlXG5cbigqKiA1LjIgV2ViR0xDb250ZXh0QXR0cmlidXRlcyAqKVxuY2xhc3MgdHlwZSBjb250ZXh0QXR0cmlidXRlcyA9IG9iamVjdFxuICBtZXRob2QgYWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXB0aCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN0ZW5jaWwgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBhbnRpYWxpYXMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVtdWx0aXBsaWVkQWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCA6IGJvb2wgdCBwcm9wXG5lbmRcblxubGV0IGRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyA9XG4gIEpzLlVuc2FmZS4oXG4gICAgb2JqXG4gICAgICBbfCBcImFscGhhXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJkZXB0aFwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwic3RlbmNpbFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImFudGlhbGlhc1wiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwicHJlbXVsdGlwbGllZEFscGhhXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlc2VydmVEcmF3aW5nQnVmZmVyXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgfF0pXG5cbnR5cGUgYnVmZmVyXG5cbnR5cGUgZnJhbWVidWZmZXJcblxudHlwZSBwcm9ncmFtXG5cbnR5cGUgcmVuZGVyYnVmZmVyXG5cbnR5cGUgc2hhZGVyXG5cbnR5cGUgdGV4dHVyZVxuXG50eXBlICdhIHVuaWZvcm1Mb2NhdGlvblxuXG5jbGFzcyB0eXBlIGFjdGl2ZUluZm8gPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNoYWRlclByZWNpc2lvbkZvcm1hdCA9IG9iamVjdFxuICBtZXRob2QgcmFuZ2VNaW4gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZU1heCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWNpc2lvbiA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZW5kZXJpbmdDb250ZXh0ID0gb2JqZWN0XG4gICgqKiA1LjEzLjEgQXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBjYW52YXMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVyV2lkdGggOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJIZWlnaHQgOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgKCoqIDUuMTMuMiBHZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0ICopXG5cbiAgbWV0aG9kIGdldENvbnRleHRBdHRyaWJ1dGVzIDogY29udGV4dEF0dHJpYnV0ZXMgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMyBTZXR0aW5nIGFuZCBnZXR0aW5nIHN0YXRlICopXG5cbiAgbWV0aG9kIGFjdGl2ZVRleHR1cmUgOiB0ZXh0dXJlVW5pdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvbiA6IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvblNlcGFyYXRlIDogYmxlbmRNb2RlIC0+IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jIDogYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuY1NlcGFyYXRlIDpcbiAgICBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEZXB0aCA6IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJTdGVuY2lsIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xvck1hc2sgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGN1bGxGYWNlIDogY3VsbEZhY2VNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aE1hc2sgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoUmFuZ2UgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXNhYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyb250RmFjZSA6IGZyb250RmFjZURpciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UGFyYW1ldGVyIDogJ2EuICdhIHBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEVycm9yIDogZXJyb3JDb2RlIG1ldGhcblxuICBtZXRob2QgaGludCA6IGhpbnRUYXJnZXQgLT4gaGludE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzRW5hYmxlZCA6IGVuYWJsZUNhcCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcGl4ZWxTdG9yZWkgOiAnYS4gJ2EgcGl4ZWxTdG9yZVBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwb2x5Z29uT2Zmc2V0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNhbXBsZUNvdmVyYWdlIDogY2xhbXBmIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuY1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrIDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2tTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3AgOiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wU2VwYXJhdGUgOlxuICAgIGN1bGxGYWNlTW9kZSAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy40IFZpZXdpbmcgYW5kIGNsaXBwaW5nICopXG5cbiAgbWV0aG9kIHNjaXNzb3IgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNSBCdWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyXyA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfY3JlYXRlIDogYnVmZmVyVGFyZ2V0IC0+IHNpemVpcHRyIC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVCdWZmZXIgOiBidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUJ1ZmZlciA6IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCdWZmZXJQYXJhbWV0ZXIgOiAnYS4gYnVmZmVyVGFyZ2V0IC0+ICdhIGJ1ZmZlclBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzQnVmZmVyIDogYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy42IEZyYW1lYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyXyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXJTdGF0dXMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyVGV4dHVyZTJEIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciA6XG4gICAgJ2EuIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiAnYSBhdHRhY2hQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNyBSZW5kZXJidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXJfIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIgOiAnYS4gcmJUYXJnZXQgLT4gJ2EgcmVuZGVyYnVmZmVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1JlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbmRlcmJ1ZmZlclN0b3JhZ2UgOiByYlRhcmdldCAtPiBmb3JtYXQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOCBUZXh0dXJlIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFRleHR1cmUgOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZV8gOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleEltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IHBpeGVsRm9ybWF0IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4U3ViSW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUZXh0dXJlIDogdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZW5lcmF0ZU1pcG1hcCA6IHRleFRhcmdldCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0VGV4UGFyYW1ldGVyIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNUZXh0dXJlIDogdGV4dHVyZSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfbmV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IHZvaWQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiB7W1xuICAgICAgbWV0aG9kIHRleFBhcmFtZXRlcmYgOiB0ZXhUYXJnZXQgLT4gdGV4UGFyYW0gLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG4gICAgIF19XG4gICopXG4gIG1ldGhvZCB0ZXhQYXJhbWV0ZXJpIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy45IFByb2dyYW1zIGFuZCBTaGFkZXJzICopXG5cbiAgbWV0aG9kIGF0dGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBpbGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNoYWRlciA6IHNoYWRlclR5cGUgLT4gc2hhZGVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGV0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRhY2hlZFNoYWRlcnMgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1QYXJhbWV0ZXIgOiAnYS4gcHJvZ3JhbSB0IC0+ICdhIHByb2dyYW1QYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1JbmZvTG9nIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUGFyYW1ldGVyIDogJ2EuIHNoYWRlciB0IC0+ICdhIHNoYWRlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IDpcbiAgICBzaGFkZXJUeXBlIC0+IHNoYWRlclByZWNpc2lvblR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uRm9ybWF0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJJbmZvTG9nIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGlzUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1NoYWRlciA6IHNoYWRlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmtQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdXNlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmFsaWRhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEwIFVuaWZvcm1zIGFuZCBhdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlQXR0cmliIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlVW5pZm9ybSA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm0gOiAnYSAnYi4gcHJvZ3JhbSB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IC0+ICdiIG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybUxvY2F0aW9uIDogJ2EuIHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYiA6ICdhLiB1aW50IC0+ICdhIHZlcnRleEF0dHJpYlBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliT2Zmc2V0IDogdWludCAtPiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gLT4gc2l6ZWlwdHIgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdl90eXBlZCA6XG4gICAgbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWkgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2X3R5cGVkIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdiA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmIDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2X3R5cGVkIDpcbiAgICBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpIDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2IDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdl90eXBlZCA6XG4gICAgWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZiA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2X3R5cGVkIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnYgOiBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpIDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdiA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGYgOlxuICAgICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnZfdHlwZWQgOlxuICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdiA6IFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGkgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdiA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXZfdHlwZWQgOlxuICAgIFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2IDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnZfdHlwZWQgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnYgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdl90eXBlZCA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdiA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2X3R5cGVkIDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmYgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZiA6XG4gICAgdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyIDpcbiAgICB1aW50IC0+IGludCAtPiBkYXRhVHlwZSAtPiBib29sIHQgLT4gc2l6ZWkgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjExIFdyaXRpbmcgdG8gdGhlIGRyYXdpbmcgYnVmZmVyICopXG5cbiAgbWV0aG9kIGNsZWFyIDogY2xlYXJCdWZmZXJNYXNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3QXJyYXlzIDogYmVnaW5Nb2RlIC0+IGludCAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0VsZW1lbnRzIDogYmVnaW5Nb2RlIC0+IHNpemVpIC0+IGRhdGFUeXBlIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmluaXNoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZsdXNoIDogdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTIgUmVhZGluZyBiYWNrIHBpeGVscyAqKVxuXG4gIG1ldGhvZCByZWFkUGl4ZWxzIDpcbiAgICAgICBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMyBEZXRlY3RpbmcgY29udGV4dCBsb3N0IGV2ZW50cyAqKVxuXG4gIG1ldGhvZCBpc0NvbnRleHRMb3N0IDogYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy4xNCBEZXRlY3RpbmcgYW5kIGVuYWJsaW5nIGV4dGVuc2lvbnMgKilcblxuICBtZXRob2QgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnNpb24gOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgdCBvcHQgbWV0aFxuXG4gICgqIFVudHlwZWQhICopXG4gICgqKiBDb25zdGFudHMgKilcblxuICBtZXRob2QgX0RFUFRIX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9JTlRTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfTE9PUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9GQU5fIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkUgOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfU0FUVVJBVEVfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19BRERfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RSRUFNX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RBVElDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFlOQU1JQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JBQ0sgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfQU5EX0JBQ0tfIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkQgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9fRVJST1JfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRU5VTV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9WQUxVRV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09VVF9PRl9NRU1PUllfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlRFWFRfTE9TVF9XRUJHTF8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NDVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ET05UX0NBUkVfIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkFTVEVTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05JQ0VTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UXyA6IGhpbnRUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9SR0JfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9BTFBIQV8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9DT0xPUl8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9XSURUSF8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9NT0RFXyA6IGN1bGxGYWNlTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfRkFDRV8gOiBmcm9udEZhY2VEaXIgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9XUklURU1BU0tfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DTEVBUl9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfRlVOQ18gOiBkZXB0aEZ1bmN0aW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0NMRUFSX1ZBTFVFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVklFV1BPUlQgOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfQk9YXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQ0xFQVJfVkFMVUVfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX1dSSVRFTUFTS18gOiBib29sIHQganNfYXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF9QQVJBTSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEFDS19BTElHTk1FTlRfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZJRVdQT1JUX0RJTVNfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVUJQSVhFTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVEX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVFTl9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxVRV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEFfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9VTklUU18gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRkFDVE9SXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfMkRfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9CVUZGRVJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX0lOVkVSVF8gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IFR5cGVkX2FycmF5LnVpbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UX1BBUkFNXyA6IGhpbnRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfU0laRV8gOiBpbnQgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9VU0FHRV8gOiBidWZmZXJVc2FnZSBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQllURSA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfRFQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSE9SVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0lOVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNV81XzFfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNl81XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQiA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0UgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0VfQUxQSEFfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFHTUVOVF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9BVFRSSUJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkFSWUlOR19WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFERVJfVFlQRV8gOiBzaGFkZXJUeXBlIHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBJTEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTX1BST0cgOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTktfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkFMSURBVEVfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVRUQUNIRURfU0hBREVSU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9VTklGT1JNU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9BVFRSSUJVVEVTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OXyA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1BST0dSQU1fIDogcHJvZ3JhbSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVORE9SIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkVSIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlNJT04gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9URVhUVVJFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQklORElOR18gOiBmcmFtZWJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JJTkRJTkdfIDogcmVuZGVyYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfUkVOREVSQlVGRkVSX1NJWkUgOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FVkVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVNTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVBVEVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT1RFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFdBWVMgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0tFRVAgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQTEFDRSA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WRVJUIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUiA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUFHX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NSU5fRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfU18gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfVF8gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfMkRfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTExIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQRUFUIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0xBTVBfVE9fRURHRV8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NSVJST1JFRF9SRVBFQVRfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl8yRF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSX0NVQkVfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSXyA6IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6XG4gICAgYnVmZmVyIHQgb3B0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfVkVSVEVYX0FUVFJJQl8gOlxuICAgIFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVIgOiBmYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVIgOiByYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBNCA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1X0ExXyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1NjUgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UMTZfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVg4XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfV0lEVEhfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9IRUlHSFRfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfIDogZm9ybWF0IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9SRURfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CTFVFX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRV8gOiBvYmplY3RUeXBlIGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfUkVOREVSQlVGRkVSIDpcbiAgICByZW5kZXJidWZmZXIgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1RFWFRVUkUgOiB0ZXh0dXJlIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRV8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQVRUQUNITUVOVDBfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9DT01QTEVURV8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF9QQVJBTSA6XG4gICAgY29sb3JzcGFjZUNvbnZlcnNpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkUgOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CUk9XU0VSX0RFRkFVTFRfV0VCR0xfIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiA1LjE0IFdlYkdMQ29udGV4dEV2ZW50ICopXG5cbmNsYXNzIHR5cGUgY29udGV4dEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRcblxuICBtZXRob2Qgc3RhdHVzTWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbGV0IHdlYmdsY29udGV4dGxvc3QgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0bG9zdFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dHJlc3RvcmVkID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dHJlc3RvcmVkXCJcblxuICBsZXQgd2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yXCJcbmVuZFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHRfIDoganNfc3RyaW5nIHQgLT4gY29udGV4dEF0dHJpYnV0ZXMgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgZ2V0Q29udGV4dCAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwid2ViZ2xcIikgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyAjIyAoZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpKVxuXG5sZXQgZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSBhdHRyaWJzID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBhdHRyaWJzIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikgYXR0cmlic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3QsIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlZ2V4cCA9IEpzLnJlZ0V4cCBKcy50XG5cbnR5cGUgcmVzdWx0ID0gSnMubWF0Y2hfcmVzdWx0IEpzLnRcblxubGV0IHJlZ2V4cCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnaVwiKVxuXG5sZXQgcmVnZXhwX3dpdGhfZmxhZyBzIGYgPVxuICBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIChcImdcIiBeIGYpKVxuXG5sZXQgYmx1bnRfc3RyX2FycmF5X2dldCBhIGkgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgYSBpKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCBzdHJpbmdfbWF0Y2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5tYXAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpIEpzLm1hdGNoX3Jlc3VsdClcblxubGV0IHNlYXJjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvblxuICAgIChKcy5PcHQubWFwXG4gICAgICAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgKGZ1biByZXNfcHJlIC0+XG4gICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IHJlc19wcmUgaW5cbiAgICAgICAgIHJlcyMjLmluZGV4LCByZXMpKVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgPSBzZWFyY2hcblxubGV0IG1hdGNoZWRfc3RyaW5nIHIgPSBibHVudF9zdHJfYXJyYXlfZ2V0IHIgMFxuXG5sZXQgbWF0Y2hlZF9ncm91cCByIGkgPVxuICBKcy5PcHRkZWYudG9fb3B0aW9uIChKcy5PcHRkZWYubWFwIChKcy5hcnJheV9nZXQgciBpKSBKcy50b19ieXRlc3RyaW5nKVxuXG5sZXQgcXVvdGVfcmVwbF9yZSA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJbJF1cIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHF1b3RlX3JlcGwgcyA9IChKcy5ieXRlc3RyaW5nIHMpIyNyZXBsYWNlIHF1b3RlX3JlcGxfcmUgKEpzLnN0cmluZyBcIiQkJCRcIilcblxubGV0IGdsb2JhbF9yZXBsYWNlIHIgcyBzX2J5ID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHIgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCByZXBsYWNlX2ZpcnN0IHIgcyBzX2J5ID1cbiAgbGV0IGZsYWdzID1cbiAgICBtYXRjaCBKcy50b19ib29sIHIjIy5pZ25vcmVDYXNlLCBKcy50b19ib29sIHIjIy5tdWx0aWxpbmUgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEpzLnN0cmluZyBcIlwiXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtXCJcbiAgICB8IHRydWUsIGZhbHNlIC0+IEpzLnN0cmluZyBcImlcIlxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtaVwiXG4gIGluXG4gIGxldCByJyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIHIjIy5zb3VyY2UgZmxhZ3MgaW5cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByJyAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IGxpc3Rfb2ZfanNfYXJyYXkgYSA9XG4gIGxldCByZWMgYXV4IGFjY3UgaWR4ID1cbiAgICBpZiBpZHggPCAwIHRoZW4gYWNjdSBlbHNlIGF1eCAoYmx1bnRfc3RyX2FycmF5X2dldCBhIGlkeCA6OiBhY2N1KSAoaWR4IC0gMSlcbiAgaW5cbiAgYXV4IFtdIChhIyMubGVuZ3RoIC0gMSlcblxubGV0IHNwbGl0IHIgcyA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHAgcikpXG5cbmxldCBib3VuZGVkX3NwbGl0IHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cExpbWl0ZWQgciBpKSlcblxuKCogTW9yZSBjb25zdHJ1Y3RvcnMgKilcblxubGV0IHF1b3RlX3JlID0gcmVnZXhwIFwiW1xcXFxdWygpXFxcXFxcXFx8KyouP3t9XiRdXCJcblxubGV0IHF1b3RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHF1b3RlX3JlIChKcy5zdHJpbmcgXCJcXFxcJCZcIikpXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSByZWdleHAgKHF1b3RlIHMpXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gcmVnZXhwX2Nhc2VfZm9sZCAocXVvdGUgcylcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBVcmwgdGFtcGVyaW5nLiAqKVxuXG5sZXQgc3BsaXQgYyBzID0gSnMuc3RyX2FycmF5IChzIyNzcGxpdCAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSlcblxubGV0IHNwbGl0XzIgYyBzID1cbiAgbGV0IGluZGV4ID0gcyMjaW5kZXhPZiAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSBpblxuICBpZiBpbmRleCA8IDAgdGhlbiBKcy51bmRlZmluZWQgZWxzZSBKcy5kZWYgKHMjI3NsaWNlIDAgaW5kZXgsIHMjI3NsaWNlX2VuZCAoaW5kZXggKyAxKSlcblxuZXhjZXB0aW9uIExvY2FsX2V4blxuXG5sZXQgaW50ZXJydXB0ICgpID0gcmFpc2UgTG9jYWxfZXhuXG5cbigqIHVybCAoQUtBIHBlcmNlbnQpIGVuY29kaW5nL2RlY29kaW5nICopXG5cbmxldCBwbHVzX3JlID0gUmVnZXhwLnJlZ2V4cF9zdHJpbmcgXCIrXCJcblxubGV0IGVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiJTJCXCJcblxubGV0IHVuZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIgXCJcblxubGV0IHBsdXNfcmVfanNfc3RyaW5nID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlxcXFwrXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCB1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzID1cbiAgcGx1c19yZV9qc19zdHJpbmcjIy5sYXN0SW5kZXggOj0gMDtcbiAgcyMjcmVwbGFjZSBwbHVzX3JlX2pzX3N0cmluZyAoSnMuc3RyaW5nIFwiIFwiKVxuXG5sZXQgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlICh1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzKSlcblxubGV0IHVybGRlY29kZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgKHVuZXNjYXBlX3BsdXMgcykpKVxuXG4oKmxldCB1cmxlbmNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIHMpKilcblxubGV0IHVybGVuY29kZSA/KHdpdGhfcGx1cyA9IHRydWUpIHMgPVxuICBpZiB3aXRoX3BsdXNcbiAgdGhlbiBlc2NhcGVfcGx1cyAoSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKSlcbiAgZWxzZSBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpXG5cbnR5cGUgaHR0cF91cmwgPVxuICB7IGh1X2hvc3QgOiBzdHJpbmcgICgqKiBUaGUgaG9zdCBwYXJ0IG9mIHRoZSB1cmwuICopXG4gIDsgaHVfcG9ydCA6IGludCAgKCoqIFRoZSBwb3J0IGZvciB0aGUgY29ubmVjdGlvbiBpZiBhbnkuICopXG4gIDsgaHVfcGF0aCA6IHN0cmluZyBsaXN0ICAoKiogVGhlIHBhdGggc3BsaXQgb24gWycvJ10gY2hhcmFjdGVycy4gKilcbiAgOyBodV9wYXRoX3N0cmluZyA6IHN0cmluZyAgKCoqIFRoZSBvcmlnaW5hbCBlbnRpcmUgcGF0aC4gKilcbiAgOyBodV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgICAgICgqKiBBcmd1bWVudHMgYXMgYSBmaWVsZC12YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRpb24gbGlzdC4qKVxuICA7IGh1X2ZyYWdtZW50IDogc3RyaW5nICAoKiogVGhlIGZyYWdtZW50IHBhcnQgKGFmdGVyIHRoZSBbJyMnXSBjaGFyYWN0ZXIpLiAqKVxuICB9XG4oKiogVGhlIHR5cGUgZm9yIEhUVFAgdXJsLiAqKVxuXG50eXBlIGZpbGVfdXJsID1cbiAgeyBmdV9wYXRoIDogc3RyaW5nIGxpc3RcbiAgOyBmdV9wYXRoX3N0cmluZyA6IHN0cmluZ1xuICA7IGZ1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgOyBmdV9mcmFnbWVudCA6IHN0cmluZ1xuICB9XG4oKiogVGhlIHR5cGUgZm9yIGxvY2FsIGZpbGUgdXJscy4gKilcblxudHlwZSB1cmwgPVxuICB8IEh0dHAgb2YgaHR0cF91cmxcbiAgfCBIdHRwcyBvZiBodHRwX3VybFxuICB8IEZpbGUgb2YgZmlsZV91cmxcbiAgICAgICgqKiBUaGUgdHlwZSBmb3IgdXJscy4gW0ZpbGVdIGlzIGZvciBsb2NhbCBmaWxlcyBhbmQgW0V4b3RpYyBzXSBpcyBmb3JcbiAgICB1bmtub3duL3Vuc3VwcG9ydGVkIHByb3RvY29scy4gKilcblxuZXhjZXB0aW9uIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbmxldCBpc19zZWN1cmUgcHJvdF9zdHJpbmcgPVxuICBtYXRjaCBKcy50b19ieXRlc3RyaW5nIHByb3Rfc3RyaW5nIyN0b0xvd2VyQ2FzZSB3aXRoXG4gIHwgXCJodHRwczpcIiB8IFwiaHR0cHNcIiAtPiB0cnVlXG4gIHwgXCJodHRwOlwiIHwgXCJodHRwXCIgLT4gZmFsc2VcbiAgfCBcImZpbGU6XCIgfCBcImZpbGVcIiB8IF8gLT4gcmFpc2UgTm90X2FuX2h0dHBfcHJvdG9jb2xcblxuKCogcG9ydCBudW1iZXIgKilcbmxldCBkZWZhdWx0X2h0dHBfcG9ydCA9IDgwXG5cbmxldCBkZWZhdWx0X2h0dHBzX3BvcnQgPSA0NDNcblxuKCogcGF0aCAqKVxubGV0IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGxldCBqID0gdHJ5IFN0cmluZy5pbmRleF9mcm9tIHMgaSAnLycgd2l0aCBOb3RfZm91bmQgLT4gbCBpblxuICAgIGxldCB3b3JkID0gU3RyaW5nLnN1YiBzIGkgKGogLSBpKSBpblxuICAgIGlmIGogPj0gbCB0aGVuIFsgd29yZCBdIGVsc2Ugd29yZCA6OiBhdXggKGogKyAxKVxuICBpblxuICBtYXRjaCBhdXggMCB3aXRoXG4gIHwgWyBcIlwiIF0gLT4gW11cbiAgfCBbIFwiXCI7IFwiXCIgXSAtPiBbIFwiXCIgXVxuICB8IGEgLT4gYVxuXG4oKiBBcmd1bWVudHMgKilcbmxldCBlbmNvZGVfYXJndW1lbnRzIGwgPVxuICBTdHJpbmcuY29uY2F0IFwiJlwiIChMaXN0Lm1hcCAoZnVuIChuLCB2KSAtPiB1cmxlbmNvZGUgbiBeIFwiPVwiIF4gdXJsZW5jb2RlIHYpIGwpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyBzID1cbiAgbGV0IGFyciA9IHNwbGl0ICcmJyBzIGluXG4gIGxldCBsZW4gPSBhcnIjIy5sZW5ndGggaW5cbiAgbGV0IG5hbWVfdmFsdWVfc3BsaXQgcyA9IHNwbGl0XzIgJz0nIHMgaW5cbiAgbGV0IHJlYyBhdXggYWNjIGlkeCA9XG4gICAgaWYgaWR4IDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGF1eFxuICAgICAgICAgIChKcy5PcHRkZWYuY2FzZSAoSnMuYXJyYXlfZ2V0IGFyciBpZHgpIGludGVycnVwdCAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgIEpzLk9wdGRlZi5jYXNlIChuYW1lX3ZhbHVlX3NwbGl0IHMpIGludGVycnVwdCAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBnZXQgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBpblxuICAgICAgICAgICAgICAgICAgIGdldCB4LCBnZXQgeSkpXG4gICAgICAgICAgOjogYWNjKVxuICAgICAgICAgIChwcmVkIGlkeClcbiAgICAgIHdpdGggTG9jYWxfZXhuIC0+IGF1eCBhY2MgKHByZWQgaWR4KVxuICBpblxuICBhdXggW10gKGxlbiAtIDEpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzIHMgPSBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgdXJsX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nXG4gICAgICAgXCJeKFtIaF1bVHRdW1R0XVtQcF1bU3NdPyk6Ly8oWzAtOWEtekEtWi4tXSt8XFxcXFtbMC05YS16QS1aLi1dK1xcXFxdfFxcXFxbWzAtOUEtRmEtZjouXStcXFxcXSk/KDooWzAtOV0rKSk/KC8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyk/JFwiKVxuXG5sZXQgZmlsZV9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZyBcIl4oW0ZmXVtJaV1bTGxdW0VlXSk6Ly8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyRcIilcblxubGV0IHVybF9vZl9qc19zdHJpbmcgcyA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKHVybF9yZSMjZXhlYyBzKVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChmaWxlX3JlIyNleGVjIHMpXG4gICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoRmlsZVxuICAgICAgICAgICAgICAgeyBmdV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIDsgZnVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgICAgICAgIEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIH0pKSlcbiAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgIGxldCBzc2wgPSBpc19zZWN1cmUgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMSkgaW50ZXJydXB0KSBpblxuICAgICAgbGV0IHBvcnRfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IGlmIHNzbCB0aGVuIDQ0MyBlbHNlIDgwXG4gICAgICAgIHwgcyAtPiBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgIGluXG4gICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgdXJsID1cbiAgICAgICAgeyBodV9ob3N0ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgOyBodV9wb3J0ID1cbiAgICAgICAgICAgIHBvcnRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSkpXG4gICAgICAgIDsgaHVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgOyBodV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgIDsgaHVfYXJndW1lbnRzID1cbiAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDgpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgOyBodV9mcmFnbWVudCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxMCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgU29tZSAoaWYgc3NsIHRoZW4gSHR0cHMgdXJsIGVsc2UgSHR0cCB1cmwpKVxuXG5sZXQgdXJsX29mX3N0cmluZyBzID0gdXJsX29mX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgc3RyaW5nX29mX3VybCA9IGZ1bmN0aW9uXG4gIHwgRmlsZSB7IGZ1X3BhdGggPSBwYXRoOyBmdV9hcmd1bWVudHMgPSBhcmdzOyBmdV9mcmFnbWVudCA9IGZyYWc7IF8gfSAtPiAoXG4gICAgICBcImZpbGU6Ly9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHA6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgODAgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cHNcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHBzOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDQ0MyAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcblxubW9kdWxlIEN1cnJlbnQgPSBzdHJ1Y3RcbiAgbGV0IGwgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5PcHRkZWYucmV0dXJuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uKVxuICAgIHRoZW4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb25cbiAgICBlbHNlXG4gICAgICBsZXQgZW1wdHkgPSBKcy5zdHJpbmcgXCJcIiBpblxuICAgICAgb2JqZWN0JWpzXG4gICAgICAgIHZhbCBtdXRhYmxlIGhyZWYgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHByb3RvY29sID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0bmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcG9ydCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcGF0aG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHNlYXJjaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaGFzaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG9yaWdpbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICAgIG1ldGhvZCByZWxvYWQgPSAoKVxuXG4gICAgICAgIG1ldGhvZCByZXBsYWNlIF8gPSAoKVxuXG4gICAgICAgIG1ldGhvZCBhc3NpZ24gXyA9ICgpXG4gICAgICBlbmRcblxuICBsZXQgaG9zdCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ob3N0bmFtZVxuXG4gIGxldCBwcm90b2NvbCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wcm90b2NvbFxuXG4gIGxldCBwb3J0ID1cbiAgICAoZnVuICgpIC0+XG4gICAgICB0cnkgU29tZSAoaW50X29mX3N0cmluZyAoSnMudG9fYnl0ZXN0cmluZyBsIyMucG9ydCkpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmUpXG4gICAgICAoKVxuXG4gIGxldCBwYXRoX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wYXRobmFtZVxuXG4gIGxldCBwYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0cmluZ1xuXG4gIGxldCBhcmd1bWVudHMgPVxuICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAoaWYgSnMuZXF1YWxzIChsIyMuc2VhcmNoIyNjaGFyQXQgMCkgKEpzLnN0cmluZyBcIj9cIilcbiAgICAgICB0aGVuIGwjIy5zZWFyY2gjI3NsaWNlX2VuZCAxXG4gICAgICAgZWxzZSBsIyMuc2VhcmNoKVxuXG4gIGxldCBnZXRfZnJhZ21lbnQgKCkgPVxuICAgIGxldCBzID0gSnMudG9fYnl0ZXN0cmluZyBsIyMuaGFzaCBpblxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgQ2hhci5lcXVhbCBzLlswXSAnIydcbiAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIGVsc2Ugc1xuXG4gIGxldCBzZXRfZnJhZ21lbnQgcyA9IGwjIy5oYXNoIDo9IEpzLmJ5dGVzdHJpbmcgc1xuXG4gIGxldCBnZXQgKCkgPSB1cmxfb2ZfanNfc3RyaW5nIGwjIy5ocmVmXG5cbiAgbGV0IHNldCB1ID0gbCMjLmhyZWYgOj0gSnMuYnl0ZXN0cmluZyAoc3RyaW5nX29mX3VybCB1KVxuXG4gIGxldCBhc19zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaHJlZlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbmV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbmxldCB1cGRhdGVfZmlsZSB+bmFtZSB+Y29udGVudCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IG5hbWUgaW5cbiAgb3V0cHV0X3N0cmluZyBvYyBjb250ZW50O1xuICBjbG9zZV9vdXQgb2NcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6XG4gIG91dF9jaGFubmVsIC0+IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbmxldCBzZXRfY2hhbm5lbF9mbHVzaGVyIChvdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsKSAoZiA6IHN0cmluZyAtPiB1bml0KSA9XG4gIGxldCBmJyA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayA9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIHMgLT4gZiAoSnMudG9fYnl0ZXN0cmluZyBzKSlcbiAgaW5cbiAgc2V0X2NoYW5uZWxfb3V0cHV0JyBvdXRfY2hhbm5lbCBmJ1xuXG5sZXQgc2V0X2NoYW5uZWxfZmlsbGVyIChpbl9jaGFubmVsIDogaW5fY2hhbm5lbCkgKGYgOiB1bml0IC0+IHN0cmluZykgPVxuICBsZXQgZicgOiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayBmIGluXG4gIHNldF9jaGFubmVsX2lucHV0JyBpbl9jaGFubmVsIGYnXG5cbmV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOlxuICBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbmV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxubGV0IG1vdW50IH5wYXRoIGYgPVxuICBtb3VudF9hdXRvbG9hZCBwYXRoIChKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJlZml4IHBhdGggLT4gZiB+cHJlZml4IH5wYXRoKSlcblxubGV0IHVubW91bnQgfnBhdGggPSB1bm1vdW50IHBhdGhcblxubGV0IGpzX29mX29jYW1sX3ZlcnNpb24gPVxuICBpZiBTdHJpbmcuZXF1YWwgTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb24gXCJcIlxuICB0aGVuIExpYl92ZXJzaW9uLnNcbiAgZWxzZSBMaWJfdmVyc2lvbi5zIF4gXCIrXCIgXiBMaWJfdmVyc2lvbi5naXRfdmVyc2lvblxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOSBBbGV4YW5kZXIgWWFuaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyU2l6ZSA9IG9iamVjdFxuICBtZXRob2QgaW5saW5lU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYmxvY2tTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm9yZGVyQm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50Qm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBib3ggOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb2JzZXJ2ZV93aXRoT3B0aW9ucyA6XG4gICAgI0RvbS5ub2RlIEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIDogcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IHJlc2l6ZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9SZXNpemVPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcmVzaXplT2JzZXJ2ZXJcblxubGV0IHJlc2l6ZU9ic2VydmVyIDpcbiAgICAoICAgKHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICByZXNpemVPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGJveCA6IEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbilcbiAgICAoKSA6IHJlc2l6ZU9ic2VydmVyIEpzLnQgPVxuICBsZXQgb2JzID0gbmV3JWpzIHJlc2l6ZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIChtYXRjaCBib3ggd2l0aFxuICB8IE5vbmUgLT4gb2JzIyNvYnNlcnZlIG5vZGVcbiAgfCBTb21lIGJveCAtPlxuICAgICAgbGV0IG9wdHMgPSBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSBpblxuICAgICAgb3B0cyMjLmJveCA6PSBib3g7XG4gICAgICBvYnMjI29ic2VydmVfd2l0aE9wdGlvbnMgbm9kZSBvcHRzKTtcbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDIxIFBoaWxpcCBXaGl0ZVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgZW50cnlUeXBlcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVudHJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRUaW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGdldEVudHJpZXMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA6XG4gICAgKCAgIChwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0IEpzLnQgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlIH5lbnRyeV90eXBlcyB+ZiA9XG4gIGxldCBlbnRyeV90eXBlcyA9IGVudHJ5X3R5cGVzIHw+IExpc3QubWFwIEpzLnN0cmluZyB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IGluXG4gIGxldCBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBsZXQgKCkgPSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IyMuZW50cnlUeXBlcyA6PSBlbnRyeV90eXBlcyBpblxuICBsZXQgb2JzID0gbmV3JWpzIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgY2hpbGRMaXN0IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJ0cmVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVGaWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvblJlY29yZCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZW1vdmVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lc3BhY2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgOiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9NdXRhdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhjaGlsZF9saXN0IDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVzIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YSA6IGJvb2wgb3B0aW9uKVxuICAgID8oc3VidHJlZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfZmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCBvcHRpb24pXG4gICAgKCkgOiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgPVxuICBsZXQgb3B0X2l0ZXIgeCBmID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBtdXRhdGlvbk9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCBjZmcgPSBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoaWxkX2xpc3QgKGZ1biB2IC0+IGNmZyMjLmNoaWxkTGlzdCA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVzIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVzIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIHN1YnRyZWUgKGZ1biB2IC0+IGNmZyMjLnN1YnRyZWUgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlT2xkVmFsdWUgOj0gdikgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6PSB2KVxuICBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGF0dHJpYnV0ZV9maWx0ZXIgKGZ1biBsIC0+XG4gICAgICAgIGNmZyMjLmF0dHJpYnV0ZUZpbHRlciA6PSBKcy5hcnJheSAoQXJyYXkub2ZfbGlzdCBsKSlcbiAgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIG5vZGUgY2ZnIGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBQaWVycmUgQ2hhbWJhcnQgMjAxMi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSA8ID4gSnMudFxuXG5sZXQgb2JqID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSAodiA6ICdhKSA9XG4gICgqICdfJyBpcyBhZGRlZCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvYmplY3RzIG1ldGhvZHMgKilcbiAgSnMuVW5zYWZlLnNldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpIHZcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpID1cbiAgSnMuVW5zYWZlLmRlbGV0ZSB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgOiAnYSBKcy5PcHRkZWYudCA9XG4gIEpzLlVuc2FmZS5nZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCA9XG4gIGxldCBrZXlfYXJyYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50ID1cbiAgICBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdCMja2V5cyB0XG4gIGluXG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgZm9yIGkgPSAwIHRvIHByZWQga2V5X2FycmF5IyMubGVuZ3RoIGRvXG4gICAgbGV0IGtleSA9XG4gICAgICBKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQga2V5X2FycmF5IGkpIChmdW4gKCkgLT4gZmFpbHdpdGggXCJKc3RhYmxlLmtleXNcIilcbiAgICBpblxuICAgIHJlcyA6PSBrZXkjI3N1YnN0cmluZyAwIChwcmVkIGtleSMjLmxlbmd0aCkgOjogIXJlc1xuICBkb25lO1xuICBMaXN0LnJldiAhcmVzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IEdyw6lnb2lyZSBIZW5yeSAyMDEwLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHBhcnNlXyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuIGpzX3N0cmluZyB0IC0+ICgnYiB0LCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeV8gOlxuICAgICdhICdiICdjICdkLiAnYSAtPiAoJ2IsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQganNvbiA6IGpzb24gSnMudCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgaW5wdXRfcmV2aXZlciA9XG4gIGxldCByZXZpdmVyIF90aGlzIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgdmFsdWUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIE9iai5yZXByICh0b19ieXRlc3RyaW5nIChVbnNhZmUuY29lcmNlIHZhbHVlKSlcbiAgICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgSnMuYXJyYXlfZW1wdHlcbiAgICAgICAgICAgICYmIChVbnNhZmUuY29lcmNlIHZhbHVlKSMjLmxlbmd0aCA9PSA0XG4gICAgICAgICAgICAmJiBVbnNhZmUuZ2V0IHZhbHVlIDAgPT0gMjU1XG4gICAgdGhlblxuICAgICAgT2JqLnJlcHJcbiAgICAgICAgKEpzb29fcnVudGltZS5JbnQ2NC5jcmVhdGVfaW50NjRfbG9fbWlfaGlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMSlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMilcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMykpXG4gICAgZWxzZSBPYmoucmVwciB2YWx1ZVxuICBpblxuICB3cmFwX21ldGhfY2FsbGJhY2sgcmV2aXZlclxuXG5sZXQgdW5zYWZlX2lucHV0IHMgPSBqc29uIyNwYXJzZV8gcyBpbnB1dF9yZXZpdmVyXG5cbmNsYXNzIHR5cGUgb2JqID0gb2JqZWN0XG4gIG1ldGhvZCBjb25zdHJ1Y3RvciA6ICdhLiAnYSBjb25zdHIgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBtbEludDY0X2NvbnN0ciA9XG4gIGxldCBkdW1teV9pbnQ2NCA9IDFMIGluXG4gIGxldCBkdW1teV9vYmogOiBvYmogdCA9IE9iai5tYWdpYyBkdW1teV9pbnQ2NCBpblxuICBkdW1teV9vYmojIy5jb25zdHJ1Y3RvclxuXG5sZXQgb3V0cHV0X3Jldml2ZXIgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgdmFsdWUpID0gT2JqLnN0cmluZ190YWdcbiAgdGhlbiBPYmoucmVwciAoYnl0ZXN0cmluZyAoT2JqLm1hZ2ljIHZhbHVlIDogc3RyaW5nKSlcbiAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIG1sSW50NjRfY29uc3RyXG4gIHRoZW5cbiAgICBsZXQgdmFsdWUgPSBVbnNhZmUuY29lcmNlIHZhbHVlIGluXG4gICAgT2JqLnJlcHIgKGFycmF5IFt8IDI1NTsgdmFsdWUjIy5sbzsgdmFsdWUjIy5taTsgdmFsdWUjIy5oaSB8XSlcbiAgZWxzZSBPYmoucmVwciB2YWx1ZVxuXG5sZXQgb3V0cHV0IG9iaiA9IGpzb24jI3N0cmluZ2lmeV8gb2JqIChKcy53cmFwX2NhbGxiYWNrIG91dHB1dF9yZXZpdmVyKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gICgqIFRoZSB0eXBlIG9mIENTUyBjb2xvcnMuIEZpcnN0IGJ5IG5hbWUgYW5kIHRoZW4gYnkgY29uc3RydWN0b3IuICopXG4gIHR5cGUgbmFtZSA9XG4gICAgfCBBbGljZWJsdWVcbiAgICB8IEFudGlxdWV3aGl0ZVxuICAgIHwgQXF1YVxuICAgIHwgQXF1YW1hcmluZVxuICAgIHwgQXp1cmVcbiAgICB8IEJlaWdlXG4gICAgfCBCaXNxdWVcbiAgICB8IEJsYWNrXG4gICAgfCBCbGFuY2hlZGFsbW9uZFxuICAgIHwgQmx1ZVxuICAgIHwgQmx1ZXZpb2xldFxuICAgIHwgQnJvd25cbiAgICB8IEJ1cmx5d29vZFxuICAgIHwgQ2FkZXRibHVlXG4gICAgfCBDaGFydHJldXNlXG4gICAgfCBDaG9jb2xhdGVcbiAgICB8IENvcmFsXG4gICAgfCBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgQ29ybnNpbGtcbiAgICB8IENyaW1zb25cbiAgICB8IEN5YW5cbiAgICB8IERhcmtibHVlXG4gICAgfCBEYXJrY3lhblxuICAgIHwgRGFya2dvbGRlbnJvZFxuICAgIHwgRGFya2dyYXlcbiAgICB8IERhcmtncmVlblxuICAgIHwgRGFya2dyZXlcbiAgICB8IERhcmtraGFraVxuICAgIHwgRGFya21hZ2VudGFcbiAgICB8IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBEYXJrb3JhbmdlXG4gICAgfCBEYXJrb3JjaGlkXG4gICAgfCBEYXJrcmVkXG4gICAgfCBEYXJrc2FsbW9uXG4gICAgfCBEYXJrc2VhZ3JlZW5cbiAgICB8IERhcmtzbGF0ZWJsdWVcbiAgICB8IERhcmtzbGF0ZWdyYXlcbiAgICB8IERhcmtzbGF0ZWdyZXlcbiAgICB8IERhcmt0dXJxdW9pc2VcbiAgICB8IERhcmt2aW9sZXRcbiAgICB8IERlZXBwaW5rXG4gICAgfCBEZWVwc2t5Ymx1ZVxuICAgIHwgRGltZ3JheVxuICAgIHwgRGltZ3JleVxuICAgIHwgRG9kZ2VyYmx1ZVxuICAgIHwgRmlyZWJyaWNrXG4gICAgfCBGbG9yYWx3aGl0ZVxuICAgIHwgRm9yZXN0Z3JlZW5cbiAgICB8IEZ1Y2hzaWFcbiAgICB8IEdhaW5zYm9yb1xuICAgIHwgR2hvc3R3aGl0ZVxuICAgIHwgR29sZFxuICAgIHwgR29sZGVucm9kXG4gICAgfCBHcmF5XG4gICAgfCBHcmV5XG4gICAgfCBHcmVlblxuICAgIHwgR3JlZW55ZWxsb3dcbiAgICB8IEhvbmV5ZGV3XG4gICAgfCBIb3RwaW5rXG4gICAgfCBJbmRpYW5yZWRcbiAgICB8IEluZGlnb1xuICAgIHwgSXZvcnlcbiAgICB8IEtoYWtpXG4gICAgfCBMYXZlbmRlclxuICAgIHwgTGF2ZW5kZXJibHVzaFxuICAgIHwgTGF3bmdyZWVuXG4gICAgfCBMZW1vbmNoaWZmb25cbiAgICB8IExpZ2h0Ymx1ZVxuICAgIHwgTGlnaHRjb3JhbFxuICAgIHwgTGlnaHRjeWFuXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgTGlnaHRncmF5XG4gICAgfCBMaWdodGdyZWVuXG4gICAgfCBMaWdodGdyZXlcbiAgICB8IExpZ2h0cGlua1xuICAgIHwgTGlnaHRzYWxtb25cbiAgICB8IExpZ2h0c2VhZ3JlZW5cbiAgICB8IExpZ2h0c2t5Ymx1ZVxuICAgIHwgTGlnaHRzbGF0ZWdyYXlcbiAgICB8IExpZ2h0c2xhdGVncmV5XG4gICAgfCBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgTGlnaHR5ZWxsb3dcbiAgICB8IExpbWVcbiAgICB8IExpbWVncmVlblxuICAgIHwgTGluZW5cbiAgICB8IE1hZ2VudGFcbiAgICB8IE1hcm9vblxuICAgIHwgTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgTWVkaXVtYmx1ZVxuICAgIHwgTWVkaXVtb3JjaGlkXG4gICAgfCBNZWRpdW1wdXJwbGVcbiAgICB8IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBNZWRpdW10dXJxdW9pc2VcbiAgICB8IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgTWlkbmlnaHRibHVlXG4gICAgfCBNaW50Y3JlYW1cbiAgICB8IE1pc3R5cm9zZVxuICAgIHwgTW9jY2FzaW5cbiAgICB8IE5hdmFqb3doaXRlXG4gICAgfCBOYXZ5XG4gICAgfCBPbGRsYWNlXG4gICAgfCBPbGl2ZVxuICAgIHwgT2xpdmVkcmFiXG4gICAgfCBPcmFuZ2VcbiAgICB8IE9yYW5nZXJlZFxuICAgIHwgT3JjaGlkXG4gICAgfCBQYWxlZ29sZGVucm9kXG4gICAgfCBQYWxlZ3JlZW5cbiAgICB8IFBhbGV0dXJxdW9pc2VcbiAgICB8IFBhbGV2aW9sZXRyZWRcbiAgICB8IFBhcGF5YXdoaXBcbiAgICB8IFBlYWNocHVmZlxuICAgIHwgUGVydVxuICAgIHwgUGlua1xuICAgIHwgUGx1bVxuICAgIHwgUG93ZGVyYmx1ZVxuICAgIHwgUHVycGxlXG4gICAgfCBSZWRcbiAgICB8IFJvc3licm93blxuICAgIHwgUm95YWxibHVlXG4gICAgfCBTYWRkbGVicm93blxuICAgIHwgU2FsbW9uXG4gICAgfCBTYW5keWJyb3duXG4gICAgfCBTZWFncmVlblxuICAgIHwgU2Vhc2hlbGxcbiAgICB8IFNpZW5uYVxuICAgIHwgU2lsdmVyXG4gICAgfCBTa3libHVlXG4gICAgfCBTbGF0ZWJsdWVcbiAgICB8IFNsYXRlZ3JheVxuICAgIHwgU2xhdGVncmV5XG4gICAgfCBTbm93XG4gICAgfCBTcHJpbmdncmVlblxuICAgIHwgU3RlZWxibHVlXG4gICAgfCBUYW5cbiAgICB8IFRlYWxcbiAgICB8IFRoaXN0bGVcbiAgICB8IFRvbWF0b1xuICAgIHwgVHVycXVvaXNlXG4gICAgfCBWaW9sZXRcbiAgICB8IFdoZWF0XG4gICAgfCBXaGl0ZVxuICAgIHwgV2hpdGVzbW9rZVxuICAgIHwgWWVsbG93XG4gICAgfCBZZWxsb3dncmVlblxuXG4gIGxldCBzdHJpbmdfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gXCJhbGljZWJsdWVcIlxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IFwiYW50aXF1ZXdoaXRlXCJcbiAgICB8IEFxdWEgLT4gXCJhcXVhXCJcbiAgICB8IEFxdWFtYXJpbmUgLT4gXCJhcXVhbWFyaW5lXCJcbiAgICB8IEF6dXJlIC0+IFwiYXp1cmVcIlxuICAgIHwgQmVpZ2UgLT4gXCJiZWlnZVwiXG4gICAgfCBCaXNxdWUgLT4gXCJiaXNxdWVcIlxuICAgIHwgQmxhY2sgLT4gXCJibGFja1wiXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiBcImJsYW5jaGVkYWxtb25kXCJcbiAgICB8IEJsdWUgLT4gXCJibHVlXCJcbiAgICB8IEJsdWV2aW9sZXQgLT4gXCJibHVldmlvbGV0XCJcbiAgICB8IEJyb3duIC0+IFwiYnJvd25cIlxuICAgIHwgQnVybHl3b29kIC0+IFwiYnVybHl3b29kXCJcbiAgICB8IENhZGV0Ymx1ZSAtPiBcImNhZGV0Ymx1ZVwiXG4gICAgfCBDaGFydHJldXNlIC0+IFwiY2hhcnRyZXVzZVwiXG4gICAgfCBDaG9jb2xhdGUgLT4gXCJjaG9jb2xhdGVcIlxuICAgIHwgQ29yYWwgLT4gXCJjb3JhbFwiXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiBcImNvcm5mbG93ZXJibHVlXCJcbiAgICB8IENvcm5zaWxrIC0+IFwiY29ybnNpbGtcIlxuICAgIHwgQ3JpbXNvbiAtPiBcImNyaW1zb25cIlxuICAgIHwgQ3lhbiAtPiBcImN5YW5cIlxuICAgIHwgRGFya2JsdWUgLT4gXCJkYXJrYmx1ZVwiXG4gICAgfCBEYXJrY3lhbiAtPiBcImRhcmtjeWFuXCJcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gXCJkYXJrZ29sZGVucm9kXCJcbiAgICB8IERhcmtncmF5IC0+IFwiZGFya2dyYXlcIlxuICAgIHwgRGFya2dyZWVuIC0+IFwiZGFya2dyZWVuXCJcbiAgICB8IERhcmtncmV5IC0+IFwiZGFya2dyZXlcIlxuICAgIHwgRGFya2toYWtpIC0+IFwiZGFya2toYWtpXCJcbiAgICB8IERhcmttYWdlbnRhIC0+IFwiZGFya21hZ2VudGFcIlxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gXCJkYXJrb2xpdmVncmVlblwiXG4gICAgfCBEYXJrb3JhbmdlIC0+IFwiZGFya29yYW5nZVwiXG4gICAgfCBEYXJrb3JjaGlkIC0+IFwiZGFya29yY2hpZFwiXG4gICAgfCBEYXJrcmVkIC0+IFwiZGFya3JlZFwiXG4gICAgfCBEYXJrc2FsbW9uIC0+IFwiZGFya3NhbG1vblwiXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gXCJkYXJrc2VhZ3JlZW5cIlxuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiBcImRhcmtzbGF0ZWJsdWVcIlxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiBcImRhcmtzbGF0ZWdyYXlcIlxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiBcImRhcmtzbGF0ZWdyZXlcIlxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiBcImRhcmt0dXJxdW9pc2VcIlxuICAgIHwgRGFya3Zpb2xldCAtPiBcImRhcmt2aW9sZXRcIlxuICAgIHwgRGVlcHBpbmsgLT4gXCJkZWVwcGlua1wiXG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiBcImRlZXBza3libHVlXCJcbiAgICB8IERpbWdyYXkgLT4gXCJkaW1ncmF5XCJcbiAgICB8IERpbWdyZXkgLT4gXCJkaW1ncmV5XCJcbiAgICB8IERvZGdlcmJsdWUgLT4gXCJkb2RnZXJibHVlXCJcbiAgICB8IEZpcmVicmljayAtPiBcImZpcmVicmlja1wiXG4gICAgfCBGbG9yYWx3aGl0ZSAtPiBcImZsb3JhbHdoaXRlXCJcbiAgICB8IEZvcmVzdGdyZWVuIC0+IFwiZm9yZXN0Z3JlZW5cIlxuICAgIHwgRnVjaHNpYSAtPiBcImZ1Y2hzaWFcIlxuICAgIHwgR2FpbnNib3JvIC0+IFwiZ2FpbnNib3JvXCJcbiAgICB8IEdob3N0d2hpdGUgLT4gXCJnaG9zdHdoaXRlXCJcbiAgICB8IEdvbGQgLT4gXCJnb2xkXCJcbiAgICB8IEdvbGRlbnJvZCAtPiBcImdvbGRlbnJvZFwiXG4gICAgfCBHcmF5IC0+IFwiZ3JheVwiXG4gICAgfCBHcmVlbiAtPiBcImdyZWVuXCJcbiAgICB8IEdyZWVueWVsbG93IC0+IFwiZ3JlZW55ZWxsb3dcIlxuICAgIHwgR3JleSAtPiBcImdyZXlcIlxuICAgIHwgSG9uZXlkZXcgLT4gXCJob25leWRld1wiXG4gICAgfCBIb3RwaW5rIC0+IFwiaG90cGlua1wiXG4gICAgfCBJbmRpYW5yZWQgLT4gXCJpbmRpYW5yZWRcIlxuICAgIHwgSW5kaWdvIC0+IFwiaW5kaWdvXCJcbiAgICB8IEl2b3J5IC0+IFwiaXZvcnlcIlxuICAgIHwgS2hha2kgLT4gXCJraGFraVwiXG4gICAgfCBMYXZlbmRlciAtPiBcImxhdmVuZGVyXCJcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gXCJsYXZlbmRlcmJsdXNoXCJcbiAgICB8IExhd25ncmVlbiAtPiBcImxhd25ncmVlblwiXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gXCJsZW1vbmNoaWZmb25cIlxuICAgIHwgTGlnaHRibHVlIC0+IFwibGlnaHRibHVlXCJcbiAgICB8IExpZ2h0Y29yYWwgLT4gXCJsaWdodGNvcmFsXCJcbiAgICB8IExpZ2h0Y3lhbiAtPiBcImxpZ2h0Y3lhblwiXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICB8IExpZ2h0Z3JheSAtPiBcImxpZ2h0Z3JheVwiXG4gICAgfCBMaWdodGdyZWVuIC0+IFwibGlnaHRncmVlblwiXG4gICAgfCBMaWdodGdyZXkgLT4gXCJsaWdodGdyZXlcIlxuICAgIHwgTGlnaHRwaW5rIC0+IFwibGlnaHRwaW5rXCJcbiAgICB8IExpZ2h0c2FsbW9uIC0+IFwibGlnaHRzYWxtb25cIlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgIHwgTGlnaHRza3libHVlIC0+IFwibGlnaHRza3libHVlXCJcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICB8IExpZ2h0eWVsbG93IC0+IFwibGlnaHR5ZWxsb3dcIlxuICAgIHwgTGltZSAtPiBcImxpbWVcIlxuICAgIHwgTGltZWdyZWVuIC0+IFwibGltZWdyZWVuXCJcbiAgICB8IExpbmVuIC0+IFwibGluZW5cIlxuICAgIHwgTWFnZW50YSAtPiBcIm1hZ2VudGFcIlxuICAgIHwgTWFyb29uIC0+IFwibWFyb29uXCJcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICB8IE1lZGl1bWJsdWUgLT4gXCJtZWRpdW1ibHVlXCJcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiBcIm1lZGl1bW9yY2hpZFwiXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gXCJtZWRpdW1wdXJwbGVcIlxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gXCJtZWRpdW1zZWFncmVlblwiXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgfCBNaW50Y3JlYW0gLT4gXCJtaW50Y3JlYW1cIlxuICAgIHwgTWlzdHlyb3NlIC0+IFwibWlzdHlyb3NlXCJcbiAgICB8IE1vY2Nhc2luIC0+IFwibW9jY2FzaW5cIlxuICAgIHwgTmF2YWpvd2hpdGUgLT4gXCJuYXZham93aGl0ZVwiXG4gICAgfCBOYXZ5IC0+IFwibmF2eVwiXG4gICAgfCBPbGRsYWNlIC0+IFwib2xkbGFjZVwiXG4gICAgfCBPbGl2ZSAtPiBcIm9saXZlXCJcbiAgICB8IE9saXZlZHJhYiAtPiBcIm9saXZlZHJhYlwiXG4gICAgfCBPcmFuZ2UgLT4gXCJvcmFuZ2VcIlxuICAgIHwgT3JhbmdlcmVkIC0+IFwib3JhbmdlcmVkXCJcbiAgICB8IE9yY2hpZCAtPiBcIm9yY2hpZFwiXG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgfCBQYWxlZ3JlZW4gLT4gXCJwYWxlZ3JlZW5cIlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiBcInBhbGV0dXJxdW9pc2VcIlxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiBcInBhbGV2aW9sZXRyZWRcIlxuICAgIHwgUGFwYXlhd2hpcCAtPiBcInBhcGF5YXdoaXBcIlxuICAgIHwgUGVhY2hwdWZmIC0+IFwicGVhY2hwdWZmXCJcbiAgICB8IFBlcnUgLT4gXCJwZXJ1XCJcbiAgICB8IFBpbmsgLT4gXCJwaW5rXCJcbiAgICB8IFBsdW0gLT4gXCJwbHVtXCJcbiAgICB8IFBvd2RlcmJsdWUgLT4gXCJwb3dkZXJibHVlXCJcbiAgICB8IFB1cnBsZSAtPiBcInB1cnBsZVwiXG4gICAgfCBSZWQgLT4gXCJyZWRcIlxuICAgIHwgUm9zeWJyb3duIC0+IFwicm9zeWJyb3duXCJcbiAgICB8IFJveWFsYmx1ZSAtPiBcInJveWFsYmx1ZVwiXG4gICAgfCBTYWRkbGVicm93biAtPiBcInNhZGRsZWJyb3duXCJcbiAgICB8IFNhbG1vbiAtPiBcInNhbG1vblwiXG4gICAgfCBTYW5keWJyb3duIC0+IFwic2FuZHlicm93blwiXG4gICAgfCBTZWFncmVlbiAtPiBcInNlYWdyZWVuXCJcbiAgICB8IFNlYXNoZWxsIC0+IFwic2Vhc2hlbGxcIlxuICAgIHwgU2llbm5hIC0+IFwic2llbm5hXCJcbiAgICB8IFNpbHZlciAtPiBcInNpbHZlclwiXG4gICAgfCBTa3libHVlIC0+IFwic2t5Ymx1ZVwiXG4gICAgfCBTbGF0ZWJsdWUgLT4gXCJzbGF0ZWJsdWVcIlxuICAgIHwgU2xhdGVncmF5IC0+IFwic2xhdGVncmF5XCJcbiAgICB8IFNsYXRlZ3JleSAtPiBcInNsYXRlZ3JleVwiXG4gICAgfCBTbm93IC0+IFwic25vd1wiXG4gICAgfCBTcHJpbmdncmVlbiAtPiBcInNwcmluZ2dyZWVuXCJcbiAgICB8IFN0ZWVsYmx1ZSAtPiBcInN0ZWVsYmx1ZVwiXG4gICAgfCBUYW4gLT4gXCJ0YW5cIlxuICAgIHwgVGVhbCAtPiBcInRlYWxcIlxuICAgIHwgVGhpc3RsZSAtPiBcInRoaXN0bGVcIlxuICAgIHwgVG9tYXRvIC0+IFwidG9tYXRvXCJcbiAgICB8IFR1cnF1b2lzZSAtPiBcInR1cnF1b2lzZVwiXG4gICAgfCBWaW9sZXQgLT4gXCJ2aW9sZXRcIlxuICAgIHwgV2hlYXQgLT4gXCJ3aGVhdFwiXG4gICAgfCBXaGl0ZSAtPiBcIndoaXRlXCJcbiAgICB8IFdoaXRlc21va2UgLT4gXCJ3aGl0ZXNtb2tlXCJcbiAgICB8IFllbGxvdyAtPiBcInllbGxvd1wiXG4gICAgfCBZZWxsb3dncmVlbiAtPiBcInllbGxvd2dyZWVuXCJcblxuICBsZXQgbmFtZV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJhbGljZWJsdWVcIiAtPiBBbGljZWJsdWVcbiAgICB8IFwiYW50aXF1ZXdoaXRlXCIgLT4gQW50aXF1ZXdoaXRlXG4gICAgfCBcImFxdWFcIiAtPiBBcXVhXG4gICAgfCBcImFxdWFtYXJpbmVcIiAtPiBBcXVhbWFyaW5lXG4gICAgfCBcImF6dXJlXCIgLT4gQXp1cmVcbiAgICB8IFwiYmVpZ2VcIiAtPiBCZWlnZVxuICAgIHwgXCJiaXNxdWVcIiAtPiBCaXNxdWVcbiAgICB8IFwiYmxhY2tcIiAtPiBCbGFja1xuICAgIHwgXCJibGFuY2hlZGFsbW9uZFwiIC0+IEJsYW5jaGVkYWxtb25kXG4gICAgfCBcImJsdWVcIiAtPiBCbHVlXG4gICAgfCBcImJsdWV2aW9sZXRcIiAtPiBCbHVldmlvbGV0XG4gICAgfCBcImJyb3duXCIgLT4gQnJvd25cbiAgICB8IFwiYnVybHl3b29kXCIgLT4gQnVybHl3b29kXG4gICAgfCBcImNhZGV0Ymx1ZVwiIC0+IENhZGV0Ymx1ZVxuICAgIHwgXCJjaGFydHJldXNlXCIgLT4gQ2hhcnRyZXVzZVxuICAgIHwgXCJjaG9jb2xhdGVcIiAtPiBDaG9jb2xhdGVcbiAgICB8IFwiY29yYWxcIiAtPiBDb3JhbFxuICAgIHwgXCJjb3JuZmxvd2VyYmx1ZVwiIC0+IENvcm5mbG93ZXJibHVlXG4gICAgfCBcImNvcm5zaWxrXCIgLT4gQ29ybnNpbGtcbiAgICB8IFwiY3JpbXNvblwiIC0+IENyaW1zb25cbiAgICB8IFwiY3lhblwiIC0+IEN5YW5cbiAgICB8IFwiZGFya2JsdWVcIiAtPiBEYXJrYmx1ZVxuICAgIHwgXCJkYXJrY3lhblwiIC0+IERhcmtjeWFuXG4gICAgfCBcImRhcmtnb2xkZW5yb2RcIiAtPiBEYXJrZ29sZGVucm9kXG4gICAgfCBcImRhcmtncmF5XCIgLT4gRGFya2dyYXlcbiAgICB8IFwiZGFya2dyZWVuXCIgLT4gRGFya2dyZWVuXG4gICAgfCBcImRhcmtncmV5XCIgLT4gRGFya2dyZXlcbiAgICB8IFwiZGFya2toYWtpXCIgLT4gRGFya2toYWtpXG4gICAgfCBcImRhcmttYWdlbnRhXCIgLT4gRGFya21hZ2VudGFcbiAgICB8IFwiZGFya29saXZlZ3JlZW5cIiAtPiBEYXJrb2xpdmVncmVlblxuICAgIHwgXCJkYXJrb3JhbmdlXCIgLT4gRGFya29yYW5nZVxuICAgIHwgXCJkYXJrb3JjaGlkXCIgLT4gRGFya29yY2hpZFxuICAgIHwgXCJkYXJrcmVkXCIgLT4gRGFya3JlZFxuICAgIHwgXCJkYXJrc2FsbW9uXCIgLT4gRGFya3NhbG1vblxuICAgIHwgXCJkYXJrc2VhZ3JlZW5cIiAtPiBEYXJrc2VhZ3JlZW5cbiAgICB8IFwiZGFya3NsYXRlYmx1ZVwiIC0+IERhcmtzbGF0ZWJsdWVcbiAgICB8IFwiZGFya3NsYXRlZ3JheVwiIC0+IERhcmtzbGF0ZWdyYXlcbiAgICB8IFwiZGFya3NsYXRlZ3JleVwiIC0+IERhcmtzbGF0ZWdyZXlcbiAgICB8IFwiZGFya3R1cnF1b2lzZVwiIC0+IERhcmt0dXJxdW9pc2VcbiAgICB8IFwiZGFya3Zpb2xldFwiIC0+IERhcmt2aW9sZXRcbiAgICB8IFwiZGVlcHBpbmtcIiAtPiBEZWVwcGlua1xuICAgIHwgXCJkZWVwc2t5Ymx1ZVwiIC0+IERlZXBza3libHVlXG4gICAgfCBcImRpbWdyYXlcIiAtPiBEaW1ncmF5XG4gICAgfCBcImRpbWdyZXlcIiAtPiBEaW1ncmV5XG4gICAgfCBcImRvZGdlcmJsdWVcIiAtPiBEb2RnZXJibHVlXG4gICAgfCBcImZpcmVicmlja1wiIC0+IEZpcmVicmlja1xuICAgIHwgXCJmbG9yYWx3aGl0ZVwiIC0+IEZsb3JhbHdoaXRlXG4gICAgfCBcImZvcmVzdGdyZWVuXCIgLT4gRm9yZXN0Z3JlZW5cbiAgICB8IFwiZnVjaHNpYVwiIC0+IEZ1Y2hzaWFcbiAgICB8IFwiZ2FpbnNib3JvXCIgLT4gR2FpbnNib3JvXG4gICAgfCBcImdob3N0d2hpdGVcIiAtPiBHaG9zdHdoaXRlXG4gICAgfCBcImdvbGRcIiAtPiBHb2xkXG4gICAgfCBcImdvbGRlbnJvZFwiIC0+IEdvbGRlbnJvZFxuICAgIHwgXCJncmF5XCIgLT4gR3JheVxuICAgIHwgXCJncmVlblwiIC0+IEdyZWVuXG4gICAgfCBcImdyZWVueWVsbG93XCIgLT4gR3JlZW55ZWxsb3dcbiAgICB8IFwiZ3JleVwiIC0+IEdyZXlcbiAgICB8IFwiaG9uZXlkZXdcIiAtPiBIb25leWRld1xuICAgIHwgXCJob3RwaW5rXCIgLT4gSG90cGlua1xuICAgIHwgXCJpbmRpYW5yZWRcIiAtPiBJbmRpYW5yZWRcbiAgICB8IFwiaW5kaWdvXCIgLT4gSW5kaWdvXG4gICAgfCBcIml2b3J5XCIgLT4gSXZvcnlcbiAgICB8IFwia2hha2lcIiAtPiBLaGFraVxuICAgIHwgXCJsYXZlbmRlclwiIC0+IExhdmVuZGVyXG4gICAgfCBcImxhdmVuZGVyYmx1c2hcIiAtPiBMYXZlbmRlcmJsdXNoXG4gICAgfCBcImxhd25ncmVlblwiIC0+IExhd25ncmVlblxuICAgIHwgXCJsZW1vbmNoaWZmb25cIiAtPiBMZW1vbmNoaWZmb25cbiAgICB8IFwibGlnaHRibHVlXCIgLT4gTGlnaHRibHVlXG4gICAgfCBcImxpZ2h0Y29yYWxcIiAtPiBMaWdodGNvcmFsXG4gICAgfCBcImxpZ2h0Y3lhblwiIC0+IExpZ2h0Y3lhblxuICAgIHwgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiIC0+IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBcImxpZ2h0Z3JheVwiIC0+IExpZ2h0Z3JheVxuICAgIHwgXCJsaWdodGdyZWVuXCIgLT4gTGlnaHRncmVlblxuICAgIHwgXCJsaWdodGdyZXlcIiAtPiBMaWdodGdyZXlcbiAgICB8IFwibGlnaHRwaW5rXCIgLT4gTGlnaHRwaW5rXG4gICAgfCBcImxpZ2h0c2FsbW9uXCIgLT4gTGlnaHRzYWxtb25cbiAgICB8IFwibGlnaHRzZWFncmVlblwiIC0+IExpZ2h0c2VhZ3JlZW5cbiAgICB8IFwibGlnaHRza3libHVlXCIgLT4gTGlnaHRza3libHVlXG4gICAgfCBcImxpZ2h0c2xhdGVncmF5XCIgLT4gTGlnaHRzbGF0ZWdyYXlcbiAgICB8IFwibGlnaHRzbGF0ZWdyZXlcIiAtPiBMaWdodHNsYXRlZ3JleVxuICAgIHwgXCJsaWdodHN0ZWVsYmx1ZVwiIC0+IExpZ2h0c3RlZWxibHVlXG4gICAgfCBcImxpZ2h0eWVsbG93XCIgLT4gTGlnaHR5ZWxsb3dcbiAgICB8IFwibGltZVwiIC0+IExpbWVcbiAgICB8IFwibGltZWdyZWVuXCIgLT4gTGltZWdyZWVuXG4gICAgfCBcImxpbmVuXCIgLT4gTGluZW5cbiAgICB8IFwibWFnZW50YVwiIC0+IE1hZ2VudGFcbiAgICB8IFwibWFyb29uXCIgLT4gTWFyb29uXG4gICAgfCBcIm1lZGl1bWFxdWFtYXJpbmVcIiAtPiBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBcIm1lZGl1bWJsdWVcIiAtPiBNZWRpdW1ibHVlXG4gICAgfCBcIm1lZGl1bW9yY2hpZFwiIC0+IE1lZGl1bW9yY2hpZFxuICAgIHwgXCJtZWRpdW1wdXJwbGVcIiAtPiBNZWRpdW1wdXJwbGVcbiAgICB8IFwibWVkaXVtc2VhZ3JlZW5cIiAtPiBNZWRpdW1zZWFncmVlblxuICAgIHwgXCJtZWRpdW1zbGF0ZWJsdWVcIiAtPiBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IFwibWVkaXVtc3ByaW5nZ3JlZW5cIiAtPiBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgXCJtZWRpdW10dXJxdW9pc2VcIiAtPiBNZWRpdW10dXJxdW9pc2VcbiAgICB8IFwibWVkaXVtdmlvbGV0cmVkXCIgLT4gTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBcIm1pZG5pZ2h0Ymx1ZVwiIC0+IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgXCJtaW50Y3JlYW1cIiAtPiBNaW50Y3JlYW1cbiAgICB8IFwibWlzdHlyb3NlXCIgLT4gTWlzdHlyb3NlXG4gICAgfCBcIm1vY2Nhc2luXCIgLT4gTW9jY2FzaW5cbiAgICB8IFwibmF2YWpvd2hpdGVcIiAtPiBOYXZham93aGl0ZVxuICAgIHwgXCJuYXZ5XCIgLT4gTmF2eVxuICAgIHwgXCJvbGRsYWNlXCIgLT4gT2xkbGFjZVxuICAgIHwgXCJvbGl2ZVwiIC0+IE9saXZlXG4gICAgfCBcIm9saXZlZHJhYlwiIC0+IE9saXZlZHJhYlxuICAgIHwgXCJvcmFuZ2VcIiAtPiBPcmFuZ2VcbiAgICB8IFwib3JhbmdlcmVkXCIgLT4gT3JhbmdlcmVkXG4gICAgfCBcIm9yY2hpZFwiIC0+IE9yY2hpZFxuICAgIHwgXCJwYWxlZ29sZGVucm9kXCIgLT4gUGFsZWdvbGRlbnJvZFxuICAgIHwgXCJwYWxlZ3JlZW5cIiAtPiBQYWxlZ3JlZW5cbiAgICB8IFwicGFsZXR1cnF1b2lzZVwiIC0+IFBhbGV0dXJxdW9pc2VcbiAgICB8IFwicGFsZXZpb2xldHJlZFwiIC0+IFBhbGV2aW9sZXRyZWRcbiAgICB8IFwicGFwYXlhd2hpcFwiIC0+IFBhcGF5YXdoaXBcbiAgICB8IFwicGVhY2hwdWZmXCIgLT4gUGVhY2hwdWZmXG4gICAgfCBcInBlcnVcIiAtPiBQZXJ1XG4gICAgfCBcInBpbmtcIiAtPiBQaW5rXG4gICAgfCBcInBsdW1cIiAtPiBQbHVtXG4gICAgfCBcInBvd2RlcmJsdWVcIiAtPiBQb3dkZXJibHVlXG4gICAgfCBcInB1cnBsZVwiIC0+IFB1cnBsZVxuICAgIHwgXCJyZWRcIiAtPiBSZWRcbiAgICB8IFwicm9zeWJyb3duXCIgLT4gUm9zeWJyb3duXG4gICAgfCBcInJveWFsYmx1ZVwiIC0+IFJveWFsYmx1ZVxuICAgIHwgXCJzYWRkbGVicm93blwiIC0+IFNhZGRsZWJyb3duXG4gICAgfCBcInNhbG1vblwiIC0+IFNhbG1vblxuICAgIHwgXCJzYW5keWJyb3duXCIgLT4gU2FuZHlicm93blxuICAgIHwgXCJzZWFncmVlblwiIC0+IFNlYWdyZWVuXG4gICAgfCBcInNlYXNoZWxsXCIgLT4gU2Vhc2hlbGxcbiAgICB8IFwic2llbm5hXCIgLT4gU2llbm5hXG4gICAgfCBcInNpbHZlclwiIC0+IFNpbHZlclxuICAgIHwgXCJza3libHVlXCIgLT4gU2t5Ymx1ZVxuICAgIHwgXCJzbGF0ZWJsdWVcIiAtPiBTbGF0ZWJsdWVcbiAgICB8IFwic2xhdGVncmF5XCIgLT4gU2xhdGVncmF5XG4gICAgfCBcInNsYXRlZ3JleVwiIC0+IFNsYXRlZ3JleVxuICAgIHwgXCJzbm93XCIgLT4gU25vd1xuICAgIHwgXCJzcHJpbmdncmVlblwiIC0+IFNwcmluZ2dyZWVuXG4gICAgfCBcInN0ZWVsYmx1ZVwiIC0+IFN0ZWVsYmx1ZVxuICAgIHwgXCJ0YW5cIiAtPiBUYW5cbiAgICB8IFwidGVhbFwiIC0+IFRlYWxcbiAgICB8IFwidGhpc3RsZVwiIC0+IFRoaXN0bGVcbiAgICB8IFwidG9tYXRvXCIgLT4gVG9tYXRvXG4gICAgfCBcInR1cnF1b2lzZVwiIC0+IFR1cnF1b2lzZVxuICAgIHwgXCJ2aW9sZXRcIiAtPiBWaW9sZXRcbiAgICB8IFwid2hlYXRcIiAtPiBXaGVhdFxuICAgIHwgXCJ3aGl0ZVwiIC0+IFdoaXRlXG4gICAgfCBcIndoaXRlc21va2VcIiAtPiBXaGl0ZXNtb2tlXG4gICAgfCBcInllbGxvd1wiIC0+IFllbGxvd1xuICAgIHwgXCJ5ZWxsb3dncmVlblwiIC0+IFllbGxvd2dyZWVuXG4gICAgfCBzIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3IgbmFtZVwiKSlcblxuICBsZXQgcmdiX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IDI0MCwgMjQ4LCAyNTVcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiAyNTAsIDIzNSwgMjE1XG4gICAgfCBBcXVhIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBBcXVhbWFyaW5lIC0+IDEyNywgMjU1LCAyMTJcbiAgICB8IEF6dXJlIC0+IDI0MCwgMjU1LCAyNTVcbiAgICB8IEJlaWdlIC0+IDI0NSwgMjQ1LCAyMjBcbiAgICB8IEJpc3F1ZSAtPiAyNTUsIDIyOCwgMTk2XG4gICAgfCBCbGFjayAtPiAwLCAwLCAwXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiAyNTUsIDIzNSwgMjA1XG4gICAgfCBCbHVlIC0+IDAsIDAsIDI1NVxuICAgIHwgQmx1ZXZpb2xldCAtPiAxMzgsIDQzLCAyMjZcbiAgICB8IEJyb3duIC0+IDE2NSwgNDIsIDQyXG4gICAgfCBCdXJseXdvb2QgLT4gMjIyLCAxODQsIDEzNVxuICAgIHwgQ2FkZXRibHVlIC0+IDk1LCAxNTgsIDE2MFxuICAgIHwgQ2hhcnRyZXVzZSAtPiAxMjcsIDI1NSwgMFxuICAgIHwgQ2hvY29sYXRlIC0+IDIxMCwgMTA1LCAzMFxuICAgIHwgQ29yYWwgLT4gMjU1LCAxMjcsIDgwXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiAxMDAsIDE0OSwgMjM3XG4gICAgfCBDb3Juc2lsayAtPiAyNTUsIDI0OCwgMjIwXG4gICAgfCBDcmltc29uIC0+IDIyMCwgMjAsIDYwXG4gICAgfCBDeWFuIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBEYXJrYmx1ZSAtPiAwLCAwLCAxMzlcbiAgICB8IERhcmtjeWFuIC0+IDAsIDEzOSwgMTM5XG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IDE4NCwgMTM0LCAxMVxuICAgIHwgRGFya2dyYXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2dyZWVuIC0+IDAsIDEwMCwgMFxuICAgIHwgRGFya2dyZXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2toYWtpIC0+IDE4OSwgMTgzLCAxMDdcbiAgICB8IERhcmttYWdlbnRhIC0+IDEzOSwgMCwgMTM5XG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiA4NSwgMTA3LCA0N1xuICAgIHwgRGFya29yYW5nZSAtPiAyNTUsIDE0MCwgMFxuICAgIHwgRGFya29yY2hpZCAtPiAxNTMsIDUwLCAyMDRcbiAgICB8IERhcmtyZWQgLT4gMTM5LCAwLCAwXG4gICAgfCBEYXJrc2FsbW9uIC0+IDIzMywgMTUwLCAxMjJcbiAgICB8IERhcmtzZWFncmVlbiAtPiAxNDMsIDE4OCwgMTQzXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IDcyLCA2MSwgMTM5XG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiAwLCAyMDYsIDIwOVxuICAgIHwgRGFya3Zpb2xldCAtPiAxNDgsIDAsIDIxMVxuICAgIHwgRGVlcHBpbmsgLT4gMjU1LCAyMCwgMTQ3XG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiAwLCAxOTEsIDI1NVxuICAgIHwgRGltZ3JheSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEaW1ncmV5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERvZGdlcmJsdWUgLT4gMzAsIDE0NCwgMjU1XG4gICAgfCBGaXJlYnJpY2sgLT4gMTc4LCAzNCwgMzRcbiAgICB8IEZsb3JhbHdoaXRlIC0+IDI1NSwgMjUwLCAyNDBcbiAgICB8IEZvcmVzdGdyZWVuIC0+IDM0LCAxMzksIDM0XG4gICAgfCBGdWNoc2lhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBHYWluc2Jvcm8gLT4gMjIwLCAyMjAsIDIyMFxuICAgIHwgR2hvc3R3aGl0ZSAtPiAyNDgsIDI0OCwgMjU1XG4gICAgfCBHb2xkIC0+IDI1NSwgMjE1LCAwXG4gICAgfCBHb2xkZW5yb2QgLT4gMjE4LCAxNjUsIDMyXG4gICAgfCBHcmF5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEdyZWVuIC0+IDAsIDEyOCwgMFxuICAgIHwgR3JlZW55ZWxsb3cgLT4gMTczLCAyNTUsIDQ3XG4gICAgfCBHcmV5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEhvbmV5ZGV3IC0+IDI0MCwgMjU1LCAyNDBcbiAgICB8IEhvdHBpbmsgLT4gMjU1LCAxMDUsIDE4MFxuICAgIHwgSW5kaWFucmVkIC0+IDIwNSwgOTIsIDkyXG4gICAgfCBJbmRpZ28gLT4gNzUsIDAsIDEzMFxuICAgIHwgSXZvcnkgLT4gMjU1LCAyNTUsIDI0MFxuICAgIHwgS2hha2kgLT4gMjQwLCAyMzAsIDE0MFxuICAgIHwgTGF2ZW5kZXIgLT4gMjMwLCAyMzAsIDI1MFxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiAyNTUsIDI0MCwgMjQ1XG4gICAgfCBMYXduZ3JlZW4gLT4gMTI0LCAyNTIsIDBcbiAgICB8IExlbW9uY2hpZmZvbiAtPiAyNTUsIDI1MCwgMjA1XG4gICAgfCBMaWdodGJsdWUgLT4gMTczLCAyMTYsIDIzMFxuICAgIHwgTGlnaHRjb3JhbCAtPiAyNDAsIDEyOCwgMTI4XG4gICAgfCBMaWdodGN5YW4gLT4gMjI0LCAyNTUsIDI1NVxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gMjUwLCAyNTAsIDIxMFxuICAgIHwgTGlnaHRncmF5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0Z3JlZW4gLT4gMTQ0LCAyMzgsIDE0NFxuICAgIHwgTGlnaHRncmV5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0cGluayAtPiAyNTUsIDE4MiwgMTkzXG4gICAgfCBMaWdodHNhbG1vbiAtPiAyNTUsIDE2MCwgMTIyXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IDMyLCAxNzgsIDE3MFxuICAgIHwgTGlnaHRza3libHVlIC0+IDEzNSwgMjA2LCAyNTBcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IDE3NiwgMTk2LCAyMjJcbiAgICB8IExpZ2h0eWVsbG93IC0+IDI1NSwgMjU1LCAyMjRcbiAgICB8IExpbWUgLT4gMCwgMjU1LCAwXG4gICAgfCBMaW1lZ3JlZW4gLT4gNTAsIDIwNSwgNTBcbiAgICB8IExpbmVuIC0+IDI1MCwgMjQwLCAyMzBcbiAgICB8IE1hZ2VudGEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IE1hcm9vbiAtPiAxMjgsIDAsIDBcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gMTAyLCAyMDUsIDE3MFxuICAgIHwgTWVkaXVtYmx1ZSAtPiAwLCAwLCAyMDVcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiAxODYsIDg1LCAyMTFcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiAxNDcsIDExMiwgMjE5XG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiA2MCwgMTc5LCAxMTNcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiAxMjMsIDEwNCwgMjM4XG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiAwLCAyNTAsIDE1NFxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IDcyLCAyMDksIDIwNFxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IDE5OSwgMjEsIDEzM1xuICAgIHwgTWlkbmlnaHRibHVlIC0+IDI1LCAyNSwgMTEyXG4gICAgfCBNaW50Y3JlYW0gLT4gMjQ1LCAyNTUsIDI1MFxuICAgIHwgTWlzdHlyb3NlIC0+IDI1NSwgMjI4LCAyMjVcbiAgICB8IE1vY2Nhc2luIC0+IDI1NSwgMjI4LCAxODFcbiAgICB8IE5hdmFqb3doaXRlIC0+IDI1NSwgMjIyLCAxNzNcbiAgICB8IE5hdnkgLT4gMCwgMCwgMTI4XG4gICAgfCBPbGRsYWNlIC0+IDI1MywgMjQ1LCAyMzBcbiAgICB8IE9saXZlIC0+IDEyOCwgMTI4LCAwXG4gICAgfCBPbGl2ZWRyYWIgLT4gMTA3LCAxNDIsIDM1XG4gICAgfCBPcmFuZ2UgLT4gMjU1LCAxNjUsIDBcbiAgICB8IE9yYW5nZXJlZCAtPiAyNTUsIDY5LCAwXG4gICAgfCBPcmNoaWQgLT4gMjE4LCAxMTIsIDIxNFxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiAyMzgsIDIzMiwgMTcwXG4gICAgfCBQYWxlZ3JlZW4gLT4gMTUyLCAyNTEsIDE1MlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiAxNzUsIDIzOCwgMjM4XG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IDIxOSwgMTEyLCAxNDdcbiAgICB8IFBhcGF5YXdoaXAgLT4gMjU1LCAyMzksIDIxM1xuICAgIHwgUGVhY2hwdWZmIC0+IDI1NSwgMjE4LCAxODVcbiAgICB8IFBlcnUgLT4gMjA1LCAxMzMsIDYzXG4gICAgfCBQaW5rIC0+IDI1NSwgMTkyLCAyMDNcbiAgICB8IFBsdW0gLT4gMjIxLCAxNjAsIDIyMVxuICAgIHwgUG93ZGVyYmx1ZSAtPiAxNzYsIDIyNCwgMjMwXG4gICAgfCBQdXJwbGUgLT4gMTI4LCAwLCAxMjhcbiAgICB8IFJlZCAtPiAyNTUsIDAsIDBcbiAgICB8IFJvc3licm93biAtPiAxODgsIDE0MywgMTQzXG4gICAgfCBSb3lhbGJsdWUgLT4gNjUsIDEwNSwgMjI1XG4gICAgfCBTYWRkbGVicm93biAtPiAxMzksIDY5LCAxOVxuICAgIHwgU2FsbW9uIC0+IDI1MCwgMTI4LCAxMTRcbiAgICB8IFNhbmR5YnJvd24gLT4gMjQ0LCAxNjQsIDk2XG4gICAgfCBTZWFncmVlbiAtPiA0NiwgMTM5LCA4N1xuICAgIHwgU2Vhc2hlbGwgLT4gMjU1LCAyNDUsIDIzOFxuICAgIHwgU2llbm5hIC0+IDE2MCwgODIsIDQ1XG4gICAgfCBTaWx2ZXIgLT4gMTkyLCAxOTIsIDE5MlxuICAgIHwgU2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjM1XG4gICAgfCBTbGF0ZWJsdWUgLT4gMTA2LCA5MCwgMjA1XG4gICAgfCBTbGF0ZWdyYXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU2xhdGVncmV5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNub3cgLT4gMjU1LCAyNTAsIDI1MFxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gMCwgMjU1LCAxMjdcbiAgICB8IFN0ZWVsYmx1ZSAtPiA3MCwgMTMwLCAxODBcbiAgICB8IFRhbiAtPiAyMTAsIDE4MCwgMTQwXG4gICAgfCBUZWFsIC0+IDAsIDEyOCwgMTI4XG4gICAgfCBUaGlzdGxlIC0+IDIxNiwgMTkxLCAyMTZcbiAgICB8IFRvbWF0byAtPiAyNTUsIDk5LCA3MVxuICAgIHwgVHVycXVvaXNlIC0+IDY0LCAyMjQsIDIwOFxuICAgIHwgVmlvbGV0IC0+IDIzOCwgMTMwLCAyMzhcbiAgICB8IFdoZWF0IC0+IDI0NSwgMjIyLCAxNzlcbiAgICB8IFdoaXRlIC0+IDI1NSwgMjU1LCAyNTVcbiAgICB8IFdoaXRlc21va2UgLT4gMjQ1LCAyNDUsIDI0NVxuICAgIHwgWWVsbG93IC0+IDI1NSwgMjU1LCAwXG4gICAgfCBZZWxsb3dncmVlbiAtPiAxNTQsIDIwNSwgNTBcblxuICB0eXBlIHQgPVxuICAgIHwgTmFtZSBvZiBuYW1lXG4gICAgfCBSR0Igb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJlZCwgR3JlZW4gYW5kIEJsdWUgdmFsdWVzLiBDbGlwcGVkIHRvIFtbMC4uMjU1XV0gYnkgbW9zdCAoQWxsPylcbiAgICAgICAgICAgIGJyb3dzZXJzLiAqKVxuICAgIHwgUkdCX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBhcmUgc3BlY2lmaWVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiAqKVxuICAgIHwgUkdCQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIFJHQiB3aXRoIGFkZGl0aW9uYWwgdHJhbnNwYXJlbmN5IGFyZ3VtZW50LiBPcGFjaXR5IHNob3VsZCBiZSBpblxuICAgICAgICAgICAgWzAuXSAoY29tcGxldGVseSB0cmFuc3BhcmVudCkgYW5kIFsxLl0gKGNvbXBsZXRlbHkgb3BhcXVlKS4gKilcbiAgICB8IFJHQkFfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgc3BlY2lmaWVkIGFzIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gQWxwaGFcbiAgICAgICAgICAgIGNoYW5uZWwgKG9wYWNpdHkpIGlzIHN0aWxsIGEgWzAuXSB0byBbMS5dIGZsb2F0LiAqKVxuICAgIHwgSFNMIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBIdWUsIFNhdHVyYXRpb24gYW5kIExpZ2h0bmVzcyB2YWx1ZXMuIEh1ZSBpcyBhbiBhbmdsZSBpbiBkZWdyZWUgKGluXG4gICAgICAgICAgICBpbnRlcnZhbCBbWzAuLjM2MFtdKS4gU2F0dXJhdGlvbiBpcyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBjb2xvcmxlc3MuIExpZ2h0bmVzcyBpcyBhbHNvIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGJsYWNrLiAqKVxuICAgIHwgSFNMQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIEhTTCB3aXRoIGFuIG9wYWNpdHkgYXJndW1lbnQgYmV0d2VlbiBbMC5dIGFuZCBbMS5dLiAqKVxuXG4gIGxldCByZ2IgP2EgciBnIGIgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBSR0IgKHIsIGcsIGIpXG4gICAgfCBTb21lIGEgLT4gUkdCQSAociwgZywgYiwgYSlcblxuICBsZXQgaHNsID9hIGggcyBsID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gSFNMIChoLCBzLCBsKVxuICAgIHwgU29tZSBhIC0+IEhTTEEgKGgsIHMsIGwsIGEpXG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBzdHJpbmdfb2ZfbmFtZSBuXG4gICAgfCBSR0IgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkLCVkLCVkKVwiIHIgZyBiXG4gICAgfCBSR0JfcGVyY2VudCAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQlJSwlZCUlLCVkJSUpXCIgciBnIGJcbiAgICB8IFJHQkEgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCwlZCwlZCwlZilcIiByIGcgYiBhXG4gICAgfCBSR0JBX3BlcmNlbnQgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCUlLCVkJSUsJWQlJSwlZilcIiByIGcgYiBhXG4gICAgfCBIU0wgKGgsIHMsIGwpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsKCVkLCVkJSUsJWQlJSlcIiBoIHMgbFxuICAgIHwgSFNMQSAoaCwgcywgbCwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2xhKCVkLCVkJSUsJWQlJSwlZilcIiBoIHMgbCBhXG5cbiAgbGV0IGhleF9vZl9yZ2IgKHJlZCwgZ3JlZW4sIGJsdWUpID1cbiAgICBsZXQgaW5fcmFuZ2UgaSA9XG4gICAgICBpZiBpIDwgMCB8fCBpID4gMjU1XG4gICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzdHJpbmdfb2ZfaW50IGkgXiBcIiBpcyBvdXQgb2YgdmFsaWQgcmFuZ2VcIikpXG4gICAgaW5cbiAgICBpbl9yYW5nZSByZWQ7XG4gICAgaW5fcmFuZ2UgZ3JlZW47XG4gICAgaW5fcmFuZ2UgYmx1ZTtcbiAgICBQcmludGYuc3ByaW50ZiBcIiMlMDJYJTAyWCUwMlhcIiByZWQgZ3JlZW4gYmx1ZVxuXG4gICgqIE9jYW1sIDwtPiBKUyByZXByZXNlbnRhdGlvbiAqKVxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gICgqIFRPRE8/IGJlIG1vcmUgcmVzdHJpY3RpdmUsIGNsaXAgdmFsdWVzIGludG8gc3RhbmRhcmQgcmFuZ2UgKilcbiAgbGV0IGpzX3Rfb2ZfanNfc3RyaW5nIHMgPVxuICAgIGxldCByZ2JfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5oc2xcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGlmIEpzLnRvX2Jvb2wgKHJnYl9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xhX3JlIyN0ZXN0IHMpXG4gICAgdGhlbiBzXG4gICAgZWxzZSBpZiBMaXN0Lm1lbVxuICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIHMpXG4gICAgICAgICAgICAgIFsgXCJhbGljZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYW50aXF1ZXdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFcIlxuICAgICAgICAgICAgICA7IFwiYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJhenVyZVwiXG4gICAgICAgICAgICAgIDsgXCJiZWlnZVwiXG4gICAgICAgICAgICAgIDsgXCJiaXNxdWVcIlxuICAgICAgICAgICAgICA7IFwiYmxhY2tcIlxuICAgICAgICAgICAgICA7IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibHVldmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImJyb3duXCJcbiAgICAgICAgICAgICAgOyBcImJ1cmx5d29vZFwiXG4gICAgICAgICAgICAgIDsgXCJjYWRldGJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY2hhcnRyZXVzZVwiXG4gICAgICAgICAgICAgIDsgXCJjaG9jb2xhdGVcIlxuICAgICAgICAgICAgICA7IFwiY29yYWxcIlxuICAgICAgICAgICAgICA7IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY29ybnNpbGtcIlxuICAgICAgICAgICAgICA7IFwiY3JpbXNvblwiXG4gICAgICAgICAgICAgIDsgXCJjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrbWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb2xpdmVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3JlZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmt2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRvZGdlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZmlyZWJyaWNrXCJcbiAgICAgICAgICAgICAgOyBcImZsb3JhbHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImZvcmVzdGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImZ1Y2hzaWFcIlxuICAgICAgICAgICAgICA7IFwiZ2FpbnNib3JvXCJcbiAgICAgICAgICAgICAgOyBcImdob3N0d2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZ29sZFwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJncmVlbnllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJncmV5XCJcbiAgICAgICAgICAgICAgOyBcImhvbmV5ZGV3XCJcbiAgICAgICAgICAgICAgOyBcImhvdHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWFucmVkXCJcbiAgICAgICAgICAgICAgOyBcImluZGlnb1wiXG4gICAgICAgICAgICAgIDsgXCJpdm9yeVwiXG4gICAgICAgICAgICAgIDsgXCJraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlclwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlcmJsdXNoXCJcbiAgICAgICAgICAgICAgOyBcImxhd25ncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsZW1vbmNoaWZmb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y29yYWxcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHBpbmtcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHR5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGltZVwiXG4gICAgICAgICAgICAgIDsgXCJsaW1lZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGluZW5cIlxuICAgICAgICAgICAgICA7IFwibWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJtYXJvb25cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1ibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bW9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1wdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwibWlkbmlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1pbnRjcmVhbVwiXG4gICAgICAgICAgICAgIDsgXCJtaXN0eXJvc2VcIlxuICAgICAgICAgICAgICA7IFwibW9jY2FzaW5cIlxuICAgICAgICAgICAgICA7IFwibmF2YWpvd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwibmF2eVwiXG4gICAgICAgICAgICAgIDsgXCJvbGRsYWNlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlZHJhYlwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlcmVkXCJcbiAgICAgICAgICAgICAgOyBcIm9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV2aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwicGFwYXlhd2hpcFwiXG4gICAgICAgICAgICAgIDsgXCJwZWFjaHB1ZmZcIlxuICAgICAgICAgICAgICA7IFwicGVydVwiXG4gICAgICAgICAgICAgIDsgXCJwaW5rXCJcbiAgICAgICAgICAgICAgOyBcInBsdW1cIlxuICAgICAgICAgICAgICA7IFwicG93ZGVyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJwdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwicmVkXCJcbiAgICAgICAgICAgICAgOyBcInJvc3licm93blwiXG4gICAgICAgICAgICAgIDsgXCJyb3lhbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2FkZGxlYnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcInNhbmR5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic2Vhc2hlbGxcIlxuICAgICAgICAgICAgICA7IFwic2llbm5hXCJcbiAgICAgICAgICAgICAgOyBcInNpbHZlclwiXG4gICAgICAgICAgICAgIDsgXCJza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcInNub3dcIlxuICAgICAgICAgICAgICA7IFwic3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInRhblwiXG4gICAgICAgICAgICAgIDsgXCJ0ZWFsXCJcbiAgICAgICAgICAgICAgOyBcInRoaXN0bGVcIlxuICAgICAgICAgICAgICA7IFwidG9tYXRvXCJcbiAgICAgICAgICAgICAgOyBcInR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJ2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwid2hlYXRcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVzbW9rZVwiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93Z3JlZW5cIlxuICAgICAgICAgICAgICBdXG4gICAgdGhlbiBzXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoSnMudG9fc3RyaW5nIHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSlcblxuICBsZXQgbmFtZSBjbiA9IEpzLnN0cmluZyAoc3RyaW5nX29mX25hbWUgY24pXG5cbiAgbGV0IGpzID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBuYW1lIG5cbiAgICB8IChSR0IgXyB8IFJHQl9wZXJjZW50IF8gfCBSR0JBIF8gfCBSR0JBX3BlcmNlbnQgXyB8IEhTTCBfIHwgSFNMQSBfKSBhcyBjIC0+XG4gICAgICAgIEpzLnN0cmluZyAoc3RyaW5nX29mX3QgYylcblxuICBsZXQgbWwgYyA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgYyBpblxuICAgIHRyeSBOYW1lIChuYW1lX29mX3N0cmluZyBzKVxuICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IChcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSkgaW5cbiAgICAgIGxldCByZV9yZ2IgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiksKFxcXFxkKikoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9yZ2JfcGN0ID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopJSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfaHNsID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihoc2xhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCBpX29mX3NfbyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgIHwgU29tZSBpIC0+IChcbiAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGlcbiAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gaSBeIFwiKTogXCIgXiBzKSkpXG4gICAgICBpblxuICAgICAgbGV0IGZfb2ZfcyBmID1cbiAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBmIF4gXCIpOiBcIiBeIHMpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiIHMgMCB3aXRoXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IFJHQkEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2JfcGN0IHMgMCB3aXRoXG4gICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQl9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgIFJHQkFfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfaHNsIHMgMCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbFwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBIU0wgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBIU0xBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKCkpKSlcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gICgqIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdmFsdWVzLyNsZW5ndGhzICopXG5cbiAgKCogVE9ETzpcbiAgICAge1tcbiAgICAgICB0eXBlIGpzX3QgPSBwcml2YXRlIEpzLnN0cmluZyBKcy50XG4gICAgICAgdmFsIGpzX3Rfb2ZfdFxuICAgICAgIHZhbCB0X29mX2pzX3RcbiAgICAgICB2YWwgdF9vZl9zdHJpbmdcbiAgICAgXX1cbiAgKilcblxuICB0eXBlIHQgPVxuICAgIHwgWmVyb1xuICAgICgqIHJlbGF0aXZlICopXG4gICAgfCBFbSBvZiBmbG9hdFxuICAgIHwgRXggb2YgZmxvYXRcbiAgICB8IFB4IG9mIGZsb2F0XG4gICAgfCBHZCBvZiBmbG9hdFxuICAgIHwgUmVtIG9mIGZsb2F0XG4gICAgfCBWdyBvZiBmbG9hdFxuICAgIHwgVmggb2YgZmxvYXRcbiAgICB8IFZtIG9mIGZsb2F0XG4gICAgfCBDaCBvZiBmbG9hdFxuICAgICgqIGFic29sdXRlICopXG4gICAgfCBNbSBvZiBmbG9hdFxuICAgIHwgQ20gb2YgZmxvYXRcbiAgICB8IEluIG9mIGZsb2F0XG4gICAgfCBQdCBvZiBmbG9hdFxuICAgIHwgUGMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgWmVybyAtPiBcIjBcIlxuICAgIHwgRW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZW1cIlxuICAgIHwgRXggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZXhcIlxuICAgIHwgUHggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHhcIlxuICAgIHwgR2QgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ2RcIlxuICAgIHwgUmVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJlbVwiXG4gICAgfCBWdyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2d1wiXG4gICAgfCBWaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2aFwiXG4gICAgfCBWbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2bVwiXG4gICAgfCBDaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjaFwiXG4gICAgfCBNbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJtbVwiXG4gICAgfCBDbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjbVwiXG4gICAgfCBJbiBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJpblwiXG4gICAgfCBQdCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwdFwiXG4gICAgfCBQYyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwY1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgdCA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgdCBpblxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiMFwiXG4gICAgdGhlbiBaZXJvXG4gICAgZWxzZVxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pXFxcXHMqKFxcXFxTKikkXCIgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IGYgPVxuICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgXCJlbVwiIC0+IEVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJleFwiIC0+IEV4IGZcbiAgICAgICAgICB8IFNvbWUgXCJweFwiIC0+IFB4IGZcbiAgICAgICAgICB8IFNvbWUgXCJnZFwiIC0+IEdkIGZcbiAgICAgICAgICB8IFNvbWUgXCJyZW1cIiAtPiBSZW0gZlxuICAgICAgICAgIHwgU29tZSBcInZ3XCIgLT4gVncgZlxuICAgICAgICAgIHwgU29tZSBcInZoXCIgLT4gVmggZlxuICAgICAgICAgIHwgU29tZSBcInZtXCIgLT4gVm0gZlxuICAgICAgICAgIHwgU29tZSBcImNoXCIgLT4gQ2ggZlxuICAgICAgICAgIHwgU29tZSBcIm1tXCIgLT4gTW0gZlxuICAgICAgICAgIHwgU29tZSBcImNtXCIgLT4gQ20gZlxuICAgICAgICAgIHwgU29tZSBcImluXCIgLT4gSW4gZlxuICAgICAgICAgIHwgU29tZSBcInB0XCIgLT4gUHQgZlxuICAgICAgICAgIHwgU29tZSBcInBjXCIgLT4gUGMgZlxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKCkpXG5lbmRcblxubW9kdWxlIEFuZ2xlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBEZWcgb2YgZmxvYXRcbiAgICB8IEdyYWQgb2YgZmxvYXRcbiAgICB8IFJhZCBvZiBmbG9hdFxuICAgIHwgVHVybnMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgRGVnIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImRlZ1wiXG4gICAgfCBHcmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdyYWRcIlxuICAgIHwgUmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJhZFwiXG4gICAgfCBUdXJucyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ0dXJuc1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgaiA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgaiBpblxuICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKSkoZGVnfGdyYWR8cmFkfHR1cm5zKSRcIiBpblxuICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgfCBTb21lIHIgLT4gKFxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICB8IFNvbWUgXCJkZWdcIiAtPiBEZWcgZlxuICAgICAgICB8IFNvbWUgXCJncmFkXCIgLT4gR3JhZCBmXG4gICAgICAgIHwgU29tZSBcInJhZFwiIC0+IFJhZCBmXG4gICAgICAgIHwgU29tZSBcInR1cm5zXCIgLT4gVHVybnMgZlxuICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqKiBKYXZhc2NyaXB0IGV2ZW50cy4gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVHlwID0gRG9tX2h0bWwuRXZlbnRcblxudHlwZSBsaXN0ZW5lciA9IERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBsaXN0ZW4gPyhjYXB0dXJlID0gZmFsc2UpIHRhcmdldCB0eXAgY2IgPVxuICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyXG4gICAgdGFyZ2V0XG4gICAgdHlwXG4gICAgKERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIG4gZSAtPiBKcy5ib29sIChjYiBuIGUpKSlcbiAgICAoSnMuYm9vbCBjYXB0dXJlKVxuXG5sZXQgc3RvcF9saXN0ZW4gPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICogQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5sZXQgeG1sbnMgPSBKcy5zdHJpbmcgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG5cbigqIHRyYW5zbGF0ZSBzcGVjIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2lkbC5odG1sICopXG4oKiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwgKilcblxudHlwZSBlcnJvcl9jb2RlID1cbiAgfCBXUk9OR19UWVBFX0VSUlxuICB8IElOVkFMSURfVkFMVUVfRVJSXG4gIHwgTUFUUklYX05PVF9JTlZFUlRBQkxFXG5cbmNsYXNzIHR5cGUgc3ZnX2Vycm9yID0gb2JqZWN0XG4gIGluaGVyaXQgSnMuZXJyb3JcblxuICBtZXRob2QgY29kZSA6IGVycm9yX2NvZGUgdCByZWFkb25seV9wcm9wXG5lbmRcblxuZXhjZXB0aW9uIFNWR0Vycm9yIG9mIHN2Z19lcnJvclxuXG50eXBlIGxlbmd0aFVuaXRUeXBlID1cbiAgfCBMRU5HVEhUWVBFX1VOS05PV05cbiAgfCBMRU5HVEhUWVBFX05VTUJFUlxuICB8IExFTkdUSFRZUEVfUEVSQ0VOVEFHRVxuICB8IExFTkdUSFRZUEVfRU1TXG4gIHwgTEVOR1RIVFlQRV9FWFNcbiAgfCBMRU5HVEhUWVBFX1BYXG4gIHwgTEVOR1RIVFlQRV9DTVxuICB8IExFTkdUSFRZUEVfTU1cbiAgfCBMRU5HVEhUWVBFX0lOXG4gIHwgTEVOR1RIVFlQRV9QVFxuICB8IExFTkdUSFRZUEVfUENcblxudHlwZSBhbmdsZVVuaXRUeXBlID1cbiAgfCBBTkdMRVRZUEVfVU5LTk9XTlxuICB8IEFOR0xFVFlQRV9VTlNQRUNJRklFRFxuICB8IEFOR0xFVFlQRV9ERUdcbiAgfCBBTkdMRVRZUEVfUkFEXG4gIHwgQU5HTEVUWVBFX0dSQURcblxudHlwZSBjb2xvclR5cGUgPVxuICB8IENPTE9SVFlQRV9VTktOT1dOXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SXG4gIHwgQ09MT1JUWVBFX0NVUlJFTlRDT0xPUlxuXG50eXBlIGFsaWdubWVudFR5cGUgPVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9XTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWFxuXG50eXBlIG1lZXRPclNsaWNlVHlwZSA9XG4gIHwgTUVFVE9SU0xJQ0VfVU5LTk9XTlxuICB8IE1FRVRPUlNMSUNFX01FRVRcbiAgfCBNRUVUT1JTTElDRV9TTElDRVxuXG50eXBlIHRyYW5zZm9ybVR5cGUgPVxuICB8IFRSQU5TRk9STV9VTktOT1dOXG4gIHwgVFJBTlNGT1JNX01BVFJJWFxuICB8IFRSQU5TRk9STV9UUkFOU0xBVEVcbiAgfCBUUkFOU0ZPUk1fU0NBTEVcbiAgfCBUUkFOU0ZPUk1fUk9UQVRFXG4gIHwgVFJBTlNGT1JNX1NLRVdYXG4gIHwgVFJBTlNGT1JNX1NLRVdZXG5cbnR5cGUgem9vbUFuZFBhblR5cGUgPVxuICB8IFpPT01BTkRQQU5fVU5LTk9XTlxuICB8IFpPT01BTkRQQU5fRElTQUJMRVxuICB8IFpPT01BTkRQQU5fTUFHTklGWVxuXG50eXBlIGxlbmd0aEFkanVzdCA9XG4gIHwgTEVOR1RIQURKVVNUX1VOS05PV05cbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR1xuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTXG5cbnR5cGUgdW5pdFR5cGUgPVxuICB8IFVOSVRfVFlQRV9VTktOT1dOXG4gIHwgVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFXG4gIHwgVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YXG5cbigqIGludGVyZmFjZSBTVkdSZW5kZXJpbmdJbnRlbnQgKilcbnR5cGUgaW50ZW50VHlwZSA9XG4gIHwgUkVOREVSSU5HX0lOVEVOVF9VTktOT1dOXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BVVRPXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9QRVJDRVBUVUFMXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUNcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1NBVFVSQVRJT05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQ1xuXG4oKiBQYXRoIFNlZ21lbnQgVHlwZXMgKilcbnR5cGUgcGF0aFNlZ21lbnRUeXBlID1cbiAgfCBQQVRIU0VHX1VOS05PV05cbiAgfCBQQVRIU0VHX0NMT1NFUEFUSFxuICB8IFBBVEhTRUdfTU9WRVRPX0FCU1xuICB8IFBBVEhTRUdfTU9WRVRPX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTFxuICB8IFBBVEhTRUdfQVJDX0FCU1xuICB8IFBBVEhTRUdfQVJDX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMXG5cbigqIHRleHRQYXRoIE1ldGhvZCBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aE1ldGhvZFR5cGUgPVxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfQUxJR05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0hcblxuKCogdGV4dFBhdGggU3BhY2luZyBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aFNwYWNpbmdUeXBlID1cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUT1xuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUXG5cbigqIFNwcmVhZCBNZXRob2QgVHlwZXMgKilcbnR5cGUgc3ByZWFkTWV0aG9kVHlwZSA9XG4gIHwgU1BSRUFETUVUSE9EX1VOS05PV05cbiAgfCBTUFJFQURNRVRIT0RfUEFEXG4gIHwgU1BSRUFETUVUSE9EX1JFRkxFQ1RcbiAgfCBTUFJFQURNRVRIT0RfUkVQRUFUXG5cbnR5cGUgc3VzcGVuZEhhbmRsZUlEXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIFsnYV0gYW5pbWF0ZWQgPSBvYmplY3RcbiAgbWV0aG9kIGJhc2VWYWwgOiAnYSBwcm9wXG5cbiAgbWV0aG9kIGFuaW1WYWwgOiAnYSBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIGxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIG51bWJlck9mSXRlbXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbml0aWFsaXplIDogJ2EgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgaW5zZXJ0SXRlbUJlZm9yZSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VJdGVtIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZEl0ZW0gOiAnYSAtPiAnYSBtZXRoXG5lbmRcblxuKCoqKiopXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50ICopXG5jbGFzcyB0eXBlIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sYmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJTVkdFbGVtZW50IDogc3ZnRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRTdHJpbmcgKilcbmFuZCBhbmltYXRlZFN0cmluZyA9IFtqc19zdHJpbmcgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQm9vbGVhbiAqKVxuYW5kIGFuaW1hdGVkQm9vbGVhbiA9IFtib29sIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHJpbmdMaXN0ICopXG5hbmQgc3RyaW5nTGlzdCA9IFtqc19zdHJpbmcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiAqKVxuYW5kIGFuaW1hdGVkRW51bWVyYXRpb24gPSBbaW50ICgqc2hvcnQqKV0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkSW50ZWdlciAqKVxuYW5kIGFuaW1hdGVkSW50ZWdlciA9IFtpbnRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlciAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyID0gW251bWJlcl90XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTnVtYmVyTGlzdCAqKVxuYW5kIG51bWJlckxpc3QgPSBbbnVtYmVyIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyTGlzdCA9IFtudW1iZXJMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGggKilcbmFuZCBsZW5ndGggPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogbGVuZ3RoVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoICopXG5hbmQgYW5pbWF0ZWRMZW5ndGggPSBbbGVuZ3RoIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGhMaXN0ICopXG5hbmQgbGVuZ3RoTGlzdCA9IFtsZW5ndGggdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0ICopXG5hbmQgYW5pbWF0ZWRMZW5ndGhMaXN0ID0gW2xlbmd0aExpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuZ2xlICopXG5hbmQgYW5nbGUgPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogYW5nbGVVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQW5nbGUgKilcbmFuZCBhbmltYXRlZEFuZ2xlID0gW2FuZ2xlIHRdIGFuaW1hdGVkXG5cbigqIFhYWFhYIE1vdmUgaXQgKilcbmFuZCByZ2JDb2xvciA9IG9iamVjdCBlbmRcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yICopXG5hbmQgY29sb3IgPSBvYmplY3RcbiAgKCogWFhYIGluaGVyaXQgY3NzVmFsdWUgKilcbiAgbWV0aG9kIGNvbG9yVHlwZSA6IGNvbG9yVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJnYkNvbG9yIDogcmdiQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGljY0NvbG9yIDogaWNjQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9yIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9ySUNDQ29sb3IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Q29sb3IgOiBjb2xvclR5cGUgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0lDQ0NvbG9yICopXG5hbmQgaWNjQ29sb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvbG9yUHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3JzIDogbnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdCAqKVxuYW5kIHJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUmVjdCAqKVxuYW5kIGFuaW1hdGVkUmVjdCA9IFtyZWN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHlsYWJsZSAqKVxuYW5kIHN0eWxhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBjbGFzc05hbWUgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3R5bGUgOiBEb21faHRtbC5jc3NTdHlsZURlY2xhcmF0aW9uIHQgcmVhZG9ubHlfcHJvcFxuICAoKiAgIENTU1ZhbHVlIGdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xvY2F0YWJsZSAqKVxuYW5kIGxvY2F0YWJsZSA9IG9iamVjdFxuICBtZXRob2QgbmVhcmVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QkJveCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2NyZWVuQ1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQgOiBlbGVtZW50IHQgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1hYmxlICopXG5hbmQgdHJhbnNmb3JtYWJsZSA9IG9iamVjdFxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1Rlc3RzICopXG5hbmQgdGVzdHMgPSBvYmplY3RcbiAgbWV0aG9kIHJlcXVpcmVkRmVhdHVyZXMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZEV4dGVuc2lvbnMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzeXN0ZW1MYW5ndWFnZSA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhhc0V4dGVuc2lvbiA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xhbmdTcGFjZSAqKVxuYW5kIGxhbmdTcGFjZSA9IG9iamVjdFxuICBtZXRob2QgeG1sbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sc3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgKilcbmFuZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gb2JqZWN0XG4gIG1ldGhvZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIDogYW5pbWF0ZWRCb29sZWFuIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaXRUb1ZpZXdCb3ggKilcbmFuZCBmaXRUb1ZpZXdCb3ggPSBvYmplY3RcbiAgbWV0aG9kIHZpZXdCb3ggOiBhbmltYXRlZFJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW8gOiBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21BbmRQYW4gKilcbmFuZCB6b29tQW5kUGFuID0gb2JqZWN0XG4gIG1ldGhvZCB6b29tQW5kUGFuIDogem9vbUFuZFBhblR5cGUgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3U3BlYyAqKVxuYW5kIHZpZXdTcGVjID0gb2JqZWN0XG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IHRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3Qm94U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm1TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXRTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VSSVJlZmVyZW5jZSAqKVxuYW5kIHVyaVJlZmVyZW5jZSA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDU1NSdWxlIDogQ1NTUnVsZSAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDT0xPUl9QUk9GSUxFX1JVTEUgPSA3OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0RvY3VtZW50ICopXG5hbmQgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudEV2ZW50ICopXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEVsZW1lbnQgOiBzdmdFbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbiAgKCogcm9vdEVsZW1lbnQgd2lsbCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbiBhbiBodG1sIGNvbnRleHQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU1ZHRWxlbWVudCAqKVxuYW5kIHN2Z0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50ZXZlbnQsIHZpZXdjc3MsIGRvY3VtZW50Y3NzICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTY3JpcHRUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IHJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZUN1cnJlbnRWaWV3IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFZpZXcgOiB2aWV3U3BlYyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFNjYWxlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VHJhbnNsYXRlIDogcG9pbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1c3BlbmRSZWRyYXcgOiBpbnQgLT4gc3VzcGVuZEhhbmRsZUlEIG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3IDogc3VzcGVuZEhhbmRsZUlEIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXdBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yY2VSZWRyYXcgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVucGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbnNQYXVzZWQgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0Q3VycmVudFRpbWUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEludGVyc2VjdGlvbkxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmNsb3N1cmVMaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgY2hlY2tJbnRlcnNlY3Rpb24gOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBjaGVja0VuY2xvc3VyZSA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGRlc2VsZWN0QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR051bWJlciA6IG51bWJlciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTGVuZ3RoIDogbGVuZ3RoIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdBbmdsZSA6IGFuZ2xlIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQb2ludCA6IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdNYXRyaXggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1JlY3QgOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm0gOiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggdCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gRG9tLmVsZW1lbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dFbGVtZW50ICopXG5hbmQgZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVmc0VsZW1lbnQgKilcbmFuZCBkZWZzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0Rlc2NFbGVtZW50ICopXG5hbmQgZGVzY0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RpdGxlRWxlbWVudCAqKVxuYW5kIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3ltYm9sRWxlbWVudCAqKVxuYW5kIHN5bWJvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VzZUVsZW1lbnQgKilcbmFuZCB1c2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRJbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGVsZW1lbnRJbnN0YW5jZSA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgOiB1c2VFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogZWxlbWVudEluc3RhbmNlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50SW5zdGFuY2VMaXN0ICopXG5hbmQgZWxlbWVudEluc3RhbmNlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBlbGVtZW50SW5zdGFuY2UgdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJbWFnZUVsZW1lbnQgKilcbmFuZCBpbWFnZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbiAgKCogcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5lbmRcblxuYW5kIHN3aXRjaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbigqIFhYWCBkZXByZWNhdGVkID0+IGludGVyZmFjZSBHZXRTVkdEb2N1bWVudCA9PiBTVkdEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpICopXG5cbigqIGludGVyZmFjZSBTVkdTdHlsZUVsZW1lbnQgKilcbmFuZCBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnQgKilcbmFuZCBwb2ludCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4VHJhbnNmb3JtIDogbWF0cml4IHQgLT4gcG9pbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50TGlzdCAqKVxuYW5kIHBvaW50TGlzdCA9IFtwb2ludCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdNYXRyaXggKilcbmFuZCBtYXRyaXggPSBvYmplY3RcbiAgbWV0aG9kIGEgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGMgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGYgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGx5IDogbWF0cml4IHQgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBpbnZlcnNlIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZU5vblVuaWZvcm0gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlRnJvbVZlY3RvciA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBZIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WCA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1kgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybSAqKVxuYW5kIHRyYW5zZm9ybSA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiB0cmFuc2Zvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4IDogbWF0cml4IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0TWF0cml4IDogbWF0cml4IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSb3RhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1ggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1kgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtTGlzdCAqKVxuYW5kIHRyYW5zZm9ybUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbdHJhbnNmb3JtIHRdIGxpc3RcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnNvbGlkYXRlIDogdHJhbnNmb3JtIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QgKilcbmFuZCBhbmltYXRlZFRyYW5zZm9ybUxpc3QgPSBbdHJhbnNmb3JtTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIHByZXNlcnZlQXNwZWN0UmF0aW8gPSBvYmplY3RcbiAgbWV0aG9kIGFsaWduIDogYWxpZ25tZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lZXRPclNsaWNlIDogbWVldE9yU2xpY2VUeXBlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gW3ByZXNlcnZlQXNwZWN0UmF0aW8gdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWcgKilcbmFuZCBwYXRoU2VnID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnVHlwZSA6IHBhdGhTZWdtZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdGhTZWdUeXBlQXNMZXR0ZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDbG9zZVBhdGggKilcbmFuZCBwYXRoU2VnQ2xvc2VQYXRoID0gcGF0aFNlZ1xuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9SZWwgKilcbmFuZCBwYXRoU2VnTW92ZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY1JlbCopXG5hbmQgcGF0aFNlZ0FyYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGFyZ2VBcmNGbGFnIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3dlZXBGbGFnIDogYm9vbCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCAgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnTGlzdCA9IFtwYXRoU2VnIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUGF0aERhdGEgKilcbmFuZCBhbmltYXRlZFBhdGhEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBub3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoRWxlbWVudCAqKVxuYW5kIHBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUGF0aERhdGFcblxuICBtZXRob2QgcGF0aExlbmd0aCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRUb3RhbExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0UG9pbnRBdExlbmd0aCA6IG51bWJlcl90IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXRoU2VnQXRMZW5ndGggOiBudW1iZXJfdCAtPiBpbnRcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aCA6IHBhdGhTZWdDbG9zZVBhdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0RWxlbWVudCAqKVxuYW5kIHJlY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDaXJjbGVFbGVtZW50ICopXG5hbmQgY2lyY2xlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxsaXBzZUVsZW1lbnQgKilcbmFuZCBlbGxpcHNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUG9pbnRzICopXG5hbmQgYW5pbWF0ZWRQb2ludHMgPSBvYmplY3RcbiAgbWV0aG9kIHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlsaW5lRWxlbWVudCAqKVxuYW5kIHBvbHlMaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5Z29uRWxlbWVudCAqKVxuYW5kIHBvbHlnb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRDb250ZW50RWxlbWVudCAqKVxuYW5kIHRleHRDb250ZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0ZXh0TGVuZ3RoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aEFkanVzdCA6IGxlbmd0aEFkanVzdCBhbmltYXRlZCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TnVtYmVyT2ZDaGFycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkVGV4dExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3ViU3RyaW5nTGVuZ3RoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN0YXJ0UG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuZFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnRPZkNoYXIgOiBpbnQgLT4gcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Um90YXRpb25PZkNoYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDaGFyTnVtQXRQb3NpdGlvbiA6IHBvaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdFN1YlN0cmluZyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQgKilcbmFuZCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm90YXRlIDogYW5pbWF0ZWROdW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0RWxlbWVudCAqKVxuYW5kIHRleHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbmFuZCB0c3BhbkVsZW1lbnQgPSB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbmFuZCB0cmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UGF0aEVsZW1lbnQgKilcbmFuZCB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgPSBbdGV4dFBhdGhNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50U3BhY2luZyA9IFt0ZXh0UGF0aFNwYWNpbmdUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0aG9kXyA6IHRleHRQYXRoRWxlbWVudE1ldGhvZCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwYWNpbmcgOiB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRGVmRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRGVmRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEl0ZW1FbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhSZWZFbGVtZW50ICopXG5hbmQgZ2x5cGhSZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhaW50IDogU1ZHQ29sb3IgeyAqKVxuXG4oKiAgIC8vIFBhaW50IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9OT05FID0gMTAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUiA9IDEwMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSA9IDEwMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SID0gMTA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiA9IDEwNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09MT1IgPSAxMDY7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJID0gMTA3OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOyAqKVxuXG4oKiAgIHZvaWQgc2V0VXJpKGluIERPTVN0cmluZyB1cmkpOyAqKVxuKCogICB2b2lkIHNldFBhaW50KGluIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZSwgaW4gRE9NU3RyaW5nIHVyaSwgaW4gRE9NU3RyaW5nIHJnYkNvbG9yLCBpbiBET01TdHJpbmcgaWNjQ29sb3IpIHJhaXNlcyhTVkdFeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR01hcmtlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1N0eWxhYmxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaXRUb1ZpZXdCb3ggeyAqKVxuXG4oKiAgIC8vIE1hcmtlciBVbml0IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIID0gMjsgKilcblxuKCogICAvLyBNYXJrZXIgT3JpZW50YXRpb24gVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FVVE8gPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BTkdMRSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXJrZXJVbml0czsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlcldpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VySGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcmllbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRBbmdsZSBvcmllbnRBbmdsZTsgKilcblxuKCogICB2b2lkIHNldE9yaWVudFRvQXV0bygpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICB2b2lkIHNldE9yaWVudFRvQW5nbGUoaW4gU1ZHQW5nbGUgYW5nbGUpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWw7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVSdWxlIDogU1ZHQ1NTUnVsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmMgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZSBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudCBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBhbmltYXRlZFNwcmVhZE1ldGhvZCA9IFtzcHJlYWRNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgZ3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZ3JhZGllbnRVbml0czsgKilcbiAgbWV0aG9kIGdyYWRpZW50VHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcHJlYWRNZXRob2QgOiBhbmltYXRlZFNwcmVhZE1ldGhvZCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50ICopXG5hbmQgbGluZWFyR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCAqKVxuYW5kIHJhZGlhbEdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N0b3BFbGVtZW50ICopXG5hbmQgc3RvcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBvZmZzZXQgOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0dGVybkVsZW1lbnQgKilcbmFuZCBwYXR0ZXJuRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVyblVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Db250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCBwYXR0ZXJuVHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NsaXBQYXRoRWxlbWVudCAqKVxuYW5kIGNsaXBQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gY2xpcFBhdGhVbml0czsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFza0VsZW1lbnQgKilcbmFuZCBtYXNrRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza0NvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyRWxlbWVudCAqKVxuYW5kIGZpbHRlckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGZpbHRlclVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHByaW1pdGl2ZVVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNYIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNZIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRGaWx0ZXJSZXMgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBTVkdTdHlsYWJsZSB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHdpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggaGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgcmVzdWx0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQmxlbmRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQmxlbmQgTW9kZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX05PUk1BTCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTVVMVElQTFkgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1NDUkVFTiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfREFSS0VOID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9MSUdIVEVOID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtb2RlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29sb3IgTWF0cml4IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTUFUUklYID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHZhbHVlczsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG5cbigqICAgLy8gQ29tcG9uZW50IFRyYW5zZmVyIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQSA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB0YWJsZVZhbHVlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNsb3BlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgaW50ZXJjZXB0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYW1wbGl0dWRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBvZmZzZXQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jUkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jR0VsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQUVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb3NpdGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbXBvc2l0ZSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9JTiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUCA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9YT1IgPSA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQyA9IDY7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsyOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrNDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEVkZ2UgTW9kZSBWYWx1ZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1dSQVAgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfTk9ORSA9IDM7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IGtlcm5lbE1hdHJpeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpdmlzb3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiaWFzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZWRnZU1vZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRCb29sZWFuIHByZXNlcnZlQWxwaGE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGlmZnVzZUNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGF6aW11dGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBlbGV2YXRpb247ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVQb2ludExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BvdExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRaOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGxpbWl0aW5nQ29uZUFuZ2xlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDaGFubmVsIFNlbGVjdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0cgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9CID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB4Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB5Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRmxvb2RFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25YOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWTsgKilcblxuKCogICB2b2lkIHNldFN0ZERldmlhdGlvbihpbiBmbG9hdCBzdGREZXZpYXRpb25YLCBpbiBmbG9hdCBzdGREZXZpYXRpb25ZKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUltYWdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZU5vZGVFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gTW9ycGhvbG9neSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1g7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFT2Zmc2V0RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUaWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gVHVyYnVsZW5jZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSA9IDI7ICopXG5cbigqICAgLy8gU3RpdGNoIE9wdGlvbnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1NUSVRDSCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBudW1PY3RhdmVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2VlZDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gc3RpdGNoVGlsZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ3Vyc29yRWxlbWVudCAqKVxuYW5kIGN1cnNvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBRWxlbWVudCAqKVxuYW5kIGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB0YXJnZXQgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld0VsZW1lbnQgKilcbmFuZCB2aWV3RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2NyaXB0RWxlbWVudCAqKVxuYW5kIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21FdmVudCA6IFVJRXZlbnQgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1JlY3Qgem9vbVJlY3RTY3JlZW47ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBwcmV2aW91c1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgcHJldmlvdXNUcmFuc2xhdGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBuZXdTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IG5ld1RyYW5zbGF0ZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgKCogaW5oZXJpdCBlbGVtZW50VGltZUNvbnRyb2wgKilcbiAgbWV0aG9kIHRhcmdldEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTdGFydFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaW1wbGVEdXJhdGlvbiA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUVsZW1lbnQgKilcbmFuZCBhbmltYXRlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NldEVsZW1lbnQgKilcbmFuZCBzZXRFbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRlTW90aW9uRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01QYXRoRWxlbWVudCAqKVxuYW5kIG1QYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlQ29sb3JFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUNvbG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ICopXG5hbmQgYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RWxlbWVudCAqKVxuYW5kIGZvbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCopXG5hbmQgZ2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSEtlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR1ZLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVNyY0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VTcmNFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VVcmlFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlVXJpRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUZvcm1hdEVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZU5hbWVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlTmFtZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNZXRhZGF0YUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbWV0YWRhdGFFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9yZWlnbk9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnROUyB4bWxucyAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUEgZG9jIDogYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaCBkb2MgOiBhbHRHbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhEZWYgZG9jIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoZGVmXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoSXRlbSBkb2MgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoaXRlbVwiXG5cbmxldCBjcmVhdGVBbmltYXRlIGRvYyA6IGFuaW1hdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZUNvbG9yIGRvYyA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZWNvbG9yXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVNb3Rpb24gZG9jIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZW1vdGlvblwiXG5cbmxldCBjcmVhdGVBbmltYXRlVHJhbnNmb3JtIGRvYyA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG5sZXQgY3JlYXRlQ2lyY2xlIGRvYyA6IGNpcmNsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2lyY2xlXCJcblxubGV0IGNyZWF0ZUNsaXBQYXRoIGRvYyA6IGNsaXBQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjbGlwcGF0aFwiXG5cbigqIGxldCBjcmVhdGVDb2xvclByb2ZpbGUgZG9jIDogY29sb3JQcm9maWxlIHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbG9yLXByb2ZpbGVcIiAqKVxubGV0IGNyZWF0ZUN1cnNvciBkb2MgOiBjdXJzb3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImN1cnNvclwiXG5cbmxldCBjcmVhdGVEZWZzIGRvYyA6IGRlZnNFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlZnNcIlxuXG5sZXQgY3JlYXRlRGVzYyBkb2MgOiBkZXNjRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZXNjXCJcblxubGV0IGNyZWF0ZUVsbGlwc2UgZG9jIDogZWxsaXBzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZWxsaXBzZVwiXG5cbigqIGxldCBjcmVhdGVGZSogKilcbmxldCBjcmVhdGVGaWx0ZXIgZG9jIDogZmlsdGVyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWx0ZXJcIlxuXG5sZXQgY3JlYXRlRm9udCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZUZvcm1hdCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtZm9ybWF0XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlTmFtZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtbmFtZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZVNyYyBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2Utc3JjXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlVXJpIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS11cmlcIlxuXG5sZXQgY3JlYXRlRm9yZWlnbk9iamVjdCBkb2MgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JlaWduT2JqZWN0XCJcblxubGV0IGNyZWF0ZUcgZG9jIDogZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ1wiXG5cbmxldCBjcmVhdGVHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhcIlxuXG5sZXQgY3JlYXRlR2x5cGhSZWYgZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBocmVmXCJcblxubGV0IGNyZWF0ZWhrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGtlcm5cIlxuXG5sZXQgY3JlYXRlSW1hZ2UgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltYWdlXCJcblxubGV0IGNyZWF0ZUxpbmVFbGVtZW50IGRvYyA6IGxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVcIlxuXG5sZXQgY3JlYXRlTGluZWFyRWxlbWVudCBkb2MgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZWFyZ3JhZGllbnRcIlxuXG4oKiBsZXQgY3JlYXRlTWFya2VyIGRvYyA6IG1hcmtlckVsZW1lbnQgKilcbmxldCBjcmVhdGVNYXNrIGRvYyA6IG1hc2tFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hc2tcIlxuXG5sZXQgY3JlYXRlTWV0YURhdGEgZG9jIDogbWV0YWRhdGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFkYXRhXCJcblxubGV0IGNyZWF0ZU1pc3NpbmdHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWlzc2luZy1nbHlwaFwiXG5cbmxldCBjcmVhdGVNUGF0aCBkb2MgOiBtUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibXBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0aCBkb2MgOiBwYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXRoXCJcblxubGV0IGNyZWF0ZVBhdHRlcm4gZG9jIDogcGF0dGVybkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0dGVyblwiXG5cbmxldCBjcmVhdGVQb2x5Z29uIGRvYyA6IHBvbHlnb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlnb25cIlxuXG5sZXQgY3JlYXRlUG9seWxpbmUgZG9jIDogcG9seUxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlsaW5lXCJcblxubGV0IGNyZWF0ZVJhZGlhbGdyYWRpZW50IGRvYyA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyYWRpYWxncmFkaWVudFwiXG5cbmxldCBjcmVhdGVSZWN0IGRvYyA6IHJlY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJlY3RcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVNldCBkb2MgOiBzZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNldFwiXG5cbmxldCBjcmVhdGVTdG9wIGRvYyA6IHN0b3BFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0b3BcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZVN2ZyBkb2MgOiBzdmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN2Z1wiXG5cbmxldCBjcmVhdGVTd2l0Y2ggZG9jIDogc3dpdGNoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzd2l0Y2hcIlxuXG5sZXQgY3JlYXRlU3ltYm9sIGRvYyA6IHN5bWJvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ltYm9sXCJcblxubGV0IGNyZWF0ZVRleHRFbGVtZW50IGRvYyA6IHRleHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRcIlxuXG5sZXQgY3JlYXRlVGV4dHBhdGggZG9jIDogdGV4dFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRwYXRoXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVUcmVmIGRvYyA6IHRyZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyZWZcIlxuXG5sZXQgY3JlYXRlVHNwYW4gZG9jIDogdHNwYW5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRzcGFuXCJcblxubGV0IGNyZWF0ZVVzZSBkb2MgOiB1c2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVzZVwiXG5cbmxldCBjcmVhdGVWaWV3IGRvYyA6IHZpZXdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZXdcIlxuXG5sZXQgY3JlYXRldmtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2a2VyblwiXG5cbigqKioqKVxuXG5sZXQgc3ZnX2VsZW1lbnQgOiBlbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9TVkdFbGVtZW50XG5cbmxldCBkb2N1bWVudCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgOiBlbGVtZW50IHQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gZSAtPiBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBlIGVsc2UgcmFpc2UgTm90X2ZvdW5kKVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgKGUgOiAjRG9tLm5vZGUgSnMudCkgOiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgKGUgOiAjZWxlbWVudCB0KSB0YWcgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA6IGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhXCJcblxuICBsZXQgYWx0R2x5cGggZSA6IGFsdEdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhcIlxuXG4gIGxldCBhbHRHbHlwaERlZiBlIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGRlZlwiXG5cbiAgbGV0IGFsdEdseXBoSXRlbSBlIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhpdGVtXCJcblxuICBsZXQgYW5pbWF0ZSBlIDogYW5pbWF0ZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVcIlxuXG4gIGxldCBhbmltYXRlQ29sb3IgZSA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVjb2xvclwiXG5cbiAgbGV0IGFuaW1hdGVNb3Rpb24gZSA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlbW90aW9uXCJcblxuICBsZXQgYW5pbWF0ZVRyYW5zZm9ybSBlIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCBvcHQgPVxuICAgIHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbiAgbGV0IGNpcmNsZSBlIDogY2lyY2xlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2lyY2xlXCJcblxuICBsZXQgY2xpcFBhdGggZSA6IGNsaXBQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2xpcHBhdGhcIlxuXG4gICgqIGxldCBDb2xvclByb2ZpbGUgZSA6IGNvbG9yUHJvZmlsZSB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY29sb3ItcHJvZmlsZVwiICopXG4gIGxldCBjdXJzb3IgZSA6IGN1cnNvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImN1cnNvclwiXG5cbiAgbGV0IGRlZnMgZSA6IGRlZnNFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZWZzXCJcblxuICBsZXQgZGVzYyBlIDogZGVzY0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlc2NcIlxuXG4gIGxldCBlbGxpcHNlIGUgOiBlbGxpcHNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZWxsaXBzZVwiXG5cbiAgKCogbGV0IEZlKiAqKVxuICBsZXQgZmlsdGVyIGUgOiBmaWx0ZXJFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmaWx0ZXJcIlxuXG4gIGxldCBmb250IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udFwiXG5cbiAgbGV0IGZvbnRGYWNlIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlXCJcblxuICBsZXQgZm9udEZhY2VGb3JtYXQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtZm9ybWF0XCJcblxuICBsZXQgZm9udEZhY2VOYW1lIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLW5hbWVcIlxuXG4gIGxldCBmb250RmFjZVNyYyBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1zcmNcIlxuXG4gIGxldCBmb250RmFjZVVyaSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb3JlaWduT2JqZWN0IGUgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9yZWlnbm9iamVjdFwiXG5cbiAgbGV0IGcgZSA6IGdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnXCJcblxuICBsZXQgZ2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhcIlxuXG4gIGxldCBnbHlwaFJlZiBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaHJlZlwiXG5cbiAgbGV0IGhrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJoa2VyblwiXG5cbiAgbGV0IGltYWdlIGUgOiBpbWFnZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImltYWdlXCJcblxuICBsZXQgbGluZUVsZW1lbnQgZSA6IGxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lXCJcblxuICBsZXQgbGluZWFyRWxlbWVudCBlIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lYXJncmFkaWVudFwiXG5cbiAgKCogbGV0IE1hcmtlciBlIDogbWFya2VyRWxlbWVudCAqKVxuICBsZXQgbWFzayBlIDogbWFza0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1hc2tcIlxuXG4gIGxldCBtZXRhRGF0YSBlIDogbWV0YWRhdGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtZXRhZGF0YVwiXG5cbiAgbGV0IG1pc3NpbmdHbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtaXNzaW5nLWdseXBoXCJcblxuICBsZXQgbVBhdGggZSA6IG1QYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibXBhdGhcIlxuXG4gIGxldCBwYXRoIGUgOiBwYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0aFwiXG5cbiAgbGV0IHBhdHRlcm4gZSA6IHBhdHRlcm5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXR0ZXJuXCJcblxuICBsZXQgcG9seWdvbiBlIDogcG9seWdvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlnb25cIlxuXG4gIGxldCBwb2x5bGluZSBlIDogcG9seUxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5bGluZVwiXG5cbiAgbGV0IHJhZGlhbGdyYWRpZW50IGUgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJhZGlhbGdyYWRpZW50XCJcblxuICBsZXQgcmVjdCBlIDogcmVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJlY3RcIlxuXG4gIGxldCBzY3JpcHQgZSA6IHNjcmlwdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNjcmlwdFwiXG5cbiAgbGV0IHNldCBlIDogc2V0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2V0XCJcblxuICBsZXQgc3RvcCBlIDogc3RvcEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0b3BcIlxuXG4gIGxldCBzdHlsZSBlIDogc3R5bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdHlsZVwiXG5cbiAgbGV0IHN2ZyBlIDogc3ZnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ZnXCJcblxuICBsZXQgc3dpdGNoIGUgOiBzd2l0Y2hFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzd2l0Y2hcIlxuXG4gIGxldCBzeW1ib2wgZSA6IHN5bWJvbEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN5bWJvbFwiXG5cbiAgbGV0IHRleHRFbGVtZW50IGUgOiB0ZXh0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dFwiXG5cbiAgbGV0IHRleHRwYXRoIGUgOiB0ZXh0UGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRwYXRoXCJcblxuICBsZXQgdGl0bGUgZSA6IHRpdGxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGl0bGVcIlxuXG4gIGxldCB0cmVmIGUgOiB0cmVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHJlZlwiXG5cbiAgbGV0IHRzcGFuIGUgOiB0c3BhbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRzcGFuXCJcblxuICBsZXQgdXNlIGUgOiB1c2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ1c2VcIlxuXG4gIGxldCB2aWV3IGUgOiB2aWV3RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmlld1wiXG5cbiAgbGV0IHZrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2a2VyblwiXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFNvdXJjZSAqKVxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG50eXBlIHN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0RXZlbnRJZCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbiAgKCogbWV0aG9kIHNvdXJjZSA6IHVuaXQgKilcbmVuZFxuXG5jbGFzcyB0eXBlIGV2ZW50U291cmNlID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHVybCA6IHN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2l0aENyZWRlbnRpYWxzIGIgOiBvcHRpb25zIHQgPVxuICBsZXQgaW5pdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBpbml0IyMud2l0aENyZWRlbnRpYWxzIDo9IEpzLmJvb2wgYjtcbiAgaW5pdFxuXG5sZXQgZXZlbnRTb3VyY2UgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBldmVudFNvdXJjZV9vcHRpb25zID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgY29uc29sZSA9IG9iamVjdFxuICBtZXRob2QgbG9nIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ182IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ183IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzggOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mbyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2FybiA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3IgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMSA6IGJvb2wgdCAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMiA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8zIDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNCA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNSA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpcnhtbCA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYWNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWQgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cEVuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWVFbmQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5leHRlcm5hbCBnZXRfY29uc29sZSA6IHVuaXQgLT4gY29uc29sZSB0ID0gXCJjYW1sX2pzX2dldF9jb25zb2xlXCJcblxubGV0IGNvbnNvbGUgPSBnZXRfY29uc29sZSAoKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zaXRpb25FcnJvckNvZGVcblxudHlwZSB3YXRjaElkXG5cbmNsYXNzIHR5cGUgY29vcmRpbmF0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxhdGl0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb25naXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlQWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkaW5nIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlZWQgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNvb3JkcyA6IGNvb3JkaW5hdGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lc3RhbXAgOiBKcy5kYXRlIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgZW5hYmxlSGlnaEFjY3VyYWN5IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lb3V0IDogaW50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heGltdW1BZ2UgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIF9QRVJNSVNTSU9OX0RFTklFRF8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT1NJVElPTl9VTkFWQUlMQUJMRV8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9USU1FT1VUIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZ2VvbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGdldEN1cnJlbnRQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgd2F0Y2hQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB3YXRjaElkIEpzLm1ldGhcblxuICBtZXRob2QgY2xlYXJXYXRjaCA6IHdhdGNoSWQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Bvc2l0aW9uX29wdGlvbnMgKCkgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGdlb2xvY2F0aW9uID1cbiAgbGV0IHggPSBKcy5VbnNhZmUuZ2xvYmFsIyMubmF2aWdhdG9yIGluXG4gIGlmIEpzLk9wdGRlZi50ZXN0IHggdGhlbiB4IyMuZ2VvbG9jYXRpb24gZWxzZSB4XG5cbigqIHVuZGVmaW5lZCAqKVxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgZ2VvbG9jYXRpb25cbiIsImNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdW5kaW5nQ2xpZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RCb3VuZHMgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJhdGlvIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0ludGVyc2VjdGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGQgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkcyA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wdGlvbnMgKCkgOiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudCA9XG4gIEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlciA6XG4gICAgKCAgICggICBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudFxuICAgICAgICAgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnRcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTaGFyZWQgPSBzaWdcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICB2YWwgb2JqZWN0X29wdGlvbnMgOiB1bml0IC0+IG9iamVjdF9vcHRpb25zIEpzLnRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNoYXJlZCA6IFNoYXJlZCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvYmplY3Rfb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29sbGF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjb2xsYXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2FnZSA9IEpzLnN0cmluZyBcInNvcnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBzZW5zaXRpdml0eSA9IEpzLnN0cmluZyBcInZhcmlhbnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBpZ25vcmVQdW5jdHVhdGlvbiA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1lcmljID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhc2VGaXJzdCA9IEpzLnN0cmluZyBcImZhbHNlXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFyZSA6IChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiBpbnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBEYXRlVGltZUZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5UGVyaW9kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXJDeWNsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0TWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgZGF0ZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjYWxlbmRhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXlQZXJpb2QgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIxMiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyQ3ljbGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZm9ybWF0TWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgd2Vla2RheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBlcmEgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgeWVhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtb250aCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW51dGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2Vjb25kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmVOYW1lID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMuZGF0ZSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5kYXRlIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTnVtYmVyRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYWN0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lTaWduIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG5vdGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNpZ25EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nTW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdQcmlvcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdJbmNyZW1lbnQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRyYWlsaW5nWmVyb0Rpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGNvbXBhY3REaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeVNpZ24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgbm90YXRpb24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNpZ25EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHN0eWxlID0gSnMuc3RyaW5nIFwiZGVjaW1hbFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdW5pdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdXNlR3JvdXBpbmcgPSBKcy5fdHJ1ZVxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ01vZGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdQcmlvcml0eSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ0luY3JlbWVudCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0cmFpbGluZ1plcm9EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQbHVyYWxSdWxlcyA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcGx1cmFsQ2F0ZWdvcmllcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBfdHlwZSA9IEpzLnN0cmluZyBcImNhcmRpbmFsXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2Qgc2VsZWN0IDogSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRsID0gb2JqZWN0XG4gIG1ldGhvZCBfQ29sbGF0b3IgOiBDb2xsYXRvci5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRGF0ZVRpbWVGb3JtYXQgOiBEYXRlVGltZUZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTnVtYmVyRm9ybWF0IDogTnVtYmVyRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QbHVyYWxSdWxlcyA6IFBsdXJhbFJ1bGVzLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENhbm9uaWNhbExvY2FsZXMgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGludGwgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGxcblxubGV0IGNvbGxhdG9yX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9Db2xsYXRvclxuXG5sZXQgZGF0ZVRpbWVGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0RhdGVUaW1lRm9ybWF0XG5cbmxldCBudW1iZXJGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX051bWJlckZvcm1hdFxuXG5sZXQgcGx1cmFsUnVsZXNfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX1BsdXJhbFJ1bGVzXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRsXG4iLCJpbmNsdWRlIEpzX29mX29jYW1sLkpzXG5tb2R1bGUgVXJsID0gSnNfb2Zfb2NhbWwuVXJsXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbC5Eb21faHRtbFxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbC5GaXJlYnVnXG5tb2R1bGUgRmlsZSA9IEpzX29mX29jYW1sLkZpbGVcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbC5Eb21cbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sLlR5cGVkX2FycmF5XG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWwuUmVnZXhwXG5cbnR5cGUgKCdhLCAnYikgcmVzdWx0ID0gKCdhLCAnYikgU3RkbGliLnJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxudHlwZSB3aW5kb3cgPSBEb21faHRtbC53aW5kb3dcblxubGV0IHRvX2FycmF5ZiBmIGEgPSBBcnJheS5tYXAgZiAodG9fYXJyYXkgYSlcblxubGV0IG9mX2FycmF5ZiBmIGEgPSBhcnJheSAoQXJyYXkubWFwIGYgYSlcblxubGV0IHRvX2xpc3QgYSA9IEFycmF5LnRvX2xpc3QgQEAgdG9fYXJyYXkgYVxuXG5sZXQgb2ZfbGlzdCBsID0gYXJyYXkgQEAgQXJyYXkub2ZfbGlzdCBAQCBsXG5cbmxldCB0b19saXN0ZiBmIGEgPSBBcnJheS50b19saXN0IEBAIHRvX2FycmF5ZiBmIGFcblxubGV0IG9mX2xpc3RmIGYgYSA9IG9mX2FycmF5ZiBmIEBAIEFycmF5Lm9mX2xpc3QgYVxuXG5sZXQgb3B0ZGVmIGYgPSBmdW5jdGlvbiBOb25lIC0+IHVuZGVmaW5lZCB8IFNvbWUgeCAtPiBkZWYgKGYgeClcblxubGV0IHRvX29wdGRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgdW5vcHRkZWZfZiBkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBkZWYgfCBTb21lIHggLT4gZiB4XG5cbmxldCB1bm9wdGRlZiBkZWYgeCA9IG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gZGVmIHwgU29tZSB4IC0+IHhcblxubGV0IGNvbnZkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiB1bmRlZmluZWQgfCBTb21lIHggLT4gZGVmIChmIHgpXG5cbmxldCB0b19vcHQgZiB4ID1cbiAgbWF0Y2ggT3B0LnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IG9wdCBmID0gZnVuY3Rpb24gTm9uZSAtPiBudWxsIHwgU29tZSB4IC0+IHNvbWUgKGYgeClcblxubGV0IGNvbnZvcHQgZiB4ID1cbiAgbWF0Y2ggT3B0LnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBudWxsIHwgU29tZSB4IC0+IHNvbWUgKGYgeClcblxubGV0IGpzX2xvZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgb1xuXG5sZXQgbG9nX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKHN0cmluZyBzKVxuXG5sZXQgbG9nIGZtdCA9XG4gIEZvcm1hdC5rZnByaW50ZlxuICAgIChmdW4gX2ZtdCAtPiBqc19sb2cgKHN0cmluZyAoRm9ybWF0LmZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpKSlcbiAgICBGb3JtYXQuc3RyX2Zvcm1hdHRlciBmbXRcblxubGV0IGVycm9yX29mX3N0cmluZyBzID0gbmV3JWpzIGVycm9yX2NvbnN0ciAoc3RyaW5nIHMpXG5sZXQgY2F0Y2hfZXhuIGYgPSBmdW5jdGlvblxuICB8IEpzX2Vycm9yLkV4biBlIC0+IGYgKEpzX2Vycm9yLnRvX2Vycm9yIGUpXG4gIHwgZXhuIC0+IGYgQEAgZXJyb3Jfb2Zfc3RyaW5nIEBAIFByaW50ZXhjLnRvX3N0cmluZyBleG5cblxubW9kdWxlIEFPcHQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuICBsZXQgbnVsbCA6ICdhIHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBsZXQgdW5kZWZpbmVkIDogJ2EgdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuICBleHRlcm5hbCBkZWYgOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCByZXR1cm4gOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBjb2VyY2UgOiAnYSB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBqc19lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG4gIGxldCBpc19ub25lICh4IDogJ2EgdCkgOiBib29sID0geCA9PSB1bmRlZmluZWQgfHwganNfZXF1YWxzIHggbnVsbFxuICBsZXQgbWFwID8obm9uZT11bmRlZmluZWQpICh4IDogJ2EgdCkgKGYgOiAnYSAtPiAnYikgOiAnYiB0ID1cbiAgICBpZiBpc19ub25lIHggdGhlbiBub25lIGVsc2UgcmV0dXJuIChmIChjb2VyY2UgeCkpXG4gIGxldCBiaW5kID8obm9uZT11bmRlZmluZWQpICh4IDogJ2EgdCkgKGYgOiAnYSAtPiAnYiB0KSA6ICdiIHQgPVxuICAgIGlmIGlzX25vbmUgeCB0aGVuIG5vbmUgZWxzZSBmIChjb2VyY2UgeClcbiAgbGV0IHRlc3QgKHggOiAnYSB0KSA6IGJvb2wgPSBub3QgKGlzX25vbmUgeClcbiAgbGV0IGl0ZXIgKHggOiAnYSB0KSAoZiA6ICdhIC0+IHVuaXQpIDogdW5pdCA9IGlmIG5vdCAoaXNfbm9uZSB4KSB0aGVuIGYgKGNvZXJjZSB4KVxuICBsZXQgY2FzZSAoeCA6ICdhIHQpIChmIDogdW5pdCAtPiAnYikgKGcgOiAnYSAtPiAnYikgOiAnYiA9IGlmIGlzX25vbmUgeCB0aGVuIGYgKCkgZWxzZSBnIChjb2VyY2UgeClcbiAgbGV0IGdldCAoeCA6ICdhIHQpIChmIDogdW5pdCAtPiAnYSkgOiAnYSA9IGlmIGlzX25vbmUgeCB0aGVuIGYgKCkgZWxzZSAoY29lcmNlIHgpXG4gIGxldCBvcHRpb24gPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSBvcHRpb24pIDogJ2EgdCA9IG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgbGV0IHRvX29wdGlvbiAoeCA6ICdhIHQpIDogJ2Egb3B0aW9uID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgbGV0IGFvcHQgPyhub25lPSh1bmRlZmluZWQgOiAnYiB0KSkgKGYgOiAnYSAtPiAnYikgOiAnYSBvcHRpb24gLT4gJ2IgdCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IG5vbmVcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4gKGYgeClcbiAgbGV0IHRvX2FvcHQgKGYgOiAnYSAtPiAnYikgKHggOiAnYSB0KSA6ICdiIG9wdGlvbiA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIChmIHgpKVxuZW5kXG50eXBlICdhIGFvcHQgPSAnYSBBT3B0LnRcblxudHlwZSAnYSBjYXNlX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA+IGdlbl9wcm9wXG5cbmxldCByZWMgY2hvb3NlX2Nhc2Vfb3B0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBoIDo6IHQgLT4gbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBoIHdpdGggTm9uZSAtPiBjaG9vc2VfY2FzZV9vcHQgdCB8IFNvbWUgXyAtPiBoXG5cbmxldCBjaG9vc2VfY2FzZSBsID0gY2hvb3NlX2Nhc2Vfb3B0IChMaXN0Lm1hcCBPcHRkZWYucmV0dXJuIGwpXG5cbmxldCBvYmplY3RfY3MgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxubGV0IGFzc2lnbiAobzEgOiBfIHQpIChvMiA6IF8gdCkgPSBVbnNhZmUuY29lcmNlIChvYmplY3RfY3MjI2Fzc2lnbiBvMSBvMilcbmxldCBhc3NpZ25fbGlzdCBsID0gVW5zYWZlLmNvZXJjZSAoVW5zYWZlLm1ldGhfY2FsbCBvYmplY3RfY3MgXCJhc3NpZ25cIiAoQXJyYXkub2ZfbGlzdCBsKSlcblxubGV0IHJlbW92ZV91bmRlZmluZWQgbyA9XG4gIGxldCBrZXlzID0gb2JqZWN0X2tleXMgbyBpblxuICBrZXlzIyNmb3JFYWNoICh3cmFwX2NhbGxiYWNrIChmdW4gayBfIF8gLT5cbiAgICAgIGlmIG5vdCAoT3B0ZGVmLnRlc3QgKFVuc2FmZS5nZXQgbyBrKSkgdGhlbiBVbnNhZmUuZGVsZXRlIG8gaykpXG4iLCJvcGVuIEpzXG5cbnR5cGUgbm9ucmVjICdhIHQgPSA8ID4gdFxuXG5sZXQgb2JqID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgKHYgOiAnYSkgPSBVbnNhZmUuc2V0IHQgKHN0cmluZyBrKSB2XG5cbmxldCBhZGRfbGlzdCAodCA6ICdhIHQpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA9XG4gIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIHYpIGxcblxubGV0IGFkZF9saXN0ZiAodCA6ICdiIHQpIChmIDogKCdhIC0+ICdiKSkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpID1cbiAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgKGYgdikpIGxcblxubGV0IG1ha2UgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2EgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGFkZF9saXN0IHQgbDtcbiAgdFxuXG5sZXQgbWFrZWYgKGYgOiAoJ2EgLT4gJ2IpKSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgOiAnYiB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgYWRkX2xpc3RmIHQgZiBsO1xuICB0XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgPSBVbnNhZmUuZGVsZXRlIHQgKHN0cmluZyBrKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogc3RyaW5nKSA6ICdhIG9wdGlvbiA9XG4gIE9wdGRlZi50b19vcHRpb24gKFVuc2FmZS5nZXQgdCAoc3RyaW5nIGspKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogc3RyaW5nIGxpc3QgPVxuICB0b19saXN0ZiB0b19zdHJpbmcgQEAgb2JqIyNrZXlzIHRcblxubGV0IGl0ZW1zICh0IDogJ2EgdCkgOiAoc3RyaW5nICogJ2EpIGxpc3QgPVxuICB0b19saXN0ZiAoZnVuIGsgLT4gdG9fc3RyaW5nIGssIFVuc2FmZS5nZXQgdCBrKSBAQCBvYmojI2tleXMgdFxuXG5sZXQgaXRlbXNmIChmIDogKCdhIC0+ICdiKSkgKHQgOiAnYSB0KSA6IChzdHJpbmcgKiAnYikgbGlzdCA9XG4gIHRvX2xpc3RmIChmdW4gayAtPiB0b19zdHJpbmcgaywgZiBAQCBVbnNhZmUuZ2V0IHQgaykgQEAgb2JqIyNrZXlzIHRcblxubGV0IGxlbmd0aCAodCA6ICdhIHQpID0gKG9iaiMja2V5cyB0KSMjLmxlbmd0aFxuXG5sZXQgbWVyZ2UgKGwgOiAnYSB0IGxpc3QpIDogJ2EgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciAoZnVuIHggLT4gTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgdikgKGl0ZW1zIHgpKSBsO1xuICB0XG4iLCJvcGVuIEpzXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gcHJvbWlzZTAgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdGhlbl8gOiAoJ2EgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdCBtZXRoXG4gICAgbWV0aG9kIGNhdGNoIDogKCdiIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQgbWV0aFxuICBlbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb21pc2UgPSBbJ2EsIGVycm9yIHRdIHByb21pc2UwXG5cbnR5cGUgKCdhLCAnYikgcHJvbWlzZV9jcyA9XG4gICgoKCdhIC0+IHVuaXQpIC0+ICgnYiAtPiB1bml0KSAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0KVxuICBjb25zdHJcblxubGV0IHByb21pc2UgZiA9XG4gIGxldCBjcyA6ICgnYSwgJ2IpIHByb21pc2VfY3MgPSBVbnNhZmUuZ2xvYmFsIyMuX1Byb21pc2UgaW5cbiAgbmV3JWpzIGNzICh3cmFwX2NhbGxiYWNrIGYpXG5cbmxldCBqdGhlbjAgP2Vycm9yIChwcm9tIDogKCdhLCAnYiB0KSBwcm9taXNlMCB0KSBmID1cbiAgbGV0IGNhdGNoX2V4biBleG4gPVxuICAgIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZWYgLT4gY2F0Y2hfZXhuIChmdW4geCAtPiBlZiAoVW5zYWZlLmNvZXJjZSB4KSkgZXhuIGluXG4gIGxldCBwID0gcHJvbSMjdGhlbl8gKHdyYXBfY2FsbGJhY2sgKGZ1biB4IC0+IHRyeSBmIHggd2l0aCBleG4gLT4gY2F0Y2hfZXhuIGV4bikpIGluXG4gIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZXJyb3IgLT4gaWdub3JlIChwIyNjYXRjaCAod3JhcF9jYWxsYmFjayBlcnJvcikpXG5cbmxldCBqdGhlbiA/ZXJyb3IgKHByb20gOiAnYSBwcm9taXNlIHQpIGYgPVxuICBsZXQgY2F0Y2hfZXhuIGV4biA9IG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZWYgLT4gY2F0Y2hfZXhuIGVmIGV4biBpblxuICBsZXQgcCA9IHByb20jI3RoZW5fICh3cmFwX2NhbGxiYWNrIChmdW4geCAtPiB0cnkgZiB4IHdpdGggZXhuIC0+IGNhdGNoX2V4biBleG4pKSBpblxuICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVycm9yIC0+IGlnbm9yZSAocCMjY2F0Y2ggKHdyYXBfY2FsbGJhY2sgZXJyb3IpKVxuXG5sZXQganRoZW4wX29wdCBwcm9tID0gZnVuY3Rpb24gTm9uZSAtPiBpZ25vcmUgcHJvbSB8IFNvbWUgZiAtPiBqdGhlbjAgcHJvbSBmXG5sZXQganRoZW5fb3B0IHByb20gPSBmdW5jdGlvbiBOb25lIC0+IGlnbm9yZSBwcm9tIHwgU29tZSBmIC0+IGp0aGVuIHByb20gZlxuXG5sZXQgcnRoZW4gcHJvbSBmID1cbiAganRoZW4gfmVycm9yOihmdW4gZSAtPiBmIEBAIEVycm9yIGUpIHByb20gKGZ1biB4IC0+IGYgKE9rIHgpKVxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgbG9nIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyBvXG5cbmxldCBsb2cyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMiBvMSBvMlxuXG5sZXQgbG9nMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjbG9nXzMgbzEgbzIgbzNcblxubGV0IGxvZ19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgcylcblxubGV0IGxvZ19zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgbG9nX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2xvZ18zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCBkZWJ1ZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyBvXG5cbmxldCBkZWJ1ZzIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzIgbzEgbzJcblxubGV0IGRlYnVnMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMyBvMSBvMiBvM1xuXG5sZXQgZGVidWdfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgcylcblxubGV0IGRlYnVnX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGRlYnVnX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IHdhcm4gbyA9IEZpcmVidWcuY29uc29sZSMjd2FybiBvXG5cbmxldCB3YXJuMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8yIG8xIG8yXG5cbmxldCB3YXJuMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8zIG8xIG8yIG8zXG5cbmxldCB3YXJuX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuIChKcy5zdHJpbmcgcylcblxubGV0IHdhcm5fc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCB3YXJuX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgZXJyb3IgbyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3Igb1xuXG5sZXQgZXJyb3IyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIG8xIG8yXG5cbmxldCBlcnJvcjMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzMgbzEgbzIgbzNcblxubGV0IGVycm9yX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIHMpXG5cbmxldCBlcnJvcl9zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBlcnJvcl9zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG4iLCJvcGVuIEpzXG5cbmNsYXNzIHR5cGUgYmlnSW50ID0gb2JqZWN0XG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBfIHQgb3B0ZGVmIC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuICBtZXRob2QgdmFsdWVPZiA6IGJpZ0ludCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vbnJlYyB0ID0gYmlnSW50IHRcblxubGV0IGJpZ0ludCA6IChVbnNhZmUuYW55IC0+IHQpID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIkJpZ0ludFwiXG5cbmxldCBvZl9zdHJpbmcgcyA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBzdHJpbmcgcylcbmxldCBvZl9pbnQgKGkgOiBpbnQpID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIGkpXG5sZXQgb2ZfaW50NjQgKGkgOiBpbnQ2NCkgPSBvZl9zdHJpbmcgKEludDY0LnRvX3N0cmluZyBpKVxubGV0IG9mX25hdGl2ZSAoaSA6IG5hdGl2ZWludCkgPSBvZl9zdHJpbmcgKE5hdGl2ZWludC50b19zdHJpbmcgaSlcbmxldCBvZl9mbG9hdCBmID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIG51bWJlcl9vZl9mbG9hdCBmKVxuXG5sZXQgdG9fbG9jYWxlX3N0cmluZyA/Zm10ID9vcHRpb25zIChuIDogdCkgPVxuICB0b19zdHJpbmcgKG4jI3RvTG9jYWxlU3RyaW5nIChvcHRkZWYgc3RyaW5nIGZtdCkgKE9wdGRlZi5vcHRpb24gb3B0aW9ucykpXG5sZXQgdG9fc3RyaW5nIChuIDogdCkgPSB0b19zdHJpbmcgbiMjdG9TdHJpbmdcbiIsIm9wZW4gSnNcblxubGV0IHNldElubmVySHRtbCBlbHQgcyA9IGVsdCMjLmlubmVySFRNTCA6PSBzdHJpbmcgc1xuXG5sZXQgc2V0VGV4dCBlbHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICAgICgpXG4gIHwgU29tZSBzIC0+XG4gICAgICBlbHQjIy50ZXh0Q29udGVudCA6PSBzb21lIChzdHJpbmcgcylcblxubGV0IGFkZENsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNhZGQgKHN0cmluZyBzKVxuXG5sZXQgYWRkQ2xhc3NlcyBlbHQgbCA9IExpc3QuaXRlciAoYWRkQ2xhc3MgZWx0KSBsXG5cbmxldCByZW1vdmVDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjcmVtb3ZlIChzdHJpbmcgcylcblxubGV0IGNvbnRhaW5zQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI2NvbnRhaW5zIChzdHJpbmcgcylcblxubGV0IHNldEF0dHJpYnV0ZSBlbHQga2V5IHZhbHVlID0gZWx0IyNzZXRBdHRyaWJ1dGUgKHN0cmluZyBrZXkpIChzdHJpbmcgdmFsdWUpXG5cbmxldCByZW1vdmVBdHRyaWJ1dGUgZWx0IGtleSA9IGVsdCMjcmVtb3ZlQXR0cmlidXRlIChzdHJpbmcga2V5KVxuXG5sZXQgZ2V0QXR0cmlidXRlIGVsdCBrZXkgPSBPcHQudG9fb3B0aW9uIChlbHQjI2dldEF0dHJpYnV0ZSAoc3RyaW5nIGtleSkpXG5cbmxldCBzZXRDU1MgZWx0IHN0eWxlcyA9XG4gIGxldCBzdHlsZXMgPVxuICAgIFN0cmluZy5jb25jYXQgXCI7IFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBrIF4gXCI6IFwiIF4gdikgc3R5bGVzKVxuICBpblxuICBzZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiBzdHlsZXNcblxubGV0IGFkZENTUyBlbHQgc3R5bGVzID1cbiAgbGV0IHN0eWxlcyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIjsgXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGsgXiBcIjogXCIgXiB2KSBzdHlsZXMpXG4gIGluXG4gIGxldCBzdHlsZXMgPVxuICAgIG1hdGNoIGdldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgc3R5bGVzXG4gICAgfCBTb21lIG9sZF9zdHlsZXMgLT5cbiAgICAgICAgb2xkX3N0eWxlcyBeIFwiOyBcIiBeIHN0eWxlc1xuICBpblxuICBzZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiBzdHlsZXNcblxubGV0IGFwcGVuZENoaWxkID0gRG9tLmFwcGVuZENoaWxkXG5cbmxldCByZW1vdmVDaGlsZCA9IERvbS5yZW1vdmVDaGlsZFxuXG5sZXQgYXBwZW5kQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuID0gTGlzdC5pdGVyIChEb20uYXBwZW5kQ2hpbGQgcGFyZW50KSBjaGlsZHJlblxuXG5sZXQgY2hpbGRyZW4gcGFyZW50ID0gRG9tLmxpc3Rfb2Zfbm9kZUxpc3QgcGFyZW50IyMuY2hpbGROb2Rlc1xuXG5sZXQgcmVtb3ZlQ2hpbGRpIHBhcmVudCBpID1cbiAgbWF0Y2ggTGlzdC5udGhfb3B0IChjaGlsZHJlbiBwYXJlbnQpIGkgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgICgpXG4gIHwgU29tZSBjaGlsZCAtPlxuICAgICAgcmVtb3ZlQ2hpbGQgcGFyZW50IGNoaWxkXG5cbmxldCByZW1vdmVDaGlsZHJlbiBwYXJlbnQgPSBMaXN0Lml0ZXIgKHJlbW92ZUNoaWxkIHBhcmVudCkgKGNoaWxkcmVuIHBhcmVudClcblxubGV0IHJlcGxhY2VDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW4gPVxuICByZW1vdmVDaGlsZHJlbiBwYXJlbnQgO1xuICBhcHBlbmRDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW5cblxubGV0IGJ5X2lkIHMgPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZCBzXG5cbmxldCBhZGRMaXN0ZW5lciA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBlbHQgZXYgZiA9XG4gIGxldCBjYXB0dXJlID0gT3B0aW9uLm1hcCBib29sIGNhcHR1cmUgaW5cbiAgbGV0IG9uY2UgPSBPcHRpb24ubWFwIGJvb2wgb25jZSBpblxuICBsZXQgcGFzc2l2ZSA9IE9wdGlvbi5tYXAgYm9vbCBwYXNzaXZlIGluXG4gIGlnbm9yZSBAQFxuICBEb20uYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGVsdCAoRG9tLkV2ZW50Lm1ha2UgZXYpXG4gICAgKERvbS5oYW5kbGVyIChmdW4gZSAtPiBib29sIChmIGUpKSlcblxubW9kdWxlIEVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhjbGFzc2VzID0gW10pID8oc3R5bGVzID0gW10pID8obGlzdGVuID0gW10pID8oYXR0ciA9IFtdKSA/dGV4dCBmXG4gICAgICBjaGlsZHJlbiA9XG4gICAgbGV0IGVsdCA9IGYgRG9tX2h0bWwuZG9jdW1lbnQgaW5cbiAgICBMaXN0Lml0ZXIgKGZ1biAoZXYsIGYpIC0+IGFkZExpc3RlbmVyIGVsdCBldiBmKSBsaXN0ZW4gO1xuICAgIGFkZENsYXNzZXMgZWx0IGNsYXNzZXMgO1xuICAgIHNldENTUyBlbHQgc3R5bGVzIDtcbiAgICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gc2V0QXR0cmlidXRlIGVsdCBrIHYpIGF0dHIgO1xuICAgIHNldFRleHQgZWx0IHRleHQgO1xuICAgIGFwcGVuZENoaWxkcmVuIGVsdCBjaGlsZHJlbiA7XG4gICAgZWx0XG5cbiAgbGV0IGJ1dHRvbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlQnV0dG9uIGNoaWxkcmVuXG5cbiAgbGV0IGRpdiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlRGl2IGNoaWxkcmVuXG5cbiAgbGV0IGEgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUEgY2hpbGRyZW5cblxuICBsZXQgc3BhbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU3BhbiBjaGlsZHJlblxuXG4gIGxldCBmb3JtID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVGb3JtIGNoaWxkcmVuXG5cbiAgbGV0IG9wdGlvbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlT3B0aW9uIGNoaWxkcmVuXG5cbiAgbGV0IHNlbGVjdCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU2VsZWN0IGNoaWxkcmVuXG5cbiAgbGV0IGlucHV0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCAoKSA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJbnB1dCBbXVxuXG4gIGxldCBpZnJhbWUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUlmcmFtZSBjaGlsZHJlblxuXG4gIGxldCBsYWJlbCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlTGFiZWwgY2hpbGRyZW5cblxuICBsZXQgdWwgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVVsIGNoaWxkcmVuXG5cbiAgbGV0IGxpID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVMaSBjaGlsZHJlblxuXG4gIGxldCBpbWcgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUltZyBjaGlsZHJlblxuXG4gIGxldCBzY3JpcHQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNjcmlwdCBjaGlsZHJlblxuXG4gIGxldCB0YWJsZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGFibGUgY2hpbGRyZW5cblxuICBsZXQgdHIgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRyIGNoaWxkcmVuXG5cbiAgbGV0IHRoID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUaCBjaGlsZHJlblxuXG4gIGxldCB0ZCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGQgY2hpbGRyZW5cbmVuZFxuXG5sZXQgZW5jYXBzZSBzID0gXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCJcblxubGV0IHN0cmluZ3NfdG9fYXJyYXkgbCA9IFwiW1wiIF4gU3RyaW5nLmNvbmNhdCBcIixcIiBsIF4gXCJdXCJcblxubGV0IHN0cmluZ3NfdG9fb2JqZWN0IGwgPVxuICBsZXQgcyA9XG4gICAgXCJ7XCJcbiAgICBeIFN0cmluZy5jb25jYXQgXCIsXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGVuY2Fwc2UgayBeIFwiOlwiIF4gdikgbClcbiAgICBeIFwifVwiXG4gIGluXG4gIHRyeSBfSlNPTiMjcGFyc2UgKHN0cmluZyBzKVxuICB3aXRoIF8gLT5cbiAgICBsb2dfc3RyIChcImNhbm5vdCBwYXJzZSBqc29uIFwiIF4gcykgO1xuICAgIFVuc2FmZS5vYmogW3x8XVxuIiwib3BlbiBFempzX21pblxuXG5tb2R1bGUgVHlwZXMgPSBFempzX2lkYl90eXBlc1xub3BlbiBUeXBlc1xuXG50eXBlIG1vZGUgPSBSRUFET05MWSB8IFJFQURXUklURSB8IFZFUlNJT05DSEFOR0VcbnR5cGUgZGlyZWN0aW9uID0gTkVYVCB8IFBSRVYgfCBORVhUVU5JUVVFIHwgUFJFVlVOSVFVRVxuXG50eXBlIGRiX29wdGlvbnMgPSB7IGtleV9wYXRoIDogc3RyaW5nIG9wdGlvbjsgYXV0b19pbmNyZW1lbnQgOiBib29sIG9wdGlvbiB9XG5cbnR5cGUgZGJfdXBncmFkZSA9IHsgb2xkX3ZlcnNpb24gOiBpbnQ7IG5ld192ZXJzaW9uIDogaW50IH1cblxudHlwZSBpbmRleF9vcHRpb25zID0geyB1bmlxdWUgOiBib29sIG9wdGlvbjsgbXVsdGlfZW50cnkgOiBib29sIG9wdGlvbjsgbG9jYWxlIDogYm9vbCBvcHRpb24gfVxuXG5tb2R1bGUgdHlwZSBUcl9zaWcgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUganNcbiAgdmFsIHRvX2pzIDogdCAtPiBqc1xuICB2YWwgb2ZfanMgOiBqcyAtPiB0XG5lbmRcblxubGV0IHN0cl9vZl9tb2RlID0gZnVuY3Rpb25cbiAgfCBSRUFET05MWSAtPiBzdHJpbmcgXCJyZWFkb25seVwiXG4gIHwgUkVBRFdSSVRFIC0+IHN0cmluZyBcInJlYWR3cml0ZVwiXG4gIHwgVkVSU0lPTkNIQU5HRSAtPiBzdHJpbmcgXCJ2ZXJzaW9uY2hhbmdlXCJcblxubGV0IHN0cl9vZl9kaXJlY3Rpb24gPSBmdW5jdGlvblxuICB8IE5FWFQgLT4gc3RyaW5nIFwibmV4dFwiXG4gIHwgUFJFViAtPiBzdHJpbmcgXCJwcmV2XCJcbiAgfCBORVhUVU5JUVVFIC0+IHN0cmluZyBcIm5leHR1bmlxdWVcIlxuICB8IFBSRVZVTklRVUUgLT4gc3RyaW5nIFwicHJldnVuaXF1ZVwiXG5cbmxldCBpREJLZXlSYW5nZSA6IFVuc2FmZS5hbnkgaURCS2V5UmFuZ2UgdCA9IFVuc2FmZS52YXJpYWJsZSBcIklEQktleVJhbmdlXCJcbmxldCBpbmRleGVkREIgOiBqc19zdHJpbmcgdCBpREJGYWN0b3J5IHQgPSBVbnNhZmUudmFyaWFibGUgXCJ3aW5kb3cuaW5kZXhlZERCXCJcblxubGV0IHJlc3VsdCByID0gciMjLnJlc3VsdFxuXG5sZXQgd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIHIgPVxuICB0cnlcbiAgICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICAgIHIjIy5vbnN1Y2Nlc3MgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiAocmVzdWx0IHIpKSkgY2FsbGJhY2s7XG4gICAgciMjLm9uZXJyb3IgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiByKSkgZXJyb3JcbiAgd2l0aCBleG4gLT5cbiAgICBtYXRjaCBlcnJvciB3aXRoIE5vbmUgLT4gcmFpc2UgZXhuIHwgU29tZSBmIC0+IGNhdGNoX2V4biAoZnVuIGUgLT4gZiAoVW5zYWZlLmNvZXJjZSBlKSkgZXhuXG5cbmxldCB3cmFwZiA/ZXJyb3IgP2NhbGxiYWNrIGcgciA9XG4gIHRyeVxuICAgIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gICAgciMjLm9uc3VjY2VzcyA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIChnIEBAIHJlc3VsdCByKSkpIGNhbGxiYWNrO1xuICAgIHIjIy5vbmVycm9yIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgcikpIGVycm9yXG4gIHdpdGggZXhuIC0+XG4gICAgbWF0Y2ggZXJyb3Igd2l0aCBOb25lIC0+IHJhaXNlIGV4biB8IFNvbWUgZiAtPiBjYXRjaF9leG4gKGZ1biBlIC0+IGYgKFVuc2FmZS5jb2VyY2UgZSkpIGV4blxuXG5sZXQgZGJfdXBncmFkZV9ldmVudCAoZSA6IGlEQlZlcnNpb25DaGFuZ2VFdmVudCB0KSA9IHtcbiAgb2xkX3ZlcnNpb24gPSBlIyMub2xkVmVyc2lvbjtcbiAgbmV3X3ZlcnNpb24gPSBlIyMubmV3VmVyc2lvbjtcbn1cblxubGV0IG9wZW5EQiA/dXBncmFkZSA/ZXJyb3IgP3ZlcnNpb24gbmFtZSBjYWxsYmFjayA9XG4gIGxldCBpbmRleGVkREIgOiBfIGlEQkZhY3RvcnkgdCA9IFVuc2FmZS52YXJpYWJsZSBcIndpbmRvdy5pbmRleGVkREJcIiBpblxuICBsZXQgciA9IGxhenkgKGluZGV4ZWREQiMjX29wZW4gKHN0cmluZyBuYW1lKSAoQU9wdC5vcHRpb24gdmVyc2lvbikpIGluXG4gIHdyYXAgP2Vycm9yIH5jYWxsYmFjayByO1xuICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICByIyMub251cGdyYWRlbmVlZGVkIDo9XG4gICAgQU9wdC5hb3B0IChmdW4gdSAtPiB3cmFwX2NhbGxiYWNrIChmdW4gZSAtPlxuICAgICAgICBsZXQgdiA9IGRiX3VwZ3JhZGVfZXZlbnQgZSBpblxuICAgICAgICBsZXQgZGIgPSByZXN1bHQgciBpblxuICAgICAgICB1IGRiIHYpKSB1cGdyYWRlXG5cbmxldCB0cmFuc2FjdGlvbiByIDogaURCVHJhbnNhY3Rpb24gdCA9IHIjIy50cmFuc2FjdGlvblxuXG5sZXQgY3JlYXRlX2RiX29wdGlvbnMge2tleV9wYXRoOyBhdXRvX2luY3JlbWVudH0gOiBjcmVhdGVfZGJfb3B0aW9ucyB0ID0gb2JqZWN0JWpzXG4gIHZhbCBrZXlQYXRoID0gQU9wdC5hb3B0IHN0cmluZyBrZXlfcGF0aFxuICB2YWwgYXV0b0luY3JlbWVudCA9IEFPcHQuYW9wdCBib29sIGF1dG9faW5jcmVtZW50XG5lbmRcblxubGV0IGNyZWF0ZV9zdG9yZSA/b3B0aW9ucyAoZGIgOiBpREJEYXRhYmFzZSB0KSBuYW1lID1cbiAgVW5zYWZlLmNvZXJjZSBAQFxuICBkYiMjY3JlYXRlT2JqZWN0U3RvcmUgKHN0cmluZyBuYW1lKSAoQU9wdC5hb3B0IGNyZWF0ZV9kYl9vcHRpb25zIG9wdGlvbnMpXG5cbmxldCBnZXRfc3RvcmUgP21vZGUgKGRiIDogaURCRGF0YWJhc2UgdCkgbmFtZSA6IChfLCBfKSBpREJPYmplY3RTdG9yZSB0ID1cbiAgbGV0IHRyID0gZGIjI3RyYW5zYWN0aW9uIChhcnJheSBbfCBzdHJpbmcgbmFtZSB8XSkgKEFPcHQuYW9wdCBzdHJfb2ZfbW9kZSBtb2RlKSBpblxuICBVbnNhZmUuY29lcmNlIEBAIHRyIyNvYmplY3RTdG9yZSAoc3RyaW5nIG5hbWUpXG5cbm1vZHVsZSBTdG9yZShLIDogVHJfc2lnKShEIDogVHJfc2lnKSA9IHN0cnVjdFxuXG4gIHR5cGUgc3RvcmUgPSAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdFxuICB0eXBlIGtleXMgPSBLIG9mIEsudCB8IEtSIG9mIEsuanMgaURCS2V5UmFuZ2UgdFxuXG4gIGxldCBjcmVhdGUgP29wdGlvbnMgZGIgbmFtZSA6IHN0b3JlID1cbiAgICBjcmVhdGVfc3RvcmUgP29wdGlvbnMgZGIgbmFtZVxuXG4gIGxldCBzdG9yZSA/bW9kZSBkYiBuYW1lIDogc3RvcmUgPVxuICAgIGdldF9zdG9yZSA/bW9kZSBkYiBuYW1lXG5cbiAgbGV0IGFkZCA/Y2FsbGJhY2sgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpICh4IDogRC50KSA9XG4gICAgd3JhcGYgP2NhbGxiYWNrID9lcnJvciBLLm9mX2pzIEBAIGxhenkgKHN0IyNhZGQgKEQudG9fanMgeCkgKEFPcHQuYW9wdCBLLnRvX2pzIGtleSkpXG5cbiAgbGV0IHB1dCA/Y2FsbGJhY2sgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpICh4IDogRC50KSA9XG4gICAgd3JhcCA/Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNwdXQgKEQudG9fanMgeCkgKEFPcHQuYW9wdCBLLnRvX2pzIGtleSkpXG5cbiAgbGV0IHJhbmdlID9vbG93ZXIgP291cHBlciA/bG93ZXIgP3VwcGVyICgpID1cbiAgICBsZXQgaURCS2V5UmFuZ2UgOiBLLmpzIGlEQktleVJhbmdlIHQgPSBVbnNhZmUudmFyaWFibGUgXCJJREJLZXlSYW5nZVwiIGluXG4gICAgbWF0Y2ggbG93ZXIsIHVwcGVyIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGxvd2VyLCBOb25lIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI2xvd2VyQm91bmQgKEsudG9fanMgbG93ZXIpIChBT3B0LmFvcHQgYm9vbCBvbG93ZXIpKVxuICAgIHwgTm9uZSwgU29tZSB1cHBlciAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyN1cHBlckJvdW5kIChLLnRvX2pzIHVwcGVyKSAoQU9wdC5hb3B0IGJvb2wgb3VwcGVyKSlcbiAgICB8IFNvbWUgbG93ZXIsIFNvbWUgdXBwZXIgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjYm91bmRcbiAgICAgICAgICAgIChLLnRvX2pzIGxvd2VyKSAoSy50b19qcyB1cHBlcilcbiAgICAgICAgICAgIChBT3B0LmFvcHQgYm9vbCBvbG93ZXIpIChBT3B0LmFvcHQgYm9vbCBvdXBwZXIpKVxuXG4gIGxldCBjb3VudCA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKGNhbGxiYWNrIDogaW50IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50IEFPcHQudW5kZWZpbmVkKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50IChBT3B0LmRlZiAoSy50b19qcyBrKSkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50X3JhbmdlIChBT3B0LmRlZiByKSlcblxuICBsZXQgZ2V0ID9lcnJvciAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogRC50IG9wdGlvbiAtPiB1bml0KSBrID1cbiAgICBsZXQgb2ZfanMganMgPSBtYXRjaCBBT3B0LnRvX29wdGlvbiBqcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGpzIC0+IFNvbWUgKEQub2ZfanMganMpIGluXG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBLIGtleSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXQgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldF9yYW5nZSByYW5nZSlcblxuICBsZXQgZ2V0X2FsbCA/ZXJyb3IgP2tleSA/Y291bnQgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEQudCBsaXN0IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsIEFPcHQudW5kZWZpbmVkIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGwgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbF9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQub3B0aW9uIGNvdW50KSlcblxuICBsZXQgZ2V0X2tleSA/ZXJyb3IgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEsudCBvcHRpb24gLT4gdW5pdCkgayA9XG4gICAgbGV0IG9mX2pzIGpzID0gbWF0Y2ggQU9wdC50b19vcHRpb24ganMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBqcyAtPiBTb21lIChLLm9mX2pzIGpzKSBpblxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgSyBrZXkgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0S2V5IChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRLZXlfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGdldF9hbGxfa2V5cyA/ZXJyb3IgP2tleSA/Y291bnQgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEsudCBsaXN0IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5cyBBT3B0LnVuZGVmaW5lZCAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5cyAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5c19yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQub3B0aW9uIGNvdW50KSlcblxuICBsZXQgZGVsZXRlID9jYWxsYmFjayA/ZXJyb3IgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpID0gZnVuY3Rpb25cbiAgICB8IEsga2V5IC0+IHdyYXAgP2Vycm9yID9jYWxsYmFjayBAQCBsYXp5IChzdCMjZGVsZXRlIChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwID9lcnJvciA/Y2FsbGJhY2sgQEAgbGF6eSAoc3QjI2RlbGV0ZV9yYW5nZSByYW5nZSlcblxuICBsZXQgaXRlciA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gRC50IC0+IHVuaXQpID1cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgZiBrIChELm9mX2pzIGMjIy52YWx1ZSk7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGZvbGQgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IEQudCAtPiAnYSAtPiAnYSkgKHN0YXJ0IDogJ2EpIChjYWxsYmFjayA6ICdhIC0+IHVuaXQpID1cbiAgICBsZXQgYWNjID0gcmVmIHN0YXJ0IGluXG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2FsbGJhY2sgIWFjY1xuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgYWNjIDo9IGYgayAoRC5vZl9qcyBjIyMudmFsdWUpICFhY2M7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGl0ZXJfa2V5cyA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gdW5pdCkgPVxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBmIGs7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGZvbGRfa2V5cyA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gJ2EgLT4gJ2EpIChzdGFydCA6ICdhKSAoY2FsbGJhY2sgOiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGFjYyA9IHJlZiBzdGFydCBpblxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNhbGxiYWNrICFhY2NcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGFjYyA6PSBmIGsgIWFjYztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgY2xlYXIgP2Vycm9yID9jYWxsYmFjayAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgPVxuICAgIHdyYXBmID9jYWxsYmFjayA/ZXJyb3IgKGZ1biBfIC0+ICgpKSBAQCBsYXp5IHN0IyNjbGVhclxuXG4gIGxldCBjcmVhdGVfaW5kZXhfb3B0aW9ucyB7dW5pcXVlOyBtdWx0aV9lbnRyeTsgbG9jYWxlfSA6IGNyZWF0ZV9pbmRleF9vcHRpb25zIHQgPSBvYmplY3QlanNcbiAgICB2YWwgdW5pcXVlID0gQU9wdC5hb3B0IGJvb2wgdW5pcXVlXG4gICAgdmFsIG11bHRpRW50cnkgPSBBT3B0LmFvcHQgYm9vbCBtdWx0aV9lbnRyeVxuICAgIHZhbCBsb2NhbGUgPSBBT3B0LmFvcHQgYm9vbCBsb2NhbGVcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9pbmRleCA/b3B0aW9ucyAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSBrZXlfcGF0aCA9XG4gICAgbGV0IG9wdGlvbnMgPSBBT3B0LmFvcHQgY3JlYXRlX2luZGV4X29wdGlvbnMgb3B0aW9ucyBpblxuICAgIHN0IyNjcmVhdGVJbmRleCAoc3RyaW5nIG5hbWUpIChzdHJpbmcga2V5X3BhdGgpIG9wdGlvbnNcblxuICBsZXQgZGVsZXRlX2luZGV4IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lID1cbiAgICBpZ25vcmUgQEAgc3QjI2RlbGV0ZUluZGV4IChzdHJpbmcgbmFtZSlcblxuICBsZXQgZ2V0X2luZGV4IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lID1cbiAgICBzdCMjaW5kZXggKHN0cmluZyBuYW1lKVxuXG5lbmRcblxubW9kdWxlIE5vVHIoUyA6IHNpZyB0eXBlIHQgZW5kKSA6IFRyX3NpZyB3aXRoIHR5cGUgdCA9IFMudCBhbmQgdHlwZSBqcyA9IFMudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTLnRcbiAgdHlwZSBqcyA9IFMudFxuICBsZXQgdG9fanMgeCA9IHhcbiAgbGV0IG9mX2pzIHggPSB4XG5lbmRcblxubW9kdWxlIEludFRyIDogKFRyX3NpZyB3aXRoIHR5cGUganMgPSBpbnQgYW5kIHR5cGUgdCA9IGludCkgPSBOb1RyKHN0cnVjdCB0eXBlIHQgPSBpbnQgZW5kKVxuXG5tb2R1bGUgU3RyaW5nVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0ganNfc3RyaW5nIHQgYW5kIHR5cGUgdCA9IHN0cmluZyA9IHN0cnVjdFxuICB0eXBlIGpzID0ganNfc3RyaW5nIHRcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0b19qcyB4ID0gc3RyaW5nIHhcbiAgbGV0IG9mX2pzIHggPSB0b19zdHJpbmcgeFxuZW5kXG5cbm1vZHVsZSBOdW1iZXJUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBudW1iZXIgdCBhbmQgdHlwZSB0ID0gZmxvYXQgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IG51bWJlciB0XG4gIHR5cGUgdCA9IGZsb2F0XG4gIGxldCB0b19qcyB4ID0gbnVtYmVyX29mX2Zsb2F0IHhcbiAgbGV0IG9mX2pzIHggPSBmbG9hdF9vZl9udW1iZXIgeFxuZW5kXG5cbm1vZHVsZSBEYXRlVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0gZGF0ZSB0IGFuZCB0eXBlIHQgPSBzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IGRhdGUgdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRvX2pzIHggPSBuZXclanMgZGF0ZV9mcm9tVGltZVZhbHVlIChkYXRlIyNwYXJzZSAoc3RyaW5nIHgpKVxuICBsZXQgb2ZfanMgeCA9IHRvX3N0cmluZyB4IyN0b0xvY2FsZVN0cmluZ1xuZW5kXG4iLCJtb2R1bGUgQ29udiA9IFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Jcbm1vZHVsZSBTZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubW9kdWxlIFNleHBhYmxlID0gU2V4cGxpYjAuU2V4cGFibGVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQmFzZVxuXG50eXBlICdhIHRlc3RfcHJlZFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiAoJ2EgLT4gYm9vbClcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG50eXBlICdhIHRlc3RfZXFcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9yZXN1bHRcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiBleHBlY3Q6J2FcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG5leGNlcHRpb24gRSBvZiBzdHJpbmcgKiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZyBib2R5ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiB0YWdcbiAgICB8IFNvbWUgcyAtPiBzIF4gXCI6IFwiIF4gdGFnXG4gIGluXG4gIGxldCBzZXhwID1cbiAgICBTZXhwLkxpc3QgKFxuICAgICAgYm9keVxuICAgICAgQCBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIkxvY1wiOyBTZXhwLkF0b20gcG9zIF0gXVxuICAgICAgQCBiZWdpbiBtYXRjaCBoZXJlIHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IF8gLT4gWyBTZXhwLkxpc3QgWyBTZXhwLkF0b20gXCJTdGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IFslc2V4cF9vZjogU291cmNlX2NvZGVfcG9zaXRpb24udCBsaXN0XSBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdIF1cbiAgICAgIGVuZFxuICAgIClcbiAgaW5cbiAgKCogSGVyZSBhbmQgaW4gb3RoZXIgcGxhY2VzIHdlIHJldHVybiBleGNlcHRpb25zLCByYXRoZXIgdGhhbiBkaXJlY3RseSByYWlzaW5nLCBhbmRcbiAgICAgaW5zdGVhZCByYWlzZSBhdCB0aGUgbGF0ZXN0IG1vbWVudCBwb3NzaWJsZSwgc28gYmFja3RyYWNlIGRvbid0IGluY2x1ZGUgbm9pc2UgZnJvbVxuICAgICB0aGVzZSBmdW5jdGlvbnMgdGhhdCBjb25zdHJ1Y3QgZXhjZXB0aW9ucy4gKilcbiAgRSAobWVzc2FnZSwgc2V4cClcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcInByZWRpY2F0ZSBmYWlsZWRcIiBbXG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJWYWx1ZVwiOyBzZXhwaWZpZXIgdF1cbiAgXVxuXG5sZXQgdGVzdF9wcmVkIH5wb3MgfnNleHBpZmllciB+aGVyZSA/bWVzc2FnZSBwcmVkaWNhdGUgdCA9XG4gIGlmIG5vdCAocHJlZGljYXRlIHQpIHRoZW5cbiAgICByYWlzZSAoZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdClcblxubGV0IHJfZGlmZiA6IChmcm9tXzpzdHJpbmcgLT4gdG9fOnN0cmluZyAtPiB1bml0KSBvcHRpb24gcmVmID0gcmVmICAgTm9uZVxubGV0IHNldF9kaWZmX2Z1bmN0aW9uIGYgPSByX2RpZmYgOj0gZlxuXG5sZXQgW0Bjb2xkXSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgZ290ID0gc2V4cGlmaWVyIGdvdCBpblxuICBsZXQgZXhwZWN0ID0gc2V4cGlmaWVyIGV4cGVjdCBpblxuICBiZWdpbiBtYXRjaCAhcl9kaWZmIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkaWZmIC0+XG4gICAgbGV0IGZyb21fID0gU2V4cC50b19zdHJpbmdfaHVtIGV4cGVjdCBpblxuICAgIGxldCB0b18gICA9IFNleHAudG9fc3RyaW5nX2h1bSBnb3QgaW5cbiAgICBkaWZmIH5mcm9tXyB+dG9fXG4gIGVuZDtcbiAgYEZhaWwgKGV4cGVjdCwgZ290KVxuXG5sZXQgdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdCB+Z290ID1cbiAgbGV0IHBhc3MgPVxuICAgIG1hdGNoIGVxdWFsIHdpdGhcbiAgICB8IE5vbmUgLT4gY29tcGFyYXRvciBnb3QgZXhwZWN0ID0gMFxuICAgIHwgU29tZSBmIC0+IGYgZ290IGV4cGVjdFxuICBpblxuICBpZiBwYXNzXG4gIHRoZW4gYFBhc3NcbiAgZWxzZSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3RcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfZXEgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dDEgfnQyID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiY29tcGFyaXNvbiBmYWlsZWRcIiBbXG4gICAgdDE7XG4gICAgU2V4cC5BdG9tIFwidnNcIjtcbiAgICB0MjtcbiAgXVxuXG5sZXQgdGVzdF9lcSB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdDp0MSB+Z290OnQyIHdpdGhcbiAgfCBgUGFzcyAtPiAoKVxuICB8IGBGYWlsICh0MSwgdDIpIC0+IHJhaXNlIChleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIpXG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X3Jlc3VsdCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5leHBlY3QgfmdvdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcImdvdCB1bmV4cGVjdGVkIHJlc3VsdFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImV4cGVjdGVkXCI7IGV4cGVjdF07XG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJnb3RcIjsgZ290XTtcbiAgXVxuXG5sZXRbQHdhcm5pbmcgXCItMTZcIl0gdGVzdF9yZXN1bHQgfnBvcyB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5oZXJlID9tZXNzYWdlID9lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3Qgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKGV4cGVjdCwgZ290KSAtPiByYWlzZSAoZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290KVxuIiwibGV0IHVuaXF1ZV9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG4oKiBVc2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IGxpYm5hbWUgaW4gc3VjaCBhIHdheSB0aGF0IGZvciBmdW5jdG9yIGFwcGxpY2F0aW9ucywgaXQgaXNcbiAgIHRoZSBjYWxsaW5nIGxpYnJhcmllcyBuYW1lIHRoYXQgZ2V0cyByZWdpc3RlcmVkLiAqKVxubW9kdWxlIEN1cnJlbnRfbGlibmFtZSA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiPHVua25vd24+XCJcbiAgbGV0IGxpYm5hbWVfcmVmID0gcmVmIG51bGxcbiAgbGV0IHNldCBzdHIgPSBsaWJuYW1lX3JlZiA6PSBzdHJcbiAgbGV0IHVuc2V0ICgpID0gbGlibmFtZV9yZWYgOj0gbnVsbFxuICBsZXQgZ2V0ICgpID0gIWxpYm5hbWVfcmVmXG5lbmRcblxubW9kdWxlIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrID0gc3RydWN0XG4gIGxldCB0ID0gcmVmIFtdXG4gIGxldCBwdXNoIHMgPSB0IDo9IHMgOjogIXRcbiAgbGV0IHBvcF9leG4gKCkgPSB0IDo9IExpc3QudGwgIXRcblxuICBsZXQgdG9fbmFtZSAoKSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbXMgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCBcIi5cIiAoTGlzdC5yZXYgbXMpKVxuICA7O1xuZW5kXG5cbigqIFRoaXMgaXMgdGhlIG1haW4gZGF0YSBzdHJ1Y3R1cmUgb2YgdGhpcyBtb2R1bGUuIEFuIFtFbnRyeS50XSByZXByZXNlbnRzIGEgYmVuY2htYXJrXG4gICBhbG9uZyB3aXRoIHNvbWUgbWV0YWRhdGEgYWJvdXQgaXMgcG9zaXRpb24sIGFyZ3VtZW50cyBldGMuICopXG5tb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3BhcmFtLCAnYSkgcGFyYW1ldGVyaXNlZF9zcGVjID1cbiAgICB7IGFyZ19uYW1lIDogc3RyaW5nXG4gICAgOyBwYXJhbXMgOiAoc3RyaW5nICogJ3BhcmFtKSBsaXN0XG4gICAgOyB0aHVuayA6ICdwYXJhbSAtPiB1bml0IC0+ICdhXG4gICAgfVxuXG4gIHR5cGUgdGVzdF9zcGVjID1cbiAgICB8IFJlZ3VsYXJfdGh1bmsgOiAoWyBgaW5pdCBdIC0+IHVuaXQgLT4gJ2EpIC0+IHRlc3Rfc3BlY1xuICAgIHwgUGFyYW1ldGVyaXNlZF90aHVuayA6ICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgLT4gdGVzdF9zcGVjXG5cbiAgdHlwZSB0ID1cbiAgICB7IHVuaXF1ZV9pZCA6IGludFxuICAgIDsgY29kZSA6IHN0cmluZ1xuICAgIDsgdHlwZV9jb252X3BhdGggOiBzdHJpbmdcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGZpbGVuYW1lIDogc3RyaW5nXG4gICAgOyBsaW5lIDogaW50XG4gICAgOyBzdGFydHBvcyA6IGludFxuICAgIDsgZW5kcG9zIDogaW50XG4gICAgOyB0ZXN0X3NwZWMgOiB0ZXN0X3NwZWNcbiAgICA7IGJlbmNoX21vZHVsZV9uYW1lIDogc3RyaW5nIG9wdGlvblxuICAgIH1cblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmUgdDEudW5pcXVlX2lkIHQyLnVuaXF1ZV9pZFxuXG4gICgqIEV4dHJhY3RzIG1vZHVsZSBuYW1lIGZyb20gW1wiZmlsZW5hbWUubWwuTW9kdWxlXCJdLCB3aGljaCBpcyB0aGUgZm9ybWF0IG9mIFtleHRfbmFtZV1cbiAgICAgYXMgc2V0IGJ5IFt0eXBlY29udl0uICopXG4gIGxldCBnZXRfbW9kdWxlX25hbWVfb3B0IHQgPVxuICAgIGxldCBzdHIgPSB0LnR5cGVfY29udl9wYXRoIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSArIDQgPD0gbGVuXG4gICAgICB0aGVuXG4gICAgICAgIGlmIFN0cmluZy5zdWIgc3RyIGkgNCA9IFwiLm1sLlwiXG4gICAgICAgIHRoZW4gU29tZSAoU3RyaW5nLnN1YiBzdHIgKGkgKyA0KSAobGVuIC0gaSAtIDQpKVxuICAgICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBOb25lXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgd2l0aF90ZXN0X3NwZWMgdCB0ZXN0X3NwZWMgPSB7IHQgd2l0aCB0ZXN0X3NwZWMgfVxuZW5kXG5cbigqIEluc3BlY3Qgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBkZWNpZGUgaWYgYmVuY2htYXJrcyBhcmUgYmVpbmcgcnVuLiBUaGlzIGlzXG4gICBjYWxsZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBbcGFfYmVuY2hdIHN5bnRheCB0byBkZWNpZGUgaWYgdGhlIGdsb2JhbCBoYXNodGFibGVcbiAgIHNob3VsZCBiZSBwb3B1bGF0ZWQuICopXG5sZXQgYWRkX2Vudmlyb25tZW50X3ZhciA9XG4gIGxldCB2ID1cbiAgICB0cnkgU3lzLmdldGVudiBcIkJFTkNITUFSS1NfUlVOTkVSXCIgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IFwiXCJcbiAgaW5cbiAgdiA9IFwiVFJVRVwiXG47O1xuXG4oKiBUaGlzIGhhc2h0YWJsZSBjb250YWlucyBhbGwgdGhlIGJlbmNobWFya3MgZnJvbSBhbGwgdGhlIG9mIGxpYnJhcmllcyB0aGF0IGhhdmUgYmVlblxuICAgbG9hZGVkLiBBdCB0aGUgdGltZSB0aGUgYmVuY2htYXJrcyBhcmUgcmVnaXN0ZXJpbmcgdGhlbXNlbHZlcyB3aXRoIFtwcHhfYmVuY2hfbGliXSB3ZVxuICAgZG9uJ3QgeWV0IGtub3cgd2hpY2ggbGlicmFyaWVzIHdpbGwgbmVlZCB0byBiZSBydW4uICAqKVxubGV0IGxpYnNfdG9fZW50cmllcyA6IChzdHJpbmcsIEVudHJ5LnQgbGlzdCkgSGFzaHRibC50ID0gSGFzaHRibC5jcmVhdGUgMTBcblxubGV0IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lID1cbiAgdHJ5IEhhc2h0YmwuZmluZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSB3aXRoXG4gIHwgTm90X2ZvdW5kIC0+IFtdXG47O1xuXG5sZXQgbG9va3VwX2xpYiB+bGlibmFtZSA9IExpc3QucmV2IChsb29rdXBfcmV2X2xpYiB+bGlibmFtZSlcblxubGV0IGZvcmNlX2Ryb3AgPVxuICAoKiBVc2VmdWwgZm9yIGpzX29mX29jYW1sIHRvIHBlcmZvcm0gZGVhZGNvZGUgZWxpbWluYXRpb24uXG4gICAgIHNlZSBwcHgvcHB4X2lubGluZV90ZXN0L3J1bnRpbWUtbGliL3J1bnRpbWUubWwgW0FjdGlvbi5nZXRdIGZvciBtb3JlIGRldGFpbHMgKilcbiAgdHJ5XG4gICAgaWdub3JlIChTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9CRU5DSFwiIDogc3RyaW5nKTtcbiAgICB0cnVlXG4gIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfbW9kZSAoKSA9IGlmIGZvcmNlX2Ryb3AgdGhlbiBgSWdub3JlIGVsc2UgYENvbGxlY3RcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaFxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aFxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZHBvc1xuICAgICAgICAgICAgICAgICAgICAgdGVzdF9zcGVjXG4gID1cbiAgbWF0Y2ggZ2V0X21vZGUgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgQ29sbGVjdCAtPlxuICAgIGxldCBsaWJuYW1lID0gQ3VycmVudF9saWJuYW1lLmdldCAoKSBpblxuICAgIGxldCBlbnRyeSA9XG4gICAgICB7IEVudHJ5LmNvZGVcbiAgICAgIDsgdW5pcXVlX2lkID0gdW5pcXVlX2lkICgpXG4gICAgICA7IHR5cGVfY29udl9wYXRoXG4gICAgICA7IGJlbmNoX21vZHVsZV9uYW1lID0gQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sudG9fbmFtZSAoKVxuICAgICAgOyBuYW1lXG4gICAgICA7IGZpbGVuYW1lXG4gICAgICA7IGxpbmVcbiAgICAgIDsgc3RhcnRwb3NcbiAgICAgIDsgZW5kcG9zXG4gICAgICA7IHRlc3Rfc3BlY1xuICAgICAgfVxuICAgIGluXG4gICAgSGFzaHRibC5hZGQgbGlic190b19lbnRyaWVzIGxpYm5hbWUgKGVudHJ5IDo6IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaF9tb2R1bGVcbiAgICAgICAgICAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICAgICAgICAgICB+Y29kZTpfXG4gICAgICAgICAgICAgICAgICAgICB+dHlwZV9jb252X3BhdGg6X1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5saW5lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvczpfXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgKCogUnVubmluZyBmIHJlZ2lzdGVycyB0aGUgYmVuY2htYXJrcyB1c2luZyBCRU5DSCAqKVxuICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnB1c2ggbmFtZTtcbiAgICAodHJ5XG4gICAgICAgZiAoKTtcbiAgICAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wb3BfZXhuICgpXG4gICAgIHdpdGhcbiAgICAgfCBleCAtPlxuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKCk7XG4gICAgICAgcmFpc2UgZXgpXG47O1xuIiwidHlwZSB0ID0gc3RyaW5nXG5cbigqIFNoYXJlIHRoZSBkaWdlc3Qgb2YgdGhlIGVtcHR5IHN0cmluZyAqKVxubGV0IGVtcHR5ID0gRGlnZXN0LnN0cmluZyBcIlwiXG5sZXQgbWFrZSBzID1cbiAgaWYgcyA9IGVtcHR5IHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgc1xuXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcblxubGV0IGxlbmd0aCA9IDE2XG5cbmxldCB0b19iaW5hcnkgcyA9IHNcbmxldCBvZl9iaW5hcnlfZXhuIHMgPSBhc3NlcnQgKFN0cmluZy5sZW5ndGggcyA9IGxlbmd0aCk7IG1ha2Ugc1xubGV0IHVuc2FmZV9vZl9iaW5hcnkgPSBtYWtlXG5cbmxldCB0b19oZXggPSBEaWdlc3QudG9faGV4XG5sZXQgb2ZfaGV4X2V4biBzID0gbWFrZSAoRGlnZXN0LmZyb21faGV4IHMpXG5cbmxldCBzdHJpbmcgcyA9IG1ha2UgKERpZ2VzdC5zdHJpbmcgcylcblxubGV0IGJ5dGVzIHMgPSBtYWtlIChEaWdlc3QuYnl0ZXMgcylcblxubGV0IHN1YmJ5dGVzIGJ5dGVzIH5wb3MgfmxlbiA9IG1ha2UgKERpZ2VzdC5zdWJieXRlcyBieXRlcyBwb3MgbGVuKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTG9jYXRpb24gOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIFV1aWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubGV0IGV2YWxfZmFpbCBsb2MgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gcyAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgIVwiJXtMb2NhdGlvbn06ICVzXCIgbG9jIHMpKSBmbXRcbjs7XG5cbmxldCBlcXVhbF9vcHRpb24gZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgU29tZSBfLCBOb25lIHwgTm9uZSwgU29tZSBfIC0+IGZhbHNlXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG47O1xuXG5tb2R1bGUgU29ydGVkX3RhYmxlIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBjcmVhdGUgOiBMb2NhdGlvbi50IC0+IGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3QgLT4gJ2EgdFxuICB2YWwgZXhwb3NlIDogJ2EgdCAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7IHNvcnRlZCA6IChzdHJpbmcgKiAnYSkgbGlzdCB9IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHNcbiAgICA6ICBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgICAtPiBbIGBPayBvZiAoc3RyaW5nICogJ2EpIGxpc3QgfCBgTWlzbWF0Y2ggb2Ygc3RyaW5nIF1cbiAgICA9XG4gICAgZnVuIH5lcSAtPlxuICAgIGxldCByZWMgbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYE9rIChMaXN0LnJldiBhY2MpXG4gICAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPlxuICAgICAgICBpZiBTdHJpbmcuKGxhc3Rfa2V5ID0ga2V5KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgZXEgbGFzdF92YWx1ZSB2YWx1ZSB0aGVuIGxvb3AgYWNjIH5sYXN0X2tleSB+bGFzdF92YWx1ZSB4cyBlbHNlIGBNaXNtYXRjaCBrZXlcbiAgICAgICAgZWxzZSBsb29wICgoa2V5LCB2YWx1ZSkgOjogYWNjKSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gICAgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgW10gLT4gYE9rIFtdXG4gICAgfCAoa2V5LCB2YWx1ZSkgOjogeHMgLT4gbG9vcCBbIGtleSwgdmFsdWUgXSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBsb2MgfmVxIHhzID1cbiAgICBsZXQgc29ydGVkID0gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gKHMxLCBfKSAoczIsIF8pIC0+IFN0cmluZy5jb21wYXJlIHMxIHMyKSB4cyBpblxuICAgIG1hdGNoIG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHMgfmVxIHNvcnRlZCB3aXRoXG4gICAgfCBgT2sgc29ydGVkIC0+IHsgc29ydGVkIH1cbiAgICB8IGBNaXNtYXRjaCBzIC0+XG4gICAgICBldmFsX2ZhaWwgbG9jIFwiRGlmZmVyZW50IHNoYXBlcyBmb3IgZHVwbGljYXRlZCBwb2x5bW9ycGhpYyBjb25zdHJ1Y3RvcjogYCVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCBleHBvc2UgdCA9IHQuc29ydGVkXG4gIGxldCBtYXAgdCB+ZiA9IHsgc29ydGVkID0gTGlzdC5tYXAgdC5zb3J0ZWQgfmY6KGZ1biAoaywgdikgLT4gaywgZiB2KSB9XG5lbmRcblxubW9kdWxlIERpZ2VzdCA6IHNpZ1xuICB0eXBlIHQgPSBNZDVfbGliLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgdG9fbWQ1IDogdCAtPiBNZDVfbGliLnRcbiAgdmFsIG9mX21kNSA6IE1kNV9saWIudCAtPiB0XG4gIHZhbCB0b19oZXggOiB0IC0+IHN0cmluZ1xuICB2YWwgY29uc3RydWN0b3IgOiBzdHJpbmcgLT4gdCBsaXN0IC0+IHRcbiAgdmFsIGxpc3QgOiB0IGxpc3QgLT4gdFxuICB2YWwgcGFpciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdFxuICB2YWwgdXVpZCA6IFV1aWQudCAtPiB0XG4gIHZhbCBpbnQgOiBpbnQgLT4gdFxuICB2YWwgb3B0aW9uIDogdCBvcHRpb24gLT4gdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTWQ1X2xpYlxuXG4gIGxldCB0b19tZDUgdCA9IHRcbiAgbGV0IG9mX21kNSB0ID0gdFxuICBsZXQgc2V4cF9vZl90IHQgPSB0IHw+IHRvX2hleCB8PiBzZXhwX29mX3N0cmluZ1xuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IHN0cmluZ19vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHV1aWQgdSA9IHN0cmluZyAoVXVpZC50b19zdHJpbmcgdSlcbiAgbGV0IGludCB4ID0gc3RyaW5nIChJbnQudG9fc3RyaW5nIHgpXG4gIGxldCBwYWlyIHggeSA9IHN0cmluZyAodG9fYmluYXJ5IHggXiB0b19iaW5hcnkgeSlcbiAgbGV0IGxpc3QgbCA9IHN0cmluZyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKExpc3QubWFwIH5mOnRvX2JpbmFyeSBsKSlcbiAgbGV0IGNvbnN0cnVjdG9yIHMgbCA9IHN0cmluZyAocyBeIHRvX2JpbmFyeSAobGlzdCBsKSlcblxuICBsZXQgb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gY29uc3RydWN0b3IgXCJub25lXCIgW11cbiAgICB8IFNvbWUgeCAtPiBjb25zdHJ1Y3RvciBcInNvbWVcIiBbIHggXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yID0gc3RydWN0XG4gICgqIFsnYSB0XSBpcyBhIG5vbi1yZWN1cnNpdmUgdHlwZSwgdXNlZCB0byByZXByZXNlbnQgMS1sYXllciBvZiBleHByZXNzaW9uLiAgVGhlXG4gICAgIHJlY3Vyc2l2ZSBrbm90IGlzIHRpZWQgYmVsb3cgaW4gW0Nhbm9uaWNhbF9mdWxsLkV4cC50XS4gKilcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqICdhXG4gICAgfCBCYXNlIG9mIFV1aWQudCAqICdhIGxpc3RcbiAgICB8IFR1cGxlIG9mICdhIGxpc3RcbiAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqICdhIGxpc3QpIGxpc3RcbiAgICAoKiBQb2x5bW9ycGhpYyB2YXJpYW50cyBhcmUgaW5zZW5zaXRpdmUgdG8gdGhlIG9yZGVyIHRoZSBjb25zdHJ1Y3RvcnMgYXJlIGxpc3RlZCAqKVxuICAgIHwgUG9seV92YXJpYW50IG9mICdhIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICgqIExlZnQtaGFuZC1zaWRlIG9mIFtBcHBsaWNhdGlvbl0gaXMgYSBwb3RlbnRpYWxseSByZWN1cnNpdmUgZGVmaW5pdGlvbjogaXRcbiAgICAgICBjYW4gcmVmZXIgdG8gaXRzZWxmIHVzaW5nIFtSZWNfYXBwIChpLCBfKV0gd2hlcmUgW2ldIGlzIHRoZSBkZXB0aCBvZiB0aGlzXG4gICAgICAgYXBwbGljYXRpb24gbm9kZSAoaG93IG1hbnkgYXBwbGljYXRpb24gbm9kZXMgYXJlIGFib3ZlIGl0KS5cbiAgICAgICBJdCBhbHNvIGhhcyBpdHMgb3duIHNjb3BlIG9mIHR5cGUgdmFyaWFibGVzIHNvIGl0IGNhbiBub3QgcmVmZXIgdG8gdHlwZSB2YXJpYWJsZXNcbiAgICAgICBvZiB0aGUgZW5jbG9zaW5nIHNjb3BlLlxuICAgICopXG4gICAgfCBBcHBsaWNhdGlvbiBvZiAnYSAqICdhIGxpc3RcbiAgICB8IFJlY19hcHAgb2YgaW50ICogJ2EgbGlzdFxuICAgIHwgVmFyIG9mIGludFxuICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuXG4gIGxldCBtYXAgeCB+ZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBbm5vdGF0ZSAodSwgeCkgLT4gQW5ub3RhdGUgKHUsIGYgeClcbiAgICB8IEJhc2UgKHMsIHhzKSAtPiBCYXNlIChzLCBMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFR1cGxlIHhzIC0+IFR1cGxlIChMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFJlY29yZCBsIC0+IFJlY29yZCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4KSAtPiBzLCBmIHgpKVxuICAgIHwgVmFyaWFudCBsIC0+IFZhcmlhbnQgKExpc3QubWFwIGwgfmY6KGZ1biAocywgeHMpIC0+IHMsIExpc3QubWFwIH5mIHhzKSlcbiAgICB8IFBvbHlfdmFyaWFudCB0IC0+IFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLm1hcCB0IH5mOihPcHRpb24ubWFwIH5mKSlcbiAgICB8IEFwcGxpY2F0aW9uICh4LCBsKSAtPiBBcHBsaWNhdGlvbiAoZiB4LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgUmVjX2FwcCAodCwgbCkgLT4gUmVjX2FwcCAodCwgTGlzdC5tYXAgfmYgbClcbiAgICB8IFZhciB2IC0+IFZhciB2XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIF8gLT4gQXRvbSBcIi4uLlwiKSB0KVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZGlnZXN0IDogc2lnXG4gICgqIERpZ2VzdCB2YXJpb3VzIGV4cHJlc3Npb24gZm9ybXMgKilcblxuICB2YWwgZGlnZXN0X2xheWVyIDogRGlnZXN0LnQgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50IC0+IERpZ2VzdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGRpZ2VzdF9sYXllciA9IGZ1bmN0aW9uXG4gICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLkFubm90YXRlICh1LCB4KSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yIFwiYW5ub3RhdGVcIiBbIERpZ2VzdC51dWlkIHU7IHggXVxuICAgIHwgQmFzZSAodSwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYmFzZVwiIFsgRGlnZXN0LnV1aWQgdTsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBUdXBsZSBsIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInR1cGxlXCIgWyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY29yZCBsIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJyZWNvcmRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0IChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHQpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIHQpKSBdXG4gICAgfCBWYXJpYW50IGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInZhcmlhbnRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0XG4gICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCBsKSAtPiBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyBzKSAoRGlnZXN0Lmxpc3QgbCkpKVxuICAgICAgICBdXG4gICAgfCBQb2x5X3ZhcmlhbnQgdGFibGUgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInBvbHlfdmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoU29ydGVkX3RhYmxlLmV4cG9zZSB0YWJsZSkgfmY6KGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgIERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHgpIChEaWdlc3Qub3B0aW9uIHkpKSlcbiAgICAgICAgXVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcImFwcGxpY2F0aW9uXCIgWyB4OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY19hcHAgKG4sIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInJlY19hcHBcIiBbIERpZ2VzdC5pbnQgbjsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBWYXIgbiAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJ2YXJcIiBbIERpZ2VzdC5pbnQgbiBdXG4gIDs7XG5lbmRcblxubW9kdWxlIFZpc2liaWxpdHkgPSBzdHJ1Y3RcbiAgdHlwZSB2aXNpYmxlID0gVmlzaWJsZVxuICB0eXBlIG9wYXF1ZSA9IE9wYXF1ZVxuXG4gIGxldCBfID0gVmlzaWJsZVxuICBsZXQgXyA9IE9wYXF1ZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENhbm9uaWNhbCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9fZGlnZXN0IDogdCAtPiBEaWdlc3QudFxuXG4gIG1vZHVsZSBFeHAxIDogc2lnXG4gICAgdHlwZSBfIHRcblxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyB0XG4gICAgdmFsIHJlY3Vyc2UgOiBpbnQgLT4gXyB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIGFwcGx5IDogJ2EgdCAtPiAnYSB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIG9wYXF1ZSA6IF8gdCAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICB2YWwgZ2V0X3BvbHlfdmFyaWFudFxuICAgICAgOiAgVmlzaWJpbGl0eS52aXNpYmxlIHRcbiAgICAgIC0+IChWaXNpYmlsaXR5Lm9wYXF1ZSB0IG9wdGlvbiBTb3J0ZWRfdGFibGUudCwgc3RyaW5nKSBSZXN1bHQudFxuICBlbmRcblxuICBtb2R1bGUgRGVmIDogc2lnXG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcblxuICBtb2R1bGUgQ3JlYXRlIDogc2lnXG4gICAgdmFsIGFubm90YXRlIDogVXVpZC50IC0+IF8gRXhwMS50IC0+IF8gRXhwMS50XG4gICAgdmFsIGJhc2V0eXBlIDogVXVpZC50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdHVwbGUgOiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHBvbHlfdmFyaWFudCA6IExvY2F0aW9uLnQgLT4gKHN0cmluZyAqIF8gRXhwMS50IG9wdGlvbikgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGFwcGx5IDogJ2EgRXhwMS50IC0+ICdhIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGRlZmluZSA6IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnQgLT4gRGVmLnRcbiAgICB2YWwgcmVjb3JkIDogKHN0cmluZyAqIF8gRXhwMS50KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhcmlhbnQgOiAoc3RyaW5nICogXyBFeHAxLnQgbGlzdCkgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBjcmVhdGUgOiBfIEV4cDEudCAtPiB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZGlnZXN0IDogQ2Fub25pY2FsID0gc3RydWN0XG4gIHR5cGUgdCA9IENhbm9uaWNhbCBvZiBEaWdlc3QudFxuXG4gIGxldCB0b19kaWdlc3QgKENhbm9uaWNhbCB4KSA9IHhcblxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIG9wYXF1ZSA9IERpZ2VzdC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBQb2x5X3ZhcmlhbnQgb2Ygb3BhcXVlIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IG9mIChzdHJpbmcgKiBvcGFxdWUpXG4gICAgICB8IE9wYXF1ZSA6IG9wYXF1ZSAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICBsZXQgdG9fZGlnZXN0ICh0eXBlIGEpICh4IDogYSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgT3BhcXVlIHggLT4geFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChfLCB4KSAtPiB4XG4gICAgICB8IFBvbHlfdmFyaWFudCB4IC0+IENELmRpZ2VzdF9sYXllciAoUG9seV92YXJpYW50IHgpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCAodHlwZSBhKSAoeCA6IGEgdCkgKHkgOiBhIHQpID1cbiAgICAgIERpZ2VzdC5jb21wYXJlICh0b19kaWdlc3QgeCkgKHRvX2RpZ2VzdCB5KSA9IDBcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB4ID0gT3BhcXVlICh0b19kaWdlc3QgeClcblxuICAgIGxldCBjcmVhdGUgeCA9XG4gICAgICBsZXQgeCA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCB4IGluXG4gICAgICBsZXQgZGVzYyA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudCBsIC0+IFBvbHlfdmFyaWFudCBsXG4gICAgICB8IEJhc2UgXyAtPiBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQW5ub3RhdGUgXyAtPlxuICAgICAgICAoKiBJdCdzIHVuc2FmZSB0byB1c2UgZGVyaXZpbmcgYmluX2lvIHdoZW4gaW5oZXJpdGluZyBmcm9tIGEgcG9seW1vcnBoaWMgdmFyaWFudFxuICAgICAgICAgICB0aGF0IGhhcyBhIGN1c3RvbSBiaW5faW8uICBJZiB3ZSBmb3JiaWQgdGhhdCwgd2UgY2FuIGhhcHBpbHkgcmVqZWN0IGhlcmVcbiAgICAgICAgICAgYW55dGhpbmcgdGhhdCdzIGFubm90YXRlZC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IEFwcGxpY2F0aW9uIF8gLT5cbiAgICAgICAgKCogQXBwbGljYXRpb24gY2FuIHJlYWxseSBiZSBhIHBvbHktdmFyaWFudCB5b3UgY2FuIGluaGVyaXQgZnJvbSEgIEJ1dCBpdCdzIGFcbiAgICAgICAgICAgcmFyZSBzaXR1YXRpb24gdGhhdCBtb3N0bHkgKG9ubHk/KSBhcmlzZXMgd2l0aCBpbmhlcml0YW5jZSBmcm9tIHJlY3Vyc2l2ZVxuICAgICAgICAgICBwb2x5bW9ycGljIHZhcmlhbnRzLCB3aGljaCB3ZSd2ZSBub3Qgc2VlbiBhbnl3aGVyZSB5ZXQuICBTbyB3ZSByZWplY3QgaXQuICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBSZWNfYXBwIF8gLT5cbiAgICAgICAgKCogWW91IGNhbiBvbmx5IGdldCB0aGUgW1JlY19hcHBdIGNvbnN0cnVjdG9yIGZvciB0eXBlLXJlZmVyZW5jZXMgd2l0aGluIHRoZVxuICAgICAgICAgICBtdXR1YWwgZ3JvdXAgYmVpbmcgZGVmaW5lZC4gUmVmZXJlbmNlcyB3aGljaFxuICAgICAgICAgICBmb2xsb3cgYWZ0ZXIgdGhlIGN1cnJlbnQgZ3JvdXAgd2lsbCBhbHdheXMgYmUgW0FwcGxpY2F0aW9uXXMuXG5cbiAgICAgICAgICAgQW5kIHNpbmNlIG9jYW1sIHJlamVjdHMgcmVmZXJlbmNlcyBpbiBgaW5oZXJpdGFuY2UnIHBvc2l0aW9uIHRvIHR5cGVzIHdpdGhpblxuICAgICAgICAgICB0aGUgY3VycmVudCBncm91cCAoc2VlIGV4YW1wbGUpIHdpdGg6XG5cbiAgICAgICAgICAgRXJyb3I6IFRoZSB0eXBlIGNvbnN0cnVjdG9yIHRcbiAgICAgICAgICAgaXMgbm90IHlldCBjb21wbGV0ZWx5IGRlZmluZWRcblxuICAgICAgICAgICB0aGVuIGl0cyBvayB0byBzYXkgdGhhdCBhIHJlYy1hcHAgaXMgc29tZXRoaW5nIHRoYXQgY2FuJ3QgYmUgaW5oZXJpdGVkIGZyb20gYW5kXG4gICAgICAgICAgIHJldHVybiBbTm9uX3BvbHlfdmFyaWFudF0uXG5cbiAgICAgICAgICAgQW5kIHVubGlrZSB0aGUgW0FwcGxpY2F0aW9uXSBjYXNlLCBpdCBzaG91bGQgbmV2ZXIgYmUgcG9zc2libGUgdG8gc2VlXG4gICAgICAgICAgIGFuIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgW2Rlc2NdID0gW1JlY19hcHBdLlxuXG4gICAgICAgICAgIEV4YW1wbGU6IFt0eXBlIHQgPSBbYGEgb2YgWyB8IHRdIF1dXG4gICAgICAgICAgIEhlcmUsIFt8IHRdIHdvdWxkIGJlIGFuIGV4YW1wbGUgb2YgaW5oZXJpdGFuY2UgZnJvbSBhIFJlY19hcHAsIHdoaWNoXG4gICAgICAgICAgIGlzIHJlamVjdGVkIGJ5IHRoZSBjb21waWxlci5cbiAgICAgICAgKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFZhciBfIHwgVHVwbGUgXyB8IFJlY29yZCBfIHwgVmFyaWFudCBfIC0+XG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBjcmVhdGUgKFZhciB4KVxuICAgIGxldCBhcHBseSBkZWYgbCA9IGNyZWF0ZSAoQXBwbGljYXRpb24gKGRlZiwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdGlkIGwgPSBjcmVhdGUgKFJlY19hcHAgKHRpZCwgbCkpXG5cbiAgICBsZXQgZ2V0X3BvbHlfdmFyaWFudCAoeCA6IFZpc2liaWxpdHkudmlzaWJsZSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgXykgLT4gRXJyb3IgZGVzY1xuICAgICAgfCBQb2x5X3ZhcmlhbnQgbCAtPiBPayAoU29ydGVkX3RhYmxlLm1hcCB+ZjooT3B0aW9uLm1hcCB+ZjooZnVuIHggLT4gT3BhcXVlIHgpKSBsKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5jcmVhdGUgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSBsID0gRXhwMS5jcmVhdGUgKEJhc2UgKHUsIGwpKVxuICAgIGxldCB0dXBsZSBsID0gRXhwMS5jcmVhdGUgKFR1cGxlIGwpXG5cbiAgICBsZXQgcG9seV92YXJpYW50IGxvYyBsID1cbiAgICAgIEV4cDEuY3JlYXRlIChQb2x5X3ZhcmlhbnQgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIEV4cDEuZXF1YWwpIGwpKVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBFeHAxLmNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IHggbCA9IEV4cDEuY3JlYXRlIChBcHBsaWNhdGlvbiAoeCwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdCBsID0gRXhwMS5jcmVhdGUgKFJlY19hcHAgKHQsIGwpKVxuICAgIGxldCBkZWZpbmUgeCA9IHhcbiAgICBsZXQgcmVjb3JkIGwgPSBFeHAxLmNyZWF0ZSAoUmVjb3JkIGwpXG4gICAgbGV0IHZhcmlhbnQgbCA9IEV4cDEuY3JlYXRlIChWYXJpYW50IGwpXG4gICAgbGV0IGNyZWF0ZSBlID0gQ2Fub25pY2FsIChFeHAxLnRvX2RpZ2VzdCBlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2Z1bGwgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgaW5jbHVkZSBDYW5vbmljYWwgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCB0b19zdHJpbmdfaHVtIDogdCAtPiBzdHJpbmdcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQwID0gRXhwIG9mIHQwIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsX3QwIHggeSA9IGNvbXBhcmVfdDAgeCB5ID0gMFxuXG4gICAgdHlwZSAnYSB0ID0gdDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB2YXIgeCA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5WYXIgeClcbiAgICBsZXQgYXBwbHkgZCB4cyA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5BcHBsaWNhdGlvbiAoZCwgeHMpKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUmVjX2FwcCAociwgeHMpKVxuXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPVxuICAgICAgRXhwXG4gICAgICAgIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudFxuICAgICAgICAgICAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gZXF1YWxfdDApIHhzKSlcbiAgICA7O1xuXG4gICAgbGV0IGdldF9wb2x5X3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgKFBvbHlfdmFyaWFudCB0YWIpIC0+IE9rIHRhYlxuICAgICAgfCBFeHAgY2MgLT4gRXJyb3IgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIGNjKVxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHQgPSB0XG5cbiAgICBsZXQgcmVjIHRvX2RpZ2VzdCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4cCBlIC0+IENELmRpZ2VzdF9sYXllciAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgICgqIEEgW0RlZi50XSBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG1heSBiZSBhcHBsaWVkICopXG4gICAgdHlwZSB0ID0gRXhwMS50MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICAoKiBBIGNhbm9uaWNhbCBzaGFwZSBbdF0gaXMgYW4gW0V4cDEudF0uICopXG4gIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fZGlnZXN0IGUgPSBFeHAxLnRvX2RpZ2VzdCBlXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLkV4cCAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IHhzID0gRXhwMS5FeHAgKEJhc2UgKHUsIHhzKSlcbiAgICBsZXQgdHVwbGUgeHMgPSBFeHAxLkV4cCAoVHVwbGUgeHMpXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBFeHAxLnBvbHlfdmFyaWFudCBsb2MgeHNcbiAgICBsZXQgdmFyIG4gPSBFeHAxLkV4cCAoVmFyIG4pXG4gICAgbGV0IHJlY3Vyc2UgciB4cyA9IEV4cDEucmVjdXJzZSByIHhzXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAxLmFwcGx5IGQgeHNcbiAgICBsZXQgZGVmaW5lIHggPSB4XG4gICAgbGV0IHJlY29yZCB4cyA9IEV4cDEuRXhwIChSZWNvcmQgeHMpXG4gICAgbGV0IHZhcmlhbnQgeHMgPSBFeHAxLkV4cCAoVmFyaWFudCB4cylcbiAgICBsZXQgY3JlYXRlIGV4cCA9IGV4cFxuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nX2h1bSB0ID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgdClcbmVuZFxuXG5tb2R1bGUgVGlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBWaWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIEdpZCA6IHNpZ1xuICAoKiB1bmlxdWUgZ3JvdXAtaWQsIHVzZWQgYXMga2V5IGZvciBUZW52IGJlbG93ICopXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgciA9IHJlZiAwXG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgbGV0IHUgPSAhciBpblxuICAgIHIgOj0gMSArIHU7XG4gICAgdVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHByZXNzaW9uID0gc3RydWN0XG4gIHR5cGUgJ3QgcG9seV9jb25zdHIgPVxuICAgIFsgYENvbnN0ciBvZiBzdHJpbmcgKiAndCBvcHRpb25cbiAgICB8IGBJbmhlcml0IG9mIExvY2F0aW9uLnQgKiAndFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCBjcmVhdGUgOiBMb2NhdGlvbi50IC0+IChUaWQudCAqIFZpZC50IGxpc3QgKiAnYSkgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGlkIDogJ2EgdCAtPiBHaWQudFxuICAgIHZhbCBsb29rdXAgOiAnYSB0IC0+IFRpZC50IC0+IFZpZC50IGxpc3QgKiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBnaWQgOiBHaWQudFxuICAgICAgOyBsb2MgOiBMb2NhdGlvbi50XG4gICAgICA7IG1lbWJlcnMgOiAoVGlkLnQgKiAoVmlkLnQgbGlzdCAqICdhKSkgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIGxvYyB0cmlwcyA9XG4gICAgICBsZXQgZ2lkID0gR2lkLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IG1lbWJlcnMgPSBMaXN0Lm1hcCB0cmlwcyB+ZjooZnVuICh4LCB2cywgdCkgLT4geCwgKHZzLCB0KSkgaW5cbiAgICAgIHsgZ2lkOyBsb2M7IG1lbWJlcnMgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgZyA9IGcuZ2lkXG5cbiAgICBsZXQgbG9va3VwIGcgdGlkID1cbiAgICAgIG1hdGNoIExpc3QuQXNzb2MuZmluZCBnLm1lbWJlcnMgfmVxdWFsOlRpZC4oID0gKSB0aWQgd2l0aFxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICBnLmxvY1xuICAgICAgICAgICFcImltcG9zc2libGU6IGxvb2t1cF9ncm91cCwgdW5ib3VuZCB0eXBlLWlkZW50aWZpZXI6ICV7VGlkfVwiXG4gICAgICAgICAgdGlkXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogdFxuICAgIHwgQmFzZSBvZiBVdWlkLnQgKiB0IGxpc3RcbiAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogdCBsaXN0KSBsaXN0XG4gICAgfCBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IFBvbHlfdmFyaWFudCBvZiAoTG9jYXRpb24udCAqIHQgcG9seV9jb25zdHIgbGlzdClcbiAgICB8IFZhciBvZiAoTG9jYXRpb24udCAqIFZpZC50KVxuICAgIHwgUmVjX2FwcCBvZiBUaWQudCAqIHQgbGlzdFxuICAgIHwgVG9wX2FwcCBvZiB0IEdyb3VwLnQgKiBUaWQudCAqIHQgbGlzdFxuICBbQEBkZXJpdmluZyB2YXJpYW50cywgc2V4cF9vZl1cblxuICB0eXBlIGdyb3VwID0gdCBHcm91cC50XG5cbiAgbGV0IGdyb3VwID0gR3JvdXAuY3JlYXRlXG5cbiAgdHlwZSBwb2x5X3ZhcmlhbnRfcm93ID0gdCBwb2x5X2NvbnN0clxuXG4gIGxldCBjb25zdHIgcyB0ID0gYENvbnN0ciAocywgdClcbiAgbGV0IGluaGVyaXRfIGxvYyB0ID0gYEluaGVyaXQgKGxvYywgdClcbiAgbGV0IHZhciBsb2MgdCA9IFZhciAobG9jLCB0KVxuICBsZXQgcG9seV92YXJpYW50IGxvYyB4cyA9IFBvbHlfdmFyaWFudCAobG9jLCB4cylcbiAgbGV0IGJhc2V0eXBlID0gYmFzZVxuXG4gICgqIFwiVlJcIiBzdGFuZHMgZm9yIFwidmFyaWFudCBvciByZWNvcmRcIiAqKVxuXG4gIGxldCBpc19jeWNsaWNfMCB+KHZpYV9WUiA6IGJvb2wpIDogZ3JvdXAgLT4gVGlkLnQgLT4gYm9vbCA9XG4gICAgZnVuIGdyb3VwIHRpZCAtPlxuICAgIGxldCBzZXQgPSByZWYgW10gaW5cbiAgICBsZXQgdmlzaXRlZCB0aWQgPSBMaXN0Lm1lbSAhc2V0IHRpZCB+ZXF1YWw6VGlkLmVxdWFsIGluXG4gICAgbGV0IGFkZCB0aWQgPSBzZXQgOj0gdGlkIDo6ICFzZXQgaW5cbiAgICBsZXQgcmVjIHRyYXYgPSBmdW5jdGlvblxuICAgICAgKCogV2UgbG9vayBmb3IgY3ljbGVzIGJ5IHRyYXZlcnNpbmcgdGhlIHN0cnVjdHVyZSBvZiB0eXBlLWV4cHJlc3Npb25zICopXG4gICAgICB8IEFubm90YXRlIChfLCB0KSAtPiB0cmF2IHRcbiAgICAgIHwgQmFzZSAoXywgdHMpIHwgVHVwbGUgdHMgfCBUb3BfYXBwIChfLCBfLCB0cykgLT4gTGlzdC5pdGVyIHRzIH5mOnRyYXZcbiAgICAgICgqIC4uaW5jbHVkaW5nIHBvbHktdmFyaWFudHMgKilcbiAgICAgIHwgUG9seV92YXJpYW50IChfLCBjcykgLT5cbiAgICAgICAgTGlzdC5pdGVyIGNzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgYENvbnN0ciAoXywgTm9uZSkgLT4gKClcbiAgICAgICAgICB8IGBDb25zdHIgKF8sIFNvbWUgdCkgLT4gdHJhdiB0XG4gICAgICAgICAgfCBgSW5oZXJpdCAoX2xvYywgdCkgLT4gdHJhdiB0KVxuICAgICAgKCogLi4gYW5kIHJlY29yZHMgJiAobm9ybWFsKSB2YXJpYW50cyAqKVxuICAgICAgfCBSZWNvcmQgeHMgLT4gaWYgdmlhX1ZSIHRoZW4gTGlzdC5pdGVyIHhzIH5mOihmdW4gKF8sIHQpIC0+IHRyYXYgdCkgZWxzZSAoKVxuICAgICAgfCBWYXJpYW50IHhzIC0+XG4gICAgICAgIGlmIHZpYV9WUiB0aGVuIExpc3QuaXRlciB4cyB+ZjooZnVuIChfLCB0cykgLT4gTGlzdC5pdGVyIH5mOnRyYXYgdHMpIGVsc2UgKClcbiAgICAgICgqIFdlIGRvbnQgZm9sbG93IHR5cGUtdmFycyAqKVxuICAgICAgfCBWYXIgXyAtPiAoKVxuICAgICAgKCogdHJhdmVyc2UgKHJlY3Vyc2l2ZSkgdHlwZS1hcHBzIHdoZW4gZmlyc3QgZW5jb3VudGVyZWQgKilcbiAgICAgIHwgUmVjX2FwcCAodGlkLCB0cykgLT5cbiAgICAgICAgaWYgdmlzaXRlZCB0aWRcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhZGQgdGlkO1xuICAgICAgICAgIHRyYXZfdGlkIHRpZCk7XG4gICAgICAgIExpc3QuaXRlciB0cyB+Zjp0cmF2XG4gICAgYW5kIHRyYXZfdGlkIHRpZCA9XG4gICAgICBsZXQgXywgYm9keSA9IEdyb3VwLmxvb2t1cCBncm91cCB0aWQgaW5cbiAgICAgIHRyYXYgYm9keVxuICAgIGluXG4gICAgdHJhdl90aWQgdGlkO1xuICAgIGxldCByZXMgPSB2aXNpdGVkIHRpZCBpblxuICAgICgqbGV0IF9zcyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAoTGlzdC5tYXAgKCFzZXQpIH5mOihzcHJpbnRmICFcIiV7VGlkfVwiKSkgaW4qKVxuICAgICgqUHJpbnRmLnByaW50ZiAhXCJpc19jeWxpYzogJXtUaWR9IC0tPiAoJXMpICViICAtLSAlcyUhXCIgdGlkIF9zcyByZXMgKEdyb3VwLmxvYyBncm91cCk7KilcbiAgICByZXNcbiAgOztcblxuICBsZXQgaXNfY3ljbGljID0gaXNfY3ljbGljXzAgfnZpYV9WUjp0cnVlXG4gIGxldCBpc19jeWNsaWNfd2l0aF9ub19pbnRlcnZlbmluZ19WUiA9IGlzX2N5Y2xpY18wIH52aWFfVlI6ZmFsc2VcbmVuZFxuXG5pbmNsdWRlIEV4cHJlc3Npb25cblxubW9kdWxlIEV2YWx1YXRpb24gKENhbm9uaWNhbCA6IENhbm9uaWNhbCkgPSBzdHJ1Y3RcbiAgKCogW1ZlbnYudF1cbiAgICAgRW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyB0eXBlLXZhcnMgKilcbiAgbW9kdWxlIFZlbnYgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBsb29rdXAgOiB0IC0+IFZpZC50IC0+IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IG9wdGlvblxuICAgIHZhbCBjcmVhdGUgOiAoVmlkLnQgKiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCkgbGlzdCAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IE1hcC5NKFZpZCkudFxuXG4gICAgbGV0IGNyZWF0ZSA9XG4gICAgICBMaXN0LmZvbGRcbiAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIFZpZCkpXG4gICAgICAgIH5mOihmdW4gdCAoaywgdikgLT4gTWFwLnNldCB+a2V5OmsgfmRhdGE6diB0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwIHQgayA9IE1hcC5maW5kIHQga1xuICBlbmRcblxuICBtb2R1bGUgQXBwbGljYW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgUmVjdXJzaW9uX2xldmVsIG9mIGludFxuICAgICAgfCBEZWZpbml0aW9uIG9mIENhbm9uaWNhbC5EZWYudFxuICBlbmRcblxuICAoKiBbVGVudi50XVxuICAgICBFbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIHR5cGUtZGVmaW5pdGlvbnMgKilcbiAgbW9kdWxlIFRlbnYgOiBzaWdcbiAgICB0eXBlIGtleSA9IEdpZC50ICogVGlkLnRcbiAgICB0eXBlIHRcblxuICAgIHZhbCBmaW5kIDogdCAtPiBrZXkgLT4gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIG9wdGlvblxuICAgIHZhbCBlbXB0eSA6IHRcbiAgICB2YWwgZXh0ZW5kIDogdCAtPiBrZXkgLT4gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gR2lkLnQgKiBUaWQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kXG5cbiAgICB0eXBlIGtleSA9IEtleS50XG4gICAgdHlwZSB0ID0gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIE1hcC5NKEtleSkudFxuXG4gICAgbGV0IGZpbmQgdCBrID0gTWFwLmZpbmQgdCBrXG4gICAgbGV0IGVtcHR5ID0gTWFwLmVtcHR5IChtb2R1bGUgS2V5KVxuICAgIGxldCBleHRlbmQgdCBrIHYgPSBNYXAuc2V0IH5rZXk6ayB+ZGF0YTp2IHRcbiAgZW5kXG5cbiAgKCogW0RlZmluaW5nLnRdXG4gICAgIE1vbmFkIGZvciBtYW5hZ2luZyB1bi1yb2xsaW5nIGRlcHRoLCBhbmQgbWFpbnRhaW5nIGEgW1RlbnYudF0gKilcbiAgbW9kdWxlIERlZmluaW5nIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICAgIHZhbCBsb29rX2VudiA6IFRlbnYua2V5IC0+IEFwcGxpY2FuZC50IG9wdGlvbiB0XG4gICAgdmFsIGV4dGVuZF9uZXdfdGlkIDogVGVudi5rZXkgLT4gQ2Fub25pY2FsLkRlZi50IHQgLT4gQXBwbGljYW5kLnQgdFxuICAgIHZhbCBleGVjIDogJ2EgdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBkZXB0aDppbnQgLT4gVGVudi50IC0+ICdhXG5cbiAgICBsZXQgcmV0dXJuIHggfmRlcHRoOl8gX3RlbnYgPSB4XG5cbiAgICBsZXQgYmluZCB0IGYgfmRlcHRoIHRlbnYgPVxuICAgICAgbGV0IHggPSB0IH5kZXB0aCB0ZW52IGluXG4gICAgICAoZiB4KSB+ZGVwdGggdGVudlxuICAgIDs7XG5cbiAgICBsZXQgbG9va19lbnYga2V5IH5kZXB0aDpfIHRlbnYgPVxuICAgICAgbGV0IHJlc3VsdCA9IFRlbnYuZmluZCB0ZW52IGtleSBpblxuICAgICAgT3B0aW9uLm1hcCB+ZjooZnVuIChgUmVjdXJzaW9uX2xldmVsIHgpIC0+IEFwcGxpY2FuZC5SZWN1cnNpb25fbGV2ZWwgeCkgcmVzdWx0XG4gICAgOztcblxuICAgIGxldCBleHRlbmRfbmV3X3RpZCBrZXkgZGVmX3QgfmRlcHRoIHRlbnYgPVxuICAgICAgQXBwbGljYW5kLkRlZmluaXRpb25cbiAgICAgICAgKGxldCB2YWx1ZSA9IGBSZWN1cnNpb25fbGV2ZWwgZGVwdGggaW5cbiAgICAgICAgIGxldCB0ZW52ID0gVGVudi5leHRlbmQgdGVudiBrZXkgdmFsdWUgaW5cbiAgICAgICAgIGRlZl90IH5kZXB0aDooZGVwdGggKyAxKSB0ZW52KVxuICAgIDs7XG5cbiAgICBsZXQgZXhlYyB0ID0gdCB+ZGVwdGg6MCBUZW52LmVtcHR5XG4gIGVuZFxuXG4gIHR5cGUgJ2EgZGVmaW5pbmcgPSAnYSBEZWZpbmluZy50XG5cbiAgbGV0ICggPj49ICkgPSBEZWZpbmluZy5iaW5kXG4gIGxldCByZXR1cm4gPSBEZWZpbmluZy5yZXR1cm5cblxuICBsZXQgc2VxdWVuY2VfZGVmaW5pbmcgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiIGRlZmluaW5nKSAtPiAnYiBsaXN0IGRlZmluaW5nID1cbiAgICBmdW4geHMgfmYgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjX3lzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiBhY2NfeXMpXG4gICAgICB8IHggOjogeHMgLT4gZiB4ID4+PSBmdW4geSAtPiBsb29wICh5IDo6IGFjY195cykgeHNcbiAgICBpblxuICAgIGxvb3AgW10geHNcbiAgOztcblxuICAoKlxuICAgICBTaGFwZSBldmFsdWF0aW9uLlxuXG4gICAgIFNoYXBlcyBhcmUgZXZhbHVhdGVkIHRvIGNhbm9uaWNhbC1zaGFwZSAoZXhwcmVzc2lvbnMpLCB3aXRoIGFkZGl0aW9uYWwgZGVmcyBjb2xsZWN0ZWRcbiAgICAgaW4gdGhlIFtkZWZpbmluZ10gbW9uYWQsIHdoaWNoIGFsc28gbWFuYWdlcyBnZW5lcmF0aW9uL21hcHBpbmcgdG8gW0Nhbm9uaWNhbC5UaWQudF1cblxuICAgICBUaGVyZSBpcyBkb3dud2FyZHMgY29udGV4dCBvZiBbZ3JvdXBdIGFuZCBbVmVudi50XVxuICAgICBUaGUgKGN1cnJlbnQpIFtncm91cF0gY2hhbmdlcyB3aGVuIHRoZSBjYXNlIGZvciBbVG9wX2FwcF0gY2FsbHMgW2V2YWxfYXBwXS5cblxuICAgICBUaGUgY3VycmVudCBbVmVudi50XSBpcyBhYmFuZG9uZWQgd2hlbiBbZXZhbF9hcHBdIGlzIGNhbGxlZCwgYW5kIHRoZW4gcmUtY3JlYXRlZCBhZnRlclxuICAgICB0aGUgZGVjaXNpb24gaGFzIGJlZW4gbWFkZSB0byBlaXRoZXIgaW5saW5lIHRoZSB0eXBlLWFwcGxpY2F0aW9uLCBvciBtYWtlIGEgcmVmZXJlbmNlXG4gICAgIHRvIGEgdHlwZS1kZWZpbml0aW9uLCB3aGljaCBpcyBjcmVhdGVkIGF0IG1vc3Qgb25jZSBmb3IgZWFjaCAoR2lkLnQgKiBUaWQudCkuXG5cbiAgICAgV2UgbWFrZSBhIHR5cGUtZGVmaW5pdGlvbiBhbHdheXMgZm9yIFJlY29yZHMgYW5kIFZhcmlhbnRzLCBhbmQgaW4gYWRkaXRpb24gZm9yIGFueVxuICAgICBvdGhlciBjeWNsaWMgdHlwZS1kZWZpbml0aW9uLlxuICAqKVxuXG4gIGxldCByZWMgZXZhbCA6IGdyb3VwIC0+IFZlbnYudCAtPiB0IC0+IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdmVudiB0IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgUmVjb3JkIGJpbmRzIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIGJpbmRzIH5mOihmdW4gKHMsIHgpIC0+XG4gICAgICAgICAgZXZhbCBncm91cCB2ZW52IHggPj49IGZ1biB5IC0+IHJldHVybiAocywgeSkpXG4gICAgICAgID4+PSBmdW4gYmluZHMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnJlY29yZCBiaW5kcylcbiAgICAgIHwgVmFyaWFudCBhbHRzIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIGFsdHMgfmY6KGZ1biAocywgeHMpIC0+XG4gICAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgeHMgPj49IGZ1biB5cyAtPiByZXR1cm4gKHMsIHlzKSlcbiAgICAgICAgPj49IGZ1biBhbHRzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS52YXJpYW50IGFsdHMpXG4gICAgICB8IFZhciAobG9jLCB2aWQpIC0+XG4gICAgICAgIChtYXRjaCBWZW52Lmxvb2t1cCB2ZW52IHZpZCB3aXRoXG4gICAgICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgICAgICAgfCBOb25lIC0+IGV2YWxfZmFpbCBsb2MgIVwiRnJlZSB0eXBlIHZhcmlhYmxlOiAnJXtWaWR9XCIgdmlkICgpKVxuICAgICAgfCBBbm5vdGF0ZSAocywgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHQgPj49IGZ1biB2IC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5hbm5vdGF0ZSBzIHYpXG4gICAgICB8IEJhc2UgKHMsIHRzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiB0cyA+Pj0gZnVuIHZzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5iYXNldHlwZSBzIHZzKVxuICAgICAgfCBUdXBsZSB0cyAtPiBldmFsX2xpc3QgZ3JvdXAgdmVudiB0cyA+Pj0gZnVuIHZzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS50dXBsZSB2cylcbiAgICAgIHwgVG9wX2FwcCAoaW5fZ3JvdXAsIHRpZCwgYXJncykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgYXJnc1xuICAgICAgICA+Pj0gZnVuIGFyZ3MgLT5cbiAgICAgICAgKCogYXJncyBldmFsdWF0ZWQgaW4gY3VycmVudCBncm91cCAqKVxuICAgICAgICBldmFsX2FwcCBpbl9ncm91cCB0aWQgYXJnc1xuICAgICAgKCogZ3JvdXAgY2hhbmdlZCBoZXJlICopXG4gICAgICB8IFJlY19hcHAgKHRpZCwgYXJncykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgYXJncyA+Pj0gZnVuIGFyZ3MgLT4gZXZhbF9hcHAgZ3JvdXAgdGlkIGFyZ3NcbiAgICAgIHwgUG9seV92YXJpYW50IChsb2MsIGNzKSAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyB+ZjooZXZhbF9wb2x5X2NvbnN0ciBncm91cCB2ZW52KSBjc1xuICAgICAgICA+Pj0gZnVuIHhzcyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUucG9seV92YXJpYW50IGxvYyAoTGlzdC5jb25jYXQgeHNzKSlcblxuICBhbmQgZXZhbF9saXN0IDogZ3JvdXAgLT4gVmVudi50IC0+IHQgbGlzdCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgbGlzdCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHZlbnYgdHMgLT4gc2VxdWVuY2VfZGVmaW5pbmcgdHMgfmY6KGV2YWwgZ3JvdXAgdmVudilcblxuICBhbmQgZXZhbF9wb2x5X2NvbnN0clxuICAgIDogIGdyb3VwIC0+IFZlbnYudCAtPiB0IHBvbHlfY29uc3RyXG4gICAgICAtPiAoc3RyaW5nICogVmlzaWJpbGl0eS5vcGFxdWUgQ2Fub25pY2FsLkV4cDEudCBvcHRpb24pIGxpc3QgZGVmaW5pbmdcbiAgICA9XG4gICAgZnVuIGdyb3VwIHZlbnYgYyAtPlxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8IGBDb25zdHIgKHMsIE5vbmUpIC0+IHJldHVybiBbIHMsIE5vbmUgXVxuICAgICAgfCBgQ29uc3RyIChzLCBTb21lIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0ID4+PSBmdW4gdiAtPiByZXR1cm4gWyBzLCBTb21lIChDYW5vbmljYWwuRXhwMS5vcGFxdWUgdikgXVxuICAgICAgfCBgSW5oZXJpdCAobG9jLCB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdFxuICAgICAgICA+Pj0gZnVuIHYgLT5cbiAgICAgICAgKG1hdGNoIENhbm9uaWNhbC5FeHAxLmdldF9wb2x5X3ZhcmlhbnQgdiB3aXRoXG4gICAgICAgICB8IE9rIHRhYiAtPiByZXR1cm4gKFNvcnRlZF90YWJsZS5leHBvc2UgdGFiKVxuICAgICAgICAgfCBFcnJvciBkZXNjIC0+XG4gICAgICAgICAgIGV2YWxfZmFpbFxuICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgIFwiVGhlIHNoYXBlIGZvciBhbiBpbmhlcml0ZWQgdHlwZSBpcyBub3QgZGVzY3JpYmVkIGFzIGEgcG9seW1vcnBoaWMtdmFyaWFudDogJXNcIlxuICAgICAgICAgICAgIGRlc2NcbiAgICAgICAgICAgICAoKSlcblxuICBhbmQgZXZhbF9kZWZpbml0aW9uIDogZ3JvdXAgLT4gVmlkLnQgbGlzdCAtPiB0IC0+IENhbm9uaWNhbC5EZWYudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIGZvcm1hbHMgYm9keSAtPlxuICAgICAgbGV0IHZlbnYgPSBWZW52LmNyZWF0ZSAoTGlzdC5tYXBpIGZvcm1hbHMgfmY6KGZ1biBpIHggLT4geCwgQ2Fub25pY2FsLkV4cDEudmFyIGkpKSBpblxuICAgICAgZXZhbCBncm91cCB2ZW52IGJvZHkgPj49IGZ1biB2IC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5kZWZpbmUgdilcblxuICBhbmQgZXZhbF9hcHAgOiBncm91cCAtPiBUaWQudCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgbGlzdCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB0aWQgYXJncyAtPlxuICAgICAgbGV0IGdpZCA9IEdyb3VwLmlkIGdyb3VwIGluXG4gICAgICBsZXQgZm9ybWFscywgYm9keSA9IEdyb3VwLmxvb2t1cCBncm91cCB0aWQgaW5cbiAgICAgIGxldCByZWNvcmRfb3Jfbm9ybWFsX3ZhcmlhbnQgPVxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBSZWNvcmQgXyB8IFZhcmlhbnQgXyAtPiB0cnVlXG4gICAgICAgIHwgVHVwbGUgXyB8IEFubm90YXRlIF8gfCBCYXNlIF8gfCBQb2x5X3ZhcmlhbnQgXyB8IFZhciBfIHwgUmVjX2FwcCBfIHwgVG9wX2FwcCBfIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgY3ljbGljID0gaXNfY3ljbGljIGdyb3VwIHRpZCBpblxuICAgICAgbGV0IGN5Y2xpY19ub19WUiA9IGlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nX1ZSIGdyb3VwIHRpZCBpblxuICAgICAgaWYgKHJlY29yZF9vcl9ub3JtYWxfdmFyaWFudCAmJiBjeWNsaWMpIHx8IGN5Y2xpY19ub19WUlxuICAgICAgdGhlblxuICAgICAgICBEZWZpbmluZy5sb29rX2VudiAoZ2lkLCB0aWQpXG4gICAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgcmVjdXJzZSAtPiByZXR1cm4gcmVjdXJzZVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRGVmaW5pbmcuZXh0ZW5kX25ld190aWQgKGdpZCwgdGlkKSAoZXZhbF9kZWZpbml0aW9uIGdyb3VwIGZvcm1hbHMgYm9keSkpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IFJlY3Vyc2lvbl9sZXZlbCByIC0+IHJldHVybiAoQ2Fub25pY2FsLkV4cDEucmVjdXJzZSByIGFyZ3MpXG4gICAgICAgIHwgRGVmaW5pdGlvbiBkZWYgLT4gcmV0dXJuIChDYW5vbmljYWwuRXhwMS5hcHBseSBkZWYgYXJncylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgdmVudiA9XG4gICAgICAgICAgbWF0Y2ggTGlzdC56aXAgZm9ybWFscyBhcmdzIHdpdGhcbiAgICAgICAgICB8IE9rIHggLT4gVmVudi5jcmVhdGUgeFxuICAgICAgICAgIHwgVW5lcXVhbF9sZW5ndGhzIC0+IGZhaWx3aXRoIFwiYXBwbHksIGluY29ycmVjdCB0eXBlIGFwcGxpY2F0aW9uIGFyaXR5XCJcbiAgICAgICAgaW5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IGJvZHkpXG4gIDs7XG5cbiAgKCogdG9wIGxldmVsIGVudHJ5IHBvaW50IGZvciBldmFsdWF0aW9uICopXG4gIGxldCBldmFsIDogdCAtPiBDYW5vbmljYWwudCA9XG4gICAgZnVuIHQgLT5cbiAgICAgIGxldCBncm91cCA9IGdyb3VwIChMb2NhdGlvbi5vZl9zdHJpbmcgXCJ0b3AtbGV2ZWxcIikgW10gaW5cbiAgICAgIGxldCB2ZW52ID0gVmVudi5jcmVhdGUgW10gaW5cbiAgICAgIGxldCB2ID0gRGVmaW5pbmcuZXhlYyAoZXZhbCBncm91cCB2ZW52IHQpIGluXG4gICAgICBDYW5vbmljYWwuQ3JlYXRlLmNyZWF0ZSB2XG4gIDs7XG5lbmRcblxubW9kdWxlIENhbm9uaWNhbCA9IHN0cnVjdFxuICBpbmNsdWRlIENhbm9uaWNhbF9mdWxsXG5cbiAgbW9kdWxlIEV4cCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFdmFsdWF0aW9uIChDYW5vbmljYWxfZnVsbClcbm1vZHVsZSBDYW5vbmljYWxfc2VsZWN0ZWQgPSBDYW5vbmljYWxfZGlnZXN0XG5tb2R1bGUgRXZhbHVhdGlvbl90b19kaWdlc3QgPSBFdmFsdWF0aW9uIChDYW5vbmljYWxfc2VsZWN0ZWQpXG5cbmxldCBldmFsX3RvX2RpZ2VzdCBleHAgPSBDYW5vbmljYWxfc2VsZWN0ZWQudG9fZGlnZXN0IChFdmFsdWF0aW9uX3RvX2RpZ2VzdC5ldmFsIGV4cClcbmxldCBldmFsX3RvX2RpZ2VzdF9zdHJpbmcgZXhwID0gRGlnZXN0LnRvX2hleCAoZXZhbF90b19kaWdlc3QgZXhwKVxuXG5tb2R1bGUgRm9yX3R5cGVyZXAgPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIE5vdF9hX3R1cGxlIG9mIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZGVjb25zdHJ1Y3RfdHVwbGVfZXhuIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgVHVwbGUgdHMgLT4gdHNcbiAgICB8IF8gLT4gcmFpc2UgKE5vdF9hX3R1cGxlIHQpXG4gIDs7XG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTk9URTpcbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmdMYWJlbHMubWxpLCBydW4gdG9vbHMvc3luY19zdGRsaWJfZG9jcyBhZnRlciBlZGl0aW5nXG4gICBpdCB0byBnZW5lcmF0ZSBzdHJpbmcubWxpLlxuXG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nLm1saSwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkgLS0gZWRpdFxuICAgc3RyaW5nTGFiZWxzLm1saSBpbnN0ZWFkLlxuICopXG5cbigqKiBTdHJpbmdzLlxuXG4gICAgQSBzdHJpbmcgW3NdIG9mIGxlbmd0aCBbbl0gaXMgYW4gaW5kZXhhYmxlIGFuZCBpbW11dGFibGUgc2VxdWVuY2VcbiAgICBvZiBbbl0gYnl0ZXMuIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMgdGhlc2UgYnl0ZXMgYXJlIHJlZmVycmVkIHRvXG4gICAgYXMgY2hhcmFjdGVycy5cblxuICAgIFRoZSBzZW1hbnRpY3Mgb2Ygc3RyaW5nIGZ1bmN0aW9ucyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICAgaW5kaWNlcyBhbmQgcG9zaXRpb25zLiBUaGVzZSBhcmUgZGVwaWN0ZWQgYW5kIGRlc2NyaWJlZFxuICAgIGFzIGZvbGxvd3MuXG5cbnt2XG5wb3NpdGlvbnMgIDAgICAxICAgMiAgIDMgICA0ICAgIG4tMSAgICBuXG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG4gIGluZGljZXMgIHwgMCB8IDEgfCAyIHwgMyB8IC4uLiB8IG4tMSB8XG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG52fVxuICAgIHt1bFxuICAgIHstIEFuIHtlIGluZGV4fSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFxcW1swXTtbbi0xXVxcXS5cbiAgICAgICBJdCByZXByZXNlbnRzIHRoZSBbaV10aCBieXRlIChjaGFyYWN0ZXIpIG9mIFtzXSB3aGljaCBjYW4gYmVcbiAgICAgICBhY2Nlc3NlZCB1c2luZyB0aGUgY29uc3RhbnQgdGltZSBzdHJpbmcgaW5kZXhpbmcgb3BlcmF0b3JcbiAgICAgICBbcy5baV1dLn1cbiAgICB7LSBBIHtlIHBvc2l0aW9ufSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICAgICAgXFxbWzBdO1tuXVxcXS4gSXQgcmVwcmVzZW50cyBlaXRoZXIgdGhlIHBvaW50IGF0IHRoZSBiZWdpbm5pbmcgb2ZcbiAgICAgICB0aGUgc3RyaW5nLCBvciB0aGUgcG9pbnQgYmV0d2VlbiB0d28gaW5kaWNlcywgb3IgdGhlIHBvaW50IGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGUgW2lddGggYnl0ZSBpbmRleCBpcyBiZXR3ZWVuIHBvc2l0aW9uXG4gICAgICAgW2ldIGFuZCBbaSsxXS59fVxuXG4gICAgVHdvIGludGVnZXJzIFtzdGFydF0gYW5kIFtsZW5dIGFyZSBzYWlkIHRvIGRlZmluZSBhIHtlIHZhbGlkXG4gICAgc3Vic3RyaW5nfSBvZiBbc10gaWYgW2xlbiA+PSAwXSBhbmQgW3N0YXJ0XSwgW3N0YXJ0K2xlbl0gYXJlXG4gICAgcG9zaXRpb25zIG9mIFtzXS5cblxuICAgIHtiIFVuaWNvZGUgdGV4dC59IFN0cmluZ3MgYmVpbmcgYXJiaXRyYXJ5IHNlcXVlbmNlcyBvZiBieXRlcywgdGhleVxuICAgIGNhbiBob2xkIGFueSBraW5kIG9mIHRleHR1YWwgZW5jb2RpbmcuIEhvd2V2ZXIgdGhlIHJlY29tbWVuZGVkXG4gICAgZW5jb2RpbmcgZm9yIHN0b3JpbmcgVW5pY29kZSB0ZXh0IGluIE9DYW1sIHN0cmluZ3MgaXMgVVRGLTguIFRoaXNcbiAgICBpcyB0aGUgZW5jb2RpbmcgdXNlZCBieSBVbmljb2RlIGVzY2FwZXMgaW4gc3RyaW5nIGxpdGVyYWxzLiBGb3JcbiAgICBleGFtcGxlIHRoZSBzdHJpbmcgW1wiXFx1ezFGNDJCfVwiXSBpcyB0aGUgVVRGLTggZW5jb2Rpbmcgb2YgdGhlXG4gICAgVW5pY29kZSBjaGFyYWN0ZXIgVSsxRjQyQi5cblxuICAgIHtiIFBhc3QgbXV0YWJpbGl0eS59IEJlZm9yZSBPQ2FtbCA0LjAyLCBzdHJpbmdzIHVzZWQgdG8gYmUgbW9kaWZpYWJsZSBpblxuICAgIHBsYWNlIGxpa2UgeyFCeXRlcy50fSBtdXRhYmxlIHNlcXVlbmNlcyBvZiBieXRlcy5cbiAgICBPQ2FtbCA0IGhhZCB2YXJpb3VzIGNvbXBpbGVyIGZsYWdzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gc3VwcG9ydCB0aGVcbiAgICB0cmFuc2l0aW9uIHBlcmlvZCBmcm9tIG11dGFibGUgdG8gaW1tdXRhYmxlIHN0cmluZ3MuXG4gICAgVGhvc2Ugb3B0aW9ucyBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSwgYW5kIHN0cmluZ3MgYXJlIG5vdyBhbHdheXNcbiAgICBpbW11dGFibGUuXG5cbiAgICBUaGUgbGFiZWxlZCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlIGNhbiBiZSB1c2VkIGFzIGRlc2NyaWJlZCBpbiB0aGVcbiAgICB7IVN0ZExhYmVsc30gbW9kdWxlLlxuKilcblxuKCoqIHsxOnN0cmluZ3MgU3RyaW5nc30gKilcblxudHlwZSB0ID0gc3RyaW5nXG4oKiogVGhlIHR5cGUgZm9yIHN0cmluZ3MuICopXG5cbnZhbCBtYWtlIDogaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4oKiogW21ha2UgbiBjXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggZWFjaCBpbmRleCBob2xkaW5nIHRoZVxuICAgIGNoYXJhY3RlciBbY10uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS4gKilcblxudmFsIGluaXQgOiBpbnQgLT4gKGludCAtPiBjaGFyKSAtPiBzdHJpbmdcbigqKiBbaW5pdCBuIGZdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBpbmRleFxuICAgIFtpXSBob2xkaW5nIHRoZSBjaGFyYWN0ZXIgW2YgaV0gKGNhbGxlZCBpbiBpbmNyZWFzaW5nIGluZGV4IG9yZGVyKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LlxuICAgIEBzaW5jZSA0LjAyLjAgKilcblxudmFsIGVtcHR5IDogc3RyaW5nXG4oKiogVGhlIGVtcHR5IHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBvZl9ieXRlcyA6IGJ5dGVzIC0+IHN0cmluZ1xuKCoqIFJldHVybiBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW4gYnl0ZVxuICAgIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIHRvX2J5dGVzIDogc3RyaW5nIC0+IGJ5dGVzXG4oKiogUmV0dXJuIGEgbmV3IGJ5dGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW5cbiAgICBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4oKiogW2xlbmd0aCBzXSBpcyB0aGUgbGVuZ3RoIChudW1iZXIgb2YgYnl0ZXMvY2hhcmFjdGVycykgb2YgW3NdLiAqKVxuXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuKCoqIFtnZXQgcyBpXSBpcyB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpbiBbc10uIFRoaXMgaXMgdGhlIHNhbWVcbiAgICBhcyB3cml0aW5nIFtzLltpXV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gbm90IGFuIGluZGV4IG9mIFtzXS4gKilcblxuKCoqIHsxOmNvbmNhdCBDb25jYXRlbmF0aW5nfVxuXG4gICAge2IgTm90ZS59IFRoZSB7IVN0ZGxpYi4oIF4gKX0gYmluYXJ5IG9wZXJhdG9yIGNvbmNhdGVuYXRlcyB0d29cbiAgICBzdHJpbmdzLiAqKVxuXG52YWwgY29uY2F0IDogc3RyaW5nIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuKCoqIFtjb25jYXQgc2VwIHNzXSBjb25jYXRlbmF0ZXMgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBbc3NdLCBpbnNlcnRpbmdcbiAgICB0aGUgc2VwYXJhdG9yIHN0cmluZyBbc2VwXSBiZXR3ZWVuIGVhY2guXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgY2F0IDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2F0IHMxIHMyXSBjb25jYXRlbmF0ZXMgczEgYW5kIHMyIChbczEgXiBzMl0pLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4oKiogW2NvbXBhcmUgczAgczFdIHNvcnRzIFtzMF0gYW5kIFtzMV0gaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLiBbY29tcGFyZV1cbiAgICBiZWhhdmVzIGxpa2UgeyFTdGRsaWIuY29tcGFyZX0gb24gc3RyaW5ncyBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50LiAqKVxuXG52YWwgc3RhcnRzX3dpdGggOlxuICBwcmVmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtzdGFydHNfd2l0aCBdW35wcmVmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBzdGFydHMgd2l0aFxuICAgIFtwcmVmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWluc19mcm9tIHMgc3RhcnQgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGFmdGVyIHBvc2l0aW9uIFtzdGFydF0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RhcnRdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbcmNvbnRhaW5zX2Zyb20gcyBzdG9wIGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBiZWZvcmUgcG9zaXRpb24gW3N0b3ArMV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RvcCA8IDBdIG9yIFtzdG9wKzFdIGlzIG5vdCBhIHZhbGlkXG4gICAgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgY29udGFpbnMgOiBzdHJpbmcgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zIHMgY10gaXMgeyFTdHJpbmcuY29udGFpbnNfZnJvbX1bIHMgMCBjXS4gKilcblxuKCoqIHsxOmV4dHJhY3QgRXh0cmFjdGluZyBzdWJzdHJpbmdzfSAqKVxuXG52YWwgc3ViIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gc3RyaW5nXG4oKiogW3N1YiBzIHBvcyBsZW5dIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbGVuXSwgY29udGFpbmluZyB0aGVcbiAgICBzdWJzdHJpbmcgb2YgW3NdIHRoYXQgc3RhcnRzIGF0IHBvc2l0aW9uIFtwb3NdIGFuZCBoYXMgbGVuZ3RoXG4gICAgW2xlbl0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbcG9zXSBhbmQgW2xlbl0gZG8gbm90IGRlc2lnbmF0ZSBhIHZhbGlkXG4gICAgc3Vic3RyaW5nIG9mIFtzXS4gKilcblxudmFsIHNwbGl0X29uX2NoYXIgOiBjaGFyIC0+IHN0cmluZyAtPiBzdHJpbmcgbGlzdFxuKCoqIFtzcGxpdF9vbl9jaGFyIHNlcCBzXSBpcyB0aGUgbGlzdCBvZiBhbGwgKHBvc3NpYmx5IGVtcHR5KVxuICAgIHN1YnN0cmluZ3Mgb2YgW3NdIHRoYXQgYXJlIGRlbGltaXRlZCBieSB0aGUgY2hhcmFjdGVyIFtzZXBdLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0LjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmFuc2Zvcm1pbmcgVHJhbnNmb3JtaW5nfSAqKVxuXG52YWwgbWFwIDogKGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXAgZiBzXSBpcyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGFwcGx5aW5nIFtmXSB0byBhbGwgdGhlXG4gICAgY2hhcmFjdGVycyBvZiBbc10gaW4gaW5jcmVhc2luZyBvcmRlci5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIuMCAqKVxuXG52YWwgZm9sZF9sZWZ0IDogKCdhIC0+IGNoYXIgLT4gJ2EpIC0+ICdhIC0+IHN0cmluZyAtPiAnYVxuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZm9sZF9yaWdodCA6IChjaGFyIC0+ICdhIC0+ICdhKSAtPiBzdHJpbmcgLT4gJ2EgLT4gJ2FcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZm9yX2FsbCA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2Zvcl9hbGwgcCBzXSBjaGVja3MgaWYgYWxsIGNoYXJhY3RlcnMgaW4gW3NdIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbcF0uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZXhpc3RzIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZXhpc3RzIHAgc10gY2hlY2tzIGlmIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgW3NdIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgW3BdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxudmFsIGVzY2FwZWQgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2VzY2FwZWQgc10gaXMgW3NdIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIHJlcHJlc2VudGVkIGJ5IGVzY2FwZVxuICAgIHNlcXVlbmNlcywgZm9sbG93aW5nIHRoZSBsZXhpY2FsIGNvbnZlbnRpb25zIG9mIE9DYW1sLlxuXG4gICAgQWxsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgVVMtQVNDSUkgcHJpbnRhYmxlIHJhbmdlIFxcWzB4MjA7MHg3RVxcXSBhcmVcbiAgICBlc2NhcGVkLCBhcyB3ZWxsIGFzIGJhY2tzbGFzaCAoMHgyRikgYW5kIGRvdWJsZS1xdW90ZSAoMHgyMikuXG5cbiAgICBUaGUgZnVuY3Rpb24geyFTY2FuZi51bmVzY2FwZWR9IGlzIGEgbGVmdCBpbnZlcnNlIG9mIFtlc2NhcGVkXSxcbiAgICBpLmUuIFtTY2FuZi51bmVzY2FwZWQgKGVzY2FwZWQgcykgPSBzXSBmb3IgYW55IHN0cmluZyBbc10gKHVubGVzc1xuICAgIFtlc2NhcGVkIHNdIGZhaWxzKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCB1cHBlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VwcGVyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgbG93ZXJjYXNlIGxldHRlcnNcbiAgICB0cmFuc2xhdGVkIHRvIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG9cbiAgICB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIHVuY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdW5jYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvIGxvd2VyY2FzZSxcbiAgICB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAuMCAqKVxuXG4oKiogezE6c2VhcmNoaW5nIFNlYXJjaGluZ30gKilcblxudmFsIGluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG5cbnZhbCBpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCBpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb219WyBzIDAgY10uICopXG5cbnZhbCBpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb21fb3B0fVsgcyAwIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXggcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbX1bIHMgKGxlbmd0aCBzIC0gMSkgY10uICopXG5cbnZhbCByaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb21fb3B0fVsgcyAobGVuZ3RoIHMgLSAxKSBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbigqKiB7MSBTdHJpbmdzIGFuZCBTZXF1ZW5jZXN9ICopXG5cbnZhbCB0b19zZXEgOiB0IC0+IGNoYXIgU2VxLnRcbigqKiBbdG9fc2VxIHNdIGlzIGEgc2VxdWVuY2UgbWFkZSBvZiB0aGUgc3RyaW5nJ3MgY2hhcmFjdGVycyBpblxuICAgIGluY3JlYXNpbmcgb3JkZXIuIEluIFtcInVuc2FmZS1zdHJpbmdcIl0gbW9kZSwgbW9kaWZpY2F0aW9ucyBvZiB0aGUgc3RyaW5nXG4gICAgZHVyaW5nIGl0ZXJhdGlvbiB3aWxsIGJlIHJlZmxlY3RlZCBpbiB0aGUgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgdG9fc2VxaSA6IHQgLT4gKGludCAqIGNoYXIpIFNlcS50XG4oKiogW3RvX3NlcWkgc10gaXMgbGlrZSB7IXRvX3NlcX0gYnV0IGFsc28gdHVwbGVzIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIG9mX3NlcSA6IGNoYXIgU2VxLnQgLT4gdFxuKCoqIFtvZl9zZXEgc10gaXMgYSBzdHJpbmcgbWFkZSBvZiB0aGUgc2VxdWVuY2UncyBjaGFyYWN0ZXJzLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxuKCoqIHsxOnV0ZiBVVEYgZGVjb2RpbmcgYW5kIHZhbGlkYXRpb25zfVxuXG4gICAgQHNpbmNlIDQuMTQgKilcblxuKCoqIHsyOnV0Zl84IFVURi04fSAqKVxuXG52YWwgZ2V0X3V0Zl84X3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzhfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi04IGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW5cbiAgICBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfOCA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfOCBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTggZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmJlIFVURi0xNkJFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmJlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2YmVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkJFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZiZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZiZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2QkUgZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmxlIFVURi0xNkxFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmxlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2bGVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkxFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZsZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZsZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2TEUgZGF0YS4gKilcblxudmFsIGJsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuKCoqIFtibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlbl0gY29waWVzIFtsZW5dIGJ5dGVzXG4gICAgZnJvbSB0aGUgc3RyaW5nIFtzcmNdLCBzdGFydGluZyBhdCBpbmRleCBbc3JjX3Bvc10sXG4gICAgdG8gYnl0ZSBzZXF1ZW5jZSBbZHN0XSwgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIG51bWJlciBbZHN0X3Bvc10uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3JjX3Bvc10gYW5kIFtsZW5dIGRvIG5vdFxuICAgIGRlc2lnbmF0ZSBhIHZhbGlkIHJhbmdlIG9mIFtzcmNdLCBvciBpZiBbZHN0X3Bvc10gYW5kIFtsZW5dXG4gICAgZG8gbm90IGRlc2lnbmF0ZSBhIHZhbGlkIHJhbmdlIG9mIFtkc3RdLiAqKVxuXG4oKiogezEgQmluYXJ5IGRlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYmluYXJ5IGRlY29kZSBpbnRlZ2VycyBmcm9tIHN0cmluZ3MuXG5cbiAgICBBbGwgZm9sbG93aW5nIGZ1bmN0aW9ucyByYWlzZSBbSW52YWxpZF9hcmd1bWVudF0gaWYgdGhlIGNoYXJhY3RlcnNcbiAgICBuZWVkZWQgYXQgaW5kZXggW2ldIHRvIGRlY29kZSB0aGUgaW50ZWdlciBhcmUgbm90IGF2YWlsYWJsZS5cblxuICAgIExpdHRsZS1lbmRpYW4gKHJlc3AuIGJpZy1lbmRpYW4pIGVuY29kaW5nIG1lYW5zIHRoYXQgbGVhc3RcbiAgICAocmVzcC4gbW9zdCkgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIHN0b3JlZCBmaXJzdC4gIEJpZy1lbmRpYW4gaXNcbiAgICBhbHNvIGtub3duIGFzIG5ldHdvcmsgYnl0ZSBvcmRlci4gIE5hdGl2ZS1lbmRpYW4gZW5jb2RpbmcgaXNcbiAgICBlaXRoZXIgbGl0dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIGRlcGVuZGluZyBvbiB7IVN5cy5iaWdfZW5kaWFufS5cblxuICAgIDMyLWJpdCBhbmQgNjQtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludDMyXSBhbmRcbiAgICBbaW50NjRdIHR5cGVzLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgZWl0aGVyIGFzIHNpZ25lZCBvclxuICAgIHVuc2lnbmVkIG51bWJlcnMuXG5cbiAgICA4LWJpdCBhbmQgMTYtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludF0gdHlwZSxcbiAgICB3aGljaCBoYXMgbW9yZSBiaXRzIHRoYW4gdGhlIGJpbmFyeSBlbmNvZGluZy4gIFRoZXNlIGV4dHJhIGJpdHNcbiAgICBhcmUgc2lnbi1leHRlbmRlZCAob3IgemVyby1leHRlbmRlZCkgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZWNvZGUgOC1iaXRcbiAgICBvciAxNi1iaXQgaW50ZWdlcnMgYW5kIHJlcHJlc2VudGVkIHRoZW0gd2l0aCBbaW50XSB2YWx1ZXMuXG4qKVxuXG52YWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQ4IGIgaV0gaXMgW2JdJ3MgdW5zaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4wLjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wLjAgKilcblxudmFsIGdldF9pbnQzMl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDMyX2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCIoKiBDb21tb246IGNvbW1vbiBkZWZpbml0aW9ucyB1c2VkIGJ5IGJpbmFyeSBwcm90b2NvbCBjb252ZXJ0ZXJzICopXG5cbm9wZW4gQmFzZVxub3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcblxudHlwZSBwb3MgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogRXJyb3JzIGFuZCBleGNlcHRpb25zICopXG5cbmV4Y2VwdGlvbiBCdWZmZXJfc2hvcnRcbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbm1vZHVsZSBSZWFkRXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5lZ19pbnQ4XG4gICAgfCBJbnRfY29kZVxuICAgIHwgSW50X292ZXJmbG93XG4gICAgfCBOYXQwX2NvZGVcbiAgICB8IE5hdDBfb3ZlcmZsb3dcbiAgICB8IEludDMyX2NvZGVcbiAgICB8IEludDY0X2NvZGVcbiAgICB8IE5hdGl2ZWludF9jb2RlXG4gICAgfCBVbml0X2NvZGVcbiAgICB8IEJvb2xfY29kZVxuICAgIHwgT3B0aW9uX2NvZGVcbiAgICB8IFN0cmluZ190b29fbG9uZ1xuICAgIHwgVmFyaWFudF90YWdcbiAgICB8IEFycmF5X3Rvb19sb25nXG4gICAgfCBMaXN0X3Rvb19sb25nIG9mXG4gICAgICAgIHsgbGVuIDogaW50XG4gICAgICAgIDsgbWF4X2xlbiA6IGludFxuICAgICAgICB9XG4gICAgfCBIYXNodGJsX3Rvb19sb25nXG4gICAgfCBTdW1fdGFnIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudCBvZiBzdHJpbmdcbiAgICB8IFBvbHlfcmVjX2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIG9mIHN0cmluZ1xuICAgIHwgU2lsbHlfdHlwZSBvZiBzdHJpbmdcbiAgICB8IEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBOZWdfaW50OCAtPiBcIk5lZ19pbnQ4XCJcbiAgICB8IEludF9jb2RlIC0+IFwiSW50X2NvZGVcIlxuICAgIHwgSW50X292ZXJmbG93IC0+IFwiSW50X292ZXJmbG93XCJcbiAgICB8IE5hdDBfY29kZSAtPiBcIk5hdDBfY29kZVwiXG4gICAgfCBOYXQwX292ZXJmbG93IC0+IFwiTmF0MF9vdmVyZmxvd1wiXG4gICAgfCBJbnQzMl9jb2RlIC0+IFwiSW50MzJfY29kZVwiXG4gICAgfCBJbnQ2NF9jb2RlIC0+IFwiSW50NjRfY29kZVwiXG4gICAgfCBOYXRpdmVpbnRfY29kZSAtPiBcIk5hdGl2ZWludF9jb2RlXCJcbiAgICB8IFVuaXRfY29kZSAtPiBcIlVuaXRfY29kZVwiXG4gICAgfCBCb29sX2NvZGUgLT4gXCJCb29sX2NvZGVcIlxuICAgIHwgT3B0aW9uX2NvZGUgLT4gXCJPcHRpb25fY29kZVwiXG4gICAgfCBTdHJpbmdfdG9vX2xvbmcgLT4gXCJTdHJpbmdfdG9vX2xvbmdcIlxuICAgIHwgVmFyaWFudF90YWcgLT4gXCJWYXJpYW50X3RhZ1wiXG4gICAgfCBBcnJheV90b29fbG9uZyAtPiBcIkFycmF5X3Rvb19sb25nXCJcbiAgICB8IExpc3RfdG9vX2xvbmcgeyBsZW47IG1heF9sZW4gfSAtPiBzcHJpbnRmIFwiTGlzdF90b29fbG9uZyAvICVkIChtYXggJWQpXCIgbGVuIG1heF9sZW5cbiAgICB8IEhhc2h0YmxfdG9vX2xvbmcgLT4gXCJIYXNodGJsX3Rvb19sb25nXCJcbiAgICB8IFN1bV90YWcgbG9jIC0+IFwiU3VtX3RhZyAvIFwiIF4gbG9jXG4gICAgfCBWYXJpYW50IGxvYyAtPiBcIlZhcmlhbnQgLyBcIiBeIGxvY1xuICAgIHwgUG9seV9yZWNfYm91bmQgbG9jIC0+IFwiUG9seV9yZWNfYm91bmQgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIGxvYyAtPiBcIlZhcmlhbnRfd3JvbmdfdHlwZSAvIFwiIF4gbG9jXG4gICAgfCBTaWxseV90eXBlIGxvYyAtPiBcIlNpbGx5X3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgRW1wdHlfdHlwZSBsb2MgLT4gXCJFbXB0eV90eXBlIC8gXCIgXiBsb2NcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmV4Y2VwdGlvbiBSZWFkX2Vycm9yIG9mIFJlYWRFcnJvci50ICogcG9zIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5leGNlcHRpb24gUG9seV9yZWNfd3JpdGUgb2Ygc3RyaW5nXG5leGNlcHRpb24gRW1wdHlfdHlwZSBvZiBzdHJpbmdcblxubGV0IHJhaXNlX3JlYWRfZXJyb3IgZXJyIHBvcyA9IHJhaXNlIChSZWFkX2Vycm9yIChlcnIsIHBvcykpXG5cbmxldCByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSBwb3MgPVxuICByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lLCBwb3MpKVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIGxvYyA9IGZhaWx3aXRoIChsb2MgXiBcIjogY29uY3VycmVudCBtb2RpZmljYXRpb25cIilcbmxldCBhcnJheV9ib3VuZF9lcnJvciAoKSA9IGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiXG5cbigqIEJ1ZmZlcnMgKilcblxudHlwZSBwb3NfcmVmID0gcG9zIHJlZlxudHlwZSBidWYgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5sZXQgY3JlYXRlX2J1ZiBuID0gQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIGNfbGF5b3V0IG5cbmxldCBidWZfbGVuIGJ1ZiA9IEFycmF5MS5kaW0gYnVmXG5sZXQgYXNzZXJ0X3BvcyBwb3MgPSBpZiBwb3MgPCAwIHRoZW4gYXJyYXlfYm91bmRfZXJyb3IgKClcbmxldCBjaGVja19wb3MgKGJ1ZiA6IGJ1ZikgcG9zID0gaWYgcG9zID49IEFycmF5MS5kaW0gYnVmIHRoZW4gcmFpc2UgQnVmZmVyX3Nob3J0XG5cbmxldCBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHBvc1xuOztcblxubGV0IGNoZWNrX25leHQgKGJ1ZiA6IGJ1ZikgbmV4dCA9IGlmIG5leHQgPiBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgZ2V0X29wdF9wb3MgfmxvYyB+dmFyID0gZnVuY3Rpb25cbiAgfCBTb21lIHBvcyAtPlxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpbl9wcm90LkNvbW1vbi4lczogJXMgPCAwXCIgbG9jIHZhcik7XG4gICAgcG9zXG4gIHwgTm9uZSAtPiAwXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gc3JjOmJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBkc3Q6YnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfc3R1YlwiXG5cbmxldCBibGl0X2J1ZiA/c3JjX3BvcyB+c3JjID9kc3RfcG9zIH5kc3QgbGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBBcnJheTEuZGltIHNyY1xuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgPiBzcmNfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gZHN0XG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyA+IGRzdF9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBzcmNcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zjogc3JjX3BvcyArIGxlbiA+IHNyY19sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGRzdFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBkc3RfcG9zICsgbGVuID4gZHN0X2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmIH5zcmNfcG9zIH5zcmMgfmRzdF9wb3MgfmRzdCB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHN0cmluZ1xuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9ieXRlc19idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9zdHJpbmdfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfc3RyaW5nX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gYnVmXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gYnVmXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxubGV0IGJsaXRfYnl0ZXNfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnl0ZXNfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBzdHJfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX3N0cmluZ1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9ieXRlc1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBibGl0X2J1Zl9ieXRlcyA/c3JjX3BvcyBidWYgP2RzdF9wb3Mgc3RyIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J1Zl9zdHJpbmdcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IGJ1Zl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zID4gc3RyX2xlblwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IGJ1Zl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zIGJ1ZiB+ZHN0X3BvcyBzdHIgfmxlblxuOztcblxubGV0IGJsaXRfYnVmX3N0cmluZyA9IGJsaXRfYnVmX2J5dGVzXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxubGV0IHJlYyBjb3B5X2h0YmxfbGlzdCBodGJsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBodGJsXG4gIHwgKGssIHYpIDo6IHJlc3QgLT5cbiAgICBDYW1sLkhhc2h0YmwuYWRkIGh0YmwgayB2O1xuICAgIGNvcHlfaHRibF9saXN0IGh0YmwgcmVzdFxuOztcblxuKCogQmlnYXJyYXlzICopXG5cbnR5cGUgdmVjMzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjNjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjID0gdmVjNjRcbnR5cGUgbWF0MzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0NjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0ID0gbWF0NjRcblxuKCogRmxvYXQgYXJyYXlzICopXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdF9hcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXQgYXJyYXlcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0YXJyYXlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuKCoqKilcblxubGV0ICggKyApID0gKCArIClcbiIsIigqIE5hdDA6IG5hdHVyYWwgbnVtYmVycyAoaW5jbHVkaW5nIHplcm8pICopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB0aGVuIGZhaWx3aXRoIFwiQmluX3Byb3QuTmF0MC5vZl9pbnQ6IG4gPCAwXCI7XG4gIG5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbiIsIigqIFdyaXRlX21sOiB3cml0aW5nIHZhbHVlcyB0byB0aGUgYmluYXJ5IHByb3RvY29sIHVzaW5nIChtb3N0bHkpIE9DYW1sLiAqKVxuXG4oKiBOb3RlOiB0aGUgY29kZSBpcyB0aGlzIGZpbGUgaXMgY2FyZWZ1bGx5IHdyaXR0ZW4gdG8gYXZvaWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuIFdoZW5cbiAgIHRvdWNoaW5nIHRoaXMgY29kZSwgYmUgc3VyZSB0byBydW4gdGhlIGJlbmNobWFya3MgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5vcGVuIENvbW1vblxuXG50eXBlICdhIHdyaXRlciA9IGJ1ZiAtPiBwb3M6cG9zIC0+ICdhIC0+IHBvc1xudHlwZSAoJ2EsICdiKSB3cml0ZXIxID0gJ2Egd3JpdGVyIC0+ICdiIHdyaXRlclxudHlwZSAoJ2EsICdiLCAnYykgd3JpdGVyMiA9ICdhIHdyaXRlciAtPiAoJ2IsICdjKSB3cml0ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyMyA9ICdhIHdyaXRlciAtPiAoJ2IsICdjLCAnZCkgd3JpdGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnVmIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0MTYgOiBidWYgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIGJzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIGJzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgY29kZV9ORUdfSU5UOCA9ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKikgJ1xceGZmJyAoKiQqKVxuXG5sZXQgY29kZV9JTlQxNiA9ICgqJCBDb2RlLmNoYXIgSU5UMTYgKikgJ1xceGZlJyAoKiQqKVxuXG5sZXQgY29kZV9JTlQzMiA9ICgqJCBDb2RlLmNoYXIgSU5UMzIgKikgJ1xceGZkJyAoKiQqKVxuXG5sZXQgY29kZV9JTlQ2NCA9ICgqJCBDb2RlLmNoYXIgSU5UNjQgKikgJ1xceGZjJyAoKiQqKVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxuXG5sZXQgdW5zYWZlX3NldDE2YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MTZcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MzJcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0NjRcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDE2bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG4gIGVsc2UgdW5zYWZlX3NldDMyXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG4gIGVsc2UgdW5zYWZlX3NldDY0XG47O1xuXG5sZXQgYmluX3dyaXRlX3VuaXQgYnVmIH5wb3MgKCkgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAnXFwwMDAnO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgYiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIChpZiBiIHRoZW4gJ1xcMDAxJyBlbHNlICdcXDAwMCcpO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuID1cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiBwb3MgbjtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX05FR19JTlQ4O1xuICB1bnNhZmVfc2V0OCBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMyBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQxNjtcbiAgdW5zYWZlX3NldDE2bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMzI7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA5IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDY0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfY2hhciBidWYgfnBvcyBjID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgYztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiBuID49IDBcbiAgdGhlblxuICAgIGlmIG4gPCAweDAwMDAwMDgwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG5cbiAgICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICAgIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAxIGxzbCAzMVxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8IC0oMSBsc2wgMzEpXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIG5hdDAgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA8IDB4MDAwMTAwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzJcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX3N0cmluZyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBuZXdfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IG5ld19wb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgKCogVE9ETzogb3B0aW1pemUgZm9yIHNtYWxsIHN0cmluZ3MgKilcbiAgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3BvczpuZXdfcG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2J5dGVzIGJ1ZiB+cG9zIHN0ciA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBieXRlcyAqKVxuICB1bnNhZmVfYmxpdF9ieXRlc19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5iaXRzX29mX2Zsb2F0IHgpO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFzc2VydF9wb3MgcG9zO1xuICAgICAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgbilcbiAgICAgIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIG4pXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbiAgZWxzZSBpZiBuID49IDB4MDAwMDgwMDBMIHx8IG4gPCAtMHgwMDAwODAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQ2NC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0aXZlaW50IGJ1ZiB+cG9zIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICAmJiAobiA+PSAoKiAweDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMVxuICAgICAgfHwgbiA8ICgqIC0weDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQubmVnIChOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMSkpXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfbmF0aXZlaW50IG4pKVxuICBlbHNlIGlmICgobm90IGFyY2hfc2l4dHlmb3VyKSAmJiBuID49IDB4ODAwMG4pIHx8IG4gPCAtMHg4MDAwblxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKE5hdGl2ZWludC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChOYXRpdmVpbnQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgciA9IGJpbl93cml0ZV9lbCBidWYgfnBvcyAhclxuXG5sZXQgYmluX3dyaXRlX2xhenkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGx2ID1cbiAgbGV0IHYgPSBMYXp5LmZvcmNlIGx2IGluXG4gIGJpbl93cml0ZV9lbCBidWYgfnBvcyB2XG47O1xuXG5sZXQgYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgZmFsc2VcbiAgfCBTb21lIHYgLT5cbiAgICBsZXQgbmV4dCA9IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIHRydWUgaW5cbiAgICBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6bmV4dCB2XG47O1xuXG5sZXQgYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgKGEsIGIpID1cbiAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYSBidWYgfnBvcyBhIGluXG4gIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOm5leHQgYlxuOztcblxubGV0IGJpbl93cml0ZV90cmlwbGUgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3MgKGEsIGIsIGMpID1cbiAgbGV0IG5leHQxID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBsZXQgbmV4dDIgPSBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0MSBiIGluXG4gIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOm5leHQyIGNcbjs7XG5cbmxldCBiaW5fd3JpdGVfbGlzdCA9XG4gIGxldCByZWMgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gZWxzX3Bvc1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9lbCBidWYgfnBvczplbHNfcG9zIGhkIGluXG4gICAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvczpuZXdfZWxzX3BvcyB0bFxuICBpblxuICBmdW4gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGxzdCAtPlxuICAgIGxldCBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKExpc3QubGVuZ3RoIGxzdCkgaW5cbiAgICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIGxlbiBpblxuICAgIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuIH5sZW5ndGggfmJsaXQgYnVmIH5wb3MgYSA9XG4gIGxldCBsZW4gPSBsZW5ndGggYSBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBibGl0IH5zcmNfcG9zOjAgYSB+ZHN0X3Bvczpwb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6RmxvYXQuQXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgICBidWZcbiAgICB+cG9zXG4gICAgYVxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdF9hcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6QXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyID1cbiAgbGV0IGVsc19wb3NfcmVmID0gcmVmIGVsc19wb3MgaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgZWxzX3Bvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFlbHNfcG9zX3JlZiAoQXJyYXkudW5zYWZlX2dldCBhciBpKVxuICBkb25lO1xuICAhZWxzX3Bvc19yZWZcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXkgKHR5cGUgYSkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3dyaXRlX2VsIDogYSB3cml0ZXIpIDogZmxvYXQgd3JpdGVyKSA9PSBiaW5fd3JpdGVfZmxvYXRcbiAgdGhlbiBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCBwbiA9IE5hdDAudW5zYWZlX29mX2ludCBuIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbiBpblxuICAgIGJpbl93cml0ZV9hcnJheV9sb29wIGJpbl93cml0ZV9lbCBidWYgfmVsc19wb3Mgfm4gYXIpXG47O1xuXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlX2tleSBiaW5fd3JpdGVfdmFsIGJ1ZiB+cG9zIGh0YmwgPVxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgZWxzX3BvcyA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9rZXkgYnVmIH5wb3M6ZWxzX3BvcyBrIGluXG4gICAgYmluX3dyaXRlX3ZhbCBidWYgfnBvczpuZXdfZWxzX3BvcyB2XG4gIGluXG4gIGxldCByZXNfcG9zID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIGVsc19wb3MgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fd3JpdGVfaGFzaHRibFwiO1xuICByZXNfcG9zXG47O1xuXG5leHRlcm5hbCBidWZfb2ZfdmVjMzIgOiB2ZWMzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfdmVjNjQgOiB2ZWM2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0MzIgOiBtYXQzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0NjQgOiBtYXQ2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWMzMiB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWM2NCB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmVjID0gYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgYnVmIH5wb3MgbSA9XG4gIGxldCBsZW4xID0gQXJyYXkyLmRpbTEgbSBpblxuICBsZXQgbGVuMiA9IEFycmF5Mi5kaW0yIG0gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMSkgaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMikgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfbWF0MzIgbSkgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDY0IG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9tYXQgPSBiaW5fd3JpdGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgYnVmIH5wb3MgcyA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHMgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV92YXJpYW50X2ludCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJsZSBidWYgcG9zIChJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IHgpIDEpIDFsKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfOGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzE2Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfMzJiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF82NGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50NjRfYml0cyBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazE2X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIChJbnQzMi5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgYXIgPVxuICBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zOnBvcyB+bjooQXJyYXkubGVuZ3RoIGFyKSBhclxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQzMiA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQ2NCA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NHVcIlxuXG5sZXQgYmluX3dyaXRlX21kNSBidWYgfnBvcyB4ID1cbiAgbGV0IHggPSBNZDVfbGliLnRvX2JpbmFyeSB4IGluXG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCB4ID0gMTYpO1xuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDY0IHggOCBpblxuICAgIHVuc2FmZV9zZXQ2NCBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDY0IGJ1ZiAocG9zICsgOCkgYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMCBpblxuICAgIGxldCBiID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDQgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCA4IGluXG4gICAgbGV0IGQgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMTIgaW5cbiAgICB1bnNhZmVfc2V0MzIgYnVmIHBvcyBhO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDQpIGI7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgOCkgYztcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyAxMikgZCk7XG4gIG5leHRcbjs7XG4iLCIoKiBSZWFkX21sOiByZWFkaW5nIHZhbHVlcyBmcm9tIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2EgcmVhZGVyID0gYnVmIC0+IHBvc19yZWY6cG9zX3JlZiAtPiAnYVxudHlwZSAoJ2EsICdiKSByZWFkZXIxID0gJ2EgcmVhZGVyIC0+ICdiIHJlYWRlclxudHlwZSAoJ2EsICdiLCAnYykgcmVhZGVyMiA9ICdhIHJlYWRlciAtPiAoJ2IsICdjKSByZWFkZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgcmVhZGVyMyA9ICdhIHJlYWRlciAtPiAoJ2IsICdjLCAnZCkgcmVhZGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnVmIC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDggOiBidWYgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcblxubGV0IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zID1cbiAgbGV0IGMgPSB1bnNhZmVfZ2V0OCBidWYgcG9zIGluXG4gIGlmIGMgPj0gMTI4IHRoZW4gYyAtIDI1NiBlbHNlIGNcbjs7XG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcyAkKilcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfaW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1pbl9pbnRcbmxldCBtYXhfaW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1pbl9pbnRcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzYWZlX2ludF9vZl9pbnQzMiBwb3MgeCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSBpZiB4ID49IG1pbl9pbnRfaW50MzIgJiYgeCA8PSBtYXhfaW50X2ludDMyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDY0IHBvcyB4ID1cbiAgaWYgeCA+PSBtaW5faW50X2ludDY0ICYmIHggPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIEludDY0LnRvX2ludCB4XG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxubGV0IHNhZmVfbmF0aXZlaW50X29mX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gX3BvcyB4IC0+IEludDY0LnRvX25hdGl2ZWludCB4XG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmUgYWx3YXlzXSBwb3MgeCAtPlxuICAgICAgaWYgeCA+PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1pbl9pbnRcbiAgICAgICYmIHggPD0gSW50NjQub2ZfbmF0aXZlaW50IE5hdGl2ZWludC5tYXhfaW50XG4gICAgICB0aGVuIEludDY0LnRvX25hdGl2ZWludCB4XG4gICAgICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9nZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDY0IDogYnVmIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MTYgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MzIgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0NjQgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2IGVsc2UgdW5zYWZlX2dldDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyIGVsc2UgdW5zYWZlX2dldDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0IGVsc2UgdW5zYWZlX2dldDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgeCA9IHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MgaW5cbiAgaWYgeCA+IDMyNzY3IHRoZW4geCAtIDY1NTM2IGVsc2UgeFxuOztcblxubGV0IGJpbl9yZWFkX3VuaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgdW5zYWZlX2dldCBidWYgcG9zID0gJ1xcMDAwJ1xuICB0aGVuIHBvc19yZWYgOj0gcG9zICsgMVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLlVuaXRfY29kZSBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9ib29sIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xcMDAwJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBmYWxzZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgdHJ1ZVxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQm9vbF9jb2RlIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDEgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0OF9zaWduZWQgYnVmIHBvcyBpblxuICBpZiBuID49IDAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OZWdfaW50OCAhcG9zX3JlZjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIENhbiBiZSBhYm92ZSBuZXh0IGxpbmUgKG5vIGVycm9ycyBwb3NzaWJsZSB3aXRoIDE2Yml0KS5cbiAgICAgVGhpcyBzaG91bGQgaW1wcm92ZSB0aGUgZ2VuZXJhdGVkIGNvZGUuICopXG4gIHVuc2FmZV9nZXQxNmxlX3NpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDMybGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX2ludF9vZl9pbnQzMiAhcG9zX3JlZiBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDY0ICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBJbnQ2NC5vZl9pbnQzMiBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgTmF0aXZlaW50Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCBwb3MgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBOYXQwLnVuc2FmZV9vZl9pbnQgKHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MpXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IG1hc2tfMzJiaXQgPSBJbnQ2NC50b19pbnQgMHhmZmZmX2ZmZmZMIGluXG4gICAgZnVuIGJ1ZiB+cG9zX3JlZiB+cG9zIC0+XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgICBsZXQgbiA9IEludDMyLnRvX2ludCAodW5zYWZlX2dldDMybGUgYnVmIHBvcykgaW5cbiAgICAgIGlmIG4gPj0gMFxuICAgICAgdGhlbiBOYXQwLnVuc2FmZV9vZl9pbnQgblxuICAgICAgZWxzZVxuICAgICAgICAoKiBFcmFzZSB0aGUgdXBwZXIgYml0cyB0aGF0IHdlcmUgc2V0IHRvIDEgZHVyaW5nIHRoZSBpbnQzMiAtPiBpbnQgY29udmVyc2lvbi4gKilcbiAgICAgICAgTmF0MC51bnNhZmVfb2ZfaW50IChuIGxhbmQgbWFza18zMmJpdCkpXG4gIGVsc2VcbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnRfaW50MzJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50MzIudG9faW50IG4pIGluXG4gICAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgICAgbilcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgaWYgbiA+PSAwTCAmJiBuIDw9IG1heF9pbnRfaW50NjRcbiAgdGhlbiAoXG4gICAgbGV0IG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKEludDY0LnRvX2ludCBuKSBpblxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBuKVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uYXQwXzE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgICBlbHNlXG4gICAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuU3RyaW5nX3Rvb19sb25nIHN0YXJ0X3BvcztcbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdHIgPSBiaW5fcmVhZF9ieXRlcyBidWYgfnBvc19yZWYgaW5cbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9jaGFyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgdW5zYWZlX2dldCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBDaGFyLmNvZGUgY2hcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3NcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2Zsb2F0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgSW50NjQuZmxvYXRfb2ZfYml0cyAodW5zYWZlX2dldDY0bGUgYnVmIHBvcylcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgSW50MzIub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludDMyX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQ2NC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50NjRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXRpdmVpbnQub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBOYXRpdmVpbnQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSB3aGVuIGFyY2hfc2l4dHlmb3VyIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdGl2ZWludF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9yZWYgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIHJlZiBlbFxuOztcblxubGV0IGJpbl9yZWFkX2xhenkgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIExhenkuZnJvbV92YWwgZWxcbjs7XG5cbmxldCBiaW5fcmVhZF9vcHRpb24gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5vbmVcbiAgfCAnXFwwMDEnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgIFNvbWUgZWxcbiAgfCBfIC0+IHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk9wdGlvbl9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBhLCBiXG47O1xuXG5sZXQgYmluX3JlYWRfdHJpcGxlIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYyA9IGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGIsIGNcbjs7XG5cbmxldCBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gPVxuICBsZXQgcmVjIGxvb3AgbiBhY2MgPVxuICAgIGlmIG4gPSAwIHRoZW4gYWNjIGVsc2UgbG9vcCAobiAtIDEpIChiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgOjogYWNjKVxuICBpblxuICBsb29wIGxlbiBbXVxuOztcblxubGV0IGJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfbGVuIHRoZW4gcmFpc2VfcmVhZF9lcnJvciAoTGlzdF90b29fbG9uZyB7IGxlbjsgbWF4X2xlbiB9KSAhcG9zX3JlZjtcbiAgbGV0IHJldl9sc3QgPSBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgTGlzdC5yZXYgcmV2X2xzdFxuOztcblxubGV0IGJpbl9yZWFkX2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW46bWF4X2ludCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbjs7XG5cbmxldCBkdW1teV9mbG9hdF9idWYgPSBjcmVhdGVfYnVmIDhcbmxldCAoKSA9IGlnbm9yZSAoV3JpdGUuYmluX3dyaXRlX2Zsb2F0IGR1bW15X2Zsb2F0X2J1ZiB+cG9zOjAgMy4xKVxuXG5sZXQgbWF4X2Zsb2F0X2FycmF5X2xlbmd0aCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuIH5jcmVhdGUgfmJsaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgcG9zO1xuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgYXJyID0gY3JlYXRlIGxlbiBpblxuICBibGl0IH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBhcnIgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBhcnJcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6RmxvYXQuQXJyYXkuY3JlYXRlXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0YXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6QXJyYXkuY3JlYXRlX2Zsb2F0XG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gICAgYnVmXG4gICAgfnBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9hcnJheSAodHlwZSBhKSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9lbCA6IGEgcmVhZGVyKSA6IGZsb2F0IHJlYWRlcikgPT0gYmluX3JlYWRfZmxvYXRcbiAgdGhlbiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9mbG9hdF9hcnJheSBidWYgfnBvc19yZWYgOiBmbG9hdCBhcnJheSkgOiBhIGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgc3RhcnRfcG9zID0gIXBvc19yZWYgaW5cbiAgICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbfHxdXG4gICAgZWxzZSAoXG4gICAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zKVxuICAgICAgZWxzZSBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbWF5YmVfZmxvYXQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgZHVtbXlfZmxvYXRfYnVmIH5wb3NfcmVmOihyZWYgMCkgaW5cbiAgICAgICAgICAgIFNvbWUgZWxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggbWF5YmVfZmxvYXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zXG4gICAgICAgIHwgU29tZSBlbCAtPlxuICAgICAgICAgIGlmIE9iai50YWcgKE9iai5yZXByIGVsKSA9IE9iai5kb3VibGVfdGFnIHx8IGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpO1xuICAgICAgbGV0IGZpcnN0ID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gZmlyc3QgaW5cbiAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyBpIGVsXG4gICAgICBkb25lO1xuICAgICAgcmVzKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9oYXNodGJsIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgbGVuIGluXG4gIGxldCByZWFkX2t2X3BhaXIgPSBiaW5fcmVhZF9wYWlyIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgaW5cbiAgbGV0IGVscyA9IGJpbl9yZWFkX25fcmV2X2xpc3QgcmVhZF9rdl9wYWlyIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgY29weV9odGJsX2xpc3QgaHRibCBlbHNcbjs7XG5cbmV4dGVybmFsIGJ1Zl9vZl92ZWMzMiA6IHZlYzMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl92ZWM2NCA6IHZlYzY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQzMiA6IG1hdDMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQ2NCA6IG1hdDY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWMzMiB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWM2NCB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX3ZlYyA9IGJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fcmVhZF9mbG9hdDMyX21hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuMSA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBsZW4yID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbjEgbGVuMiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl9tYXQzMiBtYXQpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG1hdFxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDY0IG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfbWF0ID0gYmluX3JlYWRfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9yZWFkX2JpZ3N0cmluZyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBzdHIgPSBjcmVhdGVfYnVmIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6c3RyIH5kc3RfcG9zOjAgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF92YXJpYW50X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgKCogW25dIG11c3QgY29udGFpbiBhbiBpbnRlZ2VyIGFscmVhZHkgZW5jb2RlZCwgaS5lLiBbbiA9IDIgKiBrICsgMV0uICopXG4gIGlmIEludDMyLmxvZ2FuZCBuIDFsID0gMGxcbiAgdGhlbiByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfdGFnLCBwb3MpKVxuICBlbHNlIChcbiAgICAoKiBXZSBzaGlmdCBpdCBieSBvbmUgYml0IHRvIHRoZSByaWdodCBzZSB3ZSBnZXQgYmFjayBbMiAqIGsgKyAxXSBpbiB0aGUgZW5kLiAqKVxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBJbnQzMi50b19pbnQgKEludDMyLnNoaWZ0X3JpZ2h0IG4gMSkpXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzhiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0OCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzE2Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludF8zMmJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQzMiBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludF82NGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludDY0X2JpdHMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazE2X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDMyYmUgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50NjQgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRiZSBidWYgcG9zXG47O1xuXG5bJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDA3LCAwKV1cblxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQ2NHVcIlxuXG5bJSVlbHNlXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuXG5bJSVlbmRpZl1cblxubGV0IGJpbl9yZWFkX21kNSBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMTYgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQ2NCBidWYgKHBvcyArIDgpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyA4IGIpXG4gIGVsc2UgKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDQpIGluXG4gICAgbGV0IGMgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyA4KSBpblxuICAgIGxldCBkID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgMTIpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA0IGI7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA4IGM7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAxMiBkKTtcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcylcbjs7XG4iLCJpbmNsdWRlIEJpbl9zaGFwZV9saWIuU3RkLlNoYXBlXG5cbigqIG5ldyBiYXNlIHNoYXBlcyAqKVxubGV0IGJpbl9zaGFwZV91bml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidW5pdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9ib29sID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYm9vbFwiKSBbXVxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJieXRlc1wiKSBbXVxubGV0IGJpbl9zaGFwZV9jaGFyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiY2hhclwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDMyXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDYzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjNcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXRpdmVpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0MCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5hdDBcIikgW11cbmxldCBiaW5fc2hhcGVfZGlnZXN0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZGlnZXN0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X3ZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDMyX21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0NjRfbWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm1hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJiaWdzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0YXJyYXlcIikgW11cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2YXJpYW50X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF84Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF8xNmJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMzJiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzY0Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NF9iaXRzXCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMTZfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmszMl9pbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrNjRfaW50NjRcIikgW11cblxuKCogbmV3IHNoYXBlIGNvbnN0cnVjdG9ycyAqKVxubGV0IGJpbl9zaGFwZV9yZWYgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInJlZlwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9vcHRpb24geCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm9wdGlvblwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9saXN0IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJsaXN0XCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2FycmF5IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJhcnJheVwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHggeSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImhhc2h0YmxcIikgWyB4OyB5IF1cblxuKCogc2hhcGUgYWxpYXMgKilcbmxldCBiaW5fc2hhcGVfZmxvYXRfYXJyYXkgPSBiaW5fc2hhcGVfYXJyYXkgYmluX3NoYXBlX2Zsb2F0XG5bQEBvY2FtbC5kZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSBcXFxuICAgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXVxuOztcblxuKCogc2hhcGUtY29uc3RydWN0b3IgYWxpYXNlcyAqKVxubGV0IGJpbl9zaGFwZV9sYXp5IHggPSB4XG5sZXQgYmluX3NoYXBlX3BhaXIgeCB5ID0gdHVwbGUgWyB4OyB5IF1cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHggeSB6ID0gdHVwbGUgWyB4OyB5OyB6IF1cbiIsIigqIFNpemU6IGNvbXB1dGUgc2l6ZSBvZiB2YWx1ZXMgaW4gdGhlIGJpbmFyeSBwcm90b2NvbC4gKilcblxub3BlbiBCaWdhcnJheVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcblxub3BlbiBDb21tb25cblxubW9kdWxlIE1heGltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSAxXG4gIGxldCBiaW5fc2l6ZV9ib29sID0gMVxuICBsZXQgYmluX3NpemVfY2hhciA9IDFcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1heCBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gOFxuICBsZXQgYmluX3NpemVfaW50MzIgPSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NCA9IDlcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IGJpbl9zaXplX2ludF9uYXQwXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gMVxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gMlxuICBsZXQgYmluX3NpemVfaW50XzMyYml0ID0gNFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gOFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSAyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50ID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludCA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IDhcbmVuZFxuXG5tb2R1bGUgTWluaW11bSA9IHN0cnVjdFxuICBsZXQgYmluX3NpemVfdW5pdCA9IE1heGltdW0uYmluX3NpemVfdW5pdFxuICBsZXQgYmluX3NpemVfYm9vbCA9IE1heGltdW0uYmluX3NpemVfYm9vbFxuICBsZXQgYmluX3NpemVfY2hhciA9IE1heGltdW0uYmluX3NpemVfY2hhclxuICBsZXQgYmluX3NpemVfbWQ1ID0gMTZcbiAgbGV0IGJpbl9zaXplX2ludF9uYXQwID0gMVxuICBsZXQgYmluX3NpemVfaW50X25lZ2F0aXZlID0gMlxuICBsZXQgYmluX3NpemVfaW50ID0gbWluIGJpbl9zaXplX2ludF9uYXQwIGJpbl9zaXplX2ludF9uZWdhdGl2ZVxuICBsZXQgYmluX3NpemVfZmxvYXQgPSBNYXhpbXVtLmJpbl9zaXplX2Zsb2F0XG4gIGxldCBiaW5fc2l6ZV9pbnQzMiA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfaW50NjQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX3JlZiA9IDFcbiAgbGV0IGJpbl9zaXplX2xhenlfdCA9IDFcbiAgbGV0IGJpbl9zaXplX29wdGlvbiA9IDFcbiAgbGV0IGJpbl9zaXplX3BhaXIgPSAxICsgMVxuICBsZXQgYmluX3NpemVfdHJpcGxlID0gMSArIDEgKyAxXG4gIGxldCBiaW5fc2l6ZV9sZW4gPSBiaW5fc2l6ZV9uYXQwXG4gIGxldCBiaW5fc2l6ZV9saXN0ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfaGFzaHRibCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9ieXRlcyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDMyX3ZlYyA9IGJpbl9zaXplX3ZlY1xuICBsZXQgYmluX3NpemVfZmxvYXQ2NF92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2xlbiArIGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgPSBiaW5fc2l6ZV9tYXRcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9iaWdzdHJpbmcgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0YXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IE1heGltdW0uYmluX3NpemVfdmFyaWFudF9pbnRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfOGJpdFxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfMTZiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzMyYml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF82NGJpdFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IE1heGltdW0uYmluX3NpemVfaW50NjRfYml0c1xuICBsZXQgYmluX3NpemVfbmV0d29yazE2X2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazE2X2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzJcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazY0X2ludDY0XG5lbmRcblxudHlwZSAnYSBzaXplciA9ICdhIC0+IGludFxudHlwZSAoJ2EsICdiKSBzaXplcjEgPSAnYSBzaXplciAtPiAnYiBzaXplclxudHlwZSAoJ2EsICdiLCAnYykgc2l6ZXIyID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYykgc2l6ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2l6ZXIzID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYywgJ2QpIHNpemVyMlxuXG5sZXQgYmluX3NpemVfdW5pdCAoKSA9IDFcbmxldCBiaW5fc2l6ZV9ib29sIF8gPSAxXG5cbmxldCBiaW5fc2l6ZV9pbnRfbmF0MCBuID1cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgbiA8IDB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAoKiAweDgwMDAwMDAwICopIDEgbHNsIDMxXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgbiA9XG4gIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuIDwgKCogLTB4ODAwMDAwMDAgKikgLSgxIGxzbCAzMSlcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX2NoYXIgXyA9IDFcbmxldCBiaW5fc2l6ZV9pbnQgbiA9IGlmIG4gPj0gMCB0aGVuIGJpbl9zaXplX2ludF9uYXQwIG4gZWxzZSBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgblxuXG5sZXQgYmluX3NpemVfbmF0MCBuYXQwID1cbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHgxMDAwMDAwMDAgKikgMSBsc2wgMzJcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHNpemVfbGVuID0gYmluX3NpemVfbmF0MCBwbGVuIGluXG4gIHNpemVfbGVuICsgbGVuXG47O1xuXG5sZXQgYmluX3NpemVfc3RyaW5nIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoU3RyaW5nLmxlbmd0aCBzdHIpXG5sZXQgYmluX3NpemVfYnl0ZXMgc3RyID0gYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIChCeXRlcy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX21kNSBfID0gMTZcblxubGV0IGJpbl9zaXplX2Zsb2F0IGYgPVxuICAoKiBJZiB3ZSBqdXN0IGlnbm9yZSB0aGUgYXJndW1lbnQgdGhlIGNvbXBpbGVyIHdpbGwgc3RpbGwgcmVxdWlyZSBpdCB0byBleGlzdCBhbmQgYmVcbiAgICAgYm94ZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBmb3IgaW5zdGFuY2Ugd2UgY2FsbCB0aGlzIGZvciBhIGZpZWxkIG9mIGEgZmxvYXQgcmVjb3JkLFxuICAgICB0aGUgY29tcGlsZXIgd2lsbCBhbGxvY2F0ZSB0aGUgZmxvYXQgZm9yIG5vdGhpbmcuXG5cbiAgICAgV2l0aCB0aGlzIGxpbmUgdGhlIGNvbXBpbGVyIHJlYWxseSBpZ25vcmVzIHRoZSBmbG9hdC4gKilcbiAgaWdub3JlICh0cnVuY2F0ZSBmKTtcbiAgOFxuOztcblxubGV0IGJpbl9zaXplX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbCB0aGVuIDUgZWxzZSBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl9zaXplX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50IChJbnQ2NC50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50MzIgKEludDY0LnRvX2ludDMyIG4pXG47O1xuXG5sZXQgYmluX3NpemVfbmF0aXZlaW50ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQ2NCAoSW50NjQub2ZfbmF0aXZlaW50IG4pXG4gIGVsc2UgZnVuIG4gLT4gYmluX3NpemVfaW50MzIgKE5hdGl2ZWludC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX3JlZiBiaW5fc2l6ZV9lbCByID0gYmluX3NpemVfZWwgIXJcbmxldCBiaW5fc2l6ZV9sYXp5X3QgYmluX3NpemVfZWwgbHYgPSBiaW5fc2l6ZV9lbCAoTGF6eS5mb3JjZSBsdilcbmxldCBiaW5fc2l6ZV9sYXp5ID0gYmluX3NpemVfbGF6eV90XG5cbmxldCBiaW5fc2l6ZV9vcHRpb24gYmluX3NpemVfZWwgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMVxuICB8IFNvbWUgdiAtPiAxICsgYmluX3NpemVfZWwgdlxuOztcblxubGV0IGJpbl9zaXplX3BhaXIgYmluX3NpemVfYSBiaW5fc2l6ZV9iIChhLCBiKSA9IGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYlxuXG5sZXQgYmluX3NpemVfdHJpcGxlIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIChhLCBiLCBjKSA9XG4gIGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYiArIGJpbl9zaXplX2MgY1xuOztcblxubGV0IGJpbl9zaXplX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYyB+bGVuX2FjYyBsc3QgPVxuICAgIG1hdGNoIGxzdCB3aXRoXG4gICAgfCBbXSAtPiBzaXplX2FjYyArIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW5fYWNjKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzooc2l6ZV9hY2MgKyBiaW5fc2l6ZV9lbCBoZCkgfmxlbl9hY2M6KGxlbl9hY2MgKyAxKSB0bFxuICBpblxuICBmdW4gYmluX3NpemVfZWwgbHN0IC0+IGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzowIH5sZW5fYWNjOjAgbHN0XG47O1xuXG5sZXQgYmluX3NpemVfbGVuIGxlbiA9XG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBiaW5fc2l6ZV9uYXQwIHBsZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdGFycmF5IGFyID1cbiAgbGV0IGxlbiA9IEZsb2F0LkFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRfYXJyYXkgYXIgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAoOCAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4gPVxuICBsZXQgdG90YWxfbGVuX3JlZiA9IHJlZiB0b3RhbF9sZW4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgbGV0IGVsID0gQXJyYXkudW5zYWZlX2dldCBhciBpIGluXG4gICAgdG90YWxfbGVuX3JlZiA6PSAhdG90YWxfbGVuX3JlZiArIGJpbl9zaXplX2VsIGVsXG4gIGRvbmU7XG4gICF0b3RhbF9sZW5fcmVmXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXkgKHR5cGUgYSkgYmluX3NpemVfZWwgYXIgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fc2l6ZV9lbCA6IGEgc2l6ZXIpIDogZmxvYXQgc2l6ZXIpID09IGJpbl9zaXplX2Zsb2F0XG4gIHRoZW4gYmluX3NpemVfZmxvYXRfYXJyYXkgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCB0b3RhbF9sZW4gPSBiaW5fc2l6ZV9sZW4gbiBpblxuICAgIGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbiB+bilcbjs7XG5cbmxldCBiaW5fc2l6ZV9oYXNodGJsIGJpbl9zaXplX2tleSBiaW5fc2l6ZV92YWwgaHRibCA9XG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgdG90YWxfbGVuID1cbiAgICBpbmNyIGNudF9yZWY7XG4gICAgdG90YWxfbGVuICsgYmluX3NpemVfa2V5IGsgKyBiaW5fc2l6ZV92YWwgdlxuICBpblxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgdG90YWxfbGVuID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIChiaW5fc2l6ZV9sZW4gbGVuKSBpblxuICBpZiAhY250X3JlZiA8PiBsZW4gdGhlbiByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBcImJpbl9zaXplX2hhc2h0YmxcIjtcbiAgdG90YWxfbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZ2VuX3ZlYyB2ZWMgbXVsdGlwbGllciA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHZlYyBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKG11bHRpcGxpZXIgKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgdmVjID0gYmluX3NpemVfZ2VuX3ZlYyB2ZWMgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDhcbmxldCBiaW5fc2l6ZV92ZWMgPSBiaW5fc2l6ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3NpemVfZ2VuX21hdCBtYXQgbXVsdGlwbGllciA9XG4gIGxldCBkaW0xID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBkaW0yID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBzaXplID0gZGltMSAqIGRpbTIgaW5cbiAgYmluX3NpemVfbGVuIGRpbTEgKyBiaW5fc2l6ZV9sZW4gZGltMiArIChtdWx0aXBsaWVyICogc2l6ZSlcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdDMyX21hdCBtYXQgPSBiaW5fc2l6ZV9nZW5fbWF0IG1hdCA0XG5sZXQgYmluX3NpemVfZmxvYXQ2NF9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgOFxubGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NpemVfYmlnc3RyaW5nIGJ1ZiA9IGJpbl9zaXplX2dlbl92ZWMgYnVmIDFcbmxldCBiaW5fc2l6ZV92YXJpYW50X2ludCBfID0gNFxubGV0IGJpbl9zaXplX2ludF84Yml0IF8gPSAxXG5sZXQgYmluX3NpemVfaW50XzE2Yml0IF8gPSAyXG5sZXQgYmluX3NpemVfaW50XzMyYml0IF8gPSA0XG5sZXQgYmluX3NpemVfaW50XzY0Yml0IF8gPSA4XG5sZXQgYmluX3NpemVfaW50NjRfYml0cyBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgXyA9IDJcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50IF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyIF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazY0X2ludCBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCBfID0gOFxuXG5sZXQgYmluX3NpemVfYXJyYXlfbm9fbGVuZ3RoIGJpbl9zaXplX2VsIGFyID1cbiAgYmluX3NpemVfYXJyYXlfbG9vcCBiaW5fc2l6ZV9lbCBhciB+dG90YWxfbGVuOjAgfm46KEFycmF5Lmxlbmd0aCBhcilcbjs7XG4iLCIoKiBUcF9jbGFzczogc2l6ZXJzLCB3cml0ZXJzLCBhbmQgcmVhZGVycyBpbiByZWNvcmRzICopXG5cbnR5cGUgJ2Egd3JpdGVyID1cbiAgeyBzaXplIDogJ2EgU2l6ZS5zaXplclxuICA7IHdyaXRlIDogJ2EgV3JpdGUud3JpdGVyXG4gIH1cblxudHlwZSAnYSByZWFkZXIgPVxuICB7IHJlYWQgOiAnYSBSZWFkLnJlYWRlclxuICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gIH1cblxudHlwZSAnYSB0ID1cbiAgeyBzaGFwZSA6IFNoYXBlLnRcbiAgOyB3cml0ZXIgOiAnYSB3cml0ZXJcbiAgOyByZWFkZXIgOiAnYSByZWFkZXJcbiAgfVxuXG50eXBlICdhIHdyaXRlcjAgPSAnYSB3cml0ZXJcbnR5cGUgJ2EgcmVhZGVyMCA9ICdhIHJlYWRlclxudHlwZSAnYSB0MCA9ICdhIHRcblxubW9kdWxlIFMxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAnYiB3cml0ZXIwXG4gIHR5cGUgKCdhLCAnYikgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAnYiByZWFkZXIwXG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhIHQwIC0+ICdiIHQwXG5lbmRcblxubW9kdWxlIFMyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gKCdiLCAnYykgUzEud3JpdGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gKCdiLCAnYykgUzEucmVhZGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSB0MCAtPiAoJ2IsICdjKSBTMS50XG5lbmRcblxubW9kdWxlIFMzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICgnYiwgJ2MsICdkKSBTMi53cml0ZXJcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gKCdiLCAnYywgJ2QpIFMyLnJlYWRlclxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICdhIHQwIC0+ICgnYiwgJ2MsICdkKSBTMi50XG5lbmRcblxubGV0IHZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lIF9idWYgfnBvc19yZWYgX3ggPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIG5hbWUgIXBvc19yZWZcbjs7XG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcy5TdHIgKilcbigqJCBta19iYXNlIFwidW5pdFwiICopXG5sZXQgYmluX3dyaXRlcl91bml0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV91bml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV91bml0IH1cbmxldCBiaW5fcmVhZGVyX3VuaXQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3VuaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInVuaXRcIiB9XG5sZXQgYmluX3NoYXBlX3VuaXQgPSBTaGFwZS5iaW5fc2hhcGVfdW5pdFxuXG5sZXQgYmluX3VuaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3VuaXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfdW5pdDsgcmVhZGVyID0gYmluX3JlYWRlcl91bml0IH1cbjs7XG5cbigqJCBta19iYXNlIFwiYm9vbFwiICopXG5sZXQgYmluX3dyaXRlcl9ib29sID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9ib29sOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9ib29sIH1cbmxldCBiaW5fcmVhZGVyX2Jvb2wgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Jvb2w7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJvb2xcIiB9XG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBTaGFwZS5iaW5fc2hhcGVfYm9vbFxuXG5sZXQgYmluX2Jvb2wgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Jvb2w7IHdyaXRlciA9IGJpbl93cml0ZXJfYm9vbDsgcmVhZGVyID0gYmluX3JlYWRlcl9ib29sIH1cbjs7XG5cbigqJCBta19iYXNlIFwic3RyaW5nXCIgKilcbmxldCBiaW5fd3JpdGVyX3N0cmluZyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfc3RyaW5nOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9zdHJpbmcgfVxuXG5sZXQgYmluX3JlYWRlcl9zdHJpbmcgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3N0cmluZzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwic3RyaW5nXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBTaGFwZS5iaW5fc2hhcGVfc3RyaW5nXG5cbmxldCBiaW5fc3RyaW5nID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9zdHJpbmc7IHdyaXRlciA9IGJpbl93cml0ZXJfc3RyaW5nOyByZWFkZXIgPSBiaW5fcmVhZGVyX3N0cmluZyB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImJ5dGVzXCIgKilcbmxldCBiaW5fd3JpdGVyX2J5dGVzID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9ieXRlczsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYnl0ZXMgfVxuXG5sZXQgYmluX3JlYWRlcl9ieXRlcyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYnl0ZXM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJ5dGVzXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9ieXRlcyA9IFNoYXBlLmJpbl9zaGFwZV9ieXRlc1xuXG5sZXQgYmluX2J5dGVzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9ieXRlczsgd3JpdGVyID0gYmluX3dyaXRlcl9ieXRlczsgcmVhZGVyID0gYmluX3JlYWRlcl9ieXRlcyB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImNoYXJcIiAqKVxubGV0IGJpbl93cml0ZXJfY2hhciA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfY2hhcjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfY2hhciB9XG5sZXQgYmluX3JlYWRlcl9jaGFyID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9jaGFyOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJjaGFyXCIgfVxubGV0IGJpbl9zaGFwZV9jaGFyID0gU2hhcGUuYmluX3NoYXBlX2NoYXJcblxubGV0IGJpbl9jaGFyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9jaGFyOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2NoYXI7IHJlYWRlciA9IGJpbl9yZWFkZXJfY2hhciB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50IH1cbmxldCBiaW5fcmVhZGVyX2ludCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRcIiB9XG5sZXQgYmluX3NoYXBlX2ludCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRcbmxldCBiaW5faW50ID0geyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50OyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludCB9XG5cbigqJCBta19iYXNlIFwiZmxvYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdCB9XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0XG5cbmxldCBiaW5fZmxvYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0OyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0IH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50MzJcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50MzIgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDMyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQzMiB9XG5cbmxldCBiaW5fcmVhZGVyX2ludDMyID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQzMjsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDMyID0gU2hhcGUuYmluX3NoYXBlX2ludDMyXG5cbmxldCBiaW5faW50MzIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDMyOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDMyOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDMyIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50NjRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50NjQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDY0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NCB9XG5cbmxldCBiaW5fcmVhZGVyX2ludDY0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ2NDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDY0ID0gU2hhcGUuYmluX3NoYXBlX2ludDY0XG5cbmxldCBiaW5faW50NjQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDY0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDY0OyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDY0IH1cbjs7XG5cbigqJCBta19iYXNlIFwibmF0aXZlaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25hdGl2ZWludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmF0aXZlaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmF0aXZlaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uYXRpdmVpbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gU2hhcGUuYmluX3NoYXBlX25hdGl2ZWludFxuXG5sZXQgYmluX25hdGl2ZWludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmF0aXZlaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uYXRpdmVpbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25hdGl2ZWludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5hdDBcIiAqKVxubGV0IGJpbl93cml0ZXJfbmF0MCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmF0MDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmF0MCB9XG5sZXQgYmluX3JlYWRlcl9uYXQwID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9uYXQwOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuYXQwXCIgfVxubGV0IGJpbl9zaGFwZV9uYXQwID0gU2hhcGUuYmluX3NoYXBlX25hdDBcblxubGV0IGJpbl9uYXQwID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uYXQwOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25hdDA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmF0MCB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJyZWZcIiAqKVxubGV0IGJpbl93cml0ZXJfcmVmIGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9yZWYgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3JlZiBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9yZWYgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJyZWZcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3JlZiB4MSA9IFNoYXBlLmJpbl9zaGFwZV9yZWYgeDFcblxubGV0IGJpbl9yZWYgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9yZWYgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9yZWYgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfcmVmIGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwibGF6eVwiICopXG5sZXQgYmluX3dyaXRlcl9sYXp5IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9sYXp5IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9sYXp5IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbGF6eSBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9sYXp5IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbGF6eSB4MSA9IFNoYXBlLmJpbl9zaGFwZV9sYXp5IHgxXG5cbmxldCBiaW5fbGF6eSBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2xhenkgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9sYXp5IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2xhenkgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJvcHRpb25cIiAqKVxubGV0IGJpbl93cml0ZXJfb3B0aW9uIGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9vcHRpb24gYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX29wdGlvbiBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9vcHRpb24gYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJvcHRpb25cIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX29wdGlvbiB4MSA9IFNoYXBlLmJpbl9zaGFwZV9vcHRpb24geDFcblxubGV0IGJpbl9vcHRpb24gYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9vcHRpb24gYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9vcHRpb24gYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfb3B0aW9uIGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UyIFwicGFpclwiICopXG5sZXQgYmluX3dyaXRlcl9wYWlyIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfcGFpciBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV9wYWlyIGJpbl93cml0ZXJfZWwxLndyaXRlIGJpbl93cml0ZXJfZWwyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3BhaXIgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfcGFpciBiaW5fcmVhZGVyX2VsMS5yZWFkIGJpbl9yZWFkZXJfZWwyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInBhaXJcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3BhaXIgeDEgeDIgPSBTaGFwZS5iaW5fc2hhcGVfcGFpciB4MSB4MlxuXG5sZXQgYmluX3BhaXIgYmluX2VsMSBiaW5fZWwyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9wYWlyIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfcGFpciBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfcGFpciBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTMgXCJ0cmlwbGVcIiAqKVxubGV0IGJpbl93cml0ZXJfdHJpcGxlIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyIGJpbl93cml0ZXJfZWwzID1cbiAgeyBzaXplID1cbiAgICAgIChmdW4gdiAtPlxuICAgICAgICAgU2l6ZS5iaW5fc2l6ZV90cmlwbGUgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIGJpbl93cml0ZXJfZWwzLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV90cmlwbGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDEud3JpdGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDIud3JpdGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDMud3JpdGVcbiAgICAgICAgICAgYnVmXG4gICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfdHJpcGxlIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyIGJpbl9yZWFkZXJfZWwzID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX3RyaXBsZVxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMS5yZWFkXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwyLnJlYWRcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDMucmVhZFxuICAgICAgICAgICBidWZcbiAgICAgICAgICAgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidHJpcGxlXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV90cmlwbGUgeDEgeDIgeDMgPSBTaGFwZS5iaW5fc2hhcGVfdHJpcGxlIHgxIHgyIHgzXG5cbmxldCBiaW5fdHJpcGxlIGJpbl9lbDEgYmluX2VsMiBiaW5fZWwzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV90cmlwbGUgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlIGJpbl9lbDMuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RyaXBsZSBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlciBiaW5fZWwzLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdHJpcGxlIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyIGJpbl9lbDMucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImxpc3RcIiAqKVxubGV0IGJpbl93cml0ZXJfbGlzdCBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfbGlzdCBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfbGlzdCBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2xpc3QgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfbGlzdCBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImxpc3RcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2xpc3QgeDEgPSBTaGFwZS5iaW5fc2hhcGVfbGlzdCB4MVxuXG5sZXQgYmluX2xpc3QgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9saXN0IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbGlzdCBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9saXN0IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwiYXJyYXlcIiAqKVxubGV0IGJpbl93cml0ZXJfYXJyYXkgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2FycmF5IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9hcnJheSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2FycmF5IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2FycmF5IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYXJyYXlcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2FycmF5IHgxID0gU2hhcGUuYmluX3NoYXBlX2FycmF5IHgxXG5cbmxldCBiaW5fYXJyYXkgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9hcnJheSBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2FycmF5IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2FycmF5IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UyIFwiaGFzaHRibFwiICopXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfaGFzaHRibCBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV9oYXNodGJsIGJpbl93cml0ZXJfZWwxLndyaXRlIGJpbl93cml0ZXJfZWwyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2hhc2h0YmwgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfaGFzaHRibCBiaW5fcmVhZGVyX2VsMS5yZWFkIGJpbl9yZWFkZXJfZWwyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgeDEgeDIgPSBTaGFwZS5iaW5fc2hhcGVfaGFzaHRibCB4MSB4MlxuXG5sZXQgYmluX2hhc2h0YmwgYmluX2VsMSBiaW5fZWwyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9oYXNodGJsIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaGFzaHRibCBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaGFzaHRibCBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0MzJfdmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDMyX3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQzMl92ZWNcblxubGV0IGJpbl9mbG9hdDMyX3ZlYyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQzMl92ZWNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDMyX3ZlY1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0NjRfdmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDY0X3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9mbG9hdDY0X3ZlYyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ2NF92ZWNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDY0X3ZlY1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcInZlY1wiICopXG5sZXQgYmluX3dyaXRlcl92ZWMgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdmVjIH1cbmxldCBiaW5fcmVhZGVyX3ZlYyA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ2ZWNcIiB9XG5sZXQgYmluX3NoYXBlX3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fdmVjID0geyBzaGFwZSA9IGJpbl9zaGFwZV92ZWM7IHdyaXRlciA9IGJpbl93cml0ZXJfdmVjOyByZWFkZXIgPSBiaW5fcmVhZGVyX3ZlYyB9XG5cbigqJCBta19iYXNlIFwiZmxvYXQzMl9tYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0MzJfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX21hdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX21hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfbWF0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX21hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxuXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDMyX21hdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQ2NF9tYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0NjRfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X21hdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X21hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfbWF0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDY0X21hdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX21hdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9tYXQgfVxubGV0IGJpbl9yZWFkZXJfbWF0ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiIH1cbmxldCBiaW5fc2hhcGVfbWF0ID0gU2hhcGUuYmluX3NoYXBlX21hdFxubGV0IGJpbl9tYXQgPSB7IHNoYXBlID0gYmluX3NoYXBlX21hdDsgd3JpdGVyID0gYmluX3dyaXRlcl9tYXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfbWF0IH1cblxuKCokIG1rX2Jhc2UgXCJiaWdzdHJpbmdcIiAqKVxubGV0IGJpbl93cml0ZXJfYmlnc3RyaW5nID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9iaWdzdHJpbmc7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2JpZ3N0cmluZyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9iaWdzdHJpbmcgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYmlnc3RyaW5nXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBTaGFwZS5iaW5fc2hhcGVfYmlnc3RyaW5nXG5cbmxldCBiaW5fYmlnc3RyaW5nID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9iaWdzdHJpbmdcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2JpZ3N0cmluZ1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfYmlnc3RyaW5nXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXRhcnJheVwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdGFycmF5ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdGFycmF5OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdGFycmF5IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0YXJyYXkgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0YXJyYXk7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0YXJyYXlcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXRhcnJheVxuXG5sZXQgYmluX2Zsb2F0YXJyYXkgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0YXJyYXlcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0YXJyYXlcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0YXJyYXlcbiAgfVxuOztcblxuKCokKilcblxudHlwZSBmbG9hdF9hcnJheSA9IGZsb2F0IGFycmF5XG5cbmluY2x1ZGUgc3RydWN0XG4gICgqJCBta19iYXNlIFwiZmxvYXRfYXJyYXlcIiAqKVxuICBsZXQgYmluX3dyaXRlcl9mbG9hdF9hcnJheSA9XG4gICAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdF9hcnJheTsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRfYXJyYXkgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX2Zsb2F0X2FycmF5ID1cbiAgICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0X2FycmF5OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdF9hcnJheVwiIH1cbiAgOztcblxuICBsZXQgYmluX3NoYXBlX2Zsb2F0X2FycmF5ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0X2FycmF5XG5cbiAgbGV0IGJpbl9mbG9hdF9hcnJheSA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdF9hcnJheVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdF9hcnJheVxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdF9hcnJheVxuICAgIH1cbiAgOztcbiAgKCokKilcbmVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuKCokIG1rX2Jhc2UgXCJ2YXJpYW50X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl92YXJpYW50X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdmFyaWFudF9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3ZhcmlhbnRfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3ZhcmlhbnRfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF92YXJpYW50X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidmFyaWFudF9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3ZhcmlhbnRfaW50ID0gU2hhcGUuYmluX3NoYXBlX3ZhcmlhbnRfaW50XG5cbmxldCBiaW5fdmFyaWFudF9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3ZhcmlhbnRfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl92YXJpYW50X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdmFyaWFudF9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfOGJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfOGJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzhiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF84Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF84Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfOGJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzhiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF84Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF84Yml0XG5cbmxldCBiaW5faW50XzhiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF84Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfOGJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzhiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfMTZiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzE2Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfMTZiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF8xNmJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfMTZiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF8xNmJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzE2Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfMTZiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzE2Yml0XG5cbmxldCBiaW5faW50XzE2Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfMTZiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF8xNmJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzE2Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzMyYml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF8zMmJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzMyYml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfMzJiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzMyYml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfMzJiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF8zMmJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzMyYml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF8zMmJpdFxuXG5sZXQgYmluX2ludF8zMmJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzMyYml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfMzJiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF8zMmJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF82NGJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfNjRiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF82NGJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF82NGJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzY0Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfNjRiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF82NGJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfNjRiaXRcblxubGV0IGJpbl9pbnRfNjRiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF82NGJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzY0Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfNjRiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQ2NF9iaXRzXCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDY0X2JpdHMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDY0X2JpdHM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDY0X2JpdHMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50NjRfYml0cyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50NjRfYml0czsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRfYml0c1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50NjRfYml0cyA9IFNoYXBlLmJpbl9zaGFwZV9pbnQ2NF9iaXRzXG5cbmxldCBiaW5faW50NjRfYml0cyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50NjRfYml0c1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50NjRfYml0c1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50NjRfYml0c1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmsxNl9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazE2X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazE2X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazE2X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMTZfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMTZfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmsxNl9pbnRcblxubGV0IGJpbl9uZXR3b3JrMTZfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazMyX2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMzJfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmszMl9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmszMl9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazMyX2ludFxuXG5sZXQgYmluX25ldHdvcmszMl9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmszMl9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMzJfaW50MzJcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmszMl9pbnQzMlxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmszMl9pbnQzMlwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMlxuXG5sZXQgYmluX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50MzJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQzMlxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcms2NF9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazY0X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazY0X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazY0X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrNjRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrNjRfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcms2NF9pbnRcblxubGV0IGJpbl9uZXR3b3JrNjRfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazY0X2ludDY0XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazY0X2ludDY0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrNjRfaW50NjRcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrNjRfaW50NjRcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjRcblxubGV0IGJpbl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazY0X2ludDY0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50NjRcbiAgfVxuOztcblxuKCokKilcbmxldCBiaW5fd3JpdGVyX2FycmF5X25vX2xlbmd0aCBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IChTaXplLmJpbl9zaXplX2FycmF5X25vX2xlbmd0aCBbQHdhcm5pbmcgXCItM1wiXSkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAoV3JpdGUuYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCBbQHdhcm5pbmcgXCItM1wiXSkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubGV0IGNudl93cml0ZXIgY252IHRwX2NsYXNzID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IHRwX2NsYXNzLnNpemUgKGNudiB2KSlcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiB0cF9jbGFzcy53cml0ZSBidWYgfnBvcyAoY252IHYpKVxuICB9XG47O1xuXG5sZXQgY252X3JlYWRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBjbnYgKHRwX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmKSlcbiAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiB2dGFnIC0+IGNudiAodHBfY2xhc3MudnRhZ19yZWFkIGJ1ZiB+cG9zX3JlZiB2dGFnKSlcbiAgfVxuOztcblxubGV0IGNudiBmb3Jfc2hhcGUgZm9yX3dyaXRlciBmb3JfcmVhZGVyIHRwX2NsYXNzID1cbiAgeyBzaGFwZSA9IGZvcl9zaGFwZSB0cF9jbGFzcy5zaGFwZVxuICA7IHdyaXRlciA9IGNudl93cml0ZXIgZm9yX3dyaXRlciB0cF9jbGFzcy53cml0ZXJcbiAgOyByZWFkZXIgPSBjbnZfcmVhZGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MucmVhZGVyXG4gIH1cbjs7XG4iLCIoKiBCaW5hYmxlOiBzaWduYXR1cmVzIGRlZmluaW5nIGdlbmVyYXRlZCBmdW5jdGlvbnMgZm9yIHRoZSBiaW5hcnkgcHJvdG9jb2wuXG4gICBbUywgUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHNhdGlzZmllZCBieSB0aGUgZ2VuZXJhdGVkIGNvZGUgYW5kXG4gICBbTWluaW1hbC5TLCBNaW5pbWFsLlMxLCBldGNdIGFyZSB0aGUgc2lnbmF0dXJlcyB0aGF0IGdlbmVyYXRlZCBjb2RlIHVzZXMuICopXG5cbigqIHRoZSBzdWJzZXQgb2YgUyBjb250YWluaW5nIG9ubHkgZnVuY3Rpb25zLCBzbyB0aGF0IG9uZSBjYW4gcmVjdXJzaXZlbHkgZGVmaW5lIG1vZHVsZXNcbiAgIGltcGxlbWVudGluZyB0aGlzIGludGVyZmFjZSAqKVxubW9kdWxlIHR5cGUgU19vbmx5X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgYmluX3NpemVfdCA6IHQgU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcblxuICAoKipcbiAgICAgVGhpcyBmdW5jdGlvbiBvbmx5IG5lZWRzIGltcGxlbWVudGF0aW9uIGlmIFt0XSBleHBvc2VkIHRvIGJlIGEgcG9seW1vcnBoaWMgdmFyaWFudC5cbiAgICAgRGVzcGl0ZSB3aGF0IHRoZSB0eXBlIHJlYWRzLCB0aGlzIGRvZXMgKm5vdCogcHJvZHVjZSBhIGZ1bmN0aW9uIGFmdGVyIHJlYWRpbmc7XG4gICAgIGluc3RlYWQgaXQgdGFrZXMgdGhlIGNvbnN0cnVjdG9yIHRhZyAoaW50KSBiZWZvcmUgcmVhZGluZyBhbmQgcmVhZHMgdGhlIHJlc3Qgb2YgdGhlXG4gICAgIHZhcmlhbnQgW3RdIGFmdGVyd2FyZHMuXG4gICopXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgU19vbmx5X2Z1bmN0aW9ucyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICB2YWwgYmluX3dyaXRlcl90IDogdCBUeXBlX2NsYXNzLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogdCBUeXBlX2NsYXNzLnJlYWRlclxuICB2YWwgYmluX3QgOiB0IFR5cGVfY2xhc3MudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYSB0KSBXcml0ZS53cml0ZXIxXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS50XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgU2l6ZS5zaXplcjNcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgJ2MsIGludCAtPiAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy50XG5lbmRcblxubW9kdWxlIE1pbmltYWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gICAgdmFsIGJpbl93cml0ZV90IDogdCBXcml0ZS53cml0ZXJcbiAgICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoaW50IC0+IHQpIFJlYWQucmVhZGVyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2EgdCkgUmVhZC5yZWFkZXIxXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgU2l6ZS5zaXplcjJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCBpbnQgLT4gKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgV3JpdGUud3JpdGVyM1xuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgZW5kXG5lbmRcbiIsIigqIFV0aWxzOiB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgdXNlciBjb252ZW5pZW5jZSAqKVxuXG5vcGVuIENvbW1vblxub3BlbiBTaXplXG5vcGVuIFR5cGVfY2xhc3NcbmluY2x1ZGUgVXRpbHNfaW50ZlxuXG5sZXQgc2l6ZV9oZWFkZXJfbGVuZ3RoID0gOFxubGV0IGJpbl93cml0ZV9zaXplX2hlYWRlciA9IFdyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXRcbmxldCBiaW5fcmVhZF9zaXplX2hlYWRlciA9IFJlYWQuYmluX3JlYWRfaW50XzY0Yml0XG5cbmxldCBiaW5fZHVtcCA/KGhlYWRlciA9IGZhbHNlKSB3cml0ZXIgdiA9XG4gIGxldCBidWYsIHBvcywgcG9zX2xlbiA9XG4gICAgbGV0IHZfbGVuID0gd3JpdGVyLnNpemUgdiBpblxuICAgIGlmIGhlYWRlclxuICAgIHRoZW4gKFxuICAgICAgbGV0IHRvdF9sZW4gPSB2X2xlbiArIHNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgICAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgdG90X2xlbiBpblxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvczowIHZfbGVuIGluXG4gICAgICBidWYsIHBvcywgcG9zICsgdl9sZW4pXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB2X2xlbiBpblxuICAgICAgYnVmLCAwLCB2X2xlbilcbiAgaW5cbiAgbGV0IHBvcyA9IHdyaXRlci53cml0ZSBidWYgfnBvcyB2IGluXG4gIGlmIHBvcyA9IHBvc19sZW5cbiAgdGhlbiBidWZcbiAgZWxzZSBmYWlsd2l0aCBcIkJpbl9wcm90LlV0aWxzLmJpbl9kdW1wOiBzaXplIGNoYW5nZWQgZHVyaW5nIHdyaXRpbmdcIlxuOztcblxuKCogUmVhZGluZyBmcm9tIHN0cmVhbXMgKilcblxubGV0IGJpbl9yZWFkX3N0cmVhbSA/bWF4X3NpemUgfnJlYWQgcmVhZGVyID1cbiAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIHJlYWQgYnVmIH5wb3M6MCB+bGVuOnNpemVfaGVhZGVyX2xlbmd0aDtcbiAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICBsZXQgbGVuID0gYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gIG1hdGNoIG1heF9zaXplIHdpdGhcbiAgfCBTb21lIG1heF9zaXplIHdoZW4gbGVuID4gbWF4X3NpemUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogc2l6ZSBleGNlZWRzIG1heF9zaXplOiAlZCA+ICVkXCJcbiAgICAgICAgIGxlblxuICAgICAgICAgbWF4X3NpemUpXG4gIHwgXyAtPlxuICAgIGxldCBidWYgPSBpZiBsZW4gPiBzaXplX2hlYWRlcl9sZW5ndGggdGhlbiBjcmVhdGVfYnVmIGxlbiBlbHNlIGJ1ZiBpblxuICAgIHJlYWQgYnVmIH5wb3M6MCB+bGVuO1xuICAgIHBvc19yZWYgOj0gMDtcbiAgICBsZXQgcmVzID0gcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgaWYgIXBvc19yZWYgPSBsZW5cbiAgICB0aGVuIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG1zZyA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgXCJCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zdHJlYW06IHByb3RvY29sIGxpZWQgYWJvdXQgbGVuZ3RoIG9mIHZhbHVlOiBleHBlY3RlZCBcXFxuICAgICAgICAgICAlZCwgcmVjZWl2ZWQgJWRcIlxuICAgICAgICAgIGxlblxuICAgICAgICAgICFwb3NfcmVmXG4gICAgICBpblxuICAgICAgZmFpbHdpdGggbXNnKVxuOztcblxuKCogQ29udmVyc2lvbiBvZiBiaW5hYmxlIHR5cGVzICopXG5cbm1vZHVsZSBPZl9taW5pbWFsIChTIDogQmluYWJsZS5NaW5pbWFsLlMpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbmxldCBtYXliZV9hbm5vdGF0ZV9zaGFwZSBtYXliZV91dWlkIHNoYXBlID1cbiAgbWF0Y2ggbWF5YmVfdXVpZCB3aXRoXG4gIHwgTm9uZSAtPiBzaGFwZVxuICB8IFNvbWUgdXVpZCAtPiBTaGFwZS5hbm5vdGF0ZSB1dWlkIHNoYXBlXG47O1xuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE9mX21pbmltYWwgKHN0cnVjdFxuICAgICAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICAgICAgdHlwZSB0ID0gUy50XG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IEIuYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBCLmJpbl9zaXplX3QgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPSBCLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9IFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZilcbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbiA9IFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbilcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbClcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbCB0ID0gQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsIChTLnRvX2JpbmFibGUgdClcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIgPVxuICAgIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMilcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTIuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMyA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGVcbiAgICAgIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5XG4gICAgICAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMylcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyB0ID1cbiAgICBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiBiaW5fc2l6ZV9lbDMgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYmluX3dyaXRlX2VsMyBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyIGJpbl93cml0ZXIzID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgYmluX3dyaXRlcjMuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgICAgYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYmluX3dyaXRlcjMud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiBiaW5fcmVhZGVyMyA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgICAgYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMy5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhfdXVpZF9zcGVjKSA9IE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGVfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUxX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMl9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTNfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZSA9IE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRcbm1vZHVsZSBNYWtlX2JpbmFibGUxID0gTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRcbm1vZHVsZSBNYWtlX2JpbmFibGUyID0gTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRcbm1vZHVsZSBNYWtlX2JpbmFibGUzID0gTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWRcblxubGV0IHdpdGhfbW9kdWxlX25hbWUgZiB+bW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZSA9XG4gIG1hdGNoIG1vZHVsZV9uYW1lIHdpdGhcbiAgfCBOb25lIC0+IGYgZnVuY3Rpb25fbmFtZVxuICB8IFNvbWUgbW9kdWxlX25hbWUgLT4gUHJpbnRmLmtzcHJpbnRmIGYgXCIlcy4lc1wiIG1vZHVsZV9uYW1lIGZ1bmN0aW9uX25hbWVcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiA9IHdpdGhfbW9kdWxlX25hbWUgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb25cblxubGV0IHJhaXNlX3JlYWRfdG9vX211Y2ggPVxuICB3aXRoX21vZHVsZV9uYW1lXG4gICAgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiB0cmllZCB0byByZWFkIG1vcmUgZWxlbWVudHMgdGhhbiBhdmFpbGFibGVcIilcbjs7XG5cbmxldCByYWlzZV9yZWFkX25vdF9lbm91Z2ggPVxuICB3aXRoX21vZHVsZV9uYW1lIChQcmludGYua3NwcmludGYgZmFpbHdpdGggXCIlczogZGlkbid0IHJlYWQgYWxsIGVsZW1lbnRzXCIpXG47O1xuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcIjY1OTIzNzFhLTQ5OTQtMTFlNi05MjNhLTc3NDhlNDE4Mjc2NFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX24gPSByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgbGV0IGJpbl93cml0ZXJfdCA9IHsgc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuICBsZXQgYmluX3JlYWRlcl90ID0geyByZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICBsZXQgYmluX3QgPSB7IHNoYXBlID0gYmluX3NoYXBlX3Q7IHdyaXRlciA9IGJpbl93cml0ZXJfdDsgcmVhZGVyID0gYmluX3JlYWRlcl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTFfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJhYzhhOWZmNC00OTk0LTExZTYtOWExYi05ZmI0ZTkzM2JkOWRcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID0gKGZ1biBidWYgfnBvc19yZWYgX24gLT4gX19iaW5fcmVhZF90X18gYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBfbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTJfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiYjRlNTRhZDItNDk5NC0xMWU2LWI4ZGYtODdjMjk5N2Y5ZjUyXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTMgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUzX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0MSB0MiB0MyA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImYyMTEyZWRhLWU3ZDctMTFlNi1iYjM2LTA3MmU5Y2UxNTlkYlwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0MSB0MiB0MyBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9iaW5fcmVhZF9jIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIG4gLT5cbiAgICAgICAgICAgX19iaW5fcmVhZF90X18gYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiB0eXBlX2NsYXNzMyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlIHR5cGVfY2xhc3MzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlciB0eXBlX2NsYXNzMy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyIHR5cGVfY2xhc3MzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuIiwiKCoqXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIGRlZmF1bHQgY29udmVydGVycyBmb3IgdGhlIHR5cGVzIGRlZmluZWQgaW4gdGhlIE9DYW1sXG4gICBzdGFuZGFyZCBsaWJyYXJ5LlxuKilcblxuaW5jbHVkZSBTaXplXG5cbmxldCBiaW5fdW5pdCA9IFR5cGVfY2xhc3MuYmluX3VuaXRcbmxldCBiaW5fc2hhcGVfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3VuaXRcbmxldCBiaW5fd3JpdGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdW5pdFxubGV0IGJpbl93cml0ZV91bml0ID0gV3JpdGUuYmluX3dyaXRlX3VuaXRcbmxldCBiaW5fcmVhZGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfdW5pdFxubGV0IGJpbl9yZWFkX3VuaXQgPSBSZWFkLmJpbl9yZWFkX3VuaXRcblxubGV0IF9fYmluX3JlYWRfdW5pdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidW5pdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9ib29sXG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ib29sXG5sZXQgYmluX3dyaXRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Jvb2xcbmxldCBiaW5fd3JpdGVfYm9vbCA9IFdyaXRlLmJpbl93cml0ZV9ib29sXG5sZXQgYmluX3JlYWRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Jvb2xcbmxldCBiaW5fcmVhZF9ib29sID0gUmVhZC5iaW5fcmVhZF9ib29sXG5cbmxldCBfX2Jpbl9yZWFkX2Jvb2xfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJvb2xcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zdHJpbmdcbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfc3RyaW5nXG5sZXQgYmluX3dyaXRlX3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9zdHJpbmdcbmxldCBiaW5fcmVhZGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmdcbmxldCBiaW5fcmVhZF9zdHJpbmcgPSBSZWFkLmJpbl9yZWFkX3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9zdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fYnl0ZXNcbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ieXRlc1xubGV0IGJpbl93cml0ZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYnl0ZXNcbmxldCBiaW5fd3JpdGVfYnl0ZXMgPSBXcml0ZS5iaW5fd3JpdGVfYnl0ZXNcbmxldCBiaW5fcmVhZGVyX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2J5dGVzXG5sZXQgYmluX3JlYWRfYnl0ZXMgPSBSZWFkLmJpbl9yZWFkX2J5dGVzXG5cbmxldCBfX2Jpbl9yZWFkX2J5dGVzX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9jaGFyXG5sZXQgYmluX3NoYXBlX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9jaGFyXG5sZXQgYmluX3dyaXRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2NoYXJcbmxldCBiaW5fd3JpdGVfY2hhciA9IFdyaXRlLmJpbl93cml0ZV9jaGFyXG5sZXQgYmluX3JlYWRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2NoYXJcbmxldCBiaW5fcmVhZF9jaGFyID0gUmVhZC5iaW5fcmVhZF9jaGFyXG5cbmxldCBfX2Jpbl9yZWFkX2NoYXJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImNoYXJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQgPSBUeXBlX2NsYXNzLmJpbl9pbnRcbmxldCBiaW5fc2hhcGVfaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50XG5sZXQgYmluX3dyaXRlcl9pbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaW50XG5sZXQgYmluX3dyaXRlX2ludCA9IFdyaXRlLmJpbl93cml0ZV9pbnRcbmxldCBiaW5fcmVhZGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnRcbmxldCBiaW5fcmVhZF9pbnQgPSBSZWFkLmJpbl9yZWFkX2ludFxubGV0IF9fYmluX3JlYWRfaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJpbnRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0XG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0XG5sZXQgYmluX3dyaXRlX2Zsb2F0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0XG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdFxubGV0IGJpbl9yZWFkX2Zsb2F0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRhcnJheVxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRhcnJheVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheVxubGV0IGJpbl9yZWFkZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRfZmxvYXRhcnJheSA9IFJlYWQuYmluX3JlYWRfZmxvYXRhcnJheVxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdGFycmF5X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgIXBvc19yZWZcbjs7XG5cbmluY2x1ZGUgc3RydWN0XG4gIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheVxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDldIFVzZSBbZmxvYXQgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBpbnN0ZWFkXCJdXG5cbiAgbGV0IChiaW5fc2hhcGVfZmxvYXRfYXJyYXkgW0BkZXByZWNhdGVkXG4gICAgICAgICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgYXJyYXldIFxcXG4gICAgICAgICAgb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSAnZmxvYXRhcnJheScgZnVuY3Rpb25zXCJdKVxuICAgID1cbiAgICBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCAoYmluX3dyaXRlcl9mbG9hdF9hcnJheSBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBcXFxuICAgICAgICAgIGFycmF5XSBvciBbZmxvYXRhcnJheV0gb3IgdGhlICdmbG9hdGFycmF5JyBmdW5jdGlvbnNcIl0pXG4gICAgPVxuICAgIFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCAoYmluX3dyaXRlX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IGFycmF5XSBcXFxuICAgICAgICAgIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgV3JpdGUuYmluX3dyaXRlX2Zsb2F0X2FycmF5XG4gIDs7XG5cbiAgbGV0IChiaW5fcmVhZGVyX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IFxcXG4gICAgICAgICAgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9ucyBcXFxuICAgICAgICAgIGRpcmVjdGx5XCJdKVxuICAgID1cbiAgICBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXRfYXJyYXlcbiAgOztcblxuICBsZXQgKGJpbl9yZWFkX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IGFycmF5XSBcXFxuICAgICAgICAgIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgUmVhZC5iaW5fcmVhZF9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX2Zsb2F0X2FycmF5X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gICAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0X2FycmF5XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgKF9fYmluX3JlYWRfZmxvYXRfYXJyYXlfXyBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBcXFxuICAgICAgICAgIGFycmF5XSBvciBbZmxvYXRhcnJheV0gb3IgdGhlIGZsb2F0YXJyYXkgZnVuY3Rpb25zXCJdKVxuICAgID1cbiAgICBfX2Jpbl9yZWFkX2Zsb2F0X2FycmF5X19cbiAgOztcbmVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxubGV0IGJpbl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX2ludDMyXG5sZXQgYmluX3NoYXBlX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50MzJcbmxldCBiaW5fd3JpdGVyX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDMyXG5sZXQgYmluX3dyaXRlX2ludDMyID0gV3JpdGUuYmluX3dyaXRlX2ludDMyXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQzMlxubGV0IGJpbl9yZWFkX2ludDMyID0gUmVhZC5iaW5fcmVhZF9pbnQzMlxuXG5sZXQgX19iaW5fcmVhZF9pbnQzMl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX2ludDY0XG5sZXQgYmluX3NoYXBlX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50NjRcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDY0XG5sZXQgYmluX3dyaXRlX2ludDY0ID0gV3JpdGUuYmluX3dyaXRlX2ludDY0XG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQ2NFxubGV0IGJpbl9yZWFkX2ludDY0ID0gUmVhZC5iaW5fcmVhZF9pbnQ2NFxuXG5sZXQgX19iaW5fcmVhZF9pbnQ2NF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9uYXRpdmVpbnRcbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludFxuXG5sZXQgX19iaW5fcmVhZF9uYXRpdmVpbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlZlxubGV0IGJpbl9zaGFwZV9yZWYgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9yZWZcbmxldCBiaW5fd3JpdGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9yZWZcbmxldCBiaW5fd3JpdGVfcmVmID0gV3JpdGUuYmluX3dyaXRlX3JlZlxubGV0IGJpbl9yZWFkZXJfcmVmID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3JlZlxubGV0IGJpbl9yZWFkX3JlZiA9IFJlYWQuYmluX3JlYWRfcmVmXG5cbmxldCBfX2Jpbl9yZWFkX3JlZl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fbGF6eVxubGV0IGJpbl9zaGFwZV9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5X3QgPSBXcml0ZS5iaW5fd3JpdGVfbGF6eVxubGV0IGJpbl9yZWFkZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5X3QgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV90X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eSA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xhenlcbmxldCBiaW5fd3JpdGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGF6eVxubGV0IGJpbl9yZWFkX2xhenkgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX29wdGlvblxubGV0IGJpbl9zaGFwZV9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9vcHRpb25cbmxldCBiaW5fd3JpdGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9vcHRpb25cbmxldCBiaW5fd3JpdGVfb3B0aW9uID0gV3JpdGUuYmluX3dyaXRlX29wdGlvblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX29wdGlvblxubGV0IGJpbl9yZWFkX29wdGlvbiA9IFJlYWQuYmluX3JlYWRfb3B0aW9uXG5cbmxldCBfX2Jpbl9yZWFkX29wdGlvbl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGlzdCA9IFR5cGVfY2xhc3MuYmluX2xpc3RcbmxldCBiaW5fc2hhcGVfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xpc3RcbmxldCBiaW5fd3JpdGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGlzdFxubGV0IGJpbl93cml0ZV9saXN0ID0gV3JpdGUuYmluX3dyaXRlX2xpc3RcbmxldCBiaW5fcmVhZGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGlzdFxubGV0IGJpbl9yZWFkX2xpc3QgPSBSZWFkLmJpbl9yZWFkX2xpc3RcblxubGV0IF9fYmluX3JlYWRfbGlzdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fYXJyYXlcbmxldCBiaW5fc2hhcGVfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9hcnJheVxubGV0IGJpbl93cml0ZXJfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYXJyYXlcbmxldCBiaW5fd3JpdGVfYXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfYXJyYXlcbmxldCBiaW5fcmVhZGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2FycmF5XG5sZXQgYmluX3JlYWRfYXJyYXkgPSBSZWFkLmJpbl9yZWFkX2FycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2FycmF5X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9oYXNodGJsXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9oYXNodGJsXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2hhc2h0YmxcbmxldCBiaW5fd3JpdGVfaGFzaHRibCA9IFdyaXRlLmJpbl93cml0ZV9oYXNodGJsXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2hhc2h0YmxcbmxldCBiaW5fcmVhZF9oYXNodGJsID0gUmVhZC5iaW5fcmVhZF9oYXNodGJsXG5cbmxldCBfX2Jpbl9yZWFkX2hhc2h0YmxfXyBfZiBfZyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9iaWdzdHJpbmdcbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlX2JpZ3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZF9iaWdzdHJpbmcgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9iaWdzdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX21hdCA9IFR5cGVfY2xhc3MuYmluX21hdFxubGV0IGJpbl9zaGFwZV9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fd3JpdGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9tYXRcbmxldCBiaW5fd3JpdGVfbWF0ID0gV3JpdGUuYmluX3dyaXRlX21hdFxubGV0IGJpbl9yZWFkZXJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX21hdFxubGV0IGJpbl9yZWFkX21hdCA9IFJlYWQuYmluX3JlYWRfbWF0XG5sZXQgX19iaW5fcmVhZF9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQzMl9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3ZlY1xubGV0IGJpbl9zaGFwZV92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl92ZWNcbmxldCBiaW5fd3JpdGVfdmVjID0gV3JpdGUuYmluX3dyaXRlX3ZlY1xubGV0IGJpbl9yZWFkZXJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3ZlY1xubGV0IGJpbl9yZWFkX3ZlYyA9IFJlYWQuYmluX3JlYWRfdmVjXG5sZXQgX19iaW5fcmVhZF92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiICFwb3NfcmVmXG47O1xuIiwiaW5jbHVkZSBNZDVfbGliXG5cbmxldCBiaW5fc2hhcGVfdCA9XG4gIFNoYXBlLmJhc2V0eXBlIChTaGFwZS5VdWlkLm9mX3N0cmluZyBcImY2YmRjZGQwLTlmNzUtMTFlNi05YTdlLWQzMDIwNDI4ZWZlZFwiKSBbXVxuOztcblxubGV0IGJpbl9zaXplX3QgPSBTaXplLmJpbl9zaXplX21kNVxubGV0IGJpbl93cml0ZV90ID0gV3JpdGUuYmluX3dyaXRlX21kNVxubGV0IGJpbl9yZWFkX3QgPSBSZWFkLmJpbl9yZWFkX21kNVxuXG5sZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfdmRpZ2VzdCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJTaGFwZS5NZDUudFwiICFwb3NfcmVmXG47O1xuIiwib3BlbiBDb21tb25cblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTI1NTdlLTQ5MGEtMTFlNi05OGFjLTRiODk1M2Q1MjVmZVwiKSBbIHQgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGEgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBiaW5fc2l6ZV9hIGFcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgYSA9XG4gICAgbGV0IHN0YXJ0X2EgPSBwb3MgKyBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgICBsZXQgZW5kX2EgPSBiaW5fd3JpdGVfYSBidWYgfnBvczpzdGFydF9hIGEgaW5cbiAgICBsZXQgc2l6ZSA9IGVuZF9hIC0gc3RhcnRfYSBpblxuICAgIGxldCB3cml0dGVuID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICBhc3NlcnQgKHdyaXR0ZW4gPSBzdGFydF9hKTtcbiAgICBlbmRfYVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgZXhwZWN0ZWRfc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBzdGFydF9hID0gIXBvc19yZWYgaW5cbiAgICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IGVuZF9hID0gIXBvc19yZWYgaW5cbiAgICBpZiBlbmRfYSAtIHN0YXJ0X2EgPD4gZXhwZWN0ZWRfc2l6ZVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICBcIkJpbl9wcm90LkJsb2IuYmluX3JlYWRfdDogc2l6ZSAoJWQpIDw+IGV4cGVjdGVkICglZClcIlxuICAgICAgICAgICAoZW5kX2EgLSBzdGFydF9hKVxuICAgICAgICAgICBleHBlY3RlZF9zaXplKTtcbiAgICBhXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF8gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi50XCIgIXBvc19yZWZcbiAgOztcbmVuZFxuXG50eXBlICdhIGlkID0gJ2FcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gVFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgb2ZfYmluYWJsZSB0ID0gdFxuICAgIGxldCB0b19iaW5hYmxlIHQgPSB0XG4gIGVuZClcblxubW9kdWxlIE9wYXF1ZSA9IHN0cnVjdFxuICAoKiBbQmlnc3RyaW5nXSBhbmQgW1N0cmluZ10gc2hhcmUgW2Jpbl9zaGFwZV90XSBiZWNhdXNlIHRoZXkgaGF2ZSBleGFjdGx5IHRoZSBzYW1lXG4gICAgIHNlcmlhbGl6YXRpb24gZm9ybWF0IGFuZCB0aGV5IGRlbm90ZSB0aGUgc2FtZSB2YWx1ZXMuXG5cbiAgICAgSW4gZmFjdCBhbG1vc3QgY2VydGFpbmx5IFtCbG9iLnRdIGl0c2VsZiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBiaW5fc2hhcGVfdCBhcyB3ZWxsLiAqKVxuICBsZXQgYmluX3NoYXBlX3QgPVxuICAgIFNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCI4NWExZjc2ZS00OTBhLTExZTYtODZhOS01YmVmNTg1ZjI2MDJcIikgW10pXG4gIDs7XG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgICgqIFtidWZdIGlzIHRoZSBiaW4taW8gZGF0YSBleGNsdWRpbmcgdGhlIHNpemUgaGVhZGVyLiBXaGVuIChkZS0pc2VyaWFsaXplZCwgdGhlIHNpemVcbiAgICAgICBoZWFkZXIgaXMgaW5jbHVkZWQuICopXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGJ1ZlxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJ1Zl9sZW4gdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gYnVmX2xlbiB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3Mgc2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgbGV0IHNpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGVfYnVmIHNpemUgaW5cbiAgICAgICAgYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6IXBvc19yZWYgfmRzdDp0IH5kc3RfcG9zOjAgc2l6ZTtcbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IHRvX29wYXF1ZSBibG9iIGJpbl93cml0ZXIgPSBVdGlscy5iaW5fZHVtcCBiaW5fd3JpdGVyIGJsb2JcbiAgICBsZXQgb2Zfb3BhcXVlX2V4biAodCA6IHQpIGJpbl9yZWFkZXIgPSBiaW5fcmVhZGVyLlR5cGVfY2xhc3MucmVhZCB0IH5wb3NfcmVmOihyZWYgMClcblxuICAgICgqIEJpZ3N0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IGJ1ZiAtPiBidWYgLT4gaW50KVxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIFBweF9zZXhwX2NvbnZfbGliLlNleHAuQXRvbSAob2Zfb3BhcXVlX2V4biB0IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBTdHJpbmcubGVuZ3RoIHRcblxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICBsZXQgc2l6ZSA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgICBsZXQgcG9zID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IH5zcmNfcG9zOjAgYnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gICAgICAgIHBvcyArIHNpemVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICBibGl0X2J1Zl9ieXRlcyB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgc3RyIH5sZW47XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgbGVuID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGxldCB0ID0gc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvczohcG9zX3JlZiB+bGVuIGluXG4gICAgICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBsZW47XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IGxlbmd0aCB0ID0gU3RyaW5nLmxlbmd0aCB0XG5cbiAgICBsZXQgdG9fb3BhcXVlIH5idWYgdiBiaW5fd3JpdGVyX3YgOiB0ID1cbiAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICBsZXQgbGVuID0gYmluX3dyaXRlcl92LlR5cGVfY2xhc3Mud3JpdGUgYnVmIH5wb3MgdiBpblxuICAgICAgc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvcyB+bGVuXG4gICAgOztcblxuICAgIGxldCBvZl9vcGFxdWVfZXhuIH5idWYgKHQgOiB0KSBiaW5fcmVhZGVyX3YgPVxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IGJ1ZiB+bGVuO1xuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlcyA9IGJpbl9yZWFkZXJfdi5UeXBlX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICBpZiAhcG9zX3JlZiA8PiBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICBcIk9wYXF1ZSBibG9iIGhhcyAlZCBieXRlcyBidXQgW29mX29wYXF1ZV9leG5dIHJlYWQgJWRcIlxuICAgICAgICAgICAgbGVuXG4gICAgICAgICAgICAhcG9zX3JlZlxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBlcnJvcilcbiAgICAgIGVsc2UgcmVzXG4gICAgOztcblxuICAgICgqIFN0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICAgIGxldCBzZXhwX29mX3QgPSBQcHhfc2V4cF9jb252X2xpYi5Db252LnNleHBfb2Zfc3RyaW5nXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJZ25vcmVkID0gc3RydWN0XG4gICgqIFRoZSByZXByZXNlbnRhdGlvbiBvZiBhbiBpZ25vcmVkIHZhbHVlIGlzIGp1c3QgdGhlIHNpemUgb2YgdGhlIHZhbHVlIGl0IHdhcyBjcmVhdGVkXG4gICAgIGZyb20gKGkuZS4sIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3ZXJlIGlnbm9yZWQgZnJvbSB0aGUgYnVmZmVyIHdlIHdlcmUgcmVhZGluZ1xuICAgICAtLSB3ZSBleGNsdWRlIHRoZSA4IGJ5dGUgc2l6ZSBoZWFkZXIgZnJvbSB3aGljaCB0aGUgc2l6ZSB3YXMgcmVhZCkuICopXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBiaW5fc2l6ZV90IHNpemUgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBzaXplXG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBzaXplO1xuICAgIHNpemVcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5JZ25vcmVkLnRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IFR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB2YWwgcHJlX3Rlc3RfaG9vayA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbmxldCBwcmVfdGVzdF9ob29rID0gaWdub3JlXG4iLCJbJSVpbXBvcnQgXCJjb25maWcuaFwiXVxuXG5vcGVuISBCYXNlXG5cblslJWlmZGVmIEpTQ19BUkNIX1NJWFRZRk9VUl1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcbltAQG5vYWxsb2NdXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5cblslJWVuZGlmXVxuWyUlaWZkZWYgSlNDX1BPU0lYX1RJTUVSU11cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkgZmFpbGVkXCJcblxuWyUlZWxzZV1cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiZ2V0dGltZW9mZGF5IGZhaWxlZFwiXG5cblslJWVuZGlmXVxuXG5sZXQgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSA9XG4gIGxldCB0ID0gbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvICgpIGluXG4gIGlmIEludDYzLiggPD4gKSB0IEludDYzLnplcm8gdGhlbiB0IGVsc2UgZ2V0dGltZV9mYWlsZWQgKClcbjs7XG4iLCJtb2R1bGUgVGVzdF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3VjY2VzcyB8IEZhaWx1cmUgfCBFcnJvclxuXG4gIGxldCB0b19leGl0X2NvZGUgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiAwXG4gICAgfCBGYWlsdXJlIC0+IDJcbiAgICB8IEVycm9yICAgLT4gMVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiBcInN1Y2Nlc3NcIlxuICAgIHwgRmFpbHVyZSAtPiBcImZhaWx1cmVcIlxuICAgIHwgRXJyb3IgICAtPiBcImVycm9yXCJcbiAgOztcblxuICBsZXQgY29tYmluZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFN1Y2Nlc3MsIFN1Y2Nlc3MgICAgICAgIC0+IFN1Y2Nlc3NcbiAgICB8IEVycm9yICAsIF8gfCBfLCBFcnJvciAgIC0+IEVycm9yXG4gICAgfCBGYWlsdXJlLCBfIHwgXywgRmFpbHVyZSAtPiBGYWlsdXJlXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfYWxsIHRzID0gTGlzdC5mb2xkX2xlZnQgY29tYmluZSBTdWNjZXNzIHRzXG5lbmRcblxubGV0IHBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnID1cbiAgdHJ5XG4gICAgQXJnLnBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPiBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDFcbiAgfCBBcmcuSGVscCBtc2cgLT4gUHJpbnRmLnByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcbjs7XG5cbnR5cGUgZGVzY3IgPSBzdHJpbmdcbmxldCB0ZXN0X21vZHVsZXNfcmFuID0gcmVmIDBcbmxldCB0ZXN0X21vZHVsZXNfZmFpbGVkID0gcmVmIDBcbmxldCB0ZXN0c19yYW4gPSByZWYgMFxubGV0IHRlc3RzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgZHluYW1pY19saWIgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG50eXBlIGZpbGVuYW1lID0gc3RyaW5nXG50eXBlIGxpbmVfbnVtYmVyID0gaW50XG50eXBlIHN0YXJ0X3BvcyA9IGludFxudHlwZSBlbmRfcG9zID0gaW50XG50eXBlIGNvbmZpZyA9IChtb2R1bGUgSW5saW5lX3Rlc3RfY29uZmlnLlMpXG50eXBlICdhIHRlc3RfZnVuY3Rpb25fYXJnc1xuICA9IGNvbmZpZzpjb25maWdcbiAgLT4gZGVzY3I6ZGVzY3IgTGF6eS50XG4gIC0+IHRhZ3M6c3RyaW5nIGxpc3RcbiAgLT4gZmlsZW5hbWU6ZmlsZW5hbWVcbiAgLT4gbGluZV9udW1iZXI6bGluZV9udW1iZXJcbiAgLT4gc3RhcnRfcG9zOnN0YXJ0X3Bvc1xuICAtPiBlbmRfcG9zOmVuZF9wb3NcbiAgLT4gJ2FcblxubW9kdWxlIFRhZ19wcmVkaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJlcXVpcmVkX3RhZ3MgIDogc3RyaW5nIGxpc3RcbiAgICA7IGRyb3BwZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgfVxuXG4gIGxldCBlbmFibGVfZXZlcnl0aGluZyA9IHsgcmVxdWlyZWRfdGFncyA9IFtdOyBkcm9wcGVkX3RhZ3MgPSBbXSB9XG5cbiAgbGV0IGRyb3AgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gdGFnIDo6IHQuZHJvcHBlZF90YWdzXG4gICAgOyByZXF1aXJlZF90YWdzID0gTGlzdC5maWx0ZXIgKCg8PikgdGFnKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG5cbiAgbGV0IHJlcXVpcmUgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gTGlzdC5maWx0ZXIgKCg8PikgdGFnKSB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IHRhZyA6OiB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG5cbiAgbGV0IGVudGlyZV9tb2R1bGVfZGlzYWJsZWQgdCB+cGFydGlhbF90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG5cbiAgbGV0IGRpc2FibGVkIHQgfmNvbXBsZXRlX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biByZXEgLT4gbm90IChMaXN0Lm1lbSByZXEgdGFncykpIHQucmVxdWlyZWRfdGFnc1xuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG5lbmRcblxuXG50eXBlIHdoaWNoX3Rlc3RzID1cbiAgeyBsaWJuYW1lIDogc3RyaW5nXG4gIDsgb25seV90ZXN0X2xvY2F0aW9uIDogKGZpbGVuYW1lICogbGluZV9udW1iZXIgb3B0aW9uICogYm9vbCByZWYpIGxpc3RcbiAgOyBuYW1lX2ZpbHRlciA6IHN0cmluZyBsaXN0XG4gIDsgd2hpY2hfdGFncyA6IFRhZ19wcmVkaWNhdGUudFxuICB9XG50eXBlIHRlc3RfbW9kZSA9XG4gIHsgd2hpY2hfdGVzdHMgOiB3aGljaF90ZXN0c1xuICA7IHdoYXRfdG9fZG8gOlxuICAgICAgWyBgUnVuX3BhcnRpdGlvbiBvZiBzdHJpbmcgb3B0aW9uXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnNcbiAgICAgIF1cbiAgfVxuXG5tb2R1bGUgQWN0aW9uIDogc2lnXG4gIHR5cGUgdCA9IFtcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gIF1cbiAgdmFsIGdldCA6IHVuaXQgLT4gdFxuICB2YWwgc2V0IDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gW1xuICAgIHwgYElnbm9yZVxuICAgIHwgYFRlc3RfbW9kZSBvZiB0ZXN0X21vZGVcbiAgXVxuICBsZXQgYWN0aW9uIDogdCByZWYgPSByZWYgYElnbm9yZVxuICBsZXQgZm9yY2VfZHJvcCA9XG4gICAgdHJ5IGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIiA6IHN0cmluZyk7IHRydWVcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuICBsZXQgZ2V0ICgpID1cbiAgICAoKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGNvbXBpbGluZyB0byBqYXZhc2NyaXB0LlxuICAgICAgIEpzX29mX29jYW1sIGNhbiBzdGF0aWNhbGx5IGV2YWx1YXRlIFtTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9JTkxJTkVfVEVTVFwiXVxuICAgICAgIGFuZCBpbmxpbmUgdGhlIHJlc3VsdCAoW2BJZ25vcmVdKSB3aGVuZXZlciBbZ2V0ICgpXSBpcyBjYWxsZWQuXG4gICAgICAgVW5pdCB0ZXN0cyBjYW4gdGhlbiBiZSB0cmVhdGVkIGFzIGRlYWRjb2RlIHNpbmNlIHRoZSBhcmd1bWVudCBbZl0gb2YgdGhlIFt0ZXN0XVxuICAgICAgIGZ1bmN0aW9uIGJlbG93IGlzIG5ldmVyIHVzZWQuICopXG4gICAgaWYgZm9yY2VfZHJvcFxuICAgIHRoZW4gYElnbm9yZVxuICAgIGVsc2UgIWFjdGlvblxuXG4gIGxldCBzZXQgdiA9IGFjdGlvbiA6PSB2XG5lbmRcblxubW9kdWxlIFBhcnRpdGlvbiA6IHNpZ1xuICB2YWwgZm91bmRfdGVzdCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgc2V0X2N1cnJlbnQgOiBzdHJpbmcgLT4gdW5pdFxuICB2YWwgaXNfY3VycmVudCA6IHN0cmluZyBvcHRpb24gLT4gYm9vbFxuICB2YWwgYWxsIDogdW5pdCAtPiBzdHJpbmcgbGlzdFxuZW5kID0gc3RydWN0XG4gIGxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSAyM1xuICBsZXQgY3VycmVudCA9IHJlZiBcIlwiICBsZXQgc2V0X2N1cnJlbnQgeCA9IGN1cnJlbnQgOj0geFxuICBsZXQgZm91bmRfdGVzdCAoKSA9XG4gICAgaWYgIWN1cnJlbnQgPD4gXCJcIiAmJiBub3QgKEhhc2h0YmwubWVtIGFsbCAhY3VycmVudCkgdGhlblxuICAgICAgSGFzaHRibC5hZGQgYWxsICFjdXJyZW50ICgpXG4gIDs7XG4gIGxldCBpc19jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBwIC0+IHAgPSAhY3VycmVudFxuICA7O1xuICBsZXQgYWxsICgpID1cbiAgICBMaXN0LnNvcnQgU3RyaW5nLmNvbXBhcmVcbiAgICAgIChIYXNodGJsLmZvbGQgKGZ1biBrICgpIGFjYyAtPiBrIDo6IGFjYykgYWxsIFtdKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNb2R1bGVfY29udGV4dCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgb25lX21vZHVsZSA9XG4gICAgICB7IGRlc2NyIDogc3RyaW5nXG4gICAgICA7IHRhZ3MgOiBzdHJpbmcgbGlzdFxuICAgICAgfVxuXG4gICAgdHlwZSB0ID0gb25lX21vZHVsZSBsaXN0XG5cbiAgICBsZXQgZGVzY3IgdCA9IExpc3QubWFwIChmdW4gbSAtPiBtLmRlc2NyKSB0XG4gICAgbGV0IHRhZ3MgdCA9IExpc3QuY29uY2F0IChMaXN0Lm1hcCAoZnVuIG0gLT4gbS50YWdzKSB0KVxuICBlbmRcblxuICBsZXQgY3VycmVudCA6IFQudCByZWYgPSByZWYgW11cblxuICBsZXQgd2l0aF8gfmRlc2NyIH50YWdzIGYgPVxuICAgIGxldCBwcmV2ID0gIWN1cnJlbnQgaW5cbiAgICBjdXJyZW50IDo9IHsgVC4gZGVzY3I7IHRhZ3MgfSA6OiBwcmV2O1xuICAgIHRyeVxuICAgICAgbGV0IHggPSBmICgpIGluXG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICByYWlzZSBlXG5cbiAgbGV0IGN1cnJlbnRfZGVzY3IgKCkgPSBULmRlc2NyICFjdXJyZW50XG4gIGxldCBjdXJyZW50X3RhZ3MgICgpID0gVC50YWdzICAhY3VycmVudFxuZW5kXG5cbmxldCB2ZXJib3NlID0gcmVmIGZhbHNlXG5sZXQgc3RyaWN0ID0gcmVmIGZhbHNlXG5sZXQgc2hvd19jb3VudHMgPSByZWYgZmFsc2VcbmxldCBsaXN0X3Rlc3RfbmFtZXMgPSByZWYgZmFsc2VcbmxldCBkZWxheWVkX2Vycm9ycyA9IHJlZiBbXVxubGV0IHN0b3Bfb25fZXJyb3IgPSByZWYgZmFsc2VcblxubGV0IGxvZyA9IHJlZiBOb25lXG5cbmxldCB0aW1lX3NlYyA9IHJlZiAwLlxuXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBpbl9wbGFjZSAgPSByZWYgZmFsc2VcbmxldCBkaWZmX2NvbW1hbmQgPSByZWYgTm9uZVxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSByZWYgTm9uZVxubGV0IGFsbG93X291dHB1dF9wYXR0ZXJucyA9IHJlZiBmYWxzZVxuXG5sZXQgZGlzcGxheWVkX2Rlc2NyIChsYXp5IGRlc2NyKSBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zID1cbiAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkJXNcIlxuICAgIGZpbGVuYW1lIGxpbmUgc3RhcnRfcG9zIGVuZF9wb3NcbiAgICAoaWYgZGVzY3IgPSBcIlwiIHRoZW4gXCJcIiBlbHNlIFwiOiBcIiBeIGRlc2NyKVxubGV0IHBhcnNlX2Rlc2NyIHN0ciA9XG4gIHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICwgY2hhcmFjdGVycyAlZCAtICVkICUhXCJcbiAgICAgICAgICAgICAgKGZ1biBmaWxlIGxpbmUgX3N0YXJ0X3BvcyBfZW5kX3BvcyAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoIF8gLT5cbiAgdHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAsIGxpbmUgJWQgJSFcIiAoZnVuIGZpbGUgbGluZSAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoIF8gLT5cbiAgdHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAlIVwiIChmdW4gZmlsZSAtPiBmaWxlLCBOb25lKSlcbiAgd2l0aCBfIC0+IE5vbmVcblxubGV0ICgpID1cbiAgbWF0Y2ggQXJyYXkudG9fbGlzdCBTeXMuYXJndiB3aXRoXG4gIHwgbmFtZSA6OiBcImlubGluZS10ZXN0LXJ1bm5lclwiIDo6IGxpYiA6OiByZXN0XG4gICAgd2hlbiBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLmFtX3Rlc3RpbmcgLT4gYmVnaW5cbiAgICAgICgqIHdoZW4gd2Ugc2VlIHRoaXMgYXJndW1lbnQsIHdlIHN3aXRjaCB0byB0ZXN0IG1vZGUgKilcbiAgICAgIGxldCB0ZXN0cyA9IHJlZiBbXSBpblxuICAgICAgbGV0IGxpc3RfcGFydGl0aW9ucyA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IHBhcnRpdGlvbiA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgdGFnX3ByZWRpY2F0ZSA9IHJlZiBUYWdfcHJlZGljYXRlLmVuYWJsZV9ldmVyeXRoaW5nIGluXG4gICAgICBsZXQgbmFtZV9maWx0ZXIgPSByZWYgW10gaW5cbiAgICAgIHBhcnNlX2FyZ3YgKEFycmF5Lm9mX2xpc3QgKG5hbWUgOjogcmVzdCkpIChBcmcuYWxpZ24gW1xuICAgICAgICBcIi1saXN0LXRlc3QtbmFtZXNcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBsaXN0X3Rlc3RfbmFtZXMgOj0gdHJ1ZTsgdmVyYm9zZSA6PSB0cnVlKSxcbiAgICAgICAgXCIgRG8gbm90IHJ1biB0ZXN0cyBidXQgc2hvdyB3aGF0IHdvdWxkIGhhdmUgYmVlbiBydW5cIjtcbiAgICAgICAgXCItbGlzdC1wYXJ0aXRpb25zXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF9wYXJ0aXRpb25zIDo9IHRydWUpLFxuICAgICAgICBcIiBMaXN0cyBhbGwgdGhlIHBhcnRpdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0IG9uZSB0ZXN0IG9yIHRlc3RfbW9kdWxlXCI7XG4gICAgICAgIFwiLXBhcnRpdGlvblwiLCBBcmcuU3RyaW5nIChmdW4gaSAtPiBwYXJ0aXRpb24gOj0gU29tZSBpKSxcbiAgICAgICAgXCIgT25seSBydW4gdGhlIHRlc3RzIGluIHRoZSBnaXZlbiBwYXJ0aXRpb25cIjtcbiAgICAgICAgXCItdmVyYm9zZVwiLCBBcmcuU2V0IHZlcmJvc2UsIFwiIFNob3cgdGhlIHRlc3RzIGFzIHRoZXkgcnVuXCI7XG4gICAgICAgIFwiLXN0b3Atb24tZXJyb3JcIiwgQXJnLlNldCBzdG9wX29uX2Vycm9yLCBcIiBSdW4gdGVzdHMgb25seSB1cCB0byB0aGUgZmlyc3QgZXJyb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvZXNuJ3Qgd29yayBmb3IgZXhwZWN0IHRlc3RzKVwiO1xuICAgICAgICBcIi1zdHJpY3RcIiwgQXJnLlNldCBzdHJpY3QsIFwiIEVuZCB3aXRoIGFuIGVycm9yIGlmIG5vIHRlc3RzIHdlcmUgcnVuXCI7XG4gICAgICAgIFwiLXNob3ctY291bnRzXCIsIEFyZy5TZXQgc2hvd19jb3VudHMsIFwiIFNob3cgdGhlIG51bWJlciBvZiB0ZXN0cyByYW5cIjtcbiAgICAgICAgXCItbG9nXCIsIEFyZy5Vbml0IChmdW4gKCkgLT5cbiAgICAgICAgICAodHJ5IFN5cy5yZW1vdmUgXCJpbmxpbmVfdGVzdHMubG9nXCIgd2l0aCBfIC0+ICgpKTtcbiAgICAgICAgICBsb2cgOj0gU29tZSAob3Blbl9vdXQgXCJpbmxpbmVfdGVzdHMubG9nXCIpXG4gICAgICAgICksIFwiIExvZyB0aGUgdGVzdHMgcnVuIGluIGlubGluZV90ZXN0cy5sb2dcIjtcbiAgICAgICAgXCItZHJvcC10YWdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUuZHJvcCAhdGFnX3ByZWRpY2F0ZSBzXG4gICAgICAgICksIFwidGFnIE9ubHkgcnVuIHRlc3RzIG5vdCB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1yZXF1aXJlLXRhZylcIjtcbiAgICAgICAgXCItcmVxdWlyZS10YWdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUucmVxdWlyZSAhdGFnX3ByZWRpY2F0ZSBzXG4gICAgICAgICksIFwidGFnIE9ubHkgcnVuIHRlc3RzIHRhZ2dlZCB3aXRoIFt0YWddIChvdmVycmlkZXMgcHJldmlvdXMgLWRyb3AtdGFnKVwiO1xuICAgICAgICBcIi1tYXRjaGluZ1wiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBuYW1lX2ZpbHRlciA6PSBzIDo6ICFuYW1lX2ZpbHRlciksXG4gICAgICAgIFwic3Vic3RyaW5nIE9ubHkgcnVuIHRlc3RzIHdob3NlIG5hbWVzIGNvbnRhaW4gdGhlIGdpdmVuIHN1YnN0cmluZ1wiO1xuICAgICAgICBcIi1vbmx5LXRlc3RcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICBsZXQgZmlsZW5hbWUsIGluZGV4ID1cbiAgICAgICAgICAgIG1hdGNoIHBhcnNlX2Rlc2NyIHMgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChmaWxlLCBpbmRleCkgLT4gZmlsZSwgaW5kZXhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcyAnOicgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJzonIGluXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gU3RyaW5nLnN1YiBzIDAgaSBpblxuICAgICAgICAgICAgICAgIGxldCBpbmRleF9zdHJpbmcgPSBTdHJpbmcuc3ViIHMgKGkgKyAxKSAoU3RyaW5nLmxlbmd0aCBzIC0gaSAtIDEpIGluXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID1cbiAgICAgICAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGluZGV4X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIkFyZ3VtZW50ICVzIGRvZXNuJ3QgZml0IHRoZSBmb3JtYXQgZmlsZW5hbWVbOmxpbmVfbnVtYmVyXVxcbiUhXCIgcztcbiAgICAgICAgICAgICAgICAgICAgZXhpdCAxXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBmaWxlbmFtZSwgU29tZSBpbmRleFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcywgTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgdGVzdHMgOj0gKGZpbGVuYW1lLCBpbmRleCwgcmVmIGZhbHNlKSA6OiAhdGVzdHNcbiAgICAgICAgKSwgXCJsb2NhdGlvbiBSdW4gb25seSB0aGUgdGVzdHMgc3BlY2lmaWVkIGJ5IGFsbCB0aGUgLW9ubHktdGVzdCBvcHRpb25zLlxuICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9ucyBjYW4gYmUgb25lIG9mIHRoZXNlIGZvcm1zOlxuICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbFxuICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbDpsaW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCJcbiAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiLCBsaW5lIDIzXG4gICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyMywgY2hhcmFjdGVycyAyLTNcIjtcbiAgICAgICAgXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgU3VtbWFyaXplIHRlc3RzIHdpdGhvdXQgdXNpbmcgY29sb3JcIjtcbiAgICAgICAgXCItaW4tcGxhY2VcIiwgQXJnLlNldCBpbl9wbGFjZSwgXCIgVXBkYXRlIGV4cGVjdCB0ZXN0cyBpbiBwbGFjZVwiO1xuICAgICAgICBcIi1kaWZmLWNtZFwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgICAgXCIgRGlmZiBjb21tYW5kIGZvciB0ZXN0cyB0aGF0IHJlcXVpcmUgZGlmZmluZyAodXNlIC0gdG8gZGlzYWJsZSBkaWZmaW5nKVwiO1xuICAgICAgICBcIi1hbGxvdy1vdXRwdXQtcGF0dGVybnNcIiwgQXJnLlNldCBhbGxvd19vdXRwdXRfcGF0dGVybnMsXG4gICAgICAgIFwiIEFsbG93IG91dHB1dCBwYXR0ZXJucyBpbiB0ZXN0cyBleHBlY3RhdGlvbnNcIjtcbiAgICAgICAgXCItc291cmNlLXRyZWUtcm9vdFwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzb3VyY2VfdHJlZV9yb290IDo9IFNvbWUgcyksXG4gICAgICAgIFwiIFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlXCJcbiAgICAgIF0pIChmdW4gYW5vbiAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIiVzOiB1bmV4cGVjdGVkIGFub255bW91cyBhcmd1bWVudCAlc1xcbiUhXCIgbmFtZSBhbm9uO1xuICAgICAgICBleGl0IDFcbiAgICAgICkgKFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgW2FyZ3NdXCIgbmFtZSBcImlubGluZS10ZXN0LXJ1bm5lclwiIGxpYik7XG4gICAgICBBY3Rpb24uc2V0IChcbiAgICAgICAgYFRlc3RfbW9kZVxuICAgICAgICAgIHsgd2hpY2hfdGVzdHMgPVxuICAgICAgICAgICAgICB7IGxpYm5hbWUgPSBsaWJcbiAgICAgICAgICAgICAgOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSAhdGVzdHM7XG4gICAgICAgICAgICAgICAgd2hpY2hfdGFncyA9ICF0YWdfcHJlZGljYXRlO1xuICAgICAgICAgICAgICAgIG5hbWVfZmlsdGVyID0gIW5hbWVfZmlsdGVyXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHdoYXRfdG9fZG8gPVxuICAgICAgICAgICAgICBpZiAhbGlzdF9wYXJ0aXRpb25zXG4gICAgICAgICAgICAgIHRoZW4gYExpc3RfcGFydGl0aW9uc1xuICAgICAgICAgICAgICBlbHNlIGBSdW5fcGFydGl0aW9uICFwYXJ0aXRpb25cbiAgICAgICAgICB9KVxuICAgIGVuZFxuICB8IF8gLT5cbiAgICAoKVxuXG5sZXQgYW1fdGVzdF9ydW5uZXIgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgVGVzdF9tb2RlIF8gLT4gdHJ1ZVxuICB8IGBJZ25vcmUgLT4gZmFsc2VcblxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RfZW52X3ZhciA9XG4gICgqIGZvciBhcHByb3hpbWF0ZSBjb21wYXRpYmlsaXR5LCBnaXZlbiB0aGF0IHRoZSB2YXJpYWJsZSBpcyBub3QgZXhhY3RseSBlcXVpdmFsZW50XG4gICAgIHRvIHdoYXQgUFBYX0lOTElORV9URVNUX0xJQl9BTV9SVU5OSU5HX0lOTElORV9URVNUIHVzZWQgdG8gYmUgKilcbiAgXCJURVNUSU5HX0ZSQU1FV09SS1wiXG5cbigqIFRoaXMgdmFsdWUgaXMgZGVwcmVjYXRlZCBpbiBwcmluY2lwbGUsIGluIGZhdm9yIG9mIENvcmUuYW1fcnVubmluZ190ZXN0LCBzb1xuICAgd2UncmUgZ29pbmcgdG8gbGl2ZSB3aXRoIHRoZSB1Z2x5IHBhdHRlcm4gbWF0Y2guICopXG5sZXQgYW1fcnVubmluZ19pbmxpbmVfdGVzdCA9XG4gIG1hdGNoIFN5cy5nZXRlbnYgXCJQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1RcIiB3aXRoXG4gIHwgKF8gOiBzdHJpbmcpIC0+IHRydWUgKCogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwZW9wbGUgc2V0dGluZyB0aGlzIHZhcmlhYmxlIGRpcmVjdGx5ICopXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgIG1hdGNoIFN5cy5nZXRlbnYgYW1fcnVubmluZ19pbmxpbmVfdGVzdF9lbnZfdmFyIHdpdGhcbiAgICB8IFwiaW5saW5lLXRlc3RcIiAtPiB0cnVlXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGZhbHNlXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCB0ZXN0aW5nID1cbiAgaWYgYW1fdGVzdF9ydW5uZXJcbiAgdGhlbiBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXJcbiAgZWxzZVxuICAgIChpZiBhbV9ydW5uaW5nX2lubGluZV90ZXN0XG4gICAgIHRoZW4gYFRlc3RpbmcgYEFtX2NoaWxkX29mX3Rlc3RfcnVubmVyXG4gICAgIGVsc2UgYE5vdF90ZXN0aW5nKVxuXG5sZXQgd2FsbF90aW1lX2Nsb2NrX25zICgpID1cbiAgVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKVxuXG5cbmxldCB3aGVyZV90b19jdXRfYmFja3RyYWNlID0gbGF6eSAoXG4gIEJhc2UuU3RyaW5nLlNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSAoX19NT0RVTEVfXyBeIFwiLlwiIF4gXCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc1wiKSlcblxubGV0IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgYmVmb3JlX25zID0gd2FsbF90aW1lX2Nsb2NrX25zICgpIGluXG4gIGxldCByZXMgPVxuICAgICgqIFRvIGF2b2lkIG5vaXNlIGluIGJhY2t0cmFjZXMsIHdlIGRvIHR3byB0aGluZ3MuXG5cbiAgICAgICBXZSB1c2UgW3doZXJlX3RvX2N1dF9iYWNrdHJhY2VdIGFib3ZlIHRvIHJlbW92ZSB0aGUgc3RhY2sgZnJhbWVzIGZvciB0aGUgY3VycmVudFxuICAgICAgIGZ1bmN0aW9uIGFuZCBhbnkgZnVuY3Rpb24gaXQgZ2V0cyBpbmxpbmVkIGludG8sIGFzIGl0J3Mgbm90IG9mIGFueSBpbnRlcmVzdCB0byB0aGVcbiAgICAgICB1c2VyLCBzaW5jZSBpdCdzIG5vdCB0YWxraW5nIGFib3V0IHRoZWlyIHRlc3QgYnV0IGluc3RlYWQgdGFsa2luZyBhYm91dCB0aGVcbiAgICAgICBwcHhfaW5saW5lX3Rlc3QgbWFjaGluZXJ5LlxuXG4gICAgICAgV2UgYWxzbyBhdm9pZCBpbnNlcnRpbmcgYW55IGNvZGUgYmV0d2VlbiB0aGUgW2ZdIHRoYXQgY29tZXMgZnJvbSB0aGUgdXNlcidzIGZpbGVcbiAgICAgICBhbmQgZ3JhYmJpbmcgdGhlIGJhY2t0cmFjZSBmcm9tIGl0cyBleGNlcHRpb25zIChubyB3cmFwcGluZyBvZiBbZl0gd2l0aCBoaWdoIG9yZGVyXG4gICAgICAgZnVuY3Rpb25zIGxpa2UgRXhuLnByb3RlY3QsIG9yIChmdW4gKCkgLT4gZiAoKTsgdHJ1ZSkpLiAqKVxuICAgIHRyeSBPayAoZiAoKSlcbiAgICB3aXRoIGV4biAtPiBFcnJvciAoZXhuLCBQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICBpblxuICB0aW1lX3NlYyA6PSBCYXNlLkludDYzLih3YWxsX3RpbWVfY2xvY2tfbnMgKCkgLSBiZWZvcmVfbnMgfD4gdG9fZmxvYXQpICAvLiAxZTk7XG4gIHJlc1xuXG5cbmxldCBzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSA9IGxhenkgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBbfCAxMDA7IDIwMDsgMzAwIHxdKVxubGV0IHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlID0gbGF6eSAoQmFzZS5SYW5kb20uU3RhdGUubWFrZSBbfCAxMTE7IDIyMjsgMzMzIHxdKVxuXG5sZXQgdGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgY2FtbF9yYW5kb21fc3RhdGUgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICBsZXQgYmFzZV9yYW5kb21fc3RhdGUgPSBCYXNlLlJhbmRvbS5TdGF0ZS5jb3B5IEJhc2UuUmFuZG9tLlN0YXRlLmRlZmF1bHQgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUpO1xuICBCYXNlLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUpO1xuICBsZXQgcmVzdWx0ID0gdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZiBpblxuICBTdGRsaWIuUmFuZG9tLnNldF9zdGF0ZSBjYW1sX3JhbmRvbV9zdGF0ZTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIGJhc2VfcmFuZG9tX3N0YXRlO1xuICByZXN1bHRcblxubGV0IHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkgPVxuICBTdHJpbmcuY29uY2F0IFwiXCIgKFxuICAgIExpc3QubWFwIChmdW4gcyAtPiBcIiAgaW4gVEVTXCIgXiBcIlRfTU9EVUxFIGF0IFwiIF4gU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBzIF4gXCJcXG5cIilcbiAgICAgIChNb2R1bGVfY29udGV4dC5jdXJyZW50X2Rlc2NyICgpKVxuICApXG5cbmxldCBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIGwgPVxuICBMaXN0LmV4aXN0cyAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCB1c2VkKSAtPlxuICAgIGxldCBwb3NpdGlvbl9zdGFydCA9XG4gICAgICBTdHJpbmcubGVuZ3RoIGRlZl9maWxlbmFtZSAtIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBsZXQgZm91bmQgPVxuICAgICAgcG9zaXRpb25fc3RhcnQgPj0gMCAmJlxuICAgICAgbGV0IGVuZF9vZl9kZWZfZmlsZW5hbWUgPVxuICAgICAgICBTdHJpbmcuc3ViIGRlZl9maWxlbmFtZVxuICAgICAgICAgIHBvc2l0aW9uX3N0YXJ0XG4gICAgICAgICAgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpIGluXG4gICAgICBlbmRfb2ZfZGVmX2ZpbGVuYW1lID0gZmlsZW5hbWVcbiAgICAgICYmIChwb3NpdGlvbl9zdGFydCA9IDAgfHwgZGVmX2ZpbGVuYW1lLltwb3NpdGlvbl9zdGFydCAtIDFdID0gJy8nKVxuICAgICAgJiYgKG1hdGNoIGxpbmVfbnVtYmVyX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBsaW5lX251bWJlciAtPiBkZWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlcilcbiAgICBpblxuICAgIGlmIGZvdW5kIHRoZW4gdXNlZCA6PSB0cnVlO1xuICAgIGZvdW5kXG4gICkgbFxuXG5sZXQgbmFtZV9maWx0ZXJfbWF0Y2ggfm5hbWVfZmlsdGVyIGRlc2NyID1cbiAgbWF0Y2ggbmFtZV9maWx0ZXIgd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT5cbiAgICBMaXN0LmV4aXN0cyAoZnVuIHN1YnN0cmluZyAtPiBCYXNlLlN0cmluZy5pc19zdWJzdHJpbmcgfnN1YnN0cmluZyBkZXNjcikgbmFtZV9maWx0ZXJcblxubGV0IHByaW50X2RlbGF5ZWRfZXJyb3JzICgpID1cbiAgbWF0Y2ggTGlzdC5yZXYgIWRlbGF5ZWRfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IF8gOjogXyBhcyBkZWxheWVkX2Vycm9ycyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiXFxuJXNcXG4lIVwiIChTdHJpbmcubWFrZSA3MCAnPScpO1xuICAgIExpc3QuaXRlciAoZnVuIG1lc3NhZ2UgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIG1lc3NhZ2VcbiAgICApIGRlbGF5ZWRfZXJyb3JzXG5cbmxldCBlcHJpbnRmX29yX2RlbGF5IGZtdCA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIHMgLT5cbiAgICBpZiAhdmVyYm9zZSB0aGVuIGRlbGF5ZWRfZXJyb3JzIDo9IHMgOjogIWRlbGF5ZWRfZXJyb3JzXG4gICAgZWxzZSBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzO1xuICAgIGlmICFzdG9wX29uX2Vycm9yIHRoZW4gYmVnaW5cbiAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgZXhpdCAyXG4gICAgZW5kXG4gICkgZm10XG5cbmxldCBhZGRfaG9va3MgKChtb2R1bGUgQykgOiBjb25maWcpIGYgPVxuICBmdW4gKCkgLT4gQy5wcmVfdGVzdF9ob29rICgpOyBmICgpXG5cbmxldCBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSA9XG4gIGxldCBvcGVuIEJhc2UgaW5cbiAgYmFja3RyYWNlXG4gIHw+IFN0cmluZy5zcGxpdF9saW5lc1xuICB8PiBMaXN0LnRha2Vfd2hpbGUgfmY6KGZ1biBzdHIgLT5cbiAgICBub3QgKFN0cmluZy5TZWFyY2hfcGF0dGVybi5tYXRjaGVzIChmb3JjZSB3aGVyZV90b19jdXRfYmFja3RyYWNlKSBzdHIpKVxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIgXiBcIlxcblwiKVxuICB8PiBTdHJpbmcuY29uY2F0XG5cbmxldFtAaW5saW5lIG5ldmVyXSB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZTpkZWZfZmlsZW5hbWUgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIGJvb2xfb2ZfZiA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSB7IGxpYm5hbWU7IG9ubHlfdGVzdF9sb2NhdGlvbjsgd2hpY2hfdGFnczsgbmFtZV9maWx0ZXIgfTsgd2hhdF90b19kbyB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgPSBsYXp5IChkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcykgaW5cbiAgICBsZXQgY29tcGxldGVfdGFncyA9IHRhZ3MgQCBNb2R1bGVfY29udGV4dC5jdXJyZW50X3RhZ3MgKCkgaW5cbiAgICBsZXQgc2hvdWxkX3J1biA9XG4gICAgICBTb21lIGxpYm5hbWUgPSAhZHluYW1pY19saWJcbiAgICAgICYmIGJlZ2luIG1hdGNoIG9ubHlfdGVzdF9sb2NhdGlvbiB3aXRoXG4gICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICB8IF8gOjogXyAtPiBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIG9ubHlfdGVzdF9sb2NhdGlvblxuICAgICAgZW5kXG4gICAgICAmJiBub3QgKFRhZ19wcmVkaWNhdGUuZGlzYWJsZWQgd2hpY2hfdGFncyB+Y29tcGxldGVfdGFncylcbiAgICAgICYmIG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciAoTGF6eS5mb3JjZSBkZXNjcilcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW4gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgLT4gUGFydGl0aW9uLmZvdW5kX3Rlc3QgKClcbiAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gcGFydGl0aW9uIC0+XG4gICAgICAgIGlmIFBhcnRpdGlvbi5pc19jdXJyZW50IHBhcnRpdGlvbiB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IGRlc2NyID0gTGF6eS5mb3JjZSBkZXNjciBpblxuICAgICAgICAgIGluY3IgdGVzdHNfcmFuO1xuICAgICAgICAgIGJlZ2luIG1hdGNoICFsb2cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBjaCAtPiBQcmludGYuZnByaW50ZiBjaCBcIiVzXFxuJXNcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBiZWdpblxuICAgICAgICAgICAgUHJpbnRmLnByaW50ZiBcIiVzJSFcIiBkZXNjclxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGlmICFsaXN0X3Rlc3RfbmFtZXNcbiAgICAgICAgICAgIHRoZW4gT2sgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBTZWUgW3RpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXSBmb3Igd2h5IHdlIHVzZSBbYm9vbF9vZl9mXVxuICAgICAgICAgICAgICAgICByYXRoZXIgaGF2ZSB0aGUgY2FsbGVyIHdyYXAgW2ZdIHRvIGFkanVzdCBpdHMgcmV0dXJuIHZhbHVlLiAqKVxuICAgICAgICAgICAgICBSZXN1bHQubWFwIGJvb2xfb2ZfZiAodGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBJZiAhbGlzdF90ZXN0X25hbWVzLCB0aGlzIGlzIGlzIGEgaGFybWxlc3MgemVyby4gKilcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIgKCUuM2Ygc2VjKVxcbiUhXCIgIXRpbWVfc2VjO1xuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayB0cnVlIC0+ICgpXG4gICAgICAgICAgfCBPayBmYWxzZSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgaXMgZmFsc2UuXFxuJXNcXG4lIVwiIGRlc2NyXG4gICAgICAgICAgICAgIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgaW5cbiAgICAgICAgICAgIGxldCBleG5fc3RyID0gU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biBpblxuICAgICAgICAgICAgbGV0IHNlcCA9IGlmIFN0cmluZy5jb250YWlucyBleG5fc3RyICdcXG4nIHRoZW4gXCJcXG5cIiBlbHNlIFwiIFwiIGluXG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgdGhyZXclcyVzLlxcbiVzJXNcXG4lIVwiIGRlc2NyIHNlcCBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZSAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgZW5kXG4gICAgZW5kXG5cbmxldCBzZXRfbGliX2FuZF9wYXJ0aXRpb24gc3RhdGljX2xpYiBwYXJ0aXRpb24gPVxuICBtYXRjaCAhZHluYW1pY19saWIgd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICgqIHBvc3NpYmxlIGlmIHRoZSBpbnRlcmZhY2UgaXMgdXNlZCBleHBsaWNpdGx5IG9yIGlmIHdlIGhhcHBlbiB0byBkeW5saW5rIHNvbWV0aGluZ1xuICAgICAgIHRoYXQgY29udGFpbiB0ZXN0cyAqKVxuICAgICgpXG4gIHwgTm9uZSAtPlxuICAgIGR5bmFtaWNfbGliIDo9IFNvbWUgc3RhdGljX2xpYjtcbiAgICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgICB8IGBJZ25vcmUgLT4gKClcbiAgICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0czsgd2hhdF90b19kbyB9IC0+XG4gICAgICBpZiB3aGljaF90ZXN0cy5saWJuYW1lID0gc3RhdGljX2xpYiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByZXF1aXJlc19wYXJ0aXRpb24gPVxuICAgICAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgICAgIHwgYExpc3RfcGFydGl0aW9ucyB8IGBSdW5fcGFydGl0aW9uIChTb21lIF8pIC0+IHRydWVcbiAgICAgICAgICB8IGBSdW5fcGFydGl0aW9uIE5vbmUgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgaWYgcGFydGl0aW9uID0gXCJcIiAmJiByZXF1aXJlc19wYXJ0aXRpb25cbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcInBweF9pbmxpbmVfdGVzdDogY2Fubm90IHVzZSAtbGlzdC1wYXJ0aXRpb24gb3IgLXBhcnRpdGlvbiBcXFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHNwZWNpZnlpbmcgYSBwYXJ0aXRpb24gYXQgcHJlcHJvY2Vzc2luZyB0aW1lXCJcbiAgICAgICAgZWxzZSBQYXJ0aXRpb24uc2V0X2N1cnJlbnQgcGFydGl0aW9uXG4gICAgICBlbmRcblxubGV0IHVuc2V0X2xpYiBzdGF0aWNfbGliID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKCogbm90IGdpdmluZyBhbiBlcnJvciwgYmVjYXVzZSB3aGVuIHNvbWUgYW5ub3lpbmcgcGVvcGxlIHB1dCBwYV9vdW5pdCBpbiB0aGVpciBsaXN0XG4gICAgICAgb2YgcHJlcHJvY2Vzc29ycywgcGFfb3VuaXQgaXMgc2V0IHVwIHR3aWNlIGFuZCB3ZSBoYXZlIHR3byBjYWxscyB0byB1bnNldF9saWIgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBmaWxlLCBhbmQgdGhlIHNlY29uZCBvbmUgY29tZXMgaW4gdGhpcyBicmFuY2ggKilcbiAgICAoKVxuICB8IFNvbWUgbGliIC0+XG4gICAgaWYgbGliID0gc3RhdGljX2xpYiB0aGVuIGR5bmFtaWNfbGliIDo9IE5vbmVcblxubGV0IHRlc3QgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3Bvc1xuICAgIGYgKGZ1biBiIC0+IGIpXG5cbmxldCB0ZXN0X3VuaXQgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3Bvc1xuICAgIGYgKGZ1biAoKSAtPiB0cnVlKVxuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9tb2R1bGUgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lOmRlZl9maWxlbmFtZSB+bGluZV9udW1iZXI6ZGVmX2xpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSBfOyBuYW1lX2ZpbHRlciA9IF87IHdoaWNoX3RhZ3MgfTsgd2hhdF90b19kbyB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgKCkgPSBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcyBpblxuICAgIGxldCBwYXJ0aWFsX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAoKiBJZiwgbm8gbWF0dGVyIHdoYXQgdGFncyBhIHRlc3QgZGVmaW5lcywgd2UgY2VydGFpbmx5IHdpbGwgZHJvcCBhbGwgdGVzdHMgd2l0aGluXG4gICAgICAgICB0aGlzIG1vZHVsZSwgdGhlbiBkb24ndCBydW4gdGhlIG1vZHVsZSBhdCBhbGwuIFRoaXMgbWVhbnMgcGVvcGxlIGNhbiB3cml0ZVxuICAgICAgICAgdGhpbmdzIGxpa2UgdGhlIGZvbGxvd2luZyB3aXRob3V0IGJyZWFraW5nIHRoZSAzMi1iaXQgYnVpbGQ6XG4gICAgICAgICBsZXQldGVzdF9tb2R1bGUgW0B0YWdzIFwiNjQtYml0cy1vbmx5XCJdID0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgIGxldCBpID0gSW50NjQudG9faW50X2V4biAuLi4uXG4gICAgICAgICBlbmQpXG4gICAgICAgICBXZSBkb24ndCBzaG9ydGN1dCBiYXNlZCBvbiBwb3NpdGlvbiwgYXMgd2UgY2FuJ3QgdGVsbCB3aGF0IHBvc2l0aW9ucyB0aGVcbiAgICAgICAgIGlubmVyIHRlc3RzIHdpbGwgaGF2ZS4gKilcbiAgICAgICYmIG5vdCAoVGFnX3ByZWRpY2F0ZS5lbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHdoaWNoX3RhZ3MgfnBhcnRpYWxfdGFncylcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW4gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgLT4gUGFydGl0aW9uLmZvdW5kX3Rlc3QgKClcbiAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gcGFydGl0aW9uIC0+XG4gICAgICAgIGlmIFBhcnRpdGlvbi5pc19jdXJyZW50IHBhcnRpdGlvbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgICAgIGxldCBkZXNjciA9IGRlc2NyICgpIGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1vZHVsZV9jb250ZXh0LndpdGhfIH5kZXNjciB+dGFncyAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICgqIFdlIGRvIG5vdCByZXNldCByYW5kb20gc3RhdGVzIHVwb24gZW50ZXJpbmcgW2xldCV0ZXN0X21vZHVsZV0uXG5cbiAgICAgICAgICAgICAgICAgQ29uOiBDb2RlIGluIHRlc3QgbW9kdWxlcyBjYW4gYWNjaWRlbnRhbGx5IGRlcGVuZCBvbiB0b3AtbGV2ZWwgcmFuZG9tXG4gICAgICAgICAgICAgICAgIHN0YXRlIGVmZmVjdHMuXG5cbiAgICAgICAgICAgICAgICAgUHJvczogKDEpIFdlIGRvbid0IHJlc2V0IHRvIHRoZSBzYW1lIHNlZWQgb24gZW50ZXJpbmcgYSBbbGV0JXRlc3RfbW9kdWxlXVxuICAgICAgICAgICAgICAgICBhbmQgdGhlbiBhIFtsZXQldGVzdF0gaW5zaWRlIHRoYXQgbW9kdWxlLCB3aGljaCBjb3VsZCBsZWFkIHRvXG4gICAgICAgICAgICAgICAgIGFjY2lkZW50YWxseSByYW5kb21seSBnZW5lcmF0aW5nIHRoZSBzYW1lIHZhbHVlcyBpbiBzb21lIHRlc3QuICgyKSBNb3ZpbmdcbiAgICAgICAgICAgICAgICAgY29kZSBpbnRvIGFuZCBvdXQgb2YgW2xldCV0ZXN0X21vZHVsZV0gZG9lcyBub3QgY2hhbmdlIGl0cyByYW5kb20gc2VlZC5cbiAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSAoXCJURVNcIiBeXiBcIlRfTU9EVUxFIGF0ICVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIilcbiAgICAgICAgICAgICAgKFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZGVzY3IpIHNlcCBleG5fc3RyIGJhY2t0cmFjZSAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgZW5kXG4gICAgZW5kXG5cbmxldCBzdW1tYXJpemUgKCkgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+XG4gICAgaWYgU3lzLmFyZ3YgPD4gW3x8XSAmJiBGaWxlbmFtZS5iYXNlbmFtZSBTeXMuYXJndi4oMCkgPSBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlXCIgdGhlblxuICAgICAgUHJpbnRmLmVwcmludGYgXCJpbmxpbmVfdGVzdHNfcnVubmVyLmV4ZSBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgcnVuIGJ5IGhhbmQsIHlvdSBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBydW4gdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IGluc3RlYWQuXFxuJSFcIlxuICAgIGVsc2VcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiWW91IGFyZSBkb2luZyBzb21ldGhpbmcgdW5leHBlY3RlZCB3aXRoIHRoZSB0ZXN0cy4gTm8gdGVzdHMgaGF2ZSBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIGJlZW4gcnVuLiBZb3Ugc2hvdWxkIHVzZSB0aGUgaW5saW5lX3Rlc3RzX3J1bm5lciBzY3JpcHQgdG8gcnVuIFxcblxcXG4gICAgICAgICAgICAgICAgICAgICAgdGVzdHMuXFxuJSFcIjtcbiAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IF87IHdoYXRfdG9fZG8gPSBgTGlzdF9wYXJ0aXRpb25zIH0gLT5cbiAgICBMaXN0Lml0ZXIgKFByaW50Zi5wcmludGYgXCIlc1xcblwiKSAoUGFydGl0aW9uLmFsbCAoKSk7XG4gICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICB8IGBUZXN0X21vZGUgeyB3aGF0X3RvX2RvID0gYFJ1bl9wYXJ0aXRpb24gXzsgd2hpY2hfdGVzdHMgfSAtPiBiZWdpblxuICAgICAgYmVnaW4gbWF0Y2ggIWxvZyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjaCAtPiBjbG9zZV9vdXQgY2hcbiAgICAgIGVuZDtcbiAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgbWF0Y2ggIXRlc3RzX2ZhaWxlZCwgIXRlc3RfbW9kdWxlc19mYWlsZWQgd2l0aFxuICAgICAgfCAwLCAwIC0+IGJlZ2luXG4gICAgICAgICAgaWYgIXNob3dfY291bnRzIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJWQgdGVzdHMgcmFuLCAlZCB0ZXN0X21vZHVsZXMgcmFuXFxuJSFcIiAhdGVzdHNfcmFuICF0ZXN0X21vZHVsZXNfcmFuXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgbGV0IHVudXNlZF90ZXN0cyA9XG4gICAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gKF8sIF8sIHVzZWQpIC0+IG5vdCAhdXNlZCkgd2hpY2hfdGVzdHMub25seV90ZXN0X2xvY2F0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggdW51c2VkX3Rlc3RzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgfCBfIDo6IF8gLT4gU29tZSB1bnVzZWRfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGVycm9ycyB3aXRoXG4gICAgICAgICAgfCBTb21lIHRlc3RzIC0+XG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcInBweF9pbmxpbmVfdGVzdCBlcnJvcjogdGhlIGZvbGxvd2luZyAtb25seS10ZXN0IGZsYWdzIG1hdGNoZWQgbm90aGluZzpcIjtcbiAgICAgICAgICAgIExpc3QuaXRlciAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCBfKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUHJpbnRmLmVwcmludGYgXCIgJXNcIiBmaWxlbmFtZVxuICAgICAgICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gUHJpbnRmLmVwcmludGYgXCIgJXM6JWRcIiBmaWxlbmFtZSBsaW5lX251bWJlclxuICAgICAgICAgICAgKSB0ZXN0cztcbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiLlxcbiUhXCI7XG4gICAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgaWYgIXRlc3RzX3JhbiA9IDAgJiYgIXN0cmljdCB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiBubyB0ZXN0cyBoYXZlIGJlZW4gcnVuLlxcbiUhXCI7XG4gICAgICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yXG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBUZXN0X3Jlc3VsdC5TdWNjZXNzXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGNvdW50LCBjb3VudF90ZXN0X21vZHVsZXMgLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGQUlMRUQgJWQgLyAlZCB0ZXN0cyVzXFxuJSFcIiBjb3VudCAhdGVzdHNfcmFuXG4gICAgICAgICAgKGlmIGNvdW50X3Rlc3RfbW9kdWxlcyA9IDAgdGhlbiBcIlwiIGVsc2UgUHJpbnRmLnNwcmludGYgKFwiLCAlZCBURVNcIiBeXiBcIlRfTU9EVUxFU1wiKSBjb3VudF90ZXN0X21vZHVsZXMpO1xuICAgICAgICBUZXN0X3Jlc3VsdC5GYWlsdXJlXG4gICAgZW5kXG5cbmxldCB1c2VfY29sb3IgPSAhdXNlX2NvbG9yXG5sZXQgaW5fcGxhY2UgID0gIWluX3BsYWNlXG5sZXQgZGlmZl9jb21tYW5kID0gIWRpZmZfY29tbWFuZFxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSAhc291cmNlX3RyZWVfcm9vdFxubGV0IGFsbG93X291dHB1dF9wYXR0ZXJucyA9ICFhbGxvd19vdXRwdXRfcGF0dGVybnNcblxubGV0IGV2YWx1YXRvcnMgPSByZWYgW3N1bW1hcml6ZV1cbmxldCBhZGRfZXZhbHVhdG9yIH5mID0gZXZhbHVhdG9ycyA6PSBmIDo6ICFldmFsdWF0b3JzXG5sZXQgZXhpdCAoKSA9XG4gIExpc3QubWFwIChmdW4gZiAtPiBmICgpKSAoTGlzdC5yZXYgIWV2YWx1YXRvcnMpXG4gIHw+IFRlc3RfcmVzdWx0LmNvbWJpbmVfYWxsXG4gIHw+IFRlc3RfcmVzdWx0LnRvX2V4aXRfY29kZVxuICB8PiBleGl0XG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9IENhbWwuaW5fY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IENhbWwuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBDYW1sLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBDYW1sLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZGluID0gQ2FtbC5zdGRpblxuXG5sZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICBsZXQgZmxhZ3MgPSBpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gIENhbWwub3Blbl9pbl9nZW4gZmxhZ3MgMG8wMDAgZmlsZVxuOztcblxubGV0IGNsb3NlID0gQ2FtbC5jbG9zZV9pblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGUgfmYgPSBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5IGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG5cbmxldCBtYXlfZW9mIGYgPVxuICB0cnkgU29tZSAoZiAoKSkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IE5vbmVcbjs7XG5cbmxldCBpbnB1dCB0IH5idWYgfnBvcyB+bGVuID0gQ2FtbC5pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgcmVhbGx5X2lucHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5yZWFsbHlfaW5wdXQgdCBidWYgcG9zIGxlbilcbmxldCByZWFsbHlfaW5wdXRfZXhuIHQgfmJ1ZiB+cG9zIH5sZW4gPSBDYW1sLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgaW5wdXRfYnl0ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfYnl0ZSB0KVxubGV0IGlucHV0X2NoYXIgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLmlucHV0X2NoYXIgdClcbmxldCBpbnB1dF9iaW5hcnlfaW50IHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5pbnB1dF9iaW5hcnlfaW50IHQpXG5sZXQgdW5zYWZlX2lucHV0X3ZhbHVlIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5pbnB1dF92YWx1ZSB0KVxubGV0IGlucHV0X2J1ZmZlciB0IGJ1ZiB+bGVuID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuQnVmZmVyLmFkZF9jaGFubmVsIGJ1ZiB0IGxlbilcbmxldCBzZXRfYmluYXJ5X21vZGUgPSBDYW1sLnNldF9iaW5hcnlfbW9kZV9pblxuXG5sZXQgaW5wdXRfYWxsIHQgPVxuICAoKiBXZSB1c2UgNjU1MzYgYmVjYXVzZSB0aGF0IGlzIHRoZSBzaXplIG9mIE9DYW1sJ3MgSU8gYnVmZmVycy4gKilcbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpblxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBjaHVua19zaXplIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgQ2FtbC5CdWZmZXIuYWRkX2NoYW5uZWwgYnVmZmVyIHQgY2h1bmtfc2l6ZTtcbiAgICBsb29wICgpXG4gIGluXG4gIHRyeSBsb29wICgpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBCdWZmZXIuY29udGVudHMgYnVmZmVyXG47O1xuXG5sZXQgdHJpbSB+Zml4X3dpbl9lb2wgbGluZSA9XG4gIGlmIGZpeF93aW5fZW9sXG4gIHRoZW4gKFxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGxpbmUgaW5cbiAgICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgKFN0cmluZy5nZXQgbGluZSAobGVuIC0gMSkpICdcXHInXG4gICAgdGhlbiBTdHJpbmcuc3ViIGxpbmUgfnBvczowIH5sZW46KGxlbiAtIDEpXG4gICAgZWxzZSBsaW5lKVxuICBlbHNlIGxpbmVcbjs7XG5cbmxldCBpbnB1dF9saW5lID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbWF0Y2ggbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfbGluZSB0KSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBsaW5lIC0+IFNvbWUgKHRyaW0gfmZpeF93aW5fZW9sIGxpbmUpXG47O1xuXG5sZXQgaW5wdXRfbGluZV9leG4gPyhmaXhfd2luX2VvbCA9IHRydWUpIHQgPVxuICBsZXQgbGluZSA9IENhbWwuaW5wdXRfbGluZSB0IGluXG4gIHRyaW0gfmZpeF93aW5fZW9sIGxpbmVcbjs7XG5cbmxldCBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIGFjID1cbiAgICBtYXRjaCBpbnB1dF9saW5lID9maXhfd2luX2VvbCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNcbiAgICB8IFNvbWUgbGluZSAtPiBsb29wIChmIGFjIGxpbmUpXG4gIGluXG4gIGxvb3AgaW5pdFxuOztcblxubGV0IGlucHV0X2xpbmVzID9maXhfd2luX2VvbCB0ID1cbiAgTGlzdC5yZXYgKGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQ6W10gfmY6KGZ1biBsaW5lcyBsaW5lIC0+IGxpbmUgOjogbGluZXMpKVxuOztcblxubGV0IGl0ZXJfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmYgPVxuICBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OigpIH5mOihmdW4gKCkgbGluZSAtPiBmIGxpbmUpXG47O1xuXG5sZXQgcmVhZF9saW5lcyA/Zml4X3dpbl9lb2wgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6KGlucHV0X2xpbmVzID9maXhfd2luX2VvbClcbmxldCByZWFkX2FsbCBmbmFtZSA9IHdpdGhfZmlsZSBmbmFtZSB+ZjppbnB1dF9hbGxcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gQ2FtbC5vdXRfY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IENhbWwuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gQ2FtbC5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IENhbWwuTGFyZ2VGaWxlLm91dF9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZG91dCA9IENhbWwuc3Rkb3V0XG5sZXQgc3RkZXJyID0gQ2FtbC5zdGRlcnJcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgaWYgcGh5c19lcXVhbCB0IHN0ZGVyclxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRlcnI+XCJcbiAgZWxzZSBpZiBwaHlzX2VxdWFsIHQgc3Rkb3V0XG4gIHRoZW4gU2V4cC5BdG9tIFwiPHN0ZG91dD5cIlxuICBlbHNlIFNleHAuQXRvbSBcIjxPdXRfY2hhbm5lbC50PlwiXG47O1xuXG50eXBlICdhIHdpdGhfY3JlYXRlX2FyZ3MgPVxuICA/YmluYXJ5OmJvb2wgLT4gP2FwcGVuZDpib29sIC0+ID9mYWlsX2lmX2V4aXN0czpib29sIC0+ID9wZXJtOmludCAtPiAnYVxuXG5sZXQgY3JlYXRlXG4gICAgICA/KGJpbmFyeSA9IHRydWUpXG4gICAgICA/KGFwcGVuZCA9IGZhbHNlKVxuICAgICAgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpXG4gICAgICBmaWxlXG4gID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICBDYW1sLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcbjs7XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBDYW1sLnNldF9iaW5hcnlfbW9kZV9vdXRcbmxldCBmbHVzaCA9IENhbWwuZmx1c2hcbmxldCBjbG9zZSA9IENhbWwuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9fZXJyID0gQ2FtbC5jbG9zZV9vdXRfbm9lcnJcbmxldCBvdXRwdXQgdCB+YnVmIH5wb3MgfmxlbiA9IENhbWwub3V0cHV0IHQgYnVmIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIHQgfmJ1ZiB+cG9zIH5sZW4gPSBDYW1sLm91dHB1dF9zdWJzdHJpbmcgdCBidWYgcG9zIGxlblxubGV0IG91dHB1dF9zdHJpbmcgPSBDYW1sLm91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBDYW1sLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dF9jaGFyID0gQ2FtbC5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gQ2FtbC5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9iaW5hcnlfaW50ID0gQ2FtbC5vdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF9idWZmZXIgPSBDYW1sLkJ1ZmZlci5vdXRwdXRfYnVmZmVyXG5sZXQgb3V0cHV0X3ZhbHVlID0gQ2FtbC5vdXRwdXRfdmFsdWVcbmxldCBuZXdsaW5lIHQgPSBvdXRwdXRfc3RyaW5nIHQgXCJcXG5cIlxuXG5sZXQgb3V0cHV0X2xpbmVzIHQgbGluZXMgPVxuICBMaXN0Lml0ZXIgbGluZXMgfmY6KGZ1biBsaW5lIC0+XG4gICAgb3V0cHV0X3N0cmluZyB0IGxpbmU7XG4gICAgbmV3bGluZSB0KVxuOztcblxubGV0IHByaW50ZiA9IENhbWwuUHJpbnRmLnByaW50ZlxubGV0IGVwcmludGYgPSBDYW1sLlByaW50Zi5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IENhbWwuUHJpbnRmLmZwcmludGZcbmxldCBrZnByaW50ZiA9IENhbWwuUHJpbnRmLmtmcHJpbnRmXG5sZXQgcHJpbnRfc3RyaW5nID0gQ2FtbC5wcmludF9zdHJpbmdcbmxldCBwcmludF9lbmRsaW5lID0gQ2FtbC5wcmludF9lbmRsaW5lXG5sZXQgcHJlcnJfZW5kbGluZSA9IENhbWwucHJlcnJfZW5kbGluZVxuXG5sZXQgcHJpbnRfcyA/bWFjaCBzZXhwID1cbiAgcHJpbnRfZW5kbGluZVxuICAgIChtYXRjaCBtYWNoIHdpdGhcbiAgICAgfCBTb21lICgpIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cFxuICAgICB8IE5vbmUgLT4gU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG47O1xuXG5sZXQgZXByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByZXJyX2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG47O1xuXG5sZXQgd3JpdGVfbGluZXMgZmlsZSBsaW5lcyA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfbGluZXMgdCBsaW5lcylcbmxldCB3cml0ZV9hbGwgZmlsZSB+ZGF0YSA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbiIsIm9wZW4hIEJhc2Vcbm1vZHVsZSBHYyA9IFN0ZGxpYi5HY1xuXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5cbmxldCBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgPSBcIlBQWF9NT0RVTEVfVElNRVJcIlxuXG5sZXQgZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKSA9XG4gICgqIGF2b2lkIFN0ZGxpYi5TeXMuZ2V0ZW52X29wdCB0byBwcmVzZXJ2ZSA0LjA0LnggY29tcGF0aWJpbGl0eSAqKVxuICBtYXRjaCBTdGRsaWIuU3lzLmdldGVudiBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgd2l0aFxuICB8IHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgYW1fcmVjb3JkaW5nX3ZhbHVlID0gZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKVxubGV0IGFtX3JlY29yZGluZyA9IE9wdGlvbi5pc19zb21lIGFtX3JlY29yZGluZ192YWx1ZVxuXG5tb2R1bGUgRHVyYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudFxuXG4gIGxldCB0b19uYW5vc2Vjb25kcyB0ID0gdFxuICBsZXQgb2ZfbmFub3NlY29uZHMgdCA9IHRcblxuICBtb2R1bGUgdHlwZSBGb3JtYXQgPSBzaWdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IDogdCBsaXN0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA9IHN0cnVjdFxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeDpcIm5zXCIgfD4gSW50NjMub2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyBuYW5vcyA9IEludDYzLnRvX3N0cmluZyBuYW5vcyBeIFwibnNcIlxuICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6dG9fc3RyaW5nXG4gIGVuZFxuXG4gIGxldCBmb3JtYXQgPSByZWYgKG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA6IEZvcm1hdClcblxuICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQub2Zfc3RyaW5nIHN0cmluZ1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nID1cbiAgICBsZXQgKG1vZHVsZSBGb3JtYXQpID0gIWZvcm1hdCBpblxuICAgIEZvcm1hdC50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nXG4gIDs7XG5lbmRcblxubW9kdWxlIEdjX2V2ZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltaW5nX2V2ZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBkZXNjcmlwdGlvbiA6IHN0cmluZ1xuICAgIDsgcnVudGltZSA6IER1cmF0aW9uLnRcbiAgICA7IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50XG4gICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA6IHQgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA6IER1cmF0aW9uLnRcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgOiBHYy5zdGF0XG4gICAgOyBtdXRhYmxlIG5lc3RlZF90aW1lciA6IHQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDogVGltaW5nX2V2ZW50LnQgbGlzdFxuICAgIH1cblxuICBsZXQgY3JlYXRlID9uZXN0ZWRfdGltZXIgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPSBcIlwiXG4gICAgOyBjdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lID0gSW50NjMuemVyb1xuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPSBHYy5xdWlja19zdGF0ICgpXG4gICAgOyBuZXN0ZWRfdGltZXJcbiAgICA7IHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyID0gW11cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgPVxuICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPC0gXCJcIjtcbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gSW50NjMuemVybztcbiAgICBtYXRjaCB0Lm5lc3RlZF90aW1lciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5lc3RlZCAtPiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgPC0gW11cbiAgOztcblxuICBsZXQgcmVjb3JkX3N0YXJ0IHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChTdHJpbmcuaXNfZW1wdHkgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbik7XG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIGRlc2NyaXB0aW9uO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA8LSBHYy5xdWlja19zdGF0ICgpO1xuICAgICAgKCogY2FsbCBbVGltZV9ub3ddIGFzIGxhdGUgYXMgcG9zc2libGUgYmVmb3JlIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSlcbiAgOztcblxuICBsZXQgcmVjb3JkX3VudGlsIHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogY29tcHV0ZSBbVGltZV9ub3ddIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgcnVubmluZyB0aGUgbW9kdWxlIGJvZHkgKilcbiAgICAgIGxldCB1bnRpbCA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgaW5cbiAgICAgIGxldCBzdGFydCA9IHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2FmdGVyID0gR2MucXVpY2tfc3RhdCAoKSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2JlZm9yZSA9IHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgaW5cbiAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAtICkgdW50aWwgc3RhcnQgaW5cbiAgICAgIGFzc2VydCAoU3RyaW5nLmVxdWFsIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gZGVzY3JpcHRpb24pO1xuICAgICAgbGV0IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50ID1cbiAgICAgICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgICAgIGdjX3N0YXRzX2FmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgICAgIDsgY29tcGFjdGlvbnMgPSBnY19zdGF0c19hZnRlci5jb21wYWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5jb21wYWN0aW9uc1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIG5lc3RlZCAtPiBMaXN0LnJldiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXJcbiAgICAgIGluXG4gICAgICBsZXQgdGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQgPVxuICAgICAgICB7IGRlc2NyaXB0aW9uOyBydW50aW1lOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH1cbiAgICAgIGluXG4gICAgICB0LnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICA8LSB0aW1pbmdfZXZlbnQgOjogdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcjtcbiAgICAgIHJlc2V0IHQpXG4gIDs7XG5lbmRcblxubGV0IGRlZmluaXRpb25fdGltZXIgPSBUaW1lci5jcmVhdGUgKClcbmxldCBtb2R1bGVfdGltZXIgPSBUaW1lci5jcmVhdGUgfm5lc3RlZF90aW1lcjpkZWZpbml0aW9uX3RpbWVyICgpXG5sZXQgcmVjb3JkX3N0YXJ0IG1vZHVsZV9uYW1lID0gVGltZXIucmVjb3JkX3N0YXJ0IG1vZHVsZV90aW1lciBtb2R1bGVfbmFtZVxubGV0IHJlY29yZF91bnRpbCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF91bnRpbCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfZGVmaW5pdGlvbl9zdGFydCBsb2MgPSBUaW1lci5yZWNvcmRfc3RhcnQgZGVmaW5pdGlvbl90aW1lciBsb2NcbmxldCByZWNvcmRfZGVmaW5pdGlvbl91bnRpbCBsb2MgPSBUaW1lci5yZWNvcmRfdW50aWwgZGVmaW5pdGlvbl90aW1lciBsb2NcblxubGV0IGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nXG4gICAgICAoeyBtaW5vcl9jb2xsZWN0aW9uczsgbWFqb3JfY29sbGVjdGlvbnM7IGNvbXBhY3Rpb25zIH0gOiBHY19ldmVudHMudClcbiAgPVxuICBsZXQgdG9fbGlzdCBkZXNjcmlwdGlvbiBjb3VudCA9XG4gICAgaWYgY291bnQgPSAwIHRoZW4gW10gZWxzZSBbIEludC50b19zdHJpbmcgY291bnQgXiBcIiBcIiBeIGRlc2NyaXB0aW9uIF1cbiAgaW5cbiAgbGV0IHN0cmluZ3MgPVxuICAgIHRvX2xpc3QgXCJtaW5vciBjb2xsZWN0aW9uc1wiIG1pbm9yX2NvbGxlY3Rpb25zXG4gICAgQCB0b19saXN0IFwibWFqb3IgY29sbGVjdGlvbnNcIiBtYWpvcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcImNvbXBhY3Rpb25zXCIgY29tcGFjdGlvbnNcbiAgaW5cbiAgaWYgTGlzdC5pc19lbXB0eSBzdHJpbmdzIHRoZW4gXCJcIiBlbHNlIFwiOyBHQzogXCIgXiBTdHJpbmcuY29uY2F0IHN0cmluZ3MgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZCBsaXN0ID1cbiAgbGV0IGxlZnRfY29sdW1uX3dpZHRoID1cbiAgICBMaXN0LmZvbGQgbGlzdCB+aW5pdDowIH5mOihmdW4gd2lkdGggKGxlZnQsIF8pIC0+IEludC5tYXggd2lkdGggKFN0cmluZy5sZW5ndGggbGVmdCkpXG4gIGluXG4gIExpc3QubWFwIGxpc3QgfmY6KGZ1biAobGVmdCwgcmlnaHQpIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCIlKnMgJXNcIiBsZWZ0X2NvbHVtbl93aWR0aCBsZWZ0IHJpZ2h0KVxuOztcblxubGV0IHJlYyB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbGlzdCB+aW5kZW50ID1cbiAgbGV0IGR1cmF0aW9uX3N0cmluZ3MgPVxuICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+IHRpbWluZ19ldmVudC5ydW50aW1lKVxuICAgIHw+IER1cmF0aW9uLnRvX3N0cmluZ193aXRoX3NhbWVfdW5pdFxuICBpblxuICBsZXQgcHJlZml4ID0gU3RyaW5nLm1ha2UgaW5kZW50ICcgJyBpblxuICBMaXN0Lm1hcDJfZXhuXG4gICAgZHVyYXRpb25fc3RyaW5nc1xuICAgIGxpc3RcbiAgICB+ZjooZnVuIGR1cmF0aW9uX3N0cmluZyB7IHJ1bnRpbWUgPSBfOyBkZXNjcmlwdGlvbjsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9XG4gICAgICAgICAtPlxuICAgICAgICAgICAoIGR1cmF0aW9uX3N0cmluZ1xuICAgICAgICAgICAsIGRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgXiBnY19ldmVudHNfc3VmZml4X3N0cmluZyBnY19ldmVudHNcbiAgICAgICAgICAgICBeIFN0cmluZy5jb25jYXRcbiAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICh0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbmVzdGVkX3RpbWluZ19ldmVudHMgfmluZGVudDooaW5kZW50ICsgNCkpXG4gICAgICAgICAgICAgICAgICAgIH5mOihmdW4gbGluZSAtPiBcIlxcblwiIF4gbGluZSkpICkpXG4gIHw+IHdpdGhfbGVmdF9jb2x1bW5fcmlnaHRfanVzdGlmaWVkXG4gIHw+IExpc3QubWFwIH5mOihmdW4gbGluZSAtPiBwcmVmaXggXiBsaW5lKVxuOztcblxubGV0IGZha2VfdGltaW5nX2V2ZW50cyA9XG4gIGxldCBnY19ldmVudHMgaSA6IEdjX2V2ZW50cy50ID1cbiAgICB7IG1pbm9yX2NvbGxlY3Rpb25zID0gKGlmIGkgJSAyID0gMSB0aGVuIDEgZWxzZSAwKVxuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSAoaWYgaSAlIDQgPSAzIHRoZW4gMSBlbHNlIDApXG4gICAgOyBjb21wYWN0aW9ucyA9IChpZiBpICUgOCA9IDcgdGhlbiAxIGVsc2UgMClcbiAgICB9XG4gIGluXG4gIGxhenlcbiAgICAoTGlzdC5pbml0IDEyIH5mOihmdW4gaSA6IFRpbWluZ19ldmVudC50IC0+XG4gICAgICAgeyBkZXNjcmlwdGlvbiA9IFByaW50Zi5zcHJpbnRmIFwiRmFrZV9fRGVwZW5kZW5jeV8lZFwiIChpICsgMSlcbiAgICAgICA7IHJ1bnRpbWUgPSBJbnQ2My5vZl9pbnQgKDkwMCAqIChpICsgMSkpXG4gICAgICAgOyBnY19ldmVudHMgPSBnY19ldmVudHMgaVxuICAgICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgPVxuICAgICAgICAgICAoaWYgKGkgKyAxKSAlIDQgPSAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIExpc3QuaW5pdCAoaSArIDEpIH5mOihmdW4gaiA6IFRpbWluZ19ldmVudC50IC0+XG4gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbiA9IFByaW50Zi5zcHJpbnRmIFwiTGluZSAlZFwiIChqICsgMSlcbiAgICAgICAgICAgICAgICA7IHJ1bnRpbWUgPSBJbnQ2My5vZl9pbnQgKDkwMCAqIChqICsgMSkpXG4gICAgICAgICAgICAgICAgOyBnY19ldmVudHMgPSBnY19ldmVudHMgalxuICAgICAgICAgICAgICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgPSBbXVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBlbHNlIFtdKVxuICAgICAgIH0pKVxuOztcblxubGV0IHByaW50X3JlY29yZGVkX3RpbWluZ19ldmVudHMgdGltaW5nX2V2ZW50cyA9XG4gIGxldCBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKSA9XG4gICAgU3RkaW8ucHJpbnRfZW5kbGluZSBcInBweF9tb2R1bGVfdGltZXI6IG92ZXJyaWRpbmcgdGltZSBtZWFzdXJlbWVudHMgZm9yIHRlc3RpbmdcIlxuICBpblxuICBsZXQgdGltaW5nX2V2ZW50cyA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlX2V4biBhbV9yZWNvcmRpbmdfdmFsdWUgd2l0aFxuICAgIHwgXCJGQUtFX01PRFVMRVNcIiAtPlxuICAgICAgbm90aWZ5X29mX292ZXJyaWRpbmcgKCk7XG4gICAgICBmb3JjZSBmYWtlX3RpbWluZ19ldmVudHNcbiAgICB8IHN0cmluZyAtPlxuICAgICAgKG1hdGNoIER1cmF0aW9uLm9mX3N0cmluZyBzdHJpbmcgd2l0aFxuICAgICAgIHwgb3ZlcnJpZGUgLT5cbiAgICAgICAgIG5vdGlmeV9vZl9vdmVycmlkaW5nICgpO1xuICAgICAgICAgTGlzdC5tYXBpIHRpbWluZ19ldmVudHMgfmY6KGZ1biBpbmRleCAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+XG4gICAgICAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAqICkgb3ZlcnJpZGUgKEludDYzLm9mX2ludCAoaW5kZXggKyAxKSkgaW5cbiAgICAgICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgICAgICBMaXN0Lm1hcGlcbiAgICAgICAgICAgICAgIHRpbWluZ19ldmVudC5uZXN0ZWRfdGltaW5nX2V2ZW50c1xuICAgICAgICAgICAgICAgfmY6KGZ1biBpbmRleCBuZXN0ZWRfdGltaW5nX2V2ZW50IC0+XG4gICAgICAgICAgICAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAqICkgb3ZlcnJpZGUgKEludDYzLm9mX2ludCAoaW5kZXggKyAxKSkgaW5cbiAgICAgICAgICAgICAgICAgeyBuZXN0ZWRfdGltaW5nX2V2ZW50IHdpdGggcnVudGltZSB9KVxuICAgICAgICAgICBpblxuICAgICAgICAgICB7IHRpbWluZ19ldmVudCB3aXRoIHJ1bnRpbWU7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH0pXG4gICAgICAgfCBleGNlcHRpb24gXyAtPiB0aW1pbmdfZXZlbnRzKVxuICBpblxuICB0aW1pbmdfZXZlbnRzIHw+IHRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyB+aW5kZW50OjAgfD4gTGlzdC5pdGVyIH5mOlN0ZGlvLnByaW50X2VuZGxpbmVcbjs7XG5cbmxldCAoKSA9XG4gIGlmIGFtX3JlY29yZGluZ1xuICB0aGVuXG4gICAgU3RkbGliLmF0X2V4aXQgKGZ1biAoKSAtPlxuICAgICAgcHJpbnRfcmVjb3JkZWRfdGltaW5nX2V2ZW50c1xuICAgICAgICAoTGlzdC5yZXYgbW9kdWxlX3RpbWVyLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyKSlcbjs7XG4iLCJ0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBCYXNlLlR5cGVfZXF1YWwudCA9IFQgOiAoJ2EsICdhKSB0XG50eXBlICgnYSwgJ2IpIGVxdWFsID0gKCdhLCAnYikgdFxuXG5sZXQgcmVmbCA9IFRcbmxldCBjb252IDogdHlwZSBhIGIuIChhLCBiKSB0IC0+IGEgLT4gYiA9IGZ1biBUIHggLT4geFxuXG5tb2R1bGUgTGlmdCAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGEgWC50LCBiIFgudCkgdCA9IFRcbmVuZFxuIiwiKCogdGhpcyBsaWIgc2hvdWxkIG5vdCBkZXBlbmQgb24gY29yZSAqKVxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMaXN0XG5cbiAgbGV0IGNvbXBhcmUgY21wIGEgYiA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiA9XG4gICAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+IDBcbiAgICAgIHwgW10sIF8gLT4gLTFcbiAgICAgIHwgXywgW10gLT4gMVxuICAgICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICAgIGxldCBuID0gY21wIHggeSBpblxuICAgICAgICBpZiBuID0gMCB0aGVuIGxvb3AgeHMgeXMgZWxzZSBuXG4gICAgaW5cbiAgICBsb29wIGEgYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBVaWQgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBuZXh0IDogc3RyaW5nIC0+IHRcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuICB2YWwgbmFtZSA6IHQgLT4gc3RyaW5nXG4gIHZhbCBzdGF0aWMgOiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNvZGUgOiBpbnRcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgbGV0IGNvbXBhcmUgYSBiID0gY29tcGFyZSAoYS5jb2RlIDogaW50KSBiLmNvZGVcbiAgbGV0IGVxdWFsIGEgYiA9IChhLmNvZGUgOiBpbnQpID0gYi5jb2RlXG4gIGxldCB1aWQgPSByZWYgMFxuXG4gIGxldCBuZXh0IG5hbWUgPVxuICAgIGxldCBjb2RlID0gIXVpZCBpblxuICAgIGluY3IgdWlkO1xuICAgIHsgY29kZTsgbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGhhc2ggYSA9IEhhc2h0YmwuaGFzaCBhLmNvZGVcbiAgbGV0IG5hbWUgYSA9IGEubmFtZVxuICBsZXQgc3RhdGljID0gbmV4dCBcInN0YXRpY1wiXG5lbmRcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdWlkIDogVWlkLnRcbiAgICA7IHBhcmFtcyA6IHQgbGlzdFxuICAgIH1cblxuICBsZXQgcmVjIGNvbXBhcmUgazEgazIgPVxuICAgIGlmIGsxID09IGsyXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY21wID0gVWlkLmNvbXBhcmUgazEudWlkIGsyLnVpZCBpblxuICAgICAgaWYgY21wIDw+IDAgdGhlbiBjbXAgZWxzZSBMaXN0LmNvbXBhcmUgY29tcGFyZSBrMS5wYXJhbXMgazIucGFyYW1zKVxuICA7O1xuXG4gIGxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcbiAgbGV0IGhhc2ggPSAoSGFzaHRibC5oYXNoIDogdCAtPiBpbnQpXG4gIGxldCBzdGF0aWMgPSB7IHVpZCA9IFVpZC5zdGF0aWM7IHBhcmFtcyA9IFtdIH1cbmVuZFxuXG50eXBlICdhIHQgPSBLZXkudFxudHlwZSAnYSB0eXBlbmFtZSA9ICdhIHRcblxubGV0IGtleSB0ID0gdFxubGV0IHVpZCB0ID0gdC5LZXkudWlkXG5sZXQgbmFtZSB0ID0gVWlkLm5hbWUgdC5LZXkudWlkXG5sZXQgc3RhdGljID0gS2V5LnN0YXRpY1xubGV0IGNyZWF0ZSA/KG5hbWUgPSBcIlR5cGVuYW1lLmNyZWF0ZVwiKSAoKSA9IHsgS2V5LnVpZCA9IFVpZC5uZXh0IG5hbWU7IHBhcmFtcyA9IFtdIH1cblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCogVGhlIGFyZ3VtZW50IGZvciBPYmoubWFnaWMgaGVyZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGluIGNvcmUvdHlwZV9lcXVhbCAqKVxuXG4gIGxldCBzYW1lICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPSBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuXG4gIGxldCBzYW1lX3dpdG5lc3MgKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9XG4gICAgaWYgS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcbiAgICB0aGVuIFNvbWUgKE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgOiAoYSwgYikgVHlwZV9lcXVhbC50KVxuICAgIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPVxuICAgIGlmIEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG4gICAgdGhlbiAoT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCA6IChhLCBiKSBUeXBlX2VxdWFsLnQpXG4gICAgZWxzZSBmYWlsd2l0aCBcIlR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG5cIlxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIFMwID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2EgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2IgdHlwZW5hbWUgLT4gKCdhLCAnYikgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdiIHR5cGVuYW1lIC0+ICdjIHR5cGVuYW1lIC0+ICgnYSwgJ2IsICdjKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdFxuICAgIDogICdhIHR5cGVuYW1lXG4gICAgLT4gJ2IgdHlwZW5hbWVcbiAgICAtPiAnYyB0eXBlbmFtZVxuICAgIC0+ICdkIHR5cGVuYW1lXG4gICAgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3RcbiAgICA6ICAnYSB0eXBlbmFtZVxuICAgIC0+ICdiIHR5cGVuYW1lXG4gICAgLT4gJ2MgdHlwZW5hbWVcbiAgICAtPiAnZCB0eXBlbmFtZVxuICAgIC0+ICdlIHR5cGVuYW1lXG4gICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFtdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYyBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTQgKFggOiBOYW1lZF9pbnRmLlM0KSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjIGQgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYzsgZCBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjIGQgZSA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjOyBkOyBlIF0gfVxuZW5kXG5cbm1vZHVsZSBLZXlfdGFibGUgPSBIYXNodGJsLk1ha2UgKEtleSlcblxubW9kdWxlIFRhYmxlIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgZGF0YSA9IERhdGEgOiAnYSB0ICogJ2EgWC50IC0+IGRhdGFcbiAgdHlwZSB0ID0gZGF0YSBLZXlfdGFibGUudFxuXG4gIGxldCBjcmVhdGUgaW50ID0gS2V5X3RhYmxlLmNyZWF0ZSBpbnRcbiAgbGV0IG1lbSB0YWJsZSBuYW1lID0gS2V5X3RhYmxlLm1lbSB0YWJsZSAoa2V5IG5hbWUpXG4gIGxldCBzZXQgdGFibGUgbmFtZSBkYXRhID0gS2V5X3RhYmxlLnJlcGxhY2UgdGFibGUgKGtleSBuYW1lKSAoRGF0YSAobmFtZSwgZGF0YSkpXG5cbiAgbGV0IGZpbmQgKHR5cGUgYSkgdGFibGUgKG5hbWUgOiBhIHR5cGVuYW1lKSA9XG4gICAgbGV0IGRhdGEgPVxuICAgICAgdHJ5IFNvbWUgKEtleV90YWJsZS5maW5kIHRhYmxlIChrZXkgbmFtZSkpIHdpdGhcbiAgICAgIHwgQmFzZS5Ob3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKERhdGEgKG5hbWUnLCBkYXRhKSkgLT5cbiAgICAgIChmdW4gKHR5cGUgYikgKG5hbWUnIDogYiB0eXBlbmFtZSkgKGRhdGEgOiBiIFgudCkgLT5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSAoc2FtZV93aXRuZXNzX2V4biBuYW1lJyBuYW1lIDogKGIsIGEpIFR5cGVfZXF1YWwudCkgaW5cbiAgICAgICAgIFNvbWUgKGRhdGEgOiBhIFgudCkpXG4gICAgICAgIG5hbWUnXG4gICAgICAgIGRhdGFcbiAgOztcbmVuZFxuXG5sZXQgZmFpbCB1aWRfYSB1aWRfYiA9XG4gIGxldCBtc2cgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4biAlUyAlU1wiIChVaWQubmFtZSB1aWRfYSkgKFVpZC5uYW1lIHVpZF9iKVxuICBpblxuICBmYWlsd2l0aCBtc2dcbjs7XG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzEgKEEgOiBTMSkgKEIgOiBTMSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhLiAoJ2EgQS50LCAnYSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8yIChBIDogUzIpIChCIDogUzIpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYi4gKCgnYSwgJ2IpIEEudCwgKCdhLCAnYikgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8zIChBIDogUzMpIChCIDogUzMpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYiAnYy4gKCgnYSwgJ2IsICdjKSBBLnQsICgnYSwgJ2IsICdjKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNCAoQSA6IFM0KSAoQiA6IFM0KSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MgJ2QuICgoJ2EsICdiLCAnYywgJ2QpIEEudCwgKCdhLCAnYiwgJ2MsICdkKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl81IChBIDogUzUpIChCIDogUzUpID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBlcSA6XG4gICAgICAgICdhICdiICdjICdkICdlLiAoKCdhLCAnYiwgJ2MsICdkLCAnZSkgQS50LCAoJ2EsICdiLCAnYywgJ2QsICdlKSBCLnQpIFR5cGVfZXF1YWwudFxuICAgIH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcbiIsIigqKlxuICAgUGxhY2UgaG9sZGVyIGZvciBjb21tb24gVmFyaWFudHMgYW5kIEZpZWxkcyBpbnRlcmZhY2VcbiopXG5cbm1vZHVsZSBNIChYIDogc2lnXG4gICAgKCoqXG4gICAgICAgVGhpcyBmdW5jdG9yIGlzIGVzc2VudGlhbGx5IHRoZXJlIGJlY2F1c2Ugd2UgdXNlIHRoaXMgc2FtZSBpbnRlcmZhY2UgaW4gZGlmZmVyZW50XG4gICAgICAgY29udGV4dHMsIHdpdGggZGlmZmVyZW50IHR5cGVzIGZvciBbJ2EgdF0uXG5cbiAgICAgICAxKSBPbmUgdXNlIGNhc2UgZm9yIGl0IGlzIHdoZXJlIFsnYSBYLnQgPSAnYSBUeXBlcmVwLnRdLiAgVGhlc2UgaW50ZXJmYWNlcyBhcmUgdGhlblxuICAgICAgIHBhcnQgb2YgdGhlIHR5cGUgd2l0bmVzcyBidWlsdCBmb3IgYSB0eXBlIGNvbnRhaW5pbmcgYSByZWNvcmQgb3IgYSB2YXJpYW50IGluIGl0c1xuICAgICAgIHN0cnVjdHVyZS4gW3RyYXZlcnNlXSB3aWxsIGdpdmUgYSB3YXkgb2YgYWNjZXNzaW5nIHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIGZvciB0aGVcbiAgICAgICBhcmd1bWVudHMgb2YgYSB2YXJpYW50IG9yIHJlY29yZCB0eXBlLlxuXG4gICAgICAgMikgQW5vdGhlciB1c2UgY2FzZSBpcyBmb3IgYnVpbGRpbmcgXCJzdGFnZWQgZ2VuZXJpYyBjb21wdXRhdGlvbnNcIi4gSW4gdGhhdCBjYXNlLCB0aGVcbiAgICAgICB0eXBlIFsnYSBYLnRdIGlzIHRoZSB0eXBlIG9mIHRoZSBjb21wdXRhdGlvbiB0aGF0IGlzIGJlaW5nIGJ1aWx0LiAgW3RyYXZlcnNlXVxuICAgICAgIHJldHVybnMgdGhlIGNvbXB1dGF0aW9uIGJ1aWx0IGZvciB0aGUgYXJndW1lbnQuIFRoZSBpbnRlcmZhY2Ugbm8gbG9uZ2VyIGV4cG9ydHNcbiAgICAgICB0aGUgdHlwZXJlcCBvZiB0aGUgYXJndW1lbnRzIGluIGhvcGVzIG9mIGVuZm9yY2luZyB0aGF0IG5vIHR5cGVyZXAgdHJhdmVyc2FsXG4gICAgICAgaGFwcGVucyBhdCBydW50aW1lIGlmIHRoZSBjb21wdXRhdGlvbiBoYXBwZW4gdG8gYmUgYSBmdW5jdGlvbi5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgZnVuY3Rpb25zIHByZWZpeGVkIGJ5IFtpbnRlcm5hbF0gYXMgd2VsbCBhcyB0aGUgbW9kdWxlIHN1ZmZpeGVkIGJ5IFtfaW50ZXJuYWxdXG4gICAgIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiBbd2l0aCB0eXBlcmVwXSBhcyB3ZWxsIGFzIHNvbWVcbiAgICAgaW50ZXJuYWxzIG9mIHRoZSB0eXBlcmVwIGxpYnJhcnkuIERvIG5vdCBjb25zaWRlciB1c2luZyB0aGVzZSBzb21ld2hlcmUgZWxzZS4gIFRoZXlcbiAgICAgc2hvdWxkIGlkZWFsbHkgbm90IGJlIGV4cG9ydGVkIG91dHNpZGUgdGhlIHR5cGVyZXAgbGlicmFyeSwgYnV0IHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgICBuZWVkcyBzb21laG93IHRvIGFjY2VzcyB0aGlzLCBldmVuIG91dHNpZGUuICopXG5cbiAgbW9kdWxlIFRhZ19pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHQgPVxuICAgICAgeyBsYWJlbCA6IHN0cmluZ1xuICAgICAgOyByZXAgOiAnYXJncyBYLnRcbiAgICAgIDsgYXJpdHkgOiBpbnRcbiAgICAgIDsgYXJnc19sYWJlbHMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyBvY2FtbF9yZXByIDogaW50XG4gICAgICA7IHR5aWQgOiAnYXJncyBUeXBlbmFtZS50XG4gICAgICA7IGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZVxuICAgICAgfVxuICBlbmRcblxuICAoKipcbiAgICAgV2l0bmVzcyBvZiBhIHRhZywgdGhhdCBpcyBhbiBpdGVtIGluIGEgdmFyaWFudCB0eXBlLCBhbHNvIGNhbGxlZCBhbiBcImFwcGxpZWRcbiAgICAgdmFyaWFudCBDb25zdHJ1Y3RvclwiXG5cbiAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSB0YWdcbiAgICAgcGFyYW1ldGVycy4gIEV4YW1wbGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPVxuICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICB8IEIgb2Ygc3RyaW5nXG4gICAgICAgICB8IEMgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgXX1cblxuICAgICB0aGlzIHR5cGUgaGFzIHRocmVlIGNvbnN0cnVjdG9ycy4gRm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZ1xuICAgICBbVGFnLnRdOlxuXG4gICAgIHtbXG4gICAgICAgdmFsIHRhZ19BIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICAgIHZhbCB0YWdfQiA6ICh0LCBzdHJpbmcgICAgICAgICkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0MgOiAodCwgKGludCAqIHN0cmluZykpIFRhZy50XG4gICAgIF19XG5cbiAgICAgTm90ZSwgaW5saW5lIHJlY29yZCBpbiB2YXJpYW50IGFyZSB0eXBlZCBhcyBpZiB0aGVpciBkZWZpbml0aW9uIHdhcyB1c2luZyB0dXBsZXMsXG4gICAgIHdpdGhvdXQgdGhlIHBhcmVudGhlc2lzLiAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlaXIgcnVudGltZSByZXByZXNlbnRhdGlvbi4gIEJ1dFxuICAgICB0aGUgZGlzdGluY3Rpb24gaXMgY2FycmllZCBhbmQgYXZhaWxhYmxlIGZvciBpbnRyb3NwZWN0aW9uIGFzIHBhcnQgb2YgdGhlIFtUYWcudF0uXG4gICAgIFNlZSBbYXJnc19sYWJlbHNdLiAqKVxuICBtb2R1bGUgVGFnIDogc2lnXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGUgPVxuICAgICAgfCBBcmdzIG9mICgnYXJncyAtPiAndmFyaWFudClcbiAgICAgIHwgQ29uc3Qgb2YgJ3ZhcmlhbnRcblxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIG5hbWUgb2YgdGhlIGNvbnN0cnVjdG9yIGFzIGl0IGlzIGdpdmVuIGluIHRoZSBjb25jcmV0ZSBzeW50YXhcbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHt2XG4gICAgICAgICBDb25zdHJ1Y3RvciAgICAgICAgfCBsYWJlbFxuICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgfCBBIG9mIGludCAgICAgICAgIHwgIFwiQVwiXG4gICAgICAgICB8IGBhIG9mIGludCAgICAgICAgfCAgXCJhXCJcbiAgICAgICAgIHwgYEEgb2YgaW50ICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9IHwgIFwiQVwiXG4gICAgICAgdn1cblxuICAgICAgIGZvciBzdGFuZGFyZCB2YXJpYW50LCB0aGUgb2NhbWwgc3ludGF4IGltcGxpZXMgdGhhdCB0aGlzIGxhYmVsIHdpbGwgYWx3YXlzIHN0YXJ0c1xuICAgICAgIHdpdGggYSBjYXBpdGFsIGxldHRlci4gRm9yIHBvbHltb3JwaGljIHZhcmlhbnRzLCB0aGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIGNoYXIuXG4gICAgICAgRm9yIHBvbHltb3JwaGljIHZhcmlhbnQsIHRoaXMgbGFiZWwgZG9lcyBub3QgaW5jbHVkZSB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIHNpemUgb2YgdGhlIG9jYW1sIGhlYXAgYmxvY2sgY29udGFpbmluZyB0aGUgYXJndW1lbnRzXG5cbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7dlxuICAgICAgICAgIDA6IHwgQSB8ICdBXG4gICAgICAgICAgMTogfCBBIG9mIGludCB8IGBBIG9mIGludCB8IEEgb2YgKGludCAqIGludCkgfCBgQSBvZiAoaW50ICogaW50KVxuICAgICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludH1cbiAgICAgICAgICAyOiB8IEEgb2YgaW50ICogZmxvYXRcbiAgICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICAgICBldGMuXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcml0eSA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqIFRoZSBsYWJlbCBvZiB0aGUgZmllbGRzIGZvciBpbmxpbmUgcmVjb3Jkcy4gIEZvciBvdGhlciBmb3JtcyBvZiB0YWdzLCB0aGlzIGlzIHRoZVxuICAgICAgICBlbXB0eSBsaXN0LiAgV2hlbiB0aGlzIHJldHVybnMgYSBub24gZW1wdHkgbGlzdCwgdGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgbGlzdFxuICAgICAgICBpcyBlcXVhbCB0byB0aGUgYXJpdHkuXG5cbiAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICB7dlxuICAgICAgICAgKDEpIEVtcHR5OlxuXG4gICAgICAgICAgIHwgQSB8ICdBXG4gICAgICAgICAgIHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgfCBgQSBvZiBpbnQgKiBpbnRcbiAgICAgICAgICAgfCBBIG9mIGludCAqIGZsb2F0XG5cbiAgICAgICAgICgyKSBOb24gZW1wdHk6XG5cbiAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9ICAgICAgICAgICAgICAgLT4gWyBcInhcIiBdXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfSAgIC0+IFsgXCJ4XCIgOyBcInlcIiBdXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcmdzX2xhYmVscyA6IChfLCBfKSB0IC0+IHN0cmluZyBsaXN0XG5cbiAgICAoKipcbiAgICAgICBUaGUgaW5kZXggb2YgdGhlIGNvbnN0cnVjdG9yIGluIHRoZSBsaXN0IG9mIGFsbCB0aGUgdmFyaWFudCB0eXBlJ3MgY29uc3RydWN0b3JzXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBDIG9mIGludCAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRCBvZiBjaGFyICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEUgb2YgeyB4IDogaW50IH0gICgqIDQgKilcbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBvY2FtbF9yZXByIGlzIHJlbGF0ZWQgdG8gdGhlIHJ1bnRpbWUgb2Ygb2JqZWN0cy4gdGhpcyBpcyBlc3NlbnRpYWxseSBhIHdheSBvZlxuICAgICAgIGdpdmluZyBvbmUgdGhlIGFiaWxpdHkgdG8gcmVidWlsZCBkeW5hbWljYWxseSBhbiBbT2JqLnRdIHJlcHJlc2VudGluZyBhIHRhZy5cblxuICAgICAgIFBvbHltb3JwaGljIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSBoYXNoIG9mIHRoZSBsYWJlbCwgYXMgZG9uZSBieSB0aGUgY29tcGlsZXIuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyBgYmFyKSAgKCogNDg5NTE4NyAqKVxuICAgICAgIHByaW50X2ludCAoT2JqLm1hZ2ljICdmb28pICAoKiA1MDk3MjIyICopXG5cbiAgICAgICBTdGFuZGFyZHMgdmFyaWFudHM6XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSB0YWcgY29ycmVzcG9uZGluZyB0byB0aGUgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlLlxuICAgICAgIHRoZSB3YXkgaXQgd29ya3MgaW4gdGhlIG9jYW1sIHJ1bnRpbWUgaXMgYnkgcGFydGl0aW9uaW5nIHRoZSBjb25zdHJ1Y3RvcnMgcmVnYXJkaW5nXG4gICAgICAgaWYgdGhleSBoYXZlIHNvbWUgYXJndW1lbnRzIG9yIG5vdCwgcHJlc2VydmluZyB0aGUgb3JkZXIsIHRoZW4gYXNzaWduIGluY3JlYXNpbmdcbiAgICAgICBpbmRleCB3aXRoaW5nIGVhY2ggcGFydGl0aW9uLlxuICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0gICAgICAgICAgICAgICAgICAoKiBubyBhcmcgKikgICgqIGFyZ3MgKilcbiAgICAgICAgICAgfCBBICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQiBvZiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQyAgICAgICAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEQgb2YgKGZsb2F0ICogc3RyaW5nKSAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEUgICAgICAgICAgICAgICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBGICAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgICAgIHwgRyBvZiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgSCBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBvY2FtbF9yZXByIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHaXZlIGJhY2sgYSB3YXkgb2YgY29uc3RydWN0aW5nIGEgdmFsdWUgb2YgdGhhdCBjb25zdHJ1Y3RvciBmcm9tIGl0cyBhcmd1bWVudHMuXG5cbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgKGludCAqIHN0cmluZylcbiAgICAgICAgICAgfCBCIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgIHwgQ1xuICAgICAgICAgICB8IEQgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICBdfVxuXG4gICAgICAgW2NyZWF0ZV0gd2lsbCByZXR1cm4gc29tZXRoaW5nIGVxdWl2YWxlbnQgdG86XG4gICAgICAgdGFnX0EgOiBbQXJncyAoZnVuIChkIDogKGludCAqIHN0cmluZykgLT4gQSBkKV1cbiAgICAgICB0YWdfQiA6IFtBcmdzIChmdW4gKGksIGYpIC0+IEIgKGksIGYpKV1cbiAgICAgICB0YWdfQyA6IFtDb25zdCBDXVxuICAgICAgIHRhZ19EIDogW0FyZ3MgKGZ1biAoeCwgeSkgLT4gRCB7IHg7IHkgfSldXG4gICAgKilcbiAgICB2YWwgY3JlYXRlIDogKCd2YXJpYW50LCAnYXJncykgdCAtPiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiBtaWdodCBiZSB1c2VkIHRvIHBlcmZvcm0gc29tZSBsb29rdXAgYmFzZWRcbiAgICAgICAgb24gaXQgd2hpbGUgYnVpbGRpbmcgYSBjb21wdXRhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFR5cGVuYW1lLnRcblxuICAgICgqKiBnZXQgdGhlIHJlcHJlc2VudGF0aW9uL2NvbXB1dGF0aW9uIG9mIHRoZSBhcmd1bWVudHMgKilcbiAgICB2YWwgdHJhdmVyc2UgOiAoXywgJ2FyZ3MpIHQgLT4gJ2FyZ3MgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBUYWdfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVGFnX2ludGVybmFsXG5cbiAgICBsZXQgbGFiZWwgdCA9IHQubGFiZWxcbiAgICBsZXQgYXJpdHkgdCA9IHQuYXJpdHlcbiAgICBsZXQgYXJnc19sYWJlbHMgdCA9IHQuYXJnc19sYWJlbHNcbiAgICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgICBsZXQgb2NhbWxfcmVwciB0ID0gdC5vY2FtbF9yZXByXG4gICAgbGV0IGNyZWF0ZSB0ID0gdC5jcmVhdGVcbiAgICBsZXQgdHlpZCB0ID0gdC50eWlkXG4gICAgbGV0IHRyYXZlcnNlIHQgPSB0LnJlcFxuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAtPiAndmFyaWFudCB0YWdcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2EpIFRhZy50ICogJ2EgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyB0YWdzIDogJ2EgdGFnIGFycmF5XG4gICAgICA7IHBvbHltb3JwaGljIDogYm9vbFxuICAgICAgOyB2YWx1ZSA6ICdhIC0+ICdhIHZhbHVlXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBWYXJpYW50IDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIHRhZ3MgY29uc3RpdHVpbmcgYSB2YXJpYW50XG4gICAgICAgdHlwZS4gdGhlIFsndmFyaWFudF0gcGFyYW1ldGVyIGlzIHRoZSB2YXJpYW50IHR5cGUsIGl0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhlXG4gICAgICAgY29uc3RydWN0b3JzIG9mIHRoYXQgdmFyaWFudCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVycyBtaWdodCBiZSBkaWZmZXJlbnRcbiAgICAgICBmb3IgZWFjaCBjb25zdHJ1Y3RvciBhbmQgaXMgdGh1cyBleGlzdGVudGlhbFxuICAgICopXG4gICAgdHlwZSBfIHRhZyA9IFRhZyA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50IC0+ICd2YXJpYW50IHRhZ1xuXG4gICAgKCoqXG4gICAgICAgQSBzaW1pbGFyIGV4aXN0ZW50aWFsIGNvbnN0cnVjdG9yIHRvIFtfIHRhZ10gYnV0IHRoaXMgb25lIGhvbGRzIGEgdmFsdWUgd2hvc2UgdHlwZVxuICAgICAgIGlzIHRoZSBhcmd1bWVudHMgb2YgdGhlIHRhZyBjb25zdHJ1Y3Rvci4gIEEgdmFsdWUgb2YgdHlwZSBbJ2EgdmFsdWVdIGlzIGEgcGFpciBvZlxuICAgICAgICgxKSBhIHZhbHVlIG9mIHZhcmlhbnQgdHlwZSBbJ2FdIGFsb25nIHdpdGggKDIpIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAgICAgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlIFsnYV1cbiAgICAqKVxuICAgIHR5cGUgXyB2YWx1ZSA9IFZhbHVlIDogKCd2YXJpYW50LCAnYXJncykgVGFnLnQgKiAnYXJncyAtPiAndmFyaWFudCB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgV2l0bmVzcyBvZiBhIHZhcmlhbnQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgdmFyaWFudCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB0YWdzIG9mIHRoaXMgdmFyaWFudCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIHRhZyBvZiB0aGlzIHZhcmlhbnQgdHlwZSwgaW5kZXhlZCBmcm9tIDAuXG4gICAgKilcbiAgICB2YWwgdGFnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgdGFnXG5cbiAgICAoKipcbiAgICAgICBEaXN0aW5ndWlzaCBwb2x5bW9ycGhpYyB2YXJpYW50cyBhbmQgc3RhbmRhcmQgdmFyaWFudHMuIFR5cGljYWxseSwgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cyB0YWdzIHN0YXJ0cyB3aXRoIHRoZSBbYF0gY2hhcmFjdGVyLlxuICAgICAgIEV4YW1wbGVcbiAgICAgICBwb2x5bW9ycGhpYyB2YXJpYW50OiB0eXBlIHQgPSBbIGBBIHwgYEIgXVxuICAgICAgIHN0YW5kYXJkIHZhcmlhbnQ6ICAgIHR5cGUgdCA9IEEgfCBCXG4gICAgKilcbiAgICB2YWwgaXNfcG9seW1vcnBoaWMgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgUGF0dGVybiBtYXRjaGluZyBvbiBhIHZhbHVlIG9mIHRoaXMgdmFyaWFudCB0eXBlLlxuICAgICopXG4gICAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYSAtPiAnYSB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgdGFnIC0+ICdhY2MpIC0+ICdhY2NcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICdhIFZhcmlhbnRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyaWFudF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC50YWdzXG4gICAgbGV0IHRhZyB0IGluZGV4ID0gdC50YWdzLihpbmRleClcbiAgICBsZXQgaXNfcG9seW1vcnBoaWMgdCA9IHQucG9seW1vcnBoaWNcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gQXJyYXkuZm9sZF9sZWZ0IGYgaW5pdCB0LnRhZ3NcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2ZpZWxkIFgudFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyB0eWlkIDogJ2ZpZWxkIFR5cGVuYW1lLnRcbiAgICAgIDsgZ2V0IDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICAgIDsgKCogc2V0IDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvbjsgKFxcKiBtdXRhYmxlIGZpZWxkICpcXCkgKilcbiAgICAgICAgaXNfbXV0YWJsZSA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSBmaWVsZCwgdGhhdCBpcyBhbiBpdGVtIGluIGEgcmVjb3JkIHR5cGUuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC5cbiAgICAgRXhhbXBsZTpcbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQgOyB5IDogc3RyaW5nIH1cbiAgICAgXX1cbiAgICAgVGhpcyB0eXBlIGhhcyB0d28gZmllbGRzLiBmb3IgZWFjaCBvZiB0aGVtIHdlJ2xsIGhhdmUgYSBjb3JyZXNwb25kaW5nIFtGaWVsZC50XVxuXG4gICAgIHZhbCBmaWVsZF94IDogKHQsIGludCkgRmllbGQudFxuICAgICB2YWwgZmllbGRfeSA6ICh0LCBzdHJpbmcpIEZpZWxkLnRcbiAgKilcbiAgbW9kdWxlIEZpZWxkIDogc2lnXG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0XG5cblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHsgeCAgIDogaW50OyAgICAgKCogXCJ4XCIgKilcbiAgICAgICAgICAgZm9vIDogc3RyaW5nOyAgKCogXCJmb29cIiAqKVxuICAgICAgICAgICBiYXIgOiBmbG9hdDsgICAoKiBcImJhclwiICopXG4gICAgICAgICB9XG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlIGZpZWxkIGluIHRoZSBsaXN0IG9mIGFsbCBmaWVsZHMgZm9yIHRoaXMgcmVjb3JkIHR5cGUuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgICB4ICAgOiBpbnQ7ICAgICAoKiAwICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIDEgKilcbiAgICAgICAgICAgYmFyIDogc3RyaW5nOyAgKCogMiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgaW5kZXggOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEZpZWxkIGFjY2Vzc29ycy4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgZG90IG9wZXJhdGlvbi5cbiAgICAgICBbRmllbGQuZ2V0IGJhcl9maWVsZCB0XSByZXR1cm5zIHRoZSBmaWVsZCBbYmFyXSBvZiB0aGUgcmVjb3JkIHZhbHVlIFt0XSwganVzdCB0aGVcbiAgICAgICBzYW1lIGFzIFt0LmJhcl1cbiAgICAqKVxuICAgIHZhbCBnZXQgOiAoJ3JlY29yZCwgJ2ZpZWxkKSB0IC0+ICdyZWNvcmQgLT4gJ2ZpZWxkXG5cbiAgICAoKiogcmV0dXJuIHdoZXRoZXIgdGhlIGZpZWxkIGlzIG11dGFibGUsIGkuZS4gd2hldGhlciBpdHMgZGVjbGFyYXRpb24gaXMgcHJlZml4ZWQgd2l0aFxuICAgICAgICB0aGUga2V5d29yZCBbbXV0YWJsZV0gKilcbiAgICB2YWwgaXNfbXV0YWJsZSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiAgTWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0ICopXG4gICAgdmFsIHR5aWQgOiAoXywgJ2ZpZWxkKSB0IC0+ICdmaWVsZCBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBGaWVsZF9pbnRlcm5hbC50IC0+ICgnYSwgJ2IpIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBGaWVsZF9pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IGdldCB0ID0gdC5nZXRcbiAgICBsZXQgaXNfbXV0YWJsZSB0ID0gdC5pc19tdXRhYmxlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFJlY29yZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyBmaWVsZCA9IEZpZWxkIDogKCdyZWNvcmQsICdhKSBGaWVsZC50IC0+ICdyZWNvcmQgZmllbGRcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyBmaWVsZHMgOiAnYSBmaWVsZCBhcnJheVxuICAgICAgOyBoYXNfZG91YmxlX2FycmF5X3RhZyA6IGJvb2xcbiAgICAgIDsgY3JlYXRlIDogJ2EgZmllbGRzIC0+ICdhXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmQgOiBzaWdcbiAgICAoKipcbiAgICAgICBBbiBleGlzdGVudGlhbCB0eXBlIHVzZWQgdG8gZ2F0aGVyIGFsbCB0aGUgZmllbGRzIGNvbnN0aXR1aW5nIGEgcmVjb3JkIHR5cGUuIHRoZVxuICAgICAgIFsncmVjb3JkXSBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZSBmaWVsZCBvZiB0aGF0XG4gICAgICAgcmVjb3JkIHR5cGUuIFRoZSB0eXBlIG9mIHRoZSBmaWVsZHMgbWlnaHQgYmUgZGlmZmVyZW50IGZvciBlYWNoIGZpZWxkIGFuZCBpcyB0aHVzXG4gICAgICAgZXhpc3RlbnRpYWwuXG4gICAgKilcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBbJ3JlY29yZCBmaWVsZHNdIGlzIGEgdHlwZSBpc29tb3JwaGljIHRvIFsncmVjb3JkXS4gIFRoaXMgZ2l2ZXMgYSB3YXkgdG8gZ2V0IHRoZVxuICAgICAgIGZpZWxkIHZhbHVlIGZvciBlYWNoIGZpZWxkIG9mIHRoZSByZWNvcmQuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICB0aGF0IGl0IGlzIGNvbnZlbmllbnQgZm9yIHdyaXRpbmcgZ2VuZXJpYyBjb21wdXRhdGlvbnMuXG4gICAgKilcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSByZWNvcmQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgcmVjb3JkIHR5cGUgd2l0bmVzc2VkLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuXG4gICAgKCoqXG4gICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBvZiB0aGlzIHJlY29yZCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIGZpZWxkIG9mIHRoaXMgcmVjb3JkIHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIGZpZWxkIDogJ2EgdCAtPiBpbnQgLT4gJ2EgZmllbGRcblxuICAgICgqKlxuICAgICAgIFRoaXMgaXMgYSBsb3cgbGV2ZWwgbWV0YWRhdGEgcmVnYXJkaW5nIHRoZSB3YXkgdGhlIG9jYW1sIGNvbXBpbGVyIHJlcHJlc2VudCB0aGVcbiAgICAgICBhcnJheSB1bmRlcm5lYXRoIHRoYXQgaXMgdGhlIHJ1bnRpbWUgdmFsdWUgb2YgYSByZWNvcmQgb2YgdHlwZSBbJ2FdIGdpdmVuIGEgd2l0bmVzc1xuICAgICAgIG9mIHR5cGUgWydhIHRdLiBbaGFzX2RvdWJsZV9hcnJheV90YWcgd10gcmV0dXJucyBbdHJ1ZV0gaWYgdGhlIGFycmF5IHRoYXRcbiAgICAgICByZXByZXNlbnRzIHJ1bnRpbWUgdmFsdWVzIG9mIHRoaXMgdHlwZSBpcyBhbiBvcHRpbWl6ZWQgb2NhbWwgZmxvYXQgYXJyYXkuXG4gICAgICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgYmUgdHJ1ZSBmb3IgcmVjb3JkIHdoZXJlIGFsbCBmaWVsZHMgYXJlIHN0YXRpY2FsbHkga25vd24gYXMgdG9cbiAgICAgICBiZSBbZmxvYXRzXS5cblxuICAgICAgIE5vdGUgdGhhdCB5b3UgY2FuJ3QgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZHluYW1pY2FsbHkgYnkgaW5zcGVjdGluZyB0aGUgdHlwZXJlcCBvbmNlXG4gICAgICAgaXQgaXMgYXBwbGllZCwgYmVjYXVzZSB0aGVyZSBpcyBhdCB0aGlzIHBvaW50IG5vIHdheSB0byB0ZWxsIHdoZXRoZXIgb25lIG9mIHRoZVxuICAgICAgIGZpZWxkIGlzIHBvbHltb3JwaGljIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgRXhwb3NlIG9uZSBkaXJlY3Rpb24gb2YgdGhlIGlzb21vcnBoaXNtIGJldHdlZW4gYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYW5kIGEgdmFsdWUgb2ZcbiAgICAgICB0eXBlIFsnYSBmaWVsZHNdLiBCYXNpY2FsbHksIGdpdmVuIGFuIGVuY29kaW5nIHdheSBvZiBhY2Nlc3NpbmcgdGhlIHZhbHVlIG9mIGFsbFxuICAgICAgIHRoZSBmaWVsZHMgb2YgYSByZWNvcmQsIGNyZWF0ZSB0aGF0IHJlY29yZCBhbmQgcmV0dXJuIGl0LlxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICdhIHQgLT4gJ2EgZmllbGRzIC0+ICdhXG5cbiAgICAoKipcbiAgICAgICBmb2xkaW5nIGFsb25nIHRoZSB0YWdzIG9mIHRoZSB2YXJpYW50IHR5cGVcbiAgICAqKVxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooJ2FjYyAtPiAnYSBmaWVsZCAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBSZWNvcmRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUmVjb3JkX2ludGVybmFsXG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCB0ID0gdC50eXBlbmFtZVxuICAgIGxldCBsZW5ndGggdCA9IEFycmF5Lmxlbmd0aCB0LmZpZWxkc1xuICAgIGxldCBmaWVsZCB0IGluZGV4ID0gdC5maWVsZHMuKGluZGV4KVxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyB0ID0gdC5oYXNfZG91YmxlX2FycmF5X3RhZ1xuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC5maWVsZHNcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSBOYW1lX29mID0gc3RydWN0XG4gIGxldCB0eXBlbmFtZV9vZl9pbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDMyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQzMlxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQzMlwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfaW50NjQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludDY0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludDY0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9uYXRpdmVpbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG5hdGl2ZWludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJuYXRpdmVpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2NoYXIgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGNoYXJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiY2hhclwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfZmxvYXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImZsb2F0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9zdHJpbmcgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJzdHJpbmdcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2J5dGVzID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJieXRlc1wiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfYm9vbCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYm9vbFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJib29sXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl91bml0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcInVuaXRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbW9kdWxlIE1fb3B0aW9uID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgICAgIGxldCBuYW1lID0gXCJvcHRpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2Zfb3B0aW9uID0gTV9vcHRpb24udHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xpc3QgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBuYW1lID0gXCJsaXN0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xpc3QgPSBNX2xpc3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2FycmF5ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICAgICAgbGV0IG5hbWUgPSBcImFycmF5XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2FycmF5ID0gTV9hcnJheS50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fbGF6eV90ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbiAgICAgIGxldCBuYW1lID0gXCJsYXp5X3RcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfbGF6eV90ID0gTV9sYXp5X3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3JlZiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlZlxuXG4gICAgICBsZXQgbmFtZSA9IFwicmVmXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3JlZiA9IE1fcmVmLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9mdW5jdGlvbiA9IFR5cGVuYW1lLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIC0+ICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJmdW5jdGlvblwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9mdW5jdGlvbiA9IE1fZnVuY3Rpb24udHlwZW5hbWVfb2ZfdFxuXG4gIHR5cGUgdHVwbGUwID0gdW5pdFxuXG4gIG1vZHVsZSBNX3R1cGxlMCA9IFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHR1cGxlMFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUwXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMCA9IE1fdHVwbGUwLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTIgPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTJcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUyID0gTV90dXBsZTIudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlMyA9IFR5cGVuYW1lLk1ha2UzIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2NcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlM1wiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTMgPSBNX3R1cGxlMy50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU0ID0gVHlwZW5hbWUuTWFrZTQgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSAqICdiICogJ2MgKiAnZFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNCA9IE1fdHVwbGU0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTUgPSBUeXBlbmFtZS5NYWtlNSAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTVcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGU1ID0gTV90dXBsZTUudHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSByZWMgVHlwZXJlcCA6IHNpZ1xuICB0eXBlIF8gdCA9XG4gICAgfCBJbnQgOiBpbnQgdFxuICAgIHwgSW50MzIgOiBpbnQzMiB0XG4gICAgfCBJbnQ2NCA6IGludDY0IHRcbiAgICB8IE5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgfCBDaGFyIDogY2hhciB0XG4gICAgfCBGbG9hdCA6IGZsb2F0IHRcbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCeXRlcyA6IGJ5dGVzIHRcbiAgICB8IEJvb2wgOiBib29sIHRcbiAgICB8IFVuaXQgOiB1bml0IHRcbiAgICB8IE9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB8IExpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHwgQXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgICB8IExhenkgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gICAgfCBSZWYgOiAnYSB0IC0+ICdhIHJlZiB0XG4gICAgfCBGdW5jdGlvbiA6ICgnZG9tIHQgKiAncm5nIHQpIC0+ICgnZG9tIC0+ICdybmcpIHRcbiAgICB8IFR1cGxlIDogJ2EgVHlwZXJlcC5UdXBsZS50IC0+ICdhIHRcbiAgICB8IFJlY29yZCA6ICdhIFR5cGVyZXAuUmVjb3JkLnQgLT4gJ2EgdFxuICAgIHwgVmFyaWFudCA6ICdhIFR5cGVyZXAuVmFyaWFudC50IC0+ICdhIHRcbiAgICB8IE5hbWVkIDogKCdhIFR5cGVyZXAuTmFtZWQudCAqICdhIHQgbGF6eV90IG9wdGlvbikgLT4gJ2EgdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgVDAgPSBzaWdcbiAgICAgIHR5cGUgbmFtZWRcbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgICAgIHR5cGUgJ2EgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdhIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBhIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQyID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYiBUeXBlbmFtZS50IC0+ICgnYSwgJ2IpIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYikgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDMgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYykgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDQgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ1ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGVcblxuICAgICAgdmFsIGUgOiBlIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2UgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCwgZSkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgKCogdGhlcmUgdGhlIG1vZHVsZSBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBhIHR5cGUgW3RdIHdpdGhcbiAgICAgICBwYXJhbWV0ZXJzIHdob3NlIGtpbmQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSB0eXBlIHZhcmlhYmxlOiBbJ2EgJ3RdLCBldmVuIHdpdGhcbiAgICAgICBhIGdhZHQuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVDAgb2YgKG1vZHVsZSBUMCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMSBvZiAobW9kdWxlIFQxIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQyIG9mIChtb2R1bGUgVDIgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDMgb2YgKG1vZHVsZSBUMyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNCBvZiAobW9kdWxlIFQ0IHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ1IG9mIChtb2R1bGUgVDUgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICAgIHZhbCBuYW1lIDogXyB0IC0+IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgVHVwbGUgOiBzaWdcbiAgICAoKiB0aGVzZSBjb25zdHJ1Y3RvcnMgY291bGQgYmUgcGx1bmdlZCBhdCB0b3BsZXZlbCBvZiBUeXBlcmVwLnQsIGhvd2V2ZXIgaXQgaXMgbGVzc1xuICAgICAgIHZlcmJvc2UgdGhhdCB3YXkgKilcbiAgICB0eXBlIF8gdCA9XG4gICAgICB8IFQyIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCkgLT4gKCdhICogJ2IpIHRcbiAgICAgIHwgVDMgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gICAgICB8IFQ0IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICAgICAgfCBUNSA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudCAqICdlIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuXG4gICAgdmFsIGFyaXR5IDogXyB0IC0+IGludFxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBUeXBlcmVwLnRcblxuICB2YWwgc2FtZSA6IF8gdCAtPiBfIHQgLT4gYm9vbFxuICB2YWwgc2FtZV93aXRuZXNzIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbiAgdmFsIHNhbWVfd2l0bmVzc19leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50XG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIHZhbCBoZWFkIDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBUMCBfIC0+IDBcbiAgICAgIHwgVDEgXyAtPiAxXG4gICAgICB8IFQyIF8gLT4gMlxuICAgICAgfCBUMyBfIC0+IDNcbiAgICAgIHwgVDQgXyAtPiA0XG4gICAgICB8IFQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCAodHlwZSBhKSA9IGZ1bmN0aW9uXG4gICAgICB8IFQwIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQwIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQxIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQxIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQyIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQzIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ0IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ1IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ1IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgOztcblxuICAgIGxldCBuYW1lIHJlcCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgKHR5cGVuYW1lX29mX3QgcmVwKSlcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlID0gc3RydWN0XG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoaXMgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIGxldCBhcml0eSA6IHR5cGUgYS4gYSB0IC0+IGludCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgXyAtPiAyXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgXyAtPiAzXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgXyAtPiA0XG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgXyAtPiA1XG4gICAgOztcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICAgIHwgVDIgKGEsIGIpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUyIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSkgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgfCBUMyAoYSwgYiwgYykgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTNcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgIHwgVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU0XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgfCBUNSAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTVcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGQpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlcFxuICAgIGVuZClcblxuICBsZXQgcmVjIHR5cGVuYW1lX29mX3QgOiB0eXBlIGEuIGEgdCAtPiBhIFR5cGVuYW1lLnQgPSBmdW5jdGlvblxuICAgIHwgSW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50XG4gICAgfCBJbnQzMiAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDMyXG4gICAgfCBJbnQ2NCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDY0XG4gICAgfCBOYXRpdmVpbnQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICB8IENoYXIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9jaGFyXG4gICAgfCBGbG9hdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2Zsb2F0XG4gICAgfCBTdHJpbmcgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9zdHJpbmdcbiAgICB8IEJ5dGVzIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICB8IEJvb2wgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9ib29sXG4gICAgfCBVbml0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfdW5pdFxuICAgIHwgT3B0aW9uIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX29wdGlvbiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBMaXN0IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2xpc3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgQXJyYXkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYXJyYXkgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGF6eSByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9sYXp5X3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgUmVmIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3JlZiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBGdW5jdGlvbiAoZG9tLCBybmcpIC0+XG4gICAgICBOYW1lX29mLnR5cGVuYW1lX29mX2Z1bmN0aW9uICh0eXBlbmFtZV9vZl90IGRvbSkgKHR5cGVuYW1lX29mX3Qgcm5nKVxuICAgIHwgVHVwbGUgcmVwIC0+IFR5cGVyZXAuVHVwbGUudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFJlY29yZCByZXAgLT4gVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFZhcmlhbnQgcmVwIC0+IFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZVxuICA7O1xuXG4gIGxldCByZWMgc2FtZV93aXRuZXNzIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIFR5cGVfZXF1YWwudCBvcHRpb24gPVxuICAgIGZ1biB0MSB0MiAtPlxuICAgICAgbGV0IG1vZHVsZSBFID0gVHlwZV9lcXVhbCBpblxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgTmFtZWQgKG5hbWUxLCByMSksIE5hbWVkIChuYW1lMiwgcjIpIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3MgKE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZTEpIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUyKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggcjEsIHIyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBTb21lIChsYXp5IHQxKSwgTm9uZSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgTm9uZSwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZSkpXG4gICAgICB8IE5hbWVkIChfLCByMSksIHQyIC0+XG4gICAgICAgIChtYXRjaCByMSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDEpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IHQxLCBOYW1lZCAoXywgcjIpIC0+XG4gICAgICAgIChtYXRjaCByMiB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IEludCwgSW50IC0+IFNvbWUgRS5UXG4gICAgICB8IEludDMyLCBJbnQzMiAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQ2NCwgSW50NjQgLT4gU29tZSBFLlRcbiAgICAgIHwgTmF0aXZlaW50LCBOYXRpdmVpbnQgLT4gU29tZSBFLlRcbiAgICAgIHwgQ2hhciwgQ2hhciAtPiBTb21lIEUuVFxuICAgICAgfCBGbG9hdCwgRmxvYXQgLT4gU29tZSBFLlRcbiAgICAgIHwgU3RyaW5nLCBTdHJpbmcgLT4gU29tZSBFLlRcbiAgICAgIHwgQnl0ZXMsIEJ5dGVzIC0+IFNvbWUgRS5UXG4gICAgICB8IEJvb2wsIEJvb2wgLT4gU29tZSBFLlRcbiAgICAgIHwgVW5pdCwgVW5pdCAtPiBTb21lIEUuVFxuICAgICAgfCBPcHRpb24gcjEsIE9wdGlvbiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMaXN0IHIxLCBMaXN0IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEFycmF5IHIxLCBBcnJheSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMYXp5IHIxLCBMYXp5IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IFJlZiByMSwgUmVmIHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEZ1bmN0aW9uIChkb20xLCBybmcxKSwgRnVuY3Rpb24gKGRvbTIsIHJuZzIpIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgZG9tMSBkb20yLCBzYW1lX3dpdG5lc3Mgcm5nMSBybmcyIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICB8IFR1cGxlIHQxLCBUdXBsZSB0MiAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSBUeXBlcmVwLlR1cGxlIGluXG4gICAgICAgIChtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgfCBULlQyIChhMSwgYjEpLCBULlQyIChhMiwgYjIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQzIChhMSwgYjEsIGMxKSwgVC5UMyAoYTIsIGIyLCBjMikgLT5cbiAgICAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8gfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQ0IChhMSwgYjEsIGMxLCBkMSksIFQuVDQgKGEyLCBiMiwgYzIsIGQyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIsIHNhbWVfd2l0bmVzcyBjMSBjMiwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8gfCBfLCBOb25lLCBfLCBfIHwgXywgXywgTm9uZSwgXyB8IF8sIF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNSAoYTEsIGIxLCBjMSwgZDEsIGUxKSwgVC5UNSAoYTIsIGIyLCBjMiwgZDIsIGUyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgKCBzYW1lX3dpdG5lc3MgYTEgYTJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYjEgYjJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYzEgYzJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZDEgZDJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZTEgZTIgKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBOb25lLCBfLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIE5vbmUsIF8sIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgTm9uZSwgX1xuICAgICAgICAgICAgfCBfLCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDIgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDMgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDQgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDUgXywgXyAtPiBOb25lKVxuICAgICAgfCBSZWNvcmQgcjEsIFJlY29yZCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMSlcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgVmFyaWFudCByMSwgVmFyaWFudCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIyKVxuICAgICAgfCBJbnQsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQzMiwgXyAtPiBOb25lXG4gICAgICB8IEludDY0LCBfIC0+IE5vbmVcbiAgICAgIHwgTmF0aXZlaW50LCBfIC0+IE5vbmVcbiAgICAgIHwgQ2hhciwgXyAtPiBOb25lXG4gICAgICB8IEZsb2F0LCBfIC0+IE5vbmVcbiAgICAgIHwgU3RyaW5nLCBfIC0+IE5vbmVcbiAgICAgIHwgQnl0ZXMsIF8gLT4gTm9uZVxuICAgICAgfCBCb29sLCBfIC0+IE5vbmVcbiAgICAgIHwgVW5pdCwgXyAtPiBOb25lXG4gICAgICB8IE9wdGlvbiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgTGlzdCBfLCBfIC0+IE5vbmVcbiAgICAgIHwgQXJyYXkgXywgXyAtPiBOb25lXG4gICAgICB8IExhenkgXywgXyAtPiBOb25lXG4gICAgICB8IFJlZiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgRnVuY3Rpb24gXywgXyAtPiBOb25lXG4gICAgICB8IFR1cGxlIF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWNvcmQgXywgXyAtPiBOb25lXG4gICAgICB8IFZhcmlhbnQgXywgXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWUgYSBiID0gc2FtZV93aXRuZXNzIGEgYiA8PiBOb25lXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gYSBiID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgYSBiIHdpdGhcbiAgICB8IFNvbWUgcHJvb2YgLT4gcHJvb2ZcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWFkID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQgKF8sIFNvbWUgKGxhenkgdCkpIC0+IGhlYWQgdFxuICAgIHwgdCAtPiB0XG4gIDs7XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfaW50ID0gVHlwZXJlcC5JbnRcbmxldCB0eXBlcmVwX29mX2ludDMyID0gVHlwZXJlcC5JbnQzMlxubGV0IHR5cGVyZXBfb2ZfaW50NjQgPSBUeXBlcmVwLkludDY0XG5sZXQgdHlwZXJlcF9vZl9uYXRpdmVpbnQgPSBUeXBlcmVwLk5hdGl2ZWludFxubGV0IHR5cGVyZXBfb2ZfY2hhciA9IFR5cGVyZXAuQ2hhclxubGV0IHR5cGVyZXBfb2ZfZmxvYXQgPSBUeXBlcmVwLkZsb2F0XG5sZXQgdHlwZXJlcF9vZl9zdHJpbmcgPSBUeXBlcmVwLlN0cmluZ1xubGV0IHR5cGVyZXBfb2ZfYnl0ZXMgPSBUeXBlcmVwLkJ5dGVzXG5sZXQgdHlwZXJlcF9vZl9ib29sID0gVHlwZXJlcC5Cb29sXG5sZXQgdHlwZXJlcF9vZl91bml0ID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl9vcHRpb24gcmVwID0gVHlwZXJlcC5PcHRpb24gcmVwXG5sZXQgdHlwZXJlcF9vZl9saXN0IHJlcCA9IFR5cGVyZXAuTGlzdCByZXBcbmxldCB0eXBlcmVwX29mX2FycmF5IHJlcCA9IFR5cGVyZXAuQXJyYXkgcmVwXG5sZXQgdHlwZXJlcF9vZl9sYXp5X3QgcmVwID0gVHlwZXJlcC5MYXp5IHJlcFxubGV0IHR5cGVyZXBfb2ZfcmVmIHJlcCA9IFR5cGVyZXAuUmVmIHJlcFxubGV0IHR5cGVyZXBfb2ZfZnVuY3Rpb24gZG9tIHJuZyA9IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUwID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl90dXBsZTIgYSBiID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMiAoYSwgYikpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTMgYSBiIGMgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQzIChhLCBiLCBjKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlNCBhIGIgYyBkID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTUgYSBiIGMgZCBlID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNSAoYSwgYiwgYywgZCwgZSkpXG5cbmluY2x1ZGUgTmFtZV9vZlxuXG5sZXQgdmFsdWVfdHVwbGUwID0gKClcblxubGV0IHR5cGVyZXBfb2ZfaW50NjMsIHR5cGVuYW1lX29mX2ludDYzID1cbiAgbGV0IHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHJcbiAgICA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBhIFR5cGVyZXAudCAqIGEgVHlwZW5hbWUudFxuICAgID0gZnVuY3Rpb25cbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IHR5cGVyZXBfb2ZfaW50LCB0eXBlbmFtZV9vZl9pbnRcbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gdHlwZXJlcF9vZl9pbnQ2NCwgdHlwZW5hbWVfb2ZfaW50NjRcbiAgaW5cbiAgdHlwZXJlcF9hbmRfdHlwZW5hbWVfb2ZfaW50NjNfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuOztcbiIsIigqIHVzaW5nIHRoZSBoYXNoX3ZhcmlhbnQgb2YgcGFfdHlwZV9jb252IGF0IGNvbXBpbGUgdGltZSAqKVxubGV0IHJlcHJfb2ZfcG9seV92YXJpYW50IDogWz4gXSAtPiBpbnQgPVxuICBmdW4gdmFyaWFudCAtPlxuICBsZXQgb2JqID0gT2JqLnJlcHIgdmFyaWFudCBpblxuICBpZiBPYmouaXNfaW50IG9ialxuICB0aGVuIE9iai5vYmogb2JqXG4gIGVsc2UgKFxuICAgIGxldCBzaXplID0gT2JqLnNpemUgb2JqIGluXG4gICAgYXNzZXJ0IChzaXplID0gMik7XG4gICAgbGV0IHJlcHIgPSBPYmouZmllbGQgb2JqIDAgaW5cbiAgICBhc3NlcnQgKE9iai5pc19pbnQgcmVwcik7XG4gICAgT2JqLm9iaiByZXByKVxuOztcblxubGV0IGhhc2hfdmFyaWFudCBzID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gKDIyMyAqICFhY2N1KSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKCgxIGxzbCAzMSkgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdVxuOztcblxuKCogYSBmZXcgdW5pdCB0ZXN0cyBvZiBjYXNlcyB0aGF0IGhhdmUgdHJpZ2dlcmVkIGRpZmZzIGluIHRoZSBwYXN0IG9mIHRoaXNcbiAgIGxpYiAqKVxubGV0ICgpID0gYXNzZXJ0IChyZXByX29mX3BvbHlfdmFyaWFudCBgTGF0ZW5jeV9zdGF0cyA9IGhhc2hfdmFyaWFudCBcIkxhdGVuY3lfc3RhdHNcIilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYHplcm8gPSBoYXNoX3ZhcmlhbnQgXCJ6ZXJvXCIpXG5sZXQgZG91YmxlX2FycmF5X3ZhbHVlID0gT2JqLm1hZ2ljIDAuXG5sZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgYSA9IE9iai5kb3VibGVfYXJyYXlfdGFnID0gT2JqLnRhZyAoT2JqLnJlcHIgYSlcblxubGV0ICgpID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSBkb3VibGUgPVxuICAgICAgeyBhIDogZmxvYXRcbiAgICAgIDsgYiA6IGZsb2F0XG4gICAgICB9XG5cbiAgICB0eXBlIHNpbXBsZSA9XG4gICAgICB7IGMgOiBmbG9hdFxuICAgICAgOyBkIDogaW50XG4gICAgICB9XG5cbiAgICBsZXQgZG91YmxlID0geyBhID0gZG91YmxlX2FycmF5X3ZhbHVlOyBiID0gZG91YmxlX2FycmF5X3ZhbHVlIH1cbiAgICBsZXQgc2ltcGxlID0geyBjID0gZG91YmxlX2FycmF5X3ZhbHVlOyBkID0gZG91YmxlX2FycmF5X3ZhbHVlIH1cbiAgZW5kXG4gIGluXG4gIGFzc2VydCAoaGFzX2RvdWJsZV9hcnJheV90YWcgTS5kb3VibGUpO1xuICBhc3NlcnQgKG5vdCAoaGFzX2RvdWJsZV9hcnJheV90YWcgTS5zaW1wbGUpKVxuOztcbiIsIm1vZHVsZSBNIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6IHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdhIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAoJ2EsICdiKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gJ2MgWC50IC0+ICgnYSwgJ2IsICdjKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gJ2MgWC50IC0+ICdkIFgudCAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM1IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBYLnRcbiAgICAgIC0+ICdiIFgudFxuICAgICAgLT4gJ2MgWC50XG4gICAgICAtPiAnZCBYLnRcbiAgICAgIC0+ICdlIFgudFxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCBYLnRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmID0gVmFyaWFudF9hbmRfcmVjb3JkX2ludGZcblxubW9kdWxlIEhlbHBlciAoQSA6IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMpIChCIDogVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUykgPSBzdHJ1Y3RcbiAgdHlwZSBtYXAgPSB7IG1hcCA6ICdhLiAnYSBBLnQgLT4gJ2EgQi50IH1cblxuICBsZXQgbWFwX3ZhcmlhbnQgKHR5cGUgdmFyaWFudCkgeyBtYXAgfSAodmFyaWFudCA6IHZhcmlhbnQgQS5WYXJpYW50LnQpID1cbiAgICBsZXQgbWFwX2NyZWF0ZSA9IGZ1bmN0aW9uXG4gICAgICB8IEEuVGFnLkFyZ3MgZmN0IC0+IEIuVGFnX2ludGVybmFsLkFyZ3MgZmN0XG4gICAgICB8IEEuVGFnLkNvbnN0IGsgLT4gQi5UYWdfaW50ZXJuYWwuQ29uc3Qga1xuICAgIGluXG4gICAgbGV0IG1hcF90YWcgdGFnID1cbiAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICB8IEEuVmFyaWFudC5UYWcgdGFnIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IEEuVGFnLmxhYmVsIHRhZyBpblxuICAgICAgICBsZXQgcmVwID0gbWFwIChBLlRhZy50cmF2ZXJzZSB0YWcpIGluXG4gICAgICAgIGxldCBhcml0eSA9IEEuVGFnLmFyaXR5IHRhZyBpblxuICAgICAgICBsZXQgYXJnc19sYWJlbHMgPSBBLlRhZy5hcmdzX2xhYmVscyB0YWcgaW5cbiAgICAgICAgbGV0IGluZGV4ID0gQS5UYWcuaW5kZXggdGFnIGluXG4gICAgICAgIGxldCBvY2FtbF9yZXByID0gQS5UYWcub2NhbWxfcmVwciB0YWcgaW5cbiAgICAgICAgbGV0IHR5aWQgPSBBLlRhZy50eWlkIHRhZyBpblxuICAgICAgICBsZXQgY3JlYXRlID0gbWFwX2NyZWF0ZSAoQS5UYWcuY3JlYXRlIHRhZykgaW5cbiAgICAgICAgQi5WYXJpYW50X2ludGVybmFsLlRhZ1xuICAgICAgICAgIChCLlRhZy5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgICAgICAgIHsgQi5UYWdfaW50ZXJuYWwubGFiZWxcbiAgICAgICAgICAgICA7IHJlcFxuICAgICAgICAgICAgIDsgYXJpdHlcbiAgICAgICAgICAgICA7IGFyZ3NfbGFiZWxzXG4gICAgICAgICAgICAgOyBpbmRleFxuICAgICAgICAgICAgIDsgb2NhbWxfcmVwclxuICAgICAgICAgICAgIDsgdHlpZFxuICAgICAgICAgICAgIDsgY3JlYXRlXG4gICAgICAgICAgICAgfSlcbiAgICBpblxuICAgIGxldCB0eXBlbmFtZSA9IEEuVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQgaW5cbiAgICBsZXQgcG9seW1vcnBoaWMgPSBBLlZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCBpblxuICAgIGxldCB0YWdzID1cbiAgICAgIEFycmF5LmluaXQgKEEuVmFyaWFudC5sZW5ndGggdmFyaWFudCkgKGZ1biBpbmRleCAtPlxuICAgICAgICBtYXBfdGFnIChBLlZhcmlhbnQudGFnIHZhcmlhbnQgaW5kZXgpKVxuICAgIGluXG4gICAgbGV0IHZhbHVlIChhIDogdmFyaWFudCkgPVxuICAgICAgbWF0Y2ggQS5WYXJpYW50LnZhbHVlIHZhcmlhbnQgYSB3aXRoXG4gICAgICB8IEEuVmFyaWFudC5WYWx1ZSAoYXRhZywgYSkgLT5cbiAgICAgICAgKGZ1biAodHlwZSBhcmdzKSAoYXRhZyA6ICh2YXJpYW50LCBhcmdzKSBBLlRhZy50KSAoYSA6IGFyZ3MpIC0+XG4gICAgICAgICAgIGxldCAoQi5WYXJpYW50X2ludGVybmFsLlRhZyBidGFnKSA9IHRhZ3MuKEEuVGFnLmluZGV4IGF0YWcpIGluXG4gICAgICAgICAgIChmdW4gKHR5cGUgZXgpIChidGFnIDogKHZhcmlhbnQsIGV4KSBCLlRhZy50KSAtPlxuICAgICAgICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIChBLlRhZy50eWlkIGF0YWcpIChCLlRhZy50eWlkIGJ0YWcpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBidGFnID0gKGJ0YWcgOiAodmFyaWFudCwgYXJncykgQi5UYWcudCkgaW5cbiAgICAgICAgICAgICAgQi5WYXJpYW50X2ludGVybmFsLlZhbHVlIChidGFnLCBhKSlcbiAgICAgICAgICAgICBidGFnKVxuICAgICAgICAgIGF0YWdcbiAgICAgICAgICBhXG4gICAgaW5cbiAgICBCLlZhcmlhbnQuaW50ZXJuYWxfdXNlX29ubHkgeyBCLlZhcmlhbnRfaW50ZXJuYWwudHlwZW5hbWU7IHRhZ3M7IHBvbHltb3JwaGljOyB2YWx1ZSB9XG4gIDs7XG5cbiAgbGV0IG1hcF9yZWNvcmQgKHR5cGUgcmVjb3JkKSB7IG1hcCB9IChyZWNvcmQgOiByZWNvcmQgQS5SZWNvcmQudCkgPVxuICAgIGxldCBtYXBfZmllbGQgZmllbGQgPVxuICAgICAgbWF0Y2ggZmllbGQgd2l0aFxuICAgICAgfCBBLlJlY29yZC5GaWVsZCBmaWVsZCAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBBLkZpZWxkLmxhYmVsIGZpZWxkIGluXG4gICAgICAgIGxldCByZXAgPSBtYXAgKEEuRmllbGQudHJhdmVyc2UgZmllbGQpIGluXG4gICAgICAgIGxldCBpbmRleCA9IEEuRmllbGQuaW5kZXggZmllbGQgaW5cbiAgICAgICAgbGV0IGlzX211dGFibGUgPSBBLkZpZWxkLmlzX211dGFibGUgZmllbGQgaW5cbiAgICAgICAgbGV0IHR5aWQgPSBBLkZpZWxkLnR5aWQgZmllbGQgaW5cbiAgICAgICAgbGV0IGdldCA9IEEuRmllbGQuZ2V0IGZpZWxkIGluXG4gICAgICAgIEIuUmVjb3JkX2ludGVybmFsLkZpZWxkXG4gICAgICAgICAgKEIuRmllbGQuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgICAgICAgICB7IEIuRmllbGRfaW50ZXJuYWwubGFiZWw7IHJlcDsgaW5kZXg7IGlzX211dGFibGU7IHR5aWQ7IGdldCB9KVxuICAgIGluXG4gICAgbGV0IHR5cGVuYW1lID0gQS5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZWNvcmQgaW5cbiAgICBsZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgPSBBLlJlY29yZC5oYXNfZG91YmxlX2FycmF5X3RhZyByZWNvcmQgaW5cbiAgICBsZXQgZmllbGRzID1cbiAgICAgIEFycmF5LmluaXQgKEEuUmVjb3JkLmxlbmd0aCByZWNvcmQpIChmdW4gaW5kZXggLT5cbiAgICAgICAgbWFwX2ZpZWxkIChBLlJlY29yZC5maWVsZCByZWNvcmQgaW5kZXgpKVxuICAgIGluXG4gICAgbGV0IGNyZWF0ZSB7IEIuUmVjb3JkX2ludGVybmFsLmdldCB9ID1cbiAgICAgIGxldCBnZXQgKHR5cGUgYSkgKGFmaWVsZCA6IChfLCBhKSBBLkZpZWxkLnQpID1cbiAgICAgICAgbWF0Y2ggZmllbGRzLihBLkZpZWxkLmluZGV4IGFmaWVsZCkgd2l0aFxuICAgICAgICB8IEIuUmVjb3JkX2ludGVybmFsLkZpZWxkIGJmaWVsZCAtPlxuICAgICAgICAgIChmdW4gKHR5cGUgZXgpIChiZmllbGQgOiAocmVjb3JkLCBleCkgQi5GaWVsZC50KSAtPlxuICAgICAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biAoQS5GaWVsZC50eWlkIGFmaWVsZCkgKEIuRmllbGQudHlpZCBiZmllbGQpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgYmZpZWxkID0gKGJmaWVsZCA6IChyZWNvcmQsIGEpIEIuRmllbGQudCkgaW5cbiAgICAgICAgICAgICBnZXQgYmZpZWxkKVxuICAgICAgICAgICAgYmZpZWxkXG4gICAgICBpblxuICAgICAgQS5SZWNvcmQuY3JlYXRlIHJlY29yZCB7IEEuUmVjb3JkLmdldCB9XG4gICAgaW5cbiAgICBCLlJlY29yZC5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgeyBCLlJlY29yZF9pbnRlcm5hbC50eXBlbmFtZTsgZmllbGRzOyBoYXNfZG91YmxlX2FycmF5X3RhZzsgY3JlYXRlIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBOYW1lZCA9IHNpZ1xuICB0eXBlICdhIGNvbXB1dGF0aW9uXG5cbiAgbW9kdWxlIENvbnRleHQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGluaXQgOiBDb250ZXh0LnQgLT4gJ2EgVHlwZW5hbWUudCAtPiAnYSB0XG4gIHZhbCBnZXRfd2lwX2NvbXB1dGF0aW9uIDogJ2EgdCAtPiAnYSBjb21wdXRhdGlvblxuICB2YWwgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIDogJ2EgdCAtPiAnYSBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICB2YWwgc2hhcmUgOiBfIFR5cGVyZXAudCAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcHV0YXRpb24gPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgaW50IDogaW50IHRcbiAgdmFsIGludDMyIDogaW50MzIgdFxuICB2YWwgaW50NjQgOiBpbnQ2NCB0XG4gIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICB2YWwgY2hhciA6IGNoYXIgdFxuICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgdFxuICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gIHZhbCBib29sIDogYm9vbCB0XG4gIHZhbCB1bml0IDogdW5pdCB0XG4gIHZhbCBvcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gIHZhbCBsaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgdmFsIGFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gIHZhbCBsYXp5X3QgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gIHZhbCByZWZfIDogJ2EgdCAtPiAnYSByZWYgdFxuICB2YWwgZnVuY3Rpb25fIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAtPiAnYikgdFxuICB2YWwgdHVwbGUyIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB0dXBsZTMgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gIHZhbCB0dXBsZTQgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAnZCB0IC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICB2YWwgdHVwbGU1IDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gJ2QgdCAtPiAnZSB0IC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG4gIHZhbCByZWNvcmQgOiAnYSBSZWNvcmQudCAtPiAnYSB0XG4gIHZhbCB2YXJpYW50IDogJ2EgVmFyaWFudC50IC0+ICdhIHRcblxuICBtb2R1bGUgTmFtZWQgOiBOYW1lZCB3aXRoIHR5cGUgJ2EgY29tcHV0YXRpb24gOj0gJ2EgdFxuZW5kXG5cbigqIHNwZWNpYWwgZnVuY3RvciBhcHBsaWNhdGlvbiBmb3IgY29tcHV0YXRpb24gYXMgY2xvc3VyZSBvZiB0aGUgZm9ybSBbYSAtPiBiXSAqKVxubW9kdWxlIE1ha2VfbmFtZWRfZm9yX2Nsb3N1cmUgKFggOiBzaWdcbiAgICB0eXBlICdhIGlucHV0XG4gICAgdHlwZSAnYSBvdXRwdXRcbiAgICB0eXBlICdhIHQgPSAnYSBpbnB1dCAtPiAnYSBvdXRwdXRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB1bml0XG5cbiAgICBsZXQgY3JlYXRlID0gaWdub3JlXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBydW50aW1lX2RlcmVmZXJlbmNlIDogJ2EgWC50XG4gICAgOyBydW50aW1lX3JlZmVyZW5jZSA6ICdhIFgudCByZWZcbiAgICA7IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIDogJ2EgWC50IG9wdGlvbiByZWZcbiAgICB9XG5cbiAgZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmdcblxuICBsZXQgaW5pdCAoKSBuYW1lID1cbiAgICBsZXQgcGF0aCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgbmFtZSkgaW5cbiAgICBsZXQgciA9IHJlZiAoZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZCBwYXRoKSkgaW5cbiAgICB7IHJ1bnRpbWVfZGVyZWZlcmVuY2UgPSAoZnVuIGlucHV0IC0+ICFyIGlucHV0KVxuICAgIDsgcnVudGltZV9yZWZlcmVuY2UgPSByXG4gICAgOyBjb21waWxldGltZV9kZXJlZmVyZW5jZSA9IHJlZiBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBnZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZCA9XG4gICAgbWF0Y2ggc2hhcmVkLmNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlLmNvbnRlbnRzIHdpdGhcbiAgICB8IFNvbWUgY2xvcyAtPiBjbG9zXG4gICAgfCBOb25lIC0+IHNoYXJlZC5ydW50aW1lX2RlcmVmZXJlbmNlXG4gIDs7XG5cbiAgbGV0IHNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24gPVxuICAgIGxldCBjb21waWxldGltZV9kZXJlZmVyZW5jZSA9IHNoYXJlZC5jb21waWxldGltZV9kZXJlZmVyZW5jZSBpblxuICAgIG1hdGNoIGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlLmNvbnRlbnRzIHdpdGhcbiAgICB8IFNvbWUgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmIEJhc2UucGh5c19lcXVhbCBzaGFyZWQucnVudGltZV9kZXJlZmVyZW5jZSBjb21wdXRhdGlvbiB0aGVuIGFzc2VydCBmYWxzZTtcbiAgICAgIGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIDo9IFNvbWUgY29tcHV0YXRpb247XG4gICAgICBzaGFyZWQucnVudGltZV9yZWZlcmVuY2UgOj0gY29tcHV0YXRpb247XG4gICAgICBjb21wdXRhdGlvblxuICA7O1xuXG4gIGxldCBzaGFyZSBfID0gdHJ1ZVxuZW5kXG5cbm1vZHVsZSBJZGVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgaW1wbGVtZW50cyA6IFR5cGVuYW1lLlVpZC50IC0+IGJvb2xcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEJyb2tlbl9kZXBlbmRlbmN5IG9mIHN0cmluZ1xuXG4gIGxldCBjaGVja19kZXBlbmRlbmNpZXMgbmFtZSByZXF1aXJlZCA9XG4gICAgbWF0Y2ggcmVxdWlyZWQgd2l0aFxuICAgIHwgW10gLT4gZnVuIF8gLT4gKClcbiAgICB8IF8gLT5cbiAgICAgIGZ1biB1aWQgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biB7IG5hbWUgPSBuYW1lJzsgaW1wbGVtZW50cyB9IC0+XG4gICAgICAgICAgICAgaWYgbm90IChpbXBsZW1lbnRzIHVpZClcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICgqIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBzZXQgdXAsIHRoaXMgaXMgYW4gZXJyb3IgZHVyaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHByb2dyYW0sIHdlIHJhdGhlciBmYWlsIHdpdGggYSBodW1hblxuICAgICAgICAgICAgICAgICAgcmVhZGFibGUgb3V0cHV0ICopXG4gICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJUeXBlX2dlbmVyaWMgJVMgcmVxdWlyZXMgJVMgZm9yIHVpZCAlU1xcblwiXG4gICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgIG5hbWUnXG4gICAgICAgICAgICAgICAgICAgKFR5cGVuYW1lLlVpZC5uYW1lIHVpZClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBwcmVycl9lbmRsaW5lIG1lc3NhZ2U7XG4gICAgICAgICAgICAgICByYWlzZSAoQnJva2VuX2RlcGVuZGVuY3kgbWVzc2FnZSkpKVxuICAgICAgICAgIHJlcXVpcmVkXG4gIDs7XG5lbmRcblxuKCogRXh0ZW5kaW5nIGFuIGV4aXN0aW5nIGdlbmVyaWMgKilcbm1vZHVsZSB0eXBlIEV4dGVuZGluZyA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcblxuICB2YWwgaWRlbnQgOiBJZGVudC50XG5cbiAgKCogZ2VuZXJpY19pZGVudCAqIHR5cGVuYW1lIG9yIGluZm8gKilcbiAgZXhjZXB0aW9uIE5vdF9pbXBsZW1lbnRlZCBvZiBzdHJpbmcgKiBzdHJpbmdcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGNvbXB1dGUgOiB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgY29tcHV0YXRpb24gLT4gJ2EgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIGNvbXB1dGF0aW9uIC0+ICdiIGNvbXB1dGF0aW9uIC0+ICgnYSwgJ2IpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZCBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM1IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZCBjb21wdXRhdGlvblxuICAgICAgLT4gJ2UgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgdmFsIHJlZ2lzdGVyMCA6IChtb2R1bGUgUykgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIxIDogKG1vZHVsZSBTMSkgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIyIDogKG1vZHVsZSBTMikgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIzIDogKG1vZHVsZSBTMykgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXI0IDogKG1vZHVsZSBTNCkgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXI1IDogKG1vZHVsZSBTNSkgLT4gdW5pdFxuXG4gICgqIHNwZWNpYWwgbGVzcyBzY2FyeSB0eXBlIHdoZW4gdGhlIHR5cGUgaGFzIG5vIHBhcmFtZXRlcnMgKilcbiAgdmFsIHJlZ2lzdGVyIDogJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIC0+IHVuaXRcblxuICAoKlxuICAgICBFc3NlbnRpYWxseSBiZWNhdXNlIHdlIGNhbm5vdCB0YWxrIGFib3V0IGEgdmFyaWFibGUgb2Yga2luZCAqIC0+IGtcbiAgICAgdmFsIHJlZ2lzdGVyMSA6ICdhICd0IFR5cGVyZXAudCAtPiAoJ2EgY29tcHV0YXRpb24gLT4gJ2EgJ3QgY29tcHV0YXRpb24pIC0+IHVuaXRcbiAgICAgLi4uXG4gICopXG5lbmRcblxuKCogSW1wbGVtZW50aW5nIGEgbmV3IGdlbmVyaWMgKilcbm1vZHVsZSB0eXBlIFNfaW1wbGVtZW50YXRpb24gPSBzaWdcbiAgaW5jbHVkZSBFeHRlbmRpbmdcblxuICAoKiByYWlzZSB1c2luZyB0aGUgY3VycmVudCBpZGVudCAqKVxuICB2YWwgcmFpc2Vfbm90X2ltcGxlbWVudGVkIDogc3RyaW5nIC0+ICdhXG5cbiAgdHlwZSBpbXBsZW1lbnRhdGlvbiA9IHsgZ2VuZXJpYyA6ICdhLiAnYSBUeXBlcmVwLnQgLT4gJ2EgY29tcHV0YXRpb24gfVxuXG4gICgqXG4gICAgIFN0YW5kYXJkIGNhc2UsIGZpbmQgYSBleHRlbmRlZF9pbXBsZW1lbnRhdGlvbiwgb3IgbG9vayBpbiB0aGUgY29udGVudFxuICAqKVxuICB2YWwgX3VzaW5nX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uXG4gICAgOiAgaW1wbGVtZW50YXRpb25cbiAgICAtPiAnYSBUeXBlcmVwLk5hbWVkLnRcbiAgICAtPiAnYSBUeXBlcmVwLnQgbGF6eV90IG9wdGlvblxuICAgIC0+ICdhIGNvbXB1dGF0aW9uXG5cbiAgKCpcbiAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IG1vcmUgY29udHJvbCBvbiB3aGF0IHlvdSB3YW50IHRvIGRvXG4gICopXG4gIHZhbCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uXG4gICAgOiAgaW1wbGVtZW50YXRpb25cbiAgICAtPiAnYSBUeXBlcmVwLk5hbWVkLnRcbiAgICAtPiAnYSBjb21wdXRhdGlvbiBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5kaW5nXG5cbiAgdmFsIG9mX3R5cGVyZXAgOiAnYSBUeXBlcmVwLnQgLT4gWyBgZ2VuZXJpYyBvZiAnYSBjb21wdXRhdGlvbiBdXG5cbiAgbW9kdWxlIENvbXB1dGF0aW9uIDogQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgPSAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2VfU19pbXBsZW1lbnRhdGlvbiAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcbiAgZW5kKSA6IFNfaW1wbGVtZW50YXRpb24gd2l0aCB0eXBlICdhIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgWC50XG4gIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG5cbiAgaW5jbHVkZSBUeXBlX2dlbmVyaWNfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgZW5kKVxuXG4gICgqIHdlIGRvIG5vdCB1c2UgY29yZSBzaW5jZSB3ZSBhcmUgZWFybGllciBpbiB0aGUgZGVwZW5kZW5jaWVzIGdyYXBoICopXG4gIG1vZHVsZSBVaWRfdGFibGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuVWlkKVxuXG4gICAgbGV0IGZpbmQgdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICB0cnkgU29tZSAoZmluZCB0YWJsZSBrZXkpIHdpdGhcbiAgICAgICAgfCBCYXNlLk5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgZWxzZSBOb25lXG4gICAgOztcblxuICAgIGxldCBjaGVja19kZXBlbmRlbmNpZXMgPSBJZGVudC5jaGVja19kZXBlbmRlbmNpZXMgWC5uYW1lIFgucmVxdWlyZWRcblxuICAgIGxldCByZXBsYWNlIHRhYmxlIGtleSB2YWx1ZSA9XG4gICAgICBjaGVja19kZXBlbmRlbmNpZXMga2V5O1xuICAgICAgcmVwbGFjZSAoTGF6eS5mb3JjZSB0YWJsZSkga2V5IHZhbHVlXG4gICAgOztcblxuICAgIGxldCBtZW0gdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICBtZW0gdGFibGUga2V5KVxuICAgICAgZWxzZSBmYWxzZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzaXplID0gMjU2XG4gIGxldCB0YWJsZTAgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTEgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTIgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTMgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTQgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTUgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG5cbiAgbGV0IGlzX3JlZ2lzdGVyZWQgdWlkID1cbiAgICBVaWRfdGFibGUubWVtIHRhYmxlMCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMSB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMiB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMyB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNSB1aWRcbiAgOztcblxuICBsZXQgaWRlbnQgPSB7IElkZW50Lm5hbWUgPSBYLm5hbWU7IGltcGxlbWVudHMgPSBpc19yZWdpc3RlcmVkIH1cblxuICBtb2R1bGUgRmluZDAgKFQgOiBUeXBlcmVwLk5hbWVkLlQwKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlIDogdW5pdCAtPiBULm5hbWVkIGNvbXB1dGF0aW9uIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTAgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUyA9ICh2YWwgcmVwIDogUykgaW5cbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIFMudHlwZW5hbWVfb2ZfdCBULnR5cGVuYW1lX29mX25hbWVkIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCB3aXRuZXNzKSBTLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQxIChUIDogVHlwZXJlcC5OYW1lZC5UMSkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMSAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgcmVwIDogUzEpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8xXG4gICAgICAgICAgICAoUzEpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gVC5hIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzEuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDIgKFQgOiBUeXBlcmVwLk5hbWVkLlQyKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTIgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIHJlcCA6IFMyKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMlxuICAgICAgICAgICAgKFMyKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMi5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMyAoVCA6IFR5cGVyZXAuTmFtZWQuVDMpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYykgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMyAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgcmVwIDogUzMpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8zXG4gICAgICAgICAgICAoUzMpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+IFQuYyBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMzLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQ0IChUIDogVHlwZXJlcC5OYW1lZC5UNCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTQgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzQgPSAodmFsIHJlcCA6IFM0KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNFxuICAgICAgICAgICAgKFM0KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICgnYSwgJ2IsICdjLCAnZCkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNC5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNSAoVCA6IFR5cGVyZXAuTmFtZWQuVDUpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTUgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIHJlcCA6IFM1KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNVxuICAgICAgICAgICAgKFM1KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAoJ2EsICdiLCAnYywgJ2QsICdlKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNS5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB1bml0ID0gVHlwZW5hbWUuc3RhdGljXG5cbiAgbGV0IHJlZ2lzdGVyMCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMgPSAodmFsIGNvbXB1dGUgOiBTKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgUy50eXBlbmFtZV9vZl90IGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUwIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMxID0gKHZhbCBjb21wdXRlIDogUzEpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzEudHlwZW5hbWVfb2ZfdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjIgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMiA9ICh2YWwgY29tcHV0ZSA6IFMyKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMyLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMiB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjMgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgY29tcHV0ZSA6IFMzKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMzLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUzIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyNCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCBjb21wdXRlIDogUzQpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzQudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjUgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNSA9ICh2YWwgY29tcHV0ZSA6IFM1KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM1LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlciAodHlwZSBhKSB0eXBlcmVwX29mX2EgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IGNvbXB1dGUgPSBjb21wdXRlXG4gICAgZW5kXG4gICAgaW5cbiAgICByZWdpc3RlcjAgKG1vZHVsZSBTIDogUylcbiAgOztcblxuICAoKiBJTVBMRU1FTlRBVElPTiAqKVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICBsZXQgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiAodHlwZSBhKSBhdXggPSBmdW5jdGlvblxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMCByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQwIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQxIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID0gKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSA6IFQuYSBULm5hbWVkIGNvbXB1dGF0aW9uKSBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDIgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDIgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMiAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgOiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDMgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMyAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDQgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDQgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYykgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UNSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQ1IChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5hKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5iKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5jKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5kKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5lKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgOztcblxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIGxldCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgc3RyaW5nID0gcmFpc2UgKE5vdF9pbXBsZW1lbnRlZCAoWC5uYW1lLCBzdHJpbmcpKVxuXG4gIGxldCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gYXV4IHJlcCBjb250ZW50ID1cbiAgICBtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgd2l0aFxuICAgIHwgU29tZSBjb21wdXRhdGlvbiAtPiBjb21wdXRhdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPiBhdXguZ2VuZXJpYyBjb250ZW50XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgcmVwIGluXG4gICAgICAgICBsZXQgbmFtZSA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgdHlwZW5hbWUpIGluXG4gICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgXyA9IEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuS2V5KVxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcblxuICAgIGluY2x1ZGUgQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29tcHV0YXRpb24gPSBYXG4gIGluY2x1ZGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYKVxuXG4gIG1vZHVsZSBNZW1vID0gVHlwZW5hbWUuVGFibGUgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgWC5OYW1lZC50XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZWxwZXIgPSBIZWxwZXIgKFR5cGVyZXApIChDb21wdXRhdGlvbilcblxuICBsZXQgb2ZfdHlwZXJlcCByZXAgPVxuICAgIGxldCBjb250ZXh0ID0gWC5OYW1lZC5Db250ZXh0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBtZW1vX3RhYmxlID0gTWVtby5jcmVhdGUgMzIgaW5cbiAgICBsZXQgcmVjIG9mX3R5cGVyZXAgOiB0eXBlIGEuIGEgVHlwZXJlcC50IC0+IGEgdCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuSW50IC0+IFguaW50XG4gICAgICB8IFR5cGVyZXAuSW50MzIgLT4gWC5pbnQzMlxuICAgICAgfCBUeXBlcmVwLkludDY0IC0+IFguaW50NjRcbiAgICAgIHwgVHlwZXJlcC5OYXRpdmVpbnQgLT4gWC5uYXRpdmVpbnRcbiAgICAgIHwgVHlwZXJlcC5DaGFyIC0+IFguY2hhclxuICAgICAgfCBUeXBlcmVwLkZsb2F0IC0+IFguZmxvYXRcbiAgICAgIHwgVHlwZXJlcC5TdHJpbmcgLT4gWC5zdHJpbmdcbiAgICAgIHwgVHlwZXJlcC5CeXRlcyAtPiBYLmJ5dGVzXG4gICAgICB8IFR5cGVyZXAuQm9vbCAtPiBYLmJvb2xcbiAgICAgIHwgVHlwZXJlcC5Vbml0IC0+IFgudW5pdFxuICAgICAgfCBUeXBlcmVwLk9wdGlvbiByZXAgLT4gWC5vcHRpb24gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxpc3QgcmVwIC0+IFgubGlzdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuQXJyYXkgcmVwIC0+IFguYXJyYXkgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxhenkgcmVwIC0+IFgubGF6eV90IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5SZWYgcmVwIC0+IFgucmVmXyAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKSAtPiBYLmZ1bmN0aW9uXyAob2ZfdHlwZXJlcCBkb20pIChvZl90eXBlcmVwIHJuZylcbiAgICAgIHwgVHlwZXJlcC5UdXBsZSB0dXBsZSAtPlxuICAgICAgICAoKiBkbyBOT1Qgd3JpdGUgW1gudHVwbGUyIChvZl90eXBlcmVwIGEpIChvZl90eXBlcmVwIGIpXVxuICAgICAgICAgICBiZWNhdXNlIG9mX3R5cGVyZXAgY2FuIGNvbnRhaW4gYSBzaWRlIGVmZmVjdCBhbmQgW2FdIHNob3VsZCBiZSBleGVjdXRlZFxuICAgICAgICAgICBiZWZvcmUgW2JdICopXG4gICAgICAgIChtYXRjaCB0dXBsZSB3aXRoXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgWC50dXBsZTIgcmEgcmJcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgWC50dXBsZTMgcmEgcmIgcmNcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgbGV0IHJkID0gb2ZfdHlwZXJlcCBkIGluXG4gICAgICAgICAgIFgudHVwbGU0IHJhIHJiIHJjIHJkXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBsZXQgcmUgPSBvZl90eXBlcmVwIGUgaW5cbiAgICAgICAgICAgWC50dXBsZTUgcmEgcmIgcmMgcmQgcmUpXG4gICAgICB8IFR5cGVyZXAuUmVjb3JkIHJlY29yZCAtPlxuICAgICAgICBYLnJlY29yZCAoSGVscGVyLm1hcF9yZWNvcmQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHJlY29yZClcbiAgICAgIHwgVHlwZXJlcC5WYXJpYW50IHZhcmlhbnQgLT5cbiAgICAgICAgWC52YXJpYW50IChIZWxwZXIubWFwX3ZhcmlhbnQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHZhcmlhbnQpXG4gICAgICB8IFR5cGVyZXAuTmFtZWQgKG5hbWVkLCBjb250ZW50KSAtPlxuICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZWQgaW5cbiAgICAgICAgKG1hdGNoIE1lbW8uZmluZCBtZW1vX3RhYmxlIHR5cGVuYW1lIHdpdGhcbiAgICAgICAgIHwgU29tZSBzaGFyZWQgLT4gWC5OYW1lZC5nZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIChtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIHsgZ2VuZXJpYyA9IG9mX3R5cGVyZXAgfSBuYW1lZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29udGVudCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZVxuICAgICAgICAgICAgICAgfCBTb21lIChsYXp5IGNvbnRlbnQpIC0+XG4gICAgICAgICAgICAgICAgIGlmIFguTmFtZWQuc2hhcmUgY29udGVudFxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgc2hhcmVkID0gWC5OYW1lZC5pbml0IGNvbnRleHQgdHlwZW5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICBNZW1vLnNldCBtZW1vX3RhYmxlIHR5cGVuYW1lIHNoYXJlZDtcbiAgICAgICAgICAgICAgICAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgICAgICBYLk5hbWVkLnNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgICAgICAgIGVsc2Ugb2ZfdHlwZXJlcCBjb250ZW50KSkpXG4gICAgaW5cbiAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIHJlcCBpblxuICAgIGBnZW5lcmljIGNvbXB1dGF0aW9uXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkID1cbiAgICBUeXBlcmVwLk5hbWVkLlQwXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIG5hbWVkID0gWC50XG4gICAgICAgIHR5cGUgdCA9IFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgICB3aXRoIHR5cGUgdCA9IFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTEgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSkgb2ZfcDEgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3QgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSkgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQxXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICdhIG5hbWVkID0gJ2EgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgdCA9IHAxIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgICB3aXRoIHR5cGUgdCA9IHAxIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMikgb2ZfcDEgb2ZfcDIgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQyXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkID0gKCdhLCAnYikgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMykgb2ZfcDEgb2ZfcDIgb2ZfcDMgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQzXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZCA9ICgnYSwgJ2IsICdjKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U0IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSBkID0gcDRcblxuICAgICAgICBsZXQgZCA9IG9mX3A0XG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTUgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMyBwNCBwNSkgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDQpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDUpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQ1XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgZSA9IHA1XG5cbiAgICAgICAgbGV0IGUgPSBvZl9wNVxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudClcbiAgOztcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgOiBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgOiBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpIDogVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgWC50ID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgOlxuICBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgOlxuICBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgOlxuICBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIE5hbWUgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCByZWxhdGl2ZV90byA6IGRpcjpzdHJpbmcgLT4gdCAtPiBzdHJpbmdcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCByZWxhdGl2ZV90byB+ZGlyIHQgPVxuICAgIGlmIG5vdCAoU3RkbGliLkZpbGVuYW1lLmlzX3JlbGF0aXZlIHQpIHRoZW4gdCBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5jb25jYXQgZGlyIHRcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbF9kaXIgPVxuICBsZXQgZGlyX29yX2Vycm9yID1cbiAgICBtYXRjaCBTdGRsaWIuU3lzLmdldGN3ZCAoKSB3aXRoXG4gICAgfCB2IC0+IGBPayB2XG4gICAgfCBleGNlcHRpb24gZXhuIC0+IGBFeG4gZXhuXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoIGRpcl9vcl9lcnJvciB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRXhuIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbm1vZHVsZSBMb2NhdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbGVuYW1lIDogTmFtZS50XG4gICAgICA7IGxpbmVfbnVtYmVyIDogaW50XG4gICAgICA7IGxpbmVfc3RhcnQgOiBpbnRcbiAgICAgIDsgc3RhcnRfcG9zIDogaW50XG4gICAgICA7IGVuZF9wb3MgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcblxuICAgIGxldCB0X29mX3NleHAgPVxuICAgICAgKGxldCBlcnJvcl9zb3VyY2VfXzAyNF8gPSBcImZpbGUubWwuTG9jYXRpb24uVC50XCIgaW5cbiAgICAgICBmdW5jdGlvblxuICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IGZpZWxkX3NleHBzX18wMDNfIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICAgIGxldCBmaWxlbmFtZV9fMDA0XyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgbGluZV9udW1iZXJfXzAwNl8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIGxpbmVfc3RhcnRfXzAwOF8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIHN0YXJ0X3Bvc19fMDEwXyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgZW5kX3Bvc19fMDEyXyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgZHVwbGljYXRlc19fMDE0XyA9IFN0ZGxpYi5yZWYgW11cbiAgICAgICAgIGFuZCBleHRyYV9fMDE1XyA9IFN0ZGxpYi5yZWYgW10gaW5cbiAgICAgICAgIGxldCByZWMgaXRlcl9fMDI1XyA9IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIGZpZWxkX25hbWVfXzAxNl9cbiAgICAgICAgICAgICAgICA6OiAoKFtdIHwgWyBfIF0pIGFzIF9maWVsZF9zZXhwc19fMDE4XykpXG4gICAgICAgICAgICAgOjogdGFpbF9fMDI2XyAtPlxuICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyAoKSA9XG4gICAgICAgICAgICAgICBtYXRjaCBfZmllbGRfc2V4cHNfXzAxOF8gd2l0aFxuICAgICAgICAgICAgICAgfCBbIHhfXzAyN18gXSAtPiB4X18wMjdfXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfb25seV9wYWlyc19leHBlY3RlZFxuICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAgICAgIHNleHBfXzAwMl9cbiAgICAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChtYXRjaCBmaWVsZF9uYW1lX18wMTZfIHdpdGhcbiAgICAgICAgICAgICAgfCBcImZpbGVuYW1lXCIgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGZpbGVuYW1lX18wMDRfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAyM18gPSBOYW1lLnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgZmlsZW5hbWVfXzAwNF8gKFN0ZGxpYi5PcHRpb24uU29tZSBmdmFsdWVfXzAyM18pXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApXG4gICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzX18wMTRfXG4gICAgICAgICAgICAgICAgICAgICAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XykpXG4gICAgICAgICAgICAgIHwgXCJsaW5lX251bWJlclwiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBsaW5lX251bWJlcl9fMDA2XyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IF9maWVsZF9zZXhwX18wMTdfID0gX2ZpZWxkX3NleHBfXzAxN18gKCkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlX18wMjJfID0gaW50X29mX3NleHAgX2ZpZWxkX3NleHBfXzAxN18gaW5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGxpbmVfbnVtYmVyX18wMDZfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMjJfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IFwibGluZV9zdGFydFwiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBsaW5lX3N0YXJ0X18wMDhfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAyMV8gPSBpbnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgbGluZV9zdGFydF9fMDA4XyAoU3RkbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZV9fMDIxXylcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9IClcbiAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXNfXzAxNF9cbiAgICAgICAgICAgICAgICAgICAgIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKSlcbiAgICAgICAgICAgICAgfCBcInN0YXJ0X3Bvc1wiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBzdGFydF9wb3NfXzAxMF8gd2l0aFxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyA9IF9maWVsZF9zZXhwX18wMTdfICgpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZV9fMDIwXyA9IGludF9vZl9zZXhwIF9maWVsZF9zZXhwX18wMTdfIGluXG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBzdGFydF9wb3NfXzAxMF8gKFN0ZGxpYi5PcHRpb24uU29tZSBmdmFsdWVfXzAyMF8pXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApXG4gICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzX18wMTRfXG4gICAgICAgICAgICAgICAgICAgICAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XykpXG4gICAgICAgICAgICAgIHwgXCJlbmRfcG9zXCIgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGVuZF9wb3NfXzAxMl8gd2l0aFxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyA9IF9maWVsZF9zZXhwX18wMTdfICgpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZV9fMDE5XyA9IGludF9vZl9zZXhwIF9maWVsZF9zZXhwX18wMTdfIGluXG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBlbmRfcG9zX18wMTJfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMTlfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBpZiBTdGRsaWIuKCAhICkgU2V4cGxpYjAuU2V4cF9jb252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGV4dHJhX18wMTVfIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBleHRyYV9fMDE1XylcbiAgICAgICAgICAgICAgICBlbHNlICgpKTtcbiAgICAgICAgICAgICBpdGVyX18wMjVfIHRhaWxfXzAyNl9cbiAgICAgICAgICAgfCAoKFNleHBsaWIwLlNleHAuQXRvbSBfIHwgU2V4cGxpYjAuU2V4cC5MaXN0IF8pIGFzIHNleHBfXzAwMl8pIDo6IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX29ubHlfcGFpcnNfZXhwZWN0ZWRcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICBpblxuICAgICAgICAgaXRlcl9fMDI1XyBmaWVsZF9zZXhwc19fMDAzXztcbiAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XyB3aXRoXG4gICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfZHVwbGljYXRlX2ZpZWxkc1xuICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKVxuICAgICAgICAgICAgICBzZXhwX18wMDJfXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBleHRyYV9fMDE1XyB3aXRoXG4gICAgICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGV4dHJhX18wMTVfKVxuICAgICAgICAgICAgICAgICBzZXhwX18wMDJfXG4gICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAoIFN0ZGxpYi4oICEgKSBmaWxlbmFtZV9fMDA0X1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuKCAhICkgbGluZV9udW1iZXJfXzAwNl9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLiggISApIGxpbmVfc3RhcnRfXzAwOF9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLiggISApIHN0YXJ0X3Bvc19fMDEwX1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuKCAhICkgZW5kX3Bvc19fMDEyXyApXG4gICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgIHwgKCBTdGRsaWIuT3B0aW9uLlNvbWUgZmlsZW5hbWVfXzAwNV9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLk9wdGlvbi5Tb21lIGxpbmVfbnVtYmVyX18wMDdfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi5PcHRpb24uU29tZSBsaW5lX3N0YXJ0X18wMDlfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi5PcHRpb24uU29tZSBzdGFydF9wb3NfXzAxMV9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLk9wdGlvbi5Tb21lIGVuZF9wb3NfXzAxM18gKSAtPlxuICAgICAgICAgICAgICAgICAgeyBmaWxlbmFtZSA9IGZpbGVuYW1lX18wMDVfXG4gICAgICAgICAgICAgICAgICA7IGxpbmVfbnVtYmVyID0gbGluZV9udW1iZXJfXzAwN19cbiAgICAgICAgICAgICAgICAgIDsgbGluZV9zdGFydCA9IGxpbmVfc3RhcnRfXzAwOV9cbiAgICAgICAgICAgICAgICAgIDsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMTFfXG4gICAgICAgICAgICAgICAgICA7IGVuZF9wb3MgPSBlbmRfcG9zX18wMTNfXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50c1xuICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgICAgICAgICAgICBbICggU2V4cGxpYjAuU2V4cF9jb252LiggPSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgZmlsZW5hbWVfXzAwNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICwgXCJmaWxlbmFtZVwiIClcbiAgICAgICAgICAgICAgICAgICAgOyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGxpbmVfbnVtYmVyX18wMDZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwibGluZV9udW1iZXJcIiApXG4gICAgICAgICAgICAgICAgICAgIDsgKCBTZXhwbGliMC5TZXhwX2NvbnYuKCA9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBsaW5lX3N0YXJ0X18wMDhfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwibGluZV9zdGFydFwiIClcbiAgICAgICAgICAgICAgICAgICAgOyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIHN0YXJ0X3Bvc19fMDEwXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICAgICAgICAgLCBcInN0YXJ0X3Bvc1wiIClcbiAgICAgICAgICAgICAgICAgICAgOyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGVuZF9wb3NfXzAxMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICwgXCJlbmRfcG9zXCIgKVxuICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gXyBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGVycm9yX3NvdXJjZV9fMDI0XyBzZXhwX18wMDJfXG4gICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IHRfb2Zfc2V4cFxuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgZmlsZW5hbWUgPSBmaWxlbmFtZV9fMDI5X1xuICAgICAgICAgICA7IGxpbmVfbnVtYmVyID0gbGluZV9udW1iZXJfXzAzMV9cbiAgICAgICAgICAgOyBsaW5lX3N0YXJ0ID0gbGluZV9zdGFydF9fMDMzX1xuICAgICAgICAgICA7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDM1X1xuICAgICAgICAgICA7IGVuZF9wb3MgPSBlbmRfcG9zX18wMzdfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPSBbXSBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDM4XyA9IHNleHBfb2ZfaW50IGVuZF9wb3NfXzAzN18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbmRfcG9zXCI7IGFyZ19fMDM4XyBdIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzNl8gPSBzZXhwX29mX2ludCBzdGFydF9wb3NfXzAzNV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGFydF9wb3NcIjsgYXJnX18wMzZfIF0gOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDM0XyA9IHNleHBfb2ZfaW50IGxpbmVfc3RhcnRfXzAzM18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX3N0YXJ0XCI7IGFyZ19fMDM0XyBdIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzMl8gPSBzZXhwX29mX2ludCBsaW5lX251bWJlcl9fMDMxXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVfbnVtYmVyXCI7IGFyZ19fMDMyXyBdXG4gICAgICAgICAgOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDMwXyA9IE5hbWUuc2V4cF9vZl90IGZpbGVuYW1lX18wMjlfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZmlsZW5hbWVcIjsgYXJnX18wMzBfIF0gOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDI4X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gICAgbGV0IGNvbXBhcmUgPVxuICAgICAgKGZ1biBhX18wMzlfIGJfXzA0MF8gLT5cbiAgICAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAzOV8gYl9fMDQwX1xuICAgICAgICAgdGhlbiAwXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbWF0Y2ggTmFtZS5jb21wYXJlIGFfXzAzOV8uZmlsZW5hbWUgYl9fMDQwXy5maWxlbmFtZSB3aXRoXG4gICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMzlfLmxpbmVfbnVtYmVyIGJfXzA0MF8ubGluZV9udW1iZXIgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDM5Xy5saW5lX3N0YXJ0IGJfXzA0MF8ubGluZV9zdGFydCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMzlfLnN0YXJ0X3BvcyBiX18wNDBfLnN0YXJ0X3BvcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2ludCBhX18wMzlfLmVuZF9wb3MgYl9fMDQwXy5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gICAgOztcblxuICAgIGxldCBfID0gY29tcGFyZVxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfZmlsZSBmaWxlbmFtZSA9XG4gICAgeyBmaWxlbmFtZTsgbGluZV9udW1iZXIgPSAxOyBsaW5lX3N0YXJ0ID0gMDsgc3RhcnRfcG9zID0gMDsgZW5kX3BvcyA9IDAgfVxuICA7O1xuXG4gIGxldCBvZl9zb3VyY2VfY29kZV9wb3NpdGlvbiAocG9zIDogU291cmNlX2NvZGVfcG9zaXRpb24udCkgPVxuICAgIHsgZmlsZW5hbWUgPSBOYW1lLm9mX3N0cmluZyAoQ2FtbC5GaWxlbmFtZS5iYXNlbmFtZSBwb3MucG9zX2ZuYW1lKVxuICAgIDsgbGluZV9udW1iZXIgPSBwb3MucG9zX2xudW1cbiAgICA7IGxpbmVfc3RhcnQgPSBwb3MucG9zX2JvbFxuICAgIDsgc3RhcnRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgOyBlbmRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaWdlc3QgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfc3RyaW5nIDogdCAtPiB0IC0+IGludClcbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgZXhwZWN0ZWRfbGVuZ3RoID0gMzIgaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gZXhwZWN0ZWRfbGVuZ3RoXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmcsIHVuZXhwZWN0ZWQgbGVuZ3RoXCI7XG4gICAgZm9yIGkgPSAwIHRvIGV4cGVjdGVkX2xlbmd0aCAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gKClcbiAgICAgIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmdcIlxuICAgIGRvbmU7XG4gICAgc1xuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMi4wICopXG5cbnZhbCBlbXB0eSA6IHN0cmluZ1xuKCoqIFRoZSBlbXB0eSBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCB0b19ieXRlcyA6IHN0cmluZyAtPiBieXRlc1xuKCoqIFJldHVybiBhIG5ldyBieXRlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuXG4gICAgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuKCoqIFtsZW5ndGggc10gaXMgdGhlIGxlbmd0aCAobnVtYmVyIG9mIGJ5dGVzL2NoYXJhY3RlcnMpIG9mIFtzXS4gKilcblxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbigqKiBbZ2V0IHMgaV0gaXMgdGhlIGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW4gW3NdLiBUaGlzIGlzIHRoZSBzYW1lXG4gICAgYXMgd3JpdGluZyBbcy5baV1dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIG5vdCBhbiBpbmRleCBvZiBbc10uICopXG5cbigqKiB7MTpjb25jYXQgQ29uY2F0ZW5hdGluZ31cblxuICAgIHtiIE5vdGUufSBUaGUgeyFTdGRsaWIuKCBeICl9IGJpbmFyeSBvcGVyYXRvciBjb25jYXRlbmF0ZXMgdHdvXG4gICAgc3RyaW5ncy4gKilcblxudmFsIGNvbmNhdCA6IHN0cmluZyAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbigqKiBbY29uY2F0IHNlcCBzc10gY29uY2F0ZW5hdGVzIHRoZSBsaXN0IG9mIHN0cmluZ3MgW3NzXSwgaW5zZXJ0aW5nXG4gICAgdGhlIHNlcGFyYXRvciBzdHJpbmcgW3NlcF0gYmV0d2VlbiBlYWNoLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIGNhdCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhdCBzMSBzMl0gY29uY2F0ZW5hdGVzIHMxIGFuZCBzMiAoW3MxIF4gczJdKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuKCoqIFtjb21wYXJlIHMwIHMxXSBzb3J0cyBbczBdIGFuZCBbczFdIGluIGxleGljb2dyYXBoaWNhbCBvcmRlci4gW2NvbXBhcmVdXG4gICAgYmVoYXZlcyBsaWtlIHshU3RkbGliLmNvbXBhcmV9IG9uIHN0cmluZ3MgYnV0IG1heSBiZSBtb3JlIGVmZmljaWVudC4gKilcblxudmFsIHN0YXJ0c193aXRoIDpcbiAgcHJlZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbc3RhcnRzX3dpdGggXVt+cHJlZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gc3RhcnRzIHdpdGhcbiAgICBbcHJlZml4XS5cblxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNC4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhbnNmb3JtaW5nIFRyYW5zZm9ybWluZ30gKilcblxudmFsIG1hcCA6IChjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwIGYgc10gaXMgdGhlIHN0cmluZyByZXN1bHRpbmcgZnJvbSBhcHBseWluZyBbZl0gdG8gYWxsIHRoZVxuICAgIGNoYXJhY3RlcnMgb2YgW3NdIGluIGluY3JlYXNpbmcgb3JkZXIuXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyLjAgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYSAtPiBjaGFyIC0+ICdhKSAtPiAnYSAtPiBzdHJpbmcgLT4gJ2FcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYSAtPiAnYSkgLT4gc3RyaW5nIC0+ICdhIC0+ICdhXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGV4aXN0cyA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2V4aXN0cyBwIHNdIGNoZWNrcyBpZiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIG9mIFtzXSBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZVxuICAgIFtwXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvXG4gICAgdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbnZhbCBibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbigqKiBbYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5dIGNvcGllcyBbbGVuXSBieXRlc1xuICAgIGZyb20gdGhlIHN0cmluZyBbc3JjXSwgc3RhcnRpbmcgYXQgaW5kZXggW3NyY19wb3NdLFxuICAgIHRvIGJ5dGUgc2VxdWVuY2UgW2RzdF0sIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBudW1iZXIgW2RzdF9wb3NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3NyY19wb3NdIGFuZCBbbGVuXSBkbyBub3RcbiAgICBkZXNpZ25hdGUgYSB2YWxpZCByYW5nZSBvZiBbc3JjXSwgb3IgaWYgW2RzdF9wb3NdIGFuZCBbbGVuXVxuICAgIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZCByYW5nZSBvZiBbZHN0XS4gKilcblxuKCoqIHsxIEJpbmFyeSBkZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCoqIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGJpbmFyeSBkZWNvZGUgaW50ZWdlcnMgZnJvbSBzdHJpbmdzLlxuXG4gICAgQWxsIGZvbGxvd2luZyBmdW5jdGlvbnMgcmFpc2UgW0ludmFsaWRfYXJndW1lbnRdIGlmIHRoZSBjaGFyYWN0ZXJzXG4gICAgbmVlZGVkIGF0IGluZGV4IFtpXSB0byBkZWNvZGUgdGhlIGludGVnZXIgYXJlIG5vdCBhdmFpbGFibGUuXG5cbiAgICBMaXR0bGUtZW5kaWFuIChyZXNwLiBiaWctZW5kaWFuKSBlbmNvZGluZyBtZWFucyB0aGF0IGxlYXN0XG4gICAgKHJlc3AuIG1vc3QpIHNpZ25pZmljYW50IGJ5dGVzIGFyZSBzdG9yZWQgZmlyc3QuICBCaWctZW5kaWFuIGlzXG4gICAgYWxzbyBrbm93biBhcyBuZXR3b3JrIGJ5dGUgb3JkZXIuICBOYXRpdmUtZW5kaWFuIGVuY29kaW5nIGlzXG4gICAgZWl0aGVyIGxpdHRsZS1lbmRpYW4gb3IgYmlnLWVuZGlhbiBkZXBlbmRpbmcgb24geyFTeXMuYmlnX2VuZGlhbn0uXG5cbiAgICAzMi1iaXQgYW5kIDY0LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnQzMl0gYW5kXG4gICAgW2ludDY0XSB0eXBlcywgd2hpY2ggY2FuIGJlIGludGVycHJldGVkIGVpdGhlciBhcyBzaWduZWQgb3JcbiAgICB1bnNpZ25lZCBudW1iZXJzLlxuXG4gICAgOC1iaXQgYW5kIDE2LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnRdIHR5cGUsXG4gICAgd2hpY2ggaGFzIG1vcmUgYml0cyB0aGFuIHRoZSBiaW5hcnkgZW5jb2RpbmcuICBUaGVzZSBleHRyYSBiaXRzXG4gICAgYXJlIHNpZ24tZXh0ZW5kZWQgKG9yIHplcm8tZXh0ZW5kZWQpIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVjb2RlIDgtYml0XG4gICAgb3IgMTYtYml0IGludGVnZXJzIGFuZCByZXByZXNlbnRlZCB0aGVtIHdpdGggW2ludF0gdmFsdWVzLlxuKilcblxudmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50OCBiIGldIGlzIFtiXSdzIHVuc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMC4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMC4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQzMl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbm9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cbm1vZHVsZSBCb2R5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFeGFjdCBvZiBzdHJpbmdcbiAgICB8IE91dHB1dFxuICAgIHwgUHJldHR5IG9mICdhXG4gICAgfCBVbnJlYWNoYWJsZVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiAnYSB0KSAtPiAoKVxuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMDZfKSA6ICgoYV9fMDA2XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAwNl8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMDFfIC0+IGZ1bmN0aW9uXG4gICAgICB8IEV4YWN0IGFyZzBfXzAwMl8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDJfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4YWN0XCI7IHJlczBfXzAwM18gXVxuICAgICAgfCBPdXRwdXQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiT3V0cHV0XCJcbiAgICAgIHwgUHJldHR5IGFyZzBfXzAwNF8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNV8gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlByZXR0eVwiOyByZXMwX18wMDVfIF1cbiAgICAgIHwgVW5yZWFjaGFibGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5yZWFjaGFibGVcIlxuICA7O1xuXG4gIGxldCBfID0gc2V4cF9vZl90XG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDA3XyBiX18wMDhfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDdfLCBiX18wMDhfIHdpdGhcbiAgICAgIHwgRXhhY3QgX2FfXzAwOV8sIEV4YWN0IF9iX18wMTBfIC0+IGNvbXBhcmVfc3RyaW5nIF9hX18wMDlfIF9iX18wMTBfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgRXhhY3QgXyAtPiAxXG4gICAgICB8IE91dHB1dCwgT3V0cHV0IC0+IDBcbiAgICAgIHwgT3V0cHV0LCBfIC0+IC0xXG4gICAgICB8IF8sIE91dHB1dCAtPiAxXG4gICAgICB8IFByZXR0eSBfYV9fMDExXywgUHJldHR5IF9iX18wMTJfIC0+IF9jbXBfX2EgX2FfXzAxMV8gX2JfXzAxMl9cbiAgICAgIHwgUHJldHR5IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgUHJldHR5IF8gLT4gMVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gMClcbiAgOztcblxuICBsZXQgXyA9IGNvbXBhcmVcblxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMTNfIGJfXzAxNF8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMTNfIGJfXzAxNF9cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxM18sIGJfXzAxNF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDE1XywgRXhhY3QgX2JfXzAxNl8gLT4gZXF1YWxfc3RyaW5nIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgRXhhY3QgXyAtPiBmYWxzZVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiB0cnVlXG4gICAgICB8IE91dHB1dCwgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBPdXRwdXQgLT4gZmFsc2VcbiAgICAgIHwgUHJldHR5IF9hX18wMTdfLCBQcmV0dHkgX2JfXzAxOF8gLT4gX2NtcF9fYSBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiBmYWxzZVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gdHJ1ZSlcbiAgOztcblxuICBsZXQgXyA9IGVxdWFsXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWFwX3ByZXR0eSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IChFeGFjdCBfIHwgT3V0cHV0IHwgVW5yZWFjaGFibGUpIGFzIHQgLT4gdFxuICAgIHwgUHJldHR5IHggLT4gUHJldHR5IChmIHgpXG4gIDs7XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyB0YWcgOiBzdHJpbmcgb3B0aW9uXG4gIDsgYm9keSA6ICdhIEJvZHkudFxuICA7IGV4dGlkX2xvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gIDsgYm9keV9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbmxldCBfID0gZnVuIChfIDogJ2EgdCkgLT4gKClcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE5X1xuICAgIHsgdGFnID0gdGFnX18wMjFfXG4gICAgOyBib2R5ID0gYm9keV9fMDIzX1xuICAgIDsgZXh0aWRfbG9jYXRpb24gPSBleHRpZF9sb2NhdGlvbl9fMDI1X1xuICAgIDsgYm9keV9sb2NhdGlvbiA9IGJvZHlfbG9jYXRpb25fXzAyN19cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAyMF8gPSBbXSBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyOF8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBib2R5X2xvY2F0aW9uX18wMjdfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJib2R5X2xvY2F0aW9uXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMF9cbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNl8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBleHRpZF9sb2NhdGlvbl9fMDI1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXh0aWRfbG9jYXRpb25cIjsgYXJnX18wMjZfIF0gOjogYm5kc19fMDIwX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI0XyA9IEJvZHkuc2V4cF9vZl90IF9vZl9hX18wMTlfIGJvZHlfXzAyM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImJvZHlcIjsgYXJnX18wMjRfIF0gOjogYm5kc19fMDIwX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDIyXyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHRhZ19fMDIxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidGFnXCI7IGFyZ19fMDIyXyBdIDo6IGJuZHNfXzAyMF9cbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMjBfXG47O1xuXG5sZXQgXyA9IHNleHBfb2ZfdFxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgZnVuIF9jbXBfX2EgYV9fMDI5XyBiX18wMzBfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAyOV8gYl9fMDMwX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggY29tcGFyZV9vcHRpb24gY29tcGFyZV9zdHJpbmcgYV9fMDI5Xy50YWcgYl9fMDMwXy50YWcgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKG1hdGNoIEJvZHkuY29tcGFyZSBfY21wX19hIGFfXzAyOV8uYm9keSBiX18wMzBfLmJvZHkgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKG1hdGNoIEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmV4dGlkX2xvY2F0aW9uIGJfXzAzMF8uZXh0aWRfbG9jYXRpb24gd2l0aFxuICAgICAgICAgIHwgMCAtPiBGaWxlLkxvY2F0aW9uLmNvbXBhcmUgYV9fMDI5Xy5ib2R5X2xvY2F0aW9uIGJfXzAzMF8uYm9keV9sb2NhdGlvblxuICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgIHwgbiAtPiBuKVxuICAgIHwgbiAtPiBuKVxuOztcblxubGV0IF8gPSBjb21wYXJlXG5cbmxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICBmdW4gX2NtcF9fYSBhX18wMzVfIGJfXzAzNl8gLT5cbiAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDM1XyBiX18wMzZfXG4gIHRoZW4gdHJ1ZVxuICBlbHNlXG4gICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgKGVxdWFsX29wdGlvbiBlcXVhbF9zdHJpbmcgYV9fMDM1Xy50YWcgYl9fMDM2Xy50YWcpXG4gICAgICAoUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAgKEJvZHkuZXF1YWwgX2NtcF9fYSBhX18wMzVfLmJvZHkgYl9fMDM2Xy5ib2R5KVxuICAgICAgICAgKFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgICAgIChGaWxlLkxvY2F0aW9uLmVxdWFsIGFfXzAzNV8uZXh0aWRfbG9jYXRpb24gYl9fMDM2Xy5leHRpZF9sb2NhdGlvbilcbiAgICAgICAgICAgIChGaWxlLkxvY2F0aW9uLmVxdWFsIGFfXzAzNV8uYm9keV9sb2NhdGlvbiBiX18wMzZfLmJvZHlfbG9jYXRpb24pKSlcbjs7XG5cbmxldCBfID0gZXF1YWxcblxuW0BAQGVuZF1cblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gc3RyaW5nIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKGZ1biB4X18wNDFfIC0+IHNleHBfb2ZfdCBzZXhwX29mX3N0cmluZyB4X18wNDFfIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG5cbiAgbGV0IGNvbXBhcmUgPVxuICAgIChmdW4gYV9fMDQyXyBiX18wNDNfIC0+IGNvbXBhcmUgY29tcGFyZV9zdHJpbmcgYV9fMDQyXyBiX18wNDNfIDogdCAtPiB0IC0+IGludClcbiAgOztcblxuICBsZXQgXyA9IGNvbXBhcmVcblxuICBbQEBAZW5kXVxuZW5kXG5cbmxldCBtYXBfcHJldHR5IHQgfmYgPSB7IHQgd2l0aCBib2R5ID0gQm9keS5tYXBfcHJldHR5IHQuYm9keSB+ZiB9XG4iLCJtb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBGaWxlID0gRmlsZVxuICBtb2R1bGUgRXhwZWN0YXRpb24gPSBFeHBlY3RhdGlvblxuZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjAtMDNdIHVzZSBbRXhwZWN0X3Rlc3RfY29tbW9uXSBpbnN0ZWFkXCJdXG5cbmluY2x1ZGUgU3RkIFtAQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cbiIsIm1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYENSICgqKiBMZWF2ZXMgYSBDUiwgc28gdGhhdCBmZWF0dXJlcyBjYW5ub3QgYmUgcmVsZWFzZWQuICopXG4gICAgfCBgV2FybmluZ19mb3JfY29sbGVjdG9yX3Rlc3RpbmcgKCoqIE9ubHkgZm9yIHBweF9leHBlY3QgdGVzdGluZzsgZG8gbm90IHVzZS4gKilcbiAgICBdXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgSU9fcnVuIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZFxuXG4gICgqKiBBIG5vdy1sZWdhY3kgbW9uYWQuIFRoaXMgc2lnbmF0dXJlIHVzZWQgdG8gZGVjbGFyZSBhIFtmbHVzaF0gZnVuY3Rpb24uXG4gICAgICBbWyVleHBlY3Qub3V0cHV0XV0gc3RpbGwgcmV0dXJucyB0aGlzIHR5cGUuIE5vIG1lYW5pbmdmdWwgbW9uYWRpYyB3b3JrIGlzIGRvbmUuICopXG4gIG1vZHVsZSBJT19mbHVzaCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICAgIHZhbCB0b19ydW4gOiAnYSB0IC0+ICdhIElPX3J1bi50XG4gIGVuZFxuXG4gICgqKiBSdW4gYW4gSU8gb3BlcmF0aW9uIHVudGlsIGNvbXBsZXRpb24gKilcbiAgdmFsIHJ1biA6ICh1bml0IC0+IHVuaXQgSU9fcnVuLnQpIC0+IHVuaXRcblxuICAoKiogU3luY2hyb25vdXMgY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBwZW5kaW5nIG91dHB1dCBvbiBmaWxlIGRlc2NyaXB0aW9uIDAuIFdpdGggYXN5bmMsXG4gICAgICB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBvbiB0aGUgcmhzIG9mIGEgW0lPLmJpbmQgKGZsdXNoICgpKSAuLi5dIHRoZSBvdXRwdXQgaXNcbiAgICAgIGNvbXBsZXRlbHkgZmx1c2hlZCwgdGhhdCdzIHdoeSB3ZSBuZWVkIHRoaXMuICopXG4gIHZhbCBmbHVzaGVkIDogdW5pdCAtPiBib29sXG5cbiAgKCoqIFtzYW5pdGl6ZV0gY2FuIGJlIHVzZWQgdG8gbWFwIGFsbCBvdXRwdXQgc3RyaW5ncywgZS5nLiBmb3IgY2xlYW5zaW5nLiAqKVxuICB2YWwgc2FuaXRpemUgOiBzdHJpbmcgLT4gc3RyaW5nXG5cblxuICAoKiogW3Vwb25fdW5yZWxlYXNhYmxlX2lzc3VlXSBzcGVjaWZpZXMgaG93IHRvIGRlYWwgd2l0aCBvdXRwdXQgdGhhdCBzaG91bGQgbm90IGJlXG4gICAgICByZWxlYXNlZCBldmVuIGlmIGl0IGlzIGFjY2VwdGVkIChlLmcuIGJhY2t0cmFjZXMpLiBUaGUgZGVmYXVsdCBpcyBbYENSXS4gICopXG4gIHZhbCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbmVuZFxuXG4oKiogQ29uZmlndXJhdGlvbiBmb3IgcnVubmluZyBleHBlY3QgdGVzdHMgKilcbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9IHNpZ1xuICAoKiogVG8gY29uZmlndXJlIGV4cGVjdF90ZXN0LCBhZGQgdGhlIGZvbGxvd2luZyBhdCB0aGUgdG9wIG9mIHlvdXIgLm1sIGZpbGUsIG9yIGluIHNvbWVcbiAgICAgIGltcG9ydC5tbDpcblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgRXhwZWN0X3Rlc3RfY29uZmlnXG4gICAgICAgICAgbGV0IHByZV9yZWRpcmVjdF9ob29rICgpID0gLi4uXG4gICAgICAgIGVuZFxuICAgICAgXX1cblxuICAgICAgTm90ZSB0aGF0IHNpbmNlIGFsbCBleHBlY3QgdGVzdCBhcmUgYWxzbyBpbmxpbmUgdGVzdHMsIHRoZSBpbmxpbmUgdGVzdCBjb25maWd1cmF0aW9uXG4gICAgICBhbHNvIGFwcGxpZXMgdG8gYWxsIGV4cGVjdCB0ZXN0LlxuICAqKVxuXG4gIG1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IHNpZ1xuICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGNvbW1lbnRfcHJlZml4IDogdCAtPiBzdHJpbmdcblxuICAgICgqKiBNZXNzYWdlIHRvIHByaW50IHdoZW4gYW4gZXhwZWN0YXRpb24gY29udGFpbnMgYSBiYWNrdHJhY2UgKilcbiAgICB2YWwgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSA6IHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFMgPSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5TXG5cbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9XG4gIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLkV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc1xuXG5tb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IHQxID0gdDJcblxuICBsZXQgY29tbWVudF9wcmVmaXggPSBmdW5jdGlvblxuICAgIHwgYENSIC0+IFwiQ1IgXCJcbiAgICB8IGBXYXJuaW5nX2Zvcl9jb2xsZWN0b3JfdGVzdGluZyAtPiBcIlwiXG4gIDs7XG5cbiAgbGV0IG1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2UgdCA9XG4gICAgUHJpbnRmLnNwcmludGZcbiAgICAgIHt8XG4oKiAlc2V4cGVjdF90ZXN0X2NvbGxlY3RvcjogVGhpcyB0ZXN0IGV4cGVjdGF0aW9uIGFwcGVhcnMgdG8gY29udGFpbiBhIGJhY2t0cmFjZS5cbiAgIFRoaXMgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQgYXMgYmFja3RyYWNlcyBhcmUgZnJhZ2lsZS5cbiAgIFBsZWFzZSBjaGFuZ2UgdGhpcyB0ZXN0IHRvIG5vdCBpbmNsdWRlIGEgYmFja3RyYWNlLiAqKVxuXG58fVxuICAgICAgKGNvbW1lbnRfcHJlZml4IHQpXG4gIDs7XG5lbmRcbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDlcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDI4XFwwMDBcXDAwNVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMDZcXDAwMFxcMDg1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNDBcXDAwMFxcMDMxXFwwMDBcXDA0NlxcMDAwXFwwNDhcXDAwMFxcMDA3XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwNjJcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwxMDNcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTA1XFwwMDBcXDA5NVxcMDAwXFwxMDdcXDAwMFxcMDk1XFwwMDBcXDExM1xcMDAwXFwwMTBcXDAwMFxcMTA0XFwwMDBcXFxuICAgIFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMDRcXDAwMFxcMTIyXFwwMDBcXDEwNFxcMDAwXFwxMTZcXDAwMFxcMTExXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwxMTZcXDAwMFxcMTE3XFwwMDBcXDEyNVxcMDAwXFwxMjdcXDAwMFxcMDEyXFwwMDBcXDEyNlxcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMTlcXDAwMFxcMTIyXFwwMDBcXDAxM1xcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDhcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFwwMjRcXDAwMFxcMDEyXFwwMDBcXDAzOVxcMDAwXFwwMTJcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA2MVxcMDAwXFwwNzFcXDAwMFxcMDU5XFwwMDBcXDA4NlxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAzXFwwMDBcXDAyOVxcMDAwXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAxOFxcMDAwXFwwMjdcXDAwMFxcMDI1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAyNlxcMDAwXFwwMTZcXDAwMFxcMDA1XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIyXFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDAzMFxcMDAwXFwwMTNcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcXG4gICAgXFwwMzhcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDYwXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU2XFwwMDBcXDA1OFxcMDAwXFwwNjJcXDAwMFxcMDQ2XFwwMDBcXDA2M1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMzNcXDAwMFxcMDM4XFwwMDBcXDA0M1xcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDYwXFwwMDBcXDA3MFxcMDAwXFwwODBcXDAwMFxcMDg1XFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI4XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMDNcXDAwMFxcMDE2XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDE3XFwwMDBcXDAyNlxcMDAwXFwwMjRcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDAwOVxcMDAwXFwwMzBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDAzN1xcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTZcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2MVxcMDAwXFwwNDRcXDAwMFxcMDYyXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIGNoZWNrIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTYzIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA1IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAoIG5vdF9hdF9ib3MgbGV4YnVmIClcbiMgMTY4IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBub3RfYXRfYm9zIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgNDRcbmFuZCBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTgwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA5IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxODUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgKCBmYWxzZSApXG4jIDE5MCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTIgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuIFxuICBsZXQgY29udGFpbnNfYmFja3RyYWNlcyBzID0gY2hlY2sgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4jIDIwMSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcbiIsIm9wZW4gRXhwZWN0X3Rlc3RfY29tbW9uXG5tb2R1bGUgTGlzdCA9IExpc3RMYWJlbHNcblxubW9kdWxlIFRlc3Rfb3V0Y29tZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZmlsZV9kaWdlc3QgOiBGaWxlLkRpZ2VzdC50XG4gICAgOyBsb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICAgIDsgZXhwZWN0YXRpb25zIDogRXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIDogRXhwZWN0YXRpb24uUmF3LnQgb3B0aW9uXG4gICAgOyBzYXZlZF9vdXRwdXQgOiAoRmlsZS5Mb2NhdGlvbi50ICogc3RyaW5nKSBsaXN0XG4gICAgOyB0cmFpbGluZ19vdXRwdXQgOiBzdHJpbmdcbiAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbiAgICA7IHVuY2F1Z2h0X2V4biA6IChleG4gKiBQcmludGV4Yy5yYXdfYmFja3RyYWNlKSBvcHRpb25cbiAgICB9XG5lbmRcblxubGV0IHRlc3RzX3J1biA6IFRlc3Rfb3V0Y29tZS50IGxpc3QgcmVmID0gcmVmIFtdXG5cbmxldCBwcm90ZWN0IH5maW5hbGx5IH5mID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPlxuICAgIGZpbmFsbHkgKCk7XG4gICAgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgZmluYWxseSAoKTtcbiAgICByYWlzZSBlXG47O1xuXG5tb2R1bGUgQ3VycmVudF9maWxlID0gc3RydWN0XG4gIGxldCBjdXJyZW50ID0gcmVmIE5vbmVcblxuICBsZXQgc2V0IH5hYnNvbHV0ZV9maWxlbmFtZSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBjdXJyZW50IDo9IFNvbWUgYWJzb2x1dGVfZmlsZW5hbWVcbiAgICB8IFNvbWUgXyAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5zZXQ6IGFscmVhZHkgc2V0XCJcbiAgOztcblxuICBsZXQgdW5zZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgXyAtPiBjdXJyZW50IDo9IE5vbmVcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IudW5zZXQ6IG5vdCBzZXRcIlxuICA7O1xuXG4gIGxldCBnZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgZm4gLT4gZm5cbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuZ2V0OiBub3Qgc2V0XCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2F2ZWQgOiAoRmlsZS5Mb2NhdGlvbi50ICogaW50KSBsaXN0XG4gICAgOyBjaGFuIDogb3V0X2NoYW5uZWxcbiAgICA7IGZpbGVuYW1lIDogRmlsZS5OYW1lLnRcbiAgICB9XG5cbiAgZXh0ZXJuYWwgYmVmb3JlX3Rlc3RcbiAgICA6ICBvdXRwdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRvdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRlcnI6b3V0X2NoYW5uZWxcbiAgICAtPiB1bml0XG4gICAgPSBcImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgYWZ0ZXJfdGVzdFxuICAgIDogIHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3RcIlxuXG4gIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkXCJcblxuICBsZXQgZ2V0X3Bvc2l0aW9uICgpID0gcG9zX291dCBzdGRvdXRcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgZmlsZW5hbWUgPSBGaWxlbmFtZS50ZW1wX2ZpbGUgXCJleHBlY3QtdGVzdFwiIFwib3V0cHV0XCIgaW5cbiAgICBsZXQgY2hhbiA9IG9wZW5fb3V0X2JpbiBmaWxlbmFtZSBpblxuICAgIGJlZm9yZV90ZXN0IH5vdXRwdXQ6Y2hhbiB+c3Rkb3V0IH5zdGRlcnI7XG4gICAgeyBjaGFuOyBmaWxlbmFtZSA9IEZpbGUuTmFtZS5vZl9zdHJpbmcgZmlsZW5hbWU7IHNhdmVkID0gW10gfVxuICA7O1xuXG4gIGxldCByZWxhdGl2ZV9maWxlbmFtZSB0ID0gRmlsZS5OYW1lLnJlbGF0aXZlX3RvIH5kaXI6KEZpbGUuaW5pdGlhbF9kaXIgKCkpIHQuZmlsZW5hbWVcblxuICBsZXQgd2l0aF9pYyBmbmFtZSB+ZiA9XG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBwcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gY2xvc2VfaW4gaWMpIH5mOihmdW4gKCkgLT4gZiBpYylcbiAgOztcblxuICBsZXQgY3VycmVudF90ZXN0IDogKEZpbGUuTG9jYXRpb24udCAqIHQpIG9wdGlvbiByZWYgPSByZWYgTm9uZVxuXG4gIGxldCBnZXRfY3VycmVudCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnRfdGVzdCB3aXRoXG4gICAgfCBTb21lIChfLCB0KSAtPiB0XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkluc3RhbmNlLmdldF9jdXJyZW50IGNhbGxlZCBvdXRzaWRlIGEgdGVzdC5cIlxuICA7O1xuXG4gIGxldCBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb24gPVxuICAgIGxldCBwb3MgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICB0LnNhdmVkIDwtIChsb2NhdGlvbiwgcG9zKSA6OiB0LnNhdmVkXG4gIDs7XG5cbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgbGV0IHByZXZfcG9zID1cbiAgICAgIG1hdGNoIHQuc2F2ZWQgd2l0aFxuICAgICAgfCBbXSAtPiAwXG4gICAgICB8IChfLCBwcmV2X3BvcykgOjogXyAtPiBwcmV2X3Bvc1xuICAgIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZDtcbiAgICBmbHVzaCB0LmNoYW47XG4gICAgbGV0IGxlbiA9IHBvcyAtIHByZXZfcG9zIGluXG4gICAgd2l0aF9pYyAocmVsYXRpdmVfZmlsZW5hbWUgdCkgfmY6KGZ1biBpYyAtPlxuICAgICAgc2Vla19pbiBpYyBwcmV2X3BvcztcbiAgICAgIHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuKVxuICA7O1xuZW5kXG5cbmxldCBiYXNpY19mbHVzaCAoKSA9XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuc3RkX2Zvcm1hdHRlciAoKTtcbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5lcnJfZm9ybWF0dGVyICgpO1xuICBTdGRsaWIuZmx1c2ggU3RkbGliLnN0ZG91dDtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRlcnJcbjs7XG5cbmxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IGxvY2F0aW9uID1cbiAgbGV0IGluc3RhbmNlID0gSW5zdGFuY2UuZ2V0X2N1cnJlbnQgKCkgaW5cbiAgYmFzaWNfZmx1c2ggKCk7XG4gIEluc3RhbmNlLnNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCBpbnN0YW5jZSBsb2NhdGlvblxuOztcblxubW9kdWxlIE1ha2UgKEMgOiBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuUykgPSBzdHJ1Y3RcbiAgbGV0ICggPj49ICkgdCBmID0gQy5JT19mbHVzaC5iaW5kIHQgfmZcbiAgbGV0IHJldHVybiA9IEMuSU9fZmx1c2gucmV0dXJuXG5cbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENcblxuICAgIGxldCBmbHVzaCAoKSA9XG4gICAgICBiYXNpY19mbHVzaCAoKTtcbiAgICAgIEMuSU9fZmx1c2gucmV0dXJuICgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEluc3RhbmNlX2lvIDogc2lnXG4gICAgdmFsIHNhdmVfb3V0cHV0IDogRmlsZS5Mb2NhdGlvbi50IC0+IHVuaXQgQy5JT19mbHVzaC50XG4gICAgdmFsIHNhdmVfYW5kX3JldHVybl9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gc3RyaW5nIEMuSU9fZmx1c2gudFxuXG4gICAgdmFsIGV4ZWNcbiAgICAgIDogIGZpbGVfZGlnZXN0OkZpbGUuRGlnZXN0LnRcbiAgICAgIC0+IGxvY2F0aW9uOkZpbGUuTG9jYXRpb24udFxuICAgICAgLT4gZXhwZWN0YXRpb25zOkV4cGVjdGF0aW9uLlJhdy50IGxpc3RcbiAgICAgIC0+IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbjpFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICAgIC0+IGY6KHVuaXQgLT4gdW5pdCBDLklPX3J1bi50KVxuICAgICAgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBvcGVuIEluc3RhbmNlXG5cbiAgICBsZXQgZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIGxlbiA9XG4gICAgICBsZXQgcyA9IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHw+IEMuc2FuaXRpemUgaW5cbiAgICAgIGlmIG5vdCAoQ2hlY2tfYmFja3RyYWNlcy5jb250YWluc19iYWNrdHJhY2VzIHMpXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgIC5tZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlXG4gICAgICAgICAgQy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICBeIHNcbiAgICA7O1xuXG4gICAgbGV0IGdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIHQgPVxuICAgICAgbGV0IGxhc3Rfb2ZzID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgICBhZnRlcl90ZXN0IH5zdGRvdXQgfnN0ZGVycjtcbiAgICAgIGNsb3NlX291dCB0LmNoYW47XG4gICAgICBsZXQgZm5hbWUgPSByZWxhdGl2ZV9maWxlbmFtZSB0IGluXG4gICAgICBwcm90ZWN0XG4gICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT4gU3lzLnJlbW92ZSBmbmFtZSlcbiAgICAgICAgfmY6KGZ1biAoKSAtPlxuICAgICAgICAgIHdpdGhfaWMgZm5hbWUgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgbGV0IG9mcywgb3V0cHV0cyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHQuc2F2ZWQpXG4gICAgICAgICAgICAgICAgfmluaXQ6KDAsIFtdKVxuICAgICAgICAgICAgICAgIH5mOihmdW4gKG9mcywgYWNjKSAobG9jLCBuZXh0X29mcykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChuZXh0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgICAgICAgIG5leHRfb2ZzLCAobG9jLCBzKSA6OiBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRyYWlsaW5nX291dHB1dCA9IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyAobGFzdF9vZnMgLSBvZnMpIGluXG4gICAgICAgICAgICBMaXN0LnJldiBvdXRwdXRzLCB0cmFpbGluZ19vdXRwdXQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9vdXRwdXQgbG9jYXRpb24gPVxuICAgICAgbGV0IHQgPSBnZXRfY3VycmVudCAoKSBpblxuICAgICAgQy5mbHVzaCAoKVxuICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgc2F2ZV9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uO1xuICAgICAgcmV0dXJuICgpXG4gICAgOztcblxuICAgIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IGxvY2F0aW9uID1cbiAgICAgIGxldCB0ID0gZ2V0X2N1cnJlbnQgKCkgaW5cbiAgICAgIEMuZmx1c2ggKCkgPj49IGZ1biAoKSAtPiByZXR1cm4gKHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uKVxuICAgIDs7XG5cbiAgICBsZXQgKCkgPVxuICAgICAgU3RkbGliLmF0X2V4aXQgKGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCAhY3VycmVudF90ZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSAobG9jLCB0KSAtPlxuICAgICAgICAgIGxldCBibG9ja3MsIHRyYWlsaW5nID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIkZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgICAgICAgICBFcnJvcjogcHJvZ3JhbSBleGl0ZWQgd2hpbGUgZXhwZWN0IHRlc3Qgd2FzIHJ1bm5pbmchXFxuXFxcbiAgICAgICAgICAgICBPdXRwdXQgY2FwdHVyZWQgc28gZmFyOlxcblxcXG4gICAgICAgICAgICAgJSFcIlxuICAgICAgICAgICAgKEZpbGUuTmFtZS50b19zdHJpbmcgbG9jLmZpbGVuYW1lKVxuICAgICAgICAgICAgbG9jLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAobG9jLnN0YXJ0X3BvcyAtIGxvYy5saW5lX3N0YXJ0KVxuICAgICAgICAgICAgKGxvYy5lbmRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpO1xuICAgICAgICAgIExpc3QuaXRlciBibG9ja3MgfmY6KGZ1biAoXywgcykgLT4gUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgcyk7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgdHJhaWxpbmcpXG4gICAgOztcblxuICAgIGxldCByZWMgZmluYWxfZmx1c2ggPyhjb3VudCA9IDApIGsgPVxuICAgICAgbGV0IG1heF9hdHRlbXB0cyA9IDEwIGluXG4gICAgICBDLmZsdXNoICgpXG4gICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICBpZiBDLmZsdXNoZWQgKClcbiAgICAgIHRoZW4gayB+YXBwZW5kOlwiXCJcbiAgICAgIGVsc2UgaWYgY291bnQgPSBtYXhfYXR0ZW1wdHNcbiAgICAgIHRoZW5cbiAgICAgICAga1xuICAgICAgICAgIH5hcHBlbmQ6XG4gICAgICAgICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgIFwiXFxuXFxcbiAgICAgICAgICAgICAgICBTVE9QUEVEIENPTExFQ1RJTkcgT1VUUFVUIEFGVEVSICVkIEZMVVNISU5HIEFUVEVNUFNcXG5cXFxuICAgICAgICAgICAgICAgIFRIRVJFIE1VU1QgQkUgQSBCQUNLR1JPVU5EIEpPQiBQUklOVElORyBUTyBTVERPVVRcXG5cIlxuICAgICAgICAgICAgICAgbWF4X2F0dGVtcHRzKVxuICAgICAgZWxzZSBmaW5hbF9mbHVzaCB+Y291bnQ6KGNvdW50ICsgMSkga1xuICAgIDs7XG5cbiAgICBsZXQgZXhlYyB+ZmlsZV9kaWdlc3QgfmxvY2F0aW9uIH5leHBlY3RhdGlvbnMgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbiB+ZiA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICAgICAgY3VycmVudF90ZXN0IDo9IFNvbWUgKGxvY2F0aW9uLCB0KTtcbiAgICAgIGxldCBmaW5hbGx5IHVuY2F1Z2h0X2V4biA9XG4gICAgICAgIEMucnVuIChmdW4gKCkgLT5cbiAgICAgICAgICBDLklPX2ZsdXNoLnRvX3J1blxuICAgICAgICAgICAgKGZpbmFsX2ZsdXNoIChmdW4gfmFwcGVuZCAtPlxuICAgICAgICAgICAgICAgY3VycmVudF90ZXN0IDo9IE5vbmU7XG4gICAgICAgICAgICAgICBsZXQgc2F2ZWRfb3V0cHV0LCB0cmFpbGluZ19vdXRwdXQgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgICAgICB0ZXN0c19ydW5cbiAgICAgICAgICAgICAgIDo9IHsgZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICAgICAgIDsgbG9jYXRpb25cbiAgICAgICAgICAgICAgICAgIDsgZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgICAgICA7IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgICAgICAgOyBzYXZlZF9vdXRwdXRcbiAgICAgICAgICAgICAgICAgIDsgdHJhaWxpbmdfb3V0cHV0ID0gdHJhaWxpbmdfb3V0cHV0IF4gYXBwZW5kXG4gICAgICAgICAgICAgICAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gQy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAgICAgICAgICAgOyB1bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDo6ICF0ZXN0c19ydW47XG4gICAgICAgICAgICAgICByZXR1cm4gKCkpKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBDLnJ1biBmIHdpdGhcbiAgICAgIHwgKCkgLT4gZmluYWxseSBOb25lXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgICAgZmluYWxseSAoU29tZSAoZXhuLCBidCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNhdmVfb3V0cHV0ID0gSW5zdGFuY2VfaW8uc2F2ZV9vdXRwdXRcbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgPSBJbnN0YW5jZV9pby5zYXZlX2FuZF9yZXR1cm5fb3V0cHV0XG5cbiAgbGV0IHJ1blxuICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgfihsb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udClcbiAgICAgICAgfmFic29sdXRlX2ZpbGVuYW1lOmRlZmluZWRfaW5cbiAgICAgICAgfmRlc2NyaXB0aW9uXG4gICAgICAgIH50YWdzXG4gICAgICAgIH5leHBlY3RhdGlvbnNcbiAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICB+aW5saW5lX3Rlc3RfY29uZmlnXG4gICAgICAgIGZcbiAgICA9XG4gICAgUHB4X2lubGluZV90ZXN0X2xpYi5SdW50aW1lLnRlc3RcbiAgICAgIH5jb25maWc6aW5saW5lX3Rlc3RfY29uZmlnXG4gICAgICB+ZGVzY3I6XG4gICAgICAgIChsYXp5XG4gICAgICAgICAgKG1hdGNoIGRlc2NyaXB0aW9uIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lIHMgLT4gcykpXG4gICAgICB+dGFnc1xuICAgICAgfmZpbGVuYW1lOihGaWxlLk5hbWUudG9fc3RyaW5nIGxvY2F0aW9uLmZpbGVuYW1lKVxuICAgICAgfmxpbmVfbnVtYmVyOmxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICB+c3RhcnRfcG9zOihsb2NhdGlvbi5zdGFydF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgfmVuZF9wb3M6KGxvY2F0aW9uLmVuZF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgbGV0IHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvciA9IEN1cnJlbnRfZmlsZS5nZXQgKCkgaW5cbiAgICAgICAgIGlmIGRlZmluZWRfaW4gPD4gcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgXCJUcnlpbmcgdG8gcnVuIGFuIGV4cGVjdCB0ZXN0IGZyb20gdGhlIHdyb25nIGZpbGUuXFxuXFxcbiAgICAgICAgICAgICAgLSB0ZXN0IGRlY2xhcmVkIGF0ICVzOiVkXFxuXFxcbiAgICAgICAgICAgICAgLSB0cnlpbmcgdG8gcnVuIGl0IGZyb20gJXNcXG5cIlxuICAgICAgICAgICAgIGRlZmluZWRfaW5cbiAgICAgICAgICAgICBsb2NhdGlvbi5saW5lX251bWJlclxuICAgICAgICAgICAgIHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvclxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICgqIFRvIGF2b2lkIGNhcHR1cmluZyBub3QteWV0IGZsdXNoZWQgZGF0YSBvZiB0aGUgc3Rkb3V0IGJ1ZmZlciAqKVxuICAgICAgICAgICBDLnJ1biAoZnVuICgpIC0+IEMuSU9fZmx1c2gudG9fcnVuIChDLmZsdXNoICgpKSk7XG4gICAgICAgICAgIEluc3RhbmNlX2lvLmV4ZWNcbiAgICAgICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICB+bG9jYXRpb25cbiAgICAgICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgIH5mO1xuICAgICAgICAgICB0cnVlKSlcbiAgOztcbmVuZFxuW0BAaW5saW5lIG5ldmVyXVxuXG5sZXQgdGVzdHNfcnVuICgpID1cbiAgKCogV2UgcHJlcGVuZCB0ZXN0cyB3aGVuIHdlIGVuY291bnRlciB0aGVtLCBzbyByZXZlcnNlIHRoZSBsaXN0IHRvIHJlaW5zdGF0ZSBvcmRlciAqKVxuICBMaXN0LnJldiAhdGVzdHNfcnVuXG47O1xuIiwibW9kdWxlIElPX3J1biA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCByZXR1cm4geCA9IHhcbiAgbGV0IGJpbmQgdCB+ZiA9IGYgdFxuZW5kXG5cbm1vZHVsZSBJT19mbHVzaCA9IHN0cnVjdFxuICBpbmNsdWRlIElPX3J1blxuXG4gIGxldCB0b19ydW4gdCA9IHRcbmVuZFxuXG5sZXQgc2FuaXRpemUgcyA9IHNcbmxldCBydW4gZiA9IGYgKClcbmxldCBmbHVzaGVkICgpID0gdHJ1ZSAoKiB0aGUgcnVudGltZSBmbHVzaGVkIFtzdGRvdXRdIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gKilcblxubGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gYENSXG4iLCJtb2R1bGUgUHB4X3NleHBfY29udl9saWIgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3JcbiAgbW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbiAgbW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5lbmRcblxubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIExpc3QgPSBMaXN0TGFiZWxzXG4iLCIoKiBUaGlzIG1vZHVsZSBidWlsZHMgYSBidWZmZXIgb2YgXCJpbnN0cnVjdGlvbnNcIiwgaW4gb3JkZXIgdG8gcmVwcmVzZW50IGEgY29tcGFjdCBzZXF1ZW5jZVxuICAgb2YgZGVsaW1pdGluZyBwb3NpdGlvbnMgYW5kIG5ld2xpbmVzLiBUaGUgcGFyc2VyIHN0b3JlcyB0aGUgcG9zaXRpb25zIG9mIGVhY2g6XG5cbiAgIC0gbmV3bGluZVxuICAgLSBiZWdpbm5pbmcgb2YgYXRvbVxuICAgLSBlbmQgb2YgYXRvbVxuICAgLSBsZWZ0IHBhcmVudGhlc2lzXG4gICAtIHJpZ2h0IHBhcmVudGhlc2lzXG5cbiAgIEluc3RydWN0aW9ucyBhcmUgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIGJpdHMuIFRoZSBuZXh0IGluc3RydWN0aW9uIGlzIGRldGVybWluZWQgYnlcbiAgIGxvb2tpbmcgYXQgdGhlIG5leHQgZmV3IGJpdHM6XG5cbiAgIC0gYml0IDAgcmVwcmVzZW50cyBhIHNhdmVkIHBvc2l0aW9uIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMCByZXByZXNlbnQgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMCBhcmUgZm9sbG93ZWQgYnkgNSBiaXRzIG9mIHBheWxvYWQuIFRoZSA1LWJpdCBwYXlsb2FkcyBvZiBhbnkgc3Vic2VxdWVudCAxMTAtXG4gICAgIGluc3RydWN0aW9ucyBhcmUgc3F1YXNoZWQgdG8gZm9ybSBhIG51bWJlciAobGVhc3Qgc2lnbmlmaWNhbnQgNS1iaXQgY2h1bmsgZmlyc3QpLlxuICAgICBUaGlzIG51bWJlciArIDUgcmVwcmVzZW50cyBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTExMCBtYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgbmV3IGxpbmUgKHdpdGggb2Zmc2V0IGluY3JlbWVudGVkKVxuICAgLSBiaXRzIDExMTEgcmVwcmVzZW50IGEgcG9zaXRpb24gc2F2ZWQgdHdpY2UgZm9sbG93ZWQgYnkgYW4gb2Zmc2V0IGluY3JlbWVudFxuXG4gICBGb3IgaW5zdGFuY2UgbGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzZXhwOlxuXG4gICB7W1xuICAgICB7fFxuKGFiY1xuICAgICAgXCJmb29cbiBiYXJcIlxuKVxufH1cbiAgIF19XG5cbiAgIHRoZSBzZXF1ZW5jZSBvZiBpbnN0cnVjdGlvbnMgdG8gcmVjb3JkIGluIG9yZGVyIHRvIHJlY29uc3RydWN0IHRoZSBwb3NpdGlvbiBvZiBhbnlcbiAgIHN1Yi1zZXhwIGlzOlxuXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGZpcnN0ICcoJ1xuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImFiY1wiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiYWJjXCJcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAxIGFkdmFuY2UgNlxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImZvb1xcbiAgYmFyXCJcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAwIGFkdmFuY2UgNVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBlbmQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGxhc3QgJyknXG5cbiAgICh3ZSBzYXZlIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgY2xvc2luZyBwYXJlbnRoZXNpcylcblxuICAgVGhlIHRvdGFsIHNlcXVlbmNlIGlzIDQyIGJpdHMsIHNvIHdlIG5lZWQgNiBieXRlcyB0byBzdG9yZSBpdFxuXG4gICBUaGUgc2VxdWVuY2Ugb2YgYml0cyBpcyBlbmNvZGVkIGFzIGEgc2VxdWVuY2Ugb2YgMTYtYml0IHZhbHVlcywgd2hlcmUgdGhlIGVhcmxpZXIgYml0c1xuICAgYXJlIG1vc3Qgc2lnbmlmaWNhbnQuXG5cbiAgIE5vdGUgdGhhdCB0aGUgcGFyc2VyIHN0b3JlcyB0aGUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUuIFRoaXMgd2F5IG9ubHkgc2luZ2xlXG4gICBjaGFyYWN0ZXIgYXRvbXMgcmVxdWlyZSBhIGRvdWJsZSBwb3NpdGlvbnMuIElmIHdlIHdlcmUgc3RvcmluZyBlbmQgcG9zaXRpb25zIGFzXG4gICBleGNsdXNpdmUsIHdlIHdvdWxkIG5lZWQgZG91YmxlIHBvc2l0aW9ucyBmb3IgWykoXSBhbmQgW2EoXSwgd2hpY2ggYXJlIGxpa2VseSB0byBiZVxuICAgZnJlcXVlbnQgaW4gcy1leHByZXNzaW9ucyBwcmludGVkIHdpdGggdGhlIG5vbiBbX2h1bV0gcHJpbnRlci4gV2UgZXhwZWN0IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHRvIGJlIGxlc3MgZnJlcXVlbnQgc28gaXQgbWFrZXMgc2Vuc2UgdG8gcGVuYWxpemUgdGhlbSBpbnN0ZWFkLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zID1cbiAgeyBsaW5lIDogaW50XG4gIDsgY29sIDogaW50XG4gIDsgb2Zmc2V0IDogaW50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9wb3MgPVxuICAoZnVuIHsgbGluZSA9IGxpbmVfXzAwMl87IGNvbCA9IGNvbF9fMDA0Xzsgb2Zmc2V0ID0gb2Zmc2V0X18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSBbXSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2ZfaW50IG9mZnNldF9fMDA2XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mZnNldFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9pbnQgY29sX18wMDRfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29sXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2ludCBsaW5lX18wMDJfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZVwiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDFfXG4gICAgIDogcG9zIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlX3BvcyA9IENhbWwuY29tcGFyZVxubGV0IGJlZ2lubmluZ19vZl9maWxlID0geyBsaW5lID0gMTsgY29sID0gMDsgb2Zmc2V0ID0gMCB9XG5sZXQgc2hpZnRfcG9zIHBvcyB+Y29scyA9IHsgcG9zIHdpdGggY29sID0gcG9zLmNvbCArIGNvbHM7IG9mZnNldCA9IHBvcy5vZmZzZXQgKyBjb2xzIH1cblxudHlwZSByYW5nZSA9XG4gIHsgc3RhcnRfcG9zIDogcG9zXG4gIDsgZW5kX3BvcyA6IHBvc1xuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfcmFuZ2UgPVxuICAoZnVuIHsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMDlfOyBlbmRfcG9zID0gZW5kX3Bvc19fMDExXyB9IC0+XG4gICAgIGxldCBibmRzX18wMDhfID0gW10gaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX3BvcyBlbmRfcG9zX18wMTFfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZW5kX3Bvc1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDhfXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9wb3Mgc3RhcnRfcG9zX18wMDlfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwOF9cbiAgICAgOiByYW5nZSAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZV9yYW5nZSA9IENhbWwuY29tcGFyZVxuXG5sZXQgbWFrZV9yYW5nZV9pbmNsIH5zdGFydF9wb3Mgfmxhc3RfcG9zID1cbiAgeyBzdGFydF9wb3M7IGVuZF9wb3MgPSBzaGlmdF9wb3MgbGFzdF9wb3MgfmNvbHM6MSB9XG47O1xuXG5tb2R1bGUgQ2h1bmsgOiBzaWdcbiAgKCoqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgW2xlbmd0aC8yXSBzaWduZWQgMTYtYml0IHZhbHVlcyAqKVxuICB0eXBlIHRcblxuICAoKiogTGVuZ3RoIGluIGJ5dGVzLiAqKVxuICB2YWwgbGVuZ3RoIDogaW50XG5cbiAgdmFsIGFsbG9jIDogdW5pdCAtPiB0XG5cbiAgKCoqIFtnZXQxNiB+cG9zXSBhbmQgW3NldDE2IH5wb3NdIG1hbmlwdWxhdGUgdGhlIFtwb3MvMl10aCBzdG9yZWQgdmFsdWUuXG4gICAgICBbcG9zXSBtdXN0IGJlIGV2ZW4uXG4gICAgICBbc2V0MTYgeF0gb25seSB1c2VzIHRoZSAxNiBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFt4XS4gKilcbiAgdmFsIGdldDE2IDogdCAtPiBwb3M6aW50IC0+IGludFxuXG4gIHZhbCBzZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgKCogT0NhbWwgc3RyaW5ncyBhbHdheXMgd2FzdGUgdHdvIGJ5dGVzIGF0IHRoZSBlbmQsIHNvIHdlIHRha2UgYSBwb3dlciBvZiB0d28gbWludXMgdHdvXG4gICAgIHRvIGJlIHN1cmUgd2UgZG9uJ3Qgd2FzdGUgc3BhY2UuICopXG4gIGxldCBsZW5ndGggPSA2MlxuICBsZXQgYWxsb2MgKCkgPSBCeXRlcy5jcmVhdGUgbGVuZ3RoXG5cbiAgZXh0ZXJuYWwgZ2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuICBleHRlcm5hbCBzZXQxNiA6IGJ5dGVzIC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcblxuICAoKiBJZiB3ZSB3YW50IHRvIG1ha2UgYSBbUG9zaXRpb25zLnRdIHNlcmlhbGl6YWJsZTpcblxuICAgICB7W1xuICAgICAgIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiOztcblxuICAgICAgIGxldCBnZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgLT4gZ2V0MTYgYnVmIH5wb3MgfD4gYnN3YXAxNlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBnZXQxNlxuXG4gICAgICAgbGV0IHNldDE2ID1cbiAgICAgICAgIGlmIENhbWwuU3lzLmFyY2hfYmlnX2VuZGlhbiB0aGVuXG4gICAgICAgICAgIGZ1biBidWYgfnBvcyB4IC0+IHNldDE2IGJ1ZiB+cG9zIChic3dhcDE2IHgpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIHNldDE2XG4gICAgIF19XG5cbiAgKilcbmVuZFxuXG50eXBlIHRfID1cbiAgeyBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2NodW5rc10uXG4gICAgICAgVGhlIGxhc3QgW2V4dHJhX2JpdHNdIGJpdHMgd2lsbCBiZSBzdG9yZWQgYXMgdGhlICpsZWFzdCogc2lnbmlmaWNhbnQgYml0c1xuICAgICAgIG9mIHRoZSBhcHByb3ByaWF0ZSBwYWlyIG9mIGJ5dGVzIG9mIHRoZSBsYXN0IGNodW5rLiAqKVxuICAgIG51bV9ieXRlcyA6IGludFxuICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgOyBpbml0aWFsX3BvcyA6IHBvc1xuICB9XG5cbnR5cGUgdCA9IHRfIExhenkudFxuXG5sZXQgbWVtb3J5X2Zvb3RwcmludF9pbl9ieXRlcyAobGF6eSB0KSA9XG4gIGxldCBudW1fZmllbGRzID0gNCBpblxuICBsZXQgaGVhZGVyX3dvcmRzID0gMSBpblxuICBsZXQgd29yZF9ieXRlcyA9XG4gICAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgfCAzMiAtPiA0XG4gICAgfCA2NCAtPiA4XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsZXQgY2h1bmtfd29yZHMgPVxuICAgIGxldCBkaXZfY2VpbCBhIGIgPSAoYSArIGIgLSAxKSAvIGIgaW5cbiAgICBsZXQgbiA9XG4gICAgICBkaXZfY2VpbFxuICAgICAgICAoQ2h1bmsubGVuZ3RoXG4gICAgICAgICArIDEgKCogTlVMIHRlcm1pbmF0aW5nIGJ5dGVzICopXG4gICAgICAgICArIDEgKCogbnVtYmVyIG9mIHdhc3RlZCBieXRlcyB0byBmaWxsIGEgd29yZCAqKSlcbiAgICAgICAgd29yZF9ieXRlc1xuICAgIGluXG4gICAgbiArIGhlYWRlcl93b3Jkc1xuICBpblxuICBsZXQgcG9zX2ZpZWxkcyA9IDMgaW5cbiAgbGV0IHBvc193b3JkcyA9IGhlYWRlcl93b3JkcyArIHBvc19maWVsZHMgaW5cbiAgbGV0IGxpc3RfY29uc193b3JkcyA9IGhlYWRlcl93b3JkcyArIDIgaW5cbiAgKGhlYWRlcl93b3Jkc1xuICAgKyBudW1fZmllbGRzXG4gICArIHBvc193b3Jkc1xuICAgKyAoTGlzdC5sZW5ndGggdC5jaHVua3MgKiAoY2h1bmtfd29yZHMgKyBsaXN0X2NvbnNfd29yZHMpKSlcbiAgKiB3b3JkX2J5dGVzXG47O1xuXG5tb2R1bGUgQnVpbGRlciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtfcG9zIDogaW50XG4gICAgOyBtdXRhYmxlIGZpbGxlZF9jaHVua3MgOiBDaHVuay50IGxpc3QgKCogRmlsbGVkIGNodW5rcyBpbiByZXZlcnNlIG9yZGVyICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgICgqIE9mZnNldCBvZiB0aGUgbGFzdCBzYXZlZCBwb3NpdGlvbiBvciBuZXdsaW5lIHBsdXNcbiAgICAgICBvbmUsIG9yIFtpbml0aWFsX3Bvc10gKilcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgICgqIHRoZSBbbnVtX2JpdHNdIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgW2ludF9idWZdXG4gICAgICAgYXJlIHRoZSBiaXRzIG5vdCB5ZXQgcHVzaGVkIHRvIFtjaHVua10uICopXG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIG51bWJlciBvZiBiaXRzIHN0b3JlZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgaW5pdGlhbF9wb3MgOiBwb3NcbiAgICB9XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQuY2h1bmtfcG9zID49IDAgJiYgdC5jaHVua19wb3MgPD0gQ2h1bmsubGVuZ3RoKTtcbiAgICBhc3NlcnQgKHQub2Zmc2V0ID49IHQuaW5pdGlhbF9wb3Mub2Zmc2V0KTtcbiAgICBhc3NlcnQgKHQubnVtX2JpdHMgPD0gMTUpXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IGZhbHNlXG4gIGxldCBpbnZhcmlhbnQgdCA9IGlmIGNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0XG5cbiAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gYmVnaW5uaW5nX29mX2ZpbGUpICgpID1cbiAgICB7IGNodW5rID0gQ2h1bmsuYWxsb2MgKClcbiAgICA7IGNodW5rX3BvcyA9IDBcbiAgICA7IGZpbGxlZF9jaHVua3MgPSBbXVxuICAgIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgOyBpbnRfYnVmID0gMFxuICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgOyBpbml0aWFsX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXQgdCAocG9zIDogcG9zKSA9XG4gICAgKCogV2UgbmVlZCBhIG5ldyBjaHVuayBhcyBbY29udGVudHNdIGtlZXBzIHRoZSBjdXJyZW50IGNodW5rIGluIHRoZSBjbG9zdXJlIG9mIHRoZVxuICAgICAgIGxhenkgdmFsdWUuICopXG4gICAgdC5jaHVuayA8LSBDaHVuay5hbGxvYyAoKTtcbiAgICB0LmNodW5rX3BvcyA8LSAwO1xuICAgIHQuZmlsbGVkX2NodW5rcyA8LSBbXTtcbiAgICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICAgIHQuaW50X2J1ZiA8LSAwO1xuICAgIHQubnVtX2JpdHMgPC0gMDtcbiAgICB0LmluaXRpYWxfcG9zIDwtIHBvc1xuICA7O1xuXG4gIGxldFtAaW5saW5lZCBuZXZlcl0gYWxsb2NfbmV3X2NodW5rIHQgPVxuICAgIHQuZmlsbGVkX2NodW5rcyA8LSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcztcbiAgICB0LmNodW5rIDwtIENodW5rLmFsbG9jICgpO1xuICAgIHQuY2h1bmtfcG9zIDwtIDBcbiAgOztcblxuICBsZXQgYWRkX3VpbnQxNiB0IG4gPVxuICAgIGlmIHQuY2h1bmtfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gYWxsb2NfbmV3X2NodW5rIHQ7XG4gICAgQ2h1bmsuc2V0MTYgdC5jaHVuayB+cG9zOnQuY2h1bmtfcG9zIG5cbiAgOztcblxuICBsZXQgYWRkX2JpdHMgdCBuIH5udW1fYml0cyA9XG4gICAgbGV0IGludF9idWYgPSAodC5pbnRfYnVmIGxzbCBudW1fYml0cykgbG9yIG4gaW5cbiAgICBsZXQgbnVtX2JpdHMgPSB0Lm51bV9iaXRzICsgbnVtX2JpdHMgaW5cbiAgICB0LmludF9idWYgPC0gaW50X2J1ZjtcbiAgICBpZiBudW1fYml0cyA8IDE2XG4gICAgdGhlbiB0Lm51bV9iaXRzIDwtIG51bV9iaXRzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnVtX2JpdHMgPSBudW1fYml0cyAtIDE2IGluXG4gICAgICB0Lm51bV9iaXRzIDwtIG51bV9iaXRzO1xuICAgICAgYWRkX3VpbnQxNiB0IChpbnRfYnVmIGxzciBudW1fYml0cyk7XG4gICAgICB0LmNodW5rX3BvcyA8LSB0LmNodW5rX3BvcyArIDJcbiAgICAgICgqIG5vIG5lZWQgdG8gY2xlYXIgdGhlIGJpdHMgb2YgaW50X2J1ZiB3ZSBqdXN0IHdyb3RlLCBhcyBmdXJ0aGVyIHNldDE2IHdpbGwgaWdub3JlXG4gICAgICAgICB0aGVzZSBleHRyYSBiaXRzLiAqKSlcbiAgOztcblxuICBsZXQgY29udGVudHMgdCA9XG4gICAgKCogRmx1c2ggdGhlIGN1cnJlbnQgW3QuaW50X2J1Zl0gKilcbiAgICBhZGRfdWludDE2IHQgdC5pbnRfYnVmO1xuICAgIGxldCByZXZfY2h1bmtzID0gdC5jaHVuayA6OiB0LmZpbGxlZF9jaHVua3MgaW5cbiAgICBsZXQgY2h1bmtfcG9zID0gdC5jaHVua19wb3MgaW5cbiAgICBsZXQgZXh0cmFfYml0cyA9IHQubnVtX2JpdHMgaW5cbiAgICBsZXQgaW5pdGlhbF9wb3MgPSB0LmluaXRpYWxfcG9zIGluXG4gICAgbGF6eVxuICAgICAgeyBjaHVua3MgPSBMaXN0LnJldiByZXZfY2h1bmtzXG4gICAgICA7IG51bV9ieXRlcyA9ICgoTGlzdC5sZW5ndGggcmV2X2NodW5rcyAtIDEpICogQ2h1bmsubGVuZ3RoKSArIGNodW5rX3Bvc1xuICAgICAgOyBleHRyYV9iaXRzXG4gICAgICA7IGluaXRpYWxfcG9zXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGxvbmdfc2hpZnQgdCBuID1cbiAgICBsZXQgbiA9IHJlZiAobiAtIDUpIGluXG4gICAgd2hpbGUgIW4gPiAwIGRvXG4gICAgICBhZGRfYml0cyB0ICgwYjExMDBfMDAwMCBsb3IgKCFuIGxhbmQgMGIwMDAxXzExMTEpKSB+bnVtX2JpdHM6ODtcbiAgICAgIG4gOj0gIW4gbHNyIDVcbiAgICBkb25lXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiBuID49IDUgKilcbiAgbGV0W0BpbmxpbmVkIG5ldmVyXSBhZGRfZ2VuX3Nsb3cgdCBuIH5pbnN0ciB+aW5zdHJfYml0cyA9XG4gICAgbG9uZ19zaGlmdCB0IG47XG4gICAgYWRkX2JpdHMgdCBpbnN0ciB+bnVtX2JpdHM6aW5zdHJfYml0c1xuICA7O1xuXG4gIGxldCBzaGlmdDQgPSAwYjEwXzEwXzEwXzEwXG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHIgfmluc3RyX2JpdHMgPVxuICAgIGludmFyaWFudCB0O1xuICAgIGxldCBuID0gb2Zmc2V0IC0gdC5vZmZzZXQgaW5cbiAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgIG1hdGNoIG4gd2l0aFxuICAgIHwgMCB8IDEgfCAyIHwgMyB8IDQgLT5cbiAgICAgIGxldCBudW1fYml0cyA9IChuIGxzbCAxKSArIGluc3RyX2JpdHMgaW5cbiAgICAgIGFkZF9iaXRzIHQgKChzaGlmdDQgbHNsIGluc3RyX2JpdHMpIGxvciBpbnN0ciBsYW5kICgoMSBsc2wgbnVtX2JpdHMpIC0gMSkpIH5udW1fYml0c1xuICAgIHwgNVxuICAgIHwgNlxuICAgIHwgN1xuICAgIHwgOFxuICAgIHwgOVxuICAgIHwgMTBcbiAgICB8IDExXG4gICAgfCAxMlxuICAgIHwgMTNcbiAgICB8IDE0XG4gICAgfCAxNVxuICAgIHwgMTZcbiAgICB8IDE3XG4gICAgfCAxOFxuICAgIHwgMTlcbiAgICB8IDIwXG4gICAgfCAyMVxuICAgIHwgMjJcbiAgICB8IDIzXG4gICAgfCAyNFxuICAgIHwgMjVcbiAgICB8IDI2XG4gICAgfCAyN1xuICAgIHwgMjhcbiAgICB8IDI5XG4gICAgfCAzMFxuICAgIHwgMzFcbiAgICB8IDMyXG4gICAgfCAzM1xuICAgIHwgMzRcbiAgICB8IDM1XG4gICAgfCAzNiAtPlxuICAgICAgYWRkX2JpdHNcbiAgICAgICAgdFxuICAgICAgICAoKCgwYjExMDBfMDAwMCBsb3IgKG4gLSA1KSkgbHNsIGluc3RyX2JpdHMpIGxvciBpbnN0cilcbiAgICAgICAgfm51bV9iaXRzOig4ICsgaW5zdHJfYml0cylcbiAgICB8IF8gLT5cbiAgICAgIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLlBvc2l0aW9ucy5hZGRfZ2VuXCI7XG4gICAgICBhZGRfZ2VuX3Nsb3cgdCBuIH5pbnN0ciB+aW5zdHJfYml0c1xuICA7O1xuXG4gIGxldCBhZGQgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMCB+aW5zdHJfYml0czoxXG4gIGxldCBhZGRfdHdpY2UgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMTExMSB+aW5zdHJfYml0czo0XG4gIGxldCBhZGRfbmV3bGluZSB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIxMTEwIH5pbnN0cl9iaXRzOjRcbmVuZFxuXG50eXBlIHBvc2l0aW9ucyA9IHRcblxubW9kdWxlIEl0ZXJhdG9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiBwb3NpdGlvbnMgLT4gdFxuXG4gIGV4Y2VwdGlvbiBOb19tb3JlXG5cbiAgKCogW2FkdmFuY2UgdCB+c2tpcF0gaWdub3JlcyBbc2tpcF0gc2F2ZWQgcG9zaXRpb25zIGFuZCByZXR1cm5zIHRoZSBuZXh0IHNhdmVkIHBvc2l0aW9uLlxuICAgICBSYWlzZXMgW05vX21vcmVdIHdoZW4gcmVhY2hpbmcgdGhlIGVuZCBvZiB0aGUgcG9zaXRpb24gc2V0LiAqKVxuICB2YWwgYWR2YW5jZV9leG4gOiB0IC0+IHNraXA6aW50IC0+IHBvc1xuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGNodW5rIDogQ2h1bmsudFxuICAgIDsgbXV0YWJsZSBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgICA7ICgqIFtudW1fYnl0ZXMgKiA4ICsgZXh0cmFfYml0c10gaXMgdGhlIG51bWJlciBvZiBiaXRzIGF2YWlsYWJsZSBmcm9tIFtpbnN0cl9wb3NdIGluXG4gICAgICAgICBbY2h1bmsgOjogY2h1bmtzXS4gKilcbiAgICAgIG11dGFibGUgbnVtX2J5dGVzIDogaW50XG4gICAgOyBleHRyYV9iaXRzIDogaW50XG4gICAgOyBtdXRhYmxlIGluc3RyX3BvcyA6IGludCAoKiBwb3NpdGlvbiBpbiBbY2h1bmtdICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgIDsgbXV0YWJsZSBsaW5lIDogaW50XG4gICAgOyBtdXRhYmxlIGJvbCA6IGludFxuICAgIDsgbXV0YWJsZSBpbnRfYnVmIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIE51bWJlciBvZiBiaXRzIG5vdCB5ZXQgY29uc3VtZWQgaW4gW2ludF9idWZdICopXG4gICAgOyBtdXRhYmxlIHBlbmRpbmcgOiBwb3Mgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBjcmVhdGUgKChsYXp5IHApIDogcG9zaXRpb25zKSA9XG4gICAgbWF0Y2ggcC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHsgY2h1bmtcbiAgICAgIDsgY2h1bmtzXG4gICAgICA7IG51bV9ieXRlcyA9IHAubnVtX2J5dGVzXG4gICAgICA7IGV4dHJhX2JpdHMgPSBwLmV4dHJhX2JpdHNcbiAgICAgIDsgaW5zdHJfcG9zID0gMFxuICAgICAgOyBvZmZzZXQgPSBwLmluaXRpYWxfcG9zLm9mZnNldFxuICAgICAgOyBsaW5lID0gcC5pbml0aWFsX3Bvcy5saW5lXG4gICAgICA7IGJvbCA9IHAuaW5pdGlhbF9wb3Mub2Zmc2V0IC0gcC5pbml0aWFsX3Bvcy5jb2xcbiAgICAgIDsgaW50X2J1ZiA9IDBcbiAgICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgICA7IHBlbmRpbmcgPSBOb25lXG4gICAgICB9XG4gIDs7XG5cbiAgZXhjZXB0aW9uIE5vX21vcmVcblxuICBsZXQgbm9fbW9yZSAoKSA9IHJhaXNlX25vdHJhY2UgTm9fbW9yZVxuXG4gIGxldFtAaW5saW5lZCBuZXZlcl0gZmV0Y2hfY2h1bmsgdCA9XG4gICAgbWF0Y2ggdC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHQuaW5zdHJfcG9zIDwtIDA7XG4gICAgICB0Lm51bV9ieXRlcyA8LSB0Lm51bV9ieXRlcyAtIENodW5rLmxlbmd0aDtcbiAgICAgIHQuY2h1bmsgPC0gY2h1bms7XG4gICAgICB0LmNodW5rcyA8LSBjaHVua3NcbiAgOztcblxuICBsZXQgZmV0Y2ggdCA9XG4gICAgaWYgdC5pbnN0cl9wb3MgPiB0Lm51bV9ieXRlcyB0aGVuIG5vX21vcmUgKCk7XG4gICAgaWYgdC5pbnN0cl9wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBmZXRjaF9jaHVuayB0O1xuICAgIGxldCB2ID0gQ2h1bmsuZ2V0MTYgdC5jaHVuayB+cG9zOnQuaW5zdHJfcG9zIGluXG4gICAgbGV0IGFkZGVkX2JpdHMgPSBpZiB0Lmluc3RyX3BvcyA9IHQubnVtX2J5dGVzIHRoZW4gdC5leHRyYV9iaXRzIGVsc2UgMTYgaW5cbiAgICB0LmludF9idWYgPC0gKHQuaW50X2J1ZiBsc2wgYWRkZWRfYml0cykgbG9yICh2IGxhbmQgKCgxIGxzbCBhZGRlZF9iaXRzKSAtIDEpKTtcbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgKyBhZGRlZF9iaXRzO1xuICAgIHQuaW5zdHJfcG9zIDwtIHQuaW5zdHJfcG9zICsgMlxuICA7O1xuXG4gIGxldCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHMgPVxuICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0c1xuICAgIHRoZW4gKFxuICAgICAgZmV0Y2ggdDtcbiAgICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0cyB0aGVuIG5vX21vcmUgKCkpO1xuICAgIGxldCBuID0gKHQuaW50X2J1ZiBsc3IgKHQubnVtX2JpdHMgLSBudW1fYml0cykpIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSBpblxuICAgIHQubnVtX2JpdHMgPC0gdC5udW1fYml0cyAtIG51bV9iaXRzO1xuICAgIG5cbiAgOztcblxuICAoKiBbb2Zmc2V0X3NoaWZ0XSBhbmQgW29mZnNldF9zaGlmdF9udW1fYml0c10gZW5jb2RlIHRoZSBvZmZzZXQgbnVtYmVyXG4gICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIFsxMTBdIGluc3RydWN0aW9ucy4gKilcbiAgbGV0IHJlYyBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzID1cbiAgICBtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAoKiBiaXQgc2VxIDAgLT4gbmV3IGl0ZW0gKilcbiAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9XG4gICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDEpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICB8IF8gLT5cbiAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAoKiBiaXQgc2VxIDEwIC0+IHNoaWZ0ICopXG4gICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgICAgIHwgXyAtPlxuICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICgqIGJpdCBzZXEgMTEwIC0+IGxvbmcgc2hpZnQgKilcbiAgICAgICAgICAgIGxldCBuID0gbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjUgaW5cbiAgICAgICAgICAgIGxldCBvZmZzZXRfc2hpZnQgPSBpZiBvZmZzZXRfc2hpZnRfbnVtX2JpdHMgPSAwIHRoZW4gNSBlbHNlIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgYWR2YW5jZVxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIH5za2lwXG4gICAgICAgICAgICAgIH5vZmZzZXRfc2hpZnQ6KG9mZnNldF9zaGlmdCArIChuIGxzbCBvZmZzZXRfc2hpZnRfbnVtX2JpdHMpKVxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOihvZmZzZXRfc2hpZnRfbnVtX2JpdHMgKyA1KVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMCAtPiBuZXdsaW5lICopXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICAgICAgICB0LmJvbCA8LSB0Lm9mZnNldDtcbiAgICAgICAgICAgICAgIHQubGluZSA8LSB0LmxpbmUgKyAxO1xuICAgICAgICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMSAtPiAyIG5ldyBpdGVtcyAqKVxuICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0IGluXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgaWYgc2tpcCA8PSAxXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9IGluXG4gICAgICAgICAgICAgICAgIGlmIHNraXAgPSAwIHRoZW4gdC5wZW5kaW5nIDwtIFNvbWUgcG9zO1xuICAgICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDIpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjApKSlcbiAgOztcblxuICBsZXQgYWR2YW5jZV9leG4gdCB+c2tpcCA9XG4gICAgbWF0Y2ggdC5wZW5kaW5nIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+XG4gICAgICB0LnBlbmRpbmcgPC0gTm9uZTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHBvc1xuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBOb25lIC0+IGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gIDs7XG5lbmRcblxubGV0IGZpbmQgdCBhIGIgPVxuICBpZiBhIDwgMCB8fCBiIDw9IGEgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmZpbmRcIjtcbiAgbGV0IGl0ZXIgPSBJdGVyYXRvci5jcmVhdGUgdCBpblxuICB0cnlcbiAgICBsZXQgc3RhcnRfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDphIGluXG4gICAgbGV0IGxhc3RfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDooYiAtIGEgLSAxKSBpblxuICAgIG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3Bvc1xuICB3aXRoXG4gIHwgSXRlcmF0b3IuTm9fbW9yZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUG9zaXRpb24uZmluZFwiXG47O1xuXG5sZXQgcmVjIHN1Yl9zZXhwX2NvdW50IChzZXhwIDogU2V4cC50KSA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gXyAtPiAxXG4gIHwgTGlzdCBsIC0+IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQ6MSB+ZjooZnVuIGFjYyB4IC0+IGFjYyArIHN1Yl9zZXhwX2NvdW50IHgpXG47O1xuXG5tb2R1bGUgU2V4cF9zZWFyY2ggPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIEZvdW5kIG9mIGludFxuXG4gIGxldCByZWMgbG9vcCB+c3ViIGluZGV4IChzZXhwIDogU2V4cC50KSA9XG4gICAgaWYgc2V4cCA9PSBzdWJcbiAgICB0aGVuIHJhaXNlX25vdHJhY2UgKEZvdW5kIGluZGV4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IEF0b20gXyAtPiBpbmRleCArIDJcbiAgICAgIHwgTGlzdCBsIC0+XG4gICAgICAgIGxldCBpbmRleCA9IGxvb3BfbGlzdCB+c3ViIChpbmRleCArIDEpIGwgaW5cbiAgICAgICAgaW5kZXggKyAxKVxuXG4gIGFuZCBsb29wX2xpc3QgfnN1YiBpbmRleCAoc2V4cHMgOiBTZXhwLnQgbGlzdCkgPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNleHBzIH5pbml0OmluZGV4IH5mOihsb29wIH5zdWIpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplIHQgfnN1YiBhID1cbiAgICBsZXQgYiA9IGEgKyAoc3ViX3NleHBfY291bnQgc3ViICogMikgLSAxIGluXG4gICAgU29tZSAoZmluZCB0IGEgYilcbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9waHlzIHQgc2V4cCB+c3ViID1cbiAgICBtYXRjaCBsb29wIH5zdWIgMCBzZXhwIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuXG4gIGxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyB0IHNleHBzIH5zdWIgPVxuICAgIG1hdGNoIGxvb3BfbGlzdCB+c3ViIDAgc2V4cHMgd2l0aFxuICAgIHwgKF8gOiBpbnQpIC0+IE5vbmVcbiAgICB8IGV4Y2VwdGlvbiBGb3VuZCBuIC0+IGZpbmFsaXplIHQgfnN1YiBuXG4gIDs7XG5lbmRcblxubGV0IGZpbmRfc3ViX3NleHBfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfcGh5c1xubGV0IGZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzID0gU2V4cF9zZWFyY2guZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBJdGVyYXRvci5Ob19tb3JlIC0+IExpc3QucmV2IGFjY1xuICAgIHwgcG9zIC0+IGxvb3AgKHBvcyA6OiBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gdG9fbGlzdCB0IHw+IEFycmF5Lm9mX2xpc3RcbmxldCBjb21wYXJlIHQxIHQyID0gQ2FtbC5jb21wYXJlICh0b19hcnJheSB0MSkgKHRvX2FycmF5IHQyKVxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX3BvcyAodG9fYXJyYXkgdClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IEF0b20gb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGF0b20gOiBzdHJpbmdcbiAgICAgIDsgdW5lc2NhcGVkIDogc3RyaW5nIG9wdGlvblxuICAgICAgfVxuICB8IExpc3Qgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGVsZW1lbnRzIDogdF9vcl9jb21tZW50IGxpc3RcbiAgICAgIH1cblxuYW5kIHRfb3JfY29tbWVudCA9XG4gIHwgU2V4cCBvZiB0XG4gIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbmFuZCBjb21tZW50ID1cbiAgfCBQbGFpbl9jb21tZW50IG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBjb21tZW50IDogc3RyaW5nXG4gICAgICB9XG4gIHwgU2V4cF9jb21tZW50IG9mXG4gICAgICB7IGhhc2hfc2VtaV9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgICA7IGNvbW1lbnRzIDogY29tbWVudCBsaXN0XG4gICAgICA7IHNleHAgOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHJlYyBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IEF0b20geyBsb2MgPSBsb2NfXzAwMl87IGF0b20gPSBhdG9tX18wMDRfOyB1bmVzY2FwZWQgPSB1bmVzY2FwZWRfXzAwNl8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwMV8gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9zdHJpbmcgdW5lc2NhcGVkX18wMDZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInVuZXNjYXBlZFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgYXRvbV9fMDA0XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJhdG9tXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwM18gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAwMl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIkF0b21cIiA6OiBibmRzX18wMDFfKVxuICAgIHwgTGlzdCB7IGxvYyA9IGxvY19fMDA5XzsgZWxlbWVudHMgPSBlbGVtZW50c19fMDExXyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDA4XyA9IFtdIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90X29yX2NvbW1lbnQgZWxlbWVudHNfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWxlbWVudHNcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA4X1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICAgbGV0IGFyZ19fMDEwXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDA5XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDA4X1xuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGlzdFwiIDo6IGJuZHNfXzAwOF8pXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5hbmQgc2V4cF9vZl90X29yX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFNleHAgYXJnMF9fMDEzXyAtPlxuICAgICAgbGV0IHJlczBfXzAxNF8gPSBzZXhwX29mX3QgYXJnMF9fMDEzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMTRfIF1cbiAgICB8IENvbW1lbnQgYXJnMF9fMDE1XyAtPlxuICAgICAgbGV0IHJlczBfXzAxNl8gPSBzZXhwX29mX2NvbW1lbnQgYXJnMF9fMDE1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29tbWVudFwiOyByZXMwX18wMTZfIF1cbiAgICAgIDogdF9vcl9jb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfY29tbWVudCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCB7IGxvYyA9IGxvY19fMDE4XzsgY29tbWVudCA9IGNvbW1lbnRfXzAyMF8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAxN18gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAxN18gPVxuICAgICAgICBsZXQgYXJnX18wMjFfID0gc2V4cF9vZl9zdHJpbmcgY29tbWVudF9fMDIwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50XCI7IGFyZ19fMDIxXyBdIDo6IGJuZHNfXzAxN19cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAxOV8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAxOF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDE5XyBdIDo6IGJuZHNfXzAxN19cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlBsYWluX2NvbW1lbnRcIiA6OiBibmRzX18wMTdfKVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgICAgIHsgaGFzaF9zZW1pX3BvcyA9IGhhc2hfc2VtaV9wb3NfXzAyM19cbiAgICAgICAgOyBjb21tZW50cyA9IGNvbW1lbnRzX18wMjVfXG4gICAgICAgIDsgc2V4cCA9IHNleHBfXzAyN19cbiAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAyMl8gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjhfID0gc2V4cF9vZl90IHNleHBfXzAyN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V4cFwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjJfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjZfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfY29tbWVudCBjb21tZW50c19fMDI1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50c1wiOyBhcmdfXzAyNl8gXSA6OiBibmRzX18wMjJfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjRfID0gUG9zaXRpb25zLnNleHBfb2ZfcG9zIGhhc2hfc2VtaV9wb3NfXzAyM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiaGFzaF9zZW1pX3Bvc1wiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjJfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJTZXhwX2NvbW1lbnRcIiA6OiBibmRzX18wMjJfKVxuICAgICAgOiBjb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlID0gQ2FtbC5jb21wYXJlXG5sZXQgY29tcGFyZV90X29yX2NvbW1lbnQgPSBDYW1sLmNvbXBhcmVcbmxldCBjb21wYXJlX2NvbW1lbnQgPSBDYW1sLmNvbXBhcmVcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoU2V4cC50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChTZXhwLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChTZXhwLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20geyBhdG9tOyBfIH0gLT4gayAoU2V4cC5BdG9tIGF0b20pXG4gICAgICB8IExpc3QgeyBlbGVtZW50czsgXyB9IC0+IGZvcmdldF90b2NzIGVsZW1lbnRzIChmdW4geHMgLT4gayAoU2V4cC5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXV0b21hdG9uX3N0YWNrX2ludGZcblxubW9kdWxlIEZvcl9jc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBUX29yX2NvbW1lbnQgb2YgQ3N0LnRfb3JfY29tbWVudCAqIHRcbiAgICB8IE9wZW4gb2YgUG9zaXRpb25zLnBvcyAqIHRcbiAgICB8IEluX3NleHBfY29tbWVudCBvZlxuICAgICAgICB7IGhhc2hfc2VtaV9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgICAgIDsgcmV2X2NvbW1lbnRzIDogQ3N0LmNvbW1lbnQgbGlzdFxuICAgICAgICA7IHN0YWNrIDogdFxuICAgICAgICB9XG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgZ2V0X21hbnkgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2NcbiAgICAgIHwgVF9vcl9jb21tZW50ICh0LCBzdGFjaykgLT4gbG9vcCAodCA6OiBhY2MpIHN0YWNrXG4gICAgICB8IE9wZW4gXyB8IEluX3NleHBfY29tbWVudCBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnlcIlxuICAgIGluXG4gICAgZnVuIHN0YWNrIC0+IGxvb3AgW10gc3RhY2tcbiAgOztcbmVuZFxuXG5tb2R1bGUgSnVzdF9wb3NpdGlvbnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdFxuXG4gIGxldCBlbXB0eSA9ICgpXG5lbmRcblxudHlwZSB0ID1cbiAgfCBFbXB0eVxuICB8IE9wZW4gb2YgdFxuICB8IFNleHAgb2YgU2V4cC50ICogdFxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgZ2V0X3NpbmdsZSA9IGZ1bmN0aW9uXG4gIHwgU2V4cCAoc2V4cCwgRW1wdHkpIC0+IHNleHBcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGVcIlxuOztcblxubGV0IGdldF9tYW55ID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2NcbiAgICB8IE9wZW4gXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5nZXRfbWFueVwiXG4gICAgfCBTZXhwIChzZXhwLCBzdGFjaykgLT4gbG9vcCAoc2V4cCA6OiBhY2MpIHN0YWNrXG4gIGluXG4gIGZ1biBzdGFjayAtPiBsb29wIFtdIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBTZXhwX2NvbW1lbnRcbiAgICB8IFNleHBcbmVuZFxuXG5tb2R1bGUgRm9yX2NzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQgKCoqIFN0YXJ0aW5nIHBvc2l0aW9ucyBvZiB0aGUgY3VycmVudCB0b2tlbiAqKilcbiAgICA7IG11dGFibGUgdG9rZW5fc3RhcnRfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHwgUG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIHVuaXQpIHRcbiAgICB8IFNleHAgOiAodW5pdCwgQXV0b21hdG9uX3N0YWNrLnQpIHRcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgQXV0b21hdG9uX3N0YWNrLnQpIHRcbiAgICB8IENzdCA6IChGb3JfY3N0LnQsIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQpIHRcbmVuZFxuXG5tb2R1bGUgcmVjIFN0YXRlIDogc2lnXG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgeyBtdXRhYmxlIGF1dG9tYXRvbl9zdGF0ZSA6IGludFxuICAgIDsga2luZCA6ICgndSwgJ3MpIEtpbmQudFxuICAgIDsgbXV0YWJsZSBkZXB0aCA6IGludCAoKiogTnVtYmVyIG9mIG9wZW5lZCAjfCB3aGVuIHBhcnNpbmcgYSBibG9jayBjb21tZW50ICopXG4gICAgOyBtdXRhYmxlIGJsb2NrX2NvbW1lbnRfZGVwdGggOiBpbnRcbiAgICAoKiogU3RhY2sgb2YgaWdub3JpbmcgZGVwdGhzOyB0aGUgY3VycmVudCBkZXB0aCBpcyBwdXNoZWRcbiAgICAgICAgZWFjaCB0aW1lIGEgIzsgY29tbWVudCBpcyBlbnRlcmVkLiAqKVxuICAgIDsgbXV0YWJsZSBpZ25vcmluZ19zdGFjayA6IGludCBsaXN0XG4gICAgKCoqIFdoZW4gcGFyc2luZyBhbiBlc2NhcGUgc2VxdWVuY2Ugb2YgdGhlIGZvcm0gXCJcXFxcTk5OXCIgb3IgXCJcXFxcWFhcIiwgdGhpcyBhY2N1bXVsYXRlc1xuICAgICAgICB0aGUgY29tcHV0ZWQgbnVtYmVyICopXG4gICAgOyBtdXRhYmxlIGVzY2FwZWRfdmFsdWUgOiBpbnQgKCoqIEJ1ZmZlciBmb3IgYWNjdW11bGF0aW5nIGF0b21zICopXG4gICAgOyBhdG9tX2J1ZmZlciA6IEJ1ZmZlci50XG4gICAgOyB1c2VyX3N0YXRlIDogJ3VcbiAgICA7IG1vZGUgOiAoJ3UsICdzKSBNb2RlLnRcbiAgICA7IG11dGFibGUgZnVsbF9zZXhwcyA6IGludFxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnQgKCoqIGdsb2JhbCBvZmZzZXQgKiopXG4gICAgOyBtdXRhYmxlIGxpbmVfbnVtYmVyIDogaW50XG4gICAgOyBtdXRhYmxlIGJvbF9vZmZzZXQgOiBpbnQgKCoqIG9mZnNldCBvZiBiZWdpbm5pbmcgb2YgbGluZSAqKilcbiAgICB9XG5lbmQgPVxuICBTdGF0ZVxuXG5hbmQgTW9kZSA6IHNpZ1xuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHwgU2luZ2xlXG4gICAgfCBNYW55XG4gICAgfCBFYWdlciBvZlxuICAgICAgICB7IGdvdF9zZXhwIDogKCd1LCAncykgU3RhdGUudCAtPiAncyAtPiAnc1xuICAgICAgICA7IG11dGFibGUgbm9fc2V4cF9pc19lcnJvciA6IGJvb2xcbiAgICAgICAgfVxuZW5kID1cbiAgTW9kZVxuXG5tb2R1bGUgdHlwZSBBdXRvbWF0b25fc3RhdGUgPSBzaWdcbiAgbW9kdWxlIENvbnRleHQgPSBDb250ZXh0XG4gIG1vZHVsZSBGb3JfY3N0ID0gRm9yX2NzdFxuICBtb2R1bGUgS2luZCA9IEtpbmRcbiAgbW9kdWxlIE1vZGUgPSBNb2RlXG4gIG1vZHVsZSBTdGF0ZSA9IFN0YXRlXG5cbiAgdHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgU3RhdGUudFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/aW5pdGlhbF9wb3M6UG9zaXRpb25zLnBvc1xuICAgIC0+ICgndSwgJ3MpIE1vZGUudFxuICAgIC0+ICgndSwgJ3MpIEtpbmQudFxuICAgIC0+ICgndSwgJ3MpIHRcblxuICB2YWwgcmVzZXQgOiA/cG9zOlBvc2l0aW9ucy5wb3MgLT4gXyB0IC0+IHVuaXRcbiAgdmFsIHBvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCBfKSB0IC0+IFBvc2l0aW9ucy50XG4gIHZhbCBtb2RlIDogKCd1LCAncykgdCAtPiAoJ3UsICdzKSBNb2RlLnRcblxuICAoKiogTnVtYmVyIG9mIGNoYXJhY3RlcnMgZmVkIHRvIHRoZSBwYXJzZXIgKilcbiAgdmFsIG9mZnNldCA6IF8gdCAtPiBpbnRcblxuICAoKiogUG9zaXRpb24gaW4gdGhlIHRleHQgKilcbiAgdmFsIGxpbmUgOiBfIHQgLT4gaW50XG5cbiAgdmFsIGNvbHVtbiA6IF8gdCAtPiBpbnRcblxuICAoKiogV2hldGhlciB0aGVyZSBhcmUgc29tZSB1bmNsb3NlZCBwYXJlbnRoZXNlcyAqKVxuICB2YWwgaGFzX3VuY2xvc2VkX3BhcmVuIDogKCd1LCAncykgdCAtPiBib29sXG5cbiAgdmFsIHNldF9lcnJvcl9zdGF0ZSA6IF8gdCAtPiB1bml0XG5cbiAgKCoqLyoqKVxuXG4gICgqXyBPbmx5IGZvciBjb252ZXJ0aW5nIGVycm9ycyB0byB0aGUgb2xkIHBhcnNlciBlcnJvcnMgKilcbiAgdmFsIGF0b21fYnVmZmVyIDogXyB0IC0+IEJ1ZmZlci50XG5cbiAgKCpfIEZvciBjb3ZlcmF0ZSB0ZXN0cyAqKVxuICB2YWwgYXV0b21hdG9uX3N0YXRlIDogKCd1LCAncykgdCAtPiBpbnRcbiAgdmFsIGNvbnRleHQgOiBfIHQgLT4gQ29udGV4dC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBdXRvbWF0b25fc3RhdGVfaW50ZlxuXG50eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBTdGF0ZS50XG5cbm9wZW4gU3RhdGVcblxubGV0IGluaXRpYWxfdXNlcl9zdGF0ZSA6IHR5cGUgdSBzLiAodSwgcykgS2luZC50IC0+IFBvc2l0aW9ucy5wb3MgLT4gdSA9XG4gIGZ1biBraW5kIGluaXRpYWxfcG9zIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5jcmVhdGUgfmluaXRpYWxfcG9zICgpXG4gIHwgU2V4cCAtPiAoKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuY3JlYXRlIH5pbml0aWFsX3BvcyAoKVxuICB8IENzdCAtPlxuICAgICgqIFt0b2tlbl9zdGFydF9wb3NdIGlzIHNldCB0byBhIGR1bW15IGxvY2F0aW9uIGhlcmUuIEl0IGlzIHByb3Blcmx5IHNldCB3aGVuIHdlXG4gICAgICAgc3RhcnQgdG8gY2FwdHVyZSBhIHRva2VuIGZyb20gdGhlIGlucHV0ICopXG4gICAgeyB0b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDEyODsgdG9rZW5fc3RhcnRfcG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlIH1cbjs7XG5cbigqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9hdXRvbWF0b25fc3RhdGUucHJpbnRfY29uc3RhbnRzICgpICopXG5sZXQgaW5pdGlhbF9zdGF0ZSA9IDBcbmxldCBlcnJvcl9zdGF0ZSA9IDFcblxuKCokKilcblxubGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlKSBtb2RlIGtpbmQgPVxuICB7IGtpbmRcbiAgOyBkZXB0aCA9IDBcbiAgOyBhdXRvbWF0b25fc3RhdGUgPSBpbml0aWFsX3N0YXRlXG4gIDsgYmxvY2tfY29tbWVudF9kZXB0aCA9IDBcbiAgOyBpZ25vcmluZ19zdGFjayA9IFtdXG4gIDsgZXNjYXBlZF92YWx1ZSA9IDBcbiAgOyBhdG9tX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMTI4XG4gIDsgdXNlcl9zdGF0ZSA9IGluaXRpYWxfdXNlcl9zdGF0ZSBraW5kIGluaXRpYWxfcG9zXG4gIDsgbW9kZVxuICA7IGZ1bGxfc2V4cHMgPSAwXG4gIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gIDsgbGluZV9udW1iZXIgPSBpbml0aWFsX3Bvcy5saW5lXG4gIDsgYm9sX29mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldCAtIGluaXRpYWxfcG9zLmNvbFxuICB9XG47O1xuXG5sZXQgbW9kZSB0ID0gdC5tb2RlXG5sZXQgcG9zaXRpb25zIHQgPSBQb3NpdGlvbnMuQnVpbGRlci5jb250ZW50cyB0LnVzZXJfc3RhdGVcbmxldCBhdG9tX2J1ZmZlciB0ID0gdC5hdG9tX2J1ZmZlclxubGV0IG9mZnNldCBzdGF0ZSA9IHN0YXRlLm9mZnNldFxubGV0IGxpbmUgc3RhdGUgPSBzdGF0ZS5saW5lX251bWJlclxubGV0IGNvbHVtbiBzdGF0ZSA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbmxldCBwb3NpdGlvbiB0ID0geyBQb3NpdGlvbnMuY29sID0gY29sdW1uIHQ7IGxpbmUgPSBsaW5lIHQ7IG9mZnNldCA9IG9mZnNldCB0IH1cblxubGV0IHJlc2V0X3VzZXJfc3RhdGUgOiB0eXBlIHUgcy4gKHUsIHMpIHQgLT4gdW5pdCA9XG4gIGZ1biB0IC0+XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0IHQudXNlcl9zdGF0ZSAocG9zaXRpb24gdClcbiAgfCBTZXhwIC0+ICgpXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5yZXNldCB0LnVzZXJfc3RhdGUgKHBvc2l0aW9uIHQpXG4gIHwgQ3N0IC0+IEJ1ZmZlci5jbGVhciB0LnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyXG47O1xuXG5sZXQgcmVzZXQgPyhwb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUpIHQgPVxuICB0LmRlcHRoIDwtIDA7XG4gIHQuYXV0b21hdG9uX3N0YXRlIDwtIGluaXRpYWxfc3RhdGU7XG4gIHQuYmxvY2tfY29tbWVudF9kZXB0aCA8LSAwO1xuICB0Lmlnbm9yaW5nX3N0YWNrIDwtIFtdO1xuICB0LmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgdC5mdWxsX3NleHBzIDwtIDA7XG4gIHQub2Zmc2V0IDwtIHBvcy5vZmZzZXQ7XG4gIHQubGluZV9udW1iZXIgPC0gcG9zLmxpbmU7XG4gIHQuYm9sX29mZnNldCA8LSBwb3Mub2Zmc2V0IC0gcG9zLmNvbDtcbiAgcmVzZXRfdXNlcl9zdGF0ZSB0O1xuICBCdWZmZXIuY2xlYXIgdC5hdG9tX2J1ZmZlclxuOztcblxubGV0IGNvbnRleHQgc3RhdGUgOiBDb250ZXh0LnQgPVxuICBtYXRjaCBzdGF0ZS5pZ25vcmluZ19zdGFjayB3aXRoXG4gIHwgXyA6OiBfIC0+IFNleHBfY29tbWVudFxuICB8IFtdIC0+IFNleHBcbjs7XG5cbmxldCBoYXNfdW5jbG9zZWRfcGFyZW4gc3RhdGUgPSBzdGF0ZS5kZXB0aCA+IDBcbmxldCBzZXRfZXJyb3Jfc3RhdGUgc3RhdGUgPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGUgPC0gZXJyb3Jfc3RhdGVcbmxldCBhdXRvbWF0b25fc3RhdGUgc3RhdGUgPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgUmVhc29uID0gc3RydWN0XG4gICgqXyBTb21lIG9mIHRoZXNlIGNvbWUgZnJvbSBbUGFyc2V4cF9zeW1ib2xpY19hdXRvbWF0b24uUGFyc2VfZXJyb3JfcmVhc29uXS4gKilcbiAgdHlwZSB0ID1cbiAgICAoKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fcGFyc2VfZXJyb3IucHJpbnRfY29uc3RydWN0b3JzICgpICopXG4gICAgfCBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbVxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZVxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZVxuICAgIHwgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbiAgICB8IFVudGVybWluYXRlZF9ibG9ja19jb21tZW50XG4gICAgfCBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZ1xuICAgICgqJCopXG4gICAgfCBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWRcbiAgICB8IEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2VcbiAgICB8IE5vX3NleHBfZm91bmRfaW5faW5wdXRcbiAgICB8IFNleHBfY29tbWVudF93aXRob3V0X3NleHBcbiAgICB8IFRvb19tYW55X3NleHBzXG4gICAgfCBVbmNsb3NlZF9wYXJlblxuZW5kXG5cbm1vZHVsZSB0eXBlIFBhcnNlX2Vycm9yID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCBwb3NpdGlvbiA6IHQgLT4gUG9zaXRpb25zLnBvc1xuICB2YWwgbWVzc2FnZSA6IHQgLT4gc3RyaW5nXG5cbiAgKCoqIFJlcG9ydCBhbiBlcnJvciBpbiBhIHN0eWxlIHNpbWlsYXIgdG8gT0NhbWwsIGZvciBpbnN0YW5jZTpcblxuICAgICAgRmlsZSBcImJsYWhcIiwgbGluZSA0MiwgY2hhcmFjdGVyIDEwOlxuICAgICAgRXJyb3I6IHMtZXhwcmVzc2lvbiBwYXJzaW5nIGVycm9yO1xuICAgICAgdW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmcuXG4gICopXG4gIHZhbCByZXBvcnQgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IGZpbGVuYW1lOnN0cmluZyAtPiB0IC0+IHVuaXRcblxuICBleGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgdFxuXG4gICgqKi8qKilcblxuICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgIG1vZHVsZSBSZWFzb24gPSBSZWFzb25cblxuICAgICgqKiBUbyBtYXRjaCB0aGUgb2xkIGJlaGF2aW9yLCB0aGUgb2xkIHBhcnNlciBzb21ldGltZXMgcmFpc2VkIFtGYWlsdXJlXSBhbmQgc29tZXRpbWVzXG4gICAgICAgIHJhaXNlZCBbUGFyc2VfZXJyb3JdICopXG4gICAgdmFsIG9sZF9wYXJzZXJfZXhuIDogdCAtPiBbIGBQYXJzZV9lcnJvciB8IGBGYWlsdXJlIF1cblxuICAgIHZhbCByYWlzZSA6IFJlYXNvbi50IC0+IFBvc2l0aW9ucy5wb3MgLT4gYXRfZW9mOmJvb2wgLT4gYXRvbV9idWZmZXI6QnVmZmVyLnQgLT4gJ2FcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBQYXJzZV9lcnJvcl9pbnRmXG5cbnR5cGUgdCA9XG4gIHsgcG9zaXRpb24gOiBQb3NpdGlvbnMucG9zXG4gIDsgbWVzc2FnZSA6IHN0cmluZ1xuICA7IG9sZF9wYXJzZXJfZXhuIDogWyBgUGFyc2VfZXJyb3IgfCBgRmFpbHVyZSBdXG4gIH1cblxubGV0IHNleHBfb2ZfdCB7IHBvc2l0aW9uOyBtZXNzYWdlOyBvbGRfcGFyc2VyX2V4biA9IF8gfSA6IFNleHAudCA9XG4gIExpc3RcbiAgICBbIExpc3QgWyBBdG9tIFwicG9zaXRpb25cIjsgUG9zaXRpb25zLnNleHBfb2ZfcG9zIHBvc2l0aW9uIF1cbiAgICA7IExpc3QgWyBBdG9tIFwibWVzc2FnZVwiOyBzZXhwX29mX3N0cmluZyBtZXNzYWdlIF1cbiAgICBdXG47O1xuXG5sZXQgcG9zaXRpb24gdCA9IHQucG9zaXRpb25cbmxldCBtZXNzYWdlIHQgPSB0Lm1lc3NhZ2VcbmxldCBvbGRfcGFyc2VyX2V4biB0ID0gdC5vbGRfcGFyc2VyX2V4blxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBwb3MgPSBwb3NpdGlvbiB0IGluXG4gIGxldCBtc2cgPSBtZXNzYWdlIHQgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVyICVkOlxcbkVycm9yOiBzLWV4cHJlc3Npb24gcGFyc2luZyBlcnJvcjtcXG4lc1xcblwiXG4gICAgZmlsZW5hbWVcbiAgICBwb3MubGluZVxuICAgIHBvcy5jb2xcbiAgICBtc2dcbjs7XG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2VfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBzZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicGFyc2VfZXJyb3IubWwuUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByYWlzZSAocmVhc29uIDogUmVhc29uLnQpIHBvc2l0aW9uIH5hdF9lb2YgfmF0b21fYnVmZmVyID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgICgqIFRoZXNlIG1lc3NhZ2VzIHdoZXJlIGNob29zZW4gc3VjaCB0aGF0IHdlIGNhbiBidWlsZCB0aGUgdmFyaW91cyBTZXhwbGliIHBhcnNpbmdcbiAgICAgICBmdW5jdGlvbnMgb24gdG9wIG9mIFBhcnNleHAgYW5kIGtlZXAgdGhlIHNhbWUgZXhjZXB0aW9ucy5cblxuICAgICAgIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcywgYSBzaW1wbGUgbGF5ZXIgb24gdG9wIG9mIHBhcnNleHAgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgIHNleHBsaWIgQVBJIGlzIHBhc3NpbmcgYWxsIHRoZSBzZXhwbGliIHRlc3RzLlxuXG4gICAgICAgTm90ZSB0aGF0IHBhcnNleHAgbWF0Y2hlcyB0aGUgc2VtYW50aWMgb2YgU2V4cC5wYXJzZSB3aGljaCBpcyBzbGlnaHRseVxuICAgICAgIGRpZmZlcmVudCBmcm9tIHRoZSBvY2FtbGxleC9vY2FtbHlhY2MgYmFzZWQgcGFyc2VyIG9mIFNleHBsaWIuIFRoZSBsYXR0ZXIgb25lXG4gICAgICAgaXMgbGVzcyB0ZXN0ZWQgYW5kIGFzc3VtZWQgdG8gYmUgbGVzcyB1c2VkLiAqKVxuICAgIG1hdGNoIHJlYXNvbiB3aXRoXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlIC0+IFwidW50ZXJtaW5hdGVkIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlIC0+IFwidW50ZXJtaW5hdGVkIGRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXCJcbiAgICB8IFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nIC0+IFwidW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmdcIlxuICAgIHwgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnQgLT4gXCJ1bnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudFwiXG4gICAgfCBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlIC0+IFwiZXNjYXBlIHNlcXVlbmNlIGluIHF1b3RlZCBzdHJpbmcgb3V0IG9mIHJhbmdlXCJcbiAgICB8IFVuY2xvc2VkX3BhcmVuIC0+IFwidW5jbG9zZWQgcGFyZW50aGVzZXMgYXQgZW5kIG9mIGlucHV0XCJcbiAgICB8IFRvb19tYW55X3NleHBzIC0+IFwicy1leHByZXNzaW9uIGZvbGxvd2VkIGJ5IGRhdGFcIlxuICAgIHwgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkIC0+IFwidW5leHBlY3RlZCBjaGFyYWN0ZXI6ICcpJ1wiXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b20gLT5cbiAgICAgIGlmIFN0cmluZy5lcXVhbCAoQnVmZmVyLmNvbnRlbnRzIGF0b21fYnVmZmVyKSBcInxcIlxuICAgICAgdGhlbiBcImlsbGVnYWwgZW5kIG9mIGNvbW1lbnRcIlxuICAgICAgZWxzZSBcImNvbW1lbnQgdG9rZW5zIGluIHVucXVvdGVkIGF0b21cIlxuICAgIHwgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cCAtPiBcInVudGVybWluYXRlZCBzZXhwIGNvbW1lbnRcIlxuICAgIHwgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3IgLT5cbiAgICAgIGlmIGF0X2VvZlxuICAgICAgdGhlbiBcInVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGFmdGVyIGNhcnJpYWdlIHJldHVyblwiXG4gICAgICBlbHNlIFwidW5leHBlY3RlZCBjaGFyYWN0ZXIgYWZ0ZXIgY2FycmlhZ2UgcmV0dXJuXCJcbiAgICB8IE5vX3NleHBfZm91bmRfaW5faW5wdXQgLT4gXCJubyBzLWV4cHJlc3Npb24gZm91bmQgaW4gaW5wdXRcIlxuICAgIHwgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlIC0+IGZhaWx3aXRoIFwiUGFyc2V4cC5QYXJzZXJfYXV0b21hdG9uOiBwYXJzZXIgaXMgZGVhZFwiXG4gIGluXG4gIGxldCBvbGRfcGFyc2VyX2V4biA9XG4gICAgbWF0Y2ggcmVhc29uLCBhdF9lb2Ygd2l0aFxuICAgIHwgVG9vX21hbnlfc2V4cHMsIF8gfCBfLCB0cnVlIC0+IGBGYWlsdXJlXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b20sIF9cbiAgICAgIHdoZW4gU3RyaW5nLmVxdWFsIChCdWZmZXIuY29udGVudHMgYXRvbV9idWZmZXIpIFwifFwiIC0+IGBGYWlsdXJlXG4gICAgfCBfIC0+IGBQYXJzZV9lcnJvclxuICBpblxuICByYWlzZSAoUGFyc2VfZXJyb3IgeyBwb3NpdGlvbjsgbWVzc2FnZTsgb2xkX3BhcnNlcl9leG4gfSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBSZWFzb24gPSBSZWFzb25cblxuICBsZXQgb2xkX3BhcnNlcl9leG4gPSBvbGRfcGFyc2VyX2V4blxuICBsZXQgcmFpc2UgPSByYWlzZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQXV0b21hdG9uX3N0YXRlXG5vcGVuIFN0YXRlXG5cbmxldCByYWlzZV9lcnJvciA6IHR5cGUgYSBiLiAoYSwgYikgQXV0b21hdG9uX3N0YXRlLnQgLT4gXyA9XG4gIGZ1biBzdGF0ZSB+YXRfZW9mIHJlYXNvbiAtPlxuICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gIFBhcnNlX2Vycm9yLlByaXZhdGUucmFpc2VcbiAgICByZWFzb25cbiAgICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlclxuICAgIDsgY29sID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxuICAgIDsgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0XG4gICAgfVxuICAgIH5hdF9lb2ZcbiAgICB+YXRvbV9idWZmZXI6c3RhdGUuYXRvbV9idWZmZXJcbjs7XG5cbnR5cGUgbm9ucmVjIGNvbnRleHQgPSBBdXRvbWF0b25fc3RhdGUuQ29udGV4dC50ID1cbiAgfCBTZXhwX2NvbW1lbnRcbiAgfCBTZXhwXG5cbmxldCBjb250ZXh0ID0gQXV0b21hdG9uX3N0YXRlLmNvbnRleHRcblxudHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiAncyAtPiAnc1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0geyBmIDogJ3UgJ3MuICgndSwgJ3MpIHQgfSBbQEB1bmJveGVkXVxuZW5kXG5cbm1vZHVsZSBFcHNpbG9uID0gc3RydWN0XG4gIHR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIEF1dG9tYXRvbl9zdGF0ZS50IC0+ICdzIC0+ICdzXG5cbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0geyBmIDogJ3UgJ3MuICgndSwgJ3MpIHQgfSBbQEB1bmJveGVkXVxuICBlbmRcbmVuZFxuXG5sZXQgY3VycmVudF9wb3MgPyhkZWx0YSA9IDApIHN0YXRlIDogUG9zaXRpb25zLnBvcyA9XG4gIGxldCBvZmZzZXQgPSBzdGF0ZS5vZmZzZXQgKyBkZWx0YSBpblxuICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlcjsgY29sID0gb2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldDsgb2Zmc2V0IH1cbjs7XG5cbmxldCBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIHggPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGUgPC0geFxubGV0IGFkdmFuY2Ugc3RhdGUgPSBzdGF0ZS5vZmZzZXQgPC0gc3RhdGUub2Zmc2V0ICsgMVxuXG5sZXQgYWR2YW5jZV9lb2wgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHVuaXQgPVxuICBmdW4gc3RhdGUgLT5cbiAgbGV0IG5ld2xpbmVfb2Zmc2V0ID0gc3RhdGUub2Zmc2V0IGluXG4gIHN0YXRlLm9mZnNldCA8LSBuZXdsaW5lX29mZnNldCArIDE7XG4gIHN0YXRlLmJvbF9vZmZzZXQgPC0gc3RhdGUub2Zmc2V0O1xuICBzdGF0ZS5saW5lX251bWJlciA8LSBzdGF0ZS5saW5lX251bWJlciArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5hZGRfbmV3bGluZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6bmV3bGluZV9vZmZzZXRcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgUG9zaXRpb25zLkJ1aWxkZXIuYWRkX25ld2xpbmUgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0Om5ld2xpbmVfb2Zmc2V0XG4gIHwgXyAtPiAoKVxuOztcblxubGV0IGJsb2NrX2NvbW1lbnRfZGVwdGggc3RhdGUgPSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoXG5cbmxldCBhZGRfdG9rZW5fY2hhciA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IGFkZF9hdG9tX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjO1xuICBzdGFja1xuOztcblxubGV0IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGlzX2lnbm9yaW5nIHN0YXRlID1cbiAgbWF0Y2ggY29udGV4dCBzdGF0ZSB3aXRoXG4gIHwgU2V4cCAtPiBmYWxzZVxuICB8IFNleHBfY29tbWVudCAtPiB0cnVlXG47O1xuXG5sZXQgaXNfbm90X2lnbm9yaW5nIHN0YXRlID0gbm90IChpc19pZ25vcmluZyBzdGF0ZSlcblxubGV0IGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGUgPVxuICBsZXQgaXNfc2luZ2xlID1cbiAgICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgICB8IFNpbmdsZSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGlmIGlzX3NpbmdsZSAmJiBzdGF0ZS5mdWxsX3NleHBzID4gMCAmJiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIFRvb19tYW55X3NleHBzXG47O1xuXG5sZXQgYWRkX3BvcyBzdGF0ZSB+ZGVsdGEgPVxuICBQb3NpdGlvbnMuQnVpbGRlci5hZGQgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0OihzdGF0ZS5vZmZzZXQgKyBkZWx0YSlcbjs7XG5cbmxldCBhZGRfZmlyc3RfY2hhciA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjaGFyO1xuICAoKiBGb3Igbm9uLXF1b3RlZCBhdG9tcywgd2Ugc2F2ZSBib3RoIHBvc2l0aW9ucyBhdCB0aGUgZW5kLiBXZSBjYW4gYWx3YXlzIGRldGVybWluZSB0aGVcbiAgICAgc3RhcnQgcG9zaXRpb24gZnJvbSB0aGUgZW5kIHBvc2l0aW9uIGFuZCB0aGUgYXRvbSBsZW5ndGggZm9yIG5vbi1xdW90ZWQgYXRvbXMuXG5cbiAgICAgRG9pbmcgaXQgdGhpcyB3YXkgYWxsb3dzIHVzIHRvIGRldGVjdCBzaW5nbGUgY2hhcmFjYXRlciBhdG9tcyBmb3Igd2hpY2ggd2UgbmVlZCB0b1xuICAgICBzYXZlIHRoZSBwb3NpdGlvbiB0d2ljZS4gKilcbiAgc3RhY2tcbjs7XG5cbmxldCBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnIyc7XG4gIHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfcXVvdGVkX3N0cmluZyA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgJ1wiJztcbiAgICBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbjs7XG5cbmxldCBhZGRfZXNjYXBlZCBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IGMnID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICduJyAtPiAnXFxuJ1xuICAgIHwgJ3InIC0+ICdcXHInXG4gICAgfCAnYicgLT4gJ1xcYidcbiAgICB8ICd0JyAtPiAnXFx0J1xuICAgIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXCInIC0+IGNcbiAgICB8IF8gLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnXFxcXCc7XG4gICAgICBjXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjJztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnXFxyJztcbiAgc3RhY2tcbjs7XG5cbmxldCBkZWNfdmFsIGMgPSBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcblxubGV0IGhleF92YWwgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gIHwgJ2EnIC4uICdmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICB8IF8gLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbjs7XG5cbmxldCBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIGlmIHZhbHVlID4gMjU1IHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgKENoYXIuY2hyIHZhbHVlKTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGNvbW1lbnRfYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIGlmIHZhbHVlID4gMjU1IHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAoc3RhdGUuZXNjYXBlZF92YWx1ZSBsc2wgNCkgbG9yIGhleF92YWwgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgbHNsIDQpIGxvciBoZXhfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgKENoYXIuY2hyIHZhbHVlKTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IG9wZW5pbmcgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIHN0YXRlLmRlcHRoIDwtIHN0YXRlLmRlcHRoICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gT3BlbiBzdGFjayBlbHNlIHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgIHRoZW4gKFxuICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgIE9wZW4gc3RhY2spXG4gICAgZWxzZSBzdGFja1xuICB8IENzdCAtPiBPcGVuIChjdXJyZW50X3BvcyBzdGF0ZSwgc3RhY2spXG47O1xuXG5sZXQgZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlID1cbiAgUG9zaXRpb25zLkJ1aWxkZXIucmVzZXRcbiAgICBzdGF0ZS51c2VyX3N0YXRlXG4gICAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXJcbiAgICA7IGNvbCA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbiAgICA7IG9mZnNldCA9IHN0YXRlLm9mZnNldFxuICAgIH1cbjs7XG5cbmxldCByZXNldF9wb3NpdGlvbnMgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHVuaXQgPVxuICBmdW4gc3RhdGUgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlXG4gIHwgU2V4cCAtPiAoKVxuICB8IENzdCAtPiAoKVxuOztcblxubGV0IHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGEgPVxuICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgfCBTaW5nbGUgfCBNYW55IC0+IHN0YWNrXG4gIHwgRWFnZXIgeyBnb3Rfc2V4cCA9IGY7IF8gfSAtPlxuICAgICgqIE1vZGlmeSB0aGUgb2Zmc2V0IHNvIHRoYXQgW2ZdIGdldCBhIHN0YXRlIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnRcbiAgICAgICBzLWV4cHJlc3Npb24gKilcbiAgICBsZXQgc2F2ZWRfb2Zmc2V0ID0gc3RhdGUub2Zmc2V0IGluXG4gICAgc3RhdGUub2Zmc2V0IDwtIHN0YXRlLm9mZnNldCArIGRlbHRhO1xuICAgIGxldCBzYXZlZF9mdWxsX3NleHBzID0gc3RhdGUuZnVsbF9zZXhwcyBpblxuICAgIChtYXRjaCBmIHN0YXRlIHN0YWNrIHdpdGhcbiAgICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgICAgICByYWlzZSBlXG4gICAgIHwgc3RhY2sgLT5cbiAgICAgICAoKiBUaGlzIGFzc2VydCBpcyBub3QgYSBmdWxsIHByb3RlY3Rpb24gYWdhaW5zdCB0aGUgdXNlciBtdXRhdGluZyB0aGUgc3RhdGUgYnV0XG4gICAgICAgICAgaXQgc2hvdWxkIGNhdGNoIG1vc3QgY2FzZXMuICopXG4gICAgICAgYXNzZXJ0IChzdGF0ZS5vZmZzZXQgPSBzYXZlZF9vZmZzZXQgKyBkZWx0YSAmJiBzdGF0ZS5mdWxsX3NleHBzID0gc2F2ZWRfZnVsbF9zZXhwcyk7XG4gICAgICAgc3RhdGUub2Zmc2V0IDwtIHNhdmVkX29mZnNldDtcbiAgICAgICByZXNldF9wb3NpdGlvbnMgc3RhdGU7XG4gICAgICAgc3RhY2spXG47O1xuXG5sZXQgaXNfdG9wX2xldmVsIHN0YXRlID0gaXNfbm90X2lnbm9yaW5nIHN0YXRlICYmIHN0YXRlLmRlcHRoID0gMFxuXG5sZXQgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhID1cbiAgaWYgaXNfdG9wX2xldmVsIHN0YXRlIHRoZW4gdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YSBlbHNlIHN0YWNrXG47O1xuXG5sZXQgbWF5YmVfcG9wX2lnbm9yaW5nX3N0YWNrIHN0YXRlID1cbiAgbWF0Y2ggc3RhdGUuaWdub3Jpbmdfc3RhY2sgd2l0aFxuICB8IGlubmVyX2NvbW1lbnRfZGVwdGggOjogX3RsIHdoZW4gaW5uZXJfY29tbWVudF9kZXB0aCA+IHN0YXRlLmRlcHRoIC0+XG4gICAgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwXG4gIHwgaW5uZXJfY29tbWVudF9kZXB0aCA6OiB0bCB3aGVuIGlubmVyX2NvbW1lbnRfZGVwdGggPSBzdGF0ZS5kZXB0aCAtPlxuICAgIHN0YXRlLmlnbm9yaW5nX3N0YWNrIDwtIHRsO1xuICAgIHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgc2V4cF9hZGRlZCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gcyAtPiBkZWx0YTppbnQgLT4gcyA9XG4gIGZ1biBzdGF0ZSBzdGFjayB+ZGVsdGEgLT5cbiAgbGV0IGlzX2NvbW1lbnQgPSBtYXliZV9wb3BfaWdub3Jpbmdfc3RhY2sgc3RhdGUgaW5cbiAgaWYgaXNfdG9wX2xldmVsIHN0YXRlXG4gIHRoZW4gKFxuICAgIGlmIG5vdCBpc19jb21tZW50IHRoZW4gc3RhdGUuZnVsbF9zZXhwcyA8LSBzdGF0ZS5mdWxsX3NleHBzICsgMTtcbiAgICBpZiAobm90IGlzX2NvbW1lbnQpXG4gICAgICAgfHxcbiAgICAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICAgICB8IENzdCAtPiB0cnVlXG4gICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhXG4gICAgZWxzZSBzdGFjaylcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IHJlYyBtYWtlX2xpc3QgYWNjIDogQXV0b21hdG9uX3N0YWNrLnQgLT4gQXV0b21hdG9uX3N0YWNrLnQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IE9wZW4gc3RhY2sgLT4gU2V4cCAoTGlzdCBhY2MsIHN0YWNrKVxuICB8IFNleHAgKHNleHAsIHN0YWNrKSAtPiBtYWtlX2xpc3QgKHNleHAgOjogYWNjKSBzdGFja1xuOztcblxubGV0IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IChzdGFjayA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQpXG4gIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9XG4gIG1hdGNoIHN0YWNrIHdpdGhcbiAgfCBJbl9zZXhwX2NvbW1lbnQgciAtPlxuICAgIEluX3NleHBfY29tbWVudCB7IHIgd2l0aCByZXZfY29tbWVudHMgPSBjb21tZW50IDo6IHIucmV2X2NvbW1lbnRzIH1cbiAgfCBfIC0+IFRfb3JfY29tbWVudCAoQ29tbWVudCBjb21tZW50LCBzdGFjaylcbjs7XG5cbmxldCBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQgLT4gQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBJbl9zZXhwX2NvbW1lbnQgeyBoYXNoX3NlbWlfcG9zOyByZXZfY29tbWVudHM7IHN0YWNrIH0gLT5cbiAgICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPVxuICAgICAgICBTZXhwX2NvbW1lbnQgeyBoYXNoX3NlbWlfcG9zOyBjb21tZW50cyA9IExpc3QucmV2IHJldl9jb21tZW50czsgc2V4cCB9XG4gICAgICBpblxuICAgICAgYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2tcbiAgICB8IHN0YWNrIC0+IFRfb3JfY29tbWVudCAoU2V4cCBzZXhwLCBzdGFjaylcbjs7XG5cbmxldCByZWMgbWFrZV9saXN0X2NzdCBlbmRfcG9zIGFjYyA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQgLT4gQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBUX29yX2NvbW1lbnQgKHQsIHN0YWNrKSAtPiBtYWtlX2xpc3RfY3N0IGVuZF9wb3MgKHQgOjogYWNjKSBzdGFja1xuICAgIHwgT3BlbiAoc3RhcnRfcG9zLCBzdGFjaykgLT5cbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPSBMaXN0IHsgbG9jID0geyBzdGFydF9wb3M7IGVuZF9wb3MgfTsgZWxlbWVudHMgPSBhY2MgfSBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgICB8IEVtcHR5IHwgSW5fc2V4cF9jb21tZW50IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgY2xvc2luZyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgaWYgc3RhdGUuZGVwdGggPiAwXG4gIHRoZW4gKFxuICAgIGxldCBzdGFjayA6IHMgPVxuICAgICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgICAoKiBOb3RlIHdlIHN0b3JlIGVuZCBwb3NpdGlvbnMgYXMgaW5jbHVzaXZlIGluIFtQb3NpdGlvbnMudF0sIHNvIHdlIHVzZSBbZGVsdGE6MF0sXG4gICAgICAgICAgIHdoaWxlIGluIHRoZSBbQ3N0XSBjYXNlIHdlIHNhdmUgZGlyZWN0bHkgdGhlIGZpbmFsIHJhbmdlcywgc28gd2UgdXNlXG4gICAgICAgICAgIFtkZWx0YToxXS4gKilcbiAgICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgc3RhY2tcbiAgICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBtYWtlX2xpc3QgW10gc3RhY2sgZWxzZSBzdGFja1xuICAgICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICAgIG1ha2VfbGlzdCBbXSBzdGFjaylcbiAgICAgICAgZWxzZSBzdGFja1xuICAgICAgfCBDc3QgLT4gbWFrZV9saXN0X2NzdCAoY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOjEpIFtdIHN0YWNrXG4gICAgaW5cbiAgICBzdGF0ZS5kZXB0aCA8LSBzdGF0ZS5kZXB0aCAtIDE7XG4gICAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MSlcbiAgZWxzZSByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZFxuOztcblxubGV0IG1ha2VfbG9jID8oZGVsdGEgPSAwKSAoc3RhdGUgOiAoQXV0b21hdG9uX3N0YXRlLkZvcl9jc3QudCwgXykgQXV0b21hdG9uX3N0YXRlLnQpXG4gIDogUG9zaXRpb25zLnJhbmdlXG4gID1cbiAgeyBzdGFydF9wb3MgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvczsgZW5kX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YSB9XG47O1xuXG4oKiBUaGlzIGlzIGFsd2F5cyBjYWxsZWQgb24gdGhlIHBvc2l0aW9uIGV4YWN0bHkgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBhXG4gICBub24tcXVvdGVkIGF0b20gKilcbmxldCBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbSA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGF0b20gaW5cbiAgaWYgbGVuID0gMVxuICB0aGVuIFBvc2l0aW9ucy5CdWlsZGVyLmFkZF90d2ljZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6KHN0YXRlLm9mZnNldCAtIDEpXG4gIGVsc2UgKFxuICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOigtbGVuKTtcbiAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTooLTEpKVxuOztcblxubGV0IGVwc19wdXNoX2F0b20gOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIHN0YXRlLmF0b21fYnVmZmVyIGluXG4gIEJ1ZmZlci5jbGVhciBzdGF0ZS5hdG9tX2J1ZmZlcjtcbiAgbGV0IHN0YWNrIDogcyA9XG4gICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tOnN0cjtcbiAgICAgIHN0YWNrXG4gICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIFNleHAgKEF0b20gc3RyLCBzdGFjaykgZWxzZSBzdGFja1xuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b206c3RyO1xuICAgICAgICBTZXhwIChBdG9tIHN0ciwgc3RhY2spKVxuICAgICAgZWxzZSBzdGFja1xuICAgIHwgQ3N0IC0+XG4gICAgICBsZXQgbG9jIDogUG9zaXRpb25zLnJhbmdlID1cbiAgICAgICAgeyBzdGFydF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC1TdHJpbmcubGVuZ3RoIHN0cilcbiAgICAgICAgOyBlbmRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOjBcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPSBBdG9tIHsgbG9jOyBhdG9tID0gc3RyOyB1bmVzY2FwZWQgPSBTb21lIHN0ciB9IGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICBpblxuICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YTowXG47O1xuXG5sZXQgcHVzaF9xdW90ZWRfYXRvbSA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIHN0YXRlLmF0b21fYnVmZmVyIGluXG4gIEJ1ZmZlci5jbGVhciBzdGF0ZS5hdG9tX2J1ZmZlcjtcbiAgbGV0IHN0YWNrIDogcyA9XG4gICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICBzdGFja1xuICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBTZXhwIChBdG9tIHN0ciwgc3RhY2spIGVsc2Ugc3RhY2tcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgIFNleHAgKEF0b20gc3RyLCBzdGFjaykpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgfCBDc3QgLT5cbiAgICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXCInO1xuICAgICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgbGV0IHNleHAgOiBDc3QudCA9XG4gICAgICAgIEF0b20geyBsb2MgPSBtYWtlX2xvYyBzdGF0ZSB+ZGVsdGE6MTsgYXRvbSA9IHN0cjsgdW5lc2NhcGVkID0gU29tZSBzIH1cbiAgICAgIGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICBpblxuICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YToxXG47O1xuXG5sZXQgc3RhcnRfc2V4cF9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmlnbm9yaW5nX3N0YWNrIDwtIHN0YXRlLmRlcHRoIDo6IHN0YXRlLmlnbm9yaW5nX3N0YWNrO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBJbl9zZXhwX2NvbW1lbnRcbiAgICAgIHsgaGFzaF9zZW1pX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLTEpOyByZXZfY29tbWVudHMgPSBbXTsgc3RhY2sgfVxuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBzdGFydF9ibG9ja19jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgaWYgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA9IDFcbiAgICB0aGVuIChcbiAgICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLTEpO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyICcjJyk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbjs7XG5cbmxldCBlbmRfYmxvY2tfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIDwtIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggLSAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY2hhcjtcbiAgICBpZiBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoID0gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9XG4gICAgICAgIFBsYWluX2NvbW1lbnQgeyBsb2MgPSBtYWtlX2xvYyBzdGF0ZSB+ZGVsdGE6MTsgY29tbWVudCA9IHMgfVxuICAgICAgaW5cbiAgICAgIGxldCBzdGFjayA9IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrIGluXG4gICAgICBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGE6MSlcbiAgICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfbGluZV9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGU7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgZW5kX2xpbmVfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID0gUGxhaW5fY29tbWVudCB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlOyBjb21tZW50ID0gcyB9IGluXG4gICAgbGV0IHN0YWNrID0gYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2sgaW5cbiAgICBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGE6MFxuOztcblxubGV0IGVwc19lb2lfY2hlY2sgOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBpZiBzdGF0ZS5kZXB0aCA+IDAgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgVW5jbG9zZWRfcGFyZW47XG4gIGlmIGlzX2lnbm9yaW5nIHN0YXRlIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIFNleHBfY29tbWVudF93aXRob3V0X3NleHA7XG4gIGlmIHN0YXRlLmZ1bGxfc2V4cHMgPSAwXG4gIHRoZW4gKFxuICAgIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICAgIHwgTWFueSB8IEVhZ2VyIHsgbm9fc2V4cF9pc19lcnJvciA9IGZhbHNlOyBfIH0gLT4gKClcbiAgICB8IFNpbmdsZSB8IEVhZ2VyIHsgbm9fc2V4cF9pc19lcnJvciA9IHRydWU7IF8gfSAtPlxuICAgICAgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIE5vX3NleHBfZm91bmRfaW5faW5wdXQpO1xuICBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICB8IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcbiAgfCBQYXJzaW5nX2F0b21cbiAgfCBQYXJzaW5nX2xpc3RcbiAgfCBQYXJzaW5nX3NleHBfY29tbWVudFxuICB8IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcIlxuICAgIHwgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXCJcbiAgICB8IFBhcnNpbmdfYXRvbSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2F0b21cIlxuICAgIHwgUGFyc2luZ19saXN0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfbGlzdFwiXG4gICAgfCBQYXJzaW5nX3NleHBfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX3NleHBfY29tbWVudFwiXG4gICAgfCBQYXJzaW5nX2Jsb2NrX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19ibG9ja19jb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHRvX3N0cmluZyB0ID1cbiAgbWF0Y2ggc2V4cF9vZl90IHQgd2l0aFxuICB8IEF0b20gcyAtPiBzXG4gIHwgTGlzdCBfIC0+IGZhaWx3aXRoIFwiQlVHOiBbc2V4cF9vZl90XSByZXR1cm5lZCBhIFtMaXN0IF9dXCJcbjs7XG4iLCJvcGVuIEF1dG9tYXRvbl9hY3Rpb25cblxubGV0IHJhaXNlID0gQXV0b21hdG9uX2FjdGlvbi5yYWlzZV9lcnJvclxuXG50eXBlIHUnXG50eXBlIHMnXG5cbigqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9hdXRvbWF0b25fdGFibGVzLnByaW50X2NvZGUgKCkgKilcbmxldCB0cl8wMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZmlyc3RfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDBfZiB9XG5cbmxldCB0cl8wMV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMV9mIH1cblxubGV0IHRyXzAyX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMl9mIH1cblxubGV0IHRyXzAzX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAzX2YgfVxuXG5sZXQgdHJfMDRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDRfZiB9XG5cbmxldCB0cl8wNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA3O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNV9mIH1cblxubGV0IHRyXzA2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA2X2YgfVxuXG5sZXQgdHJfMDdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDdfZiB9XG5cbmxldCB0cl8wOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9saW5lX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA4X2YgfVxuXG5sZXQgdHJfMDlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2ZpcnN0X2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA5X2YgfVxubGV0IHRyXzEwX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9IHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxubGV0IHRyXzEwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMF9mIH1cbmxldCB0cl8xMV9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPSByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxubGV0IHRyXzExIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMV9mIH1cblxubGV0IHRyXzEyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEyX2YgfVxuXG5sZXQgdHJfMTNfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzEzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xM19mIH1cblxubGV0IHRyXzE0X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE0X2YgfVxuXG5sZXQgdHJfMTVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNV9mIH1cblxubGV0IHRyXzE2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTZfZiB9XG5cbmxldCB0cl8xN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xN19mIH1cblxubGV0IHRyXzE4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMThfZiB9XG5cbmxldCB0cl8xOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE5X2YgfVxuXG5sZXQgdHJfMjBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9saW5lX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIwX2YgfVxuXG5sZXQgdHJfMjFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjFfZiB9XG5cbmxldCB0cl8yMl9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b21cbjs7XG5cbmxldCB0cl8yMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjJfZiB9XG5cbmxldCB0cl8yM19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjNfZiB9XG5cbmxldCB0cl8yNF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNF9mIH1cblxubGV0IHRyXzI1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjVfZiB9XG5cbmxldCB0cl8yNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNl9mIH1cblxubGV0IHRyXzI3X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjdfZiB9XG5cbmxldCB0cl8yOF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yOF9mIH1cblxubGV0IHRyXzI5X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjlfZiB9XG5cbmxldCB0cl8zMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMwX2YgfVxuXG5sZXQgdHJfMzFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzFfZiB9XG5cbmxldCB0cl8zMl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMyX2YgfVxuXG5sZXQgdHJfMzNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zM19mIH1cblxubGV0IHRyXzM0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X3NleHBfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzRfZiB9XG5cbmxldCB0cl8zNV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9ibG9ja19jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzVfZiB9XG5cbmxldCB0cl8zNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzZfZiB9XG5cbmxldCB0cl8zN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM3X2YgfVxuXG5sZXQgdHJfMzhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzhfZiB9XG5cbmxldCB0cl8zOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzlfZiB9XG5cbmxldCB0cl80MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZXNjYXBlZCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDBfZiB9XG5cbmxldCB0cl80MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTU7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80MV9mIH1cblxubGV0IHRyXzQyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDJfZiB9XG5cbmxldCB0cl80M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDNfZiB9XG5cbmxldCB0cl80NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ0X2YgfVxuXG5sZXQgdHJfNDVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80NV9mIH1cblxubGV0IHRyXzQ2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80Nl9mIH1cblxubGV0IHRyXzQ3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDdfZiB9XG5cbmxldCB0cl80OF9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlXG47O1xuXG5sZXQgdHJfNDggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ4X2YgfVxuXG5sZXQgdHJfNDlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ5X2YgfVxuXG5sZXQgdHJfNTBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81MF9mIH1cblxubGV0IHRyXzUxX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGVcbjs7XG5cbmxldCB0cl81MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTFfZiB9XG5cbmxldCB0cl81Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTJfZiB9XG5cbmxldCB0cl81M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfbGFzdF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUzX2YgfVxuXG5sZXQgdHJfNTRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU0X2YgfVxuXG5sZXQgdHJfNTVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81NV9mIH1cblxubGV0IHRyXzU2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTZfZiB9XG5cbmxldCB0cl81N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81N19mIH1cblxubGV0IHRyXzU4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81OF9mIH1cblxubGV0IHRyXzU5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTlfZiB9XG5cbmxldCB0cl82MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82MF9mIH1cblxubGV0IHRyXzYxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjFfZiB9XG5cbmxldCB0cl82Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYyX2YgfVxuXG5sZXQgdHJfNjNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE3O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82M19mIH1cblxubGV0IHRyXzY0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9ibG9ja19jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAoaWYgYmxvY2tfY29tbWVudF9kZXB0aCBzdGF0ZSA8PiAwIHRoZW4gMTYgZWxzZSAwKTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjRfZiB9XG5cbmxldCB0cl82NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82NV9mIH1cblxubGV0IHRyXzY2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjZfZiB9XG5cbmxldCB0cl82N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjY7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82N19mIH1cblxubGV0IHRyXzY4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjhfZiB9XG5cbmxldCB0cl82OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjlfZiB9XG5cbmxldCB0cl83MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcwX2YgfVxuXG5sZXQgdHJfNzFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83MV9mIH1cblxubGV0IHRyXzcyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzJfZiB9XG5cbmxldCB0cl83M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzczX2YgfVxuXG5sZXQgdHJfNzRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc0X2YgfVxuXG5sZXQgdHJfNzVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83NV9mIH1cblxubGV0IHRyXzc2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzZfZiB9XG5cbmxldCB0cl83N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc3X2YgfVxuXG5sZXQgdHJfNzhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzhfZiB9XG5sZXQgdHJfZW9pXzAwX2Ygc3RhdGUgc3RhY2sgPSBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG5sZXQgdHJfZW9pXzAwIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMF9mIH1cbmxldCB0cl9lb2lfMDFfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG5sZXQgdHJfZW9pXzAxIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMV9mIH1cbmxldCB0cl9lb2lfMDJfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbmxldCB0cl9lb2lfMDIgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAyX2YgfVxuXG5sZXQgdHJfZW9pXzAzX2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDMgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAzX2YgfVxuXG5sZXQgdHJfZW9pXzA0X2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDQgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA0X2YgfVxuXG5sZXQgdHJfZW9pXzA1X2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDUgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA1X2YgfVxubGV0IHRyX2VvaV8wNl9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZ1xubGV0IHRyX2VvaV8wNiA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDZfZiB9XG5sZXQgdHJfZW9pXzA3X2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVudGVybWluYXRlZF9ibG9ja19jb21tZW50XG5sZXQgdHJfZW9pXzA3IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wN19mIH1cblxubGV0IHRyYW5zaXRpb25zID1cbiAgW3wgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDJcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDNcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDRcbiAgIDsgdHJfMDVcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDZcbiAgIDsgdHJfMDdcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDhcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDlcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMDJcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMTdcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMTdcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMjJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjRcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjVcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjhcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjlcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzBcbiAgIDsgdHJfMzFcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzJcbiAgIDsgdHJfMzNcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzRcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzVcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzdcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzhcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzlcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDFcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDJcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDRcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDFcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDZcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDdcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTVcbiAgIDsgdHJfNTZcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTVcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTdcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNThcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjJcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjNcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjRcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjNcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjJcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfMzVcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjVcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjZcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjdcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjhcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNzBcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNjdcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzJcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzNcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzdcbiAgIDsgdHJfNzhcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzdcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzJcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzNcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgfF1cbjs7XG5cbmxldCB0cmFuc2l0aW9uc19lb2kgPVxuICBbfCB0cl9lb2lfMDBcbiAgIDsgdHJfZW9pXzAxXG4gICA7IHRyX2VvaV8wMlxuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDRcbiAgIDsgdHJfZW9pXzA1XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICB8XVxuOztcblxubGV0IG9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIDogT2xkX3BhcnNlcl9jb250X3N0YXRlLnQgYXJyYXkgPVxuICBbfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgfF1cbjs7XG4oKiQqKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3RhY2sgPSBBdXRvbWF0b25fc3RhY2tcbmluY2x1ZGUgQXV0b21hdG9uX3N0YXRlXG5cbmxldCBmZWVkICh0eXBlIHUgcykgKHN0YXRlIDogKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50KSBjaGFyIChzdGFjayA6IHMpIDogcyA9XG4gIGxldCBpZHggPSAoYXV0b21hdG9uX3N0YXRlIHN0YXRlIGxzbCA4KSBsb3IgQ2hhci5jb2RlIGNoYXIgaW5cbiAgQXV0b21hdG9uX3RhYmxlcy50cmFuc2l0aW9ucy4oaWR4KS5mIHN0YXRlIGNoYXIgc3RhY2tcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZmVlZF9lb2kgKHR5cGUgdSBzKSAoc3RhdGUgOiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQpIChzdGFjayA6IHMpIDogcyA9XG4gIGxldCBzdGFjayA9IEF1dG9tYXRvbl90YWJsZXMudHJhbnNpdGlvbnNfZW9pLihhdXRvbWF0b25fc3RhdGUgc3RhdGUpLmYgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IG9sZF9wYXJzZXJfY29udF9zdGF0ZSBzdGF0ZSA6IE9sZF9wYXJzZXJfY29udF9zdGF0ZS50ID1cbiAgbWF0Y2ggY29udGV4dCBzdGF0ZSB3aXRoXG4gIHwgU2V4cF9jb21tZW50IC0+IFBhcnNpbmdfc2V4cF9jb21tZW50XG4gIHwgU2V4cCAtPlxuICAgIChtYXRjaFxuICAgICAgICggQXV0b21hdG9uX3RhYmxlcy5vbGRfcGFyc2VyX2FwcHJveF9jb250X3N0YXRlcy4oYXV0b21hdG9uX3N0YXRlIHN0YXRlKVxuICAgICAgICwgaGFzX3VuY2xvc2VkX3BhcmVuIHN0YXRlIClcbiAgICAgd2l0aFxuICAgICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSwgdHJ1ZSAtPiBQYXJzaW5nX2xpc3RcbiAgICAgfCBzLCBfIC0+IHMpXG47O1xuXG5sZXQgcmVjIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgaSBzdG9wID1cbiAgaWYgaSA8IHN0b3BcbiAgdGhlbiAoXG4gICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHIgaSBpblxuICAgIGxldCBzdGFjayA9IGZlZWQgc3RhdGUgYyBzdGFjayBpblxuICAgIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgKGkgKyAxKSBzdG9wKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgcmVjIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBpIHN0b3AgPVxuICBpZiBpIDwgc3RvcFxuICB0aGVuIChcbiAgICBsZXQgYyA9IEJ5dGVzLnVuc2FmZV9nZXQgc3RyIGkgaW5cbiAgICBsZXQgc3RhY2sgPSBmZWVkIHN0YXRlIGMgc3RhY2sgaW5cbiAgICBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgKGkgKyAxKSBzdG9wKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgZmVlZF9zdWJzdHJpbmcgc3RhdGUgc3RyIH5wb3MgfmxlbiBzdGFjayA9XG4gIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IHN0cl9sZW4gLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuZmVlZF9zdWJzdHJpbmdcIjtcbiAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBwb3MgKHBvcyArIGxlbilcbjs7XG5cbmxldCBmZWVkX3N1YmJ5dGVzIHN0YXRlIHN0ciB+cG9zIH5sZW4gc3RhY2sgPVxuICBsZXQgc3RyX2xlbiA9IEJ5dGVzLmxlbmd0aCBzdHIgaW5cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IHN0cl9sZW4gLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuZmVlZF9zdWJieXRlc1wiO1xuICBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgcG9zIChwb3MgKyBsZW4pXG47O1xuXG5sZXQgZmVlZF9zdHJpbmcgc3RhdGUgc3RyIHN0YWNrID1cbiAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAwIChTdHJpbmcubGVuZ3RoIHN0cilcbjs7XG5cbmxldCBmZWVkX2J5dGVzIHN0YXRlIHN0ciBzdGFjayA9IGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAwIChCeXRlcy5sZW5ndGggc3RyKVxuXG5sZXQgZW1wdHlfc3RhY2sgOiB0eXBlIHUgcy4gKHUsIHMpIEtpbmQudCAtPiBzID0gZnVuY3Rpb25cbiAgfCBTZXhwIC0+IFN0YWNrLmVtcHR5XG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBTdGFjay5lbXB0eVxuICB8IFBvc2l0aW9ucyAtPiBTdGFjay5KdXN0X3Bvc2l0aW9ucy5lbXB0eVxuICB8IENzdCAtPiBTdGFjay5Gb3JfY3N0LmVtcHR5XG47O1xuXG5sZXQgb2Zfc3Vic3RyaW5nICh0eXBlIHUgcykgKG1vZGUgOiAodSwgcykgTW9kZS50KSAoa2luZCA6ICh1LCBzKSBLaW5kLnQpIHMgfnBvcyB+bGVuID1cbiAgbGV0IHN0YXRlID0gY3JlYXRlIG1vZGUga2luZCBpblxuICBsZXQgc3RhY2sgPSBmZWVkX3N1YnN0cmluZyBzdGF0ZSBzIH5wb3MgfmxlbiAoZW1wdHlfc3RhY2sga2luZCkgaW5cbiAgc3RhdGUsIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHsgdXNlcl9leG4gOiBleG5cbiAgOyBzdWJfc2V4cCA6IFNleHAudFxuICA7IGxvY2F0aW9uIDogUG9zaXRpb25zLnJhbmdlIG9wdGlvblxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW4geyB1c2VyX2V4biA9IHVzZXJfZXhuX18wMDJfOyBzdWJfc2V4cCA9IHN1Yl9zZXhwX18wMDRfOyBsb2NhdGlvbiA9IGxvY2F0aW9uX18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSBbXSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY2F0aW9uX18wMDZfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jYXRpb25cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IFNleHAuc2V4cF9vZl90IHN1Yl9zZXhwX18wMDRfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3ViX3NleHBcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDAzXyA9IHNleHBfb2ZfZXhuIHVzZXJfZXhuX18wMDJfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidXNlcl9leG5cIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAxX1xuICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHVzZXJfZXhuIHQgPSB0LnVzZXJfZXhuXG5sZXQgc3ViX3NleHAgdCA9IHQuc3ViX3NleHBcbmxldCBsb2NhdGlvbiB0ID0gdC5sb2NhdGlvblxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBsaW5lLCBzdGFydCwgc3RvcCA9XG4gICAgbWF0Y2ggdC5sb2NhdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IDEsIDAsIDBcbiAgICB8IFNvbWUgeyBzdGFydF9wb3M7IGVuZF9wb3MgfSAtPlxuICAgICAgc3RhcnRfcG9zLmxpbmUsIHN0YXJ0X3Bvcy5jb2wsIHN0YXJ0X3Bvcy5jb2wgKyBlbmRfcG9zLm9mZnNldCAtIHN0YXJ0X3Bvcy5vZmZzZXRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICBFcnJvcjogcy1leHByZXNzaW9uIGNvbnZlcnNpb24gZXJyb3I7XFxuXFxcbiAgICAgZXhjZXB0aW9uICVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIGxpbmVcbiAgICBzdGFydFxuICAgIHN0b3BcbiAgICAoU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIHQudXNlcl9leG4pXG47O1xuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwOF8gLT5cbiAgICAgIGxldCByZXMwX18wMDlfID0gc2V4cF9vZl90IGFyZzBfXzAwOF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mX3NleHBfZXJyb3IubWwuT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDlfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIH51c2VyX2V4biB+c3ViX3NleHAgfmxvY2F0aW9uID1cbiAgcmFpc2UgKE9mX3NleHBfZXJyb3IgeyB1c2VyX2V4bjsgc3ViX3NleHA7IGxvY2F0aW9uIH0pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2VfZXJyb3Igb2YgUGFyc2VfZXJyb3IudFxuICB8IE9mX3NleHBfZXJyb3Igb2YgT2Zfc2V4cF9lcnJvci50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBQYXJzZV9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwM18gLT5cbiAgICAgIGxldCByZXMwX18wMDRfID0gT2Zfc2V4cF9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDRfIF1cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFBhcnNlX2Vycm9yIGUgLT4gUGFyc2VfZXJyb3IucmVwb3J0IHBwZiB+ZmlsZW5hbWUgZVxuICB8IE9mX3NleHBfZXJyb3IgZSAtPiBPZl9zZXhwX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VyX2ludGZcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmxldCBraW5kX3RvX3N0YWNrXG4gIDogdHlwZSBzdGFjay5cbiAgICAoJ3N0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLktpbmQudCAtPiAobW9kdWxlIFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gID1cbiAgZnVuICh0eXBlIHN0YXRlKSAoa2luZCA6IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQpIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFNleHAgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFBvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5KdXN0X3Bvc2l0aW9ucyA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjayA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgQ3N0IC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuOztcblxubGV0IG1ha2UgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1vZGUgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlKVxuICA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBub25yZWMgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG5cbiAgICBtb2R1bGUgU3RhY2sgPSAodmFsIGtpbmRfdG9fc3RhY2sga2luZCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IChzdGF0ZSwgU3RhY2sudCkgQXV0b21hdG9uX3N0YXRlLnRcblxuICAgICAgbGV0IGNyZWF0ZSA/cG9zICgpID0gQS5jcmVhdGUgP2luaXRpYWxfcG9zOnBvcyBtb2RlIGtpbmRcbiAgICAgIGxldCByZXNldCA9IEEucmVzZXRcbiAgICAgIGxldCBvZmZzZXQgPSBBLm9mZnNldFxuICAgICAgbGV0IGxpbmUgPSBBLmxpbmVcbiAgICAgIGxldCBjb2x1bW4gPSBBLmNvbHVtblxuXG4gICAgICBsZXQgcG9zaXRpb24gdCA6IFBvc2l0aW9ucy5wb3MgPVxuICAgICAgICB7IG9mZnNldCA9IG9mZnNldCB0OyBsaW5lID0gbGluZSB0OyBjb2wgPSBjb2x1bW4gdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RvcCBzdGF0ZSA9IEEuc2V0X2Vycm9yX3N0YXRlIHN0YXRlXG4gICAgZW5kXG5cbiAgICBsZXQgZmVlZCA9IEEuZmVlZFxuICAgIGxldCBmZWVkX2VvaSBzdGF0ZSBzdGFjayA9IG1ha2VfdmFsdWUgc3RhdGUgKEEuZmVlZF9lb2kgc3RhdGUgc3RhY2spXG4gICAgbGV0IGZlZWRfc3Vic3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3Vic3RyaW5nXG4gICAgbGV0IGZlZWRfc3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3RyaW5nXG4gICAgbGV0IGZlZWRfc3ViYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9zdWJieXRlc1xuICAgIGxldCBmZWVkX2J5dGVzID0gQXV0b21hdG9uLmZlZWRfYnl0ZXNcblxuICAgIGxldCBwYXJzZV9zdHJpbmdfZXhuIHN0ciA9XG4gICAgICBsZXQgc3RhdGUgPSBTdGF0ZS5jcmVhdGUgKCkgaW5cbiAgICAgIGZlZWRfZW9pIHN0YXRlIChmZWVkX3N0cmluZyBzdGF0ZSBzdHIgU3RhY2suZW1wdHkpXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9zdHJpbmcgc3RyID1cbiAgICAgIG1hdGNoIHBhcnNlX3N0cmluZ19leG4gc3RyIHdpdGhcbiAgICAgIHwgeCAtPiBPayB4XG4gICAgICB8IGV4Y2VwdGlvbiBQYXJzZV9lcnJvci5QYXJzZV9lcnJvciBlIC0+IEVycm9yIGVcbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgbWFrZV9lYWdlciAodHlwZSBzdGFjayBzdGF0ZSBwYXJzZWRfdmFsdWUpIGtpbmQgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgU19lYWdlciB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlKVxuICA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBub25yZWMgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG5cbiAgICBtb2R1bGUgU3RhY2sgPSAodmFsIGtpbmRfdG9fc3RhY2sga2luZCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gKHN0YXRlLCBTdGFjay50KSBBdXRvbWF0b25fc3RhdGUudFxuXG4gICAgICAgIGxldCBvZmZzZXQgPSBBLm9mZnNldFxuICAgICAgICBsZXQgbGluZSA9IEEubGluZVxuICAgICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgICBsZXQgcG9zaXRpb24gdCA6IFBvc2l0aW9ucy5wb3MgPVxuICAgICAgICAgIHsgb2Zmc2V0ID0gb2Zmc2V0IHQ7IGxpbmUgPSBsaW5lIHQ7IGNvbCA9IGNvbHVtbiB0IH1cbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFJlYWRfb25seVxuXG4gICAgICBsZXQgY3JlYXRlID9wb3MgPyhub19zZXhwX2lzX2Vycm9yID0gZmFsc2UpIGYgPVxuICAgICAgICBsZXQgZ290X3NleHAgc3RhdGUgc3RhY2sgPVxuICAgICAgICAgIGxldCBwYXJzZWRfdmFsdWUgPSBtYWtlX3ZhbHVlIHN0YXRlIHN0YWNrIGluXG4gICAgICAgICAgZiBzdGF0ZSBwYXJzZWRfdmFsdWU7XG4gICAgICAgICAgU3RhY2suZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgQS5jcmVhdGUgP2luaXRpYWxfcG9zOnBvcyAoRWFnZXIgeyBnb3Rfc2V4cDsgbm9fc2V4cF9pc19lcnJvciB9KSBraW5kXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgc3RvcCB0ID0gQS5zZXRfZXJyb3Jfc3RhdGUgdFxuICAgICAgbGV0IG9sZF9wYXJzZXJfY29udF9zdGF0ZSB0ID0gQXV0b21hdG9uLm9sZF9wYXJzZXJfY29udF9zdGF0ZSB0XG4gICAgZW5kXG5cbiAgICBsZXQgZmVlZCA9IEEuZmVlZFxuICAgIGxldCBmZWVkX2VvaSBzdGF0ZSBzdGFjayA9IGlnbm9yZSAoQS5mZWVkX2VvaSBzdGF0ZSBzdGFjayA6IFN0YWNrLnQpXG4gICAgbGV0IGZlZWRfc3Vic3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3Vic3RyaW5nXG4gICAgbGV0IGZlZWRfc3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3RyaW5nXG4gICAgbGV0IGZlZWRfc3ViYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9zdWJieXRlc1xuICAgIGxldCBmZWVkX2J5dGVzID0gQXV0b21hdG9uLmZlZWRfYnl0ZXNcblxuICAgIG1vZHVsZSBMZXhidWZfY29uc3VtZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0YXRlLnRcblxuICAgICAgZXhjZXB0aW9uIEdvdF9zZXhwIG9mIHBhcnNlZF92YWx1ZSAqIFBvc2l0aW9ucy5wb3NcblxuICAgICAgbGV0IGdvdF9zZXhwIHN0YXRlIHBhcnNlZF92YWx1ZSA9XG4gICAgICAgIHJhaXNlX25vdHJhY2UgKEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIFN0YXRlLnBvc2l0aW9uIHN0YXRlKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSBTdGF0ZS5jcmVhdGUgZ290X3NleHBcblxuICAgICAgbGV0IHBvc19vZl9sZXhidWYgbGV4YnVmID1cbiAgICAgICAgbGV0IHAgPSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgaW5cbiAgICAgICAgeyBQb3NpdGlvbnMubGluZSA9IHAucG9zX2xudW07IGNvbCA9IHAucG9zX2NudW0gLSBwLnBvc19ib2w7IG9mZnNldCA9IHAucG9zX2NudW0gfVxuICAgICAgOztcblxuICAgICAgbGV0IHVwZGF0ZV9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIChwb3MgOiBQb3NpdGlvbnMucG9zKSA9XG4gICAgICAgIGxldCBwID0gcG9zLm9mZnNldCAtIGxleGJ1Zi5sZXhfYWJzX3BvcyBpblxuICAgICAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wXG4gICAgICAgIDwtIHsgbGV4YnVmLmxleF9jdXJyX3Agd2l0aFxuICAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLmxpbmVcbiAgICAgICAgICAgOyBwb3NfY251bSA9IHBvcy5vZmZzZXRcbiAgICAgICAgICAgOyBwb3NfYm9sID0gcG9zLm9mZnNldCAtIHBvcy5jb2xcbiAgICAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmZWVkX2xleGJ1ZiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSBzdGFjayA9XG4gICAgICAgIGxldCBzdGFjayA9XG4gICAgICAgICAgZmVlZF9zdWJieXRlc1xuICAgICAgICAgICAgdFxuICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXJcbiAgICAgICAgICAgIHN0YWNrXG4gICAgICAgICAgICB+cG9zOmxleGJ1Zi5sZXhfY3Vycl9wb3NcbiAgICAgICAgICAgIH5sZW46KGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfY3Vycl9wb3MpXG4gICAgICAgIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuO1xuICAgICAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGlmIG5vdCBsZXhidWYubGV4X2VvZl9yZWFjaGVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxleGJ1Zi5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICAgICAgZmVlZF9sZXhidWYgdCBsZXhidWYgc3RhY2spXG4gICAgICAgIGVsc2UgZmVlZF9lb2kgdCBzdGFja1xuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX2dlbiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgICAgIEEucmVzZXQgdCB+cG9zOihwb3Nfb2ZfbGV4YnVmIGxleGJ1Zik7XG4gICAgICAgIG1hdGNoIGZlZWRfbGV4YnVmIHQgbGV4YnVmIFN0YWNrLmVtcHR5IHdpdGhcbiAgICAgICAgfCAoKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIChTdGF0ZS5wb3NpdGlvbiB0KTtcbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgZXhjZXB0aW9uIEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIHBvcykgLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiBwb3M7XG4gICAgICAgICAgU29tZSBwYXJzZWRfdmFsdWVcbiAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIHJhaXNlIGV4blxuICAgICAgOztcblxuICAgICAgbGV0IHNldF9ub19zZXhwX2lzX2Vycm9yIHQgeCA9XG4gICAgICAgIG1hdGNoIEEubW9kZSB0IHdpdGhcbiAgICAgICAgfCBFYWdlciBlIC0+IGUubm9fc2V4cF9pc19lcnJvciA8LSB4XG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZSB0IGxleGJ1ZiA9XG4gICAgICAgIHNldF9ub19zZXhwX2lzX2Vycm9yIHQgdHJ1ZTtcbiAgICAgICAgbWF0Y2ggcGFyc2VfZ2VuIHQgbGV4YnVmIHdpdGhcbiAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLnBhcnNlX2dlbjogTm9uZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfb3B0IHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCBmYWxzZTtcbiAgICAgICAgcGFyc2VfZ2VuIHQgbGV4YnVmXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbnZfaW50ZlxuXG5tb2R1bGUgTWFrZVxuICAgIChNb2RlIDogTW9kZSlcbiAgICAoU2V4cF9wYXJzZXIgOiBQYXJzZXIuUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gTW9kZS5wYXJzZWRfc2V4cClcbiAgICAoUG9zaXRpb25zX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBQb3NpdGlvbnMudCkgPVxuc3RydWN0XG4gIGxldCByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiB1c2VyX2V4biA9XG4gICAgbGV0IGxvY2F0aW9uID0gTW9kZS5maW5kIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiBpblxuICAgIE9mX3NleHBfZXJyb3IucmFpc2UgfnVzZXJfZXhuIH5zdWJfc2V4cDpzdWIgfmxvY2F0aW9uXG4gIDs7XG5cbiAgbGV0IHBhcnNlX3N0cmluZ19leG4gc3RyIGYgPVxuICAgIGxldCBwYXJzZWRfdmFsdWUgPSBTZXhwX3BhcnNlci5wYXJzZV9zdHJpbmdfZXhuIHN0ciBpblxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT5cbiAgICAgIGxldCBwb3NpdGlvbnMgPSBQb3NpdGlvbnNfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgICByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgZXhuIH5zdWJcbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGUgLT4gRXJyb3IgKFBhcnNlX2Vycm9yIGUpXG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgKE9mX3NleHBfZXJyb3IgZSlcbiAgOztcblxuICBsZXQgY29udl9leG4gKHBhcnNlZF92YWx1ZSwgcG9zaXRpb25zKSBmID1cbiAgICBtYXRjaCBNb2RlLmFwcGx5X2YgcGFyc2VkX3ZhbHVlIH5mIHdpdGhcbiAgICB8IHggLT4geFxuICAgIHwgZXhjZXB0aW9uIFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzdWIpIC0+IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBjb252IHggZiA9XG4gICAgbWF0Y2ggY29udl9leG4geCBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvciBlIC0+IEVycm9yIGVcbiAgOztcblxuICBsZXQgY29udl9jb21iaW5lIHJlc3VsdCBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IE9rIHggLT5cbiAgICAgIChtYXRjaCBjb252IHggZiB3aXRoXG4gICAgICAgfCBPayBfIGFzIHIgLT4gclxuICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKSlcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENvbnYgPSBDb252LlNcbm1vZHVsZSB0eXBlIFBhcnNlciA9IFBhcnNlci5TXG5tb2R1bGUgdHlwZSBFYWdlcl9wYXJzZXIgPSBQYXJzZXIuU19lYWdlclxuXG5tb2R1bGUgQ29udl9lcnJvciA9IENvbnZfZXJyb3Jcbm1vZHVsZSBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvclxubW9kdWxlIE9sZF9wYXJzZXJfY29udF9zdGF0ZSA9IE9sZF9wYXJzZXJfY29udF9zdGF0ZVxubW9kdWxlIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3Jcbm1vZHVsZSBQb3NpdGlvbnMgPSBQb3NpdGlvbnNcbm1vZHVsZSBDc3QgPSBDc3Rcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvclxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5tb2R1bGUgU2luZ2xlID0gKHZhbCBQYXJzZXIubWFrZSBTZXhwIFNpbmdsZSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxubW9kdWxlIE1hbnkgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgTWFueSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KSlcbm1vZHVsZSBFYWdlciA9ICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgU2V4cCAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxuXG5sZXQgYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHAgc3RhdGUgc3RhY2sgPSBnZXRfc2V4cCBzdGFjaywgQS5wb3NpdGlvbnMgc3RhdGVcblxubGV0IGFuZF9wb3NpdGlvbnMgbW9kZSBnZXRfc2V4cCA9XG4gIFBhcnNlci5tYWtlIFNleHBfd2l0aF9wb3NpdGlvbnMgbW9kZSAoYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHApXG47O1xuXG5tb2R1bGUgU2luZ2xlX2FuZF9wb3NpdGlvbnMgPSAodmFsIGFuZF9wb3NpdGlvbnMgU2luZ2xlIEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKVxubW9kdWxlIE1hbnlfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBNYW55IEF1dG9tYXRvbl9zdGFjay5nZXRfbWFueSlcblxubW9kdWxlIEVhZ2VyX2FuZF9wb3NpdGlvbnMgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyXG4gICAgICAgICBTZXhwX3dpdGhfcG9zaXRpb25zXG4gICAgICAgICAoQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUgfD4gYW5kX2dldF9wb3NpdGlvbnMpKVxuXG5sZXQganVzdF9nZXRfcG9zaXRpb25zIHN0YXRlICgpID0gQS5wb3NpdGlvbnMgc3RhdGVcbmxldCBqdXN0X3Bvc2l0aW9ucyBtb2RlID0gUGFyc2VyLm1ha2UgUG9zaXRpb25zIG1vZGUganVzdF9nZXRfcG9zaXRpb25zXG5cbm1vZHVsZSBTaW5nbGVfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIFNpbmdsZSlcbm1vZHVsZSBNYW55X2p1c3RfcG9zaXRpb25zID0gKHZhbCBqdXN0X3Bvc2l0aW9ucyBNYW55KVxubW9kdWxlIEVhZ2VyX2p1c3RfcG9zaXRpb25zID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBQb3NpdGlvbnMganVzdF9nZXRfcG9zaXRpb25zKVxuXG5sZXQgY3N0IG1vZGUgZiA9IFBhcnNlci5tYWtlIENzdCBtb2RlIChjb25zdCBmKVxuXG5tb2R1bGUgTWFueV9jc3QgPSAodmFsIGNzdCBNYW55IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfY3N0ID1cbiAgKHZhbCBQYXJzZXIubWFrZV9lYWdlciBDc3QgKGZ1biBfIHN0YWNrIC0+XG4gICAgIG1hdGNoIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55IHN0YWNrIHdpdGhcbiAgICAgfCBbIHNleHAgXSAtPiBzZXhwXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuXG50eXBlICdhIGlkID0gJ2FcbnR5cGUgc2V4cF9saXN0ID0gU2V4cC50IGxpc3RcblxubW9kdWxlIENvbnZfc2luZ2xlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfcGh5c1xuICAgIGVuZClcbiAgICAoU2luZ2xlKVxuICAgIChTaW5nbGVfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBDb252X21hbnkgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhIGxpc3RcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnQgbGlzdFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHggfmYpXG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueV9hdF9vbmNlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnQgbGlzdFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gZiB4XG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEF1dG9tYXRvbiA9IEF1dG9tYXRvblxuICBtb2R1bGUgQXV0b21hdG9uX3N0YWNrID0gQXV0b21hdG9uX3N0YWNrXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhdGUgPSBBdXRvbWF0b25fc3RhdGVcbiAgbW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xuZW5kXG4iLCIoKiBmb3IgbGV4aW5nIHBvc2l0aW9uczpcbiAgIC0gbG51bSBzdGFydHMgZnJvbSAxXG4gICAtIGNudW0gc3RhcnRzIGZyb20gMFxuICAgLSBwb3NfYm9sIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBsaW5lXG5cbiAgIGZvciBhYnNvbHV0ZSBwb3M6XG4gICAtIHJvdyBzdGFydHMgZnJvbSAxXG4gICAtIGNvbCBzdGFydHMgZnJvbSAxXG5cbiAgIGZvciByZWxhdGl2ZSBwb3MsIG9idmlvdXNseSAwIG1lYW5zIHNhbWUgcG9zaXRpb25cbiopXG5cbigqIG9wZXJhdGlvbnMgdGhhdCBtYWtlIHNlbnNlIGZvciBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBwb3NpdGlvbnMgKilcbm1vZHVsZSBQb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJvdyA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyByb3c7IGNvbCB9ID0gVHlwZS5BdG9tIChQcmludGYuc3ByaW50ZiBcIiVkOiVkXCIgcm93IGNvbClcbiAgbGV0IGFkZCB0MSB0MiA9IHsgcm93ID0gdDEucm93ICsgdDIucm93OyBjb2wgPSB0MS5jb2wgKyB0Mi5jb2wgfVxuICBsZXQgc3ViIHQxIHQyID0geyByb3cgPSB0MS5yb3cgLSB0Mi5yb3c7IGNvbCA9IHQxLmNvbCAtIHQyLmNvbCB9XG5cbiAgbGV0IGNvbXBhcmUgeyByb3cgPSByMTsgY29sID0gYzEgfSB7IHJvdyA9IHIyOyBjb2wgPSBjMiB9ID1cbiAgICBpZiByMSA9IHIyIHRoZW4gYzEgLSBjMiBlbHNlIHIxIC0gcjJcbiAgOztcblxuICBsZXQgZ2VxIHQxIHQyID0gY29tcGFyZSB0MSB0MiA+PSAwXG5lbmRcblxubW9kdWxlIFJlbGF0aXZlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IHplcm8gPSB7IHJvdyA9IDA7IGNvbCA9IDAgfVxuZW5kXG5cbm1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvc1xuXG4gIGxldCBvcmlnaW4gPSB7IHJvdyA9IDE7IGNvbCA9IDEgfVxuXG4gIGxldCBvZl9sZXhpbmcgeyBMZXhpbmcucG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sOyBwb3NfZm5hbWUgPSBfIH0gPVxuICAgIHsgcm93ID0gcG9zX2xudW07IGNvbCA9IHBvc19jbnVtIC0gcG9zX2JvbCArIDEgfVxuICA7O1xuXG4gIGxldCBkaWZmID0gc3ViXG5lbmRcbiIsIigqKiBUeXBlIG9mIGFubm90YXRlZCBTLWV4cHJlc3Npb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChQb3MgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICgqKiBJbiBbQXRvbSAoXywgcywgb3B0KV0sIFtzXSBpcyB0aGUgdW5lc2NhcGVkIHN0cmluZywgdGhhdCBpcyB0aGUgYXJndW1lbnQgb2ZcbiAgICAgICAgW1R5cGUuQXRvbV0uIFdoZW4gW29wdF0gaXMgZGVmaW5lZCwgaXQgaXMgdGhlIHNvdXJjZSBzeW50YXggb2YgW3NdLCB0aGF0IGlzIGFcbiAgICAgICAgc3RyaW5nIHRoYXQgY2FuIGJlIHByaW50ZWQgYXMgaXMgaWYgb25lIHdhbnRzIHRvIHBhcnNlIGFuZCBwcmludCBwcmVzZXJ2aW5nXG4gICAgICAgIHN5bnRheC4gVGhpcyBpcyB1c3VhbGx5IHNldCBmb3IgcXVvdGVkIGF0b21zICh0byBwcmVzZXJ2ZSB0aGUgZmFjdCB0aGF0IHdlcmVcbiAgICAgICAgcXVvdGVkKSwgYnV0IGl0IGNhbiBiZSB1c2VmdWwgdG8gZG8gdGhlIHJldmVyc2U6IHNldCBpdCBmb3IgYXRvbXMgdGhhdCBjYW4gYmVcbiAgICAgICAgcGFyc2VkIHVucXVvdGVkIGJ1dCB3b3VsZCBiZSBwcmludGVkIHdpdGggcXVvdGVzLCB0byBwcmVzZXJ2ZSB0aGUgbGFjayBvZiBxdW90ZXMuXG4gICAgICAgIEZvciBpbnN0YW5jZTpcbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8YXx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhIGJcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYVwiLCBTb21lIFwiXFxcImFcXFwiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhXCJ8fVxuICAgICAgICBBdG9tIChfLCBcImEgYlwiLCBTb21lIFwiYSBiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8YSBifH0gb3IgbWF5IHJhaXNlLCBhcyBpdCBpc1xuICAgICAgICBhbiBlcnJvciB0byBjb25zdHJ1Y3RlZCBzdWNoIGFuIGF0b20gKGRvZXNuJ3QgcGFyc2UgYmFjaykgKilcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdG9tIG9mIFBvcy50ICogc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICAgfCBMaXN0IG9mIFBvcy50ICogdF9vcl9jb21tZW50IGxpc3QgKiBQb3MudFxuXG4gICAgKCogcG9zaXRpb25zIG9mIGxlZnQgYW5kIHJpZ2h0IHBhcmVucyAqKVxuICAgIGFuZCB0X29yX2NvbW1lbnQgPVxuICAgICAgfCBTZXhwIG9mIHRcbiAgICAgIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbiAgICBhbmQgY29tbWVudCA9XG4gICAgICB8IFBsYWluX2NvbW1lbnQgb2YgUG9zLnQgKiBzdHJpbmdcbiAgICAgIHwgU2V4cF9jb21tZW50IG9mIFBvcy50ICogY29tbWVudCBsaXN0ICogdFxuICBlbmRcblxuICBpbmNsdWRlIFRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBUXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZFxuXG4gIG1vZHVsZSBUb19zZXhwIDogc2lnXG4gICAgdmFsIG9mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBvZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgb2ZfdF9vcl9jb21tZW50IDogdF9vcl9jb21tZW50IC0+IFR5cGUudFxuICBlbmQgPSBzdHJ1Y3RcbiAgICAoKiBtYXliZSB3ZSBjYW4gYWN0dWFsbHkgdXNlIGNvbnYgaGVyZSwgaW5zdGVhZCBvZiBpbmxpbmluZyBpdCAqKVxuXG4gICAgbGV0IG9mX3BvcyA9IFBvcy5zZXhwX29mX3RcbiAgICBsZXQgb2Zfc3RyaW5nIHggPSBUeXBlLkF0b20geFxuICAgIGxldCBvZl9saXN0IG9mX2EgeHMgPSBUeXBlLkxpc3QgKExpc3QubWFwIH5mOm9mX2EgeHMpXG5cbiAgICBsZXQgb2Zfb3B0aW9uIG9mX2EgPSBmdW5jdGlvblxuICAgICAgfCBTb21lIHggLT4gVHlwZS5MaXN0IFsgb2ZfYSB4IF1cbiAgICAgIHwgTm9uZSAtPiBUeXBlLkxpc3QgW11cbiAgICA7O1xuXG4gICAgbGV0IHJlYyBvZl90ID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQXRvbVwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2Mjsgb2Zfb3B0aW9uIG9mX3N0cmluZyB2MyBdXG4gICAgICB8IExpc3QgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkxpc3RcIjsgb2ZfcG9zIHYxOyBvZl9saXN0IG9mX3Rfb3JfY29tbWVudCB2Mjsgb2ZfcG9zIHYzIF1cblxuICAgIGFuZCBvZl90X29yX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwIHQgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cFwiOyBvZl90IHQgXVxuICAgICAgfCBDb21tZW50IGMgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQ29tbWVudFwiOyBvZl9jb21tZW50IGMgXVxuXG4gICAgYW5kIG9mX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBQbGFpbl9jb21tZW50ICh2MSwgdjIpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlBsYWluX2NvbW1lbnRcIjsgb2ZfcG9zIHYxOyBvZl9zdHJpbmcgdjIgXVxuICAgICAgfCBTZXhwX2NvbW1lbnQgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlNleHBfY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfY29tbWVudCB2Mjsgb2ZfdCB2MyBdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRvX3NleHAub2ZfdFxuICBsZXQgc2V4cF9vZl9jb21tZW50ID0gVG9fc2V4cC5vZl9jb21tZW50XG4gIGxldCBzZXhwX29mX3Rfb3JfY29tbWVudCA9IFRvX3NleHAub2ZfdF9vcl9jb21tZW50XG5lbmRcblxuaW5jbHVkZSBNYWtlIChTcmNfcG9zLlJlbGF0aXZlKVxubW9kdWxlIFBhcnNlZCA9IE1ha2UgKFNyY19wb3MuQWJzb2x1dGUpXG5cbmxldCByZWxhdGl2aXplID1cbiAgbGV0IHJlbCB+b3V0ZXJfcCBwID0gU3JjX3Bvcy5BYnNvbHV0ZS5kaWZmIHAgb3V0ZXJfcCBpblxuICBsZXQgcmVjIGF1eF90IH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5BdG9tIChwb3MsIHMsIHNvcHQpIC0+IEF0b20gKHJlbCBwb3Mgfm91dGVyX3AsIHMsIHNvcHQpXG4gICAgfCBQYXJzZWQuTGlzdCAoc3RhcnRfcG9zLCB0b2NzLCBlbmRfcG9zKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoIHJlbCBzdGFydF9wb3Mgfm91dGVyX3BcbiAgICAgICAgLCBMaXN0Lm1hcCB0b2NzIH5mOihmdW4gdG9jIC0+IGF1eF90b2Mgfm91dGVyX3A6c3RhcnRfcG9zIHRvYylcbiAgICAgICAgLCByZWwgZW5kX3BvcyB+b3V0ZXJfcCApXG4gIGFuZCBhdXhfdG9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5TZXhwIHQgLT4gU2V4cCAoYXV4X3QgdCB+b3V0ZXJfcClcbiAgICB8IFBhcnNlZC5Db21tZW50IGMgLT4gQ29tbWVudCAoYXV4X2MgYyB+b3V0ZXJfcClcbiAgYW5kIGF1eF9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5QbGFpbl9jb21tZW50IChwb3MsIHR4dCkgLT4gUGxhaW5fY29tbWVudCAocmVsIHBvcyB+b3V0ZXJfcCwgdHh0KVxuICAgIHwgUGFyc2VkLlNleHBfY29tbWVudCAocG9zLCBjcywgdCkgLT5cbiAgICAgIFNleHBfY29tbWVudFxuICAgICAgICAocmVsIHBvcyB+b3V0ZXJfcCwgTGlzdC5tYXAgY3MgfmY6KGZ1biBjIC0+IGF1eF9jIH5vdXRlcl9wIGMpLCBhdXhfdCB0IH5vdXRlcl9wKVxuICBpblxuICBmdW4gdG9jIC0+IGF1eF90b2MgdG9jIH5vdXRlcl9wOlNyY19wb3MuQWJzb2x1dGUub3JpZ2luXG47O1xuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG4gIHwgTFBBUkVOXG4gIHwgUlBBUkVOXG4gIHwgRU9GXG4gIHwgSEFTSF9TRU1JXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IHBhcnNlX2ZhaWx1cmUgd2hhdCA9XG4gICAgbGV0IHBvcyA9IFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSBpblxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCJTZXhwbGliLlBhcnNlcjogZmFpbGVkIHRvIHBhcnNlIGxpbmUgJWQgY2hhciAlZDogJXNcIlxuICAgICAgICBwb3MucG9zX2xudW0gKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKSB3aGF0IGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiMgMjMgXCJzcmMvcGFyc2VyLm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OCAoKiBMUEFSRU4gKik7XG4gIDI1OSAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MCAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDlcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMjJcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAxMFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDA1XFwwMDBcXDAwOFxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDE1XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDEzXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDQwXFwwMDBcXFxuXFwwMzRcXDI1NVxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwyNTVcXFxuXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMjU1XFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NFxcMjU1XFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAyOVxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjg2XG5sZXQgeXl0YWJsZSA9IFwiXFwwMTZcXDAwMFxcXG5cXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAyOVxcMDAwXFwwMjdcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAzOVxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjJcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcXG5cXDAzMVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjZcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDhcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyOFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDhcXDAwMFxcMDA0XFwwMDFcXDI1NVxcMjU1XFwwMTFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG5cXDAyOFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDE3MCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMTc3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgKCBUeXBlLkF0b20gXzEgKVxuIyAxODQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgW10gKVxuIyAxOTAgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAzOCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgKExpc3QucmV2IF8yKSApXG4jIDE5NyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjAzIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIxMCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIxOCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyNSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMzMgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfMSApXG4jIDI0MCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzIgKVxuIyAyNDggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggTm9uZSApXG4jIDI1NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBPYmoucmVwcihcbiMgNTMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBOb25lIClcbiMgMjYxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDI2OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggW10gKVxuIyAyNzUgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyODMgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjkxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI5OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMDQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzExIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDMxNyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHJldl9zZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzZXhwIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBUeXBlLnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogVHlwZS50IGxpc3QpXG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvbilcbiAgfCBDT01NRU5UIG9mIChzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uKVxuICB8IExQQVJFTlxuICB8IFJQQVJFTlxuICB8IEVPRlxuICB8IEhBU0hfU0VNSVxuXG5vcGVuIFBhcnNpbmc7O1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcbiAgKCogY29tcGFyZSB0byBwYXJzZXIubWx5ICopXG5cbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgcGFyc2VfZmFpbHVyZSB3aGF0ID1cbiAgICBsZXQgcG9zID0gUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlNleHBsaWIuUGFyc2VyOiBmYWlsZWQgdG8gcGFyc2UgbGluZSAlZCBjaGFyICVkOiAlc1wiXG4gICAgICAgIHBvcy5wb3NfbG51bSAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpIHdoYXQgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBtb2R1bGUgV2l0aF9wb3MgPSBzdHJ1Y3RcblxuICAgIG9wZW4gVHlwZV93aXRoX2xheW91dC5QYXJzZWRcblxuICAgIGxldCBjb2VyY2UgPSBTcmNfcG9zLkFic29sdXRlLm9mX2xleGluZ1xuXG4gICAgbGV0IHN0YXJ0X3BvcyAoKSA9IGNvZXJjZSAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKVxuXG4gICAgbGV0IGVuZF9wb3MgKCkgPVxuICAgICAgbGV0IHAgPSBQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpIGluXG4gICAgICBjb2VyY2UgeyBwIHdpdGggTGV4aW5nLnBvc19jbnVtID0gcC5MZXhpbmcucG9zX2NudW0gLSAxIH1cblxuICAgIGxldCBhdG9tICh4LCB5KSA9XG4gICAgICBsZXQgKHBvcywgeSkgPVxuICAgICAgICBtYXRjaCB5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChzdGFydF9wb3MgKCksIFNvbWUgeClcbiAgICAgICAgfCBTb21lIChwb3MsIHgpIC0+IChjb2VyY2UgcG9zLCBTb21lIHgpXG4gICAgICBpblxuICAgICAgQXRvbSAocG9zLCB4LCB5KVxuXG4gICAgbGV0IGxpc3QgdHMgPSBMaXN0IChzdGFydF9wb3MgKCksIHRzLCBlbmRfcG9zICgpKVxuXG4gICAgbGV0IHNleHAgICAgeCA9IFNleHAgICAgeFxuICAgIGxldCBjb21tZW50IHggPSBDb21tZW50IHhcblxuICAgIGxldCBzZXhwX2NvbW1lbnQgY3MgdCA9IFNleHBfY29tbWVudCAoc3RhcnRfcG9zICgpLCBjcywgdClcblxuICAgIGxldCBwbGFpbl9jb21tZW50ICh4LCBwb3Nfb3B0KSA9XG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggcG9zX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdGFydF9wb3MgKClcbiAgICAgICAgfCBTb21lIHBvcyAtPiBjb2VyY2UgcG9zXG4gICAgICBpblxuICAgICAgUGxhaW5fY29tbWVudCAocG9zLCB4KVxuXG4gIGVuZFxuXG4jIDYyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTkgKCogTFBBUkVOICopO1xuICAyNjAgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjEgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAyNTggKCogQ09NTUVOVCAqKTtcbiAgICAwfF1cblxubGV0IHl5bGhzID0gXCJcXDI1NVxcMjU1XFxcblxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcblxcMDEwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAxMFxcMDAwXFwwMDZcXDAwMFxcMDIyXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFxcblxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMjBcXDAwMFxcMDE1XFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE2XFwwMDBcXDAyMVxcMDAwXFxcblxcMDExXFwwMDBcXDAxN1xcMDAwXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA2XFwwMDBcXFxuXFwwMjBcXDAwMFxcMDE4XFwwMDBcXDAyMVxcMDAwXFwwMjNcXDAwMFxcMDI2XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDE1XFwwMDBcXDAyMlxcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDAzN1xcMDAwXFxcblxcMDA5XFwyNTVcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwyNTVcXDAwOVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjdcXDI1NVxcMjUxXFwyNTVcXDIzNVxcMjU1XFxcblxcMDAwXFwwMDBcXDIzNFxcMjU1XFwwMTBcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI5MlxubGV0IHl5dGFibGUgPSBcIlxcMDM2XFwwMDBcXFxuXFwwMTZcXDAwMFxcMDMzXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDI4XFwwMDBcXDAzM1xcMDAwXFwwMTlcXDAwMFxcMDM3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDI1XFwwMDBcXDAxMVxcMDAwXFwwMjdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMzVcXDAwMFxcMDExXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAxMFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDVcXDAwMVxcMDA1XFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBDT01NRU5UXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiAoTGV4aW5nLnBvc2l0aW9uICogc3RyaW5nKSBvcHRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAoIFdpdGhfcG9zLmF0b20gXzEgKVxuIyAyMTQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgNzYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3MubGlzdCAoTGlzdC5yZXYgXzIpIClcbiMgMjIxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjI3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nICogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgODAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAoIFdpdGhfcG9zLnBsYWluX2NvbW1lbnQgXzEgKVxuIyAyMzQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4MSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHBfY29tbWVudCAoTGlzdC5yZXYgXzIpIF8zIClcbiMgMjQyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjQ4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfY29tbWVudHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyNTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5zZXhwIF8xIClcbiMgMjYzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLmNvbW1lbnQgXzEgKVxuIyAyNzAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA5MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjc2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgOTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgKCBUeXBlX3dpdGhfbGF5b3V0LnJlbGF0aXZpemUgXzEgKVxuIyAyOTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA5OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggU29tZSBfMSApXG4jIDI5OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBOb25lIClcbiMgMzA0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwMyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggW18xXSApXG4jIDMxMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAzMTkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMyNiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMzIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzM5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDM0NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgMTE2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzNTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC5QYXJzZWQudF9vcl9jb21tZW50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwc19hYnMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgcmV2X3NleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHNleHAgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG5sZXQgc2V4cHNfYWJzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDUgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG4iLCIjIDEgXCJzcmMvbGV4ZXIubWxsXCJcbiBcbiAgKCoqIExleGVyOiBMZXhlciBTcGVjaWZpY2F0aW9uIGZvciBTLWV4cHJlc3Npb25zICopXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgICB8ICduJyAtPiAnXFwwMTAnXG4gICAgfCAncicgLT4gJ1xcMDEzJ1xuICAgIHwgJ2InIC0+ICdcXDAwOCdcbiAgICB8ICd0JyAtPiAnXFwwMDknXG4gICAgfCBjIC0+IGNcblxuICBsZXQgbGYgPSAnXFwwMTAnXG5cbiAgbGV0IGRlY19jb2RlIGMxIGMyIGMzID1cbiAgICAxMDAgKiAoQ2hhci5jb2RlIGMxIC0gNDgpICsgMTAgKiAoQ2hhci5jb2RlIGMyIC0gNDgpICsgKENoYXIuY29kZSBjMyAtIDQ4KVxuXG4gIGxldCBoZXhfY29kZSBjMSBjMiA9XG4gICAgbGV0IGQxID0gQ2hhci5jb2RlIGMxIGluXG4gICAgbGV0IHZhbDEgPVxuICAgICAgaWYgZDEgPj0gOTcgdGhlbiBkMSAtIDg3XG4gICAgICBlbHNlIGlmIGQxID49IDY1IHRoZW4gZDEgLSA1NVxuICAgICAgZWxzZSBkMSAtIDQ4IGluXG4gICAgbGV0IGQyID0gQ2hhci5jb2RlIGMyIGluXG4gICAgbGV0IHZhbDIgPVxuICAgICAgaWYgZDIgPj0gOTcgdGhlbiBkMiAtIDg3XG4gICAgICBlbHNlIGlmIGQyID49IDY1IHRoZW4gZDIgLSA1NVxuICAgICAgZWxzZSBkMiAtIDQ4IGluXG4gICAgdmFsMSAqIDE2ICsgdmFsMlxuXG4gIGxldCBmb3VuZF9uZXdsaW5lICh7IGxleF9jdXJyX3A7IF8gfSBhcyBsZXhidWYpIGRpZmYgPVxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7XG4gICAgICAgIGxleF9jdXJyX3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxleF9jdXJyX3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGV4X2N1cnJfcC5wb3NfY251bSAtIGRpZmY7XG4gICAgICB9XG5cbiAgKCogc2FtZSBsZW5ndGggY29tcHV0YXRpb24gYXMgaW4gW0xleGluZy5sZXhlbWVdICopXG4gIGxldCBsZXhlbWVfbGVuIHsgbGV4X3N0YXJ0X3BvczsgbGV4X2N1cnJfcG9zOyBfIH0gPSBsZXhfY3Vycl9wb3MgLSBsZXhfc3RhcnRfcG9zXG5cbiAgbGV0IG1haW5fZmFpbHVyZSBsZXhidWYgbXNnID1cbiAgICBsZXQgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA9IGxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgIGxldCBtc2cgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICBcIlNleHBsaWIuTGV4ZXIubWFpbjogJXMgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgbXNnIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wpXG4gICAgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICAgICAgdmFsIGFkZF9jaGFyIDogdCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgIHZhbCBhZGRfc3ViYnl0ZXMgOiB0IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgdmFsIGFkZF9sZXhlbWUgOiB0IC0+IGxleGJ1ZiAtPiB1bml0XG4gICAgICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgICAgIHZhbCBvZl9idWZmZXIgOiBCdWZmZXIudCAtPiB0XG4gICAgZW5kXG4gICAgbW9kdWxlIFRva2VuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHZhbCBscGFyZW4gOiB0XG4gICAgICB2YWwgcnBhcmVuIDogdFxuICAgICAgdmFsIGVvZiA6IHRcbiAgICAgIHZhbCBzaW1wbGVfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgIHZhbCBoYXNoX3NlbWkgOiB0XG4gICAgICB2YWwgcXVvdGVkX3N0cmluZyA6IExleGluZy5wb3NpdGlvbiAtPiBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IHRcbiAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICB2YWwgY29tbWVudCA6IHN0cmluZyAtPiBtYWluOnMgLT4gc1xuICAgICAgdmFsIGJsb2NrX2NvbW1lbnQgOiBMZXhpbmcucG9zaXRpb24gLT4gbWFpbjpzIC0+IHNcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBUKSA6IHNpZ1xuICAgIHZhbCBtYWluIDogP2J1ZjpCdWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IFguVG9rZW4udFxuICBlbmQgPSBzdHJ1Y3QgKCogQkVHSU4gRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcbiAgICBvcGVuIFhcblxuIyA4MyBcInNyYy9sZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyNDRcXDI1NVxcMDEwXFwwMDBcXDA0M1xcMDAwXFwwNTNcXDAwMFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDg2XFwwMDBcXDI0OFxcMjU1XFwyNDlcXDI1NVxcMDk2XFwwMDBcXFxuICAgIFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNzJcXDAwMFxcMTgyXFwwMDBcXDIyMFxcMDAwXFwyMzBcXDAwMFxcMDA3XFwwMDFcXDI0N1xcMjU1XFxcbiAgICBcXDAxN1xcMDAxXFwwNTBcXDAwMVxcMDYwXFwwMDFcXDA5M1xcMDAxXFwxMDNcXDAwMVxcMTM2XFwwMDFcXDE0NlxcMDAxXFwxODFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMjI0XFwwMDFcXDIzNFxcMDAxXFwwMTFcXDAwMlxcMDM3XFwwMDBcXDI0NlxcMjU1XFwwODBcXDAwMFxcMjQ4XFwyNTVcXFxuICAgIFxcMDIzXFwwMDJcXDI1NVxcMjU1XFwyNDlcXDI1NVxcMDU3XFwwMDJcXDAzM1xcMDAyXFwyNTJcXDI1NVxcMDA3XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAxN1xcMDAwXFwxMTJcXDAwMlxcMjUxXFwyNTVcXDE0NFxcMDAyXFwyNTBcXDI1NVxcMDgxXFwwMDBcXDI1MFxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwxMjJcXDAwMFxcMjU1XFwyNTVcXDE2NlxcMDAwXFwxMzBcXDAwMVxcMjUyXFwyNTVcXDI1MVxcMjU1XFwxNzNcXDAwMVxcMjUxXFwwMDFcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwMDJcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxMlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNThcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyMVxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDE3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzNVxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwNDZcXDAwMFxcMDA5XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMzZcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMzZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDM4XFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDM4XFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAzNlxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXFxuICAgIFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTdcXDAwMFxcMDM4XFwwMDBcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDU4XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAwXFwwNTNcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAxOFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG4gICAgXFwwMjFcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMVxcMDAwXFwwMTdcXDAwMFxcXG4gICAgXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzhcXDAwMFxcMDUzXFwwMDBcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMDI4XFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDE3XFwwMDBcXDA1OVxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAyOFxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwwMjlcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMjU1XFwyNTVcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMTlcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAyOVxcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXFxuICAgIFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMjVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDQwXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIG1haW4gYnVmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgKCBmb3VuZF9uZXdsaW5lIGxleGJ1ZiAwO1xuICAgICAgICAgICAgICAgICAgICAgICBtYWluIGJ1ZiBsZXhidWYgKVxuIyAzNjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyA5NiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAoIG1haW4gYnVmIGxleGJ1ZiApXG4jIDM3NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG5sZXRcbiMgOTcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFxuIyAzODAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUb2tlbi5jb21tZW50IHRleHQgfm1haW4gYnVmIGxleGJ1ZiApXG4jIDM4NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4ubHBhcmVuIClcbiMgMzg5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgOTkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5ycGFyZW4gKVxuIyAzOTQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyAxMDEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgcG9zIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLnF1b3RlZF9zdHJpbmcgcG9zIGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jbGVhciBidWY7XG4gICAgICAgIHRva1xuICAgICAgKVxuIyA0MDYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxuIyAxMDkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICggVG9rZW4uaGFzaF9zZW1pIClcbiMgNDExIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTExIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBwb3MgPSBMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBbcG9zXSBsZXhidWY7XG4gICAgICAgIGxldCB0b2sgPSBUb2tlbi5ibG9ja19jb21tZW50IHBvcyB+bWFpbiBidWYgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQyMyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDExOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBtYWluX2ZhaWx1cmUgbGV4YnVmIFwiaWxsZWdhbCBlbmQgb2YgY29tbWVudFwiIClcbiMgNDI4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTI1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCIgKVxuIyA0MzMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbmxldFxuIyAxMjYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyXG4jIDQzOSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTI2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRva2VuLnNpbXBsZV9zdHJpbmcgc3RyIClcbiMgNDQzIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDExIC0+XG4jIDEyNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmVvZiApXG4jIDQ0OCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgMzZcbmFuZCBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTMwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmOyAoKSApXG4jIDQ2MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDEzMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAyIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ3MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDEzOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAzIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ4MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMTQ1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyA0ODYgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTQ2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDk0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbmxldFxuIyAxNTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICBjMVxuIyA1MDAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAxNTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyXG4jIDUwNSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDE1MSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjM1xuIyA1MTAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTUyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gZGVjX2NvZGUgYzEgYzIgYzMgaW5cbiAgICAgICAgaWYgdiA+IDI1NSB0aGVuIChcbiAgICAgICAgICBsZXQgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiBcXFxuICAgICAgICAgICAgICAgaWxsZWdhbCBlc2NhcGUgYXQgbGluZSAlZCBjaGFyICVkOiBgXFxcXCVjJWMlYydcIlxuICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sIC0gMylcbiAgICAgICAgICAgICAgYzEgYzIgYzMgaW5cbiAgICAgICAgICBmYWlsd2l0aCBtc2cpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIHYpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTI4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbmxldFxuIyAxNjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzFcbiMgNTM0IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTY3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTM5IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGluXG4jIDE2OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgdiA9IGhleF9jb2RlIGMxIGMyIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NDggXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDE3NCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgY1xuIyA1NTQgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTc1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTYzIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTgyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBsZjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU3MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDE4OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgb2ZzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBvZnMgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBvZnMgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTg0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5MZXhlci5zY2FuX3N0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZyBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgc3RhcnQucG9zX2xudW0gKHN0YXJ0LnBvc19jbnVtIC0gc3RhcnQucG9zX2JvbClcbiAgICAgICAgaW5cbiAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDU5NiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIDUzXG5hbmQgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIwOCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7IHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MDkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAyMTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmIClcbiMgNjE1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMjE0IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgbGV0IHN0YXJ0ID0geyBjdXIgd2l0aCBwb3NfY251bSA9IGN1ci5wb3NfY251bSAtIDEgfSBpblxuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmXG4gICAgICApXG4jIDYyNiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDIyMiBcInNyYy9sZXhlci5tbGxcIlxuICAgIChcbiAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgIGxldCBjdXIgPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMiB9IGluXG4gICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIChzdGFydCA6OiBsb2NzKSBsZXhidWZcbiAgICApXG4jIDYzNiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDIyOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtfXSAtPiAoKSAoKiB0aGUgY29tbWVudCBpcyBmaW5pc2hlZCAqKVxuICAgICAgICB8IF8gOjogKF8gOjogXyBhcyB0KSAtPiBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIHQgbGV4YnVmXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlICAoKiBpbXBvc3NpYmxlICopXG4gICAgICApXG4jIDY0NyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDIzNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBtYXRjaCBsb2NzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9IDo6IF8gLT5cbiAgICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgICBzcHJpbnRmIFwiU2V4cGxpYi5MZXhlci5zY2FuX2Jsb2NrX2NvbW1lbnQ6IFxcXG4gICAgICAgICAgICAgICAgdW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnQgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGZhaWx3aXRoIG1zZ1xuICAgICAgKVxuIyA2NjIgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDI0OSBcInNyYy9sZXhlci5tbGxcIlxuICAoKiBSRVNVTUUgRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcblxuICAgIGxldCBtYWluID9idWYgPVxuICAgICAgbGV0IGJ1ZiA9XG4gICAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jcmVhdGUgNjRcbiAgICAgICAgfCBTb21lIGJ1ZiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIub2ZfYnVmZmVyIGJ1ZlxuICAgICAgaW5cbiAgICAgIG1haW4gYnVmXG5cbiAgZW5kICgqIEVORCBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gIG1vZHVsZSBWYW5pbGxhID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEJ1ZmZlclxuICAgICAgICBsZXQgYWRkX2xleGVtZSBfIF8gPSAoKVxuICAgICAgICBsZXQgb2ZfYnVmZmVyIGIgPSBiXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlclxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgeFxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBfIGJ1ZiA9IFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgX3BvcyB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWZcbiAgICAgICAgbGV0IGNvbW1lbnQgX3RleHQgfm1haW4gYnVmIGxleGJ1ZiA9XG4gICAgICAgICAgbWFpbiBidWYgbGV4YnVmICgqIHNraXAgYW5kIGNvbnRpbnVlIGxleGluZyAqKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBXaXRoX2xheW91dCA9XG4gICAgTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgIGNvbnRlbnRzIDogQnVmZmVyLnQ7XG4gICAgICAgICAgbGV4ZW1lIDogQnVmZmVyLnQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNyZWF0ZSBuID0ge2NvbnRlbnRzID0gQnVmZmVyLmNyZWF0ZSBuOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIG59XG4gICAgICAgIGxldCBvZl9idWZmZXIgY29udGVudHMgPSB7IGNvbnRlbnRzOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIDY0IH1cbiAgICAgICAgbGV0IGFkZF9jaGFyIHQgY2ggPSBCdWZmZXIuYWRkX2NoYXIgdC5jb250ZW50cyBjaFxuICAgICAgICBsZXQgYWRkX3N1YmJ5dGVzIHQgc3RyIG9mcyBsZW4gPSBCdWZmZXIuYWRkX3N1YmJ5dGVzIHQuY29udGVudHMgc3RyIG9mcyBsZW5cbiAgICAgICAgbGV0IGFkZF9sZXhlbWUgdCBsZXhidWYgPSBCdWZmZXIuYWRkX3N0cmluZyB0LmxleGVtZSAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgIGxldCBjbGVhciB0ID0gQnVmZmVyLmNsZWFyIHQubGV4ZW1lOyBCdWZmZXIuY2xlYXIgdC5jb250ZW50c1xuICAgICAgZW5kXG4gICAgICBtb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBQYXJzZXJfd2l0aF9sYXlvdXRcbiAgICAgICAgdHlwZSB0ID0gdG9rZW5cbiAgICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgICAgbGV0IGVvZiA9IEVPRlxuICAgICAgICBsZXQgbHBhcmVuID0gTFBBUkVOXG4gICAgICAgIGxldCBycGFyZW4gPSBSUEFSRU5cbiAgICAgICAgbGV0IGhhc2hfc2VtaSA9IEhBU0hfU0VNSVxuICAgICAgICBsZXQgc2ltcGxlX3N0cmluZyB4ID0gU1RSSU5HICh4LCBOb25lKVxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBwb3Mge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzOyBsZXhlbWV9ID1cbiAgICAgICAgICBTVFJJTkcgKEJ1ZmZlci5jb250ZW50cyBjb250ZW50cywgU29tZSAocG9zLCBCdWZmZXIuY29udGVudHMgbGV4ZW1lKSlcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgcG9zIH5tYWluOl8ge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzID0gXzsgbGV4ZW1lfSBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UIChCdWZmZXIuY29udGVudHMgbGV4ZW1lLCBTb21lIHBvcylcbiAgICAgICAgbGV0IGNvbW1lbnQgdGV4dCB+bWFpbjpfIF9idWYgX2xleGJ1ZiA9XG4gICAgICAgICAgQ09NTUVOVCAodGV4dCwgTm9uZSlcbiAgICAgIGVuZFxuICAgIGVuZClcblxuICBsZXQgbWFpbiA9IFZhbmlsbGEubWFpblxuICBsZXQgbWFpbl93aXRoX2xheW91dCA9IFdpdGhfbGF5b3V0Lm1haW5cblxuXG4jIDc0NCBcInNyYy9sZXhlci5tbFwiXG4iLCIoKiBTZXhwOiBNb2R1bGUgZm9yIGhhbmRsaW5nIFMtZXhwcmVzc2lvbnMgKEkvTywgZXRjLikgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gQmlnYXJyYXlcbm1vZHVsZSBTZXhwbGliID0gU2V4cGxpYjBcbm1vZHVsZSBDb252ID0gU2V4cGxpYi5TZXhwX2NvbnZcblxuKCogY29udi5tbCBkZXBlbmRzIG9uIHVzIHNvIHdlIGNhbiBvbmx5IHVzZSB0aGlzIG1vZHVsZSAqKVxuXG5pbmNsdWRlIFR5cGVcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBQcml2YXRlXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBJL08tY2hhbm5lbHMgKilcblxubGV0IHdpdGhfbmV3X2J1ZmZlciBvYyBmID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICBmIGJ1ZjtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2MgYnVmXG47O1xuXG5sZXQgb3V0cHV0X2h1bSBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9odW0gc2V4cCB+YnVmKVxuXG5sZXQgb3V0cHV0X2h1bV9pbmRlbnQgaW5kZW50IG9jIHNleHAgPVxuICB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSB+aW5kZW50IHNleHAgfmJ1Zilcbjs7XG5cbmxldCBvdXRwdXRfbWFjaCBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZilcbmxldCBvdXRwdXQgPSBvdXRwdXRfbWFjaFxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmaWxlICopXG5cbigqIFRoZSB0ZW1wIGZpbGUgZnVuY3Rpb25zIGluIHRoZSBPQ2FtbCBGaWxlbmFtZSBtb2R1bGUgZG8gbm90IHN1cHBvcnRcbiAgIHBlcm1pc3Npb25zLiAgQnV0IG9wZW5pbmcgYSBmaWxlIHdpdGggZ2l2ZW4gcGVybWlzc2lvbnMgaXMgZGlmZmVyZW50XG4gICBmcm9tIG9wZW5pbmcgaXQgYW5kIGNobW9kaW5nIGl0IHRvIHRoZXNlIHBlcm1pc3Npb25zLCBiZWNhdXNlIHRoZSB1bWFza1xuICAgaXMgdGFrZW4gaW4gYWNjb3VudC4gIFVuZGVyIFVuaXggdGhlcmUncyBubyBlYXN5IHdheSB0byBnZXQgdGhlIHVtYXNrIGluXG4gICBhIHRocmVhZC1zYWZlIHdheS4gKilcbm1vZHVsZSBUbXBfZmlsZSA9IHN0cnVjdFxuICBsZXQgcHJuZyA9IHJlZiBOb25lXG5cbiAgbGV0IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByYW5kX3N0YXRlID1cbiAgICAgIG1hdGNoICFwcm5nIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgcmV0ID0gUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpIGluXG4gICAgICAgIHBybmcgOj0gU29tZSByZXQ7XG4gICAgICAgIHJldFxuICAgIGluXG4gICAgbGV0IHJuZCA9IFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRfc3RhdGUgbGFuZCAweEZGRkZGRiBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeFxuICA7O1xuXG4gICgqIEtlZXAgdGhlIHBlcm1pc3Npb25zIGxvb3NlLiBTZXhwcyBhcmUgdXN1YWxseSBzaGFyZWQgYW5kIHJhcmVseSBwcml2YXRlKilcbiAgbGV0IG9wZW5fdGVtcF9maWxlID8ocGVybSA9IDBvNjY2KSBwcmVmaXggc3VmZml4ID1cbiAgICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSBwcmVmaXggc3VmZml4IGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IG9jID1cbiAgICAgICAgICBvcGVuX291dF9nZW4gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsOyBPcGVuX3RleHQgXSBwZXJtIG5hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbmFtZSwgb2NcbiAgICAgIHdpdGhcbiAgICAgIHwgU3lzX2Vycm9yIF8gYXMgZSAtPiBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICAgIGluXG4gICAgdHJ5X25hbWUgMFxuICA7O1xuZW5kXG5cbmxldCBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfZnVuY3Rpb24gZmlsZSBzZXhwID1cbiAgbGV0IHRtcF9uYW1lLCBvYyA9IFRtcF9maWxlLm9wZW5fdGVtcF9maWxlID9wZXJtIGZpbGUgXCJ0bXBcIiBpblxuICAodHJ5XG4gICAgIG91dHB1dF9mdW5jdGlvbiBvYyBzZXhwO1xuICAgICBjbG9zZV9vdXQgb2NcbiAgIHdpdGhcbiAgIHwgZSAtPlxuICAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgICh0cnkgU3lzLnJlbW92ZSB0bXBfbmFtZSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICByYWlzZSBlKTtcbiAgU3lzLnJlbmFtZSB0bXBfbmFtZSBmaWxlXG47O1xuXG5sZXQgb3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jIHNleHAgPVxuICBkb19vdXRwdXQgb2Mgc2V4cDtcbiAgb3V0cHV0X3N0cmluZyBvYyBcIlxcblwiXG47O1xuXG5sZXQgc2F2ZV9odW0gP3Blcm0gZmlsZSBzZXhwID0gc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwX25sIG91dHB1dF9odW0pIGZpbGUgc2V4cFxubGV0IHNhdmVfbWFjaCA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfbWFjaCBmaWxlIHNleHBcbmxldCBzYXZlID0gc2F2ZV9tYWNoXG5sZXQgb3V0cHV0X3NleHBzX25sIGRvX291dHB1dCBvYyBzZXhwcyA9IExpc3QuaXRlciAob3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jKSBzZXhwc1xuXG5sZXQgc2F2ZV9zZXhwc19odW0gP3Blcm0gZmlsZSBzZXhwcyA9XG4gIHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cHNfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHNfbWFjaCA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfbWFjaCkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHMgPSBzYXZlX3NleHBzX21hY2hcblxuKCogU2NhbiBmdW5jdGlvbnMgKilcblxubGV0IHNjYW5fc2V4cCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fc2V4cF9vcHQgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cF9vcHQgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3Jldl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5yZXZfc2V4cHMgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5cbmxldCBnZXRfbWFpbl9idWYgYnVmID1cbiAgbGV0IGJ1ZiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAxMjhcbiAgICB8IFNvbWUgYnVmIC0+IGJ1ZlxuICBpblxuICBMZXhlci5tYWluIH5idWZcbjs7XG5cbmxldCBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+ZiB+aW5pdCBsZXhidWYgPVxuICBsZXQgbWFpbiA9IGdldF9tYWluX2J1ZiBidWYgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggUGFyc2VyLnNleHBfb3B0IG1haW4gbGV4YnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIHNleHAgLT4gbG9vcCAoZiBhY2Mgc2V4cClcbiAgaW5cbiAgbG9vcCBpbml0XG47O1xuXG5sZXQgc2Nhbl9pdGVyX3NleHBzID9idWYgfmYgbGV4YnVmID1cbiAgc2Nhbl9mb2xkX3NleHBzID9idWYgbGV4YnVmIH5pbml0OigpIH5mOihmdW4gKCkgc2V4cCAtPiBmIHNleHApXG47O1xuXG5sZXQgc2Nhbl9zZXhwc19jb252ID9idWYgfmYgbGV4YnVmID1cbiAgbGV0IGNvbGwgYWNjIHNleHAgPSBmIHNleHAgOjogYWNjIGluXG4gIExpc3QucmV2IChzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+Zjpjb2xsIH5pbml0OltdIGxleGJ1Zilcbjs7XG5cbmxldCBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSA/Y29udGFpbmluZ19zZXhwID9sb2NhdGlvbiA/aW52YWxpZF9zZXhwICgpIH5leG4gOiB0ID1cbiAgTGlzdFxuICAgIChMaXN0LmNvbmNhdFxuICAgICAgIFsgWyBBdG9tIFwiT2Zfc2V4cF9lcnJvclwiIF1cbiAgICAgICA7IChtYXRjaCBsb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBBdG9tIHggXSlcbiAgICAgICA7IFsgKG1hdGNoIGV4biB3aXRoXG4gICAgICAgICAgICAgfCBGYWlsdXJlIHggLT4gQXRvbSB4XG4gICAgICAgICAgICAgfCBfIC0+IENvbnYuc2V4cF9vZl9leG4gZXhuKVxuICAgICAgICAgXVxuICAgICAgIDsgKG1hdGNoIGludmFsaWRfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImludmFsaWRfc2V4cFwiOyB4IF0gXSlcbiAgICAgICA7IChtYXRjaCBjb250YWluaW5nX3NleHAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgTGlzdCBbIEF0b20gXCJjb250YWluaW5nX3NleHBcIjsgeCBdIF0pXG4gICAgICAgXSlcbjs7XG5cbigqIFBhcnRpYWwgcGFyc2luZyAqKVxuXG5tb2R1bGUgQW5ub3QgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBQYXJzZXhwLlBvc2l0aW9ucy5wb3MgPVxuICAgIHsgbGluZSA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgOyBvZmZzZXQgOiBpbnRcbiAgICB9XG5cbiAgdHlwZSByYW5nZSA9IFBhcnNleHAuUG9zaXRpb25zLnJhbmdlID1cbiAgICB7IHN0YXJ0X3BvcyA6IHBvc1xuICAgIDsgZW5kX3BvcyA6IHBvc1xuICAgIH1cblxuICB0eXBlIHQgPVxuICAgIHwgQXRvbSBvZiByYW5nZSAqIFR5cGUudFxuICAgIHwgTGlzdCBvZiByYW5nZSAqIHQgbGlzdCAqIFR5cGUudFxuXG4gIHR5cGUgJ2EgY29udiA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgRXJyb3Igb2YgZXhuICogdFxuICAgIF1cblxuICBleGNlcHRpb24gQ29udl9leG4gb2Ygc3RyaW5nICogZXhuXG5cbiAgbGV0ICgpID1cbiAgICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDb252X2V4bl0gKGZ1bmN0aW9uXG4gICAgICB8IENvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSAtPiBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+bG9jYXRpb24gfmV4blxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICB0eXBlIHN0YWNrID1cbiAgICB7IG11dGFibGUgcG9zaXRpb25zIDogcG9zIGxpc3RcbiAgICA7IG11dGFibGUgc3RhY2sgOiB0IGxpc3QgbGlzdFxuICAgIH1cblxuICBsZXQgZ2V0X3NleHAgPSBmdW5jdGlvblxuICAgIHwgQXRvbSAoXywgc2V4cCkgfCBMaXN0IChfLCBfLCBzZXhwKSAtPiBzZXhwXG4gIDs7XG5cbiAgbGV0IGdldF9yYW5nZSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChyYW5nZSwgXykgfCBMaXN0IChyYW5nZSwgXywgXykgLT4gcmFuZ2VcbiAgOztcblxuICBsZXQgc2V4cF9vZl9jb252IHNleHBfb2ZfYSA9IGZ1bmN0aW9uXG4gICAgfCBgUmVzdWx0IGEgLT4gVHlwZS5MaXN0IFsgQXRvbSBcIlJlc3VsdFwiOyBhIHw+IHNleHBfb2ZfYSBdXG4gICAgfCBgRXJyb3IgKGV4biwgdCkgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwiRXJyb3JcIjsgTGlzdCBbIGV4biB8PiBDb252LnNleHBfb2ZfZXhuOyB0IHw+IGdldF9zZXhwIF0gXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBBbm5vdF9zZXhwIG9mIHRcblxuICBsZXQgZmluZF9zZXhwIGFubm90X3NleHAgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIGFubm90X3NleHAgPVxuICAgICAgbWF0Y2ggYW5ub3Rfc2V4cCB3aXRoXG4gICAgICB8IChBdG9tIChfLCBzdWJfc2V4cCkgfCBMaXN0IChfLCBfLCBzdWJfc2V4cCkpIHdoZW4gc2V4cCA9PSBzdWJfc2V4cCAtPlxuICAgICAgICByYWlzZSAoQW5ub3Rfc2V4cCBhbm5vdF9zZXhwKVxuICAgICAgfCBMaXN0IChfLCBhbm5vdHMsIF8pIC0+IExpc3QuaXRlciBsb29wIGFubm90c1xuICAgICAgfCBBdG9tIF8gLT4gKClcbiAgICBpblxuICAgIHRyeVxuICAgICAgbG9vcCBhbm5vdF9zZXhwO1xuICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IEFubm90X3NleHAgcmVzIC0+IFNvbWUgcmVzXG4gIDs7XG5lbmRcblxubGV0ICgpID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIChBbm5vdC5Db252X2V4biAobG9jYXRpb24sIGV4biksIGludmFsaWRfc2V4cCkgLT5cbiAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4biwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmludmFsaWRfc2V4cCB+ZXhuXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZV9wb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgdGV4dF9saW5lIDogaW50XG4gICAgOyBtdXRhYmxlIHRleHRfY2hhciA6IGludFxuICAgIDsgbXV0YWJsZSBnbG9iYWxfb2Zmc2V0IDogaW50XG4gICAgOyBtdXRhYmxlIGJ1Zl9wb3MgOiBpbnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/KHRleHRfbGluZSA9IDEpID8odGV4dF9jaGFyID0gMCkgPyhidWZfcG9zID0gMCkgPyhnbG9iYWxfb2Zmc2V0ID0gMCkgKCkgPVxuICAgIGxldCBmYWlsIG1zZyA9IGZhaWx3aXRoIChcIlNleHBsaWIuU2V4cC5QYXJzZV9wb3MuY3JlYXRlOiBcIiBeIG1zZykgaW5cbiAgICBpZiB0ZXh0X2xpbmUgPCAxXG4gICAgdGhlbiBmYWlsIFwidGV4dF9saW5lIDwgMVwiXG4gICAgZWxzZSBpZiB0ZXh0X2NoYXIgPCAwXG4gICAgdGhlbiBmYWlsIFwidGV4dF9jaGFyIDwgMFwiXG4gICAgZWxzZSBpZiBnbG9iYWxfb2Zmc2V0IDwgMFxuICAgIHRoZW4gZmFpbCBcImdsb2JhbF9vZmZzZXQgPCAwXCJcbiAgICBlbHNlIGlmIGJ1Zl9wb3MgPCAwXG4gICAgdGhlbiBmYWlsIFwiYnVmX3BvcyA8IDBcIlxuICAgIGVsc2UgeyB0ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9XG4gIDs7XG5cbiAgbGV0IHdpdGhfYnVmX3BvcyB0IGJ1Zl9wb3MgPSB7IHQgd2l0aCBidWZfcG9zIH1cbmVuZFxuXG5tb2R1bGUgQ29udF9zdGF0ZSA9IFBhcnNleHAuT2xkX3BhcnNlcl9jb250X3N0YXRlXG5cbnR5cGUgKCdhLCAndCkgcGFyc2VfcmVzdWx0ID1cbiAgfCBEb25lIG9mICd0ICogUGFyc2VfcG9zLnRcbiAgfCBDb250IG9mIENvbnRfc3RhdGUudCAqICgnYSwgJ3QpIHBhcnNlX2Z1blxuXG5hbmQgKCdhLCAndCkgcGFyc2VfZnVuID0gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+ICgnYSwgJ3QpIHBhcnNlX3Jlc3VsdFxuXG50eXBlICd0IHBhcnNlX3N0YXRlID0geyBwYXJzZV9wb3MgOiBQYXJzZV9wb3MudCB9XG5cbnR5cGUgcGFyc2VfZXJyb3IgPVxuICB7IGVycl9tc2cgOiBzdHJpbmdcbiAgOyBwYXJzZV9zdGF0ZSA6IFsgYFNleHAgb2YgdCBsaXN0IGxpc3QgcGFyc2Vfc3RhdGUgfCBgQW5ub3Qgb2YgQW5ub3Quc3RhY2sgcGFyc2Vfc3RhdGUgXVxuICB9XG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiBwYXJzZV9lcnJvclxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzZV9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBwZSAtPlxuICAgICAgbGV0IHBwb3MgPVxuICAgICAgICBtYXRjaCBwZS5wYXJzZV9zdGF0ZSB3aXRoXG4gICAgICAgIHwgYFNleHAgeyBwYXJzZV9wb3MgfSB8IGBBbm5vdCB7IHBhcnNlX3BvcyB9IC0+IHBhcnNlX3Bvc1xuICAgICAgaW5cbiAgICAgIExpc3RcbiAgICAgICAgWyBBdG9tIFwiU2V4cGxpYi5TZXhwLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgOyBMaXN0XG4gICAgICAgICAgICBbIExpc3QgWyBBdG9tIFwiZXJyX21zZ1wiOyBBdG9tIHBlLmVycl9tc2cgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcInRleHRfbGluZVwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLnRleHRfbGluZSBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9jaGFyXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9jaGFyIF1cbiAgICAgICAgICAgIDsgTGlzdFxuICAgICAgICAgICAgICAgIFsgQXRvbSBcImdsb2JhbF9vZmZzZXRcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0IF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJidWZfcG9zXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuYnVmX3BvcyBdXG4gICAgICAgICAgICBdXG4gICAgICAgIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlcl9vdXRwdXQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhcmVfc2V4cCA6IFQgd2l0aCB0eXBlIG91dHB1dCA9IFR5cGUudFxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEkgPSBQYXJzZXhwLlBvc2l0aW9ucy5JdGVyYXRvclxuXG4gIGxldCByZWMgYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgVHlwZS5BdG9tIF8gLT5cbiAgICAgIGxldCBzdGFydF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgbGV0IGVuZF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgQW5ub3QuQXRvbSAoeyBzdGFydF9wb3M7IGVuZF9wb3MgfSwgc2V4cClcbiAgICB8IFR5cGUuTGlzdCBsIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHBfbGlzdCBsIGl0ZXIgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90Lkxpc3QgKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIGFubm90LCBzZXhwKVxuXG4gIGFuZCBhbm5vdGF0ZV9zZXhwX2xpc3Qgc2V4cHMgaXRlciA9XG4gICAgTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIpIHNleHBzKVxuICA7O1xuXG4gIG1vZHVsZSBCYXJlX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJcblxuICAgIHR5cGUgb3V0cHV0ID0gVHlwZS50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIHNleHAgPSByYWlzZV9ub3RyYWNlIChGb3VuZCBzZXhwKVxuICBlbmRcblxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJfYW5kX3Bvc2l0aW9uc1xuXG4gICAgdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIChzZXhwLCBwb3NpdGlvbnMpID1cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHAgc2V4cCAoSS5jcmVhdGUgcG9zaXRpb25zKSBpblxuICAgICAgcmFpc2Vfbm90cmFjZSAoRm91bmQgYW5ub3QpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfcGFyc2VyIChUIDogc2lnXG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LlRcblxuICAgIHR5cGUgaW5wdXRcblxuICAgIHZhbCBsZW5ndGggOiBpbnB1dCAtPiBpbnRcblxuICAgIHZhbCB1bnNhZmVfZmVlZF9sb29wXG4gICAgICA6ICBJbXBsLlN0YXRlLnRcbiAgICAgIC0+IEltcGwuU3RhY2sudFxuICAgICAgLT4gaW5wdXRcbiAgICAgIC0+IG1heF9wb3M6aW50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgcGFyc2VcbiAgICA6ICA/cGFyc2VfcG9zOlBhcnNlX3Bvcy50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiBULmlucHV0XG4gICAgLT4gKFQuaW5wdXQsIFQub3V0cHV0KSBwYXJzZV9yZXN1bHRcbmVuZCA9IHN0cnVjdFxuICBsZXQgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIGJ1Zl9wb3MgPVxuICAgIHsgUGFyc2VfcG9zLnRleHRfbGluZSA9IFQuSW1wbC5TdGF0ZS5saW5lIHN0YXRlXG4gICAgOyBQYXJzZV9wb3MudGV4dF9jaGFyID0gVC5JbXBsLlN0YXRlLmNvbHVtbiBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmdsb2JhbF9vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlXG4gICAgOyBQYXJzZV9wb3MuYnVmX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zIDwgMFwiO1xuICAgIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBsZW4gPCAwXCI7XG4gICAgbGV0IHN0cl9sZW4gPSBULmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcG9zX2xlbiA9IHBvcyArIGxlbiBpblxuICAgIGlmIHBvc19sZW4gPiBzdHJfbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zICsgbGVuID4gc3RyX2xlblwiO1xuICAgIHBvc19sZW4gLSAxXG4gIDs7XG5cbiAgbGV0IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2cgPVxuICAgIGxldCBwYXJzZV9zdGF0ZSA9IHsgcGFyc2VfcG9zID0gcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIHBvcyB9IGluXG4gICAgbGV0IHBhcnNlX2Vycm9yID0geyBlcnJfbXNnID0gbXNnOyBwYXJzZV9zdGF0ZSA9IGBTZXhwIHBhcnNlX3N0YXRlIH0gaW5cbiAgICByYWlzZSAoUGFyc2VfZXJyb3IgcGFyc2VfZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9wYXJzZXhwX2Vycm9yIHN0YXRlIHBvcyBlID1cbiAgICBsZXQgbXNnID0gUGFyc2V4cC5QYXJzZV9lcnJvci5tZXNzYWdlIGUgaW5cbiAgICBtYXRjaCBQYXJzZXhwLlBhcnNlX2Vycm9yLlByaXZhdGUub2xkX3BhcnNlcl9leG4gZSB3aXRoXG4gICAgfCBgUGFyc2VfZXJyb3IgLT4gcmFpc2VfcGFyc2VfZXJyb3Igc3RhdGUgcG9zIG1zZ1xuICAgIHwgYEZhaWx1cmUgLT4gZmFpbHdpdGggbXNnXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIH5wb3MgfmxlbiBzdHIgPVxuICAgIGxldCBtYXhfcG9zID0gY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyIGluXG4gICAgbGV0IHByZXZpb3VzX29mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICBtYXRjaCBULnVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3Mgd2l0aFxuICAgIHwgc3RhY2sgLT4gbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFja1xuICAgIHwgZXhjZXB0aW9uIFQuRm91bmQgcmVzdWx0IC0+XG4gICAgICBsZXQgb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSBpblxuICAgICAgbGV0IG5leHRfcG9zID0gcG9zICsgKG9mZnNldCAtIHByZXZpb3VzX29mZnNldCkgaW5cbiAgICAgIERvbmUgKHJlc3VsdCwgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIG5leHRfcG9zKVxuICAgIHwgZXhjZXB0aW9uIFBhcnNleHAuUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZXJyIC0+XG4gICAgICBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSAocG9zICsgKFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgLSBwcmV2aW91c19vZmZzZXQpKSBlcnJcblxuICBhbmQgbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFjayA9XG4gICAgbGV0IHBhcnNlX2Z1biA9XG4gICAgICBsZXQgdXNlZF9yZWYgPSByZWYgZmFsc2UgaW5cbiAgICAgIGZ1biB+cG9zIH5sZW4gc3RyIC0+XG4gICAgICAgIGlmICF1c2VkX3JlZlxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwOiBwYXJzZXIgY29udGludWF0aW9uIGNhbGxlZCB0d2ljZVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHVzZWRfcmVmIDo9IHRydWU7XG4gICAgICAgICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyKVxuICAgIGluXG4gICAgbGV0IGNvbnRfc3RhdGUgPSBULkltcGwuU3RhdGUub2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIGluXG4gICAgQ29udCAoY29udF9zdGF0ZSwgcGFyc2VfZnVuKVxuICA7O1xuXG4gIGxldCBwYXJzZSA/KHBhcnNlX3BvcyA9IFBhcnNlX3Bvcy5jcmVhdGUgKCkpID9sZW4gc3RyID1cbiAgICBsZXQgcG9zLCBidWZfcG9zID1cbiAgICAgIGxldCB7IFBhcnNlX3Bvcy50ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9ID0gcGFyc2VfcG9zIGluXG4gICAgICAoIHsgUGFyc2V4cC5Qb3NpdGlvbnMubGluZSA9IHRleHRfbGluZTsgY29sID0gdGV4dF9jaGFyOyBvZmZzZXQgPSBnbG9iYWxfb2Zmc2V0IH1cbiAgICAgICwgYnVmX3BvcyApXG4gICAgaW5cbiAgICBsZXQgc3RhdGUgPSBULkltcGwuU3RhdGUuY3JlYXRlIH5wb3Mgfm5vX3NleHBfaXNfZXJyb3I6ZmFsc2UgVC5yYWlzZV9mb3VuZCBpblxuICAgIGxldCBzdGFjayA9IFQuSW1wbC5TdGFjay5lbXB0eSBpblxuICAgIGxldCBsZW4gPVxuICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgIHwgTm9uZSAtPiBULmxlbmd0aCBzdHIgLSBidWZfcG9zXG4gICAgaW5cbiAgICBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+cG9zOmJ1Zl9wb3MgfmxlblxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0ciA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxubGV0IHBhcnNlID0gU3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBTdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2Vfc3RyX2Fubm90ID0gU3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG5tb2R1bGUgQmlnc3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBiaWdzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgKHN0ciA6IGlucHV0KSB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChBcnJheTEudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgPSBCaWdzdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkFubm90YXRlZF9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nX2Fubm90ID0gQmlnc3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgKilcblxubGV0IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSA9XG4gICgpO1xuICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgIGxldCBwYXJzZV9wb3MgPVxuICAgICAgbWF0Y2ggcGFyc2VfcG9zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzZV9wb3MuY3JlYXRlIH5idWZfcG9zOnBvcyAoKVxuICAgICAgfCBTb21lIHBhcnNlX3BvcyAtPlxuICAgICAgICBwYXJzZV9wb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgPC0gcG9zO1xuICAgICAgICBwYXJzZV9wb3NcbiAgICBpblxuICAgIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOihTb21lIGxlbikgc3RyXG47O1xuXG4oKiBbd3NfYnVmXSBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyICopXG5sZXQgZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiA9XG4gICgqIFdoZW4gcGFyc2luZyBhdG9tcywgdGhlIGluY3JlbWVudGFsIHBhcnNlciBjYW5ub3QgdGVsbCB3aGV0aGVyXG4gICAgIGl0IGlzIGF0IHRoZSBlbmQgdW50aWwgaXQgaGl0cyB3aGl0ZXNwYWNlLiAgV2UgdGhlcmVmb3JlIGZlZWQgaXRcbiAgICAgb25lIHNwYWNlIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGZpbmlzaGVkLiAqKVxuICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgd3NfYnVmIHdpdGhcbiAgfCBEb25lIChzZXhwLCBfKSAtPiBPayBzZXhwXG4gIHwgQ29udCAoY29udF9zdGF0ZSwgXykgLT4gRXJyb3IgY29udF9zdGF0ZVxuOztcblxubGV0IGdlbl9pbnB1dF9zZXhwIG15X3BhcnNlID9wYXJzZV9wb3MgaWMgPVxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+XG4gICAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgICB8IEVycm9yIF8gLT4gcmFpc2UgRW5kX29mX2ZpbGUpXG4gICAgfCBjIC0+XG4gICAgICBCeXRlcy5zZXQgYnVmIDAgYztcbiAgICAgIChtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIGxvb3AgKG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSlcbjs7XG5cbmxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG5cbmxldCBnZW5faW5wdXRfcmV2X3NleHBzIG15X3BhcnNlIH53c19idWYgP3BhcnNlX3BvcyA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBpYyA9XG4gIGxldCByZXZfc2V4cHNfcmVmID0gcmVmIFtdIGluXG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIC0+XG4gICAgICAgIHJldl9zZXhwc19yZWYgOj0gc2V4cCA6OiAhcmV2X3NleHBzX3JlZjtcbiAgICAgICAgbGV0IG5fcGFyc2VkID0gYnVmX3BvcyAtIHBvcyBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBpZiBuX3BhcnNlZCA9IGxlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV3X2xlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICAgICAgICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46bmV3X2xlbilcbiAgICAgICAgZWxzZSBsb29wIHRoaXNfcGFyc2UgfnBvczpidWZfcG9zIH5sZW46KGxlbiAtIG5fcGFyc2VkKVxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46KGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4pKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cCA6OiAhcmV2X3NleHBzX3JlZlxuICAgICAgfCBFcnJvciBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgIChcIlNleHBsaWIuU2V4cC5pbnB1dF9yZXZfc2V4cHM6IHJlYWNoZWQgRU9GIHdoaWxlIGluIHN0YXRlIFwiXG4gICAgICAgICAgIF4gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSkpXG4gIGluXG4gIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gIGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlblxuOztcblxubGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICBnZW5faW5wdXRfcmV2X3NleHBzIHBhcnNlIH53c19idWY6XCIgXCIgP3BhcnNlX3BvcyA/YnVmIGljXG47O1xuXG5sZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbigqIG9mX3N0cmluZyBhbmQgb2ZfYmlnc3RyaW5nICopXG5cbmxldCBvZl9zdHJpbmdfYmlnc3RyaW5nIGxvYyBteV9wYXJzZSB3c19idWYgZ2V0X2xlbiBnZXRfc3ViIHN0ciA9XG4gIG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6Tm9uZSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgfCBEb25lIChzZXhwLCBwYXJzZV9wb3MpIC0+XG4gICAgKG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgICAgfCBEb25lIChfc2V4cDIsIF8pIC0+XG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogZ290IG11bHRpcGxlIFMtZXhwcmVzc2lvbnMgd2hlcmUgb25seSBvbmUgd2FzIGV4cGVjdGVkLlwiXG4gICAgICAgICAgICBsb2MpXG4gICAgIHwgQ29udCAoQ29udF9zdGF0ZS5QYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIF8pIC0+IHNleHBcbiAgICAgfCBDb250IChfLCBfKSAtPlxuICAgICAgICgqIG5vdCB1c2luZyBbZmVlZF9lbmRfb2ZfaW5wdXRdIGhlcmUgbWVhbnMgXCJhIGJcIiB3aWxsIGVuZCB1cCBoZXJlIGFuZCBub3QgaW5cbiAgICAgICAgICBcIm11bHRpcGxlIFMtZXhwcmVzc2lvbnNcIiBicmFuY2gsIGJ1dCBpdCBkb2Vzbid0IG1hdHRlciB0aGF0IG11Y2ggKilcbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBTLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YSBhdCBwb3NpdGlvbiAlZC4uLlwiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIHBhcnNlX3Bvcy5idWZfcG9zKSlcbiAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPlxuICAgIChtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmIHdpdGhcbiAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgbGV0IGNvbnRfc3RhdGVfc3RyID0gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSBpblxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGluY29tcGxldGUgUy1leHByZXNzaW9uIHdoaWxlIGluIHN0YXRlICVzOiAlc1wiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGNvbnRfc3RhdGVfc3RyXG4gICAgICAgICAgICAoZ2V0X3N1YiBzdHIgMCAoZ2V0X2xlbiBzdHIpKSkpXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHN0ciA9IG9mX3N0cmluZ19iaWdzdHJpbmcgXCJvZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG5sZXQgb2Zfc3RyaW5nX21hbnkgc3RyID0gUGFyc2V4cC5NYW55LnBhcnNlX3N0cmluZ19leG4gc3RyXG5cbmxldCBnZXRfYnN0cl9zdWJfc3RyIGJzdHIgcG9zIGxlbiA9XG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue3BvcyArIGl9XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG47O1xuXG5sZXQgYnN0cl93c19idWYgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgMVxubGV0ICgpID0gYnN0cl93c19idWYuezB9IDwtICcgJ1xuXG5sZXQgb2ZfYmlnc3RyaW5nIGJzdHIgPVxuICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgXCJvZl9iaWdzdHJpbmdcIlxuICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgIGJzdHJfd3NfYnVmXG4gICAgQXJyYXkxLmRpbVxuICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICBic3RyXG47O1xuXG4oKiBMb2FkaW5nICopXG5cbmxldCBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICB0cnlcbiAgICBsZXQgc2V4cHMgPSBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvczpOb25lID9idWYgaWMgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwc1xuICB3aXRoXG4gIHwgZXhjIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZXhjXG47O1xuXG5sZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbmxldCBsb2FkX3NleHBzID9idWYgZmlsZSA9IExpc3QucmV2IChsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUpXG5sZXQgZ2VuX2xvYWRfc2V4cF9sb2MgPSBcIlNleHBsaWIuU2V4cC5nZW5fbG9hZF9zZXhwXCJcblxubGV0IGdlbl9sb2FkX3NleHAgbXlfcGFyc2UgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlID1cbiAgbGV0IGJ1Zl9sZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSA9XG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmOlwiIFwiIHdpdGhcbiAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIFwiJXM6IEVPRiBpbiAlcyB3aGlsZSBpbiBzdGF0ZSAlc1wiXG4gICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICB8IERvbmUgKHNleHAsICh7IFBhcnNlX3Bvcy5idWZfcG9zOyBfIH0gYXMgcGFyc2VfcG9zKSkgd2hlbiBzdHJpY3QgLT5cbiAgICAgICAgbGV0IHJlYyBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3MgfmxlbiA9XG4gICAgICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgICAgfCBEb25lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChzcHJpbnRmIFwiJXM6IG1vcmUgdGhhbiBvbmUgUy1leHByZXNzaW9uIGluIGZpbGUgJXNcIiBnZW5fbG9hZF9zZXhwX2xvYyBmaWxlKVxuICAgICAgICAgIHwgQ29udCAoY29udF9zdGF0ZSwgdGhpc19wYXJzZSkgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgICBpZiBsZW4gPiAwXG4gICAgICAgICAgICB0aGVuIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbiAgICAgICAgICAgIGVsc2UgaWYgY29udF9zdGF0ZSA9IENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICAgICAgICAgICB0aGVuIHNleHBcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiJXM6ICVzIGluIHN0YXRlICVzIGxvYWRpbmcgZmlsZSAlc1wiXG4gICAgICAgICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICAgICAgICBcImFkZGl0aW9uYWwgaW5jb21wbGV0ZSBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAoQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSlcbiAgICAgICAgICAgICAgICAgICBmaWxlKVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBidWZfcG9zKVxuICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHAgPSBsb29wIChta190aGlzX3BhcnNlIG15X3BhcnNlKSBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHNleHBcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxubW9kdWxlIEFubm90YXRlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEFubm90XG5cbiAgbGV0IHBhcnNlID0gcGFyc2Vfc3RyX2Fubm90XG4gIGxldCBwYXJzZV9iaWdzdHJpbmcgPSBwYXJzZV9iaWdzdHJpbmdfYW5ub3RcblxuICBsZXQgaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9XG4gICAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuICA7O1xuXG4gIGxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG4gIGxldCBpbnB1dF9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPSBMaXN0LnJldiAoaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYylcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZyBcIkFubm90YXRlZC5vZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG4gIDs7XG5cbiAgbGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgICBcIkFubm90YXRlZC5vZl9iaWdzdHJpbmdcIlxuICAgICAgcGFyc2VfYmlnc3RyaW5nXG4gICAgICBic3RyX3dzX2J1ZlxuICAgICAgQXJyYXkxLmRpbVxuICAgICAgZ2V0X2JzdHJfc3ViX3N0clxuICAgICAgYnN0clxuICA7O1xuXG4gIGxldCBsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUgPSBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZVxuICBsZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxuICBsZXQgbG9hZF9zZXhwID9zdHJpY3QgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfc2V4cCBwYXJzZSA/c3RyaWN0ID9idWYgZmlsZVxuXG4gIGxldCBjb252IGYgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHNleHAgPSBnZXRfc2V4cCBhbm5vdF9zZXhwIGluXG4gICAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBiYWRfc2V4cCkgYXMgZSAtPlxuICAgICAgKG1hdGNoIGZpbmRfc2V4cCBhbm5vdF9zZXhwIGJhZF9zZXhwIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gcmFpc2UgZVxuICAgICAgIHwgU29tZSBiYWRfYW5ub3Rfc2V4cCAtPiBgRXJyb3IgKGV4YywgYmFkX2Fubm90X3NleHApKVxuICA7O1xuXG4gIGxldCBnZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwID1cbiAgICBsZXQgcmFuZ2UgPSBnZXRfcmFuZ2UgYW5ub3Rfc2V4cCBpblxuICAgIGxldCB7IHN0YXJ0X3BvcyA9IHsgbGluZTsgY29sOyBvZmZzZXQgPSBfIH07IGVuZF9wb3MgPSBfIH0gPSByYW5nZSBpblxuICAgIGxldCBsb2MgPSBzcHJpbnRmIFwiJXM6JWQ6JWRcIiBmaWxlIGxpbmUgY29sIGluXG4gICAgT2Zfc2V4cF9lcnJvciAoQW5ub3QuQ29udl9leG4gKGxvYywgZXhjKSwgZ2V0X3NleHAgYW5ub3Rfc2V4cClcbiAgOztcbmVuZFxuXG5sZXQgbG9hZF9zZXhwX2NvbnYgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgc2V4cCA9IGxvYWRfc2V4cCB+c3RyaWN0IH5idWYgZmlsZSBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKEFubm90YXRlZC5sb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUpXG47O1xuXG5sZXQgcmFpc2VfY29udl9leG4gfmZpbGUgPSBmdW5jdGlvblxuICB8IGBSZXN1bHQgcmVzIC0+IHJlc1xuICB8IGBFcnJvciAoZXhjLCBhbm5vdF9zZXhwKSAtPiByYWlzZSAoQW5ub3RhdGVkLmdldF9jb252X2V4biB+ZmlsZSB+ZXhjIGFubm90X3NleHApXG47O1xuXG5sZXQgbG9hZF9zZXhwX2NvbnZfZXhuID9zdHJpY3QgP2J1ZiBmaWxlIGYgPVxuICByYWlzZV9jb252X2V4biB+ZmlsZSAobG9hZF9zZXhwX2NvbnYgP3N0cmljdCA/YnVmIGZpbGUgZilcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnYgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHJldl9zZXhwcyA9IGxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSBpblxuICB0cnkgTGlzdC5yZXZfbWFwIChmdW4gc2V4cCAtPiBgUmVzdWx0IChmIHNleHApKSByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwIChmdW4gYW5ub3Rfc2V4cCAtPiBBbm5vdGF0ZWQuY29udiBmIGFubm90X3NleHApIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnZfZXhuID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCBmIHJldl9zZXhwcyB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT5cbiAgICAobWF0Y2ggQW5ub3RhdGVkLmxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSB3aXRoXG4gICAgIHwgW10gLT5cbiAgICAgICAoKiBGaWxlIGlzIG5vdyBlbXB0eSAtIHBlcmhhcHMgaXQgd2FzIGEgdGVtcG9yYXJ5IGZpbGUgaGFuZGxlPyAqKVxuICAgICAgIHJhaXNlIGVcbiAgICAgfCByZXZfYW5ub3Rfc2V4cHMgLT5cbiAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgIChmdW4gYW5ub3Rfc2V4cCAtPiByYWlzZV9jb252X2V4biB+ZmlsZSAoQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSlcbiAgICAgICAgIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIGFubm90X29mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKGFubm90X29mX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnYgc3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIEFubm90YXRlZC5vZl9zdHJpbmcgc3RyIGZcblxubGV0IG9mX2JpZ3N0cmluZ19jb252IGJzdHIgZiA9XG4gIGdlbl9vZl9zdHJpbmdfY29udiBvZl9iaWdzdHJpbmcgQW5ub3RhdGVkLm9mX2JpZ3N0cmluZyBic3RyIGZcbjs7XG5cbm1vZHVsZSBPZl9zdHJpbmdfY29udl9leG4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGV4YyA6IGV4blxuICAgIDsgc2V4cCA6IFR5cGUudFxuICAgIDsgc3ViX3NleHAgOiBUeXBlLnRcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEUgb2YgdFxuXG4gIGxldCAoKSA9XG4gICAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRV0gKGZ1bmN0aW9uXG4gICAgICB8IEUgb3NjZSAtPlxuICAgICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZVxuICAgICAgICAgICgpXG4gICAgICAgICAgfmludmFsaWRfc2V4cDpvc2NlLnN1Yl9zZXhwXG4gICAgICAgICAgfmV4bjpvc2NlLmV4Y1xuICAgICAgICAgIH5jb250YWluaW5nX3NleHA6b3NjZS5zZXhwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuZW5kXG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgZiBzZXhwIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHN1Yl9zZXhwKSAtPlxuICAgIHJhaXNlIChPZl9zdHJpbmdfY29udl9leG4uRSB7IE9mX3N0cmluZ19jb252X2V4bi5leGM7IHNleHA7IHN1Yl9zZXhwIH0pXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnZfZXhuIHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGZcbmxldCBvZl9iaWdzdHJpbmdfY29udl9leG4gYnN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9iaWdzdHJpbmcgYnN0ciBmXG5cbmxldCBvZl9zdHJpbmdfbWFueV9jb252X2V4biBzdHIgZiA9XG4gIGxldCBzZXhwcyA9IG9mX3N0cmluZ19tYW55IHN0ciBpblxuICBMaXN0Lm1hcCAoZnVuIHNleHAgLT4gZ2VuX29mX3N0cmluZ19jb252X2V4biAoZnVuIHggLT4geCkgc2V4cCBmKSBzZXhwc1xuOztcblxuKCogVXRpbGl0aWVzIGZvciBhdXRvbWF0ZWQgdHlwZSBjb252ZXJzaW9ucyAqKVxuXG5sZXQgdW5pdCA9IExpc3QgW11cblxubGV0IGlzX3VuaXQgPSBmdW5jdGlvblxuICB8IExpc3QgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmV4dGVybmFsIHNleHBfb2ZfdCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRfb2Zfc2V4cCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuKCogVXRpbGl0aWVzIGZvciBjb252ZXJzaW9uIGVycm9yIGhhbmRsaW5nICopXG5cbnR5cGUgZm91bmQgPVxuICBbIGBGb3VuZFxuICB8IGBQb3Mgb2YgaW50ICogZm91bmRcbiAgXVxuXG50eXBlIHNlYXJjaF9yZXN1bHQgPVxuICBbIGBOb3RfZm91bmRcbiAgfCBmb3VuZFxuICBdXG5cbmxldCByZWMgc2VhcmNoX3BoeXNpY2FsIHNleHAgfmNvbnRhaW5lZCA9XG4gIGlmIHNleHAgPT0gY29udGFpbmVkXG4gIHRoZW4gYEZvdW5kXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSBfIC0+IGBOb3RfZm91bmRcbiAgICB8IExpc3QgbHN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYE5vdF9mb3VuZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCByZXMgPSBzZWFyY2hfcGh5c2ljYWwgaCB+Y29udGFpbmVkIGluXG4gICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgIHwgYE5vdF9mb3VuZCAtPiBsb29wIChpICsgMSkgdFxuICAgICAgICAgICB8ICNmb3VuZCBhcyBmb3VuZCAtPiBgUG9zIChpLCBmb3VuZCkpXG4gICAgICBpblxuICAgICAgbG9vcCAwIGxzdClcbjs7XG5cbmxldCByZWMgc3Vic3RfZm91bmQgc2V4cCB+c3Vic3QgPSBmdW5jdGlvblxuICB8IGBGb3VuZCAtPiBzdWJzdFxuICB8IGBQb3MgKHBvcywgZm91bmQpIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IEF0b20gXyAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogYXRvbSB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgIHwgTGlzdCBsc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgYWNjIHBvcyA9IGZ1bmN0aW9uXG4gICAgICAgICB8IFtdIC0+IGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwLnN1YnN0X2ZvdW5kOiBzaG9ydCBsaXN0IHdoZW4gcG9zaXRpb24gcmVxdWVzdGVkXCJcbiAgICAgICAgIHwgaCA6OiB0IHdoZW4gcG9zIDw+IDAgLT4gbG9vcCAoaCA6OiBhY2MpIChwb3MgLSAxKSB0XG4gICAgICAgICB8IGggOjogdCAtPiBMaXN0IChMaXN0LnJldl9hcHBlbmQgYWNjIChzdWJzdF9mb3VuZCBoIH5zdWJzdCBmb3VuZCA6OiB0KSlcbiAgICAgICBpblxuICAgICAgIGxvb3AgW10gcG9zIGxzdClcbjs7XG4iLCIoKiBwYWNrYWdpbmcgb2YgYW5ub3RhdGVkIHNleHAgZnVuY3Rpb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgZiB0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbmluY2x1ZGUgVHlwZV93aXRoX2xheW91dFxuXG50eXBlIHBvcyA9IFNyY19wb3MuUmVsYXRpdmUudCA9XG4gIHsgcm93IDogaW50XG4gIDsgY29sIDogaW50XG4gIH1cblxubGV0IHNleHBfb2ZfcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZS5zZXhwX29mX3RcblxubW9kdWxlIExleGVyID0gc3RydWN0XG4gIGxldCBtYWluID0gTGV4ZXIubWFpbl93aXRoX2xheW91dFxuZW5kXG5cbm1vZHVsZSBQYXJzZXIgPSBQYXJzZXJfd2l0aF9sYXlvdXRcblxubW9kdWxlIFJlbmRlciA9IHN0cnVjdFxuICBtb2R1bGUgUmVsX3BvcyA9IFNyY19wb3MuUmVsYXRpdmVcbiAgbW9kdWxlIEFic19wb3MgPSBTcmNfcG9zLkFic29sdXRlXG5cbiAgdHlwZSBsYXN0X2F0b20gPVxuICAgIHsgaW1tZWRfYWZ0ZXIgOiBBYnNfcG9zLnRcbiAgICA7IHVuZXNjYXBlZCA6IGJvb2xcbiAgICB9XG5cbiAgdHlwZSBzdGF0ZSA9XG4gICAgeyBtdXRhYmxlIHJvd19zaGlmdCA6IFJlbF9wb3MudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50IDogQWJzX3Bvcy50XG4gICAgOyBtdXRhYmxlIGxhc3RfYXRvbSA6IGxhc3RfYXRvbSBvcHRpb25cbiAgICA7IG11dGFibGUgbGFzdF9jb21tZW50X3JvdyA6IGludFxuICAgIH1cblxuICAoKiB0aGUgcG9pbnQgb2YgW2ltbWVkX2FmdGVyX2xhc3RfYXRvbV0gaXMgdG8gcHJldmVudFxuICAgICAoQSBCIEMpIGZyb20gcmVuZGVyaW5nIGFzIChBIEJCQykgYWZ0ZXIgd2UgcmVwbGFjZSBCIHdpdGggQkIgKilcblxuICB0eXBlICdhIHQgPSAoY2hhciAtPiB1bml0KSAtPiBzdGF0ZSAtPiAnYVxuXG4gIGxldCByZXR1cm4gYSBfcHV0YyBfc3QgPSBhXG4gIGxldCBiaW5kIG0gfmYgcHV0YyBzdCA9IGYgKG0gcHV0YyBzdCkgcHV0YyBzdFxuXG4gIGxldCBydW4gcHV0YyBtID1cbiAgICBtXG4gICAgICBwdXRjXG4gICAgICB7IHJvd19zaGlmdCA9IFJlbF9wb3MuemVyb1xuICAgICAgOyBjdXJyZW50ID0gQWJzX3Bvcy5vcmlnaW5cbiAgICAgIDsgbGFzdF9hdG9tID0gTm9uZVxuICAgICAgOyBsYXN0X2NvbW1lbnRfcm93ID0gMCAoKiBiZWZvcmUgdGhlIGZpbGUgc3RhcnRzICopXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfY2hhciBwdXRjIHN0IGMgPVxuICAgIGxldCB7IEFic19wb3MuY29sOyByb3cgfSA9IHN0LmN1cnJlbnQgaW5cbiAgICBwdXRjIGM7XG4gICAgaWYgYyA9ICdcXG4nXG4gICAgdGhlbiBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3cgPSAxICsgcm93OyBjb2wgPSAxIH1cbiAgICBlbHNlIHN0LmN1cnJlbnQgPC0geyBBYnNfcG9zLnJvdzsgY29sID0gMSArIGNvbCB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfc3RyaW5nIHB1dGMgc3Qgc3RyID1cbiAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCBzdHIuW2ldXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXJzIHB1dGMgc3QgYyB+biA9IGVtaXRfc3RyaW5nIHB1dGMgc3QgKFN0cmluZy5tYWtlIG4gYylcblxuICBsZXQgYWR2YW5jZSBwdXRjIH5hbmNob3Igc3QgfmJ5OmRlbHRhIH51bmVzY2FwZWRfYXRvbSB+bGluZV9jb21tZW50ID1cbiAgICBsZXQgbmV3X3BvcyA9IEFic19wb3MuYWRkIChBYnNfcG9zLmFkZCBhbmNob3IgZGVsdGEpIHN0LnJvd19zaGlmdCBpblxuICAgIGxldCBuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d29fdW5lc2NhcGVkX2F0b21zX2xlc3RfdGhleV9iZWNvbWVfb25lID1cbiAgICAgIHVuZXNjYXBlZF9hdG9tXG4gICAgICAmJlxuICAgICAgbWF0Y2ggc3QubGFzdF9hdG9tIHdpdGhcbiAgICAgIHwgU29tZSB7IGltbWVkX2FmdGVyOyB1bmVzY2FwZWQgPSBwcmV2X3VuZXNjYXBlZCB9IC0+XG4gICAgICAgIG5ld19wb3MgPSBpbW1lZF9hZnRlciAmJiBwcmV2X3VuZXNjYXBlZFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgaW5cbiAgICAoKiBhdm9pZCBqb2luaW5nIHN1YnNlcXVlbnQgaXRlbXMgaW50byBhIHByZWNlZGluZyBsaW5lIGNvbW1lbnQgKilcbiAgICBsZXQgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnQgPSBuZXdfcG9zLnJvdyA9IHN0Lmxhc3RfY29tbWVudF9yb3cgaW5cbiAgICBsZXQgbmVlZF90b19yZXBvc2l0aW9uID1cbiAgICAgIChub3QgKEFic19wb3MuZ2VxIG5ld19wb3Mgc3QuY3VycmVudCkpXG4gICAgICB8fCBuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudFxuICAgICAgfHwgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZVxuICAgIGluXG4gICAgbGV0IHJvd19kZWx0YSwgbmV3X3BvcyA9XG4gICAgICBpZiBuZWVkX3RvX3JlcG9zaXRpb25cbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiByZXBvc2l0aW9uaW5nIGhldXJpc3RpYzoganVzdCBtb3ZlIHRvIHRoZSBuZXh0IGZyZXNoIHJvdyAqKVxuICAgICAgICBsZXQgbmV3X3JvdyA9IDEgKyBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICAgIGxldCByb3dfZGVsdGEgPSBuZXdfcm93IC0gbmV3X3Bvcy5BYnNfcG9zLnJvdyBpblxuICAgICAgICByb3dfZGVsdGEsIHsgQWJzX3Bvcy5yb3cgPSBuZXdfcm93OyBjb2wgPSBuZXdfcG9zLkFic19wb3MuY29sIH0pXG4gICAgICBlbHNlIDAsIG5ld19wb3NcbiAgICBpblxuICAgICgqIGFkdmFuY2UgdG8gbmV3X3BvcyBieSBlbWl0dGluZyB3aGl0ZXNwYWNlICopXG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLnJvdyA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3dcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLnJvdyAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3cgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnXFxuJyB+bik7XG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLmNvbCA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2xcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2wgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnICcgfm4pO1xuICAgIGFzc2VydCAobmV3X3BvcyA9IHN0LmN1cnJlbnQpO1xuICAgIGlmIGxpbmVfY29tbWVudCB0aGVuIHN0Lmxhc3RfY29tbWVudF9yb3cgPC0gc3QuY3VycmVudC5yb3c7XG4gICAgc3Qucm93X3NoaWZ0XG4gICAgPC0geyBzdC5yb3dfc2hpZnQgd2l0aCBSZWxfcG9zLnJvdyA9IHN0LnJvd19zaGlmdC5SZWxfcG9zLnJvdyArIHJvd19kZWx0YSB9XG4gIDs7XG5cbiAgbGV0IHJlYyByZW5kZXJfdCBwdXRjIH5hbmNob3IgKHN0IDogc3RhdGUpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQXRvbSAoZGVsdGEsIHRleHQsIGZtdF90ZXh0KSAtPlxuICAgICAgbGV0IGZtdF90ZXh0ID1cbiAgICAgICAgbWF0Y2ggZm10X3RleHQgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT4gUHJlX3NleHAubWFjaF9tYXliZV9lc2Nfc3RyIHRleHRcbiAgICAgICAgfCBTb21lIHRleHQgLT4gdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCB1bmVzY2FwZWQgPSBmbXRfdGV4dC5bMF0gPD4gJ1wiJyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTp1bmVzY2FwZWQgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgZm10X3RleHQ7XG4gICAgICBzdC5sYXN0X2F0b20gPC0gU29tZSB7IGltbWVkX2FmdGVyID0gc3QuY3VycmVudDsgdW5lc2NhcGVkIH1cbiAgICB8IExpc3QgKHN0YXJ0X2RlbHRhLCB0b2NzLCBlbmRfZGVsdGEpIC0+XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OnN0YXJ0X2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBsZXQgY2hpbGRfYW5jaG9yID0gQWJzX3Bvcy5zdWIgc3QuY3VycmVudCBzdC5yb3dfc2hpZnQgaW5cbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcoJztcbiAgICAgIExpc3QuaXRlciB0b2NzIH5mOihmdW4gdG9jIC0+IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOmNoaWxkX2FuY2hvciBzdCB0b2MpO1xuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTplbmRfZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcpJztcbiAgICAgICgpXG5cbiAgYW5kIHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yIHN0ID0gZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICAgIHwgQ29tbWVudCBjIC0+IHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCBjXG5cbiAgYW5kIHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBQbGFpbl9jb21tZW50IChkZWx0YSwgdGV4dCkgLT5cbiAgICAgIGxldCBsaW5lX2NvbW1lbnQgPSBTdHJpbmcubGVuZ3RoIHRleHQgPiAwICYmIHRleHQuWzBdID0gJzsnIGluXG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IHRleHRcbiAgICB8IFNleHBfY29tbWVudCAoZGVsdGEsIGNzLCB0KSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCBcIiM7XCI7XG4gICAgICBMaXN0Lml0ZXIgY3MgfmY6KHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCk7XG4gICAgICByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICA7O1xuXG4gIGxldCByZW5kZXIgYXNleHAgcHV0YyBzdCA9IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOkFic19wb3Mub3JpZ2luIHN0IGFzZXhwXG4gIGxldCBzZXhwID0gcmVuZGVyXG5lbmRcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoVHlwZS50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChUeXBlLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChUeXBlLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20gKF8sIHgsIF8pIC0+IGsgKFR5cGUuQXRvbSB4KVxuICAgICAgfCBMaXN0IChfLCB0b2NzLCBfKSAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoVHlwZS5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuIFByaW50Zlxub3BlbiBCaWdhcnJheVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm9wZW4gU2V4cFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0MzJfdmVjID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0NjRfdmVjID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYyA9IGZsb2F0NjRfdmVjXG50eXBlIGZsb2F0MzJfbWF0ID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIGZsb2F0NjRfbWF0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdCA9IGZsb2F0NjRfbWF0XG5cbmxldCBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWMgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5MS5kaW0gdmVjIGRvd250byAxIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX2Zsb2F0IHZlYy57aX0gOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfYmlnc3RyaW5nIChic3RyIDogYmlnc3RyaW5nKSA9XG4gIGxldCBuID0gQXJyYXkxLmRpbSBic3RyIGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgc3RyIGkgYnN0ci57aX1cbiAgZG9uZTtcbiAgQXRvbSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgc2V4cF9vZl9mbG9hdDMyX3ZlYyAodmVjIDogZmxvYXQzMl92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl9mbG9hdDY0X3ZlYyAodmVjIDogZmxvYXQ2NF92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl92ZWMgKHZlYyA6IHZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcblxubGV0IHNleHBfb2ZfZmxvYXRfbWF0IG1hdCA9XG4gIGxldCBtID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBuID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gICgqIEl0J3Mgc3VycHJpc2luZyB0aGF0IHdlIHNlcmlhbGl6ZSBbRm9ydHJhbl9sYXlvdXRdIG1hdHJpY2VzIGluIHJvdy1tYWpvciBvcmRlci4gSSBjYW5cbiAgICAgb25seSBzcGVjdWxhdGUgdGhhdCBpdCB3YXMgY2hvc2VuIGZvciByZWFkYWJpbGl0eS4gVGhlIGNhY2hlIHBlcmZvcm1hbmNlIGlzXG4gICAgIGlycmVsZXZhbnQgYmVjYXVzZSBwZW9wbGUgd2hvIGNhcmUgd29uJ3Qgc2VyaWFsaXplIHRvIHNleHAuICopXG4gIGZvciByb3cgPSBuIGRvd250byAxIGRvXG4gICAgZm9yIGNvbCA9IG0gZG93bnRvIDEgZG9cbiAgICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCBtYXQue2NvbCwgcm93fSA6OiAhbHN0X3JlZlxuICAgIGRvbmVcbiAgZG9uZTtcbiAgTGlzdCAoc2V4cF9vZl9pbnQgbSA6OiBzZXhwX29mX2ludCBuIDo6ICFsc3RfcmVmKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl9tYXQgKG1hdCA6IGZsb2F0MzJfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfZmxvYXQ2NF9tYXQgKG1hdCA6IGZsb2F0NjRfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfbWF0IChtYXQgOiBtYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgYmlnc3RyaW5nX3NleHBfZ3JhbW1hciA6IGJpZ3N0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5cbmxldCBiaWdzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgYnN0ciA9IEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCBsZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgYnN0ci57aX0gPC0gc3RyLltpXVxuICAgIGRvbmU7XG4gICAgYnN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0X3ZlYyBjcmVhdGVfZmxvYXRfdmVjIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IGVtcHR5X2Zsb2F0X3ZlY1xuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGxzdCBpblxuICAgIGxldCByZXMgPSBjcmVhdGVfZmxvYXRfdmVjIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMue2l9IDwtIGZsb2F0X29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSBsc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X3ZlY19vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBlbXB0eV9mbG9hdDMyX3ZlYyA9IGNyZWF0ZV9mbG9hdDMyX3ZlYyAwXG5sZXQgZW1wdHlfZmxvYXQ2NF92ZWMgPSBjcmVhdGVfZmxvYXQ2NF92ZWMgMFxubGV0IGZsb2F0MzJfdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDMyX3ZlYyBjcmVhdGVfZmxvYXQzMl92ZWNcbmxldCBmbG9hdDY0X3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDY0X3ZlYyBjcmVhdGVfZmxvYXQ2NF92ZWNcbmxldCB2ZWNfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgKE1hbnkgRmxvYXQpIH1cbmxldCBmbG9hdDMyX3ZlY19zZXhwX2dyYW1tYXIgPSB2ZWNfc2V4cF9ncmFtbWFyXG5sZXQgZmxvYXQ2NF92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxuXG5sZXQgY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzID1cbiAgaWYgZGF0YSA9IFtdIHRoZW4gcmVzIGVsc2Ugb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiB0b28gbXVjaCBkYXRhXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdF9tYXQgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgKHNtIDo6IHNuIDo6IGRhdGEpIC0+XG4gICAgbGV0IG0gPSBpbnRfb2Zfc2V4cCBzbSBpblxuICAgIGxldCBuID0gaW50X29mX3NleHAgc24gaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X21hdCBtIG4gaW5cbiAgICBpZiBtID0gMCB8fCBuID0gMFxuICAgIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3BfY29scyBjb2wgZGF0YSA9XG4gICAgICAgIGxldCB2ZWMgPSBBcnJheTIuc2xpY2VfcmlnaHQgcmVzIGNvbCBpblxuICAgICAgICBsZXQgcmVjIGxvb3Bfcm93cyByb3cgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBub3QgZW5vdWdoIGRhdGFcIiBzZXhwXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIHZlYy57cm93fSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgICAgICBpZiByb3cgPSBtXG4gICAgICAgICAgICB0aGVuIGlmIGNvbCA9IG4gdGhlbiBjaGVja190b29fbXVjaF9kYXRhIHNleHAgdCByZXMgZWxzZSBsb29wX2NvbHMgKGNvbCArIDEpIHRcbiAgICAgICAgICAgIGVsc2UgbG9vcF9yb3dzIChyb3cgKyAxKSB0XG4gICAgICAgIGluXG4gICAgICAgIGxvb3Bfcm93cyAxIGRhdGFcbiAgICAgIGluXG4gICAgICBsb29wX2NvbHMgMSBkYXRhKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgdG9vIHNob3J0XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNyZWF0ZV9mbG9hdDMyX21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dFxubGV0IGNyZWF0ZV9mbG9hdDY0X21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dFxubGV0IGZsb2F0MzJfbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQzMl9tYXRcbmxldCBmbG9hdDY0X21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5sZXQgbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQ2NF9tYXRcblxubGV0IG1hdF9zZXhwX2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoQ29ucyAoSW50ZWdlciwgQ29ucyAoSW50ZWdlciwgTWFueSBGbG9hdCkpKSB9XG47O1xuXG5sZXQgZmxvYXQzMl9tYXRfc2V4cF9ncmFtbWFyID0gbWF0X3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBzdHJpbmdfb2ZfX29mX19zZXhwX29mIHRvX3NleHAgeCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwIHgpXG5cbmxldCBvZl9zdHJpbmdfX29mX19vZl9zZXhwIG9mX3NleHAgcyA9XG4gIHRyeVxuICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgcyBpblxuICAgIG9mX3NleHAgc2V4cFxuICB3aXRoXG4gIHwgZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoc3ByaW50ZiBcIm9mX3N0cmluZyBmYWlsZWQgb24gJXMgd2l0aCAlc1wiIHMgKFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSkpKVxuOztcbiIsIm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXhwX29mX3QgPSBDb252LnNleHBfb2ZfaGFzaHRibFxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5oYXNodGJsX29mX3NleHBcbmVuZFxuXG5tb2R1bGUgTGF6eSA9IHN0cnVjdFxuICBpbmNsdWRlIExhenlcblxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2xhenlfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5sZXQgc2V4cF9vZl91bml0ID0gQ29udi5zZXhwX29mX3VuaXRcbmxldCB1bml0X29mX3NleHAgPSBDb252LnVuaXRfb2Zfc2V4cFxubGV0IHVuaXRfc2V4cF9ncmFtbWFyID0gQ29udi51bml0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYm9vbCA9IENvbnYuc2V4cF9vZl9ib29sXG5sZXQgYm9vbF9vZl9zZXhwID0gQ29udi5ib29sX29mX3NleHBcbmxldCBib29sX3NleHBfZ3JhbW1hciA9IENvbnYuYm9vbF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX3N0cmluZyA9IENvbnYuc2V4cF9vZl9zdHJpbmdcbmxldCBzdHJpbmdfb2Zfc2V4cCA9IENvbnYuc3RyaW5nX29mX3NleHBcbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyID0gQ29udi5zdHJpbmdfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9jaGFyID0gQ29udi5zZXhwX29mX2NoYXJcbmxldCBjaGFyX29mX3NleHAgPSBDb252LmNoYXJfb2Zfc2V4cFxubGV0IGNoYXJfc2V4cF9ncmFtbWFyID0gQ29udi5jaGFyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50ID0gQ29udi5zZXhwX29mX2ludFxubGV0IGludF9vZl9zZXhwID0gQ29udi5pbnRfb2Zfc2V4cFxubGV0IGludF9zZXhwX2dyYW1tYXIgPSBDb252LmludF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Zsb2F0ID0gQ29udi5zZXhwX29mX2Zsb2F0XG5sZXQgZmxvYXRfb2Zfc2V4cCA9IENvbnYuZmxvYXRfb2Zfc2V4cFxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA9IENvbnYuZmxvYXRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQzMiA9IENvbnYuc2V4cF9vZl9pbnQzMlxubGV0IGludDMyX29mX3NleHAgPSBDb252LmludDMyX29mX3NleHBcbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgPSBDb252LmludDMyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50NjQgPSBDb252LnNleHBfb2ZfaW50NjRcbmxldCBpbnQ2NF9vZl9zZXhwID0gQ29udi5pbnQ2NF9vZl9zZXhwXG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQ2NF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX25hdGl2ZWludCA9IENvbnYuc2V4cF9vZl9uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IENvbnYubmF0aXZlaW50X29mX3NleHBcbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5uYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9yZWYgPSBDb252LnNleHBfb2ZfcmVmXG5sZXQgcmVmX29mX3NleHAgPSBDb252LnJlZl9vZl9zZXhwXG5sZXQgcmVmX3NleHBfZ3JhbW1hciA9IENvbnYucmVmX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGF6eV90ID0gQ29udi5zZXhwX29mX2xhenlfdFxubGV0IGxhenlfdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX29wdGlvbiA9IENvbnYuc2V4cF9vZl9vcHRpb25cbmxldCBvcHRpb25fb2Zfc2V4cCA9IENvbnYub3B0aW9uX29mX3NleHBcbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyID0gQ29udi5vcHRpb25fc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9saXN0ID0gQ29udi5zZXhwX29mX2xpc3RcbmxldCBsaXN0X29mX3NleHAgPSBDb252Lmxpc3Rfb2Zfc2V4cFxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyID0gQ29udi5saXN0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYXJyYXkgPSBDb252LnNleHBfb2ZfYXJyYXlcbmxldCBhcnJheV9vZl9zZXhwID0gQ29udi5hcnJheV9vZl9zZXhwXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyID0gQ29udi5hcnJheV9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2V4biA9IENvbnYuc2V4cF9vZl9leG5cbmxldCBleG5fc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG4iLCJpbmNsdWRlIFNleHBfZ3JhbW1hcl9pbnRmXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5sZXQgcmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0aGVyIH50X29mX3NleHAgfnRfc2V4cF9ncmFtbWFyID1cbiAgdF9vZl9zZXhwLCB0X3NleHBfZ3JhbW1hclxuOztcbiIsIigqIFBhdGg6IE1vZHVsZSBmb3IgU3Vic3RpdHV0aW9ucyB3aXRoaW4gUy1leHByZXNzaW9ucyAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBTZXhwXG5cbnR5cGUgZWwgPVxuICB8IFBvcyBvZiBpbnRcbiAgfCBNYXRjaCBvZiBzdHJpbmcgKiBpbnRcbiAgfCBSZWMgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IGVsIGxpc3RcblxubGV0IGlsbGVnYWxfYXRvbSBsb2Mgc2V4cCA9XG4gIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBhdG9tOiAlc1wiIGxvYyAoU2V4cC50b19zdHJpbmcgc2V4cCkpXG47O1xuXG5sZXQgZXh0cmFjdF9wb3NfbHN0IGxvYyBzZXhwIGl4IGxzdCA9XG4gIGxldCByZWMgbG9vcCBhY2MgbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLiVzOiBpbGxlZ2FsIGluZGV4ICVkIGluOiAlc1wiIGxvYyBpeCBzZXhwX3N0cilcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3Vic3QgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgICB8IFNvbWUgeCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjICh4IDo6IHQpXG4gICAgICAgIGluXG4gICAgICAgIHN1YnN0LCBoKVxuICAgICAgZWxzZSBsb29wIChoIDo6IGFjYykgKG4gLSAxKSB0XG4gIGluXG4gIGxvb3AgW10gaXggbHN0XG47O1xuXG5sZXQgZXh0cmFjdF9wb3MgbiA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBsc3QgYXMgc2V4cCAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X3Bvc1wiIHNleHAgbiBsc3QgaW5cbiAgICAoZnVuIHggLT4gTGlzdCAoc3Vic3QgeCkpLCBlbFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcG9zXCIgc2V4cFxuOztcblxubGV0IGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCA9IGZ1bmN0aW9uXG4gIHwgTGlzdCAoKEF0b20gc3RyIGFzIHNleHApIDo6IGFyZ3MpIHdoZW4gc3RyID0gdGFnIC0+XG4gICAgbGV0IHN1YnN0LCBlbCA9IGV4dHJhY3RfcG9zX2xzdCBcImV4dHJhY3RfbWF0Y2hcIiAoTGlzdCBhcmdzKSBhcmdfaXggYXJncyBpblxuICAgIChmdW4gbWF5YmVfeCAtPiBMaXN0IChzZXhwIDo6IHN1YnN0IG1heWJlX3gpKSwgZWxcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICBmYWlsd2l0aCAoXCJQYXRoLmV4dHJhY3RfbWF0Y2g6IHVuZXhwZWN0ZWQgbmVzdGVkIGxpc3QgaW46IFwiIF4gc2V4cF9zdHIpXG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9tYXRjaFwiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguZXh0cmFjdF9yZWM6IGtleSBcXFwiJXNcXFwiIG5vdCBmb3VuZCBpbjogJXNcIiBrZXkgc2V4cF9zdHIpXG4gICAgICB8IExpc3QgWyAoQXRvbSBzdHIgYXMgc2V4cCk7IHYgXSA6OiByZXN0IHdoZW4gc3RyID0ga2V5IC0+XG4gICAgICAgIGxldCBzdWJzdCB4ID0gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoTGlzdCBbIHNleHA7IHggXSA6OiByZXN0KSkgaW5cbiAgICAgICAgc3Vic3QsIHZcbiAgICAgIHwgaCA6OiB0IC0+IGxvb3AgKGggOjogYWNjKSB0XG4gICAgaW5cbiAgICBsb29wIFtdIGxzdFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcmVjXCIgc2V4cFxuOztcblxubGV0IGlkIHggPSB4XG5cbmxldCByZWMgc3Vic3Rfb3B0aW9uIChzdXBfc3Vic3QsIGVsKSByZXN0ID1cbiAgbGV0IHN1Yl9zdWJzdCwgc3ViX2VsID0gc3Vic3RfcGF0aCBlbCByZXN0IGluXG4gIGxldCBzdWJzdCB4ID0gc3VwX3N1YnN0IChTb21lIChzdWJfc3Vic3QgeCkpIGluXG4gIHN1YnN0LCBzdWJfZWxcblxuYW5kIHN1YnN0X3BhdGggc2V4cCA9IGZ1bmN0aW9uXG4gIHwgUG9zIG4gOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfcG9zIG4gc2V4cCkgdFxuICB8IE1hdGNoICh0YWcsIGFyZ19peCkgOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCBzZXhwKSB0XG4gIHwgUmVjIGtleSA6OiByZXN0IC0+XG4gICAgbGV0IHJlY19zdWJzdCwgZWwgPSBleHRyYWN0X3JlYyBrZXkgc2V4cCBpblxuICAgIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICAgIGxldCBzdWJzdCB4ID0gcmVjX3N1YnN0IChzdWJfc3Vic3QgeCkgaW5cbiAgICBzdWJzdCwgc3ViX2VsXG4gIHwgW10gLT4gaWQsIHNleHBcbjs7XG5cbmxldCBpbXBsb2RlIGxzdCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGl4ID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgQnl0ZXMuc2V0IHN0ciBpeCBoO1xuICAgICAgbG9vcCAoaXggKyAxKSB0XG4gICAgfCBbXSAtPiBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuICBpblxuICBsb29wIDAgbHN0XG47O1xuXG5sZXQgZmFpbF9wYXJzZSBtc2cgPSBmYWlsd2l0aCAoXCJQYXRoLnBhcnNlOiBcIiBeIG1zZylcblxubGV0IHBhcnNlIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gZmFpbF9wYXJzZSBcInBhdGggZW1wdHlcIlxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgYWNjIGRvdF9peCA9XG4gICAgICBtYXRjaCBzdHIuW2RvdF9peF0gd2l0aFxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IGRvdF9peDEgPSBkb3RfaXggKyAxIGluXG4gICAgICAgIGlmIGRvdF9peDEgPSBsZW5cbiAgICAgICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBwYXJzZV9kb3QgYWNjIHN0cl9hY2MgaXggPVxuICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIFJlYyAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYykpIF1cbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICAgICAgICAgIHwgJ1snIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBwYXJzZV9pbmRleCBpbmRleF9hY2MgaXggPVxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgICAgICAgIHRoZW4gZmFpbF9wYXJzZSBcIkVPRiByZWFkaW5nIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSwgaW5kZXhfYWNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IChTb21lIChpbnRfb2ZfY2hhciBjIC0gNDgpKSAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICgnMCcgLi4gJzknIGFzIGMpLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfaW5kZXhfYWNjID0gU29tZSAoKDEwICogaW5kZXhfYWNjKSArIGludF9vZl9jaGFyIGMgLSA0OCkgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCBuZXdfaW5kZXhfYWNjIChpeCArIDEpXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBOb25lIC0+IGZhaWxfcGFyc2UgXCJlbXB0eSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBQb3MgaW5kZXhfYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hdGNoIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSwgaW5kZXhfYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGl4MSA9IGl4ICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4MSA9IGxlblxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIHBhdGhfZWwgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbG9vcCAocGF0aF9lbCA6OiBhY2MpIGl4MVxuICAgICAgICAgICAgICAgICAgICB8IGMsIF8gLT4gZmFpbF9wYXJzZSAoc3ByaW50ZiBcImlsbGVnYWwgY2hhcmFjdGVyIGluIGluZGV4OiAlY1wiIGMpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggTm9uZSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICdcXFxcJyAtPlxuICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgYWZ0ZXIgZXNjYXBlXCJcbiAgICAgICAgICAgICAgICBlbHNlIHBhcnNlX2RvdCBhY2MgKHN0ci5baXgxXSA6OiBzdHJfYWNjKSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXSB0aGVuIGZhaWxfcGFyc2UgXCJkb3VibGUgJy4nXCI7XG4gICAgICAgICAgICAgICAgbGV0IHBhdGhfZWwgPSBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2RvdCAocGF0aF9lbCA6OiBhY2MpIFtdIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgYyAtPiBwYXJzZV9kb3QgYWNjIChjIDo6IHN0cl9hY2MpIChpeCArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZG90IGFjYyBbXSBkb3RfaXgxKVxuICAgICAgfCBjIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCInLicgZXhwZWN0ZWQ7IGdvdCAnJWMnXCIgYylcbiAgICBpblxuICAgIGxvb3AgW10gMClcbjs7XG5cbmxldCBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCA9XG4gIGxldCBwYXRoID1cbiAgICBtYXRjaCBwYXRoLCBzdHIgd2l0aFxuICAgIHwgU29tZSBwYXRoLCBfIC0+IHBhdGhcbiAgICB8IE5vbmUsIFNvbWUgc3RyIC0+IHBhcnNlIHN0clxuICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICBpblxuICBzdWJzdF9wYXRoIHNleHAgcGF0aFxuOztcblxubGV0IGdldCA/cGF0aCA/c3RyIHNleHAgPSBzbmQgKGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwKVxuXG5sZXQgcmVwbGFjZSA/cGF0aCA/c3RyIHNleHAgfnN1YnN0ID1cbiAgbGV0IHN1YnN0X2Z1biwgXyA9IGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwIGluXG4gIHN1YnN0X2Z1biBzdWJzdFxuOztcblxubGV0IHJlcGxhY2Vfbm9fcGF0aCB+c3RyIHNleHAgfnN1YnN0ID0gcmVwbGFjZSB+c3RyIHNleHAgfnN1YnN0XG4iLCJsZXQgcmVnaXN0ZXIgZXhjIGV4Y19uYW1lID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIF9leGMgLT5cbiAgICBTZXhwLkF0b20gZXhjX25hbWUpXG47O1xuXG5sZXQgbWFnaWNfZmllbGQgcmVwciBuID0gT2JqLm1hZ2ljIChPYmouZmllbGQgcmVwciBuKVxuXG5sZXQgcmVnaXN0ZXIxIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDEgXSlcbjs7XG5cbmxldCByZWdpc3RlcjIgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDIgXSlcbjs7XG5cbmxldCByZWdpc3RlcjMgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiBzZXhwX29mX2FyZzMgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI0IG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczIHNleHBfb2ZfYXJnNCA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNCBdKVxuOztcblxubGV0IHJlZ2lzdGVyNVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI2XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDYgXSlcbjs7XG5cbmxldCByZWdpc3RlcjdcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNyBdKVxuOztcblxubGV0IHJlZ2lzdGVyOFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDY7IHNleHA3OyBzZXhwOCBdKVxuOztcblxubGV0IHJlZ2lzdGVyOVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgXSlcbjs7XG5cbmxldCByZWdpc3RlcjEwXG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gICAgICBzZXhwX29mX2FyZzlcbiAgICAgIHNleHBfb2ZfYXJnMTBcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBsZXQgc2V4cDkgPSBzZXhwX29mX2FyZzkgKG1hZ2ljX2ZpZWxkIHJlcHIgOSkgaW5cbiAgICBsZXQgc2V4cDEwID0gc2V4cF9vZl9hcmcxMCAobWFnaWNfZmllbGQgcmVwciAxMCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lXG4gICAgICA7IHNleHAxXG4gICAgICA7IHNleHAyXG4gICAgICA7IHNleHAzXG4gICAgICA7IHNleHA0XG4gICAgICA7IHNleHA1XG4gICAgICA7IHNleHA2XG4gICAgICA7IHNleHA3XG4gICAgICA7IHNleHA4XG4gICAgICA7IHNleHA5XG4gICAgICA7IHNleHAxMFxuICAgICAgXSlcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBcIkZhc3QgU3BsaXR0YWJsZSBQc2V1ZG9yYW5kb20gTnVtYmVyIEdlbmVyYXRvcnNcIiBieSBTdGVlbGUgZXQuXG4gICAgYWwuICgxKS4gIFRoZSBwYXBlcidzIGFsZ29yaXRobSBwcm92aWRlcyBkZWNlbnQgcmFuZG9tbmVzcyBmb3IgbW9zdCBwdXJwb3NlcywgYnV0XG4gICAgc2FjcmlmaWNlcyBjcnlwdG9ncmFwaGljLXF1YWxpdHkgcmFuZG9tbmVzcyBpbiBmYXZvciBvZiBwZXJmb3JtYW5jZS4gIFRoZSBvcmlnaW5hbFxuICAgIGltcGxlbWVudGF0aW9uIHdhcyB0ZXN0ZWQgd2l0aCBEaWVIYXJkZXIgYW5kIEJpZ0NydXNoOyBzZWUgdGhlIHBhcGVyIGZvciBkZXRhaWxzLlxuXG4gICAgT3VyIGltcGxlbWVudGF0aW9uIGlzIGEgcG9ydCBmcm9tIEphdmEgdG8gT0NhbWwgb2YgdGhlIHBhcGVyJ3MgYWxnb3JpdGhtLiAgT3RoZXIgdGhhblxuICAgIHRoZSBjaG9pY2Ugb2YgaW5pdGlhbCBzZWVkIGZvciBbY3JlYXRlXSwgb3VyIHBvcnQgc2hvdWxkIGJlIGZhaXRoZnVsLiAgV2UgaGF2ZSBub3RcbiAgICByZS1ydW4gdGhlIERpZUhhcmRlciBvciBCaWdDcnVzaCB0ZXN0cyBvbiBvdXIgaW1wbGVtZW50YXRpb24uICBPdXIgcG9ydCBpcyBhbHNvIG5vdCBhc1xuICAgIHBlcmZvcm1hbnQgYXMgdGhlIG9yaWdpbmFsOyB0d28gZmFjdG9ycyB0aGF0IGh1cnQgdXMgYXJlIGJveGVkIFtpbnQ2NF0gdmFsdWVzIGFuZCBsYWNrXG4gICAgb2YgYSBQT1BDTlQgcHJpbWl0aXZlLlxuXG4gICAgKDEpIGh0dHA6Ly8yMDE0LnNwbGFzaGNvbi5vcmcvZXZlbnQvb29wc2xhMjAxNC1mYXN0LXNwbGl0dGFibGUtcHNldWRvcmFuZG9tLW51bWJlci1nZW5lcmF0b3JzXG4gICAgKGFsc28gbWlycm9yZWQgYXQgaHR0cDovL2dlZS5jcy5vc3dlZ28uZWR1L2RsL3BhcGVycy9vb3BzbGExNC5wZGYpXG5cbiAgICBCZXdhcmUgd2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2U7IGl0IGlzIGVhc3kgdG8gaW1wbGVtZW50IGEgW3NwbGl0XSBvcGVyYXRpb25cbiAgICB3aG9zZSBvdXRwdXQgaXMgbm90IGFzIFwiaW5kZXBlbmRlbnRcIiBhcyBpdCBzZWVtcyAoMikuICBUaGlzIGJ1ZyBjYXVzZWQgcHJvYmxlbXMgZm9yXG4gICAgSGFza2VsbCdzIFF1aWNrY2hlY2sgbGlicmFyeSBmb3IgYSBsb25nIHRpbWUuXG5cbiAgICAoMikgU2NoYWF0aHVuLCBcIkV2YWx1YXRpb24gb2Ygc3BsaXR0YWJsZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnNcIiwgSkZQIDIwMTUuXG4gICAgaHR0cDovL3d3dy5oZy5zY2hhYXRodW4ubmV0L3Jlc2VhcmNoL1BhcGVycy9oZ3MyMDE1amZwLnBkZlxuKilcblxub3BlbiEgQmFzZVxub3BlbiAgSW50NjQuT1xuXG5sZXQgaXNfb2RkIHggPSB4IGxvciAxTCA9IHhcblxubGV0IHBvcGNvdW50ID0gSW50NjQucG9wY291bnRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2VlZCA6IGludDY0XG4gICAgOyBvZGRfZ2FtbWEgICAgOiBpbnQ2NFxuICAgIH1cblxuICBsZXQgZ29sZGVuX2dhbW1hID0gMHg5ZTM3Xzc5YjlfN2Y0YV83YzE1TFxuXG4gIGxldCBvZl9pbnQgc2VlZCA9XG4gICAgeyBzZWVkICAgICAgPSBJbnQ2NC5vZl9pbnQgc2VlZFxuICAgIDsgb2RkX2dhbW1hID0gZ29sZGVuX2dhbW1hXG4gICAgfVxuXG4gIGxldCBjb3B5IHsgc2VlZCA7IG9kZF9nYW1tYSB9ID0geyBzZWVkIDsgb2RkX2dhbW1hIH1cblxuICBsZXQgbWl4X2JpdHMgeiBuID1cbiAgICB6IGx4b3IgKHogbHNyIG4pXG5cbiAgbGV0IG1peDY0IHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhmZjUxX2FmZDdfZWQ1NV84Y2NkTCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhjNGNlX2I5ZmVfMWE4NV9lYzUzTCBpblxuICAgIG1peF9iaXRzIHogMzNcblxuICBsZXQgbWl4NjRfdmFyaWFudDEzIHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzApICogMHhiZjU4XzQ3NmRfMWNlNF9lNWI5TCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMjcpICogMHg5NGQwXzQ5YmJfMTMzMV8xMWViTCBpblxuICAgIG1peF9iaXRzIHogMzFcblxuICBsZXQgbWl4X29kZF9nYW1tYSB6ID1cbiAgICBsZXQgeiA9IChtaXg2NF92YXJpYW50MTMgeikgbG9yIDFMIGluXG4gICAgbGV0IG4gPSBwb3Bjb3VudCAoeiBseG9yICh6IGxzciAxKSkgaW5cbiAgICAoKiBUaGUgb3JpZ2luYWwgcGFwZXIgdXNlcyBbPj1dIGluIHRoZSBjb25kaXRpb25hbCBpbW1lZGlhdGVseSBiZWxvdzsgaG93ZXZlciB0aGlzIGlzXG4gICAgICAgYSB0eXBvLCBhbmQgd2UgY29ycmVjdCBpdCBieSB1c2luZyBbPF0uIFRoaXMgd2FzIGZpeGVkIGluIHJlc3BvbnNlIHRvIFsxXSBhbmQgWzJdLlxuXG4gICAgICAgWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3NwbGl0dGFibGVfcmFuZG9tL2lzc3Vlcy8xXG4gICAgICAgWzJdIGh0dHA6Ly93d3cucGNnLXJhbmRvbS5vcmcvcG9zdHMvYnVncy1pbi1zcGxpdG1peC5odG1sXG4gICAgKilcbiAgICBpZiBJbnQuKCA8ICkgbiAyNFxuICAgIHRoZW4geiBseG9yIDB4YWFhYV9hYWFhX2FhYWFfYWFhYUxcbiAgICBlbHNlIHpcblxuICBsZXQldGVzdF91bml0IFwib2RkIGdhbW1hXCIgPVxuICAgIGZvciBpbnB1dCA9IC0xXzAwMF8wMDAgdG8gMV8wMDBfMDAwIGRvXG4gICAgICBsZXQgb3V0cHV0ID0gbWl4X29kZF9nYW1tYSAoSW50NjQub2ZfaW50IGlucHV0KSBpblxuICAgICAgaWYgbm90IChpc19vZGQgb3V0cHV0KSB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgICAgXCJnYW1tYSB2YWx1ZSBpcyBub3Qgb2RkXCJcbiAgICAgICAgICAgIChpbnB1dCAgOiBpbnQpXG4gICAgICAgICAgICAob3V0cHV0IDogaW50NjQpXVxuICAgIGRvbmVcblxuICBsZXQgbmV4dF9zZWVkIHQgPVxuICAgIGxldCBuZXh0ID0gdC5zZWVkICsgdC5vZGRfZ2FtbWEgaW5cbiAgICB0LnNlZWQgPC0gbmV4dDtcbiAgICBuZXh0XG5cbiAgbGV0IG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYSA9XG4gICAgbGV0IHNlZWQgICAgICA9IG1peDY0ICAgICAgICAgc2VlZCAgaW5cbiAgICBsZXQgb2RkX2dhbW1hID0gbWl4X29kZF9nYW1tYSBnYW1tYSBpblxuICAgIHsgc2VlZDsgb2RkX2dhbW1hIH1cblxuICBsZXQgcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSA9XG4gICAgUmFuZG9tLlN0YXRlLmludDY0X2luY2wgcmFuZG9tX3N0YXRlIEludDY0Lm1pbl92YWx1ZSBJbnQ2NC5tYXhfdmFsdWVcblxuICBsZXQgY3JlYXRlIHJhbmRvbV9zdGF0ZSA9XG4gICAgbGV0IHNlZWQgID0gcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSBpblxuICAgIGxldCBnYW1tYSA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgc3BsaXQgdCA9XG4gICAgbGV0IHNlZWQgID0gbmV4dF9zZWVkIHQgaW5cbiAgICBsZXQgZ2FtbWEgPSBuZXh0X3NlZWQgdCBpblxuICAgIG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYVxuXG4gIGxldCBuZXh0X2ludDY0IHQgPSBtaXg2NCAobmV4dF9zZWVkIHQpXG5cbiAgKCogW3BlcnR1cmJdIGlzIG5vdCBmcm9tIGFueSBleHRlcm5hbCBzb3VyY2UsIGJ1dCBwcm92aWRlcyBhIHdheSB0byBtaXggaW4gZXh0ZXJuYWxcbiAgICAgZW50cm9weSB3aXRoIGEgcHNldWRvLXJhbmRvbSBzdGF0ZS4gKilcbiAgbGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIG1peDY0IChJbnQ2NC5vZl9pbnQgc2FsdCkgaW5cbiAgICB0LnNlZWQgPC0gbmV4dFxuXG5lbmRcblxubGV0IGJvb2wgc3RhdGUgPSBpc19vZGQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIFdlIGFidXNlIHRlcm1pbm9sb2d5IGFuZCByZWZlciB0byBpbmRpdmlkdWFsIHZhbHVlcyBhcyBiaWFzZWQgb3IgdW5iaWFzZWQuICBNb3JlXG4gICBwcm9wZXJseSwgd2hhdCBpcyB1bmJpYXNlZCBpcyB0aGUgc2FtcGxlciB0aGF0IHJlc3VsdHMgaWYgd2Uga2VlcCBvbmx5IHRoZXNlIFwidW5iaWFzZWRcIlxuICAgdmFsdWVzLiAqKVxubGV0IHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgfmRyYXdcbiAgICAgIH5yZW1haW5kZXJcbiAgICAgIH5kcmF3X21heGltdW1cbiAgICAgIH5yZW1haW5kZXJfbWF4aW11bVxuICA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgZHJhdyAtIHJlbWFpbmRlciA8PSBkcmF3X21heGltdW0gLSByZW1haW5kZXJfbWF4aW11bVxuXG5sZXQldGVzdF91bml0IFwicmVtYWluZGVyX2lzX3VuYmlhc2VkXCIgPVxuICAoKiBjaG9vc2luZyBhIHJhbmdlIG9mIDEwIHZhbHVlcyBiYXNlZCBvbiBhIHJhbmdlIG9mIDEwNSB2YWx1ZXMgKilcbiAgbGV0IGRyYXdfbWF4aW11bSA9IDEwNEwgaW5cbiAgbGV0IHJlbWFpbmRlcl9tYXhpbXVtID0gOUwgaW5cbiAgbGV0IGlzX3VuYmlhc2VkIGRyYXcgPVxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyByZW1haW5kZXJfbWF4aW11bSkgaW5cbiAgICByZW1haW5kZXJfaXNfdW5iaWFzZWQgfmRyYXcgfnJlbWFpbmRlciB+ZHJhd19tYXhpbXVtIH5yZW1haW5kZXJfbWF4aW11bVxuICBpblxuICBmb3IgaSA9IDAgdG8gOTkgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OnRydWVcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMTAwIHRvIDEwNCBkb1xuICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAoaXNfdW5iaWFzZWQgKEludDY0Lm9mX2ludCBpKSlcbiAgICAgIH5leHBlY3Q6ZmFsc2VcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmVcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBib3VuZGVkIHJhbmRvbW5lc3MgaXMgYWRhcHRlZCBmcm9tIFtSYW5kb20uU3RhdGUuaW50Kl0gaW4gdGhlXG4gICBPQ2FtbCBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhlIHB1cnBvc2UgaXMgdG8gdXNlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0b1xuICAgW25leHRfaW50NjRdIHRvIHByb2R1Y2UgYSBudW1iZXIgdW5pZm9ybWx5IGNob3NlbiB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLiAqKVxubGV0IGludDY0ID1cbiAgbGV0IG9wZW4gSW50NjQuTyBpblxuICBsZXQgcmVjIGJldHdlZW4gc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGluXG4gICAgaWYgbG8gPD0gZHJhdyAmJiBkcmF3IDw9IGhpXG4gICAgdGhlbiBkcmF3XG4gICAgZWxzZSBiZXR3ZWVuIHN0YXRlIH5sbyB+aGlcbiAgaW5cbiAgbGV0IHJlYyBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGxhbmQgSW50NjQubWF4X3ZhbHVlIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDY0LnJlbSBkcmF3IChJbnQ2NC5zdWNjIG1heGltdW0pIGluXG4gICAgaWYgcmVtYWluZGVyX2lzX3VuYmlhc2VkXG4gICAgICAgICB+ZHJhd1xuICAgICAgICAgfnJlbWFpbmRlclxuICAgICAgICAgfmRyYXdfbWF4aW11bTpJbnQ2NC5tYXhfdmFsdWVcbiAgICAgICAgIH5yZW1haW5kZXJfbWF4aW11bTptYXhpbXVtXG4gICAgdGhlbiByZW1haW5kZXJcbiAgICBlbHNlIG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBtYXhpbXVtXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbG8gPiBoaSB0aGVuIGJlZ2luXG4gICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludDY0OiBjcm9zc2VkIGJvdW5kc1wiIChsbyA6IGludDY0KSAoaGkgOiBpbnQ2NCldXG4gICAgZW5kO1xuICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgIGlmIGRpZmYgPSBJbnQ2NC5tYXhfdmFsdWVcbiAgICB0aGVuICgoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSkgbGFuZCBJbnQ2NC5tYXhfdmFsdWUpICsgbG9cbiAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICB0aGVuIChub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgZGlmZikgKyBsb1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG5cbmxldCBpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9pbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQzMiBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfaW50MzIgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50MzIgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnQzMl90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IG5hdGl2ZWludCBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfbmF0aXZlaW50IGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX25hdGl2ZWludCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX25hdGl2ZWludF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGludDYzIHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2My50b19pbnQ2NCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2My50b19pbnQ2NCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDYzLm9mX2ludDY0X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgZG91YmxlX3VscCA9IDIuICoqLiAtNTMuXG5cbmxldCV0ZXN0X3VuaXQgXCJkb3VibGVfdWxwXCIgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPlxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAxLjApO1xuICAgIGFzc2VydCAoMS4wIC0uIChkb3VibGVfdWxwIC8uIDIuMCkgPSAxLjApXG4gIHwgVzMyIC0+XG4gICAgKCogMzItYml0IE9DYW1sIHVzZXMgYSA2NC1iaXQgZmxvYXQgcmVwcmVzZW50YXRpb24gYnV0IDgwLWJpdCBmbG9hdCBpbnN0cnVjdGlvbnMsIHNvXG4gICAgICAgcm91bmRpbmcgd29ya3MgZGlmZmVyZW50bHkgZHVlIHRvIHRoZSBjb252ZXJzaW9uIGJhY2sgYW5kIGZvcnRoLiAqKVxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApIDw9IDEuMClcblxubGV0IHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCBpbnQ2NCA9XG4gIChJbnQ2NC50b19mbG9hdCAoaW50NjQgbHNyIDExKSkgKi4gZG91YmxlX3VscFxuXG5sZXQldGVzdF91bml0IFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPSBiZWdpblxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4MDAwMF8wMDAwXzAwMDBfMDAwMEwgPSAwLik7XG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZkwgPCAxLjApO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMID0gKDEuMCAtLiBkb3VibGVfdWxwKSk7XG5lbmRcblxubGV0IHVuaXRfZmxvYXQgc3RhdGUgPVxuICB1bml0X2Zsb2F0X2Zyb21faW50NjQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIE5vdGUgYWJvdXQgcm91bmRvZmYgZXJyb3I6XG5cbiAgIEFsdGhvdWdoIFtmbG9hdCBzdGF0ZSB+bG8gfmhpXSBpcyBub21pbmFsbHkgaW5jbHVzaXZlIG9mIGVuZHBvaW50cywgd2UgYXJlIHJlbHlpbmcgb25cbiAgIHRoZSBmYWN0IHRoYXQgW3VuaXRfZmxvYXRdIG5ldmVyIHJldHVybnMgMS4sIGJlY2F1c2UgdGhlcmUgYXJlIHBhaXJzIFsobG8saGkpXSBmb3JcbiAgIHdoaWNoIFtsbyArLiAxLiAqLiAoaGkgLS4gbG8pID4gaGldLiAgVGhlcmUgYXJlIGFsc28gcGFpcnMgWyhsbyxoaSldIGFuZCB2YWx1ZXMgb2YgW3hdXG4gICB3aXRoIFt4IDwgMS5dIHN1Y2ggdGhhdCBbbG8gKy4geCAqLiAoaGkgLS4gbG8pID0gaGldLCBzbyBpdCB3b3VsZCBub3QgYmUgY29ycmVjdCB0b1xuICAgZG9jdW1lbnQgdGhpcyBhcyBiZWluZyBleGNsdXNpdmUgb2YgW2hpXS5cbiopXG5sZXQgZmxvYXQgPVxuICBsZXQgcmVjIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpID1cbiAgICBsZXQgcmFuZ2UgPSBoaSAtLiBsbyBpblxuICAgIGlmIEZsb2F0LmlzX2Zpbml0ZSByYW5nZVxuICAgIHRoZW4gKGxvICsuICh1bml0X2Zsb2F0IHN0YXRlICouIHJhbmdlKSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICAoKiBJZiBbaGkgLSBsb10gaXMgaW5maW5pdGUsIHRoZW4gW2hpICsgbG9dIGlzIGZpbml0ZSBiZWNhdXNlIFtoaV0gYW5kIFtsb10gaGF2ZVxuICAgICAgICAgb3Bwb3NpdGUgc2lnbnMuICopXG4gICAgICBsZXQgbWlkID0gKGhpICsuIGxvKSAvLiAyLiBpblxuICAgICAgaWYgYm9vbCBzdGF0ZVxuICAgICAgKCogRGVwZW5kaW5nIG9uIHJvdW5kaW5nLCB0aGUgcmVjdXJzaW9uIHdpdGggW35oaTptaWRdIG1pZ2h0IGJlIGluY2x1c2l2ZSBvZiBbbWlkXSxcbiAgICAgICAgIHdoaWNoIHdvdWxkIG1lYW4gdGhlIHR3byBjYXNlcyBvdmVybGFwIG9uIFttaWRdLiBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gaW5jcmVtZW50XG4gICAgICAgICBvciBkZWNyZW1lbnQgW21pZF0gdXNpbmcgW29uZV91bHBdIGluIGVpdGhlciBvZiB0aGUgY2FsbHMsIGJ1dCB0aGVuIGlmIHRoZSBmaXJzdFxuICAgICAgICAgY2FzZSBpcyBleGNsdXNpdmUgd2UgbGVhdmUgYSBcImdhcFwiIGJldHdlZW4gdGhlIHR3byByYW5nZXMuIFRoZXJlJ3Mgbm8gcGVyZmVjdGx5XG4gICAgICAgICB1bmlmb3JtIHNvbHV0aW9uLCBzbyB3ZSB1c2UgdGhlIHNpbXBsZXIgY29kZSB0aGF0IGRvZXMgbm90IGNhbGwgW29uZV91bHBdLiAqKVxuICAgICAgdGhlbiBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaTptaWRcbiAgICAgIGVsc2UgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbzptaWQgfmhpXG4gICAgZW5kXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgbG8gJiYgRmxvYXQuaXNfZmluaXRlIGhpKVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgbm90IGZpbml0ZSBudW1iZXJzXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGlmIEZsb2F0LiggPiApIGxvIGhpXG4gICAgdGhlbiBiZWdpblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgXCJmbG9hdDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpXG5cbmxldCViZW5jaF9mdW4gXCJ1bml0X2Zsb2F0X2Zyb21faW50NjRcIiA9XG4gIGxldCBpbnQ2NCA9IDFMIGluXG4gIGZ1biAoKSAtPiB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjRcblxubW9kdWxlIExvZ191bmlmb3JtID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlIChNIDogc2lnIGluY2x1ZGUgSW50LlMgdmFsIHVuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0IGVuZCkgOiBzaWdcbiAgICB2YWwgbG9nX3VuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOk0udCAtPiBoaTpNLnQgLT4gTS50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gTVxuXG4gICAgbGV0IGJpdHNfdG9fcmVwcmVzZW50IHQgPVxuICAgICAgYXNzZXJ0ICh0ID49IHplcm8pO1xuICAgICAgbGV0IHQgPSByZWYgdCBpblxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgd2hpbGUgIXQgPiB6ZXJvIGRvXG4gICAgICAgIHQgOj0gc2hpZnRfcmlnaHQgIXQgMTtcbiAgICAgICAgSW50LmluY3IgbjtcbiAgICAgIGRvbmU7XG4gICAgICAhblxuXG4gICAgbGV0JXRlc3RfdW5pdCBcImJpdHNfdG9fcmVwcmVzZW50XCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBpbnRdIChiaXRzX3RvX3JlcHJlc2VudCBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDApICAgMDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxKSAgIDE7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMikgICAyO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDMpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA0KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNSkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDYpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA3KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gOCkgICA0O1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDEwMCkgNztcbiAgICAgIHRlc3QgTS5tYXhfdmFsdWUgKEludC5wcmVkIE0ubnVtX2JpdHMpO1xuICAgIDs7XG5cbiAgICBsZXQgbWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIGlmIEludC5lcXVhbCBuIDBcbiAgICAgIHRoZW4gemVyb1xuICAgICAgZWxzZSBzaGlmdF9sZWZ0IG9uZSAoSW50LnByZWQgbilcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzXCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBNLnRdIChtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4pIH5leHBlY3QgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAyKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDQpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gOCk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biA2NCk7XG4gICAgICB0ZXN0IChJbnQucHJlZCBNLm51bV9iaXRzKSAoTS5zaGlmdF9yaWdodF9sb2dpY2FsIE0ubWluX3ZhbHVlIDEpO1xuICAgIDs7XG5cbiAgICBsZXQgbWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIHByZWQgKHNoaWZ0X2xlZnQgb25lIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWF4X3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAwIChNLm9mX2ludF9leG4gMCk7XG4gICAgICB0ZXN0IDEgKE0ub2ZfaW50X2V4biAxKTtcbiAgICAgIHRlc3QgMiAoTS5vZl9pbnRfZXhuIDMpO1xuICAgICAgdGVzdCAzIChNLm9mX2ludF9leG4gNyk7XG4gICAgICB0ZXN0IDQgKE0ub2ZfaW50X2V4biAxNSk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biAxMjcpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgTS5tYXhfdmFsdWU7XG4gICAgOztcblxuICAgIGxldCBsb2dfdW5pZm9ybSBzdGF0ZSB+bG8gfmhpID1cbiAgICAgIGxldCBtaW5fYml0cyA9IGJpdHNfdG9fcmVwcmVzZW50IGxvIGluXG4gICAgICBsZXQgbWF4X2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBoaSBpblxuICAgICAgbGV0IGJpdHMgPSBpbnQgc3RhdGUgfmxvOm1pbl9iaXRzIH5oaTptYXhfYml0cyBpblxuICAgICAgdW5pZm9ybSBzdGF0ZVxuICAgICAgICB+bG86KG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtYXggbG8pXG4gICAgICAgIH5oaToobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBiaXRzIHw+IG1pbiBoaSlcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9pbnQgICAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQgICAgICAgbGV0IHVuaWZvcm0gPSBpbnQgICAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDMyICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDMyICAgICBsZXQgdW5pZm9ybSA9IGludDMyICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjMgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjMgICAgIGxldCB1bmlmb3JtID0gaW50NjMgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQ2NCAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQ2NCAgICAgbGV0IHVuaWZvcm0gPSBpbnQ2NCAgICAgZW5kKVxuICBtb2R1bGUgRm9yX25hdGl2ZWludCA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIE5hdGl2ZWludCBsZXQgdW5pZm9ybSA9IG5hdGl2ZWludCBlbmQpXG5cbiAgbGV0IGludCAgICAgICA9IEZvcl9pbnQubG9nX3VuaWZvcm1cbiAgbGV0IGludDMyICAgICA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjMgICAgID0gRm9yX2ludDYzLmxvZ191bmlmb3JtXG4gIGxldCBpbnQ2NCAgICAgPSBGb3JfaW50NjQubG9nX3VuaWZvcm1cbiAgbGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1cbmVuZFxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuKCoqIEludGVnZXIgcmVtYWluZGVyLiAgSWYgW3ldIGlzIG5vdCB6ZXJvLCB0aGUgcmVzdWx0XG4gICBvZiBbSW50NjQucmVtIHggeV0gc2F0aXNmaWVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6XG4gICBbeCA9IEludDY0LmFkZCAoSW50NjQubXVsIChJbnQ2NC5kaXYgeCB5KSB5KSAoSW50NjQucmVtIHggeSldLlxuICAgSWYgW3kgPSAwXSwgW0ludDY0LnJlbSB4IHldIHJhaXNlcyBbRGl2aXNpb25fYnlfemVyb10uICopXG5cbnZhbCB1bnNpZ25lZF9yZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFyZW19LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4oKiogVGhlIGVxdWFsIGZ1bmN0aW9uIGZvciBpbnQ2NHMuXG4gICAgQHNpbmNlIDQuMDMuMCAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4gKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIExheW91dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaWdhcnJheS5sYXlvdXRcblxuICBsZXQgb2Zmc2V0IDogdHlwZSBhLiBhIHQgLT4gaW50ID0gZnVuY3Rpb25cbiAgICB8IEJpZ2FycmF5LkZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICB8IEJpZ2FycmF5LkNfbGF5b3V0IC0+IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnYXJyYXkuQXJyYXkxLmRpbSB0IC0gMSBkb1xuICAgICAgZiAoaSArIG9mZnNldCkgdC57aSArIG9mZnNldH1cbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGluaXQgKHR5cGUgZWx0KSAoa2luZCA6IChlbHQsIF8pIEJpZ2FycmF5LmtpbmQpIGxheW91dCBkaW0gfmYgPVxuICAgIGxldCB0ID0gQmlnYXJyYXkuQXJyYXkxLmNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gdC57aX0gPC0gZiBpKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgKF8gOiBlbHQpIC0+IGluaXQgOj0gZiAhaW5pdCB0LntpfSk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTEuZGltIHQpIH5mOihmdW4gaSAtPiB0LntpICsgb2Zmc2V0fSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IF9zZXhwX29mX3BhY2sgX3NleHBfb2ZfbGF5b3V0IHQgPVxuICAgIFslc2V4cCAodG9fYXJyYXkgdCA6IGVsdCBhcnJheSldXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZCBoYXNoX2ZvbGRfZWx0IHN0YXRlIHQgPVxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgaW5cbiAgICBmb2xkIHQgfmluaXQ6c3RhdGUgfmY6aGFzaF9mb2xkX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTIudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkyLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTIuZGltMSB0IC0gMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQgLSAxIGRvXG4gICAgICAgIGYgKGkgKyBvZmZzZXQpIChqICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbTEgZGltMiB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTIuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIGogKF8gOiBlbHQpIC0+IHQue2ksIGp9IDwtIGYgaSBqKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIChfIDogaW50KSAoXyA6IGludCkgZWx0IC0+IGluaXQgOj0gZiAhaW5pdCBlbHQpO1xuICAgICFpbml0XG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgfmY6KGZ1biBpIC0+XG4gICAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMiB0KSB+ZjooZnVuIGogLT4gdC57aSArIG9mZnNldCwgaiArIG9mZnNldH0pKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgaW5cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMiB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgLT4gc2l6ZTppbnQgLT4gaGFzaDpIYXNoLnN0YXRlIC0+IEhhc2guc3RhdGVcblxubGV0IGNyZWF0ZSBmIDogXyB0ID0gZlxuXG5sZXQgb2JzZXJ2ZSAodCA6IF8gdCkgeCB+c2l6ZSB+aGFzaCA9XG4gIGlmIHNpemUgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIub2JzZXJ2ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gIGVsc2UgdCB4IH5zaXplIH5oYXNoXG47O1xuXG5sZXQgb3BhcXVlIF8gfnNpemU6XyB+aGFzaCA9IGhhc2hcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiAoc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIGdlbmVyYXRlIDogJ2EgdCAtPiBzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYVxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgU3RhZ2VkLnRcblxuICBsZXQgY3JlYXRlIGYgOiBfIHQgPSBTdGFnZWQuc3RhZ2UgZlxuXG4gIGxldCBnZW5lcmF0ZSAodCA6IF8gdCkgfnNpemUgfnJhbmRvbSA9XG4gICAgaWYgc2l6ZSA8IDBcbiAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5nZW5lcmF0ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gICAgZWxzZSBTdGFnZWQudW5zdGFnZSB0IH5zaXplIH5yYW5kb21cbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tOl8gLT4gc2l6ZSlcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnNwbGl0IHJhbmRvbSBpblxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgaGFzaCA9IE9ic2VydmVyMC5vYnNlcnZlIGRvbSB4IH5zaXplIH5oYXNoOihIYXNoLmFsbG9jICgpKSBpblxuICAgICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNvcHkgcmFuZG9tIGluXG4gICAgICBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5wZXJ0dXJiIHJhbmRvbSAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKTtcbiAgICAgIGdlbmVyYXRlIHJuZyB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IHdpdGhfc2l6ZSB0IH5zaXplID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSlcblxubGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIHNhbHQ7XG4gICAgZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB+c2l6ZSB+cmFuZG9tID1cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCBTb21lIHkgLT4geVxuICAgIHwgTm9uZSAtPiBsb29wIH5zaXplOihzaXplICsgMSkgfnJhbmRvbVxuICBpblxuICBjcmVhdGUgbG9vcFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxubGV0IHJldHVybiB4ID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tOl8gLT4geClcbmxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZiAoZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFwcGx5IHRmIHR4ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCBmID0gZ2VuZXJhdGUgdGYgfnNpemUgfnJhbmRvbSBpblxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdHggfnNpemUgfnJhbmRvbSBpblxuICAgIGYgeClcbjs7XG5cbmxldCBiaW5kIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20gaW5cbiAgICBnZW5lcmF0ZSAoZiB4KSB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGFsbCBsaXN0ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBMaXN0Lm1hcCBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFsbF91bml0IGxpc3QgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QuaXRlciBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbm1vZHVsZSBGb3JfYXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGJvdGggPSBGb3JfYXBwbGljYXRpdmUuYm90aFxubGV0IG1hcDIgPSBGb3JfYXBwbGljYXRpdmUubWFwMlxubGV0IG1hcDMgPSBGb3JfYXBwbGljYXRpdmUubWFwM1xuXG5tb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBGb3JfYXBwbGljYXRpdmUuQXBwbGljYXRpdmVfaW5maXhcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW5maXhcblxubW9kdWxlIEZvcl9tb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGlnbm9yZV9tID0gRm9yX21vbmFkLmlnbm9yZV9tXG5sZXQgam9pbiA9IEZvcl9tb25hZC5qb2luXG5cbm1vZHVsZSBNb25hZF9pbmZpeCA9IEZvcl9tb25hZC5Nb25hZF9pbmZpeFxuaW5jbHVkZSBNb25hZF9pbmZpeFxubW9kdWxlIExldF9zeW50YXggPSBGb3JfbW9uYWQuTGV0X3N5bnRheFxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBvZl9saXN0IGxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxpc3RcbiAgdGhlbiBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2ZfbGlzdDogZW1wdHkgbGlzdFwiXTtcbiAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gIGxldCBsbyA9IDAgaW5cbiAgbGV0IGhpID0gQXJyYXkubGVuZ3RoIGFycmF5IC0gMSBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbyB+aGkgaW5cbiAgICBhcnJheS4oaW5kZXgpKVxuOztcblxubGV0IHVuaW9uIGxpc3QgPSBqb2luIChvZl9saXN0IGxpc3QpXG5cbmxldCBvZl93ZWlnaHRlZF9saXN0IGFsaXN0ID1cbiAgaWYgTGlzdC5pc19lbXB0eSBhbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgd2VpZ2h0cywgdmFsdWVzID0gTGlzdC51bnppcCBhbGlzdCBpblxuICBsZXQgdmFsdWVfYXJyYXkgPSBBcnJheS5vZl9saXN0IHZhbHVlcyBpblxuICBsZXQgdG90YWxfd2VpZ2h0LCBjdW11bGF0aXZlX3dlaWdodF9hcnJheSA9XG4gICAgbGV0IGFycmF5ID0gQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHZhbHVlX2FycmF5KSB+ZjooZnVuIF8gLT4gMC4pIGluXG4gICAgbGV0IHN1bSA9XG4gICAgICBMaXN0LmZvbGRpIHdlaWdodHMgfmluaXQ6MC4gfmY6KGZ1biBpbmRleCBhY2Mgd2VpZ2h0IC0+XG4gICAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIHdlaWdodClcbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5vdCBmaW5pdGVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBpZiBGbG9hdC4oIDwgKSB3ZWlnaHQgMC5cbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5lZ2F0aXZlXCJcbiAgICAgICAgICAgICAgICAod2VpZ2h0IDogZmxvYXQpXTtcbiAgICAgICAgbGV0IGN1bXVsYXRpdmUgPSBhY2MgKy4gd2VpZ2h0IGluXG4gICAgICAgIGFycmF5LihpbmRleCkgPC0gY3VtdWxhdGl2ZTtcbiAgICAgICAgY3VtdWxhdGl2ZSlcbiAgICBpblxuICAgIGlmIEZsb2F0LiggPD0gKSBzdW0gMC5cbiAgICB0aGVuXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogdG90YWwgd2VpZ2h0IGlzIHplcm9cIl07XG4gICAgc3VtLCBhcnJheVxuICBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgY2hvaWNlID0gU3BsaXR0YWJsZV9yYW5kb20uZmxvYXQgcmFuZG9tIH5sbzowLiB+aGk6dG90YWxfd2VpZ2h0IGluXG4gICAgbWF0Y2hcbiAgICAgIEFycmF5LmJpbmFyeV9zZWFyY2hcbiAgICAgICAgY3VtdWxhdGl2ZV93ZWlnaHRfYXJyYXlcbiAgICAgICAgfmNvbXBhcmU6RmxvYXQuY29tcGFyZVxuICAgICAgICBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgICAgIGNob2ljZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5kZXggLT4gdmFsdWVfYXJyYXkuKGluZGV4KVxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgd2VpZ2h0ZWRfdW5pb24gYWxpc3QgPSBqb2luIChvZl93ZWlnaHRlZF9saXN0IGFsaXN0KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZm9yY2UgbGF6eV90KSB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2ZfZ2VuZXJhdG9yID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5IChvZl9nZW5lcmF0b3IgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgZm9yY2UgbGF6eV90XG47O1xuXG5sZXQgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IHJlY19saXN0ID1cbiAgICAgIExpc3QubWFwIChmIHNlbGYpIH5mOihmdW4gKHcsIHQpIC0+XG4gICAgICAgICggd1xuICAgICAgICAsIGxldCViaW5kIG4gPSBzaXplIGluXG4gICAgICAgICAgd2l0aF9zaXplIH5zaXplOihuIC0gMSkgdCApKVxuICAgIGluXG4gICAgaWYgTGlzdC5pc19lbXB0eSBub25yZWNfbGlzdCB8fCBMaXN0LmlzX2VtcHR5IHJlY19saXN0XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iud2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uOiBsaXN0cyBtdXN0IGJlIG5vbi1lbXB0eVwiXTtcbiAgICBsZXQgbm9ucmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIG5vbnJlY19saXN0IGluXG4gICAgbGV0IHJlY19nZW4gPSB3ZWlnaHRlZF91bmlvbiAobm9ucmVjX2xpc3QgQCByZWNfbGlzdCkgaW5cbiAgICBtYXRjaCViaW5kIHNpemUgd2l0aFxuICAgIHwgMCAtPiBub25yZWNfZ2VuXG4gICAgfCBfIC0+IHJlY19nZW4pXG47O1xuXG5sZXQgcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgbGV0IHdlaWdodGVkIGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gdCAtPiAxLiwgdCkgaW5cbiAgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uICh3ZWlnaHRlZCBub25yZWNfbGlzdCkgfmY6KGZ1biBzZWxmIC0+IHdlaWdodGVkIChmIHNlbGYpKVxuOztcblxubGV0IHNpemVzID8obWluX2xlbmd0aCA9IDApID8obWF4X2xlbmd0aCA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGFzc2VydCAobWluX2xlbmd0aCA8PSBtYXhfbGVuZ3RoKTtcbiAgICBsZXQgdXBwZXJfYm91bmQgPSBtaW5fbGVuZ3RoICsgc2l6ZSBpblxuICAgIGxldCBtYXhfbGVuZ3RoID1cbiAgICAgIGlmIHVwcGVyX2JvdW5kID49IG1pbl9sZW5ndGggKCogZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdyAqKVxuICAgICAgdGhlbiBtaW4gbWF4X2xlbmd0aCB1cHBlcl9ib3VuZFxuICAgICAgZWxzZSBtYXhfbGVuZ3RoXG4gICAgaW5cbiAgICAoKiBwaWNrIGEgbGVuZ3RoLCB3ZWlnaHRlZCBsb3cgc28gdGhhdCBtb3N0IG9mIHRoZSBzaXplIGlzIHNwZW50IG9uIGVsZW1lbnRzICopXG4gICAgbGV0IGxlbiA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOm1pbl9sZW5ndGggfmhpOm1heF9sZW5ndGggaW5cbiAgICAoKiBpZiB0aGVyZSBhcmUgbm8gZWxlbWVudHMgcmV0dXJuIGFuIGVtcHR5IGFycmF5LCBvdGhlcndpc2UgcmV0dXJuIGEgbm9uLWVtcHR5IGFycmF5XG4gICAgICAgd2l0aCB0aGUgc2l6ZSBkaXN0cmlidXRlZCBhbW9uZyB0aGUgZWxlbWVudHMgKilcbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHNpemVzID0gQXJyYXkuaW5pdCBsZW4gfmY6KGZ1biBfIC0+IDApIGluXG4gICAgICBsZXQgcmVtYWluaW5nID0gc2l6ZSAtIChsZW4gLSBtaW5fbGVuZ3RoKSBpblxuICAgICAgbGV0IG1heF9pbmRleCA9IGxlbiAtIDEgaW5cbiAgICAgIGZvciBfID0gMSB0byByZW1haW5pbmcgZG9cbiAgICAgICAgKCogcGljayBhbiBpbmRleCwgd2VpZ2h0ZWQgbG93IHNvIHRoYXQgd2Ugc2VlIHVuYmFsYW5jZWQgZGlzdHJpYnV0aW9ucyBvZnRlbiAqKVxuICAgICAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzowIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgc2l6ZXMuKGluZGV4KSA8LSBzaXplcy4oaW5kZXgpICsgMVxuICAgICAgZG9uZTtcbiAgICAgICgqIHBlcm11dGUgdGhlIGFycmF5IHNvIHRoYXQgbm8gaW5kZXggaXMgZmF2b3JlZCBvdmVyIGFub3RoZXIgKilcbiAgICAgIGZvciBpID0gMCB0byBtYXhfaW5kZXggLSAxIGRvXG4gICAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86aSB+aGk6bWF4X2luZGV4IGluXG4gICAgICAgIEFycmF5LnN3YXAgc2l6ZXMgaSBqXG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IChBcnJheS5zdW0gKG1vZHVsZSBJbnQpIHNpemVzIH5mOkZuLmlkICsgKGxlbiAtIG1pbl9sZW5ndGgpID0gc2l6ZSk7XG4gICAgICBBcnJheS50b19saXN0IHNpemVzKSlcbjs7XG5cbmxldCB1bml0ID0gcmV0dXJuICgpXG5sZXQgYm9vbCA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSlcbmxldCBvcHRpb24gdmFsdWVfdCA9IHVuaW9uIFsgcmV0dXJuIE5vbmU7IG1hcCB2YWx1ZV90IH5mOk9wdGlvbi5yZXR1cm4gXVxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9IHVuaW9uIFsgbWFwIGZzdF90IH5mOkVpdGhlci5maXJzdDsgbWFwIHNuZF90IH5mOkVpdGhlci5zZWNvbmQgXVxuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICBtYXAgKGVpdGhlciBva190IGVycl90KSB+ZjooZnVuY3Rpb25cbiAgICB8IEZpcnN0IG9rIC0+IE9rIG9rXG4gICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbjs7XG5cbmxldCBsaXN0X2dlbmVyaWMgP21pbl9sZW5ndGggP21heF9sZW5ndGggZWx0X2dlbiA9XG4gIGxldCViaW5kIHNpemVzID0gc2l6ZXMgP21pbl9sZW5ndGggP21heF9sZW5ndGggKCkgaW5cbiAgTGlzdC5tYXAgc2l6ZXMgfmY6KGZ1biBzaXplIC0+IHdpdGhfc2l6ZSB+c2l6ZSBlbHRfZ2VuKSB8PiBhbGxcbjs7XG5cbmxldCBsaXN0IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgZWx0X2dlblxubGV0IGxpc3Rfbm9uX2VtcHR5IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgfm1pbl9sZW5ndGg6MSBlbHRfZ2VuXG5cbmxldCBsaXN0X3dpdGhfbGVuZ3RoIGVsdF9nZW4gfmxlbmd0aCA9XG4gIGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoIGVsdF9nZW5cbjs7XG5cbmxldCBsaXN0X2ZpbHRlcmVkIGVsdHMgPVxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgbGVuZ3RoX29mX2lucHV0ID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGxlbmd0aF9vZl9vdXRwdXQgPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzowIH5oaTpsZW5ndGhfb2ZfaW5wdXQgaW5cbiAgICBsZXQgaW5kaWNlcyA9IEFycmF5LmluaXQgbGVuZ3RoX29mX2lucHV0IH5mOkZuLmlkIGluXG4gICAgKCogQ2hvb3NlIFtsZW5ndGhfb2Zfb3V0cHV0XSByYW5kb20gdmFsdWVzIGluIHRoZSBwcmVmaXggb2YgW2luZGljZXNdLiAqKVxuICAgIGZvciBpID0gMCB0byBsZW5ndGhfb2Zfb3V0cHV0IC0gMSBkb1xuICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaToobGVuZ3RoX29mX2lucHV0IC0gMSkgaW5cbiAgICAgIEFycmF5LnN3YXAgaW5kaWNlcyBpIGpcbiAgICBkb25lO1xuICAgICgqIFNvcnQgdGhlIGNob3NlbiBpbmRpY2VzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZW9yZGVyIHRoZW0uICopXG4gICAgQXJyYXkuc29ydCBpbmRpY2VzIH5wb3M6MCB+bGVuOmxlbmd0aF9vZl9vdXRwdXQgfmNvbXBhcmU6SW50LmNvbXBhcmU7XG4gICAgKCogUmV0dXJuIHRoZSBjaG9zZW4gZWxlbWVudHMuICopXG4gICAgTGlzdC5pbml0IGxlbmd0aF9vZl9vdXRwdXQgfmY6KGZ1biBpIC0+IGVsdHMuKGluZGljZXMuKGkpKSkpXG47O1xuXG5sZXQgbGlzdF9wZXJtdXRhdGlvbnMgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBhcnJheSA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmkgaW5cbiAgICAgIEFycmF5LnN3YXAgYXJyYXkgaSBqXG4gICAgZG9uZTtcbiAgICBBcnJheS50b19saXN0IGFycmF5KVxuOztcblxubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdFxubGV0IHJlZiB0ID0gbWFwIHQgfmY6UmVmLmNyZWF0ZVxubGV0IGxhenlfdCB0ID0gbWFwIHQgfmY6TGF6eS5mcm9tX3ZhbFxuXG5sZXQgY2hhcl91bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOihDaGFyLnRvX2ludCBsbykgfmhpOihDaGFyLnRvX2ludCBoaSlcbiAgICB8PiBDaGFyLnVuc2FmZV9vZl9pbnQpXG47O1xuXG5sZXQgY2hhcl91cHBlcmNhc2UgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICdBJyAnWidcbmxldCBjaGFyX2xvd2VyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ2EnICd6J1xubGV0IGNoYXJfZGlnaXQgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcwJyAnOSdcbmxldCBjaGFyX3ByaW50X3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcgJyAnfidcbmxldCBjaGFyX3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIENoYXIubWluX3ZhbHVlIENoYXIubWF4X3ZhbHVlXG5sZXQgY2hhcl9hbHBoYSA9IHVuaW9uIFsgY2hhcl9sb3dlcmNhc2U7IGNoYXJfdXBwZXJjYXNlIF1cblxubGV0IGNoYXJfYWxwaGFudW0gPVxuICB3ZWlnaHRlZF91bmlvblxuICAgICgqIE1vc3QgcGVvcGxlIHByb2JhYmx5IGV4cGVjdCB0aGlzIHRvIGJlIGEgdW5pZm9ybSBkaXN0cmlidXRpb24sIG5vdCB3ZWlnaHRlZFxuICAgICAgIHRvd2FyZCBkaWdpdHMgbGlrZSB3ZSB3b3VsZCBnZXQgd2l0aCBbdW5pb25dIChzaW5jZSB0aGVyZSBhcmUgZmV3ZXIgZGlnaXRzIHRoYW5cbiAgICAgICBsZXR0ZXJzKS4gKilcbiAgICBbIDUyLiwgY2hhcl9hbHBoYTsgMTAuLCBjaGFyX2RpZ2l0IF1cbjs7XG5cbmxldCBjaGFyX3doaXRlc3BhY2UgPSBvZl9saXN0IChMaXN0LmZpbHRlciBDaGFyLmFsbCB+ZjpDaGFyLmlzX3doaXRlc3BhY2UpXG5sZXQgY2hhcl9wcmludCA9IHdlaWdodGVkX3VuaW9uIFsgMTAuLCBjaGFyX2FscGhhbnVtOyAxLiwgY2hhcl9wcmludF91bmlmb3JtIF1cblxubGV0IGNoYXIgPVxuICB3ZWlnaHRlZF91bmlvblxuICAgIFsgMTAwLiwgY2hhcl9wcmludFxuICAgIDsgMTAuLCBjaGFyX3VuaWZvcm1cbiAgICA7IDEuLCByZXR1cm4gQ2hhci5taW5fdmFsdWVcbiAgICA7IDEuLCByZXR1cm4gQ2hhci5tYXhfdmFsdWVcbiAgICBdXG47O1xuXG4oKiBQcm9kdWNlcyBhIG51bWJlciBmcm9tIDAgb3IgMSB0byBzaXplICsgMSwgd2VpZ2h0ZWQgaGlnaC4gV2UgaGF2ZSBmb3VuZCB0aGlzXG4gICBkaXN0cmlidXRpb24gZW1waXJpY2FsbHkgdXNlZnVsIGZvciBzdHJpbmcgbGVuZ3Rocy4gKilcbmxldCBzbWFsbF9pbnQgfmFsbG93X3plcm8gPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGxvd2VyX2JvdW5kID0gaWYgYWxsb3dfemVybyB0aGVuIDAgZWxzZSAxIGluXG4gICAgbGV0IHVwcGVyX2JvdW5kID0gc2l6ZSArIDEgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfbG93ID1cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOih1cHBlcl9ib3VuZCAtIGxvd2VyX2JvdW5kKVxuICAgIGluXG4gICAgbGV0IHdlaWdodGVkX2hpZ2ggPSB1cHBlcl9ib3VuZCAtIHdlaWdodGVkX2xvdyBpblxuICAgIHdlaWdodGVkX2hpZ2gpXG47O1xuXG5sZXQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgPSBzbWFsbF9pbnQgfmFsbG93X3plcm86dHJ1ZVxubGV0IHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzpmYWxzZVxuXG5tb2R1bGUgdHlwZSBJbnRfd2l0aF9yYW5kb20gPSBzaWdcbiAgaW5jbHVkZSBJbnQuU1xuXG4gIHZhbCB1bmlmb3JtIDogU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdFxuICB2YWwgbG9nX3VuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG5lbmRcblxubW9kdWxlIEZvcl9pbnRlZ2VyIChJbnRlZ2VyIDogSW50X3dpdGhfcmFuZG9tKSA9IHN0cnVjdFxuICBsZXQgdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBJbnRlZ2VyLnVuaWZvcm0gcmFuZG9tIH5sbyB+aGkpXG4gIDs7XG5cbiAgbGV0IGxvZ191bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IEludGVnZXIubG9nX3VuaWZvcm0gcmFuZG9tIH5sbyB+aGkpXG4gIDs7XG5cbiAgbGV0IG5vbl91bmlmb3JtIGYgbG8gaGkgPVxuICAgIHdlaWdodGVkX3VuaW9uIFsgMC4wNSwgcmV0dXJuIGxvOyAwLjA1LCByZXR1cm4gaGk7IDAuOSwgZiBsbyBoaSBdXG4gIDs7XG5cbiAgbGV0IGluY2x1c2l2ZSA9IG5vbl91bmlmb3JtIHVuaWZvcm1faW5jbHVzaXZlXG4gIGxldCBsb2dfaW5jbHVzaXZlID0gbm9uX3VuaWZvcm0gbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4gIGxldCB1bmlmb3JtX2FsbCA9IHVuaWZvcm1faW5jbHVzaXZlIEludGVnZXIubWluX3ZhbHVlIEludGVnZXIubWF4X3ZhbHVlXG5cbiAgbGV0IGFsbCA9XG4gICAgWyVtYXBcbiAgICAgIGxldCBuZWdhdGl2ZSA9IGJvb2xcbiAgICAgIGFuZCBtYWduaXR1ZGUgPSBsb2dfaW5jbHVzaXZlIEludGVnZXIuemVybyBJbnRlZ2VyLm1heF92YWx1ZSBpblxuICAgICAgaWYgbmVnYXRpdmUgdGhlbiBJbnRlZ2VyLmJpdF9ub3QgbWFnbml0dWRlIGVsc2UgbWFnbml0dWRlXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfaW50ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludFxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludFxuICBlbmQpXG5cbmxldCBpbnQgPSBGb3JfaW50LmFsbFxubGV0IGludF91bmlmb3JtID0gRm9yX2ludC51bmlmb3JtX2FsbFxubGV0IGludF9pbmNsdXNpdmUgPSBGb3JfaW50LmluY2x1c2l2ZVxubGV0IGludF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZVxubGV0IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX2ludDMyID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50MzJcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50MzJcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQzMlxuICBlbmQpXG5cbmxldCBpbnQzMiA9IEZvcl9pbnQzMi5hbGxcbmxldCBpbnQzMl91bmlmb3JtID0gRm9yX2ludDMyLnVuaWZvcm1fYWxsXG5sZXQgaW50MzJfaW5jbHVzaXZlID0gRm9yX2ludDMyLmluY2x1c2l2ZVxubGV0IGludDMyX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDMyLnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50MzJfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5sb2dfaW5jbHVzaXZlXG5sZXQgaW50MzJfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDMyLmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX2ludDYzID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjNcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2M1xuICBlbmQpXG5cbmxldCBpbnQ2MyA9IEZvcl9pbnQ2My5hbGxcbmxldCBpbnQ2M191bmlmb3JtID0gRm9yX2ludDYzLnVuaWZvcm1fYWxsXG5sZXQgaW50NjNfaW5jbHVzaXZlID0gRm9yX2ludDYzLmluY2x1c2l2ZVxubGV0IGludDYzX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX2ludDY0ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2NFxuICBlbmQpXG5cbmxldCBpbnQ2NCA9IEZvcl9pbnQ2NC5hbGxcbmxldCBpbnQ2NF91bmlmb3JtID0gRm9yX2ludDY0LnVuaWZvcm1fYWxsXG5sZXQgaW50NjRfaW5jbHVzaXZlID0gRm9yX2ludDY0LmluY2x1c2l2ZVxubGV0IGludDY0X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX25hdGl2ZWludCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE5hdGl2ZWludFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5uYXRpdmVpbnRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5uYXRpdmVpbnRcbiAgZW5kKVxuXG5sZXQgbmF0aXZlaW50ID0gRm9yX25hdGl2ZWludC5hbGxcbmxldCBuYXRpdmVpbnRfdW5pZm9ybSA9IEZvcl9uYXRpdmVpbnQudW5pZm9ybV9hbGxcbmxldCBuYXRpdmVpbnRfaW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2xvZ19pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmxvZ19pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBmbG9hdF96ZXJvX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCAwLlxubGV0IGZsb2F0X3plcm9fbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIDAuXG5cbmxldCBmbG9hdF9tYXhfcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID1cbiAgRmxvYXQub25lX3VscCBgRG93biBGbG9hdC5taW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG47O1xuXG5sZXQgZmxvYXRfc3Vibm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5taW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWluX3N1Ym5vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgRmxvYXQubWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9zdWJub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIGZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlID0gRmxvYXQubWF4X2Zpbml0ZV92YWx1ZVxubGV0IGZsb2F0X21pbl9ub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfbm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X25vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X2luZl9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQuaW5maW5pdHlcbmxldCBmbG9hdF9pbmZfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIEZsb2F0LmluZmluaXR5XG5sZXQgZmxvYXRfbmFuX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5uYW5cbmxldCBmbG9hdF9taW5fbmFuX21hbnRpc3NhID0gSW50NjMuc3VjYyBmbG9hdF9pbmZfbWFudGlzc2FcbmxldCBmbG9hdF9tYXhfbmFuX21hbnRpc3NhID0gZmxvYXRfbWF4X25vcm1hbF9tYW50aXNzYVxubGV0IGZsb2F0X251bV9tYW50aXNzYV9iaXRzID0gNTJcblxuKCogV2Ugd2VpZ2h0IG1hbnRpc3NhcyBzbyB0aGF0IFwiaW50ZWdlci1saWtlXCIgdmFsdWVzLCBhbmQgdmFsdWVzIHdpdGggb25seSBhIGZldyBkaWdpdHNcbiAgIHBhc3QgdGhlIGRlY2ltYWwsIGFyZSByZWFzb25hYmx5IGNvbW1vbi4gKilcbmxldCBmbG9hdF9ub3JtYWxfbWFudGlzc2EgPVxuICBsZXQlYmluZCBudW1fYml0cyA9IEZvcl9pbnQudW5pZm9ybV9pbmNsdXNpdmUgMCBmbG9hdF9udW1fbWFudGlzc2FfYml0cyBpblxuICBsZXQlbWFwIGJpdHMgPVxuICAgIEZvcl9pbnQ2My5pbmNsdXNpdmUgSW50NjMuemVybyAoSW50NjMucHJlZCAoSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgbnVtX2JpdHMpKVxuICBpblxuICBJbnQ2My5zaGlmdF9sZWZ0IGJpdHMgKEludC4oIC0gKSBmbG9hdF9udW1fbWFudGlzc2FfYml0cyBudW1fYml0cylcbjs7XG5cbmxldCBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9sb3cgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQlbWFwIG9mZnNldCA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZSAwIChJbnQuKCAtICkgdXBwZXJfYm91bmQgbG93ZXJfYm91bmQpIGluXG4gIEludC4oICsgKSBsb3dlcl9ib3VuZCBvZmZzZXRcbjs7XG5cbmxldCBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9oaWdoIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0JW1hcCBvZmZzZXQgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmUgMCAoSW50LiggLSApIHVwcGVyX2JvdW5kIGxvd2VyX2JvdW5kKSBpblxuICBJbnQuKCAtICkgdXBwZXJfYm91bmQgb2Zmc2V0XG47O1xuXG4oKiBXZSB3ZWlnaHQgZXhwb25lbnRzIHN1Y2ggdGhhdCB2YWx1ZXMgbmVhciAxIGFyZSBtb3JlIGxpa2VseS4gKilcbmxldCBmbG9hdF9leHBvbmVudCA9XG4gIGxldCBtaWRwb2ludCA9IEZsb2F0LmllZWVfZXhwb25lbnQgMS4gaW5cbiAgdW5pb25cbiAgICBbIGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2hpZ2ggZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCBtaWRwb2ludFxuICAgIDsgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfbG93IG1pZHBvaW50IGZsb2F0X21heF9ub3JtYWxfZXhwb25lbnRcbiAgICBdXG47O1xuXG5sZXQgZmxvYXRfemVybyA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4blxuICAgIH5uZWdhdGl2ZVxuICAgIH5leHBvbmVudDpmbG9hdF96ZXJvX2V4cG9uZW50XG4gICAgfm1hbnRpc3NhOmZsb2F0X3plcm9fbWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9zdWJub3JtYWwgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSByZXR1cm4gZmxvYXRfc3Vibm9ybWFsX2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9XG4gICAgRm9yX2ludDYzLmxvZ19pbmNsdXNpdmUgZmxvYXRfbWluX3N1Ym5vcm1hbF9tYW50aXNzYSBmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhXG4gIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X25vcm1hbCA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IGZsb2F0X2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9IGZsb2F0X25vcm1hbF9tYW50aXNzYSBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9pbmZpbml0ZSA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4blxuICAgIH5uZWdhdGl2ZVxuICAgIH5leHBvbmVudDpmbG9hdF9pbmZfZXhwb25lbnRcbiAgICB+bWFudGlzc2E6ZmxvYXRfaW5mX21hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfbmFuID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gcmV0dXJuIGZsb2F0X25hbl9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPSBGb3JfaW50NjMuaW5jbHVzaXZlIGZsb2F0X21pbl9uYW5fbWFudGlzc2EgZmxvYXRfbWF4X25hbl9tYW50aXNzYSBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9vZl9jbGFzcyBjID1cbiAgbWF0Y2ggKGMgOiBGbG9hdC5DbGFzcy50KSB3aXRoXG4gIHwgWmVybyAtPiBmbG9hdF96ZXJvXG4gIHwgU3Vibm9ybWFsIC0+IGZsb2F0X3N1Ym5vcm1hbFxuICB8IE5vcm1hbCAtPiBmbG9hdF9ub3JtYWxcbiAgfCBJbmZpbml0ZSAtPiBmbG9hdF9pbmZpbml0ZVxuICB8IE5hbiAtPiBmbG9hdF9uYW5cbjs7XG5cbmxldCBmbG9hdF93ZWlnaHRfb2ZfY2xhc3MgYyA9XG4gIG1hdGNoIChjIDogRmxvYXQuQ2xhc3MudCkgd2l0aFxuICB8IFplcm8gLT4gMS5cbiAgfCBTdWJub3JtYWwgLT4gMTAuXG4gIHwgTm9ybWFsIC0+IDEwMC5cbiAgfCBJbmZpbml0ZSAtPiAxLlxuICB8IE5hbiAtPiAxLlxuOztcblxubGV0IGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgZmlsdGVyID1cbiAgTGlzdC5maWx0ZXJfbWFwIEZsb2F0LkNsYXNzLmFsbCB+ZjooZnVuIGMgLT5cbiAgICBpZiBmaWx0ZXIgYyB0aGVuIFNvbWUgKGZsb2F0X3dlaWdodF9vZl9jbGFzcyBjLCBmbG9hdF9vZl9jbGFzcyBjKSBlbHNlIE5vbmUpXG4gIHw+IHdlaWdodGVkX3VuaW9uXG47O1xuXG5sZXQgZmxvYXRfZmluaXRlID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFplcm8gfCBTdWJub3JtYWwgfCBOb3JtYWwgLT4gdHJ1ZVxuICAgIHwgSW5maW5pdGUgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXRfd2l0aG91dF9uYW4gPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgWmVybyB8IFN1Ym5vcm1hbCB8IE5vcm1hbCB8IEluZmluaXRlIC0+IHRydWVcbiAgICB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdCA9IGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1biBfIC0+IHRydWUpXG5cbmxldCBmbG9hdF9maW5pdGVfbm9uX3plcm8gPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgU3Vibm9ybWFsIHwgTm9ybWFsIC0+IHRydWVcbiAgICB8IFplcm8gfCBJbmZpbml0ZSB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdF9zdHJpY3RseV9wb3NpdGl2ZSA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZV9ub25femVybyBpblxuICBGbG9hdC5hYnMgdFxuOztcblxubGV0IGZsb2F0X3N0cmljdGx5X25lZ2F0aXZlID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlX25vbl96ZXJvIGluXG4gIH4tLihGbG9hdC5hYnMgdClcbjs7XG5cbmxldCBmbG9hdF9wb3NpdGl2ZV9vcl96ZXJvID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlIGluXG4gIEZsb2F0LmFicyB0XG47O1xuXG5sZXQgZmxvYXRfbmVnYXRpdmVfb3JfemVybyA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZSBpblxuICB+LS4oRmxvYXQuYWJzIHQpXG47O1xuXG5sZXQgZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGlmIChub3QgKEZsb2F0LmlzX2Zpbml0ZSBsb3dlcl9ib3VuZCkpIHx8IG5vdCAoRmxvYXQuaXNfZmluaXRlIHVwcGVyX2JvdW5kKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmxvYXQudW5pZm9ybV9leGNsdXNpdmU6IGJvdW5kcyBhcmUgbm90IGZpbml0ZVwiXG4gICAgICAgICAgKGxvd2VyX2JvdW5kIDogZmxvYXQpXG4gICAgICAgICAgKHVwcGVyX2JvdW5kIDogZmxvYXQpXTtcbiAgbGV0IGxvd2VyX2luY2x1c2l2ZSA9IEZsb2F0Lm9uZV91bHAgYFVwIGxvd2VyX2JvdW5kIGluXG4gIGxldCB1cHBlcl9pbmNsdXNpdmUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHVwcGVyX2JvdW5kIGluXG4gIGlmIGxvd2VyX2luY2x1c2l2ZSA+IHVwcGVyX2luY2x1c2l2ZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmxvYXQudW5pZm9ybV9leGNsdXNpdmU6IHJlcXVlc3RlZCByYW5nZSBpcyBlbXB0eVwiXG4gICAgICAgICAgKGxvd2VyX2JvdW5kIDogZmxvYXQpXG4gICAgICAgICAgKHVwcGVyX2JvdW5kIDogZmxvYXQpXTtcbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uZmxvYXQgcmFuZG9tIH5sbzpsb3dlcl9pbmNsdXNpdmUgfmhpOnVwcGVyX2luY2x1c2l2ZSlcbjs7XG5cbmxldCBmbG9hdF9pbmNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBpZiBGbG9hdC5lcXVhbCBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZFxuICB0aGVuIHJldHVybiBsb3dlcl9ib3VuZFxuICBlbHNlIGlmIEZsb2F0LiggPSApIChGbG9hdC5vbmVfdWxwIGBVcCBsb3dlcl9ib3VuZCkgdXBwZXJfYm91bmRcbiAgdGhlbiB1bmlvbiBbIHJldHVybiBsb3dlcl9ib3VuZDsgcmV0dXJuIHVwcGVyX2JvdW5kIF1cbiAgZWxzZVxuICAgIHdlaWdodGVkX3VuaW9uXG4gICAgICBbIDAuMDUsIHJldHVybiBsb3dlcl9ib3VuZFxuICAgICAgOyAwLjA1LCByZXR1cm4gdXBwZXJfYm91bmRcbiAgICAgIDsgMC45LCBmbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZFxuICAgICAgXVxuOztcblxubGV0IHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoID1cbiAgbGlzdF93aXRoX2xlbmd0aCBjaGFyX2dlbiB+bGVuZ3RoIHw+IG1hcCB+ZjpTdHJpbmcub2ZfY2hhcl9saXN0XG47O1xuXG5sZXQgc3RyaW5nX29mIGNoYXJfZ2VuID1cbiAgYmluZCBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCB+ZjooZnVuIGxlbmd0aCAtPlxuICAgIHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoKVxuOztcblxubGV0IHN0cmluZ19ub25fZW1wdHlfb2YgY2hhcl9nZW4gPVxuICBiaW5kIHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCB+ZjooZnVuIGxlbmd0aCAtPlxuICAgIHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoKVxuOztcblxubGV0IHN0cmluZyA9IHN0cmluZ19vZiBjaGFyXG5sZXQgc3RyaW5nX25vbl9lbXB0eSA9IHN0cmluZ19ub25fZW1wdHlfb2YgY2hhclxubGV0IHN0cmluZ193aXRoX2xlbmd0aCB+bGVuZ3RoID0gc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXIgfmxlbmd0aFxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmdcblxubGV0IHNleHBfb2YgYXRvbSA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCViaW5kIHNpemUgPSBzaXplIGluXG4gICAgKCogY2hvb3NlIGEgbnVtYmVyIHdlaWdodGVkIGxvdyBzbyB3ZSBoYXZlIGEgZGVjcmVhc2luZywgYnV0IG5vdCB2YW5pc2hpbmcsIGNoYW5jZVxuICAgICAgIHRvIGdlbmVyYXRlIGF0b21zIGFzIHNpemUgZ3Jvd3MgKilcbiAgICBtYXRjaCViaW5kIEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgKHNpemUgKyAxKSB3aXRoXG4gICAgKCogZ2VuZXJhdGUgYW4gYXRvbSB1c2luZyB0aGUgZ2l2ZW4gc2l6ZSAqKVxuICAgIHwgMCAtPlxuICAgICAgbGV0JW1hcCBhdG9tID0gYXRvbSBpblxuICAgICAgU2V4cC5BdG9tIGF0b21cbiAgICAoKiByZWx5aW5nIG9uIFtMaXN0Lmdlbl0gdG8gZGlzdHJpYnV0ZSBbc2l6ZV0gb3ZlciBzdWItc2V4cHMgKilcbiAgICB8IF8gLT5cbiAgICAgIGxldCVtYXAgbGlzdCA9IGxpc3Qgc2VsZiBpblxuICAgICAgU2V4cC5MaXN0IGxpc3QpXG47O1xuXG5sZXQgc2V4cCA9IHNleHBfb2Ygc3RyaW5nXG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW4gPVxuICBsZXQlYmluZCBrZXlzID0gbGlzdCBrZXlfZ2VuIGluXG4gIGxldCBrZXlzID0gTGlzdC5kZWR1cF9hbmRfc29ydCBrZXlzIH5jb21wYXJlOmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gIGxldCViaW5kIGRhdGEgPSBsaXN0X3dpdGhfbGVuZ3RoIGRhdGFfZ2VuIH5sZW5ndGg6KExpc3QubGVuZ3RoIGtleXMpIGluXG4gIHJldHVybiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgKExpc3QuemlwX2V4biBrZXlzIGRhdGEpKVxuOztcblxubGV0IHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gIG1hcCAobGlzdCBlbHRfZ2VuKSB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9saXN0IH5jb21wYXJhdG9yKVxuOztcblxubGV0IGNvbXBhcmF0b3Jfb2ZfbVxuICAgICAgKHR5cGUgYSBjKVxuICAgICAgKG1vZHVsZSBNIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjKVxuICA9XG4gIE0uY29tcGFyYXRvclxuOztcblxubGV0IG1hcF90X20gbSBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW5cbiAgfD4gbWFwIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IHNldF90X20gbSBlbHRfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgfD4gbWFwIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IGJpZ2FycmF5MSB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JW1hcCBlbHRzID0gbGlzdCB0IGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBkaW0gPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IGRpbSB+ZjooZnVuIGkgLT4gZWx0cy4oaSAtIG9mZnNldCkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gYmlnYXJyYXkxIGNoYXIgQ2hhciBDX2xheW91dFxubGV0IGZsb2F0MzJfdmVjID0gYmlnYXJyYXkxIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbmxldCBiaWdhcnJheTJfZGltID1cbiAgbWF0Y2glYmluZCBzaXplIHdpdGhcbiAgfCAwIC0+IHJldHVybiAoMCwgMClcbiAgfCBtYXhfdG90YWxfc2l6ZSAtPlxuICAgIGxldCViaW5kIGEgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZV0sIHdlaWdodGVkIGxvdyB0byBnaXZlIHRoZSBvdGhlclxuICAgICAgICAgZGltZW5zaW9uIGEgZ29vZCBjaGFuY2Ugb2YgYmVpbmcgY29tcGFyYXRpdmVseSBoaWdoICopXG4gICAgICBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgbWF4X3RvdGFsX3NpemVcbiAgICBpblxuICAgIGxldCViaW5kIGIgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZSAvIGFdLCB3ZWlnaHRlZCBoaWdoIHRvIHJlYWNoIGNsb3NlIHRvXG4gICAgICAgICBbbWF4X3RvdGFsX3NpemVdIG1vc3Qgb2YgdGhlIHRpbWUgKilcbiAgICAgIGxldCBtYXhfYiA9IG1heF90b3RhbF9zaXplIC8gYSBpblxuICAgICAgbGV0JW1hcCBiX3dlaWdodGVkX2xvdyA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMCBtYXhfYiBpblxuICAgICAgbWF4X2IgLSBiX3dlaWdodGVkX2xvd1xuICAgIGluXG4gICAgKCogYXZvaWQgYW55IHNrZXcgb2YgYSB2cyBiIGJ5IHJhbmRvbWx5IHN3YXBwaW5nICopXG4gICAgaWYlbWFwIGJvb2wgdGhlbiBhLCBiIGVsc2UgYiwgYVxuOztcblxubGV0IGJpZ2FycmF5MiB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JWJpbmQgZGltMSwgZGltMiA9IGJpZ2FycmF5Ml9kaW0gaW5cbiAgbGV0JW1hcCBlbHRzID0gbGlzdF93aXRoX2xlbmd0aCB+bGVuZ3RoOmRpbTEgKGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0yIHQpIGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdF9tYXAgfmY6QXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gaSBqIC0+XG4gICAgZWx0cy4oaSAtIG9mZnNldCkuKGogLSBvZmZzZXQpKVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gYmlnYXJyYXkyIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBEZWJ1ZyA9IHN0cnVjdFxuICBsZXQgY292ZXJhZ2VcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgQ21wIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHNhbXBsZVxuICAgID1cbiAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICBzYW1wbGVcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBDbXApKVxuICAgICAgfmY6KGZ1biBjb3VudHMgdmFsdWUgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBjb3VudHMgdmFsdWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2ICsgMSkpXG4gIDs7XG5cbiAgbGV0IG1vbml0b3IgdCB+ZiA9XG4gICAgbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgZiB2YWx1ZTtcbiAgICAgIHZhbHVlKVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuKCoqIEludGVnZXIgcmVtYWluZGVyLiAgSWYgW3ldIGlzIG5vdCB6ZXJvLCB0aGUgcmVzdWx0XG4gICBvZiBbSW50NjQucmVtIHggeV0gc2F0aXNmaWVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6XG4gICBbeCA9IEludDY0LmFkZCAoSW50NjQubXVsIChJbnQ2NC5kaXYgeCB5KSB5KSAoSW50NjQucmVtIHggeSldLlxuICAgSWYgW3kgPSAwXSwgW0ludDY0LnJlbSB4IHldIHJhaXNlcyBbRGl2aXNpb25fYnlfemVyb10uICopXG5cbnZhbCB1bnNpZ25lZF9yZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFyZW19LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4oKiogVGhlIGVxdWFsIGZ1bmN0aW9uIGZvciBpbnQ2NHMuXG4gICAgQHNpbmNlIDQuMDMuMCAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4gKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGF0b21pYyA6IF8gdFxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdhIFNlcXVlbmNlLnQpIC0+ICdhIHRcbiAgdmFsIHNocmluayA6ICdhIHQgLT4gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+ICdhIFNlcXVlbmNlLnRcblxuICBsZXQgYXRvbWljIF8gPSBTZXF1ZW5jZS5lbXB0eVxuICBsZXQgY3JlYXRlID0gRm4uaWRcbiAgbGV0IHNocmluayA9IEZuLmlkXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBtYXAgdCB+ZiB+Zl9pbnZlcnNlID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxubGV0IGZpbHRlciB0IH5mID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5maWx0ZXIgfmYgKHNocmluayB0IHgpKVxuXG5sZXQgZmlsdGVyX21hcCB0IH5mIH5mX2ludmVyc2UgPVxuICBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlcl9tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxuOztcblxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5vZl9sYXp5IChsYXp5IChzaHJpbmsgKGZvcmNlIGxhenlfdCkgeCkpKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2Zfc2hyaW5rZXIgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX3Nocmlua2VyIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgLT5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgWyBTZXF1ZW5jZS5tYXAgKHNocmluayBmc3RfdCBmc3QpIH5mOihmdW4gZnN0IC0+IGZzdCwgc25kKVxuICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBzbmRfdCBzbmQpIH5mOihmdW4gc25kIC0+IGZzdCwgc25kKVxuICAgICAgXSlcbjs7XG5cbmxldCB1bml0ID0gYXRvbWljXG5sZXQgYm9vbCA9IGF0b21pY1xubGV0IGNoYXIgPSBhdG9taWNcbmxldCBpbnQgPSBhdG9taWNcbmxldCBpbnQzMiA9IGF0b21pY1xubGV0IGludDYzID0gYXRvbWljXG5sZXQgaW50NjQgPSBhdG9taWNcbmxldCBuYXRpdmVpbnQgPSBhdG9taWNcbmxldCBmbG9hdCA9IGF0b21pY1xuXG5sZXQgYmlnYXJyYXkxIHNyYyA9XG4gIGxldCBkaW0gPSBCaWdhcnJheS5BcnJheTEuZGltIHNyYyBpblxuICBtYXRjaCBkaW0gd2l0aFxuICB8IDAgLT4gU2VxdWVuY2UuZW1wdHlcbiAgfCBfIC0+XG4gICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTEua2luZCBzcmMgaW5cbiAgICBsZXQgbGF5b3V0ID0gQmlnYXJyYXkuQXJyYXkxLmxheW91dCBzcmMgaW5cbiAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgIFNlcXVlbmNlLmluaXQgZGltIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IChkaW0gLSAxKSB+ZjooZnVuIGkgLT5cbiAgICAgICAgc3JjLntpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMX0pKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDMyX3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDY0X3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcblxubGV0IGJpZ2FycmF5MiA9XG4gIGxldCBtb2R1bGUgRGltcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGRpbTEgOiBpbnRcbiAgICAgIDsgZGltMiA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBjcmVhdGUgYSA9IEJpZ2FycmF5LkFycmF5Mi57IGRpbTEgPSBkaW0xIGE7IGRpbTIgPSBkaW0yIGEgfVxuICBlbmRcbiAgaW5cbiAgbGV0IHNocmluayBmaWVsZCBzcmMgPVxuICAgIGxldCBkaW1zID0gRGltcy5jcmVhdGUgc3JjIGluXG4gICAgbWF0Y2ggRmllbGQuZ2V0IGZpZWxkIGRpbXMgd2l0aFxuICAgIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTIua2luZCBzcmMgaW5cbiAgICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTIubGF5b3V0IHNyYyBpblxuICAgICAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIGRpbXMgfmY6SW50LnByZWQgaW5cbiAgICAgIFNlcXVlbmNlLmluaXQgKEZpZWxkLmdldCBmaWVsZCBkaW1zKSB+ZjooZnVuIHRvX3NraXAgLT5cbiAgICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICAgIGxldCBza2lwIGkgPSBpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMSBpblxuICAgICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGRpbTEgZGltMiAtPlxuICAgICAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIHsgZGltMTsgZGltMiB9IH5mOnNraXAgaW5cbiAgICAgICAgICBzcmMue2RpbTEsIGRpbTJ9KSlcbiAgaW5cbiAgZnVuIHNyYyAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rIERpbXMuRmllbGRzLmRpbTEgc3JjOyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMiBzcmMgXVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxubGV0IGZsb2F0NjRfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiBOb25lKVxuICAgICAgICAoU2VxdWVuY2UubWFwIH5mOk9wdGlvbi5yZXR1cm4gKHNocmluayB2YWx1ZV90IHZhbHVlKSkpXG47O1xuXG5sZXQgbGlzdCBlbHRfdCA9XG4gIGZpeGVkX3BvaW50IChmdW4gbGlzdF90IC0+XG4gICAgY3JlYXRlIChmdW5jdGlvblxuICAgICAgfCBbXSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiB0YWlsXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBlbHRfdCBoZWFkKSB+ZjooZnVuIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgbGlzdF90IHRhaWwpIH5mOihmdW4gdGFpbCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgXSkpXG47O1xuXG5sZXQgc3RyaW5nID0gbWFwIChsaXN0IGNoYXIpIH5mOlN0cmluZy5vZl9jaGFyX2xpc3QgfmZfaW52ZXJzZTpTdHJpbmcudG9fbGlzdFxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmcgfmZfaW52ZXJzZTpCeXRlcy50b19zdHJpbmdcbmxldCBhcnJheSB0ID0gbWFwIChsaXN0IHQpIH5mOkFycmF5Lm9mX2xpc3QgfmZfaW52ZXJzZTpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlIH5mX2ludmVyc2U6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsIH5mX2ludmVyc2U6TGF6eS5mb3JjZVxuXG5sZXQgc2V4cCA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2hyaW5rZXIgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBfIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IFNleHAuTGlzdCBsIC0+XG4gICAgICAgIGxldCBzaHJpbmtfbGlzdCA9XG4gICAgICAgICAgc2hyaW5rIChsaXN0IHNocmlua2VyKSBsIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIGwgLT4gU2V4cC5MaXN0IGwpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaHJpbmtfdHJlZSA9IFNlcXVlbmNlLm9mX2xpc3QgbCBpblxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIHNocmlua19saXN0OyBzaHJpbmtfdHJlZSBdKSlcbjs7XG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6RWl0aGVyLmZpcnN0XG4gICAgfCBTZWNvbmQgc25kIC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6RWl0aGVyLnNlY29uZClcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcFxuICAgIChlaXRoZXIgb2tfdCBlcnJfdClcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICAgIHwgU2Vjb25kIGVyciAtPiBFcnJvciBlcnIpXG4gICAgfmZfaW52ZXJzZTooZnVuY3Rpb25cbiAgICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QgPVxuICBjcmVhdGUgKGZ1biB0cmVlIC0+XG4gICAgbGV0IGFsaXN0ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3Bfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgYWxpc3QpIH5mOihmdW4gKGssIF8pIC0+XG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgaylcbiAgICBpblxuICAgIGxldCBzaHJpbmtfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUga2V5IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBrZXlfdCBrZXkpIH5mOihmdW4gc21hbGxlcl9rZXkgLT5cbiAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgfmNvbXBhcmF0b3IgdHJlZSB+a2V5OnNtYWxsZXJfa2V5IH5kYXRhXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgYE9rIHRyZWUgLT4gU29tZSB0cmVlXG4gICAgICAgICAgICAgfCBgRHVwbGljYXRlIC0+IE5vbmUpKSlcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZGF0YSA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBTZXF1ZW5jZS5tYXAgKHNocmluayBkYXRhX3QgZGF0YSkgfmY6KGZ1biBzbWFsbGVyX2RhdGEgLT5cbiAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnNldCB+Y29tcGFyYXRvciB0cmVlIH5rZXkgfmRhdGE6c21hbGxlcl9kYXRhKSkpXG4gICAgaW5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIGRyb3Bfa2V5czsgc2hyaW5rX2tleXM7IHNocmlua19kYXRhIF0pXG47O1xuXG5sZXQgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgbGlzdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3BfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgbGlzdCkgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBlbHQpXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2VsdHMgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGxpc3QgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgbGV0IHRyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdCBpblxuICAgICAgICAgICBTZXF1ZW5jZS5maWx0ZXJfbWFwIChzaHJpbmsgZWx0X3QgZWx0KSB+ZjooZnVuIHNtYWxsZXJfZWx0IC0+XG4gICAgICAgICAgICAgbWF0Y2ggU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5tZW0gfmNvbXBhcmF0b3IgdHJlZSBzbWFsbGVyX2VsdCB3aXRoXG4gICAgICAgICAgICAgfCB0cnVlIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgICBTb21lIChTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLmFkZCB0cmVlIH5jb21wYXJhdG9yIHNtYWxsZXJfZWx0KSkpKVxuICAgIGluXG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBkcm9wX2VsdHM7IHNocmlua19lbHRzIF0pXG47O1xuXG5sZXQgbWFwX3Qga2V5X3QgZGF0YV90ID1cbiAgY3JlYXRlIChmdW4gbWFwX3QgLT5cbiAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG1hcF90IGluXG4gICAgbGV0IHQgPVxuICAgICAgbWFwXG4gICAgICAgIChtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV90IGRhdGFfdClcbiAgICAgICAgfmY6KE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5mX2ludmVyc2U6TWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuICAgIGluXG4gICAgc2hyaW5rIHQgbWFwX3QpXG47O1xuXG5sZXQgc2V0X3QgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biBzZXRfdCAtPlxuICAgIGxldCBjb21wYXJhdG9yID0gU2V0LmNvbXBhcmF0b3Igc2V0X3QgaW5cbiAgICBsZXQgdCA9XG4gICAgICBtYXBcbiAgICAgICAgKHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3QpXG4gICAgICAgIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuICAgICAgICB+Zl9pbnZlcnNlOlNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgICBpblxuICAgIHNocmluayB0IHNldF90KVxuOztcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgVGVzdF9pbnRmXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNlZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb25kZXRlcm1pbmlzdGljXG4gICAgICB8IERldGVybWluaXN0aWMgb2Ygc3RyaW5nXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbW9kdWxlIFBvdGVudGlhbGx5X2luZmluaXRlX3NlcXVlbmNlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgU2VxdWVuY2UudFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBzZXF1ZW5jZSA9XG4gICAgICBsZXQgcHJlZml4LCBzdWZmaXggPSBTZXF1ZW5jZS5zcGxpdF9uIHNlcXVlbmNlIDEwMCBpblxuICAgICAgbGV0IHByZWZpeCA9IExpc3QubWFwIHByZWZpeCB+ZjpzZXhwX29mX2VsdCBpblxuICAgICAgbGV0IHN1ZmZpeCA9XG4gICAgICAgIG1hdGNoIFNlcXVlbmNlLmlzX2VtcHR5IHN1ZmZpeCB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPiBbXVxuICAgICAgICB8IGZhbHNlIC0+IFsgWyVtZXNzYWdlIFwiLi4uXCJdIF1cbiAgICAgIGluXG4gICAgICBTZXhwLkxpc3QgKHByZWZpeCBAIHN1ZmZpeClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgc2VlZCA6IFNlZWQudFxuICAgIDsgdGVzdF9jb3VudCA6IGludFxuICAgIDsgc2hyaW5rX2NvdW50IDogaW50XG4gICAgOyBzaXplcyA6IGludCBQb3RlbnRpYWxseV9pbmZpbml0ZV9zZXF1ZW5jZS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5lbmRcblxubGV0IGRlZmF1bHRfY29uZmlnIDogQ29uZmlnLnQgPVxuICB7IHNlZWQgPSBEZXRlcm1pbmlzdGljIFwiYW4gYXJiaXRyYXJ5IGJ1dCBkZXRlcm1pbmlzdGljIHN0cmluZ1wiXG4gIDsgdGVzdF9jb3VudCA9IDEwXzAwMFxuICA7IHNocmlua19jb3VudCA9IDEwXzAwMFxuICA7IHNpemVzID0gU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCB+c3RhcnQ6YGluY2x1c2l2ZSAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICB9XG47O1xuXG5sZXQgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyA9XG4gIG1hdGNoIENvbmZpZy5zZWVkIGNvbmZpZyB3aXRoXG4gIHwgTm9uZGV0ZXJtaW5pc3RpYyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jcmVhdGUgKGZvcmNlIGxhenlfbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgfCBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFN0cmluZy5oYXNoIHN0cmluZylcbjs7XG5cbmxldCBvbmVfc2l6ZV9wZXJfdGVzdCB+KGNvbmZpZyA6IENvbmZpZy50KSA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooY29uZmlnLnNpemVzLCAwKSB+ZjooZnVuIChzaXplcywgbnVtYmVyX29mX3NpemVfdmFsdWVzKSAtPlxuICAgIG1hdGNoIG51bWJlcl9vZl9zaXplX3ZhbHVlcyA+PSBjb25maWcudGVzdF9jb3VudCB3aXRoXG4gICAgfCB0cnVlIC0+IE5vbmVcbiAgICB8IGZhbHNlIC0+XG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBzaXplcyB3aXRoXG4gICAgICAgfCBTb21lIChzaXplLCByZW1haW5pbmdfc2l6ZXMpIC0+XG4gICAgICAgICBTb21lIChzaXplLCAocmVtYWluaW5nX3NpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgKyAxKSlcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suVGVzdC5ydW46IGluc3VmZmljaWVudCBzaXplIHZhbHVlcyBmb3IgdGVzdCBjb3VudFwiXG4gICAgICAgICAgICAgICB+dGVzdF9jb3VudDooY29uZmlnLnRlc3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAgICAobnVtYmVyX29mX3NpemVfdmFsdWVzIDogaW50KV0pKVxuOztcblxubGV0IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciA9XG4gIGxldCByZWMgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yID1cbiAgICBtYXRjaCBzaHJpbmtfY291bnQgd2l0aFxuICAgIHwgMCAtPiBpbnB1dCwgZXJyb3JcbiAgICB8IF8gLT5cbiAgICAgIGxldCBzaHJpbmtfY291bnQgPSBzaHJpbmtfY291bnQgLSAxIGluXG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBhbHRlcm5hdGVzIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gaW5wdXQsIGVycm9yXG4gICAgICAgfCBTb21lIChhbHRlcm5hdGUsIGFsdGVybmF0ZXMpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhbHRlcm5hdGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG4gICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgYWx0ZXJuYXRlIGluXG4gICAgICAgICAgICBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgYWx0ZXJuYXRlIGVycm9yKSlcbiAgaW5cbiAgbGV0IHNocmlua19jb3VudCA9IENvbmZpZy5zaHJpbmtfY291bnQgY29uZmlnIGluXG4gIGxldCBhbHRlcm5hdGVzID0gU2hyaW5rZXIuc2hyaW5rIHNocmlua2VyIGlucHV0IGluXG4gIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvclxuOztcblxubGV0IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgPVxuICBsZXQgcmFuZG9tID0gaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyBpblxuICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAoU2VxdWVuY2Uub2ZfbGlzdCBleGFtcGxlcylcbiAgICAob25lX3NpemVfcGVyX3Rlc3QgfmNvbmZpZ1xuICAgICB8PiBTZXF1ZW5jZS5tYXAgfmY6KGZ1biBzaXplIC0+IEdlbmVyYXRvci5nZW5lcmF0ZSBnZW5lcmF0b3IgfnNpemUgfnJhbmRvbSkpXG47O1xuXG5sZXQgd2l0aF9zYW1wbGUgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBnZW5lcmF0b3IgPVxuICBsZXQgc2VxdWVuY2UgPSBpbnB1dF9zZXF1ZW5jZSB+Y29uZmlnIH5leGFtcGxlcyB+Z2VuZXJhdG9yIGluXG4gIGYgc2VxdWVuY2Vcbjs7XG5cbmxldCByZXN1bHQgKHR5cGUgYSkgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBtID1cbiAgbGV0IChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9IG0gaW5cbiAgd2l0aF9zYW1wbGUgTS5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29uZmlnIH5leGFtcGxlcyB+ZjooZnVuIHNlcXVlbmNlIC0+XG4gICAgbWF0Y2hcbiAgICAgIFNlcXVlbmNlLmZvbGRfcmVzdWx0IHNlcXVlbmNlIH5pbml0OigpIH5mOihmdW4gKCkgaW5wdXQgLT5cbiAgICAgICAgbWF0Y2ggZiBpbnB1dCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAoaW5wdXQsIGVycm9yKSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiBPayAoKVxuICAgIHwgRXJyb3IgKGlucHV0LCBlcnJvcikgLT5cbiAgICAgIGxldCBzaHJpbmtlciA9IE0ucXVpY2tjaGVja19zaHJpbmtlciBpblxuICAgICAgbGV0IGlucHV0LCBlcnJvciA9IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciBpblxuICAgICAgRXJyb3IgKGlucHV0LCBlcnJvcikpXG47O1xuXG5sZXQgcnVuICh0eXBlIGEpIH5mID9jb25maWcgP2V4YW1wbGVzIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gIGxldCBmIHggPVxuICAgIE9yX2Vycm9yLnRyeV93aXRoX2pvaW4gfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBtYXRjaCByZXN1bHQgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNKSB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogdGVzdCBmYWlsZWRcIiAoaW5wdXQgOiBNLnQpIChlcnJvciA6IEVycm9yLnQpXVxuOztcblxubGV0IHdpdGhfc2FtcGxlX2V4biB+ZiA/Y29uZmlnID9leGFtcGxlcyBnZW5lcmF0b3IgPVxuICBsZXQgZiB4ID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBmIHgpIGluXG4gIHdpdGhfc2FtcGxlIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciB8PiBPcl9lcnJvci5va19leG5cbjs7XG5cbmxldCBydW5fZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIHRlc3RhYmxlID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGggfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBydW4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgfD4gT3JfZXJyb3Iub2tfZXhuXG47O1xuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBPYnNlcnZlcjBcblxubGV0IHVubWFwIHQgfmYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgdCAoZiB4KSB+c2l6ZSB+aGFzaClcbmxldCBvZl9oYXNoX2ZvbGQgZiA9IGNyZWF0ZSAoZnVuIHggfnNpemU6XyB+aGFzaCAtPiBmIGhhc2ggeClcbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSAoZm9yY2UgbGF6eV90KSB4IH5zaXplIH5oYXNoKVxuXG5sZXQgZml4ZWRfcG9pbnQgd3JhcCA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAod3JhcCAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBvZl9sYXp5IGxhenlfdFxuOztcblxubGV0IHVuaXQgPSBvcGFxdWVcbmxldCBib29sID0gb2ZfaGFzaF9mb2xkIEJvb2wuaGFzaF9mb2xkX3RcbmxldCBjaGFyID0gb2ZfaGFzaF9mb2xkIENoYXIuaGFzaF9mb2xkX3RcbmxldCBpbnQgPSBvZl9oYXNoX2ZvbGQgSW50Lmhhc2hfZm9sZF90XG5sZXQgaW50MzIgPSBvZl9oYXNoX2ZvbGQgSW50MzIuaGFzaF9mb2xkX3RcbmxldCBpbnQ2MyA9IG9mX2hhc2hfZm9sZCBJbnQ2My5oYXNoX2ZvbGRfdFxubGV0IGludDY0ID0gb2ZfaGFzaF9mb2xkIEludDY0Lmhhc2hfZm9sZF90XG5sZXQgbmF0aXZlaW50ID0gb2ZfaGFzaF9mb2xkIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxubGV0IGZsb2F0ID0gb2ZfaGFzaF9mb2xkIEZsb2F0Lmhhc2hfZm9sZF90XG5sZXQgc3RyaW5nID0gb2ZfaGFzaF9mb2xkIFN0cmluZy5oYXNoX2ZvbGRfdFxubGV0IHNleHAgPSBvZl9oYXNoX2ZvbGQgU2V4cC5oYXNoX2ZvbGRfdFxubGV0IGJpZ3N0cmluZyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9jaGFyKVxubGV0IGZsb2F0MzJfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0MzJfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGJ5dGVzID0gdW5tYXAgc3RyaW5nIH5mOkJ5dGVzLnRvX3N0cmluZ1xuXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gZWl0aGVyIH5zaXplIH5oYXNoIC0+XG4gICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IGZzdCAtPiBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDEpXG4gICAgfCBTZWNvbmQgc25kIC0+IG9ic2VydmUgc25kX3Qgc25kIH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMikpXG47O1xuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICB8IEVycm9yIGVyciAtPiBTZWNvbmQgZXJyKVxuOztcblxubGV0IGJvdGggZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biAoZnN0LCBzbmQpIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaCBpblxuICAgIGxldCBoYXNoID0gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2ggaW5cbiAgICBoYXNoKVxuOztcblxubGV0IG9wdGlvbiB2YWx1ZV90ID1cbiAgdW5tYXAgKGVpdGhlciBvcGFxdWUgdmFsdWVfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEZpcnN0ICgpXG4gICAgfCBTb21lIHZhbHVlIC0+IFNlY29uZCB2YWx1ZSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gbGlzdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICBHZW5lcmF0b3Iuc2l6ZXMgfm1pbl9sZW5ndGg6bGVuZ3RoIH5tYXhfbGVuZ3RoOmxlbmd0aCAoKVxuICAgICAgfD4gR2VuZXJhdG9yLmdlbmVyYXRlIH5zaXplIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZDJfZXhuIGxpc3Qgc2l6ZXMgfmluaXQ6KGhhc2hfZm9sZF9pbnQgaGFzaCAwKSB+ZjooZnVuIGhhc2ggZWx0IHNpemUgLT5cbiAgICAgIG9ic2VydmUgZWx0X3QgZWx0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSkpKVxuOztcblxubGV0IGFycmF5IHQgPSB1bm1hcCAobGlzdCB0KSB+ZjpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSB1bm1hcCB0IH5mOlJlZi4oICEgKVxubGV0IGxhenlfdCB0ID0gdW5tYXAgdCB+ZjpMYXp5LmZvcmNlXG5cbmxldCBmbiBkb20gcm5nID1cbiAgY3JlYXRlIChmdW4gZiB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgc2l6ZXMgPVxuICAgICAgKCogRW1waXJpY2FsbHksIGRvdWJsaW5nIHRoZSBzaXplIHdoZW4gZ2VuZXJhdGluZyB0aGUgbGlzdCBvZiBpbnB1dHMgZ2l2ZXMgdXMgbXVjaFxuICAgICAgICAgYmV0dGVyIGNvdmVyYWdlIG9mIHRoZSBzcGFjZSBvZiBmdW5jdGlvbnMuICopXG4gICAgICBHZW5lcmF0b3IuZ2VuZXJhdGUgKEdlbmVyYXRvci5zaXplcyAoKSkgfnNpemU6KHNpemUgKiAyKSB+cmFuZG9tXG4gICAgaW5cbiAgICBMaXN0LmZvbGQgc2l6ZXMgfmluaXQ6aGFzaCB+ZjooZnVuIGhhc2ggc2l6ZSAtPlxuICAgICAgbGV0IHggPSBHZW5lcmF0b3IuZ2VuZXJhdGUgZG9tIH5zaXplIH5yYW5kb20gaW5cbiAgICAgIG9ic2VydmUgcm5nIChmIHgpIH5zaXplIH5oYXNoKSlcbjs7XG5cbmxldCBtYXBfdHJlZSBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKGxpc3QgKGJvdGgga2V5X29icyBkYXRhX29icykpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fYWxpc3Rcbjs7XG5cbmxldCBzZXRfdHJlZSBlbHRfb2JzID0gdW5tYXAgKGxpc3QgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0XG5cbmxldCBtYXBfdCBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbjs7XG5cbmxldCBzZXRfdCBlbHRfb2JzID0gdW5tYXAgKHNldF90cmVlIGVsdF9vYnMpIH5mOlNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiIsIm1vZHVsZSBHZW5lcmF0b3IgPSBHZW5lcmF0b3Jcbm1vZHVsZSBPYnNlcnZlciA9IE9ic2VydmVyXG5tb2R1bGUgU2hyaW5rZXIgPSBTaHJpbmtlclxubW9kdWxlIFRlc3QgPSBUZXN0XG5tb2R1bGUgRXhwb3J0ID0gRXhwb3J0XG5pbmNsdWRlIEV4cG9ydFxuXG4oKiovKiopXG5cbigqXyBUaGlzIG1vZHVsZSBpcyBleHBvc2VkIG9ubHkgdG8gbWFrZSBvY2FtbGRvYyBvdXRwdXQgbW9yZSByZWFkYWJsZS4gKilcbm1vZHVsZSBXaXRoX2Jhc2ljX3R5cGVzID0gV2l0aF9iYXNpY190eXBlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQmlnYXJyYXlfaGVscGVycyA9IEJpZ2FycmF5X2hlbHBlcnNcbmVuZFxuIiwibW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHAsIHR5cGVyZXBdXG5cbiAgdmFsIHNpZ25lZCA6IGJvb2xcbiAgdmFsIG51bV9iaXRzIDogaW50XG4gIHZhbCBudW1fYnl0ZXMgOiBpbnRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgTyA6IHNpZ1xuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBtb2R1bGUgV3JhcCA6IHNpZ1xuICAgICAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgICBlbmRcbiAgZW5kXG5cbmVuZFxuXG5sZXQgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIEJhc2UucmFpc2VfcyBbJW1lc3NhZ2UgKG1vZF9uYW1lIF4gXCI6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZFwiKSB+XzoodG9fc3RyaW5nIHgpXVxuW0BAY29sZF1cbjs7XG5cbmxldCB0cnVuY191bnNpZ25lZCA6IHR5cGUgYSBiLiBjb252OihhIC0+IGIpIC0+IGxvZ2FuZDooYSAtPiBhIC0+IGEpIC0+IG1hc2s6YSAtPiBhIC0+IGIgPVxuICBmdW4gfmNvbnYgfmxvZ2FuZCB+bWFzayB4IC0+IGNvbnYgKGxvZ2FuZCB4IG1hc2spXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGV4bl91bnNpZ25lZFxuICA6IHR5cGUgYSBiLlxuICAgIGNvbnY6KGEgLT4gYilcbiAgICAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKVxuICAgIC0+IG1hc2s6YVxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBiXG4gID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIGNvbnYgeSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgdHJ1bmNfc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdDppbnQgLT4gYSAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCAtPiBzaGlmdF9yaWdodCAoc2hpZnRfbGVmdCB4IHNoaWZ0KSBzaGlmdFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnRfcmlnaHQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnQ6aW50XG4gICAgLT4gZXF1YWw6KGEgLT4gYSAtPiBib29sKVxuICAgIC0+IG1vZF9uYW1lOnN0cmluZ1xuICAgIC0+IHRvX3N0cmluZzooYSAtPiBzdHJpbmcpXG4gICAgLT4gYVxuICAgIC0+IGFcbiAgPVxuICBmdW4gfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeCAtPlxuICBsZXQgeSA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggaW5cbiAgaWYgZXF1YWwgeCB5IHRoZW4geSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbjs7XG5cbmxldCBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4ID1cbiAgaWYgZ3JlYXRlcl9lcXVhbCB4IHplcm8gdGhlbiB4IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9XG4gIHJhaXNlIChTZXhwbGliMC5TZXhwX2NvbnYuT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcbjs7XG5cbm1vZHVsZSBSZXByMzIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuU3lzLkltbWVkaWF0ZTY0Lk1ha2UgKEJhc2UuSW50KSAoQmFzZS5JbnQzMilcblxuICBsZXQgdG9faW50MzIgKHggOiB0KSA6IEJhc2UuSW50MzIudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiB4XG4gIDs7XG5cbiAgKCogc2lnbi1leHRlbmRpbmcgY29udmVyc2lvbiB0byBpbnQ2NCAqKVxuICBsZXQgdG9faW50NjQgKHggOiB0KSA6IEJhc2UuSW50NjQudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiBCYXNlLkludDY0Lm9mX2ludDMyIHhcbiAgOztcbmVuZFxuXG4oKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0eXBlcyAqKVxudHlwZSBpbnQ4ID0gaW50XG50eXBlIHVpbnQ4ID0gaW50XG50eXBlIGludDE2ID0gaW50XG50eXBlIHVpbnQxNiA9IGludFxudHlwZSBpbnQzMiA9IFJlcHIzMi50XG50eXBlIHVpbnQzMiA9IFJlcHIzMi50XG50eXBlIGludDYzID0gQmFzZS5JbnQ2My50XG50eXBlIHVpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSBpbnQ2NCA9IEJhc2UuSW50NjQudFxudHlwZSB1aW50NjQgPSBCYXNlLkludDY0LnRcblxubW9kdWxlIEludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMTI4XG4gIGxldCBtYXhfdmFsdWUgPSAxMjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICBsZXQgbW9kX25hbWUgPSBcIkludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfaW50MzJfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDMyLnRvX2ludF90cnVuYyAoUmVwcjMyLnRvX2ludDMyIHgpKVxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfZXhuIChSZXByMzIudG9faW50MzIgeCkpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50OCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IDI1NVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gIGxldCBtYXNrID0gMHhGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50OFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuNjQgeCA9XG4gICAgZXhuX3Vuc2lnbmVkXG4gICAgICB+Y29udlxuICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgfm1hc2s6bWFzazY0XG4gICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgfm1vZF9uYW1lXG4gICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJbnQxNiA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IC0zMjc2OFxuICBsZXQgbWF4X3ZhbHVlID0gMzI3NjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQxNlwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSA2NTUzNVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl90cnVuYyB4ID0gdHJ1bmM2NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfZXhuIHggPSBleG42NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQxNl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYWNrZW5kMzJfUyA9IHNpZ1xuICBtb2R1bGUgU2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMiA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzIgOiB0IC0+IEJhc2UuSW50MzIudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQ4IDogaW50OCAtPiB0XG4gICAgdmFsIG9mX2ludDE2IDogaW50MTYgLT4gdFxuICAgIHZhbCBvZl9pbnQ2M190cnVuYyA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogaW50NjMgLT4gdFxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IGludDY0IC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfZXhuIDogaW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDMyX3dyYXAgOiB1aW50MzIgLT4gdFxuICAgIHZhbCBvZl91aW50MzJfZXhuIDogdWludDMyIC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFVuc2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMl90cnVuYyA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfZXhuIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMl90cnVuYyA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfZXhuIDogdCAtPiBCYXNlLkludDMyLnRcbiAgICB2YWwgb2ZfYmFzZV9pbnQ2NF90cnVuYyA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfZXhuIDogQmFzZS5JbnQ2NC50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQ2NCA6IHQgLT4gQmFzZS5JbnQ2NC50XG4gICAgdmFsIHRvX2Jhc2VfaW50X2V4biA6IHQgLT4gQmFzZS5JbnQudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl91aW50OCA6IHVpbnQ4IC0+IHRcbiAgICB2YWwgb2ZfdWludDE2IDogdWludDE2IC0+IHRcbiAgICB2YWwgb2ZfdWludDYzX3RydW5jIDogdWludDYzIC0+IHRcbiAgICB2YWwgb2ZfdWludDYzX2V4biA6IHVpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2NF90cnVuYyA6IHVpbnQ2NCAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2NF9leG4gOiB1aW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfaW50MzJfd3JhcCA6IGludDMyIC0+IHRcbiAgICB2YWwgb2ZfaW50MzJfZXhuIDogaW50MzIgLT4gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQmFja2VuZDMyIDogc2lnXG4gIHZhbCBpbXBsIDogKG1vZHVsZSBCYWNrZW5kMzJfUylcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgSSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgQmFzZS5JbnQzMi5taW5fdmFsdWVcbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyBCYXNlLkludDMyLm1heF92YWx1ZVxuICAgICAgbGV0IHNpZ25lZCA9IHRydWVcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gICAgICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICAgICAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICAgICAgbGV0IG1vZF9uYW1lID0gXCJJbnQzMlwiXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgICAgICgqIFV0aWxpdGllcyAqKVxuICAgICAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzIgeCA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyIHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQ4IHggPSAoeCA6IEludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MTYgeCA9ICh4IDogSW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQzMl93cmFwIHggPSB0cnVuYyB4XG4gICAgICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuIHhcblxuICAgICAgKCogTWlzY2VsbGFuZW91cyAqKVxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFVuc2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludC5vZl9pbnQ2NF90cnVuYyA0Mjk0OTY3Mjk1TFxuICAgICAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgICAgIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICAgICAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICAgICAgbGV0IG1hc2sgPSBCYXNlLkludDY0LnRvX2ludF90cnVuYyAweEZGRkZGRkZGTFxuICAgICAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgICAgIGxldCBlcXVhbCA9IEJhc2UuSW50LmVxdWFsXG4gICAgICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiVWludDMyXCJcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgICAgICgqIFV0aWxpdGllcyAqKVxuICAgICAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IGV4bjY0IHggPVxuICAgICAgICBleG5fdW5zaWduZWRcbiAgICAgICAgICB+Y29udlxuICAgICAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgICAgICB+bWFzazptYXNrNjRcbiAgICAgICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgICAgIH5tb2RfbmFtZVxuICAgICAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgICAgICB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl90cnVuYyB4ID1cbiAgICAgICAgQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgKGxvZ2FuZDY0IChCYXNlLkludDY0Lm9mX2ludDMyIHgpIG1hc2s2NClcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX3RydW5jIHggPSBCYXNlLkludC50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWYgQmFzZS5JbnQuKCA8PSApIHggKEJhc2UuSW50Lm9mX2ludDY0X3RydW5jIDIxNDc0ODM2NDdMKVxuICAgICAgICB0aGVuIEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHhcbiAgICAgICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludC50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50LnRvX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludF9leG4geCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQ4IHggPSAoeCA6IFVpbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQxNiB4ID0gKHggOiBVaW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQzMl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBNaXNjZWxsYW5lb3VzICopXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBOID0gc3RydWN0XG4gICAgbW9kdWxlIFNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQzMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IEludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IEJhc2UuSW50NjMudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX2V4biB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF9leG4geCA9IEJhc2UuSW50NjQudG9faW50MzJfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfdWludDMyX2V4biB4IDogdCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50MzIuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50MzIuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQzMi4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludDMyLiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDMyLiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQzMi4oIC8gKVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFVuc2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQzMlxuICAgICAgbGV0IGNvbXBhcmUgeCB5ID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2NvbXBhcmUgeCB5IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1heF92YWx1ZSA9IC0xbFxuICAgICAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiVWludDMyXCJcbiAgICAgIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDMyLnRvX3N0cmluZ1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDMyLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgICAgICBpZiBCYXNlLkludDY0LiggPj0gKSB4IDBMICYmIEJhc2UuSW50NjQuKCA8PSApIHggNDI5NDk2NzI5NUxcbiAgICAgICAgdGhlbiBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHhcbiAgICAgICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50MzIudG9faW50NjQgeCkgMHhGRkZGRkZGRkxcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnRfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICAgIHw+IEJhc2UuSW50MzIudG9faW50X2V4blxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBVaW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogVWludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSBvZl9iYXNlX2ludDY0X3RydW5jIChCYXNlLkludDYzLnRvX2ludDY0IHgpXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3VpbnQ2M19leG4geCA9IG9mX2Jhc2VfaW50NjRfZXhuIChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSBvZl9iYXNlX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfZXhuIHggPSBvZl9iYXNlX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50MzJfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBzZXhwX29mX3QgeCA9IEJhc2UuU2V4cC5BdG9tIChTdGRsaWIuUHJpbnRmLnNwcmludGYgXCIlbHVcIiB4KVxuXG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICAgICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJWx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgICAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICAgICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgICAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICAgICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfZGl2XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpID1cbiAgICBtYXRjaCBSZXByMzIucmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBJIDogQmFja2VuZDMyX1MpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgTiA6IEJhY2tlbmQzMl9TKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnQzMiA9IHN0cnVjdFxuICBtb2R1bGUgTSA9ICh2YWwgQmFja2VuZDMyLmltcGwgOiBCYWNrZW5kMzJfUylcbiAgaW5jbHVkZSBNLlNpZ25lZFxuZW5kXG5cbm1vZHVsZSBVaW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5VbnNpZ25lZFxuZW5kXG5cbm1vZHVsZSBJbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAaW1tZWRpYXRlNjRdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2M1xuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2M1xuICBsZXQgemVybyA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2My5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjNcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjMuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBCYXNlLkludDYzLm9mX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludDYzLiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDYzLiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50NjMuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludDYzLiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQ2My4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDYzLiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50NjMuKCAvIClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICAoKiB4IGFuZCB5IGFyZSBzaWduLWV4dGVuZGVkLCB3aGljaCBwcmVzZXJ2ZXMgdGhlIGhpZ2ggYml0ICopXG4gICAgU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmUgKEJhc2UuSW50NjMudG9faW50NjQgeCkgKEJhc2UuSW50NjMudG9faW50NjQgeSlcbiAgOztcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjNcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2M1wiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyAoVWludDMyLnRvX2Jhc2VfaW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2NF9leG4gKHggOiB1aW50NjQpIDogdCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDYzX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgKHRvX2Jhc2VfaW50NjQgeCkpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2My50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJUx1XCIgb2ZfYmFzZV9pbnQ2NF9leG4gd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDYzLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG5cbiAgICAgIGxldCAoIC8gKSB4IHkgPVxuICAgICAgICBvZl9iYXNlX2ludDY0X3RydW5jIChCYXNlLkludDY0LiggLyApICh0b19iYXNlX2ludDY0IHgpICh0b19iYXNlX2ludDY0IHkpKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQ2NFxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDY0Lm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDY0XCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjQub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzIHggPSBCYXNlLkludDYzLnRvX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50NjQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50NjQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQ2NC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50NjQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludDY0LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50NjQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2NC4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2NC4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2NC4oICogKVxuICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQ2NC4oIC8gKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDY0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjQudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCBjb21wYXJlID0gU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmVcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDY0XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDY0XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IC0xTFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjRcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2NFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gVWludDMyLnRvX2Jhc2VfaW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjMgKHggOiB1aW50NjMpIDogaW50NjQgPVxuICAgIEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2NF93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiIHgpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2NC50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJUx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2NC50X29mX3NleHA6IGludGVnZXIgYXRvbSBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSB4IHkgPSBjb21wYXJlIHggeSA+PSAwXG4gICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgIGxldCAoID4gKSB4IHkgPSBjb21wYXJlIHggeSA+IDBcbiAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2NC4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2NC4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2NC4oICogKVxuICAgICAgbGV0ICggLyApID0gU3RkbGliLkludDY0LnVuc2lnbmVkX2RpdlxuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEdldCA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQ4IDogdCAtPiBwb3M6aW50IC0+IGludDhcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQ4IDogdCAtPiBwb3M6aW50IC0+IHVpbnQ4XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDE2XG4gIHZhbCBnZXRfaW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MTZcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2XG4gIHZhbCBnZXRfdWludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNlxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMlxuICB2YWwgZ2V0X2ludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IGludDMyXG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMlxuICB2YWwgZ2V0X3VpbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzJcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50NjRcbiAgdmFsIGdldF9pbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NFxuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjRcbiAgdmFsIGdldF91aW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0ID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDggOiB0IC0+IHBvczppbnQgLT4gaW50OCAtPiB1bml0XG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50OCA6IHQgLT4gcG9zOmludCAtPiB1aW50OCAtPiB1bml0XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDE2IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNiAtPiB1bml0XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNiAtPiB1bml0XG4gIHZhbCBzZXRfdWludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNiAtPiB1bml0XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IGludDMyIC0+IHVuaXRcbiAgdmFsIHNldF9pbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMiAtPiB1bml0XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMiAtPiB1bml0XG4gIHZhbCBzZXRfdWludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMiAtPiB1bml0XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDY0IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NCAtPiB1bml0XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NCAtPiB1bml0XG4gIHZhbCBzZXRfdWludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgR2V0X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHVzZSBuYXRpdmUgZW5kaWFubmVzcyAoaGVuY2UgdGhlIGBfbmVgIHN1ZmZpeCkuICopXG4gIHZhbCBnZXRfdWludDggOiB0IC0+IGludCAtPiBCYXNlLkludC50XG4gIHZhbCBnZXRfdWludDE2X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudFxuICB2YWwgZ2V0X2ludDMyX25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQzMi50XG4gIHZhbCBnZXRfaW50NjRfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDY0LnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXRfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG11c3QgdXNlIG5hdGl2ZSBlbmRpYW5uZXNzIChoZW5jZSB0aGUgYF9uZWAgc3VmZml4KS4gKilcbiAgdmFsIHNldF91aW50OCA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnQgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQxNl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDMyX25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQzMi50IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQ2NF9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50NjQudCAtPiB1bml0XG5lbmRcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogQ2FtbC5JbnQzMi50IC0+IENhbWwuSW50MzIudCA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbm1vZHVsZSBNYWtlX2dldCAoRiA6IEdldF9mdW5jdGlvbnMpIDogR2V0IHdpdGggdHlwZSB0IDo9IEYudCA9IHN0cnVjdFxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ4IHQgfnBvcyA9IEludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDggdCB+cG9zID0gVWludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQxNl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgSW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcbiAgOztcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgSW50MzIub2ZfYmFzZV9pbnQzMiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIFVpbnQzMi5vZl9iYXNlX2ludDMyX3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDY0X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4XG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBVaW50NjQub2ZfYmFzZV9pbnQ2NF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgTWFrZV9zZXQgKEYgOiBTZXRfZnVuY3Rpb25zKSA6IFNldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50OCB0IH5wb3MgeCA9IEYuc2V0X3VpbnQ4IHQgcG9zIHhcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ4IHQgfnBvcyB4ID0gc2V0X3VpbnQ4IHQgfnBvcyAoVWludDgub2ZfaW50OF93cmFwIHgpXG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDE2X2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4IGluXG4gICAgRi5zZXRfdWludDE2X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X3VpbnQxNl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDE2X2xlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9sZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG4gIGxldCBzZXRfaW50MTZfYmUgdCB+cG9zIHggPSBzZXRfdWludDE2X2JlIHQgfnBvcyAoVWludDE2Lm9mX2ludDE2X3dyYXAgeClcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50MzJfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gSW50MzIudG9fYmFzZV9pbnQzMiB4IGluXG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDMyX25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDMyX2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDMyX2xlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2xlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcbiAgbGV0IHNldF91aW50MzJfYmUgdCB+cG9zIHggPSBzZXRfaW50MzJfYmUgdCB+cG9zIChJbnQzMi5vZl91aW50MzJfd3JhcCB4KVxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ2NF9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDY0X2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4IGluXG4gICAgRi5zZXRfaW50NjRfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQ2NF9sZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9sZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG4gIGxldCBzZXRfdWludDY0X2JlIHQgfnBvcyB4ID0gc2V0X2ludDY0X2JlIHQgfnBvcyAoSW50NjQub2ZfdWludDY0X3dyYXAgeClcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIEJ5dGVzMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCeXRlcy50XG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gQ2FtbC5JbnQ2NC50ID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuICBleHRlcm5hbCBzZXRfdWludDggOiBCeXRlcy50IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuICBleHRlcm5hbCBzZXRfdWludDE2X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG4gIGV4dGVybmFsIHNldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuICBleHRlcm5hbCBzZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBDYW1sLkludDY0LnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dldCAoQnl0ZXMpXG4gIGluY2x1ZGUgTWFrZV9zZXQgKEJ5dGVzKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlczBVbnNhZmUpXG4gICAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMwVW5zYWZlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IENhbWwuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBDYW1sLkludDY0LnQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NHVcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dldCAoU3RyaW5nMClcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX2dldCAoU3RyaW5nMFVuc2FmZSlcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIEJpZ3N0cmluZzAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICAoIGNoYXJcbiAgICAsIFN0ZGxpYi5CaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdFxuICAgICwgU3RkbGliLkJpZ2FycmF5LmNfbGF5b3V0IClcbiAgICAgIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEudFxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCBnZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuICBleHRlcm5hbCBkaW0gOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbmVuZFxuXG5pbmNsdWRlIEJpZ3N0cmluZzBcblxuZXh0ZXJuYWwgYXV4X2NyZWF0ZSA6IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlczppbnQgLT4gc2l6ZTppbnQgLT4gdCA9IFwiYmlnc3RyaW5nX2FsbG9jXCJcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG4oKiBPbmUgbmVlZHMgdG8gdXNlIFtDYW1sLlN5cy53b3JkX3NpemVdIHNvIHRoYXQgaXRzIHZhbHVlIGlzIGtub3duIGF0IGNvbXBpbGUtdGltZS4gKilcbmxldCBhcmNoX3NpeHR5Zm91ciA9IENhbWwuU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gQ2FtbC5TeXMuYmlnX2VuZGlhblxubGV0IG5vdF9vbl8zMmJpdCA9IENhbWwuU3lzLndvcmRfc2l6ZSA+IDMyXG5cbmxldCBjcmVhdGUgP21heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyBzaXplID1cbiAgbGV0IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyA9XG4gICAgT3B0aW9uLnZhbHVlIG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyB+ZGVmYXVsdDooLTEpXG4gIGluXG4gICgqIFRoaXMgY2hlY2sgaXMgaW1wb3J0YW50IGJlY2F1c2UgW2F1eF9jcmVhdGUgfnNpemU6KC0xKV0gcmFpc2VzIFtPdXRfb2ZfbWVtb3J5XSwgd2hpY2hcbiAgICAgY291bGQgYmUgY29uZnVzaW5nIGR1cmluZyBkZWJ1Z2dpbmcuICopXG4gIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJjcmVhdGU6IHNpemUgPSAlZCA8IDBcIiBzaXplKTtcbiAgYXV4X2NyZWF0ZSB+bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5zaXplXG47O1xuXG5sZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG5leHRlcm5hbCBpc19tbWFwcGVkIDogdCAtPiBib29sID0gXCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViXCIgW0BAbm9hbGxvY11cblxubGV0IGluaXQgbiB+ZiA9XG4gIGxldCB0ID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdC57aX0gPC0gZiBpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCBjaGVja19hcmdzIH5sb2MgfnBvcyB+bGVuIChic3RyIDogdCkgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgKGxvYyBeIFwiOiBwb3MgPCAwXCIpO1xuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgKGxvYyBeIFwiOiBsZW4gPCAwXCIpO1xuICBsZXQgYnN0cl9sZW4gPSBsZW5ndGggYnN0ciBpblxuICAoKiBCZSBjYXJlZnVsIHdpdGggb3ZlcmZsb3chICBXZSBjb3VsZCBoYXZlIGJvZ29ucyBsaWtlIFtwb3MgPSBJbnQubWF4X3ZhbHVlXSBvciBbbGVuID1cbiAgICAgSW50Lm1heF92YWx1ZV0gcGFzc2VkIGJ5IHRoZSB1c2VyLiAqKVxuICBpZiBic3RyX2xlbiAtIHBvcyA8IGxlblxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiQmlnc3RyaW5nLiVzOiBsZW5ndGgoYnN0cikgPCBwb3MgKyBsZW5cIiBsb2MpXG47O1xuXG5sZXQgZ2V0X29wdF9sZW4gYnN0ciB+cG9zID0gZnVuY3Rpb25cbiAgfCBTb21lIGxlbiAtPiBsZW5cbiAgfCBOb25lIC0+IGxlbmd0aCBic3RyIC0gcG9zXG47O1xuXG4oKiBCbGl0dGluZyAqKVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6dFxuICAtPiBzcmNfcG9zOmludFxuICAtPiBkc3Q6dFxuICAtPiBkc3RfcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpZ3N0cmluZ19ibGl0X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuKCogRXhwb3NpbmcgdGhlIGV4dGVybmFsIHZlcnNpb24gb2YgZ2V0L3NldCBzdXBwb3J0cyBiZXR0ZXIgaW5saW5pbmcuICopXG5leHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcblxubW9kdWxlIEJpZ3N0cmluZ19zZXF1ZW5jZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuZW5kXG5cbm1vZHVsZSBCeXRlc19zZXF1ZW5jZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlc1xuXG4gIGxldCBjcmVhdGUgfmxlbiA9IEJ5dGVzLmNyZWF0ZSBsZW5cbiAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuZW5kXG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5tb2R1bGUgRnJvbV9ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChCeXRlc19zZXF1ZW5jZSlcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6Ynl0ZXNcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OnRcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKEJpZ3N0cmluZ19zZXF1ZW5jZSlcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6dFxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6Ynl0ZXNcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJ5dGVzX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOnN0cmluZ1xuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6dFxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X3N0cmluZ19iaWdzdHJpbmdfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFRvX2J5dGVzXG4gIGluY2x1ZGUgQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnc3RyaW5nMCkgKFRvX2J5dGVzKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGcm9tX3N0cmluZy5zdWJvXG5sZXQgb2ZfYnl0ZXMgPSBGcm9tX2J5dGVzLnN1Ym9cbmxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcuc3Vib1xubGV0IHRvX2J5dGVzID0gVG9fYnl0ZXMuc3Vib1xubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxubGV0IHRfb2Zfc2V4cCA6IFNleHAudCAtPiB0ID0gZnVuY3Rpb25cbiAgfCBBdG9tIHN0ciAtPiBvZl9zdHJpbmcgc3RyXG4gIHwgTGlzdCBfIGFzIHNleHAgLT5cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYub2Zfc2V4cF9lcnJvciBcImJpZ3N0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjb3B5IHQgOiB0ID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG5sZXQgY29uY2F0ID1cbiAgbGV0IGFwcGVuZCB+c3JjIH5kc3QgfmRzdF9wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgIGxldCBzcmNfcG9zID0gMCBpblxuICAgIGxldCBkc3RfcG9zID0gIWRzdF9wb3NfcmVmIGluXG4gICAgYmxpdCB+ZHN0IH5kc3RfcG9zIH5zcmMgfnNyY19wb3MgfmxlbjtcbiAgICBkc3RfcG9zX3JlZiA6PSBkc3RfcG9zICsgbGVuXG4gIGluXG4gIGZ1biA/c2VwIGxpc3QgLT5cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGNyZWF0ZSAwXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIGxldCBoZWFkX2xlbiA9IGxlbmd0aCBoZWFkIGluXG4gICAgICBsZXQgc2VwX2xlbiA9IE9wdGlvbi52YWx1ZV9tYXAgc2VwIH5mOmxlbmd0aCB+ZGVmYXVsdDowIGluXG4gICAgICBsZXQgdGFpbF9jb3VudCA9IExpc3QubGVuZ3RoIHRhaWwgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBoZWFkX2xlbiArIChzZXBfbGVuICogdGFpbF9jb3VudCkgKyBMaXN0LnN1bSAobW9kdWxlIEludCkgdGFpbCB+ZjpsZW5ndGhcbiAgICAgIGluXG4gICAgICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgbGV0IGRzdF9wb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGFwcGVuZCB+c3JjOmhlYWQgfmRzdCB+ZHN0X3Bvc19yZWY7XG4gICAgICBMaXN0Lml0ZXIgdGFpbCB+ZjooZnVuIHNyYyAtPlxuICAgICAgICAobWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHNlcCAtPiBhcHBlbmQgfnNyYzpzZXAgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgICBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZik7XG4gICAgICBhc3NlcnQgKCFkc3RfcG9zX3JlZiA9IGxlbik7XG4gICAgICBkc3Rcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1zZXQgOiB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBjaGFyIC0+IHVuaXQgPSBcImJpZ3N0cmluZ19tZW1zZXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtc2V0IHQgfnBvcyB+bGVuIGMgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdCk7XG4gIHVuc2FmZV9tZW1zZXQgdCB+cG9zIH5sZW4gY1xuOztcblxuKCogQ29tcGFyaXNvbiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gdFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXAgdDEgfnBvczEgdDIgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczIgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDIpO1xuICB1bnNhZmVfbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBfYnl0ZXNcbiAgOiAgdFxuICAtPiBwb3MxOmludFxuICAtPiBCeXRlcy50XG4gIC0+IHBvczI6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbWNtcF9ieXRlcyB0MSB+cG9zMSBieXRlcyB+cG9zMiB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczEgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDEpO1xuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvczpwb3MyXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJ5dGVzLmxlbmd0aCBieXRlcyk7XG4gIHVuc2FmZV9tZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlblxuOztcblxubGV0IGNvbXBhcmUgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBsZXQgbGVuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBsZW4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IGxlbiA9IEludC5taW4gbGVuMSBsZW4yIGluXG4gICAgbWF0Y2ggdW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbiB3aXRoXG4gICAgfCAwIC0+IGlmIGxlbjEgPCBsZW4yIHRoZW4gLTEgZWxzZSBpZiBsZW4xID4gbGVuMiB0aGVuIDEgZWxzZSAwXG4gICAgfCBuIC0+IG4pXG47O1xuXG5leHRlcm5hbCBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbiAgOiAgSGFzaC5zdGF0ZVxuICAtPiB0XG4gIC0+IEhhc2guc3RhdGVcbiAgPSBcImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgX21ha2luZ19zdXJlX3RoZV9DX2JpbmRpbmdfdGFrZXNfYW5faW50ICh4IDogSGFzaC5zdGF0ZSkgPSAoeCA6PiBpbnQpXG5sZXQgaGFzaF9mb2xkX3QgPSBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbmxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcblxudHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubGV0IGVxdWFsIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIEludC5lcXVhbCBsZW4xIGxlbjIgJiYgSW50LmVxdWFsICh1bnNhZmVfbWVtY21wIHQxIH5wb3MxOjAgdDIgfnBvczI6MCB+bGVuOmxlbjEpIDApXG47O1xuXG4oKiBTZWFyY2ggKilcblxuZXh0ZXJuYWwgdW5zYWZlX2ZpbmQgOiB0IC0+IGNoYXIgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludCA9IFwiYmlnc3RyaW5nX2ZpbmRcIlxuW0BAbm9hbGxvY11cblxubGV0IGZpbmQgPyhwb3MgPSAwKSA/bGVuIGNociBic3RyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgY2hlY2tfYXJncyB+bG9jOlwiZmluZFwiIH5wb3MgfmxlbiBic3RyO1xuICBsZXQgcmVzID0gdW5zYWZlX2ZpbmQgYnN0ciBjaHIgfnBvcyB+bGVuIGluXG4gIGlmIHJlcyA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSByZXNcbjs7XG5cbigqIHZpbTogc2V0IGZpbGV0eXBlPW9jYW1sIDogKilcblxuKCogQmluYXJ5LXBhY2tpbmcgbGlrZSBhY2Nlc3NvcnMgKilcblxuZXh0ZXJuYWwgaW50MzJfb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIGludDMyX3RvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBpbnQ2NF9vZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50NjRfdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzE2IDogdCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfMzIgOiB0IC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzY0IDogdCAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NHVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF8xNiA6IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfMzIgOiB0IC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfNjQgOiB0IC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcblxubGV0IGdldF8xNiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX2dldF8xNiB0IHBvc1xuOztcblxubGV0IGdldF8zMiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50MzIgPVxuICBjaGVja19hcmdzIH5sb2M6XCJnZXRfMzJcIiB+cG9zIH5sZW46NCB0O1xuICB1bnNhZmVfZ2V0XzMyIHQgcG9zXG47O1xuXG5sZXQgZ2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQ2NCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9nZXRfNjQgdCBwb3Ncbjs7XG5cbmxldCBzZXRfMTZfdHJ1bmMgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludCkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX3NldF8xNiB0IHBvcyB2XG47O1xuXG5sZXQgc2V0XzMyICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQzMikgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzMyXCIgfnBvcyB+bGVuOjQgdDtcbiAgdW5zYWZlX3NldF8zMiB0IHBvcyB2XG47O1xuXG5sZXQgc2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQ2NCkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzY0XCIgfnBvcyB+bGVuOjggdDtcbiAgdW5zYWZlX3NldF82NCB0IHBvcyB2XG47O1xuXG5sZXQgc2lnbl9leHRlbmRfMTYgdSA9ICh1IGxzbCAoSW50Lm51bV9iaXRzIC0gMTYpKSBhc3IgKEludC5udW1fYml0cyAtIDE2KVxuXG5sZXQgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYyA9XG4gIGlmIHggPCAwIHx8IHggPiAweEZGRkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYyA9XG4gIGlmIHggPCAtMHg4MDAwIHx8IHggPiAweDdGRkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSAxNi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQ4IHggfmxvYyA9XG4gIGlmIHggPCAwIHx8IHggPiAweEZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgOC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDggeCB+bG9jID1cbiAgaWYgeCA8IC0weDgwIHx8IHggPiAweDdGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgOC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDMyID1cbiAgaWYgbm90IGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIF8gfmxvYzpfIC0+ICgpXG4gIGVsc2VcbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IC0xIGxzbCAzMSAmJiB4IDwgMSBsc2wgMzFcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgMzItYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50MzIgPVxuICBpZiBub3QgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gMFxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuICBlbHNlXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAwICYmIHggPCAxIGxzbCAzMlxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQ2NCB4IH5sb2MgPVxuICBpZiB4ID49IDBcbiAgdGhlbiAoKVxuICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfaW50MTYgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpXG5sZXQgdW5zYWZlX3JlYWRfaW50MTZfc3dhcCB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoc3dhcDE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKSlcbmxldCB1bnNhZmVfd3JpdGVfaW50MTYgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfaW50MTZfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgKHN3YXAxNiB4KVxubGV0IHJlYWRfaW50MTYgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKGdldF8xNiB0IHBvcylcbmxldCByZWFkX2ludDE2X3N3YXAgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHN3YXAxNiAoZ2V0XzE2IHQgcG9zKSlcblxubGV0IHdyaXRlX2ludDE2X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuOztcblxubGV0IHdyaXRlX2ludDE2X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyAoc3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfdWludDE2IHQgfnBvcyA9IHVuc2FmZV9nZXRfMTYgdCBwb3NcbmxldCB1bnNhZmVfcmVhZF91aW50MTZfc3dhcCB0IH5wb3MgPSBzd2FwMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpXG5sZXQgdW5zYWZlX3dyaXRlX3VpbnQxNiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV91aW50MTZfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgKHN3YXAxNiB4KVxubGV0IHJlYWRfdWludDE2IHQgfnBvcyA9IGdldF8xNiB0IHBvc1xubGV0IHJlYWRfdWludDE2X3N3YXAgdCB+cG9zID0gc3dhcDE2IChnZXRfMTYgdCBwb3MpXG5cbmxldCB3cml0ZV91aW50MTZfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV91aW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIHhcbjs7XG5cbmxldCB3cml0ZV91aW50MTZfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF91aW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX3VpbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgKHN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX2ludDMyX2ludCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHVuc2FmZV9nZXRfMzIgdCBwb3MpXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXAgdCB+cG9zID0gaW50MzJfdG9faW50IChzd2FwMzIgKHVuc2FmZV9nZXRfMzIgdCBwb3MpKVxubGV0IHVuc2FmZV9yZWFkX2ludDMyIHQgfnBvcyA9IHVuc2FmZV9nZXRfMzIgdCBwb3NcbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIHQgfnBvcyA9IHN3YXAzMiAodW5zYWZlX2dldF8zMiB0IHBvcylcbmxldCB1bnNhZmVfd3JpdGVfaW50MzIgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKHN3YXAzMiB4KVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9pbnQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChpbnQzMl9vZl9pbnQgeClcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChzd2FwMzIgKGludDMyX29mX2ludCB4KSlcbmxldCByZWFkX2ludDMyX2ludCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKGdldF8zMiB0IHBvcylcbmxldCByZWFkX2ludDMyX2ludF9zd2FwIHQgfnBvcyA9IGludDMyX3RvX2ludCAoc3dhcDMyIChnZXRfMzIgdCBwb3MpKVxubGV0IHJlYWRfaW50MzIgdCB+cG9zID0gZ2V0XzMyIHQgcG9zXG5sZXQgcmVhZF9pbnQzMl9zd2FwIHQgfnBvcyA9IHN3YXAzMiAoZ2V0XzMyIHQgcG9zKVxubGV0IHdyaXRlX2ludDMyIHQgfnBvcyB4ID0gc2V0XzMyIHQgcG9zIHhcbmxldCB3cml0ZV9pbnQzMl9zd2FwIHQgfnBvcyB4ID0gc2V0XzMyIHQgcG9zIChzd2FwMzIgeClcblxubGV0IHdyaXRlX2ludDMyX2ludF9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF9pbnQzMiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MzJfaW50XCI7XG4gIHNldF8zMiB0IHBvcyAoaW50MzJfb2ZfaW50IHgpXG47O1xuXG5sZXQgd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfaW50MzIgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDMyX2ludFwiO1xuICBzZXRfMzIgdCBwb3MgKHN3YXAzMiAoaW50MzJfb2ZfaW50IHgpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnQgdCB+cG9zID0gaW50NjRfdG9faW50ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludCAoc3dhcDY0ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjQgdCB+cG9zID0gdW5zYWZlX2dldF82NCB0IHBvc1xubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcyA9IHN3YXA2NCAodW5zYWZlX2dldF82NCB0IHBvcylcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0IHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyB4XG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyAoc3dhcDY0IHgpXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIChpbnQ2NF9vZl9pbnQgeClcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXAgdCB+cG9zIHggPVxuICB1bnNhZmVfc2V0XzY0IHQgcG9zIChzd2FwNjQgKGludDY0X29mX2ludCB4KSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9pbnQgdCB+cG9zID0gaW50NjRfdG9faW50IChnZXRfNjQgdCBwb3MpXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfaW50X3N3YXAgdCB+cG9zID0gaW50NjRfdG9faW50IChzd2FwNjQgKGdldF82NCB0IHBvcykpXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjQgdCB+cG9zID0gZ2V0XzY0IHQgcG9zXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfc3dhcCB0IH5wb3MgPSBzd2FwNjQgKGdldF82NCB0IHBvcylcbmxldCB3cml0ZV9pbnQ2NCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyB4XG5sZXQgd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoc3dhcDY0IHgpXG5sZXQgd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChpbnQ2NF9vZl9pbnQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTYgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNlxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2IGVsc2UgdW5zYWZlX3JlYWRfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfdWludDE2XG47O1xuXG5sZXQgZ2V0X2ludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNiBlbHNlIHJlYWRfaW50MTZfc3dhcFxubGV0IGdldF9pbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MTZfc3dhcCBlbHNlIHJlYWRfaW50MTZcbmxldCBnZXRfdWludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTYgZWxzZSByZWFkX3VpbnQxNl9zd2FwXG5sZXQgZ2V0X3VpbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfdWludDE2X3N3YXAgZWxzZSByZWFkX3VpbnQxNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNiBlbHNlIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2IGVsc2UgdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2XG47O1xuXG5sZXQgc2V0X2ludDE2X2JlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X2V4biBlbHNlIHdyaXRlX2ludDE2X3N3YXBfZXhuXG5sZXQgc2V0X2ludDE2X2xlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MTZfZXhuXG5cbmxldCBzZXRfdWludDE2X2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9leG4gZWxzZSB3cml0ZV91aW50MTZfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfdWludDE2X2xlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9zd2FwX2V4biBlbHNlIHdyaXRlX3VpbnQxNl9leG5cbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMiBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzIgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyXG47O1xuXG5sZXQgZ2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyIGVsc2UgcmVhZF9pbnQzMl9zd2FwXG5sZXQgZ2V0X2ludDMyX3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX3N3YXAgZWxzZSByZWFkX2ludDMyXG5sZXQgc2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMiBlbHNlIHdyaXRlX2ludDMyX3N3YXBcbmxldCBzZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX3N3YXAgZWxzZSB3cml0ZV9pbnQzMlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX2ludFxuOztcblxubGV0IGdldF9pbnQzMl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50IGVsc2UgcmVhZF9pbnQzMl9pbnRfc3dhcFxubGV0IGdldF9pbnQzMl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50X3N3YXAgZWxzZSByZWFkX2ludDMyX2ludFxuXG5sZXQgc2V0X2ludDMyX2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX2ludF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfaW50MzJfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MzJfaW50X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfYmVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfaW50IGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludCBlbHNlIHJlYWRfaW50NjRfaW50X3N3YXBcbmxldCBnZXRfaW50NjRfbGVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgcmVhZF9pbnQ2NF9pbnRcbmxldCBzZXRfaW50NjRfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9pbnQgZWxzZSB3cml0ZV9pbnQ2NF9pbnRfc3dhcFxubGV0IHNldF9pbnQ2NF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRfaW50XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0XG47O1xuXG5sZXQgZ2V0X2ludDY0X3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0IGVsc2UgcmVhZF9pbnQ2NF9zd2FwXG5sZXQgZ2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X3N3YXAgZWxzZSByZWFkX2ludDY0XG5sZXQgc2V0X2ludDY0X3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NCBlbHNlIHdyaXRlX2ludDY0X3N3YXBcbmxldCBzZXRfaW50NjRfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X3N3YXAgZWxzZSB3cml0ZV9pbnQ2NFxuXG5sZXQgaW50NjRfY29udl9lcnJvciAoKSA9XG4gIGZhaWx3aXRoIFwidW5zYWZlX3JlYWRfaW50NjQ6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCB1bmJveGVkIVwiXG47O1xuXG5sZXQgdWludDY0X2NvbnZfZXJyb3IgKCkgPVxuICBmYWlsd2l0aCBcInVuc2FmZV9yZWFkX3VpbnQ2NDogdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkIHVuYm94ZWQhXCJcbjs7XG5cbigqIFtQb2x5XSBpcyByZXF1aXJlZCBzbyB0aGF0IHdlIGNhbiBjb21wYXJlIHVuYm94ZWQgW2ludDY0XS4gKilcbmxldFtAaW5saW5lIGFsd2F5c10gaW50NjRfdG9faW50X2V4biBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gLTB4NDAwMF8wMDAwXzAwMDBfMDAwMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gLTB4MDAwMF8wMDAwXzQwMDBfMDAwMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSBpbnQ2NF9jb252X2Vycm9yICgpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQ2NF90b19pbnRfZXhuIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgaWYgUG9seS4obiA+PSAwTCAmJiBuIDwgMHg0MDAwXzAwMDBfMDAwMF8wMDAwTClcbiAgICB0aGVuIGludDY0X3RvX2ludCBuXG4gICAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgaW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2xlIHQgfnBvcylcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDY0X2JlX2V4biB0IH5wb3MgPVxuICB1aW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2JlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfdWludDY0X2xlX2V4biB0IH5wb3MgPSB1aW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2JlID0gdW5zYWZlX3NldF9pbnQ2NF9iZVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2xlID0gdW5zYWZlX3NldF9pbnQ2NF9sZVxuXG5sZXQgc2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50NjQgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDY0X2JlX2V4blwiIG47XG4gIHNldF9pbnQ2NF9iZSB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50NjRfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9sZV9leG5cIiBuO1xuICBzZXRfaW50NjRfbGUgdCB+cG9zIG5cbjs7XG5cbigqIFR5cGUgYW5ub3RhdGlvbnMgb24gdGhlIFt0XXMgYXJlIGltcG9ydGFudCBoZXJlOiBpbiBvcmRlciBmb3IgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlXG4gICBvcHRpbWl6ZWQgY29kZSwgaXQgbmVlZHMgdG8ga25vdyB0aGUgZnVsbHkgaW5zdGFudGlhdGVkIHR5cGUgb2YgdGhlIGJpZ2FycmF5LiBUaGlzIGlzXG4gICBiZWNhdXNlIHRoZSB0eXBlIG9mIHRoZSBiaWdhcnJheSBlbmNvZGVzIHRoZSBlbGVtZW50IGtpbmQgYW5kIHRoZSBsYXlvdXQgb2YgdGhlXG4gICBiaWdhcnJheS4gV2l0aG91dCB0aGUgYW5ub3RhdGlvbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgQyBjYWxsIHRvIHRoZSBnZW5lcmljIGFjY2Vzc1xuICAgZnVuY3Rpb25zLiAqKVxubGV0IHVuc2FmZV9zZXRfdWludDggKHQgOiB0KSB+cG9zIG4gPSBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG5cbmxldCB1bnNhZmVfc2V0X2ludDggKHQgOiB0KSB+cG9zIG4gPVxuICAoKiBJbiBhbGwgdGhlIHNldCBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgYXJlIHRoZXNlIHRlc3RzLCBpdCBsb29rcyBsaWtlIHRoZSB0ZXN0IGNvdWxkIGJlXG4gICAgIHJlbW92ZWQsIHNpbmNlIHRoZXkgYXJlIG9ubHkgY2hhbmdpbmcgdGhlIHZhbHVlcyBvZiB0aGUgYnl0ZXMgdGhhdCBhcmUgbm90XG4gICAgIHdyaXR0ZW4uICopXG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50OCAodCA6IHQpIH5wb3MgPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpIGluXG4gIGlmIG4gPj0gMTI4IHRoZW4gbiAtIDI1NiBlbHNlIG5cbjs7XG5cbmxldCBzZXRfdWludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDhfZXhuXCIgbjtcbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgc2V0X2ludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfaW50OCB+bG9jOlwiQmlnc3RyaW5nLnNldF9pbnQ4X2V4blwiIG47XG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCBnZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS5nZXQgdCBwb3MpXG5cbmxldCBnZXRfaW50OCAodCA6IHQpIH5wb3MgPVxuICBsZXQgbiA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgbWFzazMyX24gPSBDYW1sLk5hdGl2ZWludC4oc3ViIChzaGlmdF9sZWZ0IDFuIDMyKSAxbilcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50MzJfb2ZfaW50MzJfdCBuID1cbiAgaWYgbm90X29uXzMyYml0XG4gIHRoZW5cbiAgICAoKiB1c2UgQ2FtbC5OYXRpdmVpbnQgdG8gZW5zdXJlIGlubGluaW5nIGV2ZW4gd2l0aG91dCB4LWxpYnJhcnktaW5saW5pbmcgKilcbiAgICBDYW1sLk5hdGl2ZWludC4odG9faW50IChsb2dhbmQgKG9mX2ludDMyIG4pIG1hc2szMl9uKSlcbiAgZWxzZSBpbnQzMl90b19pbnQgblxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9zZXRfdWludDMyX2xlIHQgfnBvcyBuID0gdW5zYWZlX3NldF9pbnQzMl90X2xlIHQgfnBvcyAoaW50MzJfb2ZfaW50IG4pXG5sZXRbQGlubGluZV0gdW5zYWZlX3NldF91aW50MzJfYmUgdCB+cG9zIG4gPSB1bnNhZmVfc2V0X2ludDMyX3RfYmUgdCB+cG9zIChpbnQzMl9vZl9pbnQgbilcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gIHVpbnQzMl9vZl9pbnQzMl90ICh1bnNhZmVfZ2V0X2ludDMyX3RfbGUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDMyX2JlIHQgfnBvcyA9XG4gIHVpbnQzMl9vZl9pbnQzMl90ICh1bnNhZmVfZ2V0X2ludDMyX3RfYmUgdCB+cG9zKVxuOztcblxubGV0IHNldF91aW50MzJfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDMyIH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQzMl9sZV9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG5vdF9vbl8zMmJpdCAmJiBuID49IDEgbHNsIDMxIHRoZW4gbiAtICgxIGxzbCAzMikgZWxzZSBuIGluXG4gIHNldF9pbnQzMl9sZV9leG4gdCB+cG9zIG5cbjs7XG5cbmxldCBzZXRfdWludDMyX2JlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQzMiB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50MzJfYmVfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBub3Rfb25fMzJiaXQgJiYgbiA+PSAxIGxzbCAzMSB0aGVuIG4gLSAoMSBsc2wgMzIpIGVsc2UgbiBpblxuICBzZXRfaW50MzJfYmVfZXhuIHQgfnBvcyBuXG47O1xuXG5sZXQgZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPSB1aW50MzJfb2ZfaW50MzJfdCAoZ2V0X2ludDMyX3RfbGUgdCB+cG9zKVxubGV0IGdldF91aW50MzJfYmUgdCB+cG9zID0gdWludDMyX29mX2ludDMyX3QgKGdldF9pbnQzMl90X2JlIHQgfnBvcylcblxubW9kdWxlIEludF9yZXByID0gc3RydWN0XG4gIG1vZHVsZSBGID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdF9mcm96ZW5cblxuICAgIGxldCBnZXRfdWludDggdCBwb3MgPSBnZXRfdWludDggdCB+cG9zXG4gICAgbGV0IHNldF91aW50OCB0IHBvcyB4ID0gQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IHgpXG4gICAgbGV0IGdldF91aW50MTZfbmUgdCBwb3MgPSBnZXRfMTYgdCBwb3NcbiAgICBsZXQgc2V0X3VpbnQxNl9uZSB0IHBvcyB4ID0gc2V0XzE2X3RydW5jIHQgcG9zIHhcbiAgICBsZXQgZ2V0X2ludDMyX25lIHQgcG9zID0gZ2V0XzMyIHQgcG9zXG4gICAgbGV0IHNldF9pbnQzMl9uZSB0IHBvcyB4ID0gc2V0XzMyIHQgcG9zIHhcbiAgICBsZXQgZ2V0X2ludDY0X25lIHQgcG9zID0gZ2V0XzY0IHQgcG9zXG4gICAgbGV0IHNldF9pbnQ2NF9uZSB0IHBvcyB4ID0gc2V0XzY0IHQgcG9zIHhcbiAgZW5kXG5cbiAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX2dldCAoRilcbiAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX3NldCAoRilcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgbW9kdWxlIEYgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHRfZnJvemVuXG5cbiAgICAgIGxldCBnZXRfdWludDggdCBwb3MgPSB1bnNhZmVfZ2V0X3VpbnQ4IHQgfnBvc1xuICAgICAgbGV0IHNldF91aW50OCB0IHBvcyB4ID0gdW5zYWZlX3NldF91aW50OCB0IH5wb3MgeFxuICAgICAgbGV0IGdldF91aW50MTZfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzE2IHQgcG9zXG4gICAgICBsZXQgc2V0X3VpbnQxNl9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG4gICAgICBsZXQgZ2V0X2ludDMyX25lIHQgcG9zID0gdW5zYWZlX2dldF8zMiB0IHBvc1xuICAgICAgbGV0IHNldF9pbnQzMl9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyB4XG4gICAgICBsZXQgZ2V0X2ludDY0X25lIHQgcG9zID0gdW5zYWZlX2dldF82NCB0IHBvc1xuICAgICAgbGV0IHNldF9pbnQ2NF9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyB4XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEludF9yZXByLk1ha2VfZ2V0IChGKVxuICAgIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9zZXQgKEYpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzaWduX2V4dGVuZF8xNiA9IHNpZ25fZXh0ZW5kXzE2XG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIEJsaXRcbmluY2x1ZGUgVGVzdF9ibGl0X2ludGZcblxubW9kdWxlIHR5cGUgU19nZW4gPSBzaWdcbiAgb3BlbiBCbGl0XG5cbiAgdHlwZSAnYSBzcmNcbiAgdHlwZSAnYSBkc3RcblxuICAoKiAgdmFsIGJsaXQgICAgICAgIDogKCdhIHNyYywgJ2EgZHN0KSBibGl0KilcbiAgdmFsIGJsaXRvIDogKCdhIHNyYywgJ2EgZHN0KSBibGl0b1xuXG4gICgqICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXQqKVxuICB2YWwgc3ViIDogKCdhIHNyYywgJ2EgZHN0KSBzdWJcblxuICAoKnZhbCBzdWJvICAgICAgICA6ICgnYSBzcmMsICdhIGRzdCkgc3VibyopXG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX3Rlc3RzX2dlbiA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZXF1YWwgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2xcblxuICAgIHZhbCBvZl9ib29sIDogYm9vbCAtPiBib29sIHRcbiAgZW5kXG5cbiAgdHlwZSAnYSB6XG5cbiAgbW9kdWxlIFNyYyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgY3JlYXRlX2Jvb2wgOiBsZW46aW50IC0+IGJvb2wgeiB0XG4gICAgdmFsIGdldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnRcbiAgICB2YWwgc2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudCAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBEc3QgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gICAgdmFsIGNyZWF0ZV9ib29sIDogbGVuOmludCAtPiBib29sIHogdFxuICAgIHZhbCBnZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50XG4gICAgdmFsIHNldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuICAgIHZhbCBvdmVybGFwcGluZ19zcmNfZHN0IDogWyBgRG9fbm90X2NoZWNrIHwgYENoZWNrIG9mICdhIFNyYy50IC0+ICdhIHQgXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW5cbiAgICAoRm9yX3Rlc3RzIDogRm9yX3Rlc3RzX2dlbilcbiAgICAoVGVzdGVkIDogU19nZW5cbiAgICAgd2l0aCB0eXBlICdhIHNyYyA6PSAnYSBGb3JfdGVzdHMuU3JjLnRcbiAgICAgd2l0aCB0eXBlICdhIGRzdCA6PSAnYSBGb3JfdGVzdHMuRHN0LnQpID1cbnN0cnVjdFxuICBvcGVuIFRlc3RlZFxuICBvcGVuIEZvcl90ZXN0c1xuXG4gIGxldCBpbml0IH5sZW4gfmNyZWF0ZSB+c2V0IH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHNldCB0IGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHRcbiAgOztcblxuICBsZXQgZWx0MSA9IEVsdC5vZl9ib29sIHRydWVcbiAgbGV0IGVsdDIgPSBFbHQub2ZfYm9vbCBmYWxzZVxuICBsZXQgKCkgPSBhc3NlcnQgKG5vdCAoRWx0LmVxdWFsIGVsdDEgZWx0MikpXG4gIGxldCBzcmNfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDEgZWxzZSBlbHQyXG4gIGxldCBkc3RfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDIgZWxzZSBlbHQxXG5cbiAgKCogVGVzdCBbYmxpdF0uICopXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IG4gPSA0IGluXG4gICAgZm9yIHNyY19sZW5ndGggPSAwIHRvIG4gZG9cbiAgICAgIGZvciBkc3RfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICAgIGZvciBzcmNfcG9zID0gMCB0byBzcmNfbGVuZ3RoIGRvXG4gICAgICAgICAgZm9yIGRzdF9wb3MgPSAwIHRvIGRzdF9sZW5ndGggZG9cbiAgICAgICAgICAgIGZvciBzcmNfbGVuID0gMCB0byBtaW4gKHNyY19sZW5ndGggLSBzcmNfcG9zKSAoZHN0X2xlbmd0aCAtIGRzdF9wb3MpIGRvXG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIGxldCBpc19pbl9yYW5nZSBpID0gaSA+PSBkc3RfcG9zICYmIGkgPCBkc3RfcG9zICsgc3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVjayBsZW5ndGggZ2V0IG5hbWUgc2VxdWVuY2UgfmV4cGVjdCA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHNlcXVlbmNlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEVsdC5lcXVhbCAoZ2V0IHNlcXVlbmNlIGkpIChleHBlY3QgaSkpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJidWdcIiAobmFtZSA6IHN0cmluZykgKGkgOiBpbnQpXVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrX3NyYyA9IGNoZWNrIFNyYy5sZW5ndGggU3JjLmdldCBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19kc3QgPSBjaGVjayBEc3QubGVuZ3RoIERzdC5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3JjID1cbiAgICAgICAgICAgICAgICAgIGluaXQgfmxlbjpzcmNfbGVuZ3RoIH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhc3NlcnQgKFNyYy5sZW5ndGggc3JjID0gc3JjX2xlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46ZHN0X2xlbmd0aCB+Y3JlYXRlOkRzdC5jcmVhdGVfYm9vbCB+c2V0OkRzdC5zZXQgfmY6ZHN0X2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChEc3QubGVuZ3RoIGRzdCA9IGRzdF9sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBpbml0X3NyYyAoKSA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gc3JjX2xlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgU3JjLnNldCBzcmMgaSAoc3JjX2JpdCBpKVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcImJsaXQgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdFwiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfaW5fcmFuZ2UgaSB0aGVuIHNyY19iaXQgKHNyY19wb3MgKyBpIC0gZHN0X3BvcykgZWxzZSBkc3RfYml0IGkpO1xuICAgICAgICAgICAgICAgIChtYXRjaCBEc3Qub3ZlcmxhcHBpbmdfc3JjX2RzdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYERvX25vdF9jaGVjayAtPiAoKVxuICAgICAgICAgICAgICAgICB8IGBDaGVjayBzcmNfdG9fZHN0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgZHN0X3BvcyArIHNyY19sZW4gPD0gc3JjX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZHN0ID0gc3JjX3RvX2RzdCBzcmMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdCBvdmVybGFwcGluZ1wiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19iaXQgKGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfcG9zICsgaSAtIGRzdF9wb3MgZWxzZSBpKSkpKSk7XG4gICAgICAgICAgICAgICAgKCogQ2hlY2sgW3N1Yl0uICopXG4gICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9IHN1YiBzcmMgfnBvczpzcmNfcG9zIH5sZW46c3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcInN1YiBzcmNcIiBzcmMgfmV4cGVjdDpzcmNfYml0O1xuICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcInN1YiBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT4gc3JjX2JpdCAoc3JjX3BvcyArIGkpKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIFwiYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfcG9zIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfcG9zIDogaW50KV1cbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgc3JjID0gaW5pdCB+bGVuOjQgfmNyZWF0ZTpTcmMuY3JlYXRlX2Jvb2wgfnNldDpTcmMuc2V0IH5mOnNyY19iaXQgaW5cbiAgICBsZXQgZHN0ID0gaW5pdCB+bGVuOjggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXQgaW5cbiAgICBsZXQgYXNzZXJ0X3JhaXNlcyBmID0gYXNzZXJ0IChFeG4uZG9lc19yYWlzZSBmKSBpblxuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOigtMSkgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOigtMSkgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjUgfnNyY19sZW46MSB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46OCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjUgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjggKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QxXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seSlcbiAgICAoVGVzdGVkIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgICBsZXQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gICAgICAgIGxldCBvZl9ib29sID0gRm4uaWRcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBUZXN0MV9nZW5lcmljXG4gICAgKEVsdCA6IEVsdDEpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICAgIHR5cGUgJ2EgeiA9ICdhIFNlcXVlbmNlLnpcblxuICAgICAgbW9kdWxlIFNyYyA9IFNlcXVlbmNlXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIEVsdF90b19lbHQxIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IEVsdC50XG5cbiAgbGV0IGVxdWFsID0gRWx0LmVxdWFsXG4gIGxldCBvZl9ib29sID0gRWx0Lm9mX2Jvb2xcbmVuZFxuXG5tb2R1bGUgVGVzdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoVGVzdGVkIDogUyB3aXRoIHR5cGUgdCA6PSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU3JjXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdF9kaXN0aW5jdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNyYyA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKERzdCA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBTcmMudCB3aXRoIHR5cGUgZHN0IDo9IERzdC50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNyY1xuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBvcGVuIERzdFxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYERvX25vdF9jaGVja1xuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdCkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlX2Rpc3RpbmN0IChTcmMpIChEc3QpXG4gIGluY2x1ZGUgVGVzdF9kaXN0aW5jdCAoRWx0KSAoU3JjKSAoRHN0KSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0MSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpY19hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQxKSAoU2VxdWVuY2UgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBCbGl0LlNlcXVlbmNlMVxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDFfZ2VuZXJpYyAoRWx0KSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmluYXJ5X3NlYXJjaGFibGVcbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmluYXJ5X3NlYXJjaGFibGVcblxuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSBlbHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EgZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0ID0gc2lnXG4gIGluY2x1ZGUgU19nZW5cblxuICBtb2R1bGUgRm9yX3Rlc3QgOiBzaWdcbiAgICB2YWwgY29tcGFyZSA6IGJvb2wgZWx0IC0+IGJvb2wgZWx0IC0+IGludFxuICAgIHZhbCBzbWFsbCA6IGJvb2wgZWx0XG4gICAgdmFsIGJpZyA6IGJvb2wgZWx0XG4gICAgdmFsIG9mX2FycmF5IDogYm9vbCBlbHQgYXJyYXkgLT4gYm9vbCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUZXN0X2dlbiAoTSA6IEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBvcGVuIE1cblxuICBsZXQldGVzdF9tb2R1bGUgXCJ0ZXN0X2JpbmFyeV9zZWFyY2hhYmxlXCIgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBlbHRfY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBzID0gRm9yX3Rlc3Quc21hbGxcbiAgICAgIGxldCBiID0gRm9yX3Rlc3QuYmlnXG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB+Y29tcGFyZSB0IGhvdyB2ID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgKEZvcl90ZXN0Lm9mX2FycmF5IHQpIGhvdyB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgKCA9ICkgPSBQb2x5LmVxdWFsXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHMgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgcyB8XSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBiID0gU29tZSAyXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiIHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGIgfF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBzID0gTm9uZVxuXG4gICAgICBsZXQgY3JlYXRlX3Rlc3RfY2FzZSAobnVtX3MsIG51bV9iKSA9XG4gICAgICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgYiB+bGVuOihudW1fcyArIG51bV9iKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gbnVtX3MgLSAxIGRvXG4gICAgICAgICAgYXJyLihpKSA8LSBzXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFyclxuICAgICAgOztcblxuICAgICAgbGV0IG9ubHlfc21hbGwgPSAxMF8wMDAsIDBcbiAgICAgIGxldCBvbmx5X2JpZyA9IDAsIDEwXzAwMFxuICAgICAgbGV0IGJvdGggPSAyNTMxLCA0NzE3XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIChjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwpIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBfIC0+IHRydWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBib3RoIGluXG4gICAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSB2IC0+IHYgPSAyNTMxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpID1cbiAgICAgICAgQXJyYXkuaW5pdCAxMDBfMDAwIH5mOihmdW4gaSAtPiBpZiBpID4gNTBfMDAwIHRoZW4gYiBlbHNlIHMpXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBzID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0cyBhcm91bmQgYSBnYXAqKVxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBiID0gU29tZSA5OV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA5OV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgKCogdGVzdCBiZWdpbm5pbmcgb2YgYXJyYXkgKilcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0IGVuZCBvZiBhcnJheSAqKVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgOV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgICAgZm9yIGxlbmd0aCA9IDAgdG8gNSBkb1xuICAgICAgICAgIGZvciBudW1fcyA9IDAgdG8gbGVuZ3RoIGRvXG4gICAgICAgICAgICBsZXQgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggfmY6KGZ1biBpIC0+IGlmIGkgPCBudW1fcyB0aGVuIHMgZWxzZSBiKSBpblxuICAgICAgICAgICAgZm9yIHBvcyA9IC0xIHRvIGxlbmd0aCBkb1xuICAgICAgICAgICAgICBmb3IgbGVuID0gLTEgdG8gbGVuZ3RoICsgMSBkb1xuICAgICAgICAgICAgICAgICgqdHJ5KilcbiAgICAgICAgICAgICAgICBsZXQgc2hvdWxkX3JhaXNlID1cbiAgICAgICAgICAgICAgICAgIEV4bi5kb2VzX3JhaXNlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgICAgICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICAgICAgICAgfnRvdGFsX2xlbmd0aDpsZW5ndGgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5wb3MgfmxlbiB+Y29tcGFyZTplbHRfY29tcGFyZSBgTGFzdF9lcXVhbF90byBzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggc2hvdWxkX3JhaXNlLCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgIHwgdHJ1ZSwgRXJyb3IgXyAtPiAoKVxuICAgICAgICAgICAgICAgIHwgdHJ1ZSwgT2sgXyAtPiBmYWlsd2l0aCBcImV4cGVjdGVkIGl0IHRvIHJhaXNlIGJ1dCBpdCBkaWRuJ3RcIlxuICAgICAgICAgICAgICAgIHwgZmFsc2UsIEVycm9yIF8gLT4gZmFpbHdpdGggXCJleHBlY3RlZCBpdCB0byBub3QgcmFpc2UsIGJ1dCBpdCByYWlzZWRcIlxuICAgICAgICAgICAgICAgIHwgZmFsc2UsIE9rIHJlc3VsdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHNlYXJjaGVkID0gbnVtX3MgLSAxIGluXG4gICAgICAgICAgICAgICAgICBsZXQgY29ycmVjdF9yZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgICBpZiBzZWFyY2hlZCA8IHBvc1xuICAgICAgICAgICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBsZW4gPSAwXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHNlYXJjaGVkID49IHBvcyArIGxlblxuICAgICAgICAgICAgICAgICAgICB0aGVuIFNvbWUgKHBvcyArIGxlbiAtIDEpXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgU29tZSBzZWFyY2hlZFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGlmIG5vdCAoY29ycmVjdF9yZXN1bHQgPSByZXN1bHQpIHRoZW4gZmFpbHdpdGggXCJXcm9uZyByZXN1bHRcIlxuICAgICAgICAgICAgICAgICAgKCp3aXRoIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBmYWlsd2l0aHMgXCJiaW5hcnlfc2VhcmNoIGJ1Z1wiXG4gICAgICAgICAgICAgICAgICAgIChleG4sIGBsZW5ndGggbGVuZ3RoLCBgc2VhcmNoX2tleSBzZWFyY2hfa2V5LCBgcG9zIHBvcywgYGxlbiBsZW4pXG4gICAgICAgICAgICAgICAgICAgIDw6c2V4cF9vZjwgZXhuICogWyBgbGVuZ3RoIG9mIGludCBdICogWyBgc2VhcmNoX2tleSBvZiBpbnQgXVxuICAgICAgICAgICAgICAgICAgICogWyBgcG9zIG9mIGludCBdICogWyBgbGVuIG9mIGludCBdID4+KilcbiAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGEgPSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCAoRm9yX3Rlc3Qub2ZfYXJyYXkgYSlcblxuICAgICAgKCp0ZXN0IGZvciBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCopXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgeCA9IGlmIHggPSBiIHRoZW4gYFJpZ2h0IGVsc2UgYExlZnQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBTb21lIDUwXzAwMFxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiBfID0gYFJpZ2h0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gTm9uZVxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgXyA9IGBMZWZ0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gU29tZSA5OV85OTlcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IE5vbmVcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUZXN0IChNIDogQmluYXJ5X3NlYXJjaGFibGVfYW5kX2Zvcl90ZXN0KSA9IFRlc3RfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBNLnRcbiAgICB0eXBlICdhIGVsdCA9IE0uZWx0XG5cbiAgICBsZXQgYmluYXJ5X3NlYXJjaCA9IE0uYmluYXJ5X3NlYXJjaFxuICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9IE0uYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgZW5kKVxuXG5tb2R1bGUgVGVzdDEgKE0gOiBCaW5hcnlfc2VhcmNoYWJsZTFfYW5kX2Zvcl90ZXN0KSA9IFRlc3RfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBNLnRcbiAgICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgICBsZXQgYmluYXJ5X3NlYXJjaCA9IE0uYmluYXJ5X3NlYXJjaFxuICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9IE0uYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5ID0gTS5Gb3JfdGVzdC5vZl9hcnJheVxuICAgICAgbGV0IGNvbXBhcmUgPSBCb29sLmNvbXBhcmVcbiAgICAgIGxldCBzbWFsbCA9IGZhbHNlXG4gICAgICBsZXQgYmlnID0gdHJ1ZVxuICAgIGVuZFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0IChNIDogSW5kZXhhYmxlX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgPSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlIChNKVxuICBpbmNsdWRlIEJcblxuICBpbmNsdWRlIFRlc3QgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gTS50XG4gICAgICB0eXBlIGVsdCA9IE0uZWx0XG5cbiAgICAgIGluY2x1ZGUgQlxuICAgICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTFfYW5kX3Rlc3QgKE0gOiBJbmRleGFibGUxX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgPSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlMSAoTSlcbiAgaW5jbHVkZSBCXG5cbiAgaW5jbHVkZSBUZXN0MSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBNLnRcblxuICAgICAgaW5jbHVkZSBCXG4gICAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuIEJhc2VcblxuKCoqIEVhY2ggc2luZ2xlX2Vycm9yIGlzIGEgcGF0aCBpbmRpY2F0aW5nIHRoZSBsb2NhdGlvbiB3aXRoaW4gdGhlIGRhdGFzdHJ1Y3R1cmUgaW5cbiAgICBxdWVzdGlvbiB0aGF0IGlzIGJlaW5nIHZhbGlkYXRlZCwgYWxvbmcgd2l0aCBhbiBlcnJvciBtZXNzYWdlLiAqKVxudHlwZSBzaW5nbGVfZXJyb3IgPVxuICB7IHBhdGggOiBzdHJpbmcgbGlzdFxuICA7IGVycm9yIDogRXJyb3IudFxuICB9XG5cbnR5cGUgdCA9IHNpbmdsZV9lcnJvciBsaXN0XG50eXBlICdhIGNoZWNrID0gJ2EgLT4gdFxuXG5sZXQgcGFzcyA6IHQgPSBbXVxuXG5sZXQgZmFpbHMgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EgfSBdXG47O1xuXG5sZXQgZmFpbCBtZXNzYWdlID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSB9IF1cbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBmYWlsX3Mgc2V4cCA9IFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlX3Mgc2V4cCB9IF1cbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0IG9mX2xpc3QgPSBMaXN0LmNvbmNhdFxuXG5sZXQgbmFtZSBuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXSAoKiB3aGVuIHN1Y2Nlc3NmdWwsIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGEgY2xvc3VyZSBmb3IgW35mXSwgYmVsb3cgKilcbiAgfCBfIC0+IExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT4geyBwYXRoID0gbmFtZSA6OiBwYXRoOyBlcnJvciB9KVxuOztcblxubGV0IG5hbWVfbGlzdCBuIGwgPSBuYW1lIG4gKG9mX2xpc3QgbClcbmxldCBmYWlsX2ZuIG1lc3NhZ2UgXyA9IGZhaWwgbWVzc2FnZVxubGV0IHBhc3NfYm9vbCAoXyA6IGJvb2wpID0gcGFzc1xubGV0IHBhc3NfdW5pdCAoXyA6IHVuaXQpID0gcGFzc1xuXG5sZXQgcHJvdGVjdCBmIHYgPVxuICB0cnkgZiB2IHdpdGhcbiAgfCBleG4gLT5cbiAgICBmYWlsX3MgKFNleHAubWVzc2FnZSBcIkV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nIHZhbGlkYXRpb25cIiBbIFwiXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcblxubGV0IHRyeV93aXRoIGYgPVxuICBwcm90ZWN0XG4gICAgKGZ1biAoKSAtPlxuICAgICAgIGYgKCk7XG4gICAgICAgcGFzcylcbiAgICAoKVxuOztcblxubGV0IHBhdGhfc3RyaW5nIHBhdGggPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgcGF0aFxuXG5sZXQgZXJyb3JzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+XG4gICAgRXJyb3IudG9fc3RyaW5nX2h1bSAoRXJyb3IudGFnIGVycm9yIH50YWc6KHBhdGhfc3RyaW5nIHBhdGgpKSlcbjs7XG5cbmxldCByZXN1bHRfZmFpbCB0ID1cbiAgT3JfZXJyb3IuZXJyb3JcbiAgICBcInZhbGlkYXRpb24gZXJyb3JzXCJcbiAgICAoTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiBwYXRoX3N0cmluZyBwYXRoLCBlcnJvcikpXG4gICAgWyVzZXhwX29mOiAoc3RyaW5nICogRXJyb3IudCkgTGlzdC50XVxuW0BAY29sZF1cbjs7XG5cbigqKiBbcmVzdWx0XSBpcyBjYXJlZnVsbHkgaW1wbGVtZW50ZWQgc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCAtLSBjYWxsaW5nIFtyZXN1bHRfZmFpbF0sXG4gICAgd2hpY2ggaXMgbm90IGlubGluZWFibGUsIGlzIGtleSB0byB0aGlzLiAqKVxubGV0IHJlc3VsdCB0ID0gaWYgTGlzdC5pc19lbXB0eSB0IHRoZW4gT2sgKCkgZWxzZSByZXN1bHRfZmFpbCB0XG5cbmxldCBtYXliZV9yYWlzZSB0ID0gT3JfZXJyb3Iub2tfZXhuIChyZXN1bHQgdClcbmxldCB2YWxpZF9vcl9lcnJvciBjaGVjayB4ID0gT3JfZXJyb3IubWFwIChyZXN1bHQgKHByb3RlY3QgY2hlY2sgeCkpIH5mOihmdW4gKCkgLT4geClcblxubGV0IGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgX3JlY29yZCB2ID1cbiAgbGV0IHJlc3VsdCA9IHByb3RlY3QgY2hlY2sgdiBpblxuICBuYW1lIChGaWVsZC5uYW1lIGZsZCkgcmVzdWx0XG47O1xuXG5sZXQgZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA9XG4gIGxldCB2ID0gRmllbGQuZ2V0IGZsZCByZWNvcmQgaW5cbiAgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdlxuOztcblxubGV0IGZpZWxkX2ZvbGRlciBjaGVjayByZWNvcmQgPVxuICAoKTtcbiAgZnVuIGFjYyBmbGQgLT4gZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA6OiBhY2Ncbjs7XG5cbmxldCBmaWVsZF9kaXJlY3RfZm9sZGVyIGNoZWNrID1cbiAgU3RhZ2VkLnN0YWdlIChmdW4gYWNjIGZsZCByZWNvcmQgdiAtPlxuICAgIG1hdGNoIGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgcmVjb3JkIHYgd2l0aFxuICAgIHwgW10gLT4gYWNjICgqIEF2b2lkIGFsbG9jYXRpbmcgYSBuZXcgbGlzdCBpbiB0aGUgc3VjY2VzcyBjYXNlICopXG4gICAgfCByZXN1bHQgLT4gcmVzdWx0IDo6IGFjYylcbjs7XG5cbmxldCBhbGwgY2hlY2tzIHYgPVxuICBsZXQgcmVjIGxvb3AgY2hlY2tzIHYgZXJycyA9XG4gICAgbWF0Y2ggY2hlY2tzIHdpdGhcbiAgICB8IFtdIC0+IGVycnNcbiAgICB8IGNoZWNrIDo6IGNoZWNrcyAtPlxuICAgICAgKG1hdGNoIHByb3RlY3QgY2hlY2sgdiB3aXRoXG4gICAgICAgfCBbXSAtPiBsb29wIGNoZWNrcyB2IGVycnNcbiAgICAgICB8IGVyciAtPiBsb29wIGNoZWNrcyB2IChlcnIgOjogZXJycykpXG4gIGluXG4gIG9mX2xpc3QgKExpc3QucmV2IChsb29wIGNoZWNrcyB2IFtdKSlcbjs7XG5cbmxldCBvZl9yZXN1bHQgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IGZhaWwgZXJyb3IpXG47O1xuXG5sZXQgb2ZfZXJyb3IgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IFsgeyBwYXRoID0gW107IGVycm9yIH0gXSlcbjs7XG5cbmxldCBib29sdGVzdCBmIH5pZl9mYWxzZSA9IHByb3RlY3QgKGZ1biB2IC0+IGlmIGYgdiB0aGVuIHBhc3MgZWxzZSBmYWlsIGlmX2ZhbHNlKVxuXG5sZXQgcGFpciB+ZnN0IH5zbmQgKGZzdF92YWx1ZSwgc25kX3ZhbHVlKSA9XG4gIG9mX2xpc3QgWyBuYW1lIFwiZnN0XCIgKHByb3RlY3QgZnN0IGZzdF92YWx1ZSk7IG5hbWUgXCJzbmRcIiAocHJvdGVjdCBzbmQgc25kX3ZhbHVlKSBdXG47O1xuXG5sZXQgbGlzdF9pbmRleGVkIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcGkgbGlzdCB+ZjooZnVuIGkgZWwgLT4gbmFtZSAoSW50LnRvX3N0cmluZyAoaSArIDEpKSAocHJvdGVjdCBjaGVjayBlbCkpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBsaXN0IH5uYW1lOmV4dHJhY3RfbmFtZSBjaGVjayBsaXN0ID1cbiAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsIC0+XG4gICAgbWF0Y2ggcHJvdGVjdCBjaGVjayBlbCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdCAtPlxuICAgICAgKCogZXh0cmEgbGV2ZWwgb2YgcHJvdGVjdGlvbiBpbiBjYXNlIGV4dHJhY3RfbmFtZSB0aHJvd3MgYW4gZXhjZXB0aW9uICopXG4gICAgICBwcm90ZWN0IChmdW4gdCAtPiBuYW1lIChleHRyYWN0X25hbWUgZWwpIHQpIHQpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBhbGlzdCB+bmFtZSBmIGxpc3QnID0gbGlzdCAoZnVuIChfLCB4KSAtPiBmIHgpIGxpc3QnIH5uYW1lOihmdW4gKGtleSwgXykgLT4gbmFtZSBrZXkpXG5sZXQgZmlyc3RfZmFpbHVyZSB0MSB0MiA9IGlmIExpc3QuaXNfZW1wdHkgdDEgdGhlbiB0MiBlbHNlIHQxXG5cbmxldCBvZl9lcnJvcl9vcHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcGFzc1xuICB8IFNvbWUgZXJyb3IgLT4gZmFpbCBlcnJvclxuOztcblxubGV0IGJvdW5kZWQgfm5hbWUgfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4ID1cbiAgbWF0Y2ggTWF5YmVfYm91bmQuY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4IHdpdGhcbiAgfCBJbl9yYW5nZSAtPiBwYXNzXG4gIHwgQmVsb3dfbG93ZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPD0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG4gIHwgQWJvdmVfdXBwZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggdXBwZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPj0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggKysgKSB0MSB0MiA9IGNvbWJpbmUgdDEgdDJcbmVuZFxuIiwiXG4oKiBXZSBkbyBub3QgW2luY2x1ZGUgQmFzZV0gaGVyZSwgYW5kIGluc3RlYWQgaW1wb3J0IG1vZHVsZXMgdGhhdCBbQ29yZV0gZG9lc24ndCBleHRlbmQsXG4gICBiZWNhdXNlIHdlIHdhbnQgY29kZSBpbiBbQ29yZV0gdG8gYmUgY2xlYXIgd2hlbiBpdCByZWZlcmVuY2VzIGEgW0Jhc2VdIG1vZHVsZSB0aGF0XG4gICBbQ29yZV0gaXMgb3ZlcnJpZGluZy4gKilcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEJhc2UuQXBwbGljYXRpdmVcbm1vZHVsZSBBdmx0cmVlID0gQmFzZS5Bdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFzZS5CYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmFzZS5CaW5hcnlfc2VhcmNoXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBCYXNlLkNvbXBhcmlzb25zXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IEJhc2UuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIEVxdWFsID0gQmFzZS5FcXVhbFxubW9kdWxlIEV4biA9IEJhc2UuRXhuXG5tb2R1bGUgRmxvYXRhYmxlID0gQmFzZS5GbG9hdGFibGVcbm1vZHVsZSBGb3JtYXR0ZXIgPSBCYXNlLkZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBCYXNlLkhhc2hcbm1vZHVsZSBIYXNoZXIgPSBCYXNlLkhhc2hlclxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gQmFzZS5JbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEludGFibGUgPSBCYXNlLkludGFibGVcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBCYXNlLkludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9tYXRoID0gQmFzZS5JbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEJhc2UuSW52YXJpYW50XG5tb2R1bGUgTW9uYWQgPSBCYXNlLk1vbmFkXG5tb2R1bGUgUG9seSA9IEJhc2UuUG9seVxuXG5tb2R1bGUgUG9wY291bnQgPSBCYXNlLlBvcGNvdW50XG5bQEB3YXJuaW5nIFwiLTNcIl1cbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gQmFzZS5QcmV0dHlfcHJpbnRlclxubW9kdWxlIFJhbmRvbSA9IEJhc2UuUmFuZG9tXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gQmFzZS5TdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gQmFzZS5TeXNcbm1vZHVsZSBVY2hhciA9IEJhc2UuVWNoYXJcbm1vZHVsZSBXaXRoX3JldHVybiA9IEJhc2UuV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBCYXNlLldvcmRfc2l6ZVxuXG4oKiBXZSBkbyBpbmNsdWRlIFtCYXNlXSdzIHRvcC1sZXZlbCB2YWx1ZSBhbmQgdHlwZSBiaW5kaW5ncywgYmVjYXVzZSB0aGV5IGRvbid0IGNhdXNlXG4gICBhbnkgY29uZnVzaW9uLCBhbmQgZHVwbGljYXRpbmcgdGhlbSB3b3VsZCBiZSBlcnJvciBwcm9uZS4gKilcbmluY2x1ZGUgQmFzZS5FeHBvcnRcbmluY2x1ZGUgU3RkaW9cbmluY2x1ZGUgQmFzZV9mb3JfdGVzdHNcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5tb2R1bGUgRmllbGQgPSBGaWVsZHNsaWIuRmllbGRcblxubW9kdWxlIEZyb21fc2V4cGxpYiA6IHNpZ1xuICB0eXBlIGJpZ3N0cmluZyA9IFNleHBsaWIuQ29udi5iaWdzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBtYXQgPSBTZXhwbGliLkNvbnYubWF0IFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdmVjID0gU2V4cGxpYi5Db252LnZlYyBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICgqIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0gYXJlIHVzZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGZyb21cbiAgICAgW1tAQGRlcml2aW5nIHNleHBdXSwgW1slc2V4cF9vZjogXV0sIGFuZCBbWyVvZl9zZXhwOiBdXS4gIFRoZSB0eXBlIFtfIHNleHBfb3BhcXVlXVxuICAgICBleHBhbmRzIHRvIHVzZXMgb2YgW3NleHBfb2Zfb3BhcXVlXSBhbmQgW29wYXF1ZV9vZl9zZXhwXS4gKilcblxuICB2YWwgc2V4cF9vZl9vcGFxdWUgOiBfIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBvcGFxdWVfb2Zfc2V4cCA6IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIHNleHBfb2ZfcGFpciA6ICgnYSAtPiBCYXNlLlNleHAudCkgLT4gKCdiIC0+IEJhc2UuU2V4cC50KSAtPiAnYSAqICdiIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBwYWlyX29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EpIC0+IChCYXNlLlNleHAudCAtPiAnYikgLT4gQmFzZS5TZXhwLnQgLT4gJ2EgKiAnYlxuXG4gIGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIEJhc2UuU2V4cC50XG5cbiAgdmFsIG9mX3NleHBfZXJyb3IgOiBzdHJpbmcgLT4gQmFzZS5TZXhwLnQgLT4gX1xuICB2YWwgb2Zfc2V4cF9lcnJvcl9leG4gOiBleG4gLT4gQmFzZS5TZXhwLnQgLT4gX1xuZW5kID1cbiAgU2V4cGxpYi5Db252XG5cbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5cbigqIFtzZXhwX29wYXF1ZV0gaW5kaWNhdGVzIHRvIFtwcHhfc2V4cF9jb252XSB0aGF0IGEgdmFsdWUgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIFtfXSwgaS5lLlxuICAgW1NleHAuQXRvbSBcIl9cIl0uICBIZXJlIHdlIGV4cG9zZSB0aGUgW0BAZGVyaXZpbmddIGFzcGVjdHMgb2YgW3NleHBfb3BhcXVlXSBzbyB0aGF0XG4gICBvdGhlciBwcHgncyB0cmVhdCBbc2V4cF9vcGFxdWVdIGNvcnJlY3RseSwgYnkgaWdub3JpbmcgaXQgYW5kIHByb2Nlc3NpbmcgdGhlIHVuZGVybHlpbmdcbiAgIHR5cGUuICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHNleHBfb3BhcXVlID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHNleHBfb3BhcXVlIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIHNleHBfb3BhcXVlIDo9ICdhKVxuXG5pbmNsdWRlIChcbiAgVHlwZXJlcF9saWIuU3RkIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFR5cGVyZXBfbGliLlN0ZFxuICBlbmRcbiAgd2l0aCBtb2R1bGUgVHlwZV9lcXVhbCA6PSBUeXBlcmVwX2xpYi5TdGQuVHlwZV9lcXVhbClcblxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50c2xpYi5WYXJpYW50XG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgYW1fcnVubmluZ19pbmxpbmVfdGVzdCA9IFBweF9pbmxpbmVfdGVzdF9saWIuUnVudGltZS5hbV9ydW5uaW5nX2lubGluZV90ZXN0XG5cbmxldCBhbV9ydW5uaW5nX3Rlc3QgPVxuICB0cnlcbiAgICBpZ25vcmUgKENhbWwuU3lzLmdldGVudiBcIlRFU1RJTkdfRlJBTUVXT1JLXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICAoKiBbQ2FtbC4qXSBuZXZlciByYWlzZXMgW05vdF9mb3VuZF9zXSAqKVxuICB8IENhbWwuTm90X2ZvdW5kIC0+IGZhbHNlXG47O1xuXG50eXBlICdhIGlkZW50aXR5ID0gJ2FcblxubW9kdWxlIE5vdF9mb3VuZCA9IHN0cnVjdFxuICBleGNlcHRpb25cbiAgICBOb3RfZm91bmQgPSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgICBbQGRlcHJlY2F0ZWRcbiAgICAgICAgICAgICAgICAgIHt8W3NpbmNlIDIwMTgtMDJdIEluc3RlYWQgb2YgcmFpc2luZyBbTm90X2ZvdW5kXSwgY29uc2lkZXIgdXNpbmcgW3JhaXNlX3NdIHdpdGggYW5cbmluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UuICBJZiBjb2RlIG5lZWRzIHRvIGRpc3Rpbmd1aXNoIFtOb3RfZm91bmRdIGZyb20gb3RoZXJcbmV4Y2VwdGlvbnMsIHBsZWFzZSBjaGFuZ2UgaXQgdG8gaGFuZGxlIGJvdGggW05vdF9mb3VuZF0gYW5kIFtOb3RfZm91bmRfc10uICBUaGVuLCBpbnN0ZWFkXG5vZiByYWlzaW5nIFtOb3RfZm91bmRdLCByYWlzZSBbTm90X2ZvdW5kX3NdIHdpdGggYW4gaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS58fV1cblxuICBleGNlcHRpb24gTm90X2ZvdW5kX3MgPSBCYXNlLk5vdF9mb3VuZF9zXG5lbmRcblxuaW5jbHVkZSBOb3RfZm91bmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNleHBhYmxlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6IHQgLT4gU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiBTZXhwYWJsZS50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCAoTS50b19zZXhwYWJsZSB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMxKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICdhIHQgLT4gJ2EgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogJ2EgU2V4cGFibGUudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2EgKE0udG9fc2V4cGFibGUgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IpIFNleHBhYmxlLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgICAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiAoTS50b19zZXhwYWJsZSB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyB0ID1cbiAgICAgICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIChNLnRvX3NleHBhYmxlIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFN0cmluZ2FibGUuUykgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgU2V4cGxpYi5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgICAgICB8IFNleHBsaWIuU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgICAgIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBsaWIuU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVG9fc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFMpIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX3N0cmluZyB4ID0gU2V4cGxpYi5Db252Lm9mX3N0cmluZ19fb2ZfX29mX3NleHAgTS50X29mX3NleHAgeFxuICAgICAgbGV0IHRvX3N0cmluZyB4ID0gU2V4cGxpYi5Db252LnN0cmluZ19vZl9fb2ZfX3NleHBfb2YgTS5zZXhwX29mX3QgeFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVG9fc3RyaW5nYWJsZSA9IFN0YWJsZS5Ub19zdHJpbmdhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbl9wcm90LkJpbmFibGVcbm1vZHVsZSBTaGFwZSA9IEJpbl9wcm90LlNoYXBlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX2JpbmFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udl93aXRob3V0X3V1aWQgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udiB3aXRoIHR5cGUgYmluYWJsZSA6PSBCaW5hYmxlLnQpIDpcbiAgICAgIFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMSlcbiAgICAgICAgKE0gOiBDb252MV93aXRob3V0X3V1aWQgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoQmluYWJsZSA6IE1pbmltYWwuUzEpIChNIDogQ29udjEgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252Ml93aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IpIGJpbmFibGUgOj0gKCdhLCAnYikgQmluYWJsZS50KSA6XG4gICAgICBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMyKVxuICAgICAgICAoTSA6IENvbnYyIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYmluYWJsZSA6PSAoJ2EsICdiLCAnYykgQmluYWJsZS50KSA6XG4gICAgICBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU2V4cGFibGUuUykgPVxuICAgICAgT2ZfYmluYWJsZS5WMVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICBlbmQpXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3NleHBhYmxlKSA9XG4gICAgICBPZl9iaW5hYmxlLlYyXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICAgICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gTS5zZXhwX29mX3RcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IE0udF9vZl9zZXhwXG4gICAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3N0cmluZ2FibGUpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4gQmlnYXJyYXlcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5cbnR5cGUgJ2EgbSA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG5sZXQgb2ZfYmlnc3RyaW5nICh0eXBlIGEpIG0gYmlnc3RyaW5nID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgbGV0IHQgPSBNLmJpbl9yZWFkX3QgYmlnc3RyaW5nIH5wb3NfcmVmIGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID0gQXJyYXkxLmRpbSBiaWdzdHJpbmcgaW5cbiAgKG1hdGNoICFwb3NfcmVmID0gYmlnc3RyaW5nX2xlbmd0aCB3aXRoXG4gICB8IHRydWUgLT4gKClcbiAgIHwgZmFsc2UgLT5cbiAgICAgcmFpc2Vfc1xuICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgXCJiaW5fcmVhZF90IGRpZCBub3QgY29uc3VtZSB0aGUgZW50aXJlIGJ1ZmZlclwiXG4gICAgICAgICAgIH5jb25zdW1lZDooIXBvc19yZWYgOiBpbnQpXG4gICAgICAgICAgIChiaWdzdHJpbmdfbGVuZ3RoIDogaW50KV0pO1xuICB0XG47O1xuXG4oKiBVc2luZyB0aGUgW0JpZ3N0cmluZ10gbW9kdWxlIHdvdWxkIGludHJvZHVjZSBhIGN5Y2xpYyBkZXBlbmRlbmN5LiAqKVxubGV0IGNyZWF0ZV9iaWdzdHJpbmcgc2l6ZSA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBzaXplXG5cbmxldCB0b19iaWdzdHJpbmcgPyhwcmVmaXhfd2l0aF9sZW5ndGggPSBmYWxzZSkgKHR5cGUgYSkgbSB0ID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCB0X2xlbmd0aCA9IE0uYmluX3NpemVfdCB0IGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGggdGhlbiB0X2xlbmd0aCArIDggKCogdGhlIHNpemUgb2YgYSA2NC1iaXQgaW50ICopIGVsc2UgdF9sZW5ndGhcbiAgaW5cbiAgbGV0IGJpZ3N0cmluZyA9IGNyZWF0ZV9iaWdzdHJpbmcgYmlnc3RyaW5nX2xlbmd0aCBpblxuICBsZXQgcG9zID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGhcbiAgICB0aGVuIEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgYmlnc3RyaW5nIH5wb3M6MCB0X2xlbmd0aFxuICAgIGVsc2UgMFxuICBpblxuICBsZXQgcG9zID0gTS5iaW5fd3JpdGVfdCBiaWdzdHJpbmcgfnBvcyB0IGluXG4gIGFzc2VydCAocG9zID0gYmlnc3RyaW5nX2xlbmd0aCk7XG4gIGJpZ3N0cmluZ1xuOztcblxubW9kdWxlIE9mX2JpbmFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjJcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjJcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjJcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZS5WMVxubW9kdWxlIE9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMS5WMVxubW9kdWxlIE9mX2JpbmFibGUyX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMi5WMVxubW9kdWxlIE9mX2JpbmFibGUzX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMy5WMVxubW9kdWxlIE9mX3NleHBhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zZXhwYWJsZS5WMVxubW9kdWxlIE9mX3N0cmluZ2FibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX3N0cmluZ2FibGUuVjFcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlID0gc2lnXG4gICAgICBpbmNsdWRlIFNfb25seV9mdW5jdGlvbnNcblxuICAgICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIGVuZFxuXG4gICAgKCogQ2hlY2sgdGhhdCBvbmx5IHRoZSBmdW5jdGlvbnMgJiBzaGFwZSBhcmUgc3VmZmljaWVudCBmb3IgW0BAZGVyaXZpbmcgYmluX2lvXS4gVGhlXG4gICAgICAgZmFjdCB0aGF0IHRoaXMgZnVuY3RvciB0eXBlY2hlY2tzIGlzLCBpdHNlbGYsIHRoZSB0ZXN0LiAqKVxuICAgIG1vZHVsZSBfIChYIDogU19vbmx5X2Z1bmN0aW9uc19hbmRfc2hhcGUpIDogUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gWC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcbiAgZW5kKVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuUHJpbnRmfVtCYXNlLlByaW50Zl19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZSBCYXNlLlByaW50ZiAoKiogQG9wZW4gKilcblxubGV0IGVwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmZwcmludGZcbmxldCBrZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmtmcHJpbnRmXG5sZXQgcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwucHJpbnRmXG5cblxuKCoqIHByaW50IHRvIHN0ZGVycjsgZXhpdCAxICopXG5sZXQgZXhpdGYgZm10ID1cbiAga3NwcmludGZcbiAgICAoZnVuIHMgKCkgLT5cbiAgICAgICBlcHJpbnRmIFwiJXNcXG4lIVwiIHM7XG4gICAgICAgZXhpdCAxKVxuICAgIGZtdFxuOztcblxudHlwZSBwcmludGYgPSB7IHByaW50ZiA6ICdhLiAoJ2EsIEJ1ZmZlci50LCB1bml0KSBmb3JtYXQgLT4gJ2EgfVxuXG5sZXQgY29sbGVjdF90b19zdHJpbmcgZiA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBkb25lXyA9IHJlZiBmYWxzZSBpblxuICBsZXQgcHJpbnRmIGZtdCA9XG4gICAga2JwcmludGZcbiAgICAgIChmdW4gYnVmIC0+XG4gICAgICAgICBpZiAhZG9uZV9cbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBCdWZmZXIucmVzZXQgYnVmO1xuICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIltwcmludGZdIHVzZWQgYWZ0ZXIgW2NvbGxlY3RfdG9fc3RyaW5nXSByZXR1cm5lZFwiXSkpXG4gICAgICBidWZcbiAgICAgIGZtdFxuICBpblxuICBmIHsgcHJpbnRmIH07XG4gIGRvbmVfIDo9IHRydWU7XG4gIGxldCBvdXRwdXQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIG91dHB1dFxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG4oKiBBbGwgdGhlIHR5cGVzIGFzIGV4cG9zZWQgaW4gdGhlIG1saSBhcmUgZGVmaW5lZCBpbiB0aGlzIFtUeXBlc10gbW9kdWxlLiAgVGhlIHJlc3Qgb2ZcbiAgIHRoaXMgZmlsZSBpcyBzaW1wbHkgb3ZlcnJpZGluZyBhbGwgdGhlIGJpbl9pbywgY29tcGFyZSwgYW5kIHNleHAgZnVuY3Rpb25zIHRvIHJhaXNlXG4gICBleGNlcHRpb25zLiAqKVxubW9kdWxlIFR5cGVzID0gc3RydWN0XG4gIG1vZHVsZSBOb2JvZHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk5vYm9keVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBNZSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiTWVcIlxuICBlbmRcblxuICBtb2R1bGUgUmVhZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFJlYWQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBXcml0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFdob19jYW5fd3JpdGUgb2YgTWUudCBdIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJXcml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBJbW11dGFibGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgYFdob19jYW5fd3JpdGUgb2YgTm9ib2R5LnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiSW1tdXRhYmxlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgV3JpdGUudFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJSZWFkX3dyaXRlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFVwcGVyX2JvdW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mICdhXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlVwcGVyX2JvdW5kXCJcbiAgZW5kXG5lbmRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuKCogVGhpcyBpcyBhbiBleHBsaWNpdCBtb2R1bGUgdHlwZSBpbnN0ZWFkIG9mIGp1c3QgZ2l2ZW4gaW5saW5lIGFzIHRoZSByZXR1cm4gc2lnbmF0dXJlIG9mXG4gICBbT25seV91c2VkX2FzX3BoYW50b21fdHlwZTFdIHRvIGF2b2lkIGFuIHVudXNlZCB2YWx1ZSB3YXJuaW5nIHdpdGggYmluX2lvIHZhbHVlcy4gKilcbm1vZHVsZSB0eXBlIFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG4oKiBPdmVycmlkZSBhbGwgYmluX2lvLCBzZXhwLCBjb21wYXJlIGZ1bmN0aW9ucyB0byByYWlzZSBleGNlcHRpb25zICopXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKE5hbWUgOiBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogU2V4cGFibGVfYmluYWJsZV9jb21wYXJhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHNleHBfb2ZfdCBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5zZXhwX29mX3RdXCIgTmFtZS5uYW1lICgpXG4gIGxldCB0X29mX3NleHAgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMudF9vZl9zZXhwXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgY29tcGFyZSBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmNvbXBhcmVdXCIgTmFtZS5uYW1lICgpXG4gIGxldCBoYXNoX2ZvbGRfdCBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmhhc2hfZm9sZF90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLk5vdGhpbmcudF9zZXhwX2dyYW1tYXJcblxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgZW5kKVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBzZXJpYWxpemF0aW9uXCIgTmFtZS5uYW1lICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgXyA9XG4gICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IHVzZWQgJXMgYmluX2lvIGRlc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogc2lnXG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBfcG9seV1cbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChUKVxuXG4gIHR5cGUgdCA9IFQudCBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gIGxldCBfX3Rfb2Zfc2V4cF9fID0gdF9vZl9zZXhwXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTm9ib2R5ID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLk5vYm9keSlcbiAgICBtb2R1bGUgTWUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuTWUpXG4gICAgbW9kdWxlIFJlYWQgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuUmVhZClcbiAgICBtb2R1bGUgV3JpdGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuV3JpdGUpXG4gICAgbW9kdWxlIFJlYWRfd3JpdGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuUmVhZF93cml0ZSlcbiAgICBtb2R1bGUgSW1tdXRhYmxlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLkltbXV0YWJsZSlcblxuICAgIHR5cGUgbm9ib2R5ID0gTm9ib2R5LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgbWUgPSBNZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVHlwZXMuVXBwZXJfYm91bmQpXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFR5cGVzLlVwcGVyX2JvdW5kLnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgICAgbGV0IF9fdF9vZl9zZXhwX18gPSB0X29mX3NleHBcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgcmVhZCA9IFYxLlJlYWQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSB3cml0ZSA9IFYxLldyaXRlLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIGltbXV0YWJsZSA9IFYxLkltbXV0YWJsZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIHJlYWRfd3JpdGUgPSBWMS5SZWFkX3dyaXRlLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgJ2EgcGVybXMgPSAnYSBWMS5VcHBlcl9ib3VuZC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbm1vZHVsZSBFeHBvcnQgPSBTdGFibGUuRXhwb3J0XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBDb21wYXJhdG9yID0gQmFzZS5Db21wYXJhdG9yXG5cbnR5cGUgKCdhLCAnd2l0bmVzcykgdCA9ICgnYSwgJ3dpdG5lc3MpIENvbXBhcmF0b3IudCA9IHByaXZhdGVcbiAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgc2V4cF9vZl90IDogJ2EgLT4gQmFzZS5TZXhwLnRcbiAgfVxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBDb21wYXJhdG9yIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuaW5jbHVkZSAoQ29tcGFyYXRvciA6IEJhc2VfbWFzaylcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICd3aXRuZXNzKSB0ID0gKCdhLCAnd2l0bmVzcykgdCA9IHByaXZhdGVcbiAgICAgIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgICAgOyBzZXhwX29mX3QgOiAnYSAtPiBCYXNlLlNleHAudFxuICAgICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSBjb21wYXJhdG9yID0gKCdhLCAnYikgdFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgICBtb2R1bGUgdHlwZSBTMSA9IFMxXG5cbiAgICBsZXQgbWFrZSA9IG1ha2VcblxuICAgIG1vZHVsZSBNYWtlID0gTWFrZVxuICAgIG1vZHVsZSBNYWtlMSA9IE1ha2UxXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBSZXN1bHQgPSBCYXNlLlJlc3VsdFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFJlc3VsdC50ID1cbiAgICAgIHwgT2sgb2YgJ2FcbiAgICAgIHwgRXJyb3Igb2YgJ2JcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbWFwIHggfmYxIH5mMiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgZXJyIC0+IEVycm9yIChmMiBlcnIpXG4gICAgICB8IE9rIHggLT4gT2sgKGYxIHgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYxX3N0YWJsZV91bml0X3Rlc3QgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoc3RyaW5nLCBpbnQpIFYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gICAgbGV0IHRlc3RzID1cbiAgICAgIFsgVjEuT2sgXCJmb29cIiwgXCIoT2sgZm9vKVwiLCBcIlxcMDAwXFwwMDNmb29cIjsgVjEuRXJyb3IgNywgXCIoRXJyb3IgNylcIiwgXCJcXDAwMVxcMDA3XCIgXVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFJlc3VsdFxuIiwiKCoqIEFuIGludGVyZmFjZSBmb3IgY3JlYXRpbmcgdW5pdCB0ZXN0cyB0byBjaGVjayBzdGFiaWxpdHkgb2Ygc2V4cCBhbmQgYmluLWlvXG4gICAgc2VyaWFsaXphdGlvbnMgKilcblxub3BlbiEgSW1wb3J0XG5cblxubW9kdWxlIHR5cGUgQXJnID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcblxuXG4gICgqKiBbdGVzdHNdIGlzIGEgbGlzdCBvZiAodmFsdWUsIHNleHAtcmVwcmVzZW50YXRpb24sIGJpbi1pby1yZXByZXNlbnRhdGlvbikgdHJpcGxlcy5cbiAgICAgIFRoZSB1bml0IHRlc3RzIGNoZWNrIHRoYXQgdGhlIHR5cGUgcHJvcGVybHkgc2VyaWFsaXplcyBhbmRcbiAgICAgIGRlLXNlcmlhbGl6ZXMgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiByZXByZXNlbnRhdGlvbnMuICopXG4gIHZhbCB0ZXN0cyA6ICh0ICogc3RyaW5nICogc3RyaW5nKSBsaXN0XG5lbmRcblxuKCoqIFVub3JkZXJlZCBjb250YWluZXIgdGVzdHMgYXJlIGZvciB0eXBlcyB3aXRoIHNlcmlhbGl6YXRpb25zIHRoYXQgd2lsbCBjb250YWluIGFcbiAgICBjZXJ0YWluIHNldCBvZiBlbGVtZW50cyAoZWFjaCByZXByZXNlbnRlZCBieSBhIHNpbmdsZSBzZXhwIG9yIGJpbi1pbyBzdHJpbmcpIHdoaWNoIG1heVxuICAgIGFwcGVhciBpbiBhbnkgb3JkZXIsIHN1Y2ggYXMgaGFzaCB0YWJsZXMgYW5kIGhhc2ggc2V0cy4gKilcbm1vZHVsZSBVbm9yZGVyZWRfY29udGFpbmVyX3Rlc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNleHBzIDogc3RyaW5nIGxpc3RcbiAgICA7IGJpbl9pb19oZWFkZXIgOiBzdHJpbmdcbiAgICA7IGJpbl9pb19lbGVtZW50cyA6IHN0cmluZyBsaXN0XG4gICAgfVxuZW5kXG5cbm1vZHVsZSB0eXBlIFVub3JkZXJlZF9jb250YWluZXJfYXJnID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIHRlc3RzIDogKHQgKiBVbm9yZGVyZWRfY29udGFpbmVyX3Rlc3QudCkgbGlzdFxuZW5kXG4iLCJsZXQgKCB8ISApIHggeSA9IHggfD4geVxuIiwiaW5jbHVkZSBCYXNlLk9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cblxubGV0IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IGkgPSBpZiBpIDwgMCB0aGVuIGkgKyBsZW5ndGhfZnVuIHQgZWxzZSBpXG5cbmxldCBzbGljZSB+bGVuZ3RoX2Z1biB+c3ViX2Z1biB0IHN0YXJ0IHN0b3AgPVxuICBsZXQgc3RvcCA9IGlmIHN0b3AgPSAwIHRoZW4gbGVuZ3RoX2Z1biB0IGVsc2Ugc3RvcCBpblxuICBsZXQgcG9zID0gbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgc3RhcnQgaW5cbiAgbGV0IGxlbiA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0b3AgLSBwb3MgaW5cbiAgc3ViX2Z1biB0IH5wb3MgfmxlblxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNlcXVlbmNlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuU2VxdWVuY2UudFxuXG4gICAgbGV0IG9mX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLm9mX2xpc3RcbiAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuU2VxdWVuY2UudG9fbGlzdFxuICBlbmQpXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RlcFxuXG4gIHR5cGUgKCdhLCAncykgdCA9ICgnYSwgJ3MpIFN0ZXAudCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mICdzXG4gICAgfCBZaWVsZCBvZiAnYSAqICdzXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIHR5cGUgSGVhcCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHBvcF9taW4gOiAnYSB0IC0+ICgnYSAqICdhIHQpIG9wdGlvblxuZW5kXG5cbmxldCBtZXJnZV9hbGwgKG1vZHVsZSBIZWFwIDogSGVhcCkgc2VxcyB+Y29tcGFyZSA9XG4gIGxldCBtb2R1bGUgTWVyZ2VfYWxsX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgaGVhcCA6ICgnYSAqICdhIEJhc2UuU2VxdWVuY2UudCkgSGVhcC50XG4gICAgICA7IG5vdF95ZXRfaW5faGVhcCA6ICdhIEJhc2UuU2VxdWVuY2UudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbiAgZW5kXG4gIGluXG4gIHVuZm9sZF9zdGVwXG4gICAgfmluaXQ6XG4gICAgICAoTWVyZ2VfYWxsX3N0YXRlLmNyZWF0ZVxuICAgICAgICAgfmhlYXA6KEhlYXAuY3JlYXRlIH5jb21wYXJlOihCYXNlLkNvbXBhcmFibGUubGlmdCBjb21wYXJlIH5mOmZzdCkpXG4gICAgICAgICB+bm90X3lldF9pbl9oZWFwOnNlcXMpXG4gICAgfmY6KGZ1biB7IGhlYXA7IG5vdF95ZXRfaW5faGVhcCB9IC0+XG4gICAgICBtYXRjaCBub3RfeWV0X2luX2hlYXAgd2l0aFxuICAgICAgfCBzZXEgOjogbm90X3lldF9pbl9oZWFwIC0+XG4gICAgICAgIChtYXRjaCBFeHBlcnQubmV4dF9zdGVwIHNlcSB3aXRoXG4gICAgICAgICB8IERvbmUgLT4gU2tpcCB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9XG4gICAgICAgICB8IFNraXAgc2VxIC0+IFNraXAgeyBub3RfeWV0X2luX2hlYXAgPSBzZXEgOjogbm90X3lldF9pbl9oZWFwOyBoZWFwIH1cbiAgICAgICAgIHwgWWllbGQgKGVsdCwgc2VxKSAtPiBTa2lwIHsgbm90X3lldF9pbl9oZWFwOyBoZWFwID0gSGVhcC5hZGQgaGVhcCAoZWx0LCBzZXEpIH0pXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBIZWFwLnBvcF9taW4gaGVhcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgICAgfCBTb21lICgoZWx0LCBzZXEpLCBoZWFwKSAtPiBZaWVsZCAoZWx0LCB7IGhlYXA7IG5vdF95ZXRfaW5faGVhcCA9IFsgc2VxIF0gfSkpKVxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5vcGVuIFBlcm1zLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQmFzZS5BcnJheVxubW9kdWxlIENvcmVfc2VxdWVuY2UgPSBTZXF1ZW5jZVxuXG5pbmNsdWRlIChcbiAgQmFzZS5BcnJheSA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIHNleHBfZ3JhbW1hcl1cbiAgZW5kKVxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbm1vZHVsZSBQcml2YXRlID0gQmFzZS5BcnJheS5Qcml2YXRlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5BcnJheVxuXG4gIGxldCBub3JtYWxpemUgdCBpID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5ub3JtYWxpemUgfmxlbmd0aF9mdW46bGVuZ3RoIHQgaVxuXG4gIGxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3BcbiAgOztcblxuICBsZXQgbmdldCB0IGkgPSB0Lihub3JtYWxpemUgdCBpKVxuICBsZXQgbnNldCB0IGkgdiA9IHQuKG5vcm1hbGl6ZSB0IGkpIDwtIHZcblxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICBvcGVuIEJhc2UuQXJyYXlcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IHNldCA9IHNldFxuICBlbmRcblxuICAoKiBTZWUgT0NhbWwgcGVyZiBub3RlcyBmb3Igd2h5IHRoZXNlIGFycmF5IGJsaXRzIGFyZSBzcGVjaWFsIGNhc2VkIC0tIGluIHBhcnRpY3VsYXIsXG4gICAgIHRoZSBzZWN0aW9uIGVudGl0bGVkIFwiRmFzdCwgU2xvdyBhbmQgSW5jb3JyZWN0IEFycmF5IGJsaXRzXCIgb2ZcbiAgICAgaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTMwMjIwMDAwMjI5L2h0dHA6Ly9qYW5lc3RyZWV0LmdpdGh1Yi5jb20vb2NhbWwtcGVyZi1ub3Rlcy5odG1sICopXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gaW50IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOnRfXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDp0X1xuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSAoID0gKVxuICAgICAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gMSBlbHNlIDBcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDBcblxuICAgICAgICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6dF9cbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OnRfXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFwiXG4gICAgICBbQEBub2FsbG9jXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSBCYXNlLkZsb2F0LmVxdWFsXG4gICAgICAgICAgbGV0IG9mX2Jvb2wgYiA9IGlmIGIgdGhlbiAxLiBlbHNlIDAuXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwLlxuXG4gICAgICAgICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFBlcm1pc3Npb25lZCA9IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtcykgdFxuXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuICBpbmNsdWRlIEJsaXQuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG4gIGluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCdhLCBfKSB0IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IChmbG9hdCwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBpbml0IDogaW50IC0+IGY6KGludCAtPiAnYSkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1ha2VfbWF0cml4IDogZGlteDppbnQgLT4gZGlteTppbnQgLT4gJ2EgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29weV9tYXRyaXhcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGFwcGVuZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjb25jYXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCBsaXN0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjb3B5IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGZpbGwgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYXAgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZGluZ19tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAnYiAqICdjKVxuICAgIC0+ICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAnYiAqICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG1hcGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBpdGVyaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBmb2xkaW5nX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAnYiAqICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYiAtPiAnYikgLT4gaW5pdDonYiAtPiAnYlxuXG4gIHZhbCBzb3J0XG4gICAgOiAgP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+IHVuaXRcblxuICB2YWwgc3RhYmxlX3NvcnQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gYm9vbFxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiBib29sXG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOignYSAtPiAoJ2IsIFs+IHJlYWQgXSkgdClcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooaW50IC0+ICdhIC0+ICgnYiwgWz4gcmVhZCBdKSB0KVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KGludCAtPiAnYSAtPiBib29sKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0ICogKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY2FydGVzaWFuX3Byb2R1Y3RcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0IG9wdGlvblxuXG4gIHZhbCB0cmFuc3Bvc2VfZXhuXG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBub3JtYWxpemUgOiAoJ2EsIF8pIHQgLT4gaW50IC0+IGludFxuICB2YWwgc2xpY2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBuZ2V0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBuc2V0IDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJfb3B0IDogKCdhIG9wdGlvbiwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbilcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGl0ZXIyX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgbWFwMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdjLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYSAtPiAnYiAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmb3JfYWxsMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBib29sXG5cbiAgdmFsIGV4aXN0czJfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIHN3YXAgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXBpIDogJ2EgbGlzdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXAgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFwX2lucGxhY2UgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBmOignYSAtPiAnYSkgLT4gdW5pdFxuICB2YWwgZmluZF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYlxuICB2YWwgZmluZGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX21hcGlfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2JcblxuICB2YWwgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGVcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+ICgnYSAqICdhKSBvcHRpb25cblxuICB2YWwgcmVkdWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvblxuICB2YWwgcmVkdWNlX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gIHZhbCBwZXJtdXRlXG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudFxuICAgIC0+ID9wb3M6aW50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdFxuICAgIC0+IHVuaXRcblxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgemlwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgc29ydGVkX2NvcHkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBsYXN0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuICB2YWwgdG9fc2VxdWVuY2VfbXV0YWJsZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkIDogc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBtb2R1bGUgSW50IDogc2lnXG4gICAgdHlwZSBub25yZWMgLSdwZXJtcyB0ID0gKGludCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgIDogIHNyYzpbPiByZWFkIF0gdFxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDpbPiB3cml0ZSBdIHRcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcIlxuICAgIFtAQG5vYWxsb2NdXG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIC0ncGVybXMgdCA9IChmbG9hdCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgIDogIHNyYzpbPiByZWFkIF0gdFxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDpbPiB3cml0ZSBdIHRcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFwiXG4gICAgW0BAbm9hbGxvY11cbiAgZW5kXG5cbiAgdmFsIG9mX2FycmF5X2lkIDogJ2EgYXJyYXkgLT4gKCdhLCBbPCByZWFkX3dyaXRlIF0pIHRcbiAgdmFsIHRvX2FycmF5X2lkIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gJ2EgYXJyYXlcbiAgdmFsIHRvX3NlcXVlbmNlX2ltbXV0YWJsZSA6ICgnYSwgWz4gaW1tdXRhYmxlIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCB0eXBlcmVwXVxuXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuSW50XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBULkZsb2F0XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbGV0IHRvX2FycmF5X2lkID0gRm4uaWRcbiAgbGV0IG9mX2FycmF5X2lkID0gRm4uaWRcblxuICBpbmNsdWRlIChUIDogUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgbGV0IHRvX2FycmF5ID0gY29weVxuICBsZXQgdG9fc2VxdWVuY2VfaW1tdXRhYmxlID0gdG9fc2VxdWVuY2VfbXV0YWJsZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBleHRlcm5hbCBsZW5ndGggOiAnYSB0IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IGZsb2F0IHRcbiAgdmFsIGluaXQgOiBpbnQgLT4gZjooaW50IC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICdhIHQgdFxuICB2YWwgY29weV9tYXRyaXggOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBhcHBlbmQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgY29uY2F0IDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGZpbGwgOiAnYSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG5cbiAgaW5jbHVkZSBCbGl0LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgZm9sZGluZ19tYXAgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYykgLT4gJ2MgdFxuICB2YWwgZm9sZF9tYXAgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYykgLT4gJ2IgKiAnYyB0XG4gIHZhbCBtYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIGl0ZXJpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiKSAtPiAnYlxuICB2YWwgZm9sZGluZ19tYXBpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiAqICdjKSAtPiAnYyB0XG4gIHZhbCBmb2xkX21hcGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiICogJ2MpIC0+ICdiICogJ2MgdFxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgLT4gJ2IpIC0+IGluaXQ6J2IgLT4gJ2JcbiAgdmFsIHNvcnQgOiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gdW5pdFxuICB2YWwgc3RhYmxlX3NvcnQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gdW5pdFxuICB2YWwgaXNfc29ydGVkIDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IGJvb2xcbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseSA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiBib29sXG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHRcbiAgdmFsIGNvbmNhdF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIGNvbmNhdF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgcGFydGl0aW9uaV90ZiA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBjYXJ0ZXNpYW5fcHJvZHVjdCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHJhbnNwb3NlIDogJ2EgdCB0IC0+ICdhIHQgdCBvcHRpb25cbiAgdmFsIHRyYW5zcG9zZV9leG4gOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBub3JtYWxpemUgOiAnYSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+ICdhIHRcbiAgdmFsIG5nZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGZpbHRlcl9vcHQgOiAnYSBvcHRpb24gdCAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBmb3JfYWxsaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGl0ZXIyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOignYSAtPiAnYiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBtYXAyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOignYSAtPiAnYiAtPiAnYykgLT4gJ2MgdFxuICB2YWwgZm9sZDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGluaXQ6J2MgLT4gZjooJ2MgLT4gJ2EgLT4gJ2IgLT4gJ2MpIC0+ICdjXG4gIHZhbCBmb3JfYWxsMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgc3dhcCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCByZXZfaW5wbGFjZSA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBvZl9saXN0X3JldiA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X21hcGkgOiAnYSBsaXN0IC0+IGY6KGludCAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBtYXBfaW5wbGFjZSA6ICdhIHQgLT4gZjooJ2EgLT4gJ2EpIC0+IHVuaXRcbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiXG4gIHZhbCBmaW5kaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBmaW5kaV9leG4gOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfbWFwaV9leG4gOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdiXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSA6ICdhIHQgLT4gZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSAqICdhKSBvcHRpb25cbiAgdmFsIHJlZHVjZSA6ICdhIHQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvblxuICB2YWwgcmVkdWNlX2V4biA6ICdhIHQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhXG4gIHZhbCBwZXJtdXRlIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJhbmRvbV9lbGVtZW50IDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHQgb3B0aW9uXG4gIHZhbCB6aXBfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiKSB0IC0+ICdhIHQgKiAnYiB0XG4gIHZhbCBzb3J0ZWRfY29weSA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBsYXN0IDogJ2EgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbiAgdmFsIHRvX3NlcXVlbmNlX211dGFibGUgOiAnYSB0IC0+ICdhIENvcmVfc2VxdWVuY2UudFxuZW5kXG5cbmluY2x1ZGUgKFQgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIGFycmF5KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuSW50XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuRmxvYXRcblxuICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIF8gKE0gOiBTKSA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtKSB0X1xuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtKSB0IDo9ICgnYSwgJ3Blcm0pIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF8gPSAnYSB0XG5lbmRcblxubW9kdWxlIF8gKE0gOiBQZXJtaXNzaW9uZWQpIDogc2lnXG4gIHR5cGUgJ2EgdF9cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdF9cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlICdhIHRfID0gKCdhLCByZWFkX3dyaXRlKSB0XG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAoJ2YsICdzKSB0ID0gKCdmLCAncykgQmFzZS5FaXRoZXIudCA9XG4gICAgICB8IEZpcnN0IG9mICdmXG4gICAgICB8IFNlY29uZCBvZiAnc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgdHlwZXJlcF1cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBGaXJzdCB4MSAtPiBGaXJzdCAoZjEgeDEpXG4gICAgICB8IFNlY29uZCB4MiAtPiBTZWNvbmQgKGYyIHgyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuRWl0aGVyXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuZWl0aGVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5laXRoZXJcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvblxuXG4gICAgdHlwZSB0ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi50ID1cbiAgICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgICA7IHBvc19sbnVtIDogaW50XG4gICAgICA7IHBvc19ib2wgOiBpbnRcbiAgICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgaGFzaCwgc2V4cF1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IHRvX3N0cmluZyA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nXG5sZXQgc2V4cF9vZl90ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi5zZXhwX29mX3RcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGlzIG1hbnkgcGxhY2VzIHBsYWNlcyBhcyBwb3NzaWJsZS5cbiAgIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuISBJbmZvX2ludGZcblxubW9kdWxlIHR5cGUgUyA9IEJhc2UuSW5mby5TXG5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5tb2R1bGUgQmluYWJsZV9leG4gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID0gdCB8PiBbJXNleHBfb2Y6IHRdXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEV4bi5jcmVhdGVfc1xuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEV4dGVuZCAoSW5mbyA6IEJhc2UuSW5mby5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZm9cblxuICBtb2R1bGUgSW50ZXJuYWxfcmVwciA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCaW5hYmxlX2V4biA9IEJpbmFibGVfZXhuLlN0YWJsZVxuXG4gICAgICBtb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgKCogW3NleHBfb2ZfdF0gYXMgZGVmaW5lZCBoZXJlIGlzIHVuc3RhYmxlOyB0aGlzIGlzIE9LIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgICBbdF9vZl9zZXhwXS4gIFtzZXhwX29mX3RdIGlzIG9ubHkgdXNlZCB0byBwcm9kdWNlIGEgc2V4cCB0aGF0IGlzIG5ldmVyXG4gICAgICAgICAgICAgZGVzZXJpYWxpemVkIGFzIGEgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uXS4gKilcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLkludGVybmFsX3JlcHIudCA9XG4gICAgICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgICAgICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgICAgICAgIHwgRXhuIG9mIEJpbmFibGVfZXhuLlYxLnRcbiAgICAgICAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgICAgICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi5WMS50IG9wdGlvblxuICAgICAgICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgICAgICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgICAgICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICAgICAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBTdGFibGUuVjJcblxuICAgIGxldCB0b19pbmZvID0gSW5mby5JbnRlcm5hbF9yZXByLnRvX2luZm9cbiAgICBsZXQgb2ZfaW5mbyA9IEluZm8uSW50ZXJuYWxfcmVwci5vZl9pbmZvXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8udCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBoYXNoXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoSW50ZXJuYWxfcmVwci5TdGFibGUuVjIpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIudG9faW5mb1xuICAgICAgICAgIGVuZClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgICAgKFNleHApXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gSW5mby5zZXhwX29mX3RcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gSW5mby50X29mX3NleHBcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNleHApXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBzZXhwX29mX3RcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gdF9vZl9zZXhwXG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIHQgPSBTdGFibGUuVjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxuaW5jbHVkZSBFeHRlbmQgKEJhc2UuSW5mbylcblxuIiwiaW5jbHVkZSBCYXNlLkVycm9yXG5pbmNsdWRlIEluZm8uRXh0ZW5kIChCYXNlLkVycm9yKVxuXG5sZXQgZmFpbHdpdGhzID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IGZhaWx3aXRocCA/c3RyaWN0IGhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9yX2Vycm9yXG5cbnR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnX3dpdGhfdW5pdF9leHBlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIElPX3J1biA9IEJhc2UuT3JfZXJyb3JcblxuICBtb2R1bGUgSU9fZmx1c2ggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZy5JT19mbHVzaFxuXG4gICAgbGV0IHRvX3J1biB0ID0gQmFzZS5Pcl9lcnJvci5yZXR1cm4gdFxuICBlbmRcblxuICBsZXQgcnVuIGYgPSBva19leG4gKGYgKCkpXG4gIGxldCBzYW5pdGl6ZSBzID0gc1xuICBsZXQgZmx1c2hlZCAoKSA9IHRydWVcbiAgbGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gRXhwZWN0X3Rlc3RfY29uZmlnLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5lbmRcblxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IHN0cnVjdFxuICBtb2R1bGUgSU8gPSBCYXNlLk9yX2Vycm9yXG4gIG1vZHVsZSBJT19ydW4gPSBJT1xuXG4gIG1vZHVsZSBJT19mbHVzaCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSU9cblxuICAgIGxldCB0b19ydW4gdCA9IHRcbiAgZW5kXG5cbiAgbGV0IHJ1biBmID0gb2tfZXhuIChmICgpKVxuICBsZXQgZmx1c2hlZCAoKSA9IHRydWVcbiAgbGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gRXhwZWN0X3Rlc3RfY29uZmlnLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gIGxldCBzYW5pdGl6ZSBzID0gc1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCBFcnJvci5TdGFibGUuVjEudCkgUmVzdWx0LlN0YWJsZS5WMS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCBFcnJvci5TdGFibGUuVjIudCkgUmVzdWx0LlN0YWJsZS5WMS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBRdWlja2NoZWNrX2ludGZcbm9wZW4gQmFzZV9xdWlja2NoZWNrXG5tb2R1bGUgRmxvYXQgPSBCYXNlLkZsb2F0XG5tb2R1bGUgSW50ID0gQmFzZS5JbnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgT3B0aW9uID0gQmFzZS5PcHRpb25cblxubW9kdWxlIFBvbHltb3JwaGljX3R5cGVzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdmFyaWFudDIgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHZhcmlhbnQzID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHZhcmlhbnQ0ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdmFyaWFudDUgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHZhcmlhbnQ2ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgfCBgRSBvZiAnZVxuICAgIHwgYEYgb2YgJ2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiKSB0dXBsZTIgPSAnYSAqICdiIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHR1cGxlMyA9ICdhICogJ2IgKiAnYyBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdHVwbGU0ID0gJ2EgKiAnYiAqICdjICogJ2QgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0dXBsZTUgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdHVwbGU2ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZSAqICdmXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsICdyKSBmbjIgPSAnYSAtPiAnYiAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAncikgZm4zID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAncikgZm40ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgJ3IpIGZuNSA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAtJ2UsIC0nZiwgJ3IpIGZuNiA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdmIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5lbmRcblxubW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICBsZXQgb2ZfaGFzaCAodHlwZSBhKSAobW9kdWxlIE0gOiBEZXJpdmluZ19oYXNoIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIG9mX2hhc2hfZm9sZCBNLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTZcbiAgbGV0IG9mX3ByZWRpY2F0ZSBhIGIgfmYgPSB1bm1hcCAodmFyaWFudDIgYSBiKSB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gYEEgeCBlbHNlIGBCIHgpXG4gIGxldCBzaW5nbGV0b24gKCkgPSBvcGFxdWVcbiAgbGV0IGRvdWJsZXRvbiBmID0gb2ZfcHJlZGljYXRlIChzaW5nbGV0b24gKCkpIChzaW5nbGV0b24gKCkpIH5mXG4gIGxldCBlbnVtIF8gfmYgPSB1bm1hcCBpbnQgfmZcblxuICBsZXQgb2ZfbGlzdCBsaXN0IH5lcXVhbCA9XG4gICAgbGV0IGYgeCA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRpIGxpc3QgfmY6KGZ1biBfIHkgLT4gZXF1YWwgeCB5KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJRdWlja2NoZWNrLk9ic2VydmVyLm9mX2xpc3Q6IHZhbHVlIG5vdCBmb3VuZFwiXG4gICAgICB8IFNvbWUgKGksIF8pIC0+IGlcbiAgICBpblxuICAgIGVudW0gKExpc3QubGVuZ3RoIGxpc3QpIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmICgpKSB4IH5zaXplIH5oYXNoKVxuXG4gIGxldCBjb21wYXJpc29uIH5jb21wYXJlIH5lcSB+bHQgfmd0ID1cbiAgICB1bm1hcFxuICAgICAgKHZhcmlhbnQzIGx0IChzaW5nbGV0b24gKCkpIGd0KVxuICAgICAgfmY6KGZ1biB4IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZSB4IGVxIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gYEEgeCBlbHNlIGlmIGMgPiAwIHRoZW4gYEMgeCBlbHNlIGBCIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyYXRvclxuICBvcGVuIExldF9zeW50YXhcblxuICBsZXQgc2luZ2xldG9uID0gcmV0dXJuXG5cbiAgbGV0IGRvdWJsZXRvbiB4IHkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBpZiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSB0aGVuIHggZWxzZSB5KVxuICA7O1xuXG4gIGxldCBvZl9mdW4gZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZ2VuZXJhdGUgKGYgKCkpIH5zaXplIH5yYW5kb20pXG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5wIHNlcSA9XG4gICAgaWYgRmxvYXQuKCA8PSApIHAgMC4gfHwgRmxvYXQuKCA+ICkgcCAxLlxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcHJvYmFiaWxpdHkgWyVmXSBvdXQgb2YgYm91bmRzXCIgcCk7XG4gICAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgICBzZXFcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZmluaXNoOihmdW4gKCkgLT4gZmFpbHdpdGggXCJHZW5lcmF0b3Iub2Zfc2VxdWVuY2U6IHJhbiBvdXQgb2YgdmFsdWVzXCIpXG4gICAgICB+ZjooZnVuICgpIHggfmsgLT4gd2VpZ2h0ZWRfdW5pb24gWyBwLCBzaW5nbGV0b24geDsgMS4gLS4gcCwgb2ZfZnVuIGsgXSlcbiAgOztcblxuICBsZXQgcmVjIGJvdW5kZWRfZ2VvbWV0cmljIH5wIH5tYXhpbXVtIGluaXQgPVxuICAgIGlmIGluaXQgPSBtYXhpbXVtXG4gICAgdGhlbiBzaW5nbGV0b24gbWF4aW11bVxuICAgIGVsc2VcbiAgICAgIHdlaWdodGVkX3VuaW9uXG4gICAgICAgIFsgcCwgc2luZ2xldG9uIGluaXRcbiAgICAgICAgOyAxLiAtLiBwLCBvZl9mdW4gKGZ1biAoKSAtPiBib3VuZGVkX2dlb21ldHJpYyB+cCB+bWF4aW11bSAoaW5pdCArIDEpKVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IGdlb21ldHJpYyB+cCBpbml0ID0gYm91bmRlZF9nZW9tZXRyaWMgfnAgfm1heGltdW06SW50Lm1heF92YWx1ZSBpbml0XG4gIGxldCBzbWFsbF9ub25fbmVnYXRpdmVfaW50ID0gc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnRcbiAgbGV0IHNtYWxsX3Bvc2l0aXZlX2ludCA9IHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludFxuICBsZXQgbGlzdF93aXRoX2xlbmd0aCBsZW5ndGggdCA9IGxpc3Rfd2l0aF9sZW5ndGggdCB+bGVuZ3RoXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNlxuICBsZXQgZm4yID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm4yXG4gIGxldCBmbjMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjNcbiAgbGV0IGZuNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNFxuICBsZXQgZm41ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm41XG4gIGxldCBmbjYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjZcblxuICBsZXQgY29tcGFyZV9mbiBkb20gPVxuICAgIGZuIGRvbSBpbnQgPj58IGZ1biBnZXRfaW5kZXggeCB5IC0+IFslY29tcGFyZTogaW50XSAoZ2V0X2luZGV4IHgpIChnZXRfaW5kZXggeSlcbiAgOztcblxuICBsZXQgZXF1YWxfZm4gZG9tID0gY29tcGFyZV9mbiBkb20gPj58IGZ1biBjbXAgeCB5IC0+IEludC4oID0gKSAoY21wIHggeSkgMFxuZW5kXG5cbm1vZHVsZSBTaHJpbmtlciA9IHN0cnVjdFxuICBpbmNsdWRlIFNocmlua2VyXG5cbiAgbGV0IGVtcHR5ICgpID0gYXRvbWljXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2XG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEdlbmVyYXRvclxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEdlbmVyYXRvclxuICBlbmRcblxuICBpbmNsdWRlIEdlbmVyYXRvci5Nb25hZF9pbmZpeFxuXG4gIGxldCByZXR1cm4gPSBHZW5lcmF0b3IucmV0dXJuXG5lbmRcblxubW9kdWxlIENvbmZpZ3VyZSAoQ29uZmlnIDogUXVpY2tjaGVja19jb25maWcpID0gc3RydWN0XG4gIGluY2x1ZGUgQ29uZmlnXG5cbiAgbGV0IG5vbmRldGVybWluaXN0aWNfc3RhdGUgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbiAgbGV0IHJhbmRvbV9zdGF0ZV9vZl9zZWVkIHNlZWQgPVxuICAgIG1hdGNoIHNlZWQgd2l0aFxuICAgIHwgYE5vbmRldGVybWluaXN0aWMgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY3JlYXRlIChmb3JjZSBub25kZXRlcm1pbmlzdGljX3N0YXRlKVxuICAgIHwgYERldGVybWluaXN0aWMgc3RyIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoWyVoYXNoOiBzdHJpbmddIHN0cilcbiAgOztcblxuICBsZXQgbWFrZV9zZWVkIHNlZWQgOiBUZXN0LkNvbmZpZy5TZWVkLnQgPVxuICAgIG1hdGNoIHNlZWQgd2l0aFxuICAgIHwgYE5vbmRldGVybWluaXN0aWMgLT4gTm9uZGV0ZXJtaW5pc3RpY1xuICAgIHwgYERldGVybWluaXN0aWMgc3RyaW5nIC0+IERldGVybWluaXN0aWMgc3RyaW5nXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc2hyaW5rX2NvdW50ID0gZnVuY3Rpb25cbiAgICB8IGBFeGhhdXN0aXZlIC0+IEludC5tYXhfdmFsdWVcbiAgICB8IGBMaW1pdCBuIC0+IG5cbiAgOztcblxuICBsZXQgbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyA6IFRlc3QuQ29uZmlnLnQgPVxuICAgIHsgc2VlZCA9IG1ha2Vfc2VlZCAoT3B0aW9uLnZhbHVlIHNlZWQgfmRlZmF1bHQ6ZGVmYXVsdF9zZWVkKVxuICAgIDsgc2l6ZXMgPSBPcHRpb24udmFsdWUgc2l6ZXMgfmRlZmF1bHQ6ZGVmYXVsdF9zaXplc1xuICAgIDsgdGVzdF9jb3VudCA9IE9wdGlvbi52YWx1ZSB0cmlhbHMgfmRlZmF1bHQ6ZGVmYXVsdF90cmlhbF9jb3VudFxuICAgIDsgc2hyaW5rX2NvdW50ID1cbiAgICAgICAgbWFrZV9zaHJpbmtfY291bnQgKE9wdGlvbi52YWx1ZSBzaHJpbmtfYXR0ZW1wdHMgfmRlZmF1bHQ6ZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMpXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYWtlX3Rlc3RfbSAodHlwZSBhKSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiA6IChtb2R1bGUgVGVzdC5TIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gT3B0aW9uLnZhbHVlIHNocmlua2VyIH5kZWZhdWx0OlNocmlua2VyLmF0b21pY1xuICAgICAgbGV0IHNleHBfb2ZfdCA9IE9wdGlvbi52YWx1ZSBzZXhwX29mIH5kZWZhdWx0Olslc2V4cF9vZjogX11cbiAgICBlbmRcbiAgICBpblxuICAgIChtb2R1bGUgTSlcbiAgOztcblxuICBsZXQgcmFuZG9tX3ZhbHVlID8oc2VlZCA9IGRlZmF1bHRfc2VlZCkgPyhzaXplID0gMzApIGdlbiA9XG4gICAgbGV0IHJhbmRvbSA9IHJhbmRvbV9zdGF0ZV9vZl9zZWVkIHNlZWQgaW5cbiAgICBHZW5lcmF0b3IuZ2VuZXJhdGUgZ2VuIH5zaXplIH5yYW5kb21cbiAgOztcblxuICBsZXQgcmFuZG9tX3NlcXVlbmNlID9zZWVkID9zaXplcyBnZW4gPVxuICAgIGxldCBjb25maWcgPVxuICAgICAgbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHM6KFNvbWUgSW50Lm1heF92YWx1ZSkgfnNocmlua19hdHRlbXB0czpOb25lXG4gICAgaW5cbiAgICBsZXQgcmV0dXJuID0gcmVmIFNlcXVlbmNlLmVtcHR5IGluXG4gICAgVGVzdC53aXRoX3NhbXBsZV9leG4gfmNvbmZpZyBnZW4gfmY6KGZ1biBzZXF1ZW5jZSAtPiByZXR1cm4gOj0gc2VxdWVuY2UpO1xuICAgICFyZXR1cm5cbiAgOztcblxuICBsZXQgaXRlciA/c2VlZCA/c2l6ZXMgP3RyaWFscyBnZW4gfmYgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzOk5vbmUgaW5cbiAgICBUZXN0LndpdGhfc2FtcGxlX2V4biB+Y29uZmlnIGdlbiB+ZjooZnVuIHNlcXVlbmNlIC0+IFNlcXVlbmNlLml0ZXIgc2VxdWVuY2UgfmYpXG4gIDs7XG5cbiAgbGV0IHRlc3QgP3NlZWQgP3NpemVzID90cmlhbHMgP3Nocmlua2VyID9zaHJpbmtfYXR0ZW1wdHMgP3NleHBfb2YgP2V4YW1wbGVzIGdlbiB+ZiA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgaW5cbiAgICBsZXQgdGVzdF9tID0gbWFrZV90ZXN0X20gfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgaW5cbiAgICBUZXN0LnJ1bl9leG4gfmNvbmZpZyA/ZXhhbXBsZXMgfmYgdGVzdF9tXG4gIDs7XG5cbiAgbGV0IHRlc3Rfb3JfZXJyb3JcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID90cmlhbHNcbiAgICAgICAgP3Nocmlua2VyXG4gICAgICAgID9zaHJpbmtfYXR0ZW1wdHNcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgP2V4YW1wbGVzXG4gICAgICAgIGdlblxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyBpblxuICAgIGxldCB0ZXN0X20gPSBtYWtlX3Rlc3RfbSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiBpblxuICAgIFRlc3QucnVuIH5jb25maWcgP2V4YW1wbGVzIH5mIHRlc3RfbVxuICA7O1xuXG4gIGxldCB0ZXN0X2Rpc3RpbmN0X3ZhbHVlc1xuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/c2V4cF9vZlxuICAgICAgICBnZW5cbiAgICAgICAgfnRyaWFsc1xuICAgICAgICB+ZGlzdGluY3RfdmFsdWVzXG4gICAgICAgIH5jb21wYXJlXG4gICAgPVxuICAgIGxldCBtb2R1bGUgUyA9XG4gICAgICBDYW1sLlNldC5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0ga2V5XG5cbiAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBsZXQgZmFpbCBzZXQgPVxuICAgICAgbGV0IGV4cGVjdF9jb3VudCA9IGRpc3RpbmN0X3ZhbHVlcyBpblxuICAgICAgbGV0IGFjdHVhbF9jb3VudCA9IFMuY2FyZGluYWwgc2V0IGluXG4gICAgICBsZXQgdmFsdWVzID1cbiAgICAgICAgbWF0Y2ggc2V4cF9vZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBzZXhwX29mX2VsdCAtPiBTb21lIFslc2V4cCAoUy5lbGVtZW50cyBzZXQgOiBlbHQgbGlzdCldXG4gICAgICBpblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImluc3VmZmljaWVudCBkaXN0aW5jdCB2YWx1ZXNcIlxuICAgICAgICAgICAgKHRyaWFscyA6IGludClcbiAgICAgICAgICAgIChleHBlY3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAoYWN0dWFsX2NvdW50IDogaW50KVxuICAgICAgICAgICAgKHZhbHVlcyA6IChCYXNlLlNleHAudCBvcHRpb25bQHNleHAub3B0aW9uXSkpXVxuICAgIGluXG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBsZXQgc2V0ID0gcmVmIFMuZW1wdHkgaW5cbiAgICAgIGl0ZXIgP3NlZWQgP3NpemVzIH50cmlhbHMgZ2VuIH5mOihmdW4gZWx0IC0+XG4gICAgICAgIHNldCA6PSBTLmFkZCBlbHQgIXNldDtcbiAgICAgICAgaWYgUy5jYXJkaW5hbCAhc2V0ID49IGRpc3RpbmN0X3ZhbHVlcyB0aGVuIHIucmV0dXJuICgpKTtcbiAgICAgIGZhaWwgIXNldClcbiAgOztcblxuICBsZXQgdGVzdF9jYW5fZ2VuZXJhdGVcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID8odHJpYWxzID0gZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQpXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgIGdlblxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgciA9IHJlZiBbXSBpblxuICAgIGxldCBmX2FuZF9lbnF1ZXVlIHJldHVybiB4ID0gaWYgZiB4IHRoZW4gcmV0dXJuIGBDYW5fZ2VuZXJhdGUgZWxzZSByIDo9IHggOjogIXIgaW5cbiAgICBtYXRjaFxuICAgICAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICAgICAgaXRlciA/c2VlZCA/c2l6ZXMgfnRyaWFscyBnZW4gfmY6KGZfYW5kX2VucXVldWUgcmV0dXJuLnJldHVybik7XG4gICAgICAgIGBDYW5ub3RfZ2VuZXJhdGUpXG4gICAgd2l0aFxuICAgIHwgYENhbl9nZW5lcmF0ZSAtPiAoKVxuICAgIHwgYENhbm5vdF9nZW5lcmF0ZSAtPlxuICAgICAgKG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbm5vdCBnZW5lcmF0ZVwiXG4gICAgICAgfCBTb21lIHNleHBfb2ZfdmFsdWUgLT5cbiAgICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiY2Fubm90IGdlbmVyYXRlXCIgfmF0dGVtcHRzOighciA6IHZhbHVlIGxpc3QpXSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbmZpZ3VyZSAoc3RydWN0XG4gICAgbGV0IGRlZmF1bHRfc2VlZCA9IGBEZXRlcm1pbmlzdGljIFwiYW4gYXJiaXRyYXJ5IGJ1dCBkZXRlcm1pbmlzdGljIHN0cmluZ1wiXG5cbiAgICBsZXQgZGVmYXVsdF90cmlhbF9jb3VudCA9XG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+IDEwXzAwMFxuICAgICAgfCBXMzIgLT4gMV8wMDBcbiAgICA7O1xuXG4gICAgbGV0IGRlZmF1bHRfY2FuX2dlbmVyYXRlX3RyaWFsX2NvdW50ID0gMTBfMDAwXG4gICAgbGV0IGRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzID0gYExpbWl0IDEwMDBcblxuICAgIGxldCBkZWZhdWx0X3NpemVzID1cbiAgICAgIFNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuIChMaXN0LnJhbmdlIDAgMzAgfnN0b3A6YGluY2x1c2l2ZSlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTMSA9IFMxXG5tb2R1bGUgdHlwZSBTMiA9IFMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFNfaW50XG5tb2R1bGUgdHlwZSBTX3JhbmdlID0gU19yYW5nZVxuXG50eXBlIG5vbnJlYyBzZWVkID0gc2VlZFxudHlwZSBub25yZWMgc2hyaW5rX2F0dGVtcHRzID0gc2hyaW5rX2F0dGVtcHRzXG5cbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlnID0gUXVpY2tjaGVja19jb25maWdcbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlndXJlZCA9IFF1aWNrY2hlY2tfY29uZmlndXJlZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUeXBlcmVwX2xpYi5TdGRcbmluY2x1ZGUgQmFzZS5MaXN0XG5cbnR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG5tb2R1bGUgQXNzb2MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3NvY1xuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAqICdiKSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgY29tcGFyZSAodHlwZSBhIGIpIGNvbXBhcmVfYSBjb21wYXJlX2IgPSBbJWNvbXBhcmU6IChhICogYikgbGlzdF1cbmVuZFxuXG5sZXQgdG9fc3RyaW5nIH5mIHQgPVxuICBTZXhwbGliLlNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgKGZ1biB4IC0+IFNleHBsaWIuU2V4cC5BdG9tIHgpIChtYXAgdCB+ZikpXG47O1xuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RcbmxldCBnZW5fbm9uX2VtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X25vbl9lbXB0eVxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF93aXRoX2xlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciB+bGVuZ3RoXG47O1xuXG5sZXQgZ2VuX2ZpbHRlcmVkID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X2ZpbHRlcmVkXG5sZXQgZ2VuX3Blcm11dGF0aW9ucyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9wZXJtdXRhdGlvbnNcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmxpc3RcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmxpc3RcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBRdWlja2NoZWNrYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIENvbnYgPSBDb252XG5tb2R1bGUgdHlwZSBDb252X2ZpbHRlcmVkID0gQ29udl9maWx0ZXJlZFxubW9kdWxlIHR5cGUgQ29udjEgPSBDb252MVxubW9kdWxlIHR5cGUgQ29udl9maWx0ZXJlZDEgPSBDb252X2ZpbHRlcmVkMVxubW9kdWxlIHR5cGUgUyA9IFF1aWNrY2hlY2suU1xubW9kdWxlIHR5cGUgUzEgPSBRdWlja2NoZWNrLlMxXG5tb2R1bGUgdHlwZSBTMiA9IFF1aWNrY2hlY2suUzJcbm1vZHVsZSB0eXBlIFNfaW50ID0gUXVpY2tjaGVjay5TX2ludFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTKVxuICAgIChDb252IDogQ29udiB3aXRoIHR5cGUgcXVpY2tjaGVja2FibGUgOj0gUXVpY2tjaGVja2FibGUudCkgOiBTIHdpdGggdHlwZSB0IDo9IENvbnYudCA9XG5zdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlMVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMxKVxuICAgIChDb252IDogQ29udjEgd2l0aCB0eXBlICdhIHF1aWNrY2hlY2thYmxlIDo9ICdhIFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hKVxuICAgICAgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWRcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTKVxuICAgIChDb252IDogQ29udl9maWx0ZXJlZCB3aXRoIHR5cGUgcXVpY2tjaGVja2FibGUgOj0gUXVpY2tjaGVja2FibGUudCkgOlxuICBTIHdpdGggdHlwZSB0IDo9IENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkMVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMxKVxuICAgIChDb252IDogQ29udl9maWx0ZXJlZDEgd2l0aCB0eXBlICdhIHF1aWNrY2hlY2thYmxlIDo9ICdhIFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSlcbiAgICAgIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gSGFzaHRibF9pbnRmXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNodGJsX2ludGYuSGFzaGFibGVcbm1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IEhhc2h0YmxfaW50Zi5NZXJnZV9pbnRvX2FjdGlvblxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5cbm1vZHVsZSBDcmVhdG9ycyA9IEhhc2h0YmwuQ3JlYXRvcnNcblxuaW5jbHVkZSAoXG4gIEhhc2h0YmwgOlxuICBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBIYXNodGJsLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQmFzZS5IYXNodGJsLlNfd2l0aG91dF9zdWJtb2R1bGVzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgICBjcmVhdGVfbWFwcGVkXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgfmdldF9kYXRhXG4gICAgICBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cFxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIH5nZXRfZGF0YVxuICAgICAgfmNvbWJpbmVcbiAgICAgIGxcbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpbiB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gS2V5X2JpbmFibGVcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsLlBvbHlcblxuICBsZXQgdmFsaWRhdGUgPSB2YWxpZGF0ZVxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICAgICAgdHlwZSAoJ2EsICdiKSBlbCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZjNlNDQ1Yy00OTkyLTExZTYtYTI3OS0zNzAzYmUzMTFlN2JcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbHdpdGggXCJDb3JlX2hhc2h0YmwuYmluX3JlYWRfdF86IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5cbiAgdHlwZSBrZXkgPSBULktleS50XG4gIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSB0ID0gKFQuS2V5LnQsICdhKSBoYXNodGJsXG4gIHR5cGUgKCdhLCAnYikgdF9fID0gKFQuS2V5LnQsICdiKSBoYXNodGJsXG4gIHR5cGUgJ2Ega2V5XyA9IFQuS2V5LnRcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuS2V5LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSAoXG4gICAgSGFzaHRibCA6XG4gICAgc2lnXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEhhc2h0YmwuQWNjZXNzb3JzXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfX1xuICAgICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleV9cblxuICAgICAgaW5jbHVkZVxuICAgICAgICBIYXNodGJsLk11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXyB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleV9cblxuICAgICAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgaGFzaHRibFxuICAgIGVuZClcblxuICBsZXQgdmFsaWRhdGUgPSB2YWxpZGF0ZVxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9rZXkgdCA9IGludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2tleSB0XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPSBQb2x5LnNleHBfb2ZfdCBULktleS5zZXhwX29mX3Qgc2V4cF9vZl92IHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBrZXkpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gICAgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVC5LZXlcbiAgICAgICAgaW5jbHVkZSBLZXknXG4gICAgICBlbmRcblxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgZWwgPSBLZXkudCAqICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiOGZhYmFiMGEtNDk5Mi0xMWU2LThjY2EtOWJhMmM0Njg2ZDllXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2h0YmxcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGtleSwgZGF0YSA9IG5leHQgKCkgaW5cbiAgICAgICAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIkhhc2h0YmwuYmluX3JlYWRfdDogZHVwbGljYXRlIGtleVwiXG4gICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgICBbJXNleHBfb2Y6IEtleS50XVxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfYmluYWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgIGxldCBoYXNoYWJsZSA9XG4gICAgICB7IEhhc2hhYmxlLmhhc2ggPSBLZXkuaGFzaDsgY29tcGFyZSA9IEtleS5jb21wYXJlOyBzZXhwX29mX3QgPSBLZXkuc2V4cF9vZl90IH1cbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChLZXkgOiBLZXkpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNID0gSGFzaHRibC5NXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgRm9yX2Rlcml2aW5nIDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoSGFzaHRibCA6IEhhc2h0YmwuRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpXG5cbiAgbW9kdWxlIHR5cGUgTV9xdWlja2NoZWNrID0gTV9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX2FsaXN0X29wdGlvbiBtIGFsaXN0ID0gUmVzdWx0Lm9rIChvZl9hbGlzdF9vcl9lcnJvciBtIGFsaXN0KVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogKEtleS50ICogZGF0YSkgTGlzdC50XVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXAgfmY6KG9mX2FsaXN0X29wdGlvbiAobW9kdWxlIEtleSkpXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX29ic2VydmVyX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLm9ic2VydmVyOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdIHw+IFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgfmY6dG9fYWxpc3RcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfc2hyaW5rZXJfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2suc2hyaW5rZXI6IChLZXkudCAqIGRhdGEpIExpc3QudF1cbiAgICB8PiBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgICAgIH5mOihvZl9hbGlzdF9vcHRpb24gKG1vZHVsZSBLZXkpKVxuICAgICAgICAgfmZfaW52ZXJzZTp0b19hbGlzdFxuICA7O1xuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbmxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hfc2V0X2ludGZcbmluY2x1ZGUgQmFzZS5IYXNoX3NldFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpbiB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZSB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gSGFzaHRibC5LZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEVsdCA9IEhhc2h0YmwuS2V5XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEhhc2h0YmwuS2V5X2JpbmFibGVcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRfcGxhaW5cblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGVsdCA9IFQuRWx0LnRcbiAgdHlwZSBub25yZWMgdCA9IGVsdCB0XG5cbiAgbGV0IGVxdWFsID0gZXF1YWxcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuRWx0LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBsZXQgc2V4cF9vZl90IHQgPSBQb2x5LnNleHBfb2ZfdCBULkVsdC5zZXhwX29mX3QgdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBlbHQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBlbHQpID1cbiAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFQuRWx0XG4gICAgICAgIGluY2x1ZGUgWFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG4gICAgICB0eXBlIGVsID0gRWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJhZDM4MTY3Mi00OTkyLTExZTYtOWUzNi1iNzZkYzhjZDQ2NmZcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaF9zZXRcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IHYgPSBuZXh0ICgpIGluXG4gICAgICAgICAgYWRkIHQgdlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9iaW5hYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW4gKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcbmVuZFxuXG5sZXQgaGFzaGFibGUgPSBQcml2YXRlLmhhc2hhYmxlXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogS2V5LnQgTGlzdDAudF1cbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOihvZl9saXN0IChtb2R1bGUgS2V5KSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2sub2JzZXJ2ZXI6IEtleS50IExpc3QwLnRdIHw+IFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgfmY6dG9fbGlzdFxuOztcblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5zaHJpbmtlcjogS2V5LnQgTGlzdDAudF1cbiAgfD4gUXVpY2tjaGVjay5TaHJpbmtlci5tYXAgfmY6KG9mX2xpc3QgKG1vZHVsZSBLZXkpKSB+Zl9pbnZlcnNlOnRvX2xpc3Rcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBpbnRlcmZhY2VzIHVzZWQgaW4ge3shTWFwfVtNYXBdfS4gU2VlIHRob3NlIGRvY3MgZm9yIGEgZGVzY3JpcHRpb25cbiAgICBvZiB0aGUgZGVzaWduLlxuXG4gICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBtb2R1bGUgdHlwZXNcbiAgICBbe0NyZWF0b3JzLEFjY2Vzc29yc317MSwyLDMsX2dlbmVyaWMsX3dpdGhfY29tcGFyYXRvcn1dLiBJdCB1c2VzIGNoZWNrIGZ1bmN0b3JzIHRvXG4gICAgZW5zdXJlIHRoYXQgZWFjaCBtb2R1bGUgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBbX2dlbmVyaWNdIG9uZS5cblxuICAgIFdlIG11c3QgdHJlYXQgW0NyZWF0b3JzXSBhbmQgW0FjY2Vzc29yc10gc2VwYXJhdGVseSwgYmVjYXVzZSB3ZSBzb21ldGltZXMgbmVlZCB0b1xuICAgIGNob29zZSBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMgb2YgdGhlaXIgW29wdGlvbnNdLiBJbiBwYXJ0aWN1bGFyLCBbTWFwXSBpdHNlbGZcbiAgICBtYXRjaGVzIFtDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXSBidXQgW0FjY2Vzc29yczNdICh3aXRob3V0IGNvbXBhcmF0b3IpLlxuKilcblxuXG5vcGVuISBJbXBvcnRcbm9wZW4gVFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIE1hcCA9IEJhc2UuTWFwXG5tb2R1bGUgT3JfZHVwbGljYXRlID0gTWFwLk9yX2R1cGxpY2F0ZVxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcC5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBUcmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIEtleV9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIGtleV9zZXQgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAoJ2sga2V5LCAnY21wIGNtcCkgQmFzZS5TZXQudCkgb3B0aW9uc1xuXG4gIHZhbCB2YWxpZGF0ZVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIGtleSBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yczFcblxuICB2YWwga2V5X3NldCA6IF8gdCAtPiAoa2V5LCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnRcbiAgdmFsIHZhbGlkYXRlIDogbmFtZTooa2V5IC0+IHN0cmluZykgLT4gJ2EgVmFsaWRhdGUuY2hlY2sgLT4gJ2EgdCBWYWxpZGF0ZS5jaGVja1xuICB2YWwgdmFsaWRhdGVpIDogbmFtZTooa2V5IC0+IHN0cmluZykgLT4gKGtleSAqICdhKSBWYWxpZGF0ZS5jaGVjayAtPiAnYSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICBrZXkgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogIGtleSBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzMlxuXG4gIHZhbCBrZXlfc2V0IDogKCdrLCAndikgdCAtPiAoJ2ssIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudFxuICB2YWwgdmFsaWRhdGUgOiBuYW1lOignYSAtPiBzdHJpbmcpIC0+ICdiIFZhbGlkYXRlLmNoZWNrIC0+ICgnYSwgJ2IpIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2EgLT4gc3RyaW5nKVxuICAgIC0+ICgnYSAqICdiKSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnYSwgJ2IpIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YpIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzM1xuXG4gIHZhbCBrZXlfc2V0IDogKCdrLCBfLCAnY21wKSB0IC0+ICgnaywgJ2NtcCkgQmFzZS5TZXQudFxuICB2YWwgdmFsaWRhdGUgOiBuYW1lOignYSAtPiBzdHJpbmcpIC0+ICdiIFZhbGlkYXRlLmNoZWNrIC0+ICgnYSwgJ2IsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2EgLT4gc3RyaW5nKVxuICAgIC0+ICgnYSAqICdiKSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnYSwgJ2IsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsIF8pIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgdmFsIGtleV9zZXRcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCBfLCAnY21wKSB0XG4gICAgLT4gKCdrLCAnY21wKSBCYXNlLlNldC50XG5cbiAgdmFsIHZhbGlkYXRlIDogbmFtZTooJ2EgLT4gc3RyaW5nKSAtPiAnYiBWYWxpZGF0ZS5jaGVjayAtPiAoJ2EsICdiLCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIC0+IHN0cmluZylcbiAgICAtPiAoJ2sgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdrIFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxuKCoqIENvbnNpc3RlbmN5IGNoZWNrcyAoc2FtZSBhcyBpbiBbQ29udGFpbmVyXSkuICopXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IEFjY2Vzc29yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczMgKE0gOiBBY2Nlc3NvcnMzKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNodGJsX2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YpIEhhc2h0YmwudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgKCoqIE5ldmVyIHJlcXVpcmVzIGEgY29tcGFyYXRvciBiZWNhdXNlIGl0IGNhbiBnZXQgb25lIGZyb20gdGhlIGlucHV0IFtTZXQudF0uICopXG4gIHZhbCBvZl9rZXlfc2V0IDogKCdrIGtleSwgJ2NtcCBjbXApIEJhc2UuU2V0LnQgLT4gZjooJ2sga2V5IC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQ3JlYXRvcnMxXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuIDogKGtleSwgJ2EpIEhhc2h0YmwudCAtPiAnYSB0XG4gIHZhbCBvZl9rZXlfc2V0IDogKGtleSwgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IC0+IGY6KGtleSAtPiAndikgLT4gJ3YgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogIGtleSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICdhIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICBpbmNsdWRlIE1hcC5DcmVhdG9yczJcblxuICB2YWwgb2ZfaGFzaHRibF9leG4gOiAoJ2EsICdiKSBIYXNodGJsLnQgLT4gKCdhLCAnYikgdFxuICB2YWwgb2Zfa2V5X3NldCA6ICgnYSwgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAgJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICdiIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcblxuICB2YWwgb2ZfaGFzaHRibF9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYikgSGFzaHRibC50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9rZXlfc2V0IDogKCdhLCAnY21wKSBCYXNlLlNldC50IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAnYiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczEgKE0gOiBDcmVhdG9yczEpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5rZXlcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMiAoTSA6IENyZWF0b3JzMikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yc19nZW5lcmljXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMxXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gJ2EgdHJlZVxuICAgIHdpdGggdHlwZSBrZXkgOj0ga2V5XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzMlxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMyXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX3BsYWluX3RyZWUgKEtleSA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcbiAgICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRcbiAgICAgIHdpdGggdHlwZSBrZXkgOj0gS2V5LnRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgICAoSyA6IHNpZ1xuICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICAgIGVuZFxuICAgICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIHR5cGUgKydhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBNYXAudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUga2V5IDo9IEtleS50XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSBfIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoS2V5IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgU19wbGFpbiB3aXRoIG1vZHVsZSBLZXkgOj0gS2V5XG4gIGluY2x1ZGUgU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTIHdpdGggbW9kdWxlIEtleSA6PSBLZXlcbiAgaW5jbHVkZSBCaW5hYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLk1hcC5Gb3JfZGVyaXZpbmdcbiAgbW9kdWxlIE0gPSBCYXNlLk1hcC5NXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgWypiaW4qXSBmdW5jdGlvbnMgc3VwcG9ydCBiaW4taW8gb24gYmFzZS1zdHlsZSBtYXBzLFxuICAgICAgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gaW50IE1hcC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYykgS2V5X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnQgLT4gQmluX3Byb3QuU2hhcGUudFxuXG4gIHZhbCBiaW5fc2l6ZV9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuU2l6ZS5zaXplclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LlNpemUuc2l6ZXJcblxuICB2YWwgYmluX3dyaXRlX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcblxuICB2YWwgYmluX3JlYWRfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlJlYWQucmVhZGVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICB2YWwgX19iaW5fcmVhZF9tX190X19cbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5SZWFkLnJlYWRlclxuICAgIC0+IChpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgW3F1aWNrY2hlY2sqXSBmdW5jdGlvbnMgc3VwcG9ydCBkZXJpdmluZyBxdWlja2NoZWNrIG9uIGJhc2Utc3R5bGUgbWFwcyxcbiAgICAgIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IGludCBNYXAuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBNYXBfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogKGludCwgc3RyaW5nKSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMDA2NzRiZTlmZThkZmU5ZTlhZDQ3NjA2N2Q3ZDgxMDEgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgbWFwIChrLCBkaWZmKSB+ZjEgfmYyID1cbiAgICAgICAgbGV0IGsgPSBmMSBrIGluXG4gICAgICAgIGxldCBkaWZmID1cbiAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICB8IGBMZWZ0IHYgLT4gYExlZnQgKGYyIHYpXG4gICAgICAgICAgfCBgUmlnaHQgdiAtPiBgUmlnaHQgKGYyIHYpXG4gICAgICAgICAgfCBgVW5lcXVhbCAodjEsIHYyKSAtPiBgVW5lcXVhbCAoZjIgdjEsIGYyIHYyKVxuICAgICAgICBpblxuICAgICAgICBrLCBkaWZmXG4gICAgICA7O1xuXG4gICAgICBsZXQgbWFwX2RhdGEgdCB+ZiA9IG1hcCB0IH5mMTpGbi5pZCB+ZjI6ZlxuXG4gICAgICBsZXQgbGVmdCAoX2tleSwgZGlmZikgPVxuICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgfCBgTGVmdCB4IHwgYFVuZXF1YWwgKHgsIF8pIC0+IFNvbWUgeFxuICAgICAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCByaWdodCAoX2tleSwgZGlmZikgPVxuICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBCYXNlLk1hcC5NZXJnZV9lbGVtZW50XG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IEJhc2UuTWFwLkNvbnRpbnVlX29yX3N0b3Bcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gQmFzZS5NYXAuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCkgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApIGNvbXBhcmF0b3IgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgbGV0IGdlbl90cmVlIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW5cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RfbSAob2ZfY29tcGFyYXRvciBjb21wYXJhdG9yKSBrX2dlbiB2X2dlblxuICA7O1xuXG4gIGxldCBvYnNfdHJlZSBrX29icyB2X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5tYXBfdHJlZSBrX29icyB2X29ic1xuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBrX3NociB2X3NociA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga19zaHIgdl9zaHJcbiAgOztcbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90X21cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm1hcF90XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5tYXBfdFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcC5Vc2luZ19jb21wYXJhdG9yXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgbWF0Y2ggb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpOihIYXNodGJsLml0ZXJpIGhhc2h0YmwpIHdpdGhcbiAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiTWFwLm9mX2hhc2h0YmxfZXhuOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAga2V5XG4gICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IHRyZWVfb2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgdG9fdHJlZSAob2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibClcbiAgOztcblxuICBsZXQga2V5X3NldCB+Y29tcGFyYXRvciB0ID1cbiAgICBCYXNlLlNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoTGlzdC50b19hcnJheSAoa2V5cyB0KSlcbiAgOztcblxuICBsZXQga2V5X3NldF9vZl90cmVlIH5jb21wYXJhdG9yIHQgPSBrZXlfc2V0IH5jb21wYXJhdG9yIChvZl90cmVlIH5jb21wYXJhdG9yIHQpXG5cbiAgbGV0IG9mX2tleV9zZXQga2V5X3NldCB+ZiA9XG4gICAgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgICAgfmNvbXBhcmF0b3I6KEJhc2UuU2V0LmNvbXBhcmF0b3Iga2V5X3NldClcbiAgICAgIChBcnJheS5tYXAgKEJhc2UuU2V0LnRvX2FycmF5IGtleV9zZXQpIH5mOihmdW4ga2V5IC0+IGtleSwgZiBrZXkpKVxuICA7O1xuXG4gIGxldCB0cmVlX29mX2tleV9zZXQga2V5X3NldCB+ZiA9IHRvX3RyZWUgKG9mX2tleV9zZXQga2V5X3NldCB+ZilcbmVuZFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIE1hcC5BY2Nlc3NvcnMzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNYXAudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50KVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGsgdiA9IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2XG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgdCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpXG5lbmRcblxubGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpIHRcbmxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3IgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3JcbmxldCBjb21wYXJhdG9yX3MgPSBCYXNlLk1hcC5jb21wYXJhdG9yX3NcblxudHlwZSAnayBrZXkgPSAna1xudHlwZSAnYyBjbXAgPSAnY1xuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIE1hcFxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl90cmVlIG0gPSBNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG4gIGxldCB0b190cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbiAgaW5jbHVkZVxuICAgIE1hcC5DcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBNYXAuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgd2l0aCB0eXBlICdrIGtleSA6PSAnayBrZXlcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBNYXAuQWNjZXNzb3JzM1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sgLT4gc3RyaW5nKVxuICAgIC0+ICd2IFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICgnayBrZXkgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5lbmQpXG5cbm1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG5cbmxldCBmaW5kX29yX2Vycm9yIHQga2V5ID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgU29tZSBkYXRhIC0+IE9rIGRhdGFcbiAgfCBOb25lIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zIFslbWVzc2FnZSBcImtleSBub3QgZm91bmRcIiB+Xzooa2V5IDoga2V5KV1cbjs7XG5cbmxldCBtZXJnZV9za2V3ZWQgPSBNYXAubWVyZ2Vfc2tld2VkXG5sZXQgb2ZfaGFzaHRibF9leG4gbSB0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0XG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIHZhbCB0X29mX3NleHBcbiAgICA6ICAoQmFzZS5TZXhwLnQgLT4gJ2EgS2V5LnQpXG4gICAgLT4gKEJhc2UuU2V4cC50IC0+ICdiKVxuICAgIC0+IEJhc2UuU2V4cC50XG4gICAgLT4gKCdhLCAnYiwgXykgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcblxuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoS2V5KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBzaW5nbGV0b24gayB2ID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmZcbiAgbGV0IG9mX2FsaXN0IGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9hbGlzdF9leG4gYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfaGFzaHRibF9leG4gaGFzaHRibCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibFxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZlxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmlcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmlcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2tleV9zZXQga2V5X3NldCB+ZlxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbl9rIGdlbl92ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGdlbl9rIGdlbl92XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9TMSAoS2V5IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgb3BlbiBUcmVlXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBLZXkuY29tcGFyYXRvclxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgYSBiIGMgPSB0X29mX3NleHBfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiBhID0gc2luZ2xldG9uIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBvZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBvZl9zZXF1ZW5jZSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzID0gb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBvZl9zZXF1ZW5jZV9leG4gcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IG9mX3NlcXVlbmNlX211bHRpIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3QgYSA9IG9mX2FsaXN0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBvZl9hbGlzdF9vcl9lcnJvciBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IG9mX2FsaXN0X2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNodGJsX2V4biBhID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBvZl9hbGlzdF9tdWx0aSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgPSBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gb2ZfYWxpc3RfcmVkdWNlIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSA9IG9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2tleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2Zfa2V5X3NldFxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgaW52YXJpYW50cyBhID0gaW52YXJpYW50cyBhIH5jb21wYXJhdG9yXG4gIGxldCBpc19lbXB0eSBhID0gaXNfZW1wdHkgYVxuICBsZXQgbGVuZ3RoIGEgPSBsZW5ndGggYVxuICBsZXQgc2V0IGEgfmtleSB+ZGF0YSA9IHNldCBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZCBhIH5rZXkgfmRhdGEgPSBhZGQgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGRfZXhuIGEgfmtleSB+ZGF0YSA9IGFkZF9leG4gYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGRfbXVsdGkgYSB+a2V5IH5kYXRhID0gYWRkX211bHRpIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlX211bHRpIGEgYiA9IHJlbW92ZV9tdWx0aSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmRfbXVsdGkgYSBiID0gZmluZF9tdWx0aSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGNoYW5nZSBhIGIgfmYgPSBjaGFuZ2UgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCB1cGRhdGUgYSBiIH5mID0gdXBkYXRlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmluZF9leG4gYSBiID0gZmluZF9leG4gYSBiIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kIGEgYiA9IGZpbmQgYSBiIH5jb21wYXJhdG9yXG4gIGxldCByZW1vdmUgYSBiID0gcmVtb3ZlIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgbWVtIGEgYiA9IG1lbSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGl0ZXJpX3VudGlsID0gaXRlcmlfdW50aWxcbiAgbGV0IGl0ZXIyIGEgYiB+ZiA9IGl0ZXIyIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXBpID0gbWFwaVxuICBsZXQgZm9sZCA9IGZvbGRcbiAgbGV0IGZvbGRfdW50aWwgPSBmb2xkX3VudGlsXG4gIGxldCBmb2xkX3JpZ2h0ID0gZm9sZF9yaWdodFxuICBsZXQgZm9sZDIgYSBiIH5pbml0IH5mID0gZm9sZDIgYSBiIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfa2V5cyBhIH5mID0gZmlsdGVyX2tleXMgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyIGEgfmYgPSBmaWx0ZXIgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyaSBhIH5mID0gZmlsdGVyaSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBmaWx0ZXJfbWFwIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9tYXBpIGEgfmYgPSBmaWx0ZXJfbWFwaSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPSBjb21iaW5lX2Vycm9ycyB0IH5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlX2RpcmVjdCBhIGIgYyA9IGNvbXBhcmVfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlcXVhbCBhIGIgYyA9IGVxdWFsIGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IHN5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCA9IHN5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+Y29tcGFyYXRvclxuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgZm9sZF9zeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmYgfmluaXQgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgbWVyZ2UgYSBiIH5mID0gbWVyZ2UgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBtZXJnZV9za2V3ZWQgYSBiIH5jb21iaW5lID0gbWVyZ2Vfc2tld2VkIGEgYiB+Y29tYmluZSB+Y29tcGFyYXRvclxuICBsZXQgbWluX2VsdCA9IG1pbl9lbHRcbiAgbGV0IG1pbl9lbHRfZXhuID0gbWluX2VsdF9leG5cbiAgbGV0IG1heF9lbHQgPSBtYXhfZWx0XG4gIGxldCBtYXhfZWx0X2V4biA9IG1heF9lbHRfZXhuXG4gIGxldCBmb3JfYWxsID0gZm9yX2FsbFxuICBsZXQgZm9yX2FsbGkgPSBmb3JfYWxsaVxuICBsZXQgZXhpc3RzID0gZXhpc3RzXG4gIGxldCBleGlzdHNpID0gZXhpc3RzaVxuICBsZXQgY291bnQgPSBjb3VudFxuICBsZXQgY291bnRpID0gY291bnRpXG4gIGxldCBzcGxpdCBhIGIgPSBzcGxpdCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPSByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyYXRvclxuICBsZXQgY2xvc2VzdF9rZXkgYSBiIGMgPSBjbG9zZXN0X2tleSBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgbnRoID0gbnRoXG4gIGxldCBudGhfZXhuID0gbnRoX2V4blxuICBsZXQgcmFuayBhIGIgPSByYW5rIGEgYiB+Y29tcGFyYXRvclxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICA7O1xuXG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0XG4gIGxldCBtYXBfa2V5cyB0IH5mID0gbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoS2V5X1MxKVxuXG4gIHR5cGUgKyd2IHQgPSAoS2V5LnQsICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IG1hcCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvciBpblxuICBpZiBpbnZhcmlhbnRzIG1hcFxuICB0aGVuIG1hcFxuICBlbHNlIChcbiAgICAoKiBUaGUgaW52YXJpYW50cyBhcmUgYnJva2VuLCBidXQgd2UgY2FuIHN0aWxsIHRyYXZlcnNlIHRoZSBzdHJ1Y3R1cmUuICopXG4gICAgbWF0Y2ggVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmk6KGl0ZXJpIG1hcCkgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF9rZXkgLT4gZmFpbHdpdGggXCJNYXAuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gbWFwXCIpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBpbmNsdWRlIENyZWF0b3JzIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgbWFwID0gKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2ssICd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgOztcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjdkN2IxYTAtNDk5Mi0xMWU2LThhMzItYmJiMjIxZmEwMjVjXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgVHJlZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV90cmVlX1MxIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgICB0eXBlICgnaywgKyd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IEtleV9wbGFpblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IEtleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBLZXlfaGFzaGFibGVcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gS2V5X2JpbmFibGVfaGFzaGFibGVcbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBLZXlfYmluX2lvID0gS2V5X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEtleSA6IEtleV9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgJ3YgZWwgPSBLZXkudCAqICd2IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBfID0gYmluX2VsXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZGZiMzAwZjgtNDk5Mi0xMWU2LTljMTUtNzNhMmFjNmI4MTVjXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTWFwXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOktleS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgS2V5X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChLZXkpXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEtleV9TMSlcblxuICB0eXBlIGtleSA9IEtleS50XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgJ3YgdCA9IChrZXksICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBtYXBcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIGNtcHYgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjbXB2IHQxIHQyXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3QgS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG4gIDs7XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEtleScgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3QgKHR5cGUgYSkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgKHQgOiBhIHQpID1cbiAgICAgIFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBLZXknLmhhc2hfZm9sZF90IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5cbiAgbW9kdWxlIF8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWVcbiAgICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFwLk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0ga1xuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfZ2VuZXJhdG9yXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgS2V5KSBLZXkucXVpY2tjaGVja19nZW5lcmF0b3Igdl9nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0ga1xuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfb2JzZXJ2ZXJcbiAgICA9XG4gICAgcXVpY2tjaGVja19vYnNlcnZlciBLZXkucXVpY2tjaGVja19vYnNlcnZlciB2X29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX3Nocmlua2VyX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IGtcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X3Nocmlua2VyXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgS2V5LnF1aWNrY2hlY2tfc2hyaW5rZXIgdl9zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IE1hcC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChNYXAgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0KVxuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl9oYXNodGJsX2V4biA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9oYXNodGJsX2V4blxuICBsZXQga2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldF9vZl90cmVlXG4gIGxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2tleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIH5jb21wYXJhdG9yIGsgdlxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgfmNvbXBhcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgfmNvbXBhcmF0b3IgayB2XG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBrZXlcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gKGtleSwgJ2EsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5KVxuICBlbmRcblxuICBtb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IFN5bW1ldHJpY19kaWZmX2VsZW1lbnQuU3RhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuTWF5YmVfYm91bmQudCA9XG4gICAgICB8IEluY2wgb2YgJ2FcbiAgICAgIHwgRXhjbCBvZiAnYVxuICAgICAgfCBVbmJvdW5kZWRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEluY2wgeCAtPiBJbmNsIChmIHgpXG4gICAgICB8IEV4Y2wgeCAtPiBFeGNsIChmIHgpXG4gICAgICB8IFVuYm91bmRlZCAtPiBVbmJvdW5kZWRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEJhc2UuTWF5YmVfYm91bmRcblxudHlwZSAnYSB0ID0gJ2EgU3RhYmxlLlYxLnQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHF1aWNrY2hlY2ssIHNleHBdXG5cbmxldCBjb21wYXJlX29uZV9zaWRlZCB+c2lkZSBjb21wYXJlX2EgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IFVuYm91bmRlZCwgVW5ib3VuZGVkIC0+IDBcbiAgfCBVbmJvdW5kZWQsIF8gLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IC0xXG4gICAgIHwgYFVwcGVyIC0+IDEpXG4gIHwgXywgVW5ib3VuZGVkIC0+XG4gICAgKG1hdGNoIHNpZGUgd2l0aFxuICAgICB8IGBMb3dlciAtPiAxXG4gICAgIHwgYFVwcGVyIC0+IC0xKVxuICB8IEluY2wgYTEsIEluY2wgYTIgLT4gY29tcGFyZV9hIGExIGEyXG4gIHwgRXhjbCBhMSwgRXhjbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBJbmNsIGExLCBFeGNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAtMVxuICAgICAgfCBgVXBwZXIgLT4gMSlcbiAgICBlbHNlIGNcbiAgfCBFeGNsIGExLCBJbmNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAxXG4gICAgICB8IGBVcHBlciAtPiAtMSlcbiAgICBlbHNlIGNcbjs7XG5cbm1vZHVsZSBBc19sb3dlcl9ib3VuZCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBMb3dlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuXG5tb2R1bGUgQXNfdXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPSBjb21wYXJlX29uZV9zaWRlZCB+c2lkZTpgVXBwZXIgY29tcGFyZV9hIHQxIHQyXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGludGVyZmFjZXMgdXNlZCBpbiB7eyFDb3JlLlNldH1bU2V0XX0uIFNlZSB0aGVcbiAgICB7IU1hcH0gZG9jcyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZGVzaWduLlxuXG4gICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBtb2R1bGUgdHlwZXNcbiAgICBbe0NyZWF0b3JzLEFjY2Vzc29yc317MCwxLDIsX2dlbmVyaWMsX3dpdGhfY29tcGFyYXRvcn1dLiBJdCB1c2VzIGNoZWNrIGZ1bmN0b3JzIHRvXG4gICAgZW5zdXJlIHRoYXQgZWFjaCBtb2R1bGUgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBbX2dlbmVyaWNdIG9uZS5cblxuICAgIFdlIG11c3QgdHJlYXQgW0NyZWF0b3JzXSBhbmQgW0FjY2Vzc29yc10gc2VwYXJhdGVseSwgYmVjYXVzZSB3ZSBzb21ldGltZXMgbmVlZCB0b1xuICAgIGNob29zZSBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMgb2YgdGhlaXIgW29wdGlvbnNdLiBJbiBwYXJ0aWN1bGFyLCBbU2V0XSBpdHNlbGZcbiAgICBtYXRjaGVzIFtDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXSBidXQgW0FjY2Vzc29yczJdICh3aXRob3V0IGNvbXBhcmF0b3IpLlxuKilcblxuKCpcbiAgIENScyBhbmQgY29tbWVudHMgYWJvdXQgW1NldF0gZnVuY3Rpb25zIGRvIG5vdCBiZWxvbmcgaW4gdGhpcyBmaWxlLiAgVGhleSBiZWxvbmcgbmV4dFxuICAgdG8gdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9uIGluIHNldC5tbGkuXG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gVFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIFNldCA9IEJhc2UuU2V0XG5tb2R1bGUgVHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWVcbm1vZHVsZSBOYW1lZCA9IFNldC5OYW1lZFxubW9kdWxlIENvbnRhaW5lciA9IEJhc2UuQ29udGFpbmVyXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IFNldC5FbHRfcGxhaW5cblxubW9kdWxlIHR5cGUgRWx0ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIEVsdF9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuU2V0LkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuU2V0Lk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIHNldHMsIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IFNldC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5TaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYikgRWx0X2Jpbl9pby50XG4gICAgLT4gKGludCAtPiAoJ2EsICdiKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlXG4gICAgICBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gU2V0LldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFNldC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIHZhbCB0b19tYXBcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZjooJ2EgZWx0IC0+ICdiKSAtPiAoJ2EgZWx0LCAnYiwgJ2NtcCBjbXApIEJhc2UuTWFwLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnYSBlbHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczAgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMFxuXG4gIHZhbCB0b19tYXAgOiB0IC0+IGY6KGVsdCAtPiAnZGF0YSkgLT4gKGVsdCwgJ2RhdGEsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5NYXAudFxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IGVsdCBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiBlbHQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnMxXG5cbiAgdmFsIHRvX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5NYXAudFxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6ICdhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiAnYSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6ICdhIFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAnYSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMlxuXG4gIHZhbCB0b19tYXAgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IsICdjbXApIEJhc2UuTWFwLnRcbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiAnYSBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6ICdhIFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICB2YWwgdG9fbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIEJhc2UuTWFwLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6ICdhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbigqKiBDb25zaXN0ZW5jeSBjaGVja3MgKHNhbWUgYXMgaW4gW0NvbnRhaW5lcl0pLiAqKVxubW9kdWxlIENoZWNrX2FjY2Vzc29yc1xuICAgIChUIDogVDIpXG4gICAgKFRyZWUgOiBUMilcbiAgICAoRWx0IDogVDEpXG4gICAgKE5hbWVkIDogVDIpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczAgKE0gOiBBY2Nlc3NvcnMwKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5lbHRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yIChNIDogQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNoX3NldCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9oYXNodGJsX2tleXMgOiAoJ2EsICdjbXAsICgnYSBlbHQsIF8pIEhhc2h0YmwudCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICAoKiogTmV2ZXIgcmVxdWlyZXMgYSBjb21wYXJhdG9yIGJlY2F1c2UgaXQgY2FuIGdldCBvbmUgZnJvbSB0aGUgaW5wdXQgW01hcC50XS4gKilcbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhIGVsdCwgXywgJ2NtcCBjbXApIEJhc2UuTWFwLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMwID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzMFxuXG4gIHZhbCBvZl9oYXNoX3NldCA6IGVsdCBIYXNoX3NldC50IC0+IHRcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6IChlbHQsIF8pIEhhc2h0YmwudCAtPiB0XG4gIHZhbCBvZl9tYXBfa2V5cyA6IChlbHQsIF8sIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5NYXAudCAtPiB0XG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IGVsdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yczFcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAnYSBIYXNoX3NldC50IC0+ICdhIHRcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6ICgnYSwgXykgSGFzaHRibC50IC0+ICdhIHRcbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhLCBfLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuTWFwLnQgLT4gJ2EgdFxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+ICdhIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yczJcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAnYSBIYXNoX3NldC50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKCdhLCBfKSBIYXNodGJsLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSwgXywgJ2NtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX2hhc2h0Ymxfa2V5c1xuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsIF8pIEhhc2h0YmwudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSwgXywgJ2NtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMilcbiAgICAoVHJlZSA6IFQyKVxuICAgIChFbHQgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczAgKE0gOiBDcmVhdG9yczApID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMSAoTSA6IENyZWF0b3JzMSkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyIChNIDogQ3JlYXRvcnMyKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzX2dlbmVyaWNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBjbXBcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMCA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczBcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMwXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHdpdGggdHlwZSB0cmVlIDo9IHRyZWVcbiAgICB3aXRoIHR5cGUgZWx0IDo9IGVsdFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMxXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfcGxhaW5fdHJlZSAoRWx0IDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICB0eXBlIG5hbWVkID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLk5hbWVkLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIHRyZWUgOj0gdFxuICAgICAgd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuICAgICAgd2l0aCB0eXBlIG5hbWVkIDo9IG5hbWVkXG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICAgIGVuZFxuICAgICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgdHlwZSBuYW1lZCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgTmFtZWQudFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgQmFzZS5TZXQudFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgdHJlZSA6PSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcbiAgICB3aXRoIHR5cGUgbmFtZWQgOj0gbmFtZWRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChFbHQgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTX3BsYWluIHdpdGggbW9kdWxlIEVsdCA6PSBFbHRcbiAgaW5jbHVkZSBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgUyB3aXRoIG1vZHVsZSBFbHQgOj0gRWx0XG4gIGluY2x1ZGUgQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5vcGVuIFNldF9pbnRmXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnRcbm1vZHVsZSBOYW1lZCA9IE5hbWVkXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gRWx0XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEVsdF9iaW5hYmxlXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikgZWx0X2dlblxuICA7O1xuXG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3QgZWx0X29ic1xuICBsZXQgb2JzX3RyZWUgZWx0X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXRfdHJlZSBlbHRfb2JzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGVsdF9zaHIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3QgZWx0X3NoclxuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBlbHRfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIG0gZWx0X2dlbiA9XG4gIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGVsdF9nZW5cbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB0b19tYXAgfmNvbXBhcmF0b3IgdCA9IE1hcC5vZl9rZXlfc2V0IChTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIHQgfmNvbXBhcmF0b3IpXG4gIGxldCBvZl9tYXBfa2V5cyBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZSAoTWFwLmtleV9zZXQgbSlcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgSGFzaF9zZXQuZm9sZCBoc2V0IH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIEhhc2h0YmwuZm9sZCBoYXNodGJsIH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB+a2V5OnggfmRhdGE6XyB0IC0+XG4gICAgICBhZGQgdCB4IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWVcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgU2V0LkFjY2Vzc29yczJcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBTZXQudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBTZXQuTmFtZWQudClcblxuICBsZXQgdG9fbWFwID0gTWFwLm9mX2tleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBxdWlja2NoZWNrX29ic2VydmVyXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gcXVpY2tjaGVja19zaHJpbmtlclxuZW5kXG5cbnR5cGUgJ2EgY21wID0gJ2FcbnR5cGUgJ2EgZWx0ID0gJ2FcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBTZXRcblxuICBsZXQgb2ZfdHJlZSBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgbGV0IHNleHBfb2ZfdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdFxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTZXQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTZXQuQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgU2V0LldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuXG4gIGluY2x1ZGVcbiAgICBTZXQuQWNjZXNzb3JzMlxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgU2V0Lk5hbWVkLnRcbiAgICB3aXRoIG1vZHVsZSBOYW1lZCA6PSBOYW1lZFxuZW5kKVxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIFNldC5Vc2luZ19jb21wYXJhdG9yXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgVHJlZSA6PSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlKVxuXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxuXG4gIGxldCBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoc2V0ID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2hfc2V0IGhzZXQgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsIH5jb21wYXJhdG9yKVxuICA7O1xuZW5kXG5cbmxldCB0b19tYXAgPSBNYXAub2Zfa2V5X3NldFxubGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbmxldCBoYXNoX2ZvbGRfZGlyZWN0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0XG5sZXQgY29tcGFyYXRvciA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvclxubGV0IG9mX2hhc2hfc2V0IG0gaHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaHNldFxuXG5sZXQgb2ZfaGFzaHRibF9rZXlzIG0gaGFzaHRibCA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGhhc2h0Ymxcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnYSBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCB0X29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IEJhc2UuU2V4cC50IC0+ICgnYSwgJ2NvbXBhcmF0b3IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBfXG5lbmQgPSBzdHJ1Y3RcbiAgb3BlbiBVc2luZ19jb21wYXJhdG9yXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnY21wIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0gb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID0gb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSA9IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiBlID0gc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IHVuaW9uX2xpc3QgbCA9IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2ZfbGlzdCBsID0gb2ZfbGlzdCB+Y29tcGFyYXRvciBsXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2FycmF5IGEgPSBvZl9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyA9IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmZcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlIChUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGVsdFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IGVtcHR5ID0gVHJlZS5lbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gZSA9IFRyZWUuc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IGludmFyaWFudHMgdCA9IFRyZWUuaW52YXJpYW50cyB0IH5jb21wYXJhdG9yXG4gIGxldCBsZW5ndGggdCA9IFRyZWUubGVuZ3RoIHRcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlLmlzX2VtcHR5IHRcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlLmVsZW1lbnRzIHRcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZS5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUubWF4X2VsdF9leG4gdFxuICBsZXQgY2hvb3NlIHQgPSBUcmVlLmNob29zZSB0XG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlLmNob29zZV9leG4gdFxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZS50b19saXN0IHRcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlLnRvX2FycmF5IHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUuaXRlciB0IH5mXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBUcmVlLml0ZXIyIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlLmV4aXN0cyB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlLmZvcl9hbGwgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUuY291bnQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUuc3VtIG0gdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZS5maW5kIHQgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlLmZpbmRfZXhuIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlLmZpbmRfbWFwIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUuZm9sZCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlLmZvbGRfdW50aWwgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZS5mb2xkX3JpZ2h0IHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgbWFwIHQgfmYgPSBUcmVlLm1hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IFRyZWUuZmlsdGVyIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IFRyZWUuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IFRyZWUucGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1lbSB0IGEgPSBUcmVlLm1lbSB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZCB0IGEgPSBUcmVlLmFkZCB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZSB0IGEgPSBUcmVlLnJlbW92ZSB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IHVuaW9uIHQxIHQyID0gVHJlZS51bmlvbiB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgaW50ZXIgdDEgdDIgPSBUcmVlLmludGVyIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBkaWZmIHQxIHQyID0gVHJlZS5kaWZmIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiA9IFRyZWUuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZS5jb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MlxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlLmVxdWFsIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBpc19zdWJzZXQgdCB+b2ZfID0gVHJlZS5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJhdG9yXG4gIGxldCBhcmVfZGlzam9pbnQgdDEgdDIgPSBUcmVlLmFyZV9kaXNqb2ludCB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdCBsID0gVHJlZS5vZl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBUcmVlLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBUcmVlLm9mX2hhc2hfc2V0IGggfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gVHJlZS5vZl9oYXNodGJsX2tleXMgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYXJyYXkgYSA9IFRyZWUub2ZfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVHJlZS5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgdW5pb25fbGlzdCBsID0gVHJlZS51bmlvbl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzID0gVHJlZS5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyYXRvclxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPSBUcmVlLmdyb3VwX2J5IHQgfmVxdWl2IH5jb21wYXJhdG9yXG4gIGxldCBzcGxpdCB0IGEgPSBUcmVlLnNwbGl0IHQgYSB+Y29tcGFyYXRvclxuICBsZXQgbnRoIHQgaSA9IFRyZWUubnRoIHQgaVxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSA9IFRyZWUucmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyYXRvclxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgb2ZfdHJlZSB0ID0gdFxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZS50b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlLmJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvciB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZS5tZXJnZV90b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0J1xuICA7O1xuXG4gIGxldCBvZl9tYXBfa2V5cyA9IFRyZWUub2ZfbWFwX2tleXNcbiAgbGV0IHRvX21hcCB0IH5mID0gVHJlZS50b19tYXAgfmNvbXBhcmF0b3IgdCB+ZlxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGxldCBpc19zdWJzZXQgdCB+b2ZfID0gVHJlZS5OYW1lZC5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJhdG9yXG4gICAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZS5OYW1lZC5lcXVhbCB0MSB0MiB+Y29tcGFyYXRvclxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZWx0ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgZWx0IH5jb21wYXJhdG9yXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGVsdCA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGVsdFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBlbHQgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSBlbHQgfmNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoRWx0X1MxKVxuXG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgbmFtZWQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUuTmFtZWQudFxuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCB0ID0gVHJlZS5zZXhwX29mX3QgRWx0LnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIFRyZWUudF9vZl9zZXhwX2RpcmVjdCBYLnRfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yOkVsdF9TMS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZSAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV90cmVlX3BsYWluIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChFbHQpXG5lbmRcblxuKCogRG9uJ3QgdXNlIFtvZl9zb3J0ZWRfYXJyYXldIHRvIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGFuIGludGVybWVkaWF0ZSBhcnJheSAqKVxubGV0IGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmYgfmNvbXBhcmF0b3IgPVxuICBsZXQgc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mIGluXG4gIGlmIGludmFyaWFudHMgc2V0XG4gIHRoZW4gc2V0XG4gIGVsc2VcbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoZm9sZCBzZXQgfmluaXQ6KFRyZWUuZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgICAgICAgaWYgVHJlZS5tZW0gYWNjIGVsdCB+Y29tcGFyYXRvclxuICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlNldC5iaW5fcmVhZF90OiBkdXBsaWNhdGUgZWxlbWVudCBpbiBtYXBcIlxuICAgICAgICAgZWxzZSBUcmVlLmFkZCBhY2MgZWx0IH5jb21wYXJhdG9yKSlcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBDb21wYXJhdG9yLlBvbHlcbiAgaW5jbHVkZSBDcmVhdG9ycyAoRWx0KVxuXG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAnYSBuYW1lZCA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgTmFtZWQudFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIFslc2V4cF9vZjogX10gdFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuICA7O1xuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODhiY2M0NzgtNDk5Mi0xMWU2LWE5NWQtZmY0ODMxYWNmNDEwXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBUcmVlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKENvbXBhcmF0b3IuUG9seSlcblxuICAgIHR5cGUgJ2VsdCB0ID0gKCdlbHQsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgICB0eXBlICdhIG5hbWVkID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLk5hbWVkLnRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgdCA9IFRyZWUuc2V4cF9vZl90IHNleHBfb2ZfZWx0IFslc2V4cF9vZjogX10gdFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBlbHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIFRyZWUudF9vZl9zZXhwX2RpcmVjdCBlbHRfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gRWx0X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEVsdCA6IEVsdF9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlIGVsID0gRWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IF8gPSBiaW5fZWxcblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OTg5Mjc4ZS00OTkyLTExZTYtOGY0YS02Yjg5Nzc2YjFlNTNcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5TZXRcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBFbHRcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHRfUzEpXG5cbiAgdHlwZSAoJ2EsICdiKSBzZXQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgc2V0XG4gIHR5cGUgbmFtZWQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIE5hbWVkLnRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIEVsdC50X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChFbHQgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBFbHQuaGFzaF9mb2xkX3Qgc3RhdGUgdFxuXG4gICAgbGV0IGhhc2ggdCA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGhhc2hfZm9sZF90IChQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpKSB0KVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEVsdCcgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgICBQcm92aWRlX2Jpbl9pbyAoc3RydWN0XG4gICAgICBpbmNsdWRlIEVsdFxuICAgICAgaW5jbHVkZSBFbHQnXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9iaW5fc2V4cClcbiAgbW9kdWxlIEVsdCA9IEVsdF9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoRWx0IDogRWx0X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gU2V0Lk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0gdFxuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgRWx0KSBFbHQucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0gdFxuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgRWx0LnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfc2hyaW5rZXJfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0gdFxuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgRWx0LnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBTZXQuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoU2V0IDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpXG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPSAoJ2EsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgZWx0XG4gICAgICB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSAoZWx0LCBlbHRfY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBtb2R1bGUgTWFrZSAoRWx0IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0KVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxubW9kdWxlIEluZml4ID0gQmFzZS5Db21wYXJhYmxlLkluZml4XG5tb2R1bGUgUG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQ29tcGFyYWJsZS5Qb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBWYWxpZGF0ZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpIDogVmFsaWRhdGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGVcbiAgb3BlbiBNYXliZV9ib3VuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IEJhc2UuU2V4cC50b19zdHJpbmcgKFQuc2V4cF9vZl90IHQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWLmJvdW5kZWQgfm5hbWU6dG9fc3RyaW5nIH5sb3dlcjptaW4gfnVwcGVyOm1heCB+Y29tcGFyZTpULmNvbXBhcmUgdFxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgfm1pbiB0ID0gdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4OlVuYm91bmRlZCB0XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID0gdmFsaWRhdGVfYm91bmQgfm1heCB+bWluOlVuYm91bmRlZCB0XG5lbmRcblxubW9kdWxlIFZhbGlkYXRlX3dpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGUgKFQpXG4gIGluY2x1ZGUgVlxuXG4gICgqIFByZWFsbG9jYXRlIHRoZSBpbnRlcmVzdGluZyBib3VuZHMgdG8gbWluaW1pemUgYWxsb2NhdGlvbiBpbiB0aGUgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgIFt2YWxpZGF0ZV8qXS4gKilcbiAgbGV0IGV4Y2xfemVybyA9IE1heWJlX2JvdW5kLkV4Y2wgVC56ZXJvXG4gIGxldCBpbmNsX3plcm8gPSBNYXliZV9ib3VuZC5JbmNsIFQuemVyb1xuICBsZXQgdmFsaWRhdGVfcG9zaXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmV4Y2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9ub25fbmVnYXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmluY2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6aW5jbF96ZXJvIHRcbmVuZFxuXG5tb2R1bGUgV2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZV93aXRoX3plcm8gKFQpXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLldpdGhfemVybyAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1hcF9hbmRfc2V0X2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbiAgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLlBvbHkgKFQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIFZhbGlkYXRlIChDKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSB0ID0gQ1xuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoQylcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIGVuZCkgPVxuICBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kX2JpbmFibGVcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFggOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFZhbGlkYXRlIChUKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIHZhbCBjb21wb25lbnQgOiB0IC0+IEMudFxuICAgICAgICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuaW5jbHVkZSAoQmFzZS5Db21wYXJhYmxlIDogV2l0aF9jb21wYXJlKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY29tcGFyYWJsZVxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIE1hcCA6XG4gICAgICAgIE1hcC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUga2V5IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIFNldCA6XG4gICAgICAgIFNldC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUgZWx0IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoWCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gc3RydWN0XG4gICAgICBtb2R1bGUgTWFwID0gTWFwLlN0YWJsZS5WMS5NYWtlIChYKVxuICAgICAgbW9kdWxlIFNldCA9IFNldC5TdGFibGUuVjEuTWFrZSAoWClcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsImluY2x1ZGUgTGlzdDAgKCoqIEBpbmxpbmUgKilcblxuKCoqIFtzdGFibGVfZGVkdXBdIFNhbWUgYXMgW2RlZHVwXSBidXQgbWFpbnRhaW5zIHRoZSBvcmRlciBvZiB0aGUgbGlzdCBhbmQgZG9lc24ndCBhbGxvd1xuICAgIGNvbXBhcmUgZnVuY3Rpb24gdG8gYmUgc3BlY2lmaWVkIChvdGhlcndpc2UsIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiB0ZXJtcyBvZiBTZXQudFxuICAgIHdvdWxkIGhpZGUgYSBoZWF2eXdlaWdodCBmdW5jdG9yIGluc3RhbnRpYXRpb24gYXQgZWFjaCBjYWxsKS4gKilcbmxldCBzdGFibGVfZGVkdXAgPSBTZXQuUG9seS5zdGFibGVfZGVkdXBfbGlzdFxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIHN0YWdlZCB0byBpbmRpY2F0ZSB0aGF0IHJlYWwgd29yayAodGhlIGZ1bmN0b3IgYXBwbGljYXRpb24pIHRha2VzXG4gICBwbGFjZSBhZnRlciBhIHBhcnRpYWwgYXBwbGljYXRpb24uICopXG5sZXQgc3RhYmxlX2RlZHVwX3N0YWdlZCAodHlwZSBhKSB+KGNvbXBhcmUgOiBhIC0+IGEgLT4gaW50KVxuICA6IChhIGxpc3QgLT4gYSBsaXN0KSBCYXNlLlN0YWdlZC50XG4gID1cbiAgbGV0IG1vZHVsZSBTZXQgPVxuICAgIFNldC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgICAgICgqIFtzdGFibGVfZGVkdXBfbGlzdF0gbmV2ZXIgY2FsbHMgdGhlc2UgKilcbiAgICAgIGxldCB0X29mX3NleHAgXyA9IGFzc2VydCBmYWxzZVxuICAgICAgbGV0IHNleHBfb2ZfdCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgZW5kKVxuICBpblxuICBCYXNlLlN0YWdlZC5zdGFnZSBTZXQuc3RhYmxlX2RlZHVwX2xpc3Rcbjs7XG5cbmxldCB6aXBfd2l0aF9yZW1haW5kZXIgPVxuICBsZXQgcmVjIHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIGFjYyB4cyB5cyA9XG4gICAgbWF0Y2ggeHMsIHlzIHdpdGhcbiAgICB8IFtdLCBbXSAtPiByZXYgYWNjLCBOb25lXG4gICAgfCBmc3QsIFtdIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5GaXJzdCBmc3QpXG4gICAgfCBbXSwgc25kIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5TZWNvbmQgc25kKVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciAoKHgsIHkpIDo6IGFjYykgeHMgeXNcbiAgaW5cbiAgZnVuIHhzIHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIFtdIHhzIHlzXG47O1xuXG50eXBlIHNleHBfdGh1bmsgPSB1bml0IC0+IEJhc2UuU2V4cC50XG5cbmxldCBzZXhwX29mX3NleHBfdGh1bmsgeCA9IHggKClcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9mb3VuZCBvZiBzZXhwX3RodW5rICogQmFzZS5TdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX2lmX2R1cCB+Y29tcGFyZSA/KGNvbnRleHQgPSBcImV4bl9pZl9kdXBcIikgdCB+dG9fc2V4cCA9XG4gIG1hdGNoIGZpbmRfYV9kdXAgfmNvbXBhcmUgdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZHVwIC0+IHJhaXNlIChEdXBsaWNhdGVfZm91bmQgKChmdW4gKCkgLT4gdG9fc2V4cCBkdXApLCBjb250ZXh0KSlcbjs7XG5cbmxldCBzbGljZSBhIHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgYSBzdGFydCBzdG9wXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvblxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgfm5vbmUgfnNvbWUgdCA9XG4gIGxldCBtb2R1bGUgViA9IFZhbGlkYXRlIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gVi5uYW1lIFwibm9uZVwiIChWLnByb3RlY3Qgbm9uZSAoKSlcbiAgfCBTb21lIHggLT4gVi5uYW1lIFwic29tZVwiIChWLnByb3RlY3Qgc29tZSB4KVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vcHRpb25cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm9wdGlvblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIub3B0aW9uXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG5cbiAgICAoKiBbdW5zYWZlX3ZhbHVlXSBpcyBvbmx5IHNhZmUgdG8gY2FsbCB3aGVuIFtpc19ub25lXSByZXR1cm5zIFtmYWxzZV0uIFRvIGF2b2lkXG4gICAgICAgcmVwZWF0aW5nIHRoZSBbaXNfbm9uZV0gY2hlY2ssIHdlIGRlY2xhcmUgW1VuY2hlY2tlZF9zb21lXS4gW1VuY2hlY2tlZF9zb21lIHhdXG4gICAgICAgaGFzIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIGFzIFtTb21lIHhdLCBidXQgdGhlIHR5cGUgaGFzIG5vIFtOb25lXSBjbGF1c2UuXG5cbiAgICAgICBXZSBtYWtlIHN1cmUgYWxsIHRoaXMgd29ya3Mgd2l0aCB0ZXN0cyBvZiBbdW5zYWZlX3ZhbHVlXSBpbiB0ZXN0X29wdGlvbi5tbC5cblxuICAgICAgIFdlIHRyaWVkIHVzaW5nIFtPYmouZmllbGRdIGluc3RlYWQuIEl0IGdlbmVyYXRlcyBtdWNoIHdvcnNlIG5hdGl2ZSBjb2RlIGR1ZSB0b1xuICAgICAgIGZsb2F0IGFycmF5IHJlcHJlc2VudGF0aW9ucy4gKilcblxuICAgIG1vZHVsZSBVbmNoZWNrZWRfc29tZSA9IHN0cnVjdFxuICAgICAgKCogV2FybmluZyAzNyB0ZWxscyB1cyBbVW5jaGVja2VkX3NvbWVdIGlzIG5ldmVyIHVzZWQgYXMgYSBjb25zdHJ1Y3Rvci4gVGhpcyBpc1xuICAgICAgICAgaW50ZW50aW9uYWwsIHNvIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcuICopXG4gICAgICB0eXBlICdhIHQgPSBVbmNoZWNrZWRfc29tZSBvZiAnYSBbQEBvY2FtbC5ib3hlZF0gW0BAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuICAgIGVuZFxuXG4gICAgbGV0IHVuc2FmZV92YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgOiBhID1cbiAgICAgIGxldCAoVW5jaGVja2VkX3NvbWUgdmFsdWUpID0gKE9iai5tYWdpYyB0IDogYSBVbmNoZWNrZWRfc29tZS50KSBpblxuICAgICAgdmFsdWVcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBNTHRvbiBsaWJyYXJ5IHNldC9kaXNqb2ludC5mdW4sIHdoaWNoIGhhcyB0aGVcbiAgIGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlLlxuKilcbigqIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IEhlbnJ5IENlanRpbiwgTWF0dGhldyBGbHVldCwgU3VyZXNoXG4gKiAgICBKYWdhbm5hdGhhbiwgYW5kIFN0ZXBoZW4gV2Vla3MuXG4gKlxuICogTUx0b24gaXMgcmVsZWFzZWQgdW5kZXIgYSBCU0Qtc3R5bGUgbGljZW5zZS5cbiAqIFNlZSB0aGUgZmlsZSBNTHRvbi1MSUNFTlNFIGZvciBkZXRhaWxzLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbigqXG4gICB7dlxuICAgICAgICAgICBSb290XG4gICAgICAgICAgICAgfFxuICAgICAgICAgICBJbm5lclxuICAgICAgICAvIC4uIHwgLi4gXFxcbiAgICAgSW5uZXIgSW5uZXIgSW5uZXJcbiAgICAgIC98XFwgICAvfFxcICAgL3xcXFxuICAgICAgLi4uICAgLi4uICAgLi4uXG4gICB2fVxuXG4gICBXZSBjb25zdHJ1Y3QgdGhlIGBpbnZlcnRlZCcgdHJlZSBpbiB0aGUgTUwgcmVwcmVzZW50YXRpb24uXG4gICBUaGUgZGlyZWN0aW9uIG9mIHRoZSBlZGdlcyBpcyBVUFdBUkRTLlxuICAgU3RhcnRpbmcgd2l0aCBhbnkgWydhIHRdIHdlIGNhbiBzdGVwIGRpcmVjdGx5IHRvIGl0cyBwYXJlbnQuXG4gICBCdXQgd2UgY2FuJ3QgKGFuZCBkb24ndCBuZWVkIHRvKSBzdGFydCBmcm9tIHRoZSByb290IGFuZCBzdGVwIHRvIGl0cyBjaGlsZHJlbi5cbiopXG5cbigqXG4gICBbcmFua10gaXMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGRlcHRoIG9mIGFueSBub2RlIGluIHRoZSB1cC10cmVlLlxuXG4gICBJbWFnaW5lIGFuIHVubHVja3kgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBpbiB3aGljaCB5b3UgY3JlYXRlIE5cbiAgIGluZGl2aWR1YWwgW3RdLXZhbHVlcyBhbmQgdGhlbiB1bmlvbiB0aGVtIHRvZ2V0aGVyIGluIHN1Y2ggYSB3YXlcbiAgIHRoYXQgeW91IGFsd2F5cyBwaWNrIHRoZSByb290IG9mIGVhY2ggdHJlZSB0byB1bmlvbiB0b2dldGhlciwgc28gdGhhdFxuICAgbm8gcGF0aCBjb21wcmVzc2lvbiB0YWtlcyBwbGFjZS4gIElmIHlvdSBkb24ndCB0YWtlIGNhcmUgdG8gc29tZWhvd1xuICAgYmFsYW5jZSB0aGUgcmVzdWx0aW5nIHVwLXRyZWUsIGl0IGlzIHBvc3NpYmxlIHRoYXQgeW91IGVuZCB1cCB3aXRoIG9uZVxuICAgYmlnIGxvbmcgY2hhaW4gb2YgTiBsaW5rcywgYW5kIHRoZW4gY2FsbGluZyBbcmVwcmVzZW50YXRpdmVdIG9uIHRoZVxuICAgZGVlcGVzdCBub2RlIHRha2VzIFRoZXRhKE4pIHRpbWUuICBXaXRoIHRoZSBiYWxhbmNpbmcgc2NoZW1lIG9mIG5ldmVyXG4gICBpbmNyZWFzaW5nIHRoZSByYW5rIG9mIGEgbm9kZSB1bm5lY2Vzc2FyaWx5LCBpdCB3b3VsZCB0YWtlIE8obG9nIE4pLlxuKilcbnR5cGUgJ2Egcm9vdCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgbXV0YWJsZSByYW5rIDogaW50XG4gIH1cblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIG5vZGUgOiAnYSBub2RlIH1cblxuYW5kICdhIG5vZGUgPVxuICB8IElubmVyIG9mICdhIHRcbiAgKCogW0lubmVyIHhdIGlzIGEgbm9kZSB3aG9zZSBwYXJlbnQgaXMgW3hdLiAqKVxuICB8IFJvb3Qgb2YgJ2Egcm9vdFxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIGxldCByZWMgbG9vcCB0IGRlcHRoID1cbiAgICBtYXRjaCB0Lm5vZGUgd2l0aFxuICAgIHwgSW5uZXIgdCAtPiBsb29wIHQgKGRlcHRoICsgMSlcbiAgICB8IFJvb3QgciAtPiBhc3NlcnQgKGRlcHRoIDw9IHIucmFuaylcbiAgaW5cbiAgbG9vcCB0IDBcbjs7XG5cbmxldCBjcmVhdGUgdiA9IHsgbm9kZSA9IFJvb3QgeyB2YWx1ZSA9IHY7IHJhbmsgPSAwIH0gfVxuXG4oKiBpbnZhcmlhbnRzOlxuICAgW2lubmVyLm5vZGVdID0gW2lubmVyX25vZGVdID0gW0lubmVyIHRdLlxuICAgW2Rlc2NlbmRhbnRzXSBhcmUgdGhlIHByb3BlciBkZXNjZW5kYW50cyBvZiBbaW5uZXJdIHdlJ3ZlIHZpc2l0ZWQuXG4qKVxubGV0IHJlYyBjb21wcmVzcyB0IH5pbm5lcl9ub2RlIH5pbm5lciB+ZGVzY2VuZGFudHMgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIHQgaXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gICAgICAgUmUtcG9pbnQgYWxsIGRlc2NlbmRhbnRzIGRpcmVjdGx5IHRvIGl0IGJ5IHNldHRpbmcgdGhlbSB0byBbSW5uZXIgdF0uXG4gICAgICAgTm90ZTogd2UgZG9uJ3QgcmUtcG9pbnQgW2lubmVyXSBhcyBpdCBhbHJlYWR5IHBvaW50cyB0aGVyZS4gKilcbiAgICBMaXN0Lml0ZXIgZGVzY2VuZGFudHMgfmY6KGZ1biB0IC0+IHQubm9kZSA8LSBpbm5lcl9ub2RlKTtcbiAgICB0LCByXG4gIHwgSW5uZXIgdCcgYXMgbm9kZSAtPlxuICAgIGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOihpbm5lciA6OiBkZXNjZW5kYW50cylcbjs7XG5cbmxldCByZXByZXNlbnRhdGl2ZSB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT4gdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT4gY29tcHJlc3MgdCcgfmlubmVyX25vZGU6bm9kZSB+aW5uZXI6dCB+ZGVzY2VuZGFudHM6W11cbjs7XG5cbmxldCByb290IHQgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIGF2b2lkIHR1cGxlIGFsbG9jYXRpb24gaW4gdGhlIGZhc3QgcGF0aCAqKVxuICAgIHJcbiAgfCBfIC0+IHNuZCAocmVwcmVzZW50YXRpdmUgdClcbjs7XG5cbmxldCByYW5rIHQgPSAocm9vdCB0KS5yYW5rXG5sZXQgZ2V0IHQgPSAocm9vdCB0KS52YWx1ZVxubGV0IHNldCB0IHYgPSAocm9vdCB0KS52YWx1ZSA8LSB2XG5sZXQgc2FtZV9jbGFzcyB0MSB0MiA9IHBoeXNfZXF1YWwgKHJvb3QgdDEpIChyb290IHQyKVxuXG5sZXQgdW5pb24gdDEgdDIgPVxuICBsZXQgdDEsIHIxID0gcmVwcmVzZW50YXRpdmUgdDEgaW5cbiAgbGV0IHQyLCByMiA9IHJlcHJlc2VudGF0aXZlIHQyIGluXG4gIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSByMS5yYW5rIGluXG4gICAgbGV0IG4yID0gcjIucmFuayBpblxuICAgIGlmIG4xIDwgbjJcbiAgICB0aGVuIHQxLm5vZGUgPC0gSW5uZXIgdDJcbiAgICBlbHNlIChcbiAgICAgIHQyLm5vZGUgPC0gSW5uZXIgdDE7XG4gICAgICBpZiBuMSA9IG4yIHRoZW4gcjEucmFuayA8LSByMS5yYW5rICsgMSkpXG47O1xuXG5sZXQgaXNfY29tcHJlc3NlZCB0ID1cbiAgaW52YXJpYW50IGlnbm9yZSB0O1xuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgXyAtPiB0cnVlXG4gIHwgSW5uZXIgdCAtPlxuICAgIChtYXRjaCB0Lm5vZGUgd2l0aFxuICAgICB8IFJvb3QgXyAtPiB0cnVlXG4gICAgIHwgSW5uZXIgXyAtPiBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpc19jb21wcmVzc2VkID0gaXNfY29tcHJlc3NlZFxuICBsZXQgcmFuayA9IHJhbmtcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERvdWJseV9saW5rZWRfaW50ZlxuXG4oKiBJTlZBUklBTlQ6IFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhIGxpc3QgaXMgbXV0YXRlZCBkdXJpbmcgYSBwZW5kaW5nIGl0ZXJhdGlvbi5cblxuICAgVGhpcyBpbnZhcmlhbnQgaXMgZ3VhcmFudGVlZCBieSB0aGUgSGVhZGVyIGFuZCBFbHQgbW9kdWxlcyBpbiBjb25qdW5jdGlvbi4gIEFsbFxuICAgZG93bnN0cmVhbSBjb2RlIGluIHRoaXMgbW9kdWxlIG5lZWQgbm90IGJlIGNvbmNlcm5lZCB3aXRoIHRoaXMgaW52YXJpYW50LiAqKVxuZXhjZXB0aW9uIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvblxuXG5sZXQgcGh5c19lcXVhbCA9ICggPT0gKVxuXG5tb2R1bGUgSGVhZGVyIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBpbmNyX2xlbmd0aCA6IGJ5OmludCAtPiB0IC0+IHVuaXRcbiAgdmFsIGNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyA6IHQgLT4gdW5pdFxuXG4gICgqIFVuZm9ydHVuYXRlLCBidXQgYnkgc3BlY2lhbGl6aW5nIFt3aXRoX2l0ZXJhdGlvbl0gZm9yIGRpZmZlcmVudCBhcml0aWVzLCBhIGxhcmdlXG4gICAgIGFtb3VudCBvZiBhbGxvY2F0aW9uIGR1cmluZyBmb2xkcyBhbmQgaXRlcmF0aW9ucyBpcyBhdm9pZGVkLlxuXG4gICAgIFRoZSBvcmlnaW5hbCB0eXBlIG9mIFt3aXRoX2l0ZXJhdGlvbl0gd2FzXG4gICAgIFt2YWwgd2l0aF9pdGVyYXRpb24gOiB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYV1cblxuICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuXG4gICAgIHtbXG4gICAgICAgbGV0IHggPSBlIGluXG4gICAgICAgbGV0IGYgKCkgPSBnIHggaW5cbiAgICAgICBmICgpXG4gICAgIF19XG4gICAgIGFuZFxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmIHggPSBnIHggaW5cbiAgICAgICBmIHhcbiAgICAgXX1cbiAgICAgaXMgdGhhdCBpbiB0aGUgZmlyc3QgY2FzZSB0aGUgY2xvc3VyZSBmb3IgW2ZdIGNvbnRhaW5zIGEgcG9pbnRlciB0byBbeF0sXG4gICAgIGFuZCBpbiB0aGUgc2Vjb25kIGNhc2UgaXQgZG9lc24ndC4gQSBjbG9zdXJlIHdpdGhvdXQgcG9pbnRlcnMgdG8gZW5jbG9zaW5nXG4gICAgIGVudmlyb25tZW50IGlzIGltcGxlbWVudGVkIGFzIGEgbmFrZWQgZnVuY3Rpb24gcG9pbnRlciwgc28gd2UgZG9uJ3RcbiAgICAgYWxsb2NhdGUgYXQgYWxsLlxuXG4gICAgIEZvciB0aGUgc2FtZSByZWFzb24gd2UgbWFrZSBzdXJlIG5vdCB0byBjYWxsIFtSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiAuLi4pXVxuICAgICBpbnNpZGUgW3dpdGhfaXRlcmF0aW9uXSBhbmQgZG8gYW4gZXhwbGljaXQgbWF0Y2ggc3RhdGVtZW50IGluc3RlYWQuICopXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzIgOiB0IC0+ICdhIC0+ICdiIC0+ICgnYSAtPiAnYiAtPiAnYykgLT4gJ2NcbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzMgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCkgLT4gJ2RcbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzQgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSkgLT4gJ2VcbiAgdmFsIG1lcmdlIDogdCAtPiB0IC0+IFsgYFNhbWVfYWxyZWFkeSB8IGBNZXJnZWQgXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgcyA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGVuZGluZ19pdGVyYXRpb25zIDogaW50XG4gICAgfVxuXG4gIHR5cGUgdCA9IHMgVW5pb25fZmluZC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA9IFVuaW9uX2ZpbmQuY3JlYXRlIHsgbGVuZ3RoID0gMTsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9XG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICBsZXQgbGVuZ3RoIHQgPSAoVW5pb25fZmluZC5nZXQgdCkubGVuZ3RoXG5cbiAgbGV0IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaWYgcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPiAwIHRoZW4gcmFpc2UgQXR0ZW1wdF90b19tdXRhdGVfbGlzdF9kdXJpbmdfaXRlcmF0aW9uIGVsc2Ugc1xuICA7O1xuXG4gIGxldCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgaWdub3JlICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgOiBzKVxuICA7O1xuXG4gIGxldCBpbmNyX2xlbmd0aCB+Ynk6biB0ID1cbiAgICBsZXQgcyA9IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCBpblxuICAgIHMubGVuZ3RoIDwtIHMubGVuZ3RoICsgblxuICA7O1xuXG4gICgqIENhcmUgaXMgdGFrZW4gbm90IHRvIGFsbG9jYXRlIGluIFt3aXRoX2l0ZXJhdGlvbl8qXSwgc2luY2UgaXQgaXMgY2FsbGVkIGV2ZXJ5IHNlY29uZFxuICAgICBieSBbZXZlcnlfc2Vjb25kXSBpbiBbd3JpdGVyMC5tbF0gKilcblxuICBsZXQgaW5jcl9wZW5kaW5nX2l0ZXJzIHMgPSBzLnBlbmRpbmdfaXRlcmF0aW9ucyA8LSBzLnBlbmRpbmdfaXRlcmF0aW9ucyArIDFcbiAgbGV0IGRlY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgLSAxXG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzIgdCBhIGIgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8zIHQgYSBiIGMgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzQgdCBhIGIgYyBkIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgZCB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IG1lcmdlICh0MSA6IHQpIHQyID1cbiAgICBpZiBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgICB0aGVuIGBTYW1lX2FscmVhZHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuMSA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxKS5sZW5ndGggaW5cbiAgICAgIGxldCBuMiA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQyKS5sZW5ndGggaW5cbiAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDEgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICB3aXRoX2l0ZXJhdGlvbl80IHQyIHQxIHQyIG4xIG4yIChmdW4gdDEgdDIgbjEgbjIgLT5cbiAgICAgICAgICBVbmlvbl9maW5kLnVuaW9uIHQxIHQyO1xuICAgICAgICAgIFVuaW9uX2ZpbmQuc2V0IHQxIHsgbGVuZ3RoID0gbjEgKyBuMjsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9KSk7XG4gICAgICBgTWVyZ2VkKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbHQgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGhlYWRlciA6ICdhIHQgLT4gSGVhZGVyLnRcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGNyZWF0ZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYVxuICB2YWwgc2V0IDogJ2EgdCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bmxpbmsgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHNwbGl0X29yX3NwbGljZV9iZWZvcmUgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIDogJ2EgdCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIGluc2VydF9hZnRlciA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgaW5zZXJ0X2JlZm9yZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgdW5saW5rX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgbmV4dCA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgcHJldiA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgICA7IG11dGFibGUgcHJldiA6ICdhIHRcbiAgICA7IG11dGFibGUgbmV4dCA6ICdhIHRcbiAgICA7IG11dGFibGUgaGVhZGVyIDogSGVhZGVyLnRcbiAgICB9XG5cbiAgbGV0IGVxdWFsID0gcGh5c19lcXVhbFxuICBsZXQgbmV4dCB0ID0gdC5uZXh0XG4gIGxldCBwcmV2IHQgPSB0LnByZXZcbiAgbGV0IGhlYWRlciB0ID0gdC5oZWFkZXJcblxuICBsZXQgY3JlYXRlX2F1eCB2IGhlYWRlciA9XG4gICAgbGV0IHJlYyB0ID0geyB2YWx1ZSA9IHY7IHByZXYgPSB0OyBuZXh0ID0gdDsgaGVhZGVyIH0gaW5cbiAgICB0XG4gIDs7XG5cbiAgbGV0IGlzX3NpbmdsZXRvbiB0ID0gZXF1YWwgdCB0LnByZXZcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfYSB0LnZhbHVlXG4gIGxldCBjcmVhdGUgdiA9IGNyZWF0ZV9hdXggdiAoSGVhZGVyLmNyZWF0ZSAoKSlcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gIGxldCBzZXQgdCB2ID0gdC52YWx1ZSA8LSB2XG5cbiAgKCpcbiAgICAgW3NwbGl0X29yX3NwbGljZV0gaXMgc3VmZmljaWVudCBhcyB0aGUgbG9uZSBwcmltaXRpdmUgZm9yXG4gICAgIGFjY29tcGxpc2hpbmcgYWxsIHBvaW50ZXIgdXBkYXRlcyBvbiBjeWNsaWMgbG9vcHMgb2YgbGlzdCBub2Rlcy5cbiAgICAgSXQgdGFrZXMgdHdvIFwiZ2Fwc1wiIGJldHdlZW4gYWRqYWNlbnQgbGlua2VkIGxpc3Qgbm9kZXMuICBJZiB0aGUgZ2Fwc1xuICAgICBwb2ludCBpbnRvIHRoZSBzYW1lIGxpc3QsIHRoZSByZXN1bHQgaXMgdGhhdCBpdCB3aWxsIGJlIHNwbGl0IGludG9cbiAgICAgdHdvIGxpc3RzIGFmdGVyd2FyZHMuICBJZiB0aGUgZ2FwcyBwb2ludCBpbnRvIGRpZmZlcmVudCBsaXN0cywgdGhlXG4gICAgIHJlc3VsdCBpcyB0aGF0IHRoZXkgd2lsbCBiZSBzcGxpY2VkIHRvZ2V0aGVyIGludG8gb25lIGxpc3QgYWZ0ZXJ3YXJkcy5cblxuICAgICB7dlxuICAgICAgIEJlZm9yZSAgICAgICAgICAgICAgICAgICAgICBBZnRlclxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICAgICAgICAgICBBIHwgIDwtLT4gIHwgQiAgICAgICAgICAgICAgIEEgfCAgPC0tLSAgIC0tLT4gIHwgQlxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIFxcIC8gICAgICArLS0tLS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIC8gXFwgICAgICArLS0tLS1cbiAgICAgICAgICAgICAgQyB8ICA8LS0+ICB8IEQgICAgICAgICAgICAgICBDIHwgIDwtLS0gICAtLS0+ICB8IERcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAgICAgICAgICArLS0tLS1cbiAgICAgdn0gKilcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZSB+cHJldjE6YSB+bmV4dDE6YiB+cHJldjI6YyB+bmV4dDI6ZCA9XG4gICAgYS5uZXh0IDwtIGQ7XG4gICAgZC5wcmV2IDwtIGE7XG4gICAgYy5uZXh0IDwtIGI7XG4gICAgYi5wcmV2IDwtIGNcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZVxuICAgICAgfm5leHQxOnQxLm5leHRcbiAgICAgIH5wcmV2MTp0MS5uZXh0LnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5uZXh0XG4gICAgICB+cHJldjI6dDIubmV4dC5wcmV2XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+cHJldjE6dDEucHJldlxuICAgICAgfm5leHQxOnQxLnByZXYubmV4dFxuICAgICAgfnByZXYyOnQyLnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5wcmV2Lm5leHRcbiAgOztcblxuICBsZXQgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MiA9XG4gICAgSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MS5oZWFkZXI7XG4gICAgaWYgbm90IChIZWFkZXIuZXF1YWwgdDEuaGVhZGVyIHQyLmhlYWRlcilcbiAgICB0aGVuIEhlYWRlci5jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIuaGVhZGVyXG4gIDs7XG5cbiAgKCogV2UgcmVkZWZpbmUgc2FmZSB2ZXJzaW9ucyBmb3IgZXhwb3J0ICopXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MlxuICA7O1xuXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyO1xuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGluc2VydF9iZWZvcmUgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGR1bW15X2hlYWRlciA9IEhlYWRlci5jcmVhdGUgKClcblxuICBsZXQgdW5saW5rX2JlZm9yZSB0ID1cbiAgICBsZXQgbm9kZSA9IHQucHJldiBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmtfYWZ0ZXIgdCA9XG4gICAgbGV0IG5vZGUgPSB0Lm5leHQgaW5cbiAgICBpZiBpc19zaW5nbGV0b24gbm9kZVxuICAgIHRoZW4gbm9kZVxuICAgIGVsc2UgKFxuICAgICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieTooLTEpO1xuICAgICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9IGlnbm9yZSAodW5saW5rX2FmdGVyIHQucHJldiA6IF8gdClcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBFbHQudCBvcHRpb24gcmVmXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBoZWFkIC0+XG4gICAgbGV0IGhlYWRlciA9IEVsdC5oZWFkZXIgaGVhZCBpblxuICAgIGxldCByZWMgbG9vcCBuIGVsdCA9XG4gICAgICBsZXQgbmV4dF9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIGxldCBwcmV2X2VsdCA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQucHJldiBuZXh0X2VsdCkpO1xuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQubmV4dCBwcmV2X2VsdCkpO1xuICAgICAgYXNzZXJ0IChIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZWx0KSBoZWFkZXIpO1xuICAgICAgaW52YXJpYW50X2EgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgaWYgRWx0LmVxdWFsIG5leHRfZWx0IGhlYWQgdGhlbiBuIGVsc2UgbG9vcCAobiArIDEpIG5leHRfZWx0XG4gICAgaW5cbiAgICBsZXQgbGVuID0gbG9vcCAxIGhlYWQgaW5cbiAgICBhc3NlcnQgKGxlbiA9IEhlYWRlci5sZW5ndGggaGVhZGVyKVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSAoKSA6IGEgdCA9IHJlZiBOb25lXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBjcmVhdGUgKClcbiAgfCB4IDo6IHhzIC0+XG4gICAgbGV0IGZpcnN0ID0gRWx0LmNyZWF0ZSB4IGluXG4gICAgbGV0IF9sYXN0ID0gTGlzdC5mb2xkIHhzIH5pbml0OmZpcnN0IH5mOkVsdC5pbnNlcnRfYWZ0ZXIgaW5cbiAgICByZWYgKFNvbWUgZmlyc3QpXG47O1xuXG5sZXQgb2ZfYXJyYXkgPSBmdW5jdGlvblxuICB8IFt8fF0gLT4gY3JlYXRlICgpXG4gIHwgYXJyIC0+XG4gICAgbGV0IGZpcnN0ID0gRWx0LmNyZWF0ZSBhcnIuKDApIGluXG4gICAgbGV0IHJlYyBsb29wIGFyciBlbHQgaSA9XG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGFyciB0aGVuIGxvb3AgYXJyIChFbHQuaW5zZXJ0X2FmdGVyIGVsdCBhcnIuKGkpKSAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIGFyciBmaXJzdCAxO1xuICAgIHJlZiAoU29tZSBmaXJzdClcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbmV3X2ZpcnN0ID0gRWx0LmNyZWF0ZSAoZiAoRWx0LnZhbHVlIGZpcnN0KSkgaW5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfZmlyc3QgZmlyc3QgKGZ1biBmIG5ld19maXJzdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBFbHQuaW5zZXJ0X2FmdGVyIGFjYyAoZiAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgICgqIHVucm9sbCBhbmQgc2tpcCBmaXJzdCBlbHQgKilcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZmlyc3QgaW5cbiAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBuZXdfZmlyc3QgZmlyc3QgbmV4dCk7XG4gICAgcmVmIChTb21lIG5ld19maXJzdClcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19maXJzdCA9IEVsdC5jcmVhdGUgKGYgMCAoRWx0LnZhbHVlIGZpcnN0KSkgaW5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfZmlyc3QgZmlyc3QgKGZ1biBmIG5ld19maXJzdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IEVsdC5pbnNlcnRfYWZ0ZXIgYWNjIChmIGkgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgICgqIHVucm9sbCBhbmQgc2tpcCBmaXJzdCBlbHQgKilcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZmlyc3QgaW5cbiAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAxIG5ld19maXJzdCBmaXJzdCBuZXh0KTtcbiAgICByZWYgKFNvbWUgbmV3X2ZpcnN0KVxuOztcblxubGV0IGZvbGRfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRpX2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBpIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIChpICsgMSkgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgMCBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRfZWx0XzEgdCB+aW5pdCB+ZiBhID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiBhIGluaXQgZmlyc3QgKGZ1biBmIGEgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHRfMSB0IH5pbml0IH5mIGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGEgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGkgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgMCBhIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgaXRlcl9lbHQgdCB+ZiA9IGZvbGRfZWx0XzEgdCB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+IGYgZWx0KSBmXG5sZXQgaXRlcmlfZWx0IHQgfmYgPSBmb2xkaV9lbHQgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgZWx0IC0+IGYgaSBlbHQpXG5cbm9wZW4gV2l0aF9yZXR1cm5cblxubGV0IGZpbmRfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIHIucmV0dXJuIChTb21lIGVsdCkpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkaV9lbHRfMSB0IGYgfmluaXQ6KCkgfmY6KGZ1biBpIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIGVsdCkpKTtcbiAgICBOb25lKVxuOztcblxuKCogdGhpcyBmdW5jdGlvbiBpcyBsYW1iZGEgbGlmdGVkIGZvciBwZXJmb3JtYW5jZSwgdG8gbWFrZSBkaXJlY3QgcmVjdXJzaXZlIGNhbGxzIGluc3RlYWRcbiAgIG9mIGNhbGxzIHRocm91Z2ggaXRzIGNsb3N1cmUuIEl0IGFsc28gYXZvaWRzIHRoZSBpbml0aWFsIGNsb3N1cmUgYWxsb2NhdGlvbi4gKilcbmxldCByZWMgaXRlcl9sb29wIGZpcnN0IGYgZWx0ID1cbiAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJfbG9vcCBmaXJzdCBmIG5leHRcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMiAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJfbG9vcCBmaXJzdCBmIGZpcnN0KVxuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgZmlyc3QgLT4gSGVhZGVyLmxlbmd0aCAoRWx0LmhlYWRlciBmaXJzdClcbjs7XG5cbmxldCByZWMgaXRlcmlfbG9vcCBmaXJzdCBmIGkgZWx0ID1cbiAgZiBpIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcmlfbG9vcCBmaXJzdCBmIChpICsgMSkgbmV4dFxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMiAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJpX2xvb3AgZmlyc3QgZiAwIGZpcnN0KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBmb2xkaV9lbHRfMSB0IH5pbml0IGYgfmY6KGZ1biBpIGYgYWNjIGVsdCAtPiBmIGkgYWNjIChFbHQudmFsdWUgZWx0KSlcbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZF9lbHRfMSB0IH5pbml0IGYgfmY6KGZ1biBmIGFjYyBlbHQgLT4gZiBhY2MgKEVsdC52YWx1ZSBlbHQpKVxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgdW5jaGVja2VkX2l0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGYgZWx0ID1cbiAgICAgIGYgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICgqIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBiYWcgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5IFtmXSAqKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChwaHlzX2VxdWFsIGZpcnN0IG5leHQpIHRoZW4gbG9vcCB0IGYgbmV4dFxuICAgIGluXG4gICAgbG9vcCB0IGYgZmlyc3Rcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gT3B0aW9uLmlzX25vbmUgIXRcblxuKCogbW9yZSBlZmZpY2llbnQgdGhhbiB3aGF0IENvbnRhaW5lci5NYWtlIHJldHVybnMgKilcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIChFbHQudmFsdWUgcHJldikgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IGZvbGRfcmlnaHRfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBlbHQgPVxuICAgICAgICBsZXQgcHJldiA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgICBsZXQgYWNjID0gZiBwcmV2IGFjYyBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIHByZXYgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIHByZXZcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdClcbjs7XG5cbmxldCB0b19saXN0IHQgPSBmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB4IHRsIC0+IHggOjogdGwpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHMpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQmFzZS5MaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxubGV0IGNvcHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcbmxldCBjbGVhciB0ID0gdCA6PSBOb25lXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHQxIHQyID1cbiAgbWF0Y2ggIXQxLCAhdDIgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gMFxuICB8IE5vbmUsIF8gLT4gLTFcbiAgfCBfLCBOb25lIC0+IDFcbiAgfCBTb21lIGYxLCBTb21lIGYyIC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZjEpIGNvbXBhcmVfZWx0IGYxIGYyIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zXG4gICAgICAgIChFbHQuaGVhZGVyIGYyKVxuICAgICAgICBjb21wYXJlX2VsdFxuICAgICAgICBmMVxuICAgICAgICBmMlxuICAgICAgICAoZnVuIGNvbXBhcmVfZWx0IGYxIGYyIC0+XG4gICAgICAgICAgIGxldCByZWMgbG9vcCBjb21wYXJlX2VsdCBlbHQxIGYxIGVsdDIgZjIgPVxuICAgICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IChFbHQudmFsdWUgZWx0MSkgKEVsdC52YWx1ZSBlbHQyKSBpblxuICAgICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0IDw+IDBcbiAgICAgICAgICAgICB0aGVuIGNvbXBhcmVfcmVzdWx0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBsZXQgbmV4dDEgPSBFbHQubmV4dCBlbHQxIGluXG4gICAgICAgICAgICAgICBsZXQgbmV4dDIgPSBFbHQubmV4dCBlbHQyIGluXG4gICAgICAgICAgICAgICBtYXRjaCBwaHlzX2VxdWFsIG5leHQxIGYxLCBwaHlzX2VxdWFsIG5leHQyIGYyIHdpdGhcbiAgICAgICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgICAgICAgICAgICB8IGZhbHNlLCB0cnVlIC0+IDFcbiAgICAgICAgICAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IGxvb3AgY29tcGFyZV9lbHQgbmV4dDEgZjEgbmV4dDIgZjIpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxvb3AgY29tcGFyZV9lbHQgZjEgZjEgZjIgZjIpKVxuOztcblxuZXhjZXB0aW9uIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcblxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9XG4gIGlmIHBoeXNfZXF1YWwgc3JjIGRzdCB0aGVuIHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3Q7XG4gIG1hdGNoICFzcmMgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHNyY19oZWFkIC0+XG4gICAgKG1hdGNoICFkc3Qgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgICBkc3QgOj0gU29tZSBzcmNfaGVhZDtcbiAgICAgICBjbGVhciBzcmNcbiAgICAgfCBTb21lIGRzdF9oZWFkIC0+XG4gICAgICAgKG1hdGNoIEhlYWRlci5tZXJnZSAoRWx0LmhlYWRlciBzcmNfaGVhZCkgKEVsdC5oZWFkZXIgZHN0X2hlYWQpIHdpdGhcbiAgICAgICAgfCBgU2FtZV9hbHJlYWR5IC0+IHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcbiAgICAgICAgfCBgTWVyZ2VkIC0+XG4gICAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZHN0X2hlYWQgc3JjX2hlYWQ7XG4gICAgICAgICAgY2xlYXIgc3JjKSlcbjs7XG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID0gaXRlcl9lbHQgdCB+ZjooZnVuIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiAoRWx0LnZhbHVlIGVsdCkpKVxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID0gaXRlcmlfZWx0IHQgfmY6KGZ1biBpIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiBpIChFbHQudmFsdWUgZWx0KSkpXG5cbmxldCByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZSA9XG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBlbHQgLT5cbiAgICAobWF0Y2ggIXQgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGhlYWQgLT5cbiAgICAgICBpZiBFbHQuZXF1YWwgaGVhZCBlbHRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgdCA6PSBpZiBFbHQuZXF1YWwgaGVhZCBuZXh0X2VsdCB0aGVuIE5vbmUgZWxzZSBTb21lIG5leHRfZWx0KSk7XG4gICAgRWx0LnVubGluayBlbHQpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRpX2VsdCB0IH5pbml0OltdIH5mOihmdW4gaSBlbHRzIGVsdCAtPlxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBlbHRzIGVsdCAtPlxuICAgICAgICAgbWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBlbHQgOjogZWx0c1xuICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgIEVsdC5zZXQgZWx0IHZhbHVlO1xuICAgICAgICAgICBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmV4Y2VwdGlvbiBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcblxubGV0IGZpcnN0X2VsdCB0ID0gIXRcbmxldCBsYXN0X2VsdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQucHJldiAhdFxubGV0IGZpcnN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAoZmlyc3RfZWx0IHQpXG5sZXQgbGFzdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQudmFsdWUgKGxhc3RfZWx0IHQpXG5cbmxldCBpc19maXJzdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGlzX2xhc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgICBFbHQuZXF1YWwgZWx0IGxhc3QpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtZW1fZWx0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuOztcblxubGV0IHByZXYgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBTb21lIChFbHQucHJldiBlbHQpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBuZXh0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGxhc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0Lm5leHQgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2FmdGVyIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2FmdGVyIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfYmVmb3JlIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgICAgIG5ld19lbHQpXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5pbnNlcnRfYmVmb3JlIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfZW1wdHkgdCB2ID1cbiAgbGV0IG5ld19lbHQgPSBFbHQuY3JlYXRlIHYgaW5cbiAgdCA6PSBTb21lIG5ld19lbHQ7XG4gIG5ld19lbHRcbjs7XG5cbmxldCBpbnNlcnRfbGFzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPiBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2XG47O1xuXG5sZXQgaW5zZXJ0X2ZpcnN0IHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluc2VydF9lbXB0eSB0IHZcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgbmV3X2VsdFxuOztcblxubGV0IHJlbW92ZV9sYXN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnVubGlua19iZWZvcmUgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZmlyc3QgbGFzdCB0aGVuIHQgOj0gTm9uZTtcbiAgICBTb21lIChFbHQudmFsdWUgbGFzdClcbjs7XG5cbmxldCByZW1vdmVfZmlyc3QgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHNlY29uZCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgRWx0LnVubGluayBmaXJzdDtcbiAgICB0IDo9IGlmIEVsdC5lcXVhbCBmaXJzdCBzZWNvbmQgdGhlbiBOb25lIGVsc2UgU29tZSBzZWNvbmQ7XG4gICAgU29tZSAoRWx0LnZhbHVlIGZpcnN0KVxuOztcblxubGV0IHJlbW92ZSB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiBpZ25vcmUgKHJlbW92ZV9maXJzdCB0IDogXyBvcHRpb24pXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC51bmxpbmsgZWx0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHZhbHVlIC0+IGluc2VydF9sYXN0IG5ld190IHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICBpbnNlcnRfbGFzdCAoaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgaSAoRWx0LnZhbHVlIGVsdCkgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHZhbHVlIC0+IGluc2VydF9sYXN0IHQxIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG4gICAgICAgICAgfCBTZWNvbmQgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDIgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxuZXhjZXB0aW9uIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3JcblxubGV0IG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdCA6PSBTb21lIGFmdGVyX2VsdDtcbiAgICAgICAgICAgIGFmdGVyX2VsdClcbiAgICAgICAgICBlbHNlIGZpcnN0XG4gICAgICAgIGluXG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBiZWZvcmUgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgYW5jaG9yIGVsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGFuY2hvciB0aGVuIHQgOj0gU29tZSBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2Zyb250IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKEVsdC5lcXVhbCBlbHQgZmlyc3QpIHRoZW4gbW92ZV9iZWZvcmUgdCBlbHQgfmFuY2hvcjpmaXJzdFxuOztcblxubGV0IG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvciA9XG4gIGlmIEVsdC5lcXVhbCBhbmNob3IgZWx0IHRoZW4gcmFpc2UgSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvcjtcbiAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGFuY2hvcikgKEVsdC5oZWFkZXIgZWx0KVxuICB0aGVuIChcbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogdW5saW5rIFtlbHRdICopXG4gICAgICAgIGxldCBhZnRlcl9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZWx0IGFmdGVyX2VsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdCB0aGVuIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBhZnRlciBbYW5jaG9yXSAqKVxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIGFuY2hvciBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2JhY2sgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgIGlmIG5vdCAoRWx0LmVxdWFsIGVsdCBsYXN0KSB0aGVuIG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvcjpsYXN0XG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX2xpc3QgdCB8PiBTZXF1ZW5jZS5vZl9saXN0XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IFNleHBsaWIuU2V4cC50X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90ID0gU2V4cGxpYi5TZXhwLnNleHBfb2ZfdFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5pbmNsdWRlIChcbiAgQmFzZS5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSAoXG4gIFNleHBsaWIuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwbGliLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIHR5cGUgc2V4cCA9IEJhc2UuU2V4cC50ID1cbiAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgfCBMaXN0IG9mIHQgbGlzdFxuZW5kXG5cbm1vZHVsZSBTZXhwX21heWJlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHQgKiBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBSZXN1bHQuT2sgYSAtPiBzZXhwX29mX2EgYVxuICAgIHwgUmVzdWx0LkVycm9yIChzZXhwLCBlcnIpIC0+XG4gICAgICBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgRXJyb3Iuc2V4cF9vZl90IGVyciBdXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgXyBdIHwgc2V4cCAtPlxuICAgICAgKHRyeSBSZXN1bHQuT2sgKGFfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICAgfCBleG4gLT4gUmVzdWx0LkVycm9yIChzZXhwLCBFcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgKGdyYW1tYXIgOiBfIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQpIDogXyB0IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgIHsgdW50eXBlZCA9IFVuaW9uIFsgZ3JhbW1hci51bnR5cGVkOyBCYXNlLlNleHAudF9zZXhwX2dyYW1tYXIudW50eXBlZCBdIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgV2l0aF90ZXh0ID0gc3RydWN0XG4gIG9wZW4gUmVzdWx0LkV4cG9ydFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB2YWx1ZSA6ICdhXG4gICAgOyB0ZXh0IDogc3RyaW5nXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBBdG9tIHQudGV4dFxuXG4gIGxldCBvZl90ZXh0IHZhbHVlX29mX3NleHAgPyhmaWxlbmFtZSA9IFwiXCIpIHRleHQgPVxuICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gb2Zfc3RyaW5nX2NvbnYgdGV4dCB2YWx1ZV9vZl9zZXhwKSB3aXRoXG4gICAgfCBPayAoYFJlc3VsdCB2YWx1ZSkgLT4gT2sgeyB2YWx1ZTsgdGV4dCB9XG4gICAgfCBFcnJvciBfIGFzIGVyciAtPiBlcnJcbiAgICB8IE9rIChgRXJyb3IgKGV4biwgYW5ub3RhdGVkKSkgLT5cbiAgICAgIEVycm9yIChFcnJvci5vZl9leG4gKEFubm90YXRlZC5nZXRfY29udl9leG4gYW5ub3RhdGVkIH5maWxlOmZpbGVuYW1lIH5leGM6ZXhuKSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgXyAtPlxuICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICBcIldpdGhfdGV4dC50IHNob3VsZCBiZSBzdG9yZWQgYXMgYW4gYXRvbSwgYnV0IGluc3RlYWQgYSBsaXN0IHdhcyBmb3VuZC5cIlxuICAgICAgICBzZXhwXG4gICAgfCBBdG9tIHRleHQgLT4gb2ZfdGV4dCBhX29mX3NleHAgdGV4dCB8PiBPcl9lcnJvci5va19leG5cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLlN0cmluZy50X3NleHBfZ3JhbW1hclxuICBsZXQgdGV4dCB0ID0gdC50ZXh0XG4gIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuXG4gIGxldCBvZl92YWx1ZSBzZXhwX29mX3ZhbHVlIHZhbHVlID1cbiAgICBsZXQgdGV4dCA9IHNleHBfb2ZfdmFsdWUgdmFsdWUgfD4gdG9fc3RyaW5nX2h1bSBpblxuICAgIHsgdmFsdWU7IHRleHQgfVxuICA7O1xuZW5kXG5cbnR5cGUgJ2Egbm9fcmFpc2UgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBzZXhwX29mX25vX3JhaXNlIHNleHBfb2ZfYSBhID1cbiAgdHJ5IHNleHBfb2ZfYSBhIHdpdGhcbiAgfCBleG4gLT5cbiAgICAodHJ5IExpc3QgWyBBdG9tIFwiZmFpbHVyZSBidWlsZGluZyBzZXhwXCI7IHNleHBfb2ZfZXhuIGV4biBdIHdpdGhcbiAgICAgfCBfIC0+IEF0b20gXCJjb3VsZCBub3QgYnVpbGQgc2V4cCBmb3IgZXhuIHJhaXNlZCB3aGVuIGJ1aWxkaW5nIHNleHAgZm9yIHZhbHVlXCIpXG47O1xuXG5pbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kIChCYXNlLlNleHApIChCYXNlLlNleHApXG5cbmxldCBvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWN1cnNpdmVseSBvZl9zZXhwIHNleHAgPVxuICBsZXQgciA9IFNleHBsaWIuQ29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIGluXG4gIGxldCBwcmV2ID0gIXIgaW5cbiAgRXhuLnByb3RlY3RcbiAgICB+ZmluYWxseTooZnVuICgpIC0+IHIgOj0gcHJldilcbiAgICB+ZjooZnVuICgpIC0+XG4gICAgICByIDo9IGZhbHNlO1xuICAgICAgb2Zfc2V4cCBzZXhwKVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXhwXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXhwXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zZXhwXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gSGFzaF9xdWV1ZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgU19iYWNrZW5kID0gU19iYWNrZW5kXG5cbm1vZHVsZSBNYWtlX2JhY2tlbmQgKFRhYmxlIDogSGFzaHRibF9pbnRmLkhhc2h0YmwpIDogU19iYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIEJhY2tlbmQgPVxuICAgIFMxXG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2FyZyA6PSAna2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIHdpdGggdHlwZSAna2V5IGNyZWF0ZV9rZXkgOj0gJ2tleVxuXG4gIG1vZHVsZSBCYWNrZW5kIDogQmFja2VuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXlfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgKCdrZXksICd2YWx1ZSkgdCA9XG4gICAgICAgICAgeyBrZXkgOiAna2V5XG4gICAgICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZhbHVlXG4gICAgICAgICAgfVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQga2V5IHQgPSB0LmtleVxuICAgICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHsga2V5OyB2YWx1ZSB9ID1cbiAgICAgICAgWyVzZXhwX29mOiBrZXkgKiBkYXRhXSAoa2V5LCB2YWx1ZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBvcGVuIEtleV92YWx1ZS5UXG4gICAgbW9kdWxlIEVsdCA9IERvdWJseV9saW5rZWQuRWx0XG5cbiAgICB0eXBlICgna2V5LCAnZGF0YSkgdCA9XG4gICAgICB7IG11dGFibGUgbnVtX3JlYWRlcnMgOiBpbnRcbiAgICAgIDsgcXVldWUgOiAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IERvdWJseV9saW5rZWQudFxuICAgICAgOyB0YWJsZSA6ICgna2V5LCAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IEVsdC50KSBUYWJsZS50XG4gICAgICB9XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgICAgIFslc2V4cF9vZjogKGtleSwgZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XSB0LnF1ZXVlXG4gICAgOztcblxuICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICBhc3NlcnQgKERvdWJseV9saW5rZWQubGVuZ3RoIHQucXVldWUgPSBUYWJsZS5sZW5ndGggdC50YWJsZSk7XG4gICAgICAoKiBMb29rIGF0IGVhY2ggZWxlbWVudCBpbiB0aGUgcXVldWUsIGNoZWNraW5nOlxuICAgICAgICogICAtIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHF1ZXVlIGlzIGluIHRoZSBoYXNoIHRhYmxlXG4gICAgICAgKiAgIC0gdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBrZXlzXG4gICAgICAqKVxuICAgICAgbGV0IGtleXMgPSBUYWJsZS5jcmVhdGUgfnNpemU6KFRhYmxlLmxlbmd0aCB0LnRhYmxlKSAoVGFibGUuaGFzaGFibGVfcyB0LnRhYmxlKSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPlxuICAgICAgICBsZXQga2V5ID0ga3Yua2V5IGluXG4gICAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgYXNzZXJ0IChub3QgKFRhYmxlLm1lbSBrZXlzIGtleSkpO1xuICAgICAgICAgIFRhYmxlLnNldCBrZXlzIH5rZXkgfmRhdGE6KCkpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDE2KSBoYXNoYWJsZSA9XG4gICAgICB7IG51bV9yZWFkZXJzID0gMFxuICAgICAgOyBxdWV1ZSA9IERvdWJseV9saW5rZWQuY3JlYXRlICgpXG4gICAgICA7IHRhYmxlID0gVGFibGUuY3JlYXRlIH5ncm93dGhfYWxsb3dlZCB+c2l6ZSAoVGFibGUuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgcmVhZCB0IGYgPVxuICAgICAgdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzICsgMTtcbiAgICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzIC0gMSlcbiAgICA7O1xuXG4gICAgbGV0IGVuc3VyZV9jYW5fbW9kaWZ5IHQgPVxuICAgICAgaWYgdC5udW1fcmVhZGVycyA+IDBcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJJdCBpcyBhbiBlcnJvciB0byBtb2RpZnkgYSBIYXNoX3F1ZXVlLnQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgaXQuXCJcbiAgICA7O1xuXG4gICAgbGV0IGNsZWFyIHQgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIERvdWJseV9saW5rZWQuY2xlYXIgdC5xdWV1ZTtcbiAgICAgIFRhYmxlLmNsZWFyIHQudGFibGVcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCB0ID0gVGFibGUubGVuZ3RoIHQudGFibGVcbiAgICBsZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4gICAgbGV0IGxvb2t1cCB0IGsgPVxuICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBlbHQgLT4gU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9leG4gdCBrID0gKEVsdC52YWx1ZSAoVGFibGUuZmluZF9leG4gdC50YWJsZSBrKSkudmFsdWVcbiAgICBsZXQgbWVtIHQgayA9IFRhYmxlLm1lbSB0LnRhYmxlIGtcblxuICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSB0YWlsLXJlY3Vyc2l2ZSBDb3JlX2xpc3QubWFwICopXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLnZhbHVlXG4gICAgbGV0IHRvX2FycmF5IHQgPSBBcnJheS5tYXAgKERvdWJseV9saW5rZWQudG9fYXJyYXkgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLnZhbHVlXG5cbiAgICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZm9yX2FsbCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgOztcblxuICAgIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPiBEb3VibHlfbGlua2VkLmV4aXN0cyB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgOztcblxuICAgIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZmluZF9tYXAgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAoRG91Ymx5X2xpbmtlZC5maW5kIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICAgICAgICB+ZjpLZXlfdmFsdWUudmFsdWUpXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGlmIFRhYmxlLm1lbSB0LnRhYmxlIGtleVxuICAgICAgdGhlbiBgS2V5X2FscmVhZHlfcHJlc2VudFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjb250ZW50cyA9IHsgS2V5X3ZhbHVlLmtleTsgdmFsdWUgfSBpblxuICAgICAgICBsZXQgZWx0ID1cbiAgICAgICAgICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgICAgICB8IGBiYWNrIC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2xhc3QgdC5xdWV1ZSBjb250ZW50c1xuICAgICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2ZpcnN0IHQucXVldWUgY29udGVudHNcbiAgICAgICAgaW5cbiAgICAgICAgVGFibGUuc2V0IHQudGFibGUgfmtleSB+ZGF0YTplbHQ7XG4gICAgICAgIGBPaylcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfYmFjayB0ID0gZW5xdWV1ZSB0IGBiYWNrXG4gICAgbGV0IGVucXVldWVfZnJvbnQgdCA9IGVucXVldWUgdCBgZnJvbnRcblxuICAgIGxldCByYWlzZV9lbnF1ZXVlX2R1cGxpY2F0ZV9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUuZW5xdWV1ZV9leG46IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfZXhuIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgbWF0Y2ggZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlIHdpdGhcbiAgICAgIHwgYEtleV9hbHJlYWR5X3ByZXNlbnQgLT4gcmFpc2VfZW5xdWV1ZV9kdXBsaWNhdGVfa2V5IHQga2V5XG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9iYWNrX2V4biB0ID0gZW5xdWV1ZV9leG4gdCBgYmFja1xuICAgIGxldCBlbnF1ZXVlX2Zyb250X2V4biB0ID0gZW5xdWV1ZV9leG4gdCBgZnJvbnRcblxuICAgICgqIFBlcmZvcm1hbmNlIGhhY2s6IHdlIGltcGxlbWVudCB0aGlzIHZlcnNpb24gc2VwYXJhdGVseSB0byBhdm9pZCBhbGxvY2F0aW9uIGZyb20gdGhlXG4gICAgICAgb3B0aW9uLiAqKVxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fYmFja19leG4gdCBrZXkgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBlbHQgPSBUYWJsZS5maW5kX2V4biB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2JhY2sgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fYmFjayB0IGtleSA9XG4gICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCVtYXAgZWx0ID0gVGFibGUuZmluZCB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2JhY2sgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIHQga2V5ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgZWx0ID0gVGFibGUuZmluZF9leG4gdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19mcm9udCB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19mcm9udCB0IGtleSA9XG4gICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCVtYXAgZWx0ID0gVGFibGUuZmluZCB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2Zyb250IHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBtYXliZV9rdiA9XG4gICAgICAgIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgICB8IGBiYWNrIC0+IERvdWJseV9saW5rZWQucmVtb3ZlX2xhc3QgdC5xdWV1ZVxuICAgICAgICB8IGBmcm9udCAtPiBEb3VibHlfbGlua2VkLnJlbW92ZV9maXJzdCB0LnF1ZXVlXG4gICAgICBpblxuICAgICAgbWF0Y2ggbWF5YmVfa3Ygd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPlxuICAgICAgICBUYWJsZS5yZW1vdmUgdC50YWJsZSBrdi5rZXk7XG4gICAgICAgIFNvbWUgKGt2LmtleSwga3YudmFsdWUpXG4gICAgOztcblxuICAgIGxldCByYWlzZV9kZXF1ZXVlX3dpdGhfa2V5X2VtcHR5ICgpID1cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiSGFzaF9xdWV1ZS5kZXF1ZXVlX3dpdGhfa2V5OiBlbXB0eSBxdWV1ZVwiXVxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV93aXRoX2tleV9leG4gdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZV9kZXF1ZXVlX3dpdGhfa2V5X2VtcHR5ICgpXG4gICAgICB8IFNvbWUgKGssIHYpIC0+IGssIHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFja193aXRoX2tleSB0ID0gZGVxdWV1ZV93aXRoX2tleSB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfYmFja193aXRoX2tleV9leG4gdCA9IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF93aXRoX2tleSB0ID0gZGVxdWV1ZV93aXRoX2tleSB0IGBmcm9udFxuICAgIGxldCBkZXF1ZXVlX2Zyb250X3dpdGhfa2V5X2V4biB0ID0gZGVxdWV1ZV93aXRoX2tleV9leG4gdCBgZnJvbnRcblxuICAgIGxldCBkZXF1ZXVlIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIChfLCB2KSAtPiBTb21lIHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFjayB0ID0gZGVxdWV1ZSB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnQgdCA9IGRlcXVldWUgdCBgZnJvbnRcblxuICAgIGxldCBsYXN0X3dpdGhfa2V5IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5sYXN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB7IGtleTsgdmFsdWUgfSAtPiBTb21lIChrZXksIHZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgbGFzdCB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQubGFzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT4gU29tZSBrdi52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgZmlyc3Rfd2l0aF9rZXkgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmZpcnN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB7IGtleTsgdmFsdWUgfSAtPiBTb21lIChrZXksIHZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgZmlyc3QgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmZpcnN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPiBTb21lIGt2LnZhbHVlXG4gICAgOztcblxuICAgIGxldCByYWlzZV9kZXF1ZXVlX2VtcHR5ICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJIYXNoX3F1ZXVlLmRlcXVldWVfZXhuOiBlbXB0eSBxdWV1ZVwiXVxuXG4gICAgbGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlIHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2VfZGVxdWV1ZV9lbXB0eSAoKVxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrX2V4biB0ID0gZGVxdWV1ZV9leG4gdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID0gZGVxdWV1ZV9leG4gdCBgZnJvbnRcblxuICAgIGxldCBrZXlzIHQgPVxuICAgICAgKCogUmV0dXJuIHRoZSBrZXlzIGluIHRoZSBvcmRlciBvZiB0aGUgcXVldWUuICopXG4gICAgICBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOktleV92YWx1ZS5rZXlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIH5rZXk6a3Yua2V5IH5kYXRhOmt2LnZhbHVlKSlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG4gICAgbGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5mb2xkIHQucXVldWUgfmluaXQgfmY6KGZ1biBhYyBrdiAtPlxuICAgICAgICAgIGYgYWMgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIGFjIH5rZXk6XyB+ZGF0YSAtPiBmIGFjIGRhdGEpXG4gICAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICAgIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSBtIH5mb2xkIHQgfmZcbiAgICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gICAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICAgIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgICBsZXQgZGVxdWV1ZV9hbGwgdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBtYXRjaCBkZXF1ZXVlX2Zyb250IHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICBmIHY7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IGBOb19zdWNoX2tleVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgYE9rXG4gICAgOztcblxuICAgIGxldCByYWlzZV9yZW1vdmVfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVtb3ZlX2V4bjogdW5rbm93biBrZXlcIiB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgcmVtb3ZlX2V4biB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIHJlbW92ZSB0IGsgd2l0aFxuICAgICAgfCBgTm9fc3VjaF9rZXkgLT4gcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfcmVtb3ZlIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZF9hbmRfcmVtb3ZlIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2UgdCBrIHYgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHY7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfcmVwbGFjZV91bmtub3duX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5yZXBsYWNlX2V4bjogdW5rbm93biBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2VfZXhuIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZXBsYWNlIHQgayB2IHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrXG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcCA/KG4gPSAxKSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgaWYgbiA+PSBsZW5ndGggdFxuICAgICAgdGhlbiBjbGVhciB0XG4gICAgICBlbHNlXG4gICAgICAgIGZvciBfID0gMSB0byBuIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA6IF8gb3B0aW9uKVxuICAgICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3AgP24gdCBgYmFja1xuICAgIGxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wID9uIHQgYGZyb250XG5cbiAgICBsZXQgY29weSB0ID1cbiAgICAgIGxldCBjb3BpZWQgPSBjcmVhdGUgfnNpemU6KGxlbmd0aCB0KSAoVGFibGUuaGFzaGFibGUgdC50YWJsZSkgaW5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGVucXVldWVfYmFja19leG4gY29waWVkIGtleSBkYXRhKTtcbiAgICAgIGNvcGllZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTMCB3aXRoIHR5cGUgKCdrZXksICdkYXRhKSBoYXNoX3F1ZXVlIDo9ICgna2V5LCAnZGF0YSkgQmFja2VuZC50XG5cbiAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICBlbmQpIDogUyB3aXRoIHR5cGUga2V5ID0gVC5LZXkudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKEJhY2tlbmQgOiBCYWNrZW5kIHdpdGggdHlwZSAoJ2ssICdkKSB0IDo9ICgnaywgJ2QpIEJhY2tlbmQudClcblxuICAgIHR5cGUga2V5ID0gVC5LZXkudFxuICAgIHR5cGUgJ2RhdGEgdCA9IChULktleS50LCAnZGF0YSkgQmFja2VuZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChLZXkgOiBLZXkpIDogUyB3aXRoIHR5cGUga2V5ID0gS2V5LnQgPSBNYWtlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBUYWJsZS5IYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLZXkpXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQmFja2VuZFxuZW5kXG5cbmluY2x1ZGUgTWFrZV9iYWNrZW5kIChIYXNodGJsKVxuIiwiKCoqIEZ1bmN0b3JzIGFuZCBpbnRlcmZhY2VzIHVzZWQgdG8gbWFrZSBtb2R1bGVzIGhhc2hhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaGFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9wbGFpbikgOlxuICBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfcGxhaW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXkpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuICBpbmNsdWRlIFRcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBULktleVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9iaW5hYmxlKSA6XG4gIFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuXG4gICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0ID0gKGtleSwgJ2EpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0IDogc2lnXG4gICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICAgIGVuZFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfYmluYWJsZSkgOiBTIHdpdGggdHlwZSBrZXkgOj0gS2V5LnQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChLZXkpXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKEtleSlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGVcblxuICAgICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2hhciA9IEJhc2UuQ2hhclxubW9kdWxlIEludCA9IEJhc2UuSW50XG5tb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmdcbmluY2x1ZGUgSGV4ZHVtcF9pbnRmXG5cbmxldCBieXRlc19wZXJfbGluZSA9IDE2XG5cbigqIEluaXRpYWxpemUgdG8gZW5vdWdoIGxpbmVzIHRvIGRpc3BsYXkgNDA5NiBieXRlcyAtLSBsYXJnZSBlbm91Z2ggdGhhdCwgZm9yIGV4YW1wbGUsIGFcbiAgIGNvbXBsZXRlIEV0aGVybmV0IHBhY2tldCBjYW4gYWx3YXlzIGJlIGRpc3BsYXllZCAtLSBpbmNsdWRpbmcgdGhlIGxpbmUgY29udGFpbmluZyB0aGVcbiAgIGZpbmFsIGluZGV4LiAqKVxubGV0IGRlZmF1bHRfbWF4X2xpbmVzID0gcmVmICgoNDA5NiAvIGJ5dGVzX3Blcl9saW5lKSArIDEpXG5cbm1vZHVsZSBPZl9pbmRleGFibGUyIChUIDogSW5kZXhhYmxlMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoZXhfb2ZfcG9zIHBvcyA9IFByaW50Zi5zcHJpbnRmIFwiJTA4eFwiIHBvc1xuXG4gICAgbGV0IGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCBvZmZzZXQgPVxuICAgICAgbGV0IHBvcyA9IHN0YXJ0ICsgb2Zmc2V0IGluXG4gICAgICBpZiBwb3MgPj0gdW50aWwgdGhlbiBcIiAgXCIgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUwMnhcIiAoQ2hhci50b19pbnQgKGdldCB0IHBvcykpXG4gICAgOztcblxuICAgIGxldCBoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyAlcyAlcyAlcyAlcyAlcyAlcyAlcyAgJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXNcIlxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA1KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDYpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA4KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDkpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTIpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTUpXG4gICAgOztcblxuICAgIGxldCBwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbCA9XG4gICAgICBTdHJpbmcuaW5pdCAodW50aWwgLSBzdGFydCkgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBjaGFyID0gZ2V0IHQgKHN0YXJ0ICsgaSkgaW5cbiAgICAgICAgaWYgQ2hhci5pc19wcmludCBjaGFyIHRoZW4gY2hhciBlbHNlICcuJylcbiAgICA7O1xuXG4gICAgbGV0IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXggPVxuICAgICAgbGV0IHN0YXJ0ID0gcG9zICsgKGxpbmVfaW5kZXggKiBieXRlc19wZXJfbGluZSkgaW5cbiAgICAgIGxldCB1bnRpbCA9IG1pbiAoc3RhcnQgKyBieXRlc19wZXJfbGluZSkgKHBvcyArIGxlbikgaW5cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgICVzICB8JXN8XCJcbiAgICAgICAgKGhleF9vZl9wb3Mgc3RhcnQpXG4gICAgICAgIChoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwpXG4gICAgICAgIChwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbClcbiAgICA7O1xuXG4gICAgbGV0IHRvX3NlcXVlbmNlID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgbGV0IHBvcywgbGVuID1cbiAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgICAgaW5cbiAgICAgIGxldCBtYXhfbGluZXMgPVxuICAgICAgICBtYXRjaCBtYXhfbGluZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbWF4X2xpbmVzIC0+IG1heF9saW5lc1xuICAgICAgICB8IE5vbmUgLT4gIWRlZmF1bHRfbWF4X2xpbmVzXG4gICAgICBpblxuICAgICAgKCogYWx3YXlzIHByb2R1Y2UgYXQgbGVhc3QgMyBsaW5lczogZmlyc3QgbGluZSBvZiBoZXgsIGVsbGlwc2lzLCBsYXN0IGxpbmUgb2YgaGV4ICopXG4gICAgICBsZXQgbWF4X2xpbmVzID0gbWF4IG1heF9saW5lcyAzIGluXG4gICAgICAoKiB1bmFicmlkZ2VkIGxpbmVzID0gbGluZXMgb2YgaGV4ICsgbGluZSB3aXRoIGZpbmFsIGluZGV4ICopXG4gICAgICBsZXQgdW5hYnJpZGdlZF9saW5lcyA9XG4gICAgICAgIEludC5yb3VuZF91cCBsZW4gfnRvX211bHRpcGxlX29mOmJ5dGVzX3Blcl9saW5lIC8gYnl0ZXNfcGVyX2xpbmVcbiAgICAgIGluXG4gICAgICAoKiBGaWd1cmUgb3V0IHdoZXJlIHdlIG5lZWQgdG8gc2tpcCBmcm9tIGFuZCB0byBpZiBbbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc10uXG4gICAgICAgICBTa2lwIGFmdGVyIGhhbGYgdGhlIGFjdHVhbCBoZXggbGluZXMgKHN1YnRyYWN0aW5nIG9uZSBsaW5lIGZvciB0aGUgZWxsaXBzaXMpLlxuICAgICAgICAgU2tpcCB0byBuZWFyIHRoZSBlbmQsIGxlc3MgdGhlIG51bWJlciBvZiBsaW5lcyByZW1haW5pbmcgdG8gcHJvZHVjZSwgcGx1cyB0aGVcbiAgICAgICAgIGVsbGlwc2lzIGxpbmUuICopXG4gICAgICBsZXQgc2tpcF9mcm9tID0gKG1heF9saW5lcyAtIDEpIC8gMiBpblxuICAgICAgbGV0IHNraXBfdG8gPSB1bmFicmlkZ2VkX2xpbmVzIC0gKG1heF9saW5lcyAtIHNraXBfZnJvbSkgKyAxIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gbGluZV9pbmRleCAtPlxuICAgICAgICBpZiBsaW5lX2luZGV4ID49IHVuYWJyaWRnZWRfbGluZXNcbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgaWYgbGluZV9pbmRleCA9IHNraXBfZnJvbSAmJiBtYXhfbGluZXMgPCB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gWWllbGQgKFwiLi4uXCIsIHNraXBfdG8pXG4gICAgICAgIGVsc2UgWWllbGQgKGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXgsIGxpbmVfaW5kZXggKyAxKSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZ19odW0gP21heF9saW5lcyA/cG9zID9sZW4gdCA9XG4gICAgICB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBfIF8gdCA9IHRvX3NlcXVlbmNlIHQgfD4gU2VxdWVuY2UudG9fbGlzdCB8PiBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBwcmludGFibGUgPVxuICAgICAgICBsZXQgcmVjIHByaW50YWJsZV9mcm9tIHQgfnBvcyB+bGVuZ3RoID1cbiAgICAgICAgICBwb3MgPj0gbGVuZ3RoXG4gICAgICAgICAgfHwgKENoYXIuaXNfcHJpbnQgKGdldCB0IHBvcykgJiYgcHJpbnRhYmxlX2Zyb20gdCB+cG9zOihwb3MgKyAxKSB+bGVuZ3RoKVxuICAgICAgICBpblxuICAgICAgICBmdW4gdCAtPiBwcmludGFibGVfZnJvbSB0IH5wb3M6MCB+bGVuZ3RoOihsZW5ndGggdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBwb3MgLT4gZ2V0IHQgcG9zKVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIGlmIHByaW50YWJsZSB0IHRoZW4gWyVzZXhwICh0b19zdHJpbmcgdCA6IHN0cmluZyldIGVsc2UgWyVzZXhwICh0IDogKGEsIGIpIHQpXVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX2luZGV4YWJsZTEgKFQgOiBJbmRleGFibGUxKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgeCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCB4IFslc2V4cF9vZjogX10gdFxuICAgIGxldCB0b19zZXF1ZW5jZSA9IE0uSGV4ZHVtcC50b19zZXF1ZW5jZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID0gTS5IZXhkdW1wLnRvX3N0cmluZ19odW1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0IDogKGEsIF8pIE0uSGV4ZHVtcC5QcmV0dHkudCldXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUgKFQgOiBJbmRleGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT2ZfaW5kZXhhYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIF8gdCA9IFQudFxuXG4gICAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgICAgIGxldCBnZXQgPSBULmdldFxuICAgIGVuZClcblxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IDogXyBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfcGxhaW4gKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3NleHBfZ3JhbW1hciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvcl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuICBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIEV4dGVuZCAoTSA6IEJhc2UuSWRlbnRpZmlhYmxlLlMpIChCIDogQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA9IE0udCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cbiAgICBpbmNsdWRlIChCIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kX2JpbmFibGUgKE0pIChUKVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IFRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gTS5oYXNoYWJsZVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU3RyaW5nXG5cbigqIFRoZXNlIHR3byBhcmUgbmVlZGVkIGJlY2F1c2UgW2luY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZF0gKHByZXNlbnQgbGF0ZXIgaW4gdGhlIGZpbGUpXG4gICBiaW5kcyBuZXcgW01hcF0gYW5kIFtTZXRdIG1vZHVsZXMuICopXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IEZuLmlkXG4gICAgbGV0IG9mX3N0cmluZyA9IEZuLmlkXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgbGV0IGhhc2hhYmxlID0gU3RhYmxlLlYxLmhhc2hhYmxlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuU3RyaW5nKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc3RyaW5nXG5sZXQgZ2VuX25vbmVtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5XG5sZXQgZ2VuJyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX29mXG5sZXQgZ2VuX25vbmVtcHR5JyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX25vbl9lbXB0eV9vZlxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBjaGFycyA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJzIH5sZW5ndGhcbjs7XG5cbmxldCB0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6MCB+bGVuOmlcbjs7XG5cbmxldCBydGFrZV93aGlsZSB0IH5mID1cbiAgbWF0Y2ggcmZpbmRpIHQgfmY6KGZ1biBfIGVsdCAtPiBub3QgKGYgZWx0KSkgd2l0aFxuICB8IE5vbmUgLT4gdFxuICB8IFNvbWUgaSAtPiBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSlcbjs7XG5cbigqKiBTZWUgeyFBcnJheS5ub3JtYWxpemV9IGZvciB0aGUgZm9sbG93aW5nIDQgZnVuY3Rpb25zLiAqKVxubGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbmxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgdCBzdGFydCBzdG9wXG47O1xuXG5sZXQgbmdldCB4IGkgPVxuICBsZXQgbW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nIGluXG4gIHguW25vcm1hbGl6ZSB4IGldXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5TdHJpbmd9W0Jhc2UuU3RyaW5nXX0uICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuKCoqIFtDYXNlbGVzc10gY29tcGFyZXMgYW5kIGhhc2hlcyBzdHJpbmdzIGlnbm9yaW5nIGNhc2UsIHNvIHRoYXQgZm9yIGV4YW1wbGVcbiAgICBbQ2FzZWxlc3MuZXF1YWwgXCJPQ2FtbFwiIFwib2NhbWxcIl0gYW5kIFtDYXNlbGVzcy4oXCJhcHBsZVwiIDwgXCJCYW5hbmFcIildIGFyZSBbdHJ1ZV0sIGFuZFxuICAgIFtDYXNlbGVzcy5NYXBdLCBbQ2FzZWxlc3MuVGFibGVdIGxvb2t1cCBhbmQgW0Nhc2VsZXNzLlNldF0gbWVtYmVyc2hpcCBpc1xuICAgIGNhc2UtaW5zZW5zaXRpdmUuXG5cbiAgICBbQ2FzZWxlc3NdIGFsc28gcHJvdmlkZXMgY2FzZS1pbnNlbnNpdGl2ZSBbaXNfc3VmZml4XSBhbmQgW2lzX3ByZWZpeF0gZnVuY3Rpb25zLCBzb1xuICAgIHRoYXQgZm9yIGV4YW1wbGUgW0Nhc2VsZXNzLmlzX3N1ZmZpeCBcIk9DYW1sXCIgfnN1ZmZpeDpcIkFtTFwiXSBhbmQgW0Nhc2VsZXNzLmlzX3ByZWZpeFxuICAgIFwiT0NhbWxcIiB+cHJlZml4Olwib2NcIl0gYXJlIFt0cnVlXS4gKilcbm1vZHVsZSBDYXNlbGVzcyA6IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcbiAgZW5kXG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBzZXhwXVxuXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5cbigqKiBbc2xpY2UgdCBzdGFydCBzdG9wXSByZXR1cm5zIGEgbmV3IHN0cmluZyBpbmNsdWRpbmcgZWxlbWVudHMgW3QuKHN0YXJ0KV0gdGhyb3VnaFxuICAgIFt0LihzdG9wLTEpXSwgbm9ybWFsaXplZCBQeXRob24tc3R5bGUgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgW3N0b3AgPSAwXSBpcyB0cmVhdGVkIGFzXG4gICAgW3N0b3AgPSBsZW5ndGggdF0uICopXG52YWwgc2xpY2UgOiB0IC0+IGludCAtPiBpbnQgLT4gdFxuXG4oKiogW25nZXQgcyBpXSBnZXRzIHRoZSBjaGFyIGF0IG5vcm1hbGl6ZWQgcG9zaXRpb24gW2ldIGluIFtzXS4gKilcbnZhbCBuZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuXG4oKiogW3Rha2Vfd2hpbGUgcyB+Zl0gcmV0dXJucyB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgW3NdIHNhdGlzZnlpbmcgW2Zvcl9hbGwgcHJlZml4IH5mXVxuICAgIChTZWUgW2xzdHJpcF0gdG8gZHJvcCBzdWNoIGEgcHJlZml4KSAqKVxudmFsIHRha2Vfd2hpbGUgOiB0IC0+IGY6KGNoYXIgLT4gYm9vbCkgLT4gdFxuXG4oKiogW3J0YWtlX3doaWxlIHMgfmZdIHJldHVybnMgdGhlIGxvbmdlc3Qgc3VmZml4IG9mIFtzXSBzYXRpc2Z5aW5nIFtmb3JfYWxsIHN1ZmZpeCB+Zl1cbiAgICAoU2VlIFtyc3RyaXBdIHRvIGRyb3Agc3VjaCBhIHN1ZmZpeCkgKilcbnZhbCBydGFrZV93aGlsZSA6IHQgLT4gZjooY2hhciAtPiBib29sKSAtPiB0XG5cbmluY2x1ZGUgSGV4ZHVtcC5TIHdpdGggdHlwZSB0IDo9IHRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbcXVpY2tjaGVja19nZW5lcmF0b3JdLCBidXQgd2l0aG91dCBlbXB0eSBzdHJpbmdzLiAqKVxudmFsIGdlbl9ub25lbXB0eSA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbcXVpY2tjaGVja19nZW5lcmF0b3JdLCBidXQgZ2VuZXJhdGUgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBkaXN0cmlidXRpb24gb2ZcbiAgICBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IHdpdGhvdXQgZW1wdHkgc3RyaW5ncy4gKilcbnZhbCBnZW5fbm9uZW1wdHknIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCBnZW5lcmF0ZSBzdHJpbmdzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtzdHJpbmddIGlzIGFscmVhZHkgc3RhYmxlIGJ5IGl0c2VsZiwgc2luY2UgYXMgYSBwcmltaXRpdmUgdHlwZSBpdCBpcyBhblxuICAgIGludGVncmFsIHBhcnQgb2YgdGhlIHNleHAgLyBiaW5faW8gcHJvdG9jb2wuIFtTdHJpbmcuU3RhYmxlXSBleGlzdHMgb25seSB0byBpbnRyb2R1Y2VcbiAgICBbU3RyaW5nLlN0YWJsZS5TZXRdLCBbU3RyaW5nLlN0YWJsZS5NYXBdLCBbU3RyaW5nLlN0YWJsZS5UYWJsZV0sIGFuZCBwcm92aWRlIGludGVyZmFjZVxuICAgIHVuaWZvcm1pdHkgd2l0aCBvdGhlciBzdGFibGUgdHlwZXMuICopXG5tb2R1bGUgU3RhYmxlIDogc2lnXG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIEJhc2UuU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIGluY2x1ZGVcbiAgICAgIFN0YWJsZV9jb21wYXJhYmxlLlYxXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5TIHdpdGggdHlwZSBrZXkgOj0gdFxuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gYm9vbCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkJvb2wpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQm9vbFxuXG5pbmNsdWRlIChcbiAgQmFzZS5Cb29sIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQm9vbFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLkJvb2wpXG5cbmxldCBvZl9zdHJpbmdfaHVtID1cbiAgbGV0IHRhYmxlID1cbiAgICBsYXp5XG4gICAgICAobGV0IHRhYmxlID0gU3RyaW5nLkNhc2VsZXNzLlRhYmxlLmNyZWF0ZSAoKSBpblxuICAgICAgIFsgZmFsc2UsIFsgXCJmYWxzZVwiOyBcIm5vXCI7IFwiMFwiIF07IHRydWUsIFsgXCJ0cnVlXCI7IFwieWVzXCI7IFwiMVwiIF0gXVxuICAgICAgIHw+IExpc3QuaXRlciB+ZjooZnVuIChib29sLCBzdHJpbmdzKSAtPlxuICAgICAgICAgTGlzdC5pdGVyIHN0cmluZ3MgfmY6KGZ1biBzdHJpbmcgLT5cbiAgICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTpzdHJpbmcgfmRhdGE6Ym9vbDtcbiAgICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLnByZWZpeCBzdHJpbmcgMSkgfmRhdGE6Ym9vbCkpO1xuICAgICAgIHRhYmxlKVxuICBpblxuICBsZXQgcmFpc2VfaW52YWxpZCBpbnB1dCA9XG4gICAgbGV0IGV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyAoZm9yY2UgdGFibGUpKSBpblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkJvb2wub2Zfc3RyaW5nX2h1bTogaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgKGlucHV0IDogc3RyaW5nKVxuICAgICAgICAgIChleHBlY3RlZF9jYXNlX2luc2Vuc2l0aXZlIDogU3RyaW5nLlNldC50KV1cbiAgaW5cbiAgZnVuIHN0cmluZyAtPlxuICAgIEhhc2h0YmwuZmluZF9hbmRfY2FsbCAoZm9yY2UgdGFibGUpIHN0cmluZyB+aWZfZm91bmQ6Rm4uaWQgfmlmX25vdF9mb3VuZDpyYWlzZV9pbnZhbGlkXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJvb2xcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmJvb2xcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmJvb2xcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBiaW5faW9dXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5CeXRlc1xuXG4gICAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLkJ5dGVzKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgZ2VuJyBjaGFyX2dlbiA9IFN0cmluZy5nZW4nIGNoYXJfZ2VuIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zdHJpbmdcblxubGV0IGdlbl93aXRoX2xlbmd0aCBsZW4gY2hhcl9nZW4gPVxuICBTdHJpbmcuZ2VuX3dpdGhfbGVuZ3RoIGxlbiBjaGFyX2dlbiB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3RyaW5nXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuQ2hhcilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbigqIGluY2x1ZGUgW0Jhc2UuQ2hhcl0gYWZ0ZXIgdGhlIGFwcGxpY2F0aW9uIG9mIFtJZGVudGlmaWFibGUuRXh0ZW5kXSB0byByZXBsYWNlIHRoZVxuICAgW0NvbXBhcmFibGVdIGZ1bmN0aW9ucyB3aXRoIHRoZSBwZXJ2YXNpdmUgdmVyc2lvbnMgKilcbmluY2x1ZGUgKFxuICBCYXNlLkNoYXIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5DaGFyXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG5cbiAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5lbmRcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQ2hhclxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmNoYXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmNoYXJcbmxldCBnZW5fZGlnaXQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfZGlnaXRcbmxldCBnZW5fbG93ZXJjYXNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2xvd2VyY2FzZVxubGV0IGdlbl91cHBlcmNhc2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfdXBwZXJjYXNlXG5sZXQgZ2VuX2FscGhhID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2FscGhhXG5sZXQgZ2VuX2FscGhhbnVtID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2FscGhhbnVtXG5sZXQgZ2VuX3ByaW50ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3ByaW50XG5sZXQgZ2VuX3doaXRlc3BhY2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfd2hpdGVzcGFjZVxubGV0IGdlbl91bmlmb3JtX2luY2x1c2l2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl91bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU2lnbiA9IEJhc2UuU2lnblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNpZ24udCA9XG4gICAgICB8IE5lZ1xuICAgICAgfCBaZXJvXG4gICAgICB8IFBvc1xuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgZW51bWVyYXRlXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBTaWduXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKFNpZ24pIChTdGFibGUuVjEpXG4iLCJleHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqIFN0b2xlbiBmcm9tIFtwZXJ2YXNpdmVzLm1sXS4gIEFkZHMgYSBcIi5cIiBhdCB0aGUgZW5kIGlmIG5lZWRlZC4gIEl0IGlzIGluXG4gICBbcGVydmFzaXZlcy5tbGldLCBidXQgaXQgYWxzbyBzYXlzIG5vdCB0byB1c2UgaXQgZGlyZWN0bHksIHNvIHdlIGNvcHkgYW5kIHBhc3RlIHRoZVxuICAgY29kZS4gSXQgbWFrZXMgdGhlIGFzc3VtcHRpb24gb24gdGhlIHN0cmluZyBwYXNzZWQgaW4gYXJndW1lbnQgdGhhdCBpdCB3YXMgcmV0dXJuZWQgYnlcbiAgIFtmb3JtYXRfZmxvYXRdICopXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGxcbiAgICB0aGVuIHMgXiBcIi5cIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBfIC0+IHMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5GbG9hdFxuXG4gIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1hcF9hbmRfc2V0X2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKFQpXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0ID0gVFxuXG5sZXQgdmFsaWRhdGVfb3JkaW5hcnkgdCA9XG4gIFZhbGlkYXRlLm9mX2Vycm9yX29wdFxuICAgIChsZXQgbW9kdWxlIEMgPSBDbGFzcyBpblxuICAgICBtYXRjaCBjbGFzc2lmeSB0IHdpdGhcbiAgICAgfCBDLk5vcm1hbCB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+IE5vbmVcbiAgICAgfCBDLkluZmluaXRlIC0+IFNvbWUgXCJ2YWx1ZSBpcyBpbmZpbml0ZVwiXG4gICAgIHwgQy5OYW4gLT4gU29tZSBcInZhbHVlIGlzIE5hTlwiKVxuOztcblxubW9kdWxlIFYgPSBzdHJ1Y3RcbiAgbW9kdWxlIFpaID0gQ29tcGFyYWJsZS5WYWxpZGF0ZSAoVClcblxuICBsZXQgdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4IHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV9ib3VuZCB0IH5taW4gfm1heClcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfbGJvdW5kIH5taW4gdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX2xib3VuZCB0IH5taW4pXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCB+bWF4IHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV91Ym91bmQgdCB+bWF4KVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVlxuXG5tb2R1bGUgUm9idXN0X2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICgqIGludGVuZGVkIHRvIGJlIGEgdG9sZXJhbmNlIG9uIGh1bWFuLWVudGVyZWQgZmxvYXRzICopXG5cbiAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogZmxvYXRcblxuICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IGZsb2F0XG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogZmxvYXRcbiAgICBlbmQpIDogUyA9IHN0cnVjdFxuICAgICgqIFdlIGhhdmUgdGVzdCBpbiB0aGUgdHJlZSB0aGF0IHJlbHkgb24gdGhlc2UgZnVuY3Rpb25zIG5vdCBhbGxvY2F0aW5nLCBldmVuIHdpdGhvdXRcbiAgICAgICBYX0xJQlJBUllfSU5MSU5HLiBUaGUgb25seSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhlc2UgZG9uJ3QgY3JlYXRlIHRlbXBvcmFyeSBib3hlZFxuICAgICAgIGZsb2F0cyB3aXRob3V0IFhfTElCUkFSWV9JTkxJTkcgaXMgZm9yIHRoaXMgY29kZSB0byBzZWUgdGhlIGZsb2F0IG9wZXJhdGlvbnMgYXNcbiAgICAgICBleHRlcm5hbHMsIGFzIGRlZmluZWQgaW4gW1BlcnZhc2l2ZXNdLiBUaGF0J3Mgd2h5IHdlIHVzZSBbUG9seV0gYW5kIGZsb2F0XG4gICAgICAgYXJpdGhtZXRpYyBmcm9tIFtDYW1sXS4gKilcbiAgICBvcGVuIFBvbHlcblxuICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSBULnJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoID49LiApIHggeSA9IHggPj0gQ2FtbC4oIC0uICkgeSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA8PS4gKSB4IHkgPSB5ID49LiB4XG4gICAgbGV0ICggPS4gKSB4IHkgPSB4ID49LiB5ICYmIHkgPj0uIHhcbiAgICBsZXQgKCA+LiApIHggeSA9IHggPiBDYW1sLiggKy4gKSB5IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoIDwuICkgeCB5ID0geSA+LiB4XG4gICAgbGV0ICggPD4uICkgeCB5ID0gbm90ICh4ID0uIHkpXG5cbiAgICBsZXQgcm9idXN0bHlfY29tcGFyZSB4IHkgPVxuICAgICAgbGV0IGQgPSBDYW1sLiggLS4gKSB4IHkgaW5cbiAgICAgIGlmIGQgPCBDYW1sLiggfi0uICkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIC0xXG4gICAgICBlbHNlIGlmIGQgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAwXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtN1xuICBlbmQpXG5cbmluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuRmxvYXQuT1xuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcbmVuZFxuXG5tb2R1bGUgVGVyc2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGluY2x1ZGUgKFxuICAgIEJhc2UuRmxvYXQuVGVyc2UgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuRmxvYXQuVGVyc2VcbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmxldCByb2J1c3Rfc2lnbiB0IDogU2lnbi50ID0gaWYgdCA+LiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPC4gMC4gdGhlbiBOZWcgZWxzZSBaZXJvXG5cbigqIFRoZXJlIGFyZSB0d28gaXNzdWVzOlxuICAgLSBGbG9hdC5zaWduIHVzZWQgdG8gdXNlIHJvYnVzdCBjb21wYXJpc29uLCBhbmQgdXNlcnMgb2YgW0NvcmVdIG1pZ2h0IGhhdmUgY29tZSB0b1xuICAgICBkZXBlbmQgb24gdGhpcy5cbiAgIC0gUm9idXN0bmVzcyBhc2lkZSwgd2hhdCB3ZSBnZXQgZnJvbSBDb21wYXJhYmxlLldpdGhfemVybyB3b3VsZCBtYXAgbmFuIHRvIE5lZy5cbiopXG5sZXQgc2lnbiA9IHJvYnVzdF9zaWduXG5cbigqIFN0YW5kYXJkIDEyIHNpZ25pZmljYW50IGRpZ2l0cywgZXhwb25lbnRpYWwgbm90YXRpb24gdXNlZCBhcyBuZWNlc3NhcnksIGd1YXJhbnRlZWQgdG9cbiAgIGJlIGEgdmFsaWQgT0NhbWwgZmxvYXQgbGV4ZW0sIG5vdCB0byBsb29rIGxpa2UgYW4gaW50LiAqKVxubGV0IHRvX3N0cmluZ18xMiB4ID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgeClcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmZsb2F0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5mbG9hdFxubGV0IGdlbl91bmlmb3JtX2V4Y2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X2luY2x1c2l2ZVxubGV0IGdlbl93aXRob3V0X25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfd2l0aG91dF9uYW5cbmxldCBnZW5fZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9maW5pdGVcbmxldCBnZW5fcG9zaXRpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlXG5sZXQgZ2VuX25lZ2F0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9uZWdhdGl2ZVxubGV0IGdlbl96ZXJvID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBaZXJvXG5sZXQgZ2VuX25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTmFuXG5sZXQgZ2VuX3N1Ym5vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgU3Vibm9ybWFsXG5sZXQgZ2VuX25vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTm9ybWFsXG5sZXQgZ2VuX2luZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBJbmZpbml0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5JbnRcblxuICAgICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgc2V4cF1cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5JbnRcbmluY2x1ZGUgQmFzZS5JbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50KVxuXG4oKiBUaGlzIGlzIGFscmVhZHkgZGVmaW5lZCBieSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybywgYnV0IFNpZ24ub2ZfaW50IGlzXG4gICBtb3JlIGRpcmVjdC4gKilcbmxldCBzaWduID0gU2lnbi5vZl9pbnRcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50X2ludGZ9W0Jhc2UuSW50X2ludGZdfS4gKilcblxubW9kdWxlIHR5cGUgUm91bmQgPSBCYXNlLkludC5Sb3VuZFxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBzaWdcbiAgbW9kdWxlIFYxIDogU3RhYmxlX2NvbXBhcmFibGUuVjFcbmVuZFxuXG5tb2R1bGUgdHlwZSBIZXhhYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gIG1vZHVsZSBIZXggOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZ19odW0gOiA/ZGVsaW1pdGVyOmNoYXIgLT4gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgKCpfIEVuc3VyZSB0aGF0IHRoaXMgbW9kdWxlIGlzIGFuIGV4dGVuc2lvbiBvZiBbQmFzZS5JbnQuSGV4YWJsZV0uICopXG4gIGluY2x1ZGUgQmFzZS5JbnQuSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0IGFuZCBtb2R1bGUgSGV4IDo9IEhleFxuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4gIGluY2x1ZGUgSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TX2ludCB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU191bmJvdW5kZWQgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLkludC5TX3VuYm91bmRlZFxuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNcbiAgaW5jbHVkZSBFeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbl93aXRoX3N0YWJsZSA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuc2lvblxuXG4gIG1vZHVsZSBTdGFibGUgOlxuICAgIFN0YWJsZSB3aXRoIHR5cGUgVjEudCA9IHQgYW5kIHR5cGUgVjEuY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQzMilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuSW50MzJcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50MzIpXG5cbnR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50MzJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDMyXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDY0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQ2NFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQ2NClcblxudHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2NFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludDY0fVtCYXNlLkludDY0XX0uICopXG5cbigqKiB7MiBJbnRlcmZhY2UgZnJvbSBCYXNlfSAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkludDY0XG5lbmRcblxuKCoqIHsyIEV4dGVuc2lvbnN9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlXG4gIEludF9pbnRmLkV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQmluIDogQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA6PSBCYXNlLkludDYzLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEJpbl9lbXVsYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQ2NClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcud3JhcF9leG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcudW53cmFwXG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgdHlwZSAnYSBiaW5hYmxlID0gKG1vZHVsZSBCaW5hYmxlMC5TIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgbGV0IGJpbmFibGVfb2ZfcmVwciA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBiIGJpbmFibGUgPSBmdW5jdGlvblxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IChtb2R1bGUgSW50KVxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gKG1vZHVsZSBCaW5fZW11bGF0ZWQpXG4gIDs7XG5cbiAgbGV0IGJpbmFibGUgOiBCYXNlLkludDYzLnQgYmluYWJsZSA9IGJpbmFibGVfb2ZfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuXG4gIGluY2x1ZGUgKHZhbCBiaW5hYmxlKVxuXG4gIGxldCBiaW5fc2hhcGVfdCA9IEJpbl9wcm90LlNoYXBlLmJpbl9zaGFwZV9pbnQ2M1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50NjMudCBbQEBkZXJpdmluZyBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJpblxuXG4gICAgICBpbmNsdWRlIChcbiAgICAgICAgQmFzZS5JbnQ2MyA6XG4gICAgICAgICAgQmFzZS5Db21wYXJhYmxlLlNcbiAgICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQmFzZS5JbnQ2My5jb21wYXJhdG9yX3dpdG5lc3MpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbigqIFRoaXMgW2luY2x1ZGUgc3RydWN0XSBpcyByZXF1aXJlZCBiZWNhdXNlIGl0IGxldHMgdXMgc2hhZG93IFt0XSB3aGVuIHdlIGluY2x1ZGVcbiAgIFtCYXNlLkludDYzXSBsYXRlciBvbi4gKilcbmluY2x1ZGUgc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjMudFxuZW5kXG5cbmxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2ludDYzXG5sZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX2ludDYzXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDYzKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgQmluXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyYWJsZS5Qb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IHQgPVxuICBCYXNlLkludDYzXG5cbmluY2x1ZGUgQmFzZS5JbnQ2M1xuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQ2MylcblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjNcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gQmFzZS5FeHBvcnRcbiAgb3BlbiBCaW5fcHJvdC5TdGRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuVW5pdClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5Vbml0XG5cbnR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci51bml0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bml0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci51bml0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWcgZW5kXG5cbnR5cGUgbSA9IChtb2R1bGUgUylcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgb3BlbiBTZXhwbGliLlN0ZFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgc2V4cCwgdHlwZXJlcF1cblxuICAgIGxldCBtYXAgPSBCYXNlLkxhenkubWFwXG4gICAgbGV0IGNvbXBhcmUgPSBCYXNlLkxhenkuY29tcGFyZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBCYXNlLkxhenkgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU3RhYmxlLlYxLnRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgKEJhc2UuTGF6eSA6IEJhc2VfbWFzaylcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5OYXRpdmVpbnQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5OYXRpdmVpbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuTmF0aXZlaW50KVxuXG50eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubmF0aXZlaW50XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5uYXRpdmVpbnRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5Ob3RoaW5nLnQgPSB8XG5cbiAgICBtb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5fc2hhcGVdXG4gICAgZW5kXG5cbiAgICBsZXQgdW5yZWFjaGFibGVfY29kZSA9IEJhc2UuTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGJpbl9zaGFwZV90ID0gU2hhcGUuYmluX3NoYXBlX3RcbiAgICBsZXQgdHBfbG9jID0gWyVoZXJlXS5wb3NfZm5hbWUgXiBcIi5TdGFibGUuVjEudFwiXG4gICAgbGV0IGFsbCA9IFtdXG4gICAgbGV0IGhhc2hfZm9sZF90IF8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICAgIGxldCBoYXNoID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICAgIGxldCBiaW5fc2l6ZV90ID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBiaW5fd3JpdGVfdCBfYnVmIH5wb3M6XyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgdHBfbG9jICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZF90IF9idWYgfnBvc19yZWYgPVxuICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3JlYWRfZXJyb3IgKEVtcHR5X3R5cGUgdHBfbG9jKSAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9IGJpbl93cml0ZXJfdFxuICAgICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RcbiAgICAgIDsgc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IFNleHBsaWIuQ29udl9lcnJvci5lbXB0eV90eXBlIHRwX2xvYyBzZXhwXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuTm90aGluZ1xuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChCYXNlLk5vdGhpbmcpIChTdGFibGUuVjEpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBuZXZlcl9yZXR1cm5zID0gTm90aGluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuZXZlcl9yZXR1cm5zID0gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gQmFzZS5PcmRlcmluZy50ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIEJhc2UuT3JkZXJpbmcgd2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIChCYXNlLk9yZGVyaW5nIDogQmFzZV9tYXNrKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlJlZlxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFBlcm1pc3Npb25lZCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICB0eXBlICgnYSwgLSdwZXJtcykgdCA9ICdhIFQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgbGV0IHJlYWRfb25seSA9IEZuLmlkXG4gIGxldCBvZl9yZWYgPSBGbi5pZFxuICBsZXQgdG9fcmVmID0gRm4uaWRcbiAgbGV0IHNldCA9ICggOj0gKVxuICBsZXQgZ2V0ID0gKCAhIClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb25cbmluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5pbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kIChCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uKSAoU291cmNlX2NvZGVfcG9zaXRpb24wKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTb3VyY2VfY29kZV9wb3NpdGlvbjApXG4iLCIoKiBXZSBkb24ndCBqdXN0IGluY2x1ZGUgU2V4cGxpYi5TdGQgYmVjYXVzZSBvbmUgY2FuIG9ubHkgZGVmaW5lIEhhc2h0Ymwgb25jZSBpbiB0aGlzXG4gICBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogW2luY2x1ZGVdZCBmaXJzdCBzbyB0aGF0IGV2ZXJ5dGhpbmcgZWxzZSBzaGFkb3dzIGl0ICopXG5pbmNsdWRlIENvcmVfcGVydmFzaXZlc1xuXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuaW5jbHVkZSBEZXByZWNhdGVfcGlwZV9iYW5nXG5pbmNsdWRlIEVpdGhlci5FeHBvcnRcbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5pbmNsdWRlIEludGVyZmFjZXNcbmluY2x1ZGUgTGlzdC5JbmZpeFxuaW5jbHVkZSBOZXZlcl9yZXR1cm5zXG5pbmNsdWRlIE9yZGVyaW5nLkV4cG9ydFxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcbmluY2x1ZGUgUmVzdWx0LkV4cG9ydFxuXG50eXBlIC0nYSByZXR1cm4gPSAnYSBXaXRoX3JldHVybi5yZXR1cm4gPSBwcml2YXRlIHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxuaW5jbHVkZSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIEJ1ZyBvZiBzdHJpbmcgW0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjAtMDNdIERvbid0IHVzZSBbQnVnXVwiXVxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kIFtAQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuXG4oKiogUmFpc2VkIGlmIG1hbGxvYyBpbiBDIGJpbmRpbmdzIGZhaWwgKGVycm5vICogc2l6ZSkuICopXG5leGNlcHRpb24gQ19tYWxsb2NfZXhuIG9mIGludCAqIGludFxuXG4oKiBlcnJubywgc2l6ZSAqKVxubGV0ICgpID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiQ19tYWxsb2NfZXhuXCIgKENfbWFsbG9jX2V4biAoMCwgMCkpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5ID0gRXhuLkZpbmFsbHlcblxubGV0IGZzdDMgKHgsIF8sIF8pID0geFxubGV0IHNuZDMgKF8sIHksIF8pID0geVxubGV0IHRyZDMgKF8sIF8sIHopID0gelxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBsZXQgdXcgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlIENhbWwuTm90X2ZvdW5kXG4gIDs7XG5lbmQgOlxuc2lnXG4gIHZhbCB1dyA6ICdhIG9wdGlvbiAtPiAnYSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTJdIFVzZSBbT3B0aW9uLnZhbHVlX2V4bl1cIl1cbmVuZClcblxuKCoqIFtwaHlzX3NhbWVdIGlzIGxpa2UgW3BoeXNfZXF1YWxdLCBidXQgd2l0aCBhIG1vcmUgZ2VuZXJhbCB0eXBlLiAgW3BoeXNfc2FtZV0gaXMgdXNlZnVsXG4gICAgd2hlbiBkZWFsaW5nIHdpdGggZXhpc3RlbnRpYWwgdHlwZXMsIHdoZW4gb25lIGhhcyBhIHBhY2tlZCB2YWx1ZSBhbmQgYW4gdW5wYWNrZWQgdmFsdWVcbiAgICB0aGF0IG9uZSB3YW50cyB0byBjaGVjayBhcmUgcGh5c2ljYWxseSBlcXVhbC4gIE9uZSBjYW4ndCB1c2UgW3BoeXNfZXF1YWxdIGluIHN1Y2ggYVxuICAgIHNpdHVhdGlvbiBiZWNhdXNlIHRoZSB0eXBlcyBhcmUgZGlmZmVyZW50LiAqKVxubGV0IHBoeXNfc2FtZSAodHlwZSBhIGIpIChhIDogYSkgKGIgOiBiKSA9IHBoeXNfZXF1YWwgYSAoT2JqLm1hZ2ljIGIgOiBhKVxuXG5sZXQgKCAlICkgPSBJbnQuKCAlIClcbmxldCAoIC8lICkgPSBJbnQuKCAvJSApXG5sZXQgKCAvLyApID0gSW50LiggLy8gKVxubGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5sZXQgYnByaW50ZiA9IFByaW50Zi5icHJpbnRmXG5sZXQgY29uc3QgPSBGbi5jb25zdFxubGV0IGVwcmludGYgPSBQcmludGYuZXByaW50ZlxubGV0IGVycm9yID0gT3JfZXJyb3IuZXJyb3JcbmxldCBlcnJvcl9zID0gT3JfZXJyb3IuZXJyb3Jfc1xubGV0IGZhaWx3aXRoZiA9IEJhc2UuUHJpbnRmLmZhaWx3aXRoZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBsZXQgZmFpbHdpdGhwID0gKEVycm9yLmZhaWx3aXRocCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl0pXG5lbmQgOlxuc2lnXG4gIHZhbCBmYWlsd2l0aHBcbiAgICA6ICA/c3RyaWN0OnVuaXRcbiAgICAtPiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgLT4gc3RyaW5nXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgLT4gU2V4cC50KVxuICAgIC0+IF9cbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSBVc2UgW2ZhaWx3aXRoc10gaW5zdGVhZC5cIl1cbmVuZClcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xubGV0IGZvcmNlID0gQmFzZS5MYXp5LmZvcmNlXG5sZXQgZnByaW50ZiA9IFByaW50Zi5mcHJpbnRmXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGxldCBpZGVudCA9IEZuLmlkXG5lbmQgOlxuc2lnXG4gIHZhbCBpZGVudCA6ICdhIC0+ICdhIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wOF0gVXNlIFtGbi5pZF0gaW5zdGVhZC5cIl1cbmVuZClcblxubGV0IGludmFsaWRfYXJnZiA9IEJhc2UuUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IGlmcHJpbnRmID0gUHJpbnRmLmlmcHJpbnRmXG5sZXQgaXNfbm9uZSA9IE9wdGlvbi5pc19ub25lXG5sZXQgaXNfc29tZSA9IE9wdGlvbi5pc19zb21lXG5sZXQga3NwcmludGYgPSBQcmludGYua3NwcmludGZcbmxldCBva19leG4gPSBPcl9lcnJvci5va19leG5cbmxldCBwaHlzX2VxdWFsID0gQmFzZS5waHlzX2VxdWFsXG5sZXQgcGh5c19zYW1lID0gcGh5c19zYW1lXG5sZXQgcHJpbnRfcyA9IFN0ZGlvLnByaW50X3NcbmxldCBlcHJpbnRfcyA9IFN0ZGlvLmVwcmludF9zXG5sZXQgcHJpbnRmID0gUHJpbnRmLnByaW50ZlxubGV0IHByb3RlY3QgPSBFeG4ucHJvdGVjdFxubGV0IHByb3RlY3R4ID0gRXhuLnByb3RlY3R4XG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCByb3VuZCA9IEZsb2F0LnJvdW5kXG5sZXQgKCAqKi4gKSA9IEJhc2UuKCAqKi4gKVxubGV0ICggJS4gKSA9IEJhc2UuKCAlLiApXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxubGV0IHVuc3RhZ2UgPSBTdGFnZWQudW5zdGFnZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gPSBXaXRoX3JldHVybi53aXRoX3JldHVybl9vcHRpb25cblxuKCogV2l0aCB0aGUgZm9sbG93aW5nIGFsaWFzZXMsIHdlIGFyZSBqdXN0IG1ha2luZyBleHRyYSBzdXJlIHRoYXQgdGhlIHRvcGxldmVsIHNleHBcbiAgIGNvbnZlcnRlcnMgbGluZSB1cCB3aXRoIHRoZSBvbmVzIGluIG91ciBtb2R1bGVzLiAqKVxuXG5cbmluY2x1ZGUgVHlwZXJlcF9saWIuU3RkX2ludGVybmFsXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldLCBbYnl0ZXNdLCBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlXG4gICAgIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgY2hhciA9IENoYXIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50ID0gSW50LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsYXp5X3QgPSAnYSBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludCA9IE5hdGl2ZWludC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZyA9IFN0cmluZy50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJ5dGVzID0gQnl0ZXMudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICAoKiBCaW5fcHJvdCBoYXMgb3B0aW1pemVkIGZ1bmN0aW9ucyBmb3IgZmxvYXQgYXJyYXlzICopXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IGZsb2F0IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kIFtAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIGZsb2F0X2FycmF5ID0gRmxvYXQudCBhcnJheSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgZmxvYXRfYXJyYXkgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICBlbmRcbiAgd2l0aCB0eXBlIGZsb2F0X2FycmF5IDo9IGZsb2F0X2FycmF5KVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBib29sIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgaW50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBpbnQzMiBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgaW50NjQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlICdhIGxhenlfdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb25cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgJ2EgcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSB1bml0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICBpbmNsdWRlIHNpZ1xuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wOV0gdXNlIFtmbG9hdCBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIGluc3RlYWRcIl1cbiAgZW5kXG4gICAgICAgICAgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5lbmRcbndpdGggdHlwZSAnYSBhcnJheSA6PSAnYSBhcnJheVxud2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxud2l0aCB0eXBlIGNoYXIgOj0gY2hhclxud2l0aCB0eXBlIGZsb2F0IDo9IGZsb2F0XG53aXRoIHR5cGUgaW50IDo9IGludFxud2l0aCB0eXBlIGludDMyIDo9IGludDMyXG53aXRoIHR5cGUgaW50NjQgOj0gaW50NjRcbndpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbndpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG53aXRoIHR5cGUgJ2Egb3B0aW9uIDo9ICdhIG9wdGlvblxud2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbndpdGggdHlwZSBieXRlcyA6PSBieXRlc1xud2l0aCB0eXBlICdhIGxhenlfdCA6PSAnYSBsYXp5X3RcbndpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG53aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuXG5sZXQgc2V4cF9vZl9leG4gPSBFeG4uc2V4cF9vZl90XG5cblxuKCogVGhlIGNvZGUgYmVsb3cgY2hlY2tzIHRoYXQgdGhlIHNpZ25hdHVyZXMgaW4gbWFwLm1saSBhbmQgc2V0Lm1saSBhcmVcbiAgIGNvbnNpc3RlbnQgd2l0aCB0aGUgZ2VuZXJpYyBtYXAgYW5kIHNldCBzaWduYXR1cmVzIGRlZmluZWQgaW4gbWFwX2ludGYubWxcbiAgIGFuZCBzZXRfaW50Zi5tbC4gKilcblxubGV0ICgpID1cbiAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIHR5cGUgJ2EgY21wID0gJ2FcbiAgZW5kXG4gIGluXG4gIGxldCBtb2R1bGUgXyA6IHNpZ1xuICAgIG9wZW4gU2V0X2ludGZcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgVHJlZS5OYW1lZC50XG4gICAgZW5kXG5cbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGVcbiAgICAgIEFjY2Vzc29yczJcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG4gICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIFQuY21wXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9ucyA6PVxuICAgICAgICAoJ2EsICdjbXAsICd6KSBTZXRfaW50Zi5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gIGVuZCA9XG4gICAgU2V0XG4gIGluXG4gICgpXG47O1xuXG5sZXQgKCkgPVxuICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICdrIGtleSA9ICdrXG4gICAgdHlwZSAnYyBjbXAgPSAnY1xuICBlbmRcbiAgaW5cbiAgbGV0IG1vZHVsZSBfIDogc2lnXG4gICAgb3BlbiBNYXBfaW50ZlxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZVxuICAgICAgQWNjZXNzb3JzM1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnMgOj1cbiAgICAgICAgKCdhLCAnY21wLCAneikgTWFwX2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAnayBULmtleVxuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYyBULmNtcFxuICBlbmQgPVxuICAgIE1hcFxuICBpblxuICAoKVxuOztcblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFJlcHIgPSBJbnQ2M1xuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl0gW0BAaW1tZWRpYXRlNjRdXG5cbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9yZXByIDogUmVwci50IC0+IHRcbiAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFJlcHIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBvZl9yZXByID0gRm4uaWRcbiAgbGV0IHRvX3JlcHIgPSBGbi5pZFxuXG4gIGxldCB0b19zdHJpbmcgbiA9XG4gICAgbGV0IG9wZW4gUmVwciBpblxuICAgIGxldCBraWIgPSBvZl9pbnQgMTAyNCBpblxuICAgIGxldCBtaWIgPSBraWIgKiBraWIgaW5cbiAgICBsZXQgZ2liID0ga2liICogbWliIGluXG4gICAgbGV0IG5fYWJzID0gYWJzIG4gaW5cbiAgICBpZiBuX2FicyA8IGtpYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVkQlwiICh0b19pbnRfZXhuIG4pXG4gICAgZWxzZSBpZiBuX2FicyA8IG1pYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVnS1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGtpYilcbiAgICBlbHNlIGlmIG5fYWJzIDwgZ2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdNXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgbWliKVxuICAgIGVsc2Ugc3ByaW50ZiBcIiVnR1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGdpYilcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IG4gPSBTZXhwLkF0b20gKHRvX3N0cmluZyBuKVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgYnl0ZXNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuICh0b19yZXByIHQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIEJpZ2FycmF5XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlX2JpZ3N0cmluZ1xuXG4gICAgbW9kdWxlIFogOiBzaWdcbiAgICAgIHR5cGUgdCA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGJpZ3N0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFpcblxuICAgIHR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBTdGFibGUuVjFcbmluY2x1ZGUgVFxubW9kdWxlIFVuc3RhYmxlID0gVFxuXG5sZXQgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2Mgc2l6ZSA9XG4gIGxldCBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgPVxuICAgIE9wdGlvbi5tYXAgbWF4X21lbV93YWl0aW5nX2djIH5mOkJ5dGVfdW5pdHMwLmJ5dGVzX2ludF9leG5cbiAgaW5cbiAgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgc2l6ZVxuOztcblxubGV0IHN1Yl9zaGFyZWQgPyhwb3MgPSAwKSA/bGVuIChic3RyIDogdCkgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gYnN0ciB+cG9zIGxlbiBpblxuICBBcnJheTEuc3ViIGJzdHIgcG9zIGxlblxuOztcblxuKCogRGVzdHJ1Y3Rpb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3kgOiB0IC0+IHVuaXQgPSBcImJpZ3N0cmluZ19kZXN0cm95X3N0dWJcIlxuXG5leHRlcm5hbCB1bnNhZmVfZGVzdHJveV9hbmRfcmVzaXplIDogdCAtPiBsZW46aW50IC0+IHQgPSBcImJpZ3N0cmluZ19yZWFsbG9jXCJcblxuKCogUmVhZGluZyAvIHdyaXRpbmcgYmluLXByb3QgKilcblxubGV0IHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/KHBvcyA9IDApID9sZW4gcmVhZGVyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIHQgbGVuIH5wb3MgaW5cbiAgbGV0IGxpbWl0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnNcIiB0IH5wb3MgfmxlbjtcbiAgbGV0IGludmFsaWRfZGF0YSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgICBgSW52YWxpZF9kYXRhIChFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbiAgaW5cbiAgbGV0IHJlYWQgYmluX3JlYWRlciB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IGxpbWl0IC0gcG9zXG4gICAgdGhlbiBgTm90X2Vub3VnaF9kYXRhXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeSBgT2sgKGJpbl9yZWFkZXIgdCB+cG9zX3JlZikgd2l0aFxuICAgICAgICB8IGV4biAtPiBgSW52YWxpZF9kYXRhIChFcnJvci5vZl9leG4gZXhuKVxuICAgICAgd2l0aFxuICAgICAgfCBgSW52YWxpZF9kYXRhIF8gYXMgeCAtPiB4XG4gICAgICB8IGBPayByZXN1bHQgLT5cbiAgICAgICAgbGV0IGV4cGVjdGVkX3BvcyA9IHBvcyArIGxlbiBpblxuICAgICAgICBpZiAhcG9zX3JlZiA9IGV4cGVjdGVkX3Bvc1xuICAgICAgICB0aGVuIGBPayAocmVzdWx0LCBleHBlY3RlZF9wb3MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX2RhdGFcbiAgICAgICAgICAgIFwicG9zX3JlZiA8PiBleHBlY3RlZF9wb3NcIlxuICAgICAgICAgICAgKCFwb3NfcmVmLCBleHBlY3RlZF9wb3MpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludCAqIGludF0pXG4gIGluXG4gIG1hdGNoXG4gICAgcmVhZCBCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciB+cG9zIH5sZW46QmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoXG4gIHdpdGhcbiAgfCAoYE5vdF9lbm91Z2hfZGF0YSB8IGBJbnZhbGlkX2RhdGEgXykgYXMgeCAtPiB4XG4gIHwgYE9rIChlbGVtZW50X2xlbmd0aCwgcG9zKSAtPlxuICAgIGlmIGVsZW1lbnRfbGVuZ3RoIDwgMFxuICAgIHRoZW4gaW52YWxpZF9kYXRhIFwibmVnYXRpdmUgZWxlbWVudCBsZW5ndGggJWRcIiBlbGVtZW50X2xlbmd0aCBbJXNleHBfb2Y6IGludF1cbiAgICBlbHNlIHJlYWQgcmVhZGVyLkJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCB+cG9zIH5sZW46ZWxlbWVudF9sZW5ndGhcbjs7XG5cbmxldCByZWFkX2Jpbl9wcm90IHQgP3BvcyA/bGVuIHJlYWRlciA9XG4gIG1hdGNoIHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/cG9zID9sZW4gcmVhZGVyIHdpdGhcbiAgfCBgT2sgeCAtPiBPayB4XG4gIHwgYEludmFsaWRfZGF0YSBlIC0+IEVycm9yIChFcnJvci50YWcgZSB+dGFnOlwiSW52YWxpZCBkYXRhXCIpXG4gIHwgYE5vdF9lbm91Z2hfZGF0YSAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJub3QgZW5vdWdoIGRhdGFcIlxuOztcblxubGV0IHdyaXRlX2Jpbl9wcm90IHQgPyhwb3MgPSAwKSB3cml0ZXIgdiA9XG4gIGxldCBkYXRhX2xlbiA9IHdyaXRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgdiBpblxuICBsZXQgdG90YWxfbGVuID0gZGF0YV9sZW4gKyBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgaWYgcG9zIDwgMFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3Q6IG5lZ2F0aXZlIHBvc1wiIHBvcyBbJXNleHBfb2Y6IGludF07XG4gIGlmIHBvcyArIHRvdGFsX2xlbiA+IGxlbmd0aCB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBub3QgZW5vdWdoIHJvb21cIlxuICAgICAgKGBwb3MgcG9zLCBgcG9zX2FmdGVyX3dyaXRpbmcgKHBvcyArIHRvdGFsX2xlbiksIGBiaWdzdHJpbmdfbGVuZ3RoIChsZW5ndGggdCkpXG4gICAgICBbJXNleHBfb2Y6XG4gICAgICAgIFsgYHBvcyBvZiBpbnQgXSAqIFsgYHBvc19hZnRlcl93cml0aW5nIG9mIGludCBdICogWyBgYmlnc3RyaW5nX2xlbmd0aCBvZiBpbnQgXV07XG4gIGxldCBwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgPSBCaW5fcHJvdC5VdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgdCB+cG9zIGRhdGFfbGVuIGluXG4gIGxldCBwb3NfYWZ0ZXJfZGF0YSA9IHdyaXRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlIHQgfnBvczpwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgdiBpblxuICBpZiBwb3NfYWZ0ZXJfZGF0YSAtIHBvcyA8PiB0b3RhbF9sZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3QgYnVnIVwiXG4gICAgICAoIGBwb3NfYWZ0ZXJfZGF0YSBwb3NfYWZ0ZXJfZGF0YVxuICAgICAgLCBgc3RhcnRfcG9zIHBvc1xuICAgICAgLCBgYmluX3Byb3Rfc2l6ZV9oZWFkZXJfbGVuZ3RoIEJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICAgICAgLCBgZGF0YV9sZW4gZGF0YV9sZW5cbiAgICAgICwgYHRvdGFsX2xlbiB0b3RhbF9sZW4gKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3NfYWZ0ZXJfZGF0YSBvZiBpbnQgXVxuICAgICAgICAqIFsgYHN0YXJ0X3BvcyBvZiBpbnQgXVxuICAgICAgICAqIFsgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBvZiBpbnQgXVxuICAgICAgICAqIFsgYGRhdGFfbGVuIG9mIGludCBdXG4gICAgICAgICogWyBgdG90YWxfbGVuIG9mIGludCBdXTtcbiAgcG9zX2FmdGVyX2RhdGFcbjs7XG5cbigqIEhleCBkdW1wICopXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCByZWMgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmIH5taW5fcG9zIH5wb3MgfmNoYXIgPVxuICBsZXQgcG9zJyA9IHBvcyAtIDEgaW5cbiAgaWYgcG9zJyA+PSBtaW5fcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zJykgY2hhclxuICB0aGVuIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zOnBvcycgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfZW5kID1cbiAgICBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWY6dCB+bWluX3Bvczpwb3MgfnBvczoocG9zICsgbGVuKSB+Y2hhcjpwYWRkaW5nXG4gIGluXG4gIHRvX3N0cmluZyB0IH5wb3MgfmxlbjooZGF0YV9lbmQgLSBwb3MpXG47O1xuXG5sZXQgc2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiB2YWx1ZSA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCB2YWx1ZSBpblxuICBpZiBzbGVuID4gbGVuXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkJpZ3N0cmluZy5zZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nOiAlUyBpcyBsb25nZXIgdGhhbiAlZFwiXG4gICAgICB2YWx1ZVxuICAgICAgbGVuXG4gICAgICAoKTtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOnBvcyB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zICsgc2xlbiB0byBwb3MgKyBsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCByZWMgZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zIH5tYXhfcG9zIH5jaGFyID1cbiAgaWYgcG9zIDw9IG1heF9wb3MgJiYgQ2hhci4oID0gKSAoZ2V0IGJ1ZiBwb3MpIGNoYXJcbiAgdGhlbiBmaXJzdF9ub25tYXRjaCB+YnVmIH5wb3M6KEludC5zdWNjIHBvcykgfm1heF9wb3MgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuIHZhbHVlID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW5cbiAgdGhlblxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiQmlnc3RyaW5nLnNldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmc6ICVTIGlzIGxvbmdlciB0aGFuICVkXCJcbiAgICAgIHZhbHVlXG4gICAgICBsZW5cbiAgICAgICgpO1xuICBGcm9tX3N0cmluZy5ibGl0IH5zcmM6dmFsdWUgfmRzdDp0IH5zcmNfcG9zOjAgfmRzdF9wb3M6KHBvcyArIGxlbiAtIHNsZW4pIH5sZW46c2xlbjtcbiAgZm9yIGkgPSBwb3MgdG8gcG9zICsgbGVuIC0gc2xlbiAtIDEgZG9cbiAgICBzZXQgdCBpIHBhZGRpbmdcbiAgZG9uZVxuOztcblxubGV0IGdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gIHRvX3N0cmluZyB0IH5wb3M6ZGF0YV9iZWdpbiB+bGVuOihsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYmlnc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5iaWdzdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gICAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICAgIH1cblxuICBsZXQgdG9fc3RyaW5nIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmIGluXG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICBzdHJcbiAgOztcblxuICBsZXQgdG9fYnl0ZXMgdCB2ID1cbiAgICBsZXQgbGVuID0gdC5zaXplIHYgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcG9zID0gdC53cml0ZSBidWYgfnBvczowIHYgaW5cbiAgICBhc3NlcnQgKHBvcyA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBsZXQgc3RyID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9XG4gICAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gICAgfVxuXG4gIGxldCBvZl9zdHJpbmcgdCBzdHJpbmcgPVxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHN0cmluZyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuXG4gIGxldCBvZl9ieXRlcyB0IGJ5dGVzID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX2J5dGVzIGJ5dGVzIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgIGxldCB2ID0gdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGFzc2VydCAoIXBvc19yZWYgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICB2XG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmluX3Byb3QuTWQ1XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gdCB8PiB0b19oZXggfD4gU3RyaW5nLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IFN0cmluZy50X29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IGhhc2hfZm9sZF90IGFjY3VtIHQgPSBTdHJpbmcuaGFzaF9mb2xkX3QgYWNjdW0gKFQudG9fYmluYXJ5IHQpXG5sZXQgaGFzaCB0ID0gU3RyaW5nLmhhc2ggKFQudG9fYmluYXJ5IHQpXG5cbm1vZHVsZSBBc19iaW5hcnlfc3RyaW5nID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBTdHJpbmcuc2V4cF9vZl90IChULnRvX2JpbmFyeSB4KVxuICAgICAgbGV0IHRfb2Zfc2V4cCB4ID0gVC5vZl9iaW5hcnlfZXhuIChTdHJpbmcudF9vZl9zZXhwIHgpXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBTdHJpbmdcblxuICAgICAgICAgIHR5cGUgdCA9IEJpbl9wcm90Lk1kNS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IFQudG9fYmluYXJ5XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBULm9mX2JpbmFyeV9leG5cbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgIGxldCBoYXNoID0gaGFzaFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5fcHJvdC5NZDVcblxuICAgICAgICB0eXBlIHQgPSBCaW5fcHJvdC5NZDUudFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBGbi5pZFxuICAgICAgZW5kKVxuICBlbmRcblxuICBsZXQgZGlnZXN0X3N0cmluZyBzID0gTWQ1X2xpYi5zdHJpbmcgc1xuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5cbmxldCBkaWdlc3RfbnVtX2J5dGVzID0gMTZcbmxldCB0b19oZXggPSBULnRvX2hleFxubGV0IGZyb21faGV4ID0gVC5vZl9oZXhfZXhuXG5sZXQgb2ZfaGV4X2V4biA9IFQub2ZfaGV4X2V4blxubGV0IG9mX2JpbmFyeV9leG4gPSBULm9mX2JpbmFyeV9leG5cbmxldCB0b19iaW5hcnkgPSBULnRvX2JpbmFyeVxubGV0IGRpZ2VzdF9zdHJpbmcgPSBTdGFibGUuZGlnZXN0X3N0cmluZ1xubGV0IGRpZ2VzdF9ieXRlcyA9IE1kNV9saWIuYnl0ZXNcblxuZXh0ZXJuYWwgY2FtbF9zeXNfb3BlblxuICA6ICBzdHJpbmdcbiAgLT4gQ2FtbC5vcGVuX2ZsYWcgbGlzdFxuICAtPiBwZXJtOmludFxuICAtPiBpbnRcbiAgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBjYW1sX3N5c19jbG9zZSA6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5leHRlcm5hbCBkaWdlc3RfZmRfYmxvY2tpbmcgOiBpbnQgLT4gc3RyaW5nID0gXCJjb3JlX21kNV9mZFwiXG5cbmxldCBkaWdlc3RfZmlsZV9ibG9ja2luZyBwYXRoID1cbiAgb2ZfYmluYXJ5X2V4blxuICAgIChCYXNlLkV4bi5wcm90ZWN0eFxuICAgICAgIChjYW1sX3N5c19vcGVuIHBhdGggWyBPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnkgXSB+cGVybTowbzAwMClcbiAgICAgICB+ZjpkaWdlc3RfZmRfYmxvY2tpbmdcbiAgICAgICB+ZmluYWxseTpjYW1sX3N5c19jbG9zZSlcbjs7XG5cbmxldCBmaWxlID0gZGlnZXN0X2ZpbGVfYmxvY2tpbmdcblxubGV0IGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW4gPVxuICBvZl9iaW5hcnlfZXhuIChDYW1sLkRpZ2VzdC5jaGFubmVsIGNoYW5uZWwgbGVuKVxuOztcblxubGV0IGNoYW5uZWwgY2hhbm5lbCBsZW4gPVxuICBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuXG47O1xuXG5sZXQgb3V0cHV0X2Jsb2NraW5nIHQgb2MgPSBDYW1sLkRpZ2VzdC5vdXRwdXQgb2MgKHRvX2JpbmFyeSB0KVxubGV0IG91dHB1dCBvYyB0ID0gb3V0cHV0X2Jsb2NraW5nIHQgb2NcbmxldCBpbnB1dF9ibG9ja2luZyBpYyA9IG9mX2JpbmFyeV9leG4gKENhbWwuRGlnZXN0LmlucHV0IGljKVxubGV0IGlucHV0ID0gaW5wdXRfYmxvY2tpbmdcbmxldCBkaWdlc3Rfc3ViYnl0ZXMgPSBNZDVfbGliLnN1YmJ5dGVzXG5sZXQgc3RyaW5nID0gZGlnZXN0X3N0cmluZ1xubGV0IGJ5dGVzID0gZGlnZXN0X2J5dGVzXG5sZXQgc3ViYnl0ZXMgcyBwb3MgbGVuID0gZGlnZXN0X3N1YmJ5dGVzIHMgfnBvcyB+bGVuXG5cbmxldCBkaWdlc3RfYmluX3Byb3Qgd3JpdGVyIHZhbHVlID1cbiAgZGlnZXN0X3N0cmluZyAoQ29yZV9iaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nIHdyaXRlciB2YWx1ZSlcbjs7XG5cbmV4dGVybmFsIGNfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuICA6ICBCaWdzdHJpbmcudFxuICAtPiBwb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gcmVzOkJ5dGVzLnRcbiAgLT4gdW5pdFxuICA9IFwiY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1wiXG5cbmxldCB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgKCogSXQncyBtb3JlIGVmZmljaWVudCB0byBhbGxvY2F0ZSB0aGUgcmVzdWx0IG9uIHRoZSBPQ2FtbCBzaWRlIGFuZCBkZWNsYXJlIHRoZSBDXG4gICAgIGZ1bmN0aW9uIGFzIG5vYWxsb2MgdGhhbiB0byBsZXQgdGhlIEMgZnVuY3Rpb24gYWxsb2NhdGUuICopXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgY19kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gfnJlcztcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5XG4gICAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxubGV0IGRpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICB+cG9zXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlblxuOztcblxubGV0IGRpZ2VzdF9iaWdzdHJpbmcgYnVmID1cbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3M6MCB+bGVuOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zilcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbmFibGUwXG5cbigqIFtvZl9zdHJpbmddIGFuZCBbdG9fc3RyaW5nXSBjYW4ndCBnbyBpbiBiaW5hYmxlMC5tbCBkdWUgdG8gYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBvZl9zdHJpbmcgbSBzdHJpbmcgPSBvZl9iaWdzdHJpbmcgbSAoQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nIG0gdCA9IEJpZ3N0cmluZy50b19zdHJpbmcgKHRvX2JpZ3N0cmluZyBtIHQpXG5cbm1vZHVsZSBPZl9iaW5hYmxlID0gT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2ZfYmluYWJsZTEgPSBPZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2ZfYmluYWJsZTIgPSBPZl9iaW5hYmxlMl93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2ZfYmluYWJsZTMgPSBPZl9iaW5hYmxlM193aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2Zfc2V4cGFibGUgPSBPZl9zZXhwYWJsZV93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZSA9IE9mX3N0cmluZ2FibGVfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuIiwiKCogRnVuY3Rpb25zIGZvciBwYXJzaW5nIHRpbWUgem9uZSBkYXRhYmFzZSBmaWxlcyAoemljIGZpbGVzKS5cblxuICAgQSB0aW1lIHpvbmUgZmlsZSBjb25zaXN0cyAoY29uY2VwdHVhbGx5IC0gdGhlIHJlcHJlc2VudGF0aW9uIGlzIG1vcmVcbiAgIGNvbXBhY3QpIG9mIGFuIG9yZGVyZWQgbGlzdCBvZiAoVGltZS50ICogW2xvY2FsX3RpbWVfdHlwZV0pIHRoYXQgbWFya1xuICAgdGhlIGJvdW5kYXJpZXMgKG1hcmtlZCBmcm9tIHRoZSBlcG9jaCkgYXQgd2hpY2ggdmFyaW91cyB0aW1lIGFkanVzdG1lbnRcbiAgIHJlZ2ltZXMgYXJlIGluIGVmZmVjdC4gIFRoaXMgY2FuIGFsc28gYmUgdGhvdWdodCBvZiBhcyBicmVha2luZyBkb3duIGFsbFxuICAgdGltZSBwYXN0IHRoZSBlcG9jaCBpbnRvIHJhbmdlcyB3aXRoIGEgW2xvY2FsX3RpbWVfdHlwZV0gdGhhdCBkZXNjcmliZXMgdGhlXG4gICBvZmZzZXQgZnJvbSBHTVQgdG8gYXBwbHkgdG8gZWFjaCByYW5nZSB0byBnZXQgbG9jYWwgdGltZS5cbiopXG5cbm9wZW4gSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBab25lX2ludGZcblxuZXhjZXB0aW9uIEludmFsaWRfZmlsZV9mb3JtYXQgb2Ygc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZ1bGxfZGF0YSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEluZGV4ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuZXh0ID0gSW50LnN1Y2NcbiAgICAgICAgbGV0IHByZXYgPSBJbnQucHJlZFxuICAgICAgICBsZXQgYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb24gPSAtMVxuXG4gICAgICAgICgqIFNvbWUgZXhpc3RpbmcgY2xpZW50cyBleHBlY3QgW2luZGV4ID49IDBdLCBzbyB3ZSBuZXZlciBzZXJpYWxpemUgYSBuZWdhdGl2ZVxuICAgICAgICAgICBpbmRleC4gVGhpcyBjb252ZXJzaW9uIGNhbiBiZSByZW1vdmVkIGlmIG5ldyBzdGFibGUgdmVyc2lvbnMgYXJlIG1pbnRlZC4gKilcbiAgICAgICAgbGV0IHRvX2V4dGVybmFsIHQgPSBtYXggMCB0XG5cbiAgICAgICAgKCogV2hlbiB0aGUgaW5kZXggb2YgYSB0aW1lIHpvbmUgd2l0aCBubyB0cmFuc2l0aW9ucyBpcyBjb252ZXJ0ZWQgdmlhIHRvX2V4dGVybmFsLFxuICAgICAgICAgICBpdHMgdmFsdWUgYmVjb21lcyAwIGV2ZW4gdGhvdWdoIGl0cyB0cmFuc2l0aW9uIGFycmF5IGlzIGVtcHR5IChhbmQgaXQgc2hvdWxkXG4gICAgICAgICAgIGhhdmUgYmVlbiAtMSkuIFdoZW4gdGhlIGNvbnZlcnRlZCB2YWx1ZSBpcyBjaGFuZ2VkIGJhY2sgdG8gYSBab25lLnQgdGhyb3VnaFxuICAgICAgICAgICBvZl9leHRlcm5hbCwgcmV0dXJuaW5nIHRoaXMgdmFsdWUgZm9yIGl0cyBpbmRleCBjb3VsZCByZXN1bHQgaW4gdW5zYWZlIGFycmF5XG4gICAgICAgICAgIGFjY2Vzc2VzIHRvIHRoZSB0cmFuc2l0aW9uIGFycmF5IG9mIHRoZSB6b25lIChzaW5jZSB0aGVyZSBpcyBubyB0cmFuc2l0aW9uIGF0XG4gICAgICAgICAgIGluZGV4IDApLiBBbHNvLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGtlZXAgdGhlIGNvbnZlcnRlZCBpbmRleCBiZWNhdXNlIGl0XG4gICAgICAgICAgIGlzIGludGVuZGVkIHRvIGJlIGEgbXV0YWJsZSB2YWx1ZSB1c2VkIGZvciBjYWNoaW5nLiBTbyBvZl9leHRlcm5hbCBhbHdheXMgc2V0c1xuICAgICAgICAgICB0aGUgaW5kZXggdG8gLTEsIHdoaWNoIGlzIGEgc2FmZSB2YWx1ZS4gKilcbiAgICAgICAgbGV0IG9mX2V4dGVybmFsIChfIDogdCkgPSAtMVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoSW50KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgU2V4cGFibGUuT2Zfc2V4cGFibGVcbiAgICAgICAgICAgIChJbnQpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2V4dGVybmFsXG4gICAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2ltZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgdXRjX29mZnNldF9pbl9zZWNvbmRzIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IGlzX2RzdCA6IGJvb2xcbiAgICAgICAgICA7IGFiYnJ2IDogc3RyaW5nXG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcblxuICAgICAgKCogaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBsZWFwIHNlY29uZHMgc2hvdWxkIGJlIGFwcGxpZWQgLSB1bnVzZWRcbiAgICAgICAgIGJlY2F1c2Ugd2UgYXJlIHRyYW5zbGF0aW5nIGJhc2VkIG9uIGEgZXBvY2ggc3lzdGVtIGNsb2NrIChzZWUgdGhlIENvcmVfem9uZVxuICAgICAgICAgZG9jdW1lbnRhdGlvbikuICopXG4gICAgICBtb2R1bGUgTGVhcF9zZWNvbmQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBzZWNvbmRzIDogaW50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRyYW5zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBuZXdfcmVnaW1lIDogUmVnaW1lLnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgO1xuICAgICAgICAgIGRpZ2VzdCA6IE1kNS5Bc19iaW5hcnlfc3RyaW5nLnQgb3B0aW9uXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgOiBUcmFuc2l0aW9uLnQgYXJyYXlcbiAgICAgICAgOyAoKiBjYWNoZXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRyYW5zaXRpb24gd2UgdXNlZCB0byBtYWtlIGxvb2t1cHMgZmFzdGVyICopXG4gICAgICAgICAgbXV0YWJsZSBsYXN0X3JlZ2ltZV9pbmRleCA6IEluZGV4LnRcbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA6IFJlZ2ltZS50XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzIDogTGVhcF9zZWNvbmQudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgKCogdGhpcyByZWxpZXMgb24gem9uZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGhhdmluZyB0aGUgc2FtZSB0cmFuc2l0aW9ucyAqKVxuICAgICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBTdHJpbmcuY29tcGFyZSB0MS5uYW1lIHQyLm5hbWVcbiAgICAgIGxldCBvcmlnaW5hbF9maWxlbmFtZSB6b25lID0gem9uZS5vcmlnaW5hbF9maWxlbmFtZVxuICAgICAgbGV0IGRpZ2VzdCB6b25lID0gem9uZS5kaWdlc3RcblxuICAgICAgbW9kdWxlIFpvbmVfZmlsZSA6IHNpZ1xuICAgICAgICB2YWwgaW5wdXRfdHpfZmlsZSA6IHpvbmVuYW1lOnN0cmluZyAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIGxldCBib29sX29mX2ludCBpID0gaSA8PiAwXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50MzIgPVxuICAgICAgICAgIGxldCBsb25nID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgICAgICAgICBsZXQgaW50MzJfb2ZfY2hhciBjaHIgPSBJbnQzMi5vZl9pbnRfZXhuIChpbnRfb2ZfY2hhciBjaHIpIGluXG4gICAgICAgICAgZnVuIGljIC0+XG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nIH5wb3M6MCB+bGVuOjQ7XG4gICAgICAgICAgICBsZXQgc2IxID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMCkpIDI0IGluXG4gICAgICAgICAgICBsZXQgc2IyID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMSkpIDE2IGluXG4gICAgICAgICAgICBsZXQgc2IzID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMikpIDggaW5cbiAgICAgICAgICAgIGxldCBzYjQgPSBpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAzKSBpblxuICAgICAgICAgICAgSW50MzIuYml0X29yIChJbnQzMi5iaXRfb3Igc2IxIHNiMikgKEludDMyLmJpdF9vciBzYjMgc2I0KVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugb24gbnVtYmVycyB0aGF0IHdpbGwgZml0IGludG8gYSAzMS1iaXRcbiAgICAgICAgICAgaW50LiBVTklYIHRpbWVzdGFtcHMgd29uJ3QsIGZvciBleGFtcGxlLiAgSW4gb3VyIGNhc2UgdGhpcyBpcyBvbmx5IHVzZWRcbiAgICAgICAgICAgdG8gaG9sZCBzbWFsbCBudW1iZXJzIHRoYXQgYXJlIG5ldmVyIGludGVycHJldGVkIGFzIHRpbWVzdGFtcHMuICopXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludCBpYyA9IEludDMyLnRvX2ludF9leG4gKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDYzIGljID0gSW50NjMub2ZfaW50MzIgKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfbG9uZ19hc19pbnQ2MyBpYyA9XG4gICAgICAgICAgbGV0IGludDYzX29mX2NoYXIgY2hyID0gSW50NjMub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGxldCBzaGlmdCBjIGJpdHMgPSBJbnQ2My5zaGlmdF9sZWZ0IChpbnQ2M19vZl9jaGFyIGMpIGJpdHMgaW5cbiAgICAgICAgICBsZXQgbG9uZ19sb25nID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nX2xvbmcgfnBvczowIH5sZW46ODtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMCkgNTYgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMSkgNDgpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDIpIDQwKSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAzKSAzMikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNCkgMjQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDUpIDE2KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA2KSA4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChpbnQ2M19vZl9jaGFyIChCeXRlcy5nZXQgbG9uZ19sb25nIDcpKSBpblxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9saXN0IGljIH5sZW4gfmYgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBjIGxzdCA9XG4gICAgICAgICAgICBpZiBjID4gMCB0aGVuIGxvb3AgKGMgLSAxKSAoZiBpYyA6OiBsc3QpIGVsc2UgTGlzdC5yZXYgbHN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIGxlbiBbXVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hcnJheSBpYyB+bGVuIH5mID0gQXJyYXkub2ZfbGlzdCAoaW5wdXRfbGlzdCBpYyB+bGVuIH5mKVxuXG4gICAgICAgIGxldCBpbnB1dF9yZWdpbWUgaWMgPVxuICAgICAgICAgIGxldCB1dGNfb2Zmc2V0X2luX3NlY29uZHMgPSBpbnB1dF9sb25nX2FzX2ludDYzIGljIGluXG4gICAgICAgICAgbGV0IGlzX2RzdCA9IGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSBpblxuICAgICAgICAgIGxldCBhYmJydl9pbmRleCA9IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykgaW5cbiAgICAgICAgICBsZXQgbHQgYWJicnYgPSB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdDsgYWJicnYgfSBpblxuICAgICAgICAgIGx0LCBhYmJydl9pbmRleFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hYmJyZXZpYXRpb25zIGljIH5sZW4gPVxuICAgICAgICAgIGxldCByYXdfYWJicnZzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmxlbiB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBsZXQgXywgaW5kZXhlZF9hYmJydnMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkIHJhd19hYmJydnMgfmluaXQ6KDAsIE1hcC5Qb2x5LmVtcHR5KSB+ZjooZnVuIChpbmRleCwgYWJicnZzKSBjIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICB8ICdcXDAwMCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dF9pbmRleCA9IGluZGV4ICsgU3RyaW5nLmxlbmd0aCBkYXRhICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBhYmJydnMgPSBNYXAuc2V0IGFiYnJ2cyB+a2V5OmluZGV4IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICAgICAgICBuZXh0X2luZGV4LCBhYmJydnNcbiAgICAgICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICAgICAgICAgIGluZGV4LCBhYmJydnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA8PiAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEludmFsaWRfZmlsZV9mb3JtYXRcbiAgICAgICAgICAgICAgICAgXCJtaXNzaW5nIFxcMDAwIHRlcm1pbmF0aW5nIGNoYXJhY3RlciBpbiBpbnB1dF9hYmJyZXZpYXRpb25zXCIpO1xuICAgICAgICAgIGluZGV4ZWRfYWJicnZzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uIH5pbnB1dF9sZWFwX3NlY29uZCBpYyA9XG4gICAgICAgICAgbGV0IHV0Y19sb2NhbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHN0ZF93YWxsX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgbGVhcF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0eXBlX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgYWJicnZfY2hhcl9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fdGltZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF90cmFuc2l0aW9uIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25faW5kaWNlcyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0XG4gICAgICAgICAgICAgIGljXG4gICAgICAgICAgICAgIH5mOihmdW4gaWMgLT4gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSlcbiAgICAgICAgICAgICAgfmxlbjp0cmFuc2l0aW9uX2NvdW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfcmVnaW1lIH5sZW46dHlwZV9jb3VudCBpblxuICAgICAgICAgIGxldCBhYmJyZXZpYXRpb25zID0gaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuOmFiYnJ2X2NoYXJfY291bnQgaW5cbiAgICAgICAgICBsZXQgbGVhcF9zZWNvbmRzID0gaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF9sZWFwX3NlY29uZCB+bGVuOmxlYXBfY291bnQgaW5cbiAgICAgICAgICAoKiBUaGUgZm9sbG93aW5nIHR3byBhcnJheXMgaW5kaWNhdGUgdHdvIGJvb2xlYW4gdmFsdWVzIHBlciByZWdpbWUgdGhhdFxuICAgICAgICAgICAgIHJlcHJlc2VudCBhIHRocmVlLXZhbHVlIHR5cGUgdGhhdCB3b3VsZCB0cmFuc2xhdGUgdG86XG5cbiAgICAgICAgICAgICB0eXBlIHRyYW5zaXRpb25fdHlwZSA9IFVUQyB8IFN0YW5kYXJkIHwgV2FsbF9jbG9ja1xuXG4gICAgICAgICAgICAgSG93ZXZlciwgdGhlc2UgYXJlIG9ubHkgdXNlZCBieSB0aGUgc3lzdGVtIGxpYnJhcnkgd2hlbiBoYW5kbGluZyB0aGUgY2FzZSB3aGVyZSB0aGVcbiAgICAgICAgICAgICBUWiB2YXJpYWJsZSBpcyBzZXQsIG5vdCB0byBhIHRpbWUgem9uZSBuYW1lLCBidXQgaW5zdGVhZCBpcyBvZiB0aGUgZm9ybTpcblxuICAgICAgICAgICAgIFRaID0gXCJzdGQgb2Zmc2V0IGRzdCBvZmZzZXQsIHJ1bGVcIlxuXG4gICAgICAgICAgICAgV2hpY2ggaXMgZGVlcGx5IG9ic2N1cmUsIGFuZCBhbG1vc3QgY2VydGFpbmx5IGEgbWlzdGFrZSB0byB1c2UuICBUaGlzIGxpYnJhcnkgbWFrZXNcbiAgICAgICAgICAgICBubyBwcmV0ZW5zZSBhYm91dCBoYW5kbGluZyB0aGlzIGNhc2UuICBXZSBjb250aW51ZSB0byByZWFkIHRoZW0gaW4gZm9yXG4gICAgICAgICAgICAgY29tcGxldGVuZXNzLCBhbmQgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIHRoYXQgd2Ugd2lsbCBsYXRlciBkaXNjb3ZlciBhIGNhc2Ugd2hlcmVcbiAgICAgICAgICAgICB0aGV5IGFyZSB1c2VkLiAqKVxuICAgICAgICAgIGxldCBfc3RkX3dhbGxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnN0ZF93YWxsX2NvdW50IH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF91dGNfbG9jYWxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnV0Y19sb2NhbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWdpbWVzID1cbiAgICAgICAgICAgIEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgKExpc3QubWFwIHJlZ2ltZXMgfmY6KGZ1biAobHQsIGFiYnJ2X2luZGV4KSAtPlxuICAgICAgICAgICAgICAgICBsZXQgYWJicnYgPSBNYXAuZmluZF9leG4gYWJicmV2aWF0aW9ucyBhYmJydl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBsdCBhYmJydikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmF3X3RyYW5zaXRpb25zID1cbiAgICAgICAgICAgIExpc3QubWFwMl9leG4gdHJhbnNpdGlvbl90aW1lcyB0cmFuc2l0aW9uX2luZGljZXMgfmY6KGZ1biB0aW1lIGluZGV4IC0+XG4gICAgICAgICAgICAgIGxldCByZWdpbWUgPSByZWdpbWVzLihpbmRleCkgaW5cbiAgICAgICAgICAgICAgdGltZSwgcmVnaW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25zID1cbiAgICAgICAgICAgIGxldCByZWMgbWFrZV90cmFuc2l0aW9ucyBhY2MgbCA9XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IEFycmF5Lm9mX2xpc3QgKExpc3QucmV2IGFjYylcbiAgICAgICAgICAgICAgfCAoc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoLCBuZXdfcmVnaW1lKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgICAgICAgKHsgVHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IG5ld19yZWdpbWUgfSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9ucyBbXSByYXdfdHJhbnNpdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICBtYXRjaCBBcnJheS5maW5kIHJlZ2ltZXMgfmY6KGZ1biByIC0+IG5vdCByLlJlZ2ltZS5pc19kc3QpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByZWdpbWVzLigwKVxuICAgICAgICAgICAgfCBTb21lIGx0dCAtPiBsdHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGZ1biBuYW1lIH5vcmlnaW5hbF9maWxlbmFtZSB+ZGlnZXN0IC0+XG4gICAgICAgICAgICB7IG5hbWVcbiAgICAgICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBTb21lIG9yaWdpbmFsX2ZpbGVuYW1lXG4gICAgICAgICAgICA7IGRpZ2VzdCA9IFNvbWUgZGlnZXN0XG4gICAgICAgICAgICA7IHRyYW5zaXRpb25zXG4gICAgICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVcbiAgICAgICAgICAgIDsgbGVhcF9zZWNvbmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggPSBpbnB1dF9sZWFwX3NlY29uZCBpYyBpblxuICAgICAgICAgIGxldCBzZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICB7IExlYXBfc2Vjb25kLnRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaDsgc2Vjb25kcyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYWRfaGVhZGVyIGljID1cbiAgICAgICAgICBsZXQgbWFnaWMgPVxuICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZiB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLmVxdWFsIG1hZ2ljIFwiVFppZlwiKVxuICAgICAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJtYWdpYyBjaGFyYWN0ZXJzIFRaaWYgbm90IHByZXNlbnRcIik7XG4gICAgICAgICAgbGV0IHZlcnNpb24gPVxuICAgICAgICAgICAgbWF0Y2ggSW5fY2hhbm5lbC5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAnXFwwMDAnIC0+IGBWMVxuICAgICAgICAgICAgfCBTb21lICcyJyAtPiBgVjJcbiAgICAgICAgICAgIHwgU29tZSAnMycgLT4gYFYzXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJleHBlY3RlZCB2ZXJzaW9uLCBmb3VuZCBub3RoaW5nXCIpXG4gICAgICAgICAgICB8IFNvbWUgYmFkX3ZlcnNpb24gLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCJ2ZXJzaW9uICglYykgaXMgaW52YWxpZFwiIGJhZF92ZXJzaW9uKSlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHNwYWNlIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGluIHRoZSBmb3JtYXQgKilcbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZjooQnl0ZXMuY3JlYXRlIDE1KSB+cG9zOjAgfmxlbjoxNTtcbiAgICAgICAgICB2ZXJzaW9uXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjEgaWMgPVxuICAgICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZCA9XG4gICAgICAgICAgICBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kOmlucHV0X2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uOmlucHV0X2xvbmdfYXNfaW50NjMgfmlucHV0X2xlYXBfc2Vjb25kIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgKCpcbiAgICAgICAgICAgdmVyc2lvbiAyIHRpbWV6b25lIGZpbGVzIGhhdmUgdGhlIGZvcm1hdDpcblxuICAgICAgICAgICBwYXJ0IDEgLSBleGFjdGx5IHRoZSBzYW1lIGFzIHYxXG5cbiAgICAgICAgICAgcGFydCAyIC0gc2FtZSBmb3JtYXQgYXMgdjEsIGV4Y2VwdCB0aGF0IDggYnl0ZXMgYXJlIHVzZWQgdG8gc3RvcmVcbiAgICAgICAgICAgdHJhbnNpdGlvbiB0aW1lcyBhbmQgbGVhcCBzZWNvbmRzXG5cbiAgICAgICAgICAgcGFydCAzIC0gYSBuZXdsaW5lLWVuY2xvZGVkLCBQT1NJWC1UWi1lbnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZVxuICAgICAgICAgICBzdHJpbmcgZm9yIHVzZSBpbiBoYW5kbGluZyBpbnN0YW50cyBhZnRlciB0aGUgbGFzdCB0cmFuc2l0aW9uIHRpbWVcbiAgICAgICAgICAgc3RvcmVkIGluIHRoZSBmaWxlICh3aXRoIG5vdGhpbmcgYmV0d2VlbiB0aGUgbmV3bGluZXMgaWYgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgUE9TSVggcmVwcmVzZW50YXRpb24gZm9yIHN1Y2ggaW5zdGFudHMpXG5cbiAgICAgICAgICAgV2UgaGFuZGxlIGZpbGVzIGluIHRoaXMgZm9ybWF0IGJ5IHBhcnNpbmcgdGhlIGZpcnN0IHBhcnQgZXhhY3RseSBhcyBhIHYxXG4gICAgICAgICAgIHRpbWV6b25lIGZpbGUgYW5kIHRoZW4gY29udGludWluZyB0byBwYXJzZSB3aXRoIDY0Yml0IHJlYWRpbmcgZnVuY3Rpb25zIGluIHRoZVxuICAgICAgICAgICByaWdodCBwbGFjZXMuXG5cbiAgICAgICAgICAgVmVyc2lvbiAzIHRpbWV6b25lIGZpbGVzIGFyZSB0aGUgc2FtZSBhcyB2ZXJzaW9uIDIsIGV4Y2VwdCB0aGVcbiAgICAgICAgICAgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGUgc3RyaW5nIGluIHBhcnQgMyBtYXkgdXNlIHR3byBtaW5vclxuICAgICAgICAgICBleHRlbnNpb25zIHRvIHRoZSBQT1NJWCBUWiBmb3JtYXQgKHRoZSBob3VycyBwYXJ0IG9mIGl0cyB0cmFuc2l0aW9uXG4gICAgICAgICAgIHRpbWVzIG1heSBiZSBzaWduZWQgYW5kIHJhbmdlIGZyb20gLTE2NyB0aHJvdWdoIDE2NyBpbnN0ZWFkIG9mIHRoZVxuICAgICAgICAgICBQT1NJWC1yZXF1aXJlZCB1bnNpZ25lZCB2YWx1ZXMgZnJvbSAwIHRocm91Z2ggMjQ7IGFuZCBEU1QgaXMgaW4gZWZmZWN0IGFsbFxuICAgICAgICAgICB5ZWFyIGlmIGl0IHN0YXJ0cyBKYW51YXJ5IDEgYXQgMDA6MDAgYW5kIGVuZHMgRGVjZW1iZXIgMzEgYXQgMjQ6MDAgcGx1cyB0aGVcbiAgICAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIGRheWxpZ2h0IHNhdmluZyBhbmQgc3RhbmRhcmQgdGltZSkuXG5cbiAgICAgICAgICAgQXMgd2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgd2l0aCBwYXJ0IDMgYW55d2F5LCB3ZSBjYW4ganVzdCByZWFkIHYzXG4gICAgICAgICAgIGZpbGVzIGFzIHYyLlxuICAgICAgICAqKVxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV92Ml9vcl92MyB+dmVyc2lvbiBpYyA9XG4gICAgICAgICAgbGV0IChfIDogc3RyaW5nIC0+IG9yaWdpbmFsX2ZpbGVuYW1lOnN0cmluZyAtPiBkaWdlc3Q6TWQ1X2xpYi50IC0+IHQpID1cbiAgICAgICAgICAgIGlucHV0X3R6X2ZpbGVfdjEgaWNcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHRoZSBoZWFkZXIgaXMgZnVsbHkgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogWyBgVjEgfCBgVjIgfCBgVjMgXV0gKHJlYWRfaGVhZGVyIGljKSB2ZXJzaW9uKTtcbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuXG4gICAgICAgICAgICB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICAgIH5pbnB1dF9sZWFwX3NlY29uZFxuICAgICAgICAgICAgaWNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZSB+em9uZW5hbWUgfmZpbGVuYW1lID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHByb3RlY3R4IChJbl9jaGFubmVsLmNyZWF0ZSBmaWxlbmFtZSkgfmZpbmFsbHk6SW5fY2hhbm5lbC5jbG9zZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGxldCBtYWtlX3pvbmUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlYWRfaGVhZGVyIGljIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBWMSAtPiBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgICAgICAgfCAoYFYyIHwgYFYzKSBhcyB2ZXJzaW9uIC0+IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2VzdCA9IE1kNS5kaWdlc3RfZmlsZV9ibG9ja2luZyBmaWxlbmFtZSBpblxuICAgICAgICAgICAgICBsZXQgciA9IG1ha2Vfem9uZSB6b25lbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWU6ZmlsZW5hbWUgfmRpZ2VzdCBpblxuICAgICAgICAgICAgICByKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IEludmFsaWRfZmlsZV9mb3JtYXQgcmVhc29uIC0+XG4gICAgICAgICAgICByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCAoc3ByaW50ZiBcIiVzIC0gJXNcIiBmaWxlbmFtZSByZWFzb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGFzc2VydCAob2Zmc2V0ID49IC0yNCAmJiBvZmZzZXQgPD0gMjQpO1xuICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gSW50NjMub2ZfaW50IChvZmZzZXQgKiA2MCAqIDYwKSBpblxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA9IE5vbmVcbiAgICAgICAgOyBkaWdlc3QgPSBOb25lXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgPSBbfHxdXG4gICAgICAgIDsgbGFzdF9yZWdpbWVfaW5kZXggPSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlID1cbiAgICAgICAgICAgIHsgUmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kczsgaXNfZHN0ID0gZmFsc2U7IGFiYnJ2ID0gbmFtZSB9XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3V0Y19vZmZzZXQgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSAwXG4gICAgICAgICAgdGhlbiBcIlVUQ1wiXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiVVRDJXMlZFwiIChpZiBvZmZzZXQgPCAwIHRoZW4gXCItXCIgZWxzZSBcIitcIikgKGFicyBvZmZzZXQpXG4gICAgICAgIGluXG4gICAgICAgIG9mX3V0Y19vZmZzZXRfZXhwbGljaXRfbmFtZSB+bmFtZSB+aG91cnM6b2Zmc2V0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5GdWxsX2RhdGEuVjFcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIHQubmFtZVxuXG5sZXQgbGlrZWx5X21hY2hpbmVfem9uZXMgPVxuICByZWYgWyBcIkFtZXJpY2EvTmV3X1lvcmtcIjsgXCJFdXJvcGUvTG9uZG9uXCI7IFwiQXNpYS9Ib25nX0tvbmdcIjsgXCJBbWVyaWNhL0NoaWNhZ29cIiBdXG47O1xuXG5sZXQgaW5wdXRfdHpfZmlsZSA9IFpvbmVfZmlsZS5pbnB1dF90el9maWxlXG5sZXQgdXRjID0gb2ZfdXRjX29mZnNldCB+aG91cnM6MFxubGV0IG5hbWUgem9uZSA9IHpvbmUubmFtZVxubGV0IHJlc2V0X3RyYW5zaXRpb25fY2FjaGUgdCA9IHQubGFzdF9yZWdpbWVfaW5kZXggPC0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cblxuKCogUmFpc2VzIGlmIFtpbmRleCA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc10gKilcbmxldCBnZXRfcmVnaW1lX2V4biB0IGluZGV4ID1cbiAgaWYgaW5kZXggPCAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4KS5uZXdfcmVnaW1lXG47O1xuXG4oKiBJbiBcImFic29sdXRlIG1vZGVcIiwgYSBudW1iZXIgb2Ygc2Vjb25kcyBpcyBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgb2YgdGhhdCBtYW55XG4gICBzZWNvbmRzIGZyb20gdGhlIFVOSVggZXBvY2gsIGlnbm9yaW5nIGxlYXAgc2Vjb25kcy5cblxuICAgSW4gXCJkYXRlIGFuZCBvZmRheSBtb2RlXCIsIHlvdSBpbnRlcnByZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGFzIGEgbnVtYmVyIG9mIGRheXMgaW5cbiAgIGNvbWJpbmF0aW9uIHdpdGggYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodCwgd2hpY2ggZ2l2ZXMgeW91IGEgY2FsZW5kYXIgZGF5IGFuZFxuICAgYSBjbG9jayBmYWNlIHRpbWUuIFRoZW4geW91IHRha2UgdGhlIHRpbWUgdGhhdCB0aG9zZSByZXByZXNlbnQgaW4gc29tZSByZWxldmFudFxuICAgdGltZXpvbmUuXG5cbiAgIE9mIGNvdXJzZSwgaWYgdGhlIHRpbWV6b25lIGluIHF1ZXN0aW9uIGhhcyBEU1Qgc2hpZnRzLCB0aGUgZGF0ZSBhbmQgb2ZkYXkgbWlnaHRcbiAgIHJlcHJlc2VudCB0d28gb3IgemVybyB0aW1lcy4gVGhlc2UgdGltZXMgd2lsbCBiZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZWl0aGVyIHRoZVxuICAgcHJldmlvdXMgVVRDIG9mZnNldCBvciB0aGUgbmV4dCBvbmUsIGluIGEgd2F5IHdob3NlIHByZWNpc2UgZGV0YWlscyB5b3UgcHJvYmFibHlcbiAgIHNob3VsZG4ndCBkZXBlbmQgb24uXG5cbiAgIChGb3IgdGhlIGN1cmlvdXMsIHdoYXQgd2UgZG8gaXM6IGNvbXB1dGUgdGhlIFwicmVsYXRpdmUgdGltZVwiIG9mIHRoZSBzaGlmdCBhY2NvcmRpbmcgdG9cbiAgIHRoZSBuZXcgcmVnaW1lLCBhbmQgYXNzaWduIHJlbGF0aXZlIHRpbWVzIHRvIHRoZSBvbGQgcmVnaW1lIG9yIG5ldyByZWdpbWUgZGVwZW5kaW5nIG9uXG4gICB3aGljaCBzaWRlIG9mIHRoZSBzaGlmdCB0aW1lIHRoZXkgb2NjdXIuIFNpbmNlIHRoaXMgYW1vdW50cyB0byB1c2luZyB0aGUgb2xkIHJlZ2ltZVxuICAgd2hlbiB0aGUgY2xvY2tzIG1vdmUgZm9yd2FyZCBhbmQgdGhlIG5ldyByZWdpbWUgd2hlbiB0aGUgY2xvY2tzIG1vdmUgYmFjaywgaXQnc1xuICAgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB0aGUgY29ycmVzcG9uZGluZyBUaW1lLnQncyByZWxhdGl2ZSB0byBib3RoIHRoZSBvbGQgYW5kIHRoZVxuICAgbmV3IHJlZ2ltZSBhbmQgcGlja2luZyB0aGUgb25lIHRoYXQgb2NjdXJzIGxhdGVyLiBZZXMsIGxhdGVyLiBJIGhhZCB0byBkcmF3IGEgZGlhZ3JhbVxuICAgdG8gcGVyc3VhZGUgbXlzZWxmIHRoYXQgaXQncyB0aGF0IHdheSByb3VuZCwgYnV0IGl0IGlzLilcbiopXG5tb2R1bGUgTW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWJzb2x1dGVcbiAgICB8IERhdGVfYW5kX29mZGF5XG5lbmRcblxubGV0IGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlICh4IDogVHJhbnNpdGlvbi50KSA9XG4gIGxldCBvcGVuIEludDYzLk8gaW5cbiAgbWF0Y2ggKG1vZGUgOiBNb2RlLnQpIHdpdGhcbiAgfCBBYnNvbHV0ZSAtPiB4LnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaFxuICB8IERhdGVfYW5kX29mZGF5IC0+XG4gICAgeC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggKyB4Lm5ld19yZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCA8IDAgfHwgSW50NjMuKCA+PSApIHNlY29uZHMgKGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlIHQudHJhbnNpdGlvbnMuKGluZGV4KSlcbjs7XG5cbmxldCBpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcyA9XG4gIGluZGV4ICsgMSA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc1xuICB8fCBJbnQ2My4oIDwgKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCArIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgOiBJbmRleC50ID1cbiAgQXJyYXkuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmFuc2l0aW9ucyBgTGFzdF9vbl9sZWZ0IH5zZWdtZW50X29mOihmdW4gdHJhbnNpdGlvbiAtPlxuICAgIGlmIEludDYzLiggPD0gKSAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgdHJhbnNpdGlvbiB+bW9kZSkgc2Vjb25kc1xuICAgIHRoZW4gYExlZnRcbiAgICBlbHNlIGBSaWdodClcbiAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG47O1xuXG5sZXQgaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgPVxuICBsZXQgaW5kZXggPVxuICAgIGxldCBpbmRleCA9IHQubGFzdF9yZWdpbWVfaW5kZXggaW5cbiAgICBpZiBub3QgKGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleDsgdHJ5IHByZXZpb3VzIGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCAtIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGJlZm9yZSBwcmV2aW91cyBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGJlZm9yZSBjYWNoZWQgaW5kZXggYW5kIG5vdCBiZWZvcmUgcHJldmlvdXMsIHNvIHdpdGhpbiBwcmV2aW91cyAqKVxuICAgICAgZWxzZSBpbmRleClcbiAgICBlbHNlIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXg7IHRyeSBuZXh0IGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCArIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGFmdGVyIG5leHQgaW5kZXg7IGZhbGwgYmFjayBvbiBiaW5hcnkgc2VhcmNoICopXG4gICAgICB0aGVuXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHNcbiAgICAgICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXggYW5kIG5vdCBhZnRlciBuZXh0LCBzbyB3aXRoaW4gbmV4dCAqKVxuICAgICAgZWxzZSBpbmRleCAoKiB0aW1lIGlzIHdpdGhpbiBjYWNoZWQgaW5kZXggKikpXG4gICAgZWxzZSBpbmRleFxuICBpblxuICB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIGluZGV4O1xuICBpbmRleFxuOztcblxubW9kdWxlIFRpbWVfaW5fc2Vjb25kcyA6IHNpZ1xuICBpbmNsdWRlIFpvbmVfaW50Zi5UaW1lX2luX3NlY29uZHNcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzID0gRm4uaWRcbiAgICBsZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgaW5jbHVkZSBBYnNvbHV0ZVxuZW5kXG5cbmxldCBpbmRleCB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgfD4gaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlOkFic29sdXRlXG47O1xuXG5sZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCB0aW1lID1cbiAgVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6RGF0ZV9hbmRfb2ZkYXlcbjs7XG5cbmxldCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXggPj0gMCAmJiBpbmRleCA8IEFycmF5Lmxlbmd0aCB0LnRyYW5zaXRpb25zXG5sZXQgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gIGxldCB0cmFuc2l0aW9uID0gdC50cmFuc2l0aW9ucy4oaW5kZXgpIGluXG4gIHRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbjs7XG5cbmxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgbGV0IGFmdGVyID0gdHJhbnNpdGlvbi5uZXdfcmVnaW1lIGluXG4gIGxldCBiZWZvcmUgPVxuICAgIGlmIGluZGV4ID0gMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCAtIDEpLm5ld19yZWdpbWVcbiAgaW5cbiAgSW50NjMuKCAtICkgYWZ0ZXIudXRjX29mZnNldF9pbl9zZWNvbmRzIGJlZm9yZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgKGluZGV4ICsgMSlcbjs7XG5cbmxldCBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICByZWdpbWUuYWJicnZcbjs7XG5cbmxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzIHJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIFZhbGlkYXRlZF9pbnRmXG5cbm1vZHVsZSB0eXBlIFJhdyA9IFJhd1xuXG50eXBlICgncmF3LCAnd2l0bmVzcykgdCA9ICdyYXdcblxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTX2Jpbl9pbyA9IFNfYmluX2lvIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCA9XG4gIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5sZXQgcmF3IHQgPSB0XG5cbm1vZHVsZSBNYWtlIChSYXcgOiBSYXcpID0gc3RydWN0XG4gIHR5cGUgd2l0bmVzc1xuICB0eXBlIHQgPSBSYXcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yID1cbiAgICBFcnJvci5jcmVhdGVcbiAgICAgIFwidmFsaWRhdGlvbiBmYWlsZWRcIlxuICAgICAgKHQsIGVycm9yLCBSYXcuaGVyZSlcbiAgICAgIFslc2V4cF9vZjogUmF3LnQgKiBFcnJvci50ICogU291cmNlX2NvZGVfcG9zaXRpb24udF1cbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biB0ID1cbiAgICBtYXRjaCBWYWxpZGF0ZS5yZXN1bHQgKFJhdy52YWxpZGF0ZSB0KSB3aXRoXG4gICAgfCBPayAoKSAtPiB0XG4gICAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5yYWlzZSAodmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvcilcbiAgOztcblxuICBsZXQgY3JlYXRlIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rIHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9IGNyZWF0ZV9leG4gKFJhdy50X29mX3NleHAgc2V4cClcbiAgbGV0IHJhdyB0ID0gdFxuZW5kXG5cbm1vZHVsZSBBZGRfYmluX2lvIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChWYWxpZGF0ZWQgOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgKFJhdylcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gUmF3LnRcblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSByYXcgPVxuICAgICAgICAgIGlmIFJhdy52YWxpZGF0ZV9iaW5pb19kZXNlcmlhbGl6YXRpb24gdGhlbiBWYWxpZGF0ZWQuY3JlYXRlX2V4biByYXcgZWxzZSByYXdcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICBlbmQpXG5lbmRcblxubW9kdWxlIEFkZF9jb21wYXJlIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBbJWNvbXBhcmU6IFJhdy50XSAocmF3IHQxKSAocmF3IHQyKVxuZW5kXG5cbm1vZHVsZSBBZGRfaGFzaCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSYXcuaGFzaF9mb2xkX3Qgc3RhdGUgKFZhbGlkYXRlZC5yYXcgdClcbiAgbGV0IGhhc2ggdCA9IFJhdy5oYXNoIChWYWxpZGF0ZWQucmF3IHQpXG5lbmRcblxubW9kdWxlIEFkZF90eXBlcmVwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChSYXcgOiBSYXdfYmluX2lvKSA9IHN0cnVjdFxuICBtb2R1bGUgVDAgPSBNYWtlIChSYXcpXG4gIGluY2x1ZGUgVDBcbiAgaW5jbHVkZSBBZGRfYmluX2lvIChSYXcpIChUMClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBNYWtlX2JpbmFibGUgKFJhdylcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQWRkX2NvbXBhcmUgKFJhdykgKFQpXG5cbiAgaW5jbHVkZSAoXG4gICAgQWRkX2hhc2ggKFJhdykgKFQpIDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcbiIsImluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBpbmNsdWRlIElkXG5cbiAgbW9kdWxlIFVpZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcHN0cmVhbSA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcbiAgICBpbmNsdWRlIEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuRXh0ZW5kXG4gICAgICAgIChVcHN0cmVhbSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWQudCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFVwc3RyZWFtKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBVbml2X21hcF9pbnRmXG5tb2R1bGUgVWlkID0gVHlwZV9lcXVhbC5JZC5VaWRcblxubW9kdWxlIE1ha2UxXG4gICAgKEtleSA6IEtleSkgKERhdGEgOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICgncywgJ2EpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogQSB3cmFwcGVyIGZvciB0aGUgW0tleV0gbW9kdWxlIHRoYXQgYWRkcyBhIGR5bmFtaWMgY2hlY2sgdG8gW0tleS50eXBlX2lkXS5cblxuICAgICBJdCdzIGEgYnVnIGlmIHRoZSB1c2VyLXByb3ZpZGVkIFtLZXkudHlwZV9pZF0gZ2l2ZXMgZGlmZmVyZW50IHR5cGUgaWRzIG9uIGRpZmZlcmVudFxuICAgICBjYWxscy4gIEJlY2F1c2UgdGhpcyBjaGVjayBzaG91bGQgYmUgZmFpcmx5IGNoZWFwLCB3ZSBkbyBpdCBkeW5hbWljYWxseSB0byBhdm9pZFxuICAgICBzdWJ0bGVyIHByb2JsZW1zIGxhdGVyLlxuXG4gICAgIE9mIGNvdXJzZSwgd2UncmUgbm90IGNoZWNraW5nIHRydWx5IHBhdGhvbG9naWNhbCB0aGluZ3MgbGlrZSB0aGUgcHJvdmlkZWRcbiAgICAgW0tleS50eXBlX2lkXSBvbmx5IGNoYW5nZXMgdGhlIHZhbHVlIGl0IHJldHVybnMgb24gZXZlcnkgdGhpcmQgY2FsbC4uLiAqKVxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgS2V5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIHRlc3QtZnJpZW5kbHkgc2V4cCBjb252ZXJzaW9uICopXG4gICAgbGV0IHNleHBfb2ZfdHlwZV9pZCB0eXBlX2lkID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IG5hbWUgPSAoVHlwZV9lcXVhbC5JZC5uYW1lIHR5cGVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDsgdWlkID1cbiAgICAgICAgICAgICgoaWYgYW1fcnVubmluZ19pbmxpbmVfdGVzdFxuICAgICAgICAgICAgICB0aGVuIFNleHAuQXRvbSBcIjx1aWQ+XCJcbiAgICAgICAgICAgICAgZWxzZSBUeXBlX2VxdWFsLklkLlVpZC5zZXhwX29mX3QgKFR5cGVfZXF1YWwuSWQudWlkIHR5cGVfaWQpKSA6IFNleHAudClcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWQga2V5ID1cbiAgICAgIGxldCB0eXBlX2lkMSA9IEtleS50eXBlX2lkIGtleSBpblxuICAgICAgbGV0IHR5cGVfaWQyID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBpZiBUeXBlX2VxdWFsLklkLnNhbWUgdHlwZV9pZDEgdHlwZV9pZDJcbiAgICAgIHRoZW4gdHlwZV9pZDFcbiAgICAgIGVsc2VcbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbS2V5LnR5cGVfaWRdIG11c3Qgbm90IHByb3ZpZGUgZGlmZmVyZW50IHR5cGUgaWRzIHdoZW4gY2FsbGVkIG9uIHRoZSBzYW1lIFxcXG4gICAgICAgICAgICAgaW5wdXRcIlxuICAgICAgICAgICAgICAoa2V5IDogXyBLZXkudClcbiAgICAgICAgICAgICAgKHR5cGVfaWQxIDogdHlwZV9pZClcbiAgICAgICAgICAgICAgKHR5cGVfaWQyIDogdHlwZV9pZCldXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAoJ3MsICdhKSBkYXRhID0gKCdzLCAnYSkgRGF0YS50XG5cbiAgbGV0IG5hbWVfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQubmFtZSAoS2V5LnR5cGVfaWQga2V5KVxuICBsZXQgdWlkX29mX2tleSBrZXkgPSBUeXBlX2VxdWFsLklkLnVpZCAoS2V5LnR5cGVfaWQga2V5KVxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdzIHQgPSBUIDogJ2EgS2V5LnQgKiAoJ3MsICdhKSBEYXRhLnQgLT4gJ3MgdFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgKFQgKGtleSwgZGF0YSkpID1cbiAgICAgIERhdGEuc2V4cF9vZl90IHNleHBfb2ZfYSAoVHlwZV9lcXVhbC5JZC50b19zZXhwIChLZXkudHlwZV9pZCBrZXkpKSBkYXRhXG4gICAgOztcblxuICAgIGxldCB0eXBlX2lkX25hbWUgKFQgKGtleSwgXykpID0gbmFtZV9vZl9rZXkga2V5XG4gICAgbGV0IHR5cGVfaWRfdWlkIChUIChrZXksIF8pKSA9IHVpZF9vZl9rZXkga2V5XG5cbiAgICBsZXQgY29tcGFyZSB0MSB0MiA9XG4gICAgICBsZXQgYyA9IFN0cmluZy5jb21wYXJlICh0eXBlX2lkX25hbWUgdDEpICh0eXBlX2lkX25hbWUgdDIpIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgVWlkLmNvbXBhcmUgKHR5cGVfaWRfdWlkIHQxKSAodHlwZV9pZF91aWQgdDIpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAncyB0ID0gJ3MgUGFja2VkLnQgVWlkLk1hcC50XG5cbiAgbGV0IHRvX2FsaXN0IHQgPSBNYXAuZGF0YSB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTpQYWNrZWQuY29tcGFyZVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIHRvX2FsaXN0IHRcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHBhY2tlZCAtPiBQYWNrZWQudHlwZV9pZF9uYW1lIHBhY2tlZCwgcGFja2VkKVxuICAgIHw+IFslc2V4cF9vZjogKHN0cmluZyAqIGEgUGFja2VkLnQpIGxpc3RdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAodCA6IF8gdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBNYXAuaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgYXNzZXJ0IChVaWQuZXF1YWwga2V5IChQYWNrZWQudHlwZV9pZF91aWQgZGF0YSkpKSlcbiAgOztcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9IE1hcC5zZXQgdCB+a2V5Oih1aWRfb2Zfa2V5IGtleSkgfmRhdGE6KFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICBsZXQgbWVtX2J5X2lkIHQgaWQgPSBNYXAubWVtIHQgaWRcbiAgbGV0IG1lbSB0IGtleSA9IG1lbV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IHJlbW92ZV9ieV9pZCB0IGlkID0gTWFwLnJlbW92ZSB0IGlkXG4gIGxldCByZW1vdmUgdCBrZXkgPSByZW1vdmVfYnlfaWQgdCAodWlkX29mX2tleSBrZXkpXG4gIGxldCBlbXB0eSA9IFVpZC5NYXAuZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiBrZXkgZGF0YSA9IFVpZC5NYXAuc2luZ2xldG9uICh1aWRfb2Zfa2V5IGtleSkgKFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICBsZXQgaXNfZW1wdHkgPSBNYXAuaXNfZW1wdHlcblxuICBsZXQgZmluZCAodHlwZSBiKSB0IChrZXkgOiBiIEtleS50KSA9XG4gICAgbWF0Y2ggTWFwLmZpbmQgdCAodWlkX29mX2tleSBrZXkpIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAoUGFja2VkLlQgKGtleScsIHZhbHVlKSkgLT5cbiAgICAgICgqIGNhbm5vdCByYWlzZSAtLSBzZWUgW2ludmFyaWFudF0gKilcbiAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGtleSkgKEtleS50eXBlX2lkIGtleScpXG4gICAgICBpblxuICAgICAgU29tZSAodmFsdWUgOiAoXywgYikgRGF0YS50KVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gZGF0YVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJVbml2X21hcC5maW5kX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPSBpZiBtZW0gdCBrZXkgdGhlbiBgRHVwbGljYXRlIGVsc2UgYE9rIChzZXQgdCB+a2V5IH5kYXRhKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBgT2sgdCAtPiB0XG4gICAgfCBgRHVwbGljYXRlIC0+IGZhaWx3aXRoZiBcIlVuaXZfbWFwLmFkZF9leG4gb24gZXhpc3Rpbmcga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgY2hhbmdlX2V4biB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGE6KHVwZGF0ZSBkYXRhKVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJVbml2X21hcC5jaGFuZ2VfZXhuIG9uIHVua25vd24ga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mOnVwZGF0ZSA9XG4gICAgbGV0IG9yaWcgPSBmaW5kIHQga2V5IGluXG4gICAgbGV0IG5leHQgPSB1cGRhdGUgb3JpZyBpblxuICAgIG1hdGNoIG5leHQgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICB8IE5vbmUgLT4gaWYgT3B0aW9uLmlzX25vbmUgb3JpZyB0aGVuIHQgZWxzZSByZW1vdmUgdCBrZXlcbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mID0gY2hhbmdlIHQga2V5IH5mOihmdW4gZGF0YSAtPiBTb21lIChmIGRhdGEpKVxuXG4gIGxldCBvZl9hbGlzdF9leG4gdCA9XG4gICAgVWlkLk1hcC5vZl9hbGlzdF9leG4gKExpc3QubWFwIHQgfmY6KGZ1biBwIC0+IFBhY2tlZC50eXBlX2lkX3VpZCBwLCBwKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBNID1cbiAgICBNYWtlMVxuICAgICAgKEtleSlcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgJ2EpIHQgPSAnYSBEYXRhLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZClcblxuICB0eXBlIHQgPSB1bml0IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBLZXkgPSBLZXlcblxuICB0eXBlICdhIGRhdGEgPSAnYSBEYXRhLnRcblxuICBsZXQgaW52YXJpYW50ID0gTS5pbnZhcmlhbnRcbiAgbGV0IGVtcHR5ID0gTS5lbXB0eVxuICBsZXQgc2luZ2xldG9uID0gTS5zaW5nbGV0b25cbiAgbGV0IGlzX2VtcHR5ID0gTS5pc19lbXB0eVxuICBsZXQgc2V0ID0gTS5zZXRcbiAgbGV0IG1lbSA9IE0ubWVtXG4gIGxldCBtZW1fYnlfaWQgPSBNLm1lbV9ieV9pZFxuICBsZXQgZmluZCA9IE0uZmluZFxuICBsZXQgZmluZF9leG4gPSBNLmZpbmRfZXhuXG4gIGxldCBhZGQgPSBNLmFkZFxuICBsZXQgYWRkX2V4biA9IE0uYWRkX2V4blxuICBsZXQgY2hhbmdlID0gTS5jaGFuZ2VcbiAgbGV0IGNoYW5nZV9leG4gPSBNLmNoYW5nZV9leG5cbiAgbGV0IHVwZGF0ZSA9IE0udXBkYXRlXG4gIGxldCByZW1vdmUgPSBNLnJlbW92ZVxuICBsZXQgcmVtb3ZlX2J5X2lkID0gTS5yZW1vdmVfYnlfaWRcblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCA6ICdhIEtleS50ICogJ2EgRGF0YS50IC0+IHRcbiAgZW5kXG5cbiAgbGV0IHRvX2FsaXN0IHQgPVxuICAgIExpc3QubWFwIChNLnRvX2FsaXN0IHQpIH5mOihmdW5jdGlvbiBNLlBhY2tlZC5UIChrZXksIGRhdGEpIC0+IFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gdCA9XG4gICAgTS5vZl9hbGlzdF9leG5cbiAgICAgIChMaXN0Lm1hcCB0IH5mOihmdW5jdGlvbiBQYWNrZWQuVCAoa2V5LCBkYXRhKSAtPiBNLlBhY2tlZC5UIChrZXksIGRhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWVyZ2UgKEtleSA6IEtleSkgKElucHV0MV9kYXRhIDogRGF0YSkgKElucHV0Ml9kYXRhIDogRGF0YSkgKE91dHB1dF9kYXRhIDogRGF0YSkgPVxuc3RydWN0XG4gIHR5cGUgZiA9XG4gICAgeyBmIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICAga2V5OidhIEtleS50XG4gICAgICAgIC0+IFsgYExlZnQgb2YgJ2EgSW5wdXQxX2RhdGEudFxuICAgICAgICAgICB8IGBSaWdodCBvZiAnYSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIHwgYEJvdGggb2YgJ2EgSW5wdXQxX2RhdGEudCAqICdhIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgXVxuICAgICAgICAtPiAnYSBPdXRwdXRfZGF0YS50IG9wdGlvblxuICAgIH1cblxuICBtb2R1bGUgT3V0cHV0ID0gTWFrZSAoS2V5KSAoT3V0cHV0X2RhdGEpXG5cbiAgbGV0IG1lcmdlICh0MSA6IE1ha2UoS2V5KShJbnB1dDFfZGF0YSkudCkgKHQyIDogTWFrZShLZXkpKElucHV0Ml9kYXRhKS50KSB+Zjp7IGYgfVxuICAgIDogTWFrZShLZXkpKE91dHB1dF9kYXRhKS50XG4gICAgPVxuICAgIGxldCBmIH5rZXkgbWVyZ2VfcmVzdWx0ID1cbiAgICAgIE9wdGlvbi5tYXAgKGYgfmtleSBtZXJnZV9yZXN1bHQpIH5mOihmdW4gZGF0YSAtPiBPdXRwdXQuTS5QYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgICBpblxuICAgIE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgTGVmdCBkYXRhKVxuICAgICAgfCBgUmlnaHQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYFJpZ2h0IGRhdGEpXG4gICAgICB8IGBCb3RoIChUIChsZWZ0X2tleSwgbGVmdF9kYXRhKSwgVCAocmlnaHRfa2V5LCByaWdodF9kYXRhKSkgLT5cbiAgICAgICAgKCogQ2FuJ3QgcmFpc2UgZHVlIHRvIHRoZSBpbnZhcmlhbnQgKilcbiAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBsZWZ0X2tleSkgKEtleS50eXBlX2lkIHJpZ2h0X2tleSlcbiAgICAgICAgaW5cbiAgICAgICAgZiB+a2V5OmxlZnRfa2V5IChgQm90aCAobGVmdF9kYXRhLCByaWdodF9kYXRhKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1lcmdlMVxuICAgIChLZXkgOiBLZXkpXG4gICAgKElucHV0MV9kYXRhIDogRGF0YTEpXG4gICAgKElucHV0Ml9kYXRhIDogRGF0YTEpXG4gICAgKE91dHB1dF9kYXRhIDogRGF0YTEpID1cbnN0cnVjdFxuICB0eXBlICgnczEsICdzMiwgJ3MzKSBmID1cbiAgICB7IGYgOlxuICAgICAgICAnYS5cbiAgICAgICAgICBrZXk6J2EgS2V5LnRcbiAgICAgICAgLT4gWyBgTGVmdCBvZiAoJ3MxLCAnYSkgSW5wdXQxX2RhdGEudFxuICAgICAgICAgICB8IGBSaWdodCBvZiAoJ3MyLCAnYSkgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICB8IGBCb3RoIG9mICgnczEsICdhKSBJbnB1dDFfZGF0YS50ICogKCdzMiwgJ2EpIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgXVxuICAgICAgICAtPiAoJ3MzLCAnYSkgT3V0cHV0X2RhdGEudCBvcHRpb25cbiAgICB9XG5cbiAgbW9kdWxlIE91dHB1dCA9IE1ha2UxIChLZXkpIChPdXRwdXRfZGF0YSlcblxuICBsZXQgbWVyZ2VcbiAgICAgICAgKHR5cGUgczEgczIpXG4gICAgICAgICh0MSA6IHMxIE1ha2UxKEtleSkoSW5wdXQxX2RhdGEpLnQpXG4gICAgICAgICh0MiA6IHMyIE1ha2UxKEtleSkoSW5wdXQyX2RhdGEpLnQpXG4gICAgICAgIH5mOnsgZiB9XG4gICAgPVxuICAgIGxldCBmIH5rZXkgbWVyZ2VfcmVzdWx0ID1cbiAgICAgIE9wdGlvbi5tYXAgKGYgfmtleSBtZXJnZV9yZXN1bHQpIH5mOihmdW4gZGF0YSAtPiBPdXRwdXQuUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gICAgaW5cbiAgICBNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYExlZnQgZGF0YSlcbiAgICAgIHwgYFJpZ2h0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBSaWdodCBkYXRhKVxuICAgICAgfCBgQm90aCAoVCAobGVmdF9rZXksIGxlZnRfZGF0YSksIFQgKHJpZ2h0X2tleSwgcmlnaHRfZGF0YSkpIC0+XG4gICAgICAgICgqIENhbid0IHJhaXNlIGR1ZSB0byB0aGUgaW52YXJpYW50ICopXG4gICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQgbGVmdF9rZXkpIChLZXkudHlwZV9pZCByaWdodF9rZXkpXG4gICAgICAgIGluXG4gICAgICAgIGYgfmtleTpsZWZ0X2tleSAoYEJvdGggKGxlZnRfZGF0YSwgcmlnaHRfZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUeXBlX2lkX2tleSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBUeXBlX2VxdWFsLklkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdHlwZV9pZCA9IEZuLmlkXG5lbmRcblxuaW5jbHVkZSAoXG4gIE1ha2VcbiAgICAoVHlwZV9pZF9rZXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmQpIDpcbiAgICBTIHdpdGggdHlwZSAnYSBkYXRhID0gJ2EgYW5kIG1vZHVsZSBLZXkgOj0gVHlwZV9pZF9rZXkpXG5cbm1vZHVsZSBLZXkgPSBUeXBlX2VxdWFsLklkXG5cbm1vZHVsZSBXaXRoX2RlZmF1bHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGtleSA6ICdhIFR5cGVfZXF1YWwuSWQudFxuICAgICAgOyBkZWZhdWx0IDogJ2FcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgfmRlZmF1bHQgfm5hbWUgc2V4cF9vZiA9XG4gICAgICB7IGRlZmF1bHQ7IGtleSA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lIHNleHBfb2YgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgdCA9IHQua2V5XG4gIGVuZFxuXG4gIGxldCBmaW5kIHQgeyBLZXkua2V5OyBkZWZhdWx0IH0gPSBPcHRpb24udmFsdWUgfmRlZmF1bHQgKGZpbmQgdCBrZXkpXG4gIGxldCBzZXQgdCB+a2V5OnsgS2V5LmtleTsgZGVmYXVsdCA9IF8gfSB+ZGF0YSA9IHNldCB0IH5rZXkgfmRhdGFcbiAgbGV0IGNoYW5nZSB0IGtleSB+Zjp1cGRhdGUgPSBzZXQgdCB+a2V5IH5kYXRhOih1cGRhdGUgKGZpbmQgdCBrZXkpKVxuZW5kXG5cbm1vZHVsZSBXaXRoX2ZvbGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB7IGtleSA6ICdiIFdpdGhfZGVmYXVsdC5LZXkudFxuICAgICAgOyBmIDogJ2IgLT4gJ2EgLT4gJ2JcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgfmluaXQgfmYgfm5hbWUgc2V4cF9vZiA9XG4gICAgICB7IGY7IGtleSA9IFdpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OmluaXQgfm5hbWUgc2V4cF9vZiB9XG4gICAgOztcblxuICAgIGxldCBpZCB0ID0gV2l0aF9kZWZhdWx0LktleS5pZCB0LmtleVxuICBlbmRcblxuICBsZXQgZmluZCB0IHsgS2V5LmtleTsgZiA9IF8gfSA9IFdpdGhfZGVmYXVsdC5maW5kIHQga2V5XG4gIGxldCBzZXQgdCB+a2V5OnsgS2V5LmtleTsgZiA9IF8gfSB+ZGF0YSA9IFdpdGhfZGVmYXVsdC5zZXQgdCB+a2V5IH5kYXRhXG4gIGxldCBjaGFuZ2UgdCB7IEtleS5rZXk7IGYgPSBfIH0gfmY6dXBkYXRlID0gV2l0aF9kZWZhdWx0LmNoYW5nZSB0IGtleSB+Zjp1cGRhdGVcblxuICBsZXQgYWRkIHQgfmtleTp7IEtleS5rZXk7IGYgfSB+ZGF0YSA9XG4gICAgV2l0aF9kZWZhdWx0LmNoYW5nZSB0IGtleSB+ZjooZnVuIGFjYyAtPiBmIGFjYyBkYXRhKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuICBvcGVuIFdpdGhfZm9sZFxuXG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsICdhIGxpc3QpIEtleS50XG5cbiAgICBsZXQgY3JlYXRlIH5uYW1lIHNleHBfb2YgPVxuICAgICAgS2V5LmNyZWF0ZSB+aW5pdDpbXSB+ZjooZnVuIHhzIHggLT4geCA6OiB4cykgfm5hbWUgKExpc3Quc2V4cF9vZl90IHNleHBfb2YpXG4gICAgOztcblxuICAgIGxldCBpZCA9IFdpdGhfZm9sZC5LZXkuaWRcbiAgZW5kXG5cbiAgbGV0IHNldCA9IHNldFxuICBsZXQgZmluZCA9IGZpbmRcbiAgbGV0IGFkZCA9IGFkZFxuICBsZXQgY2hhbmdlID0gY2hhbmdlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kXG4gIHwgTWludXRlXG4gIHwgSG91clxuICB8IERheVxuW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoXVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBVbmlxdWVfaWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBJZCA9IElkXG5cbigqIE9ubHkgXCJtYWtlXCIgY2FuIGNhdXNlIGEgY29udGV4dC1zd2l0Y2ggdGhhdCBtaWdodCBsZWFkIHRvIGEgcmFjZS5cbiAgIFRodXMgd2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiB0aGUgY2VsbCByZW1haW5lZFxuICAgdW5jaGFuZ2VkIGFjcm9zcyB0aGlzIGNhbGwuICBUaGUgc3Vic2VxdWVudCBjb21wYXJpc29uLCBkZXJlZmVyZW5jaW5nXG4gICBhbmQgYXNzaWdubWVudCBjYW5ub3QgY2F1c2UgY29udGV4dCBzd2l0Y2hlcy4gIElmIHRoZSBjb250ZW50cyBvZiB0aGVcbiAgIGNlbGwgaGFkIGNoYW5nZWQsIHdlIHdpbGwgaGF2ZSB0byB0cnkgYWdhaW4gdG8gb2J0YWluIGEgdW5pcXVlIGlkLlxuICAgVGhpcyBpcyBlc3NlbnRpYWxseSBsaWtlIGEgc3Bpbi1sb2NrIGFuZCBpcyB2aXJ0dWFsbHkgZ3VhcmFudGVlZCB0b1xuICAgc3VjY2VlZCBxdWlja2x5LiAqKVxubGV0IHJlYyByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlID1cbiAgbGV0IHggPSAhY2VsbCBpblxuICBsZXQgbmV3X3ggPSBtYWtlIHggaW5cbiAgaWYgcGh5c19lcXVhbCAhY2VsbCB4XG4gIHRoZW4gKFxuICAgIGNlbGwgOj0gbmV3X3g7XG4gICAgeClcbiAgZWxzZSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlXG47O1xuXG5tb2R1bGUgSW50ICgpID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG5cbm1vZHVsZSBJbnQ2MyAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludDYzXG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB2ZXJ5IG11Y2ggZGVwZW5kZW50IG9uIHRoZSBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcy4gIFNob3VsZCB0aGVcbiAgIHdheSB0aGUgY29tcGlsZXIgcmVwcmVzZW50cyB2YXJpb3VzIHR5cGVzIGNoYW5nZSwgaXQgbmVlZHMgdG8gYmUgcmVmbGVjdGVkIGluIHRoaXNcbiAgIG1vZHVsZSwgb3RoZXJ3aXNlIGJhZCB0aGluZ3MgY291bGQgaGFwcGVuLiAgVGhlcmVmb3JlIHRoZSBjb252ZXJzaW9ucyBhbmRcbiAgIHJlcHJlc2VudGF0aW9ucyBhcmUgdGVzdGVkIHRob3JvdWdobHkgaW4gWy4uL3Rlc3QvdGVzdF93aXRuZXNzLm1sXSBhbmRcbiAgIFsuLi90ZXN0L3Rlc3RfY29udmVyc2lvbnMubWxdXG4qKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgSGFzaF9zZXQgPSBCYXNlLkhhc2hfc2V0XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAoKiBUaGUgaW50ZWdlcnMgaGVyZSBhcmUgdGhlIHZhbHVlcyB1bmRlcmx5aW5nIHRoZSBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhleSBhbHJlYWR5XG4gICAgIGFyZSBoYXNoZXMgb2YgY29uc3RydWN0b3IgbmFtZXMsIGFuZCBoZW5jZSBhcmUgZXhwZWN0ZWQgdG8gYmUgdW5pZm9ybWx5XG4gICAgIGRpc3RyaWJ1dGVkLiAqKVxuICBsZXQgaGFzaCB4ID0geFxuZW5kXG5cbm1vZHVsZSBBbGxvd2VkX2ludHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vbmVcbiAgICB8IEFsbFxuICAgIHwgSGFzaF9zZXQgb2YgSGFzaF9zZXQuTShLZXkpLnRcbiAgICB8IEZyb21femVyb190byBvZiBpbnRcblxuICBsZXQgX2ludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIHwgQWxsIHwgSGFzaF9zZXQgXyAtPiAoKVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gYXNzZXJ0IChuID49IDApXG4gIDs7XG5cbiAgbGV0IGludF9pc192YWx1ZSB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgQWxsIC0+IHRydWVcbiAgICB8IEhhc2hfc2V0IGhhc2hfc2V0IC0+IEhhc2hfc2V0Lm1lbSBoYXNoX3NldCBpXG4gICAgfCBGcm9tX3plcm9fdG8gbiAtPiAwIDw9IGkgJiYgaSA8PSBuXG4gIDs7XG5lbmRcblxubW9kdWxlIEltbWVkaWFjeSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWx3YXlzXG4gICAgfCBTb21ldGltZXNcbiAgICB8IE5ldmVyXG4gICAgfCBVbmtub3duXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQWx3YXlzIC0+IFwiQWx3YXlzXCJcbiAgICB8IFNvbWV0aW1lcyAtPiBcIlNvbWV0aW1lc1wiXG4gICAgfCBOZXZlciAtPiBcIk5ldmVyXCJcbiAgICB8IFVua25vd24gLT4gXCJVbmtub3duXCJcbiAgOztcbmVuZFxuXG5vcGVuIEltbWVkaWFjeVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogJ2EgVHlwZW5hbWUudCAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfd2l0aF9uYW1lIDogc3RyaW5nIC0+IEltbWVkaWFjeS50IC0+IEFsbG93ZWRfaW50cy50IC0+IF8gdFxuICB2YWwgaW1tZWRpYWN5IDogXyB0IC0+IEltbWVkaWFjeS50XG4gIHZhbCBhbGxvd2VkX2ludHMgOiBfIHQgLT4gQWxsb3dlZF9pbnRzLnRcbiAgdmFsIHR5cGVuYW1lIDogXyB0IC0+IHN0cmluZ1xuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgOiBzaWdcbiAgICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gICAgdmFsIGludDY0IDogaW50NjQgdFxuICAgIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gICAgdmFsIGFycmF5IDogXyBhcnJheSB0XG4gICAgdmFsIHJlZl8gOiBfIHJlZiB0XG4gICAgdmFsIHR1cGxlMiA6IChfICogXykgdFxuICAgIHZhbCB0dXBsZTMgOiAoXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNCA6IChfICogXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNSA6IChfICogXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCBmdW5jdGlvbl8gOiAoXyAtPiBfKSB0XG4gIGVuZFxuXG4gIHZhbCBuZXZlciA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgdW5rbm93biA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgb3B0aW9uIDogXyB0XG4gIHZhbCBsaXN0IDogXyB0XG4gIHZhbCBtYWdpYyA6IF8gdCAtPiBfIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRfID1cbiAgICB7IGltbWVkaWFjeSA6IEltbWVkaWFjeS50XG4gICAgOyBhbGxvd2VkX2ludHMgOiBBbGxvd2VkX2ludHMudFxuICAgIDsgdHlwZW5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gdF9cblxuICBsZXQgY3JlYXRlX3dpdGhfbmFtZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICB7IGltbWVkaWFjeTsgYWxsb3dlZF9pbnRzOyB0eXBlbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICBjcmVhdGVfd2l0aF9uYW1lIChUeXBlbmFtZS5uYW1lIHR5cGVuYW1lKSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzXG4gIDs7XG5cbiAgbGV0IGltbWVkaWFjeSB0ID0gdC5pbW1lZGlhY3lcbiAgbGV0IGFsbG93ZWRfaW50cyB0ID0gdC5hbGxvd2VkX2ludHNcbiAgbGV0IHR5cGVuYW1lIHQgPSB0LnR5cGVuYW1lXG4gIGxldCBtYWdpYyB0ID0gdFxuICBsZXQgbmV2ZXJfd2l0aF9uYW1lIG5hbWUgPSBjcmVhdGVfd2l0aF9uYW1lIG5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgbmV2ZXIgdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgdW5rbm93biB0eXBlbmFtZSA9IGNyZWF0ZSB0eXBlbmFtZSBVbmtub3duIE5vbmVcblxuICBsZXQgb3B0aW9uID0gY3JlYXRlX3dpdGhfbmFtZSBcIm9wdGlvblwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuICBsZXQgbGlzdCA9IGNyZWF0ZV93aXRoX25hbWUgXCJsaXN0XCIgU29tZXRpbWVzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5cbiAgbW9kdWxlIE5ldmVyX3ZhbHVlcyA9IHN0cnVjdFxuICAgICgqIGludDMyIGlzIGJveGVkIGV2ZW4gb24gNjRiIHBsYXRmb3JtIGF0IHRoZSBtb21lbnQuICopXG4gICAgbGV0IGludDMyID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50MzJcbiAgICBsZXQgaW50NjQgPSBuZXZlciB0eXBlbmFtZV9vZl9pbnQ2NFxuICAgIGxldCBuYXRpdmVpbnQgPSBuZXZlciB0eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICBsZXQgZmxvYXQgPSBuZXZlciB0eXBlbmFtZV9vZl9mbG9hdFxuICAgIGxldCBzdHJpbmcgPSBuZXZlciB0eXBlbmFtZV9vZl9zdHJpbmdcbiAgICBsZXQgYnl0ZXMgPSBuZXZlciB0eXBlbmFtZV9vZl9ieXRlc1xuICAgIGxldCBhcnJheSA9IG5ldmVyX3dpdGhfbmFtZSBcImFycmF5XCJcbiAgICBsZXQgcmVmXyA9IG5ldmVyX3dpdGhfbmFtZSBcInJlZlwiXG4gICAgbGV0IHR1cGxlMiA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlMlwiXG4gICAgbGV0IHR1cGxlMyA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlM1wiXG4gICAgbGV0IHR1cGxlNCA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNFwiXG4gICAgbGV0IHR1cGxlNSA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNVwiXG5cbiAgICBsZXQgZnVuY3Rpb25fID0gbmV2ZXJfd2l0aF9uYW1lIFwiZnVuY3Rpb25cIlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9pbnQgQWx3YXlzIEFsbG93ZWRfaW50cy5BbGxcbmxldCB1bml0ID0gY3JlYXRlIHR5cGVuYW1lX29mX3VuaXQgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5sZXQgYm9vbCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9ib29sIEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAxKVxubGV0IGNoYXIgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfY2hhciBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMjU1KVxuXG5tb2R1bGUgQ29tcHV0YXRpb25faW1wbCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljLlZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcblxuICBsZXQgcmVmXyBfID0gcmVmX1xuICBsZXQgYXJyYXkgXyA9IGFycmF5XG4gIGxldCB0dXBsZTIgXyBfID0gdHVwbGUyXG4gIGxldCB0dXBsZTMgXyBfIF8gPSB0dXBsZTNcbiAgbGV0IHR1cGxlNCBfIF8gXyBfID0gdHVwbGU0XG4gIGxldCB0dXBsZTUgXyBfIF8gXyBfID0gdHVwbGU1XG4gIGxldCBmdW5jdGlvbl8gXyBfID0gZnVuY3Rpb25fXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbiAgbGV0IG9wdGlvbiBfID0gb3B0aW9uXG4gIGxldCBsaXN0IF8gPSBsaXN0XG5cbiAgKCogQW4gW2EgTGF6eS50XSBtaWdodCBiZSBhIGJveGVkIGNsb3N1cmUsIHNvIG11c3QgaGF2ZSBpbW1lZGlhY3kgZWl0aGVyIFtOZXZlcl0gb3JcbiAgICAgW1NvbWV0aW1lc10uICBBbiBbYSBMYXp5LnRdIHZhbHVlIGNvdWxkIGJlIGltbWVkaWF0ZSBpZiBbYV0gaXMgaW1tZWRpYXRlLiAgQnV0IGlmIFthXVxuICAgICBpcyBuZXZlciBpbW1lZGlhdGUsIHRoZW4gW2EgTGF6eS50XSBjYW5ub3QgYmUuICopXG4gIGxldCBsYXp5X3QgdCA9XG4gICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgICB8IE5ldmVyIC0+IE5ldmVyXG4gICAgICB8IFVua25vd24gLT4gVW5rbm93blxuICAgICAgfCBTb21ldGltZXMgfCBBbHdheXMgLT4gU29tZXRpbWVzXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9uYW1lIFwibGF6eV90XCIgaW1tZWRpYWN5IChhbGxvd2VkX2ludHMgdClcbiAgOztcblxuICBsZXQgcG9zc2libHlfdW5ib3hlZCB0eXBlbmFtZSBjaGlsZF90eXBlID1cbiAgICBtYXRjaCBpbW1lZGlhY3kgY2hpbGRfdHlwZSB3aXRoXG4gICAgfCBOZXZlciAtPiBuZXZlciB0eXBlbmFtZVxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IFNvbWV0aW1lcyAtPiB1bmtub3duIHR5cGVuYW1lXG4gIDs7XG5cbiAgbGV0IHJlY29yZCByID1cbiAgICBpZiBSZWNvcmQubGVuZ3RoIHIgPiAxXG4gICAgdGhlbiBuZXZlciAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcilcbiAgICBlbHNlIChcbiAgICAgIGxldCAoRmllbGQgdGhlX29ubHlfZmllbGQpID0gUmVjb3JkLmZpZWxkIHIgMCBpblxuICAgICAgcG9zc2libHlfdW5ib3hlZCAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcikgKEZpZWxkLnRyYXZlcnNlIHRoZV9vbmx5X2ZpZWxkKSlcbiAgOztcblxuICAoKiBWYXJpYW50cyB3aXRoIGFsbCBjb25zdHJ1Y3RvcnMgaGF2aW5nIG5vIGFyZ3VtZW50cyBhcmUgYWx3YXlzIGltbWVkaWF0ZTsgdmFyaWFudHNcbiAgICAgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBzb21lIGFyZ3VtZW50cyBhcmUgbmV2ZXIgaW1tZWRpYXRlOyBtaXhlZCB2YXJpYW50cyBhcmVcbiAgICAgc29tZXRpbWVzIGltbWVkaWF0ZS5cblxuICAgICBJZiBhIHZhcmlhbnQgaGFzIGEgc2luZ2xlIGNvbnN0cnVjdG9yLCBhbmQgdGhlIGNvbnN0cnVjdG9yIGhhcyBhbiBhcmd1bWVudCwgdGhlXG4gICAgIHZhcmlhbnQgY2FuIGJlIHVuYm94ZWQuIElmIHVuYm94ZWQsIGVpdGhlciBleHBsaWNpdGx5IG9yIGJ5IGRlZmF1bHQgKGRlcGVuZGluZyBvblxuICAgICBjb21waWxlciBzZXR0aW5ncyksIHRoZSByZXByZXNlbnRhdGlvbiBpcyBzaW1wbHkgdGhlIGFyZ3VtZW50LiBPdGhlcndpc2UsIHRoZSBydWxlc1xuICAgICBhYm92ZSBhcHBseSBub3JtYWxseS4gKilcbiAgbGV0IHZhcmlhbnQgdmFyaWFudCA9XG4gICAgbGV0IG5vX2FyZ19saXN0LCBvbmVfYXJnX2xpc3QsIG1vcmVfYXJnX2xpc3QgPVxuICAgICAgVmFyaWFudC5mb2xkIHZhcmlhbnQgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKG5vLCBvbmUsIG1vcmUpIChUYWcgdCBhcyB0YWcpIC0+XG4gICAgICAgIG1hdGNoIFRhZy5hcml0eSB0IHdpdGhcbiAgICAgICAgfCAwIC0+IHRhZyA6OiBubywgb25lLCBtb3JlXG4gICAgICAgIHwgMSAtPiBubywgdGFnIDo6IG9uZSwgbW9yZVxuICAgICAgICB8IF8gLT4gbm8sIG9uZSwgdGFnIDo6IG1vcmUpXG4gICAgaW5cbiAgICBtYXRjaCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0IHdpdGhcbiAgICB8IFtdLCBbIFRhZyB0YWcgXSwgW10gd2hlbiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCkgLT5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KSAoVGFnLnRyYXZlcnNlIHRhZylcbiAgICB8IFtdLCBbXSwgW10gLT5cbiAgICAgICgqIFdlIGRvbid0IGhhdmUgYW4gZXhwbGljdCB3YXkgb2Ygc2F5aW5nIGEgdHlwZSBpcyB1bmluaGFiaXRlZC4gKilcbiAgICAgIHVua25vd24gKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgW10sIF8gOjogXywgXyB8IFtdLCBfLCBfIDo6IF8gLT4gbmV2ZXIgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgXyA6OiBfLCBfLCBfIC0+XG4gICAgICBsZXQgbm9fYXJnX2NvdW50ID0gTGlzdC5sZW5ndGggbm9fYXJnX2xpc3QgaW5cbiAgICAgIGxldCBhbGxvd2VkX2ludHMgPVxuICAgICAgICBpZiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudClcbiAgICAgICAgdGhlbiBBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIChub19hcmdfY291bnQgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgaGFzaF9zZXQgPSBIYXNoX3NldC5jcmVhdGUgKG1vZHVsZSBLZXkpIH5zaXplOihub19hcmdfY291bnQgKiAyKSBpblxuICAgICAgICAgIExpc3QuaXRlciBub19hcmdfbGlzdCB+ZjooZnVuIChUYWcgdGFnKSAtPlxuICAgICAgICAgICAgbWF0Y2ggVGFnLmNyZWF0ZSB0YWcgd2l0aFxuICAgICAgICAgICAgfCBUYWcuQ29uc3QgXyAtPiBIYXNoX3NldC5hZGQgaGFzaF9zZXQgKFRhZy5vY2FtbF9yZXByIHRhZylcbiAgICAgICAgICAgIHwgVGFnLkFyZ3MgXyAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgIEFsbG93ZWRfaW50cy5IYXNoX3NldCBoYXNoX3NldClcbiAgICAgIGluXG4gICAgICBsZXQgaW1tZWRpYWN5ID1cbiAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBvbmVfYXJnX2xpc3QgJiYgTGlzdC5pc19lbXB0eSBtb3JlX2FyZ19saXN0XG4gICAgICAgIHRoZW4gQWx3YXlzXG4gICAgICAgIGVsc2UgU29tZXRpbWVzXG4gICAgICBpblxuICAgICAgY3JlYXRlIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBuYW1lID0gXCJpc19pbW1lZGlhdGVcIlxuICBsZXQgcmVxdWlyZWQgPSBbXVxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSAoKVxuICAgIGVuZFxuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgcmVmXG5cbiAgICAoKiBUaGUgZGVmYXVsdCB3aXRuZXNzIC0gd2hpY2ggaXMgY3JlYXRlZCBieSBjYWxsaW5nIFtpbml0XSBhbmQgcmVjb3ZlcmVkIGF0IGFueSBsYXRlclxuICAgICAgIHBvaW50IGJ5IGNhbGxpbmcgW2dldF93aXBfY29tcHV0YXRpb25dIC0gY2FuIG9ubHkgYmUgdXNlZCBpbiBhIHJlY3Vyc2l2ZSB0eXBlLlxuICAgICAgIE90aGVyIHR5cGVzIHRoYXQgZG9uJ3QgdXNlIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSB3aWxsIGp1c3QgZXZhbHVhdGUgdG8gdGhlIGFjdHVhbFxuICAgICAgIHdpdG5lc3Mgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBpbml0aWFsIGR1bW15IG9uZS4gKilcbiAgICBsZXQgaW5pdCBfIG5hbWUgPSByZWYgKGNyZWF0ZSBuYW1lIFNvbWV0aW1lcyBBbGxvd2VkX2ludHMuTm9uZSlcbiAgICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBjb21wID0gIWNvbXBcblxuICAgIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gciB0ID1cbiAgICAgIHIgOj0gdDtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IHNoYXJlIF8gPSB0cnVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gVHlwZV9nZW5lcmljLk1ha2UgKENvbXB1dGF0aW9uX2ltcGwpXG5cbmxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICBsZXQgKGBnZW5lcmljIHQpID0gR2VuZXJpYy5vZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgdFxuOztcblxubW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVycyAoTSA6IHNpZ1xuICAgIHZhbCBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgd2l0bmVzcyB0eXBlcmVwMSB0eXBlcmVwMiA9XG4gICAgbGV0IHQxID0gb2ZfdHlwZXJlcCB0eXBlcmVwMSBpblxuICAgIGxldCB0MiA9IG9mX3R5cGVyZXAgdHlwZXJlcDIgaW5cbiAgICBsZXQgaTEgPSBpbW1lZGlhY3kgdDEgaW5cbiAgICBsZXQgaTIgPSBpbW1lZGlhY3kgdDIgaW5cbiAgICBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBpMilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgaXMgbm90IGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSkpXG4gICAgZWxzZSBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBNLmltbWVkaWFjeSlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgZG9lcyBub3QgaGF2ZSBkZXNpcmVkIGltbWVkaWFjeTogd2FudGVkICVzIGJ1dCBnb3QgJXNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSlcbiAgICAgICAgICAgKEltbWVkaWFjeS50b19zdHJpbmcgTS5pbW1lZGlhY3kpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIGkxKSlcbiAgICBlbHNlIHQxXG4gIDs7XG5cbiAgKCogYWx3YXlzIGltbWVkaWF0ZSAqKVxuICBsZXQgcmEgPSBUeXBlcmVwLkludFxuXG4gICgqIG5ldmVyIGltbWVkaWF0ZSAqKVxuICBsZXQgcm4gPSBUeXBlcmVwLlN0cmluZ1xuXG4gICgqIEVhY2ggb2YgdGhlIFtGb3JfYWxsX3BhcmFtZXRlcnNfKl0gZnVuY3RvcnMgd29ya3MgYnkgaW5zdGFudGlhdGluZyB0aGUgbi1hcnkgdHlwZVxuICAgICB3aXRoIGFsbCBbQWx3YXlzXSB0eXBlcywgYW5kIHRoZW4gd2l0aCBhbGwgW05ldmVyXSB0eXBlcy4gIElmIHRob3NlIHByb2R1Y2UgdGhlIHNhbWVcbiAgICAgaW1tZWRpYWN5LCB0aGVuIHdlIGNvbmNsdWRlIHRoYXQgdGhlIG4tYXJ5IHR5cGUgaXMgaW5kZXBlbmRlbnQgb2YgaXRzIGFyZ3VtZW50cy4gKilcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MxIChYIDogVHlwZXJlcGFibGUuUzEpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSkgKFgudHlwZXJlcF9vZl90IHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MyIChYIDogVHlwZXJlcGFibGUuUzIpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MzIChYIDogVHlwZXJlcGFibGUuUzMpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M0IChYIDogVHlwZXJlcGFibGUuUzQpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M1IChYIDogVHlwZXJlcGFibGUuUzUpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcbmVuZFxuXG5sZXQgaW50X2lzX3ZhbHVlIHQgaW50ID0gQWxsb3dlZF9pbnRzLmludF9pc192YWx1ZSAoYWxsb3dlZF9pbnRzIHQpIGludFxuXG5sZXQgaW50X2FzX3ZhbHVlICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnQgdGhlbiBTb21lIChPYmoubWFnaWMgKGludCA6IGludCkgOiBhKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfYXNfdmFsdWVfZXhuICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnRcbiAgdGhlbiAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLmludF9hc192YWx1ZV9leG46IHR5cGVuYW1lOiVTIGludDolZFwiIChULnR5cGVuYW1lIHQpIGludClcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnRfZXhuICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcbiAgdGhlbiAoT2JqLm1hZ2ljIChhIDogYSkgOiBpbnQpXG4gIGVsc2UgZmFpbHdpdGggKHNwcmludGYgXCJJbW1lZGlhdGUudmFsdWVfYXNfaW50X2V4bjogdHlwZW5hbWU6JVNcIiAoVC50eXBlbmFtZSB0KSlcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPVxuICBpZiBPYmouaXNfaW50IChPYmoucmVwciBhKSB0aGVuIFNvbWUgKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KSBlbHNlIE5vbmVcbjs7XG5cbmxldCB2YWx1ZV9pc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPSBPYmouaXNfaW50IChPYmoucmVwciBhKVxuXG5tb2R1bGUgQWx3YXlzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IEFsd2F5c1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IEFsd2F5cyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBOZXZlciB8IFNvbWV0aW1lcyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXRbQGlubGluZSBhbHdheXNdIHZhbHVlX2FzX2ludCAodHlwZSBhKSBfIGEgPSBhIHw+IChPYmoubWFnaWMgOiBhIC0+IGludClcbiAgbGV0IGludCA9IGludFxuICBsZXQgY2hhciA9IGNoYXJcbiAgbGV0IGJvb2wgPSBib29sXG4gIGxldCB1bml0ID0gdW5pdFxuZW5kXG5cbm1vZHVsZSBTb21ldGltZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gU29tZXRpbWVzXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgU29tZXRpbWVzIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IE5ldmVyIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuICBsZXQgaW50X2FzX3ZhbHVlID0gaW50X2FzX3ZhbHVlXG4gIGxldCBpbnRfYXNfdmFsdWVfZXhuID0gaW50X2FzX3ZhbHVlX2V4blxuICBsZXQgaW50X2lzX3ZhbHVlID0gaW50X2lzX3ZhbHVlXG4gIGxldCB2YWx1ZV9hc19pbnQgPSB2YWx1ZV9hc19pbnRcbiAgbGV0IHZhbHVlX2FzX2ludF9leG4gPSB2YWx1ZV9hc19pbnRfZXhuXG4gIGxldCB2YWx1ZV9pc19pbnQgPSB2YWx1ZV9pc19pbnRcbiAgbGV0IG9wdGlvbiA9IG9wdGlvblxuICBsZXQgbGlzdCA9IGxpc3RcbmVuZFxuXG5tb2R1bGUgTmV2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gTmV2ZXJcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBOZXZlciAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcbmVuZFxuXG50eXBlICdhIGRlc3QgPVxuICB8IEFsd2F5cyBvZiAnYSBBbHdheXMudFxuICB8IFNvbWV0aW1lcyBvZiAnYSBTb21ldGltZXMudFxuICB8IE5ldmVyIG9mICdhIE5ldmVyLnRcbiAgfCBVbmtub3duXG5cbmxldCBkZXN0IHQgPVxuICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gIHwgQWx3YXlzIC0+IEFsd2F5cyB0XG4gIHwgU29tZXRpbWVzIC0+IFNvbWV0aW1lcyB0XG4gIHwgTmV2ZXIgLT4gTmV2ZXIgdFxuICB8IFVua25vd24gLT4gVW5rbm93blxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUMSA6IFQpIChUMiA6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IFQxLnQgKiBUMi50XG5lbmRcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiA9IGEsIGJcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiAtPiBmIChhLCBiKVxuICA7O1xuXG4gIGxldCB1bmN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biAoYSwgYikgLT4gZiBhIGJcbiAgOztcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXykgdCAtPiAnYSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EpIHQgLT4gJ2EgPSBcIiVmaWVsZDFfaW1tdXRcIlxuXG4gIFslJWVsc2VdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXykgdCAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EpIHQgLT4gJ2EgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gIGxldCBtYXAgKHgsIHkpIH5mID0gZiB4LCBmIHlcbiAgbGV0IG1hcF9mc3QgKHgsIHkpIH5mID0gZiB4LCB5XG4gIGxldCBtYXBfc25kICh4LCB5KSB+ZiA9IHgsIGYgeVxuICBsZXQgbWFwMiAoeDEsIHkxKSAoeDIsIHkyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTJcblxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiAoeCwgeSkgKHgnLCB5JykgPVxuICAgIG1hdGNoIGNtcDEgeCB4JyB3aXRoXG4gICAgfCAwIC0+IGNtcDIgeSB5J1xuICAgIHwgaSAtPiBpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiAoeCwgeSkgKHgnLCB5JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5J1xuICBsZXQgc3dhcCAoYSwgYikgPSBiLCBhXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21wYXJlIGNtcDEgY21wMiA9IGNvbXBhcmUgfmNtcDEgfmNtcDJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFQzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2MgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiBjID0gYSwgYiwgY1xuXG4gIGxldCBjdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gYSBiIGMgLT4gZiAoYSwgYiwgYylcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIsIGMpIC0+IGYgYSBiIGNcbiAgOztcblxuICBsZXQgbWFwICh4LCB5LCB6KSB+ZiA9IGYgeCwgZiB5LCBmIHpcbiAgbGV0IG1hcF9mc3QgKHgsIHksIHopIH5mID0gZiB4LCB5LCB6XG4gIGxldCBtYXBfc25kICh4LCB5LCB6KSB+ZiA9IHgsIGYgeSwgelxuICBsZXQgbWFwX3RyZCAoeCwgeSwgeikgfmYgPSB4LCB5LCBmIHpcbiAgbGV0IG1hcDIgKHgxLCB5MSwgejEpICh4MiwgeTIsIHoyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTIsIGYgejEgejJcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXywgXykgdCAtPiAnYSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EsIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDFfaW1tdXRcIlxuXG4gIFslJWVsc2VdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXywgXykgdCAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EsIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFRoZXJlJ3Mgbm8gJWZpZWxkMi4uLi4qKVxuICBsZXQgZ2V0MyAoXywgXywgYSkgPSBhXG5cbiAgKCogbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uICAqKVxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiB+Y21wMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID1cbiAgICBsZXQgYzEgPSBjbXAxIHggeCcgaW5cbiAgICBpZiBjMSA8PiAwXG4gICAgdGhlbiBjMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMyID0gY21wMiB5IHknIGluXG4gICAgICBpZiBjMiA8PiAwIHRoZW4gYzIgZWxzZSBjbXAzIHogeicpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiB+ZXEzICh4LCB5LCB6KSAoeCcsIHknLCB6JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5JyAmJiBlcTMgeiB6J1xuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmFibGVfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaGVyX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSAoUzEgOiBTZXhwYWJsZS5TKSAoUzIgOiBTZXhwYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTMS50ICogUzIudCBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlIChCMSA6IEJpbmFibGUuUykgKEIyIDogQmluYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCMS50ICogQjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIENvbXBhcmF0b3IgKFMxIDogQ29tcGFyYXRvci5TKSAoUzIgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoUzEpIChTMilcblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9XG4gICAgKFMxLmNvbXBhcmF0b3Jfd2l0bmVzcywgUzIuY29tcGFyYXRvcl93aXRuZXNzKSBUMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQyLmNvbXBhcmF0b3IgUzEuY29tcGFyYXRvciBTMi5jb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIENvbXBhcmFibGVfcGxhaW4gKFMxIDogQ29tcGFyYWJsZS5TX3BsYWluKSAoUzIgOiBDb21wYXJhYmxlLlNfcGxhaW4pID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yIChTMSkgKFMyKVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlIChTMSA6IENvbXBhcmFibGVfc2V4cGFibGUpIChTMiA6IENvbXBhcmFibGVfc2V4cGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwYWJsZSAoUzEpIChTMilcblxuICAgIGxldCBjb21wYXJlIChzMSwgczIpIChzMScsIHMyJykgPVxuICAgICAgbWF0Y2ggUzEuY29tcGFyZSBzMSBzMScgd2l0aFxuICAgICAgfCAwIC0+IFMyLmNvbXBhcmUgczIgczInXG4gICAgICB8IHggLT4geFxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgSGFzaGVyIChIMSA6IEhhc2hlcl9zZXhwYWJsZSkgKEgyIDogSGFzaGVyX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUyA6IEhhc2hhYmxlX3NleHBhYmxlKSA6XG4gIEhhc2hlcl9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGVfdCAoUzEgOiBIYXNoYWJsZV9zZXhwYWJsZSkgKFMyIDogSGFzaGFibGVfc2V4cGFibGUpID1cbiAgSGFzaGVyXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZVxuICAgICAgIChTMSkpXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUzIpKVxuXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZV90XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBTdW5cbiAgICAgICAgfCBNb25cbiAgICAgICAgfCBUdWVcbiAgICAgICAgfCBXZWRcbiAgICAgICAgfCBUaHVcbiAgICAgICAgfCBGcmlcbiAgICAgICAgfCBTYXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVja11cblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU1VOXCJcbiAgICAgICAgfCBNb24gLT4gXCJNT05cIlxuICAgICAgICB8IFR1ZSAtPiBcIlRVRVwiXG4gICAgICAgIHwgV2VkIC0+IFwiV0VEXCJcbiAgICAgICAgfCBUaHUgLT4gXCJUSFVcIlxuICAgICAgICB8IEZyaSAtPiBcIkZSSVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU0FUXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmdfbG9uZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU3VuZGF5XCJcbiAgICAgICAgfCBNb24gLT4gXCJNb25kYXlcIlxuICAgICAgICB8IFR1ZSAtPiBcIlR1ZXNkYXlcIlxuICAgICAgICB8IFdlZCAtPiBcIldlZG5lc2RheVwiXG4gICAgICAgIHwgVGh1IC0+IFwiVGh1cnNkYXlcIlxuICAgICAgICB8IEZyaSAtPiBcIkZyaWRheVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU2F0dXJkYXlcIlxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19pbnRlcm5hbCBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVwcGVyY2FzZSBzIHdpdGhcbiAgICAgICAgfCBcIlNVTlwiIHwgXCJTVU5EQVlcIiAtPiBTdW5cbiAgICAgICAgfCBcIk1PTlwiIHwgXCJNT05EQVlcIiAtPiBNb25cbiAgICAgICAgfCBcIlRVRVwiIHwgXCJUVUVTREFZXCIgLT4gVHVlXG4gICAgICAgIHwgXCJXRURcIiB8IFwiV0VETkVTREFZXCIgLT4gV2VkXG4gICAgICAgIHwgXCJUSFVcIiB8IFwiVEhVUlNEQVlcIiAtPiBUaHVcbiAgICAgICAgfCBcIkZSSVwiIHwgXCJGUklEQVlcIiAtPiBGcmlcbiAgICAgICAgfCBcIlNBVFwiIHwgXCJTQVRVUkRBWVwiIC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9pbnRfZXhuIGkgPVxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgfCAwIC0+IFN1blxuICAgICAgICB8IDEgLT4gTW9uXG4gICAgICAgIHwgMiAtPiBUdWVcbiAgICAgICAgfCAzIC0+IFdlZFxuICAgICAgICB8IDQgLT4gVGh1XG4gICAgICAgIHwgNSAtPiBGcmlcbiAgICAgICAgfCA2IC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2ZfaW50X2V4bjogJWRcIiBpICgpXG4gICAgICA7O1xuXG4gICAgICAoKiBCZSB2ZXJ5IGdlbmVyb3VzIHdpdGggb2Zfc3RyaW5nLiAgV2UgYWNjZXB0IGFsbCBwb3NzaWJsZSBjYXBpdGFsaXphdGlvbnMgYW5kIHRoZVxuICAgICAgICAgaW50ZWdlciByZXByZXNlbnRhdGlvbnMgYXMgd2VsbC4gKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBvZl9zdHJpbmdfaW50ZXJuYWwgcyB3aXRoXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICh0cnkgb2ZfaW50X2V4biAoSW50Lm9mX3N0cmluZyBzKSB3aXRoXG4gICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJEYXlfb2Zfd2Vlay5vZl9zdHJpbmc6ICVTXCIgcyAoKSlcbiAgICAgIDs7XG5cbiAgICAgICgqIHRoaXMgaXMgaW4gVCByYXRoZXIgdGhhbiBvdXRzaWRlIHNvIHRoYXQgdGhlIGxhdGVyIGZ1bmN0b3IgYXBwbGljYXRpb24gdG8gYnVpbGQgbWFwc1xuICAgICAgICAgdXNlcyB0aGlzIHNleHAgcmVwcmVzZW50YXRpb24gKilcbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgICBlbmQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIChDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVCkgOiBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuICAgICAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFVuc3RhYmxlKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLk1ha2UgKFVuc3RhYmxlKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5VbnN0YWJsZVxuXG5sZXQgd2Vla2RheXMgPSBbIE1vbjsgVHVlOyBXZWQ7IFRodTsgRnJpIF1cbmxldCB3ZWVrZW5kcyA9IFsgU2F0OyBTdW4gXVxuXG4oKiB3cml0dGVuIG91dCB0byBzYXZlIG92ZXJoZWFkIHdoZW4gbG9hZGluZyBtb2R1bGVzLiAgVGhlIG1lbWJlcnMgb2YgdGhlIHNldCBhbmQgdGhlXG4gICBvcmRlcmluZyBzaG91bGQgbmV2ZXIgY2hhbmdlLCBzbyBzcGVlZCB3aW5zIG92ZXIgc29tZXRoaW5nIG1vcmUgY29tcGxleCB0aGF0IHByb3Zlc1xuICAgdGhlIG9yZGVyID0gdGhlIG9yZGVyIGluIHQgYXQgcnVudGltZSAqKVxubGV0IGFsbCA9IFsgU3VuOyBNb247IFR1ZTsgV2VkOyBUaHU7IEZyaTsgU2F0IF1cblxubGV0IG9mX2ludCBpID1cbiAgdHJ5IFNvbWUgKG9mX2ludF9leG4gaSkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHRvX2ludCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3VuIC0+IDBcbiAgfCBNb24gLT4gMVxuICB8IFR1ZSAtPiAyXG4gIHwgV2VkIC0+IDNcbiAgfCBUaHUgLT4gNFxuICB8IEZyaSAtPiA1XG4gIHwgU2F0IC0+IDZcbjs7XG5cbmxldCBpc29fODYwMV93ZWVrZGF5X251bWJlciB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTW9uIC0+IDFcbiAgfCBUdWUgLT4gMlxuICB8IFdlZCAtPiAzXG4gIHwgVGh1IC0+IDRcbiAgfCBGcmkgLT4gNVxuICB8IFNhdCAtPiA2XG4gIHwgU3VuIC0+IDdcbjs7XG5cbmxldCBudW1fZGF5c19pbl93ZWVrID0gN1xubGV0IHNoaWZ0IHQgaSA9IG9mX2ludF9leG4gKEludC4oICUgKSAodG9faW50IHQgKyBpKSBudW1fZGF5c19pbl93ZWVrKVxuXG5sZXQgbnVtX2RheXMgfmZyb20gfnRvXyA9XG4gIGxldCBkID0gdG9faW50IHRvXyAtIHRvX2ludCBmcm9tIGluXG4gIGlmIEludC4oZCA8IDApIHRoZW4gZCArIG51bV9kYXlzX2luX3dlZWsgZWxzZSBkXG47O1xuXG5sZXQgaXNfc3VuX29yX3NhdCB0ID0gdCA9IFN1biB8fCB0ID0gU2F0XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFJvdW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUb3dhcmRfcG9zaXRpdmVfaW5maW5pdHlcbiAgICB8IFRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbmxldCBtb2R1bGVfbmFtZSA9IFwiRGlnaXRfc3RyaW5nX2hlbHBlcnNcIlxubGV0IGludDYzX3R3byA9IEludDYzLm9mX2ludCAyXG5sZXQgaW50NjNfdGVuID0gSW50NjMub2ZfaW50IDEwXG5sZXQgaW50NjNfdHdlbnR5ID0gSW50NjMub2ZfaW50IDIwXG5sZXQgaW50NjNfYmlsbGlvbiA9IEludDYzLm9mX2ludCAxXzAwMF8wMDBfMDAwXG5sZXQgbWF4X2JpbGxpb25zID0gSW50NjMuKCAvICkgSW50NjMubWF4X3ZhbHVlIGludDYzX2JpbGxpb25cblxubGV0IHJlYyBkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgbiA9XG4gIGlmIEludDYzLiggPCApIG4gaW50NjNfdGVuXG4gIHRoZW4gMVxuICBlbHNlIEludC5zdWNjIChkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgKEludDYzLiggLyApIG4gaW50NjNfdGVuKSlcbjs7XG5cbmxldCBkaWdpdHNfb2ZfaW50NjNfbWF4X3ZhbHVlID0gZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIEludDYzLm1heF92YWx1ZVxuXG5sZXQgcmVjIG1heF9pbnQ2M193aXRoIH5kaWdpdHMgPVxuICBtYXRjaCBkaWdpdHMgd2l0aFxuICB8IDEgLT4gSW50NjMub2ZfaW50IDlcbiAgfCAyIC0+IEludDYzLm9mX2ludCA5OVxuICB8IDMgLT4gSW50NjMub2ZfaW50IDk5OVxuICB8IDQgLT4gSW50NjMub2ZfaW50IDlfOTk5XG4gIHwgNSAtPiBJbnQ2My5vZl9pbnQgOTlfOTk5XG4gIHwgNiAtPiBJbnQ2My5vZl9pbnQgOTk5Xzk5OVxuICB8IDcgLT4gSW50NjMub2ZfaW50IDlfOTk5Xzk5OVxuICB8IDggLT4gSW50NjMub2ZfaW50IDk5Xzk5OV85OTlcbiAgfCA5IC0+IEludDYzLm9mX2ludCA5OTlfOTk5Xzk5OVxuICB8IF8gLT5cbiAgICBpZiBkaWdpdHMgPj0gZGlnaXRzX29mX2ludDYzX21heF92YWx1ZVxuICAgIHRoZW4gSW50NjMubWF4X3ZhbHVlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYmlsbGlvbnMgPSBJbnQ2My5zdWNjIChtYXhfaW50NjNfd2l0aCB+ZGlnaXRzOihkaWdpdHMgLSA5KSkgaW5cbiAgICAgIEludDYzLnByZWQgKEludDYzLiggKiApIGludDYzX2JpbGxpb24gYmlsbGlvbnMpKVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBsZXQgdW5zYWZlX2NoYXJfb2ZfZGlnaXQgbiA9IENoYXIudW5zYWZlX29mX2ludCAoQ2hhci50b19pbnQgJzAnICsgbilcbiAgbGV0IGRpZ2l0X29mX2NoYXIgY2hhciA9IENoYXIuZ2V0X2RpZ2l0X2V4biBjaGFyXG5cbiAgbGV0IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ5dGVzIHBvcyAodW5zYWZlX2NoYXJfb2ZfZGlnaXQgaW50KVxuICA7O1xuXG4gIGxldCByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSBpbnQgLyAxMCBpblxuICAgIGxldCBvbmVzID0gaW50IC0gKHRlbnMgKiAxMCkgaW5cbiAgICB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIG9uZXM7XG4gICAgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAxKSBpbnQgaW5cbiAgICB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMikgaW50IGluXG4gICAgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDMpIGludCBpblxuICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA0KSBpbnQgaW5cbiAgICB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNSkgaW50IGluXG4gICAgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDYpIGludCBpblxuICAgIHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA3KSBpbnQgaW5cbiAgICB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgOCkgaW50IGluXG4gICAgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHJldHVybl9iaWxsaW9uc19hbmRfd3JpdGVfcmVtYWluZGVyIGJ5dGVzIH5wb3MgaW50NjMgPVxuICAgIGxldCBiaWxsaW9ucyA9IEludDYzLiggLyApIGludDYzIGludDYzX2JpbGxpb24gaW5cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjMuKCAtICkgaW50NjMgKEludDYzLiggKiApIGJpbGxpb25zIGludDYzX2JpbGxpb24pIGluXG4gICAgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biByZW1haW5kZXIpO1xuICAgIGJpbGxpb25zXG4gIDs7XG5cbiAgbGV0IHJlYyB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICAgIG1hdGNoIGRpZ2l0cyB3aXRoXG4gICAgfCAxIC0+IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCAyIC0+IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCAzIC0+IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA0IC0+IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA1IC0+IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA2IC0+IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA3IC0+IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA4IC0+IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA5IC0+IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZGlnaXRzX29mX2JpbGxpb25zID0gZGlnaXRzIC0gOSBpblxuICAgICAgbGV0IGJpbGxpb25zID1cbiAgICAgICAgcmV0dXJuX2JpbGxpb25zX2FuZF93cml0ZV9yZW1haW5kZXIgYnl0ZXMgfnBvczoocG9zICsgZGlnaXRzX29mX2JpbGxpb25zKSBpbnQ2M1xuICAgICAgaW5cbiAgICAgIHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfYmlsbGlvbnMgYmlsbGlvbnNcbiAgOztcblxuICBsZXQgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9IGRpZ2l0X29mX2NoYXIgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyBwb3MpXG5cbiAgbGV0IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMSlcbiAgOztcblxuICBsZXQgcmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAyKVxuICA7O1xuXG4gIGxldCByZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDMpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNClcbiAgOztcblxuICBsZXQgcmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA1KVxuICA7O1xuXG4gIGxldCByZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDYpXG4gIDs7XG5cbiAgbGV0IHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNylcbiAgOztcblxuICBsZXQgcmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA4KVxuICA7O1xuXG4gIGxldCByYWlzZV9pbnQ2M19vdmVyZmxvdyBuYW1lID1cbiAgICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogb3ZlcmZsb3cgcmVhZGluZyBpbnQ2M1wiIG1vZHVsZV9uYW1lIG5hbWUgKClcbiAgOztcblxuICBsZXQgcmVjIHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gICAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgICB8IDEgLT4gSW50NjMub2ZfaW50IChyZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgMiAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCAzIC0+IEludDYzLm9mX2ludCAocmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDQgLT4gSW50NjMub2ZfaW50IChyZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA2IC0+IEludDYzLm9mX2ludCAocmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDcgLT4gSW50NjMub2ZfaW50IChyZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgOCAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA5IC0+IEludDYzLm9mX2ludCAocmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IF8gLT5cbiAgICAgIGxldCBkaWdpdHNfb2ZfYmlsbGlvbnMgPSBkaWdpdHMgLSA5IGluXG4gICAgICBsZXQgYmlsbGlvbnMgPSByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2JpbGxpb25zIGluXG4gICAgICBsZXQgcmVtYWluZGVyID1cbiAgICAgICAgSW50NjMub2ZfaW50IChyZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyBkaWdpdHNfb2ZfYmlsbGlvbnMpKVxuICAgICAgaW5cbiAgICAgIGlmIEludDYzLiggPiApIGJpbGxpb25zIG1heF9iaWxsaW9ucyB0aGVuIHJhaXNlX2ludDYzX292ZXJmbG93IFwicmVhZF9pbnQ2M1wiO1xuICAgICAgbGV0IHN1bSA9IEludDYzLiggKyApIChJbnQ2My4oICogKSBiaWxsaW9ucyBpbnQ2M19iaWxsaW9uKSByZW1haW5kZXIgaW5cbiAgICAgIGlmIEludDYzLiggPCApIHN1bSBJbnQ2My56ZXJvIHRoZW4gcmFpc2VfaW50NjNfb3ZlcmZsb3cgXCJyZWFkX2ludDYzXCI7XG4gICAgICBzdW1cbiAgOztcblxuICBsZXQgZGl2aWRlX2FuZF9yb3VuZF91cCB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIChudW1lcmF0b3IgKyBkZW5vbWluYXRvciAtIEludDYzLm9uZSkgLyUgZGVub21pbmF0b3JcbiAgOztcblxuICBsZXQgcmFpc2VfaW52YWxpZF9kZWNpbWFsIG5hbWUgPVxuICAgIGludmFsaWRfYXJnZiBcIiVzLiVzOiBpbnZhbGlkIGRlY2ltYWwgY2hhcmFjdGVyXCIgbW9kdWxlX25hbWUgbmFtZSAoKVxuICA7O1xuXG4gICgqIFJlYWRzIHRoZSBwb3J0aW9uIG9mIHN0cmluZyBiZXR3ZWVuIFtwb3NdIGFuZCBbcG9zK2RlY2ltYWxzLTFdLCBpbmNsdXNpdmUsIGFuZFxuICAgICBpbnRlcnBlcmV0cyBpdCBhcyBhIHBvc2l0aXZlIGRlY2ltYWwgcGFydCBvZiBhIG51bWJlciwgd2hpY2ggd2UgY2FsbCBbeF0uXG5cbiAgICAgTGV0IFtpXSBhbmQgW3JdIGJlIHRoZSBpbnRlZ2VyIHBhcnQgYW5kIHJlbWFpbmluZyBmcmFjdGlvbmFsIHBhcnQgb2ZcbiAgICAgW3ggKiBzY2FsZSAvIGRpdmlzb3JdLlxuXG4gICAgIElmIFtyIDwgcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2ldLlxuICAgICBJZiBbciA9IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpXSBvciBbaSsxXSBiYXNlZCBvbiBbcm91bmRfZXhhY3RdLlxuICAgICBJZiBbciA+IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpKzFdLlxuXG4gICAgIEFzc3VtZXMgd2l0aG91dCBjaGVja2luZyB0aGF0IFtzY2FsZV0gYW5kIFtkaXZpc29yXSBhcmUgYm90aCBwb3NpdGl2ZSBhbmRcbiAgICAgbGVzcyB0aGFuIFtJbnQ2My5tYXhfdmFsdWUgLyAxMF0gKHRvIGF2b2lkIGludGVybmFsIG92ZXJmbG93IGR1cmluZyB0aGUgYWxnb3JpdGhtXG4gICAgIHdoZW4gbXVsdGlwbHlpbmcgYnkgMTApLCBhbmQgdGhhdCBbcm91bmRfYXQgPj0gMF0gYW5kIFtyb3VuZF9hdCA8IGRpdmlzb3JdLiAqKVxuICBsZXQgcmVhZF9pbnQ2M19kZWNpbWFsX3JvdW5kZWRcbiAgICAgICAgc3RyaW5nXG4gICAgICAgIH5wb3M6c3RhcnRcbiAgICAgICAgfmRlY2ltYWxzXG4gICAgICAgIH5zY2FsZVxuICAgICAgICB+ZGl2aXNvclxuICAgICAgICB+cm91bmRfYXRcbiAgICAgICAgfnJvdW5kX2V4YWN0XG4gICAgICAgIH5hbGxvd191bmRlcnNjb3JlXG4gICAgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgdW50aWwgPSBJbnQuKCArICkgc3RhcnQgZGVjaW1hbHMgaW5cbiAgICAoKiBUaGUgbG9vcCBpbnZhcmlhbnQgaXMgdGhhdCBlYWNoIGl0ZXJhdGlvbiwgd2Ugc3RyaXAgb2ZmIHRoZSBuZXh0IGRlY2ltYWwgZGlnaXQgYW5kXG4gICAgICAgdXBkYXRlIFtzdW1dLCBbcm91bmRfYXRdLCBhbmQgW2Rpdmlzb3JdIHN1Y2ggdGhhdCB0aGUgZGVzaXJlZCByZXN1bHQgaXM6XG5cbiAgICAgICBbIHN1bSArIHJvdW5kKHJlbWFpbmluZ19kaWdpdHNfb2ZfeF9wYXJzZWRfYXNfZGVjaW1hbCAqIHNjYWxlIC8gZGl2aXNvcikgXVxuICAgICAgIHdoZXJlIFwicm91bmRcIiByb3VuZHMgYmFzZWQgb24gdGhlIG5ldyB2YWx1ZSBvZiBbcm91bmRfYXRdLlxuICAgICopXG4gICAgbGV0IGRpdmlzb3IgPSByZWYgZGl2aXNvciBpblxuICAgIGxldCByb3VuZF9hdCA9IHJlZiByb3VuZF9hdCBpblxuICAgIGxldCBzdW0gPSByZWYgSW50NjMuemVybyBpblxuICAgIGxldCBwb3MgPSByZWYgc3RhcnQgaW5cbiAgICAoKiBTdG9wIGlmIHdlIHJ1biBvdXQgb2YgY2hhcmFjdGVycywgb3IgaWYgZnVydGhlciBkaWdpdHMgY2Fubm90IGluY3JlYXNlIG91ciBzdW0uICopXG4gICAgd2hpbGUgSW50LiggPD4gKSAhcG9zIHVudGlsICYmICFyb3VuZF9hdCA8IHNjYWxlIGRvXG4gICAgICAobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgIHwgJzAnIC4uICc5JyBhcyBjaGFyIC0+XG4gICAgICAgICBsZXQgZGlnaXQgPSBJbnQ2My5vZl9pbnQgKGRpZ2l0X29mX2NoYXIgY2hhcikgaW5cbiAgICAgICAgICgqIEV2ZXJ5IG5ldyBkZWNpbWFsIHBsYWNlIGltcGxpY2l0bHkgc2NhbGVzIG91ciBudW1lcmF0b3IgYnkgYSBmYWN0b3Igb2YgdGVuLFxuICAgICAgICAgICAgc28gbXVzdCBhbHNvIGVmZmVjdGl2ZWx5IHNjYWxlIG91ciBkZW5vbWluYXRvci5cblxuICAgICAgICAgICAgMC5hYmNkZWYgKiBzY2FsZS9kaXZpc29yICAgICAgICBbcm91bmQgYXQgcm91bmRfYXRdXG4gICAgICAgICAgICA9IGEuYmNkZWYgKiBzY2FsZS8oZGl2aXNvcioxMCkgIFtyb3VuZCBhdCByb3VuZF9hdCoxMF1cblxuICAgICAgICAgICAgVGhlbiByZWRlZmluZSBkaXZpc29yIDo9IGRpdmlzb3IqMTAgYW5kIHJvdW5kX2F0IDo9IHJvdW5kX2F0KjEwLCBzbyB3ZSBoYXZlOlxuICAgICAgICAgICAgYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgW3JvdW5kIGF0IHJvdW5kX2F0XSAqKVxuICAgICAgICAgZGl2aXNvciA6PSAhZGl2aXNvciAqIGludDYzX3RlbjtcbiAgICAgICAgIHJvdW5kX2F0IDo9ICFyb3VuZF9hdCAqIGludDYzX3RlbjtcbiAgICAgICAgICgqIE5leHQgd2Ugd29yayBvdXQgdGhlIHBhcnQgb2YgdGhlIHN1bSBiYXNlZCBvbiBvdXIgY3VycmVudCBkaWdpdDpcblxuICAgICAgICAgICAgYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgW3JvdW5kIGF0IHJvdW5kX2F0XVxuICAgICAgICAgICAgPSBhLmJjZGVmICogc2NhbGUvZGl2aXNvciAtIHJvdW5kX2F0IC8gZGl2aXNvciAgW3JvdW5kIGF0IDBdXG4gICAgICAgICAgICA9IChhKnNjYWxlLXJvdW5kX2F0KSAvIGRpdmlzb3IgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IDBdXG5cbiAgICAgICAgICAgIERlY29tcG9zZSB0aGUgZmlyc3QgdGVybSBpbnRvIGludGVnZXIgYW5kIHJlbWFpbmRlciBwYXJ0cy5cbiAgICAgICAgICAgIFNpbmNlIHdlIGhhdmUgYWxyZWFkeSBzdWJ0cmFjdGVkIFtyb3VuZF9hdF0sIHdlIGRlY29tcG9zZSBiYXNlZFxuICAgICAgICAgICAgb24gdGhlIGNlaWxpbmcgcmF0aGVyIHRoYW4gdGhlIGZsb29yIG9mIHRoZSBkaXZpc2lvbixcbiAgICAgICAgICAgIGUuZy4gNS8zIHdvdWxkIGRlY29tcG9zZSBhcyAyICsgKC0xKS8zLCByYXRoZXIgdGhhbiAxICsgKDIvMykuXG5cbiAgICAgICAgICAgID0gaW5jcmVtZW50ICsgcmVtYWluZGVyL2Rpdmlzb3IgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IDBdXG4gICAgICAgICAgICA9IGluY3JlbWVudCArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgLXJlbWFpbmRlcl1cbiAgICAgICAgICopXG4gICAgICAgICBsZXQgbnVtZXJhdG9yID0gKGRpZ2l0ICogc2NhbGUpIC0gIXJvdW5kX2F0IGluXG4gICAgICAgICBsZXQgZGVub21pbmF0b3IgPSAhZGl2aXNvciBpblxuICAgICAgICAgbGV0IGluY3JlbWVudCA9IGRpdmlkZV9hbmRfcm91bmRfdXAgfm51bWVyYXRvciB+ZGVub21pbmF0b3IgaW5cbiAgICAgICAgIGxldCByZW1haW5kZXIgPSBudW1lcmF0b3IgLSAoaW5jcmVtZW50ICogZGVub21pbmF0b3IpIGluXG4gICAgICAgICAoKiBOb3cganVzdCBhY2N1bXVsYXRlIHRoZSBuZXcgaW5jcmVtZW50IGFuZCBpdGVyYXRlIG9uIHRoZSByZW1haW5pbmcgcGFydDpcbiAgICAgICAgICAgIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgLXJlbWFpbmRlcl0uXG5cbiAgICAgICAgICAgIFNpbmNlIFtyZW1haW5kZXJdIGlzIGJldHdlZW4gWy0oZGl2aXNvci0xKV0gYW5kIFswXSBpbmNsdXNpdmUsIHRoZSBuZXdcbiAgICAgICAgICAgIFtyb3VuZF9hdF0gd2lsbCBiZSB3aXRoaW4gWzBdIGFuZCBbZGl2aXNvci0xXSBpbmNsdXNpdmUuICopXG4gICAgICAgICByb3VuZF9hdCA6PSAtcmVtYWluZGVyO1xuICAgICAgICAgc3VtIDo9ICFzdW0gKyBpbmNyZW1lbnQ7XG4gICAgICAgICAoKiBUaGlzIGxpbmUgcHJldmVudHMgdGhlIGRpdmlzb3IgZnJvbSBncm93aW5nIHdpdGhvdXQgYm91bmQgYW5kIG92ZXJmbG93aW5nLiBJZlxuICAgICAgICAgICAgdGhpcyBsaW5lIGFjdHVhbGx5IGNoYW5nZXMgdGhlIGRpdmlzb3IsIHRoZW4gdGhlIGRpdmlzb3IgaXMgbGFyZ2VyIHRoYW4gdGhlXG4gICAgICAgICAgICBzY2FsZSwgc28gdGhlIHN1bSB3aWxsIGluY3JlYXNlIGlmIGFuZCBvbmx5IGlmIFtwYXJzZWRfcmVtYWluaW5nX2RpZ2l0cyAqXG4gICAgICAgICAgICBzY2FsZSAoPiBvciA+PSkgcm91bmRfYXRdLCB3aGljaCBkb2Vzbid0IGRlcGVuZCBvbiBob3cgbXVjaCBsYXJnZXIgdGhlXG4gICAgICAgICAgICBkaXZpc29yIGlzLiBTbyB0aGlzIGNoYW5nZSBpcyBzYWZlLiAqKVxuICAgICAgICAgZGl2aXNvciA6PSBJbnQ2My5taW4gZGVub21pbmF0b3Igc2NhbGVcbiAgICAgICB8ICdfJyB3aGVuIGFsbG93X3VuZGVyc2NvcmUgLT4gKClcbiAgICAgICB8IF8gLT4gcmFpc2VfaW52YWxpZF9kZWNpbWFsIFwicmVhZF9pbnQ2M19kZWNpbWFsXCIpO1xuICAgICAgcG9zIDo9IEludC5zdWNjICFwb3NcbiAgICBkb25lO1xuICAgIGlmICFyb3VuZF9hdCA9IHplcm9cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHJvdW5kX2V4YWN0IHdpdGhcbiAgICAgIHwgUm91bmQuVG93YXJkX25lZ2F0aXZlX2luZmluaXR5IC0+ICgpXG4gICAgICB8IFJvdW5kLlRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eSAtPiBzdW0gOj0gIXN1bSArIEludDYzLm9uZSk7XG4gICAgIXN1bVxuICA7O1xuXG4gIGxldCByZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZSA9XG4gICAgcmVhZF9pbnQ2M19kZWNpbWFsX3JvdW5kZWRcbiAgICAgIHN0cmluZ1xuICAgICAgfnBvc1xuICAgICAgfmRlY2ltYWxzXG4gICAgICB+c2NhbGU6KEludDYzLiggKiApIHNjYWxlIGludDYzX3R3bylcbiAgICAgIH5kaXZpc29yOmludDYzX3R3b1xuICAgICAgfnJvdW5kX2F0OkludDYzLm9uZVxuICAgICAgfnJvdW5kX2V4YWN0OnJvdW5kX3RpZXNcbiAgICAgIH5hbGxvd191bmRlcnNjb3JlXG4gIDs7XG5lbmRcblxubGV0IG1pbl9zY2FsZSA9IEludDYzLm9uZVxubGV0IG1heF9zY2FsZSA9IEludDYzLiggLyApIEludDYzLm1heF92YWx1ZSBpbnQ2M190d2VudHlcblxubGV0IHJhaXNlX25lZ2F0aXZlX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGRlY2ltYWxzPSVkIGlzIG5lZ2F0aXZlXCIgbW9kdWxlX25hbWUgbmFtZSBkZWNpbWFscyAoKVxuOztcblxubGV0IHJhaXNlX25vbl9wb3NpdGl2ZV9kaWdpdHMgbmFtZSB+ZGlnaXRzID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGRpZ2l0cz0lZCBpcyBub3QgYSBwb3NpdGl2ZSBudW1iZXJcIiBtb2R1bGVfbmFtZSBuYW1lIGRpZ2l0cyAoKVxuOztcblxubGV0IHJhaXNlX3NjYWxlX291dF9vZl9ib3VuZHMgbmFtZSB+c2NhbGUgPVxuICBpbnZhbGlkX2FyZ2ZcbiAgICBcIiVzLiVzOiBzY2FsZT0lTGQgb3V0IG9mIHJhbmdlIFslTGQsICVMZF1cIlxuICAgIG1vZHVsZV9uYW1lXG4gICAgbmFtZVxuICAgIChJbnQ2My50b19pbnQ2NCBzY2FsZSlcbiAgICAoSW50NjMudG9faW50NjQgbWluX3NjYWxlKVxuICAgIChJbnQ2My50b19pbnQ2NCBtYXhfc2NhbGUpXG4gICAgKClcbjs7XG5cbmxldCByYWlzZV9wb3Nfb3V0X29mX2JvdW5kcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgPj0gbGVuXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiJXMuJXM6IHBvcz0lZCBvdXQgb2YgcmFuZ2UgZm9yIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgbW9kdWxlX25hbWVcbiAgICAgIG5hbWVcbiAgICAgIHBvc1xuICAgICAgbGVuXG4gICAgICAoKVxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIiVzLiVzOiAlZCBkaWdpdHMgZG8gbm90IGZpdCBhdCBwb3MgJWQgaW4gc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICBtb2R1bGVfbmFtZVxuICAgICAgbmFtZVxuICAgICAgZGlnaXRzXG4gICAgICBwb3NcbiAgICAgIGxlblxuICAgICAgKClcbjs7XG5cbmxldCByYWlzZV9pbnRfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50ID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6ICVkIG91dCBvZiByYW5nZSBbMCwgJWRdXCIgbW9kdWxlX25hbWUgbmFtZSBpbnQgbWF4ICgpXG47O1xuXG5sZXQgcmFpc2VfaW50NjNfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50NjMgPVxuICBpbnZhbGlkX2FyZ2YgIVwiJXMuJXM6ICV7SW50NjN9IG91dCBvZiByYW5nZSBbMCwgJXtJbnQ2M31dXCIgbW9kdWxlX25hbWUgbmFtZSBpbnQ2MyBtYXggKClcbjs7XG5cbmxldCBjaGVja19kZWNpbWFscyBuYW1lIH5kZWNpbWFscyA9XG4gIGlmIGRlY2ltYWxzIDwgMCB0aGVuIHJhaXNlX25lZ2F0aXZlX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cyA9IGlmIGRpZ2l0cyA8IDEgdGhlbiByYWlzZV9ub25fcG9zaXRpdmVfZGlnaXRzIG5hbWUgfmRpZ2l0c1xuXG5sZXQgY2hlY2tfcG9zIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHMgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyArIGRpZ2l0cyA+IGxlbiB0aGVuIHJhaXNlX3Bvc19vdXRfb2ZfYm91bmRzIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHNcbjs7XG5cbmxldCBjaGVja19pbnQgbmFtZSB+bWF4IGludCA9XG4gIGlmIGludCA8IDAgfHwgaW50ID4gbWF4IHRoZW4gcmFpc2VfaW50X291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludFxuOztcblxubGV0IGNoZWNrX2ludDYzIG5hbWUgfm1heCBpbnQ2MyA9XG4gIGlmIEludDYzLiggPCApIGludDYzIEludDYzLnplcm8gfHwgSW50NjMuKCA+ICkgaW50NjMgbWF4XG4gIHRoZW4gcmFpc2VfaW50NjNfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50NjNcbjs7XG5cbmxldCBjaGVja19zY2FsZSBuYW1lIH5zY2FsZSA9XG4gIGlmIEludDYzLiggPCApIHNjYWxlIG1pbl9zY2FsZSB8fCBJbnQ2My4oID4gKSBzY2FsZSBtYXhfc2NhbGVcbiAgdGhlbiByYWlzZV9zY2FsZV9vdXRfb2ZfYm91bmRzIG5hbWUgfnNjYWxlXG47O1xuXG5sZXQgY2hlY2tfd3JpdGUgbmFtZSB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIH5tYXggaW50ID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBieXRlcyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvcztcbiAgY2hlY2tfaW50IG5hbWUgfm1heCBpbnRcbjs7XG5cbmxldCBjaGVja193cml0ZTYzIG5hbWUgfmJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gIGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHM7XG4gIGxldCBtYXggPSBtYXhfaW50NjNfd2l0aCB+ZGlnaXRzIGluXG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnl0ZXMgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3M7XG4gIGNoZWNrX2ludDYzIG5hbWUgfm1heCBpbnQ2M1xuOztcblxubGV0IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8xX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MSB+bWF4OjkgaW50O1xuICBVbnNhZmUud3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfMl9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjIgfm1heDo5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8zX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MyB+bWF4Ojk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV80X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NCB+bWF4OjlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzVfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo1IH5tYXg6OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzZfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo2IH5tYXg6OTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV83X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NyB+bWF4OjlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV84X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6OCB+bWF4Ojk5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfOV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjkgfm1heDo5OTlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gIGNoZWNrX3dyaXRlNjMgXCJ3cml0ZV9pbnQ2M1wiIH5ieXRlcyB+cG9zIH5kaWdpdHMgaW50NjM7XG4gIFVuc2FmZS53cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjNcbjs7XG5cbmxldCBjaGVja19yZWFkIG5hbWUgfnN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3Ncbjs7XG5cbmxldCBjaGVja19yZWFkNjMgbmFtZSB+c3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHM7XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvc1xuOztcblxubGV0IGNoZWNrX3JlYWQ2M19kZWNpbWFsIG5hbWUgfnN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHM7XG4gIGNoZWNrX3NjYWxlIG5hbWUgfnNjYWxlO1xuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzOmRlY2ltYWxzIH5sZW4gfnBvc1xuOztcblxubGV0IHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8xX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjE7XG4gIFVuc2FmZS5yZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzJfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MjtcbiAgVW5zYWZlLnJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfM19kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czozO1xuICBVbnNhZmUucmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF80X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjQ7XG4gIFVuc2FmZS5yZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzVfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NTtcbiAgVW5zYWZlLnJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNl9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo2O1xuICBVbnNhZmUucmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF83X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjc7XG4gIFVuc2FmZS5yZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzhfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6ODtcbiAgVW5zYWZlLnJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfOV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo5O1xuICBVbnNhZmUucmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGNoZWNrX3JlYWQ2MyBcInJlYWRfaW50NjNcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0cztcbiAgVW5zYWZlLnJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0c1xuOztcblxubGV0IHJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlID1cbiAgY2hlY2tfcmVhZDYzX2RlY2ltYWwgXCJyZWFkX2ludDYzX2RlY2ltYWxcIiB+c3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZTtcbiAgVW5zYWZlLnJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgSmFuXG4gICAgICB8IEZlYlxuICAgICAgfCBNYXJcbiAgICAgIHwgQXByXG4gICAgICB8IE1heVxuICAgICAgfCBKdW5cbiAgICAgIHwgSnVsXG4gICAgICB8IEF1Z1xuICAgICAgfCBTZXBcbiAgICAgIHwgT2N0XG4gICAgICB8IE5vdlxuICAgICAgfCBEZWNcbiAgICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgdmFyaWFudHNdXG5cbiAgICBsZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG4gICAgbGV0IG9mX2ludF9leG4gaSA6IHQgPVxuICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICB8IDEgLT4gSmFuXG4gICAgICB8IDIgLT4gRmViXG4gICAgICB8IDMgLT4gTWFyXG4gICAgICB8IDQgLT4gQXByXG4gICAgICB8IDUgLT4gTWF5XG4gICAgICB8IDYgLT4gSnVuXG4gICAgICB8IDcgLT4gSnVsXG4gICAgICB8IDggLT4gQXVnXG4gICAgICB8IDkgLT4gU2VwXG4gICAgICB8IDEwIC0+IE9jdFxuICAgICAgfCAxMSAtPiBOb3ZcbiAgICAgIHwgMTIgLT4gRGVjXG4gICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiTW9udGgub2ZfaW50X2V4biAlZFwiIGkgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIHRyeSBTb21lIChvZl9pbnRfZXhuIGkpIHdpdGhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcblxuICAgIGxldCB0b19pbnQgKHQgOiB0KSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgSmFuIC0+IDFcbiAgICAgIHwgRmViIC0+IDJcbiAgICAgIHwgTWFyIC0+IDNcbiAgICAgIHwgQXByIC0+IDRcbiAgICAgIHwgTWF5IC0+IDVcbiAgICAgIHwgSnVuIC0+IDZcbiAgICAgIHwgSnVsIC0+IDdcbiAgICAgIHwgQXVnIC0+IDhcbiAgICAgIHwgU2VwIC0+IDlcbiAgICAgIHwgT2N0IC0+IDEwXG4gICAgICB8IE5vdiAtPiAxMVxuICAgICAgfCBEZWMgLT4gMTJcbiAgICA7O1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlIHQgPSB0b19pbnQgdCAtIDFcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSBpID0gb2ZfaW50X2V4biAoaSArIDEpXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gIGVuZFxuZW5kXG5cbmxldCBudW1fbW9udGhzID0gMTJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBsZXQgYWxsID0gWyBKYW47IEZlYjsgTWFyOyBBcHI7IE1heTsgSnVuOyBKdWw7IEF1ZzsgU2VwOyBPY3Q7IE5vdjsgRGVjIF1cbiAgbGV0IGhhc2ggPSB0b19pbnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgbW9udGhzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgaW50cy4gIEZyb20gMTA4LjA3XG4gICAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgICAgcHJldHR5IGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhc1xuICAgICAgIGNoYW5nZWQgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmVcbiAgICAgICBtb3N0IHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgICByYXcuICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IEludC50X29mX3NleHAgc2V4cCkgd2l0aFxuICAgICAgfCBTb21lIGkgLT4gb2ZfaW50X2V4biAoaSArIDEpXG4gICAgICB8IE5vbmUgLT4gVC50X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxuKCogUmVwbGFjZSB0aGUgb3ZlcnJpZGVuIHNleHAgY29udmVydGVycyBmcm9tIFtDb21wYXJhYmxlLk1ha2VfYmluYWJsZV0gd2l0aCB0aGUgb3JkaW5hcnlcbiAgIHN5bWJvbGljIGNvbnZlcnRlcnMuICopXG5sZXQgc2V4cF9vZl90ID0gVC5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBULnRfb2Zfc2V4cFxubGV0IHNoaWZ0IHQgaSA9IG9mX2ludF9leG4gKDEgKyBJbnQuKCAlICkgKHRvX2ludCB0IC0gMSArIGkpIG51bV9tb250aHMpXG5cbmxldCBhbGxfc3RyaW5ncyA9XG4gIGxhenlcbiAgICAoQXJyYXkub2ZfbGlzdCAoTGlzdC5tYXAgYWxsIH5mOihmdW4gdmFyaWFudCAtPiBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IHZhcmlhbnQpKSkpXG47O1xuXG5sZXQgdG9fc3RyaW5nICh0IDogdCkgPVxuICBsZXQgYWxsX3N0cmluZ3MgPSBMYXp5LmZvcmNlIGFsbF9zdHJpbmdzIGluXG4gIGFsbF9zdHJpbmdzLih0b19pbnQgdCAtIDEpXG47O1xuXG5sZXQgb2Zfc3RyaW5nID1cbiAgbGV0IHRhYmxlID1cbiAgICBsYXp5XG4gICAgICAobGV0IG1vZHVsZSBUID0gU3RyaW5nLlRhYmxlIGluXG4gICAgICAgbGV0IHRhYmxlID0gVC5jcmVhdGUgfnNpemU6bnVtX21vbnRocyAoKSBpblxuICAgICAgIEFycmF5Lml0ZXJpIChMYXp5LmZvcmNlIGFsbF9zdHJpbmdzKSB+ZjooZnVuIGkgcyAtPlxuICAgICAgICAgbGV0IHQgPSBvZl9pbnRfZXhuIChpICsgMSkgaW5cbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6cyB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLmxvd2VyY2FzZSBzKSB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLnVwcGVyY2FzZSBzKSB+ZGF0YTp0KTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgZnVuIHN0ciAtPlxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCAoTGF6eS5mb3JjZSB0YWJsZSkgc3RyIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkludmFsaWQgbW9udGg6ICVzXCIgc3RyICgpXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgbW9udGggPSB0ID1cbiAgICB8IEphblxuICAgIHwgRmViXG4gICAgfCBNYXJcbiAgICB8IEFwclxuICAgIHwgTWF5XG4gICAgfCBKdW5cbiAgICB8IEp1bFxuICAgIHwgQXVnXG4gICAgfCBTZXBcbiAgICB8IE9jdFxuICAgIHwgTm92XG4gICAgfCBEZWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgaXNfbGVhcF95ZWFyIH55ZWFyID0gKHllYXIgbW9kIDQgPSAwICYmIG5vdCAoeWVhciBtb2QgMTAwID0gMCkpIHx8IHllYXIgbW9kIDQwMCA9IDBcblxuKCogQ3JlYXRlIGEgbG9jYWwgcHJpdmF0ZSBkYXRlIHR5cGUgdG8gZW5zdXJlIHRoYXQgYWxsIGRhdGVzIGFyZSBjcmVhdGVkIHZpYVxuICAgRGF0ZS5jcmVhdGVfZXhuLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgYmluX2lvLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgICB2YWwgY3JlYXRlX2V4biA6IHk6aW50IC0+IG06TW9udGguU3RhYmxlLlYxLnQgLT4gZDppbnQgLT4gdFxuICAgICAgICB2YWwgeWVhciA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBtb250aCA6IHQgLT4gTW9udGguU3RhYmxlLlYxLnRcbiAgICAgICAgdmFsIGRheSA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBkYXlzX2luX21vbnRoIDogeWVhcjppbnQgLT4gbW9udGg6TW9udGgudCAtPiBpbnRcbiAgICAgICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgICAgICAgdmFsIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA6IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICAoKiBXZSB1c2VkIHRvIHN0b3JlIGRhdGVzIGxpa2UgdGhpczpcbiAgICAgICAgICAgdHlwZSB0ID0geyB5OiBpbnQ7IG06IE1vbnRoLlN0YWJsZS5WMS50OyBkOiBpbnQ7IH1cbiAgICAgICAgICAgSW4gdGhlIGJlbG93IHdlIG1ha2Ugc3VyZSB0aGF0IHRoZSBiaW5faW8gcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICAgICAgaWRlbnRpY2FsIChhbmQgdGhlIHN0YWJsZSB1bml0IHRlc3RzIGNoZWNrIHRoaXMpXG5cbiAgICAgICAgICAgSW4gbWVtb3J5IHdlIHVzZSB0aGUgZm9sbG93aW5nIG11Y2ggbW9yZSBjb21wYWN0IHJlcHJlc2VudGF0aW9uOlxuICAgICAgICAgICAyIGJ5dGVzIHllYXJcbiAgICAgICAgICAgMSBieXRlIG1vbnRoXG4gICAgICAgICAgIDEgYnl0ZSBkYXlcblxuICAgICAgICAgICBhbGwgcGFja2VkIGludG8gYSBzaW5nbGUgaW1tZWRpYXRlIGludCAoc28gZnJvbSA0IHdvcmRzIGRvd24gdG8gMSkuXG4gICAgICAgICopXG4gICAgICAgIHR5cGUgdCA9IGludFxuICAgICAgICBbQEBkZXJpdmluZ1xuICAgICAgICAgIGVxdWFsLCBoYXNoLCB0eXBlcmVwLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZWUzZTAtNDkwYS0xMWU2LWExMGEtYTM3MzRmNzMzNTY2XCJdXG5cbiAgICAgICAgbGV0IGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgICgqIGNyZWF0ZV9leG4ncyB2YWxpZGF0aW9uIG1ha2Ugc3VyZSB0aGF0IGVhY2ggdmFsdWUgZml0cyAqKVxuICAgICAgICAgICh5ZWFyIGxzbCAxNikgbG9yIChNb250aC50b19pbnQgbW9udGggbHNsIDgpIGxvciBkYXlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeWVhciB0ID0gdCBsc3IgMTZcbiAgICAgICAgbGV0IG1vbnRoIHQgPSBNb250aC5vZl9pbnRfZXhuICgodCBsc3IgOCkgbGFuZCAweGZmKVxuICAgICAgICBsZXQgZGF5IHQgPSB0IGxhbmQgMHhmZlxuXG4gICAgICAgIGxldCBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCA9XG4gICAgICAgICAgbWF0Y2ggKG1vbnRoIDogTW9udGgudCkgd2l0aFxuICAgICAgICAgIHwgSmFuIHwgTWFyIHwgTWF5IHwgSnVsIHwgQXVnIHwgT2N0IHwgRGVjIC0+IDMxXG4gICAgICAgICAgfCBBcHIgfCBKdW4gfCBTZXAgfCBOb3YgLT4gMzBcbiAgICAgICAgICB8IEZlYiAtPiBpZiBpc19sZWFwX3llYXIgfnllYXIgdGhlbiAyOSBlbHNlIDI4XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNyZWF0ZV9leG4gfnk6eWVhciB+bTptb250aCB+ZDpkYXkgPVxuICAgICAgICAgICgqIHllYXIsIG1vbnRoLCBhbmQgZGF5IG5lZWQgdG8gYmUgcGFzc2VkIGFzIHBhcmFtZXRlcnMgdG8gYXZvaWQgYWxsb2NhdGluZ1xuICAgICAgICAgICAgIGEgY2xvc3VyZSAoc2VlIHVuaXQgdGVzdCBiZWxvdykgKilcbiAgICAgICAgICBsZXQgaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBtc2cgPVxuICAgICAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgICAgICFcIkRhdGUuY3JlYXRlX2V4biB+eTolZCB+bTole01vbnRofSB+ZDolZCBlcnJvcjogJXNcIlxuICAgICAgICAgICAgICB5ZWFyXG4gICAgICAgICAgICAgIG1vbnRoXG4gICAgICAgICAgICAgIGRheVxuICAgICAgICAgICAgICBtc2dcbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHllYXIgPCAwIHx8IHllYXIgPiA5OTk5XG4gICAgICAgICAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwieWVhciBvdXRzaWRlIG9mIFswLi45OTk5XVwiO1xuICAgICAgICAgIGlmIGRheSA8PSAwIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBcImRheSA8PSAwXCI7XG4gICAgICAgICAgbGV0IGRheXNfaW5fbW9udGggPSBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCBpblxuICAgICAgICAgIGlmIGRheSA+IGRheXNfaW5fbW9udGhcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgKHNwcmludGYgXCIlZCBkYXkgbW9udGggdmlvbGF0aW9uXCIgZGF5c19pbl9tb250aCk7XG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIFdlIGRvbid0IHVzZSBNYWtlX2JpbmFibGUgaGVyZSwgYmVjYXVzZSB0aGF0IHdvdWxkIGdvIHZpYSBhbiBpbW1lZGlhdGVcbiAgICAgICAgICAgdHVwbGUgb3IgcmVjb3JkLiAgVGhhdCBpcyBleGFjdGx5IHRoZSAzMiBieXRlcyB3ZSB3b3JrZWQgc28gaGFyZCBhYm92ZSB0b1xuICAgICAgICAgICBnZXQgcmlkIG9mLiAgV2UgYWxzbyBkb24ndCB3YW50IHRvIGp1c3QgYmluX2lvIHRoZSBpbnRlZ2VyIGRpcmVjdGx5XG4gICAgICAgICAgIGJlY2F1c2UgdGhhdCB3b3VsZCBtZWFuIGEgbmV3IGJpbl9pbyBmb3JtYXQuICAqKVxuXG4gICAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgICAgbGV0IHllYXIgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgbW9udGggPSBNb250aC5TdGFibGUuVjEuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50LmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICAoKiBfX2Jpbl9yZWFkX3QgaXMgb25seSBuZWVkZWQgZm9yIHZhcmlhbnRzICopXG4gICAgICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkRhdGUudFwiICFwb3NfcmVmXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgICAgICAgSW50LmJpbl9zaXplX3QgKHllYXIgdCkgKyBNb250aC5iaW5fc2l6ZV90IChtb250aCB0KSArIEludC5iaW5fc2l6ZV90IChkYXkgdClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgICAgbGV0IHBvcyA9IEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoeWVhciB0KSBpblxuICAgICAgICAgIGxldCBwb3MgPSBNb250aC5iaW5fd3JpdGVfdCBidWYgfnBvcyAobW9udGggdCkgaW5cbiAgICAgICAgICBJbnQuYmluX3dyaXRlX3QgYnVmIH5wb3MgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgICAgIGxldCBiaW5fdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICAgICAgOyBzaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19pbnQgdCA9IHRcbiAgICAgICAgbGV0IG9mX2ludF9leG4gbiA9IGNyZWF0ZV9leG4gfnk6KHllYXIgbikgfm06KG1vbnRoIG4pIH5kOihkYXkgbilcbiAgICAgICAgbGV0IGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA9IDBcblxuICAgICAgICBsZXQldGVzdCBcImludmFsaWQgdmFsdWVcIiA9XG4gICAgICAgICAgRXhuLmRvZXNfcmFpc2UgKGZ1biAoKSA6IHQgLT4gb2ZfaW50X2V4biBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cblxuICAgICAgKCoqIFlZWVktTU0tREQgKilcbiAgICAgIGxldCB0b19zdHJpbmdfaXNvODYwMV9leHRlbmRlZCB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxMCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDQgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo1IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA3ICctJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6OCAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkXG5cbiAgICAgICgqKiBZWVlZTU1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoeWVhciB0KTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgICgqKiBNTS9ERC9ZWVlZICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2FtZXJpY2FuIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDIgJy8nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnLyc7XG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfeWVhcjQgc3RyIHBvcyA9IHJlYWRfNF9kaWdpdF9pbnQgc3RyIH5wb3NcbiAgICAgIGxldCBwYXJzZV9tb250aCBzdHIgcG9zID0gTW9udGgub2ZfaW50X2V4biAocmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvcylcbiAgICAgIGxldCBwYXJzZV9kYXkgc3RyIHBvcyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3NcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWMgc3RyIH5wb3MgPVxuICAgICAgICBpZiBwb3MgKyA4ID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRhdGUub2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWM6IHBvcyArIDggPiBzdHJpbmcgbGVuZ3RoXCI7XG4gICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICB+eToocGFyc2VfeWVhcjQgc3RyIHBvcylcbiAgICAgICAgICB+bToocGFyc2VfbW9udGggc3RyIChwb3MgKyA0KSlcbiAgICAgICAgICB+ZDoocGFyc2VfZGF5IHN0ciAocG9zICsgNikpXG4gICAgICA7O1xuXG4gICAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGEgbWF0ZXJpYWwgd2F5LCBiZSBzdXJlIHlvdVxuICAgICAgICAgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHdvcmtpbmcgaW4gU3RhYmxlICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgaW52YWxpZCAoKSA9IGZhaWx3aXRoIChcImludmFsaWQgZGF0ZTogXCIgXiBzKSBpblxuICAgICAgICBsZXQgZW5zdXJlIGIgPSBpZiBub3QgYiB0aGVuIGludmFsaWQgKCkgaW5cbiAgICAgICAgbGV0IG1vbnRoX251bSB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4biB+eToocGFyc2VfeWVhcjQgcyB5ZWFyKSB+bToocGFyc2VfbW9udGggcyBtb250aCkgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vbnRoX2FicnYgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzIHllYXIpXG4gICAgICAgICAgICB+bTooTW9udGgub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHMgfnBvczptb250aCB+bGVuOjMpKVxuICAgICAgICAgICAgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJy8nXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB5LCBtLCBkID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonLycgd2l0aFxuICAgICAgICAgICAgfCBbIGE7IGI7IGMgXSAtPlxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGEgPSA0IHRoZW4gYSwgYiwgYyAoKiB5L20vZCAqKSBlbHNlIGMsIGEsIGIgKCogbS9kL3kgKilcbiAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5vZl9zdHJpbmcgeSBpblxuICAgICAgICAgIGxldCB5ZWFyID1cbiAgICAgICAgICAgIGlmIHllYXIgPj0gMTAwIHRoZW4geWVhciBlbHNlIGlmIHllYXIgPCA3NSB0aGVuIDIwMDAgKyB5ZWFyIGVsc2UgMTkwMCArIHllYXJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLm9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgbSkgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50Lm9mX3N0cmluZyBkIGluXG4gICAgICAgICAgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSlcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnLSdcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogeXl5eS1tbS1kZCAqKVxuICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTAgJiYgQ2hhci4oID0gKSBzLls0XSAnLScgJiYgQ2hhci4oID0gKSBzLls3XSAnLScpO1xuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo1IH5kYXk6OClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnICdcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA9IDExICYmIENoYXIuKCA9ICkgcy5bMl0gJyAnICYmIENoYXIuKCA9ICkgcy5bNl0gJyAnXG4gICAgICAgICAgdGhlbiAoKiBERCBNTU0gWVlZWSAqKVxuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjMgfnllYXI6N1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogWVlZWSBNTU0gREQgKilcbiAgICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLls0XSAnICcgJiYgQ2hhci4oID0gKSBzLls4XSAnICcpO1xuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5Ojkgfm1vbnRoOjUgfnllYXI6MClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIHMgPSA5XG4gICAgICAgIHRoZW4gKCogRERNTU1ZWVlZICopXG4gICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjIgfnllYXI6NVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDhcbiAgICAgICAgdGhlbiAoKiBhc3N1bWUgWVlZWU1NREQgKilcbiAgICAgICAgICBtb250aF9udW0gfnllYXI6MCB+bW9udGg6NCB+ZGF5OjZcbiAgICAgICAgZWxzZSBpbnZhbGlkICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJEYXRlLm9mX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBPbGRfZGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICB7IHkgOiBpbnRcbiAgICAgICAgICAgIDsgbSA6IGludFxuICAgICAgICAgICAgOyBkIDogaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIGxldCB0b19kYXRlIHQgPSBULmNyZWF0ZV9leG4gfnk6dC55IH5tOihNb250aC5vZl9pbnRfZXhuIHQubSkgfmQ6dC5kXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cC5BdG9tIHMgLT4gb2Zfc3RyaW5nIHNcbiAgICAgICAgICB8IFNleHAuTGlzdCBfIGFzIHNleHAgLT4gT2xkX2RhdGUudG9fZGF0ZSAoT2xkX2RhdGUudF9vZl9zZXhwIHNleHApXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgICAgICB0cnkgdF9vZl9zZXhwIHMgd2l0aFxuICAgICAgICAgIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGV4biAtPiByYWlzZSBleG5cbiAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYSAtPiBvZl9zZXhwX2Vycm9yIGEgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFNleHBsaWIuU2V4cC50X3NleHBfZ3JhbW1hclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgU2V4cGFibGVcblxuICAgICAgbGV0IGNvbXBhcmUgdDEgdDIgPVxuICAgICAgICBsZXQgbiA9IEludC5jb21wYXJlICh5ZWFyIHQxKSAoeWVhciB0MikgaW5cbiAgICAgICAgaWYgbiA8PiAwXG4gICAgICAgIHRoZW4gblxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbiA9IE1vbnRoLmNvbXBhcmUgKG1vbnRoIHQxKSAobW9udGggdDIpIGluXG4gICAgICAgICAgaWYgbiA8PiAwIHRoZW4gbiBlbHNlIEludC5jb21wYXJlIChkYXkgdDEpIChkYXkgdDIpKVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChXaXRob3V0X2NvbXBhcmFibGUpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgIGJpbl9pb1xuICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODI2YTNlNzktMzMyMS00NTFhLTk3MDctZWQ2YzAzYjg0ZTJmXCJcbiAgICAgICwgY29tcGFyZVxuICAgICAgLCBoYXNoXG4gICAgICAsIHR5cGVyZXBdXG5cbiAgICAgIGxldCBub25lID0gVjEuKHRvX2ludCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgXyA9IHRydWVcbiAgICAgIGxldCBzb21lIHQgPSBWMS50b19pbnQgdFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IFYxLm9mX2ludF9leG5cbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIkRhdGUuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IGlmIGlzX3NvbWUgdCB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0IGVsc2UgZGVmYXVsdFxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMS5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYxLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjEudCBPcHRpb24udF1cbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IFN0YWJsZS5WMS5XaXRob3V0X2NvbXBhcmFibGVcbmluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG5tb2R1bGUgQyA9IENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFdpdGhvdXRfY29tcGFyYWJsZSlcbmluY2x1ZGUgQ1xuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIChDIDogQ29tcGFyYWJsZS5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmluY2x1ZGUgKFxuICBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGVcbiAgICBpbmNsdWRlIEJpbmFibGVcblxuICAgIGxldCBjb21wYXJlIChhIDogdCkgKGIgOiB0KSA9IGNvbXBhcmUgYSBiXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLkRhdGVcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5sZXQgdW5peF9lcG9jaCA9IGNyZWF0ZV9leG4gfnk6MTk3MCB+bTpKYW4gfmQ6MVxuXG4oKiBUaGUgRGF5cyBtb2R1bGUgaXMgdXNlZCBmb3IgY2FsY3VsYXRpb25zIHRoYXQgaW52b2x2ZSBhZGRpbmcgb3IgcmVtb3ZpbmcgYSBrbm93biBudW1iZXJcbiAgIG9mIGRheXMgZnJvbSBhIGRhdGUuICBJbnRlcm5hbGx5IHRoZSBkYXRlIGlzIHRyYW5zbGF0ZWQgdG8gYSBkYXkgbnVtYmVyLCB0aGUgZGF5cyBhcmVcbiAgIGFkZGVkLCBhbmQgdGhlIG5ldyBkYXRlIGlzIHJldHVybmVkLiAgVGhvc2UgaW50ZXJlc3RlZCBpbiB0aGUgbWF0aCBjYW4gcmVhZDpcblxuICAgaHR0cDovL2FsY29yLmNvbmNvcmRpYS5jYS9+Z3BrYXRjaC9nZGF0ZS1tZXRob2QuaHRtbFxuXG4gICBub3RlOiB1bml0IHRlc3RzIGFyZSBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5tb2R1bGUgRGF5cyA6IHNpZ1xuICB0eXBlIGRhdGUgPSB0XG4gIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG5cbiAgdmFsIG9mX2RhdGUgOiBkYXRlIC0+IHRcbiAgdmFsIHRvX2RhdGUgOiB0IC0+IGRhdGVcbiAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBhZGRfZGF5cyA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHVuaXhfZXBvY2ggOiB0XG5lbmRcbndpdGggdHlwZSBkYXRlIDo9IHQgPSBzdHJ1Y3RcbiAgb3BlbiBJbnRcblxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgb2ZfeWVhciB5ID0gKDM2NSAqIHkpICsgKHkgLyA0KSAtICh5IC8gMTAwKSArICh5IC8gNDAwKVxuXG4gIGxldCBvZl9kYXRlIGRhdGUgPVxuICAgIGxldCBtID0gKE1vbnRoLnRvX2ludCAobW9udGggZGF0ZSkgKyA5KSAlIDEyIGluXG4gICAgbGV0IHkgPSB5ZWFyIGRhdGUgLSAobSAvIDEwKSBpblxuICAgIG9mX3llYXIgeSArICgoKG0gKiAzMDYpICsgNSkgLyAxMCkgKyAoZGF5IGRhdGUgLSAxKVxuICA7O1xuXG4gIGxldCBjXzEwXzAwMCA9IEludDYzLm9mX2ludCAxMF8wMDBcbiAgbGV0IGNfMTRfNzgwID0gSW50NjMub2ZfaW50IDE0Xzc4MFxuICBsZXQgY18zXzY1Ml80MjUgPSBJbnQ2My5vZl9pbnQgM182NTJfNDI1XG5cbiAgbGV0IHRvX2RhdGUgZGF5cyA9XG4gICAgbGV0IHkgPVxuICAgICAgbGV0IG9wZW4gSW50NjMgaW5cbiAgICAgIHRvX2ludF9leG4gKCgoY18xMF8wMDAgKiBvZl9pbnQgZGF5cykgKyBjXzE0Xzc4MCkgLyBjXzNfNjUyXzQyNSlcbiAgICBpblxuICAgIGxldCBkZGQgPSBkYXlzIC0gb2ZfeWVhciB5IGluXG4gICAgbGV0IHksIGRkZCA9XG4gICAgICBpZiBkZGQgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHkgPSB5IC0gMSBpblxuICAgICAgICB5LCBkYXlzIC0gb2ZfeWVhciB5KVxuICAgICAgZWxzZSB5LCBkZGRcbiAgICBpblxuICAgIGxldCBtaSA9ICgoMTAwICogZGRkKSArIDUyKSAvIDNfMDYwIGluXG4gICAgbGV0IHkgPSB5ICsgKChtaSArIDIpIC8gMTIpIGluXG4gICAgbGV0IG0gPSAoKG1pICsgMikgJSAxMikgKyAxIGluXG4gICAgbGV0IGQgPSBkZGQgLSAoKChtaSAqIDMwNikgKyA1KSAvIDEwKSArIDEgaW5cbiAgICBjcmVhdGVfZXhuIH55IH5tOihNb250aC5vZl9pbnRfZXhuIG0pIH5kXG4gIDs7XG5cbiAgbGV0IHVuaXhfZXBvY2ggPSBvZl9kYXRlIHVuaXhfZXBvY2hcbiAgbGV0IGFkZF9kYXlzIHQgZGF5cyA9IHQgKyBkYXlzXG4gIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuZW5kXG5cbmxldCBhZGRfZGF5cyB0IGRheXMgPSBEYXlzLnRvX2RhdGUgKERheXMuYWRkX2RheXMgKERheXMub2ZfZGF0ZSB0KSBkYXlzKVxubGV0IGRpZmYgdDEgdDIgPSBEYXlzLmRpZmYgKERheXMub2ZfZGF0ZSB0MSkgKERheXMub2ZfZGF0ZSB0MilcblxubGV0IGFkZF9tb250aHMgdCBuID1cbiAgbGV0IHRvdGFsX21vbnRocyA9IE1vbnRoLnRvX2ludCAobW9udGggdCkgKyBuIGluXG4gIGxldCB5ID0geWVhciB0ICsgKHRvdGFsX21vbnRocyAvJSAxMikgaW5cbiAgbGV0IG0gPSB0b3RhbF9tb250aHMgJSAxMiBpblxuICAoKiBjb3JyZWN0IGZvciBkZWNlbWJlciAqKVxuICBsZXQgeSwgbSA9IGlmIEludC4oID0gKSBtIDAgdGhlbiB5IC0gMSwgbSArIDEyIGVsc2UgeSwgbSBpblxuICBsZXQgbSA9IE1vbnRoLm9mX2ludF9leG4gbSBpblxuICAoKiBoYW5kbGUgaW52YWxpZCBkYXRlcyBmb3IgbW9udGhzIHdpdGggZmV3ZXIgbnVtYmVyIG9mIGRheXMgKilcbiAgbGV0IHJlYyB0cnlfY3JlYXRlIGQgPVxuICAgIHRyeSBjcmVhdGVfZXhuIH55IH5tIH5kIHdpdGhcbiAgICB8IF9leG4gLT5cbiAgICAgIGFzc2VydCAoSW50LiggPj0gKSBkIDEpO1xuICAgICAgdHJ5X2NyZWF0ZSAoZCAtIDEpXG4gIGluXG4gIHRyeV9jcmVhdGUgKGRheSB0KVxuOztcblxubGV0IGFkZF95ZWFycyB0IG4gPSBhZGRfbW9udGhzIHQgKG4gKiAxMilcblxuKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXRlcm1pbmF0aW9uX29mX3RoZV9kYXlfb2ZfdGhlX3dlZWsjUHVyZWx5X21hdGhlbWF0aWNhbF9tZXRob2RzXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgaW4gbGliX3Rlc3QvdGltZV90ZXN0Lm1sXG4qKVxubGV0IGRheV9vZl93ZWVrID1cbiAgbGV0IHRhYmxlID0gW3wgMDsgMzsgMjsgNTsgMDsgMzsgNTsgMTsgNDsgNjsgMjsgNCB8XSBpblxuICBmdW4gdCAtPlxuICAgIGxldCBtID0gTW9udGgudG9faW50IChtb250aCB0KSBpblxuICAgIGxldCB5ID0gaWYgSW50LiggPCApIG0gMyB0aGVuIHllYXIgdCAtIDEgZWxzZSB5ZWFyIHQgaW5cbiAgICBEYXlfb2Zfd2Vlay5vZl9pbnRfZXhuXG4gICAgICAoKHkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApICsgdGFibGUuKG0gLSAxKSArIGRheSB0KSAlIDcpXG47O1xuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09yZGluYWxfZGF0ZSAqKVxubGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBbfCAwOyAzMTsgNTk7IDkwOyAxMjA7IDE1MTsgMTgxOyAyMTI7IDI0MzsgMjczOyAzMDQ7IDMzNCB8XVxubGV0IGxlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA2MDsgOTE7IDEyMTsgMTUyOyAxODI7IDIxMzsgMjQ0OyAyNzQ7IDMwNTsgMzM1IHxdXG5cbmxldCBvcmRpbmFsX2RhdGUgdCA9XG4gIGxldCB0YWJsZSA9XG4gICAgaWYgaXNfbGVhcF95ZWFyIH55ZWFyOih5ZWFyIHQpIHRoZW4gbGVhcF95ZWFyX3RhYmxlIGVsc2Ugbm9uX2xlYXBfeWVhcl90YWJsZVxuICBpblxuICBsZXQgb2Zmc2V0ID0gdGFibGUuKE1vbnRoLnRvX2ludCAobW9udGggdCkgLSAxKSBpblxuICBkYXkgdCArIG9mZnNldFxuOztcblxubGV0IGxhc3Rfd2Vla19vZl95ZWFyIHkgPVxuICBsZXQgZmlyc3Rfb2ZfeWVhciA9IGNyZWF0ZV9leG4gfnkgfm06SmFuIH5kOjEgaW5cbiAgbGV0IGlzIHQgZGF5ID0gRGF5X29mX3dlZWsuZXF1YWwgKGRheV9vZl93ZWVrIHQpIGRheSBpblxuICBpZiBpcyBmaXJzdF9vZl95ZWFyIFRodSB8fCAoaXNfbGVhcF95ZWFyIH55ZWFyOnkgJiYgaXMgZmlyc3Rfb2ZfeWVhciBXZWQpXG4gIHRoZW4gNTNcbiAgZWxzZSA1MlxuOztcblxuKCogU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSBvciBJU08gODYwMSBmb3IgdGhlIGRldGFpbHMgb2YgdGhpc1xuICAgYWxnb3JpdGhtLlxuXG4gICBVc2VzIGEgW35mXSBhcmd1bWVudCB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjYWxsZWQgYnkgW3dlZWtfbnVtYmVyXS5cbiopXG5sZXQgY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZiA9XG4gIGxldCBvcmRpbmFsID0gb3JkaW5hbF9kYXRlIHQgaW5cbiAgbGV0IHdlZWtkYXkgPSBEYXlfb2Zfd2Vlay5pc29fODYwMV93ZWVrZGF5X251bWJlciAoZGF5X29mX3dlZWsgdCkgaW5cbiAgKCogW29yZGluYWwgLSB3ZWVrZGF5ICsgNF0gaXMgdGhlIG9yZGluYWwgb2YgdGhpcyB3ZWVrJ3MgVGh1cnNkYXksIHRoZW4gKG4gKyA2KSAvIDcgaXNcbiAgICAgZGl2aXNpb24gYnkgNyByb3VuZGluZyB1cCAqKVxuICBsZXQgd2VlayA9IChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcgaW5cbiAgbGV0IHllYXIgPSB5ZWFyIHQgaW5cbiAgaWYgSW50LiggPCApIHdlZWsgMVxuICB0aGVuIGYgfndlZWs6KGxhc3Rfd2Vla19vZl95ZWFyICh5ZWFyIC0gMSkpIH55ZWFyOih5ZWFyIC0gMSlcbiAgZWxzZSBpZiBJbnQuKCA+ICkgd2VlayAobGFzdF93ZWVrX29mX3llYXIgeWVhcilcbiAgdGhlbiBmIH53ZWVrOjEgfnllYXI6KHllYXIgKyAxKVxuICBlbHNlIGYgfndlZWsgfnllYXJcbjs7XG5cbmxldCB3ZWVrX251bWJlcl9hbmRfeWVhciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyIC0+IHdlZWssIHllYXIpXG5sZXQgd2Vla19udW1iZXIgdCA9IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmY6KGZ1biB+d2VlayB+eWVhcjpfIC0+IHdlZWspXG5sZXQgaXNfd2Vla2VuZCB0ID0gRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCAoZGF5X29mX3dlZWsgdClcbmxldCBpc193ZWVrZGF5IHQgPSBub3QgKGlzX3dlZWtlbmQgdClcbmxldCBpc19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9IGlzX3dlZWtkYXkgdCAmJiBub3QgKGlzX2hvbGlkYXkgdClcblxubGV0IHJlYyBkaWZmX3dlZWtlbmRfZGF5cyB0MSB0MiA9XG4gIGlmIHQxIDwgdDJcbiAgdGhlbiAtZGlmZl93ZWVrZW5kX2RheXMgdDIgdDFcbiAgZWxzZSAoXG4gICAgKCogQmFzaWMgZGF0ZSBkaWZmICopXG4gICAgbGV0IGRpZmYgPSBkaWZmIHQxIHQyIGluXG4gICAgKCogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIFNhdHVyZGF5IC0+IFN1bmRheSBjcm9zc2luZ3MgKilcbiAgICBsZXQgZDEgPSBkYXlfb2Zfd2VlayB0MSBpblxuICAgIGxldCBkMiA9IGRheV9vZl93ZWVrIHQyIGluXG4gICAgbGV0IG51bV9zYXRzdW5fY3Jvc3NpbmdzID1cbiAgICAgIGlmIEludC4oIDwgKSAoRGF5X29mX3dlZWsudG9faW50IGQxKSAoRGF5X29mX3dlZWsudG9faW50IGQyKVxuICAgICAgdGhlbiAxICsgKGRpZmYgLyA3KVxuICAgICAgZWxzZSBkaWZmIC8gN1xuICAgIGluXG4gICAgKG51bV9zYXRzdW5fY3Jvc3NpbmdzICogMilcbiAgICArIChpZiBEYXlfb2Zfd2Vlay4oID0gKSBkMiBEYXlfb2Zfd2Vlay5TdW4gdGhlbiAxIGVsc2UgMClcbiAgICArIGlmIERheV9vZl93ZWVrLiggPSApIGQxIERheV9vZl93ZWVrLlN1biB0aGVuIC0xIGVsc2UgMClcbjs7XG5cbmxldCBkaWZmX3dlZWtkYXlzIHQxIHQyID0gZGlmZiB0MSB0MiAtIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyXG5cbmxldCBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwIG4gPVxuICBsZXQgc3RlcCA9IGlmIEludC4oID49ICkgbiAwIHRoZW4gMSBlbHNlIC0xIGluXG4gIGxldCByZWMgbG9vcCB0IGsgPVxuICAgIGxldCB0X25leHQgPSBhZGRfZGF5cyB0IHN0ZXAgaW5cbiAgICBpZiBza2lwIHQgdGhlbiBsb29wIHRfbmV4dCBrIGVsc2UgaWYgSW50LiggPSApIGsgMCB0aGVuIHQgZWxzZSBsb29wIHRfbmV4dCAoayAtIDEpXG4gIGluXG4gIGxvb3AgdCAoYWJzIG4pXG47O1xuXG5sZXQgcmVjIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGlmIGNvbmRpdGlvbiB0IHRoZW4gdCBlbHNlIGZpcnN0X2RheV9zYXRpc2Z5aW5nIChhZGRfZGF5cyB0IHN0ZXApIH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGxldCBuZXh0X2RheSA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyBuZXh0X2RheSB+c3RlcCB+Y29uZGl0aW9uXG47O1xuXG5sZXQgZm9sbG93aW5nX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHByZXZpb3VzX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCA9IGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcblxubGV0IHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID1cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246KGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSlcbjs7XG5cbmxldCBhZGRfd2Vla2RheXMgdCBuID0gYWRkX2RheXNfc2tpcHBpbmcgdCB+c2tpcDppc193ZWVrZW5kIG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfaW5fZGlyZWN0aW9uX29mX3N0ZXAgPSBhZGRfd2Vla2RheXNcblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b193ZWVrZGF5IHQpIH5za2lwOmlzX3dlZWtlbmQgblxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIHQgbiB+c2tpcDooZnVuIGQgLT4gaXNfd2Vla2VuZCBkIHx8IGlzX2hvbGlkYXkgZClcbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF9idXNpbmVzc19kYXlzXG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgdCkgbiB+c2tpcDooZnVuIGQgLT5cbiAgICBub3QgKGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBkYXRlc19iZXR3ZWVuIH5taW46dDEgfm1heDp0MiA9XG4gIGxldCByZWMgbG9vcCB0IGwgPSBpZiB0IDwgdDEgdGhlbiBsIGVsc2UgbG9vcCAoYWRkX2RheXMgdCAoLTEpKSAodCA6OiBsKSBpblxuICBsb29wIHQyIFtdXG47O1xuXG5sZXQgd2Vla2RheXNfYmV0d2VlbiB+bWluIH5tYXggPVxuICBsZXQgYWxsX2RhdGVzID0gZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggaW5cbiAgT3B0aW9uLnZhbHVlX21hcCAoTGlzdC5oZCBhbGxfZGF0ZXMpIH5kZWZhdWx0OltdIH5mOihmdW4gZmlyc3RfZGF0ZSAtPlxuICAgICgqIHRvIGF2b2lkIGEgc3lzdGVtIGNhbGwgb24gZXZlcnkgZGF0ZSwgd2UganVzdCBnZXQgdGhlIHdlZWtkYXkgZm9yIHRoZSBmaXJzdFxuICAgICAgIGRhdGUgYW5kIHVzZSBpdCB0byBnZXQgYWxsIHRoZSBvdGhlciB3ZWVrZGF5cyAqKVxuICAgIGxldCBmaXJzdF93ZWVrZGF5ID0gZGF5X29mX3dlZWsgZmlyc3RfZGF0ZSBpblxuICAgIGxldCBkYXRlX2FuZF93ZWVrZGF5cyA9XG4gICAgICBMaXN0Lm1hcGkgYWxsX2RhdGVzIH5mOihmdW4gaSBkYXRlIC0+IGRhdGUsIERheV9vZl93ZWVrLnNoaWZ0IGZpcnN0X3dlZWtkYXkgaSlcbiAgICBpblxuICAgIExpc3QuZmlsdGVyX21hcCBkYXRlX2FuZF93ZWVrZGF5cyB+ZjooZnVuIChkYXRlLCB3ZWVrZGF5KSAtPlxuICAgICAgaWYgRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCB3ZWVrZGF5IHRoZW4gTm9uZSBlbHNlIFNvbWUgZGF0ZSkpXG47O1xuXG5sZXQgYnVzaW5lc3NfZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggfmlzX2hvbGlkYXkgPVxuICB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGQgLT4gbm90IChpc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGZpcnN0X3N0cmljdGx5X2FmdGVyIHQgfm9uOmRvdyA9XG4gIGxldCBkb3cgPSBEYXlfb2Zfd2Vlay50b19pbnQgZG93IGluXG4gIGxldCB0cGx1czEgPSBhZGRfZGF5cyB0IDEgaW5cbiAgbGV0IGN1ciA9IERheV9vZl93ZWVrLnRvX2ludCAoZGF5X29mX3dlZWsgdHBsdXMxKSBpblxuICBsZXQgZGlmZiA9IChkb3cgKyA3IC0gY3VyKSBtb2QgNyBpblxuICBhZGRfZGF5cyB0cGx1czEgZGlmZlxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIG9wZW4gUXVpY2tjaGVja1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGQxIGQyID1cbiAgICBpZiBkMSA+IGQyXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkRhdGUuZ2VuX3VuaWZvcm1faW5jbDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAgIH5sb3dlcl9ib3VuZDooZDEgOiB0KVxuICAgICAgICAgICAgfnVwcGVyX2JvdW5kOihkMiA6IHQpXTtcbiAgICBHZW5lcmF0b3IubWFwIChJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChkaWZmIGQyIGQxKSkgfmY6KGZ1biBkYXlzIC0+IGFkZF9kYXlzIGQxIGRheXMpXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGQxIGQyID1cbiAgICBHZW5lcmF0b3Iud2VpZ2h0ZWRfdW5pb25cbiAgICAgIFsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDE7IDEuLCBHZW5lcmF0b3IucmV0dXJuIGQyOyAxOC4sIGdlbl91bmlmb3JtX2luY2wgZDEgZDIgXVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIChvZl9zdHJpbmcgXCIxOTAwLTAxLTAxXCIpIChvZl9zdHJpbmcgXCIyMTAwLTAxLTAxXCIpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZTpfIH5oYXNoIC0+IGhhc2hfZm9sZF90IGhhc2ggdClcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBTaHJpbmtlci5lbXB0eSAoKVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG5sZXQgZ2VuX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgbGVhcF95ZWFyX3RhYmxlID0gbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBub25fbGVhcF95ZWFyX3RhYmxlID0gbm9uX2xlYXBfeWVhcl90YWJsZVxuICBsZXQgb3JkaW5hbF9kYXRlID0gb3JkaW5hbF9kYXRlXG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19nZW5lcmF0b3IgcXVpY2tjaGVja19nZW5lcmF0b3IpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19zaHJpbmtlciBxdWlja2NoZWNrX3Nocmlua2VyKVxuICAgICAgfmY6b2Zfb3B0aW9uXG4gICAgICB+Zl9pbnZlcnNlOnRvX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLm9mX2hhc2hcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBlbmQpXG4gIDs7XG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcblxubGV0IHN1ZmZpeGVzIGNoYXIgPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIFsgc3ByaW50ZiBcIiVjXCIgY2hhcjsgc3ByaW50ZiBcIiVjTVwiIGNoYXI7IHNwcmludGYgXCIlYy5NXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk0uXCIgY2hhciBdXG4gIHw+IExpc3QuY29uY2F0X21hcCB+ZjooZnVuIHN1ZmZpeCAtPlxuICAgIFsgU3RyaW5nLmxvd2VyY2FzZSBzdWZmaXg7IFN0cmluZy51cHBlcmNhc2Ugc3VmZml4IF0pXG47O1xuXG5sZXQgYW1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnQScpXG5sZXQgcG1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnUCcpXG5cbigqIEF2b2lkcyB0aGUgYWxsb2NhdGlvbiB0aGF0IFtMaXN0LmZpbmRdIHdvdWxkIGVudGFpbCBpbiBib3RoIGJvdGggdGhlIGNsb3N1cmUgaW5wdXQgYW5kXG4gICB0aGUgb3B0aW9uIG91dHB1dC4gKilcbmxldCByZWMgZmluZF9zdWZmaXggc3RyaW5nIHN1ZmZpeGVzID1cbiAgbWF0Y2ggc3VmZml4ZXMgd2l0aFxuICB8IHN1ZmZpeCA6OiBzdWZmaXhlcyAtPlxuICAgIGlmIFN0cmluZy5pc19zdWZmaXggc3RyaW5nIH5zdWZmaXggdGhlbiBzdWZmaXggZWxzZSBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXNcbiAgfCBbXSAtPiBcIlwiXG47O1xuXG5sZXQgaGFzX2NvbG9uIHN0cmluZyBwb3MgfnVudGlsID0gcG9zIDwgdW50aWwgJiYgQ2hhci5lcXVhbCAnOicgc3RyaW5nLltwb3NdXG5cbigqIFRoaXMgZnVuY3Rpb24gZGVmaW5lcyB3aGF0IHdlIG1lYW50IGJ5IFwiZGVjaW1hbCBwb2ludFwiLCBiZWNhdXNlIGluIHNvbWUgc3RyaW5nIGZvcm1hdHNcbiAgIGl0IG1lYW5zICcuJyBhbmQgaW4gc29tZSBpdCBjYW4gYmUgJy4nIG9yICcsJy4gVGhlcmUncyBubyBwYXJ0aWN1bGFyIGRlbWFuZCBmb3Igc3VwcG9ydFxuICAgZm9yICcsJywgYW5kIHVzaW5nIGp1c3QgJy4nIGxldHMgdXMgdXNlIFtGbG9hdC5vZl9zdHJpbmddIGZvciB0aGUgZGVjaW1hbCBzdWJzdHJpbmdcbiAgIHdpdGhvdXQgYW55IHN1YnN0aXR1dGlvbnMuICopXG5sZXQgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3MgPSBDaGFyLmVxdWFsICcuJyBzdHJpbmcuW3Bvc11cblxubGV0IGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgbGVuID1cbiAgaWYgbGVuID4gMCAmJiBDaGFyLmVxdWFsICcgJyBzdHJpbmcuW2xlbiAtIDFdIHRoZW4gbGVuIC0gMSBlbHNlIGxlblxuOztcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZS5PZmRheTogaW52YWxpZCBzdHJpbmdcIiBzdHJpbmcgcmVhc29uXVxuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRoX3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIHwgJ18nIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgc3RyaW5nXG4gICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBkaWdpdHMgYW5kL29yIHVuZGVyc2NvcmVzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRob3V0X3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHBvaW50XCJcbiAgZG9uZTtcbiAgIW5vbnplcm9cbjs7XG5cbmxldCBwYXJzZSBzdHJpbmcgfmYgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IGFtX29yX3BtLCB1bnRpbCA9XG4gICAgKCogZGlzY3JpbWluYXRlIGFtb25nIEFNICgxOjMwYW0pLCBQTSAoMTI6MzA6MDAgUC5NLiksIG9yIDI0LWhyICgxMzowMCkuICopXG4gICAgbWF0Y2hcbiAgICAgICggZmluZF9zdWZmaXggc3RyaW5nIChMYXp5LmZvcmNlIGFtX3N1ZmZpeGVzKVxuICAgICAgLCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgcG1fc3VmZml4ZXMpIClcbiAgICB3aXRoXG4gICAgfCBcIlwiLCBcIlwiIC0+IGBocl8yNCwgbGVuXG4gICAgfCBhbSwgXCJcIiAtPiBgaHJfQU0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggYW0pXG4gICAgfCBcIlwiLCBwbSAtPiBgaHJfUE0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggcG0pXG4gICAgfCBfLCBfIC0+IGBocl8yNCwgYXNzZXJ0IGZhbHNlXG4gICAgKCogSW1tZWRpYXRlbHkgYWJvdmUsIGl0IG1heSBzZWVtIG5vbnNlbnNpY2FsIHRvIHdyaXRlIFtgaHJfMjQsIGFzc2VydCBmYWxzZV0gd2hlbiB0aGVcbiAgICAgICBbYGhyXzI0XSBjYW4gbmV2ZXIgYmUgcmV0dXJuZWQuIFdlIGRvIHRoaXMgdG8gaGVscCB0aGUgY29tcGlsZXIgZmlndXJlIG91dCBuZXZlciB0b1xuICAgICAgIGFsbG9jYXRlIGEgdHVwbGUgaW4gdGhpcyBjb2RlOiB0aGUgW2xldF0gcGF0dGVybiBpcyBzeW50YWN0aWNhbGx5IGEgdHVwbGUgYW5kIGV2ZXJ5XG4gICAgICAgbWF0Y2ggY2xhdXNlIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZS4gKilcbiAgaW5cbiAgbGV0IHBvcyA9IDAgaW5cbiAgbGV0IHBvcywgaHIsIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzID1cbiAgICAoKiBlLmcuIFwiMTowMFwiIG9yIFwiMTowMDowMFwiICopXG4gICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMSkgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxMjowMFwiIG9yIFwiMTI6MDA6MDBcIiAqKVxuICAgIGVsc2UgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMywgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMSA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMSwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjA5MzBcIjsgbXVzdCBub3QgaGF2ZSBzZWNvbmRzICopXG4gICAgZWxzZSBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19idXRfbm90X3NlY29uZHNcbiAgaW5cbiAgbGV0IHBvcywgbWluLCBleHBlY3Rfc2Vjb25kcyA9XG4gICAgbWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgKCogZS5nLiBcIjEyYW1cIiAqKVxuICAgICAgcG9zLCAwLCBmYWxzZVxuICAgIHwgKGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzKSBhcyBtYXliZV9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICggcG9zICsgM1xuICAgICAgICAsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3NcbiAgICAgICAgLCBtYXRjaCBtYXliZV9zZWNvbmRzIHdpdGhcbiAgICAgICAgfCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyAtPiB0cnVlXG4gICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIC0+XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCBlbmQgb2Ygc3RyaW5nIGFmdGVyIG1pbnV0ZXNcIiApXG4gICAgICAgICgqIGUuZy4gXCIxMjowMFwiICopXG4gICAgICBlbHNlIGlmIHBvcyArIDIgPSB1bnRpbFxuICAgICAgdGhlbiBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBjb2xvbiBvciBhbS9wbSBzdWZmaXggd2l0aCBvcHRpb25hbCBzcGFjZSBhZnRlciBtaW51dGVzXCJcbiAgaW5cbiAgbGV0IHNlYywgc3Vic2VjX3Bvcywgc3Vic2VjX2xlbiwgc3Vic2VjX25vbnplcm8gPVxuICAgIG1hdGNoIGV4cGVjdF9zZWNvbmRzIHdpdGhcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiIG9yIFwiMTI6MDBcIiAqKVxuICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgIHRoZW4gMCwgcG9zLCAwLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgYWN0dWFsbHkgdW5yZWFjaGFibGUsIGJhc2VkIG9uIHRoZSB2YXJpb3VzIHdheXMgdGhhdFxuICAgICAgICAgICBbZXhwZWN0X3NlY29uZHNdIGNhbiBlbmQgdXAgZmFsc2UuICopXG4gICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiQlVHOiBkaWQgbm90IGV4cGVjdCBzZWNvbmRzLCBidXQgZm91bmQgdGhlbVwiXG4gICAgfCB0cnVlIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgcG9zICsgMiA+IHVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowXCIgKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCB0d28gZGlnaXRzIG9mIHNlY29uZHNcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZWMgPSByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zIGluXG4gICAgICAgIGxldCBwb3MgPSBwb3MgKyAyIGluXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICAgIGlmIHBvcyA9IHVudGlsXG4gICAgICAgIHRoZW4gc2VjLCBwb3MsIDAsIGZhbHNlICgqIGUuZy4gXCIxMjowMDowMC4xMjNcIiAqKVxuICAgICAgICBlbHNlIGlmIHBvcyA8IHVudGlsICYmIGNoYXJfaXNfZGVjaW1hbF9wb2ludCBzdHJpbmcgcG9zXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoIHNlY1xuICAgICAgICAgICwgcG9zXG4gICAgICAgICAgLCB1bnRpbCAtIHBvc1xuICAgICAgICAgICwgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIChwb3MgKyAxKSB+dW50aWwgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRlY2ltYWwgcG9pbnQgb3IgYW0vcG0gc3VmZml4IGFmdGVyIHNlY29uZHNcIilcbiAgaW5cbiAgbGV0IGhyID1cbiAgICAoKiBOQi4gV2UgYWxyZWFkeSBrbm93IFtocl0gaXMgbm9uLW5lZ2F0aXZlLCBiZWNhdXNlIGl0J3MgdGhlIHJlc3VsdCBvZlxuICAgICAgIFtyZWFkXzJfZGlnaXRfaW50XS4gKilcbiAgICBtYXRjaCBhbV9vcl9wbSB3aXRoXG4gICAgfCBgaHJfQU0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMGFtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSBoclxuICAgIHwgYGhyX1BNIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDBwbVwiICopXG4gICAgICBpZiBociA8IDEgfHwgaHIgPiAxMlxuICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgZWxzZSBpZiBociA9IDEyXG4gICAgICB0aGVuIDEyXG4gICAgICBlbHNlIGhyICsgMTJcbiAgICB8IGBocl8yNCAtPlxuICAgICAgKG1hdGNoIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzIHdpdGhcbiAgICAgICB8IGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHMgLT5cbiAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgd2l0aG91dCBtaW51dGVzIG9yIEFNL1BNXCJcbiAgICAgICB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcyB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+XG4gICAgICAgICBpZiBociA+IDI0XG4gICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBlbHNlIGlmIGhyID0gMjQgJiYgKG1pbiA+IDAgfHwgc2VjID4gMCB8fCBzdWJzZWNfbm9uemVybylcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ0aW1lIGlzIHBhc3QgMjQ6MDA6MDBcIiAoKiBlLmcuIFwiMTM6MDA6MDBcIiAqKVxuICAgICAgICAgZWxzZSBocilcbiAgaW5cbiAgbGV0IG1pbiA9XG4gICAgaWYgbWluID4gNTkgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm1pbnV0ZXMgb3V0IG9mIGJvdW5kc1wiIGVsc2UgbWluXG4gIGluXG4gIGxldCBzZWMgPVxuICAgIGlmIHNlYyA+IDYwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzZWNvbmRzIG91dCBvZiBib3VuZHNcIiBlbHNlIHNlY1xuICBpblxuICBsZXQgc3Vic2VjX2xlbiA9IGlmIHNlYyA9IDYwIHx8IG5vdCBzdWJzZWNfbm9uemVybyB0aGVuIDAgZWxzZSBzdWJzZWNfbGVuIGluXG4gIGYgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbjs7XG5cbmxldCBwYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmYgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIG1hdGNoXG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihTdHJpbmcubGVuZ3RoIHN0cilcbiAgICB3aXRoXG4gICAgfCBSZXN1bHQuT2sgeiAtPiB6XG4gICAgfCBSZXN1bHQuRXJyb3IgcyAtPlxuICAgICAgZmFpbHdpdGhmIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQ6ICVzXCIgKEVycm9yLnRvX3N0cmluZ19tYWNoIHMpICgpXG4gIGluXG4gIGlmIGxlbiA8IDJcbiAgdGhlbiBmYWlsd2l0aCBcImxlbiA8IDJcIlxuICBlbHNlIChcbiAgICBsZXQgaHIgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zIGluXG4gICAgaWYgaHIgPiAyNCB0aGVuIGZhaWx3aXRoIFwiaG91ciA+IDI0XCI7XG4gICAgaWYgbGVuID0gMlxuICAgIHRoZW4gZiBzdHIgfmhyIH5taW46MCB+c2VjOjAgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgIGVsc2UgaWYgbGVuIDwgNVxuICAgIHRoZW4gZmFpbHdpdGggXCIyIDwgbGVuIDwgNVwiXG4gICAgZWxzZSBpZiBub3QgKENoYXIuZXF1YWwgc3RyLltwb3MgKyAyXSAnOicpXG4gICAgdGhlbiBmYWlsd2l0aCBcImZpcnN0IGNvbG9uIG1pc3NpbmdcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbiA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDMpIGluXG4gICAgICBpZiBtaW4gPj0gNjAgdGhlbiBmYWlsd2l0aCBcIm1pbnV0ZSA+IDYwXCI7XG4gICAgICBpZiBociA9IDI0ICYmIG1pbiA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gbWludXRlXCI7XG4gICAgICBpZiBsZW4gPSA1XG4gICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICBlbHNlIGlmIGxlbiA8IDhcbiAgICAgIHRoZW4gZmFpbHdpdGggXCI1IDwgbGVuIDwgOFwiXG4gICAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDVdICc6JylcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJzZWNvbmQgY29sb24gbWlzc2luZ1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDYpIGluXG4gICAgICAgICgqIHNlY29uZCBjYW4gYmUgNjAgaW4gdGhlIGNhc2Ugb2YgYSBsZWFwIHNlY29uZC4gVW5mb3J0dW5hdGVseSwgd2hhdCB3aXRoXG4gICAgICAgICAgIG5vbi1ob3VyLW11bHRpcGxlIHRpbWV6b25lIG9mZnNldHMsIHdlIGNhbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGF0XG4gICAgICAgICAgIHRoZSBob3VyIG9yIG1pbnV0ZSBtdXN0IGJlIGluIHRoYXQgY2FzZSAqKVxuICAgICAgICBpZiBzZWMgPiA2MCB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgc2Vjb25kOiAlaVwiIHNlYyAoKTtcbiAgICAgICAgaWYgaHIgPSAyNCAmJiBzZWMgPD4gMCB0aGVuIGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHNlY29uZHNcIjtcbiAgICAgICAgaWYgbGVuID0gOFxuICAgICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgICAgICBlbHNlIGlmIGxlbiA9IDlcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcImxlbmd0aCA9IDlcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBzdHIuW3BvcyArIDhdIHdpdGhcbiAgICAgICAgICB8ICcuJyB8ICcsJyAtPlxuICAgICAgICAgICAgbGV0IHN1YnNlY19wb3MgPSBwb3MgKyA4IGluXG4gICAgICAgICAgICBsZXQgc3Vic2VjX2xlbiA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm9cbiAgICAgICAgICAgICAgICAgIHN0clxuICAgICAgICAgICAgICAgICAgKHN1YnNlY19wb3MgKyAxKVxuICAgICAgICAgICAgICAgICAgfnVudGlsOihwb3MgKyBsZW4pXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCB0cnVlIHdoZW4gc2VjID0gNjAgLT4gMFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBociA9IDI0IC0+IGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHN1YnNlY29uZHNcIlxuICAgICAgICAgICAgICB8IF8gLT4gbGVuIC0gOFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJtaXNzaW5nIHN1YnNlY29uZCBzZXBhcmF0b3JcIikpKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5pbmNsdWRlIEhhc2guQnVpbHRpblxuXG5pbmNsdWRlIChcbiAgQmFzZSA6XG4gIHNpZ1xuICAgIHR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGJvb2wgPSBib29sIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBjaGFyID0gY2hhciBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgZXhuID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50ID0gaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyB1bml0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgYXJyYXkgOj0gJ2EgYXJyYXlcbiAgd2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxuICB3aXRoIHR5cGUgY2hhciA6PSBjaGFyXG4gIHdpdGggdHlwZSBleG4gOj0gZXhuXG4gIHdpdGggdHlwZSBmbG9hdCA6PSBmbG9hdFxuICB3aXRoIHR5cGUgaW50IDo9IGludFxuICB3aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbiAgd2l0aCB0eXBlIGludDY0IDo9IGludDY0XG4gIHdpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbiAgd2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbiAgd2l0aCB0eXBlICdhIG9wdGlvbiA6PSAnYSBvcHRpb25cbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbiAgd2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG4gIHdpdGggdHlwZSB1bml0IDo9IHVuaXQpXG4iLCJvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcbiAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGV4Y2VwdGlvbiBOYW5fb3JfaW5mIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgIGxldCB2ZXJpZnkgdCA9XG4gICAgICBtYXRjaCBDYW1sLmNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICAgICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+ICgpXG4gICAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IHJhaXNlIE5hbl9vcl9pbmZcbiAgICA7O1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZClcblxuICAgIGxldCBzZXhwX29mX3QgPSBGbG9hdC5zZXhwX29mX3RcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gXyBhcyBzZXhwIC0+XG4gICAgICAgIGxldCB0ID0gRmxvYXQudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgKHRyeSB2ZXJpZnkgdCB3aXRoXG4gICAgICAgICB8IGUgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgKEltcG9ydC5FeG4udG9fc3RyaW5nIGUpIHNleHApO1xuICAgICAgICB0XG4gICAgICB8IHMgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgXCJEZWNpbWFsLnRfb2Zfc2V4cDogRXhwZWN0ZWQgQXRvbSwgZm91bmQgTGlzdFwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoZmxvYXRbQHF1aWNrY2hlY2suZ2VuZXJhdG9yIEZsb2F0Lmdlbl9maW5pdGVdKVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgICBsZXQgb2ZfbXVsdCBmID0gZlxuICAgIGxldCB0b19tdWx0IHQgPSB0XG4gICAgbGV0IG9mX3BlcmNlbnRhZ2UgZiA9IGYgLy4gMTAwLlxuICAgIGxldCB0b19wZXJjZW50YWdlIHQgPSB0ICouIDEwMC5cbiAgICBsZXQgb2ZfYnAgZiA9IGYgLy4gMTBfMDAwLlxuICAgIGxldCB0b19icCB0ID0gdCAqLiAxMF8wMDAuXG4gICAgbGV0IG9mX2JwX2ludCBpID0gb2ZfYnAgKEZsb2F0Lm9mX2ludCBpKVxuICAgIGxldCB0b19icF9pbnQgdCA9IEZsb2F0LnRvX2ludCAodG9fYnAgdClcblxuICAgIGxldCByb3VuZF9zaWduaWZpY2FudCBwIH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX211bHQgcCB+ZGVjaW1hbF9kaWdpdHMgPSBGbG9hdC5yb3VuZF9kZWNpbWFsIHAgfmRlY2ltYWxfZGlnaXRzXG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwLikgfmRlY2ltYWxfZGlnaXRzIC8uIDEwMC5cbiAgICA7O1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfYnAgcCB+ZGVjaW1hbF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfZGVjaW1hbCAocCAqLiAxMDAwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAwMC5cbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBFeHBvbmVudCBvZiBpbnRcbiAgICAgICAgfCBFeHBvbmVudF9FIG9mIGludFxuICAgICAgICB8IERlY2ltYWwgb2YgaW50XG4gICAgICAgIHwgT2NhbWxcbiAgICAgICAgfCBDb21wYWN0IG9mIGludFxuICAgICAgICB8IENvbXBhY3RfRSBvZiBpbnRcbiAgICAgICAgfCBIZXggb2YgaW50XG4gICAgICAgIHwgSGV4X0Ugb2YgaW50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgZXhwb25lbnQgfnByZWNpc2lvbiA9IEV4cG9uZW50IHByZWNpc2lvblxuICAgICAgbGV0IGV4cG9uZW50X0UgfnByZWNpc2lvbiA9IEV4cG9uZW50X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgZGVjaW1hbCB+cHJlY2lzaW9uID0gRGVjaW1hbCBwcmVjaXNpb25cbiAgICAgIGxldCBvY2FtbCA9IE9jYW1sXG4gICAgICBsZXQgY29tcGFjdCB+cHJlY2lzaW9uID0gQ29tcGFjdCBwcmVjaXNpb25cbiAgICAgIGxldCBjb21wYWN0X0UgfnByZWNpc2lvbiA9IENvbXBhY3RfRSBwcmVjaXNpb25cbiAgICAgIGxldCBoZXggfnByZWNpc2lvbiA9IEhleCBwcmVjaXNpb25cbiAgICAgIGxldCBoZXhfRSB+cHJlY2lzaW9uID0gSGV4X0UgcHJlY2lzaW9uXG5cbiAgICAgIGxldCBmb3JtYXRfZmxvYXQgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEV4cG9uZW50IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZVwiIHByZWNpc2lvblxuICAgICAgICB8IEV4cG9uZW50X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipFXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgRGVjaW1hbCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmZcIiBwcmVjaXNpb25cbiAgICAgICAgfCBPY2FtbCAtPiBzcHJpbnRmIFwiJUZcIlxuICAgICAgICB8IENvbXBhY3QgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipnXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgQ29tcGFjdF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qR1wiIHByZWNpc2lvblxuICAgICAgICB8IEhleCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmhcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXhfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkhcIiBwcmVjaXNpb25cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZm9ybWF0IHggZm9ybWF0ID1cbiAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgZmxvYXQgaW5cbiAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICB0aGVuIFwiMHhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgKCogV0FSTklORyAtIFBMRUFTRSBSRUFEIEJFRk9SRSBFRElUSU5HIFRIRVNFIEZVTkNUSU9OUzpcblxuICAgICAgICAgVGhlIHN0cmluZyBjb252ZXJ0ZXJzIGluIFN0YWJsZS5WMSBzaG91bGQgbmV2ZXIgY2hhbmdlLiAgSWYgeW91IGFyZSBjaGFuZ2luZyB0aGVcbiAgICAgICAgIHNlbWFudGljcyBvZiBhbnl0aGluZyB0aGF0IGFmZmVjdHMgdGhlIHNleHAgb3IgYmluLWlvIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcyBvZlxuICAgICAgICAgdGhpcyB0eXBlICh0aGlzIGluY2x1ZGVzIHRvX3N0cmluZyBhbmQgb2Zfc3RyaW5nKSBtYWtlIGEgU3RhYmxlLlYyIGFuZCBtYWtlIHlvdXJcbiAgICAgICAgIGNoYW5nZXMgdGhlcmUuICBUaGFua3MhICopXG4gICAgICBsZXQgdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgeF9hYnMgPSBGbG9hdC5hYnMgeCBpblxuICAgICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gc3ByaW50ZiBcIiUuNkdcIiBmbG9hdCBpblxuICAgICAgICBpZiBGbG9hdC4oID0gKSB4X2FicyAwLlxuICAgICAgICB0aGVuIFwiMHhcIlxuICAgICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAxLlxuICAgICAgICB0aGVuIHN0cmluZyAoeCAqLiAxLikgXiBcInhcIlxuICAgICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgICAgICAgZWxzZSBzdHJpbmcgKHggKi4gMTBfMDAwLikgXiBcImJwXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWFsbHlfb2Zfc3RyaW5nIHN0ciBmbG9hdF9vZl9zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJ4XCIgd2l0aFxuICAgICAgICB8IFNvbWUgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcIiVcIiB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciAqLiAwLjAxXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJicFwiIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHN0ciAtPiBvZl9icCAoZmxvYXRfb2Zfc3RyaW5nIHN0cilcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIlBlcmNlbnQub2Zfc3RyaW5nOiBtdXN0IGVuZCBpbiB4LCAlJSwgb3IgYnA6ICVzXCIgc3RyICgpKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICAgICAgbGV0IGZsb2F0IHN0ciA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi50X29mX3NleHAgKFNleHAuQXRvbSBzdHIpIGluXG4gICAgICAgIHJlYWxseV9vZl9zdHJpbmcgc3RyIGZsb2F0XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHN0ciA9IHJlYWxseV9vZl9zdHJpbmcgc3RyIEZsb2F0Lm9mX3N0cmluZ1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmdhYmxlIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHRcblxuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgYmluX2lvXVxuXG4gICAgICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdFxuICAgICAgICAgICBzZXJpYWxpemF0aW9uIHJhdGhlciB0aGFuIHBlcmNlbnQgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nXG4gICAgICAgICAgIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyBpbiB3ZSBhY2NlcHQgZWl0aGVyIHNlcmlhbGl6YXRpb24uICopXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbWF0Y2ggRmxvYXQudF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgICAgIHwgZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICBsZXQgbm9uZSA9IEZsb2F0Lm5hblxuICAgICAgbGV0IGlzX25vbmUgdCA9IEZsb2F0LmlzX25hbiB0XG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlID0gaXNfc29tZVxuICAgICAgbGV0IHNvbWUgPSBGbi5pZFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG4gICAgICBsZXQgYXBwbHlfd2l0aF9ub25lX2FzX25hbiA9ICggKi4gKVxuICAgICAgbGV0IG9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fbXVsdF93aXRoX25vbmVfYXNfbmFuID0gRm4uaWRcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlBlcmNlbnQuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IGlmIGlzX3NvbWUgdCB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0IGVsc2UgZGVmYXVsdFxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMS5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYxLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjEudCBPcHRpb24udF1cbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubGV0IGlzX3plcm8gdCA9IHQgPSAwLlxubGV0IGFwcGx5IHQgZiA9IHQgKi4gZlxubGV0IHNjYWxlIHQgZiA9IHQgKi4gZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIEZsb2F0XG5cbiAgbGV0ICggLy8gKSB4IHkgPSBvZl9tdWx0IHggLy4gb2ZfbXVsdCB5XG5lbmQgOlxuc2lnXG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvLyApIDogdCAtPiB0IC0+IGZsb2F0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgaXNfbmFuIDogdCAtPiBib29sXG4gIHZhbCBpc19pbmYgOiB0IC0+IGJvb2xcbiAgdmFsIHNpZ25fZXhuIDogdCAtPiBTaWduLnRcblxuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IHZhbGlkYXRlID0gRmxvYXQudmFsaWRhdGVfb3JkaW5hcnlcbmxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgcyA9IFN0cmluZ2FibGUub2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHNcbmxldCB0X29mX3NleHBfYWxsb3dfbmFuX2FuZF9pbmYgc2V4cCA9IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiAoU2V4cC50b19zdHJpbmcgc2V4cClcblxubW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0ICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgbGV0IHRvX3N0cmluZyB4ID0gc3ByaW50ZiBcIiUuNkclJVwiICh4ICogMTAwLilcbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5sZXQgcmFuZG9taXplIHNwYW4gfnBlcmNlbnQgfnNjYWxlID1cbiAgbGV0IG11bHQgPSBQZXJjZW50LnRvX211bHQgcGVyY2VudCBpblxuICBpZiBGbG9hdC4oIDwgKSBtdWx0IDAuIHx8IEZsb2F0LiggPiApIG11bHQgMS5cbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlNwYW4ucmFuZG9taXplOiBwZXJjZW50IGlzIG91dCBvZiByYW5nZSBbMHgsIDF4XVwiIChwZXJjZW50IDogUGVyY2VudC50KV07XG4gIGxldCBmYWN0b3IgPSBSYW5kb20uZmxvYXRfcmFuZ2UgKDEuIC0uIG11bHQpIChGbG9hdC5vbmVfdWxwIGBVcCAoMS4gKy4gbXVsdCkpIGluXG4gIHNjYWxlIHNwYW4gZmFjdG9yXG47O1xuXG5sZXQgZm9ybWF0X2RlY2ltYWwgbiB0ZW50aHMgdW5pdHMgPVxuICBhc3NlcnQgKHRlbnRocyA+PSAwICYmIHRlbnRocyA8IDEwKTtcbiAgaWYgbiA8IDEwICYmIHRlbnRocyA8PiAwXG4gIHRoZW4gc3ByaW50ZiBcIiVkLiVkJXNcIiBuIHRlbnRocyB1bml0c1xuICBlbHNlIHNwcmludGYgXCIlZCVzXCIgbiB1bml0c1xuOztcblxubGV0IHNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zID1cbiAgbGV0IHMgPVxuICAgIGlmIGhyID49IDI0XG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCAoaHIgLyAyNCkgKEludC5vZl9mbG9hdCAoRmxvYXQub2ZfaW50IChociAlIDI0KSAvLiAyLjQpKSBcImRcIlxuICAgIGVsc2UgaWYgaHIgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBociAobWluIC8gNikgXCJoXCJcbiAgICBlbHNlIGlmIG1pbiA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1pbiAoc2VjIC8gNikgXCJtXCJcbiAgICBlbHNlIGlmIHNlYyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHNlYyAobXMgLyAxMDApIFwic1wiXG4gICAgZWxzZSBpZiBtcyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1zICh1cyAvIDEwMCkgXCJtc1wiXG4gICAgZWxzZSBpZiB1cyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHVzIChucyAvIDEwMCkgXCJ1c1wiXG4gICAgZWxzZSBzcHJpbnRmIFwiJWluc1wiIG5zXG4gIGluXG4gIG1hdGNoIChzaWduIDogU2lnbi50KSB3aXRoXG4gIHwgTmVnIC0+IFwiLVwiIF4gc1xuICB8IFplcm8gfCBQb3MgLT4gc1xuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc2lnbiA6IFNpZ24udFxuICAgICAgICA7IGhyIDogaW50XG4gICAgICAgIDsgbWluIDogaW50XG4gICAgICAgIDsgc2VjIDogaW50XG4gICAgICAgIDsgbXMgOiBpbnRcbiAgICAgICAgOyB1cyA6IGludFxuICAgICAgICA7IG5zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIExpa2VfYV9mbG9hdCA9IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBGbG9hdGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCB6ZXJvIDogdFxuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IHRcbiAgICAgIHZhbCBhYnMgOiB0IC0+IHRcbiAgICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICAgIHZhbCBzY2FsZSA6IHQgLT4gZmxvYXQgLT4gdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoXVxuXG4gICAgICBpbmNsdWRlIExpa2VfYV9mbG9hdCB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgOiBzaWdcbiAgICAgICAgdmFsIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbmFub3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaW51dGUgOiB0XG4gICAgICAgIHZhbCBob3VyIDogdFxuICAgICAgICB2YWwgZGF5IDogdFxuICAgICAgZW5kXG5cbiAgICAgIHZhbCB0b19wYXJ0cyA6IHQgLT4gUGFydHMudFxuICAgICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgdHlwZSB0ID0gdW5kZXJseWluZyBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICAgICAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuXG4gICAgICAoKiBJRiBUSElTIFJFUFJFU0VOVEFUSU9OIEVWRVIgQ0hBTkdFUywgRU5TVVJFIFRIQVQgRUlUSEVSXG4gICAgICAgICAoMSkgYWxsIHZhbHVlcyBzZXJpYWxpemUgdGhlIHNhbWUgd2F5IGluIGJvdGggcmVwcmVzZW50YXRpb25zLCBvclxuICAgICAgICAgKDIpIHlvdSBhZGQgYSBuZXcgVGltZS5TcGFuIHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG4gICAgICBpbmNsdWRlIChcbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEZsb2F0XG5cbiAgICAgICAgbGV0IHNpZ24gPSBzaWduX2V4blxuICAgICAgZW5kIDpcbiAgICAgICAgTGlrZV9hX2Zsb2F0IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICAoKiB0aGlzIHByZXZlbnRzIGFueSB3b3JyeSBhYm91dCBoYXZpbmcgdGhlc2UgdmVyeSBjb21tb24gbmFtZXMgcmVkZWZpbmVkIGJlbG93IGFuZFxuICAgICAgICAgbWFrZXMgdGhlaXIgdXNhZ2Ugd2l0aGluIHRoaXMgbW9kdWxlIHNhZmVyLiAgQ29uc3RhbnQgaXMgaW5jbHVkZWQgYXQgdGhlIHZlcnlcbiAgICAgICAgIGJvdHRvbSB0byByZS1leHBvcnQgdGhlc2UgY29uc3RhbnRzIGluIGEgbW9yZSBjb252ZW5pZW50IHdheSAqKVxuICAgICAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgICAgIGxldCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kID0gMUU5XG4gICAgICAgIGxldCBtaWNyb3NlY29uZHNfcGVyX3NlY29uZCA9IDFFNlxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTNcblxuICAgICAgICAoKiBzcGFucyBhcmUgc3RvcmVkIGFzIGEgZmxvYXQgaW4gc2Vjb25kcyAqKVxuICAgICAgICBsZXQgbmFub3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBuYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgbWljcm9zZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWxsaXNlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IHNlY29uZCA9IG9mX2Zsb2F0IDEuXG4gICAgICAgIGxldCBtaW51dGUgPSBvZl9mbG9hdCA2MC5cbiAgICAgICAgbGV0IGhvdXIgPSBvZl9mbG9hdCAoNjAuICouIDYwLilcbiAgICAgICAgbGV0IGRheSA9IG9mX2Zsb2F0ICgyNC4gKi4gNjAuICouIDYwLilcbiAgICAgIGVuZFxuXG5cbiAgICAgIGxldCB0b19wYXJ0cyB0IDogUGFydHMudCA9XG4gICAgICAgIGxldCBzaWduID0gRmxvYXQuc2lnbl9leG4gdCBpblxuICAgICAgICBsZXQgdCA9IGFicyB0IGluXG4gICAgICAgIGxldCBpbnRlZ3JhbCA9IEZsb2F0LnJvdW5kX2Rvd24gdCBpblxuICAgICAgICBsZXQgZnJhY3Rpb25hbCA9IHQgLS4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IHNlY29uZHMgPSBGbG9hdC5pcm91bmRfZG93bl9leG4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuIChmcmFjdGlvbmFsICouIDFFOSkgaW5cbiAgICAgICAgbGV0IHNlY29uZHMsIG5hbm9zZWNvbmRzID1cbiAgICAgICAgICBpZiBJbnQuZXF1YWwgbmFub3NlY29uZHMgMV8wMDBfMDAwXzAwMFxuICAgICAgICAgIHRoZW4gSW50LnN1Y2Mgc2Vjb25kcywgMFxuICAgICAgICAgIGVsc2Ugc2Vjb25kcywgbmFub3NlY29uZHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNlYyA9IHNlY29uZHMgbW9kIDYwIGluXG4gICAgICAgIGxldCBtaW51dGVzID0gc2Vjb25kcyAvIDYwIGluXG4gICAgICAgIGxldCBtaW4gPSBtaW51dGVzIG1vZCA2MCBpblxuICAgICAgICBsZXQgaHIgPSBtaW51dGVzIC8gNjAgaW5cbiAgICAgICAgbGV0IG5zID0gbmFub3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgdXMgPSBtaWNyb3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kcyA9IG1pY3Jvc2Vjb25kcyAvIDEwMDAgaW5cbiAgICAgICAgbGV0IG1zID0gbWlsbGlzZWNvbmRzIGluXG4gICAgICAgIHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgKCAvICkgdCBmID0gVC5vZl9mbG9hdCAoKHQgOiBULnQgOj4gZmxvYXQpIC8uIGYpXG4gICAgbGV0ICggLy8gKSAoZiA6IFQudCkgKHQgOiBULnQpID0gKGYgOj4gZmxvYXQpIC8uICh0IDo+IGZsb2F0KVxuXG4gICAgKCogTXVsdGlwbHlpbmcgYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBkaXZpc2lvbiBieSAxRS0zICopXG4gICAgbGV0IHRvX25zICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm5hbm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fdXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWljcm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fbXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWlsbGlzZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fc2VjICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KVxuICAgIGxldCB0b19taW4geCA9IHggLy8gVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgdG9faHIgeCA9IHggLy8gVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IHRvX2RheSB4ID0geCAvLyBULkNvbnN0YW50LmRheVxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHggPSBGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4biAodG9fc2VjIHgpXG4gICAgbGV0ICggKiogKSBmICh0IDogVC50KSA9IFQub2ZfZmxvYXQgKGYgKi4gKHQgOj4gZmxvYXQpKVxuXG4gICAgKCogRGl2aXNpb24gYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBtdWx0aXBseWluZyBieSAxRS0zICopXG4gICAgbGV0IG9mX25zIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfdXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfbXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2Zfc2VjIHggPSBULm9mX2Zsb2F0IHhcbiAgICBsZXQgb2ZfaW50X3NlYyB4ID0gb2Zfc2VjIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50MzJfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDMyLnRvX2Zsb2F0IHNlYylcblxuICAgICgqIE5vdGUgdGhhdCBbSW50NjMudG9fZmxvYXRdIGNhbiBsb3NlIHByZWNpc2lvbiwgYnV0IG9ubHkgb24gaW5wdXRzIGxhcmdlIGVub3VnaCB0aGF0XG4gICAgICAgW29mX3NlY10gaW4gZWl0aGVyIHRoZSBUaW1lX25zIG9yIFRpbWVfZmxvYXQgY2FzZSB3b3VsZCBsb3NlIHByZWNpc2lvbiAob3IganVzdCBiZVxuICAgICAgIHBsYWluIG91dCBvZiBib3VuZHMpIGFueXdheS4gKilcbiAgICBsZXQgb2ZfaW50NjNfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDYzLnRvX2Zsb2F0IHNlYylcbiAgICBsZXQgb2ZfbWluIHggPSB4ICoqIFQuQ29uc3RhbnQubWludXRlXG4gICAgbGV0IG9mX2hyIHggPSB4ICoqIFQuQ29uc3RhbnQuaG91clxuICAgIGxldCBvZl9kYXkgeCA9IHggKiogVC5Db25zdGFudC5kYXlcblxuICAgIGxldCBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHQgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0XG4gICAgICB8IFNlY29uZCAtPiB0b19zZWMgdFxuICAgICAgfCBNaW51dGUgLT4gdG9fbWluIHRcbiAgICAgIHwgSG91ciAtPiB0b19ociB0XG4gICAgICB8IERheSAtPiB0b19kYXkgdFxuICAgIDs7XG5cbiAgICBsZXQgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBvZl9ucyBmbG9hdFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBvZl91cyBmbG9hdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBvZl9tcyBmbG9hdFxuICAgICAgfCBTZWNvbmQgLT4gb2Zfc2VjIGZsb2F0XG4gICAgICB8IE1pbnV0ZSAtPiBvZl9taW4gZmxvYXRcbiAgICAgIHwgSG91ciAtPiBvZl9ociBmbG9hdFxuICAgICAgfCBEYXkgLT4gb2ZfZGF5IGZsb2F0XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICA/KHNpZ24gPSBTaWduLlBvcylcbiAgICAgICAgICA/KGRheSA9IDApXG4gICAgICAgICAgPyhociA9IDApXG4gICAgICAgICAgPyhtaW4gPSAwKVxuICAgICAgICAgID8oc2VjID0gMClcbiAgICAgICAgICA/KG1zID0gMClcbiAgICAgICAgICA/KHVzID0gMClcbiAgICAgICAgICA/KG5zID0gMClcbiAgICAgICAgICAoKVxuICAgICAgPVxuICAgICAgbGV0ICggKyApID0gVC4oICsgKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICBvZl9kYXkgKEZsb2F0Lm9mX2ludCBkYXkpXG4gICAgICAgICsgb2ZfaHIgKEZsb2F0Lm9mX2ludCBocilcbiAgICAgICAgKyBvZl9taW4gKEZsb2F0Lm9mX2ludCBtaW4pXG4gICAgICAgICsgb2Zfc2VjIChGbG9hdC5vZl9pbnQgc2VjKVxuICAgICAgICArIG9mX21zIChGbG9hdC5vZl9pbnQgbXMpXG4gICAgICAgICsgb2ZfdXMgKEZsb2F0Lm9mX2ludCB1cylcbiAgICAgICAgKyBvZl9ucyAoRmxvYXQub2ZfaW50IG5zKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBOZWcgLT4gVC4oIC0gKSBULnplcm8gdFxuICAgICAgfCBQb3MgfCBaZXJvIC0+IHRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb25zdGFudFxuXG4gICAgbGV0IHJhbmRvbWl6ZSB0IH5wZXJjZW50ID0gU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IH5wZXJjZW50IH5zY2FsZVxuXG4gICAgbGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgICAgIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICAgICAgU3Bhbl9oZWxwZXJzLnNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zXG4gICAgOztcblxuICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYW55IG1hdGVyaWFsIHdheSwgbWFrZSBzdXJlXG4gICAgICAgeW91IHVwZGF0ZSBTdGFibGUgYXBwcm9wcmlhdGVseS4gKilcbiAgICBsZXQgb2Zfc3RyaW5nX3YxX3YyIChzIDogc3RyaW5nKSB+aXNfdjIgPVxuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gZmFpbHdpdGggXCJlbXB0eSBzdHJpbmdcIlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgZmxvYXQgbiA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcuZHJvcF9zdWZmaXggcyBuIHdpdGhcbiAgICAgICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcIm5vIG51bWJlciBnaXZlblwiXG4gICAgICAgICAgICB8IHMgLT5cbiAgICAgICAgICAgICAgbGV0IHYgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgICAgICAgICAgICBWYWxpZGF0ZS5tYXliZV9yYWlzZSAoRmxvYXQudmFsaWRhdGVfb3JkaW5hcnkgdik7XG4gICAgICAgICAgICAgIHZcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAobWF0Y2ggcy5bSW50LiggLSApIGxlbiAxXSB3aXRoXG4gICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgaWYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ20nXG4gICAgICAgICAgICAgdGhlbiBvZl9tcyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICd1J1xuICAgICAgICAgICAgIHRoZW4gb2ZfdXMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBpZiBpc192MiAmJiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbidcbiAgICAgICAgICAgICB0aGVuIG9mX25zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgVC5vZl9mbG9hdCAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnbScgLT4gb2ZfbWluIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdoJyAtPiBvZl9ociAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnZCcgLT4gb2ZfZGF5IChmbG9hdCAxKVxuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBpZiBpc192MlxuICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG5zLCB1cywgbXMsIHMsIG0sIGgsIG9yIGQuXCJcbiAgICAgICAgICAgICBlbHNlIGZhaWx3aXRoIFwiVGltZSBzcGFucyBtdXN0IGVuZCBpbiBtcywgcywgbSwgaCwgb3IgZC5cIilcbiAgICAgIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZiBcIlNwYW4ub2Zfc3RyaW5nIGNvdWxkIG5vdCBwYXJzZSAnJXMnOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHAgPSBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cFxuXG4gICAgZXhjZXB0aW9uIFRfb2Zfc2V4cCBvZiBTZXhwLnQgKiBleG4gW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwX2V4cGVjdGVkX2F0b21fYnV0X2dvdCBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjIgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nX3YxX3YyIHggfmlzX3YyIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHAgKHNleHAsIGV4bikpIHNleHApXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IHNleHApIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHN0cmluZyB+aXNfdjIgc3VmZml4IGZsb2F0ID1cbiAgICAgIGlmIGlzX3YyXG4gICAgICAoKiBUaGlzIGlzIHRoZSBzYW1lIGZsb2F0LXRvLXN0cmluZyBjb252ZXJzaW9uIHVzZWQgaW4gW0Zsb2F0LnNleHBfb2ZfdF0uICBJdCdzIGxpa2VcbiAgICAgICAgIFtGbG9hdC50b19zdHJpbmddLCBidXQgbWF5IGxlYXZlIG9mZiB0cmFpbGluZyBwZXJpb2QuICopXG4gICAgICB0aGVuICFTZXhwbGliLkNvbnYuZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgZmxvYXQgXiBzdWZmaXhcbiAgICAgIGVsc2Ugc3ByaW50ZiBcIiVnJXNcIiBmbG9hdCBzdWZmaXhcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgICgqIEknZCBsaWtlIGl0IHRvIGJlIHRoZSBjYXNlIHRoYXQgeW91IGNvdWxkIG5ldmVyIGNvbnN0cnVjdCBhbiBpbmZpbml0ZSBzcGFuLCBidXQgSVxuICAgICAgIGNhbid0IHRoaW5rIG9mIGEgZ29vZCB3YXkgdG8gZW5mb3JjZSBpdC4gIFNvIHRoaXMgdG9fc3RyaW5nIGZ1bmN0aW9uIGNhbiBwcm9kdWNlXG4gICAgICAgc3RyaW5ncyB0aGF0IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhleSBhcmUgZmVkIHRvIG9mX3N0cmluZyAqKVxuICAgIGxldCB0b19zdHJpbmdfdjFfdjIgKHQgOiBULnQpIH5pc192MiA9XG4gICAgICAoKiB0aGlzIGlzIGEgc2FkIGJyb2tlbiBhYnN0cmFjdGlvbi4uLiAqKVxuICAgICAgbGV0IG1vZHVsZSBDID0gRmxvYXQuQ2xhc3MgaW5cbiAgICAgIG1hdGNoIEZsb2F0LmNsYXNzaWZ5ICh0IDo+IGZsb2F0KSB3aXRoXG4gICAgICB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+IFwiMHNcIlxuICAgICAgfCBDLkluZmluaXRlIC0+IGlmIFQuKCA+ICkgdCBULnplcm8gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgICAgIHwgQy5OYW4gLT4gXCJuYW5cIlxuICAgICAgfCBDLk5vcm1hbCAtPlxuICAgICAgICBsZXQgKCA8ICkgPSBULiggPCApIGluXG4gICAgICAgIGxldCBhYnNfdCA9IFQub2ZfZmxvYXQgKEZsb2F0LmFicyAodCA6PiBmbG9hdCkpIGluXG4gICAgICAgIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWNyb3NlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJuc1wiICh0b19ucyB0KVxuICAgICAgICBlbHNlIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWxsaXNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJ1c1wiICh0b191cyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5zZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibXNcIiAodG9fbXMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQubWludXRlXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInNcIiAodG9fc2VjIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LmhvdXJcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibVwiICh0b19taW4gdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuZGF5XG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcImhcIiAodG9faHIgdClcbiAgICAgICAgZWxzZSBzdHJpbmcgfmlzX3YyIFwiZFwiICh0b19kYXkgdClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdF92MV92MiB0IH5pc192MiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3YxX3YyIHQgfmlzX3YyKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MjpmYWxzZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192MjpmYWxzZVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWMVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOnRydWVcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjI6dHJ1ZVxuICBlbmRcblxuICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICBsZXQgb3BlbiBUIGluXG4gICAgICBsZXQgb3BlbiBDb25zdGFudCBpblxuICAgICAgbGV0IGFic190ID0gVC5hYnMgdCBpblxuICAgICAgaWYgYWJzX3QgPj0gZGF5XG4gICAgICB0aGVuIERheVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBob3VyXG4gICAgICB0aGVuIEhvdXJcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gICAgICB0aGVuIE1pbnV0ZVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgICAgIHRoZW4gU2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pbGxpc2Vjb25kXG4gICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gICAgICB0aGVuIE1pY3Jvc2Vjb25kXG4gICAgICBlbHNlIE5hbm9zZWNvbmRcbiAgICA7O1xuXG4gICAgbGV0IG9mX3VuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50IC0+IFQudCA9XG4gICAgICBsZXQgb3BlbiBULkNvbnN0YW50IGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWljcm9zZWNvbmRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgICAgIHwgU2Vjb25kIC0+IHNlY29uZFxuICAgICAgfCBNaW51dGUgLT4gbWludXRlXG4gICAgICB8IEhvdXIgLT4gaG91clxuICAgICAgfCBEYXkgLT4gZGF5XG4gICAgOztcblxuICAgIGxldCBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBcIm5zXCJcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gXCJ1c1wiXG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IFwibXNcIlxuICAgICAgfCBTZWNvbmQgLT4gXCJzXCJcbiAgICAgIHwgTWludXRlIC0+IFwibVwiXG4gICAgICB8IEhvdXIgLT4gXCJoXCJcbiAgICAgIHwgRGF5IC0+IFwiZFwiXG4gICAgOztcblxuICAgIG1vZHVsZSBPZl9zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gICAgICAgIGxldCBtZXNzYWdlID0gXCJUaW1lLlNwYW4ub2Zfc3RyaW5nOiBcIiBeIHJlYXNvbiBpblxuICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBtZXNzYWdlIHN0cmluZ11cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggdW5pdF9vZl90aW1lX2xpc3QgPVxuICAgICAgICBtYXRjaCB1bml0X29mX3RpbWVfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBzdWZmaXhcIlxuICAgICAgICB8IHVuaXRfb2ZfdGltZSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IHN1ZmZpeCA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgaWYgU3RyaW5nLmlzX3N1YnN0cmluZ19hdCBzdHJpbmcgfnBvczppbmRleCB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgICAgIHRoZW4gdW5pdF9vZl90aW1lXG4gICAgICAgICAgZWxzZSBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCByZXN0XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfc3VmZml4IHN0cmluZyB+aW5kZXggPVxuICAgICAgICAoKiBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgXCJtc1wiIGNvbWVzIGJlZm9yZSBcIm1cIiBpbiBbVW5pdF9vZl90aW1lLmFsbF0gdG8gZ2V0IGFcbiAgICAgICAgICAgY29ycmVjdCBtYXRjaCBvbiBtaWxsaXNlY29uZCB0aW1lc3RhbXBzLiBUaGlzIGFzc3VtcHRpb24gaXMgZGVtb25zdHJhdGVkIGluIHRoZVxuICAgICAgICAgICBleHBlY3QgdGVzdCBiZWxvdy4gKilcbiAgICAgICAgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggVW5pdF9vZl90aW1lLmFsbFxuICAgICAgOztcblxuICAgICAgKCogV2UgdmFsaWRhdGUgbWFnbml0dWRlIHN0cmluZ3Mgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB1bml0LW9mLXRpbWUgc3VmZml4XG4gICAgICAgICBiZWdpbnMsIGFuZCBzbyB0aGF0IG9ubHkgc2Vuc2libGUgc3RyaW5ncyBhcmUgYWxsb3dlZC4gV2UgZG8gbm90IHdhbnQgdG8gYmUgYXNcbiAgICAgICAgIHBlcm1pc3NpdmUgYXMgW0Zsb2F0Lm9mX3N0cmluZ107IGZvciBleGFtcGxlLCBoZXhhZGVjaW1hbCBzcGFuIG1hZ25pdHVkZXMgYXJlIG5vdFxuICAgICAgICAgYWxsb3dlZC4gQWZ0ZXIgdmFsaWRhdGlvbiwgd2Ugc3RpbGwgdXNlIFtGbG9hdC5vZl9zdHJpbmddIHRvIHByb2R1Y2UgdGhlIGFjdHVhbFxuICAgICAgICAgdmFsdWUuICopXG4gICAgICBtb2R1bGUgRmxvYXRfcGFyc2VyID0gc3RydWN0XG4gICAgICAgICgqIFtJbl9kZWNpbWFsX2hhdmVfZGlnaXRdIGluY2x1ZGVzIGhhdmluZyBhIGRpZ2l0IGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4gKilcbiAgICAgICAgdHlwZSBzdGF0ZSA9XG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuXG4gICAgICAgIHR5cGUgdG9rZW4gPVxuICAgICAgICAgIHwgRGlnaXRcbiAgICAgICAgICB8IFBvaW50XG4gICAgICAgICAgfCBVbmRlclxuICAgICAgICAgIHwgU2lnblxuICAgICAgICAgIHwgRXhwdFxuXG4gICAgICAgIGxldCBzdGF0ZV9pc19maW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0IC0+IHRydWVcbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQgLT4gZmFsc2VcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9rZW5fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCAnMCcgLi4gJzknIC0+IFNvbWUgRGlnaXRcbiAgICAgICAgICB8ICcuJyAtPiBTb21lIFBvaW50XG4gICAgICAgICAgfCAnXycgLT4gU29tZSBVbmRlclxuICAgICAgICAgIHwgJy0nIHwgJysnIC0+IFNvbWUgU2lnblxuICAgICAgICAgIHwgJ0UnIHwgJ2UnIC0+IFNvbWUgRXhwdFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBtYWduaXR1ZGVcIlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4IH5sZW4gfnN0YXRlID1cbiAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgIGlmIGluZGV4ID0gbGVuXG4gICAgICAgICAgdGhlbiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCB0b2tlbl9vZl9jaGFyIHN0cmluZy5baW5kZXhdIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICB8IFNvbWUgdG9rZW4gLT5cbiAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzdGF0ZSwgdG9rZW4gd2l0aFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFNpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFBvaW50IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBTaWduIC0+XG4gICAgICAgICAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBTaWduIC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXg6KGluZGV4ICsgMSkgfmxlbiB+c3RhdGUpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGU6SW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHJlYyBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXggfmxlbiA9XG4gICAgICAgIGlmIEludC5lcXVhbCBpbmRleCBsZW5cbiAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHN1ZmZpeF9pbmRleCA9IEZsb2F0X3BhcnNlci5maW5kX2luZGV4X2FmdGVyX2Zsb2F0IHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleDpzdWZmaXhfaW5kZXggaW5cbiAgICAgICAgICBsZXQgdW50aWxfaW5kZXggPVxuICAgICAgICAgICAgSW50LiggKyApIHN1ZmZpeF9pbmRleCAoU3RyaW5nLmxlbmd0aCAoc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZsb2F0X3N0cmluZyA9XG4gICAgICAgICAgICBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOmluZGV4IH5sZW46KEludC4oIC0gKSBzdWZmaXhfaW5kZXggaW5kZXgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXQgPSBGbG9hdC5vZl9zdHJpbmcgZmxvYXRfc3RyaW5nIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IG1hZ25pdHVkZSArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXg6dW50aWxfaW5kZXggfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGU6VC56ZXJvIH5pbmRleCB+bGVuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIG1hdGNoIHN0cmluZyB3aXRoXG4gICAgICAgIHwgXCJOQU5zXCIgLT4gb2Zfc2VjIEZsb2F0Lm5hblxuICAgICAgICB8IFwiLUlORnNcIiAtPiBvZl9zZWMgRmxvYXQubmVnX2luZmluaXR5XG4gICAgICAgIHwgXCJJTkZzXCIgLT4gb2Zfc2VjIEZsb2F0LmluZmluaXR5XG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IGlucHV0XCI7XG4gICAgICAgICAgbGV0IG5lZ2F0aXZlLCBpbmRleCA9XG4gICAgICAgICAgICBtYXRjaCBzdHJpbmcuWzBdIHdpdGhcbiAgICAgICAgICAgIHwgJy0nIC0+IHRydWUsIDFcbiAgICAgICAgICAgIHwgJysnIC0+IGZhbHNlLCAxXG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UsIDBcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGluZGV4ID49IGxlbiB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcGFyc2VfbWFnbml0dWRlIHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gVC5uZWcgbWFnbml0dWRlIGVsc2UgbWFnbml0dWRlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IE9mX3N0cmluZy5vZl9zdHJpbmdcblxuICAgIG1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIGZsb2F0ID1cbiAgICAgICAgbGV0IHN0cmluZyA9IEZsb2F0LnRvX3N0cmluZyBmbG9hdCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gXCIuXCIgaW5cbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICB0aGVuIFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXhcbiAgICAgICAgZWxzZSBzdHJpbmdcbiAgICAgIDs7XG5cbiAgICAgICgqIEFzIHdlIGJ1aWxkIHVwIGEgc3RyaW5nLCB3ZSBrZWVwIGEgcnVubmluZyBzdW0gb2YgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSByZWFkXG4gICAgICAgICBiYWNrIGluLCBzbyB0aGF0IHdlIGNhbiBjb21wdXRlIHRoZSByZW1haW5kZXIgdGhhdCBuZWVkcyB0byBiZSBnZW5lcmF0ZWQuICopXG4gICAgICBsZXQgc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgPVxuICAgICAgICBzdW1fdCArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBtYWduaXR1ZGUgdW5pdF9vZl90aW1lXG4gICAgICA7O1xuXG4gICAgICAoKiBGb3Igc29tZSB1bml0cyAodmVyeSBsYXJnZSBudW1iZXJzIG9mIGRheXMsIG9yIHNlY29uZHMgYW5kIHNtYWxsZXIpIHdlIGp1c3RcbiAgICAgICAgIHJlbmRlciBhIGZsb2F0IGRpcmVjdGx5LCB3aXRoIGEgZml4IGZvciByb3VuZG9mZiBlcnJvci4gKilcbiAgICAgIGxldCB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZSA9XG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIGFic190IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgIGlmIHN1bV90ID0gYWJzX3RcbiAgICAgICAgdGhlblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID1cbiAgICAgICAgICAgIGlmIHN1bV90IDwgYWJzX3RcbiAgICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgICBlbHNlIGRpdmlkZV9ieV91bml0X29mX3RpbWUgKHByZXYgYWJzX3QpIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN1bV90ID0gc3VtIH5zdW1fdDp6ZXJvIH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgZml4dXBfbWFnbml0dWRlID0gZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSByZW1fdCBmaXh1cF91bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIG1hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICAoKiBbcmVtX3RdIGlzIGF0IFVMUCBzaXplIG9mIFthYnNfdF0sIGl0IG5lZWRzIGp1c3Qgb25lIGJpdCBvZiBwcmVjaXNpb24gKilcbiAgICAgICAgICBeIHNwcmludGYgXCIlLjFnXCIgZml4dXBfbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIGZpeHVwX3VuaXRfb2ZfdGltZSlcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBub24tZGVjaW1hbCB1bml0cyAobWludXRlcyBhbmQgZ3JlYXRlciksIHdlIHJlbmRlciBhbiBpbnRlZ2VyIG1hZ25pdHVkZSwgYW5kXG4gICAgICAgICByZXR1cm4gdGhhdCB3aXRoIHRoZSBydW5uaW5nIHN1bSBzbyB0aGUgcmVtYWluZGVyIGNhbiBiZSByZW5kZXJlZCBhdCBhIHNtYWxsZXJcbiAgICAgICAgIHVuaXQuICopXG4gICAgICBsZXQgdG9faW50X3N0cmluZ19hbmRfc3VtIHVuaXRfb2ZfdGltZSB+YWJzX3QgfnN1bV90ID1cbiAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAoKiBXZSBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIG11bHRpcGxlIG9mIFt1bml0X29mX3RpbWVdIHRoYXQgbmVlZHMgdG8gYmVcbiAgICAgICAgICAgYWRkZWQgdG8gW3N1bV90XS4gRHVlIHRvIHJvdW5kaW5nLCB0aGlzIGNhbiBiZSBvZmYgYnkgb25lICh3ZSd2ZSBuZXZlciBzZWVuIGFcbiAgICAgICAgICAgY2FzZSBvZmYgYnkgdHdvIG9yIG1vcmUpLCBzbyB3ZSByZS1jb21wdXRlIHRoZSByZW1haW5kZXIgYW5kIGNvcnJlY3QgaWZcbiAgICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgICBsZXQgbWFnbml0dWRlID0gRmxvYXQucm91bmRfZG93biAocmVtX3QgLy8gdW5pdF9zcGFuKSBpblxuICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgIGlmIG5ld19yZW1fdCA9IHplcm9cbiAgICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICAgIGVsc2UgaWYgbmV3X3JlbV90IDwgemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlIC0uIDEuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dF9tYWduaXR1ZGUgPSBtYWduaXR1ZGUgKy4gMS4gaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGU6bmV4dF9tYWduaXR1ZGUgaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3JlbV90ID0gYWJzX3QgLSBuZXh0X3N1bV90IGluXG4gICAgICAgICAgICBpZiBuZXh0X3JlbV90IDwgemVybyB0aGVuIG1hZ25pdHVkZSBlbHNlIG5leHRfbWFnbml0dWRlKVxuICAgICAgICBpblxuICAgICAgICBpZiBGbG9hdC4oIDw9ICkgbWFnbml0dWRlIDAuXG4gICAgICAgIHRoZW4gXCJcIiwgc3VtX3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHN0cmluZyA9XG4gICAgICAgICAgICBJbnQ2My50b19zdHJpbmcgKEludDYzLm9mX2Zsb2F0IG1hZ25pdHVkZSlcbiAgICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIHN0cmluZywgbmV3X3N1bV90KVxuICAgICAgOztcblxuICAgICAgbGV0IGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHQgPSBGbG9hdC5sb2cxMCAodG9fc2VjIHQpXG5cbiAgICAgICgqIFRoZSBmaW5hbCBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBuZWVkcyB0byBiZSBwcmludGVkIHdpdGggZW5vdWdoIGRpZ2l0cyB0b1xuICAgICAgICAgcm91bmQtdHJpcCB0aGUgd2hvbGUgc3BhbiAod2hpY2ggaXMgbWludXRlcyBvciBncmVhdGVyKTsgdGhpcyBjYW4gYmVcbiAgICAgICAgIHNpZ25pZmljYW50bHkgZmV3ZXIgZGlnaXRzIHRoYW4gd291bGQgYmUgbmVlZGVkIGZvciB0aGUgc2Vjb25kcy1vci1zbWFsbGVyXG4gICAgICAgICByZW1haW5kZXIgaXRzZWxmLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZ19hZnRlcl9pbnRfc3RyaW5ncyB+c3VtX3QgfmFic190ID1cbiAgICAgICAgaWYgc3VtX3QgPj0gYWJzX3RcbiAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gdG9fdW5pdF9vZl90aW1lIHJlbV90IGluXG4gICAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcmVtX3QgLy8gdW5pdF9zcGFuIGluXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgICAgaWYgYWJzIHJlbV90IDw9IGFicyBuZXdfcmVtX3RcbiAgICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgPVxuICAgICAgICAgICAgICBGbG9hdC5pcm91bmRfZG93bl9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHJlbV90KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBoYWxmX3VscCA9IChhYnNfdCAtIHByZXYgYWJzX3QpIC8gMi4gaW5cbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXQgPVxuICAgICAgICAgICAgICAoKiBUaGlzIHdvcmtzIG91dCB0byByb3VuZGluZyBkb3duLCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgZXhhY3QgaW50ZWdlcnMsXG4gICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBkZWNyZW1lbnRlZC4gVGhpcyBtYWtlcyBzdXJlIHdlIGFsd2F5cyBzdG9wIGF0IGEgZGlnaXQgd2l0aFxuICAgICAgICAgICAgICAgICBzdHJpY3RseSBtb3JlIHByZWNpc2lvbiB0aGFuIGhhbGYgdGhlIFVMUC4gKilcbiAgICAgICAgICAgICAgSW50LnByZWQgKEZsb2F0Lmlyb3VuZF91cF9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIGhhbGZfdWxwKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbnVtYmVyX29mX2RpZ2l0cyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIDEgKyBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgLSBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICAgIHNwcmludGYgXCIlLipnXCIgbnVtYmVyX29mX2RpZ2l0cyBtYWduaXR1ZGUgXiBzdWZmaXgpKVxuICAgICAgOztcblxuICAgICAgKCogVGhpcyBoZWxwZXIgYXZvaWRzIHVubmVjZXNzYXJ5IGFsbG9jYXRpb24sIGJlY2F1c2UgZm9yIG91ciB1c2UgYmVsb3csIGl0IGlzXG4gICAgICAgICBjb21tb24gdG8gaGF2ZSBlaXRoZXIgb3IgYm90aCBhcmd1bWVudHMgYmUgZW1wdHkuIEN1cnJlbnRseSAoMjAxOC0wMiksIHRoZVxuICAgICAgICAgYnVpbHQtaW4gW15dIGFsbG9jYXRlcyBldmVuIHdoZW4gYXBwZW5kaW5nIHRvIGFuIGVtcHR5IHN0cmluZy4gKilcbiAgICAgIGxldCAoIF4/ICkgeCB5ID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHggdGhlbiB5IGVsc2UgaWYgU3RyaW5nLmlzX2VtcHR5IHkgdGhlbiB4IGVsc2UgeCBeIHlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIGxldCBmbG9hdCA9IHRvX2Zsb2F0IHQgaW5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgZmxvYXQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAoKiBXZSBwcmludCBzcGVjaWZpYyBzcGVjaWFsIHN0cmluZ3MgZm9yIG5vbi1maW5pdGUgZmxvYXRzICopXG4gICAgICAgICAgICBGbG9hdC5pc19uYW4gZmxvYXRcbiAgICAgICAgICB0aGVuIFwiTkFOc1wiXG4gICAgICAgICAgZWxzZSBpZiBGbG9hdC5pc19uZWdhdGl2ZSBmbG9hdFxuICAgICAgICAgIHRoZW4gXCItSU5Gc1wiXG4gICAgICAgICAgZWxzZSBcIklORnNcIlxuICAgICAgICBlbHNlIGlmIHQgPSB6ZXJvXG4gICAgICAgIHRoZW4gXCIwc1wiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgdCBpblxuICAgICAgICAgIGxldCBhYnNfdCA9IGFicyB0IGluXG4gICAgICAgICAgbGV0IHNpZ24gPSBpZiB0IDwgemVybyB0aGVuIFwiLVwiIGVsc2UgXCJcIiBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGVfc3RyaW5nID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZSB3aXRoXG4gICAgICAgICAgICAoKiBXZSBjYW4gdXNlIG5vcm1hbCBmbG9hdCBub3RhdGlvbiBmb3Igc2Vjb25kcyBhbmQgc3ViLXNlY29uZCB1bml0cywgdGhleSBhcmVcbiAgICAgICAgICAgICAgIHJlYWRhYmxlIHdpdGggYSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIHwgTWljcm9zZWNvbmQgfCBNaWxsaXNlY29uZCB8IFNlY29uZCAtPlxuICAgICAgICAgICAgICB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZTpOYW5vc2Vjb25kXG4gICAgICAgICAgICAoKiBGb3IgbGFyZ2UgZW5vdWdoIHZhbHVlcyB0aGF0IHRoZSBVTFAgaXMgYSBkYXkgb3IgbW9yZSwgd2UgY2FuIHVzZSBmbG9hdFxuICAgICAgICAgICAgICAgbm90YXRpb24gYmVjYXVzZSB3ZSBhcmUgZXhwcmVzc2luZyBhIHNpbmdsZSwgdmVyeSBsYXJnZSBpbnRlZ2VyLiAqKVxuICAgICAgICAgICAgfCBEYXkgd2hlbiBuZXh0IGFic190IC0gYWJzX3QgPj0gZGF5IC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOkRheVxuICAgICAgICAgICAgKCogRm9yIGV2ZXJ5dGhpbmcgaW4gYmV0d2Vlbiwgd2UgbmVlZCB0byB1c2UgaW50ZWdlciB1bml0cyBvZiBkYXlzLCBob3VycyxcbiAgICAgICAgICAgICAgIGFuZC9vciBtaW51dGVzLCBiZWNhdXNlIHRob3NlIHVuaXRzIGFyZSBub3QgcmVhZGFibGUgYXMgZGVjaW1hbHMsIGFuZCB3ZVxuICAgICAgICAgICAgICAgdGFjayBvbiBhIGRlY2ltYWwgcmVtYWluZGVyIG9mIGEgc2Vjb25kcy1vci1zbWFsbGVyIHVuaXQgaWYgbmVjZXNzYXJ5LiAqKVxuICAgICAgICAgICAgfCBNaW51dGUgfCBIb3VyIHwgRGF5IC0+XG4gICAgICAgICAgICAgIGxldCBzdW1fdCA9IHplcm8gaW5cbiAgICAgICAgICAgICAgbGV0IGRheV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgRGF5IGluXG4gICAgICAgICAgICAgIGxldCBob3VyX3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBIb3VyIGluXG4gICAgICAgICAgICAgIGxldCBtaW51dGVfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IE1pbnV0ZSBpblxuICAgICAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID0gdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5hYnNfdCB+c3VtX3QgaW5cbiAgICAgICAgICAgICAgZGF5X3N0cmluZyBePyBob3VyX3N0cmluZyBePyBtaW51dGVfc3RyaW5nIF4/IGZsb2F0X3N0cmluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2lnbiBePyBtYWduaXR1ZGVfc3RyaW5nKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgcylcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3Bhbi5TdGFibGUuVjMudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WM1xuXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0ID0gdG9fZmxvYXRcblxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBGbG9hdC5nZW5faW5jbCAodG9fc2VjIGxvKSAodG9fc2VjIGhpKSB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc2VjXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gICgqIFRlY2huaWNhbGx5IGV4Y2x1c2l2ZSByYXRoZXIgdGhhbiBpbmNsdXNpdmUsIGJ1dCBvdGhlcndpc2Ugc2F0aXNmaWVzIHRoZSBjb250cmFjdCB0b1xuICAgICB3aXRoaW4gMXVscCBvZiB0aGUgZ2l2ZW4gYm91bmRzLiAqKVxuICBGbG9hdC5nZW5fdW5pZm9ybV9leGNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICgqIFdlIGdlbmVyYXRlIHNwYW5zIHVwIHRvIChzbGlnaHRseSBtb3JlIHRoYW4pIGEgbWlsbGVuaXVtLCBwb3NpdGl2ZSBvciBuZWdhdGl2ZS4gVGhpc1xuICAgICBpcyBiYXNlZCBvbiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLCBpbiB3aGljaCB5ZWFycyBhdmVyYWdlIDM2NS4yNDI1IGRheXMgd2hlblxuICAgICBhY2NvdW50aW5nIGZvciBsZWFwIGRheXMuIENvdmVyaW5nIGEgdHdvLW1pbGxlbml1bSBzcGFuIGlzIG1vcmUgdGhhbiBlbm91Z2ggZm9yIG1vc3RcbiAgICAgcHJhY3RpY2FsIHB1cnBvc2VzLCBjZXJ0YWlubHkgbW9yZSB0aGFuIGVub3VnaCB0byBjb3ZlciB0aGUgcmVwcmVzZW50YWJsZSByYW5nZSBvZlxuICAgICBbU3Bhbl9uc10sIGFuZCByZXN1bHRzIGluIGZpbml0ZSBzcGFucyBhbmQgdGltZXMgdGhhdCBjYW4gYmUgc2VyaWFsaXplZC5cblxuICAgICBXZSBnZW5lcmF0ZSBieSBmaWx0ZXJpbmcgdGhlIGRlZmF1bHQgZ2VuZXJhdG9yIHNvIHRoYXQgc3BhbnMgYXJlIHN0aWxsIHNrZXdlZCB0b3dhcmRcbiAgICAgc21hbGwgdmFsdWVzLCBldmVuIHRob3VnaCB0aGUgYm91bmRzIGFyZSBsYXJnZS4gKilcbiAgbGV0IG1pbGxlbml1bSA9IG9mX2RheSAoRmxvYXQucm91bmRfdXAgKDM2NS4yNDI1ICouIDEwMDAuKSkgaW5cbiAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOihmdW4gdCAtPlxuICAgIG5lZyBtaWxsZW5pdW0gPD0gdCAmJiB0IDw9IG1pbGxlbml1bSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuU3BhblwiXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcblxuICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBzcGFucyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb20gMTA4LjA3XG4gICAgIHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZCBwcmV0dHlcbiAgICAgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWQgZnJvbVxuICAgICByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lXG4gIGxldCBwYXJzZV9zdWZmaXggPSBTdGFibGUuVjMuT2Zfc3RyaW5nLnBhcnNlX3N1ZmZpeFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgU3BhbiA9IFNwYW5fZmxvYXRcblxuKCogQ3JlYXRlIGFuIGFic3RyYWN0IHR5cGUgZm9yIE9mZGF5IHRvIHByZXZlbnQgdXMgZnJvbSBjb25mdXNpbmcgaXQgd2l0aFxuICAgb3RoZXIgZmxvYXRzLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0XG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGFkZCA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgc3ViIDogdCAtPiBTcGFuLnQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHByZXYgOiB0IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCA6IFNwYW4udCAtPiB0XG4gICAgICB2YWwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgOiBTcGFuLnQgLT4gYm9vbFxuICAgICAgdmFsIHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBzdGFydF9vZl9kYXkgOiB0XG4gICAgICB2YWwgc3RhcnRfb2ZfbmV4dF9kYXkgOiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICAoKiBOdW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodC4gKilcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICAgICAgaW5jbHVkZSAoXG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdFxuXG4gICAgICAgIGxldCBzaWduID0gc2lnbl9leG5cbiAgICAgIGVuZCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGVuZClcblxuICAgICAgKCogSUYgVEhJUyBSRVBSRVNFTlRBVElPTiBFVkVSIENIQU5HRVMsIEVOU1VSRSBUSEFUIEVJVEhFUlxuICAgICAgICAgKDEpIGFsbCB2YWx1ZXMgc2VyaWFsaXplIHRoZSBzYW1lIHdheSBpbiBib3RoIHJlcHJlc2VudGF0aW9ucywgb3JcbiAgICAgICAgICgyKSB5b3UgYWRkIGEgbmV3IFRpbWUuT2ZkYXkgdmVyc2lvbiB0byBzdGFibGUubWwgKilcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gICAgICAoKiBBbm90aGVyIHJlYXNvbmFibGUgY2hvaWNlIHdvdWxkIGJlIG9ubHkgYWxsb3dpbmcgT2ZkYXkudCB0byBiZSA8IDI0aHIsIGJ1dCB0aGlzXG4gICAgICAgICBjaG9pY2Ugd2FzIG1hZGUgZWFybHkgb24gYW5kIHBlb3BsZSBiZWNhbWUgdXNlZCB0byBiZWluZyBhYmxlIHRvIGVhc2lseSBjYWxsIDI0aHJcbiAgICAgICAgIHRoZSBlbmQgb2YgdGhlIGRheS4gIEl0J3MgYSBiaXQgc2FkIGJlY2F1c2UgaXQgc2hhcmVzIHRoYXQgbW9tZW50IHdpdGggdGhlXG4gICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZGF5LCBhbmQgcm91bmQgdHJpcHMgb2RkbHkgaWYgcGFzc2VkIHRocm91Z2hcbiAgICAgICAgIFRpbWUudG9fZGF0ZV9vZmRheS9UaW1lLm9mX2RhdGVfb2ZkYXkuXG5cbiAgICAgICAgIE5vdGU6IFtTY2hlZHVsZS50XSByZXF1aXJlcyB0aGF0IHRoZSBlbmQgb2YgZGF5IGJlIHJlcHJlc2VudGFibGUsIGFzIGl0J3MgdGhlXG4gICAgICAgICBvbmx5IHdheSB0byB3cml0ZSBhIHNjaGVkdWxlIGluIHRlcm1zIG9mIFtPZmRheS50XXMgdGhhdCBzcGFucyB0d28gd2Vla2RheXMuICopXG4gICAgICAoKiBvZmRheSBtdXN0IGJlID49IDAgYW5kIDw9IDI0aCAqKVxuICAgICAgbGV0IGlzX3ZhbGlkICh0IDogdCkgPVxuICAgICAgICBsZXQgdCA9IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgICAgU3Bhbi4oIDw9ICkgU3Bhbi56ZXJvIHQgJiYgU3Bhbi4oIDw9ICkgdCBTcGFuLmRheVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuXG4gICAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgc3BhbiA9XG4gICAgICAgIGlzX3ZhbGlkIChvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gICAgICAgIGxldCBtb2R1bGUgQyA9IEZsb2F0LkNsYXNzIGluXG4gICAgICAgIGxldCBzID0gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBtYXRjaCBGbG9hdC5jbGFzc2lmeSBzIHdpdGhcbiAgICAgICAgfCBDLkluZmluaXRlIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbmZpbml0ZSB2YWx1ZVwiXG4gICAgICAgIHwgQy5OYW4gLT4gaW52YWxpZF9hcmcgXCJPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IE5hTiB2YWx1ZVwiXG4gICAgICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPlxuICAgICAgICAgIGlmIG5vdCAoaXNfdmFsaWQgcylcbiAgICAgICAgICB0aGVuIGludmFsaWRfYXJnZiAhXCJPZmRheSBvdXQgb2YgcmFuZ2U6ICV7U3Bhbn1cIiBzcGFuICgpXG4gICAgICAgICAgZWxzZSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gMC5cbiAgICAgIGxldCBzdGFydF9vZl9uZXh0X2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBTcGFuLmRheVxuXG4gICAgICBsZXQgYWRkICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0ICsuIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWIgKHQgOiB0KSAoc3BhbiA6IFNwYW4udCkgPVxuICAgICAgICBsZXQgdCA9IHQgLS4gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBpZiBpc192YWxpZCB0IHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBVcCB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHByZXYgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHQgaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgY2FuZGlkYXRlIHRoZW4gU29tZSBjYW5kaWRhdGUgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlmZiB0MSB0MiA9XG4gICAgICAgIFNwYW4uKCAtICkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQxKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdDIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPVxuICAgICAgT3B0aW9uLnZhbHVlX2V4biAoVC5zdWIgVC5zdGFydF9vZl9uZXh0X2RheSBTcGFuLm1pY3Jvc2Vjb25kKVxuICAgIDs7XG5cbiAgICAoKiBbY3JlYXRlXSBjaG9wcyBvZmYgYW55IHN1YnNlY29uZCBwYXJ0IHdoZW4gW3NlYyA9IDYwXSB0byBoYW5kbGUgbGVhcCBzZWNvbmRzLiBJblxuICAgICAgIHBhcnRpY3VsYXIgaXQncyB0cnlpbmcgdG8gYmUgZ2VuZXJvdXMgYWJvdXQgcmVhZGluZyBpbiB0aW1lcyBvbiB0aGluZ3MgbGlrZSBmaXhcbiAgICAgICBtZXNzYWdlcyB0aGF0IG1pZ2h0IGluY2x1ZGUgYW4gZXh0cmEgdW5saWtlbHkgc2Vjb25kLlxuXG4gICAgICAgT3RoZXIgd2F5cyBvZiB3cml0aW5nIGEgdGltZSwgbGlrZSAxMDAwbXMsIHdoaWxlIG1hdGhlbWF0aWNhbGx5IHZhbGlkLCBkb24ndCBtYXRjaFxuICAgICAgIHdheXMgdGhhdCBwZW9wbGUgYWN0dWFsbHkgd3JpdGUgdGltZXMgZG93biwgc28gd2UgZGlkbid0IHNlZSB0aGUgbmVlZCB0byBzdXBwb3J0XG4gICAgICAgdGhlbS4gVGhhdCBpcywgYSBjbG9jayBtaWdodCBsZWdpdGltYXRlbHkgcmVhZCAyMzo1OTo2MCAob3IsIHdpdGggNjAgc2Vjb25kcyBhdFxuICAgICAgIHRpbWVzIG9mIGRheSBvdGhlciB0aGFuIDIzOjU5LCBkZXBlbmRpbmcgb24gdGhlIHRpbWUgem9uZSksIGJ1dCBpdCBkb2Vzbid0IHNlZW1cbiAgICAgICByZWFzb25hYmxlIGZvciBhIGNsb2NrIHRvIHJlYWQgXCIyMzo1OTo1OSBhbmQgMTAwMG1zXCIuICopXG4gICAgbGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgICAgIGxldCBtcywgdXMsIG5zID1cbiAgICAgICAgbWF0Y2ggc2VjIHdpdGhcbiAgICAgICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICAgICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgICAgIGluXG4gICAgICBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5jcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQpXG5cbiAgICBsZXQgdG9fc3RyaW5nX2dlbiB+ZHJvcF9tcyB+ZHJvcF91cyB+dHJpbSB0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCAhICkgPSBJbnQ2My5vZl9pbnQgaW5cbiAgICAgIGxldCAoIG1vZCApID0gSW50NjMucmVtIGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGFzc2VydCAoaWYgZHJvcF9tcyB0aGVuIGRyb3BfdXMgZWxzZSB0cnVlKTtcbiAgICAgIGxldCBmbG9hdF9zZWMgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KSBpblxuICAgICAgbGV0IHVzID0gRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9leG4gKGZsb2F0X3NlYyAqLiAxZTYpIGluXG4gICAgICBsZXQgbXMsIHVzID0gdXMgLyAhMTAwMCwgdXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBzZWMsIG1zID0gbXMgLyAhMTAwMCwgbXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBtaW4sIHNlYyA9IHNlYyAvICE2MCwgc2VjIG1vZCAhNjAgfD4gaSBpblxuICAgICAgbGV0IGhyLCBtaW4gPSBtaW4gLyAhNjAsIG1pbiBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociA9IGkgaHIgaW5cbiAgICAgIGxldCBkb250X3ByaW50X3VzID0gZHJvcF91cyB8fCAodHJpbSAmJiB1cyA9IDApIGluXG4gICAgICBsZXQgZG9udF9wcmludF9tcyA9IGRyb3BfbXMgfHwgKHRyaW0gJiYgbXMgPSAwICYmIGRvbnRfcHJpbnRfdXMpIGluXG4gICAgICBsZXQgZG9udF9wcmludF9zID0gdHJpbSAmJiBzZWMgPSAwICYmIGRvbnRfcHJpbnRfbXMgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBpZiBkb250X3ByaW50X3NcbiAgICAgICAgdGhlbiA1XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF9tc1xuICAgICAgICB0aGVuIDhcbiAgICAgICAgZWxzZSBpZiBkb250X3ByaW50X3VzXG4gICAgICAgIHRoZW4gMTJcbiAgICAgICAgZWxzZSAxNVxuICAgICAgaW5cbiAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczowIGhyO1xuICAgICAgQnl0ZXMuc2V0IGJ1ZiAyICc6JztcbiAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgbWluO1xuICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICc6JztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiBzZWM7XG4gICAgICAgIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBCeXRlcy5zZXQgYnVmIDggJy4nO1xuICAgICAgICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjkgbXM7XG4gICAgICAgICAgaWYgZG9udF9wcmludF91cyB0aGVuICgpIGVsc2Ugd3JpdGVfM19kaWdpdF9pbnQgYnVmIH5wb3M6MTIgdXMpKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTp0cnVlIHRcbiAgICBsZXQgdG9fc2VjX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczp0cnVlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuICAgIGxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6dHJ1ZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBsZXQgc21hbGxfZGlmZiA9XG4gICAgICBsZXQgaG91ciA9IDM2MDAuIGluXG4gICAgICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgICAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgICAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgICAgICBsZXQgZGlmZiA9IG9mZGF5MSAtLiBvZmRheTIgaW5cbiAgICAgICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICAgICAgbGV0IGQxID0gRmxvYXQubW9kX2Zsb2F0IGRpZmYgaG91ciBpblxuICAgICAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICAgICAgbGV0IGQyID0gRmxvYXQubW9kX2Zsb2F0IChkMSArLiBob3VyKSBob3VyIGluXG4gICAgICAgIGxldCBkID0gaWYgRmxvYXQuKCA+ICkgZDIgKGhvdXIgLy4gMi4pIHRoZW4gZDIgLS4gaG91ciBlbHNlIGQyIGluXG4gICAgICAgIFNwYW4ub2Zfc2VjIGRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOmZhbHNlIH50cmltOmZhbHNlIHRcblxuICAgIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuT2ZkYXlcIlxuICAgICAgZW5kKVxuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgc3Vic2VjID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDAuXG4gICAgICAgIGVsc2UgRmxvYXQub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnN1YnNlY19wb3MgfmxlbjpzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIEZsb2F0Lm9mX2ludCAoKGhyICogMzYwMCkgKyAobWluICogNjApICsgc2VjKSArLiBzdWJzZWNcbiAgICAgIHw+IFNwYW4ub2Zfc2VjXG4gICAgICB8PiBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHMgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gb2Zfc2V4cF9lcnJvciAoXCJPZmRheS50X29mX3NleHA6IFwiIF4gcykgc2V4cClcbiAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiT2ZkYXkudF9vZl9zZXhwXCIgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHNleHBfb2ZfdCBzcGFuID0gU2V4cC5BdG9tICh0b19zdHJpbmcgc3BhbilcblxuICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgICAgIHRyeSBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpjcmVhdGVfZnJvbV9wYXJzZWQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCglcyk6ICVzXCJcbiAgICAgICAgICAoU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbilcbiAgICAgICAgICAoRXhuLnRvX3N0cmluZyBleG4pXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBsbykgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGhpKVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG5cbiAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgb2ZkYXlzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbVxuICAgICAxMDguMDcgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgIHByZXR0eSBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZFxuICAgICBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEMpXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xuIiwiKCogU2VlIHRpbWVfZmxvYXQubWwgZm9yIHRoZSBwcmltYXJ5IGluc3RhbnRpYXRpb24gb2YgdGhpcyBmdW5jdG9yIHRoYXQgaXMgdmlzaWJsZSBvdXRzaWRlXG4gICBvZiBDb3JlIGFzIFRpbWUgKHNlZSBjb3JlLm1sKS4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgVGltZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUaW1lMCA6IFRpbWUwX2ludGYuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRpbWUwID0gVGltZTBcbiAgaW5jbHVkZSBUaW1lMFxuXG4gIGxldCBlcG9jaCA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi56ZXJvXG4gIGxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPC4gdDJcbiAgbGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPi4gdDJcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgIGluY2x1ZGUgVGltZV9pbnRmLlpvbmUgd2l0aCBtb2R1bGUgVGltZSA6PSBUaW1lMFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZTAuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICBUaW1lMC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGFiYnJldmlhdGlvbiB0IHRpbWUgPVxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgKGluZGV4IHQgdGltZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9XG4gICAgICBtYXRjaCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleFxuICAgICAgICAgICwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChJbmRleC5uZXh0IGluZGV4KVxuICAgIGxldCBwcmV2X2Nsb2NrX3NoaWZ0IHQgfmF0X29yX2JlZm9yZTp0aW1lID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG4gICAgbGV0IG5leHRfY2xvY2tfc2hpZnQgdCB+c3RyaWN0bHlfYWZ0ZXI6dGltZSA9IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuXG4gICAgbGV0IGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgdCB0aW1lID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4IHQgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXldIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYWJzX2RpZmYgdDEgdDIgPSBTcGFuLmFicyAoZGlmZiB0MSB0MilcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgcmVsYXRpdmUgPSBEYXRlX2FuZF9vZmRheS5vZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgaW5cbiAgICBab25lLmFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgem9uZSByZWxhdGl2ZVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX29mZGF5X3ByZWNpc2UgZGF0ZSBvZmRheSB+em9uZSA9XG4gICAgKCogV2UgYXNzdW1lIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB6b25lIHNoaWZ0IHdpdGhpbiBhIGdpdmVuIGxvY2FsIGRheS4gICopXG4gICAgbGV0IHN0YXJ0X29mX2RheSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBPZmRheS5zdGFydF9vZl9kYXkgaW5cbiAgICBsZXQgcHJvcG9zZWRfdGltZSA9IGFkZCBzdGFydF9vZl9kYXkgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KSBpblxuICAgIG1hdGNoIFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjpzdGFydF9vZl9kYXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgfCBTb21lIChzaGlmdF9zdGFydCwgc2hpZnRfYW1vdW50KSAtPlxuICAgICAgbGV0IHNoaWZ0X2JhY2t3YXJkcyA9IFNwYW4uKHNoaWZ0X2Ftb3VudCA8IHplcm8pIGluXG4gICAgICAoKiBzdGFydCBhbmQgZW5kIG9mIHRoZSBcInByb2JsZW1hdGljIHJlZ2lvblwiICopXG4gICAgICBsZXQgcywgZSA9XG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnQsIHNoaWZ0X3N0YXJ0XG4gICAgICAgIGVsc2Ugc2hpZnRfc3RhcnQsIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnRcbiAgICAgIGluXG4gICAgICBpZiBwcm9wb3NlZF90aW1lIDwgc1xuICAgICAgdGhlbiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgICBlbHNlIGlmIHMgPD0gcHJvcG9zZWRfdGltZSAmJiBwcm9wb3NlZF90aW1lIDwgZVxuICAgICAgdGhlblxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBgVHdpY2UgKHByb3Bvc2VkX3RpbWUsIHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgICAgICAgZWxzZSBgTmV2ZXIgc2hpZnRfc3RhcnRcbiAgICAgIGVsc2UgYE9uY2UgKHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgOztcblxuICBtb2R1bGUgRGF0ZV9jYWNoZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgVGltZTAuKCA+PSApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsXG4gICAgJiYgVGltZTAuKCA8ICkgdGltZSBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIFRpbWUwLnN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IFRpbWUwLmFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgICAgfD4gVGltZTAubWF4IChab25lLmluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgY2FjaGVfdW50aWxfZXhjbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgICAgfD4gVGltZTAubWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgZW5kX29mX2RheSA9IE9mZGF5LnByZXYgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgfD4gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdXG5cbiAgbGV0IHRvX29mZGF5IHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgbGV0IG9mX2RheSA9XG4gICAgICBUaW1lMC5kaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICBpblxuICAgIGlmIE9mZGF5LmVxdWFsIG9mX2RheSBPZmRheS5zdGFydF9vZl9uZXh0X2RheSB0aGVuIGVuZF9vZl9kYXkgZWxzZSBvZl9kYXlcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lID0gdG9fZGF0ZSB0aW1lIH56b25lLCB0b19vZmRheSB0aW1lIH56b25lXG5cbiAgKCogVGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgYWxnb3JpdGhtIChpbnRlcmZhY2UsIGV2ZW4pIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhhdFxuICAgICB0aW1lem9uZSBzaGlmdHMgYXJlbid0IHRvbyBjbG9zZSB0b2dldGhlciAoYXMgaW4sIGl0IGNhbid0IHNpbXVsdGFuZW91c2x5IGJlIHRoZVxuICAgICBjYXNlIHRoYXQgYSB0aW1lem9uZSBzaGlmdCBvZiBYIGhvdXJzIG9jY3VycmVkIGxlc3MgdGhhbiBYIGhvdXJzIGFnbywgKmFuZCpcbiAgICAgYSB0aW1lem9uZSBzaGlmdCBvZiBZIGhvdXJzIHdpbGwgb2NjdXIgaW4gbGVzcyB0aGFuIFkgaG91cnMnIHRpbWUpICopXG4gIGxldCB0b19kYXRlX29mZGF5X3ByZWNpc2UgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2FmdGVyID0gWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnRpbWUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0ID0gWm9uZS5wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgfmF0X29yX2JlZm9yZTp0aW1lIGluXG4gICAgbGV0IGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudCA9XG4gICAgICAoKiBVc2luZyBbZGF0ZV0gYW5kIHJhaXNpbmcgb24gW05vbmVdIGhlcmUgaXMgT0sgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjbG9ja1xuICAgICAgICAgc2hpZnRzIGNhbid0IGNyb3NzIGRhdGUgYm91bmRhcmllcy4gVGhpcyBpcyB0cnVlIGluIGFsbCBjYXNlcyBJJ3ZlIGV2ZXIgaGVhcmRcbiAgICAgICAgIG9mIChhbmQgW29mX2RhdGVfb2ZkYXlfcHJlY2lzZV0gd291bGQgbmVlZCByZXZpc2l0aW5nIGlmIGl0IHR1cm5lZCBvdXQgdG8gYmVcbiAgICAgICAgIGZhbHNlKSAqKVxuICAgICAgbWF0Y2ggT2ZkYXkuc3ViIG9mZGF5IGFtb3VudCB3aXRoXG4gICAgICB8IFNvbWUgb2ZkYXkgLT4gYEFsc29fc2tpcHBlZCAoZGF0ZSwgb2ZkYXkpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJUaW1lLnRvX2RhdGVfb2ZkYXlfcHJlY2lzZVwiXG4gICAgICAgICAgICAgIH5zcGFuX3NpbmNlX2Vwb2NoOih0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUgOiBTcGFuLnQpXG4gICAgICAgICAgICAgICh6b25lIDogWm9uZS50KV1cbiAgICBpblxuICAgIGxldCBhbWJpZ3VpdHkgPVxuICAgICAgKCogRWRnZSBjYXNlczogdGhlIGluc3RhbnQgb2YgdHJhbnNpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXcgem9uZSByZWdpbWUuIFNvIGlmIHRoZVxuICAgICAgICAgY2xvY2sgbW92ZWQgYnkgYW4gaG91ciBleGFjdGx5IG9uZSBob3VyIGFnbywgdGhlcmUncyBubyBhbWJpZ3VpdHksIGJlY2F1c2UgdGhlXG4gICAgICAgICBob3VyLWFnbyB0aW1lIGJlbG9uZ3MgdG8gdGhlIHNhbWUgcmVnaW1lIGFzIHlvdSwgYW5kIGNvbnZlcnNlbHksIGlmIHRoZSBjbG9ja1xuICAgICAgICAgd2lsbCBtb3ZlIGJ5IGFuIGhvdXIgaW4gYW4gaG91cnMnIHRpbWUsIHRoZXJlICppcyogYW1iaWd1aXR5LiBIZW5jZSBbPi5dIGZvclxuICAgICAgICAgdGhlIGZpcnN0IGNhc2UgYW5kIFs8PS5dIGZvciB0aGUgc2Vjb25kLiAqKVxuICAgICAgbWF0Y2ggY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0LCBjbG9ja19zaGlmdF9hZnRlciB3aXRoXG4gICAgICB8IFNvbWUgKHN0YXJ0LCBhbW91bnQpLCBfIHdoZW4gYWRkIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpID4uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50ciB+dGFyZ2V0Oic6JyB+cmVwbGFjZW1lbnQ6Jy0nIChPZmRheS50b19zdHJpbmcgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IG9mX2ZpbGVuYW1lX3N0cmluZyBzIH56b25lID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOidfJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZSBpbiBmaWxlbmFtZSBzdHJpbmdcIlxuICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBTdHJpbmcudHIgfnRhcmdldDonLScgfnJlcGxhY2VtZW50Oic6JyBvZmRheSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IH56b25lXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIlRpbWUub2ZfZmlsZW5hbWVfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gIDs7XG5cbiAgbGV0IG9mX2xvY2FsaXplZF9zdHJpbmcgfnpvbmUgc3RyID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0ciB+b246JyAnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIm5vIHNwYWNlIGluIGRhdGVfb2ZkYXkgc3RyaW5nOiAlc1wiIHN0cilcbiAgICAgIHwgU29tZSAoZGF0ZSwgdGltZSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgdGltZSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICB3aXRoXG4gICAgfCBlIC0+IEV4bi5yZXJhaXNlIGUgXCJUaW1lLm9mX2xvY2FsaXplZF9zdHJpbmdcIlxuICA7O1xuXG4gIGxldCBvY2N1cnJlbmNlIGJlZm9yZV9vcl9hZnRlciB0IH5vZmRheSB+em9uZSA9XG4gICAgbGV0IGZpcnN0X2d1ZXNzX2RhdGUgPSB0b19kYXRlIHQgfnpvbmUgaW5cbiAgICBsZXQgZmlyc3RfZ3Vlc3MgPSBvZl9kYXRlX29mZGF5IH56b25lIGZpcnN0X2d1ZXNzX2RhdGUgb2ZkYXkgaW5cbiAgICBsZXQgY21wLCBpbmNyZW1lbnQgPVxuICAgICAgbWF0Y2ggYmVmb3JlX29yX2FmdGVyIHdpdGhcbiAgICAgIHwgYExhc3RfYmVmb3JlX29yX2F0IC0+ICggPD0gKSwgLTFcbiAgICAgIHwgYEZpcnN0X2FmdGVyX29yX2F0IC0+ICggPj0gKSwgMVxuICAgIGluXG4gICAgaWYgY21wIGZpcnN0X2d1ZXNzIHRcbiAgICB0aGVuIGZpcnN0X2d1ZXNzXG4gICAgZWxzZSBvZl9kYXRlX29mZGF5IH56b25lIChEYXRlMC5hZGRfZGF5cyBmaXJzdF9ndWVzc19kYXRlIGluY3JlbWVudCkgb2ZkYXlcbiAgOztcblxuICBsZXQgZW5zdXJlX2NvbG9uX2luX29mZnNldCBvZmZzZXQgPVxuICAgIGxldCBvZmZzZXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBvZmZzZXQgaW5cbiAgICBpZiBJbnQuKCA8PSApIG9mZnNldF9sZW5ndGggMlxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LlswXVxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LltvZmZzZXRfbGVuZ3RoIC0gMV1cbiAgICB0aGVuIG9mZnNldCBeIFwiOjAwXCJcbiAgICBlbHNlIGlmIENoYXIuKCA9ICkgb2Zmc2V0LlsxXSAnOicgfHwgQ2hhci4oID0gKSBvZmZzZXQuWzJdICc6J1xuICAgIHRoZW4gb2Zmc2V0XG4gICAgZWxzZSBpZiBJbnQuKCA8ICkgb2Zmc2V0X2xlbmd0aCAzIHx8IEludC4oID4gKSBvZmZzZXRfbGVuZ3RoIDRcbiAgICB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgb2Zmc2V0ICVzXCIgb2Zmc2V0ICgpXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIFN0cmluZy5zbGljZSBvZmZzZXQgMCAob2Zmc2V0X2xlbmd0aCAtIDIpXG4gICAgICAgIDsgXCI6XCJcbiAgICAgICAgOyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IChvZmZzZXRfbGVuZ3RoIC0gMikgb2Zmc2V0X2xlbmd0aFxuICAgICAgICBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFRpbWVfb2Zfc3RyaW5nIG9mIHN0cmluZyAqIEV4bi50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGRhdGUsIG9mZGF5LCB0eiA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonICcgd2l0aFxuICAgICAgICB8IFsgZGF5OyBtb250aDsgeWVhcjsgb2ZkYXkgXSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBkYXk7IFwiIFwiOyBtb250aDsgXCIgXCI7IHllYXIgXSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5OyB0eiBdIC0+IGRhdGUsIG9mZGF5LCBTb21lIHR6XG4gICAgICAgIHwgWyBkYXRlOyBvZmRheSBdIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBzIF0gLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOidUJyBzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2VzIG9yIFQgZm91bmRcIilcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidG9vIG1hbnkgc3BhY2VzXCJcbiAgICAgIGluXG4gICAgICBsZXQgb2ZkYXlfdG9fc2VjIG9kID0gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9kKSBpblxuICAgICAgbGV0IG9mZGF5LCB1dGNfb2Zmc2V0ID1cbiAgICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBvZmRheSwgTm9uZVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBDaGFyLiggPSApIG9mZGF5LltTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMV0gJ1onXG4gICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIG9mZGF5IH5wb3M6MCB+bGVuOihTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMSksIFNvbWUgMC5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonKycgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICBsLCBTb21lIChvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonLScgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICAgICBsLCBTb21lICgtMS4gKi4gb2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgICAgfCBOb25lIC0+IG9mZGF5LCBOb25lKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgIHwgU29tZSB0eiAtPiBvZl9kYXRlX29mZGF5IH56b25lOihmaW5kX3pvbmUgdHopIGRhdGUgb2ZkYXlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggdXRjX29mZnNldCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHpvbmUgPSBkZWZhdWx0X3pvbmUgKCkgaW5cbiAgICAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICAgICB8IFNvbWUgdXRjX29mZnNldCAtPlxuICAgICAgICAgICBsZXQgdXRjX3QgPSBvZl9kYXRlX29mZGF5IH56b25lOlpvbmUudXRjIGRhdGUgb2ZkYXkgaW5cbiAgICAgICAgICAgc3ViIHV0Y190IChTcGFuLm9mX3NlYyB1dGNfb2Zmc2V0KSlcbiAgICB3aXRoXG4gICAgfCBlIC0+IHJhaXNlIChUaW1lX29mX3N0cmluZyAocywgZSkpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgcyA9XG4gICAgbGV0IGRlZmF1bHRfem9uZSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwidGltZSBoYXMgbm8gdGltZSB6b25lIG9yIFVUQyBvZmZzZXRcIiBzXSBpblxuICAgIGxldCBmaW5kX3pvbmUgem9uZV9uYW1lID1cbiAgICAgIGZhaWx3aXRoZiBcInVuYWJsZSB0byBsb29rdXAgWm9uZSAlcy4gIFRyeSB1c2luZyBDb3JlLlRpbWUub2Zfc3RyaW5nXCIgem9uZV9uYW1lICgpXG4gICAgaW5cbiAgICBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFNwYW4ucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgICAgfmZfaW52ZXJzZTp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBTcGFuLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9lcG9jaCBsbykgKHRvX3NwYW5fc2luY2VfZXBvY2ggaGkpXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFNwYW4gPSBTcGFuX2Zsb2F0XG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9mbG9hdFxuXG5tb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgdHlwZSB1bmRlcmx5aW5nID0gRmxvYXQudFxuXG4gIGluY2x1ZGUgKFxuICAgIEZsb2F0IDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdC5PXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgcHJlY2lzaW9uICopXG4gIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgIGVuZClcblxuICBsZXQgZGlmZiB0MSB0MiA9IFNwYW4ub2Zfc2VjICh0MSAtIHQyKVxuICBsZXQgYWRkIHQgc3BhbiA9IHQgKy4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgc3ViIHQgc3BhbiA9IHQgLS4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG4gIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi5vZl9zZWNcbiAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBTcGFuLnRvX3NlY1xuZW5kXG5cbmluY2x1ZGUgQWJzb2x1dGVcblxubW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHNwYW4gPSBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBkYXlzID1cbiAgICAgIEZsb2F0Lm9mX2ludCAoRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoKVxuICAgIGluXG4gICAgKGRheXMgKi4gODY0MDAuKSArLiBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPSBzdWIgcmVsYXRpdmUgb2Zmc2V0X2Zyb21fdXRjXG4gIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID0gYWRkIGFic29sdXRlIG9mZnNldF9mcm9tX3V0Y1xuXG4gICgqIFllYXJzIG91dCBvZiByYW5nZSBmb3IgW0RhdGUuY3JlYXRlX2V4bl0uICopXG4gIGxldFtAY29sZF0gYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoID1cbiAgICAoKiAkIFRaPVVUQyBkYXRlIC0tZGF0ZT1ALTYyMTY3MjE5MjAwXG4gICAgICAgU2F0IEphbiAgMSAwMDowMDowMCBVVEMgMDAwMCAqKVxuICAgIGxldCBnbXRpbWVfbG93ZXJfYm91bmQgPSAtNjJfMTY3XzIxOV8yMDAuIGluXG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QDI1MzQwMjMwMDc5OVxuICAgICAgIEZyaSBEZWMgMzEgMjM6NTk6NTkgVVRDIDk5OTkgKilcbiAgICBsZXQgZ210aW1lX3VwcGVyX2JvdW5kID0gMjUzXzQwMl8zMDBfNzk5LiBpblxuICAgIGlmIEZsb2F0LiggPj0gKSBzZWNfc2luY2VfZXBvY2ggKGdtdGltZV91cHBlcl9ib3VuZCArLiAxLilcbiAgICB8fCBGbG9hdC4oIDwgKSBzZWNfc2luY2VfZXBvY2ggZ210aW1lX2xvd2VyX2JvdW5kXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJUaW1lLmdtdGltZTogb3V0IG9mIHJhbmdlICglZilcIiBzZWNfc2luY2VfZXBvY2ggKClcbiAgOztcblxuICBsZXQgc2VjX3Blcl9kYXkgPSBJbnQ2My5vZl9pbnQgODZfNDAwXG5cbiAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICBhc3NlcnRfaW5fYm91bmRzIH5zZWNfc2luY2VfZXBvY2g6dDtcbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggPSBJbnQ2My5vZl9mbG9hdCB0IC8gc2VjX3Blcl9kYXkgaW5cbiAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgIHdpbGwgbGVhdmUgdXMgb25lIGRheSBzaG9ydCBiZWNhdXNlIGl0IHRydW5jYXRlcyAoZS5nLiAtMTAwIC8gODZfNDAwID0gMCBhbmQgd2VcbiAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICBpZiBGbG9hdC4oIDwgKSB0IChJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIHNlY19wZXJfZGF5KSlcbiAgICB0aGVuIEludDYzLnByZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICA7O1xuXG4gIGxldCBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgPSBJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoICogc2VjX3Blcl9kYXkpIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IHQgLS4gZGF5c19mcm9tX2Vwb2NoX2luX3NlYyBpblxuICAgIFNwYW4ub2Zfc2VjIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgOztcblxuICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaFxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGxldCBkYXRlID0gZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBvZmRheSA9IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBkYXRlLCBvZmRheVxuICA7O1xuZW5kXG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWUubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogU3Bhbi50XTtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9XG4gICAgICBhZGRcbiAgICAgICAgYmFzZVxuICAgICAgICAoU3Bhbi5zY2FsZVxuICAgICAgICAgICBpbnRlcnZhbFxuICAgICAgICAgICAoRmxvYXQucm91bmQgfmRpcjpgRG93biAoU3Bhbi4oIC8vICkgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpKVxuICAgIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IG5vdyAoKSA9XG4gIGxldCBmbG9hdF9ucyA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gSW50NjMudG9fZmxvYXQgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9zZWMgKGZsb2F0X25zICouIDFFLTkpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgdHlwZSBTX2tlcm5lbF93aXRob3V0X3pvbmUgPSBUaW1lMF9pbnRmLlNcbm1vZHVsZSB0eXBlIFNfa2VybmVsID0gVGltZV9pbnRmLlNcblxubW9kdWxlIFpvbmVfc3RhYmxlID0gWm9uZS5TdGFibGVcbmluY2x1ZGUgVGltZS5NYWtlIChUaW1lX2Zsb2F0MClcbmluY2x1ZGUgVGltZV9mbG9hdDBcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfZmxvYXQwLlN0YWJsZVxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBXaXRoX3Rfb2Zfc2V4cF9hYnMgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBPZmRheVxuICAgIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFdpdGhfdXRjX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0b19zdHJpbmdfYWJzX3BhcnRzIHQgfnpvbmU6Wm9uZS51dGMgOiBzdHJpbmcgbGlzdCldXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGRhdGU7IFNleHAuQXRvbSBvZmRheV9hbmRfcG9zc2libHlfem9uZSBdIC0+XG4gICAgICAgICAgICBvZl9zdHJpbmdfZ2VuXG4gICAgICAgICAgICAgIH5kZWZhdWx0X3pvbmU6KGZ1biAoKSAtPiBab25lLnV0YylcbiAgICAgICAgICAgICAgfmZpbmRfem9uZTooZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiB1bmtub3duIHRpbWUgem9uZVwiIHNleHApXG4gICAgICAgICAgICAgIChkYXRlIF4gXCIgXCIgXiBvZmRheV9hbmRfcG9zc2libHlfem9uZSlcbiAgICAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cFwiIHNleHBcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+IHJhaXNlIGVcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgKHNwcmludGYgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHA6ICVzXCIgKEV4bi50b19zdHJpbmcgZSkpXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV91bml4XG5cbiAgICAgIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gICAgICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgWm9uZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgICBpbmNsdWRlIFpvbmVfc3RhYmxlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICBpbmNsdWRlIE9mZGF5XG5cbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG5vdyA9IGBVc2VfVGltZV91bml4XG5cbiAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuZW5kXG5cbm1vZHVsZSBTcGFuID0gc3RydWN0XG4gIGluY2x1ZGUgU3BhblxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5lbmRcblxubW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBab25lXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcblxuICBsZXQgKCA8ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA8PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID49ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgX19iaW5fcmVhZF90X18gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXNjZW5kaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJldHdlZW4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fcmVhZGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NoYXBlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NpemVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXBfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZGVzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBlcXVhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGZpbmRfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2ggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaF9mb2xkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBpbml0aWFsaXplZF96b25lcyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBsb2NhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBtYXggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWluID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG9mX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBwcCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdG9fc3RyaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2xib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBFeHBvc2VkX2Zvcl90ZXN0cyA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5sZXQgZm9ybWF0ID0gYFVzZV9UaW1lX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBoYXNoYWJsZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV91bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0X29mX3NleHBfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG4iLCJpbmNsdWRlIERhdGUwXG5cbmxldCBvZl90aW1lIHRpbWUgfnpvbmUgPSBUaW1lX2Zsb2F0LnRvX2RhdGUgfnpvbmUgdGltZVxubGV0IHRvZGF5IH56b25lID0gb2ZfdGltZSAoVGltZV9mbG9hdC5ub3cgKCkpIH56b25lXG5sZXQgZm9ybWF0ID0gYFVzZV9EYXRlX3VuaXhcbmxldCBvZl90bSA9IGBVc2VfRGF0ZV91bml4XG5sZXQgcGFyc2UgPSBgVXNlX0RhdGVfdW5peFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50NjMuT1xuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuXCJcblxudHlwZSB1bmRlcmx5aW5nID0gSW50NjMudFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBJbnQuZXF1YWwgU3lzLndvcmRfc2l6ZV9pbl9iaXRzIDY0XG5sZXQgcm91bmRfbmVhcmVzdCA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuXG5sZXQgZmxvYXQgeCA9IEludDYzLnRvX2Zsb2F0IHhcblxuKCogW1NwYW5dIGlzIGJhc2ljYWxseSBhIFtJbnQ2M10uICBJdCBldmVuIHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3cuICopXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnQ2My50ICgqIG5hbm9zZWNvbmRzICopIFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gSW50NjMuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHplcm8gPSBJbnQ2My56ZXJvXG5lbmRcblxuaW5jbHVkZSBUXG5vcGVuIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNpZ24gOiBTaWduLnRcbiAgICA7IGhyIDogaW50XG4gICAgOyBtaW4gOiBpbnRcbiAgICA7IHNlYyA6IGludFxuICAgIDsgbXMgOiBpbnRcbiAgICA7IHVzIDogaW50XG4gICAgOyBucyA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbmxldCBuZXh0IHQgPSBJbnQ2My5zdWNjIHRcbmxldCBwcmV2IHQgPSBJbnQ2My5wcmVkIHRcbmxldCBuYW5vc2Vjb25kID0gSW50NjMub2ZfaW50IDFcbmxldCBtaWNyb3NlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG5hbm9zZWNvbmQpXG5sZXQgbWlsbGlzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWNyb3NlY29uZClcbmxldCBzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWxsaXNlY29uZClcbmxldCBtaW51dGUgPSBJbnQ2My4ob2ZfaW50IDYwICogc2Vjb25kKVxubGV0IGhvdXIgPSBJbnQ2My4ob2ZfaW50IDYwICogbWludXRlKVxubGV0IGRheSA9IEludDYzLihvZl9pbnQgMjQgKiBob3VyKVxuXG4oKiBCZXlvbmQgW21pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nLi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ10sIG5vdCBldmVyeSBtaWNyb3NlY29uZFxuICAgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgW2Zsb2F0XSBudW1iZXIgb2Ygc2Vjb25kcy4gKEluIGZhY3QsIGl0IGlzIGFyb3VuZCAxMzV5LCBidXQgd2VcbiAgIGxlYXZlIGEgc21hbGwgbWFyZ2luLilcblxuICAgSW4gdGhlIHByZXNlbmNlIG9mIHNpbGVudGx5IGlnbm9yZWQgb3ZlcmZsb3csIG5vdGUgdGhhdCBbdF0gaXMgbm90IGFjdHVhbGx5IGJvdW5kIHRvXG4gICBzdGF5IGJldHdlZW4gdGhlc2UgbGltaXRzLiAqKVxubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMuKG9mX2ludCAxMzUgKiBvZl9pbnQgMzY1ICogZGF5KVxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMubmVnIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5cbmxldCBjcmVhdGVcbiAgICAgID9zaWduOihzaWduXyA9IFNpZ24uUG9zICgqIHJlYmluZCBzbyBub3Qgc2hhZG93ZWQgYnkgW29wZW4gSW50NjNdIGJlbG93ICopKVxuICAgICAgP2RheTooZGF5cyA9IDApXG4gICAgICA/KGhyID0gMClcbiAgICAgID9taW46KG1pbnV0ZXMgPSAwKVxuICAgICAgPyhzZWMgPSAwKVxuICAgICAgPyhtcyA9IDApXG4gICAgICA/KHVzID0gMClcbiAgICAgID8obnMgPSAwKVxuICAgICAgKClcbiAgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgdCA9XG4gICAgKG9mX2ludCBkYXlzICogZGF5KVxuICAgICsgKG9mX2ludCBociAqIGhvdXIpXG4gICAgKyAob2ZfaW50IG1pbnV0ZXMgKiBtaW51dGUpXG4gICAgKyAob2ZfaW50IHNlYyAqIHNlY29uZClcbiAgICArIChvZl9pbnQgbXMgKiBtaWxsaXNlY29uZClcbiAgICArIChvZl9pbnQgdXMgKiBtaWNyb3NlY29uZClcbiAgICArIChvZl9pbnQgbnMgKiBuYW5vc2Vjb25kKVxuICBpblxuICBtYXRjaCBzaWduXyB3aXRoXG4gIHwgTmVnIC0+IG5lZyB0XG4gIHwgUG9zIHwgWmVybyAtPiB0XG47O1xuXG5sZXQgdG9fcGFydHMgdCA9XG4gIGxldCBvcGVuIEludDYzIGluXG4gIGxldCBtYWcgPSBhYnMgdCBpblxuICB7IFBhcnRzLnNpZ24gPSAoaWYgdCA8IHplcm8gdGhlbiBOZWcgZWxzZSBpZiB0ID4gemVybyB0aGVuIFBvcyBlbHNlIFplcm8pXG4gIDsgaHIgPSB0b19pbnRfZXhuIChtYWcgLyBob3VyKVxuICA7IG1pbiA9IHRvX2ludF9leG4gKHJlbSBtYWcgaG91ciAvIG1pbnV0ZSlcbiAgOyBzZWMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbnV0ZSAvIHNlY29uZClcbiAgOyBtcyA9IHRvX2ludF9leG4gKHJlbSBtYWcgc2Vjb25kIC8gbWlsbGlzZWNvbmQpXG4gIDsgdXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbGxpc2Vjb25kIC8gbWljcm9zZWNvbmQpXG4gIDsgbnMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pY3Jvc2Vjb25kIC8gbmFub3NlY29uZClcbiAgfVxuOztcblxubGV0IG9mX3BhcnRzIHsgUGFydHMuc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gPVxuICBjcmVhdGUgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5ucyAoKVxuOztcblxubGV0IG9mX25zIGYgPSByb3VuZF9uZWFyZXN0IGZcbmxldCBvZl9pbnQ2M19ucyBpID0gaVxubGV0IG9mX2ludF91cyBpID0gSW50NjMuKG9mX2ludCBpICogbWljcm9zZWNvbmQpXG5sZXQgb2ZfaW50X21zIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBtaWxsaXNlY29uZClcbmxldCBvZl9pbnRfc2VjIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBzZWNvbmQpXG5sZXQgb2ZfdXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWljcm9zZWNvbmQpXG5sZXQgb2ZfbXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWlsbGlzZWNvbmQpXG5sZXQgb2Zfc2VjIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IHNlY29uZClcbmxldCBvZl9taW4gZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWludXRlKVxubGV0IG9mX2hyIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGhvdXIpXG5sZXQgb2ZfZGF5IGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGRheSlcblxubGV0IG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiBzZWMgPVxuICBsZXQgdXMgPSByb3VuZF9uZWFyZXN0IChzZWMgKi4gMWU2KSBpblxuICBvZl9pbnQ2M19ucyBJbnQ2My4odXMgKiBvZl9pbnQgMTAwMClcbjs7XG5cbmxldCBvZl9pbnQ2M19zZWNvbmRzIHggPSB4ICogc2Vjb25kXG5sZXQgb2ZfaW50MzJfc2Vjb25kcyB4ID0gb2ZfaW50NjNfc2Vjb25kcyAoSW50NjMub2ZfaW50MzIgeClcblxubGV0IHRvX25zIHQgPSBmbG9hdCB0XG5sZXQgdG9faW50NjNfbnMgdCA9IHRcbmxldCB0b191cyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWNyb3NlY29uZFxubGV0IHRvX21zIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjIHQgPSBmbG9hdCB0IC8uIGZsb2F0IHNlY29uZFxubGV0IHRvX21pbiB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaW51dGVcbmxldCB0b19ociB0ID0gZmxvYXQgdCAvLiBmbG9hdCBob3VyXG5sZXQgdG9fZGF5IHQgPSBmbG9hdCB0IC8uIGZsb2F0IGRheVxubGV0IHRvX2ludF91cyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWNyb3NlY29uZCkpXG5sZXQgdG9faW50X21zIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIG1pbGxpc2Vjb25kKSlcbmxldCB0b19pbnRfc2VjIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIHNlY29uZCkpXG5sZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biB0ID0gdCAvJSBzZWNvbmRcbmxldCBvZl9pbnRfbnMgaSA9IG9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX2ludF9ucyA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnMgdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMuU3Bhbi50b19pbnRfbnM6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCAoICsgKSB0IHUgPSBJbnQ2My4oICsgKSB0IHVcbmxldCAoIC0gKSB0IHUgPSBJbnQ2My4oIC0gKSB0IHVcbmxldCBhYnMgPSBJbnQ2My5hYnNcbmxldCBuZWcgPSBJbnQ2My5uZWdcbmxldCBzY2FsZSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0ICouIGYpXG5sZXQgc2NhbGVfaW50NjMgdCBpID0gSW50NjMuKCAqICkgdCBpXG5sZXQgc2NhbGVfaW50IHQgaSA9IHNjYWxlX2ludDYzIHQgKEludDYzLm9mX2ludCBpKVxubGV0IGRpdiA9IEludDYzLiggLyUgKVxubGV0ICggLyApIHQgZiA9IHJvdW5kX25lYXJlc3QgKGZsb2F0IHQgLy4gZilcbmxldCAoIC8vICkgPSBJbnQ2My4oIC8vIClcbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgdCA9IEludDYzLnRvX2Zsb2F0IHRcblxubGV0IG9mX3VuaXRfb2ZfdGltZSB1ID1cbiAgbWF0Y2ggKHUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICB8IE1pY3Jvc2Vjb25kIC0+IG1pY3Jvc2Vjb25kXG4gIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gIHwgTWludXRlIC0+IG1pbnV0ZVxuICB8IEhvdXIgLT4gaG91clxuICB8IERheSAtPiBkYXlcbjs7XG5cbmxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgaWYgYWJzX3QgPj0gZGF5XG4gIHRoZW4gRGF5XG4gIGVsc2UgaWYgYWJzX3QgPj0gaG91clxuICB0aGVuIEhvdXJcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgdGhlbiBNaW51dGVcbiAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgdGhlbiBTZWNvbmRcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaWxsaXNlY29uZFxuICB0aGVuIE1pbGxpc2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgdGhlbiBNaWNyb3NlY29uZFxuICBlbHNlIE5hbm9zZWNvbmRcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgICAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9pbnQ2M19ucyB0XG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdG9faW50NjNfbnMgdFxuXG4gICAgICAgIG1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA9IDBcbiAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTBcbiAgICAgICAgICAgIHRoZW4gMVxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTAwXG4gICAgICAgICAgICB0aGVuIDJcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDFfMDAwXG4gICAgICAgICAgICB0aGVuIDNcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwXzAwMFxuICAgICAgICAgICAgdGhlbiA0XG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMDBfMDAwXG4gICAgICAgICAgICB0aGVuIDVcbiAgICAgICAgICAgIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgOztcblxuICAgICAgICAgICgqIHNwYW4gcGFydCBtYWduaXR1ZGVzIGFyZSBhbHdheXMgPCAxMDBfMDAwICopXG5cbiAgICAgICAgICBsZXQgbnVtYmVyX29mX2RlY2ltYWxfcGxhY2VzX3RvX3dyaXRlIH5iaWxsaW9udGhzID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBhc3NlcnQgKGJpbGxpb250aHMgPj0gMCAmJiBiaWxsaW9udGhzIDw9IDk5OV85OTlfOTk5KTtcbiAgICAgICAgICAgIGlmIGJpbGxpb250aHMgPSAwXG4gICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gOVxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gOFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMV8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA3XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA2XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNVxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMV8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTBfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDNcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMF8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gMlxuICAgICAgICAgICAgZWxzZSAxXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9jaGFyIGJ1ZiB+cG9zIGNoYXIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyBjaGFyO1xuICAgICAgICAgICAgcG9zICsgMVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfMl9jaGFycyBidWYgfnBvcyBjaGFyMSBjaGFyMiA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zIGNoYXIxO1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgKHBvcyArIDEpIGNoYXIyO1xuICAgICAgICAgICAgcG9zICsgMlxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIH5kaWdpdHMgaW50ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV9pbnQ2MyBidWYgfnBvcyB+ZGlnaXRzIChJbnQ2My5vZl9pbnQgaW50KTtcbiAgICAgICAgICAgIHBvcyArIGRpZ2l0c1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfZGVjaW1hbHMgYnVmIH5wb3MgfmRlY2ltYWxzIH5iaWxsaW9udGhzID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV9pbnQ2M1xuICAgICAgICAgICAgICBidWZcbiAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICB+ZGlnaXRzOmRlY2ltYWxzXG4gICAgICAgICAgICAgIChJbnQ2My5vZl9pbnQgKGJpbGxpb250aHMgLyBJbnQucG93IDEwICg5IC0gZGVjaW1hbHMpKSk7XG4gICAgICAgICAgICBwb3MgKyBkZWNpbWFsc1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHMgaW50IHN1ZmZpeCA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgaWYgZGlnaXRzID0gMFxuICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIH5kaWdpdHMgaW50IGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9jaGFyIGJ1ZiB+cG9zIHN1ZmZpeCBpblxuICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBuYW5vc19vZl9taWxsaXNlY29uZCA9IHRvX2ludDYzX25zIG1pbGxpc2Vjb25kIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICBsZXQgbmFub3Nfb2ZfbWljcm9zZWNvbmQgPSB0b19pbnQ2M19ucyBtaWNyb3NlY29uZCB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgbGV0IGludDYzXzYwID0gSW50NjMub2ZfaW50IDYwXG4gICAgICAgICAgbGV0IGludDYzXzI0ID0gSW50NjMub2ZfaW50IDI0XG5cbiAgICAgICAgICAoKiBVbml0cyBvZiBzZWNvbmRzIGFuZCBzbWFsbGVyIGNhbiBiZSB3cml0dGVuIGluIGRlY2ltYWwgbm90YXRpb24gd2l0aG91dFxuICAgICAgICAgICAgIHdvcnJ5aW5nIGFib3V0IG5vbi1wb3dlci1vZi10ZW4gZmFjdG9ycy4gKilcbiAgICAgICAgICBtb2R1bGUgRGVjaW1hbF91bml0ID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IFNlY29uZFxuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIHwgTm9uZVxuICAgICAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgICAgICAgbGV0IGNyZWF0ZSB+cyB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBpZiBzID4gMFxuICAgICAgICAgICAgICB0aGVuIFNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IG5hbm9zX29mX21pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHRoZW4gTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSBuYW5vc19vZl9taWNyb3NlY29uZFxuICAgICAgICAgICAgICB0aGVuIE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gMVxuICAgICAgICAgICAgICB0aGVuIE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBOb25lXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgaW50ZWdlciB0IH5zIH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiBzXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbnMgLyBuYW5vc19vZl9taWxsaXNlY29uZFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG5zIC8gbmFub3Nfb2ZfbWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IG5zXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgYmlsbGlvbnRocyB0IH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiBuc1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG5zICUgbmFub3Nfb2ZfbWlsbGlzZWNvbmQgKiAxXzAwMFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG5zICUgbmFub3Nfb2ZfbWljcm9zZWNvbmQgKiAxXzAwMF8wMDBcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IDBcbiAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBsZW5ndGggdCB+ZGlnaXRzIH5kZWNpbWFscyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfbGVuID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgICB8IFNlY29uZCAtPiBkaWdpdHMgKyAxXG4gICAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCB8IE1pY3Jvc2Vjb25kIHwgTmFub3NlY29uZCAtPiBkaWdpdHMgKyAyXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxzX2xlbiA9IGlmIGRlY2ltYWxzID4gMCB0aGVuIGRlY2ltYWxzICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgZGlnaXRzX2xlbiArIGRlY2ltYWxzX2xlblxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IHdyaXRlX3N1ZmZpeCB0IGJ1ZiB+cG9zID1cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IHdyaXRlX2NoYXIgYnVmIH5wb3MgJ3MnXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAnbScgJ3MnXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAndScgJ3MnXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICduJyAncydcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHBvc1xuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IHdyaXRlIHQgYnVmIH5wb3MgfmludGVnZXIgfmRpZ2l0cyB+YmlsbGlvbnRocyB+ZGVjaW1hbHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBpZiBkaWdpdHMgPSAwXG4gICAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgaW50ZWdlciB+ZGlnaXRzIGluXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWNpbWFscyA9IDBcbiAgICAgICAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2NoYXIgYnVmIH5wb3MgJy4nIGluXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlX2RlY2ltYWxzIGJ1ZiB+cG9zIH5iaWxsaW9udGhzIH5kZWNpbWFscylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHdyaXRlX3N1ZmZpeCB0IGJ1ZiB+cG9zKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmRcblxuICAgICAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgICAgICBpZiBlcXVhbCB0IHplcm9cbiAgICAgICAgICAgIHRoZW4gXCIwc1wiXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGlzX25lZ2F0aXZlID0gdCA8IHplcm8gaW5cbiAgICAgICAgICAgICAgbGV0IHNlY29uZHMgPSBJbnQ2My4oIC8gKSAodG9faW50NjNfbnMgdCkgKHRvX2ludDYzX25zIHNlY29uZCkgaW5cbiAgICAgICAgICAgICAgbGV0IG5zID1cbiAgICAgICAgICAgICAgICBJbnQ2My5yZW0gKHRvX2ludDYzX25zIHQpICh0b19pbnQ2M19ucyBzZWNvbmQpIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNlY29uZHMgPSBJbnQ2My5hYnMgc2Vjb25kcyBpblxuICAgICAgICAgICAgICBsZXQgbnMgPSBJbnQuYWJzIG5zIGluXG4gICAgICAgICAgICAgIGxldCBzID0gSW50NjMucmVtIHNlY29uZHMgaW50NjNfNjAgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgbWludXRlcyA9IEludDYzLiggLyApIHNlY29uZHMgaW50NjNfNjAgaW5cbiAgICAgICAgICAgICAgbGV0IG0gPSBJbnQ2My5yZW0gbWludXRlcyBpbnQ2M182MCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBob3VycyA9IEludDYzLiggLyApIG1pbnV0ZXMgaW50NjNfNjAgaW5cbiAgICAgICAgICAgICAgbGV0IGggPSBJbnQ2My5yZW0gaG91cnMgaW50NjNfMjQgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgZCA9IEludDYzLiggLyApIGhvdXJzIGludDYzXzI0IHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9kID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpkIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfaCA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6aCBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX20gPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOm0gaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdCA9IERlY2ltYWxfdW5pdC5jcmVhdGUgfnMgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfaW50ZWdlciA9IERlY2ltYWxfdW5pdC5pbnRlZ2VyIGRlY2ltYWxfdW5pdCB+cyB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9iaWxsaW9udGhzID0gRGVjaW1hbF91bml0LmJpbGxpb250aHMgZGVjaW1hbF91bml0IH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2RlY2ltYWxfdW5pdCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpkZWNpbWFsX3VuaXRfaW50ZWdlclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0ID1cbiAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGVjaW1hbF9wbGFjZXNfdG9fd3JpdGUgfmJpbGxpb250aHM6ZGVjaW1hbF91bml0X2JpbGxpb250aHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHN0cmluZ19sZW5ndGggPVxuICAgICAgICAgICAgICAgIGxldCBzaWduX2xlbiA9IGlmIGlzX25lZ2F0aXZlIHRoZW4gMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZF9sZW4gPSBpZiBkaWdpdHNfb2ZfZCA+IDAgdGhlbiBkaWdpdHNfb2ZfZCArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGhfbGVuID0gaWYgZGlnaXRzX29mX2ggPiAwIHRoZW4gZGlnaXRzX29mX2ggKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBtX2xlbiA9IGlmIGRpZ2l0c19vZl9tID4gMCB0aGVuIGRpZ2l0c19vZl9tICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2xlbiA9XG4gICAgICAgICAgICAgICAgICBEZWNpbWFsX3VuaXQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgICB+ZGlnaXRzOmRpZ2l0c19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOmRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgc2lnbl9sZW4gKyBkX2xlbiArIGhfbGVuICsgbV9sZW4gKyBkZWNpbWFsX3VuaXRfbGVuXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFzc2VydCAoc3RyaW5nX2xlbmd0aCA+IDApO1xuICAgICAgICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIHN0cmluZ19sZW5ndGggaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IDAgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IGlmIGlzX25lZ2F0aXZlIHRoZW4gd3JpdGVfY2hhciBidWYgfnBvcyAnLScgZWxzZSBwb3MgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9kIGQgJ2QnIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfaCBoICdoJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX20gbSAnbScgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAgRGVjaW1hbF91bml0LndyaXRlXG4gICAgICAgICAgICAgICAgICBkZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgIGJ1ZlxuICAgICAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICAgICAgfmludGVnZXI6ZGVjaW1hbF91bml0X2ludGVnZXJcbiAgICAgICAgICAgICAgICAgIH5kaWdpdHM6ZGlnaXRzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgfmJpbGxpb250aHM6ZGVjaW1hbF91bml0X2JpbGxpb250aHNcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczpkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXNzZXJ0IChwb3MgPSBzdHJpbmdfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWYpXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy50b19zdHJpbmdcblxuICAgICAgICBtb2R1bGUgT2Zfc3RyaW5nID0gc3RydWN0XG4gICAgICAgICAgKCogV2UgZG8gY29tcHV0YXRpb25zIHVzaW5nIG5lZ2F0aXZlIG51bWJlcnMgZXZlcnl3aGVyZSBhbmQgdGVzdCBhZ2FpbnN0XG4gICAgICAgICAgICAgdGhpbmdzIHJlbGF0ZWQgdG8gW0ludDYzLm1pbl92YWx1ZV0gcmF0aGVyIHRoYW4gdXNpbmcgcG9zaXRpdmUgbnVtYmVyc1xuICAgICAgICAgICAgIGFuZCB0ZXN0aW5nIGFnYWluc3QgdGhpbmdzIHJlbGF0ZWQgdG8gW0ludDYzLm1heF92YWx1ZV0gYmVjYXVzZSB0aGVcbiAgICAgICAgICAgICBuZWdhdGl2ZSBpbnRlZ2VyIHJhbmdlIGlzIG9uZSB3aWRlciB0aGFuIHRoZSBwb3NpdGl2ZSBpbnRlZ2VyIHJhbmdlXG4gICAgICAgICAgICAgKC0yKio2MyB2cyAyKio2My0xKSwgYW5kIHdlIG5lZWQgdGhhdCB0byBiZSBhYmxlIHRvIGhhbmRsZSBJbnQ2My5taW5fdmFsdWVcbiAgICAgICAgICAgICBuaWNlbHkuICopXG5cbiAgICAgICAgICBsZXQgaW50NjNfMTAgPSBJbnQ2My5vZl9pbnQgMTBcbiAgICAgICAgICBsZXQgbWluX211bHQxMF93aXRob3V0X3VuZGVyZmxvdyA9IEludDYzLihtaW5fdmFsdWUgLyBpbnQ2M18xMClcblxuICAgICAgICAgIGxldFtAY29sZF0gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb24gPVxuICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlRpbWVfbnMuU3Bhbi5vZl9zdHJpbmc6IGludmFsaWQgc3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgIChzdHJpbmcgOiBzdHJpbmcpXG4gICAgICAgICAgICAgICAgICAocmVhc29uIDogc3RyaW5nKV1cbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgKCogQXNzdW1lcyB4IGFuZCB5IGFyZSBib3RoIG5vbnBvc2l0aXZlICopXG4gICAgICAgICAgbGV0IGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIHggeSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAgICAgICBsZXQgc3VtID0geCArIHkgaW5cbiAgICAgICAgICAgIGlmIHN1bSA+IHhcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIHN1bVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgYWRkX25lZ19kaWdpdCB+c3RyaW5nIGludDYzIGNoYXIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgICAgICAgbGV0IGRpZ2l0ID0gSW50NjMub2ZfaW50IChDaGFyLmdldF9kaWdpdF9leG4gY2hhcikgaW5cbiAgICAgICAgICAgIGlmIGludDYzIDwgbWluX211bHQxMF93aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgKGludDYzICogaW50NjNfMTApICgtZGlnaXQpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBtaW5fZmFjdG9yX29mIHNwYW4gPSBJbnQ2My4oIC8gKSBJbnQ2My5taW5fdmFsdWUgKHRvX2ludDYzX25zIHNwYW4pXG4gICAgICAgICAgbGV0IG1pbl9kYXlzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBkYXlcbiAgICAgICAgICBsZXQgbWluX2hvdXJzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBob3VyXG4gICAgICAgICAgbGV0IG1pbl9taW51dGVzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaW51dGVcbiAgICAgICAgICBsZXQgbWluX3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIHNlY29uZFxuICAgICAgICAgIGxldCBtaW5fbWlsbGlzZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaWxsaXNlY29uZFxuICAgICAgICAgIGxldCBtaW5fbWljcm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaWNyb3NlY29uZFxuICAgICAgICAgIGxldCBtaW5fbmFub3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG5hbm9zZWNvbmRcblxuICAgICAgICAgIGxldCBtaW5fd2l0aG91dF91bmRlcmZsb3dfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSA9XG4gICAgICAgICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgICAgICAgIHwgRGF5IC0+IG1pbl9kYXlzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IEhvdXIgLT4gbWluX2hvdXJzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pbnV0ZSAtPiBtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBTZWNvbmQgLT4gbWluX3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBtaW5fbWljcm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gbWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBuZWdhdGl2ZV9wYXJ0XG4gICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgfm5lZ19pbnRlZ2VyXG4gICAgICAgICAgICAgICAgfmRlY2ltYWxfcG9zXG4gICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICB+dW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICAgfnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgbGV0IHNjYWxlID0gdG9faW50NjNfbnMgKG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUpIGluXG4gICAgICAgICAgICBsZXQgbWluX3dpdGhvdXRfdW5kZXJmbG93ID1cbiAgICAgICAgICAgICAgbWluX3dpdGhvdXRfdW5kZXJmbG93X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBJbnQ2My4oIDwgKSBuZWdfaW50ZWdlciBtaW5fd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIGxldCBuZWdfaW50ZWdlcl9ucyA9IEludDYzLiggKiApIG5lZ19pbnRlZ2VyIHNjYWxlIGluXG4gICAgICAgICAgICBsZXQgZnJhY3Rpb25fcG9zID0gZGVjaW1hbF9wb3MgKyAxIGluXG4gICAgICAgICAgICBpZiBmcmFjdGlvbl9wb3MgPj0gZW5kX3Bvc1xuICAgICAgICAgICAgdGhlbiBuZWdfaW50ZWdlcl9uc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX25zID1cbiAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy5yZWFkX2ludDYzX2RlY2ltYWxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgfnBvczpmcmFjdGlvbl9wb3NcbiAgICAgICAgICAgICAgICAgIH5zY2FsZVxuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOihlbmRfcG9zIC0gZnJhY3Rpb25fcG9zKVxuICAgICAgICAgICAgICAgICAgfmFsbG93X3VuZGVyc2NvcmU6dHJ1ZVxuICAgICAgICAgICAgICAgICAgfnJvdW5kX3RpZXM6cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgbmVnX2ludGVnZXJfbnMgKEludDYzLiggfi0gKSBkZWNpbWFsX25zKSlcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGxldCBuZWdfbnMgPSByZWYgSW50NjMuemVybyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IHN0cmluZ1wiO1xuICAgICAgICAgICAgbGV0IGlzX25lZ2F0aXZlID1cbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgfCAnKycgLT5cbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmcgOiBEaWdpdF9zdHJpbmdfaGVscGVycy5Sb3VuZC50ID1cbiAgICAgICAgICAgICAgKCogVWx0aW1hdGVseSwgd2UgYWx3YXlzIHJvdW5kIHBhcnNlZCBzcGFucyB0b3dhcmRzIHBvc2l0aXZlIGluZmluaXR5IHdoZW5cbiAgICAgICAgICAgICAgICAgdGhlIG5lYXJlc3Qgcm91bmQgbnMgYXJlIGVxdWlkaXN0YW50LiBGb3IgZXhhbXBsZSwgXCIxLjVuc1wiIGlzIHJlYWQgYXNcbiAgICAgICAgICAgICAgICAgMi4wbnMsIGFuZCBcIi0xLjVuc1wiIGlzIHJlYWQgYXMgLTFucy4gU2luY2Ugd2UgcmVhZCBhYnNvbHV0ZSB2YWx1ZXMgYmVmb3JlXG4gICAgICAgICAgICAgICAgIGFwcGx5aW5nIHRoZSBzaWduLCB3ZSBtdXN0IGNob29zZSBvdXIgcm91bmRpbmcgZGlyZWN0aW9uIGJhc2VkIG9uIHRoZVxuICAgICAgICAgICAgICAgICBzaWduLiBSb3VuZGluZyBkZWNpbWFsIHZhbHVlcyBoYXBwZW5zIGJlZm9yZSBuZWdhdGluZyB0aGVpciBtYWduaXR1ZGUuICopXG4gICAgICAgICAgICAgIG1hdGNoIGlzX25lZ2F0aXZlIHdpdGhcbiAgICAgICAgICAgICAgfCBmYWxzZSAtPiBUb3dhcmRfcG9zaXRpdmVfaW5maW5pdHlcbiAgICAgICAgICAgICAgfCB0cnVlIC0+IFRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIExvb3Agb3ZlciBwYXJ0cywgbGlrZSBcIjVtXCIgaW4gXCIxaDVtMzBzXCIgKilcbiAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gZG9cbiAgICAgICAgICAgICAgbGV0IGhhc19kaWdpdCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICBsZXQgbmVnX2ludGVnZXIgPVxuICAgICAgICAgICAgICAgIGxldCBpID0gcmVmIEludDYzLnplcm8gaW5cbiAgICAgICAgICAgICAgICBsZXQgZW5kX29mX2RpZ2l0cyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gJiYgbm90ICFlbmRfb2ZfZGlnaXRzIGRvXG4gICAgICAgICAgICAgICAgICBsZXQgYyA9IFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIGluXG4gICAgICAgICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgICAgICAgICBpIDo9IGFkZF9uZWdfZGlnaXQgfnN0cmluZyAhaSBjO1xuICAgICAgICAgICAgICAgICAgICBoYXNfZGlnaXQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgJ18nIC0+IGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZW5kX29mX2RpZ2l0cyA6PSB0cnVlXG4gICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAhaVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF9wb3MgPSAhcG9zIGluXG4gICAgICAgICAgICAgIGlmICFwb3MgPCBsZW4gJiYgQ2hhci5lcXVhbCAnLicgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zKVxuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICBsZXQgZW5kX29mX2RlY2ltYWxzID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiAmJiBub3QgIWVuZF9vZl9kZWNpbWFscyBkb1xuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhc19kaWdpdCA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCAnXycgLT4gaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBlbmRfb2ZfZGVjaW1hbHMgOj0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRvbmUpO1xuICAgICAgICAgICAgICBsZXQgZW5kX3BvcyA9ICFwb3MgaW5cbiAgICAgICAgICAgICAgaWYgbm90ICFoYXNfZGlnaXRcbiAgICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm5vIGRpZ2l0cyBiZWZvcmUgdW5pdCBzdWZmaXhcIjtcbiAgICAgICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50ID1cbiAgICAgICAgICAgICAgICBpZiAhcG9zICsgMSA8IGxlbiAmJiBDaGFyLmVxdWFsICdzJyAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICghcG9zICsgMSkpXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdtJyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8ICd1JyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8ICduJyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInVucGFyc2VhYmxlIHVuaXQgc3VmZml4XCIpXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAhcG9zIDwgbGVuXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdkJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgRGF5XG4gICAgICAgICAgICAgICAgICB8ICdoJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgSG91clxuICAgICAgICAgICAgICAgICAgfCAnbScgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIE1pbnV0ZVxuICAgICAgICAgICAgICAgICAgfCAncycgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIFNlY29uZFxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidW5wYXJzZWFibGUgdW5pdCBzdWZmaXhcIilcbiAgICAgICAgICAgICAgICBlbHNlIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibm8gdW5pdCBzdWZmaXggYWZ0ZXIgZGlnaXRzXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5lZ19uYW5vc19vZl9wYXJ0ID1cbiAgICAgICAgICAgICAgICBuZWdhdGl2ZV9wYXJ0XG4gICAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIH5uZWdfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxfcG9zXG4gICAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgfnVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgICAgfnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG5lZ19ucyA6PSBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyAhbmVnX25zIG5lZ19uYW5vc19vZl9wYXJ0XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgbGV0IG5zID1cbiAgICAgICAgICAgICAgaWYgaXNfbmVnYXRpdmVcbiAgICAgICAgICAgICAgdGhlbiAhbmVnX25zXG4gICAgICAgICAgICAgIGVsc2UgaWYgSW50NjMuKCA9ICkgIW5lZ19ucyBJbnQ2My5taW5fdmFsdWVcbiAgICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiXG4gICAgICAgICAgICAgIGVsc2UgSW50NjMuKCB+LSApICFuZWdfbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvZl9pbnQ2M19ucyBuc1xuICAgICAgICAgIDs7XG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCBvZl9zdHJpbmcgPSBPZl9zdHJpbmcub2Zfc3RyaW5nXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cClcbiAgICAgICAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZV9ucy5TcGFuLlN0YWJsZS5WMi50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhbiBBdG9tXCIgc2V4cFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQwXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQwKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5sZXQgdG9fc3RyaW5nID0gU3RhYmxlLlYyLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IFN0YWJsZS5WMi5vZl9zdHJpbmdcbmxldCBzZXhwX29mX3QgPSBTdGFibGUuVjIuc2V4cF9vZl90XG5sZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYyLnRfb2Zfc2V4cFxubGV0IHRfc2V4cF9ncmFtbWFyID0gU3RhYmxlLlYyLnRfc2V4cF9ncmFtbWFyXG5cbm1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIEZ1bmN0aW9ucyByZXF1aXJlZCBieSBbUm9idXN0bHlfY29tcGFyYWJsZV06IGFsbG93cyBmb3IgW3JvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZV1cbiAgIGdyYW51bGFyaXR5LlxuXG4gICBBIG1pY3Jvc2Vjb25kIGlzIGEgcmVhc29uYWJsZSBncmFudWxhcml0eSBiZWNhdXNlIHRoZXJlIGlzIHZlcnkgbGl0dGxlIG5ldHdvcmtcbiAgIGFjdGl2aXR5IHRoYXQgY2FuIGJlIG1lYXN1cmVkIHRvIHN1Yi1taWNyb3NlY29uZCByZXNvbHV0aW9uLiAqKVxubGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IG1pY3Jvc2Vjb25kXG5sZXQgKCA+PS4gKSB0IHUgPSB0ID49IEludDYzLih1IC0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPD0uICkgdCB1ID0gdCA8PSBJbnQ2My4odSArIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoID0uICkgdCB1ID0gSW50NjMuKGFicyAodCAtIHUpKSA8PSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCAoID4uICkgdCB1ID0gdCA+IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPC4gKSB0IHUgPSB0IDwgSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8Pi4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG5sZXQgcm9idXN0bHlfY29tcGFyZSB0IHUgPSBpZiB0IDwuIHUgdGhlbiAtMSBlbHNlIGlmIHQgPi4gdSB0aGVuIDEgZWxzZSAwXG5cbigqIFdlIGRvbid0IGp1c3QgY29udmVydCB0byBbVGltZS5TcGFuLnRdIGFuZCB1c2UgdGhlIGNvbnZlcnNpb24gdGhlcmUgYmVjYXVzZSBvdXJcbiAgIFt0b19zcGFuXSBjb252ZXJzaW9uIGlzIGxpbWl0ZWQgdG8gbWljcm9zZWNvbmQgcHJlY2lzaW9uLiAqKVxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgc2luY2VfdW5peF9lcG9jaCAoKSA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gb2ZfaW50NjNfbnNcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPVxuICBJbnQ2My5yYW5kb20gP3N0YXRlIChtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbiAgLSBJbnQ2My5yYW5kb20gP3N0YXRlIChuZWcgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKyBJbnQ2My5vbmUpXG47O1xuXG5sZXQgcmFuZG9taXplIHQgfnBlcmNlbnQgPSBTcGFuX2hlbHBlcnMucmFuZG9taXplIHQgfnBlcmNlbnQgfnNjYWxlXG5cbmxldCB0b19zaG9ydF9zdHJpbmcgdCA9XG4gIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbjs7XG5cbmxldCBnZW5faW5jbCA9IEludDYzLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEludDYzLmdlbl91bmlmb3JtX2luY2xcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBtb2R1bGVfbmFtZVxuICBlbmQpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZClcblxudHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjIuY29tcGFyYXRvcl93aXRuZXNzXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBTdGFibGUuVjIuY29tcGFyYXRvclxuICBlbmQpXG5cbigqIHJlLWluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYW5kIGl0cyBjb21wYXJpc29ucyB0byBzaGFkb3cgdGhlXG4gICB1bi1pbmxpbmVhYmxlIG9uZXMgZnJvbSBbQ29tcGFyYWJsZV0gKilcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBULlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCB0ID0gU3Bhbl9mbG9hdC5vZl9zZWMgKHRvX3NlYyB0KVxubGV0IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBzID0gb2Zfc2VjIChTcGFuX2Zsb2F0LnRvX3NlYyBzKVxubGV0IGhhbGZfbWljcm9zZWNvbmQgPSBJbnQ2My5vZl9pbnQgNTAwXG5sZXQgbmVhcmVzdF9taWNyb3NlY29uZCB0ID0gSW50NjMuKCh0b19pbnQ2M19ucyB0ICsgaGFsZl9taWNyb3NlY29uZCkgLyUgb2ZfaW50IDEwMDApXG5cbmxldFtAY29sZF0gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlNwYW4udCBleGNlZWRzIGxpbWl0c1wiXG4gICAgICAgICh0IDogdClcbiAgICAgICAgKG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdClcbiAgICAgICAgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdCldXG47O1xuXG5sZXQgY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0ID1cbiAgaWYgdCA8IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIHx8IHQgPiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuIGludmFsaWRfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0XG4gIGVsc2UgdFxuOztcblxubGV0IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0ID1cbiAgU3Bhbl9mbG9hdC5vZl91cyAoSW50NjMudG9fZmxvYXQgKG5lYXJlc3RfbWljcm9zZWNvbmQgKGNoZWNrX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCkpKVxuOztcblxubGV0IG1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHMgPVxuICBpZiBTcGFuX2Zsb2F0LiggPiApIHMgbWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBTcGFuX2Zsb2F0LiggPCApIHMgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMuU3BhbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgc3BhblwiXG4gICAgICBzXG4gICAgICBbJXNleHBfb2Y6IFNwYW5fZmxvYXQudF07XG4gICgqIFVzaW5nIFtUaW1lLlNwYW4udG9fc2VjXSAoYmVpbmcgdGhlIGlkZW50aXR5KSBzbyB0aGF0XG4gICAgIHdlIG1ha2UgZG9uJ3QgYXBwbHkgdG9vIG1hbnkgY29udmVyc2lvblxuICAgICAtIFRvbyBtYW55IDogYFtTcGFuLnRdIC0+IFthXSAtPiBbdF1gXG4gICAgIC0gT25seSBPbmUgOiBgW1NwYW4udF09PVthXSAtPiBbdF1gLiAqKVxuICBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gKFNwYW5fZmxvYXQudG9fc2VjIHMpXG47O1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9pbnQ2M19ucyBJbnQ2My5taW5fdmFsdWVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1heF92YWx1ZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgb2ZfcGFydHMgPSBvZl9wYXJ0c1xuICBsZXQgdG9fcGFydHMgPSB0b19wYXJ0c1xuZW5kXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IHRvX3NwYW4gPSB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xuXG50eXBlIHVuZGVybHlpbmcgPSBJbnQ2My50XG5cbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB3YWxsLWNsb2NrIG1pZG5pZ2h0ICopXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbmluY2x1ZGUgKFNwYW4gOiBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIHRcblxuXG5sZXQgc3RhcnRfb2ZfZGF5IDogdCA9IFNwYW4uemVyb1xubGV0IHN0YXJ0X29mX25leHRfZGF5IDogdCA9IFNwYW4uZGF5XG5sZXQgYXBwcm94aW1hdGVfZW5kX29mX2RheSA9IFNwYW4uKCAtICkgc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5uYW5vc2Vjb25kXG5sZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IHRcblxubGV0W0Bjb2xkXSBpbnB1dF9vdXRfb2ZfYm91bmRzIHNwYW4gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbnB1dCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgfl86KHNwYW4gOiBTcGFuLnQpXVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBpc19pbnZhbGlkIHNwYW4gPVxuICAoKiBXaHkgd2UgdXNlIFtTcGFuLiggPiApXSByYXRoZXIgdGhhbiBbKCA+PSApXSBiZWxvdzpcblxuICAgICBXZSBhbGxvdyB0byByZXByZXNlbnQgdGhlIGVuZC1vZi1kYXkgc2VudGluZWwgdmFsdWUgKFsyNC4wMDAwMDAwMDBoXSksIHdoaWNoIGlzIG5vdFxuICAgICBpdHNlbGYgYSB2YWxpZCBjbG9jayBmYWNlIHRpbWUuICBIb3dldmVyLCBzaW5jZSB2YWxpZCBjbG9jayBmYWNlIHRpbWVzIHJlYWRpbHlcbiAgICAgcm91bmQgdXAgdG8gaXQsIGl0J3MgYmV0dGVyIHRvIGFsbG93IGl0IHRvIGJlIHJlcHJlc2VudGVkLiAqKVxuICBTcGFuLiggPCApIHNwYW4gc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA+ICkgc3BhbiBzdGFydF9vZl9uZXh0X2RheVxuOztcblxubGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPSBub3QgKGlzX2ludmFsaWQgc3BhbilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IHNwYW5cblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBzcGFuID1cbiAgaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuIGVsc2Ugc3BhblxuOztcblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCBzcGFuID0gaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gTm9uZSBlbHNlIFNvbWUgc3BhblxubGV0IGFkZF9leG4gdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLiggKyApIHQgc3BhbilcbmxldCBzdWJfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgYWRkIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgbmV4dCB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLm5leHQgdClcbmxldCBwcmV2IHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4ucHJldiB0KVxubGV0IGRpZmYgdCB1ID0gU3Bhbi4oIC0gKSB0IHVcblxubGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgKCogU2ltaWxhciB0byBbVGltZS5PZmRheS5jcmVhdGVdLCBpZiB3ZSBkZXRlY3QgYSBsZWFwIHNlY29uZCB3ZSBzdHJpcCBvZmYgYWxsXG4gICAgIHN1Yi1zZWNvbmQgZWxlbWVudHMgc28gdGhhdCBISDpNTTo2MC5YWFhYWFhYWFggaXMgYWxsIG1hcHBlZCB0byBISDpNTTo2MC4gKilcbiAgbGV0IG1zLCB1cywgbnMgPVxuICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICB8IF8gLT4gbXMsIHVzLCBuc1xuICBpblxuICBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChcbiAgICAgIFNwYW4uU3RhYmxlLlYyIDpcbiAgICAgICAgQ29tcGFyYXRvci5TXG4gICAgICB3aXRoIHR5cGUgdCA9IHRcbiAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTcGFuLlN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBiaW5faW9dXG5cbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfdW5pdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggbW9kICkgPSBJbnQ2My5yZW0gaW5cbiAgICAgIGxldCAoICEgKSA9IEludDYzLm9mX2ludCBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBmdW4gdCB+dW5pdCAtPlxuICAgICAgICBpZiBTcGFuLiggPCApIHQgc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA8ICkgc3RhcnRfb2ZfbmV4dF9kYXkgdFxuICAgICAgICB0aGVuIFwiSW5jb3JyZWN0IGRheVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaXh0eSA9ICE2MCBpblxuICAgICAgICAgIGxldCB0aG91c2FuZCA9ICExMDAwIGluXG4gICAgICAgICAgbGV0IG5zID0gU3Bhbi50b19pbnQ2M19ucyB0IGluXG4gICAgICAgICAgbGV0IHVzID0gbnMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCBucyA9IG5zIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IG1zID0gdXMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCB1cyA9IHVzIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IHMgPSBtcyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG1zID0gbXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IHMgLyBzaXh0eSBpblxuICAgICAgICAgIGxldCBzID0gcyBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBoID0gbSAvIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IG0gbW9kIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgdW5pdCA9XG4gICAgICAgICAgICBtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgIHwgKGBOYW5vc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE1pbGxpc2Vjb25kIHwgYFNlY29uZCkgYXMgdW5pdCAtPiB1bml0XG4gICAgICAgICAgICB8IGBNaW51dGVfb3JfbGVzcyAtPlxuICAgICAgICAgICAgICBpZiBucyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiB1cyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbXMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBgTWludXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGVuID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCBgTWludXRlIC0+IDVcbiAgICAgICAgICAgIHwgYFNlY29uZCAtPiA4XG4gICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAxMlxuICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gMTVcbiAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gMThcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MCBoO1xuICAgICAgICAgIEJ5dGVzLnNldCBzdHIgMiAnOic7XG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MyBtO1xuICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgfCBgTWludXRlIC0+ICgpXG4gICAgICAgICAgIHwgKGBTZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgIEJ5dGVzLnNldCBzdHIgNSAnOic7XG4gICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6NiBzO1xuICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgfCBgU2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgIHwgKGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA4ICcuJztcbiAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczo5IG1zO1xuICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgTWlsbGlzZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgfCAoYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxMiB1cztcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgYE1pY3Jvc2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6MTUgbnMpKSkpO1xuICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6c3RyKVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3MgfnVudGlsID1cbiAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICBsZXQgZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBudW1fZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBwb3MgPSByZWYgcG9zIGluXG4gICAgICAoKiByZWFkIHVwIHRvIDEwIGRpZ2l0czsgc3RvcmUgdGhlIGZpcnN0IDksIHVzZSB0aGUgMTB0aCB0byByb3VuZCAqKVxuICAgICAgd2hpbGUgIXBvcyA8IHVudGlsICYmICFudW1fZGlnaXRzIDwgMTAgZG9cbiAgICAgICAgbGV0IGMgPSBzdHJpbmcuWyFwb3NdIGluXG4gICAgICAgIGlmIENoYXIuaXNfZGlnaXQgY1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpbmNyIG51bV9kaWdpdHM7XG4gICAgICAgICAgaWYgIW51bV9kaWdpdHMgPCAxMFxuICAgICAgICAgIHRoZW4gZGlnaXRzIDo9ICghZGlnaXRzICogMTApICsgQ2hhci5nZXRfZGlnaXRfZXhuIGNcbiAgICAgICAgICBlbHNlIGlmIENoYXIuZ2V0X2RpZ2l0X2V4biBjID49IDVcbiAgICAgICAgICB0aGVuIGluY3IgZGlnaXRzXG4gICAgICAgICAgZWxzZSAoKSk7XG4gICAgICAgIGluY3IgcG9zXG4gICAgICBkb25lO1xuICAgICAgKCogaWYgdGhlcmUgYXJlIG1pc3NpbmcgZGlnaXRzLCBhZGQgemVyb2VzICopXG4gICAgICBpZiAhbnVtX2RpZ2l0cyA8IDkgdGhlbiBkaWdpdHMgOj0gIWRpZ2l0cyAqIEludC5wb3cgMTAgKDkgLSAhbnVtX2RpZ2l0cyk7XG4gICAgICAhZGlnaXRzXG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IG5hbm9zZWNvbmRzID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDBcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHBhcnNlX25hbm9zZWNvbmRzIHN0cmluZyB+cG9zOihzdWJzZWNfcG9zICsgMSkgfnVudGlsOihzdWJzZWNfcG9zICsgc3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgbmFub3NlY29uZHMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLnNlY29uZCBzZWMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLm1pbnV0ZSBtaW4pXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLmhvdXIgaHIpXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHN0cmluZyB+ZjpjcmVhdGVfZnJvbV9wYXJzZWRcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA6IHQgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJleHBlY3RlZCBhbiBhdG9tXCIgc2V4cFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgdG9fc3RyaW5nICh0IDogdCkgPSB0b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE5hbm9zZWNvbmRcbiAgICBsZXQgc2V4cF9vZl90ICh0IDogdCkgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuICAgIGxldCB0b19pbnQ2MyB0ID0gU3Bhbl9ucy5TdGFibGUuVjIudG9faW50NjMgdFxuICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbl9ucy5TdGFibGUuVjIub2ZfaW50NjNfZXhuIHQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKFxuICBTdGFibGUuVjEgOlxuICAgIENvbXBhcmF0b3IuU1xuICB3aXRoIHR5cGUgdCA6PSB0XG4gICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzKVxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RhYmxlLlYxIDpcbiAgICAgICAgQ29tcGFyYXRvci5TXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgIGluY2x1ZGUgKFN0YWJsZS5WMSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuT2ZkYXlcIlxuICAgIGxldCBoYXNoID0gU3Bhbi5oYXNoXG4gICAgbGV0IGhhc2hfZm9sZF90ID0gU3Bhbi5oYXNoX2ZvbGRfdFxuICBlbmQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdGFibGUuVjEudF9zZXhwX2dyYW1tYXJcbmxldCB0b19taWNyb3NlY29uZF9zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pY3Jvc2Vjb25kXG5sZXQgdG9fbWlsbGlzZWNvbmRfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaWxsaXNlY29uZFxubGV0IHRvX3NlY19zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YFNlY29uZFxubGV0IHRvX3N0cmluZ190cmltbWVkIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaW51dGVfb3JfbGVzc1xuXG5sZXQgb2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciA9XG4gIHRyeVxuICAgIE9mZGF5X2hlbHBlcnMucGFyc2VfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyIH5mOlN0YWJsZS5WMS5jcmVhdGVfZnJvbV9wYXJzZWRcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQ6IGNhbm5vdCBwYXJzZSBzdHJpbmdcIlxuICAgICAgICAgIH5fOihTdHJpbmcuc3VibyBzdHIgP3BvcyA/bGVuIDogc3RyaW5nKVxuICAgICAgICAgIH5fOihleG4gOiBleG4pXVxuOztcblxubGV0IGV2ZXJ5ID1cbiAgbGV0IHJlYyBldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2MgPVxuICAgICgqIEFzc3VtZXMgW3NwYW5dLCBbc3RhcnRdLCBhbmQgW3N0b3BdIGFyZSB2YWxpZCBvZmRheXMuIEFzc3VtZXMgW3N0YXJ0IDwgc3RvcF0uXG4gICAgICAgQXNzdW1lcyBbc3BhbiA+IDBdLiAqKVxuICAgIGxldCBhY2MgPSBzdGFydCA6OiBhY2MgaW5cbiAgICBsZXQgc3RhcnQgPSBTcGFuLiggKyApIHN0YXJ0IHNwYW4gaW5cbiAgICBpZiBTcGFuLiggPiApIHN0YXJ0IHN0b3AgKCogY2Fubm90IG92ZXJmbG93ICopXG4gICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICBlbHNlIGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjY1xuICBpblxuICAoKiBpbnRlcm5hbCBbZXZlcnldIG5hbWVkIHRvIHNob3cgdXAgaW4gc3RhY2sgdHJhY2VzICopXG4gIGxldCBldmVyeSBzcGFuIH5zdGFydCB+c3RvcCA9XG4gICAgaWYgU3Bhbi4oID4gKSBzdGFydCBzdG9wXG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltUaW1lX25zLk9mZGF5LmV2ZXJ5XSBjYWxsZWQgd2l0aCBbc3RhcnRdID4gW3N0b3BdXCIgKHN0YXJ0IDogdCkgKHN0b3AgOiB0KV1cbiAgICBlbHNlIGlmIFNwYW4uKCA8PSApIHNwYW4gU3Bhbi56ZXJvXG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJbVGltZV9ucy5PZmRheS5ldmVyeV0gY2FsbGVkIHdpdGggbmVnYXRpdmUgc3BhblwiIH5fOihzcGFuIDogU3Bhbi50KV1cbiAgICBlbHNlIGlmIGlzX2ludmFsaWQgc3BhblxuICAgIHRoZW4gT2sgWyBzdGFydCBdXG4gICAgZWxzZSBPayAoZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjOltdKVxuICBpblxuICBldmVyeVxuOztcblxubGV0IHNtYWxsX2RpZmYgPVxuICBsZXQgaG91ciA9IFNwYW4udG9faW50NjNfbnMgU3Bhbi5ob3VyIGluXG4gIGZ1biBvZmRheTEgb2ZkYXkyIC0+XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBvZmRheTEgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTEpIGluXG4gICAgbGV0IG9mZGF5MiA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MikgaW5cbiAgICBsZXQgZGlmZiA9IG9mZGF5MSAtIG9mZGF5MiBpblxuICAgICgqICBkMSBpcyBpbiAoLWhvdXI7IGhvdXIpICopXG4gICAgbGV0IGQxID0gSW50NjMucmVtIGRpZmYgaG91ciBpblxuICAgICgqICBkMiBpcyBpbiAoMDtob3VyKSAqKVxuICAgIGxldCBkMiA9IEludDYzLnJlbSAoZDEgKyBob3VyKSBob3VyIGluXG4gICAgbGV0IGQgPSBpZiBkMiA+IGhvdXIgLyBJbnQ2My5vZl9pbnQgMiB0aGVuIGQyIC0gaG91ciBlbHNlIGQyIGluXG4gICAgU3Bhbi5vZl9pbnQ2M19ucyBkXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJzbWFsbF9kaWZmXCIgPVxuICBsZXQgdGVzdCB4IHkgPVxuICAgIGxldCBkaWZmID0gc21hbGxfZGlmZiB4IHkgaW5cbiAgICBwcmludGYgIVwic21hbGxfZGlmZiAlcyAlcyA9ICVzXFxuXCIgKHRvX3N0cmluZyB4KSAodG9fc3RyaW5nIHkpIChTcGFuLnRvX3N0cmluZyBkaWZmKVxuICBpblxuICBsZXQgZXhhbXBsZXMgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuICh4LCB5KSAtPiBvZl9zdHJpbmcgeCwgb2Zfc3RyaW5nIHkpXG4gICAgICBbIFwiMTI6MDBcIiwgXCIxMjowNVwiOyBcIjEyOjU4XCIsIFwiMTM6MDJcIjsgXCIwMDo1MlwiLCBcIjIzOjE5XCI7IFwiMDA6MDBcIiwgXCIyNDowMFwiIF1cbiAgaW5cbiAgTGlzdC5pdGVyIGV4YW1wbGVzIH5mOihmdW4gKHgsIHkpIC0+XG4gICAgdGVzdCB4IHk7XG4gICAgdGVzdCB5IHgpO1xuICBbJWV4cGVjdFxuICAgIHt8XG4gICAgc21hbGxfZGlmZiAxMjowMDowMC4wMDAwMDAwMDAgMTI6MDU6MDAuMDAwMDAwMDAwID0gLTVtXG4gICAgc21hbGxfZGlmZiAxMjowNTowMC4wMDAwMDAwMDAgMTI6MDA6MDAuMDAwMDAwMDAwID0gNW1cbiAgICBzbWFsbF9kaWZmIDEyOjU4OjAwLjAwMDAwMDAwMCAxMzowMjowMC4wMDAwMDAwMDAgPSAtNG1cbiAgICBzbWFsbF9kaWZmIDEzOjAyOjAwLjAwMDAwMDAwMCAxMjo1ODowMC4wMDAwMDAwMDAgPSA0bVxuICAgIHNtYWxsX2RpZmYgMDA6NTI6MDAuMDAwMDAwMDAwIDIzOjE5OjAwLjAwMDAwMDAwMCA9IC0yN21cbiAgICBzbWFsbF9kaWZmIDIzOjE5OjAwLjAwMDAwMDAwMCAwMDo1MjowMC4wMDAwMDAwMDAgPSAyN21cbiAgICBzbWFsbF9kaWZmIDAwOjAwOjAwLjAwMDAwMDAwMCAyNDowMDowMC4wMDAwMDAwMDAgPSAwc1xuICAgIHNtYWxsX2RpZmYgMjQ6MDA6MDAuMDAwMDAwMDAwIDAwOjAwOjAwLjAwMDAwMDAwMCA9IDBzIHx9XVxuOztcblxubGV0IGdlbl9pbmNsID0gU3Bhbi5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBTcGFuLmdlbl91bmlmb3JtX2luY2xcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIHN0YXJ0X29mX2RheSBzdGFydF9vZl9uZXh0X2RheVxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIChTcGFuIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0KVxuXG4oKiBkZXByZWNhdGVkIGJpbmRpbmdzICopXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbmxldCB0b19taWxsaXNlY19zdHJpbmcgPSB0b19taWxsaXNlY29uZF9zdHJpbmdcbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgbm93ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kID0gYFVzZV9UaW1lX25zX3VuaXhcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbm1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZV9pbl9iaXRzID0gNjRcblxubW9kdWxlIFNwYW4gPSBTcGFuX25zXG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9uc1xuXG50eXBlIHQgPSBTcGFuLnQgKCogc2luY2UgdGhlIFVuaXggZXBvY2ggKDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDKSAqKVxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudCA9IFNwYW4uUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5pbmNsdWRlIChTcGFuIDogUXVpY2tjaGVjay5TX3JhbmdlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmxldCBub3cgPSBTcGFuLnNpbmNlX3VuaXhfZXBvY2hcbmxldCBlcXVhbCA9IFNwYW4uZXF1YWxcbmxldCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IFNwYW4ubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IFNwYW4ubWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBlcG9jaCA9IFNwYW4uemVyb1xubGV0IGFkZCA9IFNwYW4uKCArIClcbmxldCBzdWIgPSBTcGFuLiggLSApXG5sZXQgZGlmZiA9IFNwYW4uKCAtIClcbmxldCBhYnNfZGlmZiB0IHUgPSBTcGFuLmFicyAoZGlmZiB0IHUpXG5sZXQgbWF4ID0gU3Bhbi5tYXhcbmxldCBtaW4gPSBTcGFuLm1pblxubGV0IG5leHQgPSBTcGFuLm5leHRcbmxldCBwcmV2ID0gU3Bhbi5wcmV2XG5sZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCB0ID0gdFxubGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggcyA9IHNcbmxldCB0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0IDogSW50NjMudCA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbmxldCBvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCBpID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9pbnQ2M19ucyBpKVxubGV0W0Bjb2xkXSBvdmVyZmxvdyAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9uczogb3ZlcmZsb3dcIl1cbmxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPCB0MlxubGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPiB0MlxuXG5sZXQgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW0gPVxuICBpZiBTcGFuLiggPiApIHkgU3Bhbi56ZXJvIHRoZW4gU3Bhbi4oIDwgKSBzdW0geCBlbHNlIFNwYW4uKCA+ICkgc3VtIHhcbjs7XG5cbmxldCBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmYgPVxuICBpZiBTcGFuLiggPiApIHkgU3Bhbi56ZXJvIHRoZW4gU3Bhbi4oID4gKSBkaWZmIHggZWxzZSBTcGFuLiggPCApIGRpZmYgeFxuOztcblxubGV0IGFkZF9leG4geCB5ID1cbiAgbGV0IHN1bSA9IGFkZCB4IHkgaW5cbiAgaWYgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW0gdGhlbiBvdmVyZmxvdyAoKSBlbHNlIHN1bVxuOztcblxubGV0IHN1Yl9leG4geCB5ID1cbiAgbGV0IGRpZmYgPSBzdWIgeCB5IGluXG4gIGlmIHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZiB0aGVuIG92ZXJmbG93ICgpIGVsc2UgZGlmZlxuOztcblxubGV0IGFkZF9zYXR1cmF0aW5nIHggeSA9XG4gIGxldCBzdW0gPSBhZGQgeCB5IGluXG4gIGlmIGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtXG4gIHRoZW5cbiAgICBpZiBTcGFuLih5ID4gemVybykgdGhlbiBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlIGVsc2UgU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZVxuICBlbHNlIHN1bVxuOztcblxubGV0IHN1Yl9zYXR1cmF0aW5nIHggeSA9XG4gIGxldCBkaWZmID0gc3ViIHggeSBpblxuICBpZiBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmZcbiAgdGhlblxuICAgIGlmIFNwYW4uKHkgPiB6ZXJvKSB0aGVuIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGUgZWxzZSBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG4gIGVsc2UgZGlmZlxuOztcblxubGV0IHRvX2ludF9uc19zaW5jZV9lcG9jaCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnNfc2luY2VfZXBvY2ggdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMudG9faW50X25zX3NpbmNlX2Vwb2NoOiB1bnN1cHBvcnRlZCBvbiAzMmJpdCBtYWNoaW5lc1wiXG47O1xuXG5sZXQgb2ZfaW50X25zX3NpbmNlX2Vwb2NoIGkgPSBvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCAoSW50NjMub2ZfaW50IGkpXG5cbmxldCB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgdCA9XG4gIFRpbWVfZmxvYXQub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KSlcbjs7XG5cbmxldCB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdCA9XG4gIFRpbWVfZmxvYXQub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KSlcbjs7XG5cbmxldCBtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgbWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IGNoZWNrX2JlZm9yZV9jb252ZXJzaW9uX2Zvcl8xdXNfcm91bmRpbmcgdGltZSA9XG4gIGlmIFRpbWVfZmxvYXQuKCA8ICkgdGltZSBtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHx8IFRpbWVfZmxvYXQuKCA+ICkgdGltZSBtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZV9ucyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgdGltZVwiXG4gICAgICB0aW1lXG4gICAgICBbJXNleHBfb2Y6IFRpbWVfZmxvYXQuU3RhYmxlLldpdGhfdXRjX3NleHAuVjIudF1cbjs7XG5cbmxldCBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgdGltZSA9XG4gIG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi5vZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKFRpbWVfZmxvYXQudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lKSlcbjs7XG5cbmxldCBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdGltZSA9XG4gIGNoZWNrX2JlZm9yZV9jb252ZXJzaW9uX2Zvcl8xdXNfcm91bmRpbmcgdGltZTtcbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCAoVGltZV9mbG9hdC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUpKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X211bHRpcGxlX2dvdF9ub25wb3NpdGl2ZV9pbnRlcnZhbCBpbnRlcnZhbCA9XG4gIGZhaWx3aXRoc1xuICAgIH5oZXJlOlslaGVyZV1cbiAgICBcIlRpbWVfbnMubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgIGludGVydmFsXG4gICAgWyVzZXhwX29mOiBTcGFuLnRdXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgPVxuICBpZiBTcGFuLiggPD0gKSBpbnRlcnZhbCBTcGFuLnplcm9cbiAgdGhlbiByYWlzZV9uZXh0X211bHRpcGxlX2dvdF9ub25wb3NpdGl2ZV9pbnRlcnZhbCBpbnRlcnZhbDtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9IGFkZCBiYXNlIChTcGFuLnNjYWxlX2ludDYzIGludGVydmFsIChTcGFuLmRpdiBiYXNlX3RvX2FmdGVyIGludGVydmFsKSkgaW5cbiAgICBpZiBuZXh0ID4gYWZ0ZXIgfHwgKGNhbl9lcXVhbF9hZnRlciAmJiBuZXh0ID0gYWZ0ZXIpIHRoZW4gbmV4dCBlbHNlIGFkZCBuZXh0IGludGVydmFsKVxuOztcblxubGV0IG5leHRfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYWZ0ZXIgPSBmYWxzZSkgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsXG47O1xuXG5sZXQgcHJldl9tdWx0aXBsZSA/KGNhbl9lcXVhbF9iZWZvcmUgPSBmYWxzZSkgfmJhc2UgfmJlZm9yZSB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsXG4gICAgfmNhbl9lcXVhbF9hZnRlcjoobm90IGNhbl9lcXVhbF9iZWZvcmUpXG4gICAgfmJhc2VcbiAgICB+YWZ0ZXI6KHN1YiBiZWZvcmUgaW50ZXJ2YWwpXG4gICAgfmludGVydmFsXG47O1xuXG5sZXQgcmFuZG9tID9zdGF0ZSAoKSA9IFNwYW4ucmFuZG9tID9zdGF0ZSAoKVxuXG5tb2R1bGUgVXRjIDogc2lnXG4gIHZhbCB0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IHQgLT4gRGF0ZTAudCAqIFNwYW4udFxuICB2YWwgb2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiBEYXRlMC50IC0+IFNwYW4udCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgKCogYSByZWNyZWF0aW9uIG9mIHRoZSBzeXN0ZW0gY2FsbCBnbXRpbWUgc3BlY2lhbGl6ZWQgdG8gdGhlIGZpZWxkcyB3ZSBuZWVkIHRoYXQgYWxzb1xuICAgICBkb2Vzbid0IHJlbHkgb24gVW5peC4gKilcbiAgbGV0IHRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgKCAhPCApIGkgPSBJbnQ2My5vZl9pbnRfZXhuIGkgaW5cbiAgICBsZXQgKCAhPiApIHQgPSBJbnQ2My50b19pbnRfZXhuIHQgaW5cbiAgICBsZXQgbnNfc2luY2VfZXBvY2ggPSB0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0IGluXG4gICAgbGV0IG5zX3Blcl9kYXkgPSAhPDg2XzQwMCAqICE8MV8wMDBfMDAwXzAwMCBpblxuICAgIGxldCBhcHByb3hfZGF5c19mcm9tX2Vwb2NoID0gbnNfc2luY2VfZXBvY2ggLyBuc19wZXJfZGF5IGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBpZiBuc19zaW5jZV9lcG9jaCA8ICE8MCAmJiBhcHByb3hfZGF5c19mcm9tX2Vwb2NoICogbnNfcGVyX2RheSA8PiBuc19zaW5jZV9lcG9jaFxuICAgICAgdGhlbiBhcHByb3hfZGF5c19mcm9tX2Vwb2NoIC0gITwxXG4gICAgICBlbHNlIGFwcHJveF9kYXlzX2Zyb21fZXBvY2hcbiAgICBpblxuICAgIGxldCBuc19zaW5jZV9zdGFydF9vZl9kYXkgPSBuc19zaW5jZV9lcG9jaCAtIChuc19wZXJfZGF5ICogZGF5c19mcm9tX2Vwb2NoKSBpblxuICAgIGxldCBkYXRlID1cbiAgICAgIERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoICE+ZGF5c19mcm9tX2Vwb2NoIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICAgIGluXG4gICAgbGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gU3Bhbi5vZl9pbnQ2M19ucyBuc19zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICBkYXRlLCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBkYXRlIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID1cbiAgICBhc3NlcnQgKFxuICAgICAgU3Bhbi4oID49ICkgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgU3Bhbi56ZXJvXG4gICAgICAmJiBTcGFuLiggPCApIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IFNwYW4uZGF5KTtcbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIGluXG4gICAgbGV0IHNwYW5faW5fZGF5c19zaW5jZV9lcG9jaCA9IFNwYW4uc2NhbGVfaW50IFNwYW4uZGF5IGRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBzcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi4oICsgKSBzcGFuX2luX2RheXNfc2luY2VfZXBvY2ggc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICBvZl9zcGFuX3NpbmNlX2Vwb2NoIHNwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgbW9kdWxlIE9mZGF5X2FzX3NwYW4gPSBzdHJ1Y3RcbiAgICAgIG9wZW4gSW50Lk9cblxuICAgICAgbGV0IHNlY29uZHNfdG9fc3RyaW5nIHNlY29uZHNfc3BhbiA9XG4gICAgICAgIGxldCBzZWNvbmRzID0gU3Bhbi50b19pbnRfc2VjIHNlY29uZHNfc3BhbiBpblxuICAgICAgICBsZXQgaCA9IHNlY29uZHMgLyAzNjAwIGluXG4gICAgICAgIGxldCBtID0gc2Vjb25kcyAvIDYwICUgNjAgaW5cbiAgICAgICAgbGV0IHMgPSBzZWNvbmRzICUgNjAgaW5cbiAgICAgICAgc3ByaW50ZiBcIiUwMmQ6JTAyZDolMDJkXCIgaCBtIHNcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0d29fZGlnaXRfb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgPSAyICYmIFN0cmluZy5mb3JfYWxsIHN0cmluZyB+ZjpDaGFyLmlzX2RpZ2l0KTtcbiAgICAgICAgSW50Lm9mX3N0cmluZyBzdHJpbmdcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZWNvbmRzX29mX3N0cmluZyBzZWNvbmRzX3N0cmluZyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzZWNvbmRzX3N0cmluZyB+b246JzonIHdpdGhcbiAgICAgICAgfCBbIGhfc3RyaW5nOyBtX3N0cmluZzsgc19zdHJpbmcgXSAtPlxuICAgICAgICAgIGxldCBoID0gdHdvX2RpZ2l0X29mX3N0cmluZyBoX3N0cmluZyBpblxuICAgICAgICAgIGxldCBtID0gdHdvX2RpZ2l0X29mX3N0cmluZyBtX3N0cmluZyBpblxuICAgICAgICAgIGxldCBzID0gdHdvX2RpZ2l0X29mX3N0cmluZyBzX3N0cmluZyBpblxuICAgICAgICAgIFNwYW4ub2ZfaW50X3NlYyAoKCgoaCAqIDYwKSArIG0pICogNjApICsgcylcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgOztcblxuICAgICAgbGV0IG5zX29mXzEwMF9tcyA9IDEwMF8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTBfbXMgPSAxMF8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMV9tcyA9IDFfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwMF91cyA9IDEwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMF91cyA9IDEwXzAwMFxuICAgICAgbGV0IG5zX29mXzFfdXMgPSAxXzAwMFxuICAgICAgbGV0IG5zX29mXzEwMF9ucyA9IDEwMFxuICAgICAgbGV0IG5zX29mXzEwX25zID0gMTBcbiAgICAgIGxldCBuc19vZl8xX25zID0gMVxuXG4gICAgICBsZXQgc3ViX3NlY29uZF90b19zdHJpbmcgc3ViX3NlY29uZF9zcGFuID1cbiAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgbGV0IG5zID0gU3Bhbi50b19pbnQ2M19ucyBzdWJfc2Vjb25kX3NwYW4gfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICBpZiBucyA9IDBcbiAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDFkXCIgKG5zIC8gbnNfb2ZfMTAwX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDJkXCIgKG5zIC8gbnNfb2ZfMTBfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAzZFwiIChucyAvIG5zX29mXzFfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDRkXCIgKG5zIC8gbnNfb2ZfMTAwX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDVkXCIgKG5zIC8gbnNfb2ZfMTBfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA2ZFwiIChucyAvIG5zX29mXzFfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfbnMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDdkXCIgKG5zIC8gbnNfb2ZfMTAwX25zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfbnMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDhkXCIgKG5zIC8gbnNfb2ZfMTBfbnMpXG4gICAgICAgIGVsc2Ugc3ByaW50ZiBcIi4lMDlkXCIgbnNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWJfc2Vjb25kX29mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgICAgIHRoZW4gU3Bhbi56ZXJvXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBkaWdpdHMgPSBTdHJpbmcuY2hvcF9wcmVmaXhfZXhuIHN0cmluZyB+cHJlZml4OlwiLlwiIGluXG4gICAgICAgICAgYXNzZXJ0IChTdHJpbmcuZm9yX2FsbCBkaWdpdHMgfmY6Q2hhci5pc19kaWdpdCk7XG4gICAgICAgICAgbGV0IG11bHRpcGxpZXIgPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBkaWdpdHMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IG5zX29mXzEwMF9tc1xuICAgICAgICAgICAgfCAyIC0+IG5zX29mXzEwX21zXG4gICAgICAgICAgICB8IDMgLT4gbnNfb2ZfMV9tc1xuICAgICAgICAgICAgfCA0IC0+IG5zX29mXzEwMF91c1xuICAgICAgICAgICAgfCA1IC0+IG5zX29mXzEwX3VzXG4gICAgICAgICAgICB8IDYgLT4gbnNfb2ZfMV91c1xuICAgICAgICAgICAgfCA3IC0+IG5zX29mXzEwMF9uc1xuICAgICAgICAgICAgfCA4IC0+IG5zX29mXzEwX25zXG4gICAgICAgICAgICB8IDkgLT4gbnNfb2ZfMV9uc1xuICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgU3Bhbi5vZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IChJbnQub2Zfc3RyaW5nIGRpZ2l0cyAqIG11bHRpcGxpZXIpKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgc3BhbiA9XG4gICAgICAgIGFzc2VydCAoU3Bhbi4oID49ICkgc3BhbiBTcGFuLnplcm8gJiYgU3Bhbi4oIDwgKSBzcGFuIFNwYW4uZGF5KTtcbiAgICAgICAgbGV0IHNlY29uZHNfc3BhbiA9IHNwYW4gfD4gU3Bhbi50b19pbnRfc2VjIHw+IFNwYW4ub2ZfaW50X3NlYyBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zcGFuID0gU3Bhbi4oIC0gKSBzcGFuIHNlY29uZHNfc3BhbiBpblxuICAgICAgICBzZWNvbmRzX3RvX3N0cmluZyBzZWNvbmRzX3NwYW4gXiBzdWJfc2Vjb25kX3RvX3N0cmluZyBzdWJfc2Vjb25kX3NwYW5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgIGxldCBwcmVmaXhfbGVuID0gOCBpblxuICAgICAgICAoKiBcIkhIOk1NOkREXCIgKilcbiAgICAgICAgbGV0IHN1ZmZpeF9sZW4gPSBsZW4gLSBwcmVmaXhfbGVuIGluXG4gICAgICAgIGxldCBzZWNvbmRzX3N0cmluZyA9IFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6MCB+bGVuOnByZWZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3RyaW5nID0gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczpwcmVmaXhfbGVuIH5sZW46c3VmZml4X2xlbiBpblxuICAgICAgICBsZXQgc2Vjb25kc19zcGFuID0gc2Vjb25kc19vZl9zdHJpbmcgc2Vjb25kc19zdHJpbmcgaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3BhbiA9IHN1Yl9zZWNvbmRfb2Zfc3RyaW5nIHN1Yl9zZWNvbmRfc3RyaW5nIGluXG4gICAgICAgIFNwYW4uKCArICkgc2Vjb25kc19zcGFuIHN1Yl9zZWNvbmRfc3BhblxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICBsZXQgZGF0ZSwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBVdGMudG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCBpblxuICAgICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5X2FzX3NwYW4udG9fc3RyaW5nIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IF4gXCJaXCJcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgbGV0IGRhdGVfc3RyaW5nLCBvZmRheV9zdHJpbmdfd2l0aF96b25lID0gU3RyaW5nLmxzcGxpdDJfZXhuIHN0cmluZyB+b246JyAnIGluXG4gICAgICBsZXQgb2ZkYXlfc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBvZmRheV9zdHJpbmdfd2l0aF96b25lIH5zdWZmaXg6XCJaXCIgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGVfc3RyaW5nIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheV9hc19zcGFuLm9mX3N0cmluZyBvZmRheV9zdHJpbmcgaW5cbiAgICAgIFV0Yy5vZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBkYXRlIG9mZGF5XG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgKCogc2VlIHRlc3RzIGluIGxpYi9jb3JlL3Rlc3Qvc3JjL3Rlc3RfdGltZV9ucyB0aGF0IGVuc3VyZSBzdGFiaWxpdHkgb2YgdGhpc1xuICAgICAgICAgICByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBBbHRlcm5hdGVfc2V4cC5TdGFibGVcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuXG4oKiB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWUubWwgZnVuY3RvciwgY29udmVydGVkIGVub3VnaCB0byBnZXQgVGltZV9uc1xuICAgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbm1vZHVsZSBUb19hbmRfb2Zfc3RyaW5nIDogc2lnXG4gIHZhbCBvZl9kYXRlX29mZGF5IDogem9uZTpab25lLnQgLT4gRGF0ZS50IC0+IE9mZGF5LnQgLT4gdFxuXG4gIHZhbCBvZl9kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICBEYXRlLnRcbiAgICAtPiBPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBbIGBPbmNlIG9mIHQgfCBgVHdpY2Ugb2YgdCAqIHQgfCBgTmV2ZXIgb2YgdCBdXG5cbiAgdmFsIHRvX2RhdGVfb2ZkYXkgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IERhdGUudCAqIE9mZGF5LnRcblxuICB2YWwgdG9fZGF0ZV9vZmRheV9wcmVjaXNlXG4gICAgOiAgdFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gRGF0ZS50ICogT2ZkYXkudCAqIFsgYE9ubHkgfCBgQWxzb19hdCBvZiB0IHwgYEFsc29fc2tpcHBlZCBvZiBEYXRlLnQgKiBPZmRheS50IF1cblxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50XG4gIHZhbCB0b19vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gT2ZkYXkudFxuICB2YWwgY29udmVydCA6IGZyb21fdHo6Wm9uZS50IC0+IHRvX3R6OlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiBEYXRlLnQgKiBPZmRheS50XG4gIHZhbCByZXNldF9kYXRlX2NhY2hlIDogdW5pdCAtPiB1bml0XG4gIHZhbCB1dGNfb2Zmc2V0IDogdCAtPiB6b25lOlpvbmUudCAtPiBTcGFuLnRcblxuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW29mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRdXCJdXG5cbiAgdmFsIG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgOiBzdHJpbmcgLT4gdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW3RvX3N0cmluZ191dGNdXCJdXG4gIHZhbCB0b19zdHJpbmdfdXRjIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX2ZpbGVuYW1lX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9maWxlbmFtZV9zdHJpbmcgOiBzdHJpbmcgLT4gem9uZTpab25lLnQgLT4gdFxuICB2YWwgdG9fc3RyaW5nX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc2VjX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9sb2NhbGl6ZWRfc3RyaW5nIDogem9uZTpab25lLnQgLT4gc3RyaW5nIC0+IHRcblxuICB2YWwgb2Zfc3RyaW5nX2dlblxuICAgIDogIGRlZmF1bHRfem9uZToodW5pdCAtPiBab25lLnQpXG4gICAgLT4gZmluZF96b25lOihzdHJpbmcgLT4gWm9uZS50KVxuICAgIC0+IHN0cmluZ1xuICAgIC0+IHRcblxuICB2YWwgdG9fc3RyaW5nX2FicyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2Fic19wYXJ0cyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcblxuICB2YWwgb2NjdXJyZW5jZVxuICAgIDogIFsgYEZpcnN0X2FmdGVyX29yX2F0IHwgYExhc3RfYmVmb3JlX29yX2F0IF1cbiAgICAtPiB0XG4gICAgLT4gb2ZkYXk6T2ZkYXkudFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9mbG9hdDAubWwsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgIFRpbWVfbnMgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHQgPSBTcGFuLm9mX2ludDYzX25zIHRcblxuICAgIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgICAgbGV0IGRheXMgPVxuICAgICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2ggfD4gSW50NjMub2ZfaW50XG4gICAgICBpblxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgKGRheXMgKiBTcGFuLnRvX2ludDYzX25zIFNwYW4uZGF5KVxuICAgICAgKyBTcGFuLnRvX2ludDYzX25zIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgc3ViX2V4biAoU3Bhbi5vZl9pbnQ2M19ucyByZWxhdGl2ZSkgb2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID1cbiAgICAgIFNwYW4udG9faW50NjNfbnMgKGFkZF9leG4gYWJzb2x1dGUgb2Zmc2V0X2Zyb21fdXRjKVxuICAgIDs7XG5cbiAgICBsZXQgbnNfcGVyX2RheSA9IFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXlcblxuICAgIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgICAoKiBub3RlIFRpbWVfbnMgcmVwcmVzZW50cyBhYm91dCAxNDYgeWVhcnMsIG5vdCBlbm91Z2ggZm9yIFtEYXRlLmNyZWF0ZV9leG5dIHRvIGV2ZXJcbiAgICAgICAgIHJhaXNlICopXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCA9IHQgLyBuc19wZXJfZGF5IGluXG4gICAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgICAgd2lsbCBsZWF2ZSB1cyBvbmUgZGF5IHNob3J0IGJlY2F1c2UgaXQgdHJ1bmNhdGVzIChlLmcuIC0xMDAgLyA4Nl80MDAgPSAwIGFuZCB3ZVxuICAgICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgICBpZiB0IDwgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIG5zX3Blcl9kYXlcbiAgICAgIHRoZW4gSW50NjMucHJlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICA7O1xuXG4gICAgbGV0IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9ucyA9IGRheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgaW5cbiAgICAgIGxldCByZW1haW5kZXIgPSB0IC0gZGF5c19mcm9tX2Vwb2NoX2luX25zIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGUgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX29mZGF5IHQgPVxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgICBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICAoKiBUaGlzIGludGVyZmFjZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9pbnRmLlpvbmUsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgICAgdGhpcyB0byB3b3JrLlxuXG4gICAgICAgVGhlIHByb2JsZW0gaXMgaGFzIHJlZmVyZW5jZXMgdG8gVGltZTBfaW50Zi5TLCB3aGljaCBpcyB0aGUgZnVuY3RvciBpbnB1dCBpbnRlcmZhY2VcbiAgICAgICB0aGF0IFRpbWVfbnMgY3VycmVudGx5IGRvZXMgbm90IHNhdGlzZnkuICopXG5cbiAgICB0eXBlIHRpbWUgPSB0XG4gICAgdHlwZSB0ID0gWm9uZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBtb2R1bGUgSW5kZXggPSBab25lLkluZGV4XG5cbiAgICAoKiBjb3BpZWQgZnVuY3Rpb25zIHJlZXhwb3J0ZWQgZnJvbSBab25lICopXG5cbiAgICB2YWwgdXRjIDogdFxuICAgIHZhbCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gSW5kZXgudCAtPiBib29sXG4gICAgdmFsIGluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcblxuICAgICgqIG5ldyBmdW5jdGlvbnMgZGVmaW5lZCBiZWxvdyAqKVxuXG4gICAgdmFsIGluZGV4IDogdCAtPiB0aW1lIC0+IEluZGV4LnRcbiAgICB2YWwgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSA6IHQgLT4gRGF0ZV9hbmRfb2ZkYXkudCAtPiB0aW1lXG4gICAgdmFsIGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgOiB0IC0+IHRpbWUgLT4gRGF0ZV9hbmRfb2ZkYXkudFxuICAgIHZhbCBuZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBzdHJpY3RseV9hZnRlcjp0aW1lIC0+ICh0aW1lICogU3Bhbi50KSBvcHRpb25cbiAgICB2YWwgcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gYXRfb3JfYmVmb3JlOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRpbWUgPSB0XG5cbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICB0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID1cbiAgICAgIG1hdGNoIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggd2l0aFxuICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgICggaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4XG4gICAgICAgICAgLCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCApXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKEluZGV4Lm5leHQgaW5kZXgpXG4gICAgbGV0IHByZXZfY2xvY2tfc2hpZnQgdCB+YXRfb3JfYmVmb3JlOnRpbWUgPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcbiAgICBsZXQgbmV4dF9jbG9ja19zaGlmdCB0IH5zdHJpY3RseV9hZnRlcjp0aW1lID0gaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG5cbiAgICBsZXQgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB0IHRpbWUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggdCB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF9vZl9kYXRlX2FuZF9vZmRheV0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXkgPVxuICAgIGxldCByZWxhdGl2ZSA9IERhdGVfYW5kX29mZGF5Lm9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSBpblxuICAgIFpvbmUuYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB6b25lIHJlbGF0aXZlXG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXlfcHJlY2lzZSBkYXRlIG9mZGF5IH56b25lID1cbiAgICAoKiBXZSBhc3N1bWUgdGhhdCB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIHpvbmUgc2hpZnQgd2l0aGluIGEgZ2l2ZW4gbG9jYWwgZGF5LiAgKilcbiAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIE9mZGF5LnN0YXJ0X29mX2RheSBpblxuICAgIGxldCBwcm9wb3NlZF90aW1lID0gYWRkIHN0YXJ0X29mX2RheSAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpIGluXG4gICAgbWF0Y2ggWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnN0YXJ0X29mX2RheSB3aXRoXG4gICAgfCBOb25lIC0+IGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICB8IFNvbWUgKHNoaWZ0X3N0YXJ0LCBzaGlmdF9hbW91bnQpIC0+XG4gICAgICBsZXQgc2hpZnRfYmFja3dhcmRzID0gU3Bhbi4oc2hpZnRfYW1vdW50IDwgemVybykgaW5cbiAgICAgICgqIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIFwicHJvYmxlbWF0aWMgcmVnaW9uXCIgKilcbiAgICAgIGxldCBzLCBlID1cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudCwgc2hpZnRfc3RhcnRcbiAgICAgICAgZWxzZSBzaGlmdF9zdGFydCwgYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudFxuICAgICAgaW5cbiAgICAgIGlmIHByb3Bvc2VkX3RpbWUgPCBzXG4gICAgICB0aGVuIGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICAgIGVsc2UgaWYgcyA8PSBwcm9wb3NlZF90aW1lICYmIHByb3Bvc2VkX3RpbWUgPCBlXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGBUd2ljZSAocHJvcG9zZWRfdGltZSwgc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICAgICAgICBlbHNlIGBOZXZlciBzaGlmdF9zdGFydFxuICAgICAgZWxzZSBgT25jZSAoc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICA7O1xuXG4gIG1vZHVsZSBEYXRlX2NhY2hlID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiB0XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogdFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgdGltZSA+PSBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2xcbiAgICAmJiB0aW1lIDwgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBzdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBhZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydCB8PiBtYXggKFpvbmUuaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBjYWNoZV91bnRpbF9leGNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfdW50aWwgfD4gbWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgPSB0b19kYXRlIHRpbWUgfnpvbmUsIHRvX29mZGF5IHRpbWUgfnpvbmVcblxuICAoKiBUaGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBhbGdvcml0aG0gKGludGVyZmFjZSwgZXZlbikgZGVwZW5kcyBvbiB0aGUgZmFjdCB0aGF0XG4gICAgIHRpbWV6b25lIHNoaWZ0cyBhcmVuJ3QgdG9vIGNsb3NlIHRvZ2V0aGVyIChhcyBpbiwgaXQgY2FuJ3Qgc2ltdWx0YW5lb3VzbHkgYmUgdGhlXG4gICAgIGNhc2UgdGhhdCBhIHRpbWV6b25lIHNoaWZ0IG9mIFggaG91cnMgb2NjdXJyZWQgbGVzcyB0aGFuIFggaG91cnMgYWdvLCAqYW5kKlxuICAgICBhIHRpbWV6b25lIHNoaWZ0IG9mIFkgaG91cnMgd2lsbCBvY2N1ciBpbiBsZXNzIHRoYW4gWSBob3VycycgdGltZSkgKilcbiAgbGV0IHRvX2RhdGVfb2ZkYXlfcHJlY2lzZSB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYWZ0ZXIgPSBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6dGltZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQgPSBab25lLnByZXZfY2xvY2tfc2hpZnQgem9uZSB+YXRfb3JfYmVmb3JlOnRpbWUgaW5cbiAgICBsZXQgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50ID1cbiAgICAgICgqIFVzaW5nIFtkYXRlXSBhbmQgcmFpc2luZyBvbiBbTm9uZV0gaGVyZSBpcyBPSyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGNsb2NrXG4gICAgICAgICBzaGlmdHMgY2FuJ3QgY3Jvc3MgZGF0ZSBib3VuZGFyaWVzLiBUaGlzIGlzIHRydWUgaW4gYWxsIGNhc2VzIEkndmUgZXZlciBoZWFyZFxuICAgICAgICAgb2YgKGFuZCBbb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXSB3b3VsZCBuZWVkIHJldmlzaXRpbmcgaWYgaXQgdHVybmVkIG91dCB0byBiZVxuICAgICAgICAgZmFsc2UpICopXG4gICAgICBtYXRjaCBPZmRheS5zdWIgb2ZkYXkgYW1vdW50IHdpdGhcbiAgICAgIHwgU29tZSBvZmRheSAtPiBgQWxzb19za2lwcGVkIChkYXRlLCBvZmRheSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlRpbWUudG9fZGF0ZV9vZmRheV9wcmVjaXNlXCJcbiAgICAgICAgICAgICAgfnNwYW5fc2luY2VfZXBvY2g6KHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSA6IFNwYW4udClcbiAgICAgICAgICAgICAgKHpvbmUgOiBab25lLnQpXVxuICAgIGluXG4gICAgbGV0IGFtYmlndWl0eSA9XG4gICAgICAoKiBFZGdlIGNhc2VzOiB0aGUgaW5zdGFudCBvZiB0cmFuc2l0aW9uIGJlbG9uZ3MgdG8gdGhlIG5ldyB6b25lIHJlZ2ltZS4gU28gaWYgdGhlXG4gICAgICAgICBjbG9jayBtb3ZlZCBieSBhbiBob3VyIGV4YWN0bHkgb25lIGhvdXIgYWdvLCB0aGVyZSdzIG5vIGFtYmlndWl0eSwgYmVjYXVzZSB0aGVcbiAgICAgICAgIGhvdXItYWdvIHRpbWUgYmVsb25ncyB0byB0aGUgc2FtZSByZWdpbWUgYXMgeW91LCBhbmQgY29udmVyc2VseSwgaWYgdGhlIGNsb2NrXG4gICAgICAgICB3aWxsIG1vdmUgYnkgYW4gaG91ciBpbiBhbiBob3VycycgdGltZSwgdGhlcmUgKmlzKiBhbWJpZ3VpdHkuIEhlbmNlIFs+Ll0gZm9yXG4gICAgICAgICB0aGUgZmlyc3QgY2FzZSBhbmQgWzw9Ll0gZm9yIHRoZSBzZWNvbmQuICopXG4gICAgICBtYXRjaCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQsIGNsb2NrX3NoaWZ0X2FmdGVyIHdpdGhcbiAgICAgIHwgU29tZSAoc3RhcnQsIGFtb3VudCksIF8gd2hlbiBhZGQgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzID1cbiAgICBsZXQgYXR0ZW1wdCB0aW1lIH56b25lID1cbiAgICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgICAgXVxuICAgIGluXG4gICAgZnVuIHRpbWUgfnpvbmUgLT5cbiAgICAgIHRyeSBhdHRlbXB0IHRpbWUgfnpvbmUgd2l0aFxuICAgICAgfCAoXyA6IGV4bikgLT5cbiAgICAgICAgKCogSWYgd2Ugb3ZlcmZsb3cgYXBwbHlpbmcgdGhlIFVUQyBvZmZzZXQsIHRyeSBhZ2FpbiB3aXRoIFVUQyB0aW1lLiAqKVxuICAgICAgICBhdHRlbXB0IHRpbWUgfnpvbmU6Wm9uZS51dGNcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50clxuICAgICAgICB+dGFyZ2V0Oic6J1xuICAgICAgICB+cmVwbGFjZW1lbnQ6Jy0nXG4gICAgICAgIChTdHJpbmcuZHJvcF9zdWZmaXggKE9mZGF5LnRvX3N0cmluZyBvZmRheSkgMylcbiAgOztcblxuICBsZXQgb2ZfZmlsZW5hbWVfc3RyaW5nIHMgfnpvbmUgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246J18nIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlIGluIGZpbGVuYW1lIHN0cmluZ1wiXG4gICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IFN0cmluZy50ciB+dGFyZ2V0OictJyB+cmVwbGFjZW1lbnQ6JzonIG9mZGF5IGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgfnpvbmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiVGltZS5vZl9maWxlbmFtZV9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgOztcblxuICBsZXQgb2ZfbG9jYWxpemVkX3N0cmluZyB+em9uZSBzdHIgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyIH5vbjonICcgd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIChzcHJpbnRmIFwibm8gc3BhY2UgaW4gZGF0ZV9vZmRheSBzdHJpbmc6ICVzXCIgc3RyKVxuICAgICAgfCBTb21lIChkYXRlLCB0aW1lKSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyB0aW1lIGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgIHdpdGhcbiAgICB8IGUgLT4gRXhuLnJlcmFpc2UgZSBcIlRpbWUub2ZfbG9jYWxpemVkX3N0cmluZ1wiXG4gIDs7XG5cbiAgbGV0IG9jY3VycmVuY2UgYmVmb3JlX29yX2FmdGVyIHQgfm9mZGF5IH56b25lID1cbiAgICBsZXQgZmlyc3RfZ3Vlc3NfZGF0ZSA9IHRvX2RhdGUgdCB+em9uZSBpblxuICAgIGxldCBmaXJzdF9ndWVzcyA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZmlyc3RfZ3Vlc3NfZGF0ZSBvZmRheSBpblxuICAgIGxldCBjbXAsIGluY3JlbWVudCA9XG4gICAgICBtYXRjaCBiZWZvcmVfb3JfYWZ0ZXIgd2l0aFxuICAgICAgfCBgTGFzdF9iZWZvcmVfb3JfYXQgLT4gKCA8PSApLCAtMVxuICAgICAgfCBgRmlyc3RfYWZ0ZXJfb3JfYXQgLT4gKCA+PSApLCAxXG4gICAgaW5cbiAgICBpZiBjbXAgZmlyc3RfZ3Vlc3MgdFxuICAgIHRoZW4gZmlyc3RfZ3Vlc3NcbiAgICBlbHNlIG9mX2RhdGVfb2ZkYXkgfnpvbmUgKERhdGUwLmFkZF9kYXlzIGZpcnN0X2d1ZXNzX2RhdGUgaW5jcmVtZW50KSBvZmRheVxuICA7O1xuXG4gIGxldCBlbnN1cmVfY29sb25faW5fb2Zmc2V0IG9mZnNldCA9XG4gICAgbGV0IG9mZnNldF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIG9mZnNldCBpblxuICAgIGlmIEludC4oIDw9ICkgb2Zmc2V0X2xlbmd0aCAyXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuWzBdXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuW29mZnNldF9sZW5ndGggLSAxXVxuICAgIHRoZW4gb2Zmc2V0IF4gXCI6MDBcIlxuICAgIGVsc2UgaWYgQ2hhci4oID0gKSBvZmZzZXQuWzFdICc6JyB8fCBDaGFyLiggPSApIG9mZnNldC5bMl0gJzonXG4gICAgdGhlbiBvZmZzZXRcbiAgICBlbHNlIGlmIEludC4oIDwgKSBvZmZzZXRfbGVuZ3RoIDMgfHwgSW50LiggPiApIG9mZnNldF9sZW5ndGggNFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBvZmZzZXQgJXNcIiBvZmZzZXQgKClcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgU3RyaW5nLnNsaWNlIG9mZnNldCAwIChvZmZzZXRfbGVuZ3RoIC0gMilcbiAgICAgICAgOyBcIjpcIlxuICAgICAgICA7IFN0cmluZy5zbGljZSBvZmZzZXQgKG9mZnNldF9sZW5ndGggLSAyKSBvZmZzZXRfbGVuZ3RoXG4gICAgICAgIF1cbiAgOztcblxuICBleGNlcHRpb24gVGltZV9uc19vZl9zdHJpbmcgb2Ygc3RyaW5nICogRXhuLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXksIHR6ID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicgJyB3aXRoXG4gICAgICAgIHwgWyBkYXk7IG1vbnRoOyB5ZWFyOyBvZmRheSBdIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIGRheTsgXCIgXCI7IG1vbnRoOyBcIiBcIjsgeWVhciBdLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXk7IHR6IF0gLT4gZGF0ZSwgb2ZkYXksIFNvbWUgdHpcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5IF0gLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIHMgXSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246J1QnIHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZXMgb3IgVCBmb3VuZFwiKVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJ0b28gbWFueSBzcGFjZXNcIlxuICAgICAgaW5cbiAgICAgIGxldCBvZmRheV90b19zZWMgb2QgPSBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2QpIGluXG4gICAgICBsZXQgb2ZkYXksIHV0Y19vZmZzZXQgPVxuICAgICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICAgIHwgU29tZSBfIC0+IG9mZGF5LCBOb25lXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIENoYXIuKCA9ICkgb2ZkYXkuW1N0cmluZy5sZW5ndGggb2ZkYXkgLSAxXSAnWidcbiAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgb2ZkYXkgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggb2ZkYXkgLSAxKSwgU29tZSAwLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOicrJyBvZmRheSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgIGwsIFNvbWUgKG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOictJyBvZmRheSB3aXRoXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgICAgIGwsIFNvbWUgKC0xLiAqLiBvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gb2ZkYXksIE5vbmUpKVxuICAgICAgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgfCBTb21lIHR6IC0+IG9mX2RhdGVfb2ZkYXkgfnpvbmU6KGZpbmRfem9uZSB0eikgZGF0ZSBvZmRheVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCB1dGNfb2Zmc2V0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgem9uZSA9IGRlZmF1bHRfem9uZSAoKSBpblxuICAgICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgICAgIHwgU29tZSB1dGNfb2Zmc2V0IC0+XG4gICAgICAgICAgIGxldCB1dGNfdCA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6Wm9uZS51dGMgZGF0ZSBvZmRheSBpblxuICAgICAgICAgICBzdWIgdXRjX3QgKFNwYW4ub2Zfc2VjIHV0Y19vZmZzZXQpKVxuICAgIHdpdGhcbiAgICB8IGUgLT4gcmFpc2UgKFRpbWVfbnNfb2Zfc3RyaW5nIChzLCBlKSlcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCBzID1cbiAgICBsZXQgZGVmYXVsdF96b25lICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aW1lIGhhcyBubyB0aW1lIHpvbmUgb3IgVVRDIG9mZnNldFwiIHNdIGluXG4gICAgbGV0IGZpbmRfem9uZSB6b25lX25hbWUgPVxuICAgICAgZmFpbHdpdGhmIFwidW5hYmxlIHRvIGxvb2t1cCBab25lICVzLiAgVHJ5IHVzaW5nIENvcmUuVGltZS5vZl9zdHJpbmdcIiB6b25lX25hbWUgKClcbiAgICBpblxuICAgIG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHNcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldFxuZW5kXG5cbmluY2x1ZGUgVG9fYW5kX29mX3N0cmluZ1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuXG4oKiBMZWdhY3kgZGVmaW5pdGlvbnMgYmFzZWQgb24gcm91bmRpbmcgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICopXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IHRvX3RpbWUgPSB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCBvZl90aW1lID0gb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5cbm1vZHVsZSBfID0gc3RydWN0XG4gIG9wZW4gUHB4X21vZHVsZV90aW1lcl9ydW50aW1lXG5cbiAgbGV0ICgpID1cbiAgICBEdXJhdGlvbi5mb3JtYXRcbiAgICA6PSAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGR1cmF0aW9uX29mX3NwYW4gcyA9IHMgfD4gU3Bhbi50b19pbnQ2M19ucyB8PiBEdXJhdGlvbi5vZl9uYW5vc2Vjb25kc1xuICAgICAgbGV0IHNwYW5fb2ZfZHVyYXRpb24gZCA9IGQgfD4gRHVyYXRpb24udG9fbmFub3NlY29uZHMgfD4gU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBzdHJpbmcgfD4gU3Bhbi5vZl9zdHJpbmcgfD4gZHVyYXRpb25fb2Zfc3BhblxuXG4gICAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGR1cmF0aW9ucyA9XG4gICAgICAgIGxldCBzcGFucyA9IGR1cmF0aW9ucyB8PiBMaXN0Lm1hcCB+ZjpzcGFuX29mX2R1cmF0aW9uIGluXG4gICAgICAgIGxldCB1bml0X29mX3RpbWUgPVxuICAgICAgICAgIHNwYW5zXG4gICAgICAgICAgfD4gTGlzdC5tYXhfZWx0IH5jb21wYXJlOlNwYW4uY29tcGFyZVxuICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgICAgICAgIH5mOlNwYW4udG9fdW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICB+ZGVmYXVsdDpVbml0X29mX3RpbWUuTmFub3NlY29uZFxuICAgICAgICBpblxuICAgICAgICBzcGFucyB8PiBMaXN0Lm1hcCB+ZjooU3Bhbi50b19zdHJpbmdfaHVtIH51bml0X29mX3RpbWUgfmFsaWduX2RlY2ltYWw6dHJ1ZSlcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxubW9kdWxlIFpvbmUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNleHBfb2ZfdF9hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX3Vib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG4iLCIoKiBBIHN1YnN0cmluZyBpcyBhIGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4gIFdlIHVzZSBhXG4gICBmdW5jdG9yIGJlY2F1c2Ugd2Ugd2FudCBzdWJzdHJpbmdzIG9mIFtzdHJpbmddIGFuZCBbYmlnc3RyaW5nXS5cbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmdfaW50ZlxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZy50XG5cbm1vZHVsZSBCbGl0ID0gc3RydWN0XG4gIHR5cGUgKCdzcmMsICdkc3QpIHQgPSAoJ3NyYywgJ2RzdCkgQmxpdC5ibGl0b1xuXG4gIGxldCBzdHJpbmdfYnl0ZXMgfnNyYyA/c3JjX3BvcyA/c3JjX2xlbiB+ZHN0ID8oZHN0X3BvcyA9IDApICgpID1cbiAgICBsZXQgc3JjX3BvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuXG4gICAgICAgICgpXG4gICAgICAgID9wb3M6c3JjX3Bvc1xuICAgICAgICA/bGVuOnNyY19sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooU3RyaW5nLmxlbmd0aCBzcmMpXG4gICAgaW5cbiAgICBCeXRlcy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgbGV0IHN0cmluZ19zdHJpbmcgPSBzdHJpbmdfYnl0ZXNcbiAgbGV0IGJ5dGVzX2J5dGVzID0gQnl0ZXMuYmxpdG9cbiAgbGV0IHN0cmluZ19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdG9cbiAgbGV0IGJ5dGVzX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfc3RyaW5nID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYnl0ZXMgPSBCaWdzdHJpbmcuVG9fYnl0ZXMuYmxpdG9cbmVuZFxuXG4oKiBXZSBjYW4ndCBjYWxsIHRoZSBiYXNlIG1vZHVsZSBbQmFzZV0gYmVjYXVzZSBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSB3YW50cyB0byBhY2Nlc3NcbiAgIHRoZSBbQmFzZV0gbGlicmFyeSBkaXJlY3RseSwgYW5kIHdlJ2QgYmUgc2hhZG93aW5nIGl0LiAqKVxubW9kdWxlIEYgKFVuZGVybHlpbmcgOiBCYXNlKSA6IFMgd2l0aCB0eXBlIGJhc2UgPSBVbmRlcmx5aW5nLnQgPSBzdHJ1Y3RcbiAgdHlwZSBiYXNlID0gVW5kZXJseWluZy50XG5cbiAgdHlwZSB0ID1cbiAgICB7IGJhc2UgOiBVbmRlcmx5aW5nLnRcbiAgICA7IHBvcyA6IGludFxuICAgIDsgbGVuIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICgqIG5vdGUgd2Ugb3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCBbcXVpY2tjaGVja19nZW5lcmF0b3JdIGJlbG93LCBvbmNlIHdlJ3ZlIGRlZmluZWRcbiAgICAgW2NyZWF0ZV0gKilcblxuICAoKiB7W1xuICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICBhc3NlcnQgKDAgPD0gdC5wb3MpO1xuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQubGVuKTtcbiAgICAgICAgIGFzc2VydCAodC5wb3MgKyB0LmxlbiA8PSBCYXNlLmxlbmd0aCB0LmJhc2UpO1xuICAgICAgIDs7IF19ICopXG5cbiAgbGV0IGJhc2UgdCA9IHQuYmFzZVxuICBsZXQgcG9zIHQgPSB0LnBvc1xuICBsZXQgbGVuZ3RoIHQgPSB0LmxlblxuICBsZXQgaXNfZW1wdHkgdCA9IEludC5lcXVhbCB0LmxlbiAwXG5cbiAgbGV0IGJhc2Vfb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgYmFzZV9vZl9iaWdzdHJpbmcgcyA9XG4gICAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBidWYgPSBVbmRlcmx5aW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmcgfnNyYzpzIH5kc3Q6YnVmICgpO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGUgP3BvcyA/bGVuIGJhc2UgPVxuICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zXG4gICAgICAgID9sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooVW5kZXJseWluZy5sZW5ndGggYmFzZSlcbiAgICBpblxuICAgIHsgYmFzZTsgcG9zOyBsZW4gfVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgbGV0IG9wZW4gUXVpY2tjaGVjay5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgYmFzZSA9IFVuZGVybHlpbmcucXVpY2tjaGVja19nZW5lcmF0b3IgaW5cbiAgICBsZXQgYmFzZV9sZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIGluXG4gICAgbGV0JWJpbmQgbGVuID0gSW50Lmdlbl91bmlmb3JtX2luY2wgMCBiYXNlX2xlbiBpblxuICAgIGxldCViaW5kIHBvcyA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGJhc2VfbGVuIC0gbGVuKSBpblxuICAgIHJldHVybiAoY3JlYXRlIH5wb3MgfmxlbiBiYXNlKVxuICA7O1xuXG4gIGxldCBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSA9IFVuZGVybHlpbmcuZ2V0IChiYXNlIHQpIChwb3MgdCArIGkpXG5cbiAgbGV0IGdldCB0IGkgPVxuICAgIGlmIGkgPj0gMCAmJiBpIDwgbGVuZ3RoIHRcbiAgICB0aGVuIGdldF9ub19ib3VuZHNfY2hlY2sgdCBpXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgOztcblxuICBsZXQgc3ViID9wb3MgP2xlbiB0ID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgIGluXG4gICAgeyBiYXNlID0gdC5iYXNlOyBwb3MgPSB0LnBvcyArIHBvczsgbGVuIH1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcmcgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbW9kdWxlIEVsdCA9IENoYXJcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBnbyBhY2MgaSA9IGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBhY2MgKGdldCB0IGkpKSAoaSArIDEpIGluXG4gICAgICBnbyBpbml0IDBcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgKGdldCB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBmb2xkaSA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+aW5pdCB+ZiAtPlxuICAgICAgICAgICBsZXQgcmVjIGdvIGFjYyBpID1cbiAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgaSBhY2MgKGdldF9ub19ib3VuZHNfY2hlY2sgdCBpKSkgKGkgKyAxKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBnbyBpbml0IDApXG4gICAgOztcblxuICAgIGxldCBpdGVyaSA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICAgICAgZiBpIChnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSlcbiAgICAgICAgICAgZG9uZSlcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZFxuXG4gIG1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZTAgKE1ha2VfYXJnKVxuXG4gIGxldCBmb2xkID0gQy5mb2xkXG4gIGxldCBpdGVyID0gQy5pdGVyXG4gIGxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbiAgbGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxuICAoKiBbQy50b19saXN0XSBoYXMgdG8gY29uc3RydWN0IHRoZW4gcmV2ZXJzZSB0aGUgbGlzdCAqKVxuICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IChsZW5ndGggdCkgfmY6KGdldCB0KVxuICBsZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG4gIGxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbiAgbGV0IGZpbmQgPSBDLmZpbmRcbiAgbGV0IGV4aXN0cyA9IEMuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG4gIGxldCBtZW0gPSBDLm1lbVxuICBsZXQgY291bnQgPSBDLmNvdW50XG4gIGxldCBzdW0gPSBDLnN1bVxuICBsZXQgbWluX2VsdCA9IEMubWluX2VsdFxuICBsZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxuICBsZXQgZm9sZGkgPSBDLmZvbGRpXG4gIGxldCBpdGVyaSA9IEMuaXRlcmlcbiAgbGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbiAgbGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuICBsZXQgY291bnRpID0gQy5jb3VudGlcbiAgbGV0IGZpbmRpID0gQy5maW5kaVxuICBsZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcblxuICBsZXQgd3JhcF9zdWJfbiB0IG4gfm5hbWUgfnBvcyB+bGVuIH5vbl9lcnJvciA9XG4gICAgaWYgbiA8IDBcbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyAobmFtZSBeIFwiIGV4cGVjdGluZyBub25uZWdhdGl2ZSBhcmd1bWVudFwiKVxuICAgIGVsc2UgKFxuICAgICAgdHJ5IHN1YiB0IH5wb3MgfmxlbiB3aXRoXG4gICAgICB8IF8gLT4gb25fZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGRyb3BfcHJlZml4IHQgbiA9XG4gICAgd3JhcF9zdWJfblxuICAgICAgfm5hbWU6XCJkcm9wX3ByZWZpeFwiXG4gICAgICB0XG4gICAgICBuXG4gICAgICB+cG9zOm5cbiAgICAgIH5sZW46KGxlbmd0aCB0IC0gbilcbiAgICAgIH5vbl9lcnJvcjp7IHQgd2l0aCBsZW4gPSAwIH1cbiAgOztcblxuICBsZXQgZHJvcF9zdWZmaXggdCBuID1cbiAgICB3cmFwX3N1Yl9uXG4gICAgICB+bmFtZTpcImRyb3Bfc3VmZml4XCJcbiAgICAgIHRcbiAgICAgIG5cbiAgICAgIH5wb3M6MFxuICAgICAgfmxlbjoobGVuZ3RoIHQgLSBuKVxuICAgICAgfm9uX2Vycm9yOnsgdCB3aXRoIGxlbiA9IDAgfVxuICA7O1xuXG4gIGxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG4gIGxldCBzdWZmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInN1ZmZpeFwiIHQgbiB+cG9zOihsZW5ndGggdCAtIG4pIH5sZW46biB+b25fZXJyb3I6dFxuXG4gIGxldCBibGl0X3RvICh0eXBlIGEpIChibGl0IDogKFVuZGVybHlpbmcudCwgYSkgQmxpdC50KSB0IH5kc3QgfmRzdF9wb3MgPVxuICAgIGJsaXQgfnNyYzp0LmJhc2UgfnNyY19wb3M6dC5wb3MgfnNyY19sZW46dC5sZW4gfmRzdCB+ZHN0X3BvcyAoKVxuICA7O1xuXG4gIGxldCBibGl0X3RvX3N0cmluZyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzXG4gIGxldCBibGl0X3RvX2J5dGVzID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXNcbiAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYmlnc3RyaW5nXG4gIGxldCBibGl0X2Jhc2UgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdFxuXG4gIGxldCBibGl0X2Zyb20gfm5hbWUgKHR5cGUgYSkgKGJsaXQgOiAoYSwgYmFzZSkgQmxpdC50KSB0IH5zcmMgfnNyY19wb3MgfmxlbiA9XG4gICAgaWYgbGVuID4gdC5sZW5cbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aGZcbiAgICAgICAgXCJTdWJzdHJpbmcuYmxpdF9mcm9tXyVzIGxlbiA+IHN1YnN0cmluZyBsZW5ndGggOiAlZCA+ICVkXCJcbiAgICAgICAgbmFtZVxuICAgICAgICBsZW5cbiAgICAgICAgdC5sZW5cbiAgICAgICAgKCk7XG4gICAgYmxpdCB+c3JjIH5zcmNfcG9zIH5zcmNfbGVuOmxlbiB+ZHN0OnQuYmFzZSB+ZHN0X3Bvczp0LnBvcyAoKVxuICA7O1xuXG4gIGxldCBibGl0X2Zyb21fc3RyaW5nID0gYmxpdF9mcm9tIH5uYW1lOlwic3RyaW5nXCIgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nXG4gIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gYmxpdF9mcm9tIH5uYW1lOlwiYmlnc3RyaW5nXCIgVW5kZXJseWluZy5ibGl0X2Zyb21fYmlnc3RyaW5nXG4gIGxldCBvZl9iYXNlIGJhc2UgPSB7IGJhc2U7IHBvcyA9IDA7IGxlbiA9IFVuZGVybHlpbmcubGVuZ3RoIGJhc2UgfVxuICBsZXQgb2Zfc3RyaW5nIHggPSBvZl9iYXNlIChiYXNlX29mX3N0cmluZyB4KVxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSBvZl9iYXNlIChiYXNlX29mX2JpZ3N0cmluZyB4KVxuXG4gIGxldCBtYWtlICh0eXBlIGEpIGNyZWF0ZSAoYmxpdCA6IChiYXNlLCBhKSBCbGl0LnQpIHQgPVxuICAgIGxldCBkc3QgPSBjcmVhdGUgdC5sZW4gaW5cbiAgICBibGl0IH5zcmM6dC5iYXNlIH5zcmNfcG9zOnQucG9zIH5zcmNfbGVuOnQubGVuIH5kc3QgfmRzdF9wb3M6MCAoKTtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHggPVxuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICAgIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihtYWtlIEJ5dGVzLmNyZWF0ZSBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXMgeClcbiAgOztcblxuICBsZXQgdG9fYmlnc3RyaW5nID0gbWFrZSBCaWdzdHJpbmcuY3JlYXRlIFVuZGVybHlpbmcuYmxpdF90b19iaWdzdHJpbmdcblxuICBsZXQgY29uY2F0X2dlbiBjcmVhdGVfZHN0IGJsaXRfZHN0IHRzID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkIHRzIH5pbml0OjAgfmY6KGZ1biBsZW4gdCAtPiBsZW4gKyBsZW5ndGggdCkgaW5cbiAgICBsZXQgZHN0ID0gY3JlYXRlX2RzdCBsZW4gaW5cbiAgICBpZ25vcmVcbiAgICAgIChMaXN0LmZvbGQgdHMgfmluaXQ6MCB+ZjooZnVuIGRzdF9wb3MgdCAtPlxuICAgICAgICAgYmxpdF9kc3QgdCB+ZHN0IH5kc3RfcG9zO1xuICAgICAgICAgZHN0X3BvcyArIGxlbmd0aCB0KVxuICAgICAgIDogaW50KTtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgY29uY2F0IHRzID0gb2ZfYmFzZSAoY29uY2F0X2dlbiBVbmRlcmx5aW5nLmNyZWF0ZSBibGl0X2Jhc2UgdHMpXG5cbiAgbGV0IGNvbmNhdF9zdHJpbmcgdHMgPVxuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICAgIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihjb25jYXRfZ2VuIEJ5dGVzLmNyZWF0ZSBibGl0X3RvX3N0cmluZyB0cylcbiAgOztcblxuICBsZXQgY29uY2F0X2JpZ3N0cmluZyB0cyA9IGNvbmNhdF9nZW4gQmlnc3RyaW5nLmNyZWF0ZSBibGl0X3RvX2JpZ3N0cmluZyB0c1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUyA9IE1ha2Vfc3Vic3RyaW5nLlNcblxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZy5GIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCeXRlcy50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgICBsZXQgY3JlYXRlID0gQnl0ZXMuY3JlYXRlXG4gICAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuICAgIGxldCBnZXQgPSBCeXRlcy5nZXRcblxuICAgIG1vZHVsZSBCbGl0ID0gTWFrZV9zdWJzdHJpbmcuQmxpdFxuXG4gICAgbGV0IGJsaXQgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fc3RyaW5nID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX2J5dGVzID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IEJsaXQuYnl0ZXNfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBCbGl0LnN0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENhbWwuQXJnXG5cbnR5cGUgdCA9IGtleSAqIHNwZWMgKiBkb2NcblxubGV0IHNvcnRfYW5kX2FsaWduIGxzdCA9XG4gIGFsaWduIChCYXNlLkxpc3Quc29ydCBsc3QgfmNvbXBhcmU6KGZ1biAoYSwgXywgXykgKGIsIF8sIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikpXG47O1xuIiwidHlwZSB0ID1cbiAgfCBDT01NQU5EX09VVFBVVF9JTlNUQUxMQVRJT05fQkFTSFxuICB8IENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuICB8IENPTVBfQ1dPUkRcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF9vZl1cblxubGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCB0KVxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZyA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuU1xuICAgICAgICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLlN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuXG4gICAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbmluY2x1ZGUgKFxuICBTdHJpbmcgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5TXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBDYW1sLkZpbGVuYW1lXG5cbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IGNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9leHRlbnNpb24gPSBjaG9wX2V4dGVuc2lvblxuICBsZXQgY2hvcF9zdWZmaXggPSBjaG9wX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gY2hvcF9zdWZmaXhfb3B0XG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gY3VycmVudF9kaXJfbmFtZVxuICBsZXQgaXNfaW1wbGljaXQgPSBpc19pbXBsaWNpdFxuICBsZXQgaXNfcmVsYXRpdmUgPSBpc19yZWxhdGl2ZVxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gcGFyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJfc2VwID0gZGlyX3NlcFxuICBsZXQgcXVvdGUgPSBxdW90ZVxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IGdldF90ZW1wX2Rpcl9uYW1lICgpXG4gIGxldCBkaXJuYW1lID0gZGlybmFtZVxuICBsZXQgYmFzZW5hbWUgPSBiYXNlbmFtZVxuZW5kXG5cbmxldCBpc19hYnNvbHV0ZSBwID0gbm90IChpc19yZWxhdGl2ZSBwKVxuXG5sZXQgY29uY2F0IHAxIHAyID1cbiAgaWYgU3RyaW5nLmlzX2VtcHR5IHAxXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUuY29uY2F0IGNhbGxlZCB3aXRoIGFuIGVtcHR5IHN0cmluZyBhcyBpdHMgZmlyc3QgYXJndW1lbnQgKHNlY29uZCBcXFxuICAgICAgIGFyZ3VtZW50OiAlcylcIlxuICAgICAgcDJcbiAgICAgICgpO1xuICBsZXQgcmVjIGNvbGxhcHNlX3RyYWlsaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lIChcIlwiLCAoXCIuXCIgfCBcIlwiKSkgLT4gXCJcIlxuICAgIHwgU29tZSAocywgKFwiLlwiIHwgXCJcIikpIC0+IGNvbGxhcHNlX3RyYWlsaW5nIHNcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gc1xuICBpblxuICBsZXQgcmVjIGNvbGxhcHNlX2xlYWRpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jy8nIHdpdGhcbiAgICB8IFNvbWUgKChcIi5cIiB8IFwiXCIpLCBzKSAtPiBjb2xsYXBzZV9sZWFkaW5nIHNcbiAgICB8IFNvbWUgXyB8IE5vbmUgLT4gc1xuICBpblxuICBjb2xsYXBzZV90cmFpbGluZyBwMSBeIFwiL1wiIF4gY29sbGFwc2VfbGVhZGluZyBwMlxuOztcblxubGV0IHRvX2Fic29sdXRlX2V4biBwIH5yZWxhdGl2ZV90byA9XG4gIGlmIGlzX3JlbGF0aXZlIHJlbGF0aXZlX3RvXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUudG9fYWJzb2x1dGVfZXhuIGNhbGxlZCB3aXRoIGEgW3JlbGF0aXZlX3RvXSB0aGF0IGlzIGEgcmVsYXRpdmUgcGF0aDogJXNcIlxuICAgICAgcmVsYXRpdmVfdG9cbiAgICAgICgpXG4gIGVsc2UgaWYgaXNfYWJzb2x1dGUgcFxuICB0aGVuIHBcbiAgZWxzZSBjb25jYXQgcmVsYXRpdmVfdG8gcFxuOztcblxubGV0IHNwbGl0IHMgPSBkaXJuYW1lIHMsIGJhc2VuYW1lIHNcblxuKCogW21heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZV0gY29tZXMgZnJvbSBnZXRjb25mIF9QT1NJWF9OQU1FX01BWCAvICopXG5sZXQgbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplID0gMjU1XG5cbmxldCBpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQgcyA9XG4gIGxldCBtb2R1bGUgUyA9IFN0cmluZyBpblxuICBzIDw+IFwiLlwiXG4gICYmIHMgPD4gXCIuLlwiXG4gICYmIEludC4oMCA8IFMubGVuZ3RoIHMpXG4gICYmIEludC4oUy5sZW5ndGggcyA8PSBtYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemUpXG4gICYmIChub3QgKFMuY29udGFpbnMgcyAnLycpKVxuICAmJiBub3QgKFMuY29udGFpbnMgcyAnXFwwMDAnKVxuOztcblxubGV0IHJvb3QgPSBcIi9cIlxuXG5sZXQgc3BsaXRfZXh0ZW5zaW9uIGZuID1cbiAgbGV0IGRpciwgZm4gPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonLycgZm4gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lLCBmblxuICAgIHwgU29tZSAocGF0aCwgZm4pIC0+IFNvbWUgcGF0aCwgZm5cbiAgaW5cbiAgbGV0IGZuLCBleHQgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonLicgZm4gd2l0aFxuICAgIHwgTm9uZSAtPiBmbiwgTm9uZVxuICAgIHwgU29tZSAoYmFzZV9mbiwgZXh0KSAtPiBiYXNlX2ZuLCBTb21lIGV4dFxuICBpblxuICBsZXQgZm4gPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBOb25lIC0+IGZuXG4gICAgfCBTb21lIGRpciAtPiBkaXIgXiBcIi9cIiBeIGZuXG4gIGluXG4gIGZuLCBleHRcbjs7XG5cbmxldCBwYXJ0cyBmaWxlbmFtZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgZmlsZW5hbWUgPVxuICAgIG1hdGNoIHNwbGl0IGZpbGVuYW1lIHdpdGhcbiAgICB8IChcIi5cIiBhcyBiYXNlKSwgXCIuXCIgLT4gYmFzZSA6OiBhY2NcbiAgICB8IChcIi9cIiBhcyBiYXNlKSwgXCIvXCIgLT4gYmFzZSA6OiBhY2NcbiAgICB8IHJlc3QsIGRpciAtPiBsb29wIChkaXIgOjogYWNjKSByZXN0XG4gIGluXG4gIGxvb3AgW10gZmlsZW5hbWVcbjs7XG5cbmxldCBvZl9wYXJ0cyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFpbHdpdGggXCJGaWxlbmFtZS5vZl9wYXJ0czogZW1wdHkgcGFydHMgbGlzdFwiXG4gIHwgcm9vdCA6OiByZXN0IC0+IExpc3QuZm9sZCByZXN0IH5pbml0OnJvb3QgfmY6Q2FtbC5GaWxlbmFtZS5jb25jYXRcbjs7XG5cbmxldCByZWMgc2tpcF9jb21tb25fcHJlZml4IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgd2hlbiBTdHJpbmcuZXF1YWwgaDEgaDIgLT4gc2tpcF9jb21tb25fcHJlZml4IHQxIHQyXG4gIHwgXyAtPiBsMSwgbDJcbjs7XG5cbmxldCBvZl9hYnNvbHV0ZV9leG4gYSB+cmVsYXRpdmVfdG86YiA9XG4gIGlmIGlzX3JlbGF0aXZlIGFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+Zmlyc3RfYXJnOihhIDogc3RyaW5nKV07XG4gIGlmIGlzX3JlbGF0aXZlIGJcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogW35yZWxhdGl2ZV90b10gbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+cmVsYXRpdmVfdG86KGIgOiBzdHJpbmcpXTtcbiAgbGV0IGFfcGFydHMgPSBwYXJ0cyBhIGluXG4gIGxldCBiX3BhcnRzID0gcGFydHMgYiBpblxuICBsZXQgYV9zdWZmaXgsIGJfc3VmZml4ID0gc2tpcF9jb21tb25fcHJlZml4IGFfcGFydHMgYl9wYXJ0cyBpblxuICBsZXQgZ29fdXAgPSBMaXN0Lm1hcCB+ZjooZnVuIF8gLT4gcGFyZW50X2Rpcl9uYW1lKSBiX3N1ZmZpeCBpblxuICBtYXRjaCBnb191cCBAIGFfc3VmZml4IHdpdGhcbiAgfCBbXSAtPiBjdXJyZW50X2Rpcl9uYW1lXG4gIHwgcmVscGF0aCAtPiBvZl9wYXJ0cyByZWxwYXRoXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBjcmVhdGVfYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IG9wZW5fdGVtcF9maWxlX2ZkID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgcmVhbHBhdGggPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2RpciA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHRlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuISBTdGFibGVfaW50ZXJuYWxcbiAgb3BlbiEgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cblxuICBtb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgfCBaZXJvXG4gICAgICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBNYW55IG9mIHRcbiAgICAgICAgICB8IE1heWJlIG9mIHRcbiAgICAgICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgICAgWyVleHBlY3Qge3wgYTE3ZmQzNGVjMjEzZTUwOGRiNDUwZjY0NjlmN2ZlOTkgfH1dXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgQmFzZS5JbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBaZXJvIC0+ICgpXG4gICAgICAgICAgICB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICB8IE1hbnkgWmVybyAtPiBmYWlsd2l0aCBcIk1hbnkgWmVybyBzaG91bGQgYmUganVzdCBaZXJvXCJcbiAgICAgICAgICAgIHwgTWFueSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IE1heWJlIFplcm8gLT4gZmFpbHdpdGggXCJNYXliZSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYXliZSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IENvbmNhdCBbXSB8IENvbmNhdCBbIF8gXSAtPiBmYWlsd2l0aCBcIkZsYXR0ZW4gemVybyBhbmQgb25lLWVsZW1lbnQgQ29uY2F0XCJcbiAgICAgICAgICAgIHwgQ29uY2F0IHRzIC0+IEJhc2UuTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudFxuICAgICAgICAgICAgfCBBZF9ob2MgXyAtPiAoKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCB0ID0gWyVvZl9zZXhwOiB0XSBzZXhwIGluXG4gICAgICAgICAgaW52YXJpYW50IHQ7XG4gICAgICAgICAgdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgdXNhZ2UgPSBmdW5jdGlvblxuICAgICAgICAgIHwgWmVybyAtPiBcIlwiXG4gICAgICAgICAgfCBPbmUgdXNhZ2UgLT4gdXNhZ2VcbiAgICAgICAgICB8IE1hbnkgWmVybyAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgICB8IE1hbnkgKE9uZSBfIGFzIHQpIC0+IEJhc2UuUHJpbnRmLnNwcmludGYgXCJbJXMgLi4uXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgTWFueSB0IC0+IEJhc2UuUHJpbnRmLnNwcmludGYgXCJbKCVzKSAuLi5dXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBNYXliZSBaZXJvIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgIHwgTWF5YmUgdCAtPiBCYXNlLlByaW50Zi5zcHJpbnRmIFwiWyVzXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgQ29uY2F0IHRzIC0+IEJhc2UuU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChCYXNlLkxpc3QubWFwIHRzIH5mOnVzYWdlKVxuICAgICAgICAgIHwgQWRfaG9jIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBVc2FnZSBvZiBzdHJpbmdcbiAgICAgICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIuVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMDgxZDllYzE2NzkwM2Y4ZjhjNDljYmY4ZTNmYjNhNjYgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGJkOGQ2ZmI3YTY2MmQyYzBiNWUwZDIwMjZjNmQyZDIxIHx9XVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gIGVuZFxuXG4gIG1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBhbm9ucyA6IEFub25zLlYyLnRcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA4ZmFhYzFlOGQ5ZGViMGJhYWE1NmFjOGViZjg1YjQ5OCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB1c2FnZSA6IHN0cmluZ1xuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgeyBzdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFncyB9ID1cbiAgICAgICAgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zID0gVXNhZ2UgdXNhZ2U7IGZsYWdzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zOyBmbGFncyB9ID1cbiAgICAgICAgeyBzdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lXG4gICAgICAgIDsgdXNhZ2UgPVxuICAgICAgICAgICAgKG1hdGNoIGFub25zIHdpdGhcbiAgICAgICAgICAgICB8IFVzYWdlIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgICAgfCBHcmFtbWFyIGdyYW1tYXIgLT4gQW5vbnMuR3JhbW1hci5WMS51c2FnZSBncmFtbWFyKVxuICAgICAgICA7IGZsYWdzXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuICBlbmRcblxuICBtb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICAgIHR5cGUgYSA9IER1bW15X3R5cGVfYmVjYXVzZV93ZV9jYW5ub3RfZGlnZXN0X3R5cGVfY29uc3RydWN0b3JzX29ubHlfY29uY3JldGVfdHlwZXNcbiAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC5TdGFibGUuVjEudCBMYXp5LlN0YWJsZS5WMS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogYSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMmNjM2VlYjU4ZDEyZDhmZTQ0MDAwMDllNTkyZDc4MjcgfH1dXG4gICAgICA7O1xuXG4gICAgICBvcGVuISBCYXNlXG5cbiAgICAgIGxldCBtYXAgdCB+ZiA9XG4gICAgICAgIHsgdCB3aXRoIHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmYpIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QuU3RhYmxlLlYxLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBhIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAyY2MzZWViNThkMTJkOGZlNDQwMDAwOWU1OTJkNzgyNyB8fV1cbiAgICAgIDs7XG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID0geyB0IHdpdGggc3ViY29tbWFuZHMgPSBMaXN0LkFzc29jLm1hcCB0LnN1YmNvbW1hbmRzIH5mIH1cblxuICAgICAgbGV0IHRvX2xhdGVzdCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgfSA6ICdhIE1vZGVsLnQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZyb21fdmFsIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgKHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCkgOiAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gTGF6eS5mb3JjZSBzdWJjb21tYW5kcyB9XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gICAgbGV0IGFic19wYXRoIH5kaXIgcGF0aCA9XG4gICAgICBpZiBGaWxlbmFtZS5pc19hYnNvbHV0ZSBwYXRoIHRoZW4gcGF0aCBlbHNlIEZpbGVuYW1lLmNvbmNhdCBkaXIgcGF0aFxuICAgIDs7XG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGMwYzgyNTZlOTIzOGNkZDhmMmVjMWY4Nzg1ZTAyYWUwIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEZuLmlkXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cF1cblxuICAgICAgbGV0IHRvX3YzIHQgOiBWMy50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3YzICh0IDogVjMudCkgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEZuLmNvbXBvc2UgVjMudG9fbGF0ZXN0IHRvX3YzXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gRm4uY29tcG9zZSBvZl92MyBWMy5vZl9sYXRlc3RcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7ICgqIFtwYXRoX3RvX2V4ZV0gbXVzdCBiZSBhYnNvbHV0ZS4gKilcbiAgICAgICAgICBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCB0b192MiB0IDogVjIudCA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSBcIi9cIlxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjIgKHQgOiBWMi50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gRm4uY29tcG9zZSBWMi50b19sYXRlc3QgdG9fdjJcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBGbi5jb21wb3NlIG9mX3YyIFYyLm9mX2xhdGVzdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50ICogdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgOTgxMTU0ZWYzOTE5NDM3YzZjODIyNjE5ODgyODQxZDQgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnRcbiAgICAgICAgfCBMYXp5IG9mIHQgTGF6eS5TdGFibGUuVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgZDNjMzc1NTQ4ZjFhNDNjNThjNzFlODE0YzA0YmEzNmEgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gRm4uaWRcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBGbi5pZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjNcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNlIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYxLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMi50XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA1OThkNGI0MWVmNDM1YmM2OWE0ODg2YmRiYTBmODY4OSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi50b19sYXRlc3QgZSlcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLnRvX2xhdGVzdCAoR3JvdXBfaW5mby5WMS5tYXAgZyB+Zjp0b19sYXRlc3QpKVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBvZl9sYXRlc3QgOiBNb2RlbC50IC0+IHQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIGJcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYyLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjEudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgNzBkMjBiNTQzMmZmYWI3N2EzODViMDJiMDQwMzFkMmUgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS50b19sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLnRvX2xhdGVzdCBlKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEudG9fbGF0ZXN0IChHcm91cF9pbmZvLlYxLm1hcCBnIH5mOnRvX2xhdGVzdCkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIG9mX2xhdGVzdCA6IE1vZGVsLnQgLT4gdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS5vZl9sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVmVyc2lvbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFYxIG9mIFYxLnRcbiAgICAgICAgfCBWMiBvZiBWMi50XG4gICAgICAgIHwgVjMgb2YgVjMudCAoKiBhdmFpbGFibGUgYXQgbGVhc3Qgc2luY2UgMjAyMC0wNCAqKVxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwLCB2YXJpYW50c11cblxuICAgICAgKCogSXQncyBva2F5IHRvIGNoYW5nZSB0aGlzIG9uZSBpbiBwbGFjZSwgYXMgbG9uZyBhcyB3ZSB3YWl0IGxvbmcgZW5vdWdoIGJlZm9yZVxuICAgICAgICAgZHJvcHBpbmcgc3VwcG9ydCBmb3Igb2xkIHZlcnNpb25zLiAqKVxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDc5NmZiZjAwNmRlYjI1MTU5MTcxNjM3YzJhNTEwYmY0IHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVjEgdCAtPiBWMS50b19sYXRlc3QgdFxuICAgICAgICB8IFYyIHQgLT4gVjIudG9fbGF0ZXN0IHRcbiAgICAgICAgfCBWMyB0IC0+IFYzLnRvX2xhdGVzdCB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0IH52ZXJzaW9uX3RvX3VzZSBsYXRlc3QgPVxuICAgICAgICBtYXRjaCB2ZXJzaW9uX3RvX3VzZSB3aXRoXG4gICAgICAgIHwgMSAtPiBWMSAoVjEub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCAyIC0+IFYyIChWMi5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IDMgLT4gVjMgKFYzLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgb3RoZXIgLT5cbiAgICAgICAgICBTdGRfaW50ZXJuYWwuZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInVuc3VwcG9ydGVkIHZlcnNpb25fdG9fdXNlXCJcbiAgICAgICAgICAgIG90aGVyXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludF1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLnQgPVxuICAgICAgfCBaZXJvXG4gICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgIHwgTWFueSBvZiB0XG4gICAgICB8IE1heWJlIG9mIHRcbiAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGludmFyaWFudCA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLnVzYWdlXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5Bbm9ucy5Nb2RlbC50ID1cbiAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgbWF5YmVfbWlzc2luZ19wcmVmaXggPSBcIltcIlxuICBsZXQgbWF5YmVfbWlzc2luZ19zdWZmaXggPSBcIl1cIlxuICBsZXQgbWF5YmVfbW9yZV9zdWZmaXggPSBcIiAuLi5cIlxuXG4gIGxldCB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgPVxuICAgIGxldCB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9ID0gdCBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBpZiBhdF9sZWFzdF9vbmNlXG4gICAgICB0aGVuIGZsYWdfbmFtZVxuICAgICAgZWxzZSBTdHJpbmcuY29uY2F0IFsgbWF5YmVfbWlzc2luZ19wcmVmaXg7IGZsYWdfbmFtZTsgbWF5YmVfbWlzc2luZ19zdWZmaXggXVxuICAgIGluXG4gICAgaWYgYXRfbW9zdF9vbmNlIHRoZW4gZGVzY3JpcHRpb24gZWxzZSBTdHJpbmcuY29uY2F0IFsgZGVzY3JpcHRpb247IG1heWJlX21vcmVfc3VmZml4IF1cbiAgOztcblxuICBsZXQgb2ZfaGVscF9zdHJpbmcgbmFtZSA9XG4gICAgbGV0IGF0X21vc3Rfb25jZSwgbmFtZSA9XG4gICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggbmFtZSB+c3VmZml4Om1heWJlX21vcmVfc3VmZml4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBuYW1lXG4gICAgICB8IFNvbWUgbmFtZSAtPiBmYWxzZSwgbmFtZVxuICAgIGluXG4gICAgbGV0IGF0X2xlYXN0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgU3RyaW5nLmNob3BfcHJlZml4IG5hbWUgfnByZWZpeDptYXliZV9taXNzaW5nX3ByZWZpeFxuICAgICAgICB8PiBPcHRpb24uYmluZCB+ZjooU3RyaW5nLmNob3Bfc3VmZml4IH5zdWZmaXg6bWF5YmVfbWlzc2luZ19zdWZmaXgpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlIH0sIG5hbWVcbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJ0b19oZWxwX3N0cmluZ1wiID1cbiAgICBsZXQgZmxhZ19uYW1lID0gXCJuYW1lXCIgaW5cbiAgICBMaXN0Lml0ZXIgWyVhbGw6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgbGV0IHMgPSB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgaW5cbiAgICAgIHByaW50X3MgWyVtZXNzYWdlIFwiXCIgfl86KHQgOiB0KSBzXTtcbiAgICAgIGxldCB0JywgZmxhZ19uYW1lJyA9IG9mX2hlbHBfc3RyaW5nIHMgaW5cbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSB0IHQnKTtcbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiBzdHJpbmddIGZsYWdfbmFtZSBmbGFnX25hbWUnKSk7XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgZmFsc2UpIChhdF9tb3N0X29uY2UgZmFsc2UpKSBcIltuYW1lXSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSB0cnVlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJuYW1lIC4uLlwiKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIHRydWUpKSBbbmFtZV0pXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgbmFtZSkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRmxhZ19pbmZvLk1vZGVsLnQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZG9jIDogc3RyaW5nXG4gICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBwYXJzZV9uYW1lIHQgPVxuICAgIGxldCBudW1fb2NjdXJyZW5jZXMsIGZsYWdfbmFtZSA9IE51bV9vY2N1cnJlbmNlcy5vZl9oZWxwX3N0cmluZyB0Lm5hbWUgaW5cbiAgICBtYXRjaCBTdHJpbmcuc3BsaXQgZmxhZ19uYW1lIH5vbjonICcgd2l0aFxuICAgIHwgWyBmbGFnX25hbWUgXSAtPiBPayAobnVtX29jY3VycmVuY2VzLCBmYWxzZSwgZmxhZ19uYW1lKVxuICAgIHwgWyBmbGFnX25hbWU7IF9hcmdfZG9jIF0gLT4gT2sgKG51bV9vY2N1cnJlbmNlcywgdHJ1ZSwgZmxhZ19uYW1lKVxuICAgIHwgXyAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIlVuYWJsZSB0byBwYXJzZVwiIGZsYWdfbmFtZV1cbiAgOztcblxuICAoKiBVc2VycyBhcmUgbGlrZWx5IHRvIGNhbGwgYWxsIHRocmVlIG9mIHRoZXNlIGZ1bmN0aW9ucywgaW4gd2hpY2ggY2FzZSB3ZSB3aWxsIHJlLXBhcnNlXG4gICAgIHRoZSBbbmFtZV0gc2V2ZXJhbCB0aW1lcy4gV2UgZG9uJ3QgZXhwZWN0IHVzZXJzIG9mIHRoZXNlIGZ1bmN0aW9ucyB0byBjYXJlIGFib3V0IHRoZVxuICAgICBpbmVmZmljaWVuY3kuICopXG4gIGxldCBmbGFnX25hbWUgdCA9IHBhcnNlX25hbWUgdCB8PiBPcl9lcnJvci5tYXAgfmY6dHJkM1xuICBsZXQgbnVtX29jY3VycmVuY2VzIHQgPSBwYXJzZV9uYW1lIHQgfD4gT3JfZXJyb3IubWFwIH5mOmZzdDNcbiAgbGV0IHJlcXVpcmVzX2FyZyB0ID0gcGFyc2VfbmFtZSB0IHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmQzXG5cbiAgbGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IF8sIFwiWy1oZWxwXVwiIC0+IC0xXG4gICAgfCBcIlstaGVscF1cIiwgXyAtPiAxXG4gICAgfCBfLCBcIlstdmVyc2lvbl1cIiAtPiAtMVxuICAgIHwgXCJbLXZlcnNpb25dXCIsIF8gLT4gMVxuICAgIHwgXywgXCJbLWJ1aWxkLWluZm9dXCIgLT4gLTFcbiAgICB8IFwiWy1idWlsZC1pbmZvXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiaGVscFwiIC0+IC0xXG4gICAgfCBcImhlbHBcIiwgXyAtPiAxXG4gICAgfCBfLCBcInZlcnNpb25cIiAtPiAtMVxuICAgIHwgXCJ2ZXJzaW9uXCIsIF8gLT4gMVxuICAgIHwgXyAtPiAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaGVscF9kaXNwbGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IEZsYWdfaW5mby50IGxpc3RcblxuICBsZXQgc29ydCB0ID1cbiAgICBMaXN0LnN0YWJsZV9zb3J0IHQgfmNvbXBhcmU6KGZ1biBhIGIgLT5cbiAgICAgIEZsYWdfaW5mby5oZWxwX3NjcmVlbl9jb21wYXJlIGEuRmxhZ19pbmZvLm5hbWUgYi5GbGFnX2luZm8ubmFtZSlcbiAgOztcblxuICBsZXQgd29yZF93cmFwX2FuZF9zdHJpcCB0ZXh0IHdpZHRoID1cbiAgICBsZXQgY2h1bmtzID0gU3RyaW5nLnNwbGl0IHRleHQgfm9uOidcXG4nIGluXG4gICAgTGlzdC5jb25jYXRfbWFwIGNodW5rcyB+ZjooZnVuIHRleHQgLT5cbiAgICAgIGxldCB3b3JkcyA9XG4gICAgICAgIFN0cmluZy5zcGxpdCB0ZXh0IH5vbjonICdcbiAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biB3b3JkIC0+IG5vdCAoU3RyaW5nLmlzX2VtcHR5IHdvcmQpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIExpc3QuZm9sZCB3b3JkcyB+aW5pdDpOb25lIH5mOihmdW4gYWNjIHdvcmQgLT5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAobWF0Y2ggYWNjIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gW10sIHdvcmRcbiAgICAgICAgICAgICB8IFNvbWUgKGxpbmVzLCBsaW5lKSAtPlxuICAgICAgICAgICAgICAgKCogZWZmaWNpZW5jeSBpcyBub3QgYSBjb25jZXJuIGZvciB0aGUgc3RyaW5nIGxlbmd0aHMgd2UgZXhwZWN0ICopXG4gICAgICAgICAgICAgICBsZXQgbGluZV9hbmRfd29yZCA9IGxpbmUgXiBcIiBcIiBeIHdvcmQgaW5cbiAgICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggbGluZV9hbmRfd29yZCA8PSB3aWR0aFxuICAgICAgICAgICAgICAgdGhlbiBsaW5lcywgbGluZV9hbmRfd29yZFxuICAgICAgICAgICAgICAgZWxzZSBsaW5lIDo6IGxpbmVzLCB3b3JkKSlcbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIChsaW5lcywgbGluZSkgLT4gTGlzdC5yZXYgKGxpbmUgOjogbGluZXMpKVxuICA7O1xuXG4gIG1vZHVsZSBEaXNwbGF5IDogc2lnXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBudW1fY29scyA9IDgwXG4gICAgbGV0IHNwYWNlc19zdHJpbmcgd2lkdGggPSBTdHJpbmcubWFrZSB3aWR0aCAnICdcblxuICAgIGxldCBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB4IH53aWR0aCA9XG4gICAgICBsZXQgc2xhY2sgPSB3aWR0aCAtIFN0cmluZy5sZW5ndGggeCBpblxuICAgICAgeCBeIHNwYWNlc19zdHJpbmcgc2xhY2tcbiAgICA7O1xuXG4gICAgbGV0IGluZGVudGF0aW9uID0gXCIgIFwiXG4gICAgbGV0IGluZGVudF9hbmRfbmV3bGluZSB4ID0gTGlzdC5jb25jYXQgWyBbIGluZGVudGF0aW9uIF07IHg7IFsgXCJcXG5cIiBdIF1cbiAgICBsZXQgc3BhY2luZ19kb3QgPSBcIi4gXCJcblxuICAgIGxldCBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ID1cbiAgICAgIDI3XG4gICAgOztcblxuICAgIGxldCBkb2N1bWVudGF0aW9uX3N0YXJ0X2NvbHVtbiA9IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uXG4gICAgbGV0IGxoc193aWR0aCA9IGRvY3VtZW50YXRpb25fc3RhcnRfY29sdW1uXG4gICAgbGV0IGxoc19wYWRfd2lkdGggPSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvblxuICAgIGxldCBsaHNfcGFkID0gc3BhY2VzX3N0cmluZyBsaHNfcGFkX3dpZHRoXG5cbiAgICBsZXQgbGhzX3BhZF9hbmRfbmV3bGluZV90ZXJtaW5hdGUgPVxuICAgICAgTGlzdC5tYXAgfmY6KGZ1biB2IC0+IGluZGVudF9hbmRfbmV3bGluZSBbIGxoc19wYWQ7IHYgXSlcbiAgICA7O1xuXG4gICAgbGV0IHJvd3MgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyBkb2N1bWVudGF0aW9uID1cbiAgICAgIGxldCBmbGFnX29uX2l0c19vd25fbGluZSA9XG4gICAgICAgIGxldCBmbGFnX3dpZHRoID1cbiAgICAgICAgICBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uICsgU3RyaW5nLmxlbmd0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzXG4gICAgICAgIGluXG4gICAgICAgIGlmIGZsYWdfd2lkdGggPj0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggc3BhY2luZ19kb3RcbiAgICAgICAgdGhlbiBpbmRlbnRfYW5kX25ld2xpbmUgWyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGluZGVudF9hbmRfbmV3bGluZVxuICAgICAgICAgICAgWyBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB+d2lkdGg6ZG90X2luZGVudGF0aW9uX29mZnNldCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzXG4gICAgICAgICAgICA7IHNwYWNpbmdfZG90XG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgbGV0IHdyYXBwZWRfZG9jdW1lbnRhdGlvbiA9XG4gICAgICAgIHdvcmRfd3JhcF9hbmRfc3RyaXBcbiAgICAgICAgICBkb2N1bWVudGF0aW9uXG4gICAgICAgICAgKG51bV9jb2xzIC0gbGhzX3dpZHRoIC0gU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvbilcbiAgICAgIGluXG4gICAgICBtYXRjaCB3cmFwcGVkX2RvY3VtZW50YXRpb24gd2l0aFxuICAgICAgfCBbXSAtPiBbIGZsYWdfb25faXRzX293bl9saW5lIF1cbiAgICAgIHwgZG9jX3dyYXBwZWRfZmlyc3RfbGluZSA6OiBkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIC0+XG4gICAgICAgIGxldCB3cmFwcGVkX2RvY19saW5lcyA9IGxoc19wYWRfYW5kX25ld2xpbmVfdGVybWluYXRlIGRvY193cmFwcGVkX3Jlc3RfbGluZXMgaW5cbiAgICAgICAgbGV0IHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggeCA9XG4gICAgICAgICAgaW5kZW50X2FuZF9uZXdsaW5lXG4gICAgICAgICAgICBbIHBhZF9zcGFjZXNfdG9fc3VmZml4IH53aWR0aDpkb3RfaW5kZW50YXRpb25fb2Zmc2V0IHhcbiAgICAgICAgICAgIDsgc3BhY2luZ19kb3RcbiAgICAgICAgICAgIDsgZG9jX3dyYXBwZWRfZmlyc3RfbGluZVxuICAgICAgICAgICAgXVxuICAgICAgICBpblxuICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgPj0gZG90X2luZGVudGF0aW9uX29mZnNldFxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmxhZ19vbl9pdHNfb3duX2xpbmVcbiAgICAgICAgICA6OiBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIFwiXCJcbiAgICAgICAgICA6OiB3cmFwcGVkX2RvY19saW5lc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIDo6IHdyYXBwZWRfZG9jX2xpbmVzXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICBMaXN0LmNvbmNhdF9tYXAgdCB+ZjooZnVuIHQgLT5cbiAgICAgICAgbGV0IGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgPVxuICAgICAgICAgIGxldCBmbGFnID0gdC5GbGFnX2luZm8ubmFtZSBpblxuICAgICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKGZsYWcgOjogdC5hbGlhc2VzKVxuICAgICAgICBpblxuICAgICAgICByb3dzIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgdC5kb2MgfD4gTGlzdC5jb25jYXQpXG4gICAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gRGlzcGxheS50b19zdHJpbmcgdFxuZW5kXG5cbm1vZHVsZSBLZXlfdHlwZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU3ViY29tbWFuZFxuICAgIHwgRmxhZ1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3ViY29tbWFuZCAtPiBcInN1YmNvbW1hbmRcIlxuICAgIHwgRmxhZyAtPiBcImZsYWdcIlxuICA7O1xuZW5kXG5cbmxldCBsb29rdXBfZXhwYW5kIGFsaXN0IHByZWZpeCBrZXlfdHlwZSA9XG4gIGxldCBpc19kYXNoID0gQ2hhci5lcXVhbCAnLScgaW5cbiAgbGV0IGFsaXN0ID1cbiAgICAoKiBubyBwYXJ0aWFsIG1hdGNoZXMgdW5sZXNzIHNvbWUgbm9uLWRhc2ggY2hhciBpcyBwcmVzZW50ICopXG4gICAgaWYgU3RyaW5nLmZvcl9hbGwgcHJlZml4IH5mOmlzX2Rhc2hcbiAgICB0aGVuIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGtleSwgKGRhdGEsIF8pKSAtPiBrZXksIChkYXRhLCBgRnVsbF9tYXRjaF9yZXF1aXJlZCkpXG4gICAgZWxzZSBhbGlzdFxuICBpblxuICBtYXRjaFxuICAgIExpc3QuZmlsdGVyIGFsaXN0IH5mOihmdW5jdGlvblxuICAgICAgfCBrZXksIChfLCBgRnVsbF9tYXRjaF9yZXF1aXJlZCkgLT4gU3RyaW5nLiggPSApIGtleSBwcmVmaXhcbiAgICAgIHwga2V5LCAoXywgYFByZWZpeCkgLT4gU3RyaW5nLmlzX3ByZWZpeCBrZXkgfnByZWZpeClcbiAgd2l0aFxuICB8IFsgKGtleSwgKGRhdGEsIF9uYW1lX21hdGNoaW5nKSkgXSAtPiBPayAoa2V5LCBkYXRhKVxuICB8IFtdIC0+IEVycm9yIChzcHJpbnRmICFcInVua25vd24gJXtLZXlfdHlwZX0gJXNcIiBrZXlfdHlwZSBwcmVmaXgpXG4gIHwgbWF0Y2hlcyAtPlxuICAgIChtYXRjaCBMaXN0LmZpbmQgbWF0Y2hlcyB+ZjooZnVuIChrZXksIF8pIC0+IFN0cmluZy4oID0gKSBrZXkgcHJlZml4KSB3aXRoXG4gICAgIHwgU29tZSAoa2V5LCAoZGF0YSwgX25hbWVfbWF0Y2hpbmcpKSAtPiBPayAoa2V5LCBkYXRhKVxuICAgICB8IE5vbmUgLT5cbiAgICAgICBsZXQgbWF0Y2hpbmdfa2V5cyA9IExpc3QubWFwIH5mOmZzdCBtYXRjaGVzIGluXG4gICAgICAgRXJyb3JcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAhXCIle0tleV90eXBlfSAlcyBpcyBhbiBhbWJpZ3VvdXMgcHJlZml4OiAlc1wiXG4gICAgICAgICAgICBrZXlfdHlwZVxuICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiBtYXRjaGluZ19rZXlzKSkpXG47O1xuXG5tb2R1bGUgQmFzZV9pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5CYXNlX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyBhbm9ucyA6IEFub25zLnRcbiAgICA7IGZsYWdzIDogRmxhZ19pbmZvLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfZmxhZyB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCBmYWxzZSAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIkZsYWdzIG11c3QgYmVnaW4gd2l0aCAnLSdcIiBwcmVmaXhdXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQlYmluZC5Pcl9lcnJvciBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgdC5mbGFncyB+ZjooZnVuIChmbGFnX2luZm8gOiBGbGFnX2luZm8udCkgLT5cbiAgICAgICAgICBsZXQlYmluZC5Pcl9lcnJvciBmbGFnX25hbWUgPSBGbGFnX2luZm8uZmxhZ19uYW1lIGZsYWdfaW5mbyBpblxuICAgICAgICAgIE9rXG4gICAgICAgICAgICAoTGlzdC5tYXAgKGZsYWdfbmFtZSA6OiBmbGFnX2luZm8uYWxpYXNlcykgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICAgICAgIGtleSwgKGZsYWdfaW5mbywgYFByZWZpeCkpKSlcbiAgICAgICAgfD4gT3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIChMaXN0LmNvbmNhdCBjaG9pY2VzKSBwcmVmaXggRmxhZ1xuICAgICAgfD4gUmVzdWx0Lm1hcF9lcnJvciB+ZjpFcnJvci5vZl9zdHJpbmdcbiAgICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ2V0X3VzYWdlIHQgPVxuICAgIG1hdGNoIHQuYW5vbnMgd2l0aFxuICAgIHwgVXNhZ2UgdXNhZ2UgLT4gdXNhZ2VcbiAgICB8IEdyYW1tYXIgZ3JhbW1hciAtPiBTdGFibGUuQW5vbnMuR3JhbW1hci5WMS51c2FnZSBncmFtbWFyXG4gIDs7XG5lbmRcblxubW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgU3RhYmxlLkdyb3VwX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC50IExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfc3ViY29tbWFuZCB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCB0cnVlIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiU3ViY29tbWFuZHMgbXVzdCBub3QgYmVnaW4gd2l0aCAnLSdcIiBwcmVmaXhdXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCAoZm9yY2UgdC5zdWJjb21tYW5kcykgfmY6KGZ1biAoa2V5LCBhKSAtPiBrZXksIChhLCBgUHJlZml4KSlcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIGNob2ljZXMgcHJlZml4IFN1YmNvbW1hbmRcbiAgICAgIHw+IFJlc3VsdC5tYXBfZXJyb3IgfmY6RXJyb3Iub2Zfc3RyaW5nXG4gICAgICB8PiBPcl9lcnJvci5tYXAgfmY6c25kXG4gIDs7XG5cbiAgbGV0IG1hcCA9IFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLm1hcFxuZW5kXG5cbm1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkV4ZWNfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5GdWxseV9mb3JjZWQuTW9kZWwudCA9XG4gICAgfCBCYXNpYyBvZiBCYXNlX2luZm8udFxuICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiB0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgZXhwYW5kZWRfc3ViY29tbWFuZHMgdCA9XG4gICAgbGV0IHJlYyBleHBhbmQgPSBmdW5jdGlvblxuICAgICAgfCBFeGVjIChfLCB0KSAtPiBleHBhbmQgdFxuICAgICAgfCBCYXNpYyBfIC0+IFsgW10gXVxuICAgICAgfCBHcm91cCB7IHN1YmNvbW1hbmRzOyBfIH0gLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzKSB+ZjooZnVuIChuYW1lLCB0KSAtPlxuICAgICAgICAgIExpc3QubWFwIH5mOihmdW4gcGF0aCAtPiBuYW1lIDo6IHBhdGgpIChleHBhbmQgdCkpXG4gICAgaW5cbiAgICAoKiBSZXZlcnNpbmcgc28gdGhhdCB0aGUgY29tbWFuZHMgc2hvdyB1cCBpbiB0aGUgc2FtZSBvcmRlciBhcyBoZWxwIGlzIG91dHB1dCAqKVxuICAgIExpc3QucmV2IChleHBhbmQgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLlNleHBhYmxlLk1vZGVsLnQgPVxuICAgIHwgQmFzZSBvZiBCYXNlX2luZm8udFxuICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLnRcbiAgICB8IExhenkgb2YgdCBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZXh0cmFjdGlvbl92YXIgPSBDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuXG4gIG1vZHVsZSBWZXJzaW9uZWQgPSBTdGFibGUuU2V4cGFibGUuVmVyc2lvbmVkXG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9XG4gICAgbGV0IGYgaSBzdXBwb3J0ZWQgXyA9IFNldC5hZGQgc3VwcG9ydGVkIGkgaW5cbiAgICBWZXJzaW9uZWQuVmFyaWFudHMuZm9sZCB+aW5pdDooU2V0LmVtcHR5IChtb2R1bGUgSW50KSkgfnYxOihmIDEpIH52MjooZiAyKSB+djM6KGYgMylcbiAgOztcblxuICBsZXQgb2ZfdmVyc2lvbmVkID0gVmVyc2lvbmVkLnRvX2xhdGVzdFxuICBsZXQgdG9fdmVyc2lvbmVkIHQgfnZlcnNpb25fdG9fdXNlID0gVmVyc2lvbmVkLm9mX2xhdGVzdCB0IH52ZXJzaW9uX3RvX3VzZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiAodW5pdCAtPiB0KVxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBmdWxseV9mb3JjZWQgOiB0IC0+IEZ1bGx5X2ZvcmNlZC50ID0gZnVuY3Rpb25cbiAgfCBCYXNpYyBiIC0+IEJhc2ljIGJcbiAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLm1hcCBnIH5mOmZ1bGx5X2ZvcmNlZClcbiAgfCBFeGVjIChlLCBmKSAtPiBFeGVjIChlLCBmdWxseV9mb3JjZWQgKGYgKCkpKVxuICB8IExhenkgdGh1bmsgLT4gZnVsbHlfZm9yY2VkIChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IHJlYyBnZXRfc3VtbWFyeSA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBiLnN1bW1hcnlcbiAgfCBHcm91cCBnIC0+IGcuc3VtbWFyeVxuICB8IEV4ZWMgKGUsIF8pIC0+IGUuc3VtbWFyeVxuICB8IExhenkgdGh1bmsgLT4gZ2V0X3N1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5sZXQgaGVscF90ZXh0ID0gYFVzZV9Db21tYW5kX3VuaXhcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleV90eXBlID0gS2V5X3R5cGVcblxuICBsZXQgYWJzX3BhdGggPSBTdGFibGUuRXhlY19pbmZvLmFic19wYXRoXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlID0gRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmVcbiAgbGV0IHdvcmRfd3JhcCA9IEZsYWdfaGVscF9kaXNwbGF5LndvcmRfd3JhcF9hbmRfc3RyaXBcbiAgbGV0IGxvb2t1cF9leHBhbmQgPSBsb29rdXBfZXhwYW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2VyaWFsaXphYmxlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGhvc3QgOiBTdHJpbmcudFxuICAgICAgICA7IHBvcnQgOiBJbnQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVja11cblxuICAgICAgbGV0IHRvX3NlcmlhbGl6YWJsZSB7IGhvc3Q7IHBvcnQgfSA9IGhvc3QsIHBvcnRcbiAgICAgIGxldCBvZl9zZXJpYWxpemFibGUgKGhvc3QsIHBvcnQpID0geyBob3N0OyBwb3J0IH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IFNlcmlhbGl6YWJsZS50XTtcbiAgICAgICAgWyVleHBlY3RcbiAgICAgICAgICB7fFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDBcbiAgICAgICAgICAgICAgICAgIDk1Nzk5MGYwZmM0MTYxZmI4NzRlNjY4NzI1NTBmYjQwIHx9XVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG9wZW4hIEltcG9ydFxuICAgICAgb3BlbiEgU3RkX2ludGVybmFsXG4gICAgICBvcGVuISBUMFxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHsgaG9zdDsgcG9ydCB9ID0gc3ByaW50ZiBcIiVzOiVkXCIgaG9zdCBwb3J0XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonOicgd2l0aFxuICAgICAgICB8IFsgaG9zdDsgcG9ydCBdIC0+XG4gICAgICAgICAgbGV0IHBvcnQgPVxuICAgICAgICAgICAgdHJ5IEludC5vZl9zdHJpbmcgcG9ydCB3aXRoXG4gICAgICAgICAgICB8IF9leG4gLT4gZmFpbHdpdGhmIFwiSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmc6IGJhZCBwb3J0OiAlc1wiIHMgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHsgaG9zdDsgcG9ydCB9XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogJXNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgICAgfCBTZXhwLkF0b20gcyBhcyBzZXhwIC0+XG4gICAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgRmFpbHVyZSBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cClcbiAgICAgICAgfCBzZXhwIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5cbiAgICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgKCogaGFuZGxlcyB0aGUgaG9zdDpwb3J0IHN0cmluZyBjYXNlICopXG4gICAgICAgICAgICAgICAgICBTdHJpbmdcbiAgICAgICAgICAgICAgICAgIDsgKCogaGFuZGxlcyB0aGUgbGlzdCAoaG9zdCBwb3J0KSBjYXNlICAqKVxuICAgICAgICAgICAgICAgICAgTGlzdCAoQ29ucyAoU3RyaW5nLCBDb25zIChJbnRlZ2VyLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVDEpXG5cbiAgICBsZXQldGVzdF91bml0IFwidF9vZl9zZXhwXCIgPVxuICAgICAgWyV0ZXN0X3Jlc3VsdDogdF1cbiAgICAgICAgKHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcge3wobG9jYWxob3N0IDgwODApfH0pKVxuICAgICAgICB+ZXhwZWN0OnsgaG9zdCA9IFwibG9jYWxob3N0XCI7IHBvcnQgPSA4MDgwIH07XG4gICAgICBbJXRlc3RfcmVzdWx0OiB0XVxuICAgICAgICAodF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyB7fGxvY2FsaG9zdDo4MDgwfH0pKVxuICAgICAgICB+ZXhwZWN0OnsgaG9zdCA9IFwibG9jYWxob3N0XCI7IHBvcnQgPSA4MDgwIH1cbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBcInNleHAgcm91bmR0cmlwXCIgPVxuICAgICAgUXVpY2tjaGVjay50ZXN0IFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgICBbJXRlc3RfcmVzdWx0OiB0XSAodF9vZl9zZXhwIChzZXhwX29mX3QgdCkpIH5leHBlY3Q6dClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5lbmRcblxuaW5jbHVkZSBMYXRlc3RcblxubGV0IGNyZWF0ZSB+aG9zdCB+cG9ydCA9IHsgaG9zdDsgcG9ydCB9XG5sZXQgaG9zdCB0ID0gdC5ob3N0XG5sZXQgcG9ydCB0ID0gdC5wb3J0XG5sZXQgdHVwbGUgdCA9IHRvX3NlcmlhbGl6YWJsZSB0XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLkhvc3RfYW5kX3BvcnRcIlxuICBlbmQpXG5cbmluY2x1ZGUgKEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoTGF0ZXN0KSA6IEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChMYXRlc3QpXG5cbmxldCB0eXBlX2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJIb3N0X2FuZF9wb3J0XCIgc2V4cF9vZl90XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBXaXRob3V0X2NvbnRhaW5lcnMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBJbnQuU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgZXhjZXB0aW9uIFBpZF9tdXN0X2JlX3Bvc2l0aXZlIG9mIEludC5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgZW5zdXJlIGkgPSBpZiBpIDw9IDAgdGhlbiByYWlzZSAoUGlkX211c3RfYmVfcG9zaXRpdmUgaSkgZWxzZSBpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBlbnN1cmVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9IEludC5TdGFibGUuVjEudFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoV2l0aG91dF9jb250YWluZXJzKVxuICAgIGluY2x1ZGUgV2l0aG91dF9jb250YWluZXJzXG4gIGVuZFxuXG4gIG1vZHVsZSBMYXRlc3QgPSBWMVxuZW5kXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGFibGUuTGF0ZXN0LldpdGhvdXRfY29udGFpbmVyc1xuXG50eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgaGFzaF1cblxubGV0IG9mX2ludCBpID0gZW5zdXJlIGlcbmxldCB0b19pbnQgPSBGbi5pZFxubGV0IG9mX3N0cmluZyBzdHJpbmcgPSBlbnN1cmUgKEludC5vZl9zdHJpbmcgc3RyaW5nKVxubGV0IHRvX3N0cmluZyA9IEludC50b19zdHJpbmdcbmxldCBpbml0ID0gb2ZfaW50IDFcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5QaWRcIlxuICBlbmQpXG4iLCIoKiogU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGEgcG9seW1vcnBoaWMgZnVuY3Rpb25hbCBkb3VibGUtZW5kZWQgcXVldWUuICopXG5cbigqKiBJbnZhcmlhbnRzOlxuICAgIC0gcXVldWUubGVuZ3RoID0gTGlzdC5sZW5ndGggcXVldWUuZnJvbnQgKyBMaXN0Lmxlbmd0aCBxdWV1ZS5iYWNrXG4gICAgLSBpZiBxdWV1ZSBoYXMgPj0gMiBlbGVtZW50cywgbmVpdGhlciBmcm9udCBub3IgYmFjayBhcmUgZW1wdHlcbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxuZXhjZXB0aW9uIEVtcHR5IFtAQGRlcml2aW5nIHNleHBdXG5cbnR5cGUgJ2EgdCA9XG4gIHsgZnJvbnQgOiAnYSBsaXN0XG4gIDsgYmFjayA6ICdhIGxpc3RcbiAgOyBsZW5ndGggOiBpbnRcbiAgfVxuXG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcblxubGV0IGludmFyaWFudCBmIHQgPVxuICBsZXQgbl9mcm9udCA9IExpc3QubGVuZ3RoIHQuZnJvbnQgaW5cbiAgbGV0IG5fYmFjayA9IExpc3QubGVuZ3RoIHQuYmFjayBpblxuICBhc3NlcnQgKHQubGVuZ3RoID0gbl9mcm9udCArIG5fYmFjayk7XG4gIGFzc2VydCAodC5sZW5ndGggPCAyIHx8IChuX2Zyb250IDw+IDAgJiYgbl9iYWNrIDw+IDApKTtcbiAgTGlzdC5pdGVyIHQuZnJvbnQgfmY7XG4gIExpc3QuaXRlciB0LmJhY2sgfmZcbjs7XG5cbmxldCBtYWtlIH5sZW5ndGggfmZyb250IH5iYWNrID1cbiAgbWF0Y2ggZnJvbnQsIGJhY2sgd2l0aFxuICB8IFtdLCBbXSB8IFsgXyBdLCBbXSB8IFtdLCBbIF8gXSB8IF8gOjogXywgXyA6OiBfIC0+IHsgZnJvbnQ7IGJhY2s7IGxlbmd0aCB9XG4gIHwgW10sIF8gOjogXyA6OiBfIC0+XG4gICAgbGV0IGJhY2ssIHJldl9mcm9udCA9IExpc3Quc3BsaXRfbiBiYWNrIChsZW5ndGggLyAyKSBpblxuICAgIHsgZnJvbnQgPSBMaXN0LnJldiByZXZfZnJvbnQ7IGJhY2s7IGxlbmd0aCB9XG4gIHwgXyA6OiBfIDo6IF8sIFtdIC0+XG4gICAgbGV0IGZyb250LCByZXZfYmFjayA9IExpc3Quc3BsaXRfbiBmcm9udCAobGVuZ3RoIC8gMikgaW5cbiAgICB7IGZyb250OyBiYWNrID0gTGlzdC5yZXYgcmV2X2JhY2s7IGxlbmd0aCB9XG47O1xuXG5sZXQgZW1wdHkgPSB7IGZyb250ID0gW107IGJhY2sgPSBbXTsgbGVuZ3RoID0gMCB9XG5sZXQgZW5xdWV1ZV9mcm9udCB0IHggPSBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoICsgMSkgfmZyb250Oih4IDo6IHQuZnJvbnQpIH5iYWNrOnQuYmFja1xubGV0IGVucXVldWVfYmFjayB0IHggPSBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoICsgMSkgfmJhY2s6KHggOjogdC5iYWNrKSB+ZnJvbnQ6dC5mcm9udFxuXG5sZXRbQGNvbGRdIHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSA9XG4gIHJhaXNlX3MgWyVzZXhwIFwiQlVHOiBGZGVxdWU6IHxmcm9udHwgPSAwLCB8YmFja3wgPj0gMlwiXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9iYWNrX2ludmFyaWFudCAoKSA9XG4gIHJhaXNlX3MgWyVzZXhwIFwiQlVHOiBGZGVxdWU6IHxiYWNrfCA9IDAsIHxmcm9udHwgPj0gMlwiXVxuOztcblxubGV0IHBlZWtfZnJvbnRfZXhuIHQgPVxuICBtYXRjaCB0LmZyb250IHdpdGhcbiAgfCB4IDo6IF8gLT4geFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuYmFjayB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIHggXSAtPiB4XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpKVxuOztcblxubGV0IHBlZWtfYmFja19leG4gdCA9XG4gIG1hdGNoIHQuYmFjayB3aXRoXG4gIHwgeCA6OiBfIC0+IHhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmZyb250IHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgeCBdIC0+IHhcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9iYWNrX2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkcm9wX2Zyb250X2V4biB0ID1cbiAgbWF0Y2ggdC5mcm9udCB3aXRoXG4gIHwgXyA6OiB4cyAtPiBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoIC0gMSkgfmZyb250OnhzIH5iYWNrOnQuYmFja1xuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuYmFjayB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIF8gXSAtPiBlbXB0eVxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkcm9wX2JhY2tfZXhuIHQgPVxuICBtYXRjaCB0LmJhY2sgd2l0aFxuICB8IF8gOjogeHMgLT4gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCAtIDEpIH5iYWNrOnhzIH5mcm9udDp0LmZyb250XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5mcm9udCB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIF8gXSAtPiBlbXB0eVxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2JhY2tfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRlcXVldWVfZnJvbnRfZXhuIHQgPSBwZWVrX2Zyb250X2V4biB0LCBkcm9wX2Zyb250X2V4biB0XG5sZXQgZGVxdWV1ZV9iYWNrX2V4biB0ID0gcGVla19iYWNrX2V4biB0LCBkcm9wX2JhY2tfZXhuIHRcblxubGV0IG9wdGlvbmFsIGYgdCA9XG4gIG1hdGNoIGYgdCB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gRW1wdHkgLT4gTm9uZVxuOztcblxubGV0IHBlZWtfZnJvbnQgdCA9IG9wdGlvbmFsIHBlZWtfZnJvbnRfZXhuIHRcbmxldCBwZWVrX2JhY2sgdCA9IG9wdGlvbmFsIHBlZWtfYmFja19leG4gdFxubGV0IGRyb3BfZnJvbnQgdCA9IG9wdGlvbmFsIGRyb3BfZnJvbnRfZXhuIHRcbmxldCBkcm9wX2JhY2sgdCA9IG9wdGlvbmFsIGRyb3BfYmFja19leG4gdFxubGV0IGRlcXVldWVfZnJvbnQgdCA9IG9wdGlvbmFsIGRlcXVldWVfZnJvbnRfZXhuIHRcbmxldCBkZXF1ZXVlX2JhY2sgdCA9IG9wdGlvbmFsIGRlcXVldWVfYmFja19leG4gdFxuXG5sZXQgZW5xdWV1ZSB0IHNpZGUgeCA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBlbnF1ZXVlX2Zyb250IHQgeFxuICB8IGBiYWNrIC0+IGVucXVldWVfYmFjayB0IHhcbjs7XG5cbmxldCBwZWVrIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuOztcblxubGV0IHBlZWtfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gcGVla19iYWNrX2V4biB0XG47O1xuXG5sZXQgZHJvcCB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZHJvcF9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZHJvcF9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZHJvcF9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRyb3BfYmFja19leG4gdFxuOztcblxubGV0IGRlcXVldWUgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFjayB0XG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2tfZXhuIHRcbjs7XG5cbmxldCByZXYgdCA9IHsgdCB3aXRoIGZyb250ID0gdC5iYWNrOyBiYWNrID0gdC5mcm9udCB9XG5cbm1vZHVsZSBBcmJpdHJhcnlfb3JkZXIgPSBzdHJ1Y3RcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5yZXZfYXBwZW5kIHQuZnJvbnQgdC5iYWNrXG4gIGxldCB0b19hcnJheSB0ID0gQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KVxuICBsZXQgdG9fc2VxdWVuY2UgdCA9IFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmZyb250KSAoU2VxdWVuY2Uub2ZfbGlzdCB0LmJhY2spXG5cbiAgbGV0IHN1bSAodHlwZSBhKSAobW9kdWxlIE0gOiBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgICBsZXQgb3BlbiBNIGluXG4gICAgTGlzdC5zdW0gKG1vZHVsZSBNKSB0LmZyb250IH5mICsgTGlzdC5zdW0gKG1vZHVsZSBNKSB0LmJhY2sgfmZcbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9IExpc3QuY291bnQgdC5mcm9udCB+ZiArIExpc3QuY291bnQgdC5iYWNrIH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBMaXN0LmZvcl9hbGwgdC5mcm9udCB+ZiAmJiBMaXN0LmZvcl9hbGwgdC5iYWNrIH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIHQuZnJvbnQgfmYgfHwgTGlzdC5leGlzdHMgdC5iYWNrIH5mXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCB0LmZyb250IHggfHwgTGlzdC5tZW0gfmVxdWFsIHQuYmFjayB4XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgTGlzdC5pdGVyIHQuZnJvbnQgfmY7XG4gICAgTGlzdC5pdGVyIHQuYmFjayB+ZlxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgIExpc3QuZm9sZCB0LmZyb250IH5pbml0IH5mIHw+IGZ1biBpbml0IC0+IExpc3QuZm9sZCB0LmJhY2sgfmluaXQgfmZcbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kIHQuZnJvbnQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LmZpbmQgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kX21hcCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kX21hcCB0LmJhY2sgfmZcbiAgICB8IHNvbWUgLT4gc29tZVxuICA7O1xuXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWF4X2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1heF9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA+PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9XG4gICAgbWF0Y2ggTGlzdC5taW5fZWx0IHQuZnJvbnQgfmNvbXBhcmUsIExpc3QubWluX2VsdCB0LmJhY2sgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSwgb3B0IHwgb3B0LCBOb25lIC0+IG9wdFxuICAgIHwgKFNvbWUgeCBhcyBzb21lX3gpLCAoU29tZSB5IGFzIHNvbWVfeSkgLT5cbiAgICAgIGlmIGNvbXBhcmUgeCB5IDw9IDAgdGhlbiBzb21lX3ggZWxzZSBzb21lX3lcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9jb250YWluZXIgKEYgOiBzaWdcbiAgICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdG9fbGlzdCA9IEYudG9fbGlzdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCAodG9fbGlzdCB0KSB4XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAodG9fbGlzdCB0KSB+aW5pdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsICh0b19saXN0IHQpIH5mXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IExpc3Quc3VtIG0gKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IExpc3QuZmluZF9tYXAgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHRvX2FycmF5IHQgPSBMaXN0LnRvX2FycmF5ICh0b19saXN0IHQpXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1pbl9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IExpc3QubWF4X2VsdCAodG9fbGlzdCB0KSB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5lbmRcblxubW9kdWxlIEZyb250X3RvX2JhY2sgPSBzdHJ1Y3RcbiAgbGV0IG9mX2xpc3QgbGlzdCA9IG1ha2Ugfmxlbmd0aDooTGlzdC5sZW5ndGggbGlzdCkgfmZyb250Omxpc3QgfmJhY2s6W11cbiAgbGV0IHRvX2xpc3QgdCA9IHQuZnJvbnQgQCBMaXN0LnJldiB0LmJhY2tcblxuICBsZXQgdG9fc2VxdWVuY2UgdCA9XG4gICAgU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuZnJvbnQpIChTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiB0LmJhY2spKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgbGV0IGxlbmd0aCwgYmFjayA9XG4gICAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OigwLCBbXSkgfmY6KGZ1biAobGVuZ3RoLCBhY2MpIGEgLT5cbiAgICAgICAgbGVuZ3RoICsgMSwgYSA6OiBhY2MpXG4gICAgaW5cbiAgICBtYWtlIH5sZW5ndGggfmZyb250OltdIH5iYWNrXG4gIDs7XG5cbiAgaW5jbHVkZSBNYWtlX2NvbnRhaW5lciAoc3RydWN0XG4gICAgICBsZXQgdG9fbGlzdCA9IHRvX2xpc3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEJhY2tfdG9fZnJvbnQgPSBzdHJ1Y3RcbiAgbGV0IHRvX2xpc3QgdCA9IHQuYmFjayBAIExpc3QucmV2IHQuZnJvbnRcbiAgbGV0IG9mX2xpc3QgbGlzdCA9IG1ha2Ugfmxlbmd0aDooTGlzdC5sZW5ndGggbGlzdCkgfmJhY2s6bGlzdCB+ZnJvbnQ6W11cblxuICBsZXQgdG9fc2VxdWVuY2UgdCA9XG4gICAgU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuYmFjaykgKFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHQuZnJvbnQpKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgbGV0IGxlbmd0aCwgZnJvbnQgPVxuICAgICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDooMCwgW10pIH5mOihmdW4gKGxlbmd0aCwgYWNjKSBhIC0+XG4gICAgICAgIGxlbmd0aCArIDEsIGEgOjogYWNjKVxuICAgIGluXG4gICAgbWFrZSB+bGVuZ3RoIH5mcm9udCB+YmFjazpbXVxuICA7O1xuXG4gIGluY2x1ZGUgTWFrZV9jb250YWluZXIgKHN0cnVjdFxuICAgICAgbGV0IHRvX2xpc3QgPSB0b19saXN0XG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGUgRnJvbnRfdG9fYmFja1xuXG5sZXQgc2luZ2xldG9uIHggPSBvZl9saXN0IFsgeCBdXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgZm9sZCB0IH5pbml0OmVtcHR5IH5mOihmdW4gdCBlbHQgLT4gZm9sZCAoZiBlbHQpIH5pbml0OnQgfmY6ZW5xdWV1ZV9iYWNrKVxuICAgIDs7XG5cbiAgICBsZXQgcmV0dXJuID0gc2luZ2xldG9uXG5cbiAgICBsZXQgbWFwID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIHsgZnJvbnQgPSBMaXN0Lm1hcCB0LmZyb250IH5mOyBiYWNrID0gTGlzdC5tYXAgdC5iYWNrIH5mOyBsZW5ndGggPSB0Lmxlbmd0aCB9KVxuICAgIDs7XG4gIGVuZClcblxubGV0IGNvbXBhcmUgY21wIHQxIHQyID0gTGlzdC5jb21wYXJlIGNtcCAodG9fbGlzdCB0MSkgKHRvX2xpc3QgdDIpXG5sZXQgZXF1YWwgZXEgdDEgdDIgPSBMaXN0LmVxdWFsIGVxICh0b19saXN0IHQxKSAodG9fbGlzdCB0MilcblxubGV0IGhhc2hfZm9sZF90IGhhc2hfZm9sZF9hIHN0YXRlIHQgPVxuICBmb2xkIH5mOmhhc2hfZm9sZF9hIH5pbml0OihbJWhhc2hfZm9sZDogaW50XSBzdGF0ZSAobGVuZ3RoIHQpKSB0XG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHQgPSBbJXNleHBfb2Y6IGVsdCBsaXN0XSAodG9fbGlzdCB0KVxuICAgIGxldCB0X29mX3NleHAgZWx0X29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKFslb2Zfc2V4cDogZWx0IGxpc3RdIHNleHApXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gTGlzdC50X3NleHBfZ3JhbW1hclxuICAgIGxldCBtYXAgPSBtYXBcblxuICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4M2Y5Njk4Mi00OTkyLTExZTYtOTE5ZC1mYmRkY2ZkY2E1NzZcIlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkZkZXF1ZVwiXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGl0ZXIgdCB+ZiA9IExpc3QuaXRlciAodG9fbGlzdCB0KSB+ZlxuXG4gICAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBuZXh0IGFjYyBuID1cbiAgICAgICAgICAgIGlmIGxlbiA9IG5cbiAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgYXNzZXJ0IChuID0gbGVuZ3RoIGFjYyk7XG4gICAgICAgICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICAgICAgICBsb29wIG5leHQgKGVucXVldWVfYmFjayBhY2MgeCkgKG4gKyAxKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgbmV4dCBlbXB0eSAwXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKFN0YWJsZS5WMSA6IG1vZHVsZSB0eXBlIG9mIFN0YWJsZS5WMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYnVpbGQgfmZyb250IH5iYWNrID1cbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggZnJvbnQgKyBMaXN0Lmxlbmd0aCBiYWNrIGluXG4gICAgbGV0IHQgPSB7IGxlbmd0aDsgZnJvbnQ7IGJhY2sgfSBpblxuICAgIGludmFyaWFudCBpZ25vcmUgdDtcbiAgICB0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBGZGVxdWVcblxubGV0IGVucXVldWUgPSBlbnF1ZXVlX2JhY2tcbmxldCBwZWVrX2V4biA9IHBlZWtfZnJvbnRfZXhuXG5sZXQgcGVlayA9IHBlZWtfZnJvbnRcbmxldCBkZXF1ZXVlX2V4biA9IGRlcXVldWVfZnJvbnRfZXhuXG5sZXQgZGVxdWV1ZSA9IGRlcXVldWVfZnJvbnRcbmxldCBkcm9wX2V4biA9IGRyb3BfZnJvbnRfZXhuXG5sZXQgdG9fc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLnRvX3NlcXVlbmNlXG5sZXQgb2Zfc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLm9mX3NlcXVlbmNlXG5cbigqIERlcHJlY2F0ZWQgYWxpYXNlcyAqKVxubGV0IHRvcCA9IHBlZWtcbmxldCB0b3BfZXhuID0gcGVla19leG5cbmxldCBkaXNjYXJkX2V4biA9IGRyb3BfZXhuXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHZhbHVlIDogJ2Egb3B0aW9uXG4gICAgICA7IG11dGFibGUgc2V0X2F0IDogU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlLlYxLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgICBsZXQgb2ZfZm9ybWF0ICh2MSA6ICdhIEZvcm1hdC50KSA6ICdhIHQgPSB7IHZhbHVlID0gIXYxOyBzZXRfYXQgPSBbJWhlcmVdIH1cbiAgICAgIGxldCB0b19mb3JtYXQgKHQgOiAnYSB0KSA6ICdhIEZvcm1hdC50ID0gcmVmIHQudmFsdWVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2Zvcm1hdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlXG4gICAgICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfZm9ybWF0XG4gICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVW5zdGFibGUgPSBTdGFibGUuVjFcbm9wZW4gU3RhYmxlLlRcblxudHlwZSAnYSB0ID0gJ2EgU3RhYmxlLlQudFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB7IHZhbHVlOyBzZXRfYXQgfSA9XG4gIG1hdGNoIHZhbHVlIHdpdGhcbiAgfCBOb25lIC0+IFslbWVzc2FnZSBcInVuc2V0XCJdXG4gIHwgU29tZSB2YWx1ZSAtPlxuICAgIFslbWVzc2FnZSBcIlwiICh2YWx1ZSA6IGEpIH5zZXRfYXQ6KHNldF9hdCB8PiBTb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmcpXVxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdC52YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IE5vbmU7IHNldF9hdCA9IFslaGVyZV0gfVxuXG5sZXQgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZSA9XG4gIHQudmFsdWUgPC0gU29tZSB2YWx1ZTtcbiAgdC5zZXRfYXQgPC0gaGVyZVxuOztcblxubGV0IHNldF9pZl9ub25lIHQgaGVyZSB2YWx1ZSA9IGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWUgdGhlbiBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlXG5cbmxldCBzZXQgdCBoZXJlIHZhbHVlID1cbiAgaWYgT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxuICB0aGVuIChcbiAgICBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlO1xuICAgIE9rICgpKVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1NldF9vbmNlLnNldF9leG5dIGFscmVhZHkgc2V0XCJcbiAgICAgICAgICB+c2V0dGluZ19hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAgICAgfnByZXZpb3VzbHlfc2V0X2F0Oih0LnNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IHNldF9leG4gdCBoZXJlIHZhbHVlID0gT3JfZXJyb3Iub2tfZXhuIChzZXQgdCBoZXJlIHZhbHVlKVxubGV0IGdldCB0ID0gdC52YWx1ZVxuXG5sZXQgZ2V0X2V4biAodCA6IF8gdCkgaGVyZSA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IFNvbWUgYSAtPiBhXG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1NldF9vbmNlLmdldF9leG5dIHVuc2V0XCIgfmF0OihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgaXNfbm9uZSB0ID0gT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxubGV0IGlzX3NvbWUgdCA9IE9wdGlvbi5pc19zb21lIHQudmFsdWVcbmxldCBpdGVyIHQgfmYgPSBPcHRpb24uaXRlciB0LnZhbHVlIH5mXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgdCA9IGdldF9leG4gdCBbJWhlcmVdXG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBTaGFwZSA9IENvbW1hbmRfc2hhcGUuU3RhYmxlXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgQ29tbWFuZF9pbnRmXG5tb2R1bGUgU2hhcGUgPSBDb21tYW5kX3NoYXBlXG5cbigqIGluIG9yZGVyIHRvIGRlZmluZSBleHBlY3QgdGVzdHMsIHdlIHdhbnQgdG8gcmFpc2UgcmF0aGVyIHRoYW4gZXhpdCBpZiB0aGUgY29kZSBpc1xuICAgcnVubmluZyBpbiB0aGUgdGVzdCBydW5uZXIgcHJvY2VzcyAqKVxubGV0IHJhaXNlX2luc3RlYWRfb2ZfZXhpdCA9XG4gIG1hdGNoIFBweF9pbmxpbmVfdGVzdF9saWIuUnVudGltZS50ZXN0aW5nIHdpdGhcbiAgfCBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXIgLT4gdHJ1ZVxuICB8IGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lciB8IGBOb3RfdGVzdGluZyAtPiBmYWxzZVxuOztcblxuZXhjZXB0aW9uIEV4aXRfY2FsbGVkIG9mIHsgc3RhdHVzIDogaW50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogW3JhaXNlX2luc3RlYWRfb2ZfZXhpdF0tcmVzcGVjdGluZyB3cmFwcGVycyBmb3IgW2V4aXRdIGFuZCBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0ICopXG5pbmNsdWRlIHN0cnVjdFxuICBsZXQgZXhpdCBzdGF0dXMgPVxuICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdCB0aGVuIHJhaXNlIChFeGl0X2NhbGxlZCB7IHN0YXR1cyB9KSBlbHNlIGV4aXQgc3RhdHVzXG4gIDs7XG5cbiAgbW9kdWxlIEV4biA9IHN0cnVjdFxuICAgIGxldCB0b19zdHJpbmcgPSBFeG4udG9fc3RyaW5nXG5cbiAgICBsZXQgaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYgPVxuICAgICAgaWYgcmFpc2VfaW5zdGVhZF9vZl9leGl0XG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IGYgKCkgd2l0aFxuICAgICAgICB8IEV4aXRfY2FsbGVkIHsgc3RhdHVzID0gMCB9IGFzIGV4biAtPiBwcmludF9zIFslc2V4cCAoZXhuIDogZXhuKV0pXG4gICAgICBlbHNlIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZlxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCB1bndvcmRzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHhzXG5sZXQgdW5wYXJhZ3JhcGhzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXFxuXCIgeHNcblxuZXhjZXB0aW9uIEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgb2Ygc3RyaW5nXG5cbmxldCBkaWUgZm10ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gbXNnICgpIC0+IHJhaXNlIChGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZykpIGZtdFxubGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgPSBTaGFwZS5Qcml2YXRlLmhlbHBfc2NyZWVuX2NvbXBhcmVcblxuKCogdW5pdmVyc2FsIG1hcHMgYXJlIHVzZWQgdG8gcGFzcyBhcm91bmQgdmFsdWVzIGJldHdlZW4gZGlmZmVyZW50IGJpdHNcbiAgIG9mIGNvbW1hbmQgbGluZSBwYXJzaW5nIGNvZGUgd2l0aG91dCBoYXZpbmcgYSBodWdlIGltcGFjdCBvbiB0aGVcbiAgIHR5cGVzIGludm9sdmVkXG5cbiAgIDEuIHBhc3NpbmcgdmFsdWVzIGZyb20gcGFyc2VkIGFyZ3MgdG8gY29tbWFuZC1saW5lIGF1dG9jb21wbGV0ZSBmdW5jdGlvbnNcbiAgIDIuIHBhc3Npbmcgc3BlY2lhbCB2YWx1ZXMgdG8gYSBiYXNlIGNvbW1hbmRzIHRoYXQgcmVxdWVzdCB0aGVtIGluIHRoZWlyIHNwZWNcbiAqIGV4cGFuZGVkIHN1YmNvbW1hbmQgcGF0aFxuICogYXJncyBwYXNzZWQgdG8gdGhlIGJhc2UgY29tbWFuZFxuICogaGVscCB0ZXh0IGZvciB0aGUgYmFzZSBjb21tYW5kXG4qKVxubW9kdWxlIEVudiA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaXZfbWFwXG5cbiAgbGV0IGtleV9jcmVhdGUgbmFtZSA9IFVuaXZfbWFwLktleS5jcmVhdGUgfm5hbWUgc2V4cF9vZl9vcGFxdWVcbiAgbGV0IG11bHRpX2FkZCA9IFVuaXZfbWFwLk11bHRpLmFkZFxuICBsZXQgc2V0X3dpdGhfZGVmYXVsdCA9IFVuaXZfbWFwLldpdGhfZGVmYXVsdC5zZXRcbmVuZFxuXG5tb2R1bGUgQXV0b19jb21wbGV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBzdHJpbmcgbGlzdFxuZW5kXG5cbm1vZHVsZSBDb21wbGV0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXV0b19jb21wbGV0ZS50IG9wdGlvblxuXG4gIGxldCBydW5fYW5kX2V4aXQgdCBlbnYgfnBhcnQgOiBuZXZlcl9yZXR1cm5zID1cbiAgICBPcHRpb24uaXRlciB0IH5mOihmdW4gY29tcGxldGlvbnMgLT5cbiAgICAgIExpc3QuaXRlciB+ZjpwcmludF9lbmRsaW5lIChjb21wbGV0aW9ucyBlbnYgfnBhcnQpKTtcbiAgICBleGl0IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJnX3R5cGUgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGV4dHJhX2RvYyA6ICdhIHQgLT4gc3RyaW5nIG9wdGlvbiBsYXp5X3RcbiAgdmFsIGtleSA6ICdhIHQgLT4gJ2EgRW52Lk11bHRpLktleS50IG9wdGlvblxuICB2YWwgY29tcGxldGUgOiAnYSB0IC0+IENvbXBsZXRlci50XG4gIHZhbCBwYXJzZSA6ICdhIHQgLT4gc3RyaW5nIC0+ICgnYSwgZXhuKSByZXN1bHRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAtPiAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG1hcCA6ID9rZXk6J2EgRW52Lk11bHRpLktleS50IC0+ICdiIHQgLT4gZjooJ2IgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX2xhenkgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYSB0IGxhenlfdCAtPiAnYSB0XG5cbiAgdmFsIG9mX21hcFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+ICdhIFN0cmluZy5NYXAudFxuICAgIC0+ICdhIHRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAobW9kdWxlIEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGNvbW1hX3NlcGFyYXRlZFxuICAgIDogID9hbGxvd19lbXB0eTpib29sXG4gICAgLT4gP2tleTonYSBsaXN0IEVudi5NdWx0aS5LZXkudFxuICAgIC0+ID9zdHJpcF93aGl0ZXNwYWNlOmJvb2xcbiAgICAtPiA/dW5pcXVlX3ZhbHVlczpib29sXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIGxpc3QgdFxuXG4gIG1vZHVsZSBFeHBvcnQgOiBzaWdcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgaW50IDogaW50IHRcbiAgICB2YWwgY2hhciA6IGNoYXIgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgYm9vbCA6IGJvb2wgdFxuICAgIHZhbCBkYXRlIDogRGF0ZS50IHRcbiAgICB2YWwgcGVyY2VudCA6IFBlcmNlbnQudCB0XG4gICAgdmFsIGhvc3RfYW5kX3BvcnQgOiBIb3N0X2FuZF9wb3J0LnQgdFxuICAgIHZhbCBzZXhwIDogU2V4cC50IHRcbiAgICB2YWwgc2V4cF9jb252IDogP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudCAtPiAoU2V4cC50IC0+ICdhKSAtPiAnYSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBjb21wbGV0ZSA6IF8gdCAtPiBBdXRvX2NvbXBsZXRlLnRcbiAgICB2YWwgcGFyc2UgOiAnYSB0IC0+IHN0cmluZyAtPiAnYSBPcl9lcnJvci50XG4gIGVuZFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwYXJzZSA6IHN0cmluZyAtPiAnYVxuICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgIDsga2V5IDogJ2EgVW5pdl9tYXAuTXVsdGkuS2V5LnQgb3B0aW9uXG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBwYXJzZSB0IHMgPSBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiB0LnBhcnNlIHMpXG4gIGxldCBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IHBhcnNlIH5leHRyYV9kb2MgPSB7IHBhcnNlOyBrZXk7IGNvbXBsZXRlOyBleHRyYV9kb2MgfVxuXG4gIGxldCBjcmVhdGUgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nID1cbiAgICBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IG9mX3N0cmluZyB+ZXh0cmFfZG9jOihMYXp5LmZyb21fdmFsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IG1hcCA/a2V5IHQgfmYgPSB7IHQgd2l0aCBrZXk7IHBhcnNlID0gKGZ1biBzIC0+IGYgKHQucGFyc2UgcykpIH1cblxuICBsZXQgb2ZfbGF6eSA/a2V5IHQgPVxuICAgIGxldCBwYXJzZSBzdHIgPSAoZm9yY2UgdCkucGFyc2Ugc3RyIGluXG4gICAgbGV0IGNvbXBsZXRlIGVudiB+cGFydCA9XG4gICAgICBtYXRjaCAoZm9yY2UgdCkuY29tcGxldGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFNlZSBbcnVuX2FuZF9leGl0XSAtIG5vIGNvbXBsZXRpb25zIGlzIGVxdWl2YWxlbnQgdG8gbm90IGhhdmluZyBhXG4gICAgICAgICAgIFtDb21wbGV0ZV0uICopXG4gICAgICAgIFtdXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgZW52IH5wYXJ0XG4gICAgaW5cbiAgICBsZXQgZXh0cmFfZG9jID0gTGF6eS5iaW5kIHQgfmY6ZXh0cmFfZG9jIGluXG4gICAgeyBwYXJzZTsgY29tcGxldGUgPSBTb21lIGNvbXBsZXRlOyBrZXk7IGV4dHJhX2RvYyB9XG4gIDs7XG5cbiAgbGV0IHN0cmluZyA9IGNyZWF0ZSBGbi5pZFxuICBsZXQgaW50ID0gY3JlYXRlIEludC5vZl9zdHJpbmdcbiAgbGV0IGNoYXIgPSBjcmVhdGUgQ2hhci5vZl9zdHJpbmdcbiAgbGV0IGZsb2F0ID0gY3JlYXRlIEZsb2F0Lm9mX3N0cmluZ1xuICBsZXQgZGF0ZSA9IGNyZWF0ZSBEYXRlLm9mX3N0cmluZ1xuICBsZXQgcGVyY2VudCA9IGNyZWF0ZSBQZXJjZW50Lm9mX3N0cmluZ1xuICBsZXQgaG9zdF9hbmRfcG9ydCA9IGNyZWF0ZSBIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZ1xuICBsZXQgc2V4cCA9IGNyZWF0ZSBTZXhwLm9mX3N0cmluZ1xuICBsZXQgc2V4cF9jb252ID9jb21wbGV0ZSBvZl9zZXhwID0gY3JlYXRlID9jb21wbGV0ZSAoZnVuIHMgLT4gb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcgcykpXG5cbiAgbGV0IGFzc29jaWF0aXZlXG4gICAgICAgID8oYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyA9IHRydWUpXG4gICAgICAgID8obGlzdF92YWx1ZXNfaW5faGVscCA9IHRydWUpXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgfmNhc2Vfc2Vuc2l0aXZlXG4gICAgICAgIGFsaXN0XG4gICAgPVxuICAgIGxldCBvcGVuIHN0cnVjdFxuICAgICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIHZhbCBpc19wcmVmaXggOiBzdHJpbmcgLT4gcHJlZml4OnN0cmluZyAtPiBib29sXG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBUIDpcbiAgICAgICAgICAgIHsgY21wIDogKG1vZHVsZSBTIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgICAgICAgICAgOyBtYXAgOiAoc3RyaW5nLCAnYSwgJ2NtcCkgTWFwLnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC0+ICdhIHRcbiAgICBlbmQgaW5cbiAgICBsZXQgKFQgeyBjbXAgPSAobW9kdWxlIFMpOyBtYXAgfSkgPVxuICAgICAgbGV0IG1ha2VfbWFwX3JhaXNlX2R1cGxpY2F0ZV9rZXlcbiAgICAgICAgICAgICh0eXBlIGNtcClcbiAgICAgICAgICAgIChtb2R1bGUgUyA6IFMgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgICAgIGFsaXN0XG4gICAgICAgID1cbiAgICAgICAgbWF0Y2ggTWFwLm9mX2FsaXN0IChtb2R1bGUgUykgYWxpc3Qgd2l0aFxuICAgICAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgICAgIHwgYER1cGxpY2F0ZV9rZXkgKF8gOiBTLnQpIC0+XG4gICAgICAgICAgbGV0IGR1cGxpY2F0ZV9rZXlzID1cbiAgICAgICAgICAgIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGssIChfIDogJ2EpKSAtPiBrLCBrKVxuICAgICAgICAgICAgfD4gTWFwLm9mX2FsaXN0X211bHRpIChtb2R1bGUgUylcbiAgICAgICAgICAgIHw+IE1hcC5maWx0ZXIgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gfCBbIF8gXSAtPiBmYWxzZVxuICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfIC0+IHRydWUpXG4gICAgICAgICAgICB8PiBNYXAuZGF0YVxuICAgICAgICAgIGluXG4gICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLm9mX2FsaXN0X2V4blwiIChkdXBsaWNhdGVfa2V5cyA6IHN0cmluZyBsaXN0IGxpc3QpXVxuICAgICAgaW5cbiAgICAgIGxldCBtYWtlIGNtcCA9IFQgeyBjbXA7IG1hcCA9IG1ha2VfbWFwX3JhaXNlX2R1cGxpY2F0ZV9rZXkgY21wIGFsaXN0IH0gaW5cbiAgICAgIGlmIGNhc2Vfc2Vuc2l0aXZlIHRoZW4gbWFrZSAobW9kdWxlIFN0cmluZykgZWxzZSBtYWtlIChtb2R1bGUgU3RyaW5nLkNhc2VsZXNzKVxuICAgIGluXG4gICAgbGV0IGNvbXBsZXRlIHVuaXZfbWFwIH5wYXJ0OnByZWZpeCA9XG4gICAgICBtYXRjaCBhdXRvX2NvbXBsZXRlIHdpdGhcbiAgICAgIHwgU29tZSBjb21wbGV0ZSAtPiBjb21wbGV0ZSB1bml2X21hcCB+cGFydDpwcmVmaXhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKE1hcC50b19hbGlzdCBtYXApIH5mOihmdW4gKG5hbWUsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggUy5pc19wcmVmaXggbmFtZSB+cHJlZml4IHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICgqIEJhc2ggY29tcGxldGlvbiB3aWxsIG5vdCBhY2NlcHQgW0Zvb10gYXMgYSBjb21wbGV0aW9uIGZvciBbZl0uIFNvIHdlIG5lZWRcbiAgICAgICAgICAgICAgIHRvIG1hdGNoIHRoZSBjYXBpdGFsaXphdGlvbiBnaXZlbi4gKilcbiAgICAgICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3VibyBuYW1lIH5wb3M6KFN0cmluZy5sZW5ndGggcHJlZml4KSBpblxuICAgICAgICAgICAgbGV0IG5hbWUgPSBwcmVmaXggXiBzdWZmaXggaW5cbiAgICAgICAgICAgIFNvbWUgbmFtZSlcbiAgICBpblxuICAgIGxldCBmaW5kIGFyZyA9XG4gICAgICBtYXRjaCBNYXAuZmluZCBtYXAgYXJnIHdpdGhcbiAgICAgIHwgU29tZSBfIGFzIHMgLT4gc1xuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBhY2NlcHRfdW5pcXVlX3ByZWZpeGVzIHdpdGhcbiAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICBNYXAudG9fYWxpc3QgbWFwXG4gICAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKG5hbWUsIF8pIC0+IFMuaXNfcHJlZml4IG5hbWUgfnByZWZpeDphcmcpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgKF9zaW5nbGV0b25fa2V5LCB2KSBdIC0+IFNvbWUgdlxuICAgICAgICAgICAgfCBbXSB8IF8gOjogXyA6OiBfIC0+XG4gICAgICAgICAgICAgICgqIEluIHRoZSB0d28tb3ItbW9yZSBjYXNlIHdlIGNvdWxkIHByb3ZpZGUgZmlsdGVyZWQgaGVscCB0ZXh0LCBidXQgaXQnc1xuICAgICAgICAgICAgICAgICBtb3JlIGdlbmVyYWxseSB1c2VmdWwgdG8gbGlzdCBhbGwgdGhlIG9wdGlvbnMsIHdoaWNoIHdlIGRvIGJlbG93LiAqKVxuICAgICAgICAgICAgICBOb25lKSlcbiAgICBpblxuICAgIGNyZWF0ZSdcbiAgICAgIH5leHRyYV9kb2M6XG4gICAgICAgIChsYXp5XG4gICAgICAgICAgKGlmIGxpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IHZhbHVlcyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKE1hcC5rZXlzIG1hcCkgaW5cbiAgICAgICAgICAgICBTb21lIFslc3RyaW5nIFwiKGNhbiBiZTogJXt2YWx1ZXN9KVwiXSlcbiAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgID9rZXlcbiAgICAgIH5jb21wbGV0ZVxuICAgICAgKGZ1biBhcmcgLT5cbiAgICAgICAgIG1hdGNoIGZpbmQgYXJnIHdpdGhcbiAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgdmFsaWRfYXJndW1lbnRzX2V4dHJhID1cbiAgICAgICAgICAgICBpZiBjYXNlX3NlbnNpdGl2ZSB0aGVuIFwiXCIgZWxzZSBcIiAoY2FzZSBpbnNlbnNpdGl2ZSlcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgICBcInZhbGlkIGFyZ3VtZW50cyVzOiB7JXN9XCJcbiAgICAgICAgICAgICB2YWxpZF9hcmd1bWVudHNfZXh0cmFcbiAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChNYXAua2V5cyBtYXApKVxuICAgICAgICAgICAgICgpKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG5cbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgYWxpc3RcbiAgICA9XG4gICAgYXNzb2NpYXRpdmVcbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIH5jYXNlX3NlbnNpdGl2ZVxuICAgICAgYWxpc3RcbiAgOztcblxuICBsZXQgb2ZfbWFwXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIG1hcFxuICAgID1cbiAgICBvZl9hbGlzdF9leG5cbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKE1hcC50b19hbGlzdCBtYXApXG4gIDs7XG5cbiAgbGV0IGVudW1lcmF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgKG1vZHVsZSBFIDogRW51bWVyYWJsZV9zdHJpbmdhYmxlIHdpdGggdHlwZSB0ID0gdClcbiAgICA9XG4gICAgb2ZfYWxpc3RfZXhuXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChsZXQlbWFwLkxpc3QgdCA9IEUuYWxsIGluXG4gICAgICAgRS50b19zdHJpbmcgdCwgdClcbiAgOztcblxuICBsZXQgZW51bWVyYXRlZF9zZXhwYWJsZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICAobW9kdWxlIEUgOiBFbnVtZXJhYmxlX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gdClcbiAgICA9XG4gICAgZW51bWVyYXRlZFxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEVcblxuICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyBbJXNleHAgKHQgOiBFLnQpXVxuICAgICAgZW5kKVxuICA7O1xuXG4gIGxldCBib29sID0gZW51bWVyYXRlZCB+bGlzdF92YWx1ZXNfaW5faGVscDpmYWxzZSAobW9kdWxlIEJvb2wpXG5cbiAgbGV0IGNvbW1hX3NlcGFyYXRlZFxuICAgICAgICA/KGFsbG93X2VtcHR5ID0gZmFsc2UpXG4gICAgICAgID9rZXlcbiAgICAgICAgPyhzdHJpcF93aGl0ZXNwYWNlID0gZmFsc2UpXG4gICAgICAgID8odW5pcXVlX3ZhbHVlcyA9IGZhbHNlKVxuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBzdHJpcCA9IGlmIHN0cmlwX3doaXRlc3BhY2UgdGhlbiBmdW4gc3RyIC0+IFN0cmluZy5zdHJpcCBzdHIgZWxzZSBGbi5pZCBpblxuICAgIGxldCBjb21wbGV0ZSA9XG4gICAgICBPcHRpb24ubWFwIHQuY29tcGxldGUgfmY6KGZ1biBjb21wbGV0ZV9lbHQgZW52IH5wYXJ0IC0+XG4gICAgICAgIGxldCBwcmVmaXhlcywgc3VmZml4ID1cbiAgICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcGFydCB+b246JywnIHw+IExpc3QucmV2IHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFtdLCBwYXJ0XG4gICAgICAgICAgfCBoZCA6OiB0bCAtPiBMaXN0LnJldiB0bCwgaGRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlzX2FsbG93ZWQgPVxuICAgICAgICAgIGlmIG5vdCB1bmlxdWVfdmFsdWVzXG4gICAgICAgICAgdGhlbiBmdW4gKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBzZWVuX2FscmVhZHkgPSBwcmVmaXhlcyB8PiBMaXN0Lm1hcCB+ZjpzdHJpcCB8PiBTdHJpbmcuU2V0Lm9mX2xpc3QgaW5cbiAgICAgICAgICAgIGZ1biBjaG9pY2UgLT4gbm90IChTZXQubWVtIHNlZW5fYWxyZWFkeSAoc3RyaXAgY2hvaWNlKSkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGNvbXBsZXRlX2VsdCBlbnYgfnBhcnQ6c3VmZml4KSB+ZjooZnVuIGNob2ljZSAtPlxuICAgICAgICAgICAgICAobm90IChTdHJpbmcubWVtIGNob2ljZSAnLCcpKSAmJiBpc19hbGxvd2VkIGNob2ljZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgKCogSWYgdGhlcmUgaXMgZXhhY3RseSBvbmUgY2hvaWNlIHRvIGF1dG8tY29tcGxldGUsIGFkZCBhIHNlY29uZCBjaG9pY2Ugd2l0aFxuICAgICAgICAgICAgIGEgdHJhaWxpbmcgY29tbWEgc28gdGhhdCBhdXRvLWNvbXBsZXRpb24gd2lsbCBnbyB0byB0aGUgZW5kIGJ1dCBiYXNoXG4gICAgICAgICAgICAgd29uJ3QgYWRkIGEgc3BhY2UuICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY2hvaWNlcywgb3IgYSBzaW5nbGUgY2hvaWNlXG4gICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGZpbmFsLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIGR1bW15IG9wdGlvbi4gKilcbiAgICAgICAgICB8IFsgY2hvaWNlIF0gLT4gWyBjaG9pY2U7IGNob2ljZSBeIFwiLFwiIF1cbiAgICAgICAgICB8IGNob2ljZXMgLT4gY2hvaWNlc1xuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCBjaG9pY2VzIH5mOihmdW4gY2hvaWNlIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChwcmVmaXhlcyBAIFsgY2hvaWNlIF0pKSlcbiAgICBpblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBzdHJpbmcgPSBzdHJpcCBzdHJpbmcgaW5cbiAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYWxsb3dfZW1wdHlcbiAgICAgICAgdGhlbiBbXVxuICAgICAgICBlbHNlIGZhaWx3aXRoIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLmNvbW1hX3NlcGFyYXRlZDogZW1wdHkgbGlzdCBub3QgYWxsb3dlZFwiXG4gICAgICBlbHNlIExpc3QubWFwIChTdHJpbmcuc3BsaXQgc3RyaW5nIH5vbjonLCcpIH5mOihmdW4gc3RyIC0+IHQucGFyc2UgKHN0cmlwIHN0cikpXG4gICAgaW5cbiAgICBjcmVhdGUgP2tleSA/Y29tcGxldGUgb2Zfc3RyaW5nXG4gIDs7XG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIGxldCBzdHJpbmcgPSBzdHJpbmdcbiAgICBsZXQgaW50ID0gaW50XG4gICAgbGV0IGNoYXIgPSBjaGFyXG4gICAgbGV0IGZsb2F0ID0gZmxvYXRcbiAgICBsZXQgYm9vbCA9IGJvb2xcbiAgICBsZXQgZGF0ZSA9IGRhdGVcbiAgICBsZXQgcGVyY2VudCA9IHBlcmNlbnRcbiAgICBsZXQgaG9zdF9hbmRfcG9ydCA9IGhvc3RfYW5kX3BvcnRcbiAgICBsZXQgc2V4cCA9IHNleHBcbiAgICBsZXQgc2V4cF9jb252ID0gc2V4cF9jb252XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCBjb21wbGV0ZSB0ID1cbiAgICAgIG1hdGNoIHQuY29tcGxldGUgd2l0aFxuICAgICAgfCBTb21lIGYgLT4gZlxuICAgICAgfCBOb25lIC0+IGZ1biBfIH5wYXJ0Ol8gLT4gW11cbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlIHQgc3RyID0gcGFyc2UgdCBzdHIgfD4gT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRmxhZyA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuTnVtX29jY3VycmVuY2VzLnQgPVxuICAgICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgdG9faGVscF9zdHJpbmcgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdcblxuICAgIGxldCB0b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gXyB9IGZsYWdfbmFtZSA9XG4gICAgICB0b19oZWxwX3N0cmluZyB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSA9IHRydWUgfSB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIGxldCBhbnkgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9sZWFzdF9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9tb3N0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gICAgbGV0IGV4YWN0bHlfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IHRydWU7IGF0X21vc3Rfb25jZSA9IHRydWUgfVxuICBlbmRcblxuICB0eXBlIGFjdGlvbiA9XG4gICAgfCBOb19hcmcgb2YgKEVudi50IC0+IEVudi50KVxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBvZiAoRW52LnQgLT4gc3RyaW5nKVxuICAgIHwgQXJnIG9mIChFbnYudCAtPiBzdHJpbmcgLT4gRW52LnQpICogQ29tcGxldGVyLnRcbiAgICB8IFJlc3Qgb2YgKEVudi50IC0+IHN0cmluZyBsaXN0IC0+IEVudi50KVxuXG4gIG1vZHVsZSBJbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIDogc3RyaW5nIGxpc3RcbiAgICAgICgqIFthbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscF0gYXJlIGFsaWFzZXMgdGhhdCBkb24ndCBzaG93IHVwIGluIC1oZWxwIG91dHB1dC5cbiAgICAgICAgIEN1cnJlbnRseSB0aGV5J3JlIG9ubHkgdXNlZCBmb3IgZG91YmxlLWRhc2ggYnVpbHQtaW4gZmxhZ3MgbGlrZSAtLWhlbHAgYW5kXG4gICAgICAgICAtLXZlcnNpb24uICopXG4gICAgICA7IGFjdGlvbiA6IGFjdGlvblxuICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICAgIDsgY2hlY2tfYXZhaWxhYmxlIDogRW52LnQgLT4gdW5pdFxuICAgICAgOyBuYW1lX21hdGNoaW5nIDogWyBgUHJlZml4IHwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQgXVxuICAgICAgfVxuXG4gICAgbGV0IHdyYXBfaWZfb3B0aW9uYWwgdCBmbGFnX25hbWUgPVxuICAgICAgTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nIHQubnVtX29jY3VycmVuY2VzIH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbW9kdWxlIERvYyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBhcmdfZG9jIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICB9XG5cbiAgICAgIGxldCBwYXJzZSB+YWN0aW9uIH5kb2MgPVxuICAgICAgICBsZXQgYXJnX2RvYywgZG9jID1cbiAgICAgICAgICBtYXRjaCAoYWN0aW9uIDogYWN0aW9uKSwgU3RyaW5nLmxzcGxpdDIgZG9jIH5vbjonICcgd2l0aFxuICAgICAgICAgIHwgKE5vX2FyZyBfIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBfKSwgXyAtPiBOb25lLCBkb2NcbiAgICAgICAgICB8IEFyZyBfLCAoTm9uZSB8IFNvbWUgKFwiXCIsIF8pKSAtPiBTb21lIFwiX1wiLCBkb2NcbiAgICAgICAgICB8IFJlc3QgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCAoQXJnIF8gfCBSZXN0IF8pLCBTb21lIChhcmcsIGRvYykgLT4gU29tZSBhcmcsIGRvY1xuICAgICAgICBpblxuICAgICAgICB7IGRvYyA9IFN0cmluZy5zdHJpcCBkb2M7IGFyZ19kb2MgfVxuICAgICAgOztcblxuICAgICAgbGV0IGNvbmNhdCB+bmFtZSB+YXJnX2RvYyA9XG4gICAgICAgIG1hdGNoIGFyZ19kb2Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbmFtZVxuICAgICAgICB8IFNvbWUgYXJnX2RvYyAtPiBuYW1lIF4gXCIgXCIgXiBhcmdfZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgeCA9XG4gICAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHQubnVtX29jY3VycmVuY2VzIHhcbiAgICAgIDs7XG5cbiAgICAgICgqIGZsYWcgaGVscCBpbiB0aGUgZm9ybWF0IG9mIHRoZSBvbGQgY29tbWFuZC4gdXNlZCBmb3IgaW5qZWN0aW9uICopXG4gICAgICBsZXQgaGVscFxuICAgICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICAgIDsgZG9jXG4gICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA9IF9cbiAgICAgICAgICAgICB9IGFzIHQpXG4gICAgICAgID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBkb2MgfnByZWZpeDpcIiBcIlxuICAgICAgICB0aGVuXG4gICAgICAgICAgKG5hbWUsIFN0cmluZy5sc3RyaXAgZG9jKVxuICAgICAgICAgIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biB4IC0+IHgsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICAgICAgKHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYyksIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgKCB3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWU6eCB+YXJnX2RvYylcbiAgICAgICAgICAgICwgc3ByaW50ZiBcInNhbWUgYXMgXFxcIiVzXFxcIlwiIG5hbWUgKSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFsaWduXG4gICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgIH0gYXMgdClcbiAgICAgIDogU2hhcGUuRmxhZ19pbmZvLnRcbiAgICAgID1cbiAgICAgIGxldCB7IERvYy5hcmdfZG9jOyBkb2MgfSA9IERvYy5wYXJzZSB+YWN0aW9uIH5kb2MgaW5cbiAgICAgIGxldCBuYW1lID0gd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lIH5hcmdfZG9jKSBpblxuICAgICAgeyBuYW1lOyBkb2M7IGFsaWFzZXMgfVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIGZsYWdzID1cbiAgICAgIG1hdGNoIFN0cmluZy5NYXAub2ZfYWxpc3QgKExpc3QubWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUsIGZsYWcpKSB3aXRoXG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGZsYWcgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3MgbmFtZWQgJXNcIiBmbGFnICgpXG4gICAgICB8IGBPayBtYXAgLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUgOjogZmxhZy5hbGlhc2VzKVxuICAgICAgICB8PiBMaXN0LmZpbmRfYV9kdXAgfmNvbXBhcmU6WyVjb21wYXJlOiBzdHJpbmddXG4gICAgICAgIHw+IE9wdGlvbi5pdGVyIH5mOihmdW4geCAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBvciBhbGlhc2VzIG5hbWVkICVzXCIgeCAoKSk7XG4gICAgICAgIG1hcFxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHsgYWN0aW9uIDogYWN0aW9uXG4gICAgOyByZWFkIDogRW52LnQgLT4gJ2FcbiAgICA7IG51bV9vY2N1cnJlbmNlcyA6IE51bV9vY2N1cnJlbmNlcy50XG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cblxuICB0eXBlICdhIHQgPSBzdHJpbmcgLT4gJ2Egc3RhdGVcblxuICBsZXQgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIG51bV9vY2N1cnJlbmNlcyA9XG4gICAgeyByZWFkXG4gICAgOyBudW1fb2NjdXJyZW5jZXNcbiAgICA7IGFjdGlvbiA9XG4gICAgICAgIChsZXQgdXBkYXRlIGVudiBhcmcgPVxuICAgICAgICAgICBtYXRjaCBBcmdfdHlwZS5wYXJzZSBhcmdfdHlwZSBhcmcgd2l0aFxuICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgIGRpZSBcImZhaWxlZCB0byBwYXJzZSAlcyB2YWx1ZSAlUy5cXG4lc1wiIG5hbWUgYXJnIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICAgICAgICAgfCBPayBhcmcgLT5cbiAgICAgICAgICAgICBsZXQgZW52ID0gd3JpdGUgZW52IGFyZyBpblxuICAgICAgICAgICAgIChtYXRjaCBBcmdfdHlwZS5rZXkgYXJnX3R5cGUgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZW52XG4gICAgICAgICAgICAgIHwgU29tZSBrZXkgLT4gRW52Lm11bHRpX2FkZCBlbnYgfmtleSB+ZGF0YTphcmcpXG4gICAgICAgICBpblxuICAgICAgICAgQXJnICh1cGRhdGUsIEFyZ190eXBlLmNvbXBsZXRlIGFyZ190eXBlKSlcbiAgICA7IGV4dHJhX2RvYyA9IEFyZ190eXBlLmV4dHJhX2RvYyBhcmdfdHlwZVxuICAgIH1cbiAgOztcblxuICBsZXQgbWFwX2ZsYWcgdCB+ZiBpbnB1dCA9XG4gICAgbGV0IHsgYWN0aW9uOyByZWFkOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gdCBpbnB1dCBpblxuICAgIHsgYWN0aW9uOyByZWFkID0gKGZ1biBlbnYgLT4gZiAocmVhZCBlbnYpKTsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfVxuICA7O1xuXG4gIGxldCB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyA9XG4gICAgRW52LnVwZGF0ZSBlbnYga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGFyZ1xuICAgICAgfCBTb21lIF8gLT4gZGllIFwiZmxhZyAlcyBwYXNzZWQgbW9yZSB0aGFuIG9uY2VcIiBuYW1lICgpKVxuICA7O1xuXG4gIGxldCByZXF1aXJlZF92YWx1ZSA/ZGVmYXVsdCBhcmdfdHlwZSBuYW1lIG51bV9vY2N1cnJlbmNlcyA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogX10gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IGtleSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGRlZmF1bHQgd2l0aFxuICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgfCBOb25lIC0+IGRpZSBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lICgpKVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBudW1fb2NjdXJyZW5jZXNcbiAgOztcblxuICBsZXQgcmVxdWlyZWQgYXJnX3R5cGUgbmFtZSA9IHJlcXVpcmVkX3ZhbHVlIGFyZ190eXBlIG5hbWUgTnVtX29jY3VycmVuY2VzLmV4YWN0bHlfb25jZVxuXG4gIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgZGVmYXVsdCBhcmdfdHlwZSBuYW1lID1cbiAgICByZXF1aXJlZF92YWx1ZSB+ZGVmYXVsdCBhcmdfdHlwZSBuYW1lIE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgOztcblxuICBsZXQgb3B0aW9uYWwgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogX10gaW5cbiAgICBsZXQgcmVhZCBlbnYgPSBFbnYuZmluZCBlbnYga2V5IGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19nZW5lcmFsIH5rZXlfdmFsdWUgfmRlcHJlY2F0ZWRfaG9vayBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiB1bml0XSBpblxuICAgIGxldCByZWFkIGVudiA9IEVudi5tZW0gZW52IGtleSBpblxuICAgIGxldCB3cml0ZSBlbnYgPVxuICAgICAgaWYgRW52Lm1lbSBlbnYga2V5XG4gICAgICB0aGVuIGRpZSBcImZsYWcgJXMgcGFzc2VkIG1vcmUgdGhhbiBvbmNlXCIgbmFtZSAoKVxuICAgICAgZWxzZSBFbnYuc2V0IGVudiB+a2V5IH5kYXRhOigpXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uIGVudiA9XG4gICAgICBsZXQgZW52ID1cbiAgICAgICAgT3B0aW9uLmZvbGQga2V5X3ZhbHVlIH5pbml0OmVudiB+ZjooZnVuIGVudiAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgICBFbnYuc2V0X3dpdGhfZGVmYXVsdCBlbnYgfmtleSB+ZGF0YTp2YWx1ZSlcbiAgICAgIGluXG4gICAgICB3cml0ZSBlbnZcbiAgICBpblxuICAgIGxldCBhY3Rpb24gPVxuICAgICAgbWF0Y2ggZGVwcmVjYXRlZF9ob29rIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGZ1biBlbnYgLT5cbiAgICAgICAgICBsZXQgZW52ID0gYWN0aW9uIGVudiBpblxuICAgICAgICAgIGYgKCk7XG4gICAgICAgICAgZW52XG4gICAgaW5cbiAgICB7IHJlYWRcbiAgICA7IGFjdGlvbiA9IE5vX2FyZyBhY3Rpb25cbiAgICA7IG51bV9vY2N1cnJlbmNlcyA9IE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9fYXJnIG5hbWUgPSBub19hcmdfZ2VuZXJhbCBuYW1lIH5rZXlfdmFsdWU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcblxuICBsZXQgbm9fYXJnX3JlZ2lzdGVyIH5rZXkgfnZhbHVlIG5hbWUgPVxuICAgIG5vX2FyZ19nZW5lcmFsIG5hbWUgfmtleV92YWx1ZTooU29tZSAoa2V5LCB2YWx1ZSkpIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfc29tZSB2YWx1ZSA9XG4gICAgbWFwX2ZsYWcgbm9fYXJnIH5mOihmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IFNvbWUgdmFsdWVcbiAgICAgIHwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBsZXQgbGlzdGVkIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6W10gfm5hbWUgWyVzZXhwX29mOiBfIGxpc3RdIGluXG4gICAgbGV0IHJlYWQgZW52ID0gTGlzdC5yZXYgKEVudi5XaXRoX2RlZmF1bHQuZmluZCBlbnYga2V5KSBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIGxpc3QgLT4gYXJnIDo6IGxpc3QpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hbnlcbiAgOztcblxuICBsZXQgb25lX29yX21vcmVfYXNfcGFpciBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID1cbiAgICAgIEVudi5XaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDpGcXVldWUuZW1wdHkgfm5hbWUgWyVzZXhwX29mOiBfIEZxdWV1ZS50XVxuICAgIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEZxdWV1ZS50b19saXN0IChFbnYuV2l0aF9kZWZhdWx0LmZpbmQgZW52IGtleSkgd2l0aFxuICAgICAgfCBmaXJzdCA6OiByZXN0IC0+IGZpcnN0LCByZXN0XG4gICAgICB8IFtdIC0+IGRpZSBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lICgpXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9XG4gICAgICBFbnYuV2l0aF9kZWZhdWx0LmNoYW5nZSBlbnYga2V5IH5mOihmdW4gcSAtPiBGcXVldWUuZW5xdWV1ZSBxIGFyZylcbiAgICBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZVxuICA7O1xuXG4gIGxldFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA3XSBVc2UgW29uZV9vcl9tb3JlX2FzX3BhaXJdIG9yIFtvbmVfb3JfbW9yZV9hc19saXN0XVwiXSBvbmVfb3JfbW9yZVxuICAgID1cbiAgICBvbmVfb3JfbW9yZV9hc19wYWlyXG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgYXJnX3R5cGUgPVxuICAgIG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgfD4gbWFwX2ZsYWcgfmY6KGZ1biAoeCwgeHMpIC0+IHggOjogeHMpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5lcmFsIH5kZXByZWNhdGVkX2hvb2sgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogc3RyaW5nIGxpc3RdIGluXG4gICAgbGV0IGFjdGlvbiBlbnYgY21kX2xpbmUgPSBFbnYuc2V0IGVudiB+a2V5IH5kYXRhOmNtZF9saW5lIGluXG4gICAgbGV0IHJlYWQgZW52ID0gRW52LmZpbmQgZW52IGtleSBpblxuICAgIGxldCBhY3Rpb24gPVxuICAgICAgbWF0Y2ggZGVwcmVjYXRlZF9ob29rIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGZ1biBlbnYgeCAtPlxuICAgICAgICAgIGYgeDtcbiAgICAgICAgICBhY3Rpb24gZW52IHhcbiAgICBpblxuICAgIHsgYWN0aW9uID0gUmVzdCBhY3Rpb25cbiAgICA7IHJlYWRcbiAgICA7IG51bV9vY2N1cnJlbmNlcyA9IE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9fYXJnX2Fib3J0IH5leGl0IF9uYW1lID1cbiAgICB7IGFjdGlvbiA9IE5vX2FyZyAoZnVuIF8gLT4gbmV2ZXJfcmV0dXJucyAoZXhpdCAoKSkpXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyByZWFkID0gKGZ1biBfIC0+ICgpKVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBlc2NhcGUgbmFtZSA9IGVzY2FwZV9nZW5lcmFsIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSBuYW1lXG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fYXJnIH5ob29rIG5hbWUgPVxuICAgICAgbm9fYXJnX2dlbmVyYWwgfmRlcHJlY2F0ZWRfaG9vazooU29tZSBob29rKSB+a2V5X3ZhbHVlOk5vbmUgbmFtZVxuICAgIDs7XG5cbiAgICBsZXQgZXNjYXBlIH5ob29rID0gZXNjYXBlX2dlbmVyYWwgfmRlcHJlY2F0ZWRfaG9vazooU29tZSBob29rKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGF0aCA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBjcmVhdGUgOiBwYXRoX3RvX2V4ZTpzdHJpbmcgLT4gdFxuICB2YWwgb2ZfcGFydHMgOiBzdHJpbmcgbGlzdCAtPiB0XG4gIHZhbCBhcHBlbmQgOiB0IC0+IHN1YmNvbW1hbmQ6c3RyaW5nIC0+IHRcbiAgdmFsIHJlcGxhY2VfZmlyc3QgOiB0IC0+IGZyb206c3RyaW5nIC0+IHRvXzpzdHJpbmcgLT4gdFxuICB2YWwgcGFydHMgOiB0IC0+IHN0cmluZyBsaXN0XG4gIHZhbCBwYXJ0c19leGVfYmFzZW5hbWUgOiB0IC0+IHN0cmluZyBsaXN0XG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2RvdHMgOiB0IC0+IHN0cmluZ1xuICB2YWwgcG9wX2hlbHAgOiB0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0XG5cbiAgbGV0IGVtcHR5ID0gW11cbiAgbGV0IGNyZWF0ZSB+cGF0aF90b19leGUgPSBbIHBhdGhfdG9fZXhlIF1cbiAgbGV0IG9mX3BhcnRzIHBhcnRzID0gTGlzdC5yZXYgcGFydHNcbiAgbGV0IGFwcGVuZCB0IH5zdWJjb21tYW5kID0gc3ViY29tbWFuZCA6OiB0XG4gIGxldCBwYXJ0cyA9IExpc3QucmV2XG5cbiAgbGV0IHBhcnRzX2V4ZV9iYXNlbmFtZSB0ID1cbiAgICBtYXRjaCBMaXN0LnJldiB0IHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBoZCA6OiB0bCAtPiBGaWxlbmFtZS5iYXNlbmFtZSBoZCA6OiB0bFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9IHVud29yZHMgKHBhcnRzX2V4ZV9iYXNlbmFtZSB0KVxuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGhcblxuICBsZXQgcmVwbGFjZV9maXJzdCB0IH5mcm9tIH50b18gPVxuICAgIGxldCByZWMgYXV4IHBhcnRzIH5hY2MgfmZyb20gfnRvXyA9XG4gICAgICBtYXRjaCBwYXJ0cyB3aXRoXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBTdHJpbmcuKCA9ICkgaGQgZnJvbVxuICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCB0bCAodG9fIDo6IGFjYylcbiAgICAgICAgZWxzZSBhdXggdGwgfmFjYzooaGQgOjogYWNjKSB+ZnJvbSB+dG9fXG4gICAgaW5cbiAgICBhdXggKHBhcnRzIHQpIH5hY2M6W10gfmZyb20gfnRvX1xuICA7O1xuXG4gIGxldCBwb3BfaGVscCA9IGZ1bmN0aW9uXG4gICAgfCBcImhlbHBcIiA6OiB0IC0+IHRcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19kb3RzIHQgPVxuICAgIChtYXRjaCB0IHdpdGhcbiAgICAgfCBbXSAtPiBbXVxuICAgICB8IGxhc3QgOjogaW5pdCAtPiBsYXN0IDo6IExpc3QubWFwIGluaXQgfmY6KEZuLmNvbnN0IFwiLlwiKSlcbiAgICB8PiB0b19zdHJpbmdcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5lbmRcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyIDogc2lnXG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgb25lIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgbWFueSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZSA6IHQgLT4gdFxuICAgIHZhbCBjb25jYXQgOiB0IGxpc3QgLT4gdFxuICAgIHZhbCBhZF9ob2MgOiB1c2FnZTpzdHJpbmcgLT4gdFxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbmFtZXMgOiB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudCA9XG4gICAgICB8IFplcm9cbiAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgfCBNYW55IG9mIHRcbiAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcblxuICAgIGxldCBpbnZhcmlhbnQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFNoYXBlLkFub25zLkdyYW1tYXIudXNhZ2VcblxuICAgIGxldCByZWMgaXNfZml4ZWRfYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IHRydWVcbiAgICAgIHwgT25lIF8gLT4gdHJ1ZVxuICAgICAgfCBNYW55IF8gLT4gZmFsc2VcbiAgICAgIHwgTWF5YmUgXyAtPiBmYWxzZVxuICAgICAgfCBBZF9ob2MgXyAtPiBmYWxzZVxuICAgICAgfCBDb25jYXQgdHMgLT5cbiAgICAgICAgKG1hdGNoIExpc3QucmV2IHRzIHdpdGhcbiAgICAgICAgIHwgW10gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICB8IGxhc3QgOjogb3RoZXJzIC0+XG4gICAgICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIG90aGVycyB+Zjppc19maXhlZF9hcml0eSk7XG4gICAgICAgICAgIGlzX2ZpeGVkX2FyaXR5IGxhc3QpXG4gICAgOztcblxuICAgIGxldCByZWMgbmFtZXMgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFtdXG4gICAgICB8IE9uZSBzIC0+IFsgcyBdXG4gICAgICB8IE1hbnkgdCAtPiBuYW1lcyB0XG4gICAgICB8IE1heWJlIHQgLT4gbmFtZXMgdFxuICAgICAgfCBBZF9ob2MgcyAtPiBbIHMgXVxuICAgICAgfCBDb25jYXQgdHMgLT4gTGlzdC5jb25jYXRfbWFwIHRzIH5mOm5hbWVzXG4gICAgOztcblxuICAgIGxldCB6ZXJvID0gWmVyb1xuICAgIGxldCBvbmUgbmFtZSA9IE9uZSBuYW1lXG5cbiAgICBsZXQgbWFueSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCB0IC0+XG4gICAgICAgIGlmIG5vdCAoaXNfZml4ZWRfYXJpdHkgdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgXCJpdGVyYXRpb24gb2YgdmFyaWFibGUtbGVuZ3RoIGdyYW1tYXJzIHN1Y2ggYXMgJXMgaXMgZGlzYWxsb3dlZFwiXG4gICAgICAgICAgICAodXNhZ2UgdClcbiAgICAgICAgICAgICgpO1xuICAgICAgICBNYW55IHRcbiAgICA7O1xuXG4gICAgbGV0IG1heWJlID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT4gTWF5YmUgdFxuICAgIDs7XG5cbiAgICBsZXQgY29uY2F0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gWmVyb1xuICAgICAgfCBjYXIgOjogY2RyIC0+XG4gICAgICAgIGxldCBjYXIsIGNkciA9XG4gICAgICAgICAgTGlzdC5mb2xkIGNkciB+aW5pdDooY2FyLCBbXSkgfmY6KGZ1biAodDEsIGFjYykgdDIgLT5cbiAgICAgICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgICAgICB8IFplcm8sIHQgfCB0LCBaZXJvIC0+IHQsIGFjY1xuICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2ZpeGVkX2FyaXR5IHQxXG4gICAgICAgICAgICAgIHRoZW4gdDIsIHQxIDo6IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgICAgICBcInRoZSBncmFtbWFyICVzIGZvciBhbm9ueW1vdXMgYXJndW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSBcXFxuICAgICAgICAgICAgICAgICAgIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSBmb3IgYXJndW1lbnRzICglcykgZm9sbG93aW5nIGEgdmFyaWFibGUgXFxcbiAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzICglcykuICBTdXBwb3J0aW5nIHN1Y2ggZ3JhbW1hcnMgd291bGQgXFxcbiAgICAgICAgICAgICAgICAgICBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBzaWduaWZpY2FudGx5LlwiXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgKENvbmNhdCAoTGlzdC5yZXYgKHQyIDo6IHQxIDo6IGFjYykpKSlcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MilcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MSlcbiAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggY2RyIHdpdGhcbiAgICAgICAgIHwgW10gLT4gY2FyXG4gICAgICAgICB8IF8gOjogXyAtPiBDb25jYXQgKExpc3QucmV2IChjYXIgOjogY2RyKSkpXG4gICAgOztcblxuICAgIGxldCBhZF9ob2MgfnVzYWdlID0gQWRfaG9jIHVzYWdlXG4gIGVuZFxuXG4gIG1vZHVsZSBQYXJzZXIgOiBzaWdcbiAgICB0eXBlICsnYSB0XG5cbiAgICB2YWwgZnJvbV9lbnYgOiAoRW52LnQgLT4gJ2EpIC0+ICdhIHRcbiAgICB2YWwgb25lIDogbmFtZTpzdHJpbmcgLT4gJ2EgQXJnX3R5cGUudCAtPiAnYSB0XG4gICAgdmFsIG1heWJlIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHZhbCBzZXF1ZW5jZSA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgdmFsIHN0b3BfcGFyc2luZyA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaW5hbF92YWx1ZSA6ICdhIHQgLT4gRW52LnQgLT4gJ2FcblxuICAgIG1vZHVsZSBDb25zdW1lX3Jlc3VsdCA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgICAgIHsgKCogSWYgZW1hY3MgaGlnaGxpZ2h0cyBbcGFyc2VyXSBhcyBpZiBpdCB3ZXJlIGEga2V5d29yZCwgdGhhdCdzIG9ubHkgYmVjYXVzZVxuICAgICAgICAgICAgIFtwYXJzZXJdIHdhcyBhIGtleXdvcmQgaW4gY2FtbHA0LiBbcGFyc2VyXSBpcyBhIHJlZ3VsYXIgbmFtZSBpbiBPQ2FtbC4gKilcbiAgICAgICAgICBwYXJzZXIgOiAnYSB0XG4gICAgICAgIDsgcGFyc2VfZmxhZ3MgOiBib29sXG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIHZhbCBjb25zdW1lIDogJ2EgdCAtPiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiAnYSBDb25zdW1lX3Jlc3VsdC50XG4gICAgdmFsIGNvbXBsZXRlIDogJ2EgdCAtPiBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBuZXZlcl9yZXR1cm5zXG5cbiAgICBtb2R1bGUgRm9yX29wZW5pbmcgOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgKCA8Kj4gKSA6ICgnYSAtPiAnYikgdCAtPiAnYSB0IC0+ICdiIHRcbiAgICAgIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICBlbmRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgRG9uZSBvZiAoRW52LnQgLT4gJ2EpXG4gICAgICB8IE1vcmUgb2YgJ2EgbW9yZVxuICAgICAgKCogQSBbVGVzdF0gd2lsbCAoZ2VuZXJhbGx5KSByZXR1cm4gYSBbRG9uZSBfXSB2YWx1ZSBpZiB0aGVyZSBpcyBubyBtb3JlIGlucHV0IGFuZFxuICAgICAgICAgYSBbTW9yZV0gcGFyc2VyIHRvIHVzZSBpZiB0aGVyZSBpcyBhbnkgbW9yZSBpbnB1dC4gKilcbiAgICAgIHwgVGVzdCBvZiAobW9yZTpib29sIC0+ICdhIHQpXG4gICAgICAoKiBJZiB3ZSdyZSBvbmx5IGNvbXBsZXRpbmcsIHdlIGNhbid0IHB1bGwgdmFsdWVzIG91dCwgYnV0IHdlIGNhbiBzdGlsbCBzdGVwIHRocm91Z2hcbiAgICAgICAgIFt0XXMgKHdoaWNoIG1heSBoYXZlIGNvbXBsZXRpb24gc2V0IHVwKS4gKilcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBvZiBwYWNrZWQgbGlzdFxuICAgICAgfCBTdG9wX3BhcnNpbmcgb2YgJ2EgdFxuXG4gICAgYW5kICdhIG1vcmUgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHBhcnNlIDogc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgcGFyc2VfcmVzdWx0XG4gICAgICA7IGNvbXBsZXRlIDogQ29tcGxldGVyLnRcbiAgICAgIH1cblxuICAgIGFuZCBwYWNrZWQgPSBQYWNrZWQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gICAgYW5kICdhIHBhcnNlX3Jlc3VsdCA9XG4gICAgICB7IHBhcnNlciA6ICdhIHRcbiAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICB9XG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEb25lIChmdW4gXyAtPiBhKVxuICAgIGxldCBmcm9tX2VudiBmID0gRG9uZSBmXG4gICAgbGV0IHN0b3BfcGFyc2luZyB0ID0gU3RvcF9wYXJzaW5nIHRcblxuICAgIGxldCBwYWNrX2Zvcl9jb21wbGV0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgRG9uZSBfIC0+IFtdICgqIHdvbid0IGNvbXBsZXRlIG9yIGNvbnN1bWUgYW55dGhpbmcgKilcbiAgICAgIHwgKE1vcmUgXyB8IFRlc3QgXyB8IFN0b3BfcGFyc2luZyBfKSBhcyB4IC0+IFsgUGFja2VkIHggXVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBzIC0+IHBzXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9tb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlIH0gfmYgPVxuICAgICAgbGV0IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gPVxuICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgeyBwYXJzZXIgPSBmIHBhcnNlcjsgdXBkYXRlX2VudiB9XG4gICAgICBpblxuICAgICAgTW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9XG4gICAgOztcblxuICAgIGxldCByZWMgKCA8Kj4gKSB0X2xlZnQgdF9yaWdodCA9XG4gICAgICBtYXRjaCB0X2xlZnQsIHRfcmlnaHQgd2l0aFxuICAgICAgKCogW0RvbmVdICopXG4gICAgICB8IERvbmUgZiwgRG9uZSB4IC0+IERvbmUgKGZ1biBlbnYgLT4gZiBlbnYgKHggZW52KSlcbiAgICAgICgqIG5leHQgc3RlcCBbTW9yZV0gKilcbiAgICAgIHwgTW9yZSBtb3JlLCBfIC0+IHBhcnNlX21vcmUgbW9yZSB+ZjooZnVuIHRsIC0+IHRsIDwqPiB0X3JpZ2h0KVxuICAgICAgfCBEb25lIF8sIE1vcmUgbW9yZSAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0ciAtPiB0X2xlZnQgPCo+IHRyKVxuICAgICAgKCogbmV4dCBzdGVwIFtPbmx5X2Zvcl9jb21wbGV0aW9uXSAqKVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8sIF8gfCBEb25lIF8sIE9ubHlfZm9yX2NvbXBsZXRpb24gXyAtPlxuICAgICAgICBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHRfbGVmdCBAIHBhY2tfZm9yX2NvbXBsZXRpb24gdF9yaWdodClcbiAgICAgICgqIG5leHQgc3RlcCBbU3RvcF9wYXJzaW5nXSAqKVxuICAgICAgfCBTdG9wX3BhcnNpbmcgdGwsIHRyIHwgKERvbmUgXyBhcyB0bCksIFN0b3BfcGFyc2luZyB0ciAtPiBTdG9wX3BhcnNpbmcgKHRsIDwqPiB0cilcbiAgICAgICgqIG5leHQgc3RlcCBbVGVzdF0gKilcbiAgICAgIHwgVGVzdCB0ZXN0LCBfIC0+IFRlc3QgKGZ1biB+bW9yZSAtPiB0ZXN0IH5tb3JlIDwqPiB0X3JpZ2h0KVxuICAgICAgfCBEb25lIF8sIFRlc3QgdGVzdCAtPiBUZXN0IChmdW4gfm1vcmUgLT4gdF9sZWZ0IDwqPiB0ZXN0IH5tb3JlKVxuICAgIDs7XG5cbiAgICBsZXQgKCA+PnwgKSB0IGYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gICAgbGV0IG9uZV9tb3JlIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIGxldCBwYXJzZSBhbm9uIH5mb3JfY29tcGxldGlvbiA9XG4gICAgICAgIG1hdGNoIEFyZ190eXBlLnBhcnNlIGFyZ190eXBlIGFub24gd2l0aFxuICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgIGlmIGZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgKCogd2UgZG9uJ3QgKnJlYWxseSogY2FyZSBhYm91dCB0aGlzIHZhbHVlLCBzbyBqdXN0IHB1dCBpbiBhIGR1bW15IHZhbHVlIHNvXG4gICAgICAgICAgICAgICBjb21wbGV0aW9uIGNhbiBjb250aW51ZSAqKVxuICAgICAgICAgICAgeyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIFtdOyB1cGRhdGVfZW52ID0gRm4uaWQgfVxuICAgICAgICAgIGVsc2UgZGllIFwiZmFpbGVkIHRvIHBhcnNlICVzIHZhbHVlICVTXFxuJXNcIiBuYW1lIGFub24gKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgICAgICB8IE9rIHYgLT5cbiAgICAgICAgICB7IHBhcnNlciA9IHJldHVybiB2XG4gICAgICAgICAgOyB1cGRhdGVfZW52ID1cbiAgICAgICAgICAgICAgKGZ1biBlbnYgLT5cbiAgICAgICAgICAgICAgICAgT3B0aW9uLmZvbGQgKEFyZ190eXBlLmtleSBhcmdfdHlwZSkgfmluaXQ6ZW52IH5mOihmdW4gZW52IGtleSAtPlxuICAgICAgICAgICAgICAgICAgIEVudi5tdWx0aV9hZGQgZW52IH5rZXkgfmRhdGE6dikpXG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIE1vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgPSBBcmdfdHlwZS5jb21wbGV0ZSBhcmdfdHlwZSB9XG4gICAgOztcblxuICAgIGxldCBvbmUgfm5hbWUgYXJnX3R5cGUgPVxuICAgICAgVGVzdFxuICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgIGlmIG1vcmVcbiAgICAgICAgICAgdGhlbiBvbmVfbW9yZSB+bmFtZSBhcmdfdHlwZVxuICAgICAgICAgICBlbHNlIGRpZSBcIm1pc3NpbmcgYW5vbnltb3VzIGFyZ3VtZW50OiAlc1wiIG5hbWUgKCkpXG4gICAgOztcblxuICAgIGxldCBtYXliZSB0ID0gVGVzdCAoZnVuIH5tb3JlIC0+IGlmIG1vcmUgdGhlbiB0ID4+fCBmdW4gYSAtPiBTb21lIGEgZWxzZSByZXR1cm4gTm9uZSlcblxuICAgIGxldCBzZXF1ZW5jZSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCA9XG4gICAgICAgIFRlc3RcbiAgICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgICAgaWYgbW9yZSB0aGVuIHJldHVybiAoZnVuIHYgYWNjIC0+IHYgOjogYWNjKSA8Kj4gdCA8Kj4gbG9vcCBlbHNlIHJldHVybiBbXSlcbiAgICAgIGluXG4gICAgICBsb29wXG4gICAgOztcblxuICAgIGxldCByZWMgZmluYWxfdmFsdWUgdCBlbnYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgYSAtPiBhIGVudlxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiBmaW5hbF92YWx1ZSB0IGVudlxuICAgICAgfCBUZXN0IGYgLT4gZmluYWxfdmFsdWUgKGYgfm1vcmU6ZmFsc2UpIGVudlxuICAgICAgfCBNb3JlIHsgbmFtZTsgXyB9IC0+IGRpZSBcIm1pc3NpbmcgYW5vbnltb3VzIGFyZ3VtZW50OiAlc1wiIG5hbWUgKClcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfIC0+XG4gICAgICAgIGZhaWx3aXRoIFwiQlVHOiBhc2tlZCBmb3IgZmluYWwgdmFsdWUgd2hlbiBkb2luZyBjb21wbGV0aW9uXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIENvbnN1bWVfcmVzdWx0ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICAgICAgeyBwYXJzZXIgOiAnYSB0XG4gICAgICAgIDsgcGFyc2VfZmxhZ3MgOiBib29sXG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIGxldCByZWMgY29uc3VtZSA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+IGEgQ29uc3VtZV9yZXN1bHQudCA9XG4gICAgICBmdW4gdCBhcmcgfmZvcl9jb21wbGV0aW9uIC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRG9uZSBfIC0+IGRpZSBcInRvbyBtYW55IGFub255bW91cyBhcmd1bWVudHNcIiAoKVxuICAgICAgfCBUZXN0IGYgLT4gY29uc3VtZSAoZiB+bW9yZTp0cnVlKSBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICB8IE1vcmUgeyBwYXJzZTsgXyB9IC0+XG4gICAgICAgIGxldCB7IHBhcnNlcjsgdXBkYXRlX2VudiB9ID0gcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiBpblxuICAgICAgICB7IHBhcnNlcjsgcGFyc2VfZmxhZ3MgPSB0cnVlOyB1cGRhdGVfZW52IH1cbiAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4geyAoY29uc3VtZSB0IGFyZyB+Zm9yX2NvbXBsZXRpb24pIHdpdGggcGFyc2VfZmxhZ3MgPSBmYWxzZSB9XG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gcGFja2VkIC0+XG4gICAgICAgIChtYXRjaCBwYWNrZWQgd2l0aFxuICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICB7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gW107IHBhcnNlX2ZsYWdzID0gdHJ1ZTsgdXBkYXRlX2VudiA9IEZuLmlkIH1cbiAgICAgICAgIHwgUGFja2VkIHQgOjogcmVzdCAtPlxuICAgICAgICAgICBsZXQgKHsgdXBkYXRlX2VudjsgcGFyc2VfZmxhZ3M7IHBhcnNlciB9IDogXyBDb25zdW1lX3Jlc3VsdC50KSA9XG4gICAgICAgICAgICAgY29uc3VtZSB0IGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgeyB1cGRhdGVfZW52XG4gICAgICAgICAgIDsgcGFyc2VfZmxhZ3NcbiAgICAgICAgICAgOyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHBhcnNlciBAIHJlc3QpXG4gICAgICAgICAgIH0pXG4gICAgOztcblxuICAgIGxldCByZWMgY29tcGxldGUgOiB0eXBlIGEuIGEgdCAtPiBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBuZXZlcl9yZXR1cm5zID1cbiAgICAgIGZ1biB0IGVudiB+cGFydCAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBEb25lIF8gLT4gZXhpdCAwXG4gICAgICAgIHwgVGVzdCBmIC0+IGNvbXBsZXRlIChmIH5tb3JlOnRydWUpIGVudiB+cGFydFxuICAgICAgICB8IE1vcmUgeyBjb21wbGV0ZTsgXyB9IC0+IENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcGxldGUgZW52IH5wYXJ0XG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gY29tcGxldGUgdCBlbnYgfnBhcnRcbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHQgLT5cbiAgICAgICAgICAobWF0Y2ggdCB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gZXhpdCAwXG4gICAgICAgICAgIHwgUGFja2VkIHQgOjogXyAtPiBjb21wbGV0ZSB0IGVudiB+cGFydClcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIFBhcnNlci5Gb3Jfb3BlbmluZ1xuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwIDogJ2EgUGFyc2VyLnRcbiAgICA7IGdyYW1tYXIgOiBHcmFtbWFyLnRcbiAgICB9XG5cbiAgbGV0IHQyIHQxIHQyID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiAtPiBhMSwgYTIpIDwqPiB0MS5wIDwqPiB0Mi5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHQzIHQxIHQyIHQzID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiBhMyAtPiBhMSwgYTIsIGEzKSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0NCB0MSB0MiB0MyB0NCA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgYTQgLT4gYTEsIGEyLCBhMywgYTQpIDwqPiB0MS5wIDwqPiB0Mi5wIDwqPiB0My5wIDwqPiB0NC5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyOyB0My5ncmFtbWFyOyB0NC5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZSBzdHIgPVxuICAgICgqIFZlcmlmeSB0aGUgc3RyaW5nIGlzIG5vdCBlbXB0eSBvciBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2UgKilcbiAgICBsZXQgc3RybGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBzdHJsZW4gPSAwIHRoZW4gZmFpbHdpdGggXCJFbXB0eSBhbm9ueW1vdXMgYXJndW1lbnQgbmFtZSBwcm92aWRlZFwiO1xuICAgIGlmIFN0cmluZy4oIDw+ICkgKFN0cmluZy5zdHJpcCBzdHIpIHN0clxuICAgIHRoZW4gZmFpbHdpdGhmIFwiYXJndW1lbnQgbmFtZSAlUyBoYXMgc3Vycm91bmRpbmcgd2hpdGVzcGFjZVwiIHN0ciAoKTtcbiAgICAoKiBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIHNwZWNpYWwgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgZG9uJ3QgZG8gYW55dGhpbmcgKilcbiAgICBsZXQgaGFzX3NwZWNpYWxfY2hhcnMgPVxuICAgICAgbGV0IHNwZWNpYWxfY2hhcnMgPSBDaGFyLlNldC5vZl9saXN0IFsgJzwnOyAnPic7ICdbJzsgJ10nOyAnKCc7ICcpJzsgJ3snOyAnfScgXSBpblxuICAgICAgU3RyaW5nLmV4aXN0cyBzdHIgfmY6KFNldC5tZW0gc3BlY2lhbF9jaGFycylcbiAgICBpblxuICAgIGlmIGhhc19zcGVjaWFsX2NoYXJzIHRoZW4gc3RyIGVsc2UgU3RyaW5nLnVwcGVyY2FzZSBzdHJcbiAgOztcblxuICBsZXQgKCAlOiApIG5hbWUgYXJnX3R5cGUgPVxuICAgIGxldCBuYW1lID0gbm9ybWFsaXplIG5hbWUgaW5cbiAgICB7IHAgPSBQYXJzZXIub25lIH5uYW1lIGFyZ190eXBlOyBncmFtbWFyID0gR3JhbW1hci5vbmUgbmFtZSB9XG4gIDs7XG5cbiAgbGV0IG1hcF9hbm9ucyB0IH5mID0geyBwID0gdC5wID4+fCBmOyBncmFtbWFyID0gdC5ncmFtbWFyIH1cbiAgbGV0IG1heWJlIHQgPSB7IHAgPSBQYXJzZXIubWF5YmUgdC5wOyBncmFtbWFyID0gR3JhbW1hci5tYXliZSB0LmdyYW1tYXIgfVxuXG4gIGxldCBtYXliZV93aXRoX2RlZmF1bHQgZGVmYXVsdCB0ID1cbiAgICBsZXQgdCA9IG1heWJlIHQgaW5cbiAgICB7IHQgd2l0aCBwID0gKHQucCA+PnwgZnVuIHYgLT4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0IHYpIH1cbiAgOztcblxuICBsZXQgc2VxdWVuY2UgdCA9IHsgcCA9IFBhcnNlci5zZXF1ZW5jZSB0LnA7IGdyYW1tYXIgPSBHcmFtbWFyLm1hbnkgdC5ncmFtbWFyIH1cbiAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyIHQgPSB0MiB0IChzZXF1ZW5jZSB0KVxuXG4gIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCB0ID1cbiAgICBsZXQgdCA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyIHQgaW5cbiAgICB7IHQgd2l0aCBwID0gKHQucCA+PnwgZnVuICh4LCB4cykgLT4geCA6OiB4cykgfVxuICA7O1xuXG4gIGxldCBlc2NhcGUgdCA9IHsgcCA9IFBhcnNlci5zdG9wX3BhcnNpbmcgdC5wOyBncmFtbWFyID0gdC5ncmFtbWFyIH1cblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBhZF9ob2MgfnVzYWdlX2FyZyA9XG4gICAgICB7IHAgPVxuICAgICAgICAgIFBhcnNlci5zZXF1ZW5jZVxuICAgICAgICAgICAgKFBhcnNlci5vbmUgfm5hbWU6XCJXSUxMIE5FVkVSIEJFIFBSSU5URURcIiBBcmdfdHlwZS5FeHBvcnQuc3RyaW5nKVxuICAgICAgOyBncmFtbWFyID0gR3JhbW1hci5hZF9ob2MgfnVzYWdlOnVzYWdlX2FyZ1xuICAgICAgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDbWRsaW5lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2Ygc3RyaW5nICogdFxuICAgIHwgQ29tcGxldGUgb2Ygc3RyaW5nXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IG9mX2xpc3QgYXJncyA9IExpc3QuZm9sZF9yaWdodCBhcmdzIH5pbml0Ok5pbCB+ZjooZnVuIGFyZyBhcmdzIC0+IENvbnMgKGFyZywgYXJncykpXG5cbiAgbGV0IHJlYyB0b19saXN0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBbXVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+IHggOjogdG9fbGlzdCB4c1xuICAgIHwgQ29tcGxldGUgeCAtPiBbIHggXVxuICA7O1xuXG4gIGxldCByZWMgZW5kc19pbl9jb21wbGV0ZSA9IGZ1bmN0aW9uXG4gICAgfCBDb21wbGV0ZSBfIC0+IHRydWVcbiAgICB8IE5pbCAtPiBmYWxzZVxuICAgIHwgQ29ucyAoXywgYXJncykgLT4gZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gIDs7XG5cbiAgbGV0IGV4dGVuZCB0IH5leHRlbmQgfnBhdGggPVxuICAgIGlmIGVuZHNfaW5fY29tcGxldGUgdFxuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBhdGhfbGlzdCA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpbXSAoTGlzdC50bCAoUGF0aC5wYXJ0cyBwYXRoKSkgaW5cbiAgICAgIG9mX2xpc3QgKHRvX2xpc3QgdCBAIGV4dGVuZCBwYXRoX2xpc3QpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBLZXlfdHlwZSA9IFNoYXBlLlByaXZhdGUuS2V5X3R5cGVcblxubGV0IGFzc2VydF9ub191bmRlcnNjb3JlcyBrZXlfdHlwZSBmbGFnX29yX3N1YmNvbW1hbmQgPVxuICBpZiBTdHJpbmcuZXhpc3RzIGZsYWdfb3Jfc3ViY29tbWFuZCB+ZjooZnVuIGMgLT4gQ2hhci4oID0gKSBjICdfJylcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCIlcyAlcyBjb250YWlucyBhbiB1bmRlcnNjb3JlLiBVc2UgYSBkYXNoIGluc3RlYWQuXCJcbiAgICAgIChLZXlfdHlwZS50b19zdHJpbmcga2V5X3R5cGUpXG4gICAgICBmbGFnX29yX3N1YmNvbW1hbmRcbiAgICAgICgpXG47O1xuXG5sZXQgbm9ybWFsaXplIGtleV90eXBlIGtleSA9XG4gIGFzc2VydF9ub191bmRlcnNjb3JlcyBrZXlfdHlwZSBrZXk7XG4gIG1hdGNoIGtleV90eXBlIHdpdGhcbiAgfCBLZXlfdHlwZS5GbGFnIC0+XG4gICAgaWYgU3RyaW5nLmVxdWFsIGtleSBcIi1cIiB0aGVuIGZhaWx3aXRoZiAhXCJpbnZhbGlkICV7S2V5X3R5cGV9IG5hbWU6ICVTXCIga2V5X3R5cGUga2V5ICgpO1xuICAgIGlmIFN0cmluZy5leGlzdHMga2V5IH5mOkNoYXIuaXNfd2hpdGVzcGFjZVxuICAgIHRoZW4gZmFpbHdpdGhmICFcImludmFsaWQgJXtLZXlfdHlwZX0gbmFtZSAoY29udGFpbnMgd2hpdGVzcGFjZSk6ICVTXCIga2V5X3R5cGUga2V5ICgpO1xuICAgIGlmIFN0cmluZy5pc19wcmVmaXggfnByZWZpeDpcIi1cIiBrZXkgdGhlbiBrZXkgZWxzZSBcIi1cIiBeIGtleVxuICB8IEtleV90eXBlLlN1YmNvbW1hbmQgLT4gU3RyaW5nLmxvd2VyY2FzZSBrZXlcbjs7XG5cbmxldCBsb29rdXBfZXhwYW5kID0gU2hhcGUuUHJpdmF0ZS5sb29rdXBfZXhwYW5kXG5cbmxldCBsb29rdXBfZXhwYW5kX3dpdGhfYWxpYXNlcyBtYXAgcHJlZml4IGtleV90eXBlID1cbiAgbGV0IGFsaXN0ID1cbiAgICBMaXN0LmNvbmNhdF9tYXAgKFN0cmluZy5NYXAuZGF0YSBtYXApIH5mOihmdW4gZmxhZyAtPlxuICAgICAgbGV0IHsgRmxhZy5JbnRlcm5hbC5uYW1lXG4gICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgIDsgYWN0aW9uID0gX1xuICAgICAgICAgIDsgZG9jID0gX1xuICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgPVxuICAgICAgICBmbGFnXG4gICAgICBpblxuICAgICAgbGV0IGRhdGEgPSBmbGFnLCBuYW1lX21hdGNoaW5nIGluXG4gICAgICBsZXQgYWxpYXNlcyA9IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIEAgYWxpYXNlcyBpblxuICAgICAgKG5hbWUsIGRhdGEpIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biBhbGlhcyAtPiBhbGlhcywgZGF0YSkpXG4gIGluXG4gIG1hdGNoIExpc3QuZmluZF9hX2R1cCBhbGlzdCB+Y29tcGFyZTooZnVuIChzMSwgXykgKHMyLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBzMSBzMikgd2l0aFxuICB8IE5vbmUgLT4gbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGVcbiAgfCBTb21lIChmbGFnLCBfKSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbjs7XG5cbm1vZHVsZSBCYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgZmxhZ3MgOiBGbGFnLkludGVybmFsLnQgU3RyaW5nLk1hcC50XG4gICAgO1xuICAgICAgYW5vbnMgOiB1bml0IC0+IChbIGBQYXJzZV9hcmdzIF0gLT4gWyBgUnVuX21haW4gXSAtPiB1bml0KSBBbm9ucy5QYXJzZXIudFxuICAgIDsgdXNhZ2UgOiBBbm9ucy5HcmFtbWFyLnRcbiAgICB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgc3ViY29tbWFuZF9jbXBfZnN0IChhLCBfKSAoYywgXykgPSBoZWxwX3NjcmVlbl9jb21wYXJlIGEgY1xuXG4gICAgbGV0IGZsYWdzX2hlbHAgPyhkaXNwbGF5X2hlbHBfZmxhZ3MgPSB0cnVlKSB0ID1cbiAgICAgIGxldCBmbGFncyA9IFN0cmluZy5NYXAuZGF0YSB0LmZsYWdzIGluXG4gICAgICBsZXQgZmxhZ3MgPVxuICAgICAgICBpZiBkaXNwbGF5X2hlbHBfZmxhZ3NcbiAgICAgICAgdGhlbiBmbGFnc1xuICAgICAgICBlbHNlIExpc3QuZmlsdGVyIGZsYWdzIH5mOihmdW4gZiAtPiBTdHJpbmcuKCA8PiApIGYubmFtZSBcIi1oZWxwXCIpXG4gICAgICBpblxuICAgICAgTGlzdC5jb25jYXRfbWFwIH5mOkZsYWcuSW50ZXJuYWwuRGVwcmVjYXRlZC5oZWxwIGZsYWdzXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZvcm1hdHRlZF9mbGFncyB0ID1cbiAgICBTdHJpbmcuTWFwLmRhdGEgdC5mbGFnc1xuICAgIHw+IExpc3QubWFwIH5mOkZsYWcuSW50ZXJuYWwuYWxpZ25cbiAgICAoKiB0aGlzIHNvcnQgcHV0cyBvcHRpb25hbCBmbGFncyBhZnRlciByZXF1aXJlZCBvbmVzICopXG4gICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IFN0cmluZy5jb21wYXJlIGEubmFtZSBiLm5hbWUpXG4gICAgfD4gU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkuc29ydFxuICA7O1xuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuQmFzZV9pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB0LnJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpXG4gICAgOyBhbm9ucyA9IEdyYW1tYXIgdC51c2FnZVxuICAgIDsgZmxhZ3MgPSBmb3JtYXR0ZWRfZmxhZ3MgdFxuICAgIH1cbiAgOztcblxuICBsZXQgcGF0aF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcInBhdGhcIlxuICBsZXQgYXJnc19rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImFyZ3NcIlxuICBsZXQgaGVscF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImhlbHBcIlxuXG4gIGxldCBpbmRlbnRfYnlfMiBzdHIgPVxuICAgIFN0cmluZy5zcGxpdCB+b246J1xcbicgc3RyXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IFwiICBcIiBeIGxpbmUpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgZ2V0X2ZsYWdfYW5kX2FjdGlvbiB0IGFyZyA9XG4gICAgbWF0Y2ggbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgdC5mbGFncyBhcmcgRmxhZyB3aXRoXG4gICAgfCBFcnJvciBtc2cgLT4gZGllIFwiJXNcIiBtc2cgKClcbiAgICB8IE9rIChmbGFnX25hbWUsIGZsYWcpIC0+IGZsYWdfbmFtZSwgZmxhZy5hY3Rpb25cbiAgOztcblxuICBsZXQgcnVuX2ZsYWcgdCBlbnYgYXJnIChhcmdzIDogQ21kbGluZS50KSA9XG4gICAgbGV0IGZsYWcsIGFjdGlvbiA9IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgaW5cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBpbmZvIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICAoKiBJZiB3ZSdyZSBkb2luZyBjb21wbGV0aW9uLCB2ZXJzaW9uL2hlbHAgaW5mbyBhcmVuJ3QgdXNlZnVsIGNvbXBsZXRpb25cbiAgICAgICAgIHJlc3BvbnNlcy4gKilcbiAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgIHRoZW4gZW52LCBhcmdzXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJpbnRfZW5kbGluZSAoaW5mbyBlbnYpO1xuICAgICAgICBleGl0IDApXG4gICAgfCBOb19hcmcgZiAtPiBmIGVudiwgYXJnc1xuICAgIHwgQXJnIChmLCBjb21wKSAtPlxuICAgICAgKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgIHwgTmlsIC0+IGRpZSBcIm1pc3NpbmcgYXJndW1lbnQgZm9yIGZsYWcgJXNcIiBmbGFnICgpXG4gICAgICAgfCBDb25zIChhcmcsIHJlc3QpIC0+XG4gICAgICAgICBsZXQgZW52ID1cbiAgICAgICAgICAgdHJ5IGYgZW52IGFyZyB3aXRoXG4gICAgICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIGFzIGUgLT5cbiAgICAgICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgcmVzdCB0aGVuIGVudiBlbHNlIHJhaXNlIGVcbiAgICAgICAgIGluXG4gICAgICAgICBlbnYsIHJlc3RcbiAgICAgICB8IENvbXBsZXRlIHBhcnQgLT4gbmV2ZXJfcmV0dXJucyAoQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wIGVudiB+cGFydCkpXG4gICAgfCBSZXN0IGYgLT5cbiAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIHRoZW4gZXhpdCAwO1xuICAgICAgZiBlbnYgKENtZGxpbmUudG9fbGlzdCBhcmdzKSwgTmlsXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgKGNtZGxpbmUgOiBDbWRsaW5lLnQpIH5mb3JfY29tcGxldGlvbiB+cGFyc2VfZmxhZ3MgPVxuICAgIG1hdGNoIGNtZGxpbmUgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBMaXN0Lml0ZXIgKFN0cmluZy5NYXAuZGF0YSB0LmZsYWdzKSB+ZjooZnVuIGZsYWcgLT4gZmxhZy5jaGVja19hdmFpbGFibGUgZW52KTtcbiAgICAgIEFub25zLlBhcnNlci5maW5hbF92YWx1ZSBwYXJzZXIgZW52XG4gICAgfCBDb21wbGV0ZSBwYXJ0IC0+XG4gICAgICBpZiBwYXJzZV9mbGFncyAmJiBTdHJpbmcuaXNfcHJlZml4IHBhcnQgfnByZWZpeDpcIi1cIlxuICAgICAgdGhlbiAoXG4gICAgICAgIExpc3QuaXRlciAoU3RyaW5nLk1hcC5rZXlzIHQuZmxhZ3MpIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQgdGhlbiBwcmludF9lbmRsaW5lIG5hbWUpO1xuICAgICAgICBleGl0IDApXG4gICAgICBlbHNlIG5ldmVyX3JldHVybnMgKEFub25zLlBhcnNlci5jb21wbGV0ZSBwYXJzZXIgZW52IH5wYXJ0KVxuICAgIHwgQ29ucyAoYXJnLCBhcmdzKSAtPlxuICAgICAgbGV0IGFyZywgYXJncywgYXJnX2lzX2ZsYWcgPVxuICAgICAgICBtYXRjaCBwYXJzZV9mbGFncyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAobWF0Y2ggYXJnLCBhcmdzIHdpdGhcbiAgICAgICAgICAgKCogdGhlICctYW5vbicgZmxhZyBpcyBoZXJlIGFzIGFuIGVzY2FwZSBoYXRjaCBpbiBjYXNlIHlvdSBoYXZlIGFuXG4gICAgICAgICAgICAgIGFub255bW91cyBhcmd1bWVudCB0aGF0IHN0YXJ0cyB3aXRoIGEgaHlwaGVuLiAqKVxuICAgICAgICAgICB8IFwiLWFub25cIiwgQ29ucyAoYXJnLCBhcmdzKSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgICgqIHN1cHBvcnQgdGhlIGNvbW1vbiBVbml4IGNvbnZlbnRpb24gd2hlcmUgXCItXCIgbWVhbnMgc3RkaW4gKilcbiAgICAgICAgICAgfCBcIi1cIiwgXyAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgIHwgXywgXyAtPiBhcmcsIGFyZ3MsIFN0cmluZy5pc19wcmVmaXggYXJnIH5wcmVmaXg6XCItXCIpXG4gICAgICBpblxuICAgICAgKG1hdGNoIGFyZ19pc19mbGFnIHdpdGhcbiAgICAgICB8IHRydWUgLT5cbiAgICAgICAgIGxldCBlbnYsIGFyZ3MgPSBydW5fZmxhZyB0IGVudiBhcmcgYXJncyBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIGFyZ3MgfnBhcnNlX2ZsYWdzIH5mb3JfY29tcGxldGlvblxuICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFnczEgPSBwYXJzZV9mbGFncyBpblxuICAgICAgICAgbGV0ICh7IHBhcnNlcjsgcGFyc2VfZmxhZ3MgPSBwYXJzZV9mbGFnczI7IHVwZGF0ZV9lbnYgfVxuICAgICAgICAgICAgICA6IF8gQW5vbnMuUGFyc2VyLkNvbnN1bWVfcmVzdWx0LnQpXG4gICAgICAgICAgID1cbiAgICAgICAgICAgQW5vbnMuUGFyc2VyLmNvbnN1bWUgcGFyc2VyIGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgZW52ID0gdXBkYXRlX2VudiBlbnYgaW5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMSAmJiBwYXJzZV9mbGFnczIgaW5cbiAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciB+cGFyc2VfZmxhZ3MgYXJncyB+Zm9yX2NvbXBsZXRpb24pXG4gIDs7XG5cbiAgbGV0IHJ1bl9leG4gZXhuIH5mb3JfY29tcGxldGlvbiB+cGF0aCB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvciA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyB3aGVuIGZvcl9jb21wbGV0aW9uIC0+IGV4aXQgMFxuICAgIHwgRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSAtPiBleGl0IHN0YXR1c1xuICAgIHwgXyAtPlxuICAgICAgbGV0IGV4bl9zdHIgPVxuICAgICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+IG1zZ1xuICAgICAgICB8IF8gLT4gU2V4cC50b19zdHJpbmdfaHVtIFslc2V4cCAoZXhuIDogZXhuKV1cbiAgICAgIGluXG4gICAgICBsZXQgdmVyYm9zZSA9IE9wdGlvbi52YWx1ZSB2ZXJib3NlX29uX3BhcnNlX2Vycm9yIH5kZWZhdWx0OnRydWUgaW5cbiAgICAgIGxldCBlcnJvcl9tc2cgPVxuICAgICAgICBpZiB2ZXJib3NlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICB+c2VwOlwiXFxuXFxuXCJcbiAgICAgICAgICAgIFsgXCJFcnJvciBwYXJzaW5nIGNvbW1hbmQgbGluZTpcIlxuICAgICAgICAgICAgOyBpbmRlbnRfYnlfMiBleG5fc3RyXG4gICAgICAgICAgICA7IFwiRm9yIHVzYWdlIGluZm9ybWF0aW9uLCBydW5cIlxuICAgICAgICAgICAgOyBcIiAgXCIgXiBQYXRoLnRvX3N0cmluZyBwYXRoIF4gXCIgLWhlbHBcXG5cIlxuICAgICAgICAgICAgXVxuICAgICAgICBlbHNlIGV4bl9zdHJcbiAgICAgIGluXG4gICAgICBwcmVycl9lbmRsaW5lIGVycm9yX21zZztcbiAgICAgIGV4aXQgMVxuICA7O1xuXG4gIGxldCBydW4gdCBlbnYgfndoZW5fcGFyc2luZ19zdWNjZWVkcyB+cGF0aCB+YXJncyB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvciB+aGVscF90ZXh0ID1cbiAgICBsZXQgZm9yX2NvbXBsZXRpb24gPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgIGxldCBlbnYgPVxuICAgICAgZW52XG4gICAgICB8PiBFbnYuc2V0IH5rZXk6cGF0aF9rZXkgfmRhdGE6cGF0aFxuICAgICAgfD4gRW52LnNldCB+a2V5OmFyZ3Nfa2V5IH5kYXRhOihDbWRsaW5lLnRvX2xpc3QgYXJncylcbiAgICAgIHw+IEVudi5zZXQgfmtleTpoZWxwX2tleSB+ZGF0YTpoZWxwX3RleHRcbiAgICBpblxuICAgIG1hdGNoXG4gICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICBydW5fY21kbGluZVxuICAgICAgICAgIHRcbiAgICAgICAgICBlbnZcbiAgICAgICAgICAodC5hbm9ucyAoKSlcbiAgICAgICAgICB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgICB+cGFyc2VfZmxhZ3M6dHJ1ZVxuICAgICAgICAgIGFyZ3NcbiAgICAgICAgICBgUGFyc2VfYXJncylcbiAgICB3aXRoXG4gICAgfCBPayB0aHVuayAtPlxuICAgICAgd2hlbl9wYXJzaW5nX3N1Y2NlZWRzICgpO1xuICAgICAgdGh1bmsgYFJ1bl9tYWluXG4gICAgfCBFcnJvciBleG4gLT4gcnVuX2V4biBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gIDs7XG5cbiAgbW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgeyBmIDogdW5pdCAtPiAoJ2EgLT4gJ2IpIEFub25zLlBhcnNlci50XG4gICAgICA7IHVzYWdlIDogdW5pdCAtPiBBbm9ucy5HcmFtbWFyLnRcbiAgICAgIDsgZmxhZ3MgOiB1bml0IC0+IEZsYWcuSW50ZXJuYWwudCBsaXN0XG4gICAgICB9XG5cbiAgICAoKiB0aGUgKGhpc3RvcmljYWwpIHJlYXNvbiB0aGF0IFtwYXJhbV0gaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbdF0gcmF0aGVyIHRoYW4gdGhlXG4gICAgICAgb3RoZXIgd2F5IHJvdW5kIGlzIHRoYXQgdGhlIGRlbGF5ZWQgZXZhbHVhdGlvbiBtYXR0ZXJlZCBmb3Igc2VxdWVuY2luZyBvZlxuICAgICAgIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiByZWYgY2VsbHMgaW4gdGhlIG9sZCByZXByZXNlbnRhdGlvbiBvZiBmbGFncyAqKVxuICAgIHR5cGUgJ2EgcGFyYW0gPSB7IHBhcmFtIDogJ20uICgnYSAtPiAnbSwgJ20pIHQgfVxuXG4gICAgb3BlbiBBbm9ucy5QYXJzZXIuRm9yX29wZW5pbmdcblxuICAgIGxldCBhcHAgdDEgdDIgfmYgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiByZXR1cm4gZiA8Kj4gdDEuZiAoKSA8Kj4gdDIuZiAoKSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IHQyLmZsYWdzICgpIEAgdDEuZmxhZ3MgKCkpXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLmNvbmNhdCBbIHQxLnVzYWdlICgpOyB0Mi51c2FnZSAoKSBdKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICAoKiBTbyBzYWQuICBXZSBjYW4ndCBkZWZpbmUgW2FwcGx5XSBpbiB0ZXJtcyBvZiBbYXBwXSBiZWNhdXNlIG9mIHRoZSB2YWx1ZVxuICAgICAgIHJlc3RyaWN0aW9uLiAqKVxuICAgIGxldCBhcHBseSBwZiBweCA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPVxuICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIHJldHVybiAoZnVuIG1mIG14IGsgLT4gbWYgKGZ1biBmIC0+IG14IChmdW4geCAtPiBrIChmIHgpKSkpXG4gICAgICAgICAgICAgICAgIDwqPiBwZi5wYXJhbS5mICgpXG4gICAgICAgICAgICAgICAgIDwqPiBweC5wYXJhbS5mICgpKVxuICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IHB4LnBhcmFtLmZsYWdzICgpIEAgcGYucGFyYW0uZmxhZ3MgKCkpXG4gICAgICAgICAgOyB1c2FnZSA9XG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci5jb25jYXQgWyBwZi5wYXJhbS51c2FnZSAoKTsgcHgucGFyYW0udXNhZ2UgKCkgXSlcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCAoICsrICkgdDEgdDIgPSBhcHAgdDEgdDIgfmY6KGZ1biBmMSBmMiB4IC0+IGYyIChmMSB4KSlcbiAgICBsZXQgKCArPiApIHQxIHAyID0gYXBwIHQxIHAyLnBhcmFtIH5mOihmdW4gZjEgZjIgeCAtPiBmMiAoZjEgeCkpXG4gICAgbGV0ICggKzwgKSB0MSBwMiA9IGFwcCBwMi5wYXJhbSB0MSB+ZjooZnVuIGYyIGYxIHggLT4gZjEgKGYyIHgpKVxuXG4gICAgbGV0IHN0ZXAgZiA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiBmKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBlbXB0eSA6ICdtLiAoJ20sICdtKSB0ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIEZuLmlkKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBjb25zdCB2ID1cbiAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gayAtPiBrIHYpKVxuICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBtYXAgcCB+ZiA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHAucGFyYW0uZiAoKSA+PnwgZnVuIGMgayAtPiBjIChmdW4gdiAtPiBrIChmIHYpKSlcbiAgICAgICAgICA7IGZsYWdzID0gcC5wYXJhbS5mbGFnc1xuICAgICAgICAgIDsgdXNhZ2UgPSBwLnBhcmFtLnVzYWdlXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgd3JhcCBmIHQgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiB0LmYgKCkgPj58IGZ1biBydW4gbWFpbiAtPiBmIH5ydW4gfm1haW4pXG4gICAgICA7IGZsYWdzID0gdC5mbGFnc1xuICAgICAgOyB1c2FnZSA9IHQudXNhZ2VcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG9mX3BhcmFtcyBwYXJhbXMgPVxuICAgICAgbGV0IHQgPSBwYXJhbXMucGFyYW0gaW5cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gdC5mICgpID4+fCBmdW4gcnVuIG1haW4gLT4gcnVuIEZuLmlkIG1haW4pXG4gICAgICA7IGZsYWdzID0gdC5mbGFnc1xuICAgICAgOyB1c2FnZSA9IHQudXNhZ2VcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHRvX3BhcmFtcyAodCA6ICgnYSwgJ2IpIHQpIDogKCdhIC0+ICdiKSBwYXJhbSA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHQuZiAoKSA+PnwgZnVuIGYgayAtPiBrIGYpOyBmbGFncyA9IHQuZmxhZ3M7IHVzYWdlID0gdC51c2FnZSB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBvZl9wYXJhbSBwID0gcC5wYXJhbVxuICAgIGxldCB0b19wYXJhbSB0IG1haW4gPSBtYXAgKHRvX3BhcmFtcyB0KSB+ZjooZnVuIGsgLT4gayBtYWluKVxuXG4gICAgbGV0IGxvb2t1cCBrZXkgPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBBbm9ucy5QYXJzZXIuZnJvbV9lbnYgKGZ1biBlbnYgbSAtPiBtIChFbnYuZmluZF9leG4gZW52IGtleSkpKVxuICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBwYXRoIDogUGF0aC50IHBhcmFtID0gbG9va3VwIHBhdGhfa2V5XG4gICAgbGV0IGFyZ3MgOiBzdHJpbmcgbGlzdCBwYXJhbSA9IGxvb2t1cCBhcmdzX2tleVxuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCBwYXJhbSA9IGxvb2t1cCBoZWxwX2tleVxuXG4gICAgKCogVGhpcyBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgZm9yIHRoZSBoZWxwIGNvbW1hbmQuICopXG4gICAgbGV0IGVudiA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IEFub25zLlBhcnNlci5mcm9tX2VudiAoZnVuIGVudiBtIC0+IG0gZW52KSlcbiAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgICAgIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBBbm9uc1xuXG4gICAgICB0eXBlICdhIGFub25zID0gJ2EgdFxuXG4gICAgICBsZXQgKCAlOiApID0gKCAlOiApXG4gICAgICBsZXQgbWFwX2Fub25zID0gbWFwX2Fub25zXG4gICAgICBsZXQgbWF5YmUgPSBtYXliZVxuICAgICAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCA9IG1heWJlX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHNlcXVlbmNlID0gc2VxdWVuY2VcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyXG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgICAgbGV0IHQyID0gdDJcbiAgICAgIGxldCB0MyA9IHQzXG4gICAgICBsZXQgdDQgPSB0NFxuXG4gICAgICBsZXQgYW5vbiBzcGVjID1cbiAgICAgICAgQW5vbnMuR3JhbW1hci5pbnZhcmlhbnQgc3BlYy5ncmFtbWFyO1xuICAgICAgICB7IHBhcmFtID1cbiAgICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gc3BlYy5wID4+fCBmdW4gdiBrIC0+IGsgdilcbiAgICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gc3BlYy5ncmFtbWFyKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGVzY2FwZV9hbm9uIH5maW5hbF9hbm9uID1cbiAgICAgIEFub25zLmVzY2FwZSAodDIgZmluYWxfYW5vbiAoc2VxdWVuY2UgKFwiQVJHXCIgJTogc3RyaW5nKSkpIHw+IGFub25cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gRmxhZ1xuXG4gICAgICB0eXBlICdhIGZsYWcgPSAnYSB0XG5cbiAgICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgICBsZXQgb25lX29yX21vcmUgPSBvbmVfb3JfbW9yZVxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgPSBvbmVfb3JfbW9yZV9hc19wYWlyXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCA9IG9uZV9vcl9tb3JlX2FzX2xpc3RcbiAgICAgIGxldCBub19hcmcgPSBub19hcmdcbiAgICAgIGxldCBub19hcmdfcmVnaXN0ZXIgPSBub19hcmdfcmVnaXN0ZXJcbiAgICAgIGxldCBub19hcmdfYWJvcnQgPSBub19hcmdfYWJvcnRcbiAgICAgIGxldCBub19hcmdfc29tZSA9IG5vX2FyZ19zb21lXG4gICAgICBsZXQgb3B0aW9uYWwgPSBvcHRpb25hbFxuICAgICAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCA9IG9wdGlvbmFsX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHJlcXVpcmVkID0gcmVxdWlyZWRcblxuICAgICAgbGV0IGZsYWdfaW50ZXJuYWxcbiAgICAgICAgICAgID8oYWxpYXNlcyA9IFtdKVxuICAgICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgbW9kZVxuICAgICAgICAgICAgfmRvY1xuICAgICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgID1cbiAgICAgICAgbGV0IG5vcm1hbGl6ZSBmbGFnID0gbm9ybWFsaXplIEtleV90eXBlLkZsYWcgZmxhZyBpblxuICAgICAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgICAgIGxldCBhbGlhc2VzID0gTGlzdC5tYXAgfmY6bm9ybWFsaXplIGFsaWFzZXMgaW5cbiAgICAgICAgbGV0IHsgcmVhZDsgYWN0aW9uOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gbW9kZSBuYW1lIGluXG4gICAgICAgIGxldCBjaGVja19hdmFpbGFibGUgPVxuICAgICAgICAgIG1hdGNoIG51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IChpZ25vcmUgOiBVbml2X21hcC50IC0+IHVuaXQpXG4gICAgICAgICAgfCB0cnVlIC0+IGZ1biBlbnYgLT4gaWdub3JlIChyZWFkIGVudiA6IF8pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuYW1lX21hdGNoaW5nID1cbiAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSBmdWxsX2ZsYWdfcmVxdWlyZWQgdGhlbiBgRnVsbF9tYXRjaF9yZXF1aXJlZCBlbHNlIGBQcmVmaXhcbiAgICAgICAgaW5cbiAgICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IEFub25zLlBhcnNlci5mcm9tX2VudiAoZnVuIGVudiBtIC0+IG0gKHJlYWQgZW52KSkpXG4gICAgICAgICAgICA7IGZsYWdzID1cbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgWyB7IG5hbWVcbiAgICAgICAgICAgICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgICAgICAgICAgICAgOyBkb2MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBmb3JjZSBleHRyYV9kb2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZXh0cmFfZG9jIC0+IFslc3RyaW5nIFwiJXtkb2N9ICV7ZXh0cmFfZG9jfVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZG9jKVxuICAgICAgICAgICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZVxuICAgICAgICAgICAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nXG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IGZsYWcgPSBmbGFnX2ludGVybmFsIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbXVxuXG4gICAgICBsZXQgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG4gICAgICAgICAgICA/YWxpYXNlc1xuICAgICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgYXJnX3R5cGVcbiAgICAgICAgICAgIHNleHBfb2ZfZGVmYXVsdFxuICAgICAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgICAgIH5kb2NcbiAgICAgICAgPVxuICAgICAgICBsZXQgZG9jID1cbiAgICAgICAgICBtYXRjaCBzZXhwX29mX2RlZmF1bHQgZGVmYXVsdCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20gXCJfXCIgLT4gZG9jXG4gICAgICAgICAgfCBkZWZhdWx0X3NleHAgLT4gc3ByaW50ZiAhXCIlcyAoZGVmYXVsdDogJXtTZXhwfSlcIiBkb2MgZGVmYXVsdF9zZXhwXG4gICAgICAgIGluXG4gICAgICAgIGZsYWdcbiAgICAgICAgICA/YWxpYXNlc1xuICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgKG9wdGlvbmFsX3dpdGhfZGVmYXVsdCBkZWZhdWx0IGFyZ190eXBlKVxuICAgICAgICAgIH5kb2NcbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHBhcmFtXG5cbiAgICAgICAgICBsZXQgcmV0dXJuID0gY29uc3RcbiAgICAgICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBwYWlyID0gYm90aFxuICAgIGVuZFxuXG4gICAgbGV0IGZsYWdzX29mX2FyZ3NfZXhuIGFyZ3MgPVxuICAgICAgTGlzdC5mb2xkIGFyZ3MgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIHNwZWMsIGRvYykgLT5cbiAgICAgICAgbGV0IGdlbiBmIGZsYWdfdHlwZSA9XG4gICAgICAgICAgc3RlcCAoZnVuIG0geCAtPlxuICAgICAgICAgICAgZiB4O1xuICAgICAgICAgICAgbSlcbiAgICAgICAgICArPiBmbGFnIG5hbWUgZmxhZ190eXBlIH5kb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhbGwgZiBhcmdfdHlwZSA9IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZikgKG9wdGlvbmFsIGFyZ190eXBlKSBpblxuICAgICAgICBsZXQgc2V0IHIgYXJnX3R5cGUgPSBjYWxsIChmdW4geCAtPiByIDo9IHgpIGFyZ190eXBlIGluXG4gICAgICAgIGxldCBzZXRfYm9vbCByIGIgPSBnZW4gKGZ1biBwYXNzZWQgLT4gaWYgcGFzc2VkIHRoZW4gciA6PSBiKSBub19hcmcgaW5cbiAgICAgICAgYWNjXG4gICAgICAgICsrXG4gICAgICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgICAgICB8IEFyZy5Vbml0IGYgLT4gZ2VuIChmdW4gcGFzc2VkIC0+IGlmIHBhc3NlZCB0aGVuIGYgKCkpIG5vX2FyZ1xuICAgICAgICB8IEFyZy5TZXQgciAtPiBzZXRfYm9vbCByIHRydWVcbiAgICAgICAgfCBBcmcuQ2xlYXIgciAtPiBzZXRfYm9vbCByIGZhbHNlXG4gICAgICAgIHwgQXJnLlN0cmluZyBmIC0+IGNhbGwgZiBzdHJpbmdcbiAgICAgICAgfCBBcmcuU2V0X3N0cmluZyByIC0+IHNldCByIHN0cmluZ1xuICAgICAgICB8IEFyZy5JbnQgZiAtPiBjYWxsIGYgaW50XG4gICAgICAgIHwgQXJnLlNldF9pbnQgciAtPiBzZXQgciBpbnRcbiAgICAgICAgfCBBcmcuRmxvYXQgZiAtPiBjYWxsIGYgZmxvYXRcbiAgICAgICAgfCBBcmcuU2V0X2Zsb2F0IHIgLT4gc2V0IHIgZmxvYXRcbiAgICAgICAgfCBBcmcuQm9vbCBmIC0+IGNhbGwgZiBib29sXG4gICAgICAgIHwgQXJnLlN5bWJvbCAoc3ltcywgZikgLT5cbiAgICAgICAgICBsZXQgYXJnX3R5cGUgPVxuICAgICAgICAgICAgQXJnX3R5cGUub2ZfYWxpc3RfZXhuXG4gICAgICAgICAgICAgIH5saXN0X3ZhbHVlc19pbl9oZWxwOmZhbHNlXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBzeW1zIH5mOihmdW4gc3ltIC0+IHN5bSwgc3ltKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGNhbGwgZiBhcmdfdHlwZVxuICAgICAgICB8IEFyZy5SZXN0IGYgLT4gZ2VuIChmdW4geCAtPiBPcHRpb24uaXRlciB4IH5mOihMaXN0Lml0ZXIgfmYpKSBlc2NhcGVcbiAgICAgICAgfCBBcmcuVHVwbGUgXyAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlR1cGxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKEFyZy5FeHBhbmQgXykgW0BpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAwNSwgMCldKSAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLkV4cGFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChBcmcuUmVzdF9hbGwgXykgW0BpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAxMiwgMCldKSAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlJlc3RfYWxsIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCIpXG4gICAgOztcblxuICAgIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEZsYWcuRGVwcmVjYXRlZFxuICAgICAgaW5jbHVkZSBBbm9ucy5EZXByZWNhdGVkXG4gICAgZW5kXG5cbiAgICBsZXQgYXJnX25hbWVzIHBhcmFtID1cbiAgICAgIGxldCB0ID0gcGFyYW0ucGFyYW0gaW5cbiAgICAgIGxldCBmbGFnX25hbWVzID0gTWFwLmtleXMgKEZsYWcuSW50ZXJuYWwuY3JlYXRlICh0LmZsYWdzICgpKSkgaW5cbiAgICAgIGxldCBhbm9uX25hbWVzID0gQW5vbnMuR3JhbW1hci5uYW1lcyAodC51c2FnZSAoKSkgaW5cbiAgICAgIExpc3QuY29uY2F0IFsgZmxhZ19uYW1lczsgYW5vbl9uYW1lcyBdXG4gICAgOztcblxuICAgIG1vZHVsZSBDaG9vc2Vfb25lID0gc3RydWN0XG4gICAgICBtb2R1bGUgQ2hvaWNlX25hbWUgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgbGlzdF90b19zdHJpbmcgOiB0IGxpc3QgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBjcmVhdGVfZXhuIDogJ2EgcGFyYW0gLT4gdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICAgICAgZW5kXG5cbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4gICAgICAgIGxldCBjcmVhdGVfZXhuIHBhcmFtID1cbiAgICAgICAgICBsZXQgbmFtZXMgPSBhcmdfbmFtZXMgcGFyYW0gaW5cbiAgICAgICAgICBsZXQgbmFtZXNfd2l0aF9jb21tYXMgPSBMaXN0LmZpbHRlciBuYW1lcyB+ZjooZnVuIHMgLT4gU3RyaW5nLmNvbnRhaW5zIHMgJywnKSBpblxuICAgICAgICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBuYW1lc193aXRoX2NvbW1hcylcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIkZvciBzaW1wbGljaXR5LCBbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGRvZXMgbm90IHN1cHBvcnQgbmFtZXMgd2l0aCBcXFxuICAgICAgICAgICAgICAgY29tbWFzLlwiXG4gICAgICAgICAgICAgIG5hbWVzX3dpdGhfY29tbWFzXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nIGxpc3RdO1xuICAgICAgICAgIG1hdGNoIG5hbWVzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZSBcIltjaG9vc2Vfb25lXSBleHBlY3RzIGNob2ljZXMgdG8gcmVhZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlwiXVxuICAgICAgICAgIHwgXyA6OiBfIC0+IG5hbWVzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIlxuICAgICAgICBsZXQgbGlzdF90b19zdHJpbmcgdHMgPSBMaXN0Lm1hcCB0cyB+Zjp0b19zdHJpbmcgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuICBcIlxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IHN0cnVjdFxuICAgICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgY2hvb3NlX29uZVxuICAgICAgICAgICAgKHR5cGUgYSBiKVxuICAgICAgICAgICAgKHRzIDogYSBvcHRpb24gcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3QubWFwIHRzIH5mOihmdW4gdCAtPiBDaG9pY2VfbmFtZS5jcmVhdGVfZXhuIHQsIHQpXG4gICAgICAgICAgfD4gTWFwLm9mX2FsaXN0IChtb2R1bGUgQ2hvaWNlX25hbWUpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBgRHVwbGljYXRlX2tleSBuYW1lIC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcIltDb21tYW5kLlNwZWMuY2hvb3NlX29uZV0gY2FsbGVkIHdpdGggZHVwbGljYXRlIG5hbWVcIlxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgWyVzZXhwX29mOiBDaG9pY2VfbmFtZS50XVxuICAgICAgICB8IGBPayB0cyAtPlxuICAgICAgICAgIE1hcC5mb2xkIHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOnQgaW5pdCAtPlxuICAgICAgICAgICAgbWFwMiBpbml0IHQgfmY6KGZ1biBpbml0IHZhbHVlIC0+XG4gICAgICAgICAgICAgIE9wdGlvbi5mb2xkIHZhbHVlIH5pbml0IH5mOihmdW4gaW5pdCB2YWx1ZSAtPiAobmFtZSwgdmFsdWUpIDo6IGluaXQpKSlcbiAgICAgICAgICB8PiBtYXAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IF8gOjogXyA6OiBfIGFzIHBhc3NlZCAtPlxuICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAhXCJDYW5ub3QgcGFzcyBtb3JlIHRoYW4gb25lIG9mIHRoZXNlOiBcXG5cXFxuICAgICAgICAgICAgICAgICBcXCAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBwYXNzZWQgfmY6ZnN0KVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICB8IFsgKF8sIHZhbHVlKSBdIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBpZl9ub3RoaW5nX2Nob3NlbiB3aXRoXG4gICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gKF8gOiBhKSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgfCBSYWlzZSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgfCBSZXR1cm5fbm9uZSAtPiAoU29tZSB2YWx1ZSA6IGIpKVxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgfCBEZWZhdWx0X3RvIHZhbHVlIC0+IHZhbHVlXG4gICAgICAgICAgICAgICB8IFJldHVybl9ub25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgIHwgUmFpc2UgLT5cbiAgICAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgICAgIVwiTXVzdCBwYXNzIG9uZSBvZiB0aGVzZTpcXG4gICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAgICAoTWFwLmtleXMgdHMpXG4gICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IENob29zZV9vbmUuSWZfbm90aGluZ19jaG9zZW5cblxuICAgIGxldCBjaG9vc2Vfb25lID0gQ2hvb3NlX29uZS5jaG9vc2Vfb25lXG4gICAgbGV0IGFuZF9hcmdfbmFtZXMgdCA9IG1hcCB0IH5mOihmdW4gdmFsdWUgLT4gdmFsdWUsIGFyZ19uYW1lcyB0KVxuXG4gICAgbGV0IGFuZF9hcmdfbmFtZSB0ID1cbiAgICAgIG1hdGNoIGFyZ19uYW1lcyB0IHdpdGhcbiAgICAgIHwgWyBuYW1lIF0gLT4gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgbmFtZSlcbiAgICAgIHwgbmFtZXMgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbYW5kX2FyZ19uYW1lXSBleHBlY3RzIGV4YWN0bHkgb25lIG5hbWUsIGdvdFwiIH5fOihuYW1lcyA6IHN0cmluZyBsaXN0KV1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdCBMYXp5LnRcbiAgICA7IGJvZHkgOiAocGF0aDpzdHJpbmcgbGlzdCAtPiB1bml0KSBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlIHQgOiBfIFNoYXBlLkdyb3VwX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmY6c3ViY29tbWFuZF90b19zaGFwZSlcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGFic19wYXRoID0gU2hhcGUuUHJpdmF0ZS5hYnNfcGF0aFxubGV0IGNvbXBfY3dvcmQgPSBDb21tYW5kX2Vudl92YXIuQ09NUF9DV09SRFxuXG5tb2R1bGUgRXhlYyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7ICgqIElmIFtwYXRoX3RvX2V4ZV0gaXMgcmVsYXRpdmUsIGludGVycHJldCB3LnIudC4gW3dvcmtpbmdfZGlyXSAqKVxuICAgICAgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGVudiA6IGVudiBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIHQgOiBTaGFwZS5FeGVjX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kID0gdC5jaGlsZF9zdWJjb21tYW5kXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEEgcHJveHkgY29tbWFuZCBpcyB0aGUgc3RydWN0dXJlIG9mIGFuIEV4ZWMgY29tbWFuZCBvYnRhaW5lZCBieSBydW5uaW5nIGl0IGluIGFcbiAgIHNwZWNpYWwgd2F5ICopXG5tb2R1bGUgUHJveHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBCYXNlIG9mIFNoYXBlLkJhc2VfaW5mby50XG4gICAgICB8IEdyb3VwIG9mICdhIFNoYXBlLkdyb3VwX2luZm8udFxuICAgICAgfCBFeGVjIG9mIFNoYXBlLkV4ZWNfaW5mby50XG4gICAgICB8IExhenkgb2YgJ2EgdCBMYXp5LnRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsga2luZCA6IHQgS2luZC50XG4gICAgfVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzZSBvZiBCYXNlLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwLnRcbiAgfCBFeGVjIG9mIEV4ZWMudFxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBzZXhwYWJsZV9zaGFwZSA6IHQgLT4gU2hhcGUuU2V4cGFibGUudCA9IGZ1bmN0aW9uXG4gIHwgQmFzZSBiYXNlIC0+IEJhc2UgKEJhc2Uuc2hhcGUgYmFzZSlcbiAgfCBFeGVjIGV4ZWMgLT4gRXhlYyAoRXhlYy5zaGFwZSBleGVjKVxuICB8IEdyb3VwIGdyb3VwIC0+IEdyb3VwIChHcm91cC5zaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZTpzZXhwYWJsZV9zaGFwZSBncm91cClcbiAgfCBMYXp5IHRodW5rIC0+IExhenkgKExhenkubWFwIH5mOnNleHBhYmxlX3NoYXBlIHRodW5rKVxuOztcblxudHlwZSAoJ21haW4sICdyZXN1bHQpIGJhc2ljX3NwZWNfY29tbWFuZCA9XG4gIHN1bW1hcnk6c3RyaW5nXG4gIC0+ID9yZWFkbWU6KHVuaXQgLT4gc3RyaW5nKVxuICAtPiAoJ21haW4sIHVuaXQgLT4gJ3Jlc3VsdCkgQmFzZS5TcGVjLnRcbiAgLT4gJ21haW5cbiAgLT4gdFxuXG5sZXQgZXh0ZW5kX2V4biB+bWVtIH5hZGQgbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGlmIG1lbSBtYXAga2V5XG4gIHRoZW4gZmFpbHdpdGhmIFwidGhlcmUgaXMgYWxyZWFkeSBhICVzIG5hbWVkICVzXCIgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSkga2V5ICgpO1xuICBhZGQgbWFwIH5rZXkgfmRhdGFcbjs7XG5cbmxldCBleHRlbmRfbWFwX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgZXh0ZW5kX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhIH5tZW06TWFwLm1lbSB+YWRkOk1hcC5zZXRcbjs7XG5cbmxldCBleHRlbmRfYWxpc3RfZXhuIGFsaXN0IGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG5cbiAgICBhbGlzdFxuICAgIGtleV90eXBlXG4gICAgfmtleVxuICAgIGRhdGFcbiAgICB+bWVtOihmdW4gYWxpc3Qga2V5IC0+IExpc3QuQXNzb2MubWVtIGFsaXN0IGtleSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuICAgIH5hZGQ6KGZ1biBhbGlzdCB+a2V5IH5kYXRhIC0+IExpc3QuQXNzb2MuYWRkIGFsaXN0IGtleSBkYXRhIH5lcXVhbDpTdHJpbmcuZXF1YWwpXG47O1xuXG5tb2R1bGUgQmFpbG91dF9kdW1wX2ZsYWcgPSBzdHJ1Y3RcbiAgbGV0IGFkZCBiYXNlIH5uYW1lIH5hbGlhc2VzIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCB+dGV4dCB+dGV4dF9zdW1tYXJ5ID1cbiAgICBsZXQgZmxhZ3MgPSBiYXNlLkJhc2UuZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPVxuICAgICAgZXh0ZW5kX21hcF9leG5cbiAgICAgICAgZmxhZ3NcbiAgICAgICAgS2V5X3R5cGUuRmxhZ1xuICAgICAgICB+a2V5Om5hbWVcbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gRmxhZy5OdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gaWdub3JlXG4gICAgICAgIDsgYWN0aW9uID0gUHJpbnRfaW5mb19hbmRfcXVpdCAoZnVuIGVudiAtPiB0ZXh0IGVudilcbiAgICAgICAgOyBkb2MgPSBzcHJpbnRmIFwiIHByaW50ICVzIGFuZCBleGl0XCIgdGV4dF9zdW1tYXJ5XG4gICAgICAgIDsgbmFtZV9tYXRjaGluZyA9IGBQcmVmaXhcbiAgICAgICAgfVxuICAgIGluXG4gICAgeyBiYXNlIHdpdGggQmFzZS5mbGFncyB9XG4gIDs7XG5lbmRcblxubGV0IGJhc2ljX3NwZWMgfnN1bW1hcnkgP3JlYWRtZSB7IEJhc2UuU3BlYy51c2FnZTsgZmxhZ3M7IGYgfSBtYWluID1cbiAgbGV0IGZsYWdzID0gZmxhZ3MgKCkgaW5cbiAgbGV0IHVzYWdlID0gdXNhZ2UgKCkgaW5cbiAgbGV0IGFub25zICgpID1cbiAgICBsZXQgb3BlbiBBbm9ucy5QYXJzZXIuRm9yX29wZW5pbmcgaW5cbiAgICBmICgpXG4gICAgPj58IGZ1biBrIGBQYXJzZV9hcmdzIC0+XG4gICAgbGV0IHRodW5rID0gayBtYWluIGluXG4gICAgZnVuIGBSdW5fbWFpbiAtPiB0aHVuayAoKVxuICBpblxuICBsZXQgZmxhZ3MgPSBGbGFnLkludGVybmFsLmNyZWF0ZSBmbGFncyBpblxuICBsZXQgYmFzZSA9IHsgQmFzZS5zdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFnczsgYW5vbnMgfSBpblxuICBsZXQgYmFzZSA9XG4gICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICBiYXNlXG4gICAgICB+bmFtZTpcIi1oZWxwXCJcbiAgICAgIH5hbGlhc2VzOlsgXCItP1wiIF1cbiAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbIFwiLS1oZWxwXCIgXVxuICAgICAgfnRleHRfc3VtbWFyeTpcInRoaXMgaGVscCB0ZXh0XCJcbiAgICAgIH50ZXh0OihmdW4gZW52IC0+IExhenkuZm9yY2UgKEVudi5maW5kX2V4biBlbnYgQmFzZS5oZWxwX2tleSkpXG4gIGluXG4gIEJhc2UgYmFzZVxuOztcblxubGV0IGJhc2ljID0gYmFzaWNfc3BlY1xubGV0IHN1YnNfa2V5IDogKHN0cmluZyAqIHQpIGxpc3QgRW52LktleS50ID0gRW52LmtleV9jcmVhdGUgXCJzdWJjb21tYW5kc1wiXG5cbmxldCBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgYWxpc3QgPVxuICBsZXQgc3ViY29tbWFuZHMgPVxuICAgIExhenkubWFwIGFsaXN0IH5mOihmdW4gYWxpc3QgLT5cbiAgICAgIGxldCBhbGlzdCA9XG4gICAgICAgIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKG5hbWUsIHQpIC0+IG5vcm1hbGl6ZSBLZXlfdHlwZS5TdWJjb21tYW5kIG5hbWUsIHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggU3RyaW5nLk1hcC5vZl9hbGlzdCBhbGlzdCB3aXRoXG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IG5hbWUgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgc3ViY29tbWFuZHMgbmFtZWQgJXNcIiBuYW1lICgpXG4gICAgICB8IGBPayBtYXAgLT5cbiAgICAgICAgKG1hdGNoIHByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgd2l0aFxuICAgICAgICAgfCBTb21lICgpIC0+IGFsaXN0XG4gICAgICAgICB8IE5vbmUgLT4gTWFwLnRvX2FsaXN0IG1hcCkpXG4gIGluXG4gIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG47O1xuXG5sZXQgZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgbGF6eV9ncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IChMYXp5LmZyb21fdmFsIGFsaXN0KVxuOztcblxubGV0IGV4ZWMgfnN1bW1hcnkgP3JlYWRtZSA/KGNoaWxkX3N1YmNvbW1hbmQgPSBbXSkgP2VudiB+cGF0aF90b19leGUgKCkgPVxuICBsZXQgd29ya2luZ19kaXIgPVxuICAgIEZpbGVuYW1lLmRpcm5hbWVcbiAgICBAQFxuICAgIG1hdGNoIHBhdGhfdG9fZXhlIHdpdGhcbiAgICB8IGBBYnNvbHV0ZSBfIHwgYFJlbGF0aXZlX3RvX21lIF8gLT4gQ2FtbC5TeXMuZXhlY3V0YWJsZV9uYW1lXG4gICAgfCBgUmVsYXRpdmVfdG9fYXJndjAgXyAtPiBDYW1sLlN5cy5hcmd2LigwKVxuICBpblxuICBsZXQgcGF0aF90b19leGUgPVxuICAgIG1hdGNoIHBhdGhfdG9fZXhlIHdpdGhcbiAgICB8IGBBYnNvbHV0ZSBwIC0+XG4gICAgICBpZiBub3QgKEZpbGVuYW1lLmlzX2Fic29sdXRlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYEFic29sdXRlIG11c3QgYmUgYWJzb2x1dGVcIlxuICAgICAgZWxzZSBwXG4gICAgfCBgUmVsYXRpdmVfdG9fbWUgcCB8IGBSZWxhdGl2ZV90b19hcmd2MCBwIC0+XG4gICAgICBpZiBub3QgKEZpbGVuYW1lLmlzX3JlbGF0aXZlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYFJlbGF0aXZlX3RvX21lIG11c3QgYmUgcmVsYXRpdmVcIlxuICAgICAgZWxzZSBwXG4gIGluXG4gIEV4ZWMgeyBzdW1tYXJ5OyByZWFkbWU7IHdvcmtpbmdfZGlyOyBwYXRoX3RvX2V4ZTsgY2hpbGRfc3ViY29tbWFuZDsgZW52IH1cbjs7XG5cbmxldCBvZl9sYXp5IHRodW5rID0gTGF6eSB0aHVua1xuXG5sZXQgcmVjIHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgOiBQcm94eS50XG4gID1cbiAgbGV0IGtpbmQgPVxuICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgIHNleHBhYmxlXG4gICAgICB+d29ya2luZ19kaXJcbiAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgaW5cbiAgeyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IHBhdGhfdG9fc3ViY29tbWFuZDsgY2hpbGRfc3ViY29tbWFuZDsga2luZCB9XG5cbmFuZCBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gID1cbiAgbWF0Y2ggKHNleHBhYmxlIDogU2hhcGUuU2V4cGFibGUudCkgd2l0aFxuICB8IEJhc2UgYiAtPiBQcm94eS5LaW5kLkJhc2UgYlxuICB8IEV4ZWMgZSAtPiBQcm94eS5LaW5kLkV4ZWMgZVxuICB8IExhenkgbCAtPlxuICAgIFByb3h5LktpbmQuTGF6eVxuICAgICAgKExhenkubWFwIGwgfmY6KGZ1biBzZXhwYWJsZSAtPlxuICAgICAgICAga2luZF9vZl9zZXhwYWJsZVxuICAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQpKVxuICB8IEdyb3VwIGcgLT5cbiAgICBQcm94eS5LaW5kLkdyb3VwXG4gICAgICB7IGcgd2l0aFxuICAgICAgICBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgTGF6eS5tYXBcbiAgICAgICAgICAgIGcuc3ViY29tbWFuZHNcbiAgICAgICAgICAgIH5mOlxuICAgICAgICAgICAgICAoTGlzdC5tYXAgfmY6KGZ1biAoc3RyLCBzZXhwYWJsZSkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHBhdGhfdG9fc3ViY29tbWFuZCA9IHBhdGhfdG9fc3ViY29tbWFuZCBAIFsgc3RyIF0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IHByb3h5ID1cbiAgICAgICAgICAgICAgICAgICBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgICAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBzdHIsIHByb3h5KSlcbiAgICAgIH1cbjs7XG5cbm1vZHVsZSB0eXBlIEZvcl92ZXJzaW9uX2luZm8gPSBzaWdcbiAgbW9kdWxlIFZlcnNpb25fdXRpbCA6IFZlcnNpb25fdXRpbFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgdHlwZSB0ID0gVGltZV9mbG9hdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBWZXJzaW9uX2luZm8gKE0gOiBGb3JfdmVyc2lvbl9pbmZvKSA9IHN0cnVjdFxuICBvcGVuIE1cblxuICBsZXQgcHJpbnRfdmVyc2lvbiB+dmVyc2lvbiA9IHByaW50X2VuZGxpbmUgKGZvcmNlIHZlcnNpb24pXG4gIGxldCBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvID0gcHJpbnRfZW5kbGluZSAoZm9yY2UgYnVpbGRfaW5mbylcblxuICBsZXQgY29tbWFuZCB+dmVyc2lvbiB+YnVpbGRfaW5mbyA9XG4gICAgYmFzaWNcbiAgICAgIH5zdW1tYXJ5OlwicHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvblwiXG4gICAgICBCYXNlLlNwZWMuKFxuICAgICAgICBlbXB0eVxuICAgICAgICArPiBmbGFnIFwiLXZlcnNpb25cIiBub19hcmcgfmRvYzpcIiBwcmludCB0aGUgdmVyc2lvbiBvZiB0aGlzIGJ1aWxkXCJcbiAgICAgICAgKz4gZmxhZyBcIi1idWlsZC1pbmZvXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgYnVpbGQgaW5mbyBmb3IgdGhpcyBidWlsZFwiKVxuICAgICAgKGZ1biB2ZXJzaW9uX2ZsYWcgYnVpbGRfaW5mb19mbGFnIC0+XG4gICAgICAgICBpZiBidWlsZF9pbmZvX2ZsYWdcbiAgICAgICAgIHRoZW4gcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mb1xuICAgICAgICAgZWxzZSBpZiB2ZXJzaW9uX2ZsYWdcbiAgICAgICAgIHRoZW4gcHJpbnRfdmVyc2lvbiB+dmVyc2lvblxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm87XG4gICAgICAgICAgIHByaW50X3ZlcnNpb24gfnZlcnNpb24pO1xuICAgICAgICAgZXhpdCAwKVxuICA7O1xuXG4gIGxldCByZWMgYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIHVudmVyc2lvbmVkID1cbiAgICBtYXRjaCB1bnZlcnNpb25lZCB3aXRoXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLXZlcnNpb25cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLXZlcnNpb25cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcInRoZSB2ZXJzaW9uIG9mIHRoaXMgYnVpbGRcIlxuICAgICAgICAgIH50ZXh0OihmdW4gXyAtPiBmb3JjZSB2ZXJzaW9uKVxuICAgICAgaW5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLWJ1aWxkLWluZm9cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLWJ1aWxkLWluZm9cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcImluZm8gYWJvdXQgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIGJ1aWxkX2luZm8pXG4gICAgICBpblxuICAgICAgQmFzZSBiYXNlXG4gICAgfCBHcm91cCBncm91cCAtPlxuICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgTGF6eS5tYXAgZ3JvdXAuR3JvdXAuc3ViY29tbWFuZHMgfmY6KGZ1biBzdWJjb21tYW5kcyAtPlxuICAgICAgICAgIGV4dGVuZF9hbGlzdF9leG5cbiAgICAgICAgICAgIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwidmVyc2lvblwiXG4gICAgICAgICAgICAoY29tbWFuZCB+dmVyc2lvbiB+YnVpbGRfaW5mbykpXG4gICAgICBpblxuICAgICAgR3JvdXAgeyBncm91cCB3aXRoIEdyb3VwLnN1YmNvbW1hbmRzIH1cbiAgICB8IEV4ZWMgZXhlYyAtPiBFeGVjIGV4ZWNcbiAgICB8IExhenkgdGh1bmsgLT4gTGF6eSAobGF6eSAoYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIGxpbmVzID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIiAoTGlzdC5zb3J0IGxpbmVzIH5jb21wYXJlOlN0cmluZy5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3ZlcnNpb24gPSBsYXp5IChub3JtYWxpemVfdmVyc2lvbl9saW5lcyBWZXJzaW9uX3V0aWwudmVyc2lvbl9saXN0KVxuXG4gIGxldCBkZWZhdWx0X2J1aWxkX2luZm8gPVxuICAgIGxhenlcbiAgICAgICgqIGxhenkgdG8gYXZvaWQgbG9hZGluZyBhbGwgdGhlIHRpbWUgem9uZSBzdHVmZiBhdCB0b3BsZXZlbCAqKVxuICAgICAgKFZlcnNpb25fdXRpbC5yZXByaW50X2J1aWxkX2luZm8gVGltZS5zZXhwX29mX3QpXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVmVyc2lvbl9pbmZvXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKHN0cnVjdFxuICAgICAgICBtb2R1bGUgVmVyc2lvbl91dGlsID0gc3RydWN0XG4gICAgICAgICAgbGV0IHZlcnNpb25fbGlzdCA9IFsgXCJoZzovL3NvbWUvcGF0aF8weGRlYWRiZWVmXCI7IFwic3NoOi8vYS9wYXRoXzhiYWRmMDBkXCIgXVxuICAgICAgICAgIGxldCByZXByaW50X2J1aWxkX2luZm8gdG9fc2V4cCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwIFRpbWVfZmxvYXQuZXBvY2gpXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBUaW1lID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gVGltZV9mbG9hdC50XG5cbiAgICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBUaW1lX2Zsb2F0LnRvX3N0cmluZ191dGMgdCB8PiBTZXhwLm9mX3N0cmluZ1xuICAgICAgICBlbmRcbiAgICAgIGVuZClcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IHZlcnNpb24gd2hlcmUgbXVsdGlwbGUgcmVwb3MgYXJlIHVzZWRcIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjpWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAgICAgaGc6Ly9zb21lL3BhdGhfMHhkZWFkYmVlZlxuICAgICAgICBzc2g6Ly9hL3BhdGhfOGJhZGYwMGQgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IGJ1aWxkIGluZm9cIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbzoobGF6eSBcInNvbWUgYnVpbGQgaW5mb1wiKTtcbiAgICAgIFslZXhwZWN0IHt8IHNvbWUgYnVpbGQgaW5mbyB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgcmVjIHN1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2UgeCAtPiB4LnN1bW1hcnlcbiAgfCBHcm91cCB4IC0+IHguc3VtbWFyeVxuICB8IEV4ZWMgeCAtPiB4LnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IHN1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5tb2R1bGUgU3BlYyA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuU3BlY1xuXG4gIGxldCBwYXRoID0gbWFwIH5mOlBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BlYyA9IFNwZWMuRGVwcmVjYXRlZFxuXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyeVxuXG4gIGxldCByZWMgZ2V0X2ZsYWdfbmFtZXMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBiYXNlIC0+IGJhc2UuQmFzZS5mbGFncyB8PiBTdHJpbmcuTWFwLmtleXNcbiAgICB8IExhenkgdGh1bmsgLT4gZ2V0X2ZsYWdfbmFtZXMgKExhenkuZm9yY2UgdGh1bmspXG4gICAgfCBHcm91cCBfIHwgRXhlYyBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBoZWxwX3JlY3Vyc2l2ZSB+Y21kIH53aXRoX2ZsYWdzIH5leHBhbmRfZG90cyB0IHMgPVxuICAgIGxldCByZWMgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzID1cbiAgICAgIGxldCBuZXdfcyA9IHMgXiAoaWYgZXhwYW5kX2RvdHMgdGhlbiBjbWQgZWxzZSBcIi5cIikgXiBcIiBcIiBpblxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IExhenkgdGh1bmsgLT5cbiAgICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICAgICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgICAgbGV0IGJhc2VfaGVscCA9IHMgXiBjbWQsIHN1bW1hcnkgKEJhc2UgYmFzZSkgaW5cbiAgICAgICAgaWYgd2l0aF9mbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYmFzZV9oZWxwXG4gICAgICAgICAgOjogTGlzdC5tYXBcbiAgICAgICAgICAgICAgIH5mOihmdW4gKGZsYWcsIGgpIC0+IG5ld19zIF4gZmxhZywgaClcbiAgICAgICAgICAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgICAgICAgICAgIH5jb21wYXJlOkJhc2UuRGVwcmVjYXRlZC5zdWJjb21tYW5kX2NtcF9mc3RcbiAgICAgICAgICAgICAgICAgIChCYXNlLkRlcHJlY2F0ZWQuZmxhZ3NfaGVscCB+ZGlzcGxheV9oZWxwX2ZsYWdzOmZhbHNlIGJhc2UpKVxuICAgICAgICBlbHNlIFsgYmFzZV9oZWxwIF1cbiAgICAgIHwgR3JvdXAgeyBzdW1tYXJ5OyBzdWJjb21tYW5kczsgcmVhZG1lID0gXzsgYm9keSA9IF8gfSAtPlxuICAgICAgICAocyBeIGNtZCwgc3VtbWFyeSlcbiAgICAgICAgOjogKExhenkuZm9yY2Ugc3ViY29tbWFuZHNcbiAgICAgICAgICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTpCYXNlLkRlcHJlY2F0ZWQuc3ViY29tbWFuZF9jbXBfZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KGZ1biAoY21kJywgdCkgLT4gaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQ6Y21kJyB0IG5ld19zKSlcbiAgICAgIHwgRXhlYyBfIC0+XG4gICAgICAgICgqIENvbW1hbmQuZXhlYyBkb2VzIG5vdCBzdXBwb3J0IGRlcHJlY2F0ZWQgY29tbWFuZHMgKilcbiAgICAgICAgW11cbiAgICBpblxuICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfdW5peCAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3ZhciA6IEZvcl91bml4IHdpdGggdHlwZSBlbnZfdmFyIDo9IHN0cmluZykgPVxuc3RydWN0XG4gIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIpXG5cbiAgbW9kdWxlIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyIDogRm9yX3VuaXggd2l0aCB0eXBlIGVudl92YXIgOj0gQ29tbWFuZF9lbnZfdmFyLnQgPVxuICBzdHJ1Y3RcbiAgICAoKiBXZSBmb3JjZSBhY2Nlc3MgdG8gZW52IHZhcnMgdG8gZ28gdGhyb3VnaCBbQ29tbWFuZF9lbnZfdmFyXSBzbyB0aGF0IHdlIGNhbiBrZWVwIGFuXG4gICAgICAgYWNjdXJhdGUgZW51bWVyYXRpb24gb2YgdGhlIHZhcmlhYmxlcyB3ZSB1c2UuICopXG5cbiAgICBpbmNsdWRlIEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXJcblxuICAgIG1vZHVsZSBVbml4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFVuaXhcblxuICAgICAgbGV0IHB1dGVudiB+a2V5IH5kYXRhID0gcHV0ZW52IH5rZXk6KENvbW1hbmRfZW52X3Zhci50b19zdHJpbmcga2V5KSB+ZGF0YVxuICAgICAgbGV0IHVuc2V0ZW52IGtleSA9IHVuc2V0ZW52IChDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIGtleSlcbiAgICAgIGxldCB1bnNhZmVfZ2V0ZW52IGtleSA9IHVuc2FmZV9nZXRlbnYgKENvbW1hbmRfZW52X3Zhci50b19zdHJpbmcga2V5KVxuXG4gICAgICB0eXBlIGVudiA9XG4gICAgICAgIFsgYFJlcGxhY2Ugb2YgKENvbW1hbmRfZW52X3Zhci50ICogc3RyaW5nKSBsaXN0XG4gICAgICAgIHwgYEV4dGVuZCBvZiAoQ29tbWFuZF9lbnZfdmFyLnQgKiBzdHJpbmcpIGxpc3RcbiAgICAgICAgfCBgT3ZlcnJpZGUgb2YgKENvbW1hbmRfZW52X3Zhci50ICogc3RyaW5nIG9wdGlvbikgbGlzdFxuICAgICAgICB8IGBSZXBsYWNlX3JhdyBvZiBzdHJpbmcgbGlzdFxuICAgICAgICBdXG5cbiAgICAgIGxldCBjb252ZXJ0X2VudiBlbnYgPVxuICAgICAgICBsZXQgY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QgPVxuICAgICAgICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAoZW52X3Zhciwgc3RyKSAtPiBDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIGVudl92YXIsIHN0cilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZW52IHdpdGhcbiAgICAgICAgfCBgUmVwbGFjZSBsaXN0IC0+IGBSZXBsYWNlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgRXh0ZW5kIGxpc3QgLT4gYEV4dGVuZCAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYE92ZXJyaWRlIGxpc3QgLT4gYE92ZXJyaWRlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgUmVwbGFjZV9yYXcgXyBhcyByZXBsYWNlIC0+IHJlcGxhY2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52ICgpID1cbiAgICAgICAgZXhlYyB+cHJvZyB+YXJndiA/dXNlX3BhdGggP2VudjooT3B0aW9uLm1hcCBlbnYgfmY6Y29udmVydF9lbnYpICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX3Byb2Nlc3NfZW52ID93b3JraW5nX2RpciA/cHJvZ19zZWFyY2hfcGF0aCA/YXJndjAgfnByb2cgfmFyZ3MgfmVudiAoKSA9XG4gICAgICAgIGNyZWF0ZV9wcm9jZXNzX2VudlxuICAgICAgICAgID93b3JraW5nX2RpclxuICAgICAgICAgID9wcm9nX3NlYXJjaF9wYXRoXG4gICAgICAgICAgP2FyZ3YwXG4gICAgICAgICAgfnByb2dcbiAgICAgICAgICB+YXJnc1xuICAgICAgICAgIH5lbnY6KGNvbnZlcnRfZW52IGVudilcbiAgICAgICAgICAoKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBGb3JfdW5peF93aXRoX2NvbW1hbmRfZW52X3ZhclxuXG4gICgqIENsZWFyIHRoZSBzZXR0aW5nIG9mIGVudmlyb25tZW50IHZhcmlhYmxlIGFzc29jaWF0ZWQgd2l0aCBjb21tYW5kLWxpbmVcbiAgICAgY29tcGxldGlvbiBhbmQgcmVjdXJzaXZlIGhlbHAgc28gdGhhdCBzdWJwcm9jZXNzZXMgZG9uJ3Qgc2VlIHRoZW0uXG5cbiAgICAgVXNlIFt1bnNhZmVfZ2V0ZW52XSBzbyBzZXR1aWQtcm9vdCBwcm9ncmFtcyBjYW4gc3RpbGwgcmVhZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAgIFRoZXJlIGlzIG5vIHNlY3VyaXR5IHJpc2sgaGVyZSBiZWNhdXNlIHRoZSB2YWx1ZXMgYXJlIG9ubHkgdXNlZCBhcyB0cmlnZ2VycyB0byBkdW1wXG4gICAgIG91dCBjb21tYW5kIGluZm9ybWF0aW9uLiAqKVxuICBsZXQgZ2V0ZW52X2FuZF9jbGVhciB2YXIgPVxuICAgIGxldCB2YWx1ZSA9IFVuaXgudW5zYWZlX2dldGVudiB2YXIgaW5cbiAgICBpZiBPcHRpb24uaXNfc29tZSB2YWx1ZSB0aGVuIFVuaXgudW5zZXRlbnYgdmFyO1xuICAgIHZhbHVlXG4gIDs7XG5cbiAgbGV0IG1heWJlX2NvbXBfY3dvcmQgKCkgPSBnZXRlbnZfYW5kX2NsZWFyIGNvbXBfY3dvcmQgfD4gT3B0aW9uLm1hcCB+ZjpJbnQub2Zfc3RyaW5nXG5cbiAgbGV0IHNldF9jb21wX2N3b3JkIG5ld192YWx1ZSA9XG4gICAgbGV0IG5ld192YWx1ZSA9IEludC50b19zdHJpbmcgbmV3X3ZhbHVlIGluXG4gICAgVW5peC5wdXRlbnYgfmtleTpjb21wX2N3b3JkIH5kYXRhOm5ld192YWx1ZVxuICA7O1xuXG4gIG1vZHVsZSBFeGVjID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeGVjXG5cbiAgICBsZXQgZXhlY193aXRoX2FyZ3MgdCB+YXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgbGV0IHByb2cgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZSBpblxuICAgICAgbGV0IGFyZ3MgPSB0LmNoaWxkX3N1YmNvbW1hbmQgQCBhcmdzIGluXG4gICAgICBsZXQgZW52ID0gdC5lbnYgaW5cbiAgICAgIE9wdGlvbi5pdGVyIG1heWJlX25ld19jb21wX2N3b3JkIH5mOihmdW4gbiAtPlxuICAgICAgICAoKiBUaGUgbG9naWMgZm9yIHRyYWNraW5nIFttYXliZV9uZXdfY29tcF9jd29yZF0gZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyXG4gICAgICAgICAgIHRoaXMgZXhlYyBzcGVjaWZpZXMgYSBjaGlsZCBzdWJjb21tYW5kLiBJZiBpdCBkb2VzLCBDT01QX0NXT1JEIG5lZWRzIHRvIGJlIHNldFxuICAgICAgICAgICBoaWdoZXIgdG8gYWNjb3VudCBmb3IgdGhlIGFyZ3VtZW50cyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNoaWxkIHN1YmNvbW1hbmQuICopXG4gICAgICAgIHNldF9jb21wX2N3b3JkIChuICsgTGlzdC5sZW5ndGggdC5jaGlsZF9zdWJjb21tYW5kKSk7XG4gICAgICBuZXZlcl9yZXR1cm5zXG4gICAgICAgIChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyLlVuaXguZXhlYyA/ZW52IH5wcm9nIH5hcmd2Oihwcm9nIDo6IGFyZ3MpICgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhcGUuU2V4cGFibGVcblxuICAgIGxldCByZWFkX3N0ZG91dF9hbmRfc3RkZXJyIChwcm9jZXNzX2luZm8gOiBVbml4LlByb2Nlc3NfaW5mby50KSA9XG4gICAgICAoKiBXZSBuZWVkIHRvIHJlYWQgZWFjaCBvZiBzdGRvdXQgYW5kIHN0ZGVyciBpbiBhIHNlcGFyYXRlIHRocmVhZCB0byBhdm9pZCBkZWFkbG9ja3NcbiAgICAgICAgIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGRlY2lkZXMgdG8gd2FpdCBmb3IgYSByZWFkIG9uIG9uZSBiZWZvcmUgY2xvc2luZyB0aGUgb3RoZXIuXG4gICAgICAgICBCdWZmZXJpbmcgbWF5IGhpZGUgdGhpcyBwcm9ibGVtIHVudGlsIG91dHB1dCBpcyBcInN1ZmZpY2llbnRseSBsYXJnZVwiLiAqKVxuICAgICAgbGV0IHN0YXJ0X3JlYWRpbmcgZGVzY3IgaW5mbyA9XG4gICAgICAgIGxldCBvdXRwdXQgPSBTZXRfb25jZS5jcmVhdGUgKCkgaW5cbiAgICAgICAgbGV0IHRocmVhZCA9XG4gICAgICAgICAgVGhyZWFkLmNyZWF0ZVxuICAgICAgICAgICAgfm9uX3VuY2F1Z2h0X2V4bjpgUHJpbnRfdG9fc3RkZXJyXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBkZXNjciB8PiBVbml4LmluX2NoYW5uZWxfb2ZfZGVzY3IgfD4gSW5fY2hhbm5lbC5pbnB1dF9hbGwpXG4gICAgICAgICAgICAgICB8PiBTZXRfb25jZS5zZXRfZXhuIG91dHB1dCBbJWhlcmVdKVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgc3RhZ2UgKGZ1biAoKSAtPlxuICAgICAgICAgIFRocmVhZC5qb2luIHRocmVhZDtcbiAgICAgICAgICBVbml4LmNsb3NlIGRlc2NyO1xuICAgICAgICAgIG1hdGNoIFNldF9vbmNlLmdldCBvdXRwdXQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiByYWlzZV9zIFslbWVzc2FnZSBcIkJVRyBmYWlsZWQgdG8gcmVhZFwiIChpbmZvIDogSW5mby50KV1cbiAgICAgICAgICB8IFNvbWUgKE9rIG91dHB1dCkgLT4gb3V0cHV0XG4gICAgICAgICAgfCBTb21lIChFcnJvciBleG4pIC0+IHJhaXNlIGV4bilcbiAgICAgIGluXG4gICAgICAoKiBXZSBtaWdodCBoYW5nIGZvcmV2ZXIgdHJ5aW5nIHRvIGpvaW4gdGhlIHJlYWRpbmcgdGhyZWFkcyBpZiB0aGUgY2hpbGQgcHJvY2VzcyBrZWVwc1xuICAgICAgICAgdGhlIGZpbGUgZGVzY3JpcHRvciBvcGVuLiBOb3QgaGFuZGxpbmcgdGhpcyBiZWNhdXNlIEkgdGhpbmsgd2UndmUgbmV2ZXIgc2VlbiBpdFxuICAgICAgICAgaW4gdGhlIHdpbGQgZGVzcGl0ZSBydW5uaW5nIHZ1bG5lcmFibGUgY29kZSBmb3IgeWVhcnMuICopXG4gICAgICAoKiBXZSBoYXZlIHRvIHN0YXJ0IGJvdGggdGhyZWFkcyBiZWZvcmUgam9pbmluZyBhbnkgb2YgdGhlbS4gKilcbiAgICAgIGxldCBmaW5pc2hfc3Rkb3V0ID0gc3RhcnRfcmVhZGluZyBwcm9jZXNzX2luZm8uc3Rkb3V0IChJbmZvLm9mX3N0cmluZyBcInN0ZG91dFwiKSBpblxuICAgICAgbGV0IGZpbmlzaF9zdGRlcnIgPSBzdGFydF9yZWFkaW5nIHByb2Nlc3NfaW5mby5zdGRlcnIgKEluZm8ub2Zfc3RyaW5nIFwic3RkZXJyXCIpIGluXG4gICAgICB1bnN0YWdlIGZpbmlzaF9zdGRvdXQgKCksIHVuc3RhZ2UgZmluaXNoX3N0ZGVyciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCA9XG4gICAgICBsZXQgcHJvY2Vzc19pbmZvID1cbiAgICAgICAgVW5peC5jcmVhdGVfcHJvY2Vzc19lbnZcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5wcm9nOihhYnNfcGF0aCB+ZGlyOndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlKVxuICAgICAgICAgIH5hcmdzOmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+ZW52OlxuICAgICAgICAgICAgKGxldCBoZWxwX3NleHAgPSBzdXBwb3J0ZWRfdmVyc2lvbnMgfD4gSW50LlNldC5zZXhwX29mX3QgfD4gU2V4cC50b19zdHJpbmcgaW5cbiAgICAgICAgICAgICBgRXh0ZW5kIFsgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQLCBoZWxwX3NleHAgXSlcbiAgICAgIGluXG4gICAgICBVbml4LmNsb3NlIHByb2Nlc3NfaW5mby5zdGRpbjtcbiAgICAgIGxldCBzdGRvdXQsIHN0ZGVyciA9IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgcHJvY2Vzc19pbmZvIGluXG4gICAgICBpZ25vcmUgKFVuaXgud2FpdCAoYFBpZCBwcm9jZXNzX2luZm8ucGlkKSA6IFBpZC50ICogVW5peC5FeGl0X29yX3NpZ25hbC50KTtcbiAgICAgICgqIE5vdyB3ZSd2ZSBraWxsZWQgYWxsIHRoZSBwcm9jZXNzZXMgYW5kIHRocmVhZHMgd2UgbWFkZS4gKilcbiAgICAgIG1hdGNoIHN0ZG91dCB8PiBTZXhwLm9mX3N0cmluZyB8PiBWZXJzaW9uZWQudF9vZl9zZXhwIHw+IG9mX3ZlcnNpb25lZCB3aXRoXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJjYW5ub3QgcGFyc2UgY29tbWFuZCBzaGFwZVwiXG4gICAgICAgICAgICAgIH5fOihleG4gOiBleG4pXG4gICAgICAgICAgICAgIChzdGRvdXQgOiBzdHJpbmcpXG4gICAgICAgICAgICAgIChzdGRlcnIgOiBzdHJpbmcpXVxuICAgICAgfCB0IC0+IHRcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmaW5kICh0IDogdCkgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgICBtYXRjaCBwYXRoX3RvX3N1YmNvbW1hbmQgd2l0aFxuICAgICAgfCBbXSAtPiB0XG4gICAgICB8IHN1YiA6OiBzdWJzIC0+XG4gICAgICAgIChtYXRjaCB0IHdpdGhcbiAgICAgICAgIHwgQmFzZSBfIC0+IGZhaWx3aXRoZiBcInVuZXhwZWN0ZWQgc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgfCBMYXp5IHRodW5rIC0+IGZpbmQgKExhenkuZm9yY2UgdGh1bmspIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgIHwgRXhlYyB7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgY2hpbGRfc3ViY29tbWFuZDsgXyB9IC0+XG4gICAgICAgICAgIGZpbmRcbiAgICAgICAgICAgICAob2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZClcbiAgICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOihzdWIgOjogKHN1YnMgQCBjaGlsZF9zdWJjb21tYW5kKSlcbiAgICAgICAgIHwgR3JvdXAgZyAtPlxuICAgICAgICAgICAobWF0Y2ggTGlzdC5Bc3NvYy5maW5kIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpIH5lcXVhbDpTdHJpbmcuZXF1YWwgc3ViIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJ1bmtub3duIHN1YmNvbW1hbmQgJVNcIiBzdWIgKClcbiAgICAgICAgICAgIHwgU29tZSB0IC0+IGZpbmQgdCB+cGF0aF90b19zdWJjb21tYW5kOnN1YnMpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQgPVxuICAgIFNleHBhYmxlLm9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICB8PiBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOltdXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZV9vZl9wcm94eSBwcm94eSA6IFNoYXBlLnQgPSBzaGFwZV9vZl9wcm94eV9raW5kIHByb3h5LlByb3h5LmtpbmRcblxuICBhbmQgc2hhcGVfb2ZfZXhlICgpIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIgPVxuICAgIHNoYXBlX29mX3Byb3h5IChwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQpXG5cbiAgYW5kIHNoYXBlX29mX3Byb3h5X2tpbmQga2luZCA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgYlxuICAgIHwgTGF6eSBsIC0+IExhenkgKExhenkubWFwIH5mOnNoYXBlX29mX3Byb3h5X2tpbmQgbClcbiAgICB8IEdyb3VwIGcgLT5cbiAgICAgIEdyb3VwXG4gICAgICAgIHsgZyB3aXRoXG4gICAgICAgICAgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCBnLnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzaGFwZV9vZl9wcm94eSlcbiAgICAgICAgfVxuICAgIHwgRXhlYyAoeyBjaGlsZF9zdWJjb21tYW5kOyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IF8gfSBhcyBlKSAtPlxuICAgICAgRXhlYyAoZSwgc2hhcGVfb2ZfZXhlIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIpXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZSB0IDogU2hhcGUudCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgKEJhc2Uuc2hhcGUgYilcbiAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwLnNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlOnNoYXBlIGcpXG4gICAgfCBFeGVjICh7IEV4ZWMuY2hpbGRfc3ViY29tbWFuZDsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBfIH0gYXMgZSkgLT5cbiAgICAgIEV4ZWMgKEV4ZWMuc2hhcGUgZSwgc2hhcGVfb2ZfZXhlIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIpXG4gICAgfCBMYXp5IHRodW5rIC0+IHNoYXBlIChMYXp5LmZvcmNlIHRodW5rKVxuICA7O1xuXG4gIGxldCBnYXRoZXJfaGVscCB+cmVjdXJzaXZlIH5mbGFncyB+ZXhwYW5kX2RvdHMgc2hhcGUgPVxuICAgIGxldCByZWMgbG9vcCBwYXRoIGFjYyBzaGFwZSA9XG4gICAgICBsZXQgc3RyaW5nX29mX3BhdGggPSBpZiBleHBhbmRfZG90cyB0aGVuIFBhdGgudG9fc3RyaW5nIGVsc2UgUGF0aC50b19zdHJpbmdfZG90cyBpblxuICAgICAgbGV0IGdhdGhlcl9ncm91cCBwYXRoIGFjYyBzdWJjb21tYW5kcyA9XG4gICAgICAgIGxldCBmaWx0ZXJlZF9zdWJjb21tYW5kcyA9XG4gICAgICAgICAgKCogT25seSBzaG93IHRoZSBbaGVscF0gc3ViY29tbWFuZCBhdCB0b3AtbGV2ZWwuICopXG4gICAgICAgICAgaWYgUGF0aC5pc19lbXB0eSBwYXRoXG4gICAgICAgICAgdGhlbiBzdWJjb21tYW5kc1xuICAgICAgICAgIGVsc2UgTGlzdC5Bc3NvYy5yZW1vdmUgfmVxdWFsOlN0cmluZy4oID0gKSBzdWJjb21tYW5kcyBcImhlbHBcIlxuICAgICAgICBpblxuICAgICAgICBmaWx0ZXJlZF9zdWJjb21tYW5kc1xuICAgICAgICB8PiBMaXN0LnN0YWJsZV9zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IGhlbHBfc2NyZWVuX2NvbXBhcmUgKGZzdCBhKSAoZnN0IGIpKVxuICAgICAgICB8PiBMaXN0LmZvbGRcbiAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICB+ZjooZnVuIChhY2MgOiBTaGFwZS5GbGFnX2luZm8udCBGcXVldWUudCkgKHN1YmNvbW1hbmQsIHNoYXBlKSAtPlxuICAgICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kIGluXG4gICAgICAgICAgICAgICBsZXQgbmFtZSA9IHN0cmluZ19vZl9wYXRoIHBhdGggaW5cbiAgICAgICAgICAgICAgIGxldCBkb2MgPSBTaGFwZS5nZXRfc3VtbWFyeSBzaGFwZSBpblxuICAgICAgICAgICAgICAgbGV0IGFjYyA9IEZxdWV1ZS5lbnF1ZXVlIGFjYyB7IG5hbWU7IGRvYzsgYWxpYXNlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICAgIGlmIHJlY3Vyc2l2ZSB0aGVuIGxvb3AgcGF0aCBhY2Mgc2hhcGUgZWxzZSBhY2MpXG4gICAgICBpblxuICAgICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgICAgfCBFeGVjIChfLCBzaGFwZSkgLT5cbiAgICAgICAgKCogSWYgdGhlIGV4ZWN1dGFibGUgYmVpbmcgY2FsbGVkIGRvZXNuJ3QgdXNlIFtDb3JlLkNvbW1hbmRdLCB0aGVuIHNleHAgZXh0cmFjdGlvblxuICAgICAgICAgICB3aWxsIGZhaWwuICopXG4gICAgICAgICh0cnkgbG9vcCBwYXRoIGFjYyAoc2hhcGUgKCkpIHdpdGhcbiAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICB8IEdyb3VwIGcgLT4gZ2F0aGVyX2dyb3VwIHBhdGggYWNjIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpXG4gICAgICB8IEJhc2ljIGIgLT5cbiAgICAgICAgaWYgZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGIuZmxhZ3NcbiAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGZtdCAtPiBTdHJpbmcuKCA8PiApIGZtdC5uYW1lIFwiWy1oZWxwXVwiKVxuICAgICAgICAgIHw+IExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgZm10IC0+XG4gICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQ6Zm10Lm5hbWUgaW5cbiAgICAgICAgICAgIGxldCBmbXQgPSB7IGZtdCB3aXRoIG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIH0gaW5cbiAgICAgICAgICAgIEZxdWV1ZS5lbnF1ZXVlIGFjYyBmbXQpXG4gICAgICAgIGVsc2UgYWNjXG4gICAgICB8IExhenkgdGh1bmsgLT4gbG9vcCBwYXRoIGFjYyAoTGF6eS5mb3JjZSB0aHVuaylcbiAgICBpblxuICAgIGxvb3AgUGF0aC5lbXB0eSBGcXVldWUuZW1wdHkgc2hhcGUgfD4gRnF1ZXVlLnRvX2xpc3RcbiAgOztcblxuICBsZXQgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHQgfmZsYWdzIH5wYXRoIH5zdW1tYXJ5IH5yZWFkbWUgfmZvcm1hdF9saXN0ID1cbiAgICB1bnBhcmFncmFwaHNcbiAgICAgIChMaXN0LmZpbHRlcl9vcHRcbiAgICAgICAgIFsgU29tZSBzdW1tYXJ5XG4gICAgICAgICA7IFNvbWUgKFN0cmluZy5jb25jYXQgWyBcIiAgXCI7IFBhdGgudG9fc3RyaW5nIHBhdGg7IFwiIFNVQkNPTU1BTkRcIiBdKVxuICAgICAgICAgOyByZWFkbWVcbiAgICAgICAgIDsgU29tZSAoaWYgZmxhZ3MgdGhlbiBcIj09PSBzdWJjb21tYW5kcyBhbmQgZmxhZ3MgPT09XCIgZWxzZSBcIj09PSBzdWJjb21tYW5kcyA9PT1cIilcbiAgICAgICAgIDsgU29tZSAoU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkudG9fc3RyaW5nIGZvcm1hdF9saXN0KVxuICAgICAgICAgXSlcbiAgOztcblxuICBsZXQgcmVjIGhlbHBfZm9yX3NoYXBlIHNoYXBlIHBhdGggfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlID1cbiAgICBsZXQgZm9ybWF0X2xpc3QgPSBnYXRoZXJfaGVscCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmUgc2hhcGUgaW5cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBCYXNpYyBiIC0+XG4gICAgICBsZXQgdXNhZ2UgPSBTaGFwZS5CYXNlX2luZm8uZ2V0X3VzYWdlIGIgaW5cbiAgICAgIHVucGFyYWdyYXBoc1xuICAgICAgICAoTGlzdC5maWx0ZXJfb3B0XG4gICAgICAgICAgIFsgU29tZSBiLnN1bW1hcnlcbiAgICAgICAgICAgOyBTb21lIChcIiAgXCIgXiBQYXRoLnRvX3N0cmluZyBwYXRoIF4gXCIgXCIgXiB1c2FnZSlcbiAgICAgICAgICAgOyBiLnJlYWRtZVxuICAgICAgICAgICA7IFNvbWUgXCI9PT0gZmxhZ3MgPT09XCJcbiAgICAgICAgICAgOyBTb21lIChTaGFwZS5GbGFnX2hlbHBfZGlzcGxheS50b19zdHJpbmcgYi5mbGFncylcbiAgICAgICAgICAgXSlcbiAgICB8IEdyb3VwIGcgLT5cbiAgICAgIGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0XG4gICAgICAgIH5mbGFnc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+cmVhZG1lOmcucmVhZG1lXG4gICAgICAgIH5zdW1tYXJ5Omcuc3VtbWFyeVxuICAgICAgICB+Zm9ybWF0X2xpc3RcbiAgICB8IEV4ZWMgKGUsIF8pIC0+XG4gICAgICBncm91cF9vcl9leGVjX2hlbHBfdGV4dFxuICAgICAgICB+ZmxhZ3NcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfnJlYWRtZTplLnJlYWRtZVxuICAgICAgICB+c3VtbWFyeTplLnN1bW1hcnlcbiAgICAgICAgfmZvcm1hdF9saXN0XG4gICAgfCBMYXp5IHRodW5rIC0+IGhlbHBfZm9yX3NoYXBlIChMYXp5LmZvcmNlIHRodW5rKSBwYXRoIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZVxuICA7O1xuXG4gIGxldCBoZWxwX3N1YmNvbW1hbmQgfnN1bW1hcnkgfnJlYWRtZSA9XG4gICAgYmFzaWNcbiAgICAgIH5zdW1tYXJ5OlwiZXhwbGFpbiBhIGdpdmVuIHN1YmNvbW1hbmQgKHBlcmhhcHMgcmVjdXJzaXZlbHkpXCJcbiAgICAgIEJhc2UuU3BlYy4oXG4gICAgICAgIGVtcHR5XG4gICAgICAgICs+IGZsYWcgXCItcmVjdXJzaXZlXCIgbm9fYXJnIH5kb2M6XCIgc2hvdyBzdWJjb21tYW5kcyBvZiBzdWJjb21tYW5kcywgZXRjLlwiXG4gICAgICAgICs+IGZsYWcgXCItZmxhZ3NcIiBub19hcmcgfmRvYzpcIiBzaG93IGZsYWdzIGFzIHdlbGwgaW4gcmVjdXJzaXZlIGhlbHBcIlxuICAgICAgICArPiBmbGFnIFwiLWV4cGFuZC1kb3RzXCIgbm9fYXJnIH5kb2M6XCIgZXhwYW5kIHN1YmNvbW1hbmRzIGluIHJlY3Vyc2l2ZSBoZWxwXCJcbiAgICAgICAgKz4gcGF0aFxuICAgICAgICArPiBlbnZcbiAgICAgICAgKz4gYW5vbiAobWF5YmUgKFwiU1VCQ09NTUFORFwiICU6IHN0cmluZykpKVxuICAgICAgKGZ1biByZWN1cnNpdmUgZmxhZ3MgZXhwYW5kX2RvdHMgcGF0aCAoZW52IDogRW52LnQpIGNtZF9vcHQgKCkgLT5cbiAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IHN1YnNfa2V5IHdpdGhcbiAgICAgICAgICAgfCBTb21lIHN1YnMgLT4gc3Vic1xuICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICgqIG1haW50YWluZWQgYnkgW2Rpc3BhdGNoXSAqKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBwYXRoID1cbiAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLnBvcF9oZWxwIHBhdGggaW5cbiAgICAgICAgICAgT3B0aW9uLmZvbGQgY21kX29wdCB+aW5pdDpwYXRoIH5mOihmdW4gcGF0aCBzdWJjb21tYW5kIC0+XG4gICAgICAgICAgICAgUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZClcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgcGF0aCwgc2hhcGUgPVxuICAgICAgICAgICBtYXRjaCBjbWRfb3B0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID0gTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjpzaGFwZSB8PiBMYXp5LmZyb21fdmFsIGluXG4gICAgICAgICAgICAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgaW5cbiAgICAgICAgICAgICBwYXRoLCBTaGFwZS5Hcm91cCB7IHJlYWRtZTsgc3VtbWFyeTsgc3ViY29tbWFuZHMgfVxuICAgICAgICAgICB8IFNvbWUgY21kIC0+XG4gICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgbG9va3VwX2V4cGFuZCAoTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjooZnVuIHggLT4geCwgYFByZWZpeCkpIGNtZCBTdWJjb21tYW5kXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgICBcInVua25vd24gc3ViY29tbWFuZCAlcyBmb3IgY29tbWFuZCAlczogJXNcIlxuICAgICAgICAgICAgICAgICAgY21kXG4gICAgICAgICAgICAgICAgICAoUGF0aC50b19zdHJpbmcgcGF0aClcbiAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgIHwgT2sgKHBvc3NpYmx5X2V4cGFuZGVkX25hbWUsIHQpIC0+XG4gICAgICAgICAgICAgICAgKCogRml4IHRoZSB1bmV4cGFuZGVkIHZhbHVlICopXG4gICAgICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLnJlcGxhY2VfZmlyc3QgfmZyb206Y21kIH50b186cG9zc2libHlfZXhwYW5kZWRfbmFtZSBwYXRoIGluXG4gICAgICAgICAgICAgICAgcGF0aCwgc2hhcGUgdClcbiAgICAgICAgIGluXG4gICAgICAgICBwcmludF9lbmRsaW5lIChoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cykpXG4gIDs7XG5cbiAgKCogVGhpcyBzY3JpcHQgd29ya3MgaW4gYm90aCBiYXNoICh2aWEgcmVhZGFycmF5KSBhbmQgenNoICh2aWEgcmVhZCAtQSkuICBJZiB5b3UgY2hhbmdlXG4gICAgIGl0LCBwbGVhc2UgdGVzdCBpbiBib3RoIGJhc2ggYW5kIHpzaC4gIEl0IGRvZXMgbm90IHdvcmsgdGNzaCAoZGlmZmVyZW50IGZ1bmN0aW9uXG4gICAgIHN5bnRheCkuICopXG4gIGxldCBkdW1wX2F1dG9jb21wbGV0ZV9mdW5jdGlvbiAoKSA9XG4gICAgbGV0IGZuYW1lID0gc3ByaW50ZiBcIl9qc2F1dG9jb21fJXNcIiAoUGlkLnRvX3N0cmluZyAoVW5peC5nZXRwaWQgKCkpKSBpblxuICAgIGxldCBhcmd2XzAgPSBDYW1sLlN5cy5hcmd2LigwKSBpblxuICAgIHByaW50ZlxuICAgICAgXCJmdW5jdGlvbiAlcyB7XFxuXFxcbiAgICAgIFxcICBleHBvcnQgQ09NUF9DV09SRFxcblxcXG4gICAgICBcXCAgQ09NUF9XT1JEU1swXT0lc1xcblxcXG4gICAgICBcXCAgaWYgdHlwZSByZWFkYXJyYXkgPiAvZGV2L251bGxcXG5cXFxuICAgICAgXFwgIHRoZW4gcmVhZGFycmF5IC10IENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZWxzZSBJRlM9XFxcIlxcblxcXG4gICAgICAgXFxcIiByZWFkIC1kIFxcXCJcXFwiIC1BIENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZmlcXG5cXFxuICAgICAgIH1cXG5cXFxuICAgICAgIGNvbXBsZXRlIC1GICVzICVzXFxuXFxcbiAgICAgICAlIVwiXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gIDs7XG5cbiAgbGV0IGR1bXBfaGVscF9zZXhwIH5zdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICBJbnQuU2V0LmludGVyIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9ucyBzdXBwb3J0ZWRfdmVyc2lvbnNcbiAgICB8PiBJbnQuU2V0Lm1heF9lbHRcbiAgICB8PiBmdW5jdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJDb3VsZG4ndCBjaG9vc2UgYSBzdXBwb3J0ZWQgaGVscCBvdXRwdXQgdmVyc2lvbiBmb3IgQ29tbWFuZC5leGVjIGZyb20gdGhlIGdpdmVuIFxcXG4gICAgICAgICBzdXBwb3J0ZWQgdmVyc2lvbnMuXCJcbiAgICAgICAgU2V4cGFibGUuc3VwcG9ydGVkX3ZlcnNpb25zXG4gICAgICAgIEludC5TZXQuc2V4cF9vZl90XG4gICAgfCBTb21lIHZlcnNpb25fdG9fdXNlIC0+XG4gICAgICBzZXhwYWJsZV9zaGFwZSB0XG4gICAgICB8PiBTZXhwYWJsZS5maW5kIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgIHw+IFNleHBhYmxlLnRvX3ZlcnNpb25lZCB+dmVyc2lvbl90b191c2VcbiAgICAgIHw+IFNleHBhYmxlLlZlcnNpb25lZC5zZXhwX29mX3RcbiAgICAgIHw+IFNleHAudG9fc3RyaW5nXG4gICAgICB8PiBwcmludF9zdHJpbmdcbiAgOztcblxuICBsZXQgaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgPVxuICAgIG1hdGNoIGFyZ3Ygd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJtaXNzaW5nIGV4ZWN1dGFibGUgbmFtZVwiXG4gICAgfCBjbWQgOjogYXJncyAtPlxuICAgICAgT3B0aW9uLml0ZXIgKGdldGVudl9hbmRfY2xlYXIgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQKSB+ZjooZnVuIHZlcnNpb24gLT5cbiAgICAgICAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9IFNleHAub2Zfc3RyaW5nIHZlcnNpb24gfD4gSW50LlNldC50X29mX3NleHAgaW5cbiAgICAgICAgZHVtcF9oZWxwX3NleHAgfnN1cHBvcnRlZF92ZXJzaW9ucyB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6YXJncztcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0lOU1RBTExBVElPTl9CQVNIKSB+ZjooZnVuIF8gLT5cbiAgICAgICAgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCk7XG4gICAgICAgIGV4aXQgMCk7XG4gICAgICBjbWQsIGFyZ3NcbiAgOztcblxuICBsZXQgcHJvY2Vzc19hcmdzIH5jbWQgfmFyZ3MgPVxuICAgIGxldCBtYXliZV9jb21wX2N3b3JkID0gbWF5YmVfY29tcF9jd29yZCAoKSBpblxuICAgIGxldCBhcmdzID1cbiAgICAgIG1hdGNoIG1heWJlX2NvbXBfY3dvcmQgd2l0aFxuICAgICAgfCBOb25lIC0+IENtZGxpbmUub2ZfbGlzdCBhcmdzXG4gICAgICB8IFNvbWUgY29tcF9jd29yZCAtPlxuICAgICAgICBsZXQgYXJncyA9IExpc3QudGFrZSAoYXJncyBAIFsgXCJcIiBdKSBjb21wX2N3b3JkIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCBhcmdzIH5pbml0OkNtZGxpbmUuTmlsIH5mOihmdW4gYXJnIGFyZ3MgLT5cbiAgICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgICB8IENtZGxpbmUuTmlsIC0+IENtZGxpbmUuQ29tcGxldGUgYXJnXG4gICAgICAgICAgfCBfIC0+IENtZGxpbmUuQ29ucyAoYXJnLCBhcmdzKSlcbiAgICBpblxuICAgIFBhdGguY3JlYXRlIH5wYXRoX3RvX2V4ZTpjbWQsIGFyZ3MsIG1heWJlX2NvbXBfY3dvcmRcbiAgOztcblxuICBsZXQgcmVjIGFkZF9oZWxwX3N1YmNvbW1hbmRzID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgXyBhcyB0IC0+IHRcbiAgICB8IEV4ZWMgXyBhcyB0IC0+IHRcbiAgICB8IEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9IC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBzdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgKExpc3QuQXNzb2MubWFwIHN1YmNvbW1hbmRzIH5mOmFkZF9oZWxwX3N1YmNvbW1hbmRzKVxuICAgICAgICAgICAgS2V5X3R5cGUuU3ViY29tbWFuZFxuICAgICAgICAgICAgfmtleTpcImhlbHBcIlxuICAgICAgICAgICAgKGhlbHBfc3ViY29tbWFuZCB+c3VtbWFyeSB+cmVhZG1lKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfVxuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGRfaGVscF9zdWJjb21tYW5kcyAoTGF6eS5mb3JjZSB0aHVuaykpKVxuICA7O1xuXG4gIGxldCBtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoID1cbiAgICBPcHRpb24udmFsdWVfbWFwIGV4dGVuZCB+ZGVmYXVsdDphcmdzIH5mOihmdW4gZiAtPlxuICAgICAgQ21kbGluZS5leHRlbmQgYXJncyB+ZXh0ZW5kOmYgfnBhdGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBkaXNwYXRjaFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgZW52XG4gICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICB+cGF0aFxuICAgICAgICAgICAgfmFyZ3NcbiAgICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGF6eSB0aHVuayAtPlxuICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICBkaXNwYXRjaFxuICAgICAgICB0XG4gICAgICAgIGVudlxuICAgICAgICB+ZXh0ZW5kXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICBsZXQgYXJncyA9IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggaW5cbiAgICAgIGxldCBoZWxwX3RleHQgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKGhlbHBfZm9yX3NoYXBlIChzaGFwZSB0KSBwYXRoIH5yZWN1cnNpdmU6ZmFsc2UgfmZsYWdzOnRydWUgfmV4cGFuZF9kb3RzOmZhbHNlKVxuICAgICAgaW5cbiAgICAgIEJhc2UucnVuXG4gICAgICAgIGJhc2VcbiAgICAgICAgZW52XG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH5oZWxwX3RleHRcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgIHwgRXhlYyBleGVjIC0+XG4gICAgICBsZXQgYXJncyA9IENtZGxpbmUudG9fbGlzdCAobWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCkgaW5cbiAgICAgIEV4ZWMuZXhlY193aXRoX2FyZ3MgfmFyZ3MgZXhlYyB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICB8IEdyb3VwICh7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBzdWJzOyBib2R5IH0gYXMgZ3JvdXApIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICBsZXQgZW52ID0gRW52LnNldCBlbnYgfmtleTpzdWJzX2tleSB+ZGF0YTooTGF6eS5mb3JjZSBzdWJzKSBpblxuICAgICAgbGV0IGRpZV9zaG93aW5nX2hlbHAgbXNnID1cbiAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICB0aGVuIGV4aXQgMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIiVzXFxuJSFcIlxuICAgICAgICAgICAgKGhlbHBfZm9yX3NoYXBlXG4gICAgICAgICAgICAgICB+cmVjdXJzaXZlOmZhbHNlXG4gICAgICAgICAgICAgICB+ZmxhZ3M6ZmFsc2VcbiAgICAgICAgICAgICAgIH5leHBhbmRfZG90czpmYWxzZVxuICAgICAgICAgICAgICAgKHNoYXBlIChHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBzdWJzOyBib2R5IH0pKVxuICAgICAgICAgICAgICAgcGF0aCk7XG4gICAgICAgICAgZGllIFwiJXNcIiBtc2cgKCkpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBwYXJzZV9ncm91cCBhcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZCA9XG4gICAgICAgIGxldCBtYXliZV9uZXdfY29tcF9jd29yZCA9IE9wdGlvbi5tYXAgfmY6SW50LnByZWQgbWF5YmVfbmV3X2NvbXBfY3dvcmQgaW5cbiAgICAgICAgbGV0IHNraXAgcmVzdCA9IHBhcnNlX2dyb3VwIHJlc3Qgfm1heWJlX25ld19jb21wX2N3b3JkIGluXG4gICAgICAgIGxldCByZXNvbHZlIHN1YiByZXN0ID1cbiAgICAgICAgICBsZXQgc3VicyA9IExpc3QuQXNzb2MubWFwIChMYXp5LmZvcmNlIHN1YnMpIH5mOihmdW4geCAtPiB4LCBgUHJlZml4KSBpblxuICAgICAgICAgIG1hdGNoIGxvb2t1cF9leHBhbmQgc3VicyBzdWIgU3ViY29tbWFuZCB3aXRoXG4gICAgICAgICAgfCBFcnJvciBtc2cgLT4gZGllX3Nob3dpbmdfaGVscCBtc2dcbiAgICAgICAgICB8IE9rIChzdWIsIHQpIC0+XG4gICAgICAgICAgICBkaXNwYXRjaFxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICAgICAgfnBhdGg6KFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQ6c3ViKVxuICAgICAgICAgICAgICB+YXJnczpyZXN0XG4gICAgICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggKGFyZ3MgOiBDbWRsaW5lLnQpIHdpdGhcbiAgICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGRpZV9zaG93aW5nX2hlbHBcbiAgICAgICAgICAgICAgIChzcHJpbnRmIFwibWlzc2luZyBzdWJjb21tYW5kIGZvciBjb21tYW5kICVzXCIgKFBhdGgudG9fc3RyaW5nIHBhdGgpKVxuICAgICAgICAgICB8IFNvbWUgYm9keSAtPiBib2R5IH5wYXRoOihQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoKSlcbiAgICAgICAgfCBDb25zIChzdWIsIHJlc3QpIC0+XG4gICAgICAgICAgKCogTWF0Y2ggZm9yIGZsYWdzIHJlY29nbml6ZWQgd2hlbiBzdWJjb21tYW5kcyBhcmUgZXhwZWN0ZWQgbmV4dCAqKVxuICAgICAgICAgIChtYXRjaCBzdWIgd2l0aFxuICAgICAgICAgICAoKiBSZWNvZ25pemVkIGF0IHRoZSB0b3AgbGV2ZWwgY29tbWFuZCBvbmx5ICopXG4gICAgICAgICAgIHwgKFwiLXZlcnNpb25cIiB8IFwiLS12ZXJzaW9uXCIpIHdoZW4gUGF0aC5sZW5ndGggcGF0aCA9IDEgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIFZlcnNpb25faW5mby5wcmludF92ZXJzaW9uIH52ZXJzaW9uO1xuICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICB8IChcIi1idWlsZC1pbmZvXCIgfCBcIi0tYnVpbGQtaW5mb1wiKSB3aGVuIFBhdGgubGVuZ3RoIHBhdGggPSAxIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbztcbiAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgKCogUmVjb2duaXplZCBldmVyeXdoZXJlICopXG4gICAgICAgICAgIHwgXCItaGVscFwiIHwgXCItLWhlbHBcIiAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5pbCB8IENvbXBsZXRlIChfIDogc3RyaW5nKSAtPlxuICAgICAgICAgICAgICAgICBwcmludF9lbmRsaW5lXG4gICAgICAgICAgICAgICAgICAgKGhlbHBfZm9yX3NoYXBlXG4gICAgICAgICAgICAgICAgICAgICAgfnJlY3Vyc2l2ZTpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH5mbGFnczpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRfZG90czpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChzaGFwZSAoR3JvdXAgeyBncm91cCB3aXRoIHN1YmNvbW1hbmRzID0gc3VicyB9KSlcbiAgICAgICAgICAgICAgICAgICAgICBwYXRoKTtcbiAgICAgICAgICAgICAgICAgZXhpdCAwXG4gICAgICAgICAgICAgICB8IENtZGxpbmUuQ29ucyAoZmlyc3Rfb2ZfcmVzdCwgcmVzdF9vZl9yZXN0KSAtPlxuICAgICAgICAgICAgICAgICByZXNvbHZlIGZpcnN0X29mX3Jlc3QgKENvbnMgKHN1YiwgcmVzdF9vZl9yZXN0KSkpXG4gICAgICAgICAgIHwgKF8gOiBzdHJpbmcpIC0+IHJlc29sdmUgc3ViIHJlc3QpXG4gICAgICAgIHwgQ29tcGxldGUgcGFydCAtPlxuICAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgIExhenkuZm9yY2Ugc3Vic1xuICAgICAgICAgICAgfD4gTGlzdC5tYXAgfmY6ZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIG5hbWUgLT4gU3RyaW5nLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6cGFydClcbiAgICAgICAgICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTpTdHJpbmcuY29tcGFyZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoIGNvbXBsZXRlX3N1YmNvbW1hbmRzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICAgICAgICAgc2hhcGUgdCB8PiBTaGFwZS5mdWxseV9mb3JjZWQgfD4gU2hhcGUuRnVsbHlfZm9yY2VkLmV4cGFuZGVkX3N1YmNvbW1hbmRzXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAobWF0Y2ggZiB+cGF0aDooUGF0aC5wYXJ0cyBwYXRoKSB+cGFydCBzdWJjb21tYW5kcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBleGl0IDFcbiAgICAgICAgICAgICAgfCBTb21lIHRvX291dHB1dCAtPlxuICAgICAgICAgICAgICAgIHByaW50X2VuZGxpbmUgKFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiB0b19vdXRwdXQpO1xuICAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgTGlzdC5pdGVyIHN1YnMgfmY6cHJpbnRfZW5kbGluZTtcbiAgICAgICAgICAgICBleGl0IDApXG4gICAgICBpblxuICAgICAgcGFyc2VfZ3JvdXAgYXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgOztcblxuICBsZXQgcnVuXG4gICAgICAgID92ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgID92ZXJzaW9uXG4gICAgICAgID9idWlsZF9pbmZvXG4gICAgICAgID8oYXJndiA9IEFycmF5LnRvX2xpc3QgQ2FtbC5TeXMuYXJndilcbiAgICAgICAgP2V4dGVuZFxuICAgICAgICA/KHdoZW5fcGFyc2luZ19zdWNjZWVkcyA9IEZuLmlkKVxuICAgICAgICA/Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgYnVpbGRfaW5mbyA9XG4gICAgICBtYXRjaCBidWlsZF9pbmZvIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGxhenkgdlxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICBpblxuICAgIGxldCB2ZXJzaW9uID1cbiAgICAgIG1hdGNoIHZlcnNpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICgqIFt2ZXJzaW9uXSB3YXMgc3BhY2UgZGVsaW1pdGVkIGF0IHNvbWUgcG9pbnQgYW5kIG5ld2xpbmUgZGVsaW1pdGVkXG4gICAgICAgICAgIGF0IGFub3RoZXIuICBXZSBhbHdheXMgcHJpbnQgb25lIChyZXBvLCByZXZpc2lvbikgcGFpciBwZXIgbGluZVxuICAgICAgICAgICBhbmQgZW5zdXJlIHNvcnRlZCBvcmRlciAqKVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKFZlcnNpb25faW5mby5ub3JtYWxpemVfdmVyc2lvbl9saW5lc1xuICAgICAgICAgICAgIChTdHJpbmcuc3BsaXQgdiB+b246JyAnIHw+IExpc3QuY29uY2F0X21hcCB+ZjooU3RyaW5nLnNwbGl0IH5vbjonXFxuJykpKVxuICAgIGluXG4gICAgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBsZXQgdCA9IFZlcnNpb25faW5mby5hZGQgdCB+dmVyc2lvbiB+YnVpbGRfaW5mbyBpblxuICAgICAgbGV0IHQgPSBhZGRfaGVscF9zdWJjb21tYW5kcyB0IGluXG4gICAgICBsZXQgY21kLCBhcmdzID0gaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgaW5cbiAgICAgIGxldCBwYXRoLCBhcmdzLCBtYXliZV9uZXdfY29tcF9jd29yZCA9IHByb2Nlc3NfYXJncyB+Y21kIH5hcmdzIGluXG4gICAgICB0cnlcbiAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICB0XG4gICAgICAgICAgRW52LmVtcHR5XG4gICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgfmFyZ3NcbiAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICB3aXRoXG4gICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+XG4gICAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHByZXJyX2VuZGxpbmUgbXNnO1xuICAgICAgICAgIGV4aXQgMSkpXG4gIDs7XG5cbiAgbGV0IGRlcHJlY2F0ZWRfcnVuIHQgfmNtZCB+YXJncyB+aXNfaGVscCB+aXNfaGVscF9yZWMgfmlzX2hlbHBfcmVjX2ZsYWdzIH5pc19leHBhbmRfZG90c1xuICAgID1cbiAgICBsZXQgcGF0aF9zdHJpbmdzID0gU3RyaW5nLnNwbGl0IGNtZCB+b246JyAnIGluXG4gICAgbGV0IHBhdGggPSBQYXRoLm9mX3BhcnRzIHBhdGhfc3RyaW5ncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfZXhwYW5kX2RvdHMgdGhlbiBcIi1leHBhbmQtZG90c1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlY19mbGFncyB0aGVuIFwiLWZsYWdzXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHBfcmVjIHRoZW4gXCItclwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwIHRoZW4gXCItaGVscFwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBDbWRsaW5lLm9mX2xpc3QgYXJncyBpblxuICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgIGRpc3BhdGNoXG4gICAgICB0XG4gICAgICBFbnYuZW1wdHlcbiAgICAgIH5wYXRoXG4gICAgICB+YXJnc1xuICAgICAgfmV4dGVuZDpOb25lXG4gICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmQ6Tm9uZVxuICAgICAgfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvblxuICAgICAgfmJ1aWxkX2luZm86VmVyc2lvbl9pbmZvLmRlZmF1bHRfYnVpbGRfaW5mb1xuICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6Tm9uZVxuICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkczpGbi5pZFxuICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzOk5vbmVcbiAgOztcbmVuZFxuXG4oKiBOT1RFOiBhbGwgdGhhdCBmb2xsb3dzIGlzIHNpbXBseSBuYW1lc3BhY2UgbWFuYWdlbWVudCBib2lsZXJwbGF0ZS4gIFRoaXMgd2lsbCBnbyBhd2F5XG4gICBvbmNlIHdlIHJlLXdvcmsgdGhlIGludGVybmFscyBvZiBDb21tYW5kIHRvIHVzZSBBcHBsaWNhdGl2ZSBmcm9tIHRoZSBncm91bmQgdXAuICopXG5cbm1vZHVsZSBQYXJhbSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSArJ2EgdFxuXG4gICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBoZWxwIDogc3RyaW5nIExhenkudCB0XG4gICAgdmFsIHBhdGggOiBzdHJpbmcgbGlzdCB0XG4gICAgdmFsIGFyZ3MgOiBzdHJpbmcgbGlzdCB0XG5cbiAgICB2YWwgZmxhZ1xuICAgICAgOiAgP2FsaWFzZXM6c3RyaW5nIGxpc3RcbiAgICAgIC0+ID9mdWxsX2ZsYWdfcmVxdWlyZWQ6dW5pdFxuICAgICAgLT4gc3RyaW5nXG4gICAgICAtPiAnYSBGbGFnLnRcbiAgICAgIC0+IGRvYzpzdHJpbmdcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcbiAgICAgIDogID9hbGlhc2VzOnN0cmluZyBsaXN0XG4gICAgICAtPiA/ZnVsbF9mbGFnX3JlcXVpcmVkOnVuaXRcbiAgICAgIC0+IHN0cmluZ1xuICAgICAgLT4gJ2EgQXJnX3R5cGUudFxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+IGRlZmF1bHQ6J2FcbiAgICAgIC0+IGRvYzpzdHJpbmdcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBhbm9uIDogJ2EgQW5vbnMudCAtPiAnYSB0XG4gICAgdmFsIGVzY2FwZV9hbm9uIDogZmluYWxfYW5vbjonYSBBbm9ucy50IC0+ICgnYSAqIHN0cmluZyBsaXN0KSB0XG5cbiAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gOiBzaWdcbiAgICAgIHR5cGUgKF8sIF8pIHQgPVxuICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgIHwgUmFpc2UgOiAoJ2EsICdhKSB0XG4gICAgICAgIHwgUmV0dXJuX25vbmUgOiAoJ2EsICdhIG9wdGlvbikgdFxuICAgIGVuZFxuXG4gICAgdmFsIGNob29zZV9vbmVcbiAgICAgIDogICdhIG9wdGlvbiB0IGxpc3RcbiAgICAgIC0+IGlmX25vdGhpbmdfY2hvc2VuOignYSwgJ2IpIElmX25vdGhpbmdfY2hvc2VuLnRcbiAgICAgIC0+ICdiIHRcblxuICAgIHZhbCBhbmRfYXJnX25hbWVzIDogJ2EgdCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuICAgIHZhbCBhbmRfYXJnX25hbWUgOiAnYSB0IC0+ICgnYSAqIHN0cmluZykgdFxuICAgIHZhbCBhcmdfbmFtZXMgOiAnYSB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSBBID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgU3BlYy5wYXJhbVxuXG4gICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgcmV0dXJuID0gU3BlYy5jb25zdFxuICAgICAgICBsZXQgYXBwbHkgPSBTcGVjLmFwcGx5XG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIFNwZWMubWFwXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQVxuXG4gIGxldCBoZWxwID0gU3BlYy5oZWxwXG4gIGxldCBwYXRoID0gU3BlYy5wYXRoXG4gIGxldCBhcmdzID0gU3BlYy5hcmdzXG4gIGxldCBmbGFnID0gU3BlYy5mbGFnXG4gIGxldCBhbm9uID0gU3BlYy5hbm9uXG4gIGxldCBjaG9vc2Vfb25lID0gU3BlYy5jaG9vc2Vfb25lXG4gIGxldCBhcmdfbmFtZXMgPSBTcGVjLmFyZ19uYW1lc1xuICBsZXQgYW5kX2FyZ19uYW1lcyA9IFNwZWMuYW5kX2FyZ19uYW1lc1xuICBsZXQgYW5kX2FyZ19uYW1lID0gU3BlYy5hbmRfYXJnX25hbWVcbiAgbGV0IGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvYyA9IFNwZWMuZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG5cbiAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gU3BlYy5JZl9ub3RoaW5nX2Nob3NlblxuICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgb3BlbiBGbGFnXG5cbiAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgbGV0IGxpc3RlZCA9IGxpc3RlZFxuICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgIGxldCBub19hcmdfYWJvcnQgPSBub19hcmdfYWJvcnRcbiAgICBsZXQgbm9fYXJnX3JlZ2lzdGVyID0gbm9fYXJnX3JlZ2lzdGVyXG4gICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICBsZXQgb25lX29yX21vcmUgPSBvbmVfb3JfbW9yZVxuICAgIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyID0gb25lX29yX21vcmVfYXNfcGFpclxuICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCA9IG9wdGlvbmFsX3dpdGhfZGVmYXVsdFxuICAgIGxldCByZXF1aXJlZCA9IHJlcXVpcmVkXG4gIGVuZFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgb3BlbiBBbm9uc1xuXG4gICAgbGV0ICggJTogKSA9ICggJTogKVxuICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICBsZXQgbWF5YmUgPSBtYXliZVxuICAgIGxldCBtYXliZV93aXRoX2RlZmF1bHQgPSBtYXliZV93aXRoX2RlZmF1bHRcbiAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyXG4gICAgbGV0IHNlcXVlbmNlID0gc2VxdWVuY2VcbiAgICBsZXQgdDIgPSB0MlxuICAgIGxldCB0MyA9IHQzXG4gICAgbGV0IHQ0ID0gdDRcbiAgZW5kXG5cbiAgbGV0IGVzY2FwZV9hbm9uID0gU3BlYy5lc2NhcGVfYW5vblxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgUGFyYW1cblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyYW1cbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBQYXJhbVxuICBlbmRcbmVuZFxuXG50eXBlICdyZXN1bHQgYmFzaWNfY29tbWFuZCA9XG4gIHN1bW1hcnk6c3RyaW5nIC0+ID9yZWFkbWU6KHVuaXQgLT4gc3RyaW5nKSAtPiAodW5pdCAtPiAncmVzdWx0KSBQYXJhbS50IC0+IHRcblxubGV0IGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW0gPVxuICBsZXQgc3BlYyA9IFNwZWMub2ZfcGFyYW1zIEBAIFBhcmFtLm1hcCBwYXJhbSB+ZjooZnVuIHJ1biAoKSAoKSAtPiBydW4gKCkpIGluXG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBzcGVjICgpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYWJzX3BhdGggPSBhYnNfcGF0aFxuICBsZXQgd29yZF93cmFwID0gU2hhcGUuUHJpdmF0ZS53b3JkX3dyYXBcblxuICBtb2R1bGUgQW5vbnMgPSBBbm9uc1xuICBtb2R1bGUgQ21kbGluZSA9IENtZGxpbmVcbiAgbW9kdWxlIEZvcl91bml4ID0gRm9yX3VuaXhcbiAgbW9kdWxlIFBhdGggPSBQYXRoXG5cbiAgbW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNwZWNcblxuICAgIGxldCB0b19zdHJpbmdfZm9yX2Nob29zZV9vbmUgcGFyYW0gPVxuICAgICAgQ2hvb3NlX29uZS5DaG9pY2VfbmFtZS4oY3JlYXRlX2V4biBwYXJhbSB8PiB0b19zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHJ1biA9IGBVc2VfQ29tbWFuZF91bml4XG5sZXQgc2hhcGUgPSBgVXNlX0NvbW1hbmRfdW5peFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBTdHJpbmdfaWRfaW50ZlxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gICAgICAgIGxldCBjaGVja19mb3Jfd2hpdGVzcGFjZSA9XG4gICAgICAgICAgbGV0IGludmFsaWQgcyByZWFzb24gPVxuICAgICAgICAgICAgRXJyb3IgKHNwcmludGYgXCInJXMnIGlzIG5vdCBhIHZhbGlkICVzIGJlY2F1c2UgJXNcIiBzIE0ubW9kdWxlX25hbWUgcmVhc29uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgZnVuIHMgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgIGlmIEludC4oID0gKSBsZW4gMFxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBpcyBlbXB0eVwiXG4gICAgICAgICAgICBlbHNlIGlmIENoYXIuaXNfd2hpdGVzcGFjZSBzLlswXSB8fCBDaGFyLmlzX3doaXRlc3BhY2Ugcy5bbGVuIC0gMV1cbiAgICAgICAgICAgIHRoZW4gaW52YWxpZCBzIFwiaXQgaGFzIHdoaXRlc3BhY2Ugb24gdGhlIGVkZ2VcIlxuICAgICAgICAgICAgZWxzZSBPayAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB2YWxpZGF0ZSBzID0gUmVzdWx0Lm1hcF9lcnJvciAoTS52YWxpZGF0ZSBzKSB+ZjpFcnJvci50b19zdHJpbmdfbWFjaFxuXG4gICAgICAgIGxldCBjaGVjayBzID1cbiAgICAgICAgICBpZiBNLmluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBjaGVja19mb3Jfd2hpdGVzcGFjZSBzIHdpdGhcbiAgICAgICAgICAgIHwgT2sgKCkgLT4gdmFsaWRhdGUgc1xuICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciBlcnJvcilcbiAgICAgICAgICBlbHNlIHZhbGlkYXRlIHNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gRm4uaWRcbiAgICAgICAgbGV0IHBwID0gU3RyaW5nLnBwXG5cbiAgICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgICBtYXRjaCBjaGVjayBzIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IHNcbiAgICAgICAgICB8IEVycm9yIGVyciAtPiBpbnZhbGlkX2FyZyBlcnJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCBzID0gU3RyaW5nLlN0YWJsZS5WMS50X29mX3NleHAgc2V4cCBpblxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IG9mX3NleHBfZXJyb3IgZXJyIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgICAgKFN0cmluZylcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RyaW5nXG4gICAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRfd2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUX3dpdGhfY29tcGFyYXRvclxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUX3dpdGhfY29tcGFyYXRvcilcbiAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlX2xhdGVzdCA9IFN0YWJsZS5WMVxuICBpbmNsdWRlIFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTdHJpbmcucXVpY2tjaGVja19vYnNlcnZlclxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgU3RyaW5nLmdlbl9ub25lbXB0eScgQ2hhci5nZW5fcHJpbnRcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgfmY6KGZ1biBzdHJpbmcgLT4gY2hlY2sgc3RyaW5nIHw+IFJlc3VsdC5pc19vaylcbiAgOztcblxuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyXG4gICAgICAoc3RydWN0XG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgICAgbGV0IHZhbGlkYXRlID0gRm4uY29uc3QgKE9rICgpKVxuICAgICAgICBsZXQgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gPSB0cnVlXG4gICAgICBlbmQpXG4gICAgICAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGUgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGVcbiAgTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5TdHJpbmdfaWRcIlxuICAgIGVuZClcbiAgICAoKVxuXG5tb2R1bGUgU3RyaW5nX3dpdGhvdXRfdmFsaWRhdGlvbl93aXRob3V0X3ByZXR0eV9wcmludGVyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgRm4uaWRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBTdGFibGVfdW5pdF90ZXN0X2ludGZcblxubW9kdWxlIE1ha2Vfc2V4cF9kZXNlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIGRlc2VyaWFsaXphdGlvblwiID1cbiAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAoTGlzdC5tYXAgVC50ZXN0cyB+ZjooZnVuICh0LCBzZXhwX2FzX3N0cmluZywgXykgLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBzZXhwX2FzX3N0cmluZyB8PiBTZXhwLm9mX3N0cmluZyB8PiBbJW9mX3NleHA6IFQudF0pXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT5cbiAgICAgICAgICAgT3JfZXJyb3IudGFnX2FyZ1xuICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgXCJjb3VsZCBub3QgZGVzZXJpYWxpemUgc2V4cFwiXG4gICAgICAgICAgICAgKHNleHBfYXNfc3RyaW5nLCBgRXhwZWN0ZWQgdClcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIFsgYEV4cGVjdGVkIG9mIFQudCBdXVxuICAgICAgICAgfCBPayB0JyAtPlxuICAgICAgICAgICBpZiBULmVxdWFsIHQgdCdcbiAgICAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwic2V4cCBzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHNleHBfYXNfc3RyaW5nIGluXG4gICAgICAgICAgIGxldCBzZXJpYWxpemVkX3NleHAgPSBULnNleHBfb2ZfdCB0IGluXG4gICAgICAgICAgIGlmIFNleHAuKCA8PiApIHNlcmlhbGl6ZWRfc2V4cCBzZXhwXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cCwgYEJ1dF9nb3Qgc2VyaWFsaXplZF9zZXhwKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IF1dKSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIF8sIGV4cGVjdGVkX2Jpbl9pbykgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgdG9fYmluX3N0cmluZyB0ID0gQmluYWJsZS50b19zdHJpbmcgYmluYWJsZV9tIHQgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkX2Jpbl9pbyA9IHRvX2Jpbl9zdHJpbmcgdCBpblxuICAgICAgaWYgU3RyaW5nLiggPD4gKSBzZXJpYWxpemVkX2Jpbl9pbyBleHBlY3RlZF9iaW5faW9cbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiYmluX2lvIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICh0LCBgRXhwZWN0ZWQgZXhwZWN0ZWRfYmluX2lvLCBgQnV0X2dvdCBzZXJpYWxpemVkX2Jpbl9pbylcbiAgICAgICAgICBbJXNleHBfb2Y6IFQudCAqIFsgYEV4cGVjdGVkIG9mIHN0cmluZyBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgdCcgPSBCaW5hYmxlLm9mX3N0cmluZyBiaW5hYmxlX20gc2VyaWFsaXplZF9iaW5faW8gaW5cbiAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUKVxuICBpbmNsdWRlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9iaW5faW9fdGVzdCAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV91bm9yZGVyZWRfY29udGFpbmVyIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLlVub3JkZXJlZF9jb250YWluZXJfYXJnKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRlc3QgPSBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0XG5cbiAgbGV0JXRlc3RfdW5pdCBcInNleHBcIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LnNleHBzOyBfIH0pIC0+XG4gICAgICBsZXQgc2V4cHMgPSBMaXN0Lm1hcCBzZXhwcyB+ZjpTZXhwLm9mX3N0cmluZyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfZWxlbWVudHMgPVxuICAgICAgICBtYXRjaCBULnNleHBfb2ZfdCB0IHdpdGhcbiAgICAgICAgfCBTZXhwLkxpc3Qgc2V4cHMgLT4gc2V4cHNcbiAgICAgICAgfCBTZXhwLkF0b20gXyAtPlxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJleHBlY3RlZCBsaXN0IHdoZW4gc2VyaWFsaXppbmcgdW5vcmRlcmVkIGNvbnRhaW5lclwiXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBULnNleHBfb2ZfdFxuICAgICAgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2V4cHMgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNleHBzIGluXG4gICAgICBsZXQgc29ydGVkX3NlcmlhbGl6ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNlcmlhbGl6ZWRfZWxlbWVudHMgaW5cbiAgICAgIGlmIG5vdCAoTGlzdC5lcXVhbCBTZXhwLiggPSApIHNvcnRlZF9zZXhwcyBzb3J0ZWRfc2VyaWFsaXplZClcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHNleHBzLCBgQnV0X2dvdCBzZXJpYWxpemVkX2VsZW1lbnRzKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgU2V4cC50IGxpc3QgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IGxpc3QgXV07XG4gICAgICBsZXQgc2V4cF9wZXJtdXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBzZXhwcykgaW5cbiAgICAgIExpc3QuaXRlciBzZXhwX3Blcm11dGF0aW9ucyB+ZjooZnVuIHNleHBzIC0+XG4gICAgICAgIGxldCB0JyA9IFQudF9vZl9zZXhwIChTZXhwLkxpc3Qgc2V4cHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInNleHAgZGVzZXJpYWxpemF0aW9uIG1zaW1hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuXG4gIGxldCByZWMgaXNfY29uY2F0ZW5hdGlvbiBzdHJpbmcgc3RyaW5ncyA9XG4gICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgIHRoZW4gTGlzdC5mb3JfYWxsIHN0cmluZ3MgfmY6U3RyaW5nLmlzX2VtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcmV2X3NraXBwZWQgc3RyaW5ncyA9XG4gICAgICAgIG1hdGNoIHN0cmluZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICAgIHwgcHJlZml4IDo6IHN0cmluZ3MgLT5cbiAgICAgICAgICBsZXQgY29udGludWUgKCkgPSBsb29wIChwcmVmaXggOjogcmV2X3NraXBwZWQpIHN0cmluZ3MgaW5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXggc3RyaW5nIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IGNvbnRpbnVlICgpXG4gICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT5cbiAgICAgICAgICAgICBpc19jb25jYXRlbmF0aW9uIHN0cmluZyAoTGlzdC5yZXZfYXBwZW5kIHJldl9za2lwcGVkIHN0cmluZ3MpIHx8IGNvbnRpbnVlICgpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gc3RyaW5ncylcbiAgOztcblxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIHsgVGVzdC5iaW5faW9faGVhZGVyOyBiaW5faW9fZWxlbWVudHM7IF8gfSkgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgZWxlbWVudHMgPSBiaW5faW9fZWxlbWVudHMgaW5cbiAgICAgIGxldCBiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMgPSBiaW5faW9faGVhZGVyIF4gU3RyaW5nLmNvbmNhdCBlbGVtZW50cyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6YXRpb25fbWF0Y2hlcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3ByZWZpeCB+cHJlZml4OmJpbl9pb19oZWFkZXIgc2VyaWFsaXplZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgZWxlbWVudHNfc3RyaW5nIC0+IGlzX2NvbmNhdGVuYXRpb24gZWxlbWVudHNfc3RyaW5nIGVsZW1lbnRzXG4gICAgICBpblxuICAgICAgaWYgbm90IHNlcmlhbGl6YXRpb25fbWF0Y2hlc1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIChiaW5faW9faGVhZGVyLCBlbGVtZW50cyksIGBCdXRfZ290IHNlcmlhbGl6ZWQpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBzdHJpbmcgKiBzdHJpbmcgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgcGVybXV0YXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBlbGVtZW50cykgaW5cbiAgICAgIExpc3QuaXRlciBwZXJtdXRhdGF0aW9ucyB+ZjooZnVuIGVsZW1lbnRzIC0+XG4gICAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSAoYmluX2lvX29mX2VsZW1lbnRzIGVsZW1lbnRzKSBpblxuICAgICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJiaW4taW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxuKCogVGhlIG1vZHVsZSBbVF0gc2VydmVzIHRvIGVuZm9yY2UgdGhlIGludmFyaWFudCB0aGF0IGFsbCBCbGFuZy50IHZhbHVlcyBhcmUgaW4gYVxuICAgbm9ybWFsIGZvcm0gd2hlcmVieSBib29sZWFuIGNvbnN0YW50cyBUcnVlIGFuZCBGYWxzZSBvbmx5IGFwcGVhciBhcyB0aGUgdG9wbW9zdFxuICAgY29uc3RydWN0b3IgLS0gaW4gYW55IG90aGVyIHBvc2l0aW9uIHRoZXkgYXJlIHNpbXBsaWZpZWQgYXdheSB1c2luZyBsYXdzIG9mXG4gICBib29sZWFuIGFsZ2VicmEuXG5cbiAgIFdlIGFsc28gZW5mb3JjZSB0aGF0IG5lc3RlZCBbQW5kXXMgYW5kIFtPcl1zIGVhY2ggbGVhbiB0byB0aGUgcmlnaHQgc28gdGhhdCBbZXZhbF1cbiAgIGRvZXNuJ3QgbmVlZCBzbyBtdWNoIHN0YWNrIHNwYWNlIGFzIGl0IHdvdWxkIGlmIHRoZXkgbGVhbmVkIHRvIHRoZSBsZWZ0LiAgVGhvdWdodFxuICAgZXhwZXJpbWVudDogY29tcGFyZSBob3cgW2V2YWxdIHdvcmtzIG9uIHJpZ2h0LWxlYW5pbmcgW0FuZCAoYSwgQW5kIChiLCBBbmQgKGMsIGQpKSldXG4gICB2ZXJzdXMgbGVmdC1sZWFuaW5nIFtBbmQgKEFuZCAoQW5kIChhLCBiKSwgYyksIGQpXS4gIFRoZSBmb3JtZXIgaXMgdGhlIGJlc3QgY2FzZSBhbmQgaXNcbiAgIGVuZm9yY2VkLlxuXG4gICBOb3RlOiB0aGlzIGZpbGUgZGV2aWF0ZXMgZnJvbSB0aGUgdXN1YWwgcGF0dGVybiBvZiBtb2R1bGVzIHdpdGggU3RhYmxlIGludGVyZmFjZXMgaW5cbiAgIHRoYXQgdGhlIFN0YWJsZSBzdWItbW9kdWxlIGlzIG5vdCB0aGUgZmlyc3QgdGhpbmcgdG8gYmUgZGVmaW5lZCBpbiB0aGUgbW9kdWxlLiAgVGhlXG4gICByZWFzb24gZm9yIHRoaXMgZGV2aWF0aW9uIGlzIHNvIHRoYXQgb25lIGNhbiBjb252aW5jZSBvbmVzZWxmIG9mIHRoZSBhZm9yZW1lbnRpb25lZFxuICAgaW52YXJpYW50IGFmdGVyIHJlYWRpbmcgb25seSB0aGlzIHNtYWxsIGFtb3VudCBvZiBjb2RlLiAgQWZ0ZXIgZGVmaW5pbmcgVCB3ZSB0aGVuXG4gICBpbW1lZGlhdGVseSBkZWZpbmUgaXRzIFN0YWJsZSBpbnRlcmZhY2UuXG4qKVxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgdmFsIGludmFyaWFudCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgdHJ1ZV8gOiAnYSB0XG4gIHZhbCBmYWxzZV8gOiAnYSB0XG4gIHZhbCBub3RfIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhbmRhbHNvIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIG9yZWxzZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBpZl8gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICBsZXQgaW52YXJpYW50ID1cbiAgICBsZXQgc3VidGVybXMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgfCBCYXNlIF8gLT4gW11cbiAgICAgIHwgTm90IHQxIC0+IFsgdDEgXVxuICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBbIHQxOyB0MiBdXG4gICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBbIHQxOyB0MjsgdDMgXVxuICAgIGluXG4gICAgbGV0IHJlYyBjb250YWluc19ub19jb25zdGFudHMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgICBpblxuICAgIGZ1biB0IC0+IExpc3QuaXRlciB+Zjpjb250YWluc19ub19jb25zdGFudHMgKHN1YnRlcm1zIHQpXG4gIDs7XG5cbiAgbGV0IHRydWVfID0gVHJ1ZVxuICBsZXQgZmFsc2VfID0gRmFsc2VcbiAgbGV0IGJhc2UgdiA9IEJhc2UgdlxuXG4gIGxldCBub3RfID0gZnVuY3Rpb25cbiAgICB8IFRydWUgLT4gRmFsc2VcbiAgICB8IEZhbHNlIC0+IFRydWVcbiAgICB8IE5vdCB0IC0+IHRcbiAgICB8IHQgLT4gTm90IHRcbiAgOztcblxuICBsZXQgcmVjIGFuZGFsc28gdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBGYWxzZSB8IEZhbHNlLCBfIC0+IEZhbHNlXG4gICAgfCBvdGhlciwgVHJ1ZSB8IFRydWUsIG90aGVyIC0+IG90aGVyXG4gICAgfCBBbmQgKHQxYSwgdDFiKSwgXyAtPlxuICAgICAgKCogbmVzdGVkIFtBbmRdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBBbmQgKHQxYSwgYW5kYWxzbyB0MWIgdDIpXG4gICAgfCBfIC0+IEFuZCAodDEsIHQyKVxuICA7O1xuXG4gIGxldCByZWMgb3JlbHNlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgXywgVHJ1ZSB8IFRydWUsIF8gLT4gVHJ1ZVxuICAgIHwgb3RoZXIsIEZhbHNlIHwgRmFsc2UsIG90aGVyIC0+IG90aGVyXG4gICAgfCBPciAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW09yXXMgbGVhbiByaWdodCAtLSBzZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgT3IgKHQxYSwgb3JlbHNlIHQxYiB0MilcbiAgICB8IF8gLT4gT3IgKHQxLCB0MilcbiAgOztcblxuICBsZXQgaWZfIGEgYiBjID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IFRydWUgLT4gYlxuICAgIHwgRmFsc2UgLT4gY1xuICAgIHwgXyAtPlxuICAgICAgKG1hdGNoIGIsIGMgd2l0aFxuICAgICAgIHwgVHJ1ZSwgXyAtPiBvcmVsc2UgYSBjXG4gICAgICAgfCBfLCBGYWxzZSAtPiBhbmRhbHNvIGEgYlxuICAgICAgIHwgXywgVHJ1ZSAtPiBvcmVsc2UgKG5vdF8gYSkgYlxuICAgICAgIHwgRmFsc2UsIF8gLT4gYW5kYWxzbyAobm90XyBhKSBjXG4gICAgICAgfCBfIC0+IElmIChhLCBiLCBjKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgKCogVEhJUyBUWVBFIEFORCBJVFMgU0VSSUFMSVpBVElPTlMgU0hPVUxEIE5FVkVSIEJFIENIQU5HRUQgLSBQTEVBU0UgU1BFQUsgV0lUSFxuICAgICAgIEFOT1RIRVIgREVWRUxPUEVSIElGIFlPVSBORUVEIE1PUkUgREVUQUlMICopXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgICB8IFRydWVcbiAgICAgIHwgRmFsc2VcbiAgICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE5vdCBvZiAnYSB0XG4gICAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgICAgfCBCYXNlIG9mICdhXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgKCogdGhlIHJlbWFpbmRlciBvZiB0aGlzIHNpZ25hdHVyZSBjb25zaXN0cyBvZiBmdW5jdGlvbnMgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbnNcbiAgICAgICBvZiBzZXhwIGNvbnZlcnNpb25zIHRoYXQgYXJlIGFsc28gdXNlZnVsIG1vcmUgZ2VuZXJhbGx5ICopXG5cbiAgICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIG9yXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGdhdGhlcl9jb25qdW5jdHMgOiAnYSB0IC0+ICdhIHQgbGlzdFxuICAgIHZhbCBnYXRoZXJfZGlzanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgICAgfCBUcnVlXG4gICAgICB8IEZhbHNlXG4gICAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBOb3Qgb2YgJ2EgdFxuICAgICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICAgIHwgQmFzZSBvZiAnYVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBUIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxuICAgIHR5cGUgc2V4cCA9IFNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2Ygc2V4cCBsaXN0XG5cbiAgICAoKiBjaGVhcCBpbXBvcnQgKilcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBhbmQncyAqKVxuICAgIGxldCBnYXRoZXJfY29uanVuY3RzIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wICh0IDo6IGFjYykgdHNcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIFtdIFsgdCBdXG4gICAgOztcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBvcidzICopXG4gICAgbGV0IGdhdGhlcl9kaXNqdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogW2FuZF9dIGFuZCBbb3JfXSB1c2UgW2ZvbGRfcmlnaHRdIGluc3RlYWQgb2YgW2ZvbGRfbGVmdF0gdG8gYXZvaWQgcXVhZHJhdGljXG4gICAgICAgYmVoYXZpb3Igd2l0aCBbYW5kYWxzb10gb3IgW29yZWxzZV0sIHJlc3BlY3RpdmVseS4gKilcbiAgICBsZXQgYW5kXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDp0cnVlXyB+ZjphbmRhbHNvXG4gICAgbGV0IG9yXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDpmYWxzZV8gfmY6b3JlbHNlXG5cbiAgICBsZXQgdW5hcnkgbmFtZSBhcmdzIHNleHAgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICB8IFsgeCBdIC0+IHhcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGFyZ3MgaW5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzIGV4cGVjdHMgb25lIGFyZ3VtZW50LCAlZCBmb3VuZFwiIG5hbWUgbikgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdGVybmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4OyB5OyB6IF0gLT4geCwgeSwgelxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyB0aHJlZSBhcmd1bWVudHMsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBCYXNlIHggLT4gc2V4cF9vZl92YWx1ZSB4XG4gICAgICAgIHwgVHJ1ZSAtPiBBdG9tIFwidHJ1ZVwiXG4gICAgICAgIHwgRmFsc2UgLT4gQXRvbSBcImZhbHNlXCJcbiAgICAgICAgfCBOb3QgdCAtPiBMaXN0IFsgQXRvbSBcIm5vdFwiOyBhdXggdCBdXG4gICAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IExpc3QgWyBBdG9tIFwiaWZcIjsgYXV4IHQxOyBhdXggdDI7IGF1eCB0MyBdXG4gICAgICAgIHwgQW5kIF8gYXMgdCAtPlxuICAgICAgICAgIGxldCB0cyA9IGdhdGhlcl9jb25qdW5jdHMgdCBpblxuICAgICAgICAgIExpc3QgKEF0b20gXCJhbmRcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICAgIHwgT3IgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Rpc2p1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcIm9yXCIgOjogTGlzdC5tYXAgfmY6YXV4IHRzKVxuICAgICAgaW5cbiAgICAgIGF1eCB0XG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgYmFzZV9vZl9zZXhwIHNleHAgPVxuICAgICAgbGV0IGJhc2Ugc2V4cCA9IGJhc2UgKGJhc2Vfb2Zfc2V4cCBzZXhwKSBpblxuICAgICAgbGV0IHJlYyBhdXggc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IEF0b20ga3cgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBrdyB3aXRoXG4gICAgICAgICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZV9cbiAgICAgICAgICAgfCBcImZhbHNlXCIgLT4gZmFsc2VfXG4gICAgICAgICAgIHwgXyAtPiBiYXNlIHNleHApXG4gICAgICAgIHwgTGlzdCAoQXRvbSBrdyA6OiBhcmdzKSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcImFuZFwiIC0+IGFuZF8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwib3JcIiAtPiBvcl8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwibm90XCIgLT4gbm90XyAoYXV4ICh1bmFyeSBcIm5vdFwiIGFyZ3Mgc2V4cCkpXG4gICAgICAgICAgIHwgXCJpZlwiIC0+XG4gICAgICAgICAgICAgbGV0IHgsIHksIHogPSB0ZXJuYXJ5IFwiaWZcIiBhcmdzIHNleHAgaW5cbiAgICAgICAgICAgICBpZl8gKGF1eCB4KSAoYXV4IHkpIChhdXggeilcbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cFxuICAgICAgaW5cbiAgICAgIGF1eCBzZXhwXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgICBsZXQgZGVmbnMgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5kZWZuIGxpc3QgPVxuICAgICAgICBsZXQgYmxhbmcgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5ncmFtbWFyID0gVHljb24gKFwiYmxhbmdcIiwgWyBUeXZhciBcImFcIiBdKSBpblxuICAgICAgICBbIHsgdHljb24gPSBcImJsYW5nXCJcbiAgICAgICAgICA7IHR5dmFycyA9IFsgXCJhXCIgXVxuICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyBUeXZhciBcImFcIlxuICAgICAgICAgICAgICAgIDsgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX2luc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcInRydWVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcImZhbHNlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImlmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChibGFuZywgQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm5vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKGJsYW5nLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICBmdW4gYmFzZV9ncmFtbWFyIC0+XG4gICAgICAgIHsgdW50eXBlZCA9IFJlY3Vyc2l2ZSAoVHljb24gKFwiYmxhbmdcIiwgWyBiYXNlX2dyYW1tYXIudW50eXBlZCBdKSwgZGVmbnMpIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubGV0IGNvbnN0YW50IGIgPSBpZiBiIHRoZW4gdHJ1ZV8gZWxzZSBmYWxzZV9cblxubW9kdWxlIHR5cGUgQ29uc3RydWN0b3JzID0gc2lnXG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdHJ1ZV8gOiBfIHRcbiAgdmFsIGZhbHNlXyA6IF8gdFxuICB2YWwgY29uc3RhbnQgOiBib29sIC0+IF8gdFxuICB2YWwgbm90XyA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgaWZfIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIGxldCBub3QgPSBub3RfXG4gIGxldCBhbmRfID0gYW5kX1xuICBsZXQgb3JfID0gb3JfXG4gIGxldCBjb25zdGFudCA9IGNvbnN0YW50XG4gIGxldCAoICYmICkgPSBhbmRhbHNvXG4gIGxldCAoIHx8ICkgPSBvcmVsc2VcbiAgbGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5lbmRcblxubGV0IGNvbnN0YW50X3ZhbHVlID0gZnVuY3Rpb25cbiAgfCBUcnVlIC0+IFNvbWUgdHJ1ZVxuICB8IEZhbHNlIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbigqIFt2YWx1ZXMgdF0gbGlzdHMgdGhlIGJhc2UgcHJlZGljYXRlcyBpbiBbdF0gZnJvbSBsZWZ0IHRvIHJpZ2h0ICopXG5sZXQgdmFsdWVzIHQgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgdiA6OiB0cyAtPiBsb29wICh2IDo6IGFjYykgdHNcbiAgICB8IFRydWUgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBOb3QgdDEgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHRzKVxuICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IElmICh0MSwgdDIsIHQzKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdDMgOjogdHMpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSBbIHQgXVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgdCBwZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgQmFzZSBhIC0+IG5leHQgKGYgYWNjIGEpIHBlbmRpbmdcbiAgICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gbmV4dCBhY2MgcGVuZGluZ1xuICAgICAgICB8IE5vdCB0IC0+IGxvb3AgYWNjIHQgcGVuZGluZ1xuICAgICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IGxvb3AgYWNjIHQxICh0MiA6OiBwZW5kaW5nKVxuICAgICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBsb29wIGFjYyB0MSAodDIgOjogdDMgOjogcGVuZGluZylcbiAgICAgIGFuZCBuZXh0IGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wIGFjYyB0IHRzXG4gICAgICBpblxuICAgICAgbG9vcCBpbml0IHQgW11cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgbGVuZ3RoID0gYERlZmluZV91c2luZ19mb2xkXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBpc19lbXB0eSA9IEMuaXNfZW1wdHlcbmxldCBpdGVyID0gQy5pdGVyXG5sZXQgbGVuZ3RoID0gQy5sZW5ndGhcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCByZXR1cm4gPSBiYXNlXG5cbiAgICBsZXQgcmVjIGJpbmQgdCB+ZjprID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBCYXNlIHYgLT4gayB2XG4gICAgICB8IFRydWUgLT4gdHJ1ZV9cbiAgICAgIHwgRmFsc2UgLT4gZmFsc2VfXG4gICAgICB8IE5vdCB0MSAtPiBub3RfIChiaW5kIHQxIH5mOmspXG4gICAgICAoKiBVbmZvcnR1bmF0ZWx5IHdlIG5lZWQgdG8gZHVwbGljYXRlIHNvbWUgb2YgdGhlIHNob3J0LWNpcmN1aXRpbmcgZnJvbSBbYW5kYWxzb10gYW5kXG4gICAgICAgICBmcmllbmRzIGhlcmUuIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgaW52b2x2aW5nIFtMYXp5LnRdIGJ1dCB0aGVcbiAgICAgICAgIG92ZXJoZWFkIHByb2JhYmx5IHdvdWxkbid0IGJlIHdvcnRoIGl0LiAqKVxuICAgICAgfCBBbmQgKHQxLCB0MikgLT5cbiAgICAgICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgICAgICB8IEZhbHNlIC0+IGZhbHNlX1xuICAgICAgICAgfCBvdGhlciAtPiBhbmRhbHNvIG90aGVyIChiaW5kIHQyIH5mOmspKVxuICAgICAgfCBPciAodDEsIHQyKSAtPlxuICAgICAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgICAgIHwgVHJ1ZSAtPiB0cnVlX1xuICAgICAgICAgfCBvdGhlciAtPiBvcmVsc2Ugb3RoZXIgKGJpbmQgdDIgfmY6aykpXG4gICAgICB8IElmICh0MSwgdDIsIHQzKSAtPlxuICAgICAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgICAgIHwgVHJ1ZSAtPiBiaW5kIHQyIH5mOmtcbiAgICAgICAgIHwgRmFsc2UgLT4gYmluZCB0MyB+ZjprXG4gICAgICAgICB8IG90aGVyIC0+IGlmXyBvdGhlciAoYmluZCB0MiB+ZjprKSAoYmluZCB0MyB+ZjprKSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBEZWZpbmVfdXNpbmdfYmluZFxuICBlbmQpXG5cbigqIHNlbWFudGljcyAqKVxuXG5sZXQgcmVjIGV2YWwgdCBiYXNlX2V2YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBUcnVlIC0+IHRydWVcbiAgfCBGYWxzZSAtPiBmYWxzZVxuICB8IEFuZCAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCAmJiBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE9yICh0MSwgdDIpIC0+IGV2YWwgdDEgYmFzZV9ldmFsIHx8IGV2YWwgdDIgYmFzZV9ldmFsXG4gIHwgTm90IHQgLT4gbm90IChldmFsIHQgYmFzZV9ldmFsKVxuICB8IElmICh0MSwgdDIsIHQzKSAtPiBpZiBldmFsIHQxIGJhc2VfZXZhbCB0aGVuIGV2YWwgdDIgYmFzZV9ldmFsIGVsc2UgZXZhbCB0MyBiYXNlX2V2YWxcbiAgfCBCYXNlIHggLT4gYmFzZV9ldmFsIHhcbjs7XG5cbmxldCBzcGVjaWFsaXplIHQgZiA9XG4gIGJpbmQgdCB+ZjooZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgYEtub3duIGMgLT4gY29uc3RhbnQgY1xuICAgIHwgYFVua25vd24gLT4gYmFzZSB2KVxuOztcblxubGV0IGV2YWxfc2V0IH51bml2ZXJzZTphbGwgc2V0X29mX2Jhc2UgPVxuICBsZXQgcmVjIGF1eCAoYiA6IF8gdCkgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgIHwgVHJ1ZSAtPiBmb3JjZSBhbGxcbiAgICB8IEZhbHNlIC0+IFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihTZXQuY29tcGFyYXRvciAoZm9yY2UgYWxsKSlcbiAgICB8IEFuZCAoYSwgYikgLT4gU2V0LmludGVyIChhdXggYSkgKGF1eCBiKVxuICAgIHwgT3IgKGEsIGIpIC0+IFNldC51bmlvbiAoYXV4IGEpIChhdXggYilcbiAgICB8IE5vdCBhIC0+IFNldC5kaWZmIChmb3JjZSBhbGwpIChhdXggYSlcbiAgICB8IEJhc2UgYSAtPiBzZXRfb2ZfYmFzZSBhXG4gICAgfCBJZiAoY29uZCwgYSwgYikgLT5cbiAgICAgIGxldCBjb25kID0gYXV4IGNvbmQgaW5cbiAgICAgIFNldC51bmlvbiAoU2V0LmludGVyIGNvbmQgKGF1eCBhKSkgKFNldC5pbnRlciAoU2V0LmRpZmYgKGZvcmNlIGFsbCkgY29uZCkgKGF1eCBiKSlcbiAgaW5cbiAgYXV4XG47O1xuXG5tb2R1bGUgdHlwZSBNb25hZGljID0gc2lnXG4gIG1vZHVsZSBNIDogTW9uYWQuU1xuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQgTS50KSAtPiAnYiB0IE0udFxuICB2YWwgZXZhbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBNLnQpIC0+IGJvb2wgTS50XG5lbmRcblxubW9kdWxlIEZvcl9tb25hZCAoTSA6IE1vbmFkLlMpIDogTW9uYWRpYyB3aXRoIG1vZHVsZSBNIDo9IE0gPSBzdHJ1Y3RcbiAgb3BlbiBNLk1vbmFkX2luZml4XG5cbiAgbGV0IHJlYyBiaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQmFzZSB4IC0+IGYgeFxuICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgfCBBbmQgKGEsIGIpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSAtPiBNLnJldHVybiBmYWxzZV9cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBhbmRhbHNvIGEgYilcbiAgICB8IE9yIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBvcmVsc2UgYSBiKVxuICAgIHwgTm90IGEgLT4gYmluZCBhIH5mID4+fCBub3RfXG4gICAgfCBJZiAoYSwgYiwgYykgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgRmFsc2UgLT4gYmluZCBjIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj49IGZ1biBiIC0+IGJpbmQgYyB+ZiA+PnwgZnVuIGMgLT4gaWZfIGEgYiBjKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIHggLT4gZiB4ID4+fCBiYXNlKVxuXG4gIGxldCBldmFsIHQgfmYgPVxuICAgIGJpbmQgdCB+ZjooZnVuIHggLT5cbiAgICAgIGYgeFxuICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gdHJ1ZV9cbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VfKVxuICAgID4+fCBmdW4gdCAtPiBldmFsIHQgTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gIDs7XG5lbmRcblxuKCoqIFdlIGF2b2lkIGRlcml2aW5nIHF1aWNrY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGludmFyaWFudHMgZGVzY3JpYmVkIGluIFtUXSdzIGNvbW1lbnRzXG4gICAgYWJvdmUgYXJlIHByZXNlcnZlZC4gKilcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBhX2dlbmVyYXRvciA9XG4gIFF1aWNrY2hlY2suR2VuZXJhdG9yLnJlY3Vyc2l2ZV91bmlvblxuICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOmJhc2UgYV9nZW5lcmF0b3JcbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiB0cnVlX1xuICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3Iuc2luZ2xldG9uIGZhbHNlX1xuICAgIF1cbiAgICB+ZjooZnVuIHNlbGYgLT5cbiAgICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIHNlbGYgfmY6bm90X1xuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggfHwgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggJiYgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAzIHNlbGYgc2VsZiBzZWxmIH5mOmlmX1xuICAgICAgXSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyICh0eXBlIGEpIChhX3Nocmlua2VyIDogYSBRdWlja2NoZWNrLlNocmlua2VyLnQpID1cbiAgUXVpY2tjaGVjay5TaHJpbmtlci5maXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgYmlub3Agb3BlcmF0b3IgbGVmdCByaWdodCA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBsZWZ0XG4gICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHJpZ2h0XG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGxlZnQpIH5mOihmdW4gbGVmdCAtPlxuICAgICAgICAgICAgb3BlcmF0b3IgbGVmdCByaWdodClcbiAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgcmlnaHQpIH5mOihmdW4gcmlnaHQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIF1cbiAgICBpblxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuY3JlYXRlIChmdW4gdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBCYXNlIGEgLT4gU2VxdWVuY2UubWFwIH5mOmJhc2UgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIGFfc2hyaW5rZXIgYSlcbiAgICAgIHwgT3IgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggfHwgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IEFuZCAobGVmdCwgcmlnaHQpIC0+IGJpbm9wIE8uKCAmJiApIGxlZnQgcmlnaHRcbiAgICAgIHwgTm90IHQgLT5cbiAgICAgICAgU2VxdWVuY2UuYXBwZW5kXG4gICAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiB0KVxuICAgICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6bm90XyAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0KSlcbiAgICAgIHwgSWYgKGlmXywgdGhlbl8sIGVsc2VfKSAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIGlmX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHRoZW5fXG4gICAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gZWxzZV9cbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBpZl8pIH5mOihmdW4gaWZfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0aGVuXykgfmY6KGZ1biB0aGVuXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgZWxzZV8pIH5mOihmdW4gZWxzZV8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIF0pKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgKHR5cGUgYSkgKGFfb2JzZXJ2ZXIgOiBhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCkgPVxuICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGhhc2hfZm9sZF90XG4gICAgICAoZnVuIGhhc2ggYSAtPiBRdWlja2NoZWNrLk9ic2VydmVyLm9ic2VydmUgYV9vYnNlcnZlciBhIH5zaXplIH5oYXNoKVxuICAgICAgaGFzaFxuICAgICAgdClcbjs7XG4iLCIoKiBDb252ZXJzaW9ucyBiZXR3ZWVuIHVuaXRzIG9mIG1lYXN1cmUgYmFzZWQgb24gYnl0ZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBSZXByID0gSW50NjNcbm1vZHVsZSBUID0gQnl0ZV91bml0czBcbmluY2x1ZGUgKFQgOiBtb2R1bGUgdHlwZSBvZiBUIHdpdGggbW9kdWxlIFJlcHIgOj0gUmVwcilcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggLSApIGEgYiA9IG9mX3JlcHIgKFJlcHIuKCAtICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYikpXG4gIGxldCAoICsgKSBhIGIgPSBvZl9yZXByIChSZXByLiggKyApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCAvLyApIGEgYiA9IFJlcHIuKCAvLyApICh0b19yZXByIGEpICh0b19yZXByIGIpXG5cbiAgbGV0ICggLyApIHQgcyA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgKFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdCkgLy4gcykpXG4gIGxldCAoICogKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpICouIHMpKVxuZW5kXG5cbmluY2x1ZGUgSW5maXhcblxubGV0IHplcm8gPSBvZl9yZXByIFJlcHIuemVyb1xubGV0IG1pbl92YWx1ZSA9IG9mX3JlcHIgUmVwci5taW5fdmFsdWVcbmxldCBtYXhfdmFsdWUgPSBvZl9yZXByIFJlcHIubWF4X3ZhbHVlXG5sZXQgc2NhbGUgPSBJbmZpeC4oICogKVxubGV0IGlzY2FsZSB0IHMgPSBvZl9yZXByIChSZXByLiggKiApICh0b19yZXByIHQpIChSZXByLm9mX2ludCBzKSlcbmxldCBieXRlc19pbnRfZXhuID0gVC5ieXRlc19pbnRfZXhuXG5sZXQgYnl0ZXNfaW50NjMgPSB0b19yZXByXG5sZXQgYnl0ZXNfaW50NjQgdCA9IFJlcHIudG9faW50NjQgKHRvX3JlcHIgdClcbmxldCBieXRlc19mbG9hdCB0ID0gUmVwci50b19mbG9hdCAodG9fcmVwciB0KVxubGV0IG9mX2J5dGVzX2ludCBiID0gb2ZfcmVwciAoUmVwci5vZl9pbnQgYilcbmxldCBvZl9ieXRlc19pbnQ2MyA9IG9mX3JlcHJcbmxldCBvZl9ieXRlc19pbnQ2NF9leG4gYiA9IG9mX3JlcHIgKFJlcHIub2ZfaW50NjRfZXhuIGIpXG5sZXQgb2ZfYnl0ZXNfZmxvYXRfZXhuIGIgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IGIpXG5cbmxldFtAZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW2J5dGVzX2ludF9leG5dLCBbYnl0ZXNfaW50NjNdLCBbYnl0ZXNfaW50NjRdIG9yIFtieXRlc19mbG9hdF0gXFxcbiAgIGFzIGFwcHJvcHJpYXRlLlwiXSBieXRlc1xuICA9XG4gIGJ5dGVzX2Zsb2F0XG47O1xuXG5sZXRbQGRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc19pbnRdLCBbb2ZfYnl0ZXNfaW50NjNdLCBbb2ZfYnl0ZXNfaW50NjRfZXhuXSBvciBcXFxuICAgW29mX2J5dGVzX2Zsb2F0X2V4bl0gYXMgYXBwcm9wcmlhdGUuXCJdIG9mX2J5dGVzXG4gID1cbiAgb2ZfYnl0ZXNfZmxvYXRfZXhuXG47O1xuXG5sZXQga2lsb2J5dGUgOiB0ID0gb2ZfYnl0ZXNfaW50IDEwMjRcbmxldCBtZWdhYnl0ZSA9IGlzY2FsZSBraWxvYnl0ZSAxMDI0XG5sZXQgZ2lnYWJ5dGUgPSBpc2NhbGUgbWVnYWJ5dGUgMTAyNFxubGV0IHRlcmFieXRlID0gaXNjYWxlIGdpZ2FieXRlIDEwMjRcbmxldCBwZXRhYnl0ZSA9IGlzY2FsZSB0ZXJhYnl0ZSAxMDI0XG5sZXQgZXhhYnl0ZSA9IGlzY2FsZSBwZXRhYnl0ZSAxMDI0XG5cbmxldCB3b3JkID1cbiAgbGV0IG1vZHVsZSBXID0gV29yZF9zaXplIGluXG4gIG1hdGNoIFcud29yZF9zaXplIHdpdGhcbiAgfCBXLlczMiAtPiBvZl9ieXRlc19pbnQgNFxuICB8IFcuVzY0IC0+IG9mX2J5dGVzX2ludCA4XG47O1xuXG5sZXQga2lsb2J5dGVzIHQgOiBmbG9hdCA9IEluZml4LiggLy8gKSB0IGtpbG9ieXRlXG5sZXQgbWVnYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBtZWdhYnl0ZVxubGV0IGdpZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZ2lnYWJ5dGVcbmxldCB0ZXJhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IHRlcmFieXRlXG5sZXQgcGV0YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBwZXRhYnl0ZVxubGV0IGV4YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBleGFieXRlXG5sZXQgd29yZHNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuIChSZXByLiggLyApICh0b19yZXByIHQpICh0b19yZXByIHdvcmQpKVxubGV0IHdvcmRzX2Zsb2F0IHQgPSBJbmZpeC4oIC8vICkgdCB3b3JkXG5sZXQgb2Zfa2lsb2J5dGVzIHQgOiB0ID0gSW5maXguKCAqICkga2lsb2J5dGUgdFxubGV0IG9mX21lZ2FieXRlcyB0ID0gSW5maXguKCAqICkgbWVnYWJ5dGUgdFxubGV0IG9mX2dpZ2FieXRlcyB0ID0gSW5maXguKCAqICkgZ2lnYWJ5dGUgdFxubGV0IG9mX3RlcmFieXRlcyB0ID0gSW5maXguKCAqICkgdGVyYWJ5dGUgdFxubGV0IG9mX3BldGFieXRlcyB0ID0gSW5maXguKCAqICkgcGV0YWJ5dGUgdFxubGV0IG9mX2V4YWJ5dGVzIHQgPSBJbmZpeC4oICogKSBleGFieXRlIHRcbmxldCBvZl93b3Jkc19pbnQgdCA9IGlzY2FsZSB3b3JkIHRcbmxldCBvZl93b3Jkc19mbG9hdF9leG4gdCA9IEluZml4LiggKiApIHdvcmQgdFxuXG5sZXRbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFt3b3Jkc19pbnRfZXhuXSBvciBbd29yZHNfZmxvYXRdXCJdIHdvcmRzID1cbiAgd29yZHNfZmxvYXRcbjs7XG5cbmxldFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX3dvcmRzX2ludF0gb3IgW29mX3dvcmRzX2Zsb2F0X2V4bl1cIl0gb2Zfd29yZHMgPVxuICBvZl93b3Jkc19mbG9hdF9leG5cbjs7XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgSW50LiggPCApIGxlbmd0aCAyXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSB0b28gc2hvcnRcIiBzICgpO1xuICBsZXQgYmFzZV9zdHIgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KEludC4oIC0gKSBsZW5ndGggMSkgaW5cbiAgbGV0IGV4dF9jaGFyID0gQ2hhci5sb3dlcmNhc2Ugcy5bSW50LiggLSApIGxlbmd0aCAxXSBpblxuICBsZXQgYmFzZSA9XG4gICAgdHJ5IEZsb2F0Lm9mX3N0cmluZyBiYXNlX3N0ciB3aXRoXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtICVzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gZmxvYXQgXCJcbiAgICAgICAgc1xuICAgICAgICBiYXNlX3N0clxuICAgICAgICAoKVxuICBpblxuICBtYXRjaCBleHRfY2hhciB3aXRoXG4gIHwgJ2InIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biBiYXNlXG4gIHwgJ2snIC0+IG9mX2tpbG9ieXRlcyBiYXNlXG4gIHwgJ20nIC0+IG9mX21lZ2FieXRlcyBiYXNlXG4gIHwgJ2cnIC0+IG9mX2dpZ2FieXRlcyBiYXNlXG4gIHwgJ3QnIC0+IG9mX3RlcmFieXRlcyBiYXNlXG4gIHwgJ3AnIC0+IG9mX3BldGFieXRlcyBiYXNlXG4gIHwgJ2UnIC0+IG9mX2V4YWJ5dGVzIGJhc2VcbiAgfCAndycgLT4gb2Zfd29yZHMgYmFzZVxuICB8IGV4dCAtPlxuICAgIGludmFsaWRfYXJnZiBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gaWxsZWdhbCBleHRlbnNpb24gJWNcIiBzIGV4dCAoKVxuOztcblxubGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG5cbmxldCBsYXJnZXN0X21lYXN1cmUgdCA9XG4gIGxldCB0X2FicyA9IG9mX3JlcHIgKFJlcHIuYWJzICh0b19yZXByIHQpKSBpblxuICBpZiB0X2FicyA+PSBleGFieXRlXG4gIHRoZW4gYEV4YWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gcGV0YWJ5dGVcbiAgdGhlbiBgUGV0YWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gdGVyYWJ5dGVcbiAgdGhlbiBgVGVyYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gZ2lnYWJ5dGVcbiAgdGhlbiBgR2lnYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gbWVnYWJ5dGVcbiAgdGhlbiBgTWVnYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0ga2lsb2J5dGVcbiAgdGhlbiBgS2lsb2J5dGVzXG4gIGVsc2UgYEJ5dGVzXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICgqIFNoYXJlIHRoZSBjb21tb24gW29mX3NleHBdIGNvZGUgZm9yIFtWMV0gYW5kIFtWMl0uICopXG4gIG1vZHVsZSBPZl9zZXhwX3YxX3YyIDogc2lnXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHAudCAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBub19tYXRjaCAoKSA9IGZhaWx3aXRoIFwiTm90IGEgcmVjb2duaXplZCBbQnl0ZV91bml0cy50XSByZXByZXNlbnRhdGlvblwiXG5cbiAgICBsZXQgb2ZfdmFsdWVfc2V4cF9hbmRfdW5pdF9uYW1lIHZhbF9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgXCJCeXRlc1wiIC0+XG4gICAgICAgICh0cnkgb2ZfYnl0ZXNfaW50NjMgKEludDYzLnRfb2Zfc2V4cCB2YWxfc2V4cCkgd2l0aFxuICAgICAgICAgfCBfIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biAoRmxvYXQudF9vZl9zZXhwIHZhbF9zZXhwKSlcbiAgICAgIHwgXCJLaWxvYnl0ZXNcIiAtPiBvZl9raWxvYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiTWVnYWJ5dGVzXCIgLT4gb2ZfbWVnYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIkdpZ2FieXRlc1wiIC0+IG9mX2dpZ2FieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJUZXJhYnl0ZXNcIiAtPiBvZl90ZXJhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiUGV0YWJ5dGVzXCIgLT4gb2ZfcGV0YWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIkV4YWJ5dGVzXCIgLT4gb2ZfZXhhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiV29yZHNcIiAtPiBvZl93b3Jkc19mbG9hdF9leG4gKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IF8gLT4gbm9fbWF0Y2ggKClcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBzdHIgLT4gb2Zfc3RyaW5nIHN0clxuICAgICAgfCBTZXhwLkxpc3QgWyBTZXhwLkF0b20gdW5pdF9uYW1lOyB2YWx1ZSBdIC0+XG4gICAgICAgIG9mX3ZhbHVlX3NleHBfYW5kX3VuaXRfbmFtZSB2YWx1ZSB1bml0X25hbWVcbiAgICAgIHwgXyAtPiBub19tYXRjaCAoKVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgdHJ5IHRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZXhuIC0+IHJhaXNlIChTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc2V4cCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2Zsb2F0XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19mbG9hdF9leG5cbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgKCogVjEgb25seSBnb2VzIHVwIHRvIGdpZ2FieXRlcyAqKVxuICAgICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgICAgfCBgQnl0ZXMgLT4gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfZmxvYXQgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEtpbG9ieXRlcyAtPiBbJXNleHAgYEtpbG9ieXRlcyAoa2lsb2J5dGVzIHQgOiBmbG9hdCldXG4gICAgICB8IGBNZWdhYnl0ZXMgLT4gWyVzZXhwIGBNZWdhYnl0ZXMgKG1lZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgR2lnYWJ5dGVzIHwgYFRlcmFieXRlcyB8IGBQZXRhYnl0ZXMgfCBgRXhhYnl0ZXMgLT5cbiAgICAgICAgWyVzZXhwIGBHaWdhYnl0ZXMgKGdpZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubG93ZXJjYXNlICh0b19zdHJpbmcgdClcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5cbiAgICAoKiBUaGlzIHRlc3QgZG9jdW1lbnRzIHRoZSBvcmlnaW5hbCB0by1zdHJpbmcgcmVwcmVzZW50YXRpb24gYW5kIGZhaWxzIHVuZGVyIGphdmFzY3JpcHRcbiAgICAgICBkdWUgdG8gZGlmZmVyZW5jZXMgaW4gdGhlIHJvdW5kaW5nLiAqKVxuICAgIGxldCVleHBlY3RfdGVzdCAoXyBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDAwYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMjNiIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMWsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjAwMDk4ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxNTAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDEuNDY0ODRrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNzY1NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ny42NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDk3Ni41NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNTM2NzRtIHx9XVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50NjMpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19pbnQ2M1xuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfaW50NjNcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgYEJ5dGVzIChieXRlc19pbnQ2MyB0IDogSW50NjMudCldXG4gIGVuZFxuZW5kXG5cbmxldCB0b19zdHJpbmdfaHVtID0gVC50b19zdHJpbmdcblxubW9kdWxlIFNob3J0ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICBsZXQgdG9fdW5pdHNfc3RyIHRvX3VuaXQgZXh0ID1cbiAgICAgIGxldCBmID0gdG9fdW5pdCB0IGluXG4gICAgICBsZXQgZl9hYnMgPSBGbG9hdC5hYnMgZiBpblxuICAgICAgaWYgRmxvYXQuUm9idXN0bHlfY29tcGFyYWJsZS4oID49LiApIGZfYWJzIDEwMC5cbiAgICAgIHRoZW4gc3ByaW50ZiBcIiUuMGYlY1wiIGYgZXh0XG4gICAgICBlbHNlIGlmIEZsb2F0LlJvYnVzdGx5X2NvbXBhcmFibGUuKCA+PS4gKSBmX2FicyAxMC5cbiAgICAgIHRoZW4gc3ByaW50ZiBcIiUuMWYlY1wiIGYgZXh0XG4gICAgICBlbHNlIHNwcmludGYgXCIlLjJmJWNcIiBmIGV4dFxuICAgIGluXG4gICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgIHwgYEJ5dGVzIC0+IHNwcmludGYgXCIlZEJcIiAoYnl0ZXNfaW50X2V4biB0KVxuICAgIHwgYEtpbG9ieXRlcyAtPiB0b191bml0c19zdHIga2lsb2J5dGVzICdLJ1xuICAgIHwgYE1lZ2FieXRlcyAtPiB0b191bml0c19zdHIgbWVnYWJ5dGVzICdNJ1xuICAgIHwgYEdpZ2FieXRlcyAtPiB0b191bml0c19zdHIgZ2lnYWJ5dGVzICdHJ1xuICAgIHwgYFRlcmFieXRlcyAtPiB0b191bml0c19zdHIgdGVyYWJ5dGVzICdUJ1xuICAgIHwgYFBldGFieXRlcyAtPiB0b191bml0c19zdHIgcGV0YWJ5dGVzICdQJ1xuICAgIHwgYEV4YWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBleGFieXRlcyAnRSdcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwKTtcbiAgICBbJWV4cGVjdCB7fCAxMDAwQiB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyMyk7XG4gICAgWyVleHBlY3Qge3wgMTAyM0IgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgIFslZXhwZWN0IHt8IDEuMDBLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI1KTtcbiAgICBbJWV4cGVjdCB7fCAxLjAwSyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDApO1xuICAgIFslZXhwZWN0IHt8IDkuNzdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDk3LjdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5NzdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOS41NE0gfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMTAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5LjMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAxMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAxMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5MC45VCB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAxMDAwMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA4OC44UCB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAzMDAwMDAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgMi42MEUgfH1dO1xuICAgICgpXG4gIDs7XG5lbmRcblxubGV0IHRvX3N0cmluZ19zaG9ydCA9IFNob3J0LnRvX3N0cmluZ1xuXG5sZXRbQGRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc10sIFtvZl9raWxvYnl0ZXNdLCBbb2ZfbWVnYWJ5dGVzXSwgZXRjIGFzIGFwcHJvcHJpYXRlLlwiXSBjcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXG4gID1cbiAgbWF0Y2ggdW5pdHMgd2l0aFxuICB8IGBCeXRlcyAtPiBvZl9ieXRlc19mbG9hdF9leG4gdmFsdWVcbiAgfCBgS2lsb2J5dGVzIC0+IG9mX2tpbG9ieXRlcyB2YWx1ZVxuICB8IGBNZWdhYnl0ZXMgLT4gb2ZfbWVnYWJ5dGVzIHZhbHVlXG4gIHwgYEdpZ2FieXRlcyAtPiBvZl9naWdhYnl0ZXMgdmFsdWVcbiAgfCBgV29yZHMgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIHZhbHVlXG47O1xuXG5pbmNsdWRlXG4gIFF1aWNrY2hlY2thYmxlLk9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFJlcHIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG9mX3F1aWNrY2hlY2thYmxlID0gb2ZfcmVwclxuICAgICAgbGV0IHRvX3F1aWNrY2hlY2thYmxlID0gdG9fcmVwclxuICAgIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5leHRlcm5hbCBpc19oZWFwX2Jsb2NrIDogQ2FtbC5PYmoudCAtPiBib29sID0gXCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1wiIFtAQG5vYWxsb2NdXG5cbmxldCBpc19vayB2ID0gaXNfaGVhcF9ibG9jayAoQ2FtbC5PYmoucmVwciB2KVxubGV0IGNyZWF0ZSB2ID0gaWYgaXNfb2sgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcblxubGV0IGNyZWF0ZV9leG4gdiA9XG4gIGlmIGlzX29rIHYgdGhlbiB2IGVsc2UgZmFpbHdpdGggXCJIZWFwX2Jsb2NrLmNyZWF0ZV9leG4gY2FsbGVkIHdpdGggbm9uIGhlYXAgYmxvY2tcIlxuOztcblxubGV0IHZhbHVlIHQgPSB0XG5sZXQgYnl0ZXNfcGVyX3dvcmQgPSBXb3JkX3NpemUuKG51bV9iaXRzIHdvcmRfc2l6ZSkgLyA4XG5cbmxldCBieXRlcyAodHlwZSBhKSAodCA6IGEgdCkgPVxuICAoQ2FtbC5PYmouc2l6ZSAoQ2FtbC5PYmoucmVwciAodCA6IGEgdCkpICsgMSkgKiBieXRlc19wZXJfd29yZFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBBbGxvY2F0aW9uX3BvbGljeSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBOZXh0X2ZpdFxuICAgICAgICB8IEZpcnN0X2ZpdFxuICAgICAgICB8IEJlc3RfZml0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBDYW1sLkdjLnN0YXQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQ2FtbC5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcblxuICAgIFslJWVuZGlmXVxuICBlbmRcblxuICBtb2R1bGUgQ29udHJvbCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgICAgdHlwZSB0ID0gQ2FtbC5HYy5jb250cm9sID1cbiAgICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gICAgZW5kXG5cbiAgICBbJSUgZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBDYW1sLkdjLmNvbnRyb2wgPVxuICAgICAgICB7IG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgICAgOyBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBDYW1sLkdjXG5cbm1vZHVsZSBTdGF0ID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBiaW5faW8sIHNleHAsIGZpZWxkc11cblxuICAgIFslJWVsc2VdXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZiwgZmllbGRzXVxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICBsZXQgZGlmZiBhZnRlciBiZWZvcmUgPVxuICAgIHsgbWlub3Jfd29yZHMgPSBhZnRlci5taW5vcl93b3JkcyAtLiBiZWZvcmUubWlub3Jfd29yZHNcbiAgICA7IHByb21vdGVkX3dvcmRzID0gYWZ0ZXIucHJvbW90ZWRfd29yZHMgLS4gYmVmb3JlLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGFmdGVyLm1ham9yX3dvcmRzIC0uIGJlZm9yZS5tYWpvcl93b3Jkc1xuICAgIDsgbWlub3JfY29sbGVjdGlvbnMgPSBhZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBhZnRlci5tYWpvcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5tYWpvcl9jb2xsZWN0aW9uc1xuICAgIDsgaGVhcF93b3JkcyA9IGFmdGVyLmhlYXBfd29yZHMgLSBiZWZvcmUuaGVhcF93b3Jkc1xuICAgIDsgaGVhcF9jaHVua3MgPSBhZnRlci5oZWFwX2NodW5rcyAtIGJlZm9yZS5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGFmdGVyLmxpdmVfd29yZHMgLSBiZWZvcmUubGl2ZV93b3Jkc1xuICAgIDsgbGl2ZV9ibG9ja3MgPSBhZnRlci5saXZlX2Jsb2NrcyAtIGJlZm9yZS5saXZlX2Jsb2Nrc1xuICAgIDsgZnJlZV93b3JkcyA9IGFmdGVyLmZyZWVfd29yZHMgLSBiZWZvcmUuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBhZnRlci5mcmVlX2Jsb2NrcyAtIGJlZm9yZS5mcmVlX2Jsb2Nrc1xuICAgIDsgbGFyZ2VzdF9mcmVlID0gYWZ0ZXIubGFyZ2VzdF9mcmVlIC0gYmVmb3JlLmxhcmdlc3RfZnJlZVxuICAgIDsgZnJhZ21lbnRzID0gYWZ0ZXIuZnJhZ21lbnRzIC0gYmVmb3JlLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBhZnRlci5jb21wYWN0aW9ucyAtIGJlZm9yZS5jb21wYWN0aW9uc1xuICAgIDsgdG9wX2hlYXBfd29yZHMgPSBhZnRlci50b3BfaGVhcF93b3JkcyAtIGJlZm9yZS50b3BfaGVhcF93b3Jkc1xuICAgIDsgc3RhY2tfc2l6ZSA9IGFmdGVyLnN0YWNrX3NpemUgLSBiZWZvcmUuc3RhY2tfc2l6ZVxuICAgIH1cbiAgOztcblxuICBbJSVlbHNlXVxuXG4gIGxldCBkaWZmIGFmdGVyIGJlZm9yZSA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGFmdGVyLm1pbm9yX3dvcmRzIC0uIGJlZm9yZS5taW5vcl93b3Jkc1xuICAgIDsgcHJvbW90ZWRfd29yZHMgPSBhZnRlci5wcm9tb3RlZF93b3JkcyAtLiBiZWZvcmUucHJvbW90ZWRfd29yZHNcbiAgICA7IG1ham9yX3dvcmRzID0gYWZ0ZXIubWFqb3Jfd29yZHMgLS4gYmVmb3JlLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGFmdGVyLm1pbm9yX2NvbGxlY3Rpb25zIC0gYmVmb3JlLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IGFmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgOyBoZWFwX3dvcmRzID0gYWZ0ZXIuaGVhcF93b3JkcyAtIGJlZm9yZS5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGFmdGVyLmhlYXBfY2h1bmtzIC0gYmVmb3JlLmhlYXBfY2h1bmtzXG4gICAgOyBsaXZlX3dvcmRzID0gYWZ0ZXIubGl2ZV93b3JkcyAtIGJlZm9yZS5saXZlX3dvcmRzXG4gICAgOyBsaXZlX2Jsb2NrcyA9IGFmdGVyLmxpdmVfYmxvY2tzIC0gYmVmb3JlLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gYWZ0ZXIuZnJlZV93b3JkcyAtIGJlZm9yZS5mcmVlX3dvcmRzXG4gICAgOyBmcmVlX2Jsb2NrcyA9IGFmdGVyLmZyZWVfYmxvY2tzIC0gYmVmb3JlLmZyZWVfYmxvY2tzXG4gICAgOyBsYXJnZXN0X2ZyZWUgPSBhZnRlci5sYXJnZXN0X2ZyZWUgLSBiZWZvcmUubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBhZnRlci5mcmFnbWVudHMgLSBiZWZvcmUuZnJhZ21lbnRzXG4gICAgOyBjb21wYWN0aW9ucyA9IGFmdGVyLmNvbXBhY3Rpb25zIC0gYmVmb3JlLmNvbXBhY3Rpb25zXG4gICAgOyB0b3BfaGVhcF93b3JkcyA9IGFmdGVyLnRvcF9oZWFwX3dvcmRzIC0gYmVmb3JlLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gYWZ0ZXIuc3RhY2tfc2l6ZSAtIGJlZm9yZS5zdGFja19zaXplXG4gICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgPVxuICAgICAgICBhZnRlci5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgLSBiZWZvcmUuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXG4gICAgfVxuICA7O1xuXG4gIFslJWVuZGlmXVxuZW5kXG5cbm1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGZpZWxkc11cbiAgZW5kXG5cbiAgWyUlIGVsc2VdXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgdmVyYm9zZSA6IGludFxuICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBmaWVsZHNdXG4gIGVuZFxuXG4gIFslJSBlbmRpZl1cblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5lbmRcblxubW9kdWxlIEFsbG9jYXRpb25fcG9saWN5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5BbGxvY2F0aW9uX3BvbGljeS5WMS50ID1cbiAgICB8IE5leHRfZml0XG4gICAgfCBGaXJzdF9maXRcbiAgICB8IEJlc3RfZml0XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgIHwgTmV4dF9maXQgLT4gMFxuICAgIHwgRmlyc3RfZml0IC0+IDFcbiAgICB8IEJlc3RfZml0IC0+IDJcbiAgOztcbmVuZFxuXG5sZXQgdHVuZVxuICAgICAgP2xvZ2dlclxuICAgICAgP21pbm9yX2hlYXBfc2l6ZVxuICAgICAgP21ham9yX2hlYXBfaW5jcmVtZW50XG4gICAgICA/c3BhY2Vfb3ZlcmhlYWRcbiAgICAgID92ZXJib3NlXG4gICAgICA/bWF4X292ZXJoZWFkXG4gICAgICA/c3RhY2tfbGltaXRcbiAgICAgID9hbGxvY2F0aW9uX3BvbGljeVxuICAgICAgP3dpbmRvd19zaXplXG4gICAgICA/Y3VzdG9tX21ham9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX21heF9zaXplXG4gICAgICAoKVxuICA9XG4gIGxldCBvbGRfY29udHJvbF9wYXJhbXMgPSBnZXQgKCkgaW5cbiAgbGV0IGYgb3B0IHRvX3N0cmluZyBmaWVsZCA9XG4gICAgbGV0IG9sZF92YWx1ZSA9IEZpZWxkLmdldCBmaWVsZCBvbGRfY29udHJvbF9wYXJhbXMgaW5cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBvbGRfdmFsdWVcbiAgICB8IFNvbWUgbmV3X3ZhbHVlIC0+XG4gICAgICBPcHRpb24uaXRlciBsb2dnZXIgfmY6KGZ1biBmIC0+XG4gICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgIGZcbiAgICAgICAgICBcIkdjLkNvbnRyb2wuJXM6ICVzIC0+ICVzXCJcbiAgICAgICAgICAoRmllbGQubmFtZSBmaWVsZClcbiAgICAgICAgICAodG9fc3RyaW5nIG9sZF92YWx1ZSlcbiAgICAgICAgICAodG9fc3RyaW5nIG5ld192YWx1ZSkpO1xuICAgICAgbmV3X3ZhbHVlXG4gIGluXG4gIGxldCBhbGxvY2F0aW9uX3BvbGljeSA9IE9wdGlvbi5tYXAgYWxsb2NhdGlvbl9wb2xpY3kgfmY6QWxsb2NhdGlvbl9wb2xpY3kudG9faW50IGluXG4gIGxldCBuZXdfY29udHJvbF9wYXJhbXMgPVxuICAgIENvbnRyb2wuRmllbGRzLm1hcFxuICAgICAgfm1pbm9yX2hlYXBfc2l6ZTooZiBtaW5vcl9oZWFwX3NpemUgc3RyaW5nX29mX2ludClcbiAgICAgIH5tYWpvcl9oZWFwX2luY3JlbWVudDooZiBtYWpvcl9oZWFwX2luY3JlbWVudCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnNwYWNlX292ZXJoZWFkOihmIHNwYWNlX292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+dmVyYm9zZTooZiB2ZXJib3NlIHN0cmluZ19vZl9pbnQpXG4gICAgICB+bWF4X292ZXJoZWFkOihmIG1heF9vdmVyaGVhZCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnN0YWNrX2xpbWl0OihmIHN0YWNrX2xpbWl0IHN0cmluZ19vZl9pbnQpXG4gICAgICB+YWxsb2NhdGlvbl9wb2xpY3k6KGYgYWxsb2NhdGlvbl9wb2xpY3kgc3RyaW5nX29mX2ludClcbiAgICAgIH53aW5kb3dfc2l6ZTooZiB3aW5kb3dfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9tYWpvcl9yYXRpbzooZiBjdXN0b21fbWFqb3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfcmF0aW86KGYgY3VzdG9tX21pbm9yX3JhdGlvIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21pbm9yX21heF9zaXplOihmIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICBpblxuICBzZXQgbmV3X2NvbnRyb2xfcGFyYW1zXG47O1xuXG5sZXQgZGlzYWJsZV9jb21wYWN0aW9uID9sb2dnZXIgfmFsbG9jYXRpb25fcG9saWN5ICgpID1cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID1cbiAgICBtYXRjaCBhbGxvY2F0aW9uX3BvbGljeSB3aXRoXG4gICAgfCBgRG9uJ3RfY2hhbmdlIC0+IE5vbmVcbiAgICB8IGBTZXRfdG8gcG9saWN5IC0+IFNvbWUgcG9saWN5XG4gIGluXG4gICgqIFRoZSB2YWx1ZSAxXzAwMF8wMDAsIGFjY29yZGluZyB0b1xuICAgICBodHRwOi8vY2FtbC5pbnJpYS5mci9wdWIvZG9jcy9tYW51YWwtb2NhbWwtNC4wMi9saWJyZWYvR2MuaHRtbFxuICAgICB3aWxsIGRpc2FibGUgY29tcGFjdGlvbnMuXG4gICopXG4gIHR1bmUgP2xvZ2dlciA/YWxsb2NhdGlvbl9wb2xpY3kgfm1heF9vdmVyaGVhZDoxXzAwMF8wMDAgKClcbjs7XG5cbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgbWFqb3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwcm9tb3RlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX3Byb21vdGVkX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1pbm9yX2NvbGxlY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb21wYWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2NvbXBhY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1ham9yX3BsdXNfbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXCJcbmV4dGVybmFsIGFsbG9jYXRlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2FsbG9jYXRlZF93b3Jkc1wiXG5cbmxldCB6ZXJvID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoaW50X29mX3N0cmluZyBcIjBcIilcblxuKCogVGhlIGNvbXBpbGVyIHdvbid0IG9wdGltaXplIGludF9vZl9zdHJpbmcgYXdheSBzbyBpdCB3b24ndFxuICAgcGVyZm9ybSBjb25zdGFudCBmb2xkaW5nIGJlbG93LiAqKVxubGV0IHJlYyBrZWVwX2FsaXZlIG8gPSBpZiB6ZXJvIDw+IDAgdGhlbiBrZWVwX2FsaXZlIChTeXMub3BhcXVlX2lkZW50aXR5IG8pXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBsZXQgcHJlcGFyZV9oZWFwX3RvX2NvdW50X21pbm9yX2FsbG9jYXRpb24gKCkgPVxuICAgICgqIFdlIGNhbGwgW21pbm9yXSB0byBlbXB0eSB0aGUgbWlub3IgaGVhcCwgc28gdGhhdCBvdXIgYWxsb2NhdGlvbiBpcyB1bmxpa2VseSB0b1xuICAgICAgIHRyaWdnZXIgYSBtaW5vciBnYy4gKilcbiAgICBtaW5vciAoKTtcbiAgICAoKiBXZSBhbGxvY2F0ZSB0d28gd29yZHMgaW4gY2FzZSB0aGUgW0djLm1pbm9yXSBmaW5pc2hlcyBhIG1ham9yIGdjIGN5Y2xlLCBpbiB3aGljaFxuICAgICAgIGNhc2UgaXQgcmVxdWVzdHMgYSBtaW5vciBnYyB0byBvY2N1ciBhdCB0aGUgbmV4dCBtaW5vciBhbGxvY2F0aW9uLiAgV2UgZG9uJ3Qgd2FudFxuICAgICAgIHRoZSBzdWJzZXF1ZW50IG1pbm9yIGFsbG9jYXRpb24gdG8gdHJpZ2dlciBhIG1pbm9yIEdDLCBiZWNhdXNlIHRoZXJlIGlzIGEgYnVnXG4gICAgICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvNzc5OCkgaW4gdGhlIE9DYW1sIHJ1bnRpbWUgdGhhdCBkb3VibGVcbiAgICAgICBjb3VudHMgW0djLm1pbm9yX3dvcmRzXSBpbiB0aGF0IGNhc2UuICopXG4gICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChyZWYgKFN5cy5vcGFxdWVfaWRlbnRpdHkgMSkpIDogaW50IHJlZilcbiAgOztcblxuICAoKiBXZSBkaXNhYmxlIGlubGluaW5nIGZvciB0aGlzIGZ1bmN0aW9uIHNvIHRoZSBHQyBzdGF0cyBhbmQgdGhlIGNhbGwgdG8gW2ZdIGFyZSBuZXZlclxuICAgICByZWFycmFuZ2VkLiAqKVxuICBsZXRbQGNvbGRdIG1lYXN1cmVfaW50ZXJuYWwgfm9uX3Jlc3VsdCBmID1cbiAgICBsZXQgbWlub3Jfd29yZHNfYmVmb3JlID0gbWlub3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYmVmb3JlID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICAoKiBXZSB3cmFwIFtmICgpXSB3aXRoIFtTeXMub3BhcXVlX2lkZW50aXR5XSB0byBwcmV2ZW50IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBiZWluZ1xuICAgICAgIG9wdGltaXplZCBhd2F5LiAqKVxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoZiAoKSkgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWZ0ZXIgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19hZnRlciA9IG1ham9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FsbG9jYXRlZCA9IG1ham9yX3dvcmRzX2FmdGVyIC0gbWFqb3Jfd29yZHNfYmVmb3JlIGluXG4gICAgbGV0IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9IG1pbm9yX3dvcmRzX2FmdGVyIC0gbWlub3Jfd29yZHNfYmVmb3JlIGluXG4gICAgb25fcmVzdWx0IH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB4XG4gIDs7XG5cbiAgbGV0IGlzX3plcm9fYWxsb2MgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgICAoKiBJbnN0ZWFkIG9mIHVzaW5nIFtBbGxvY2F0aW9uX3JlcG9ydC5tZWFzdXJlXSwgYW5kIG1hdGNoaW5nIG9uIHRoZSByZXN1bHQsIHdlIHVzZVxuICAgICAgIHRoaXMgY29uc3RydWN0aW9uLCBpbiBvcmRlciB0byBoYXZlIFtpc196ZXJvX2FsbG9jXSBub3QgYWxsb2NhdGUgaXRzZWxmLiBUaGlzXG4gICAgICAgZW5hYmxlcyBbaXNfemVyb19hbGxvY10gdG8gYmUgdXNlZCBpbiBhIG5lc3RlZCB3YXkuXG5cbiAgICAgICBUaGlzIGFsc28gbWVhbnMgd2UgY2Fubm90IGNhbGwgW3ByZXBhcmVfaGVhcF90b19jb3VudF9taW5vcl9hbGxvY2F0aW9uXS4gVGhpcyBpc1xuICAgICAgIG9rYXksIHNpbmNlIHdlIGRvIG5vdCBuZWVkIGEgcHJlY2lzZSBjb3VudCwgd2Ugb25seSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjb3VudCBpc1xuICAgICAgIHplcm8gb3Igbm90LiAqKVxuICAgIG1lYXN1cmVfaW50ZXJuYWxcbiAgICAgIGZcbiAgICAgIH5vbl9yZXN1bHQ6KGZ1biB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgdmFsdWUgLT5cbiAgICAgICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHZhbHVlIDogYSk7XG4gICAgICAgIG1ham9yX3dvcmRzX2FsbG9jYXRlZCA9PSAwICYmIG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9PSAwKVxuICA7O1xuXG4gIG1vZHVsZSBBbGxvY2F0aW9uX3JlcG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG1ham9yX3dvcmRzX2FsbG9jYXRlZCA6IGludFxuICAgICAgOyBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgPVxuICAgICAgeyBtYWpvcl93b3Jkc19hbGxvY2F0ZWQ7IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCB9XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1lYXN1cmVfYWxsb2NhdGlvbiBmID1cbiAgICBwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWxsb2NhdGlvbiAoKTtcbiAgICBtZWFzdXJlX2ludGVybmFsIGYgfm9uX3Jlc3VsdDooZnVuIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB4IC0+XG4gICAgICB4LCBBbGxvY2F0aW9uX3JlcG9ydC5jcmVhdGUgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkKVxuICA7O1xuXG4gIG1vZHVsZSBBbGxvY2F0aW9uX2xvZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHNpemVfaW5fd29yZHMgOiBpbnRcbiAgICAgIDsgaXNfbWFqb3IgOiBib29sXG4gICAgICA7IGJhY2t0cmFjZSA6IHN0cmluZ1xuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDExLCAwKV1cblxuICBsZXQgbWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb24gZiA9XG4gICAgbGV0IGxvZyA6IEFsbG9jYXRpb25fbG9nLnQgbGlzdCByZWYgPSByZWYgW11cbiAgICBhbmQgbWFqb3JfYWxsb2NzID0gcmVmIDBcbiAgICBhbmQgbWlub3JfYWxsb2NzID0gcmVmIDAgaW5cbiAgICBsZXQgb25fYWxsb2MgfmlzX21ham9yIChpbmZvIDogQ2FtbC5HYy5NZW1wcm9mLmFsbG9jYXRpb24pID1cbiAgICAgIGlmIGlzX21ham9yXG4gICAgICB0aGVuIG1ham9yX2FsbG9jcyA6PSAhbWFqb3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXNcbiAgICAgIGVsc2UgbWlub3JfYWxsb2NzIDo9ICFtaW5vcl9hbGxvY3MgKyBpbmZvLm5fc2FtcGxlcztcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIGluZm8uY2FsbHN0YWNrIGluXG4gICAgICAoKiBNYWtlIGJhY2t0cmFjZXMgZWFzaWVyIHRvIHJlYWQgYnkgZGVsZXRpbmcgZXZlcnl0aGluZyBiZWxvdyB0aGlzIGZ1bmN0aW9uICopXG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnN1YnN0cl9pbmRleCBiYWNrdHJhY2UgfnBhdHRlcm46XCJtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvblwiIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhpcyBjYXNlIGlzIHBvc3NpYmxlOiB3ZSBtYXkgaGF2ZSBsb2dnZWQgYWxsb2NhdGlvbnMgaW4gYW5vdGhlciB0aHJlYWQgKilcbiAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgICBTdHJpbmcuc3ViIH5wb3M6MCB+bGVuOnAgYmFja3RyYWNlXG4gICAgICAgICAgfD4gU3RyaW5nLnJzdHJpcCB+ZHJvcDooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgJ1xcbicgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCBpbmZvIDogQWxsb2NhdGlvbl9sb2cudCA9XG4gICAgICAgIHsgc2l6ZV9pbl93b3JkcyA9IGluZm8ubl9zYW1wbGVzOyBpc19tYWpvcjsgYmFja3RyYWNlIH1cbiAgICAgIGluXG4gICAgICBsb2cgOj0gaW5mbyA6OiAhbG9nO1xuICAgICAgTm9uZVxuICAgIGluXG4gICAgbGV0IHRyYWNrZXIgPVxuICAgICAgeyBDYW1sLkdjLk1lbXByb2YubnVsbF90cmFja2VyIHdpdGhcbiAgICAgICAgYWxsb2NfbWlub3IgPSBvbl9hbGxvYyB+aXNfbWFqb3I6ZmFsc2VcbiAgICAgIDsgYWxsb2NfbWFqb3IgPSBvbl9hbGxvYyB+aXNfbWFqb3I6dHJ1ZVxuICAgICAgfVxuICAgIGluXG4gICAgQ2FtbC5HYy5NZW1wcm9mLnN0YXJ0IH5zYW1wbGluZ19yYXRlOjEuMCB0cmFja2VyO1xuICAgICgqIEV4bi5wcm90ZWN0LCBtYW51YWxseSBpbmxpbmVkIHRvIGd1YXJhbnRlZSBubyBhbGxvY2F0aW9ucyAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgICB8IHggLT5cbiAgICAgICAgKCogTWVtcHJvZi5zdG9wIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IGFsbCBtZW1wcm9mIGNhbGxiYWNrcyBhcmUgcnVuIChzb21lIG1heSBiZVxuICAgICAgICAgICBkZWxheWVkIGlmIHRoZXkgaGFwcGVuZWQgZHVyaW5nIEMgY29kZSBhbmQgdGhlcmUgaGFzIGJlZW4gbm8gYWxsb2NhdGlvbiBzaW5jZSksXG4gICAgICAgICAgIHNvIHdlIGV4cGxpY3RseSBmbHVzaCB0aGVtICopXG4gICAgICAgIENhbWwuR2MuTWVtcHJvZi5zdG9wICgpO1xuICAgICAgICB4XG4gICAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgIENhbWwuR2MuTWVtcHJvZi5zdG9wICgpO1xuICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICAoIHJlc3VsdFxuICAgICwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlXG4gICAgICAgIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQ6IW1ham9yX2FsbG9jc1xuICAgICAgICB+bWlub3Jfd29yZHNfYWxsb2NhdGVkOiFtaW5vcl9hbGxvY3NcbiAgICAsIExpc3QucmV2ICFsb2cgKVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCB4LCByZXBvcnQgPSBtZWFzdXJlX2FsbG9jYXRpb24gZiBpblxuICAgIHgsIHJlcG9ydCwgW11cbiAgOztcblxuICBbJSVlbmRpZl1cbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBhZGRfZmluYWxpemVyIHggZiA9XG4gICAgdHJ5IENhbWwuR2MuZmluYWxpc2UgKGZ1biB4IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHgpKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgKCogVGhlIHR5cGUgb2YgYWRkX2ZpbmFsaXplciBlbnN1cmVzIHRoYXQgdGhlIG9ubHkgcG9zc2libGUgZmFpbHVyZVxuICAgICAgICAgaXMgZHVlIHRvIFt4XSBiZWluZyBzdGF0aWMgZGF0YS4gSW4gdGhpcyBjYXNlLCB3ZSBzaW1wbHkgZHJvcCB0aGVcbiAgICAgICAgIGZpbmFsaXplciBzaW5jZSBzdGF0aWMgZGF0YSB3b3VsZCBuZXZlciBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IHRoZVxuICAgICAgICAgR0MgYW55d2F5LiAqKVxuICAgICAgKClcbiAgOztcblxuICAoKiBbYWRkX2ZpbmFsaXplcl9leG5dIGlzIHRoZSBzYW1lIGFzIFthZGRfZmluYWxpemVyXS4gIEhvd2V2ZXIsIHRoZWlyIHR5cGVzIGluXG4gICAgIGNvcmVfZ2MubWxpIGFyZSBkaWZmZXJlbnQsIGFuZCB0aGUgdHlwZSBvZiBbYWRkX2ZpbmFsaXplcl0gZ3VhcmFudGVlcyB0aGF0IGl0IGFsd2F5c1xuICAgICByZWNlaXZlcyBhIGhlYXAgYmxvY2ssIHdoaWNoIGVuc3VyZXMgdGhhdCBpdCB3aWxsIG5vdCByYWlzZSwgd2hpbGVcbiAgICAgW2FkZF9maW5hbGl6ZXJfZXhuXSBhY2NlcHRzIGFueSB0eXBlLCBhbmQgc28gbWF5IHJhaXNlLiAqKVxuICBsZXQgYWRkX2ZpbmFsaXplcl9leG4geCBmID1cbiAgICB0cnkgQ2FtbC5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHggZiA9XG4gICAgdHJ5IENhbWwuR2MuZmluYWxpc2VfbGFzdCAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZikgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXJfbGFzdCBlbnN1cmVzIHRoYXQgdGhlIG9ubHkgcG9zc2libGUgZmFpbHVyZVxuICAgICAgICAgaXMgZHVlIHRvIFt4XSBiZWluZyBzdGF0aWMgZGF0YS4gSW4gdGhpcyBjYXNlLCB3ZSBzaW1wbHkgZHJvcCB0aGVcbiAgICAgICAgIGZpbmFsaXplciBzaW5jZSBzdGF0aWMgZGF0YSB3b3VsZCBuZXZlciBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IHRoZVxuICAgICAgICAgR0MgYW55d2F5LiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB4IGYgPVxuICAgIHRyeSBDYW1sLkdjLmZpbmFsaXNlX2xhc3QgKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgZmluYWxpemVfcmVsZWFzZSA9IENhbWwuR2MuZmluYWxpc2VfcmVsZWFzZVxuXG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGFsYXJtXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gPSBcIjxnYyBhbGFybT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBsZXQgY3JlYXRlIGYgPSBjcmVhdGVfYWxhcm0gKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpXG4gICAgbGV0IGRlbGV0ZSA9IGRlbGV0ZV9hbGFybVxuICBlbmRcbmVuZFxuIiwib3BlbiBTdGFibGVfbW9kdWxlX3R5cGVzXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgZW5kKSA6IFMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQyXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlLlYxIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5WMS5NYWtlIChUMSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQxID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUxLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQyID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMikgdFxuICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMi5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUyLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlF1ZXVlXG5cbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZS5NYWtlMV9hbmRfdGVzdCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSBhID1cbiAgICAgICAgbGV0IHIgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgKCogV2UgZW5xdWV1ZSBldmVyeXRoaW5nIHR3aWNlLCBhbmQgZGVxdWV1ZSBpdCBvbmNlIHRvIGVuc3VyZTpcbiAgICAgICAgICAgLSB0aGF0IHRoZSBxdWV1ZSBoYXMgdGhlIHNhbWUgY29udGVudCBhcyB0aGUgYXJyYXkuXG4gICAgICAgICAgIC0gdGhhdCBpdCBoYXMsIGluIG1vc3QgY2FzZXMsIGFuIGludGVyZXN0aW5nIGludGVybmFsIHN0cnVjdHVyZSopXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBlbnF1ZXVlIHIgYS4oaSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV9leG4gciA6IGJvb2wpO1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICByXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG5cbm1vZHVsZSBTZXJpYWxpemF0aW9uX3YxID0gc3RydWN0XG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjRjODQyNTQtNDk5Mi0xMWU2LTliYTctNzM0ZTE1NDAyN2JkXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlF1ZXVlXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9IGluaXQgbGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKVxuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlIFNlcmlhbGl6YXRpb25fdjFcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbiAgICAoKiBXZSBkb24ndCBoYXZlIGEgWyViaW5fZGlnZXN0XSBleHBlY3QgdGVzdCBoZXJlIGJlY2F1c2UgdGhlIGJpbl9pbyBpcyBtb3N0bHkgaGFuZFxuICAgICAgIHdyaXR0ZW4sIGFuZCBbY29yZV9xdWV1ZV91bml0X3Rlc3RzLm1sXSBoYXMgdW5pdCB0ZXN0cyBmb3Igc3BlY2lmaWMgdmFsdWVzLiAqKVxuXG4gICAgbGV0IG1hcCA9IG1hcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFVuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3QuTWFrZVxuXG5cbm1vZHVsZSB0eXBlIFN0YWJsZSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRob3V0X2NvbXBhcmF0b3IgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwX3dpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIHR5cGUgU3RhYmxlMSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzFcbm1vZHVsZSB0eXBlIFN0YWJsZTIgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMyXG5tb2R1bGUgdHlwZSBTdGFibGUzID0gU3RhYmxlX21vZHVsZV90eXBlcy5TM1xubW9kdWxlIHR5cGUgU3RhYmxlNCA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzRcblxubW9kdWxlIE1ha2Vfc3RhYmxlID0gTWFrZV9zdGFibGVcbmluY2x1ZGUgU3RhYmxlX2ludGVybmFsXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZS5TdGFibGVcbm1vZHVsZSBCaWdzdHJpbmcgPSBCaWdzdHJpbmcuU3RhYmxlXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZy5TdGFibGVcbm1vZHVsZSBCb29sID0gQm9vbC5TdGFibGVcbm1vZHVsZSBCeXRlX3VuaXRzID0gQnl0ZV91bml0cy5TdGFibGVcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzLlN0YWJsZVxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlLlN0YWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlN0YWJsZVxubW9kdWxlIERhdGUgPSBEYXRlLlN0YWJsZVxubW9kdWxlIERheV9vZl93ZWVrID0gRGF5X29mX3dlZWsuU3RhYmxlXG5tb2R1bGUgTWQ1ID0gTWQ1LlN0YWJsZVxubW9kdWxlIEVpdGhlciA9IEVpdGhlci5TdGFibGVcbm1vZHVsZSBFcnJvciA9IEVycm9yLlN0YWJsZVxubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZS5TdGFibGVcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lLlN0YWJsZVxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5TdGFibGVcbm1vZHVsZSBGcXVldWUgPSBGcXVldWUuU3RhYmxlXG5tb2R1bGUgR2MgPSBHYy5TdGFibGVcbm1vZHVsZSBIb3N0X2FuZF9wb3J0ID0gSG9zdF9hbmRfcG9ydC5TdGFibGVcbm1vZHVsZSBJbmZvID0gSW5mby5TdGFibGVcbm1vZHVsZSBJbnQgPSBJbnQuU3RhYmxlXG5tb2R1bGUgSW50NjMgPSBJbnQ2My5TdGFibGVcbm1vZHVsZSBMYXp5ID0gTGF6eS5TdGFibGVcbm1vZHVsZSBMaXN0ID0gTGlzdC5TdGFibGVcbm1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZC5TdGFibGVcbm1vZHVsZSBNb250aCA9IE1vbnRoLlN0YWJsZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nLlN0YWJsZVxubW9kdWxlIE9wdGlvbiA9IE9wdGlvbi5TdGFibGVcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yLlN0YWJsZVxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50LlN0YWJsZVxubW9kdWxlIFBlcm1zID0gUGVybXMuU3RhYmxlXG5tb2R1bGUgUGlkID0gUGlkLlN0YWJsZVxubW9kdWxlIFF1ZXVlID0gUXVldWUuU3RhYmxlXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0LlN0YWJsZVxubW9kdWxlIFNldCA9IFNldC5TdGFibGVcbm1vZHVsZSBTZXhwID0gU2V4cC5TdGFibGVcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlLlN0YWJsZVxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nLlN0YWJsZVxubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZC5TdGFibGVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9ucy5TdGFibGVcbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdC5TdGFibGVcbm1vZHVsZSBVbml0ID0gVW5pdC5TdGFibGVcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ29yZV91bml4LlN0YWJsZV1cIl1cbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5cbmluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgSW1wb3J0Lk5vdF9mb3VuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuICBJbnQgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcblxubGV0IG9mX2NhbWxfaW50IHQgPSB0XG5sZXQgdG9fY2FtbF9pbnQgdCA9IHRcblxudHlwZSBzeXNfYmVoYXZpb3IgPVxuICBbIGBDb250aW51ZSAoKiogQ29udGludWUgdGhlIHByb2Nlc3MgaWYgaXQgaXMgY3VycmVudGx5IHN0b3BwZWQgKilcbiAgfCBgRHVtcF9jb3JlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgYW5kIGR1bXAgY29yZSAqKVxuICB8IGBJZ25vcmUgKCoqIElnbm9yZSB0aGUgc2lnbmFsICopXG4gIHwgYFN0b3AgKCoqIFN0b3AgdGhlIHByb2Nlc3MgKilcbiAgfCBgVGVybWluYXRlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgKilcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGVxdWFsICh0IDogdCkgdCcgPSB0ID0gdCdcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCogUGxlYXNlIGtlZXAgaW4gc3luYyB3aXRoIHRoZSBsaXN0IGZvciB0b19zdHJpbmcvc3lzX2JlaGF2aW9yICopXG4gIG9wZW4gQ2FtbC5TeXNcblxuICBsZXQgYWJydCA9IHNpZ2FicnRcbiAgbGV0IGFscm0gPSBzaWdhbHJtXG4gIGxldCBidXMgPSBzaWdidXNcbiAgbGV0IGNobGQgPSBzaWdjaGxkXG4gIGxldCBjb250ID0gc2lnY29udFxuICBsZXQgZnBlID0gc2lnZnBlXG4gIGxldCBodXAgPSBzaWdodXBcbiAgbGV0IGlsbCA9IHNpZ2lsbFxuICBsZXQgaW50ID0gc2lnaW50XG4gIGxldCBraWxsID0gc2lna2lsbFxuICBsZXQgcGlwZSA9IHNpZ3BpcGVcbiAgbGV0IHBvbGwgPSBzaWdwb2xsXG4gIGxldCBwcm9mID0gc2lncHJvZlxuICBsZXQgcXVpdCA9IHNpZ3F1aXRcbiAgbGV0IHNlZ3YgPSBzaWdzZWd2XG4gIGxldCBzdG9wID0gc2lnc3RvcFxuICBsZXQgc3lzID0gc2lnc3lzXG4gIGxldCB0ZXJtID0gc2lndGVybVxuICBsZXQgdHJhcCA9IHNpZ3RyYXBcbiAgbGV0IHRzdHAgPSBzaWd0c3RwXG4gIGxldCB0dGluID0gc2lndHRpblxuICBsZXQgdHRvdSA9IHNpZ3R0b3VcbiAgbGV0IHVyZyA9IHNpZ3VyZ1xuICBsZXQgdXNyMSA9IHNpZ3VzcjFcbiAgbGV0IHVzcjIgPSBzaWd1c3IyXG4gIGxldCB2dGFscm0gPSBzaWd2dGFscm1cbiAgbGV0IHhjcHUgPSBzaWd4Y3B1XG4gIGxldCB4ZnN6ID0gc2lneGZzelxuICBsZXQgemVybyA9IDBcbmVuZFxuXG5leGNlcHRpb24gSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIG9mIHN0cmluZyBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiwgb2Zfc3RyaW5nLCBkZWZhdWx0X3N5c19iZWhhdmlvciA9XG4gIGxldCBrbm93biA9XG4gICAgW1xuICAgICAgXCJzaWdhYnJ0XCIsIGFicnQsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnYWxybVwiLCBhbHJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2J1c1wiLCBidXMsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lnY2hsZFwiLCBjaGxkLCBgSWdub3JlLCAxXG4gICAgOyBcInNpZ2NvbnRcIiwgY29udCwgYENvbnRpbnVlLCAxXG4gICAgOyBcInNpZ2ZwZVwiLCBmcGUsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnaHVwXCIsIGh1cCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdpbGxcIiwgaWxsLCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2ludFwiLCBpbnQsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lna2lsbFwiLCBraWxsLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3BpcGVcIiwgcGlwZSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdwb2xsXCIsIHBvbGwsIGBUZXJtaW5hdGUsIDJcbiAgICA7IFwic2lncHJvZlwiLCBwcm9mLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3F1aXRcIiwgcXVpdCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdzZWd2XCIsIHNlZ3YsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnc3RvcFwiLCBzdG9wLCBgU3RvcCwgMVxuICAgIDsgXCJzaWdzeXNcIiwgc3lzLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3Rlcm1cIiwgdGVybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd0cmFwXCIsIHRyYXAsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lndHN0cFwiLCB0c3RwLCBgU3RvcCwgMVxuICAgIDsgXCJzaWd0dGluXCIsIHR0aW4sIGBTdG9wLCAxXG4gICAgOyBcInNpZ3R0b3VcIiwgdHRvdSwgYFN0b3AsIDFcbiAgICA7IFwic2lndXJnXCIsIHVyZywgYElnbm9yZSwgMlxuICAgIDsgXCJzaWd1c3IxXCIsIHVzcjEsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndXNyMlwiLCB1c3IyLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3Z0YWxybVwiLCB2dGFscm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lneGNwdVwiLCB4Y3B1LCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3hmc3pcIiwgeGZzeiwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd6ZXJvXCIsIHplcm8sIGBJZ25vcmUsIDFcbiAgICBdXG4gIGluXG4gIGxldCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgbGV0IHRfYnlfbmFtZSA9IFN0cmluZy5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBsZXQgYmVoYXZpb3JfYnlfdCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBMaXN0Lml0ZXIga25vd24gfmY6KGZ1biAobmFtZSwgdCwgYmVoYXZpb3IsIHN0YWJsZV92ZXJzaW9uKSAtPlxuICAgIEhhc2h0Ymwuc2V0IG5hbWVfYW5kX3ZlcnNpb25fYnlfdCB+a2V5OnQgfmRhdGE6KG5hbWUsIHN0YWJsZV92ZXJzaW9uKTtcbiAgICBIYXNodGJsLnNldCB0X2J5X25hbWUgfmtleTpuYW1lIH5kYXRhOnQ7XG4gICAgSGFzaHRibC5zZXQgYmVoYXZpb3JfYnlfdCB+a2V5OnQgfmRhdGE6YmVoYXZpb3IpO1xuICAoKiBGb3IgdW5rbm93biBzaWduYWwgbnVtYmVycywgW3RvX3N0cmluZ10gcmV0dXJucyBhIG1lYW5pbmdmdWxcbiAgICAgc3RyaW5nLCB3aGlsZSBbZGVmYXVsdF9zeXNfYmVoYXZpb3JdIGhhcyB0byByYWlzZSBhbiBleGNlcHRpb25cbiAgICAgYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHJpZ2h0IGFuc3dlciBpcy4gKilcbiAgbGV0IHRvX3N0cmluZ193aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjpyZXF1ZXN0ZWRfdmVyc2lvbiA9XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIG5hbWVfYW5kX3ZlcnNpb25fYnlfdCB0IHdpdGhcbiAgICB8IFNvbWUgKHN0cmluZywgbmVlZGVkX3ZlcnNpb24pIHdoZW4gcmVxdWVzdGVkX3ZlcnNpb24gPj0gbmVlZGVkX3ZlcnNpb24gLT4gc3RyaW5nXG4gICAgfCBfIC0+IFwiPHVua25vd24gc2lnbmFsIFwiIF4gSW50LnRvX3N0cmluZyB0IF4gXCI+XCJcbiAgaW5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgcyA9IFN0cmluZy5sb3dlcmNhc2UgKFN0cmluZy5zdHJpcCBzKSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0X2J5X25hbWUgcyB3aXRoXG4gICAgfCBTb21lIHNuIC0+IHNuXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIjx1bmtub3duIHNpZ25hbCBcIlxuICAgICAgdGhlbiAoXG4gICAgICAgIHRyeSBJbnQub2Zfc3RyaW5nIChTdHJpbmcuc2xpY2UgcyAxNiB+LTEpIHdpdGhcbiAgICAgICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgcykpXG4gICAgICBlbHNlIHJhaXNlIChJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgcylcbiAgaW5cbiAgbGV0IGRlZmF1bHRfc3lzX2JlaGF2aW9yIHQgPVxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCBiZWhhdmlvcl9ieV90IHQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEludmFsaWRfYXJndW1lbnRcbiAgICAgICAgICAgKFwiU2lnbmFsLmRlZmF1bHRfc3lzX2JlaGF2aW9yOiB1bmtub3duIHNpZ25hbCBcIiBeIEludC50b19zdHJpbmcgdCkpXG4gICAgfCBTb21lIGJlaGF2aW9yIC0+IGJlaGF2aW9yXG4gIGluXG4gIHRvX3N0cmluZ193aXRoX3ZlcnNpb24sIG9mX3N0cmluZywgZGVmYXVsdF9zeXNfYmVoYXZpb3Jcbjs7XG5cbmV4Y2VwdGlvbiBFeHBlY3RlZF9hdG9tIG9mIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uID0gU2V4cC5BdG9tICh0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb24pXG5sZXQgdG9fc3RyaW5nIHMgPSB0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHMgfnZlcnNpb246MlxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjFcblxubGV0IHRfb2Zfc2V4cCBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2V4cC5BdG9tIHMgLT4gb2Zfc3RyaW5nIHNcbiAgfCBfIC0+IHJhaXNlIChFeHBlY3RlZF9hdG9tIHMpXG47O1xuXG50eXBlIHBpZF9zcGVjID0gWyBgVXNlX1NpZ25hbF91bml4IF1cbnR5cGUgc2lncHJvY21hc2tfY29tbWFuZCA9IFsgYFVzZV9TaWduYWxfdW5peCBdXG5cbmxldCBjYW5fc2VuZF90byA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBvZl9zeXN0ZW1faW50ID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZF9leG4gPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZF9pID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNleHBfb2ZfcGlkX3NwZWMgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lncGVuZGluZyA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdwcm9jbWFzayA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdzdXNwZW5kID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHRvX3N5c3RlbV9pbnQgPSBgVXNlX1NpZ25hbF91bml4XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgdHlwZSBiZWhhdmlvciA9XG4gICAgWyBgRGVmYXVsdFxuICAgIHwgYElnbm9yZVxuICAgIHwgYEhhbmRsZSBvZiB0IC0+IHVuaXRcbiAgICBdXG5cbiAgbW9kdWxlIEJlaGF2aW9yID0gc3RydWN0XG4gICAgbGV0IG9mX2NhbWwgPSBmdW5jdGlvblxuICAgICAgfCBDYW1sLlN5cy5TaWduYWxfZGVmYXVsdCAtPiBgRGVmYXVsdFxuICAgICAgfCBTaWduYWxfaWdub3JlIC0+IGBJZ25vcmVcbiAgICAgIHwgU2lnbmFsX2hhbmRsZSBmIC0+IGBIYW5kbGUgZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IGBEZWZhdWx0IC0+IENhbWwuU3lzLlNpZ25hbF9kZWZhdWx0XG4gICAgICB8IGBJZ25vcmUgLT4gU2lnbmFsX2lnbm9yZVxuICAgICAgfCBgSGFuZGxlIGYgLT4gU2lnbmFsX2hhbmRsZSAoZnVuIHQgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNpZ25hbCB0IGJlaGF2aW9yID0gQmVoYXZpb3Iub2ZfY2FtbCAoQ2FtbC5TeXMuc2lnbmFsIHQgKEJlaGF2aW9yLnRvX2NhbWwgYmVoYXZpb3IpKVxuICBsZXQgc2V0IHQgYmVoYXZpb3IgPSBpZ25vcmUgKHNpZ25hbCB0IGJlaGF2aW9yIDogYmVoYXZpb3IpXG4gIGxldCBoYW5kbGUgdCBmID0gc2V0IHQgKGBIYW5kbGUgZilcbmVuZFxuXG5vcGVuIEV4cGVydFxuXG5sZXQgaGFuZGxlX2RlZmF1bHQgdCA9IHNldCB0IGBEZWZhdWx0XG5sZXQgaWdub3JlIHQgPSBzZXQgdCBgSWdub3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoyXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICAgIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBCYXNlLlNpZ25fb3JfbmFuXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2lnbl9vcl9uYW4udCA9XG4gICAgICB8IE5lZ1xuICAgICAgfCBaZXJvXG4gICAgICB8IFBvc1xuICAgICAgfCBOYW5cbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnbl9vcl9uYW5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoU2lnbl9vcl9uYW4pIChTdGFibGUuVjEpXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHRvX3N0cmluZyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IHByaW50IF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX3RvX3N0cmluZ19pbnN0ZWFkXG5sZXQgY2F0Y2ggXyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl9oYW5kbGVfdW5jYXVnaHRfaW5zdGVhZFxubGV0IHByaW50X2JhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMucHJpbnRfYmFja3RyYWNlXG5sZXQgZ2V0X2JhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMuZ2V0X2JhY2t0cmFjZVxubGV0IHJlY29yZF9iYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbmxldCBiYWNrdHJhY2Vfc3RhdHVzID0gQ2FtbC5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25fYXJyYXlcblxuaW5jbHVkZVxuICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYXJyYXlcbiAgICBlbmQpXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkxhenl9W0Jhc2UuTGF6eV19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgQmFzZS5MYXp5LnRcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIEJhc2UuTGF6eSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0ICgqKiBAaW5saW5lICopXG5cbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogU3RhYmxlX21vZHVsZV90eXBlcy5TMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgY29tcGFyZSA9XG4gIFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cbiAgLT4gWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG5cbmxldCBjb21wYXJlIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID4gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPj0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8PiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgZXF1YWwgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtaW4gXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtYXggXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxudHlwZSAoJ2EsICdiKSBmbiA9ICdhIC0+ICdiXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJ2YWwgb2YgJ2FcbiAgICB8IEV4cHQgb2YgZXhuXG5cbiAgbGV0IHJldHVybiA9IGZ1bmN0aW9uXG4gICAgfCBSdmFsIHYgLT4gdlxuICAgIHwgRXhwdCBlIC0+IHJhaXNlIGVcbiAgOztcblxuICBsZXQgY2FwdHVyZSBmIHggPVxuICAgIHRyeSBSdmFsIChmIHgpIHdpdGhcbiAgICB8IENhbWwuU3lzLkJyZWFrIGFzIGUgLT4gcmFpc2UgZVxuICAgIHwgZSAtPiBFeHB0IGVcbiAgOztcbmVuZFxuXG5sZXQgdW5pdCBmID1cbiAgbGV0IGwgPSBMYXp5LmZyb21fZnVuIGYgaW5cbiAgZnVuICgpIC0+IExhenkuZm9yY2UgbFxuOztcblxubGV0IHVuYm91bmRlZCAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSBmID1cbiAgbGV0IGNhY2hlID1cbiAgICBsZXQgbW9kdWxlIEEgPVxuICAgICAgSGFzaGFibGUuTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgICAgZW5kKVxuICAgIGluXG4gICAgQS5UYWJsZS5jcmVhdGUgKCkgfnNpemU6MFxuICBpblxuICAoKiBBbGxvY2F0ZSB0aGlzIGNsb3N1cmUgYXQgdGhlIGNhbGwgdG8gW3VuYm91bmRlZF0sIG5vdCBhdCBlYWNoIGNhbGwgdG8gdGhlIG1lbW9pemVkXG4gICAgIGZ1bmN0aW9uLiAqKVxuICBsZXQgcmVhbGx5X2NhbGxfZiBhcmcgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICBmdW4gYXJnIC0+IFJlc3VsdC5yZXR1cm4gKEhhc2h0YmwuZmluZGlfb3JfYWRkIGNhY2hlIGFyZyB+ZGVmYXVsdDpyZWFsbHlfY2FsbF9mKVxuOztcblxuKCogdGhlIHNhbWUgYnV0IHdpdGggYSBib3VuZCBvbiBjYWNoZSBzaXplICopXG5sZXQgbHJ1ICh0eXBlIGEpID8oaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLnBvbHkpIH5tYXhfY2FjaGVfc2l6ZSBmID1cbiAgaWYgbWF4X2NhY2hlX3NpemUgPD0gMFxuICB0aGVuIGZhaWx3aXRoZiBcIk1lbW8ubHJ1OiBtYXhfY2FjaGVfc2l6ZSBvZiAlaSA8PSAwXCIgbWF4X2NhY2hlX3NpemUgKCk7XG4gIGxldCBtb2R1bGUgQ2FjaGUgPVxuICAgIEhhc2hfcXVldWUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgIGVuZClcbiAgaW5cbiAgbGV0IGNhY2hlID0gQ2FjaGUuY3JlYXRlICgpIGluXG4gIGZ1biBhcmcgLT5cbiAgICBSZXN1bHQucmV0dXJuXG4gICAgICAobWF0Y2ggQ2FjaGUubG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgY2FjaGUgYXJnIHdpdGhcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHJlc3VsdCA9IFJlc3VsdC5jYXB0dXJlIGYgYXJnIGluXG4gICAgICAgICBDYWNoZS5lbnF1ZXVlX2JhY2tfZXhuIGNhY2hlIGFyZyByZXN1bHQ7XG4gICAgICAgICAoKiBlamVjdCBsZWFzdCByZWNlbnRseSB1c2VkIGNhY2hlIGVudHJ5ICopXG4gICAgICAgICBpZiBDYWNoZS5sZW5ndGggY2FjaGUgPiBtYXhfY2FjaGVfc2l6ZVxuICAgICAgICAgdGhlbiBpZ25vcmUgKENhY2hlLmRlcXVldWVfZnJvbnRfZXhuIGNhY2hlIDogXyBSZXN1bHQudCk7XG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgZ2VuZXJhbCA/aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZiA9XG4gIG1hdGNoIGNhY2hlX3NpemVfYm91bmQgd2l0aFxuICB8IE5vbmUgLT4gdW5ib3VuZGVkID9oYXNoYWJsZSBmXG4gIHwgU29tZSBuIC0+IGxydSA/aGFzaGFibGUgfm1heF9jYWNoZV9zaXplOm4gZlxuOztcblxuKCogV2UgZXhwZWN0IFtmX29uZXN0ZXBdIHRvIGJlIGEgb25lLXN0ZXAgdW5yb2xsZWQgcmVjdXJzaXZlIGZ1bmN0aW9uOyBzZWUgdGhlIG1saS4gSGVuY2UsXG4gICBoZXJlIHdlIGNyZWF0ZSB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gX2FuZF8gcGFzcyBpdCB0byBbZl9vbmVzdGVwXSB0byBiZSB1c2VkIGZvclxuICAgcmVjdXJzaXZlIGNhbGxzLlxuXG4gICBOb3RlIHRoYXQgd2UgaW1tZWRpYXRlbHkgYXBwbHkgW2Zfb25lc3RlcF0gdG8gaXRzIGZpcnN0IGFyZ3VtZW50IGhlcmUgc28gdGhhdCBhbnlcbiAgIHByZWNvbXB1dGF0aW9uIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSB1c2VyIGNhbGxzIFtyZWN1cnNpdmVdLlxuXG4gICBBcyBhbiBleGFtcGxlLCBpZiBzb21lb25lIHdyaXRlcyB0aGlzIG5vbi1tZW1vaXplZCBjb2RlOlxuXG4gICBbIGxldCByZWMgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIF1cblxuICAgYW5kIGNvbnZlcnRzIHRvIG1lbW9pemF0aW9uIGJ5IGRvaW5nOlxuXG4gICB7W1xuICAgICBsZXQgZiA9XG4gICAgICAgbGV0IGZfb25lc3RlcCBmID0gbGV0IGRhdGEgPSBjb21wdXRlX3dpdGhvdXRfdXNpbmdfZiAoKSBpbiBmdW4geCAtPiAuLi4gZiAuLi4gaW5cbiAgICAgICByZWN1cnNpdmUgZl9vbmVzdGVwXG4gICBdfVxuXG4gICB3ZSB3YW50IHRvIGNvbXB1dGUgW2RhdGFdIGltbWVkaWF0ZWx5LiBJZiB3ZSBoYWQgW2Z1biB4IC0+IGZfb25lc3RlcCAoZm9yY2UgbWVtb2l6ZWQpXG4gICB4XSBiZWxvdywgd2UnZCByZWNvbXB1dGUgW2RhdGFdIGVhY2ggdGltZSB0aGUgdXNlciBjYWxscyBbZl0gb24gYW4gYXJndW1lbnQgdGhhdCBoYWRuJ3RcbiAgIHlldCBiZWVuIG1lbW9pemVkLiAqKVxubGV0IHJlY3Vyc2l2ZSB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZl9vbmVzdGVwID1cbiAgbGV0IHJlYyBtZW1vaXplZCA9XG4gICAgbGF6eSAoZ2VuZXJhbCB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgKGZfb25lc3RlcCAoZnVuIHggLT4gKGZvcmNlIG1lbW9pemVkKSB4KSkpXG4gIGluXG4gIGZvcmNlIG1lbW9pemVkXG47O1xuXG5sZXQgb2ZfY29tcGFyYWJsZSAodHlwZSBpbmRleCkgKG1vZHVsZSBNIDogQ29tcGFyYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gaW5kZXgpIGYgPVxuICBsZXQgbSA9IHJlZiBNLk1hcC5lbXB0eSBpblxuICBmdW4gKHggOiBNLnQpIC0+XG4gICAgbGV0IHYgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgIW0geCB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IHYgPSBSZXN1bHQuY2FwdHVyZSBmIHggaW5cbiAgICAgICAgbSA6PSBNYXAuc2V0ICFtIH5rZXk6eCB+ZGF0YTp2O1xuICAgICAgICB2XG4gICAgaW5cbiAgICBSZXN1bHQucmV0dXJuIHZcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBRdWV1ZSA9IEJhc2UuTGlua2VkX3F1ZXVlXG5pbmNsdWRlIFF1ZXVlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgUXVldWUudFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODAwZGY5YTAtNDk5Mi0xMWU2LTg4MWQtZmZlMWE1YzhhY2VkXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTGlua2VkX3F1ZXVlXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAoKiBCaW5fcHJvdCByZWFkcyB0aGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSB3ZXJlIHdyaXR0ZW4gb3V0LCBhcyBkZXRlcm1pbmVkXG4gICAgICAgYnkgW2l0ZXJdLiAgU28sIHdlIGNhbiBpZ25vcmUgdGhlIGluZGV4IGFuZCBqdXN0IGVucXVldWUgZWFjaCBlbGVtZW50IGFzIGl0IGlzIHJlYWRcbiAgICAgICBpbi4gKilcbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgIGVucXVldWUgdCAobmV4dCAoKSlcbiAgICAgIGRvbmU7XG4gICAgICB0XG4gICAgOztcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERlcml2aW5nX2hhc2hfaW50ZlxuXG5tb2R1bGUgT2ZfZGVyaXZpbmdfaGFzaFxuICAgIChSZXByIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG4gICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSZXByLmhhc2hfZm9sZF90IHN0YXRlIChNLnRvX3JlcHIgdClcbiAgbGV0IGhhc2ggPSBQcHhfaGFzaF9saWIuU3RkLkhhc2gub2ZfZm9sZCBoYXNoX2ZvbGRfdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogW2Fycl0gaXMgYSBjeWNsaWMgYnVmZmVyICopXG4gICAgbXV0YWJsZSBhcnIgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7ICgqIFtmcm9udF9pbmRleF0gYW5kIFtiYWNrX2luZGV4XSBhcmUgdGhlIHBvc2l0aW9ucyBpbiB3aGljaCBuZXcgZWxlbWVudHMgbWF5IGJlXG4gICAgICAgZW5xdWV1ZWQuICBUaGlzIG1ha2VzIHRoZSBhY3RpdmUgcGFydCBvZiBbYXJyXSB0aGUgcmFuZ2UgZnJvbSBbZnJvbnRfaW5kZXgrMV0gdG9cbiAgICAgICBbYmFja19pbmRleC0xXSAobW9kdWxvIHRoZSBsZW5ndGggb2YgW2Fycl0gYW5kIHdyYXBwaW5nIGFyb3VuZCBpZiBuZWNlc3NhcnkpLiAgTm90ZVxuICAgICAgIHRoYXQgdGhpcyBtZWFucyB0aGUgYWN0aXZlIHJhbmdlIGlzIG1heGltaXplZCB3aGVuIFtmcm9udF9pbmRleCA9IGJhY2tfaW5kZXhdLCB3aGljaFxuICAgICAgIG9jY3VycyB3aGVuIHRoZXJlIGFyZSBbQXJyYXkubGVuZ3RoIGFyciAtIDFdIGFjdGl2ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIGZyb250X2luZGV4IDogaW50XG4gIDsgbXV0YWJsZSBiYWNrX2luZGV4IDogaW50XG4gIDsgKCogYXBwYXJlbnRfZnJvbnRfaW5kZXggaXMgd2hhdCBpcyBleHBvc2VkIGFzIHRoZSBmcm9udCBpbmRleCBleHRlcm5hbGx5LiAgSXQgaGFzIG5vXG4gICAgICAgcmVhbCByZWxhdGlvbiB0byB0aGUgYXJyYXkgLS0gZXZlcnkgZW5xdWV1ZSB0byB0aGUgZnJvbnQgZGVjcmVtZW50cyBpdCBhbmQgZXZlcnlcbiAgICAgICBkZXF1ZXVlIGZyb20gdGhlIGZyb250IGluY3JlbWVudHMgaXQuICopXG4gICAgbXV0YWJsZSBhcHBhcmVudF9mcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgKCogV2Uga2VlcCBhcnJfbGVuZ3RoIGhlcmUgYXMgYSBzcGVlZCBoYWNrLiAgQ2FsbGluZyBBcnJheS5sZW5ndGggb24gYXJyIGlzIGFjdHVhbGx5XG4gICAgICAgbWVhbmluZ2Z1bGx5IHNsb3dlci4gKilcbiAgICBtdXRhYmxlIGFycl9sZW5ndGggOiBpbnRcbiAgOyBuZXZlcl9zaHJpbmsgOiBib29sXG4gIH1cblxubGV0IGNyZWF0ZSA/aW5pdGlhbF9sZW5ndGggP25ldmVyX3NocmluayAoKSA9XG4gIGxldCBuZXZlcl9zaHJpbmsgPVxuICAgIG1hdGNoIG5ldmVyX3NocmluayB3aXRoXG4gICAgfCBOb25lIC0+IE9wdGlvbi5pc19zb21lIGluaXRpYWxfbGVuZ3RoXG4gICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBsZXQgaW5pdGlhbF9sZW5ndGggPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6NyBpbml0aWFsX2xlbmd0aCBpblxuICBpZiBpbml0aWFsX2xlbmd0aCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwYXNzZWQgbmVnYXRpdmUgaW5pdGlhbF9sZW5ndGggdG8gRGVxdWUuY3JlYXRlOiAlaVwiIGluaXRpYWxfbGVuZ3RoICgpO1xuICAoKiBNYWtlIHRoZSBpbml0aWFsIGFycmF5IGxlbmd0aCBiZSBbaW5pdGlhbF9sZW5ndGggKyAxXSBzbyB3ZSBjYW4gZml0IFtpbml0aWFsX2xlbmd0aF1cbiAgICAgZWxlbWVudHMgd2l0aG91dCBncm93aW5nLiAgV2UgbmV2ZXIgcXVpdGUgdXNlIHRoZSB3aG9sZSBhcnJheS4gKilcbiAgbGV0IGFycl9sZW5ndGggPSBpbml0aWFsX2xlbmd0aCArIDEgaW5cbiAgeyBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46YXJyX2xlbmd0aFxuICA7IGZyb250X2luZGV4ID0gMFxuICA7IGJhY2tfaW5kZXggPSAxXG4gIDsgYXBwYXJlbnRfZnJvbnRfaW5kZXggPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGFycl9sZW5ndGhcbiAgOyBuZXZlcl9zaHJpbmtcbiAgfVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFdlIGtlZXAgdHJhY2sgb2YgdGhlIGxlbmd0aCBpbiBhIG11dGFibGUgZmllbGQgZm9yIHNwZWVkLCBidXQgdGhpcyBjYWxjdWxhdGlvbiBzaG91bGRcbiAgIGJlIGNvcnJlY3QgYnkgY29uc3RydWN0aW9uLCBhbmQgY2FuIGJlIHVzZWQgZm9yIHRlc3RpbmcuICopXG5sZXQgX2ludmFyaWFudF9sZW5ndGggdCA9XG4gIGxldCBjb25zdHJ1Y3RlZF9sZW5ndGggPVxuICAgIGlmIHQuZnJvbnRfaW5kZXggPCB0LmJhY2tfaW5kZXhcbiAgICB0aGVuIHQuYmFja19pbmRleCAtIHQuZnJvbnRfaW5kZXggLSAxXG4gICAgZWxzZSB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMSArIHQuYXJyX2xlbmd0aFxuICBpblxuICBhc3NlcnQgKGxlbmd0aCB0ID0gY29uc3RydWN0ZWRfbGVuZ3RoKVxuOztcblxuKCogVGhlIHZhcmlvdXMgXCJ3aGVuX25vdF9lbXB0eVwiIGZ1bmN0aW9ucyByZXR1cm4gbWlzbGVhZGluZyBudW1iZXJzIHdoZW4gdGhlIGRlcXVldWUgaXNcbiAgIGVtcHR5LiAgVGhleSBhcmUgc2FmZSB0byBjYWxsIGlmIGl0IGlzIGtub3duIHRoYXQgdGhlIGRlcXVldWUgaXMgbm9uLWVtcHR5LiAqKVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPSB0LmFwcGFyZW50X2Zyb250X2luZGV4XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIGxlbmd0aCB0IC0gMVxuXG5sZXQgYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5hcnJfbGVuZ3RoIC0gMSB0aGVuIDAgZWxzZSB0LmZyb250X2luZGV4ICsgMVxuOztcblxubGV0IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmJhY2tfaW5kZXggPSAwIHRoZW4gdC5hcnJfbGVuZ3RoIC0gMSBlbHNlIHQuYmFja19pbmRleCAtIDFcbjs7XG5cbmxldCBjaGVja2VkIHQgZiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB0KVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHlcbmxldCBhcHBhcmVudF9iYWNrX2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eVxuXG5sZXQgZm9sZGknIHQgZGlyIH5pbml0IH5mID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaSB+c3RvcF9wb3MgfnN0ZXAgPVxuICAgICAgaWYgcmVhbF9pID0gc3RvcF9wb3NcbiAgICAgIHRoZW4gYWNjLCBhcHBhcmVudF9pXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoZiBhcHBhcmVudF9pIGFjYyAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciByZWFsX2kpKVxuICAgICAgICAgIH5hcHBhcmVudF9pOihhcHBhcmVudF9pICsgc3RlcClcbiAgICAgICAgICB+cmVhbF9pOihyZWFsX2kgKyBzdGVwKVxuICAgICAgICAgIH5zdG9wX3Bvc1xuICAgICAgICAgIH5zdGVwXG4gICAgaW5cbiAgICAoKiBXZSB3YW50IHRvIGl0ZXJhdGUgZnJvbSBhY3R1YWxfZnJvbnQgdG8gYWN0dWFsX2JhY2sgKG9yIHZpY2UgdmVyc2EpLCBidXQgd2UgbWF5XG4gICAgICAgbmVlZCB0byB3cmFwIGFyb3VuZCB0aGUgYXJyYXkgdG8gZG8gc28uICBUaHVzIHdlIGRvIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgMS4gIElmIHRoZSBhY3RpdmUgcmFuZ2UgaXMgY29udGlndW91cyAoaS5lLiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2spLCB0aGVuIGxvb3BcbiAgICAgICBzdGFydGluZyBhdCB0aGUgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdW50aWwgd2UgcmVhY2ggdGhlIGZpcnN0XG4gICAgICAgZWxlbWVudCBvdXRzaWRlIG9mIGl0LlxuICAgICAgIDIuICBJZiBpdCBpcyBub3QgY29udGlndW91cyAoYWN0dWFsX2Zyb250ID4gYWN0dWFsX2JhY2spLCB0aGVuIGZpcnN0IGxvb3AgZnJvbSB0aGVcbiAgICAgICBhcHByb3ByaWF0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIFRoZW4sIGxvb3AgZnJvbVxuICAgICAgIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFycmF5IHRvIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZS5cbiAgICAqKVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgZnJvbnRfdG9fYmFjayAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfZnJvbnRcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2Zyb250XG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSlcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBhY2MsIGFwcGFyZW50X2kgPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aFxuICAgICAgICAgICAgfnN0ZXA6MVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID0gbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSB+c3RlcDoxIGluXG4gICAgICAgIGFjYylcbiAgICB8IGBiYWNrX3RvX2Zyb250IC0+XG4gICAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9mcm9udCAtIDEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KC0xKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIH5hcHBhcmVudF9pXG4gICAgICAgICAgICB+cmVhbF9pOih0LmFycl9sZW5ndGggLSAxKVxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpKVxuOztcblxubGV0IGZvbGQnIHQgZGlyIH5pbml0IH5mID0gZm9sZGknIHQgZGlyIH5pbml0IH5mOihmdW4gXyBhY2MgdiAtPiBmIGFjYyB2KVxubGV0IGl0ZXJpJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIGkgKCkgdiAtPiBmIGkgdilcbmxldCBpdGVyJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIF8gKCkgdiAtPiBmIHYpXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZCcgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGZvbGRpIHQgfmluaXQgfmYgPSBmb2xkaScgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGl0ZXJpIHQgfmYgPSBpdGVyaScgdCBgZnJvbnRfdG9fYmFjayB+ZlxuXG5sZXQgaXRlcmlfaW50ZXJuYWwgdCB+ZiA9XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiAoXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCB+cmVhbF9pIH5zdG9wX3BvcyA9XG4gICAgICBpZiByZWFsX2kgPCBzdG9wX3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGYgdC5hcnIgcmVhbF9pO1xuICAgICAgICBsb29wIH5yZWFsX2k6KHJlYWxfaSArIDEpIH5zdG9wX3BvcylcbiAgICBpblxuICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgIHRoZW4gbG9vcCB+cmVhbF9pOmFjdHVhbF9mcm9udCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxvb3AgfnJlYWxfaTphY3R1YWxfZnJvbnQgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aDtcbiAgICAgIGxvb3AgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSkpXG47O1xuXG5sZXQgaXRlciB0IH5mID0gaXRlcmlfaW50ZXJuYWwgdCB+ZjooZnVuIGFyciBpIC0+IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gYXJyIGkgfD4gZilcblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lm5ldmVyX3Nocmlua1xuICB0aGVuXG4gICAgKCogY2xlYXIgdGhlIGFycmF5IHRvIGFsbG93IGVsZW1lbnRzIHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkICopXG4gICAgaXRlcmlfaW50ZXJuYWwgdCB+ZjpPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lXG4gIGVsc2UgdC5hcnIgPC0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjg7XG4gIHQuZnJvbnRfaW5kZXggPC0gMDtcbiAgdC5iYWNrX2luZGV4IDwtIDE7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuYXJyXG47O1xuXG4oKiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSwgaW1wb3J0aW5nIGFsbCBvZiBDb250YWluZXIuTWFrZSB3b3VsZCBjaGFuZ2UgdGhlIHJ1bnRpbWUgb2ZcbiAgIHNvbWUgZnVuY3Rpb25zIChbbGVuZ3RoXSBtaW5pbWFsbHkpIHNpbGVudGx5IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlbWFudGljcy4gIFdlIGdldFxuICAgYXJvdW5kIHRoYXQgYnkgaW1wb3J0aW5nIHRoaW5ncyBleHBsaWNpdGx5LiAgKilcbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgbWVtID0gQy5tZW1cbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IGJsaXQgbmV3X2FyciB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IG9sZF9hcnIgPSB0LmFyciBpblxuICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgdGhlblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOihsZW5ndGggdClcbiAgZWxzZSAoXG4gICAgbGV0IGJyZWFrX3BvcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggb2xkX2FyciAtIGFjdHVhbF9mcm9udCBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOmJyZWFrX3BvcztcbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOmJyZWFrX3Bvc1xuICAgICAgfmxlbjooYWN0dWFsX2JhY2sgKyAxKSk7XG4gICgqIGxlbmd0aCBkZXBlbmRzIG9uIHQuYXJyIGFuZCB0LmZyb250X2luZGV4LCBzbyB0aGlzIG5lZWRzIHRvIGJlIGZpcnN0ICopXG4gIHQuYmFja19pbmRleCA8LSBsZW5ndGggdDtcbiAgdC5hcnIgPC0gbmV3X2FycjtcbiAgdC5hcnJfbGVuZ3RoIDwtIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FycjtcbiAgdC5mcm9udF9pbmRleCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgLSAxO1xuICAoKiBTaW5jZSB0LmZyb250X2luZGV4ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMSwgdGhpcyBpcyBhc3NlcnRpbmcgdGhhdCB0LmJhY2tfaW5kZXhcbiAgICAgaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkgYW5kIHRoYXQgdGhlIGFycmF5IGNhbiBzdXBwb3J0IGF0IGxlYXN0IG9uZSBtb3JlXG4gICAgIGVsZW1lbnQgLS0gcmVjYWxsLCBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gdGhlIGFycmF5IGlzIGZ1bGwuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgPiBsZW5ndGggdCArIDEuXG4gICopXG4gIGFzc2VydCAodC5mcm9udF9pbmRleCA+IHQuYmFja19pbmRleClcbjs7XG5cbmxldCBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0ID1cbiAgaWYgKG5vdCB0Lm5ldmVyX3NocmluaykgJiYgdC5hcnJfbGVuZ3RoID4gMTAgJiYgdC5hcnJfbGVuZ3RoIC8gMyA+IGxlbmd0aCB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggLyAyKSBpblxuICAgIGJsaXQgbmV3X2FyciB0KVxuOztcblxubGV0IGdyb3dfdW5kZXJseWluZyB0ID1cbiAgbGV0IG5ld19hcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KHQuYXJyX2xlbmd0aCAqIDIpIGluXG4gIGJsaXQgbmV3X2FyciB0XG47O1xuXG5sZXQgZW5xdWV1ZV9iYWNrIHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuYmFja19pbmRleCB2O1xuICB0LmJhY2tfaW5kZXggPC0gKGlmIHQuYmFja19pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5iYWNrX2luZGV4ICsgMSk7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWVfZnJvbnQgdCB2ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIGdyb3dfdW5kZXJseWluZyB0O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgdC5mcm9udF9pbmRleCB2O1xuICB0LmZyb250X2luZGV4IDwtIChpZiB0LmZyb250X2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmZyb250X2luZGV4IC0gMSk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCAtIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IHYgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB2XG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB2XG47O1xuXG5sZXQgcGVla19mcm9udF9ub25lbXB0eSB0ID1cbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAoYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgcGVla19mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBwZWVrX2JhY2tfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUucGVla19iYWNrX2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfYmFja19ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19iYWNrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBlZWtfYmFja19ub25lbXB0eSB0KVxuXG5sZXQgcGVlayB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuZnJvbnRfaW5kZXggPC0gaTtcbiAgdC5hcHBhcmVudF9mcm9udF9pbmRleCA8LSB0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfYmFja19ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuYmFja19pbmRleCA8LSBpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQ7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IGRlcXVldWVfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2dlbiA/KG4gPSAxKSB+ZGVxdWV1ZSB0ID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJEZXF1ZS5kcm9wOiAgbmVnYXRpdmUgaW5wdXQgKCVkKVwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAobiAtIDEpKVxuICBpblxuICBsb29wIG5cbjs7XG5cbmxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2Zyb250IHRcbmxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3BfZ2VuID9uIH5kZXF1ZXVlOmRlcXVldWVfYmFjayB0XG5cbmxldCBkcm9wID9uIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayA/biB0XG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgP24gdFxuOztcblxubGV0IGFzc2VydF9ub3RfZW1wdHkgdCBuYW1lID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZhaWx3aXRoZiBcIiVzOiBEZXF1ZS50IGlzIGVtcHR5XCIgbmFtZSAoKVxuXG5sZXQgdHJ1ZV9pbmRleF9leG4gdCBpID1cbiAgbGV0IGlfZnJvbV96ZXJvID0gaSAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggaW5cbiAgaWYgaV9mcm9tX3plcm8gPCAwIHx8IGxlbmd0aCB0IDw9IGlfZnJvbV96ZXJvXG4gIHRoZW4gKFxuICAgIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLnRydWVfaW5kZXhfZXhuXCI7XG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImludmFsaWQgaW5kZXg6ICVpIGZvciBhcnJheSB3aXRoIGluZGljZXMgKCVpLCVpKVwiXG4gICAgICBpXG4gICAgICBhcHBhcmVudF9mcm9udFxuICAgICAgYXBwYXJlbnRfYmFja1xuICAgICAgKCkpO1xuICBsZXQgdHJ1ZV9pID0gdC5mcm9udF9pbmRleCArIDEgKyBpX2Zyb21femVybyBpblxuICBpZiB0cnVlX2kgPj0gdC5hcnJfbGVuZ3RoIHRoZW4gdHJ1ZV9pIC0gdC5hcnJfbGVuZ3RoIGVsc2UgdHJ1ZV9pXG47O1xuXG5sZXQgZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKHRydWVfaW5kZXhfZXhuIHQgaSlcblxubGV0IGdldF9vcHQgdCBpID1cbiAgdHJ5IFNvbWUgKGdldCB0IGkpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzZXRfZXhuIHQgaSB2ID0gT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpIHZcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBwZWVrX2Zyb250IHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgZnJvbnQgLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBmcm9udCBpblxuICAgIGlnbm9yZVxuICAgICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB2IC0+XG4gICAgICAgICBhcnIuKGkpIDwtIHY7XG4gICAgICAgICBpICsgMSlcbiAgICAgICA6IGludCk7XG4gICAgYXJyXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID1cbiAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOihBcnJheS5sZW5ndGggYXJyICsgMSkgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnIgfmY6KGZ1biB2IC0+IGVucXVldWVfYmFjayB0IHYpO1xuICB0XG47O1xuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIzNGMxZTljYS00OTkyLTExZTYtYTY4Ni04YjRiZDRmODc3OTZcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5EZXF1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIHQgfmZcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOmxlbiAoKSBpblxuICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICBlbnF1ZXVlX2JhY2sgdCB4XG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcblxubGV0IHRfb2Zfc2V4cCBmIHNleHAgPSBvZl9hcnJheSAoQXJyYXkudF9vZl9zZXhwIGYgc2V4cClcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG4oKiByZS1leHBvc2UgdGhlc2UgaGVyZSB1bmRlciBhIGRpZmZlcmVudCBuYW1lIHRvIGF2b2lkIGludGVybmFsIGNvbmZ1c2lvbiAqKVxubGV0IGJhY2tfaW5kZXggPSBhcHBhcmVudF9iYWNrX2luZGV4XG5sZXQgZnJvbnRfaW5kZXggPSBhcHBhcmVudF9mcm9udF9pbmRleFxuXG5sZXQgYmFja19pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmJhY2tfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdFxuOztcblxubGV0IGZyb250X2luZGV4X2V4biB0ID1cbiAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUuZnJvbnRfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IFRlc3RfYmluYXJ5X3NlYXJjaGFibGUuTWFrZTFfYW5kX3Rlc3QgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0IHQgaSA9IGdldCB0IChmcm9udF9pbmRleF9leG4gdCArIGkpXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZFxuICBlbmQpXG5cbigqIFRoZSBcInN0YWJsZVwiIGluZGljZXMgdXNlZCBpbiB0aGlzIG1vZHVsZSBtYWtlIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGVcbiAgIFtCaW5hcnlfc2VhcmNoYWJsZV0gZnVuY3RvciBhd2t3YXJkLiAgV2UgbmVlZCB0byBiZSBzdXJlIHRvIHRyYW5zbGF0ZSBpbmNvbWluZ1xuICAgcG9zaXRpb25zIGZyb20gc3RhYmxlIHNwYWNlIHRvIHRoZSBleHBlY3RlZCAwIC0+IGxlbmd0aCAtIDEgc3BhY2UgYW5kIHRoZW4gd2UgbmVlZCB0b1xuICAgdHJhbnNsYXRlIHRoZW0gYmFjayBvbiByZXR1cm4uICopXG5sZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1bnRyYW5zbGF0ZWRfaSAtPiBTb21lICh0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgdW50cmFuc2xhdGVkX2kpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5cbmxldCBlcHJpbnQgbWVzc2FnZSA9IFByaW50Zi5lcHJpbnRmIFwiJXNcXG4lIVwiIG1lc3NhZ2VcbmxldCBlcHJpbnRfcyBzZXhwID0gZXByaW50IChTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbmxldCBlcHJpbnRzIG1lc3NhZ2UgYSBzZXhwX29mX2EgPSBlcHJpbnRfcyAoWyVzZXhwX29mOiBzdHJpbmcgKiBhXSAobWVzc2FnZSwgYSkpXG5sZXQgZXByaW50ZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXByaW50IGZvcm1hdFxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgTWFrZSAoKSA9IHN0cnVjdFxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBpbnZhcmlhbnQgfm1vZHVsZV9uYW1lIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlbiBlcHJpbnRzIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgaWYgIWNoZWNrX2ludmFyaWFudFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IExpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiaW52YXJpYW50IHByZS1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwb3N0LWNvbmRpdGlvbiBmYWlsZWRcIlxuICAgICAgICAgIChuYW1lLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBleG5dKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIGVwcmludHNcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgbW9kdWxlX25hbWU7IFwiLlwiOyBuYW1lOyBcIi1yZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5lbmRcblxubGV0IHNob3VsZF9wcmludF9iYWNrdHJhY2UgPSByZWYgZmFsc2VcblxubGV0IGFtX2ludGVybmFsIGhlcmUgbWVzc2FnZSA9XG4gICgqIEluIHRoaXMgZnVuY3Rpb24gd2UgdXNlIFtQcmludGYuZXByaW50Zl0gcmF0aGVyIHRoYW4gW0RlYnVnLmVwcmludGZdLCBiZWNhdXNlIHRoZVxuICAgICBmb3JtZXIgZG9lc24ndCBmbHVzaCwgd2hpbGUgdGhlIGxhdHRlciBkb2VzLiAgV2UnZCByYXRoZXIgZmx1c2ggb25jZSBhdCB0aGUgZW5kLFxuICAgICByYXRoZXIgdGhhbiB0aHJlZSB0aW1lcy4gKilcbiAgUHJpbnRmLmVwcmludGYgXCIlczpcXG5cIiAoU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nIGhlcmUpO1xuICBpZiAhc2hvdWxkX3ByaW50X2JhY2t0cmFjZVxuICB0aGVuXG4gICAgUHJpbnRmLmVwcmludGZcbiAgICAgIFwiJXNcXG5cIlxuICAgICAgKEJhY2t0cmFjZS5nZXQgKCkgfD4gWyVzZXhwX29mOiBCYWNrdHJhY2UudF0gfD4gU2V4cC50b19zdHJpbmdfaHVtKTtcbiAgKG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzXFxuXCIgbWVzc2FnZSk7XG4gIFByaW50Zi5lcHJpbnRmIFwiJSFcIlxuOztcblxubGV0IGFtIGhlcmUgPSBhbV9pbnRlcm5hbCBoZXJlIE5vbmVcbmxldCBhbWYgaGVyZSBmbXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHJpbmcgLT4gYW1faW50ZXJuYWwgaGVyZSAoU29tZSBzdHJpbmcpKSBmbXRcblxubGV0IGFtcyBoZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBhbV9pbnRlcm5hbCBoZXJlIChTb21lICgobWVzc2FnZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXSB8PiBTZXhwLnRvX3N0cmluZ19odW0pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN5c1xuXG5sZXQgdW5peF9xdW90ZSB4ID1cbiAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHgpKVxuICAmJiBTdHJpbmcuZm9yX2FsbCB4IH5mOihmdW5jdGlvblxuICAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgIHwgJzAnIC4uICc5J1xuICAgICAgIHwgJ18nIHwgJy0nIHwgJzonIHwgJy4nIHwgJy8nIHwgJywnIHwgJysnIHwgJz0nIHwgJyUnIHwgJ0AnIC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gKFxuICAgICgqIFNoZWxsIGtleXdvcmRzLCBhcyBvdXRwdXQgYnkgW2NvbXBnZW4gLWtdIGZvciBiYXNoLCBbbWFuIGRhc2hdIGZvciBkYXNoLCBhbmQgW1BBVEg9XG4gICAgICAgdHlwZSAtbSAnKicgfCBncmVwIHJlc2VydmVkXSBmb3IgenNoLCBleGNlcHQgZm9yIGtleXdvcmRzIHRoYXQgaGF2ZSBzcGVjaWFsXG4gICAgICAgY2hhcmFjdGVycyBsaWtlIFtbLiBOb3RlIHRoYXQgYnVpbHRpbnMgZG9uJ3QgbWF0dGVyIGJlY2F1c2UgJ2FsaWFzJyBhbmQgYWxpYXNcbiAgICAgICBiZWhhdmUgdGhlIHNhbWUsIHVubGlrZSAnaWYnIGFuZCBpZi4gKilcbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IFwiaWZcIlxuICAgIHwgXCJ0aGVuXCJcbiAgICB8IFwiZWxzZVwiXG4gICAgfCBcImVsaWZcIlxuICAgIHwgXCJmaVwiXG4gICAgfCBcImNhc2VcIlxuICAgIHwgXCJlc2FjXCJcbiAgICB8IFwiZm9yXCJcbiAgICB8IFwic2VsZWN0XCJcbiAgICB8IFwid2hpbGVcIlxuICAgIHwgXCJ1bnRpbFwiXG4gICAgfCBcImRvXCJcbiAgICB8IFwiZG9uZVwiXG4gICAgfCBcImluXCJcbiAgICB8IFwiZnVuY3Rpb25cIlxuICAgIHwgXCJ0aW1lXCJcbiAgICB8IFwiY29wcm9jXCJcbiAgICB8IFwiZm9yZWFjaFwiXG4gICAgfCBcInJlcGVhdFwiXG4gICAgfCBcIm5vY29ycmVjdFwiIC0+IEZpbGVuYW1lLnF1b3RlIHhcbiAgICB8IF8gLT4geClcbiAgZWxzZSBGaWxlbmFtZS5xdW90ZSB4XG47O1xuXG5sZXQgcXVvdGUgPVxuICBtYXRjaCBDYW1sLlN5cy5vc190eXBlIHdpdGhcbiAgfCBcIlVuaXhcIiAtPiB1bml4X3F1b3RlXG4gIHwgXyAtPiBGaWxlbmFtZS5xdW90ZVxuOztcblxubGV0IGNvbmNhdF9xdW90ZWQgc3BsaXRfY29tbWFuZCA9XG4gIExpc3QubWFwIH5mOnF1b3RlIHNwbGl0X2NvbW1hbmQgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG47O1xuXG5sZXQgY19pbnRfc2l6ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBjYXRjaF9icmVhayA9IGBVc2VfU3lzX3VuaXhcbmxldCBjaGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBjb21tYW5kID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmRfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBleGVjdXRpb25fbW9kZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0cyA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0c19leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZm9sZF9kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgZ2V0Y3dkID0gYFVzZV9TeXNfdW5peFxubGV0IGhvbWVfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19kaXJlY3RvcnlfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2ZpbGUgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgbHNfZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IG92ZXJyaWRlX2FyZ3YgPSBgVXNlX1N5c191bml4XG5sZXQgcmVhZGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW1vdmUgPSBgVXNlX1N5c191bml4XG5sZXQgcmVuYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IHVuc2FmZV9nZXRlbnYgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudl9leG4gPSBgVXNlX1N5c191bml4XG5cbmV4Y2VwdGlvbiBCcmVhayA9IENhbWwuU3lzLkJyZWFrXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCB1bml4X3F1b3RlID0gdW5peF9xdW90ZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFnX2ludGZcbmluY2x1ZGUgKERvdWJseV9saW5rZWQgOiBEb3VibHlfbGlua2VkLlMpXG5cbmxldCBhZGQgPSBpbnNlcnRfZmlyc3RcbmxldCBhZGRfdW5pdCB0IHYgPSBhZGQgdCB2IHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG5sZXQgZWx0cyB0ID0gZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBlbHQgLT4gZWx0IDo6IGFjYylcbmxldCByZW1vdmVfb25lID0gcmVtb3ZlX2ZpcnN0XG5sZXQgY2hvb3NlID0gZmlyc3RfZWx0XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIE9wdGlvbi5pdGVyIChyZW1vdmVfb25lIHQpIH5mOihmdW4gdiAtPlxuICAgICAgZiB2O1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgYnN0ciA6IEJpZ3N0cmluZy50XG4gIDsgbXV0YWJsZSBwb3MgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludFxuICA7IGluaXQgOiBCaWdzdHJpbmcudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgcmVzaXplIGJ1ZiBtb3JlID1cbiAgbGV0IG1pbl9sZW4gPSBidWYubGVuICsgbW9yZSBpblxuICBsZXQgbmV3X2xlbiA9IG1pbl9sZW4gKyBtaW5fbGVuIGluXG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBuZXdfbGVuIGluXG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zi5ic3RyIH5zcmNfbGVuOmJ1Zi5wb3MgfmRzdDpuZXdfYnVmICgpO1xuICBidWYuYnN0ciA8LSBuZXdfYnVmO1xuICBidWYubGVuIDwtIG5ld19sZW5cbjs7XG4iLCIoKiBTb21lIGNvZGUgdGFrZW4gZnJvbSBJTlJJQSdzIGJ1ZmZlciBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBCaWdzdHJpbmdcbmluY2x1ZGUgQmlnYnVmZmVyX2ludGVybmFsXG5cbmxldCBfX2ludGVybmFsICh0IDogdCkgPSB0XG5sZXQgbGVuZ3RoIHQgPSB0LnBvc1xuXG4oKiB7WyBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQubGVuID09IEJpZ3N0cmluZy5sZW5ndGggdC5ic3RyKSBdfSAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9IG1heCAxIG4gaW5cbiAgbGV0IGJzdHIgPSBCaWdzdHJpbmcuY3JlYXRlIG4gaW5cbiAgeyBic3RyOyBwb3MgPSAwOyBsZW4gPSBuOyBpbml0ID0gYnN0ciB9XG47O1xuXG5sZXQgY29udGVudHMgYnVmID0gQmlnc3RyaW5nLnRvX3N0cmluZyBidWYuYnN0ciB+bGVuOmJ1Zi5wb3NcbmxldCBjb250ZW50c19ieXRlcyBidWYgPSBCaWdzdHJpbmcudG9fYnl0ZXMgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgYmlnX2NvbnRlbnRzIGJ1ZiA9IHN1Ym8gfmxlbjpidWYucG9zIGJ1Zi5ic3RyXG5sZXQgdm9sYXRpbGVfY29udGVudHMgYnVmID0gYnVmLmJzdHJcblxubGV0IGFkZF9jaGFyIGJ1ZiBjID1cbiAgbGV0IHBvcyA9IGJ1Zi5wb3MgaW5cbiAgaWYgcG9zID49IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIDE7XG4gIGJ1Zi5ic3RyLntwb3N9IDwtIGM7XG4gIGJ1Zi5wb3MgPC0gcG9zICsgMVxuOztcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgVGVzdF9ibGl0Lk1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgIGxldCBlcXVhbCA9IENoYXIuZXF1YWxcbiAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gJ2EnIGVsc2UgJ2InXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgICAgYWRkX2NoYXIgdCAnYSdcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHNldCB0IGkgYyA9IEJpZ3N0cmluZy5zZXQgdC5ic3RyIGkgY1xuICAgICAgbGV0IGdldCB0IGkgPSBCaWdzdHJpbmcuZ2V0IHQuYnN0ciBpXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQnl0ZXNcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBCaWdzdHJpbmcuVG9fYnl0ZXMudW5zYWZlX2JsaXQgfnNyYzpzcmMuYnN0ciB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgICAgIDs7XG4gICAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnYnVmZmVyX2ludGVybmFsKSAoVG9fYnl0ZXMpXG5cbmxldCBudGggYnVmIHBvcyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGJ1Zi5wb3MgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5udGhcIiBlbHNlIGJ1Zi5ic3RyLntwb3N9XG47O1xuXG5sZXQgY2xlYXIgYnVmID0gYnVmLnBvcyA8LSAwXG5cbmxldCByZXNldCBidWYgPVxuICBidWYucG9zIDwtIDA7XG4gIGJ1Zi5ic3RyIDwtIGJ1Zi5pbml0O1xuICBidWYubGVuIDwtIEJpZ3N0cmluZy5sZW5ndGggYnVmLmJzdHJcbjs7XG5cbmxldCBhZGRfc3Vic3RyaW5nIGJ1ZiBzcmMgfnBvczpzcmNfcG9zIH5sZW4gPVxuICBpZiBzcmNfcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3M7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdWJieXRlcyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmlnc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdHJpbmcgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J5dGVzIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYnVmZmVyIGJ1Zl9kc3QgYnVmX3NyYyA9XG4gIGxldCBsZW4gPSBidWZfc3JjLnBvcyBpblxuICBsZXQgZHN0X3BvcyA9IGJ1Zl9kc3QucG9zIGluXG4gIGxldCBuZXdfcG9zID0gZHN0X3BvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmX2RzdC5sZW4gdGhlbiByZXNpemUgYnVmX2RzdCBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zl9zcmMuYnN0ciB+c3JjX2xlbjpsZW4gfmRzdDpidWZfZHN0LmJzdHIgfmRzdF9wb3MgKCk7XG4gIGJ1Zl9kc3QucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmluX3Byb3QgdCAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcikgeCA9XG4gIGxldCBuZXdfcG9zID1cbiAgICBtYXRjaCB3cml0ZXIud3JpdGUgdC5ic3RyIH5wb3M6dC5wb3MgeCB3aXRoXG4gICAgfCBwb3MgLT4gcG9zXG4gICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgKCogSXQncyBsaWtla3kgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgaW50ZXJuYWwgYnVmZmVyIGFuZCB0cnkgYWdhaW4uIFRlY2huaWNhbGx5IHdlIGNvdWxkIG1hdGNoIG9uXG4gICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0IGN1c3RvbVxuICAgICAgICAgYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgZG8gcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICBbSW52YWxpZF9hcmd1bWVudF0gb3IgW0ZhaWx1cmVdIGZvciBpbnN0YW5jZS4gKilcbiAgICAgIGxldCBzaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgaWYgdC5wb3MgKyBzaXplID4gdC5sZW4gdGhlbiByZXNpemUgdCBzaXplO1xuICAgICAgd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHhcbiAgaW5cbiAgdC5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKE5vdF9mb3VuZF9zXG4gICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgIFwiQmlnYnVmZmVyLmFkZF9zdWJzdGl0dXRlOiBjYW5ub3QgZmluZCBjbG9zaW5nIGRlbGltaXRlclwiXG4gICAgICAgICAgICAgICAob3BlbmluZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoY2xvc2luZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoc3RhcnQgOiBpbnQpXG4gICAgICAgICAgICAgICBzXSlcbiAgICBlbHNlIGlmIENoYXIuZXF1YWwgcy5baV0gb3BlbmluZ1xuICAgIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIGNsb3NpbmdcbiAgICB0aGVuIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltXG4gIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlbiBsaW1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgfCAnQScgLi4gJ1onXG4gICAgICB8ICcwJyAuLiAnOSdcbiAgICAgIHwgJ18nXG4gICAgICB8ICfpJ1xuICAgICAgfCAn4CdcbiAgICAgIHwgJ+EnXG4gICAgICB8ICfoJ1xuICAgICAgfCAn+SdcbiAgICAgIHwgJ+InXG4gICAgICB8ICfqJ1xuICAgICAgfCAn7idcbiAgICAgIHwgJ/QnXG4gICAgICB8ICf7J1xuICAgICAgfCAn6ydcbiAgICAgIHwgJ+8nXG4gICAgICB8ICf8J1xuICAgICAgfCAn5ydcbiAgICAgIHwgJ8knXG4gICAgICB8ICfAJ1xuICAgICAgfCAnwSdcbiAgICAgIHwgJ8gnXG4gICAgICB8ICfZJ1xuICAgICAgfCAnwidcbiAgICAgIHwgJ8onXG4gICAgICB8ICfOJ1xuICAgICAgfCAn1CdcbiAgICAgIHwgJ9snXG4gICAgICB8ICfLJ1xuICAgICAgfCAnzydcbiAgICAgIHwgJ9wnXG4gICAgICB8ICfHJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgICB8IF8gLT4gaSlcbiAgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgPVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAoJygnIHwgJ3snKSBhcyBjIC0+XG4gICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgIFN0cmluZy5zdWIgcyB+cG9zOm5ld19zdGFydCB+bGVuOihzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpzdGFydCB+bGVuOihzdG9wIC0gc3RhcnQpLCBzdG9wXG47O1xuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBidWYgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW1cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBDaGFyLmVxdWFsIHByZXZpb3VzICdcXFxcJyAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyAoaSArIDEpIGluXG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIChmIGlkZW50KTtcbiAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpKVxuICBpblxuICBzdWJzdCAnICcgMFxuOztcblxubW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICBsZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgPVxuICAgIEZvcm1hdC5tYWtlX2Zvcm1hdHRlciAoZnVuIHMgcG9zIGxlbiAtPiBhZGRfc3Vic3RyaW5nIGJ1ZiBzIH5wb3MgfmxlbikgaWdub3JlXG4gIDs7XG5cbiAgbGV0IGJwcmludGYgYnVmID0gRm9ybWF0LmtmcHJpbnRmIGlnbm9yZSAoZm9ybWF0dGVyX29mX2J1ZmZlciBidWYpXG5lbmRcblxubW9kdWxlIFByaW50ZiA9IHN0cnVjdFxuICBsZXQgYnByaW50ZiBidWYgPSBQcmludGYua3NwcmludGYgKGFkZF9zdHJpbmcgYnVmKVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkJ5dGVzfVtCYXNlLkJ5dGVzXX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuQnl0ZXNcbmVuZFxud2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbZ2VuXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZiBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtieXRlc10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW0J5dGVzLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gcHJvdmlkZVxuICAgIGludGVyZmFjZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX21vZHVsZV90eXBlcy5TMFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAgIGxldCBjcmVhdGUgPSBCaWdzdHJpbmcuY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2M6Tm9uZVxuICAgIGxldCBsZW5ndGggPSBCaWdzdHJpbmcubGVuZ3RoXG4gICAgbGV0IGdldCA9IEJpZ3N0cmluZy5nZXRcblxuICAgIG1vZHVsZSBCbGl0ID0gTWFrZV9zdWJzdHJpbmcuQmxpdFxuXG4gICAgbGV0IGJsaXQgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF90b19zdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2J5dGVzID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IEJsaXQuc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RhYmxlX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICAgICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaW5kZXggOiBpbnRcbiAgICAgICAgOyBtaW5faW5kZXggOiBpbnRcbiAgICAgICAgOyBtYXhfaW5kZXggOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gICAgICBsZXQgY3JlYXRlIGluZGV4IH5taW4gfm1heCA9XG4gICAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgKGluZGV4IDogaW50KSAobWluIDogaW50KSAobWF4IDogaW50KV1cbiAgICAgICAgZWxzZSB7IGluZGV4OyBtaW5faW5kZXggPSBtaW47IG1heF9pbmRleCA9IG1heCB9XG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgRm9yX3NleHBhYmxlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEZvcl9zZXhwYWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgdCA9IE0ubGFiZWwsIHQuaW5kZXgsIFwib2ZcIiwgdC5taW5faW5kZXgsIFwidG9cIiwgdC5tYXhfaW5kZXhcblxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlIChsYWJlbCwgaW5kZXgsIG9mXywgbWluLCB0b18sIG1heCkgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgbGFiZWwgTS5sYWJlbFxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgb2ZfIFwib2ZcIlxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgdG9fIFwidG9cIlxuICAgICAgICAgICAgICB0aGVuIGNyZWF0ZSBpbmRleCB+bWluIH5tYXhcbiAgICAgICAgICAgICAgZWxzZSBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgc2V4cCBmb3IgaW5kZXhcIiB+bGFiZWw6TS5sYWJlbF1cbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW9dXG4gICAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgUyA9IEJvdW5kZWRfaW5kZXhfaW50Zi5TXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBTdGFibGUuVjEuTWFrZSAoTSlcbiAgZW5kXG5cbiAgb3BlbiBTdGFibGUuVjFcblxuICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjcmVhdGUgPSBTdGFibGUuVjEuY3JlYXRlXG5cbiAgbGV0IGNyZWF0ZV9hbGwgfm1pbiB+bWF4ID1cbiAgICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6bWluIH5mOihmdW4gaW5kZXggLT5cbiAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgU29tZSAoY3JlYXRlIGluZGV4IH5taW4gfm1heCwgaW5kZXggKyAxKSlcbiAgICB8PiBTZXF1ZW5jZS50b19saXN0XG4gIDs7XG5cbiAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gIGxldCBtYXhfaW5kZXggdCA9IHQubWF4X2luZGV4XG4gIGxldCBtaW5faW5kZXggdCA9IHQubWluX2luZGV4XG5cbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgZW5kKVxuZW5kXG4iLCIoKiogQ29yZSBncmVhdGx5IGV4cGFuZHMgdGhlIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGluIEJhc2Ugd2hpbGUgc3RpbGwgcmVtYWluaW5nXG4gICAgcGxhdGZvcm0tYWdub3N0aWMuICBDb3JlIGNoYW5nZXMgbW9yZSBmcmVxdWVudGx5IChpLmUuLCBpcyBsZXNzIHN0YWJsZSkgdGhhbiBCYXNlLlxuXG4gICAgU29tZSBtb2R1bGVzIGFyZSBtZXJlIGV4dGVuc2lvbnMgb2YgdGhlaXIgY291bnRlcnBhcnRzIGluIEJhc2UsIHVzdWFsbHkgYWRkaW5nIGdlbmVyaWNcbiAgICBmdW5jdGlvbmFsaXR5IGJ5IGluY2x1ZGluZyBmdW5jdG9ycyB0aGF0IG1ha2UgdGhlbSBiaW5hYmxlLCBjb21wYXJhYmxlLCBzZXhwYWJsZSxcbiAgICBibGl0YWJsZSwgZXRjLiAgVGhlIGJ1bGsgb2YgQ29yZSwgdGhvdWdoLCBpcyBtb2R1bGVzIHByb3ZpZGluZyBlbnRpcmVseSBuZXdcbiAgICBmdW5jdGlvbmFsaXR5LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFyZyA9IEFyZ1xubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJhZyA9IEJhZ1xubW9kdWxlIEJpZ2J1ZmZlciA9IEJpZ2J1ZmZlclxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xubW9kdWxlIEJpZ3N1YnN0cmluZyA9IEJpZ3N1YnN0cmluZ1xubW9kdWxlIEJpbl9wcm90ID0gQ29yZV9iaW5fcHJvdFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZ1xubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCb3VuZGVkX2luZGV4ID0gQm91bmRlZF9pbmRleFxubW9kdWxlIEJ1ZmZlciA9IEJhc2UuQnVmZmVyXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHNcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5cbm1vZHVsZSBDYW1sID0gc3RydWN0XG4gIGluY2x1ZGUgQ2FtbFxuXG4gICgqIFdoZW4gd2UgcmVtb3ZlZCBbQ29yZS5DYW1sXSdzIGV4dGVuc2lvbnMgb2YgW0NvcmUuQ2FtbF0sIHdlIGFkZGVkXG4gICAgIHRoZSBkZWNsYXJhdGlvbnMgYmVsb3cgdG8gZm9yY2UgY29kZSB0byBzd2l0Y2ggdG8gdGhlIG5ldyBuYW1lcywgYW5kIGF2b2lkXG4gICAgIHNpbGVudGx5IGluY29ycmVjdGx5IHVzaW5nIHNvbWV0aGluZyBlbHNlIGluIHNjb3BlLiAqKVxuICBtb2R1bGUgQ29uZGl0aW9uID0gc3RydWN0IGVuZFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ2FtbF90aHJlYWRzLkNvbmRpdGlvbl1cIl1cblxuICBtb2R1bGUgTXV0ZXggPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDYW1sX3RocmVhZHMuTXV0ZXhdXCJdXG4gIG1vZHVsZSBUaHJlYWQgPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDYW1sX3RocmVhZHMuVGhyZWFkXVwiXVxuICBtb2R1bGUgVW5peCA9IHN0cnVjdCBlbmQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW0NhbWxfdW5peF1cIl1cbiAgbW9kdWxlIFVuaXhMYWJlbHMgPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtVbml4TGFiZWxzXVwiXVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbW1hbmQgPSBDb21tYW5kXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBDb250YWluZXJfaW50ZiA9IENvbnRhaW5lcl9pbnRmXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRpbnVlX29yX3N0b3BcblxubW9kdWxlIENvcmVfa2VybmVsX3N0YWJsZSA9IFN0YWJsZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfc3RhYmxlXSAtLSBbQ29yZV9rZXJuZWxdIHdhcyByZW5hbWVkIGFzIFtDb3JlXVwiXVxuXG5tb2R1bGUgQ29yZV9zdGFibGUgPSBTdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZVxubW9kdWxlIERheV9vZl93ZWVrID0gRGF5X29mX3dlZWtcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgRGVxdWUgPSBEZXF1ZVxubW9kdWxlIERlcml2aW5nX2hhc2ggPSBEZXJpdmluZ19oYXNoXG5tb2R1bGUgRGlnZXN0ID0gTWQ1IFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNy0wNV0gVXNlIE1kNSBpbnN0ZWFkLlwiXVxubW9kdWxlIERvdWJseV9saW5rZWQgPSBEb3VibHlfbGlua2VkXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uID0gRXBoZW1lcm9uXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBCYXNlLkV4blxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZVxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvblxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBGcXVldWUgPSBGcXVldWVcbm1vZHVsZSBHYyA9IEdjXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZVxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBIYXNodGJsX2ludGYgPSBIYXNodGJsX2ludGZcbm1vZHVsZSBIZWFwX2Jsb2NrID0gSGVhcF9ibG9ja1xubW9kdWxlIEhleGR1bXAgPSBIZXhkdW1wXG5tb2R1bGUgSGV4ZHVtcF9pbnRmID0gSGV4ZHVtcF9pbnRmXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnRcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uID0gSW1tZWRpYXRlX29wdGlvblxubW9kdWxlIEltbWVkaWF0ZV9vcHRpb25faW50ZiA9IEltbWVkaWF0ZV9vcHRpb25faW50ZlxubW9kdWxlIEluX2NoYW5uZWwgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X2ludGYgPSBJbnRfaW50ZlxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludGVyZmFjZXMgPSBJbnRlcmZhY2VzXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1hcF9pbnRmID0gTWFwX2ludGZcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTWQ1ID0gTWQ1XG5tb2R1bGUgTWVtbyA9IE1lbW9cbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTW9udGggPSBNb250aFxuXG5tb2R1bGUgTXV0ZXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDJdIFVzZSBbRXJyb3JfY2hlY2tpbmdfbXV0ZXhdIG9yIFtDYW1sX3RocmVhZHMuTXV0ZXhdXCJdXG5cbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb19wb2x5bW9ycGhpY19jb21wYXJlID0gTm9fcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT25seV9pbl90ZXN0ID0gT25seV9pbl90ZXN0XG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gT3B0aW9uYWxfc3ludGF4XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4X2ludGYgPSBPcHRpb25hbF9zeW50YXhfaW50ZlxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBPdXRfY2hhbm5lbCA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGVyY2VudCA9IFBlcmNlbnRcbm1vZHVsZSBQZXJtcyA9IFBlcm1zXG5tb2R1bGUgUGlkID0gUGlkXG5tb2R1bGUgUG9seSA9IFBvbHlcbm1vZHVsZSBQb2x5bW9ycGhpY19jb21wYXJlID0gUG9seSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTFdIHVzZSBbUG9seV0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgUG9wY291bnQgPSBCYXNlLlBvcGNvdW50XG5bQEB3YXJuaW5nIFwiLTNcIl1cbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBQcmludGV4YyA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgPSBRdWV1ZVxubW9kdWxlIFF1aWNrY2hlY2sgPSBRdWlja2NoZWNrXG5tb2R1bGUgUXVpY2tjaGVja19pbnRmID0gUXVpY2tjaGVja19pbnRmXG5tb2R1bGUgUXVpY2tjaGVja2FibGUgPSBRdWlja2NoZWNrYWJsZVxubW9kdWxlIFJhbmRvbSA9IEJhc2UuUmFuZG9tXG5tb2R1bGUgUmVmID0gUmVmXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0XG5tb2R1bGUgUm9idXN0bHlfY29tcGFyYWJsZSA9IFJvYnVzdGx5X2NvbXBhcmFibGVcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V0X2ludGYgPSBTZXRfaW50ZlxubW9kdWxlIFNldF9vbmNlID0gU2V0X29uY2Vcbm1vZHVsZSBTZXhwX21heWJlID0gU2V4cC5TZXhwX21heWJlXG5cbm1vZHVsZSBTZXhwID0gU2V4cFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGVcbm1vZHVsZSBTaWduID0gU2lnblxubW9kdWxlIFNpZ25hbCA9IFNpZ25hbFxubW9kdWxlIFNpZ25fb3JfbmFuID0gU2lnbl9vcl9uYW5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5tb2R1bGUgU3BsaXR0YWJsZV9yYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbVxubW9kdWxlIFN0YWJsZV9jb21wYXJhYmxlID0gU3RhYmxlX2NvbXBhcmFibGVcbm1vZHVsZSBTdGFibGVfdW5pdF90ZXN0ID0gU3RhYmxlX3VuaXRfdGVzdFxubW9kdWxlIFN0YWNrID0gU3RhY2tcbm1vZHVsZSBTdGFnZWQgPSBCYXNlLlN0YWdlZFxubW9kdWxlIFN0cmluZyA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZFxubW9kdWxlIFN0cmluZ2FibGUgPSBTdHJpbmdhYmxlXG5tb2R1bGUgU3Vic3RyaW5nID0gU3Vic3RyaW5nXG5tb2R1bGUgU3Vic3RyaW5nX2ludGYgPSBTdWJzdHJpbmdfaW50ZlxubW9kdWxlIFN5cyA9IENvcmVfc3lzXG5cbm1vZHVsZSBUaHJlYWQgPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbQ29yZV90aHJlYWRdIG9yIFtDYW1sX3RocmVhZHMuVGhyZWFkXVwiXVxuXG5tb2R1bGUgVGltZSA9IFRpbWVfZmxvYXRcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc1xubW9kdWxlIFR1cGxlID0gVHVwbGVcbm1vZHVsZSBUdXBsZTIgPSBUdXBsZS5UMlxubW9kdWxlIFR1cGxlMyA9IFR1cGxlLlQzXG5tb2R1bGUgVHlwZV9lcXVhbCA9IFR5cGVfZXF1YWxcbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IFR5cGVfaW1tZWRpYWN5XG5tb2R1bGUgVWNoYXIgPSBVY2hhclxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pb25fZmluZCA9IFVuaW9uX2ZpbmRcbm1vZHVsZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWRcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVuaXRfb2ZfdGltZSA9IFVuaXRfb2ZfdGltZVxubW9kdWxlIFVuaXZfbWFwID0gVW5pdl9tYXBcblxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMjAtMDNdIENvcmUgc2hhZG93cyBVbml4LiBVc2UgQ29yZV91bml4LCB3aGljaCBvdmVycmlkZXMgc29tZSBvZiBVbml4J3MgXFxcbiAgIGJlaGF2aW9yLiBJZiBuZWNlc3NhcnksIFVuaXggaXMgYXZhaWxhYmxlIGFuZCB1bnNoYWRvd2VkIGFzIENhbWxfdW5peC5cIl1cblxubW9kdWxlIFZhbGlkYXRlID0gVmFsaWRhdGVcbm1vZHVsZSBWYWxpZGF0ZWQgPSBWYWxpZGF0ZWRcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdlYWsgPSBXZWFrXG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBXaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IFdvcmRfc2l6ZVxuXG5tb2R1bGUgdHlwZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWQuSWRcblxuaW5jbHVkZSBUICgqKiBAb3BlbiAqKVxuXG5pbmNsdWRlIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBOb3RfZm91bmRcblxuKCoqIHsyIFRvcC1sZXZlbCB2YWx1ZXN9ICopXG5cbnR5cGUgJ2EgX21heWJlX2JvdW5kID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcblxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3QgPSBhbV9ydW5uaW5nX2lubGluZV90ZXN0XG5sZXQgYW1fcnVubmluZ190ZXN0ID0gYW1fcnVubmluZ190ZXN0XG5sZXQgZG9lc19yYWlzZSA9IEV4bi5kb2VzX3JhaXNlXG5sZXQgc2VjID0gVGltZV9mbG9hdC5TcGFuLm9mX3NlY1xubGV0ICggXi8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG4oKiogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgIFtDb3JlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQ29yZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgIHRoZW4gdGhlIHNpZGUgZWZmZWN0cyBtaWdodCBub3QgYmUgcnVuIGluIHRoYXQgcHJvZ3JhbS4gIFRoaXMgd2lsbCBydW4gYXMgbG9uZyBhcyB0aGVcbiAgICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gQ29yZTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgIFtDb3JlLkJvb2xdLCBmb3IgZXhhbXBsZSwgaXMgbm90IHN1ZmZpY2llbnQuICopXG5sZXQgKCkgPSBFeG4uaW5pdGlhbGl6ZV9tb2R1bGUgKClcblxuKCoqIFRvIGJlIHVzZWQgaW4gaW1wbGVtZW50aW5nIENvcmUsIGJ1dCBub3QgYnkgZW5kIHVzZXJzLiAqKVxubW9kdWxlIENvcmVfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGlnaXRfc3RyaW5nX2hlbHBlcnMgPSBEaWdpdF9zdHJpbmdfaGVscGVyc1xuICBtb2R1bGUgVGltZV96b25lID0gWm9uZVxuICBtb2R1bGUgT2ZkYXlfaGVscGVycyA9IE9mZGF5X2hlbHBlcnNcbiAgbW9kdWxlIFNwYW5fZmxvYXQgPSBTcGFuX2Zsb2F0XG5cbiAgbW9kdWxlIEJpZ2J1ZmZlcl9pbnRlcm5hbCA9IEJpZ2J1ZmZlcl9pbnRlcm5hbFxuICBtb2R1bGUgU3RhYmxlX2ludGVybmFsID0gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBTdGRfaW50ZXJuYWwgPSBTdGRfaW50ZXJuYWxcblxuICBtb2R1bGUgVGltZV9uc19hbHRlcm5hdGVfc2V4cCA9IFRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmVuZFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfcHJpdmF0ZSA9IENvcmVfcHJpdmF0ZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfcHJpdmF0ZV0gLS0gW0NvcmVfa2VybmVsXSB3YXMgcmVuYW1lZCBhcyBbQ29yZV1cIl1cbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgVWlfZWZmZWN0X2ludGZcblxudHlwZSAnYSB0ID0gLi5cbnR5cGUgJ2EgdCArPSBJZ25vcmUgOiB1bml0IHQgfCBNYW55IDogdW5pdCB0IGxpc3QgLT4gdW5pdCB0XG5cbigqIFdlIHVzZSB0aGlzIHRhYmxlIGZvciBkaXNwYXRjaGluZyB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlciBpbiBhbiBlZmZpY2llbnQgd2F5LiAgKilcbnR5cGUgaGlkZGVuID0gVCA6ICgnYSB0ICogKCdhIC0+IHVuaXQpKSAtPiBoaWRkZW5cblxubGV0IGhhbmRsZXJzIDogKGhpZGRlbiAtPiB1bml0KSBIYXNodGJsLk0oSW50KS50ID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBJbnQpIH5zaXplOjhcblxubW9kdWxlIERlZmluZSAoSGFuZGxlciA6IEhhbmRsZXIpIDpcbiAgUyB3aXRoIHR5cGUgYWN0aW9uIDo9IEhhbmRsZXIuQWN0aW9uLnQgYW5kIHR5cGUgJ2EgdCA6PSAnYSB0ID0gc3RydWN0XG4gIHR5cGUgXyB0ICs9IEMgOiBIYW5kbGVyLkFjdGlvbi50IC0+IHVuaXQgdFxuXG4gIGxldCBrZXkgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENdXG5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLmFkZF9leG4gaGFuZGxlcnMgfmtleSB+ZGF0YTooZnVuIGlucCAtPlxuICAgICAgbWF0Y2ggaW5wIHdpdGhcbiAgICAgIHwgVCAoQyB2YWx1ZSwgY2FsbGJhY2spIC0+XG4gICAgICAgIEhhbmRsZXIuaGFuZGxlIHZhbHVlO1xuICAgICAgICBjYWxsYmFjayAoKVxuICAgICAgfCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiVW5yZWNvZ25pemVkIHZhcmlhbnRcIl0pXG4gIDs7XG5cbiAgbGV0IGluamVjdCB2ID0gQyB2XG5lbmRcblxubW9kdWxlIERlZmluZTEgKEhhbmRsZXIgOiBIYW5kbGVyMSkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgYWN0aW9uIDo9ICdhIEhhbmRsZXIuQWN0aW9uLnQgYW5kIHR5cGUgJ2EgdCA6PSAnYSB0ID0gc3RydWN0XG4gIHR5cGUgXyB0ICs9IEMgOiAnYSBIYW5kbGVyLkFjdGlvbi50IC0+ICdhIHRcblxuICBsZXQga2V5ID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDXVxuXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5hZGRfZXhuIGhhbmRsZXJzIH5rZXkgfmRhdGE6KGZ1biBpbnAgLT5cbiAgICAgIG1hdGNoIGlucCB3aXRoXG4gICAgICB8IFQgKEMgdmFsdWUsIGNhbGxiYWNrKSAtPlxuICAgICAgICBsZXQgY2FsbGVkID0gcmVmIGZhbHNlIGluXG4gICAgICAgIGxldCBjYWxsYmFjayBhID1cbiAgICAgICAgICBpZiAhY2FsbGVkXG4gICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIm9uX3Jlc3BvbnNlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyFcIlxuICAgICAgICAgIGVsc2UgY2FsbGVkIDo9IHRydWU7XG4gICAgICAgICAgY2FsbGJhY2sgYVxuICAgICAgICBpblxuICAgICAgICBIYW5kbGVyLmhhbmRsZSB2YWx1ZSB+b25fcmVzcG9uc2U6Y2FsbGJhY2tcbiAgICAgIHwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlVucmVjb2duaXplZCB2YXJpYW50XCJdKVxuICA7O1xuXG4gIGxldCBpbmplY3QgdiA9IEMgdlxuZW5kXG5cbmxldCBnZXRfa2V5IHQgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCB0KVxuXG5sZXQgaGFuZGxlX3JlZ2lzdGVyZWRfZXZlbnQgKFQgKHQsIGNiKSkgPVxuICBIYXNodGJsLmZpbmRfZXhuIGhhbmRsZXJzIChnZXRfa2V5IHQpIChUICh0LCBjYikpXG47O1xuXG5tb2R1bGUgUHJpbnRfcyA9IERlZmluZSAoc3RydWN0XG4gICAgbW9kdWxlIEFjdGlvbiA9IFNleHBcblxuICAgIGxldCBoYW5kbGUgcyA9IHByaW50X3Mgc1xuICBlbmQpXG5cbmxldCBwcmludF9zID0gUHJpbnRfcy5pbmplY3RcblxuKCogRWZmZWN0ZnVsIHRoaW5ncyAqKVxudHlwZSAnYSB0ICs9XG4gIHwgUmV0dXJuIDogJ2EgLT4gJ2EgdFxuICB8IExhenkgOiAnYSB0IExhenkudCAtPiAnYSB0XG4gIHwgQmluZCA6XG4gICAgICB7IHQgOiAnYSB0XG4gICAgICA7IGYgOiAnYSAtPiAnYiB0XG4gICAgICB9XG4gICAgICAtPiAnYiB0XG4gIHwgTWFwIDpcbiAgICAgIHsgdCA6ICdhIHRcbiAgICAgIDsgZiA6ICdhIC0+ICdiXG4gICAgICB9XG4gICAgICAtPiAnYiB0XG4gIHwgTmV2ZXIgOiAnYiB0XG4gIHwgRnVuIDogKGNhbGxiYWNrOignYSAtPiB1bml0KSAtPiB1bml0KSAtPiAnYSB0XG5cbmxldCByZXR1cm4gYSA9IFJldHVybiBhXG5sZXQgYmluZCAodHlwZSBhKSAodCA6IGEgdCkgfmYgPSBCaW5kIHsgdDsgZiB9XG5sZXQgbWFwICh0eXBlIGEgYikgKHQgOiBhIHQpIH5mIDogYiB0ID0gTWFwIHsgdDsgZiB9XG5sZXQgbmV2ZXIgPSBOZXZlclxubGV0IG9mX2Z1biB+ZiA9IEZ1biBmXG5sZXQgbGF6eV8gYSA9IExhenkgYVxuXG5pbmNsdWRlIENvcmUuTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgcmVjIGV2YWwgOiB0eXBlIGEuIGEgdCAtPiBjYWxsYmFjazooYSAtPiB1bml0KSAtPiB1bml0ID1cbiAgZnVuIHQgfmNhbGxiYWNrIC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZ1biBmIC0+IGYgfmNhbGxiYWNrXG4gIHwgSWdub3JlIC0+IGNhbGxiYWNrICgpXG4gIHwgUmV0dXJuIGEgLT4gY2FsbGJhY2sgYVxuICB8IExhenkgKGxhenkgdCkgLT4gZXZhbCB0IH5jYWxsYmFja1xuICB8IE1hbnkgbCAtPlxuICAgIExpc3QuaXRlciBsIH5mOihldmFsIH5jYWxsYmFjazppZ25vcmUpO1xuICAgIGNhbGxiYWNrICgpXG4gIHwgQmluZCB7IHQ7IGYgfSAtPiBldmFsIHQgfmNhbGxiYWNrOihmdW4gYSAtPiBldmFsIChmIGEpIH5jYWxsYmFjaylcbiAgfCBNYXAgeyB0OyBmIH0gLT4gZXZhbCB0IH5jYWxsYmFjazooZnVuIGEgLT4gY2FsbGJhY2sgKGYgYSkpXG4gIHwgTmV2ZXIgLT4gKClcbiAgfCB0IC0+IGhhbmRsZV9yZWdpc3RlcmVkX2V2ZW50IChUICh0LCBjYWxsYmFjaykpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBoYW5kbGUgPSBldmFsIH5jYWxsYmFjazppZ25vcmVcblxuICB0eXBlIGhpZGUgPSBoaWRkZW4gPSBUIDogKCdhIHQgKiAoJ2EgLT4gdW5pdCkpIC0+IGhpZGVcblxuICBsZXQgaGFuZGxlcnMgPSBoYW5kbGVyc1xuICBsZXQgb2ZfZnVuID0gb2ZfZnVuXG5lbmRcblxubW9kdWxlIEFkdmFuY2VkID0gc3RydWN0XG4gIG1vZHVsZSBTeW5jX2Z1bl9hcmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICB0eXBlICdyIHQgPSBUIDogJ2EgKiAoJ2EgLT4gJ3IpIC0+ICdyIHRcbiAgICBlbmRcblxuICAgIGxldCBoYW5kbGUgKEFjdGlvbi5UIChhLCBmKSkgfm9uX3Jlc3BvbnNlID0gb25fcmVzcG9uc2UgKGYgYSlcbiAgZW5kXG5cbiAgbW9kdWxlIFN5bmNfZnVuID0gRGVmaW5lMSAoU3luY19mdW5fYXJnKVxuXG4gIGxldCBvZl9zeW5jX2Z1biBmIGEgPSBTeW5jX2Z1bi5pbmplY3QgKFQgKGEsIGYpKVxuXG4gIG1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gICAgbW9kdWxlIENhbGxiYWNrID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID1cbiAgICAgICAgeyByZXF1ZXN0IDogJ2FcbiAgICAgICAgOyBvbl9yZXNwb25zZSA6ICdiIC0+IHVuaXQgdFxuICAgICAgICB9XG5cbiAgICAgIGxldCBtYWtlIH5yZXF1ZXN0IH5vbl9yZXNwb25zZSA9IHsgcmVxdWVzdDsgb25fcmVzcG9uc2UgfVxuICAgICAgbGV0IHJlcXVlc3QgeyByZXF1ZXN0OyBfIH0gPSByZXF1ZXN0XG4gICAgICBsZXQgcmVzcG9uZF90byB7IG9uX3Jlc3BvbnNlOyBfIH0gcmVzcG9uc2UgPSBvbl9yZXNwb25zZSByZXNwb25zZVxuICAgIGVuZFxuXG4gICAgbGV0IG1ha2UgOiByZXF1ZXN0OidhIC0+IGV2YWx1YXRvcjooKCdhLCAnYikgQ2FsbGJhY2sudCAtPiB1bml0IHQpIC0+ICdiIHQgPVxuICAgICAgZnVuIH5yZXF1ZXN0IH5ldmFsdWF0b3IgLT5cbiAgICAgIEV4cGVydC5vZl9mdW4gfmY6KGZ1biB+Y2FsbGJhY2sgLT5cbiAgICAgICAgbGV0IGNhbGxiYWNrID1cbiAgICAgICAgICBDYWxsYmFjay5tYWtlIH5yZXF1ZXN0IH5vbl9yZXNwb25zZTooZnVuIHJlc3BvbnNlIC0+XG4gICAgICAgICAgICBjYWxsYmFjayByZXNwb25zZTtcbiAgICAgICAgICAgIElnbm9yZSlcbiAgICAgICAgaW5cbiAgICAgICAgRXhwZXJ0LmhhbmRsZSAoZXZhbHVhdG9yIGNhbGxiYWNrKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3ZhciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgICAgIHwgRW1wdHkgb2YgeyBoYW5kbGVycyA6ICgnYSAtPiB1bml0KSBCYWcudCB9XG4gICAgICAgIHwgRnVsbCBvZiAnYVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBzdGF0ZSByZWZcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IHJlZiAoRW1wdHkgeyBoYW5kbGVycyA9IEJhZy5jcmVhdGUgKCkgfSlcblxuICAgICAgbGV0IHVwb24gdCBoYW5kbGVyID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IHsgaGFuZGxlcnMgfSAtPiBpZ25vcmUgKEJhZy5hZGQgaGFuZGxlcnMgaGFuZGxlciA6IF8gQmFnLkVsdC50KVxuICAgICAgICB8IEZ1bGwgeCAtPiBoYW5kbGVyIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCBmaWxsX2lmX2VtcHR5IHQgeCA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBGdWxsIF8gLT4gKClcbiAgICAgICAgfCBFbXB0eSB7IGhhbmRsZXJzIH0gLT5cbiAgICAgICAgICBCYWcuaXRlciBoYW5kbGVycyB+ZjooZnVuIGhhbmRsZXIgLT4gaGFuZGxlciB4KTtcbiAgICAgICAgICB0IDo9IEZ1bGwgeFxuICAgICAgOztcblxuICAgICAgbGV0IHBlZWsgdCA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSBfIC0+IE5vbmVcbiAgICAgICAgfCBGdWxsIHggLT4gU29tZSB4XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuX2FyZyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICB0eXBlICdyIHQgPSBUIDogJ2EgKiAoJ2EgLT4gJ3IgU3Zhci50KSAtPiAnciB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGhhbmRsZSAoQWN0aW9uLlQgKGEsIGYpKSB+b25fcmVzcG9uc2UgPSBTdmFyLnVwb24gKGYgYSkgb25fcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdmFyX2Z1biA9IERlZmluZTEgKFN2YXJfZnVuX2FyZylcblxuICAgIGxldCBvZl9zdmFyX2Z1biBmIGEgPSBTdmFyX2Z1bi5pbmplY3QgKFQgKGEsIGYpKVxuXG4gICAgbW9kdWxlIFF1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxLCAncikgcnBjID1cbiAgICAgICAgeyBxdWVyeSA6ICdxXG4gICAgICAgIDsgcmVzcG9uc2UgOiAnciBTdmFyLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncSwgJ3IpIHQgPSAoJ3EsICdyKSBycGMgQmFnLnRcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IEJhZy5jcmVhdGUgKClcblxuICAgICAgbGV0IGFkZF9xdWVyeSB0IHF1ZXJ5ID1cbiAgICAgICAgbGV0IHJlc3BvbnNlID0gU3Zhci5jcmVhdGUgKCkgaW5cbiAgICAgICAgaWdub3JlIChCYWcuYWRkIHQgeyBxdWVyeTsgcmVzcG9uc2UgfSA6IF8gQmFnLkVsdC50KTtcbiAgICAgICAgcmVzcG9uc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWVyaWVzX3BlbmRpbmdfcmVzcG9uc2UgdCA9XG4gICAgICAgIEJhZy50b19saXN0IHQgfD4gTGlzdC5tYXAgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSA9IF8gfSAtPiBxdWVyeSlcbiAgICAgIDs7XG5cbiAgICAgIHR5cGUgJ3IgbWF5YmVfcmVzcG9uZCA9XG4gICAgICAgIHwgTm9fcmVzcG9uc2VfeWV0XG4gICAgICAgIHwgUmVzcG9uZCBvZiAnclxuXG4gICAgICBsZXQgbWF5YmVfcmVzcG9uZCB0IH5mID1cbiAgICAgICAgQmFnLmZpbHRlcl9pbnBsYWNlIHQgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSB9IC0+XG4gICAgICAgICAgbWF0Y2ggZiBxdWVyeSB3aXRoXG4gICAgICAgICAgfCBOb19yZXNwb25zZV95ZXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgUmVzcG9uZCByZXNwIC0+XG4gICAgICAgICAgICBTdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzcDtcbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIHFydCA9IG9mX3N2YXJfZnVuIChRdWVyeV9yZXNwb25zZV90cmFja2VyLmFkZF9xdWVyeSBxcnQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQWR2YW5jZWRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IElkZW50XG4gICAgfCBGdW5jdGlvblxuICAgIHwgQXRrZXl3b3JkXG4gICAgfCBIYXNoXG4gICAgfCBTdHJpbmdcbiAgICB8IFVyaVxuICAgIHwgRGVsaW1cbiAgICB8IE51bWJlclxuICAgIHwgUGVyY2VudGFnZVxuICAgIHwgRGltZW5zaW9uXG4gICAgfCBXaGl0ZV9zcGFjZVxuICAgIHwgQ29sb25cbiAgICB8IFNlbWlfY29sb25cbiAgICB8IENvbW1hXG4gICAgfCBMYnJhY2tldFxuICAgIHwgUmJyYWNrZXRcbiAgICB8IExwYXJlblxuICAgIHwgUnBhcmVuXG4gICAgfCBMY3VybHlcbiAgICB8IFJjdXJseVxuICAgIHwgQ29tbWVudFxuICAgIHwgRW9mXG4gICAgfCBFcnJvclxuICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbmVuZFxuXG50eXBlIHQgPVxuICB7IHMgOiBzdHJpbmdcbiAgOyBtdXRhYmxlIG9mZiA6IGludFxuICA7ICgqIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRva2VuICopXG4gICAgbXV0YWJsZSBsZW4gOiBpbnRcbiAgOyAoKiBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4gKilcbiAgICBtdXRhYmxlIGN1cnJlbnQgOiBUb2tlbi50XG4gIH1cblxudHlwZSBtYXJrID0gTWFyayBvZiBpbnQgW0BAdW5ib3hlZF1cblxubGV0IG1hcmsgdCA9IE1hcmsgdC5sZW5cbmxldCBzb3VyY2UgdCA9IHQuc1xubGV0IG5leHRfcG9zIHQgPSB0Lm9mZiArIHQubGVuXG5sZXQgaXNfbmV4dF9lb2YgdCA9IG5leHRfcG9zIHQgPj0gU3RyaW5nLmxlbmd0aCB0LnNcbmxldCBuZXh0X2NoYXIgdCA9IHQucy5bbmV4dF9wb3MgdF1cbmxldCByZXNldCB0IChNYXJrIHYpID0gdC5sZW4gPC0gdlxubGV0IGNvbnN1bWVfMSB0ID0gdC5sZW4gPC0gdC5sZW4gKyAxXG5sZXQgY29uc3VtZV9uIHQgbiA9IHQubGVuIDwtIHQubGVuICsgblxuXG5sZXQgb25lX2NoYXJfdG9rZW4gdCB0b2sgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGNvbnN1bWVfMSB0O1xuICB0LmN1cnJlbnQgPC0gdG9rXG47O1xuXG5leGNlcHRpb24gRXJyb3JfaGFwcGVuZWRcblxubGV0IGVycm9yIHQgPVxuICB0LmN1cnJlbnQgPC0gRXJyb3I7XG4gIHJhaXNlIEVycm9yX2hhcHBlbmVkXG47O1xuXG5sZXQgYWNjZXB0IHQgZiA9XG4gIGlmIChub3QgKGlzX25leHRfZW9mIHQpKSAmJiBmIChuZXh0X2NoYXIgdClcbiAgdGhlbiAoXG4gICAgY29uc3VtZV8xIHQ7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IGFjY2VwdF9jaGFyIHQgY2ggPSBhY2NlcHQgdCAoQ2hhci5lcXVhbCBjaClcblxubGV0IGFjY2VwdF9zdHJpbmcgdCBzdHIgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA9IDBcbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBwb3MgPSBuZXh0X3BvcyB0IGluXG4gICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGlmIHBvcyArIHN0cl9sZW4gPiBTdHJpbmcubGVuZ3RoIHQuc1xuICAgIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIFN0cmluZy5pc19zdWJzdHJpbmdfYXQgdC5zIH5wb3MgfnN1YnN0cmluZzpzdHJcbiAgICB0aGVuIChcbiAgICAgIGNvbnN1bWVfbiB0IHN0cl9sZW47XG4gICAgICB0cnVlKVxuICAgIGVsc2UgZmFsc2UpXG47O1xuXG5sZXQgZXhwZWN0IHQgZiA9IGlmIGFjY2VwdCB0IGYgdGhlbiAoKSBlbHNlIGVycm9yIHRcbmxldCBleHBlY3RfY2hhciB0IGNoID0gZXhwZWN0IHQgKENoYXIuZXF1YWwgY2gpXG5cbmxldCBtYW55IHQgZiA9XG4gIHdoaWxlIChub3QgKGlzX25leHRfZW9mIHQpKSAmJiBmIChuZXh0X2NoYXIgdCkgZG9cbiAgICBjb25zdW1lXzEgdFxuICBkb25lXG47O1xuXG5sZXQgbWFueTEgdCBmID1cbiAgZXhwZWN0IHQgZjtcbiAgbWFueSB0IGZcbjs7XG5cbmxldCBwbHVzX29yX21pbnVzID0gZnVuY3Rpb25cbiAgfCAnLScgfCAnKycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBubXN0YXJ0ID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IG5tY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgfCAnMCcgLi4gJzknIHwgJy0nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaWRlbnQgdCA9XG4gIGlmIGFjY2VwdF9jaGFyIHQgJy0nXG4gIHRoZW5cbiAgICBpZiBhY2NlcHRfY2hhciB0ICctJ1xuICAgIHRoZW4gbWFueSB0IG5tY2hhclxuICAgIGVsc2UgKFxuICAgICAgZXhwZWN0IHQgbm1zdGFydDtcbiAgICAgIG1hbnkgdCBubWNoYXIpXG4gIGVsc2UgKFxuICAgIGV4cGVjdCB0IG5tc3RhcnQ7XG4gICAgbWFueSB0IG5tY2hhcilcbjs7XG5cbmxldCBpZGVudF9vcl9mdW5jdGlvbiB0ID1cbiAgaWRlbnQgdDtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnKCcgdGhlbiB0LmN1cnJlbnQgPC0gRnVuY3Rpb24gZWxzZSB0LmN1cnJlbnQgPC0gSWRlbnRcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFx0JyB8ICdcXHInIHwgJ1xcbicgfCAnXFx4MGMnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgcXVvdGVkX3N0cmluZycgdCB+cXVvdGUgPVxuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSBxdW90ZSk7XG4gIGNvbnN1bWVfMSB0O1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHgwYycgfCAnXFxcXCcgLT4gZmFsc2VcbiAgICAgIHwgYyB3aGVuIENoYXIuZXF1YWwgYyBxdW90ZSAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpO1xuICAgIGlmIGFjY2VwdF9jaGFyIHQgJ1xcXFwnXG4gICAgdGhlblxuICAgICAgaWYgYWNjZXB0X2NoYXIgdCBxdW90ZVxuICAgICAgdGhlbiBsb29wICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dF9jaGFyIHQgd2l0aFxuICAgICAgICB8ICdcXG4nIHwgJ1xceDBjJyAtPlxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGlnbm9yZSAoYWNjZXB0X2NoYXIgdCAnXFxuJyA6IGJvb2wpO1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgICAgfCBfYyAtPlxuICAgICAgICAgICgqIEhhbmRsZSB0aGUgXCJlc2NhcGVcIiBydWxlOlxuICAgICAgICAgICAgIHt2XG4gICAgICAgICAgICAgICAgdW5pY29kZTogXFxcXFswLTlhLWZdezEsNn0oXFxyXFxufFsgXFxuXFxyXFx0XFxmXSk/XG4gICAgICAgICAgICAgICAgZXNjYXBlIDoge3VuaWNvZGV9fFxcXFxbXlxcblxcclxcZjAtOWEtZl1cbiAgICAgICAgICAgICAgdn1cbiAgICAgICAgICAqKVxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKCk7XG4gIGV4cGVjdF9jaGFyIHQgcXVvdGVcbjs7XG5cbmxldCBzdGFydF9udW0gdCA9XG4gIGxldCBjdXIgPSBtYXJrIHQgaW5cbiAgbGV0IGIgPVxuICAgIGlnbm9yZSAoYWNjZXB0IHQgcGx1c19vcl9taW51cyA6IGJvb2wpO1xuICAgIGlnbm9yZSAoYWNjZXB0X2NoYXIgdCAnLicgOiBib29sKTtcbiAgICBhY2NlcHQgdCBDaGFyLmlzX2RpZ2l0XG4gIGluXG4gIHJlc2V0IHQgY3VyO1xuICBiXG47O1xuXG5sZXQgc3RhcnRfaWRlbnQgfnByZWZpeCB0ID1cbiAgbGV0IGN1ciA9IG1hcmsgdCBpblxuICBsZXQgYiA9XG4gICAgYWNjZXB0X3N0cmluZyB0IHByZWZpeFxuICAgICYmXG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLScgdGhlbiBhY2NlcHRfY2hhciB0ICctJyB8fCBhY2NlcHQgdCBubXN0YXJ0IGVsc2UgYWNjZXB0IHQgbm1zdGFydFxuICBpblxuICByZXNldCB0IGN1cjtcbiAgYlxuOztcblxubGV0IHF1b3RlZF9zdHJpbmcgdCB+cXVvdGUgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIHF1b3RlZF9zdHJpbmcnIHQgfnF1b3RlO1xuICB0LmN1cnJlbnQgPC0gU3RyaW5nXG47O1xuXG5sZXQgZXhwb25lbnRpYWxfcGFydCB0ID1cbiAgbGV0IG1hcmsgPSBtYXJrIHQgaW5cbiAgaWYgYWNjZXB0IHQgKGZ1bmN0aW9uXG4gICAgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZSlcbiAgdGhlblxuICAgIGlmIGFjY2VwdCB0IHBsdXNfb3JfbWludXNcbiAgICB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdFxuICAgIGVsc2UgaWYgYWNjZXB0IHQgQ2hhci5pc19kaWdpdFxuICAgIHRoZW4gbWFueSB0IENoYXIuaXNfZGlnaXRcbiAgICBlbHNlXG4gICAgICAoKiBCYWNrdHJhY2sgaWYgdGhlcmUgYXJlIG5vIGRpZ2l0cyBvciBzaWducyBhZnRlciB0aGUgJ2UnIGJlY2F1c2VcbiAgICAgICAgIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlICdlJyB3YXMgYWN0dWFsbHkgYSBwYXJ0IG9mIHNvbWV0aGluZyBlbHNlLiBGb3JcbiAgICAgICAgIGV4YW1wbGUsIHRoZSAnZScgY291bGQgYmUgcGFydCBvZiBhbiAnZW0nIG9yICdlbicgZGltZW5zaW9uIGluc3RlYWRcbiAgICAgICAgIG9mIGJlZ2lubmluZyB0aGUgZXhwb25lbnRpYWwgcGFydCBvZiBhIHNjaWVudGlmaWMgbm90YXRpb24gbnVtYmVyLlxuXG4gICAgICAgICBFeGFtcGxlOiAxLjJlMyBpcyBzY2llbnRpZmljIG5vdGF0aW9uLCBidXQgMS4yZW0gaXMgYSBudW1iZXIgd2l0aCBhXG4gICAgICAgICBkaW1lbnNpb24uICopXG4gICAgICByZXNldCB0IG1hcmtcbjs7XG5cbmxldCBudW0gdCA9XG4gIGlnbm9yZSAoYWNjZXB0IHQgcGx1c19vcl9taW51cyA6IGJvb2wpO1xuICBpZiBhY2NlcHRfY2hhciB0ICcuJ1xuICB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdFxuICBlbHNlIChcbiAgICBtYW55MSB0IENoYXIuaXNfZGlnaXQ7XG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLicgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXQpO1xuICBleHBvbmVudGlhbF9wYXJ0IHRcbjs7XG5cbmxldCBudW1iZXJfb3JfcGVyY2VudGFnZV9vcl9kaW1lbnNpb24gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgbnVtIHQ7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJyUnXG4gIHRoZW4gdC5jdXJyZW50IDwtIFBlcmNlbnRhZ2VcbiAgZWxzZSBpZiBzdGFydF9pZGVudCB+cHJlZml4OlwiXCIgdFxuICB0aGVuIChcbiAgICBpZGVudCB0O1xuICAgIHQuY3VycmVudCA8LSBEaW1lbnNpb24pXG4gIGVsc2UgdC5jdXJyZW50IDwtIE51bWJlclxuOztcblxubGV0IGhhc2hfb3JfZGVsaW0gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJyMnKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGlmIGFjY2VwdCB0IG5tY2hhclxuICB0aGVuIChcbiAgICBtYW55MSB0IG5tY2hhcjtcbiAgICB0LmN1cnJlbnQgPC0gSGFzaClcbiAgZWxzZSB0LmN1cnJlbnQgPC0gRGVsaW1cbjs7XG5cbmxldCBhdGtleXdvcmQgdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ0AnKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGlkZW50IHQ7XG4gIHQuY3VycmVudCA8LSBBdGtleXdvcmRcbjs7XG5cbmxldCB1cmlfb3JfaWRlbnRfb3JfZnVuY3Rpb24gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ3UnKTtcbiAgaWYgYWNjZXB0X3N0cmluZyB0IFwidXJsKFwiXG4gIHRoZW4gKFxuICAgIGxldCBtID0gbWFyayB0IGluXG4gICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgaWYgQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdcIicgfHwgQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdcXCcnXG4gICAgdGhlbiAoXG4gICAgICByZXNldCB0IG07XG4gICAgICB0LmN1cnJlbnQgPC0gRnVuY3Rpb24pXG4gICAgZWxzZSAoXG4gICAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyknIHwgJyAnIC0+IGZhbHNlXG4gICAgICAgIHwgJ1xcJycgfCAnXCInIHwgJygnIC0+IGVycm9yIHRcbiAgICAgICAgfCBjIHdoZW4gQ2hhci5pc19wcmludCBjIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGVycm9yIHQpO1xuICAgICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgICBleHBlY3RfY2hhciB0ICcpJztcbiAgICAgIHQuY3VycmVudCA8LSBVcmkpKVxuICBlbHNlIGlkZW50X29yX2Z1bmN0aW9uIHRcbjs7XG5cbmxldCBjb21tZW50X29yX2RlbGltIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGlmIGFjY2VwdF9zdHJpbmcgdCBcIi8qXCJcbiAgdGhlbiAoXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgICAgfCAnKicgLT4gZmFsc2VcbiAgICAgICAgfCBfIC0+IHRydWUpO1xuICAgICAgaWYgYWNjZXB0X3N0cmluZyB0IFwiKi9cIlxuICAgICAgdGhlbiB0LmN1cnJlbnQgPC0gQ29tbWVudFxuICAgICAgZWxzZSBpZiBhY2NlcHRfY2hhciB0ICcqJ1xuICAgICAgdGhlbiBsb29wICgpXG4gICAgICBlbHNlIGVycm9yIHRcbiAgICBpblxuICAgIGxvb3AgKCkpXG4gIGVsc2UgKFxuICAgIGV4cGVjdF9jaGFyIHQgJy8nO1xuICAgIHQuY3VycmVudCA8LSBEZWxpbSlcbjs7XG5cbmxldCBuZXh0IHQgPVxuICBsZXQgbmV3X29mZiA9IG5leHRfcG9zIHQgaW5cbiAgdC5vZmYgPC0gbmV3X29mZjtcbiAgdC5sZW4gPC0gMDtcbiAgaWYgaXNfbmV4dF9lb2YgdFxuICB0aGVuIHQuY3VycmVudCA8LSBFb2ZcbiAgZWxzZSAoXG4gICAgbWF0Y2ggbmV4dF9jaGFyIHQgd2l0aFxuICAgIHwgYyB3aGVuIGlzX3doaXRlc3BhY2UgYyAtPlxuICAgICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgICB0LmN1cnJlbnQgPC0gV2hpdGVfc3BhY2VcbiAgICB8ICc6JyAtPiBvbmVfY2hhcl90b2tlbiB0IENvbG9uXG4gICAgfCAnOycgLT4gb25lX2NoYXJfdG9rZW4gdCBTZW1pX2NvbG9uXG4gICAgfCAneycgLT4gb25lX2NoYXJfdG9rZW4gdCBMY3VybHlcbiAgICB8ICd9JyAtPiBvbmVfY2hhcl90b2tlbiB0IFJjdXJseVxuICAgIHwgJ1snIC0+IG9uZV9jaGFyX3Rva2VuIHQgTGJyYWNrZXRcbiAgICB8ICddJyAtPiBvbmVfY2hhcl90b2tlbiB0IFJicmFja2V0XG4gICAgfCAnKCcgLT4gb25lX2NoYXJfdG9rZW4gdCBMcGFyZW5cbiAgICB8ICcpJyAtPiBvbmVfY2hhcl90b2tlbiB0IFJwYXJlblxuICAgIHwgJywnIC0+IG9uZV9jaGFyX3Rva2VuIHQgQ29tbWFcbiAgICB8ICgnXFwnJyB8ICdcIicpIGFzIHF1b3RlIC0+IHF1b3RlZF9zdHJpbmcgdCB+cXVvdGVcbiAgICB8ICgnMCcgLi4gJzknIHwgJy4nIHwgJysnIHwgJy0nKSB3aGVuIHN0YXJ0X251bSB0IC0+XG4gICAgICBudW1iZXJfb3JfcGVyY2VudGFnZV9vcl9kaW1lbnNpb24gdFxuICAgIHwgJy8nIC0+IGNvbW1lbnRfb3JfZGVsaW0gdFxuICAgIHwgJyMnIC0+IGhhc2hfb3JfZGVsaW0gdFxuICAgIHwgJ0AnIHdoZW4gc3RhcnRfaWRlbnQgfnByZWZpeDpcIkBcIiB0IC0+IGF0a2V5d29yZCB0XG4gICAgfCAndScgLT4gdXJpX29yX2lkZW50X29yX2Z1bmN0aW9uIHRcbiAgICB8IF8gLT5cbiAgICAgIGlmIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJcIiB0XG4gICAgICB0aGVuIGlkZW50X29yX2Z1bmN0aW9uIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgKCogdGhpcyBpcyB3ZWlyZCBidXQgdGhlIHNwZWMgaXMgd2VpcmQgKilcbiAgICAgICAgdC5jdXJyZW50IDwtIERlbGltKSlcbjs7XG5cbmxldCBuZXh0IHQgPVxuICAoKiBNYWtlIHN1cmUgd2UgYXJlIGlkZW1wb3RlbnQgd2hlbiB3ZSBnZXQgaW50byB0aGUgZXJyb3Igc3RhdGUgKilcbiAgaWYgVG9rZW4uZXF1YWwgdC5jdXJyZW50IEVycm9yXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgdHJ5IG5leHQgdCB3aXRoXG4gICAgfCBFcnJvcl9oYXBwZW5lZCAtPiAoKSlcbjs7XG5cbmxldCBjcmVhdGUgcyA9XG4gICgqIGN1cnJlbnQgaXMgZHVtbXkgYW5kIHdpbGwgYmUgc2V0IGJ5IGNhbGwgdG8gbmV4dCAqKVxuICBsZXQgdCA9IHsgczsgb2ZmID0gMDsgbGVuID0gMDsgY3VycmVudCA9IFdoaXRlX3NwYWNlIH0gaW5cbiAgbmV4dCB0O1xuICB0XG47O1xuXG5sZXQgc2xpY2UgdCA9IHQub2ZmLCB0LmxlblxubGV0IGN1cnJlbnQgdCA9IHQuY3VycmVudFxuXG5sZXQgY3VycmVudF90ZXh0IHQgPVxuICBpZiBUb2tlbi5lcXVhbCB0LmN1cnJlbnQgRW9mXG4gIHRoZW4gXCJcIlxuICBlbHNlIChcbiAgICBsZXQgcG9zLCBsZW4gPSBzbGljZSB0IGluXG4gICAgU3RyaW5nLnN1YiB0LnMgfnBvcyB+bGVuKVxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCB0ID0gY3JlYXRlIHMgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbGV0IHN0YXJ0LCBsZW4gPSBzbGljZSB0IGluXG4gICAgbGV0IGFjYyA9IChjdXJyZW50IHQsIHN0YXJ0LCBsZW4pIDo6IGFjYyBpblxuICAgIGlmIFRva2VuLmVxdWFsIChjdXJyZW50IHQpIEVvZiB8fCBUb2tlbi5lcXVhbCAoY3VycmVudCB0KSBFcnJvclxuICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgZWxzZSAoXG4gICAgICBuZXh0IHQ7XG4gICAgICBsb29wIGFjYylcbiAgaW5cbiAgbG9vcCBbXVxuOztcblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IHRlc3QgcyA9XG4gICAgICBwcmludF9lbmRsaW5lXG4gICAgICAgIChTZXhwLnRvX3N0cmluZ19tYWNoIChbJXNleHBfb2Y6IChUb2tlbi50ICogaW50ICogaW50KSBsaXN0XSAodG9fbGlzdCBzKSkpXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImVvZlwiID1cbiAgICAgIHRlc3QgXCJcIjtcbiAgICAgIFslZXhwZWN0IHt8KChFb2YgMCAwKSl8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwic2ltcGxlX3Rva2Vuc1wiID1cbiAgICAgIHRlc3QgXCIpKHt9W107OlwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChScGFyZW4gMCAxKShMcGFyZW4gMSAxKShMY3VybHkgMiAxKShSY3VybHkgMyAxKShMYnJhY2tldCA0IDEpKFJicmFja2V0IDUgMSkoU2VtaV9jb2xvbiA2IDEpKENvbG9uIDcgMSkoRW9mIDggMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJpZGVudFwiID1cbiAgICAgIHRlc3QgXCItZm9vLWJhcjogYmF6XCI7XG4gICAgICB0ZXN0IFwiLWZvby1iYXIoXCI7XG4gICAgICB0ZXN0IFwiQGZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCJALWZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCJALS1mb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiLS12YXJcIjtcbiAgICAgIHRlc3QgXCJSR0JBXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA4KShDb2xvbiA4IDEpKFdoaXRlX3NwYWNlIDkgMSkoSWRlbnQgMTAgMykoRW9mIDEzIDApKVxuICAgICgoRnVuY3Rpb24gMCA5KShFb2YgOSAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDgpKEVvZiA4IDApKVxuICAgICgoQXRrZXl3b3JkIDAgOSkoRW9mIDkgMCkpXG4gICAgKChBdGtleXdvcmQgMCAxMCkoRW9mIDEwIDApKVxuICAgICgoSWRlbnQgMCA1KShFb2YgNSAwKSlcbiAgICAoKElkZW50IDAgNCkoRW9mIDQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ3aGl0ZXNwYWNlXCIgPVxuICAgICAgdGVzdCBcIiAgXCI7XG4gICAgICBbJWV4cGVjdCB7fCgoV2hpdGVfc3BhY2UgMCAyKShFb2YgMiAwKSl8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwibnVtYmVyc1wiID1cbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWVuXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVlbVwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41aW5cIjtcbiAgICAgIHRlc3QgXCJsaW5lLWhlaWdodDogM2NtXCI7XG4gICAgICB0ZXN0IFwibGluZS1oZWlnaHQ6IDEyMCVcIjtcbiAgICAgIHRlc3QgXCJncmlkOiAwIDEgZm9vXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjUtaW5cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUrMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUtMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUrMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUtMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZTIwXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCAxMSkoQ29sb24gMTEgMSkoV2hpdGVfc3BhY2UgMTIgMSkoRGltZW5zaW9uIDEzIDMpKEVvZiAxNiAwKSlcbiAgICAoKElkZW50IDAgMTEpKENvbG9uIDExIDEpKFdoaXRlX3NwYWNlIDEyIDEpKFBlcmNlbnRhZ2UgMTMgNCkoRW9mIDE3IDApKVxuICAgICgoSWRlbnQgMCA0KShDb2xvbiA0IDEpKFdoaXRlX3NwYWNlIDUgMSkoTnVtYmVyIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCAxKShXaGl0ZV9zcGFjZSA5IDEpKElkZW50IDEwIDMpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDYpKEVvZiAxNCAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDYpKEVvZiAxNCAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDYpKEVvZiAxNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImJhZGx5X3F1b3RlZFwiID1cbiAgICAgIHRlc3QgXCInZm9vIGJhclwiO1xuICAgICAgdGVzdCBcIidcIjtcbiAgICAgIHRlc3QgXCInXFxcXCdcIjtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgKChFcnJvciAwIDgpKVxuICAgICgoRXJyb3IgMCAxKSlcbiAgICAoKEVycm9yIDAgMykpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJxdW90ZWRcIiA9XG4gICAgICB0ZXN0IHt8J0ZvbyAnXCJCYXJcIic7JyAnXFwnJyBcIlxcXCJcInx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChTdHJpbmcgMCA2KShTdHJpbmcgNiA1KShTdHJpbmcgMTEgMykoV2hpdGVfc3BhY2UgMTQgMSkoU3RyaW5nIDE1IDQpKFdoaXRlX3NwYWNlIDE5IDEpKFN0cmluZyAyMCA0KShFb2YgMjQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJjb2xvcnNcIiA9XG4gICAgICB0ZXN0IHt8Y29sb3I6ICNmMDB8fTtcbiAgICAgIHRlc3Qge3xjb2xvcjogcmdiKDI1NSwwLDApfH07XG4gICAgICB0ZXN0IHt8Y29sb3I6IHJnYigyNTUsMCwwKXx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEhhc2ggNyA0KShFb2YgMTEgMCkpXG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShGdW5jdGlvbiA3IDQpKE51bWJlciAxMSAzKShDb21tYSAxNCAxKShOdW1iZXIgMTUgMSkoQ29tbWEgMTYgMSkoTnVtYmVyIDE3IDEpKFJwYXJlbiAxOCAxKShFb2YgMTkgMCkpXG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShGdW5jdGlvbiA3IDQpKE51bWJlciAxMSAzKShDb21tYSAxNCAxKShOdW1iZXIgMTUgMSkoQ29tbWEgMTYgMSkoTnVtYmVyIDE3IDEpKFJwYXJlbiAxOCAxKShFb2YgMTkgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJpbXBvcnRcIiA9XG4gICAgICB0ZXN0IHt8QGltcG9ydCBcImZvby5iYXJcIjt8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoQXRrZXl3b3JkIDAgNykoV2hpdGVfc3BhY2UgNyAxKShTdHJpbmcgOCA5KShTZW1pX2NvbG9uIDE3IDEpKEVvZiAxOCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInJlZCBleGFtcGxlXCIgPVxuICAgICAgdGVzdCBcInJlZC0tPlwiO1xuICAgICAgWyVleHBlY3Qge3wgKChJZGVudCAwIDUpKERlbGltIDUgMSkoRW9mIDYgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ1cmxcIiA9XG4gICAgICB0ZXN0IHt8dXJsKCBcImh0dHA6Ly93d3d3Lmdvb2dsZS5jb21cIil8fTtcbiAgICAgIHRlc3Qge3x1cmwoJ2h0dHA6Ly93d3d3Lmdvb2dsZS5jb20nKXx9O1xuICAgICAgdGVzdCB7fHVybCgnaHR0cDovL3d3d3cuZ29vZ2xlLmNvbScgKXx9O1xuICAgICAgdGVzdCB7fHVybCggIGh0dHA6Ly93d3d3Lmdvb2dsZS5jb20gKXx9O1xuICAgICAgdGVzdCB7fHVybCggIGh0dHA6Ly93d3d3Lmdvb2dsZS5cImNvbSApfH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoRnVuY3Rpb24gMCA0KShXaGl0ZV9zcGFjZSA0IDEpKFN0cmluZyA1IDI0KShScGFyZW4gMjkgMSkoRW9mIDMwIDApKVxuICAgICgoRnVuY3Rpb24gMCA0KShTdHJpbmcgNCAyNCkoUnBhcmVuIDI4IDEpKEVvZiAyOSAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgNCkoU3RyaW5nIDQgMjQpKFdoaXRlX3NwYWNlIDI4IDEpKFJwYXJlbiAyOSAxKShFb2YgMzAgMCkpXG4gICAgKChVcmkgMCAzMCkoRW9mIDMwIDApKVxuICAgICgoRXJyb3IgMCAyNSkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJlc2NhcGVcIiA9XG4gICAgICB0ZXN0IHt8XCJ0ZXN0XFwxOWFiZjJcXDJcInx9O1xuICAgICAgdGVzdCB7fFwiXFwwMTBcXHhGRmFcXG8xMjNcXG5cXFxcXFx1ezEyMzQ1fWFh8J+QqvCfkKrwn5Cq8J+QqvCfkKpcInx9O1xuICAgICAgdGVzdCB7fFwi4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrZcInx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKFN0cmluZyAwIDE1KShFb2YgMTUgMCkpXG4gICAgKChTdHJpbmcgMCA1MSkoRW9mIDUxIDApKVxuICAgICgoU3RyaW5nIDAgNDkpKEVvZiA0OSAwKSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIigqIFJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlcnMuICBBIHBhcnNlciByZXR1cm5zIGZhbHNlIGlmIGJhc2VkIG9uIGFcbiAgIHNpbmdsZSB0b2tlbiBsb29rYWhlYWQgaXQgZGVjaWRlcyB0aGF0IHRoZSBnaXZlbiB0ZXh0IGNhbiBub3QgYmVcbiAgIHBhcnNlZC4gIEFueSBvdGhlciBwYXJzZSBlcnJvcnMgYXJlIGhhbmRsZWQgYnkgcmFpc2luZyBleGNlcHRpb25zLlxuXG4gICBTb21lIHBhcnNlcnMgcmV0dXJuIHVuaXQgYmVjYXVzZSB3ZSBvbmx5IGNhbGwgdGhlbSB3aGVuIGEgZmFpbHVyZVxuICAgdG8gcGFyc2UgaW1wbGllcyBhIHBhcnNlIGVycm9yIChhbmQgbm90IHRoYXQgc29tZSBwYXJzZXIgaGlnaGVyIHVwXG4gICBpbiB0aGUgY2FsbCBjaGFpbiBzaG91bGQgdHJ5IHRvIHBhcnNlIHNvbWV0aGluZyBlbHNlKS5cblxuICAgRm9yIHNpbXBsaWNpdHkgdGhlIHBhcnNlcnMgdGhlbXNlbHZlcyBqdXN0IHZhbGlkYXRlIGFuZCBkb24ndFxuICAgcHJvZHVjZSBhbnkgdmFsdWVzLiAgVGhhdCBsZWFkcyB0byBhIGZldyB1bmVsZWdhbnQgY29uc3RydWN0c1xuICAgKHByaW1hcmlseSBpbiBkZWNsYXJhdGlvbiksIGJ1dCBtZWFucyB3ZSBvdGhlcndpc2UgaGF2ZSByYXRoZXJcbiAgIHNpbXBsZSBjb2RlIHRoYXQgYWxzbyBhbGxvY2F0ZXMgdmVyeSBsaXR0bGUuXG4qKVxuXG5vcGVuIENvcmVcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHJlYyBuZXh0IGN0ID1cbiAgQ3NzX3Rva2VuaXplci5uZXh0IGN0O1xuICBpZiBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgQ29tbWVudCkgdGhlbiBuZXh0IGN0IGVsc2UgKClcbjs7XG5cbmxldCBza2lwX3doaXRlX3NwYWNlIGN0ID1cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIFdoaXRlX3NwYWNlKSBkb1xuICAgIG5leHQgY3RcbiAgZG9uZVxuOztcblxubGV0IGFjY2VwdCBjdCBleHBlY3RlZCA9XG4gIGxldCBnb3QgPSBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QgaW5cbiAgaWYgQ3NzX3Rva2VuaXplci5Ub2tlbi5lcXVhbCBnb3QgZXhwZWN0ZWRcbiAgdGhlbiAoXG4gICAgbmV4dCBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgZXhwZWN0IGN0IGV4cGVjdGVkID1cbiAgbGV0IGdvdCA9IENzc190b2tlbml6ZXIuY3VycmVudCBjdCBpblxuICBpZiBDc3NfdG9rZW5pemVyLlRva2VuLmVxdWFsIGdvdCBleHBlY3RlZFxuICB0aGVuIG5leHQgY3RcbiAgZWxzZVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlVuZXhwZWN0ZWQgdG9rZW5cIlxuICAgICAgICAgIChleHBlY3RlZCA6IENzc190b2tlbml6ZXIuVG9rZW4udClcbiAgICAgICAgICAoZ290IDogQ3NzX3Rva2VuaXplci5Ub2tlbi50KV1cbjs7XG5cbmxldCByZWMgbWFueSAoY3QgOiBDc3NfdG9rZW5pemVyLnQpIGYgPSBpZiBmIGN0IHRoZW4gbWFueSBjdCBmIGVsc2UgKClcblxubGV0IG1hbnkxIChjdCA6IENzc190b2tlbml6ZXIudCkgZiA9XG4gIGlmIGYgY3RcbiAgdGhlbiAoXG4gICAgbWFueSBjdCBmO1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCByZWMgYW55IGN0IDogYm9vbCA9XG4gIGxldCByZXMgPVxuICAgIG1hdGNoIENzc190b2tlbml6ZXIuY3VycmVudCBjdCB3aXRoXG4gICAgfCBJZGVudCB8IE51bWJlciB8IFBlcmNlbnRhZ2UgfCBEaW1lbnNpb24gfCBTdHJpbmcgfCBVcmkgfCBEZWxpbSB8IEhhc2ggfCBDb21tYSAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHRydWVcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIG1hbnkgY3QgYW55O1xuICAgICAgZXhwZWN0IGN0IFJwYXJlbjtcbiAgICAgIHRydWVcbiAgICB8IExwYXJlbiAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBleHBlY3RfYW55IGN0O1xuICAgICAgZXhwZWN0IGN0IFJwYXJlbjtcbiAgICAgIHRydWVcbiAgICB8IExicmFja2V0IC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGV4cGVjdF9hbnkgY3Q7XG4gICAgICBleHBlY3QgY3QgUmJyYWNrZXQ7XG4gICAgICB0cnVlXG4gICAgfCBSY3VybHkgfCBScGFyZW4gfCBSYnJhY2tldCAtPiBmYWxzZVxuICAgIHwgTGN1cmx5IC0+IGZhbHNlXG4gICAgfCBBdGtleXdvcmQgfCBDb2xvbiB8IFNlbWlfY29sb24gLT4gZmFsc2VcbiAgICB8IENvbW1lbnQgfCBXaGl0ZV9zcGFjZSB8IEVvZiB8IEVycm9yIC0+IGZhbHNlXG4gIGluXG4gIGlmIHJlcyB0aGVuIHNraXBfd2hpdGVfc3BhY2UgY3QgZWxzZSAoKTtcbiAgcmVzXG5cbmFuZCBleHBlY3RfYW55IGN0ID0gaWYgYW55IGN0IHRoZW4gKCkgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDxhbnk+XCJdXG5cbmFuZCB2YWx1ZTAgY3QgPVxuICBhbnkgY3RcbiAgfHwgYmxvY2sgY3RcbiAgfHxcbiAgaWYgYWNjZXB0IGN0IEF0a2V5d29yZFxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2VcblxuYW5kIHZhbHVlIGN0ID0gbWFueTEgY3QgdmFsdWUwXG5cbmFuZCBibG9jayBjdCA6IGJvb2wgPVxuICBpZiBhY2NlcHQgY3QgTGN1cmx5XG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgbWFueSBjdCAoZnVuIGN0IC0+XG4gICAgICB2YWx1ZTAgY3RcbiAgICAgIHx8XG4gICAgICBpZiBhY2NlcHQgY3QgU2VtaV9jb2xvblxuICAgICAgdGhlbiAoXG4gICAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICAgIHRydWUpXG4gICAgICBlbHNlIGZhbHNlKTtcbiAgICBleHBlY3QgY3QgUmN1cmx5O1xuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuXG5hbmQgZXhwZWN0X3ZhbHVlIGN0ID0gaWYgdmFsdWUgY3QgdGhlbiAoKSBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPHZhbHVlPlwiXVxuXG5sZXQgZGVjbGFyYXRpb24gY3QgPVxuICBsZXQgaWRlbnRfc3RhcnQsIGlkZW50X2xlbiA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgaW5cbiAgaWYgYWNjZXB0IGN0IElkZW50XG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgZXhwZWN0IGN0IENvbG9uO1xuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgbGV0IHZhbHVlX3N0YXJ0ID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCB8PiBmc3QgaW5cbiAgICBleHBlY3RfdmFsdWUgY3Q7XG4gICAgbGV0IG5leHRfdG9rZW5fc3RhcnQgPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IHw+IGZzdCBpblxuICAgIGxldCBzb3VyY2UgPSBDc3NfdG9rZW5pemVyLnNvdXJjZSBjdCBpblxuICAgIFNvbWVcbiAgICAgICggU3RyaW5nLnN1YiBzb3VyY2UgfnBvczppZGVudF9zdGFydCB+bGVuOmlkZW50X2xlblxuICAgICAgLCBTdHJpbmcucnN0cmlwXG4gICAgICAgICAgKFN0cmluZy5zdWIgc291cmNlIH5wb3M6dmFsdWVfc3RhcnQgfmxlbjoobmV4dF90b2tlbl9zdGFydCAtIHZhbHVlX3N0YXJ0KSkgKSlcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgZXhwZWN0X2RlY2xhcmF0aW9uIGN0ID1cbiAgbWF0Y2ggZGVjbGFyYXRpb24gY3Qgd2l0aFxuICB8IFNvbWUgKGZpZWxkLCB2YWx1ZSkgLT4gZmllbGQsIHZhbHVlXG4gIHwgTm9uZSAtPiByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDxkZWNsYXJhdGlvbj5cIl1cbjs7XG5cbigqIEFzIHBlcjogaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zdHlsZS1hdHRyL1xuICAgZGVjbGFyYXRpb24tbGlzdFxuICAgOiBTKiBkZWNsYXJhdGlvbj8gWyAnOycgUyogZGVjbGFyYXRpb24/IF0qXG4gICA7XG4qKVxubGV0IGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IGN0ID1cbiAgbGV0IHJlcyA9IHJlZiBbXSBpblxuICBsZXQgYWRkIGt2ID1cbiAgICBtYXRjaCBrdiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChrLCB2KSAtPiByZXMgOj0gKGssIHYpIDo6ICFyZXNcbiAgaW5cbiAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgYWRkIChkZWNsYXJhdGlvbiBjdCk7XG4gIG1hbnkgY3QgKGZ1biBjdCAtPlxuICAgIGlmIGFjY2VwdCBjdCBTZW1pX2NvbG9uXG4gICAgdGhlbiAoXG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgYWRkIChkZWNsYXJhdGlvbiBjdCk7XG4gICAgICB0cnVlKVxuICAgIGVsc2UgZmFsc2UpO1xuICBMaXN0LnJldiAhcmVzXG47O1xuXG5sZXQgcGFyc2UgcGFyc2VyX2YgcyA9XG4gIGxldCBjdCA9IENzc190b2tlbml6ZXIuY3JlYXRlIHMgaW5cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIENvbW1lbnQpIGRvXG4gICAgQ3NzX3Rva2VuaXplci5uZXh0IGN0XG4gIGRvbmU7XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICBsZXQgcmVzID0gcGFyc2VyX2YgY3QgaW5cbiAgICBleHBlY3QgY3QgRW9mO1xuICAgIHJlcylcbjs7XG5cbmxldCBwcmludF90b2tlbnMgcyA9XG4gIGxldCBjdCA9IENzc190b2tlbml6ZXIuY3JlYXRlIHMgaW5cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4obm90IChUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgRW9mKSkgZG9cbiAgICBwcmludF9zIChDc3NfdG9rZW5pemVyLlRva2VuLnNleHBfb2ZfdCAoQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0KSk7XG4gICAgQ3NzX3Rva2VuaXplci5uZXh0IGN0XG4gIGRvbmVcbjs7XG5cbmxldCB2YWxpZGF0ZV92YWx1ZSA9IHBhcnNlIGV4cGVjdF92YWx1ZVxubGV0IHBhcnNlX2RlY2xhcmF0aW9uX2xpc3QgcyA9IHBhcnNlIGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IHNcblxubGV0IHRlc3RfcGFyc2VyIHAgc2V4cF9vZl9hcmcgcyA9XG4gIGxldCByID0gcGFyc2UgcCBzIGluXG4gIHByaW50ZiAhXCIlcyAtLT4gJXtzZXhwOmFyZyBPcl9lcnJvci50fVxcblwiIHMgclxuOztcblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiXCIgPVxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgXCIwIDRweCA4cHggMCBSR0JBKHZhcigtLWpzLXRleHQtY29sb3ItcmdiKSwgMC4xMiksIDAgMnB4IDRweCAwIFxcXG4gICAgICAgICBSR0JBKHZhcigtLWpzLXRleHQtY29sb3ItcmdiKSwgMC4wOClcIlxuICAgICAgaW5cbiAgICAgIHByaW50X3Rva2VucyB2YWx1ZTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBGdW5jdGlvblxuICAgIEZ1bmN0aW9uXG4gICAgSWRlbnRcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRnVuY3Rpb25cbiAgICBGdW5jdGlvblxuICAgIElkZW50XG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFJwYXJlbiB8fV07XG4gICAgICBwcmludF9zIFslbWVzc2FnZSAodmFsaWRhdGVfdmFsdWUgdmFsdWUgOiB1bml0IE9yX2Vycm9yLnQpXTtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgKFwidmFsaWRhdGVfdmFsdWUgdmFsdWVcIiAoT2sgKCkpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidmFsdWVzXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfdmFsdWUgVW5pdC5zZXhwX29mX3QgaW5cbiAgICAgIHRlc3QgXCJ4XCI7XG4gICAgICB0ZXN0IFwiM1wiO1xuICAgICAgdGVzdCBcIjNpblwiO1xuICAgICAgdGVzdCBcIjMlXCI7XG4gICAgICB0ZXN0IFwiI2ZmZlwiO1xuICAgICAgdGVzdCBcIjEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiJ0hlbGxvIFdvcmxkJ1wiO1xuICAgICAgdGVzdCBcInJnYigwLDAsMClcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICB4IC0tPiAoT2sgKCkpXG4gICAgICAzIC0tPiAoT2sgKCkpXG4gICAgICAzaW4gLS0+IChPayAoKSlcbiAgICAgIDMlIC0tPiAoT2sgKCkpXG4gICAgICAjZmZmIC0tPiAoT2sgKCkpXG4gICAgICAxIDAgYXV0byAtLT4gKE9rICgpKVxuICAgICAgJ0hlbGxvIFdvcmxkJyAtLT4gKE9rICgpKVxuICAgICAgcmdiKDAsMCwwKSAtLT4gKE9rICgpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZGVjbGFyYXRpb25cIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbiBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ10gaW5cbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcImNvbnRlbnQ6ICdIZWxsbyBXb3JsZCdcIjtcbiAgICAgIHRlc3QgXCJjb250ZW50OiBmb287XCI7XG4gICAgICAoKiBTZW1pJ3MgYXJlIGhhbmRsZWQgaW4gZGVjbGFyYXRpb24gbGlzdCAqKVxuICAgICAgdGVzdCBcImNvbnRlbnQ6IGJhciBcIjtcbiAgICAgICgqIGJ1dCB3aGl0ZXNwYWNlIGlzIGhhbmRsZWQgaW4gZGVjbGFyYXRpb24gKGFueSByZWFsbHkpICopXG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgZmxleDogMSAwIGF1dG8gLS0+IChPayAoZmxleCBcIjEgMCBhdXRvXCIpKVxuICAgICAgY29udGVudDogJ0hlbGxvIFdvcmxkJyAtLT4gKE9rIChjb250ZW50IFwiJ0hlbGxvIFdvcmxkJ1wiKSlcbiAgICAgIGNvbnRlbnQ6IGZvbzsgLS0+IChFcnJvciAoXCJVbmV4cGVjdGVkIHRva2VuXCIgKGV4cGVjdGVkIEVvZikgKGdvdCBTZW1pX2NvbG9uKSkpXG4gICAgICBjb250ZW50OiBiYXIgIC0tPiAoT2sgKGNvbnRlbnQgYmFyKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInVuaWNvZGVcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbiBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ10gaW5cbiAgICAgIHRlc3QgXCJjb250ZW50OiAn4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrYnXCI7XG4gICAgICBwcmludF9lbmRsaW5lIChTZXhwLnRvX3N0cmluZyAoU2V4cC5BdG9tIFwi4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrZcIikpO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBjb250ZW50OiAn4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrYnIC0tPiAoT2tcbiAgICAgKGNvbnRlbnRcbiAgICAgIFwiJ1xcMjI2XFwxMzRcXDE0NCBcXDIyNlxcMTM0XFwxNDUgXFwyMjZcXDEzNFxcMTQ2IFxcMjI2XFwxMzRcXDE0NyBcXDIyNlxcMTM0XFwxNDggXFwyMjZcXDEzNFxcMTQ5IFxcMjI2XFwxMzVcXDE3MCBcXDIyNlxcMTM0XFwxODUgXFwyMjZcXDE3MlxcMTM2IFxcMjI2XFwxMzRcXDE1MiBcXDIyNlxcMTU5XFwxOTAgXFwyMjZcXDEzNFxcMTgyJ1wiKSlcbiAgICBcIlxcMjI2XFwxMzRcXDE0NCBcXDIyNlxcMTM0XFwxNDUgXFwyMjZcXDEzNFxcMTQ2IFxcMjI2XFwxMzRcXDE0NyBcXDIyNlxcMTM0XFwxNDggXFwyMjZcXDEzNFxcMTQ5IFxcMjI2XFwxMzVcXDE3MCBcXDIyNlxcMTM0XFwxODUgXFwyMjZcXDE3MlxcMTM2IFxcMjI2XFwxMzRcXDE1MiBcXDIyNlxcMTU5XFwxOTAgXFwyMjZcXDEzNFxcMTgyXCIgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImRlY2xhcmF0aW9uIGxpc3RcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IFslc2V4cF9vZjogKHN0cmluZyAqIHN0cmluZykgbGlzdF0gaW5cbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvO1wiO1xuICAgICAgdGVzdFxuICAgICAgICBcImJhY2tncm91bmQ6ICM1ZDlhYjIgdXJsKFxcXCJpbWdfdHJlZS5wbmdcXFwiKSBuby1yZXBlYXQgdG9wIGxlZnQ7bWFyZ2luLWxlZnQ6IDIwMHB4XCI7XG4gICAgICB0ZXN0IFwiOzs7OztcIjtcbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0byA7OyBvdGhlciA6IHNhIFwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBmbGV4OiAxIDAgYXV0byAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpKSlcbiAgICBmbGV4OiAxIDAgYXV0bzsgLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSkpXG4gICAgYmFja2dyb3VuZDogIzVkOWFiMiB1cmwoXCJpbWdfdHJlZS5wbmdcIikgbm8tcmVwZWF0IHRvcCBsZWZ0O21hcmdpbi1sZWZ0OiAyMDBweCAtLT4gKE9rXG4gICAgICgoYmFja2dyb3VuZCBcIiM1ZDlhYjIgdXJsKFxcXCJpbWdfdHJlZS5wbmdcXFwiKSBuby1yZXBlYXQgdG9wIGxlZnRcIilcbiAgICAgIChtYXJnaW4tbGVmdCAyMDBweCkpKVxuICAgIDs7Ozs7IC0tPiAoT2sgKCkpXG4gICAgZmxleDogMSAwIGF1dG8gOzsgb3RoZXIgOiBzYSAgLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSAob3RoZXIgc2EpKSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBDb3JlLkNvcmVfc3RhYmxlXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgKCoqIChmaWVsZCAqIHZhbHVlKSBsaXN0LiAgV2hlcmUgdmFsdWUgc2hvdWxkIGJlIGVzY2FwZWQgLyBxdW90ZWRcbiAgICAgICAgYXMgbmVjZXNzYXJ5IGFzIHBlciBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI3J1bGUtc2V0cy4gKilcbiAgICB0eXBlIHQgPSAoc3RyaW5nICogc3RyaW5nKSBsaXN0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pb11cbiAgZW5kXG5lbmRcblxub3BlbiBDb3JlXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG50eXBlIGNzc19nbG9iYWxfdmFsdWVzID1cbiAgWyBgSW5oZXJpdFxuICB8IGBJbml0aWFsXG4gIF1cbltAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkID0gcmVmIChmdW4gZGlnaXRzIGYgLT4gc3ByaW50ZiBcIiUuKmZcIiBkaWdpdHMgZilcbmVuZFxuXG5sZXQgZjJzIGRpZ2l0cyBmID0gIVByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgZGlnaXRzIGZcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFJHQkEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgciA6IGludFxuICAgICAgICA7IGcgOiBpbnRcbiAgICAgICAgOyBiIDogaW50XG4gICAgICAgIDsgYSA6IFBlcmNlbnQudCBvcHRpb25cbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfnIgfmcgfmIgP2EgKCkgPSB7IHI7IGc7IGI7IGEgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEhTTEEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaCA6IGludFxuICAgICAgICA7IHMgOiBQZXJjZW50LnRcbiAgICAgICAgOyBsIDogUGVyY2VudC50XG4gICAgICAgIDsgYSA6IFBlcmNlbnQudCBvcHRpb25cbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfmggfnMgfmwgP2EgKCkgPSB7IGg7IHM7IGw7IGEgfVxuICAgIGVuZFxuXG4gICAgdHlwZSB0ID1cbiAgICAgIFsgYFJHQkEgb2YgUkdCQS50XG4gICAgICB8IGBIU0xBIG9mIEhTTEEudFxuICAgICAgfCBgTmFtZSBvZiBzdHJpbmdcbiAgICAgIHwgYEhleCBvZiBzdHJpbmdcbiAgICAgIHwgYFZhciBvZiBzdHJpbmdcbiAgICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgOiBbPCB0IF0gLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFJHQkEgeyBSR0JBLnI7IGc7IGI7IGEgfSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBbJXN0cmluZyBcInJnYigle3IjSW50fSwle2cjSW50fSwle2IjSW50fSlcIl1cbiAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgWyVzdHJpbmcgXCJyZ2JhKCV7ciNJbnR9LCV7ZyNJbnR9LCV7YiNJbnR9LCV7ZjJzIDIgKFBlcmNlbnQudG9fbXVsdCBwKX0pXCJdKVxuICAgIHwgYEhTTEEgeyBIU0xBLmg7IHM7IGw7IGEgfSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgWyVzdHJpbmdcbiAgICAgICAgICAgXCJoc2woJXtoI0ludH0sJXtmMnMgMCAoUGVyY2VudC50b19wZXJjZW50YWdlIHMpfSUsJXtmMnMgMCBcXFxuICAgICAgICAgICAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBsKX0lKVwiXVxuICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICBbJXN0cmluZ1xuICAgICAgICAgICBcImhzbGEoJXtoI0ludH0sJXtmMnMgMCAoUGVyY2VudC50b19wZXJjZW50YWdlIHMpfSUsJXtmMnMgMCBcXFxuICAgICAgICAgICAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBsKX0lLCV7ZjJzIDIgKFBlcmNlbnQudG9fbXVsdCBwKX0pXCJdKVxuICAgIHwgYE5hbWUgbmFtZSAtPiBuYW1lXG4gICAgfCBgSGV4IGhleCAtPiBoZXhcbiAgICB8IGBWYXIgdmFyIC0+IFslc3RyaW5nIFwidmFyKCV7dmFyfSlcIl1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxpZ25tZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGVmdFxuICAgIHwgYFJpZ2h0XG4gICAgfCBgQ2VudGVyICgqIGhvcml6b250YWwgKilcbiAgICB8IGBUb3BcbiAgICB8IGBCb3R0b21cbiAgICB8IGBNaWRkbGUgKCogdmVydGljYWwgKilcbiAgICB8IGBKdXN0aWZ5ICgqIHRleHQtYWxpZ24gKGluIGFkZGl0aW9uIHRvIFtob3Jpem9udGFsXSkgKilcbiAgICB8IGBTdXBlciAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgYFN1YiAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgSnVzdGlmeSAtPiBcImp1c3RpZnlcIlxuICAgIHwgYFRvcCAtPiBcInRvcFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgQm90dG9tIC0+IFwiYm90dG9tXCJcbiAgICB8IGBTdXBlciAtPiBcInN1cGVyXCJcbiAgICB8IGBTdWIgLT4gXCJzdWJcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgUmF3IG9mIHN0cmluZ1xuICAgIHwgYENoIG9mIGZsb2F0XG4gICAgfCBgUmVtIG9mIGZsb2F0XG4gICAgfCBgRW0gb2YgaW50XG4gICAgfCBgRW1fZmxvYXQgb2YgZmxvYXRcbiAgICB8IGBQZXJjZW50IG9mIFBlcmNlbnQudFxuICAgIHwgYFB0IG9mIGZsb2F0XG4gICAgfCBgUHggb2YgaW50XG4gICAgfCBgUHhfZmxvYXQgb2YgZmxvYXRcbiAgICB8IGBWaCBvZiBQZXJjZW50LnRcbiAgICB8IGBWdyBvZiBQZXJjZW50LnRcbiAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgXVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYFJhdyBzIC0+IHNcbiAgICB8IGBDaCBjIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBjfWNoXCJdXG4gICAgfCBgUmVtIGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9cmVtXCJdXG4gICAgfCBgRW0gaSAtPiBbJXN0cmluZyBcIiV7aSNJbnR9ZW1cIl1cbiAgICB8IGBFbV9mbG9hdCBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfWVtXCJdXG4gICAgfCBgUGVyY2VudCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfSVcIl1cbiAgICB8IGBQdCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBwfXB0XCJdXG4gICAgfCBgUHggaSAtPiBbJXN0cmluZyBcIiV7aSNJbnR9cHhcIl1cbiAgICB8IGBQeF9mbG9hdCBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfXB4XCJdXG4gICAgfCBgVmggcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX12aFwiXVxuICAgIHwgYFZ3IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9dndcIl1cbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICA7O1xuXG4gIGxldCBwZXJjZW50MTAwID0gYFBlcmNlbnQgKFBlcmNlbnQub2ZfcGVyY2VudGFnZSAxMDAuKVxuZW5kXG5cbm1vZHVsZSBBdXRvX29yX2xlbmd0aCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYEF1dG9cbiAgICB8IExlbmd0aC50XG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8ICNMZW5ndGgudCBhcyBsIC0+IExlbmd0aC50b19zdHJpbmdfY3NzIGxcbiAgOztcbmVuZFxuXG5sZXQgdmFsdWVfbWFwIG8gfmYgPSBPcHRpb24udmFsdWVfbWFwIG8gfmRlZmF1bHQ6XCJcIiB+ZlxubGV0IGNvbWJpbmUgdDEgdDIgPSB0MSBAIHQyXG5sZXQgKCBAPiApID0gY29tYmluZVxubGV0IGNvbmNhdCBsID0gTGlzdC5jb25jYXQgbFxubGV0IHRvX3N0cmluZ19saXN0ID0gRm4uaWRcblxubGV0IHRvX3N0cmluZ19jc3MgdCA9XG4gIExpc3QubWFwIHQgfmY6KGZ1biAoZmllbGQsIHZhbHVlKSAtPiBbJXN0cmluZyBcIiV7ZmllbGR9OiAle3ZhbHVlfVwiXSlcbiAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiO1wiXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2Nzc19leG4gcyA9IENzc19wYXJzZXIucGFyc2VfZGVjbGFyYXRpb25fbGlzdCBzIHw+IE9yX2Vycm9yLm9rX2V4blxuXG4oKiogY3JlYXRlX3JhdyBjcmVhdGVzIGEgc2luZ2xlIGZpZWxkLCB2YWx1ZSBwYWlyLiAgSXQgYXNzdW1lcyB0aGF0IHRoZSB2YWx1ZSBpcyBhIHZhbGlkXG4gICAgY3NzIHZhbHVlLiAgQXMgc3VjaCBpdCBpcyB1bnNhZmUgdG8gdXNlIHdpdGggYXJiaXRyYXJ5IHZhbHVlIHN0cmluZ3MuICBCdXQgZm9yIHRoZVxuICAgIHZhc3QgbWFqb3JpdHkgb2YgY29tYmluYXRvcnMgaW4gdGhpcyBtb2R1bGUgaXQgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIHVzZSwgYXMgd2Uga25vd1xuICAgIGJ5IGNvbnN0cnVjdGlvbiB0aGF0IHRoZSB2YWx1ZXMgZG8gbm90IG5lZWQgcXVvdGluZyAvIGVzY2FwaW5nLiAqKVxubGV0IGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZSA9IFsgZmllbGQsIHZhbHVlIF1cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgc2hvdWxkX3ZhbGlkYXRlID0gcmVmIGZhbHNlXG5lbmRcblxubGV0IGNyZWF0ZSB+ZmllbGQgfnZhbHVlID1cbiAgaWYgIUV4cGVydC5zaG91bGRfdmFsaWRhdGUgdGhlbiBDc3NfcGFyc2VyLnZhbGlkYXRlX3ZhbHVlIHZhbHVlIHw+IE9yX2Vycm9yLm9rX2V4bjtcbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlXG47O1xuXG5sZXQgZW1wdHkgPSBbXVxubGV0IGlzX2VtcHR5ID0gTGlzdC5pc19lbXB0eVxubGV0IGNyZWF0ZV9wbGFjZW1lbnQgbmFtZSBsZW5ndGggPSBjcmVhdGUgfmZpZWxkOm5hbWUgfnZhbHVlOihMZW5ndGgudG9fc3RyaW5nX2NzcyBsZW5ndGgpXG5sZXQgbGVmdCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJsZWZ0XCJcbmxldCB0b3AgPSBjcmVhdGVfcGxhY2VtZW50IFwidG9wXCJcbmxldCBib3R0b20gPSBjcmVhdGVfcGxhY2VtZW50IFwiYm90dG9tXCJcbmxldCByaWdodCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJyaWdodFwiXG5cbmxldCBwb3NpdGlvbiA/dG9wOnRwID9ib3R0b206YnQgP2xlZnQ6bHQgP3JpZ2h0OnJ0IHBvcyA9XG4gIGxldCBwb3MgPVxuICAgIGxldCB2YWx1ZSA9XG4gICAgICBtYXRjaCBwb3Mgd2l0aFxuICAgICAgfCBgU3RhdGljIC0+IFwic3RhdGljXCJcbiAgICAgIHwgYEFic29sdXRlIC0+IFwiYWJzb2x1dGVcIlxuICAgICAgfCBgU3RpY2t5IC0+IFwic3RpY2t5XCJcbiAgICAgIHwgYFJlbGF0aXZlIC0+IFwicmVsYXRpdmVcIlxuICAgICAgfCBgRml4ZWQgLT4gXCJmaXhlZFwiXG4gICAgaW5cbiAgICBjcmVhdGUgfmZpZWxkOlwicG9zaXRpb25cIiB+dmFsdWVcbiAgaW5cbiAgbGV0IGNvbnZlcnQgb3B0X2wgZiA9IE9wdGlvbi52YWx1ZV9tYXAgb3B0X2wgfmRlZmF1bHQ6ZW1wdHkgfmYgaW5cbiAgY29uY2F0IFsgcG9zOyBjb252ZXJ0IHRwIHRvcDsgY29udmVydCBsdCBsZWZ0OyBjb252ZXJ0IHJ0IHJpZ2h0OyBjb252ZXJ0IGJ0IGJvdHRvbSBdXG47O1xuXG5sZXQgYm94X3NpemluZyB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBDb250ZW50X2JveCAtPiBcImNvbnRlbnQtYm94XCJcbiAgICB8IGBCb3JkZXJfYm94IC0+IFwiYm9yZGVyLWJveFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3gtc2l6aW5nXCIgfnZhbHVlXG47O1xuXG5sZXQgZGlzcGxheSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBJbmxpbmUgLT4gXCJpbmxpbmVcIlxuICAgIHwgYEJsb2NrIC0+IFwiYmxvY2tcIlxuICAgIHwgYElubGluZV9ibG9jayAtPiBcImlubGluZS1ibG9ja1wiXG4gICAgfCBgTGlzdF9pdGVtIC0+IFwibGlzdC1pdGVtXCJcbiAgICB8IGBUYWJsZSAtPiBcInRhYmxlXCJcbiAgICB8IGBJbmxpbmVfdGFibGUgLT4gXCJpbmxpbmUtdGFibGVcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBGbGV4IC0+IFwiZmxleFwiXG4gICAgfCBgSW5saW5lX2ZsZXggLT4gXCJpbmxpbmUtZmxleFwiXG4gICAgfCBgSW5saW5lX2dyaWQgLT4gXCJpbmxpbmUtZ3JpZFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJkaXNwbGF5XCIgfnZhbHVlXG47O1xuXG5sZXQgdmlzaWJpbGl0eSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBWaXNpYmxlIC0+IFwidmlzaWJsZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBDb2xsYXBzZSAtPiBcImNvbGxhcHNlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInZpc2liaWxpdHlcIiB+dmFsdWVcbjs7XG5cbnR5cGUgb3ZlcmZsb3cgPVxuICBbIGBWaXNpYmxlXG4gIHwgYEhpZGRlblxuICB8IGBTY3JvbGxcbiAgfCBgQXV0b1xuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IG1ha2Vfb3ZlcmZsb3cgZmllbGQgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgVmlzaWJsZSAtPiBcInZpc2libGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgU2Nyb2xsIC0+IFwic2Nyb2xsXCJcbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlXG47O1xuXG5sZXQgb3ZlcmZsb3cgPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3dcIlxubGV0IG92ZXJmbG93X3ggPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3cteFwiXG5sZXQgb3ZlcmZsb3dfeSA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvdy15XCJcbmxldCB6X2luZGV4IGkgPSBjcmVhdGVfcmF3IH5maWVsZDpcInotaW5kZXhcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSlcbmxldCBvcGFjaXR5IGkgPSBjcmVhdGVfcmF3IH5maWVsZDpcIm9wYWNpdHlcIiB+dmFsdWU6KGYycyA2IGkpXG5cbmxldCBjcmVhdGVfbGVuZ3RoX2ZpZWxkIGZpZWxkIGwgPVxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KEF1dG9fb3JfbGVuZ3RoLnRvX3N0cmluZ19jc3MgbClcbjs7XG5cbmxldCB3aGl0ZV9zcGFjZSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYE5vd3JhcCAtPiBcIm5vd3JhcFwiXG4gICAgfCBgUHJlIC0+IFwicHJlXCJcbiAgICB8IGBQcmVfbGluZSAtPiBcInByZS1saW5lXCJcbiAgICB8IGBQcmVfd3JhcCAtPiBcInByZS13cmFwXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICBpblxuICBjcmVhdGUgfmZpZWxkOlwid2hpdGUtc3BhY2VcIiB+dmFsdWVcbjs7XG5cbnR5cGUgZm9udF9zdHlsZSA9XG4gIFsgYE5vcm1hbFxuICB8IGBJdGFsaWNcbiAgfCBgT2JsaXF1ZVxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxudHlwZSBmb250X3dlaWdodCA9XG4gIFsgYE5vcm1hbFxuICB8IGBCb2xkXG4gIHwgYEJvbGRlclxuICB8IGBMaWdodGVyXG4gIHwgYE51bWJlciBvZiBpbnRcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbnR5cGUgZm9udF92YXJpYW50ID1cbiAgWyBgTm9ybWFsXG4gIHwgYFNtYWxsX2NhcHNcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBmb250X3NpemUgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiZm9udC1zaXplXCJcbmxldCBmb250X2ZhbWlseSBsID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LWZhbWlseVwiIH52YWx1ZTooU3RyaW5nLmNvbmNhdCBsIH5zZXA6XCIsXCIpXG5cbmxldCBmb250X3N0eWxlIHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgSXRhbGljIC0+IFwiaXRhbGljXCJcbiAgICB8IGBPYmxpcXVlIC0+IFwib2JsaXF1ZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXN0eWxlXCIgfnZhbHVlXG47O1xuXG5sZXQgZm9udF93ZWlnaHQgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTnVtYmVyIGkgLT4gSW50LnRvX3N0cmluZyBpXG4gICAgfCBgQm9sZCAtPiBcImJvbGRcIlxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgTGlnaHRlciAtPiBcImxpZ2h0ZXJcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBCb2xkZXIgLT4gXCJib2xkZXJcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXdlaWdodFwiIH52YWx1ZVxuOztcblxubGV0IGJvbGQgPSBmb250X3dlaWdodCBgQm9sZFxuXG5sZXQgZm9udF92YXJpYW50IHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgU21hbGxfY2FwcyAtPiBcInNtYWxsLWNhcHNcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC12YXJpYW50XCIgfnZhbHVlXG47O1xuXG5sZXQgZm9udCB+c2l6ZSB+ZmFtaWx5ID9zdHlsZSA/d2VpZ2h0ID92YXJpYW50ICgpID1cbiAgWyBTb21lIChmb250X3NpemUgc2l6ZSlcbiAgOyBTb21lIChmb250X2ZhbWlseSBmYW1pbHkpXG4gIDsgT3B0aW9uLm1hcCBzdHlsZSB+Zjpmb250X3N0eWxlXG4gIDsgT3B0aW9uLm1hcCB3ZWlnaHQgfmY6Zm9udF93ZWlnaHRcbiAgOyBPcHRpb24ubWFwIHZhcmlhbnQgfmY6Zm9udF92YXJpYW50XG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZCB+Y29sb3IgPSBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KENvbG9yLnRvX3N0cmluZ19jc3MgY29sb3IpXG5sZXQgY29sb3IgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJjb2xvclwiIH5jb2xvclxubGV0IGJhY2tncm91bmRfY29sb3IgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJiYWNrZ3JvdW5kLWNvbG9yXCIgfmNvbG9yXG5sZXQgZmlsbCBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImZpbGxcIiB+Y29sb3JcblxudHlwZSBzdG9wcyA9IChQZXJjZW50LnQgKiBDb2xvci50KSBsaXN0XG5cbnR5cGUgbGluZWFyX2dyYWRpZW50ID1cbiAgeyBkaXJlY3Rpb24gOiBbIGBEZWcgb2YgaW50IF1cbiAgOyBzdG9wcyA6IHN0b3BzXG4gIH1cblxudHlwZSByYWRpYWxfZ3JhZGllbnQgPSB7IHN0b3BzIDogc3RvcHMgfVxuXG50eXBlIGJhY2tncm91bmRfaW1hZ2UgPVxuICBbIGBVcmwgb2Ygc3RyaW5nXG4gIHwgYExpbmVhcl9ncmFkaWVudCBvZiBsaW5lYXJfZ3JhZGllbnRcbiAgfCBgUmFkaWFsX2dyYWRpZW50IG9mIHJhZGlhbF9ncmFkaWVudFxuICBdXG5cbmxldCBzdG9wc190b19zdHJpbmcgc3RvcHMgPVxuICBMaXN0Lm1hcCBzdG9wcyB+ZjooZnVuIChwY3QsIGNvbG9yKSAtPlxuICAgICgqIE5vdGU6IFBlcmNlbnQudG9fc3RyaW5nIHByb2R1Y2VkIGUuZy4gXCIweFwiLCBcIjF4XCIsIHdvbid0IHdvcmsgaGVyZS4gKilcbiAgICBbJXN0cmluZyBcIiV7Q29sb3IudG9fc3RyaW5nX2NzcyBjb2xvcn0gJXtmMnMgNiAoUGVyY2VudC50b19wZXJjZW50YWdlIHBjdCl9JVwiXSlcbiAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuOztcblxubGV0IGJhY2tncm91bmRfaW1hZ2Ugc3BlYyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBgVXJsIHVybCAtPiBbJXN0cmluZyBcInVybCgle3VybH0pXCJdXG4gICAgfCBgTGluZWFyX2dyYWRpZW50IHsgZGlyZWN0aW9uID0gYERlZyBkaXJlY3Rpb247IHN0b3BzIH0gLT5cbiAgICAgIFslc3RyaW5nIFwibGluZWFyLWdyYWRpZW50KCV7ZGlyZWN0aW9uI0ludH1kZWcsICV7c3RvcHNfdG9fc3RyaW5nIHN0b3BzfSlcIl1cbiAgICB8IGBSYWRpYWxfZ3JhZGllbnQgeyBzdG9wcyB9IC0+IFslc3RyaW5nIFwicmFkaWFsLWdyYWRpZW50KCV7c3RvcHNfdG9fc3RyaW5nIHN0b3BzfSlcIl1cbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJiYWNrZ3JvdW5kLWltYWdlXCIgfnZhbHVlXG47O1xuXG5sZXQgY3JlYXRlX2FsaWdubWVudCBmaWVsZCBhID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihBbGlnbm1lbnQudG9fc3RyaW5nX2NzcyAoYSA6PiBBbGlnbm1lbnQudCkpXG47O1xuXG5sZXQgdGV4dF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJ0ZXh0LWFsaWduXCJcbmxldCBob3Jpem9udGFsX2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcImhvcml6b250YWwtYWxpZ25cIlxubGV0IHZlcnRpY2FsX2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcInZlcnRpY2FsLWFsaWduXCJcblxubGV0IGZsb2F0IGYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIGYgd2l0aFxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbG9hdFwiIH52YWx1ZVxuOztcblxubGV0IHdpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIndpZHRoXCJcbmxldCBtaW5fd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLXdpZHRoXCJcbmxldCBtYXhfd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LXdpZHRoXCJcbmxldCBoZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiaGVpZ2h0XCJcbmxldCBtaW5faGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1pbi1oZWlnaHRcIlxubGV0IG1heF9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LWhlaWdodFwiXG5sZXQgcGFkZGluZ190b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy10b3BcIlxubGV0IHBhZGRpbmdfYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctYm90dG9tXCJcbmxldCBwYWRkaW5nX2xlZnQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1sZWZ0XCJcbmxldCBwYWRkaW5nX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctcmlnaHRcIlxuXG5sZXQgcGFkZGluZyA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6cGFkZGluZ190b3BcbiAgOyBtIGJvdHRvbSB+ZjpwYWRkaW5nX2JvdHRvbVxuICA7IG0gbGVmdCB+ZjpwYWRkaW5nX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOnBhZGRpbmdfcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9wYWRkaW5nIGwgPSBwYWRkaW5nIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxubGV0IG1hcmdpbl90b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXRvcFwiXG5sZXQgbWFyZ2luX2JvdHRvbSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tYm90dG9tXCJcbmxldCBtYXJnaW5fbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tbGVmdFwiXG5sZXQgbWFyZ2luX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1yaWdodFwiXG5cbmxldCBtYXJnaW4gP3RvcCA/Ym90dG9tID9sZWZ0ID9yaWdodCAoKSA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBbIG0gdG9wIH5mOm1hcmdpbl90b3BcbiAgOyBtIGJvdHRvbSB+ZjptYXJnaW5fYm90dG9tXG4gIDsgbSBsZWZ0IH5mOm1hcmdpbl9sZWZ0XG4gIDsgbSByaWdodCB+ZjptYXJnaW5fcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9tYXJnaW4gbCA9IG1hcmdpbiB+dG9wOmwgfmJvdHRvbTpsIH5sZWZ0OmwgfnJpZ2h0OmwgKClcblxudHlwZSBib3JkZXJfc3R5bGUgPVxuICBbIGBOb25lXG4gIHwgYEhpZGRlblxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBHcm9vdmVcbiAgfCBgUmlkZ2VcbiAgfCBgSW5zZXRcbiAgfCBgT3V0c2V0XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG4oKiogQ29uY2F0IDIgdmFsdWVzIHdpdGggYSBzcGFjZSBpbiBiZXR3ZWVuLiAgSWYgZWl0aGVyIGlzIHRoZSBlbXB0eSBzdHJpbmdcbiAgICBkb24ndCBwdXQgaW4gdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZS4gKilcbmxldCBjb25jYXQydiB2MSB2MiA9XG4gIG1hdGNoIHYxLCB2MiB3aXRoXG4gIHwgXCJcIiwgeCAtPiB4XG4gIHwgeCwgXCJcIiAtPiB4XG4gIHwgeCwgeSAtPiB4IF4gXCIgXCIgXiB5XG47O1xuXG4oKiogQ29uY2F0IHVwIHRvIDMgdmFsdWVzIHdpdGggc3BhY2VzIGluIGJldHdlZW4uICopXG5sZXQgY29uY2F0M3YgdjEgdjIgdjMgPSBjb25jYXQydiAoY29uY2F0MnYgdjEgdjIpIHYzXG5cbmxldCBib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+KHN0eWxlIDogYm9yZGVyX3N0eWxlKSAoKSA9XG4gIGxldCBzdHlsZSA9XG4gICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgIHwgYFJpZGdlIC0+IFwicmlkZ2VcIlxuICAgIHwgYE91dHNldCAtPiBcIm91dHNldFwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEdyb292ZSAtPiBcImdyb292ZVwiXG4gICAgfCBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5zZXQgLT4gXCJpbnNldFwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgIHwgYERvdHRlZCAtPiBcImRvdHRlZFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFNvbGlkIC0+IFwic29saWRcIlxuICBpblxuICBsZXQgd2lkdGggPSB2YWx1ZV9tYXAgd2lkdGggfmY6TGVuZ3RoLnRvX3N0cmluZ19jc3MgaW5cbiAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgY29uY2F0M3Ygd2lkdGggc3R5bGUgY29sb3Jcbjs7XG5cbmxldCBjcmVhdGVfYm9yZGVyID9zaWRlICgpID1cbiAgbGV0IGZpZWxkID1cbiAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICB8IFNvbWUgYFRvcCAtPiBcImJvcmRlci10b3BcIlxuICAgIHwgU29tZSBgQm90dG9tIC0+IFwiYm9yZGVyLWJvdHRvbVwiXG4gICAgfCBTb21lIGBSaWdodCAtPiBcImJvcmRlci1yaWdodFwiXG4gICAgfCBTb21lIGBMZWZ0IC0+IFwiYm9yZGVyLWxlZnRcIlxuICAgIHwgTm9uZSAtPiBcImJvcmRlclwiXG4gIGluXG4gIGZ1biA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSAtPlxuICAgIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfnN0eWxlICgpKVxuOztcblxubGV0IGJvcmRlcl90b3AgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBUb3AgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfYm90dG9tID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgQm90dG9tICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2xlZnQgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBMZWZ0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX3JpZ2h0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgUmlnaHQgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXIgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPSBjcmVhdGVfYm9yZGVyID9zaWRlOk5vbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgKClcblxubGV0IG91dGxpbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfcmF3IH5maWVsZDpcIm91dGxpbmVcIiB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfY29sbGFwc2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgU2VwYXJhdGUgLT4gXCJzZXBhcmF0ZVwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3JkZXItY29sbGFwc2VcIiB+dmFsdWVcbjs7XG5cbmxldCBib3JkZXJfc3BhY2luZyA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJib3JkZXItc3BhY2luZ1wiXG5sZXQgYm9yZGVyX3JhZGl1cyBsID0gY3JlYXRlIH5maWVsZDpcImJvcmRlci1yYWRpdXNcIiB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGwpXG5cbnR5cGUgdGV4dF9kZWNvcmF0aW9uX2xpbmUgPVxuICBbIGBOb25lXG4gIHwgYFVuZGVybGluZVxuICB8IGBPdmVybGluZVxuICB8IGBMaW5lX3Rocm91Z2hcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9zdHlsZSA9XG4gIFsgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFdhdnlcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdGV4dF9kZWNvcmF0aW9uID9zdHlsZSA/Y29sb3IgfmxpbmUgKCkgPVxuICBsZXQgdmFsdWUgPVxuICAgIGxldCBsaW5lID1cbiAgICAgIExpc3QubWFwIGxpbmUgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgYExpbmVfdGhyb3VnaCAtPiBcImxpbmUtdGhyb3VnaFwiXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBPdmVybGluZSAtPiBcIm92ZXJsaW5lXCJcbiAgICAgICAgfCBgVW5kZXJsaW5lIC0+IFwidW5kZXJsaW5lXCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIilcbiAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICAgIGluXG4gICAgbGV0IHN0eWxlID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgYFNvbGlkIC0+IFwic29saWRcIlxuICAgICAgfCBTb21lIGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgICAgfCBTb21lIGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgICAgfCBTb21lIGBEYXNoZWQgLT4gXCJkYXNoZWRcIlxuICAgICAgfCBTb21lIGBXYXZ5IC0+IFwid2F2eVwiXG4gICAgICB8IFNvbWUgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgIHwgU29tZSBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIGluXG4gICAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgICBjb25jYXQzdiBsaW5lIHN0eWxlIGNvbG9yXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidGV4dC1kZWNvcmF0aW9uXCIgfnZhbHVlXG47O1xuXG50eXBlIGl0ZW1fYWxpZ25tZW50ID1cbiAgWyBgQXV0b1xuICB8IGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBCYXNlbGluZVxuICB8IGBTdHJldGNoXG4gIF1cblxubGV0IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYEJhc2VsaW5lIC0+IFwiYmFzZWxpbmVcIlxuICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG47O1xuXG50eXBlIGp1c3RpZnlfY29udGVudCA9XG4gIFsgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYFNwYWNlX2JldHdlZW5cbiAgfCBgU3BhY2VfYXJvdW5kXG4gIHwgYFNwYWNlX2V2ZW5seVxuICBdXG5cbmxldCBqdXN0aWZ5X2NvbnRlbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYFNwYWNlX2JldHdlZW4gLT4gXCJzcGFjZS1iZXR3ZWVuXCJcbiAgfCBgU3BhY2VfYXJvdW5kIC0+IFwic3BhY2UtYXJvdW5kXCJcbiAgfCBgU3BhY2VfZXZlbmx5IC0+IFwic3BhY2UtZXZlbmx5XCJcbjs7XG5cbmxldCBmbGV4X2NvbnRhaW5lclxuICAgICAgPyhpbmxpbmUgPSBmYWxzZSlcbiAgICAgID8oZGlyZWN0aW9uID0gYFJvdylcbiAgICAgID8od3JhcCA9IGBOb3dyYXApXG4gICAgICA/YWxpZ25faXRlbXNcbiAgICAgID9qdXN0aWZ5X2NvbnRlbnRcbiAgICAgICgpXG4gID1cbiAgbGV0IGRpcmVjdGlvbiA9XG4gICAgbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBSb3cgLT4gXCJyb3dcIlxuICAgIHwgYFJvd19yZXZlcnNlIC0+IFwicm93LXJldmVyc2VcIlxuICAgIHwgYENvbHVtbiAtPiBcImNvbHVtblwiXG4gICAgfCBgQ29sdW1uX3JldmVyc2UgLT4gXCJjb2x1bW4tcmV2ZXJzZVwiXG4gIGluXG4gIGxldCB3cmFwID1cbiAgICBtYXRjaCB3cmFwIHdpdGhcbiAgICB8IGBOb3dyYXAgLT4gXCJub3dyYXBcIlxuICAgIHwgYFdyYXAgLT4gXCJ3cmFwXCJcbiAgICB8IGBXcmFwX3JldmVyc2UgLT4gXCJ3cmFwLXJldmVyc2VcIlxuICBpblxuICBsZXQgYWxpZ25faXRlbXMgPVxuICAgIG1hdGNoIGFsaWduX2l0ZW1zIHdpdGhcbiAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICB8IFNvbWUgYSAtPiBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLWl0ZW1zXCIgfnZhbHVlOihpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIGEpXG4gIGluXG4gIGxldCBqdXN0aWZ5X2NvbnRlbnQgPVxuICAgIG1hdGNoIGp1c3RpZnlfY29udGVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwianVzdGlmeS1jb250ZW50XCIgfnZhbHVlOihqdXN0aWZ5X2NvbnRlbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBjb25jYXRcbiAgICBbIGRpc3BsYXkgKGlmIGlubGluZSB0aGVuIGBJbmxpbmVfZmxleCBlbHNlIGBGbGV4KVxuICAgIDsgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4LWRpcmVjdGlvblwiIH52YWx1ZTpkaXJlY3Rpb25cbiAgICA7IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC13cmFwXCIgfnZhbHVlOndyYXBcbiAgICA7IGFsaWduX2l0ZW1zXG4gICAgOyBqdXN0aWZ5X2NvbnRlbnRcbiAgICBdXG47O1xuXG5sZXQgZmxleF9pdGVtID9vcmRlciA/KGJhc2lzID0gYEF1dG8pID8oc2hyaW5rID0gMS4pIH5ncm93ICgpID1cbiAgbGV0IG9yZGVyID1cbiAgICBPcHRpb24ubWFwIG9yZGVyIH5mOihmdW4gaSAtPiBjcmVhdGVfcmF3IH5maWVsZDpcIm9yZGVyXCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpKVxuICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgfD4gTGlzdC5qb2luXG4gIGluXG4gIGxldCBmbGV4ID1cbiAgICBsZXQgYmFzaXMgPSBBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGJhc2lzIGluXG4gICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4XCIgfnZhbHVlOlslc3RyaW5nIFwiJXtmMnMgNiBncm93fSAle2YycyA2IHNocmlua30gJXtiYXNpc31cIl1cbiAgaW5cbiAgY29uY2F0IFsgZmxleDsgb3JkZXIgXVxuOztcblxubGV0IGFsaWduX3NlbGYgYSA9XG4gIGxldCB2YWx1ZSA9IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLXNlbGZcIiB+dmFsdWVcbjs7XG5cbmxldCByZXNpemUgKHZhbHVlIDogWyBgTm9uZSB8IGBCb3RoIHwgYEhvcml6b250YWwgfCBgVmVydGljYWwgfCBjc3NfZ2xvYmFsX3ZhbHVlcyBdKSA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBCb3RoIC0+IFwiYm90aFwiXG4gICAgfCBgSG9yaXpvbnRhbCAtPiBcImhvcml6b250YWxcIlxuICAgIHwgYFZlcnRpY2FsIC0+IFwidmVydGljYWxcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwicmVzaXplXCIgfnZhbHVlXG47O1xuXG5sZXQgYW5pbWF0aW9uIH5uYW1lIH5kdXJhdGlvbiA/ZGVsYXkgP2RpcmVjdGlvbiA/ZmlsbF9tb2RlID9pdGVyX2NvdW50ID90aW1pbmdfZnVuY3Rpb24gKClcbiAgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgbGV0IHNwYW5fdG9fc3RyaW5nIHMgPSBbJXN0cmluZyBcIiV7ZjJzIDIgKFRpbWVfbnMuU3Bhbi50b19zZWMgcyl9c1wiXSBpblxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBtIGRpcmVjdGlvbiB+ZjooZnVuIGQgLT5cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgICAgICB8IGBSZXZlcnNlIC0+IFwicmV2ZXJzZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZV9yZXZlcnNlIC0+IFwiYWx0ZXJuYXRlLXJldmVyc2VcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kaXJlY3Rpb25cIiB+dmFsdWUpXG4gIGluXG4gIGxldCBmaWxsX21vZGUgPVxuICAgIG0gZmlsbF9tb2RlIH5mOihmdW4gZiAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZiB3aXRoXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgRm9yd2FyZHMgLT4gXCJmb3J3YXJkc1wiXG4gICAgICAgIHwgYEJhY2t3YXJkcyAtPiBcImJhY2t3YXJkc1wiXG4gICAgICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgICBpblxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZmlsbC1tb2RlXCIgfnZhbHVlKVxuICBpblxuICBbIFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLW5hbWVcIiB+dmFsdWU6bmFtZSlcbiAgOyBTb21lIChjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kdXJhdGlvblwiIH52YWx1ZTooc3Bhbl90b19zdHJpbmcgZHVyYXRpb24pKVxuICA7IG0gZGVsYXkgfmY6KGZ1biBzIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRlbGF5XCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBzKSlcbiAgOyBtIGl0ZXJfY291bnQgfmY6KGZ1biBpIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnRcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gIDsgbSB0aW1pbmdfZnVuY3Rpb24gfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXCIgfnZhbHVlKVxuICA7IGRpcmVjdGlvblxuICA7IGZpbGxfbW9kZVxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbnR5cGUgdXNlcl9zZWxlY3QgPVxuICBbIGBBbGxcbiAgfCBgQXV0b1xuICB8IGBOb25lXG4gIHwgYFRleHRcbiAgXVxuXG5sZXQgdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEFsbCAtPiBcImFsbFwiXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICB8IGBUZXh0IC0+IFwidGV4dFwiXG47O1xuXG5sZXQgdXNlcl9zZWxlY3QgcyA9XG4gIGxldCB2YWx1ZSA9IHVzZXJfc2VsZWN0X3RvX3N0cmluZ19jc3MgcyBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInVzZXItc2VsZWN0XCIgfnZhbHVlXG47O1xuXG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcInRvX3N0cmluZ19jc3MgLT4gb2Zfc3RyaW5nX2Nzc19leG4gLT4gdG9fc3RyaW5nX2Nzc1wiID1cbiAgICAgIGxldCB0IGNzcyA9XG4gICAgICAgIGxldCBzID0gdG9fc3RyaW5nX2NzcyBjc3MgaW5cbiAgICAgICAgbGV0IHMyID0gdG9fc3RyaW5nX2NzcyAob2Zfc3RyaW5nX2Nzc19leG4gcykgaW5cbiAgICAgICAgcHJpbnRfZW5kbGluZSBzO1xuICAgICAgICBwcmludF9lbmRsaW5lIHMyXG4gICAgICBpblxuICAgICAgdCAoZmxleF9pdGVtIH5ncm93OjEuMCAoKSBAPiBvdmVyZmxvdyBgU2Nyb2xsKTtcbiAgICAgIHQgKGZsZXhfY29udGFpbmVyIH5pbmxpbmU6dHJ1ZSB+ZGlyZWN0aW9uOmBDb2x1bW4gKCkgQD4gYm9yZGVyIH5zdHlsZTpgRGFzaGVkICgpKTtcbiAgICAgIHQgKGNvbG9yIChgUkdCQSAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjEwMCB+YjoxMDAgKCkpKSk7XG4gICAgICB0XG4gICAgICAgIChjb2xvclxuICAgICAgICAgICAoYEhTTEFcbiAgICAgICAgICAgICAgKENvbG9yLkhTTEEuY3JlYXRlXG4gICAgICAgICAgICAgICAgIH5oOjEwMFxuICAgICAgICAgICAgICAgICB+czooUGVyY2VudC5vZl9tdWx0IDAuNzUpXG4gICAgICAgICAgICAgICAgIH5sOihQZXJjZW50Lm9mX211bHQgMC42MClcbiAgICAgICAgICAgICAgICAgKCkpKSk7XG4gICAgICB0IChjcmVhdGUgfmZpZWxkOlwiY29udGVudFwiIH52YWx1ZTp7fFwiO1wifH0pO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtmbGV4LXdyYXA6IG5vd3JhcDtib3JkZXI6IGRhc2hlZFxuICAgIGNvbG9yOiByZ2IoMTAwLDEwMCwxMDApXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogaHNsKDEwMCw3NSUsNjAlKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29udGVudDogXCI7XCJcbiAgICBjb250ZW50OiBcIjtcIiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZ3JhZGllbnRzXCIgPVxuICAgICAgbGV0IHAgeCA9IFBlcmNlbnQub2ZfbXVsdCB4IGluXG4gICAgICBsZXQgYyBzID0gYE5hbWUgcyBpblxuICAgICAgbGV0IHQgY3NzID0gcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nX2NzcyBjc3MpIGluXG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgTGluZWFyX2dyYWRpZW50XG4gICAgICAgICAgICAgIHsgZGlyZWN0aW9uID0gYERlZyA5MFxuICAgICAgICAgICAgICA7IHN0b3BzID1cbiAgICAgICAgICAgICAgICAgIFsgcCAwLiwgYyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjIsIGMgXCIjZmYwMDAwXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjQsIGMgXCJyZWRcIlxuICAgICAgICAgICAgICAgICAgOyAoIHAgMS5cbiAgICAgICAgICAgICAgICAgICAgLCBgUkdCQVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvbG9yLlJHQkEuY3JlYXRlIH5yOjEwMCB+Zzo1MCB+YjozMCB+YTooUGVyY2VudC5vZl9tdWx0IDAuNzUpICgpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgYmxhY2sgMC4wMDAwMDAlLCAjZmYwMDAwIDIwLjAwMDAwMCUsIHJlZCA0MC4wMDAwMDAlLCByZ2JhKDEwMCw1MCwzMCwwLjc1KSAxMDAuMDAwMDAwJSkgfH1dO1xuICAgICAgdFxuICAgICAgICAoYmFja2dyb3VuZF9pbWFnZVxuICAgICAgICAgICAoYFJhZGlhbF9ncmFkaWVudCB7IHN0b3BzID0gWyBwIDAuLCBjIFwiYmxhY2tcIjsgcCAxLiwgYyBcInJlZFwiIF0gfSkpO1xuICAgICAgWyVleHBlY3Qge3wgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGJsYWNrIDAuMDAwMDAwJSwgcmVkIDEwMC4wMDAwMDAlKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwiKCogVGhlIGdlbl9qc19hcGkgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIGFuIE1JVC1saWtlIGxpY2Vuc2UuICAgICAqKVxuKCogU2VlIHRoZSBhdHRhY2hlZCBMSUNFTlNFIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogQ29weXJpZ2h0IDIwMTUgYnkgTGV4aUZpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuXG4oKiBUaGlzIG1vZHVsZSAobW9zdGx5KSBhYnN0cmFjdHMgYXdheSBmcm9tIGpzX29mX29jYW1sIGVuY29kaW5nIG9mXG4gICBPQ2FtbCB2YWx1ZXMuICBJdCBzZXJ2ZXMgYXMgYSBzdXBwb3J0IGxpYnJhcnkgZm9yIHRoZSBjb2RlIGdlbmVyYXRlZFxuICAgYnkgZ2VuX2pzX2FwaS5cblxuICAgVGhlIG1vZHVsZSBjb3VsZCBtb3N0bHkgYmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mIGpzX29mX29jYW1sJ3MgSnMgbW9kdWxlXG4gICAoYW5kIGluIHBhcnRpY3VsYXIgSnMuVW5zYWZlKSwgYnV0IHdlIHByZWZlciB0byBkcm9wIHRoZSBkZXBlbmRlbmN5XG4gICB0byBqc19vZl9vY2FtbCdzIGxpYnJhcnkgYW5kIHRvIHJlbHkgb25seSBvbiBpdHMgY29tcGlsZXIgYW5kIEpTXG4gICBydW50aW1lIGNvZGUuXG4qKVxuXG5cbnR5cGUgdFxuXG5leHRlcm5hbCB0X29mX2pzOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0X3RvX2pzOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmV4dGVybmFsIHN0cmluZ19vZl9qczogdCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHN0cmluZ190b19qczogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNfZnJvbV9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnRfb2ZfanM6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaW50X3RvX2pzOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuZXh0ZXJuYWwgYm9vbF9vZl9qczogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuZXh0ZXJuYWwgYm9vbF90b19qczogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX2pzOiB0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZmxvYXRfdG9fanM6IGZsb2F0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmV4dGVybmFsIG9iajogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuZXh0ZXJuYWwgdmFyaWFibGU6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzX3ZhclwiXG5cbmV4dGVybmFsIGdldDogdCAtPiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0OiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcbmV4dGVybmFsIGRlbGV0ZTogdCAtPiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG5leHRlcm5hbCBnZXRfcHJvcDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIHNldF9wcm9wOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGVfcHJvcDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuZXh0ZXJuYWwgZ2V0X3Byb3BfYXNjaWk6IHQgLT4gc3RyaW5nIC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIHNldF9wcm9wX2FzY2lpOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcbmV4dGVybmFsIGRlbGV0ZV9wcm9wX2FzY2lpOiB0IC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbmV4dGVybmFsIGludGVybmFsX3R5cGVfb2Y6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxubGV0IHR5cGVfb2YgeCA9IHN0cmluZ19vZl9qcyAoaW50ZXJuYWxfdHlwZV9vZiB4KVxuXG5leHRlcm5hbCBpbnRlcm5hbF9pbnN0YW5jZV9vZjogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5sZXQgaW5zdGFuY2Vfb2YgeCB+Y29uc3RyID0gYm9vbF9vZl9qcyAoaW50ZXJuYWxfaW5zdGFuY2Vfb2YgeCBjb25zdHIpXG5cbmV4dGVybmFsIHB1cmVfanNfZXhwcjogc3RyaW5nIC0+IHQgPSBcImNhbWxfcHVyZV9qc19leHByXCJcbmxldCBudWxsID0gcHVyZV9qc19leHByIFwibnVsbFwiXG5sZXQgdW5kZWZpbmVkID0gcHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcblxuZXh0ZXJuYWwgZXF1YWxzOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG5sZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiam9vX2dsb2JhbF9vYmplY3RcIlxuXG5leHRlcm5hbCBuZXdfb2JqOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuXG5leHRlcm5hbCBjYWxsOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcbmV4dGVybmFsIGFwcGx5OiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbmxldCBhcnJheV9tYWtlIG4gPSBuZXdfb2JqIChnZXRfcHJvcF9hc2NpaSBnbG9iYWwgXCJBcnJheVwiKSBbfGludF90b19qcyBufF1cbmxldCBhcnJheV9nZXQgdCBpID0gZ2V0X3Byb3AgdCAoaW50X3RvX2pzIGkpXG5sZXQgYXJyYXlfc2V0IHQgaSB4ID0gc2V0X3Byb3AgdCAoaW50X3RvX2pzIGkpIHhcblxubGV0IGFycmF5X29mX2pzX2Zyb20gZiBvYmpzIHN0YXJ0ID1cbiAgbGV0IG4gPSBpbnRfb2ZfanMgKGdldF9wcm9wX2FzY2lpIG9ianMgXCJsZW5ndGhcIikgaW5cbiAgQXJyYXkuaW5pdCAobiAtIHN0YXJ0KSAoZnVuIGkgLT4gZiAoYXJyYXlfZ2V0IG9ianMgKHN0YXJ0ICsgaSkpKVxuXG5sZXQgYXJyYXlfb2ZfanMgZiBvYmpzID0gYXJyYXlfb2ZfanNfZnJvbSBmIG9ianMgMFxuXG5sZXQgYXJyYXlfdG9fanMgZiBhcnIgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgbGV0IGEgPSBhcnJheV9tYWtlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgYXJyYXlfc2V0IGEgaSAoZiBhcnIuKGkpKVxuICBkb25lO1xuICBhXG5cbmxldCBsaXN0X29mX2pzX2Zyb20gZiBvYmpzIHN0YXJ0ID0gQXJyYXkudG9fbGlzdCAoYXJyYXlfb2ZfanNfZnJvbSBmIG9ianMgc3RhcnQpXG5cbmxldCBsaXN0X29mX2pzIGYgb2JqcyA9IGxpc3Rfb2ZfanNfZnJvbSBmIG9ianMgMFxuXG5sZXQgbGlzdF90b19qcyBmIGwgPVxuICBhcnJheV90b19qcyBmIChBcnJheS5vZl9saXN0IGwpXG5cbmxldCBvcHRpb25fb2ZfanMgZiB4ID1cbiAgaWYgZXF1YWxzIHggbnVsbCB8fCB4ID09IHVuZGVmaW5lZCB0aGVuIE5vbmVcbiAgZWxzZSBTb21lIChmIHgpXG5cbmxldCBvcHRpb25fdG9fanMgZiA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IGYgeFxuICB8IE5vbmUgLT4gbnVsbFxuXG5sZXQgdW5pdF90b19qcyAoKSA9IHVuZGVmaW5lZFxubGV0IHVuaXRfb2ZfanMgXyA9ICgpXG5cbmNsYXNzIG9iaiAoeDp0KSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0b19qcyA9IHhcbiAgZW5kXG5cbmV4dGVybmFsIGZ1bl90b19qczogaW50IC0+ICh0IC0+ICdhKSAtPiB0ID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcbmV4dGVybmFsIGZ1bl90b19qc19hcmdzOiAodCAtPiAnYSkgLT4gdCA9IFwiY2FtbF9vanNfd3JhcF9mdW5fYXJndW1lbnRzXCJcblxubGV0IGhhc19wcm9wZXJ0eSBvIHggPVxuICB0eXBlX29mIG8gPSBcIm9iamVjdFwiICYmIG8gIT0gbnVsbFxuICAmJiBnZXRfcHJvcCBvIChzdHJpbmdfdG9fanMgeCkgIT0gdW5kZWZpbmVkXG5cbmV4dGVybmFsIG5ld19vYmpfYXJyOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbmxldCBlbXB0eV9vYmogKCkgPSBuZXdfb2JqIChnZXRfcHJvcF9hc2NpaSBnbG9iYWwgXCJPYmplY3RcIikgW3x8XVxuXG5leHRlcm5hbCBpdGVyX3Byb3BlcnRpZXNfdW50eXBlZCA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXNcIlxubGV0IGl0ZXJfcHJvcGVydGllcyB4IGYgPVxuICBpdGVyX3Byb3BlcnRpZXNfdW50eXBlZCB4IChmdW5fdG9fanMgMSAoZnVuIHggLT4gZiAoc3RyaW5nX29mX2pzIHgpKSlcblxubGV0IGFwcGx5X2FyciBvIGFyciA9IGNhbGwgbyBcImFwcGx5XCIgW3wgbnVsbDsgYXJyIHxdXG5sZXQgY2FsbF9hcnIgbyBzIGFyciA9IGNhbGwgKGdldF9wcm9wIG8gKHN0cmluZ190b19qcyBzKSkgXCJhcHBseVwiIFt8IG87IGFyciB8XVxuXG5sZXQgaXNfbnVsbCB4ID1cbiAgZXF1YWxzIHggbnVsbFxuXG5sZXQgb2JqX3R5cGUgeCA9XG4gIHN0cmluZ19vZl9qcyAoY2FsbCAocHVyZV9qc19leHByIFwiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1wiKSBcImNhbGxcIiBbfHh8XSlcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIGpzIDo9IHRcbiAgdHlwZSB0XG4gIHZhbCB0X3RvX2pzIDogdCAtPiBqc1xuICB2YWwgdF9vZl9qcyA6IGpzIC0+IHRcbmVuZFxuXG4oKiBPanMuVCBpbnN0YW5jZXMgZm9yIGJ1aWx0LWluIHR5cGVzICopXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgdF90b19qcyA9IGludF90b19qc1xuICBsZXQgdF9vZl9qcyA9IGludF9vZl9qc1xuIGVuZFxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRfdG9fanMgPSBzdHJpbmdfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBzdHJpbmdfb2ZfanNcbmVuZFxubW9kdWxlIEJvb2wgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYm9vbFxuICBsZXQgdF90b19qcyA9IGJvb2xfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBib29sX29mX2pzXG5lbmRcbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuICBsZXQgdF90b19qcyA9IGZsb2F0X3RvX2pzXG4gIGxldCB0X29mX2pzID0gZmxvYXRfb2ZfanNcbmVuZFxubW9kdWxlIEFycmF5IChBOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBLnQgYXJyYXlcbiAgbGV0IHRfdG9fanMgPSBhcnJheV90b19qcyBBLnRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBhcnJheV9vZl9qcyBBLnRfb2ZfanNcbmVuZFxubW9kdWxlIExpc3QgKEE6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IEEudCBsaXN0XG4gIGxldCB0X3RvX2pzID0gbGlzdF90b19qcyBBLnRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBsaXN0X29mX2pzIEEudF9vZl9qc1xuZW5kXG5tb2R1bGUgT3B0aW9uIChBOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBLnQgb3B0aW9uXG4gIGxldCB0X3RvX2pzID0gb3B0aW9uX3RvX2pzIEEudF90b19qc1xuICBsZXQgdF9vZl9qcyA9IG9wdGlvbl9vZl9qcyBBLnRfb2ZfanNcbmVuZFxuIiwiKCogVGhlIGdlbl9qc19hcGkgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIGFuIE1JVC1saWtlIGxpY2Vuc2UuICAgICAqKVxuKCogU2VlIHRoZSBhdHRhY2hlZCBMSUNFTlNFIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogQ29weXJpZ2h0IDIwMTUgYnkgTGV4aUZpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuXG50eXBlIHQgPSBKc29vX3J1bnRpbWUuRXJyb3IudFxuXG5leHRlcm5hbCBjb2VyY2UgOiB0IC0+IE9qcy50ID0gXCIlaWRlbnRpdHlcIlxubGV0IG5hbWUgeCA9IE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5nZXRfcHJvcF9hc2NpaSAoY29lcmNlIHgpIFwibmFtZVwiKVxubGV0IG1lc3NhZ2UgeCA9IE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5nZXRfcHJvcF9hc2NpaSAoY29lcmNlIHgpIFwibWVzc2FnZVwiKVxubGV0IHN0YWNrIHggPSBPanMub3B0aW9uX29mX2pzIE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5nZXRfcHJvcF9hc2NpaSAoY29lcmNlIHgpIFwic3RhY2tcIilcbmxldCB0b19zdHJpbmcgeCA9IE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5jYWxsIChjb2VyY2UgeCkgXCJ0b1N0cmluZ1wiIFt8fF0pXG5cbmV4Y2VwdGlvbiBFcnJvciA9IEpzb29fcnVudGltZS5FcnJvci5FeG5cblxubGV0ICgpID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgeCAtPiBTb21lICh0b19zdHJpbmcgeClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKVxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgdG9fanNfc3RyaW5nIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvU3RyaW5nXG5sZXQgdG9fanNfc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0ZpeGVkIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvUHJlY2lzaW9uIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0V4cG9uZW50aWFsXG5sZXQgdG9fc3RyaW5nIHZhbHVlID0gdG9fanNfc3RyaW5nIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBvcGVuIENvcmUgaW5cbiAgbGV0IHByaW50IGYgPSBwcmludGYgXCIlc1wiICh0b19zdHJpbmcgZikgaW5cbiAgcHJpbnQgMS47XG4gIFslZXhwZWN0IHt8IDEgfH1dO1xuICBwcmludCBGbG9hdC5uYW47XG4gIFslZXhwZWN0IHt8IE5hTiB8fV07XG4gIHByaW50IEZsb2F0LmluZmluaXR5O1xuICBbJWV4cGVjdCB7fCBJbmZpbml0eSB8fV07XG4gIHByaW50IEZsb2F0Lm5lZ19pbmZpbml0eTtcbiAgWyVleHBlY3Qge3wgLUluZmluaXR5IHx9XTtcbiAgcHJpbnQgMC4wMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMWUtOCB8fV07XG4gIHByaW50ICgtMS4pO1xuICBbJWV4cGVjdCB7fCAtMSB8fV07XG4gIHByaW50IDEuMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMS4wMDAwMDAxIHx9XVxuOztcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuaW5jbHVkZSBVaV9lZmZlY3RcblxuKCogQWxsIHZpc2liaWxpdHkgaGFuZGxlcnMgc2VlIGFsbCBldmVudHMsIHNvIGEgc2ltcGxlIGxpc3QgaXMgZW5vdWdoLiAgKilcbmxldCB2aXNpYmlsaXR5X2hhbmRsZXJzIDogKHVuaXQgLT4gdW5pdCkgbGlzdCByZWYgPSByZWYgW11cblxubW9kdWxlIHR5cGUgVmlzaWJpbGl0eV9oYW5kbGVyID0gc2lnXG4gIHZhbCBoYW5kbGUgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgRGVmaW5lX3Zpc2liaWxpdHkgKFZIIDogVmlzaWJpbGl0eV9oYW5kbGVyKSA9IHN0cnVjdFxuICBsZXQgKCkgPSB2aXNpYmlsaXR5X2hhbmRsZXJzIDo9IFZILmhhbmRsZSA6OiAhdmlzaWJpbGl0eV9oYW5kbGVyc1xuZW5kXG5cbnR5cGUgXyB0ICs9XG4gIHwgVmlld3BvcnRfY2hhbmdlZFxuICB8IFN0b3BfcHJvcGFnYXRpb25cbiAgfCBTdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvblxuICB8IFByZXZlbnRfZGVmYXVsdFxuXG5sZXQgc2VxdWVuY2VfYXNfc2libGluZyBsZWZ0IH51bmxlc3Nfc3RvcHBlZCA9XG4gIGxldCByZWMgY29udGFpbnNfc3RvcCA9IGZ1bmN0aW9uXG4gICAgfCBNYW55IGVzIC0+IExpc3QuZXhpc3RzIGVzIH5mOmNvbnRhaW5zX3N0b3BcbiAgICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgaWYgY29udGFpbnNfc3RvcCBsZWZ0IHRoZW4gbGVmdCBlbHNlIFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgdW5sZXNzX3N0b3BwZWQgKCkgXVxuOztcblxuKCogV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGRvbSBldmVudCBoZXJlIHNvIHRoYXRcbiAgIG1vdmVtZW50IGJldHdlZW4gW1Zkb20uRWZmZWN0LkV4cGVydC5oYW5kbGVdIGFuZFxuICAgW1VpX2NvbmNyZXRlLkVmZmVjdC5FeHBlcnQuaGFuZGxlXSBrZWVwcyB0aGUgb3JpZ2luYWxcbiAgIGRvbSBldmVudCBhcm91bmQuICopXG5sZXQgY3VycmVudF9kb21fZXZlbnQgPSByZWYgTm9uZVxuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OkNhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBWaWV3cG9ydF9jaGFuZ2VkKSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gTGlzdC5pdGVyICF2aXNpYmlsaXR5X2hhbmRsZXJzIH5mOihmdW4gZiAtPiBmICgpKSlcbjs7XG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6Q2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFN0b3BfcHJvcGFnYXRpb24pKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgUHJldmVudF9kZWZhdWx0KSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbS5wcmV2ZW50RGVmYXVsdClcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biA9IEV4cGVydC5oYW5kbGVcblxuICBsZXQgaGFuZGxlIGRvbV9ldmVudCBldmVudCA9XG4gICAgbGV0IG9sZCA9ICFjdXJyZW50X2RvbV9ldmVudCBpblxuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IFNvbWUgKGRvbV9ldmVudCA6PiBEb21faHRtbC5lbGVtZW50IERvbS5ldmVudCBKcy50KTtcbiAgICBFeHBlcnQuaGFuZGxlIGV2ZW50O1xuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IG9sZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBKc19vZl9vY2FtbFxuXG5tb2R1bGUgdHlwZSBTID0gSG9va3NfaW50Zi5TXG5cbmxldCBjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIGlkID0gRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBpZFxuXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgZiA9XG4gIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lIChKcy53cmFwX2NhbGxiYWNrIGYpXG47O1xuXG5tb2R1bGUgRXh0cmEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgKFQgeyB0eXBlX2lkOyB2YWx1ZSB9KSA9IFR5cGVfZXF1YWwuSWQudG9fc2V4cCB0eXBlX2lkIHZhbHVlXG5lbmRcblxudHlwZSB0ID1cbiAgfCBUIDpcbiAgICAgIHsgaW5wdXQgOiAnaW5wdXRcbiAgICAgIDsgaW5wdXRfaWQgOiAnaW5wdXQgVHlwZV9lcXVhbC5JZC50XG4gICAgICA7IGNvbWJpbmVfaW5wdXRzIDogJ2lucHV0IC0+ICdpbnB1dCAtPiAnaW5wdXRcbiAgICAgIDsgaW5pdCA6XG4gICAgICAgICAgJ2lucHV0XG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgIDsgdXBkYXRlIDpcbiAgICAgICAgICAnaW5wdXRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICA7IGRlc3Ryb3kgOlxuICAgICAgICAgICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gdW5pdFxuICAgICAgOyBpZCA6ICgnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZSkgQ29yZS5UeXBlX2VxdWFsLklkLnRcbiAgICAgIH1cbiAgICAgIC0+IHRcblxubGV0IGdlbmVyaWNfaG9vayA9IGxhenkgSnMuVW5zYWZlLihnZXQgZ2xvYmFsIChKcy5zdHJpbmcgXCJHZW5lcmljSG9va1wiKSlcblxubGV0IG1ha2VfaG9vayB+Y29tYmluZV9pbnB1dHMgfmluaXQgfmV4dHJhOihpbnB1dCwgaW5wdXRfaWQpIH51cGRhdGUgfmRlc3Ryb3kgfmlkID1cbiAgVCB7IGluaXQ7IGNvbWJpbmVfaW5wdXRzOyBpbnB1dDsgaW5wdXRfaWQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQgfVxuOztcblxubGV0IHBhY2sgKFQgeyBpbml0OyBpbnB1dDsgaW5wdXRfaWQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQ7IF8gfSkgPVxuICBsZXQgd3JhcCBhID0gYSB8PiBKcy53cmFwX2NhbGxiYWNrIHw+IEpzLlVuc2FmZS5pbmplY3QgaW5cbiAgbGV0IGluaXQgPSB3cmFwIChpbml0IGlucHV0KSBpblxuICBsZXQgdXBkYXRlID0gd3JhcCAodXBkYXRlIGlucHV0KSBpblxuICBsZXQgZGVzdHJveSA9IHdyYXAgZGVzdHJveSBpblxuICBsZXQgZ2VuZXJpY19ob29rID0gTGF6eS5mb3JjZSBnZW5lcmljX2hvb2sgaW5cbiAgbGV0IGV4dHJhID0gRXh0cmEuVCB7IHR5cGVfaWQgPSBpbnB1dF9pZDsgdmFsdWUgPSBpbnB1dCB9IGluXG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIGdlbmVyaWNfaG9va1xuICAgIFt8IGluaXQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQgfD4gSnMuVW5zYWZlLmluamVjdDsgZXh0cmEgfD4gSnMuVW5zYWZlLmluamVjdCB8XVxuOztcblxubGV0IGNvbWJpbmUgKFQgbGVmdCkgKFQgcmlnaHQpID1cbiAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3MgbGVmdC5pbnB1dF9pZCByaWdodC5pbnB1dF9pZCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGVwcmludF9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJob29rcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLCBzbyB0aGV5IGNhbm5vdCBiZSBjb21iaW5lZDsgdGFraW5nIHRoZSBzZWNvbmQgXFxcbiAgICAgICAgIG9mIHRoZSB0d29cIl07XG4gICAgVCByaWdodFxuICB8IFNvbWUgVCAtPiBUIHsgcmlnaHQgd2l0aCBpbnB1dCA9IHJpZ2h0LmNvbWJpbmVfaW5wdXRzIGxlZnQuaW5wdXQgcmlnaHQuaW5wdXQgfVxuOztcblxubW9kdWxlIE1ha2UgKFMgOiBTKSA9IHN0cnVjdFxuICBsZXQgaW5wdXRfYW5kX3N0YXRlX2lkID1cbiAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIlwiIChmdW4gKGlucHV0LCBfYW5pbWF0aW9uX2lkLCBzdGF0ZSkgLT5cbiAgICAgIFslc2V4cF9vZjogUy5JbnB1dC50ICogb3BhcXVlXSAoaW5wdXQsIHN0YXRlKSlcbiAgOztcblxuICBsZXQgaW5wdXRfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIlwiIFMuSW5wdXQuc2V4cF9vZl90XG5cbiAgbGV0IGluaXQgaW5wdXQgZWxlbWVudCA9XG4gICAgbGV0IHN0YXRlID0gUy5pbml0IGlucHV0IGVsZW1lbnQgaW5cbiAgICBsZXQgYW5pbWF0aW9uX2lkID1cbiAgICAgIHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIChmdW4gXyAtPiBTLm9uX21vdW50IGlucHV0IHN0YXRlIGVsZW1lbnQpXG4gICAgaW5cbiAgICBpbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgaW5wdXQgKG9sZF9pbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZSkgZWxlbWVudCA9XG4gICAgUy51cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0OmlucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGVcbiAgOztcblxuICBsZXQgZGVzdHJveSAob2xkX2lucHV0LCBhbmltYXRpb25faWQsIHN0YXRlKSBlbGVtZW50ID1cbiAgICBjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIGFuaW1hdGlvbl9pZDtcbiAgICBTLmRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnRcbiAgOztcblxuICBsZXQgY3JlYXRlIGlucHV0ID1cbiAgICBtYWtlX2hvb2tcbiAgICAgIH5leHRyYTooaW5wdXQsIGlucHV0X2lkKVxuICAgICAgfmNvbWJpbmVfaW5wdXRzOlMuSW5wdXQuY29tYmluZVxuICAgICAgfmlkOmlucHV0X2FuZF9zdGF0ZV9pZFxuICAgICAgfmluaXRcbiAgICAgIH51cGRhdGVcbiAgICAgIH5kZXN0cm95XG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IHR5cGVfaWQgPSBpbnB1dF9pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV4dHJhID0gRXh0cmFcbmVuZFxuIiwiW0BAQGpzLmR1bW15IFwiISEgVGhpcyBjb2RlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5fanNfYXBpICEhXCJdXG5bQEBAb2NhbWwud2FybmluZyBcIi03LTMyLTM5XCJdXG5vcGVuISBKc19vZl9vY2FtbFxub3BlbiEgR2VuX2pzX2FwaVxudHlwZSAoJ2EsICdiKSB0ID0gT2pzLnRcbmxldCByZWMgdF9vZl9qcyA6XG4gICdhICdiIC4gKE9qcy50IC0+ICdhKSAtPiAoT2pzLnQgLT4gJ2IpIC0+IE9qcy50IC0+ICgnYSwgJ2IpIHQgPSBmdW4gKHR5cGVcbiAgX19hKSAtPiBmdW4gKHR5cGUgX19iKSAtPlxuICBmdW4gKF9fYV9vZl9qcyA6IE9qcy50IC0+IF9fYSkgLT5cbiAgICBmdW4gKF9fYl9vZl9qcyA6IE9qcy50IC0+IF9fYikgLT4gZnVuICh4MiA6IE9qcy50KSAtPiB4MlxuYW5kIHRfdG9fanMgOiAnYSAnYiAuICgnYSAtPiBPanMudCkgLT4gKCdiIC0+IE9qcy50KSAtPiAoJ2EsICdiKSB0IC0+IE9qcy50ID1cbiAgZnVuICh0eXBlIF9fYSkgLT4gZnVuICh0eXBlIF9fYikgLT5cbiAgZnVuIChfX2FfdG9fanMgOiBfX2EgLT4gT2pzLnQpIC0+XG4gICAgZnVuIChfX2JfdG9fanMgOiBfX2IgLT4gT2pzLnQpIC0+IGZ1biAoeDEgOiBPanMudCkgLT4geDFcbmxldCAoY3JlYXRlIDogdW5pdCAtPiAoJ2EsICdiKSB0KSA9XG4gIGZ1biAoKSAtPlxuICAgIHRfb2ZfanMgT2JqLm1hZ2ljIE9iai5tYWdpY1xuICAgICAgKE9qcy5uZXdfb2JqIChPanMuZ2V0X3Byb3BfYXNjaWkgT2pzLmdsb2JhbCBcIk1hcFwiKSBbfHxdKVxubGV0IChzZXQgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICdiIC0+IHVuaXQpID1cbiAgZnVuICh4NyA6ICgnYSwgJ2IpIHQpIC0+XG4gICAgZnVuICh4NSA6ICdhKSAtPlxuICAgICAgZnVuICh4NiA6ICdiKSAtPlxuICAgICAgICBpZ25vcmVcbiAgICAgICAgICAoT2pzLmNhbGwgKHRfdG9fanMgT2JqLm1hZ2ljIE9iai5tYWdpYyB4NykgXCJzZXRcIlxuICAgICAgICAgICAgIFt8KE9iai5tYWdpYyB4NSk7KE9iai5tYWdpYyB4Nil8XSlcbmxldCAoZ2V0IDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYiBvcHRpb24pID1cbiAgZnVuICh4MTEgOiAoJ2EsICdiKSB0KSAtPlxuICAgIGZ1biAoeDEwIDogJ2EpIC0+XG4gICAgICBPanMub3B0aW9uX29mX2pzIE9iai5tYWdpY1xuICAgICAgICAoT2pzLmNhbGwgKHRfdG9fanMgT2JqLm1hZ2ljIE9iai5tYWdpYyB4MTEpIFwiZ2V0XCIgW3woT2JqLm1hZ2ljIHgxMCl8XSlcbmxldCAoZGVsZXRlIDogKCdhLCAnYikgdCAtPiAnYSAtPiB1bml0KSA9XG4gIGZ1biAoeDE2IDogKCdhLCAnYikgdCkgLT5cbiAgICBmdW4gKHgxNSA6ICdhKSAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChPanMuY2FsbCAodF90b19qcyBPYmoubWFnaWMgT2JqLm1hZ2ljIHgxNikgXCJkZWxldGVcIlxuICAgICAgICAgICBbfChPYmoubWFnaWMgeDE1KXxdKVxuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEdlbl9qc19hcGlcblxubW9kdWxlIE5hdGl2ZV9ub2RlIDogc2lnXG4gIHR5cGUgdCA9IERvbV9odG1sLmVsZW1lbnQgSnMudFxuXG4gIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICB2YWwgdF90b19qcyA6IHQgLT4gT2pzLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBEb21faHRtbC5lbGVtZW50IEpzLnRcblxuICBsZXQgdF9vZl9qcyB4ID0gU3RkbGliLk9iai5tYWdpYyB4XG4gIGxldCB0X3RvX2pzIHggPSBTdGRsaWIuT2JqLm1hZ2ljIHhcbmVuZFxuXG5tb2R1bGUgQXR0cnMgOiBzaWdcbiAgdHlwZSB0ID0gcHJpdmF0ZSBPanMudFxuXG4gIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICB2YWwgdF90b19qcyA6IHQgLT4gT2pzLnRcbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuICB2YWwgaGFzX3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgaGFzX2F0dHJpYnV0ZSA6IHQgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIHNldF9wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IE9qcy50IC0+IHVuaXRcbiAgdmFsIHNldF9hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiBPanMudCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gT2pzLnRcblxuICBsZXQgdF9vZl9qcyB4ID0geFxuICBsZXQgdF90b19qcyB4ID0geFxuICBsZXQgY3JlYXRlICgpIDogdCA9IE9qcy5lbXB0eV9vYmogKClcblxuICBsZXQgc2V0X3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+IE9qcy5zZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWVcbiAgOztcblxuICBsZXQgaGFzX3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gYm9vbCA9IE9qcy5oYXNfcHJvcGVydHlcblxuICBsZXQgaGFzX2F0dHJpYnV0ZSB0IG5hbWUgPVxuICAgIE9qcy5oYXNfcHJvcGVydHkgdCBcImF0dHJpYnV0ZXNcIlxuICAgICYmIE9qcy5oYXNfcHJvcGVydHkgKE9qcy5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lXG4gIDs7XG5cbiAgbGV0IHNldF9hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPVxuICAgIGZ1biB0IG5hbWUgdmFsdWUgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgKE9qcy5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSAoT2pzLnZhcmlhYmxlIFwidW5kZWZpbmVkXCIpXG4gICAgICB0aGVuIE9qcy5zZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiIChPanMuZW1wdHlfb2JqICgpKTtcbiAgICAgIE9qcy5zZXRfcHJvcF9hc2NpaSAoT2pzLmdldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIpIG5hbWUgdmFsdWVcbiAgOztcbmVuZFxuXG5tb2R1bGUgRWxlbWVudF9hcnJheSA9IHN0cnVjdFxuICAoKiBUaGlzIHR5cGUgbXVzdCBvbmx5IGJlIGluc3RhbnRpYXRlZCB3aXRoIE5vZGUudCBhcyB0aGVcbiAgICAgdHlwZSBwYXJhbWV0ZXIgYmVjYXVzZSBpdCBpZ25vcmVzIHRoZSBpbm5lci1tb3N0IGNvbnZlcnNpb25cbiAgICAgZnVuY3Rpb24uICBUaGlzIGlzIHNhZmUgYmVjYXVzZSBOb2RlLnQgaXMgZGVmaW5lZCBhcyBPanMudCxcbiAgICAgYnV0IHdlIGNhbid0IHRha2UgYWR2YW50YWdlIG9mIHRoYXQgZmFjdCBiZWNhdXNlIHRoZSBOb2RlXG4gICAgIG1vZHVsZSBpcyBnZW5lcmF0ZWQgdmlhIHBweC4gKilcblxuICB0eXBlICdhIHQgPSAnYSBKc19vZl9vY2FtbC5Kcy5qc19hcnJheSBKcy50XG5cbiAgbGV0IHRfb2ZfanMgOiBfIC0+IE9qcy50IC0+ICdhIHQgPSBmdW4gXyAtPiBDYW1sLk9iai5tYWdpY1xuICBsZXQgdF90b19qcyA6IF8gLT4gJ2EgdCAtPiBPanMudCA9IGZ1biBfIC0+IENhbWwuT2JqLm1hZ2ljXG5lbmRcblxubW9kdWxlIE5vZGUgPVxuICBbJWpzOlxuICAgIHR5cGUgdCA9IHByaXZhdGUgT2pzLnRcblxuICAgIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICAgIHZhbCB0X3RvX2pzIDogdCAtPiBPanMudFxuXG4gICAgdmFsIG5vZGUgOiBzdHJpbmcgLT4gQXR0cnMudCAtPiB0IEVsZW1lbnRfYXJyYXkudCAtPiBzdHJpbmcgb3B0aW9uIC0+IHRcbiAgICBbQEBqcy5uZXcgXCJWaXJ0dWFsRG9tLlZOb2RlXCJdXG5cbiAgICB2YWwgdGV4dCA6IHN0cmluZyAtPiB0IFtAQGpzLm5ldyBcIlZpcnR1YWxEb20uVlRleHRcIl1cblxuICAgIHZhbCBzdmcgOiBzdHJpbmcgLT4gQXR0cnMudCAtPiB0IEVsZW1lbnRfYXJyYXkudCAtPiBzdHJpbmcgb3B0aW9uIC0+IHRcbiAgICBbQEBqcy5uZXcgXCJWaXJ0dWFsRG9tLnN2Z1wiXVxuXG4gICAgdmFsIHRvX2RvbSA6IHQgLT4gTmF0aXZlX25vZGUudCBbQEBqcy5nbG9iYWwgXCJWaXJ0dWFsRG9tLmNyZWF0ZUVsZW1lbnRcIl1dXG5cbm1vZHVsZSBQYXRjaCA9XG4gIFslanM6XG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBPanMudFxuXG4gICAgdmFsIHRfb2ZfanMgOiBPanMudCAtPiB0XG4gICAgdmFsIHRfdG9fanMgOiB0IC0+IE9qcy50XG4gICAgdmFsIGNyZWF0ZSA6IHByZXZpb3VzOk5vZGUudCAtPiBjdXJyZW50Ok5vZGUudCAtPiB0IFtAQGpzLmdsb2JhbCBcIlZpcnR1YWxEb20uZGlmZlwiXVxuICAgIHZhbCBhcHBseSA6IE5hdGl2ZV9ub2RlLnQgLT4gdCAtPiBOYXRpdmVfbm9kZS50IFtAQGpzLmdsb2JhbCBcIlZpcnR1YWxEb20ucGF0Y2hcIl1cblxuICAgIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICAgIFtAQGpzLmN1c3RvbVxuICAgICAgbGV0IGlzX2VtcHR5ID1cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHJcbiAgICAgICAgICAgIHtqc3xcbiAgICAgICAgKGZ1bmN0aW9uIChwYXRjaCkge1xuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwYXRjaCkge1xuICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2EnKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgIHxqc31cbiAgICAgICAgaW5cbiAgICAgICAgZnVuICh0IDogdCkgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIGYgW3wgSnMuVW5zYWZlLmluamVjdCB0IHxdIHw+IEpzLnRvX2Jvb2xcbiAgICAgIDs7XV1cblxubW9kdWxlIFdpZGdldCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIFsncywgJ2VsZW1lbnRdIHdpZGdldCA9XG4gICAgb2JqZWN0XG4gICAgICBjb25zdHJhaW50ICdlbGVtZW50ID0gI0RvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgbWV0aG9kIHR5cGVfIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgKCogdmlydHVhbC1kb20gY29uc2lkZXJzIHR3byB3aWRnZXRzIG9mIGJlaW5nIG9mIHRoZSBzYW1lIFwia2luZFwiIGlmIGVpdGhlclxuICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBob2xkczpcblxuICAgICAgICAgMS4gVGhleSBib3RoIGhhdmUgYSBcIm5hbWVcIiBhdHRyaWJ1dGUgYW5kIHRoZWlyIFwiaWRcIiBmaWVsZHMgYXJlIGVxdWFsLlxuICAgICAgICAgKEkgdGhpbmsgdGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB2aXJ0dWFsLWRvbSBhbmQgaGF2ZSBmaWVsZCBhbiBpc3N1ZVxuICAgICAgICAgb24gZ2l0aHViOiBbaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9pc3N1ZXMvMzgwXSlcblxuICAgICAgICAgMi4gVGhlaXIgW2luaXRdIG1ldGhvZHMgYXJlIFwiPT09XCIgZXF1YWwuIFRoaXMgaXMgdHJ1ZSB3aGVuIHVzaW5nIHZpcnR1YWwtZG9tXG4gICAgICAgICB3aWRnZXRzIGluIHRoZSB1c3VhbCBzdHlsZSBpbiBKYXZhc2NyaXB0LCBzaW5jZSB0aGUgW2luaXRdIG1ldGhvZCB3aWxsIGJlIGRlZmluZWRcbiAgICAgICAgIG9uIGEgcHJvdG90eXBlLCBidXQgaXMgbm90IHRydWUgaW4gdGhpcyBiaW5kaW5nIGFzIGl0IGlzIHJlZGVmaW5lZCBmb3IgZWFjaFxuICAgICAgICAgY2FsbCB0byBbd2lkZ2V0XS5cblxuICAgICAgICAgU28sIHdlIGdvIHdpdGggb3B0aW9uIDEgYW5kIG11c3QgaGF2ZSBhIHRyaXZpYWwgZmllbGQgY2FsbGVkIFtuYW1lXS5cbiAgICAgICopXG4gICAgICBtZXRob2QgbmFtZSA6IHVuaXQgSnMud3JpdGVvbmx5X3Byb3BcbiAgICAgIG1ldGhvZCBpZCA6ICgncyAqICdlbGVtZW50KSBUeXBlX2VxdWFsLklkLnQgSnMucHJvcFxuICAgICAgbWV0aG9kIHN0YXRlIDogJ3MgSnMucHJvcFxuICAgICAgbWV0aG9kIGluZm8gOiBTZXhwLnQgTGF6eS50IG9wdGlvbiBKcy5wcm9wXG4gICAgICBtZXRob2QgZGVzdHJveSA6ICgnZWxlbWVudCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2QgdXBkYXRlIDpcbiAgICAgICAgKCgnb3RoZXJfc3RhdGUsICdvdGhlcl9lbGVtZW50KSB3aWRnZXQgSnMudCAtPiAnZWxlbWVudCAtPiAnZWxlbWVudCkgSnMuY2FsbGJhY2tcbiAgICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2QgaW5pdCA6ICh1bml0IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICAgIGVuZFxuXG4gICgqIFdlIG1vZGVsIEpTIGxldmVsIG9iamVjdHMgaGVyZSBzbyB0aGVyZSBpcyBhIGxvdCBvZiB0aHJvd2luZyBhd2F5IG9mIHR5cGVcbiAgICAgaW5mb3JtYXRpb24uICBXZSBjb3VsZCBwb3NzaWJseSB0cnkgdG8gcmVkaXNjb3ZlciBtb3JlIG9mIGl0LiAgT3IgbWF5YmUgd2VcbiAgICAgc2hvdWxkIHNlZSBpZiB3ZSBjYW4gZ2V0IHJpZCBXaWRnZXQgY29tcGxldGVseS5cbiAgICAgdGhlIHVuaXQgdHlwZSBwYXJhbWV0ZXJzIGhlcmUgYXJlIG5vdCBhY3R1YWxseSB1bml0LCBidXQgcGFydCBvZlxuICAgICB0aGUgdHlwZSBpbmZvIHdlIGhhdmUgdGhyb3duIGF3YXkgaW50byBvdXIgZGFuY2VcbiAgICAgd2l0aCBKUyAqKVxuICB0eXBlIHQgPSBOb2RlLnRcblxuICAoKiBoZXJlIGlzIGhvdyB3ZSB0aHJvdyBhd2F5IHR5cGUgaW5mb3JtYXRpb24uICBPdXIgZ29vZCBvbGQgZnJpZW5kIE9iai5tYWdpYyxcbiAgICAgYnV0IGNvbnN0cmFpbmVkIGEgbGl0dGxlIGJpdCAqKVxuICBleHRlcm5hbCBvanNfb2ZfanMgOiAoXywgXykgd2lkZ2V0IEpzLnQgLT4gT2pzLnQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIFN0YXRlX2tlZXBlciA9IHN0cnVjdFxuICAgIHR5cGUgYm94ID0gVCA6ICgnYSAqIF8pIFR5cGVfZXF1YWwuSWQudCAqICdhIC0+IGJveFxuXG4gICAgbGV0IHQgOiAoSnMuVW5zYWZlLmFueSwgYm94KSBKc19tYXAudCA9IEpzX21hcC5jcmVhdGUgKClcbiAgICBsZXQgc2V0IH5pZCBlbGVtZW50IHN0YXRlID0gSnNfbWFwLnNldCB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpIChUIChpZCwgc3RhdGUpKVxuXG4gICAgbGV0IGdldCA6IHR5cGUgYSBiLiBpZDooYSAqIGIpIFR5cGVfZXF1YWwuSWQudCAtPiBfIC0+IGEgPVxuICAgICAgZnVuIH5pZCBlbGVtZW50IC0+XG4gICAgICBsZXQgZWxlbWVudCA9IEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCBpblxuICAgICAgbWF0Y2ggSnNfbWFwLmdldCB0IGVsZW1lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBpZF9zZXhwID0gVHlwZV9lcXVhbC5JZC5zZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIpIGlkIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHOiBlbGVtZW50IHN0YXRlIG5vdCBmb3VuZFwiIChpZF9zZXhwIDogU2V4cC50KV1cbiAgICAgIHwgU29tZSAoVCAoZl9pZCwgc3RhdGUpKSAtPlxuICAgICAgICBsZXQgVCA9IFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBpZCBmX2lkIGluXG4gICAgICAgIHN0YXRlXG4gICAgOztcblxuICAgIGxldCBkZWxldGUgZWxlbWVudCA9IEpzX21hcC5kZWxldGUgdCAoSnMuVW5zYWZlLmluamVjdCBlbGVtZW50KVxuICBlbmRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgICh0eXBlIHMpXG4gICAgICAgID9pbmZvXG4gICAgICAgID8oZGVzdHJveSA6IHMgLT4gJ2VsZW1lbnQgLT4gdW5pdCA9IGZ1biBfIF8gLT4gKCkpXG4gICAgICAgID8odXBkYXRlIDogcyAtPiAnZWxlbWVudCAtPiBzICogJ2VsZW1lbnQgPSBmdW4gcyBlbHQgLT4gcywgZWx0KVxuICAgICAgICB+KGlkIDogKHMgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50KVxuICAgICAgICB+KGluaXQgOiB1bml0IC0+IHMgKiAnZWxlbWVudClcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IG9iaiA6IChzLCBfKSB3aWRnZXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIG9iaiMjLnR5cGVfIDo9IEpzLnN0cmluZyBcIldpZGdldFwiO1xuICAgIG9iaiMjLm5hbWUgOj0gKCk7XG4gICAgb2JqIyMuaWQgOj0gaWQ7XG4gICAgb2JqIyMuaW5mbyA6PSBpbmZvO1xuICAgIG9iaiMjLmluaXRcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgIGxldCBzMCwgZG9tX25vZGUgPSBpbml0ICgpIGluXG4gICAgICBTdGF0ZV9rZWVwZXIuc2V0IH5pZCBkb21fbm9kZSBzMDtcbiAgICAgIGRvbV9ub2RlKTtcbiAgICBvYmojIy51cGRhdGVcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJldiBkb21fbm9kZSAtPlxuICAgICAgKCogVGhlIFt1cGRhdGVdIG1ldGhvZCBvZiBbb2JqXSBpcyBvbmx5IGNhbGxlZCBieSB2aXJ0dWFsLWRvbSBhZnRlciBpdCBoYXMgY2hlY2tlZFxuICAgICAgICAgdGhhdCB0aGUgW2lkXXMgb2YgW3ByZXZdIGFuZCBbb2JqXSBhcmUgXCI9PT1cIiBlcXVhbC4gVGh1cyBbc2FtZV93aXRuZXNzX2V4bl0gd2lsbFxuICAgICAgICAgbmV2ZXIgcmFpc2UuICopXG4gICAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gcHJldiMjLmlkIGlkIHdpdGhcbiAgICAgIHwgVHlwZV9lcXVhbC5UIC0+XG4gICAgICAgIGxldCBwcmV2X3N0YXRlID0gU3RhdGVfa2VlcGVyLmdldCB+aWQgZG9tX25vZGUgaW5cbiAgICAgICAgbGV0IHN0YXRlJywgZG9tX25vZGUnID0gdXBkYXRlIHByZXZfc3RhdGUgZG9tX25vZGUgaW5cbiAgICAgICAgU3RhdGVfa2VlcGVyLmRlbGV0ZSBkb21fbm9kZTtcbiAgICAgICAgU3RhdGVfa2VlcGVyLnNldCB+aWQgZG9tX25vZGUnIHN0YXRlJztcbiAgICAgICAgZG9tX25vZGUnKTtcbiAgICBvYmojIy5kZXN0cm95XG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGRvbV9ub2RlIC0+XG4gICAgICBsZXQgcHJldl9zdGF0ZSA9IFN0YXRlX2tlZXBlci5nZXQgfmlkIGRvbV9ub2RlIGluXG4gICAgICBkZXN0cm95IHByZXZfc3RhdGUgZG9tX25vZGU7XG4gICAgICBTdGF0ZV9rZWVwZXIuZGVsZXRlIGRvbV9ub2RlKTtcbiAgICBOb2RlLnRfb2ZfanMgKG9qc19vZl9qcyBvYmopXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBWZG9tX3JhdyA9IFJhd1xuXG5sZXQgKCkgPVxuICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gIENzc19nZW4uUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA6PSBEb21fZmxvYXQudG9fc3RyaW5nX2ZpeGVkXG47O1xuXG4oKiogVGhpcyBoYXMgMyBraW5kcyBvZiBjb25zdHJ1Y3RvcnMuXG4gICAge3ZcbiAgICAgIC0gY29uc3RydWN0b3JzIGZvciBwcm9wZXJ0aWVzIC8gYXR0cmlidXRlcyBmb3Igd2hpY2ggd2VcbiAgICAgICAgaGF2ZSB3cml0dGVuIGZpcnN0IGNsYXNzIG9jYW1sIHJlcHJlc2VudGF0aW9ucyAoc28gZmFyIG9ubHkgU3R5bGUsXG4gICAgICAgIENsYXNzLCBhbmQgSGFuZGxlcilcblxuICAgICAgLSBUaG9zZSB3aGljaCB3ZSBpbW1lZGlhdGVseSBjb252ZXJ0IGludG8gSnMgY2FsbGVkIFJhdywgd2hpY2hcbiAgICAgICAgaW4gdHVybiBoYXMgdHdvIGNhc2VzOlxuICAgICAgICAtIFByb3BlcnR5IGZvciBwcm9wZXJ0aWVzIG9uIHRoZSBET01cbiAgICAgICAgLSBBdHRyaWJ1dGUgZm9yIGF0dHJpYnV0ZXMgb24gdGhlIERPTVxuXG4gICAgICAtIEhvb2tzLCB3aGljaCByZWdpc3RlciBjYWxsYmFja3Mgb24gcHJvcGVydHkgYWRkaXRpb24gYW5kIHJlbW92YWwuXG4gICAgdn1cblxuICAgIEdlbmVyYWxseSBzcGVha2luZyBvbmUgc2hvdWxkIGF2b2lkIGNyZWF0aW5nIGEgcHJvcGVydHkgb3IgYXR0cmlidXRlXG4gICAgZm9yIHNvbWV0aGluZyBmb3Igd2hpY2ggd2UgaGF2ZSBhIGZpcnN0IGNsYXNzIHJlcHJlc2VudGF0aW9uLlxuKilcblxubW9kdWxlIEV2ZW50X2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyBoYW5kbGVyIDogKCNEb21faHRtbC5ldmVudCBhcyAnYSkgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50XG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBjb21iaW5lXG4gICAgICAgIChUIHsgdHlwZV9pZCA9IGx0aWQ7IGhhbmRsZXIgPSBsaGFuZGxlciB9KVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBydGlkOyBoYW5kbGVyID0gcmhhbmRsZXIgfSBhcyByaWdodClcbiAgICA9XG4gICAgKCogSWYgdGhleSBhcmUgbm90IHRoZSBzYW1lIHdpdG5lc3MsIHRoZW4gaXQgaXMgYSBidWcgaW4gdmlydHVhbF9kb20sIHNpbmNlXG4gICAgICAgd2UgZG8gbm90IGV4cG9zZSBbb25dIGFueW1vcmUgd2hpY2ggbWVhbnMgdGhpcyBsaWJyYXJ5IGNhbiBkZXRlcm1pbmVkIHRoZVxuICAgICAgIFtUeXBlX2VxdWFsLklkXSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZXZlbnQuIHZpcnR1YWxfZG9tIG1haW50YWlucyB0aGVcbiAgICAgICBpbnZhcmlhbnQgdGhhdCBhbnkgdHdvIGV2ZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUgd2lsbCBwcm9kdWNlIGhhbmRsZXJzXG4gICAgICAgdGhhdCBoYXZlIHRoZSBzYW1lIFtUeXBlX2VxdWFsLklkXS4gKilcbiAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsdGlkIHJ0aWQgd2l0aFxuICAgIHwgU29tZSBUIC0+XG4gICAgICBUXG4gICAgICAgIHsgdHlwZV9pZCA9IGx0aWRcbiAgICAgICAgOyBoYW5kbGVyID1cbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgIEVmZmVjdC5zZXF1ZW5jZV9hc19zaWJsaW5nIChsaGFuZGxlciB2YWx1ZSkgfnVubGVzc19zdG9wcGVkOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgcmhhbmRsZXIgdmFsdWUpKVxuICAgICAgICB9XG4gICAgfCBOb25lIC0+XG4gICAgICBlcHJpbnRfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJVRyEgIFR5cGUtaWRzIGZvciBldmVudCBoYW5kbGVycyBkaWZmZXJcIlxuICAgICAgICAgICAgKGx0aWQgOiBfIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgICAgIChydGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXTtcbiAgICAgIHJpZ2h0XG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgfCBQcm9wZXJ0eSBvZlxuICAgICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA6IGJvb2xcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2YWx1ZSA6IEpzLlVuc2FmZS5hbnlcbiAgICAgIH1cbiAgfCBBdHRyaWJ1dGUgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgSGFuZGxlciBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhhbmRsZXIgOiBFdmVudF9oYW5kbGVyLnRcbiAgICAgIH1cbiAgfCBIb29rIG9mXG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgaG9vayA6IEhvb2tzLnRcbiAgICAgIH1cbiAgfCBTdHlsZSBvZiBDc3NfZ2VuLnRcbiAgfCBDbGFzcyBvZiAoc3RyaW5nLCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBTZXQudFxuICB8IE1hbnkgb2YgdCBsaXN0XG4gIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyBvZlxuICAgICAgdCBsaXN0ICogKENzc19nZW4udCAtPiBDc3NfZ2VuLnQpICogKFN0cmluZy5TZXQudCAtPiBTdHJpbmcuU2V0LnQpXG4gIHwgTWFueV93aXRob3V0X21lcmdlIG9mIHQgbGlzdFxuXG5sZXQgY3JlYXRlIG5hbWUgdmFsdWUgPVxuICBBdHRyaWJ1dGVcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHZhbHVlKSB9XG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0IG5hbWUgdmFsdWUgPVxuICBBdHRyaWJ1dGVcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2VcbiAgICA7IG5hbWVcbiAgICA7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoRG9tX2Zsb2F0LnRvX2pzX3N0cmluZyB2YWx1ZSlcbiAgICB9XG47O1xuXG5sZXQgcHJvcGVydHkgbmFtZSB2YWx1ZSA9IFByb3BlcnR5IHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgfVxuXG5sZXQgc3RyaW5nX3Byb3BlcnR5IG5hbWUgdmFsdWUgPVxuICBQcm9wZXJ0eVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdmFsdWUpIH1cbjs7XG5cbmxldCBib29sX3Byb3BlcnR5IG5hbWUgdmFsdWUgPVxuICBQcm9wZXJ0eVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5ib29sIHZhbHVlKSB9XG47O1xuXG5sZXQgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmdW5jdGlvblxuICB8IEF0dHJpYnV0ZSBhdHRyaWJ1dGUgLT4gQXR0cmlidXRlIHsgYXR0cmlidXRlIHdpdGggc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSB0cnVlIH1cbiAgfCBQcm9wZXJ0eSBwcm9wZXJ0eSAtPiBQcm9wZXJ0eSB7IHByb3BlcnR5IHdpdGggc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSB0cnVlIH1cbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBjcmVhdGVfaG9vayBuYW1lIGhvb2sgPSBIb29rIHsgbmFtZTsgaG9vayB9XG5sZXQgbWFueSBhdHRycyA9IE1hbnkgYXR0cnNcbmxldCBtYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgPSBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnNcbmxldCBlbXB0eSA9IE1hbnkgW11cbmxldCBjb21iaW5lIGxlZnQgcmlnaHQgPSBNYW55IFsgbGVmdDsgcmlnaHQgXVxubGV0ICggQCApID0gY29tYmluZVxuXG5leHRlcm5hbCBvanNfb2ZfYW55IDogSnMuVW5zYWZlLmFueSAtPiBHZW5fanNfYXBpLk9qcy50ID0gXCIlaWRlbnRpdHlcIlxuXG5tb2R1bGUgVW5tZXJnZWRfd2FybmluZ19tb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOb193YXJuaW5nc1xuICAgIHwgQWxsX3dhcm5pbmdzXG4gICAgfCBTdG9wX2FmdGVyX3F1b3RhIG9mIGludFxuXG4gIGxldCB3YXJuaW5nX2NvdW50ID0gcmVmIDBcbiAgbGV0IGN1cnJlbnQgPSByZWYgKFN0b3BfYWZ0ZXJfcXVvdGEgMTAwKVxuXG4gIGxldCB3YXJuX3MgcyA9XG4gICAgaW5jciB3YXJuaW5nX2NvdW50O1xuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IE5vX3dhcm5pbmdzIC0+ICgpXG4gICAgfCBBbGxfd2FybmluZ3MgLT4gZXByaW50X3Mgc1xuICAgIHwgU3RvcF9hZnRlcl9xdW90YSBxdW90YSAtPlxuICAgICAgbGV0IHdhcm5pbmdfY291bnQgPSAhd2FybmluZ19jb3VudCBpblxuICAgICAgaWYgd2FybmluZ19jb3VudCA8PSBxdW90YVxuICAgICAgdGhlbiAoXG4gICAgICAgIGVwcmludF9zIHM7XG4gICAgICAgIGlmIHdhcm5pbmdfY291bnQgPSBxdW90YVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZXByaW50X3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIldBUk5JTkc6IHJlYWNoZWQgd2FybmluZyBtZXNzYWdlIHF1b3RhOyBubyBtb3JlIG1lc3NhZ2VzIHdpbGwgYmUgcHJpbnRlZFwiXG4gICAgICAgICAgICAgICAgKHF1b3RhIDogaW50KV0pXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IHJlc2V0X3dhcm5pbmdfY291bnQgKCkgPSB3YXJuaW5nX2NvdW50IDo9IDBcbiAgZW5kXG5lbmRcblxudHlwZSBtZXJnZSA9XG4gIHsgc3R5bGVzIDogQ3NzX2dlbi50XG4gIDsgY2xhc3NlcyA6IFNldC5NKFN0cmluZykudFxuICA7IGhhbmRsZXJzIDogRXZlbnRfaGFuZGxlci50IE1hcC5NKFN0cmluZykudFxuICA7IGhvb2tzIDogSG9va3MudCBNYXAuTShTdHJpbmcpLnRcbiAgfVxuXG5sZXQgY29tYmluaW5nX21hcF9hZGQgbWFwIGtleSB2YWx1ZSB+Y29tYmluZSA9XG4gIE1hcC51cGRhdGUgbWFwIGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IFNvbWUgZXhpc3RpbmdfdmFsdWUgLT4gY29tYmluZSB+a2V5IGV4aXN0aW5nX3ZhbHVlIHZhbHVlXG4gICAgfCBOb25lIC0+IHZhbHVlKVxuOztcblxubGV0IGVtcHR5X21lcmdlID1cbiAgeyBzdHlsZXMgPSBDc3NfZ2VuLmVtcHR5XG4gIDsgY2xhc3NlcyA9IFNldC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgOyBoYW5kbGVycyA9IE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgOyBob29rcyA9IE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgfVxuOztcblxubGV0IHRvX3JhdyBhdHRyID1cbiAgbGV0IGF0dHJzID0gWyBhdHRyIF0gaW5cbiAgKCogV2hlbiBpbnB1dCBlbGVtZW50cyBoYXZlIHRoZWlyIHZhbHVlIHNldCB0byB3aGF0IGl0IGFscmVhZHkgaXNcbiAgICAgdGhlIGN1cnNvciBnZXRzIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIGZpZWxkIGV2ZW4gd2hlbiB0aGUgdXNlclxuICAgICBpcyBlZGl0aW5nIGluIHRoZSBtaWRkbGUuIFNvZnRTZXRIb29rIChmcm9tIC4vc29mdC1zZXQtaG9vay5qcylcbiAgICAgY29tcGFyZXMgYmVmb3JlIHNldHRpbmcsIGF2b2lkaW5nIHRoZSBwcm9ibGVtIGp1c3QgbGlrZSBpblxuICAgICBodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2Jsb2IvOTQ3ZWNmOTJiNjdkMjViYjY5M2EwZjYyNWZhOGU5MGMwOTk4ODdkNS92aXJ0dWFsLWh5cGVyc2NyaXB0L2luZGV4LmpzI0w0My1MNTFcblxuICAgICBub3RlIHRoYXQgRWxtJ3MgdmlydHVhbC1kb20gaW5jbHVkZXMgYSB3b3JrYXJvdW5kIGZvciB0aGlzIHNvXG4gICAgIGlmIHdlIHN3aXRjaCB0byB0aGF0IHRoZSB3b3JrYXJvdW5kIGhlcmUgd2lsbCBiZSB1bm5lY2Vzc2FyeS5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL2VsbS1sYW5nL3ZpcnR1YWwtZG9tL2Jsb2IvMTdiMzBmYjdkZTQ4NjcyNTY1ZDYyMjdkMzNjMDE3NmYwNzU3ODZkYi9zcmMvTmF0aXZlL1ZpcnR1YWxEb20uanMjTDQzNC1MNDM5XG4gICopXG4gIGxldCBhdHRyc19vYmogOiBWZG9tX3Jhdy5BdHRycy50ID0gVmRvbV9yYXcuQXR0cnMuY3JlYXRlICgpIGluXG4gICgqIFt0YWtlX3NlY29uZF8qXSBpcyB0aGUgdHJpdmlhbCBtZXJnZSBmdW5jdGlvbiAoaS5lLiBubyBtZXJnZSBhdCBhbGwpOyBpdFxuICAgICB0YWtlcyB0d28gYXR0cmlidXRlcyBvZiB0aGUgc2FtZSBraW5kLCBpZ25vcmVzIGEgZmlyc3QsIGFuZCBlbWl0c1xuICAgICBhIHdhcm5pbmcgaWYgW3dhcm5fYWJvdXRfdW5tZXJnZWRfYXR0cmlidXRlc10gaXMgZW5hYmxlZC4gKilcbiAgbGV0IHRha2Vfc2Vjb25kX3N0eWxlcyBmaXJzdCBzZWNvbmQgPVxuICAgIGlmIG5vdCAoQ3NzX2dlbi5pc19lbXB0eSBmaXJzdClcbiAgICB0aGVuXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBzdHlsZXNcIiAoZmlyc3QgOiBDc3NfZ2VuLnQpIChzZWNvbmQgOiBDc3NfZ2VuLnQpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2NsYXNzZXMgZmlyc3Qgc2Vjb25kID1cbiAgICBpZiBub3QgKFNldC5pc19lbXB0eSBmaXJzdClcbiAgICB0aGVuXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBjbGFzc2VzXCIgKGZpcnN0IDogU3RyaW5nLlNldC50KSAoc2Vjb25kIDogU3RyaW5nLlNldC50KV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9oYW5kbGVyIH5rZXk6bmFtZSBfZmlyc3Qgc2Vjb25kID1cbiAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhhbmRsZXJzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hvb2sgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3MgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBob29rc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgc2Vjb25kXG4gIGluXG4gICgqIFdlIG1lcmdlIGF0dHJpYnV0ZXMgd2hlbiB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSByYXcgYXR0cmlidXRlIG9iamVjdCxcbiAgICAgcmF0aGVyIHRoYW4gd2hlbiB0aGUgdXNlci1mYWNpbmcgbWVyZ2UgZnVuY3Rpb25zIChbbWFueV0sIFtjb21iaW5lXSwgYW5kXG4gICAgIFtAXSkgYXJlIGNhbGxlZC4gVGhpcyBzdHJhdGVneSBpcyBiZXR0ZXIgaW4gYm90aCBzcGVlZCBhbmQgbWVtb3J5IHVzYWdlLFxuICAgICBzaW5jZSBpdCBtZWFucyB3ZSBkbyBub3QgbmVlZCB0byBjb25jYXRlbmF0ZSB0aGUgbGlzdCBvZiBcInVubWVyZ2VhYmxlXCJcbiAgICAgYXR0cmlidXRlcyAoUHJvcGVydHkgYW5kIEF0dHJpYnV0ZSk7IGluc3RlYWQsIHdlIGNhbiBpdGVyYXRlIHRocm91Z2ggdGhlXG4gICAgIHRyZWUgb2YgYXR0cmlidXRlcyBhbmQgZWFnZXJseSB3cml0ZSB1bm1lcmdlYWJsZSBhdHRyaWJ1dGVzIHRvIHRoZVxuICAgICBhdHRyaWJ1dGUgb2JqZWN0IGFzIHdlIGZpbmQgdGhlbS4gSWYgdHdvIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgaGF2ZSB0aGVcbiAgICAgc2FtZSBuYW1lLCB0aGUgc2Vjb25kIHdpbGwgc2ltcGx5IG92ZXJ3cml0ZSB0aGUgZmlyc3QsIGFzIGRlc2lyZWQuXG5cbiAgICAgSW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIHRoZSBbTXVsdGldIG1vZHVsZSAodGhhdCBpcyxcbiAgICAgaXQgbXVzdCBiZSBwb3NzaWJsZSB0byBtZXJnZSBjbGFzc2VzIGFuZCBzdHlsZXMsIGJ1dCBub3QgaG9va3MgYW5kXG4gICAgIGhhbmRsZXJzKSwgd2UgaW50cm9kdWNlIHRoZSB3b3JrYXJvdW5kIGNvbnN0cnVjdG9yXG4gICAgIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXS5cblxuICAgICBUaGVyZSBhcmUgdGh1cyB0aHJlZSBjYXNlcyB0aGF0IGVhY2ggaGF2ZSBkaWZmZXJlbnQgbWVyZ2UgYmVoYXZpb3JzOlxuICAgICAtIFNpbXBsZSBsaXN0cyAtIG5vIG1lcmdpbmdcbiAgICAgLSBMaXN0cyB3cmFwcGVkIGluIGEgW01hbnldIC0gbWVyZ2VzIGNsYXNzZXMsIHN0eWxlcywgaG9va3MsIGFuZCBoYW5kbGVyc1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc10gLSBtZXJnZXMgY2xhc3NlcyBhbmQgc3R5bGVzXG5cbiAgICAgVG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIG1hdGNoIGV4cHJlc3Npb24gbG9naWMsIHdlIHBhcmVtZXRlcml6ZSBpdCBieSB0aGVcbiAgICAgbWVyZ2luZyBiZWhhdmlvciwgc2luY2UgXCJubyBtZXJnZVwiIHJlYWxseSBtZWFucyBcIm1lcmdlIGJ5IHRha2luZyB0aGVcbiAgICAgc2Vjb25kIG9uZVwiLiAqKVxuICBsZXQgcmVjIG1lcmdlIH5jb21iaW5lX2hvb2sgfmNvbWJpbmVfaGFuZGxlciB+Y29tYmluZV9zdHlsZXMgfmNvbWJpbmVfY2xhc3NlcyBhY2MgPVxuICAgIExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgYXR0ciAtPlxuICAgICAgbWF0Y2ggYXR0ciB3aXRoXG4gICAgICB8IFByb3BlcnR5IHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3M7IG5hbWU7IHZhbHVlIH0gLT5cbiAgICAgICAgaWYgUmF3LkF0dHJzLmhhc19wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgcHJvcGVydGllc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIChtYXRjaCBuYW1lIHdpdGhcbiAgICAgICAgIHwgXCJ2YWx1ZVwiIC0+XG4gICAgICAgICAgIGxldCBzb2Z0U2V0SG9vayB4IDogR2VuX2pzX2FwaS5PanMudCA9IEpzLlVuc2FmZS5nbG9iYWwgIyMgU29mdFNldEhvb2sgeCBpblxuICAgICAgICAgICBsZXQgdmFsdWUgPSBzb2Z0U2V0SG9vayB2YWx1ZSBpblxuICAgICAgICAgICBWZG9tX3Jhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIFwidmFsdWVcIiB2YWx1ZVxuICAgICAgICAgfCBuYW1lIC0+IFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgKG9qc19vZl9hbnkgdmFsdWUpKTtcbiAgICAgICAgYWNjXG4gICAgICB8IEF0dHJpYnV0ZSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzOyBuYW1lOyB2YWx1ZSB9IC0+XG4gICAgICAgIGlmIFJhdy5BdHRycy5oYXNfYXR0cmlidXRlIGF0dHJzX29iaiBuYW1lICYmIG5vdCBzdXBwcmVzc19tZXJnZV93YXJuaW5nc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBhdHRyaWJ1dGVzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICAgICAgUmF3LkF0dHJzLnNldF9hdHRyaWJ1dGUgYXR0cnNfb2JqIG5hbWUgKG9qc19vZl9hbnkgdmFsdWUpO1xuICAgICAgICBhY2NcbiAgICAgIHwgU3R5bGUgbmV3X3N0eWxlcyAtPiB7IGFjYyB3aXRoIHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgbmV3X3N0eWxlcyB9XG4gICAgICB8IENsYXNzIG5ld19jbGFzc2VzIC0+XG4gICAgICAgIHsgYWNjIHdpdGggY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBuZXdfY2xhc3NlcyB9XG4gICAgICB8IEhvb2sgeyBuYW1lOyBob29rIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aCBob29rcyA9IGNvbWJpbmluZ19tYXBfYWRkIGFjYy5ob29rcyBuYW1lIGhvb2sgfmNvbWJpbmU6Y29tYmluZV9ob29rIH1cbiAgICAgIHwgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgfSAtPlxuICAgICAgICB7IGFjYyB3aXRoXG4gICAgICAgICAgaGFuZGxlcnMgPVxuICAgICAgICAgICAgY29tYmluaW5nX21hcF9hZGQgYWNjLmhhbmRsZXJzIG5hbWUgaGFuZGxlciB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgfVxuICAgICAgfCBNYW55IGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOihmdW4gfmtleTpfIC0+IEhvb2tzLmNvbWJpbmUpXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOihmdW4gfmtleTpfIC0+IEV2ZW50X2hhbmRsZXIuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczpDc3NfZ2VuLmNvbWJpbmVcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6U2V0LnVuaW9uXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBtYXBfc3R5bGVzLCBtYXBfY2xhc3NlcykgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6Q3NzX2dlbi5jb21iaW5lXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOlNldC51bmlvblxuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gbWFwX3N0eWxlcyAoY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzKVxuICAgICAgICA7IGNsYXNzZXMgPSBtYXBfY2xhc3NlcyAoY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzKVxuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfVxuICAgICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6dGFrZV9zZWNvbmRfc3R5bGVzXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOnRha2Vfc2Vjb25kX2NsYXNzZXNcbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlc1xuICAgICAgICA7IGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgc3ViX21lcmdlLmNsYXNzZXNcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH0pXG4gIGluXG4gIGxldCBtZXJnZSA9XG4gICAgbWVyZ2VcbiAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICB+Y29tYmluZV9zdHlsZXM6dGFrZV9zZWNvbmRfc3R5bGVzXG4gICAgICB+Y29tYmluZV9jbGFzc2VzOnRha2Vfc2Vjb25kX2NsYXNzZXNcbiAgICAgIGVtcHR5X21lcmdlXG4gICAgICBhdHRyc1xuICBpblxuICBNYXAuaXRlcmkgbWVyZ2UuaG9va3MgfmY6KGZ1biB+a2V5Om5hbWUgfmRhdGE6aG9vayAtPlxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgKG9qc19vZl9hbnkgKEhvb2tzLnBhY2sgaG9vaykpKTtcbiAgTWFwLml0ZXJpIG1lcmdlLmhhbmRsZXJzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOihFdmVudF9oYW5kbGVyLlQgeyBoYW5kbGVyOyBfIH0pIC0+XG4gICAgbGV0IGYgZSA9XG4gICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZSBlIChoYW5kbGVyIGUpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHlcbiAgICAgIGF0dHJzX29ialxuICAgICAgKFwib25cIiBeIG5hbWUpXG4gICAgICAob2pzX29mX2FueSAoSnMuVW5zYWZlLmluamVjdCAoRG9tLmhhbmRsZXIgZikpKSk7XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IChDc3NfZ2VuLmlzX2VtcHR5IG1lcmdlLnN0eWxlcylcbiAgICB0aGVuIChcbiAgICAgIGxldCBwcm9wcyA9IENzc19nZW4udG9fc3RyaW5nX2xpc3QgbWVyZ2Uuc3R5bGVzIGluXG4gICAgICBsZXQgb2JqID0gR2VuX2pzX2FwaS5PanMuZW1wdHlfb2JqICgpIGluXG4gICAgICBMaXN0Lml0ZXIgcHJvcHMgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgICAgR2VuX2pzX2FwaS5PanMuc2V0X3Byb3BfYXNjaWkgb2JqIGsgKEdlbl9qc19hcGkuT2pzLnN0cmluZ190b19qcyB2KSk7XG4gICAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBcInN0eWxlXCIgb2JqKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIFNldC5pc19lbXB0eSBtZXJnZS5jbGFzc2VzXG4gICAgdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlXG4gICAgICAgIGF0dHJzX29ialxuICAgICAgICBcImNsYXNzXCJcbiAgICAgICAgKEdlbl9qc19hcGkuT2pzLnN0cmluZ190b19qcyAoU3RyaW5nLmNvbmNhdCAoU2V0LnRvX2xpc3QgbWVyZ2UuY2xhc3NlcykgfnNlcDpcIiBcIikpXG4gIGluXG4gIGF0dHJzX29ialxuOztcblxubGV0IHRvX3JhdyBhdHRyID1cbiAgbWF0Y2ggYXR0ciB3aXRoXG4gIHwgTWFueSBbXSB8IE1hbnlfd2l0aG91dF9tZXJnZSBbXSAtPiBSYXcuQXR0cnMuY3JlYXRlICgpXG4gIHwgYXR0ciAtPiB0b19yYXcgYXR0clxuOztcblxubGV0IHN0eWxlIGNzcyA9IFN0eWxlIGNzc1xuXG5sZXQgdmFsaWRfY2xhc3NfbmFtZSBzID1cbiAgbGV0IGludmFsaWQgPSBTdHJpbmcuaXNfZW1wdHkgcyB8fCBTdHJpbmcuZXhpc3RzIHMgfmY6Q2hhci5pc193aGl0ZXNwYWNlIGluXG4gIG5vdCBpbnZhbGlkXG47O1xuXG5sZXQldGVzdCBcInZhbGlkXCIgPSB2YWxpZF9jbGFzc19uYW1lIFwiZm9vLWJhclwiXG5sZXQldGVzdCBcImludmFsaWQtZW1wdHlcIiA9IG5vdCAodmFsaWRfY2xhc3NfbmFtZSBcIlwiKVxubGV0JXRlc3QgXCJpbnZhbGlkLXNwYWNlXCIgPSBub3QgKHZhbGlkX2NsYXNzX25hbWUgXCJmb28gYmFyXCIpXG5cbmxldCBjbGFzc18gY2xhc3NuYW1lID1cbiAgaWYgbm90ICh2YWxpZF9jbGFzc19uYW1lIGNsYXNzbmFtZSlcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgY2xhc3NuYW1lXCIgKGNsYXNzbmFtZSA6IHN0cmluZyldO1xuICBDbGFzcyAoU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZykgY2xhc3NuYW1lKVxuOztcblxubGV0IGNsYXNzZXMnIGNsYXNzZXMgPSBDbGFzcyBjbGFzc2VzXG5cbmxldCBjbGFzc2VzIGNsYXNzbmFtZXMgPVxuICBpZiBub3QgKExpc3QuZm9yX2FsbCB+Zjp2YWxpZF9jbGFzc19uYW1lIGNsYXNzbmFtZXMpXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnZhbGlkIGNsYXNzbmFtZXNcIiAoY2xhc3NuYW1lcyA6IHN0cmluZyBsaXN0KV07XG4gIGNsYXNzZXMnIChTZXQub2ZfbGlzdCAobW9kdWxlIFN0cmluZykgY2xhc3NuYW1lcylcbjs7XG5cbmxldCBpZCBzID0gY3JlYXRlIFwiaWRcIiBzXG5sZXQgbmFtZSBzID0gY3JlYXRlIFwibmFtZVwiIHNcbmxldCBocmVmIHIgPSBjcmVhdGUgXCJocmVmXCIgclxubGV0IHRhcmdldCBzID0gY3JlYXRlIFwidGFyZ2V0XCIgc1xubGV0IGNoZWNrZWQgPSBjcmVhdGUgXCJjaGVja2VkXCIgXCJcIlxubGV0IHNlbGVjdGVkID0gY3JlYXRlIFwic2VsZWN0ZWRcIiBcIlwiXG5sZXQgaGlkZGVuID0gY3JlYXRlIFwiaGlkZGVuXCIgXCJcIlxubGV0IHJlYWRvbmx5ID0gY3JlYXRlIFwicmVhZG9ubHlcIiBcIlwiXG5sZXQgZGlzYWJsZWQgPSBjcmVhdGUgXCJkaXNhYmxlZFwiIFwiXCJcbmxldCBwbGFjZWhvbGRlciB4ID0gY3JlYXRlIFwicGxhY2Vob2xkZXJcIiB4XG5cbmxldCBhdXRvZm9jdXMgPSBmdW5jdGlvblxuICB8IHRydWUgLT4gY3JlYXRlIFwiYXV0b2ZvY3VzXCIgXCJcIlxuICB8IGZhbHNlIC0+IGVtcHR5XG47O1xuXG5sZXQgZm9yXyB4ID0gY3JlYXRlIFwiZm9yXCIgeFxubGV0IHR5cGVfIHggPSBjcmVhdGUgXCJ0eXBlXCIgeFxubGV0IHZhbHVlIHggPSBjcmVhdGUgXCJ2YWx1ZVwiIHhcbmxldCB2YWx1ZV9wcm9wIHggPSBzdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIHhcbmxldCB0YWJpbmRleCB4ID0gY3JlYXRlIFwidGFiaW5kZXhcIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IHRpdGxlIHggPSBjcmVhdGUgXCJ0aXRsZVwiIHhcbmxldCBzcmMgeCA9IGNyZWF0ZSBcInNyY1wiIHhcbmxldCBtaW4geCA9IGNyZWF0ZV9mbG9hdCBcIm1pblwiIHhcbmxldCBtYXggeCA9IGNyZWF0ZV9mbG9hdCBcIm1heFwiIHhcbmxldCBjb2xzcGFuIHggPSBjcmVhdGUgXCJjb2xzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCByb3dzcGFuIHggPSBjcmVhdGUgXCJyb3dzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCBkcmFnZ2FibGUgYiA9IGNyZWF0ZSBcImRyYWdnYWJsZVwiIChCb29sLnRvX3N0cmluZyBiKVxuXG5tb2R1bGUgVHlwZV9pZCA9IHN0cnVjdFxuICAoKiBXZSBwcm92aWRlIGEgdHJpdmlhbCBbdG9fc2V4cF0gZnVuY3Rpb24gc2luY2Ugd2Ugb25seSB3YW50XG4gICAgIHRvIHVuaWZ5IHR5cGUgaWRzIGFuZCBub3QgY29udmVydCB0eXBlcyB0byBpZHMgKilcbiAgbGV0IGNyZWF0ZSBuYW1lID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgKGZ1biBfIC0+IFNleHBsaWIuU2V4cC5MaXN0IFtdKVxuICBsZXQgKGV2ZW50IDogRG9tX2h0bWwuZXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImV2ZW50XCJcbiAgbGV0IChmb2N1cyA6IERvbV9odG1sLmZvY3VzRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImZvY3VzRXZlbnRcIlxuICBsZXQgKG1vdXNlIDogRG9tX2h0bWwubW91c2VFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwibW91c2VFdmVudFwiXG4gIGxldCAoa2V5Ym9hcmQgOiBEb21faHRtbC5rZXlib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJrZXlib2FyZEV2ZW50XCJcbiAgbGV0IChzdWJtaXQgOiBEb21faHRtbC5zdWJtaXRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwic3VibWl0RXZlbnRcIlxuICBsZXQgKG1vdXNld2hlZWwgOiBEb21faHRtbC5tb3VzZXdoZWVsRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNld2hlZWxFdmVudFwiXG4gIGxldCAoY2xpcGJvYXJkIDogRG9tX2h0bWwuY2xpcGJvYXJkRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImNsaXBib2FyZEV2ZW50XCJcbiAgbGV0IChkcmFnIDogRG9tX2h0bWwuZHJhZ0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJkcmFnRXZlbnRcIlxuICBsZXQgKHBvaW50ZXIgOiBEb21faHRtbC5wb2ludGVyRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInBvaW50ZXJFdmVudFwiXG4gIGxldCAoYW5pbWF0aW9uIDogRG9tX2h0bWwuYW5pbWF0aW9uRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImFuaW1hdGlvbkV2ZW50XCJcbmVuZFxuXG5sZXQgb24gdHlwZV9pZCBuYW1lIChoYW5kbGVyIDogI0RvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCkgOiB0ID1cbiAgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgPSBUIHsgaGFuZGxlcjsgdHlwZV9pZCB9IH1cbjs7XG5cbmxldCBvbl9mb2N1cyA9IG9uIFR5cGVfaWQuZm9jdXMgXCJmb2N1c1wiXG5sZXQgb25fYmx1ciA9IG9uIFR5cGVfaWQuZm9jdXMgXCJibHVyXCJcbmxldCBvbl9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJjbGlja1wiXG5sZXQgb25fY29udGV4dG1lbnUgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY29udGV4dG1lbnVcIlxubGV0IG9uX2RvdWJsZV9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJkYmxjbGlja1wiXG5sZXQgb25fZHJhZyA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdcIlxubGV0IG9uX2RyYWdzdGFydCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdzdGFydFwiXG5sZXQgb25fZHJhZ2VuZCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbmRcIlxubGV0IG9uX2RyYWdlbnRlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbnRlclwiXG5sZXQgb25fZHJhZ2xlYXZlID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2xlYXZlXCJcbmxldCBvbl9kcmFnb3ZlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdvdmVyXCJcbmxldCBvbl9kcm9wID0gb24gVHlwZV9pZC5kcmFnIFwiZHJvcFwiXG5sZXQgb25fbW91c2Vtb3ZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbW92ZVwiXG5sZXQgb25fbW91c2V1cCA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZXVwXCJcbmxldCBvbl9tb3VzZWRvd24gPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2Vkb3duXCJcbmxldCBvbl9tb3VzZWVudGVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZW50ZXJcIlxubGV0IG9uX21vdXNlbGVhdmUgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VsZWF2ZVwiXG5sZXQgb25fbW91c2VvdmVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3ZlclwiXG5sZXQgb25fbW91c2VvdXQgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VvdXRcIlxubGV0IG9uX2tleXVwID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleXVwXCJcbmxldCBvbl9rZXlwcmVzcyA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlwcmVzc1wiXG5sZXQgb25fa2V5ZG93biA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlkb3duXCJcbmxldCBvbl9zY3JvbGwgPSBvbiBUeXBlX2lkLmV2ZW50IFwic2Nyb2xsXCJcbmxldCBvbl9zdWJtaXQgPSBvbiBUeXBlX2lkLnN1Ym1pdCBcInN1Ym1pdFwiXG5sZXQgb25fcG9pbnRlcmRvd24gPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVyZG93blwiXG5sZXQgb25fcG9pbnRlcnVwID0gb24gVHlwZV9pZC5wb2ludGVyIFwicG9pbnRlcnVwXCJcbmxldCBvbl9tb3VzZXdoZWVsID0gb24gVHlwZV9pZC5tb3VzZXdoZWVsIFwibW91c2V3aGVlbFwiXG5sZXQgb25fY29weSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY29weVwiXG5sZXQgb25fY3V0ID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJjdXRcIlxubGV0IG9uX3Bhc3RlID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJwYXN0ZVwiXG5sZXQgb25fcmVzZXQgPSBvbiBUeXBlX2lkLmV2ZW50IFwicmVzZXRcIlxubGV0IG9uX2FuaW1hdGlvbmVuZCA9IG9uIFR5cGVfaWQuYW5pbWF0aW9uIFwiYW5pbWF0aW9uZW5kXCJcbmxldCBjb25zdF9pZ25vcmUgXyA9IEVmZmVjdC5JZ25vcmVcblxuY2xhc3MgdHlwZSB2YWx1ZV9lbGVtZW50ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBEb21faHRtbC5lbGVtZW50XG4gICAgbWV0aG9kIHZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxudHlwZSB2YWx1ZV9jb2VyY2lvbiA9IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2YWx1ZV9lbGVtZW50IEpzLnQgSnMub3B0XG5cbmxldCBydW5fY29lcmNpb24gY29lcmNpb24gdGFyZ2V0IHByZXYgPVxuICBtYXRjaCBwcmV2IHdpdGhcbiAgfCBTb21lIF8gLT4gcHJldlxuICB8IE5vbmUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNpb24gdGFyZ2V0KVxuOztcblxubGV0IGNvZXJjZV92YWx1ZV9lbGVtZW50IHRhcmdldCA9XG4gIGxldCBvcGVuIERvbV9odG1sLkNvZXJjZVRvIGluXG4gIE5vbmVcbiAgfD4gcnVuX2NvZXJjaW9uIChpbnB1dCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAoc2VsZWN0IDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbiAgfD4gcnVuX2NvZXJjaW9uICh0ZXh0YXJlYSA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG47O1xuXG5sZXQgb25faW5wdXRfZXZlbnQgdHlwZV9pZCBldmVudCBoYW5kbGVyID1cbiAgb24gdHlwZV9pZCBldmVudCAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgIChjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQpXG4gICAgICAgIH5kZWZhdWx0OkVmZmVjdC5JZ25vcmVcbiAgICAgICAgfmY6KGZ1biB0YXJnZXQgLT5cbiAgICAgICAgICBsZXQgdGV4dCA9IEpzLnRvX3N0cmluZyB0YXJnZXQjIy52YWx1ZSBpblxuICAgICAgICAgIGhhbmRsZXIgZXYgdGV4dCkpKVxuOztcblxubGV0IG9uX2NoYW5nZSA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJjaGFuZ2VcIlxubGV0IG9uX2lucHV0ID0gb25faW5wdXRfZXZlbnQgVHlwZV9pZC5ldmVudCBcImlucHV0XCJcbmxldCB0b19yYXcgbCA9IHRvX3JhdyBsXG5cbmxldCBvbl9maWxlX2lucHV0IGhhbmRsZXIgPVxuICBvbiBUeXBlX2lkLmV2ZW50IFwiaW5wdXRcIiAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBKcy5PcHQuY2FzZSAoRG9tX2h0bWwuQ29lcmNlVG8uaW5wdXQgdGFyZ2V0KSBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgICAgSnMuT3B0ZGVmLmNhc2UgdGFyZ2V0IyMuZmlsZXMgY29uc3RfaWdub3JlIChmdW4gZmlsZXMgLT4gaGFuZGxlciBldiBmaWxlcykpKSlcbjs7XG5cbm1vZHVsZSBBbHdheXNfZm9jdXNfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml0XG5cbiAgICAgIGxldCBjb21iaW5lICgpICgpID0gKClcbiAgICBlbmRcblxuICAgIGxldCBpbml0ICgpIF8gPSAoKVxuICAgIGxldCBvbl9tb3VudCAoKSAoKSBlbGVtZW50ID0gZWxlbWVudCMjZm9jdXNcbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6KCkgfm5ld19pbnB1dDooKSAoKSBfID0gKClcbiAgICBsZXQgZGVzdHJveSAoKSAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSA9XG4gICAgKCogQXBwZW5kIHRoZSBpZCB0byB0aGUgbmFtZSBvZiB0aGUgaG9vayB0byBlbnN1cmUgdGhhdCBpdCBpcyBkaXN0aW5jdFxuICAgICAgIGZyb20gYWxsIG90aGVyIGZvY3VzIGhvb2tzLiAqKVxuICAgIGNyZWF0ZV9ob29rIFwiYWx3YXlzLWZvY3VzLWhvb2tcIiAoSG9vay5jcmVhdGUgKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFNpbmdsZV9mb2N1c19ob29rICgpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuXG4gICAgbGV0IGhhc19iZWVuX3VzZWQgPSByZWYgZmFsc2VcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHVuaXQgVWlfZWZmZWN0LnRbQHNleHAub3BhcXVlXSkgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgcmlnaHQgXVxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgXyBfID0gKClcblxuICAgIGxldCBvbl9tb3VudCBldmVudCAoKSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAhaGFzX2JlZW5fdXNlZFxuICAgICAgdGhlbiAoXG4gICAgICAgIGhhc19iZWVuX3VzZWQgOj0gdHJ1ZTtcbiAgICAgICAgZWxlbWVudCMjZm9jdXM7XG4gICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIGV2ZW50KVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6XyB+bmV3X2lucHV0Ol8gKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSB+YWZ0ZXIgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcInNpbmdsZS1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlIGFmdGVyKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuXG4gIHR5cGUgYXR0ciA9IHRcbiAgdHlwZSB0ID0gYXR0ciBsaXN0XG5cbiAgbGV0IG1hcF9zdHlsZSB0IH5mID0gWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBmLCBGbi5pZCkgXVxuXG4gIGxldCBhZGRfY2xhc3MgdCBjID1cbiAgICBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIEZuLmlkLCBmdW4gY3MgLT4gU2V0LmFkZCBjcyBjKSBdXG4gIDs7XG5cbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfc3R5bGUgdCB+ZjooZnVuIHNzIC0+IENzc19nZW4uY29tYmluZSBzcyBzKVxuXG4gIGxldCBtZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgdCA9XG4gICAgWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgRm4uaWQpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCByZWMgZmlsdGVyX2J5X2tpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBQcm9wZXJ0eSBfIC0+IGlmIGYgYFByb3BlcnR5IHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBBdHRyaWJ1dGUgXyAtPiBpZiBmIGBBdHRyaWJ1dGUgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEhvb2sgXyAtPiBpZiBmIGBIb29rIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBIYW5kbGVyIF8gLT4gaWYgZiBgSGFuZGxlciB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgU3R5bGUgXyAtPiBpZiBmIGBTdHlsZSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgQ2xhc3MgXyAtPiBpZiBmIGBDbGFzcyB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgTWFueSBhdHRycyAtPiBNYW55IChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpKVxuICAgIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoYXR0cnMsIGEsIGIpIC0+XG4gICAgICBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpLCBhLCBiKVxuICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+XG4gICAgICBNYW55X3dpdGhvdXRfbWVyZ2UgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZikpXG4gIDs7XG5cbiAgbGV0IHJlYyBjb250YWluc19uYW1lIGxvb2tpbmdfZm9yID0gZnVuY3Rpb25cbiAgICB8IFByb3BlcnR5IHsgbmFtZTsgXyB9IHwgQXR0cmlidXRlIHsgbmFtZTsgXyB9IHwgSG9vayB7IG5hbWU7IF8gfSAtPlxuICAgICAgU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIG5hbWVcbiAgICB8IEhhbmRsZXIgeyBuYW1lOyBfIH0gLT4gU3RyaW5nLmVxdWFsIChcIm9uXCIgXiBuYW1lKSBsb29raW5nX2ZvclxuICAgIHwgU3R5bGUgXyAtPiBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgXCJzdHlsZVwiXG4gICAgfCBDbGFzcyBfIC0+IFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBcImNsYXNzXCJcbiAgICB8IE1hbnkgYXR0cnNcbiAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBfLCBfKVxuICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+IExpc3QuZXhpc3RzIH5mOihjb250YWluc19uYW1lIGxvb2tpbmdfZm9yKSBhdHRyc1xuICA7O1xuZW5kXG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBNYWtlIChYIDogc2lnXG4gICAgdmFsIGV2ZW50X2tpbmQgOiBEb21faHRtbC5tb3VzZUV2ZW50IEpzLnQgRG9tLkV2ZW50LnR5cFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIEhvb2tzLk1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IERvbV9odG1sLm1vdXNlRXZlbnQgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IGNvbWJpbmUgZiBnIGV2ZW50ID0gVWlfZWZmZWN0Lk1hbnkgWyBmIGV2ZW50OyBnIGV2ZW50IF1cbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0geyBtdXRhYmxlIGxpc3RlbmVyIDogKERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkW0BzZXhwLm9wYXF1ZV0pIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBsZXQgc2V0IGYgPVxuICAgICAgICBsZXQgaGFuZGxlciA9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBldiAtPlxuICAgICAgICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGVfbm9uX2RvbV9ldmVudF9leG4gKGYgZXYpO1xuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICAgIGluXG4gICAgICAgIERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXIgRG9tX2h0bWwud2luZG93IFguZXZlbnRfa2luZCBoYW5kbGVyIEpzLl90cnVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW5pdCBmIF9lbGVtZW50ID0geyBTdGF0ZS5saXN0ZW5lciA9IHNldCBmIH1cbiAgICAgIGxldCBkZXN0cm95IF9pbnB1dCBzdGF0ZSBfZWxlbWVudCA9IERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIgc3RhdGUuU3RhdGUubGlzdGVuZXJcblxuICAgICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQ6ZiBzdGF0ZSBlbGVtZW50ID1cbiAgICAgICAgKCogaWYgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGNoYW5nZXMsIGNhbmNlbCB0aGUgb2xkIG9uZSBhbmQgcmUtaW5zdGFsbCAqKVxuICAgICAgICBkZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgICAgICBsZXQgbmV3X3N0YXRlID0gaW5pdCBmIGVsZW1lbnQgaW5cbiAgICAgICAgc3RhdGUuU3RhdGUubGlzdGVuZXIgPC0gbmV3X3N0YXRlLmxpc3RlbmVyXG4gICAgICA7O1xuXG4gICAgICBsZXQgb25fbW91bnQgX2lucHV0IF9zdGF0ZSBfZWxlbWVudCA9ICgpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNb3VzZV91cCA9IE1ha2UgKHN0cnVjdFxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubW91c2V1cFxuICBlbmQpXG5cbm1vZHVsZSBNb3VzZV9tb3ZlID0gTWFrZSAoc3RydWN0XG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tb3VzZW1vdmVcbiAgZW5kKVxuXG5sZXQgbW91c2V1cCBmID0gTW91c2VfdXAuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZXVwLWxpc3RlbmVyXCJcbmxldCBtb3VzZW1vdmUgZiA9IE1vdXNlX21vdmUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZW1vdmUtbGlzdGVuZXJcIlxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbGV0IG1vdXNlX3VwX3R5cGVfaWQgPSBNb3VzZV91cC5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBtb3VzZV9tb3ZlX3R5cGVfaWQgPSBNb3VzZV9tb3ZlLkZvcl90ZXN0aW5nLnR5cGVfaWRcbmVuZFxuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgb3BlbiBKc19vZl9vY2FtbFxuICBpbmNsdWRlIFJhdy5XaWRnZXRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSBkb20gPSBwcml2YXRlICNEb21faHRtbC5lbGVtZW50XG5cbiAgICBtb2R1bGUgSW5wdXQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIGNyZWF0ZSA6IElucHV0LnQgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgdXBkYXRlXG4gICAgICA6ICBwcmV2X2lucHV0OklucHV0LnRcbiAgICAgIC0+IGlucHV0OklucHV0LnRcbiAgICAgIC0+IHN0YXRlOlN0YXRlLnRcbiAgICAgIC0+IGVsZW1lbnQ6ZG9tIEpzLnRcbiAgICAgIC0+IFN0YXRlLnQgKiBkb20gSnMudFxuXG4gICAgdmFsIGRlc3Ryb3kgOiBwcmV2X2lucHV0OklucHV0LnQgLT4gc3RhdGU6U3RhdGUudCAtPiBlbGVtZW50OmRvbSBKcy50IC0+IHVuaXRcbiAgZW5kXG5cbiAgbGV0IG9mX21vZHVsZSAodHlwZSBpbnB1dCkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgSW5wdXQudCA9IGlucHV0KSA9XG4gICAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbnB1dCA6IE0uSW5wdXQudFxuICAgICAgICA7IHN0YXRlIDogTS5TdGF0ZS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG4gICAgaW5cbiAgICBsZXQgc2V4cF9vZl9kb20gOiBNLmRvbSBKcy50IC0+IFNleHAudCA9IGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIgaW5cbiAgICBsZXQgaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpNLm5hbWUgWyVzZXhwX29mOiBTdGF0ZS50ICogZG9tXSBpblxuICAgIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaW5wdXQgLT5cbiAgICAgIGxldCBpbmZvID0gbGF6eSAoTS5JbnB1dC5zZXhwX29mX3QgaW5wdXQpIGluXG4gICAgICBjcmVhdGVcbiAgICAgICAgfmlkXG4gICAgICAgIH5pbmZvXG4gICAgICAgIH5pbml0OihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLmNyZWF0ZSBpbnB1dCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH51cGRhdGU6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgbGV0IHN0YXRlLCBlbGVtZW50ID0gTS51cGRhdGUgfnByZXZfaW5wdXQgfmlucHV0IH5zdGF0ZSB+ZWxlbWVudCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH5kZXN0cm95OihmdW4geyBTdGF0ZS5pbnB1dCA9IHByZXZfaW5wdXQ7IHN0YXRlIH0gZWxlbWVudCAtPlxuICAgICAgICAgIE0uZGVzdHJveSB+cHJldl9pbnB1dCB+c3RhdGUgfmVsZW1lbnQpXG4gICAgICAgICgpKVxuICA7O1xuZW5kXG5cbnR5cGUgZWxlbWVudCA9XG4gIHsgdGFnIDogc3RyaW5nXG4gIDsga2V5IDogc3RyaW5nIG9wdGlvblxuICA7IGF0dHJzIDogQXR0ci50XG4gIDsgcmF3X2F0dHJzIDogUmF3LkF0dHJzLnQgTGF6eS50XG4gIDsgY2hpbGRyZW4gOiBSYXcuTm9kZS50IEpzLmpzX2FycmF5IEpzLnRcbiAgOyBraW5kIDogWyBgVm5vZGUgfCBgU3ZnIF1cbiAgfVxuXG5hbmQgdCA9XG4gIHwgTm9uZVxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRWxlbWVudCBvZiBlbGVtZW50XG4gIHwgV2lkZ2V0IG9mIFdpZGdldC50XG5cbm1vZHVsZSBBbGlhc2VzID0gc3RydWN0XG4gIHR5cGUgbm9kZV9jcmVhdG9yID0gP2tleTpzdHJpbmcgLT4gP2F0dHI6QXR0ci50IC0+IHQgbGlzdCAtPiB0XG4gIHR5cGUgbm9kZV9jcmVhdG9yX2NoaWxkbGVzcyA9ID9rZXk6c3RyaW5nIC0+ID9hdHRyOkF0dHIudCAtPiB1bml0IC0+IHRcbmVuZFxuXG5tb2R1bGUgRWxlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBlbGVtZW50XG5cbiAgbGV0IHRhZyB0ID0gdC50YWdcbiAgbGV0IGF0dHJzIHQgPSB0LmF0dHJzXG4gIGxldCBrZXkgdCA9IHQua2V5XG4gIGxldCB3aXRoX2tleSB0IGtleSA9IHsgdCB3aXRoIGtleSA9IFNvbWUga2V5IH1cblxuICBsZXQgbWFwX2F0dHJzIHQgfmYgPVxuICAgIGxldCBhdHRycyA9IGYgdC5hdHRycyBpblxuICAgIGxldCByYXdfYXR0cnMgPSBsYXp5IChBdHRyLnRvX3JhdyBhdHRycykgaW5cbiAgICB7IHQgd2l0aCBhdHRyczsgcmF3X2F0dHJzIH1cbiAgOztcblxuICBsZXQgYWRkX2NsYXNzIHQgYyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgY2xhc3NfIGMpKVxuICBsZXQgYWRkX2NsYXNzZXMgdCBjID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBjbGFzc2VzIGMpKVxuICBsZXQgYWRkX3N0eWxlIHQgcyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgc3R5bGUgcykpXG5lbmRcblxubGV0IHRfdG9fanMgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICAoKiBXZSBub3JtYWxseSBmaWx0ZXIgdGhlc2Ugb3V0LCBidXQgaWYgW3RvX2pzXSBpcyBjYWxsZWQgZGlyZWN0bHkgb24gYSBbTm9uZV0gbm9kZSxcbiAgICAgICB3ZSB1c2UgdGhpcyBoYWNrLiBBc2lkZSBmcm9tIGhhdmluZyBhIFtUZXh0XSBub2RlIHdpdGhvdXQgYW55IHRleHQgcHJlc2VudCBpbiB0aGVcbiAgICAgICBEb20sIHRoZXJlIHNob3VsZCBiZSBubyB1bndhbnRlZCBzaWRlLWVmZmVjdHMuICBJbiBhbiBJbmNyX2RvbSBhcHBsaWNhdGlvbiwgdGhpc1xuICAgICAgIGNhbiBvbmx5IGhhcHBlbiB3aGVuIHRoZSByb290IHZpZXcgSW5jcmVtZW50YWwgaXMgaW5oYWJpdGVkIGJ5IGEgW05vbmVdLiAqKVxuICAgIFJhdy5Ob2RlLnRleHQgXCJcIlxuICB8IFRleHQgcyAtPiBSYXcuTm9kZS50ZXh0IHNcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgVm5vZGUgfVxuICAgIC0+IFJhdy5Ob2RlLm5vZGUgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgU3ZnIH1cbiAgICAtPiBSYXcuTm9kZS5zdmcgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBXaWRnZXQgdyAtPiB3XG47O1xuXG5sZXQgZWxlbWVudCBraW5kIH50YWcgfmtleSBhdHRycyBjaGlsZHJlbiA9XG4gIGxldCBjaGlsZHJlbl9yYXcgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgTGlzdC5pdGVyIGNoaWxkcmVuIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgKFRleHQgXyB8IEVsZW1lbnQgXyB8IFdpZGdldCBfKSBhcyBvdGhlciAtPlxuICAgICAgbGV0IChfIDogaW50KSA9IGNoaWxkcmVuX3JhdyMjcHVzaCAodF90b19qcyBvdGhlcikgaW5cbiAgICAgICgpKTtcbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiA9IGNoaWxkcmVuX3JhdyB9XG47O1xuXG5sZXQgZWxlbWVudF9leHBlcnQga2luZCB+dGFnID9rZXkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuIH1cbjs7XG5cbmxldCB0ZXh0IHMgPSBUZXh0IHNcblxubGV0IHdpZGdldCA/aW5mbyA/ZGVzdHJveSA/dXBkYXRlIH5pZCB+aW5pdCAoKSA9XG4gIFdpZGdldCAoV2lkZ2V0LmNyZWF0ZSA/aW5mbyA/ZGVzdHJveSA/dXBkYXRlIH5pZCB+aW5pdCAoKSlcbjs7XG5cbmxldCBjcmVhdGUgdGFnID9rZXkgPyhhdHRyID0gQXR0ci5lbXB0eSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBWbm9kZSB+dGFnIH5rZXkgYXR0ciBjaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGVfY2hpbGRsZXNzIHRhZyA/a2V5ID9hdHRyICgpID0gY3JlYXRlIHRhZyA/a2V5ID9hdHRyIFtdXG5cbmxldCBjcmVhdGVfc3ZnIHRhZyA/a2V5ID8oYXR0ciA9IEF0dHIuZW1wdHkpIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSBhdHRyIGNoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5ID8oYXR0ciA9IEF0dHIuZW1wdHkpIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSBhdHRyIGNoaWxkcmVuKVxuOztcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgdGV4dGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIHRleHQgZm9ybWF0XG5cbmxldCB3aWRnZXRfb2ZfbW9kdWxlIG0gPVxuICBsZXQgZiA9IEJhc2UuU3RhZ2VkLnVuc3RhZ2UgKFdpZGdldC5vZl9tb2R1bGUgbSkgaW5cbiAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpIC0+IFdpZGdldCAoZiBpKSlcbjs7XG5cbmxldCB0b19yYXcgPSB0X3RvX2pzXG5sZXQgdG9fZG9tIHQgPSBSYXcuTm9kZS50b19kb20gKHRvX3JhdyB0KVxuXG5sZXQgaW5uZXJfaHRtbFxuICAgICAgY3JlYXRlXG4gICAgICB+dGFnXG4gICAgICB+YXR0clxuICAgICAgfnRoaXNfaHRtbF9pc19zYW5pdGl6ZWRfYW5kX2lzX3RvdGFsbHlfc2FmZV90cnVzdF9tZTpjb250ZW50XG4gID1cbiAgbGV0IGVsZW1lbnQgPSBjcmVhdGUgdGFnIH5hdHRyIFtdIGluXG4gIGxldCBidWlsZF9zZXhwIH5leHRyYSB+Y29udGVudCA9XG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiaW5uZXItaHRtbFwiOyBleHRyYTsgU2V4cC5BdG9tIGNvbnRlbnQgXVxuICBpblxuICBsZXQgaWQgPVxuICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiaW5uZXItaHRtbC1ub2RlXCIgKGZ1biAoKGVsZW1lbnQsIGNvbnRlbnQpLCBfKSAtPlxuICAgICAgYnVpbGRfc2V4cCB+ZXh0cmE6ZWxlbWVudCB+Y29udGVudClcbiAgaW5cbiAgbGV0IGRlYnVnID1cbiAgICBtYXRjaCBlbGVtZW50IHdpdGhcbiAgICB8IEVsZW1lbnQgZWxlbWVudCAtPiBTZXhwLkF0b20gKEVsZW1lbnQudGFnIGVsZW1lbnQpXG4gICAgfCBXaWRnZXQgXyAtPiBmYWlsd2l0aCBcIlZkb20uTm9kZS5pbm5lcl9odG1sIHdhcyBnaXZlbiBhICd3aWRnZXQnXCJcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJWZG9tLk5vZGUuaW5uZXJfaHRtbCB3YXMgZ2l2ZW4gYSAnbm9uZSdcIlxuICAgIHwgVGV4dCBfIC0+IGZhaWx3aXRoIFwiVmRvbS5Ob2RlLmlubmVyX2h0bWwgd2FzIGdpdmVuIGEgJ3RleHQnXCJcbiAgaW5cbiAgd2lkZ2V0XG4gICAgfmlkXG4gICAgfmluZm86KGxhenkgKGJ1aWxkX3NleHAgfmV4dHJhOmRlYnVnIH5jb250ZW50KSlcbiAgICB+aW5pdDooZnVuICgpIC0+XG4gICAgICBsZXQgZWxlbWVudCA9IHRvX2RvbSBlbGVtZW50IGluXG4gICAgICBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgKGRlYnVnLCBjb250ZW50KSwgZWxlbWVudClcbiAgICAoKVxuOztcblxubGV0IGlubmVyX2h0bWxfc3ZnID0gaW5uZXJfaHRtbCAoZnVuIHRhZyB+YXR0ciAtPiBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleTpOb25lIH5hdHRyKVxubGV0IGlubmVyX2h0bWwgPSBpbm5lcl9odG1sIChmdW4gdGFnIH5hdHRyIC0+IGNyZWF0ZSB0YWcgP2tleTpOb25lIH5hdHRyKVxubGV0IGEgPSBjcmVhdGUgXCJhXCJcbmxldCBib2R5ID0gY3JlYXRlIFwiYm9keVwiXG5sZXQgYnV0dG9uID0gY3JlYXRlIFwiYnV0dG9uXCJcbmxldCBjb2RlID0gY3JlYXRlIFwiY29kZVwiXG5sZXQgZGl2ID0gY3JlYXRlIFwiZGl2XCJcbmxldCBtYWluID0gY3JlYXRlIFwibWFpblwiXG5sZXQgZmllbGRzZXQgPSBjcmVhdGUgXCJmaWVsZHNldFwiXG5sZXQgZm9vdGVyID0gY3JlYXRlIFwiZm9vdGVyXCJcbmxldCBoMSA9IGNyZWF0ZSBcImgxXCJcbmxldCBoMiA9IGNyZWF0ZSBcImgyXCJcbmxldCBoMyA9IGNyZWF0ZSBcImgzXCJcbmxldCBoNCA9IGNyZWF0ZSBcImg0XCJcbmxldCBoNSA9IGNyZWF0ZSBcImg1XCJcbmxldCBoNiA9IGNyZWF0ZSBcImg2XCJcbmxldCBoZWFkZXIgPSBjcmVhdGUgXCJoZWFkZXJcIlxubGV0IGh0bWwgPSBjcmVhdGUgXCJodG1sXCJcbmxldCBpbnB1dCA9IGNyZWF0ZSBcImlucHV0XCJcbmxldCB0ZXh0YXJlYSA9IGNyZWF0ZSBcInRleHRhcmVhXCJcbmxldCBzZWxlY3QgPSBjcmVhdGUgXCJzZWxlY3RcIlxubGV0IG9wdGlvbiA9IGNyZWF0ZSBcIm9wdGlvblwiXG5sZXQgbGFiZWwgPSBjcmVhdGUgXCJsYWJlbFwiXG5sZXQgbGkgPSBjcmVhdGUgXCJsaVwiXG5sZXQgcCA9IGNyZWF0ZSBcInBcIlxubGV0IHByZSA9IGNyZWF0ZSBcInByZVwiXG5sZXQgc2VjdGlvbiA9IGNyZWF0ZSBcInNlY3Rpb25cIlxubGV0IHNwYW4gPSBjcmVhdGUgXCJzcGFuXCJcbmxldCBzdHJvbmcgPSBjcmVhdGUgXCJzdHJvbmdcIlxubGV0IHRhYmxlID0gY3JlYXRlIFwidGFibGVcIlxubGV0IHRib2R5ID0gY3JlYXRlIFwidGJvZHlcIlxubGV0IHRkID0gY3JlYXRlIFwidGRcIlxubGV0IHRoID0gY3JlYXRlIFwidGhcIlxubGV0IHRoZWFkID0gY3JlYXRlIFwidGhlYWRcIlxubGV0IHRyID0gY3JlYXRlIFwidHJcIlxubGV0IHVsID0gY3JlYXRlIFwidWxcIlxubGV0IG9sID0gY3JlYXRlIFwib2xcIlxubGV0IGJyID0gY3JlYXRlX2NoaWxkbGVzcyBcImJyXCJcbmxldCBociA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJoclwiXG5cbmxldCBzZXhwX2Zvcl9kZWJ1Z2dpbmcgP2luZGVudCBzZXhwID1cbiAgc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0gP2luZGVudCB8PiB0ZXh0IHw+IExpc3QucmV0dXJuIHw+IHByZSB+YXR0cjpBdHRyLmVtcHR5XG47O1xuXG5tb2R1bGUgUGF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LlBhdGNoLnRcblxuICBsZXQgY3JlYXRlIH5wcmV2aW91cyB+Y3VycmVudCA9XG4gICAgUmF3LlBhdGNoLmNyZWF0ZSB+cHJldmlvdXM6KHRfdG9fanMgcHJldmlvdXMpIH5jdXJyZW50Oih0X3RvX2pzIGN1cnJlbnQpXG4gIDs7XG5cbiAgbGV0IGFwcGx5IHQgZWx0ID0gUmF3LlBhdGNoLmFwcGx5IGVsdCB0XG4gIGxldCBpc19lbXB0eSB0ID0gUmF3LlBhdGNoLmlzX2VtcHR5IHRcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBWbm9kZSA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9zdmcgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBTdmcgP2tleSB+dGFnIGF0dHJzIGNoaWxkcmVuKVxuICA7O1xuZW5kXG4iLCJtb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBpbmNsdWRlIEF0dHJcbiAgbW9kdWxlIEhvb2tzID0gSG9va3NcbiAgbW9kdWxlIEdsb2JhbF9saXN0ZW5lcnMgPSBHbG9iYWxfbGlzdGVuZXJzXG5lbmRcblxubW9kdWxlIEF0dHJzID0gQXR0ci5NdWx0aVxubW9kdWxlIEVmZmVjdCA9IEVmZmVjdFxubW9kdWxlIE5vZGUgPSBOb2RlXG4iLCJtb2R1bGUgVmRvbSA9IFZkb21cbm1vZHVsZSBEb21fZmxvYXQgPSBEb21fZmxvYXRcblxubW9kdWxlIFRvcF9sZXZlbF9lZmZlY3RzID0gc3RydWN0XG4gIGxldCAoKSA9XG4gICAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gICAgQ3NzX2dlbi5Qcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIDo9IERvbV9mbG9hdC50b19zdHJpbmdfZml4ZWRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDcHVzZXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBJbnQuU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgbGV0IGhlcmUgPSBbJWhlcmVdXG5cbiAgICAgIGxldCB2YWxpZGF0ZSB0ID1cbiAgICAgICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZVxuICAgICAgICAgIChJbnQudmFsaWRhdGVfbGJvdW5kIH5taW46KEluY2wgMSkgKEludC5TZXQubGVuZ3RoIHQpKVxuICAgICAgICAgIChJbnQuU2V0LnRvX2xpc3QgdFxuICAgICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpJbnQudmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gICAgICAgICAgIHw+IFZhbGlkYXRlLm5hbWVfbGlzdCBcIlRocmVhZF9wb29sX2NwdXNldFwiKVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gSW50LlNldC5lcXVhbCAodDEgfD4gcmF3KSAodDIgfD4gcmF3KVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgSW5oZXJpdFxuICB8IENwdXNldCBvZiBDcHVzZXQudFxuW0BAZGVyaXZpbmcgc2V4cF1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUdXBsZV90eXBlX2ludGZcblxubW9kdWxlIFNsb3RzID0gc3RydWN0XG4gIHR5cGUgdV8gPSB7IHNsb3RzX3Blcl90dXBsZSA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCd0dXBsZSwgJ3ZhcmlhbnQpIHUgPSB1XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHRfID0gWyBgU2xvdHMgb2YgdV8gXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2xvdHNfcGVyX3R1cGxlIChgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSBuIH0pID0gblxuXG4gIHR5cGUgJ2EwIHQxID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEpIHQyID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMikgdDMgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMpIHQ0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQpIHQ1ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSkgdDYgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYpIHQ3ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcpIHQ4ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCkgdDkgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTkpIHQxMCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwKSB0MTEgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSkgdDEyID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEsICdhMTIpIHQxMyA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyLCAnYTEzKSB0MTQgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0MSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEgfVxuICBsZXQgdDIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAyIH1cbiAgbGV0IHQzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMyB9XG4gIGxldCB0NCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDQgfVxuICBsZXQgdDUgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA1IH1cbiAgbGV0IHQ2ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNiB9XG4gIGxldCB0NyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDcgfVxuICBsZXQgdDggPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA4IH1cbiAgbGV0IHQ5ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOSB9XG4gIGxldCB0MTAgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMCB9XG4gIGxldCB0MTEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMSB9XG4gIGxldCB0MTIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMiB9XG4gIGxldCB0MTMgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMyB9XG4gIGxldCB0MTQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxNCB9XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUdXBsZV9wb29sX2ludGZcbm1vZHVsZSBUdXBsZV90eXBlID0gVHVwbGVfdHlwZVxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgcGh5c19lcXVhbCA9IENhbWwuKCA9PSApXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplX2luX2JpdHMgPSA2NFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBudW1fYml0cyA9IEludC5udW1fYml0c1xuICBsZXQgbWF4X3ZhbHVlID0gQ2FtbC5tYXhfaW50XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxubGV0IGNvbmNhdCBsID0gQmFzZS5TdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBsXG5cbm1vZHVsZSB0eXBlIFMgPSBTXG5cbm1vZHVsZSBQb29sID0gc3RydWN0XG4gIGxldCBncm93X2NhcGFjaXR5IH5jYXBhY2l0eSB+b2xkX2NhcGFjaXR5ID1cbiAgICBtYXRjaCBjYXBhY2l0eSB3aXRoXG4gICAgfCBOb25lIC0+IGlmIG9sZF9jYXBhY2l0eSA9IDAgdGhlbiAxIGVsc2Ugb2xkX2NhcGFjaXR5ICogMlxuICAgIHwgU29tZSBjYXBhY2l0eSAtPlxuICAgICAgaWYgY2FwYWNpdHkgPD0gb2xkX2NhcGFjaXR5XG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcIlBvb2wuZ3JvdyBnb3QgdG9vIHNtYWxsIGNhcGFjaXR5XCJcbiAgICAgICAgICAoYGNhcGFjaXR5IGNhcGFjaXR5LCBgb2xkX2NhcGFjaXR5IG9sZF9jYXBhY2l0eSlcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYGNhcGFjaXR5IG9mIGludCBdICogWyBgb2xkX2NhcGFjaXR5IG9mIGludCBdXTtcbiAgICAgIGNhcGFjaXR5XG4gIDs7XG5cbiAgbW9kdWxlIFNsb3RzID0gVHVwbGVfdHlwZS5TbG90c1xuXG4gIGxldCBtYXhfc2xvdCA9IDE0XG5cbiAgKCogVGhlIHBvb2wgaXMgcmVwcmVzZW50ZWQgYXMgYSBzaW5nbGUgW1VuaWZvcm1fYXJyYXkudF0sIHdoZXJlIGluZGV4IHplcm8gaGFzIHRoZVxuICAgICBtZXRhZGF0YSBhYm91dCB0aGUgcG9vbCBhbmQgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGFyZSB0aGUgdHVwbGVzIGxheWVkIG91dCBvbmUgYWZ0ZXJcbiAgICAgdGhlIG90aGVyLiAgRWFjaCB0dXBsZSB0YWtlcyBbMSArIHNsb3RzX3Blcl90dXBsZV0gaW5kaWNlcyBpbiB0aGUgcG9vbCwgd2hlcmUgdGhlXG4gICAgIGZpcnN0IGluZGV4IGhvbGRzIGEgaGVhZGVyIGFuZCB0aGUgcmVtYWluaW5nIGluZGljZXMgaG9sZCB0aGUgdHVwbGUncyBzbG90czpcblxuICAgICB7dlxuICAgICB8IGhlYWRlciB8IHMwIHwgczEgfCAuLi4gfCBzPE4tMT4gfFxuICAgICB2fVxuXG4gICAgIEEgW1BvaW50ZXIudF0gdG8gYSB0dXBsZSBjb250YWlucyB0aGUgaW50ZWdlciBpbmRleCB3aGVyZSBpdHMgaGVhZGVyIGlzLCBhcyB3ZWxsIGFzXG4gICAgIChhIG1hc2sgb2YpIHRoZSB0dXBsZSdzIHVuaXF1ZSBpZC5cblxuICAgICBUaGUgZnJlZSB0dXBsZXMgYXJlIHNpbmdseSBsaW5rZWQgdmlhIHRoZSBoZWFkZXJzLlxuXG4gICAgIFdoZW4gYSB0dXBsZSBpcyBpbiB1c2UsIGl0cyBoZWFkZXIgaXMgbWFya2VkIHRvIGluZGljYXRlIHNvLCBhbmQgYWxzbyB0byBpbmNsdWRlIHRoZVxuICAgICB0dXBsZSdzIHVuaXF1ZSBpZC4gIFRoaXMgYWxsb3dzIHVzIHRvIGNoZWNrIGluIGNvbnN0YW50IHRpbWUgd2hldGhlciBhIHBvaW50ZXIgaXNcbiAgICAgdmFsaWQsIGJ5IGNvbXBhcmluZyB0aGUgaWQgaW4gdGhlIHBvaW50ZXIgd2l0aCB0aGUgaWQgaW4gdGhlIGhlYWRlci5cblxuICAgICBXaGVuIGEgdHVwbGUgaXMgbm90IGluIHVzZSwgaXRzIGhlYWRlciBpcyBwYXJ0IG9mIHRoZSBmcmVlIGxpc3QsIGFuZCBpdHMgdHVwbGUgc2xvdHNcbiAgICAgaGF2ZSBkdW1teSB2YWx1ZXMgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGVzLCBmcm9tIHRoZSBbZHVtbXldIHR1cGxlIHN1cHBsaWVkIHRvXG4gICAgIFtjcmVhdGVdLiAgV2UgbXVzdCBoYXZlIGR1bW15IHZhbHVlcyBvZiB0aGUgY29ycmVjdCB0eXBlIHRvIHByZXZlbnQgYSBzZWdmYXVsdCBpblxuICAgICBjb2RlIHRoYXQgKG1pc3Rha2VubHkpIHVzZXMgYSBwb2ludGVyIHRvIGEgZnJlZSB0dXBsZS5cblxuICAgICBGb3IgW1Bvb2wuVW5zYWZlXSwgYSBzbG90IGluIGEgZnJlZSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSBhbiBpbnQ7IGl0IG11c3Qgbm90IGJlXG4gICAgIHBvaW50ZXIgdG8gcHJldmVudCBhIHNwYWNlIGxlYWsuICBIb3dldmVyLCB0aGUgaW50IGluIHRoZSBzbG90IG1heSBub3QgcmVwcmVzZW50IGFcbiAgICAgdmFsaWQgdmFsdWUgb2YgdGhlIHR5cGUuXG4gICopXG5cbiAgbW9kdWxlIFNsb3QgPSBzdHJ1Y3RcbiAgICB0eXBlICgnc2xvdHMsICdhKSB0ID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgKHQxIDogKF8sIF8pIHQpIHQyID0gdDEgPSB0MlxuICAgIGxldCB0MCA9IDFcbiAgICBsZXQgdDEgPSAyXG4gICAgbGV0IHQyID0gM1xuICAgIGxldCB0MyA9IDRcbiAgICBsZXQgdDQgPSA1XG4gICAgbGV0IHQ1ID0gNlxuICAgIGxldCB0NiA9IDdcbiAgICBsZXQgdDcgPSA4XG4gICAgbGV0IHQ4ID0gOVxuICAgIGxldCB0OSA9IDEwXG4gICAgbGV0IHQxMCA9IDExXG4gICAgbGV0IHQxMSA9IDEyXG4gICAgbGV0IHQxMiA9IDEzXG4gICAgbGV0IHQxMyA9IDE0XG5cbiAgICBsZXQldGVzdCBfID0gdDEzID0gbWF4X3Nsb3RcbiAgZW5kXG5cbiAgKCogV2Ugb25seSBoYXZlIFtJbnQubnVtX2JpdHNdIGJpdHMgYXZhaWxhYmxlIGZvciBwb29sIHBvaW50ZXJzLiAgVGhlIGJpdHMgb2YgYSBwb29sXG4gICAgIHBvaW50ZXIgZW5jb2RlIHR3byB0aGluZ3M6XG5cbiAgICAgLSB0aGUgdHVwbGUncyBhcnJheSBpbmRleCBpbiB0aGUgcG9vbFxuICAgICAtIHRoZSB0dXBsZSdzIGlkZW50aWZpZXIgKG5vdCBuZWNlc3NhcmlseSB1bmlxdWUpXG5cbiAgICAgV2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gYXMgbGFyZ2UgYXMgbmVlZGVkIGZvciB0aGUgbWF4aW11bSBwb29sIGNhcGFjaXR5XG4gICAgIHRoYXQgd2Ugd2FudCB0byBzdXBwb3J0LCBhbmQgdXNlIHRoZSByZW1haW5pbmcgW21hc2tlZF90dXBsZV9pZF9udW1fYml0c10gYml0cyBmb3JcbiAgICAgdGhlIGlkZW50aWZpZXIuICA2NC1iaXQgYW5kIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHR5cGljYWxseSBoYXZlIHZlcnkgZGlmZmVyZW50XG4gICAgIGFkZHJlc3Mtc3BhY2Ugc2l6ZXMsIHNvIHdlIGNob29zZSBbYXJyYXlfaW5kZXhfbnVtX2JpdHNdIGRpZmZlcmVudGx5LiAqKVxuXG4gIGxldCBhcnJheV9pbmRleF9udW1fYml0cyA9XG4gICAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gNjMpO1xuICAgICAgMzApXG4gICAgZWxzZSAoXG4gICAgICBhc3NlcnQgKEludC5udW1fYml0cyA9IDMxIHx8IEludC5udW1fYml0cyA9IDMyKTtcbiAgICAgIDIyKVxuICA7O1xuXG4gIGxldCBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPSBJbnQubnVtX2JpdHMgLSBhcnJheV9pbmRleF9udW1fYml0c1xuXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IGFycmF5X2luZGV4X251bV9iaXRzICsgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzIDw9IEludC5udW1fYml0c1xuXG4gIGxldCBtYXhfYXJyYXlfbGVuZ3RoID0gMSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHNcblxuICBtb2R1bGUgVHVwbGVfaWQgOiBzaWdcbiAgICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpbml0IDogdFxuICAgIHZhbCBuZXh0IDogdCAtPiB0XG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgdmFsIGV4YW1wbGVzIDogdCBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgKCogV2UgZ3VhcmFudGVlIHRoYXQgdHVwbGUgaWRzIGFyZSBub25uZWdhdGl2ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGVuY29kZWQgaW5cbiAgICAgICBoZWFkZXJzLiAqKVxuICAgIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAwKVxuICAgIGxldCB0b19zdHJpbmcgPSBJbnQudG9fc3RyaW5nXG4gICAgbGV0IGVxdWFsICh0MSA6IHQpIHQyID0gdDEgPSB0MlxuICAgIGxldCBpbml0ID0gMFxuICAgIGxldCBuZXh0IHQgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIHQgKyAxIGVsc2UgaWYgdCA9IEludC5tYXhfdmFsdWUgdGhlbiAwIGVsc2UgdCArIDFcbiAgICBsZXQgdG9faW50IHQgPSB0XG5cbiAgICBsZXQgb2ZfaW50IGkgPVxuICAgICAgaWYgaSA8IDBcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJUdXBsZV9pZC5vZl9pbnQgZ290IG5lZ2F0aXZlIGludFwiIGkgWyVzZXhwX29mOiBpbnRdO1xuICAgICAgaVxuICAgIDs7XG5cbiAgICBsZXQgZXhhbXBsZXMgPSBbIDA7IDE7IDB4MUZGRl9GRkZGOyBJbnQubWF4X3ZhbHVlIF1cbiAgZW5kXG5cbiAgbGV0IHR1cGxlX2lkX21hc2sgPSAoMSBsc2wgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzKSAtIDFcblxuICBtb2R1bGUgUG9pbnRlciA6IHNpZ1xuICAgICgqIFtQb2ludGVyLnRdIGlzIGFuIGVuY29kaW5nIGFzIGFuIFtpbnRdIG9mIHRoZSBmb2xsb3dpbmcgc3VtIHR5cGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgfCBOdWxsXG4gICAgICAgICB8IE5vcm1hbCBvZiB7IGhlYWRlcl9pbmRleCA6IGludDsgbWFza2VkX3R1cGxlX2lkIDogaW50IH1cbiAgICAgICBdfVxuXG4gICAgICAgVGhlIGVuY29kaW5nIGlzIGNob3NlbiB0byBvcHRpbWl6ZSB0aGUgbW9zdCBjb21tb24gb3BlcmF0aW9uLCBuYW1lbHkgdHVwbGUtc2xvdFxuICAgICAgIGFjY2VzcywgdGhlIFtzbG90X2luZGV4XSBmdW5jdGlvbi4gIFRoZSBlbmNvZGluZyBpcyBkZXNpZ25lZCBzbyB0aGF0IFtzbG90X2luZGV4XVxuICAgICAgIHByb2R1Y2VzIGEgbmVnYXRpdmUgbnVtYmVyIGZvciBbTnVsbF0sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHN1YnNlcXVlbnQgYXJyYXkgYm91bmRzXG4gICAgICAgY2hlY2sgdG8gZmFpbC4gKilcblxuICAgIHR5cGUgJ3Nsb3RzIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIHBoeXNfY29tcGFyZSA6ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgcGh5c19lcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgICAoKiBUaGUgbnVsbCBwb2ludGVyLiAgW251bGxdIGlzIGEgZnVuY3Rpb24gZHVlIHRvIGlzc3VlcyB3aXRoIHRoZSB2YWx1ZSByZXN0cmljdGlvbi4gKilcblxuICAgIHZhbCBudWxsIDogdW5pdCAtPiBfIHRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG5cbiAgICAoKiBOb3JtYWwgcG9pbnRlcnMuICopXG5cbiAgICB2YWwgY3JlYXRlIDogaGVhZGVyX2luZGV4OmludCAtPiBUdXBsZV9pZC50IC0+IF8gdFxuICAgIHZhbCBoZWFkZXJfaW5kZXggOiBfIHQgLT4gaW50XG4gICAgdmFsIG1hc2tlZF90dXBsZV9pZCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgc2xvdF9pbmRleCA6IF8gdCAtPiAoXywgXykgU2xvdC50IC0+IGludFxuICAgIHZhbCBmaXJzdF9zbG90X2luZGV4IDogXyB0IC0+IGludFxuXG4gICAgbW9kdWxlIElkIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcbiAgICAgIHZhbCBvZl9pbnQ2MyA6IEludDYzLnQgLT4gdFxuICAgIGVuZFxuXG4gICAgdmFsIHRvX2lkIDogXyB0IC0+IElkLnRcbiAgICB2YWwgb2ZfaWRfZXhuIDogSWQudCAtPiBfIHRcbiAgZW5kID0gc3RydWN0XG4gICAgKCogQSBwb2ludGVyIGlzIGVpdGhlciBbbnVsbF0gb3IgdGhlIChwb3NpdGl2ZSkgaW5kZXggaW4gdGhlIHBvb2wgb2YgdGhlIG5leHQtZnJlZVxuICAgICAgIGZpZWxkIHByZWNlZWRpbmcgdGhlIHR1cGxlJ3Mgc2xvdHMuICopXG4gICAgdHlwZSAnc2xvdHMgdCA9IGludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG4gICAgbGV0IHNleHBfb2ZfdCBfIHQgPSBTZXhwLkF0b20gKHNwcmludGYgXCI8UG9vbC5Qb2ludGVyLnQ6IDB4JTA4eD5cIiB0KVxuICAgIGxldCBwaHlzX2VxdWFsICh0MSA6IF8gdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG4gICAgbGV0IHBoeXNfY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgbnVsbCAoKSA9IC1tYXhfc2xvdCAtIDFcbiAgICBsZXQgaXNfbnVsbCB0ID0gcGh5c19lcXVhbCB0IChudWxsICgpKVxuXG4gICAgKCogW251bGxdIG11c3QgYmUgc3VjaCB0aGF0IFtudWxsICsgc2xvdF0gaXMgYW4gaW52YWxpZCBhcnJheSBpbmRleCBmb3IgYWxsIHNsb3RzLlxuICAgICAgIE90aGVyd2lzZSBnZXQvc2V0IG9uIHRoZSBudWxsIHBvaW50ZXIgbWF5IGxlYWQgdG8gYSBzZWdmYXVsdC4gKilcbiAgICBsZXQldGVzdCBfID0gbnVsbCAoKSArIG1heF9zbG90IDwgMFxuXG4gICAgbGV0IGNyZWF0ZSB+aGVhZGVyX2luZGV4ICh0dXBsZV9pZCA6IFR1cGxlX2lkLnQpID1cbiAgICAgIGhlYWRlcl9pbmRleFxuICAgICAgbG9yICgoVHVwbGVfaWQudG9faW50IHR1cGxlX2lkIGxhbmQgdHVwbGVfaWRfbWFzaykgbHNsIGFycmF5X2luZGV4X251bV9iaXRzKVxuICAgIDs7XG5cbiAgICBsZXQgaGVhZGVyX2luZGV4X21hc2sgPSAoMSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHMpIC0gMVxuICAgIGxldCBtYXNrZWRfdHVwbGVfaWQgdCA9IHQgbHNyIGFycmF5X2luZGV4X251bV9iaXRzXG4gICAgbGV0IGhlYWRlcl9pbmRleCB0ID0gdCBsYW5kIGhlYWRlcl9pbmRleF9tYXNrXG4gICAgbGV0IGludmFyaWFudCBfIHQgPSBpZiBub3QgKGlzX251bGwgdCkgdGhlbiBhc3NlcnQgKGhlYWRlcl9pbmRleCB0ID4gMClcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9IGludmFyaWFudCBpZ25vcmUgKG51bGwgKCkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gdHVwbGVfaWQgLT5cbiAgICAgICAgaW52YXJpYW50IGlnbm9yZSAoY3JlYXRlIH5oZWFkZXJfaW5kZXg6MSB0dXBsZV9pZCkpXG4gICAgOztcblxuICAgIGxldCBzbG90X2luZGV4IHQgc2xvdCA9IGhlYWRlcl9pbmRleCB0ICsgc2xvdFxuICAgIGxldCBmaXJzdF9zbG90X2luZGV4IHQgPSBzbG90X2luZGV4IHQgU2xvdC50MFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgZW5kXG5cbiAgICBsZXQgdG9faWQgdCA9IElkLm9mX2ludCB0XG5cbiAgICBsZXQgb2ZfaWRfZXhuIGlkID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgdCA9IElkLnRvX2ludF9leG4gaWQgaW5cbiAgICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICAgIHRoZW4gdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc2hvdWxkX2VxdWFsID1cbiAgICAgICAgICAgIGNyZWF0ZSB+aGVhZGVyX2luZGV4OihoZWFkZXJfaW5kZXggdCkgKFR1cGxlX2lkLm9mX2ludCAobWFza2VkX3R1cGxlX2lkIHQpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcGh5c19lcXVhbCB0IHNob3VsZF9lcXVhbFxuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJzaG91bGQgZXF1YWxcIiBzaG91bGRfZXF1YWwgWyVzZXhwX29mOiBfIHRdKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiUG9pbnRlci5vZl9pZF9leG4gZ290IHN0cmFuZ2UgaWRcIlxuICAgICAgICAgIChpZCwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogSWQudCAqIGV4bl1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSGVhZGVyIDogc2lnXG4gICAgKCogQSBbSGVhZGVyLnRdIGlzIGFuIGVuY29kaW5nIGFzIGFuIFtpbnRdIG9mIHRoZSBmb2xsb3dpbmcgdHlwZTpcblxuICAgICAgIHtbXG4gICAgICAgICB8IE51bGxcbiAgICAgICAgIHwgRnJlZSBvZiB7IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggOiBpbnQgfVxuICAgICAgICAgfCBVc2VkIG9mIHsgdHVwbGVfaWQgOiBpbnQgfVxuICAgICAgIF19XG5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGZyZWUsIGl0cyBoZWFkZXIgaXMgc2V0IHRvIGVpdGhlciBbTnVsbF0gb3IgW0ZyZWVdIHdpdGhcbiAgICAgICBbbmV4dF9mcmVlX2hlYWRlcl9pbmRleF0gaW5kaWNhdGluZyB0aGUgaGVhZGVyIG9mIHRoZSBuZXh0IHR1cGxlIG9uIHRoZSBmcmVlIGxpc3QuXG4gICAgICAgSWYgYSB0dXBsZSBpcyBpbiB1c2UsIGl0IGhlYWRlciBpcyBzZXQgdG8gW1VzZWRdLiAqKVxuXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdFxuICAgIHZhbCBpc19udWxsIDogdCAtPiBib29sXG4gICAgdmFsIGZyZWUgOiBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4OmludCAtPiB0XG4gICAgdmFsIGlzX2ZyZWUgOiB0IC0+IGJvb2xcbiAgICB2YWwgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IHQgLT4gaW50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc19mcmVlIHRdICopXG5cbiAgICB2YWwgdXNlZCA6IFR1cGxlX2lkLnQgLT4gdFxuICAgIHZhbCBpc191c2VkIDogdCAtPiBib29sXG4gICAgdmFsIHR1cGxlX2lkIDogdCAtPiBUdXBsZV9pZC50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc191c2VkIHRdICopXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludFxuXG4gICAgbGV0IG51bGwgPSAwXG4gICAgbGV0IGlzX251bGwgdCA9IHQgPSAwXG5cbiAgICAoKiBXZSBrbm93IHRoYXQgaGVhZGVyIGluZGljZXMgYXJlIFs+IDBdLCBiZWNhdXNlIGluZGV4IFswXSBob2xkcyB0aGUgbWV0YWRhdGEuICopXG4gICAgbGV0IGZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXggPSBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XG4gICAgbGV0IGlzX2ZyZWUgdCA9IHQgPiAwXG4gICAgbGV0IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCA9IHRcbiAgICBsZXQgdXNlZCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9IC0xIC0gKHR1cGxlX2lkIDo+IGludClcbiAgICBsZXQgaXNfdXNlZCB0ID0gdCA8IDBcbiAgICBsZXQgdHVwbGVfaWQgdCA9IFR1cGxlX2lkLm9mX2ludCAoLSh0ICsgMSkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gaWQgLT5cbiAgICAgICAgbGV0IHQgPSB1c2VkIGlkIGluXG4gICAgICAgIGFzc2VydCAoaXNfdXNlZCB0KTtcbiAgICAgICAgYXNzZXJ0IChUdXBsZV9pZC5lcXVhbCAodHVwbGVfaWQgdCkgaWQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICB0aGVuIFNleHAuQXRvbSBcIm51bGxcIlxuICAgICAgZWxzZSBpZiBpc19mcmVlIHRcbiAgICAgIHRoZW4gU2V4cC4oTGlzdCBbIEF0b20gXCJGcmVlXCI7IEF0b20gKEludC50b19zdHJpbmcgKG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCkpIF0pXG4gICAgICBlbHNlIFNleHAuKExpc3QgWyBBdG9tIFwiVXNlZFwiOyBBdG9tIChUdXBsZV9pZC50b19zdHJpbmcgKHR1cGxlX2lkIHQpKSBdKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZXRhZGF0YV9pbmRleCA9IDBcbiAgbGV0IHN0YXJ0X29mX3R1cGxlc19pbmRleCA9IDFcblxuICBsZXQgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgPVxuICAgIChtYXhfYXJyYXlfbGVuZ3RoIC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvICgxICsgc2xvdHNfcGVyX3R1cGxlKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgZm9yIHNsb3RzX3Blcl90dXBsZSA9IDEgdG8gbWF4X3Nsb3QgZG9cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIHN0YXJ0X29mX3R1cGxlc19pbmRleCArICgoMSArIHNsb3RzX3Blcl90dXBsZSkgKiBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgICAgICAgPD0gbWF4X2FycmF5X2xlbmd0aClcbiAgICBkb25lXG4gIDs7XG5cbiAgbW9kdWxlIE1ldGFkYXRhID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7ICgqIFtzbG90c19wZXJfdHVwbGVdIGlzIG51bWJlciBvZiBzbG90cyBpbiBhIHR1cGxlIGFzIHNlZW4gYnkgdGhlIHVzZXI7IGkuZS4gbm90XG4gICAgICAgICAgIGNvdW50aW5nIHRoZSBuZXh0LWZyZWUgcG9pbnRlci4gKilcbiAgICAgICAgc2xvdHNfcGVyX3R1cGxlIDogaW50XG4gICAgICA7IGNhcGFjaXR5IDogaW50XG4gICAgICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7IG11dGFibGUgbmV4dF9pZCA6IFR1cGxlX2lkLnRcbiAgICAgIDsgbXV0YWJsZSBmaXJzdF9mcmVlIDogSGVhZGVyLnRcbiAgICAgICgqIFtkdW1teV0gaXMgW05vbmVdIGluIGFuIHVuc2FmZSBwb29sLiAgSW4gYSBzYWZlIHBvb2wsIFtkdW1teV0gaXMgW1NvbWUgYV0sIHdpdGhcbiAgICAgICAgIFtVbmlmb3JtX2FycmF5Lmxlbmd0aCBhID0gc2xvdHNfcGVyX3R1cGxlXS4gIFtkdW1teV0gaXMgYWN0dWFsbHkgYSB0dXBsZSB2YWx1ZVxuICAgICAgICAgd2l0aCB0aGUgY29ycmVjdCB0eXBlIChjb3JyZXNwb25kaW5nIHRvIFsnc2xvdHNdKSwgYnV0IHdlIG1ha2UgdGhlIHR5cGUgb2ZcbiAgICAgICAgIFtkdW1teV0gYmUgW09iai50IFVuaWZvcm1fYXJyYXkudF0gYmVjYXVzZSB3ZSBjYW4ndCB3cml0ZSB0aGF0IHR5cGUgaGVyZS4gIEFsc28sXG4gICAgICAgICB0aGUgcHVycG9zZSBvZiBbZHVtbXldIGlzIHRvIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQsIG1ha2luZyBbZHVtbXldIGFuIFtPYmoudFxuICAgICAgICAgVW5pZm9ybV9hcnJheS50XSBsZXRzIHVzIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQgdXNpbmcgW1VuaWZvcm1fYXJyYXkuYmxpdF1cbiAgICAgICAgIGZyb20gW2R1bW15XSB0byB0aGUgcG9vbCwgd2hpY2ggaXMgYW4gW09iai50IFVuaWZvcm1fYXJyYXkudF0uICopXG4gICAgICA7IGR1bW15IDogKE9iai50IFVuaWZvcm1fYXJyYXkudFtAc2V4cC5vcGFxdWVdKSBvcHRpb25cbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdCA9IDEgKyB0LnNsb3RzX3Blcl90dXBsZVxuICAgIGxldCBhcnJheV9sZW5ndGggdCA9IHN0YXJ0X29mX3R1cGxlc19pbmRleCArICh0LmNhcGFjaXR5ICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcblxuICAgIGxldCBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgICAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHRcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gPVxuICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHR1cGxlX251bSAqIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQpXG4gICAgOztcblxuICAgIGxldCB0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IHQgdHVwbGVfbnVtICsgMVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gdC5sZW5ndGggPSB0LmNhcGFjaXR5XG4gIGVuZFxuXG4gIG9wZW4gTWV0YWRhdGFcblxuICAoKiBXZSB1c2UgdHlwZSBbT2JqLnRdIGJlY2F1c2UgdGhlIGFycmF5IGhvbGRzIGEgbWl4IG9mIGludGVnZXJzIGFzIHdlbGwgYXMgT0NhbWwgdmFsdWVzXG4gICAgIG9mIGFyYml0cmFyeSB0eXBlLiAqKVxuICB0eXBlICdzbG90cyB0ID0gT2JqLnQgVW5pZm9ybV9hcnJheS50XG5cbiAgbGV0IG1ldGFkYXRhICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBtZXRhZGF0YV9pbmRleCB8PiAoT2JqLm9iaiA6IF8gLT4gc2xvdHMgTWV0YWRhdGEudClcbiAgOztcblxuICBsZXQgbGVuZ3RoIHQgPSAobWV0YWRhdGEgdCkubGVuZ3RoXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl90eSB0ID0gTWV0YWRhdGEuc2V4cF9vZl90IHNleHBfb2ZfdHkgKG1ldGFkYXRhIHQpXG5cbiAgKCogQmVjYXVzZSBbdW5zYWZlX2hlYWRlcl0gYW5kIFt1bnNhZmVfc2V0X2hlYWRlcl0gZG8gbm90IGRvIGEgYm91bmRzIGNoZWNrLCBvbmUgbXVzdCBiZVxuICAgICBzdXJlIHRoYXQgb25lIGhhcyBhIHZhbGlkIFtoZWFkZXJfaW5kZXhdIGJlZm9yZSBjYWxsaW5nIHRoZW0uICopXG4gIGxldCB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaGVhZGVyX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBIZWFkZXIudClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IChoZWFkZXIgOiBIZWFkZXIudCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGhlYWRlcl9pbmRleCAoaGVhZGVyIDo+IGludClcbiAgOztcblxuICBsZXQgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXggPVxuICAgIGhlYWRlcl9pbmRleCA+PSBzdGFydF9vZl90dXBsZXNfaW5kZXggJiYgaGVhZGVyX2luZGV4IDwgVW5pZm9ybV9hcnJheS5sZW5ndGggdFxuICA7O1xuXG4gIGxldCB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlciA9XG4gICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICBIZWFkZXIuaXNfdXNlZCBoZWFkZXJcbiAgICAmJiBUdXBsZV9pZC50b19pbnQgKEhlYWRlci50dXBsZV9pZCBoZWFkZXIpIGxhbmQgdHVwbGVfaWRfbWFza1xuICAgICAgID0gUG9pbnRlci5tYXNrZWRfdHVwbGVfaWQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciA9XG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXg6KFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIpXG4gICAgKCogQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGUgcG9pbnRlciBpc24ndCBbbnVsbF0gYW5kIGlzIGluIGJvdW5kcywgc28gd2Uga25vdyBpdCBpc1xuICAgICAgIHRoZSBpbmRleCBvZiBhIGhlYWRlciwgc2luY2Ugd2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFsbCBwb2ludGVycyBvdGhlciB0aGFuXG4gICAgICAgW251bGxdIGFyZS4gKilcbiAgICAmJiB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBpZF9vZl9wb2ludGVyIF90IHBvaW50ZXIgPSBQb2ludGVyLnRvX2lkIHBvaW50ZXJcblxuICBsZXQgaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4XG4gICAgJiYgMFxuICAgICAgID0gKGhlYWRlcl9pbmRleCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleClcbiAgICAgICAgIG1vZCBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICB0cnlcbiAgICAgIGxldCBwb2ludGVyID0gUG9pbnRlci5vZl9pZF9leG4gaWQgaW5cbiAgICAgIGlmIG5vdCAoUG9pbnRlci5pc19udWxsIHBvaW50ZXIpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICAgICAgaWYgbm90IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KVxuICAgICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiaW52YWxpZCBoZWFkZXIgaW5kZXhcIiBoZWFkZXJfaW5kZXggWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICBpZiBub3QgKHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyKSB0aGVuIGZhaWx3aXRoIFwicG9pbnRlciBub3QgbGl2ZVwiKTtcbiAgICAgIHBvaW50ZXJcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5wb2ludGVyX29mX2lkX2V4biBnb3QgaW52YWxpZCBpZFwiXG4gICAgICAgIChpZCwgdCwgZXhuKVxuICAgICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudCAqIF8gdCAqIGV4bl1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCBtZXRhZGF0YSkgaW5cbiAgICAgIE1ldGFkYXRhLkZpZWxkcy5pdGVyXG4gICAgICAgIH5zbG90c19wZXJfdHVwbGU6KGNoZWNrIChmdW4gc2xvdHNfcGVyX3R1cGxlIC0+IGFzc2VydCAoc2xvdHNfcGVyX3R1cGxlID4gMCkpKVxuICAgICAgICB+Y2FwYWNpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY2FwYWNpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAoVW5pZm9ybV9hcnJheS5sZW5ndGggdCA9IE1ldGFkYXRhLmFycmF5X2xlbmd0aCBtZXRhZGF0YSkpKVxuICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IG1ldGFkYXRhLmNhcGFjaXR5KSkpXG4gICAgICAgIH5uZXh0X2lkOihjaGVjayBUdXBsZV9pZC5pbnZhcmlhbnQpXG4gICAgICAgIH5maXJzdF9mcmVlOlxuICAgICAgICAgIChjaGVjayAoZnVuIGZpcnN0X2ZyZWUgLT5cbiAgICAgICAgICAgICBsZXQgZnJlZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm1ldGFkYXRhLmNhcGFjaXR5IGZhbHNlIGluXG4gICAgICAgICAgICAgbGV0IHIgPSByZWYgZmlyc3RfZnJlZSBpblxuICAgICAgICAgICAgIHdoaWxlIG5vdCAoSGVhZGVyLmlzX251bGwgIXIpIGRvXG4gICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gIXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoSGVhZGVyLmlzX2ZyZWUgaGVhZGVyKTtcbiAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSBIZWFkZXIubmV4dF9mcmVlX2hlYWRlcl9pbmRleCBoZWFkZXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCk7XG4gICAgICAgICAgICAgICBsZXQgdHVwbGVfbnVtID0gaGVhZGVyX2luZGV4X3RvX3R1cGxlX251bSBtZXRhZGF0YSB+aGVhZGVyX2luZGV4IGluXG4gICAgICAgICAgICAgICBpZiBmcmVlLih0dXBsZV9udW0pXG4gICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiY3ljbGUgaW4gZnJlZSBsaXN0XCIgdHVwbGVfbnVtIFslc2V4cF9vZjogaW50XTtcbiAgICAgICAgICAgICAgIGZyZWUuKHR1cGxlX251bSkgPC0gdHJ1ZTtcbiAgICAgICAgICAgICAgIHIgOj0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXhcbiAgICAgICAgICAgICBkb25lKSlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHVtbXkgPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUpXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBmb3IgdHVwbGVfbnVtID0gMCB0byBtZXRhZGF0YS5jYXBhY2l0eSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICAgICAgICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBpZiBIZWFkZXIuaXNfZnJlZSBoZWFkZXJcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0X3Nsb3QgPSB0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgICAgICAgICAgICBmb3Igc2xvdCA9IDAgdG8gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChPYmouaXNfaW50IChVbmlmb3JtX2FycmF5LmdldCB0IChmaXJzdF9zbG90ICsgc2xvdCkpKVxuICAgICAgICAgICAgICAgICAgIGRvbmUpXG4gICAgICAgICAgICAgICBkb25lKSlcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biwgdCkgWyVzZXhwX29mOiBleG4gKiBfIHRdXG4gIDs7XG5cbiAgbGV0IGNhcGFjaXR5IHQgPSAobWV0YWRhdGEgdCkuY2FwYWNpdHlcbiAgbGV0IGlzX2Z1bGwgdCA9IE1ldGFkYXRhLmlzX2Z1bGwgKG1ldGFkYXRhIHQpXG5cbiAgbGV0IHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQgbWV0YWRhdGEgfmhlYWRlcl9pbmRleCA9XG4gICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IG1ldGFkYXRhLmZpcnN0X2ZyZWU7XG4gICAgbWV0YWRhdGEuZmlyc3RfZnJlZSA8LSBIZWFkZXIuZnJlZSB+bmV4dF9mcmVlX2hlYWRlcl9pbmRleDpoZWFkZXJfaW5kZXhcbiAgOztcblxuICBsZXQgc2V0X21ldGFkYXRhICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIG1ldGFkYXRhID1cbiAgICBVbmlmb3JtX2FycmF5LnNldCB0IG1ldGFkYXRhX2luZGV4IChPYmoucmVwciAobWV0YWRhdGEgOiBzbG90cyBNZXRhZGF0YS50KSlcbiAgOztcblxuICBsZXQgY3JlYXRlX2FycmF5ICh0eXBlIHNsb3RzKSAobWV0YWRhdGEgOiBzbG90cyBNZXRhZGF0YS50KSA6IHNsb3RzIHQgPVxuICAgIGxldCB0ID0gVW5pZm9ybV9hcnJheS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KE1ldGFkYXRhLmFycmF5X2xlbmd0aCBtZXRhZGF0YSkgaW5cbiAgICBzZXRfbWV0YWRhdGEgdCBtZXRhZGF0YTtcbiAgICB0XG4gIDs7XG5cbiAgKCogSW5pdGlhbGl6ZSB0dXBsZXMgbnVtYmVyZWQgZnJvbSBbbG9dIChpbmNsdXNpdmUpIHVwIHRvIFtoaV0gKGV4Y2x1c2l2ZSkuICBGb3IgZWFjaFxuICAgICB0dXBsZSwgdGhpcyBwdXRzIGR1bW15IHZhbHVlcyBpbiB0aGUgdHVwbGUncyBzbG90cyBhbmQgYWRkcyB0aGUgdHVwbGUgdG8gdGhlIGZyZWVcbiAgICAgbGlzdC4gKilcbiAgbGV0IHVuc2FmZV9pbml0X3JhbmdlIHQgbWV0YWRhdGEgfmxvIH5oaSA9XG4gICAgKG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgIGZvciB0dXBsZV9udW0gPSBsbyB0byBoaSAtIDEgZG9cbiAgICAgICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICAgfmRzdDp0XG4gICAgICAgICAgIH5kc3RfcG9zOih0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0pXG4gICAgICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgZG9uZSk7XG4gICAgZm9yIHR1cGxlX251bSA9IGhpIC0gMSBkb3dudG8gbG8gZG9cbiAgICAgIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0XG4gICAgICAgIHRcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICAgfmhlYWRlcl9pbmRleDoodHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0pXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBpZiBjYXBhY2l0eSA8IDBcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wuY3JlYXRlIGdvdCBpbnZhbGlkIGNhcGFjaXR5XCIgY2FwYWNpdHkgWyVzZXhwX29mOiBpbnRdO1xuICAgIGxldCBzbG90c19wZXJfdHVwbGUgPSBTbG90cy5zbG90c19wZXJfdHVwbGUgc2xvdHMgaW5cbiAgICBsZXQgbWF4X2NhcGFjaXR5ID0gbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgaW5cbiAgICBpZiBjYXBhY2l0eSA+IG1heF9jYXBhY2l0eVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5jcmVhdGUgZ290IHRvbyBsYXJnZSBjYXBhY2l0eVwiXG4gICAgICAgIChjYXBhY2l0eSwgYG1heCBtYXhfY2FwYWNpdHkpXG4gICAgICAgIFslc2V4cF9vZjogaW50ICogWyBgbWF4IG9mIGludCBdXTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHlcbiAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgOyBuZXh0X2lkID0gVHVwbGVfaWQuaW5pdFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCB0ID0gY3JlYXRlX2FycmF5IG1ldGFkYXRhIGluXG4gICAgdW5zYWZlX2luaXRfcmFuZ2UgdCBtZXRhZGF0YSB+bG86MCB+aGk6Y2FwYWNpdHk7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUgKHR5cGUgdHVwbGUpIChzbG90cyA6ICh0dXBsZSwgXykgU2xvdHMudCkgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgbGV0IGR1bW15ID1cbiAgICAgIGlmIFNsb3RzLnNsb3RzX3Blcl90dXBsZSBzbG90cyA9IDFcbiAgICAgIHRoZW4gVW5pZm9ybV9hcnJheS5zaW5nbGV0b24gKE9iai5yZXByIChkdW1teSA6IHR1cGxlKSlcbiAgICAgIGVsc2UgKE9iai5tYWdpYyAoZHVtbXkgOiB0dXBsZSkgOiBPYmoudCBVbmlmb3JtX2FycmF5LnQpXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15OihTb21lIGR1bW15KVxuICA7O1xuXG4gICgqIFB1cmdlIGEgcG9vbCBhbmQgbWFrZSBpdCB1bnVzYWJsZS4gKilcbiAgbGV0IGRlc3Ryb3kgdCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgICgqIFdlIGNsZWFyIG91dCBhbGwgdGhlIHBvb2wncyBlbnRyaWVzLCB3aGljaCBjYXVzZXMgYWxsIHBvaW50ZXJzIHRvIGJlIGludmFsaWQuICBUaGlzXG4gICAgICAgYWxzbyBwcmV2ZW50cyB0aGUgZGVzdHJveWVkIHBvb2wgZnJvbSB1bm5lY2Vzc2FyaWx5IGtlZXBpbmcgaGVhcCBibG9ja3MgYWxpdmUuXG4gICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIFtmcmVlXWluZyBhbGwgdGhlIGVudHJpZXMgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IHdlIG1ha2UgdGhlXG4gICAgICAgZnJlZSBsaXN0IGVtcHR5IGFzIHdlbGwuICopXG4gICAgKG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgICAgZm9yIGkgPSBzdGFydF9vZl90dXBsZXNfaW5kZXggdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggdCAtIDEgZG9cbiAgICAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKE9iai5yZXByIDApXG4gICAgICAgZG9uZVxuICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICBmb3IgdHVwbGVfbnVtID0gMCB0byBtZXRhZGF0YS5jYXBhY2l0eSAtIDEgZG9cbiAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IEhlYWRlci5udWxsO1xuICAgICAgICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgICB+ZHN0OnRcbiAgICAgICAgICAgfmRzdF9wb3M6KGhlYWRlcl9pbmRleCArIDEpXG4gICAgICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgZG9uZSk7XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5ID0gMFxuICAgICAgOyBsZW5ndGggPSAwXG4gICAgICA7IG5leHRfaWQgPSBtZXRhZGF0YS5uZXh0X2lkXG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teSA9IG1ldGFkYXRhLmR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBzZXRfbWV0YWRhdGEgdCBtZXRhZGF0YVxuICA7O1xuXG4gIGxldFtAY29sZF0gZ3JvdyA/Y2FwYWNpdHkgdCA9XG4gICAgbGV0IHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgIDsgY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHlcbiAgICAgICAgOyBsZW5ndGhcbiAgICAgICAgOyBuZXh0X2lkXG4gICAgICAgIDsgZmlyc3RfZnJlZSA9IF9cbiAgICAgICAgOyBkdW1teVxuICAgICAgICB9XG4gICAgICA9XG4gICAgICBtZXRhZGF0YSB0XG4gICAgaW5cbiAgICBsZXQgY2FwYWNpdHkgPVxuICAgICAgbWluIChtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSkgKGdyb3dfY2FwYWNpdHkgfmNhcGFjaXR5IH5vbGRfY2FwYWNpdHkpXG4gICAgaW5cbiAgICBpZiBjYXBhY2l0eSA9IG9sZF9jYXBhY2l0eVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5ncm93IGNhbm5vdCBncm93IHBvb2w7IGNhcGFjaXR5IGFscmVhZHkgYXQgbWF4aW11bVwiXG4gICAgICAgIGNhcGFjaXR5XG4gICAgICAgIFslc2V4cF9vZjogaW50XTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHlcbiAgICAgIDsgbGVuZ3RoXG4gICAgICA7IG5leHRfaWRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdCcgPSBjcmVhdGVfYXJyYXkgbWV0YWRhdGEgaW5cbiAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6dFxuICAgICAgfnNyY19wb3M6c3RhcnRfb2ZfdHVwbGVzX2luZGV4XG4gICAgICB+ZHN0OnQnXG4gICAgICB+ZHN0X3BvczpzdGFydF9vZl90dXBsZXNfaW5kZXhcbiAgICAgIH5sZW46KG9sZF9jYXBhY2l0eSAqIE1ldGFkYXRhLmFycmF5X2luZGljZXNfcGVyX3R1cGxlIG1ldGFkYXRhKTtcbiAgICBkZXN0cm95IHQ7XG4gICAgdW5zYWZlX2luaXRfcmFuZ2UgdCcgbWV0YWRhdGEgfmxvOm9sZF9jYXBhY2l0eSB+aGk6Y2FwYWNpdHk7XG4gICAgZm9yIHR1cGxlX251bSA9IG9sZF9jYXBhY2l0eSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCcgfmhlYWRlcl9pbmRleCBpblxuICAgICAgaWYgbm90IChIZWFkZXIuaXNfdXNlZCBoZWFkZXIpXG4gICAgICB0aGVuIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQnIG1ldGFkYXRhIH5oZWFkZXJfaW5kZXhcbiAgICBkb25lO1xuICAgIHQnXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9tYWxsb2NfZnVsbCB0ID1cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wubWFsbG9jIG9mIGZ1bGwgcG9vbFwiIHQgWyVzZXhwX29mOiBfIHRdXG4gIDs7XG5cbiAgbGV0IG1hbGxvYyAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSA6IHNsb3RzIFBvaW50ZXIudCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGxldCBmaXJzdF9mcmVlID0gbWV0YWRhdGEuZmlyc3RfZnJlZSBpblxuICAgIGlmIEhlYWRlci5pc19udWxsIGZpcnN0X2ZyZWUgdGhlbiByYWlzZV9tYWxsb2NfZnVsbCB0O1xuICAgIGxldCBoZWFkZXJfaW5kZXggPSBIZWFkZXIubmV4dF9mcmVlX2hlYWRlcl9pbmRleCBmaXJzdF9mcmVlIGluXG4gICAgbWV0YWRhdGEuZmlyc3RfZnJlZSA8LSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleDtcbiAgICBtZXRhZGF0YS5sZW5ndGggPC0gbWV0YWRhdGEubGVuZ3RoICsgMTtcbiAgICBsZXQgdHVwbGVfaWQgPSBtZXRhZGF0YS5uZXh0X2lkIGluXG4gICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IChIZWFkZXIudXNlZCB0dXBsZV9pZCk7XG4gICAgbWV0YWRhdGEubmV4dF9pZCA8LSBUdXBsZV9pZC5uZXh0IHR1cGxlX2lkO1xuICAgIFBvaW50ZXIuY3JlYXRlIH5oZWFkZXJfaW5kZXggdHVwbGVfaWRcbiAgOztcblxuICBsZXQgdW5zYWZlX2ZyZWUgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgKHBvaW50ZXIgOiBzbG90cyBQb2ludGVyLnQpID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbWV0YWRhdGEubGVuZ3RoIDwtIG1ldGFkYXRhLmxlbmd0aCAtIDE7XG4gICAgdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCBtZXRhZGF0YSB+aGVhZGVyX2luZGV4OihQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyKTtcbiAgICBtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgcG9zID0gUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIgaW5cbiAgICAgIGZvciBpID0gMCB0byBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgLSAxIGRvXG4gICAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgdCAocG9zICsgaSlcbiAgICAgIGRvbmVcbiAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2JsaXRcbiAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgIH5kc3Q6dFxuICAgICAgICB+ZHN0X3BvczooUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGZyZWUgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgKHBvaW50ZXIgOiBzbG90cyBQb2ludGVyLnQpID1cbiAgICAoKiBDaGVjayBbcG9pbnRlcl9pc192YWxpZF0gdG86XG4gICAgICAgLSBhdm9pZCBmcmVlaW5nIGEgbnVsbCBwb2ludGVyXG4gICAgICAgLSBhdm9pZCBmcmVlaW5nIGEgZnJlZSBwb2ludGVyICh0aGlzIHdvdWxkIGxlYWQgdG8gYSBwb29sIGluY29uc2lzdGVuY3kpXG4gICAgICAgLSBiZSBhYmxlIHRvIHVzZSB1bnNhZmUgZnVuY3Rpb25zIGFmdGVyLiAqKVxuICAgIGlmIG5vdCAocG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmZyZWUgb2YgaW52YWxpZCBwb2ludGVyXCJcbiAgICAgICAgKHBvaW50ZXIsIHQpXG4gICAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnQgKiBfIHRdO1xuICAgIHVuc2FmZV9mcmVlIHQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxIHQgYTAgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MiB0IGEwIGExID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMykgKE9iai5yZXByIGExMik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTMpIChPYmoucmVwciBhMTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxNCkgKE9iai5yZXByIGExMyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBnZXQgdCBwIHNsb3QgPSBPYmoub2JqIChVbmlmb3JtX2FycmF5LmdldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSlcblxuICBsZXQgdW5zYWZlX2dldCB0IHAgc2xvdCA9XG4gICAgT2JqLm9iaiAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpKVxuICA7O1xuXG4gIGxldCBzZXQgdCBwIHNsb3QgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpIChPYmoucmVwciB4KVxuXG4gIGxldCB1bnNhZmVfc2V0IHQgcCBzbG90IHggPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSAoT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgZ2V0X3R1cGxlICh0eXBlIHR1cGxlKSAodCA6ICh0dXBsZSwgXykgU2xvdHMudCB0KSBwb2ludGVyID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbGV0IGxlbiA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSBpblxuICAgIGlmIGxlbiA9IDFcbiAgICB0aGVuIGdldCB0IHBvaW50ZXIgU2xvdC50MFxuICAgIGVsc2VcbiAgICAgIChPYmoubWFnaWNcbiAgICAgICAgIChVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6KFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyKSB+bGVuXG4gICAgICAgICAgOiBPYmoudCBVbmlmb3JtX2FycmF5LnQpXG4gICAgICAgOiB0dXBsZSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvb2xcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvb2xcblxuICBsZXQgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSA9IGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXk6Tm9uZVxuZW5kXG5cbm1vZHVsZSBEZWJ1ZyAoUG9vbCA6IFMpID0gc3RydWN0XG4gIG9wZW4gUG9vbFxuXG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgdHJ1ZVxuICBsZXQgc2hvd19tZXNzYWdlcyA9IHJlZiB0cnVlXG5cbiAgbGV0IGRlYnVnIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGxldCBwcmVmaXggPSBcIlBvb2wuXCIgaW5cbiAgICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIHRzIH5mOihpbnZhcmlhbnQgaWdub3JlKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlcyB0aGVuIERlYnVnLmVwcmludHMgKGNvbmNhdCBbIHByZWZpeDsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlblxuICAgICAgRGVidWcuZXByaW50c1xuICAgICAgICAoY29uY2F0IFsgcHJlZml4OyBuYW1lOyBcIiByZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5cbiAgbW9kdWxlIFNsb3RzID0gU2xvdHNcbiAgbW9kdWxlIFNsb3QgPSBTbG90XG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBzdHJ1Y3RcbiAgICBvcGVuIFBvaW50ZXJcblxuICAgIHR5cGUgbm9ucmVjICdzbG90cyB0ID0gJ3Nsb3RzIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGxldCBwaHlzX2NvbXBhcmUgdDEgdDIgPVxuICAgICAgZGVidWdcbiAgICAgICAgXCJQb2ludGVyLnBoeXNfY29tcGFyZVwiXG4gICAgICAgIFtdXG4gICAgICAgICh0MSwgdDIpXG4gICAgICAgIFslc2V4cF9vZjogXyB0ICogXyB0XVxuICAgICAgICBbJXNleHBfb2Y6IGludF1cbiAgICAgICAgKGZ1biAoKSAtPiBwaHlzX2NvbXBhcmUgdDEgdDIpXG4gICAgOztcblxuICAgIGxldCBwaHlzX2VxdWFsIHQxIHQyID1cbiAgICAgIGRlYnVnXG4gICAgICAgIFwiUG9pbnRlci5waHlzX2VxdWFsXCJcbiAgICAgICAgW11cbiAgICAgICAgKHQxLCB0MilcbiAgICAgICAgWyVzZXhwX29mOiBfIHQgKiBfIHRdXG4gICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgKGZ1biAoKSAtPiBwaHlzX2VxdWFsIHQxIHQyKVxuICAgIDs7XG5cbiAgICBsZXQgaXNfbnVsbCB0ID1cbiAgICAgIGRlYnVnIFwiUG9pbnRlci5pc19udWxsXCIgW10gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBib29sXSAoZnVuICgpIC0+IGlzX251bGwgdClcbiAgICA7O1xuXG4gICAgbGV0IG51bGwgPSBudWxsXG5cbiAgICBtb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgICAgIG9wZW4gSWRcblxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgICBsZXQgb2ZfaW50NjMgaSA9XG4gICAgICAgIGRlYnVnIFwiUG9pbnRlci5JZC5vZl9pbnQ2M1wiIFtdIGkgWyVzZXhwX29mOiBJbnQ2My50XSBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICBvZl9pbnQ2MyBpKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPVxuICAgICAgICBkZWJ1ZyBcIlBvaW50ZXIuSWQudG9faW50NjNcIiBbXSB0IFslc2V4cF9vZjogdF0gWyVzZXhwX29mOiBJbnQ2My50XSAoZnVuICgpIC0+XG4gICAgICAgICAgdG9faW50NjMgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIHR5cGUgbm9ucmVjICdzbG90cyB0ID0gJ3Nsb3RzIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICBsZXQgaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIgPVxuICAgIGRlYnVnXG4gICAgICBcImlkX29mX3BvaW50ZXJcIlxuICAgICAgWyB0IF1cbiAgICAgIHBvaW50ZXJcbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudF1cbiAgICAgIChmdW4gKCkgLT4gaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIGRlYnVnXG4gICAgICBcInBvaW50ZXJfb2ZfaWRfZXhuXCJcbiAgICAgIFsgdCBdXG4gICAgICBpZFxuICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnRdXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgKGZ1biAoKSAtPiBwb2ludGVyX29mX2lkX2V4biB0IGlkKVxuICA7O1xuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciA9XG4gICAgZGVidWdcbiAgICAgIFwicG9pbnRlcl9pc192YWxpZFwiXG4gICAgICBbIHQgXVxuICAgICAgcG9pbnRlclxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgIChmdW4gKCkgLT4gcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBkZWJ1ZyBcImNyZWF0ZVwiIFtdIGNhcGFjaXR5IFslc2V4cF9vZjogaW50XSBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkpXG4gIDs7XG5cbiAgbGV0IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlID1cbiAgICBkZWJ1ZyBcIm1heF9jYXBhY2l0eVwiIFtdIHNsb3RzX3Blcl90dXBsZSBbJXNleHBfb2Y6IGludF0gWyVzZXhwX29mOiBpbnRdIChmdW4gKCkgLT5cbiAgICAgIG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKVxuICA7O1xuXG4gIGxldCBjYXBhY2l0eSB0ID1cbiAgICBkZWJ1ZyBcImNhcGFjaXR5XCIgWyB0IF0gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBpbnRdIChmdW4gKCkgLT4gY2FwYWNpdHkgdClcbiAgOztcblxuICBsZXQgZ3JvdyA/Y2FwYWNpdHkgdCA9XG4gICAgZGVidWdcbiAgICAgIFwiZ3Jvd1wiXG4gICAgICBbIHQgXVxuICAgICAgKGBjYXBhY2l0eSBjYXBhY2l0eSlcbiAgICAgIFslc2V4cF9vZjogWyBgY2FwYWNpdHkgb2YgaW50IG9wdGlvbiBdXVxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gICAgICAoZnVuICgpIC0+IGdyb3cgP2NhcGFjaXR5IHQpXG4gIDs7XG5cbiAgbGV0IGlzX2Z1bGwgdCA9XG4gICAgZGVidWcgXCJpc19mdWxsXCIgWyB0IF0gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBib29sXSAoZnVuICgpIC0+IGlzX2Z1bGwgdClcbiAgOztcblxuICBsZXQgdW5zYWZlX2ZyZWUgdCBwID1cbiAgICBkZWJ1ZyBcInVuc2FmZV9mcmVlXCIgWyB0IF0gcCBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT5cbiAgICAgIHVuc2FmZV9mcmVlIHQgcClcbiAgOztcblxuICBsZXQgZnJlZSB0IHAgPVxuICAgIGRlYnVnIFwiZnJlZVwiIFsgdCBdIHAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+IGZyZWUgdCBwKVxuICA7O1xuXG4gIGxldCBkZWJ1Z19uZXcgdCBmID0gZGVidWcgXCJuZXdcIiBbIHQgXSAoKSBbJXNleHBfb2Y6IHVuaXRdIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIGZcbiAgbGV0IG5ldzEgdCBhMCA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MSB0IGEwKVxuICBsZXQgbmV3MiB0IGEwIGExID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcyIHQgYTAgYTEpXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzMgdCBhMCBhMSBhMilcbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NCB0IGEwIGExIGEyIGEzKVxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc1IHQgYTAgYTEgYTIgYTMgYTQpXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSlcbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2KVxuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3KVxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4KVxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkpXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwKVxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExKVxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIpXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzKVxuICA7O1xuXG4gIGxldCBnZXRfdHVwbGUgdCBwb2ludGVyID1cbiAgICBkZWJ1ZyBcImdldF90dXBsZVwiIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiBfXSAoZnVuICgpIC0+XG4gICAgICBnZXRfdHVwbGUgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBkZWJ1Z19nZXQgbmFtZSBmIHQgcG9pbnRlciA9XG4gICAgZGVidWcgbmFtZSBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogX10gKGZ1biAoKSAtPiBmIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgZ2V0IHQgcG9pbnRlciBzbG90ID0gZGVidWdfZ2V0IFwiZ2V0XCIgZ2V0IHQgcG9pbnRlciBzbG90XG4gIGxldCB1bnNhZmVfZ2V0IHQgcG9pbnRlciBzbG90ID0gZGVidWdfZ2V0IFwidW5zYWZlX2dldFwiIHVuc2FmZV9nZXQgdCBwb2ludGVyIHNsb3RcblxuICBsZXQgZGVidWdfc2V0IG5hbWUgZiB0IHBvaW50ZXIgc2xvdCBhID1cbiAgICBkZWJ1ZyBuYW1lIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+XG4gICAgICBmIHQgcG9pbnRlciBzbG90IGEpXG4gIDs7XG5cbiAgbGV0IHNldCB0IHBvaW50ZXIgc2xvdCBhID0gZGVidWdfc2V0IFwic2V0XCIgc2V0IHQgcG9pbnRlciBzbG90IGFcbiAgbGV0IHVuc2FmZV9zZXQgdCBwb2ludGVyIHNsb3QgYSA9IGRlYnVnX3NldCBcInVuc2FmZV9zZXRcIiB1bnNhZmVfc2V0IHQgcG9pbnRlciBzbG90IGFcbmVuZFxuXG5tb2R1bGUgRXJyb3JfY2hlY2sgKFBvb2wgOiBTKSA9IHN0cnVjdFxuICBvcGVuIFBvb2xcbiAgbW9kdWxlIFNsb3RzID0gU2xvdHNcbiAgbW9kdWxlIFNsb3QgPSBTbG90XG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlICdzbG90cyB0ID1cbiAgICAgIHsgbXV0YWJsZSBpc192YWxpZCA6IGJvb2xcbiAgICAgIDsgcG9pbnRlciA6ICdzbG90cyBQb2ludGVyLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgbGV0IGNyZWF0ZSBwb2ludGVyID0geyBpc192YWxpZCA9IHRydWU7IHBvaW50ZXIgfVxuICAgIGxldCBudWxsICgpID0geyBpc192YWxpZCA9IGZhbHNlOyBwb2ludGVyID0gUG9pbnRlci5udWxsICgpIH1cbiAgICBsZXQgcGh5c19jb21wYXJlIHQxIHQyID0gUG9pbnRlci5waHlzX2NvbXBhcmUgdDEucG9pbnRlciB0Mi5wb2ludGVyXG4gICAgbGV0IHBoeXNfZXF1YWwgdDEgdDIgPSBQb2ludGVyLnBoeXNfZXF1YWwgdDEucG9pbnRlciB0Mi5wb2ludGVyXG4gICAgbGV0IGlzX251bGwgdCA9IFBvaW50ZXIuaXNfbnVsbCB0LnBvaW50ZXJcblxuICAgIGxldCBmb2xsb3cgdCA9XG4gICAgICBpZiBub3QgdC5pc192YWxpZFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gdXNlIGludmFsaWQgcG9pbnRlclwiIHQgWyVzZXhwX29mOiBfIHRdO1xuICAgICAgdC5wb2ludGVyXG4gICAgOztcblxuICAgIGxldCBpbnZhbGlkYXRlIHQgPSB0LmlzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgICBtb2R1bGUgSWQgPSBQb2ludGVyLklkXG4gIGVuZFxuXG4gIHR5cGUgJ3Nsb3RzIHQgPSAnc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCB7IFBvaW50ZXIuaXNfdmFsaWQ7IHBvaW50ZXIgfSA9XG4gICAgaXNfdmFsaWQgJiYgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXJcbiAgOztcblxuICAoKiBXZSBkb24ndCBkbyBbUG9pbnRlci5mb2xsb3cgcG9pbnRlcl0sIGJlY2F1c2UgdGhhdCB3b3VsZCBkaXNhbGxvdyBbaWRfb2ZfcG9pbnRlciB0XG4gICAgIChQb2ludGVyLm51bGwgKCkpXS4gKilcbiAgbGV0IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyID0gaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIuUG9pbnRlci5wb2ludGVyXG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIGxldCBwb2ludGVyID0gcG9pbnRlcl9vZl9pZF9leG4gdCBpZCBpblxuICAgIGxldCBpc192YWxpZCA9IFBvb2wucG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgaW5cbiAgICB7IFBvaW50ZXIuaXNfdmFsaWQ7IHBvaW50ZXIgfVxuICA7O1xuXG4gIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGNhcGFjaXR5ID0gY2FwYWNpdHlcbiAgbGV0IG1heF9jYXBhY2l0eSA9IG1heF9jYXBhY2l0eVxuICBsZXQgZ3JvdyA9IGdyb3dcbiAgbGV0IGlzX2Z1bGwgPSBpc19mdWxsXG4gIGxldCBnZXRfdHVwbGUgdCBwID0gZ2V0X3R1cGxlIHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCBnZXQgdCBwID0gZ2V0IHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCB1bnNhZmVfZ2V0IHQgcCA9IHVuc2FmZV9nZXQgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IHNldCB0IHAgc2xvdCB2ID0gc2V0IHQgKFBvaW50ZXIuZm9sbG93IHApIHNsb3QgdlxuICBsZXQgdW5zYWZlX3NldCB0IHAgc2xvdCB2ID0gdW5zYWZlX3NldCB0IChQb2ludGVyLmZvbGxvdyBwKSBzbG90IHZcblxuICBsZXQgdW5zYWZlX2ZyZWUgdCBwID1cbiAgICB1bnNhZmVfZnJlZSB0IChQb2ludGVyLmZvbGxvdyBwKTtcbiAgICBQb2ludGVyLmludmFsaWRhdGUgcFxuICA7O1xuXG4gIGxldCBmcmVlIHQgcCA9XG4gICAgZnJlZSB0IChQb2ludGVyLmZvbGxvdyBwKTtcbiAgICBQb2ludGVyLmludmFsaWRhdGUgcFxuICA7O1xuXG4gIGxldCBuZXcxIHQgYTAgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxIHQgYTApXG4gIGxldCBuZXcyIHQgYTAgYTEgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcyIHQgYTAgYTEpXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXczIHQgYTAgYTEgYTIpXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc0IHQgYTAgYTEgYTIgYTMpXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc1IHQgYTAgYTEgYTIgYTMgYTQpXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUpXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYpXG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3KVxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOClcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSlcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwKVxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSlcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMilcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzKVxuICA7O1xuZW5kXG4iLCIoKiBCZSBzdXJlIGFuZCBmaXJzdCByZWFkIHRoZSBpbXBsZW1lbnRhdGlvbiBvdmVydmlldyBpbiB0aW1pbmdfd2hlZWxfaW50Zi5tbC5cblxuICAgQSB0aW1pbmcgd2hlZWwgaXMgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgb2YgXCJsZXZlbHNcIiwgd2hlcmUgZWFjaCBsZXZlbCBpcyBhbiBhcnJheSBvZlxuICAgXCJzbG90c1wiLiAgRWFjaCBzbG90IHJlcHJlc2VudHMgYSByYW5nZSBvZiBrZXlzLCBhbmQgaG9sZHMgZWxlbWVudHMgYXNzb2NpYXRlZCB3aXRoXG4gICB0aG9zZSBrZXlzLiAgRWFjaCBsZXZlbCBpcyBkZXRlcm1pbmVkIGJ5IHR3byBwYXJhbWV0ZXJzOiBbYml0c10sIHRoZSBudW1iZXIgb2Yga2V5IGJpdHNcbiAgIHRoYXQgdGhhdCBsZXZlbCBpcyByZXNwb25zaWJsZSBmb3IgZGlzdGluZ3Vpc2hpbmcsIGFuZCBbYml0c19wZXJfc2xvdF0sIHRoZSBzaXplIG9mIHRoZVxuICAgcmFuZ2Ugb2Yga2V5cyB0aGF0IGNvcnJlc3BvbmQgdG8gYSBzaW5nbGUgc2xvdCBpbiB0aGUgYXJyYXkuICBDb25jZXB0dWFsbHksIGVhY2ggbGV2ZWxcbiAgIGJyZWFrcyB1cCBhbGwgcG9zc2libGUga2V5cyBpbnRvIHJhbmdlcyBvZiBzaXplIFsyXmJpdHNfcGVyX3Nsb3RdLiAgVGhlIGxlbmd0aCBvZiBhXG4gICBsZXZlbCBhcnJheSBpcyBbMl5iaXRzXSwgYW5kIHRoZSBhcnJheSBpcyB1c2VkIGxpa2UgYSBjaXJjdWxhciBidWZmZXIgdG8gdHJhdmVyc2UgdGhlXG4gICByYW5nZXMgYXMgdGhlIHRpbWluZyB3aGVlbCdzIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcy4gIEEga2V5IFtrXSwgaWYgc3RvcmVkIGluIHRoZVxuICAgbGV2ZWwsIGlzIHN0b3JlZCBhdCBpbmRleCBbKGsgLyAyXmJpdHNfcGVyX3Nsb3QpIG1vZCAyXmJpdHNdLlxuXG4gICBUaGUgc2V0dGluZ3Mgb2YgdGhlIFtiaXRzXSB2YWx1ZXMgYXJlIGNvbmZpZ3VyYWJsZSBieSB1c2VyIGNvZGUgdXNpbmcgW0xldmVsX2JpdHNdLFxuICAgYWx0aG91Z2ggdGhlcmUgaXMgYSByZWFzb25hYmxlIGRlZmF1bHQgc2V0dGluZy4gIEdpdmVuIHRoZSBbYml0c10gdmFsdWVzLCB0aGVcbiAgIFtiaXRzX3Blcl9zbG90XSBhcmUgY2hvc2VuIHNvIHRoYXQgW2JpdHNfcGVyX3Nsb3RdIGF0IGxldmVsIFtpXSBpcyB0aGUgc3VtIG9mIHRoZVxuICAgW2JpdHNdIGF0IGFsbCBsb3dlciBsZXZlbHMuICBUaHVzLCBhIHNsb3QncyByYW5nZSBhdCBsZXZlbCBbaV0gaXMgYXMgbGFyZ2UgYXMgdGhlXG4gICBlbnRpcmUgcmFuZ2Ugb2YgdGhlIGFycmF5IGF0IGxldmVsIFtpIC0gMV0uXG5cbiAgIEVhY2ggbGV2ZWwgaGFzIGEgW21pbl9hbGxvd2VkX2tleV0gYW5kIGEgW21heF9hbGxvd2VkX2tleV0gdGhhdCBkZXRlcm1pbmUgdGhlIHJhbmdlIG9mXG4gICBrZXlzIHRoYXQgaXQgY3VycmVudGx5IHJlcHJlc2VudHMuICBUaGUgY3J1Y2lhbCBpbnZhcmlhbnQgb2YgdGhlIHRpbWluZyB3aGVlbCBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGhhdCB0aGUgW21pbl9hbGxvd2VkX2tleV0gYXQgbGV2ZWwgW2ldIGlzIG5vIG1vcmUgdGhhbiB0aGVcbiAgIFttYXhfYWxsb3dlZF9rZXkgKyAxXSBvZiBsZXZlbCBbaSAtIDFdLiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGxldmVscyBjYW4gcmVwcmVzZW50IGFsbFxuICAga2V5cyBmcm9tIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiB0aGUgbG93ZXN0IGxldmVsIHRvIHRoZSBbbWF4X2FsbG93ZWRfa2V5XSBvZiB0aGVcbiAgIGhpZ2hlc3QgbGV2ZWwuICBUaGUgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHJlc3RvcmluZ1xuICAgdGhpcyBpbnZhcmlhbnQuXG5cbiAgIEF0IGxldmVsIDAsIFtiaXRzX3Blcl9zbG90ID0gMF0sIGFuZCBzbyB0aGUgc2l6ZSBvZiBlYWNoIHNsb3QgaXMgWzFdLiAgVGhhdCBpcywgbGV2ZWwgMFxuICAgcHJlY2lzZWx5IGRpc3Rpbmd1aXNoZXMgYWxsIHRoZSBrZXlzIGJldHdlZW4gaXRzIFttaW5fYWxsb3dlZF9rZXldICh3aGljaCBpcyB0aGUgc2FtZVxuICAgYXMgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIHRoZSBlbnRpcmUgdGltaW5nIHdoZWVsKSBhbmQgW21heF9hbGxvd2VkX2tleV0uICBBcyB0aGVcbiAgIGxldmVscyBpbmNyZWFzZSwgdGhlIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcywgdGhlIFtiaXRzX3Blcl9zbG90XSBpbmNyZWFzZXMsIGFuZFxuICAgdGhlIHJhbmdlIG9mIGtleXMgc3RvcmVkIGluIHRoZSBsZXZlbCBpbmNyZWFzZXMgKGRyYW1hdGljYWxseSkuXG5cbiAgIFRoZSBpZGVhIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIHRoZSBoaWVyYXJjaGljYWwgYXBwcm9hY2ggZGVzY3JpYmVkIGluOlxuXG4gICB7dlxuICAgICBIYXNoZWQgYW5kIEhpZXJhcmNoaWNhbCBUaW1pbmcgV2hlZWxzOlxuICAgICBFZmZpY2llbnQgRGF0YSBTdHJ1Y3R1cmVzIGZvciBJbXBsZW1lbnRpbmcgYSBUaW1lciBGYWNpbGl0eVxuXG4gICAgIFZhcmdoZXNlICYgTGF1Y2ssIDE5OTZcbiAgIHZ9XG5cbiAgIEhvd2V2ZXIsIHRoZSBjb2RlIGlzIGNvbXBsZXRlbHkgbmV3LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIFRpbWluZ193aGVlbF9pbnRmXG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxubGV0IHNleHBfb2ZfdF9zdHlsZSA6IFsgYFByZXR0eSB8IGBJbnRlcm5hbCBdIHJlZiA9IHJlZiBgUHJldHR5XG5cbigqIFt7bWF4LG1pbn1fdGltZV0gYXJlIGJvdW5kcyBvbiB0aGUgdGltZXMgc3VwcG9ydGVkIGJ5IGEgdGltaW5nIHdoZWVsLiAqKVxuXG5sZXQgbWF4X3RpbWUgPSBUaW1lX25zLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG5sZXQgbWluX3RpbWUgPSBUaW1lX25zLmVwb2NoXG5cbm1vZHVsZSBOdW1fa2V5X2JpdHMgOiBzaWdcbiAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBpbmNsdWRlIENvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgemVybyA6IHRcblxuICAoKiB2YWwgbWluX3ZhbHVlIDogdCAqKVxuXG4gIHZhbCBtYXhfdmFsdWUgOiB0XG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvdzIgOiB0IC0+IEludDYzLnRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIEludFxuXG4gIGxldCBtaW5fdmFsdWUgPSAwXG5cbiAgKCoqIFdlIHN1cHBvcnQgYWxsIG5vbi1uZWdhdGl2ZSBbVGltZV9ucy50XSB2YWx1ZXMuICopXG4gIGxldCBtYXhfdmFsdWUgPSBJbnQ2My5udW1fYml0cyAtIDFcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGFzc2VydCAodCA+PSBtaW5fdmFsdWUpO1xuICAgIGFzc2VydCAodCA8PSBtYXhfdmFsdWUpXG4gIDs7XG5cbiAgbGV0IG9mX2ludCBpID1cbiAgICBpbnZhcmlhbnQgaTtcbiAgICBpXG4gIDs7XG5cbiAgbGV0ICggKyApIHQxIHQyID1cbiAgICBsZXQgdCA9IHQxICsgdDIgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0ICggLSApIHQxIHQyID1cbiAgICBsZXQgdCA9IHQxIC0gdDIgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IHBvdzIgdCA9IEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIHRcbmVuZFxuXG5tb2R1bGUgTGV2ZWxfYml0cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBOdW1fa2V5X2JpdHMudCBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IG1heF9udW1fYml0cyA9IChOdW1fa2V5X2JpdHMubWF4X3ZhbHVlIDo+IGludClcbiAgbGV0IG51bV9iaXRzX2ludGVybmFsIHQgPSBMaXN0LmZvbGQgdCB+aW5pdDpOdW1fa2V5X2JpdHMuemVybyB+ZjpOdW1fa2V5X2JpdHMuKCArIClcbiAgbGV0IG51bV9iaXRzIHQgPSAobnVtX2JpdHNfaW50ZXJuYWwgdCA6PiBpbnQpXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKG5vdCAoTGlzdC5pc19lbXB0eSB0KSk7XG4gICAgTGlzdC5pdGVyIHQgfmY6KGZ1biBudW1fa2V5X2JpdHMgLT5cbiAgICAgIE51bV9rZXlfYml0cy5pbnZhcmlhbnQgbnVtX2tleV9iaXRzO1xuICAgICAgYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+ICkgbnVtX2tleV9iaXRzIE51bV9rZXlfYml0cy56ZXJvKSk7XG4gICAgTnVtX2tleV9iaXRzLmludmFyaWFudCAobnVtX2JpdHNfaW50ZXJuYWwgdClcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIGxldCB0ID0gc2V4cCB8PiBbJW9mX3NleHA6IHRdIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGVfZXhuID8oZXh0ZW5kX3RvX21heF9udW1fYml0cyA9IGZhbHNlKSBpbnRzID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IGludHMgdGhlbiBmYWlsd2l0aCBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biByZXF1aXJlcyBhIG5vbmVtcHR5IGxpc3RcIjtcbiAgICBpZiBMaXN0LmV4aXN0cyBpbnRzIH5mOihmdW4gYml0cyAtPiBiaXRzIDw9IDApXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gZ290IG5vbnBvc2l0aXZlIG51bSBiaXRzXCIgfl86KGludHMgOiBpbnQgbGlzdCldO1xuICAgIGxldCBudW1fYml0cyA9IExpc3QuZm9sZCBpbnRzIH5pbml0OjAgfmY6KCArICkgaW5cbiAgICBpZiBudW1fYml0cyA+IG1heF9udW1fYml0c1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gZ290IHRvbyBtYW55IGJpdHNcIlxuICAgICAgICAgICAgfl86KGludHMgOiBpbnQgbGlzdClcbiAgICAgICAgICAgIH5nb3Q6KG51bV9iaXRzIDogaW50KVxuICAgICAgICAgICAgKG1heF9udW1fYml0cyA6IGludCldO1xuICAgIGxldCBpbnRzID1cbiAgICAgIGlmIGV4dGVuZF90b19tYXhfbnVtX2JpdHNcbiAgICAgIHRoZW4gaW50cyBAIExpc3QuaW5pdCAobWF4X251bV9iaXRzIC0gbnVtX2JpdHMpIH5mOihjb25zdCAxKVxuICAgICAgZWxzZSBpbnRzXG4gICAgaW5cbiAgICBMaXN0Lm1hcCBpbnRzIH5mOk51bV9rZXlfYml0cy5vZl9pbnRcbiAgOztcblxuICBsZXQgZGVmYXVsdCA9IGNyZWF0ZV9leG4gWyAxMTsgMTA7IDEwOyAxMDsgMTA7IDEwOyAxIF1cblxuICBsZXQgdHJpbSB0IH5tYXhfbnVtX2JpdHMgPVxuICAgIGlmIE51bV9rZXlfYml0cy4oIDw9ICkgKG51bV9iaXRzX2ludGVybmFsIHQpIG1heF9udW1fYml0c1xuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIHQgfnJlbWFpbmluZyA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgYiA6OiB0IC0+XG4gICAgICAgICAgaWYgTnVtX2tleV9iaXRzLiggPj0gKSBiIHJlbWFpbmluZ1xuICAgICAgICAgIHRoZW4gWyByZW1haW5pbmcgXVxuICAgICAgICAgIGVsc2UgYiA6OiBsb29wIHQgfnJlbWFpbmluZzooTnVtX2tleV9iaXRzLiggLSApIHJlbWFpbmluZyBiKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCB+cmVtYWluaW5nOm1heF9udW1fYml0cylcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uIDogc2lnXG4gIGluY2x1ZGUgQWxhcm1fcHJlY2lzaW9uXG5cbiAgdmFsIG51bV9rZXlfYml0cyA6IHQgLT4gTnVtX2tleV9iaXRzLnRcbiAgdmFsIGludGVydmFsX251bSA6IHQgLT4gVGltZV9ucy50IC0+IEludDYzLnRcbiAgdmFsIGludGVydmFsX251bV9zdGFydCA6IHQgLT4gSW50NjMudCAtPiBUaW1lX25zLnRcbmVuZCA9IHN0cnVjdFxuICAoKiogW3RdIGlzIHJlcHJlc2VudGVkIGFzIHRoZSBsb2cyIG9mIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzLiAqKVxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG4gIGxldCBudW1fa2V5X2JpdHMgdCA9IHQgfD4gTnVtX2tleV9iaXRzLm9mX2ludFxuXG4gIGxldCB0b19zcGFuIHQgPVxuICAgIGlmIHQgPCAwXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltBbGFybV9wcmVjaXNpb24udG9fc3Bhbl0gb2YgbmVnYXRpdmUgcG93ZXIgb2YgdHdvIG5hbm9zZWNvbmRzXCIgfl86KHQgOiBpbnQpXTtcbiAgICBJbnQ2My4oc2hpZnRfbGVmdCBvbmUpIHQgfD4gVGltZV9ucy5TcGFuLm9mX2ludDYzX25zXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IHw+IHRvX3NwYW4gOiBUaW1lX25zLlNwYW4udCldXG4gIGxldCBvbmVfbmFub3NlY29uZCA9IDBcbiAgbGV0IGFib3V0X29uZV9taWNyb3NlY29uZCA9IDEwXG4gIGxldCBhYm91dF9vbmVfbWlsbGlzZWNvbmQgPSAyMFxuICBsZXQgYWJvdXRfb25lX3NlY29uZCA9IDMwXG4gIGxldCBhYm91dF9vbmVfZGF5ID0gNDZcbiAgbGV0IG11bCB0IH5wb3cyID0gdCArIHBvdzJcbiAgbGV0IGRpdiB0IH5wb3cyID0gdCAtIHBvdzJcbiAgbGV0IGludGVydmFsX251bSB0IHRpbWUgPSBJbnQ2My5zaGlmdF9yaWdodCAodGltZSB8PiBUaW1lX25zLnRvX2ludDYzX25zX3NpbmNlX2Vwb2NoKSB0XG5cbiAgbGV0IGludGVydmFsX251bV9zdGFydCB0IGludGVydmFsX251bSA9XG4gICAgSW50NjMuc2hpZnRfbGVmdCBpbnRlcnZhbF9udW0gdCB8PiBUaW1lX25zLm9mX2ludDYzX25zX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IG9mX3NwYW5fZmxvb3JfcG93Ml9ucyBzcGFuID1cbiAgICBpZiBUaW1lX25zLlNwYW4uKCA8PSApIHNwYW4gVGltZV9ucy5TcGFuLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW0FsYXJtX3ByZWNpc2lvbi5vZl9zcGFuX2Zsb29yX3BvdzJfbnNdIGdvdCBub24tcG9zaXRpdmUgc3BhblwiXG4gICAgICAgICAgICAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV07XG4gICAgc3BhbiB8PiBUaW1lX25zLlNwYW4udG9faW50NjNfbnMgfD4gSW50NjMuZmxvb3JfbG9nMlxuICA7O1xuXG4gIGxldCBvZl9zcGFuID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG5cbiAgbW9kdWxlIFVuc3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3NwYW5cbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3BhblxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChUaW1lX25zLlNwYW4pIChUKVxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUgKFRpbWVfbnMuU3BhbikgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGxldmVsX2JpdHNfZGVmYXVsdCA9IExldmVsX2JpdHMuZGVmYXVsdFxuXG4gIHR5cGUgdCA9XG4gICAgeyBhbGFybV9wcmVjaXNpb24gOiBBbGFybV9wcmVjaXNpb24uVW5zdGFibGUudFxuICAgIDsgbGV2ZWxfYml0cyA6IExldmVsX2JpdHMudCBbQGRlZmF1bHQgbGV2ZWxfYml0c19kZWZhdWx0XVxuICAgIDsgY2FwYWNpdHkgOiBpbnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gQWxhcm1fcHJlY2lzaW9uLnRvX3NwYW4gdC5hbGFybV9wcmVjaXNpb25cblxuICAoKiBbbWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGxldmVsIGJpdHMgbmVlZGVkIGZvciBhXG4gICAgIHRpbWluZyB3aGVlbCB3aXRoIHRoZSBzcGVjaWZpZWQgW2FsYXJtX3ByZWNpc2lvbl0gdG8gYmUgYWJsZSB0byByZXByZXNlbnQgYWxsXG4gICAgIHBvc3NpYmxlIHRpbWVzIGZyb20gW1RpbWVfbnMuZXBvY2hdIG9ud2FyZC4gIFNpbmNlIG5vbi1uZWdhdGl2ZSB0aW1lcyBoYXZlIDYyIGJpdHMsXG4gICAgIHdlIHJlcXVpcmUgW0wgPD0gNjIgLSBBXSwgd2hlcmUgW0FdIGlzIHRoZSBudW1iZXIgb2YgYWxhcm0gYml0cyBhbmQgW0xdIGlzIHRoZVxuICAgICBudW1iZXIgb2YgbGV2ZWwgYml0cy4gKilcbiAgbGV0IG1heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb24gPVxuICAgIE51bV9rZXlfYml0cy4oIC0gKVxuICAgICAgTnVtX2tleV9iaXRzLm1heF92YWx1ZVxuICAgICAgKEFsYXJtX3ByZWNpc2lvbi5udW1fa2V5X2JpdHMgYWxhcm1fcHJlY2lzaW9uKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBOdW1fa2V5X2JpdHMuKCA8PSApXG4gICAgICAgICAgKExldmVsX2JpdHMubnVtX2JpdHNfaW50ZXJuYWwgdC5sZXZlbF9iaXRzKVxuICAgICAgICAgIChtYXhfbnVtX2xldmVsX2JpdHMgdC5hbGFybV9wcmVjaXNpb24pKTtcbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmFsYXJtX3ByZWNpc2lvbjppZ25vcmVcbiAgICAgICAgfmNhcGFjaXR5Omlnbm9yZVxuICAgICAgICB+bGV2ZWxfYml0czooY2hlY2sgTGV2ZWxfYml0cy5pbnZhcmlhbnQpKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgP2NhcGFjaXR5ID8obGV2ZWxfYml0cyA9IGxldmVsX2JpdHNfZGVmYXVsdCkgfmFsYXJtX3ByZWNpc2lvbiAoKSA9XG4gICAgbGV0IGxldmVsX2JpdHMgPVxuICAgICAgTGV2ZWxfYml0cy50cmltIGxldmVsX2JpdHMgfm1heF9udW1fYml0czoobWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbilcbiAgICBpblxuICAgIHsgYWxhcm1fcHJlY2lzaW9uOyBsZXZlbF9iaXRzOyBjYXBhY2l0eSB9XG4gIDs7XG5cbiAgbGV0IG1pY3Jvc2Vjb25kX3ByZWNpc2lvbiAoKSA9XG4gICAgY3JlYXRlXG4gICAgICAoKVxuICAgICAgfmFsYXJtX3ByZWNpc2lvbjpBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pY3Jvc2Vjb25kXG4gICAgICB+bGV2ZWxfYml0czooTGV2ZWxfYml0cy5jcmVhdGVfZXhuIFsgMTA7IDEwOyA2OyA2OyA1IF0pXG4gIDs7XG5cbiAgbGV0IGR1cmF0aW9ucyB0ID1cbiAgICBMaXN0LmZvbGRpbmdfbWFwXG4gICAgICB0LmxldmVsX2JpdHNcbiAgICAgIH5pbml0OihBbGFybV9wcmVjaXNpb24ubnVtX2tleV9iaXRzIHQuYWxhcm1fcHJlY2lzaW9uIHw+IE51bV9rZXlfYml0cy50b19pbnQpXG4gICAgICB+ZjooZnVuIG51bV9iaXRzX2FjY3VtIGxldmVsX251bV9iaXRzIC0+XG4gICAgICAgIGxldCBudW1fYml0c19hY2N1bSA9IG51bV9iaXRzX2FjY3VtICsgKGxldmVsX251bV9iaXRzIHw+IE51bV9rZXlfYml0cy50b19pbnQpIGluXG4gICAgICAgIGxldCBkdXJhdGlvbiA9XG4gICAgICAgICAgVGltZV9ucy5TcGFuLm9mX2ludDYzX25zXG4gICAgICAgICAgICAoaWYgbnVtX2JpdHNfYWNjdW0gPSBJbnQ2My5udW1fYml0cyAtIDFcbiAgICAgICAgICAgICB0aGVuIEludDYzLm1heF92YWx1ZVxuICAgICAgICAgICAgIGVsc2UgSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgbnVtX2JpdHNfYWNjdW0pXG4gICAgICAgIGluXG4gICAgICAgIG51bV9iaXRzX2FjY3VtLCBkdXJhdGlvbilcbiAgOztcbmVuZFxuXG5cbigqKiBUaW1pbmcgd2hlZWwgaXMgaW1wbGVtZW50ZWQgYXMgYSBwcmlvcml0eSBxdWV1ZSBpbiB3aGljaCB0aGUga2V5cyBhcmVcbiAgICBub24tbmVnYXRpdmUgaW50ZWdlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJ2YWxzIG9mIHRpbWUuICBUaGUgcHJpb3JpdHkgcXVldWUgaXNcbiAgICB1bmxpa2UgYSB0eXBpY2FsIHByaW9yaXR5IHF1ZXVlIGluIHRoYXQgcmF0aGVyIHRoYW4gaGF2aW5nIGEgXCJkZWxldGUgbWluXCIgb3BlcmF0aW9uLFxuICAgIGl0IGhhcyBhIG5vbmRlY3JlYXNpbmcgbWluaW11bSBhbGxvd2VkIGtleSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGN1cnJlbnQgdGltZSxcbiAgICBhbmQgYW4gW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gb3BlcmF0aW9uLCB3aGljaCBpbXBsZW1lbnRzIFthZHZhbmNlX2Nsb2NrXS5cbiAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBhcyBhIHNpZGUgZWZmZWN0IHJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIHRpbWluZ1xuICAgIHdoZWVsIHdob3NlIGtleSBpcyBzbWFsbGVyIHRoYW4gdGhlIG5ldyBtaW5pbXVtLCB3aGljaCBpbXBsZW1lbnRzIGZpcmluZyB0aGUgYWxhcm1zXG4gICAgd2hvc2UgdGltZSBoYXMgZXhwaXJlZC5cblxuICAgIEFkZGluZyBlbGVtZW50cyB0byBhbmQgcmVtb3ZpbmcgZWxlbWVudHMgZnJvbSBhIHRpbWluZyB3aGVlbCB0YWtlcyBjb25zdGFudCB0aW1lLFxuICAgIHVubGlrZSBhIGhlYXAtYmFzZWQgcHJpb3JpdHkgcXVldWUgd2hpY2ggdGFrZXMgbG9nKE4pLCB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2ZcbiAgICBlbGVtZW50cyBpbiB0aGUgaGVhcC4gIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHRha2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRvIHRoZVxuICAgIGFtb3VudCBvZiBpbmNyZWFzZSBpbiB0aGUgbWluLWFsbG93ZWQga2V5LCBhcyBjb21wYXJlZCB0byBsb2coTikgZm9yIGEgaGVhcC4gIEl0IGlzXG4gICAgdGhlc2UgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZXMgdGhhdCBtb3RpdmF0ZSB0aGUgZXhpc3RlbmNlIG9mIHRpbWluZyB3aGVlbHMgYW5kIG1ha2VcbiAgICB0aGVtIGEgZ29vZCBjaG9pY2UgZm9yIG1haW50YWluZyBhIHNldCBvZiBhbGFybXMuICBXaXRoIGEgdGltaW5nIHdoZWVsLCBvbmUgY2FuXG4gICAgc3VwcG9ydCBhbnkgbnVtYmVyIG9mIGFsYXJtcyBwYXlpbmcgY29uc3RhbnQgb3ZlcmhlYWQgcGVyIGFsYXJtLCB3aGlsZSBwYXlpbmcgYVxuICAgIHNtYWxsIGNvbnN0YW50IG92ZXJoZWFkIHBlciB1bml0IG9mIHRpbWUgcGFzc2VkLlxuXG4gICAgQXMgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgaW5jcmVhc2VzLCB0aGUgdGltaW5nIHdoZWVsIGRvZXMgYSBsYXp5IHJhZGl4IHNvcnQgb2YgdGhlXG4gICAgZWxlbWVudCBrZXlzLCB3aXRoIGxldmVsIDAgaGFuZGxpbmcgdGhlIGxlYXN0IHNpZ25pZmljYW50IFtiXzBdIGJpdHMgaW4gYSBrZXksIGFuZFxuICAgIGVhY2ggc3Vic2VxdWVudCBsZXZlbCBbaV0gaGFuZGxpbmcgdGhlIG5leHQgbW9zdCBzaWduaWZpY2FudCBbYl9pXSBiaXRzLiAgVGhlIGxldmVsc1xuICAgIGhvbGQgaW5jcmVhc2luZ2x5IGxhcmdlciByYW5nZXMgb2Yga2V5cywgd2hlcmUgdGhlIHVuaW9uIG9mIGFsbCB0aGUgbGV2ZWxzIGNhbiBob2xkXG4gICAgYW55IGtleSBmcm9tIFttaW5fYWxsb3dlZF9rZXkgdF0gdG8gW21heF9hbGxvd2VkX2tleSB0XS4gIFdoZW4gYSBrZXkgaXMgYWRkZWQgdG8gdGhlXG4gICAgdGltaW5nIHdoZWVsLCBpdCBpcyBhZGRlZCBhdCB0aGUgbG93ZXN0IHBvc3NpYmxlIGxldmVsIHRoYXQgY2FuIHN0b3JlIHRoZSBrZXkuICBBc1xuICAgIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGluY3JlYXNlcywgdGltaW5nLXdoZWVsIGVsZW1lbnRzIG1vdmUgZG93biBsZXZlbHMgdW50aWwgdGhleVxuICAgIHJlYWNoIGxldmVsIDAsIGFuZCB0aGVuIGFyZSBldmVudHVhbGx5IHJlbW92ZWQuICAqKVxubW9kdWxlIFByaW9yaXR5X3F1ZXVlIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHByaW9yaXR5X3F1ZXVlID0gJ2EgdFxuXG4gIG1vZHVsZSBLZXkgOiBJbnRlcnZhbF9udW1cblxuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgKCoqIEFuIFtFbHQudF0gcmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgd2FzIGFkZGVkIHRvIGEgdGltaW5nIHdoZWVsLiAqKVxuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIGF0IDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiBUaW1lX25zLnRcbiAgICB2YWwga2V5IDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCB2YWx1ZSA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gJ2EgdFxuICBlbmRcblxuICBtb2R1bGUgSW50ZXJuYWxfZWx0IDogc2lnXG4gICAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwga2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgbWF4X2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgICB2YWwgbWluX2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG4gICAgdmFsIHRvX2V4dGVybmFsIDogJ2EgdCAtPiAnYSBFbHQudFxuICBlbmRcblxuICB2YWwgcG9vbCA6ICdhIHQgLT4gJ2EgSW50ZXJuYWxfZWx0LlBvb2wudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAoKiogW2NyZWF0ZSA/bGV2ZWxfYml0cyAoKV0gY3JlYXRlcyBhIG5ldyBlbXB0eSB0aW1pbmcgd2hlZWwsIFt0XSwgd2l0aCBbbGVuZ3RoIHQgPSAwXVxuICAgICAgYW5kIFttaW5fYWxsb3dlZF9rZXkgdCA9IDBdLiAqKVxuICB2YWwgY3JlYXRlIDogP2NhcGFjaXR5OmludCAtPiA/bGV2ZWxfYml0czpMZXZlbF9iaXRzLnQgLT4gdW5pdCAtPiAnYSB0XG5cbiAgKCoqIFtsZW5ndGggdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB0aW1pbmcgd2hlZWwuICopXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5cbiAgKCoqIFttaW5fYWxsb3dlZF9rZXkgdF0gaXMgdGhlIG1pbmltdW0ga2V5IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBbdF0uICBUaGlzIG9ubHlcbiAgICAgIGluZGljYXRlcyB0aGUgcG9zc2liaWxpdHk7IHRoZXJlIG5lZWQgbm90IGJlIGFuIGVsZW1lbnQgW2VsdF0gaW4gW3RdIHdpdGggW0VsdC5rZXlcbiAgICAgIGVsdCA9IG1pbl9hbGxvd2VkX2tleSB0XS4gIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBcIm1pbl9rZXlcIiBvcGVyYXRpb24gaW4gYVxuICAgICAgdHlwaWNhbCBwcmlvcml0eSBxdWV1ZS5cblxuICAgICAgW21pbl9hbGxvd2VkX2tleSB0XSBjYW4gaW5jcmVhc2Ugb3ZlciB0aW1lLCB2aWEgY2FsbHMgdG9cbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldLiAqKVxuICB2YWwgbWluX2FsbG93ZWRfa2V5IDogXyB0IC0+IEtleS50XG5cbiAgKCoqIFttYXhfYWxsb3dlZF9rZXkgdF0gaXMgdGhlIG1heGltdW0gYWxsb3dlZCBrZXkgdGhhdCBjYW4gYmUgc3RvcmVkIGluIFt0XS4gIEFzXG4gICAgICBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMsIHNvIGRvZXMgW21heF9hbGxvd2VkX2tleV07IGhvd2V2ZXIgaXQgaXMgbm90IHRoZSBjYXNlXG4gICAgICB0aGF0IFttYXhfYWxsb3dlZF9rZXkgdCAtIG1pbl9hbGxvd2VkX2tleSB0XSBpcyBhIGNvbnN0YW50LiAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0XG4gICAgICBbbWF4X2FsbG93ZWRfa2V5IHQgPj0gbWluX2FsbG93ZWRfa2V5IHQgKyAyXkIgLSAxXSxcbiAgICAgIHdoZXJlIFtCXSBpcyB0aGUgc3VtIG9mIHRoZSBiX2kgaW4gW2xldmVsX2JpdHNdLiAqKVxuICB2YWwgbWF4X2FsbG93ZWRfa2V5IDogXyB0IC0+IEtleS50XG5cbiAgdmFsIG1pbl9lbHRfIDogJ2EgdCAtPiAnYSBJbnRlcm5hbF9lbHQudFxuICB2YWwgaW50ZXJuYWxfYWRkIDogJ2EgdCAtPiBrZXk6S2V5LnQgLT4gYXQ6VGltZV9ucy50IC0+ICdhIC0+ICdhIEludGVybmFsX2VsdC50XG5cbiAgKCoqIFtyZW1vdmUgdCBlbHRdIHJlbW92ZXMgW2VsdF0gZnJvbSBbdF0uICBJdCBpcyBhbiBlcnJvciBpZiBbZWx0XSBpcyBub3QgY3VycmVudGx5XG4gICAgICBpbiBbdF0sIGFuZCB0aGlzIGVycm9yIG1heSBvciBtYXkgbm90IGJlIGRldGVjdGVkLiAqKVxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiAnYSBFbHQudCAtPiB1bml0XG5cbiAgdmFsIGNoYW5nZSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4ga2V5OktleS50IC0+IGF0OlRpbWVfbnMudCAtPiB1bml0XG5cbiAgKCoqIFtjbGVhciB0XSByZW1vdmVzIGFsbCBlbHRzIGZyb20gW3RdLiAqKVxuICB2YWwgY2xlYXIgOiBfIHQgLT4gdW5pdFxuXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIEVsdC50IC0+IGJvb2xcblxuICBtb2R1bGUgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdCA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZFxuICBlbmRcblxuICAoKiogW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleSB0IH5rZXkgfmhhbmRsZV9yZW1vdmVkXSBpbmNyZWFzZXMgdGhlIG1pbmltdW0gYWxsb3dlZFxuICAgICAga2V5IGluIFt0XSB0byBba2V5XSwgYW5kIHJlbW92ZXMgYWxsIGVsZW1lbnRzIHdpdGgga2V5cyBsZXNzIHRoYW4gW2tleV0sIGFwcGx5aW5nXG4gICAgICBbaGFuZGxlX3JlbW92ZWRdIHRvIGVhY2ggZWxlbWVudCB0aGF0IGlzIHJlbW92ZWQuICBJZiBba2V5IDw9IG1pbl9hbGxvd2VkX2tleSB0XSxcbiAgICAgIHRoZW4gW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gZG9lcyBub3RoaW5nLiAgT3RoZXJ3aXNlLCBpZlxuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gcmV0dXJucyBzdWNjZXNzZnVsbHksIFttaW5fYWxsb3dlZF9rZXkgdCA9IGtleV0uXG5cbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHRha2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRvIFtrZXkgLSBtaW5fYWxsb3dlZF9rZXkgdF0sXG4gICAgICBhbHRob3VnaCBwb3NzaWJseSBsZXNzIHRpbWUuXG5cbiAgICAgIEJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtoYW5kbGVfcmVtb3ZlZF0gYWNjZXNzZXMgW3RdIGluIGFueSB3YXkgb3RoZXIgdGhhblxuICAgICAgW0VsdF0gZnVuY3Rpb25zLiAqKVxuICB2YWwgaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XG4gICAgOiAgJ2EgdFxuICAgIC0+IGtleTpLZXkudFxuICAgIC0+IGhhbmRsZV9yZW1vdmVkOignYSBFbHQudCAtPiB1bml0KVxuICAgIC0+IEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQudFxuXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOignYSBFbHQudCAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGZpcmVfcGFzdF9hbGFybXNcbiAgICA6ICAnYSB0XG4gICAgLT4gaGFuZGxlX2ZpcmVkOignYSBFbHQudCAtPiB1bml0KVxuICAgIC0+IGtleTpLZXkudFxuICAgIC0+IG5vdzpUaW1lX25zLnRcbiAgICAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgKCoqIEVhY2ggc2xvdCBpbiBhIGxldmVsIGlzIGEgKHBvc3NpYmx5IG51bGwpIHBvaW50ZXIgdG8gYSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgIG9mIGVsZW1lbnRzLiAgV2UgcG9vbCB0aGUgZWxlbWVudHMgc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlbSBhZnRlciB0aGV5IGFyZSByZW1vdmVkXG4gICAgICBmcm9tIHRoZSB0aW1pbmcgd2hlZWwgKGVpdGhlciB2aWEgW3JlbW92ZV0gb3IgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0pLiAgSW5cbiAgICAgIGFkZGl0aW9uIHRvIHN0b3JpbmcgdGhlIFtrZXldLCBbYXRdLCBhbmQgW3ZhbHVlXSBpbiB0aGUgZWxlbWVudCwgd2Ugc3RvcmUgdGhlXG4gICAgICBbbGV2ZWxfaW5kZXhdIHNvIHRoYXQgd2UgY2FuIHF1aWNrbHkgZ2V0IHRvIHRoZSBsZXZlbCBob2xkaW5nIGFuIGVsZW1lbnQgd2hlbiB3ZVxuICAgICAgW3JlbW92ZV0gaXQuXG5cbiAgICAgIFdlIGRpc3Rpbmd1aXNoIGJldHdlZW4gW0V4dGVybmFsX2VsdF0gYW5kIFtJbnRlcm5hbF9lbHRdLCB3aGljaCBhcmUgdGhlIHNhbWVcbiAgICAgIHVuZGVybmVhdGguICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgYW4gW0ludGVybmFsX2VsdF0gaXMgZWl0aGVyIFtudWxsXSBvciBhXG4gICAgICB2YWxpZCBwb2ludGVyLiAgT24gdGhlIG90aGVyIGhhbmQsIFtFeHRlcm5hbF9lbHRdcyBhcmUgcmV0dXJuZWQgdG8gdXNlciBjb2RlLCBzb1xuICAgICAgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIG9mIHZhbGlkaXR5IC0tIHdlIGFsd2F5cyB2YWxpZGF0ZSBhbiBbRXh0ZXJuYWxfZWx0XSBiZWZvcmVcbiAgICAgIGRvaW5nIGFueXRoaW5nIHdpdGggaXQuXG5cbiAgICAgIEl0IGlzIHRoZXJlZm9yZSBPSyB0byB1c2UgW1Bvb2wuVW5zYWZlXSwgYmVjYXVzZSB3ZSB3aWxsIG5ldmVyIGF0dGVtcHQgdG8gYWNjZXNzIGFcbiAgICAgIHNsb3Qgb2YgYW4gaW52YWxpZCBwb2ludGVyLiAqKVxuICBtb2R1bGUgUG9vbCA9IFBvb2wuVW5zYWZlXG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBQb29sLlBvaW50ZXJcblxuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgKCoqIFtJbnRlcnZhbF9udW1dIGlzIHRoZSBwdWJsaWMgQVBJLiAgRXZlcnl0aGluZyBmb2xsb3dpbmcgaW4gdGhlIHNpZ25hdHVyZSBpc1xuICAgICAgICBmb3IgaW50ZXJuYWwgdXNlLiAqKVxuICAgIGluY2x1ZGUgVGltaW5nX3doZWVsX2ludGYuSW50ZXJ2YWxfbnVtXG5cbiAgICAoKiogW2FkZF9jbGFtcF90b19tYXhdIGRvZXNuJ3Qgd29yayBhdCBhbGwgd2l0aCBuZWdhdGl2ZSBzcGFucyAqKVxuICAgIHZhbCBhZGRfY2xhbXBfdG9fbWF4IDogdCAtPiBTcGFuLnQgLT4gdFxuXG4gICAgdmFsIHN1Y2NfY2xhbXBfdG9fbWF4IDogdCAtPiB0XG5cbiAgICAoKiogW1Nsb3RzX21hc2tdIGlzIHVzZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgYSBrZXkncyBzbG90IGluIGEgZ2l2ZW4gbGV2ZWwuICopXG4gICAgbW9kdWxlIFNsb3RzX21hc2sgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICB2YWwgY3JlYXRlIDogbGV2ZWxfYml0czpOdW1fa2V5X2JpdHMudCAtPiB0XG4gICAgICB2YWwgbmV4dF9zbG90IDogdCAtPiBpbnQgLT4gaW50XG4gICAgZW5kXG5cbiAgICAoKiogW01pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tdIGlzIHVzZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG1pbmltdW0ga2V5IGluIHRoZVxuICAgICAgICBzYW1lIHNsb3QgYXMgYSBnaXZlbiBrZXkuICopXG4gICAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICBpbmNsdWRlIEVxdWFsLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgY3JlYXRlIDogYml0c19wZXJfc2xvdDpOdW1fa2V5X2JpdHMudCAtPiB0XG4gICAgZW5kXG5cbiAgICB2YWwgbnVtX2tleXMgOiBOdW1fa2V5X2JpdHMudCAtPiBTcGFuLnRcbiAgICB2YWwgbWluX2tleV9pbl9zYW1lX3Nsb3QgOiB0IC0+IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sudCAtPiB0XG4gICAgdmFsIHNsb3QgOiB0IC0+IGJpdHNfcGVyX3Nsb3Q6TnVtX2tleV9iaXRzLnQgLT4gc2xvdHNfbWFzazpTbG90c19tYXNrLnQgLT4gaW50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTbG90c19tYXNrID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxldmVsX2JpdHMgPSBJbnQ2My4oIC0gKSAoTnVtX2tleV9iaXRzLnBvdzIgbGV2ZWxfYml0cykgSW50NjMub25lXG4gICAgICBsZXQgbmV4dF9zbG90IHQgc2xvdCA9IChzbG90ICsgMSkgbGFuZCBJbnQ2My50b19pbnRfZXhuIHRcbiAgICBlbmRcblxuICAgIGxldCBudW1fa2V5cyBudW1fYml0cyA9IE51bV9rZXlfYml0cy5wb3cyIG51bV9iaXRzXG5cbiAgICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgY3JlYXRlIH5iaXRzX3Blcl9zbG90ID0gYml0X25vdCAoTnVtX2tleV9iaXRzLnBvdzIgYml0c19wZXJfc2xvdCAtIG9uZSlcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTcGFuID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgICBsZXQgc2NhbGVfaW50IHQgaSA9IHQgKiBvZl9pbnQgaVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgbGV0IGFkZCB0IGkgPSB0ICsgaVxuICAgIGxldCBhZGRfY2xhbXBfdG9fbWF4IHQgaSA9IGlmIHQgPiBtYXhfdmFsdWUgLSBpIHRoZW4gbWF4X3ZhbHVlIGVsc2UgdCArIGlcbiAgICBsZXQgc3VjY19jbGFtcF90b19tYXggdCA9IGlmIHQgPSBtYXhfdmFsdWUgdGhlbiBtYXhfdmFsdWUgZWxzZSBzdWNjIHRcbiAgICBsZXQgc3ViIHQgaSA9IHQgLSBpXG4gICAgbGV0IGRpZmYgdDEgdDIgPSB0MSAtIHQyXG5cbiAgICBsZXQgc2xvdCB0IH4oYml0c19wZXJfc2xvdCA6IE51bV9rZXlfYml0cy50KSB+c2xvdHNfbWFzayA9XG4gICAgICB0b19pbnRfZXhuIChiaXRfYW5kIChzaGlmdF9yaWdodCB0IChiaXRzX3Blcl9zbG90IDo+IGludCkpIHNsb3RzX21hc2spXG4gICAgOztcblxuICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPVxuICAgICAgYml0X2FuZCB0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IEtleS5NaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gIG1vZHVsZSBTbG90c19tYXNrID0gS2V5LlNsb3RzX21hc2tcblxuICBtb2R1bGUgRXh0ZXJuYWxfZWx0ID0gc3RydWN0XG5cbiAgICAoKiogVGhlIFtwb29sX3Nsb3RzXSBoZXJlIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdGhlIHNsb3RzIGluIGEgbGV2ZWwgYXJyYXkuICBUaGlzIGlzXG4gICAgICAgIGZvciB0aGUgc2xvdHMgaW4gdGhlIHBvb2wgdHVwbGUgcmVwcmVzZW50aW5nIGEgbGV2ZWwgZWxlbWVudC4gKilcbiAgICB0eXBlICdhIHBvb2xfc2xvdHMgPVxuICAgICAgKCBLZXkudFxuICAgICAgLCBUaW1lX25zLnRcbiAgICAgICwgJ2FcbiAgICAgICwgaW50XG4gICAgICAsICdhIHBvb2xfc2xvdHMgUG9pbnRlci50XG4gICAgICAsICdhIHBvb2xfc2xvdHMgUG9pbnRlci50IClcbiAgICAgICAgUG9vbC5TbG90cy50NlxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhIHQgPSAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBQb2ludGVyLm51bGxcbiAgZW5kXG5cbiAgbW9kdWxlIEludGVybmFsX2VsdCA6IHNpZ1xuICAgIG1vZHVsZSBQb29sIDogc2lnXG4gICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgICB2YWwgY3JlYXRlIDogP2NhcGFjaXR5OmludCAtPiB1bml0IC0+IF8gdFxuICAgICAgdmFsIGlzX2Z1bGwgOiBfIHQgLT4gYm9vbFxuICAgICAgdmFsIGdyb3cgOiA/Y2FwYWNpdHk6aW50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gcHJpdmF0ZSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIG51bGwgOiB1bml0IC0+IF8gdFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgaXNfdmFsaWQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBib29sXG5cbiAgICAoKiogRGVhbGluZyB3aXRoIFtFeHRlcm5hbF9lbHRdcy4gKilcblxuICAgIHZhbCBleHRlcm5hbF9pc192YWxpZCA6ICdhIFBvb2wudCAtPiAnYSBFeHRlcm5hbF9lbHQudCAtPiBib29sXG4gICAgdmFsIHRvX2V4dGVybmFsIDogJ2EgdCAtPiAnYSBFeHRlcm5hbF9lbHQudFxuICAgIHZhbCBvZl9leHRlcm5hbF9leG4gOiAnYSBQb29sLnQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnQgLT4gJ2EgdFxuICAgIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGludmFyaWFudCA6ICdhIFBvb2wudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogW2NyZWF0ZV0gcmV0dXJucyBhbiBlbGVtZW50IHdob3NlIFtuZXh0XSBhbmQgW3ByZXZdIGFyZSBbbnVsbF0uICopXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgJ2EgUG9vbC50XG4gICAgICAtPiBrZXk6S2V5LnRcbiAgICAgICgqKiBbYXRdIGlzIHVzZWQgd2hlbiB0aGUgcHJpb3JpdHkgcXVldWUgaXMgdXNlZCB0byBpbXBsZW1lbnQgYSB0aW1pbmcgd2hlZWwuICBJZlxuICAgICAgICAgIHVudXNlZCwgaXQgd2lsbCBiZSBbVGltZV9ucy5lcG9jaF0uICopXG4gICAgICAtPiBhdDpUaW1lX25zLnRcbiAgICAgIC0+IHZhbHVlOidhXG4gICAgICAtPiBsZXZlbF9pbmRleDppbnRcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBmcmVlIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIGFjY2Vzc29ycyAqKVxuXG4gICAgdmFsIGtleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIGF0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gVGltZV9ucy50XG4gICAgdmFsIGxldmVsX2luZGV4IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIG5leHQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHZhbHVlIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gJ2FcblxuICAgICgqKiBtdXRhdG9ycyAqKVxuXG4gICAgdmFsIHNldF9rZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudCAtPiB1bml0XG4gICAgdmFsIHNldF9hdCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IFRpbWVfbnMudCAtPiB1bml0XG4gICAgdmFsIHNldF9sZXZlbF9pbmRleCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludCAtPiB1bml0XG5cbiAgICAoKiogW2luc2VydF9hdF9lbmQgcG9vbCB0IH50b19hZGRdIHRyZWF0cyBbdF0gYXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QgYW5kIGFkZHMgW3RvX2FkZF1cbiAgICAgICAgdG8gdGhlIGVuZCBvZiBpdC4gKilcbiAgICB2YWwgaW5zZXJ0X2F0X2VuZCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHRvX2FkZDonYSB0IC0+IHVuaXRcblxuICAgICgqKiBbbGlua190b19zZWxmIHBvb2wgdF0gbWFrZXMgW3RdIGJlIGEgc2luZ2xldG9uIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdC4gKilcbiAgICB2YWwgbGlua190b19zZWxmIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFt1bmxpbmsgcCB0XSB1bmxpbmtzIFt0XSBmcm9tIHRoZSBjaXJjdWxhcmx5IGRvdWJseS1saW5rZWQgbGlzdCB0aGF0IGl0IGlzIGluLiAgSXRcbiAgICAgICAgY2hhbmdlcyB0aGUgcG9pbnRlcnMgb2YgW3RdJ3MgW3ByZXZdIGFuZCBbbmV4dF0gZWx0cywgYnV0IG5vdCBbdF0ncyBbcHJldl0gYW5kXG4gICAgICAgIFtuZXh0XSBwb2ludGVycy4gIFt1bmxpbmtdIGlzIG1lYW5pbmdsZXNzIGlmIFt0XSBpcyBhIHNpbmdsZXRvbi4gKilcbiAgICB2YWwgdW5saW5rIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIEl0ZXJhdG9ycy4gIFtpdGVyIHAgdCB+aW5pdCB+Zl0gdmlzaXRzIGVhY2ggZWxlbWVudCBpbiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICAgIGNvbnRhaW5pbmcgW3RdLCBzdGFydGluZyBhdCBbdF0sIGFuZCBmb2xsb3dpbmcgW25leHRdIHBvaW50ZXJzLiAgW2xlbmd0aF0gY291bnRzXG4gICAgICAgIGJ5IHZpc2l0aW5nIGVhY2ggZWxlbWVudCBpbiB0aGUgbGlzdC4gKilcbiAgICB2YWwgaXRlciA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGY6KCdhIHQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGxlbmd0aCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludFxuXG4gICAgKCoqIFttYXhfYWxhcm1fdGltZSB0IGVsdCB+d2l0aF9rZXldIGZpbmRzIHRoZSBtYXggW2F0XSBpbiBbZWx0XSdzIGxpc3QgYW1vbmcgdGhlIGVsdHNcbiAgICAgICAgd2hvc2Uga2V5IGlzIFt3aXRoX2tleV0sIHJldHVybmluZyBbVGltZV9ucy5lcG9jaF0gaWYgdGhlIGxpc3QgaXMgZW1wdHkuICopXG4gICAgdmFsIG1heF9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG5cbiAgICB2YWwgbWluX2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSBwb29sX3Nsb3RzID0gJ2EgRXh0ZXJuYWxfZWx0LnBvb2xfc2xvdHMgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlICdhIHQgPSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBQb2ludGVyLm51bGxcbiAgICBsZXQgaXNfbnVsbCA9IFBvaW50ZXIuaXNfbnVsbFxuICAgIGxldCBlcXVhbCB0MSB0MiA9IFBvaW50ZXIucGh5c19lcXVhbCB0MSB0MlxuXG4gICAgbGV0IGNyZWF0ZSBwb29sIH5rZXkgfmF0IH52YWx1ZSB+bGV2ZWxfaW5kZXggPVxuICAgICAgUG9vbC5uZXc2IHBvb2wga2V5IGF0IHZhbHVlIGxldmVsX2luZGV4IChudWxsICgpKSAobnVsbCAoKSlcbiAgICA7O1xuXG4gICAgbGV0IGZyZWUgPSBQb29sLmZyZWVcbiAgICBsZXQga2V5IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDBcbiAgICBsZXQgc2V0X2tleSBwIHQgayA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDAga1xuICAgIGxldCBhdCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQxXG4gICAgbGV0IHNldF9hdCBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDEgeFxuICAgIGxldCB2YWx1ZSBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQyXG4gICAgbGV0IGxldmVsX2luZGV4IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDNcbiAgICBsZXQgc2V0X2xldmVsX2luZGV4IHAgdCBpID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MyBpXG4gICAgbGV0IHByZXYgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50NFxuICAgIGxldCBzZXRfcHJldiBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDQgeFxuICAgIGxldCBuZXh0IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDVcbiAgICBsZXQgc2V0X25leHQgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQ1IHhcbiAgICBsZXQgaXNfdmFsaWQgcCB0ID0gUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHAgdFxuICAgIGxldCBleHRlcm5hbF9pc192YWxpZCA9IGlzX3ZhbGlkXG5cbiAgICBsZXQgaW52YXJpYW50IHBvb2wgaW52YXJpYW50X2EgdCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgICBhc3NlcnQgKGlzX3ZhbGlkIHBvb2wgdCk7XG4gICAgICAgIGludmFyaWFudF9hICh2YWx1ZSBwb29sIHQpO1xuICAgICAgICBsZXQgbiA9IG5leHQgcG9vbCB0IGluXG4gICAgICAgIGFzc2VydCAoaXNfbnVsbCBuIHx8IFBvaW50ZXIucGh5c19lcXVhbCB0IChwcmV2IHBvb2wgbikpO1xuICAgICAgICBsZXQgcCA9IHByZXYgcG9vbCB0IGluXG4gICAgICAgIGFzc2VydCAoaXNfbnVsbCBwIHx8IFBvaW50ZXIucGh5c19lcXVhbCB0IChuZXh0IHBvb2wgcCkpKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgUG9vbCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcG9vbF9zbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9IFBvb2wuaW52YXJpYW50IGlnbm9yZSB0XG4gICAgICBsZXQgY3JlYXRlID8oY2FwYWNpdHkgPSAxKSAoKSA9IFBvb2wuY3JlYXRlIFBvb2wuU2xvdHMudDYgfmNhcGFjaXR5XG4gICAgICBsZXQgZ3JvdyA9IFBvb2wuZ3Jvd1xuICAgICAgbGV0IGlzX2Z1bGwgPSBQb29sLmlzX2Z1bGxcbiAgICBlbmRcblxuICAgIGxldCB0b19leHRlcm5hbCB0ID0gdFxuXG4gICAgbGV0IG9mX2V4dGVybmFsX2V4biBwb29sIHQgPVxuICAgICAgaWYgaXNfdmFsaWQgcG9vbCB0IHRoZW4gdCBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltaW5nX3doZWVsIGdvdCBpbnZhbGlkIGFsYXJtXCJdXG4gICAgOztcblxuICAgIGxldCB1bmxpbmsgcG9vbCB0ID1cbiAgICAgIHNldF9uZXh0IHBvb2wgKHByZXYgcG9vbCB0KSAobmV4dCBwb29sIHQpO1xuICAgICAgc2V0X3ByZXYgcG9vbCAobmV4dCBwb29sIHQpIChwcmV2IHBvb2wgdClcbiAgICA7O1xuXG4gICAgbGV0IGxpbmsgcG9vbCBwcmV2IG5leHQgPVxuICAgICAgc2V0X25leHQgcG9vbCBwcmV2IG5leHQ7XG4gICAgICBzZXRfcHJldiBwb29sIG5leHQgcHJldlxuICAgIDs7XG5cbiAgICBsZXQgbGlua190b19zZWxmIHBvb2wgdCA9IGxpbmsgcG9vbCB0IHRcblxuICAgIGxldCBpbnNlcnRfYXRfZW5kIHBvb2wgdCB+dG9fYWRkID1cbiAgICAgIGxldCBwcmV2ID0gcHJldiBwb29sIHQgaW5cbiAgICAgIGxpbmsgcG9vbCBwcmV2IHRvX2FkZDtcbiAgICAgIGxpbmsgcG9vbCB0b19hZGQgdFxuICAgIDs7XG5cbiAgICBsZXQgaXRlciBwb29sIGZpcnN0IH5mID1cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICgqIFdlIGdldCBbbmV4dF0gYmVmb3JlIGNhbGxpbmcgW2ZdIHNvIHRoYXQgW2ZdIGNhbiBtb2RpZnkgb3IgW2ZyZWVdIFshY3VycmVudF0uICopXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGYgIWN1cnJlbnQ7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggcG9vbCBmaXJzdCA9XG4gICAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBpbmNyIHI7XG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIXJcbiAgICA7O1xuXG4gICAgbGV0IG1heF9hbGFybV90aW1lIHBvb2wgZmlyc3QgfndpdGhfa2V5ID1cbiAgICAgIGxldCBtYXhfYWxhcm1fdGltZSA9IHJlZiBUaW1lX25zLmVwb2NoIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBpZiBLZXkuZXF1YWwgKGtleSBwb29sICFjdXJyZW50KSB3aXRoX2tleVxuICAgICAgICB0aGVuIG1heF9hbGFybV90aW1lIDo9IFRpbWVfbnMubWF4IChhdCBwb29sICFjdXJyZW50KSAhbWF4X2FsYXJtX3RpbWU7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIW1heF9hbGFybV90aW1lXG4gICAgOztcblxuICAgIGxldCBtaW5fYWxhcm1fdGltZSBwb29sIGZpcnN0IH53aXRoX2tleSA9XG4gICAgICBsZXQgbWluX2FsYXJtX3RpbWUgPSByZWYgVGltZV9ucy5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZSBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgKCogVGhlIFtrZXldIGNvbXBhcmlzb24gaXMgbmVjZXNzYXJ5IGZvciBbbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsXSBiZWNhdXNlXG4gICAgICAgICAgIG1heCB0aW1lIHBlciBpbnRlcnZhbCBpcyBub3QgdGhlIHNhbWUgYXMgbWF4IHRpbWUgZ2xvYmFsbHkuXG5cbiAgICAgICAgICAgVGhpcyBpcyBub3Qgc28gZm9yIFttaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxdLCBzbyB0aGlzIGNhbiBwb3RlbnRpYWxseVxuICAgICAgICAgICBiZSBzaW1wbGlmaWVkLlxuXG4gICAgICAgICAgIFByb2JhYmx5IGEgYmV0dGVyIGNoYW5nZSB3b3VsZCBiZSB0byBzaW1wbHkgdHJhbnNmZXIgdGhlIGV2ZW50cyB0byB0aGVcbiAgICAgICAgICAgXCJmaXJlZFwiIGNvbGxlY3Rpb24gKGFuZCByZW5hbWUgaXQgdG8gXCJhYm91dCB0byBmaXJlXCIpLCB3aGljaCBpcyBzb3J0ZWQgYnkgdGltZSxcbiAgICAgICAgICAgc28gZ2V0dGluZyB0aGUgZmlyc3QgZWxlbWVudCBmcm9tIHRoYXQgY29sbGVjdGlvbiBpcyBlZmZpY2llbnQuXG4gICAgICAgICopXG4gICAgICAgIGlmIEtleS5lcXVhbCAoa2V5IHBvb2wgIWN1cnJlbnQpIHdpdGhfa2V5XG4gICAgICAgIHRoZW4gbWluX2FsYXJtX3RpbWUgOj0gVGltZV9ucy5taW4gKGF0IHBvb2wgIWN1cnJlbnQpICFtaW5fYWxhcm1fdGltZTtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhbWluX2FsYXJtX3RpbWVcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgTGV2ZWwgPSBzdHJ1Y3RcbiAgICAoKiogRm9yIGdpdmVuIGxldmVsLCBvbmUgY2FuIGJyZWFrIHRoZSBiaXRzIGludG8gYSBrZXkgaW50byB0aHJlZSByZWdpb25zOlxuXG4gICAgICAgIHt2XG4gICAgICAgICB8IGhpZ2hlciBsZXZlbHMgfCB0aGlzIGxldmVsIHwgbG93ZXIgbGV2ZWxzIHxcbiAgICAgICAgdn1cblxuICAgICAgICBcIkxvd2VyIGxldmVsc1wiIGlzIFtiaXRzX3Blcl9zbG90XSBiaXRzIHdpZGUuICBcIlRoaXMgbGV2ZWxcIiBpcyBbYml0c10gd2lkZS4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyAoKiBUaGUgW2luZGV4XSBpbiB0aGUgdGltaW5nIHdoZWVsJ3MgYXJyYXkgb2YgbGV2ZWxzIHdoZXJlIHRoaXMgbGV2ZWwgaXMuICopXG4gICAgICAgIGluZGV4IDogaW50XG4gICAgICA7ICgqIEhvdyBtYW55IFtiaXRzXSB0aGlzIGxldmVsIGlzIHJlc3BvbnNpYmxlIGZvci4gKilcbiAgICAgICAgYml0cyA6IE51bV9rZXlfYml0cy50XG4gICAgICA7ICgqIFtzbG90c19tYXNrID0gU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHM6dC5iaXRzXS4gKilcbiAgICAgICAgc2xvdHNfbWFzayA6IFNsb3RzX21hc2sudFxuICAgICAgOyAoKiBbYml0c19wZXJfc2xvdF0gaXMgaG93IG1hbnkgYml0cyBlYWNoIHNsb3QgZGlzdGluZ3Vpc2hlcywgYW5kIGlzIHRoZSBzdW0gb2Ygb2ZcbiAgICAgICAgICAgdGhlIFtiaXRzXSBvZiBhbGwgdGhlIGxvd2VyIGxldmVscy4gKilcbiAgICAgICAgYml0c19wZXJfc2xvdCA6IE51bV9rZXlfYml0cy50XG4gICAgICA7IGtleXNfcGVyX3Nsb3QgOiBLZXkuU3Bhbi50XG4gICAgICA7IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgOiBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLnRcbiAgICAgIDsgKCogW2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA9IGtleXNfcGVyX3Nsb3QgKiBBcnJheS5sZW5ndGggc2xvdHMgLSAxXSAqKVxuICAgICAgICBkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgOiBLZXkuU3Bhbi50XG4gICAgICA7ICgqIFtsZW5ndGhdIGlzIHRoZSBudW1iZXIgb2YgZWx0cyBjdXJyZW50bHkgaW4gdGhpcyBsZXZlbC4gKilcbiAgICAgICAgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICAgIDsgKCogQWxsIGVsZW1lbnRzIGF0IHRoaXMgbGV2ZWwgaGF2ZSB0aGVpciBba2V5XSBzYXRpc2Z5IFttaW5fYWxsb3dlZF9rZXkgPD0ga2V5IDw9XG4gICAgICAgICAgIG1heF9hbGxvd2VkX2tleV0uICBBbHNvLCBbbWluX2FsbG93ZWRfa2V5XSBpcyBhIG11bHRpcGxlIG9mIFtrZXlzX3Blcl9zbG90XS4gKilcbiAgICAgICAgbXV0YWJsZSBtaW5fYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBtdXRhYmxlIG1heF9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7ICgqIFtzbG90c10gaG9sZHMgdGhlIChwb3NzaWJseSBudWxsKSBwb2ludGVycyB0byB0aGUgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0c1xuICAgICAgICAgICBvZiBlbHRzLiAgW0FycmF5Lmxlbmd0aCBzbG90cyA9IDEgbHNsIGJpdHNdLiAqKVxuICAgICAgICBzbG90cyA6ICgnYSBJbnRlcm5hbF9lbHQudCBhcnJheVtAc2V4cC5vcGFxdWVdKVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBzbG90IHQgfmtleSA9IEtleS5zbG90IGtleSB+Yml0c19wZXJfc2xvdDp0LmJpdHNfcGVyX3Nsb3QgfnNsb3RzX21hc2s6dC5zbG90c19tYXNrXG4gICAgbGV0IG5leHRfc2xvdCB0IHNsb3QgPSBTbG90c19tYXNrLm5leHRfc2xvdCB0LnNsb3RzX21hc2sgc2xvdFxuXG4gICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgfmtleSA9XG4gICAgICBLZXkubWluX2tleV9pbl9zYW1lX3Nsb3Qga2V5IHQubWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgIDs7XG5cbiAgICBsZXQgY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkgdCB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgPVxuICAgICAgKCogVGhpcyBjb21wdXRhdGlvbiBlbnN1cmVzIHRoYXQgW3RdJ3MgW21pbl9hbGxvd2VkX2tleV0gaXMgYXMgbGFyZ2UgYXMgcG9zc2libGVcbiAgICAgICAgIHN1YmplY3QgdG8gdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGVyZSBpcyBubyBpbnRlci1sZXZlbCBnYXAuICopXG4gICAgICBpZiBLZXkuZXF1YWwgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgS2V5Lm1heF92YWx1ZVxuICAgICAgdGhlbiBLZXkubWF4X3ZhbHVlXG4gICAgICBlbHNlIG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgfmtleTooS2V5LnN1Y2MgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIHBvb2wgOiAnYSBJbnRlcm5hbF9lbHQuUG9vbC50XG4gICAgOyAoKiBbbWluX2VsdF0gaXMgZWl0aGVyIG51bGwgb3IgYW4gZWxlbWVudCB3aG9zZSBrZXkgaXMgW2VsdF9rZXlfbG93ZXJfYm91bmRdLiAqKVxuICAgICAgbXV0YWJsZSBtaW5fZWx0IDogJ2EgSW50ZXJuYWxfZWx0LnRcbiAgICA7ICgqIEFsbCBlbGVtZW50cyBpbiB0aGUgcHJpb3JpdHkgcXVldWUgaGF2ZSB0aGVpciBrZXkgWz49IGVsdF9rZXlfbG93ZXJfYm91bmRdLiAqKVxuICAgICAgbXV0YWJsZSBlbHRfa2V5X2xvd2VyX2JvdW5kIDogS2V5LnRcbiAgICA7IGxldmVscyA6ICdhIExldmVsLnQgYXJyYXlcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICB0eXBlICdhIHByaW9yaXR5X3F1ZXVlID0gJ2EgdFxuXG4gIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBFeHRlcm5hbF9lbHQubnVsbFxuICAgIGxldCBhdCBwIHQgPSBJbnRlcm5hbF9lbHQuYXQgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICAgIGxldCBrZXkgcCB0ID0gSW50ZXJuYWxfZWx0LmtleSBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gICAgbGV0IHZhbHVlIHAgdCA9IEludGVybmFsX2VsdC52YWx1ZSBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gIGVuZFxuXG4gIGxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbiAgbGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbiAgbGV0IG51bV9sZXZlbHMgdCA9IEFycmF5Lmxlbmd0aCB0LmxldmVsc1xuICBsZXQgbWluX2FsbG93ZWRfa2V5IHQgPSBMZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5sZXZlbHMuKDApXG4gIGxldCBtYXhfYWxsb3dlZF9rZXkgdCA9IExldmVsLm1heF9hbGxvd2VkX2tleSB0LmxldmVscy4obnVtX2xldmVscyB0IC0gMSlcblxuICBsZXQgaW50ZXJuYWxfaXRlciB0IH5mID1cbiAgICBpZiB0Lmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGZvciBsZXZlbF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIGxldmVscyAtIDEgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGZvciBzbG90X2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggc2xvdHMgLSAxIGRvXG4gICAgICAgICAgICBsZXQgZWx0ID0gc2xvdHMuKHNsb3RfaW5kZXgpIGluXG4gICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdCkgdGhlbiBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZlxuICAgICAgICAgIGRvbmUpXG4gICAgICBkb25lKVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPSBpbnRlcm5hbF9pdGVyIHQgfmY6KGYgOiBfIEVsdC50IC0+IHVuaXQgOj4gXyBJbnRlcm5hbF9lbHQudCAtPiB1bml0KVxuXG4gIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IGtleSA6IEtleS50XG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbWluX2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgbWF4X2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgZWx0cyA6ICdhIEVsdC50IGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgcHJldHR5IHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgeyBQcmV0dHkubWluX2FsbG93ZWRfa2V5ID0gbWluX2FsbG93ZWRfa2V5IHRcbiAgICA7IG1heF9hbGxvd2VkX2tleSA9IG1heF9hbGxvd2VkX2tleSB0XG4gICAgOyBlbHRzID1cbiAgICAgICAgKGxldCByID0gcmVmIFtdIGluXG4gICAgICAgICBpbnRlcm5hbF9pdGVyIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgclxuICAgICAgICAgICA6PSB7IFByZXR0eS5FbHQua2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdFxuICAgICAgICAgICAgICA7IHZhbHVlID0gSW50ZXJuYWxfZWx0LnZhbHVlIHBvb2wgZWx0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogIXIpO1xuICAgICAgICAgTGlzdC5yZXYgIXIpXG4gICAgfVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIG1hdGNoICFzZXhwX29mX3Rfc3R5bGUgd2l0aFxuICAgIHwgYEludGVybmFsIC0+IFslc2V4cCAodCA6IGEgdF9pbnRlcm5hbCldXG4gICAgfCBgUHJldHR5IC0+IFslc2V4cCAocHJldHR5IHQgOiBhIFByZXR0eS50KV1cbiAgOztcblxuICBsZXQgY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXkgfmxldmVsX2JpdHMgfmJpdHNfcGVyX3Nsb3QgPVxuICAgIGxldCBiaXRzID0gTnVtX2tleV9iaXRzLiggKyApIGxldmVsX2JpdHMgYml0c19wZXJfc2xvdCBpblxuICAgIGlmIE51bV9rZXlfYml0cy5lcXVhbCBiaXRzIE51bV9rZXlfYml0cy5tYXhfdmFsdWVcbiAgICB0aGVuIEtleS5TcGFuLm1heF92YWx1ZVxuICAgIGVsc2UgS2V5LlNwYW4ucHJlZCAoS2V5Lm51bV9rZXlzIGJpdHMpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgbGV2ZWxfaW52YXJpYW50IGxldmVsID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSBsZXZlbCBbJXNleHBfb2Y6IF8gTGV2ZWwudF0gKGZ1biAoKSAtPlxuICAgICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCBsZXZlbCBmIGluXG4gICAgICAgIExldmVsLkZpZWxkcy5pdGVyXG4gICAgICAgICAgfmluZGV4OihjaGVjayAoZnVuIGluZGV4IC0+IGFzc2VydCAoaW5kZXggPj0gMCkpKVxuICAgICAgICAgIH5iaXRzOihjaGVjayAoZnVuIGJpdHMgLT4gYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+ICkgYml0cyBOdW1fa2V5X2JpdHMuemVybykpKVxuICAgICAgICAgIH5zbG90c19tYXNrOlxuICAgICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogU2xvdHNfbWFzay50XVxuICAgICAgICAgICAgICAgICAgfmV4cGVjdDooU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHM6bGV2ZWwuYml0cykpKVxuICAgICAgICAgIH5iaXRzX3Blcl9zbG90OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gYml0c19wZXJfc2xvdCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+PSApIGJpdHNfcGVyX3Nsb3QgTnVtX2tleV9iaXRzLnplcm8pKSlcbiAgICAgICAgICB+a2V5c19wZXJfc2xvdDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGtleXNfcGVyX3Nsb3QgLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgIGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDooS2V5Lm51bV9rZXlzIGxldmVsLmJpdHNfcGVyX3Nsb3QpKSlcbiAgICAgICAgICB+bWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzazpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suZXF1YWxcbiAgICAgICAgICAgICAgICAgICBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICAgICAgKE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKSlcbiAgICAgICAgICB+ZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgIChjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICB+bGV2ZWxfYml0czpsZXZlbC5iaXRzXG4gICAgICAgICAgICAgICAgICAgICAgIH5iaXRzX3Blcl9zbG90OmxldmVsLmJpdHNfcGVyX3Nsb3QpKSlcbiAgICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBsZW5ndGhcbiAgICAgICAgICAgICAgICAgPSBBcnJheS5mb2xkIGxldmVsLnNsb3RzIH5pbml0OjAgfmY6KGZ1biBuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICAgICAgICAgICAgICAgICAgIHRoZW4gblxuICAgICAgICAgICAgICAgICAgIGVsc2UgbiArIEludGVybmFsX2VsdC5sZW5ndGggcG9vbCBlbHQpKSkpXG4gICAgICAgICAgfm1pbl9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1pbl9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIG1pbl9hbGxvd2VkX2tleSBLZXkuemVybyk7XG4gICAgICAgICAgICAgICBpZiBLZXkuKCA8ICkgbWluX2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgICAoS2V5LnJlbSBtaW5fYWxsb3dlZF9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OktleS5TcGFuLnplcm8pKVxuICAgICAgICAgIH5tYXhfYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9rZXkgLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS50XVxuICAgICAgICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAoS2V5LmFkZF9jbGFtcF90b19tYXhcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXkpKSlcbiAgICAgICAgICB+c2xvdHM6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBzbG90cyAtPlxuICAgICAgICAgICAgICAgQXJyYXkuaXRlciBzbG90cyB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdClcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmludmFyaWFudCBwb29sIGludmFyaWFudF9hIGVsdDtcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgICAgICAgS2V5LiggPj0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICAgICAgICBLZXkuKCA8PSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwubWF4X2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgICAgICAgIEtleS4oID49IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAoSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbiAgICAgICAgICAgICAgICAgICAgICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQgPSBsZXZlbC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICBpbnZhcmlhbnRfYSAoSW50ZXJuYWxfZWx0LnZhbHVlIHBvb2wgZWx0KSkpKSkpKVxuICAgIGluXG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRfaW50ZXJuYWxdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtaW5fYWxsb3dlZF9rZXkgdCkgS2V5Lnplcm8pO1xuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtYXhfYWxsb3dlZF9rZXkgdCkgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICAgIH5wb29sOihjaGVjayAoSW50ZXJuYWxfZWx0LlBvb2wuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICAgIH5taW5fZWx0OlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF8gLT5cbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdF8pXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5pc192YWxpZCB0LnBvb2wgZWx0Xyk7XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS5lcXVhbCB0LmVsdF9rZXlfbG93ZXJfYm91bmQgKEludGVybmFsX2VsdC5rZXkgdC5wb29sIGVsdF8pKSkpKVxuICAgICAgICB+ZWx0X2tleV9sb3dlcl9ib3VuZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBlbHRfa2V5X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA8PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1heF9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCB0Lm1pbl9lbHQpXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgS2V5LmVxdWFsIGVsdF9rZXlfbG93ZXJfYm91bmQgKEludGVybmFsX2VsdC5rZXkgdC5wb29sIHQubWluX2VsdCkpKSlcbiAgICAgICAgfmxldmVsczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBsZXZlbHMgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKG51bV9sZXZlbHMgdCA+IDApO1xuICAgICAgICAgICAgIEFycmF5Lml0ZXJpIGxldmVscyB+ZjooZnVuIGxldmVsX2luZGV4IGxldmVsIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKGxldmVsX2luZGV4ID0gTGV2ZWwuaW5kZXggbGV2ZWwpO1xuICAgICAgICAgICAgICAgbGV2ZWxfaW52YXJpYW50IGxldmVsO1xuICAgICAgICAgICAgICAgaWYgbGV2ZWxfaW5kZXggPiAwXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHByZXZfbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4IC0gMSkgaW5cbiAgICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBMID0gTGV2ZWwgaW5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgICAoTC5rZXlzX3Blcl9zbG90IGxldmVsKVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6KEtleS5TcGFuLnN1Y2MgcHJldl9sZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkudF1cbiAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgICAgKExldmVsLmNvbXB1dGVfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgICAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5OnByZXZfbGV2ZWwubWF4X2FsbG93ZWRfa2V5KSkpKSkpXG4gIDs7XG5cbiAgKCoqIFttaW5fZWx0X10gcmV0dXJucyBbbnVsbF0gaWYgaXQgY2FuJ3QgZmluZCB0aGUgZGVzaXJlZCBlbGVtZW50LiAgV2Ugd3JhcCBpdCB1cFxuICAgICAgYWZ0ZXJ3YXJkcyB0byByZXR1cm4gYW4gW29wdGlvbl0uICopXG4gIGxldCBtaW5fZWx0XyB0ID1cbiAgICBpZiBpc19lbXB0eSB0XG4gICAgdGhlbiBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIGVsc2UgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCB0Lm1pbl9lbHQpXG4gICAgdGhlbiB0Lm1pbl9lbHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgbWluX2VsdF9hbHJlYWR5X2ZvdW5kID0gcmVmIChJbnRlcm5hbF9lbHQubnVsbCAoKSkgaW5cbiAgICAgIGxldCBtaW5fa2V5X2FscmVhZHlfZm91bmQgPSByZWYgS2V5Lm1heF92YWx1ZSBpblxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIGxldCBudW1fbGV2ZWxzID0gbnVtX2xldmVscyB0IGluXG4gICAgICB3aGlsZSAhbGV2ZWxfaW5kZXggPCBudW1fbGV2ZWxzIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLighbGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIEtleS4oID4gKSAoTGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsKSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBXZSBkb24ndCBuZWVkIHRvIGNvbnNpZGVyIGFueSBtb3JlIGxldmVscy4gIFF1aXQgdGhlIGxvb3AuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gbnVtX2xldmVsc1xuICAgICAgICBlbHNlIGlmIGxldmVsLmxlbmd0aCA9IDBcbiAgICAgICAgdGhlbiBpbmNyIGxldmVsX2luZGV4XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIExvb2sgaW4gW2xldmVsXS4gKilcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGxldCBzbG90X21pbl9rZXkgPVxuICAgICAgICAgICAgcmVmXG4gICAgICAgICAgICAgIChMZXZlbC5taW5fa2V5X2luX3NhbWVfc2xvdFxuICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgICB+a2V5OihLZXkubWF4IGxldmVsLm1pbl9hbGxvd2VkX2tleSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHNsb3QgPSByZWYgKExldmVsLnNsb3QgbGV2ZWwgfmtleTohc2xvdF9taW5fa2V5KSBpblxuICAgICAgICAgICgqIEZpbmQgdGhlIGZpcnN0IG5vbmVtcHR5IHNsb3Qgd2l0aCBhIHNtYWxsIGVub3VnaCBbc2xvdF9taW5fa2V5XS4gKilcbiAgICAgICAgICB3aGlsZVxuICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmlzX251bGwgc2xvdHMuKCFzbG90KVxuICAgICAgICAgICAgJiYgS2V5LiggPCApICFzbG90X21pbl9rZXkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICAgIGRvXG4gICAgICAgICAgICBzbG90IDo9IExldmVsLm5leHRfc2xvdCBsZXZlbCAhc2xvdDtcbiAgICAgICAgICAgIHNsb3RfbWluX2tleSA6PSBLZXkuYWRkICFzbG90X21pbl9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdFxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgbGV0IGZpcnN0ID0gc2xvdHMuKCFzbG90KSBpblxuICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBWaXNpdCBhbGwgb2YgdGhlIGVsdHMgaW4gdGhpcyBzbG90IGFuZCBmaW5kIG9uZSB3aXRoIG1pbmltdW0ga2V5LiAqKVxuICAgICAgICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgICAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICAgICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfa2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sICFjdXJyZW50IGluXG4gICAgICAgICAgICAgIGlmIEtleS4oIDw9ICkgY3VycmVudF9rZXkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBtaW5fZWx0X2FscmVhZHlfZm91bmQgOj0gIWN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgbWluX2tleV9hbHJlYWR5X2ZvdW5kIDo9IGN1cnJlbnRfa2V5KTtcbiAgICAgICAgICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgICAgICAgICgqIElmIFshbGV2ZWxfaW5kZXggPSAwXSB0aGVuIGFsbCBlbHRzIGluIHRoaXMgc2xvdCBoYXZlIHRoZSBzYW1lIFtrZXldLFxuICAgICAgICAgICAgICAgICBpLmUuIFshc2xvdF9taW5fa2V5XS4gIFNvLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueSBlbGVtZW50cyBhZnRlclxuICAgICAgICAgICAgICAgICBbZmlyc3RdLiAgVGhpcyBpcyBhIHVzZWZ1bCBzaG9ydCBjdXQgaW4gdGhlIGNvbW1vbiBjYXNlIHRoYXQgdGhlcmUgYXJlXG4gICAgICAgICAgICAgICAgIG11bHRpcGxlIGVsZW1lbnRzIGluIHRoZSBzYW1lIG1pbiBzbG90IGluIGxldmVsIDAuICopXG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB8fCAhbGV2ZWxfaW5kZXggPSAwXG4gICAgICAgICAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgICAgICAgICAgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgICAgICAgIGRvbmUpO1xuICAgICAgICAgICgqIEZpbmlzaGVkIGxvb2tpbmcgaW4gW2xldmVsXS4gIE1vdmUgdXAgdG8gdGhlIG5leHQgbGV2ZWwuICopXG4gICAgICAgICAgaW5jciBsZXZlbF9pbmRleClcbiAgICAgIGRvbmU7XG4gICAgICB0Lm1pbl9lbHQgPC0gIW1pbl9lbHRfYWxyZWFkeV9mb3VuZDtcbiAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kO1xuICAgICAgdC5taW5fZWx0KVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2JvdW5kcyB0IGtleSA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiUHJpb3JpdHlfcXVldWUuYWRkX2VsdCBrZXkgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICAgKGtleSA6IEtleS50KVxuICAgICAgICAgIChtaW5fYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIChtYXhfYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIH5wcmlvcml0eV9xdWV1ZToodCA6IF8gdCldXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfbGV2ZWxfYm91bmRzIGtleSBsZXZlbCA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiUHJpb3JpdHlfcXVldWUuYWRkX2VsdCBrZXkgb3V0IG9mIGxldmVsIGJvdW5kc1wiIChrZXkgOiBLZXkudCkgKGxldmVsIDogXyBMZXZlbC50KV1cbiAgOztcblxuICBsZXQgYWRkX2VsdCB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCBpblxuICAgIGlmIG5vdCAoS2V5LiggPj0gKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KSAmJiBLZXkuKCA8PSApIGtleSAobWF4X2FsbG93ZWRfa2V5IHQpKVxuICAgIHRoZW4gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2JvdW5kcyB0IGtleTtcbiAgICAoKiBGaW5kIHRoZSBsb3dlc3QgbGV2ZWwgdGhhdCB3aWxsIGhvbGQgW2VsdF0uICopXG4gICAgbGV0IGxldmVsX2luZGV4ID1cbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICB3aGlsZSBLZXkuKCA+ICkga2V5IChMZXZlbC5tYXhfYWxsb3dlZF9rZXkgdC5sZXZlbHMuKCFsZXZlbF9pbmRleCkpIGRvXG4gICAgICAgIGluY3IgbGV2ZWxfaW5kZXhcbiAgICAgIGRvbmU7XG4gICAgICAhbGV2ZWxfaW5kZXhcbiAgICBpblxuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICBpZiBub3QgKEtleS4oID49ICkga2V5IGxldmVsLm1pbl9hbGxvd2VkX2tleSAmJiBLZXkuKCA8PSApIGtleSBsZXZlbC5tYXhfYWxsb3dlZF9rZXkpXG4gICAgdGhlbiByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfbGV2ZWxfYm91bmRzIGtleSBsZXZlbDtcbiAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoICsgMTtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2xldmVsX2luZGV4IHBvb2wgZWx0IGxldmVsX2luZGV4O1xuICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5IGluXG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICBsZXQgZmlyc3QgPSBzbG90cy4oc2xvdCkgaW5cbiAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgIHRoZW4gSW50ZXJuYWxfZWx0Lmluc2VydF9hdF9lbmQgcG9vbCBmaXJzdCB+dG9fYWRkOmVsdFxuICAgIGVsc2UgKFxuICAgICAgc2xvdHMuKHNsb3QpIDwtIGVsdDtcbiAgICAgIEludGVybmFsX2VsdC5saW5rX3RvX3NlbGYgcG9vbCBlbHQpXG4gIDs7XG5cbiAgbGV0IGludGVybmFsX2FkZF9lbHQgdCBlbHQgPVxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IHQucG9vbCBlbHQgaW5cbiAgICBpZiBLZXkuKCA8ICkga2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZFxuICAgIHRoZW4gKFxuICAgICAgdC5taW5fZWx0IDwtIGVsdDtcbiAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSBrZXkpO1xuICAgIGFkZF9lbHQgdCBlbHQ7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9nb3RfaW52YWxpZF9rZXkgdCBrZXkgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5hZGRfYXRfaW50ZXJ2YWxfbnVtIGdvdCBpbnZhbGlkIGludGVydmFsIG51bVwiXG4gICAgICAgICAgfmludGVydmFsX251bTooa2V5IDogS2V5LnQpXG4gICAgICAgICAgfm1pbl9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bToobWluX2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICB+bWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtOihtYXhfYWxsb3dlZF9rZXkgdCA6IEtleS50KV1cbiAgOztcblxuICBsZXQgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXkgPVxuICAgIGlmIEtleS4oIDwgKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KSB8fCBLZXkuKCA+ICkga2V5IChtYXhfYWxsb3dlZF9rZXkgdClcbiAgICB0aGVuIHJhaXNlX2dvdF9pbnZhbGlkX2tleSB0IGtleVxuICA7O1xuXG4gIGxldCBpbnRlcm5hbF9hZGQgdCB+a2V5IH5hdCB2YWx1ZSA9XG4gICAgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXk7XG4gICAgaWYgSW50ZXJuYWxfZWx0LlBvb2wuaXNfZnVsbCB0LnBvb2wgdGhlbiB0LnBvb2wgPC0gSW50ZXJuYWxfZWx0LlBvb2wuZ3JvdyB0LnBvb2w7XG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5jcmVhdGUgdC5wb29sIH5rZXkgfmF0IH52YWx1ZSB+bGV2ZWxfaW5kZXg6KC0xKSBpblxuICAgIGludGVybmFsX2FkZF9lbHQgdCBlbHQ7XG4gICAgZWx0XG4gIDs7XG5cbiAgKCoqIFtyZW1vdmVfb3JfcmVfYWRkX2VsdHNdIHZpc2l0cyBlYWNoIGVsZW1lbnQgaW4gdGhlIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgW2ZpcnN0XS4gIElmIHRoZSBlbGVtZW50J3Mga2V5IGlzIFs+PSB0X21pbl9hbGxvd2VkX2tleV0sIHRoZW4gaXQgYWRkcyB0aGUgZWxlbWVudFxuICAgICAgYmFjayBhdCBhIGxvd2VyIGxldmVsLiAgSWYgbm90LCB0aGVuIGl0IGNhbGxzIFtoYW5kbGVfcmVtb3ZlZF0gYW5kIFtmcmVlXXMgdGhlXG4gICAgICBlbGVtZW50LiAqKVxuICBsZXQgcmVtb3ZlX29yX3JlX2FkZF9lbHRzIHQgKGxldmVsIDogXyBMZXZlbC50KSBmaXJzdCB+dF9taW5fYWxsb3dlZF9rZXkgfmhhbmRsZV9yZW1vdmVkXG4gICAgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgKCogV2UgZXh0cmFjdCBbbmV4dF0gZnJvbSBbY3VycmVudF0gZmlyc3QsIGJlY2F1c2Ugd2Ugd2lsbCBtb2RpZnkgb3IgW2ZyZWVdXG4gICAgICAgICBbY3VycmVudF0gYmVmb3JlIGNvbnRpbnVpbmcgdGhlIGxvb3AuICopXG4gICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggLSAxO1xuICAgICAgaWYgS2V5LiggPj0gKSAoSW50ZXJuYWxfZWx0LmtleSBwb29sICFjdXJyZW50KSB0X21pbl9hbGxvd2VkX2tleVxuICAgICAgdGhlbiBhZGRfZWx0IHQgIWN1cnJlbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGhhbmRsZV9yZW1vdmVkIChJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWwgIWN1cnJlbnQpO1xuICAgICAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sICFjdXJyZW50KTtcbiAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgZG9uZVxuICA7O1xuXG4gICgqKiBbaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIFtsZXZlbF0gdG8gYXNcbiAgICAgIGxhcmdlIGEgdmFsdWUgYXMgcG9zc2libGUsIGJ1dCBubyBtb3JlIHRoYW4gW21heF9sZXZlbF9taW5fYWxsb3dlZF9rZXldLlxuICAgICAgW3RfbWluX2FsbG93ZWRfa2V5XSBpcyB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBmb3IgdGhlIGVudGlyZSB0aW1pbmcgd2hlZWwuICBBc1xuICAgICAgZWxlbWVudHMgYXJlIGVuY291bnRlcmVkLCB0aGV5IGFyZSByZW1vdmVkIGZyb20gdGhlIHRpbWluZyB3aGVlbCBpZiB0aGVpciBrZXkgaXNcbiAgICAgIHNtYWxsZXIgdGhhbiBbdF9taW5fYWxsb3dlZF9rZXldLCBvciBhZGRlZCBhdCBhIGxvd2VyIGxldmVsIGlmIG5vdC4gKilcbiAgbGV0IGluY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleVxuICAgICAgICB0XG4gICAgICAgIChsZXZlbCA6IF8gTGV2ZWwudClcbiAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgIH50X21pbl9hbGxvd2VkX2tleVxuICAgICAgICB+aGFuZGxlX3JlbW92ZWRcbiAgICA9XG4gICAgbGV0IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgIExldmVsLmNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IGxldmVsIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgIGluXG4gICAgKCogV2UgcmVxdWlyZSB0aGF0IFttb2QgbGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsLmtleXNfcGVyX3Nsb3QgPSAwXS4gIFNvLFxuICAgICAgIHdlIHN0YXJ0IFtsZXZlbF9taW5fYWxsb3dlZF9rZXldIHdoZXJlIHRoYXQgaXMgdHJ1ZSwgYW5kIHRoZW4gaW5jcmVhc2UgaXQgYnlcbiAgICAgICBba2V5c19wZXJfc2xvdF0gZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuICopXG4gICAgbGV0IGxldmVsX21pbl9hbGxvd2VkX2tleSA9XG4gICAgICBMZXZlbC5taW5fa2V5X2luX3NhbWVfc2xvdFxuICAgICAgICBsZXZlbFxuICAgICAgICB+a2V5OlxuICAgICAgICAgIChLZXkubWluXG4gICAgICAgICAgICAgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAoS2V5Lm1heCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKSlcbiAgICBpblxuICAgIGxldCBsZXZlbF9taW5fYWxsb3dlZF9rZXkgPSByZWYgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGluXG4gICAgbGV0IHNsb3QgPSByZWYgKExldmVsLnNsb3QgbGV2ZWwgfmtleTohbGV2ZWxfbWluX2FsbG93ZWRfa2V5KSBpblxuICAgIGxldCBrZXlzX3Blcl9zbG90ID0gbGV2ZWwua2V5c19wZXJfc2xvdCBpblxuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgd2hpbGUgS2V5LiggPCApICFsZXZlbF9taW5fYWxsb3dlZF9rZXkgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgZG9cbiAgICAgIGlmIGxldmVsLmxlbmd0aCA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgKCogSWYgbm8gZWxlbWVudHMgcmVtYWluIGF0IHRoaXMgbGV2ZWwsIHdlIGNhbiBqdXN0IHNldCBbbWluX2FsbG93ZWRfa2V5XSB0byB0aGVcbiAgICAgICAgICAgZGVzaXJlZCB2YWx1ZS4gKilcbiAgICAgICAgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IDo9IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGZpcnN0ID0gc2xvdHMuKCFzbG90KSBpblxuICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBzbG90cy4oIXNsb3QpIDwtIEludGVybmFsX2VsdC5udWxsICgpO1xuICAgICAgICAgIHJlbW92ZV9vcl9yZV9hZGRfZWx0cyB0IGxldmVsIGZpcnN0IH50X21pbl9hbGxvd2VkX2tleSB+aGFuZGxlX3JlbW92ZWQpO1xuICAgICAgICBzbG90IDo9IExldmVsLm5leHRfc2xvdCBsZXZlbCAhc2xvdDtcbiAgICAgICAgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IDo9IEtleS5hZGRfY2xhbXBfdG9fbWF4ICFsZXZlbF9taW5fYWxsb3dlZF9rZXkga2V5c19wZXJfc2xvdClcbiAgICBkb25lO1xuICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleSA8LSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleTtcbiAgICBsZXZlbC5tYXhfYWxsb3dlZF9rZXlcbiAgICA8LSBLZXkuYWRkX2NsYW1wX3RvX21heCBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSBsZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgOztcblxuICBtb2R1bGUgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZFxuICBlbmRcblxuICBsZXQgaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5IHQgfmtleSB+aGFuZGxlX3JlbW92ZWQgOiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0LnQgPVxuICAgIGlmIEtleS4oIDw9ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdClcbiAgICB0aGVuIE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgIGVsc2UgKFxuICAgICAgKCogV2UgaW5jcmVhc2UgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIGxldmVscyBpbiBvcmRlciB0byByZXN0b3JlIHRoZSBpbnZhcmlhbnRcbiAgICAgICAgIHRoYXQgdGhleSBoYXZlIGFzIGxhcmdlIGFzIHBvc3NpYmxlIGEgW21pbl9hbGxvd2VkX2tleV0sIHdoaWxlIGxlYXZpbmcgbm8gZ2Fwc1xuICAgICAgICAgaW4ga2V5cy4gKilcbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVzdWx0ID0gcmVmIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQuTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWQgaW5cbiAgICAgIGxldCBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA9IHJlZiAoS2V5LnByZWQga2V5KSBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBsZXQgbnVtX2xldmVscyA9IG51bV9sZXZlbHMgdCBpblxuICAgICAgd2hpbGUgIWxldmVsX2luZGV4IDwgbnVtX2xldmVscyBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKCFsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgbGV0IG1pbl9hbGxvd2VkX2tleV9iZWZvcmUgPSBsZXZlbC5taW5fYWxsb3dlZF9rZXkgaW5cbiAgICAgICAgaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgdFxuICAgICAgICAgIGxldmVsXG4gICAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5OiFwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgICAgICAgIH50X21pbl9hbGxvd2VkX2tleTprZXlcbiAgICAgICAgICB+aGFuZGxlX3JlbW92ZWQ7XG4gICAgICAgIGlmIEtleS5lcXVhbCAoTGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsKSBtaW5fYWxsb3dlZF9rZXlfYmVmb3JlXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIFRoaXMgbGV2ZWwgZGlkIG5vdCBzaGlmdC4gIERvbid0IHNoaWZ0IGFueSBoaWdoZXIgbGV2ZWxzLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9IG51bV9sZXZlbHM7XG4gICAgICAgICAgcmVzdWx0IDo9IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogTGV2ZWwgW2xldmVsX2luZGV4XSBzaGlmdGVkLiAgQ29uc2lkZXIgc2hpZnRpbmcgaGlnaGVyIGxldmVscy4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSAhbGV2ZWxfaW5kZXggKyAxO1xuICAgICAgICAgIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5IDo9IExldmVsLm1heF9hbGxvd2VkX2tleSBsZXZlbClcbiAgICAgIGRvbmU7XG4gICAgICBpZiBLZXkuKCA+ICkga2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFdlIGhhdmUgcmVtb3ZlZCBbdC5taW5fZWx0XSBvciBpdCB3YXMgYWxyZWFkeSBudWxsLCBzbyBqdXN0IHNldCBpdCB0b1xuICAgICAgICAgICBudWxsLiAqKVxuICAgICAgICB0Lm1pbl9lbHQgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCk7XG4gICAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSBtaW5fYWxsb3dlZF9rZXkgdCk7XG4gICAgICAhcmVzdWx0KVxuICA7O1xuXG4gIGxldCBjcmVhdGUgP2NhcGFjaXR5ID9sZXZlbF9iaXRzICgpID1cbiAgICBsZXQgbGV2ZWxfYml0cyA9XG4gICAgICBtYXRjaCBsZXZlbF9iaXRzIHdpdGhcbiAgICAgIHwgU29tZSBsIC0+IGxcbiAgICAgIHwgTm9uZSAtPiBMZXZlbF9iaXRzLmRlZmF1bHRcbiAgICBpblxuICAgIGxldCBfLCBfLCBsZXZlbHMgPVxuICAgICAgTGlzdC5mb2xkaVxuICAgICAgICBsZXZlbF9iaXRzXG4gICAgICAgIH5pbml0OihOdW1fa2V5X2JpdHMuemVybywgS2V5Lnplcm8sIFtdKVxuICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAoYml0c19wZXJfc2xvdCwgbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleSwgbGV2ZWxzKVxuICAgICAgICAgICAgIChsZXZlbF9iaXRzIDogTnVtX2tleV9iaXRzLnQpXG4gICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgIGxldCBrZXlzX3Blcl9zbG90ID0gS2V5Lm51bV9rZXlzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICAgICAgICAgICAgIGxldCBkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgICBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID1cbiAgICAgICAgICAgICAgICAgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5jcmVhdGUgfmJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICAgS2V5Lm1pbl9rZXlfaW5fc2FtZV9zbG90IG1heF9sZXZlbF9taW5fYWxsb3dlZF9rZXkgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBtYXhfYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgICBLZXkuYWRkX2NsYW1wX3RvX21heCBtaW5fYWxsb3dlZF9rZXkgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGxldmVsID1cbiAgICAgICAgICAgICAgICAgeyBMZXZlbC5pbmRleFxuICAgICAgICAgICAgICAgICA7IGJpdHMgPSBsZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgIDsgc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgIDsgYml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgICA7IGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICAgIDsgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgICAgICAgICAgICA7IG1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICA7IG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICA7IHNsb3RzID1cbiAgICAgICAgICAgICAgICAgICAgIEFycmF5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICB+bGVuOihJbnQ2My50b19pbnRfZXhuIChOdW1fa2V5X2JpdHMucG93MiBsZXZlbF9iaXRzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAsIEtleS5zdWNjX2NsYW1wX3RvX21heCBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICwgbGV2ZWwgOjogbGV2ZWxzICkpXG4gICAgaW5cbiAgICB7IGxlbmd0aCA9IDBcbiAgICA7IHBvb2wgPSBJbnRlcm5hbF9lbHQuUG9vbC5jcmVhdGUgP2NhcGFjaXR5ICgpXG4gICAgOyBtaW5fZWx0ID0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICA7IGVsdF9rZXlfbG93ZXJfYm91bmQgPSBLZXkuemVyb1xuICAgIDsgbGV2ZWxzID0gQXJyYXkub2ZfbGlzdF9yZXYgbGV2ZWxzXG4gICAgfVxuICA7O1xuXG4gIGxldCBtZW0gdCBlbHQgPSBJbnRlcm5hbF9lbHQuZXh0ZXJuYWxfaXNfdmFsaWQgdC5wb29sIGVsdFxuXG4gIGxldCBpbnRlcm5hbF9yZW1vdmUgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgaWYgSW50ZXJuYWxfZWx0LmVxdWFsIGVsdCB0Lm1pbl9lbHRcbiAgICB0aGVuXG4gICAgICB0Lm1pbl9lbHQgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICAoKiBXZSBrZWVwIFt0LmVsdF9sb3dlcl9ib3VuZF0gc2luY2UgaXQgaXMgdmFsaWQgZXZlbiB0aG91Z2ggW3QubWluX2VsdF0gaXMgYmVpbmdcbiAgICAgICByZW1vdmVkLiAqKTtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKEludGVybmFsX2VsdC5sZXZlbF9pbmRleCBwb29sIGVsdCkgaW5cbiAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoIC0gMTtcbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSBpblxuICAgIGxldCBmaXJzdCA9IHNsb3RzLihzbG90KSBpblxuICAgIGlmIHBoeXNfZXF1YWwgZWx0IChJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdClcbiAgICB0aGVuICgqIFtlbHRdIGlzIHRoZSBvbmx5IGVsZW1lbnQgaW4gdGhlIHNsb3QgKilcbiAgICAgIHNsb3RzLihzbG90KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIGVsc2UgKFxuICAgICAgaWYgcGh5c19lcXVhbCBlbHQgZmlyc3QgdGhlbiBzbG90cy4oc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQ7XG4gICAgICBJbnRlcm5hbF9lbHQudW5saW5rIHBvb2wgZWx0KVxuICA7O1xuXG4gIGxldCByZW1vdmUgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcG9vbCBlbHQgaW5cbiAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHRcbiAgOztcblxuICBsZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5oYW5kbGVfZmlyZWQgfmtleSB+bm93ID1cbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oMCkgaW5cbiAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleSBpblxuICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgZmlyc3QgPSByZWYgc2xvdHMuKHNsb3QpIGluXG4gICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsICFmaXJzdClcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY3VycmVudCA9IHJlZiAhZmlyc3QgaW5cbiAgICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICAgbGV0IGVsdCA9ICFjdXJyZW50IGluXG4gICAgICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdCBpblxuICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCAhZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dDtcbiAgICAgICAgICBpZiBUaW1lX25zLiggPD0gKSAoSW50ZXJuYWxfZWx0LmF0IHBvb2wgZWx0KSBub3dcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGhhbmRsZV9maXJlZCAoSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsIGVsdCk7XG4gICAgICAgICAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgICAgICAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdDtcbiAgICAgICAgICAgICgqIFdlIHJlY29tcHV0ZSBbZmlyc3RdIGJlY2F1c2UgW2ludGVybmFsX3JlbW92ZV0gbWF5IGhhdmUgY2hhbmdlZCBpdC4gKilcbiAgICAgICAgICAgIGZpcnN0IDo9IHNsb3RzLihzbG90KSlcbiAgICAgICAgZG9uZSkpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB0IGVsdCB+a2V5IH5hdCA9XG4gICAgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXk7XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwb29sIGVsdCBpblxuICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2tleSBwb29sIGVsdCBrZXk7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9hdCBwb29sIGVsdCBhdDtcbiAgICBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0XG4gIDs7XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgICB0aGVuIChcbiAgICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGZyZWVfZWx0IGVsdCA9IEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0IGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGZvciBsZXZlbF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIGxldmVscyAtIDEgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXZlbC5sZW5ndGggPC0gMDtcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGZvciBzbG90X2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggc2xvdHMgLSAxIGRvXG4gICAgICAgICAgICBsZXQgZWx0ID0gc2xvdHMuKHNsb3RfaW5kZXgpIGluXG4gICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdClcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZjpmcmVlX2VsdDtcbiAgICAgICAgICAgICAgc2xvdHMuKHNsb3RfaW5kZXgpIDwtIEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgIGRvbmUpXG4gICAgICBkb25lKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnRlcm5hbF9lbHQgPSBQcmlvcml0eV9xdWV1ZS5JbnRlcm5hbF9lbHRcbm1vZHVsZSBLZXkgPSBQcmlvcml0eV9xdWV1ZS5LZXlcbm1vZHVsZSBJbnRlcnZhbF9udW0gPSBLZXlcblxubGV0IG1pbl9pbnRlcnZhbF9udW0gPSBJbnRlcnZhbF9udW0uemVyb1xuXG4oKiBBbGwgdGltZSBmcm9tIHRoZSBlcG9jaCBvbndhcmRzIGlzIGJyb2tlbiBpbnRvIGhhbGYtb3BlbiBpbnRlcnZhbHMgb2Ygc2l6ZVxuICAgW0NvbmZpZy5hbGFybV9wcmVjaXNpb24gY29uZmlnXS4gIFRoZSBpbnRlcnZhbHMgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIGF0IHplcm8sIGFuZCBhXG4gICB0aW1lJ3MgaW50ZXJ2YWwgbnVtYmVyIHNlcnZlcyBhcyBpdHMga2V5IGluIFtwcmlvcml0eV9xdWV1ZV0uICopXG50eXBlICdhIHQgPVxuICB7IGNvbmZpZyA6IENvbmZpZy50XG4gIDsgc3RhcnQgOiBUaW1lX25zLnRcbiAgOyAoKiBbbWF4X2ludGVydmFsX251bV0gaXMgdGhlIGludGVydmFsIG51bWJlciBvZiBbbWF4X3RpbWVdLiAqKVxuICAgIG1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udFxuICA7IG11dGFibGUgbm93IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBtYXhfYWxsb3dlZF9hbGFybV90aW1lIDogVGltZV9ucy50XG4gIDsgcHJpb3JpdHlfcXVldWUgOiAnYSBQcmlvcml0eV9xdWV1ZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAnYSB0aW1pbmdfd2hlZWwgPSAnYSB0XG50eXBlICdhIHRfbm93ID0gJ2EgdFxuXG5sZXQgc2V4cF9vZl90X25vdyBfIHQgPSBbJXNleHAgKHQubm93IDogVGltZV9ucy50KV1cbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IENvbmZpZy5hbGFybV9wcmVjaXNpb24gdC5jb25maWdcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByaW9yaXR5X3F1ZXVlLkVsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IG51bGwgPSBQcmlvcml0eV9xdWV1ZS5FbHQubnVsbFxuICBsZXQgYXQgdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5hdCB0dy5wcmlvcml0eV9xdWV1ZSB0XG4gIGxldCB2YWx1ZSB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LnZhbHVlIHR3LnByaW9yaXR5X3F1ZXVlIHRcbiAgbGV0IGludGVydmFsX251bSB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LmtleSB0dy5wcmlvcml0eV9xdWV1ZSB0XG5lbmRcblxubGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxubGV0IGl0ZXIgdCB+ZiA9IFByaW9yaXR5X3F1ZXVlLml0ZXIgdC5wcmlvcml0eV9xdWV1ZSB+ZlxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGF0IDogVGltZV9ucy50XG4gICAgICA7IHZhbHVlIDogJ2FcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIHQgYWxhcm0gPSB7IGF0ID0gQWxhcm0uYXQgdCBhbGFybTsgdmFsdWUgPSBBbGFybS52YWx1ZSB0IGFsYXJtIH1cbiAgICBsZXQgY29tcGFyZSB0MSB0MiA9IFRpbWVfbnMuY29tcGFyZSAoYXQgdDEpIChhdCB0MilcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGNvbmZpZyA6IENvbmZpZy50XG4gICAgOyBzdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50XG4gICAgOyBub3cgOiBUaW1lX25zLnRcbiAgICA7IGFsYXJtcyA6ICdhIEFsYXJtLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgcHJldHR5XG4gICAgICAoeyBjb25maWdcbiAgICAgICA7IHN0YXJ0XG4gICAgICAgOyBtYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgOyBub3dcbiAgICAgICA7IG5vd19pbnRlcnZhbF9udW1fc3RhcnQgPSBfXG4gICAgICAgOyBtYXhfYWxsb3dlZF9hbGFybV90aW1lID0gX1xuICAgICAgIDsgcHJpb3JpdHlfcXVldWUgPSBfXG4gICAgICAgfSBhcyB0KVxuICA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gciA6PSBQcmV0dHkuQWxhcm0uY3JlYXRlIHQgYSA6OiAhcik7XG4gIGxldCBhbGFybXMgPSBMaXN0LnNvcnQgIXIgfmNvbXBhcmU6UHJldHR5LkFsYXJtLmNvbXBhcmUgaW5cbiAgeyBQcmV0dHkuY29uZmlnOyBzdGFydDsgbWF4X2ludGVydmFsX251bTsgbm93OyBhbGFybXMgfVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gIG1hdGNoICFzZXhwX29mX3Rfc3R5bGUgd2l0aFxuICB8IGBJbnRlcm5hbCAtPiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9hIHRcbiAgfCBgUHJldHR5IC0+IFslc2V4cCAocHJldHR5IHQgOiBhIFByZXR0eS50KV1cbjs7XG5cbmxldCBsZW5ndGggdCA9IFByaW9yaXR5X3F1ZXVlLmxlbmd0aCB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfZXhuX29mX2VtcHR5X3RpbWluZ193aGVlbCB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCIgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfd2l0aF9hbGxfYWxhcm1zX2luX21heF9pbnRlcnZhbCB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gd2l0aCBhbGwgYWxhcm1zIGluIG1heCBpbnRlcnZhbFwiXG4gICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuOztcblxubGV0IHBvb2wgdCA9IFByaW9yaXR5X3F1ZXVlLnBvb2wgdC5wcmlvcml0eV9xdWV1ZVxuXG5sZXQgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lIH5hbGFybV9wcmVjaXNpb24gPVxuICBJbnRlcnZhbF9udW0ub2ZfaW50NjMgKEFsYXJtX3ByZWNpc2lvbi5pbnRlcnZhbF9udW0gYWxhcm1fcHJlY2lzaW9uIHRpbWUpXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRpbWUgPVxuICBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWUgfmFsYXJtX3ByZWNpc2lvbjp0LmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbjs7XG5cbmxldCBpbnRlcnZhbF9udW0gdCB0aW1lID1cbiAgaWYgVGltZV9ucy4oIDwgKSB0aW1lIG1pbl90aW1lXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtIGdvdCB0aW1lIHRvbyBmYXIgaW4gdGhlIHBhc3RcIiAodGltZSA6IFRpbWVfbnMudCldO1xuICBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdGltZVxuOztcblxubGV0IGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBpbnRlcnZhbF9udW0gPVxuICBBbGFybV9wcmVjaXNpb24uaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gICAgdC5jb25maWcuYWxhcm1fcHJlY2lzaW9uXG4gICAgKGludGVydmFsX251bSB8PiBJbnRlcnZhbF9udW0udG9faW50NjMpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX3NtYWxsIGludGVydmFsX251bSA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bV9zdGFydCBnb3QgdG9vIHNtYWxsIGludGVydmFsX251bVwiXG4gICAgICAgIChpbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udClcbiAgICAgICAgKG1pbl9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX2xhcmdlIHQgaW50ZXJ2YWxfbnVtID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtX3N0YXJ0IGdvdCB0b28gbGFyZ2UgaW50ZXJ2YWxfbnVtXCJcbiAgICAgICAgKGludGVydmFsX251bSA6IEludGVydmFsX251bS50KVxuICAgICAgICAodC5tYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXVxuOztcblxubGV0IGludGVydmFsX251bV9zdGFydCB0IGludGVydmFsX251bSA9XG4gIGlmIEludGVydmFsX251bS4oIDwgKSBpbnRlcnZhbF9udW0gbWluX2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX3NtYWxsIGludGVydmFsX251bTtcbiAgaWYgSW50ZXJ2YWxfbnVtLiggPiApIGludGVydmFsX251bSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19sYXJnZSB0IGludGVydmFsX251bTtcbiAgaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGludGVydmFsX251bVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXkgPVxuICAoKiBbaW50ZXJ2YWxfbnVtX3N0YXJ0IHQga2V5XSBpcyB0aGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0aW1lIGludGVydmFsXG4gICAgIGhvbGRpbmcgdGhlIGZpcnN0IGFsYXJtIGluIFt0XS4gIEFkdmFuY2luZyB0byB0aGF0IHdvdWxkIG5vdCBiZSBlbm91Z2gsIHNpbmNlIHRoZVxuICAgICBhbGFybXMgaW4gdGhhdCBpbnRlcnZhbCBkb24ndCBmaXJlIHVudGlsIHRoZSBjbG9jayBpcyBhZHZhbmNlZCB0byB0aGUgc3RhcnQgb2YgdGhlXG4gICAgIG5leHQgaW50ZXJ2YWwuICBTbywgd2UgdXNlIFtzdWNjIGtleV0gdG8gYWR2YW5jZSB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHRcbiAgICAgaW50ZXJ2YWwuICopXG4gIGludGVydmFsX251bV9zdGFydCB0IChLZXkuc3VjYyBrZXkpXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQgaW5cbiAgICBpZiBJbnRlcnZhbF9udW0uZXF1YWwga2V5IHQubWF4X2ludGVydmFsX251bVxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAobmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleSkpXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfZXhuX29mX2VtcHR5X3RpbWluZ193aGVlbCB0O1xuICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQgaW5cbiAgaWYgSW50ZXJ2YWxfbnVtLmVxdWFsIGtleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X3dpdGhfYWxsX2FsYXJtc19pbl9tYXhfaW50ZXJ2YWwgdDtcbiAgbmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleVxuOztcblxubGV0IGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0ID1cbiAgbGV0IG1heF9hbGxvd2VkX2tleSA9IFByaW9yaXR5X3F1ZXVlLm1heF9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVydmFsX251bS4oID49ICkgbWF4X2FsbG93ZWRfa2V5IHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIG1heF90aW1lXG4gIGVsc2VcbiAgICBUaW1lX25zLmFkZFxuICAgICAgKGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBtYXhfYWxsb3dlZF9rZXkpXG4gICAgICAoVGltZV9ucy5TcGFuLiggLSApIChhbGFybV9wcmVjaXNpb24gdCkgVGltZV9ucy5TcGFuLm5hbm9zZWNvbmQpXG47O1xuXG5sZXQgbm93X2ludGVydmFsX251bSB0ID0gUHJpb3JpdHlfcXVldWUubWluX2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWVcbmxldCBtaW5fYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW0gPSBub3dfaW50ZXJ2YWxfbnVtXG5sZXQgbWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIHQgPSBpbnRlcnZhbF9udW0gdCAobWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KVxubGV0IGludGVydmFsX3N0YXJ0IHQgdGltZSA9IGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCAoaW50ZXJ2YWxfbnVtIHQgdGltZSlcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNvbmZpZzooY2hlY2sgQ29uZmlnLmludmFyaWFudClcbiAgICAgIH5zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW4gc3RhcnQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPj0gKSBzdGFydCBtaW5fdGltZSk7XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgc3RhcnQgbWF4X3RpbWUpKSlcbiAgICAgIH5tYXhfaW50ZXJ2YWxfbnVtOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfaW50ZXJ2YWxfbnVtIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEludGVydmFsX251bS50XVxuICAgICAgICAgICAgIH5leHBlY3Q6bWF4X2ludGVydmFsX251bVxuICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCBtYXhfdGltZSk7XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEludGVydmFsX251bS50XVxuICAgICAgICAgICAgIH5leHBlY3Q6bWF4X2ludGVydmFsX251bVxuICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCAoaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgbWF4X2ludGVydmFsX251bSkpKSlcbiAgICAgIH5ub3c6XG4gICAgICAgIChjaGVjayAoZnVuIG5vdyAtPlxuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+PSApIG5vdyB0LnN0YXJ0KTtcbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBub3cgbWF4X3RpbWUpO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIEludGVydmFsX251bS5lcXVhbFxuICAgICAgICAgICAgICAgKGludGVydmFsX251bSB0IHQubm93KVxuICAgICAgICAgICAgICAgKFByaW9yaXR5X3F1ZXVlLm1pbl9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlKSkpKVxuICAgICAgfm5vd19pbnRlcnZhbF9udW1fc3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vd19pbnRlcnZhbF9udW1fc3RhcnQgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XVxuICAgICAgICAgICAgIG5vd19pbnRlcnZhbF9udW1fc3RhcnRcbiAgICAgICAgICAgICB+ZXhwZWN0OihpbnRlcnZhbF9udW1fc3RhcnQgdCAobm93X2ludGVydmFsX251bSB0KSkpKVxuICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX3RpbWU6XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XVxuICAgICAgICAgICAgIG1heF9hbGxvd2VkX2FsYXJtX3RpbWVcbiAgICAgICAgICAgICB+ZXhwZWN0Oihjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCkpKVxuICAgICAgfnByaW9yaXR5X3F1ZXVlOihjaGVjayAoUHJpb3JpdHlfcXVldWUuaW52YXJpYW50IGludmFyaWFudF9hKSk7XG4gICAgaXRlciB0IH5mOihmdW4gYWxhcm0gLT5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEludGVydmFsX251bS5lcXVhbFxuICAgICAgICAgIChBbGFybS5pbnRlcnZhbF9udW0gdCBhbGFybSlcbiAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgKEFsYXJtLmF0IHQgYWxhcm0pKSk7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBUaW1lX25zLiggPj0gKVxuICAgICAgICAgIChpbnRlcnZhbF9zdGFydCB0IChBbGFybS5hdCB0IGFsYXJtKSlcbiAgICAgICAgICAoaW50ZXJ2YWxfc3RhcnQgdCAobm93IHQpKSk7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBUaW1lX25zLiggPiApIChBbGFybS5hdCB0IGFsYXJtKSAoVGltZV9ucy5zdWIgKG5vdyB0KSAoYWxhcm1fcHJlY2lzaW9uIHQpKSkpKVxuOztcblxubGV0IGRlYnVnID0gZmFsc2VcblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5oYW5kbGVfZmlyZWQgPVxuICBpZiBUaW1lX25zLiggPiApIHRvXyAobm93IHQpXG4gIHRoZW4gKFxuICAgIHQubm93IDwtIHRvXztcbiAgICBsZXQga2V5ID0gaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRvXyBpblxuICAgIHQubm93X2ludGVydmFsX251bV9zdGFydCA8LSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQga2V5O1xuICAgIG1hdGNoXG4gICAgICBQcmlvcml0eV9xdWV1ZS5pbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgICB+a2V5XG4gICAgICAgIH5oYW5kbGVfcmVtb3ZlZDpoYW5kbGVfZmlyZWRcbiAgICB3aXRoXG4gICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UgLT5cbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGFzc2VydCAoVGltZV9ucy4oID0gKSB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgKGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KSlcbiAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIC0+XG4gICAgICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpXG47O1xuXG5sZXQgY3JlYXRlIH5jb25maWcgfnN0YXJ0ID1cbiAgaWYgVGltZV9ucy4oIDwgKSBzdGFydCBUaW1lX25zLmVwb2NoXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJUaW1pbmdfd2hlZWwuY3JlYXRlIGdvdCBzdGFydCBiZWZvcmUgdGhlIGVwb2NoXCIgKHN0YXJ0IDogVGltZV9ucy50KV07XG4gIGxldCB0ID1cbiAgICB7IGNvbmZpZ1xuICAgIDsgc3RhcnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gPVxuICAgICAgICBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWU6bWF4X3RpbWUgfmFsYXJtX3ByZWNpc2lvbjpjb25maWcuYWxhcm1fcHJlY2lzaW9uXG4gICAgOyBub3cgPSBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG5vd19pbnRlcnZhbF9udW1fc3RhcnQgPVxuICAgICAgICBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPSBtYXhfdGltZSAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBwcmlvcml0eV9xdWV1ZSA9XG4gICAgICAgIFByaW9yaXR5X3F1ZXVlLmNyZWF0ZSA/Y2FwYWNpdHk6Y29uZmlnLmNhcGFjaXR5IH5sZXZlbF9iaXRzOmNvbmZpZy5sZXZlbF9iaXRzICgpXG4gICAgfVxuICBpblxuICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQ7XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fOnN0YXJ0IH5oYW5kbGVfZmlyZWQ6KGZ1biBfIC0+IGFzc2VydCBmYWxzZSk7XG4gIHRcbjs7XG5cbmxldCBhZGRfYXRfaW50ZXJ2YWxfbnVtIHQgfmF0IHZhbHVlID1cbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OmF0XG4gICAgICAgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbiAgICAgICB2YWx1ZSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfdGhhdF9mYXJfaW5fdGhlX2Z1dHVyZSB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIHRoYXQgZmFyIGluIHRoZSBmdXR1cmVcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOih0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgOiBUaW1lX25zLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIGJlZm9yZSBzdGFydCBvZiBjdXJyZW50IGludGVydmFsXCJcbiAgICAgICAgKGF0IDogVGltZV9ucy50KVxuICAgICAgICB+bm93X2ludGVydmFsX251bV9zdGFydDoodC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDogVGltZV9ucy50KV1cbjs7XG5cbmxldCBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0ID1cbiAgaWYgVGltZV9ucy4oID4gKSBhdCB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdGhlbiByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQ7XG4gIGlmIFRpbWVfbnMuKCA8ICkgYXQgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gIHRoZW4gcmFpc2VfYmVmb3JlX3N0YXJ0X29mX2N1cnJlbnRfaW50ZXJ2YWwgdCBhdFxuOztcblxubGV0IGFkZCB0IH5hdCB2YWx1ZSA9XG4gIGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQ7XG4gIEludGVybmFsX2VsdC50b19leHRlcm5hbFxuICAgIChQcmlvcml0eV9xdWV1ZS5pbnRlcm5hbF9hZGRcbiAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgfmtleTooaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IGF0KVxuICAgICAgIH5hdFxuICAgICAgIHZhbHVlKVxuOztcblxubGV0IHJlbW92ZSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUucmVtb3ZlIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cbmxldCBjbGVhciB0ID0gUHJpb3JpdHlfcXVldWUuY2xlYXIgdC5wcmlvcml0eV9xdWV1ZVxubGV0IG1lbSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUubWVtIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cblxubGV0IHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleSB+YXQgPVxuICBpZiBub3QgKG1lbSB0IGFsYXJtKVxuICB0aGVuIGZhaWx3aXRoIFwiVGltaW5nX3doZWVsIGNhbm5vdCByZXNjaGVkdWxlIGFsYXJtIG5vdCBpbiB0aW1pbmcgd2hlZWxcIjtcbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgUHJpb3JpdHlfcXVldWUuY2hhbmdlIHQucHJpb3JpdHlfcXVldWUgYWxhcm0gfmtleSB+YXRcbjs7XG5cbmxldCByZXNjaGVkdWxlIHQgYWxhcm0gfmF0ID0gcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpIH5hdFxuXG5sZXQgcmVzY2hlZHVsZV9hdF9pbnRlcnZhbF9udW0gdCBhbGFybSB+YXQgPVxuICByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6YXQgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAoSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX2ludGVydmFsX251bV9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1pbl9hbGFybV9pbnRlcnZhbF9udW1fZXhuIG9mIGVtcHR5IHRpbWluZ193aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG4gIGVsc2UgSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHRcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1heF9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1pbl9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV07XG4gIG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHRcbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfmhhbmRsZV9maXJlZCA9XG4gIFByaW9yaXR5X3F1ZXVlLmZpcmVfcGFzdF9hbGFybXNcbiAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgfmhhbmRsZV9maXJlZFxuICAgIH5rZXk6KG5vd19pbnRlcnZhbF9udW0gdClcbiAgICB+bm93OnQubm93XG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX2tleV9iaXRzID0gTnVtX2tleV9iaXRzXG5cbiAgbGV0IGludGVydmFsX251bV9pbnRlcm5hbCA9IGludGVydmFsX251bV9pbnRlcm5hbFxuICBsZXQgbWF4X3RpbWUgPSBtYXhfdGltZVxuZW5kXG4iLCJtb2R1bGUgSW5yaWFfc3lzID0gU3lzXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm9wZW4gUG9seVxuXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcblxubW9kdWxlIEVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIEludFxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICAgIGVuZClcblxuICBsZXQgZGVmYXVsdCA9IGNyZWF0ZV9leG4gKDEgbHNsIDE2KVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSB0MSA9IHQyXG5lbmRcblxubW9kdWxlIE1heF9udW1fdGhyZWFkcyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgRHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IHN0cnVjdFxuICBtb2R1bGUgSG93X3RvX2R1bXAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBEZWZhdWx0XG4gICAgICB8IENhbGxfYWJvcnRcbiAgICAgIHwgQ2FsbF9nY29yZVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIHR5cGUgd2F0Y2ggPVxuICAgIHsgZHVtcF9pZl9kZWxheWVkX2J5IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IGhvd190b19kdW1wIDogSG93X3RvX2R1bXAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICB0eXBlIHQgPVxuICAgIHwgV2F0Y2ggb2Ygd2F0Y2hcbiAgICB8IERvX25vdF93YXRjaFxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBEZWJ1Z190YWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBbGxcbiAgICAgIHwgQ2xvY2tcbiAgICAgIHwgRmRcbiAgICAgIHwgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICB8IEZpbmFsaXplcnNcbiAgICAgIHwgSW50ZXJydXB0b3JcbiAgICAgIHwgTW9uaXRvclxuICAgICAgfCBNb25pdG9yX3NlbmRfZXhuXG4gICAgICB8IFBhcmFsbGVsXG4gICAgICB8IFJlYWRlclxuICAgICAgfCBTY2hlZHVsZXJcbiAgICAgIHwgU2h1dGRvd25cbiAgICAgIHwgVGhyZWFkX3Bvb2xcbiAgICAgIHwgVGhyZWFkX3NhZmVcbiAgICAgIHwgV3JpdGVyXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9XG4gICAgWyBBbGxcbiAgICA7IENsb2NrXG4gICAgOyBGZFxuICAgIDsgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgOyBGaW5hbGl6ZXJzXG4gICAgOyBJbnRlcnJ1cHRvclxuICAgIDsgTW9uaXRvclxuICAgIDsgTW9uaXRvcl9zZW5kX2V4blxuICAgIDsgUGFyYWxsZWxcbiAgICA7IFJlYWRlclxuICAgIDsgU2NoZWR1bGVyXG4gICAgOyBTaHV0ZG93blxuICAgIDsgVGhyZWFkX3Bvb2xcbiAgICA7IFRocmVhZF9zYWZlXG4gICAgOyBXcml0ZXJcbiAgICBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfZGVzY3Jfd2F0Y2hlciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEVwb2xsX2lmX3RpbWVyZmRcbiAgICAgIHwgRXBvbGxcbiAgICAgIHwgU2VsZWN0XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9IFsgRXBvbGxfaWZfdGltZXJmZDsgRXBvbGw7IFNlbGVjdCBdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgOiBUaW1lX25zLlNwYW4udCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBjaGVja19pbnZhcmlhbnRzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgOiBGaWxlX2Rlc2NyX3dhdGNoZXIudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzIDogTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV90aHJlYWRzIDogTWF4X251bV90aHJlYWRzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BzZXhwLm9wdGlvbl1cbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIDogRGVidWdfdGFnLnQgbGlzdCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF1cblxubGV0IGVtcHR5ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IE5vbmVcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBOb25lXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IE5vbmVcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gTm9uZVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IE5vbmVcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IE5vbmVcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBOb25lXG4gIDsgbWF4X251bV90aHJlYWRzID0gTm9uZVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gTm9uZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IE5vbmVcbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IE5vbmVcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gTm9uZVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IE5vbmVcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gTm9uZVxuICB9XG47O1xuXG5sZXQgY3JlYXRlXG4gICAgICA/YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/Y2hlY2tfaW52YXJpYW50c1xuICAgICAgP2RldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICAgICAgP2R1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgICAgID9lcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gICAgICA/ZmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICA/bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgICAgID9tYXhfbnVtX3RocmVhZHNcbiAgICAgID9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgICAgP21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gICAgICA/cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gICAgICA/cmVjb3JkX2JhY2t0cmFjZXNcbiAgICAgID9yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gICAgICA/dGltaW5nX3doZWVsX2NvbmZpZ1xuICAgICAgKClcbiAgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplICh3b3JkX3NpemUgOiBXb3JkX3NpemUudCkgPVxuICBsZXQgbW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb24gaW5cbiAgbGV0IGFsYXJtX3ByZWNpc2lvbiwgbGV2ZWxfYml0cyA9XG4gICAgbWF0Y2ggd29yZF9zaXplIHdpdGhcbiAgICB8IFczMiAtPiBBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pbGxpc2Vjb25kLCBbIDEwOyAxMDsgOSBdXG4gICAgfCBXNjQgLT4gQWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpLCBbIDE0OyAxNTsgOTsgNiBdXG4gIGluXG4gIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgfmFsYXJtX3ByZWNpc2lvblxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGxldmVsX2JpdHMpXG4gICAgKClcbjs7XG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdfZm9yX3dvcmRfc2l6ZSBXb3JkX3NpemUud29yZF9zaXplXG47O1xuXG5sZXQgZGVmYXVsdCA9XG4gICgqIEZvciBbZmlsZV9kZXNjcl93YXRjaGVyXSBhbmQgW21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc10gd2UgY2hvb3NlIHRoZSBkZWZhdWx0IGZvciB0aGVcbiAgICAgY29tbW9uIGNhc2UgdGhhdCBbZXBvbGxdIGlzIGF2YWlsYWJsZS4gIFRoZXJlIGlzIHNvbWUgYWRkaXRpb25hbCBjb2RlIGluXG4gICAgIFtBc3luY191bml4LkNvbmZpZ10gdGhhdCBjaGVja3Mgd2hldGhlciBbZXBvbGxdIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSwgYW5kIGlmIG5vdCxcbiAgICAgdXNlcyBbc2VsZWN0XSBhbmQgYSBzbWFsbGVyIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzLiAqKVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyA2MC4pXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgZmFsc2VcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGZhbHNlXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgRG9fbm90X3dhdGNoXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgKEVwb2xsX21heF9yZWFkeV9ldmVudHMuY3JlYXRlX2V4biAyNTYpXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gU29tZSBFcG9sbF9pZl90aW1lcmZkXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNYXhfaW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4wNSkpXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMuZGVmYXVsdFxuICA7IG1heF9udW1fdGhyZWFkcyA9IFNvbWUgKE1heF9udW1fdGhyZWFkcy5jcmVhdGVfZXhuIDUwKVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgIFNvbWUgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gNTAwKVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSAoTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQuY3JlYXRlX2V4biAoc2VjIDAuKSlcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBTb21lIFtdXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIGZhbHNlXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyAxLilcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIEluaGVyaXRcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGV4YW1wbGUgPVxuICB7IGRlZmF1bHQgd2l0aFxuICAgIHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgRGVidWdfdGFnLlsgRmQ7IFNjaGVkdWxlciBdXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID1cbiAgICAgIFNvbWVcbiAgICAgICAgKENwdXNldFxuICAgICAgICAgICAoWyAwOyAxOyAyIF0gfD4gSW50LlNldC5vZl9saXN0IHw+IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS5DcHVzZXQuY3JlYXRlX2V4bikpXG4gIH1cbjs7XG5cbmxldCBlbnZpcm9ubWVudF92YXJpYWJsZSA9IFwiQVNZTkNfQ09ORklHXCJcblxubGV0IGZpZWxkX2Rlc2NyaXB0aW9ucyAoKSA6IHN0cmluZyA9XG4gIGxldCBmaWVsZCB0b19zZXhwIGRlc2NyaXB0aW9uIGFjIGZpZWxkID1cbiAgICAoRmllbGQubmFtZSBmaWVsZCwgdG9fc2V4cCAoT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKSwgZGVzY3JpcHRpb24pXG4gICAgOjogYWNcbiAgaW5cbiAgbGV0IGZpZWxkcyA9XG4gICAgRmllbGRzLmZvbGRcbiAgICAgIH5pbml0OltdXG4gICAgICB+YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHNlbmQgYW4gZXhjZXB0aW9uIHRvIHRoZSB0b3BsZXZlbCBtb25pdG9yXG4gIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgdGhyZWFkIHBvb2wgaXMgc3R1Y2sgZm9yIGxvbmdlciB0aGFuIHRoaXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgY2F1c2VzIEFzeW5jIHRvIHJlZ3VsYXJseSBjaGVjayBpbnZhcmlhbnRzIG9mIGl0cyBpbnRlcm5hbFxuICBkYXRhIHN0cnVjdHVyZXMuICBUaGlzIGNhbiBzdWJzdGFudGlhbGx5IHNsb3cgZG93biB5b3VyIHByb2dyYW0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgcm91dGluZXMgdG8gY2hlY2sgaWYgdGhleSBhcmUgYmVpbmcgYWNjZXNzZWRcbiAgZnJvbSBzb21lIHRocmVhZCBvdGhlciB0aGFuIHRoZSB0aHJlYWQgY3VycmVudGx5IGhvbGRpbmcgdGhlIEFzeW5jXG4gIGxvY2ssIHdoaWNoIGlzIG5vdCBhbGxvd2VkIGFuZCBjYW4gbGVhZCB0byB2ZXJ5IGNvbmZ1c2luZyBiZWhhdmlvci5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZHVtcF9jb3JlX29uX2pvYl9kZWxheTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRHVtcF9jb3JlX29uX2pvYl9kZWxheS50XVxuICAgICAgICAgICBbIHt8XG4gIENhbiBiZSBzZXQgdG8gW0RvX25vdF93YXRjaF0gb3I6XG5cbiAgICAoV2F0Y2ggKChkdW1wX2lmX2RlbGF5ZWRfYnkgU1BBTikgKGhvd190b19kdW1wIEhPVykpKVxuXG4gIElmIHNldCB0byBbV2F0Y2hdLCB0aGVuIG9uIHByb2dyYW0gc3RhcnQgdGhpcyB3aWxsIHN0YXJ0IGEgcmVndWxhclxuICBBc3luYyBqb2IgdGhhdCBpbmNyZW1lbnRzIGEgY291bnRlciwgYW5kIGEgQyB0aHJlYWQgdGhhdCB3aWxsXG4gIGRldGVjdCBpZiB0aGF0IGpvYiBpcyBkZWxheWVkIGJ5IFtkdW1wX2lmX2RlbGF5ZWRfYnldLCBhbmQgaWYgc28sXG4gIHdpbGwgY29yZSBkdW1wIHRoZSBwcm9ncmFtLiAgSWYgYXZhaWxhYmxlLCBbL3Vzci9iaW4vZ2NvcmVdIGlzXG4gIHVzZWQgYnkgZGVmYXVsdCB0byBkdW1wIHRoZSBjb3JlLCB3aGljaCBzaG91bGQgYWxsb3cgdGhlIHByb2dyYW1cbiAgdG8gY29udGludWUgcnVubmluZy4gIE90aGVyd2lzZSwgW2Fib3J0XSB3aWxsIGJlIGNhbGxlZCBmcm9tIEMsXG4gIHdoaWNoIHdpbGwga2lsbCB0aGUgcHJvZ3JhbSB3aGlsZSBjYXVzaW5nIGEgY29yZSBkdW1wLiAgT25lIGNhblxuICBmb3JjZSBbYWJvcnRdIG9yIFtnY29yZV0gdmlhIFtob3dfdG9fZHVtcF0sIHdoaWNoIHNob3VsZCBiZSBvbmUgb2Y6XG4gIFtDYWxsX2Fib3J0XSwgW0NhbGxfZ2NvcmVdLCBvciBbRGVmYXVsdF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmVwb2xsX21heF9yZWFkeV9ldmVudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVhZHkgZXZlbnRzIHRoYXQgQXN5bmMncyBjYWxsIHRvIFtFcG9sbC53YWl0XVxuICB3aWxsIGhhbmRsZS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZmlsZV9kZXNjcl93YXRjaGVyOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBGaWxlX2Rlc2NyX3dhdGNoZXIudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGRldGVybWluZXMgd2hhdCBPUyBzdWJzeXN0ZW0gQXN5bmMgdXNlcyB0byB3YXRjaCBmaWxlIGRlc2NyaXB0b3JzIGZvciBiZWluZyByZWFkeS5cbiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIFtlcG9sbF0gaWYgdGltZXJmZCdzIGFyZSBzdXBwb3J0ZWQgYW5kIGlmIG5vdCwgdXNlIFtzZWxlY3RdLlxuXG4gIEFsbG93ZWQgdmFsdWVzIGFyZTp8fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBGaWxlX2Rlc2NyX3dhdGNoZXIubGlzdCB+ZjpGaWxlX2Rlc2NyX3dhdGNoZXIudG9fc3RyaW5nKVxuICAgICAgICAgICA7IHt8LlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICAoZnVuIGRlZmF1bHQgLT5cbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICAgICAgfl86XG4gICAgICAgICAgICAgICAgICAgIChjb25jYXRcbiAgICAgICAgICAgICAgICAgICAgICAgWyBcIm1pbiBcIlxuICAgICAgICAgICAgICAgICAgICAgICA7IGRlZmF1bHQgfD4gTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnJhdyB8PiBJbnQudG9fc3RyaW5nX2h1bVxuICAgICAgICAgICAgICAgICAgICAgICA7IFwiIFt1bGltaXQgLW4gLUhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgOiBzdHJpbmcpXSlcbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzIGFsbG93ZWQgYXQgYW55IG9uZSB0aW1lLnx9IF0pXG4gICAgICB+bWF4X251bV90aHJlYWRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX3RocmVhZHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyB0aGF0IEFzeW5jIHdpbGwgY3JlYXRlIHRvIGRvIGJsb2NraW5nXG4gIHN5c3RlbSBjYWxscyBhbmQgaGFuZGxlIGNhbGxzIHRvIFtJbl90aHJlYWQucnVuXS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdGhlIHNjaGVkdWxlciB3aWxsIHBhdXNlIGJldHdlZW4gY3ljbGVzXG4gIHdoZW4gaXQgaGFzIG5vIGpvYnMgYW5kIGlzIGdvaW5nIHRvIHdhaXQgZm9yIEkvTy4gIEluIHByaW5jaXBsZSBvbmVcbiAgZG9lc24ndCBuZWVkIHRoaXMsIGFuZCB3ZSBjb3VsZCB1c2UgYW4gaW5maW5pdGUgdGltZW91dC4gIFdlIGluc3RlYWRcbiAgdXNlIGEgc21hbGwgdGltZW91dCAoYnkgZGVmYXVsdCksIHRvIGJlIG1vcmUgcm9idXN0IHRvIGJ1Z3MgdGhhdFxuICBjb3VsZCBwcmV2ZW50IEFzeW5jIGZyb20gd2FraW5nIHVwIGFuZCBzZXJ2aWNpbmcgZXZlbnRzLiAgRm9yXG4gIGV4YW1wbGUsIGFzIG9mIDIwMTMtMDEsIHRoZSBPQ2FtbCBydW50aW1lIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyBpdFxuICB0byBub3QgbmVjZXNzYXJpbHkgcnVuIGFuIE9DYW1sIHNpZ25hbCBoYW5kbGVyIGluIGEgdGltZWx5IG1hbm5lci5cbiAgVGhpcyBpbiB0dXJuIGNhbiBjYXVzZSBhIHNpbXBsZSBBc3luYyBwcm9ncmFtIHRoYXQgaXMgd2FpdGluZyBvbiBhXG4gIHNpZ25hbCB0byBoYW5nLCB3aGVuIGluIGZhY3QgaXQgc2hvdWxkIGhhbmRsZSB0aGUgc2lnbmFsLlxuXG4gIFdlIHVzZSA1MG1zIGFzIHRoZSBkZWZhdWx0IHRpbWVvdXQsIGJlY2F1c2UgaXQgaXMgaW5mcmVxdWVudCBlbm91Z2hcbiAgdG8gaGF2ZSBhIG5lZ2xpZ2libGUgcGVyZm9ybWFuY2UgaW1wYWN0LCBhbmQgZnJlcXVlbnQgZW5vdWdoIHRoYXRcbiAgdGhlIGxhdGVuY3kgd291bGQgdHlwaWNhbGx5IGJlIG5vdCBub3RpY2VhYmxlLiAgQWxzbywgNTBtcyBpcyB3aGF0XG4gIHRoZSBPQ2FtbCB0aWNrZXIgdGhyZWFkIHVzZXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBqb2JzIHRoYXQgd2lsbCBiZSBkb25lIGF0IGVhY2ggcHJpb3JpdHkgd2l0aGluXG4gIGVhY2ggQXN5bmMgY3ljbGUuICBUaGlzIGxpbWl0cyBob3cgbWFueSBqb2JzIHRoZSBzY2hlZHVsZXIgd2lsbCBydW5cbiAgYmVmb3JlIHBhdXNpbmcgdG8gY2hlY2sgZm9yIEkvTy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWluX2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1pbmltdW0gdGltZW91dCB0aGUgc2NoZWR1bGVyIHdpbGwgcGFzcyB0byB0aGUgT1Mgd2hlbiBpdCBjaGVja3NcbiAgZm9yIEkvTyBiZXR3ZWVuIGN5Y2xlcy4gIFRoaXMgaXMgemVybyBieSBkZWZhdWx0LiAgU2V0dGluZyBpdCB0byBhXG4gIG5vbnplcm8gdmFsdWUgaXMgdXNlZCB0byBpbmNyZWFzZSB0aHJlYWQgZmFpcm5lc3MgYmV0d2VlbiB0aGUgc2NoZWR1bGVyXG4gIGFuZCBvdGhlciB0aHJlYWRzLiAgQSBwbGF1c2libGUgc2V0dGluZyBpcyAxdXMuICBUaGlzIGlzIGFsc29cbiAgY29uZmlndXJhYmxlIGluIE9DYW1sIHZpYSBbU2NoZWR1bGVyLnNldF9taW5faW50ZXJfY3ljbGVfdGltZW91dF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRGVidWdfdGFnLnQgbGlzdF1cbiAgICAgICAgICAgWyB7fFxuICBBIGxpc3Qgb2YgdGFncyBzcGVjaWZ5aW5nIHdoaWNoIEFzeW5jIGZ1bmN0aW9ucyBzaG91bGQgcHJpbnQgZGVidWdcbiAgbWVzc2FnZXMgdG8gc3RkZXJyLiAgRWFjaCB0YWcgaWRlbnRpZmllcyBhIGdyb3VwIG9mIHJlbGF0ZWQgQXN5bmNcbiAgZnVuY3Rpb25zLiAgVGhlIHRhZyBbYWxsXSBtZWFucyB0byBwcmludCBkZWJ1ZyBtZXNzYWdlcyBmb3IgYWxsXG4gIGZ1bmN0aW9ucy4gIEFsbG93ZWQgdmFsdWVzIGFyZTpcblxufH1cbiAgICAgICAgICAgOyBjb25jYXRcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBEZWJ1Z190YWcubGlzdCB+ZjooZnVuIGQgLT5cbiAgICAgICAgICAgICAgICAgIGNvbmNhdCBbIFwiICAgIFwiOyBEZWJ1Z190YWcudG9fc3RyaW5nIGQ7IFwiXFxuXCIgXSkpXG4gICAgICAgICAgIDsge3xcbiAgVHVybmluZyBvbiBkZWJ1ZyBtZXNzYWdlcyB3aWxsIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIG1vc3QgcHJvZ3JhbXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlY29yZF9iYWNrdHJhY2VzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIHRoaXMgd2lsbCBjYXVzZSBBc3luYyB0byBrZWVwIGluIHRoZSBleGVjdXRpb24gY29udGV4dCB0aGVcbiAgaGlzdG9yeSBvZiBzdGFjayBiYWNrdHJhY2VzIChvYnRhaW5lZCB2aWEgW0JhY2t0cmFjZS5nZXRdKSB0aGF0IGxlZFxuICB0byB0aGUgY3VycmVudCBqb2IuICBJZiBhbiBBc3luYyBqb2IgaGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24sXG4gIHRoaXMgYmFja3RyYWNlIGhpc3Rvcnkgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUgZXhjZXB0aW9uLiAgSW5cbiAgcGFydGljdWxhciB0aGUgaGlzdG9yeSB3aWxsIGFwcGVhciBpbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIHRoYXRcbiAgcmVhY2hlcyB0aGUgbWFpbiBtb25pdG9yLiAgVGhpcyBjYW4gaGF2ZSBhIHN1YnN0YW50aWFsIHBlcmZvcm1hbmNlXG4gIGltcGFjdCwgYm90aCBpbiBydW5uaW5nIHRpbWUgYW5kIHNwYWNlIHVzYWdlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHByaW50IGEgbWVzc2FnZSB0byBzdGRlcnIgZXZlcnkgc2Vjb25kIGlmXG4gIHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkudF1cbiAgICAgICAgICAgWyB7fFxuICAgV2hldGhlciBhbmQgaG93IHRocmVhZHMgaW4gdGhlIHRocmVhZCBwb29sIHNob3VsZCBiZSBhZmZpbml0aXplZCB0byBDUFVzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aW1pbmdfd2hlZWxfY29uZmlnOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhpcyBpcyB1c2VkIHRvIGFkanVzdCB0aGUgdGltZS9zcGFjZSB0cmFkZW9mZiBpbiB0aGUgdGltaW5nIHdoZWVsXG4gIHVzZWQgdG8gaW1wbGVtZW50IEFzeW5jJ3MgY2xvY2suICBUaW1lIGlzIHNwbGl0IGludG8gaW50ZXJ2YWxzIG9mXG4gIHNpemUgW2FsYXJtX3ByZWNpc2lvbl0sIGFuZCBhbGFybXMgd2l0aCB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbFxuICBmaXJlIGluIHRoZSBzYW1lIGN5Y2xlLiAgTGV2ZWwgW2ldIGluIHRoZSB0aW1pbmcgd2hlZWwgaGFzIGFuXG4gIGFycmF5IG9mIHNpemUgWzJeYl0sIHdoZXJlIFtiXSBpcyB0aGUgW2ldJ3RoIGVudHJ5IGluIFtsZXZlbF9iaXRzXS5cbnx9XG4gICAgICAgICAgIF0pXG4gIGluXG4gIGNvbmNhdFxuICAgIChMaXN0Lm1hcFxuICAgICAgIChMaXN0LnNvcnQgZmllbGRzIH5jb21wYXJlOihmdW4gKG5hbWUxLCBfLCBfKSAobmFtZTIsIF8sIF8pIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbXBhcmUgbmFtZTEgbmFtZTIpKVxuICAgICAgIH5mOihmdW4gKG5hbWUsIGRlZmF1bHQsIGRlc2NyaXB0aW9uKSAtPlxuICAgICAgICAgY29uY2F0XG4gICAgICAgICAgIChcIlxcblwiIDo6IG5hbWUgOjogXCIgKGRlZmF1bHQgXCIgOjogU2V4cC50b19zdHJpbmcgZGVmYXVsdCA6OiBcIilcIiA6OiBkZXNjcmlwdGlvbikpKVxuOztcblxubGV0IGhlbHBfbWVzc2FnZSAoKSA9XG4gIGNvbmNhdFxuICAgIFsgXCJUaGUgXCJcbiAgICA7IGVudmlyb25tZW50X3ZhcmlhYmxlXG4gICAgOyB7fCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhZmZlY3RzIEFzeW5jXG5pbiB2YXJpb3VzIHdheXMuICBJdHMgdmFsdWUgc2hvdWxkIGJlIGEgc2V4cCBvZiB0aGUgZm9sbG93aW5nIGZvcm0sXG53aGVyZSBhbGwgZmllbGRzIGFyZSBvcHRpb25hbDpcblxufH1cbiAgICA7IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IGV4YW1wbGUpXG4gICAgOyB7fFxuXG5IZXJlIGlzIGFuIGV4cGxhbmF0aW9uIG9mIGVhY2ggZmllbGQuXG58fVxuICAgIDsgZmllbGRfZGVzY3JpcHRpb25zICgpXG4gICAgXVxuOztcblxubGV0IHVzYWdlICgpID1cbiAgZXByaW50ZiBcIiVzJSFcIiAoaGVscF9tZXNzYWdlICgpKTtcbiAgZXhpdCAxXG47O1xuXG5sZXQgdCA9XG4gIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IElucmlhX3N5cy5nZXRlbnYgZW52aXJvbm1lbnRfdmFyaWFibGUpIHdpdGhcbiAgfCBOb25lIC0+IGVtcHR5XG4gIHwgU29tZSBcIlwiIC0+IHVzYWdlICgpXG4gIHwgU29tZSBzdHJpbmcgLT5cbiAgICAobWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gdF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBzdHJpbmcpKSB3aXRoXG4gICAgIHwgT2sgdCAtPiB0XG4gICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgZXByaW50ZlxuICAgICAgICAgXCIlc1xcblxcblwiXG4gICAgICAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAoRXJyb3Iuc2V4cF9vZl90XG4gICAgICAgICAgICAgICAoRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgXCJpbnZhbGlkIHZhbHVlIGZvciAlcyBlbnZpcm9ubWVudCB2YXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudF92YXJpYWJsZSlcbiAgICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgICAgWyVzZXhwX29mOiBleG5dKSkpO1xuICAgICAgIHVzYWdlICgpKVxuOztcblxubW9kdWxlIFByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHN0cnVjdFxuICBsZXQgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZyA9XG4gICAgbWF0Y2ggdC5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBsIC0+IExpc3QubWVtIGwgdGFnIH5lcXVhbDpEZWJ1Z190YWcuZXF1YWxcbiAgOztcblxuICBsZXQgYWxsID0gcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIEFsbFxuICBsZXQgZGVidWcgdGFnID0gYWxsIHx8IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB0YWdcbiAgbGV0IGNsb2NrID0gZGVidWcgQ2xvY2tcbiAgbGV0IGZkID0gZGVidWcgRmRcbiAgbGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IGRlYnVnIEZpbGVfZGVzY3Jfd2F0Y2hlclxuICBsZXQgZmluYWxpemVycyA9IGRlYnVnIEZpbmFsaXplcnNcbiAgbGV0IGludGVycnVwdG9yID0gZGVidWcgSW50ZXJydXB0b3JcbiAgbGV0IG1vbml0b3IgPSBkZWJ1ZyBNb25pdG9yXG4gIGxldCBtb25pdG9yX3NlbmRfZXhuID0gZGVidWcgTW9uaXRvcl9zZW5kX2V4blxuICBsZXQgcGFyYWxsZWwgPSBkZWJ1ZyBQYXJhbGxlbFxuICBsZXQgcmVhZGVyID0gZGVidWcgUmVhZGVyXG4gIGxldCBzY2hlZHVsZXIgPSBkZWJ1ZyBTY2hlZHVsZXJcbiAgbGV0IHNodXRkb3duID0gZGVidWcgU2h1dGRvd25cbiAgbGV0IHRocmVhZF9wb29sID0gZGVidWcgVGhyZWFkX3Bvb2xcbiAgbGV0IHRocmVhZF9zYWZlID0gZGVidWcgVGhyZWFkX3NhZmVcbiAgbGV0IHdyaXRlciA9IGRlYnVnIFdyaXRlclxuZW5kXG5cbmxldCAoICEhICkgZmllbGQgPVxuICBPcHRpb24udmFsdWUgKEZpZWxkLmdldCBmaWVsZCB0KSB+ZGVmYXVsdDooT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKVxuOztcblxubGV0IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLmFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IGNoZWNrX2ludmFyaWFudHMgPSAhIUZpZWxkcy5jaGVja19pbnZhcmlhbnRzXG5sZXQgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gISFGaWVsZHMuZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG5sZXQgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9ICEhRmllbGRzLmVwb2xsX21heF9yZWFkeV9ldmVudHNcbmxldCB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSAhIUZpZWxkcy50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbmxldCBmaWxlX2Rlc2NyX3dhdGNoZXIgPSAhIUZpZWxkcy5maWxlX2Rlc2NyX3dhdGNoZXJcbmxldCBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9ICEhRmllbGRzLm1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG5sZXQgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gISFGaWVsZHMubWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG5sZXQgbWF4X251bV90aHJlYWRzID0gISFGaWVsZHMubWF4X251bV90aHJlYWRzXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSAhIUZpZWxkcy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxubGV0IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCByZWNvcmRfYmFja3RyYWNlcyA9ICEhRmllbGRzLnJlY29yZF9iYWNrdHJhY2VzXG5sZXQgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbmxldCB0aW1pbmdfd2hlZWxfY29uZmlnID0gISFGaWVsZHMudGltaW5nX3doZWVsX2NvbmZpZ1xubGV0IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSAhIUZpZWxkcy5kdW1wX2NvcmVfb25fam9iX2RlbGF5XG5cbmxldCB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBTb21lIGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBTb21lIGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBTb21lIGVwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IFNvbWUgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IFNvbWUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gU29tZSByZWNvcmRfYmFja3RyYWNlc1xuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSB0aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCB0YXNrX2lkID0gcmVmIChmdW4gKCkgLT4gU2V4cC5BdG9tIFwiPG5vIHRhc2sgaWQ+XCIpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgcmVmXG5cbigqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBPcHRpb25fYXJyYXkuQ2hlYXBfb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlclxuICAgcGxhY2Ugd2hlcmUgd2Ugd2FudCBpdCB3ZSBzaG91bGQgcmVjb25zaWRlciBtYWtpbmcgaXQgc2hhcmVkLiAqKVxubGV0IG5vbmUgPSBPYmoub2JqIChPYmoubmV3X2Jsb2NrIE9iai5hYnN0cmFjdF90YWcgMSlcbmxldCBjcmVhdGUgKCkgPSByZWYgbm9uZVxubGV0IGlzX25vbmUgeCA9IHBoeXNfZXF1YWwgIXggbm9uZVxubGV0IGlzX3NvbWUgeCA9IG5vdCAoaXNfbm9uZSB4KVxubGV0IGdldF9zb21lX2V4biB4ID0gaWYgaXNfbm9uZSB4IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb3B0aW9uLmdldF9zb21lX2V4blwiXSBlbHNlICF4XG5sZXQgZ2V0IHQgPSBpZiBpc19ub25lIHQgdGhlbiBOb25lIGVsc2UgU29tZSAhdFxubGV0IHVuc2FmZV9nZXQgdCA9ICF0XG5sZXQgc2V0X3NvbWUgdCB2ID0gdCA6PSB2XG5sZXQgc2V0X25vbmUgdCA9IHQgOj0gbm9uZVxuXG5sZXQgc2V0IHQgdiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE5vbmUgLT4gc2V0X25vbmUgdFxuICB8IFNvbWUgdiAtPiBzZXRfc29tZSB0IHZcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKGdldCB0IDogYSBvcHRpb24pXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIE9wdGlvbi5pdGVyIChnZXQgdCkgfmY6aW52YXJpYW50X2EpXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX2dldFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgUG9pbnRlciA9IFBvb2wuUG9pbnRlclxuXG4oKiBUaGlzIHBvb2wgaG9sZHMgbm9kZXMgdGhhdCB3b3VsZCBiZSByZXByZXNlbnRlZCBtb3JlIHRyYWRpdGlvbmFsbHkgYXM6XG5cbiAgIHtbXG4gICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgfCBFbXB0eVxuICAgICAgIHwgSGVhcCBvZiAnYSAqICdhIHQgbGlzdCBdfVxuXG4gICBXZSB3aWxsIHJlcHJlc2VudCB0aGVtIGFzIGEgbGVmdC1jaGlsZCwgcmlnaHQtc2libGluZyB0cmVlIGluIGEgdHJpcGxldFxuICAgKHZhbHVlICogbGVmdF9jaGlsZCAqIHJpZ2h0X3NpYmxpbmcpLiAgVGhlIGxlZnQgY2hpbGQgYW5kIGFsbCByaWdodCBzaWJsaW5nc1xuICAgb2YgdGhlIGxlZnQgY2hpbGQgZm9ybSBhIGxpbmtlZCBsaXN0IHJlcHJlc2VudGluZyB0aGUgc3ViaGVhcHMgb2YgYSBnaXZlbiBoZWFwOlxuXG4gICB7dlxuICAgICAgICAgQVxuICAgICAgICAvXG4gICAgICAgQiAtPiBDIC0+IEQgLT4gRSAtPiBGXG4gICAgICAvICAgICAgICAgLyAgICAgICAgIC9cbiAgICAgRyAgICAgICAgIEgtPkktPkogICBLLT5MXG4gICB2fSAqKVxuXG5tb2R1bGUgTm9kZSA6IHNpZ1xuICAoKiBFeHBvc2luZyBbcHJpdmF0ZSBpbnRdIGlzIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGJlY2F1c2UgaXQgYWxsb3dzXG4gICAgIHRoZSBjb21waWxlciB0byBza2lwIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuXG4gIHR5cGUgJ2EgdCA9IHByaXZhdGUgaW50XG5cbiAgbW9kdWxlIElkIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjcmVhdGUgOiBtaW5fc2l6ZTppbnQgLT4gJ2EgdFxuICAgIHZhbCBpc19mdWxsIDogJ2EgdCAtPiBib29sXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIGdyb3cgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2Egbm9kZSAtPiAnYSBub2RlICogJ2EgdFxuICBlbmRcblxuICAoKiogW2FsbG9jYXRlIHYgfnBvb2xdIGFsbG9jYXRlcyBhIG5ldyBub2RlIGZyb20gdGhlIHBvb2wgd2l0aCBubyBjaGlsZCBvciBzaWJsaW5nICopXG4gIHZhbCBhbGxvY2F0ZSA6ICdhIC0+IHBvb2w6J2EgUG9vbC50IC0+IGlkOklkLnQgLT4gJ2EgdFxuXG4gICgqKiBbZnJlZSB0IH5wb29sXSBmcmVlcyBbdF0gZm9yIHJldXNlLiAgSXQgaXMgYW4gZXJyb3IgdG8gYWNjZXNzIFt0XSBhZnRlciB0aGlzLiAqKVxuICB2YWwgZnJlZSA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBhIHNwZWNpYWwgW3RdIHRoYXQgcmVwcmVzZW50cyB0aGUgZW1wdHkgbm9kZSAqKVxuICB2YWwgZW1wdHkgOiB1bml0IC0+ICdhIHRcblxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICAoKiogW3ZhbHVlX2V4biB0IH5wb29sXSByZXR1cm4gdGhlIHZhbHVlIG9mIFt0XSwgcmFpc2UgaWYgW2lzX2VtcHR5IHRdICopXG4gIHZhbCB2YWx1ZV9leG4gOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhXG5cbiAgdmFsIGlkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiBJZC50XG4gIHZhbCBjaGlsZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuICB2YWwgc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbcHJldiB0XSBpcyBlaXRoZXIgdGhlIHBhcmVudCBvZiBbdF0gb3IgdGhlIHNpYmxpbmcgaW1tZWRpYXRlbHkgbGVmdCBvZiBbdF0gKilcbiAgdmFsIHByZXYgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2FkZF9jaGlsZCB0IH5jaGlsZCB+cG9vbF0gQWRkIGEgY2hpbGQgdG8gW3RdLCBwcmVzZXJ2aW5nIGV4aXN0aW5nIGNoaWxkcmVuIGFzXG4gICAgICBzaWJsaW5ncyBvZiBbY2hpbGRdLiBbdF0gYW5kIFtjaGlsZF0gc2hvdWxkIG5vdCBiZSBlbXB0eSBhbmQgW2NoaWxkXSBzaG91bGQgaGF2ZSBub1xuICAgICAgc2libGluZyBhbmQgaGF2ZSBubyBwcmV2IG5vZGUuICopXG4gIHZhbCBhZGRfY2hpbGQgOiAnYSB0IC0+IGNoaWxkOidhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIHNpYmxpbmcgKilcbiAgdmFsIGRpc2Nvbm5lY3Rfc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIGNoaWxkICopXG4gIHZhbCBkaXNjb25uZWN0X2NoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtkZXRhY2ggdCB+cG9vbF0gcmVtb3ZlcyBbdF0gZnJvbSB0aGUgdHJlZSwgYWRqdXN0aW5nIHBvaW50ZXJzIGFyb3VuZCBpdC4gQWZ0ZXJcbiAgICAgIFtkZXRhY2hdLCBbdF0gaXMgdGhlIHJvb3Qgb2YgYSBzdGFuZGFsb25lIGhlYXAsIHdoaWNoIGlzIGRldGFjaGVkIGZyb20gdGhlIG9yaWdpbmFsXG4gICAgICBoZWFwLiAqKVxuICB2YWwgZGV0YWNoIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIElkID0gSW50XG5cbiAgbGV0IGR1bW15X2lkIDogSWQudCA9IC0xXG5cbiAgdHlwZSAnYSBub2RlID1cbiAgICAoJ2EsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgJ2Egbm9kZSBQb2ludGVyLnQsIElkLnQpIFBvb2wuU2xvdHMudDVcblxuICB0eXBlICdhIHQgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gIGxldCBlbXB0eSA9IFBvaW50ZXIubnVsbFxuICBsZXQgaXNfZW1wdHkgPSBQb2ludGVyLmlzX251bGxcbiAgbGV0IGVxdWFsID0gUG9pbnRlci5waHlzX2VxdWFsXG4gIGxldCB2YWx1ZSB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MFxuICBsZXQgY2hpbGQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDFcbiAgbGV0IHNpYmxpbmcgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDJcbiAgbGV0IHByZXYgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDNcbiAgbGV0IGlkIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQ0XG5cbiAgKCogbGV0IHNldF92YWx1ZSAgIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDAgdiAqKVxuICBsZXQgc2V0X2NoaWxkIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDEgdlxuICBsZXQgc2V0X3NpYmxpbmcgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MiB2XG4gIGxldCBzZXRfcHJldiB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQzIHZcblxuICBsZXQgdmFsdWVfZXhuIHQgfnBvb2wgPVxuICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgdmFsdWUgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBhbGxvY2F0ZSB2YWx1ZSB+cG9vbCB+aWQgPSBQb29sLm5ldzUgcG9vbCB2YWx1ZSAoZW1wdHkgKCkpIChlbXB0eSAoKSkgKGVtcHR5ICgpKSBpZFxuICBsZXQgZnJlZSB0IH5wb29sID0gUG9vbC51bnNhZmVfZnJlZSBwb29sIHRcblxuICBsZXQgZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgPVxuICAgIGxldCBzaWJsaW5nID0gc2libGluZyB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKVxuICAgIHRoZW4gKFxuICAgICAgc2V0X3NpYmxpbmcgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgc2libGluZyAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBzaWJsaW5nXG4gIDs7XG5cbiAgbGV0IGRpc2Nvbm5lY3RfY2hpbGQgdCB+cG9vbCA9XG4gICAgbGV0IGNoaWxkID0gY2hpbGQgdCB+cG9vbCBpblxuICAgIGlmIG5vdCAoaXNfZW1wdHkgY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfY2hpbGQgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgY2hpbGQgKGVtcHR5ICgpKSB+cG9vbCk7XG4gICAgY2hpbGRcbiAgOztcblxuICBsZXQgYWRkX2NoaWxkIHQgfmNoaWxkOm5ld19jaGlsZCB+cG9vbCA9XG4gICAgKCogYXNzZXJ0aW9ucyB3ZSB3b3VsZCBtYWtlLCBidXQgZm9yIHNwZWVkOlxuICAgICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IG5ld19jaGlsZCkpO1xuICAgICAgIGFzc2VydCAoaXNfZW1wdHkgKHNpYmxpbmcgbmV3X2NoaWxkIH5wb29sKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAocHJldiBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAqKVxuICAgIGxldCBjdXJyZW50X2NoaWxkID0gZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sIGluXG4gICAgKCogYWRkIFtuZXdfY2hpbGRdIHRvIHRoZSBsaXN0IG9mIFt0XSdzIGNoaWxkcmVuICh3aGljaCBtYXkgYmUgZW1wdHkpICopXG4gICAgc2V0X3NpYmxpbmcgbmV3X2NoaWxkIGN1cnJlbnRfY2hpbGQgfnBvb2w7XG4gICAgaWYgbm90IChpc19lbXB0eSBjdXJyZW50X2NoaWxkKSB0aGVuIHNldF9wcmV2IGN1cnJlbnRfY2hpbGQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9jaGlsZCB0IG5ld19jaGlsZCB+cG9vbDtcbiAgICBzZXRfcHJldiBuZXdfY2hpbGQgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBkZXRhY2ggdCB+cG9vbCA9XG4gICAgaWYgbm90IChpc19lbXB0eSB0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByZXYgPSBwcmV2IHQgfnBvb2wgaW5cbiAgICAgIGlmIG5vdCAoaXNfZW1wdHkgcHJldilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcmVsYXRpb25fdG9fcHJldiA9IGlmIGVxdWFsIHQgKGNoaWxkIHByZXYgfnBvb2wpIHRoZW4gYGNoaWxkIGVsc2UgYHNpYmxpbmcgaW5cbiAgICAgICAgc2V0X3ByZXYgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgICBsZXQgc2libGluZyA9IGRpc2Nvbm5lY3Rfc2libGluZyB0IH5wb29sIGluXG4gICAgICAgIChtYXRjaCByZWxhdGlvbl90b19wcmV2IHdpdGhcbiAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBwcmV2IHNpYmxpbmcgfnBvb2xcbiAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgcHJldiBzaWJsaW5nIH5wb29sKTtcbiAgICAgICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKSB0aGVuIHNldF9wcmV2IHNpYmxpbmcgcHJldiB+cG9vbCkpXG4gIDs7XG5cbiAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBub2RlIFBvb2wudFxuICAgIHR5cGUgbm9ucmVjICdhIG5vZGUgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+bWluX3NpemU6Y2FwYWNpdHkgOiBhIHQgPVxuICAgICAgUG9vbC5jcmVhdGVcbiAgICAgICAgUG9vbC5TbG90cy50NVxuICAgICAgICB+Y2FwYWNpdHlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgICggKE9iai5tYWdpYyBOb25lIDogYSlcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIGR1bW15X2lkIClcbiAgICA7O1xuXG4gICAgbGV0IGlzX2Z1bGwgdCA9IFBvb2wuaXNfZnVsbCB0XG4gICAgbGV0IGxlbmd0aCB0ID0gUG9vbC5sZW5ndGggdFxuICAgIGxldCBncm93IHQgPSBQb29sLmdyb3cgdFxuXG4gICAgbGV0IGNvcHkgdCBzdGFydCA9XG4gICAgICBsZXQgdCcgPSBjcmVhdGUgfm1pbl9zaXplOihQb29sLmNhcGFjaXR5IHQpIGluXG4gICAgICBsZXQgY29weV9ub2RlIG5vZGUgdG9fdmlzaXQgPVxuICAgICAgICBpZiBpc19lbXB0eSBub2RlXG4gICAgICAgIHRoZW4gZW1wdHkgKCksIHRvX3Zpc2l0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHdlIHVzZSB0aGUgc2FtZSBpZCwgYnV0IHRoYXQncyBvayBzaW5jZSBpZHMgc2hvdWxkIGJlIHVuaXF1ZSBwZXIgaGVhcCAqKVxuICAgICAgICAgIGxldCBuZXdfbm9kZSA9XG4gICAgICAgICAgICBhbGxvY2F0ZSAodmFsdWVfZXhuIG5vZGUgfnBvb2w6dCkgfnBvb2w6dCcgfmlkOihpZCBub2RlIH5wb29sOnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdG9fdmlzaXQgPVxuICAgICAgICAgICAgKG5ld19ub2RlLCBgY2hpbGQsIGNoaWxkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICAgIDo6IChuZXdfbm9kZSwgYHNpYmxpbmcsIHNpYmxpbmcgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogdG9fdmlzaXRcbiAgICAgICAgICBpblxuICAgICAgICAgIG5ld19ub2RlLCB0b192aXNpdClcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgICAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCAobm9kZV90b191cGRhdGUsIHNsb3QsIG5vZGVfdG9fY29weSkgOjogcmVzdCAtPlxuICAgICAgICAgIGxldCBuZXdfbm9kZSwgdG9fdmlzaXQgPSBjb3B5X25vZGUgbm9kZV90b19jb3B5IHJlc3QgaW5cbiAgICAgICAgICAobWF0Y2ggc2xvdCB3aXRoXG4gICAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBub2RlX3RvX3VwZGF0ZSBuZXdfbm9kZSB+cG9vbDp0J1xuICAgICAgICAgICB8IGBzaWJsaW5nIC0+IHNldF9zaWJsaW5nIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnKTtcbiAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IG5ld19ub2RlKSB0aGVuIHNldF9wcmV2IG5ld19ub2RlIG5vZGVfdG9fdXBkYXRlIH5wb29sOnQnO1xuICAgICAgICAgIGxvb3AgdG9fdmlzaXRcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3N0YXJ0LCB0b192aXNpdCA9IGNvcHlfbm9kZSBzdGFydCBbXSBpblxuICAgICAgbG9vcCB0b192aXNpdDtcbiAgICAgIG5ld19zdGFydCwgdCdcbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7ICgqIGNtcCBpcyBwbGFjZWQgZmlyc3QgdG8gc2hvcnQtY2lyY3VpdCBwb2x5bW9ycGhpYyBjb21wYXJlICopXG4gICAgY21wIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgbXV0YWJsZSBwb29sIDogJ2EgTm9kZS5Qb29sLnRcbiAgOyAoKiBpbnZhcmlhbnQ6ICBbcm9vdF0gbmV2ZXIgaGFzIGEgc2libGluZyAqKVxuICAgIG11dGFibGUgcm9vdCA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyA6IGludFxuICB9XG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgKG5vZGUsIGV4cGVjdGVkX3ByZXYsIG1heWJlX3BhcmVudF92YWx1ZSkgOjogcmVzdCAtPlxuICAgICAgaWYgbm90IChOb2RlLmlzX2VtcHR5IG5vZGUpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRoaXNfdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbCBpblxuICAgICAgICBhc3NlcnQgKE5vZGUuZXF1YWwgKE5vZGUucHJldiBub2RlIH5wb29sOnQucG9vbCkgZXhwZWN0ZWRfcHJldik7XG4gICAgICAgIE9wdGlvbi5pdGVyIG1heWJlX3BhcmVudF92YWx1ZSB+ZjooZnVuIHBhcmVudF92YWx1ZSAtPlxuICAgICAgICAgIGFzc2VydCAodC5jbXAgcGFyZW50X3ZhbHVlIHRoaXNfdmFsdWUgPD0gMCkpO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKChOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sLCBub2RlLCBTb21lIHRoaXNfdmFsdWUpXG4gICAgICAgICAgIDo6IChOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIG1heWJlX3BhcmVudF92YWx1ZSlcbiAgICAgICAgICAgOjogcmVzdCkpXG4gICAgICBlbHNlIGxvb3AgcmVzdFxuICBpblxuICBhc3NlcnQgKE5vZGUuaXNfZW1wdHkgdC5yb290IHx8IE5vZGUuaXNfZW1wdHkgKE5vZGUuc2libGluZyB0LnJvb3QgfnBvb2w6dC5wb29sKSk7XG4gIGxvb3AgWyB0LnJvb3QsIE5vZGUuZW1wdHkgKCksIE5vbmUgXVxuOztcblxubGV0IGNyZWF0ZSA/KG1pbl9zaXplID0gMSkgfmNtcCAoKSA9XG4gIHsgY21wXG4gIDsgcG9vbCA9IE5vZGUuUG9vbC5jcmVhdGUgfm1pbl9zaXplXG4gIDsgcm9vdCA9IE5vZGUuZW1wdHkgKClcbiAgOyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzID0gMFxuICB9XG47O1xuXG5sZXQgY29weSB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9ID1cbiAgbGV0IHJvb3QsIHBvb2wgPSBOb2RlLlBvb2wuY29weSBwb29sIHJvb3QgaW5cbiAgeyBjbXA7IHBvb2w7IHJvb3Q7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgfVxuOztcblxubGV0IGFsbG9jYXRlIHQgdiA9XG4gIGlmIE5vZGUuUG9vbC5pc19mdWxsIHQucG9vbCB0aGVuIHQucG9vbCA8LSBOb2RlLlBvb2wuZ3JvdyB0LnBvb2w7XG4gIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyA8LSB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgKyAxO1xuICBOb2RlLmFsbG9jYXRlIHYgfnBvb2w6dC5wb29sIH5pZDooTm9kZS5JZC5vZl9pbnQgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCByb290MSwgcm9vdDIgd2l0aFxuICAgICB8IE5vbmUsIGggfCBoLCBOb25lIC0+IGhcbiAgICAgfCBTb21lIChOb2RlICh2MSwgY2hpbGRyZW4xKSksIFNvbWUgKE5vZGUgKHYyLCBjaGlsZHJlbjIpKSAtPlxuICAgICAgIGlmIHYxIDwgdjJcbiAgICAgICB0aGVuIFNvbWUgKE5vZGUgKHYxLCByb290MiA6OiBjaGlsZHJlbjEpKVxuICAgICAgIGVsc2UgU29tZSAoTm9kZSAodjIsIHJvb3QxIDo6IGNoaWxkcmVuMikpXG4gICBdfVxuXG4gICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgbmVpdGhlciByb290IGhhcyBhIHByZXYgbm9kZSAodXN1YWxseSBiZWNhdXNlIHRoZSBpbnB1dHMgY29tZVxuICAgZnJvbSBbZGlzY29ubmVjdF8qXSBvciBhcmUgdGhlIHRvcCBvZiB0aGUgaGVhcCBvciBhcmUgdGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uKS4gKilcbmxldCBtZXJnZSB0IHJvb3QxIHJvb3QyID1cbiAgaWYgTm9kZS5pc19lbXB0eSByb290MVxuICB0aGVuIHJvb3QyXG4gIGVsc2UgaWYgTm9kZS5pc19lbXB0eSByb290MlxuICB0aGVuIHJvb3QxXG4gIGVsc2UgKFxuICAgIGxldCBhZGRfY2hpbGQgdCBub2RlIH5jaGlsZCA9XG4gICAgICBOb2RlLmFkZF9jaGlsZCBub2RlIH5wb29sOnQucG9vbCB+Y2hpbGQ7XG4gICAgICBub2RlXG4gICAgaW5cbiAgICBsZXQgdjEgPSBOb2RlLnZhbHVlX2V4biByb290MSB+cG9vbDp0LnBvb2wgaW5cbiAgICBsZXQgdjIgPSBOb2RlLnZhbHVlX2V4biByb290MiB+cG9vbDp0LnBvb2wgaW5cbiAgICBpZiB0LmNtcCB2MSB2MiA8IDBcbiAgICB0aGVuIGFkZF9jaGlsZCB0IHJvb3QxIH5jaGlsZDpyb290MlxuICAgIGVsc2UgYWRkX2NoaWxkIHQgcm9vdDIgfmNoaWxkOnJvb3QxKVxuOztcblxubGV0IHRvcF9leG4gdCA9XG4gIGlmIE5vZGUuaXNfZW1wdHkgdC5yb290XG4gIHRoZW4gZmFpbHdpdGggXCJIZWFwLnRvcF9leG4gY2FsbGVkIG9uIGFuIGVtcHR5IGhlYXBcIlxuICBlbHNlIE5vZGUudmFsdWVfZXhuIHQucm9vdCB+cG9vbDp0LnBvb2xcbjs7XG5cbmxldCB0b3AgdCA9IGlmIE5vZGUuaXNfZW1wdHkgdC5yb290IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvcF9leG4gdClcblxubGV0IGFkZF9ub2RlIHQgdiA9XG4gIGxldCBub2RlID0gYWxsb2NhdGUgdCB2IGluXG4gIHQucm9vdCA8LSBtZXJnZSB0IHQucm9vdCBub2RlO1xuICBub2RlXG47O1xuXG5sZXQgYWRkIHQgdiA9IGlnbm9yZSAoYWRkX25vZGUgdCB2IDogXyBOb2RlLnQpXG5cbigqIFttZXJnZV9wYWlyc10gdGFrZXMgYSBsaXN0IG9mIGhlYXAgcm9vdHMgYW5kIG1lcmdlcyBjb25zZWN1dGl2ZSBwYWlycywgcmVkdWNpbmcgdGhlXG4gICBsaXN0IG9mIGxlbmd0aCBuIHRvIG4vMi4gIFRoZW4gaXQgbWVyZ2VzIHRoZSBtZXJnZWQgcGFpcnMgaW50byBhIHNpbmdsZSBoZWFwLiAgT25lXG4gICBpbnR1aXRpb24gaXMgdGhhdCB0aGlzIGlzIHNvbWV3aGF0IGxpa2UgYnVpbGRpbmcgYSBzaW5nbGUgbGV2ZWwgb2YgYSBiaW5hcnkgdHJlZS5cblxuICAgVGhlIG91dHB1dCBoZWFwIGRvZXMgbm90IGNvbnRhaW4gdGhlIHZhbHVlIHRoYXQgd2FzIGF0IHRoZSByb290IG9mIHRoZSBpbnB1dCBoZWFwLlxuXG4gICBXZSBicmVhayB0aGUgZnVuY3Rpb24gaW50byB0d28gcGFydHMuICBBIGZpcnN0IHN0YWdlIHRoYXQgaXMgd2lsbGluZyB0byB1c2UgbGltaXRlZFxuICAgc3RhY2sgaW5zdGVhZCBvZiBoZWFwIGFsbG9jYXRpb24gZm9yIGJvb2trZWVwaW5nLCBhbmQgYSBzZWNvbmQgc3RhZ2UgdGhhdCBzaGlmdHMgdG9cbiAgIHVzaW5nIGEgbGlzdCBhcyBhbiBhY2N1bXVsYXRvciBpZiB3ZSBnbyB0b28gZGVlcC5cblxuICAgVGhpcyBjYW4gYmUgbWFkZSB0YWlsIHJlY3Vyc2l2ZSBhbmQgbm9uLWFsbG9jYXRpbmcgYnkgc3RhcnRpbmcgd2l0aCBhbiBlbXB0eSBoZWFwIGFuZFxuICAgbWVyZ2luZyBtZXJnZWQgcGFpcnMgaW50byBpdC4gVW5mb3J0dW5hdGVseSB0aGlzIFwibGVmdCBmb2xkXCIgdmVyc2lvbiBpcyBub3Qgd2hhdCBpc1xuICAgZGVzY3JpYmVkIGluIHRoZSBvcmlnaW5hbCBwYXBlciBieSBGcmVkbWFuIGV0IGFsLjsgdGhleSBzcGVjaWZpY2FsbHkgc2F5IHRoYXRcbiAgIGNoaWxkcmVuIHNob3VsZCBiZSBtZXJnZWQgdG9nZXRoZXIgZnJvbSB0aGUgZW5kIG9mIHRoZSBsaXN0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICBsaXN0LiAoW21lcmdlXSBpcyBub3QgYXNzb2NpYXRpdmUsIHNvIG9yZGVyIG1hdHRlcnMuKVxuKilcbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICB8IFtoZWFkXSAtPiBoZWFkIDo6IGFjY1xuICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPiBsb29wIChtZXJnZSBoZWFkIG5leHQxIDo6IGFjYykgbmV4dDJcbiAgICAgaW5cbiAgICAgbWF0Y2ggbG9vcCBbXSBjaGlsZHJlbiB3aXRoXG4gICAgIHwgW10gLT4gTm9uZVxuICAgICB8IFtoXSAtPiBTb21lIGhcbiAgICAgfCB4IDo6IHhzIC0+IFNvbWUgKExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOm1lcmdlKVxuICAgXX1cbiopXG5sZXQgYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGhlYWQgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGhlYWQgPVxuICAgIGlmIE5vZGUuaXNfZW1wdHkgaGVhZFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkIDo6IGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXh0MiA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIG5leHQxIH5wb29sOnQucG9vbCBpblxuICAgICAgICBsb29wIChtZXJnZSB0IGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MikpXG4gIGluXG4gIG1hdGNoIGxvb3AgW10gaGVhZCB3aXRoXG4gIHwgW10gLT4gTm9kZS5lbXB0eSAoKVxuICB8IFsgaCBdIC0+IGhcbiAgfCB4IDo6IHhzIC0+IExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOihmdW4gYWNjIGhlYXAgLT4gbWVyZ2UgdCBhY2MgaGVhcClcbjs7XG5cbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbWF0Y2ggdC5yb290IHdpdGhcbiAgICAgfCBOb2RlIChfLCBjaGlsZHJlbikgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZGVwdGggY2hpbGRyZW4gPVxuICAgICAgICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgICAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBjaGlsZGVuXG4gICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgIG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgIHwgW2hlYWRdIC0+IFNvbWUgaGVhZFxuICAgICAgICAgICB8IGhlYWQgOjogbmV4dDEgOjogbmV4dDIgLT5cbiAgICAgICAgICAgICBtZXJnZSAobWVyZ2UgaGVhZCBuZXh0MSkgKGxvb3AgKGRlcHRoICsgMSkgbmV4dDIpXG4gICAgICAgICBlbmRcbiAgICAgICBpblxuICAgICAgIGxvb3AgMCBjaGlsZHJlblxuICAgXX1cbiopXG5sZXQgbWVyZ2VfcGFpcnMgPVxuICBsZXQgbWF4X3N0YWNrX2RlcHRoID0gMV8wMDAgaW5cbiAgbGV0IHJlYyBsb29wIHQgZGVwdGggaGVhZCA9XG4gICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgdGhlbiBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZFxuICAgIGVsc2UgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBoZWFkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgICgqIG1lcmdlIHRoZSBmaXJzdCB0d28gbm9kZXMgaW4gb3VyIGxpc3QsIGFuZCB0aGVuIG1lcmdlIHRoZSByZXN1bHQgd2l0aCB0aGVcbiAgICAgICAgICAgcmVzdWx0IG9mIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgbWVyZ2VfcGFpcnMgb24gdGhlIHRhaWwgKilcbiAgICAgICAgbWVyZ2UgdCAobWVyZ2UgdCBoZWFkIG5leHQxKSAobG9vcCB0IChkZXB0aCArIDEpIG5leHQyKSkpXG4gIGluXG4gIGZ1biB0IGhlYWQgLT4gbG9vcCB0IDAgaGVhZFxuOztcblxubGV0IHJlbW92ZV9ub25fZW1wdHkgdCBub2RlID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgbGV0IG1lcmdlZF9jaGlsZHJlbiA9IG1lcmdlX3BhaXJzIHQgKE5vZGUuZGlzY29ubmVjdF9jaGlsZCBub2RlIH5wb29sKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgIGlmIE5vZGUuZXF1YWwgdC5yb290IG5vZGUgdGhlbiBtZXJnZWRfY2hpbGRyZW4gZWxzZSBtZXJnZSB0IHQucm9vdCBtZXJnZWRfY2hpbGRyZW5cbiAgaW5cbiAgTm9kZS5mcmVlIG5vZGUgfnBvb2w7XG4gIHQucm9vdCA8LSBuZXdfcm9vdFxuOztcblxubGV0IHJlbW92ZV90b3AgdCA9IGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpIHRoZW4gcmVtb3ZlX25vbl9lbXB0eSB0IHQucm9vdFxuXG4oKiBOb3RlIHRoYXQgdGhpcyBpcyB0YWlsLXJlY3Vyc2l2ZSBhbmQgdGhhdCBlYWNoIG5vZGUgaXMgdmlzaXRlZCBhdCBtb3N0IDMgdGltZXMgKG9uY2VcbiAgIGZvciBlYWNoIGJyYW5jaCBvZiB0aGUgXCJpZlwiKSwgc28gaXQgdGFrZXMgbGluZWFyIHRpbWUgYW5kIGNvbnN0YW50IHNwYWNlLiAqKVxubGV0IHJlYyByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBub2RlIH5wb29sID1cbiAgbGV0IGNoaWxkID0gTm9kZS5jaGlsZCBub2RlIH5wb29sIGluXG4gIGxldCBzaWJsaW5nID0gTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2wgaW5cbiAgaWYgbm90IChOb2RlLmlzX2VtcHR5IGNoaWxkKVxuICB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IGNoaWxkIH5wb29sXG4gIGVsc2UgaWYgbm90IChOb2RlLmlzX2VtcHR5IHNpYmxpbmcpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgc2libGluZyB+cG9vbFxuICBlbHNlIChcbiAgICBsZXQgcHJldiA9IE5vZGUucHJldiBub2RlIH5wb29sIGluXG4gICAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgcHJldikgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBwcmV2IH5wb29sKVxuOztcblxubGV0IGNsZWFyIHQgPVxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdC5yb290KVxuICB0aGVuIChcbiAgICByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSB0LnJvb3QgfnBvb2w6dC5wb29sO1xuICAgIHQucm9vdCA8LSBOb2RlLmVtcHR5ICgpKVxuOztcblxubGV0IHBvcF9leG4gdCA9XG4gIGxldCByID0gdG9wX2V4biB0IGluXG4gIHJlbW92ZV90b3AgdDtcbiAgclxuOztcblxubGV0IHBvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAocG9wX2V4biB0KVxuXG5sZXQgcG9wX2lmIHQgZiA9XG4gIG1hdGNoIHRvcCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHYgLT5cbiAgICBpZiBmIHZcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV90b3AgdDtcbiAgICAgIFNvbWUgdilcbiAgICBlbHNlIE5vbmVcbjs7XG5cbigqIHBhaXJpbmcgaGVhcHMgYXJlIG5vdCBiYWxhbmNlZCB0cmVlcywgYW5kIHRoZXJlZm9yZSB3ZSBjYW4ndCByZWx5IG9uIGEgYmFsYW5jZVxuICAgcHJvcGVydHkgdG8gc3RvcCBvdXJzZWx2ZXMgZnJvbSBvdmVyZmxvd2luZyB0aGUgc3RhY2suICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCAoZiBhY2MgKE5vZGUudmFsdWVfZXhuIH5wb29sIG5vZGUpKSB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBpbml0IFsgdC5yb290IF1cbjs7XG5cbigqIGFsbW9zdCBpZGVudGljYWwgdG8gZm9sZCwgY29waWVkIGZvciBzcGVlZCBwdXJwb3NlcyAqKVxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCBwb29sID0gdC5wb29sIGluXG4gIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgcmVzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGYgKE5vZGUudmFsdWVfZXhuIH5wb29sIG5vZGUpO1xuICAgICAgICBsZXQgdG9fdmlzaXQgPSBOb2RlLnNpYmxpbmcgfnBvb2wgbm9kZSA6OiBOb2RlLmNoaWxkIH5wb29sIG5vZGUgOjogcmVzdCBpblxuICAgICAgICBsb29wIHRvX3Zpc2l0KVxuICBpblxuICBsb29wIFsgdC5yb290IF1cbjs7XG5cbmxldCBsZW5ndGggdCA9IE5vZGUuUG9vbC5sZW5ndGggdC5wb29sXG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBpc19lbXB0eSB0ID0gTm9kZS5pc19lbXB0eSB0LnJvb3RcbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2FycmF5IGFyciB+Y21wID1cbiAgbGV0IHQgPSBjcmVhdGUgfm1pbl9zaXplOihBcnJheS5sZW5ndGggYXJyKSB+Y21wICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBhZGQgdCB2KTtcbiAgdFxuOztcblxubGV0IG9mX2xpc3QgbCB+Y21wID0gb2ZfYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkgfmNtcFxubGV0IHNleHBfb2ZfdCBmIHQgPSBBcnJheS5zZXhwX29mX3QgZiAodG9fYXJyYXkgdCB8PiBBcnJheS5zb3J0ZWRfY29weSB+Y29tcGFyZTp0LmNtcClcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICB7IG11dGFibGUgbm9kZSA6ICdhIE5vZGUudFxuICAgIDsgbm9kZV9pZCA6IE5vZGUuSWQudFxuICAgIDsgaGVhcCA6ICdhIHRcbiAgICB9XG5cbiAgKCogSWYgaWRzIGFyZSBkaWZmZXJlbnQsIGl0IG1lYW5zIHRoYXQgdGhlIG5vZGUgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVcbiAgICAgb3RoZXIgbWVhbnMgKGFuZCBwb3NzaWJseSByZXVzZWQpLiAqKVxuICBsZXQgaXNfbm9kZV92YWxpZCB0ID0gTm9kZS5JZC5lcXVhbCAoTm9kZS5pZCB+cG9vbDp0LmhlYXAucG9vbCB0Lm5vZGUpIHQubm9kZV9pZFxuXG4gIGxldCB2YWx1ZSB0ID1cbiAgICBpZiBpc19ub2RlX3ZhbGlkIHQgdGhlbiBTb21lIChOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2wpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0XG4gICAgdGhlbiBOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2xcbiAgICBlbHNlIGZhaWx3aXRoIFwiSGVhcC52YWx1ZV9leG46IG5vZGUgd2FzIHJlbW92ZWQgZnJvbSB0aGUgaGVhcFwiXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodmFsdWUgdCA6IGEgb3B0aW9uKV1cbmVuZFxuXG5sZXQgcmVtb3ZlIHQgKHRva2VuIDogXyBFbHQudCkgPVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdCB0b2tlbi5oZWFwKVxuICB0aGVuIGZhaWx3aXRoIFwiY2Fubm90IHJlbW92ZSBmcm9tIGEgZGlmZmVyZW50IGhlYXBcIlxuICBlbHNlIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0b2tlbi5ub2RlKVxuICB0aGVuIChcbiAgICBpZiBFbHQuaXNfbm9kZV92YWxpZCB0b2tlbiB0aGVuIHJlbW92ZV9ub25fZW1wdHkgdCB0b2tlbi5ub2RlO1xuICAgIHRva2VuLm5vZGUgPC0gTm9kZS5lbXB0eSAoKSlcbjs7XG5cbmxldCBhZGRfcmVtb3ZhYmxlIHQgdiA9XG4gIGxldCBub2RlID0gYWRkX25vZGUgdCB2IGluXG4gIHsgRWx0Lm5vZGU7IGhlYXAgPSB0OyBub2RlX2lkID0gTm9kZS5pZCB+cG9vbDp0LnBvb2wgbm9kZSB9XG47O1xuXG5sZXQgdXBkYXRlIHQgdG9rZW4gdiA9XG4gIHJlbW92ZSB0IHRva2VuO1xuICBhZGRfcmVtb3ZhYmxlIHQgdlxuOztcblxubGV0IGZpbmRfZWx0ID1cbiAgbGV0IHJlYyBsb29wIHQgZiBub2RlcyA9XG4gICAgbWF0Y2ggbm9kZXMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCB0IGYgcmVzdFxuICAgICAgZWxzZSBpZiBmIChOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbClcbiAgICAgIHRoZW4gU29tZSB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIHQgZiAoTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2w6dC5wb29sIDo6IE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wgOjogcmVzdClcbiAgaW5cbiAgZnVuIHQgfmYgLT4gbG9vcCB0IGYgWyB0LnJvb3QgXVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSBoZWFwID0gJ2EgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE5vZGUudFxuXG4gICAgbGV0IHZhbHVlIHQgaGVhcCA9IE5vZGUudmFsdWVfZXhuIH5wb29sOmhlYXAucG9vbCB0XG4gIGVuZFxuXG4gIGxldCBhZGRfcmVtb3ZhYmxlID0gYWRkX25vZGVcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZV9ub25fZW1wdHlcblxuICBsZXQgdXBkYXRlIHQgZWx0IHYgPVxuICAgIHJlbW92ZSB0IGVsdDtcbiAgICBhZGRfcmVtb3ZhYmxlIHQgdlxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGFtX3J1bm5pbmdfdGVzdCA6IGJvb2xcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIGEgPVxuICAgIGlmIE0uYW1fcnVubmluZ190ZXN0IHRoZW4gU2V4cC5BdG9tIFwiPGhpZGRlbl9pbl90ZXN0PlwiIGVsc2Ugc2V4cF9vZl9hIGFcbiAgOztcblxuICBtb2R1bGUgV2l0aF9ub25fcm91bmR0cmlwcGluZ19pbl90ZXN0X29mX3NleHAgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHVybmVkX29mZiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29mZiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBmYWxzZVxuICAgICAgICBlbmQpXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUdXJuZWRfb24gPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSB0cnVlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbi50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb25cIiA9XG4gICAgICBwcmludF9zIFslc2V4cCAoMTAyNCA6IFR1cm5lZF9vbi50KV07XG4gICAgICBbJWV4cGVjdCB7fCA8aGlkZGVuX2luX3Rlc3Q+IHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb2ZmXCIgPVxuICAgICAgcHJpbnRfcyAoWyVzZXhwX29mOiBUdXJuZWRfb2ZmLnRdIDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMTAyNCB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5pbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBhbV9ydW5uaW5nX3Rlc3RcbiAgZW5kKVxuIiwib3BlbiBDb3JlXG5cbnR5cGUgKydhIHRcblxuKCogVGhpcyBbT2JqLm1hZ2ljXSBpcyBPSyBiZWNhdXNlIHdlIG5ldmVyIGFsbG93IHVzZXIgY29kZSBhY2Nlc3MgdG8gW25vbmVdIChleGNlcHQgdmlhXG4gICBbdW5zYWZlX3ZhbHVlXSkuICBXZSBkaXNhbGxvdyBbXyBVb3B0LnQgVW9wdC50XSwgc28gdGhlcmUgaXMgbm8gY2hhbmNlIG9mIGNvbmZ1c2luZ1xuICAgW25vbmVdIHdpdGggW3NvbWUgbm9uZV0uICBBbmQgW2Zsb2F0IFVvcHQudCBhcnJheV0gaXMgc2ltaWxhcmx5IGRpc2FsbG93ZWQuICopXG5sZXQgbm9uZSA6ICdhIHQgPSBPYmoubWFnaWMgXCJVb3B0Lm5vbmVcIlxubGV0IHNvbWUgKHggOiAnYSkgOiAnYSB0ID0gT2JqLm1hZ2ljIHhcbmxldCB1bnNhZmVfdmFsdWUgKHggOiAnYSB0KSA6ICdhID0gT2JqLm1hZ2ljIHhcbmxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxubGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaWYgaXNfc29tZSB0IHRoZW4gaW52YXJpYW50X2EgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgaWYgaXNfbm9uZSB0IHRoZW4gWyVzZXhwIE5vbmVdIGVsc2UgWyVzZXhwIFNvbWUgKHVuc2FmZV92YWx1ZSB0IDogYSldXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSBpZiBpc19ub25lIHQgdGhlbiBmYWlsd2l0aCBcIlVvcHQudmFsdWVfZXhuXCIgZWxzZSB1bnNhZmVfdmFsdWUgdFxubGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IG5vbmVcbiAgfCBTb21lIGEgLT4gc29tZSBhXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlXG4gIGVuZFxuZW5kXG4iLCIoKiBUaGlzIG1vZHVsZSBleHBsb2l0cyB0aGUgZmFjdCB0aGF0IE9DYW1sIGRvZXMgbm90IHBlcmZvcm0gY29udGV4dC1zd2l0Y2hlcyB1bmRlclxuICAgY2VydGFpbiBjb25kaXRpb25zLiAgSXQgY2FuIHRoZXJlZm9yZSBhdm9pZCB1c2luZyBtdXRleGVzLlxuXG4gICBHaXZlbiB0aGUgc2VtYW50aWNzIG9mIHRoZSBjdXJyZW50IE9DYW1sIHJ1bnRpbWUgKGFuZCBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZSksIGNvZGVcbiAgIHNlY3Rpb25zIGRvY3VtZW50ZWQgYXMgYXRvbWljIGJlbG93IHdpbGwgbmV2ZXIgY29udGFpbiBhIGNvbnRleHQtc3dpdGNoLiAgVGhlIGRlY2lkaW5nXG4gICBjcml0ZXJpb24gaXMgd2hldGhlciB0aGV5IGNvbnRhaW4gYWxsb2NhdGlvbnMgb3IgY2FsbHMgdG8gZXh0ZXJuYWwvYnVpbHRpbiBmdW5jdGlvbnMuXG4gICBJZiB0aGVyZSBpcyBub25lLCBhIGNvbnRleHQtc3dpdGNoIGNhbm5vdCBoYXBwZW4uICBBc3NpZ25tZW50cyB3aXRob3V0IGFsbG9jYXRpb25zLFxuICAgZmllbGQgYWNjZXNzLCBwYXR0ZXJuLW1hdGNoaW5nLCBldGMuLCBkbyBub3QgdHJpZ2dlciBjb250ZXh0LXN3aXRjaGVzLlxuXG4gICBDb2RlIHJldmlld2VycyBzaG91bGQgdGhlcmVmb3JlIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvd1xuICAgZG8gbm90IHZpb2xhdGUgdGhlIGFib3ZlIGFzc3VtcHRpb25zLiAgSXQgaXMgcHJ1ZGVudCB0byBkaXNhc3NlbWJsZSB0aGUgLm8gZmlsZSAodXNpbmdcbiAgIFtvYmpkdW1wIC1kcl0pIGFuZCBleGFtaW5lIGl0LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhIHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgKCkgPSB7IHZhbHVlID0gVW9wdC5ub25lOyBuZXh0ID0gVW9wdC5ub25lIH1cbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICgqIFtmcm9udF0gdG8gW2JhY2tdIGhhcyBbbGVuZ3RoICsgMV0gbGlua2VkIGVsZW1lbnRzLCB3aGVyZSB0aGUgZmlyc3QgW2xlbmd0aF0gaG9sZCB0aGVcbiAgICAgdmFsdWVzIGluIHRoZSBxdWV1ZSwgYW5kIHRoZSBsYXN0IGlzIFtiYWNrXSwgaG9sZGluZyBubyB2YWx1ZS4gKilcbiAgOyBtdXRhYmxlIGZyb250IDogJ2EgRWx0LnRcbiAgOyBtdXRhYmxlIGJhY2sgOiAnYSBFbHQudFxuICAoKiBbdW51c2VkX2VsdHNdIGlzIHNpbmdseSBsaW5rZWQgdmlhIFtuZXh0XSwgYW5kIGVuZHMgd2l0aCBbc2VudGluZWxdLiAgQWxsIGVsdHMgaW5cbiAgICAgW3VudXNlZF9lbHRzXSBoYXZlIFtVb3B0LmlzX25vbmUgZWx0LnZhbHVlXS4gKilcbiAgOyBtdXRhYmxlIHVudXNlZF9lbHRzIDogJ2EgRWx0LnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgbGV0IGkgPSByZWYgdC5sZW5ndGggaW5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgZnJvbnQgaW5cbiAgICAgICAgICAgd2hpbGUgIWkgPiAwIGRvXG4gICAgICAgICAgICAgZGVjciBpO1xuICAgICAgICAgICAgIGxldCBlbHQgPSAhciBpblxuICAgICAgICAgICAgIHIgOj0gVW9wdC52YWx1ZV9leG4gZWx0LkVsdC5uZXh0O1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIGVsdC52YWx1ZSlcbiAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsICFyIHQuYmFjaykpKVxuICAgICAgfmJhY2s6KGNoZWNrIChmdW4gYmFjayAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBiYWNrLkVsdC52YWx1ZSkpKVxuICAgICAgfnVudXNlZF9lbHRzOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bnVzZWRfZWx0cyAtPlxuICAgICAgICAgICBsZXQgciA9IHJlZiB1bnVzZWRfZWx0cyBpblxuICAgICAgICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgICAgICBsZXQgZWx0ID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICAgICAgICAgICByIDo9IGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmUpKSlcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgZWx0ID0gRWx0LmNyZWF0ZSAoKSBpblxuICB7IGZyb250ID0gZWx0OyBiYWNrID0gZWx0OyBsZW5ndGggPSAwOyB1bnVzZWRfZWx0cyA9IFVvcHQubm9uZSB9XG47O1xuXG5sZXQgZ2V0X3VudXNlZF9lbHQgdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIFVvcHQuaXNfc29tZSB0LnVudXNlZF9lbHRzXG4gIHRoZW4gKFxuICAgIGxldCBlbHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnVudXNlZF9lbHRzIGluXG4gICAgdC51bnVzZWRfZWx0cyA8LSBlbHQubmV4dDtcbiAgICBlbHQgKCogRU5EIEFUT01JQyBTRUNUSU9OICopKVxuICBlbHNlIEVsdC5jcmVhdGUgKClcbjs7XG5cbmxldCBlbnF1ZXVlICh0eXBlIGEpICh0IDogYSB0KSAoYSA6IGEpID1cbiAgbGV0IG5ld19iYWNrID0gZ2V0X3VudXNlZF9lbHQgdCBpblxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gIHQuYmFjay52YWx1ZSA8LSBVb3B0LnNvbWUgYTtcbiAgdC5iYWNrLm5leHQgPC0gVW9wdC5zb21lIG5ld19iYWNrO1xuICB0LmJhY2sgPC0gbmV3X2JhY2tcbjs7XG5cbigqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuXG5sZXQgcmV0dXJuX3VudXNlZF9lbHQgdCAoZWx0IDogXyBFbHQudCkgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBlbHQudmFsdWUgPC0gVW9wdC5ub25lO1xuICBlbHQubmV4dCA8LSB0LnVudXNlZF9lbHRzO1xuICB0LnVudXNlZF9lbHRzIDwtIFVvcHQuc29tZSBlbHQ7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICAoKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9kZXF1ZXVlX2VtcHR5IHQgPVxuICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIG9mIGVtcHR5IHF1ZXVlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0O1xuICBsZXQgZWx0ID0gdC5mcm9udCBpblxuICBsZXQgYSA9IGVsdC52YWx1ZSBpblxuICB0LmZyb250IDwtIFVvcHQudW5zYWZlX3ZhbHVlIGVsdC5uZXh0O1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICByZXR1cm5fdW51c2VkX2VsdCB0IGVsdDtcbiAgVW9wdC51bnNhZmVfdmFsdWUgYVxuOztcblxubGV0IGNsZWFyX2ludGVybmFsX3Bvb2wgdCA9IHQudW51c2VkX2VsdHMgPC0gVW9wdC5ub25lXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBVb3B0ID0gVW9wdFxuZW5kXG4iLCJpbmNsdWRlIENvcmUuQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxuKCogW2FmdGVyXSBpcyBsaWtlIFthZGRdLCBidXQgZGVhbHMgbmljZWx5IHdpdGggdGhlIGNhc2Ugb2Ygb3ZlcmZsb3cgYnkgaW5zdGVhZCByZXR1cm5pbmdcbiAgIFttYXhfdmFsdWVdLiAgVGltZS1zb3VyY2UgZnVuY3Rpb25zIHVzZSBbYWZ0ZXJdIHRvIGF2b2lkIGltbWVkaWF0ZWx5IGZpcmluZyBldmVudHMgdGhhdFxuICAgc2hvdWxkIG5ldmVyIGZpcmUsIGR1ZSB0byB0aGUgb3ZlcmZsb3cgbGVhZGluZyB0byBhIG5lZ2F0aXZlIHRpbWUgdGhhdCBhcHBlYXJzIHRvIGJlIGluXG4gICB0aGUgcGFzdC4gIFdlIGRvbid0IGNoZWNrIHVuZGVyZmxvdyBiZWNhdXNlIHRoYXQgaXMgdmVyeSB1bmxpa2VseSwgcmVxdWlyaW5nIGJvdGggYVxuICAgbmVnYXRpdmUgdGltZSBhbmQgYSBuZWdhdGl2ZSBzcGFuLiAqKVxubGV0IGFmdGVyIHQgc3BhbiA9XG4gIGxldCByZXN1bHQgPSBhZGQgdCBzcGFuIGluXG4gIGlmIFNwYW4uKCA+ICkgc3BhbiBTcGFuLnplcm8gJiYgcmVzdWx0IDwgdCB0aGVuIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIGVsc2UgcmVzdWx0XG47O1xuIiwibW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeVxuaW5jbHVkZSBBc3luY19rZXJuZWxfY29uZmlnLlByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuXG5sZXQgbG9nIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBlcHJpbnRmXG4gICAgXCIlc1xcbiUhXCJcbiAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgKFslc2V4cF9vZjogU2V4cC50ICogVGltZV9ucy50ICogc3RyaW5nICogYV1cbiAgICAgICAgICAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSwgVGltZV9ucy5ub3cgKCksIG1lc3NhZ2UsIGEpKSlcbjs7XG5cbmxldCBsb2dfc3RyaW5nIG1lc3NhZ2UgPSBsb2cgbWVzc2FnZSAoKSBbJXNleHBfb2Y6IHVuaXRdXG4iLCJtb2R1bGUgRGVidWdfaW5fdGhpc19kaXJlY3RvcnkgPSBEZWJ1Z1xubW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuISBDb3JlXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3Rvcnlcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICBBc3luY19rZXJuZWxfY29uZmlnLk1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgZXByaW50ID0gQ29yZS5EZWJ1Zy5lcHJpbnRcbmxldCBlcHJpbnRfcyA9IENvcmUuRGVidWcuZXByaW50X3NcbmxldCBlcHJpbnRzID0gQ29yZS5EZWJ1Zy5lcHJpbnRzXG5sZXQgcHJpbnRfcyBzZXhwID0gcHJpbnRmIFwiJXNcXG4lIVwiIChzZXhwIHw+IFNleHAudG9fc3RyaW5nX2h1bSlcbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5cbigqIFdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZXNlIG1vZHVsZXMgaW4gQXN5bmNfa2VybmVsLCB0byBhdm9pZCBkaWZmaWN1bHRpZXMgd2l0aFxuICAgdXNpbmcgaXQgb24ganNfb2Zfb2NhbWwuICopXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOb3JtYWxcbiAgfCBMb3dcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBub3JtYWwgPSBOb3JtYWxcbmxldCBsb3cgPSBMb3dcbiIsIigqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgdHlwZXMgYXQgdGhlIGhlYXJ0IG9mIEFzeW5jLiAgVGhlIGZ1bmN0aW9uc1xuICAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0eXBlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBmaWxlKHMpIGZvciBlYWNoIG1vZHVsZS5cbiAgIFRoaXMgZmlsZSBzaG91bGQgZGVmaW5lIG9ubHkgdHlwZXMsIG5vdCBmdW5jdGlvbnMsIHNpbmNlIGZ1bmN0aW9ucyBkZWZpbmVkIGluc2lkZSB0aGVcbiAgIHJlY3Vyc2l2ZSBtb2R1bGVzIGFyZSBub3QgaW5saW5lZC5cblxuICAgSWYgeW91IG5lZWQgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gYSBtb2R1bGUgYnV0IGRvaW5nIHNvIHdvdWxkIGNyZWF0ZSBhIGRlcGVuZGVuY3lcbiAgIGN5Y2xlLCBzcGxpdCB0aGUgZmlsZSBpbnRvIHBpZWNlcyBhcyBuZWVkZWQgdG8gYnJlYWsgdGhlIGN5Y2xlLCBlLmcuIHNjaGVkdWxlcjAubWwsXG4gICBzY2hlZHVsZXIxLm1sLCBzY2hlZHVsZXIubWwuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgcmVjIENlbGwgOiBzaWdcbiAgdHlwZSBhbnkgPVxuICAgIFsgYEVtcHR5XG4gICAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgIHwgYEZ1bGxcbiAgICB8IGBJbmRpclxuICAgIF1cblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgOlxuICAgICAgICB7IG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICA7IG11dGFibGUgcHJldiA6ICdhIEhhbmRsZXIudFxuICAgICAgICA7IG11dGFibGUgbmV4dCA6ICdhIEhhbmRsZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIHRcbiAgICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfaGFuZGxlciBdKSB0XG4gICAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIHRcbiAgICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIHRcbiAgICB8IEluZGlyIDogJ2EgSXZhci50IC0+ICgnYSwgWz4gYEluZGlyIF0pIHRcbmVuZCA9XG4gIENlbGxcblxuYW5kIEhhbmRsZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBDZWxsLnRcbmVuZCA9XG4gIEhhbmRsZXJcblxuYW5kIEl2YXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuXG4gIG1vZHVsZSBJbW11dGFibGUgOiBzaWdcbiAgICB0eXBlICdhIHQgPSB7IGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuICBlbmRcbmVuZCA9XG4gIEl2YXJcblxuYW5kIERlZmVycmVkIDogc2lnXG4gIHR5cGUgKydhIHRcbmVuZCA9XG4gIERlZmVycmVkXG5cbmFuZCBFeGVjdXRpb25fY29udGV4dCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gICAgOyBsb2NhbF9zdG9yYWdlIDogVW5pdl9tYXAudFxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgRXhlY3V0aW9uX2NvbnRleHRcblxuYW5kIEZvcndhcmRpbmcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IERldGFjaGVkXG4gICAgfCBQYXJlbnQgb2YgTW9uaXRvci50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuXG5lbmQgPVxuICBGb3J3YXJkaW5nXG5cbmFuZCBNb25pdG9yIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogSW5mby50XG4gICAgOyBoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCBvcHRpb25cbiAgICA7IGlkIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gSXZhci50XG4gICAgOyBtdXRhYmxlIGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIDogKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcudFxuICAgIDsgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUYWlsLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgICA7IG11dGFibGUgZm9yd2FyZGluZyA6IEZvcndhcmRpbmcudFxuICAgIH1cbmVuZCA9XG4gIE1vbml0b3JcblxuYW5kIFRhaWwgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuZW5kID1cbiAgVGFpbFxuXG5hbmQgU3RyZWFtIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiAnYSAqICdhIHRcbmVuZCA9XG4gIFN0cmVhbVxuXG4oKiBXZSBhdm9pZCB1c2luZyBbbW9kdWxlIHJlY10gdG8gZGVmaW5lIFtCdmFyXSwgc28gdGhhdCBbdG9fcmVwcl0gYW5kIFtvZl9yZXByXSBhcmVcbiAgIGlubGluZWQuICopXG5tb2R1bGUgQnZhciA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtaXNzaW9uKSB0XG5cbiAgKCoqIFtyZXByXSBleGlzdHMgc28gdGhhdCB3ZSBtYXkgaGlkZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBbQnZhci50XSwgYW5kIHRoZW4gYWRkIGFcbiAgICAgIHBoYW50b20gdHlwZSB0byBpdCB1cHN0cmVhbS4gIFdpdGhvdXQgdGhpcywgdGhlIHBoYW50b20gdHlwZSB2YXJpYWJsZSB3b3VsZCBhbGxvd1xuICAgICAgZm9yIGFueXRoaW5nIHRvIGJlIGNvZXJjZWQgaW4gYW5kIG91dCwgc2luY2UgaXQgaXMgdW51c2VkLiAqKVxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdmFsIG9mX3JlcHIgOiAnYSByZXByIC0+ICgnYSwgJ3Blcm1pc3Npb24pIHRcbiAgdmFsIHRvX3JlcHIgOiAoJ2EsICdwZXJtaXNzaW9uKSB0IC0+ICdhIHJlcHJcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gJ2EgcmVwclxuXG4gIGxldCB0b19yZXByIHQgPSB0XG4gIGxldCBvZl9yZXByIHQgPSB0XG5lbmRcblxubW9kdWxlIHJlYyBFdmVudCA6IHNpZ1xuICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmlyZWRcbiAgICAgIHwgSGFwcGVuaW5nXG4gICAgICB8IFNjaGVkdWxlZFxuICAgICAgfCBVbnNjaGVkdWxlZFxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZCA9XG4gIEV2ZW50XG5cbmFuZCBFeHRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoJ2EgLT4gdW5pdCkgKiAnYSAtPiB0XG5lbmQgPVxuICBFeHRlcm5hbF9qb2JcblxuYW5kIEpvYiA6IHNpZ1xuICB0eXBlIHNsb3RzID0gKEV4ZWN1dGlvbl9jb250ZXh0LnQsIE9iai50IC0+IHVuaXQsIE9iai50KSBQb29sLlNsb3RzLnQzXG4gIHR5cGUgdCA9IHNsb3RzIFBvb2wuUG9pbnRlci50XG5lbmQgPVxuICBKb2JcblxuYW5kIEpvYl9vcl9ldmVudCA6IHNpZ1xuICB0eXBlIHRcbmVuZCA9XG4gIEpvYl9vcl9ldmVudFxuXG5hbmQgSm9iX3Bvb2wgOiBzaWdcbiAgdHlwZSB0ID0gSm9iLnNsb3RzIFBvb2wudFxuZW5kID1cbiAgSm9iX3Bvb2xcblxuYW5kIEpvYl9xdWV1ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgICA7IG11dGFibGUgam9ic19sZWZ0X3RoaXNfY3ljbGUgOiBpbnRcbiAgICA7IG11dGFibGUgam9icyA6IE9iai50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gICAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gICAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIH1cbmVuZCA9XG4gIEpvYl9xdWV1ZVxuXG5hbmQgSm9icyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWwgOiBKb2JfcXVldWUudFxuICAgIDsgbG93IDogSm9iX3F1ZXVlLnRcbiAgICB9XG5lbmQgPVxuICBKb2JzXG5cbmFuZCBTY2hlZHVsZXIgOiBzaWdcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIDogVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgRGVxdWUudFxuICAgIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBjeWNsZV9jb3VudCA6IGludFxuICAgIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDogQ3ljbGVfaG9vay50IGxpc3RcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA6IChDeWNsZV9ob29rX2hhbmRsZS50LCBDeWNsZV9ob29rLnQpIEhhc2h0YmwudFxuICAgIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfZW5kIDogQ3ljbGVfaG9vay50IGxpc3RcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICAgIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgdGltZV9zb3VyY2UgOiByZWFkX3dyaXRlIFRpbWVfc291cmNlLnQxXG4gICAgOyBleHRlcm5hbF9qb2JzIDogRXh0ZXJuYWxfam9iLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBqb2JfcXVldWVkX2hvb2sgOiAoUHJpb3JpdHkudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHlpZWxkIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgICA7IG11dGFibGUgY2hlY2tfaW52YXJpYW50cyA6IGJvb2xcbiAgICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gICAgOyBtdXRhYmxlIHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbFxuICAgIH1cbmVuZCA9XG4gIFNjaGVkdWxlclxuXG5hbmQgQ3ljbGVfaG9vayA6IHNpZ1xuICB0eXBlIHQgPSB1bml0IC0+IHVuaXRcbmVuZCA9XG4gIEN5Y2xlX2hvb2tcblxuYW5kIEN5Y2xlX2hvb2tfaGFuZGxlIDogVW5pcXVlX2lkLklkID0gVW5pcXVlX2lkLkludDYzICgpXG5hbmQgVGltZV9zb3VyY2VfaWQgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxuYW5kIFRpbWVfc291cmNlIDogc2lnXG4gIHR5cGUgLSdydyB0MSA9XG4gICAgeyBpZCA6IFRpbWVfc291cmNlX2lkLnRcbiAgICA7IG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7IG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICB9XG5lbmQgPVxuICBUaW1lX3NvdXJjZVxuXG5hbmQgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyIDogc2lnXG4gIG1vZHVsZSBFeGVjX3Jlc3VsdCA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBleGVjIDogdW5pdCAtPiBFeGVjX3Jlc3VsdC50XG4gICAgfVxuZW5kID1cbiAgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbmxldCBkZWJ1ZyA9IERlYnVnLm1vbml0b3JcblxubW9kdWxlIEZvcndhcmRpbmcgPSBUeXBlcy5Gb3J3YXJkaW5nXG5cbnR5cGUgdCA9IFR5cGVzLk1vbml0b3IudCA9XG4gIHsgbmFtZSA6IEluZm8udFxuICA7IGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IG9wdGlvblxuICA7IGlkIDogaW50XG4gIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIFR5cGVzLkl2YXIudFxuICA7ICgqIFtNb25pdG9yLnNlbmRfZXhuXSBzY2hlZHVsZXMgYSBqb2IgZm9yIGVhY2ggZWxlbWVudCBvZiBbaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNdLiAqKVxuICAgIG11dGFibGUgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgOiAoVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIGV4dGVuZHMgZWFjaCB0YWlsIGluIFt0YWlsc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUeXBlcy5UYWlsLnQgbGlzdFxuICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gIDsgbXV0YWJsZSBmb3J3YXJkaW5nIDogRm9yd2FyZGluZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGRlc2NyaXB0aW9uIHQgPVxuICBtYXRjaCB0LmhlcmUgd2l0aFxuICB8IE5vbmUgLT4gWyVzZXhwICh0Lm5hbWUgOiBJbmZvLnQpXVxuICB8IFNvbWUgaGVyZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCksIChoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgZGVzY3JpcHRpb25zID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIGxldCBhYyA9IGRlc2NyaXB0aW9uIHQgOjogYWMgaW5cbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgRGV0YWNoZWQgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IExpc3QucmV2IGFjXG4gICAgfCBQYXJlbnQgdCAtPiBsb29wIHQgYWNcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKGRlc2NyaXB0aW9ucyB0IDogU2V4cC50IGxpc3QpXVxuXG5sZXQgbmV4dF9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIHBhcmVudCA9XG4gIGxldCBpZCA9IG5leHRfaWQgKCkgaW5cbiAgbGV0IG5hbWUgPVxuICAgIG1hdGNoIGluZm8sIG5hbWUgd2l0aFxuICAgIHwgU29tZSBpLCBOb25lIC0+IGlcbiAgICB8IFNvbWUgaSwgU29tZSBzIC0+IEluZm8udGFnIGkgfnRhZzpzXG4gICAgfCBOb25lLCBTb21lIHMgLT4gSW5mby5vZl9zdHJpbmcgc1xuICAgIHwgTm9uZSwgTm9uZSAtPiBJbmZvLmNyZWF0ZSBcImlkXCIgaWQgWyVzZXhwX29mOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XVxuICBpblxuICBsZXQgdCA9XG4gICAgeyBuYW1lXG4gICAgOyBoZXJlXG4gICAgOyBmb3J3YXJkaW5nID1cbiAgICAgICAgKG1hdGNoIHBhcmVudCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gUmVwb3J0X3VuY2F1Z2h0X2V4blxuICAgICAgICAgfCBTb21lIHBhcmVudCAtPiBQYXJlbnQgcGFyZW50KVxuICAgIDsgaWRcbiAgICA7IG5leHRfZXJyb3IgPSB7IGNlbGwgPSBFbXB0eSB9XG4gICAgOyBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA9IEJhZy5jcmVhdGUgKClcbiAgICA7IHRhaWxzX2Zvcl9hbGxfZXJyb3JzID0gW11cbiAgICA7IGhhc19zZWVuX2Vycm9yID0gZmFsc2VcbiAgICB9XG4gIGluXG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiY3JlYXRlZCBtb25pdG9yXCIgdCBbJXNleHBfb2Y6IHRdO1xuICB0XG47O1xuXG5sZXQgbWFpbiA9IGNyZWF0ZV93aXRoX3BhcmVudCB+bmFtZTpcIm1haW5cIiBOb25lXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcblxudHlwZSB0ID0gVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCA9XG4gIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICA7IGxvY2FsX3N0b3JhZ2UgOiBVbml2X21hcC50XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IG1haW4gPVxuICB7IG1vbml0b3IgPSBNb25pdG9yLm1haW5cbiAgOyBwcmlvcml0eSA9IFByaW9yaXR5Lm5vcm1hbFxuICA7IGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5lbXB0eVxuICA7IGJhY2t0cmFjZV9oaXN0b3J5ID0gW11cbiAgfVxuOztcblxubGV0IGNyZWF0ZV9saWtlID9tb25pdG9yID9wcmlvcml0eSA/bG9jYWxfc3RvcmFnZSB0ID1cbiAgbGV0IG1vbml0b3IgPSBPcHRpb24udmFsdWUgbW9uaXRvciB+ZGVmYXVsdDp0Lm1vbml0b3IgaW5cbiAgeyBtb25pdG9yXG4gIDsgcHJpb3JpdHkgPSBPcHRpb24udmFsdWUgcHJpb3JpdHkgfmRlZmF1bHQ6dC5wcmlvcml0eVxuICA7IGxvY2FsX3N0b3JhZ2UgPSBPcHRpb24udmFsdWUgbG9jYWxfc3RvcmFnZSB+ZGVmYXVsdDp0LmxvY2FsX3N0b3JhZ2VcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA9IHQuYmFja3RyYWNlX2hpc3RvcnlcbiAgfVxuOztcblxubGV0IGZpbmRfbG9jYWwgdCBrZXkgPSBVbml2X21hcC5maW5kIHQubG9jYWxfc3RvcmFnZSBrZXlcblxubGV0IHdpdGhfbG9jYWwgdCBrZXkgZGF0YSA9XG4gIHsgdCB3aXRoIGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5jaGFuZ2UgdC5sb2NhbF9zdG9yYWdlIGtleSB+ZjooZnVuIF8gLT4gZGF0YSkgfVxuOztcblxubGV0IHJlY29yZF9iYWNrdHJhY2UgdCA9XG4gIHsgdCB3aXRoIGJhY2t0cmFjZV9oaXN0b3J5ID0gQmFja3RyYWNlLmdldCAoKSA6OiB0LmJhY2t0cmFjZV9oaXN0b3J5IH1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHlwZXMuRXh0ZXJuYWxfam9iXG5cbmxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIjxqb2I+XCJcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBQb29sXG5cbmxldCBkdW1teV9lID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxubGV0IGR1bW15X2YgOiBPYmoudCAtPiB1bml0ID0gaWdub3JlXG5sZXQgZHVtbXlfYSA6IE9iai50ID0gT2JqLnJlcHIgKClcblxudHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCAoT2JqLnRbQHNleHAub3BhcXVlXSkpIFNsb3RzLnQzXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPSBzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbmxldCBjcmVhdGUgKCkgPSBjcmVhdGUgU2xvdHMudDMgfmNhcGFjaXR5OjEgfmR1bW15OihkdW1teV9lLCBkdW1teV9mLCBkdW1teV9hKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IEpvYl9wb29sLnNsb3RzIFBvb2wuUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBFdmVudCA9IFR5cGVzLkV2ZW50XG5tb2R1bGUgSm9iID0gVHlwZXMuSm9iXG5pbmNsdWRlIFR5cGVzLkpvYl9vcl9ldmVudFxuXG4oKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0IHRvXG4gICBbT2JqLm1hZ2ljXXMuICopXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlc1xuICBvcGVuIEV2ZW50XG5cbiAgdHlwZSBfdCA9IHQgPVxuICAgIHsgKCogbXVzdCBuZXZlciBiZSBpbW1lZGlhdGUgKilcbiAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBfIDogc2lnIGVuZCA9IHN0cnVjdFxuICBtb2R1bGUgRW5zdXJlX3ByaXZhdGVfaW50IChNIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIGludFxuICAgIGVuZCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIF90ID0gTS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgRW5zdXJlX3ByaXZhdGVfaW50IChKb2IpXG5lbmRcblxubGV0IG9mX2V2ZW50IGV2ZW50IDogdCA9IE9iai5tYWdpYyAoZXZlbnQgOiBFdmVudC50KVxubGV0IG9mX2pvYiBqb2IgOiB0ID0gT2JqLm1hZ2ljIChqb2IgOiBKb2IudClcbmxldCBpc19ldmVudCAodCA6IHQpID0gT2JqLmlzX2Jsb2NrIChPYmoucmVwciB0KVxubGV0IGlzX2pvYiAodCA6IHQpID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgdClcblxubW9kdWxlIE1hdGNoID0gc3RydWN0XG4gIHR5cGUgXyBraW5kID1cbiAgICB8IEV2ZW50IDogRXZlbnQudCBraW5kXG4gICAgfCBKb2IgOiBKb2IudCBraW5kXG5cbiAgdHlwZSBwYWNrZWQgPSBLIDogXyBraW5kIC0+IHBhY2tlZCBbQEB1bmJveGVkXVxuXG4gIGxldCBraW5kIHQgPSBpZiBpc19ldmVudCB0IHRoZW4gSyBFdmVudCBlbHNlIEsgSm9iXG4gIGxldCBwcm9qZWN0ICh0eXBlIGEpIChfIDogYSBraW5kKSBqb2Jfb3JfZXZlbnQgPSAoT2JqLm1hZ2ljIDogdCAtPiBhKSBqb2Jfb3JfZXZlbnRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLlNjaGVkdWxlclxuXG5sZXQgZXZlbnRzIHQgPSB0LnRpbWVfc291cmNlLmV2ZW50c1xuXG5sZXQgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAoKiBBdm9pZCBhIGNhbWxfbW9kaWZ5IGluIG1vc3QgY2FzZXMuICopXG4gIGlmIG5vdCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHRoZW4gdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDwtIGV4ZWN1dGlvbl9jb250ZXh0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5sZXQgc2xvdHNfcGVyX2VsdCA9IDNcblxubW9kdWxlIEEgPSBVbmlmb3JtX2FycmF5XG5cbigqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBzcGVjaWFsaXplZCBbRmxhdF9xdWV1ZV0sIGRvbmUgZm9yIHJlYXNvbnMgb2Ygc3BlZWQuICopXG50eXBlIHQgPSBUeXBlcy5Kb2JfcXVldWUudCA9XG4gIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gIDsgKCogW2pvYnNdIGlzIGFuIGFycmF5IG9mIGxlbmd0aCBbY2FwYWNpdHkgdCAqIHNsb3RzX3Blcl9lbHRdLCB3aGVyZSBlYWNoIGVsdCBoYXMgdGhlXG4gICAgICAgdGhyZWUgY29tcG9uZW50cyBvZiBhIGpvYiAoW2V4ZWN1dGlvbl9jb250ZXh0XSwgW2ZdLCBbYV0pIGluIGNvbnNlY3V0aXZlIHNwb3RzIGluXG4gICAgICAgW2pvYnNdLiAgW2VucXVldWVdIGRvdWJsZXMgdGhlIGxlbmd0aCBvZiBbam9ic10gaWYgW2pvYnNdIGlzIGZ1bGwuICBbam9ic10gbmV2ZXJcbiAgICAgICBzaHJpbmtzLiAgW2pvYnNdIGlzIHNvbWV3aGF0IGxpa2UgYSBbQ29yZS5Qb29sXSBzcGVjaWFsaXplZCB0byAzLXR1cGxlczsgd2VcbiAgICAgICBkb24ndCB1c2UgW1Bvb2xdIGJlY2F1c2UgdGhhdCBpbXBsZW1lbnRzIGEgc2V0LCB3aGVyZSBbam9ic10gaXMgYSBxdWV1ZS4gKilcbiAgICBtdXRhYmxlIGpvYnMgOiAoT2JqLnQgQS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogW21hc2tdIGlzIFtjYXBhY2l0eSB0IC0gMV0sIGFuZCBpcyB1c2VkIGZvciBxdWlja2x5IGNvbXB1dGluZyBbaSBtb2QgKGNhcGFjaXR5XG4gICAgICAgdCldICopXG4gICAgbXV0YWJsZSBtYXNrIDogaW50XG4gIDsgKCogW2Zyb250XSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGpvYiBpbiB0aGUgcXVldWUuICBUaGUgYXJyYXkgaW5kZXggb2YgdGhhdCBqb2Inc1xuICAgICAgIGV4ZWN1dGlvbiBjb250ZXh0IGlzIFtmcm9udCAqIHNsb3RzX3Blcl9lbHRdLiAqKVxuICAgIG11dGFibGUgZnJvbnQgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBvZmZzZXQgdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFzayAqIHNsb3RzX3Blcl9lbHRcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5udW1fam9ic19ydW46KGNoZWNrIChmdW4gbnVtX2pvYnNfcnVuIC0+IGFzc2VydCAobnVtX2pvYnNfcnVuID49IDApKSlcbiAgICAgIH5qb2JzX2xlZnRfdGhpc19jeWNsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gam9ic19sZWZ0X3RoaXNfY3ljbGUgLT4gYXNzZXJ0IChqb2JzX2xlZnRfdGhpc19jeWNsZSA+PSAwKSkpXG4gICAgICB+am9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gam9icyAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50XG4gICAgICAgICAgICAgICAoT2JqLm9iaiAoQS5nZXQgam9icyAob2Zmc2V0IHQgaSkpIDogRXhlY3V0aW9uX2NvbnRleHQudClcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bWFzazpcbiAgICAgICAgKGNoZWNrIChmdW4gbWFzayAtPlxuICAgICAgICAgICBsZXQgY2FwYWNpdHkgPSBtYXNrICsgMSBpblxuICAgICAgICAgICBhc3NlcnQgKEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQgPSBBLmxlbmd0aCB0LmpvYnMpKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChmcm9udCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChmcm9udCA8IGNhcGFjaXR5IHQpKSlcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkgdCkpKSlcbjs7XG5cbmxldCBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5ID0gQS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KGNhcGFjaXR5ICogc2xvdHNfcGVyX2VsdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBjYXBhY2l0eSA9IDEgaW5cbiAgeyBudW1fam9ic19ydW4gPSAwXG4gIDsgam9ic19sZWZ0X3RoaXNfY3ljbGUgPSAwXG4gIDsgam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHlcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgZnJvbnQgPSAwXG4gIDsgbGVuZ3RoID0gMFxuICB9XG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIHQuZnJvbnQgPC0gMDtcbiAgdC5sZW5ndGggPC0gMDtcbiAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSAwXG47O1xuXG5sZXQgZ3JvdyB0ID1cbiAgbGV0IG9sZF9jYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgbGV0IG5ld19jYXBhY2l0eSA9IG9sZF9jYXBhY2l0eSAqIDIgaW5cbiAgbGV0IG9sZF9qb2JzID0gdC5qb2JzIGluXG4gIGxldCBvbGRfZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCBsZW4xID0gSW50Lm1pbiB0Lmxlbmd0aCAob2xkX2NhcGFjaXR5IC0gb2xkX2Zyb250KSAqIHNsb3RzX3Blcl9lbHQgaW5cbiAgbGV0IGxlbjIgPSAodC5sZW5ndGggKiBzbG90c19wZXJfZWx0KSAtIGxlbjEgaW5cbiAgbGV0IG5ld19qb2JzID0gY3JlYXRlX2FycmF5IH5jYXBhY2l0eTpuZXdfY2FwYWNpdHkgaW5cbiAgQS5ibGl0XG4gICAgfmxlbjpsZW4xXG4gICAgfnNyYzpvbGRfam9ic1xuICAgIH5zcmNfcG9zOihvbGRfZnJvbnQgKiBzbG90c19wZXJfZWx0KVxuICAgIH5kc3Q6bmV3X2pvYnNcbiAgICB+ZHN0X3BvczowO1xuICBBLmJsaXQgfmxlbjpsZW4yIH5zcmM6b2xkX2pvYnMgfnNyY19wb3M6MCB+ZHN0Om5ld19qb2JzIH5kc3RfcG9zOmxlbjE7XG4gIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICB0LmpvYnMgPC0gbmV3X2pvYnM7XG4gIHQuZnJvbnQgPC0gMFxuOztcblxubGV0IHNldCAodHlwZSBhKSB0IGkgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IG9mZnNldCA9IG9mZnNldCB0IGkgaW5cbiAgQS51bnNhZmVfc2V0IHQuam9icyBvZmZzZXQgKE9iai5yZXByIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpKTtcbiAgQS51bnNhZmVfc2V0IHQuam9icyAob2Zmc2V0ICsgMSkgKE9iai5yZXByIChmIDogYSAtPiB1bml0KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDIpIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBncm93IHQ7XG4gIHNldCB0IHQubGVuZ3RoIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJKb2JzLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSBnb3QgbmVnYXRpdmUgbnVtYmVyXCIgKG4gOiBpbnQpICh0IDogdCldO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIG5cbjs7XG5cbmxldCBjYW5fcnVuX2Ffam9iIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA+IDBcblxubGV0IHJ1bl9qb2IgdCAoc2NoZWR1bGVyIDogU2NoZWR1bGVyLnQpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHQubnVtX2pvYnNfcnVuIDwtIHQubnVtX2pvYnNfcnVuICsgMTtcbiAgU2NoZWR1bGVyLnNldF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGYgYVxuOztcblxubGV0IHJ1bl9leHRlcm5hbF9qb2JzIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSA9XG4gIGxldCBleHRlcm5hbF9qb2JzID0gc2NoZWR1bGVyLmV4dGVybmFsX2pvYnMgaW5cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIGV4dGVybmFsX2pvYnMgPiAwIGRvXG4gICAgbGV0IChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKSA9XG4gICAgICBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBleHRlcm5hbF9qb2JzXG4gICAgaW5cbiAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBkb25lXG47O1xuXG5sZXQgcnVuX2pvYnMgKHR5cGUgYSkgdCBzY2hlZHVsZXIgPVxuICAoKiBXZSBkbyB0aGUgW3RyeS13aXRoXSBvdXRzaWRlIG9mIHRoZSBbd2hpbGVdIGJlY2F1c2UgaXQgaXMgY2hlYXBlciB0aGFuIGRvaW5nIGFcbiAgICAgW3RyeS13aXRoXSBmb3IgZWFjaCBqb2IuICopXG4gICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYmVmb3JlIGVudGVyaW5nIHRoZSBsb29wLCBzaW5jZSBpdCBtaWdodCBlbnF1ZXVlIGEgam9iLFxuICAgICBjaGFuZ2luZyBbdC5sZW5ndGhdLiAqKVxuICB0cnlcbiAgICBydW5fZXh0ZXJuYWxfam9icyB0IHNjaGVkdWxlcjtcbiAgICB3aGlsZSBjYW5fcnVuX2Ffam9iIHQgZG9cbiAgICAgIGxldCB0aGlzX2pvYiA9IG9mZnNldCB0IDAgaW5cbiAgICAgIGxldCBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgPVxuICAgICAgICBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzIHRoaXNfam9iKVxuICAgICAgaW5cbiAgICAgIGxldCBmIDogYSAtPiB1bml0ID0gT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyAodGhpc19qb2IgKyAxKSkgaW5cbiAgICAgIGxldCBhIDogYSA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMikpIGluXG4gICAgICAoKiBXZSBjbGVhciBvdXQgdGhlIGpvYiByaWdodCBub3cgc28gdGhhdCBpdCBpc24ndCBsaXZlIGF0IHRoZSBuZXh0IG1pbm9yXG4gICAgICAgICBjb2xsZWN0aW9uLiAgV2UgdHJpZWQgbm90IGRvaW5nIHRoaXMgYW5kIHNhdyBzaWduaWZpY2FudCAoMTUlIG9yIHNvKSBwZXJmb3JtYW5jZVxuICAgICAgICAgaGl0cyBkdWUgdG8gc3B1cmlvdXMgcHJvbW90aW9uLiAqKVxuICAgICAgc2V0IHQgMCBkdW1teV9lIGR1bW15X2YgZHVtbXlfYTtcbiAgICAgIHQuZnJvbnQgPC0gKHQuZnJvbnQgKyAxKSBsYW5kIHQubWFzaztcbiAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gdC5qb2JzX2xlZnRfdGhpc19jeWNsZSAtIDE7XG4gICAgICAoKiBJdCBpcyBPSyBpZiBbcnVuX2pvYl0gb3IgW3J1bl9leHRlcm5hbF9qb2JzXSByYWlzZXMsIGluIHdoaWNoIGNhc2UgdGhlIGV4biBpc1xuICAgICAgICAgaGFuZGxlZCBieSB0aGUgb3V0ZXIgdHJ5LXdpdGguICBUaGUgb25seSBzaWRlIGVmZmVjdHMgd2UgaGF2ZSBkb25lIGFyZSB0byB0YWtlXG4gICAgICAgICB0aGUgam9iIG91dCBvZiB0aGUgcXVldWUgYW5kIGRlY3JlbWVudCBbam9ic19sZWZ0X3RoaXNfY3ljbGVdLiAgW3J1bl9qb2JdIG9yXG4gICAgICAgICBbcnVuX2V4dGVybmFsX2pvYnNdIG1heSBzaWRlIGVmZmVjdCBbdF0sIGVpdGhlciBieSBlbnF1ZXVlaW5nIGpvYnMsIG9yIGJ5XG4gICAgICAgICBjbGVhcmluZyBbdF0uICopXG4gICAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICAgICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYXQgZWFjaCBpdGVyYXRpb24gb2YgdGhlIFt3aGlsZV0gbG9vcCwgZm9yIGZhaXJuZXNzLiAqKVxuICAgICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXJcbiAgICBkb25lO1xuICAgIE9rICgpXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAoKiBXZSBjYWxsIFtFeG4uYmFja3RyYWNlXSBpbW1lZGlhdGVseSBhZnRlciBjYXRjaGluZyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLCB0b1xuICAgICAgIGVuc3VyZSB0aGVyZSBpcyBubyBpbnRlcnZlbmluZyBjb2RlIHRoYXQgaW50ZXJmZXJlcyB3aXRoIHRoZSBnbG9iYWwgYmFja3RyYWNlXG4gICAgICAgc3RhdGUuICopXG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICBFcnJvciAoZXhuLCBiYWNrdHJhY2UpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGV4dGVybmFsIGZvcm1hdCA6IGZsb2F0IC0+IHN0cmluZyAtPiBzdHJpbmcgPSBcImNvcmVfdGltZV9uc19mb3JtYXRcIlxuXG4gICgqIFdlIHVzZSBhIG1vcmUgcGxlYXNhbnQgZm9ybWF0IHRoYW4gW0NvcmUuVGltZV9ucy5zZXhwX29mX3RdLFxuICAgICB3aGljaCBoYXMgdG8gYmUgbWVzc2llciBmb3Igcm91bmQgdHJpcHBhYmlsaXR5LiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIFslc2V4cFxuICAgICAgKGZvcm1hdCAodCB8PiB0b19zcGFuX3NpbmNlX2Vwb2NoIHw+IFNwYW4udG9fc2VjKSBcIiVZLSVtLSVkVCVIOiVNOiVTJXpcIiA6IHN0cmluZyldXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIGluY2x1ZGUgVGltaW5nX3doZWVsLkFsYXJtXG5cbiAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgKCogMS84dGggb2YgYSBtaWxsaXNlY29uZCBhbGFybV9wcmVjaXNpb24gc2VlbXMgc3VmZmljaWVudCB0byBhdm9pZCBoYXZpbmcgbWFueSBhbGFybXNcbiAgICAgaW4gdGhlIHNhbWUgaW50ZXJ2YWwsIHdoaWNoIGF2b2lkcyBxdWFkcmF0aWMgaW5zZXJ0aW9uIHNvcnQgd2hlbiBmaXJpbmcgYWxhcm1zLiAgQW5kXG4gICAgIHRoZSBsZXZlbCBiaXRzIGdpdmUgdXMgbGV2ZWxzIG9mID4xcywgPjFtLCA+MWgsID4xZC4gIFNlZSB0ZXN0IGluXG4gICAgIFsuLi90ZXN0L3Rlc3Rfc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWxdLiAqKVxuICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMzsgNjsgNjsgNSBdKVxuICAgICgpXG47O1xuXG50eXBlIGNhbGxiYWNrID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBJZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5TdGF0dXMudCA9XG4gICAgICAgIHwgRmlyZWQgKCogaW4gW2ZpcmVkX2V2ZW50c10sIHJlYWR5IHRvIHJ1biAqKVxuICAgICAgICB8IEhhcHBlbmluZyAoKiBjdXJyZW50bHkgcnVubmluZyB0aGUgY2FsbGJhY2sgKilcbiAgICAgICAgfCBTY2hlZHVsZWQgKCogaW4gdGhlIHRpbWluZyB3aGVlbCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkICgqIG5vdCBpbiB0aW1pbmcgd2hlZWwgb3IgW2ZpcmVkX2V2ZW50c10gKilcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgICBsZXQgdHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18gPVxuICAgICAgICBtYXRjaCBmcm9tLCB0b18gd2l0aFxuICAgICAgICB8IEZpcmVkLCBIYXBwZW5pbmcgKCogc3RhcnRlZCBydW5uaW5nIGNhbGxiYWNrICopXG4gICAgICAgIHwgRmlyZWQsIFVuc2NoZWR1bGVkICgqIGFib3J0ZWQgKilcbiAgICAgICAgKCogW3Jlc2NoZWR1bGVfKl0gZ29lcyB0aHJvdWdoIGFuIGludGVybWVkaWF0ZSBbRmlyZWQsIFVuc2NoZWR1bGVkXSBzdGF0ZSxcbiAgICAgICAgICAgc28gd2UgbmV2ZXIgdHJhbnNpdGlvbiBmcm9tIFtGaXJlZF0gZGlyZWN0bHkgdG8gW1NjaGVkdWxlZF0uICopXG4gICAgICAgIHwgSGFwcGVuaW5nLCBTY2hlZHVsZWQgKCogZm9yIHJlcGVhdGluZyBldmVudHMgKilcbiAgICAgICAgfCBIYXBwZW5pbmcsIFVuc2NoZWR1bGVkICgqIGV2ZW50IGNhbGxiYWNrIGZpbmlzaGVkICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBGaXJlZCAoKiBtb3ZlZCBmcm9tIHRpbWluZyB3aGVlbCB0byBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgICB8IFNjaGVkdWxlZCwgVW5zY2hlZHVsZWQgKCogYWJvcnRlZCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBGaXJlZCAoKiBldmVudCBzY2hlZHVsZWQgaW4gdGhlIHBhc3QgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCwgU2NoZWR1bGVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgZnV0dXJlICopIC0+IHRydWVcbiAgICAgICAgfCAoRmlyZWQgfCBIYXBwZW5pbmcgfCBTY2hlZHVsZWQgfCBVbnNjaGVkdWxlZCksIF8gLT4gZmFsc2VcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIGV2ZW50ID0gVHlwZXMuRXZlbnQudFxuXG4gICAgbGV0IHNleHBfb2ZfZXZlbnRcbiAgICAgICAgICAoeyBhbGFybSA9IF9cbiAgICAgICAgICAgOyBhdFxuICAgICAgICAgICA7IGNhbGxiYWNrID0gX1xuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gX1xuICAgICAgICAgICA7IGludGVydmFsXG4gICAgICAgICAgIDsgbmV4dF9maXJlZCA9IF9cbiAgICAgICAgICAgOyBwcmV2X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHN0YXR1c1xuICAgICAgICAgICB9IDpcbiAgICAgICAgICAgICBldmVudClcbiAgICAgID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgOyBpbnRlcnZhbCA6IChUaW1lX25zLlNwYW4udCBvcHRpb25bQHNleHAub3B0aW9uXSlcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgICAgKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dFxuICAgICAgICAgdG8gW09iai5tYWdpY11zLiAqKVxuICAgICAgbW9kdWxlIEV2ZW50X2lzX2Jsb2NrIDogc2lnIGVuZCA9IHN0cnVjdFxuICAgICAgICBvcGVuIFR5cGVzXG4gICAgICAgIG9wZW4gRXZlbnRcblxuICAgICAgICB0eXBlIF90ID0gdCA9XG4gICAgICAgICAgeyAoKiBtdXN0IG5ldmVyIGJlIGltbWVkaWF0ZSAqKVxuICAgICAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgICAgICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICAgICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgICAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuT3B0aW9uLnRcblxuICAgICAgKCogVXNpbmcgYW4gaW1tZWRpYXRlIHJhdGhlciB0aGFuIGEgc3RhdGljYWxseS1hbGxvY2F0ZWQgcmVjb3JkIGhlcmUgc2VlbXMgdG9cbiAgICAgICAgIGltcHJvdmUgcGVyZm9ybWFuY2Ugbm90aWNlYWJseSAoWy4uL2JlbmNoL2Jpbi9iZW5jaF90aW1lX3NvdXJjZS5leGVdIGJlbmNobWFya1xuICAgICAgICAgaXMgZmFzdGVyIGJ5IH4xMG5zIHBlciBhbGFybSksIHByZXN1bWFibHkgYmVjYXVzZSBpdCBhdm9pZHMgdGhlIGV4cGVuc2l2ZVxuICAgICAgICAgcGFydHMgb2YgY2FtbF9tb2RpZnkuICopXG4gICAgICBsZXQgbm9uZSA9IChPYmoubWFnaWMgTm9uZSA6IHQpICgqIGFuIGFyYml0cmFyeSBpbW1lZGlhdGUgKilcblxuICAgICAgbGV0IHNvbWUgPSAoT2JqLm1hZ2ljIDogVHlwZXMuRXZlbnQudCAtPiB0KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHBoeXNfZXF1YWwgdCBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgZmlyc3Rfc29tZSB0MSB0MiA9IGlmIGlzX3NvbWUgdDEgdGhlbiB0MSBlbHNlIHQyXG5cbiAgICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSAoT2JqLm1hZ2ljIDogdCAtPiBUeXBlcy5FdmVudC50KVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBvcGVuIE9wdGlvbmFsX3N5bnRheFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFslc2V4cCAoKV1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBldmVudCldXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJXNleHAgXCJbU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuT3B0aW9uLnZhbHVlX2V4biBOb25lXVwiXVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19vcHRpb24gdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gU29tZSBldmVudFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBzb21lIGV2ZW50XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQudCA9XG4gICAgICB7ICgqIFthbGFybV0gaXMgbm9uLW51bGwgaWZmIHRoZSBldmVudCBpcyBpbiB0aGUgdGltaW5nIHdoZWVsLiAqKVxuICAgICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udFxuICAgICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbaW50ZXJ2YWxdIGlzIHRoZSBwZXJpb2QgZm9yIHRoZSBwZXJpb2RpYyBldmVudHMuICopXG4gICAgICAgIG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICAgIDsgKCogW25leHRfZmlyZWRdIGFuZCBbcHJldl9maXJlZF0gY3JlYXRlIGEgZG91Ymx5LWxpbmtlZCAobm9uLWNpcmN1bGFyKSBsaXN0IG9mXG4gICAgICAgICAgIGZpcmVkIGV2ZW50cywgbGlua2VkIHZpYSB0aGVzZSBmaWVsZHMuIEFuIGV2ZW50IGlzIGFkZGVkIHRvIHRoZSBsaXN0IHdoZW5cbiAgICAgICAgICAgaXQgZmlyZXMsIGVpdGhlciBiZWNhdXNlIGl0IGlzIGFkZGVkIHdpdGggYSB0aW1lIGluIHRoZSBwYXN0LCBvclxuICAgICAgICAgICBiZWNhdXNlIHRpbWUgYWR2YW5jZXMuIFthZHZhbmNlX2J5X2FsYXJtc10gaXRlcmF0ZXMgb3ZlciB0aGUgZXZlbnRzXG4gICAgICAgICAgIGluIFtuZXh0X2ZpcmVkXSBhbmQgcnVucyB0aGVtLCBlbXB0eWluZyB0aGUgbGlzdC4gW25vbmVdIGlzIHVzZWQgdG9cbiAgICAgICAgICAgaW5kaWNhdGUgdGhlIGVuZCBvZiB0aGUgbGlua2VkIGxpc3Qgb2YgZmlyZWQgZXZlbnRzLiAqKVxuICAgICAgICBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IFslc2V4cF9vZjogZXZlbnRdXG5cbiAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgICBGaWVsZHMuaXRlclxuICAgICAgICAgIH5hbGFybTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgICAgICAgICAgICAoQWxhcm0uaXNfbnVsbCBhbGFybSlcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEZpcmVkIHwgSGFwcGVuaW5nIHwgVW5zY2hlZHVsZWQgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB8IFNjaGVkdWxlZCAtPiBmYWxzZSkpKVxuICAgICAgICAgIH5hdDppZ25vcmVcbiAgICAgICAgICB+Y2FsbGJhY2s6aWdub3JlXG4gICAgICAgICAgfmV4ZWN1dGlvbl9jb250ZXh0Omlnbm9yZVxuICAgICAgICAgIH5pbnRlcnZhbDppZ25vcmVcbiAgICAgICAgICB+bmV4dF9maXJlZDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG5leHRfZmlyZWQgLT5cbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChuZXh0X2ZpcmVkIDogT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbbmV4dF9maXJlZF0gY2FuIGJlIFtOb25lXSBldmVuIGlmIHRoZSBldmVudCBzdGF0dXMgaXMgRmlyZWQsIGFzc3VtaW5nXG4gICAgICAgICAgICAgICAgICAgIGl0J3MgYXQgdGhlIGVuZCBvZiB0aGUgZmlyZWQgZXZlbnRzIGxpc3QgKilcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgU29tZSBuZXh0X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFN0YXR1cy50XSB0LnN0YXR1cyB+ZXhwZWN0OkZpcmVkO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKE9wdGlvbi5zb21lIHQpIG5leHRfZmlyZWQucHJldl9maXJlZCkpKVxuICAgICAgICAgIH5wcmV2X2ZpcmVkOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gcHJldl9maXJlZCAtPlxuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKHByZXZfZmlyZWQgOiBPcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICgqIFtwcmV2X2ZpcmVkXSBjYW4gYmUgW05vbmVdIGV2ZW4gaWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBGaXJlZCwgYXNzdW1pbmdcbiAgICAgICAgICAgICAgICAgICAgaXQncyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJlZCBldmVudHMgbGlzdCAqKVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBTb21lIHByZXZfZmlyZWQgLT5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogU3RhdHVzLnRdIHQuc3RhdHVzIH5leHBlY3Q6RmlyZWQ7XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAoT3B0aW9uLnNvbWUgdCkgcHJldl9maXJlZC5uZXh0X2ZpcmVkKSkpXG4gICAgICAgICAgfnN0YXR1czppZ25vcmUpXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzIHQgdG9fID1cbiAgICAgIGxldCBmcm9tID0gdC5zdGF0dXMgaW5cbiAgICAgIGlmIG5vdCAoU3RhdHVzLnRyYW5zaXRpb25faXNfYWxsb3dlZCB+ZnJvbSB+dG9fKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBbJWhlcmVdXG4gICAgICAgICAgICAgIFwiYnVnIC0tIHNldF9zdGF0dXMgdHJhbnNpdGlvbiBub3QgYWxsb3dlZFwiXG4gICAgICAgICAgICAgIChmcm9tIDogU3RhdHVzLnQpXG4gICAgICAgICAgICAgICh0b18gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgfmV2ZW50Oih0IDogdCldO1xuICAgICAgdC5zdGF0dXMgPC0gdG9fXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzX2lmIH5pcyB0IHRvXyA9IGlmIFN0YXR1cy5lcXVhbCBpcyB0LnN0YXR1cyB0aGVuIHNldF9zdGF0dXMgdCB0b19cbiAgICBsZXQgc2NoZWR1bGVkX2F0ID0gYXRcbiAgZW5kXG5cbiAgbW9kdWxlIEpvYl9vcl9ldmVudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSm9iX29yX2V2ZW50XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICAgICBsZXQgKEsgaykgPSBraW5kIHQgaW5cbiAgICAgIG1hdGNoIGssIHByb2plY3QgayB0IHdpdGhcbiAgICAgIHwgRXZlbnQsIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBFdmVudC50KV1cbiAgICAgIHwgSm9iLCBfIC0+XG4gICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgIHBvb2wgcG9pbnRlcnMsIHdoaWNoIGFyZSB1bmluZm9ybWF0aXZlLiAqKVxuICAgICAgICBbJW1lc3NhZ2UgXCI8Sm9iLnQ+XCJdXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAtJ3J3IHQgPSAncncgVHlwZXMuVGltZV9zb3VyY2UudDEgPVxuICAgIHsgaWQgOiBJZC50XG4gICAgOyAoKiBbYWR2YW5jZV9lcnJvcnNdIGFjY3VtdWxhdGVzIGVycm9ycyByYWlzZWQgYnkgYWxhcm1zIHJ1biBieVxuICAgICAgICAgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7ICgqIFthbV9hZHZhbmNpbmddIGlzIHRydWUgb25seSBkdXJpbmcgW2FkdmFuY2VfYnlfYWxhcm1zXSwgYW5kIGlzIHVzZWQgdG8gY2F1c2VcbiAgICAgICAgIGNhbGxiYWNrcyB0byByYWlzZSBpZiB0aGV5IGNhbGwgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7ICgqIFtmaXJlZF9ldmVudHNdIGlzIHRoZSBmcm9udCBvZiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cyxcbiAgICAgICAgIHdoaWNoIGlzIHN0b3JlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtFdmVudC5hdF0uICopXG4gICAgICBtdXRhYmxlIGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBbbW9zdF9yZWNlbnRseV9maXJlZF0gaXMgdGhlIGV2ZW50IHRoYXQgd2FzIG1vc3QgcmVjZW50bHkgaW5zZXJ0ZWQgaW50b1xuICAgICAgICAgW2ZpcmVkX2V2ZW50c10uIEl0IGlzIHVzZWQgYXMgYW4gb3B0aW1pemF0aW9uIHRvIGFsbG93IGluc2VydGlvbiBvZlxuICAgICAgICAgc3Vic2VxdWVudCBldmVudHMgdG8gc3RhcnQgbGF0ZXIgaW4gdGhlIGxpc3QgcmF0aGVyIHRoYW4gYXQgdGhlIGJlZ2lubmluZy5cbiAgICAgICAgIEl0IHNwZWNpZmljYWxseSBhdm9pZHMgcXVhZHJhdGljIGJlaGF2aW9yIHdoZW4gaW5zZXJ0aW5nIG11bHRpcGxlIGV2ZW50c1xuICAgICAgICAgdGhhdCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGltZSAtLSB0aGUgdGltZSBzb3VyY2UgZmlyZXMgc3VjaCBldmVudHMgaW5cbiAgICAgICAgIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQsIGFuZCB3ZSB3YW50IHRoZW0gdG8gYmUgaW4gdGhhdCBzYW1lIG9yZGVyIGluXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gKilcbiAgICAgIG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBXZSBzdG9yZSBbaGFuZGxlX2ZpcmVkXSBpbiBbdF0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBldmVyeSB0aW1lIHdlIGNhbGxcbiAgICAgICAgIFthZHZhbmNlX2Nsb2NrXS4gKilcbiAgICAgIGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgaXNfd2FsbF9jbG9jayA6IGJvb2xcbiAgICA7IHNjaGVkdWxlciA6IFNjaGVkdWxlcjAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICgqIFdlIGRvbid0IGluY2x1ZGUgdGhlIFtpZF0gaW4gdGhlIHNleHAgYmVjYXVzZSB0aGUgdXNlciAocmlnaHRseSkgY2FuJ3QgY29udHJvbCBpdCwgc29cbiAgICAgaXQncyBoYXJkIHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYyBpbiB0ZXN0cy4gKilcbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgaWQgPSBfXG4gICAgICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBfXG4gICAgICAgIDsgYW1fYWR2YW5jaW5nID0gX1xuICAgICAgICA7IGV2ZW50c1xuICAgICAgICA7IGZpcmVkX2V2ZW50cyA9IF9cbiAgICAgICAgOyBoYW5kbGVfZmlyZWQgPSBfXG4gICAgICAgIDsgaXNfd2FsbF9jbG9ja1xuICAgICAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBfXG4gICAgICAgIDsgc2NoZWR1bGVyID0gX1xuICAgICAgICB9XG4gICAgPVxuICAgIGxldCBub3cgPSBUaW1pbmdfd2hlZWwubm93IGV2ZW50cyBpblxuICAgIGlmIGlzX3dhbGxfY2xvY2tcbiAgICB0aGVuIFslbWVzc2FnZSBcIndhbGxfY2xvY2tcIiAobm93IDogVGltZV9ucy50KV1cbiAgICBlbHNlIChcbiAgICAgIGxldCBhbGxfZXZlbnRzID0gcmVmIFtdIGluXG4gICAgICBUaW1pbmdfd2hlZWwuaXRlciBldmVudHMgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgICBhbGxfZXZlbnRzIDo9IChBbGFybS5hdCBldmVudHMgYWxhcm0sIEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkgOjogIWFsbF9ldmVudHMpO1xuICAgICAgbGV0IGV2ZW50cyA9XG4gICAgICAgIExpc3Quc29ydCAhYWxsX2V2ZW50cyB+Y29tcGFyZTooZnVuIChhdDEsIF8pIChhdDIsIF8pIC0+IFRpbWVfbnMuY29tcGFyZSBhdDEgYXQyKVxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgIGluXG4gICAgICBbJW1lc3NhZ2UgXCJcIiAobm93IDogVGltZV9ucy50KSAoZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgbGlzdCldKVxuICA7O1xuXG4gIGxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5cbiAgbGV0IGlzX2luX2ZpcmVkX2V2ZW50cyA9XG4gICAgbGV0IHJlYyBzZWFyY2ggY3VycmVudCB+dGFyZ2V0X2V2ZW50ID1cbiAgICAgIG1hdGNoJW9wdGlvbmFsIChjdXJyZW50IDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGN1cnJlbnQgLT5cbiAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50IHRhcmdldF9ldmVudCB8fCBzZWFyY2ggY3VycmVudC5uZXh0X2ZpcmVkIH50YXJnZXRfZXZlbnRcbiAgICBpblxuICAgIGZ1biB0IHRhcmdldF9ldmVudCAtPiBzZWFyY2ggdC5maXJlZF9ldmVudHMgfnRhcmdldF9ldmVudFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzICh0eXBlIHJ3KSB+am9iOihqb2JfaW52YXJpYW50IDogSm9iLnQgLT4gdW5pdCkgKHQgOiBydyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmlkOmlnbm9yZVxuICAgICAgICB+YWR2YW5jZV9lcnJvcnM6aWdub3JlXG4gICAgICAgIH5hbV9hZHZhbmNpbmc6aWdub3JlXG4gICAgICAgIH5ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZXZlbnRzIC0+XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLmludmFyaWFudCBpZ25vcmUgZXZlbnRzO1xuICAgICAgICAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgICBsZXQgam9iX29yX2V2ZW50ID0gQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtIGluXG4gICAgICAgICAgICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgICAgICAgICAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICAgICAgICAgICAgICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgICAgICAgICAgICAgIHwgSm9iLCBqb2IgLT4gam9iX2ludmFyaWFudCBqb2JcbiAgICAgICAgICAgICAgIHwgRXZlbnQsIGV2ZW50IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBhbGFybSBldmVudC5hbGFybSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF0gZXZlbnQuYXQgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIGFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogRXZlbnQuU3RhdHVzLnRdIGV2ZW50LnN0YXR1cyB+ZXhwZWN0OlNjaGVkdWxlZDtcbiAgICAgICAgICAgICAgICAgRXZlbnQuaW52YXJpYW50IGV2ZW50KSkpXG4gICAgICAgIH5maXJlZF9ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KSAtPlxuICAgICAgICAgICAgIGxldCByZWMgY2hlY2tfZXZlbnQgKGN1cnJlbnQgOiBFdmVudC50KSA9XG4gICAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIGN1cnJlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdCkpO1xuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGN1cnJlbnQubmV4dF9maXJlZCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCBuZXh0LmF0KTtcbiAgICAgICAgICAgICAgICAgY2hlY2tfZXZlbnQgbmV4dFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGZpcmVkX2V2ZW50cyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGNoZWNrX2V2ZW50IGV2ZW50KSlcbiAgICAgICAgfmhhbmRsZV9maXJlZDppZ25vcmVcbiAgICAgICAgfmlzX3dhbGxfY2xvY2s6aWdub3JlXG4gICAgICAgIH5tb3N0X3JlY2VudGx5X2ZpcmVkOlxuICAgICAgICAgIChjaGVjayAoZnVuIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGFzc2VydCAoaXNfaW5fZmlyZWRfZXZlbnRzIHQgZXZlbnQpKSlcbiAgICAgICAgfnNjaGVkdWxlcjppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID0gaW52YXJpYW50X3dpdGhfam9icyB+am9iOihmdW4gXyAtPiAoKSkgdFxuZW5kXG5cbm9wZW4gVDFcblxudHlwZSB0ID0gcmVhZCBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWFkX3dyaXRlIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuZW5kXG5cbmxldCBpZCB0ID0gdC5pZFxubGV0IGlzX3dhbGxfY2xvY2sgdCA9IHQuaXNfd2FsbF9jbG9ja1xubGV0IGxlbmd0aCB0ID0gVGltaW5nX3doZWVsLmxlbmd0aCB0LmV2ZW50c1xubGV0IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9IFRpbWluZ193aGVlbC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQuZXZlbnRzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcblxuKCogW2ZpcmUgdCBldmVudF0gc2V0cyBbZXZlbnQuc3RhdHVzID0gRmlyZWRdIGFuZCBpbnNlcnRzIFtldmVudF0gaW50b1xuICAgW3QuZmlyZWRfZXZlbnRzXSBpbiBzb3J0ZWQgdGltZSBvcmRlci4gKilcbmxldCBmaXJlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IEZpcmVkO1xuICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICBsZXQgKCkgPVxuICAgICgqIElmIFtldmVudF0gYmVsb25ncyBhZnRlciBbdC5tb3N0X3JlY2VudGx5X2ZpcmVkXSwgdGhlbiB3ZSBzdGFydCB0aGVcbiAgICAgICBpbnNlcnRpb24gdGhlcmUgcmF0aGVyIHRoYW4gYXQgdGhlIGZyb250IG9mIFt0LmZpcmVkX2V2ZW50c10uIFRoaXMgd29ya3NcbiAgICAgICBuaWNlbHkgaWYgd2UncmUgZ2V0dGluZyB0aGUgYWxhcm1zIGluIG5vbi1kZWNyZWFzaW5nIHRpbWUgb3JkZXIsIHdoaWNoIGlzXG4gICAgICAgY2xvc2UgdG8gd2hhdCBbVGltaW5nX3doZWVsXSBwcm92aWRlcyAoYWx0aG91Z2ggW1RpbWluZ193aGVlbF0gZG9lc24ndFxuICAgICAgIGd1YXJhbnRlZSB0aW1lIG9yZGVyaW5nIGZvciB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbCkuICopXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgd2hlbiBUaW1lX25zLiggPD0gKSBtb3N0X3JlY2VudGx5X2ZpcmVkLmF0IGV2ZW50LmF0IC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIG1vc3RfcmVjZW50bHlfZmlyZWQ7XG4gICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIG1vc3RfcmVjZW50bHlfZmlyZWQubmV4dF9maXJlZFxuICAgIHwgXyAtPlxuICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gdC5maXJlZF9ldmVudHNcbiAgaW5cbiAgdC5tb3N0X3JlY2VudGx5X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50O1xuICAoKiBXZSB1c2UgW1RpbWVfbnMuKCA8PSApXSByYXRoZXIgdGhhbiBbPF0gc28gdGhhdCBbZXZlbnRdIGlzIGFkZGVkIGFmdGVyIG90aGVyXG4gICAgIGV2ZW50cyBhdCB0aGUgc2FtZSB0aW1lLiBTaW5jZSBbVGltaW5nX3doZWVsXSBmaXJlcyBhbGFybXMgaW4gYSBidWNrZXQgaW5cbiAgICAgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCwgdXNpbmcgWzw9XSBrZWVwcyBldmVudHMgYXQgdGhlIHNhbWVcbiAgICAgdGltZSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLiAqKVxuICB3aGlsZVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgbGV0IGNvbnRpbnVlID0gVGltZV9ucy4oIDw9ICkgbmV4dC5hdCBldmVudC5hdCBpblxuICAgICAgaWYgY29udGludWVcbiAgICAgIHRoZW4gKFxuICAgICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWQ7XG4gICAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbmV4dC5uZXh0X2ZpcmVkKTtcbiAgICAgIGNvbnRpbnVlXG4gIGRvXG4gICAgKClcbiAgZG9uZTtcbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIGluXG4gIG1hdGNoJW9wdGlvbmFsIChldmVudC5wcmV2X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIHwgU29tZSBwcmV2IC0+IHByZXYubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuOztcblxubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LmV2ZW50c1xubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG5cbmxldCBuZXh0X2FsYXJtX3J1bnNfYXQgdCA9XG4gIGlmIEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4gIHRoZW4gU29tZSAodGltaW5nX3doZWVsX25vdyB0KVxuICBlbHNlIFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG47O1xuXG5sZXQgbm93IHQgPSBpZiB0LmlzX3dhbGxfY2xvY2sgdGhlbiBUaW1lX25zLm5vdyAoKSBlbHNlIHRpbWluZ193aGVlbF9ub3cgdFxubGV0IHRpbWluZ193aGVlbF9ub3cgPSB0aW1pbmdfd2hlZWxfbm93XG5cbmxldCBzY2hlZHVsZSB0IChldmVudCA6IEV2ZW50LnQpID1cbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBTY2hlZHVsZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIFRpbWluZ193aGVlbC5hZGQgdC5ldmVudHMgfmF0OmV2ZW50LmF0IChldmVudCB8PiBKb2Jfb3JfZXZlbnQub2ZfZXZlbnQpXG47O1xuXG5sZXQgcmVtb3ZlX2Zyb21fZmlyZWQgdCAoZXZlbnQgOiBFdmVudC50KSB+bmV3X3N0YXR1cyA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgZXZlbnQgbW9zdF9yZWNlbnRseV9maXJlZFxuICAgICAgdGhlblxuICAgICAgICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLmZpcnN0X3NvbWUgZXZlbnQubmV4dF9maXJlZCBldmVudC5wcmV2X2ZpcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiB0LmZpcmVkX2V2ZW50cyA8LSBldmVudC5uZXh0X2ZpcmVkXG4gICAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgZXZlbnQubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBuZXdfc3RhdHVzXG47O1xuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFdmVudFxuXG4gIGxldCBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayA9XG4gICAgeyBhbGFybSA9IEFsYXJtLm51bGwgKClcbiAgICA7IGF0XG4gICAgOyBjYWxsYmFja1xuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG4gICAgOyBpbnRlcnZhbFxuICAgIDsgbmV4dF9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBwcmV2X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHN0YXR1cyA9IFVuc2NoZWR1bGVkXG4gICAgfVxuICA7O1xuXG4gIGxldCBhZGQgdCBldmVudCA9XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgZXZlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICB0aGVuIGZpcmUgdCBldmVudFxuICAgIGVsc2Ugc2NoZWR1bGUgdCBldmVudFxuICA7O1xuXG4gIGxldCBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICBsZXQgZXZlbnQgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayBpblxuICAgIGFkZCB0IGV2ZW50O1xuICAgIGV2ZW50XG4gIDs7XG5cbiAgbGV0IGF0IHQgYXQgY2FsbGJhY2sgPSBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID1cbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDooVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pIH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuICA7O1xuXG4gIGxldCByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbiA9XG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IGFsYXJtX3ByZWNpc2lvbiB0IGluXG4gICAgaWYgVGltZV9ucy5TcGFuLiggPCApIHNwYW4gYWxhcm1fcHJlY2lzaW9uXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludGVydmFsIHNwYW4gc21hbGxlciB0aGFuIGFsYXJtIHByZWNpc2lvblwiXG4gICAgICAgICAgICAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KVxuICAgICAgICAgICAgKGFsYXJtX3ByZWNpc2lvbiA6IFRpbWVfbnMuU3Bhbi50KV1cbiAgOztcblxuICBsZXQgYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA9XG4gICAgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW47XG4gICAgY3JlYXRlX2FuZF9hZGQgdCB+YXQ6KG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbikgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IEN1cnJlbnRseV9oYXBwZW5pbmdcbiAgICAgIHwgUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IChldmVudCA6IHQpIDogQWJvcnRfcmVzdWx0LnQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBIYXBwZW5pbmcgLT5cbiAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgfCBOb25lIC0+IEN1cnJlbnRseV9oYXBwZW5pbmdcbiAgICAgICB8IFNvbWUgKF8gOiBUaW1lX25zLlNwYW4udCkgLT5cbiAgICAgICAgIGV2ZW50LmludGVydmFsIDwtIE5vbmU7XG4gICAgICAgICBPaylcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgT2tcbiAgICB8IFNjaGVkdWxlZCAtPlxuICAgICAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBVbnNjaGVkdWxlZDtcbiAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgZXZlbnQuYWxhcm07XG4gICAgICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICAgICAgT2tcbiAgICB8IFVuc2NoZWR1bGVkIC0+IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgOztcblxuICBsZXQgYWJvcnRfaWZfcG9zc2libGUgdCBldmVudCA9IGlnbm9yZSAoYWJvcnQgdCBldmVudCA6IEFib3J0X3Jlc3VsdC50KVxuXG4gIGxldCBhYm9ydF9leG4gdCBldmVudCA9XG4gICAgbWF0Y2ggYWJvcnQgdCBldmVudCB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgcmVhc29uIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLmFib3J0X2V4bl0gY2Fubm90IGFib3J0IGV2ZW50XCJcbiAgICAgICAgICAgIChyZWFzb24gOiBBYm9ydF9yZXN1bHQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0IGNhbGxiYWNrID0gY3JlYXRlX2ludGVybmFsIHQgfmF0OlRpbWVfbnMuZXBvY2ggfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVybmFsIHQgKGV2ZW50IDogdCkgYXQgfmludGVydmFsID1cbiAgICAoKiBbRmlyZWRdIGlzIGRpc2FsbG93ZWQgdG8gcHJldmVudCB0aGUgdXNlciBmcm9tIGVudGVyaW5nIGludG8gYW4gaW5maW5pdGUgbG9vcC4gIFRoZVxuICAgICAgIHVzZXIgY291bGQgc3BlY2lmeSBbYXRdIGluIHRoZSBwYXN0IHdoaWNoIHdvdWxkIGNvbnN0YW50bHkgYWRkIFtjYWxsYmFja10gdG8gdGhlXG4gICAgICAgYmFjayBvZiBbdC5uZXh0X2ZpcmVkXSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIFtjYWxsYmFja10uICopXG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IChIYXBwZW5pbmcgfCBTY2hlZHVsZWQgfCBGaXJlZCkgYXMgc3RhdHVzIC0+XG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslc2V4cCBcImNhbm5vdCBzY2hlZHVsZSBhbiBldmVudCB3aXRoIHN0YXR1c1wiLCAoc3RhdHVzIDogRXZlbnQuU3RhdHVzLnQpXVxuICAgIHwgVW5zY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gaW50ZXJ2YWw7XG4gICAgICBhZGQgdCBldmVudDtcbiAgICAgIE9rICgpXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX2F0IHQgZXZlbnQgYXQgPSBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IGV2ZW50IGF0IH5pbnRlcnZhbDpOb25lXG4gIGxldCBzY2hlZHVsZV9hZnRlciB0IGV2ZW50IHNwYW4gPSBzY2hlZHVsZV9hdCB0IGV2ZW50IChUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbilcblxuICBsZXQgc2NoZWR1bGVfYXRfaW50ZXJ2YWxzIHQgZXZlbnQgc3BhbiA9XG4gICAgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW47XG4gICAgc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCBldmVudCAobm93IHQpIH5pbnRlcnZhbDooU29tZSBzcGFuKVxuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2F0IHQgZXZlbnQgYXQgOiB1bml0ID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgRmlyZWQgLT5cbiAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM6VW5zY2hlZHVsZWQ7XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGFkZCB0IGV2ZW50XG4gICAgfCBIYXBwZW5pbmcgLT5cbiAgICAgICgqIEhhcHBlbmluZyBldmVudHMgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIFtmaXJlZF0uICopXG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGFkZCB0IGV2ZW50XG4gICAgfCBTY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgaWYgVGltZV9ucy4oID4gKSBhdCAodGltaW5nX3doZWVsX25vdyB0KVxuICAgICAgdGhlbiBUaW1pbmdfd2hlZWwucmVzY2hlZHVsZSB0LmV2ZW50cyBldmVudC5hbGFybSB+YXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGV2ZW50LmFsYXJtO1xuICAgICAgICBmaXJlIHQgZXZlbnQpXG4gICAgfCBVbnNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBldmVudC5pbnRlcnZhbCA8LSBOb25lO1xuICAgICAgYWRkIHQgZXZlbnRcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hZnRlciB0IGV2ZW50IHNwYW4gPSByZXNjaGVkdWxlX2F0IHQgZXZlbnQgKFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKVxuXG5lbmRcblxubGV0IHJ1bl9hZnRlciB0IHNwYW4gY2FsbGJhY2sgPSBpZ25vcmUgKEV2ZW50LmFmdGVyIHQgc3BhbiBjYWxsYmFjayA6IEV2ZW50LnQpXG5sZXQgcnVuX2F0IHQgYXQgY2FsbGJhY2sgPSBpZ25vcmUgKEV2ZW50LmF0IHQgYXQgY2FsbGJhY2sgOiBFdmVudC50KVxuXG5sZXQgcnVuX2F0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgPVxuICBpZ25vcmUgKEV2ZW50LmF0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgOiBFdmVudC50KVxuOztcblxudHlwZSBzZW5kX2V4biA9IE1vbml0b3IwLnQgLT4gP2JhY2t0cmFjZTpbIGBHZXQgfCBgVGhpcyBvZiBCYWNrdHJhY2UudCBdIC0+IGV4biAtPiB1bml0XG5cbmxldCBydW5fZmlyZWRfZXZlbnRzIHQgfihzZW5kX2V4biA6IHNlbmRfZXhuIG9wdGlvbikgPVxuICBsZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IHQuc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgd2hpbGVcbiAgICBtYXRjaCVvcHRpb25hbCAodC5maXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBldmVudCAtPlxuICAgICAgKG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgICAgfCBIYXBwZW5pbmcgfCBTY2hlZHVsZWQgfCBVbnNjaGVkdWxlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IEZpcmVkIC0+XG4gICAgICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOkhhcHBlbmluZztcbiAgICAgICAgICgqIFdlIHNldCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBbZXZlbnQuY2FsbGJhY2tdIHJ1bnMgaW4gdGhlIHNhbWUgY29udGV4dFxuICAgICAgICAgICAgdGhhdCB3YXMgaW4gcGxhY2Ugd2hlbiBbZXZlbnRdIHdhcyBjcmVhdGVkLiAqKVxuICAgICAgICAgU2NoZWR1bGVyMC5zZXRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgZXZlbnQuZXhlY3V0aW9uX2NvbnRleHQ7XG4gICAgICAgICAoKiBBbnkgbW9kaWZpY2F0aW9uIG9mIFtzdGF0dXNdIGJlbG93IG5lZWRzIHRvIGZpcnN0IGNoZWNrIHRoYXQgdGhlIGV2ZW50IGlzXG4gICAgICAgICAgICBzdGlsbCBbSGFwcGVuaW5nXS4gSWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBub3QgW0hhcHBlbmluZ10gdGhlbiB0aGUgZXZlbnQnc1xuICAgICAgICAgICAgY2FsbGJhY2sgbXVzdCBoYXZlIHJlc2NoZWR1bGVkIHRoZSBldmVudC4gSW4gdGhhdCBjYXNlLCBkbyBub3Qgc2V0IHRoZSBzdGF0dXNcbiAgICAgICAgICAgIG9yIGF0dGVtcHQgdG8gcmVzY2hlZHVsZSBhIHJlcGVhdGluZyBldmVudC5cblxuICAgICAgICAgICAgVGhpcyBjb2RlIGNvdWxkIGJlIG11Y2ggc2ltcGxlciBpZiB3ZSBpbW1lZGlhdGVseSByZXNjaGVkdWxlZCB0aGUgZXZlbnQgYmVmb3JlXG4gICAgICAgICAgICBydW5uaW5nIHRoZSBjYWxsYmFjayAobm8gbmVlZCBmb3IgdGhlIEhhcHBlbmluZyBzdGF0ZSB0aGVuKS4gT25lIHJlYXNvbiB3ZVxuICAgICAgICAgICAgZG9uJ3QgZG8gdGhhdCBpcyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYXV0b21hdGljYWxseSByZXNjaGVkdWxlIGEgcGVyaW9kaWNcbiAgICAgICAgICAgIGV2ZW50IGlmIGl0cyBjYWxsYmFjayByYWlzZXMuICopXG4gICAgICAgICAobWF0Y2ggZXZlbnQuY2FsbGJhY2sgKCkgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgKG1hdGNoIHNlbmRfZXhuIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBFcnJvci5vZl9leG4gZXhuIDo6IHQuYWR2YW5jZV9lcnJvcnNcbiAgICAgICAgICAgICB8IFNvbWUgc2VuZF9leG4gLT5cbiAgICAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICAgICBzZW5kX2V4biBldmVudC5leGVjdXRpb25fY29udGV4dC5tb25pdG9yIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpKTtcbiAgICAgICAgICAgIEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZyBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgIHwgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZyBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgICAgIHwgU29tZSBpbnRlcnZhbCAtPlxuICAgICAgICAgICAgICAgaWYgRXZlbnQuU3RhdHVzLmVxdWFsIEhhcHBlbmluZyBldmVudC5zdGF0dXNcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAoKiBUaGUgZXZlbnQncyBjYWxsYmFjayBkaWQgbm90IHJlc2NoZWR1bGUgdGhlIGV2ZW50LiBTbyByZXNjaGVkdWxlIHRoZVxuICAgICAgICAgICAgICAgICAgICByZXBlYXRpbmcgdGltZXIgYmFzZWQgb24gdGhlIGxhc3QgW2F0XSB0aW1lLiAqKVxuICAgICAgICAgICAgICAgICBldmVudC5hdFxuICAgICAgICAgICAgICAgICA8LSBUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIH5iYXNlOmV2ZW50LmF0XG4gICAgICAgICAgICAgICAgICAgICAgfmFmdGVyOih0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgICAgICAgICAgICAgICAgICAgfmludGVydmFsO1xuICAgICAgICAgICAgICAgICBzY2hlZHVsZSB0IGV2ZW50KSkpO1xuICAgICAgICAgdHJ1ZSlcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBTY2hlZHVsZXIwLnNldF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG47O1xuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgdC5ldmVudHMgfnRvXyB+aGFuZGxlX2ZpcmVkOnQuaGFuZGxlX2ZpcmVkO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4biA9XG4gIFRpbWluZ193aGVlbC5maXJlX3Bhc3RfYWxhcm1zIHQuZXZlbnRzIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG4gPVxuICBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG4gPVxuICBpZiB0LmFtX2FkdmFuY2luZ1xuICB0aGVuXG4gICAgcmFpc2VfcyBbJXNleHAgXCJjYW5ub3QgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdIG9yIFthZHZhbmNlX2RpcmVjdGx5XSBmcm9tIGNhbGxiYWNrXCJdO1xuICB0LmFtX2FkdmFuY2luZyA8LSB0cnVlO1xuICAobWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gICB8IFtdIC0+ICgpXG4gICB8IF8gLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBbXSk7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaW5pc2hfYWR2YW5jaW5nIHQgPVxuICB0LmFtX2FkdmFuY2luZyA8LSBmYWxzZTtcbiAgbWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gIHwgW10gLT4gT2sgKClcbiAgfCBlcnJvcnMgLT5cbiAgICB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdO1xuICAgIEVycm9yIChFcnJvci5vZl9saXN0IGVycm9ycylcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gVGltaW5nX3doZWVsLm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG1pbl9hbGFybV90aW1lIHRvX1xuICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBXZSB1c2UgdGhlIGFjdHVhbCBhbGFybSB0aW1lLCByYXRoZXIgdGhhbiBbbmV4dF9hbGFybV9maXJlc19hdF0sIHNvIGFzIG5vdCB0b1xuICAgICAgICAgICBleHBvc2UgKG9yIGFjY3VtdWxhdGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCkgdGhlIHByZWNpc2lvbiBvZlxuICAgICAgICAgICBbVGltaW5nX3doZWVsXS4gKilcbiAgICAgICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b186bWluX2FsYXJtX3RpbWUgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfYnlfbWF4X2FsYXJtc19pbl9lYWNoX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsXG4gICAgICAgICAgdFxuICAgICAgICAgIH50b186KFRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzKVxuICAgICAgICAgIH5zZW5kX2V4bilcbiAgZG9uZTtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gIGxldCByZXN1bHQgPSBmICgpIGluXG4gIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gIHJlc3VsdCwgZHVyYXRpb25cbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3doZWVsX2ludGVydmFsIHQgPVxuICBUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzXG47O1xuXG5sZXQgaGFzX2V2ZW50c190b19ydW4gdCA9IEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlcjBcbm1vZHVsZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxubW9kdWxlIEV2ZW50ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIEpvYl9vcl9ldmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLkpvYl9vcl9ldmVudFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5zY2hlZHVsZXJcblxubW9kdWxlIEl2YXIgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlcy5JdmFyXG5cbiAgbGV0IGNyZWF0ZV93aXRoX2NlbGwgY2VsbCA9IHsgY2VsbCB9XG4gIGxldCBjcmVhdGUgKCkgPSBjcmVhdGVfd2l0aF9jZWxsIEVtcHR5XG5cbiAgbGV0IGNyZWF0ZV9mdWxsICh0eXBlIGEpIChhIDogYSkgPVxuICAgICgqIFdlIGFsbG9jYXRlIGFuIGltbXV0YWJsZSBpdmFyIGFuZCB0aGVuIGNhc3QgaXQgdG8gYSBtdXRhYmxlIGl2YXIuICBUaGUgaW1tdXRhYmlsaXR5XG4gICAgICAgYWxsb3dzIE9DYW1sIHRvIHN0YXRpY2FsbHkgYWxsb2NhdGUgdGhlIGl2YXIgaWYgW2FdIGlzIGNvbnN0YW50LiAgVGhpcyBjYXN0IGlzIHNhZmVcbiAgICAgICBiZWNhdXNlIGEgZnVsbCBpdmFyIGlzIG5ldmVyIG11dGF0ZWQuICBXZSBhbHNvIGJlbGlldmUgdGhhdCB3ZSB3aWxsIG5vdCB0cmlnZ2VyXG4gICAgICAgZmxhbWJkYSB0byBzcHVyaW91c2x5IHJlcG9yIHdhcm5pbmcgNTksIG11dGF0aW9uIG9mIGtub3duIGltbXV0YWJsZSBkYXRhLiAgQWxsXG4gICAgICAgbXV0YXRpb25zIG9mIGFuIGl2YXIgY2VsbCwgaS5lLiBbZm9vLmNlbGwgPC0gLi4uXSwgYXJlIGRpcmVjdGx5IHByZWNlZGVkIGJ5IGFcbiAgICAgICBbbWF0Y2ggZm9vLmNlbGxdIHRoYXQgcHJldmVudHMgdGhlIFtGdWxsXSBjYXNlIGZyb20gcmVhY2hpbmcgdGhlIG1vZGlmaWNhdGlvbi4gIFNvXG4gICAgICAgZmxhbWJkYSBzaG91bGQgYWx3YXlzIGVsaW1pbmF0ZSB0aGUgW2Zvby5jZWxsIDwtIC4uLl0gb2YgYSBjb25zdGFudCBbRnVsbF0gaXZhcixcbiAgICAgICBhbmQgbm90IHdhcm4uICopXG4gICAgKE9iai5tYWdpYyA6IGEgSW1tdXRhYmxlLnQgLT4gYSB0KSB7IGNlbGwgPSBGdWxsIGEgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuQnZhclxuXG4gIGxldCBjcmVhdGUgKCkgPSBvZl9yZXByIHsgaGFzX2FueV93YWl0ZXJzID0gZmFsc2U7IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSB9XG5lbmRcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlciA9IHN0cnVjdFxuICBtb2R1bGUgRXhlY19yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFR5cGVzLlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50ID1cbiAgICB7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgZXhlYyA6IHVuaXQgLT4gRXhlY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyIH5leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KSB+ZXhlYzppZ25vcmUpXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gU2NoZWR1bGVyMC50ID1cbiAgeyAoKiBbY2hlY2tfYWNjZXNzXSBvcHRpb25hbGx5IGhvbGRzIGEgZnVuY3Rpb24gdG8gcnVuIHRvIGNoZWNrIHdoZXRoZXIgYWNjZXNzIHRvIFt0XSBpc1xuICAgICAgIGN1cnJlbnRseSBhbGxvd2VkLiAgSXQgaXMgdXNlZCB0byBkZXRlY3QgaW52YWxpZCBhY2Nlc3MgdG8gdGhlIHNjaGVkdWxlciBmcm9tIGFcbiAgICAgICB0aHJlYWQuICopXG4gICAgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgOyBtdXRhYmxlIG1haW5fZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAoKiBUaGUgc2NoZWR1bGVyIGNhbGxzIFtnb3RfdW5jYXVnaHRfZXhuXSB3aGVuIGFuIGV4Y2VwdGlvbiBidWJibGVzIHRvIHRoZSB0b3Agb2YgdGhlXG4gICAgIG1vbml0b3IgdHJlZSB3aXRob3V0IGJlaW5nIGhhbmRsZWQuICBUaGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdG8gbmV2ZXIgcnVuIGFub3RoZXJcbiAgICAgam9iIGFmdGVyIHRoaXMgYnkgY2FsbGluZyBbY2xlYXJdIGFuZCBiZWNhdXNlIFtlbnF1ZXVlX2pvYl0gd2lsbCBuZXZlciBhZGQgYW5vdGhlclxuICAgICBqb2IuICopXG4gIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgOyBtdXRhYmxlIGN5Y2xlX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgbGlzdFxuICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA6XG4gICAgICAoVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudCwgKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfZW5kIDogKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSBsaXN0XG4gIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6XG4gICAgICAoVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudCwgKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICA7IG11dGFibGUgdG90YWxfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudFxuICAoKiBbZXh0ZXJuYWxfam9ic10gaXMgYSBxdWV1ZSBvZiBhY3Rpb25zIHNlbnQgZnJvbSBvdXRzaWRlIG9mIGFzeW5jLiAgVGhpcyBpcyBmb3IgdGhlXG4gICAgIGNhc2Ugd2hlcmUgd2Ugd2FudCB0byBzY2hlZHVsZSBhIGpvYiBvciBmaWxsIGFuIGl2YXIgZnJvbSBhIGNvbnRleHQgd2hlcmUgaXQgaXMgbm90XG4gICAgIHNhZmUgdG8gcnVuIGFzeW5jIGNvZGUsIGJlY2F1c2UgdGhlIGFzeW5jIGxvY2sgaXNuJ3QgaGVsZC4gIEZvciBpbnN0YW5jZTogLSBpbiBhblxuICAgICBPQ2FtbCBmaW5hbGl6ZXIsIGFzIHRoZXkgY2FuIHJ1biBhdCBhbnkgdGltZSBpbiBhbnkgdGhyZWFkLlxuXG4gICAgIFRoZSB3YXkgdG8gZG8gaXQgaXMgdG8gcXVldWUgYSB0aHVuayBpbiBbZXh0ZXJuYWxfam9ic10gYW5kIGNhbGxcbiAgICAgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyB0aGUgc2NoZWR1bGVyXG4gICAgIHRoYXQgbmV3IGFjdGlvbnMgYXJlIGF2YWlsYWJsZS5cblxuICAgICBXaGVuIHVzaW5nIEFzeW5jIG9uIHVuaXgsIFt0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gaXMgc2V0IGluIFtBc3luY191bml4XVxuICAgICB0byBjYWxsIFtJbnRlcnJ1cHRvci50aHJlYWRfc2FmZV9pbnRlcnJ1cHRdLCB3aGljaCB3aWxsIHdha2UgdXAgdGhlXG4gICAgIFtBc3luY191bml4XSBzY2hlZHVsZXIgYW5kIHJ1biBhIGN5Y2xlLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGhvb2sgbWlnaHQgYmUgdXNlZCBpbiBvdGhlciBjb250ZXh0IChqc19vZl9vY2FtbCwgbWlyYWdlKS5cblxuICAgICBXaGVuIHJ1bm5pbmcgYSBjeWNsZSwgd2UgcHVsbCBleHRlcm5hbCBhY3Rpb25zIGF0IGV2ZXJ5IGpvYiBhbmQgcGVyZm9ybSB0aGVtXG4gICAgIGltbWVkaWF0ZWx5LiAqKVxuICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAoKiBbam9iX3F1ZXVlZF9ob29rXSBhbmQgW2V2ZW50X2FkZGVkX2hvb2tdIGFpbSB0byBiZSB1c2VkIGJ5IGpzX29mX29jYW1sLiAqKVxuICAoKiBXZSB1c2UgW18gb3B0aW9uXSBoZXJlIGJlY2F1c2UgdGhvc2UgaG9va3Mgd2lsbCBub3QgYmUgc2V0IGluIHRoZSBjb21tb24gY2FzZVxuICAgICBhbmQgd2Ugd2FudCB0byBhdm9pZCBleHRyYSBmdW5jdGlvbiBjYWxscy4gKilcbiAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSB5aWVsZCA6ICgodW5pdCwgcmVhZF93cml0ZSkgVHlwZXMuQnZhci50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgbXV0YWJsZSB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA6XG4gICAgICAoKHVuaXQsIHJlYWRfd3JpdGUpIFR5cGVzLkJ2YXIudFtAc2V4cC5vcGFxdWVdICgqIGNvbmZpZ3VyYXRpb24qKSlcbiAgOyBtdXRhYmxlIGNoZWNrX2ludmFyaWFudHMgOiBib29sXG4gIDsgbXV0YWJsZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRcbiAgOyBtdXRhYmxlIHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCB1bmNhdWdodF9leG5fdW53cmFwcGVkID0gdW5jYXVnaHRfZXhuXG5cbmxldCB1bmNhdWdodF9leG4gdCA9XG4gIG1hdGNoIHQudW5jYXVnaHRfZXhuIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChleG4sIHNleHApIC0+XG4gICAgU29tZSAoRXJyb3IuY3JlYXRlIFwidW5oYW5kbGVkIGV4Y2VwdGlvblwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdKVxuOztcblxubGV0IG51bV9wZW5kaW5nX2pvYnMgdCA9XG4gIEpvYl9xdWV1ZS5sZW5ndGggdC5ub3JtYWxfcHJpb3JpdHlfam9icyArIEpvYl9xdWV1ZS5sZW5ndGggdC5sb3dfcHJpb3JpdHlfam9ic1xuOztcblxubGV0IG51bV9qb2JzX3J1biB0ID1cbiAgSm9iX3F1ZXVlLm51bV9qb2JzX3J1biB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICsgSm9iX3F1ZXVlLm51bV9qb2JzX3J1biB0Lmxvd19wcmlvcml0eV9qb2JzXG47O1xuXG5sZXQgbGFzdF9jeWNsZV9udW1fam9icyB0ID0gdC5sYXN0X2N5Y2xlX251bV9qb2JzXG5cbmxldCB1bm9yZGVyZWRfaXNfc3VibGlzdCB+ZXF1YWwgfnN1Ymxpc3Q6c21hbGwgbGFyZ2UgPVxuICBsZXQgcmVtb3ZlIGwgeCA9XG4gICAgbWF0Y2ggTGlzdC5zcGxpdF93aGlsZSBsIH5mOihmdW4geSAtPiBub3QgKGVxdWFsIHkgeCkpIHdpdGhcbiAgICB8IF8sIFtdIC0+IE5vbmVcbiAgICB8IGwsIF8gOjogciAtPiBTb21lIChsIEAgcilcbiAgaW5cbiAgT3B0aW9uLmlzX3NvbWVcbiAgICAoTGlzdC5mb2xkIHNtYWxsIH5pbml0OihTb21lIGxhcmdlKSB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgT3B0aW9uLmJpbmQgYWNjIH5mOihmdW4gbCAtPiByZW1vdmUgbCB4KSkpXG47O1xuXG5sZXQgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgdGFibGUgbGlzdCA9XG4gICgqIFlvdSBjYW4gaW4gZmFjdCBoYXZlIGhvb2tzIGluIHRoZSBsaXN0IGZvciB3aGljaCB0aGVyZSBpcyBubyBjb3JyZXNwb25kaW5nIGVudHJ5IGluXG4gICAgIHRoZSB0YWJsZS4gU3VjaCBob29rcyBjYW4gbmV2ZXIgYmUgcmVtb3ZlZC4gKilcbiAgYXNzZXJ0ICh1bm9yZGVyZWRfaXNfc3VibGlzdCB+ZXF1YWw6cGh5c19lcXVhbCB+c3VibGlzdDooSGFzaHRibC5kYXRhIHRhYmxlKSBsaXN0KVxuOztcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jaGVja19hY2Nlc3M6aWdub3JlXG4gICAgICB+am9iX3Bvb2w6KGNoZWNrIEpvYl9wb29sLmludmFyaWFudClcbiAgICAgIH5ub3JtYWxfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH5sb3dfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBxIC0+IERlcXVlLml0ZXIgcSB+ZjpWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuaW52YXJpYW50KSlcbiAgICAgIH5tYWluX2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+Y3VycmVudF9leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KVxuICAgICAgfnVuY2F1Z2h0X2V4bjpcbiAgICAgICAgKGNoZWNrIChmdW4gdW5jYXVnaHRfZXhuIC0+XG4gICAgICAgICAgIGlmIGlzX3NvbWUgdW5jYXVnaHRfZXhuIHRoZW4gYXNzZXJ0IChudW1fcGVuZGluZ19qb2JzIHQgPSAwKSkpXG4gICAgICB+Y3ljbGVfY291bnQ6KGNoZWNrIChmdW4gY3ljbGVfY291bnQgLT4gYXNzZXJ0IChjeWNsZV9jb3VudCA+PSAwKSkpXG4gICAgICB+Y3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+aW5fY3ljbGU6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Omlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIC0+XG4gICAgICAgICAgIGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50XG4gICAgICAgICAgICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXG4gICAgICAgICAgICAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQpKVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9lbmQ6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSAtPlxuICAgICAgICAgICBjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCkpXG4gICAgICB+bGFzdF9jeWNsZV90aW1lOmlnbm9yZVxuICAgICAgfnRvdGFsX2N5Y2xlX3RpbWU6aWdub3JlXG4gICAgICB+bGFzdF9jeWNsZV9udW1fam9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gbGFzdF9jeWNsZV9udW1fam9icyAtPiBhc3NlcnQgKGxhc3RfY3ljbGVfbnVtX2pvYnMgPj0gMCkpKVxuICAgICAgfnRpbWVfc291cmNlOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlJlYWRfd3JpdGUuaW52YXJpYW50X3dpdGhfam9icyB+am9iOihmdW4gam9iIC0+XG4gICAgICAgICAgICAgIGFzc2VydCAoUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHQuam9iX3Bvb2wgam9iKSkpKVxuICAgICAgfmV4dGVybmFsX2pvYnM6aWdub3JlXG4gICAgICB+dGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2s6aWdub3JlXG4gICAgICB+am9iX3F1ZXVlZF9ob29rOmlnbm9yZVxuICAgICAgfmV2ZW50X2FkZGVkX2hvb2s6aWdub3JlXG4gICAgICB+eWllbGQ6aWdub3JlXG4gICAgICB+eWllbGRfdW50aWxfbm9fam9ic19yZW1haW46aWdub3JlXG4gICAgICB+Y2hlY2tfaW52YXJpYW50czppZ25vcmVcbiAgICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTppZ25vcmVcbiAgICAgIH5yZWNvcmRfYmFja3RyYWNlczppZ25vcmVcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlNjaGVkdWxlci5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgKHQgOiB0KV1cbjs7XG5cbmxldCBmcmVlX2pvYiB0IGpvYiA9IFBvb2wuZnJlZSB0LmpvYl9wb29sIGpvYlxuXG5sZXQgZW5xdWV1ZSB0IChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpIGYgYSA9XG4gICgqIElmIHRoZXJlJ3MgYmVlbiBhbiB1bmNhdWdodCBleG4sIHdlIGRvbid0IGFkZCB0aGUgam9iLCBzaW5jZSB3ZSBkb24ndCB3YW50IGFueSBqb2JzXG4gICAgIHRvIHJ1biBvbmNlIHRoZXJlJ3MgYmVlbiBhbiB1bmNhdWdodCBleG4uICopXG4gIGlmIGlzX25vbmUgdC51bmNhdWdodF9leG5cbiAgdGhlbiAoXG4gICAgbGV0IHByaW9yaXR5ID0gZXhlY3V0aW9uX2NvbnRleHQucHJpb3JpdHkgaW5cbiAgICBsZXQgam9iX3F1ZXVlID1cbiAgICAgIG1hdGNoIHByaW9yaXR5IHdpdGhcbiAgICAgIHwgTm9ybWFsIC0+IHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgICAgIHwgTG93IC0+IHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICBpblxuICAgIEpvYl9xdWV1ZS5lbnF1ZXVlIGpvYl9xdWV1ZSBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgbWF0Y2ggdC5qb2JfcXVldWVkX2hvb2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+IGYgcHJpb3JpdHkpXG47O1xuXG5sZXQgZW5xdWV1ZV9qb2IgdCBqb2IgfmZyZWVfam9iID1cbiAgbGV0IGpvYl9wb29sID0gdC5qb2JfcG9vbCBpblxuICBlbnF1ZXVlXG4gICAgdFxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQwKVxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQxKVxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQyKTtcbiAgaWYgZnJlZV9qb2IgdGhlbiBQb29sLmZyZWUgdC5qb2JfcG9vbCBqb2Jcbjs7XG5cbmxldCBoYW5kbGVfZmlyZWQgKHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50KSBqb2Jfb3JfZXZlbnQgPVxuICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gIHwgSm9iLCBqb2IgLT4gZW5xdWV1ZV9qb2IgdGltZV9zb3VyY2Uuc2NoZWR1bGVyIGpvYiB+ZnJlZV9qb2I6dHJ1ZVxuICB8IEV2ZW50LCBldmVudCAtPiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5maXJlIHRpbWVfc291cmNlIGV2ZW50XG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gIGxldCByZWMgdCA9XG4gICAgeyBjaGVja19hY2Nlc3MgPSBOb25lXG4gICAgOyBqb2JfcG9vbCA9IEpvYl9wb29sLmNyZWF0ZSAoKVxuICAgIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgPSBKb2JfcXVldWUuY3JlYXRlICgpXG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA9IEpvYl9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgPSBEZXF1ZS5jcmVhdGUgKClcbiAgICA7IG1haW5fZXhlY3V0aW9uX2NvbnRleHQgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG4gICAgOyBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxuICAgIDsgdW5jYXVnaHRfZXhuID0gTm9uZVxuICAgIDsgY3ljbGVfc3RhcnQgPSBub3dcbiAgICA7IGN5Y2xlX2NvdW50ID0gMFxuICAgIDsgaW5fY3ljbGUgPSBmYWxzZVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0ID0gW11cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kID0gW11cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgbGFzdF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyBsYXN0X2N5Y2xlX251bV9qb2JzID0gMFxuICAgIDsgdG90YWxfY3ljbGVfdGltZSA9IHNlYyAwLlxuICAgIDsgdGltZV9zb3VyY2VcbiAgICA7IGV4dGVybmFsX2pvYnMgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rID0gaWdub3JlXG4gICAgOyBqb2JfcXVldWVkX2hvb2sgPSBOb25lXG4gICAgOyBldmVudF9hZGRlZF9ob29rID0gTm9uZVxuICAgIDsgeWllbGQgPSBCdmFyLmNyZWF0ZSAoKVxuICAgIDsgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPSBCdmFyLmNyZWF0ZSAoKSAoKiBjb25maWd1cmF0aW9uICopXG4gICAgOyBjaGVja19pbnZhcmlhbnRzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5jaGVja19pbnZhcmlhbnRzXG4gICAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gICAgICAgIEFzeW5jX2tlcm5lbF9jb25maWcubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgICA7IHJlY29yZF9iYWNrdHJhY2VzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5yZWNvcmRfYmFja3RyYWNlc1xuICAgIH1cbiAgYW5kIGV2ZW50cyA9XG4gICAgVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOkFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93XG4gIGFuZCB0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCA9XG4gICAgeyBpZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkLmNyZWF0ZSAoKVxuICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBbXVxuICAgIDsgYW1fYWR2YW5jaW5nID0gZmFsc2VcbiAgICA7IGV2ZW50c1xuICAgIDsgaGFuZGxlX2ZpcmVkID0gKGZ1biBhbGFybSAtPiBoYW5kbGVfZmlyZWQgdGltZV9zb3VyY2UgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpXG4gICAgOyBmaXJlZF9ldmVudHMgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgaXNfd2FsbF9jbG9jayA9IHRydWVcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IGlzX2RlYWQgdCA9IGlzX3NvbWUgdC51bmNhdWdodF9leG5cbmxldCBzZXRfY2hlY2tfYWNjZXNzIHQgZiA9IHQuY2hlY2tfYWNjZXNzIDwtIGZcblxubGV0IHRfcmVmID1cbiAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIGNyZWF0ZSB3aXRoXG4gIHwgT2sgdCAtPiByZWYgdFxuICB8IEVycm9yIGV4biAtPlxuICAgIERlYnVnLmxvZyBcIkFzeW5jIGNhbm5vdCBjcmVhdGUgaXRzIHJhdyBzY2hlZHVsZXJcIiBleG4gWyVzZXhwX29mOiBleG5dO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGNoZWNrX2FjY2VzcyB0ID1cbiAgbWF0Y2ggdC5jaGVja19hY2Nlc3Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiAoKVxuOztcblxubGV0IHQgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICBjaGVja19hY2Nlc3MgdDtcbiAgdFxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCA9XG4gIGlmIHQucmVjb3JkX2JhY2t0cmFjZXNcbiAgdGhlbiBFeGVjdXRpb25fY29udGV4dC5yZWNvcmRfYmFja3RyYWNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuICBlbHNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgeCA9XG4gIGxldCBvbGRfY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dDtcbiAgcHJvdGVjdHggfmYgeCB+ZmluYWxseTooZnVuIF8gLT4gc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgb2xkX2NvbnRleHQpXG47O1xuXG5sZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCB0IHRtcF9jb250ZXh0IH5mID0gd2l0aF9leGVjdXRpb25fY29udGV4dDEgdCB0bXBfY29udGV4dCB+ZiAoKVxuXG5sZXQgY3JlYXRlX2pvYiAodHlwZSBhKSB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGlmIFBvb2wuaXNfZnVsbCB0LmpvYl9wb29sIHRoZW4gdC5qb2JfcG9vbCA8LSBQb29sLmdyb3cgdC5qb2JfcG9vbDtcbiAgUG9vbC5uZXczXG4gICAgdC5qb2JfcG9vbFxuICAgIGV4ZWN1dGlvbl9jb250ZXh0XG4gICAgKE9iai5tYWdpYyAoZiA6IGEgLT4gdW5pdCkgOiBPYmoudCAtPiB1bml0KVxuICAgIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGdvdF91bmNhdWdodF9leG4gdCBleG4gc2V4cCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiZ290X3VuY2F1Z2h0X2V4blwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdO1xuICBMaXN0Lml0ZXIgWyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzOyB0Lmxvd19wcmlvcml0eV9qb2JzIF0gfmY6Sm9iX3F1ZXVlLmNsZWFyO1xuICB0LnVuY2F1Z2h0X2V4biA8LSBTb21lIChleG4sIHNleHApXG47O1xuXG4oKiBbc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gZW5hYmxlcyBzdWJzZXF1ZW50IGNhbGxzIG9mIFtydW5fam9ic11cbiAgIHRvIHJ1biB1cCB0byBbbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gam9icyBvZiBlYWNoIHByaW9yaXR5IGxldmVsLiAqKVxubGV0IHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkgPVxuICBsZXQgbiA9IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IGluXG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5ub3JtYWxfcHJpb3JpdHlfam9icyBuO1xuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubG93X3ByaW9yaXR5X2pvYnMgblxuOztcblxuKCogW3J1bl9qb2JzIHRdIHJlbW92ZXMgam9icyBmcm9tIFt0XSBvbmUgYXQgYSB0aW1lIGFuZCBydW5zIHRoZW0sIHN0b3BwaW5nIGFzIHNvb25cbiAgIGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gaXMgcmFpc2VkLCBvciB3aGVuIG5vIG1vcmUgam9icyBjYW4gYmUgcnVuIGF0IGFueSBwcmlvcml0eSxcbiAgIGFzIHBlciBbfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldLiAqKVxubGV0IHJlYyBydW5fam9icyB0ID1cbiAgbWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgfCBPayAoKSAtPlxuICAgIChtYXRjaCBKb2JfcXVldWUucnVuX2pvYnMgdC5sb3dfcHJpb3JpdHlfam9icyB0IHdpdGhcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICB8IE9rICgpIC0+XG4gICAgICAgaWYgSm9iX3F1ZXVlLmNhbl9ydW5fYV9qb2IgdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgIHx8IEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICAgICB0aGVuIHJ1bl9qb2JzIHRcbiAgICAgICBlbHNlIE9rICgpKVxuOztcblxubGV0IHN0YWJpbGl6ZSB0ID1cbiAgc3RhcnRfY3ljbGVcbiAgICB0XG4gICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6XG4gICAgICAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBJbnQubWF4X3ZhbHVlKTtcbiAgbWF0Y2ggcnVuX2pvYnMgdCB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoZXhuLCBfYmFja3RyYWNlKSAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBjcmVhdGVfdGltZV9zb3VyY2VcbiAgICAgID8odGltaW5nX3doZWVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZylcbiAgICAgIH5ub3dcbiAgICAgICgpXG4gID1cbiAgbGV0IHQgPSB0ICgpIGluXG4gIGxldCBldmVudHMgPSBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93IGluXG4gIGxldCByZWMgdGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQgPVxuICAgIHsgaWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZC5jcmVhdGUgKClcbiAgICA7IGFkdmFuY2VfZXJyb3JzID0gW11cbiAgICA7IGFtX2FkdmFuY2luZyA9IGZhbHNlXG4gICAgOyBldmVudHNcbiAgICA7IGhhbmRsZV9maXJlZCA9IChmdW4gYWxhcm0gLT4gaGFuZGxlX2ZpcmVkIHRpbWVfc291cmNlIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKVxuICAgIDsgZmlyZWRfZXZlbnRzID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IGlzX3dhbGxfY2xvY2sgPSBmYWxzZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0aW1lX3NvdXJjZVxuOztcblxubGV0IHdhbGxfY2xvY2sgKCkgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5yZWFkX29ubHkgKHQgKCkpLnRpbWVfc291cmNlXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgQ2VsbCA9IFR5cGVzLkNlbGxcblxudHlwZSBhbnkgPVxuICBbIGBFbXB0eVxuICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICB8IGBGdWxsXG4gIHwgYEluZGlyXG4gIF1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSXZhci50ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIGFueSkgY2VsbCB9XG5cbigqIFRoZSBbJ2JdIGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBjb25zdHJ1Y3Rvci4gIFRoaXMgYWxsb3dzIHVzIHRvIHdyaXRlIGZ1bmN0aW9ucyB0aGF0XG4gICB0YWtlIG9ubHkgb25lIG9mIHRoZSBjb25zdHJ1Y3RvcnMsIHdpdGggbm8gcnVudGltZSB0ZXN0LlxuXG4gICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGRpcmVjdGVkIGdyYXBoIHdpdGggaXZhcnMgYXMgbm9kZXMgYW5kIFtJbmRpcl1zIGFzXG4gICBlZGdlcyBpcyBhY3ljbGljLiAgVGhlIG9ubHkgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIGFuIFtJbmRpcl0gYXJlIFtzcXVhc2hdIGFuZFxuICAgW2Nvbm5lY3RdLCBhbmQgZm9yIHRob3NlLCB0aGUgdGFyZ2V0IG9mIHRoZSBbSW5kaXJdIGlzIGFsd2F5cyBhIG5vbi1bSW5kaXJdLiAgVGh1cywgdGhlXG4gICBuZXdseSBhZGRlZCBlZGdlcyBhcmUgbmV2ZXIgcGFydCBvZiBhIGN5Y2xlLiAqKVxuYW5kICgnYSwgJ2IpIGNlbGwgPSAoJ2EsICdiKSBUeXBlcy5DZWxsLnQgPVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIDpcbiAgICAgIHsgKCogW3J1bl0gaXMgbXV0YWJsZSBzbyB3ZSBjYW4gc2V0IGl0IHRvIFtpZ25vcmVdIHdoZW4gdGhlIGhhbmRsZXIgaXMgcmVtb3ZlZC5cbiAgICAgICAgICAgVGhpcyBpcyB1c2VkIHdoZW4gd2UgaW5zdGFsbCBhIGhhbmRsZXIgb24gYSBmdWxsIGl2YXIgc2luY2UgaXQgaXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgYWRkZWQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgICAgICAgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbcHJldl0gYW5kIFtuZXh0XSBjaXJjdWxhcmx5IGRvdWJseSBsaW5rIGFsbCBoYW5kbGVycyBvZiB0aGUgc2FtZSBpdmFyLiAqKVxuICAgICAgICBtdXRhYmxlIHByZXYgOiAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICB9XG4gICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX2hhbmRsZXIgXSkgY2VsbFxuICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgY2VsbFxuICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIGNlbGxcbiAgfCBJbmRpciA6ICdhIHQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgY2VsbFxuXG5tb2R1bGUgSGFuZGxlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcblxuICBsZXQgcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucnVuXG4gIGxldCBleGVjdXRpb25fY29udGV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LmV4ZWN1dGlvbl9jb250ZXh0XG4gIGxldCBwcmV2IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucHJldlxuICBsZXQgbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0Lm5leHRcbiAgbGV0IHNldF9ydW4gKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnJ1biA8LSB4XG4gIGxldCBzZXRfcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQucHJldiA8LSB4XG4gIGxldCBzZXRfbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQubmV4dCA8LSB4XG5cbiAgbGV0IGNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICgqIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZjpcblxuICAgICAgIHtbXG4gICAgICAgICBsZXQgcmVjIHQgPVxuICAgICAgICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICAgICAgIHsgcnVuXG4gICAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dFxuICAgICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0XG4gICAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQgfVxuICAgICAgICAgaW5cbiAgICAgICAgIGgxIF19XG5cbiAgICAgICBIb3dldmVyIHRoZSBjb21waWxhdGlvbiBvZiByZWN1cnNpdmUgdmFsdWUgaW4gT0NhbWwgaXMgbm90IG9wdGltYWw6IHRoZSB2YWx1ZSBpc1xuICAgICAgIGFsbG9jYXRlZCB0d2ljZSBhbmQgY29waWVkIG9uY2UgKHdpdGggYSBsb29wIGNhbGxpbmcgY2FtbF9tb2RpZnkpLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWNlc3NhcnkgZm9yIHNpbXBsZSByZWN1cnNpdmUgZGVmaW5pdGlvbnMgbGlrZSB0aGlzIG9uZS5cblxuICAgICAgIEluc3RlYWQgd2UgYWxsb2NhdGUgdGhlIHZhbHVlIHdpdGggZHVtbXkgZmllbGRzIGFuZCB1cGRhdGUgdGhlbSBhZnRlci4gKilcbiAgICBsZXQgdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBPYmoubWFnaWMgTm9uZTsgbmV4dCA9IE9iai5tYWdpYyBOb25lIH1cbiAgICBpblxuICAgIHNldF9wcmV2IHQgdDtcbiAgICBzZXRfbmV4dCB0IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0MSA9XG4gICAgICAgICAgIHsgcnVuICAgICAgICAgICAgICAgPSBydW4xXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDFcbiAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHQyXG4gICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0MiB9XG4gICAgICAgICBhbmQgdDIgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMlxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MVxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDEgfVxuICAgICAgICAgaW5cbiAgICAgICAgIHQxIF19ICopXG4gICAgbGV0IHQxID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuID0gcnVuMVxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgIDsgcHJldiA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIDsgbmV4dCA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIH1cbiAgICBpblxuICAgIGxldCB0MiA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjI7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyOyBwcmV2ID0gdDE7IG5leHQgPSB0MSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0MSB0MjtcbiAgICBzZXRfbmV4dCB0MSB0MjtcbiAgICB0MVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IChleGVjdXRpb25fY29udGV4dCB0KTtcbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgbGV0IHQxID0gIXIgaW5cbiAgICAgIGFzc2VydCAocGh5c19lcXVhbCAocHJldiAobmV4dCB0MSkpIHQxKTtcbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdDEpO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpc19zaW5nbGV0b24gdCA9IHBoeXNfZXF1YWwgdCAobmV4dCB0KVxuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IG4gPSByZWYgMSBpblxuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBpbmNyIG47XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lO1xuICAgICFuXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgdCBzY2hlZHVsZXIgdiA9IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciAoZXhlY3V0aW9uX2NvbnRleHQgdCkgKHJ1biB0KSB2XG5cbiAgbGV0IHNjaGVkdWxlX2pvYnMgdCB2ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBlbnF1ZXVlIHQgc2NoZWR1bGVyIHY7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGVucXVldWUgIXIgc2NoZWR1bGVyIHY7XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID1cbiAgICBzZXRfcHJldiAobmV4dCB0KSAocHJldiB0KTtcbiAgICBzZXRfbmV4dCAocHJldiB0KSAobmV4dCB0KTtcbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0XG4gIDs7XG5cbiAgbGV0IGFkZCB0IHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBwcmV2IHQ7IG5leHQgPSB0IH1cbiAgICBpblxuICAgIHNldF9uZXh0IChwcmV2IHQpIHJlc3VsdDtcbiAgICBzZXRfcHJldiB0IHJlc3VsdDtcbiAgICByZXN1bHRcbiAgOztcblxuICAoKiBbc3BsaWNlIHQxIHQyXSBjcmVhdGVzOlxuXG4gICAgIHt2XG4gICAgICAgLS0+IHQxIDwtLT4gLi4uIDwtLT4gbGFzdDEgPC0tPiB0MiA8LS0+IC4uLiA8LS0+IGxhc3QyIDwtLVxuICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIHZ9ICopXG4gIGxldCBzcGxpY2UgdDEgdDIgPVxuICAgIGxldCBsYXN0MSA9IHByZXYgdDEgaW5cbiAgICBsZXQgbGFzdDIgPSBwcmV2IHQyIGluXG4gICAgc2V0X25leHQgbGFzdDEgdDI7XG4gICAgc2V0X25leHQgbGFzdDIgdDE7XG4gICAgc2V0X3ByZXYgdDEgbGFzdDI7XG4gICAgc2V0X3ByZXYgdDIgbGFzdDFcbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICBsZXQgZmlyc3QgPSBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgICBsZXQgcmVjIGxvb3AgcHJldiBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2V0X3ByZXYgZmlyc3QgcHJldlxuICAgICAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICAgICAgbGV0IHQgPVxuICAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2OyBuZXh0ID0gZmlyc3QgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgc2V0X25leHQgcHJldiB0O1xuICAgICAgICAgIGxvb3AgdCBsXG4gICAgICBpblxuICAgICAgbG9vcCBmaXJzdCBsO1xuICAgICAgU29tZSBmaXJzdFxuICA7O1xuXG4gIGxldCB0b19saXN0IGZpcnN0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IChydW4gdCwgZXhlY3V0aW9uX2NvbnRleHQgdCkgOjogYWNjIGluXG4gICAgICBpZiBwaHlzX2VxdWFsIHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIChwcmV2IHQpIGFjY1xuICAgIGluXG4gICAgbG9vcCAocHJldiBmaXJzdCkgW11cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IF8gKHQgOiBfIHQpID1cbiAgICBsZXQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuID0gXzsgZXhlY3V0aW9uX2NvbnRleHQ7IG5leHQgPSBfOyBwcmV2ID0gXyB9KSA9XG4gICAgICB0XG4gICAgaW5cbiAgICBbJW1lc3NhZ2UgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCldXG4gIDs7XG5lbmRcblxudHlwZSAnYSBpdmFyID0gJ2EgdFxuXG4oKiBDb21waWxlZCBhcyB0aGUgaWRlbnRpdHkuICopXG5sZXQgY2VsbF9vZl9oYW5kbGVyIDogXyBIYW5kbGVyLnQgLT4gXyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyB4IC0+ICh4IDo+IChfLCBhbnkpIGNlbGwpXG47O1xuXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5sZXQgaW5kaXIgdCA9IHsgY2VsbCA9IEluZGlyIHQgfVxuXG5pbmNsdWRlIFNjaGVkdWxlci5JdmFyXG5cbigqIFtzcXVhc2ggdF0gcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gaXZhciBhdCB0aGUgZW5kIG9mIHRoZSAocG9zc2libHkgZW1wdHkpIGNoYWluIG9mXG4gICBbSW5kaXJdcyBzdGFydGluZyB3aXRoIFt0XSBhbmQgZW5zdXJlcyB0aGF0IGFsbCBbSW5kaXJdcyBhbG9uZyB0aGF0IGNoYWluIGFyZSByZXBsYWNlZFxuICAgd2l0aCBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGNoYWluLiAqKVxubGV0IHNxdWFzaCA9XG4gIGxldCByZWMgZm9sbG93IGluZGlyIHQgPVxuICAgICgqIFtpbmRpciA9IEluZGlyIHRdICopXG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIGFzIGluZGlyJyAtPiBmb2xsb3cgaW5kaXInIHQnXG4gICAgfCBfIC0+IGluZGlyXG4gIGluXG4gIGxldCByZWMgdXBkYXRlIHQgaW5kaXIgPVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyAtPlxuICAgICAgdC5jZWxsIDwtIGluZGlyO1xuICAgICAgdXBkYXRlIHQnIGluZGlyXG4gICAgfCBfIC0+IHRcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIChtYXRjaCB0Jy5jZWxsIHdpdGhcbiAgICAgICB8IEluZGlyIHQnJyBhcyBpbmRpciAtPiB1cGRhdGUgdCAoZm9sbG93IGluZGlyIHQnJylcbiAgICAgICB8IF8gLT4gdCcgKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzIGEgY2hhaW4gd2l0aCBhIHNpbmdsZSBbSW5kaXJdICopKVxuICAgIHwgXyAtPiB0XG47O1xuXG4oKiBub3RoaW5nIHRvIGRvLCBzaW5jZSBbdF0gaXNuJ3QgYW4gW0luZGlyXS4gKilcblxubGV0IGludmFyaWFudCBhX2ludmFyaWFudCB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBhX2ludmFyaWFudCBhXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAoXywgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IGV4ZWN1dGlvbl9jb250ZXh0XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+IEhhbmRsZXIuaW52YXJpYW50IGhhbmRsZXJcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgOiBTZXhwLnQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IExpc3QgWyBBdG9tIFwiRnVsbFwiOyBzZXhwX29mX2EgYSBdXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBBdG9tIFwiRW1wdHlcIlxuOztcblxubGV0IHBlZWsgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gU29tZSBhXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBOb25lXG47O1xuXG5sZXQgdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT5cbiAgICBmYWlsd2l0aCBpZl9lbXB0eV90aGVuX2ZhaWx3aXRoXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSB2YWx1ZSB0IH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoOlwiSXZhci52YWx1ZV9leG4gY2FsbGVkIG9uIGVtcHR5IGl2YXJcIlxuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gZmFsc2VcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbjs7XG5cbmxldCBpc19mdWxsIHQgPSBub3QgKGlzX2VtcHR5IHQpXG5cbmxldCBmaWxsIHQgdiA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJdmFyLmZpbGwgb2YgZnVsbCBpdmFyXCIgKHQgOiBfIHQpXVxuICB8IEVtcHR5IC0+IHQuY2VsbCA8LSBGdWxsIHZcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dCkgLT5cbiAgICB0LmNlbGwgPC0gRnVsbCB2O1xuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG47O1xuXG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCAoaGFuZGxlciA6IF8gSGFuZGxlci50KSA9XG4gIEhhbmRsZXIuc2V0X3J1biBoYW5kbGVyIGlnbm9yZTtcbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyAtPlxuICAgICgqIFRoZXNlIGFyZSBvbmx5IHBvc3NpYmxlIGlmIFtoYW5kbGVyXSB3YXMgYWxyZWFkeSByZW1vdmVkLiAgKilcbiAgICAoKVxuICB8IEZ1bGwgXyAtPlxuICAgICgqIFRoaXMgaXMgcG9zc2libGUgaWYgW3RdIHdhcyBmaWxsZWQgYmVmb3JlIHdlIHRyeSB0byByZW1vdmUgdGhlIGhhbmRsZXIuICBFLmcuXG4gICAgICAgW0RlZmVycmVkLmNob29zZV0gd2lsbCBkbyB0aGlzLiAqKVxuICAgICgpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBjZWxsIC0+XG4gICAgaWYgSGFuZGxlci5pc19zaW5nbGV0b24gaGFuZGxlclxuICAgIHRoZW4gdC5jZWxsIDwtIEVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGhhbmRsZXIgY2VsbCB0aGVuIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIubmV4dCBoYW5kbGVyKTtcbiAgICAgIEhhbmRsZXIudW5saW5rIGhhbmRsZXIpXG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHkgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjtcbiAgICBoYW5kbGVyXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dFxuICB8IEZ1bGwgdiAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgKCogW3J1bl0gY2FsbHMgW2hhbmRsZXIucnVuXSwgd2hpY2gsIGlmIFtoYW5kbGVyXSBoYXMgYmVlbiByZW1vdmVkLCBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICAgdG8gW2lnbm9yZV0uICopXG4gICAgbGV0IHJ1biB2ID0gSGFuZGxlci5ydW4gaGFuZGxlciB2IGluXG4gICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHY7XG4gICAgaGFuZGxlclxuOztcblxubGV0IGhhc19oYW5kbGVycyB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbiAgfCBFbXB0eSB8IEZ1bGwgXyAtPiBmYWxzZVxuOztcblxubGV0IHVwb24nIHQgcnVuID0gYWRkX2hhbmRsZXIgdCBydW4gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcblxuKCogW3Vwb25dIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBhczpcblxuICAge1tcbiAgICAgbGV0IHVwb24gdCBmID0gaWdub3JlICh1cG9uJyB0IHJ1bikgXX1cblxuICAgSG93ZXZlciwgYmVsb3cgaXMgYSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgd29ydGggZG9pbmcgYmVjYXVzZSBbdXBvbl1cbiAgIGlzIHZlcnkgd2lkZWx5IHVzZWQgYW5kIGlzIHNvIG11Y2ggbW9yZSBjb21tb24gdGhhbiBbdXBvbiddLiAgVGhlIGJlbG93IGltcGxlbWVudGF0aW9uXG4gICBhdm9pZHMgdGhlIHVzZSBvZiB0aGUgYmFnIG9mIGhhbmRsZXJzIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugb2Ygb25lIGhhbmRsZXIgZm9yXG4gICB0aGUgZGVmZXJyZWQuICopXG5sZXQgdXBvbiB0IHJ1biA9XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgdiAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICB0LmNlbGxcbiAgICA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dCA6IF8gSGFuZGxlci50KVxuOztcblxuKCogW2Nvbm5lY3RdIHRha2VzIGl2YXJzIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10sIGFuZCBtYWtlcyBbYmluZF9yaHNdXG4gICBiZSBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBub24taW5kaXIgY2VsbCByZWFjaGFibGUgZnJvbSBbYmluZF9yZXN1bHRdLiAgT24gZW50cnlcbiAgIHRvIFtjb25uZWN0XSwgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSBtYXkgYmUgY2hhaW5zLCBzaW5jZSBbYmluZF9yaHNdIGlzIGFuXG4gICBhcmJpdHJhcnkgdXNlci1zdXBwbGllZCBkZWZlcnJlZCwgYW5kIFtiaW5kX3Jlc3VsdF0gaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIgcHJpb3IgdG9cbiAgIGJlaW5nIFtjb25uZWN0XWVkLCBhbmQgbWF5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gYW4gaW5kaXJlY3Rpb24gaW4gdGhlIGNhc2Ugb2ZcbiAgIHJpZ2h0LW5lc3RlZCBiaW5kcy5cblxuICAgVGhlIHB1cnBvc2Ugb2YgW2Nvbm5lY3RdIGlzIHRvIG1ha2UgdGFpbC1yZWN1cnNpdmUgYmluZCBsb29wcyB1c2UgY29uc3RhbnQgc3BhY2UuXG4gICBFLmcuOlxuXG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgaWYgaSA9IDBcbiAgICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBhZnRlciAoc2VjIDEuKSBpblxuICAgICAgICAgbG9vcCAoaSAtIDEpKSBdfVxuXG4gICBbY29ubmVjdF0gbWFrZXMgaW50ZXJtZWRpYXRlIGJpbmQgcmVzdWx0cyBhbGwgYmUgW0luZGlyXXMgcG9pbnRpbmcgYXQgdGhlIG91dGVybW9zdFxuICAgYmluZCwgcmF0aGVyIHRoYW4gYmVpbmcgYSBsaW5lYXItbGVuZ3RoIGNoYWluLCB3aXRoIGVhY2ggcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIG9uZS5cbiAgIFRoZW4sIHNpbmNlIHRoZSBwcm9ncmFtIGlzIG9ubHkgaG9sZGluZyBvbiB0byB0aGUgaW5uZXJtb3N0IGFuZCBvdXRlcm1vc3QgYmluZHMgYWxsIHRoZVxuICAgaW50ZXJtZWRpYXRlIG9uZXMgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkLlxuXG4gICBbY29ubmVjdF0gd29ya3MgYnkgc3F1YXNoaW5nIGl0cyBhcmd1bWVudHMgc28gdGhhdCB0aGUgW2JpbmRfcmhzXSBhbHdheXMgcG9pbnRzIGF0IHRoZVxuICAgdWx0aW1hdGUgcmVzdWx0LiAqKVxubGV0IGNvbm5lY3QgPVxuICAoKiBbcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdF0gcmVwb2ludHMgdG8gW2luZGlyXSBhbGwgdGhlIGl2YXJzIGluIHRoZVxuICAgICBjaGFpbiByZWFjaGFibGUgZnJvbSBbaXZhcl0sIGFuZCByZXR1cm5zIHRoZSBub24tW0luZGlyXSBjZWxsIGF0IHRoZSBlbmQgb2YgdGhlXG4gICAgIGNoYWluLiAgQWZ0ZXIgcmVwb2ludGluZywgd2Ugd2lsbCBtZXJnZSB0aGUgaGFuZGxlcnMgaW4gdGhhdCBjZWxsIHdpdGggdGhlIGhhbmRsZXJzXG4gICAgIGluIFtiaW5kX3Jlc3VsdF0sIGFuZCBwdXQgdGhlIG1lcmdlZCBzZXQgb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XS4gKilcbiAgbGV0IHJlYyByZXBvaW50X2luZGlycyB+aXZhciB+aW5kaXIgfmJpbmRfcmVzdWx0ID1cbiAgICBsZXQgY2VsbCA9IGl2YXIuY2VsbCBpblxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgSW5kaXIgaXZhcicgLT5cbiAgICAgIGl2YXIuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHJlcG9pbnRfaW5kaXJzIH5pdmFyOml2YXInIH5pbmRpciB+YmluZF9yZXN1bHRcbiAgICB8IEZ1bGwgXyAtPiBjZWxsXG4gICAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgICAoKiBJdCBpcyBwb3NzaWJsZSB0aGF0IFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gYXJlIG5vdCBlcXVhbCwgYnV0IHRoZWlyIGNoYWluc1xuICAgICAgICAgb2YgaW5kaXJzIGxlYWQgdG8gdGhlIHNhbWUgbm9uLVtJbmRpcl0gY2VsbCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW5ub3Qgc2V0IHRoYXRcbiAgICAgICAgIGNlbGwgdG8gcG9pbnQgdG8gaXRzZWxmLCBiZWNhdXNlIHRoYXQgd291bGQgaW50cm9kdWNlIGEgY3ljbGUuICopXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgaXZhciBiaW5kX3Jlc3VsdCkgdGhlbiBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICBjZWxsXG4gIGluXG4gIGZ1biB+YmluZF9yZXN1bHQgfmJpbmRfcmhzIC0+XG4gICAgaWYgbm90IChwaHlzX2VxdWFsIGJpbmRfcmVzdWx0IGJpbmRfcmhzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGJpbmRfcmVzdWx0ID0gc3F1YXNoIGJpbmRfcmVzdWx0IGluXG4gICAgICBsZXQgaW5kaXIgPSBJbmRpciBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGJpbmRfcmhzX2NvbnRlbnRzID0gcmVwb2ludF9pbmRpcnMgfml2YXI6YmluZF9yaHMgfmluZGlyIH5iaW5kX3Jlc3VsdCBpblxuICAgICAgKCogdXBkYXRlIFtiaW5kX3Jlc3VsdF0gd2l0aCB0aGUgdW5pb24gb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XSBhbmRcbiAgICAgICAgIFtiaW5kX3Joc10gKilcbiAgICAgIG1hdGNoIGJpbmRfcmVzdWx0LmNlbGwsIGJpbmRfcmhzX2NvbnRlbnRzIHdpdGhcbiAgICAgIHwgSW5kaXIgXywgXyB8IF8sIEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gYW5kIFtyZXBvaW50X2luZGlyc10gKilcbiAgICAgICgqIFtjb25uZWN0XSBpcyBvbmx5IHVzZWQgaW4gYmluZCwgd2hvc2UgaXZhciBpcyBvbmx5IGV2ZXIgZXhwb3J0ZWQgYXMgYSByZWFkLW9ubHlcbiAgICAgICAgIGRlZmVycmVkLiAgVGh1cywgW2JpbmRfcmVzdWx0XSBtdXN0IGJlIGVtcHR5LiAqKVxuICAgICAgfCBGdWxsIF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IF8sIEVtcHR5IC0+ICgpXG4gICAgICB8IEVtcHR5LCBfIC0+IGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHNcbiAgICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgICAgIHwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciksIEZ1bGwgdiAtPlxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzO1xuICAgICAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG4gICAgICB8ICggRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjEsIGV4ZWN1dGlvbl9jb250ZXh0MSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiBpblxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyMVxuICAgICAgfCAoIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIxKVxuICAgICAgICAsIEVtcHR5X29uZV9oYW5kbGVyIChydW4yLCBleGVjdXRpb25fY29udGV4dDIpICkgLT5cbiAgICAgICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyMSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA6IF8gSGFuZGxlci50KVxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIxID0gSGFuZGxlci5hZGQgaGFuZGxlcjIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMikgKSAtPiBIYW5kbGVyLnNwbGljZSBoYW5kbGVyMSBoYW5kbGVyMilcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBJdmFyID0gSXZhcjBcbm1vZHVsZSBIYW5kbGVyID0gSXZhci5IYW5kbGVyXG5cbigqIERlZmVycmVkcyBwcmVzZW50IGEgY292YXJpYW50IHZpZXcgb2YgaXZhcnMuICBXZSBjb3VsZCBhY3R1YWxseSBpbXBsZW1lbnQgZGVmZXJyZWRzXG4gICB1c2luZyBhIHJlY29yZCBvZiBjbG9zdXJlcywgYXMgaW4gdGhlIFtlc3NlbmNlX29mX2RlZmVycmVkXSByZWNvcmQgYmVsb3csIGZvciB3aGljaCB0aGVcbiAgIE9DYW1sIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgY292YXJpYW5jZS4gIEhvd2V2ZXIsIGRvaW5nIHNvIHdvdWxkIG1ha2UgW0l2YXIucmVhZF0gdmVyeVxuICAgY29zdGx5LCBiZWNhdXNlIGl0IHdvdWxkIGhhdmUgdG8gYWxsb2NhdGUgbG90cyBvZiBjbG9zdXJlcyBhbmQgYSByZWNvcmQuICBJbnN0ZWFkIG9mXG4gICBkb2luZyB0aGlzLCB3ZSBtYWtlIGRlZmVycmVkcyBhbiBhYnN0cmFjdCBjb3ZhcmlhbnQgdHlwZSwgd2hpY2ggY29uY3JldGVseSBpcyBqdXN0IHRoZVxuICAgaXZhciwgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBjb252ZXJ0IGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gYSBkZWZlcnJlZCBhbmQgaXRzIGNvbmNyZXRlXG4gICByZXByZXNlbnRhdGlvbiBhcyBhbiBpdmFyLiAgVGhpcyBbT2JqLm1hZ2ljXSBpcyBzYWZlIGJlY2F1c2UgdGhlIHJlcHJlc2VudGF0aW9uIGlzXG4gICBhbHdheXMganVzdCBhbiBpdmFyLCBhbmQgdGhlIGNvdmFyaWFuY2UgZm9sbG93cyBmcm9tIHRoZSBmYWN0IHRoYXQgYWxsIHRoZSBkZWZlcnJlZFxuICAgb3BlcmF0aW9ucyBhcmUgZXF1aXZhbGVudCB0byB0aG9zZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBvbiB0b3Agb2YgdGhlXG4gICBbZXNzZW5jZV9vZl9kZWZlcnJlZF0uXG5cbiAgIHtbXG4gICAgIHR5cGUgKCsnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBlc3NlbmNlX29mX2RlZmVycmVkID1cbiAgICAgICB7IHBlZWsgICAgICAgICAgICAgICAgICAgICAgOiB1bml0IC0+ICdhIG9wdGlvblxuICAgICAgIDsgaXNfZGV0ZXJtaW5lZCAgICAgICAgICAgICA6IHVuaXQgLT4gYm9vbFxuICAgICAgIDsgdXBvbiAgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiB1bml0XG4gICAgICAgOyB1cG9uJyAgICAgICAgICAgICAgICAgICAgIDogKCdhIC0+IHVuaXQpIC0+IFVucmVnaXN0ZXIudFxuICAgICAgIDsgaW5zdGFsbF9yZW1vdmFibGVfaGFuZGxlciA6ICgnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBSYXdfaGFuZGxlci50IC0+IFVucmVnaXN0ZXIudDsgfSBdfSAqKVxuXG50eXBlICsnYSB0ID0gJ2EgVHlwZXMuRGVmZXJyZWQudFxuXG4oKiB0aGUgYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIGVxdWl2YWxlbnQgdG8gaXZhciAqKVxuXG5sZXQgb2ZfaXZhciAodHlwZSBhKSAoaXZhciA6IGEgSXZhci50KSA6IGEgdCA9IE9iai5tYWdpYyBpdmFyXG5sZXQgdG9faXZhciAodHlwZSBhKSB0IDogYSBJdmFyLnQgPSBPYmoubWFnaWMgKHQgOiBhIHQpXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSAodG9faXZhciB0KVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IEl2YXIuc2V4cF9vZl90IHNleHBfb2ZfYSAodG9faXZhciB0KVxubGV0IHBlZWsgdCA9IEl2YXIucGVlayAodG9faXZhciB0KVxubGV0IHJldHVybiBhID0gb2ZfaXZhciAoSXZhci5jcmVhdGVfZnVsbCBhKVxubGV0IGlzX2RldGVybWluZWQgdCA9IEl2YXIuaXNfZnVsbCAodG9faXZhciB0KVxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBJdmFyLnZhbHVlXG4gICAgKHRvX2l2YXIgdClcbiAgICB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkRlZmVycmVkLnZhbHVlX2V4biBjYWxsZWQgb24gdW5kZXRlcm1pbmVkIGRlZmVycmVkXCJcbjs7XG5cbmxldCB1cG9uIHQgZiA9IEl2YXIudXBvbiAodG9faXZhciB0KSBmXG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmIHJlc3VsdDtcbiAgb2ZfaXZhciByZXN1bHRcbjs7XG5cbigqIGRvbid0IHVzZSBbY3JlYXRlXSBoZXJlIGFzIGl0IHdvdWxkIGFsbG9jYXRlIG9uZSBtb3JlIGNsb3N1cmUgKilcbmxldCBiaW5kIHQgfmYgPVxuICBsZXQgYmluZF9yZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuY29ubmVjdCB+YmluZF9yZXN1bHQgfmJpbmRfcmhzOih0b19pdmFyIChmIGEpKSk7XG4gIG9mX2l2YXIgYmluZF9yZXN1bHRcbjs7XG5cbmxldCBhZGRfaGFuZGxlciB0IGYgZXhlY3V0aW9uX2NvbnRleHQgPSBJdmFyLmFkZF9oYW5kbGVyICh0b19pdmFyIHQpIGYgZXhlY3V0aW9uX2NvbnRleHRcbmxldCByZW1vdmVfaGFuZGxlciB0IGggPSBJdmFyLnJlbW92ZV9oYW5kbGVyICh0b19pdmFyIHQpIGhcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQwXG5pbmNsdWRlIEl2YXIwXG5cbmxldCByZWFkID0gRGVmZXJyZWQub2ZfaXZhclxubGV0IGZpbGxfaWZfZW1wdHkgdCB2ID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZpbGwgdCB2XG5cbmluY2x1ZGVcbiAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAoT3B0aW9uKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSBwZWVrIHRcblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gICAgICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9mdWxsIGFcbiAgICAgIDs7XG4gICAgZW5kKVxuIiwiKCoqIFtNb25hZF9zZXF1ZW5jZS5TXSBpcyBhIGdlbmVyaWMgaW50ZXJmYWNlIHNwZWNpZnlpbmcgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGFcbiAgICBjb250YWluZXIgYW5kIGEgbW9uYWQuICBJdCBpcyBzcGVjaWFsaXplZCB0byB0aGUgW0RlZmVycmVkXSBtb25hZCBhbmQgdXNlZCB3aXRoXG4gICAgdmFyaW91cyBjb250YWluZXJzIGluIG1vZHVsZXMgW0RlZmVycmVkLkFycmF5XSwgW0RlZmVycmVkLkxpc3RdLCBbRGVmZXJyZWQuUXVldWVdLCBhbmRcbiAgICBbRGVmZXJyZWQuU2VxdWVuY2VdLiAgVGhlIFtNb25hZF9zZXF1ZW5jZS5ob3ddIHR5cGUgc3BlY2lmaWVzIHRoZSBwYXJhbGxlbGlzbSBvZlxuICAgIGNvbnRhaW5lciBpdGVyYXRvcnMuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIGhvdyA9XG4gIFsgYFBhcmFsbGVsICgqKiBsaWtlIFtgTWF4X2NvbmN1cnJlbnRfam9icyBJbnQubWF4X3ZhbHVlXSAqKVxuICB8IGBTZXF1ZW50aWFsXG4gICgqKiBbYFNlcXVlbnRpYWxdIGlzIG9mdGVuIGJ1dCBub3QgYWx3YXlzIHRoZSBzYW1lIGFzIFtgTWF4X2NvbmN1cnJlbnRfam9icyAxXVxuICAgICAgKGZvciBleGFtcGxlLCB0aGV5IGRpZmZlciBpbiB0aGUgW09yX2Vycm9yXSBtb25hZCkuICopXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgb2YgaW50XG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSBtb25hZFxuICB0eXBlICdhIHRcblxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiBtb25hZFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAoaW50ICogJ2EpIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2Igb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBhbGwgOiAnYSBtb25hZCB0IC0+ICdhIHQgbW9uYWRcbiAgdmFsIGFsbF91bml0IDogdW5pdCBtb25hZCB0IC0+IHVuaXQgbW9uYWRcblxuICAoKiogezIgRGVmZXJyZWQgaXRlcmF0b3JzfVxuXG4gICAgICBJbiB0aGUgZm9sbG93aW5nLCB0aGUgZGVmYXVsdCBbaG93XSBpcyBbYFNlcXVlbnRpYWxdICopXG5cbiAgdmFsIGluaXQgOiA/aG93OmhvdyAtPiBpbnQgLT4gZjooaW50IC0+ICdhIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBpdGVyIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiB1bml0IG1vbmFkKSAtPiB1bml0IG1vbmFkXG4gIHZhbCBpdGVyaSA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIG1hcCA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIG1hcGkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgZmlsdGVyIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJpIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcCA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJfbWFwaSA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcCA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcGkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiB0IG1vbmFkKSAtPiAnYiB0IG1vbmFkXG5lbmRcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbmluY2x1ZGUgRGVmZXJyZWQwXG5cbigqIFRvIGF2b2lkIGEgc3BhY2UgbGVhaywgaXQgaXMgbmVjZXNzYXJ5IHRoYXQgW25ldmVyXSBhbGxvY2F0ZXMgYSBuZXcgaXZhciB3aGVuZXZlciBpdCBpc1xuICAgY2FsbGVkLiAgQ29kZSBjYW4gYmluZCBvbiBbbmV2ZXIgKCldLCBzbyBpZiB3ZSByZS11c2VkIHRoZSBpdmFyLCB3ZSBjb3VsZCBlbmRsZXNzbHlcbiAgIGFjY3VtdWxhdGUgaGFuZGxlcnMuICopXG5sZXQgbmV2ZXIgKCkgPSBJdmFyLnJlYWQgKEl2YXIuY3JlYXRlICgpKVxuXG5tb2R1bGUgTSA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgRGVmZXJyZWQwXG5cbiAgICBsZXQgbWFwIHQgfmYgPVxuICAgICAgKCogV2UgbWFudWFsbHkgaW5saW5lIFtEZWZlcnJlZC5jcmVhdGVdIGhlcmUsIGJlY2F1c2UgdGhlIG5vbi1mbGFtYmRhIGNvbXBpbGVyIGlzbid0XG4gICAgICAgICBhYmxlIHRvIG9wdGltaXplIGF3YXkgdGhlIGNsb3N1cmUgdGhhdCB3b3VsZCBiZSBiZSBjcmVhdGVkLiAqKVxuICAgICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuZmlsbCByZXN1bHQgKGYgYSkpO1xuICAgICAgb2ZfaXZhciByZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxuaW5jbHVkZSBNXG5cbigqIFdlIHJlYmluZCBhbGwgdGhlIHZhcmlvdXMgW3JldHVybl1zIGJlY2F1c2UgdGhlIHVzZSBvZiB0aGUgW01vbmFkLk1ha2VdIGZ1bmN0b3JcbiAgIGNhdXNlcyB0aGUgY29tcGlsZXIgdG8gbm90IGlubGluZSBbcmV0dXJuXSwgYW5kIGhlbmNlIG1ha2VzIGl0IGltcG9zc2libGUgdG9cbiAgIHN0YXRpY2FsbHkgYWxsb2NhdGUgY29uc3RhbnRzIGxpa2UgW3JldHVybiAoKV0uICBCeSByZWJpbmRpbmcgW3JldHVybl0gYXNcbiAgIFtEZWZlcnJlZDAucmV0dXJuXSwgdGhlIGNvbXBpbGVyIGNhbiBzZWUgdGhhdDpcblxuICAge1tcbiAgICAgcmV0dXJuIGEgPSB7IEl2YXIuSW1tdXRhYmxlLiBjZWxsID0gRnVsbCBhIH0gXX1cblxuICAgQW5kIGhlbmNlLCBpZiBbYV0gaXMgY29uc3RhbnQsIHRoZW4gdGhlIHJldHVybiBpcyBjb25zdGFudCBhbmQgY2FuIGJlIHN0YXRpY2FsbHlcbiAgIGFsbG9jYXRlZC4gIFdoZW4gY29tcGlsaW5nIHdpdGggZmxhbWJkYSwgdGhlIGNvbXBpbGVyIGlubGluZXMgW3JldHVybl0gYW5kIHRoaXMgbWFudWFsXG4gICByZWJpbmRpbmcgd291bGQgbm90IGhlbHA7IHdlJ3ZlIGRlY2lkZWQgdG8gZG8gaXQgYW55d2F5IHNvIHRoYXQgbm9uLWZsYW1iZGEgYnVpbGRzXG4gICBnZXQgdGhlIG9wdGltaXphdGlvbi4gKilcbmxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgTS5MZXRfc3ludGF4XG5cbiAgbGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTS5MZXRfc3ludGF4LkxldF9zeW50YXhcblxuICAgIGxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG4oKiBXZSBzaGFkb3cgW2FsbF0gb24tcHVycG9zZSBoZXJlLCBzaW5jZSB0aGUgZGVmYXVsdCBkZWZpbml0aW9uIGludHJvZHVjZXMgYSBjaGFpbiBvZlxuICAgYmluZHMgYXMgbG9uZyBhcyB0aGUgbGlzdC4gKilcbmxldCBhbGwgPSBgTWFrZV9zdXJlX3RvX2RlZmluZV9hbGxfZWxzZXdoZXJlXG5sZXQgXyA9IGFsbFxubGV0IHVuaXQgPSByZXR1cm4gKClcblxubGV0IGJvdGggdDEgdDIgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT4gdXBvbiB0MSAoZnVuIGExIC0+IHVwb24gdDIgKGZ1biBhMiAtPiBJdmFyLmZpbGwgcmVzdWx0IChhMSwgYTIpKSkpXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIGxldCAoID4+PiApID0gdXBvblxuICBsZXQgcHB4X2JvdGggPSBib3RoXG5lbmRcblxub3BlbiBJbmZpeFxuXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgKF8gOiB1bml0IHQpID0gKClcblxubW9kdWxlIENob2ljZSA9IHN0cnVjdFxuICB0eXBlICsnYSB0ID0gVCA6ICdiIERlZmVycmVkMC50ICogKCdiIC0+ICdhKSAtPiAnYSB0XG5cbiAgbGV0IG1hcCAoVCAodCwgZjEpKSB+ZjpmMiA9IFQgKHQsIGZ1biB4IC0+IGYyIChmMSB4KSlcbmVuZFxuXG5tb2R1bGUgVW5yZWdpc3RlciA9IHN0cnVjdFxuICAoKiBUaGlzIHJlcHJlc2VudGF0aW9uIHNhdmVzIDJuIHdvcmRzIGZvciBhIGxpc3Qgb2YgbiBjaG9pY2VzLiAqKVxuICB0eXBlIHQgPVxuICAgIHwgTmlsIDogdFxuICAgIHwgQ29ucyA6ICdhIERlZmVycmVkMC50ICogJ2EgRGVmZXJyZWQwLkhhbmRsZXIudCAqIHQgLT4gdFxuXG4gIGxldCByZWMgcHJvY2VzcyA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHQsIGhhbmRsZXIsIHJlc3QpIC0+XG4gICAgICByZW1vdmVfaGFuZGxlciB0IGhhbmRsZXI7XG4gICAgICBwcm9jZXNzIHJlc3RcbiAgOztcbmVuZFxuXG5sZXQgY2hvaWNlIHQgZiA9IENob2ljZS5UICh0LCBmKVxuXG5sZXQgZW5hYmxlZCBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCB1bnJlZ2lzdGVycyA9IHJlZiBVbnJlZ2lzdGVyLk5pbCBpblxuICBsZXQgcmVhZHkgXyA9XG4gICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICB0aGVuIChcbiAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyAhdW5yZWdpc3RlcnM7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0IChmdW4gKCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6W10gfmY6KGZ1biBhYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgICAgICAgICAgIG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IGFjXG4gICAgICAgICAgICAgfCBTb21lIHYgLT4gZiB2IDo6IGFjKSkpKVxuICBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICB1bnJlZ2lzdGVyc1xuICA6PSBMaXN0LmZvbGQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIGFjYyAoQ2hvaWNlLlQgKHQsIF8pKSAtPlxuICAgIENvbnMgKHQsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKTtcbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IHJlYyBjaG9vc2VfcmVzdWx0IGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDaG9pY2UuVCAodCwgZikgOjogY2hvaWNlcyAtPlxuICAgIChtYXRjaCBwZWVrIHQgd2l0aFxuICAgICB8IE5vbmUgLT4gY2hvb3NlX3Jlc3VsdCBjaG9pY2VzXG4gICAgIHwgU29tZSB2IC0+IGYgdilcbjs7XG5cbmxldCBjaG9vc2UgY2hvaWNlcyA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdW5yZWdpc3RlcnMgPSByZWYgVW5yZWdpc3Rlci5OaWwgaW5cbiAgbGV0IHJlYWR5IF8gPVxuICAgIGlmIEl2YXIuaXNfZW1wdHkgcmVzdWx0XG4gICAgdGhlbiAoXG4gICAgICBVbnJlZ2lzdGVyLnByb2Nlc3MgIXVucmVnaXN0ZXJzO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoY2hvb3NlX3Jlc3VsdCBjaG9pY2VzKSlcbiAgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgdW5yZWdpc3RlcnNcbiAgOj0gTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6VW5yZWdpc3Rlci5OaWwgfmY6KGZ1biBhY2MgKENob2ljZS5UICh0LCBfKSkgLT5cbiAgICBDb25zICh0LCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSk7XG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbmxldCBhbnlfZiB0cyBmID0gY2hvb3NlIChMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gY2hvaWNlIHQgZikpXG5sZXQgYW55IHRzID0gYW55X2YgdHMgRm4uaWRcbmxldCBhbnlfdW5pdCB0cyA9IGFueV9mIHRzIChGbi5pZ25vcmUgOiB1bml0IC0+IHVuaXQpXG5cbmxldCBmb3JfIHN0YXJ0IH50b18gfmRvXyA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID4gdG9fXG4gICAgdGhlbiByZXR1cm4gKClcbiAgICBlbHNlIChcbiAgICAgIGxldCViaW5kICgpID0gZG9fIGkgaW5cbiAgICAgIGxvb3AgKGkgKyAxKSlcbiAgaW5cbiAgbG9vcCBzdGFydFxuOztcblxubGV0IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgICAgZiBzdGF0ZVxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IGBSZXBlYXQgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgICAgfCBgRmluaXNoZWQgcmVzdWx0IC0+IEl2YXIuZmlsbCBmaW5pc2hlZCByZXN1bHRcbiAgICBpblxuICAgIGxvb3Agc3RhdGUpXG47O1xuXG5sZXQgZm9yZXZlciBzdGF0ZSBmID1cbiAgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIChmdW4gc3RhdGUgLT5cbiAgICBsZXQlbWFwIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgIGBSZXBlYXQgc3RhdGUpXG4gID4+PiBuZXZlcl9yZXR1cm5zXG47O1xuXG50eXBlIGhvdyA9IE1vbmFkX3NlcXVlbmNlLmhvdyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlLlMgd2l0aCB0eXBlICdhIG1vbmFkIDo9ICdhIHRcblxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgYlxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgc2VxbWFwIHQgfmYgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBicyBhIC0+IGYgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgPj58IExpc3QucmV2XG5sZXQgYWxsIGRzID0gc2VxbWFwIGRzIH5mOkZuLmlkXG5sZXQgYWxsX3VuaXQgZHMgPSBmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKVxubGV0IG9rIHggPSB4ID4+fCBmdW4geCAtPiBPayB4XG4iLCJvcGVuIERlZmVycmVkMVxuaW5jbHVkZSBJbmZpeFxuaW5jbHVkZSBMZXRfc3ludGF4XG5cbmxldCBjaG9pY2UgPSBjaG9pY2VcbmxldCBjaG9vc2UgPSBjaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IGRvbid0X3dhaXRfZm9yXG5sZXQgbmV2ZXIgPSBuZXZlclxubGV0IHJldHVybiA9IHJldHVyblxubGV0IHVwb24gPSB1cG9uXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB1ID1cbiAgfCBFbXB0eSBvZiAnYSBJdmFyLnRcbiAgfCBGdWxsXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlICdhIHQgPSAnYSB1IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgRnVsbCAtPiAoKVxuICAgIHwgRW1wdHkgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdCA9IHJlZiAoRW1wdHkgaXZhcikgaW5cbiAgdCwgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IEVtcHR5IF8gLT4gdHJ1ZVxuICB8IEZ1bGwgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaWxsIHQgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBpIC0+XG4gICAgdCA6PSBGdWxsO1xuICAgIEl2YXIuZmlsbCBpIGFcbiAgfCBGdWxsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiYXR0ZW1wdCB0byBmaWxsIGZ1bGwgaXZhclwiXVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBTdHJlYW0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgbmV4dCBEZWZlcnJlZC50XG5cbiAgYW5kICdhIG5leHQgPSAnYSBUeXBlcy5TdHJlYW0ubmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbGV0IHJlYyBsb29wIGQgYWMgOiBTZXhwLnQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMaXN0IChMaXN0LnJldiAoU2V4cC5BdG9tIFwiLi4uXCIgOjogYWMpKVxuICAgICAgfCBTb21lIE5pbCAtPiBMaXN0IChMaXN0LnJldiBhYylcbiAgICAgIHwgU29tZSAoQ29ucyAoYSwgdCkpIC0+IGxvb3AgdCAoc2V4cF9vZl9hIGEgOjogYWMpXG4gICAgaW5cbiAgICBsb29wIHQgW11cbiAgOztcblxuICBsZXQgbmV4dCB0ID0gdFxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlRhaWwudCA9XG4gIHsgKCogW25leHRdIHBvaW50cyBhdCB0aGUgdGFpbCBvZiB0aGUgc3RyZWFtICopIG11dGFibGUgbmV4dCA6ICdhIFN0cmVhbS5uZXh0IEl2YXIudCB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3QgXyB0IDogU2V4cC50ID1cbiAgQXRvbSAoaWYgSXZhci5pc19lbXB0eSB0Lm5leHQgdGhlbiBcIjxvcGVuIHRhaWw+XCIgZWxzZSBcIjxjbG9zZWQgdGFpbD5cIilcbjs7XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSB9XG5sZXQgY29sbGVjdCB0ID0gSXZhci5yZWFkIChuZXh0IHQpXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgKG5leHQgdClcblxubGV0IGZpbGxfZXhuIHQgdiA9XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJzdHJlYW0gaXMgY2xvc2VkXCJdIGVsc2UgSXZhci5maWxsIChuZXh0IHQpIHZcbjs7XG5cbmxldCBjbG9zZV9leG4gdCA9IGZpbGxfZXhuIHQgTmlsXG5sZXQgY2xvc2VfaWZfb3BlbiB0ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiBJdmFyLmZpbGwgKG5leHQgdCkgTmlsXG5cbmxldCBleHRlbmQgdCB2ID1cbiAgbGV0IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmaWxsX2V4biB0IChDb25zICh2LCBJdmFyLnJlYWQgbmV4dCkpO1xuICB0Lm5leHQgPC0gbmV4dFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gVGFpbC5TdHJlYW1cbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcbmluY2x1ZGUgTW9uaXRvclxuXG50eXBlIG1vbml0b3IgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bmFtZTppZ25vcmVcbiAgICAgIH5oZXJlOmlnbm9yZVxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmZvcndhcmRpbmc6aWdub3JlXG4gICAgICB+bmV4dF9lcnJvcjooY2hlY2sgKGZ1biBuZXh0X2Vycm9yIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBuZXh0X2Vycm9yKSkpXG4gICAgICB+aGFuZGxlcnNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+dGFpbHNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+aGFzX3NlZW5fZXJyb3I6aWdub3JlKVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKVxubGV0IGN1cnJlbnQgKCkgPSBFeGVjdXRpb25fY29udGV4dC5tb25pdG9yIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKVxuXG50eXBlICdhIHdpdGhfb3B0aW9uYWxfbW9uaXRvcl9uYW1lID1cbiAgP2hlcmU6U291cmNlX2NvZGVfcG9zaXRpb24udCAtPiA/aW5mbzpJbmZvLnQgLT4gP25hbWU6c3RyaW5nIC0+ICdhXG5cbmxldCBkZXRhY2ggdCA9IHQuZm9yd2FyZGluZyA8LSBEZXRhY2hlZFxuXG50eXBlIGhhbmRsZXJfc3RhdGUgPVxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBSdW5uaW5nIG9mIChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLkVsdC50XG4gIHwgVGVybWluYXRlZFxuXG5sZXQgZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyB0IH5mID1cbiAgZGV0YWNoIHQ7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IGhhbmRsZXJfc3RhdGVfcmVmID0gcmVmIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHJ1bl9mIGV4biA9XG4gICAgbWF0Y2ggIWhhbmRsZXJfc3RhdGVfcmVmIHdpdGhcbiAgICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBUZXJtaW5hdGVkIC0+ICgpXG4gICAgfCBSdW5uaW5nIGJhZ19lbHQgLT5cbiAgICAgICh0cnkgZiBleG4gd2l0aFxuICAgICAgIHwgaW5uZXJfZXhuIC0+XG4gICAgICAgICBoYW5kbGVyX3N0YXRlX3JlZiA6PSBUZXJtaW5hdGVkO1xuICAgICAgICAgQmFnLnJlbW92ZSB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIGJhZ19lbHQ7XG4gICAgICAgICAoKiBbcnVuX2ZdIGFsd2F5cyBydW5zIGluIFtleGVjdXRpb25fY29udGV4dF0uICBIZW5jZSwgW3JhaXNlIGlubmVyX2V4bl0gc2VuZHNcbiAgICAgICAgICAgIFtpbm5lcl9leG5dIHRvIFtleGVjdXRpb25fY29udGV4dF0ncyBtb25pdG9yLCBpLmUuIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICAgICAgICBbZGV0YWNoX2FuZF9pdGVyX2Vycm9yc10gd2FzIGNhbGxlZC4gKilcbiAgICAgICAgIHJhaXNlIGlubmVyX2V4bilcbiAgaW5cbiAgaGFuZGxlcl9zdGF0ZV9yZWZcbiAgOj0gUnVubmluZyAoQmFnLmFkZCB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIChleGVjdXRpb25fY29udGV4dCwgcnVuX2YpKVxuOztcblxubGV0IGRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSB0ID1cbiAgZGV0YWNoIHQ7XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgdC50YWlsc19mb3JfYWxsX2Vycm9ycyA8LSB0YWlsIDo6IHQudGFpbHNfZm9yX2FsbF9lcnJvcnM7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgZ2V0X25leHRfZXJyb3IgdCA9IEl2YXIucmVhZCB0Lm5leHRfZXJyb3JcblxubGV0IGRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IgdCA9XG4gIGRldGFjaCB0O1xuICBnZXRfbmV4dF9lcnJvciB0XG47O1xuXG5sZXQgY3JlYXRlID9oZXJlID9pbmZvID9uYW1lICgpID1cbiAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIChTb21lIHBhcmVudClcbjs7XG5cbm1vZHVsZSBNb25pdG9yX2V4biA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXhuIDogZXhuXG4gICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIDsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIH1cblxuICBsZXQgYmFja3RyYWNlIHQgPSB0LmJhY2t0cmFjZVxuICBsZXQgZXh0cmFjdF9leG4gdCA9IHQuZXhuXG5cbiAgbGV0IGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgPVxuICAgIGxldCBqb2JfcXVldWUgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImpvYl9xdWV1ZS5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDAgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMC5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDEgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMS5tbFxcXCJcIiBpblxuICAgIGxldCBtb25pdG9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJtb25pdG9yLm1sXFxcIlwiIGluXG4gICAgbGV0IGltcG9ydDAgPSBcIlJhaXNlZCBhdCBmaWxlIFxcXCJpbXBvcnQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGVycm9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJlcnJvci5tbFxcXCJcIiBpblxuICAgIGZ1biB0cmFjZXMgLT5cbiAgICAgICgqIC4uL3Rlc3QvdGVzdF90cnlfd2l0aF9lcnJvcl9kaXNwbGF5Lm1sIG1ha2VzIHN1cmUgdGhpcyBzdGF5cyB1cC10by1kYXRlLiAqKVxuICAgICAgbGV0IHRyYWNlcyA9XG4gICAgICAgIG1hdGNoIHRyYWNlcyB3aXRoXG4gICAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDppbXBvcnQwIC0+XG4gICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICB8IHQyIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZXJyb3IgLT5cbiAgICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICAgIHwgdDMgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDMgfnByZWZpeDplcnJvciAtPiByZXN0XG4gICAgICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICAgICB8IF8gLT4gcmVzdClcbiAgICAgICAgfCBfIC0+IHRyYWNlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIExpc3QucmV2IHRyYWNlcyB3aXRoXG4gICAgICB8IHQxIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQxIH5wcmVmaXg6am9iX3F1ZXVlIC0+XG4gICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCB0MiA6OiByZXN0XG4gICAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmRlZmVycmVkMFxuICAgICAgICAgICAgICAgICgqIGJpbmQgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQxXG4gICAgICAgICAgICAgICAgKCogbWFwICopXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4Om1vbml0b3JcbiAgICAgICAgICAgICAgKCogdHJ5X3dpdGggKikgLT4gTGlzdC5yZXYgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IExpc3QucmV2IHJlc3QpXG4gICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgIHwgXyAtPiB0cmFjZXNcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHsgZXhuOyBiYWNrdHJhY2U7IGJhY2t0cmFjZV9oaXN0b3J5OyBtb25pdG9yIH0gPVxuICAgIGxldCBtb25pdG9yID1cbiAgICAgIGxldCBuYW1lID1cbiAgICAgICAgbWF0Y2ggSW5mby50b19zdHJpbmdfaHVtIG1vbml0b3IubmFtZSB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICAgIHwgcyAtPiBTb21lIHNcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggbW9uaXRvci5oZXJlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGhlcmUgLT5cbiAgICAgICAgICAoKiBXZSBkaXNwbGF5IHRoZSBmdWxsIGZpbGVuYW1lLCB3aGVyZWFzIGJhY2t0cmFjZXMgb25seSBoYXZlIGJhc2VuYW1lcywgYnV0XG4gICAgICAgICAgICAgcGVyaGFwcyB0aGF0J3Mgd2hhdCBzaG91bGQgY2hhbmdlLiAqKVxuICAgICAgICAgIGxldCBjb2x1bW4gPSBoZXJlLnBvc19jbnVtIC0gaGVyZS5wb3NfYm9sIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKCogV2UgaGlkZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyB3aGVuIFthbV9ydW5uaW5nX3Rlc3RdIHRvIG1ha2UgdGVzdCBvdXRwdXRcbiAgICAgICAgICAgICAgIG1vcmUgcm9idXN0LiAgVGhpcyBzYXZlcyBwZW9wbGUgbWFudWFsbHkgaGlkaW5nIHRoZSBudW1iZXJzIG9yIGV2ZW4gd29yc2UsXG4gICAgICAgICAgICAgICBsZWF2aW5nIHRoZW0gaW4gdGVzdCBvdXRwdXQuICBIaWRpbmcgaW4gdGVzdCBpcyBkaWZmZXJlbnQgY2hvaWNlIGZvclxuICAgICAgICAgICAgICAgYmVoYXZpb3IgdGhhbiBvdXIgY29kZWJhc2UgbWFrZXMgZm9yIFtCYWNrdHJhY2UuZWxpZGVdLCB3aGljaCBoYXMgZGVmYXVsdFxuICAgICAgICAgICAgICAgW2ZhbHNlXSwgYW5kIHRodXMgc2hvd3MgYmFja3RyYWNlcyBpbiB0ZXN0LiAgVGhlcmUgYXJlIGEgY291cGxlIHJlYXNvbnMgZm9yXG4gICAgICAgICAgICAgICB0aGlzIGRpZmZlcmVudCBjaG9pY2UuICBGaXJzdCwgZXhwZWN0LXRlc3QgbWFjaGluZXJ5IGhhcyBjaGVjayB0byBwcmV2ZW50XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGZyb20gYXBwZWFyaW5nIGluIHRlc3Qgb3V0cHV0LiAgSXQgaGFzIG5vIHN1Y2ggY2hlY2tzIGZvciBsaW5lXG4gICAgICAgICAgICAgICBhbmQgY29sdW1uIG51bWJlcnMuICBTZWNvbmQsIHdoZW4gdGhlcmUgaXMgYSByZWFsIGVycm9yIGFuZCB5b3Ugd2FudCB0byBzZWVcbiAgICAgICAgICAgICAgIHRoZSBiYWNrdHJhY2UsIHRocm93aW5nIGF3YXkgdGhlIHdob2xlIGJhY2t0cmFjZSBsb3NlcyBhIGxvdCBvZiBwb3RlbnRpYWxseVxuICAgICAgICAgICAgICAgdXNlZnVsIGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlIGhhcmQgdG8gcmVjb3Zlci4gIFdoZXJlYXMgd2UncmUganVzdFxuICAgICAgICAgICAgICAgdGhyb3dpbmcgYSB3YXkgYSBsaW5lIG51bWJlciBhbmQgY29sdW1uLCB3aGljaCBhcmUgYSBtaW5vciBjb252ZW5pZW5jZVxuICAgICAgICAgICAgICAgZ2l2ZW4gdGhhdCB0aGUgZmlsZW5hbWUgaGFzIG1vc3Qgb2YgdGhlIGluZm9ybWF0aW9uLiAqKVxuICAgICAgICAgICAgKGlmIGFtX3J1bm5pbmdfdGVzdFxuICAgICAgICAgICAgIHRoZW4gc3ByaW50ZiBcImZpbGUgJVMsIGxpbmUgTElORSwgY2hhcmFjdGVycyBDMS1DMlwiIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcImZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19mbmFtZVxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19sbnVtXG4gICAgICAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgICBjb2x1bW4pXG4gICAgICBpblxuICAgICAgbWF0Y2ggcG9zLCBuYW1lIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIHBvcywgTm9uZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciBhdCAlc1wiIHBvcyBdXG4gICAgICB8IE5vbmUsIFNvbWUgbmFtZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciAlc1wiIG5hbWUgXVxuICAgICAgfCBTb21lIHBvcywgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzIGF0ICVzXCIgbmFtZSBwb3MgXVxuICAgIGluXG4gICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBiYWNrdHJhY2UgLT4gQmFja3RyYWNlLnRvX3N0cmluZ19saXN0IGJhY2t0cmFjZVxuICAgICAgaW5cbiAgICAgIGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgYmFja3RyYWNlIEAgbW9uaXRvclxuICAgIGluXG4gICAgbGV0IGxpc3RfaWZfbm90X2VtcHR5ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBfIDo6IF8gYXMgbCAtPiBTb21lIGxcbiAgICBpblxuICAgIFslc2V4cFxuICAgICAgKGV4biA6IGV4bilcbiAgICAsIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2UgOiAoc3RyaW5nIGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICwgYGJhY2t0cmFjZV9oaXN0b3J5XG4gICAgICAgIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2VfaGlzdG9yeSA6IChCYWNrdHJhY2UudCBsaXN0IG9wdGlvbltAc2V4cC5vcHRpb25dKSldXG4gIDs7XG5lbmRcblxuZXhjZXB0aW9uIE1vbml0b3JfZXhuIG9mIE1vbml0b3JfZXhuLnRcblxubGV0ICgpID1cbiAgU2V4cGxpYi5Db252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1vbml0b3JfZXhuXSAoZnVuY3Rpb25cbiAgICB8IE1vbml0b3JfZXhuIHQgLT4gWyVzZXhwIFwibW9uaXRvci5tbC5FcnJvclwiIDo6ICh0IDogTW9uaXRvcl9leG4udCldXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBleHRyYWN0X2V4biBleG4gPVxuICBtYXRjaCBleG4gd2l0aFxuICB8IE1vbml0b3JfZXhuIGVycm9yIC0+IGVycm9yLmV4blxuICB8IGV4biAtPiBleG5cbjs7XG5cbmxldCBzZW5kX2V4biB0ID8oYmFja3RyYWNlID0gYEdldCkgZXhuID1cbiAgbGV0IGV4biA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IE1vbml0b3JfZXhuIF8gLT4gZXhuXG4gICAgfCBfIC0+XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBgR2V0IC0+IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnRfZm9yX2V4biBleG5cbiAgICAgICAgfCBgVGhpcyBiIC0+IFNvbWUgYlxuICAgICAgaW5cbiAgICAgIGxldCBiYWNrdHJhY2VfaGlzdG9yeSA9IChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKS5iYWNrdHJhY2VfaGlzdG9yeSBpblxuICAgICAgTW9uaXRvcl9leG4geyBNb25pdG9yX2V4bi5leG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgPSB0IH1cbiAgaW5cbiAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4biB0aGVuIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG5cIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICB0Lmhhc19zZWVuX2Vycm9yIDwtIHRydWU7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgSXZhci5maWxsIHQubmV4dF9lcnJvciBleG47XG4gICAgdC5uZXh0X2Vycm9yIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCAtPlxuICAgICAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4blxuICAgICAgdGhlblxuICAgICAgICBEZWJ1Zy5sb2cgXCJNb25pdG9yLnNlbmRfZXhuIGZvdW5kIGxpc3RlbmluZyBtb25pdG9yXCIgKHQsIGV4bikgWyVzZXhwX29mOiB0ICogZXhuXTtcbiAgICAgIEJhZy5pdGVyIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgfmY6KGZ1biAoZXhlY3V0aW9uX2NvbnRleHQsIGYpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGV4bik7XG4gICAgICBMaXN0Lml0ZXIgdC50YWlsc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIHRhaWwgLT4gVGFpbC5leHRlbmQgdGFpbCBleG4pXG4gICAgfCBQYXJlbnQgcGFyZW50IC0+IGxvb3AgcGFyZW50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+XG4gICAgICAoKiBEbyBub3QgY2hhbmdlIHRoaXMgYnJhbmNoIHRvIHByaW50IHRoZSBleGNlcHRpb24gb3IgdG8gZXhpdC4gIEhhdmluZyB0aGVcbiAgICAgICAgIHNjaGVkdWxlciByYWlzZSBhbiB1bmNhdWdodCBleGNlcHRpb24gaXMgdGhlIG5lY2Vzc2FyeSBiZWhhdmlvciBmb3IgcHJvZ3JhbXNcbiAgICAgICAgIHRoYXQgY2FsbCBbU2NoZWR1bGVyLmdvXSBhbmQgd2FudCB0byBoYW5kbGUgaXQuICopXG4gICAgICBTY2hlZHVsZXIuKGdvdF91bmNhdWdodF9leG4gKHQgKCkpKSBleG4gKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCkpXG4gIGluXG4gIGxvb3AgdFxuOztcblxubW9kdWxlIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXIgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhpbl9jb250ZXh0IGNvbnRleHQgZiA9XG4gICAgU2NoZWR1bGVyLih3aXRoX2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgY29udGV4dCB+ZjooZnVuICgpIC0+XG4gICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggZiB3aXRoXG4gICAgICB8IE9rIHggLT4gT2sgeFxuICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgc2VuZF9leG4gKEV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgY29udGV4dCkgZXhuIH5iYWNrdHJhY2U6YEdldDtcbiAgICAgICAgRXJyb3IgKCkpXG4gIDs7XG5cbiAgdHlwZSAnYSB3aXRoX29wdGlvbnMgPSA/bW9uaXRvcjp0IC0+ID9wcmlvcml0eTpQcmlvcml0eS50IC0+ICdhXG5cbiAgbGV0IHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIGxldCB0bXBfY29udGV4dCA9XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSkgP21vbml0b3IgP3ByaW9yaXR5XG4gICAgaW5cbiAgICB3aXRoaW5fY29udGV4dCB0bXBfY29udGV4dCBmXG4gIDs7XG5cbiAgbGV0IHdpdGhpbicgP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IE9rIGQgLT4gZFxuICA7O1xuXG4gIGxldCB3aXRoaW5fdiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBOb25lXG4gICAgfCBPayB4IC0+IFNvbWUgeFxuICA7O1xuXG4gIGxldCB3aXRoaW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gKClcbiAgICB8IE9rICgpIC0+ICgpXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayB4ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBTY2hlZHVsZXIuZW5xdWV1ZVxuICAgICAgc2NoZWR1bGVyXG4gICAgICAoRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2VcbiAgICAgICAgIChTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIpXG4gICAgICAgICA/bW9uaXRvclxuICAgICAgICAgP3ByaW9yaXR5KVxuICAgICAgd29ya1xuICAgICAgeFxuICA7O1xuXG4gIGxldCBzY2hlZHVsZSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayA9IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAoKVxuXG4gIGxldCBzY2hlZHVsZScgPVxuICAgICgqIEZvciBwZXJmb3JtYW5jZSwgd2UgdXNlIFtzY2hlZHVsZV93aXRoX2RhdGFdIHdpdGggYSBjbG9zZWQgZnVuY3Rpb24sIGFuZCBpbmxpbmVcbiAgICAgICBbRGVmZXJyZWQuY3JlYXRlXS4gKilcbiAgICBsZXQgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSkgPSB1cG9uICh3b3JrICgpKSAoZnVuIGEgLT4gSXZhci5maWxsIGkgYSkgaW5cbiAgICBmdW4gP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgLT5cbiAgICAgIGxldCBpID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSk7XG4gICAgICBJdmFyLnJlYWQgaVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCBmID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSlcbiAgOztcblxuICBsZXQgcHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQnIGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIGxldCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSA9IHVwb24gKGYgYSkgKGZ1biByIC0+IEl2YXIuZmlsbCBpIHIpIGluXG4gICAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSkpXG4gIDs7XG5lbmRcblxub3BlbiBFeHBvcnRlZF9mb3Jfc2NoZWR1bGVyXG5cbmxldCBzdHJlYW1faXRlciBzdHJlYW0gfmYgPVxuICBsZXQgcmVjIGxvb3Agc3RyZWFtID1cbiAgICBTdHJlYW0ubmV4dCBzdHJlYW1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodiwgc3RyZWFtKSAtPlxuICAgICAgbG9vcCBzdHJlYW07XG4gICAgICBmIHZcbiAgaW5cbiAgbG9vcCBzdHJlYW1cbjs7XG5cbigqIEFuIFsnYSBPa19hbmRfZXhucy50XSByZXByZXNlbnRzIHRoZSBvdXRwdXQgb2YgYSBjb21wdXRhdGlvbiBydW5uaW5nIGluIGEgZGV0YWNoZWRcbiAgIG1vbml0b3IuICopXG5tb2R1bGUgT2tfYW5kX2V4bnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG9rIDogJ2EgRGVmZXJyZWQudFxuICAgIDsgZXhucyA6IGV4biBTdHJlYW0udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1biBmID1cbiAgICAoKiBXZSBjYWxsIFtjcmVhdGVfd2l0aF9wYXJlbnQgTm9uZV0gYmVjYXVzZSBbbW9uaXRvcl0gZG9lcyBub3QgbmVlZCBhIHBhcmVudC4gIEl0XG4gICAgICAgZG9lcyBub3QgYmVjYXVzZSB3ZSBjYWxsIFtkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcl0gYW5kIGRlYWwgd2l0aCB0aGVcbiAgICAgICBlcnJvcnMgZXhwbGljaXRseSwgdGh1cyBbc2VuZF9leG5dIHdvdWxkIG5ldmVyIHByb3BhZ2F0ZSBhbiBleG4gcGFzdCBbbW9uaXRvcl0uICopXG4gICAgbGV0IG1vbml0b3IgPSBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgTm9uZSBpblxuICAgIGxldCBleG5zID0gZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IgaW5cbiAgICBsZXQgb2sgPVxuICAgICAgbWF0Y2ggcnVuIHdpdGhcbiAgICAgIHwgYE5vdyAtPiB3aXRoaW4nIH5tb25pdG9yIGZcbiAgICAgIHwgYFNjaGVkdWxlIC0+IHNjaGVkdWxlJyB+bW9uaXRvciBmXG4gICAgaW5cbiAgICB7IG9rOyBleG5zIH1cbiAgOztcbmVuZFxuXG5sZXQgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgcmVzdWx0XG4gICAgICBleG5zXG4gICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHRcbiAgPVxuICBpZiBJdmFyX2ZpbGxlci5pc19lbXB0eSByZXN1bHRfZmlsbGVyXG4gIHRoZW4gKFxuICAgIEl2YXJfZmlsbGVyLmZpbGwgcmVzdWx0X2ZpbGxlciByZXN1bHQ7XG4gICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnMpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aF9sb2dfZXhuIDogKGV4biAtPiB1bml0KSByZWYgPVxuICAgIHJlZiAoZnVuIGV4biAtPlxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJmYWlsZWQgdG8gc2V0IFtNb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuXVwiIChleG4gOiBFeG4udCldKVxuICA7O1xuZW5kXG5cbmxldCBtYWtlX2hhbmRsZV9leG4gcmVzdCA9XG4gIG1hdGNoIHJlc3Qgd2l0aFxuICB8IGBMb2cgLT5cbiAgICAoKiBXZSBhcmUgY2FyZWZ1bCB0byBub3QgY2xvc2Ugb3ZlciBjdXJyZW50IGNvbnRleHQsIHdoaWNoIGlzIG5vdCBuZWVkZWQuICopXG4gICAgIUV4cGVydC50cnlfd2l0aF9sb2dfZXhuXG4gIHwgYFJhaXNlIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHNlbmRfZXhuIHBhcmVudCBleG4gP2JhY2t0cmFjZTpOb25lXG4gIHwgYENhbGwgZiAtPlxuICAgIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gICAgZnVuIGV4biAtPiB3aXRoaW4gfm1vbml0b3I6cGFyZW50IChmdW4gKCkgLT4gZiBleG4pXG47O1xuXG5sZXQgdHJ5X3dpdGhcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJcIilcbiAgICAgID9leHRyYWN0X2V4bjooZG9fZXh0cmFjdF9leG4gPSBmYWxzZSlcbiAgICAgID8ocnVuID0gYE5vdylcbiAgICAgID8ocmVzdCA9IGBSYWlzZSlcbiAgICAgIGZcbiAgPVxuICBsZXQgeyBPa19hbmRfZXhucy5vazsgZXhucyB9ID0gT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvIH5uYW1lIH5ydW4gZiBpblxuICBsZXQgaGFuZGxlX2V4biA9IG1ha2VfaGFuZGxlX2V4biByZXN0IGluXG4gIGxldCBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucyA9IHN0cmVhbV9pdGVyIGV4bnMgfmY6aGFuZGxlX2V4biBpblxuICAoKiBXZSBydW4gW3dpdGhpbicgfm1vbml0b3I6bWFpbl0gdG8gYXZvaWQgaG9sZGluZyBvbiB0byByZWZlcmVuY2VzIHRvIHRoZSBldmFsdWF0aW9uXG4gICAgIGNvbnRleHQgaW4gd2hpY2ggW3RyeV93aXRoXSB3YXMgY2FsbGVkLiAgVGhpcyBhdm9pZHMgYSBzcGFjZSBsZWFrIHdoZW4gYSBjaGFpbiBvZlxuICAgICBbdHJ5X3dpdGhdJ3MgYXJlIHJ1biBlYWNoIG5lc3RlZCB3aXRoaW4gdGhlIHByZXZpb3VzIG9uZS4gIFdpdGhvdXQgdGhlIFt3aXRoaW4nXSwgdGhlXG4gICAgIGVycm9yIGhhbmRsaW5nIGZvciB0aGUgaW5uZXJtb3N0IFt0cnlfd2l0aF0gd291bGQga2VlcCBhbGl2ZSB0aGUgZW50aXJlIGNoYWluLiAqKVxuICB3aXRoaW4nIH5tb25pdG9yOm1haW4gKGZ1biAoKSAtPlxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgb2tcbiAgICB0aGVuIChcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zO1xuICAgICAgcmV0dXJuIChPayAoRGVmZXJyZWQudmFsdWVfZXhuIG9rKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVzdWx0X2ZpbGxlciwgcmVzdWx0ID0gSXZhcl9maWxsZXIuY3JlYXRlICgpIGluXG4gICAgICB1cG9uIG9rIChmdW4gcmVzIC0+XG4gICAgICAgIGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgKE9rIHJlcylcbiAgICAgICAgICBleG5zXG4gICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHVwb24gKFN0cmVhbS5uZXh0IGV4bnMpIChmdW5jdGlvblxuICAgICAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBDb25zIChleG4sIGV4bnMpIC0+XG4gICAgICAgICAgbGV0IGV4biA9IGlmIGRvX2V4dHJhY3RfZXhuIHRoZW4gZXh0cmFjdF9leG4gZXhuIGVsc2UgZXhuIGluXG4gICAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgICAgICAgKEVycm9yIGV4bilcbiAgICAgICAgICAgIGV4bnNcbiAgICAgICAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCk7XG4gICAgICByZXN1bHQpKVxuOztcblxubGV0IHRyeV93aXRoX29yX2Vycm9yID9oZXJlID9pbmZvID8obmFtZSA9IFwidHJ5X3dpdGhfb3JfZXJyb3JcIikgP2V4dHJhY3RfZXhuID9yZXN0IGYgPVxuICB0cnlfd2l0aCBmID9oZXJlID9pbmZvIH5uYW1lID9leHRyYWN0X2V4biB+cnVuOmBOb3cgP3Jlc3QgPj58IE9yX2Vycm9yLm9mX2V4bl9yZXN1bHRcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgID8obmFtZSA9IFwidHJ5X3dpdGhfam9pbl9vcl9lcnJvclwiKVxuICAgICAgP2V4dHJhY3RfZXhuXG4gICAgICA/cmVzdFxuICAgICAgZlxuICA9XG4gIHRyeV93aXRoX29yX2Vycm9yIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuID9yZXN0ID4+fCBPcl9lcnJvci5qb2luXG47O1xuXG5sZXQgcHJvdGVjdCA/aGVyZSA/aW5mbyA/KG5hbWUgPSBcIk1vbml0b3IucHJvdGVjdFwiKSA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCBmIH5maW5hbGx5ID1cbiAgbGV0JWJpbmQgciA9IHRyeV93aXRoID9leHRyYWN0X2V4biA/aGVyZSA/aW5mbyA/cnVuID9yZXN0IH5uYW1lIGYgaW5cbiAgbGV0JW1hcCBmciA9XG4gICAgdHJ5X3dpdGhcbiAgICAgIH5leHRyYWN0X2V4bjpmYWxzZVxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICB+cnVuOmBTY2hlZHVsZSAoKiBjb25zaWRlciBbfnJ1bjpgTm93XSAqKVxuICAgICAgP3Jlc3RcbiAgICAgIH5uYW1lOlwiZmluYWxseVwiXG4gICAgICBmaW5hbGx5XG4gIGluXG4gIG1hdGNoIHIsIGZyIHdpdGhcbiAgfCBFcnJvciBleG4sIEVycm9yIGZpbmFsbHlfZXhuIC0+XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJBc3luYyBmaW5hbGx5XCIgKGV4biA6IGV4bikgKGZpbmFsbHlfZXhuIDogZXhuKV1cbiAgfCBFcnJvciBlLCBPayAoKSB8IE9rIF8sIEVycm9yIGUgLT4gcmFpc2UgZVxuICB8IE9rIHIsIE9rICgpIC0+IHJcbjs7XG5cbmxldCBoYW5kbGVfZXJyb3JzID9oZXJlID9pbmZvID9uYW1lIGYgaGFuZGxlciA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IGYgaW5cbiAgc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVyO1xuICBva1xuOztcblxubGV0IGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMuZXhuczsgXyB9ID1cbiAgICBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IChmdW4gKCkgLT5cbiAgICAgIGYgKCk7XG4gICAgICByZXR1cm4gKCkpXG4gIGluXG4gIGV4bnNcbjs7XG5cbmxldCBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbWF0Y2glbWFwIFN0cmVhbS5uZXh0IChjYXRjaF9zdHJlYW0gP2hlcmUgP2luZm8gP25hbWUgZikgd2l0aFxuICB8IENvbnMgKHgsIF8pIC0+IHhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb25pdG9yLmNhdGNoIGdvdCB1bmV4cGVjdGVkIGVtcHR5IHN0cmVhbVwiXVxuOztcblxubGV0IGNhdGNoX2Vycm9yID9oZXJlID9pbmZvID9uYW1lIGYgPSBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID4+fCBFcnJvci5vZl9leG5cblxubW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICBsZXQgcGFyZW50IHQgPVxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IE5vbmVcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gU29tZSBwYXJlbnRcbiAgICB8IERldGFjaGVkIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZGVwdGggdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgbiA9XG4gICAgICBtYXRjaCBwYXJlbnQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gblxuICAgICAgfCBTb21lIHQgLT4gbG9vcCB0IChuICsgMSlcbiAgICBpblxuICAgIGxvb3AgdCAwXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuaW5jbHVkZSBUYWlsLlN0cmVhbVxuXG5sZXQgZmlyc3RfZXhuIHQgPVxuICBtYXRjaCVtYXAgbmV4dCB0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTdHJlYW0uZmlyc3Qgb2YgZW1wdHkgc3RyZWFtXCJdXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuOztcblxubGV0IGZvbGQnIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIHVwb24gKG5leHQgdCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgICB8IENvbnMgKHYsIHQpIC0+IHVwb24gKGYgYiB2KSAobG9vcCB0KSlcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxuKCogW2ZvbGRdIGlzIGltcGxlbWVudGVkIHRvIGF2b2lkIHBlci1zdHJlYW0tZWxlbWVudCBkZWZlcnJlZCBvdmVyaGVhZCBpbiB0aGUgY2FzZSB3aGVuXG4gICBtdWx0aXBsZSBzdHJlYW0gZWxlbWVudHMgYXJlIGF2YWlsYWJsZSBzaW11bHRhbmVvdXNseS4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IHVwb24gKG5leHQgdCkgKGZ1biBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGIpXG4gICAgICB8IFNvbWUgbmV4dCAtPiBsb29wX25leHQgbmV4dCBiXG4gICAgYW5kIGxvb3BfbmV4dCBuZXh0IGIgPVxuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgQ29ucyAodiwgdCkgLT4gbG9vcCB0IChmIGIgdilcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxubGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG5sZXQgaXRlcicgdCB+ZiA9IGZvbGQnIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSB2IC0+IGYgdilcblxubGV0IGNsb3NlZCB0ID1cbiAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gIHwgU29tZSBOaWwgLT4gcmV0dXJuICgpXG4gIHwgXyAtPiBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoaXRlcicgdCB+ZjooZnVuIGEgLT5cbiAgICAgICBmIGE7XG4gICAgICAgcmV0dXJuICgpKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgKCogY29sbGVjdCBiZWZvcmUgY2FsbGluZyBbZl0sIGluIGNhc2UgW2ZdIGltbWVkaWF0ZWx5IGV4dGVuZHMuICopXG4gIGxldCB0ID0gVGFpbC5jb2xsZWN0IHRhaWwgaW5cbiAgZiB0YWlsO1xuICB0XG47O1xuXG5sZXQgdW5mb2xkIGIgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgdXBvbiAoZiBiKSAoZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgfCBTb21lIChhLCBiKSAtPlxuICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgYTtcbiAgICAgICAgICBsb29wIGIpXG4gICAgaW5cbiAgICBsb29wIGIpXG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpO1xuICAgIFRhaWwuY2xvc2VfZXhuIHRhaWwpXG47O1xuXG5sZXQgdG9fbGlzdCBzID0gZm9sZCcgcyB+aW5pdDpbXSB+ZjooZnVuIGIgYSAtPiByZXR1cm4gKGEgOjogYikpID4+fCBMaXN0LnJldlxubGV0IGNvcHlfdG9fdGFpbCB0IHRhaWwgPSBpdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKFRhaWwuZXh0ZW5kIHRhaWwgYSkpXG5cbmxldCBhcHBlbmQgdDEgdDIgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoY29weV90b190YWlsIHQxIHRhaWwpIChmdW4gKCkgLT5cbiAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0MiB0YWlsKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKSlcbjs7XG5cbmxldCBjb25jYXQgdCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChpdGVyJyB0IH5mOihmdW4gdCAtPiBjb3B5X3RvX3RhaWwgdCB0YWlsKSkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXInIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgZmFsc2UgLT4gKClcbiAgICAgICAgIHwgdHJ1ZSAtPiBUYWlsLmV4dGVuZCB0YWlsIHYpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXJfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBmaWx0ZXJfbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPlxuICAgICAgICAgbWF0Y2glbWFwIGYgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSB2IC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9tYXBfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyX21hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPiBmIHYgPj58IFRhaWwuZXh0ZW5kIHRhaWwpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgZmlyc3RfbiBzIG4gPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgbiA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICBlbHNlXG4gICAgICAgIHVwb24gKG5leHQgcykgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIG4pXG47O1xuXG5sZXQgYXZhaWxhYmxlX25vdyB0ID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgTmlsIC0+IExpc3QucmV2IGFjLCB0XG4gICAgfCBTb21lIChDb25zICh4LCB0KSkgLT4gbG9vcCB0ICh4IDo6IGFjKVxuICBpblxuICBsb29wIHQgW11cbjs7XG5cbmxldCBzcGxpdCA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSkgPyhmID0gZnVuIF8gLT4gYENvbnRpbnVlKSB0ID1cbiAgbGV0IHJlYXNvbl9mb3Jfc3RvcHBpbmcgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgcHJlZml4ID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IGZpbmlzaCB2ID1cbiAgICBUYWlsLmNsb3NlX2V4biBwcmVmaXg7XG4gICAgSXZhci5maWxsIHJlYXNvbl9mb3Jfc3RvcHBpbmcgdlxuICBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgY2hvb3NlIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcHBlZCk7IGNob2ljZSAobmV4dCB0KSAoZnVuIG8gLT4gYE5leHQgbykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3BwZWQgLT4gZmluaXNoIChgU3RvcHBlZCB0KVxuICAgIHwgYE5leHQgbyAtPlxuICAgICAgKG1hdGNoIG8gd2l0aFxuICAgICAgIHwgTmlsIC0+IGZpbmlzaCBgRW5kX29mX3N0cmVhbVxuICAgICAgIHwgQ29ucyAoYSwgdCkgLT5cbiAgICAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgICAgIHwgYENvbnRpbnVlIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCBwcmVmaXggYTtcbiAgICAgICAgICAgIGxvb3AgdFxuICAgICAgICAgIHwgYEZvdW5kIGIgLT4gZmluaXNoIChgRm91bmQgKGIsIHQpKSkpXG4gIGluXG4gIGxvb3AgdDtcbiAgVGFpbC5jb2xsZWN0IHByZWZpeCwgSXZhci5yZWFkIHJlYXNvbl9mb3Jfc3RvcHBpbmdcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgXywgZm91bmQgPSBzcGxpdCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBgRm91bmQgYSBlbHNlIGBDb250aW51ZSkgaW5cbiAgbWF0Y2glbWFwIGZvdW5kIHdpdGhcbiAgfCBgU3RvcHBlZCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IChgRW5kX29mX3N0cmVhbSB8IGBGb3VuZCBfKSBhcyB4IC0+IHhcbjs7XG5cbmxldCB1bmdyb3VwIHQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biBsIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KTtcbiAgICAgICAgIHJldHVybiAoKSkpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGludGVybGVhdmUgdHMgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgKCogVGhlIGludGVybGVhdmVkIHN0cmVhbSBzaG91bGQgYmUgY2xvc2VkIHdoZW4gdGhlIG91dGVyIHN0cmVhbSBhbmQgYWxsIG9mXG4gICAgICAgdGhlIGlubmVyIHN0cmVhbXMgaGF2ZSBiZWVuIGNsb3NlZC4gIEtlZXAgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIG9wZW5cbiAgICAgICBzdHJlYW1zIGFuZCBjbG9zZSB0aGUgaW50ZXJsZWF2ZWQgc3RyZWFtIHdoZW4gdGhhdCBjb3VudCBiZWNvbWVzXG4gICAgICAgemVyby4gKilcbiAgICBsZXQgbnVtX29wZW4gPSByZWYgMSBpblxuICAgICgqIDEgZm9yIHRoZSBvdXRlciBzdHJlYW0gdGhhdCBpcyBvcGVuICopXG4gICAgbGV0IGNsb3NlICgpID1cbiAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiAtIDE7XG4gICAgICBpZiAhbnVtX29wZW4gPSAwIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIGluXG4gICAgbGV0IG91dGVyX2Nsb3NlZCA9XG4gICAgICBpdGVyJyB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgbnVtX29wZW4gOj0gIW51bV9vcGVuICsgMTtcbiAgICAgICAgdXBvbiAoY29weV90b190YWlsIHQgdGFpbCkgY2xvc2U7XG4gICAgICAgIHJldHVybiAoKSlcbiAgICBpblxuICAgIHVwb24gb3V0ZXJfY2xvc2VkIGNsb3NlKVxuOztcblxubGV0IHRha2VfdW50aWwgdCBkID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIHVwb25cbiAgICAgICAgKGNob29zZSBbIGNob2ljZSBkIChmdW4gKCkgLT4gYFN0b3ApOyBjaG9pY2UgKG5leHQgdCkgKGZ1biB6IC0+IGBOZXh0IHopIF0pXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYFN0b3AgfCBgTmV4dCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgYE5leHQgKENvbnMgKHgsIHQpKSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCB4O1xuICAgICAgICAgICAgbG9vcCB0KVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseScgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cnVuOlxuICAgICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgICAgfnJlc3Q6YFJhaXNlXG4gICAgICAgICAgKGZ1biAoKSAtPiBmIHgpXG4gICAgICAgID4+PiBmdW4geiAtPlxuICAgICAgICBsb29wIHQ7XG4gICAgICAgIChtYXRjaCB6IHdpdGhcbiAgICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICAgIHwgRXJyb3IgZSAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGUpXG4gICAgaW5cbiAgICBsb29wIHQpXG47O1xuXG5sZXQgaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgICgqIFdlIGltbWVkaWF0ZWx5IGNhbGwgW2xvb3BdLCB0aHVzIG1ha2luZyB0aGUgaXRlciBkdXJhYmxlLiAgQW55IGV4Y2VwdGlvbnNcbiAgICAgICAgICAgcmFpc2VkIGJ5IFtmXSB3aWxsIG5vdCBwcmV2ZW50IHRoZSBsb29wIGZyb20gY29udGludWluZywgYW5kIHdpbGwgZ28gdG8gdGhlXG4gICAgICAgICAgIG1vbml0b3Igb2Ygd2hvbWV2ZXIgY2FsbGVkIFtpdGVyX2R1cmFibHlfcmVwb3J0X2VuZF0uICopXG4gICAgICAgIGxvb3AgdDtcbiAgICAgICAgZiB4XG4gICAgaW5cbiAgICBsb29wIHQpXG47O1xuXG5sZXQgaXRlcl9kdXJhYmx5IHQgfmYgPSBkb24ndF93YWl0X2ZvciAoaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQgdCB+ZilcblxubGV0IG9mX2Z1biBmID1cbiAgdW5mb2xkICgpIH5mOihmdW4gKCkgLT5cbiAgICBsZXQlbWFwIGEgPSBmICgpIGluXG4gICAgU29tZSAoYSwgKCkpKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3Blcm1pc3Npb24pIHQgPSAoJ2EsICdwZXJtaXNzaW9uKSBUeXBlcy5CdmFyLnRcblxudHlwZSAnYSByZXByID0gJ2EgVHlwZXMuQnZhci5yZXByID1cbiAgeyBtdXRhYmxlIGhhc19hbnlfd2FpdGVycyA6IGJvb2xcbiAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHJlcHIgWyVzZXhwX29mOiBfIHJlcHJdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCByZXByIGYgaW5cbiAgICBGaWVsZHNfb2ZfcmVwci5pdGVyXG4gICAgICB+aGFzX2FueV93YWl0ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBoYXNfYW55X3dhaXRlcnMgLT5cbiAgICAgICAgICAgaWYgSXZhci5oYXNfaGFuZGxlcnMgcmVwci5pdmFyIHRoZW4gYXNzZXJ0IGhhc19hbnlfd2FpdGVycykpXG4gICAgICB+aXZhcjpcbiAgICAgICAgKGNoZWNrIChmdW4gaXZhciAtPlxuICAgICAgICAgICBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSBpdmFyO1xuICAgICAgICAgICBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKSlcbjs7XG5cbmxldCBzZXhwX29mX3QgXyBfIHQgPVxuICBsZXQgeyBoYXNfYW55X3dhaXRlcnM7IGl2YXIgPSBfIH0gPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICAoKiBXZSBkb24ndCBzaG93IFtpdmFyXSBiZWNhdXNlIGl0J3MgYWx3YXlzIGVtcHR5LiAqKVxuICBbJW1lc3NhZ2UgKGhhc19hbnlfd2FpdGVycyA6IGJvb2wpXVxuOztcblxuaW5jbHVkZSBTY2hlZHVsZXIxLkJ2YXJcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIGlmIHJlcHIuaGFzX2FueV93YWl0ZXJzXG4gIHRoZW4gKFxuICAgIHJlcHIuaGFzX2FueV93YWl0ZXJzIDwtIGZhbHNlO1xuICAgIEl2YXIuZmlsbCByZXByLml2YXIgYTtcbiAgICByZXByLml2YXIgPC0gSXZhci5jcmVhdGUgKCkpXG47O1xuXG5sZXQgd2FpdCB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICByZXByLmhhc19hbnlfd2FpdGVycyA8LSB0cnVlO1xuICBJdmFyLnJlYWQgcmVwci5pdmFyXG47O1xuXG5sZXQgaGFzX2FueV93YWl0ZXJzIHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIHJlcHIuaGFzX2FueV93YWl0ZXJzXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcblxubGV0IGRlYnVnID0gRGVidWcuY2xvY2tcblxubW9kdWxlIEFsYXJtID0gVGltaW5nX3doZWVsLkFsYXJtXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5cbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IGNob29zZSA9IERlZmVycmVkLmNob29zZVxubGV0IGNob2ljZSA9IERlZmVycmVkLmNob2ljZVxubGV0ICggPj4+ICkgPSB1cG9uXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBpbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5UMVxuXG4gICgqIFdlIGRvbid0IGluY2x1ZGUgdGhlIFtpZF0gaW4gdGhlIHNleHAgYmVjYXVzZSB0aGUgdXNlciAocmlnaHRseSkgY2FuJ3QgY29udHJvbCBpdCwgc29cbiAgICAgaXQncyBoYXJkIHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYyBpbiB0ZXN0cy4gKilcbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgaWQgPSBfXG4gICAgICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBfXG4gICAgICAgIDsgYW1fYWR2YW5jaW5nID0gX1xuICAgICAgICA7IGV2ZW50c1xuICAgICAgICA7IGZpcmVkX2V2ZW50cyA9IF9cbiAgICAgICAgOyBoYW5kbGVfZmlyZWQgPSBfXG4gICAgICAgIDsgaXNfd2FsbF9jbG9ja1xuICAgICAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBfXG4gICAgICAgIDsgc2NoZWR1bGVyID0gX1xuICAgICAgICB9XG4gICAgPVxuICAgIGlmIGlzX3dhbGxfY2xvY2tcbiAgICB0aGVuIFslbWVzc2FnZSBcIjx3YWxsX2Nsb2NrPlwiXVxuICAgIGVsc2VcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICAoaXNfd2FsbF9jbG9jayA6IGJvb2wpXG4gICAgICAgICAgKCogV2UgZG9uJ3QgZGlzcGxheSB0aGUgW0pvYi50XXMgaW4gW2V2ZW50c10gYmVjYXVzZSB0aG9zZSBhcmVcbiAgICAgICAgICAgICBwb29sIHBvaW50ZXJzLCB3aGljaCBhcmUgdW5pbmZvcm1hdGl2ZS4gKilcbiAgICAgICAgICAoZXZlbnRzIDogXyBUaW1pbmdfd2hlZWwudCldXG4gIDs7XG5lbmRcblxub3BlbiBUMVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWFkX3dyaXRlIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuZW5kXG5cbnR5cGUgdCA9IHJlYWQgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5sZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmxldCByZWFkX29ubHkgKHQgOiBbPiByZWFkIF0gVDEudCkgPSAodCA6PiB0KVxubGV0IGNyZWF0ZSA9IFNjaGVkdWxlci5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyLndhbGxfY2xvY2tcbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC5ldmVudHNcbmxldCBpc193YWxsX2Nsb2NrIHQgPSB0LmlzX3dhbGxfY2xvY2tcbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCB0LmV2ZW50c1xubGV0IHRpbWluZ193aGVlbF9ub3cgdCA9IFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHNcbmxldCBpZCB0ID0gdC5pZFxuXG5tb2R1bGUgSWQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuSWRcblxubGV0IG5vdyB0ID1cbiAgaWYgdC5pc193YWxsX2Nsb2NrXG4gIHRoZW5cbiAgICAoKiBGb3IgdGhlIHdhbGwtY2xvY2sgdGltZS1zb3VyY2UsIHdlIHVzZSBbVGltZV9ucy5ub3cgKCldIHJhdGhlciB0aGFuXG4gICAgICAgW1RpbWluZ193aGVlbC5ub3cgdC5ldmVudHNdLiAgVGhlIGxhdHRlciBpcyBvbmx5IHVwZGF0ZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2hcbiAgICAgICBjeWNsZS4gIFRoZXJlIGNhbiBiZSBzdWJzdGFudGlhbCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byB3aGVuIHBlb3BsZSBkbyBsb25nXG4gICAgICAgcnVubmluZyBjb21wdXRhdGlvbnMgb3IgbWl4IGJsb2NraW5nIGNvZGUgd2l0aCBhc3luYy4gIEFuZCBodW1hbnMgZXhwZWN0IHRoYXRcbiAgICAgICB3YWxsLWNsb2NrIHRpbWUgaXMgYmFzZWQgb24gW1RpbWUubm93XSwgbm90IHNvbWUgYXJ0aWZhY3Qgb2YgYXN5bmNcbiAgICAgICBpbXBsZW1lbnRhdGlvbi4gKilcbiAgICBUaW1lX25zLm5vdyAoKVxuICBlbHNlIHRpbWluZ193aGVlbF9ub3cgdFxuOztcblxuKCogV2UgcHJlYWxsb2NhdGUgW3NlbmRfZXhuXSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IG9uIGVhY2ggY2FsbCB0byBbYWR2YW5jZV9jbG9ja10uICopXG5sZXQgc2VuZF9leG4gPSBTb21lIE1vbml0b3Iuc2VuZF9leG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXyA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5X2J5IHQgYnkgPSBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxubGV0IGFkdmFuY2UgPSBhZHZhbmNlX2RpcmVjdGx5XG5sZXQgYWR2YW5jZV9ieSA9IGFkdmFuY2VfZGlyZWN0bHlfYnlcbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4blxubGV0IHlpZWxkIHQgPSBCdmFyLndhaXQgKFNjaGVkdWxlci55aWVsZCB0LnNjaGVkdWxlcilcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvciB0IH50b18gPVxuICBsZXQgcnVuX3F1ZXVlZF9hbGFybXMgKCkgPVxuICAgICgqIEV2ZXJ5IHRpbWUgd2Ugd2FudCB0byBydW4gcXVldWVkIGFsYXJtcyB3ZSBuZWVkIHRvIHlpZWxkIGNvbnRyb2wgYmFjayB0byB0aGVcbiAgICAgICBbQXN5bmMuU2NoZWR1bGVyXSBhbmQgW3dhaXRfZm9yXSBhbnkgbG9naWMgdGhhdCBpcyBzdXBwb3NlZCB0byBmaW5pc2ggYXQgdGhpcyB0aW1lXG4gICAgICAgYmVmb3JlIGFkdmFuY2luZy4gIElmIG5vIFt3YWl0X2Zvcl0gbG9naWMgaXMgc3BlY2lmaWVkIHdlIGNhbiBzaW1wbHkgeWllbGQgY29udHJvbFxuICAgICAgIGJ5IGludm9raW5nIFt5aWVsZCB0XSwgd2hpY2ggZW5xdWV1ZXMgYW5vdGhlciBqb2IgYXQgdGhlIGVuZCBvZiB0aGUgc2NoZWR1bGVyIGpvYlxuICAgICAgIHF1ZXVlIHNvIGFsYXJtIGpvYnMgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuIGJlZm9yZSB3ZSBhZHZhbmNlLiAqKVxuICAgIG1hdGNoIHdhaXRfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4geWllbGQgdFxuICAgIHwgU29tZSBmIC0+IGYgKClcbiAgaW5cbiAgbGV0IGZpbmlzaCAoKSA9XG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICgqIHNvIHRoYXQgYWxhcm1zIHNjaGVkdWxlZCBhdCBvciBiZWZvcmUgW3RvX10gZmlyZSAqKVxuICAgIHJ1bl9xdWV1ZWRfYWxhcm1zICgpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIG1hdGNoIFRpbWluZ193aGVlbC5taW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdC5ldmVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBmaW5pc2ggKClcbiAgICB8IFNvbWUgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIC0+XG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdG9fXG4gICAgICB0aGVuIGZpbmlzaCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbDtcbiAgICAgICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICAgICBsZXQgcXVldWVkX2FsYXJtc19yYW4gPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHF1ZXVlZF9hbGFybXNfcmFuXG4gICAgICAgIHRoZW4gd2Fsa19hbGFybXMgKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0JWJpbmQgKCkgPSBxdWV1ZWRfYWxhcm1zX3JhbiBpblxuICAgICAgICAgIHdhbGtfYWxhcm1zICgpKSlcbiAgaW5cbiAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgKCogc28gdGhhdCBhbGFybXMgc2NoZWR1bGVkIGF0IG9yIGJlZm9yZSBbdG9fXSBmaXJlICopXG4gICAgcnVuX3F1ZXVlZF9hbGFybXMgKClcbiAgaW5cbiAgbGV0IHJlYyB3YWxrX2FsYXJtcyAoKSA9XG4gICAgbWF0Y2ggbmV4dF9hbGFybV9maXJlc19hdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmluaXNoICgpXG4gICAgfCBTb21lIG5leHRfYWxhcm1fZmlyZXNfYXQgLT5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGZpbmlzaCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyk7XG4gICAgICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAgICAgbGV0IHF1ZXVlZF9hbGFybXNfcmFuID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBxdWV1ZWRfYWxhcm1zX3JhblxuICAgICAgICB0aGVuIHdhbGtfYWxhcm1zICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCViaW5kICgpID0gcXVldWVkX2FsYXJtc19yYW4gaW5cbiAgICAgICAgICB3YWxrX2FsYXJtcyAoKSkpXG4gIGluXG4gIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgKCogVGhpcyBmaXJzdCBbcnVuX3F1ZXVlZF9hbGFybXNdIGNhbGwgYWxsb3dzIFtDbG9ja19ucy5ldmVyeV0gdGhlIG9wcG9ydHVuaXR5IHRvIHJ1blxuICAgICBpdHMgY29udGludWF0aW9uIGRlZmVycmVkcyBzbyB0aGF0IHRoZXkgY2FuIHJlc2NoZWR1bGUgYWxhcm1zLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHlcbiAgICAgdXNlZnVsIGluIG91ciBcImFkdmFuY2UgaGl0cyBpbnRlcm1lZGlhdGUgYWxhcm1zXCIgdW5pdCB0ZXN0IGJlbG93LCBidXQgbGlrZWx5IHVzZWZ1bFxuICAgICBpbiBvdGhlciBjYXNlcyB3aGVyZSBbZXZlcnldIGlzIHN5bmNocm9ub3VzbHkgZm9sbG93ZWQgYnkgW2FkdmFuY2VdLiAqKVxuICBsZXQlYmluZCAoKSA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gIHdhbGtfYWxhcm1zICgpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXNfYnkgP3dhaXRfZm9yIHQgYnkgPVxuICBhZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3IgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG47O1xuXG5sZXQgc3Bhbl90b190aW1lIHQgc3BhbiA9IFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuXG5cbmxldCBzY2hlZHVsZV9qb2IgdCB+YXQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IGFsYXJtID1cbiAgICBUaW1pbmdfd2hlZWwuYWRkXG4gICAgICB0LmV2ZW50c1xuICAgICAgfmF0XG4gICAgICAoSm9iX29yX2V2ZW50Lm9mX2pvYiAoU2NoZWR1bGVyLmNyZWF0ZV9qb2IgdC5zY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhKSlcbiAgaW5cbiAgKG1hdGNoIHQuc2NoZWR1bGVyLmV2ZW50X2FkZGVkX2hvb2sgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZiAtPiBmIGF0KTtcbiAgYWxhcm1cbjs7XG5cbmxldCBydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGYgYSA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGluXG4gIGlmIFRpbWVfbnMuKCA+ICkgdGltZSAoVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50cylcbiAgdGhlbiBzY2hlZHVsZV9qb2IgdCB+YXQ6dGltZSBleGVjdXRpb25fY29udGV4dCBmIGFcbiAgZWxzZSAoXG4gICAgU2NoZWR1bGVyLmVucXVldWUgdC5zY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgIEFsYXJtLm51bGwgKCkpXG47O1xuXG5sZXQgcnVuX2F0IHQgdGltZSBmIGEgPSBpZ25vcmUgKHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZiBhIDogXyBBbGFybS50KVxubGV0IHJ1bl9hZnRlciB0IHNwYW4gZiBhID0gcnVuX2F0IHQgKHNwYW5fdG9fdGltZSB0IHNwYW4pIGYgYVxuXG5sZXQgYXQgPVxuICBsZXQgZmlsbCByZXN1bHQgPSBJdmFyLmZpbGwgcmVzdWx0ICgpIGluXG4gIGZ1biB0IHRpbWUgLT5cbiAgICBpZiBUaW1lX25zLiggPD0gKSB0aW1lIChUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzKVxuICAgIHRoZW4gcmV0dXJuICgpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGlnbm9yZSAocnVuX2F0X2ludGVybmFsIHQgdGltZSBmaWxsIHJlc3VsdCA6IF8gQWxhcm0udCk7XG4gICAgICBJdmFyLnJlYWQgcmVzdWx0KVxuOztcblxubGV0IGFmdGVyIHQgc3BhbiA9IGF0IHQgKHNwYW5fdG9fdGltZSB0IHNwYW4pXG5cbmxldCByZW1vdmVfYWxhcm0gdCBhbGFybSA6IHVuaXQgPVxuICBsZXQgam9iX29yX2V2ZW50ID0gQWxhcm0udmFsdWUgdC5ldmVudHMgYWxhcm0gaW5cbiAgKGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICAgfCBKb2IsIGpvYiAtPiBTY2hlZHVsZXIuZnJlZV9qb2IgdC5zY2hlZHVsZXIgam9iXG4gICB8IEV2ZW50LCBfIC0+XG4gICAgICgqIFRoaXMgaXMgdW5yZWFjaGFibGUgYmVjYXVzZSBbYWxhcm1dIG9ubHkgZXZlciBjb21lcyBmcm9tIFtFdmVudC5hbGFybV0gd2hpY2ggb25seVxuICAgICAgICBldmVyIGdldHMgcG9wdWxhdGVkIGJ5IGEgY2FsbCB0byBbc2NoZWR1bGVfam9iXS4gKilcbiAgICAgYXNzZXJ0IGZhbHNlKTtcbiAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBhbGFybVxuOztcblxubGV0IHJlbW92ZV9hbGFybV9pZl9zY2hlZHVsZWQgdCBhbGFybSA9XG4gIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgYWxhcm0gdGhlbiByZW1vdmVfYWxhcm0gdCBhbGFybVxuOztcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIG1vZHVsZSBGaXJlZCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgIHsgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnRcbiAgICA7IG11dGFibGUgZmlyZSA6IHVuaXQgLT4gdW5pdFxuICAgIDsgKCogQXMgbG9uZyBhcyBbSXZhci5pc19lbXB0eSBmaXJlZF0sIHdlIGhhdmUgbm90IHlldCBjb21taXR0ZWQgdG8gd2hldGhlciB0aGUgZXZlbnRcbiAgICAgICAgIHdpbGwgaGFwcGVuIG9yIGJlIGFib3J0ZWQuICBXaGVuIFtJdmFyLmlzX2VtcHR5IGZpcmVkXSwgdGhlIGFsYXJtIG1heSBvciBtYXkgbm90XG4gICAgICAgICBiZSBpbiB0aGUgdGltaW5nIHdoZWVsIC0tIGlmIGl0IGlzbid0LCB0aGVuIHRoZXJlJ3MgYSBqb2IgaW4gQXN5bmMncyBqb2IgcXVldWVcbiAgICAgICAgIHRoYXQgd2lsbCBmaXJlIHRoZSBldmVudCwgdW5sZXNzIGl0IGlzIGFib3J0ZWQgYmVmb3JlIHRoYXQgam9iIGNhbiBydW4uICopXG4gICAgICBmaXJlZCA6ICgnYSwgJ2gpIEZpcmVkLnQgSXZhci50XG4gICAgOyAoKiBbbnVtX2ZpcmVzX3RvX3NraXBdIGlzIHVzZWQgdG8gcmVzY2hlZHVsZSBldmVudHMgdGhhdCBoYXZlIGZpcmVkIGFuZCBlbnRlcmVkIHRoZVxuICAgICAgICAgQXN5bmMgam9iIHF1ZXVlLCBidXQgaGF2ZSBub3QgeWV0IHJ1bi4gIFRob3NlIGpvYnMgb25seSBydW4gaWYgW251bV9maXJlc190b19za2lwXG4gICAgICAgICA9IDBdLCBhbmQgb3RoZXJ3aXNlIGp1c3QgZGVjcmVtZW50IGl0LiAgU28sIHRvIHJlc2NoZWR1bGUgYW4gZXZlbnQgaW4gc3VjaCBhXG4gICAgICAgICBzdGF0ZSwgd2UgaW5jcmVtZW50IFtudW1fZmlyZXNfdG9fc2tpcF0gYW5kIGFkZCBhIG5ldyBhbGFybSB0byB0aGUgdGltaW5nXG4gICAgICAgICB3aGVlbC4gKilcbiAgICAgIG11dGFibGUgbnVtX2ZpcmVzX3RvX3NraXAgOiBpbnRcbiAgICA7ICgqIFtzY2hlZHVsZWRfYXRdIGlzIHRoZSB0aW1lIGF0IHdoaWNoIFt0XSBoYXMgbW9zdCByZWNlbnRseSBiZWVuIHNjaGVkdWxlZCB0byBmaXJlLlxuICAgICAgICAgV2hpbGUgW3QuYWxhcm1dIGlzIHN0aWxsIGluIHRoZSB0aW1pbmcgd2hlZWwsIHRoaXMgaXMgdGhlIHNhbWUgYXMgW0FsYXJtLmF0XG4gICAgICAgICB0LmFsYXJtXS4gKilcbiAgICAgIG11dGFibGUgc2NoZWR1bGVkX2F0IDogVGltZV9ucy50XG4gICAgOyB0aW1lX3NvdXJjZSA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBmaXJlZCB0ID0gSXZhci5yZWFkIHQuZmlyZWRcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9oIHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YWxhcm06XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5maXJlZFxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChub3QgKFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIGFsYXJtKSlcbiAgICAgICAgICAgICBlbHNlIGlmIFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIGFsYXJtXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKEpvYl9vcl9ldmVudC5pc19qb2IgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpKSlcbiAgICAgICAgfmZpcmU6aWdub3JlXG4gICAgICAgIH5maXJlZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAoZmlyZWQgOiBfIEZpcmVkLnQgSXZhci50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCBmaXJlZCkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBpbnZhcmlhbnRfYSBhXG4gICAgICAgICAgICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBpbnZhcmlhbnRfaCBoKSlcbiAgICAgICAgfm51bV9maXJlc190b19za2lwOlxuICAgICAgICAgIChjaGVjayAoZnVuIG51bV9maXJlc190b19za2lwIC0+IGFzc2VydCAobnVtX2ZpcmVzX3RvX3NraXAgPj0gMCkpKVxuICAgICAgICB+c2NoZWR1bGVkX2F0OlxuICAgICAgICAgIChjaGVjayAoZnVuIHNjaGVkdWxlZF9hdCAtPlxuICAgICAgICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm1cbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgICAgIHNjaGVkdWxlZF9hdFxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgdC5hbGFybSkpKVxuICAgICAgICB+dGltZV9zb3VyY2U6aWdub3JlKVxuICA7O1xuXG4gIG1vZHVsZSBTdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lX25zLnRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgc3RhdHVzIHQgOiBfIFN0YXR1cy50ID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5maXJlZCkgd2l0aFxuICAgIHwgTm9uZSAtPiBTY2hlZHVsZWRfYXQgdC5zY2hlZHVsZWRfYXRcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gQWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBIYXBwZW5lZCBoXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQuYWJvcnRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKGZpcmVkIHQpIHdpdGhcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gUHJldmlvdXNseV9hYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IFByZXZpb3VzbHlfaGFwcGVuZWQgaFxuICAgIHwgTm9uZSAtPlxuICAgICAgSXZhci5maWxsIHQuZmlyZWQgKEFib3J0ZWQgYSk7XG4gICAgICByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQudGltZV9zb3VyY2UgdC5hbGFybTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IGFib3J0X2V4biB0IGEgPVxuICAgIG1hdGNoIGFib3J0IHQgYSB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBfIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkNsb2NrLkV2ZW50LmFib3J0X2V4biBmYWlsZWQgdG8gYWJvcnQgZXZlbnQgdGhhdCBwcmV2aW91c2x5IGhhcHBlbmVkXCJdXG4gICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBhYm9ydGVkXCJdXG4gIDs7XG5cbiAgbGV0IGFib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhIDogXyBBYm9ydF9yZXN1bHQudClcbiAgbGV0IHNjaGVkdWxlIHQgPSB0LmFsYXJtIDwtIHJ1bl9hdF9pbnRlcm5hbCB0LnRpbWVfc291cmNlIHQuc2NoZWR1bGVkX2F0IHQuZmlyZSAoKVxuXG4gIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBhdCA6IF8gUmVzY2hlZHVsZV9yZXN1bHQudCA9XG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5yZXNjaGVkdWxlX2F0XCIgKHQsIGF0KSBbJXNleHBfb2Y6IChfLCBfKSB0ICogVGltZV9ucy50XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGlzX2luX3RpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm0gaW5cbiAgICAgIGxldCBhbV90cnlpbmdfdG9fcmVzY2hlZHVsZV9pbl90aGVfZnV0dXJlID1cbiAgICAgICAgVGltZV9ucy4oID4gKSBhdCAoVGltaW5nX3doZWVsLm5vdyBldmVudHMpXG4gICAgICBpblxuICAgICAgdC5zY2hlZHVsZWRfYXQgPC0gYXQ7XG4gICAgICAobWF0Y2ggYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSwgaXNfaW5fdGltaW5nX3doZWVsIHdpdGhcbiAgICAgICB8IGZhbHNlLCBmYWxzZSAtPiAoKVxuICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgIHQudGltZV9zb3VyY2UuaGFuZGxlX2ZpcmVkIHQuYWxhcm07XG4gICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwICsgMTtcbiAgICAgICAgIHNjaGVkdWxlIHRcbiAgICAgICB8IHRydWUsIHRydWUgLT4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgZXZlbnRzIHQuYWxhcm0gfmF0KTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IChzcGFuX3RvX3RpbWUgdC50aW1lX3NvdXJjZSBzcGFuKVxuXG4gIGxldCBydW5fYXQgdGltZV9zb3VyY2Ugc2NoZWR1bGVkX2F0IGYgeiA9XG4gICAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5ydW5fYXRcIiBzY2hlZHVsZWRfYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdO1xuICAgIGxldCB0ID1cbiAgICAgIHsgYWxhcm0gPSBBbGFybS5udWxsICgpXG4gICAgICA7IGZpcmUgPSBpZ25vcmUgKCogc2V0IGJlbG93ICopXG4gICAgICA7IGZpcmVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgIDsgbnVtX2ZpcmVzX3RvX3NraXAgPSAwXG4gICAgICA7IHNjaGVkdWxlZF9hdFxuICAgICAgOyB0aW1lX3NvdXJjZSA9IHJlYWRfb25seSB0aW1lX3NvdXJjZVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IGZpcmUgKCkgPVxuICAgICAgKCogW2ZpcmVdIHJ1bnMgaW4gYW4gQXN5bmMgam9iLiAgVGhlIGV2ZW50IG1heSBoYXZlIGJlZW4gYWJvcnRlZCBhZnRlciB0aGUgam9iXG4gICAgICAgICB3YXMgZW5xdWV1ZWQsIHNvIFtmaXJlXSBtdXN0IGNoZWNrIFtmaXJlZF0uICopXG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWRcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgdC5udW1fZmlyZXNfdG9fc2tpcCA+IDBcbiAgICAgICAgdGhlbiB0Lm51bV9maXJlc190b19za2lwIDwtIHQubnVtX2ZpcmVzX3RvX3NraXAgLSAxXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZXN1bHQgPSBmIHogaW5cbiAgICAgICAgICAoKiBbZiB6XSBtYXkgaGF2ZSBhYm9ydGVkIHRoZSBldmVudCwgc28gd2UgbXVzdCBjaGVjayBbZmlyZWRdIGFnYWluLiAqKVxuICAgICAgICAgIGlmIEl2YXIuaXNfZW1wdHkgdC5maXJlZCB0aGVuIEl2YXIuZmlsbCB0LmZpcmVkIChIYXBwZW5lZCByZXN1bHQpKVxuICAgIGluXG4gICAgdC5maXJlIDwtIGZpcmU7XG4gICAgc2NoZWR1bGUgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGF0IHRpbWVfc291cmNlIHRpbWUgPSBydW5fYXQgdGltZV9zb3VyY2UgdGltZSBpZ25vcmUgKClcblxuICBsZXQgcnVuX2FmdGVyIHRpbWVfc291cmNlIHNwYW4gZiBhID1cbiAgICBydW5fYXQgdGltZV9zb3VyY2UgKHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuKSBmIGFcbiAgOztcblxuICBsZXQgYWZ0ZXIgdGltZV9zb3VyY2Ugc3BhbiA9IGF0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbilcbmVuZFxuXG5sZXQgYXRfdGltZXMgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpIHQgbmV4dF90aW1lID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGNob29zZVxuICAgICAgWyBjaG9pY2Ugc3RvcCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChhdCB0IChuZXh0X3RpbWUgKCkpKSAoZnVuICgpIC0+IGBUaWNrKSBdXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBgU3RvcCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgfCBgVGljayAtPlxuICAgICAgVGFpbC5leHRlbmQgdGFpbCAoKTtcbiAgICAgIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCB0IGNvbXB1dGVfc3BhbiA9XG4gIGF0X3RpbWVzIHQgP3N0b3AgKGZ1biAoKSAtPiBUaW1lX25zLmFmdGVyIChub3cgdCkgKGNvbXB1dGVfc3BhbiAoKSkpXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCB0IGludGVydmFsID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBub3cgdFxuICBpblxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT5cbiAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2U6c3RhcnQgfmFmdGVyOihub3cgdCkgfmludGVydmFsICgpKVxuOztcblxubW9kdWxlIENvbnRpbnVlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbW1lZGlhdGVseVxuICAgIHwgQWZ0ZXIgb2YgVGltZV9ucy5TcGFuLnRcbiAgICB8IE5leHRfbXVsdGlwbGUgb2YgVGltZV9ucy50ICogVGltZV9ucy5TcGFuLnRcblxuICBsZXQgaW1tZWRpYXRlbHkgPSBJbW1lZGlhdGVseVxuXG4gIGxldCBhdCB0IHRpbWVfc291cmNlID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltbWVkaWF0ZWx5IC0+IFRpbWluZ193aGVlbC5ub3cgdGltZV9zb3VyY2UuZXZlbnRzXG4gICAgfCBBZnRlciBzcGFuIC0+IHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuXG4gICAgfCBOZXh0X211bHRpcGxlIChiYXNlLCBpbnRlcnZhbCkgLT5cbiAgICAgIFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZSB+YWZ0ZXI6KG5vdyB0aW1lX3NvdXJjZSkgfmludGVydmFsICgpXG4gIDs7XG5lbmRcblxubGV0IHJ1bl9yZXBlYXRlZGx5XG4gICAgICA/KHN0YXJ0ID0gcmV0dXJuICgpKVxuICAgICAgP3N0b3BcbiAgICAgID8oY29udGludWVfb25fZXJyb3IgPSB0cnVlKVxuICAgICAgPyhmaW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpKVxuICAgICAgdFxuICAgICAgfmZcbiAgICAgIH5jb250aW51ZVxuICA9XG4gIHN0YXJ0XG4gID4+PiBmdW4gKCkgLT5cbiAgbGV0IGFsYXJtID0gcmVmIChBbGFybS5udWxsICgpKSBpblxuICBsZXQgc3RvcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBOb25lIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBTb21lIHN0b3AgLT5cbiAgICAgIHVwb24gc3RvcCAoZnVuICgpIC0+XG4gICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgIWFsYXJtXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9hbGFybSB0ICFhbGFybTtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKCkpKTtcbiAgICAgIHN0b3BcbiAgaW5cbiAgKCogW3J1bl9mXSwgW2NvbnRpbnVlX2ZdLCBhbmQgW2NvbnRpbnVlX3RyeV93aXRoXSBhcmUgZGVmaW5lZCBzbyB0aGF0IHdlIGFsbG9jYXRlIHRoZWlyXG4gICAgIGNsb3N1cmVzIG9uY2UsIG5vdCBvbmNlIHBlciBpdGVyYXRpb24uICopXG4gIGxldCByZWMgcnVuX2YgKCkgPVxuICAgICgqIEJlZm9yZSBjYWxsaW5nIFtmXSwgd2Ugc3luY2hyb25vdXNseSBjaGVjayB3aGV0aGVyIFtzdG9wXSBpcyBkZXRlcm1pbmVkLiAqKVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBpZiBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gTW9uaXRvci50cnlfd2l0aCBmIH5ydW46YE5vdyB+cmVzdDpgUmFpc2UgPj4+IGNvbnRpbnVlX3RyeV93aXRoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZCA9IGYgKCkgaW5cbiAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGNvbnRpbnVlX2YgKCkgZWxzZSBkID4+PiBjb250aW51ZV9mKVxuICBhbmQgY29udGludWVfZiAoKSA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKClcbiAgICBlbHNlIGFsYXJtIDo9IHJ1bl9hdF9pbnRlcm5hbCB0IChDb250aW51ZS5hdCBjb250aW51ZSB0KSBydW5fZiAoKVxuICBhbmQgY29udGludWVfdHJ5X3dpdGggb3JfZXJyb3IgPVxuICAgIChtYXRjaCBvcl9lcnJvciB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBlcnJvciAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGVycm9yKTtcbiAgICBjb250aW51ZV9mICgpXG4gIGluXG4gIHJ1bl9mICgpXG47O1xuXG5sZXQgZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIHQgc3BhbiBmID1cbiAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS5ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgc3BhblwiIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgcnVuX3JlcGVhdGVkbHkgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB+ZiB+Y29udGludWU6KEFmdGVyIHNwYW4pXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IHNwYW4gZiA9XG4gIGV2ZXJ5JyB0ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkOk5vbmUgc3BhbiAoZnVuICgpIC0+XG4gICAgZiAoKTtcbiAgICByZXR1cm4gKCkpXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBsZXQgbm93ID0gbm93IHQgaW5cbiAgbGV0IGJhc2UsIHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBOb25lIC0+IG5vdywgTm9uZVxuICAgIHwgU29tZSBzdGFydCAtPlxuICAgICAgKCBzdGFydFxuICAgICAgLCBTb21lXG4gICAgICAgICAgKGF0XG4gICAgICAgICAgICAgdFxuICAgICAgICAgICAgIChUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgIH5iYXNlOnN0YXJ0XG4gICAgICAgICAgICAgICAgfmFmdGVyOm5vd1xuICAgICAgICAgICAgICAgIH5jYW5fZXF1YWxfYWZ0ZXI6dHJ1ZVxuICAgICAgICAgICAgICAgIH5pbnRlcnZhbCkpIClcbiAgaW5cbiAgcnVuX3JlcGVhdGVkbHlcbiAgICB0XG4gICAgP3N0YXJ0XG4gICAgP3N0b3BcbiAgICA/Y29udGludWVfb25fZXJyb3JcbiAgICB+ZlxuICAgIH5jb250aW51ZTooTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHdpdGhfdGltZW91dCB0IHNwYW4gZCA9XG4gIGxldCB0aW1lb3V0ID0gRXZlbnQuYWZ0ZXIgdCBzcGFuIGluXG4gIGNob29zZVxuICAgICgqIFRoZSBjb2RlIGJlbG93IGRvZXMgZXhoYXVzdGl2ZSBjYXNlIGFuYWx5c2lzIGluIGJvdGggW2Nob2ljZV1zLiAgQmVjYXVzZSBbdGltZW91dF1cbiAgICAgICBkb2VzIG5vdCBlc2NhcGUgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIGNlcnRhaW4gY2FzZXMgc2hvdWxkIGJlIGltcG9zc2libGUsIGFuZFxuICAgICAgIGFyZSBtYXJrZWQgYXMgc3VjaCB3aXRoIGV4Y2VwdGlvbnMuICBXZSBkbyBub3QgZXhwZWN0IHRob3NlIGV4Y2VwdGlvbnMgdG8gb2NjdXIsXG4gICAgICAgYnV0IGlmIHRoZXkgZG8sIGl0IGxpa2VseSBpbmRpY2F0ZXMgYSBidWcgaW4gW2Nob29zZV0gcmF0aGVyIHRoYW5cbiAgICAgICBbd2l0aF90aW1lb3V0XS4gKilcbiAgICBbIGNob2ljZSBkIChmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggRXZlbnQuYWJvcnQgdGltZW91dCAoKSB3aXRoXG4gICAgICAgICAoKiBbUHJldmlvdXNseV9oYXBwZW5lZF0gY2FuIG9jY3VyIGlmIGJvdGggW2RdIGFuZCBbd2FpdF0gYmVjb21lIGRldGVybWluZWQgYXRcbiAgICAgICAgICAgIHRoZSBzYW1lIHRpbWUsIGUuZy4gW3dpdGhfdGltZW91dCAoc2VjIDAuKSAocmV0dXJuICgpKV0uICopXG4gICAgICAgICB8IE9rIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiAoKVxuICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT5cbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBzaG91bGQgb25seSBhYm9ydCBvbmNlXCJdKTtcbiAgICAgICAgYFJlc3VsdCB2KVxuICAgIDsgY2hvaWNlIChFdmVudC5maXJlZCB0aW1lb3V0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBgVGltZW91dFxuICAgICAgICB8IEFib3J0ZWQgKCkgLT5cbiAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBib3RoIGNvbXBsZXRlZCBhbmQgdGltZWQgb3V0XCJdKVxuICAgIF1cbjs7XG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICBsZXQlbWFwIHJlc3VsdCA9IGYgKCkgaW5cbiAgbGV0IGR1cmF0aW9uID0gVGltZV9ucy5kaWZmIChub3cgdCkgc3RhcnQgaW5cbiAgcmVzdWx0LCBkdXJhdGlvblxuOztcblxubGV0IG9mX3N5bmNocm9ub3VzIHQgPSB0XG5sZXQgdG9fc3luY2hyb25vdXMgdCA9IHRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSBfIHQgPVxuICB8IFN0YWNrIDogJ2EgU3RhY2sudCAtPiAnYSB0XG4gIHwgQ291bnRlciA6IHsgbXV0YWJsZSBsZW5ndGggOiBpbnQgfSAtPiB1bml0IHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBvZl9saXN0IGxpc3QgPSBTdGFjayAoU3RhY2sub2ZfbGlzdCBsaXN0KVxuXG5sZXQgY3JlYXRlX2NvdW50ZXIgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIltTdGFja19vcl9jb3VudGVyLmNyZWF0ZV9jb3VudGVyXSBnb3QgbmVnYXRpdmUgbGVuZ3RoXCIgKGxlbmd0aCA6IGludCldO1xuICBDb3VudGVyIHsgbGVuZ3RoIH1cbjs7XG5cbmxldCBsZW5ndGggKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5sZW5ndGggc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aFxuOztcblxubGV0IGNsZWFyICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suY2xlYXIgc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSAwXG47O1xuXG5sZXQgcHVzaCAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucHVzaCBzIGFcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGggPC0gci5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX2V4biAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLnBvcF9leG4gc1xuICB8IENvdW50ZXIgciAtPlxuICAgIGlmIHIubGVuZ3RoID0gMCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIucG9wX2V4bl0gb2YgZW1wdHkgc3RhY2tcIl07XG4gICAgci5sZW5ndGggPC0gci5sZW5ndGggLSAxXG47O1xuXG5sZXQgaXRlciAodHlwZSBhKSAodCA6IGEgdCkgfihmIDogYSAtPiB1bml0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suaXRlciBzIH5mXG4gIHwgQ291bnRlciByIC0+XG4gICAgZm9yIF8gPSAxIHRvIHIubGVuZ3RoIGRvXG4gICAgICBmICgpXG4gICAgZG9uZVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxudHlwZSAnYSBvdXRjb21lID1cbiAgWyBgT2sgb2YgJ2FcbiAgfCBgQWJvcnRlZFxuICB8IGBSYWlzZWQgb2YgZXhuXG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBJbnRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNyZWF0ZSA6ICgnYSAtPiAnYiBEZWZlcnJlZC50KSAtPiAnYSB0ICogJ2Igb3V0Y29tZSBEZWZlcnJlZC50XG5cbiAgKCogRXZlcnkgaW50ZXJuYWwgam9iIHdpbGwgZXZlbnR1YWxseSBiZSBlaXRoZXIgW3J1bl0gb3IgW2Fib3J0XWVkLCBidXQgbm90IGJvdGguICopXG5cbiAgdmFsIHJ1biA6ICdhIHQgLT4gJ2EgLT4gWyBgT2sgfCBgUmFpc2VkIF0gRGVmZXJyZWQudFxuICB2YWwgYWJvcnQgOiBfIHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdGFydCA6IFsgYEFib3J0IHwgYFN0YXJ0IG9mICdhIF0gSXZhci50XG4gICAgOyBvdXRjb21lIDogWyBgT2sgfCBgQWJvcnRlZCB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgd29yayA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoJWJpbmQgSXZhci5yZWFkIHN0YXJ0IHdpdGhcbiAgICAgIHwgYEFib3J0IC0+IHJldHVybiBgQWJvcnRlZFxuICAgICAgfCBgU3RhcnQgYSAtPlxuICAgICAgICAobWF0Y2glbWFwXG4gICAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICAgICB+cnVuOlxuICAgICAgICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgICAgIChmdW4gKCkgLT4gd29yayBhKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBPayBhIC0+IGBPayBhXG4gICAgICAgICB8IEVycm9yIGV4biAtPiBgUmFpc2VkIGV4bilcbiAgICBpblxuICAgIGxldCBvdXRjb21lID1cbiAgICAgIG1hdGNoJW1hcCByZXN1bHQgd2l0aFxuICAgICAgfCBgT2sgXyAtPiBgT2tcbiAgICAgIHwgYEFib3J0ZWQgLT4gYEFib3J0ZWRcbiAgICAgIHwgYFJhaXNlZCBfIC0+IGBSYWlzZWRcbiAgICBpblxuICAgIGxldCB0ID0geyBzdGFydDsgb3V0Y29tZSB9IGluXG4gICAgdCwgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHJ1biB0IGEgPVxuICAgIEl2YXIuZmlsbCB0LnN0YXJ0IChgU3RhcnQgYSk7XG4gICAgbWF0Y2glbWFwIHQub3V0Y29tZSB3aXRoXG4gICAgfCBgQWJvcnRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChgT2sgfCBgUmFpc2VkKSBhcyB4IC0+IHhcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9IEl2YXIuZmlsbCB0LnN0YXJ0IGBBYm9ydFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgY29udGludWVfb25fZXJyb3IgOiBib29sXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9icyA6IGludFxuICA7ICgqIFtqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VdIGhvbGRzIHJlc291cmNlcyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGluIHVzZSBieSBhXG4gICAgICAgcnVubmluZyBqb2IuICopXG4gICAgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIDogJ2EgU3RhY2tfb3JfY291bnRlci50XG4gIDtcbiAgICAoKiBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyB0aGUgcXVldWUgb2Ygam9icyB0aGF0IGhhdmVuJ3QgeWV0IHN0YXJ0ZWQuICopXG4gICAgam9ic193YWl0aW5nX3RvX3N0YXJ0IDogJ2EgSW50ZXJuYWxfam9iLnQgUXVldWUudFxuICA7ICgqIFswIDw9IG51bV9qb2JzX3J1bm5pbmcgPD0gbWF4X2NvbmN1cnJlbnRfam9ic10uICopXG4gICAgbXV0YWJsZSBudW1fam9ic19ydW5uaW5nIDogaW50XG4gIDsgKCogW2NhcGFjaXR5X2F2YWlsYWJsZV0gaXMgW1NvbWUgaXZhcl0gaWYgdXNlciBjb2RlIGhhcyBjYWxsZWQgW2NhcGFjaXR5X2F2YWlsYWJsZSB0XVxuICAgICAgIGFuZCBpcyB3YWl0aW5nIHRvIGJlIG5vdGlmaWVkIHdoZW4gY2FwYWNpdHkgaXMgYXZhaWxhYmxlIGluIHRoZSB0aHJvdHRsZS5cbiAgICAgICBbbWF5YmVfc3RhcnRfam9iXSB3aWxsIGZpbGwgW2l2YXJdIHdoZW4gY2FwYWNpdHkgYmVjb21lcyBhdmFpbGFibGUsIGkuZS4gd2hlblxuICAgICAgIFtqb2JzX3dhaXRpbmdfdG9fc3RhcnRdIGlzIGVtcHR5IGFuZCBbbnVtX2pvYnNfcnVubmluZyA8IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgY2FwYWNpdHlfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gIDsgKCogW2lzX2RlYWRdIGlzIHRydWUgaWYgW3RdIHdhcyBraWxsZWQgZHVlIHRvIGEgam9iIHJhaXNpbmcgYW4gZXhjZXB0aW9uIG9yIFtraWxsIHRdXG4gICAgICAgYmVpbmcgY2FsbGVkLiAqKVxuICAgIG11dGFibGUgaXNfZGVhZCA6IGJvb2xcbiAgOyAoKiBbY2xlYW5zXSBob2xkcyBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjbGVhbiBlYWNoIHJlc291cmNlIHdoZW4gW3RdIGlzXG4gICAgICAga2lsbGVkLiAqKVxuICAgIG11dGFibGUgY2xlYW5zIDogKCdhIC0+IHVuaXQgRGVmZXJyZWQudCkgbGlzdFxuICA7ICgqIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBpcyB0aGUgbnVtYmVyIG9mIHJlc291cmNlcyB3aG9zZSBjbGVhbiBmdW5jdGlvbnMgaGF2ZVxuICAgICAgIG5vdCB5ZXQgY29tcGxldGVkLiAgV2hpbGUgW3RdIGlzIGFsaXZlLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9XG4gICAgICAgbWF4X2NvbmN1cnJlbnRfam9ic10uICBPbmNlIFt0XSBpcyBraWxsZWQsIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBkZWNyZWFzZXMgdG9cbiAgICAgICB6ZXJvIG92ZXIgdGltZSBhcyB0aGUgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIG11dGFibGUgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA6IGludFxuICA7ICgqIFtjbGVhbmVkXSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gcmVhY2hlcyB6ZXJvLFxuICAgICAgIGkuZS4gYWZ0ZXIgW3RdIGlzIGtpbGxlZCBhbmQgYWxsIGl0cyBjbGVhbiBmdW5jdGlvbnMgY29tcGxldGUuICopXG4gICAgY2xlYW5lZCA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb250aW51ZV9vbl9lcnJvcjppZ25vcmVcbiAgICAgIH5tYXhfY29uY3VycmVudF9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfY29uY3VycmVudF9qb2JzIC0+IGFzc2VydCAobWF4X2NvbmN1cnJlbnRfam9icyA+IDApKSlcbiAgICAgIH5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2U6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSAtPlxuICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLml0ZXIgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOmludmFyaWFudF9hO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZVxuICAgICAgICAgICAgID0gaWYgdC5pc19kZWFkIHRoZW4gMCBlbHNlIHQubWF4X2NvbmN1cnJlbnRfam9icyAtIHQubnVtX2pvYnNfcnVubmluZykpKVxuICAgICAgfmpvYnNfd2FpdGluZ190b19zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvbiBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgLT5cbiAgICAgICAgICAgaWYgdC5pc19kZWFkIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBqb2JzX3dhaXRpbmdfdG9fc3RhcnQpKSlcbiAgICAgIH5udW1fam9ic19ydW5uaW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fam9ic19ydW5uaW5nIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fam9ic19ydW5uaW5nIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+Y2FwYWNpdHlfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgfmlzX2RlYWQ6aWdub3JlXG4gICAgICB+Y2xlYW5zOmlnbm9yZVxuICAgICAgfm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPD0gdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgICAgICAgICAgaWYgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIGFzc2VydCB0LmlzX2RlYWQpKVxuICAgICAgfmNsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNsZWFuZWQgLT5cbiAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIGNsZWFuZWQgdGhlbiBhc3NlcnQgKHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IDApKSlcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlRocm90dGxlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IF8gdCldXG47O1xuXG5tb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAna2luZCkgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSB0XG5lbmRcblxubGV0IG51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQgdCA9IFF1ZXVlLmxlbmd0aCB0LmpvYnNfd2FpdGluZ190b19zdGFydFxuXG5sZXQgY2xlYW5fcmVzb3VyY2UgdCBhID1cbiAgRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHQuY2xlYW5zIH5mOihmdW4gZiAtPiBmIGEpKVxuICA+Pj4gZnVuICgpIC0+XG4gIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8LSB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLSAxO1xuICBpZiB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwIHRoZW4gSXZhci5maWxsIHQuY2xlYW5lZCAoKVxuOztcblxubGV0IGtpbGwgdCA9XG4gIGlmIG5vdCB0LmlzX2RlYWRcbiAgdGhlbiAoXG4gICAgdC5pc19kZWFkIDwtIHRydWU7XG4gICAgUXVldWUuaXRlciB0LmpvYnNfd2FpdGluZ190b19zdGFydCB+ZjpJbnRlcm5hbF9qb2IuYWJvcnQ7XG4gICAgUXVldWUuY2xlYXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ7XG4gICAgU3RhY2tfb3JfY291bnRlci5pdGVyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOihmdW4gYSAtPiBjbGVhbl9yZXNvdXJjZSB0IGEpO1xuICAgIFN0YWNrX29yX2NvdW50ZXIuY2xlYXIgdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UpXG47O1xuXG5sZXQgYXRfa2lsbCB0IGYgPVxuICAoKiBXZSBwcmVzZXJ2ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBleGNlcHRpb25zIHJhaXNlZCBieSBbZl0gZ28gdG8gdGhlIG1vbml0b3JcbiAgICAgaW4gZWZmZWN0IHdoZW4gW2F0X2tpbGxdIHdhcyBjYWxsZWQuICopXG4gIGxldCBmID0gdW5zdGFnZSAoTW9uaXRvci5FeHBvcnRlZF9mb3Jfc2NoZWR1bGVyLnByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JyBmKSBpblxuICB0LmNsZWFucyA8LSBmIDo6IHQuY2xlYW5zXG47O1xuXG5sZXQgY2xlYW5lZCB0ID0gSXZhci5yZWFkIHQuY2xlYW5lZFxuXG5sZXQgcmVjIHN0YXJ0X2pvYiB0ID1cbiAgYXNzZXJ0IChub3QgdC5pc19kZWFkKTtcbiAgYXNzZXJ0ICh0Lm51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICBhc3NlcnQgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpKTtcbiAgbGV0IGpvYiA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGluXG4gIHQubnVtX2pvYnNfcnVubmluZyA8LSB0Lm51bV9qb2JzX3J1bm5pbmcgKyAxO1xuICBsZXQgam9iX3Jlc291cmNlID0gU3RhY2tfb3JfY291bnRlci5wb3BfZXhuIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGluXG4gIEludGVybmFsX2pvYi5ydW4gam9iIGpvYl9yZXNvdXJjZVxuICA+Pj4gZnVuIHJlcyAtPlxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nIC0gMTtcbiAgKG1hdGNoIHJlcyB3aXRoXG4gICB8IGBPayAtPiAoKVxuICAgfCBgUmFpc2VkIC0+IGlmIG5vdCB0LmNvbnRpbnVlX29uX2Vycm9yIHRoZW4ga2lsbCB0KTtcbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gY2xlYW5fcmVzb3VyY2UgdCBqb2JfcmVzb3VyY2VcbiAgZWxzZSAoXG4gICAgU3RhY2tfb3JfY291bnRlci5wdXNoIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGpvYl9yZXNvdXJjZTtcbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KVxuICAgIHRoZW4gc3RhcnRfam9iIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGl2YXIgLT5cbiAgICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICAgIHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIE5vbmUpKVxuOztcblxubGV0IGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGxldCBtYXhfY29uY3VycmVudF9qb2JzID0gU3RhY2tfb3JfY291bnRlci5sZW5ndGggam9iX3Jlc291cmNlcyBpblxuICB7IGNvbnRpbnVlX29uX2Vycm9yXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA9IGpvYl9yZXNvdXJjZXNcbiAgOyBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgPSBRdWV1ZS5jcmVhdGUgKClcbiAgOyBudW1fam9ic19ydW5uaW5nID0gMFxuICA7IGNhcGFjaXR5X2F2YWlsYWJsZSA9IE5vbmVcbiAgOyBpc19kZWFkID0gZmFsc2VcbiAgOyBjbGVhbnMgPSBbXVxuICA7IG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSBtYXhfY29uY3VycmVudF9qb2JzXG4gIDsgY2xlYW5lZCA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVfd2l0aCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3IgKFN0YWNrX29yX2NvdW50ZXIub2ZfbGlzdCBqb2JfcmVzb3VyY2VzKVxuOztcblxubW9kdWxlIFNlcXVlbmNlciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBhID0gY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIFsgYSBdXG5lbmRcblxubGV0IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3Igfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBpZiBtYXhfY29uY3VycmVudF9qb2JzIDw9IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRocm90dGxlLmNyZWF0ZSByZXF1aXJlcyBwb3NpdGl2ZSBtYXhfY29uY3VycmVudF9qb2JzLCBidXQgZ290XCJcbiAgICAgICAgICAobWF4X2NvbmN1cnJlbnRfam9icyA6IGludCldO1xuICBjcmVhdGVfaW50ZXJuYWxcbiAgICB+Y29udGludWVfb25fZXJyb3JcbiAgICAoU3RhY2tfb3JfY291bnRlci5jcmVhdGVfY291bnRlciB+bGVuZ3RoOm1heF9jb25jdXJyZW50X2pvYnMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBpbnRlcm5hbF9qb2IgOiAnYSBJbnRlcm5hbF9qb2IudFxuICAgIDsgcmVzdWx0IDogWyBgT2sgb2YgJ2IgfCBgQWJvcnRlZCB8IGBSYWlzZWQgb2YgZXhuIF0gRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgcmVzdWx0IHQgPSB0LnJlc3VsdFxuICBsZXQgYWJvcnQgdCA9IEludGVybmFsX2pvYi5hYm9ydCB0LmludGVybmFsX2pvYlxuXG4gIGxldCBjcmVhdGUgZiA9XG4gICAgbGV0IGludGVybmFsX2pvYiwgcmVzdWx0ID0gSW50ZXJuYWxfam9iLmNyZWF0ZSBmIGluXG4gICAgeyBpbnRlcm5hbF9qb2I7IHJlc3VsdCB9XG4gIDs7XG5lbmRcblxubGV0IGVucXVldWUnIHQgZiA9XG4gIGxldCBqb2IgPSBKb2IuY3JlYXRlIGYgaW5cbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gSm9iLmFib3J0IGpvYlxuICBlbHNlIChcbiAgICBRdWV1ZS5lbnF1ZXVlIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGpvYi5pbnRlcm5hbF9qb2I7XG4gICAgaWYgdC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzIHRoZW4gc3RhcnRfam9iIHQpO1xuICBKb2IucmVzdWx0IGpvYlxuOztcblxubGV0IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCByZXN1bHQgPVxuICBtYXRjaCByZXN1bHQgd2l0aFxuICB8IGBPayBhIC0+IGFcbiAgfCBgQWJvcnRlZCAtPiByYWlzZV9zIFslbWVzc2FnZSBcInRocm90dGxlIGFib3J0ZWQgam9iXCJdXG4gIHwgYFJhaXNlZCBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGYgPSBlbnF1ZXVlJyB0IGYgPj58IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdFxuXG5sZXQgZW5xdWV1ZV9leGNsdXNpdmUgdCBmID1cbiAgbGV0IG4gPSB0Lm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgaWYgSW50LiggPj0gKSBuIDFfMDAwXzAwMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiW2VucXVldWVfZXhjbHVzaXZlXSB3YXMgY2FsbGVkIHdpdGggYSB2ZXJ5IGxhcmdlIHZhbHVlIG9mIFxcXG4gICAgICAgICBbbWF4X2NvbmN1cnJlbnRfam9ic10uIFRoaXMgZG9lc24ndCB3b3JrLlwiXTtcbiAgbGV0IGRvbmVfID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgYXNzZXJ0IChuID4gMCk7XG4gIGxldCBmX3BsYWNlaG9sZGVyIF9zbG90ID0gSXZhci5yZWFkIGRvbmVfIGluXG4gIGZvciBfID0gMSB0byBuIC0gMSBkb1xuICAgIGRvbid0X3dhaXRfZm9yIChlbnF1ZXVlIHQgZl9wbGFjZWhvbGRlcilcbiAgZG9uZTtcbiAgbGV0JW1hcCByZXN1bHQgPSBlbnF1ZXVlJyB0IChmdW4gX3Nsb3QgLT4gZiAoKSkgaW5cbiAgSXZhci5maWxsIGRvbmVfICgpO1xuICBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0XG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93IH5ob3cgfmYgPVxuICBzdGFnZVxuICAgIChtYXRjaCBob3cgd2l0aFxuICAgICB8IGBQYXJhbGxlbCAtPiBmXG4gICAgIHwgKGBTZXF1ZW50aWFsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgIHwgYFNlcXVlbnRpYWwgLT4gMVxuICAgICAgICAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+IG1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICBpblxuICAgICAgIGxldCB0ID0gY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSB+bWF4X2NvbmN1cnJlbnRfam9icyBpblxuICAgICAgIGZ1biBhIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYSkpXG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYTEgYTIgLT4gZW5xdWV1ZSB0IChmdW4gKCkgLT4gZiBhMSBhMikpXG47O1xuXG5sZXQgcHJpb3Jfam9ic19kb25lIHQgPVxuICAoKiBXZSBxdWV1ZSBbdC5tYXhfY29uY3VycmVudF9qb2JzXSBkdW1teSBqb2JzIGFuZCB3aGVuIHRoZXkgYXJlIGFsbCBzdGFydGVkIHdlIGtub3dcbiAgICAgdGhhdCBhbGwgcHJpb3Igam9icyBmaW5pc2hlZC4gIFdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBkdW1teSBqb2JzIHdhaXQgZm9yIHRoZSBsYXN0IG9uZVxuICAgICB0byBnZXQgc3RhcnRlZCBiZWZvcmUgZmluaXNoaW5nLiAqKVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBhbGxfZHVtbXlfam9ic19ydW5uaW5nIC0+XG4gICAgbGV0IGR1bW15X2pvYnNfcnVubmluZyA9IHJlZiAwIGluXG4gICAgZm9yIF8gPSAxIHRvIHQubWF4X2NvbmN1cnJlbnRfam9icyBkb1xuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKGVucXVldWUgdCAoZnVuIF8gLT5cbiAgICAgICAgICAgaW5jciBkdW1teV9qb2JzX3J1bm5pbmc7XG4gICAgICAgICAgIGlmICFkdW1teV9qb2JzX3J1bm5pbmcgPSB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBJdmFyLmZpbGwgYWxsX2R1bW15X2pvYnNfcnVubmluZyAoKTtcbiAgICAgICAgICAgSXZhci5yZWFkIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcpKVxuICAgIGRvbmUpXG47O1xuXG5sZXQgY2FwYWNpdHlfYXZhaWxhYmxlIHQgPVxuICBpZiBudW1fam9ic19ydW5uaW5nIHQgPCBtYXhfY29uY3VycmVudF9qb2JzIHRcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggdC5jYXBhY2l0eV9hdmFpbGFibGUgd2l0aFxuICAgIHwgU29tZSBpdmFyIC0+IEl2YXIucmVhZCBpdmFyXG4gICAgfCBOb25lIC0+IERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT4gdC5jYXBhY2l0eV9hdmFpbGFibGUgPC0gU29tZSBpdmFyKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxuXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyMS5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyMS53YWxsX2Nsb2NrXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxuaW5jbHVkZSAoU2NoZWR1bGVyIDogbW9kdWxlIHR5cGUgb2YgU2NoZWR1bGVyIHdpdGggbW9kdWxlIEJ2YXIgOj0gU2NoZWR1bGVyLkJ2YXIpXG5cbmxldCB0ID0gU2NoZWR1bGVyLnRcblxuaW5jbHVkZSBNb25pdG9yLkV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IGZpbmRfbG9jYWwga2V5ID0gRXhlY3V0aW9uX2NvbnRleHQuZmluZF9sb2NhbCAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGtleVxuXG5sZXQgd2l0aF9sb2NhbCBrZXkgdmFsdWUgfmYgPVxuICBsZXQgdCA9IHQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC53aXRoX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQpIGtleSB2YWx1ZVxuICBpblxuICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgfmZcbjs7XG5cbmxldCBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gKHQgKCkpLm1haW5fZXhlY3V0aW9uX2NvbnRleHRcbmxldCBjYW5fcnVuX2Ffam9iIHQgPSBudW1fcGVuZGluZ19qb2JzIHQgPiAwIHx8IEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRcbmxldCBoYXNfdXBjb21pbmdfZXZlbnQgdCA9IG5vdCAoVGltaW5nX3doZWVsLmlzX2VtcHR5IChldmVudHMgdCkpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgKGV2ZW50cyB0KVxubGV0IG5leHRfdXBjb21pbmdfZXZlbnRfZXhuIHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gKGV2ZW50cyB0KVxubGV0IGV2ZW50X3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiAoZXZlbnRzIHQpXG5sZXQgY3ljbGVfc3RhcnQgdCA9IHQuY3ljbGVfc3RhcnRcbmxldCBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZiA9IHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIGYgOjogdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRcbmxldCBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmYgPSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gZiA6OiB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRcblxubGV0IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjtcbiAgaGFuZGxlXG47O1xuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgfmtleTpoYW5kbGUgfmRhdGE6ZjtcbiAgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbigqIFVuYmVsaWV2YWJsZSB0aGF0IFtMaXN0LnJlbW92ZV0gaXMgbm90IGEgdGhpbmcgKilcbmxldCBsaXN0X3JlbW92ZV9maXJzdCBsc3QgfmYgPVxuICBtYXRjaCBMaXN0LnNwbGl0X3doaWxlIH5mOihmdW4geCAtPiBub3QgKGYgeCkpIGxzdCB3aXRoXG4gIHwgXywgW10gLT4gTm9uZVxuICB8IGwsIF8gOjogciAtPiBTb21lIChsIEAgcilcbjs7XG5cbmxldCByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgbHN0IGYgPVxuICAoKiBSZW1vdmUgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgW2ZdIGZyb20gW2xzdF0uIE1vcmUgdGhhbiBvbmUgaW5zdGFuY2UgbWF5IGJlIHByZXNlbnQsXG4gICAgIGJ1dCByZW1vdmFsIGlzIHJlZmVyZW5jZS1jb3VudGVkIGJ5IFtydW5fZXZlcnlfY3ljbGVfKHN0YXJ0fGVuZClfc3RhdGVdIHRhYmxlcy4gKilcbiAgbWF0Y2ggbGlzdF9yZW1vdmVfZmlyc3QgfmY6KHBoeXNfZXF1YWwgZikgbHN0IHdpdGhcbiAgfCBTb21lIGxzdCAtPiBsc3RcbiAgfCBOb25lIC0+XG4gICAgKCogVGhpcyBzaG91bGQgYmUgdW5yZWFjaGFibGUsIHNlZSB0aGUgW2ludmFyaWFudF0gaW4gW3NjaGVkdWxlcjEubWxdLiAqKVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlNjaGVkdWxlci5yZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgY2FsbGVkIHdpdGggYSBob29rIHRoYXQgaXNuJ3QgcmVnaXN0ZXJlZFwiXVxuOztcblxubGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biB0IGhhbmRsZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIGhhbmRsZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGZhaWx3aXRoIFwiQXR0ZW1wdGVkIHRvIHJlbW92ZSBhIGN5Y2xlIHN0YXJ0IGhvb2sgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkLlwiXG4gIHwgU29tZSBmIC0+XG4gICAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgPC0gcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IGZcbjs7XG5cbmxldCByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuIHQgaGFuZGxlID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIGhhbmRsZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGZhaWx3aXRoIFwiQXR0ZW1wdGVkIHRvIHJlbW92ZSBhIGN5Y2xlIGVuZCBob29rIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cIlxuICB8IFNvbWUgZiAtPiB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCBmXG47O1xuXG5sZXQgbWFwX2N5Y2xlX3RpbWVzIHQgfmYgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT4gVGFpbC5leHRlbmQgdGFpbCAoZiB0Lmxhc3RfY3ljbGVfdGltZSkpKVxuOztcblxubGV0IGxvbmdfY3ljbGVzIHQgfmF0X2xlYXN0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+XG4gICAgICBpZiBUaW1lX25zLlNwYW4uKCA+PSApIHQubGFzdF9jeWNsZV90aW1lIGF0X2xlYXN0XG4gICAgICB0aGVuIFRhaWwuZXh0ZW5kIHRhaWwgdC5sYXN0X2N5Y2xlX3RpbWUpKVxuOztcblxubGV0IGN5Y2xlX251bV9qb2JzIHQgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT4gVGFpbC5leHRlbmQgdGFpbCB0Lmxhc3RfY3ljbGVfbnVtX2pvYnMpKVxuOztcblxubGV0IGN5Y2xlX2NvdW50IHQgPSB0LmN5Y2xlX2NvdW50XG5cbmxldCBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgdCBpbnQgPVxuICB0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gIDwtIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gaW50XG47O1xuXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgdCA9XG4gIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyB0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG47O1xuXG5sZXQgc2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIHQgZiA9IHQudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgPC0gZlxuXG5sZXQgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQuZXh0ZXJuYWxfam9icyAoRXh0ZXJuYWxfam9iLlQgKGV4ZWN1dGlvbl9jb250ZXh0LCBmLCBhKSk7XG4gIHQudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgKClcbjs7XG5cbmxldCBzZXRfZXZlbnRfYWRkZWRfaG9vayB0IGYgPSB0LmV2ZW50X2FkZGVkX2hvb2sgPC0gU29tZSBmXG5sZXQgc2V0X2pvYl9xdWV1ZWRfaG9vayB0IGYgPSB0LmpvYl9xdWV1ZWRfaG9vayA8LSBTb21lIGZcblxubGV0IGNyZWF0ZV9hbGFybSB0IGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgR2MuRXhwZXJ0LkFsYXJtLmNyZWF0ZSAoZnVuICgpIC0+XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmICgpKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXIgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciBoZWFwX2Jsb2NrID1cbiAgICAoKiBIZXJlIHdlIGNhbiBiZSBpbiBhbnkgdGhyZWFkLCBhbmQgbWF5IG5vdCBiZSBob2xkaW5nIHRoZSBhc3luYyBsb2NrLiAgU28sIHdlIGNhblxuICAgICAgIG9ubHkgZG8gdGhyZWFkLXNhZmUgdGhpbmdzLlxuXG4gICAgICAgQnkgcHV0dGluZyBbaGVhcF9ibG9ja10gaW4gW2V4dGVybmFsX2pvYnNdLCB3ZSBhcmUga2VlcGluZyBpdCBhbGl2ZSB1bnRpbCB0aGUgbmV4dFxuICAgICAgIHRpbWUgdGhlIGFzeW5jIHNjaGVkdWxlciBnZXRzIGFyb3VuZCB0byBkZXF1ZXVlaW5nIGl0LiAgQ2FsbGluZ1xuICAgICAgIFt0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSBlbnN1cmVzIHRoYXQgd2lsbCBoYXBwZW4gaW4gc2hvcnQgb3JkZXIuICBUaHVzLFxuICAgICAgIHdlIGFyZSBub3QgZHJhbWF0aWNhbGx5IGluY3JlYXNpbmcgdGhlIGxpZmV0aW1lIG9mIFtoZWFwX2Jsb2NrXSwgc2luY2UgdGhlIE9DYW1sXG4gICAgICAgcnVudGltZSBhbHJlYWR5IHJlc3VycmVjdGVkIFtoZWFwX2Jsb2NrXSBzbyB0aGF0IHdlIGNvdWxkIHJlZmVyIHRvIGl0IGhlcmUuICBUaGVcbiAgICAgICBPQ2FtbCBydW50aW1lIGFscmVhZHkgcmVtb3ZlZCB0aGUgZmluYWxpemVyIGZ1bmN0aW9uIHdoZW4gaXQgbm90aWNlZCBbaGVhcF9ibG9ja11cbiAgICAgICBjb3VsZCBiZSBmaW5hbGl6ZWQsIHNvIHRoZXJlIGlzIG5vIGluZmluaXRlIGxvb3AgaW4gd2hpY2ggd2UgYXJlIGNhdXNpbmcgdGhlXG4gICAgICAgZmluYWxpemVyIHRvIHJ1biBhZ2Fpbi4gIEFsc28sIE9DYW1sIGRvZXMgbm90IGltcG9zZSBhbnkgcmVxdWlyZW1lbnQgb24gZmluYWxpemVyXG4gICAgICAgZnVuY3Rpb25zIHRoYXQgdGhleSBuZWVkIHRvIGRpc3Bvc2Ugb2YgdGhlIGJsb2NrLCBzbyBpdCdzIGZpbmUgdGhhdCB3ZSBrZWVwXG4gICAgICAgW2hlYXBfYmxvY2tdIGFyb3VuZCB1bnRpbCBsYXRlci4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImVucXVldWVpbmcgZmluYWxpemVyXCI7XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmIGhlYXBfYmxvY2tcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV0gaW5zdGVhZCBvZiBbQ29yZS5HYy5hZGRfZmluYWxpemVyXSBiZWNhdXNlIHRoZSBsYXR0ZXJcbiAgICAgaGFzIGl0cyBvd24gd3JhcHBlciBhcm91bmQgW0NhbWwuR2MuZmluYWxpc2VdIHRvIHJ1biBmaW5hbGl6ZXJzIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBDYW1sLkdjLmZpbmFsaXNlIGZpbmFsaXplciBoZWFwX2Jsb2NrIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAoKiBbSGVhcF9ibG9ja10gZW5zdXJlcyB0aGF0IHRoaXMgd2lsbCBvbmx5IGZhaWwgZm9yIHN0YXRpYyBkYXRhLCBpbiB3aGljaCBjYXNlIHdlXG4gICAgICAgY2FuIGRyb3AgdGhlIGZpbmFsaXplciBzaW5jZSB0aGUgYmxvY2sgd2lsbCBuZXZlciBiZSBjb2xsZWN0ZWQuKilcbiAgICAoKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfZXhuIHQgeCBmID1cbiAgYWRkX2ZpbmFsaXplciB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgKGZ1biBoZWFwX2Jsb2NrIC0+XG4gICAgZiAoSGVhcF9ibG9jay52YWx1ZSBoZWFwX2Jsb2NrKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3QgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciAoKSA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzXG4gICAgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXIgKHVzaW5nICdsYXN0JyBzZW1hbnRpYylcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKClcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJfbGFzdF0gYmVjYXVzZVxuICAgICB0aGUgbGF0dGVyIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlX2xhc3RdIHRvIHJ1biBmaW5hbGl6ZXJzXG4gICAgIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBDYW1sLkdjLmZpbmFsaXNlX2xhc3QgZmluYWxpemVyIGhlYXBfYmxvY2sgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICgqIFtIZWFwX2Jsb2NrXSBlbnN1cmVzIHRoYXQgdGhpcyB3aWxsIG9ubHkgZmFpbCBmb3Igc3RhdGljIGRhdGEsIGluIHdoaWNoIGNhc2Ugd2VcbiAgICAgICBjYW4gZHJvcCB0aGUgZmluYWxpemVyIHNpbmNlIHRoZSBibG9jayB3aWxsIG5ldmVyIGJlIGNvbGxlY3RlZC4qKVxuICAgICgpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB0IHggZiA9IGFkZF9maW5hbGl6ZXJfbGFzdCB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgZlxuXG4oKiogW2ZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kXSBzZXRzIHRoZSBudW1iZXIgb2Ygbm9ybWFsIGpvYnMgYWxsb3dlZCB0byBydW4gaW4gdGhpc1xuICAgIGN5Y2xlIHRvIHplcm8uICBUaHVzLCBhZnRlciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgam9iIGNvbXBsZXRlcywgdGhlIHNjaGVkdWxlciB3aWxsXG4gICAgc3dpdGNoIHRvIGxvdyBwcmlvcml0eSBqb2JzIGFuZCB0aGVuIGVuZCB0aGUgY3VycmVudCBjeWNsZS4gKilcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCB0ID1cbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIDBcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfm5vdyA9XG4gIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hZHZhbmNlX2ludGVybmFsIHQudGltZV9zb3VyY2UgfnRvXzpub3cgfnNlbmRfZXhuXG47O1xuXG5sZXQgcnVuX2N5Y2xlIHQgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcInJ1bl9jeWNsZSBzdGFydGluZ1wiIHQgWyVzZXhwX29mOiB0XTtcbiAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gIHQuY3ljbGVfY291bnQgPC0gdC5jeWNsZV9jb3VudCArIDE7XG4gIHQuY3ljbGVfc3RhcnQgPC0gbm93O1xuICB0LmluX2N5Y2xlIDwtIHRydWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQueWllbGQgKCk7XG4gIGxldCBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGUgPSBudW1fam9ic19ydW4gdCBpblxuICBMaXN0Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBhZHZhbmNlX2Nsb2NrIHQgfm5vdztcbiAgc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eTp0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlO1xuICBsZXQgcmVjIHJ1bl9qb2JzIHQgPVxuICAgIG1hdGNoIFNjaGVkdWxlci5ydW5fam9icyB0IHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpO1xuICAgICAgKCogW3J1bl9qb2JzXSBzdG9wcGVkIGR1ZSB0byBhbiBleG4uICBUaGVyZSBtYXkgc3RpbGwgYmUgam9icyB0aGF0IGNvdWxkIGJlXG4gICAgICAgICBydW4gdGhpcyBjeWNsZSwgc28gW3J1bl9qb2JzXSBhZ2Fpbi4gKilcbiAgICAgIHJ1bl9qb2JzIHRcbiAgaW5cbiAgcnVuX2pvYnMgdDtcbiAgbGV0IGN5Y2xlX3RpbWUgPSBUaW1lX25zLmRpZmYgKFRpbWVfbnMubm93ICgpKSB0LmN5Y2xlX3N0YXJ0IGluXG4gIHQubGFzdF9jeWNsZV90aW1lIDwtIGN5Y2xlX3RpbWU7XG4gIHQubGFzdF9jeWNsZV9udW1fam9icyA8LSBudW1fam9ic19ydW4gdCAtIG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZTtcbiAgdC50b3RhbF9jeWNsZV90aW1lIDwtIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgY3ljbGVfdGltZSk7XG4gIGlmIEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIEJ2YXIuYnJvYWRjYXN0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gKCk7XG4gIExpc3QuaXRlciB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICB0LmluX2N5Y2xlIDwtIGZhbHNlO1xuICBpZiBkZWJ1Z1xuICB0aGVuXG4gICAgRGVidWcubG9nXG4gICAgICBcInJ1bl9jeWNsZSBmaW5pc2hlZFwiXG4gICAgICAodW5jYXVnaHRfZXhuIHQsIGlzX3NvbWUgKG5leHRfdXBjb21pbmdfZXZlbnQgdCkpXG4gICAgICBbJXNleHBfb2Y6IEVycm9yLnQgb3B0aW9uICogYm9vbF1cbjs7XG5cbmxldCBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBzdGFydGluZ1wiO1xuICBsZXQgdCA9IHQgKCkgaW5cbiAgaWYgaXNfZGVhZCB0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIGNhbm5vdCBwcm9jZWVkIC0tIHNjaGVkdWxlciBpcyBkZWFkXCJcbiAgICAgICAgICB+c2NoZWR1bGVyOih0IDogdCldO1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIHJ1bl9jeWNsZSB0O1xuICAgIGFkdmFuY2VfY2xvY2sgdCB+bm93OihUaW1lX25zLm5vdyAoKSk7XG4gICAgaWYgY2FuX3J1bl9hX2pvYiB0IHRoZW4gbG9vcCAoKVxuICBpblxuICBsb29wICgpO1xuICAoKiBSZXNldCB0aGUgY3VycmVudCBleGVjdXRpb24gY29udGV4dCB0byBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgd2hlbiB3ZSdyZSBub3QgaW5cbiAgICAgYSBqb2IsIFtjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gbWFpbl9leGVjdXRpb25fY29udGV4dF0uICopXG4gIHNldF9leGVjdXRpb25fY29udGV4dCB0IHQubWFpbl9leGVjdXRpb25fY29udGV4dDtcbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBmaW5pc2hlZFwiO1xuICBPcHRpb24uaXRlciAodW5jYXVnaHRfZXhuIHQpIH5mOkVycm9yLnJhaXNlXG47O1xuXG5sZXQgbWFrZV9hc3luY191bnVzYWJsZSAoKSA9XG4gIGxldCB0ID0gIXRfcmVmIGluXG4gIHQuY2hlY2tfYWNjZXNzXG4gIDwtIFNvbWVcbiAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgcmFpc2VfcyBbJXNleHAgXCJBc3luYyBzY2hlZHVsZXIgaXMgdW51c2FibGUgZHVlIHRvIFttYWtlX2FzeW5jX3VudXNhYmxlXVwiXSlcbjs7XG5cbmxldCByZXNldF9pbl9mb3JrZWRfcHJvY2VzcyAoKSA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJlc2V0X2luX2ZvcmtlZF9wcm9jZXNzXCI7XG4gICgqIFRoZXJlIGlzIG5vIG5lZWQgdG8gZW1wdHkgW21haW5fbW9uaXRvcl9ob2xlXS4gKilcbiAgU2NoZWR1bGVyLih0X3JlZiA6PSBjcmVhdGUgKCkpXG47O1xuXG5sZXQgY2hlY2tfaW52YXJpYW50cyB0ID0gdC5jaGVja19pbnZhcmlhbnRzXG5sZXQgc2V0X2NoZWNrX2ludmFyaWFudHMgdCBiID0gdC5jaGVja19pbnZhcmlhbnRzIDwtIGJcbmxldCBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgdCBiID0gdC5yZWNvcmRfYmFja3RyYWNlcyA8LSBiXG5sZXQgeWllbGQgdCA9IEJ2YXIud2FpdCB0LnlpZWxkXG5cbmxldCB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/KG1heV9yZXR1cm5faW1tZWRpYXRlbHkgPSBmYWxzZSkgdCA9XG4gIGlmIG1heV9yZXR1cm5faW1tZWRpYXRlbHkgJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIHJldHVybiAoKVxuICBlbHNlIEJ2YXIud2FpdCB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluXG47O1xuXG5sZXQgeWllbGRfZXZlcnkgfm4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlNjaGVkdWxlci55aWVsZF9ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgY291bnRcIiAobiA6IGludCldXG4gIGVsc2UgaWYgbiA9IDFcbiAgdGhlbiBzdGFnZSAoZnVuIHQgLT4geWllbGQgdClcbiAgZWxzZSAoXG4gICAgbGV0IGNvdW50X3VudGlsX3lpZWxkID0gcmVmIG4gaW5cbiAgICBzdGFnZSAoZnVuIHQgLT5cbiAgICAgIGRlY3IgY291bnRfdW50aWxfeWllbGQ7XG4gICAgICBpZiAhY291bnRfdW50aWxfeWllbGQgPiAwXG4gICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGNvdW50X3VudGlsX3lpZWxkIDo9IG47XG4gICAgICAgIHlpZWxkIHQpKSlcbjs7XG5cbmxldCB0b3RhbF9jeWNsZV90aW1lIHQgPVxuICAoKiBBZGp1c3QgZm9yIHRoZSBmYWN0IHRoZSBjYWxsZXIncyBwcm9iYWJseSBhbiBBc3luYyBqb2IuICopXG4gIGlmIHQuaW5fY3ljbGVcbiAgdGhlbiAoXG4gICAgbGV0IHRoaXNfY3ljbGVfdGltZSA9IFRpbWVfbnMuKGRpZmYgKG5vdyAoKSkgdC5jeWNsZV9zdGFydCkgaW5cbiAgICBUaW1lX25zLlNwYW4uKHQudG90YWxfY3ljbGVfdGltZSArIHRoaXNfY3ljbGVfdGltZSkpXG4gIGVsc2UgdC50b3RhbF9jeWNsZV90aW1lXG47O1xuXG5tb2R1bGUgVmVyeV9sb3dfcHJpb3JpdHlfd29yayA9IHN0cnVjdFxuICBtb2R1bGUgV29ya2VyX3Jlc3VsdCA9IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5FeGVjX3Jlc3VsdFxuXG5cbiAgbGV0IHJlYyBydW4gdCA9IHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmc6MV8wMDBcblxuICBhbmQgcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9XG4gICAgaWYgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IDBcbiAgICB0aGVuIHlpZWxkX3RoZW5fcnVuIHRcbiAgICBlbHNlIGlmIG5vdCAoRGVxdWUuaXNfZW1wdHkgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHdvcmtlciA9IERlcXVlLmRlcXVldWVfZnJvbnRfZXhuIHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyBpblxuICAgICAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgd29ya2VyLmV4ZWN1dGlvbl9jb250ZXh0O1xuICAgICAgcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZylcblxuICBhbmQgeWllbGRfdGhlbl9ydW4gdCA9XG4gICAgaWYgbm90IChEZXF1ZS5pc19lbXB0eSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMpXG4gICAgdGhlbiBEZWZlcnJlZC51cG9uICh5aWVsZCB0KSAoZnVuICgpIC0+IHJ1biB0KVxuXG4gIGFuZCBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID1cbiAgICBhc3NlcnQgKHBoeXNfZXF1YWwgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHdvcmtlci5leGVjdXRpb25fY29udGV4dCk7XG4gICAgaWYgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IDBcbiAgICB0aGVuIChcbiAgICAgIERlcXVlLmVucXVldWVfZnJvbnQgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIHdvcmtlcjtcbiAgICAgIHlpZWxkX3RoZW5fcnVuIHQpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgLSAxIGluXG4gICAgICBtYXRjaCB3b3JrZXIuZXhlYyAoKSB3aXRoXG4gICAgICB8IEZpbmlzaGVkIC0+IHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmdcbiAgICAgIHwgTm90X2ZpbmlzaGVkIC0+IHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmdcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBsZXQgYnQgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgIE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJ0KTtcbiAgICAgICAgcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZylcbiAgOztcblxuICBsZXQgZW5xdWV1ZSB+ZiA9XG4gICAgbGV0IHQgPSB0ICgpIGluXG4gICAgbGV0IHF1ZXVlID0gdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIGluXG4gICAgbGV0IHJ1bm5pbmcgPSBub3QgKERlcXVlLmlzX2VtcHR5IHF1ZXVlKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0KSB+cHJpb3JpdHk6TG93XG4gICAgaW5cbiAgICBEZXF1ZS5lbnF1ZXVlX2JhY2sgcXVldWUgeyBleGVjdXRpb25fY29udGV4dDsgZXhlYyA9IGYgfTtcbiAgICBpZiBub3QgcnVubmluZyB0aGVuIGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBydW4gdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfYmVuY2ggPSBzdHJ1Y3RcbiAgbGV0IGFkdmFuY2VfY2xvY2sgPSBhZHZhbmNlX2Nsb2NrXG5lbmRcblxubGV0IGluX2N5Y2xlIHQgPSB0LmluX2N5Y2xlXG4iLCJ0eXBlIHQgPSB1bml0IC0+IHVuaXRcblxubW9kdWxlIEhhbmRsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTY2hlZHVsZXJcblxubGV0IGVucXVldWVfam9iIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9IGVucXVldWUgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuXG5sZXQgdGhyZWFkX3NhZmVfZW5xdWV1ZV9qb2IgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKVxubGV0IGN5Y2xlX2NvdW50ICgpID0gY3ljbGVfY291bnQgKHQgKCkpXG5sZXQgY3ljbGVfc3RhcnRfbnMgKCkgPSBjeWNsZV9zdGFydCAodCAoKSlcbmxldCBjeWNsZV9zdGFydCAoKSA9IFRpbWVfbnMudG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IChjeWNsZV9zdGFydF9ucyAoKSlcbmxldCBjeWNsZV90aW1lc19ucyAoKSA9IG1hcF9jeWNsZV90aW1lcyAodCAoKSkgfmY6Rm4uaWRcbmxldCBjeWNsZV90aW1lcyAoKSA9IG1hcF9jeWNsZV90aW1lcyAodCAoKSkgfmY6VGltZV9ucy5TcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdFxubGV0IHRvdGFsX2N5Y2xlX3RpbWUgKCkgPSB0b3RhbF9jeWNsZV90aW1lICh0ICgpKVxubGV0IGxhc3RfY3ljbGVfdGltZSAoKSA9IGxhc3RfY3ljbGVfdGltZSAodCAoKSlcbmxldCBsb25nX2N5Y2xlcyB+YXRfbGVhc3QgPSBsb25nX2N5Y2xlcyAodCAoKSkgfmF0X2xlYXN0XG5sZXQgZXZlbnRfcHJlY2lzaW9uX25zICgpID0gZXZlbnRfcHJlY2lzaW9uICh0ICgpKVxubGV0IGV2ZW50X3ByZWNpc2lvbiAoKSA9IFRpbWVfbnMuU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKGV2ZW50X3ByZWNpc2lvbl9ucyAoKSlcblxubGV0IHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSBpID1cbiAgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICh0ICgpKSBpXG47O1xuXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKCkgPSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAodCAoKSlcbmxldCBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgYm9vbCA9IHNldF9yZWNvcmRfYmFja3RyYWNlcyAodCAoKSkgYm9vbFxubGV0IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kICgpID0gZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgKHQgKCkpXG5sZXQgeWllbGQgKCkgPSB5aWVsZCAodCAoKSlcblxubGV0IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID9tYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICgpID1cbiAgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gP21heV9yZXR1cm5faW1tZWRpYXRlbHkgKHQgKCkpXG47O1xuXG5sZXQgeWllbGRfZXZlcnkgfm4gPVxuICBsZXQgeWllbGRfZXZlcnkgPSBTdGFnZWQudW5zdGFnZSAoeWllbGRfZXZlcnkgfm4pIGluXG4gIGxldCB0ID0gdCAoKSBpblxuICBzdGFnZSAoZnVuICgpIC0+IHlpZWxkX2V2ZXJ5IHQpXG47O1xuXG5sZXQgbnVtX2pvYnNfcnVuICgpID0gbnVtX2pvYnNfcnVuICh0ICgpKVxubGV0IG51bV9wZW5kaW5nX2pvYnMgKCkgPSBudW1fcGVuZGluZ19qb2JzICh0ICgpKVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluID0gcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpblxuICBsZXQgbGFzdF9jeWNsZV9udW1fam9icyAoKSA9IGxhc3RfY3ljbGVfbnVtX2pvYnMgKHQgKCkpXG4gIGxldCBydW5fZXZlcnlfY3ljbGVfc3RhcnQgZiA9IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCAodCAoKSkgfmZcbiAgbGV0IHJ1bl9ldmVyeV9jeWNsZV9lbmQgZiA9IHJ1bl9ldmVyeV9jeWNsZV9lbmQgKHQgKCkpIH5mXG4gIGxldCBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayB+ZiA9IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rICh0ICgpKSB+ZlxuICBsZXQgYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rIH5mID0gYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rICh0ICgpKSB+ZlxuXG4gIGxldCByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gaGFuZGxlID1cbiAgICByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gKHQgKCkpIGhhbmRsZVxuICA7O1xuXG4gIGxldCByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuIGhhbmRsZSA9XG4gICAgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biAodCAoKSkgaGFuZGxlXG4gIDs7XG5cbiAgbGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQgZiA9XG4gICAgd2l0aF9leGVjdXRpb25fY29udGV4dCAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgfmZcbiAgOztcblxuICBsZXQgd2l0aF9leGVjdXRpb25fY29udGV4dDEgZXhlY3V0aW9uX2NvbnRleHQgfmYgeCA9XG4gICAgd2l0aF9leGVjdXRpb25fY29udGV4dDEgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IH5mIHhcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IFNjaGVkdWxlclxuIiwiKCoqIFNjaGVkdWxlIGpvYnMgdG8gcnVuIGF0IGEgdGltZSBpbiB0aGUgZnV0dXJlLlxuXG4gICAgVGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gdXNlcyBhIGhlYXAgb2YgZXZlbnRzLCBvbmUgZm9yIGVhY2ggam9iIHRoYXQgbmVlZHMgdG9cbiAgICBydW4gaW4gdGhlIGZ1dHVyZS4gIFRoZSBBc3luYyBzY2hlZHVsZXIgaXMgcmVzcG9uc2libGUgZm9yIHdha2luZyB1cCBhdCB0aGUgcmlnaHQgdGltZVxuICAgIHRvIHJ1biB0aGUgam9icy4gKilcblxub3BlbiBDb3JlXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIE9yX3RpbWVvdXQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBbIGBSZXN1bHQgb2YgJ2FcbiAgICB8IGBUaW1lb3V0XG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENsb2NrID0gc2lnXG4gIG1vZHVsZSBPcl90aW1lb3V0ID0gT3JfdGltZW91dFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgbW9kdWxlIFNwYW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgIGVuZFxuXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gICgqKiBbcnVuX2F0IHRpbWUgZiBhXSBydW5zIFtmIGFdIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgW3RpbWVdLiAgSWYgW3RpbWVdIGlzIGluIHRoZVxuICAgICAgcGFzdCwgdGhlbiBbcnVuX2F0XSB3aWxsIGltbWVkaWF0ZWx5IHNjaGVkdWxlIGEgam9iIFt0XSB0aGF0IHdpbGwgcnVuIFtmIGFdLiAgSW4gbm9cbiAgICAgIHNpdHVhdGlvbiB3aWxsIFtydW5fYXRdIGFjdHVhbGx5IGNhbGwgW2ZdIGl0c2VsZi4gIFRoZSBjYWxsIHRvIFtmXSB3aWxsIGFsd2F5cyBiZSBpblxuICAgICAgYW5vdGhlciBqb2IuICopXG4gIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiogW3J1bl9hZnRlcl0gaXMgbGlrZSBbcnVuX2F0XSwgZXhjZXB0IHRoYXQgb25lIHNwZWNpZmllcyBhIHRpbWUgc3BhbiByYXRoZXIgdGhhbiBhblxuICAgICAgYWJzb2x1dGUgdGltZS4gKilcbiAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCoqIFthdCB0aW1lXSByZXR1cm5zIGEgZGVmZXJyZWQgW2RdIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBhcyBzb29uIGFzIHBvc3NpYmxlXG4gICAgICBhZnRlciBbdGltZV0uICopXG4gIHZhbCBhdCA6IFRpbWUudCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW2FmdGVyXSBpcyBsaWtlIFthdF0sIGV4Y2VwdCB0aGF0IG9uZSBzcGVjaWZpZXMgYSB0aW1lIHNwYW4gcmF0aGVyIHRoYW4gYW4gYWJzb2x1dGVcbiAgICAgIHRpbWUuICopXG4gIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbd2l0aF90aW1lb3V0IHNwYW4gZF0gcmV0dXJucyBhIGRlZmVycmVkIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBhZnRlciBlaXRoZXJcbiAgICAgIFtzcGFuXSBlbGFwc2VzIG9yIFtkXSBpcyBkZXRlcm1pbmVkLCByZXR1cm5pbmcgZWl0aGVyIFtgVGltZW91dF0gb3IgW2BSZXN1bHRdXG4gICAgICBkZXBlbmRpbmcgb24gd2hpY2ggb25lIHN1Y2NlZWRlZCBmaXJzdC4gIEF0IHRoZSB0aW1lIHRoZSByZXR1cm5lZCBkZWZlcnJlZCBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkLCBib3RoIHRoaW5ncyBtYXkgaGF2ZSBoYXBwZW5lZCwgaW4gd2hpY2ggY2FzZSBbYFJlc3VsdF0gaXMgZ2l2ZW5cbiAgICAgIHByZWZlcmVuY2UuICopXG4gIHZhbCB3aXRoX3RpbWVvdXQgOiBUaW1lLlNwYW4udCAtPiAnYSBEZWZlcnJlZC50IC0+ICdhIE9yX3RpbWVvdXQudCBEZWZlcnJlZC50XG5cbiAgKCoqIEV2ZW50cyBwcm92aWRlIHZhcmlhbnRzIG9mIFtydW5fYXRdIGFuZCBbcnVuX2FmdGVyXSB3aXRoIHRoZSBhYmlsaXR5IHRvIGFib3J0IG9yXG4gICAgICByZXNjaGVkdWxlIGFuIGV2ZW50IHRoYXQgaGFzbid0IHlldCBoYXBwZW5lZC4gIE9uY2UgYW4gZXZlbnQgaGFwcGVucyBvciBpcyBhYm9ydGVkLFxuICAgICAgQXN5bmMgZG9lc24ndCB1c2UgYW55IHNwYWNlIGZvciB0cmFja2luZyBpdC4gKilcbiAgbW9kdWxlIEV2ZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdoKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIHNjaGVkdWxlZF9hdCA6IChfLCBfKSB0IC0+IFRpbWUudFxuXG4gICAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgKCoqIElmIFtzdGF0dXNdIHJldHVybnMgW1NjaGVkdWxlZF9hdCB0aW1lXSwgaXQgaXMgcG9zc2libGUgdGhhdCBbdGltZSA8IFRpbWUubm93ICgpXVxuICAgICAgICBpZiBBc3luYydzIHNjaGVkdWxlciBoYXNuJ3QgeWV0IGdvdHRlbiB0aGUgY2hhbmNlIHRvIHVwZGF0ZSBpdHMgY2xvY2ssIGUuZy4sIGR1ZVxuICAgICAgICB0byB1c2VyIGpvYnMgcnVubmluZy4gKilcbiAgICB2YWwgc3RhdHVzIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBTdGF0dXMudFxuXG4gICAgKCoqIExldCBbdCA9IHJ1bl9hdCB0aW1lIGYgel0uICBBdCBbdGltZV0sIHRoaXMgcnVucyBbZiB6XSBhbmQgdHJhbnNpdGlvbnMgW3N0YXR1cyB0XVxuICAgICAgICB0byBbSGFwcGVuZWQgaF0sIHdoZXJlIFtoXSBpcyByZXN1bHQgb2YgW2Ygel0uXG5cbiAgICAgICAgTW9yZSBwcmVjaXNlbHksIGF0IFt0aW1lXSwgcHJvdmlkZWQgW2Fib3J0IHQgYV0gaGFzIG5vdCBwcmV2aW91c2x5IGJlZW4gY2FsbGVkLFxuICAgICAgICB0aGlzIHdpbGwgY2FsbCBbZiB6XSwgd2l0aCB0aGUgZ3VhcmFudGVlIHRoYXQgW3N0YXR1cyB0ID0gU2NoZWR1bGVkX2F0IHRpbWVdLiAgSWZcbiAgICAgICAgW2Ygel0gcmV0dXJucyBbaF0gYW5kIGRpZCBub3QgY2FsbCBbYWJvcnQgdCBhXSwgdGhlbiBbc3RhdHVzIHRdIGJlY29tZXMgW0hhcHBlbmVkXG4gICAgICAgIGhdLiAgSWYgW2Ygel0gY2FsbHMgW2Fib3J0IHQgYV0sIHRoZW4gdGhlIHJlc3VsdCBvZiBbZl0gaXMgaWdub3JlZCwgYW5kIFtzdGF0dXMgdF1cbiAgICAgICAgaXMgW0Fib3J0ZWQgYV0uXG5cbiAgICAgICAgSWYgW2Ygel0gcmFpc2VzLCB0aGVuIFtzdGF0dXMgdF0gZG9lcyBub3QgdHJhbnNpdGlvbiBhbmQgcmVtYWlucyBbU2NoZWR1bGVkX2F0XG4gICAgICAgIHRpbWVdLCBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBzZW50IHRvIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuIFtydW5fYXRdIHdhc1xuICAgICAgICBjYWxsZWQuICopXG4gICAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuXG4gICAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG5cbiAgICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuQWJvcnRfcmVzdWx0XG5cbiAgICAoKiogW2Fib3J0IHRdIGNoYW5nZXMgW3N0YXR1cyB0XSB0byBbQWJvcnRlZF0gYW5kIHJldHVybnMgW09rXSwgdW5sZXNzIFt0XVxuICAgICAgICBwcmV2aW91c2x5IGhhcHBlbmVkIG9yIHdhcyBwcmV2aW91c2x5IGFib3J0ZWQuICopXG4gICAgdmFsIGFib3J0IDogKCdhLCAnaCkgdCAtPiAnYSAtPiAoJ2EsICdoKSBBYm9ydF9yZXN1bHQudFxuXG4gICAgKCoqIFthYm9ydF9leG4gdCBhXSByZXR1cm5zIFt1bml0XSBpZiBbYWJvcnQgdCBhID0gYE9rXSwgYW5kIG90aGVyd2lzZSByYWlzZXMuICopXG4gICAgdmFsIGFib3J0X2V4biA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgKCoqIFthYm9ydF9pZl9wb3NzaWJsZSB0IGEgPSBpZ25vcmUgKGFib3J0IHQgYSldLiAqKVxuICAgIHZhbCBhYm9ydF9pZl9wb3NzaWJsZSA6ICgnYSwgXykgdCAtPiAnYSAtPiB1bml0XG5cbiAgICBtb2R1bGUgRmlyZWQgPSBUaW1lX3NvdXJjZS5FdmVudC5GaXJlZFxuXG4gICAgdmFsIGZpcmVkIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBGaXJlZC50IERlZmVycmVkLnRcblxuICAgIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LlJlc2NoZWR1bGVfcmVzdWx0XG5cbiAgICAoKiogW3Jlc2NoZWR1bGVfYXQgdF0gYW5kIFtyZXNjaGVkdWxlX2FmdGVyIHRdIGNoYW5nZSB0aGUgdGltZSB0aGF0IFt0XSB3aWxsIGZpcmUsIGlmXG4gICAgICAgIHBvc3NpYmxlLCBhbmQgaWYgbm90LCBnaXZlIGEgcmVhc29uIHdoeS4gIExpa2UgW3J1bl9hdF0sIGlmIHRoZSByZXF1ZXN0ZWQgdGltZSBpc1xuICAgICAgICBpbiB0aGUgcGFzdCwgdGhlIGV2ZW50IHdpbGwgYmUgc2NoZWR1bGVkIHRvIHJ1biBpbW1lZGlhdGVseS4gIElmIFtyZXNjaGVkdWxlX2F0IHRcbiAgICAgICAgdGltZSA9IE9rXSwgdGhlbiBzdWJzZXF1ZW50bHkgW3NjaGVkdWxlZF9hdCB0ID0gdGltZV0uICAqKVxuICAgIHZhbCByZXNjaGVkdWxlX2F0IDogKCdhLCAnaCkgdCAtPiBUaW1lLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYWZ0ZXIgOiAoJ2EsICdoKSB0IC0+IFRpbWUuU3Bhbi50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcblxuICAgICgqKiBbYXQgdGltZV0gICAgaXMgW3J1bl9hdCAgICB0aW1lIGlnbm9yZSAoKV0uXG4gICAgICAgIFthZnRlciB0aW1lXSBpcyBbcnVuX2FmdGVyIHRpbWUgaWdub3JlICgpXS5cblxuICAgICAgICBZb3Ugc2hvdWxkIGdlbmVyYWxseSBwcmVmZXIgdG8gdXNlIHRoZSBbcnVuXypdIGZ1bmN0aW9ucywgd2hpY2ggYWxsb3cgeW91IHRvXG4gICAgICAgIHN5bmNocm9ub3VzbHkgdXBkYXRlIHN0YXRlIHZpYSBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gd2hlbiB0aGUgZXZlbnRcbiAgICAgICAgdHJhbnNpdGlvbnMgdG8gW0hhcHBlbmVkXS4gIFRoYXQgaXMsIHRoZXJlIGlzIGFuIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW46XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IHJ1bl9hdCB0aW1lIGYgKCkgXX1cblxuICAgICAgICBhbmQ6XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IGF0IHRpbWUgaW5cbiAgICAgICAgICBmaXJlZCB0XG4gICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBmICgpXG4gICAgICAgICAgfCBBYm9ydGVkICgpIC0+ICgpIF19XG5cbiAgICAgICAgV2l0aCBbcnVuX2F0XSwgaWYgW3N0YXR1cyB0ID0gSGFwcGVuZWRdLCBvbmUga25vd3MgdGhhdCBbZl0gaGFzIHJ1bi4gIFdpdGggW2F0XVxuICAgICAgICBhbmQgW2ZpcmVkXSwgb25lIGRvZXMgbm90IGtub3cgd2hldGhlciBbZl0gaGFzIHlldCBydW47IGl0IG1heSBzdGlsbCBiZSBzY2hlZHVsZWRcbiAgICAgICAgdG8gcnVuLiAgVGh1cywgd2l0aCBbYXRdIGFuZCBbZmlyZWRdLCBpdCBpcyBlYXN5IHRvIGludHJvZHVjZSBhIHJhY2UuICBGb3JcbiAgICAgICAgZXhhbXBsZSwgY29uc2lkZXIgdGhlc2UgdHdvIGNvZGUgc25pcHBldHM6XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IEV2ZW50LmFmdGVyIChzZWMgMi4pIGluXG4gICAgICAgICAgdXBvbiAoRXZlbnQuZmlyZWQgdCkgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFib3J0ZWQgKCkgLT4gKClcbiAgICAgICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiVGltZXIgZmlyZWRcIik7XG4gICAgICAgICAgdXBvbiBkZWZlcnJlZF9ldmVudCAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBFdmVudC5hYm9ydCB0ICgpIHdpdGhcbiAgICAgICAgICAgIHwgT2sgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWRcIlxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIik7IF19XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IEV2ZW50LnJ1bl9hZnRlciAoc2VjIDIuKSBwcmludGYgXCJUaW1lciBmaXJlZFwiIGluXG4gICAgICAgICAgdXBvbiBkZWZlcnJlZF9ldmVudCAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBFdmVudC5hYm9ydCB0ICgpIHdpdGhcbiAgICAgICAgICAgIHwgT2sgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWRcIlxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIik7IF19XG5cbiAgICAgICAgSW4gYm90aCBzbmlwcGV0cywgaWYgW0V2ZW50LmFib3J0XSByZXR1cm5zIFtPa10sIFwiVGltZXIgZmlyZWRcIiBpcyBuZXZlciBwcmludGVkLlxuICAgICAgICBIb3dldmVyLCB0aGUgZmlyc3Qgc25pcHBldCBtaWdodCBwcmludCBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIgYW5kIHRoZW5cbiAgICAgICAgXCJUaW1lciBmaXJlZFwiLiAgVGhpcyBjb25mdXNlZCBvcmRlcmluZyBjYW5ub3QgaGFwcGVuIHdpdGggW0V2ZW50LnJ1bl9hZnRlcl0uICopXG4gICAgdmFsIGF0IDogVGltZS50IC0+IChfLCB1bml0KSB0XG5cbiAgICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoXywgdW5pdCkgdFxuICBlbmRcblxuICAoKiogW2F0X3ZhcnlpbmdfaW50ZXJ2YWxzIGYgP3N0b3BdIHJldHVybnMgYSBzdHJlYW0gd2hvc2UgbmV4dCBlbGVtZW50IGJlY29tZXNcbiAgICAgIGRldGVybWluZWQgYnkgY2FsbGluZyBbZiAoKV0gYW5kIHdhaXRpbmcgZm9yIHRoYXQgYW1vdW50IG9mIHRpbWUsIGFuZCB0aGVuIGxvb3BpbmdcbiAgICAgIHRvIGRldGVybWluZSBzdWJzZXF1ZW50IGVsZW1lbnRzLiAgVGhlIHN0cmVhbSB3aWxsIGVuZCBhZnRlciBbc3RvcF0gYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZC4gKilcbiAgdmFsIGF0X3ZhcnlpbmdfaW50ZXJ2YWxzXG4gICAgOiAgP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gKHVuaXQgLT4gVGltZS5TcGFuLnQpXG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuXG4gICgqKiBbYXRfaW50ZXJ2YWxzIGludGVydmFsID9zdGFydCA/c3RvcF0gcmV0dXJucyBhIHN0cmVhbSB3aG9zZSBlbGVtZW50cyB3aWxsIGJlY29tZVxuICAgICAgZGV0ZXJtaW5lZCBhdCBub25uZWdhdGl2ZSBpbnRlZ2VyIG11bHRpcGxlcyBvZiBbaW50ZXJ2YWxdIGFmdGVyIHRoZSBbc3RhcnRdIHRpbWUsXG4gICAgICB1bnRpbCBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkOlxuXG4gICAgICB7dlxuICAgICAgICBzdGFydCArIDAgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDEgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDIgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDMgKiBpbnRlcnZhbFxuICAgICAgICAuLi5cbiAgICAgIHZ9XG5cbiAgICAgIE5vdGUgdGhhdCBvbmx5IGVsZW1lbnRzIHRoYXQgYXJlIHN0cmljdGx5IGluIHRoZSBmdXR1cmUgZXZlciBiZWNvbWUgZGV0ZXJtaW5lZC5cbiAgICAgIEluIHBhcnRpY3VsYXIsIGlmIFtzdGFydF0gaXMgbm90IGluIHRoZSBmdXR1cmUsIG9yIFtzdGFydF0gaXMgbm90IHByb3ZpZGVkLFxuICAgICAgdGhlbiB0aGVyZSB3aWxsIGJlIG5vIGVsZW1lbnQgYmVmb3JlIHRoZSBbaW50ZXJ2YWxdIGhhcyBwYXNzZWQuXG5cbiAgICAgIElmIHRoZSBpbnRlcnZhbCBpcyB0b28gc21hbGwgb3IgdGhlIENQVSBpcyB0b28gbG9hZGVkLCBbYXRfaW50ZXJ2YWxzXSB3aWxsIHNraXBcbiAgICAgIHVudGlsIHRoZSBuZXh0IHVwY29taW5nIG11bHRpcGxlIG9mIFtpbnRlcnZhbF0gYWZ0ZXIgW3N0YXJ0XS4gKilcbiAgdmFsIGF0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnRcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcblxuICAoKiogW2V2ZXJ5JyA/c3RhcnQgP3N0b3Agc3BhbiBmXSBydW5zIFtmICgpXSBldmVyeSBbc3Bhbl0gYW1vdW50IG9mIHRpbWUgc3RhcnRpbmcgd2hlblxuICAgICAgW3N0YXJ0XSBiZWNvbWVzIGRldGVybWluZWQgYW5kIHN0b3BwaW5nIHdoZW4gW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZC4gIFtldmVyeSddXG4gICAgICB3YWl0cyB1bnRpbCB0aGUgb3V0Y29tZSBvZiBbZiAoKV0gYmVjb21lcyBkZXRlcm1pbmVkIGJlZm9yZSB3YWl0aW5nIGZvciB0aGUgbmV4dFxuICAgICAgW3NwYW5dLlxuXG4gICAgICBJdCBpcyBndWFyYW50ZWVkIHRoYXQgaWYgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZCwgZXZlbiBkdXJpbmcgZXZhbHVhdGlvbiBvZiBbZl0sXG4gICAgICB0aGVuIFtmXSB3aWxsIG5vdCBiZSBjYWxsZWQgYWdhaW4gYnkgYSBzdWJzZXF1ZW50IGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC5cblxuICAgICAgSXQgaXMgYW4gZXJyb3IgZm9yIFtzcGFuXSB0byBiZSBub25wb3NpdGl2ZS5cblxuICAgICAgW2NvbnRpbnVlX29uX2Vycm9yXSBjb250cm9scyB3aGF0IHNob3VsZCBoYXBwZW4gaWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24uXG4gICAgICBXaXRoIFt+Y29udGludWVfb25fZXJyb3I6ZmFsc2VdLCBpdGVyYXRpb24gb25seSBjb250aW51ZXMgaWYgW2ZdIHN1Y2Nlc3NmdWxseVxuICAgICAgcmV0dXJucyBhIGRlZmVycmVkIGFuZCB0aGF0IGRlZmVycmVkIGlzIGRldGVybWluZWQuXG4gICAgICBXaXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0sIGl0ZXJhdGlvbiBhbHNvIGNvbnRpbnVlcyBpZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbi5cbiAgICAgIElmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uIGFzeW5jaHJvbm91c2x5LCB0aGlzIG1heSBjYXVzZSB1cyB0byBwcm9jZWVkIHdpdGggdGhlXG4gICAgICBuZXh0IGl0ZXJhdGlvbiB3aGlsZSB0aGUgcHJldmlvdXMgY2FsbCB0byBbZl0gaXMgc3RpbGwgcnVubmluZy5cblxuICAgICAgRXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGFyZSBhbHdheXMgc2VudCB0byB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlbiBbZXZlcnknXSB3YXNcbiAgICAgIGNhbGxlZCwgZXZlbiB3aXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0uXG5cbiAgICAgIElmIFtmaW5pc2hlZF0gaXMgc3VwcGxpZWQsIFtldmVyeSddIHdpbGwgZmlsbCBpdCBvbmNlIGFsbCBvZiB0aGUgZm9sbG93aW5nIGJlY29tZVxuICAgICAgZGV0ZXJtaW5lZDogW3N0YXJ0XSwgW3N0b3BdLCBhbmQgdGhlIG91dGNvbWUgb2YgdGhlIGZpbmFsIGNhbGwgdG8gW2ZdLiAqKVxuICB2YWwgZXZlcnknXG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gP2ZpbmlzaGVkOnVuaXQgSXZhci50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZXZlcnkgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gaXNcbiAgICAgIFtldmVyeScgP3N0YXJ0ID9zdG9wIHNwYW4gKGZ1biAoKSAtPiBmICgpOyByZXR1cm4gKCkpXS4gKilcbiAgdmFsIGV2ZXJ5XG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogW3J1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCBzcGFuIGZdIHJ1bnMgW2YoKV0gYXQgaW5jcmVtZW50cyBvZiBbc3RhcnQgKyBpICpcbiAgICAgIHNwYW5dIGZvciBub25uZWdhdGl2ZSBpbnRlZ2VycyBbaV0sIHVudGlsIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQuXG4gICAgICBJZiB0aGUgcmVzdWx0IG9mIFtmXSBpcyBub3QgZGV0ZXJtaW5lZCBmYXN0IGVub3VnaCB0aGVuIHRoZSBuZXh0IGludGVydmFsKHMpXG4gICAgICBhcmUgc2tpcHBlZCBzbyB0aGF0IHRoZXJlIGFyZSBuZXZlciBtdWx0aXBsZSBjb25jdXJyZW50IGludm9jYXRpb25zIG9mIFtmXSBpblxuICAgICAgZmxpZ2h0LlxuXG4gICAgICBFeGNlcHRpb25zIHJhaXNlZCBieSBbZl0gYXJlIGFsd2F5cyBzZW50IHRvIG1vbml0b3IgaW4gZWZmZWN0IHdoZW5cbiAgICAgIFtydW5fYXRfaW50ZXJ2YWxzJ10gd2FzIGNhbGxlZCwgZXZlbiB3aXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0uICopXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzJ1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW4gZl0gaXMgZXF1aXZhbGVudCB0bzpcblxuICAgICAge1tcbiAgICAgICAgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuXG4gICAgICAgICAgKGZ1biAoKSAtPiBmICgpOyByZXR1cm4gKCkpIF19ICopXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZHVyYXRpb25fb2YgZl0gaW52b2tlcyBbZiAoKV0gYW5kIG1lYXN1cmVzIGhvdyBsb25nIGl0IHRha2VzIGZyb20gdGhlIGludm9jYXRpb25cbiAgICAgIHRvIGFmdGVyIHRoZSBkZWZlcnJlZCBpcyBkZXRlcm1pbmVkLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIG1lYXN1cmVtZW50IGlzIG5vdCBleGFjdDsgYmVjYXVzZSBpdCBpbnZvbHZlcyBhbiBhZGRpdGlvbmFsIG1hcCBvbiB0aGVcbiAgICAgIGRlZmVycmVkLCB0aGUgdGltaW5nIGFsc28gaW5jbHVkZXMgdGhlIGR1cmF0aW9uIG9mIGpvYnMgaW4gdGhlIGpvYiBxdWV1ZSB3aGVuIFtmICgpXVxuICAgICAgaXMgZGV0ZXJtaW5lZC4gKilcbiAgdmFsIGR1cmF0aW9uX29mIDogKHVuaXQgLT4gJ2EgRGVmZXJyZWQudCkgLT4gKCdhICogVGltZS5TcGFuLnQpIERlZmVycmVkLnRcbmVuZFxuXG4oKiogW0Nsb2NrX2RlcHJlY2F0ZWRdIGlzIHVzZWQgaW4gW1JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2VdIHRvIGNyZWF0ZSBhIGNsb2NrXG4gICAgbW9kdWxlIGluIHdoaWNoIGFsbCBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQuICopXG5tb2R1bGUgdHlwZSBDbG9ja19kZXByZWNhdGVkID0gc2lnXG4gIG1vZHVsZSBPcl90aW1lb3V0ID0gT3JfdGltZW91dFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgbW9kdWxlIFNwYW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgIGVuZFxuXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGF0IDogVGltZS50IC0+IHVuaXQgRGVmZXJyZWQudCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgd2l0aF90aW1lb3V0IDogVGltZS5TcGFuLnQgLT4gJ2EgRGVmZXJyZWQudCAtPiAnYSBPcl90aW1lb3V0LnQgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgbW9kdWxlIEV2ZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdoKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB2YWwgc3RhdHVzIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBTdGF0dXMudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuQWJvcnRfcmVzdWx0XG5cbiAgICB2YWwgYWJvcnQgOiAoJ2EsICdoKSB0IC0+ICdhIC0+ICgnYSwgJ2gpIEFib3J0X3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2V4biA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gdW5pdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhYm9ydF9pZl9wb3NzaWJsZSA6ICgnYSwgXykgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuUmVzY2hlZHVsZV9yZXN1bHRcblxuICAgIHZhbCByZXNjaGVkdWxlX2F0IDogKCdhLCAnaCkgdCAtPiBUaW1lLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGF0IDogVGltZS50IC0+IChfLCB1bml0KSB0IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IChfLCB1bml0KSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuICBlbmRcblxuICB2YWwgYXRfdmFyeWluZ19pbnRlcnZhbHNcbiAgICA6ICA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiAodW5pdCAtPiBUaW1lLlNwYW4udClcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudFxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGR1cmF0aW9uX29mIDogKHVuaXQgLT4gJ2EgRGVmZXJyZWQudCkgLT4gKCdhICogVGltZS5TcGFuLnQpIERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuZW5kXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9jaykgOiBDbG9ja19kZXByZWNhdGVkID0gQ1xuXG4gIG1vZHVsZSBfIChDIDogQ2xvY2tfZGVwcmVjYXRlZCkgOiBDbG9jayA9IENcbmVuZCA6XG5zaWcgZW5kKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENsb2NrID0gQ2xvY2tfaW50Zi5DbG9ja1xubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IENsb2NrX2ludGYuQ2xvY2tfZGVwcmVjYXRlZFxuXG5tb2R1bGUgT3JfdGltZW91dCA9IENsb2NrX2ludGYuT3JfdGltZW91dFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcblxubGV0IHRpbWVfc291cmNlICgpID0gKFNjaGVkdWxlci50ICgpKS50aW1lX3NvdXJjZSB8PiBUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91c1xubGV0IGFmdGVyIHNwYW4gPSBUaW1lX3NvdXJjZS5hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbmxldCBhdCB0aW1lID0gVGltZV9zb3VyY2UuYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCBjb21wdXRlX3NwYW4gPVxuICBUaW1lX3NvdXJjZS5hdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCAodGltZV9zb3VyY2UgKCkpIGNvbXB1dGVfc3BhblxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgaW50ZXJ2YWwgPVxuICBUaW1lX3NvdXJjZS5hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgaW50ZXJ2YWxcbjs7XG5cbmxldCBldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgc3BhbiBmID1cbiAgVGltZV9zb3VyY2UuZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgcnVuX2FmdGVyIHNwYW4gZiBhID0gVGltZV9zb3VyY2UucnVuX2FmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmIGFcbmxldCBydW5fYXQgdGltZSBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgYVxuXG5sZXQgcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbCBmXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBpbnRlcnZhbCBmID1cbiAgVGltZV9zb3VyY2UucnVuX2F0X2ludGVydmFscydcbiAgICA/c3RhcnRcbiAgICA/c3RvcFxuICAgID9jb250aW51ZV9vbl9lcnJvclxuICAgICh0aW1lX3NvdXJjZSAoKSlcbiAgICBpbnRlcnZhbFxuICAgIGZcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgc3BhbiBkID0gVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0ICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBkXG5sZXQgZHVyYXRpb25fb2YgZiA9IFRpbWVfc291cmNlLmR1cmF0aW9uX29mICh0aW1lX3NvdXJjZSAoKSkgZlxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX3NvdXJjZS5FdmVudFxuXG4gIGxldCBhZnRlciBzcGFuID0gYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuXG4gIGxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxuICBsZXQgYXQgdGltZSA9IGF0ICh0aW1lX3NvdXJjZSAoKSkgdGltZVxuICBsZXQgcnVuX2F0IHRpbWUgZiB6ID0gcnVuX2F0ICh0aW1lX3NvdXJjZSAoKSkgdGltZSBmIHpcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIGkgYiA9XG4gICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICAgIHRoZW4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICBlbHNlIGYgaSBiIHQuKGkpID4+PiBmdW4gYiAtPiBsb29wIChpICsgMSkgYlxuICAgIGluXG4gICAgbG9vcCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgbGV0JW1hcCBicyA9IGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT4gZiBpIGEgPj58IGZ1biBiIC0+IGIgOjogYnMpIGluXG4gIEFycmF5Lm9mX2xpc3QgKENvcmUuTGlzdC5yZXYgYnMpXG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbF91bml0IChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG47O1xuXG5sZXQgbWFwaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsIChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuOztcblxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCBib29scyA9IG1hcGkgdCA/aG93IH5mIGluXG4gIEFycmF5Lm9mX2xpc3RfcmV2XG4gICAgKEFycmF5LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgdCA/aG93IH5mID4+fCBBcnJheS5maWx0ZXJfb3B0XG5cbmxldCBjb25jYXRfbWFwaSA/aG93IHQgfmYgPVxuICBsZXQlbWFwIHQgPSBtYXBpIHQgP2hvdyB+ZiBpblxuICBBcnJheS5jb25jYXQgKEFycmF5LnRvX2xpc3QgdClcbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgIHRoZW4gcmV0dXJuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoJWJpbmQgZiBpIHQuKGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgYXV4IDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciA/aG93IHQgfmYgPSBpdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciA/aG93IHQgfmYgPSBmaWx0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPSBjb25jYXRfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgP2hvdyBuIH5mID0gbWFwID9ob3cgKEFycmF5LmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICBpblxuICAgIGxvb3AgdCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgYiA6OiBicylcbiAgPj58IExpc3QucmV2XG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgP2hvdyB+ZiBpblxuICBMaXN0LnJldiAoTGlzdC5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSA/aG93IHQgfmYgPSBtYXBpIHQgP2hvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG5sZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyID9ob3cgdCB+ZiA9IGl0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gZmlsdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCA/aG93IG4gfmYgPSBtYXAgP2hvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxuXG50eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbmxldCBjaGFuZ2UgdCBrIH5mID1cbiAgbGV0JW1hcCBvcHQgPSBmIChNYXAuZmluZCB0IGspIGluXG4gIE1hcC5jaGFuZ2UgdCBrIH5mOihmdW4gXyAtPiBvcHQpXG47O1xuXG5sZXQgdXBkYXRlIHQgayB+ZiA9XG4gIGxldCVtYXAgZGF0YSA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLnNldCB0IH5rZXk6ayB+ZGF0YVxuOztcblxubGV0IGl0ZXJfa2V5cyA/aG93IHQgfmYgPSBMaXN0Lml0ZXIgP2hvdyAoTWFwLmtleXMgdCkgfmZcbmxldCBpdGVyID9ob3cgdCB+ZiA9IExpc3QuaXRlciA/aG93IChNYXAuZGF0YSB0KSB+ZlxubGV0IGl0ZXJpID9ob3cgdCB+ZiA9IExpc3QuaXRlciA/aG93IChNYXAudG9fYWxpc3QgdCkgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEpXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbGV0IGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyID1cbiAgICBNYXAuZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBhbGlzdClcbiAgaW5cbiAgTGlzdC5mb2xkIGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIH5pbml0IH5mOihmdW4gYWMgKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhIGFjKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID1cbiAgICB7IGtleSA6ICdhXG4gICAgOyBkYXRhIDogJ2JcbiAgICA7IG11dGFibGUgcmVzdWx0IDogJ2Mgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5lbmRcblxubGV0IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZiA9XG4gIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgdCBpblxuICBsZXQgc2VxdWVuY2UgPSBNYXAudG9fc2VxdWVuY2Ugfm9yZGVyOmBJbmNyZWFzaW5nX2tleSB0IGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDpCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy5lbXB0eVxuICAgICAgfmY6KGZ1biBzIChrZXksIGRhdGEpIH5rIC0+XG4gICAgICAgIHVwb24gKGYgfmtleSB+ZGF0YSkgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGsgc1xuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIEJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmFkZF9leG5cbiAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBrIHMpKVxuICAgICAgfmZpbmlzaDooZnVuIHggLT5cbiAgICAgICAgSXZhci5maWxsXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAoQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZSB4KSkpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZlxuICB8IGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8gLT5cbiAgICBsZXQgam9icyA9IHJlZiBbXSBpblxuICAgIGxldCBqb2JfbWFwID1cbiAgICAgIE1hcC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIGxldCBqb2IgPSB7IEpvYi5rZXk7IGRhdGE7IHJlc3VsdCA9IE5vbmUgfSBpblxuICAgICAgICBqb2JzIDo9IGpvYiA6OiAham9icztcbiAgICAgICAgam9iKVxuICAgIGluXG4gICAgbGV0JW1hcCAoKSA9XG4gICAgICBMaXN0Lml0ZXIgfmhvdyAoQmFzZS5MaXN0LnJldiAham9icykgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgeyBKb2Iua2V5OyBkYXRhOyByZXN1bHQgPSBfIH0gYXMgam9iIC0+XG4gICAgICAgICAgbGV0JW1hcCB4ID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgam9iLnJlc3VsdCA8LSB4KVxuICAgIGluXG4gICAgTWFwLmZpbHRlcl9tYXAgam9iX21hcCB+ZjpKb2IucmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZmlsdGVyX2tleXMgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYga2V5IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmlsdGVyID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYgZGF0YSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYgfmtleSB+ZGF0YSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IG1hcGkgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgeiA9IGYgfmtleSB+ZGF0YSBpblxuICAgIFNvbWUgeilcbjs7XG5cbmxldCBtYXAgP2hvdyB0IH5mID0gbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgbWVyZ2UgP2hvdyB0MSB0MiB+ZiA9XG4gIGZpbHRlcl9tYXBcbiAgICA/aG93XG4gICAgKE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXkgeiAtPiBTb21lIChmdW4gKCkgLT4gZiB+a2V5IHopKSlcbiAgICB+ZjooZnVuIHRodW5rIC0+IHRodW5rICgpKVxuOztcblxubGV0IGFsbCB0ID0gbWFwIHQgfmY6Rm4uaWRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgcmVyYWlzZSA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXhuIC0+IEV4bi5yZXJhaXNlIGV4biBcImNhdWdodCBleGNlcHRpb24gaW4gbWVtb2l6ZWQgZnVuY3Rpb25cIlxuOztcblxubGV0IGdlbmVyYWwgKHR5cGUgYSkgKGhhc2hhYmxlIDogKG1vZHVsZSBIYXNoYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gYSkpIGYgPVxuICBsZXQgbW9kdWxlIEhhc2hhYmxlID0gKHZhbCBoYXNoYWJsZSkgaW5cbiAgbGV0IGYgPVxuICAgIE1lbW8uZ2VuZXJhbCB+aGFzaGFibGU6SGFzaGFibGUuaGFzaGFibGUgKGZ1biBhIC0+XG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgIChmdW4gKCkgLT4gZiBhKSlcbiAgaW5cbiAgU3RhZ2VkLnN0YWdlIChmdW4gYSAtPiBmIGEgPj58IHJlcmFpc2UpXG47O1xuXG5sZXQgdW5pdCBmID1cbiAgbGV0IGYgPVxuICAgIE1lbW8udW5pdCAoZnVuICgpIC0+XG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgIGYpXG4gIGluXG4gIFN0YWdlZC5zdGFnZSAoZnVuICgpIC0+IGYgKCkgPj58IHJlcmFpc2UpXG47O1xuIiwib3BlbiBDb3JlXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgT3B0aW9uLnQgRGVmZXJyZWQudFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChTb21lIGEpXG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIERlZmVycmVkLmJpbmQgdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBTb21lIGEgLT4gZiBhXG4gICAgICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5yZXR1cm4gTm9uZSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IE9wdGlvbi5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnZXJyb3IpIHQgPSAoJ2EsICdlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIGxldCVtYXAgdDEgPSB0MVxuICBhbmQgdDIgPSB0MiBpblxuICBSZXN1bHQuY29tYmluZSB0MSB0MiB+b2sgfmVyclxuOztcblxuaW5jbHVkZSBNb25hZC5NYWtlMiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEZWZlcnJlZC5yZXR1cm4gKE9rIGEpXG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIERlZmVycmVkLmJpbmQgdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBPayBhIC0+IGYgYVxuICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gRGVmZXJyZWQucmV0dXJuIGVycm9yKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gUmVzdWx0Lm1hcCByIH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBmYWlsIHggPSBEZWZlcnJlZC5yZXR1cm4gKEVycm9yIHgpXG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5sZXQgbWFwX2Vycm9yIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gUmVzdWx0Lm1hcF9lcnJvciByIH5mKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIE1vbml0b3IgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoID0gTW9uaXRvci50cnlfd2l0aFxuZW5kXG5cbigqIENvcGllZCB0byBbZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxuaW5jbHVkZSAoRGVmZXJyZWRfcmVzdWx0IDogTW9uYWQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgRGVmZXJyZWRfcmVzdWx0LnQpXG5cbnR5cGUgJ2EgdCA9ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIERlZmVycmVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIGZcbiAgICAgICAgeFxuICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBmYWlsIGVycm9yID0gRGVmZXJyZWQucmV0dXJuIChSZXN1bHQuZmFpbCBlcnJvcilcbmxldCBva19leG4gdCA9IERlZmVycmVkLm1hcCB0IH5mOk9yX2Vycm9yLm9rX2V4blxubGV0IG9mX2V4biBleG4gPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pXG5sZXQgb2ZfZXhuX3Jlc3VsdCB0ID0gRGVmZXJyZWQubWFwIHQgfmY6T3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxubGV0IGVycm9yIG1zZyB2IHNleHBfb2YgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yIG1zZyB2IHNleHBfb2YpXG5sZXQgZXJyb3JfcyBzZXhwID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIG1zZylcbmxldCBlcnJvcmYgZm9ybWF0ID0ga3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHQgLT4gT3JfZXJyb3IudGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLnVuaW1wbGVtZW50ZWQgbXNnKVxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmZpbHRlcl9va19hdF9sZWFzdF9vbmVcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkIChsLCBbXSkgKGZ1biAobCwgZXJyb3JzKSAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGxldCBlcnJvcnMgPSBFcnJvci5vZl9saXN0IChMaXN0LnJldiBlcnJvcnMpIGluXG4gICAgICBEZWZlcnJlZC5yZXR1cm4gKGBGaW5pc2hlZCAoRXJyb3IgZXJyb3JzKSlcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBEZWZlcnJlZC5tYXAgKGYgaGQpIH5mOihmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGN1cnJlbnRfZXJyb3IgLT4gYFJlcGVhdCAodGwsIGN1cnJlbnRfZXJyb3IgOjogZXJyb3JzKVxuICAgICAgICB8IE9rIHJlc3VsdCAtPiBgRmluaXNoZWQgKE9rIHJlc3VsdCkpKVxuOztcblxubGV0IG9rX3VuaXQgPSByZXR1cm4gKClcblxubGV0IHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKE1vbml0b3IudHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6KGZ1bmN0aW9uXG4gICAgfCBFcnJvciBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4pXG4gICAgfCBPayBfIGFzIG9rIC0+IG9rKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAodHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6T3JfZXJyb3Iuam9pblxuOztcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IGZvbGRpIGxpc3QgfmluaXQ6YWNjIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gYWNjXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCViaW5kIGFjYyA9IGYgaSBhY2MgaGQgaW5cbiAgICAgICAgbG9vcCAoaSArIDEpIGFjYyB0bFxuICAgIGluXG4gICAgbG9vcCAwIGFjYyBsaXN0XG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxuICBsZXQgc2VxbWFwaSB0IH5mID1cbiAgICBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgICAgYiA6OiBicylcbiAgICA+PnwgTGlzdC5yZXZcbiAgOztcblxuICBsZXQgYWxsID0gYWxsXG4gIGxldCBhbGxfdW5pdCA9IGFsbF91bml0XG5cbiAgbGV0IGl0ZXJpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSB4IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIGZpbmRfbWFwIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciA/aG93IHQgfmYgPSBpdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciA/aG93IHQgfmYgPSBmaWx0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0ID9ob3cgbiB+ZiA9IG1hcCA/aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgcmVjIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbWF0Y2glYmluZCBmIHN0YXRlIHdpdGhcbiAgfCBgUmVwZWF0IHN0YXRlIC0+IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmXG4gIHwgYEZpbmlzaGVkIHN0YXRlIC0+IHJldHVybiBzdGF0ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxuXG4oKiBXZSBpbXBsZW1lbnQgYWxsIG9mIHRoZSBbUXVldWVdIG9wZXJhdGlvbnMgYnkgY29udmVydGluZyB0aGUgcXVldWUgdG8gYSBsaXN0IGFuZCB0aGVuXG4gICB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBbTGlzdF0gb3BlcmF0aW9uLiAgV2UgdXNlIGxpc3RzIHJhdGhlciB0aGFuIGFycmF5cyBiZWNhdXNlXG4gICBhcnJheXMgbG9uZ2VyIHRoYW4gYSBjZXJ0YWluIGxlbmd0aCBhcmUgYWxsb2NhdGVkIGluIHRoZSBtYWpvciBoZWFwLCB3aGljaCBjYW4gY2F1c2VcbiAgIHVubmVjZXNzYXJ5IHByb21vdGlvbiBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiAgQWxzbywgd2hlbiBvbmUgaXMgZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYW4gYXJyYXksIHRoZSBlbnRpcmUgYXJyYXkgbXVzdCBiZSBrZXB0IGFsaXZlLiAgV2hlbiBmb2xkaW5nIG9yXG4gICBpdGVyYXRpbmcgb3ZlciBhIGxpc3QsIG9ubHkgdGhlIHJlbWFpbmluZyB0YWlsIG9mIHRoZSBsaXN0IGlzIGtlcHQgYWxpdmUuICBTbywgdXNpbmdcbiAgIGFycmF5cyByYXRoZXIgdGhhbiBsaXN0cyB3b3VsZCBpbmNyZWFzZSB0aGUgbGl2ZS1zcGFjZSBuZWVkZWQgYnkgdGhlIHByb2dyYW0uICopXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID0gTGlzdC5mb2xkaSAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGFsbCB0ID0gTGlzdC5hbGwgKFF1ZXVlLnRvX2xpc3QgdCkgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBhbGxfdW5pdCB0ID0gTGlzdC5hbGxfdW5pdCAoUXVldWUudG9fbGlzdCB0KVxubGV0IGl0ZXIgP2hvdyB0IH5mID0gTGlzdC5pdGVyID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBpdGVyaSA/aG93IHQgfmYgPSBMaXN0Lml0ZXJpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBtYXAgP2hvdyB0IH5mID0gTGlzdC5tYXAgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IG1hcGkgP2hvdyB0IH5mID0gTGlzdC5tYXBpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBpbml0ID9ob3cgbiB+ZiA9IExpc3QuaW5pdCA/aG93IG4gfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gTGlzdC5maWx0ZXIgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID0gTGlzdC5maWx0ZXJpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcCA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID0gTGlzdC5maWx0ZXJfbWFwaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5cbmxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcCA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4geCAtPiBmIHggPj58IFF1ZXVlLnRvX2xpc3QpXG4gID4+fCBRdWV1ZS5vZl9saXN0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID1cbiAgTGlzdC5jb25jYXRfbWFwaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4gaSB4IC0+IGYgaSB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZF9tYXBpIHQgfmYgPSBMaXN0LmZpbmRfbWFwaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRpIHQgfmYgPSBMaXN0LmZpbmRpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IExpc3QuZm9yX2FsbGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gTGlzdC5leGlzdHNpIChRdWV1ZS50b19saXN0IHQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxuKCogW2ZvbGRfbWFwaSA/aG93IHQgfmluaXQgfm1hcGlfZiB+Zm9sZF9mXSBpcyBhIG1vcmUgZWZmaWNpZW50IHZlcnNpb24gb2Y6XG5cbiAgIHtbXG4gICAgIGZvbGQgfmluaXQgfmY6KGZ1biBiIGEgLT4gcmV0dXJuIChmb2xkX2YgYiBhKSkgKG1hcGkgdCA/aG93IH5mOm1hcGlfZikgXX1cblxuICAgSXQgYXZvaWRzIGNyZWF0aW5nIHRoZSBpbnRlcm1lZGlhdGUgc2VxdWVuY2UgdGhhdCB3b3VsZCByZXN1bHQgZnJvbSBbbWFwaV0sIGFuZFxuICAgYWxsb3dzIHRoZSBbZm9sZF0gdG8gcHJvY2VlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgW21hcGldLCBzbyB0aGF0IG9uZSBjYW4gYWNjdW11bGF0ZVxuICAgdGhlIHJlc3VsdCBhcyBzb29uIGFzIHBvc3NpYmxlLCBwb3NzaWJseSBhdm9pZGluZyBjcmVhdGluZyBhbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJlXG4gICAoZS5nLiBbaXRlcmldIGFuZCBbZmlsdGVyX21hcF0gdXNlcyBbZm9sZF9tYXBpXSB0byBkbyB0aGlzKS4gKilcbmxldCBmb2xkX21hcGlcbiAgICAgICh0eXBlIGEgYiBjKVxuICAgICAgPyhob3cgPSBgU2VxdWVudGlhbClcbiAgICAgICh0IDogYSBTZXF1ZW5jZS50KVxuICAgICAgfihpbml0IDogYylcbiAgICAgIH4obWFwaV9mIDogaW50IC0+IGEgLT4gYiBEZWZlcnJlZC50KVxuICAgICAgfihmb2xkX2YgOiBjIC0+IGIgLT4gYylcbiAgOiBjIERlZmVycmVkLnRcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+XG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMpID1cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV0dXJuIGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbGV0JWJpbmQgYiA9IG1hcGlfZiBpIGEgaW5cbiAgICAgICAgbG9vcCAoaSArIDEpIHQgKGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCBpbml0XG4gIHwgYFBhcmFsbGVsIC0+XG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMgRGVmZXJyZWQudCkgPVxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gbWFwaV9mIGkgYSBpblxuICAgICAgICAgICBsZXQlbWFwIGMgPSBjIGluXG4gICAgICAgICAgIGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCAocmV0dXJuIGluaXQpXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPlxuICAgIGxldCB0aHJvdHRsZSA9IFRocm90dGxlLmNyZWF0ZSB+bWF4X2NvbmN1cnJlbnRfam9icyB+Y29udGludWVfb25fZXJyb3I6ZmFsc2UgaW5cbiAgICAoKiBbbG9vcF0gZm9yY2VzIHRoZSBpbnB1dCBzZXF1ZW5jZSBhbmQgZW5xdWV1ZXMgYSB0aHJvdHRsZSBqb2Igb25seSBpZiB0aGVyZSBpc1xuICAgICAgIGNhcGFjaXR5IGF2YWlsYWJsZS4gKilcbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBsZXQlYmluZCAoKSA9IFRocm90dGxlLmNhcGFjaXR5X2F2YWlsYWJsZSB0aHJvdHRsZSBpblxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gVGhyb3R0bGUuZW5xdWV1ZSB0aHJvdHRsZSAoZnVuICgpIC0+IG1hcGlfZiBpIGEpIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgdFxuICAgIH5pbml0OigwLCBpbml0KVxuICAgIH5mOihmdW4gKGksIGIpIGEgfmsgLT5cbiAgICAgIGxldCViaW5kIGIgPSBmIGkgYiBhIGluXG4gICAgICBrIChpICsgMSwgYikpXG4gICAgfmZpbmlzaDooZnVuIChfLCBiKSAtPiByZXR1cm4gYilcbjs7XG5cbigqIFtmb2xkXSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgW2ZvbGRpXSB0byBzYXZlIHRoZSBpbnRlcm1lZGlhdGUgY2xvc3VyZVxuICAgYWxsb2NhdGlvbi4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGQgdCB+aW5pdCB+ZjooZnVuIGIgYSB+ayAtPiBmIGIgYSA+Pj0gaykgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBhbGwgdCA9XG4gIGxldCVtYXAgcmVzID1cbiAgICBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhY2N1bSBkIC0+XG4gICAgICBsZXQlbWFwIGEgPSBkIGluXG4gICAgICBhIDo6IGFjY3VtKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiByZXMpXG47O1xuXG5sZXQgYWxsX3VuaXQgdCA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gdilcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZXR1cm4gTm9uZVxuICAgIHwgU29tZSAodiwgcmVzdCkgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSB2IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHJlc3QgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlcmkgP2hvdyB0IH5mIDogdW5pdCBEZWZlcnJlZC50ID1cbiAgZm9sZF9tYXBpID9ob3cgdCB+bWFwaV9mOmYgfmluaXQ6KCkgfmZvbGRfZjooZnVuICgpICgpIC0+ICgpKVxuOztcblxubGV0IG1hcGkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCBicyA9XG4gICAgZm9sZF9tYXBpID9ob3cgdCB+bWFwaV9mOihmdW4gaSBhIC0+IGYgaSBhKSB+aW5pdDpbXSB+Zm9sZF9mOihmdW4gYnMgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbigqIFtmaWx0ZXJfbWFwaV0gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW2ZvbGRfbWFwaV0gcmF0aGVyIHRoYW4gW21hcF0gc28gdGhhdCB3ZSBuZXZlciBuZWVkXG4gICB0byBrZWVwIGEgbG9uZyBzdHJlYW0gb2YgaW50ZXJtZWRpYXRlIFtOb25lXSByZXN1bHRzIGluIHRoZSBhY2N1bXVsYXRvciwgb25seSB0byBsYXRlclxuICAgZmlsdGVyIHRoZW0gYWxsIG91dC4gKilcbmxldCBmaWx0ZXJfbWFwaSA/aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGlcbiAgICAgIHRcbiAgICAgID9ob3dcbiAgICAgIH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpXG4gICAgICB+aW5pdDpbXVxuICAgICAgfmZvbGRfZjooZnVuIGJzIG1heWJlX3YgLT5cbiAgICAgICAgbWF0Y2ggbWF5YmVfdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBic1xuICAgICAgICB8IFNvbWUgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbmxldCBjb25jYXRfbWFwaSA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZiA+PnwgU2VxdWVuY2UuY29uY2F0XG5cbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoJW1hcCBmIGkgYSB3aXRoXG4gICAgfCB0cnVlIC0+IFNvbWUgYVxuICAgIHwgZmFsc2UgLT4gTm9uZSlcbjs7XG5cbmxldCBpdGVyID9ob3cgdCB+ZiA9IGl0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gZmlsdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCA/aG93IG4gfmYgPSBtYXAgP2hvdyAoU2VxdWVuY2UuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zXG5tb2R1bGUgVGltZSA9IFRpbWVcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIERhdGUgPSBEYXRlXG5cbmxldCBhZnRlciA9IENsb2NrX25zLmFmdGVyXG5sZXQgYXQgPSBDbG9ja19ucy5hdFxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5cbmxldCBzaG93X2RlYnVnX21lc3NhZ2VzID0gcmVmIGZhbHNlXG5sZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIGZhbHNlXG5cbm1vZHVsZSBGbHVzaGVkX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYE9rXG4gICAgfCBgUmVhZGVyX2Nsb3NlZFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgbGV0IGNvbWJpbmUgKGwgOiB0IERlZmVycmVkLnQgbGlzdCkgPVxuICAgIGxldCVtYXAgbCA9IERlZmVycmVkLmFsbCBsIGluXG4gICAgbWF0Y2ggTGlzdC5tZW0gbCBgUmVhZGVyX2Nsb3NlZCB+ZXF1YWwgd2l0aFxuICAgIHwgdHJ1ZSAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgIHwgZmFsc2UgLT4gYE9rXG4gIDs7XG5lbmRcblxuKCogQSBbQ29uc3VtZXIudF0gYWN0cyBhcyB0aGUgbW9uaXRvciBvZiBzb21lIHByb2Nlc3MgdGhhdCByZWFkcyB2YWx1ZXMgZnJvbSBhIHBpcGUgYW5kXG4gICBwcm9jZXNzZXMgdGhlbSwgYWxsb3dpbmcgdGhhdCBwcm9jZXNzOlxuICAgLSB0byBjb21tdW5pY2F0ZSB0aGF0IGl0IGhhcyB0YWtlbiByZXNwb25zaWJpbGl0eSBmb3IgdGhlIHZhbHVlc1xuICAgLSB0byBzaWduYWwgd2hlbiBpdCBoYXMgZmluaXNoZWQgd2l0aCB0aGUgdmFsdWVzIHRvIGludGVyZXN0ZWQgcGFydGllcyAodmlhXG4gICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdKVxuXG4gICBJdCBpcyB1c2VkIGluIHR3byBzdGVwczpcblxuICAgMS4gY2FsbGluZyBbQ29uc3VtZXIuc3RhcnRdIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgY29uc3VtZXIgdGFrZXMgdmFsdWVzIG91dCBvZiB0aGVcbiAgIFBpcGUgdmlhIFtyZWFkXSBvciBbcmVhZCddLlxuXG4gICAyLiBjYWxsaW5nIFtDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtXS5cblxuICAgQnkgY2FsbGluZyBbdmFsdWVzX3NlbnRfZG93bnN0cmVhbV0gb25lIGFzc2VydHMgdGhhdCB0aGUgW2Rvd25zdHJlYW1fZmx1c2hlZF0gZnVuY3Rpb25cbiAgIHN1cHBsaWVkIHRvIFtjcmVhdGVdIHdpbGwgbm93IHdhaXQgZm9yIHRoaXMgdmFsdWUuXG5cbiAgIElmIG5vIFtDb25zdW1lci50XSBpcyBzdXBwbGllZCB3aGVuIGEgdmFsdWUgaXMgcmVhZCB0aGVuIHRoZSB2YWx1ZSBpcyBkZWZpbmVkIHRvIGJlXG4gICBmbHVzaGVkIGF0IHRoYXQgdGltZS4gKilcbm1vZHVsZSBDb25zdW1lciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgcGlwZV9pZDppbnRcbiAgICAtPiBkb3duc3RyZWFtX2ZsdXNoZWQ6KHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KVxuICAgIC0+IHRcblxuICB2YWwgcGlwZV9pZCA6IHQgLT4gaW50XG4gIHZhbCBzdGFydCA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCA6IHQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBpcGVfaWQgOiBpbnRcbiAgICA7ICgqIFt2YWx1ZXNfcmVhZF0gcmVmbGVjdHMgd2hldGhlciB2YWx1ZXMgdGhlIGNvbnN1bWVyIGhhcyByZWFkIGZyb20gdGhlIHBpcGUgaGF2ZSBiZWVuXG4gICAgICAgICBzZW50IGRvd25zdHJlYW0gb3IgaWYgbm90LCBob2xkcyBhbiBpdmFyIHRoYXQgaXMgdG8gYmUgZmlsbGVkIHdoZW4gdGhleSBhcmUuICopXG4gICAgICBtdXRhYmxlIHZhbHVlc19yZWFkIDpcbiAgICAgICAgWyBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBvZiB1bml0IEl2YXIudCBdXG4gICAgOyAoKiBbZG93bnN0cmVhbV9mbHVzaGVkICgpXSByZXR1cm5zIHdoZW4gYWxsIHByaW9yIHZhbHVlcyB0aGF0IHRoZSBjb25zdW1lciBoYXNcbiAgICAgICAgIHBhc3NlZCBkb3duc3RyZWFtIGhhdmUgYmVlbiBmbHVzaGVkIGFsbCB0aGUgd2F5IGRvd24gdGhlIGNoYWluIG9mIHBpcGVzLiAqKVxuICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIDogdW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+cGlwZV9pZDppZ25vcmVcbiAgICAgICAgfnZhbHVlc19yZWFkOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgICAgICAgICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgICB+ZG93bnN0cmVhbV9mbHVzaGVkOmlnbm9yZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQ29uc3VtZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+cGlwZV9pZCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgICB7IHBpcGVfaWQ7IHZhbHVlc19yZWFkID0gYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW07IGRvd25zdHJlYW1fZmx1c2hlZCB9XG4gIDs7XG5cbiAgbGV0IHN0YXJ0IHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIF8gLT4gKClcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSAoSXZhci5jcmVhdGUgKCkpXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW0gdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIGl2YXIgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgdC52YWx1ZXNfcmVhZCA8LSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbVxuICA7O1xuXG4gIGxldCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSB3aGVuX3NlbnRfZG93bnN0cmVhbSAtPlxuICAgICAgbGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgd2hlbl9zZW50X2Rvd25zdHJlYW0gaW5cbiAgICAgIHQuZG93bnN0cmVhbV9mbHVzaGVkICgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEJsb2NrZWRfcmVhZCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX3JlYWQudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgcmVhZCBhdHRlbXB0LiAgSWYgc29tZW9uZSByZWFkcyBmcm9tIGFuIGVtcHR5XG4gICAgIHBpcGUsIHRoZXkgZW5xdWV1ZSBhIFtCbG9ja2VkX3JlYWQudF0gaW4gdGhlIHF1ZXVlIG9mIFtibG9ja2VkX3JlYWRzXS4gIExhdGVyLCB3aGVuXG4gICAgIHZhbHVlcyBhcmUgd3JpdHRlbiB0byBhIHBpcGUsIHRoYXQgd2lsbCBjYXVzZSBzb21lIG51bWJlciBvZiBibG9ja2VkIHJlYWRzIHRvIGJlXG4gICAgIGZpbGxlZCwgZmlyc3QgY29tZSBmaXJzdCBzZXJ2ZS4gIFRoZSBibG9ja2VkLXJlYWQgY29uc3RydWN0b3Igc3BlY2lmaWVzIGhvdyBtYW55XG4gICAgIHZhbHVlcyBhIHJlYWQgc2hvdWxkIGNvbnN1bWUgZnJvbSB0aGUgcGlwZSB3aGVuIGl0IGdldHMgaXRzIHR1cm4uXG5cbiAgICAgSWYgYSBwaXBlIGlzIGNsb3NlZCwgdGhlbiBhbGwgYmxvY2tlZCByZWFkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIFtgRW9mXS4gKilcbiAgdHlwZSAnYSB3YW50cyA9XG4gICAgfCBaZXJvIG9mIFsgYEVvZiB8IGBPayBdIEl2YXIudFxuICAgIHwgT25lIG9mIFsgYEVvZiB8IGBPayBvZiAnYSBdIEl2YXIudFxuICAgIHwgQXRfbW9zdCBvZiBpbnQgKiBbIGBFb2YgfCBgT2sgb2YgJ2EgUXVldWUudCBdIEl2YXIudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3YW50cyA6ICdhIHdhbnRzXG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnQgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfndhbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFplcm8gXyB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICAgfCBBdF9tb3N0IChpLCBfKSAtPiBhc3NlcnQgKGkgPiAwKSkpXG4gICAgICAgIH5jb25zdW1lcjpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+IENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcikpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQmxvY2tlZF9yZWFkLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IF8gdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB3YW50cyBjb25zdW1lciA9IHsgd2FudHM7IGNvbnN1bWVyIH1cblxuICBsZXQgaXNfZW1wdHkgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5pc19lbXB0eSBpXG4gICAgfCBPbmUgaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICA7O1xuXG4gIGxldCBmaWxsX3dpdGhfZW9mIHQgPVxuICAgIG1hdGNoIHQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IE9uZSBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9mbHVzaCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX2ZsdXNoLnRdIHJlcHJlc2VudHMgYSBibG9ja2VkIGZsdXNoIG9wZXJhdGlvbiwgd2hpY2ggY2FuIGJlIGVuYWJsZWQgYnkgYVxuICAgICBmdXR1cmUgcmVhZC4gIElmIHNvbWVvbmUgZG9lcyBbZmx1c2hlZCBwXSBvbiBhIHBpcGUsIHRoYXQgYmxvY2tzIHVudGlsIGV2ZXJ5dGhpbmdcbiAgICAgdGhhdCdzIGN1cnJlbnRseSBpbiB0aGUgcGlwZSBhdCB0aGF0IHBvaW50IGhhcyBkcmFpbmVkIG91dCBvZiB0aGUgcGlwZS4gIFdoZW4gd2UgY2FsbFxuICAgICBbZmx1c2hlZF0sIGl0IHJlY29yZHMgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIHRoYXQgaGFzIGJlZW4gd3JpdHRlbiBzbyBmYXIgaW5cbiAgICAgW2ZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRdLiAgV2UgZmlsbCB0aGUgW0ZsdXNoLnRdIHdpdGggW2BPa10gd2hlbiB0aGlzIGFtb3VudCBvZlxuICAgICBkYXRhIGhhcyBiZWVuIHJlYWQgZnJvbSB0aGUgcGlwZS5cblxuICAgICBBIFtCbG9ja2VkX2ZsdXNoLnRdIGNhbiBhbHNvIGJlIGZpbGxlZCB3aXRoIFtgUmVhZGVyX2Nsb3NlZF0sIHdoaWNoIGhhcHBlbnMgd2hlbiB0aGVcbiAgICAgcmVhZGVyIGVuZCBvZiB0aGUgcGlwZSBpcyBjbG9zZWQsIGFuZCB3ZSBhcmUgdGh1cyBzdXJlIHRoYXQgdGhlIHVucmVhZCBlbGVtZW50c1xuICAgICBwcmVjZWRpbmcgdGhlIGZsdXNoIHdpbGwgbmV2ZXIgYmUgcmVhZC4gKilcbiAgdHlwZSB0ID1cbiAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgICA7IHJlYWR5IDogWyBgT2sgfCBgUmVhZGVyX2Nsb3NlZCBdIEl2YXIudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBmaWxsIHQgdiA9IEl2YXIuZmlsbCB0LnJlYWR5IHZcbmVuZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7ICgqIFtpZF0gaXMgYW4gaW50ZWdlciB1c2VkIHRvIGRpc3Rpbmd1aXNoIHBpcGVzIHdoZW4gZGVidWdnaW5nLiAqKVxuICAgIGlkIDogaW50IFNleHBfaGlkZGVuX2luX3Rlc3QudFxuICA7ICgqIFtpbmZvXSBpcyB1c2VyLXByb3ZpZGVkIGFyYml0cmFyeSBzZXhwLCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAqKVxuICAgIG11dGFibGUgaW5mbyA6IFNleHAudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyAoKiBbYnVmZmVyXSBob2xkcyB2YWx1ZXMgd3JpdHRlbiB0byB0aGUgcGlwZSB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHJlYWQuICopXG4gICAgbXV0YWJsZSBidWZmZXIgOiAnYSBRdWV1ZS50XG4gIDsgKCogW3NpemVfYnVkZ2V0XSBnb3Zlcm5zIHB1c2hiYWNrIG9uIHdyaXRlcnMgdG8gdGhlIHBpcGUuXG5cbiAgICAgICBUaGVyZSBpcyAqbm8qIGludmFyaWFudCB0aGF0IFtRdWV1ZS5sZW5ndGggYnVmZmVyIDw9IHNpemVfYnVkZ2V0XS4gIFRoZXJlIGlzIG5vXG4gICAgICAgaGFyZCB1cHBlciBib3VuZCBvbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgY2FuIGJlIHN0dWZmZWQgaW50byB0aGUgW2J1ZmZlcl0uXG4gICAgICAgVGhpcyBpcyBkdWUgdG8gdGhlIHdheSB3ZSBoYW5kbGUgd3JpdGVzLiAgV2hlbiB3ZSBkbyBhIHdyaXRlLCBhbGwgb2YgdGhlIHZhbHVlc1xuICAgICAgIHdyaXR0ZW4gYXJlIGltbWVkaWF0ZWx5IGVucXVldWVkIGludG8gW2J1ZmZlcl0uICBBZnRlciB0aGUgd3JpdGUsIGlmIFtRdWV1ZS5sZW5ndGhcbiAgICAgICBidWZmZXIgPD0gdC5zaXplX2J1ZGdldF0sIHRoZW4gdGhlIHdyaXRlciB3aWxsIGJlIG5vdGlmaWVkIHRvIGNvbnRpbnVlIHdyaXRpbmcuXG4gICAgICAgQWZ0ZXIgdGhlIHdyaXRlLCBpZiBbbGVuZ3RoIHQgPiB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGUgd2lsbCBibG9jayB1bnRpbCB0aGVcbiAgICAgICBwaXBlIGlzIHVuZGVyIGJ1ZGdldC4gKilcbiAgICBtdXRhYmxlIHNpemVfYnVkZ2V0IDogaW50XG4gIDsgKCogW3B1c2hiYWNrXSBpcyB1c2VkIHRvIGdpdmUgZmVlZGJhY2sgdG8gd3JpdGVycyBhYm91dCB3aGV0aGVyIHRoZXkgc2hvdWxkIHdyaXRlIHRvXG4gICAgICAgdGhlIHBpcGUuICBbcHVzaGJhY2tdIGlzIGZ1bGwgaWZmIFtsZW5ndGggdCA8PSB0LnNpemVfYnVkZ2V0IHx8IGlzX2Nsb3NlZCB0XS4gKilcbiAgICBtdXRhYmxlIHB1c2hiYWNrIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbbnVtX3ZhbHVlc19yZWFkXSBrZWVwcyB0cmFjayBvZiB0aGUgdG90YWwgbnVtYmVyIG9mIHZhbHVlcyB0aGF0IGhhdmUgYmVlbiByZWFkXG4gICAgICAgZnJvbSB0aGUgcGlwZS4gIFdlIGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IG92ZXJmbG93IGluIFtudW1fdmFsdWVzX3JlYWRdLiAgWW91J2RcbiAgICAgICBuZWVkIHRvIHdyaXRlIDJeNjIgZWxlbWVudHMgdG8gdGhlIHBpcGUsIHdoaWNoIHdvdWxkIHRha2UgYWJvdXQgMTQ2IHllYXJzLCBhdCBhXG4gICAgICAgZmxvdyByYXRlIG9mIDEgc2l6ZS11bml0L25hbm9zZWNvbmQuICopXG4gICAgbXV0YWJsZSBudW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgOyAoKiBbYmxvY2tlZF9mbHVzaGVzXSBob2xkcyBmbHVzaGVzIHdob3NlIHByZWNlZGluZyBlbGVtZW50cyBoYXZlIG5vdCBiZWVuIGNvbXBsZXRlbHlcbiAgICAgICByZWFkLiAgRm9yIGVhY2ggYmxvY2tlZCBmbHVzaCwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IG5lZWQgdG8gYmUgcmVhZCBmcm9tIHRoZVxuICAgICAgIHBpcGUgaW4gb3JkZXIgdG8gZmlsbCB0aGUgZmx1c2ggaXMgICAgICAgICAgICAgICAgICAgICAgICA6XG5cbiAgICAgICBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIC0gbnVtX3ZhbHVlc19yZWFkXG5cbiAgICAgICBLZWVwaW5nIHRoZSBkYXRhIGluIHRoaXMgZm9ybSBhbGxvd3MgdXMgdG8gY2hhbmdlIGEgc2luZ2xlIGZpZWxkKG51bV92YWx1ZXNfcmVhZClcbiAgICAgICB3aGVuIHdlIGNvbnN1bWUgdmFsdWVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgcXVldWUgb2ZcbiAgICAgICBmbHVzaGVzLiAqKVxuICAgIGJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCBRdWV1ZS50XG4gIDsgKCogW2Jsb2NrZWRfcmVhZHNdIGhvbGRzIHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgb24gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBwaXBlLiAqKVxuICAgIGJsb2NrZWRfcmVhZHMgOiAnYSBCbG9ja2VkX3JlYWQudCBRdWV1ZS50XG4gIDsgKCogW2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICBjbG9zZWQgOiB1bml0IEl2YXIudFxuICA7ICgqIFtyZWFkX2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHJlYWQgZW5kIG9mIHRoZSBwaXBlLiAqKVxuICAgIHJlYWRfY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbY29uc3VtZXJzXSBpcyBhIGxpc3Qgb2YgYWxsIGNvbnN1bWVycyB0aGF0IG1heSBiZSBoYW5kbGluZyB2YWx1ZXMgcmVhZCBmcm9tIHRoZVxuICAgICAgIHBpcGUuICopXG4gICAgbXV0YWJsZSBjb25zdW1lcnMgOiBDb25zdW1lci50IGxpc3RcbiAgOyAoKiBbdXBzdHJlYW1fZmx1c2hlZHNdIGhhcyBhIGZ1bmN0aW9uIGZvciBlYWNoIHBpcGUgaW1tZWRpYXRlbHkgdXBzdHJlYW0gb2YgdGhpcyBvbmUuXG4gICAgICAgVGhhdCBmdW5jdGlvbiB3YWxrcyB0byB0aGUgaGVhZChzKSBvZiB0aGUgdXBzdHJlYW0gcGlwZSwgYW5kIGNhbGxzXG4gICAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0gb24gdGhlIGhlYWQocykuICBTZWUgdGhlIGRlZmluaXRpb24gb2YgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICAgICAgYmVsb3cuICopXG4gICAgdXBzdHJlYW1fZmx1c2hlZHMgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAoJ2EsICdwaGFudG9tKSBwaXBlID0gKCdhLCAncGhhbnRvbSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIHQuaWRcbmxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgY29tcGFyZSB0MSB0MiA9IEludC5jb21wYXJlIHQxLmlkIHQyLmlkXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbmxldCBpc19yZWFkX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQucmVhZF9jbG9zZWRcbmxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxubGV0IHB1c2hiYWNrIHQgPSBJdmFyLnJlYWQgdC5wdXNoYmFja1xubGV0IGxlbmd0aCB0ID0gUXVldWUubGVuZ3RoIHQuYnVmZmVyXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmluZm86aWdub3JlXG4gICAgICB+YnVmZmVyOmlnbm9yZVxuICAgICAgfnNpemVfYnVkZ2V0OihjaGVjayAoZnVuIHNpemVfYnVkZ2V0IC0+IGFzc2VydCAoc2l6ZV9idWRnZXQgPj0gMCkpKVxuICAgICAgfnB1c2hiYWNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBwdXNoYmFjayAtPlxuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIEJvb2wuZXF1YWxcbiAgICAgICAgICAgICAgIChJdmFyLmlzX2Z1bGwgcHVzaGJhY2spXG4gICAgICAgICAgICAgICAobGVuZ3RoIHQgPD0gdC5zaXplX2J1ZGdldCB8fCBpc19jbG9zZWQgdCkpKSlcbiAgICAgIH5udW1fdmFsdWVzX3JlYWQ6aWdub3JlXG4gICAgICB+YmxvY2tlZF9mbHVzaGVzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX2ZsdXNoZXMgLT5cbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biAoZiA6IEJsb2NrZWRfZmx1c2gudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGYuZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA+IHQubnVtX3ZhbHVlc19yZWFkKSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgTGlzdC5pc19zb3J0ZWRcbiAgICAgICAgICAgICAgIH5jb21wYXJlOkludC5jb21wYXJlXG4gICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChRdWV1ZS50b19saXN0IGJsb2NrZWRfZmx1c2hlcylcbiAgICAgICAgICAgICAgICAgIH5mOkJsb2NrZWRfZmx1c2guZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBpZiBpc19lbXB0eSB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX2ZsdXNoZXMpKSlcbiAgICAgIH5ibG9ja2VkX3JlYWRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX3JlYWRzIC0+XG4gICAgICAgICAgICgqIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBubyBvbmUgaXMgd2FpdGluZyBmb3IgaXQuICBUaGlzIHdvdWxkIG5lZWQgdG8gY2hhbmdlIGlmXG4gICAgICAgICAgICAgIHdlIGV2ZXIgaW1wbGVtZW50IFtyZWFkX2V4YWN0bHldIGFzIGFuIGF0b21pYyBvcGVyYXRpb24uICopXG4gICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgdCkgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfcmVhZHMpO1xuICAgICAgICAgICBRdWV1ZS5pdGVyIGJsb2NrZWRfcmVhZHMgfmY6KGZ1biByZWFkIC0+XG4gICAgICAgICAgICAgQmxvY2tlZF9yZWFkLmludmFyaWFudCByZWFkO1xuICAgICAgICAgICAgIGFzc2VydCAoQmxvY2tlZF9yZWFkLmlzX2VtcHR5IHJlYWQpKTtcbiAgICAgICAgICAgKCogWW91IG5ldmVyIGJsb2NrIHRyeWluZyB0byByZWFkIGEgY2xvc2VkIHBpcGUuICopXG4gICAgICAgICAgIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKSkpXG4gICAgICB+Y2xvc2VkOmlnbm9yZVxuICAgICAgfnJlYWRfY2xvc2VkOmlnbm9yZVxuICAgICAgfmNvbnN1bWVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gbCAtPlxuICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGNvbnN1bWVyIC0+XG4gICAgICAgICAgICAgQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyO1xuICAgICAgICAgICAgIGFzc2VydCAoQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lciA9IHQuaWQpKSkpXG4gICAgICB+dXBzdHJlYW1fZmx1c2hlZHM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IChfLCBfKSB0KV1cbjs7XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSBwaGFudG9tIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgdCA9ICgnYSwgcGhhbnRvbSkgcGlwZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubGV0IGlkX3JlZiA9IHJlZiAwXG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0IH5pbmZvIH5pbml0aWFsX2J1ZmZlciA9XG4gIGluY3IgaWRfcmVmO1xuICBsZXQgdCA9XG4gICAgeyBpZCA9ICFpZF9yZWZcbiAgICA7IGluZm9cbiAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyByZWFkX2Nsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgO1xuICAgICAgc2l6ZV9idWRnZXRcbiAgICA7IHB1c2hiYWNrID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGJ1ZmZlciA9IGluaXRpYWxfYnVmZmVyXG4gICAgOyBudW1fdmFsdWVzX3JlYWQgPSAwXG4gICAgOyBibG9ja2VkX2ZsdXNoZXMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGJsb2NrZWRfcmVhZHMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGNvbnN1bWVycyA9IFtdXG4gICAgOyB1cHN0cmVhbV9mbHVzaGVkcyA9IEJhZy5jcmVhdGUgKClcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCA9XG4gIGlmIHNpemVfYnVkZ2V0IDwgMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwibmVnYXRpdmUgc2l6ZV9idWRnZXRcIiAoc2l6ZV9idWRnZXQgOiBpbnQpXVxuICBlbHNlIHNpemVfYnVkZ2V0XG47O1xuXG5sZXQgY3JlYXRlID9zaXplX2J1ZGdldCA/aW5mbyAoKSA9XG4gIGxldCBzaXplX2J1ZGdldCA9XG4gICAgbWF0Y2ggc2l6ZV9idWRnZXQgd2l0aFxuICAgIHwgU29tZSB2IC0+IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHZcbiAgICB8IE5vbmUgLT4gMFxuICBpblxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQgfmluZm8gfmluaXRpYWxfYnVmZmVyOihRdWV1ZS5jcmVhdGUgKCkpIGluXG4gICgqIGluaXRpYWxseSwgdGhlIHBpcGUgZG9lcyBub3QgcHVzaGJhY2sgKilcbiAgSXZhci5maWxsIHQucHVzaGJhY2sgKCk7XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgdCwgdFxuOztcblxubGV0IHVwZGF0ZV9wdXNoYmFjayB0ID1cbiAgaWYgbGVuZ3RoIHQgPD0gdC5zaXplX2J1ZGdldCB8fCBpc19jbG9zZWQgdFxuICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnB1c2hiYWNrICgpXG4gIGVsc2UgaWYgSXZhci5pc19mdWxsIHQucHVzaGJhY2tcbiAgdGhlbiB0LnB1c2hiYWNrIDwtIEl2YXIuY3JlYXRlICgpXG47O1xuXG5sZXQgY2xvc2UgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gKFxuICAgICAgUXVldWUuaXRlciB0LmJsb2NrZWRfcmVhZHMgfmY6QmxvY2tlZF9yZWFkLmZpbGxfd2l0aF9lb2Y7XG4gICAgICBRdWV1ZS5jbGVhciB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0KVxuOztcblxubGV0IGNsb3NlX3JlYWQgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlX3JlYWRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIG5vdCAoaXNfcmVhZF9jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQucmVhZF9jbG9zZWQgKCk7XG4gICAgUXVldWUuaXRlciB0LmJsb2NrZWRfZmx1c2hlcyB+ZjooZnVuIGZsdXNoIC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBgUmVhZGVyX2Nsb3NlZCk7XG4gICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX2ZsdXNoZXM7XG4gICAgUXVldWUuY2xlYXIgdC5idWZmZXI7XG4gICAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gICAgKCogd2UganVzdCBjbGVhcmVkIHRoZSBidWZmZXIsIHNvIG1heSBuZWVkIHRvIGZpbGwgW3QucHVzaGJhY2tdICopXG4gICAgY2xvc2UgdClcbjs7XG5cbmxldCBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gP3NpemVfYnVkZ2V0IGYgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgdXBvbiAoZiB3KSAoZnVuICgpIC0+IGNsb3NlIHcpO1xuICByXG47O1xuXG5sZXQgY3JlYXRlX3JlYWRlciA/c2l6ZV9idWRnZXQgfmNsb3NlX29uX2V4Y2VwdGlvbiBmID1cbiAgaWYgbm90IGNsb3NlX29uX2V4Y2VwdGlvblxuICB0aGVuIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiA/c2l6ZV9idWRnZXQgZlxuICBlbHNlIChcbiAgICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgICBkb24ndF93YWl0X2ZvclxuICAgICAgKE1vbml0b3IucHJvdGVjdFxuICAgICAgICAgfnJ1bjpcbiAgICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAoZnVuICgpIC0+IGYgdylcbiAgICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgICAgY2xvc2UgdztcbiAgICAgICAgICAgcmV0dXJuICgpKSk7XG4gICAgcilcbjs7XG5cbmxldCBjcmVhdGVfd3JpdGVyID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKE1vbml0b3IucHJvdGVjdFxuICAgICAgIH5ydW46XG4gICAgICAgICBgU2NoZWR1bGVcbiAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgKGZ1biAoKSAtPiBmIHIpXG4gICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgY2xvc2VfcmVhZCByO1xuICAgICAgICAgcmV0dXJuICgpKSk7XG4gIHdcbjs7XG5cbmxldCB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXIgPVxuICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci5zdGFydDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCBRdWV1ZS5wZWVrIHQuYmxvY2tlZF9mbHVzaGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZmx1c2ggLT5cbiAgICAgIGlmIHQubnVtX3ZhbHVlc19yZWFkID49IGZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZ25vcmUgKFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9mbHVzaGVzIDogQmxvY2tlZF9mbHVzaC50KTtcbiAgICAgICAgKG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYE9rXG4gICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICAgICAgICAgdXBvbiAoQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCBjb25zdW1lcikgKGZ1biBmbHVzaF9yZXN1bHQgLT5cbiAgICAgICAgICAgICBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggZmx1c2hfcmVzdWx0KSk7XG4gICAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG5cbigqIFtjb25zdW1lX2FsbCB0XSByZWFkcyBhbGwgdGhlIGVsZW1lbnRzIGluIFt0XS4gKilcbmxldCBjb25zdW1lX2FsbCB0IGNvbnN1bWVyID1cbiAgbGV0IHJlc3VsdCA9IHQuYnVmZmVyIGluXG4gIHQuYnVmZmVyIDwtIFF1ZXVlLmNyZWF0ZSAoKTtcbiAgdC5udW1fdmFsdWVzX3JlYWQgPC0gdC5udW1fdmFsdWVzX3JlYWQgKyBRdWV1ZS5sZW5ndGggcmVzdWx0O1xuICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICByZXN1bHRcbjs7XG5cbmxldCBjb25zdW1lX29uZSB0IGNvbnN1bWVyID1cbiAgYXNzZXJ0IChsZW5ndGggdCA+PSAxKTtcbiAgbGV0IHJlc3VsdCA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuYnVmZmVyIGluXG4gIHQubnVtX3ZhbHVlc19yZWFkIDwtIHQubnVtX3ZhbHVlc19yZWFkICsgMTtcbiAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgcmVzdWx0XG47O1xuXG5sZXQgY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyID1cbiAgYXNzZXJ0IChtYXhfcXVldWVfbGVuZ3RoID49IDApO1xuICBpZiBtYXhfcXVldWVfbGVuZ3RoID49IGxlbmd0aCB0XG4gIHRoZW4gY29uc3VtZV9hbGwgdCBjb25zdW1lclxuICBlbHNlIChcbiAgICB0Lm51bV92YWx1ZXNfcmVhZCA8LSB0Lm51bV92YWx1ZXNfcmVhZCArIG1heF9xdWV1ZV9sZW5ndGg7XG4gICAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICAgIGxldCByZXN1bHQgPSBRdWV1ZS5jcmVhdGUgfmNhcGFjaXR5Om1heF9xdWV1ZV9sZW5ndGggKCkgaW5cbiAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6dC5idWZmZXIgfmRzdDpyZXN1bHQgfmxlbjptYXhfcXVldWVfbGVuZ3RoICgpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0O1xuICAgIHJlc3VsdClcbjs7XG5cbmxldCBzZXRfc2l6ZV9idWRnZXQgdCBzaXplX2J1ZGdldCA9XG4gIGxldCBzaXplX2J1ZGdldCA9IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHNpemVfYnVkZ2V0IGluXG4gIHQuc2l6ZV9idWRnZXQgPC0gc2l6ZV9idWRnZXQ7XG4gIHVwZGF0ZV9wdXNoYmFjayB0XG47O1xuXG5sZXQgZmlsbF9ibG9ja2VkX3JlYWRzIHQgPVxuICB3aGlsZSAobm90IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpKSAmJiBub3QgKGlzX2VtcHR5IHQpIGRvXG4gICAgbGV0IGJsb2NrZWRfcmVhZCA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9yZWFkcyBpblxuICAgIGxldCBjb25zdW1lciA9IGJsb2NrZWRfcmVhZC5jb25zdW1lciBpblxuICAgIG1hdGNoIGJsb2NrZWRfcmVhZC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYE9rXG4gICAgfCBPbmUgaXZhciAtPiBJdmFyLmZpbGwgaXZhciAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSlcbiAgICB8IEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpIC0+XG4gICAgICBJdmFyLmZpbGwgaXZhciAoYE9rIChjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpKVxuICBkb25lXG47O1xuXG4oKiBjaGVja3MgYWxsIGludmFyaWFudHMsIGNhbGxzIGEgcGFzc2VkIGluIGYgdG8gaGFuZGxlIGEgd3JpdGUsIHRoZW4gdXBkYXRlcyByZWFkcyBhbmRcbiAgIHB1c2hiYWNrICopXG5sZXQgc3RhcnRfd3JpdGUgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcIndyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBpc19jbG9zZWQgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwid3JpdGUgdG8gY2xvc2VkIHBpcGVcIiB+cGlwZToodCA6IChfLCBfKSB0KV1cbjs7XG5cbmxldCBmaW5pc2hfd3JpdGUgdCA9XG4gIGZpbGxfYmxvY2tlZF9yZWFkcyB0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbSA9XG4gIHN0YXJ0X3dyaXRlIHQ7XG4gIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpmcm9tIH5kc3Q6dC5idWZmZXIgKCk7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgdHJhbnNmZXJfaW4gdCB+ZnJvbSA9XG4gIHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IGNvcHlfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tID1cbiAgc3RhcnRfd3JpdGUgdDtcbiAgUXVldWUuaXRlciBmcm9tIH5mOihmdW4geCAtPiBRdWV1ZS5lbnF1ZXVlIHQuYnVmZmVyIHgpO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxuKCogW3dyaXRlJ10gaXMgdXNlZCBpbnRlcm5hbGx5ICopXG5sZXQgd3JpdGUnIHQgcSA9IHRyYW5zZmVyX2luIHQgfmZyb206cVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlID1cbiAgc3RhcnRfd3JpdGUgdDtcbiAgUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB2YWx1ZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZSB0IHZhbHVlID1cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgd3JpdGVfd2hlbl9yZWFkeSB0IH5mID1cbiAgbGV0JW1hcCAoKSA9IHB1c2hiYWNrIHQgaW5cbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiBgQ2xvc2VkIGVsc2UgYE9rIChmIChmdW4geCAtPiB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCkpXG47O1xuXG5sZXQgd3JpdGVfaWZfb3BlbiB0IHggPSBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlIHQgeCBlbHNlIHJldHVybiAoKVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIHQgeCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHhcbjs7XG5cbmxldCBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyA/Y29uc3VtZXIgdCA9XG4gIG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjb25zdW1lciAtPlxuICAgIGlmIHQuaWQgPD4gQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lclxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJBdHRlbXB0IHRvIHVzZSBjb25zdW1lciB3aXRoIHdyb25nIHBpcGVcIlxuICAgICAgICAgICAgKGNvbnN1bWVyIDogQ29uc3VtZXIudClcbiAgICAgICAgICAgIH5waXBlOih0IDogXyBSZWFkZXIudCldXG47O1xuXG5sZXQgc3RhcnRfcmVhZCA/Y29uc3VtZXIgdCBsYWJlbCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBsYWJlbCB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyXG47O1xuXG5sZXQgZ2VuX3JlYWRfbm93ID9jb25zdW1lciB0IGNvbnN1bWUgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkX25vd1wiID9jb25zdW1lcjtcbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYEVvZiBlbHNlIGBOb3RoaW5nX2F2YWlsYWJsZVxuICBlbHNlIChcbiAgICBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgKCogZnJvbSBbaW52YXJpYW50XSBhbmQgW25vdCAoaXNfZW1wdHkgdCldICopXG4gICAgYE9rIChjb25zdW1lIHQgY29uc3VtZXIpKVxuOztcblxubGV0IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoID1cbiAgbWF0Y2ggbWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gIHwgU29tZSBtYXhfcXVldWVfbGVuZ3RoIC0+XG4gICAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA8PSAwXG4gICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIm1heF9xdWV1ZV9sZW5ndGggPD0gMFwiIChtYXhfcXVldWVfbGVuZ3RoIDogaW50KV07XG4gICAgbWF4X3F1ZXVlX2xlbmd0aFxuOztcblxubGV0IHJlYWRfbm93JyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIChmdW4gdCBjb25zdW1lciAtPiBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpXG47O1xuXG5sZXQgcmVhZF9ub3cgP2NvbnN1bWVyIHQgPSBnZW5fcmVhZF9ub3cgdCA/Y29uc3VtZXIgY29uc3VtZV9vbmVcbmxldCBwZWVrIHQgPSBRdWV1ZS5wZWVrIHQuYnVmZmVyXG5cbmxldCBjbGVhciB0ID1cbiAgbWF0Y2ggcmVhZF9ub3cnIHQgd2l0aFxuICB8IGBFb2YgfCBgTm90aGluZ19hdmFpbGFibGUgfCBgT2sgXyAtPiAoKVxuOztcblxubGV0IHJlYWQnID9jb25zdW1lciA/bWF4X3F1ZXVlX2xlbmd0aCB0ID1cbiAgbGV0IG1heF9xdWV1ZV9sZW5ndGggPSBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCBpblxuICBzdGFydF9yZWFkIHQgXCJyZWFkJ1wiID9jb25zdW1lcjtcbiAgbWF0Y2ggcmVhZF9ub3cnIHQgP2NvbnN1bWVyIH5tYXhfcXVldWVfbGVuZ3RoIHdpdGhcbiAgfCAoYE9rIF8gfCBgRW9mKSBhcyByIC0+IHJldHVybiByXG4gIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfcmVhZHNcbiAgICAgICAgKEJsb2NrZWRfcmVhZC5jcmVhdGUgKEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpKSBjb25zdW1lcikpXG47O1xuXG5sZXQgcmVhZCA/Y29uc3VtZXIgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgdGhlbiByZXR1cm4gYEVvZlxuICAgIGVsc2VcbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChPbmUgaXZhcikpIGNvbnN1bWVyKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHJldHVybiAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSkpXG47O1xuXG5sZXQgcmVhZF9leG4gP2NvbnN1bWVyIHQgPVxuICBtYXRjaCVtYXAgcmVhZCA/Y29uc3VtZXIgdCB3aXRoXG4gIHwgYE9rIHZhbHVlIC0+IHZhbHVlXG4gIHwgYEVvZiAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leG46IHJlY2VpdmVkIEVPRlwiXVxuOztcblxubGV0IHZhbHVlc19hdmFpbGFibGUgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInZhbHVlc19hdmFpbGFibGVcIjtcbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiBgT2tcbiAgZWxzZSBpZiBpc19jbG9zZWQgdFxuICB0aGVuIHJldHVybiBgRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIFF1ZXVlLmxhc3QgdC5ibG9ja2VkX3JlYWRzIHdpdGhcbiAgICB8IFNvbWUgeyBjb25zdW1lciA9IE5vbmU7IHdhbnRzID0gWmVybyBpdmFyIH0gLT5cbiAgICAgICgqIFRoaXMgY2FzZSBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIG11bHRpcGxlIGNhbGxzIHRvIFt2YWx1ZXNfYXZhaWxhYmxlXSBpblxuICAgICAgICAgc2VxdWVuY2UuICBJdCBjYXVzZXMgdGhlbSB0byBhbGwgc2hhcmUgdGhlIHNhbWUgaXZhciwgcmF0aGVyIHRoYW4gYWxsb2NhdGVcbiAgICAgICAgIGFuIGl2YXIgcGVyIGNhbGwuICopXG4gICAgICBJdmFyLnJlYWQgaXZhclxuICAgIHwgXyAtPlxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBRdWV1ZS5lbnF1ZXVlIHQuYmxvY2tlZF9yZWFkcyAoQmxvY2tlZF9yZWFkLihjcmVhdGUgKFplcm8gaXZhcikpIE5vbmUpKSlcbjs7XG5cbmxldCByZWFkX2Nob2ljZSB0ID0gY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIHQpIChmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT4gcmVhZF9ub3cgdClcblxubGV0IHJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG4gdCBoZXJlID1cbiAgRGVmZXJyZWQuQ2hvaWNlLm1hcCAocmVhZF9jaG9pY2UgdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCAoYE9rIF8gfCBgRW9mKSBhcyB4IC0+IHhcbiAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIlBpcGUucmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4bjogY2hvaWNlIHdhcyBlbmFibGVkIGJ1dCBwaXBlIGlzIGVtcHR5OyBcXFxuICAgICAgICAgICB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbiB3aXRoIG9uZSBvciBtb3JlIG90aGVyIGNvbnN1bWVyc1wiXG4gICAgICAgICAgICAoaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXSlcbjs7XG5cbigqIFtyZWFkX2V4YWN0bHkgdCB+bnVtX3ZhbHVlc10gbG9vcHMsIGdldHRpbmcgeW91IGFsbCBbbnVtX3ZhbHVlc10gaXRlbXMsIHVwXG4gICB0byBFT0YuICopXG5sZXQgcmVhZF9leGFjdGx5ID9jb25zdW1lciB0IH5udW1fdmFsdWVzID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9leGFjdGx5XCIgP2NvbnN1bWVyO1xuICBpZiBudW1fdmFsdWVzIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leGFjdGx5IGdvdCBudW1fdmFsdWVzIDw9IDBcIiAobnVtX3ZhbHVlcyA6IGludCldO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2ggLT5cbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBRdWV1ZS5sZW5ndGggcmVzdWx0IGluXG4gICAgICBhc3NlcnQgKGFscmVhZHlfcmVhZCA8PSBudW1fdmFsdWVzKTtcbiAgICAgIGlmIGFscmVhZHlfcmVhZCA9IG51bV92YWx1ZXNcbiAgICAgIHRoZW4gSXZhci5maWxsIGZpbmlzaCAoYEV4YWN0bHkgcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICByZWFkJyA/Y29uc3VtZXIgdCB+bWF4X3F1ZXVlX2xlbmd0aDoobnVtX3ZhbHVlcyAtIGFscmVhZHlfcmVhZClcbiAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoIChpZiBhbHJlYWR5X3JlYWQgPSAwIHRoZW4gYEVvZiBlbHNlIGBGZXdlciByZXN1bHQpXG4gICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgaW5cbiAgICBsb29wICgpKVxuOztcblxubGV0IGRvd25zdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgaWYgTGlzdC5pc19lbXB0eSB0LmNvbnN1bWVyc1xuICAgIHRoZW4gcmV0dXJuIGBPa1xuICAgIGVsc2VcbiAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgKExpc3QubWFwIHQuY29uc3VtZXJzIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQpXG4gIGVsc2VcbiAgICAoKiBbdF0gbWlnaHQgYmUgY2xvc2VkLiAgQnV0IHRoZSByZWFkIGVuZCBjYW4ndCBiZSBjbG9zZWQsIGJlY2F1c2UgaWYgaXQgd2VyZSwgdGhlblxuICAgICAgIFt0XSB3b3VsZCBiZSBlbXB0eS4gIElmIHRoZSB3cml0ZSBlbmQgaXMgY2xvc2VkIGJ1dCBub3QgdGhlIHJlYWQgZW5kLCB0aGVuIHdlIHdhbnRcbiAgICAgICB0byBlbnF1ZXVlIGEgYmxvY2tlZCBmbHVzaCBiZWNhdXNlIHRoZSBlbnF1ZXVlZCB2YWx1ZXMgbWF5IGdldCByZWFkLiAqKVxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlYWR5IC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlXG4gICAgICAgIHQuYmxvY2tlZF9mbHVzaGVzXG4gICAgICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA9IHQubnVtX3ZhbHVlc19yZWFkICsgbGVuZ3RoIHQ7IHJlYWR5IH0pXG47O1xuXG4oKiBJbiBwcmFjdGljZSwgYWxvbmcgd2l0aCBbTGluay5jcmVhdGVdIGFuZCBbYWRkX3Vwc3RyZWFtX2ZsdXNoZWRdLCBbdXBzdHJlYW1fZmx1c2hlZF1cbiAgIHRyYXZlcnNlcyB0aGUgZ3JhcGggb2YgbGlua2VkIHBpcGVzIHVwIHRvIHRoZSBoZWFkcyBhbmQgdGhlbiBjYWxscyBbZG93bnN0cmVhbV9mbHVzaGVkXVxuICAgb24gdGhlbS4gKilcbmxldCB1cHN0cmVhbV9mbHVzaGVkIHQgPVxuICBpZiBCYWcuaXNfZW1wdHkgdC51cHN0cmVhbV9mbHVzaGVkc1xuICB0aGVuIGRvd25zdHJlYW1fZmx1c2hlZCB0XG4gIGVsc2VcbiAgICBCYWcudG9fbGlzdCB0LnVwc3RyZWFtX2ZsdXNoZWRzXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBmIC0+IGYgKCkpXG4gICAgfD4gRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuOztcblxubGV0IGFkZF91cHN0cmVhbV9mbHVzaGVkIHQgdXBzdHJlYW1fZmx1c2hlZCA9IEJhZy5hZGQgdC51cHN0cmVhbV9mbHVzaGVkcyB1cHN0cmVhbV9mbHVzaGVkXG5cbmxldCBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgbGV0IGNvbnN1bWVyID0gQ29uc3VtZXIuY3JlYXRlIH5waXBlX2lkOnQuaWQgfmRvd25zdHJlYW1fZmx1c2hlZCBpblxuICB0LmNvbnN1bWVycyA8LSBjb25zdW1lciA6OiB0LmNvbnN1bWVycztcbiAgY29uc3VtZXJcbjs7XG5cbigqIEEgW0xpbmsudF0gbGlua3MgZmx1c2hpbmcgb2YgdHdvIHBpcGVzIHRvZ2V0aGVyLiAqKVxubW9kdWxlIExpbmsgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVwc3RyZWFtOihfLCBfKSBwaXBlIC0+IGRvd25zdHJlYW06KF8sIF8pIHBpcGUgLT4gdFxuICB2YWwgY29uc3VtZXIgOiB0IC0+IENvbnN1bWVyLnRcblxuICAoKiBbdW5saW5rX3Vwc3RyZWFtXSByZW1vdmVzIGRvd25zdHJlYW0ncyByZWZlcmVuY2UgdG8gdXBzdHJlYW0uICopXG5cbiAgdmFsIHVubGlua191cHN0cmVhbSA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdW5wYWNrZWQgPVxuICAgIHsgZG93bnN0cmVhbSA6ICgnYSwgJ2IpIHRcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudFxuICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA6ICh1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudCkgQmFnLkVsdC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBjb25zdW1lciAoVCB0KSA9IHQuY29uc3VtZXJcblxuICBsZXQgY3JlYXRlIH51cHN0cmVhbSB+ZG93bnN0cmVhbSA9XG4gICAgVFxuICAgICAgeyBkb3duc3RyZWFtXG4gICAgICA7IGNvbnN1bWVyID1cbiAgICAgICAgICBhZGRfY29uc3VtZXIgdXBzdHJlYW0gfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSlcbiAgICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA9XG4gICAgICAgICAgYWRkX3Vwc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSAoZnVuICgpIC0+IHVwc3RyZWFtX2ZsdXNoZWQgdXBzdHJlYW0pXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IHVubGlua191cHN0cmVhbSAoVCB0KSA9XG4gICAgQmFnLnJlbW92ZSB0LmRvd25zdHJlYW0udXBzdHJlYW1fZmx1c2hlZHMgdC51cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZsdXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnN1bWVyIG9mIENvbnN1bWVyLnRcbiAgICB8IFdoZW5fdmFsdWVfcHJvY2Vzc2VkXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZm9sZF9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgID8oZmx1c2hlZCA9IEZsdXNoZWQuV2hlbl92YWx1ZV9yZWFkKVxuICAgICAgdFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gID1cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBtYXRjaCBmbHVzaGVkIHdpdGhcbiAgICB8IFdoZW5fdmFsdWVfcmVhZCAtPiBOb25lXG4gICAgfCBDb25zdW1lciBjb25zdW1lciAtPiBTb21lIGNvbnN1bWVyXG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZCAtPlxuICAgICAgKCogVGhlIGZhY3QgdGhhdCBcIm5vIGNvbnN1bWVyXCIgYmVoYXZlcyBkaWZmZXJlbnQgZnJvbSBcInRyaXZpYWwgY29uc3VtZXJcIiBpcyB3ZWlyZCxcbiAgICAgICAgIGJ1dCB0aGF0J3MgaG93IHRoZSBjb25zdW1lciBtYWNoaW5lcnkgd29ya3MuICopXG4gICAgICBTb21lIChhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT4gcmV0dXJuIGBPaykpXG4gIGluXG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3JldHVybiAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gKilcbiAgICByZXR1cm4gKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCBiXG4gICAgICB8IGBPayB2IC0+IGYgYiB2IGNvbnRpbnVlXG4gICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IGxvb3AgYlxuICAgIGFuZCBjb250aW51ZSBiID1cbiAgICAgIE9wdGlvbi5pdGVyIGNvbnN1bWVyIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW07XG4gICAgICBsb29wIGJcbiAgICBpblxuICAgIGxvb3AgaW5pdClcbjs7XG5cbmxldCBmb2xkJyA/Zmx1c2hlZCA/bWF4X3F1ZXVlX2xlbmd0aCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgcSBsb29wIC0+XG4gICAgZiBiIHEgPj4+IGxvb3ApXG47O1xuXG5sZXQgZm9sZCA/Zmx1c2hlZCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgYSBsb29wIC0+IGYgYiBhID4+PiBsb29wKVxuOztcblxubGV0IGZvbGRfd2l0aG91dF9wdXNoYmFjayA/Y29uc3VtZXIgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuXG4gICAgcmVhZF9ub3dcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGIgYSBsb29wIC0+IGxvb3AgKGYgYiBhKSlcbiAgICA/Zmx1c2hlZDpcbiAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgYyAtPiBTb21lIChDb25zdW1lciBjKSlcbjs7XG5cbmxldCB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpIGYgYSA9XG4gIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICB0aGVuIGYgYVxuICBlbHNlIChcbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpcbiAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAoZnVuICgpIC0+IGYgYSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgKE1vbml0b3IuZXh0cmFjdF9leG4gZXhuKSlcbjs7XG5cbmxldCBpdGVyJyA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+ZiA9XG4gIGZvbGQnID9tYXhfcXVldWVfbGVuZ3RoID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBxIC0+XG4gICAgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgP2NvbnRpbnVlX29uX2Vycm9yIGYgcSlcbjs7XG5cbmxldCBpdGVyID9jb250aW51ZV9vbl9lcnJvciA/Zmx1c2hlZCB0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgbG9vcCAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIGEgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuOztcblxuKCogW2l0ZXJfd2l0aG91dF9wdXNoYmFja10gaXMgYSBjb21tb24gY2FzZSwgc28gd2UgaW1wbGVtZW50IGl0IGluIGFuIG9wdGltaXplZCBtYW5uZXIsXG4gICByYXRoZXIgdGhhbiB2aWEgW2l0ZXJdLiAgVGhlIGltcGxlbWVudGF0aW9uIHJlYWRzIG9ubHkgb25lIGVsZW1lbnQgYXQgYSB0aW1lLCBzbyB0aGF0XG4gICBpZiBbZl0gY2xvc2VzIFt0XSBvciByYWlzZXMsIG5vIG1vcmUgZWxlbWVudHMgd2lsbCBiZSByZWFkLiAqKVxubGV0IGl0ZXJfd2l0aG91dF9wdXNoYmFja1xuICAgICAgP2NvbnN1bWVyXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpXG4gICAgICA/bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgICAgdFxuICAgICAgfmZcbiAgPVxuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lcjtcbiAgbGV0IG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPVxuICAgIG1hdGNoIG1heF9pdGVyYXRpb25zX3Blcl9qb2Igd2l0aFxuICAgIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBTb21lIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgLT5cbiAgICAgIGlmIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPD0gMFxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIml0ZXJfd2l0aG91dF9wdXNoYmFjayBnb3Qgbm9uLXBvc2l0aXZlIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcIlxuICAgICAgICAgICAgICAobWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA6IGludCldO1xuICAgICAgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICBpblxuICBsZXQgZiA9XG4gICAgaWYgbm90IGNvbnRpbnVlX29uX2Vycm9yXG4gICAgdGhlbiBmXG4gICAgZWxzZVxuICAgICAgZnVuIGEgLT5cbiAgICAgICAgdHJ5IGYgYSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuXG4gIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3JldHVybiAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gKilcbiAgICByZXR1cm4gKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IHJlYyBzdGFydCAoKSA9IGxvb3AgfnJlbWFpbmluZzptYXhfaXRlcmF0aW9uc19wZXJfam9iXG4gICAgYW5kIGxvb3AgfnJlbWFpbmluZyA9XG4gICAgICBpZiByZW1haW5pbmcgPSAwXG4gICAgICB0aGVuIHJldHVybiAoKSA+Pj4gZnVuICgpIC0+IHN0YXJ0ICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaGVkICgpXG4gICAgICAgIHwgYE9rIGEgLT5cbiAgICAgICAgICBmIGE7XG4gICAgICAgICAgbG9vcCB+cmVtYWluaW5nOihyZW1haW5pbmcgLSAxKVxuICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IHN0YXJ0ICgpKVxuICAgIGluXG4gICAgc3RhcnQgKCkpXG47O1xuXG5sZXQgZHJhaW4gdCA9IGl0ZXInIHQgfmY6KGZ1biBfIC0+IHJldHVybiAoKSlcbmxldCBkcmFpbl9hbmRfY291bnQgdCA9IGZvbGQnIHQgfmluaXQ6MCB+ZjooZnVuIHN1bSBxIC0+IHJldHVybiAoc3VtICsgUXVldWUubGVuZ3RoIHEpKVxuXG5sZXQgcmVhZF9hbGwgaW5wdXQgPVxuICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCVtYXAgKCkgPVxuICAgIGl0ZXInIGlucHV0IH5mOihmdW4gcSAtPlxuICAgICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnEgfmRzdDpyZXN1bHQgKCk7XG4gICAgICByZXR1cm4gKCkpXG4gIGluXG4gIHJlc3VsdFxuOztcblxubGV0IHRvX2xpc3QgciA9IHJlYWRfYWxsIHIgPj58IFF1ZXVlLnRvX2xpc3RcblxubGV0IHRvX3N0cmVhbV9kZXByZWNhdGVkIHQgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayB0IH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpXG4gICAgPj4+IGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKVxuOztcblxuKCogVGhlIGltcGxlbWVudGF0aW9uIG9mIFtvZl9zdHJlYW1fZGVwcmVjYXRlZF0gZG9lcyBhcyBtdWNoIGJhdGNoaW5nIGFzIHBvc3NpYmxlLiAgSXRcbiAgIGdyYWJzIGFzIG1hbnkgaXRlbXMgYXMgYXJlIGF2YWlsYWJsZSBpbnRvIGFuIGludGVybmFsIHF1ZXVlLiAgT25jZSBpdCBoYXMgZ3JhYmJlZFxuICAgZXZlcnl0aGluZywgaXQgd3JpdGVzIGl0IHRvIHRoZSBwaXBlIGFuZCB0aGVuIGJsb2NrcyB3YWl0aW5nIGZvciB0aGUgbmV4dCBlbGVtZW50IGZyb21cbiAgIHRoZSBzdHJlYW0uXG5cbiAgIFRoZXJlJ3Mgbm8gcG9zc2liaWxpdHkgdGhhdCB3ZSdsbCBzdGFydmUgdGhlIHBpcGUgcmVhZGluZyBhbiBlbmRsZXNzIHN0cmVhbSwganVzdFxuICAgYWNjdW11bGF0aW5nIHRoZSBlbGVtZW50cyBpbnRvIG91ciBwcml2YXRlIHF1ZXVlIGZvcmV2ZXIgd2l0aG91dCBldmVyIHdyaXRpbmcgdGhlbVxuICAgZG93bnN0cmVhbSB0byB0aGUgcGlwZS4gIFdoeT8gYmVjYXVzZSB3aGlsZSB3ZSdyZSBydW5uaW5nLCB0aGUgc3RyZWFtLXByb2R1Y2VyICppc24ndCpcbiAgIHJ1bm5pbmcgLS0gdGhlcmUgYXJlIG5vIEFzeW5jIGJsb2NrIHBvaW50cyBpbiB0aGUgcXVldWUtYWNjdW11bGF0b3IgbG9vcC4gIFNvIHRoZVxuICAgcXVldWUtYWNjdW11bGF0b3IgbG9vcCB3aWxsIGV2ZW50dWFsbHkgY2F0Y2ggdXAgdG8gdGhlIGN1cnJlbnQgc3RyZWFtIHRhaWwsIGF0IHdoaWNoXG4gICBwb2ludCB3ZSdsbCBkbyB0aGUgcGlwZS13cml0ZSBhbmQgdGhlbiBibG9jayBvbiB0aGUgc3RyZWFtLi4uIHRodXMgZ2l2aW5nIHRoZVxuICAgc3RyZWFtLXByb2R1Y2VyIGEgY2hhbmNlIHRvIG1ha2UgbW9yZSBlbGVtZW50cy5cblxuICAgT25lIGNhbid0IGltcGxlbWVudCBbb2Zfc3RyZWFtXSB1c2luZyBbU3RyZWFtLml0ZXJdIG9yIFtTdHJlYW0uaXRlciddIGJlY2F1c2UgeW91XG4gICBuZWVkIHRvIGJlIGFibGUgdG8gc3RvcCBlYXJseSB3aGVuIHRoZSBjb25zdW1lciBjbG9zZXMgdGhlIHBpcGUuICBBbHNvLCB1c2luZyBlaXRoZXJcbiAgIG9mIHRob3NlIHdvdWxkIGVudGFpbCBzaWduaWZpY2FudGx5IG1vcmUgZGVmZXJyZWQgb3ZlcmhlYWQsIHdoZXJlYXMgdGhlIGJlbG93XG4gICBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgZGVmZXJyZWQgb25seSB3aGVuIGl0IG5lZWRzIHRvIHdhaXQgZm9yIGRhdGEgZnJvbSB0aGUgc3RyZWFtLiAqKVxubGV0IG9mX3N0cmVhbV9kZXByZWNhdGVkIHMgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSAoKSBpblxuICBsZXQgcSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgdHJhbnNmZXIgKCkgPVxuICAgIGlmIG5vdCAoUXVldWUuaXNfZW1wdHkgcSlcbiAgICB0aGVuXG4gICAgICAoKiBDYW4gbm90IHB1c2hiYWNrIG9uIHRoZSBzdHJlYW0sIHNvIGlnbm9yZSB0aGUgcHVzaGJhY2sgb24gdGhlIHBpcGUuICopXG4gICAgICBkb24ndF93YWl0X2ZvciAod3JpdGUnIHcgcSlcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHMgPVxuICAgIGFzc2VydCAobm90IChpc19jbG9zZWQgdykpO1xuICAgIGxldCBuZXh0X2RlZmVycmVkID0gU3RyZWFtLm5leHQgcyBpblxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgbmV4dF9kZWZlcnJlZCB3aXRoXG4gICAgfCBTb21lIG5leHQgLT4gbG9vcF9uZXh0IG5leHRcbiAgICB8IE5vbmUgLT5cbiAgICAgIHRyYW5zZmVyICgpO1xuICAgICAgdXBvbiBuZXh0X2RlZmVycmVkIGNoZWNrX2Nsb3NlZF9sb29wX25leHRcbiAgYW5kIGNoZWNrX2Nsb3NlZF9sb29wX25leHQgbmV4dCA9IGlmIG5vdCAoaXNfY2xvc2VkIHcpIHRoZW4gbG9vcF9uZXh0IG5leHRcbiAgYW5kIGxvb3BfbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT5cbiAgICAgIHRyYW5zZmVyICgpO1xuICAgICAgY2xvc2Ugd1xuICAgIHwgQ29ucyAoeCwgcykgLT5cbiAgICAgIFF1ZXVlLmVucXVldWUgcSB4O1xuICAgICAgbG9vcCBzXG4gIGluXG4gIGxvb3AgcztcbiAgclxuOztcblxubGV0IHRyYW5zZmVyX2dlblxuICAgICAgKHJlYWRfbm93IDogP2NvbnN1bWVyOkNvbnN1bWVyLnQgLT4gXyBSZWFkZXIudCAtPiBfKVxuICAgICAgd3JpdGVcbiAgICAgIGlucHV0XG4gICAgICBvdXRwdXRcbiAgICAgIH5mXG4gID1cbiAgaWYgIWNoZWNrX2ludmFyaWFudFxuICB0aGVuIChcbiAgICBpbnZhcmlhbnQgaW5wdXQ7XG4gICAgaW52YXJpYW50IG91dHB1dCk7XG4gIGxldCBsaW5rID0gTGluay5jcmVhdGUgfnVwc3RyZWFtOmlucHV0IH5kb3duc3RyZWFtOm91dHB1dCBpblxuICBsZXQgY29uc3VtZXIgPSBMaW5rLmNvbnN1bWVyIGxpbmsgaW5cbiAgKCogV2hlbiB3ZSdyZSBkb25lIHdpdGggW2lucHV0XSwgd2UgdW5saW5rIHRvIHJlbW92ZSBwb2ludGVycyBmcm9tXG4gICAgIFtvdXRwdXRdIHRvIFtpbnB1dF0sIHdoaWNoIHdvdWxkIGNhdXNlIGEgc3BhY2UgbGVhayBpZiB3ZSBoYWQgc2luZ2xlIGxvbmctbGl2ZWRcbiAgICAgb3V0cHV0IGludG8gd2hpY2ggd2UgdHJhbnNmZXIgbG90cyBvZiBzaG9ydC1saXZlZCBpbnB1dHMuICopXG4gIGxldCB1bmxpbmsgKCkgPSBMaW5rLnVubGlua191cHN0cmVhbSBsaW5rIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgICgqIFdlIGRvIFtyZXR1cm4gKCkgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuICopXG4gICAgcmV0dXJuICgpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIGxldCBvdXRwdXRfY2xvc2VkICgpID1cbiAgICAgIGNsb3NlX3JlYWQgaW5wdXQ7XG4gICAgICB1bmxpbmsgKCk7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmVhZF9ub3cgaW5wdXQgfmNvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+XG4gICAgICAgICAgdW5saW5rICgpO1xuICAgICAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgICAgfCBgT2sgeCAtPiBmIHggY29udGludWVcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICBjaG9vc2VcbiAgICAgICAgICAgIFsgY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIGlucHV0KSBpZ25vcmU7IGNob2ljZSAoY2xvc2VkIG91dHB1dCkgaWdub3JlIF1cbiAgICAgICAgICA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgYW5kIGNvbnRpbnVlIHkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHB1c2hiYWNrID0gd3JpdGUgb3V0cHV0IHkgaW5cbiAgICAgICAgQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgcHVzaGJhY2sgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCB0cmFuc2ZlcicgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0IH5mID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IHRyYW5zZmVyIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiByZWFkX25vdyB3cml0ZSBpbnB1dCBvdXRwdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcbjs7XG5cbmxldCB0cmFuc2Zlcl9pZCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCBvdXRwdXQgPVxuICB0cmFuc2Zlcl9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IG91dHB1dCB+ZjooZnVuIHEgayAtPiBrIHEpXG47O1xuXG5sZXQgbWFwX2dlbiByZWFkIHdyaXRlIGlucHV0IH5mID1cbiAgbGV0IGluZm8gPSBPcHRpb24ubWFwIGlucHV0LmluZm8gfmY6KGZ1biBpbmZvIC0+IFslc2V4cCBNYXBwZWQgKGluZm8gOiBTZXhwLnQpXSkgaW5cbiAgbGV0IHJlc3VsdCwgb3V0cHV0ID0gY3JlYXRlID9pbmZvICgpIGluXG4gIHVwb24gKHRyYW5zZmVyX2dlbiByZWFkIHdyaXRlIGlucHV0IG91dHB1dCB+ZikgKGZ1biAoKSAtPiBjbG9zZSBvdXRwdXQpO1xuICByZXN1bHRcbjs7XG5cbmxldCBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcF9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcblxubGV0IGNvbmNhdF9tYXBfbGlzdCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuY29uY2F0X21hcCBxIH5mKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biBxIC0+IERlZmVycmVkLlF1ZXVlLmZpbHRlcl9tYXAgcSB+Zilcbjs7XG5cbmxldCBmaWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT5cbiAgICBrIChRdWV1ZS5maWx0ZXJfbWFwIHEgfmY6KGZ1biB4IC0+IGlmIGlzX3JlYWRfY2xvc2VkIGlucHV0IHRoZW4gTm9uZSBlbHNlIGYgeCkpKVxuOztcblxubGV0IGZvbGRpbmdfZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjdW0gPSByZWYgaW5pdCBpblxuICBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZjooZnVuIHggLT5cbiAgICBsZXQlbWFwIGEsIHggPSBmICFhY2N1bSB4IGluXG4gICAgYWNjdW0gOj0gYTtcbiAgICB4KVxuOztcblxubGV0IGZvbGRpbmdfZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2N1bSA9IHJlZiBpbml0IGluXG4gIGZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IGEsIHggPSBmICFhY2N1bSB4IGluXG4gICAgYWNjdW0gOj0gYTtcbiAgICB4KVxuOztcblxubGV0IGZvbGRpbmdfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgZm9sZGluZ19maWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mOihmdW4gYWNjdW0gYSAtPlxuICAgIGxldCBhY2N1bSwgYiA9IGYgYWNjdW0gYSBpblxuICAgIGFjY3VtLCBTb21lIGIpXG47O1xuXG5sZXQgZmlsdGVyIGlucHV0IH5mID0gZmlsdGVyX21hcCBpbnB1dCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcblxubGV0IG9mX2xpc3QgbCA9XG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldDowIH5pbmZvOk5vbmUgfmluaXRpYWxfYnVmZmVyOihRdWV1ZS5vZl9saXN0IGwpIGluXG4gIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHRcbjs7XG5cbmxldCBlbXB0eSAoKSA9IG9mX2xpc3QgW11cblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHJlYWRlciwgd3JpdGVyID0gY3JlYXRlICgpIGluXG4gIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIHg7XG4gIGNsb3NlIHdyaXRlcjtcbiAgcmVhZGVyXG47O1xuXG5sZXQgdW5mb2xkIH5pbml0OnMgfmYgPVxuICAoKiBUbyBnZXQgc29tZSBiYXRjaGluZywgd2UgcnVuIHRoZSBjb250aW51YXRpb24gaW1tZWRpYXRlbHkgaWYgdGhlIGRlZmVycmVkIGlzXG4gICAgIGRldGVybWluZWQuICBIb3dldmVyLCB3ZSBhbHdheXMgY2hlY2sgZm9yIHB1c2hiYWNrLiAgQmVjYXVzZSBzaXplIGJ1ZGdldCBjYW4ndCBiZVxuICAgICBpbmZpbml0ZSwgdGhlIGJlbG93IGxvb3AgaXMgZ3VhcmFudGVlZCB0byBldmVudHVhbGx5IHlpZWxkIHRvIHRoZSBzY2hlZHVsZXIuICopXG4gIGxldCAoID4+PX4gKSBkIGYgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgfCBOb25lIC0+IGQgPj49IGZcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgY3JlYXRlX3JlYWRlciB+Y2xvc2Vfb25fZXhjZXB0aW9uOmZhbHNlIChmdW4gd3JpdGVyIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgZiBzXG4gICAgICA+Pj1+IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gcmV0dXJuICgpXG4gICAgICB8IFNvbWUgKGEsIHMpIC0+XG4gICAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXIgdGhlbiByZXR1cm4gKCkgZWxzZSB3cml0ZSB3cml0ZXIgYSA+Pj1+IGZ1biAoKSAtPiBsb29wIHNcbiAgICBpblxuICAgIGxvb3Agcylcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gIGNyZWF0ZV9yZWFkZXIgfmNsb3NlX29uX2V4Y2VwdGlvbjpmYWxzZSAoZnVuIHdyaXRlciAtPlxuICAgIGxldCByZWMgZW5xdWV1ZV9uIHNlcXVlbmNlIGkgPVxuICAgICAgaWYgaSA8PSAwXG4gICAgICB0aGVuIHNlcXVlbmNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzZXF1ZW5jZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZXF1ZW5jZVxuICAgICAgICB8IFNvbWUgKGEsIHNlcXVlbmNlKSAtPlxuICAgICAgICAgIFF1ZXVlLmVucXVldWUgd3JpdGVyLmJ1ZmZlciBhO1xuICAgICAgICAgIGVucXVldWVfbiBzZXF1ZW5jZSAoaSAtIDEpKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHNlcXVlbmNlID1cbiAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXIgfHwgU2VxdWVuY2UuaXNfZW1wdHkgc2VxdWVuY2VcbiAgICAgIHRoZW4gcmV0dXJuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgc3RhcnRfd3JpdGUgd3JpdGVyO1xuICAgICAgICBsZXQgc2VxdWVuY2UgPSBlbnF1ZXVlX24gc2VxdWVuY2UgKDEgKyB3cml0ZXIuc2l6ZV9idWRnZXQgLSBsZW5ndGggd3JpdGVyKSBpblxuICAgICAgICBmaW5pc2hfd3JpdGUgd3JpdGVyO1xuICAgICAgICBsZXQlYmluZCAoKSA9IHB1c2hiYWNrIHdyaXRlciBpblxuICAgICAgICBsb29wIHNlcXVlbmNlKVxuICAgIGluXG4gICAgbG9vcCBzZXF1ZW5jZSlcbjs7XG5cbnR5cGUgJ2EgdG9fc2VxdWVuY2VfZWx0ID1cbiAgfCBWYWx1ZSBvZiAnYVxuICB8IFdhaXRfZm9yIDogXyBEZWZlcnJlZC50IC0+IF8gdG9fc2VxdWVuY2VfZWx0XG5cbmxldCB0b19zZXF1ZW5jZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0OigpIH5mOihmdW4gKCkgLT5cbiAgICBtYXRjaCByZWFkX25vdyB0IHdpdGhcbiAgICB8IGBFb2YgLT4gTm9uZVxuICAgIHwgYE9rIGEgLT4gU29tZSAoVmFsdWUgYSwgKCkpXG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gU29tZSAoV2FpdF9mb3IgKHZhbHVlc19hdmFpbGFibGUgdCksICgpKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlX3BpcGUgaW5wdXRzID1cbiAgbGV0IG91dHB1dCwgb3V0cHV0X3dyaXRlciA9IGNyZWF0ZSB+aW5mbzpbJXNleHAgXCJQaXBlLmludGVybGVhdmVcIl0gKCkgaW5cbiAgKCogV2Uga2VlcCBhIHJlZmVyZW5jZSBjb3VudCBvZiBhbGwgdGhlIHBpcGVzIHRoYXQgW2ludGVybGVhdmVfcGlwZV0gaXMgbWFuYWdpbmc7XG4gICAgIFtpbnB1dHNdIGNvdW50cyBhcyBvbmUuICBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVybywgd2Uga25vdyB0aGF0IGFsbFxuICAgICBwaXBlcyBhcmUgY2xvc2VkIGFuZCB3ZSBjYW4gY2xvc2UgW291dHB1dF93cml0ZXJdLiAqKVxuICBsZXQgbnVtX3BpcGVzX3JlbWFpbmluZyA9IHJlZiAxIGluXG4gIGxldCBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkgPVxuICAgIGRlY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICBpZiAhbnVtX3BpcGVzX3JlbWFpbmluZyA9IDAgdGhlbiBjbG9zZSBvdXRwdXRfd3JpdGVyXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCVtYXAgKCkgPVxuICAgICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPlxuICAgICAgICAgaW5jciBudW1fcGlwZXNfcmVtYWluaW5nO1xuICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgKGxldCVtYXAgKCkgPSB0cmFuc2Zlcl9pZCBpbnB1dCBvdXRwdXRfd3JpdGVyIGluXG4gICAgICAgICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpKVxuICAgICBpblxuICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpO1xuICAoKiBmb3IgW2lucHV0c10gKilcbiAgb3V0cHV0XG47O1xuXG5sZXQgaW50ZXJsZWF2ZSBpbnB1dHMgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIGlucHV0cyB+ZjppbnZhcmlhbnQ7XG4gIGludGVybGVhdmVfcGlwZSAob2ZfbGlzdCBpbnB1dHMpXG47O1xuXG5sZXQgbWVyZ2UgaW5wdXRzIH5jb21wYXJlID1cbiAgbWF0Y2ggaW5wdXRzIHdpdGhcbiAgfCBbXSAtPiBlbXB0eSAoKVxuICB8IFsgaW5wdXQgXSAtPiBpbnB1dFxuICB8IGlucHV0cyAtPlxuICAgIGxldCBtb2R1bGUgSGVhcCA9IFBhaXJpbmdfaGVhcCBpblxuICAgIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gICAgdXBvbiAoY2xvc2VkIHcpIChmdW4gKCkgLT4gTGlzdC5pdGVyIGlucHV0cyB+ZjpjbG9zZV9yZWFkKTtcbiAgICBsZXQgaGVhcCA9IEhlYXAuY3JlYXRlIH5jbXA6KGZ1biAoYTEsIF8pIChhMiwgXykgLT4gY29tcGFyZSBhMSBhMikgKCkgaW5cbiAgICBsZXQgaGFuZGxlX3JlYWQgaW5wdXQgZW9mX29yX29rID1cbiAgICAgIG1hdGNoIGVvZl9vcl9vayB3aXRoXG4gICAgICB8IGBFb2YgLT4gKClcbiAgICAgIHwgYE9rIHYgLT4gSGVhcC5hZGQgaGVhcCAodiwgaW5wdXQpXG4gICAgaW5cbiAgICBsZXQgcmVjIHBvcF9oZWFwX2FuZF9sb29wICgpID1cbiAgICAgICgqIEF0IHRoaXMgcG9pbnQsIGFsbCBpbnB1dHMgbm90IGF0IEVvZiBvY2N1ciBpbiBbaGVhcF0gZXhhY3RseSBvbmNlLCBzbyB3ZSBrbm93XG4gICAgICAgICB3aGF0IHRoZSBuZXh0IG91dHB1dCBlbGVtZW50IGlzLiAgW3BvcF9oZWFwX2FuZF9sb29wXSByZXBlYXRlZGx5IHRha2VzIGVsZW1lbnRzXG4gICAgICAgICBmcm9tIHRoZSBpbnB1dHMgYXMgbG9uZyBhcyBpdCBoYXMgb25lIGZyb20gZWFjaCBpbnB1dC4gIFRoaXMgaXMgZG9uZVxuICAgICAgICAgc3luY2hyb25vdXNseSB0byBhdm9pZCB0aGUgY29zdCBvZiBhIGRlZmVycmVkIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIG91dHB1dCAtLVxuICAgICAgICAgdGhlcmUncyBubyBuZWVkIHRvIHB1c2hiYWNrIHNpbmNlIHRoYXQgaXMgb25seSBtb3ZpbmcgZWxlbWVudHMgZnJvbSBvbmUgcGlwZSB0b1xuICAgICAgICAgYW5vdGhlci4gIEFzIHNvb24gYXMgW3BvcF9oZWFwX2FuZF9sb29wXSBjYW4ndCBnZXQgYW4gZWxlbWVudCBmcm9tIHNvbWUgaW5wdXQsIGl0XG4gICAgICAgICB3YWl0cyBvbiBwdXNoYmFjayBmcm9tIHRoZSBvdXRwdXQsIHNpbmNlIGl0IGhhcyB0byB3YWl0IG9uIHRoZSBpbnB1dCBhbnl3YXkuXG4gICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgW21lcmdlXSBmcm9tIGNvbnN1bWluZyBpbnB1dHMgYXQgYSByYXRlIGZhc3RlciB0aGFuIGl0cyBvdXRwdXRcbiAgICAgICAgIGlzIGNvbnN1bWVkLiAqKVxuICAgICAgbWF0Y2ggSGVhcC5wb3AgaGVhcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2xvc2Ugd1xuICAgICAgfCBTb21lICh2LCBpbnB1dCkgLT5cbiAgICAgICAgaWYgbm90IChpc19jbG9zZWQgdylcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3IHY7XG4gICAgICAgICAgaWYgSGVhcC5sZW5ndGggaGVhcCA9IDBcbiAgICAgICAgICB0aGVuIHVwb24gKHRyYW5zZmVyX2lkIGlucHV0IHcpIChmdW4gKCkgLT4gY2xvc2UgdylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJlYWRfbm93IGlucHV0IHdpdGhcbiAgICAgICAgICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgeCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKVxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgcHVzaGJhY2sgd1xuICAgICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgICAgIHJlYWQgaW5wdXRcbiAgICAgICAgICAgICAgPj4+IGZ1biB4IC0+XG4gICAgICAgICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHg7XG4gICAgICAgICAgICAgIHBvcF9oZWFwX2FuZF9sb29wICgpKSlcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3B1c2ggPVxuICAgICAgRGVmZXJyZWQuTGlzdC5pdGVyIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+XG4gICAgICAgIGxldCVtYXAgeCA9IHJlYWQgaW5wdXQgaW5cbiAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeClcbiAgICBpblxuICAgIHVwb24gaW5pdGlhbF9wdXNoIHBvcF9oZWFwX2FuZF9sb29wO1xuICAgIHJcbjs7XG5cbmxldCBjb25jYXRfcGlwZSBpbnB1dHMgPVxuICBsZXQgciA9XG4gICAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgICAgbGV0IGxpbmsgPSBMaW5rLmNyZWF0ZSB+dXBzdHJlYW06aW5wdXRzIH5kb3duc3RyZWFtOncgaW5cbiAgICAgIGxldCBjb25zdW1lciA9IExpbmsuY29uc3VtZXIgbGluayBpblxuICAgICAgaXRlciB+Zmx1c2hlZDooQ29uc3VtZXIgY29uc3VtZXIpIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuICBpblxuICB1cG9uIChjbG9zZWQgcikgKGZ1biAoKSAtPiBjbG9zZSBpbnB1dHMpO1xuICByXG47O1xuXG5sZXQgY29uY2F0IGlucHV0cyA9XG4gIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiAoZnVuIHcgLT5cbiAgICBEZWZlcnJlZC5MaXN0Lml0ZXIgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT4gdHJhbnNmZXJfaWQgaW5wdXQgdykpXG47O1xuXG5sZXQgZm9yayB0IH5wdXNoYmFja191c2VzID1cbiAgbGV0IHJlYWRlcjAsIHdyaXRlcjAgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHJlYWRlcjEsIHdyaXRlcjEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT5cbiAgICAgIGxldCBzb21lX3JlYWRlcl93YXNfY2xvc2VkID0gIXNvbWVfcmVhZGVyX3dhc19jbG9zZWQgaW5cbiAgICAgIG1hdGNoJW1hcFxuICAgICAgICBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgICAgWyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMDsgZG93bnN0cmVhbV9mbHVzaGVkIHdyaXRlcjEgXVxuICAgICAgd2l0aFxuICAgICAgfCBgUmVhZGVyX2Nsb3NlZCAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgKCogSW4gdGhpcyBjYXNlLCB0aGVyZSBjb3VsZCBoYXZlIGJlZW4gbm8gcGVuZGluZyBpdGVtcyBpbiBbd3JpdGVyMF0gbm9yIGluXG4gICAgICAgICAgIFt3cml0ZXIxXSwgaW4gd2hpY2ggY2FzZSB3ZSBjb3VsZCBoYXZlIGhhZCBhIGNsb3NlZCBwaXBlIHRoYXQgbWlzc2VkIHNvbWVcbiAgICAgICAgICAgd3JpdGVzLCBidXQgW0ZsdXNoZWRfcmVzdWx0LmNvbWJpbmVdIHdvdWxkIHN0aWxsIGhhdmUgcmV0dXJuZWQgW2BPa10gKilcbiAgICAgICAgaWYgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCB0aGVuIGBSZWFkZXJfY2xvc2VkIGVsc2UgYE9rKVxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQgc3RpbGxfb3BlbiA9IFsgd3JpdGVyMDsgd3JpdGVyMSBdIGluXG4gICAgIGxldCBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuID1cbiAgICAgICAoKiBPbmx5IGNhbGwgW2ZpbHRlcl0gYW5kIHJlYWxsb2NhdGUgbGlzdCBpZiBzb21ldGhpbmcgd2lsbCBnZXQgZmlsdGVyZWQgKilcbiAgICAgICBpZiBub3QgKExpc3QuZXhpc3RzIHN0aWxsX29wZW4gfmY6aXNfY2xvc2VkKVxuICAgICAgIHRoZW4gc3RpbGxfb3BlblxuICAgICAgIGVsc2UgKFxuICAgICAgICAgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA6PSB0cnVlO1xuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBMaXN0LmZpbHRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBub3QgKGlzX2Nsb3NlZCB3KSkgaW5cbiAgICAgICAgIGlmIExpc3QuaXNfZW1wdHkgc3RpbGxfb3BlbiB0aGVuIGNsb3NlIHQ7XG4gICAgICAgICBzdGlsbF9vcGVuKVxuICAgICBpblxuICAgICBsZXQlYmluZCBzdGlsbF9vcGVuID1cbiAgICAgICBmb2xkJyB0IH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgfmluaXQ6c3RpbGxfb3BlbiB+ZjooZnVuIHN0aWxsX29wZW4gcXVldWUgLT5cbiAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuXG4gICAgICAgICB0aGVuIHJldHVybiBbXVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgIG1hdGNoIHB1c2hiYWNrX3VzZXMgd2l0aFxuICAgICAgICAgICAgIHwgYEZhc3RfY29uc3VtZXJfb25seSAtPiBEZWZlcnJlZC5hbnkgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgICAgfCBgQm90aF9jb25zdW1lcnMgLT4gRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjooZnVuIHcgLT4gY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHcgfmZyb206cXVldWUpO1xuICAgICAgICAgICBzdGlsbF9vcGVuKSlcbiAgICAgaW5cbiAgICAgTGlzdC5pdGVyIHN0aWxsX29wZW4gfmY6Y2xvc2U7XG4gICAgIHJldHVybiAoKSk7XG4gIHJlYWRlcjAsIHJlYWRlcjFcbjs7XG5cbmxldCBzZXRfaW5mbyB0IGluZm8gPSBzZXRfaW5mbyB0IChTb21lIGluZm8pXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7IGN1cnJlbnRfdmFsdWUgOiAnYSBNb3B0aW9uLnRcbiAgOyB0YWtlbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgOyBtdXRhYmxlIHZhbHVlX2F2YWlsYWJsZSA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHZhbHVlX2F2YWlsYWJsZSB0ID0gSXZhci5yZWFkIHQudmFsdWVfYXZhaWxhYmxlXG5sZXQgaXNfZW1wdHkgdCA9IE1vcHRpb24uaXNfbm9uZSB0LmN1cnJlbnRfdmFsdWVcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfICh0IDogXyB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmN1cnJlbnRfdmFsdWU6KGNoZWNrIChNb3B0aW9uLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dGFrZW46KGNoZWNrIChCdmFyLmludmFyaWFudCBVbml0LmludmFyaWFudCBpZ25vcmUpKVxuICAgICAgfnZhbHVlX2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCB2YWx1ZV9hdmFpbGFibGUpXG4gICAgICAgICAgICAgfmV4cGVjdDooTW9wdGlvbi5pc19zb21lIHQuY3VycmVudF92YWx1ZSkpKSlcbjs7XG5cbmxldCBwZWVrIHQgPSBNb3B0aW9uLmdldCB0LmN1cnJlbnRfdmFsdWVcblxubGV0IHBlZWtfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnBlZWtfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWVcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFslc2V4cCAocGVlayB0IDogYSBvcHRpb24pXVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkX3dyaXRlKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubGV0IHJlYWRfb25seSAodCA6ICgnYSwgWz4gcmVhZCBdKSB0KSA9ICh0IDo+ICgnYSwgcmVhZCkgdClcbmxldCB3cml0ZV9vbmx5ICh0IDogKCdhLCBbPiB3cml0ZSBdKSB0KSA9ICh0IDo+ICgnYSwgd3JpdGUpIHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICB7IGN1cnJlbnRfdmFsdWUgPSBNb3B0aW9uLmNyZWF0ZSAoKVxuICA7IHRha2VuID0gQnZhci5jcmVhdGUgKClcbiAgOyB2YWx1ZV9hdmFpbGFibGUgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgdGFrZV9ub25lbXB0eSB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IHIgPSBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWUgaW5cbiAgTW9wdGlvbi5zZXRfbm9uZSB0LmN1cnJlbnRfdmFsdWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQudGFrZW4gKCk7XG4gIHQudmFsdWVfYXZhaWxhYmxlIDwtIEl2YXIuY3JlYXRlICgpO1xuICByXG47O1xuXG5sZXQgdGFrZV9ub3dfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnRha2VfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICB0YWtlX25vbmVtcHR5IHRcbjs7XG5cbmxldCB0YWtlX25vdyB0ID0gaWYgbm90IChpc19lbXB0eSB0KSB0aGVuIFNvbWUgKHRha2Vfbm9uZW1wdHkgdCkgZWxzZSBOb25lXG5cbmxldCByZWMgdGFrZSB0ID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiAodGFrZV9ub25lbXB0eSB0KVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgdGFrZSB0KVxuOztcblxubGV0IHNldCB0IHYgPVxuICBNb3B0aW9uLnNldF9zb21lIHQuY3VycmVudF92YWx1ZSB2O1xuICBJdmFyLmZpbGxfaWZfZW1wdHkgdC52YWx1ZV9hdmFpbGFibGUgKClcbjs7XG5cbmxldCB1cGRhdGUgdCB+ZiA9IHNldCB0IChmIChwZWVrIHQpKVxubGV0IHVwZGF0ZV9leG4gdCB+ZiA9IHNldCB0IChmIChwZWVrX2V4biB0KSlcbmxldCB0YWtlbiB0ID0gQnZhci53YWl0IHQudGFrZW5cblxubGV0IHJlYyBwdXQgdCB2ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIChcbiAgICBzZXQgdCB2O1xuICAgIHJldHVybiAoKSlcbiAgZWxzZSAoXG4gICAgbGV0JWJpbmQgKCkgPSB0YWtlbiB0IGluXG4gICAgcHV0IHQgdilcbjs7XG5cbmxldCBwaXBlX3doZW5fcmVhZHkgdCA9XG4gIGxldCByLCB3ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB3KVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggdGFrZV9ub3cgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoKVxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgbGV0JWJpbmQgKCkgPSBQaXBlLndyaXRlIHcgeCBpblxuICAgICAgICBsb29wICgpKVxuICAgIGVsc2UgcmV0dXJuICgpXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yIChsb29wICgpKTtcbiAgclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogdW5pdCBJdmFyLnRcbiAgICA7IHJlc3VsdCA6ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9vcl9lcnJvciBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdhaXQgdCA9IHQucmVzdWx0XG4gIGxldCB3YWl0X2V4biB0ID0gd2FpdCB0ID4+fCBva19leG5cbiAgbGV0IHN0YXJ0IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC5zdGFydCAoKVxuXG4gIGxldCBmb3JjZSB0ID1cbiAgICBzdGFydCB0O1xuICAgIHdhaXQgdFxuICA7O1xuXG4gIGxldCBmb3JjZV9leG4gdCA9IGZvcmNlIHQgPj58IG9rX2V4blxuICBsZXQgcmV0dXJuIGEgPSBjcmVhdGUgKGZ1biAoKSAtPiByZXR1cm4gYSlcblxuICBsZXQgYmluZCB0IH5mID1cbiAgICBjcmVhdGUgKGZ1biAoKSAtPlxuICAgICAgbGV0JWJpbmQgYSA9IGZvcmNlX2V4biB0IGluXG4gICAgICBmb3JjZV9leG4gKGYgYSkpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gKCkgLT4gZm9yY2VfZXhuIHQgPj58IGYpXG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBNb25hZC5NYWtlIChUKVxuXG5sZXQgYmluZCcgdCBmID0gYmluZCB0IH5mOihmdW4gYSAtPiBjcmVhdGUgKGZ1biAoKSAtPiBmIGEpKVxubGV0IGlzX2ZvcmNlZCB0ID0gSXZhci5pc19mdWxsIHQuc3RhcnRcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHQucmVzdWx0XG5sZXQgcGVlayB0ID0gRGVmZXJyZWQucGVlayB0LnJlc3VsdFxubGV0IHBlZWtfZXhuIHQgPSBPcHRpb24ubWFwIChwZWVrIHQpIH5mOm9rX2V4blxuIiwib3BlbiBDb3JlXG5cbnR5cGUgJ2EgdCA9IHsgd2FpdHMgOiAnYSBJdmFyLnQgUXVldWUudCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgKCkgPSB7IHdhaXRzID0gUXVldWUuY3JlYXRlICgpIH1cbmxldCB3YWl0IHQgPSBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IFF1ZXVlLmVucXVldWUgdC53YWl0cyBpdmFyKVxubGV0IHNpZ25hbCB0IGEgPSBPcHRpb24uaXRlciAoUXVldWUuZGVxdWV1ZSB0LndhaXRzKSB+ZjooZnVuIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYSlcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBRdWV1ZS5pdGVyIHQud2FpdHMgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpO1xuICBRdWV1ZS5jbGVhciB0LndhaXRzXG47O1xuIiwib3BlbiBDb3JlXG5pbmNsdWRlIEdjXG5cbigqKiBbYWRkX2ZpbmFsaXplciBmIHhdIGlzIGxpa2UgW0djLmZpbmFsaXNlIGYgeF0sIGV4Y2VwdCB0aGF0IHRoZSBmaW5hbGl6ZXIgaXMgZ3VhcmFudGVlZFxuICAgIHRvIHJ1biBhcyBhbiBBc3luYyBqb2IgKGkuZS4gd2l0aG91dCBpbnRlcnJ1cHRpbmcgb3RoZXIgQXN5bmMgam9icykuICBVbnByb3RlY3RlZCB1c2VcbiAgICBvZiBbQ2FtbC5HYy5maW5hbGlzZV0gb3IgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gaW4gQXN5bmMgcHJvZ3JhbXMgaXMgd3JvbmcsIGJlY2F1c2VcbiAgICB0aGUgZmluYWxpemVycyB3b24ndCBob2xkIHRoZSBhc3luYyBsb2NrLCBhbmQgdGh1cyBjb3VsZCBpbnRlcmxlYXZlIGFyYml0cmFyaWx5IHdpdGhcbiAgICBhc3luYyBqb2JzLiAqKVxubGV0IGFkZF9maW5hbGl6ZXIgaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2V4biBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfZXhuICh0ICgpKSkgaGVhcF9ibG9jayBmXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0ICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIGhlYXBfYmxvY2sgZiA9XG4gIFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0X2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxuOztcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IEdjLkV4cGVydC5BbGFybVxuXG4gIHR5cGUgdCA9IEFsYXJtLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIGYgPSBTY2hlZHVsZXIuKGNyZWF0ZV9hbGFybSAodCAoKSkpIGZcbiAgbGV0IGRlbGV0ZSA9IEFsYXJtLmRlbGV0ZVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBzaWduYXR1cmVzIHRoYXQgZXh0ZW5kIFtDb3JlLkludmFyaWFudF0gd2l0aCBhbiBbQXN5bmNdXG4gICAgc3VibW9kdWxlIGZvciBpbnZhcmlhbnRzIHRoYXQgdXNlIGFzeW5jIGNvbXB1dGF0aW9uIGFuZCByZXR1cm4gW3VuaXQgRGVmZXJyZWQudF0uICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHR5cGUgJ2EgaW52ID0gJ2EgdFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYSB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gKCdhLCAnYikgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdiIGludiAtPiAnYyBpbnYgLT4gKCdhLCAnYiwgJ2MpIHQgaW52XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFzeW5jX2ludmFyaWFudCA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIENvcmUuSW52YXJpYW50XG5cbiAgbW9kdWxlIEFzeW5jIDogc2lnXG4gICAgb3BlbiBBc3luY1xuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIEFzeW5jLnRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICAgIG1vZHVsZSB0eXBlIFMyID0gUzJcbiAgICBtb2R1bGUgdHlwZSBTMyA9IFMzXG5cbiAgICB2YWwgaW52YXJpYW50XG4gICAgICA6ICBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgICAtPiAnYVxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICAgKCoqIFtjaGVja19maWVsZF0gY2FuIGJlIHVzZWQgdG8gY2hlY2sgcmVjb3JkIGZpZWxkcyB3aGVuIHVzaW5nIFtbQEBkZXJpdmluZyBmaWVsZHNdXS5cbiAgICAgICAgSWRpb21hdGljIHVzYWdlIGxvb2tzIGxpa2U6XG5cbiAgICAgICAge1tcbiAgICAgICAgICB0eXBlIHQgPSB7IGZvbyA6IEZvby50IDsgYmFyIDogQmFyLnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286IChjaGVjayBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6IChjaGVjayBCYXIuaW52YXJpYW50KSBdfVxuXG4gICAgICAgIFdoZW4gc29tZSBmaWVsZHMgaGF2ZSBzeW5jaHJvbm91cyBpbnZhcmlhbnRzLCBvciBkbyBub3QgbmVlZCB0byBiZSBjaGVja2VkLCBpdFxuICAgICAgICBtYXkgYmUgdXNlZnVsIHRvIGRlZmluZSBhIHNlY29uZCB3cmFwcGVyIGFyb3VuZCBbY2hlY2tfZmllbGRdOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IDsgcXV1eCA6IFF1dXgudCB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgICAgIEludmFyaWFudC5Bc3luYy5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgY2hlY2snIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBsZXQgY2hlY2sgaW52ID0gY2hlY2snIChmdW4geCAtPiBpbnYgeDsgcmV0dXJuICgpKSBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286ICAoY2hlY2snIEZvby5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfmJhcjogIChjaGVjayAgQmFyLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+cXV1eDogKGNoZWNrICBpZ25vcmUpIF19ICopXG4gICAgdmFsIGNoZWNrX2ZpZWxkIDogJ2EgLT4gJ2IgdCAtPiB1bml0IERlZmVycmVkLnQgLT4gKCdhLCAnYikgRmllbGQudCAtPiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIERlZmVycmVkLkxldF9zeW50YXhcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb3JlLkludmFyaWFudFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3luY19pbnZhcmlhbnRfaW50Zi5Bc3luY1xuXG4gIGxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpcbiAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICBmXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIiB+XzooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpIChleG4gOiBleG4pIH5fOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ZpZWxkIHQgZiB3YWl0X2Zvcl9wcmV2aW91cyBmaWVsZCA9XG4gICAgbGV0JWJpbmQgKCkgPSB3YWl0X2Zvcl9wcmV2aW91cyBpblxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOlxuICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgICAgIChmdW4gKCkgLT4gZiAoRmllbGQuZ2V0IGZpZWxkIHQpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwicHJvYmxlbSB3aXRoIGZpZWxkXCIgfmZpZWxkOihGaWVsZC5uYW1lIGZpZWxkIDogc3RyaW5nKSAoZXhuIDogZXhuKV1cbiAgOztcbmVuZFxuIiwiKCoqIENvbnRhaW5zIEFzeW5jJ3MgY29yZSBkYXRhIHN0cnVjdHVyZXMsIGxpa2Uge3shQXN5bmNfa2VybmVsLkRlZmVycmVkfVtEZWZlcnJlZF19LFxuICAgIHt7IUFzeW5jX2tlcm5lbC5JdmFyfVtJdmFyXX0sIGFuZCB7eyFBc3luY19rZXJuZWwuQ2xvY2tfaW50Zi5DbG9ja31bQ2xvY2tdfS5cblxuICAgIFtBc3luY19rZXJuZWxdIGlzIGRlc2lnbmVkIHRvIGRlcGVuZCBvbmx5IG9uIHt7IUNvcmV9W0NvcmVdfSBhbmQgc28gaXMgbW9yZVxuICAgIHBsYXRmb3JtLWluZGVwZW5kZW50LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBc3luY19rZXJuZWxfY29uZmlnID0gQXN5bmNfa2VybmVsX2NvbmZpZ1xubW9kdWxlIEFzeW5jX2tlcm5lbF9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlID0gUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgQnZhciA9IEJ2YXJcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgQ29uZGl0aW9uID0gQXN5bmNfY29uZGl0aW9uXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZFxubW9kdWxlIEV4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHRcbm1vZHVsZSBHYyA9IEFzeW5jX2djXG5tb2R1bGUgSW52YXJpYW50ID0gQXN5bmNfaW52YXJpYW50XG5tb2R1bGUgSXZhciA9IEl2YXJcbm1vZHVsZSBMYXp5X2RlZmVycmVkID0gTGF6eV9kZWZlcnJlZFxubW9kdWxlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2Vcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvclxubW9kdWxlIE12YXIgPSBNdmFyXG5tb2R1bGUgUGlwZSA9IFBpcGVcbm1vZHVsZSBQcmlvcml0eSA9IFByaW9yaXR5XG5tb2R1bGUgU2VxdWVuY2VyID0gVGhyb3R0bGUuU2VxdWVuY2VyXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZVxubW9kdWxlIFRhaWwgPSBUYWlsXG5tb2R1bGUgVGhyb3R0bGUgPSBUaHJvdHRsZVxubW9kdWxlIFRpbWVfc291cmNlID0gVGltZV9zb3VyY2VcblxuXG4oKiogezIgVG9wbGV2ZWwgZnVuY3Rpb25zIH1cblxuICAgIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGJyb2FkbHkgdXNlZnVsIHdoZW4gd3JpdGluZyBBc3luYyBwcm9ncmFtcywgYW5kIHNvIGFyZSBtYWRlXG4gICAgYXZhaWxhYmxlIGF0IHRoZSB0b3BsZXZlbC4gKilcblxuXG5sZXQgYWZ0ZXIgPSBDbG9ja19ucy5hZnRlclxubGV0IGF0ID0gQ2xvY2tfbnMuYXRcbmxldCBjYXRjaCA9IE1vbml0b3IuY2F0Y2hcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IERlZmVycmVkLmRvbid0X3dhaXRfZm9yXG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBzY2hlZHVsZSA9IFNjaGVkdWxlci5zY2hlZHVsZVxubGV0IHNjaGVkdWxlJyA9IFNjaGVkdWxlci5zY2hlZHVsZSdcbmxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxubGV0IHdpdGhpbiA9IFNjaGVkdWxlci53aXRoaW5cbmxldCB3aXRoaW4nID0gU2NoZWR1bGVyLndpdGhpbidcblxuKCoqIHsyIEluZml4IG9wZXJhdG9ycyBhbmQgW0xldF9zeW50YXhdIHN1cHBvcnR9ICopXG5cbmluY2x1ZGUgKERlZmVycmVkIDogTW9uYWQuSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgRGVmZXJyZWQudClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC51cG9ufS4gKilcbmxldCAoID4+PiApID0gRGVmZXJyZWQuSW5maXguKCA+Pj4gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5iaW5kfS4gKilcbmxldCAoID4+PT8gKSA9IERlZmVycmVkLlJlc3VsdC4oID4+PSApXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQuUmVzdWx0Lm1hcH0uICopXG5sZXQgKCA+Pnw/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+PnwgKVxuXG5pbmNsdWRlIERlZmVycmVkLkxldF9zeW50YXhcblxuKCoqLyoqKVxuXG4oKiogVGhlIG1vZHVsZXMgaW4gW0FzeW5jX2tlcm5lbF9wcml2YXRlXSBhcmUgdXNlZCBmb3IgY29uc3RydWN0aW5nIGFuZCB0ZXN0aW5nIEFzeW5jLCBhbmRcbiAgICBzaG91bGQgbm90IG90aGVyd2lzZSBiZSB1c2VkLiAqKVxubW9kdWxlIEFzeW5jX2tlcm5lbF9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBEZWJ1ZyA9IERlYnVnXG4gIG1vZHVsZSBJdmFyMCA9IEl2YXIwXG4gIG1vZHVsZSBJdmFyX2ZpbGxlciA9IEl2YXJfZmlsbGVyXG4gIG1vZHVsZSBKb2IgPSBKb2JcbiAgbW9kdWxlIFN0YWNrX29yX2NvdW50ZXIgPSBTdGFja19vcl9jb3VudGVyXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBUaGlzIHRlc3QgbXVzdCBiZSBpbiB0aGlzIGxpYnJhcnksIGJlY2F1c2UgaXQgcmVxdWlyZXMgW3JldHVybl0gdG8gYmUgaW5saW5lZC4gIE1vdmluZ1xuICAgaXQgdG8gYW5vdGhlciBsaWJyYXJ5IHdpbGwgY2F1c2UgaXQgdG8gYnJlYWsgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlXS4gKilcbmxldCV0ZXN0X3VuaXQgXCJbcmV0dXJuICgpXSBkb2VzIG5vdCBhbGxvY2F0ZVwiID1cbiAgbGV0IHcxID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChyZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLkxldF9zeW50YXguTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgbGV0IHcyID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgWyV0ZXN0X3Jlc3VsdDogaW50XSB3MiB+ZXhwZWN0OncxXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsX2ludGZcblxubW9kdWxlIE1ha2UgKENvbm4gOiBDbG9zYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm4gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENvbm5cblxuICAgIGxldCBzZXhwX29mX3QgKF8gOiB0KSA6IFNleHAudCA9IEF0b20gXCI8Q29ubi50PlwiXG4gIGVuZFxuXG4gIHR5cGUgY29ubiA9IENvbm4udFxuXG4gIG1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdFxuICAgICAgfCBPYnRhaW5lZF9hZGRyZXNzIG9mICdhZGRyZXNzXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IG9mIEVycm9yLnRcbiAgICAgIHwgQ29ubmVjdGVkIG9mIChjb25uW0BzZXhwLm9wYXF1ZV0pXG4gICAgICB8IERpc2Nvbm5lY3RlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhZGRyZXNzIGV2ZW50ID0gJ2FkZHJlc3MgdFxuXG4gICAgbW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICAgIHsgc2VydmVyX25hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvbl9ldmVudCA6ICdhZGRyZXNzIGV2ZW50IC0+IHVuaXQgRGVmZXJyZWQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IGxvZ19sZXZlbCA9IGZ1bmN0aW9uXG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCB8IENvbm5lY3RlZCBfIHwgRGlzY29ubmVjdGVkIHwgT2J0YWluZWRfYWRkcmVzcyBfIC0+IGBJbmZvXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IF8gLT4gYEVycm9yXG4gICAgOztcblxuICAgIGxldCBoYW5kbGUgdCB7IEhhbmRsZXIuc2VydmVyX25hbWUgPSBfOyBvbl9ldmVudCB9ID0gb25fZXZlbnQgdFxuICBlbmRcblxuICAoKiBBIHBlcnNpc3RlbnQgY29ubmVjdGlvbiB0aGF0IGlzIHBvbHltb3JwaGljIGluIHRoZSBhZGRyZXNzIHR5cGUuICBXZSBoaWRlIGF3YXkgdGhpc1xuICAgICB0eXBlIGxhdGVyIHNpbmNlIGl0IG9ubHkgYXBwZWFycyBpbiB0aGUgdHlwZSBvZiBbY3JlYXRlXS4gKilcbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgeyBnZXRfYWRkcmVzcyA6IHVuaXQgLT4gJ2FkZHJlc3MgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IGNvbm5lY3QgOiAnYWRkcmVzcyAtPiBDb25uLnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IHJldHJ5X2RlbGF5IDogdW5pdCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZSBjb25uIDogWyBgT2sgb2YgQ29ubi50IHwgYENsb3NlX3N0YXJ0ZWQgXSBJdmFyLnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2Nvbm5lY3RfcmVzdWx0IDogQ29ubi50IE9yX2Vycm9yLnQgSXZhci50XG4gICAgICA7IGV2ZW50X2hhbmRsZXIgOiAnYWRkcmVzcyBFdmVudC5IYW5kbGVyLnRcbiAgICAgIDsgY2xvc2Vfc3RhcnRlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgZG9uJ3RfcmVjb25uZWN0IDogdW5pdCBJdmFyLnRcbiAgICAgIDsgYWRkcmVzc19lcXVhbCA6ICdhZGRyZXNzIC0+ICdhZGRyZXNzIC0+IGJvb2xcbiAgICAgIDsgc2V4cF9vZl9hZGRyZXNzIDogJ2FkZHJlc3MgLT4gU2V4cC50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHNlcnZlcl9uYW1lIHQgPSB0LmV2ZW50X2hhbmRsZXIuc2VydmVyX25hbWVcbiAgICBsZXQgaGFuZGxlX2V2ZW50IHQgZXZlbnQgPSBFdmVudC5oYW5kbGUgZXZlbnQgdC5ldmVudF9oYW5kbGVyXG5cbiAgICAoKiBUaGlzIGZ1bmN0aW9uIGZvY3VzZXMgaW4gb24gdGhlIHRoZSBlcnJvciBpdHNlbGYsIGRpc2NhcmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2hcbiAgICAgICBtb25pdG9yIGNhdWdodCB0aGUgZXJyb3IsIGlmIGFueS5cblxuICAgICAgIElmIHdlIGRvbid0IGRvIHRoaXMsIHdlIHNvbWV0aW1lcyBlbmQgdXAgd2l0aCBub2lzeSBsb2dzIHdoaWNoIHJlcG9ydCB0aGUgc2FtZSBlcnJvclxuICAgICAgIGFnYWluIGFuZCBhZ2FpbiwgZGlmZmVyaW5nIG9ubHkgYXMgdG8gd2hhdCBtb25pdG9yIGNhdWdodCB0aGVtLiAqKVxuICAgIGxldCBzYW1lX2Vycm9yIGUxIGUyID1cbiAgICAgIGxldCB0b19zZXhwIGUgPSBFeG4uc2V4cF9vZl90IChNb25pdG9yLmV4dHJhY3RfZXhuIChFcnJvci50b19leG4gZSkpIGluXG4gICAgICBTZXhwLmVxdWFsICh0b19zZXhwIGUxKSAodG9fc2V4cCBlMilcbiAgICA7O1xuXG4gICAgKCogQ29udGludWUgdHJ5aW5nIHRvIGNvbm5lY3QgdW50aWwgd2UgYXJlIGFibGUgdG8gZG8gc28sIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGJvdGhcbiAgICAgICB0aGUgbmV3IGNvbm5lY3Rpb24gYW5kIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIG9uY2Ugd2UgYXJlIHJlYWR5IGZvclxuICAgICAgIHRoZSBuZXh0IHJlY29ubmVjdGlvbiBhdHRlbXB0LiAqKVxuICAgIGxldCB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHQgPVxuICAgICAgKCogV2UgdGFrZSBjYXJlIG5vdCB0byBzcGFtIGxvZ3Mgd2l0aCB0aGUgc2FtZSBtZXNzYWdlIG92ZXIgYW5kIG92ZXIgYnkgY29tcGFyaW5nXG4gICAgICAgICBlYWNoIGxvZyBtZXNzYWdlIHRoZSB0aGUgcHJldmlvdXMgb25lIG9mIHRoZSBzYW1lIHR5cGUuICopXG4gICAgICBsZXQgcHJldmlvdXNfYWRkcmVzcyA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgcHJldmlvdXNfZXJyb3IgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICB0LmdldF9hZGRyZXNzICgpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIGFkZHIgLT5cbiAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19hZGRyZXNzID1cbiAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2FkZHJlc3MgLT4gdC5hZGRyZXNzX2VxdWFsIGFkZHIgcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgcHJldmlvdXNfYWRkcmVzcyA6PSBTb21lIGFkZHI7XG4gICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoT2J0YWluZWRfYWRkcmVzcyBhZGRyKSlcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+IHQuY29ubmVjdCBhZGRyXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICB0aGVuIHJldHVybiBgQ2xvc2Vfc3RhcnRlZFxuICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICB0aGVuIHJldHVybiBgRG9uJ3RfcmVjb25uZWN0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nID0gdC5yZXRyeV9kZWxheSAoKSBpblxuICAgICAgICAgIGxldCViaW5kIGNvbm5lY3RfcmVzdWx0ID0gY29ubmVjdCAoKSBpblxuICAgICAgICAgIEl2YXIuZmlsbCB0Lm5leHRfY29ubmVjdF9yZXN1bHQgY29ubmVjdF9yZXN1bHQ7XG4gICAgICAgICAgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIG1hdGNoIGNvbm5lY3RfcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIGNvbm4gLT4gcmV0dXJuIChgT2sgKGNvbm4sIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmcpKVxuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19lcnJvciA9XG4gICAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19lcnJvciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICB8IFNvbWUgcHJldmlvdXNfZXJyIC0+IHNhbWVfZXJyb3IgZXJyIHByZXZpb3VzX2VyclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHByZXZpb3VzX2Vycm9yIDo9IFNvbWUgZXJyO1xuICAgICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfZXJyb3JcbiAgICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgICBlbHNlIGhhbmRsZV9ldmVudCB0IChGYWlsZWRfdG9fY29ubmVjdCBlcnIpKVxuICAgICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgRGVmZXJyZWQuYW55XG4gICAgICAgICAgICAgIFsgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZ1xuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgPj49IGZ1biAoKSAtPiBsb29wICgpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQgPVxuICAgICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCAoKTtcbiAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpO1xuICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZFxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgKHR5cGUgYWRkcmVzcylcbiAgICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgICA/KG9uX2V2ZW50ID0gZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbiAgICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgICA/KHJhbmRvbV9zdGF0ZSA9IGBTdGF0ZSBSYW5kb20uU3RhdGUuZGVmYXVsdClcbiAgICAgICAgICA/KHRpbWVfc291cmNlID0gVGltZV9zb3VyY2Uud2FsbF9jbG9jayAoKSlcbiAgICAgICAgICB+Y29ubmVjdFxuICAgICAgICAgIH5hZGRyZXNzOihtb2R1bGUgQWRkcmVzcyA6IEFkZHJlc3Mgd2l0aCB0eXBlIHQgPSBhZGRyZXNzKVxuICAgICAgICAgIGdldF9hZGRyZXNzXG4gICAgICA9XG4gICAgICBsZXQgZXZlbnRfaGFuZGxlciA9IHsgRXZlbnQuSGFuZGxlci5zZXJ2ZXJfbmFtZTsgb25fZXZlbnQgfSBpblxuICAgICAgbGV0IGRlZmF1bHRfcmV0cnlfZGVsYXkgPVxuICAgICAgICBGbi5jb25zdCAoVGltZV9ucy5TcGFuLm9mX3NlYyAoaWYgYW1fcnVubmluZ190ZXN0IHRoZW4gMC4xIGVsc2UgMTAuKSlcbiAgICAgIGluXG4gICAgICBsZXQgbm9uX3JhbmRvbWl6ZWRfZGVsYXkgPSBPcHRpb24udmFsdWUgcmV0cnlfZGVsYXkgfmRlZmF1bHQ6ZGVmYXVsdF9yZXRyeV9kZWxheSBpblxuICAgICAgbGV0IHJldHJ5X2RlbGF5X3NwYW4gPVxuICAgICAgICBtYXRjaCByYW5kb21fc3RhdGUgd2l0aFxuICAgICAgICB8IGBOb25fcmFuZG9tIC0+IG5vbl9yYW5kb21pemVkX2RlbGF5XG4gICAgICAgIHwgYFN0YXRlIHJhbmRvbV9zdGF0ZSAtPlxuICAgICAgICAgIGZ1biAoKSAtPlxuICAgICAgICAgICAgbGV0IHNwYW4gPSBub25fcmFuZG9taXplZF9kZWxheSAoKSBpblxuICAgICAgICAgICAgbGV0IHNwYW4gPSBUaW1lX25zLlNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgICAgIGxldCBkaXN0YW5jZSA9IFJhbmRvbS5TdGF0ZS5mbG9hdCByYW5kb21fc3RhdGUgKHNwYW4gKi4gMC4zKSBpblxuICAgICAgICAgICAgbGV0IHdhaXQgPVxuICAgICAgICAgICAgICBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGVcbiAgICAgICAgICAgICAgdGhlbiBzcGFuICsuIGRpc3RhbmNlXG4gICAgICAgICAgICAgIGVsc2Ugc3BhbiAtLiBkaXN0YW5jZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9zZWMgd2FpdFxuICAgICAgaW5cbiAgICAgIGxldCByZXRyeV9kZWxheSAoKSA9IFRpbWVfc291cmNlLmFmdGVyIHRpbWVfc291cmNlIChyZXRyeV9kZWxheV9zcGFuICgpKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICB7IGV2ZW50X2hhbmRsZXJcbiAgICAgICAgOyBnZXRfYWRkcmVzc1xuICAgICAgICA7IGNvbm5lY3RcbiAgICAgICAgOyBuZXh0X2Nvbm5lY3RfcmVzdWx0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyByZXRyeV9kZWxheVxuICAgICAgICA7IGNvbm4gPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX2ZpbmlzaGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBkb24ndF9yZWNvbm5lY3QgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGFkZHJlc3NfZXF1YWwgPSBBZGRyZXNzLmVxdWFsXG4gICAgICAgIDsgc2V4cF9vZl9hZGRyZXNzID0gQWRkcmVzcy5zZXhwX29mX3RcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgICgqIHRoaXMgbG9vcCBmaW5pc2hlcyBvbmNlIFtjbG9zZSB0XSBoYXMgYmVlbiBjYWxsZWQsIGluIHdoaWNoIGNhc2UgaXQgbWFrZXMgc3VyZSB0b1xuICAgICAgICAgbGVhdmUgW3QuY29ubl0gZmlsbGVkIHdpdGggW2BDbG9zZV9zdGFydGVkXS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICBAQCBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKCkgKGZ1biAoKSAtPlxuICAgICAgICBoYW5kbGVfZXZlbnQgdCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHRcbiAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkO1xuICAgICAgICAgIHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBEb24ndF9yZWNvbm5lY3QgLT5cbiAgICAgICAgICBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0O1xuICAgICAgICAgIHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBPayAoY29ubiwgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZykgLT5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIChgT2sgY29ubik7XG4gICAgICAgICAgaGFuZGxlX2V2ZW50IHQgKENvbm5lY3RlZCBjb25uKVxuICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICBDb25uLmNsb3NlX2ZpbmlzaGVkIGNvbm5cbiAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgdC5jb25uIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIGhhbmRsZV9ldmVudCB0IERpc2Nvbm5lY3RlZFxuICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAoKiB3YWl0cyB1bnRpbCBbcmV0cnlfZGVsYXkgKCldIHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGUgdGltZSBqdXN0IGJlZm9yZSB3ZSBsYXN0XG4gICAgICAgICAgICAgdHJpZWQgdG8gY29ubmVjdCByYXRoZXIgdGhhbiB0aGUgdGltZSB3ZSBub3RpY2VkIGJlaW5nIGRpc2Nvbm5lY3RlZCwgc28gdGhhdCBpZlxuICAgICAgICAgICAgIGEgbG9uZy1saXZlZCBjb25uZWN0aW9uIGRpZXMsIHdlIHdpbGwgYXR0ZW1wdCB0byByZWNvbm5lY3QgaW1tZWRpYXRlbHkuICopXG4gICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgICBEZWZlcnJlZC5hbnlcbiAgICAgICAgICAgICAgWyByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkO1xuICAgICAgICAgICAgYEZpbmlzaGVkICgpKVxuICAgICAgICAgIGVsc2UgaWYgSXZhci5pc19mdWxsIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0O1xuICAgICAgICAgICAgYEZpbmlzaGVkICgpKVxuICAgICAgICAgIGVsc2UgYFJlcGVhdCAoKSk7XG4gICAgICB0XG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWQgdCA9XG4gICAgICAoKiBUYWtlIGNhcmUgbm90IHRvIHJldHVybiBhIGNvbm5lY3Rpb24gdGhhdCBpcyBrbm93biB0byBiZSBjbG9zZWQgYXQgdGhlIHRpbWVcbiAgICAgICAgIFtjb25uZWN0ZWRdIHdhcyBjYWxsZWQuICBUaGlzIGNvdWxkIGhhcHBlbiBpbiBjbGllbnQgY29kZSB0aGF0IGJlaGF2ZXMgbGlrZVxuICAgICAgICAge1tcbiAgICAgICAgICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jb25uZWN0ZWQgdFxuICAgICAgICAgICA+Pj0gZnVuIGMxIC0+XG4gICAgICAgICAgIC4uLlxuICAgICAgICAgICAgIFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIGMxXG4gICAgICAgICAgICgqIGF0IHRoaXMgcG9pbnQgd2UgYXJlIGluIGEgcmFjZSB3aXRoIHRoZSBzYW1lIGNhbGwgaW5zaWRlXG4gICAgICAgICAgICAgIHBlcnNpc3RlbnRfY2xpZW50Lm1sICopXG4gICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jb25uZWN0ZWQgdFxuICAgICAgICAgICAoKiBkZXBlbmRpbmcgb24gaG93IHRoZSByYWNlIHR1cm5zIG91dCwgd2UgZG9uJ3Qgd2FudCB0byBnZXQgYSBjbG9zZWQgY29ubmVjdGlvblxuICAgICAgICAgICAgICBoZXJlICopXG4gICAgICAgICAgID4+PSBmdW4gYzIgLT5cbiAgICAgICAgICAgLi4uXG4gICAgICAgICBdfVxuICAgICAgICAgVGhpcyBkb2Vzbid0IHJlbW92ZSB0aGUgcmFjZSBjb25kaXRpb24sIGJ1dCBpdCBtYWtlcyBpdCBsZXNzIGxpa2VseSB0byBoYXBwZW4uXG4gICAgICAqKVxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgbGV0IGQgPSBJdmFyLnJlYWQgdC5jb25uIGluXG4gICAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGRcbiAgICAgICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgICAgICAgICB8IGBPayBjb25uIC0+IHJldHVybiBjb25uKVxuICAgICAgICB8IFNvbWUgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICAgICAgfCBTb21lIChgT2sgY29ubikgLT5cbiAgICAgICAgICBpZiBDb25uLmlzX2Nsb3NlZCBjb25uXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgKCogZ2l2ZSB0aGUgcmVjb25uZWN0aW9uIGxvb3AgYSBjaGFuY2UgdG8gb3ZlcndyaXRlIHRoZSBpdmFyICopXG4gICAgICAgICAgICBDb25uLmNsb3NlX2ZpbmlzaGVkIGNvbm4gPj49IGxvb3BcbiAgICAgICAgICBlbHNlIHJldHVybiBjb25uXG4gICAgICBpblxuICAgICAgbG9vcCAoKVxuICAgIDs7XG5cbiAgICBsZXQgY3VycmVudF9jb25uZWN0aW9uIHQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIHQuY29ubikgd2l0aFxuICAgICAgfCBOb25lIHwgU29tZSBgQ2xvc2Vfc3RhcnRlZCAtPiBOb25lXG4gICAgICB8IFNvbWUgKGBPayBjb25uKSAtPiBTb21lIGNvbm5cbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZV9maW5pc2hlZFxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcblxuICAgIGxldCBjbG9zZSB0ID1cbiAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgIHRoZW5cbiAgICAgICAgKCogQW5vdGhlciBjYWxsIHRvIGNsb3NlIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuICBXYWl0IGZvciBpdCB0byBmaW5pc2guICopXG4gICAgICAgIGNsb3NlX2ZpbmlzaGVkIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkICgpO1xuICAgICAgICBJdmFyLnJlYWQgdC5jb25uXG4gICAgICAgID4+PSBmdW4gY29ubl9vcHQgLT5cbiAgICAgICAgKG1hdGNoIGNvbm5fb3B0IHdpdGhcbiAgICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgfCBgT2sgY29ubiAtPiBDb25uLmNsb3NlIGNvbm4pXG4gICAgICAgID4+fCBmdW4gKCkgLT4gSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCkpXG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWQgPVxuICAgICAgT3JfZXJyb3IuZXJyb3JfcyBbJW1lc3NhZ2UgXCJQZXJzaXN0ZW50IGNvbm5lY3Rpb24gY2xvc2VkXCJdXG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgdCA9XG4gICAgICBpZiBpc19jbG9zZWQgdFxuICAgICAgdGhlbiByZXR1cm4gY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggY3VycmVudF9jb25uZWN0aW9uIHQgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIG5vdCAoQ29ubi5pc19jbG9zZWQgeCkgLT4gcmV0dXJuIChPayB4KVxuICAgICAgICB8IFNvbWUgKF8gOiBDb25uLnQpIHwgTm9uZSAtPlxuICAgICAgICAgIERlZmVycmVkLmNob29zZVxuICAgICAgICAgICAgWyBjaG9pY2UgKEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWQpXG4gICAgICAgICAgICA7IGNob2ljZSAoSXZhci5yZWFkIHQubmV4dF9jb25uZWN0X3Jlc3VsdCkgRm4uaWRcbiAgICAgICAgICAgIF0pXG4gICAgOztcblxuICAgIGxldCBjbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgdCA9XG4gICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgdC5kb24ndF9yZWNvbm5lY3QgKClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPSBUIDogJ2FkZHJlc3MgUG9seS50IC0+IHQgW0BAdW5ib3hlZF1cblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gUG9seS5zZXhwX29mX3QgdC5zZXhwX29mX2FkZHJlc3MgdFxuXG4gIGxldCBjbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgKFQgdCkgPVxuICAgIFBvbHkuY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIHRcbiAgOztcblxuICBsZXQgY2xvc2VfZmluaXNoZWQgKFQgdCkgPSBQb2x5LmNsb3NlX2ZpbmlzaGVkIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCB0KSA9IFBvbHkuaXNfY2xvc2VkIHRcbiAgbGV0IGNsb3NlIChUIHQpID0gUG9seS5jbG9zZSB0XG4gIGxldCBzZXJ2ZXJfbmFtZSAoVCB0KSA9IFBvbHkuc2VydmVyX25hbWUgdFxuICBsZXQgY3VycmVudF9jb25uZWN0aW9uIChUIHQpID0gUG9seS5jdXJyZW50X2Nvbm5lY3Rpb24gdFxuICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IChUIHQpID0gUG9seS5jb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgdFxuICBsZXQgY29ubmVjdGVkIChUIHQpID0gUG9seS5jb25uZWN0ZWQgdFxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgID9vbl9ldmVudFxuICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgP3JhbmRvbV9zdGF0ZVxuICAgICAgICA/dGltZV9zb3VyY2VcbiAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgfmFkZHJlc3NcbiAgICAgICAgZ2V0X2FkZHJlc3NcbiAgICA9XG4gICAgVFxuICAgICAgKFBvbHkuY3JlYXRlXG4gICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgID9vbl9ldmVudFxuICAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgICA/cmFuZG9tX3N0YXRlXG4gICAgICAgICA/dGltZV9zb3VyY2VcbiAgICAgICAgIH5jb25uZWN0XG4gICAgICAgICB+YWRkcmVzc1xuICAgICAgICAgZ2V0X2FkZHJlc3MpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcblxudHlwZSB0ID1cbiAgfCBLcmJcbiAgfCBLcmJfdGVzdF9tb2RlXG4gIHwgUnBjXG5bQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHAsIGJpbl9pb11cblxubGV0IG1hZ2ljX3dvcmQgPSBmdW5jdGlvblxuICB8IEtyYiAtPiBcIktSQjJcIlxuICB8IEtyYl90ZXN0X21vZGUgLT4gXCJLQlRcIlxuICB8IFJwYyAtPiBcIlJQQ1wiXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyX2Jpbl9zaXplID0gNVxuXG5sZXQgZ2VuX21hZ2ljX251bWJlciB3b3JkID1cbiAgU3RyaW5nLnRvX2xpc3RfcmV2IHdvcmRcbiAgfD4gTGlzdC5mb2xkIH5pbml0OjAgfmY6KGZ1biBhY2MgYyAtPiAoYWNjICogMjU2KSArIENoYXIudG9faW50IGMpXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyIHQgPSBnZW5fbWFnaWNfbnVtYmVyIChtYWdpY193b3JkIHQpXG5sZXQgYnlfbWFnaWNfbnVtYmVyID0gSW50Lk1hcC5vZl9hbGlzdF9leG4gKExpc3QubWFwIGFsbCB+ZjooZnVuIHAgLT4gbWFnaWNfbnVtYmVyIHAsIHApKVxuXG4oKiBXZSBvbmNlIG1pbnRlZCBhIG5ldyBtYWdpYyBudW1iZXIgZm9yIEtyYiBpbiBvcmRlciB0byBjaGFuZ2UgdGhlIHByb3RvY29sXG4gICBuZWdvdGlhdGlvbi4gIExldCdzIGJlIGNhcmVmdWwgdGhhdCB3ZSBkb24ndCByZXVzZSB0aGUgb2xkIG1hZ2ljIG51bWJlciAqKVxubGV0IHJldGlyZWRfa3JiX3dvcmQgPSBcIktSQlwiXG5cbmxldCV0ZXN0X3VuaXQgXCJ2YWxpZGF0ZSBtYWdpYyB3b3Jkc1wiID1cbiAgbGV0IG1hZ2ljX3dvcmRzID0gcmV0aXJlZF9rcmJfd29yZCA6OiBMaXN0Lm1hcCBhbGwgfmY6bWFnaWNfd29yZCBpblxuICBsZXQgbWFnaWNfbnVtYmVycyA9IExpc3QubWFwIG1hZ2ljX3dvcmRzIH5mOmdlbl9tYWdpY19udW1iZXIgaW5cbiAgKCogTWFnaWMgbnVtYmVycyBtdXN0IGZpdCBpbnRvIE9jYW1sIGludGVnZXJzICgzMSBiaXRzIG9uIDMyIGJpdCBidWlsZHMpLiAqKVxuICBhc3NlcnQgKExpc3QuZm9yX2FsbCBtYWdpY19udW1iZXJzIH5mOihmdW4gbiAtPiBuIDw9IEludC5vZl9mbG9hdCAoKDIuICoqIDMwLikgLS4gMS4pKSk7XG4gICgqIE5vIGR1cGxpY2F0ZSBtYWdpYyBudW1iZXJzICopXG4gIGFzc2VydCAobm90IChMaXN0LmNvbnRhaW5zX2R1cCBtYWdpY19udW1iZXJzIH5jb21wYXJlOkludC5jb21wYXJlKSlcbjs7XG5cbigqIEVuc3VyZSB0ZXN0cyBicmVhayBpZiB0aGUgbWFnaWMgbnVtYmVycyBhcmUgY2hhbmdlZCAqKVxubGV0JXRlc3RfdW5pdCBcIm1hZ2ljIG51bWJlcnNcIiA9XG4gIGFzc2VydCAoZ2VuX21hZ2ljX251bWJlciByZXRpcmVkX2tyYl93b3JkID0gNF8zNDZfNDQzKTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgS3JiID0gODQzXzIwN18yNDMpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBLcmJfdGVzdF9tb2RlID0gNV81MjFfOTk1KTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgUnBjID0gNF80MTFfNDc0KVxuOztcblxubGV0JXRlc3RfdW5pdCBcIm1hZ2ljX251bWJlcl9iaW5fc2l6ZSBpcyBjb3JyZWN0XCIgPVxuICBMaXN0Lml0ZXIgYWxsIH5mOihmdW4gdCAtPlxuICAgIGxldCBtYWdpY19udW1iZXIgPSBtYWdpY19udW1iZXIgdCBpblxuICAgIGxldCBzaXplID0gSW50LmJpbl9zaXplX3QgbWFnaWNfbnVtYmVyIGluXG4gICAgWyV0ZXN0X2VxOiBpbnRdIHNpemUgbWFnaWNfbnVtYmVyX2Jpbl9zaXplKVxuOztcbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgTGlzdF93aXRoX21heF9sZW5faW50ZlxuXG5tb2R1bGUgTWFrZSAoQ29uZmlnIDogQ29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gTGlzdC5fX2Jpbl9yZWFkX3RfX1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgdHJ5IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIHdpdGhcbiAgICB8IGV4biAtPiBFeG4ucmVyYWlzZSBleG4gKEluZm8udG9fc3RyaW5nX2h1bSBjb250ZXh0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgKGJpbl9yZWFkZXJfYSA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90IGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgOyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyX2EucmVhZFxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgKGJpbl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy50KSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNoYXBlID0gYmluX3NoYXBlX3QgYmluX2Euc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCBiaW5fYS53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCBiaW5fYS5yZWFkZXJcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3RfZXhuIGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgaWYgbGVuID4gbWF4X2xlblxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGlzdCBpcyB0b28gbGFyZ2VcIiAoY29udGV4dCA6IEluZm8udCkgKGxlbiA6IGludCkgKG1heF9sZW4gOiBpbnQpXTtcbiAgICBsXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IExpc3Quc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCB0X29mX2Egc2V4cCA9XG4gICAgbGV0IHQgPSBMaXN0LnRfb2Zfc2V4cCB0X29mX2Egc2V4cCBpblxuICAgIG9mX2xpc3RfZXhuIHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEtub3duX3Byb3RvY29sID0gS25vd25fcHJvdG9jb2xcblxubW9kdWxlIEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZSA9XG4gIExpc3Rfd2l0aF9tYXhfbGVuLk1ha2UgKHN0cnVjdFxuICAgIGxldCBtYXhfbGVuID0gMTAwXG4gICAgbGV0IGNvbnRleHQgPSBJbmZvLm9mX3N0cmluZyBcIlByb3RvY29sX3ZlcnNpb25faGVhZGVyXCJcbiAgZW5kKVxuXG50eXBlIHQgPSBpbnQgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLnRcbltAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxubGV0IGNyZWF0ZV9leG4gfnByb3RvY29sIH5zdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgOjogc3VwcG9ydGVkX3ZlcnNpb25zXG4gIHw+IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5vZl9saXN0X2V4blxuOztcblxubGV0IGdldF9wcm90b2NvbCAodCA6IHQpID1cbiAgbGV0IHByb3RvY29scywgdmVyc2lvbnMgPVxuICAgIExpc3QucGFydGl0aW9uX21hcFxuICAgICAgKHQgOj4gaW50IGxpc3QpXG4gICAgICB+ZjooZnVuIHYgLT5cbiAgICAgICAgbWF0Y2ggTWFwLmZpbmQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyIHYgd2l0aFxuICAgICAgICB8IFNvbWUgcCAtPiBGaXJzdCBwXG4gICAgICAgIHwgTm9uZSAtPiBTZWNvbmQgdilcbiAgaW5cbiAgbWF0Y2ggcHJvdG9jb2xzIHdpdGhcbiAgfCBbXSAtPiBPayAoTm9uZSwgSW50LlNldC5vZl9saXN0IHZlcnNpb25zKVxuICB8IFsgcCBdIC0+IE9rIChTb21lIHAsIEludC5TZXQub2ZfbGlzdCB2ZXJzaW9ucylcbiAgfCBfIC0+XG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IG11bHRpcGxlIG1hZ2ljIG51bWJlcnMgc2Vlbi5cIlxuICAgICAgICAgIChwcm90b2NvbHMgOiBLbm93bl9wcm90b2NvbC50IGxpc3QpXG4gICAgICAgICAgKHZlcnNpb25zIDogaW50IGxpc3QpXVxuOztcblxubGV0IG5lZ290aWF0ZSB+YWxsb3dfbGVnYWN5X3BlZXIgfih1cyA6IHQpIH4ocGVlciA6IHQpID1cbiAgbGV0IG9wZW4gT3JfZXJyb3IuTGV0X3N5bnRheCBpblxuICBsZXQlYmluZCB1c19wcm90b2NvbCwgdXNfdmVyc2lvbnMgPSBnZXRfcHJvdG9jb2wgdXMgaW5cbiAgbGV0JWJpbmQgcGVlcl9wcm90b2NvbCwgcGVlcl92ZXJzaW9ucyA9IGdldF9wcm90b2NvbCBwZWVyIGluXG4gIGxldCViaW5kIHVzX3Byb3RvY29sID1cbiAgICBtYXRjaCB1c19wcm90b2NvbCB3aXRoXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICB8IE5vbmUgLT4gZXJyb3JfcyBbJW1lc3NhZ2UgXCJObyBtYWdpYyBudW1iZXJzIHNlZW5cIiAodXNfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXVxuICBpblxuICBsZXQlYmluZCBwZWVyX3Byb3RvY29sID1cbiAgICBtYXRjaCBwZWVyX3Byb3RvY29sIHdpdGhcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgIHwgTm9uZSAtPlxuICAgICAgKCogd2UgYXNzdW1lIHBlZXIgaXMgc3BlYWtpbmcgb3VyIHByb3RvY29sIGlmIFthbGxvd19sZWdhY3lfcGVlcl0gKilcbiAgICAgIGlmIGFsbG93X2xlZ2FjeV9wZWVyXG4gICAgICB0aGVuIHJldHVybiB1c19wcm90b2NvbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwZWVyX3Byb3RvY29sID0gYFVua25vd24gaW5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogY29uZmxpY3RpbmcgbWFnaWMgcHJvdG9jb2wgbnVtYmVyc1wiXG4gICAgICAgICAgICAgICh1c19wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXG4gICAgICAgICAgICAgIChwZWVyX3Byb3RvY29sIDogWyBgVW5rbm93biBdKV0pXG4gIGluXG4gIGlmIG5vdCAoWyVjb21wYXJlLmVxdWFsOiBLbm93bl9wcm90b2NvbC50XSB1c19wcm90b2NvbCBwZWVyX3Byb3RvY29sKVxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IGNvbmZsaWN0aW5nIG1hZ2ljIHByb3RvY29sIG51bWJlcnNcIlxuICAgICAgICAgICh1c19wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXG4gICAgICAgICAgKHBlZXJfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KV1cbiAgZWxzZSAoXG4gICAgbGV0IHByb3RvY29sID0gdXNfcHJvdG9jb2wgaW5cbiAgICBtYXRjaCBTZXQubWF4X2VsdCAoU2V0LmludGVyIHVzX3ZlcnNpb25zIHBlZXJfdmVyc2lvbnMpIHdpdGhcbiAgICB8IFNvbWUgdmVyc2lvbiAtPiBPayB2ZXJzaW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IG5vIHNoYXJlZCB2ZXJzaW9uIG51bWJlcnNcIlxuICAgICAgICAgICAgKHVzX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKHBlZXJfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAocHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KV0pXG47O1xuXG5sZXQgbWF0Y2hlc19tYWdpY19wcmVmaXggKHQgOiB0KSB+cHJvdG9jb2wgPVxuICBsZXQgbWFnaWNfbnVtYmVyID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyIHByb3RvY29sIGluXG4gIExpc3QubWVtIH5lcXVhbDpJbnQuZXF1YWwgKHQgOj4gaW50IGxpc3QpIG1hZ2ljX251bWJlclxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgPVxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXIgKG1hdGNoZXNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCkgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeCA9XG4gIGxldCBmIHQgPVxuICAgIExpc3QuZmluZCBLbm93bl9wcm90b2NvbC5hbGwgfmY6KGZ1biBwcm90b2NvbCAtPiBtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgdClcbiAgaW5cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIGYgYmluX3QucmVhZGVyXG47O1xuXG5tb2R1bGUgTWFnaWNfcHJlZml4X2Jpbl9yZXByID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICAoKiBUaGUgYmluIHByb3QgcmVwcmVzZW50YXRpb24gb2YgYSBwcm90b2NvbCB2ZXJzaW9uIGhlYWRlciBpcyB0aGUgc3RhbmRhcmRcbiAgICAgcmVwcmVzZW50YXRpb24gZm9yIGFuIGludCBsaXN0OlxuXG4gICAgIHwgbmF0MCBpbmRpY2F0aW5nIHNpemUgfCBlbGVtZW50IDAgfCBlbGVtZW50IDEgfCAuLi5cblxuICAgICBbY3JlYXRlX2V4bl0gd2lsbCBhbHdheXMgcHV0IHRoZSBrbm93biBwcm90b2NvbCBtYWdpYyBudW1iZXIgYXMgXCJlbGVtZW50IDBcIi5cblxuICAgICBUaGUgYmluIHNpemUgb2YgXCJuYXQwIGluZGljYXRpbmcgc2l6ZVwiIGFuZCBcImVsZW1lbnQgMFwiIGlzIGZpeGVkICh0aGVyZSBhcmUgZXhwZWN0XG4gICAgIHRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBuZXZlciBjaGFuZ2UgdGhlbSkuICopXG4gIGxldCBiaW5fc2l6ZSA9XG4gICAgYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICsgS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyX2Jpbl9zaXplXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgKF9saXN0X2xlbmd0aCA6IEJpbl9wcm90Lk5hdDAudCkgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIGluXG4gICAgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBJbnQuX19iaW5fcmVhZF90X18gfVxuICA7O1xuZW5kXG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyXG4gICAgKGZ1biBtYWdpY19udW1iZXIgLT4gKE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlcikgbWFnaWNfbnVtYmVyKVxuICAgIE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fcmVhZGVyX3Rcbjs7XG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplID0gTWFnaWNfcHJlZml4X2Jpbl9yZXByLmJpbl9zaXplXG5cbm1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZV9saXN0X3dpdGhfbWF4X2xlbiA9IExpc3Rfd2l0aF9tYXhfbGVuLk1ha2VcbmVuZFxuXG5sZXQldGVzdF91bml0IFwiYmluIHNpemVzIGFyZSBub3QgY2hhbmdlZCBieSBhY2NpZGVudFwiID1cbiAgKCogRW5zdXJlIHRoZSBiaW5fc2l6ZSBvZiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICBpcyBhbHdheXMgMS4gVGhpcyBtZWFucyB0aGF0IHJlZ2FyZGxlc3Mgb2YgaG93IGxvbmcgdGhlIGxpc3Qgb2YgdmVyc2lvbnMgaW4gdGhlXG4gICAgIHByb3RvY29sIGhlYWRlciBpcywgdGhlIHJlcHJlc2VudGF0aW9uIHdpbGwgYmUgdGhlIHNhbWUgbnVtYmVyIG9mIGJ5dGVzLiBUaGVcbiAgICAgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50IGp1bXBzIHRvIDMgYnl0ZXMgYXQgdGhlIHZhbHVlIDEyOC4gKilcbiAgbGV0IGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9XG4gICAgSW50LmJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgaW5cbiAgYXNzZXJ0IChib3VuZGVkX2xpc3RfYmluX3NpemUgPSAxKTtcbiAgYXNzZXJ0ICg2ID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyX2Jpbl9zaXplICsgYm91bmRlZF9saXN0X2Jpbl9zaXplKTtcbiAgYXNzZXJ0IChcbiAgICBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplXG4gICAgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpXG47O1xuIiwidHlwZSB0ID0gQmluX3Byb3QuTmF0MC50XG5bQEBkZXJpdmluZyBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZTJmNGEtNDkwYS0xMWU2LWI2OGYtYmJkNjI0NzI1MTZjXCJdXG5cbmxldCBiaW5fdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX25hdDBcbmxldCBiaW5fc2l6ZV90ID0gQmluX3Byb3QuU2l6ZS5iaW5fc2l6ZV9uYXQwXG5sZXQgYmluX3dyaXRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdDBcbmxldCBiaW5fd3JpdGVfdCA9IEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9uYXQwXG5sZXQgYmluX3JlYWRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fcmVhZGVyX25hdDBcbmxldCBiaW5fcmVhZF90ID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwXG5cbmxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF92bmF0MCA9XG4gIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBvZl9pbnRfZXhuID0gQmluX3Byb3QuTmF0MC5vZl9pbnRcbiIsIm9wZW4gQ29yZVxub3BlbiBQb2x5XG5cbmxldCBvZl93cml0ZXIgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPVxuICBsZXQgd3JpdGUgYnVmIH5wb3MgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIGxldCBwb3MgPSBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zIGxlbiBpblxuICAgIHdyaXRlIGJ1ZiB+cG9zIGFcbiAgaW5cbiAgbGV0IHNpemUgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIE5hdDAuYmluX3NpemVfdCBsZW4gKyAoKGxlbiA6IEJpbl9wcm90Lk5hdDAudCkgOj4gaW50KVxuICBpblxuICB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfVxuOztcblxubGV0IG9mX3R5cGVfY2xhc3MgKGJpbl9hIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID0gb2Zfd3JpdGVyIGJpbl9hLndyaXRlclxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IGJpZ3N0cmluZ19iaW5fcHJvdCBzID1cbiAgICAgIGxldCBiaWdzdHJpbmcgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCeXRlcy5iaW5fd3JpdGVyX3QgcyBpblxuICAgICAgQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgQmlnc3RyaW5nLlN0YWJsZS5WMS5iaW5fd3JpdGVyX3QgYmlnc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBiaW5fcHJvdF93aXRoX2xlbmd0aCBzID1cbiAgICAgIGxldCB3cml0ZXJfd2l0aF9sZW5ndGggPSBvZl93cml0ZXIgQnl0ZXMuYmluX3dyaXRlcl90IGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB3cml0ZXJfd2l0aF9sZW5ndGggc1xuICAgIDs7XG5cbiAgICBsZXQgdGVzdCBsZW4gPVxuICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICBsZXQgYmlnc3RyaW5nX3ZlcnNpb24gPSBiaWdzdHJpbmdfYmluX3Byb3QgcyBpblxuICAgICAgbGV0IHdpdGhfbGVuZ3RoX3ZlcnNpb24gPSBiaW5fcHJvdF93aXRoX2xlbmd0aCBzIGluXG4gICAgICBpZiBCaWdzdHJpbmcudG9fc3RyaW5nIGJpZ3N0cmluZ192ZXJzaW9uIDw+IEJpZ3N0cmluZy50b19zdHJpbmcgd2l0aF9sZW5ndGhfdmVyc2lvblxuICAgICAgdGhlbiBmYWlsd2l0aGYgXCJtaXNtYXRjaCBmb3IgbGVuZ3RoICVkXCIgbGVuICgpXG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBmb3IgbGVuID0gMCB0byBJbnQucG93IDIgMTAgZG9cbiAgICAgICAgdGVzdCBsZW5cbiAgICAgIGRvbmU7XG4gICAgICBmb3IgcG93ID0gMTAgdG8gMjAgZG9cbiAgICAgICAgbGV0IHggPSBJbnQucG93IDIgcG93IGluXG4gICAgICAgIHRlc3QgKHggLSAxKTtcbiAgICAgICAgdGVzdCB4O1xuICAgICAgICB0ZXN0ICh4ICsgMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2ZXJzaW9uIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuXG5sZXQgc3VtbWFyaXplIHRzID1cbiAgTGlzdC5tYXAgdHMgfmY6KGZ1biB7IG5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICB8PiBTdHJpbmcuTWFwLm9mX2FsaXN0X2ZvbGQgfmluaXQ6SW50LlNldC5lbXB0eSB+ZjpJbnQuU2V0LmFkZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgZGVzY3JpcHRpb25zID1cbiAgICBbIHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAxIH1cbiAgICA7IHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAyIH1cbiAgICA7IHsgbmFtZSA9IFwiYmFyXCI7IHZlcnNpb24gPSA1IH1cbiAgICBdXG4gIGluXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyaXplIGRlc2NyaXB0aW9ucyBpblxuICBwcmludF9zIFslc2V4cCAoc3VtbWFyeSA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTtcbiAgWyVleHBlY3Qge3wgKChiYXIgKDUpKSAoZm9vICgxIDIpKSkgfH1dXG47O1xuIiwiKCoqIEFzeW5jX3JwYyBwcm90b2NvbCB0eXBlcywgZm9yIGludGVybmFsIHVzZSBvbmx5ICopXG5cbigqIFdBUk5JTkc6IGRvIG5vdCBjaGFuZ2UgYW55IG9mIHRoZXNlIHR5cGVzIHdpdGhvdXQgZ29vZCByZWFzb24gKilcblxub3BlbiBCaW5fcHJvdC5TdGRcbm9wZW4gU2V4cGxpYi5TdGRcbm1vZHVsZSBScGNfdGFnIDogQ29yZS5JZGVudGlmaWFibGUgPSBDb3JlLlN0cmluZ1xubW9kdWxlIFF1ZXJ5X2lkID0gQ29yZS5VbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIFVudXNlZF9xdWVyeV9pZCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHZhbCB0IDogdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFF1ZXJ5X2lkLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCB0ID0gUXVlcnlfaWQuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIFJwY19lcnJvciA6IHNpZ1xuICBvcGVuIENvcmVcblxuICB0eXBlIHQgPVxuICAgIHwgQmluX2lvX2V4biBvZiBTZXhwLnRcbiAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgfCBXcml0ZV9lcnJvciBvZiBTZXhwLnRcbiAgICB8IFVuY2F1Z2h0X2V4biBvZiBTZXhwLnRcbiAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgaW50IF1cbiAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQmluX2lvX2V4biBvZiBDb3JlLlNleHAudFxuICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBXcml0ZV9lcnJvciBvZiBDb3JlLlNleHAudFxuICAgICAgfCBVbmNhdWdodF9leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgb2YgUnBjX3RhZy50ICogWyBgVmVyc2lvbiBvZiBDb3JlLkludC5TdGFibGUuVjEudCBdXG4gICAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDhjYzc2NmJlZmEyY2Y1NjVlYTE0N2Q5ZmNkNWVhYWFiIHx9XVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvcmUuQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBScGNfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIENvcmUuUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBIZWFkZXIgPSBQcm90b2NvbF92ZXJzaW9uX2hlYWRlclxuXG5tb2R1bGUgUXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgdGFnIDogUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBpZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IGRhdGEgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbmVuZFxuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2EgUnBjX3Jlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIFsgYFF1ZXJ5IG9mICdhXG4gICAgfCBgQWJvcnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1faW5pdGlhbF9tZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgKCdyZXNwb25zZSwgJ2Vycm9yKSB0ID1cbiAgICB7IHVudXNlZF9xdWVyeV9pZCA6IFVudXNlZF9xdWVyeV9pZC50XG4gICAgOyBpbml0aWFsIDogKCdyZXNwb25zZSwgJ2Vycm9yKSBDb3JlLlJlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIFN0cmVhbV9yZXNwb25zZV9kYXRhID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYEVvZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHwgSGVhcnRiZWF0XG4gICAgfCBRdWVyeSBvZiAnYSBRdWVyeS5uZWVkc19sZW5ndGhcbiAgICB8IFJlc3BvbnNlIG9mICdhIFJlc3BvbnNlLm5lZWRzX2xlbmd0aFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBzZXhwX29mXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlICdhIG1lc3NhZ2VfaGFuZGxlciA9IEJpZ3N0cmluZy50IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYVxuXG5tb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBzdHJ1Y3RcbiAgKCoqIFJlc3VsdCBvZiBhbiBbb25fbWVzc2FnZV0gY2FsbGJhY2suICBXZSBzcGxpdCB0aGUgW0NvbnRpbnVlXSBhbmQgW1dhaXQgX10gY2FzZXMgdG9cbiAgICAgIG1ha2UgaXQgY2xlYXIgdGhhdCBbQ29udGludWVdIGlzIHRoZSBleHBlY3RlZCBjYXNlLiAgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZVxuICAgICAgb3B0aW1pemVkIGZvciB0aGlzIGNhc2UuICopXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdG9wIG9mICdhXG4gICAgfCBDb250aW51ZVxuICAgIHwgV2FpdCBvZiB1bml0IERlZmVycmVkLnRcbmVuZFxuXG5cbm1vZHVsZSB0eXBlIFJlYWRlciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY2xvc2UgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgaXNfY2xvc2VkIDogdCAtPiBib29sXG5cbiAgKCoqIFN0YXJ0IHJlYWRpbmcgaW5jb21pbmcgbWVzc2FnZXMgYW5kIHBhc3MgdGhlbSB0byBbb25fbWVzc2FnZV0sIHVudGlsIGl0IHJldHVybnNcbiAgICAgIFtTdG9wIF9dLlxuXG4gICAgICBbb25fZW5kX29mX2JhdGNoXSBpcyBjYWxsZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhIGJhdGNoIG9mIG1lc3NhZ2VzLCBiZWZvcmUgd2FpdGluZyBmb3JcbiAgICAgIHRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gYmVjb21lIHJlYWRhYmxlIGFnYWluLiAqKVxuICB2YWwgcmVhZF9mb3JldmVyXG4gICAgOiAgdFxuICAgIC0+IG9uX21lc3NhZ2U6KEJpZ3N0cmluZy50IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSBIYW5kbGVyX3Jlc3VsdC50KVxuICAgIC0+IG9uX2VuZF9vZl9iYXRjaDoodW5pdCAtPiB1bml0KVxuICAgIC0+ICgnYSwgWyBgRW9mIHwgYENsb3NlZCBdKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxubW9kdWxlIFNlbmRfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgbWVzc2FnZV90b29fYmlnID1cbiAgICB7IHNpemUgOiBpbnRcbiAgICA7IG1heF9tZXNzYWdlX3NpemUgOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB8IFNlbnQgb2YgJ2FcbiAgICB8IENsb3NlZFxuICAgIHwgTWVzc2FnZV90b29fYmlnIG9mIG1lc3NhZ2VfdG9vX2JpZ1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFdyaXRlciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY2xvc2UgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgaXNfY2xvc2VkIDogdCAtPiBib29sXG4gIHZhbCBtb25pdG9yIDogdCAtPiBNb25pdG9yLnRcbiAgdmFsIGJ5dGVzX3RvX3dyaXRlIDogdCAtPiBpbnRcblxuICAoKiogQmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHNlbmQgbWVzc2FnZSB1c2luZyB0aGlzIHdyaXRlcixcbiAgICAgIGZvciBpbnN0YW5jZSB3aGVuIHRoZSB3cml0ZXIgaXMgY2xvc2VkIG9yIHRoZSBjb25zdW1lciBsZWF2ZXMuXG5cbiAgICAgIFRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyBjYWNoZWQgYnkgW1JwYy5UcmFuc3BvcnRdICopXG4gIHZhbCBzdG9wcGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW2ZsdXNoZWQgdF0gcmV0dXJucyBhIGRlZmVycmVkIHRoYXQgbXVzdCBiZWNvbWUgZGV0ZXJtaW5lZCB3aGVuIGFsbCBwcmlvciBzZW50XG4gICAgICBtZXNzYWdlcyBhcmUgZGVsaXZlcmVkLlxuXG4gICAgICBJdCBtdXN0IGJlIE9LIHRvIGNhbGwgW2ZsdXNoZWQgdF0gYWZ0ZXIgW3RdIGhhcyBiZWVuIGNsb3NlZC4gKilcbiAgdmFsIGZsdXNoZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbcmVhZHlfdG9fd3JpdGUgdF0gYmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gaXQgaXMgYSBnb29kIHRpbWUgdG8gc2VuZCBtZXNzYWdlc1xuICAgICAgYWdhaW4uIEFzeW5jIFJQQyBjYWxscyB0aGlzIGZ1bmN0aW9uIGFmdGVyIHNlbmRpbmcgYSBiYXRjaCBvZiBtZXNzYWdlcywgdG8gYXZvaWRcbiAgICAgIGZsb29kaW5nIHRoZSB0cmFuc3BvcnQuXG5cbiAgICAgIFVzaW5nIFtsZXQgcmVhZHlfdG9fd3JpdGUgPSBmbHVzaGVkXSBpcyBhbiBhY2NlcHRhYmxlIGltcGxlbWVudGF0aW9uLiAqKVxuICB2YWwgcmVhZHlfdG9fd3JpdGUgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBBbGwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgc2VuZCBleGFjdGx5IG9uZSBtZXNzYWdlLiAqKVxuXG4gIHZhbCBzZW5kX2Jpbl9wcm90IDogdCAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciAtPiAnYSAtPiB1bml0IFNlbmRfcmVzdWx0LnRcblxuICB2YWwgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgOiAgdFxuICAgIC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gJ2FcbiAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAtPiBwb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXQgU2VuZF9yZXN1bHQudFxuXG4gICgqKiBTYW1lIGFzIFtzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmddIGJ1dCB0aGUgYmlnc3RyaW5nIGNhbid0IGJlIG1vZGlmaWVkIHVudGlsIHRoZVxuICAgICAgcmV0dXJuZWQgZGVmZXJyZWQgYmVjb21lcyBkZXRlcm1pbmVkLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBhdm9pZCBjb3B5aW5nIHRoZVxuICAgICAgYmlnc3RyaW5nLiAqKVxuICB2YWwgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgOiAgdFxuICAgIC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gJ2FcbiAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAtPiBwb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXQgRGVmZXJyZWQudCBTZW5kX3Jlc3VsdC50XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxubW9kdWxlIEhlYWRlciA9IHN0cnVjdFxuICBsZXQgbGVuZ3RoID0gOFxuICBsZXQgdW5zYWZlX2dldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvcyA9IEJpZ3N0cmluZy51bnNhZmVfZ2V0X2ludDY0X2xlX2V4biBidWYgfnBvc1xuXG4gIGxldCB1bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zIHBheWxvYWRfbGVuID1cbiAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQ2NF9sZSBidWYgfnBvcyBwYXlsb2FkX2xlblxuICA7O1xuZW5kXG5cbm1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLkhhbmRsZXJfcmVzdWx0XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLlJlYWRlclxuXG4gIHR5cGUgdCA9IFQgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSkgKiAnYSAtPiB0XG5cbiAgbGV0IHBhY2sgbSB0ID0gVCAobSwgdClcblxuICAoKiBXZSBwdXQgdHlwZSBhbm5vdGF0aW9ucyB0byBiZSBzdXJlIHRoZSB0eXBlIGlzIG5vdCBhIGZ1bmN0aW9uIHR5cGUsIGkuZS4gdG8gYXZvaWRcbiAgICAgY3JlYXRpbmcgY2xvc3VyZXMgKilcbiAgbGV0IHNleHBfb2ZfdCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgKChtb2R1bGUgTSksIHQpKSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUICgobW9kdWxlIE0pLCB0KSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKFQgKChtb2R1bGUgTSksIHQpKSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogXyBEZWZlcnJlZC50ID1cbiAgICBNLnJlYWRfZm9yZXZlciB0IH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgOztcblxuICBsZXQgcmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0IChiaW5fcmVhZGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcikgPVxuICAgIHJlYWRfZm9yZXZlclxuICAgICAgdFxuICAgICAgfm9uX21lc3NhZ2U6KGZ1biBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgICAgICBsZXQgeCA9IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPD4gcG9zICsgbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgICAgICghcG9zX3JlZiAtIHBvcylcbiAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgKClcbiAgICAgICAgZWxzZSBTdG9wIHgpXG4gICAgICB+b25fZW5kX29mX2JhdGNoOmlnbm9yZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLlNlbmRfcmVzdWx0XG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLldyaXRlclxuXG4gIHR5cGUgJ2Egd3JpdGVyID1cbiAgICB7IGltcGwgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICA7IHQgOiAnYVxuICAgICgqIFdlIGNhY2hlIHRoZSByZXN1bHQgb2YgW3N0b3BwZWRdIGJlY2F1c2UgaXQgaXMgb2Z0ZW4gdGhlIFtEZWZlcnJlZC5hbnldIG9mIHNldmVyYWxcbiAgICAgICBvdGhlciBkZWZlcnJlZHMgYW5kIHdlIHdhbnQgW2Nhbl9zZW5kXSB0byBiZSBzaW1wbGUuICopXG4gICAgOyBzdG9wcGVkIDogdW5pdCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAnYSB3cml0ZXIgLT4gdFxuXG4gIGxldCBwYWNrICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSB0ID1cbiAgICBUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgPSBNLnN0b3BwZWQgdCB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuICBsZXQgbW9uaXRvciAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogTW9uaXRvci50ID0gTS5tb25pdG9yIHRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBpbnQgPSBNLmJ5dGVzX3RvX3dyaXRlIHRcbiAgbGV0IGZsdXNoZWQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uZmx1c2hlZCB0XG5cbiAgbGV0IHJlYWR5X3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPVxuICAgIE0ucmVhZHlfdG9fd3JpdGUgdFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgYmluX3dyaXRlciB4IDogXyBTZW5kX3Jlc3VsdC50ID1cbiAgICBNLnNlbmRfYmluX3Byb3QgdCBiaW5fd3JpdGVyIHhcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc3RvcHBlZCAoVCB7IHN0b3BwZWQ7IF8gfSkgPSBzdG9wcGVkXG5cbiAgbGV0IGNhbl9zZW5kIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgfSkgPVxuICAgIG5vdCAoTS5pc19jbG9zZWQgdCB8fCBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BwZWQpXG4gIDs7XG5cbiAgbGV0IHRyYW5zZmVyIHQgPyhtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCA9IDFfMDAwKSBwaXBlIGYgPVxuICAgIGxldCBjb25zdW1lciA9XG4gICAgICBQaXBlLmFkZF9jb25zdW1lciBwaXBlIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICBsZXQlbWFwICgpID0gZmx1c2hlZCB0IGluXG4gICAgICAgIGBPaylcbiAgICBpblxuICAgIGxldCBlbmRfb2ZfcGlwZSA9XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIGxldCByZWMgaXRlciAoKSA9XG4gICAgICAgICAgaWYgY2FuX3NlbmQgdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgUGlwZS5yZWFkX25vdycgcGlwZSB+Y29uc3VtZXIgfm1heF9xdWV1ZV9sZW5ndGg6bWF4X251bV92YWx1ZXNfcGVyX3JlYWRcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICAgICAgUXVldWUuaXRlciBxIH5mO1xuICAgICAgICAgICAgICBQaXBlLkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgICAgICAgIHJlYWR5X3RvX3dyaXRlIHQgPj4+IGl0ZXJcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIFBpcGUudmFsdWVzX2F2YWlsYWJsZSBwaXBlID4+PiBmdW4gKGBPayB8IGBFb2YpIC0+IGl0ZXIgKClcbiAgICAgICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgaXZhciAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoKSlcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPSBEZWZlcnJlZC5hbnkgWyBlbmRfb2ZfcGlwZTsgc3RvcHBlZCB0IF0gaW5cbiAgICBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY2xvc2UgdCA9XG4gIGxldCViaW5kICgpID0gV3JpdGVyLmNsb3NlIHQud3JpdGVyIGluXG4gIFJlYWRlci5jbG9zZSB0LnJlYWRlclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUHJvdG9jb2xcblxuKCoqIFRoZSB0eXBlcyBvZiB0aGUgW0ltcGxlbWVudGF0aW9uXSBhbmQgW0ltcGxlbWVudGF0aW9uc10gbW9kdWxlcywgd2hpY2ggaGF2ZVxuICAgIGEgZGVwZW5kZW5jeSBjeWxlOiBbSW1wbGVtZW50YXRpb25dIC0+IFtEaXJlY3Rfc3RyZWFtX3dyaXRlcl0gLT5cbiAgICBbSW1wbGVtZW50YXRpb25zXSAtPiBbSW1wbGVtZW50YXRpb25dLiAqKVxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXJfaWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gICAgOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA6IGJvb2xcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHJlYyBJbXBsZW1lbnRhdGlvbiA6IHNpZ1xuICBtb2R1bGUgRXhwZXJ0IDogc2lnXG4gICAgbW9kdWxlIFJlc3BvbmRlciA6IHNpZ1xuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgICAgOyBtdXRhYmxlIHJlc3BvbmRlZCA6IGJvb2xcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuXG4gIG1vZHVsZSBGIDogc2lnXG4gICAgdHlwZSAoXywgXykgcmVzdWx0X21vZGUgPVxuICAgICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EpIHJlc3VsdF9tb2RlXG4gICAgICB8IERlZmVycmVkIDogKCdhLCAnYSBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gICAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgICAtPiAndXBkYXRlIERpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgLT4gKCdpbml0LCAnaW5pdCkgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICAgIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgICB8IE9uZV93YXkgOlxuICAgICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0KVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgT25lX3dheV9leHBlcnQgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSAtPiBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gdW5pdClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwYyA6XG4gICAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAncmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgICAqICdpbml0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgKiAndXBkYXRlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICBlbmRcblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgIHsgdGFnIDogUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBmIDogJ2Nvbm5lY3Rpb25fc3RhdGUgRi50XG4gICAgOyBzaGFwZXMgOiBTZXhwLnQgTGF6eS50XG4gICAgOyBvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udFxuICAgIH1cbmVuZCA9XG4gIEltcGxlbWVudGF0aW9uXG5cbmFuZCBJbXBsZW1lbnRhdGlvbnMgOiBzaWdcbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwYyA9XG4gICAgWyBgUmFpc2VcbiAgICB8IGBDb250aW51ZVxuICAgIHwgYENsb3NlX2Nvbm5lY3Rpb25cbiAgICB8IGBDYWxsIG9mXG4gICAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICAgIHwgYEV4cGVydCBvZlxuICAgICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuICAgIF1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gICAgOyBvbl91bmtub3duX3JwYyA6ICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gICAgfVxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIG1vZHVsZSByZWMgSW5zdGFuY2UgOiBzaWdcbiAgICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZSA9XG4gICAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgICB8IERpcmVjdCA6IF8gRGlyZWN0X3N0cmVhbV93cml0ZXIudCAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcblxuICAgIHR5cGUgJ2EgdW5wYWNrZWQgPVxuICAgICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAnYSBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA6IChRdWVyeV9pZC50LCBzdHJlYW1pbmdfcmVzcG9uc2UpIEhhc2h0YmwudFxuICAgICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgICA7IGNvbm5lY3Rpb25fc3RhdGUgOiAnYVxuICAgICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgICA7IG11dGFibGUgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDpcbiAgICAgICAgICAoRGVzY3JpcHRpb24udCAqICdhIEltcGxlbWVudGF0aW9uLnQpIG9wdGlvblxuICAgICAgOyBwYWNrZWRfc2VsZiA6IHRcbiAgICAgIH1cblxuICAgIGFuZCB0ID0gVCA6IF8gdW5wYWNrZWQgLT4gdFxuICBlbmRcbmVuZCA9XG4gIEltcGxlbWVudGF0aW9uc1xuXG5hbmQgRGlyZWN0X3N0cmVhbV93cml0ZXIgOiBzaWdcbiAgbW9kdWxlIFBlbmRpbmdfcmVzcG9uc2UgOiBzaWdcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBOb3JtYWwgb2YgJ2FcbiAgICAgIHwgRXhwZXJ0IG9mIHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBOb3Rfc3RhcnRlZCBvZiAnYSBQZW5kaW5nX3Jlc3BvbnNlLnQgUXVldWUudFxuICAgICAgfCBTdGFydGVkXG4gIGVuZFxuXG4gIG1vZHVsZSBJZCA9IERpcmVjdF9zdHJlYW1fd3JpdGVyX2lkXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGlkIDogSWQudFxuICAgIDsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnRcbiAgICA7IGNsb3NlZCA6IHVuaXQgSXZhci50XG4gICAgOyBpbnN0YW5jZSA6IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS50XG4gICAgOyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IHN0cmVhbV93cml0ZXIgOiAnYSBDYWNoZWRfc3RyZWFtX3dyaXRlci50XG4gICAgOyBncm91cHMgOiAnYSBncm91cF9lbnRyeSBCYWcudFxuICAgIH1cblxuICBhbmQgJ2EgZ3JvdXBfZW50cnkgPVxuICAgIHsgZ3JvdXAgOiAnYSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC50XG4gICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICB9XG5cbiAgbW9kdWxlIEdyb3VwIDogc2lnXG4gICAgdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA9ICdhIHRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7ICgqIFtjb21wb25lbnRzXSBpcyBvbmx5IHRyYWNrZWQgc2VwYXJhdGVseSBmcm9tIFtjb21wb25lbnRzX2J5X2lkXSBzbyB3ZSBjYW4gaXRlcmF0ZVxuICAgICAgICAgICBvdmVyIGl0cyBlbGVtZW50cyBtb3JlIHF1aWNrbHkgdGhhbiB3ZSBjb3VsZCBpdGVyYXRlIG92ZXIgdGhlIHZhbHVlcyBvZlxuICAgICAgICAgICBbY29tcG9uZW50c19ieV9pZF0uICopXG4gICAgICAgIG11dGFibGUgY29tcG9uZW50cyA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy50XG4gICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgOyBidWZmZXIgOiBCaWdzdHJpbmcudCByZWZcbiAgICAgIH1cblxuICAgIGFuZCAnYSBjb21wb25lbnQgPVxuICAgICAgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy5FbHQudFxuICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIGdyb3VwX2VudHJ5IEJhZy5FbHQudFxuICAgICAgfVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIDo9ICdhIHRcbmVuZCA9XG4gIERpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbmFuZCBDYWNoZWRfc3RyZWFtX3dyaXRlciA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgaGVhZGVyX3ByZWZpeCA6IHN0cmluZyAoKiBCaW5fcHJvdHRlZCBjb25zdGFudCBwcmVmaXggb2YgdGhlIG1lc3NhZ2UgKilcbiAgICA7IG11dGFibGUgZGF0YV9sZW4gOiBOYXQwLnRcbiAgICA7IGJpbl93cml0ZXIgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIH1cbmVuZCA9XG4gIENhY2hlZF9zdHJlYW1fd3JpdGVyXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgdCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLk9uX2V4Y2VwdGlvbi50ID1cbiAgeyBjYWxsYmFjayA6IChleG4gLT4gdW5pdCkgb3B0aW9uIFtAc2V4cC5vbWl0X25pbF1cbiAgOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNsb3NlX2Nvbm5lY3Rpb24gPSB7IGNhbGxiYWNrID0gTm9uZTsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgPSB0cnVlIH1cbmxldCBjb250aW51ZSA9IHsgY2FsbGJhY2sgPSBOb25lOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA9IGZhbHNlIH1cblxubGV0IGhhbmRsZV9leG5cbiAgICAgIHsgY2FsbGJhY2s7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIH1cbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIGV4blxuICA9XG4gIE9wdGlvbi5pdGVyIGNhbGxiYWNrIH5mOihmdW4gY2FsbGJhY2sgLT4gY2FsbGJhY2sgZXhuKTtcbiAgaWYgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgdGhlbiBNb25pdG9yLnNlbmRfZXhuIGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG5cbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFByb3RvY29sXG5vcGVuIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3BvbmRlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEV4cGVydC5SZXNwb25kZXIudCA9XG4gICAgICB7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgIDsgbXV0YWJsZSByZXNwb25kZWQgOiBib29sXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgcXVlcnlfaWQgd3JpdGVyID0geyBxdWVyeV9pZDsgd3JpdGVyOyByZXNwb25kZWQgPSBmYWxzZSB9XG4gIGVuZFxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgfCBSZXBsaWVkXG4gICAgfCBEZWxheWVkX3Jlc3BvbnNlIG9mIHVuaXQgRGVmZXJyZWQudFxuZW5kXG5cbm1vZHVsZSBGID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgcmVzdWx0X21vZGUgPSAoJ2EsICdiKSBGLnJlc3VsdF9tb2RlID1cbiAgICB8IEJsb2NraW5nIDogKCdhLCAnYSkgcmVzdWx0X21vZGVcbiAgICB8IERlZmVycmVkIDogKCdhLCAnYSBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBGLnN0cmVhbWluZ19pbXBsID1cbiAgICB8IFBpcGUgb2ZcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgIC0+ICd1cGRhdGUgSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgLT4gKCdpbml0LCAnaW5pdCkgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBGLnQgPVxuICAgIHwgT25lX3dheSA6XG4gICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBPbmVfd2F5X2V4cGVydCA6XG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSAtPiBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gdW5pdClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgUnBjIDpcbiAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAoKiAnaW5pdCBjYW4gYmUgYW4gZXJyb3Igb3IgYW4gaW5pdGlhbCBzdGF0ZSAqKVxuICAgICAgICAqICdpbml0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogJ3VwZGF0ZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGxcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIGxldCBzZXhwX29mX3QgXyA9IGZ1bmN0aW9uXG4gICAgfCBPbmVfd2F5X2V4cGVydCBfIHwgT25lX3dheSBfIC0+IFslbWVzc2FnZSBcIm9uZS13YXlcIl1cbiAgICB8IFJwY19leHBlcnQgXyB8IFJwYyBfIC0+IFslbWVzc2FnZSBcInJwY1wiXVxuICAgIHwgU3RyZWFtaW5nX3JwYyBfIC0+IFslbWVzc2FnZSBcInN0cmVhbWluZy1ycGNcIl1cbiAgOztcblxuICBsZXQgbGlmdCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE9uZV93YXkgKGJpbl9tc2csIGltcGwpIC0+IE9uZV93YXkgKGJpbl9tc2csIGZ1biBzdGF0ZSBzdHIgLT4gaW1wbCAoZiBzdGF0ZSkgc3RyKVxuICAgIHwgT25lX3dheV9leHBlcnQgaW1wbCAtPlxuICAgICAgT25lX3dheV9leHBlcnQgKGZ1biBzdGF0ZSBidWYgfnBvcyB+bGVuIC0+IGltcGwgKGYgc3RhdGUpIGJ1ZiB+cG9zIH5sZW4pXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIChmdW4gc3RhdGUgcSAtPiBpbXBsIChmIHN0YXRlKSBxKSwgcmVzdWx0X21vZGUpXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKChmdW4gc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuIC0+IGltcGwgKGYgc3RhdGUpIHJlc3AgYnVmIH5wb3MgfmxlbiksIHJlc3VsdF9tb2RlKVxuICAgIHwgU3RyZWFtaW5nX3JwYyAoYmluX3EsIGJpbl9pLCBiaW5fdSwgaW1wbCkgLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+IFBpcGUgKGZ1biBzdGF0ZSBxIC0+IGltcGwgKGYgc3RhdGUpIHEpXG4gICAgICAgIHwgRGlyZWN0IGltcGwgLT4gRGlyZWN0IChmdW4gc3RhdGUgcSB3IC0+IGltcGwgKGYgc3RhdGUpIHEgdylcbiAgICAgIGluXG4gICAgICBTdHJlYW1pbmdfcnBjIChiaW5fcSwgYmluX2ksIGJpbl91LCBpbXBsKVxuICA7O1xuZW5kXG5cbnR5cGUgbm9ucmVjICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgeyB0YWcgOiBScGNfdGFnLnRcbiAgOyB2ZXJzaW9uIDogaW50XG4gIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICA7IHNoYXBlcyA6IFNleHAudCBMYXp5LnRcbiAgOyBvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IFJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbmxldCBsaWZ0IHQgfmYgPSB7IHQgd2l0aCBmID0gRi5saWZ0IH5mIHQuZiB9XG5sZXQgdXBkYXRlX29uX2V4Y2VwdGlvbiB0IH5mID0geyB0IHdpdGggb25fZXhjZXB0aW9uID0gZiB0Lm9uX2V4Y2VwdGlvbiB9XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5pbmNsdWRlIFByb3RvY29sLlJwY19lcnJvclxuaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChQcm90b2NvbC5ScGNfZXJyb3IpXG5cbmV4Y2VwdGlvbiBScGMgb2YgdCAqIEluZm8udCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgcmFpc2UgdCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uID0gcmFpc2UgKFJwYyAodCwgY29ubmVjdGlvbl9kZXNjcmlwdGlvbikpXG5cbmxldCBzZXhwX29mX3QgdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQ29ubmVjdGlvbl9jbG9zZWQgLT5cbiAgICBbJXNleHAgYENvbm5lY3Rpb25fY2xvc2VkIChnZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gKCkgOiBTZXhwLnQpXVxuICB8IEJpbl9pb19leG4gX1xuICB8IFdyaXRlX2Vycm9yIF9cbiAgfCBVbmNhdWdodF9leG4gX1xuICB8IFVuaW1wbGVtZW50ZWRfcnBjIF9cbiAgfCBVbmtub3duX3F1ZXJ5X2lkIF8gLT4gc2V4cF9vZl90IHRcbjs7XG5cbigqIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8ganVzdCB0YWtlIGEgW0Nvbm5lY3Rpb24udF0sIGJ1dCB3ZSB0YWtlIGl0cyBwaWVjZXMgaW5zdGVhZCB0b1xuICAgYXZvaWQgYSBkZXBlbmRlbmN5IGN5Y2xlICopXG5sZXQgdG9fZXJyb3JcbiAgICAgIHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246eyBEZXNjcmlwdGlvbi5uYW1lID0gcnBjX25hbWU7IHZlcnNpb24gPSBycGNfdmVyc2lvbiB9XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICA9XG4gIGxldCBycGNfZXJyb3IgPVxuICAgIHNleHBfb2ZfdCB0IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgbGV0IGNsb3NlX3JlYXNvbiA9XG4gICAgICAgICgqIFVzdWFsbHkgKGFsd2F5cz8pIGhlcmUgd2Ugd2lsbCBoYXZlIHRoZSBkZWZlcnJlZCBhbHJlYWR5IGZ1bGxcbiAgICAgICAgICAgYmVjYXVzZSBDb25uZWN0aW9uX2Nsb3NlZCBlcnJvciBtZWFucyB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5XG4gICAgICAgICAgIGNsb3NlZCAqKVxuICAgICAgICBEZWZlcnJlZC5wZWVrIGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgaW5cbiAgICAgIFslc2V4cCAoY2xvc2VfcmVhc29uIDogSW5mby50IG9wdGlvbildKVxuICBpblxuICBFcnJvci5jcmVhdGVfc1xuICAgIFslc2V4cFxuICAgICAgeyBycGNfZXJyb3IgOiBTZXhwLnRcbiAgICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgICAgOyBycGNfbmFtZSA6IHN0cmluZ1xuICAgICAgOyBycGNfdmVyc2lvbiA6IGludFxuICAgICAgfV1cbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxudHlwZSBsb2NhdGVkX2Vycm9yID1cbiAgeyBsb2NhdGlvbiA6IHN0cmluZ1xuICA7IGV4biA6IEV4bi50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCB1bmNhdWdodF9leG4gfmxvY2F0aW9uIGV4biA9XG4gIEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIChzZXhwX29mX2xvY2F0ZWRfZXJyb3IgeyBsb2NhdGlvbjsgZXhuIH0pKVxuOztcblxubGV0IGJpbl9pb19leG4gfmxvY2F0aW9uIGV4biA9XG4gIEVycm9yIChScGNfZXJyb3IuQmluX2lvX2V4biAoc2V4cF9vZl9sb2NhdGVkX2Vycm9yIHsgbG9jYXRpb247IGV4biB9KSlcbjs7XG5cbmxldCB0cnlfd2l0aCA/b25fYmFja2dyb3VuZF9leGNlcHRpb24gP3J1biB+bG9jYXRpb24gZiA9XG4gIGxldCB4ID1cbiAgICBsZXQgcmVzdCA9XG4gICAgICBtYXRjaCBvbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYExvZ1xuICAgICAgfCBTb21lIGNhbGxiYWNrIC0+IGBDYWxsIGNhbGxiYWNrXG4gICAgaW5cbiAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICB+cmVzdFxuICAgICAgfnJ1bjooT3B0aW9uLnZhbHVlIHJ1biB+ZGVmYXVsdDpgU2NoZWR1bGUpXG4gICAgICBmXG4gIGluXG4gIGxldCBqb2luID0gZnVuY3Rpb25cbiAgICB8IE9rIHggLT4geFxuICAgIHwgRXJyb3IgZXhuIC0+IHVuY2F1Z2h0X2V4biB+bG9jYXRpb24gZXhuXG4gIGluXG4gIG1hdGNoIERlZmVycmVkLnBlZWsgeCB3aXRoXG4gIHwgTm9uZSAtPiB4ID4+fCBqb2luXG4gIHwgU29tZSB4IC0+IHJldHVybiAoam9pbiB4KVxuOztcblxubGV0IG9yX2Vycm9yIH5ycGNfZGVzY3JpcHRpb24gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb24gfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA9XG4gIFJlc3VsdC5tYXBfZXJyb3JcbiAgICB+ZjpcbiAgICAgIChScGNfZXJyb3IudG9fZXJyb3JcbiAgICAgICAgIH5ycGNfZGVzY3JpcHRpb25cbiAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkKVxuOztcbiIsIm9wZW4gQ29yZVxuXG4oKiB1dGlsaXR5IGZ1bmN0aW9uIGZvciBiaW4taW8naW5nIG91dCBvZiBhIEJpZ3N0cmluZy50ICopXG5sZXQgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgIChiaW5fcmVhZGVyX3QgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKVxuICAgICAgP2FkZF9sZW5cbiAgICAgIGJ1ZlxuICAgICAgfnBvc19yZWZcbiAgICAgIH4obGVuIDogTmF0MC50KVxuICAgICAgfmxvY2F0aW9uXG4gID1cbiAgdHJ5XG4gICAgbGV0IGluaXRfcG9zID0gIXBvc19yZWYgaW5cbiAgICBsZXQgZGF0YSA9IGJpbl9yZWFkZXJfdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBhZGRfbGVuID1cbiAgICAgIG1hdGNoIGFkZF9sZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IDBcbiAgICAgIHwgU29tZSBhZGRfbGVuIC0+IGFkZF9sZW4gZGF0YVxuICAgIGluXG4gICAgaWYgIXBvc19yZWYgLSBpbml0X3BvcyArIGFkZF9sZW4gPD4gKGxlbiA6PiBpbnQpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhmXG4gICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgKCFwb3NfcmVmIC0gaW5pdF9wb3MpXG4gICAgICAgIChsZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgICAoKTtcbiAgICBPayBkYXRhXG4gIHdpdGhcbiAgfCBlIC0+IFJwY19yZXN1bHQuYmluX2lvX2V4biB+bG9jYXRpb24gZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBQb2x5XG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBVdGlsXG5vcGVuIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uc1xubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFdyaXRlciA9IFRyYW5zcG9ydC5Xcml0ZXJcblxuKCogVGhlIFJlc3VsdCBtb25hZCBpcyBhbHNvIHVzZWQuICopXG5sZXQgKCA+Pnx+ICkgPSBSZXN1bHQuKCA+PnwgKVxuXG4oKiBDb21tdXRlIFJlc3VsdCBhbmQgRGVmZXJyZWQuICopXG5sZXQgZGVmZXJfcmVzdWx0IDogJ2EgJ2IuICgnYSBEZWZlcnJlZC50LCAnYikgUmVzdWx0LnQgLT4gKCdhLCAnYikgUmVzdWx0LnQgRGVmZXJyZWQudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVyciAtPiByZXR1cm4gZXJyXG4gICAgfCBPayBkIC0+XG4gICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCVtYXAgeCA9IGQgaW5cbiAgICAgICAgIE9rIHhcbiAgICAgICB8IFNvbWUgZCAtPiByZXR1cm4gKE9rIGQpKVxuOztcblxubW9kdWxlIERlZmVycmVkX2ltbWVkaWF0ZSA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIERlZmVycmVkLnRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBiaW5kIGQgfmYgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkID4+PSBmXG4gICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICA7O1xuXG4gICAgbGV0IG1hcCBkIH5mID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZCA+PnwgZlxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIChmIHgpXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICBbIGBSYWlzZVxuICB8IGBDb250aW51ZVxuICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gIHwgYENhbGwgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICBdXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgPVxuICBbICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gIHwgYEV4cGVydCBvZlxuICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgLT4gUmVzcG9uZGVyLnRcbiAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnMudCA9XG4gIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY193aXRoX2V4cGVydFxuICB9XG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG5sZXQgZGVzY3JpcHRpb25zIHQgPSBIYXNodGJsLmtleXMgdC5pbXBsZW1lbnRhdGlvbnNcblxubW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID0gSW5zdGFuY2Uuc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgfCBEaXJlY3QgOlxuICAgICAgICAoXyBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50W0BzZXhwLm9wYXF1ZV0pXG4gICAgICAgIC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IChQLlF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB1bnBhY2tlZCA9ICdhIEluc3RhbmNlLnVucGFja2VkID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICgnYSBpbXBsZW1lbnRhdGlvbnNbQHNleHAub3BhcXVlXSlcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiBzdHJlYW1pbmdfcmVzcG9uc2VzXG4gICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgOyBtdXRhYmxlIGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA6XG4gICAgICAgIChEZXNjcmlwdGlvbi50ICogKCdhIEltcGxlbWVudGF0aW9uLnRbQHNleHAub3BhcXVlXSkpIG9wdGlvblxuICAgICgqIFtwYWNrZWRfc2VsZl0gaXMgaGVyZSBzbyB3ZSBjYW4gZXNzZW50aWFsbHkgcGFjayBhbiB1bnBhY2tlZCBpbnN0YW5jZSB3aXRob3V0IGRvaW5nXG4gICAgICAgYW55IGFkZGl0aW9uYWwgYWxsb2NhdGlvbi4gKilcbiAgICA7IHBhY2tlZF9zZWxmIDogKHRbQHNleHAub3BhcXVlXSlcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgYW5kIHQgPSBJbnN0YW5jZS50ID0gVCA6IF8gdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSBbJXNleHBfb2Y6IF8gdW5wYWNrZWRdIHRcblxuICBsZXQgc2VuZF93cml0ZV9lcnJvciB0IGlkIHNleHAgPVxuICAgIGxldCBkYXRhIDogXyBQLk1lc3NhZ2UudCA9IFJlc3BvbnNlIHsgaWQ7IGRhdGEgPSBFcnJvciAoV3JpdGVfZXJyb3Igc2V4cCkgfSBpblxuICAgIG1hdGNoIFdyaXRlci5zZW5kX2Jpbl9wcm90IHQud3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBkYXRhIHdpdGhcbiAgICB8IFNlbnQgKCkgfCBDbG9zZWQgLT4gKClcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgXCJGYWlsZWQgdG8gc2VuZCB3cml0ZSBlcnJvciB0byBjbGllbnRcIlxuICAgICAgICAsIHsgZXJyb3IgPSAoc2V4cCA6IFNleHAudCk7IHJlYXNvbiA9IChyIDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCkgfV1cbiAgOztcblxuICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWQgKHJlc3VsdCA6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgU2VudCAoKSAtPiAoKVxuICAgIHwgQ2xvc2VkIC0+ICgpXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+XG4gICAgICBzZW5kX3dyaXRlX2Vycm9yIHQgaWQgKFslc2V4cF9vZjogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudF0gcilcbiAgOztcblxuICBsZXQgd3JpdGVfbWVzc2FnZSB0IH5pZCBiaW5fd3JpdGVyIHggPVxuICAgIGlmIG5vdCB0LnN0b3BwZWRcbiAgICB0aGVuIFdyaXRlci5zZW5kX2Jpbl9wcm90IHQud3JpdGVyIGJpbl93cml0ZXIgeCB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZFxuICA7O1xuXG4gIGxldCB3cml0ZV9tZXNzYWdlX2V4cGVydCB0IH5pZCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gPVxuICAgIGlmIG5vdCB0LnN0b3BwZWRcbiAgICB0aGVuXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQud3JpdGVyIGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWRcbiAgOztcblxuICBsZXQgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fd3JpdGVyX2RhdGEgZGF0YSA9XG4gICAgbGV0IGJpbl93cml0ZXIgPVxuICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfZGF0YSlcbiAgICBpblxuICAgIHdyaXRlX21lc3NhZ2UgdCB+aWQgYmluX3dyaXRlciAoUmVzcG9uc2UgeyBpZDsgZGF0YSB9KVxuICA7O1xuXG4gIG1vZHVsZSBDYWNoZWRfc3RyZWFtX3dyaXRlciA6IHNpZ1xuICAgIHR5cGUgaW5zdGFuY2VcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfc3RyZWFtX3dyaXRlci50XG5cbiAgICB2YWwgY3JlYXRlIDogaWQ6UC5RdWVyeV9pZC50IC0+IGJpbl93cml0ZXI6J2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgdFxuICAgIHZhbCB3cml0ZSA6ICdhIHQgLT4gaW5zdGFuY2UgLT4gUC5RdWVyeV9pZC50IC0+ICdhIC0+IHVuaXRcblxuICAgIHZhbCB3cml0ZV9leHBlcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGluc3RhbmNlXG4gICAgICAtPiBQLlF1ZXJ5X2lkLnRcbiAgICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuXG4gICAgdmFsIHdyaXRlX3N0cmluZyA6ICdhIHQgLT4gaW5zdGFuY2UgLT4gUC5RdWVyeV9pZC50IC0+IHN0cmluZyAtPiB1bml0XG4gIGVuZFxuICB3aXRoIHR5cGUgaW5zdGFuY2UgOj0gdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEltcGxlbWVudGF0aW9uX3R5cGVzLkNhY2hlZF9zdHJlYW1fd3JpdGVyLnQgPVxuICAgICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgICAgOyAoKiBMZW5ndGggb2YgdGhlIHVzZXIgZGF0YSBwYXJ0LiBXZSBzZXQgdGhpcyBmaWVsZCB3aGVuIHNlbmRpbmcgYSBtZXNzYWdlLiBUaGlzXG4gICAgICAgICAgIHJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIHRoZVxuICAgICAgICAgICBvbmx5IGFjY2VwdGFibGUgc2VtYW50aWNzIGZvciB0aGUgdHJhbnNwb3J0IGxheWVyIGFueXdheSwgYXMgaXQgZG9lc24ndCBrbm93IGlmXG4gICAgICAgICAgIHRoZSB2YWx1ZSBpcyBtdXRhYmxlIG9yIG5vdCkuXG5cbiAgICAgICAgICAgW2RhdGFfbGVuXSBpcyBwYXNzZWQgdG8gYmluLXByb3Qgd3JpdGVycyBieSBtdXRhdGluZyBbZGF0YV9sZW5dIGluc3RlYWQgb2YgYnlcbiAgICAgICAgICAgcGFzc2luZyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIGF2b2lkIHNvbWUgYWxsb2NhdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgIH1cblxuXG4gICAgdHlwZSB2b2lkID0gVm9pZFxuXG4gICAgbGV0IGJpbl9zaXplX3ZvaWQgVm9pZCA9IDBcbiAgICBsZXQgYmluX3dyaXRlX3ZvaWQgX2J1ZiB+cG9zIFZvaWQgPSBwb3NcblxuICAgIHR5cGUgdm9pZF9tZXNzYWdlID0gdm9pZCBQLk1lc3NhZ2UubmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl93cml0ZV1cblxuICAgIHR5cGUgdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHZvaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5uZWVkc19sZW5ndGhcbiAgICBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICAoKiBUaGlzIGlzIG5vdCByZS1lbnRyYW50IGJ1dCBBc3luYyBjb2RlIGFsd2F5cyBydW5zIG9uIG9uZSB0aHJlYWQgYXQgYSB0aW1lICopXG4gICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMzJcblxuICAgIGxldCBjYWNoZV9iaW5fcHJvdHRlZCAoYmluX3dyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICAgICAgbGV0IGxlbiA9IGJpbl93cml0ZXIud3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICBCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWZmZXIgfnBvczowIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+aWQgfmJpbl93cml0ZXIgOiBhIHQgPVxuICAgICAgbGV0IGhlYWRlcl9wcmVmaXggPVxuICAgICAgICBjYWNoZV9iaW5fcHJvdHRlZCBiaW5fd3JpdGVyX3ZvaWRfbWVzc2FnZSAoUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIFZvaWQgfSlcbiAgICAgIGluXG4gICAgICB7IGhlYWRlcl9wcmVmaXg7IGJpbl93cml0ZXI7IGRhdGFfbGVuID0gTmF0MC5vZl9pbnRfZXhuIDAgfVxuICAgIDs7XG5cbiAgICAoKiBUaGlzIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaGVhZGVyIGlzIGEgY29uc3RhbnQsIG1ha2UgaXQgYSBsaXRlcmFsIHRvIG1ha2UgdGhlXG4gICAgICAgd3JpdGluZyBjb2RlIHNsaWdodGx5IGZhc3Rlci4gKilcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiA9IDRcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyID0gMHg4YTc5bFxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInN0cmVhbV9yZXNwb25zZV8qIGNvbnN0YW50cyBhcmUgY29ycmVjdFwiID1cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBiaW5fd3JpdGVyX3ZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEud3JpdGVcbiAgICAgICAgICBidWZmZXJcbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICAoYE9rIFZvaWQgOiB2b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhKVxuICAgICAgaW5cbiAgICAgIGFzc2VydCAobGVuID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbik7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQzMl90X2xlIGJ1ZmZlciB+cG9zOjBcbiAgICAgICAgPSBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzIpXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBzdHIgPVxuICAgICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgICAgKCogVmVyeSBsb3ctbGV2ZWwgYmluX3Byb3Qgc3R1ZmYuLi4gKilcbiAgICAgIEJpbl9wcm90LkNvbW1vbi5hc3NlcnRfcG9zIHBvcztcbiAgICAgIGxldCBuZXh0ID0gcG9zICsgc3RyX2xlbiBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaW5fcHJvdC5Db21tb24udW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3Bvczpwb3MgYnVmIH5sZW46c3RyX2xlbjtcbiAgICAgIG5leHRcbiAgICA7O1xuXG4gICAgKCogVGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSAzIHZhcmlhbnRzIGV4cG9zZWQgYnkgdGhpcyBtb2R1bGUuIFRoZXlcbiAgICAgICBzZXJpYWxpemUgYSBbUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIChgT2sgZGF0YV9sZW4pIH1dIHZhbHVlLCB0YWtpbmcgY2FyZSBvZlxuICAgICAgIHdyaXRpbmcgdGhlIFtOYXQwLnRdIGxlbmd0aCBwcmVmaXggd2hlcmUgYXBwcm9yaWF0ZS5cblxuICAgICAgIEJlYXIgaW4gbWluZCB0aGF0IHRoZXJlIGFyZSB0d28gbGV2ZWxzIG9mIGxlbmd0aCBwcmVmaXhlcyBmb3Igc3RyZWFtIHJlc3BvbnNlIGRhdGFcbiAgICAgICBtZXNzYWdlOiBvbmUgZm9yIHRoZSB1c2VyIGRhdGEgKHVuZGVyIHRoZSBgT2ssIGJlZm9yZSB0aGUgYWN0dWFsIGRhdGEpLCBhbmQgb25lIGZvclxuICAgICAgIHRoZSByZXNwb25zZSBkYXRhICh1bmRlciB0aGUgLmRhdGEgZmllbGQsIGJlZm9yZSB0aGUgT2spLiAqKVxuICAgIGxldCBiaW5fc2l6ZV9uYXQwX2hlYWRlciB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgU3RyaW5nLmxlbmd0aCBoZWFkZXJfcHJlZml4XG4gICAgICArIE5hdDAuYmluX3NpemVfdCAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbilcbiAgICAgICsgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIGhlYWRlcl9wcmVmaXggaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuXG4gICAgICAgICsgTmF0MC5iaW5fc2l6ZV90IGRhdGFfbGVuXG4gICAgICAgICsgKGRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID0gTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbikgaW5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQzMl90X2xlIGJ1ZiB+cG9zIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMjtcbiAgICAgIE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3M6bmV4dCBkYXRhX2xlblxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9uYXQwX2hlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbmF0MF9oZWFkZXI7IHdyaXRlID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2UgKHQsIF8pID0gYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcblxuICAgIGxldCBiaW5fd3JpdGVfbWVzc2FnZSBidWYgfnBvcyAodCwgZGF0YSkgPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB0IGluXG4gICAgICB0LmJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlOyB3cml0ZSA9IGJpbl93cml0ZV9tZXNzYWdlIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nICh0LCBfKSA9XG4gICAgICBiaW5fc2l6ZV9uYXQwX2hlYWRlciB0ICsgKHQuZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIGJ1ZiB+cG9zICh0LCBzdHIpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZzsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZV9hc19zdHJpbmcgfVxuICAgIDs7XG5cbiAgICAoKiBbd3JpdGVdIGFuZCBbd3JpdGVfc3RyaW5nXSBib3RoIGFsbG9jYXRlIDMgd29yZHMgZm9yIHRoZSB0dXBsZXMuIFt3cml0ZV9leHBlcnRdXG4gICAgICAgZG9lcyBub3QgYWxsb2NhdGUuICopXG4gICAgbGV0IHdyaXRlIHQgKFQgaW5zdGFuY2UpIGlkIGRhdGEgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKHQuYmluX3dyaXRlci5zaXplIGRhdGEpO1xuICAgICAgd3JpdGVfbWVzc2FnZSBpbnN0YW5jZSB+aWQgYmluX3dyaXRlcl9tZXNzYWdlICh0LCBkYXRhKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfc3RyaW5nIHQgKFQgaW5zdGFuY2UpIGlkIHN0ciA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biAoU3RyaW5nLmxlbmd0aCBzdHIpO1xuICAgICAgd3JpdGVfbWVzc2FnZSBpbnN0YW5jZSB+aWQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyAodCwgc3RyKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfZXhwZXJ0IHQgKFQgaW5zdGFuY2UpIGlkIH5idWYgfnBvcyB+bGVuID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuIGxlbjtcbiAgICAgIHdyaXRlX21lc3NhZ2VfZXhwZXJ0IGluc3RhbmNlIH5pZCBiaW5fd3JpdGVyX25hdDBfaGVhZGVyIHQgfmJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG4gICAgbW9kdWxlIFN0YXRlID0gVC5TdGF0ZVxuICAgIG1vZHVsZSBJZCA9IFQuSWRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9XG4gICAgICB7IGlkIDogSWQudFxuICAgICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBpbnN0YW5jZSA6IEluc3RhbmNlLnRcbiAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICAgIH1cblxuICAgIGFuZCAnYSBncm91cF9lbnRyeSA9ICdhIFQuZ3JvdXBfZW50cnkgPVxuICAgICAgeyBncm91cCA6ICdhIFQuR3JvdXAudFxuICAgICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICAgIH1cblxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgIGxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxuXG4gICAgbGV0IGZsdXNoZWQgdCA9XG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgVHJhbnNwb3J0LldyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlclxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlciB0ID0gdC5zdHJlYW1fd3JpdGVyLmJpbl93cml0ZXJcblxuICAgIGxldCB3cml0ZV9lb2YgeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gPVxuICAgICAgd3JpdGVfcmVzcG9uc2UgaW5zdGFuY2UgcXVlcnlfaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZilcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2UgeyBpbnN0YW5jZTsgc3RyZWFtX3dyaXRlcjsgcXVlcnlfaWQ7IF8gfSB4ID1cbiAgICAgIENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlIHN0cmVhbV93cml0ZXIgaW5zdGFuY2UgcXVlcnlfaWQgeFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZV9zdHJpbmcgeyBpbnN0YW5jZTsgc3RyZWFtX3dyaXRlcjsgcXVlcnlfaWQ7IF8gfSB4ID1cbiAgICAgIENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlX3N0cmluZyBzdHJlYW1fd3JpdGVyIGluc3RhbmNlIHF1ZXJ5X2lkIHhcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHsgaW5zdGFuY2U7IHN0cmVhbV93cml0ZXI7IHF1ZXJ5X2lkOyBfIH0gfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgQ2FjaGVkX3N0cmVhbV93cml0ZXIud3JpdGVfZXhwZXJ0IHN0cmVhbV93cml0ZXIgaW5zdGFuY2UgcXVlcnlfaWQgfmJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB0ID1cbiAgICAgIGlmIG5vdCAoSXZhci5pc19mdWxsIHQuY2xvc2VkKVxuICAgICAgdGhlbiAoXG4gICAgICAgIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgICAgICAgbGV0IGdyb3VwcyA9IHQuZ3JvdXBzIGluXG4gICAgICAgIGlmIG5vdCAoQmFnLmlzX2VtcHR5IGdyb3VwcylcbiAgICAgICAgdGhlblxuICAgICAgICAgIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuUHJpdmF0ZS5WZXJ5X2xvd19wcmlvcml0eV93b3JrLmVucXVldWUgfmY6KGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggQmFnLnJlbW92ZV9vbmUgZ3JvdXBzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBGaW5pc2hlZFxuICAgICAgICAgICAgfCBTb21lIHsgZ3JvdXA7IGVsZW1lbnRfaW5fZ3JvdXAgfSAtPlxuICAgICAgICAgICAgICBCYWcucmVtb3ZlIGdyb3VwLmNvbXBvbmVudHMgZWxlbWVudF9pbl9ncm91cDtcbiAgICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgZ3JvdXAuY29tcG9uZW50c19ieV9pZCB0LmlkO1xuICAgICAgICAgICAgICBOb3RfZmluaXNoZWQpO1xuICAgICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgfCBOb3Rfc3RhcnRlZCBfIC0+ICgpXG4gICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9lb2YgdClcbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgcXVlcnlfaWQ7IF8gfSBhcyB0KSA9XG4gICAgICBjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2UgdDtcbiAgICAgIEhhc2h0YmwucmVtb3ZlIGluc3RhbmNlLm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBxdWVyeV9pZFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHggPVxuICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgICB0aGVuIGBDbG9zZWRcbiAgICAgIGVsc2UgKFxuICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICB8IE5vdF9zdGFydGVkIHEgLT4gUXVldWUuZW5xdWV1ZSBxIChOb3JtYWwgeClcbiAgICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9tZXNzYWdlIHQgeCk7XG4gICAgICAgIGBPaylcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgXyB9IGFzIHQpIHggPVxuICAgICAgbWF0Y2ggd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHggd2l0aFxuICAgICAgfCBgQ2xvc2VkIC0+IGBDbG9zZWRcbiAgICAgIHwgYE9rIC0+IGBGbHVzaGVkIChXcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXIpXG4gICAgOztcblxuICAgIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICAgICAgdGhlbiBgQ2xvc2VkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+XG4gICAgICAgICAgICAgUXVldWUuZW5xdWV1ZSBxIChFeHBlcnQgKEJpZ3N0cmluZy5Ub19zdHJpbmcuc3ViIGJ1ZiB+cG9zIH5sZW4pKVxuICAgICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfbWVzc2FnZV9leHBlcnQgdCB+YnVmIH5wb3Mgfmxlbik7XG4gICAgICAgICAgYE9rKVxuICAgICAgOztcblxuICAgICAgbGV0IHdyaXRlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgXyB9IGFzIHQpIH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgbWF0Y2ggd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuIHdpdGhcbiAgICAgICAgfCBgQ2xvc2VkIC0+IGBDbG9zZWRcbiAgICAgICAgfCBgT2sgLT4gYEZsdXNoZWQgKFdyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlcilcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgc3RhcnQgdCA9XG4gICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgIHwgU3RhcnRlZCAtPiBmYWlsd2l0aCBcImF0dGVtcHRlZCB0byBzdGFydCB3cml0ZXIgd2hpY2ggd2FzIGFscmVhZHkgc3RhcnRlZFwiXG4gICAgICB8IE5vdF9zdGFydGVkIHEgLT5cbiAgICAgICAgdC5zdGF0ZSA8LSBTdGFydGVkO1xuICAgICAgICBRdWV1ZS5pdGVyIHEgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb3JtYWwgeCAtPiB3cml0ZV9tZXNzYWdlIHQgeFxuICAgICAgICAgIHwgRXhwZXJ0IHggLT4gd3JpdGVfbWVzc2FnZV9zdHJpbmcgdCB4KTtcbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkIHRoZW4gd3JpdGVfZW9mIHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uXG4gICAgICAgIChyZXN1bHQgOiAoXywgUnBjX2Vycm9yLnQpIFJlc3VsdC50KVxuICAgICAgICBvbl9leGNlcHRpb25cbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgKFVuY2F1Z2h0X2V4biBzZXhwKSAtPlxuICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgKEV4bi5jcmVhdGVfcyBzZXhwKVxuICAgIHwgRXJyb3IgXyB8IE9rIF8gLT4gKClcbiAgOztcblxuICBsZXQgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvblxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvblxuICAgIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICAgID1cbiAgICBsZXQgaWQgPSBxdWVyeS5pZCBpblxuICAgIG1hdGNoIGltcGxlbWVudGF0aW9uIHdpdGhcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuT25lX3dheSAoYmluX3F1ZXJ5X3JlYWRlciwgZikgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIG1lc3NhZ2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHF1ZXJ5X2NvbnRlbnRzIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZXJyIC0+IFN0b3AgZXJyXG4gICAgICAgfCBPayBxIC0+XG4gICAgICAgICAodHJ5XG4gICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSBxO1xuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgY29tcHV0YXRpb25cIilcbiAgICAgICAgICAgIGVsc2UgQ29udGludWUpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5X2V4cGVydCBmIC0+XG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgbGVuID0gKHF1ZXJ5LmRhdGEgOj4gaW50KSBpblxuICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuO1xuICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgIENvbnRpbnVlXG4gICAgICAgd2l0aFxuICAgICAgIHwgZXhuIC0+XG4gICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICBpZiBvbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgU3RvcFxuICAgICAgICAgICAgIChScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiKVxuICAgICAgICAgZWxzZSBDb250aW51ZSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjIChiaW5fcXVlcnlfcmVhZGVyLCBiaW5fcmVzcG9uc2Vfd3JpdGVyLCBmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBxdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcmVzdWx0X21vZGUgd2l0aFxuICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5CbG9ja2luZyAtPlxuICAgICAgICAgKHRyeVxuICAgICAgICAgICAgcXVlcnlfY29udGVudHNcbiAgICAgICAgICAgID4+fH4gZiB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgIHw+IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlclxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgKCogSW4gdGhlIFtEZWZlcnJlZF0gYnJhbmNoIHdlIHVzZSBbTW9uaXRvci50cnlfd2l0aF0sIHdoaWNoIGluY2x1ZGVzXG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIHdoZW4gaXQgY2F0Y2hlcyBhbiBleGNlcHRpb24uIEZvciBjb25zaXN0ZW5jeSwgd2UgYWxzbyBnZXRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgaGVyZS4gKilcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICBsZXQgc2V4cCA9XG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsgbG9jYXRpb24gPSBcInNlcnZlci1zaWRlIGJsb2NraW5nIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgICAgOyBleG4gOiBleG5cbiAgICAgICAgICAgICAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgKEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIHNleHApKTtcbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bilcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT5cbiAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgKCogV2UgZ2VuZXJhbGx5IHRyeSB0byB3cml0ZSBhIHJlc3BvbnNlIGJlZm9yZSBoYW5kbGluZyBbb25fZXhjZXB0aW9uXSBzbyBpZiB3ZVxuICAgICAgICAgICAgICBhcmUgY2xvc2luZyB0aGUgY29ubmVjdGlvbiB3ZSBzdGlsbCBhY3R1YWxseSBzZW5kIHRoZSByZXNwb25zZSBiYWNrLiBXaGVuIHdlXG4gICAgICAgICAgICAgIHBhc3MgW29uX2V4Y2VwdGlvbi5jYWxsYmFja10gaGVyZSwgd2UgYXJlIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgcmFpc2VkXG4gICAgICAgICAgICAgIGV4Y2VwdGlvbnMgbm90IHRvIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgY2xpZW50IChlLmcuIGlmIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICAgICByYWlzZXMgYm90aCBhc3luY2hyb25vdXNseSBhbmQgc3luY2hyb25vdXNseSkuIFRoaXMgd291bGQgYmUgaGFyZCB0byBoYW5kbGVcbiAgICAgICAgICAgICAgaW4gYSBtb3JlIHByaW5jaXBsZWQgd2F5LiAqKVxuICAgICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgICAgIH5ydW46YE5vd1xuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgKGZ1biAoKSAtPiBkZWZlcl9yZXN1bHQgKHF1ZXJ5X2NvbnRlbnRzID4+fH4gZiB0LmNvbm5lY3Rpb25fc3RhdGUpKVxuICAgICAgICAgaW5cbiAgICAgICAgICgqIEluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGEgdmFsdWUgaW1tZWRpYXRlbHksIHdlIHdpbGxcbiAgICAgICAgICAgIHdyaXRlIHRoZSByZXNwb25zZSBpbW1lZGlhdGVseSBhcyB3ZWxsICh0aGlzIGlzIGFsc28gd2h5IHRoZSBhYm92ZSBbdHJ5X3dpdGhdXG4gICAgICAgICAgICBoYXMgW35ydW46YE5vd10pLiAgVGhpcyBjYW4gYmUgYSBiaWcgcGVyZm9ybWFuY2Ugd2luIGZvciBzZXJ2ZXJzIHRoYXQgZ2V0IG1hbnlcbiAgICAgICAgICAgIHF1ZXJpZXMgaW4gYSBzaW5nbGUgQXN5bmMgY3ljbGUuICopXG4gICAgICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgID4+PiBmdW4gZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgZGF0YTtcbiAgICAgICAgICAgIG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiBkYXRhIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSk7XG4gICAgICBDb250aW51ZVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGNfZXhwZXJ0IChmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCByZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLmNyZWF0ZSBxdWVyeS5pZCB0LndyaXRlciBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICAoKiBXZSBuZWVkIHRoZSBbTW9uaXRvci50cnlfd2l0aF0gZXZlbiBmb3IgdGhlIGJsb2NraW5nIG1vZGUgYXMgdGhlIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIG1pZ2h0IHJldHVybiBbRGVsYXllZF9yZXBvbnNlXSwgc28gd2UgZG9uJ3QgYm90aGVyIG9wdGltaXppbmcgdGhlIGJsb2NraW5nXG4gICAgICAgICAgIG1vZGUuICopXG4gICAgICAgIGxldCByZXN0ID1cbiAgICAgICAgICBtYXRjaCBvbl9leGNlcHRpb24uY2FsbGJhY2sgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYExvZ1xuICAgICAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgICAgICBpblxuICAgICAgICBNb25pdG9yLnRyeV93aXRoIH5yZXN0IH5ydW46YE5vdyAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IChxdWVyeS5kYXRhIDo+IGludCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHJlc3BvbmRlciByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT4gcmVzdWx0XG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+IERlZmVycmVkLnJldHVybiByZXN1bHQpXG4gICAgICBpblxuICAgICAgbGV0IGhhbmRsZV9leG4gfmlzX3VuY2F1Z2h0X2V4biBleG4gPVxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICBScGNfcmVzdWx0LnVuY2F1Z2h0X2V4biBleG4gfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgIGlmIHJlc3BvbmRlci5yZXNwb25kZWRcbiAgICAgICAgICB0aGVuIHJlc3VsdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fd3JpdGVyX3VuaXQgcmVzdWx0O1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICAgIGluXG4gICAgICAgIGlmIGlzX3VuY2F1Z2h0X2V4blxuICAgICAgICB0aGVuIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgcmVzdWx0XG4gICAgICBpblxuICAgICAgbGV0IGNoZWNrX3Jlc3BvbmRlZCAoKSA9XG4gICAgICAgIGlmIHJlc3BvbmRlci5yZXNwb25kZWRcbiAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaGFuZGxlX2V4blxuICAgICAgICAgICAgfmlzX3VuY2F1Z2h0X2V4bjpmYWxzZVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJFeHBlcnQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCByZXBseVwiKVxuICAgICAgaW5cbiAgICAgIGxldCBkID1cbiAgICAgICAgbGV0IG9wZW4gRGVmZXJyZWRfaW1tZWRpYXRlLkxldF9zeW50YXggaW5cbiAgICAgICAgbWF0Y2glbWFwIGQgd2l0aFxuICAgICAgICB8IE9rIHJlc3VsdCAtPlxuICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICB8IFJlcGxpZWQgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgfCBEZWxheWVkX3Jlc3BvbnNlIGQgLT4gZFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkXG4gICAgICAgICAgdGhlbiBjaGVja19yZXNwb25kZWQgKClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHVwb24gZCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGNoZWNrX3Jlc3BvbmRlZCAoKVxuICAgICAgICAgICAgICB8PiBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246dC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDp0LmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICB8PiBva19leG4pO1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICAgIHwgRXJyb3IgZXhuIC0+IGhhbmRsZV9leG4gfmlzX3VuY2F1Z2h0X2V4bjp0cnVlIGV4blxuICAgICAgaW5cbiAgICAgIChtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgV2FpdFxuICAgICAgICAgICAobGV0JW1hcCByID0gZCBpblxuICAgICAgICAgICAgb2tfZXhuXG4gICAgICAgICAgICAgIChScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246dC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6dC5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgICAgcikpXG4gICAgICAgfCBTb21lIHJlc3VsdCAtPlxuICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBDb250aW51ZVxuICAgICAgICAgIHwgRXJyb3IgXyAtPiBTdG9wIHJlc3VsdCkpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLlN0cmVhbWluZ19ycGNcbiAgICAgICAgKGJpbl9xdWVyeV9yZWFkZXIsIGJpbl9pbml0X3dyaXRlciwgYmluX3VwZGF0ZV93cml0ZXIsIGltcGwpIC0+XG4gICAgICBsZXQgc3RyZWFtX3F1ZXJ5ID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHBpcGVfcnBjIHN0cmVhbV9xdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEFib3J0IC0+IDBcbiAgICAgICAgICAgIHwgYFF1ZXJ5IChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgIGluXG4gICAgICAobWF0Y2ggc3RyZWFtX3F1ZXJ5IHdpdGhcbiAgICAgICB8IEVycm9yIF9lcnIgLT4gKClcbiAgICAgICB8IE9rIGBBYm9ydCAtPlxuICAgICAgICAgKCogTm90ZSB0aGF0IHRoZXJlJ3Mgc29tZSBkZWxheSBiZXR3ZWVuIHdoZW4gd2UgcmVjZWl2ZSBhIHBpcGUgUlBDIHF1ZXJ5IGFuZFxuICAgICAgICAgICAgd2hlbiB3ZSBwdXQgc29tZXRoaW5nIGluIFtvcGVuX3N0cmVhbWluZ19yZXNwb25zZXNdICh3ZSB3YWl0IGZvclxuICAgICAgICAgICAgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRvIHJldHVybikuIER1cmluZyB0aGlzIHRpbWUsIGFuIGFib3J0IG1lc3NhZ2Ugd291bGRcbiAgICAgICAgICAgIGp1c3QgYmUgaWdub3JlZC4gVGhlIGRpc3BhdGNoZXIgY2FuJ3QgYWJvcnQgdGhlIHF1ZXJ5IHdoaWxlIHRoaXMgaXNcbiAgICAgICAgICAgIGhhcHBlbmluZywgdGhvdWdoLCBzaW5jZSB0aGUgaW50ZXJmYWNlIGRvZXNuJ3QgZXhwb3NlIHRoZSBJRCByZXF1aXJlZCB0b1xuICAgICAgICAgICAgYWJvcnQgdGhlIHF1ZXJ5IHVudGlsIGFmdGVyIGEgcmVzcG9uc2UgaGFzIGJlZW4gcmV0dXJuZWQuICopXG4gICAgICAgICBPcHRpb24uaXRlciAoSGFzaHRibC5maW5kIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIHF1ZXJ5LmlkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBQaXBlIHBpcGUgLT4gUGlwZS5jbG9zZV9yZWFkIHBpcGVcbiAgICAgICAgICAgfCBEaXJlY3QgdyAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3KVxuICAgICAgIHwgT2sgKGBRdWVyeSBsZW4pIC0+XG4gICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICB+bG9jYXRpb246XCJzdHJlYW1pbmdfcnBjIHNlcnZlci1zaWRlIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBzdHJlYW1fd3JpdGVyID1cbiAgICAgICAgICAgQ2FjaGVkX3N0cmVhbV93cml0ZXIuY3JlYXRlIH5pZCB+YmluX3dyaXRlcjpiaW5fdXBkYXRlX3dyaXRlclxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBpbXBsX3dpdGhfc3RhdGUgPVxuICAgICAgICAgICBtYXRjaCBpbXBsIHdpdGhcbiAgICAgICAgICAgfCBQaXBlIGYgLT4gYFBpcGUgZlxuICAgICAgICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgICAgICAgbGV0IHdyaXRlciA6IF8gRGlyZWN0X3N0cmVhbV93cml0ZXIudCA9XG4gICAgICAgICAgICAgICB7IGlkID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuSWQuY3JlYXRlICgpXG4gICAgICAgICAgICAgICA7IHN0YXRlID0gTm90X3N0YXJ0ZWQgKFF1ZXVlLmNyZWF0ZSAoKSlcbiAgICAgICAgICAgICAgIDsgY2xvc2VkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgICAgICAgIDsgaW5zdGFuY2UgPSB0LnBhY2tlZF9zZWxmXG4gICAgICAgICAgICAgICA7IHF1ZXJ5X2lkID0gaWRcbiAgICAgICAgICAgICAgIDsgZ3JvdXBzID0gQmFnLmNyZWF0ZSAoKVxuICAgICAgICAgICAgICAgOyBzdHJlYW1fd3JpdGVyXG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBIYXNodGJsLnNldCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+a2V5OnF1ZXJ5LmlkIH5kYXRhOihEaXJlY3Qgd3JpdGVyKTtcbiAgICAgICAgICAgICBgRGlyZWN0IChmLCB3cml0ZXIpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHJ1bl9pbXBsIGltcGwgc3BsaXRfb2sgaGFuZGxlX29rID1cbiAgICAgICAgICAgUnBjX3Jlc3VsdC50cnlfd2l0aFxuICAgICAgICAgICAgID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbjpvbl9leGNlcHRpb24uY2FsbGJhY2tcbiAgICAgICAgICAgICAoZnVuICgpIC0+IGRlZmVyX3Jlc3VsdCAoZGF0YSA+Pnx+IGltcGwpKVxuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHBpcGVfcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgRXJyb3IgKFVuY2F1Z2h0X2V4biBzZXhwIGFzIGVycikgLT5cbiAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoRXJyb3IgZXJyKTtcbiAgICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4blxuICAgICAgICAgICAgICAgb25fZXhjZXB0aW9uXG4gICAgICAgICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgICAgICAgICAoRXhuLmNyZWF0ZV9zIHNleHApXG4gICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKEVycm9yIGVycilcbiAgICAgICAgICAgfCBPayAoRXJyb3IgZXJyKSAtPlxuICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBlcnIpXG4gICAgICAgICAgIHwgT2sgKE9rIG9rKSAtPlxuICAgICAgICAgICAgIGxldCBpbml0aWFsLCByZXN0ID0gc3BsaXRfb2sgb2sgaW5cbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoT2sgaW5pdGlhbCk7XG4gICAgICAgICAgICAgaGFuZGxlX29rIHJlc3RcbiAgICAgICAgIGluXG4gICAgICAgICAobWF0Y2ggaW1wbF93aXRoX3N0YXRlIHdpdGhcbiAgICAgICAgICB8IGBQaXBlIGYgLT5cbiAgICAgICAgICAgIHJ1bl9pbXBsXG4gICAgICAgICAgICAgIChmdW4gZGF0YSAtPiBmIHQuY29ubmVjdGlvbl9zdGF0ZSBkYXRhKVxuICAgICAgICAgICAgICBGbi5pZFxuICAgICAgICAgICAgICAoZnVuIHBpcGVfciAtPlxuICAgICAgICAgICAgICAgICBIYXNodGJsLnNldCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+a2V5OmlkIH5kYXRhOihQaXBlIHBpcGVfcik7XG4gICAgICAgICAgICAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgICAgICAgICAgICAgKFdyaXRlci50cmFuc2ZlclxuICAgICAgICAgICAgICAgICAgICAgIHQud3JpdGVyXG4gICAgICAgICAgICAgICAgICAgICAgcGlwZV9yXG4gICAgICAgICAgICAgICAgICAgICAgKENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlIHN0cmVhbV93cml0ZXIgdC5wYWNrZWRfc2VsZiBpZCkpO1xuICAgICAgICAgICAgICAgICBQaXBlLmNsb3NlZCBwaXBlX3JcbiAgICAgICAgICAgICAgICAgPj4+IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBQaXBlLnVwc3RyZWFtX2ZsdXNoZWQgcGlwZV9yXG4gICAgICAgICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IGBPayB8IGBSZWFkZXJfY2xvc2VkIC0+XG4gICAgICAgICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLmJpbl93cml0ZXJfbmF0MF90IChPayBgRW9mKTtcbiAgICAgICAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZClcbiAgICAgICAgICB8IGBEaXJlY3QgKGYsIHdyaXRlcikgLT5cbiAgICAgICAgICAgIHJ1bl9pbXBsXG4gICAgICAgICAgICAgIChmdW4gZGF0YSAtPiBmIHQuY29ubmVjdGlvbl9zdGF0ZSBkYXRhIHdyaXRlcilcbiAgICAgICAgICAgICAgKGZ1biB4IC0+IHgsICgpKVxuICAgICAgICAgICAgICAoZnVuICgpIC0+IERpcmVjdF9zdHJlYW1fd3JpdGVyLnN0YXJ0IHdyaXRlcikpKTtcbiAgICAgIENvbnRpbnVlXG4gIDs7XG5cbiAgbGV0IGZsdXNoIChUIHQpID1cbiAgICBhc3NlcnQgKG5vdCB0LnN0b3BwZWQpO1xuICAgIGxldCBwcm9kdWNlcnNfZmx1c2hlZCA9XG4gICAgICBIYXNodGJsLmZvbGQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmluaXQ6W10gfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+XG4gICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICB8IERpcmVjdCBfIC0+IGFjY1xuICAgICAgICB8IFBpcGUgcGlwZSAtPiBEZWZlcnJlZC5pZ25vcmVfbSAoUGlwZS51cHN0cmVhbV9mbHVzaGVkIHBpcGUpIDo6IGFjYylcbiAgICBpblxuICAgIERlZmVycmVkLmFsbF91bml0IHByb2R1Y2Vyc19mbHVzaGVkXG4gIDs7XG5cbiAgbGV0IHN0b3AgKFQgdCkgPVxuICAgIHQuc3RvcHBlZCA8LSB0cnVlO1xuICAgIEhhc2h0YmwuaXRlciB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRGlyZWN0IHdyaXRlciAtPlxuICAgICAgICAoKiBEb24ndCByZW1vdmUgdGhlIHdyaXRlciBmcm9tIHRoZSBpbnN0YW5jZSwgYXMgdGhhdCB3b3VsZCBtb2RpZnkgdGhlIGhhc2h0YWJsZVxuICAgICAgICAgICB0aGF0IHdlIGFyZSBjdXJyZW50bHkgaXRlcmF0aW5nIG92ZXIuICopXG4gICAgICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB3cml0ZXJcbiAgICAgIHwgUGlwZSBfIC0+ICgpKTtcbiAgICBIYXNodGJsLmNsZWFyIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV91bmtub3duX3JwYyBvbl91bmtub3duX3JwYyBlcnJvciB0IHF1ZXJ5IDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudCA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgYENvbnRpbnVlIC0+IENvbnRpbnVlXG4gICAgfCBgUmFpc2UgLT4gUnBjX2Vycm9yLnJhaXNlIGVycm9yIHQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgIHwgYENsb3NlX2Nvbm5lY3Rpb24gLT4gU3RvcCAoT2sgKCkpXG4gICAgfCBgQ2FsbCBmIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGZcbiAgICAgICAgICAgdC5jb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIH5ycGNfdGFnOihQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LlAuUXVlcnkudGFnKVxuICAgICAgICAgICB+dmVyc2lvbjpxdWVyeS52ZXJzaW9uXG4gICAgICAgd2l0aFxuICAgICAgIHwgYENsb3NlX2Nvbm5lY3Rpb24gLT4gU3RvcCAoT2sgKCkpXG4gICAgICAgfCBgQ29udGludWUgLT4gQ29udGludWUpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9xdWVyeV9pbnRlcm5hbFxuICAgICAgICB0XG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBsZXQgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH0gPSB0LmltcGxlbWVudGF0aW9ucyBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA6IERlc2NyaXB0aW9uLnQgPVxuICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICBpblxuICAgIG1hdGNoIHQubGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIHdpdGhcbiAgICB8IFNvbWUgKGxhc3RfZGVzYywgaW1wbGVtZW50YXRpb24pIHdoZW4gRGVzY3JpcHRpb24uZXF1YWwgbGFzdF9kZXNjIGRlc2NyaXB0aW9uIC0+XG4gICAgICBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uLmZcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgIH5vbl9leGNlcHRpb246aW1wbGVtZW50YXRpb24ub25fZXhjZXB0aW9uXG4gICAgfCBOb25lIHwgU29tZSBfIC0+XG4gICAgICAobWF0Y2ggSGFzaHRibC5maW5kIGltcGxlbWVudGF0aW9ucyBkZXNjcmlwdGlvbiB3aXRoXG4gICAgICAgfCBTb21lIGltcGxlbWVudGF0aW9uIC0+XG4gICAgICAgICB0Lmxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA8LSBTb21lIChkZXNjcmlwdGlvbiwgaW1wbGVtZW50YXRpb24pO1xuICAgICAgICAgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgdFxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi5mXG4gICAgICAgICAgIH5vbl9leGNlcHRpb246aW1wbGVtZW50YXRpb24ub25fZXhjZXB0aW9uXG4gICAgICAgICAgIH5xdWVyeVxuICAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgKG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICAgICAgICB8IGBFeHBlcnQgaW1wbCAtPlxuICAgICAgICAgICAgbGV0IHsgUC5RdWVyeS50YWc7IHZlcnNpb247IGlkOyBkYXRhID0gbGVuIH0gPSBxdWVyeSBpblxuICAgICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgICBsZXQgcmVzcG9uZGVyID0gUmVzcG9uZGVyLmNyZWF0ZSBpZCB0LndyaXRlciBpblxuICAgICAgICAgICAgICBpbXBsXG4gICAgICAgICAgICAgICAgdC5jb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgICAgICAgfnJwY190YWc6KFAuUnBjX3RhZy50b19zdHJpbmcgdGFnKVxuICAgICAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICAgICAgcmVzcG9uZGVyXG4gICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgICB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICAgfmxlbjoobGVuIDo+IGludClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBDb250aW51ZSBlbHNlIFdhaXQgZFxuICAgICAgICAgIHwgKGBDb250aW51ZSB8IGBSYWlzZSB8IGBDbG9zZV9jb25uZWN0aW9uIHwgYENhbGwgXykgYXMgb25fdW5rbm93bl9ycGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciA9IFJwY19lcnJvci5VbmltcGxlbWVudGVkX3JwYyAocXVlcnkudGFnLCBgVmVyc2lvbiBxdWVyeS52ZXJzaW9uKSBpblxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBxdWVyeS5pZCBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgKEVycm9yIGVycm9yKTtcbiAgICAgICAgICAgIGhhbmRsZV91bmtub3duX3JwYyBvbl91bmtub3duX3JwYyBlcnJvciB0IHF1ZXJ5KSlcbiAgOztcblxuICBsZXQgaGFuZGxlX3F1ZXJ5XG4gICAgICAgIChUIHQpXG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBpZiB0LnN0b3BwZWQgfHwgV3JpdGVyLmlzX2Nsb3NlZCB0LndyaXRlclxuICAgIHRoZW4gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LlN0b3AgKE9rICgpKVxuICAgIGVsc2VcbiAgICAgIGhhbmRsZV9xdWVyeV9pbnRlcm5hbFxuICAgICAgICB0XG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IEluc3RhbmNlLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbmxldCBjcmVhdGUgfmltcGxlbWVudGF0aW9uczppJ3Mgfm9uX3Vua25vd25fcnBjID1cbiAgKCogTWFrZSBzdXJlIHRoZSB0YWdzIGFyZSB1bmlxdWUuICopXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBEZXNjcmlwdGlvbi5UYWJsZS5jcmVhdGUgfnNpemU6MTAgKCkgaW5cbiAgbGV0IGR1cHMgPSBEZXNjcmlwdGlvbi5IYXNoX3NldC5jcmVhdGUgfnNpemU6MTAgKCkgaW5cbiAgTGlzdC5pdGVyIGkncyB+ZjooZnVuIChpIDogXyBJbXBsZW1lbnRhdGlvbi50KSAtPlxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICB7IERlc2NyaXB0aW9uLm5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIGkudGFnOyB2ZXJzaW9uID0gaS52ZXJzaW9uIH1cbiAgICBpblxuICAgIG1hdGNoIEhhc2h0YmwuYWRkIGltcGxlbWVudGF0aW9ucyB+a2V5OmRlc2NyaXB0aW9uIH5kYXRhOmkgd2l0aFxuICAgIHwgYE9rIC0+ICgpXG4gICAgfCBgRHVwbGljYXRlIC0+IEhhc2hfc2V0LmFkZCBkdXBzIGRlc2NyaXB0aW9uKTtcbiAgaWYgbm90IChIYXNoX3NldC5pc19lbXB0eSBkdXBzKVxuICB0aGVuIEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyAoSGFzaF9zZXQudG9fbGlzdCBkdXBzKSlcbiAgZWxzZVxuICAgIE9rXG4gICAgICB7IGltcGxlbWVudGF0aW9uc1xuICAgICAgOyBvbl91bmtub3duX3JwYyA9IChvbl91bmtub3duX3JwYyA6PiBfIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0KVxuICAgICAgfVxuOztcblxubGV0IGluc3RhbnRpYXRlXG4gICAgICB0XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJcbiAgPVxuICBsZXQgcmVjIHVucGFja2VkIDogXyBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgPSB0XG4gICAgOyB3cml0ZXJcbiAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNvbm5lY3Rpb25fc3RhdGVcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgIDsgc3RvcHBlZCA9IGZhbHNlXG4gICAgOyBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPSBOb25lXG4gICAgOyBwYWNrZWRfc2VsZiA9IEluc3RhbmNlLlQgdW5wYWNrZWRcbiAgICB9XG4gIGluXG4gIHVucGFja2VkLnBhY2tlZF9zZWxmXG47O1xuXG5leGNlcHRpb24gRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBvZiBEZXNjcmlwdGlvbi50IGxpc3QgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGNyZWF0ZV9leG4gfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgPVxuICBtYXRjaCBjcmVhdGUgfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgd2l0aFxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKVxuOztcblxubGV0IG51bGwgKCkgPSBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnM6W10gfm9uX3Vua25vd25fcnBjOmBSYWlzZVxuXG5sZXQgYWRkX2V4biB0IChpbXBsZW1lbnRhdGlvbiA6IF8gSW1wbGVtZW50YXRpb24udCkgPVxuICBsZXQgZGVzYyA6IERlc2NyaXB0aW9uLnQgPVxuICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaW1wbGVtZW50YXRpb24udGFnOyB2ZXJzaW9uID0gaW1wbGVtZW50YXRpb24udmVyc2lvbiB9XG4gIGluXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLmNvcHkgdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzYyB+ZGF0YTppbXBsZW1lbnRhdGlvbiB3aXRoXG4gIHwgYER1cGxpY2F0ZSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBbIGRlc2MgXSlcbiAgfCBgT2sgLT4geyB0IHdpdGggaW1wbGVtZW50YXRpb25zIH1cbjs7XG5cbmxldCBhZGQgdCBpbXBsZW1lbnRhdGlvbiA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gYWRkX2V4biB0IGltcGxlbWVudGF0aW9uKVxuXG5sZXQgbGlmdCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSB+ZiA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLm1hcCBpbXBsZW1lbnRhdGlvbnMgfmY6KEltcGxlbWVudGF0aW9uLmxpZnQgfmYpIGluXG4gIGxldCBvbl91bmtub3duX3JwYyA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgKGBSYWlzZSB8IGBDb250aW51ZSB8IGBDbG9zZV9jb25uZWN0aW9uKSBhcyB4IC0+IHhcbiAgICB8IGBDYWxsIGNhbGwgLT4gYENhbGwgKGZ1biBzdGF0ZSAtPiBjYWxsIChmIHN0YXRlKSlcbiAgICB8IGBFeHBlcnQgZXhwZXJ0IC0+IGBFeHBlcnQgKGZ1biBzdGF0ZSAtPiBleHBlcnQgKGYgc3RhdGUpKVxuICBpblxuICB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gUmVzcG9uZGVyXG5cbiAgbW9kdWxlIFJwY19yZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBSZXNwb25kZXIudFxuXG4gICAgbGV0IGNhbm5vdF9zZW5kIHIgPVxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICAgclxuICAgICAgICBbJXNleHBfb2Y6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdXG4gICAgOztcblxuICAgIGxldCBtYXJrX3Jlc3BvbmRlZCAodCA6IHQpID1cbiAgICAgIGlmIHQucmVzcG9uZGVkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWxyZWFkeSByZXNwb25kZWRcIiB0IFslc2V4cF9vZjogUmVzcG9uZGVyLnRdO1xuICAgICAgdC5yZXNwb25kZWQgPC0gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGUgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgICB0LndyaXRlclxuICAgICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAgIGhlYWRlclxuICAgICAgICAgIH5idWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgd2l0aFxuICAgICAgfCBTZW50IGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT4gY2Fubm90X3NlbmQgclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2JpZ3N0cmluZyAodCA6IHQpIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgICBSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIChOYXQwLm9mX2ludF9leG4gbGVuKSB9XG4gICAgICBpblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgaGVhZGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Vycm9yICh0IDogdCkgZXJyb3IgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBkYXRhID1cbiAgICAgICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSByYXcgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAoRXJyb3IudG9fZXhuIGVycm9yKVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgfSlcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfYmluX3Byb3QgKHQgOiB0KSBiaW5fd3JpdGVyX2EgYSA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2EpKVxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayBhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgY3JlYXRlX2V4biA9IGNyZWF0ZV9leG5cbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFJlYWRlciA9IFRyYW5zcG9ydC5SZWFkZXJcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbm1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl90eXBlX2NsYXNzXVxuXG4gIHZhbCB2MSA6IHRcbiAgdmFsIG5lZ290aWF0ZSA6IHVzOnQgLT4gcGVlcjp0IC0+IGludCBPcl9lcnJvci50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQLkhlYWRlclxuXG4gIGxldCBuZWdvdGlhdGUgPSBuZWdvdGlhdGUgfmFsbG93X2xlZ2FjeV9wZWVyOnRydWVcbiAgbGV0IHYxID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIuY3JlYXRlX2V4biB+cHJvdG9jb2w6UnBjIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxIF1cbmVuZFxuXG5tb2R1bGUgSGFuZHNoYWtlX2Vycm9yID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRW9mXG4gICAgICB8IFRyYW5zcG9ydF9jbG9zZWRcbiAgICAgIHwgVGltZW91dFxuICAgICAgfCBSZWFkaW5nX2hlYWRlcl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGlvbl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGVkX3VuZXhwZWN0ZWRfdmVyc2lvbiBvZiBpbnRcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGV4Y2VwdGlvbiBIYW5kc2hha2VfZXJyb3Igb2YgKHQgKiBJbmZvLnQpIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IHRvX2V4biB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbiB0ID0gSGFuZHNoYWtlX2Vycm9yICh0LCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uKVxuZW5kXG5cbm1vZHVsZSBIZWFydGJlYXRfY29uZmlnID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IHNlbmRfZXZlcnkgOiBUaW1lX25zLlNwYW4udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBmaWVsZHNdXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/KHRpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDMwLilcbiAgICAgICAgPyhzZW5kX2V2ZXJ5ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAxMC4pXG4gICAgICAgICgpXG4gICAgPVxuICAgIHsgdGltZW91dDsgc2VuZF9ldmVyeSB9XG4gIDs7XG5cbiAgbW9kdWxlIFJ1bnRpbWUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtdXRhYmxlIHRpbWVvdXQgOiBUaW1lX25zLlNwYW4udFxuICAgICAgOyBzZW5kX2V2ZXJ5IDogVGltZV9ucy5TcGFuLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgdG9fcnVudGltZSB7IHRpbWVvdXQ7IHNlbmRfZXZlcnkgfSA9IHsgUnVudGltZS50aW1lb3V0OyBzZW5kX2V2ZXJ5IH1cbmVuZFxuXG50eXBlIHJlc3BvbnNlX2hhbmRsZXIgPVxuICBOYXQwLnQgUC5SZXNwb25zZS50XG4gIC0+IHJlYWRfYnVmZmVyOkJpZ3N0cmluZy50XG4gIC0+IHJlYWRfYnVmZmVyX3Bvc19yZWY6aW50IHJlZlxuICAtPiBbIGBrZWVwXG4gICAgIHwgYHdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gICAgIHwgYHJlbW92ZSBvZiB1bml0IFJwY19yZXN1bHQudFxuICAgICB8IGByZW1vdmVfYW5kX3dhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gICAgIF1cblxudHlwZSB0ID1cbiAgeyBkZXNjcmlwdGlvbiA6IEluZm8udFxuICA7IGhlYXJ0YmVhdF9jb25maWcgOiBIZWFydGJlYXRfY29uZmlnLlJ1bnRpbWUudFxuICA7IG11dGFibGUgaGVhcnRiZWF0X2NhbGxiYWNrcyA6ICh1bml0IC0+IHVuaXQpIGFycmF5XG4gIDsgbXV0YWJsZSBsYXN0X3NlZW5fYWxpdmUgOiBUaW1lX25zLnRcbiAgOyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFdyaXRlci50XG4gIDsgb3Blbl9xdWVyaWVzIDogKFAuUXVlcnlfaWQudCwgKHJlc3BvbnNlX2hhbmRsZXJbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IGNsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgSXZhci50XG4gIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAoKiBUaGVyZSdzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvbm5lY3Rpb25zIGFuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBpbnN0YW5jZXNcbiAgICAgKHRoZSBsYXR0ZXIgZGVwZW5kcyBvbiB0aGUgY29ubmVjdGlvbiBzdGF0ZSwgd2hpY2ggaXMgZ2l2ZW4gYWNjZXNzIHRvIHRoZSBjb25uZWN0aW9uXG4gICAgIHdoZW4gaXQgaXMgY3JlYXRlZCkuICopXG4gIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnQgU2V0X29uY2UudFxuICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UudFxuICA7IGhlYXJ0YmVhdF9ldmVudCA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LnQgU2V0X29uY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90X2h1bV93cml0ZXIgdCA9XG4gIFslc2V4cCB7IGRlc2NyaXB0aW9uIDogSW5mby50ID0gdC5kZXNjcmlwdGlvbjsgd3JpdGVyIDogV3JpdGVyLnQgPSB0LndyaXRlciB9XVxuOztcblxubGV0IGRlc2NyaXB0aW9uIHQgPSB0LmRlc2NyaXB0aW9uXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbmxldCB3cml0ZXIgdCA9XG4gIGlmIGlzX2Nsb3NlZCB0IHx8IG5vdCAoV3JpdGVyLmNhbl9zZW5kIHQud3JpdGVyKSB0aGVuIEVycm9yIGBDbG9zZWQgZWxzZSBPayB0LndyaXRlclxuOztcblxubGV0IGJ5dGVzX3RvX3dyaXRlIHQgPSBXcml0ZXIuYnl0ZXNfdG9fd3JpdGUgdC53cml0ZXJcbmxldCBmbHVzaGVkIHQgPSBXcml0ZXIuZmx1c2hlZCB0LndyaXRlclxuXG5sZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdCAtPiAnYSBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiAnYSA9XG4gIGZ1biB0IHIgLT5cbiAgbWF0Y2ggciB3aXRoXG4gIHwgU2VudCB4IC0+IHhcbiAgfCBDbG9zZWQgLT5cbiAgICAoKiBBbGwgb2YgdGhlIHBsYWNlcyB3ZSBjYWxsIFtoYW5kbGVfc2VuZF9yZXN1bHRdIGNoZWNrIHdoZXRoZXIgW3RdIGlzIGNsb3NlZFxuICAgICAgICh1c3VhbGx5IHZpYSB0aGUgW3dyaXRlcl0gZnVuY3Rpb24gYWJvdmUpLiBUaGlzIGNoZWNrcyB3aGV0aGVyIFt0LndyaXRlcl0gaXNcbiAgICAgICBjbG9zZWQsIHdoaWNoIHNob3VsZCBub3QgaGFwcGVuIHVubGVzcyBbdF0gaXMgY2xvc2VkLiAqKVxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUlBDIGNvbm5lY3Rpb24gZ290IGNsb3NlZCB3cml0ZXJcIiB0IHNleHBfb2ZfdF9odW1fd3JpdGVyXG4gIHwgTWVzc2FnZV90b29fYmlnIF8gLT5cbiAgICByYWlzZV9zXG4gICAgICBbJXNleHBcbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICwgeyByZWFzb24gPSAociA6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpOyBjb25uZWN0aW9uID0gKHQgOiB0X2h1bV93cml0ZXIpIH1dXG47O1xuXG5sZXQgZGlzcGF0Y2ggdCB+cmVzcG9uc2VfaGFuZGxlciB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCBhcyByIC0+IHJcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTpxdWVyeS5QLlF1ZXJ5LmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICB3cml0ZXJcbiAgICAgIChQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9xdWVyeSkpXG4gICAgICAoUXVlcnkgcXVlcnkpXG4gICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQ7XG4gICAgT2sgKClcbjs7XG5cbmxldCBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBkb19zZW5kIHQgfnRhZyB+dmVyc2lvbiBidWYgfnBvcyB+bGVuIH5yZXNwb25zZV9oYW5kbGVyID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgYENsb3NlZFxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBpZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgbGV0IGhlYWRlciA6IE5hdDAudCBQLk1lc3NhZ2UudCA9XG4gICAgICBRdWVyeSB7IHRhZzsgdmVyc2lvbjsgaWQ7IGRhdGEgPSBOYXQwLm9mX2ludF9leG4gbGVuIH1cbiAgICBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIGxldCByZXN1bHQgPVxuICAgICAgZG9fc2VuZCB3cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGhlYWRlciB+YnVmIH5wb3MgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHRcbiAgICBpblxuICAgIE9rIHJlc3VsdFxuOztcblxubGV0IGRpc3BhdGNoX2JpZ3N0cmluZyA9IG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcblxubGV0IHNjaGVkdWxlX2Rpc3BhdGNoX2JpZ3N0cmluZyA9XG4gIG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbjs7XG5cbmxldCBoYW5kbGVfcmVzcG9uc2UgdCAocmVzcG9uc2UgOiBfIFAuUmVzcG9uc2UudCkgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZCB3aXRoXG4gIHwgTm9uZSAtPiBTdG9wIChFcnJvciAoUnBjX2Vycm9yLlVua25vd25fcXVlcnlfaWQgcmVzcG9uc2UuaWQpKVxuICB8IFNvbWUgcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgIChtYXRjaCByZXNwb25zZV9oYW5kbGVyIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiB3aXRoXG4gICAgIHwgYGtlZXAgLT4gQ29udGludWVcbiAgICAgfCBgd2FpdCB3YWl0IC0+IFdhaXQgd2FpdFxuICAgICB8IGByZW1vdmVfYW5kX3dhaXQgd2FpdCAtPlxuICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkO1xuICAgICAgIFdhaXQgd2FpdFxuICAgICB8IGByZW1vdmUgcmVtb3ZhbF9jaXJjdW1zdGFuY2VzIC0+XG4gICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQ7XG4gICAgICAgKG1hdGNoIHJlbW92YWxfY2lyY3Vtc3RhbmNlcyB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gQ29udGludWVcbiAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIF8gLT4gQ29udGludWVcbiAgICAgICAgICAgfCBCaW5faW9fZXhuIF9cbiAgICAgICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgICAgICB8IFdyaXRlX2Vycm9yIF9cbiAgICAgICAgICAgfCBVbmNhdWdodF9leG4gX1xuICAgICAgICAgICB8IFVua25vd25fcXVlcnlfaWQgXyAtPiBTdG9wIChFcnJvciBlKSkpKVxuOztcblxubGV0IGhhbmRsZV9tc2dcbiAgICAgIHRcbiAgICAgIChtc2cgOiBfIFAuTWVzc2FnZS50KVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgPVxuICBtYXRjaCBtc2cgd2l0aFxuICB8IEhlYXJ0YmVhdCAtPlxuICAgIEFycmF5Lml0ZXIgdC5oZWFydGJlYXRfY2FsbGJhY2tzIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgICBDb250aW51ZVxuICB8IFJlc3BvbnNlIHJlc3BvbnNlIC0+IGhhbmRsZV9yZXNwb25zZSB0IHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICB8IFF1ZXJ5IHF1ZXJ5IC0+XG4gICAgbGV0IGluc3RhbmNlID0gU2V0X29uY2UuZ2V0X2V4biB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSBbJWhlcmVdIGluXG4gICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmhhbmRsZV9xdWVyeVxuICAgICAgaW5zdGFuY2VcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuOztcblxubGV0IGNsb3NlX3JlYXNvbiB0IH5vbl9jbG9zZSA9XG4gIGxldCByZWFzb24gPSBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkIGluXG4gIG1hdGNoIG9uX2Nsb3NlIHdpdGhcbiAgfCBgc3RhcnRlZCAtPiByZWFzb25cbiAgfCBgZmluaXNoZWQgLT5cbiAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkIGluXG4gICAgcmVhc29uXG47O1xuXG5sZXQgY2xvc2VfZmluaXNoZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkXG5cbmxldCBhZGRfaGVhcnRiZWF0X2NhbGxiYWNrIHQgZiA9XG4gICgqIEFkZGluZyBoZWFydGJlYXQgY2FsbGJhY2tzIGlzIHJlbGF0aXZlbHkgcmFyZSwgYnV0IHRoZSBjYWxsYmFja3MgYXJlIHRyaWdnZXJlZCBhIGxvdC5cbiAgICAgVGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG1ha2VzIHRoZSBhZGRpdGlvbiBxdWFkcmF0aWMgZm9yIHRoZSBzYWtlIG9mIGtlZXBpbmcgdGhlXG4gICAgIHRyaWdnZXJpbmcgY2hlYXAuICopXG4gIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyA8LSBBcnJheS5hcHBlbmQgW3wgZiB8XSB0LmhlYXJ0YmVhdF9jYWxsYmFja3Ncbjs7XG5cbmxldCByZXNldF9oZWFydGJlYXRfdGltZW91dCB0IHRpbWVvdXQgPVxuICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dCA8LSB0aW1lb3V0O1xuICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZVxuOztcblxubGV0IGxhc3Rfc2Vlbl9hbGl2ZSB0ID0gdC5sYXN0X3NlZW5fYWxpdmVcblxubGV0IGFib3J0X2hlYXJ0YmVhdGluZyB0ID1cbiAgT3B0aW9uLml0ZXIgKFNldF9vbmNlLmdldCB0LmhlYXJ0YmVhdF9ldmVudCkgfmY6KGZ1biBldmVudCAtPlxuICAgIG1hdGNoIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmFib3J0IHQudGltZV9zb3VyY2UgZXZlbnQgd2l0aFxuICAgIHwgT2sgfCBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkIC0+ICgpXG4gICAgfCBDdXJyZW50bHlfaGFwcGVuaW5nIC0+XG4gICAgICBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ydW5fYWZ0ZXIgdC50aW1lX3NvdXJjZSBUaW1lX25zLlNwYW4uemVybyAoZnVuICgpIC0+XG4gICAgICAgIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmFib3J0X2V4biB0LnRpbWVfc291cmNlIGV2ZW50KSlcbjs7XG5cbmxldCBjbG9zZSA/KHN0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9pbnRfc2VjIDUpIH5yZWFzb24gdCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIGFib3J0X2hlYXJ0YmVhdGluZyB0O1xuICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgcmVhc29uO1xuICAgIChtYXRjaCBTZXRfb25jZS5nZXQgdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2Ugd2l0aFxuICAgICB8IE5vbmUgLT4gRGVmZXJyZWQudW5pdFxuICAgICB8IFNvbWUgaW5zdGFuY2UgLT5cbiAgICAgICBsZXQgZmx1c2hlZCA9IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5mbHVzaCBpbnN0YW5jZSBpblxuICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZmx1c2hlZFxuICAgICAgIHRoZW4gKFxuICAgICAgICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnN0b3AgaW5zdGFuY2U7XG4gICAgICAgICBmbHVzaGVkKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgIERlZmVycmVkLmFueV91bml0XG4gICAgICAgICAgICAgWyBmbHVzaGVkXG4gICAgICAgICAgICAgOyBXcml0ZXIuc3RvcHBlZCB0LndyaXRlclxuICAgICAgICAgICAgIDsgVGltZV9zb3VyY2UuYWZ0ZXJcbiAgICAgICAgICAgICAgICAgKFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzIHQudGltZV9zb3VyY2UpXG4gICAgICAgICAgICAgICAgIHN0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dFxuICAgICAgICAgICAgIF1cbiAgICAgICAgIGluXG4gICAgICAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2Uuc3RvcCBpbnN0YW5jZSkpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIFdyaXRlci5jbG9zZSB0LndyaXRlclxuICAgID4+PiBmdW4gKCkgLT4gUmVhZGVyLmNsb3NlIHQucmVhZGVyID4+PiBmdW4gKCkgLT4gSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCkpO1xuICBjbG9zZV9maW5pc2hlZCB0XG47O1xuXG5sZXQgb25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPVxuICBsZXQgZiBidWYgfnBvcyB+bGVuOl8gOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50ID1cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICBsZXQgbmF0MF9tc2cgPSBQLk1lc3NhZ2UuYmluX3JlYWRfbmF0MF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgIG1hdGNoXG4gICAgICBoYW5kbGVfbXNnXG4gICAgICAgIHRcbiAgICAgICAgbmF0MF9tc2dcbiAgICAgICAgfnJlYWRfYnVmZmVyOmJ1ZlxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZjpwb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICB3aXRoXG4gICAgfCBDb250aW51ZSAtPiBDb250aW51ZVxuICAgIHwgV2FpdCBfIGFzIHJlcyAtPiByZXNcbiAgICB8IFN0b3AgcmVzdWx0IC0+XG4gICAgICBsZXQgcmVhc29uID1cbiAgICAgICAgbGV0IG1zZyA9IFwiUnBjIG1lc3NhZ2UgaGFuZGxpbmcgbG9vcCBzdG9wcGVkXCIgaW5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBJbmZvLm9mX3N0cmluZyBtc2dcbiAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgSW5mby5jcmVhdGVcbiAgICAgICAgICAgIG1zZ1xuICAgICAgICAgICAgZVxuICAgICAgICAgICAgKFJwY19lcnJvci5zZXhwX29mX3QgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgXCJDb25uZWN0aW9uLm9uX21lc3NhZ2UgcmVzdWx0ZWQgaW4gQ29ubmVjdGlvbl9jbG9zZWQgZXJyb3IuIFRoaXMgaXMgXFxcbiAgICAgICAgICAgICAgICAgIHdlaXJkLlwiXSkpXG4gICAgICBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbik7XG4gICAgICBTdG9wIHJlYXNvblxuICBpblxuICBTdGFnZWQuc3RhZ2UgZlxuOztcblxubGV0IGhlYXJ0YmVhdF9ub3cgdCA9XG4gIGxldCBzaW5jZV9sYXN0X2hlYXJ0YmVhdCA9XG4gICAgVGltZV9ucy5kaWZmIChTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZSkgdC5sYXN0X3NlZW5fYWxpdmVcbiAgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPiApIHNpbmNlX2xhc3RfaGVhcnRiZWF0IHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0XG4gIHRoZW4gKFxuICAgIGxldCByZWFzb24gKCkgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICAhXCJObyBoZWFydGJlYXRzIHJlY2VpdmVkIGZvciAle3NleHA6VGltZV9ucy5TcGFuLnR9LlwiXG4gICAgICAgIHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0XG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3RodW5rIHJlYXNvbikpKVxuICBlbHNlIChcbiAgICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gICAgfCBFcnJvciBgQ2xvc2VkIC0+ICgpXG4gICAgfCBPayB3cml0ZXIgLT5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90IHdyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgSGVhcnRiZWF0XG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdClcbjs7XG5cbmxldCBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAzMC5cblxubGV0IGNsZWFudXAgdCB+cmVhc29uIGV4biA9XG4gIGRvbid0X3dhaXRfZm9yIChjbG9zZSB+cmVhc29uIHQpO1xuICBpZiBub3QgKEhhc2h0YmwuaXNfZW1wdHkgdC5vcGVuX3F1ZXJpZXMpXG4gIHRoZW4gKFxuICAgIGxldCBlcnJvciA9XG4gICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgfCBScGNfZXJyb3IuUnBjIChlcnJvciwgKF8gOiBJbmZvLnQpKSAtPiBlcnJvclxuICAgICAgfCBleG4gLT4gVW5jYXVnaHRfZXhuIChFeG4uc2V4cF9vZl90IGV4bilcbiAgICBpblxuICAgICgqIGNsZWFuIHVwIG9wZW4gc3RyZWFtaW5nIHJlc3BvbnNlcyAqKVxuICAgICgqIGFuIHVuZm9ydHVuYXRlIGhhY2s7IG9rIGJlY2F1c2UgdGhlIHJlc3BvbnNlIGhhbmRsZXIgd2lsbCBoYXZlIG5vdGhpbmdcbiAgICAgICB0byByZWFkIGZvbGxvd2luZyBhIHJlc3BvbnNlIHdoZXJlIFtkYXRhXSBpcyBhbiBlcnJvciAqKVxuICAgIGxldCBkdW1teV9idWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIDEgaW5cbiAgICBsZXQgZHVtbXlfcmVmID0gcmVmIDAgaW5cbiAgICBIYXNodGJsLml0ZXJpIHQub3Blbl9xdWVyaWVzIH5mOihmdW4gfmtleTpxdWVyeV9pZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBpZ25vcmVcbiAgICAgICAgKHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyOmR1bW15X2J1ZmZlclxuICAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZjpkdW1teV9yZWZcbiAgICAgICAgICAgeyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gRXJyb3IgZXJyb3IgfSkpO1xuICAgIEhhc2h0YmwuY2xlYXIgdC5vcGVuX3F1ZXJpZXM7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGR1bW15X2J1ZmZlcilcbjs7XG5cbmxldCBzY2hlZHVsZV9oZWFydGJlYXRzIHQgPVxuICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZTtcbiAgbGV0IGhlYXJ0YmVhdF9mcm9tX25vd19vbiA9XG4gICAgKCogW2F0X2ludGVydmFsc10gd2lsbCBzY2hlZHVsZSB0aGUgZmlyc3QgaGVhcnRiZWF0IHRoZSBmaXJzdCB0aW1lIHRoZSB0aW1lX3NvdXJjZSBpc1xuICAgICAgIGFkdmFuY2VkICopXG4gICAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuYXRfaW50ZXJ2YWxzXG4gICAgICB0LnRpbWVfc291cmNlXG4gICAgICB0LmhlYXJ0YmVhdF9jb25maWcuc2VuZF9ldmVyeVxuICAgICAgKGZ1biAoKSAtPiBoZWFydGJlYXRfbm93IHQpXG4gIGluXG4gIFNldF9vbmNlLnNldF9leG4gdC5oZWFydGJlYXRfZXZlbnQgWyVoZXJlXSBoZWFydGJlYXRfZnJvbV9ub3dfb25cbjs7XG5cbmxldCBydW5fYWZ0ZXJfaGFuZHNoYWtlIHQgfmltcGxlbWVudGF0aW9ucyB+Y29ubmVjdGlvbl9zdGF0ZSB+d3JpdGVyX21vbml0b3JfZXhucyA9XG4gIGxldCBpbnN0YW5jZSA9XG4gICAgSW1wbGVtZW50YXRpb25zLmluc3RhbnRpYXRlXG4gICAgICBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIH53cml0ZXI6dC53cml0ZXJcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZTooY29ubmVjdGlvbl9zdGF0ZSB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5zdGFuY2U7XG4gIGxldCBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSB+bmFtZTpcIlJQQyBjbG9zZSBjb25uZWN0aW9uIG1vbml0b3JcIiAoKSBpblxuICBNb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnMgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIH5mOihmdW4gZXhuIC0+XG4gICAgbGV0IHJlYXNvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBpbXBsZW1lbnRhdGlvblwiIChleG4gOiBFeG4udCldXG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KSk7XG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY29ubmVjdGlvbiBsb29wXCIgKCkgaW5cbiAgbGV0IHJlYXNvbiBuYW1lIGV4biA9XG4gICAgZXhuLCBJbmZvLnRhZyAoSW5mby5vZl9leG4gZXhuKSB+dGFnOihcImV4biByYWlzZWQgaW4gUlBDIGNvbm5lY3Rpb24gXCIgXiBuYW1lKVxuICBpblxuICBTdHJlYW0uaXRlclxuICAgIChTdHJlYW0uaW50ZXJsZWF2ZVxuICAgICAgIChTdHJlYW0ub2ZfbGlzdFxuICAgICAgICAgIFsgU3RyZWFtLm1hcCB+ZjoocmVhc29uIFwibG9vcFwiKSAoTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcilcbiAgICAgICAgICA7IFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcIldyaXRlci50XCIpIHdyaXRlcl9tb25pdG9yX2V4bnNcbiAgICAgICAgICBdKSlcbiAgICB+ZjooZnVuIChleG4sIHJlYXNvbikgLT4gY2xlYW51cCB0IGV4biB+cmVhc29uKTtcbiAgd2l0aGluIH5tb25pdG9yIChmdW4gKCkgLT5cbiAgICBzY2hlZHVsZV9oZWFydGJlYXRzIHQ7XG4gICAgUmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgdC5yZWFkZXJcbiAgICAgIH5vbl9tZXNzYWdlOihTdGFnZWQudW5zdGFnZSAob25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpKVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDooZnVuICgpIC0+XG4gICAgICAgIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgT2sgcmVhc29uIC0+IGNsZWFudXAgdCB+cmVhc29uIChScGNfZXJyb3IuUnBjIChDb25uZWN0aW9uX2Nsb3NlZCwgdC5kZXNjcmlwdGlvbikpXG4gICAgKCogVGhlIHByb3RvY29sIGlzIHN1Y2ggdGhhdCByaWdodCBub3csIHRoZSBvbmx5IG91dGNvbWUgb2YgdGhlIG90aGVyIHNpZGUgY2xvc2luZyB0aGVcbiAgICAgICBjb25uZWN0aW9uIG5vcm1hbGx5IGlzIHRoYXQgd2UgZ2V0IGFuIGVvZi4gKilcbiAgICB8IEVycm9yIChgRW9mIHwgYENsb3NlZCkgLT5cbiAgICAgIGNsZWFudXBcbiAgICAgICAgdFxuICAgICAgICB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkVPRiBvciBjb25uZWN0aW9uIGNsb3NlZFwiKVxuICAgICAgICAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKSlcbjs7XG5cbmxldCBkb19oYW5kc2hha2UgdCB+aGFuZHNoYWtlX3RpbWVvdXQgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCAtPiByZXR1cm4gKEVycm9yIEhhbmRzaGFrZV9lcnJvci5UcmFuc3BvcnRfY2xvc2VkKVxuICB8IE9rIHdyaXRlciAtPlxuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90IHdyaXRlciBIZWFkZXIuYmluX3Qud3JpdGVyIEhlYWRlci52MSB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICAoKiBJZiB3ZSB1c2UgW21heF9jb25uZWN0aW9uc10gaW4gdGhlIHNlcnZlciwgdGhlbiB0aGlzIHJlYWQgbWF5IGp1c3QgaGFuZyB1bnRpbCB0aGVcbiAgICAgICBzZXJ2ZXIgc3RhcnRzIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgKHdoaWNoIGNvdWxkIGJlIG5ldmVyKS4gIFRoYXQgaXMgd2h5IGFcbiAgICAgICB0aW1lb3V0IGlzIHVzZWQgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgKGZ1biAoKSAtPiBSZWFkZXIucmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0LnJlYWRlciBIZWFkZXIuYmluX3QucmVhZGVyKVxuICAgIGluXG4gICAgKG1hdGNoJW1hcFxuICAgICAgIFRpbWVfc291cmNlLndpdGhfdGltZW91dFxuICAgICAgICAgKFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzIHQudGltZV9zb3VyY2UpXG4gICAgICAgICBoYW5kc2hha2VfdGltZW91dFxuICAgICAgICAgcmVzdWx0XG4gICAgIHdpdGhcbiAgICAgfCBgVGltZW91dCAtPlxuICAgICAgICgqIFRoZXJlJ3MgYSBwZW5kaW5nIHJlYWQsIHRoZSByZWFkZXIgaXMgYmFzaWNhbGx5IHVzZWxlc3Mgbm93LCBzbyB3ZSBjbGVhbiBpdFxuICAgICAgICAgIHVwLiAqKVxuICAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiSGFuZHNoYWtlIHRpbWVvdXRcIikpO1xuICAgICAgIEVycm9yIEhhbmRzaGFrZV9lcnJvci5UaW1lb3V0XG4gICAgIHwgYFJlc3VsdCAoRXJyb3IgZXhuKSAtPlxuICAgICAgIGxldCByZWFzb24gPSBJbmZvLm9mX3N0cmluZyBcIltSZWFkZXIucmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdF0gcmFpc2VkXCIgaW5cbiAgICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgICBFcnJvciAoUmVhZGluZ19oZWFkZXJfZmFpbGVkIChFcnJvci5vZl9leG4gZXhuKSlcbiAgICAgfCBgUmVzdWx0IChPayAoRXJyb3IgYEVvZikpIC0+IEVycm9yIEVvZlxuICAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgQ2xvc2VkKSkgLT4gRXJyb3IgVHJhbnNwb3J0X2Nsb3NlZFxuICAgICB8IGBSZXN1bHQgKE9rIChPayBwZWVyKSkgLT5cbiAgICAgICAobWF0Y2ggSGVhZGVyLm5lZ290aWF0ZSB+dXM6SGVhZGVyLnYxIH5wZWVyIHdpdGhcbiAgICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChOZWdvdGlhdGlvbl9mYWlsZWQgZSlcbiAgICAgICAgfCBPayAxIC0+IE9rICgpXG4gICAgICAgIHwgT2sgaSAtPiBFcnJvciAoTmVnb3RpYXRlZF91bmV4cGVjdGVkX3ZlcnNpb24gaSkpKVxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2w6UnBjXG5cbmxldCBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICA/KGhhbmRzaGFrZV90aW1lb3V0ID0gZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dClcbiAgICAgID8oaGVhcnRiZWF0X2NvbmZpZyA9IEhlYXJ0YmVhdF9jb25maWcuY3JlYXRlICgpKVxuICAgICAgPyhkZXNjcmlwdGlvbiA9IEluZm8ub2Zfc3RyaW5nIFwiPGNyZWF0ZWQtZGlyZWN0bHk+XCIpXG4gICAgICA/KHRpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uud2FsbF9jbG9jayAoKSlcbiAgICAgICh7IHJlYWRlcjsgd3JpdGVyIH0gOiBUcmFuc3BvcnQudClcbiAgPVxuICBsZXQgaW1wbGVtZW50YXRpb25zID1cbiAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBJbXBsZW1lbnRhdGlvbnMubnVsbCAoKVxuICAgIHwgU29tZSBzIC0+IHNcbiAgaW5cbiAgbGV0IHQgPVxuICAgIHsgZGVzY3JpcHRpb25cbiAgICA7IGhlYXJ0YmVhdF9jb25maWcgPSBIZWFydGJlYXRfY29uZmlnLnRvX3J1bnRpbWUgaGVhcnRiZWF0X2NvbmZpZ1xuICAgIDsgaGVhcnRiZWF0X2NhbGxiYWNrcyA9IFt8fF1cbiAgICA7IGxhc3Rfc2Vlbl9hbGl2ZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0aW1lX3NvdXJjZVxuICAgIDsgcmVhZGVyXG4gICAgOyB3cml0ZXJcbiAgICA7IG9wZW5fcXVlcmllcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgY2xvc2VfZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgaGVhcnRiZWF0X2V2ZW50ID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgfVxuICBpblxuICBsZXQgd3JpdGVyX21vbml0b3JfZXhucyA9IE1vbml0b3IuZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIChXcml0ZXIubW9uaXRvciB3cml0ZXIpIGluXG4gIHVwb24gKFdyaXRlci5zdG9wcGVkIHdyaXRlcikgKGZ1biAoKSAtPlxuICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiUlBDIHRyYW5zcG9ydCBzdG9wcGVkXCIpKSk7XG4gIG1hdGNoJW1hcCBkb19oYW5kc2hha2UgdCB+aGFuZHNoYWtlX3RpbWVvdXQgd2l0aFxuICB8IE9rICgpIC0+XG4gICAgcnVuX2FmdGVyX2hhbmRzaGFrZSB0IH5pbXBsZW1lbnRhdGlvbnMgfmNvbm5lY3Rpb25fc3RhdGUgfndyaXRlcl9tb25pdG9yX2V4bnM7XG4gICAgT2sgdFxuICB8IEVycm9yIGVycm9yIC0+XG4gICAgRXJyb3IgKEhhbmRzaGFrZV9lcnJvci50b19leG4gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246ZGVzY3JpcHRpb24gZXJyb3IpXG47O1xuXG5sZXQgd2l0aF9jbG9zZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5kaXNwYXRjaF9xdWVyaWVzXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IGhhbmRsZV9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGZcbiAgICB8IGBSYWlzZSAtPiByYWlzZVxuICBpblxuICBsZXQlYmluZCB0ID1cbiAgICBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVycm9yIGUgLT5cbiAgICBsZXQlYmluZCAoKSA9IFRyYW5zcG9ydC5jbG9zZSB0cmFuc3BvcnQgaW5cbiAgICBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIGVcbiAgfCBPayB0IC0+XG4gICAgTW9uaXRvci5wcm90ZWN0XG4gICAgICB+cnVuOlxuICAgICAgICBgU2NoZWR1bGVcbiAgICAgIH5yZXN0OmBMb2dcbiAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLndpdGhfY2xvc2UgZmluaXNoZWRcIikpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQlYmluZCByZXN1bHQgPSBkaXNwYXRjaF9xdWVyaWVzIHQgaW5cbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICB8IFNvbWUgXyAtPiBjbG9zZV9maW5pc2hlZCB0XG4gICAgICAgICBpblxuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IHNlcnZlcl93aXRoX2Nsb3NlXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBvbl9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGBDYWxsIGZcbiAgICB8IGBSYWlzZSAtPiBgUmFpc2VcbiAgICB8IGBJZ25vcmUgLT4gYENhbGwgKGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gIGluXG4gIHdpdGhfY2xvc2VcbiAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgID9kZXNjcmlwdGlvblxuICAgID90aW1lX3NvdXJjZVxuICAgIHRyYW5zcG9ydFxuICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgICB+ZGlzcGF0Y2hfcXVlcmllczooZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbjs7XG5cbmxldCBjbG9zZVxuICAgICAgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dFxuICAgICAgPyhyZWFzb24gPSBJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLmNsb3NlXCIpXG4gICAgICB0XG4gID1cbiAgY2xvc2UgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dCB+cmVhc29uIHRcbjs7XG5cbm1vZHVsZSBDbGllbnRfaW1wbGVtZW50YXRpb25zID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdzIHQgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA6IHQgLT4gJ3NcbiAgICA7IGltcGxlbWVudGF0aW9ucyA6ICdzIEltcGxlbWVudGF0aW9ucy50XG4gICAgfVxuXG4gIGxldCBudWxsICgpID1cbiAgICB7IGNvbm5lY3Rpb25fc3RhdGUgPSAoZnVuIF8gLT4gKCkpOyBpbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnMubnVsbCAoKSB9XG4gIDs7XG5lbmRcbiIsIlxub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBVdGlsXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9uID0gSW1wbGVtZW50YXRpb25cbm1vZHVsZSBJbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcbm1vZHVsZSBDb25uZWN0aW9uID0gQ29ubmVjdGlvblxuXG4oKiBUaGUgUmVzdWx0IG1vbmFkIGlzIGFsc28gdXNlZC4gKilcbmxldCAoID4+PX4gKSA9IFJlc3VsdC4oID4+PSApXG5sZXQgKCA+Pnx+ICkgPSBSZXN1bHQuKCA+PnwgKVxuXG5tb2R1bGUgUnBjX2NvbW1vbiA9IHN0cnVjdFxuICBsZXQgZGlzcGF0Y2hfcmF3J1xuICAgICAgICBjb25uXG4gICAgICAgIH50YWdcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5xdWVyeV9pZFxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgcXVlcnkgPSB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gcXVlcnkgfSBpblxuICAgIG1hdGNoIENvbm5lY3Rpb24uZGlzcGF0Y2ggY29ubiB+cmVzcG9uc2VfaGFuZGxlciB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgUnBjX2Vycm9yLkNvbm5lY3Rpb25fY2xvc2VkXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX3JhdyBjb25uIH50YWcgfnZlcnNpb24gfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IH5xdWVyeV9pZCB+ZiA9XG4gICAgbGV0IHJlc3BvbnNlX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIChtYXRjaFxuICAgICAgIGRpc3BhdGNoX3JhdydcbiAgICAgICAgIGNvbm5cbiAgICAgICAgIH50YWdcbiAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICB+cXVlcnlfaWRcbiAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOihTb21lIChmIHJlc3BvbnNlX2l2YXIpKVxuICAgICB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gSXZhci5maWxsIHJlc3BvbnNlX2l2YXIgZSk7XG4gICAgSXZhci5yZWFkIHJlc3BvbnNlX2l2YXJcbiAgOztcbmVuZFxuXG5sZXQgc2hhcGVzIGxzdCA9XG4gIFNleHAuTGlzdFxuICAgIChMaXN0Lm1hcCBsc3QgfmY6KGZ1biAobmFtZSwgc2hhcGUpIC0+XG4gICAgICAgWyVtZXNzYWdlXG4gICAgICAgICBcIlwiIH5fOihuYW1lIDogc3RyaW5nKSB+XzooQmluX3Byb3QuU2hhcGUuZXZhbF90b19kaWdlc3Rfc3RyaW5nIHNoYXBlIDogc3RyaW5nKV0pKVxuOztcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3Jlc3BvbnNlIDogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHJlc3BvbnNlX3R5cGVfaWQgOiAncmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlID1cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCByZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpyZXNwb25zZVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX3Jlc3BvbnNlXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyByZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5xdWVyeV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LnJlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5iaW5fcmVzcG9uc2VcbiAgbGV0IHNoYXBlcyB0ID0gc2hhcGVzIFsgXCJxdWVyeVwiLCB0LmJpbl9xdWVyeS5zaGFwZTsgXCJyZXNwb25zZVwiLCB0LmJpbl9yZXNwb25zZS5zaGFwZSBdXG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID0gUnBjICh0LmJpbl9xdWVyeS5yZWFkZXIsIHQuYmluX3Jlc3BvbnNlLndyaXRlciwgZiwgRGVmZXJyZWQpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50JyA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID0gUnBjICh0LmJpbl9xdWVyeS5yZWFkZXIsIHQuYmluX3Jlc3BvbnNlLndyaXRlciwgZiwgQmxvY2tpbmcpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICBpdmFyXG4gICAgICAgICAgKHJlc3BvbnNlIDogXyBQLlJlc3BvbnNlLnQpXG4gICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgID1cbiAgICAgIGxldCByZXNwb25zZSA9XG4gICAgICAgIHJlc3BvbnNlLmRhdGFcbiAgICAgICAgPj49fiBmdW4gbGVuIC0+XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgdC5iaW5fcmVzcG9uc2UucmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHJwYyByZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICBJdmFyLmZpbGwgaXZhciByZXNwb25zZTtcbiAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3Jhd1xuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9xdWVyeS53cml0ZXJcbiAgICAgIH5xdWVyeVxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+ZjpyZXNwb25zZV9oYW5kbGVyXG4gIDs7XG5cbiAgbGV0IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdCA9XG4gICAgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgcmVzdWx0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOihkZXNjcmlwdGlvbiB0KVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSBpblxuICAgIHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9leG4gdCBjb25uIHF1ZXJ5ID0gZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID4+fCBPcl9lcnJvci5va19leG5cblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbW9kdWxlIFJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9ucy5FeHBlcnQuUnBjX3Jlc3BvbmRlclxuXG4gICAgbGV0IG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBkb19kaXNwYXRjaFxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlX2hhbmRsZXIgOiBDb25uZWN0aW9uLnJlc3BvbnNlX2hhbmRsZXIgPVxuICAgICAgICBmdW4gcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICBoYW5kbGVfZXJyb3JcbiAgICAgICAgICAgICAgKEVycm9yLnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdFxuICAgICAgICAgICAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICAgICAgICAgICAgZSkpO1xuICAgICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSAobGVuIDogTmF0MC50IDo+IGludCkgaW5cbiAgICAgICAgICAgIGxldCBkID0gaGFuZGxlX3Jlc3BvbnNlIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlbiBpblxuICAgICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGByZW1vdmUgKE9rICgpKSBlbHNlIGByZW1vdmVfYW5kX3dhaXQgZFxuICAgICAgaW5cbiAgICAgIGRvX2Rpc3BhdGNoXG4gICAgICAgIGNvbm5cbiAgICAgICAgfnRhZzooUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnKVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICBidWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOihTb21lIHJlc3BvbnNlX2hhbmRsZXIpXG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaCBjb25uIH5ycGNfdGFnIH52ZXJzaW9uIGJ1ZiB+cG9zIH5sZW4gfmhhbmRsZV9yZXNwb25zZSB+aGFuZGxlX2Vycm9yID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgZCAtPiBgRmx1c2hlZCBkXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcblxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQnID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChmLCBCbG9ja2luZylcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb25cbiAgICAgICAgICA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSlcbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgZlxuICAgICAgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWdcbiAgICAgIDsgdmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKFNleHAuQXRvbSBcIlVua25vd25cIilcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbidcbiAgICAgICAgICA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSlcbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgZlxuICAgICAgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWdcbiAgICAgIDsgdmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKFNleHAuQXRvbSBcIlVua25vd25cIilcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgdHlwZSAnbXNnIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9tc2cgOiAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgbXNnX3R5cGVfaWQgOiAnbXNnIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG5cbiAgbGV0IGNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX21zZyA9XG4gICAgbGV0IG1zZ190eXBlX2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9Om1zZ1wiXSBzZXhwX29mX29wYXF1ZSBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lOyB2ZXJzaW9uOyBiaW5fbXNnOyBtc2dfdHlwZV9pZCB9XG4gIDs7XG5cbiAgbGV0IHNoYXBlcyB0ID0gc2hhcGVzIFsgXCJtc2dcIiwgdC5iaW5fbXNnLnNoYXBlIF1cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgbXNnX3R5cGVfaWQgdCA9IHQubXNnX3R5cGVfaWRcblxuICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb24pIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IE9uZV93YXkgKHQuYmluX21zZy5yZWFkZXIsIGYpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3JhdydcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fbXNnLndyaXRlclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgOztcblxuICBsZXQgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0ID1cbiAgICBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICByZXN1bHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uIHQpXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA9XG4gICAgZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSB8PiBmdW4gcmVzdWx0IC0+IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9leG4gdCBjb25uIHF1ZXJ5ID0gT3JfZXJyb3Iub2tfZXhuIChkaXNwYXRjaCB0IGNvbm4gcXVlcnkpXG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbikgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gT25lX3dheV9leHBlcnQgZlxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaCB7IHRhZzsgdmVyc2lvbjsgYmluX21zZyA9IF87IG1zZ190eXBlX2lkID0gXyB9IGNvbm4gYnVmIH5wb3MgfmxlbiA9XG4gICAgICBtYXRjaFxuICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+dGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH1cbiAgICAgICAgICBjb25uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayBmbHVzaGVkIC0+IGBGbHVzaGVkIGZsdXNoZWRcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9jbG9zZV9yZWFzb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENsb3NlZF9sb2NhbGx5XG4gICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICB8IEVycm9yIG9mIEVycm9yLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0ID1cbiAgICAgICAgfCBDbG9zZWRfbG9jYWxseVxuICAgICAgICB8IENsb3NlZF9yZW1vdGVseVxuICAgICAgICB8IEVycm9yIG9mIEVycm9yLlN0YWJsZS5WMi50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbigqIHRoZSBiYXNpcyBvZiB0aGUgaW1wbGVtZW50YXRpb25zIG9mIFBpcGVfcnBjIGFuZCBTdGF0ZV9ycGMgKilcbm1vZHVsZSBTdHJlYW1pbmdfcnBjID0gc3RydWN0XG4gIG1vZHVsZSBJbml0aWFsX21lc3NhZ2UgPSBQLlN0cmVhbV9pbml0aWFsX21lc3NhZ2VcblxuICB0eXBlICgncXVlcnksICdpbml0aWFsX3Jlc3BvbnNlLCAndXBkYXRlX3Jlc3BvbnNlLCAnZXJyb3JfcmVzcG9uc2UpIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9xdWVyeSA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9pbml0aWFsX3Jlc3BvbnNlIDogJ2luaXRpYWxfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fdXBkYXRlX3Jlc3BvbnNlIDogJ3VwZGF0ZV9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9lcnJvcl9yZXNwb25zZSA6ICdlcnJvcl9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICA7IHF1ZXJ5X3R5cGVfaWQgOiAncXVlcnkgVHlwZV9lcXVhbC5JZC50XG4gICAgOyBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQgOiAnaW5pdGlhbF9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkIDogJ3VwZGF0ZV9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWQgOiAnZXJyb3JfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgICB+bmFtZVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZVxuICAgICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZVxuICAgICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZVxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgY2xpZW50X3B1c2hlc19iYWNrID1cbiAgICAgIG1hdGNoIGNsaWVudF9wdXNoZXNfYmFjayB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgaW5cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGVcbiAgICAgICAgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OiV7YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2V9XCJdXG4gICAgICAgIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGVcbiAgICAgICAgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OiV7YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZX1cIl1cbiAgICAgICAgc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCBlcnJvcl9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTplcnJvclwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgICA7IGJpbl91cGRhdGVfcmVzcG9uc2VcbiAgICA7IGJpbl9lcnJvcl9yZXNwb25zZSA9IGJpbl9lcnJvclxuICAgIDsgY2xpZW50X3B1c2hlc19iYWNrXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICA7IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkXG4gICAgOyBlcnJvcl9yZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYWtlX2luaXRpYWxfbWVzc2FnZSB4ID1cbiAgICB7IEluaXRpYWxfbWVzc2FnZS51bnVzZWRfcXVlcnlfaWQgPSBQLlVudXNlZF9xdWVyeV9pZC50OyBpbml0aWFsID0geCB9XG4gIDs7XG5cbiAgbGV0IHNoYXBlcyB0ID1cbiAgICBzaGFwZXNcbiAgICAgIFsgXCJxdWVyeVwiLCB0LmJpbl9xdWVyeS5zaGFwZVxuICAgICAgOyBcImluaXRpYWwtcmVzcG9uc2VcIiwgdC5iaW5faW5pdGlhbF9yZXNwb25zZS5zaGFwZVxuICAgICAgOyBcInVwZGF0ZS1yZXNwb25zZVwiLCB0LmJpbl91cGRhdGVfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIDsgXCJlcnJvclwiLCB0LmJpbl9lcnJvcl9yZXNwb25zZS5zaGFwZVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnRfZ2VuIHQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIGltcGwgPVxuICAgIGxldCBiaW5faW5pdF93cml0ZXIgPVxuICAgICAgSW5pdGlhbF9tZXNzYWdlLmJpbl93cml0ZXJfdFxuICAgICAgICB0LmJpbl9pbml0aWFsX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICB0LmJpbl9lcnJvcl9yZXNwb25zZS53cml0ZXJcbiAgICBpblxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPVxuICAgICAgICBTdHJlYW1pbmdfcnBjXG4gICAgICAgICAgKHQuYmluX3F1ZXJ5LnJlYWRlciwgYmluX2luaXRfd3JpdGVyLCB0LmJpbl91cGRhdGVfcmVzcG9uc2Uud3JpdGVyLCBpbXBsKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSA9XG4gICAgICBtYXRjaCVtYXAgZiBjIHF1ZXJ5IHdpdGhcbiAgICAgIHwgRXJyb3IgZXJyIC0+IEVycm9yIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoRXJyb3IgZXJyKSlcbiAgICAgIHwgT2sgKGluaXRpYWwsIHBpcGUpIC0+IE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoT2sgaW5pdGlhbCksIHBpcGUpXG4gICAgaW5cbiAgICBpbXBsZW1lbnRfZ2VuIHQgP29uX2V4Y2VwdGlvbiAoUGlwZSBmKVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBsZXQgZiBjIHF1ZXJ5IHdyaXRlciA9XG4gICAgICBtYXRjaCVtYXAgZiBjIHF1ZXJ5IHdyaXRlciB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiBFcnJvciAobWFrZV9pbml0aWFsX21lc3NhZ2UgeClcbiAgICAgIHwgT2sgXyBhcyB4IC0+IE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSB4KVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiA/b25fZXhjZXB0aW9uIHQgKERpcmVjdCBmKVxuICA7O1xuXG4gIGxldCBhYm9ydCB0IGNvbm4gaWQgPVxuICAgIGxldCBxdWVyeSA9IHsgUC5RdWVyeS50YWcgPSB0LnRhZzsgdmVyc2lvbiA9IHQudmVyc2lvbjsgaWQ7IGRhdGEgPSBgQWJvcnQgfSBpblxuICAgIGlnbm9yZVxuICAgICAgKENvbm5lY3Rpb24uZGlzcGF0Y2hcbiAgICAgICAgIGNvbm5cbiAgICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OlAuU3RyZWFtX3F1ZXJ5LmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgICB+cXVlcnlcbiAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgICA6ICh1bml0LCBbIGBDbG9zZWQgXSkgUmVzdWx0LnQpXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFVwZGF0ZSBvZiAnYVxuICAgICAgfCBDbG9zZWQgb2YgWyBgQnlfcmVtb3RlX3NpZGUgfCBgRXJyb3Igb2YgRXJyb3IudCBdXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQ29udGludWVcbiAgICAgIHwgV2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfbWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgOyBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IERlZmVycmVkLnRcbiAgICAgIH1cblxuICAgIGxldCBpZCB0ID0gdC5xdWVyeV9pZFxuICAgIGxldCBjbG9zZV9yZWFzb24gdCA9IHQuY2xvc2VfcmVhc29uXG4gIGVuZFxuXG4gIG1vZHVsZSBSZXNwb25zZV9zdGF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcGRhdGVfaGFuZGxlciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9yZXNwb25zZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSW5pdGlhbCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIHQgPVxuICAgICAgICB7IHJwYyA6ICgncSwgJ2ksICd1LCAnZSkgdFxuICAgICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICAgIDsgbWFrZV91cGRhdGVfaGFuZGxlciA6IHVuaXQgLT4gJ2V4dHJhICogJ3UgVXBkYXRlX2hhbmRsZXIudFxuICAgICAgICA7IGl2YXIgOiAoUC5RdWVyeV9pZC50ICogJ2kgKiAnZXh0cmEsICdlKSBSZXN1bHQudCBScGNfcmVzdWx0LnQgSXZhci50XG4gICAgICAgIDsgY29ubmVjdGlvbiA6IENvbm5lY3Rpb24udFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSA6ICgncSwgJ2ksICd1LCAnZSwgJ2V4dHJhKSBJbml0aWFsLnQgLT4gJ3UgdFxuICAgICAgICB8IFdyaXRpbmdfdXBkYXRlcyBvZiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciAqICdhIFVwZGF0ZV9oYW5kbGVyLnRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnQgfVxuICBlbmRcblxuICBsZXQgcmVhZF9lcnJvclxuICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uXG4gICAgICAgIChoYW5kbGVyIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50KVxuICAgICAgICBlcnJcbiAgICA9XG4gICAgbGV0IGNvcmVfZXJyID1cbiAgICAgIEVycm9yLnRfb2Zfc2V4cCAoUnBjX2Vycm9yLnNleHBfb2ZfdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGVycilcbiAgICBpblxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIChgRXJyb3IgY29yZV9lcnIpKSA6IFBpcGVfcmVzcG9uc2UudCk7XG4gICAgYHJlbW92ZSAoRXJyb3IgZXJyKVxuICA7O1xuXG4gIGxldCBlb2YgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpID1cbiAgICBpZ25vcmUgKGhhbmRsZXIgKENsb3NlZCBgQnlfcmVtb3RlX3NpZGUpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChPayAoKSlcbiAgOztcblxuICBsZXQgcmVzcG9uc2VfaGFuZGxlciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGluaXRpYWxfc3RhdGVcbiAgICA6IENvbm5lY3Rpb24ucmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgb3BlbiBSZXNwb25zZV9zdGF0ZSBpblxuICAgIGxldCBzdGF0ZSA9IHsgc3RhdGUgPSBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIGluaXRpYWxfc3RhdGUgfSBpblxuICAgIGZ1biByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgLT5cbiAgICAgIG1hdGNoIHN0YXRlLnN0YXRlIHdpdGhcbiAgICAgIHwgV3JpdGluZ191cGRhdGVzIChiaW5fcmVhZGVyX3VwZGF0ZSwgaGFuZGxlcikgLT5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3JlYWRlcl9uYXQwX3RcbiAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICAgfmFkZF9sZW46KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgYEVvZiAtPiAwXG4gICAgICAgICAgICAgICAgIHwgYE9rIChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICAgICB8IE9rIGBFb2YgLT4gZW9mIGhhbmRsZXJcbiAgICAgICAgICAgIHwgT2sgKGBPayBsZW4pIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgICAgYmluX3JlYWRlcl91cGRhdGVcbiAgICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgICAgIHwgT2sgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaGFuZGxlciAoVXBkYXRlIGRhdGEpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ29udGludWUgLT4gYGtlZXBcbiAgICAgICAgICAgICAgICAgIHwgV2FpdCBkIC0+IGB3YWl0IGQpKSkpXG4gICAgICB8IFN0YXRlLldhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9oYW5kbGVyIC0+XG4gICAgICAgICgqIFdlIG5ldmVyIHVzZSBbYHJlbW92ZSAoRXJyb3IgXyldIGhlcmUsIHNpbmNlIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gc2hvdWxkIGJlIGNsb3NlZCwgYW5kIHRoZXNlIGFyZSBcIm5vcm1hbFwiIGVycm9ycy4gKEluIGNvbnRyYXN0LCB0aGVcbiAgICAgICAgICAgZXJyb3JzIHdlIGdldCBpbiB0aGUgW1dyaXRpbmdfdXBkYXRlc190b19waXBlXSBjYXNlIGluZGljYXRlIG1vcmUgc2VyaW91c1xuICAgICAgICAgICBwcm9ibGVtcy4pIEluc3RlYWQsIHdlIGp1c3QgcHV0IGVycm9ycyBpbiBbaXZhcl0uICopXG4gICAgICAgIGxldCBlcnJvciBlcnIgPVxuICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoRXJyb3IgZXJyKTtcbiAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgaW5pdGlhbCA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIChJbml0aWFsX21lc3NhZ2UuYmluX3JlYWRlcl90XG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5fZXJyb3JfcmVzcG9uc2UucmVhZGVyKVxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgaW5pdGlhbF9yZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGluaXRpYWwgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICAgICB8IE9rIGluaXRpYWxfbXNnIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBpbml0aWFsX21zZy5pbml0aWFsIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoT2sgKEVycm9yIGVycikpO1xuICAgICAgICAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgICAgICAgIHwgT2sgaW5pdGlhbCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZXh0cmEsIGhhbmRsZXIgPSBpbml0aWFsX2hhbmRsZXIubWFrZV91cGRhdGVfaGFuZGxlciAoKSBpblxuICAgICAgICAgICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIuaXZhclxuICAgICAgICAgICAgICAgICAgIChPayAoT2sgKGluaXRpYWxfaGFuZGxlci5xdWVyeV9pZCwgaW5pdGlhbCwgZXh0cmEpKSk7XG4gICAgICAgICAgICAgICAgIHN0YXRlLnN0YXRlXG4gICAgICAgICAgICAgICAgIDwtIFdyaXRpbmdfdXBkYXRlc1xuICAgICAgICAgICAgICAgICAgICAgIChpbml0aWFsX2hhbmRsZXIucnBjLmJpbl91cGRhdGVfcmVzcG9uc2UucmVhZGVyLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgYGtlZXApKSlcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZ2VuIHQgY29ubiBxdWVyeSBtYWtlX3VwZGF0ZV9oYW5kbGVyID1cbiAgICBsZXQgYmluX3dyaXRlcl9xdWVyeSA9XG4gICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aFxuICAgICAgICAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3R5cGVfY2xhc3MgdC5iaW5fcXVlcnkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnkgPSBgUXVlcnkgcXVlcnkgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICBjb25uXG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgIH5xdWVyeVxuICAgICAgfmY6KGZ1biBpdmFyIC0+XG4gICAgICAgIHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICB7IHJwYyA9IHQ7IHF1ZXJ5X2lkOyBjb25uZWN0aW9uID0gY29ubjsgaXZhcjsgbWFrZV91cGRhdGVfaGFuZGxlciB9KVxuICAgID4+fCBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjp7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbiAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9pdGVyIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbWF0Y2glbWFwIGRpc3BhdGNoX2dlbiB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPiAoKSwgZikgd2l0aFxuICAgIHwgKEVycm9yIF8gfCBPayAoRXJyb3IgXykpIGFzIGUgLT4gZVxuICAgIHwgT2sgKE9rIChpZCwgaW5pdCwgKCkpKSAtPiBPayAoT2sgKGlkLCBpbml0KSlcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGRpc3BhdGNoX2dlbiB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgcGlwZV9yLCBwaXBlX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBTZXQgYSBzbWFsbCBidWZmZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVzaGJhY2sgZXZlbnRzICopXG4gICAgICAgIFBpcGUuc2V0X3NpemVfYnVkZ2V0IHBpcGVfdyAxMDA7XG4gICAgICAgIGxldCBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIGxldCBmIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFVwZGF0ZSBkYXRhIC0+XG4gICAgICAgICAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHBpcGVfdylcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgcGlwZV93IGRhdGE7XG4gICAgICAgICAgICAgIGlmIHQuY2xpZW50X3B1c2hlc19iYWNrICYmIFBpcGUubGVuZ3RoIHBpcGVfdyA+PSBQaXBlLnNpemVfYnVkZ2V0IHBpcGVfd1xuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgV2FpdFxuICAgICAgICAgICAgICAgICAgKG1hdGNoJW1hcCBQaXBlLmRvd25zdHJlYW1fZmx1c2hlZCBwaXBlX3cgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT4gKCkpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUpXG4gICAgICAgICAgICBlbHNlIENvbnRpbnVlXG4gICAgICAgICAgfCBDbG9zZWQgcmVhc29uIC0+XG4gICAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHlcbiAgICAgICAgICAgICAgY2xvc2VfcmVhc29uXG4gICAgICAgICAgICAgIChtYXRjaCByZWFzb24gd2l0aFxuICAgICAgICAgICAgICAgfCBgQnlfcmVtb3RlX3NpZGUgLT4gQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgICAgICAgICB8IGBFcnJvciBlcnIgLT4gRXJyb3IgZXJyKTtcbiAgICAgICAgICAgIFBpcGUuY2xvc2UgcGlwZV93O1xuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgKHBpcGVfciwgY2xvc2VfcmVhc29uKSwgZilcbiAgICB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAocGlwZV9yLCBjbG9zZV9yZWFzb24pKSkgLT5cbiAgICAgIHVwb24gKFBpcGUuY2xvc2VkIHBpcGVfcikgKGZ1biAoKSAtPlxuICAgICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCBjbG9zZV9yZWFzb24pXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFib3J0IHQgY29ubiBpZDtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY2xvc2VfcmVhc29uIENsb3NlZF9sb2NhbGx5KSk7XG4gICAgICBsZXQgcGlwZV9tZXRhZGF0YSA6IFBpcGVfbWV0YWRhdGEudCA9XG4gICAgICAgIHsgcXVlcnlfaWQgPSBpZDsgY2xvc2VfcmVhc29uID0gSXZhci5yZWFkIGNsb3NlX3JlYXNvbiB9XG4gICAgICBpblxuICAgICAgT2sgKE9rIChwaXBlX21ldGFkYXRhLCBpbml0LCBwaXBlX3IpKVxuICA7O1xuZW5kXG5cbigqIEEgUGlwZV9ycGMgaXMgbGlrZSBhIFN0cmVhbWluZ19ycGMsIGV4Y2VwdCB3ZSBkb24ndCBjYXJlIGFib3V0IGluaXRpYWwgc3RhdGUgLSB0aHVzXG4gICBpdCBpcyByZXN0cmljdGVkIHRvIHVuaXQgYW5kIHVsdGltYXRlbHkgaWdub3JlZCAqKVxubW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlLCAnZXJyb3IpIHQgPSAoJ3F1ZXJ5LCB1bml0LCAncmVzcG9uc2UsICdlcnJvcikgU3RyZWFtaW5nX3JwYy50XG5cbiAgbW9kdWxlIElkID0gUC5RdWVyeV9pZFxuICBtb2R1bGUgTWV0YWRhdGEgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGFcblxuICBsZXQgY3JlYXRlID9jbGllbnRfcHVzaGVzX2JhY2sgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIH5iaW5fZXJyb3IgKCkgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpVbml0LmJpbl90XG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fcmVzcG9uc2VcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgICgqIFtpbml0aWFsX3Jlc3BvbnNlXSBkb2Vzbid0IHNob3cgdXAgaW4gW1BpcGVfcnBjXSdzIHNpZ25hdHVyZSxcbiAgICAgICAgIHNvIHRoZSB0eXBlLWlkIGNyZWF0ZWQgdXNpbmcgW2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXSBpc1xuICAgICAgICAgdW5yZWFjaGFibGUuICopXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJcIlxuICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2U6XCJyZXNwb25zZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgbGV0IGJpbl9lcnJvciB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9lcnJvcl9yZXNwb25zZVxuICBsZXQgY2xpZW50X3B1c2hlc19iYWNrIHQgPSB0LlN0cmVhbWluZ19ycGMuY2xpZW50X3B1c2hlc19iYWNrXG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IChmdW4gYSBxdWVyeSAtPlxuICAgICAgbGV0JW1hcCB4ID0gZiBhIHF1ZXJ5IGluXG4gICAgICB4ID4+fH4gZnVuIHggLT4gKCksIHgpXG4gIDs7XG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgIG1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJ1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCByZWZcblxuICAgICAgICBsZXQgY3JlYXRlID8oaW5pdGlhbF9zaXplID0gNDA5NikgKCkgPVxuICAgICAgICAgIGlmIGluaXRpYWxfc2l6ZSA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5CdWZmZXIuY3JlYXRlIGdvdCBuZWdhdGl2ZSBidWZmZXIgXFxcbiAgICAgICAgICAgICAgIHNpemVcIlxuICAgICAgICAgICAgICBpbml0aWFsX3NpemVcbiAgICAgICAgICAgICAgSW50LnNleHBfb2ZfdDtcbiAgICAgICAgICByZWYgKEJpZ3N0cmluZy5jcmVhdGUgaW5pdGlhbF9zaXplKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICAgIG1vZHVsZSBUID0gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC5Hcm91cC50ID1cbiAgICAgICAgeyBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgICB9XG5cbiAgICAgIGFuZCAnYSBjb21wb25lbnQgPSAnYSBULkdyb3VwLmNvbXBvbmVudCA9XG4gICAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIFQuZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZSA/YnVmZmVyICgpID1cbiAgICAgICAgbGV0IGJ1ZmZlciA9XG4gICAgICAgICAgbWF0Y2ggYnVmZmVyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgaW5cbiAgICAgICAgeyBjb21wb25lbnRzID0gQmFnLmNyZWF0ZSAoKTsgY29tcG9uZW50c19ieV9pZCA9IElkLlRhYmxlLmNyZWF0ZSAoKTsgYnVmZmVyIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggdCA9IEJhZy5sZW5ndGggdC5jb21wb25lbnRzXG5cbiAgICAgIGxldCBhZGRfZXhuIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlclxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IGNhbm5vdCBhZGQgYSBjbG9zZWQgZGlyZWN0IFxcXG4gICAgICAgICAgICAgc3RyZWFtIHdyaXRlclwiO1xuICAgICAgICBpZiBIYXNodGJsLm1lbSB0LmNvbXBvbmVudHNfYnlfaWQgd3JpdGVyLmlkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkX2V4bjogdHJ5aW5nIHRvIGFkZCBhIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXIgdGhhdCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGdyb3VwXCI7XG4gICAgICAgIChtYXRjaCBCYWcuY2hvb3NlIHQuY29tcG9uZW50cyB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICAgbGV0IG9uZSA9IEJhZy5FbHQudmFsdWUgb25lIGluXG4gICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAoYmluX3dyaXRlciBvbmUpIChiaW5fd3JpdGVyIHdyaXRlcikpXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkOiBjYW5ub3QgYWRkIGEgZGlyZWN0IHN0cmVhbSBcXFxuICAgICAgICAgICAgICAgIHdyaXRlciB3aXRoIGEgZGlmZmVyZW50IGJpbl93cml0ZXJcIik7XG4gICAgICAgIGxldCB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA9IEJhZy5hZGQgdC5jb21wb25lbnRzIHdyaXRlciBpblxuICAgICAgICBsZXQgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgPVxuICAgICAgICAgIEJhZy5hZGQgd3JpdGVyLmdyb3VwcyB7IGdyb3VwID0gdDsgZWxlbWVudF9pbl9ncm91cCA9IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIH1cbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5hZGRfZXhuXG4gICAgICAgICAgdC5jb21wb25lbnRzX2J5X2lkXG4gICAgICAgICAgfmtleTp3cml0ZXIuaWRcbiAgICAgICAgICB+ZGF0YTp7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwOyBncm91cF9lbGVtZW50X2luX3dyaXRlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVtb3ZlIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfSAtPlxuICAgICAgICAgIEJhZy5yZW1vdmUgdC5jb21wb25lbnRzIHdyaXRlcl9lbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgIEJhZy5yZW1vdmUgd3JpdGVyLmdyb3VwcyBncm91cF9lbGVtZW50X2luX3dyaXRlclxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xpc3QgdCA9IEJhZy50b19saXN0IHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgZmx1c2hlZF9vcl9jbG9zZWQgdCA9XG4gICAgICAgIHRvX2xpc3QgdFxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHQgLT4gRGVmZXJyZWQuYW55X3VuaXQgWyBmbHVzaGVkIHQ7IGNsb3NlZCB0IF0pXG4gICAgICAgIHw+IERlZmVycmVkLmFsbF91bml0XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmx1c2hlZCB0ID0gZmx1c2hlZF9vcl9jbG9zZWQgdFxuXG4gICAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIEJhZy5pdGVyIHQuY29tcG9uZW50cyB+ZjooZnVuIGRpcmVjdF9zdHJlYW1fd3JpdGVyIC0+XG4gICAgICAgICAgICAoKiBXcml0ZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlaXIgZ3JvdXBzIHdoZW5cbiAgICAgICAgICAgICAgIGNsb3NlZCwgc28gW2BDbG9zZWRdIGhlcmUganVzdCBtZWFucyB0aGF0IHRoZSByZW1vdmFsIGRpZG4ndCBoYXBwZW4geWV0LiAqKVxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayBkaXJlY3Rfc3RyZWFtX3dyaXRlciB+YnVmIH5wb3MgfmxlblxuICAgICAgICAgICAgICAgOiBbIGBPayB8IGBDbG9zZWQgXSkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyaXRlIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbjtcbiAgICAgICAgICBmbHVzaGVkX29yX2Nsb3NlZCB0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgICAgbWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG9uZSAtPlxuICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgIGxldCB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9IGJpbl93cml0ZXIgb25lIGluXG4gICAgICAgICAgbGV0IGJ1ZmZlciA9ICEodC5idWZmZXIpIGluXG4gICAgICAgICAgKCogT3B0aW1pc3RpYyBmaXJzdCB0cnkgKilcbiAgICAgICAgICAobWF0Y2ggd3JpdGUgYnVmZmVyIH5wb3M6MCB4IHdpdGhcbiAgICAgICAgICAgfCBsZW4gLT4gRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlblxuICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgICAgKCogSXQncyBsaWtlbHkgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgICAgICAgIFtCaW5fcHJvdC5Db21tb24uQnVmZmVyX3Nob3J0XSBvbmx5LCBob3dldmVyIHdlIGNhbid0IGVhc2lseSBlbmZvcmNlIHRoYXRcbiAgICAgICAgICAgICAgICBjdXN0b20gYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICAgICAgICAgbGV0IGxlbiA9IHNpemUgeCBpblxuICAgICAgICAgICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgKEludC5jZWlsX3BvdzIgbGVuKSBpblxuICAgICAgICAgICAgIHQuYnVmZmVyIDo9IGJ1ZmZlcjtcbiAgICAgICAgICAgICBsZXQgbGVuID0gd3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICAgICAgICAgRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSB0IHggPVxuICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeDtcbiAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgdCBmID0gU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnRfZGlyZWN0IHQgZlxuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoIHQgY29ubiBxdWVyeSBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsICgpLCBwaXBlX3IpIC0+IHBpcGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBleGNlcHRpb24gUGlwZV9ycGNfZmFpbGVkXG5cbiAgbGV0IGRpc3BhdGNoX2V4biB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5IGluXG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIHJwY19lcnJvciAtPiByYWlzZSAoRXJyb3IudG9fZXhuIHJwY19lcnJvcilcbiAgICB8IE9rIChFcnJvciBfKSAtPiByYWlzZSBQaXBlX3JwY19mYWlsZWRcbiAgICB8IE9rIChPayBwaXBlX2FuZF9pZCkgLT4gcGlwZV9hbmRfaWRcbiAgOztcblxuICBtb2R1bGUgUGlwZV9tZXNzYWdlID0gU3RyZWFtaW5nX3JwYy5QaXBlX21lc3NhZ2VcbiAgbW9kdWxlIFBpcGVfcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLlBpcGVfcmVzcG9uc2VcblxuICBsZXQgZGlzcGF0Y2hfaXRlciB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoX2l0ZXIgdCBjb25uIHF1ZXJ5IH5mIGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChpZCwgKCkpIC0+IGlkXG4gIDs7XG5cbiAgbGV0IGFib3J0ID0gU3RyZWFtaW5nX3JwYy5hYm9ydFxuICBsZXQgY2xvc2VfcmVhc29uID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhLmNsb3NlX3JlYXNvblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAnc3RhdGUsICd1cGRhdGUsICdlcnJvcikgdCA9XG4gICAgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICgpXG4gICAgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpiaW5fc3RhdGVcbiAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlOmJpbl91cGRhdGVcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZTpcInN0YXRlXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwidXBkYXRlXCJcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9xdWVyeVxuICBsZXQgYmluX3N0YXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgbGV0IGJpbl91cGRhdGUgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGltcGxlbWVudCA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50XG5cbiAgbGV0IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2VcbiAgICA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKG1ldGFkYXRhLCBzdGF0ZSwgdXBkYXRlX3IpIC0+IHN0YXRlLCB1cGRhdGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBsZXQgYWJvcnQgPSBTdHJlYW1pbmdfcnBjLmFib3J0XG4gIGxldCBjbG9zZV9yZWFzb24gPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGEuY2xvc2VfcmVhc29uXG4gIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgdCA9IHQuU3RyZWFtaW5nX3JwYy5jbGllbnRfcHVzaGVzX2JhY2tcbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IHN0YXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5pbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHVwZGF0ZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG5lbmRcblxubW9kdWxlIEFueSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgUnBjIDogKCdxLCAncikgUnBjLnQgLT4gdFxuICAgIHwgUGlwZSA6ICgncSwgJ3IsICdlKSBQaXBlX3JwYy50IC0+IHRcbiAgICB8IFN0YXRlIDogKCdxLCAncywgJ3UsICdlKSBTdGF0ZV9ycGMudCAtPiB0XG4gICAgfCBPbmVfd2F5IDogJ20gT25lX3dheS50IC0+IHRcblxuICBsZXQgZGVzY3JpcHRpb24gPSBmdW5jdGlvblxuICAgIHwgUnBjIHJwYyAtPiBScGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBQaXBlIHJwYyAtPiBQaXBlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFN0YXRlIHJwYyAtPiBTdGF0ZV9ycGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBPbmVfd2F5IHJwYyAtPiBPbmVfd2F5LmRlc2NyaXB0aW9uIHJwY1xuICA7O1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb24uU3RhYmxlXG4gIG1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IFBpcGVfY2xvc2VfcmVhc29uLlN0YWJsZVxuICBtb2R1bGUgUnBjID0gUnBjXG4gIG1vZHVsZSBQaXBlX3JwYyA9IFBpcGVfcnBjXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBTdGF0ZV9ycGNcbiAgbW9kdWxlIE9uZV93YXkgPSBPbmVfd2F5XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUnBjXG5cbm1vZHVsZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICB0eXBlICdpbnB1dCB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IGNvbnZlcnQgOiAnaW5wdXQgLT4gJ291dHB1dFxuICAgICAgICA7IHdyaXRlciA6ICdvdXRwdXQgRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICdpbnB1dCB0XG5cbiAgbGV0IGNyZWF0ZSB+Y29udmVydCB+d3JpdGVyID0gVCB7IGNvbnZlcnQ7IHdyaXRlciB9XG5cbiAgbGV0IHdyaXRlIChUIHsgY29udmVydDsgd3JpdGVyIH0pIGlucHV0ID1cbiAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci53cml0ZSB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChjb252ZXJ0IGlucHV0KVxuICA7O1xuXG4gIGxldCBjbG9zZSAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3cml0ZXJcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5pc19jbG9zZWQgd3JpdGVyXG4gIGxldCBjbG9zZWQgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2VkIHdyaXRlclxuZW5kXG5cbmxldCBmYWlsZWRfY29udmVyc2lvbiB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJ0eXBlIGNvbnZlcnNpb24gZmFpbHVyZVwiXG4gICAgeFxuICAgIFslc2V4cF9vZjpcbiAgICAgIFsgYE1zZyB8IGBRdWVyeSB8IGBSZXNwb25zZSB8IGBFcnJvciB8IGBTdGF0ZSB8IGBVcGRhdGUgXVxuICAgICAgKiBbIGBScGMgb2Ygc3RyaW5nIF1cbiAgICAgICogWyBgVmVyc2lvbiBvZiBpbnQgXVxuICAgICAgKiBleG5dXG47O1xuXG5sZXQgbXVsdGlwbGVfcmVnaXN0cmF0aW9ucyB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJtdWx0aXBsZSBycGMgcmVnaXN0cmF0aW9uc1wiXG4gICAgeFxuICAgIFslc2V4cF9vZjogWyBgUnBjIG9mIHN0cmluZyBdICogWyBgVmVyc2lvbiBvZiBpbnQgXV1cbjs7XG5cbmxldCB1bmtub3duX3ZlcnNpb24geCA9IEVycm9yLmNyZWF0ZSBcInVua25vd24gcnBjIHZlcnNpb25cIiB4IFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuXG5tb2R1bGUgQ2FsbGVlX2NvbnZlcnRzID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2ltcGxlID0gc3RydWN0XG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgYWRhcHRlciA9XG4gICAgICAgIHsgYWRhcHQgOlxuICAgICAgICAgICAgJ3N0YXRlLiAoJ3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzcG9uc2UgRGVmZXJyZWQudCkgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGFkYXB0ZXJzIDogKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyIEludC5NYXAudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfm5hbWUgPSB7IG5hbWU7IGFkYXB0ZXJzID0gSW50Lk1hcC5lbXB0eSB9XG5cbiAgICAgIGxldCB3cmFwX2Vycm9yIGZuIHN0YXRlIHF1ZXJ5ID1cbiAgICAgICAgbWF0Y2glbWFwIGZuIHN0YXRlIHF1ZXJ5IHdpdGhcbiAgICAgICAgfCBPayB2YWx1ZSAtPiBPayB2YWx1ZVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChFcnJvci50b19zdHJpbmdfaHVtIGVycm9yKVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZCB7IG5hbWU7IGFkYXB0ZXJzIH0gcnBjIGFkYXB0ZXIgPVxuICAgICAgICBpZiBTdHJpbmcuKCA8PiApIG5hbWUgKFJwYy5uYW1lIHJwYylcbiAgICAgICAgdGhlblxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICBcIlJwYyBuYW1lcyBkb24ndCBhZ3JlZVwiXG4gICAgICAgICAgICAobmFtZSwgUnBjLm5hbWUgcnBjKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB2ZXJzaW9uID0gUnBjLnZlcnNpb24gcnBjIGluXG4gICAgICAgICAgbWF0Y2ggTWFwLmZpbmQgYWRhcHRlcnMgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICAgIFwiVmVyc2lvbiBhbHJlYWR5IGV4aXN0c1wiXG4gICAgICAgICAgICAgIChuYW1lLCB2ZXJzaW9uKVxuICAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGludF1cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBhZGFwdGVycyA9IE1hcC5zZXQgYWRhcHRlcnMgfmtleTp2ZXJzaW9uIH5kYXRhOmFkYXB0ZXIgaW5cbiAgICAgICAgICAgIE9rIHsgbmFtZTsgYWRhcHRlcnMgfSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfcnBjX3ZlcnNpb24gdCBvbGRfcnBjIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBmbiBzdGF0ZSAodXBncmFkZSBvbGRfcXVlcnkpIGluXG4gICAgICAgICAgICBkb3duZ3JhZGUgcmVzdWx0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgYWRhcHRlZFxuICAgICAgICBpblxuICAgICAgICBhZGQgdCBvbGRfcnBjIHsgYWRhcHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCBvbGRfcnBjIHVwZ3JhZGVfb3JfZXJyb3IgZG93bmdyYWRlX29yX2Vycm9yID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gRGVmZXJyZWQuUmVzdWx0LkxldF9zeW50YXggaW5cbiAgICAgICAgICAgIGxldCViaW5kIHF1ZXJ5ID0gRGVmZXJyZWQucmV0dXJuICh1cGdyYWRlX29yX2Vycm9yIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGxldCViaW5kIHJlc3BvbnNlID0gZm4gc3RhdGUgcXVlcnkgaW5cbiAgICAgICAgICAgIERlZmVycmVkLnJldHVybiAoZG93bmdyYWRlX29yX2Vycm9yIHJlc3BvbnNlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUnBjLmltcGxlbWVudCBvbGRfcnBjICh3cmFwX2Vycm9yIGFkYXB0ZWQpXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb24gdCB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZTp0Lm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIGluXG4gICAgICAgIGFkZF9ycGNfdmVyc2lvbiB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudCB0IGZuID0gTWFwLmRhdGEgdC5hZGFwdGVycyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHsgYWRhcHQgfSAtPiBhZGFwdCBmbilcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gcXVlcnkgLT4gcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLnF1ZXJ5IC0+IE1vZGVsLnJlc3BvbnNlIERlZmVycmVkLnRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFJwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICAgIGxldCVtYXAgciA9IGYgcyB+dmVyc2lvbiBxIGluXG4gICAgICAgICAgICAgICAgKG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbCByKSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgT2sgciAtPiByXG4gICAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IChyZXNwb25zZSBQaXBlLlJlYWRlci50LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgIC0+ICh1bml0LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID1cbiAgICAgICAgfCBQaXBlIG9mXG4gICAgICAgICAgICAoJ3NcbiAgICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAgLT4gKE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICB8IERpcmVjdCBvZlxuICAgICAgICAgICAgKCdzXG4gICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAgLT4gKHVuaXQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gaW1wbCA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF8pIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBpbXBsKVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiAoUGlwZSBmKVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudF9kaXJlY3RfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gKERpcmVjdCBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX21vZGVsIDogTW9kZWwuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pIDogVmVyc2lvbl9zaGFyZWQpIChDb252ZXJ0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9lbHQgOiAoTW9kZWwucmVzcG9uc2UgLT4gVmVyc2lvbl9pLnJlc3BvbnNlKSBPcl9lcnJvci50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X3BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBWZXJzaW9uX2kucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgfCBxIC0+IHFcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGltcGwgPVxuICAgICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICAgIHwgUGlwZSBmIC0+XG4gICAgICAgICAgICBQaXBlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoJWJpbmQgZiBzIH52ZXJzaW9uICh3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBPayBwaXBlIC0+XG4gICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IHJldHVybiAoT2sgKGNvbnZlcnRfcGlwZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gcmV0dXJuICh3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yKSlcbiAgICAgICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5va19leG4gY29udmVydF9lbHQgaW5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudF9kaXJlY3QgcnBjIChmdW4gcyBxIGRzdyAtPlxuICAgICAgICAgICAgICBsZXQgd3JpdGVyID1cbiAgICAgICAgICAgICAgICBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIuY3JlYXRlIH5jb252ZXJ0OmNvbnZlcnRfZWx0IH53cml0ZXI6ZHN3XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoJW1hcCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd3JpdGVyIHdpdGhcbiAgICAgICAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlBpcGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnQgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9XG4gICAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImNhbm5vdCB1c2UgZGlyZWN0IGludGVyZmFjZSB3aXRoIFJlZ2lzdGVyX3Jhd1wiXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlID0gVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT2sgVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlIHBpcGUgPSBQaXBlLm1hcCBwaXBlIH5mOlZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgc3RhdGVcbiAgICAgIHR5cGUgdXBkYXRlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gKHN0YXRlICogdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgICdzXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIC0+IChNb2RlbC5zdGF0ZSAqIE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgXykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIHZhbCBzdGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnN0YXRlIC0+IHN0YXRlXG4gICAgICAgIHZhbCBlcnJvcl9vZl9tb2RlbCA6IE1vZGVsLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuc3RhdGVcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFN0YXRlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFN0YXRlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCViaW5kIGYgcyB+dmVyc2lvbiBxIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayAobW9kZWxfc3RhdGUsIHBpcGUpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5zdGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IHN0YXRlIC0+IHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE9rIChzdGF0ZSwgVmVyc2lvbl9pLnVwZGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgVXBkYXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5TdGF0ZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX21vZGVsIDogTW9kZWwudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsIF9zdGF0ZSBwaXBlID0gUGlwZS5tYXAgfmY6dXBkYXRlX29mX21vZGVsIHBpcGVcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIG1zZ1xuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBtc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwubXNnIC0+IHVuaXRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1vZGVsX29mX21zZyA6IG1zZyAtPiBNb2RlbC5tc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgT25lX3dheS5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9tc2cgcSkgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYE1zZywgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT4gZiBzIH52ZXJzaW9uIHEpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWVudSA9IHN0cnVjdFxuICAoKioqKioqKioqKioqKioqKiogc29tZSBwcm9oaWJpdGlvbnMgZm9yIHRoaXMgbW9kdWxlICoqKioqKioqKioqKioqKioqKlxuXG4gICAgICAgICAgICAgICAgICAgICAoMSkgISEhIG5ldmVyIHBydW5lIG9sZCB2ZXJzaW9ucyBvZiB0aGlzIHJwYyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgSXQgaXMgdG9vIGZ1bmRhbWVudGFsIHRvIHRoZSB3b3JraW5ncyBvZiB2YXJpb3VzIHZlcnNpb25pbmdcbiAgICAgICAgICAgICAgICAgICAgIHNjaGVtZXMgYW5kIGl0IHByb2JhYmx5IHdvbid0IGNoYW5nZSB2ZXJ5IG11Y2ggYW55d2F5LlxuXG4gICAgICAgICAgICAgICAgICAgICAoMikgISEhIG9ubHkgZXZlciBzYXkgXCJ3aXRoIGJpbl9pb1wiIG9uIGJ1aWx0LWluIG9jYW1sIHR5cGVzICEhIVxuXG4gICAgICAgICAgICAgICAgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiB0eXBlcyBhcmUgaW50LCBsaXN0LCBzdHJpbmcsIGV0Yy5cblxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0byBwcm90ZWN0IG91cnNlbHZlcyBhZ2FpbnN0IGNoYW5nZXMgdG8gQ29yZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLCBmb3IgZXhhbXBsZS5cblxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgIGxldCBuYW1lID0gXCJfX1ZlcnNpb25lZF9ycGMuTWVudVwiXG5cbiAgICB0eXBlIHF1ZXJ5ID0gdW5pdFxuICAgIHR5cGUgcmVzcG9uc2UgPSBEZXNjcmlwdGlvbi50IGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gIGxldCBycGNfbmFtZSA9IE1vZGVsLm5hbWVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbGV0IHZlcnNpb24gPSAxXG5cbiAgICAgIHR5cGUgcXVlcnkgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoc3RyaW5nICogaW50KSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5IHEgPSBxXG5cbiAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9XG4gICAgICAgIExpc3QubWFwIH5mOihmdW4geyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFJlZ2lzdGVyIChUKVxuICBlbmRcblxuICBtb2R1bGUgQ3VycmVudF92ZXJzaW9uID0gVjFcblxuICBsZXQgYWRkIGltcGxzID1cbiAgICBsZXQgbWVudSA9IExpc3QubWFwIGltcGxzIH5mOkltcGxlbWVudGF0aW9uLmRlc2NyaXB0aW9uIGluXG4gICAgbGV0IG1lbnVfaW1wbHMgPSBpbXBsZW1lbnRfbXVsdGkgKGZ1biBfIH52ZXJzaW9uOl8gKCkgLT4gcmV0dXJuIG1lbnUpIGluXG4gICAgaW1wbHMgQCBtZW51X2ltcGxzXG4gIDs7XG5cbiAgdHlwZSB0ID0gSW50LlNldC50IFN0cmluZy5UYWJsZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHN1cHBvcnRlZF9ycGNzIHQgPVxuICAgIGxldCBvcGVuIExpc3QuTGV0X3N5bnRheCBpblxuICAgIGxldCViaW5kIG5hbWUsIHZlcnNpb25zID0gU3RyaW5nLlRhYmxlLnRvX2FsaXN0IHQgaW5cbiAgICBsZXQlbWFwIHZlcnNpb24gPSBJbnQuU2V0LnRvX2xpc3QgdmVyc2lvbnMgaW5cbiAgICB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfVxuICA7O1xuXG4gIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cnBjX25hbWUgPVxuICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpJbnQuU2V0LmVtcHR5IChIYXNodGJsLmZpbmQgdCBycGNfbmFtZSlcbiAgOztcblxuICBsZXQgb2ZfZW50cmllcyBlbnRyaWVzID1cbiAgICBIYXNodGJsLm1hcCB+ZjpJbnQuU2V0Lm9mX2xpc3QgKFN0cmluZy5UYWJsZS5vZl9hbGlzdF9tdWx0aSBlbnRyaWVzKVxuICA7O1xuXG4gIGxldCByZXF1ZXN0IGNvbm4gPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gUnBjLmRpc3BhdGNoIEN1cnJlbnRfdmVyc2lvbi5ycGMgY29ubiAoKSBpblxuICAgIFJlc3VsdC5tYXAgcmVzdWx0IH5mOm9mX2VudHJpZXNcbiAgOztcblxuICBsZXQgY3JlYXRlIGRlc2NyaXB0aW9ucyA9XG4gICAgTGlzdC5tYXAgZGVzY3JpcHRpb25zIH5mOihmdW4geyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgICB8PiBvZl9lbnRyaWVzXG4gIDs7XG5lbmRcblxubW9kdWxlIENvbm5lY3Rpb25fd2l0aF9tZW51ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgOyBtZW51IDogTWVudS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IGNyZWF0ZSBjb25uZWN0aW9uID1cbiAgICBsZXQgb3BlbiBEZWZlcnJlZC5Pcl9lcnJvci5MZXRfc3ludGF4IGluXG4gICAgbGV0JW1hcCBtZW51ID0gTWVudS5yZXF1ZXN0IGNvbm5lY3Rpb24gaW5cbiAgICB7IGNvbm5lY3Rpb247IG1lbnUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZGlyZWN0bHkgY29ubmVjdGlvbiBtZW51ID0geyBjb25uZWN0aW9uOyBtZW51IH1cbmVuZFxuXG5tb2R1bGUgQ2FsbGVyX2NvbnZlcnRzID0gc3RydWN0XG4gIGxldCBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiB+cnBjX25hbWUgfmNhbGxlcl92ZXJzaW9ucyB+Y2FsbGVlX3ZlcnNpb25zIH5jYWxsZWVfbWVudSA9XG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciBjYWxsZWVfdmVyc2lvbnMgY2FsbGVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCJcbiAgICAgICAgICAgIChycGNfbmFtZSA6IHN0cmluZylcbiAgICAgICAgICAgIChjYWxsZXJfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKGNhbGxlZV9tZW51IDogTWVudS50KV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJoaWdoZXN0IHZlcnNpb24gbnVtYmVyIGlzIHRha2VuIGluIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXCIgPVxuICAgIGxldCBycGNfbmFtZSA9IFwidGhlLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBycGNfbmFtZSwgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWVcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAyIF0pXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdCB7fCAoT2sgMikgfH1dXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwiZXJyb3IgZnJvbSBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiBsb29rcyByZWFzb25hYmxlXCIgPVxuICAgIGxldCB0aGVfcnBjID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbm90X3RoZV9ycGMgPSBcIm90aGVyLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBub3RfdGhlX3JwYywgMTsgbm90X3RoZV9ycGMsIDIgXSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgfnJwY19uYW1lOnRoZV9ycGNcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTp0aGVfcnBjKVxuICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgIGluXG4gICAgcHJpbnRfcyBbJXNleHAgKHJlc3VsdCA6IGludCBPcl9lcnJvci50KV07XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAoRXJyb3JcbiAgICAgICAoXCJjYWxsZXIgYW5kIGNhbGxlZSBzaGFyZSBubyBjb21tb24gdmVyc2lvbnMgZm9yIHJwY1wiIChycGNfbmFtZSB0aGUtcnBjKVxuICAgICAgICAoY2FsbGVyX3ZlcnNpb25zICgxIDIgMykpIChjYWxsZWVfdmVyc2lvbnMgKCkpXG4gICAgICAgIChjYWxsZWVfbWVudSAoKG90aGVyLXJwYyAoMSAyKSkpKSkpfH1dXG4gIDs7XG5cbiAgbW9kdWxlIERpc3BhdGNoID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBNb25hZCkgPSBzdHJ1Y3RcbiAgICAgIG9wZW4gTVxuXG4gICAgICBsZXQgd2l0aF9zcGVjaWZpY192ZXJzaW9uIH52ZXJzaW9uIH5jb25uZWN0aW9uIH5uYW1lIH5xdWVyeSB+ZGlzcGF0Y2hlciB+cmVnaXN0cnkgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKEVycm9yICh1bmtub3duX3ZlcnNpb24gKG5hbWUsIHZlcnNpb24pKSlcbiAgICAgICAgfCBTb21lIChkaXNwYXRjaCwgX3JwYykgLT4gZGlzcGF0Y2hlciBkaXNwYXRjaCBjb25uZWN0aW9uIHF1ZXJ5XG4gICAgICA7O1xuXG4gICAgICBsZXQgd2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICAgIHsgQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvbjsgbWVudSB9XG4gICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgICB+ZGlzcGF0Y2hlclxuICAgICAgICA9XG4gICAgICAgIGxldCBjYWxsZWVfdmVyc2lvbnMgPSBNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTpuYW1lIGluXG4gICAgICAgIGxldCBjYWxsZXJfdmVyc2lvbnMgPSB2ZXJzaW9ucyAoKSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgICAgICB+cnBjX25hbWU6bmFtZVxuICAgICAgICAgICAgfmNhbGxlcl92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIHZlcnNpb24gLT5cbiAgICAgICAgICB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5yZWdpc3RyeSB+ZGlzcGF0Y2hlclxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBBc3luYyA9IE1ha2UgKERlZmVycmVkKVxuICAgIG1vZHVsZSBEaXJlY3QgPSBNYWtlIChNb25hZC5JZGVudClcbiAgZW5kXG5cbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlcicgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IE1vZGVsLnF1ZXJ5IC0+IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBtcSA9XG4gICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgbXEpIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFJwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIFJlc3VsdC5iaW5kIHJlc3VsdCB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgbXEgcikgd2l0aFxuICAgICAgICAgICAgICAgIHwgT2sgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBSZWdpc3RlcicgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgXyByID0gbW9kZWxfb2ZfcmVzcG9uc2UgclxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKHJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnQsIGVycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gZjoocmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpc3BhdGNoZXIgPVxuICAgICAgICB7IGFib3J0IDogQ29ubmVjdGlvbi50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdFxuICAgICAgICA7IGRpc3BhdGNoIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+ICggTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAgICAgLCBNb2RlbC5lcnJvciApXG4gICAgICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudFxuICAgICAgICA7IGRpc3BhdGNoX2l0ZXIgOlxuICAgICAgICAgICAgQ29ubmVjdGlvbi50XG4gICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgLT4gZjooTW9kZWwucmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA6IChkaXNwYXRjaGVyICogQW55LnQpIEludC5UYWJsZS50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX2l0ZXJfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgfmYgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBkaXNwYXRjaF9pdGVyOyBfIH0gY29ubiBxdWVyeSAtPiBkaXNwYXRjaF9pdGVyIGNvbm4gcXVlcnkgfmYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBkaXNwYXRjaDsgXyB9IGNvbm4gcXVlcnkgLT4gZGlzcGF0Y2ggY29ubiBxdWVyeSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhYm9ydF9tdWx0aSBjb25uX3dpdGhfbWVudSBpZCA9XG4gICAgICAgIERpc3BhdGNoLkRpcmVjdC53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgaWRcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBhYm9ydDsgXyB9IGNvbm4gaWQgLT5cbiAgICAgICAgICAgIGFib3J0IGNvbm4gaWQ7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIG1vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pIDogVmVyc2lvbl9zaGFyZWQpIChDb252ZXJ0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9lbHQgOiAoVmVyc2lvbl9pLnJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlKSBPcl9lcnJvci50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X3BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgVmVyc2lvbl9pLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcbiAgICAgICAgb3BlbiBDb252ZXJ0XG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgUGlwZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fcmVzcG9uc2VcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcSA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIHEgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgcmV0dXJuIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICB8IHEgLT4gcmV0dXJuIChPayBxKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2sgPVxuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICAgICAgIHwgT2sgKEVycm9yIGUpIC0+XG4gICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX2Vycm9yIGUgd2l0aFxuICAgICAgICAgICAgIHwgZScgLT4gT2sgKEVycm9yIGUnKVxuICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgfCBPayAoT2sgb2spIC0+IE9rIChPayAoY29udmVydF9vayBvaykpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxXG4gICAgICAgICAgPj49PyBmdW4gcSAtPlxuICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gUGlwZV9ycGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgIGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vazooZnVuIChwaXBlLCBpZCkgLT4gY29udmVydF9waXBlIHBpcGUsIGlkKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBkaXNwYXRjaF9pdGVyIGNvbm4gcSB+ZiA9XG4gICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3Iub2tfZXhuIGNvbnZlcnRfZWx0IGluXG4gICAgICAgICAgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxXG4gICAgICAgICAgPj49PyBmdW4gcSAtPlxuICAgICAgICAgIGxldCBjb252ZXJ0X21lc3NhZ2UgKG0gOiBfIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50KSA9XG4gICAgICAgICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgICAgIHwgQ2xvc2VkIF8gYXMgY2xvc2VkIC0+IGNsb3NlZFxuICAgICAgICAgICAgfCBVcGRhdGUgdSAtPiBVcGRhdGUgKGNvbnZlcnRfZWx0IHUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9XG4gICAgICAgICAgICBQaXBlX3JwYy5kaXNwYXRjaF9pdGVyIHJwYyBjb25uIHEgfmY6KGZ1biBtZXNzYWdlIC0+XG4gICAgICAgICAgICAgIGYgKGNvbnZlcnRfbWVzc2FnZSBtZXNzYWdlKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vazpGbi5pZFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBhYm9ydCBjb25uIGlkID0gUGlwZV9ycGMuYWJvcnQgcnBjIGNvbm4gaWRcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEhhc2h0Ymwuc2V0XG4gICAgICAgICAgICAgIHJlZ2lzdHJ5XG4gICAgICAgICAgICAgIH5rZXk6dmVyc2lvblxuICAgICAgICAgICAgICB+ZGF0YTooeyBhYm9ydDsgZGlzcGF0Y2g7IGRpc3BhdGNoX2l0ZXIgfSwgQW55LlBpcGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiQ2Fubm90IHVzZSBEaXJlY3Qgd2l0aCBSZWdpc3Rlcl9yYXdcIlxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSA9IFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9rIFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZVxuXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlIHJzID1cbiAgICAgICAgICAgICAgUGlwZS5tYXAgcnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlIHIgd2l0aFxuICAgICAgICAgICAgICAgIHwgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiBWZXJzaW9uX2kudmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgc3RhdGVcbiAgICAgIHR5cGUgdXBkYXRlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+ICggc3RhdGUgKiB1cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogU3RhdGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBlcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5zdGF0ZVxuICAgICAgICB2YWwgbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgU3RhdGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3N0YXRlXG4gICAgICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIHEgd2l0aFxuICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFN0YXRlX3JwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT4gRXJyb3IgZXhuXG4gICAgICAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX2Vycm9yIGUgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBlJyAtPiBPayAoRXJyb3IgZScpXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgICB8IE9rIChPayAoc3RhdGUsIHBpcGUsIGlkKSkgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9zdGF0ZSBzdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgIHwgc3RhdGUgLT4gT2sgKE9rIChzdGF0ZSwgVmVyc2lvbl9pLm1vZGVsX29mX3VwZGF0ZSBwaXBlLCBpZCkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlN0YXRlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwudXBkYXRlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgcnMgPVxuICAgICAgICAgICAgICBQaXBlLm1hcCBycyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHIgd2l0aFxuICAgICAgICAgICAgICAgIHwgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBVcGRhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgbXNnXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgbXNnID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBtc2dcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1zZ19vZl9tb2RlbCA6IE1vZGVsLm1zZyAtPiBtc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1zZ19vZl9tb2RlbCBxKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPiBPbmVfd2F5LmRpc3BhdGNoIHJwYyBjb25uIHFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55Lk9uZV93YXkgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCb3RoX2NvbnZlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBsYWluID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZWVfcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gY2FsbGVlX3F1ZXJ5IC0+IGNhbGxlZV9yZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBDYWxsZWUucXVlcnlcbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IENhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3Jlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gZjooY2FsbGVyX3Jlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGNhbGxlcl9lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBhYm9ydF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfcmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gY2FsbGVlX3Jlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5DYWxsZXIuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5DYWxsZWUucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgIGxldCBhYm9ydF9tdWx0aSA9IENhbGxlci5hYm9ydF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9zdGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVyX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfdXBkYXRlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3N0YXRlICogY2FsbGVyX3VwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGNhbGxlcl9lcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gKGNhbGxlZV9zdGF0ZSAqIGNhbGxlZV91cGRhdGUgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuU3RhdGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IE1vZGVsLkNhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwuQ2FsbGVlLnF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5DYWxsZXIuc3RhdGVcbiAgICAgICAgdmFsIHN0YXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBlcnJvcl9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZWUudXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS51cGRhdGUgLT4gdXBkYXRlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwuQ2FsbGVyLnVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9zdGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl9zdGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9tc2dcbiAgICAgIHR5cGUgY2FsbGVlX21zZ1xuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IGNhbGxlcl9tc2cgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9tc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2dcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuT25lX3dheS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBtc2dfb2ZfY2FsbGVyX21vZGVsIDogQ2FsbGVyLm1zZyAtPiBtc2dcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX21zZyA6IG1zZyAtPiBDYWxsZWUubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfbXNnID0gY2FsbGVlX21vZGVsX29mX21zZ1xuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1zZ19vZl9tb2RlbCA9IG1zZ19vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG5cbiAgICAgICgqIE5vdGU6IENhbGxlci52ZXJzaW9ucyBpcyB0aGUgc2FtZSBhcyBDYWxsZWUudmVyc2lvbnMsIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoXG4gICAgICAgICBvbmUgd2UgY2FsbCBoZXJlLiBTYW1lIGZvciBbcnBjc10uICopXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydFxuICBtb2R1bGUgSGVhZGVyID0gSGVhZGVyXG4gIG1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IEhhbmRsZXJfcmVzdWx0XG4gIG1vZHVsZSBTZW5kX3Jlc3VsdCA9IFNlbmRfcmVzdWx0XG4gIG1vZHVsZSBSZWFkZXIgPSBSZWFkZXJcbiAgbW9kdWxlIFdyaXRlciA9IFdyaXRlclxuZW5kXG5cbmxldCByZWMgcGlwZV9yZWFkIHQgZiA9XG4gIG1hdGNoJWJpbmQgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHQgd2l0aFxuICB8IGBFb2YgLT4gZiBgRW9mXG4gIHwgYE9rIC0+XG4gICAgKG1hdGNoIFBpcGUucmVhZF9ub3cnIHQgd2l0aFxuICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBwaXBlX3JlYWQgdCBmXG4gICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgcmVzIC0+IGYgcmVzKVxuOztcblxubW9kdWxlIHR5cGUgREFUQSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGFkZF90b19iaWdidWZmZXIgOiBCaWdidWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX2JpZ3N0cmluZyA6IHQgLT4gQmlnc3RyaW5nLnRcbiAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfYnVmZmVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwaXBlIDogJ2EgUGlwZS5SZWFkZXIudFxuICAgIDsgYnVmZmVyIDogQmlnYnVmZmVyLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID0geyBwaXBlOyBidWZmZXIgPSBCaWdidWZmZXIuY3JlYXRlIEhlYWRlci5sZW5ndGggfVxuZW5kXG5cbm1vZHVsZSBQaXBlX3JlYWRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9idWZmZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlX3JlYWQgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcblxuICBsZXQgcmVhZF9mb3JldmVyICh0IDogdCkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IChfLCBfKSBEZWZlcnJlZC5SZXN1bHQudCA9XG4gICAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gICAgKCogRGVxdWV1ZSB1bnRpbCBlbm91Z2ggZGF0YSAoW25lZWRdKSBpcyBhdmFpbGFibGUgYW5kIHRyeSByZWFkIG1lc3NhZ2VzICopXG4gICAgbGV0IHJlYyBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID1cbiAgICAgIG1hdGNoIFF1ZXVlLmRlcXVldWUgcXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFF1ZXVlIGlzIGVtcHR5IC0gd2UgbmVlZCB0byB3YWl0IGZvciBtb3JlIGRhdGEgKilcbiAgICAgICAgcmV0dXJuIChTZWNvbmQgbmVlZClcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgIGxldCBidWZmX2xlbiA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgICAgIGxldCBkYXRhX2xlbiA9IERhdGEubGVuZ3RoIGRhdGEgaW5cbiAgICAgICAgaWYgYnVmZl9sZW4gPSAwICYmIGRhdGFfbGVuID49IG5lZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIFdlIGhhdmUgZW5vdWdoIGRhdGEgYW5kIGJ1ZmZlciBpcyBlbXB0eS5cbiAgICAgICAgICAgICBUaGlzIGlzIHRoZSBjb21tb24gY2FzZSB3aGVyZSBldmVyeSBiaW5fcHJvdCBtZXNzYWdlIGlzIHNlbnQgaW4gaXRzIG93blxuICAgICAgICAgICAgIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGE6KERhdGEudG9fYmlnc3RyaW5nIGRhdGEpIH5sZW5ndGg6ZGF0YV9sZW4gcXVldWVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogU2xvdyBwYXRoLiBXZSBoYXZlIHRvIGFjY3VtdWxhdGUgW0JpZ3N0cmluZy50XXMgKilcbiAgICAgICAgICBEYXRhLmFkZF90b19iaWdidWZmZXIgYnVmZmVyIGRhdGE7XG4gICAgICAgICAgaWYgQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgPj0gbmVlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhlcmUgaXMgZW5vdWdoIGRhdGEgaW4gdGhlIGJ1ZmZlciAqKVxuICAgICAgICAgICAgbGV0IGRhdGEgPSBCaWdidWZmZXIudm9sYXRpbGVfY29udGVudHMgYnVmZmVyIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCBxdWV1ZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKiBXZSBuZWVkIG1vcmUgZGF0YSAtIGtlZXAgcHJvY2Vzc2luZyB0aGUgcXVldWUgKilcbiAgICAgICAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUpXG4gICAgKCogUmVhZCBhcyBtYW55IG1lc3NhZ2VzIGFzIHBvc3NpYmxlIGZyb20gdGhlIGN1cnJlbnQgZGF0YSAqKVxuICAgIGFuZCBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlID1cbiAgICAgIGlmIGxlbmd0aCA+PSBIZWFkZXIubGVuZ3RoXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHBheWxvYWRfbGVuID0gSGVhZGVyLnVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggZGF0YSB+cG9zIGluXG4gICAgICAgIGxldCB0b3RhbF9sZW4gPSBIZWFkZXIubGVuZ3RoICsgcGF5bG9hZF9sZW4gaW5cbiAgICAgICAgaWYgbGVuZ3RoID49IHRvdGFsX2xlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBvbl9tZXNzYWdlIGRhdGEgfnBvczoocG9zICsgSGVhZGVyLmxlbmd0aCkgfmxlbjpwYXlsb2FkX2xlbiB3aXRoXG4gICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIHggLT5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgICgqIE1ha2Ugc3VyZSB0aGF0IGFsbCBkYXRhIHdlJ3ZlIHJlYWQgKGFuZCBub3QgXCJjb25zdW1lZFwiKSBmcm9tIHRoZSBwaXBlXG4gICAgICAgICAgICAgICBpcyBrZXB0IGluIHRoZSBidWZmZXIuXG4gICAgICAgICAgICAgICBUaGF0IGlzIHRoZSByZW1haW5pbmcgYml0cyBpbiBbZGF0YV0gYW5kIGFsbCBjb250ZW50cyBpbiBbcXVldWVdLlxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgICAgICAgUXVldWUuaXRlciBxdWV1ZSB+ZjooZnVuIGRhdGEgLT4gRGF0YS5hZGRfdG9fYmlnYnVmZmVyIGJ1ZmZlciBkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiAoRmlyc3QgeClcbiAgICAgICAgICB8IChDb250aW51ZSB8IFdhaXQgXykgYXMgY29udGludWVfb3Jfd2FpdCAtPlxuICAgICAgICAgICAgbGV0JWJpbmQgKCkgPVxuICAgICAgICAgICAgICBtYXRjaCBjb250aW51ZV9vcl93YWl0IHdpdGhcbiAgICAgICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIF8gLT5cbiAgICAgICAgICAgICAgICAoKiBJbXBvc3NpYmxlOiB0aGlzIGJyYW5jaCBkb2VzIG5vdCBjb250YWluIFtTdG9wIF9dICopXG4gICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgQ29udGludWUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgICB8IFdhaXQgZCAtPiBkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHBvcyArIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aCAtIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICBpZiBsZW5ndGggPiAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFByb2Nlc3MgdGhlIHJlc3Qgb2YgdGhlIGRhdGEuXG4gICAgICAgICAgICAgICAgIE1vcmUgdGhhbiBvbmUgYmluX3Byb3QgbWVzc2FnZSB3YXMgc2VudCBpbnNpZGUgdGhlIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgqIGxlbmd0aCA9IDAgKilcbiAgICAgICAgICAgICAgKCogQWxsIGRhdGEgd2FzIHJlYWQgLSBrZWVwIHByb2Nlc3NpbmcgdGhlIHF1ZXVlICopXG4gICAgICAgICAgICAgIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGg6MCB+cXVldWUgfmRhdGEpXG4gICAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDp0b3RhbF9sZW4gfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSlcbiAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDpIZWFkZXIubGVuZ3RoIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGFcbiAgICBhbmQgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGEgPVxuICAgICAgaWYgbGVuZ3RoID0gMFxuICAgICAgdGhlbiBCaWdidWZmZXIuY2xlYXIgYnVmZmVyXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuc3ViIGRhdGEgfnBvcyB+bGVuOmxlbmd0aCBpblxuICAgICAgICBCaWdidWZmZXIuY2xlYXIgYnVmZmVyO1xuICAgICAgICBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZyBidWZmZXIgZGF0YSlcbiAgICBhbmQgc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhID1cbiAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZVxuICAgIGluXG4gICAgbGV0IHJlYyB3YWl0X2Zvcl9yZWFkIH5uZWVkID1cbiAgICAgIHBpcGVfcmVhZCB0LnBpcGUgKGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiByZXR1cm4gKEVycm9yIGBFb2YpXG4gICAgICAgIHwgYE9rIHF1ZXVlIC0+IHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPj49IGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUpXG4gICAgYW5kIGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUgbmV4dCA9XG4gICAgICBvbl9lbmRfb2ZfYmF0Y2ggKCk7XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgRmlyc3QgcmVzdWx0IC0+IHJldHVybiAoT2sgcmVzdWx0KVxuICAgICAgfCBTZWNvbmQgbmVlZCAtPiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5kYXRhIH5sZW5ndGggPVxuICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIChRdWV1ZS5jcmVhdGUgKCkpID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlXG4gICAgaW5cbiAgICAoKiBXZSBlaXRoZXIgc3RhcnQgYnlcbiAgICAgICAtIHByb2Nlc3NpbmcgcmVtYWluaW5nIGJpdHMgaW4gdGhlIGJ1ZmZlclxuICAgICAgIC0gb3Igd2FpdGluZyBmb3IgbW9yZSBkYXRhIGluIHRoZSBwaXBlICopXG4gICAgbGV0IG5lZWQgPSBIZWFkZXIubGVuZ3RoIGluXG4gICAgbGV0IGxlbmd0aCA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgaWYgSW50LiggPCApIGxlbmd0aCBuZWVkXG4gICAgdGhlbiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgZWxzZSBzdGFydF9wcm9jZXNzaW5nX2V4aXN0aW5nX2RhdGEgfmxlbmd0aCB+ZGF0YTooQmlnYnVmZmVyLnZvbGF0aWxlX2NvbnRlbnRzIGJ1ZmZlcilcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBEYXRhLnRcblxuICAgIGxldCBvZl9iaWdzdHJpbmcgPSBEYXRhLm9mX2JpZ3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfbW9uaXRvciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuV3JpdGVyLnRcbiAgICA7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID0geyBwaXBlOyBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgKCkgfVxuZW5kXG5cbigqIFdlIGRvbid0IHBlcmZvcm0gYW55IGJ1ZmZlcmluZyBoZXJlLlxuICAgQSBtZXNzYWdlIGlzIGNvbnNpZGVyIHRvIGJlIGZsdXNoZWQgYXMgc29vbiBhcyBpdCBlbnRlcnMgdGhlIHBpcGUuICopXG5tb2R1bGUgUGlwZV93cml0ZXIgKERhdGEgOiBEQVRBKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBEYXRhLnQgUGlwZV9hbmRfbW9uaXRvci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNsb3NlICh0IDogdCkgPVxuICAgIFBpcGUuY2xvc2UgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcbiAgbGV0IG1vbml0b3IgKHQgOiB0KSA9IHQubW9uaXRvclxuXG4gICgqIEJlY2F1c2Ugd2UgZG9uJ3QgbWFpbnRhaW4gYW55IGJ1ZmZlciwgdGhlcmUgYXJlIG5vIHBlbmRpbmcgd3JpdGVzICopXG4gIGxldCBieXRlc190b193cml0ZSAoXyA6IHQpID0gMFxuICBsZXQgc3RvcHBlZCAodCA6IHQpID0gUGlwZS5jbG9zZWQgdC5waXBlXG5cbiAgKCogV2UgY29uc2lkZXIgdGhhdCBhIG1lc3NhZ2UgaXMgZmx1c2hlZCBhcyBzb29uIGFzIGl0IHJlYWNoZXMgdGhlIHVuZGVybGluaW5nXG4gICAgIHRyYW5zcG9ydC4gKilcbiAgbGV0IGZsdXNoZWQgKF8gOiB0KSA9IERlZmVycmVkLnVuaXRcbiAgbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZFxuICBsZXQgc2VudF9yZXN1bHQgeCA6IF8gU2VuZF9yZXN1bHQudCA9IFNlbnQgeFxuXG4gIGxldCBjaGVja19jbG9zZWQgKHQgOiB0KSBmID1cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHQucGlwZSkgdGhlbiBmICgpIGVsc2UgU2VuZF9yZXN1bHQuQ2xvc2VkXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3QgdCB3cml0ZXIgeCA9XG4gICAgY2hlY2tfY2xvc2VkIHQgKGZ1biAoKSAtPlxuICAgICAgbGV0IGJ1ZiA9IEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIH5oZWFkZXI6dHJ1ZSB3cml0ZXIgeCBpblxuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSAoRGF0YS5vZl9iaWdzdHJpbmcgYnVmKTtcbiAgICAgIHNlbnRfcmVzdWx0ICgpKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgdFxuICAgICAgICAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcilcbiAgICAgICAgeFxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlbjpwYXlsb2FkX3NpemVcbiAgICA9XG4gICAgY2hlY2tfY2xvc2VkIHQgKGZ1biAoKSAtPlxuICAgICAgKCogV3JpdGUgdGhlIHNpemUgaGVhZGVyIG1hbnVhbGx5IGFuZCBjb25jYXRlbmF0ZSB0aGUgdHdvICopXG4gICAgICBsZXQgZGF0YV9zaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuY3JlYXRlIChkYXRhX3NpemUgKyBIZWFkZXIubGVuZ3RoICsgcGF5bG9hZF9zaXplKSBpblxuICAgICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggZGF0YSB+cG9zOjAgKGRhdGFfc2l6ZSArIHBheWxvYWRfc2l6ZSk7XG4gICAgICBsZXQgZHN0X3BvcyA9IHdyaXRlci53cml0ZSBkYXRhIH5wb3M6SGVhZGVyLmxlbmd0aCB4IGluXG4gICAgICBCaWdzdHJpbmcuYmxpdCB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDpkYXRhIH5kc3RfcG9zIH5sZW46cGF5bG9hZF9zaXplO1xuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSAoRGF0YS5vZl9iaWdzdHJpbmcgZGF0YSk7XG4gICAgICBzZW50X3Jlc3VsdCAoKSlcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nIHQgd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gPVxuICAgIG1hdGNoIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0IHdyaXRlciB4IH5idWYgfnBvcyB+bGVuIHdpdGhcbiAgICB8IFNlbnQgKCkgLT4gc2VudF9yZXN1bHQgRGVmZXJyZWQudW5pdFxuICAgIHwgKENsb3NlZCB8IE1lc3NhZ2VfdG9vX2JpZyBfKSBhcyByIC0+IHJcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmlnc3RyaW5nX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbGVuZ3RoID0gQmlnc3RyaW5nLmxlbmd0aFxuICBsZXQgYWRkX3RvX2JpZ2J1ZmZlciA9IEJpZ2J1ZmZlci5hZGRfYmlnc3RyaW5nXG4gIGxldCB0b19iaWdzdHJpbmcgeCA9IHhcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0geFxuZW5kXG5cbm1vZHVsZSBTdHJpbmdfZGF0YSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gIGxldCBhZGRfdG9fYmlnYnVmZmVyID0gQmlnYnVmZmVyLmFkZF9zdHJpbmdcbiAgbGV0IHRvX2JpZ3N0cmluZyB4ID0gQmlnc3RyaW5nLm9mX3N0cmluZyB4XG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IEJpZ3N0cmluZy50b19zdHJpbmcgeFxuZW5kXG5cbm1vZHVsZSBCaWdzdHJpbmdfcGlwZV9yZWFkZXIgPSBQaXBlX3JlYWRlciAoQmlnc3RyaW5nX2RhdGEpXG5tb2R1bGUgQmlnc3RyaW5nX3BpcGVfd3JpdGVyID0gUGlwZV93cml0ZXIgKEJpZ3N0cmluZ19kYXRhKVxubW9kdWxlIFN0cmluZ19waXBlX3JlYWRlciA9IFBpcGVfcmVhZGVyIChTdHJpbmdfZGF0YSlcbm1vZHVsZSBTdHJpbmdfcGlwZV93cml0ZXIgPSBQaXBlX3dyaXRlciAoU3RyaW5nX2RhdGEpXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQmlnc3RyaW5nIDogYmlnc3RyaW5nIHRcblxuICBsZXQgc3RyaW5nID0gU3RyaW5nXG4gIGxldCBiaWdzdHJpbmcgPSBCaWdzdHJpbmdcbmVuZFxuXG5sZXQgbWFrZV9yZWFkZXIgKHR5cGUgYSkgKHggOiBhIEtpbmQudCkgKHJlYWRlciA6IGEgUGlwZS5SZWFkZXIudCkgPVxuICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgS2luZC5TdHJpbmcgLT4gUmVhZGVyLnBhY2sgKG1vZHVsZSBTdHJpbmdfcGlwZV9yZWFkZXIpIHJlYWRlclxuICB8IEtpbmQuQmlnc3RyaW5nIC0+IFJlYWRlci5wYWNrIChtb2R1bGUgQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSByZWFkZXJcbjs7XG5cbmxldCBtYWtlX3dyaXRlciAodHlwZSBhKSAoeCA6IGEgS2luZC50KSAod3JpdGVyIDogYSBQaXBlLldyaXRlci50KSA9XG4gIGxldCB3cml0ZXIgPSBQaXBlX2FuZF9tb25pdG9yLmNyZWF0ZSB3cml0ZXIgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgS2luZC5TdHJpbmcgLT4gV3JpdGVyLnBhY2sgKG1vZHVsZSBTdHJpbmdfcGlwZV93cml0ZXIpIHdyaXRlclxuICB8IEtpbmQuQmlnc3RyaW5nIC0+IFdyaXRlci5wYWNrIChtb2R1bGUgQmlnc3RyaW5nX3BpcGVfd3JpdGVyKSB3cml0ZXJcbjs7XG5cbmxldCBjcmVhdGUga2luZCByZWFkZXIgd3JpdGVyID1cbiAgeyBUcmFuc3BvcnQucmVhZGVyID0gbWFrZV9yZWFkZXIga2luZCByZWFkZXI7IHdyaXRlciA9IG1ha2Vfd3JpdGVyIGtpbmQgd3JpdGVyIH1cbjs7XG5cbigqIFRlc3RpbmcgKilcblxubW9kdWxlIHR5cGUgVHJhbnNwb3J0X3JlYWRlciA9IHNpZ1xuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBvZl9iaWdzdHJpbmcgOiBCaWdzdHJpbmcudCAtPiB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVHJhbnNwb3J0LlJlYWRlci5TIHdpdGggdHlwZSB0ID0gRm9yX3Rlc3RpbmcudCBQaXBlX2FuZF9idWZmZXIudFxuZW5kXG5cbm1vZHVsZSBUZXN0X3JlYWRlciAoVHJhbnNwb3J0X3JlYWRlciA6IFRyYW5zcG9ydF9yZWFkZXIpID0gc3RydWN0XG4gIG9wZW4gVHJhbnNwb3J0X3JlYWRlci5Gb3JfdGVzdGluZ1xuXG4gIGxldCBkZWZhdWx0X21lc3NhZ2UgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIFwiRk9PQkFSMTIzXCJcblxuICBsZXQgY3JlYXRlX21lc3NhZ2VfYnVmIChtZXNzYWdlIDogQmlnc3RyaW5nLnQpIDogQmlnc3RyaW5nLnQgPVxuICAgIGxldCBtZXNzYWdlX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZSBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIChIZWFkZXIubGVuZ3RoICsgbWVzc2FnZV9sZW4pIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCBtZXNzYWdlX2xlbjtcbiAgICBCaWdzdHJpbmcuYmxpdFxuICAgICAgfnNyYzptZXNzYWdlXG4gICAgICB+ZHN0OmJ1ZlxuICAgICAgfnNyY19wb3M6MFxuICAgICAgfmRzdF9wb3M6SGVhZGVyLmxlbmd0aFxuICAgICAgfmxlbjptZXNzYWdlX2xlbjtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlX21lc3NhZ2UgKCkgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlXG5cbiAgbGV0IG9uX21lc3NhZ2UgPyhtZXNzYWdlID0gZGVmYXVsdF9tZXNzYWdlKSBvbl9tZXNzYWdlX2NvdW50IGJ1ZmZlciB+cG9zIH5sZW4gPVxuICAgIG9uX21lc3NhZ2VfY291bnQgOj0gIW9uX21lc3NhZ2VfY291bnQgKyAxO1xuICAgIFsldGVzdF9yZXN1bHQ6IEJpZ3N0cmluZy50XSAoQmlnc3RyaW5nLnN1YiBidWZmZXIgfnBvcyB+bGVuKSB+ZXhwZWN0Om1lc3NhZ2U7XG4gICAgSGFuZGxlcl9yZXN1bHQuQ29udGludWVcbiAgOztcblxuICBsZXQgb25fZW5kX29mX2JhdGNoIG9uX2VuZF9vZl9iYXRjaF9jb3VudCAoKSA9IGluY3Igb25fZW5kX29mX2JhdGNoX2NvdW50XG4gIGxldCB3YWl0ICgpID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5FeHBlcnQucnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKVxuXG4gIGxldCBydW5fdGVzdCBydW4gdmVyaWZ5ID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9tZXNzYWdlX2NvdW50ID0gcmVmIDAgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoX2NvdW50ID0gcmVmIDAgaW5cbiAgICBsZXQgb25fbWVzc2FnZSA9IG9uX21lc3NhZ2Ugb25fbWVzc2FnZV9jb3VudCBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggPSBvbl9lbmRfb2ZfYmF0Y2ggb25fZW5kX29mX2JhdGNoX2NvdW50IGluXG4gICAgaWdub3JlIChUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlciByZWFkZXIgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCk7XG4gICAgd2FpdCAoKTtcbiAgICBydW4gKGZ1biB4IC0+IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSk7XG4gICAgd2FpdCAoKTtcbiAgICB2ZXJpZnkgfm9uX21lc3NhZ2VfY291bnQgfm9uX2VuZF9vZl9iYXRjaF9jb3VudFxuICA7O1xuXG4gIGxldCB2ZXJpZnkgfm9uX21lc3NhZ2VfY291bnQgfm9uX2VuZF9vZl9iYXRjaF9jb3VudCBtZXNzYWdlX2NvdW50IGJhdGNoX2NvdW50ID1cbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdICFvbl9tZXNzYWdlX2NvdW50IH5leHBlY3Q6bWVzc2FnZV9jb3VudDtcbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdICFvbl9lbmRfb2ZfYmF0Y2hfY291bnQgfmV4cGVjdDpiYXRjaF9jb3VudFxuICA7O1xuXG4gIGxldCB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuXG4gICgqIE5vdCBlbm91Z2ggZGF0YSwgd2UgbmVlZCB0byBhY2N1bXVsYXRlICopXG4gIGxldCB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlID1cbiAgICBsZXQgYnVmID0gY3JlYXRlX21lc3NhZ2VfYnVmIChCaWdzdHJpbmcub2Zfc3RyaW5nIFwiXCIpIGluXG4gICAgbGV0IG1lc3NhZ2VfcmF3ID0gZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCAoQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlX3Jhdyk7XG4gICAgd3JpdGUgYnVmO1xuICAgIHdhaXQgKCk7XG4gICAgbGV0IG1zZ19sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2VfcmF3IGluXG4gICAgbGV0IHNwbGl0X2F0ID0gbXNnX2xlbiAvIDIgaW5cbiAgICBsZXQgcGFydDEgPSBCaWdzdHJpbmcuc3ViIG1lc3NhZ2VfcmF3IH5wb3M6MCB+bGVuOnNwbGl0X2F0IGluXG4gICAgbGV0IHBhcnQyID0gQmlnc3RyaW5nLnN1YiBtZXNzYWdlX3JhdyB+cG9zOnNwbGl0X2F0IH5sZW46KG1zZ19sZW4gLSBzcGxpdF9hdCkgaW5cbiAgICB3cml0ZSBwYXJ0MTtcbiAgICB3YWl0ICgpO1xuICAgIHdyaXRlIHBhcnQyXG4gIDs7XG5cbiAgKCogVG9vIG11Y2ggZGF0YSwgd2UgbmVlZCB0byBsb29wIHdpdGhpbmcgdGhlIHNhbWUgYmF0Y2ggKilcbiAgbGV0IHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBvbmVfbXNnID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIGxldCB0d29fbXNnID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tc2c7IG9uZV9tc2cgXSBpblxuICAgIHdyaXRlIHR3b19tc2dcbiAgOztcblxuICBsZXQgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlID1cbiAgICBsZXQgb25lX21zZyA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBsZXQgdHdvX21zZyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbXNnOyBvbmVfbXNnIF0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnc3RyaW5nLmxlbmd0aCB0d29fbXNnIC0gMSBkb1xuICAgICAgd3JpdGUgKEJpZ3N0cmluZy5zdWIgdHdvX21zZyB+cG9zOmkgfmxlbjoxKTtcbiAgICAgIHdhaXQgKClcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfMV9jaHVuayAodmVyaWZ5IDEgMSlcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlXG4gICAgaW5cbiAgICBydW5fdGVzdCBmICh2ZXJpZnkgMiAxKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzNfY2h1bmsgKHZlcmlmeSAxIDMpXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnXzFfY2h1bmsgKHZlcmlmeSAyIDEpXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayAodmVyaWZ5IDIgMzQpXG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZiAodmVyaWZ5IDcgNDApXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBcImNhbiBjYWxsIHJlYWRfZm9yZXZlciBtdWx0aXBsZSB0aW1lc1wiID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggKCkgPSAoKSBpblxuICAgIGxldCB3cml0ZSB4ID0gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpIGluXG4gICAgbGV0IG51bSA9IHJlZiAwIGluXG4gICAgbGV0IHN0b3BfYWZ0ZXJfb25fbWVzc2FnZSBidWZmZXIgfnBvcyB+bGVuID1cbiAgICAgIGluY3IgbnVtO1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogQmlnc3RyaW5nLnRdIChCaWdzdHJpbmcuc3ViIGJ1ZmZlciB+cG9zIH5sZW4pIH5leHBlY3Q6ZGVmYXVsdF9tZXNzYWdlO1xuICAgICAgSGFuZGxlcl9yZXN1bHQuU3RvcCAoKVxuICAgIGluXG4gICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICBQaXBlLmNsb3NlIHdyaXRlcjtcbiAgICBkb24ndF93YWl0X2ZvclxuICAgICAgKGxldCViaW5kIHggPVxuICAgICAgICAgVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgICAgICAgcmVhZGVyXG4gICAgICAgICAgIH5vbl9tZXNzYWdlOnN0b3BfYWZ0ZXJfb25fbWVzc2FnZVxuICAgICAgICAgICB+b25fZW5kX29mX2JhdGNoXG4gICAgICAgaW5cbiAgICAgICBhc3NlcnQgKFJlc3VsdC5pc19vayB4KTtcbiAgICAgICBsZXQlYmluZCB4ID1cbiAgICAgICAgIFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICAgICAgIHJlYWRlclxuICAgICAgICAgICB+b25fbWVzc2FnZTpzdG9wX2FmdGVyX29uX21lc3NhZ2VcbiAgICAgICAgICAgfm9uX2VuZF9vZl9iYXRjaFxuICAgICAgIGluXG4gICAgICAgYXNzZXJ0IChSZXN1bHQuaXNfb2sgeCk7XG4gICAgICAgRGVmZXJyZWQudW5pdCk7XG4gICAgd2FpdCAoKTtcbiAgICBbJXRlc3RfcmVzdWx0OiBJbnQudF0gfmV4cGVjdDoyICFudW1cbiAgOztcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9zdHJpbmdcIiA9IChtb2R1bGUgVGVzdF9yZWFkZXIgKFN0cmluZ19waXBlX3JlYWRlcikpXG5sZXQldGVzdF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9iaWdzdHJpbmdcIiA9IChtb2R1bGUgVGVzdF9yZWFkZXIgKEJpZ3N0cmluZ19waXBlX3JlYWRlcikpXG5cbm1vZHVsZSBCZW5jaF9yZWFkZXIgKFRyYW5zcG9ydF9yZWFkZXIgOiBUcmFuc3BvcnRfcmVhZGVyKSA9IHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydF9yZWFkZXIuRm9yX3Rlc3RpbmdcblxuICBsZXQgZGVmYXVsdF9tZXNzYWdlID0gQmlnc3RyaW5nLm9mX3N0cmluZyBcIkZPT0JBUjEyM1wiXG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlX2J1ZiAobWVzc2FnZSA6IEJpZ3N0cmluZy50KSA6IEJpZ3N0cmluZy50ID1cbiAgICBsZXQgbWVzc2FnZV9sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2UgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSAoSGVhZGVyLmxlbmd0aCArIG1lc3NhZ2VfbGVuKSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgbWVzc2FnZV9sZW47XG4gICAgQmlnc3RyaW5nLmJsaXRcbiAgICAgIH5zcmM6bWVzc2FnZVxuICAgICAgfmRzdDpidWZcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOkhlYWRlci5sZW5ndGhcbiAgICAgIH5sZW46bWVzc2FnZV9sZW47XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlICgpID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZVxuICBsZXQgb25lX21lc3NhZ2UgPSBjcmVhdGVfbWVzc2FnZSAoKVxuICBsZXQgdHdvX21lc3NhZ2VzID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tZXNzYWdlOyBvbmVfbWVzc2FnZSBdXG5cbiAgbGV0IG9uZV9tZXNzYWdlX3AxLCBvbmVfbWVzc2FnZV9wMiA9XG4gICAgbGV0IG1zZ19sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG9uZV9tZXNzYWdlIGluXG4gICAgbGV0IHNwbGl0X2F0ID0gbXNnX2xlbiAvIDIgaW5cbiAgICBsZXQgcGFydDEgPSBCaWdzdHJpbmcuc3ViIG9uZV9tZXNzYWdlIH5wb3M6MCB+bGVuOnNwbGl0X2F0IGluXG4gICAgbGV0IHBhcnQyID0gQmlnc3RyaW5nLnN1YiBvbmVfbWVzc2FnZSB+cG9zOnNwbGl0X2F0IH5sZW46KG1zZ19sZW4gLSBzcGxpdF9hdCkgaW5cbiAgICBwYXJ0MSwgcGFydDJcbiAgOztcblxuICBsZXQgb25fbWVzc2FnZSBfYnVmZmVyIH5wb3M6XyB+bGVuOl8gPSBIYW5kbGVyX3Jlc3VsdC5Db250aW51ZVxuICBsZXQgb25fZW5kX29mX2JhdGNoICgpID0gKClcbiAgbGV0IHdhaXQgKCkgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLkV4cGVydC5ydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpXG5cbiAgbGV0IHJ1bl90ZXN0IHJ1biA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fbWVzc2FnZSA9IG9uX21lc3NhZ2UgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoID0gb25fZW5kX29mX2JhdGNoIGluXG4gICAgaWdub3JlIChUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlciByZWFkZXIgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCk7XG4gICAgd2FpdCAoKTtcbiAgICBmb3IgXyA9IDAgdG8gMTAwIGRvXG4gICAgICBydW4gKGZ1biB4IC0+IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSlcbiAgICBkb25lO1xuICAgIHdhaXQgKClcbiAgOztcblxuICBsZXQgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIG9uZV9tZXNzYWdlXG5cbiAgKCogTm90IGVub3VnaCBkYXRhLCB3ZSBuZWVkIHRvIGFjY3VtdWxhdGUgKilcbiAgbGV0IGJ1ZiA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiAoQmlnc3RyaW5nLm9mX3N0cmluZyBcIlwiKVxuXG4gIGxldCB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlID1cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIChCaWdzdHJpbmcubGVuZ3RoIG9uZV9tZXNzYWdlKTtcbiAgICB3cml0ZSBidWY7XG4gICAgd3JpdGUgb25lX21lc3NhZ2VfcDE7XG4gICAgd3JpdGUgb25lX21lc3NhZ2VfcDJcbiAgOztcblxuICAoKiBUb28gbXVjaCBkYXRhLCB3ZSBuZWVkIHRvIGxvb3Agd2l0aGluZyB0aGUgc2FtZSBiYXRjaCAqKVxuICBsZXQgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIHR3b19tZXNzYWdlc1xuXG4gIGxldCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGUgPVxuICAgIGZvciBpID0gMCB0byBCaWdzdHJpbmcubGVuZ3RoIHR3b19tZXNzYWdlcyAtIDEgZG9cbiAgICAgIHdyaXRlIChCaWdzdHJpbmcuc3ViIHR3b19tZXNzYWdlcyB+cG9zOmkgfmxlbjoxKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8xX21zZ18xX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8xX21zZ18xX2NodW5rXG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfMV9jaHVua1wiID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZlxuICA7O1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzFfbXNnXzNfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzNfY2h1bmtcbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfMV9jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfMV9jaHVua1xuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ19vbmVfYnl0ZVwiID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rXG5cbiAgbGV0JWJlbmNoIFwibXVsdGlcIiA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKTtcbiAgICAgIHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZlxuICA7O1xuZW5kXG5cbmxldCViZW5jaF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9zdHJpbmdcIiA9IChtb2R1bGUgQmVuY2hfcmVhZGVyIChTdHJpbmdfcGlwZV9yZWFkZXIpKVxubGV0JWJlbmNoX21vZHVsZSBcIlRlc3RfcmVhZGVyX2JpZ3N0cmluZ1wiID0gKG1vZHVsZSBCZW5jaF9yZWFkZXIgKEJpZ3N0cmluZ19waXBlX3JlYWRlcikpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbmluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbFxuXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFZlcnNpb25lZF9ycGMuQ29ubmVjdGlvbl93aXRoX21lbnUudFxuXG4gICAgbGV0IHJwY19jb25uZWN0aW9uID0gVmVyc2lvbmVkX3JwYy5Db25uZWN0aW9uX3dpdGhfbWVudS5jb25uZWN0aW9uXG4gICAgbGV0IGNsb3NlIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZSAocnBjX2Nvbm5lY3Rpb24gdClcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBScGMuQ29ubmVjdGlvbi5pc19jbG9zZWQgKHJwY19jb25uZWN0aW9uIHQpXG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCAocnBjX2Nvbm5lY3Rpb24gdClcbiAgZW5kKVxuXG5tb2R1bGUgUnBjID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gUnBjLkNvbm5lY3Rpb24udFxuXG4gICAgbGV0IGNsb3NlIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZSB0XG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gUnBjLkNvbm5lY3Rpb24uaXNfY2xvc2VkIHRcbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIHRcbiAgZW5kKVxuIiwibW9kdWxlIFJwYyA9IFJwY1xubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBWZXJzaW9uZWRfcnBjXG5tb2R1bGUgUGVyc2lzdGVudF9jb25uZWN0aW9uID0gUGVyc2lzdGVudF9jb25uZWN0aW9uXG5tb2R1bGUgUGlwZV90cmFuc3BvcnQgPSBQaXBlX3RyYW5zcG9ydFxubW9kdWxlIFJwY19lcnJvciA9IFJwY19lcnJvclxubW9kdWxlIFJwY19yZXN1bHQgPSBScGNfcmVzdWx0XG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgUnBjID0gUnBjLlN0YWJsZVxuZW5kXG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG4gIG1vZHVsZSBQcm90b2NvbCA9IFByb3RvY29sXG4gIG1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcblxuICBsZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IENvbm5lY3Rpb24uZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dFxuZW5kXG4iLCJvcGVuIFN0cmluZ1xuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cblxuKCogTm90IHRhaWwgcmVjdXJzaXZlIGZvciBcInBlcmZvcm1hbmNlXCIsIHBsZWFzZSBjaG9vc2UgbG93IHZhbHVlcyBmb3JcbiAgIFttYXhdLiBUaGUgaWRlYSBpcyB0aGF0IG1heCBpcyBhbHdheXMgc21hbGwgYmVjYXVzZSBpdCdzIGhhcmRcbiAgIGNvZGUgKilcbmxldCBzcGxpdF9jaGFyX2JvdW5kZWQgc3RyIH5vbiB+bWF4ID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtzdHJdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3Agb2Zmc2V0IHRva2VucyA9XG4gICAgICBpZiB0b2tlbnMgPSBtYXggLSAxXG4gICAgICB0aGVuIFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgICBlbHNlXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICAgIFwiXCI6Oihsb29wIChvZmZzZXQgKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHRva2VuID0gU3RyaW5nLnN1YiBzdHIgb2Zmc2V0IChpbmRleCAtIG9mZnNldCkgaW5cbiAgICAgICAgICAgIHRva2VuOjoobG9vcCAoaW5kZXggKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgaW4gbG9vcCAwIDBcblxubGV0IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHN0ciB+b24gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5sZXQgb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxubGV0IGZ1bGxfc3BsaXQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHNlcCA9IG9mX2NoYXIgb24gaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoc2VwOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wIChzZXA6OnRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICAgIHRoZW4gKHN1YiBzdHIgMCAob2Zmc2V0ICsgMSkpOjphY2NcbiAgICAgICAgZWxzZSBhY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxuKCogY29weWluZyBjb3JlJ3MgY29udmVudGlvbiBmb3IgU3RyaW5nLnNwbGl0IGJ1dCB3aXRoIGFuIG9wdGlvbmFsIG1heFxuICAgYXJndW1lbnQgKilcbmxldCBzcGxpdCA/bWF4IHMgfm9uID1cbiAgbWF0Y2ggbWF4IHdpdGhcbiAgfCBOb25lIC0+IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHMgfm9uXG4gIHwgU29tZSBtYXggLT4gICAgICAgICAgICAgICAgICgqIGFzc2VydCAobWF4IDwgMTAwKTsgKilcbiAgICBzcGxpdF9jaGFyX2JvdW5kZWQgcyB+b24gfm1heFxuXG5sZXQgcmluZGV4X2Zyb21fb24gcyB+b2Zmc2V0IH5vbiA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIG9uIHMuW2ldIHRoZW4gaVxuICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gIGluIGxvb3Agb2Zmc2V0XG5cbmxldCB0cmltX2xlZnRfc3ViIHMgfnBvcyB+bGVuIH5jaGFycyA9XG4gIGxldCBzdGFydF9wb3MgPVxuICAgIGxldCBmaW5hbCA9IHBvcyArIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsYXN0X2NoYXIgaSA9XG4gICAgICBpZiBpID0gZmluYWwgdGhlbiBsYXN0X2NoYXJcbiAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGNoYXJzIHMuW2ldIHRoZW4gbG9vcCAoaSArIDEpIChpICsgMSlcbiAgICAgIGVsc2UgbGFzdF9jaGFyXG4gICAgaW4gbG9vcCBwb3MgcG9zXG4gIGluXG4gIGxldCBuZXdfbGVuID0gbGVuIC0gKHN0YXJ0X3BvcyAtIHBvcykgaW5cbiAgU3RyaW5nLnN1YiBzIHN0YXJ0X3BvcyBuZXdfbGVuXG5cbmxldCBzcGxpdF90cmltX2xlZnQgc3RyIH5vbiB+dHJpbSA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tX29uIHN0ciB+b2Zmc2V0IH5vbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoXCJcIjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gdHJpbV9sZWZ0X3N1YiBzdHIgfnBvczooaW5kZXggKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfmxlbjoob2Zmc2V0IC0gaW5kZXgpIH5jaGFyczp0cmltIGluXG4gICAgICAgICAgbG9vcCAodG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHRyaW1fbGVmdF9zdWIgc3RyIH5wb3M6MCB+bGVuOihvZmZzZXQgKyAxKSB+Y2hhcnM6dHJpbSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5leGNlcHRpb24gRm91bmRfaW50IG9mIGludFxuXG5sZXQgZmlyc3RfY2hhcl9uZSBzIGMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIHMuWzBdIDw+IGNcblxubGV0IHRyaW1fbGVmdCBzID1cbiAgaWYgZmlyc3RfY2hhcl9uZSBzICcgJyB0aGVuIHNcbiAgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICB0cnlcbiAgICAgIGZvciBpPTAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiAnICcgdGhlbiByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgICBkb25lO1xuICAgICAgXCJcIlxuICAgIHdpdGggRm91bmRfaW50IG5vbl9zcGFjZSAtPlxuICAgICAgc3ViIHMgbm9uX3NwYWNlIChsZW4gLSBub25fc3BhY2UpXG5cbmxldCBzdWJzdHJfZXEgPyhzdGFydD0wKSBzIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcGF0dGVybiAtIDEgZG9cbiAgICAgIGlmIHMuW2kgKyBzdGFydF0gPD4gcGF0dGVybi5baV0gdGhlbiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggXyAtPiBmYWxzZVxuXG5sZXQgZmluZF9mcm9tID8oc3RhcnQ9MCkgc3RyIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSBzdGFydCB0byAoU3RyaW5nLmxlbmd0aCBzdHIpIC0gKFN0cmluZy5sZW5ndGggcGF0dGVybikgZG9cbiAgICAgIGlmIHN1YnN0cl9lcSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gdGhlblxuICAgICAgICByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgZG9uZTtcbiAgICBOb25lXG4gIHdpdGhcbiAgfCBGb3VuZF9pbnQgaSAtPiBTb21lIGlcbiAgfCAgXyAtPiBOb25lXG5cbmxldCBmaW5kX21pbiBsIH5mID1cbiAgbGV0IHJlYyBsb29wIHggZnggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gU29tZSAoeCwgZngpXG4gICAgfCB4Jzo6eHMgLT5cbiAgICAgIGxldCBmeCcgPSBmIHgnIGluXG4gICAgICBpZiBmeCcgPCBmeCB0aGVuIGxvb3AgeCcgZngnIHhzXG4gICAgICBlbHNlIGxvb3AgeCBmeCB4c1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeDo6eHMgLT4gbG9vcCB4IChmIHgpIHhzXG5cbmxldCByZXBsYWNlX2FsbCBzdHIgfnBhdHRlcm4gfndpdGhfID1cbiAgbGV0IChzbGVuLCBwbGVuKSA9IFN0cmluZy4obGVuZ3RoIHN0ciwgbGVuZ3RoIHBhdHRlcm4pIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIG1hdGNoIGZpbmRfZnJvbSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgfCBTb21lIGogLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHdpdGhfO1xuICAgICAgbG9vcCAoaiArIHBsZW4pXG4gIGluIGxvb3AgMFxuXG5leGNlcHRpb24gRm91bmRfcmVwbGFjZSBvZiBpbnQgKiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IHJlcGxhY2VfYWxsX2Fzc29jIHN0ciB0YmwgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gc2xlbiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICBlbHNlXG4gICAgICBsZXQgciA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGxldCBlID1cbiAgICAgICAgICAgIGZpbmRfbWluIHRibCB+ZjooZnVuIChwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAgIC0+IG1heF9pbnRcbiAgICAgICAgICAgICAgfCBTb21lIGogd2hlbiBqID0gaSAtPiByYWlzZSAoRm91bmRfcmVwbGFjZSAoaiwgcGF0dGVybiwgd2l0aF8pKVxuICAgICAgICAgICAgICB8IFNvbWUgaiAtPiBmb3VuZCA6PSB0cnVlOyBqKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgKChwYXR0ZXJuLCB3aXRoXyksIGopIHdoZW4gIWZvdW5kIC0+IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKVxuICAgICAgICAgIHwgU29tZSBfIC0+IE5vbmVcbiAgICAgICAgd2l0aCBGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICBpblxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICAgIHwgU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICAgIGxvb3AgKGogKyBTdHJpbmcubGVuZ3RoIHBhdHRlcm4pXG4gIGluIGxvb3AgMFxuXG5sZXQgaXRlcmkgZiBsID1cbiAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IHg6OnhzIC0+IChmIGkgeCk7IGxvb3AgKHN1Y2MgaSkgeHNcbiAgaW4gbG9vcCAwIGxcblxubGV0IG9mX2xpc3QgeHMgPVxuICBsZXQgbCA9IExpc3QubGVuZ3RoIHhzIGluXG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgaXRlcmkgKGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHMgaSBjKSB4cztcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPSAtMSB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIGxvb3AgKHMuW2ldIDo6IGFjYykgKHByZWQgaSlcbiAgaW4gbG9vcCBbXSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcblxubGV0IG9mX2FycmF5IGEgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBieXRlcyBpIGEuKGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnl0ZXNcblxubGV0IHRvX2FycmF5IHMgPSBBcnJheS5pbml0IChTdHJpbmcubGVuZ3RoIHMpIChTdHJpbmcuZ2V0IHMpXG5cbigqIHJpcHBlZCBvZmYgZnJvbSBvbmUgb2YgZGJ1ZW56bGkncyBsaWJzICopXG5sZXQgY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQuY3V0OiBlbXB0eSBzZXBhcmF0b3JcIiBlbHNlXG4gICAgbGV0IHNfbWF4ID0gbGVuZ3RoIHMgLSAxIGluXG4gICAgaWYgc19tYXggPCAwIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgayA9IHJlZiAwIGluXG4gICAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIGVuZCB3aXRoIFtpXSB0cnlpbmcgdG8gbWF0Y2ggdGhlXG4gICAgICAgICBmaXJzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2UgdmVyaWZ5IHRoYXRcbiAgICAgICAgIHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdLiBJZiBpdCBkb2Vzbid0IG1hdGNoIHdlXG4gICAgICAgICBjb250aW51ZSB0byBsb29rIGZvciBbb25dIHdpdGggW2ldLiBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlXG4gICAgICAgICBsb29wIGFuZCBleHRyYWN0IGEgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGVcbiAgICAgICAgIHBvc2l0aW9uIGJlZm9yZSB0aGUgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvblxuICAgICAgICAgYWZ0ZXIgdGhlIFtvbl0gd2UgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gSWYgW2ldIGlzIHN1Y2ggdGhhdCBub1xuICAgICAgICAgc2VwYXJhdG9yIGNhbiBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoXG4gICAgICAgICBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSArIHNlcF9tYXggPD0gc19tYXgpIGRvXG4gICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmUgcyAoIWkgKyAhaykgaXNcbiAgICAgICAgICAgICBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIDAgdGhlbiBpbmNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgayA6PSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFrIDw9IHNlcF9tYXggJiYgdW5zYWZlX2dldCBzICghaSArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBpbmNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrIDw9IHNlcF9tYXggdGhlbiAoKiBubyBtYXRjaCAqKSBpbmNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyBzZXBfbWF4ICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgcmN1dCBzIH5vbiA9XG4gIGxldCBzZXBfbWF4ID0gbGVuZ3RoIG9uIC0gMSBpblxuICBpZiBzZXBfbWF4IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nZXh0LnJjdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIHNfbWF4IGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgZW5kIG9mIFtzXSB0byB0aGUgYmVnaW5uaW5nIHdpdGggW2ldIHRyeWluZyB0b1xuICAgICAgICAgbWF0Y2ggdGhlIGxhc3QgY2hhcmFjdGVyIG9mIFtvbl0gaW4gW3NdLiBJZiB0aGlzIG1hdGNoZXMsIHdlXG4gICAgICAgICB2ZXJpZnkgdGhhdCB0aGUgd2hvbGUgW29uXSBpcyBtYXRjaGVkIHVzaW5nIFtrXSAod2UgZG8gdGhhdFxuICAgICAgICAgYmFja3dhcmRzKS4gIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2UgY29udGludWUgdG8gbG9vayBmb3IgW29uXVxuICAgICAgICAgd2l0aCBbaV0uICBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlIGxvb3AgYW5kIGV4dHJhY3QgYVxuICAgICAgICAgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGUgcG9zaXRpb24gYmVmb3JlIHRoZVxuICAgICAgICAgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgW29uXSB3ZVxuICAgICAgICAgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gIElmIFtpXSBpcyBzdWNoIHRoYXQgbm8gc2VwYXJhdG9yIGNhblxuICAgICAgICAgYmUgZm91bmQgd2UgZXhpdCB0aGUgbG9vcCBhbmQgcmV0dXJuIHRoZSBubyBtYXRjaCBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSA+PSBzZXBfbWF4KSBkb1xuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIHNlcF9tYXggdGhlbiBkZWNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICBzIChzZXBfc3RhcnQgKyAhaykgaXMgZ3VhcmFudGVlZCBieSBsb29wIGludmFyaWFudC4gKilcbiAgICAgICAgICAgIGxldCBzZXBfc3RhcnQgPSAhaSAtIHNlcF9tYXggaW5cbiAgICAgICAgICAgIGsgOj0gc2VwX21heCAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPj0gMCAmJiB1bnNhZmVfZ2V0IHMgKHNlcF9zdGFydCArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBkZWNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrID49IDAgdGhlbiAoKiBubyBtYXRjaCAqKSBkZWNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIHNlcF9tYXggLSAxIGluXG4gICAgICAgIGxldCByaWdodF9zdGFydCA9ICFpICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgbGV0IHByZWZpeF9sID0gU3RyaW5nLmxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHN0cmluZ19sID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIHByZWZpeF9sID4gc3RyaW5nX2wgdGhlbiBOb25lXG4gIGVsc2VcbiAgICB0cnlcbiAgICAgIGZvciBpID0gMCB0byBwcmVmaXhfbCAtIDEgZG9cbiAgICAgICAgaWYgcy5baV0gPD4gcHJlZml4LltpXSB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBkb25lO1xuICAgICAgU29tZSAoU3RyaW5nLnN1YiBzIHByZWZpeF9sIChzdHJpbmdfbCAtIHByZWZpeF9sKSlcbiAgICB3aXRoIF8gLT4gTm9uZVxuXG5sZXQgZHJvcCBzIG4gPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBuID49IGxcbiAgdGhlbiBcIlwiXG4gIGVsc2UgU3RyaW5nLnN1YiBzIG4gKGwgLSBuKVxuXG5sZXQgdGFrZSBzIG4gPVxuICBpZiBuID49IFN0cmluZy5sZW5ndGggc1xuICB0aGVuIHNcbiAgZWxzZSBTdHJpbmcuc3ViIHMgMCBuXG4iLCJ0eXBlIGJpZ3N0cmluZyA9XG4gIChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbnR5cGUgdCA9IGJpZ3N0cmluZ1xuXG5sZXQgY3JlYXRlIHNpemUgPSBCaWdhcnJheS4oQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IHNpemUpXG5sZXQgZW1wdHkgICAgICAgPSBjcmVhdGUgMFxuXG5tb2R1bGUgQkExID0gQmlnYXJyYXkuQXJyYXkxXG5cbmxldCBsZW5ndGggdCA9IEJBMS5kaW0gdFxuXG5leHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGNoYXIgICAgICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0ICAgICAgICAgICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3RvX2J5dGVzICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IEJ5dGVzLnQgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXCIgICAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgOiBCeXRlcy50IC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXAgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcF9zdHJpbmcgOiB0IC0+IGludCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY2hyIDogdCAtPiBpbnQgLT4gY2hhciAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jaHJcIiBbQEBub2FsbG9jXVxuXG5sZXQgc3ViIHQgfm9mZiB+bGVuID1cbiAgQkExLnN1YiB0IG9mZiBsZW5cblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzIG9wIGJ1ZmZlcl9sZW4gb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgYnVmZmVyX2xlbjogJWQsIG9mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmZmVyX2xlbiBvZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHNfYmxpdCBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgc3JjX2xlbjogJWQsIHNyY19vZmY6ICVkLCBkc3RfbGVuOiAlZCwgZHN0X29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3Agc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19tZW1jbXAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWYxX2xlbjogJWQsIGJ1ZjFfb2ZmOiAlZCwgYnVmMl9sZW46ICVkLCBidWYyX29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG4oKiBBIG5vdGUgb24gYm91bmRzIGNoZWNraW5nLlxuICpcbiAqIFRoZSBjb2RlIHNob3VsZCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGJsaXQgZG9lc24ndFxuICogcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dCBidWZmZXI6XG4gKlxuICogICB7W29mZiArIGxlbiA8PSBidWZmZXJfbGVuXX1cbiAqXG4gKiBIb3dldmVyLCB0aGlzIG1heSBsZWFkIHRvIGFuIGludGVnZXIgb3ZlcmZsb3cgZm9yIGxhcmdlIHZhbHVlcyBvZiBbb2ZmXSxcbiAqIGUuZy4sIFttYXhfaW50XSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgY29tcGFyaXNvbiB0byByZXR1cm4gW3RydWVdIHdoZW4gaXRcbiAqIHNob3VsZCByZWFsbHkgcmV0dXJuIFtmYWxzZV0uXG4gKlxuICogQW4gZXF1aXZhbGVudCBjb21wYXJpc29uIHRoYXQgZG9lcyBub3QgcnVuIGludG8gdGhpcyBpbnRlZ2VyIG92ZXJmbG93XG4gKiBwcm9ibGVtIGlzOlxuICpcbiAqICAge1tidWZmZXJfbGVuIC0gb2ZmID0+IGxlbl19XG4gKlxuICogVGhpcyBpcyBjaGVja2luZyB0aGF0IHRoZSBpbnB1dCBidWZmZXIsIGxlc3MgdGhlIG9mZnNldCwgaXMgc3VmZmljaWVudGx5XG4gKiBsb25nIHRvIHBlcmZvcm0gdGhlIGJsaXQuIFNpbmNlIHRoZSBleHByZXNzaW9uIGlzIHN1YnRyYWN0aW5nIFtvZmZdIHJhdGhlclxuICogdGhhbiBhZGRpbmcgaXQsIGl0IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhlIG92ZXJmbG93IHRoYXQgdGhlIHByZXZpb3VzXG4gKiBpbmVxdWFsaXR5IGRpZC4gQXMgbG9uZyBhcyB0aGVyZSBpcyBhIGNoZWNrIHRvIGVuc3VyZSB0aGF0IFtvZmZdIGlzIG5vdFxuICogbmVnYXRpdmUsIGl0IHdvbid0IHVuZGVyZmxvdyBlaXRoZXIuICopXG5cbmxldCBjb3B5IHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwiY29weVwiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgdCB+c3JjX29mZjpvZmYgZHN0IH5kc3Rfb2ZmOjAgfmxlbjtcbiAgZHN0XG47O1xuXG5sZXQgc3Vic3RyaW5nIHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwic3Vic3RyaW5nXCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgdCB+c3JjX29mZjpvZmYgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOjAgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IG9mX3N0cmluZyB+b2ZmIH5sZW4gcyA9XG4gIGxldCBidWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJvZl9zdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgYlxuOztcblxubGV0IGJsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0IHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9zdHJpbmcgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBCeXRlcy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBCeXRlcy5sZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgbWVtY21wIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW4gPVxuICBsZXQgYnVmMV9sZW4gPSBsZW5ndGggYnVmMSBpblxuICBsZXQgYnVmMl9sZW4gPSBsZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMl9vZmYgPCAwIHx8IGJ1ZjJfbGVuIC0gYnVmMl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IFN0cmluZy5sZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMV9vZmYgPCAwIHx8IGJ1ZjFfbGVuIC0gYnVmMV9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXBfc3RyaW5nIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW5cbjs7XG5cbmxldCBtZW1jaHIgYnVmIGJ1Zl9vZmYgY2hyIGxlbiA9XG4gIGxldCBidWZfbGVuID0gbGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICBpZiBidWZfb2ZmIDwgMCB8fCBidWZfbGVuIC0gYnVmX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwibWVtY2hyXCIgYnVmX2xlbiBidWZfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNociBidWYgYnVmX29mZiBjaHIgbGVuXG5cbigqIFNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NFwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0XCJcblxubW9kdWxlIFN3YXAgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50MzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50NjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF8zMiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIChic3dhcF9pbnQ2NCBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQzMiAoY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX2dldF82NCBicyBvZmYpXG5cbiAgbGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkIHggb2ZmID1cbiAgICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5lbmRcblxubGV0IHNldF9pbnQxNl9sZSwgc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG5cbmxldCBzZXRfaW50MzJfbGUsIHNldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMlxuXG5sZXQgc2V0X2ludDY0X2xlLCBzZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjRcblxubGV0IGdldF9pbnQxNl9sZSwgZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG5cbmxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAgeCBvZmYgPVxuICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiAgICAgIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgICwgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwXG4gIGVsc2UgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwLCBTd2FwLmdldF9pbnQxNl9zaWduX2V4dGVuZGVkXG5cbmxldCBnZXRfaW50MzJfbGUsIGdldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMlxuXG5sZXQgZ2V0X2ludDY0X2xlLCBnZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjRcblxuKCogVW5zYWZlIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5cbm1vZHVsZSBVU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiAoYnN3YXAxNiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCBicyBvZmYgPVxuICAgIGJzd2FwX2ludDY0IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZilcbmVuZFxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSwgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTZcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUsIHVuc2FmZV9zZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyXG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlLCB1bnNhZmVfc2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NFxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSwgdW5zYWZlX2dldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9sZSB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgeCBvZmYgPVxuICAoKHVuc2FmZV9nZXRfaW50MTZfYmUgeCBvZmYgKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUsIHVuc2FmZV9nZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlLCB1bnNhZmVfZ2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NFxuIiwidHlwZSAnYSBzdGF0ZSA9XG4gIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICB8IEZhaWwgICAgb2YgaW50ICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuYW5kICdhIHBhcnRpYWwgPVxuICB7IGNvbW1pdHRlZCA6IGludFxuICA7IGNvbnRpbnVlICA6IEJpZ3N0cmluZ2FmLnQgLT4gb2ZmOmludCAtPiBsZW46aW50IC0+IE1vcmUudCAtPiAnYSBzdGF0ZSB9XG5cblxubGV0IHN0YXRlX3RvX29wdGlvbiB4ID0gbWF0Y2ggeCB3aXRoXG4gIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgfCBGYWlsIF8gICAgIC0+IE5vbmVcbiAgfCBQYXJ0aWFsIF8gIC0+IE5vbmVcblxubGV0IGZhaWxfdG9fc3RyaW5nIG1hcmtzIGVyciA9XG4gIFN0cmluZy5jb25jYXQgXCIgPiBcIiBtYXJrcyBeIFwiOiBcIiBeIGVyclxuXG5sZXQgc3RhdGVfdG9fcmVzdWx0IHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gIHwgRmFpbChfLCBtYXJrcywgZXJyKSAtPiBFcnJvciAoZmFpbF90b19zdHJpbmcgbWFya3MgZXJyKVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA6IGludFxuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICAgICAgICA6IGludFxuICA7IG9mZiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGxlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICA6IEJpZ3N0cmluZ2FmLnRcbiAgfVxuXG5sZXQgY3JlYXRlIGJ1ZmZlciB+b2ZmIH5sZW4gfmNvbW1pdHRlZF9ieXRlcyA9XG4gIHsgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgPSBjb21taXR0ZWRfYnl0ZXNcbiAgOyBvZmZcbiAgOyBsZW5cbiAgOyBidWZmZXIgfVxuXG5sZXQgbGVuZ3RoICAgICAgICAgICAgICAgICB0ID0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzICsgdC5sZW5cbmxldCBjbGllbnRfY29tbWl0dGVkX2J5dGVzIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXNcblxubGV0IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0ID0gdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5sZXQgYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgIHQgPSBjb21taXR0ZWRfYnl0ZXNfZGlzY3JlcGFuY3kgdFxuXG5sZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHQgPSB0LmxlbiAtIGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHRcblxubGV0IGludmFyaWFudCB0ID1cbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgKyBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IGxlbmd0aCB0KTtcbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgLSBjbGllbnRfY29tbWl0dGVkX2J5dGVzICAgdCA9IGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHQpO1xuOztcblxubGV0IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgPVxuICB0Lm9mZiArIHBvcyAtIHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgYXBwbHkgdCBwb3MgbGVuIH5mID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgZiB0LmJ1ZmZlciB+b2ZmIH5sZW5cblxubGV0IHVuc2FmZV9nZXRfY2hhciB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCBjb3VudF93aGlsZSB0IHBvcyB+ZiA9XG4gIGxldCBidWZmZXIgPSB0LmJ1ZmZlciBpblxuICBsZXQgb2ZmICAgID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBsZXQgaSAgICAgID0gcmVmIG9mZiBpblxuICBsZXQgbGltaXQgID0gdC5vZmYgKyB0LmxlbiBpblxuICB3aGlsZSAhaSA8IGxpbWl0ICYmIGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICAhaSAtIG9mZlxuOztcblxubGV0IGNvbW1pdCB0IHBvcyA9XG4gIHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA8LSBwb3Ncbjs7XG4iLCJtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFBhcnRpYWwgb2YgJ2EgcGFydGlhbFxuICAgIHwgTGF6eSAgICBvZiAnYSB0IExhenkudFxuICAgIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG4gIGFuZCAnYSBwYXJ0aWFsID1cbiAgICB7IGNvbW1pdHRlZCA6IGludFxuICAgIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHQgfVxuXG5lbmRcbnR5cGUgJ2Egd2l0aF9zdGF0ZSA9IElucHV0LnQgLT4gIGludCAtPiBNb3JlLnQgLT4gJ2FcblxudHlwZSAnYSBmYWlsdXJlID0gKHN0cmluZyBsaXN0IC0+IHN0cmluZyAtPiAnYSBTdGF0ZS50KSB3aXRoX3N0YXRlXG50eXBlICgnYSwgJ3IpIHN1Y2Nlc3MgPSAoJ2EgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZVxuXG50eXBlICdhIHQgPVxuICB7IHJ1biA6ICdyLiAoJ3IgZmFpbHVyZSAtPiAoJ2EsICdyKSBzdWNjZXNzIC0+ICdyIFN0YXRlLnQpIHdpdGhfc3RhdGUgfVxuXG5sZXQgZmFpbF9rICAgIGlucHV0IHBvcyBfIG1hcmtzIG1zZyA9XG4gIFN0YXRlLkZhaWwocG9zIC0gSW5wdXQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyBpbnB1dCwgbWFya3MsIG1zZylcbmxldCBzdWNjZWVkX2sgaW5wdXQgcG9zIF8gICAgICAgdiAgID1cbiAgU3RhdGUuRG9uZShwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCB2KVxuXG5sZXQgcmVjIHRvX2V4cG9ydGVkX3N0YXRlID0gZnVuY3Rpb25cbiAgfCBTdGF0ZS5QYXJ0aWFsIHtjb21taXR0ZWQ7Y29udGludWV9IC0+XG4gICAgIEV4cG9ydGVkX3N0YXRlLlBhcnRpYWxcbiAgICAgICB7IGNvbW1pdHRlZFxuICAgICAgIDsgY29udGludWUgPVxuICAgICAgICAgICBmdW4gYnMgfm9mZiB+bGVuIG1vcmUgLT5cbiAgICAgICAgICAgdG9fZXhwb3J0ZWRfc3RhdGUgKGNvbnRpbnVlIGJzIH5vZmYgfmxlbiBtb3JlKX1cbiAgfCBTdGF0ZS5Eb25lIChpLHgpIC0+IEV4cG9ydGVkX3N0YXRlLkRvbmUgKGkseClcbiAgfCBTdGF0ZS5GYWlsIChpLCBzbCwgcykgLT4gRXhwb3J0ZWRfc3RhdGUuRmFpbCAoaSwgc2wsIHMpXG4gIHwgU3RhdGUuTGF6eSB4IC0+IHRvX2V4cG9ydGVkX3N0YXRlIChMYXp5LmZvcmNlIHgpXG5cbmxldCBwYXJzZSBwID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIEJpZ3N0cmluZ2FmLmVtcHR5IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjowIGluXG4gIHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIEluY29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaylcblxubGV0IHBhcnNlX2JpZ3N0cmluZyBwIGlucHV0ID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGlucHV0KSBpblxuICBFeHBvcnRlZF9zdGF0ZS5zdGF0ZV90b19yZXN1bHQgKHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIENvbXBsZXRlIGZhaWxfayBzdWNjZWVkX2spKVxuXG5tb2R1bGUgTW9uYWQgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiB2ID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIHZcbiAgICB9XG5cbiAgbGV0IGZhaWwgbXNnID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIF9zdWNjIC0+XG4gICAgICBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIG1zZ1xuICAgIH1cblxuICBsZXQgKD4+PSkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gKGYgdikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKD4+fCkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoZiB2KSBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwkPikgZiBtID1cbiAgICBtID4+fCBmXG5cbiAgbGV0ICg8Kj4pIGYgbSA9XG4gICAgKCogZiA+Pj0gZnVuIGYgLT4gbSA+PnwgZiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIGYgPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbSA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgKGYgbSkgaW5cbiAgICAgICAgbS5ydW4gaW5wdXQwIHBvczAgbW9yZTAgZmFpbCBzdWNjMVxuICAgICAgaW5cbiAgICAgIGYucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzAgfVxuXG4gIGxldCBsaWZ0IGYgbSA9XG4gICAgZiA8JD4gbVxuXG4gIGxldCBsaWZ0MiBmIG0xIG0yID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9IHN1Y2MgaW5wdXQyIHBvczIgbW9yZTIgKGYgbTEgbTIpIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCBsaWZ0MyBmIG0xIG0yIG0zID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9XG4gICAgICAgICAgbGV0IHN1Y2MzIGlucHV0MyBwb3MzIG1vcmUzIG0zID1cbiAgICAgICAgICAgIHN1Y2MgaW5wdXQzIHBvczMgbW9yZTMgKGYgbTEgbTIgbTMpIGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgbGV0IHN1Y2M0IGlucHV0NCBwb3M0IG1vcmU0IG00ID1cbiAgICAgICAgICAgICAgc3VjYyBpbnB1dDQgcG9zNCBtb3JlNCAoZiBtMSBtMiBtMyBtNCkgaW5cbiAgICAgICAgICAgIG00LnJ1biBpbnB1dDMgcG9zMyBtb3JlMyBmYWlsIHN1Y2M0IGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0ICggKj4pIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIF8gLT4gYiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIF8gPSBiLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg8KiApIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geCAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIHggPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgXyA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgeCBpblxuICAgICAgICBiLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5lbmRcblxubW9kdWxlIENob2ljZSA9IHN0cnVjdFxuICBsZXQgKDw/PikgcCBtYXJrID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyBtYXJrcyBtc2cgPVxuICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIChtYXJrOjptYXJrcykgbXNnIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsJyBzdWNjXG4gICAgfVxuXG4gIGxldCAoPHw+KSBwIHEgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgICgqIFRoZSBvbmx5IHR3byBjb25zdHJ1Y3RvcnMgdGhhdCBpbnRyb2R1Y2UgbmV3IGZhaWx1cmUgY29udGludWF0aW9ucyBhcmVcbiAgICAgICAgICogWzw/Pl0gYW5kIFs8fD5dLiBJZiB0aGUgaW5pdGlhbCBpbnB1dCBwb3NpdGlvbiBpcyBsZXNzIHRoYW4gdGhlIGxlbmd0aFxuICAgICAgICAgKiBvZiB0aGUgY29tbWl0dGVkIGlucHV0LCB0aGVuIGNhbGxpbmcgdGhlIGZhaWx1cmUgY29udGludWF0aW9uIHdpbGxcbiAgICAgICAgICogaGF2ZSB0aGUgZWZmZWN0IG9mIHVud2luZGluZyBhbGwgY2hvaWNlcyBhbmQgY29sbGVjdGluZyBtYXJrcyBhbG9uZ1xuICAgICAgICAgKiB0aGUgd2F5LiAqKVxuICAgICAgICBpZiBwb3MgPCBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0JyB0aGVuXG4gICAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlIG1hcmtzIG1zZ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcS5ydW4gaW5wdXQnIHBvcyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5lbmRcblxubW9kdWxlIE1vbmFkX3VzZV9mb3JfZGVidWdnaW5nID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSBNb25hZC5yZXR1cm5cbiAgbGV0IGZhaWwgICA9IE1vbmFkLmZhaWxcbiAgbGV0ICg+Pj0pICA9IE1vbmFkLig+Pj0pXG5cbiAgbGV0ICg+PnwpIG0gZiA9IG0gPj49IGZ1biB4IC0+IHJldHVybiAoZiB4KVxuXG4gIGxldCAoPCQ+KSBmIG0gPSBtID4+fCBmXG4gIGxldCAoPCo+KSBmIG0gPSBmID4+PSBmdW4gZiAtPiBtID4+fCBmXG5cbiAgbGV0IGxpZnQgID0gKD4+fClcbiAgbGV0IGxpZnQyIGYgbTEgbTIgICAgICAgPSBmIDwkPiBtMSA8Kj4gbTJcbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgICAgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zXG4gIGxldCBsaWZ0NCBmIG0xIG0yIG0zIG00ID0gZiA8JD4gbTEgPCo+IG0yIDwqPiBtMyA8Kj4gbTRcblxuICBsZXQgKCAqPikgYSBiID0gYSA+Pj0gZnVuIF8gLT4gYlxuICBsZXQgKDwqICkgYSBiID0gYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geFxuZW5kXG4iLCJ0eXBlIHQgPVxuICB7IG11dGFibGUgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG11dGFibGUgb2ZmIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnQgfVxuXG5sZXQgb2ZfYmlnc3RyaW5nIH5vZmYgfmxlbiBidWYgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYnVmID49IGxlbiAtIG9mZik7XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbmxldCBjcmVhdGUgbGVuID1cbiAgb2ZfYmlnc3RyaW5nIH5vZmY6MCB+bGVuOjAgKEJpZ3N0cmluZ2FmLmNyZWF0ZSBsZW4pXG5cbmxldCB3cml0YWJsZV9zcGFjZSB0ID1cbiAgQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIC0gdC5sZW5cblxubGV0IHRyYWlsaW5nX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSAodC5vZmYgKyB0LmxlbilcblxubGV0IGNvbXByZXNzIHQgPVxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCB0LmJ1ZiB+c3JjX29mZjp0Lm9mZiB0LmJ1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQub2ZmIDwtIDBcblxubGV0IGdyb3cgdCB0b19jb3B5ID1cbiAgbGV0IG9sZF9sZW4gPSBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICBsZXQgc3BhY2UgPSB3cml0YWJsZV9zcGFjZSB0IGluXG4gIHdoaWxlIHNwYWNlICsgIW5ld19sZW4gLSBvbGRfbGVuIDwgdG9fY29weSBkb1xuICAgIG5ld19sZW4gOj0gKDMgKiAhbmV3X2xlbikgLyAyXG4gIGRvbmU7XG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nYWYuY3JlYXRlICFuZXdfbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIG5ld19idWYgfmRzdF9vZmY6MCB+bGVuOnQubGVuO1xuICB0LmJ1ZiA8LSBuZXdfYnVmO1xuICB0Lm9mZiA8LSAwXG5cbmxldCBlbnN1cmUgdCB0b19jb3B5ID1cbiAgaWYgdHJhaWxpbmdfc3BhY2UgdCA8IHRvX2NvcHkgdGhlblxuICAgIGlmIHdyaXRhYmxlX3NwYWNlIHQgPj0gdG9fY29weVxuICAgIHRoZW4gY29tcHJlc3MgdFxuICAgIGVsc2UgZ3JvdyB0IHRvX2NvcHlcblxubGV0IHdyaXRlX3BvcyB0ID1cbiAgdC5vZmYgKyB0LmxlblxuXG5sZXQgZmVlZF9zdHJpbmcgdCB+b2ZmIH5sZW4gc3RyID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzdHIgPj0gbGVuIC0gb2ZmKTtcbiAgZW5zdXJlIHQgbGVuO1xuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzdHIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfYmlnc3RyaW5nIHQgfm9mZiB+bGVuIGIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYiA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IGIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfaW5wdXQgdCA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyAgICBzIC0+IGZlZWRfc3RyaW5nICAgIHQgfm9mZjowIH5sZW46KFN0cmluZyAgICAgLmxlbmd0aCBzKSBzXG4gIHwgYEJpZ3N0cmluZyBiIC0+IGZlZWRfYmlnc3RyaW5nIHQgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBiKSBiXG5cbmxldCBzaGlmdCB0IG4gPVxuICBhc3NlcnQgKHQubGVuID49IG4pO1xuICB0Lm9mZiA8LSB0Lm9mZiArIG47XG4gIHQubGVuIDwtIHQubGVuIC0gblxuXG5sZXQgZm9yX3JlYWRpbmcgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBCaWdzdHJpbmdhZi5zdWIgfm9mZiB+bGVuIGJ1ZlxuXG5tb2R1bGUgVW5jb25zdW1lZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuZW5kXG5cbmxldCB1bmNvbnN1bWVkID8oc2hpZnQ9MCkgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBhc3NlcnQgKGxlbiA+PSBzaGlmdCk7XG4gIHsgVW5jb25zdW1lZC5idWY7IG9mZiA9IG9mZiArIHNoaWZ0OyBsZW4gPSBsZW4gLSBzaGlmdCB9XG5cbmxldCBvZl91bmNvbnN1bWVkIHsgVW5jb25zdW1lZC5idWY7IG9mZjsgbGVuIH0gPVxuICB7IGJ1Zjsgb2ZmOyBsZW4gfVxuXG50eXBlIHVuY29uc3VtZWQgPSBVbmNvbnN1bWVkLnQgPVxuICB7IGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgOyBvZmYgOiBpbnRcbiAgOyBsZW4gOiBpbnQgfVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE2IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG5tb2R1bGUgQmlnYXJyYXkgPSBzdHJ1Y3RcbiAgKCogRG8gbm90IGFjY2VzcyBCaWdhcnJheSBvcGVyYXRpb25zIGRpcmVjdGx5LiBJZiBhbnl0aGluZydzIG5lZWRlZCwgcmVmZXIgdG9cbiAgICogdGhlIGludGVybmFsIEJpZ3N0cmluZyBtb2R1bGUuICopXG5lbmRcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmdhZi50XG5cblxubW9kdWxlIFVuYnVmZmVyZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJzZXJcblxuICBpbmNsdWRlIEV4cG9ydGVkX3N0YXRlXG5cbiAgdHlwZSBtb3JlID0gTW9yZS50ID1cbiAgICB8IENvbXBsZXRlXG4gICAgfCBJbmNvbXBsZXRlXG5lbmRcblxuaW5jbHVkZSBVbmJ1ZmZlcmVkXG5pbmNsdWRlIFBhcnNlci5Nb25hZFxuaW5jbHVkZSBQYXJzZXIuQ2hvaWNlXG5cbm1vZHVsZSBCdWZmZXJlZCA9IHN0cnVjdFxuICB0eXBlIHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCA9XG4gICAgeyBidWYgOiBiaWdzdHJpbmdcbiAgICA7IG9mZiA6IGludFxuICAgIDsgbGVuIDogaW50IH1cblxuICB0eXBlIGlucHV0ID1cbiAgICBbIGBCaWdzdHJpbmcgb2YgYmlnc3RyaW5nXG4gICAgfCBgU3RyaW5nICAgIG9mIHN0cmluZyBdXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBQYXJ0aWFsIG9mIChbIGlucHV0IHwgYEVvZiBdIC0+ICdhIHN0YXRlKVxuICAgIHwgRG9uZSAgICBvZiB1bmNvbnN1bWVkICogJ2FcbiAgICB8IEZhaWwgICAgb2YgdW5jb25zdW1lZCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgbGV0IGZyb21fdW5idWZmZXJlZF9zdGF0ZSB+ZiBidWZmZXJpbmcgPSBmdW5jdGlvblxuICAgIHwgVW5idWZmZXJlZC5QYXJ0aWFsIHAgICAgICAgICAtPiBQYXJ0aWFsIChmIHApXG4gICAgfCBVbmJ1ZmZlcmVkLkRvbmUoY29uc3VtZWQsIHYpIC0+XG4gICAgICBsZXQgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkIH5zaGlmdDpjb25zdW1lZCBidWZmZXJpbmcgaW5cbiAgICAgIERvbmUodW5jb25zdW1lZCwgdilcbiAgICB8IFVuYnVmZmVyZWQuRmFpbChjb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKVxuXG4gIGxldCBwYXJzZSA/KGluaXRpYWxfYnVmZmVyX3NpemU9MHgxMDAwKSBwID1cbiAgICBpZiBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMSB0aGVuXG4gICAgICBmYWlsd2l0aCBcInBhcnNlOiBpbnZhbGlkIGFyZ3VtZW50LCBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMVwiO1xuICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcuY3JlYXRlIGluaXRpYWxfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgcmVjIGYgcCBpbnB1dCA9XG4gICAgICBCdWZmZXJpbmcuc2hpZnQgYnVmZmVyaW5nIHAuY29tbWl0dGVkO1xuICAgICAgbGV0IG1vcmUgOiBNb3JlLnQgPVxuICAgICAgICBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgIHwgYEVvZiAgICAgICAgICAgIC0+IENvbXBsZXRlXG4gICAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICAgIEluY29tcGxldGVcbiAgICAgIGluXG4gICAgICBsZXQgZm9yX3JlYWRpbmcgPSBCdWZmZXJpbmcuZm9yX3JlYWRpbmcgYnVmZmVyaW5nIGluXG4gICAgICBwLmNvbnRpbnVlIGZvcl9yZWFkaW5nIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggZm9yX3JlYWRpbmcpIG1vcmVcbiAgICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcbiAgICBpblxuICAgIFVuYnVmZmVyZWQucGFyc2UgcFxuICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcblxuICBsZXQgZmVlZCBzdGF0ZSBpbnB1dCA9XG4gICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgIHwgUGFydGlhbCBrIC0+IGsgaW5wdXRcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIEZhaWwoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCBtYXJrcywgbXNnKVxuICAgICAgZW5kXG4gICAgfCBEb25lKHVuY29uc3VtZWQsIHYpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IGBFb2YgICAtPiBzdGF0ZVxuICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5vZl91bmNvbnN1bWVkIHVuY29uc3VtZWQgaW5cbiAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICBEb25lKEJ1ZmZlcmluZy51bmNvbnN1bWVkIGJ1ZmZlcmluZywgdilcbiAgICAgIGVuZFxuXG4gIGxldCBzdGF0ZV90b19vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuICAgIHwgRmFpbCBfICAgICAtPiBOb25lXG5cbiAgbGV0IHN0YXRlX3RvX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gICAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgICB8IEZhaWwoXywgbWFya3MsIG1zZykgLT4gRXJyb3IgKFVuYnVmZmVyZWQuZmFpbF90b19zdHJpbmcgbWFya3MgbXNnKVxuXG4gIGxldCBzdGF0ZV90b191bmNvbnN1bWVkID0gZnVuY3Rpb25cbiAgICB8IERvbmUodW5jb25zdW1lZCwgXylcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgXywgXykgLT4gU29tZSB1bmNvbnN1bWVkXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgICAgIC0+IE5vbmVcblxuZW5kXG5cbigqKiBCRUdJTjogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgcmVjIHByb21wdCBpbnB1dCBwb3MgZmFpbCBzdWNjID1cbiAgKCogW3Byb21wdF0gc2hvdWxkIG9ubHkgY2FsbCBbc3VjY10gaWYgaXQgaGFzIHJlY2VpdmVkIG1vcmUgaW5wdXQuIElmIHRoZXJlXG4gICAqIGlzIG5vIGNoYW5jZSB0aGF0IHRoZSBpbnB1dCB3aWxsIGdyb3csIGkuZS4sIFttb3JlID0gQ29tcGxldGVdLCB0aGVuXG4gICAqIFtwcm9tcHRdIHNob3VsZCBjYWxsIFtmYWlsXS4gT3RoZXJ3aXNlIChpbiB0aGUgY2FzZSB3aGVyZSB0aGUgaW5wdXRcbiAgICogaGFzbid0IGdyb3duIGJ1dCBbbW9yZSA9IEluY29tcGxldGVdIGp1c3QgcHJvbXB0IGFnYWluLiAqKVxuICBsZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIGlucHV0IGluXG4gIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgaW5wdXQgaW5cbiAgKCogVGhlIGNvbnRpbnVhdGlvbiBzaG91bGQgbm90IGhvbGQgYW55IHJlZmVyZW5jZXMgdG8gaW5wdXQgYWJvdmUuICopXG4gIGxldCBjb250aW51ZSBpbnB1dCB+b2ZmIH5sZW4gbW9yZSA9XG4gICAgaWYgbGVuIDwgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicHJvbXB0OiBpbnB1dCBzaHJ1bmshXCI7XG4gICAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzOnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5cbiAgICBpZiBsZW4gPSBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBNb3JlLkNvbXBsZXRlXG4gICAgICB8IEluY29tcGxldGUgLT4gcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlXG4gIGluXG4gIFN0YXRlLlBhcnRpYWwgeyBjb21taXR0ZWQgPSBJbnB1dC5ieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCBpbnB1dDsgY29udGludWUgfVxuXG5sZXQgZGVtYW5kX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICB8IENvbXBsZXRlICAgLT4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIlxuICAgIHwgSW5jb21wbGV0ZSAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID0gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIiBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbnN1cmVfc3VzcGVuZGVkIG4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjID1cbiAgbGV0IHJlYyBnbyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYycgLT5cbiAgICAgIGlmIHBvcycgKyBuIDw9IElucHV0Lmxlbmd0aCBpbnB1dCcgdGhlblxuICAgICAgICBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgZWxzZVxuICAgICAgICAoZGVtYW5kX2lucHV0ICo+IGdvKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYydcbiAgICB9XG4gIGluXG4gIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcblxubGV0IHVuc2FmZV9hcHBseSBsZW4gfmYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mKVxuICB9XG5cbmxldCB1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIG1hdGNoIElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIGVcbiAgICB8IE9rICAgIHggLT4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIHhcbiAgfVxuXG5sZXQgZW5zdXJlIG4gcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0XG4gICAgdGhlbiBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPSBwLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxuKCoqIEVORDogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgYXRfZW5kX29mX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgXyBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgZmFsc2VcbiAgICBlbHNlIG1hdGNoIG1vcmUgd2l0aFxuICAgIHwgQ29tcGxldGUgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSB0cnVlXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIGZhbHNlXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIHRydWUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgZW5kX29mX2lucHV0ID1cbiAgYXRfZW5kX29mX2lucHV0XG4gID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAgLT4gcmV0dXJuICgpXG4gICAgfCBmYWxzZSAtPiBmYWlsIFwiZW5kX29mX2lucHV0XCJcblxubGV0IGFkdmFuY2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImFkdmFuY2VcIlxuICBlbHNlXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IChwb3MgKyBuKSBtb3JlICgpIH1cbiAgICBpblxuICAgIGVuc3VyZSBuIHBcblxubGV0IHBvcyA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSBwb3MgfVxuXG5sZXQgYXZhaWxhYmxlID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0Lmxlbmd0aCBpbnB1dCAtIHBvcylcbiAgfVxuXG5sZXQgY29tbWl0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIElucHV0LmNvbW1pdCBpbnB1dCBwb3M7XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoKSB9XG5cbigqIERvIG5vdCB1c2UgdGhpcyBpZiBbcF0gY29udGFpbnMgYSBbY29tbWl0XS4gKilcbmxldCB1bnNhZmVfbG9va2FoZWFkIHAgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3VjYycgaW5wdXQnIF8gbW9yZScgdiA9IHN1Y2MgaW5wdXQnIHBvcyBtb3JlJyB2IGluXG4gICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBwZWVrX2NoYXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpKVxuICAgIGVsc2UgaWYgbW9yZSA9IENvbXBsZXRlIHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJykpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIE5vbmUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG4oKiBUaGlzIHBhcnNlciBpcyB0b28gaW1wb3J0YW50IHRvIG5vdCBiZSBvcHRpbWl6ZWQuIERvIGEgY3VzdG9tIGpvYi4gKilcbmxldCByZWMgcGVla19jaGFyX2ZhaWwgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgcGVla19jaGFyX2ZhaWwucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgc2F0aXNmeSBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQgcG9zIG1vcmUgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQnIHBvcycgaW5cbiAgICAgICAgaWYgZiBjXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCcgKHBvcycgKyAxKSBtb3JlJyBjXG4gICAgICAgIGVsc2UgUHJpbnRmLmtzcHJpbnRmIChmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdKSBcInNhdGlzZnk6ICVDXCIgY1xuICAgICAgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgMSBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IGNoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgPSBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcImNoYXIgJUNcIiBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IG5vdF9jaGFyIGMgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYycgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBjIDw+IGMnXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgYydcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJub3QgY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2NoYXIgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgaW50OCBpID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpIGluXG4gICAgICBpZiBjID0gaSBsYW5kIDB4ZmZcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiaW50OCAlZFwiIGkpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X3VpbnQ4ID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoQ2hhci5jb2RlIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2ludDggPVxuICAoKiBodHRwczovL2dyYXBoaWNzLnN0YW5mb3JkLmVkdS9+c2VhbmRlci9iaXRoYWNrcy5odG1sI1ZhcmlhYmxlU2lnbkV4dGVuZFJpc2t5ICopXG4gIGxldCBzID0gU3lzLmludF9zaXplIC0gOCBpblxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlICgoQ2hhci5jb2RlIGMgbHNsIHMpIGFzciBzKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHNraXAgZiA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIGYgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKClcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcInNraXBcIiB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHJlYyBjb3VudF93aGlsZSB+aW5pdCB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCAocG9zICsgaW5pdCkgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICBsZXQgaW5pdCcgICAgICAgPSBpbml0ICsgbGVuIGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgcG9zICsgaW5pdCcgPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBpbml0JykgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDppbml0JyB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgaW5pdCcpIG1vcmUnIChJbnB1dC5hcHBseSBpbnB1dCcgcG9zJyBpbml0JyB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHJlYyBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IGxlbiAgICAgICAgID0gSW5wdXQuY291bnRfd2hpbGUgaW5wdXQgcG9zIH5mIGluXG4gICAgbGV0IGlucHV0X2xlbiAgID0gSW5wdXQubGVuZ3RoIGlucHV0IGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgbGVuIDwgMVxuICAgIHRoZW5cbiAgICAgIGlmIHBvcyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcImNvdW50X3doaWxlMVwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgICAgKGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgICAgaW5cbiAgICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICAgIGVsc2UgaWYgcG9zICsgbGVuIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDpsZW4gfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyAocG9zJyArIGxlbikgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGxlbiB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHN0cmluZ18gZiBzID1cbiAgKCogWFhYKHNlbGlvcG91KTogSW5lZmZpY2llbnQuIENvdWxkIGNoZWNrIHByZWZpeCBlcXVhbGl0eSB0byBzaG9ydC1jaXJjdWl0XG4gICAqIHRoZSBpby4gKilcbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBlbnN1cmUgIGxlbiAodW5zYWZlX2FwcGx5X29wdCBsZW4gfmY6KGZ1biBidWZmZXIgfm9mZiB+bGVuIC0+XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIHdoaWxlICFpIDwgbGVuICYmIENoYXIuZXF1YWwgKGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyIChvZmYgKyAhaSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGYgKFN0cmluZy51bnNhZmVfZ2V0IHMgIWkpKVxuICAgIGRvXG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGlmIGxlbiA9ICFpXG4gICAgdGhlbiBPayAoQmlnc3RyaW5nYWYuc3Vic3RyaW5nIGJ1ZmZlciB+b2ZmIH5sZW4pXG4gICAgZWxzZSBFcnJvciBcInN0cmluZ1wiKSlcblxubGV0IHN0cmluZyBzICAgID0gc3RyaW5nXyAoZnVuIHggLT4geCkgc1xubGV0IHN0cmluZ19jaSBzID0gc3RyaW5nXyBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBza2lwX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcblxubGV0IHRha2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcInRha2U6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5zdWJzdHJpbmcpXG5cbmxldCB0YWtlX2JpZ3N0cmluZyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZV9iaWdzdHJpbmc6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5jb3B5KVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCB0YWtlX2JpZ3N0cmluZ190aWxsIGYgPVxuICB0YWtlX2JpZ3N0cmluZ193aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgcGVla19zdHJpbmcgbiA9XG4gIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbilcblxubGV0IHRha2Vfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgdGFrZV93aGlsZTEgZiA9XG4gIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3RpbGwgZiA9XG4gIHRha2Vfd2hpbGUgKGZ1biBjIC0+IG5vdCAoZiBjKSlcblxubGV0IGNob2ljZSA/KGZhaWx1cmVfbXNnPVwibm8gbW9yZSBjaG9pY2VzXCIpIHBzID1cbiAgTGlzdC5mb2xkX3JpZ2h0ICg8fD4pIHBzIChmYWlsIGZhaWx1cmVfbXNnKVxuXG5sZXQgZml4X2RpcmVjdCBmID1cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyB9XG4gIGluXG4gIHJcblxubGV0IGZpeF9sYXp5IH5tYXhfc3RlcHMgZiA9XG4gIGxldCBzdGVwcyA9IHJlZiBtYXhfc3RlcHMgaW5cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBkZWNyIHN0ZXBzO1xuICAgIGlmICFzdGVwcyA8IDBcbiAgICB0aGVuIChcbiAgICAgIHN0ZXBzIDo9IG1heF9zdGVwcztcbiAgICAgIFN0YXRlLkxhenkgKGxhenkgKChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjKSkpXG4gICAgZWxzZVxuICAgICAgKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICAgICAgICB9XG4gIGluXG4gIHJcblxubGV0IGZpeCA9IG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IE5hdGl2ZSAtPiBmaXhfZGlyZWN0XG4gIHwgQnl0ZWNvZGUgLT4gZml4X2RpcmVjdFxuICB8IE90aGVyIF8gLT4gZnVuIGYgLT4gZml4X2xhenkgfm1heF9zdGVwczoyMCBmXG5cbmxldCBvcHRpb24geCBwID1cbiAgcCA8fD4gcmV0dXJuIHhcblxubGV0IGNvbnMgeCB4cyA9IHggOjogeHNcblxubGV0IHJlYyBsaXN0IHBzID1cbiAgbWF0Y2ggcHMgd2l0aFxuICB8IFtdICAgIC0+IHJldHVybiBbXVxuICB8IHA6OnBzIC0+IGxpZnQyIGNvbnMgcCAobGlzdCBwcylcblxubGV0IGNvdW50IG4gcCA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImNvdW50OiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCAwIC0+IHJldHVybiBbXVxuICAgICAgfCBuIC0+IGxpZnQyIGNvbnMgcCAobG9vcCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBuXG5cbmxldCBtYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgKGxpZnQyIGNvbnMgcCBtKSA8fD4gcmV0dXJuIFtdKVxuXG5sZXQgbWFueTEgcCA9XG4gIGxpZnQyIGNvbnMgcCAobWFueSBwKVxuXG5sZXQgbWFueV90aWxsIHAgdCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAodCAqPiByZXR1cm4gW10pIDx8PiAobGlmdDIgY29ucyBwIG0pKVxuXG5sZXQgc2VwX2J5MSBzIHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgbGlmdDIgY29ucyBwICgocyAqPiBtKSA8fD4gcmV0dXJuIFtdKSlcblxubGV0IHNlcF9ieSBzIHAgPVxuICAobGlmdDIgY29ucyBwICgocyAqPiBzZXBfYnkxIHMgcCkgPHw+IHJldHVybiBbXSkpIDx8PiByZXR1cm4gW11cblxubGV0IHNraXBfbWFueSBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgICAgKChwID4+fCBmdW4gXyAtPiB0cnVlKSA8fD4gcmV0dXJuIGZhbHNlKSA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBtXG4gICAgICB8IGZhbHNlIC0+IHJldHVybiAoKVxuICAgIClcblxubGV0IHNraXBfbWFueTEgcCA9XG4gIHAgKj4gc2tpcF9tYW55IHBcblxubGV0IGVuZF9vZl9saW5lID1cbiAgKGNoYXIgJ1xcbicgKj4gcmV0dXJuICgpKSA8fD4gKHN0cmluZyBcIlxcclxcblwiICo+IHJldHVybiAoKSkgPD8+IFwiZW5kX29mX2xpbmVcIlxuXG5sZXQgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3RhdGUgPSByZWYgc3RhdGUgaW5cbiAgICBsZXQgcGFyc2VyID1cbiAgICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6KGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGYgIXN0YXRlIGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHN0YXRlJyAtPiBzdGF0ZSA6PSBzdGF0ZSc7IHRydWUpXG4gICAgICB+d2l0aF9idWZmZXJcbiAgICAgID4+fCBmdW4geCAtPiB4LCAhc3RhdGVcbiAgICBpblxuICAgIHBhcnNlci5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIH1cblxubGV0IHNjYW4gc3RhdGUgZiA9XG4gIHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgc2Nhbl9zdGF0ZSBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6KGZ1biBfIH5vZmY6XyB+bGVuOl8gLT4gKCkpXG4gID4+fCBmdW4gKCgpLCBzdGF0ZSkgLT4gc3RhdGVcblxubGV0IHNjYW5fc3RyaW5nIHN0YXRlIGYgPVxuICBzY2FuIHN0YXRlIGYgPj58IGZzdFxuXG5sZXQgY29uc3VtZV93aXRoIHAgZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGFydCA9IHBvcyBpblxuICAgIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCAgaW5cbiAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9XG4gICAgICBpZiBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDw+IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnXG4gICAgICB0aGVuIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb25zdW1lZDogcGFyc2VyIGNvbW1pdHRlZFwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9IHBvcycgLSBzdGFydCBpblxuICAgICAgICBsZXQgY29uc3VtZWQgPSBJbnB1dC5hcHBseSBpbnB1dCcgc3RhcnQgbGVuIH5mIGluXG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgY29uc3VtZWQpXG4gICAgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gIH1cblxubGV0IGNvbnN1bWVkICAgICAgICAgICBwID0gY29uc3VtZV93aXRoIHAgQmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5sZXQgY29uc3VtZWRfYmlnc3RyaW5nIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCBib3RoIGEgYiA9IGxpZnQyIChmdW4gYSBiIC0+IGEsIGIpIGEgYlxubGV0IG1hcCB0IH5mID0gdCA+PnwgZlxubGV0IGJpbmQgdCB+ZiA9IHQgPj49IGZcbmxldCBtYXAyIGEgYiB+ZiA9IGxpZnQyIGYgYSBiXG5sZXQgbWFwMyBhIGIgYyB+ZiA9IGxpZnQzIGYgYSBiIGNcbmxldCBtYXA0IGEgYiBjIGQgfmYgPSBsaWZ0NCBmIGEgYiBjIGRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuICAgIGxldCBtYXAyID0gbWFwMlxuICAgIGxldCBtYXAzID0gbWFwM1xuICAgIGxldCBtYXA0ID0gbWFwNFxuICBlbmRcbmVuZFxuXG5sZXQgKCBsZXQrICkgPSAoID4+fCApXG5sZXQgKCBsZXQqICkgPSAoID4+PSApXG5sZXQgKCBhbmQrICkgPSBib3RoXG5cbm1vZHVsZSBCRSA9IHN0cnVjdFxuICAoKiBYWFgoc2VsaW9wb3UpOiBUaGUgcGF0dGVybiBpbiBib3RoIHRoaXMgbW9kdWxlIGFuZCBbTEVdIGFyZSBhIGNvbXByb21pc2VcbiAgICogYmV0d2VlbiBlZmZpY2llbmN5IGFuZCBjb2RlIHJldXNlLiBCeSBpbmxpbmluZyBbZW5zdXJlXSB5b3UgY2FuIHJlY292ZXJcbiAgICogYWJvdXQgMiBuYW5vc2Vjb25kcyBvbiBhdmVyYWdlLiBUaGF0IG1heSBhZGQgdXAgaW4gY2VydGFpbiBhcHBsaWNhdGlvbnMuXG4gICAqXG4gICAqIFRoaXMgcGF0dGVybiBkb2VzIG5vdCBhbGxvY2F0ZSBpbiB0aGUgZmFzdCAoc3VjY2VzcykgcGF0aC5cbiAgICogKilcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9iZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2JlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgYW55X3VpbnQxNiA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MTYgID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQzMiAgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDY0ID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9mbG9hdCA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50MzIuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKSlcblxuICBsZXQgYW55X2RvdWJsZSA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50NjQuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSBicyBvZmYpKSlcbmVuZFxuXG5tb2R1bGUgTEUgPSBzdHJ1Y3RcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9sZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2xlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHRha2UgbiBmID1cbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmYpXG5cbiAgbGV0IHBlZWsgbiBmID1cbiAgICB1bnNhZmVfbG9va2FoZWFkICh0YWtlIG4gZilcblxuICBsZXQgdGFrZV93aGlsZSBjaGVjayBmID1cbiAgICBjb3VudF93aGlsZSB+aW5pdDowIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2Vfd2hpbGUxIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlMSB+ZjpjaGVjayB+d2l0aF9idWZmZXI6ZlxuXG4gIGxldCB0YWtlX3RpbGwgY2hlY2sgZiA9XG4gICAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChjaGVjayBjKSkgZlxuZW5kXG5cbm1vZHVsZSBDb25zdW1lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBQcmVmaXhcbiAgICB8IEFsbFxuZW5kXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBicyA9XG4gIGxldCBwID1cbiAgICBtYXRjaCAoY29uc3VtZSA6IENvbnN1bWUudCkgd2l0aFxuICAgIHwgUHJlZml4IC0+IHBcbiAgICB8IEFsbCAtPiBwIDwqIGVuZF9vZl9pbnB1dFxuICBpblxuICBVbmJ1ZmZlcmVkLnBhcnNlX2JpZ3N0cmluZyBwIGJzXG5cbmxldCBwYXJzZV9zdHJpbmcgfmNvbnN1bWUgcCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnMgID0gQmlnc3RyaW5nYWYuY3JlYXRlIGxlbiBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOjAgYnMgfmRzdF9vZmY6MCB+bGVuO1xuICBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBic1xuIiwiKCpcbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IEFuaWwgTWFkaGF2YXBlZGR5IDxhbmlsQHJlY29pbC5vcmc+XG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBEYXZpZCBTaGVldHMgPHNoZWV0c0BhbHVtLm1pdC5lZHU+XG4gKlxuICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4gKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4gKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAqXG4gKilcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxudHlwZSBjb21wb25lbnQgPSBbXG4gIHwgYFNjaGVtZVxuICB8IGBBdXRob3JpdHlcbiAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcbiAgfCBgSG9zdCAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBQYXRoXG4gIHwgYFF1ZXJ5XG4gIHwgYFF1ZXJ5X2tleVxuICB8IGBRdWVyeV92YWx1ZVxuICB8IGBGcmFnbWVudFxuICB8IGBHZW5lcmljXG4gIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKSAoKiAoY29tcG9uZW50ICogc2FmZSBjaGFycyAqIHVuc2FmZSBjaGFycykgKilcbl1cblxudHlwZSBwY3RfZW5jb2RlciA9IHtcbiAgICBzY2hlbWU6IGNvbXBvbmVudDtcbiAgICB1c2VyaW5mbzogY29tcG9uZW50O1xuICAgIGhvc3Q6IGNvbXBvbmVudDtcbiAgICBwYXRoOiBjb21wb25lbnQ7XG4gICAgcXVlcnlfa2V5OiBjb21wb25lbnQ7XG4gICAgcXVlcnlfdmFsdWU6IGNvbXBvbmVudDtcbiAgICBmcmFnbWVudDogY29tcG9uZW50O1xuICB9XG5cbmxldCByZWMgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiA9IGZ1bmN0aW9uXG4gIHwgbGFzdDo6W10gLT4gZm4gYnVmIGxhc3RcbiAgfCBlbDo6cmVzdCAtPlxuICAgIGZuIGJ1ZiBlbDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc2VwO1xuICAgIGl0ZXJfY29uY2F0IGZuIHNlcCBidWYgcmVzdFxuICB8IFtdIC0+ICgpXG5cbmxldCByZXZfaW50ZXJqZWN0IGUgbHN0ID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdICAtPiBhY2NcbiAgICB8IHg6OnhzIC0+IGF1eCAoeDo6ZTo6YWNjKSB4c1xuICBpbiBtYXRjaCBsc3Qgd2l0aFxuICB8IFtdICAtPiBbXVxuICB8IGg6OnQgLT4gYXV4IFtoXSB0XG5cbmxldCBjb21wYXJlX29wdCBjIHQgdCcgPSBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgICBOb25lICAgLT4gMFxuICB8IFNvbWUgXywgTm9uZSAgIC0+IDFcbiAgfCBOb25lLCAgIFNvbWUgXyAtPiAtMVxuICB8IFNvbWUgYSwgU29tZSBiIC0+IGMgYSBiXG5cbmxldCByZWMgY29tcGFyZV9saXN0IGYgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBbXSwgICAgW10gICAgLT4gIDBcbiAgfCBfOjpfLCAgW10gICAgLT4gIDFcbiAgfCBbXSwgICAgXzo6XyAgLT4gLTFcbiAgfCB4Ojp4cywgeTo6eXMgLT5cbiAgICBtYXRjaCBmIHggeSB3aXRoIDAgLT4gY29tcGFyZV9saXN0IGYgeHMgeXMgfCBjIC0+IGNcblxuKCoqIFNhZmUgY2hhcmFjdGVycyB0aGF0IGFyZSBhbHdheXMgYWxsb3dlZCBpbiBhIFVSSVxuICAqIFVuZm9ydHVuYXRlbHksIHRoaXMgdmFyaWVzIGRlcGVuZGluZyBvbiB3aGljaCBiaXQgb2YgdGhlIFVSSVxuICAqIGlzIGJlaW5nIHBhcnNlZCwgc28gdGhlcmUgYXJlIG11bHRpcGxlIHZhcmlhbnRzIChhbmQgdGhpc1xuICAqIHNldCBpcyBwcm9iYWJseSBub3QgZXhoYXVzdGl2ZS4gVE9ETzogY2hlY2suXG4qKVxudHlwZSBzYWZlX2NoYXJzID0gYm9vbCBhcnJheVxuXG5tb2R1bGUgdHlwZSBTY2hlbWUgPSBzaWdcbiAgdmFsIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA6IGNvbXBvbmVudCAtPiBzYWZlX2NoYXJzXG4gIHZhbCBub3JtYWxpemVfaG9zdCA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGNhbm9uaWNhbGl6ZV9wb3J0IDogaW50IG9wdGlvbiAtPiBpbnQgb3B0aW9uXG4gIHZhbCBjYW5vbmljYWxpemVfcGF0aCA6IHN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0XG5lbmRcblxubW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgbGV0IHN1Yl9kZWxpbXMgYSA9XG4gICAgbGV0IHN1YmQgPSBcIiEkJicoKSorLDs9XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdWJkIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc3ViZC5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFycyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkubWFrZSAyNTYgZmFsc2UgaW5cbiAgICBsZXQgYWx3YXlzX3NhZmUgPVxuICAgICAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OV8uLX5cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIGFsd2F5c19zYWZlIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgYWx3YXlzX3NhZmUuW2ldIGluXG4gICAgICBhLihjKSA8LSB0cnVlXG4gICAgZG9uZTtcbiAgICBhXG5cbiAgbGV0IHBjaGFyIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBzdWJfZGVsaW1zIChBcnJheS5jb3B5IHNhZmVfY2hhcnMpIGluXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJ0AnKSA8LSB0cnVlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3Jfc2NoZW1lIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnMgaW5cbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSB0cnVlO1xuICAgIGFcblxuICAoKiogU2FmZSBjaGFyYWN0ZXJzIGZvciB0aGUgcGF0aCBjb21wb25lbnQgb2YgYSBVUkkgKilcbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3BhdGggOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgcGNoYXIpIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeSA6IHNhZmVfY2hhcnMgPVxuICAgICgqIFRPRE86IFdoYXQgYWJvdXQge1wiIVwiLFwiJFwiLFwiLFwifT8gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vYXZzbS9vY2FtbC11cmkvY29tbWl0LzFlZjNmMWRmYjQxYmRiNGYzM2YyMjNmZmUxNmU2MmEzMzk3NTY2MWEjZGlmZi03NDBmMmRlNTNjOWViMzZlOTY3MGRkZmJkYjliYTkxNFIxNzE+ICopXG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHBjaGFyIGluXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJz8nKSA8LSB0cnVlO1xuICAgICgqICcmJyBpcyBzYWZlIGJ1dCB3ZSBzaG91bGQgZW5jb2RlIGxpdGVyYWxzIHRvIGF2b2lkIGFtYmlndWl0eVxuICAgICAgIHdpdGggdGhlIGFscmVhZHkgcGFyc2VkIHFzIHBhcmFtcyAqKVxuICAgIGEuKENoYXIuY29kZSAnJicpIDwtIGZhbHNlO1xuICAgICgqICc7JyBpcyBzYWZlIGJ1dCBzb21lIHN5c3RlbXMgdHJlYXQgaXQgbGlrZSAnJicuICopXG4gICAgYS4oQ2hhci5jb2RlICc7JykgPC0gZmFsc2U7XG4gICAgYS4oQ2hhci5jb2RlICcrJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXkgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJz0nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IGluXG4gICAgYS4oQ2hhci5jb2RlICcsJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9mcmFnbWVudCA6IHNhZmVfY2hhcnMgPSBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSB1c2VyaW5mbyBzdWJjb21wb25lbnQgb2YgYSBVUkkuXG4gICAgICBUT0RPOiB0aGlzIG5lZWRzIG1vcmUgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhZGRlZCAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfdXNlcmluZm8gOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgICgqIGRlbGltaXRlcjogbm9uLXNlZ21lbnQgZGVsaW1pdGluZyB1c2VzIHNob3VsZCBiZSBwY3QgZW5jb2RlZCAqKVxuICAgIGEuKENoYXIuY29kZSAnOicpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgcmVjIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA9IGZ1bmN0aW9uXG4gICAgfCBgUGF0aCAtPiBzYWZlX2NoYXJzX2Zvcl9wYXRoXG4gICAgfCBgVXNlcmluZm8gLT4gc2FmZV9jaGFyc19mb3JfdXNlcmluZm9cbiAgICB8IGBRdWVyeSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuICAgIHwgYFF1ZXJ5X2tleSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXlcbiAgICB8IGBRdWVyeV92YWx1ZSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV92YWx1ZVxuICAgIHwgYEZyYWdtZW50IC0+IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50XG4gICAgfCBgU2NoZW1lIC0+IHNhZmVfY2hhcnNfZm9yX3NjaGVtZVxuICAgIHwgYEN1c3RvbSAoKGNvbXBvbmVudCA6IGNvbXBvbmVudCksIHNhZmUsIHVuc2FmZSkgLT5cbiAgICAgICBsZXQgc2FmZV9jaGFycyA9IEFycmF5LmNvcHkgKHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQpIGluXG4gICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSB0cnVlXG4gICAgICAgZG9uZTtcbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB1bnNhZmUgLSAxIGRvXG4gICAgICAgICBsZXQgYyA9IENoYXIuY29kZSB1bnNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSBmYWxzZVxuICAgICAgIGRvbmU7XG4gICAgICAgc2FmZV9jaGFyc1xuICAgIHwgYEdlbmVyaWNcbiAgICB8IF8gLT4gc2FmZV9jaGFyc1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBoc28gPSBoc29cblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgcG9ydCA9IHBvcnRcbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoIHBhdGggPSBwYXRoXG5lbmRcblxubW9kdWxlIEh0dHAgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBoc1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgODAgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuXG4gIGxldCBjYW5vbmljYWxpemVfcGF0aCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXCIvXCJdXG4gICAgfCB4ICAtPiB4XG5lbmRcblxubW9kdWxlIEh0dHBzIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgSHR0cFxuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgNDQzIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIHhcbmVuZFxuXG5tb2R1bGUgRmlsZSA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPVxuICAgIGxldCBocyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaHMgaW5cbiAgICBpZiBocz1cImxvY2FsaG9zdFwiIHRoZW4gXCJcIiBlbHNlIGhzXG5lbmRcblxubW9kdWxlIFVybiA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuZW5kXG5cbmxldCBtb2R1bGVfb2Zfc2NoZW1lID0gZnVuY3Rpb25cbiAgfCBTb21lIHMgLT4gYmVnaW4gbWF0Y2ggU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzIHdpdGhcbiAgICAgIHwgXCJodHRwXCIgLT4gKG1vZHVsZSBIdHRwIDogU2NoZW1lKVxuICAgICAgfCBcImh0dHBzXCIgIC0+IChtb2R1bGUgSHR0cHMgOiBTY2hlbWUpXG4gICAgICB8IFwiZmlsZVwiIC0+IChtb2R1bGUgRmlsZSA6IFNjaGVtZSlcbiAgICAgIHwgXCJ1cm5cIiAgLT4gKG1vZHVsZSBVcm4gOiBTY2hlbWUpXG4gICAgICB8IF8gLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuICAgIGVuZFxuICB8IE5vbmUgLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuXG4oKiogUG9ydGlvbnMgb2YgdGhlIFVSTCBtdXN0IGJlIGNvbnZlcnRlZCB0by1hbmQtZnJvbSBwZXJjZW50LWVuY29kaW5nXG4gICogYW5kIHRoaXMgcmVhbGx5LCByZWFsbHkgc2hvdWxkbid0IGJlIG1peGVkIHVwLiBTbyB0aGlzIFBjdCBtb2R1bGVcbiAgKiBkZWZpbmVzIGFic3RyYWN0IFBjdC5lbmNvZGVkIGFuZCBQY3QuZGVjb2RlZCB0eXBlcyB3aGljaCBzZXRzIHRoZVxuICAqIHN0YXRlIG9mIHRoZSB1bmRlcmx5aW5nIHN0cmluZy4gIFRoZXJlIGFyZSBmdW5jdGlvbnMgdG8gXCJjYXN0XCIgdG9cbiAgKiBhbmQgZnJvbSB0aGVzZSBhbmQgbm9ybWFsIHN0cmluZ3MsIGFuZCB0aGlzIHByb21vdGVzIGEgYml0IG9mXG4gICogaW50ZXJuYWwgc2FmZXR5LiAgVGhlc2UgdHlwZXMgYXJlIG5vdCBleHBvc2VkIHRvIHRoZSBleHRlcm5hbFxuICAqIGludGVyZmFjZSwgYXMgY2FzdGluZyB0by1hbmQtZnJvbSBpcyBxdWl0ZSBhIGJpdCBvZiBoYXNzbGUgYW5kXG4gICogcHJvYmFibHkgbm90IGEgbG90IG9mIHVzZSB0byB0aGUgYXZlcmFnZSBjb25zdW1lciBvZiB0aGlzIGxpYnJhcnlcbiopXG5tb2R1bGUgUGN0IDogc2lnXG4gIHR5cGUgZW5jb2RlZFxuICB0eXBlIGRlY29kZWRcblxuICB2YWwgZW5jb2RlIDogP3NjaGVtZTpzdHJpbmcgLT4gP2NvbXBvbmVudDpjb21wb25lbnQgLT4gZGVjb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCBkZWNvZGUgOiBlbmNvZGVkIC0+IGRlY29kZWRcblxuICAoKiBUaGUgZW1wdHkgZGVjb2RlZCBzdHJpbmcgKilcbiAgdmFsIGVtcHR5X2RlY29kZWQgOiBkZWNvZGVkXG4gICgqIElkZW50aXR5IGZ1bmN0aW9ucyBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgY2FzdCB3aGVuIHVzaW5nIHRoZW0gYmVsb3cgKilcbiAgdmFsIGNhc3RfZW5jb2RlZCA6IHN0cmluZyAtPiBlbmNvZGVkXG4gIHZhbCBjYXN0X2RlY29kZWQgOiBzdHJpbmcgLT4gZGVjb2RlZFxuICB2YWwgdW5jYXN0X2VuY29kZWQgOiBlbmNvZGVkIC0+IHN0cmluZ1xuICB2YWwgdW5jYXN0X2RlY29kZWQgOiBkZWNvZGVkIC0+IHN0cmluZ1xuICAoKiBMaWZ0IEhPRnMgZm9yIG1hcHMgb3ZlciBlbmNvZGluZ3MsIGRlY29kaW5ncywgYW5kIHN0cmluZ3MgKilcbiAgdmFsIGxpZnRfZW5jb2RlZCA6IChlbmNvZGVkIC0+IGVuY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGxpZnRfZGVjb2RlZCA6IChkZWNvZGVkIC0+IGRlY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHVubGlmdF9lbmNvZGVkIDogKHN0cmluZyAtPiBzdHJpbmcpIC0+IGVuY29kZWQgLT4gZW5jb2RlZFxuICB2YWwgdW5saWZ0X2RlY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZGVjb2RlZCAtPiBkZWNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZDIgOiAoc3RyaW5nIC0+IHN0cmluZyAtPiAnYSkgLT4gZGVjb2RlZCAtPiBkZWNvZGVkIC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlbmNvZGVkID0gc3RyaW5nXG4gIHR5cGUgZGVjb2RlZCA9IHN0cmluZ1xuICBsZXQgY2FzdF9lbmNvZGVkIHggPSB4XG4gIGxldCBjYXN0X2RlY29kZWQgeCA9IHhcbiAgbGV0IGVtcHR5X2RlY29kZWQgPSBcIlwiXG4gIGxldCB1bmNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgdW5jYXN0X2VuY29kZWQgeCA9IHhcblxuICBsZXQgbGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCBsaWZ0X2RlY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2RlY29kZWQyIGYgPSBmXG5cbiAgKCoqIFNjYW4gZm9yIHJlc2VydmVkIGNoYXJhY3RlcnMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoXG4gICAgICBwZXJjZW50LWVuY29kZWQgZXF1aXZhbGVudHMuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgZW5jb2RlID9zY2hlbWUgPyhjb21wb25lbnQ9YFBhdGgpIGIgPVxuICAgIGxldCBtb2R1bGUgU2NoZW1lID0gKHZhbCAobW9kdWxlX29mX3NjaGVtZSBzY2hlbWUpIDogU2NoZW1lKSBpblxuICAgIGxldCBzYWZlX2NoYXJzID0gU2NoZW1lLnNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYyA9IENoYXIuY29kZSBiLltjdXJdIGluXG4gICAgICAgIGlmIHNhZmVfY2hhcnMuKGMpIHRoZW5cbiAgICAgICAgICBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIGlmIGN1ciA+IHN0YXJ0IHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQcmludGYuc3ByaW50ZiBcIiUlJTAyWFwiIGMpO1xuICAgICAgICAgIHNjYW4gKGN1cisxKSAoY3VyKzEpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgaW5cbiAgICBzY2FuIDAgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IGludF9vZl9oZXhfY2hhciBjID1cbiAgICBsZXQgYyA9IGludF9vZl9jaGFyIChDaGFyLnVwcGVyY2FzZV9hc2NpaSBjKSAtIDQ4IGluXG4gICAgaWYgYyA+IDlcbiAgICB0aGVuIGlmIGMgPiAxNiAmJiBjIDwgMjNcbiAgICAgIHRoZW4gYyAtIDdcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJpbnRfb2ZfaGV4X2NoYXJcIlxuICAgIGVsc2UgaWYgYyA+PSAwXG4gICAgdGhlbiBjXG4gICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG5cbiAgKCoqIFNjYW4gZm9yIHBlcmNlbnQtZW5jb2RpbmcgYW5kIGNvbnZlcnQgdGhlbSBpbnRvIEFTQ0lJLlxuICAgICAgQHJldHVybiBhIHBlcmNlbnQtZGVjb2RlZCBzdHJpbmcgKilcbiAgbGV0IGRlY29kZSBiID1cbiAgICAoKiBUT0RPOiBTaG91bGQgYm90aCBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgdmVyc2lvbnMgYmUgZXhwb3NlZD8gKilcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydClcbiAgICAgIGVsc2UgaWYgYi5bY3VyXSA9ICclJyB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgICBsZXQgY3VyID0gY3VyICsgMSBpblxuICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSdcbiAgICAgICAgZWxzZSBtYXRjaCBpbnRfb2ZfaGV4X2NoYXIgYi5bY3VyXSB3aXRoXG4gICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICBzY2FuIGN1ciBjdXJcbiAgICAgICAgfCBoaWdoYml0cyAtPiBiZWdpblxuICAgICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgICAgaWYgY3VyID49IGxlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdXG4gICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIGxldCBzdGFydF9hdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgICAgICAgfCBsb3diaXRzIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgKGhpZ2hiaXRzIGxzbCA0ICsgbG93Yml0cykpO1xuICAgICAgICAgICAgICAgIGN1cisxXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGIuW2N1ci0xXTtcbiAgICAgICAgICAgICAgICBjdXJcbiAgICAgICAgICAgIGluIHNjYW4gc3RhcnRfYXQgc3RhcnRfYXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbmVuZFxuXG4oKiBQZXJjZW50IGVuY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9lbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgcyA9XG4gIFBjdC4odW5jYXN0X2VuY29kZWQgKGVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgKGNhc3RfZGVjb2RlZCBzKSkpXG5cbmxldCBwY3RfZW5jb2RlclxuICAgICAgPyhzY2hlbWU9YFNjaGVtZSlcbiAgICAgID8odXNlcmluZm89YFVzZXJpbmZvKVxuICAgICAgPyhob3N0PWBIb3N0KVxuICAgICAgPyhwYXRoPWBQYXRoKVxuICAgICAgPyhxdWVyeV9rZXk9YFF1ZXJ5X2tleSlcbiAgICAgID8ocXVlcnlfdmFsdWU9YFF1ZXJ5X3ZhbHVlKVxuICAgICAgPyhmcmFnbWVudD1gRnJhZ21lbnQpXG4gICAgICAoKSA9XG4gIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcGF0aDsgcXVlcnlfa2V5OyBxdWVyeV92YWx1ZTsgZnJhZ21lbnQgfVxuXG4oKiBQZXJjZW50IGRlY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9kZWNvZGUgcyA9IFBjdC4odW5jYXN0X2RlY29kZWQgKGRlY29kZSAoY2FzdF9lbmNvZGVkIHMpKSlcblxuKCogVXNlcmluZm8gc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhbiBpZCAqIGNyZWRlbnRpYWwgcGFpciAqKVxubW9kdWxlIFVzZXJpbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyAqIHN0cmluZyBvcHRpb25cblxuICBsZXQgY29tcGFyZSAodSxwKSAodScscCcpID1cbiAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSB1IHUnIHdpdGhcbiAgICB8IDAgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcCBwJ1xuICAgIHwgYyAtPiBjXG5cbiAgbGV0IHVzZXJpbmZvX29mX2VuY29kZWQgdXMgPVxuICAgIG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+bWF4OjIgfm9uOic6JyB1cyB3aXRoXG4gICAgfCBbXSAtPiAoXCJcIixOb25lKVxuICAgIHwgW3VdIC0+IChwY3RfZGVjb2RlIHUsTm9uZSlcbiAgICB8IHU6OnA6Ol8gLT4gKHBjdF9kZWNvZGUgdSxTb21lIChwY3RfZGVjb2RlIHApKVxuXG4gIGxldCBlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudCAodSxwbykgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcuKFxuICAgICAgMSArIChsZW5ndGggdSkgKyAobWF0Y2ggcG8gd2l0aCBOb25lIC0+IDAgfCBTb21lIHAgLT4gbGVuZ3RoIHApKVxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCB1KTtcbiAgICBiZWdpbiBtYXRjaCBwbyB3aXRoIE5vbmUgLT4gKCk7XG4gICAgfCBTb21lIHAgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBwKVxuICAgIGVuZDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuZW5kXG5cbmxldCB1c2VyaW5mb19vZl9lbmNvZGVkID0gVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ID0gVXNlcmluZm8uZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnRcblxuKCogUGF0aCBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGEgbGlzdCBvZiBwYXRoIHRva2VucyAqKVxubW9kdWxlIFBhdGggPSBzdHJ1Y3RcbiAgKCogSW52YXJpYW50OiBldmVyeSBlbGVtZW50IGlzIG5vbi16ZXJvLCBzbGFzaGVzICgvKSBvbmx5IG9jY3VyIGFsb25lLiAqKVxuICAoKiBZZXMsIGl0J3MgYmV0dGVyIHRoaXMgd2F5LiBUaGlzIG1lYW5zIHlvdSBjYW4gcmV0YWluIHNlcGFyYXRvclxuICAgICBjb250ZXh0IGluIHJlY3Vyc2lvbiAoZS5nLiByZW1vdmVfZG90X3NlZ21lbnRzIGZvciByZWxhdGl2ZSByZXNvbHV0aW9uKS4gKilcblxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZV9saXN0IFN0cmluZy5jb21wYXJlXG5cbiAgKCogTWFrZSBhIHBhdGggdG9rZW4gbGlzdCBmcm9tIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgcGF0aF9vZl9lbmNvZGVkIHBzID1cbiAgICBsZXQgdG9rbCA9IFN0cmluZ2V4dC5mdWxsX3NwbGl0IHBzIH5vbjonLycgaW5cbiAgICBMaXN0Lm1hcCBwY3RfZGVjb2RlIHRva2xcblxuICAoKiBTdWJyb3V0aW5lIGZvciByZXNvbHZlIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQ+ICopXG4gIGxldCByZW1vdmVfZG90X3NlZ21lbnRzIHAgPVxuICAgIGxldCByZXZwID0gTGlzdC5yZXYgcCBpblxuICAgIGxldCByZWMgbG9vcCBhc2NlbnNpb24gb3V0cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiL1wiOjpcIi4uXCI6OnIgfCBcIi4uXCI6OnIgLT4gbG9vcCAoYXNjZW5zaW9uICsgMSkgb3V0cCByXG4gICAgICB8IFwiL1wiOjpcIi5cIjo6ciAgfCBcIi5cIjo6ciAgLT4gbG9vcCBhc2NlbnNpb24gb3V0cCByXG4gICAgICB8IFwiL1wiOjpbXSB8IFtdIHdoZW4gTGlzdC4obGVuZ3RoIHAgPiAwICYmIGhkIHAgPSBcIi9cIikgLT4gXCIvXCI6Om91dHBcbiAgICAgIHwgW10gd2hlbiBhc2NlbnNpb24gPiAwIC0+IExpc3QucmV2X2FwcGVuZFxuICAgICAgICAoXCIvXCI6OihyZXZfaW50ZXJqZWN0IFwiL1wiIEFycmF5Lih0b19saXN0IChtYWtlIGFzY2Vuc2lvbiBcIi4uXCIpKSkpIG91dHBcbiAgICAgIHwgW10gLT4gTGlzdC4oaWYgbGVuZ3RoIG91dHAgPiAwICYmIGhkIG91dHAgPSBcIi9cIiB0aGVuIHRsIG91dHAgZWxzZSBvdXRwKVxuICAgICAgfCBcIi9cIjo6XCIvXCI6OnIgd2hlbiBhc2NlbnNpb24gPiAwIC0+IGxvb3AgKGFzY2Vuc2lvbiAtIDEpIG91dHAgKFwiL1wiOjpyKVxuICAgICAgfCBcIi9cIjo6Xzo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCByXG4gICAgICB8IHM6OnIgLT4gbG9vcCAwIChzOjpvdXRwKSByXG4gICAgaW4gbG9vcCAwIFtdIHJldnBcblxuICBsZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCBwID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBjIHRvayAtPiBTdHJpbmcubGVuZ3RoIHRvayArIGMpIDAgcCBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIC0+IGZ1bmN0aW9uXG4gICAgfCBcIi9cIiAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgIHwgc2VnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgc2VnKVxuICAgICkgXCJcIiBidWYgcDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuMz4gKilcbiAgbGV0IG1lcmdlIGJob3N0IGJwYXRoIHJlbHBhdGggPVxuICAgIG1hdGNoIGJob3N0LCBMaXN0LnJldiBicGF0aCB3aXRoXG4gICAgfCBTb21lIF8sIFtdIC0+IFwiL1wiOjpyZWxwYXRoXG4gICAgfCBfLCAoXCIvXCI6OnJicGF0aCB8IF86OlwiL1wiOjpyYnBhdGgpIC0+IExpc3QucmV2X2FwcGVuZCAoXCIvXCI6OnJicGF0aCkgcmVscGF0aFxuICAgIHwgXywgXyAtPiByZWxwYXRoXG5lbmRcblxubGV0IHBhdGhfb2ZfZW5jb2RlZCA9IFBhdGgucGF0aF9vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCA9IFBhdGguZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBRdWVyeSBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGFzc29jIGxpc3Qgb2Yga2V5L3ZhbHVlcyAqKVxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG5cbiAgdHlwZSBrdiA9IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgbGlzdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBLViBvZiBrdlxuICAgIHwgUmF3IG9mIHN0cmluZyBvcHRpb24gKiBrdiBMYXp5LnRcblxuICBsZXQgY29tcGFyZSB4IHkgPSBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IEtWIGt2bCwgS1Yga3ZsJ1xuICAgIHwgUmF3IChfLCBsYXp5IGt2bCksIEtWIGt2bCdcbiAgICB8IEtWIGt2bCwgUmF3IChfLCBsYXp5IGt2bCcpIC0+XG4gICAgICBjb21wYXJlX2xpc3QgKGZ1biAoayx2bCkgKGsnLHZsJykgLT5cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNvbXBhcmUgayBrJyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmUgdmwgdmwnXG4gICAgICAgIHwgYyAtPiBjXG4gICAgICApIGt2bCBrdmwnXG4gICAgfCBSYXcgKHJhdyxfKSwgUmF3IChyYXcnLF8pIC0+IGNvbXBhcmVfb3B0IFN0cmluZy5jb21wYXJlIHJhdyByYXcnXG5cbiAgbGV0IGZpbmQgcSBrID0gdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHNwbGl0X3F1ZXJ5IHFzID1cbiAgICBsZXQgZWxzID0gU3RyaW5nZXh0LnNwbGl0IH5vbjonJicgcXMgaW5cbiAgICAoKiBSZXBsYWNlIGEgKyBpbiBhIHF1ZXJ5IHN0cmluZyB3aXRoIGEgc3BhY2UgaW4tcGxhY2UgKilcbiAgICBsZXQgcGx1c190b19zcGFjZSBzID1cbiAgICAgIGxldCBzID0gQnl0ZXMudW5zYWZlX29mX3N0cmluZyBzIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQnl0ZXMubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIGlmIEJ5dGVzLmdldCBzIGkgPSAnKycgdGhlbiBCeXRlcy5zZXQgcyBpICcgJ1xuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IChrOjp2OjpfKTo6dGwgLT5cbiAgICAgICAgbGV0IG4gPSBwbHVzX3RvX3NwYWNlIGssXG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+b246JywnIChwbHVzX3RvX3NwYWNlIHYpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBbXSAtPiBbXCJcIl0gfCBsIC0+IGwpIGluXG4gICAgICAgIGxvb3AgKG46OmFjYykgdGxcbiAgICAgIHwgW2tdOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgaywgW10gaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBbXTo6dGwgLT4gbG9vcCAoKFwiXCIsIFtdKTo6YWNjKSB0bFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICBpblxuICAgIG1hdGNoIGVscyB3aXRoXG4gICAgfCBbXSAgLT4gW1wiXCIsW11dXG4gICAgfCBlbHMgLT4gbG9vcCBbXVxuICAgICAgKExpc3QucmV2X21hcCAoZnVuIGVsIC0+IFN0cmluZ2V4dC5zcGxpdCB+b246Jz0nIGVsIH5tYXg6MikgZWxzKVxuXG4gICgqIE1ha2UgYSBxdWVyeSB0dXBsZSBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBxdWVyeV9vZl9lbmNvZGVkIHFzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoaywgdikgLT4gKHBjdF9kZWNvZGUgaywgTGlzdC5tYXAgcGN0X2RlY29kZSB2KSlcbiAgICAgIChzcGxpdF9xdWVyeSBxcylcblxuICAoKiBBc3NlbWJsZSBhIHF1ZXJ5IHN0cmluZyBzdWl0YWJsZSBmb3IgcHV0dGluZyBpbnRvIGEgVVJJLlxuICAgKiBUdXBsZSBpbnB1dHMgYXJlIHBlcmNlbnQgZGVjb2RlZCBhbmQgd2lsbCBiZSBlbmNvZGVkIGJ5XG4gICAqIHRoaXMgZnVuY3Rpb24uXG4gICopXG4gIGxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYSAoayx2KSAtPlxuICAgICAgICBhICsgKFN0cmluZy5sZW5ndGggaylcbiAgICAgICAgKyAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhIHMgLT4gYSsoU3RyaW5nLmxlbmd0aCBzKSsxKSAwIHYpICsgMikgKC0xKSBsIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgKGssdikgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV9rZXkgayk7XG4gICAgICAgIGlmIHYgPD4gW10gdGhlbiAoXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnPSc7XG4gICAgICAgICAgaXRlcl9jb25jYXQgKGZ1biBidWYgcyAtPlxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgICAgICAgICAgICAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucXVlcnlfdmFsdWUgcylcbiAgICAgICAgICAgICkgXCIsXCIgYnVmIHYpXG4gICAgICApIFwiJlwiIGJ1ZiBsO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgb2ZfcmF3IHFzID1cbiAgICBsZXQgbGF6eV9xdWVyeSA9IExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiBxdWVyeV9vZl9lbmNvZGVkIHFzKSBpblxuICAgIFJhdyAoU29tZSBxcywgbGF6eV9xdWVyeSlcblxuICBsZXQga3YgPSBmdW5jdGlvbiBSYXcgKF8sIGxhenkga3YpIHwgS1Yga3YgLT4ga3ZcbmVuZFxuXG5sZXQgcXVlcnlfb2ZfZW5jb2RlZCA9IFF1ZXJ5LnF1ZXJ5X29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPSBRdWVyeS5lbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWVcblxuKCogVHlwZSBvZiB0aGUgVVJJLCB3aXRoIG1vc3QgYml0cyBiZWluZyBvcHRpb25hbCAqKVxudHlwZSB0ID0ge1xuICBzY2hlbWU6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbiAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgIHwgYElwdjZfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF0gb3B0aW9uIDtcbiAgcG9ydDogaW50IG9wdGlvbjtcbiAgcGF0aDogUGF0aC50O1xuICBxdWVyeTogUXVlcnkudDtcbiAgZnJhZ21lbnQ6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5ID0ge1xuICBzY2hlbWUgPSBOb25lO1xuICB1c2VyaW5mbyA9IE5vbmU7XG4gIGhvc3QgPSBOb25lO1xuICBwb3J0ID0gTm9uZTtcbiAgcGF0aCA9IFtdO1xuICBxdWVyeSA9IFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSk7XG4gIGZyYWdtZW50ID0gTm9uZTtcbn1cblxubGV0IGNvbXBhcmVfZGVjb2RlZCA9IFBjdC51bmxpZnRfZGVjb2RlZDIgU3RyaW5nLmNvbXBhcmVcbmxldCBjb21wYXJlX2RlY29kZWRfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9kZWNvZGVkXG5sZXQgY29tcGFyZV9ob3N0IGgxIGgyID1cbiAgbWF0Y2ggaDEsIGgyIHdpdGhcbiAgfCBgSXB2NF9saXRlcmFsIGlwMSwgYElwdjRfbGl0ZXJhbCBpcDIgLT4gU3RyaW5nLmNvbXBhcmUgaXAxIGlwMlxuICB8IGBJcHY2X2xpdGVyYWwgaXAxLCBgSXB2Nl9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYEhvc3QgaDEsIGBIb3N0IGgyIC0+IGNvbXBhcmVfZGVjb2RlZCBoMSBoMlxuICB8IF8gLT4gLTFcbmxldCBjb21wYXJlX2hvc3Rfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9ob3N0XG5cbmxldCBjb21wYXJlIHQgdCcgPVxuICAobWF0Y2ggY29tcGFyZV9ob3N0X29wdCB0Lmhvc3QgdCcuaG9zdCB3aXRoXG4gIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9kZWNvZGVkX29wdCB0LnNjaGVtZSB0Jy5zY2hlbWUgd2l0aFxuICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgKGZ1biBwIHAnIC0+XG4gICAgICBpZiBwIDwgcCcgdGhlbiAtMSBlbHNlIGlmIHAgPiBwJyB0aGVuIDEgZWxzZSAwXG4gICAgKSB0LnBvcnQgdCcucG9ydCB3aXRoXG4gICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfb3B0IFVzZXJpbmZvLmNvbXBhcmUgdC51c2VyaW5mbyB0Jy51c2VyaW5mbyB3aXRoXG4gICAgICAgIHwgMCAtPiAobWF0Y2ggUGF0aC5jb21wYXJlIHQucGF0aCB0Jy5wYXRoIHdpdGhcbiAgICAgICAgICB8IDAgLT4gKG1hdGNoIFF1ZXJ5LmNvbXBhcmUgdC5xdWVyeSB0Jy5xdWVyeSB3aXRoXG4gICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9kZWNvZGVkX29wdCB0LmZyYWdtZW50IHQnLmZyYWdtZW50XG4gICAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgfCBjIC0+IGMpXG4gICAgICB8IGMgLT4gYylcbiAgICB8IGMgLT4gYylcbiAgfCBjIC0+IGMpXG5cbmxldCBlcXVhbCB0IHQnID0gY29tcGFyZSB0IHQnID0gMFxuXG5sZXQgdW5jYXN0X29wdCA9IGZ1bmN0aW9uXG4gIHwgU29tZSBoIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgbm9ybWFsaXplIHNjaGVtIHVyaSA9XG4gIGxldCBtb2R1bGUgU2NoZW1lID1cbiAgICAodmFsIChtb2R1bGVfb2Zfc2NoZW1lICh1bmNhc3Rfb3B0IHNjaGVtKSkgOiBTY2hlbWUpIGluXG4gIGxldCBkb2IgZiA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4gU29tZSAoUGN0LnVubGlmdF9kZWNvZGVkIGYgeClcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpbiB7dXJpIHdpdGhcbiAgICAgIHNjaGVtZT1kb2IgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSB1cmkuc2NoZW1lO1xuICAgICAgaG9zdD0gbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICAgIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjRfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjZfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIChTY2hlbWUubm9ybWFsaXplX2hvc3QgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIH1cblxuKCoqIENvbnZlcnQgYSBVUkkgc3RydWN0dXJlIGludG8gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nXG4gICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjM+XG4qKVxubGV0IHRvX3N0cmluZyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPVxuICBsZXQgc2NoZW1lID0gbWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHMpXG4gICAgfCBOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gICgqIFBlcmNlbnQgZW5jb2RlIGEgZGVjb2RlZCBzdHJpbmcgYW5kIGFkZCBpdCB0byB0aGUgYnVmZmVyICopXG4gIGxldCBhZGRfcGN0X3N0cmluZyA/KGNvbXBvbmVudD1gUGF0aCkgeCA9XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWQgKFBjdC5lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHgpKVxuICBpblxuICAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICB8Tm9uZSAtPiAoKVxuICAgfFNvbWUgeCAtPlxuICAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnNjaGVtZSB4O1xuICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6J1xuICApO1xuICAoKiBVUkkgaGFzIGEgaG9zdCBpZiBhbnkgaG9zdC1yZWxhdGVkIGNvbXBvbmVudCBpcyBzZXQuIERlZmF1bHRzIHRvIFwiXCIuICopXG4gIGlmIChtYXRjaCB1cmkudXNlcmluZm8sIHVyaS5ob3N0LCB1cmkucG9ydCB3aXRoXG4gIHwgU29tZSBfLCBfLCBfIHwgXywgU29tZSBfLCBfIHwgXywgXywgU29tZSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi8vXCI7XG4gIChtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSB1c2VyaW5mbyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdAJ1xuICApO1xuICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmhvc3QgaG9zdDtcbiAgfFNvbWUgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3RcbiAgfFNvbWUgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1snO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3Q7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICddJ1xuICApO1xuICAobWF0Y2ggdXJpLnBvcnQgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSBwb3J0IC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChzdHJpbmdfb2ZfaW50IHBvcnQpXG4gICk7XG4gIChtYXRjaCB1cmkucGF0aCB3aXRoICgqIEhhbmRsZSByZWxhdGl2ZSBwYXRocyBjb3JyZWN0bHkgKilcbiAgfCBbXSAtPiAoKVxuICB8IFwiL1wiOjpfIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpKVxuICB8IGZpcnN0X3NlZ21lbnQ6Ol8gLT5cbiAgICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICB8IFNvbWUgXyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgICB8IE5vbmUgLT5cbiAgICAgICAoKiBlbnN1cmUgcm91bmR0cmlwIGJ5IGZvcmNpbmcgcmVsYXRpdmUgcGF0aCBpbnRlcnByZXRhdGlvbiBub3Qgc2NoZW1lICopXG4gICAgICAgbWF0Y2ggU3RyaW5nZXh0LmZpbmRfZnJvbSBmaXJzdF9zZWdtZW50IH5wYXR0ZXJuOlwiOlwiIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICB8IFNvbWUgXyAtPiBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgIHwgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIuL1wiXG4gICAgKTtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgIChQY3QudW5jYXN0X2VuY29kZWQgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gICk7XG4gIFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgIHwgUmF3IChOb25lLF8pIHwgS1YgW10gLT4gKClcbiAgICB8IFJhdyAoXyxsYXp5IHEpIHwgS1YgcSAtPiAoKiBub3JtYWxpemUgZS5nLiBwZXJjZW50IGNhcGl0YWxpemF0aW9uICopXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIH5wY3RfZW5jb2RlciBxKVxuICApO1xuICAobWF0Y2ggdXJpLmZyYWdtZW50IHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSBmIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJyMnOyBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmZyYWdtZW50IGZcbiAgKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4oKiBWYXJpb3VzIGFjY2Vzc29yIGZ1bmN0aW9ucywgYXMgdGhlIGV4dGVybmFsIHVyaSB0eXBlIGlzIGFic3RyYWN0ICAqKVxubGV0IGdldF9kZWNvZGVkX29wdCA9IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8U29tZSB4IC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCB4KVxubGV0IHNjaGVtZSB1cmkgPSBnZXRfZGVjb2RlZF9vcHQgdXJpLnNjaGVtZVxubGV0IHdpdGhfc2NoZW1lIHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxTb21lIHNjaGVtZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIHNjaGVtZSkgfVxuICB8Tm9uZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Ob25lIH1cblxubGV0IGhvc3QgdXJpID1cbiAgbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGBJcHY0X2xpdGVyYWwgaCB8IGBJcHY2X2xpdGVyYWwgaCkgLT4gU29tZSBoXG4gIHwgU29tZSAoYEhvc3QgaCkgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbmxldCBob3N0X3dpdGhfZGVmYXVsdCA/KGRlZmF1bHQ9XCJsb2NhbGhvc3RcIikgdXJpID1cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8Tm9uZSAtPiBkZWZhdWx0XG4gIHxTb21lIGggLT4gaFxuXG5sZXQgdXNlcmluZm8gPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVzZXJpbmZvIC0+IFNvbWUgKFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBOb25lIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mb1xuICAgIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKVxubGV0IHdpdGhfdXNlcmluZm8gdXJpIHVzZXJpbmZvID1cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSlcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpblxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggdXNlcmluZm89dXNlcmluZm8gfVxuXG5sZXQgdXNlciB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKHVzZXIsIF8pIC0+IFNvbWUgdXNlclxuXG5sZXQgcGFzc3dvcmQgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIHwgU29tZSAoXywgTm9uZSkgLT4gTm9uZVxuICB8IFNvbWUgKF8sIFNvbWUgcGFzcykgLT4gU29tZSBwYXNzXG5sZXQgd2l0aF9wYXNzd29yZCB1cmkgcGFzc3dvcmQgPVxuICBsZXQgcmVzdWx0IHVzZXJpbmZvID0gbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIGluXG4gIG1hdGNoIHVyaS51c2VyaW5mbywgcGFzc3dvcmQgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdXJpXG4gIHwgTm9uZSwgU29tZSBfIC0+IHJlc3VsdCAoU29tZSAoXCJcIixwYXNzd29yZCkpXG4gIHwgU29tZSAodXNlcixfKSwgXyAtPiByZXN1bHQgKFNvbWUgKHVzZXIsIHBhc3N3b3JkKSlcblxubGV0IHBvcnQgdXJpID0gdXJpLnBvcnRcbmxldCB3aXRoX3BvcnQgdXJpIHBvcnQgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggcG9ydD1wb3J0IH1cbiAgfCBOb25lIC0+IGJlZ2luXG4gICAgIG1hdGNoIHBvcnQgd2l0aFxuICAgICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PU5vbmU7IHBvcnQ9Tm9uZSB9XG4gICAgIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHBvcnQ9cG9ydCB9XG4gIGVuZFxuXG4oKiBSZXR1cm4gdGhlIHBhdGggY29tcG9uZW50ICopXG5sZXQgcGF0aCA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBQY3QudW5jYXN0X2VuY29kZWQgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICB8IE5vbmUgLT4gZW5jb2RlZF9vZl9wYXRoIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aFxuICB8IFNvbWUgcyAtPiBlbmNvZGVkX29mX3BhdGggfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aClcbmxldCB3aXRoX3BhdGggdXJpIHBhdGggPVxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwYXRoIGluXG4gIG1hdGNoIGhvc3QgdXJpLCBwYXRoIHdpdGhcbiAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4geyB1cmkgd2l0aCBwYXRoPXBhdGggfVxuICB8IFNvbWUgXywgXyAgLT4geyB1cmkgd2l0aCBwYXRoPVwiL1wiOjpwYXRoIH1cblxubGV0IGZyYWdtZW50IHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuZnJhZ21lbnRcbmxldCB3aXRoX2ZyYWdtZW50IHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxOb25lIC0+IHsgdXJpIHdpdGggZnJhZ21lbnQ9Tm9uZSB9XG4gIHxTb21lIGZyYWcgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIGZyYWcpIH1cblxubGV0IHF1ZXJ5IHVyaSA9IFF1ZXJ5Lmt2IHVyaS5xdWVyeVxubGV0IHZlcmJhdGltX3F1ZXJ5ID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICB8IFJhdyAocXMsXykgLT4gcXNcbiAgfCBLViBbXSAtPiBOb25lXG4gIHwgS1Yga3YgLT4gU29tZSAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lOihzY2hlbWUgdXJpKSB+cGN0X2VuY29kZXIga3YpXG4pXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayA9IFF1ZXJ5LihmaW5kIChrdiB1cmkucXVlcnkpIGspXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtIHVyaSBrID1cbiAgbWF0Y2ggZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayB3aXRoXG4gIHxOb25lIC0+IE5vbmVcbiAgfFNvbWUgdiAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLFwiIHYpXG5cbmxldCB3aXRoX3F1ZXJ5IHVyaSBxdWVyeSA9IHsgdXJpIHdpdGggcXVlcnk9UXVlcnkuS1YgcXVlcnkgfVxubGV0IHFfcyBxID0gTGlzdC5tYXAgKGZ1biAoayx2KSAtPiBrLFt2XSkgcVxubGV0IHdpdGhfcXVlcnknIHVyaSBxdWVyeSA9IHdpdGhfcXVlcnkgdXJpIChxX3MgcXVlcnkpXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtIHVyaSBwID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHA6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbScgdXJpIChrLHYpID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChrLFt2XSk6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMgdXJpIHBzID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHBzQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMnIHVyaSBwcyA9XG4gIFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWICgocV9zIHBzKUAoa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCByZW1vdmVfcXVlcnlfcGFyYW0gdXJpIGsgPSBRdWVyeS4oXG4gIHsgdXJpIHdpdGggcXVlcnk9S1YgKExpc3QuZmlsdGVyIChmdW4gKGsnLF8pIC0+IGs8PmsnKSAoa3YgdXJpLnF1ZXJ5KSkgfVxuKVxuXG4oKiBDb25zdHJ1Y3QgZW5jb2RlZCBwYXRoIGFuZCBxdWVyeSBjb21wb25lbnRzICopXG5sZXQgcGF0aF9hbmRfcXVlcnkgdXJpID1cbiAgbWF0Y2ggKHBhdGggdXJpKSwgKHF1ZXJ5IHVyaSkgd2l0aFxuICB8XCJcIiwgW10gLT4gXCIvXCIgKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgfFwiXCIsIHEgLT4gKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgICBsZXQgc2NoZW1lID0gdW5jYXN0X29wdCB1cmkuc2NoZW1lIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIvPyVzXCIgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSBxKVxuICB8cCwgW10gLT4gcFxuICB8cCwgcSAtPlxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzPyVzXCIgcCAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG5cbigqIFRPRE86IGZ1bmN0aW9ucyB0byBhZGQgYW5kIHJlbW92ZSBmcm9tIGEgVVJJICopXG5cbigqIFJlc29sdmUgYSBVUkkgd3J0IGEgYmFzZSBVUkkgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjI+ICopXG5sZXQgcmVzb2x2ZSBzY2hlbSBiYXNlIHVyaSA9XG4gIGxldCBzY2hlbSA9IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgKG1hdGNoIHNjaGVtZSBiYXNlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAgc2NoZW1cbiAgICAgIHwgU29tZSBzY2hlbWUgLT4gc2NoZW1lXG4gICAgKSkgaW5cbiAgbm9ybWFsaXplIHNjaGVtXG4gICAgUGF0aC4obWF0Y2ggc2NoZW1lIHVyaSwgdXNlcmluZm8gdXJpLCBob3N0IHVyaSB3aXRoXG4gICAgfCBTb21lIF8sIF8sIF8gLT5cbiAgICAgIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBTb21lIF8sIF9cbiAgICB8IE5vbmUsIF8sIFNvbWUgXyAtPlxuICAgICAge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPlxuICAgICAgbGV0IHVyaSA9IHt1cmkgd2l0aCBzY2hlbWU9YmFzZS5zY2hlbWU7IHVzZXJpbmZvPWJhc2UudXNlcmluZm87XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9YmFzZS5ob3N0OyBwb3J0PWJhc2UucG9ydH0gaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9IHBhdGggdXJpIGluXG4gICAgICBpZiBwYXRoX3N0cj1cIlwiXG4gICAgICB0aGVuIHsgdXJpIHdpdGhcbiAgICAgICAgICAgICBwYXRoPWJhc2UucGF0aDtcbiAgICAgICAgICAgICBxdWVyeT1tYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgICAgICAgICAgICAgfCBRdWVyeS5SYXcgKE5vbmUsXykgfCBRdWVyeS5LViBbXSAtPiBiYXNlLnF1ZXJ5XG4gICAgICAgICAgICAgICB8IF8gLT4gdXJpLnF1ZXJ5XG4gICAgICAgICAgIH1cbiAgICAgIGVsc2UgaWYgcGF0aF9zdHIuWzBdPScvJ1xuICAgICAgdGhlbiB7dXJpIHdpdGggcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgICAgZWxzZSB7dXJpIHdpdGhcbiAgICAgICAgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIChtZXJnZSBiYXNlLmhvc3QgYmFzZS5wYXRoIHVyaS5wYXRoKTtcbiAgICAgIH1cbiAgICApXG5cbmxldCBjYW5vbmljYWxpemUgdXJpID1cbiAgbGV0IHVyaSA9IHJlc29sdmUgXCJcIiBlbXB0eSB1cmkgaW5cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgdXJpLnNjaGVtZSkpIDogU2NoZW1lKSBpblxuICB7IHVyaSB3aXRoXG4gICAgcG9ydD1TY2hlbWUuY2Fub25pY2FsaXplX3BvcnQgdXJpLnBvcnQ7XG4gICAgcGF0aD1TY2hlbWUuY2Fub25pY2FsaXplX3BhdGggdXJpLnBhdGg7XG4gIH1cblxubGV0IHBwIHBwZiB1cmkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nIHVyaSlcbmxldCBwcF9odW0gcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxuXG5tb2R1bGUgUGFyc2VyID0gc3RydWN0XG4gIG9wZW4gQW5nc3Ryb21cblxuICBsZXQgc3RyaW5nX29mX2NoYXIgPSBTdHJpbmcubWFrZSAxXG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyX2xpc3QgY2hhcnMgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2NoYXIgY2hhcnMpXG5cbiAgbGV0IHNjaGVtZSA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKHRha2Vfd2hpbGUgKGZ1biBjIC0+IGMgPD4gJzonICYmIGMgPD4gJy8nICYmIGMgPD4gJz8nICYmIGMgPD4gJyMnKVxuICAgICAgPCogY2hhciAnOicpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBoZXhfZGlnaXQgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgaGV4YWRlY2ltYWwgPSBsaWZ0IHN0cmluZ19vZl9jaGFyX2xpc3QgKG1hbnkgaGV4X2RpZ2l0KVxuXG4gIGxldCBjX2RvdCA9IGNoYXIgJy4nXG5cbiAgbGV0IGNfYXQgPSBjaGFyICdAJ1xuXG4gIGxldCBjX2NvbG9uID0gY2hhciAnOidcblxuICBsZXQgZGVjX29jdGV0ID1cbiAgICB0YWtlX3doaWxlMSAoZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgPj49IGZ1biBudW0gLT5cbiAgICBpZiBpbnRfb2Zfc3RyaW5nIG51bSA8IDI1NiB0aGVuXG4gICAgICByZXR1cm4gbnVtXG4gICAgZWxzZVxuICAgICAgZmFpbCBcImludmFsaWQgb2N0ZWN0XCJcblxuICBsZXQgaXB2NF9hZGRyZXNzID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB0aHJlZSBvbmUgLT4gU3RyaW5nLmNvbmNhdCBcIi5cIiB0aHJlZSBeIFwiLlwiIF4gb25lKVxuICAgICAgKGNvdW50IDMgKGRlY19vY3RldCA8KiBjX2RvdCkpXG4gICAgICBkZWNfb2N0ZXRcblxuICAoKiAtLSBhZnRlciBkb3VibGUgY29sb24sIElQdjQgZG90dGVkIG5vdGF0aW9uIGNvdWxkIGFwcGVhciBhbnl3aGVyZSAqKVxuICBsZXQgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICBmaXggKGZ1biBmIC0+XG4gICAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXVxuICAgICAgICA8fD4gbGlmdDIgKGZ1biB4IHkgLT4geCA6OiB5KSBoZXhhZGVjaW1hbCAoY19jb2xvbiAqPiBmIDx8PiByZXR1cm4gW10pKVxuXG4gIGxldCBkb3VibGVfY29sb24gY291bnQgPVxuICAgIGFmdGVyX2RvdWJsZV9jb2xvbiA+Pj0gKGZ1biByZXN0IC0+XG4gICAgbGV0IGZpbGxlcl9sZW5ndGggPSA4IC0gY291bnQgLSBMaXN0Lmxlbmd0aCByZXN0IGluXG4gICAgaWYgZmlsbGVyX2xlbmd0aCA8PSAwIHRoZW5cbiAgICAgIGZhaWwgXCJ0b28gbWFueSBwYXJ0cyBpbiBJUHY2IGFkZHJlc3NcIlxuICAgIGVsc2VcbiAgICAgIHJldHVybiAoXCJcIiA6OiByZXN0KSlcbiAgICA8fD4gcmV0dXJuIFtcIlwiXVxuXG4gIGxldCByZWMgcGFydCA9IGZ1bmN0aW9uXG4gICAgfCA3IC0+XG4gICAgICAoKiBtYXggOCBwYXJ0cyBpbiBhbiBJUHY2IGFkZHJlc3MgKilcbiAgICAgIGxpZnQgKGZ1biB4IC0+IFsgeCBdKSBoZXhhZGVjaW1hbFxuICAgIHwgNiAtPlxuICAgICAgKCogYWZ0ZXIgNiBwYXJ0cyBpdCBjb3VsZCBlbmQgaW4gSVB2NCBkb3R0ZWQgbm90YXRpb24gKilcbiAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXSA8fD4gaGV4X3BhcnQgNlxuICAgIHwgbiAtPlxuICAgICAgaGV4X3BhcnQgblxuXG4gIGFuZCBoZXhfcGFydCBuID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB4IHkgLT4geCA6OiB5KVxuICAgICAgaGV4YWRlY2ltYWxcbiAgICAgIChjX2NvbG9uICo+IChjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAobiArIDEpIDx8PiBwYXJ0IChuICsgMSkpKVxuXG4gIGxldCByZWMgc3BsaXRfd2l0aCBmIHhzID1cbiAgICBtYXRjaCB4cyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgW10sIFtdXG4gICAgfCB5IDo6IHlzIC0+XG4gICAgICBpZiBmIHkgdGhlblxuICAgICAgICBsZXQgenMsIHRzID0gc3BsaXRfd2l0aCBmIHlzIGluXG4gICAgICAgIHkgOjogenMsIHRzXG4gICAgICBlbHNlXG4gICAgICAgIFtdLCB4c1xuXG4gIGxldCBpcHY2ID1cbiAgICBsZXQgZm9ybWF0X2FkZHIgc2VnbWVudHMgPVxuICAgICAgbGV0IGJlZm9yZV9kb3VibGVfY29sb24sIGFmdGVyX2RvdWJsZV9jb2xvbiA9XG4gICAgICAgIHNwbGl0X3dpdGggKGZ1biBzZWdtZW50IC0+IHNlZ21lbnQgPD4gXCJcIikgc2VnbWVudHNcbiAgICAgIGluXG4gICAgICBsZXQgYmVmb3JlID0gU3RyaW5nLmNvbmNhdCBcIjpcIiBiZWZvcmVfZG91YmxlX2NvbG9uIGluXG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgbWF0Y2ggYWZ0ZXJfZG91YmxlX2NvbG9uIHdpdGhcbiAgICAgICAgfCBcIlwiIDo6IHhzIC0+XG4gICAgICAgICAgYmVmb3JlIF4gXCI6OlwiIF4gU3RyaW5nLmNvbmNhdCBcIjpcIiB4c1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBiZWZvcmVcbiAgICAgIGluXG4gICAgICByZXNcbiAgICBpblxuICAgIGxpZnQgZm9ybWF0X2FkZHIgKGNfY29sb24gKj4gY19jb2xvbiAqPiBkb3VibGVfY29sb24gMCA8fD4gcGFydCAwKVxuXG4gIGxldCBpcHY2X2FkZHJlc3MgPVxuICAgIChjaGFyICdbJykgKj4gaXB2NiA8KiAoY2hhciAnXScpXG5cbiAgbGV0IHBjdF9lbmNvZGVkID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biBwY3QgZGlnaXRzIC0+IHN0cmluZ19vZl9jaGFyX2xpc3QgKHBjdCA6OiBkaWdpdHMpKVxuICAgICAgKGNoYXIgJyUnKVxuICAgICAgKGNvdW50IDIgaGV4X2RpZ2l0KVxuXG4gIGxldCBzdWJfZGVsaW1zID1cbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICchJyB8ICckJyB8ICcmJyB8ICdcXCcnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJywnIHwgJzsnIHwgJz0nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgdW5yZXNlcnZlZCA9XG4gICAgKCogXCJbQS1aYS16MC05LS5ffl1cIiAqKVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJy0nIHwgJy4nIHwgJ18nIHwgJ34nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgcmVnX25hbWUgPVxuICAgIGxpZnRcbiAgICAgIChTdHJpbmcuY29uY2F0IFwiXCIpXG4gICAgICAobWFueVxuICAgICAgICAgKGNob2ljZVxuICAgICAgICAgICAgWyBzdHJpbmdfb2ZfY2hhciA8JD4gdW5yZXNlcnZlZFxuICAgICAgICAgICAgOyBwY3RfZW5jb2RlZFxuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gc3ViX2RlbGltc1xuICAgICAgICAgICAgXSkpXG5cbiAgbGV0IGhvc3QgPVxuICAgIGNob2ljZVxuICAgICAgWyBpcHY0X2FkZHJlc3MgPj58IChmdW4gaCAtPiBgSXB2NF9saXRlcmFsIGgpXG4gICAgICA7IGlwdjZfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY2X2xpdGVyYWwgaClcbiAgICAgIDsgcmVnX25hbWUgPj58IChmdW4gcyAtPiBgSG9zdCAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoKiBUT0RPKGRpbm9zYXVyZSk6IEFjY29yZGluZyB0byBSRkMzOTg2OlxuXG4gICAgICAgICBob3N0ICAgICAgICA9IElQLWxpdGVyYWwgLyBJUHY0YWRkcmVzcyAvIHJlZy1uYW1lXG4gICAgICAgICBJUC1saXRlcmFsICA9IFwiW1wiICggSVB2NmFkZHJlc3MgLyBJUHZGdXR1cmUgICkgXCJdXCJcbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuXG4gICAgICAgICBJUHZGdXR1cmUgaXMgbm90IGltcGxlbWVudGVkLiBXZSBzaG91bGQgaGFuZGxlIGl0OlxuXG4gICAgICAgICBJUHZGdXR1cmUgICA9IFwidlwiIDEqSEVYRElHIFwiLlwiIDEqKCB1bnJlc2VydmVkIC8gc3ViLWRlbGltcyAvIFwiOlwiIClcbiAgICAgICAqKVxuICAgICAgXVxuXG4gIGxldCB1c2VyaW5mbyA9XG4gICAgbGlmdFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCBzID0gU3RyaW5nLmNvbmNhdCBcIlwiIHggaW5cbiAgICAgICAgU29tZSAoVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZCBzKSlcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBjX2NvbG9uXG4gICAgICAgICAgICBdKVxuICAgICAgPCogY19hdClcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgcG9ydCA9XG4gICAgcGVla19jaGFyID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSAnOicgLT5cbiAgICAgIGNfY29sb24gKj4gdGFrZV93aGlsZSBpc19kaWdpdCA+PnwgZnVuIHBvcnQgLT5cbiAgICAgIGxldCBkZWNvZGVkID0gUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBwb3J0KSBpblxuICAgICAgKHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChQY3QudW5jYXN0X2RlY29kZWQgZGVjb2RlZCkpIHdpdGggXyAtPiBOb25lKVxuICAgIHwgU29tZSBfIHwgTm9uZSAtPlxuICAgICAgcmV0dXJuIE5vbmVcblxuICBsZXQgYXV0aG9yaXR5ID1cbiAgICBzdHJpbmcgXCIvL1wiXG4gICAgKj4gbGlmdDNcbiAgICAgICAgIChmdW4gdXNlcmluZm8gaG9zdCBwb3J0IC0+XG4gICAgICAgICAgIHVzZXJpbmZvLCBTb21lIGhvc3QsIHBvcnQpXG4gICAgICAgICB1c2VyaW5mb1xuICAgICAgICAgaG9zdFxuICAgICAgICAgcG9ydFxuICAgIDx8PiByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUpXG5cbiAgbGV0IHBhdGggPVxuICAgIGxpZnRcbiAgICAgIFBhdGgucGF0aF9vZl9lbmNvZGVkXG4gICAgICAodGFrZV93aGlsZSAoZnVuY3Rpb24gJz8nIHwgJyMnIC0+IGZhbHNlIHwgXyAtPiB0cnVlKSlcblxuICBsZXQgcXVlcnkgPVxuICAgIGxpZnRcbiAgICAgIFF1ZXJ5Lm9mX3Jhd1xuICAgICAgKGNoYXIgJz8nICo+IHRha2VfdGlsbCAoZnVuY3Rpb24gJyMnIC0+IHRydWUgfCBfIC0+IGZhbHNlKSlcbiAgICA8fD4gcmV0dXJuIChRdWVyeS5SYXcgKE5vbmUsIExhenkuZnJvbV92YWwgW10pKVxuXG4gIGxldCBmcmFnbWVudCA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKGNoYXIgJyMnICo+IHRha2Vfd2hpbGUgKGZ1biBfIC0+IHRydWUpKVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBfdXJpX3JlZmVyZW5jZSA9XG4gICAgbGlmdDRcbiAgICAgIChmdW4gc2NoZW1lICh1c2VyaW5mbywgaG9zdCwgcG9ydCkgcGF0aCBxdWVyeSBmcmFnbWVudCAtPlxuICAgICAgICBub3JtYWxpemUgc2NoZW1lIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH0pXG4gICAgICBzY2hlbWVcbiAgICAgIGF1dGhvcml0eVxuICAgICAgcGF0aFxuICAgICAgcXVlcnlcbiAgICA8Kj4gZnJhZ21lbnRcblxuICAoKiBYWFgoYW5tb250ZWlybyk6IEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2l0aCB0aGUgb2xkIHJlZ2V4IHBhcnNlciwgd2VcbiAgICogb25seSBwYXJzZSB1bnRpbCB0aGUgZmlyc3QgbmV3bGluZSBjaGFyYWN0ZXIgYW5kIGRyb3AgZXZlcnl0aGluZyBlbHNlXG4gICAqIGFmdGVyIHRoYXQgKilcbiAgbGV0IHVyaV9yZWZlcmVuY2UgPVxuICAgIHRha2Vfd2hpbGUgKGZ1bmN0aW9uIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpID4+fCBmdW4gcyAtPlxuICAgICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBfdXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgICAgIHwgT2sgdCAtPiB0XG4gICAgICB8IEVycm9yIF8gLT5cbiAgICAgICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgICAgIGVtcHR5XG5lbmRcblxubGV0IGRlY29kZV9ob3N0IGhvc3QgPVxuICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5ob3N0IGhvc3Qgd2l0aFxuICB8IE9rIHBhcnNlZCAtPiBwYXJzZWRcbiAgfCBFcnJvciBfIC0+XG4gICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBQYXJzZXIuaXB2NiBob3N0IHdpdGhcbiAgICB8IE9rIHBhcnNlZCAtPiAoYElwdjZfbGl0ZXJhbCBwYXJzZWQpXG4gICAgfCBFcnJvciBfIC0+IChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBob3N0KSlcblxuKCogTWFrZSBhIFVSSSByZWNvcmQuIFRoaXMgaXMgYSBiaXQgbW9yZSBpbmVmZmljaWVudCB0aGFuIGl0IG5lZWRzIHRvIGJlIGR1ZSB0byB0aGVcbiAqIGNhc3RpbmcvdW5jYXN0aW5nICh3aGljaCBpc24ndCBmdWxseSBpZGVudGl0eSBkdWUgdG8gdGhlIG9wdGlvbiBib3gpLCBidXQgaXQgaXNcbiAqIG5vIGJpZyBkZWFsIGZvciBub3cuXG4qKVxubGV0IG1ha2UgP3NjaGVtZSA/dXNlcmluZm8gP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCAoKSA9XG4gIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gIGxldCBob3N0ID0gbWF0Y2ggdXNlcmluZm8sIGhvc3QsIHBvcnQgd2l0aFxuICAgIHwgXywgU29tZSBfLCBfIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBob3N0XG4gICAgfCBTb21lIF8sIE5vbmUsIF8gfCBfLCBOb25lLCBTb21lIF8gLT4gU29tZSBcIlwiXG4gIGluXG4gIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgfE5vbmUgLT4gW10gfCBTb21lIHAgLT5cbiAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgIG1hdGNoIGhvc3QsIHBhdGggd2l0aFxuICAgICAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4gcGF0aFxuICAgICAgfCBTb21lIF8sIF8gIC0+IFwiL1wiOjpwYXRoXG4gIGluXG4gIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICB8IE5vbmUgLT4gUXVlcnkuS1YgW11cbiAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gIGluXG4gIGxldCBzY2hlbWUgPSBkZWNvZGUgc2NoZW1lIGluXG4gIG5vcm1hbGl6ZSBzY2hlbWVcbiAgICB7IHNjaGVtZTsgdXNlcmluZm87XG4gICAgICBob3N0ID1cbiAgICAgICAgKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICB8IE5vbmUgLT4gTm9uZSk7XG4gICAgICBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQ9ZGVjb2RlIGZyYWdtZW50IH1cblxubGV0IHdpdGhfaG9zdCB1cmkgaG9zdCA9XG4gIHsgdXJpIHdpdGhcbiAgICBob3N0ID0gKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGhvc3QgLT4gU29tZSAoZGVjb2RlX2hvc3QgaG9zdClcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICB9XG5cbmxldCB3aXRoX3VyaSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50IHVyaSA9XG4gIGxldCB3aXRoX3BhdGhfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcGF0aCB1IFwiXCJcbiAgICB8IFNvbWUgcCAtPiB3aXRoX3BhdGggdSBwXG4gIGluXG4gIGxldCB3aXRoX3F1ZXJ5X29wdCB1IG8gPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB3aXRoX3F1ZXJ5IHUgW11cbiAgICB8IFNvbWUgcSAtPiB3aXRoX3F1ZXJ5IHUgcVxuICBpblxuICBsZXQgd2l0aF8gZiBvIHUgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB1XG4gICAgfCBTb21lIHggLT4gZiB1IHhcbiAgaW5cbiAgd2l0aF8gd2l0aF9zY2hlbWUgc2NoZW1lIHVyaVxuICB8PiB3aXRoXyB3aXRoX3VzZXJpbmZvIHVzZXJpbmZvXG4gIHw+IHdpdGhfIHdpdGhfaG9zdCBob3N0XG4gIHw+IHdpdGhfIHdpdGhfcG9ydCBwb3J0XG4gIHw+IHdpdGhfIHdpdGhfcGF0aF9vcHQgcGF0aFxuICB8PiB3aXRoXyB3aXRoX3F1ZXJ5X29wdCBxdWVyeVxuICB8PiB3aXRoXyB3aXRoX2ZyYWdtZW50IGZyYWdtZW50XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gICgqIFRvIHByZXNlcnZlIHRoZSBvbGQgcmVnZXggcGFyc2VyJ3MgYmVoYXZpb3IsIHdlIG9ubHkgcGFyc2UgYSBwcmVmaXgsIGFuZFxuICAgKiBzdG9wIHdoZW5ldmVyIHdlIGNhbid0IHBhcnNlIG1vcmUuICopXG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpQcmVmaXggUGFyc2VyLnVyaV9yZWZlcmVuY2UgcyB3aXRoXG4gIHwgT2sgdCAtPiB0XG4gIHwgRXJyb3IgXyAtPlxuICAgICgqIFNob3VsZG4ndCByZWFsbHkgaGFwcGVuIGlmIHRoZSBwYXJzZXIgaXMgZm9yZ2l2aW5nLiAqKVxuICAgIGVtcHR5XG5cbm1vZHVsZSBBYnNvbHV0ZV9odHRwID0gc3RydWN0XG4gIHR5cGUgdXJpID0gdFxuICB0eXBlIHQgPVxuICAgIHsgc2NoZW1lIDogWyBgSHR0cCB8IGBIdHRwcyBdO1xuICAgICAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICAgICAgaG9zdDogWyBgSXB2NF9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF07XG4gICAgICBwb3J0IDogaW50IG9wdGlvbjtcbiAgICAgIHBhdGggOiBQYXRoLnQ7XG4gICAgICBxdWVyeSA6IFF1ZXJ5LnQ7XG4gICAgICBmcmFnbWVudCA6IFBjdC5kZWNvZGVkIG9wdGlvblxuICAgIH1cblxuICBsZXQgKCBsZXQqICkgPSBSZXN1bHQuYmluZFxuXG4gIGxldCB0b191cmkgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSA9XG4gICAgbGV0IHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBgSHR0cCAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cFwiXG4gICAgICB8IGBIdHRwcyAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cHNcIlxuICAgIGluXG4gICAgKHsgc2NoZW1lID0gU29tZSBzY2hlbWU7XG4gICAgICAgdXNlcmluZm87XG4gICAgICAgaG9zdCA9IFNvbWUgaG9zdDtcbiAgICAgICBwb3J0O1xuICAgICAgIHBhdGg7XG4gICAgICAgcXVlcnk7XG4gICAgICAgZnJhZ21lbnQgfSA6IHVyaSlcbiAgOztcblxuICBsZXQgb2ZfdXJpICh7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9OiB1cmkpID1cbiAgICBsZXQqIHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEVycm9yIChgTXNnIFwiTm8gc2NoZW1lIHByZXNlbnQgaW4gVVJJXCIpXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+XG4gICAgICAgIChtYXRjaCBQY3QudW5jYXN0X2RlY29kZWQgc2NoZW1lIHdpdGhcbiAgICAgICAgIHwgXCJodHRwXCIgLT4gT2sgYEh0dHBcbiAgICAgICAgIHwgXCJodHRwc1wiIC0+IE9rIGBIdHRwc1xuICAgICAgICAgfCB1bnN1cHBvcnRlZF9zY2hlbWUgLT5cbiAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAoYE1zZ1xuICAgICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiT25seSBodHRwIGFuZCBodHRwcyBVUklzIGFyZSBzdXBwb3J0ZWQuICVzIGlzIGludmFsaWQuXCJcbiAgICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZF9zY2hlbWUpKSlcbiAgICBpblxuICAgIGxldCogaG9zdCA9IE9wdGlvbi50b19yZXN1bHQgfm5vbmU6KGBNc2cgXCJob3N0IGlzIHJlcXVpcmVkIGZvciBIVFRQKFMpIHVyaXNcIikgaG9zdCBpblxuICAgIE9rIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH1cbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHMgPSBtYXRjaCBvZl9zdHJpbmcgcyB8PiBvZl91cmkgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciAoYE1zZyBlcnJvcikgLT4gZmFpbHdpdGggZXJyb3JcblxuICBsZXQgdG9fc3RyaW5nID9wY3RfZW5jb2RlciB0ID0gdG9fdXJpIHQgfD4gdG9fc3RyaW5nID9wY3RfZW5jb2RlclxuXG4gIGxldCBub3JtYWxpemUgdCA9XG4gICAgeyB0IHdpdGhcbiAgICAgIGhvc3QgPSBtYXRjaCB0Lmhvc3Qgd2l0aFxuICAgICAgIHwgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2NF9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2Nl9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBIb3N0IGhvc3QpIC0+XG4gICAgICAgICAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgIH1cblxuICBsZXQgbWFrZSB+c2NoZW1lIH5ob3N0ID91c2VyaW5mbyA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgICBsZXQgZGVjb2RlID0gZnVuY3Rpb25cbiAgICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gICAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmUgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KSBpblxuICAgIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwIGluXG4gICAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgICB8ICBcIi9cIjo6XyB8ICBbXSAtPiBwYXRoXG4gICAgICAgIHwgXyAgLT4gXCIvXCI6OnBhdGhcbiAgICBpblxuICAgIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgICAgfCBTb21lIHAgLT4gUXVlcnkuS1YgcFxuICAgIGluXG4gICAgbm9ybWFsaXplXG4gICAgICB7IHNjaGVtZTtcbiAgICAgICAgdXNlcmluZm87XG4gICAgICAgIGhvc3Q9IGRlY29kZV9ob3N0IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG4gIGxldCBob3N0IHQgPVxuICAgIG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgfCAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBoXG4gICAgfCAoYEhvc3QgaCkgLT4gKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuXG4gIGxldCBzY2hlbWUgdCA9IHQuc2NoZW1lXG5lbmRcbiIsIm9wZW4gVXJpXG5cbm1vZHVsZSBEZXJpdmVkID1cbnN0cnVjdFxuXG5cdG9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cblx0dHlwZSBjb21wb25lbnQgPSBbXG5cdCAgfCBgU2NoZW1lXG5cdCAgfCBgQXV0aG9yaXR5XG5cdCAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG5cdCAgfCBgUGF0aFxuXHQgIHwgYFF1ZXJ5XG5cdCAgfCBgUXVlcnlfa2V5XG5cdCAgfCBgUXVlcnlfdmFsdWVcblx0ICB8IGBGcmFnbWVudFxuICAgICAgICAgIHwgYEdlbmVyaWNcbiAgICAgICAgICB8IGBDdXN0b20gb2YgKGNvbXBvbmVudCAqIHN0cmluZyAqIHN0cmluZylcblx0XSBbQEBkZXJpdmluZyBzZXhwXVxuXG5cdHR5cGUgdCA9IHtcbiAgICAgICAgICBzY2hlbWU6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgdXNlcmluZm86IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgaG9zdDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBwb3J0OiBpbnQgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBhdGg6IHN0cmluZyBbQGRlZmF1bHQgXCJcIl0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBxdWVyeTogKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0IFtAc2V4cC5saXN0XTtcbiAgICAgICAgICBmcmFnbWVudDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXVxuXHR9IFtAQGRlcml2aW5nIHNleHBdXG5cbmVuZFxuXG5vcGVuIERlcml2ZWRcblxubGV0IGNvbXBvbmVudF9vZl9zZXhwID0gY29tcG9uZW50X29mX3NleHBcbmxldCBzZXhwX29mX2NvbXBvbmVudCA9IHNleHBfb2ZfY29tcG9uZW50XG5cbmxldCB0X29mX3NleHAgc2V4cCA9XG5cdGxldCB0ID0gdF9vZl9zZXhwIHNleHAgaW5cblx0VXJpLm1ha2Vcblx0XHQ/c2NoZW1lOnQuc2NoZW1lXG5cdFx0P3VzZXJpbmZvOnQudXNlcmluZm9cblx0XHQ/aG9zdDp0Lmhvc3Rcblx0XHQ/cG9ydDp0LnBvcnRcblx0XHR+cGF0aDp0LnBhdGhcblx0XHR+cXVlcnk6dC5xdWVyeVxuXHRcdD9mcmFnbWVudDp0LmZyYWdtZW50XG5cdFx0KClcblxubGV0IHNleHBfb2ZfdCB0ID1cblx0c2V4cF9vZl90IHtcblx0XHRzY2hlbWUgPSBzY2hlbWUgdDtcblx0XHR1c2VyaW5mbyA9IHVzZXJpbmZvIHQ7XG5cdFx0aG9zdCA9IGhvc3QgdDtcblx0XHRwb3J0ID0gcG9ydCB0O1xuXHRcdHBhdGggPSBwYXRoIHQ7XG5cdFx0cXVlcnkgPSBxdWVyeSB0O1xuXHRcdGZyYWdtZW50ID0gZnJhZ21lbnQgdFxuXHR9XG5cbnR5cGUgY29tcG9uZW50ID0gVXJpLmNvbXBvbmVudFxubGV0IGNvbXBhcmUgYSBiID0gVXJpLmNvbXBhcmUgYSBiXG5sZXQgZXF1YWwgYSBiID0gVXJpLmVxdWFsIGEgYlxudHlwZSB0ID0gVXJpLnRcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gQ29yZVxuXG5sZXQgaXNfdmFsaWRfaWQgcyA9XG4gIGlmIFN0cmluZy5lcXVhbCBzIFwiXCJcbiAgdGhlbiBmYWxzZVxuICBlbHNlIChcbiAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IGZhbHNlXG4gICAgfCBfIC0+XG4gICAgICBTdHJpbmcuZm9yX2FsbCBzIH5mOihmdW5jdGlvblxuICAgICAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSkpXG47O1xuXG5sZXQgaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lID0gaXNfdmFsaWRfaWQgbmFtZSAmJiBub3QgKFNldC5tZW0gc2VlbiBuYW1lKVxuXG5sZXQgcmVjIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyBsaXN0ID1cbiAgbWF0Y2ggKGxpc3QgOiBTZXhwLnQgbGlzdCkgd2l0aFxuICB8IFtdIC0+IFNvbWUgKExpc3QucmV2IHJldl9hY2MpXG4gIHwgQXRvbSBuYW1lIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBOb25lKSA6OiByZXZfYWNjIGluXG4gICAgbGV0IHNlZW4gPSBTZXQuYWRkIHNlZW4gbmFtZSBpblxuICAgIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyByZXN0XG4gIHwgTGlzdCBbIEF0b20gbmFtZTsgdiBdIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBTb21lIHYpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgYW55X29mX3NleHAgPSBmdW5jdGlvblxuICB8IFNleHAuQXRvbSBzIC0+IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzKVxuICB8IFNleHAuTGlzdCBbIEF0b20gbmFtZTsgdiBdIC0+IEpzLlVuc2FmZS5vYmogW3wgbmFtZSwgYW55X29mX3NleHAgdiB8XVxuICB8IFNleHAuTGlzdCBsIC0+XG4gICAgKG1hdGNoIGtleV92YWx1ZV9zaGFwZSB+c2VlbjpTdHJpbmcuU2V0LmVtcHR5IH5yZXZfYWNjOltdIGwgd2l0aFxuICAgICB8IE5vbmUgLT4gTGlzdC5tYXAgbCB+Zjphbnlfb2Zfc2V4cCB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IHw+IEpzLlVuc2FmZS5pbmplY3RcbiAgICAgfCBTb21lIFtdIC0+IEpzLmFycmF5IFt8fF0gfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgbCAtPlxuICAgICAgIEpzLlVuc2FmZS5vYmpcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBuYW1lLCBTb21lIHYgLT4gbmFtZSwgYW55X29mX3NleHAgdlxuICAgICAgICAgICAgfCBuYW1lLCBOb25lIC0+IG5hbWUsIEpzLlVuc2FmZS5pbmplY3QgSnMubnVsbClcbiAgICAgICAgICB8PiBBcnJheS5vZl9saXN0KSlcbjs7XG5cbmxldCBsb2dfcyBzZXhwID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKGFueV9vZl9zZXhwIHNleHApXG5sZXQgbG9nX3NfYXNfc3RyaW5nIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChTZXhwLnRvX3N0cmluZ19odW0gc2V4cCkpXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB1ID0geyBzb21lX25hbWUgOiBzdHJpbmcgfSBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRm9vXG4gICAgICB8IEJhciBvZlxuICAgICAgICAgIHsgZmllbGQxIDogdVxuICAgICAgICAgIDsgZmllbGQyIDogc3RyaW5nIG9wdGlvblxuICAgICAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcbiAgaW5cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IG9wZW4gTSBpblxuICBwcmludF9lbmRsaW5lICh0b19zdHJpbmcgKGFueV9vZl9zZXhwIChzZXhwX29mX3QgRm9vKSkpO1xuICBbJWV4cGVjdCB7fCBcIkZvb1wiIHx9XTtcbiAgcHJpbnRfZW5kbGluZVxuICAgICh0b19zdHJpbmdcbiAgICAgICAoYW55X29mX3NleHBcbiAgICAgICAgICAoc2V4cF9vZl90XG4gICAgICAgICAgICAgKEJhciB7IGZpZWxkMSA9IHsgc29tZV9uYW1lID0gXCJkZWJ1Z1wiIH07IGZpZWxkMiA9IFNvbWUgXCJvdGhlciBzdHJpbmdcIiB9KSkpKTtcbiAgWyVleHBlY3Qge3wge1wiQmFyXCI6bnVsbCxcImZpZWxkMVwiOntcInNvbWVfbmFtZVwiOlwiZGVidWdcIn0sXCJmaWVsZDJcIjpbXCJvdGhlciBzdHJpbmdcIl19IHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwiZHVwbGljYXRlIGtleXMgYXJlIGRpc3BsYXllZCBjb3JyZWN0bHlcIiA9XG4gIGxldCB0b19zdHJpbmcgOiBKcy5VbnNhZmUuYW55IC0+IHN0cmluZyA9XG4gICAgZnVuIGFueSAtPiBKcy50b19zdHJpbmcgKEpzLl9KU09OIyNzdHJpbmdpZnkgYW55IDogSnMuanNfc3RyaW5nIEpzLnQpXG4gIGluXG4gIGxldCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMgPSB7fCAoKEEgQikgKEEgQykpIHx9IHw+IFNleHAub2Zfc3RyaW5nIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgc2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzKSk7XG4gIFslZXhwZWN0IHt8IFt7XCJBXCI6XCJCXCJ9LHtcIkFcIjpcIkNcIn1dIHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwibm8gc3RhY2sgb3ZlcmZsb3dcIiA9XG4gIGxldCBhID0gQXJyYXkuaW5pdCAxMDAwMCB+ZjooZnVuIGkgLT4gc3ByaW50ZiBcImYlZFwiIGksIGkpIGluXG4gIGxldCBzZXhwID0gWyVzZXhwX29mOiAoc3RyaW5nICogaW50KSBhcnJheV0gYSBpblxuICBsZXQgeCA9IGFueV9vZl9zZXhwIHNleHAgaW5cbiAgcHJpbnRmIFwiJWRcIiAoSnMuVW5zYWZlLmNvZXJjZSB4KSMjLmY5OTk7XG4gIFslZXhwZWN0IHt8IDk5OSB8fV1cbjs7XG4iLCJtb2R1bGUgQXN5bmNfanNfZGVidWcgPSBEZWJ1Z1xub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgVXJpID0gc3RydWN0XG4gIGluY2x1ZGUgVXJpXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFVyaV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbm1vZHVsZSBXZWJzb2NrZXRfY29ubmVjdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IEFzeW5jX3JwY19rZXJuZWwuUnBjLkNvbm5lY3Rpb25cblxuICB0eXBlICgncmVzdCwgJ2ltcGxlbWVudGF0aW9ucykgY2xpZW50X3QgPVxuICAgID91cmk6VXJpLnRcbiAgICAtPiA/aGVhcnRiZWF0X2NvbmZpZzpULkhlYXJ0YmVhdF9jb25maWcudFxuICAgIC0+ID9kZXNjcmlwdGlvbjpJbmZvLnRcbiAgICAtPiA/aW1wbGVtZW50YXRpb25zOidpbXBsZW1lbnRhdGlvbnMgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLnRcbiAgICAtPiAncmVzdFxuXG4gIG1vZHVsZSBDbG9zZV9jb2RlIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICB2YWwgb2ZfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50IC0+IHRcbiAgICB2YWwgbm9ybWFsX2Nsb3N1cmUgOiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgY2xvc2VfZXZlbnRfY29kZSA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGFsbF9vZl9jbG9zZV9ldmVudF9jb2RlID0gW11cblxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEdvaW5nX2F3YXlcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgVW5zdXBwb3J0ZWRfZGF0YVxuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YVxuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCBNaXNzaW5nX2V4dGVuc2lvblxuICAgICAgfCBJbnRlcm5hbF9lcnJvclxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgVHJ5X2FnYWluX2xhdGVyXG4gICAgICB8IEJhZF9nYXRld2F5XG4gICAgICB8IFRMU19oYW5kc2hha2VcbiAgICAgIHwgVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBdXG5cbiAgICBsZXQgbm9ybWFsX2Nsb3N1cmUgPSBOb3JtYWxfY2xvc3VyZVxuXG4gICAgbGV0IG9mX2ludCA9IGZ1bmN0aW9uXG4gICAgICB8IDEwMDAgLT4gTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgMTAwMSAtPiBHb2luZ19hd2F5XG4gICAgICB8IDEwMDIgLT4gUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgMTAwMyAtPiBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IDEwMDUgLT4gTm9fc3RhdHVzX1JlY2VpdmVkXG4gICAgICB8IDEwMDYgLT4gQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDA3IC0+IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IDEwMDggLT4gUG9saWN5X3Zpb2xhdGlvblxuICAgICAgfCAxMDA5IC0+IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCAxMDEwIC0+IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IDEwMTEgLT4gSW50ZXJuYWxfZXJyb3JcbiAgICAgIHwgMTAxMiAtPiBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgMTAxMyAtPiBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgMTAxNCAtPiBCYWRfZ2F0ZXdheVxuICAgICAgfCAxMDE1IC0+IFRMU19oYW5kc2hha2VcbiAgICAgIHwgY29kZSAtPlxuICAgICAgICBpZiBjb2RlID49IDMwMDAgJiYgY29kZSA8PSA0OTk5XG4gICAgICAgIHRoZW4gVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIGNvZGVcbiAgICAgICAgZWxzZSBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXZlbnQgY2xvc2VfZXZlbnQgPSBvZl9pbnQgY2xvc2VfZXZlbnQjIy5jb2RlXG5cbiAgICBsZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmUgLT4gMTAwMFxuICAgICAgfCBHb2luZ19hd2F5IC0+IDEwMDFcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3IgLT4gMTAwMlxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhIC0+IDEwMDNcbiAgICAgIHwgTm9fc3RhdHVzX1JlY2VpdmVkIC0+IDEwMDVcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZSAtPiAxMDA2XG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhIC0+IDEwMDdcbiAgICAgIHwgUG9saWN5X3Zpb2xhdGlvbiAtPiAxMDA4XG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyAtPiAxMDA5XG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uIC0+IDEwMTBcbiAgICAgIHwgSW50ZXJuYWxfZXJyb3IgLT4gMTAxMVxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnQgLT4gMTAxMlxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXIgLT4gMTAxM1xuICAgICAgfCBCYWRfZ2F0ZXdheSAtPiAxMDE0XG4gICAgICB8IFRMU19oYW5kc2hha2UgLT4gMTAxNVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZSAtPiBjb2RlXG4gICAgICB8IEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRvX2ludCAtPiBvZl9pbnQgcm91bmQtdHJpcFwiID1cbiAgICAgIExpc3QuaXRlciBhbGwgfmY6KGZ1biB0IC0+IGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSAob2ZfaW50ICh0b19pbnQgdCkpIHQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBjbG9zZV93ZWJzb2NrZXQgKHdlYnNvY2tldCA6IFdlYlNvY2tldHMud2ViU29ja2V0IEpzLnQpIHJlYXNvbiA9XG4gICAgKCogW2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXSBkb2VzIG5vdGhpbmcgaWYgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBDbG9zZWQuICopXG4gICAgbGV0IGNsb3NlIHJlYXNvbiA9XG4gICAgICAoKiBUaGUgY29kZSBtdXN0IGJlIGVpdGhlciAxMDAwIChOb3JtYWxfY2xvc3VyZSksIG9yIGJldHdlZW4gMzAwMCBhbmQgNDk5OVxuICAgICAgICAgKFVua25vd25fY2xvc2VfZXZlbnRfY29kZSkuICopXG4gICAgICB3ZWJzb2NrZXQjI2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXG4gICAgICAgIENsb3NlX2NvZGUuKHRvX2ludCBub3JtYWxfY2xvc3VyZSlcbiAgICAgICAgKEpzLnN0cmluZyByZWFzb24pXG4gICAgaW5cbiAgICBtYXRjaCBjbG9zZSByZWFzb24gd2l0aFxuICAgIHwgKCkgLT4gKClcbiAgICB8IGV4Y2VwdGlvbiAoXyA6IEV4bi50KSAtPlxuICAgICAgKCogdGhpcyBjYW4gZmFpbCBpZiBbcmVhc29uXSBpcyB0b28gbG9uZyBvciBjb250YWlucyBpbnZhbGlkIFVURjggKilcbiAgICAgIGNsb3NlIFwiY2xvc2UtcmVhc29uLXdhcy10b28tbG9uZy1vci1jb250YWlucy1pbnZhbGlkLXV0ZjhcIlxuICA7O1xuXG4gIGxldCBjb25uZWN0X3dlYnNvY2tldCB1cmwgfmZyb21fc2VydmVyIH50b19zZXJ2ZXIgPVxuICAgIG1hdGNoIG5ldyVqcyBXZWJTb2NrZXRzLndlYlNvY2tldCAoSnMuc3RyaW5nIChVcmkudG9fc3RyaW5nIHVybCkpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKcy5FcnJvciBleG4gLT5cbiAgICAgICgqIGUuZy4gU0VDVVJJVFlfRVJSLCB0aG91Z2ggbm90ZSB0aGF0IGUuZy4gY29ubmVjdGluZyB0byB3czovLyBmcm9tIGEgaHR0cHM6Ly8gcGFnZVxuICAgICAgICAgaW4gY2hyb21lIHNlZW1zIHRvIG1hbmlmZXN0IGFzIHN1Y2Nlc3NmdWwgY29uc3RydWN0aW9uIGJ1dCBpbW1lZGlhdGUgY2xvc3VyZVxuICAgICAgICAgKHNlZSBiZWxvdykuICAqKVxuICAgICAgcmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgKEpzLnRvX3N0cmluZyBleG4jIy5tZXNzYWdlKSlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT4gcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKVxuICAgIHwgd2Vic29ja2V0IC0+XG4gICAgICBsZXQgY29ubmVjdGVkX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IGNsZWFudXAgfnJlYXNvbiA9XG4gICAgICAgICgqIElmIHdlIGhhdmVuJ3QgY29ubmVjdGVkIHlldCwgdGhlbiBjb25uZWN0aW5nIGp1c3QgZmFpbGVkLiBPdGhlcndpc2UgaXQgd2FzIHRoZVxuICAgICAgICAgICBjbG9zdXJlIG9mIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24uICopXG4gICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoRXJyb3IgcmVhc29uKTtcbiAgICAgICAgKCogW1BpcGUuY2xvc2VdIGFuZCBbV2ViU29ja2V0LmNsb3NlXSBhcmUgYWxsIGlkZW1wb3RlbnQuICopXG4gICAgICAgIFBpcGUuY2xvc2UgZnJvbV9zZXJ2ZXI7XG4gICAgICAgIFBpcGUuY2xvc2VfcmVhZCB0b19zZXJ2ZXI7XG4gICAgICAgIGNsb3NlX3dlYnNvY2tldCB3ZWJzb2NrZXQgKEVycm9yLnRvX3N0cmluZ19odW0gcmVhc29uKVxuICAgICAgaW5cbiAgICAgIGxldCBvbmNsb3NlIChjbG9zZV9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQpID1cbiAgICAgICAgKCogVGhlIFJQQyBBUEkgZG9lc24ndCBnaXZlIHVzIGEgZ29vZCBwbGFjZSB0byBwdXQgZGV0YWlscyBhYm91dCBfd2h5XyB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBjbG9zZWQuXG5cbiAgICAgICAgICAgTm90ZSB0aGF0IGluIENocm9tZSBbY2xvc2VfZXZlbnQjIy5yZWFzb25dIGlzIHR5cGljYWxseSBlbXB0eSBhbmRcbiAgICAgICAgICAgW2Nsb3NlX2V2ZW50IyMuY29kZV0gZG9lc24ndCBhY3R1YWxseSBwcm92aWRlIHRoYXQgbXVjaCBpbnNpZ2h0IGludG8gd2h5IHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIGZhaWxlZCAoaXQncyBhdmFpbGFibGUgaW4gdGhlIGluc3BlY3RvciBjb25zb2xlLCBidXQgYXMgZmFyIGFzIEkgY2FuXG4gICAgICAgICAgIHRlbGwsIG5vdCBhdmFpbGFibGUgdG8gdXMpLiBTbyBpdCdzIG5vdCBsaWtlIHdlJ3JlIGxvc2luZyBtdWNoIGFueXdheS4gKilcbiAgICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgICAgbGV0IHdoYXRfaGFwcGVuZWQgPVxuICAgICAgICAgICAgbWF0Y2ggSXZhci5pc19mdWxsIGNvbm5lY3RlZF9pdmFyIHdpdGhcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gXCJjb25uZWN0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgICB8IHRydWUgLT4gXCJjbG9zZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgIVwiV2ViU29ja2V0ICVzICgle3NleHA6Q2xvc2VfY29kZS50fSlcIlxuICAgICAgICAgICAgd2hhdF9oYXBwZW5lZFxuICAgICAgICAgICAgKENsb3NlX2NvZGUub2ZfZXZlbnQgY2xvc2VfZXZlbnQpXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIHJlYXNvbik7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBvbm1lc3NhZ2UgKGV2ZW50IDogXyBXZWJTb2NrZXRzLm1lc3NhZ2VFdmVudCBKcy50KSA9XG4gICAgICAgIGxldCBkYXRhID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLm9mX2FycmF5QnVmZmVyIGV2ZW50IyMuZGF0YV9idWZmZXIgaW5cbiAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4gZnJvbV9zZXJ2ZXIgZGF0YTtcbiAgICAgICAgSnMuX2ZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3RlZCAoKSA9IEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoT2sgKCkpIGluXG4gICAgICB3ZWJzb2NrZXQjIy5iaW5hcnlUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCI7XG4gICAgICAoKiBpZiB0aGUgd2Vic29ja2V0IGlzIGFscmVhZHkgY2xvc2VkLCBbb25jbG9zZV0gd29uJ3QgYmUgcmUtZmlyZWQgd2hlbiB3ZSBhZGQgb3VyXG4gICAgICAgICBoYW5kbGVyLiAqKVxuICAgICAgKG1hdGNoIHdlYnNvY2tldCMjLnJlYWR5U3RhdGUgd2l0aFxuICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgd2Vic29ja2V0IyMub25vcGVuXG4gICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgY29ubmVjdGVkICgpO1xuICAgICAgICAgICBKcy5fZmFsc2UpXG4gICAgICAgfCBPUEVOIC0+IGNvbm5lY3RlZCAoKVxuICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPlxuICAgICAgICAgKCogZS5nLiwgUmVmdXNlZCB0byBjb25uZWN0IHRvIHdzOiBiZWNhdXNlIGl0IHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5ICopXG4gICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIldlYlNvY2tldCBmYWlsZWQgaW1tZWRpYXRlbHkgKGlsbGVnYWwgVVJJPylcIikpO1xuICAgICAgKCogVXBvbiBhbiBlcnJvciwgW29uZXJyb3JdIGZpcmVzIGFuZCB0aGVuIFtvbmNsb3NlXSBmaXJlcyAoaXQncyBwb3NzaWJsZSBmb3IgYVxuICAgICAgICAgZ3JhY2VmdWwgY2xvc3VyZSB0byBjYWxsIFtvbmNsb3NlXSBvbmx5KS4gU2luY2UgQXN5bmNfUlBDIGhhcyBubyBub3Rpb24gb2ZcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUsIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgW29uY2xvc2VdIGFueXdheS4gRnVydGhlciwgdGhlIGV2ZW50XG4gICAgICAgICBwYXNzZWQgdG8gW29uZXJyb3JdIGNvbnRhaW5zIG5vIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4gIE5vdGUgdGhhdCB3ZVxuICAgICAgICAgc3RpbGwgbGlzdGVuIHRvIFtvbmVycm9yXSB0byBwcmV2ZW50IHRoZSBlcnJvciBmcm9tIGxlYWtpbmcgdG8gdW5jb250cm9sbGVkXG4gICAgICAgICBjb250ZXh0ICopXG4gICAgICB3ZWJzb2NrZXQjIy5vbmVycm9yXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgQXN5bmNfanNfZGVidWcubG9nX3MgWyVtZXNzYWdlIFwid2Vic29ja2V0IGVuY291bnRlcmVkIHVuZXhwZWN0ZWQgZXJyb3JcIl07XG4gICAgICAgIEpzLl9mYWxzZSk7XG4gICAgICB3ZWJzb2NrZXQjIy5vbm1lc3NhZ2UgOj0gRG9tLmhhbmRsZXIgb25tZXNzYWdlO1xuICAgICAgd2Vic29ja2V0IyMub25jbG9zZSA6PSBEb20uaGFuZGxlciBvbmNsb3NlO1xuICAgICAgbGV0IGNvbm5lY3RlZF9kZWZlcnJlZCA9IEl2YXIucmVhZCBjb25uZWN0ZWRfaXZhciBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKG1hdGNoJWJpbmQgY29ubmVjdGVkX2RlZmVycmVkIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgKF8gOiBFcnJvci50KSAtPiByZXR1cm4gKClcbiAgICAgICAgIHwgT2sgKCkgLT5cbiAgICAgICAgICAgUGlwZS5pdGVyX3dpdGhvdXRfcHVzaGJhY2sgdG9fc2VydmVyIH5mOihmdW4gZGF0YSAtPlxuICAgICAgICAgICAgIG1hdGNoICh3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIDogV2ViU29ja2V0cy5yZWFkeVN0YXRlKSB3aXRoXG4gICAgICAgICAgICAgfCBDT05ORUNUSU5HIC0+XG4gICAgICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkJVRzogb25vcGVuIGNhbGxlZCBidXQgcmVhZHlTdGF0ZSBpcyBDT05ORUNUSU5HXCJdXG4gICAgICAgICAgICAgfCBDTE9TSU5HIHwgQ0xPU0VEIC0+ICgpXG4gICAgICAgICAgICAgfCBPUEVOIC0+XG4gICAgICAgICAgICAgICBsZXQgYnVmZmVyID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIGRhdGEgaW5cbiAgICAgICAgICAgICAgICh0cnkgd2Vic29ja2V0IyNzZW5kX2J1ZmZlciBidWZmZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoRXJyb3IudGFnIH50YWc6XCJ3ZWJzb2NrZXQjI3NlbmRfYnVmZmVyXCIgKEVycm9yLm9mX2V4biBleG4pKSkpKTtcbiAgICAgIGxldCBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCA9XG4gICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgIERlZmVycmVkLmFueV91bml0IFsgUGlwZS5jbG9zZWQgdG9fc2VydmVyOyBQaXBlLmNsb3NlZCBmcm9tX3NlcnZlciBdXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIFwiUlBDIGNvbm5lY3Rpb24gY2xvc2VkIGJ5IGNsaWVudFwiKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIGNsZWFudXBfd2hlbl9hX3BpcGVfaXNfY2xvc2VkO1xuICAgICAgY29ubmVjdGVkX2RlZmVycmVkXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdXJpICgpID1cbiAgICBsZXQgc2NoZW1lID0gaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCIgdGhlbiBcIndzc1wiIGVsc2UgXCJ3c1wiIGluXG4gICAgbGV0IHBvcnQgPVxuICAgICAgbWF0Y2ggVXJsLkN1cnJlbnQucG9ydCB3aXRoXG4gICAgICB8IFNvbWUgcG9ydCAtPiBwb3J0XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCJcbiAgICAgICAgdGhlbiBVcmwuZGVmYXVsdF9odHRwc19wb3J0XG4gICAgICAgIGVsc2UgVXJsLmRlZmF1bHRfaHR0cF9wb3J0XG4gICAgaW5cbiAgICBsZXQgaG9zdCA9IFVybC5DdXJyZW50Lmhvc3QgaW5cbiAgICBVcmkubWFrZSB+c2NoZW1lIH5ob3N0IH5wb3J0ICgpXG4gIDs7XG5cbiAgbGV0IGNsaWVudCA/KHVyaSA9IGRlZmF1bHRfdXJpICgpKSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA9XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIEluZm8uY3JlYXRlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwid2Vic29ja2V0XCIgKGRlc2NyaXB0aW9uIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpICh1cmkgOiBVcmkudCldXG4gICAgaW5cbiAgICBsZXQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCA9XG4gICAgICBsZXQgY3JlYXRlIHsgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLmNvbm5lY3Rpb25fc3RhdGU7IGltcGxlbWVudGF0aW9ucyB9ID1cbiAgICAgICAgVC5jcmVhdGVcbiAgICAgICAgICB0cmFuc3BvcnRcbiAgICAgICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY3JlYXRlIChULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMubnVsbCAoKSlcbiAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbnMgLT4gY3JlYXRlIGltcGxlbWVudGF0aW9uc1xuICAgIGluXG4gICAgbGV0IGZyb21fc2VydmVyX3IsIGZyb21fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCB0b19zZXJ2ZXJfciwgdG9fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIG1hdGNoJWJpbmRcbiAgICAgIGNvbm5lY3Rfd2Vic29ja2V0IHVyaSB+ZnJvbV9zZXJ2ZXI6ZnJvbV9zZXJ2ZXJfdyB+dG9fc2VydmVyOnRvX3NlcnZlcl9yXG4gICAgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiByZXR1cm4gZXJyb3JcbiAgICB8IE9rICgpIC0+XG4gICAgICBsZXQgdHJhbnNwb3J0ID1cbiAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5jcmVhdGVcbiAgICAgICAgICBBc3luY19ycGNfa2VybmVsLlBpcGVfdHJhbnNwb3J0LktpbmQuYmlnc3RyaW5nXG4gICAgICAgICAgZnJvbV9zZXJ2ZXJfclxuICAgICAgICAgIHRvX3NlcnZlcl93XG4gICAgICBpblxuICAgICAgKG1hdGNoJWJpbmQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCB3aXRoXG4gICAgICAgfCBPayBjb25uZWN0aW9uIC0+IHJldHVybiAoT2sgY29ubmVjdGlvbilcbiAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBBc3luY19ycGNfa2VybmVsLlJwYy5UcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgICAgICByZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCBjbGllbnRfZXhuID91cmkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGNsaWVudCA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFzeW5jX3JwY19rZXJuZWwuUnBjXG5cbm1vZHVsZSBDb25uZWN0aW9uID0gc3RydWN0XG4gIGluY2x1ZGUgQ29ubmVjdGlvblxuICBpbmNsdWRlIFdlYnNvY2tldF9jb25uZWN0aW9uXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX3JwY19rZXJuZWxcblxubW9kdWxlIFVyaSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVXJpXG5cbiAgICBsZXQgdG9fc3RyaW5nIHMgPSBVcmkudG9fc3RyaW5nIHNcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjID0gc3RydWN0XG4gIGluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwY1xuXG4gIGxldCBjcmVhdGVfZnJvbV91cmkgPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNyZWF0ZSB+YWRkcmVzczoobW9kdWxlIFVyaSlcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpX29wdGlvbiA9XG4gICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGVcbiAgICAgIH5hZGRyZXNzOlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFVyaS50IG9wdGlvbiBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cF1cbiAgICAgICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gQXN5bmNfcnBjX2tlcm5lbC5QZXJzaXN0ZW50X2Nvbm5lY3Rpb24uVmVyc2lvbmVkX3JwY1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIE9wdCA9IEpzLk9wdFxubW9kdWxlIE9wdGRlZiA9IEpzLk9wdGRlZlxuXG5tb2R1bGUgUmVzcG9uc2VfdHlwZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYbWxIdHRwUmVxdWVzdC5yZXNwb25zZSA9XG4gICAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgT3B0LnQgdFxuICAgIHwgQmxvYiA6ICNGaWxlLmJsb2IgSnMudCBKcy5PcHQudCB0XG4gICAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50IE9wdC50IHRcbiAgICB8IEpTT04gOiAnYSBPcHQudCB0XG4gICAgfCBUZXh0IDogSnMuanNfc3RyaW5nIEpzLnQgdFxuICAgIHwgRGVmYXVsdCA6IHN0cmluZyB0XG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ3Jlc3BvbnNlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgZ2V0X2hlYWRlciA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgOyBjb250ZW50IDogJ3Jlc3BvbnNlXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBQb3N0X2JvZHkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEJsb2Igb2YgRmlsZS5ibG9iIEpzLnRcbiAgICB8IERvY3VtZW50IG9mIERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBGb3JtX2RhdGEgb2YgRm9ybS5mb3JtRGF0YSBKcy50XG5lbmRcblxubW9kdWxlIE1ldGhvZF93aXRoX2FyZ3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEdldCBvZiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgfCBQb3N0IG9mIFBvc3RfYm9keS50IG9wdGlvblxuZW5kXG5cbnR5cGUgJ2sgd2l0aF9yZXF1ZXN0X2FyZ3MgPVxuICA/aGVhZGVyczooc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIC0+ID9vbl9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gP29uX3VwbG9hZF9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gdXJsOnN0cmluZ1xuICAtPiAna1xuXG5sZXQgaGFzX2dldF9hcmdzIHVybCA9IE9wdGlvbi5pc19zb21lIChTdHJpbmcuaW5kZXggdXJsICc/JylcblxubGV0IHJlcXVlc3RcbiAgICAgID8oaGVhZGVycyA9IFtdKVxuICAgICAgP29uX3Byb2dyZXNzXG4gICAgICA/b25fdXBsb2FkX3Byb2dyZXNzXG4gICAgICB+dXJsXG4gICAgICAodHlwZSByZXNwKVxuICAgICAgfihyZXNwb25zZV90eXBlIDogcmVzcCBSZXNwb25zZV90eXBlLnQpXG4gICAgICAobWV0aG9kX3dpdGhfYXJncyA6IE1ldGhvZF93aXRoX2FyZ3MudClcbiAgPVxuICBsZXQgdXJsLCBtZXRob2Rfc3RyaW5nID1cbiAgICBtYXRjaCBtZXRob2Rfd2l0aF9hcmdzIHdpdGhcbiAgICB8IEdldCBhcmdzIC0+XG4gICAgICB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgYXJncywgXCJHRVRcIlxuICAgIHwgUG9zdCBfYm9keSAtPiB1cmwsIFwiUE9TVFwiXG4gIGluXG4gIGxldCByZXEgPSBYbWxIdHRwUmVxdWVzdC5jcmVhdGUgKCkgaW5cbiAgcmVxIyNfb3BlbiAoSnMuc3RyaW5nIG1ldGhvZF9zdHJpbmcpIChKcy5zdHJpbmcgdXJsKSBKcy5fdHJ1ZTtcbiAgKGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICAgfCBCbG9iIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJibG9iXCJcbiAgIHwgRG9jdW1lbnQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImRvY3VtZW50XCJcbiAgIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gICB8IFRleHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcInRleHRcIlxuICAgfCBEZWZhdWx0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJcIik7XG4gIExpc3QuaXRlciBoZWFkZXJzIH5mOihmdW4gKG5hbWUsIHZhbHVlKSAtPlxuICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgdmFsdWUpKTtcbiAgbGV0IHJlc3BvbnNlIDogcmVzcCBSZXNwb25zZS50IE9yX2Vycm9yLnQgSXZhci50ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgcmVxIyMub25lcnJvclxuICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIk5ldHdvcmsgZXJyb3JcIik7XG4gICAgSnMuX3RydWUpO1xuICByZXEjIy5vbnRpbWVvdXRcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJUaW1lb3V0XCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlXG4gIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+XG4gICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgfCBET05FIC0+XG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgaWYgcmVxIyMuc3RhdHVzID49IDIwMCAmJiByZXEjIy5zdGF0dXMgPCAzMDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgY29udGVudCA6IHJlc3AgT3JfZXJyb3IudCA9XG4gICAgICAgICAgICBsZXQgZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKCkgPVxuICAgICAgICAgICAgICBPcHQuY2FzZVxuICAgICAgICAgICAgICAgIHJlcSMjLnJlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIG5vdCBiZSBlbnRlcmVkIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBvZlxuICAgICAgICAgICAgICAgICAgICAgIFhNTEh0dHBSZXF1ZXN0IGF0IE1ETiB3ZWIgZG9jcywgYmVjYXVzZSBpZiBhIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCxcbiAgICAgICAgICAgICAgICAgICAgICBpbiBzdGF0ZSBbRE9ORV0gYW5kIHJlc3BvbnNlX3R5cGUgW1RleHRdIG9yIFtEZWZhdWx0XSxcbiAgICAgICAgICAgICAgICAgICAgICBbcmVzcG9uc2VUZXh0XSBzaG91bGQgbm90IGJlIFtudWxsXS5cbiAgICAgICAgICAgICAgICAgICAgICBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICAgICAgZXJyb3Jfc1xuICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgIFwiTm8gcmVzcG9uc2UgcmV0dXJuZWQgZGVzcGl0ZSBzdWNjZXNzZnVsIHJlcXVlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgICAgICAgICBSZXN1bHQucmV0dXJuXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG9wZW4gUmVzcG9uc2VfdHlwZSBpblxuICAgICAgICAgICAgbWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IE9rIChGaWxlLkNvZXJjZVRvLmFycmF5QnVmZmVyIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBCbG9iIC0+IE9rIChGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IERvY3VtZW50IC0+IE9rIChGaWxlLkNvZXJjZVRvLmRvY3VtZW50IHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBKU09OIC0+IE9rIChGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IFRleHQgLT4gZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKClcbiAgICAgICAgICAgIHwgRGVmYXVsdCAtPlxuICAgICAgICAgICAgICBPcl9lcnJvci5tYXAgKGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpKSB+ZjpKcy50b19zdHJpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBnZXRfaGVhZGVyIHMgPVxuICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgKHJlcSMjZ2V0UmVzcG9uc2VIZWFkZXIgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgUmVzcG9uc2UuY29udGVudDsgY29kZSA9IHJlcSMjLnN0YXR1czsgZ2V0X2hlYWRlciB9KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIFwiUmVxdWVzdCBmYWlsZWRcIlxuICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICB9XVxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSByZXNcbiAgICB8IF8gLT4gKCkpO1xuICBPcHRpb24uaXRlciBvbl9wcm9ncmVzcyB+ZjooZnVuIG9uX3Byb2dyZXNzIC0+XG4gICAgcmVxIyMub25wcm9ncmVzc1xuICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgb25fcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICBKcy5fdHJ1ZSkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICBPcHRpb24uaXRlciBvbl91cGxvYWRfcHJvZ3Jlc3MgfmY6KGZ1biBvbl91cGxvYWRfcHJvZ3Jlc3MgLT5cbiAgICAgIHVwbG9hZCMjLm9ucHJvZ3Jlc3NcbiAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICBvbl91cGxvYWRfcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICAgIEpzLl90cnVlKSkpO1xuICAobWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICB8IEdldCBfIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICB8IFBvc3QgYm9keSAtPlxuICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgICAgIHwgU29tZSBib2R5IC0+XG4gICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgIHwgQmxvYiBiIC0+IHJlcSMjc2VuZF9ibG9iIGJcbiAgICAgICAgIHwgRG9jdW1lbnQgZCAtPiByZXEjI3NlbmRfZG9jdW1lbnQgZFxuICAgICAgICAgfCBTdHJpbmcgcyAtPiByZXEjI3NlbmQgKEpzLnNvbWUgKEpzLnN0cmluZyBzKSlcbiAgICAgICAgIHwgRm9ybV9kYXRhIGZkIC0+IHJlcSMjc2VuZF9mb3JtRGF0YSBmZCkpKTtcbiAgSXZhci5yZWFkIHJlc3BvbnNlXG47O1xuXG5sZXQgZ2V0ID8oYXJndW1lbnRzID0gW10pIHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChHZXQgYXJndW1lbnRzKSlcbjs7XG5cbmxldCBwb3N0ID9ib2R5IHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChQb3N0IGJvZHkpKVxuOztcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlLlRpbWVfbnNcbm1vZHVsZSBDbG9ja19ucyA9IEFzeW5jX2tlcm5lbC5DbG9ja19uc1xubW9kdWxlIFNjaGVkdWxlciA9IEFzeW5jX2tlcm5lbC5Bc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGVcbm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IHNsZWVwIGQgPSBDbG9ja19ucy5hZnRlciAoVGltZV9ucy5TcGFuLm9mX3NlYyBkKVxubGV0IHlpZWxkICgpID0gU2NoZWR1bGVyLnlpZWxkIChTY2hlZHVsZXIudCAoKSlcblxubGV0IGV4dHJhY3RfanNfZXJyb3IgKGV4biA6IGV4bikgOiBKcy5lcnJvciBKcy50IG9wdGlvbiA9XG4gIEpzLk9wdC50b19vcHRpb24gKEpzLmpzX2Vycm9yX29mX2V4biBleG4pXG47O1xuXG5sZXQgcnVuID1cbiAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IElkbGVcbiAgICAgIHwgUnVubmluZ1xuICAgICAgfCBXaWxsX3J1bl9zb29uXG4gIGVuZFxuICBpblxuICBsZXQgbW9kdWxlIE5leHRfd2FrZXVwID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgVGltZV9ucy50ICogZmxvYXRcbiAgICAgIHwgTm9fd2FrZXVwXG4gICAgICB8IFNvb25cbiAgZW5kXG4gIGluXG4gIGxldCBzdGF0ZSA9IHJlZiBTdGF0ZS5JZGxlIGluXG4gIGxldCB0aW1lb3V0cyA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBsZXQgcnVuX2FmdGVyIH5mIH5tcyA9IGlnbm9yZSAoRG9tX2h0bWwuc2V0VGltZW91dCBmIG1zIDogRG9tX2h0bWwudGltZW91dF9pZF9zYWZlKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBtYXRjaCAhc3RhdGUsIFNjaGVkdWxlci51bmNhdWdodF9leG4gdCB3aXRoXG4gICAgfCBfLCBTb21lIF8gfCBTdGF0ZS5SdW5uaW5nLCBOb25lIC0+ICgpXG4gICAgfCAoU3RhdGUuSWRsZSB8IFN0YXRlLldpbGxfcnVuX3Nvb24pLCBOb25lIC0+XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5SdW5uaW5nO1xuICAgICAgU2NoZWR1bGVyLnJ1bl9jeWNsZSB0O1xuICAgICAgbGV0IG5leHRfd2FrZXVwIDogTmV4dF93YWtldXAudCA9XG4gICAgICAgIGlmIFNjaGVkdWxlci5jYW5fcnVuX2Ffam9iIHRcbiAgICAgICAgdGhlbiBTb29uXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIFNjaGVkdWxlci5uZXh0X3VwY29taW5nX2V2ZW50IHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb193YWtldXBcbiAgICAgICAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgICAgICAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gICAgICAgICAgICBsZXQgZCA9IFRpbWVfbnMuZGlmZiBuZXh0IG5vdyBpblxuICAgICAgICAgICAgbGV0IGRfbXMgPSBUaW1lX25zLlNwYW4udG9fbXMgZCBpblxuICAgICAgICAgICAgaWYgRmxvYXQuKCA8PSApIGRfbXMgMC4gdGhlbiBTb29uIGVsc2UgQXQgKG5leHQsIGRfbXMpKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChTY2hlZHVsZXIudW5jYXVnaHRfZXhuX3Vud3JhcHBlZCB0KSB+ZjooZnVuIChleG4sIF9zZXhwKSAtPlxuICAgICAgICBtYXRjaCBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gd2l0aFxuICAgICAgICB8IEpzLkVycm9yIGVyciAtPiBKcy5yYWlzZV9qc19lcnJvciBlcnJcbiAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICAgICAgIHwgU29tZSBlcnIgLT5cbiAgICAgICAgICAgICAoKiBIYWNrIHRvIGdldCBhIGJldHRlciBiYWNrdHJhY2UgKilcbiAgICAgICAgICAgICAoKiBXZSBmaXJzdCBvdXRwdXQgdGhlIHN0cmluZ2lmaWVkIG9jYW1sIGV4Y2VwdGlvbiAqKVxuICAgICAgICAgICAgIEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKTtcbiAgICAgICAgICAgICAoKiBBbmQgdGhlbiByYWlzZSB0aGUgZW1iZWRkZWQgamF2YXNjcmlwdCBlcnJvciB0aGF0IHByb3ZpZGVzIGEgcHJvcGVyXG4gICAgICAgICAgICAgICAgYmFja3RyYWNlIHdpdGggZ29vZCBzb3VyY2VtYXAgc3VwcG9ydC5cbiAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGlzIGphdmFzY3JpcHQgZXJyb3IgaXMgcHJvYmFibHkgbm90IG1lYW5pbmdmdWwgd2hpY2ggaXMgd2h5XG4gICAgICAgICAgICAgICAgd2UgZmlyc3Qgb3V0cHV0IHRoZSBzZXJpYWxpemF0aW9uIG9mIG9jYW1sIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICBKcy5yYWlzZV9qc19lcnJvciBlcnIpKTtcbiAgICAgIChtYXRjaCBuZXh0X3dha2V1cCB3aXRoXG4gICAgICAgfCBOb193YWtldXAgLT4gc3RhdGUgOj0gSWRsZVxuICAgICAgIHwgU29vbiAtPlxuICAgICAgICAgc3RhdGUgOj0gV2lsbF9ydW5fc29vbjtcbiAgICAgICAgIHJ1bl9hZnRlciB+Zjpsb29wIH5tczowLlxuICAgICAgIHwgQXQgKGF0LCBkX21zKSAtPlxuICAgICAgICAgc3RhdGUgOj0gSWRsZTtcbiAgICAgICAgIGlmIFN0YWNrLmlzX2VtcHR5IHRpbWVvdXRzIHx8IFRpbWVfbnMuKCA8ICkgYXQgKFN0YWNrLnRvcF9leG4gdGltZW91dHMpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgU3RhY2sucHVzaCB0aW1lb3V0cyBhdDtcbiAgICAgICAgICAgcnVuX2FmdGVyIH5mOnJ1bl90aW1lb3V0IH5tczpkX21zKSlcbiAgYW5kIHJ1bl90aW1lb3V0ICgpID1cbiAgICAoKiBFYWNoIGNhbGwgdG8gW3J1bl90aW1lb3V0XSByZW1vdmVzIGV4YWN0bHkgb25lIGVsZW1lbnQgZnJvbSBbdGltZW91dHNdLiAgVGhpc1xuICAgICAgIG1haW50YWlucyB0aGUgaW52YXJpYW50IHRoYXQgW1N0YWNrLmxlbmd0aCB0aW1lb3V0c10gaXMgZXhhY3RseSB0aGUgbnVtYmVyIG9mXG4gICAgICAgb3V0c3RhbmRpbmcgdGltZW91dHMgd2UgaGF2ZSByZWdpc3RlcmVkLiAqKVxuICAgIGlnbm9yZSAoU3RhY2sucG9wX2V4biB0aW1lb3V0cyA6IFRpbWVfbnMudCk7XG4gICAgbG9vcCAoKVxuICBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAhc3RhdGUgd2l0aFxuICAgIHwgU3RhdGUuSWRsZSAtPlxuICAgICAgcnVuX2FmdGVyIH5mOmxvb3Agfm1zOjAuO1xuICAgICAgc3RhdGUgOj0gU3RhdGUuV2lsbF9ydW5fc29vblxuICAgIHwgU3RhdGUuUnVubmluZyB8IFN0YXRlLldpbGxfcnVuX3Nvb24gLT4gKClcbjs7XG5cbmxldCBsb2cgbmFtZSBleG4gPVxuICBsZXQgZXhuID1cbiAgICBtYXRjaCBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gd2l0aFxuICAgIHwgSnMuRXJyb3IgZXJyIC0+IGBKcyBlcnJcbiAgICB8IGV4biAtPlxuICAgICAgKG1hdGNoIGV4dHJhY3RfanNfZXJyb3IgZXhuIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYEV4biBleG5cbiAgICAgICB8IFNvbWUgZXJyIC0+IGBKc19hbmRfZXhuIChleG4sIGVycikpXG4gIGluXG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgYEpzIGVyciAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBuYW1lKSBlcnJcbiAgfCBgRXhuIGV4biAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIChFeG4udG9fc3RyaW5nIGV4bikpXG4gIHwgYEpzX2FuZF9leG4gKGV4biwgZXJyKSAtPlxuICAgIEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSkgZXJyXG47O1xuXG5sZXQgaW5pdGlhbGl6ZWRfcmVmID0gcmVmIGZhbHNlXG5cbmxldCBpbml0aWFsaXphdGlvbiA9XG4gIGxhenlcbiAgICAobGV0IHQgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgICBpbml0aWFsaXplZF9yZWYgOj0gdHJ1ZTtcbiAgICAgU2NoZWR1bGVyLnNldF9qb2JfcXVldWVkX2hvb2sgdCAoZnVuIF8gLT4gcnVuICgpKTtcbiAgICAgU2NoZWR1bGVyLnNldF9ldmVudF9hZGRlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBydW47XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuIDo9IGxvZyBcIkFzeW5jX2tlcm5lbDogTW9uaXRvci50cnlfd2l0aFwiO1xuICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzXG4gICAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IubWFpblxuICAgICAgIH5mOihsb2cgXCJBc3luY19rZXJuZWw6IFVuaGFuZGxlZCBleGNlcHRpb25cIik7XG4gICAgIHJ1biAoKSlcbjs7XG5cbmxldCBpbml0ICgpID0gZm9yY2UgaW5pdGlhbGl6YXRpb25cbmxldCBpbml0aWFsaXplZCAoKSA9ICFpbml0aWFsaXplZF9yZWZcblxubGV0IGRvY3VtZW50X2xvYWRlZCA9XG4gIGxldCBqc19zdHJpbmdfY29tcGFyZSBzID1cbiAgICBsZXQgY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsZV9lcXVhbF9mb3Jfc3RyaW5ncyA9IHBoeXNfZXF1YWwgaW5cbiAgICBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzIChKcy5zdHJpbmcgcylcbiAgaW5cbiAgbGV0IHJlYWR5X3N0YXRlX2NoYW5nZSA9IFwicmVhZHlzdGF0ZWNoYW5nZVwiIGluXG4gIGxldCBjb21wbGV0ZSA9IFwiY29tcGxldGVcIiBpblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZV9ldiA9IERvbS5FdmVudC5tYWtlIHJlYWR5X3N0YXRlX2NoYW5nZSBpblxuICBsZXQgYWRkX2V2ZW50IHRhcmdldCBldnQgaGFuZGxlciA9XG4gICAgaWdub3JlXG4gICAgICAoRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lciB0YXJnZXQgZXZ0IGhhbmRsZXIgSnMuX2ZhbHNlIDogRG9tLmV2ZW50X2xpc3RlbmVyX2lkKVxuICBpblxuICBmdW4gKCkgLT5cbiAgICBpZiBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICB0aGVuIEFzeW5jX2tlcm5lbC5EZWZlcnJlZC51bml0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbG9hZGVkID0gQXN5bmNfa2VybmVsLkl2YXIuY3JlYXRlICgpIGluXG4gICAgICBsZXQgaGFuZGxlciBldnQgPVxuICAgICAgICBpZiAobm90IChqc19zdHJpbmdfY29tcGFyZSByZWFkeV9zdGF0ZV9jaGFuZ2UgZXZ0IyMuX3R5cGUpKVxuICAgICAgICB8fCBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICAgICAgdGhlbiBBc3luY19rZXJuZWwuSXZhci5maWxsX2lmX2VtcHR5IGxvYWRlZCAoKTtcbiAgICAgICAgSnMuX3RydWVcbiAgICAgIGluXG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgRG9tX2h0bWwuRXZlbnQuZG9tQ29udGVudExvYWRlZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgcmVhZHlzdGF0ZWNoYW5nZV9ldiAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwud2luZG93IERvbV9odG1sLkV2ZW50LmxvYWQgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgQXN5bmNfa2VybmVsLkl2YXIucmVhZCBsb2FkZWQpXG47O1xuIiwibW9kdWxlIFJwYyA9IFJwY1xubW9kdWxlIEh0dHAgPSBIdHRwXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxuaW5jbHVkZSBBc3luY19qczBcblxubGV0IGxvZ19zID0gRGVidWcubG9nX3NcbmxldCBsb2dfc19hc19zdHJpbmcgPSBEZWJ1Zy5sb2dfc19hc19zdHJpbmdcbiIsIm9wZW4hIEJhc2VcblxuKCogVGhlIFtkYXRhXSBhcnJheSBpcyBhbiBpbXBsaWNpdCBiaW5hcnkgdHJlZSB3aXRoIFtjaGlsZHJlbl9sZW5ndGggKiAyIC0gMV0gbm9kZXMsXG4gICB3aXRoIGVhY2ggbm9kZSBiZWluZyB0aGUgc3VtIG9mIHRoZSB0d28gY2hpbGQgbm9kZXMgYW5kIHRoZSByb290IG5vZGUgYmVpbmcgdGhlIDB0aFxuICAgbm9kZS4gIFRoZSBsZWF2ZXMgb2YgdGhlIHRyZWUgYXJlIHRoZSBsYXN0IFtudW1fbGVhdmVzXSBub2Rlcy5cblxuICAgVGhlIGNoaWxkcmVuIGFyZSBub3QgbmVjZXNzYXJpbHkgYWxsIGF0IHRoZSBzYW1lIGxldmVsIG9mIHRoZSB0cmVlLiBGb3IgaW5zdGFuY2UgaWZcbiAgIHlvdSBoYXZlIDMgY2hpbGRyZW4gW3wgYTsgYjsgYyB8XTpcblxuICAge3ZcbiAgICAgICAgICBvXG4gICAgICAgICAvIFxcXG4gICAgICAgIG8gICBjXG4gICAgICAgLyBcXFxuICAgICAgYSAgIGJcbiAgIHZ9XG5cbiAgIFdlIHdhbnQgdGhpcyB0cmVlIHRvIGJlIHJlcHJlc2VudGF0ZWQgYXMgW3wgbzsgbzsgYzsgYTsgYiB8XSwgaS5lLiB3ZSBuZWVkIHRvIGFwcGx5XG4gICBmaXJzdCBhIHJvdGF0aW9uIHRoZW4gYSB0cmFuc2xhdGlvbiB0byBjb252ZXJ0IGFuIGluZGV4IGluIFt8IGE7IGI7IGMgfF0gdG8gYSAobGVhZilcbiAgIGluZGV4IGluIFt8IG87IG87IGM7IGE7IGIgfF0uICopXG50eXBlICdhIHQgPVxuICB7IGRhdGEgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7IG51bV9sZWF2ZXMgOiBpbnRcbiAgOyBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgOiBpbnRcbiAgOyByZWR1Y2UgOiAnYSAtPiAnYSAtPiAnYVxuICA7IHNleHBfb2ZfYSA6ICdhIC0+IFNleHAudFxuICB9XG5cbmxldCBsZW5ndGggdCA9IHQubnVtX2xlYXZlc1xuXG4oKiB7dlxuICAgICBwYXJlbnQ6ICAgICAgMCAgMSAgMiAgMyAgNCAgNSAgNiAgNyAgOCAgOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAuLi5cbiAgICAgbGVmdCBjaGlsZDogIDEgIDMgIDUgIDcgIDkgMTEgMTMgMTUgMTcgMTkgMjEgMjMgMjUgMjcgMjkgMzEgMzMgMzUgMzcgMzkgLi4uXG4gICAgIHJpZ2h0IGNoaWxkOiAyICA0ICA2ICA4IDEwIDEyIDE0IDE2IDE4IDIwIDIyIDI0IDI2IDI4IDMwIDMyIDM0IDM2IDM4IDQwIC4uLiB2fSAqKVxubGV0IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXggPSAoY2hpbGRfaW5kZXggLSAxKSAvIDJcbmxldCBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXggPSAocGFyZW50X2luZGV4ICogMikgKyAxXG5sZXQgcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXggPSBsZWZ0X2NoaWxkX2luZGV4ICsgMVxuXG4oKiBUaGUgZmlyc3QgW251bV9sZWF2ZXMtMV0gZWxlbWVudHMgYXJlIGludGVybmFsIG5vZGVzIG9mIHRoZSB0cmVlLiAgVGhlIG5leHRcbiAgIFtudW1fbGVhdmVzXSBlbGVtZW50cyBhcmUgdGhlIGxlYXZlcy4gKilcbmxldCBudW1fYnJhbmNoZXMgdCA9IHQubnVtX2xlYXZlcyAtIDFcbmxldCBpbmRleF9pc19sZWFmIHQgaSA9IGkgPj0gbnVtX2JyYW5jaGVzIHRcblxuKCogVGhlIHRyZWUgaXMgY29tcGxldGUsIGJ1dCBub3QgbmVjZXNzYXJpbHkgcGVyZmVjdCwgc28gd2UgcGVyZm9ybSBzb21lIHJvdGF0aW9uIG9mIHRoZVxuICAgbGVhdmVzIHRvIGVuc3VyZSB0aGF0IG91ciByZWR1Y3Rpb25zIHByZXNlcnZlIG9yZGVyaW5nLiAqKVxubGV0IGxlYWZfaW5kZXggdCBpID1cbiAgKCogVGhlIHRyZWUgbGF5b3V0IGlzIGxldmVsIG9yZGVyLiAgQW55IGxlYXZlcyBpbiB0aGUgc2Vjb25kIHRvIGxhc3QgbGV2ZWwgbmVlZCB0byBvY2N1clxuICAgICBpbiB0aGUgYXJyYXkgYmVmb3JlIHRoZSBsZWF2ZXMgaW4gdGhlIGJvdHRvbSBsZXZlbC4gKilcbiAgbGV0IHJvdGF0ZWRfaW5kZXggPVxuICAgIGxldCBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPSBpICsgdC5udW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgaW5cbiAgICBpZiBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPCB0Lm51bV9sZWF2ZXNcbiAgICB0aGVuIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheVxuICAgIGVsc2Ugb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5IC0gdC5udW1fbGVhdmVzXG4gIGluXG4gICgqIFRoZSBsZWF2ZXMgb2NjdXIgYWZ0ZXIgdGhlIGJyYW5jaGVzIGluIHRoZSBhcnJheS4gKilcbiAgcm90YXRlZF9pbmRleCArIG51bV9icmFuY2hlcyB0XG47O1xuXG5sZXQgZ2V0X2xlYWYgdCBpID0gT3B0aW9uX2FycmF5LmdldCB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXRfbGVhZiB0IGkpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0b19saXN0IHQgOiBhIG9wdGlvbiBsaXN0KV1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgZm9yIGkgPSAwIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZGF0YSAtIDEgZG9cbiAgICBtYXRjaCBPcHRpb25fYXJyYXkuZ2V0IGRhdGEgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnVtX2JyYW5jaGVzIHQgLSAxIGRvXG4gICAgbGV0IGxlZnQgPSBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXg6aSBpblxuICAgIGxldCByaWdodCA9IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4OmxlZnQgaW5cbiAgICBsZXQgbGVmdF9pc19ub25lID0gT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBsZWZ0IGluXG4gICAgbGV0IHJpZ2h0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHJpZ2h0IGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgZGF0YSBpXG4gICAgdGhlbiBhc3NlcnQgKG5vdCAobGVmdF9pc19ub25lIHx8IHJpZ2h0X2lzX25vbmUpKVxuICAgIGVsc2VcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIGluZGV4X2lzX2xlYWYgdCBsZWZ0IHx8IGluZGV4X2lzX2xlYWYgdCByaWdodCB8fCBsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSlcbiAgZG9uZVxuOztcblxubGV0IGNyZWF0ZV9leG4gPyhzZXhwX29mX2EgPSBbJXNleHBfb2Y6IF9dKSAoKSB+bGVuOm51bV9sZWF2ZXMgfnJlZHVjZSA9XG4gIGlmIG51bV9sZWF2ZXMgPCAxXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJub24tcG9zaXRpdmUgbnVtYmVyIG9mIGxlYXZlcyBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgKG51bV9sZWF2ZXMgOiBpbnQpXTtcbiAgbGV0IG51bV9icmFuY2hlcyA9IG51bV9sZWF2ZXMgLSAxIGluXG4gIGxldCBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgPSBJbnQuY2VpbF9wb3cyIG51bV9sZWF2ZXMgLSBudW1fbGVhdmVzIGluXG4gIGxldCBkYXRhID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOihudW1fYnJhbmNoZXMgKyBudW1fbGVhdmVzKSBpblxuICB7IGRhdGE7IG51bV9sZWF2ZXM7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbDsgcmVkdWNlOyBzZXhwX29mX2EgfVxuOztcblxubGV0IHZhbGlkYXRlX2luZGV4IHQgaSA9XG4gIGlmIGkgPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJhdHRlbXB0IHRvIGFjY2VzcyBuZWdhdGl2ZSBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgfmluZGV4OihpIDogaW50KV07XG4gIGxldCBsZW5ndGggPSB0Lm51bV9sZWF2ZXMgaW5cbiAgaWYgaSA+PSBsZW5ndGhcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgaW5kZXggaW4gYmFsYW5jZWQgcmVkdWNlclwiXG4gICAgICAgICAgfmluZGV4OihpIDogaW50KVxuICAgICAgICAgIChsZW5ndGggOiBpbnQpXVxuOztcblxubGV0IHNldF9leG4gdCBpIGEgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIGxldCBkYXRhID0gdC5kYXRhIGluXG4gIGxldCBpID0gcmVmIChsZWFmX2luZGV4IHQgaSkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIGRhdGEgIWkgYTtcbiAgd2hpbGUgIWkgPD4gMCBkb1xuICAgIGxldCBwYXJlbnQgPSBwYXJlbnRfaW5kZXggfmNoaWxkX2luZGV4OiFpIGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBwYXJlbnRcbiAgICB0aGVuIGkgOj0gMFxuICAgIGVsc2UgKFxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBkYXRhIHBhcmVudDtcbiAgICAgIGkgOj0gcGFyZW50KVxuICBkb25lXG47O1xuXG5sZXQgZ2V0X2V4biB0IGkgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5kYXRhIChsZWFmX2luZGV4IHQgaSlcbjs7XG5cbmxldCByZWMgY29tcHV0ZV9leG4gdCBpID1cbiAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgdC5kYXRhIGlcbiAgdGhlbiBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmRhdGEgaVxuICBlbHNlIChcbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGlmIGxlZnQgPj0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmRhdGFcbiAgICB0aGVuIChcbiAgICAgICgqIElmIHdlIGdldCBoZXJlLCB0aGUgcGFyZW50IHdhcyBhbiB1bnNldCBsZWFmLiAqKVxuICAgICAgbGV0IHNleHBfb2ZfYSA9IHQuc2V4cF9vZl9hIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiYXR0ZW1wdCB0byBjb21wdXRlIGJhbGFuY2VkIHJlZHVjZXIgd2l0aCB1bnNldCBlbGVtZW50c1wiXG4gICAgICAgICAgICB+YmFsYW5jZWRfcmVkdWNlcjoodCA6IGEgdCldKTtcbiAgICBsZXQgYSA9IHQucmVkdWNlIChjb21wdXRlX2V4biB0IGxlZnQpIChjb21wdXRlX2V4biB0IHJpZ2h0KSBpblxuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5kYXRhIGkgYTtcbiAgICBhKVxuOztcblxubGV0IGNvbXB1dGVfZXhuIHQgPSBjb21wdXRlX2V4biB0IDBcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBpbml0IDogJ2FcbiAgOyBzdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgeyBpbml0OyBzdGVwcyA9IF8gfSA9IGludmFyaWFudF9hIGluaXRcblxubGV0IHJlYyB2YWx1ZV9pbnRlcm5hbCBpbml0IHN0ZXBzIH5hdCA9XG4gIG1hdGNoIFNlcXVlbmNlLm5leHQgc3RlcHMgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgKCh0LCBhKSwgc3RlcHMpIC0+XG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCB0IHRoZW4gaW5pdCBlbHNlIHZhbHVlX2ludGVybmFsIGEgc3RlcHMgfmF0XG47O1xuXG5sZXQgdmFsdWUgdCB+YXQgPSB2YWx1ZV9pbnRlcm5hbCB0LmluaXQgdC5zdGVwcyB+YXRcbmxldCBjb25zdGFudCBpbml0ID0geyBpbml0OyBzdGVwcyA9IFNlcXVlbmNlLmVtcHR5IH1cblxubGV0IGNyZWF0ZV9leG4gfmluaXQgfnN0ZXBzID1cbiAgaWYgbm90XG4gICAgICAgKExpc3QuaXNfc29ydGVkIHN0ZXBzIH5jb21wYXJlOihmdW4gKHRpbWUxLCBfKSAodGltZTIsIF8pIC0+XG4gICAgICAgICAgVGltZV9ucy5jb21wYXJlIHRpbWUxIHRpbWUyKSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTdGVwX2Z1bmN0aW9uLmNyZWF0ZV9leG5dIGdvdCB1bnNvcnRlZCB0aW1lc1wiXG4gICAgICAgICAgfnN0ZXBzOihzdGVwcyB8PiBMaXN0Lm1hcCB+Zjpmc3QgOiBUaW1lX25zLnQgbGlzdCldO1xuICB7IGluaXQ7IHN0ZXBzID0gc3RlcHMgfD4gU2VxdWVuY2Uub2ZfbGlzdCB9XG47O1xuXG5sZXQgY3JlYXRlX2Zyb21fc2VxdWVuY2UgfmluaXQgfnN0ZXBzID0geyBpbml0OyBzdGVwcyB9XG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBXZWFrID0gQ2FtbC5XZWFrXG5cbnR5cGUgJ2EgdCA9ICdhIEhlYXBfYmxvY2sudCBXZWFrLnRcblxubGV0IGNyZWF0ZSB+bGVuID0gV2Vhay5jcmVhdGUgbGVuXG5sZXQgbGVuZ3RoIHQgPSBXZWFrLmxlbmd0aCB0XG5sZXQgc2V0ID0gV2Vhay5zZXRcblxubGV0IHNldF9leG4gdCBpIHggPSBzZXQgdCBpIChPcHRpb24ubWFwIHggfmY6SGVhcF9ibG9jay5jcmVhdGVfZXhuKVxuXG5sZXQgZ2V0ID0gV2Vhay5nZXRcbmxldCBpc19zb21lIHQgaSA9IFdlYWsuY2hlY2sgdCBpXG5sZXQgaXNfbm9uZSB0IGkgPSBub3QgKGlzX3NvbWUgdCBpKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IGdldCB0IGkpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwX29mOiBhIEhlYXBfYmxvY2sudCBvcHRpb24gYXJyYXldICh0b19hcnJheSB0KVxuXG5sZXQgaXRlciB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGdldCB0IGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IGYgKEhlYXBfYmxvY2sudmFsdWUgdilcbiAgZG9uZVxuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBnZXQgdCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBmIGkgKEhlYXBfYmxvY2sudmFsdWUgdilcbiAgZG9uZVxuXG5sZXQgYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIFdlYWsuYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbiIsIigqIFdlIGltcGxlbWVudCBhIHdlYWsgcG9pbnRlciB1c2luZyBhIFtXZWFrX2FycmF5LnRdLiAqKVxuXG5vcGVuISBDb3JlXG5cbnR5cGUgJ2EgdCA9ICdhIFdlYWtfYXJyYXkudFxuXG5sZXQgY3JlYXRlICgpID0gV2Vha19hcnJheS5jcmVhdGUgfmxlbjoxXG5cbigqIFdlIHVzZSBhIHdlYWsgYXJyYXkgb2YgbGVuZ3RoIDEsIHNvIHRoZSB3ZWFrIHBvaW50ZXIgaXMgYXQgaW5kZXggMC4gKilcbmxldCBpbmRleCA9IDBcblxubGV0IGdldCB0ID0gV2Vha19hcnJheS5nZXQgdCBpbmRleFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwIChnZXQgdCA6IGEgSGVhcF9ibG9jay50IG9wdGlvbildXG5cbmxldCBpc19ub25lIHQgPSBXZWFrX2FycmF5LmlzX25vbmUgdCBpbmRleFxubGV0IGlzX3NvbWUgdCA9IFdlYWtfYXJyYXkuaXNfc29tZSB0IGluZGV4XG5cbmxldCBzZXQgdCBibG9jayA9IFdlYWtfYXJyYXkuc2V0IHQgaW5kZXggKFNvbWUgYmxvY2spXG4iLCJvcGVuISBJbXBvcnRcblxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoJ2EsICdiIFdlYWtfcG9pbnRlci50KSBIYXNodGJsLnRcbiAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICAgICAgICAgIDogJ2EgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgOiB1bml0IC0+IHVuaXRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlID1cbiAgICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfmhhc2hhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpXG4gICAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgPSBpZ25vcmVcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIFVzaW5nX2hhc2hhYmxlLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2h0YmwuSGFzaGFibGUub2Zfa2V5IG0pXG47O1xuXG5sZXQgc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHQgfnRocmVhZF9zYWZlX2YgPVxuICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhIDwtIHRocmVhZF9zYWZlX2Y7XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID0gSGFzaHRibC5yZW1vdmUgdC5lbnRyeV9ieV9rZXkga2V5XG5cbigqIEluIG9yZGVyIGZvciBhIGNhbGwgdG8gW3JlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YV0gdG8gcmVjbGFpbSBhIGtleSB0aGF0XG4gICB3YXMgcHJldmlvdXNseSBmaW5hbGl6ZWQsIHRoZSB3ZWFrIHBvaW50ZXIgbXVzdCBoYXZlIGJlZW4gY2xlYXJlZC4gIFRoaXMgcmVsaWVzIG9uIHRoZVxuICAgZmFjdCB0aGF0IHRoZSBPQ2FtbCBnYXJiYWdlIGNvbGxlY3RvciBjbGVhcnMgd2Vha3MgYW5kIHRoZW4gcnVucyBmaW5hbGl6ZXJzLiAqKVxubGV0IHJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQua2V5c193aXRoX3VudXNlZF9kYXRhID4gMCBkb1xuICAgIGxldCBrZXkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlbnRyeSAtPiBpZiBXZWFrX3BvaW50ZXIuaXNfbm9uZSBlbnRyeSB0aGVuIHJlbW92ZSB0IGtleVxuICBkb25lO1xuOztcblxubGV0IGdldF9lbnRyeSB0IGtleSA9XG4gIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5lbnRyeV9ieV9rZXkga2V5XG4gICAgfmRlZmF1bHQ6KGZ1biAoKSAtPiBXZWFrX3BvaW50ZXIuY3JlYXRlICgpKTtcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuOztcblxubGV0IGtleV9pc191c2luZ19zcGFjZSB0IGtleSA9IEhhc2h0YmwubWVtIHQuZW50cnlfYnlfa2V5IGtleVxuXG5sZXQgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YSA9XG4gIFdlYWtfcG9pbnRlci5zZXQgZW50cnkgZGF0YTtcbiAgR2MuRXhwZXJ0LmFkZF9maW5hbGl6ZXJfbGFzdCBkYXRhIChmdW4gKCkgLT5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQua2V5c193aXRoX3VudXNlZF9kYXRhIGtleTtcbiAgICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhICgpKTtcbjs7XG5cbmxldCByZXBsYWNlIHQgfmtleSB+ZGF0YSA9IHNldF9kYXRhIHQga2V5IChnZXRfZW50cnkgdCBrZXkpIGRhdGFcblxubGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgbGV0IGVudHJ5ID0gZ2V0X2VudHJ5IHQga2V5IGluXG4gIGlmIFdlYWtfcG9pbnRlci5pc19zb21lIGVudHJ5XG4gIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJXZWFrX2hhc2h0YmwuYWRkX2V4biBvZiBrZXkgaW4gdXNlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbjs7XG5cbmxldCBmaW5kIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5XG47O1xuXG5sZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICBsZXQgZW50cnkgPSBnZXRfZW50cnkgdCBrZXkgaW5cbiAgbWF0Y2ggV2Vha19wb2ludGVyLmdldCBlbnRyeSB3aXRoXG4gIHwgU29tZSB2IC0+IHZcbiAgfCBOb25lIC0+XG4gICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbiAgICBkYXRhXG47O1xuIiwidHlwZSB0ID1cbiAgfCBCZWZvcmVcbiAgfCBBZnRlclxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIlslJWltcG9ydCBcImRlYnVnLm1saFwiXVxuXG5vcGVuIENvcmVcbmluY2x1ZGUgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4oKiBBbGwgW2Fzc2VydF1zIGFuZCBvdGhlciBjaGVja3MgdGhyb3VnaG91dCB0aGUgY29kZSBhcmUgZ3VhcmRlZCBieSBbaWYgZGVidWddLiAgVGhlXG4gICBERUJVRyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIGxpYiBbaW5jcmVtZW50YWxdIGFuZCB1bnNldCBpbiB0aGUgbGliXG4gICBbaW5jcmVtZW50YWxfZGVidWddLCBidXQgYXBhcnQgZnJvbSB0aGF0IHRoZXkgYXJlIGlkZW50aWNhbC4gIFRlc3RzIGFyZSBydW4gd2l0aCBib3RoXG4gICB0aGUgcHJvZHVjdGlvbiBhbmQgZGVidWcgbGliLCBhbmQgdXNlcnMgY2FuIGNob29zZSB0byBidWlsZCB3aXRoIHRoZSBkZWJ1ZyBsaWJyYXJ5LCBpZlxuICAgdGhleSBzdXNwZWN0IHRoZXkgZm91bmQgYSBidWcgaW4gaW5jcmVtZW50YWwuICopXG5cblslJWlmIEpTQ19ERUJVR11cblxubGV0IGRlYnVnID0gdHJ1ZVxuXG5bJSVlbHNlXVxuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5bJSVlbmRpZl1cblxubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcbmxldCB0YWcgbmFtZSBhIHNleHBfb2ZfYSA9IChuYW1lLCBhKSB8PiBbJXNleHBfb2Y6IHN0cmluZyAqIGFdXG5cbm1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gSW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBcnJheVxuXG4gICgqIE5vdCBkZWZpbmluZyBhbGlhc2VzIGluIHByb2R1Y3Rpb24gbW9kZSwgc2luY2UgdGhleSBicmVhayB0eXBlIHNwZWNpYWxpemF0aW9uIG9mXG4gICAgIGFycmF5IGFjY2Vzc2VzLiAqKVxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuIGEgPVxuICAgIGxldCBuZXdfdCA9IGNyZWF0ZSB+bGVuIGEgaW5cbiAgICBBcnJheS5ibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgVW9wdCA9IHN0cnVjdFxuICBpbmNsdWRlIFVvcHRcblxuICBsZXQgdW5zYWZlX3ZhbHVlID0gaWYgZGVidWcgdGhlbiB2YWx1ZV9leG4gZWxzZSB1bnNhZmVfdmFsdWVcbmVuZFxuXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaWZvcm1fYXJyYXlcblxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRfd2l0aF9jYW1sX21vZGlmeVxuXG4gIFslJWVsc2VdXG5cbiAgKCogVW5pZm9ybV9hcnJheSBpcyBiZWluZyBcInNtYXJ0XCIgYnkgY2hlY2tpbmcgaWYgZWxlbWVudHMgYXJlIGludGVnZXJzLCBidXQgVW9wdC50XG4gICAgIGFsbW9zdCBuZXZlciBjb250YWluIGludGVnZXJzLCBzbyB0aGUgZXh0cmEgY2hlY2sgdG8gbWFrZSBnZW5lcmF0ZWQgY29kZSBoYXJkZXIgdG9cbiAgICAgcmVhZCBhbmQgcG90ZW50aWFsbHkgc2xvd2VyLiAqKVxuICBsZXQgdW5zYWZlX3NldCA9IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeVxuICBsZXQgc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBVb3B0Lm5vbmUgaW5cbiAgICBibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgKCogV2Ugc3BlY2lhbGl6ZSBzb21lIGN1dG9mZnMgdG8gYXZvaWQgYW4gaW5kaXJlY3QgZnVuY3Rpb24gY2FsbDsgaW4gcGFydGljdWxhciB3ZVxuICAgICBzcGVjaWFsaXplIHRoZSBkZWZhdWx0IChhbmQgaGVuY2Ugb3ZlcndoZWxtaW5nbHkgY29tbW9uKSBjYXNlIG9mIHBoeXNpY2FsXG4gICAgIGVxdWFsaXR5LiAqKVxuICB8IEFsd2F5c1xuICB8IE5ldmVyXG4gIHwgUGh5c19lcXVhbFxuICB8IENvbXBhcmUgb2YgKCdhIC0+ICdhIC0+IGludClcbiAgfCBFcXVhbCBvZiAoJ2EgLT4gJ2EgLT4gYm9vbClcbiAgfCBGIG9mIChvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+IGJvb2wpXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBBbHdheXMgfCBOZXZlciB8IFBoeXNfZXF1YWwgfCBDb21wYXJlIF8gfCBFcXVhbCBfIHwgRiBfIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBmID0gRiBmXG5sZXQgb2ZfY29tcGFyZSBmID0gQ29tcGFyZSBmXG5sZXQgb2ZfZXF1YWwgZiA9IEVxdWFsIGZcbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgYWx3YXlzID0gQWx3YXlzXG5sZXQgcG9seV9lcXVhbCA9IEVxdWFsIFBvbHkuZXF1YWxcblxubGV0IHNob3VsZF9jdXRvZmYgdCB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQaHlzX2VxdWFsIC0+IHBoeXNfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IE5ldmVyIC0+IGZhbHNlXG4gIHwgQWx3YXlzIC0+IHRydWVcbiAgfCBDb21wYXJlIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlID0gMFxuICB8IEVxdWFsIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlXG4gIHwgRiBmIC0+IGYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG47O1xuXG5sZXQgZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEFsd2F5cywgQWx3YXlzIC0+IHRydWVcbiAgfCBBbHdheXMsIF8gLT4gZmFsc2VcbiAgfCBOZXZlciwgTmV2ZXIgLT4gdHJ1ZVxuICB8IE5ldmVyLCBfIC0+IGZhbHNlXG4gIHwgUGh5c19lcXVhbCwgUGh5c19lcXVhbCAtPiB0cnVlXG4gIHwgUGh5c19lcXVhbCwgXyAtPiBmYWxzZVxuICB8IENvbXBhcmUgZjEsIENvbXBhcmUgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IENvbXBhcmUgXywgXyAtPiBmYWxzZVxuICB8IEVxdWFsIGYxLCBFcXVhbCBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgRXF1YWwgXywgXyAtPiBmYWxzZVxuICB8IEYgZjEsIEYgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEYgXywgXyAtPiBmYWxzZVxuOztcblxubGV0IHBoeXNfZXF1YWwgPSBQaHlzX2VxdWFsXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RyaW5nX2xpc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5tYWtlIH5zZXhwX29mX3QgfmNvbXBhcmUpXG5lbmRcblxudHlwZSBkb3QgPVxuICB7IGxhYmVsIDogU2V0Lk0oU3RyaW5nX2xpc3QpLnRcbiAgOyBhdHRyaWJ1dGVzIDogc3RyaW5nIFN0cmluZy5NYXAudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPVxuICB8IERvdCBvZiBkb3RcbiAgfCBJbmZvIG9mIEluZm8udFxuICB8IEFwcGVuZCBvZlxuICAgICAgeyBwcmlvciA6IHRcbiAgICAgIDsgbmV3XyA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmZvIGluZm8gPSBJbmZvIGluZm9cbmxldCBhcHBlbmQgcHJpb3IgbmV3XyA9IEFwcGVuZCB7IHByaW9yOyBuZXdfIH1cblxubGV0IGRvdCB+bGFiZWwgfmF0dHJpYnV0ZXMgPVxuICBsZXQgbGFiZWwgPSBTZXQuc2luZ2xldG9uIChtb2R1bGUgU3RyaW5nX2xpc3QpIGxhYmVsIGluXG4gIERvdCB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCByZWMgdG9fZG90ID0gZnVuY3Rpb25cbiAgfCBJbmZvIGkgLT5cbiAgICB7IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBbIEluZm8udG9fc3RyaW5nX2h1bSBpIF1cbiAgICA7IGF0dHJpYnV0ZXMgPSBTdHJpbmcuTWFwLmVtcHR5XG4gICAgfVxuICB8IERvdCBkb3QgLT4gZG90XG4gIHwgQXBwZW5kIHsgcHJpb3I7IG5ld18gfSAtPlxuICAgIGxldCBwcmlvciA9IHRvX2RvdCBwcmlvciBpblxuICAgIGxldCBuZXdfID0gdG9fZG90IG5ld18gaW5cbiAgICBsZXQgbGFiZWwgPSBTZXQudW5pb24gcHJpb3IubGFiZWwgbmV3Xy5sYWJlbCBpblxuICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgIE1hcC5tZXJnZV9za2V3ZWRcbiAgICAgICAgcHJpb3IuYXR0cmlidXRlc1xuICAgICAgICBuZXdfLmF0dHJpYnV0ZXNcbiAgICAgICAgfmNvbWJpbmU6KGZ1biB+a2V5Ol8gX2xlZnQgcmlnaHQgLT4gcmlnaHQpXG4gICAgaW5cbiAgICB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCBlc2NhcGVfZG90X3N0cmluZyBzID1cbiAgKCogaHR0cHM6Ly9ncmFwaHZpei5vcmcvZG9jL2luZm8vbGFuZy5odG1sICopXG4gIFwiXFxcIlwiIF4gU3RyaW5nLnN1YnN0cl9yZXBsYWNlX2FsbCBzIH5wYXR0ZXJuOlwiXFxcIlwiIH53aXRoXzpcIlxcXFxcXFwiXCIgXiBcIlxcXCJcIlxuOztcblxubGV0IGVzY2FwZV9yZWNvcmRfbGFiZWwgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL3NoYXBlcy5odG1sICopXG4gIFN0cmluZy5jb25jYXRfbWFwIHMgfmY6KGZ1bmN0aW9uXG4gICAgfCAoJzwnIHwgJz4nIHwgJ3snIHwgJ30nIHwgJ3wnIHwgJ1xcXFwnIHwgJyAnKSBhcyBjIC0+IFwiXFxcXFwiIF4gU3RyaW5nLm9mX2NoYXIgY1xuICAgIHwgYyAtPiBTdHJpbmcub2ZfY2hhciBjKVxuOztcblxubGV0IHRvX3N0cmluZyB+bmFtZSB7IGxhYmVsOyBhdHRyaWJ1dGVzIH0gPVxuICBsZXQgbGFiZWwgPVxuICAgIGxhYmVsXG4gICAgfD4gU2V0LnRvX2xpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGNvbHMgLT5cbiAgICAgIFwie1wiIF4gU3RyaW5nLmNvbmNhdCAoTGlzdC5tYXAgY29scyB+Zjplc2NhcGVfcmVjb3JkX2xhYmVsKSB+c2VwOlwifFwiIF4gXCJ9XCIpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwifFwiXG4gICAgfD4gZnVuIHMgLT4gXCJ7XCIgXiBzIF4gXCJ9XCJcbiAgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGF0dHJpYnV0ZXNcbiAgICB8PiBNYXAudG9fYWxpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgc3ByaW50ZiB7fCAlcz0lc3x9IChlc2NhcGVfZG90X3N0cmluZyBrKSAoZXNjYXBlX2RvdF9zdHJpbmcgdikpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG4gIGluXG4gIHNwcmludGYge3wgICVzIFtzaGFwZT1NcmVjb3JkIGxhYmVsPSVzICVzXXx9IG5hbWUgKGVzY2FwZV9kb3Rfc3RyaW5nIGxhYmVsKSBhdHRyaWJ1dGVzXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAxKVxuXG5sZXQgbmV4dCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAtMSlcbmxldCBub25lID0gLTFcbmxldCBpc19ub25lIHQgPSB0ID0gbm9uZVxubGV0IGlzX3NvbWUgdCA9IHQgPj0gMFxubGV0IGFkZDEgdCA9IHQgKyAxXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFByZXZpb3VzX3VwZGF0ZV9raW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWRcbiAgICB8IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIE5vZGVfdXBkYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBOZWNlc3Nhcnkgb2YgJ2FcbiAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBmIDogJ2EgTm9kZV91cGRhdGUudCAtPiB1bml0XG4gIDsgbXV0YWJsZSBwcmV2aW91c191cGRhdGVfa2luZCA6IFByZXZpb3VzX3VwZGF0ZV9raW5kLnRcbiAgOyBjcmVhdGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGYgfmF0OmNyZWF0ZWRfYXQgPSB7IGY7IHByZXZpb3VzX3VwZGF0ZV9raW5kID0gTmV2ZXJfYmVlbl91cGRhdGVkOyBjcmVhdGVkX2F0IH1cblxubGV0IHJlYWxseV9ydW4gdCAobm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQpID1cbiAgdC5wcmV2aW91c191cGRhdGVfa2luZFxuICA8LSAobWF0Y2ggbm9kZV91cGRhdGUgd2l0aFxuICAgIHwgTmVjZXNzYXJ5IF8gLT4gTmVjZXNzYXJ5XG4gICAgfCBDaGFuZ2VkIF8gLT4gQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWQgLT4gSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5IC0+IFVubmVjZXNzYXJ5KTtcbiAgdC5mIG5vZGVfdXBkYXRlXG47O1xuXG5sZXQgcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSB+bm93ID1cbiAgKCogV2Ugb25seSBydW4gdGhlIGhhbmRsZXIgaWYgd2FzIGNyZWF0ZWQgaW4gYW4gZWFybGllciBzdGFiaWxpemF0aW9uIGN5Y2xlLiAgSWYgdGhlXG4gICAgIGhhbmRsZXIgd2FzIGNyZWF0ZWQgYnkgYW5vdGhlciBvbi11cGRhdGUgaGFuZGxlciBkdXJpbmcgdGhlIHJ1bm5pbmcgb2Ygb24tdXBkYXRlXG4gICAgIGhhbmRsZXJzIGluIHRoZSBjdXJyZW50IHN0YWJpbGl6YXRpb24sIHdlIHRyZWF0IHRoZSBhZGRlZCBoYW5kbGVyIGFzIGlmIGl0IHdlcmUgYWRkZWRcbiAgICAgYWZ0ZXIgdGhpcyBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgV2Ugd2lsbCBydW4gaXQgYXQgdGhlIG5leHQgc3RhYmlsaXphdGlvbiwgYmVjYXVzZVxuICAgICB0aGUgbm9kZSB3aXRoIHRoZSBoYW5kbGVyIHdhcyBwdXNoZWQgb24gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB0LmNyZWF0ZWRfYXQgbm93IDwgMFxuICB0aGVuIChcbiAgICBtYXRjaCB0LnByZXZpb3VzX3VwZGF0ZV9raW5kLCBub2RlX3VwZGF0ZSB3aXRoXG4gICAgKCogT25jZSBhIG5vZGUgaXMgaW52YWxpZGF0ZWQsIHRoZXJlIHdpbGwgbmV2ZXIgYmUgZnVydGhlciBpbmZvcm1hdGlvbiB0byBwcm92aWRlLFxuICAgICAgIHNpbmNlIGluY3JlbWVudGFsIGRvZXMgbm90IGFsbG93IGFuIGludmFsaWQgbm9kZSB0byBiZWNvbWUgdmFsaWQuICopXG4gICAgfCBJbnZhbGlkYXRlZCwgXyAtPiAoKVxuICAgICgqIFRoZXNlIGNhc2VzIGNhbiBoYXBwZW4gaWYgYSBub2RlIGlzIGhhbmRsZWQgYWZ0ZXIgc3RhYmlsaXphdGlvbiBkdWUgdG8gYW5vdGhlclxuICAgICAgIGhhbmRsZXIuICBCdXQgZm9yIHRoZSBjdXJyZW50IGhhbmRsZXIsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gYmVjYXVzZSB0aGVyZSBpcyBub1xuICAgICAgIG5ldyBpbmZvcm1hdGlvbiB0byBwcm92aWRlLiAqKVxuICAgIHwgQ2hhbmdlZCwgTmVjZXNzYXJ5IF8gfCBOZWNlc3NhcnksIE5lY2Vzc2FyeSBfIHwgVW5uZWNlc3NhcnksIFVubmVjZXNzYXJ5IC0+ICgpXG4gICAgKCogSWYgdGhpcyBoYW5kbGVyIGhhc24ndCBzZWVuIGEgbm9kZSB0aGF0IGlzIGNoYW5naW5nLCB3ZSB0cmVhdCB0aGUgdXBkYXRlIGFzIGFuXG4gICAgICAgaW5pdGlhbGl6YXRpb24uICopXG4gICAgfCAoTmV2ZXJfYmVlbl91cGRhdGVkIHwgVW5uZWNlc3NhcnkpLCBDaGFuZ2VkIChfLCBhKSAtPiByZWFsbHlfcnVuIHQgKE5lY2Vzc2FyeSBhKVxuICAgICgqIEFsbCBvdGhlciB1cGRhdGVzIGFyZSBydW4gYXMgaXMuICopXG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWQsIChOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpXG4gICAgfCBVbm5lY2Vzc2FyeSwgKE5lY2Vzc2FyeSBfIHwgSW52YWxpZGF0ZWQpXG4gICAgfCBOZWNlc3NhcnksIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgQ2hhbmdlZCwgKENoYW5nZWQgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpIC0+IHJlYWxseV9ydW4gdCBub2RlX3VwZGF0ZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IGV4biA6IGV4blxuICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgZXhuID0geyBleG47IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgfVxuIiwiKCogVGhpcyBtb2R1bGUgaGFzIGEgZ2lhbnQgW21vZHVsZSByZWNdIGRlZmluaW5nIGFsbCB0aGUgbXV0dWFsbHkgcmVjdXJzaXZlIHR5cGVzIHVzZWRcbiAgIGluIHRoZSBpbXBsZW1lbnRhdGlvbi4gIFRoZSBkZWZpbml0aW9uIG9mIGVhY2ggdHlwZSBpcyB0aGVuIHJlcGVhdGVkIGluIGl0cyBmaWxlO1xuICAgY29tbWVudHMgYmVsb25nIHRoZXJlLCBub3QgaGVyZS5cblxuICAgV2UgcHV0IGp1c3QgZW5vdWdoIHNleHAgY29udmVydGVycyBoZXJlIHRvIGRpc3BsYXkgbm9kZSBpZHMuICBUaGUgZGV0YWlsZWQgc2V4cFxuICAgY29udmVydGVycyBhcmUgZ2VuZXJhdGVkIHZpYSBbd2l0aCBzZXhwXSBpbiB0aGUgaW5kaXZpZHVhbCBmaWxlcy4gIERlZmluaW5nIHRoZSBzZXhwXG4gICBjb252ZXJ0ZXJzIG91dHNpZGUgb2YgdGhlIFttb2R1bGUgcmVjXSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGFjY2lkZW50YWxseSBpbnRyb2R1Y2UgYVxuICAgc2V4cCBjb252ZXJ0ZXIgdGhhdCB3b3VsZCB0cnkgdG8gcHJvZHVjZSBhbiBpbmZpbml0ZSBzZXhwLlxuKilcblxub3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgcmVjIEFkanVzdF9oZWlnaHRzX2hlYXAgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICAgIDsgbXV0YWJsZSBtYXhfaGVpZ2h0X3NlZW4gOiBpbnRcbiAgICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgfVxuZW5kID1cbiAgQWRqdXN0X2hlaWdodHNfaGVhcFxuXG5hbmQgQWxhcm0gOiBzaWdcbiAgdHlwZSB0ID0gQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuZW5kID1cbiAgQWxhcm1cblxuYW5kIEFsYXJtX3ZhbHVlIDogc2lnXG4gIG1vZHVsZSBBY3Rpb24gOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdCBvZiBBdC50XG4gICAgICB8IEF0X2ludGVydmFscyBvZiBBdF9pbnRlcnZhbHMudFxuICAgICAgfCBTbmFwc2hvdCA6IF8gU25hcHNob3QudCAtPiB0XG4gICAgICB8IFN0ZXBfZnVuY3Rpb24gOiBfIFN0ZXBfZnVuY3Rpb25fbm9kZS50IC0+IHRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IGFjdGlvbiA6IEFjdGlvbi50XG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiB0IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEFsYXJtX3ZhbHVlXG5cbmFuZCBBcnJheV9mb2xkIDogc2lnXG4gIHR5cGUgKCdhLCAnYWNjKSB0ID1cbiAgICB7IGluaXQgOiAnYWNjXG4gICAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gICAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICAgIH1cbmVuZCA9XG4gIEFycmF5X2ZvbGRcblxuYW5kIEF0IDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50XG4gICAgOyBhdCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIEF0XG5cbmFuZCBBdF9pbnRlcnZhbHMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1haW4gOiB1bml0IE5vZGUudFxuICAgIDsgYmFzZSA6IFRpbWVfbnMudFxuICAgIDsgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIEF0X2ludGVydmFsc1xuXG5hbmQgQmluZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHsgbWFpbiA6ICdiIE5vZGUudFxuICAgIDsgbXV0YWJsZSBmIDogJ2EgLT4gJ2IgTm9kZS50XG4gICAgOyBsaHMgOiAnYSBOb2RlLnRcbiAgICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSByaHMgOiAnYiBOb2RlLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIHJoc19zY29wZSA6IFNjb3BlLnRcbiAgICA7IG11dGFibGUgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBCaW5kXG5cbmFuZCBDbG9jayA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgdGltaW5nX3doZWVsIDogQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbm93IDogVGltZV9ucy50IFZhci50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBBbGFybS50IC0+IHVuaXRcbiAgICA7IG11dGFibGUgZmlyZWRfYWxhcm1fdmFsdWVzIDogQWxhcm1fdmFsdWUudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBDbG9ja1xuXG5hbmQgRXhwZXJ0IDogc2lnXG4gIHR5cGUgJ2EgZWRnZSA9XG4gICAgeyBjaGlsZCA6ICdhIE5vZGUudFxuICAgIDsgb25fY2hhbmdlIDogJ2EgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBpbmRleCA6IGludCBVb3B0LnRcbiAgICB9XG5cbiAgdHlwZSBwYWNrZWRfZWRnZSA9IEUgOiAnYSBlZGdlIC0+IHBhY2tlZF9lZGdlIFtAQHVuYm94ZWRdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGYgOiB1bml0IC0+ICdhXG4gICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA6IGlzX25vd19vYnNlcnZhYmxlOmJvb2wgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBjaGlsZHJlbiA6IHBhY2tlZF9lZGdlIFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gICAgOyBtdXRhYmxlIGZvcmNlX3N0YWxlIDogYm9vbFxuICAgIDsgbXV0YWJsZSBudW1faW52YWxpZF9jaGlsZHJlbiA6IGludFxuICAgIDsgbXV0YWJsZSB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA6IGJvb2xcbiAgICB9XG5lbmQgPVxuICBFeHBlcnRcblxuYW5kIEZyZWV6ZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgICA7IG9ubHlfZnJlZXplX3doZW4gOiAnYSAtPiBib29sXG4gICAgfVxuZW5kID1cbiAgRnJlZXplXG5cbmFuZCBJZl90aGVuX2Vsc2UgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IHRlc3QgOiBib29sIE5vZGUudFxuICAgIDsgdGVzdF9jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2JyYW5jaCA6ICdhIE5vZGUudCBVb3B0LnRcbiAgICA7IHRoZW5fIDogJ2EgTm9kZS50XG4gICAgOyBlbHNlXyA6ICdhIE5vZGUudFxuICAgIH1cbmVuZCA9XG4gIElmX3RoZW5fZWxzZVxuXG5hbmQgSW50ZXJuYWxfb2JzZXJ2ZXIgOiBzaWdcbiAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQ3JlYXRlZFxuICAgICAgfCBJbl91c2VcbiAgICAgIHwgRGlzYWxsb3dlZFxuICAgICAgfCBVbmxpbmtlZFxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgICA7IG9ic2VydmluZyA6ICdhIE5vZGUudFxuICAgIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgICA7IG11dGFibGUgcHJldl9pbl9hbGwgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9hbGwgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgcHJldl9pbl9vYnNlcnZpbmcgOiAnYSB0IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX29ic2VydmluZyA6ICdhIHQgVW9wdC50XG4gICAgfVxuXG4gIHR5cGUgJ2EgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAnYSB0XG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFQgOiBfIGludGVybmFsX29ic2VydmVyIC0+IHQgW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmQgPVxuICBJbnRlcm5hbF9vYnNlcnZlclxuXG5hbmQgSm9pbiA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgbGhzIDogJ2EgTm9kZS50IE5vZGUudFxuICAgIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIHJocyA6ICdhIE5vZGUudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBKb2luXG5cbmFuZCBLaW5kIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBBcnJheV9mb2xkIDogKF8sICdhKSBBcnJheV9mb2xkLnQgLT4gJ2EgdFxuICAgIHwgQXQgOiBBdC50IC0+IEJlZm9yZV9vcl9hZnRlci50IHRcbiAgICB8IEF0X2ludGVydmFscyA6IEF0X2ludGVydmFscy50IC0+IHVuaXQgdFxuICAgIHwgQmluZF9saHNfY2hhbmdlIDogKF8sIF8pIEJpbmQudCAtPiB1bml0IHRcbiAgICB8IEJpbmRfbWFpbiA6IChfLCAnYSkgQmluZC50IC0+ICdhIHRcbiAgICB8IENvbnN0IG9mICdhXG4gICAgfCBFeHBlcnQgb2YgJ2EgRXhwZXJ0LnRcbiAgICB8IEZyZWV6ZSBvZiAnYSBGcmVlemUudFxuICAgIHwgSWZfdGVzdF9jaGFuZ2UgOiBfIElmX3RoZW5fZWxzZS50IC0+IHVuaXQgdFxuICAgIHwgSWZfdGhlbl9lbHNlIG9mICdhIElmX3RoZW5fZWxzZS50XG4gICAgfCBJbnZhbGlkXG4gICAgfCBKb2luX2xoc19jaGFuZ2UgOiBfIEpvaW4udCAtPiB1bml0IHRcbiAgICB8IEpvaW5fbWFpbiBvZiAnYSBKb2luLnRcbiAgICB8IE1hcCA6ICgnYTEgLT4gJ2EpICogJ2ExIE5vZGUudCAtPiAnYSB0XG4gICAgfCBTbmFwc2hvdCBvZiAnYSBTbmFwc2hvdC50XG4gICAgfCBTdGVwX2Z1bmN0aW9uIG9mICdhIFN0ZXBfZnVuY3Rpb25fbm9kZS50XG4gICAgfCBVbmluaXRpYWxpemVkXG4gICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IChfLCAnYSkgVW5vcmRlcmVkX2FycmF5X2ZvbGQudCAtPiAnYSB0XG4gICAgfCBWYXIgb2YgJ2EgVmFyLnRcbiAgICB8IE1hcDIgOiAoJ2ExIC0+ICdhMiAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAtPiAnYSB0XG4gICAgfCBNYXAzIDogKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAtPiAnYSB0XG4gICAgfCBNYXA0IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDUgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA2IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA3IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDggOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA5IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDExIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTIgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEzIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDE0IDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhMTRcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTUgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2ExNFxuICAgICAgICAgLT4gJ2ExNVxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgICAqICdhMTUgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbmVuZCA9XG4gIEtpbmRcblxuYW5kIE5vZGUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGlkIDogTm9kZV9pZC50XG4gICAgOyBzdGF0ZSA6IFN0YXRlLnRcbiAgICA7IG11dGFibGUgcmVjb21wdXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIGtpbmQgOiAnYSBLaW5kLnRcbiAgICA7IG11dGFibGUgY3V0b2ZmIDogJ2EgQ3V0b2ZmLnRcbiAgICA7IG11dGFibGUgY2hhbmdlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgbnVtX29uX3VwZGF0ZV9oYW5kbGVycyA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fcGFyZW50cyA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGFyZW50MV9hbmRfYmV5b25kIDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIHBhcmVudDAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBjcmVhdGVkX2luIDogU2NvcGUudFxuICAgIDsgbXV0YWJsZSBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGhlaWdodCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgOiBpbnRcbiAgICA7IG11dGFibGUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IGludFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIG9ic2VydmVycyA6ICdhIEludGVybmFsX29ic2VydmVyLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogYm9vbFxuICAgIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgICA7IG11dGFibGUgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IDogaW50IGFycmF5XG4gICAgOyBtdXRhYmxlIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA6IGludCBhcnJheVxuICAgIDsgbXV0YWJsZSBmb3JjZV9uZWNlc3NhcnkgOiBib29sXG4gICAgOyBtdXRhYmxlIHVzZXJfaW5mbyA6IERvdF91c2VyX2luZm8udCBvcHRpb25cbiAgICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdFxuICAgIHR5cGUgdCA9IFQgOiBfIG5vZGUgLT4gdCBbQEBkZXJpdmluZyBzZXhwX29mXSBbQEB1bmJveGVkXVxuICBlbmRcblxuICB2YWwgaXNfdmFsaWQgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXNfbmVjZXNzYXJ5IDogXyB0IC0+IGJvb2xcbiAgdmFsIHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBOb2RlIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBOb2RlXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgUGFja2VkIDo9IE5vZGUuUGFja2VkKVxuXG4gIGxldCBzZXhwX29mX3QgXyB0ID0gY29uY2F0IFsgXCJuXCI7IE5vZGVfaWQudG9fc3RyaW5nIHQuaWQgXSB8PiBbJXNleHBfb2Y6IHN0cmluZ11cblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdCA9IFQgOiBfIG5vZGUgLT4gdCBbQEB1bmJveGVkXVxuXG4gICAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIG5vZGVdXG4gIGVuZFxuXG4gIGxldCBpc192YWxpZCB0ID1cbiAgICBtYXRjaCB0LmtpbmQgd2l0aFxuICAgIHwgSW52YWxpZCAtPiBmYWxzZVxuICAgIHwgXyAtPiB0cnVlXG4gIDs7XG5cbiAgKCogW2lzX25lY2Vzc2FyeV0gaXMgZGVmaW5lZCBoZXJlIGJlY2F1c2Ugd2UgbmVlZCBpdCBiZWZvcmUgbm9kZS5tbCBpcyBhdmFpbGFibGUuICBJdCBpc1xuICAgICB1c2VkIGR1cmluZyBncmFwaCBtYW5pcHVsYXRpb24sIGFuZCBzbyBpcyB3cml0dGVuIHdpdGggc29tZSBjYXJlIHRvIGJlIGZhc3QuICopXG4gIGxldCBpc19uZWNlc3NhcnkgdCA9XG4gICAgdC5udW1fcGFyZW50cyA+IDBcbiAgICB8fCBVb3B0LmlzX3NvbWUgdC5vYnNlcnZlcnNcbiAgICB8fCAobWF0Y2ggdC5raW5kIHdpdGhcbiAgICAgIHwgRnJlZXplIF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHx8IHQuZm9yY2VfbmVjZXNzYXJ5XG4gIDs7XG5cbiAgbGV0IHRfaXNfaW5qZWN0aXZlICh0eXBlIGEgYikgKFQgOiAoYSB0LCBiIHQpIFR5cGVfZXF1YWwudCkgOiAoYSwgYikgVHlwZV9lcXVhbC50ID0gVFxuXG4gIGxldCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSAodHlwZSBhIGIpICh0MSA6IGEgdCkgKHQyIDogYiB0KSA9XG4gICAgKCogVGhpcyBpcyB0eXBlLXNhZmUgYXNzdW1pbmcgbm8gb25lIGNhbiBnaXZlIHRoZSBzYW1lIGluY3JlbWVudGFsIG5vZGUgdHdvIGRpZmZlcmVudFxuICAgICAgIHR5cGVzLiAgVGhpcyBpcyB0cnVlIGJlY2F1c2UgdGhlIGZpZWxkIFttdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBvcHRpb25dIHByZXZlbnRzXG4gICAgICAgYm90aCBzdWJ0eXBpbmcgYW5kIHBhcmFtZXRlcmljIHBvbHltb3JwaGlzbS4gIEJ1dCB0aGlzIGFsbG93cyB0byBicmVha1xuICAgICAgIGFic3RyYWN0aW9ucywgYXMgaW4gc29tZW9uZSBjb3VsZCB3cml0ZTpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHRcbiAgICAgICAgIHR5cGUgdSAoKiA9IHQgdW5kZXJuZWF0aCAqKVxuICAgICAgICAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdCBJbmNyLnQgKiB1IEluY3IudCAoKiB0aGUgdHdvIGluY3JlbWVudGFscyBhcmUgcGh5c19lcXVhbCAqKVxuICAgICAgIF19XG5cbiAgICAgICBhbmQgd2Ugd291bGQgZmlndXJlIG91dCB0aGF0IHR5cGUgdCA9IHUuICBIb3dldmVyLCB3ZSBjb3VsZCBhZGQgYSBUeXBlX2VxdWFsLklkIHRvXG4gICAgICAgbm9kZXMgYW5kIGRvIHRoZSBzYW1lLCBzbyBpdCBzZWVtcyB0byBiZSBhIG1vcmUgZ2VuZXJhbCBpc3N1ZS4gKilcbiAgICBpZiBwaHlzX3NhbWUgdDEgdDJcbiAgICB0aGVuIFNvbWUgKHRfaXNfaW5qZWN0aXZlIChPYmoubWFnaWMgKFQgOiBfIFR5cGVfZXF1YWwudCkgOiAoYSB0LCBiIHQpIFR5cGVfZXF1YWwudCkpXG4gICAgZWxzZSBOb25lXG4gIDs7XG5lbmRcblxuYW5kIE9ic2VydmVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIEludGVybmFsX29ic2VydmVyLnQgcmVmXG5lbmQgPVxuICBPYnNlcnZlclxuXG5hbmQgT25seV9pbl9kZWJ1ZyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19ub2RlIDogTm9kZS5QYWNrZWQudCBvcHRpb25cbiAgICA7IG11dGFibGUgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDogTm9kZS5QYWNrZWQudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgT25seV9pbl9kZWJ1Z1xuXG5hbmQgUGFja2VkX3dlYWtfaGFzaHRibCA6IHNpZ1xuICB0eXBlIHQgPSBUIDogKF8sIF8pIFdlYWtfaGFzaHRibC50IC0+IHRcbmVuZCA9XG4gIFBhY2tlZF93ZWFrX2hhc2h0YmxcblxuYW5kIFJlY29tcHV0ZV9oZWFwIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgfVxuZW5kID1cbiAgUmVjb21wdXRlX2hlYXBcblxuYW5kIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBzaWdcbiAgdHlwZSB0ID0gVCA6ICdhIE5vZGUudCAqICdhIE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlLnQgLT4gdFxuZW5kID1cbiAgUnVuX29uX3VwZGF0ZV9oYW5kbGVyc1xuXG5hbmQgU2NvcGUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IFRvcFxuICAgIHwgQmluZCA6IChfLCBfKSBCaW5kLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUb3BcbiAgICB8IEJpbmQgOiAoXywgXykgQmluZC50IC0+IHRcblxuICBsZXQgc2V4cF9vZl90ID0gZnVuY3Rpb25cbiAgICB8IFRvcCAtPiBcIlRvcFwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIHwgQmluZCBiaW5kIC0+IGJpbmQubWFpbiB8PiBbJXNleHBfb2Y6IF8gTm9kZS50XVxuICA7O1xuZW5kXG5cbmFuZCBTbmFwc2hvdCA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICA7IGJlZm9yZSA6ICdhXG4gICAgOyB2YWx1ZV9hdCA6ICdhIE5vZGUudFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgU25hcHNob3RcblxuYW5kIFN0YXRlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgOyBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBzdGFiaWxpemF0aW9uX251bSA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgY3VycmVudF9zY29wZSA6IFNjb3BlLnRcbiAgICA7IHJlY29tcHV0ZV9oZWFwIDogUmVjb21wdXRlX2hlYXAudFxuICAgIDsgYWRqdXN0X2hlaWdodHNfaGVhcCA6IEFkanVzdF9oZWlnaHRzX2hlYXAudFxuICAgIDsgcHJvcGFnYXRlX2ludmFsaWRpdHkgOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IG11dGFibGUgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgOiBpbnRcbiAgICA7IG11dGFibGUgYWxsX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgZmluYWxpemVkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG5ld19vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6IFZhci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCBTdGFjay50XG4gICAgOyBtdXRhYmxlIG9ubHlfaW5fZGVidWcgOiBPbmx5X2luX2RlYnVnLnRcbiAgICA7IHdlYWtfaGFzaHRibHMgOiBQYWNrZWRfd2Vha19oYXNodGJsLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbXV0YWJsZSBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIDogYm9vbFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19jaGFuZ2VkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19jcmVhdGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19pbnZhbGlkYXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX3Zhcl9zZXRzIDogaW50XG4gICAgfVxuZW5kID1cbiAgU3RhdGVcblxuYW5kIFN0YXR1cyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHwgU3RhYmlsaXppbmdcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgfCBOb3Rfc3RhYmlsaXppbmdcbiAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBvZiBSYWlzZWRfZXhuLnRcbmVuZCA9XG4gIFN0YXR1c1xuXG5hbmQgU3RlcF9mdW5jdGlvbl9ub2RlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBtdXRhYmxlIGNoaWxkIDogJ2EgU3RlcF9mdW5jdGlvbi50IE5vZGUudCBVb3B0LnRcbiAgICA7IG11dGFibGUgZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgdXBjb21pbmdfc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBtdXRhYmxlIGFsYXJtX3ZhbHVlIDogQWxhcm1fdmFsdWUudFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgU3RlcF9mdW5jdGlvbl9ub2RlXG5cbmFuZCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2FjYykgdCA9XG4gICAgeyBtYWluIDogJ2FjYyBOb2RlLnRcbiAgICA7IGluaXQgOiAnYWNjXG4gICAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gICAgOyB1cGRhdGUgOiAnYWNjIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2FjY1xuICAgIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA6IGludFxuICAgIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgICA7IG11dGFibGUgZm9sZF92YWx1ZSA6ICdhY2MgVW9wdC50XG4gICAgOyBtdXRhYmxlIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDogaW50XG4gICAgfVxuZW5kID1cbiAgVW5vcmRlcmVkX2FycmF5X2ZvbGRcblxuYW5kIFZhciA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gICAgOyBtdXRhYmxlIHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBzZXRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyB3YXRjaCA6ICdhIE5vZGUudFxuICAgIH1cblxuICB0eXBlICdhIHZhciA6PSAnYSB0XG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFQgOiBfIHZhciAtPiB0IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kID1cbiAgVmFyXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlZhci50ID1cbiAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgOyAoKiBbdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXSBpcyBvbmx5IHNldCB0byBbVW9wdC5zb21lXSBpZiB0aGUgdXNlciBjYWxsc1xuICAgICAgIFtWYXIuc2V0XSBkdXJpbmcgc3RhYmlsaXphdGlvbiwgaW4gd2hpY2ggY2FzZSBpdCBob2xkcyB0aGUgKGxhc3QpIHZhbHVlIHNldC4gIEF0XG4gICAgICAgdGhlIGVuZCBvZiBzdGFiaWxpemF0aW9uLCBhbGwgc3VjaCB2YXJpYWJsZXMgYXJlIHByb2Nlc3NlZCB0byBkbyBbdC52YWx1ZSA8LVxuICAgICAgIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXS4gKilcbiAgICBtdXRhYmxlIHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6ICdhIFVvcHQudFxuICA7ICgqIFtzZXRfYXRdIHRoZSBzdGFiaWxpemF0aW9uIG51bWJlciBpbiBlZmZlY3QgdGhlIG1vc3QgcmVjZW50IHRpbWUgW3QudmFsdWVdIGNoYW5nZWQuXG4gICAgICAgVGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIHN0YWJpbGl6YXRpb24gbnVtYmVyIGluIGVmZmVjdCB0aGUgbW9zdFxuICAgICAgIHJlY2VudCB0aW1lIFtWYXIuc2V0IHRdIHdhcyBjYWxsZWQsIGR1ZSB0byB0aGUgZWZmZWN0IG9mIFtWYXIuc2V0XSBkdXJpbmdcbiAgICAgICBzdGFiaWxpemF0aW9uIGJlaW5nIGRlbGF5ZWQgdW50aWwgYWZ0ZXIgdGhlIHN0YWJpbGl6YXRpb24uICopXG4gICAgbXV0YWJsZSBzZXRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgd2F0Y2ggOiAnYSBOb2RlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+dmFsdWU6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgfnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbjooY2hlY2sgKFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5zZXRfYXQ6KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgIH53YXRjaDpcbiAgICAgICAgKGNoZWNrIChmdW4gKHdhdGNoIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIHdhdGNoLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogcG9zc2libGUgd2l0aCBbfnVzZV9jdXJyZW50X3Njb3BlOnRydWVdICopXG4gICAgICAgICAgIHwgVmFyIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSkpXG47O1xuXG5sZXQgaW5jcl9zdGF0ZSB0ID0gdC53YXRjaC5zdGF0ZVxuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgJ2EgdmFyID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHQgPSBUeXBlcy5WYXIuUGFja2VkLnQgPSBUIDogXyB2YXIgLT4gdCBbQEB1bmJveGVkXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBsYXRlc3RfdmFsdWUgdCA9XG4gIGlmIFVvcHQuaXNfc29tZSB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICB0aGVuIFVvcHQudW5zYWZlX3ZhbHVlIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gIGVsc2UgdC52YWx1ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbm1vZHVsZSBVcGRhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IEZfaW52ZXJzZSBvZiAoJ2IgLT4gJ2EgLT4gJ2IpXG4gICAgfCBVcGRhdGUgb2YgKCdiIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2IpXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHVwZGF0ZSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFVwZGF0ZSB1cGRhdGUgLT4gdXBkYXRlXG4gICAgfCBGX2ludmVyc2UgZl9pbnZlcnNlIC0+XG4gICAgICBmdW4gZm9sZF92YWx1ZSB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgLT4gZiAoZl9pbnZlcnNlIGZvbGRfdmFsdWUgb2xkX3ZhbHVlKSBuZXdfdmFsdWVcbiAgOztcbmVuZFxuXG50eXBlICgnYSwgJ2FjYykgdCA9ICgnYSwgJ2FjYykgVHlwZXMuVW5vcmRlcmVkX2FycmF5X2ZvbGQudCA9XG4gIHsgbWFpbiA6ICdhY2MgTm9kZS50XG4gIDsgaW5pdCA6ICdhY2NcbiAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gIDsgdXBkYXRlIDogJ2FjYyAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdhY2NcbiAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDogaW50XG4gIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgOyBtdXRhYmxlIGZvbGRfdmFsdWUgOiAnYWNjIFVvcHQudFxuICA7IG11dGFibGUgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiAoXywgXykgdCkgKHQyIDogKF8sIF8pIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2FjYyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmluaXQ6KGNoZWNrIGludmFyaWFudF9hY2MpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH51cGRhdGU6aWdub3JlXG4gICAgICB+Y2hpbGRyZW46XG4gICAgICAgIChjaGVjayAoZnVuIGNoaWxkcmVuIC0+XG4gICAgICAgICAgIEFycmF5Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1biAoY2hpbGQgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSBjaGlsZC52YWx1ZV9vcHQ7XG4gICAgICAgICAgICAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZVxuICAgICAgICAgICAgICAgIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfc29tZSBjaGlsZC52YWx1ZV9vcHQpKSkpXG4gICAgICB+Zm9sZF92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gZm9sZF92YWx1ZSAtPlxuICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYWNjIGZvbGRfdmFsdWU7XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKFVvcHQuaXNfc29tZSBmb2xkX3ZhbHVlKVxuICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAodC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDw9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6XG4gICAgICAgIChjaGVjayAoZnVuIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID4gMCkpKSlcbjs7XG5cbmxldCBjcmVhdGUgfmluaXQgfmYgfnVwZGF0ZSB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB+Y2hpbGRyZW4gfm1haW4gPVxuICB7IGluaXRcbiAgOyBmXG4gIDsgdXBkYXRlID0gVXBkYXRlLnVwZGF0ZSB1cGRhdGUgfmZcbiAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDsgY2hpbGRyZW5cbiAgOyBtYWluXG4gIDsgZm9sZF92YWx1ZSA9XG4gICAgICBVb3B0Lm5vbmVcbiAgKCogV2UgbWFrZSBbbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXVxuICAgICBzbyB0aGF0IHRoZXJlIHdpbGwgYmUgYSBmdWxsIGNvbXB1dGF0aW9uIHRoZSBuZXh0IHRpbWUgdGhlIG5vZGUgaXMgY29tcHV0ZWQuICopXG4gIDsgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIH1cbjs7XG5cbmxldCBmdWxsX2NvbXB1dGUgeyBpbml0OyBmOyBjaGlsZHJlbjsgXyB9ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgcmVzdWx0IDo9IGYgIXJlc3VsdCAoVW9wdC52YWx1ZV9leG4gKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkudmFsdWVfb3B0KVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgY29tcHV0ZSB0ID1cbiAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICB0aGVuIChcbiAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIDA7XG4gICAgdC5mb2xkX3ZhbHVlIDwtIFVvcHQuc29tZSAoZnVsbF9jb21wdXRlIHQpKTtcbiAgVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlXG47O1xuXG5sZXQgZm9yY2VfZnVsbF9jb21wdXRlIHQgPVxuICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5ub25lO1xuICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuOztcblxubGV0IGNoaWxkX2NoYW5nZWRcbiAgICAgICh0eXBlIGEgYilcbiAgICAgICh0IDogKGEsIF8pIHQpXG4gICAgICB+KGNoaWxkIDogYiBOb2RlLnQpXG4gICAgICB+Y2hpbGRfaW5kZXhcbiAgICAgIH4ob2xkX3ZhbHVlX29wdCA6IGIgVW9wdC50KVxuICAgICAgfihuZXdfdmFsdWUgOiBiKVxuICA9XG4gIGxldCBjaGlsZF9hdF9pbmRleCA9IHQuY2hpbGRyZW4uKGNoaWxkX2luZGV4KSBpblxuICBtYXRjaCBOb2RlLnR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIGNoaWxkIGNoaWxkX2F0X2luZGV4IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Vub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRdIG1pc21hdGNoXCJcbiAgICAgICAgICB+dW5vcmRlcmVkX2FycmF5X2ZvbGQ6KHQgOiAoXywgXykgdClcbiAgICAgICAgICAoY2hpbGRfaW5kZXggOiBpbnQpXG4gICAgICAgICAgKGNoaWxkIDogXyBOb2RlLnQpXVxuICB8IFNvbWUgVCAtPlxuICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLSAxXG4gICAgdGhlbiAoXG4gICAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgKyAxO1xuICAgICAgKCogV2Ugb25seSByZWFjaCB0aGlzIGNhc2UgaWYgd2UgaGF2ZSBhbHJlYWR5IGRvbmUgYSBmdWxsIGNvbXB1dGUsIGluIHdoaWNoIGNhc2VcbiAgICAgICAgIFtVb3B0LmlzX3NvbWUgdC5mb2xkX3ZhbHVlXSBhbmQgW1VvcHQuaXNfc29tZSBvbGRfdmFsdWVfb3B0XS4gKilcbiAgICAgIHQuZm9sZF92YWx1ZVxuICAgICAgPC0gVW9wdC5zb21lXG4gICAgICAgICAgICh0LnVwZGF0ZVxuICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlKVxuICAgICAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnZhbHVlX2V4biBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgICAgICB+bmV3X3ZhbHVlKSlcbiAgICBlbHNlIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICB0aGVuIGZvcmNlX2Z1bGxfY29tcHV0ZSB0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cblxudHlwZSB0ID0gKFR5cGVzLkFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSkgQWxhcm0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bGwgPSBBbGFybS5udWxsICgpXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQWxhcm1fdmFsdWUgPSBUeXBlcy5BbGFybV92YWx1ZVxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlN0ZXBfZnVuY3Rpb25fbm9kZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBtdXRhYmxlIGFsYXJtX3ZhbHVlIDogKEFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSlcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHBoeXNfc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyB3aGVuIFt1cGNvbWluZ19zdGVwc10gYmVjb21lcyBlbXB0eS4gKilcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0Omlnbm9yZVxuICAgICAgfnZhbHVlOihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnVwY29taW5nX3N0ZXBzOmlnbm9yZVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+YWxhcm1fdmFsdWU6XG4gICAgICAgIChjaGVjayAoZnVuIChhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiB0MiAtPiBhc3NlcnQgKHBoeXNfc2FtZSB0IHQyKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuXG5sZXQgcmVjIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIGExIHN0ZXBzID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgU29tZSAoKHN0ZXBfYXQsIGEyKSwgc3RlcHMyKSB3aGVuIFRpbWVfbnMuKCA+PSApIHRvXyBzdGVwX2F0IC0+XG4gICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTIgc3RlcHMyXG4gIHwgXyAtPlxuICAgIHQudmFsdWUgPC0gVW9wdC5zb21lIGExO1xuICAgIHQudXBjb21pbmdfc3RlcHMgPC0gc3RlcHNcbjs7XG5cbmxldCBhZHZhbmNlIHQgfnRvXyA9IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIChVb3B0LnZhbHVlX2V4biB0LnZhbHVlKSB0LnVwY29taW5nX3N0ZXBzXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgKCdhLCAnYWNjKSB0ID0gKCdhLCAnYWNjKSBUeXBlcy5BcnJheV9mb2xkLnQgPVxuICB7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfYWNjIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+Y2hpbGRyZW46XG4gICAgICAgIChjaGVjayAoZnVuIGNoaWxkcmVuIC0+XG4gICAgICAgICAgIEFycmF5Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1biAoY2hpbGQgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSBjaGlsZC52YWx1ZV9vcHQpKSkpXG47O1xuXG5sZXQgY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXQudCA9XG4gIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgQWZ0ZXIgLT4gKCkgKCogaGFwcGVucyBvbmNlIHRoZSBjdXJyZW50IHRpbWUgcGFzc2VzIFt0LmF0XS4gKilcbiAgICAgICAgICAgfCBBdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgdCA9IFR5cGVzLkF0X2ludGVydmFscy50ID1cbiAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgOyBiYXNlIDogVGltZV9ucy50XG4gIDsgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQXRfaW50ZXJ2YWxzIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5iYXNlOmlnbm9yZVxuICAgICAgfmludGVydmFsOihjaGVjayAoZnVuIGludGVydmFsIC0+IGFzc2VydCAoVGltZV9ucy5TcGFuLmlzX3Bvc2l0aXZlIGludGVydmFsKSkpXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIEJpbmQgPSBUeXBlcy5CaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm1vZHVsZSBTY29wZSA9IFR5cGVzLlNjb3BlXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEJpbmQudCA9XG4gIHsgbWFpbiA6ICdiIE5vZGUudFxuICA7ICgqIFtmXSBpcyB0aGUgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0aGF0IHdlIHJ1biBlYWNoIHRpbWUgW3QubGhzXSBjaGFuZ2VzLiAgSXQgaXNcbiAgICAgICBtdXRhYmxlIG9ubHkgc28gd2UgY2FuIGNsZWFyIGl0IHdoZW4gW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7ICgqIFtyaHNdIGlzIGluaXRpYWxseSBbbm9uZV0sIGFuZCBhZnRlciB0aGF0IGlzIFtzb21lXSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBtb3N0IHJlY2VudFxuICAgICAgIGNhbGwgdG8gW2ZdLiAqKVxuICAgIG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICA7ICgqIFtyaHNfc2NvcGVdIGlzIHRoZSBzY29wZSBpbiB3aGljaCBbdC5mXSBpcyBydW4sIGkuZS4gaXQgaXMgW1Njb3BlLkJpbmQgdF0uICBJdCBpc1xuICAgICAgIFttdXRhYmxlXSBvbmx5IHRvIGF2b2lkIGEgW2xldCByZWNdIGR1cmluZyBjcmVhdGlvbi4gKilcbiAgICBtdXRhYmxlIHJoc19zY29wZSA6IFNjb3BlLnRcbiAgOyAoKiBbYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXSBpcyB0aGUgaGVhZCBvZiB0aGUgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIG5vZGVzIGNyZWF0ZWQgb25cbiAgICAgICB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIFt0XSwgaS5lLiBpbiBbdC5yaHNfc2NvcGVdLiAqKVxuICAgIG11dGFibGUgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiAoXywgXykgdCkgKHQyIDogKF8sIF8pIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpc192YWxpZCB0ID1cbiAgbWF0Y2ggdC5tYWluLmtpbmQgd2l0aFxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgfCBfIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfihmIDogTm9kZS5QYWNrZWQudCAtPiB1bml0KSA9XG4gIGxldCByID0gcmVmIHQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgZiAoVCBub2RlX29uX3JocylcbiAgZG9uZVxuOztcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgX2ludmFyaWFudF9iIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBsaHNfY2hhbmdlLmNyZWF0ZWRfaW4gdC5tYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmVcbiAgICAgIH5yaHNfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBTY29wZS5Ub3AgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgIHwgQmluZCB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JykpKVxuICAgICAgfmFsbF9ub2Rlc19jcmVhdGVkX29uX3JoczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBub2RlLmNyZWF0ZWRfaW4gdC5yaHNfc2NvcGUpO1xuICAgICAgICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAodC5saHNfY2hhbmdlLmhlaWdodCA8IG5vZGUuaGVpZ2h0KSkpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIGVkZ2UgPSAnYSBUeXBlcy5FeHBlcnQuZWRnZSA9XG4gIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gIDsgKCogW2luZGV4XSBpcyBkZWZpbmVkIHdoZW5ldmVyIHRoZSBbZWRnZV0gaXMgaW4gdGhlIFtjaGlsZHJlbl0gb2Ygc29tZSBbdF0uIFRoZW4gaXQgaXNcbiAgICAgICB0aGUgaW5kZXggb2YgdGhpcyBbZWRnZV0gaW4gdGhhdCBbY2hpbGRyZW5dIGFycmF5LiBJdCBtaWdodCBzZWVtIHJlZHVuZGFudCB3aXRoIGFsbFxuICAgICAgIHRoZSBvdGhlciBpbmRleGVzIHdlIGhhdmUsIGJ1dCBpdCBpcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIGNoaWxkcmVuLiAgVGhlIGluZGV4IG1heVxuICAgICAgIGNoYW5nZSBhcyBzaWJsaW5nIGNoaWxkcmVuIGFyZSByZW1vdmVkLiAqKVxuICAgIG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgcGFja2VkX2VkZ2UgPSBUeXBlcy5FeHBlcnQucGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZVxuW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRXhwZXJ0LnQgPVxuICB7IGYgOiB1bml0IC0+ICdhXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hlbiBzZXQsIG1ha2VzIHRoZSBub2RlIG9mIFt0XSBzdGFsZS4gIEl0IGlzIHNldCB3aGVuIHRoZSBzZXQgb2YgY2hpbGRyZW4gY2hhbmdlcy5cbiAgICAgICBPdGhlcndpc2UgdGhlIG5vcm1hbCBjaGVjayBvZiBzdGFsZW5lc3MgKGNvbXBhcmluZyB0aGUgW2NoYW5nZWRfYXRdIGZpZWxkIG9mXG4gICAgICAgY2hpbGRyZW4gYW5kIHRoZSBbcmVjb21wdXRlZF9hdF0gZmllbGQgZm9yIHRoZSBub2RlIG9mIFt0XSkgd291bGQgbm90IGJlIGVub3VnaC5cbiAgICAgICBUaGlzIHBsYXlzIGEgcm9sZSBzaW1pbGFyIHRvIHRoZSBjdXRvZmYgb2YgW05ldmVyXSBmb3IgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZHMsIGJ1dFxuICAgICAgIHdlIGRvbid0IGhhdmUgYSBzcGVjaWFsIGNoaWxkLiAqKVxuICAgIG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gIDsgKCogVGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgcG9pbnQgdG8gdXMuICBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBub2RlXG4gICAgICAgb2YgW3RdIG5lZWRzIHRvIGludmFsaWRhdGVkLCB3aXRob3V0IGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4uICBUaGlzIGlzIG5vdFxuICAgICAgIG5lZWRlZCBmb3Igb3RoZXIgbm9kZXMsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG90aGVyIG5vZGVzIHRoYXQgaGF2ZSBhIHBvdGVudGlhbGx5XG4gICAgICAgbGFyZ2UgYW5kIGR5bmFtaWMgc2V0IG9mIGNoaWxkcmVuLiAqKVxuICAgIG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgOyAoKiBXaGV0aGVyIHdlIHdpbGwgZmlyZSB0aGUgW29uX2NoYW5nZV0gY2FsbGJhY2tzIGZvciBhbGwgY2hpbGRyZW4gd2hlbiB0aGUgbm9kZSBvZiBbdF1cbiAgICAgICBpdHNlbGYgcnVucy4gIFVzZWQgdG8gbWFrZSBzdXJlIHdlIHJlcnVuIGV2ZXJ5dGhpbmcgYWZ0ZXIgW3RdIHN3aXRjaGVzIGZyb21cbiAgICAgICB1bm9ic2VydmFibGUgYW5kIGJhY2sgdG8gb2JzZXJ2YWJsZS4gKilcbiAgICBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50XG4gICAgICBfaW52YXJpYW50X2FcbiAgICAgIHsgZiA9IF9cbiAgICAgIDsgY2hpbGRyZW5cbiAgICAgIDsgbnVtX2NoaWxkcmVuXG4gICAgICA7IGZvcmNlX3N0YWxlID0gX1xuICAgICAgOyBudW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IF9cbiAgICAgIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSBfXG4gICAgICB9XG4gID1cbiAgYXNzZXJ0IChudW1fY2hpbGRyZW4gPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggY2hpbGRyZW4pO1xuICBpZ25vcmUgbnVtX2ludmFsaWRfY2hpbGRyZW47XG4gICgqIGludmFyaWFudCBpcyBiZWxvdywgYmVjYXVzZSB3ZSBuZWVkIHNvbWUgY29udGV4dCAqKVxuICBVbmlmb3JtX2FycmF5Lml0ZXJpIGNoaWxkcmVuIH5mOihmdW4gaSB1b3B0IC0+XG4gICAgbWF0Y2ggaSA8IG51bV9jaGlsZHJlbiB3aXRoXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biB1b3B0IGluXG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChVb3B0LnZhbHVlX2V4biByLmluZGV4KSB+ZXhwZWN0OmlcbiAgICB8IGZhbHNlIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHVvcHQpKVxuOztcblxubGV0IGludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBudW1faW52YWxpZF9jaGlsZHJlbjsgXyB9XG4gICAgICB+aXNfbmVjZXNzYXJ5XG4gID1cbiAgaWYgbm90IGlzX25lY2Vzc2FyeVxuICB0aGVuIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDowXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF9pbnZhbGlkX2NoaWxkcmVuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgci5jaGlsZCkgdGhlbiBpbmNyIGNvdW50X2ludmFsaWRfY2hpbGRyZW5cbiAgICBkb25lO1xuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDohY291bnRfaW52YWxpZF9jaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGUgfmYgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlID1cbiAgeyBmXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2VcbiAgOyBjaGlsZHJlbiA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgOyBudW1fY2hpbGRyZW4gPSAwXG4gIDsgZm9yY2Vfc3RhbGUgPSBmYWxzZVxuICA7IG51bV9pbnZhbGlkX2NoaWxkcmVuID0gMFxuICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdHJ1ZVxuICB9XG47O1xuXG5sZXQgbWFrZV9zdGFsZSB0ID1cbiAgaWYgdC5mb3JjZV9zdGFsZVxuICB0aGVuIGBBbHJlYWR5X3N0YWxlXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgICBgT2spXG47O1xuXG5sZXQgaW5jcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gKyAxXG5sZXQgZGVjcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gLSAxXG5cbmxldCBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX2NoaWxkcmVuID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHQubnVtX2NoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXggPSBJbnQubWF4IDIgKDIgKiBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKSBpblxuICAgIHQuY2hpbGRyZW4gPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQuY2hpbGRyZW4gfmxlbjpuZXdfbWF4KVxuOztcblxubGV0IGFkZF9jaGlsZF9lZGdlIHQgcGFja2VkX2VkZ2UgPVxuICBsZXQgKEUgZWRnZSkgPSBwYWNrZWRfZWRnZSBpblxuICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlZGdlLmluZGV4KTtcbiAgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQ7XG4gIGxldCBuZXdfY2hpbGRfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQuc29tZSBuZXdfY2hpbGRfaW5kZXg7XG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbmV3X2NoaWxkX2luZGV4IChVb3B0LnNvbWUgcGFja2VkX2VkZ2UpO1xuICB0Lm51bV9jaGlsZHJlbiA8LSB0Lm51bV9jaGlsZHJlbiArIDE7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgKCogV2Ugd2lsbCBidW1wIHRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiBpZiBuZWNlc3Nhcnkgd2hlbiBjb25uZWN0aW5nIGNoaWxkIGFuZFxuICAgICBwYXJlbnQuICBTYW1lIHRoaW5nIGZvciBydW5uaW5nIHRoZSBbb25fY2hhbmdlXSBjYWxsYmFja3MuICopXG4gIG5ld19jaGlsZF9pbmRleFxuOztcblxubGV0IHN3YXBfY2hpbGRyZW4gdCB+Y2hpbGRfaW5kZXgxIH5jaGlsZF9pbmRleDIgPVxuICBsZXQgKEUgZWRnZTEpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgxKSBpblxuICBsZXQgKEUgZWRnZTIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgyKSBpblxuICBlZGdlMS5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgyO1xuICBlZGdlMi5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgxO1xuICBVbmlmb3JtX2FycmF5LnN3YXAgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEgY2hpbGRfaW5kZXgyXG47O1xuXG5sZXQgbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleClcbjs7XG5cbmxldCByZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgbGV0IHBhY2tlZF9lZGdlX29wdCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXggVW9wdC5ub25lO1xuICB0Lm51bV9jaGlsZHJlbiA8LSBsYXN0X2luZGV4O1xuICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gIGFzc2VydCAoVW9wdC5pc19zb21lIHBhY2tlZF9lZGdlX29wdCk7XG4gIGxldCAoRSBlZGdlKSA9IFVvcHQudW5zYWZlX3ZhbHVlIHBhY2tlZF9lZGdlX29wdCBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQubm9uZVxuOztcblxubGV0IGJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIHQgPVxuICBpZiB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuID4gMFxuICB0aGVuIGBJbnZhbGlkXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gZmFsc2U7XG4gICAgbGV0IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyBpblxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gZmFsc2U7XG4gICAgaWYgd2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgICB0aGVuXG4gICAgICBmb3IgaSA9IDAgdG8gdC5udW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGkpIGluXG4gICAgICAgIHIub25fY2hhbmdlIChVb3B0LnZhbHVlX2V4biByLmNoaWxkLnZhbHVlX29wdClcbiAgICAgIGRvbmU7XG4gICAgYE9rKVxuOztcblxubGV0IG9ic2VydmFiaWxpdHlfY2hhbmdlIHQgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgdC5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSB+aXNfbm93X29ic2VydmFibGU7XG4gIGlmIG5vdCBpc19ub3dfb2JzZXJ2YWJsZVxuICB0aGVuIChcbiAgICB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDwtIHRydWU7XG4gICAgKCogSWYgd2UgZG9uJ3QgcmVzZXQgbnVtX2ludmFsaWRfY2hpbGRyZW4sIHdlIHdvdWxkIGRvdWJsZSBjb3VudCB0aGVtOiBqdXN0IGltYWdpbmVcbiAgICAgICB3aGF0IGhhcHBlbnMgd2UgaWYgcmVjb25uZWN0L2Rpc2Nvbm5lY3QvcmVjb25uZWN0L2Rpc2Nvbm5lY3Qgd2l0aCBhbiBpbnZhbGlkXG4gICAgICAgY2hpbGQuICopXG4gICAgdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSAwKVxuOztcblxubGV0IHJ1bl9lZGdlX2NhbGxiYWNrIHQgfmNoaWxkX2luZGV4ID1cbiAgaWYgbm90IHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgdGhlbiAoXG4gICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgpIGluXG4gICAgKCogVGhpcyB2YWx1ZSBpcyBub3QgbmVjZXNzYXJpbHkgc2V0LCBiZWNhdXNlIHdlIHRyeSB0byBydW4gdGhpcyB3aGVuIGNvbm5lY3RpbmcgdGhlXG4gICAgICAgbm9kZSB0byBpdHMgY2hpbGRyZW4sIHdoaWNoIGNvdWxkIGJlIGJlZm9yZSB0aGV5IGhhdmUgcnVuIGV2ZW4gb25jZS4gIEFsc28gdGhlIG5vZGVcbiAgICAgICBjb3VsZCBiZSBpbnZhbGlkLiAqKVxuICAgIGlmIFVvcHQuaXNfc29tZSByLmNoaWxkLnZhbHVlX29wdFxuICAgIHRoZW4gci5vbl9jaGFuZ2UgKFVvcHQudW5zYWZlX3ZhbHVlIHIuY2hpbGQudmFsdWVfb3B0KSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5pbmNsdWRlIFR5cGVzLlNjb3BlXG5cbmxldCB0b3AgPSBUb3BcblxubGV0IGlzX3RvcCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpbnZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiAoKVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbjs7XG5cbigqIFVubGlrZSBmb3Igbm9kZXMsIHRoZXJlIGlzIG5vIGludmFyaWFudCBbaXNfbmVjZXNzYXJ5IHQgPD0+IGhlaWdodCA+IC0xXSAoZG9lc24ndCB3b3JrXG4gICBiZWNhdXNlIG9mIFtUb3BdKS4gIFRoaXMgaXMgZmluZSBzaW5jZSB0aGUgaGVpZ2h0IG9mIGEgc2NvcGUgaXMgb25seSB1c2VkIHRvIGNvbnN0cmFpblxuICAgb3RoZXIgaGVpZ2h0cywgbm90IHRvIHNjaGVkdWxlIGl0LiAqKVxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IC0xXG4gIHwgQmluZCBiaW5kIC0+IGJpbmQubGhzX2NoYW5nZS5oZWlnaHRcbjs7XG5cbmxldCBpc192YWxpZCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIGJpbmQgLT4gQmluZC5pc192YWxpZCBiaW5kXG47O1xuXG5sZXQgaXNfbmVjZXNzYXJ5ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBOb2RlLmlzX25lY2Vzc2FyeSBiaW5kLm1haW5cbjs7XG5cbmxldCBhZGRfbm9kZSB0IChub2RlIDogXyBOb2RlLnQpID1cbiAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0KTtcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+XG4gICAgbm9kZS5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocztcbiAgICBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA8LSBVb3B0LnNvbWUgKFR5cGVzLk5vZGUuUGFja2VkLlQgbm9kZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRnJlZXplLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBjaGlsZCA6ICdhIE5vZGUudFxuICA7IG9ubHlfZnJlZXplX3doZW4gOiAnYSAtPiBib29sXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKFNjb3BlLmlzX3RvcCBtYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogaGFwcGVucyB3aGVuIGZyZWV6aW5nIGFuIGludmFsaWQgdmFsdWUgKilcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgb24gYmVjb21pbmcgZnJvemVuICopXG4gICAgICAgICAgIHwgRnJlZXplIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5vbmx5X2ZyZWV6ZV93aGVuOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSWZfdGhlbl9lbHNlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgOyB0ZXN0X2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2JyYW5jaCA6ICdhIE5vZGUudCBVb3B0LnRcbiAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICA7IGVsc2VfIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGhlbl9lbHNlIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfnRlc3Q6aWdub3JlXG4gICAgICB+dGVzdF9jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuICh0ZXN0X2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB0ZXN0X2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGVzdF9jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmN1cnJlbnRfYnJhbmNoOlxuICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X2JyYW5jaCAtPlxuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgY3VycmVudF9icmFuY2hcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IGN1cnJlbnRfYnJhbmNoID0gVW9wdC52YWx1ZV9leG4gY3VycmVudF9icmFuY2ggaW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LnRoZW5fIHx8IHBoeXNfZXF1YWwgY3VycmVudF9icmFuY2ggdC5lbHNlXykpKSlcbiAgICAgIH50aGVuXzppZ25vcmVcbiAgICAgIH5lbHNlXzppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkpvaW4udCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIHJocyA6ICdhIE5vZGUudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmxoczppZ25vcmVcbiAgICAgIH5saHNfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAobGhzX2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlNuYXBzaG90LnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBhdCA6IFRpbWVfbnMudFxuICA7IGJlZm9yZSA6ICdhXG4gIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gc25hcHNob3R0aW5nIGFuIGludmFsaWQgbm9kZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBhZnRlciB0aGUgc25hcHNob3QgKilcbiAgICAgICAgICAgfCBTbmFwc2hvdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YmVmb3JlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9hdDppZ25vcmVcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLktpbmQudCA9XG4gIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBBdCA6IEF0LnQgLT4gQmVmb3JlX29yX2FmdGVyLnQgdFxuICB8IEF0X2ludGVydmFscyA6IEF0X2ludGVydmFscy50IC0+IHVuaXQgdFxuICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9tYWluIDogKF8sICdhKSBCaW5kLnQgLT4gJ2EgdFxuICB8IENvbnN0IG9mICdhXG4gIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gIHwgRnJlZXplIG9mICdhIEZyZWV6ZS50XG4gIHwgSWZfdGVzdF9jaGFuZ2UgOiBfIElmX3RoZW5fZWxzZS50IC0+IHVuaXQgdFxuICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICB8IEludmFsaWRcbiAgfCBKb2luX2xoc19jaGFuZ2UgOiBfIEpvaW4udCAtPiB1bml0IHRcbiAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gIHwgTWFwIDogKCdhMSAtPiAnYSkgKiAnYTEgTm9kZS50IC0+ICdhIHRcbiAgfCBTbmFwc2hvdCBvZiAnYSBTbmFwc2hvdC50XG4gIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IChfLCAnYSkgVW5vcmRlcmVkX2FycmF5X2ZvbGQudCAtPiAnYSB0XG4gIHwgVmFyIG9mICdhIFZhci50XG4gIHwgTWFwMiA6ICgnYTEgLT4gJ2EyIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXAzIDogKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAtPiAnYSB0XG4gIHwgTWFwNCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAqICdhNCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA1IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA2IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA3IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA4IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA5IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYTExIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEyIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMyA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE0IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE1IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhMTVcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICogJ2ExNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuYW1lIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBBcnJheV9mb2xkIF8gLT4gXCJBcnJheV9mb2xkXCJcbiAgfCBBdCBfIC0+IFwiQXRcIlxuICB8IEF0X2ludGVydmFscyBfIC0+IFwiQXRfaW50ZXJ2YWxzXCJcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBcIkJpbmRfbGhzX2NoYW5nZVwiXG4gIHwgQmluZF9tYWluIF8gLT4gXCJCaW5kX21haW5cIlxuICB8IENvbnN0IF8gLT4gXCJDb25zdFwiXG4gIHwgRXhwZXJ0IF8gLT4gXCJFeHBlcnRcIlxuICB8IEZyZWV6ZSBfIC0+IFwiRnJlZXplXCJcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IFwiSWZfdGVzdF9jaGFuZ2VcIlxuICB8IElmX3RoZW5fZWxzZSBfIC0+IFwiSWZfdGhlbl9lbHNlXCJcbiAgfCBJbnZhbGlkIC0+IFwiSW52YWxpZFwiXG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gXCJKb2luX2xoc19jaGFuZ2VcIlxuICB8IEpvaW5fbWFpbiBfIC0+IFwiSm9pbl9tYWluXCJcbiAgfCBNYXAgXyAtPiBcIk1hcFwiXG4gIHwgTWFwMiBfIC0+IFwiTWFwMlwiXG4gIHwgTWFwMyBfIC0+IFwiTWFwM1wiXG4gIHwgTWFwNCBfIC0+IFwiTWFwNFwiXG4gIHwgTWFwNSBfIC0+IFwiTWFwNVwiXG4gIHwgTWFwNiBfIC0+IFwiTWFwNlwiXG4gIHwgTWFwNyBfIC0+IFwiTWFwN1wiXG4gIHwgTWFwOCBfIC0+IFwiTWFwOFwiXG4gIHwgTWFwOSBfIC0+IFwiTWFwOVwiXG4gIHwgTWFwMTAgXyAtPiBcIk1hcDEwXCJcbiAgfCBNYXAxMSBfIC0+IFwiTWFwMTFcIlxuICB8IE1hcDEyIF8gLT4gXCJNYXAxMlwiXG4gIHwgTWFwMTMgXyAtPiBcIk1hcDEzXCJcbiAgfCBNYXAxNCBfIC0+IFwiTWFwMTRcIlxuICB8IE1hcDE1IF8gLT4gXCJNYXAxNVwiXG4gIHwgU25hcHNob3QgXyAtPiBcIlNuYXBzaG90XCJcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gXCJTdGVwX2Z1bmN0aW9uXCJcbiAgfCBVbmluaXRpYWxpemVkIC0+IFwiVW5pbml0aWFsaXplZFwiXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBcIlVub3JkZXJlZF9hcnJheV9mb2xkXCJcbiAgfCBWYXIgXyAtPiBcIlZhclwiXG47O1xuXG5sZXQgaW52YXJpYW50IDogdHlwZSBhLiBhIEludmFyaWFudC50IC0+IGEgdCBJbnZhcmlhbnQudCA9XG4gIGZ1biBpbnZhcmlhbnRfYSB0IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBBcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYXJyYXlfZm9sZFxuICB8IEF0IGF0IC0+IEF0LmludmFyaWFudCBhdFxuICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbiAgfCBCaW5kX21haW4gYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYmluZFxuICB8IENvbnN0IGEgLT4gaW52YXJpYW50X2EgYVxuICB8IEV4cGVydCBlIC0+IEV4cGVydC5pbnZhcmlhbnQgaW52YXJpYW50X2EgZVxuICB8IEZyZWV6ZSBmcmVlemUgLT4gRnJlZXplLmludmFyaWFudCBpbnZhcmlhbnRfYSBmcmVlemVcbiAgfCBJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UgLT4gSWZfdGhlbl9lbHNlLmludmFyaWFudCBpZ25vcmUgaWZfdGhlbl9lbHNlXG4gIHwgSWZfdGhlbl9lbHNlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGludmFyaWFudF9hIGlmX3RoZW5fZWxzZVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2Ugam9pbiAtPiBKb2luLmludmFyaWFudCBpZ25vcmUgam9pblxuICB8IEpvaW5fbWFpbiBqb2luIC0+IEpvaW4uaW52YXJpYW50IGludmFyaWFudF9hIGpvaW5cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgXyAtPiAoKVxuICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpbnZhcmlhbnRfYSBzbmFwc2hvdFxuICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgU3RlcF9mdW5jdGlvbl9ub2RlLmludmFyaWFudCBpbnZhcmlhbnRfYSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgLT5cbiAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gIHwgVmFyIHZhciAtPiBWYXIuaW52YXJpYW50IGlnbm9yZSB2YXJcbjs7XG5cbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdCBfIC0+IDBcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAwXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gMVxuICB8IEJpbmRfbWFpbiBfIC0+IDJcbiAgfCBDb25zdCBfIC0+IDBcbiAgfCBFeHBlcnQgXyAtPiAwXG4gIHwgRnJlZXplIF8gLT4gMVxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gMVxuICB8IElmX3RoZW5fZWxzZSBfIC0+IDJcbiAgfCBJbnZhbGlkIC0+IDBcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgSm9pbl9tYWluIF8gLT4gMlxuICB8IE1hcCBfIC0+IDFcbiAgfCBNYXAyIF8gLT4gMlxuICB8IE1hcDMgXyAtPiAzXG4gIHwgTWFwNCBfIC0+IDRcbiAgfCBNYXA1IF8gLT4gNVxuICB8IE1hcDYgXyAtPiA2XG4gIHwgTWFwNyBfIC0+IDdcbiAgfCBNYXA4IF8gLT4gOFxuICB8IE1hcDkgXyAtPiA5XG4gIHwgTWFwMTAgXyAtPiAxMFxuICB8IE1hcDExIF8gLT4gMTFcbiAgfCBNYXAxMiBfIC0+IDEyXG4gIHwgTWFwMTMgXyAtPiAxM1xuICB8IE1hcDE0IF8gLT4gMTRcbiAgfCBNYXAxNSBfIC0+IDE1XG4gIHwgU25hcHNob3QgXyAtPiAwXG4gIHwgU3RlcF9mdW5jdGlvbiBfIC0+IDFcbiAgfCBVbmluaXRpYWxpemVkIC0+IDBcbiAgfCBWYXIgXyAtPiAwXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IEFycmF5Lmxlbmd0aCBjaGlsZHJlblxuOztcblxubGV0IGJpbmRfcmhzX2NoaWxkX2luZGV4ID0gMVxubGV0IGZyZWV6ZV9jaGlsZF9pbmRleCA9IDBcbmxldCBpZl9icmFuY2hfY2hpbGRfaW5kZXggPSAxXG5sZXQgam9pbl9yaHNfY2hpbGRfaW5kZXggPSAxXG5cbigqIFdlIGRvIG5vdCBpbXBsZW1lbnQgdGhlIHRpbWUtYmFzZWQgbm9kZXMgKFtBdF0sIFtBdF9pbnRlcnZhbHNdLCBbU25hcHNob3RdLFxuICAgW1N0ZXBfZnVuY3Rpb25dKSBhcyBwYXJlbnRzIG9mIHRoZSBjdXJyZW50LXRpbWUgbm9kZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIFdlIGRvbid0XG4gICB3YW50IGFsbCBzdWNoIG5vZGVzIHRvIGJlIHJlY29tcHV0ZWQgd2hlbmV2ZXIgdGhlIHRpbWUgY2hhbmdlcywgd2hpY2ggd291bGQgYmUgaG9ycmlibHlcbiAgIGlubmVmaWNpZW50LiAgSW5zdGVhZCwgd2Ugb25seSB3YW50IHRoZW0gdG8gYmUgcmVjb21wdXRlZCBhdCB0aGUgXCJyaWdodFwiIHRpbWUsXG4gICBpLmUuIHdoZW4gdGltZSBwYXNzZXMgc29tZSB0aHJlc2hvbGQgcmVsZXZhbnQgdG8gdGhlbS4gIFdlIGRvIHRoaXMgdmlhIHNjaGVkdWxpbmdcbiAgIGFsYXJtcyBhdCB0aG9zZSB0aHJlc2hvbGRzLiAqKVxubGV0IGl0ZXJpX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBpbnQgLT4gTm9kZS5QYWNrZWQudCAtPiB1bml0KSA6IHVuaXQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IEF0IF8gLT4gKClcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IGYgMCAoVCBiaW5kLmxocylcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyByaHM7IF8gfSAtPlxuICAgICgqIFZhcmlvdXMgY29kZSwgZS5nLiBbc3RhdGUuYmVjYW1lX25lY2Vzc2FyeV0sIHJlbGllcyBvbiBwcm9jZXNzaW5nIFtsaHNfY2hhbmdlXVxuICAgICAgIGJlZm9yZSBbcmhzXS4gKilcbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBDb25zdCBfIC0+ICgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIG51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgIGxldCAoRXhwZXJ0LkUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBmIGkgKFQgci5jaGlsZClcbiAgICBkb25lXG4gIHwgRnJlZXplIHsgY2hpbGQ7IF8gfSAtPiBmIDAgKFQgY2hpbGQpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gZiAwIChUIHRlc3QpXG4gIHwgSWZfdGhlbl9lbHNlIHsgdGVzdF9jaGFuZ2U7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBmIDAgKFQgdGVzdF9jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaCB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgY3VycmVudF9icmFuY2gpKVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBmIDAgKFQgbGhzKVxuICB8IEpvaW5fbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgZiAwIChUIGxoc19jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSByaHMgdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIHJocykpXG4gIHwgU25hcHNob3QgXyAtPiAoKVxuICB8IFN0ZXBfZnVuY3Rpb24geyBjaGlsZDsgXyB9IC0+XG4gICAgaWYgVW9wdC5pc19zb21lIGNoaWxkIHRoZW4gZiAwIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjaGlsZCkpXG4gIHwgVW5pbml0aWFsaXplZCAtPiAoKVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IFZhciBfIC0+ICgpXG4gIHwgTWFwIChfLCBub2RlMCkgLT4gZiAwIChUIG5vZGUwKVxuICB8IE1hcDIgKF8sIG5vZGUwLCBub2RlMSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSlcbiAgfCBNYXAzIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpXG4gIHwgTWFwNCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKVxuICB8IE1hcDUgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNClcbiAgfCBNYXA2IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpXG4gIHwgTWFwNyAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KVxuICB8IE1hcDggKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNylcbiAgfCBNYXA5IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpXG4gIHwgTWFwMTAgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgsIG5vZGU5KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSlcbiAgfCBNYXAxMSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTksIG5vZGUxMClcbiAgICAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApXG4gIHwgTWFwMTJcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSlcbiAgfCBNYXAxM1xuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpXG4gIHwgTWFwMTRcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTMgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpXG4gIHwgTWFwMTVcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTNcbiAgICAgICwgbm9kZTE0ICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpO1xuICAgIGYgMTMgKFQgbm9kZTEzKTtcbiAgICBmIDE0IChUIG5vZGUxNClcbjs7XG5cbigqIFtzbG93X2dldF9jaGlsZF0gaXMgb25seSB1c2VkIGJ5IFtOb2RlLmludmFyaWFudF0sIHNvIHdlIGRvbid0IG1pbmQgdXNpbmcgW3dpdGhfcmV0dXJuXVxuICAgYW5kIFtpdGVyaV9jaGlsZHJlbl0uICBJZiB3ZSBldmVyIG5lZWQgYSBmYXN0IFtnZXRfY2hpbGRdLCB3ZSBjb2RlZCBpdCBpbiByZXZcbiAgIDQ4ZGJmZDAzYzljNS4gKilcbmxldCBzbG93X2dldF9jaGlsZCA6IHR5cGUgYS4gYSB0IC0+IGluZGV4Ol8gLT4gTm9kZS5QYWNrZWQudCA9XG4gIGZ1biB0IH5pbmRleCAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gVCBjaGlsZHJlbi4oaW5kZXgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGxldCAoRSBlZGdlKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZHJlbiBpbmRleCkgaW5cbiAgICBUIGVkZ2UuY2hpbGRcbiAgfCBfIC0+XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gaSBjaGlsZCAtPiBpZiBpID0gaW5kZXggdGhlbiByLnJldHVybiBjaGlsZCk7XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIktpbmQuc2xvd19nZXRfY2hpbGQgZ290IGludmFsaWQgaW5kZXhcIlxuICAgICAgICAoaW5kZXgsIHQpXG4gICAgICAgIFslc2V4cF9vZjogaW50ICogXyB0XSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIEtpbmRcbm1vZHVsZSBJbnRlcm5hbF9vYnNlcnZlciA9IFR5cGVzLkludGVybmFsX29ic2VydmVyXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm9wZW4gTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5Ob2RlLnQgPVxuICB7ICgqIFtpZF0gaXMgYSB1bmlxdWUgaWQgZm9yIHRoZSBub2RlLiAqKVxuICAgIGlkIDogTm9kZV9pZC50XG4gIDsgc3RhdGUgOiAoVHlwZXMuU3RhdGUudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFRoZSBmaWVsZHMgZnJvbSBbcmVjb21wdXRlZF9hdF0gdG8gW2NyZWF0ZWRfaW5dIGFyZSBncm91cGVkIHRvZ2V0aGVyIGFuZCBhcmUgaW4gdGhlXG4gICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFyZSB1c2VkIGJ5IFtTdGF0ZS5yZWNvbXB1dGVdIFRoaXMgaGFzIGEgcG9zaXRpdmUgcGVyZm9ybWFuY2VcbiAgICAgICBpbXBhY3QgZHVlIHRvIGNhY2hlIGVmZmVjdHMuICBEb24ndCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZXNlIG5vZGVzIHdpdGhvdXRcbiAgICAgICBwZXJmb3JtYW5jZSB0ZXN0aW5nLiAqKVxuICAgICgqIFtyZWNvbXB1dGVkX2F0XSBpcyB0aGUgbGFzdCBzdGFiaWxpemF0aW9uIHdoZW4gW3RdJ3MgdmFsdWUgd2FzIHJlY29tcHV0ZWQsIGV2ZW4gaWZcbiAgICAgICBpdCB3YXMgY3V0IG9mZi4gKilcbiAgICBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW3ZhbHVlX29wdF0gc3RhcnRzIGFzIFtub25lXSwgYW5kIHRoZSBmaXJzdCB0aW1lIFt0XSBpcyBjb21wdXRlZCBpdCBpcyBzZXQgdG9cbiAgICAgICBbc29tZV0sIGFuZCByZW1haW5zIFtzb21lXSB0aGVyZWFmdGVyLCB1bnRpbCBbdF0gaXMgaW52YWxpZGF0ZWQsIGlmIGV2ZXIuICopXG4gICAgbXV0YWJsZSB2YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgOyAoKiBba2luZF0gaXMgdGhlIGtpbmQgb2YgREFHIG5vZGUgW3RdIGlzLiAgW2tpbmRdIGlzIG11dGFibGUgYm90aCBmb3IgaW5pdGlhbGl6YXRpb25cbiAgICAgICBhbmQgYmVjYXVzZSBpdCBjYW4gY2hhbmdlLCBlLmcuIGlmIFt0XSBpcyBpbnZhbGlkYXRlZC4gKilcbiAgICBtdXRhYmxlIGtpbmQgOiAnYSBLaW5kLnRcbiAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gIDsgKCogW2NoYW5nZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiB0aGlzIG5vZGUgd2FzIGNvbXB1dGVkIGFuZCBub3QgY3V0IG9mZi5cbiAgICAgICBJdCBpcyB1c2VkIHRvIGRldGVjdCB3aGVuIFt0XSdzIHBhcmVudHMgYXJlIHN0YWxlIGFuZCAoYmVjYXVzZSBhbGwgcGFyZW50cyBhcmVcbiAgICAgICBuZWNlc3NhcnkpIG5lZWQgdG8gYmUgcmVjb21wdXRlZC4gKilcbiAgICBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIGlzIFtMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVyc10gcGx1cyB0aGUgbnVtYmVyIG9mXG4gICAgICAgb24tdXBkYXRlIGhhbmRsZXJzIHN1bW1lZCBvdmVyIGFsbCBvYnNlcnZlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIEl0IGlzIHVzZWQgdG9cbiAgICAgICBxdWlja2x5IGRlY2lkZSB3aGV0aGVyIFt0XSBuZWVkcyB0byBiZSBhZGRlZCB0byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dXG4gICAgICAgd2hlbiBbdF0gY2hhbmdlcy4gIFtudW1fb25fdXBkYXRlX2hhbmRsZXJzXSB3aWxsIGRlY3JlYXNlIHdoZW4gYW4gb2JzZXJ2ZXIgaXNcbiAgICAgICByZW1vdmVkIGZyb20gW3Qub2JzZXJ2ZXJzXSwgaWYgdGhlIG9ic2VydmVyIGhhcyBvbi11cGRhdGUgaGFuZGxlcnMuICopXG4gICAgbXV0YWJsZSBudW1fb25fdXBkYXRlX2hhbmRsZXJzIDogaW50XG4gIDsgKCogVGhlIHBhcmVudHMgb2YgW3RdIGFyZSB0aGUgbm9kZXMgdGhhdCBkZXBlbmQgb24gaXQsIGFuZCBzaG91bGQgYmUgY29tcHV0ZWQgd2hlbiBbdF1cbiAgICAgICBjaGFuZ2VzLCBvbmNlIGFsbCBvZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgdXAgdG8gZGF0ZS4gIFtudW1fcGFyZW50c10gaXMgdGhlXG4gICAgICAgbnVtYmVyIG9mIHBhcmVudHMuICBJZiBbbnVtX3BhcmVudHMgPj0gMV0sIHRoZW4gW3BhcmVudDBdIGlzIHRoZSBmaXJzdCBwYXJlbnQuXG4gICAgICAgW3BhcmVudDFfYW5kX2JleW9uZF0gaG9sZHMgdGhlIHJlbWFpbmluZyBwYXJlbnRzLiAgVGhlIG9yZGVyIG9mIHRoZSBwYXJlbnRzIGRvZXNuJ3RcbiAgICAgICBtYXR0ZXIuICBPbmUgbm9kZSBtYXkgb2NjdXIgbXVsdGlwbGUgdGltZXMgYXMgYSBwYXJlbnQgb2YgYW5vdGhlciAoZS5nLiBjb25zaWRlclxuICAgICAgIFttYXAyIG4xIG4xIH5mXSkuXG5cbiAgICAgICBUaGlzIHJlcHJlc2VudGF0aW9uIGlzIG9wdGltaXplZCBmb3IgdGhlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbiBjYXNlIHRoYXQgYSBub2RlIGhhc1xuICAgICAgIG9ubHkgb25lIHBhcmVudC4gKilcbiAgICBtdXRhYmxlIG51bV9wYXJlbnRzIDogaW50XG4gIDsgbXV0YWJsZSBwYXJlbnQxX2FuZF9iZXlvbmQgOiBQYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gIDsgbXV0YWJsZSBwYXJlbnQwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2NyZWF0ZWRfaW5dIGlzIGluaXRpYWxseSB0aGUgc2NvcGUgdGhhdCB0aGUgbm9kZSBpcyBjcmVhdGVkIGluLiAgSWYgYSBub2RlIGlzXG4gICAgICAgbGF0ZXIgXCJyZXNjb3BlZFwiLCB0aGVuIGNyZWF0ZWRfaW4gd2lsbCBiZSBhZGp1c3RlZCB0byB0aGUgbmV3IHNjb3BlIHRoYXQgdGhlIG5vZGVcbiAgICAgICBpcyBwYXJ0IG9mLiAqKVxuICAgIG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgOyAoKiBbbmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgY3JlYXRlZCBpbiBbdC5jcmVhdGVkX2luXS4gKilcbiAgICBtdXRhYmxlIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF0gaXMgdXNlZCB0byB2aXNpdCBub2RlcyBpbiB0b3BvbG9naWNhbCBvcmRlci4gIElmIFtpc19uZWNlc3NhcnkgdF0sIHRoZW5cbiAgICAgICBbaGVpZ2h0ID4gYy5oZWlnaHRdIGZvciBhbGwgY2hpbGRyZW4gW2NdIG9mIFt0XSwgYW5kIFtoZWlnaHQgPiBTY29wZS5oZWlnaHRcbiAgICAgICB0LmNyZWF0ZWRfaW5dLiAgSWYgW25vdCAoaXNfbmVjZXNzYXJ5IHQpXSwgdGhlbiBbaGVpZ2h0ID0gLTFdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0IDogaW50XG4gIDsgKCogW2hlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0gaXMgdGhlIGhlaWdodCBhdCB3aGljaCBbdF0gaXMgc3RvcmVkIGluIHRoZSByZWNvbXB1dGVcbiAgICAgICBoZWFwLCBhbmQgaXMgbm9uLW5lZ2F0aXZlIGlmZiBbdF0gaXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgSWYgW3RdIGlzIHRoZVxuICAgICAgIHJlY29tcHV0ZSBoZWFwLCB0aGVuIHR5cGljYWxseSBbdC5oZWlnaHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF07IGhvd2V2ZXIsXG4gICAgICAgd2hpbGUgaGVpZ2h0IGlzIGJlaW5nIGFkanVzdGVkLCBvbmUgY2FuIHRlbXBvcmFyaWx5IGhhdmUgW3QuaGVpZ2h0ID5cbiAgICAgICB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0uICBXaGVuIGhlaWdodCBhZGp1c3RtZW50IGZpbmlzaGVzLCBlcXVhbGl0eSBpcyByZXN0b3JlZFxuICAgICAgIGJ5IGluY3JlYXNpbmcgW3QuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSB0byBbdC5oZWlnaHRdIGFuZCBzaGlmdGluZyBbdF0nc1xuICAgICAgIHBvc2l0aW9uIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA6IGludFxuICA7ICgqIFtwcmV2X2luX3JlY29tcHV0ZV9oZWFwXSBhbmQgW25leHRfaW5fcmVjb21wdXRlX2hlYXBdIGRvdWJseSBsaW5rIGFsbCBub2RlcyBvZiB0aGVcbiAgICAgICBzYW1lIGhlaWdodCBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICopXG4gICAgbXV0YWJsZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBpcyB1c2VkIG9ubHkgZHVyaW5nIGhlaWdodCBhZGp1c3RtZW50LCBhbmQgaXNcbiAgICAgICBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgYWRqdXN0LWhlaWdodHMgaGVhcC4gIEl0IGhvbGRzIHRoZSBwcmUtYWRqdXN0ZWRcbiAgICAgICBoZWlnaHQgb2YgW3RdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgOyAoKiBbbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBzaW5nbHkgbGlua3MgYWxsIG5vZGVzIG9mIHRoZSBzYW1lIGhlaWdodCBpbiB0aGVcbiAgICAgICBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAqKVxuICAgIG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW29sZF92YWx1ZV9vcHRdIGlzIHVzZWQgb25seSBkdXJpbmcgc3RhYmlsaXphdGlvbiwgYW5kIG9ubHkgaWZcbiAgICAgICBbdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMF0uICBJdCBob2xkcyB0aGUgcHJlLXN0YWJpbGl6YXRpb24gdmFsdWUgb2YgW3RdLiAgSXRcbiAgICAgICBpcyBjbGVhcmVkIHdoZW4gcnVubmluZyBbdF0ncyBvbi11cGRhdGUgaGFuZGxlcnMsIGFuZCBzbyBpcyBhbHdheXMgW1VvcHQubm9uZV1cbiAgICAgICBiZXR3ZWVuIHN0YWJpbGl6YXRpb25zLiAqKVxuICAgIG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtvYnNlcnZlcnNdIGlzIHRoZSBoZWFkIG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2Ygb2JzZXJ2ZXJzIG9mIFt0XSwgb3JcbiAgICAgICBbVW9wdC5ub25lXSBpZiB0aGVyZSBhcmUgbm8gb2JzZXJ2ZXJzLiAqKVxuICAgIG11dGFibGUgb2JzZXJ2ZXJzIDogKCdhIEludGVybmFsX29ic2VydmVyLnRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIDsgKCogW2lzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSBpcyB1c2VkIHRvIGF2b2lkIHB1c2hpbmcgdGhlIHNhbWUgbm9kZSBtdWx0aXBsZVxuICAgICAgIHRpbWVzIG9udG8gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgICBtdXRhYmxlIGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogYm9vbFxuICA7ICgqIFtvbl91cGRhdGVfaGFuZGxlcnNdIGlzIHRoZSBmdW5jdGlvbnMgc3VwcGxpZWQgdG8gW0luY3JlbWVudGFsLm9uX3VwZGF0ZV0gdG8gYmUgcnVuXG4gICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSBtb2R1bGUgW09uX3VwZGF0ZV9oYW5kbGVyXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIGRvZXMgbm90XG4gICAgICAgY29udGFpbiB0aGUgb24tdXBkYXRlIGhhbmRsZXJzIGluIFt0Lm9ic2VydmVyc10uICBbb25fdXBkYXRlX2hhbmRsZXJzXSBvbmx5IGV2ZXJcbiAgICAgICBnZXRzIGxvbmdlcjsgdGhlcmUgaXMgbm8gd2F5IHRvIHJlbW92ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7IG11dGFibGUgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IDogaW50IGFycmF5XG4gIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIGZvcmNlX25lY2Vzc2FyeSA6IGJvb2xcbiAgOyBtdXRhYmxlIHVzZXJfaW5mbyA6IERvdF91c2VyX2luZm8udCBvcHRpb25cbiAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBwYWNrZWRfc2FtZSAoUGFja2VkLlQgdDEpIChQYWNrZWQuVCB0MikgPSBzYW1lIHQxIHQyXG5sZXQgaXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3NhcnlcbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiB0ID0gS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiB0LmtpbmRcbmxldCBpdGVyaV9jaGlsZHJlbiB0IH5mID0gS2luZC5pdGVyaV9jaGlsZHJlbiB0LmtpbmQgfmZcbmxldCBpc192YWxpZCA9IE5vZGUuaXNfdmFsaWRcbmxldCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA9IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lXG5cbmxldCB1c2VyX2luZm8gdCA9XG4gIG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChJbmZvIGkpIC0+IFNvbWUgaVxuICB8IFNvbWUgb3RoZXIgLT4gU29tZSAoSW5mby5jcmVhdGVfcyAoRG90X3VzZXJfaW5mby5zZXhwX29mX3Qgb3RoZXIpKVxuOztcblxubGV0IHNldF91c2VyX2luZm8gdCBpbmZvID1cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIGluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT4gU29tZSAoSW5mbyBpKSlcbjs7XG5cbmxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IHQgfmxhYmVsIH5hdHRycyA9XG4gIGxldCBuZXdfID0gRG90X3VzZXJfaW5mby5kb3QgfmxhYmVsIH5hdHRyaWJ1dGVzOmF0dHJzIGluXG4gIHQudXNlcl9pbmZvXG4gIDwtIChtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgbmV3X1xuICAgIHwgU29tZSBvdGhlciAtPiBTb21lIChEb3RfdXNlcl9pbmZvLmFwcGVuZCBvdGhlciBuZXdfKSlcbjs7XG5cbmxldCBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50ID1cbiAgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGlsZC5jaGFuZ2VkX2F0IHBhcmVudC5yZWNvbXB1dGVkX2F0ID4gMFxuOztcblxubGV0IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHQgPVxuICBsZXQgaXNfc3RhbGUgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgaWYgZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudDp0IHRoZW4gaXNfc3RhbGUgOj0gdHJ1ZSk7XG4gICFpc19zdGFsZVxuOztcblxubGV0IGlzX3N0YWxlIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9XG4gIGZ1biAodCA6IGEgdCkgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAoKiBBIGNvbnN0IG5vZGUgaXMgc3RhbGUgb25seSBhdCBpbml0aWFsaXphdGlvbi4gKilcbiAgfCBDb25zdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICgqIFRpbWUtYmFzZWQgbm9kZXMgYXJlIGNvbnNpZGVyZWQgc3RhbGUgd2hlbiBbdC5yZWNvbXB1dGVkX2F0XSBpcyBub25lLCB3aGljaCBoYXBwZW5zXG4gICAgIGF0IGluaXRpYWxpemF0aW9uIGFuZCB3aGVuIHRoZSBhbGFybSBtZWNoYW5pc20gbWFrZXMgYSBub2RlIHN0YWxlIChpdCBzZXRzIHRoZVxuICAgICBbdC5yZWNvbXB1dGVkX2F0XSB0byBbU3RhYmlsaXphdGlvbl9udW0ubm9uZV0pLiAqKVxuICB8IEF0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IFNuYXBzaG90IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogV2UgbmV2ZXIgY29uc2lkZXIgYW4gaW52YWxpZGF0ZWQgbm9kZSB0byBiZSBzdGFsZSAtLSB3aGVuIHdlIGludmFsaWRhdGUgYSBub2RlLCB3ZVxuICAgICBpbW1lZGlhdGVseSBwcm9wYWdhdGUgaW52YWxpZGl0eSB0byBpdHMgYW5jZXN0b3JzLiAqKVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogQSBbVmFyXSBub2RlIGlzIHN0YWxlIGlmIGl0IHdhcyBzZXQgc2luY2UgaXQgd2FzIHJlY29tcHV0ZWQuICopXG4gIHwgVmFyIHsgc2V0X2F0OyBfIH0gLT4gU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBzZXRfYXQgdC5yZWNvbXB1dGVkX2F0ID4gMFxuICAoKiBOb2RlcyB0aGF0IGhhdmUgY2hpbGRyZW4uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBCaW5kX21haW4gX1xuICB8IEZyZWV6ZSBfXG4gIHwgSWZfdGhlbl9lbHNlIF9cbiAgfCBKb2luX21haW4gX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBFeHBlcnQgeyBmb3JjZV9zdGFsZTsgXyB9IC0+XG4gICAgZm9yY2Vfc3RhbGVcbiAgICB8fCBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAgIHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbjs7XG5cbmxldCBuZWVkc190b19iZV9jb21wdXRlZCB0ID0gaXNfbmVjZXNzYXJ5IHQgJiYgaXNfc3RhbGUgdFxubGV0IGlzX2luX3JlY29tcHV0ZV9oZWFwIHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAwXG5sZXQgaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0ID0gdC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG5cbmxldCBnZXRfcGFyZW50IHQgfmluZGV4ID1cbiAgVW9wdC52YWx1ZV9leG5cbiAgICAoaWYgaW5kZXggPSAwIHRoZW4gdC5wYXJlbnQwIGVsc2UgVW5pZm9ybV9hcnJheS5nZXQgdC5wYXJlbnQxX2FuZF9iZXlvbmQgKGluZGV4IC0gMSkpXG47O1xuXG5sZXQgaXRlcmlfcGFyZW50cyB0IH5mID1cbiAgaWYgdC5udW1fcGFyZW50cyA+IDBcbiAgdGhlbiAoXG4gICAgZiAwIChVb3B0LnZhbHVlX2V4biB0LnBhcmVudDApO1xuICAgIGZvciBpbmRleCA9IDEgdG8gdC5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIGYgaW5kZXggKFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSkpXG4gICAgZG9uZSlcbjs7XG5cbmxldCBoYXNfY2hpbGQgdCB+Y2hpbGQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkJykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBjaGlsZCBjaGlsZCcpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX2ludmFsaWRfY2hpbGQgdCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+IGhhcyA6PSAhaGFzIHx8IG5vdCAoaXNfdmFsaWQgY2hpbGQpKTtcbiAgIWhhc1xuOztcblxubGV0IGhhc19wYXJlbnQgKHQgOiBfIHQpIH5wYXJlbnQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIF8gKFQgcGFyZW50JykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBwYXJlbnQgcGFyZW50Jyk7XG4gICFoYXNcbjs7XG5cbmxldCBzaG91bGRfYmVfaW52YWxpZGF0ZWQgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuIHQgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgKCogbm9kZXMgd2l0aCBubyBjaGlsZHJlbiAqKVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQXQgXyAtPiBmYWxzZVxuICB8IEF0X2ludGVydmFscyBfIC0+IGZhbHNlXG4gIHwgQ29uc3QgXyB8IFNuYXBzaG90IF8gfCBWYXIgXyAtPiBmYWxzZVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogTm9kZXMgd2l0aCBhIGZpeGVkIHNldCBvZiBjaGlsZHJlbiBhcmUgaW52YWxpZCBpZiBhbnkgY2hpbGQgaXMgaW52YWxpZC4gKilcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBGcmVlemUgX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBoYXNfaW52YWxpZF9jaGlsZCB0XG4gICgqIEEgKl9jaGFuZ2Ugbm9kZSBpcyBpbnZhbGlkIGlmIHRoZSBub2RlIGl0IGlzIHdhdGNoaW5nIGZvciBjaGFuZ2VzIGlzIGludmFsaWQgKHNhbWVcbiAgICAgcmVhc29uIGFzIGFib3ZlKS4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBbaGFzX2ludmFsaWRfY2hpbGQgdF0uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0KVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzKVxuICAoKiBbQmluZF9tYWluXSwgW0lmX3RoZW5fZWxzZV0sIGFuZCBbSm9pbl9tYWluXSBhcmUgaW52YWxpZCBpZiB0aGVpciAqX2NoYW5nZSBjaGlsZCBpcyxcbiAgICAgYnV0IG5vdCBuZWNlc3NhcmlseSBpZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgLS0gdGhlIGdyYXBoIG1heSBiZSByZXN0cnVjdHVyZWQgdG9cbiAgICAgYXZvaWQgdGhlIGludmFsaWRpdHkgb2YgdGhvc2UuICopXG4gIHwgQmluZF9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgdGVzdF9jaGFuZ2UpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBFeHBlcnQgXyAtPlxuICAgICgqIFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IHdlIGRvIGZvciBiaW5kIGFib3ZlLCBleGNlcHQgdGhhdCBhbnkgaW52YWxpZCBjaGlsZCBjYW4gYmVcbiAgICAgICByZW1vdmVkLCBzbyB3ZSBjYW4gb25seSB0ZWxsIGlmIGFuIGV4cGVydCBub2RlIGJlY29tZXMgaW52YWxpZCB3aGVuIGFsbCBpdHNcbiAgICAgICBkZXBlbmRlbmNpZXMgaGF2ZSBmaXJlZCAod2hpY2ggaW4gcHJhY3RpY2UgbWVhbnMgd2hlbiB3ZSBhcmUgYWJvdXQgdG8gcnVuIGl0KS4gKilcbiAgICBmYWxzZVxuOztcblxubGV0IGZvbGRfb2JzZXJ2ZXJzICh0IDogXyB0KSB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIGxldCBhYyA9IHJlZiBpbml0IGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBhYyA6PSBmICFhYyBvYnNlcnZlclxuICBkb25lO1xuICAhYWNcbjs7XG5cbmxldCBpdGVyX29ic2VydmVycyB0IH5mID0gZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDooKSB+ZjooZnVuICgpIG9ic2VydmVyIC0+IGYgb2JzZXJ2ZXIpXG5cbmxldCBpbnZhcmlhbnQgKHR5cGUgYSkgKGludmFyaWFudF9hIDogYSAtPiB1bml0KSAodCA6IGEgdCkgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIFsldGVzdF9lcTogYm9vbF0gKG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQpIChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KTtcbiAgICBpZiBpc19uZWNlc3NhcnkgdFxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IFNjb3BlLmhlaWdodCB0LmNyZWF0ZWRfaW4pO1xuICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgICAgIGFzc2VydCAodC5oZWlnaHQgPiBjaGlsZC5oZWlnaHQpO1xuICAgICAgICBhc3NlcnQgKGhhc19wYXJlbnQgY2hpbGQgfnBhcmVudDp0KSk7XG4gICAgICBhc3NlcnQgKG5vdCAoc2hvdWxkX2JlX2ludmFsaWRhdGVkIHQpKSk7XG4gICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQpIC0+XG4gICAgICBhc3NlcnQgKGhhc19jaGlsZCBwYXJlbnQgfmNoaWxkOnQpO1xuICAgICAgYXNzZXJ0IChpc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgICAgIGFzc2VydCAodC5oZWlnaHQgPCBwYXJlbnQuaGVpZ2h0KSk7XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pZDooY2hlY2sgTm9kZV9pZC5pbnZhcmlhbnQpXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+cmVjb21wdXRlZF9hdDooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgfnZhbHVlX29wdDpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfb3B0IC0+XG4gICAgICAgICAgIGlmIGlzX3ZhbGlkIHQgJiYgbm90IChpc19zdGFsZSB0KSB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIHZhbHVlX29wdCk7XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIHZhbHVlX29wdCkpXG4gICAgICB+a2luZDpcbiAgICAgICAgKGNoZWNrIChmdW4ga2luZCAtPlxuICAgICAgICAgICBLaW5kLmludmFyaWFudCBpbnZhcmlhbnRfYSBraW5kO1xuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgfCBFeHBlcnQgZSAtPlxuICAgICAgICAgICAgIEV4cGVydC5pbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW5cbiAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgIH5pc19uZWNlc3Nhcnk6KGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfmN1dG9mZjooY2hlY2sgKEN1dG9mZi5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfmNoYW5nZWRfYXQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNoYW5nZWRfYXQgLT5cbiAgICAgICAgICAgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50IGNoYW5nZWRfYXQ7XG4gICAgICAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmlzX3NvbWUgdC5yZWNvbXB1dGVkX2F0XG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoYW5nZWRfYXQgdC5yZWNvbXB1dGVkX2F0IDw9IDApKSlcbiAgICAgIH5udW1fb25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAoTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgKyBmb2xkX29ic2VydmVycyB0IH5pbml0OjAgfmY6KGZ1biBuIHsgb25fdXBkYXRlX2hhbmRsZXJzOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgICBuICsgTGlzdC5sZW5ndGggb25fdXBkYXRlX2hhbmRsZXJzKSkpKVxuICAgICAgfm51bV9wYXJlbnRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcGFyZW50cyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzIDw9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZCkpKVxuICAgICAgfnBhcmVudDFfYW5kX2JleW9uZDpcbiAgICAgICAgKGNoZWNrIChmdW4gcGFyZW50MV9hbmRfYmV5b25kIC0+XG4gICAgICAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHBhcmVudDFfYW5kX2JleW9uZCBkb1xuICAgICAgICAgICAgIFsldGVzdF9lcTogYm9vbF1cbiAgICAgICAgICAgICAgIChwYXJlbnRfaW5kZXggPCB0Lm51bV9wYXJlbnRzKVxuICAgICAgICAgICAgICAgKFVvcHQuaXNfc29tZVxuICAgICAgICAgICAgICAgICAgKFVuaWZvcm1fYXJyYXkuZ2V0IHBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5wYXJlbnQwOlxuICAgICAgICAoY2hlY2sgKGZ1biBwYXJlbnQwIC0+XG4gICAgICAgICAgIFsldGVzdF9lcTogYm9vbF0gKHQubnVtX3BhcmVudHMgPiAwKSAoVW9wdC5pc19zb21lIHBhcmVudDApKSlcbiAgICAgIH5jcmVhdGVkX2luOihjaGVjayBTY29wZS5pbnZhcmlhbnQpXG4gICAgICB+bmV4dF9ub2RlX2luX3NhbWVfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIC0+XG4gICAgICAgICAgIGlmIFNjb3BlLmlzX3RvcCB0LmNyZWF0ZWRfaW4gfHwgbm90IChpc192YWxpZCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlKSkpXG4gICAgICB+aGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHQgLT5cbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHQgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSAwKSBlbHNlIGFzc2VydCAoaGVpZ2h0ID0gLTEpKSlcbiAgICAgIH5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAtMSk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDw9IHQuaGVpZ2h0KSkpXG4gICAgICB+cHJldl9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fcmVjb21wdXRlX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIHByZXYpID0gVW9wdC52YWx1ZV9leG4gcHJldl9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgdCkgKFVvcHQudmFsdWVfZXhuIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCkpO1xuICAgICAgICAgICAgIGFzc2VydCAodC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBwcmV2LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCkpKSlcbiAgICAgIH5uZXh0X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gbmV4dC5wcmV2X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IG5leHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICBpZiBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8IHQuaGVpZ2h0KSkpXG4gICAgICB+bmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApXG4gICAgICAgICAgIGVsc2UgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgbmV4dCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBuZXh0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICAgICAgfm9sZF92YWx1ZV9vcHQ6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b2JzZXJ2ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biB7IHN0YXRlOyBvYnNlcnZpbmc7IF8gfSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCB0IG9ic2VydmluZyk7XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgfmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uOmlnbm9yZVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczppZ25vcmVcbiAgICAgIH51c2VyX2luZm86aWdub3JlXG4gICAgICB+bXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgICAgICB8IEV4cGVydCBfIC0+ICgpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuICAgICAgICAgICAgICAgIH5leHBlY3Q6KGluaXRpYWxfbnVtX2NoaWxkcmVuIHQpKTtcbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgICAoZ2V0X3BhcmVudFxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkXG4gICAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpKSkpO1xuICAgICAgICAgICBpZiBkZWJ1ZyAmJiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgQXJyYXkuaXRlciBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKHggPSAtMSkpKSlcbiAgICAgIH5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXg6XG4gICAgICAgIChjaGVjayAoZnVuIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgKEFycmF5Lmxlbmd0aCBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXgpXG4gICAgICAgICAgICAgfmV4cGVjdDooVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQgKyAxKTtcbiAgICAgICAgICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gcGFyZW50X2luZGV4IChUIHBhcmVudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGFja2VkX3NhbWVcbiAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgKEtpbmQuc2xvd19nZXRfY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LmtpbmRcbiAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIEFycmF5Lml0ZXIgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IH5mOihmdW4geCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+Zm9yY2VfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgfmNyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmUpXG47O1xuXG5sZXQgdW5zYWZlX3ZhbHVlIHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9vcHRcbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuICBlbHNlIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBnZXRfY3V0b2ZmIHQgPSB0LmN1dG9mZlxubGV0IHNldF9jdXRvZmYgdCBjdXRvZmYgPSB0LmN1dG9mZiA8LSBjdXRvZmZcblxubGV0IGlzX2NvbnN0IHQgPVxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IENvbnN0IF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBvbl91cGRhdGUgdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMVxuOztcblxubGV0IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgdCBub2RlX3VwZGF0ZSB+bm93ID1cbiAgbGV0IHIgPSByZWYgdC5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgd2hpbGUgbm90IChMaXN0LmlzX2VtcHR5ICFyKSBkb1xuICAgIG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgb25fdXBkYXRlX2hhbmRsZXIgOjogcmVzdCAtPlxuICAgICAgciA6PSByZXN0O1xuICAgICAgT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGxldCByID0gcmVmIG9ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgICAgciA6PSByZXN0O1xuICAgICAgICAoKiBXZSBoYXZlIHRvIHRlc3QgW3N0YXRlXSBiZWZvcmUgZWFjaCBvbi11cGRhdGUgaGFuZGxlciwgYmVjYXVzZSBhbiBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlciBtaWdodCBkaXNhYmxlIGl0cyBvd24gb2JzZXJ2ZXIsIHdoaWNoIHNob3VsZCBwcmV2ZW50IG90aGVyIG9uLXVwZGF0ZVxuICAgICAgICAgICBoYW5kbGVycyBpbiB0aGUgc2FtZSBvYnNlcnZlciBmcm9tIHJ1bm5pbmcuICopXG4gICAgICAgIChtYXRjaCBvYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBJbl91c2UgLT4gT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3cpXG4gICAgZG9uZVxuICBkb25lXG47O1xuXG5sZXQgc2V0X2tpbmQgdCBraW5kID1cbiAgdC5raW5kIDwtIGtpbmQ7XG4gIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gIDwtIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbjs7XG5cbmxldCBjcmVhdGUgc3RhdGUgY3JlYXRlZF9pbiBraW5kID1cbiAgbGV0IHQgPVxuICAgIHsgaWQgPSBOb2RlX2lkLm5leHQgKClcbiAgICA7IHN0YXRlXG4gICAgOyByZWNvbXB1dGVkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdmFsdWVfb3B0ID0gVW9wdC5ub25lXG4gICAgOyBraW5kXG4gICAgOyBjdXRvZmYgPSBDdXRvZmYucGh5c19lcXVhbFxuICAgIDsgY2hhbmdlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IG51bV9vbl91cGRhdGVfaGFuZGxlcnMgPSAwXG4gICAgOyBudW1fcGFyZW50cyA9IDBcbiAgICA7IHBhcmVudDFfYW5kX2JleW9uZCA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgICA7IHBhcmVudDAgPSBVb3B0Lm5vbmVcbiAgICA7IGNyZWF0ZWRfaW5cbiAgICA7IG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHQgPSAtMVxuICAgIDsgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gLTFcbiAgICA7IHByZXZfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgICA7IG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgb2xkX3ZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsgb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IGZhbHNlXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4ID1cbiAgICAgICAgQXJyYXkuY3JlYXRlIH5sZW46KEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4ga2luZCkgKC0xKVxuICAgICgqIFtteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXhdIGhhcyBvbmUgZWxlbWVudCBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGhvbGRcbiAgICAgICB0aGUgY2hpbGQgaW5kZXggb2YgW3BhcmVudDBdLiAqKVxuICAgIDsgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4ID0gW3wgLTEgfF1cbiAgICA7IGZvcmNlX25lY2Vzc2FyeSA9IGZhbHNlXG4gICAgOyB1c2VyX2luZm8gPSBOb25lXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgPVxuICAgICAgICAoaWYgc3RhdGUua2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSB0aGVuIFNvbWUgKEJhY2t0cmFjZS5nZXQgKCkpIGVsc2UgTm9uZSlcbiAgICB9XG4gIGluXG4gIFNjb3BlLmFkZF9ub2RlIGNyZWF0ZWRfaW4gdDtcbiAgKCogW2ludmFyaWFudF0gZG9lcyBub3QgeWV0IGhvbGQgaGVyZSBiZWNhdXNlIG1hbnkgdXNlcyBvZiBbTm9kZS5jcmVhdGVdIHVzZSBba2luZCA9XG4gICAgIFVuaW5pdGlhbGl6ZWRdLCBhbmQgdGhlbiBtdXRhdGUgW3Qua2luZF0gbGF0ZXIuICopXG4gIHRcbjs7XG5cbmxldCBtYXhfbnVtX3BhcmVudHMgdCA9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZFxuXG5sZXQgbWFrZV9zcGFjZV9mb3JfcGFyZW50X2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fcGFyZW50cyA9IG1heF9udW1fcGFyZW50cyB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfbWF4X251bV9wYXJlbnRzID0gMiAqIG1heF9udW1fcGFyZW50cyB0IGluXG4gICAgdC5wYXJlbnQxX2FuZF9iZXlvbmRcbiAgICA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5wYXJlbnQxX2FuZF9iZXlvbmQgfmxlbjoobmV3X21heF9udW1fcGFyZW50cyAtIDEpO1xuICAgIHQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX3BhcmVudHMgKC0xKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0ICh0Lm51bV9wYXJlbnRzIDwgbWF4X251bV9wYXJlbnRzIHQpXG47O1xuXG5sZXQgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQgfmNoaWxkX2luZGV4ID1cbiAgbGV0IG1heF9udW1fY2hpbGRyZW4gPSBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggaW5cbiAgaWYgY2hpbGRfaW5kZXggPj0gbWF4X251bV9jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPSBtYXhfbnVtX2NoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heF9udW1fY2hpbGRyZW4gPSBJbnQubWF4IDIgKDIgKiBtYXhfbnVtX2NoaWxkcmVuKSBpblxuICAgIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX2NoaWxkcmVuICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPCBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXgpXG47O1xuXG5sZXQgc2V0X3BhcmVudCA6IHR5cGUgYS4gY2hpbGQ6YSB0IC0+IHBhcmVudDpQYWNrZWQudCBVb3B0LnQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgaWYgcGFyZW50X2luZGV4ID0gMFxuICB0aGVuIGNoaWxkLnBhcmVudDAgPC0gcGFyZW50XG4gIGVsc2UgVW5pZm9ybV9hcnJheS5zZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSBwYXJlbnRcbjs7XG5cbmxldCBsaW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDooVW9wdC5zb21lIChQYWNrZWQuVCBwYXJlbnQpKSB+cGFyZW50X2luZGV4O1xuICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gY2hpbGRfaW5kZXg7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSBwYXJlbnRfaW5kZXhcbjs7XG5cbmxldCB1bmxpbmtcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IGNoaWxkX2luZGV4OmludCAtPiBwYXJlbnQ6YiB0IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBzZXRfcGFyZW50IH5jaGlsZCB+cGFyZW50OlVvcHQubm9uZSB+cGFyZW50X2luZGV4O1xuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gLTE7XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIDwtIC0xKVxuOztcblxubGV0IGFkZF9wYXJlbnQgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IHBhcmVudDpiIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSBwYXJlbnQgfmNoaWxkX2luZGV4O1xuICBsaW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4OmNoaWxkLm51bV9wYXJlbnRzO1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyArIDFcbjs7XG5cbmxldCByZW1vdmVfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQubnVtX3BhcmVudHMgPj0gMSk7XG4gIGxldCBwYXJlbnRfaW5kZXggPSBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHBhcmVudCkgKGdldF9wYXJlbnQgY2hpbGQgfmluZGV4OnBhcmVudF9pbmRleCkpO1xuICBsZXQgbGFzdF9wYXJlbnRfaW5kZXggPSBjaGlsZC5udW1fcGFyZW50cyAtIDEgaW5cbiAgaWYgcGFyZW50X2luZGV4IDwgbGFzdF9wYXJlbnRfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAobGFzdF9wYXJlbnRfaW5kZXggLSAxKSlcbiAgICBpblxuICAgIGxpbmtcbiAgICAgIH5jaGlsZFxuICAgICAgfmNoaWxkX2luZGV4OmNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4obGFzdF9wYXJlbnRfaW5kZXgpXG4gICAgICB+cGFyZW50XG4gICAgICB+cGFyZW50X2luZGV4KTtcbiAgdW5saW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4Omxhc3RfcGFyZW50X2luZGV4O1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyAtIDFcbjs7XG5cbmxldCBzd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kIHBhcmVudCB+Y2hpbGQxIH5jaGlsZF9pbmRleDEgfmNoaWxkMiB+Y2hpbGRfaW5kZXgyID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDEpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDEpKTtcbiAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIGNoaWxkMikgKEtpbmQuc2xvd19nZXRfY2hpbGQgcGFyZW50LmtpbmQgfmluZGV4OmNoaWxkX2luZGV4MikpKTtcbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MSlcbiAgaW5cbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MilcbiAgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpID0gY2hpbGRfaW5kZXgxKTtcbiAgICBhc3NlcnQgKFxuICAgICAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPSBjaGlsZF9pbmRleDIpKTtcbiAgKCogbm93IHN0YXJ0IHN3YXBwaW5nICopXG4gIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpIDwtIGNoaWxkX2luZGV4MjtcbiAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPC0gY2hpbGRfaW5kZXgxO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDI7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MikgPC0gaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMVxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBQYWNrZWQudCA9IFQgOiBfIFR5cGVzLk5vZGUudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIHRdXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcblxuICBtb2R1bGUgQXNfbGlzdCAoTSA6IHNpZ1xuICAgICAgdmFsIG5leHQgOiBQYWNrZWQudCAtPiBQYWNrZWQudCBVb3B0LnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gUGFja2VkLnQgVW9wdC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCBhYyA9IHJlZiBpbml0IGluXG4gICAgICBsZXQgciA9IHJlZiB0IGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IHBhY2tlZF9ub2RlID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBNLm5leHQgcGFja2VkX25vZGU7XG4gICAgICAgIGFjIDo9IGYgIWFjIHBhY2tlZF9ub2RlXG4gICAgICBkb25lO1xuICAgICAgIWFjXG4gICAgOztcblxuICAgIGxldCBpdGVyIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBuIC0+IGYgbilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBpdGVyIHQgfmY6aW52YXJpYW50XG4gICAgbGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2IChmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyBuIC0+IG4gOjogYWMpKVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX2xpc3QgdCB8PiBbJXNleHBfb2Y6IFBhY2tlZC50IGxpc3RdXG4gIGVuZFxuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mID1cbiAgICBsZXQgc2VlbiA9IE5vZGVfaWQuSGFzaF9zZXQuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBpdGVyX2Rlc2NlbmRhbnRzIChUIHQpID1cbiAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlZW4gdC5pZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBIYXNoX3NldC5hZGQgc2VlbiB0LmlkO1xuICAgICAgICBmIChUIHQpO1xuICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyB0IC0+IGl0ZXJfZGVzY2VuZGFudHMgdCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgdHMgfmY6aXRlcl9kZXNjZW5kYW50cztcbiAgICBzZWVuXG4gIDs7XG5cbiAgbGV0IGl0ZXJfZGVzY2VuZGFudHMgdHMgfmYgPSBpZ25vcmUgKGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmYgOiBfIEhhc2hfc2V0LnQpXG5cbiAgbW9kdWxlIERvdF91c2VyX2luZm8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERvdF91c2VyX2luZm9cblxuICAgIGxldCBkZWZhdWx0IH5uYW1lIHQgPVxuICAgICAgRG90X3VzZXJfaW5mby5kb3RcbiAgICAgICAgfmxhYmVsOlsgbmFtZTsgS2luZC5uYW1lIHQua2luZDsgc3ByaW50ZiBcImhlaWdodD0lZFwiIHQuaGVpZ2h0IF1cbiAgICAgICAgfmF0dHJpYnV0ZXM6U3RyaW5nLk1hcC5lbXB0eVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IChUIHQpID0gYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiB0XG5cbiAgbGV0IHByaW50X25vZGUgb3V0IH5uYW1lIHQgPVxuICAgIGxldCBkZWZhdWx0ID0gRG90X3VzZXJfaW5mby5kZWZhdWx0IH5uYW1lIHQgaW5cbiAgICBsZXQgaW5mbyA9XG4gICAgICBtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIHVzZXJfaW5mbyAtPiBEb3RfdXNlcl9pbmZvLmFwcGVuZCBkZWZhdWx0IHVzZXJfaW5mb1xuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCIlc1xcblwiIChEb3RfdXNlcl9pbmZvLnRvX3N0cmluZyB+bmFtZSAoRG90X3VzZXJfaW5mby50b19kb3QgaW5mbykpXG4gIDs7XG5cbiAgbGV0IHNhdmVfZG90IG91dCB0cyA9XG4gICAgbGV0IG5vZGVfbmFtZSA9XG4gICAgICBpZiBhbV9ydW5uaW5nX3Rlc3RcbiAgICAgIHRoZW4gZnVuIF8gLT4gXCJuIyMjXCJcbiAgICAgIGVsc2UgZnVuIG5vZGUgLT4gXCJuXCIgXiBOb2RlX2lkLnRvX3N0cmluZyBub2RlLmlkXG4gICAgaW5cbiAgICBmcHJpbnRmIG91dCBcImRpZ3JhcGggRyB7XFxuXCI7XG4gICAgZnByaW50ZiBvdXQgXCIgIHJhbmtkaXIgPSBCVFxcblwiO1xuICAgIGxldCBiaW5kX2VkZ2VzID0gcmVmIFtdIGluXG4gICAgbGV0IHNlZW4gPVxuICAgICAgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIGxldCBuYW1lID0gbm9kZV9uYW1lIHQgaW5cbiAgICAgICAgcHJpbnRfbm9kZSBvdXQgfm5hbWUgdDtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgZnJvbV8pIC0+XG4gICAgICAgICAgZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzXFxuXCIgKG5vZGVfbmFtZSBmcm9tXykgbmFtZSk7XG4gICAgICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT5cbiAgICAgICAgICBCaW5kLml0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZCB+ZjooZnVuIHRvXyAtPlxuICAgICAgICAgICAgYmluZF9lZGdlcyA6PSAoVCB0LCB0b18pIDo6ICFiaW5kX2VkZ2VzKVxuICAgICAgICB8IF8gLT4gKCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgIWJpbmRfZWRnZXMgfmY6KGZ1biAoVCBmcm9tLCBUIHRvXykgLT5cbiAgICAgIGlmIEhhc2hfc2V0Lm1lbSBzZWVuIHRvXy5pZFxuICAgICAgdGhlbiBmcHJpbnRmIG91dCBcIiAgJXMgLT4gJXMgW3N0eWxlPWRhc2hlZF1cXG5cIiAobm9kZV9uYW1lIGZyb20pIChub2RlX25hbWUgdG9fKSk7XG4gICAgZnByaW50ZiBvdXQgXCJ9XFxuJSFcIlxuICA7O1xuXG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgdHMgPVxuICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOihmdW4gb3V0IC0+IHNhdmVfZG90IG91dCB0cylcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgQXNfcmVjb21wdXRlX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICBlbmQpXG5cbm1vZHVsZSBOb2Rlc19ieV9oZWlnaHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXNfcmVjb21wdXRlX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAoKiBXZSBkaXNwbGF5IHRoZSBzbWFsbGVzdCBwcmVmaXggb2YgW25vZGVzX2J5X2hlaWdodF0gdGhhdCBpbmNsdWRlcyBhbGwgbm9kZXMuICopXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IG1heF9ub25lbXB0eV9pbmRleCA9IHJlZiAoLTEpIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaSBsIC0+IGlmIFVvcHQuaXNfc29tZSBsIHRoZW4gbWF4X25vbmVtcHR5X2luZGV4IDo9IGkpO1xuICAgIFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczowIH5sZW46KCFtYXhfbm9uZW1wdHlfaW5kZXggKyAxKSB8PiBbJXNleHBfb2Y6IHRdXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuUmVjb21wdXRlX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgbGV0IGFjdHVhbF9sZW5ndGggPSByZWYgMCBpblxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdC5ub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBub2RlIC0+XG4gICAgICAgICAgICAgYWN0dWFsX2xlbmd0aCA6PSAhYWN0dWFsX2xlbmd0aCArIEFzX3JlY29tcHV0ZV9saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAgICAgICAgWyV0ZXN0X2VxOiBpbnRdIGxlbmd0aCAhYWN0dWFsX2xlbmd0aCkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vZGVzX2J5X2hlaWdodCAtPlxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIG5vZGVzX2J5X2hlaWdodCB+ZjooZnVuIGhlaWdodCBub2RlIC0+XG4gICAgICAgICAgICAgQXNfcmVjb21wdXRlX2xpc3QuaXRlciBub2RlIH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKSkpKSlcbjs7XG5cbmxldCBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIGZvciBpID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDEgZG9cbiAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBpKSlcbiAgICBkb25lO1xuICBsZXQgc3JjID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IGRzdCA9IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICB+c3JjXG4gICAgfnNyY19wb3M6MFxuICAgIH5kc3RcbiAgICB+ZHN0X3BvczowXG4gICAgfmxlbjoobWluIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBzcmMpIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpKTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gZHN0O1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBtaW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGRzdClcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9uZXh0IChwcmV2IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXh0ID1cbiAgaWYgVW9wdC5pc19zb21lIHByZXZcbiAgdGhlbiAoXG4gICAgbGV0IChUIHByZXYpID0gVW9wdC51bnNhZmVfdmFsdWUgcHJldiBpblxuICAgIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBuZXh0KVxuOztcblxubGV0IHNldF9wcmV2IChuZXh0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5wcmV2ID1cbiAgaWYgVW9wdC5pc19zb21lIG5leHRcbiAgdGhlbiAoXG4gICAgbGV0IChUIG5leHQpID0gVW9wdC51bnNhZmVfdmFsdWUgbmV4dCBpblxuICAgIG5leHQucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBwcmV2KVxuOztcblxubGV0IGxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gaGVpZ2h0O1xuICBsZXQgbmV4dCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBpblxuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjooVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKVxuOztcblxubGV0IHVubGluayAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgbGV0IHByZXYgPSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgbGV0IG5leHQgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgaWYgcGh5c19zYW1lXG4gICAgICAgKFVvcHQuc29tZSBub2RlKVxuICAgICAgIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcClcbiAgdGhlbiBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjtcbiAgc2V0X25leHQgcHJldiB+bmV4dDtcbiAgbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZVxuOztcblxuKCogV2UgZG9uJ3Qgc2V0IFtub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBdIGhlcmUsIGJ1dCByYXRoZXIgYWZ0ZXIgY2FsbGluZyBbdW5saW5rXS4gKilcblxubGV0IGFkZCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB8fCBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IGF0dGVtcHQgdG8gYWRkIG5vZGUgdG8gcmVjb21wdXRlIGhlYXBcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub2RlLmhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBoZWlnaHQgPCB0LmhlaWdodF9sb3dlcl9ib3VuZCB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGluayB0IG5vZGU7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHJlbW92ZSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpIHx8IE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJpbmNvcnJlY3QgW3JlbW92ZV0gb2Ygbm9kZSBmcm9tIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICB1bmxpbmsgdCBub2RlO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxXG47O1xuXG5sZXQgaW5jcmVhc2VfaGVpZ2h0ICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIGFzc2VydCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIHVubGluayB0IG5vZGU7XG4gIGxpbmsgdCBub2RlXG47O1xuXG5sZXQgbWluX2hlaWdodCB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHRcbiAgZWxzZSAoXG4gICAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gICAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGRvXG4gICAgICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSB0LmhlaWdodF9sb3dlcl9ib3VuZCArIDFcbiAgICBkb25lKTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmRcbjs7XG5cbmxldCByZW1vdmVfbWluIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgbm9kZXNfYnlfaGVpZ2h0ID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IG5vZGUgPSByZWYgKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCkgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lICFub2RlIGRvXG4gICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxO1xuICAgIGlmIGRlYnVnICYmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHVuZXhwZWN0ZWRseSByZWFjaGVkIGVuZCBvZiBoZWFwXCJcbiAgICAgICAgdFxuICAgICAgICBbJXNleHBfb2Y6IHRdO1xuICAgIG5vZGUgOj0gVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG4gIGRvbmU7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFub2RlIGluXG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQubm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6VW9wdC5ub25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG5tb2R1bGUgQXNfYWRqdXN0X2hlaWdodHNfbGlzdCA9IE5vZGUuUGFja2VkLkFzX2xpc3QgKHN0cnVjdFxuICAgIGxldCBuZXh0IChOb2RlLlBhY2tlZC5UIG5vZGUpID0gbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX2FkanVzdF9oZWlnaHRzX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBoZWlnaHQgbm9kZXMgLT5cbiAgICAgICAgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5pbnZhcmlhbnQgbm9kZXM7XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaXRlciBub2RlcyB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCk7XG4gICAgICAgICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gICAgVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbjoobWF4X2hlaWdodF9hbGxvd2VkICsgMSkgVW9wdC5ub25lXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCB0ID1cbiAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyIHQgfmY6KGZ1biBub2RlIC0+IHIgOj0gIXIgKyBBc19hZGp1c3RfaGVpZ2h0c19saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAhclxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLkFkanVzdF9oZWlnaHRzX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbWF4X2hlaWdodF9zZWVuIDogaW50XG4gIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2Rlc19ieV9oZWlnaHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA9IE5vZGVzX2J5X2hlaWdodC5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQpKSlcbiAgICAgIH5oZWlnaHRfbG93ZXJfYm91bmQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9sb3dlcl9ib3VuZCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQpO1xuICAgICAgICAgICBmb3IgaGVpZ2h0ID0gMCB0byBoZWlnaHRfbG93ZXJfYm91bmQgLSAxIGRvXG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfm1heF9oZWlnaHRfc2VlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2hlaWdodF9zZWVuIC0+XG4gICAgICAgICAgIGFzc2VydCAobWF4X2hlaWdodF9zZWVuID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG1heF9oZWlnaHRfc2VlbiA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCkpKVxuICAgICAgfm5vZGVzX2J5X2hlaWdodDooY2hlY2sgTm9kZXNfYnlfaGVpZ2h0LmludmFyaWFudCkpXG47O1xuXG5sZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICB7IGxlbmd0aCA9IDBcbiAgOyBoZWlnaHRfbG93ZXJfYm91bmQgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxXG4gIDsgbWF4X2hlaWdodF9zZWVuID0gMFxuICA7IG5vZGVzX2J5X2hlaWdodCA9IE5vZGVzX2J5X2hlaWdodC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZFxuICB9XG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IG1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGlmIG1heF9oZWlnaHRfYWxsb3dlZCA8IHQubWF4X2hlaWdodF9zZWVuXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiY2Fubm90IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgbGVzcyB0aGFuIHRoZSBtYXggaGVpZ2h0IGFscmVhZHkgc2VlblwiXG4gICAgICAobWF4X2hlaWdodF9hbGxvd2VkLCBgbWF4X2hlaWdodF9zZWVuIHQubWF4X2hlaWdodF9zZWVuKVxuICAgICAgWyVzZXhwX29mOiBpbnQgKiBbIGBtYXhfaGVpZ2h0X3NlZW4gb2YgaW50IF1dO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIHQubm9kZXNfYnlfaGVpZ2h0IDwtIE5vZGVzX2J5X2hlaWdodC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZFxuOztcblxubGV0IGFkZF91bmxlc3NfbWVtICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgdGhlbiAoXG4gICAgbGV0IGhlaWdodCA9IG5vZGUuaGVpZ2h0IGluXG4gICAgKCogV2UgcHJvY2VzcyBub2RlcyBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIHByZS1hZGp1c3RlZCBoZWlnaHQsIHNvIGl0IGlzIGEgYnVnIGlmIHdlXG4gICAgICAgZXZlciB0cnkgdG8gYWRkIGEgbm9kZSB0aGF0IHdvdWxkIHZpb2xhdGUgdGhhdC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0ID49IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKTtcbiAgICAoKiBXaGVuZXZlciB3ZSBzZXQgYSBub2RlJ3MgaGVpZ2h0LCB3ZSB1c2UgW3NldF9oZWlnaHRdLCB3aGljaCBlbmZvcmNlcyB0aGlzLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChoZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gaGVpZ2h0O1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgICBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQ7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKSlcbjs7XG5cbmxldCByZW1vdmVfbWluX2V4biB0IDogTm9kZS5QYWNrZWQudCA9XG4gIGlmIGRlYnVnICYmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWRqdXN0X2hlaWdodHNfaGVhcC5yZW1vdmVfbWluIG9mIGVtcHR5IGhlYXBcIiB0IFslc2V4cF9vZjogdF07XG4gIGxldCByID0gcmVmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIGluXG4gIHdoaWxlIFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgIXIpIGRvXG4gICAgaW5jciByXG4gIGRvbmU7XG4gIGxldCBoZWlnaHQgPSAhciBpblxuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBoZWlnaHQ7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSBpblxuICBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA7XG4gIG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIFVvcHQubm9uZTtcbiAgVCBub2RlXG47O1xuXG5sZXQgc2V0X2hlaWdodCB0IChub2RlIDogXyBOb2RlLnQpIGhlaWdodCA9XG4gIGlmIGhlaWdodCA+IHQubWF4X2hlaWdodF9zZWVuXG4gIHRoZW4gKFxuICAgIHQubWF4X2hlaWdodF9zZWVuIDwtIGhlaWdodDtcbiAgICBpZiBoZWlnaHQgPiBtYXhfaGVpZ2h0X2FsbG93ZWQgdFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwibm9kZSB3aXRoIHRvbyBsYXJnZSBoZWlnaHRcIlxuICAgICAgICAoYEhlaWdodCBoZWlnaHQsIGBNYXggKG1heF9oZWlnaHRfYWxsb3dlZCB0KSlcbiAgICAgICAgWyVzZXhwX29mOiBbIGBIZWlnaHQgb2YgaW50IF0gKiBbIGBNYXggb2YgaW50IF1dKTtcbiAgbm9kZS5oZWlnaHQgPC0gaGVpZ2h0XG47O1xuXG5sZXQgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IGNoaWxkKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGlmIE5vZGUuc2FtZSBwYXJlbnQgb3JpZ2luYWxfY2hpbGRcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhZGRpbmcgZWRnZSBtYWRlIGdyYXBoIGN5Y2xpY1wiXG4gICAgICAoYGNoaWxkIG9yaWdpbmFsX2NoaWxkLCBgcGFyZW50IG9yaWdpbmFsX3BhcmVudClcbiAgICAgIFslc2V4cF9vZjogWyBgY2hpbGQgb2YgXyBOb2RlLnQgXSAqIFsgYHBhcmVudCBvZiBfIE5vZGUudCBdXTtcbiAgaWYgY2hpbGQuaGVpZ2h0ID49IHBhcmVudC5oZWlnaHRcbiAgdGhlbiAoXG4gICAgYWRkX3VubGVzc19tZW0gdCBwYXJlbnQ7XG4gICAgKCogV2Ugc2V0IFtwYXJlbnQuaGVpZ2h0XSBhZnRlciBhZGRpbmcgW3BhcmVudF0gdG8gdGhlIGhlYXAsIHNvIHRoYXQgW3BhcmVudF0gZ29lc1xuICAgICAgIGluIHRoZSBoZWFwIHdpdGggaXRzIHByZS1hZGp1c3RlZCBoZWlnaHQuICopXG4gICAgc2V0X2hlaWdodCB0IHBhcmVudCAoY2hpbGQuaGVpZ2h0ICsgMSkpXG47O1xuXG5sZXQgYWRqdXN0X2hlaWdodHNcbiAgICAgICh0eXBlIGEgYilcbiAgICAgIHRcbiAgICAgIHJlY29tcHV0ZV9oZWFwXG4gICAgICB+Y2hpbGQ6KG9yaWdpbmFsX2NoaWxkIDogYSBOb2RlLnQpXG4gICAgICB+cGFyZW50OihvcmlnaW5hbF9wYXJlbnQgOiBiIE5vZGUudClcbiAgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChvcmlnaW5hbF9jaGlsZC5oZWlnaHQgPj0gb3JpZ2luYWxfcGFyZW50LmhlaWdodCk7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIG9yaWdpbmFsX3BhcmVudC5oZWlnaHQ7XG4gIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnRcbiAgICB0XG4gICAgfm9yaWdpbmFsX2NoaWxkXG4gICAgfm9yaWdpbmFsX3BhcmVudFxuICAgIH5jaGlsZDpvcmlnaW5hbF9jaGlsZFxuICAgIH5wYXJlbnQ6b3JpZ2luYWxfcGFyZW50O1xuICB3aGlsZSBsZW5ndGggdCA+IDAgZG9cbiAgICBsZXQgKFQgY2hpbGQpID0gcmVtb3ZlX21pbl9leG4gdCBpblxuICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgY2hpbGRcbiAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmluY3JlYXNlX2hlaWdodCByZWNvbXB1dGVfaGVhcCBjaGlsZDtcbiAgICBpZiBjaGlsZC5udW1fcGFyZW50cyA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCAoVCBwYXJlbnQpID0gVW9wdC52YWx1ZV9leG4gY2hpbGQucGFyZW50MCBpblxuICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50O1xuICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gY2hpbGQubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgICAgICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50XG4gICAgICBkb25lKTtcbiAgICBtYXRjaCBjaGlsZC5raW5kIHdpdGhcbiAgICB8IEJpbmRfbGhzX2NoYW5nZSB7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JoczsgXyB9IC0+XG4gICAgICBsZXQgciA9IHJlZiBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgaW5cbiAgICAgIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgICAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZV9vbl9yaHNcbiAgICAgICAgdGhlblxuICAgICAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnRcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIH5vcmlnaW5hbF9jaGlsZFxuICAgICAgICAgICAgfm9yaWdpbmFsX3BhcmVudFxuICAgICAgICAgICAgfmNoaWxkXG4gICAgICAgICAgICB+cGFyZW50Om5vZGVfb25fcmhzXG4gICAgICBkb25lXG4gICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG9yaWdpbmFsX2NoaWxkLmhlaWdodCA8IG9yaWdpbmFsX3BhcmVudC5oZWlnaHQpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5BbGFybV92YWx1ZS5BY3Rpb24udCA9XG4gICAgfCBBdCBvZiBBdC50XG4gICAgfCBBdF9pbnRlcnZhbHMgb2YgQXRfaW50ZXJ2YWxzLnRcbiAgICB8IFNuYXBzaG90IDogXyBTbmFwc2hvdC50IC0+IHRcbiAgICB8IFN0ZXBfZnVuY3Rpb24gOiBfIFN0ZXBfZnVuY3Rpb25fbm9kZS50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IEF0IGF0IC0+IEF0LmludmFyaWFudCBhdFxuICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiBBdF9pbnRlcnZhbHMuaW52YXJpYW50IGF0X2ludGVydmFsc1xuICAgIHwgU25hcHNob3Qgc25hcHNob3QgLT4gU25hcHNob3QuaW52YXJpYW50IGlnbm9yZSBzbmFwc2hvdFxuICAgIHwgU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUgLT5cbiAgICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5pbnZhcmlhbnQgaWdub3JlIHN0ZXBfZnVuY3Rpb25fbm9kZVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLkFsYXJtX3ZhbHVlLnQgPVxuICB7IGFjdGlvbiA6IEFjdGlvbi50XG4gIDsgKCogW25leHRfZmlyZWRdIHNpbmdseSBsaW5rcyBhbGwgYWxhcm0gdmFsdWVzIHRoYXQgZmlyZSBkdXJpbmcgYSBzaW5nbGUgY2FsbCB0b1xuICAgICAgIFthZHZhbmNlX2Nsb2NrXS4gKilcbiAgICBtdXRhYmxlIG5leHRfZmlyZWQgOiAodCBVb3B0LnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlciB+YWN0aW9uOihjaGVjayBBY3Rpb24uaW52YXJpYW50KSB+bmV4dF9maXJlZDppZ25vcmUpXG47O1xuXG5sZXQgY3JlYXRlIGFjdGlvbiA9IHsgYWN0aW9uOyBuZXh0X2ZpcmVkID0gVW9wdC5ub25lIH1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb25maWdfaW50ZlxuXG5tb2R1bGUgRGVmYXVsdCAoKSA9IHN0cnVjdFxuICBsZXQgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IHRydWVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXJcblxubW9kdWxlIFBhY2tlZF8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci5QYWNrZWRcblxuICBsZXQgc2V4cF9vZl90IChUIGludGVybmFsX29ic2VydmVyKSA9XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIHw+IFslc2V4cF9vZjogXyBUeXBlcy5Ob2RlLnRdXG4gIDs7XG5cbiAgbGV0IHByZXZfaW5fYWxsIChUIHQpID0gdC5wcmV2X2luX2FsbFxuICBsZXQgbmV4dF9pbl9hbGwgKFQgdCkgPSB0Lm5leHRfaW5fYWxsXG4gIGxldCBzZXRfcHJldl9pbl9hbGwgKFQgdDEpIHQyID0gdDEucHJldl9pbl9hbGwgPC0gdDJcbiAgbGV0IHNldF9uZXh0X2luX2FsbCAoVCB0MSkgdDIgPSB0MS5uZXh0X2luX2FsbCA8LSB0MlxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci5TdGF0ZS50ID1cbiAgICB8IENyZWF0ZWRcbiAgICB8IEluX3VzZVxuICAgIHwgRGlzYWxsb3dlZFxuICAgIHwgVW5saW5rZWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci50ID1cbiAgeyAoKiBTdGF0ZSB0cmFuc2l0aW9uczpcblxuICAgICAgIHt2XG4gICAgICAgICBDcmVhdGVkIC0tPiBJbl91c2UgLS0+IERpc2FsbG93ZWQgLS0+IFVubGlua2VkXG4gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICBcXC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vXG4gICAgICAgdn0gKilcbiAgICBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICA7IG9ic2VydmluZyA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gIDsgKCogW3twcmV2LG5leHR9X2luX2FsbF0gZG91Ymx5IGxpbmsgYWxsIG9ic2VydmVycyBpbiBbc3RhdGUuYWxsX29ic2VydmVyc10uICopXG4gICAgbXV0YWJsZSBwcmV2X2luX2FsbCA6IFBhY2tlZF8udCBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fYWxsIDogUGFja2VkXy50IFVvcHQudFxuICA7ICgqIFt7cHJldixuZXh0fV9pbl9vYnNlcnZpbmddIGRvdWJseSBsaW5rIGFsbCBvYnNlcnZlcnMgb2YgW29ic2VydmluZ10uICopXG4gICAgbXV0YWJsZSBwcmV2X2luX29ic2VydmluZyA6ICgnYSB0W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9vYnNlcnZpbmcgOiAoJ2EgdFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG50eXBlICdhIGludGVybmFsX29ic2VydmVyID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW5jcl9zdGF0ZSB0ID0gdC5vYnNlcnZpbmcuc3RhdGVcblxubGV0IHVzZV9pc19hbGxvd2VkIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDcmVhdGVkIHwgSW5fdXNlIC0+IHRydWVcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gZmFsc2Vcbjs7XG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxubGV0IHNhbWVfYXNfcGFja2VkICh0MSA6IF8gdCkgKFBhY2tlZF8uVCB0MikgPSBzYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH5vYnNlcnZpbmc6KGNoZWNrIChOb2RlLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBvbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICAgICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgQ3JlYXRlZCB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKExpc3QuaXNfZW1wdHkgb25fdXBkYXRlX2hhbmRsZXJzKSkpXG4gICAgICB+cHJldl9pbl9hbGw6XG4gICAgICAgIChjaGVjayAoZnVuIHByZXZfaW5fYWxsIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9hbGwpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fYWxsXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgc2FtZV9hc19wYWNrZWRcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKFBhY2tlZF8ubmV4dF9pbl9hbGwgKFVvcHQudmFsdWVfZXhuIHByZXZfaW5fYWxsKSkpKSkpXG4gICAgICB+bmV4dF9pbl9hbGw6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfaW5fYWxsIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9hbGwpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fYWxsXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgc2FtZV9hc19wYWNrZWRcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKFBhY2tlZF8ucHJldl9pbl9hbGwgKFVvcHQudmFsdWVfZXhuIG5leHRfaW5fYWxsKSkpKSkpXG4gICAgICB+cHJldl9pbl9vYnNlcnZpbmc6XG4gICAgICAgIChjaGVjayAoZnVuIHByZXZfaW5fb2JzZXJ2aW5nIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9vYnNlcnZpbmcpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fb2JzZXJ2aW5nXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4blxuICAgICAgICAgICAgICAgICAgICAobmV4dF9pbl9vYnNlcnZpbmcgKFVvcHQudmFsdWVfZXhuIHByZXZfaW5fb2JzZXJ2aW5nKSkpKSkpXG4gICAgICB+bmV4dF9pbl9vYnNlcnZpbmc6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfaW5fb2JzZXJ2aW5nIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9vYnNlcnZpbmcpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fb2JzZXJ2aW5nXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4blxuICAgICAgICAgICAgICAgICAgICAocHJldl9pbl9vYnNlcnZpbmcgKFVvcHQudmFsdWVfZXhuIG5leHRfaW5fb2JzZXJ2aW5nKSkpKSkpKVxuOztcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ3JlYXRlZCAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIHdpdGhvdXQgc3RhYmlsaXppbmdcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgYWZ0ZXIgZGlzYWxsb3dfZnV0dXJlX3VzZVwiXG4gICAgICB0XG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgfCBJbl91c2UgLT5cbiAgICBsZXQgdW9wdCA9IHQub2JzZXJ2aW5nLnZhbHVlX29wdCBpblxuICAgIGlmIFVvcHQuaXNfbm9uZSB1b3B0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIGdldCB2YWx1ZSBvZiBhbiBpbnZhbGlkIG5vZGVcIiB0IFslc2V4cF9vZjogXyB0XTtcbiAgICBVb3B0LnVuc2FmZV92YWx1ZSB1b3B0XG47O1xuXG5sZXQgb25fdXBkYXRlX2V4biB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJvbl91cGRhdGUgZGlzYWxsb3dlZFwiIHQgWyVzZXhwX29mOiBfIHRdXG4gIHwgQ3JlYXRlZCB8IEluX3VzZSAtPlxuICAgIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgIHwgQ3JlYXRlZCAtPlxuICAgICAgICgqIFdlJ2xsIGJ1bXAgW29ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXSB3aGVuIFt0XSBpcyBhY3R1YWxseSBhZGRlZCB0b1xuICAgICAgICAgIFtvYnNlcnZpbmcub2JzZXJ2ZXJzXSBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICAoKVxuICAgICB8IEluX3VzZSAtPlxuICAgICAgIGxldCBvYnNlcnZpbmcgPSB0Lm9ic2VydmluZyBpblxuICAgICAgIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMSlcbjs7XG5cbmxldCB1bmxpbmtfZnJvbV9vYnNlcnZpbmcgdCA9XG4gIGxldCBwcmV2ID0gdC5wcmV2X2luX29ic2VydmluZyBpblxuICBsZXQgbmV4dCA9IHQubmV4dF9pbl9vYnNlcnZpbmcgaW5cbiAgdC5wcmV2X2luX29ic2VydmluZyA8LSBVb3B0Lm5vbmU7XG4gIHQubmV4dF9pbl9vYnNlcnZpbmcgPC0gVW9wdC5ub25lO1xuICBpZiBVb3B0LmlzX3NvbWUgbmV4dCB0aGVuIChVb3B0LnVuc2FmZV92YWx1ZSBuZXh0KS5wcmV2X2luX29ic2VydmluZyA8LSBwcmV2O1xuICBpZiBVb3B0LmlzX3NvbWUgcHJldiB0aGVuIChVb3B0LnVuc2FmZV92YWx1ZSBwcmV2KS5uZXh0X2luX29ic2VydmluZyA8LSBuZXh0O1xuICBsZXQgb2JzZXJ2aW5nID0gdC5vYnNlcnZpbmcgaW5cbiAgaWYgcGh5c19lcXVhbCB0IChVb3B0LnZhbHVlX2V4biBvYnNlcnZpbmcub2JzZXJ2ZXJzKSB0aGVuIG9ic2VydmluZy5vYnNlcnZlcnMgPC0gbmV4dDtcbiAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgLSBMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgdC5vbl91cGRhdGVfaGFuZGxlcnMgPC0gW11cbjs7XG5cbmxldCB1bmxpbmtfZnJvbV9hbGwgdCA9XG4gIGxldCBwcmV2ID0gdC5wcmV2X2luX2FsbCBpblxuICBsZXQgbmV4dCA9IHQubmV4dF9pbl9hbGwgaW5cbiAgdC5wcmV2X2luX2FsbCA8LSBVb3B0Lm5vbmU7XG4gIHQubmV4dF9pbl9hbGwgPC0gVW9wdC5ub25lO1xuICBpZiBVb3B0LmlzX3NvbWUgbmV4dCB0aGVuIFBhY2tlZF8uc2V0X3ByZXZfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBuZXh0KSBwcmV2O1xuICBpZiBVb3B0LmlzX3NvbWUgcHJldiB0aGVuIFBhY2tlZF8uc2V0X25leHRfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBwcmV2KSBuZXh0XG47O1xuXG5sZXQgdW5saW5rIHQgPVxuICB1bmxpbmtfZnJvbV9vYnNlcnZpbmcgdDtcbiAgdW5saW5rX2Zyb21fYWxsIHRcbjs7XG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYWNrZWRfXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPVxuICAgIGludGVybmFsX29ic2VydmVyIHw+IFslc2V4cF9vZjogXyBpbnRlcm5hbF9vYnNlcnZlcl1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IChUIHQpID0gaW52YXJpYW50IGlnbm9yZSB0XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIEludGVybmFsX29ic2VydmVyLnQgcmVmIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpbnZhcmlhbnRfYSAhdFxubGV0IG9ic2VydmluZyB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nICF0XG5sZXQgdXNlX2lzX2FsbG93ZWQgdCA9IEludGVybmFsX29ic2VydmVyLnVzZV9pc19hbGxvd2VkICF0XG5sZXQgdmFsdWVfZXhuIHQgPSBJbnRlcm5hbF9vYnNlcnZlci52YWx1ZV9leG4gIXRcbmxldCBpbmNyX3N0YXRlIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbmNyX3N0YXRlICF0XG5cbmxldCBvbl91cGRhdGVfZXhuIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICBJbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfZXhuICF0IG9uX3VwZGF0ZV9oYW5kbGVyXG47O1xuIiwiKCogW1N0YXRlXSBkZWZpbmVzIHRoZSBnbG9iYWwgc3RhdGUgb2Ygd2hpY2ggdGhlcmUgaXMgb25lIGluc3RhbmNlIGZvciBlYWNoIGNhbGwgdG9cbiAgIFtJbmNyZW1lbnRhbC5NYWtlXS5cblxuICAgVGhpcyBtb2R1bGUgZG9lcyBub3QgaGF2ZSBhbiBtbGkgYmVjYXVzZSBpdCB3b3VsZCBlc3NlbnRpYWxseSBkdXBsaWNhdGVcbiAgIFtJbmNyZW1lbnRhbC5TXSwgZXhjZXB0IGFkZGluZyBhbiBleHRyYSBbU3RhdGUudF0gYXJndW1lbnQgdG8gZnVuY3Rpb25zLiAqKVxuXG5vcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcblxudHlwZSBzdGF0dXMgPSBUeXBlcy5TdGF0dXMudCA9XG4gIHwgU3RhYmlsaXppbmdcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVyc1xuICB8IE5vdF9zdGFiaWxpemluZ1xuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBvZiBSYWlzZWRfZXhuLnRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBOb2RlX3VwZGF0ZSA9IE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlXG5cbm1vZHVsZSBSdW5fb25fdXBkYXRlX2hhbmRsZXJzID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLlJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCA9IFQgOiAnYSBOb2RlLnQgKiAnYSBOb2RlX3VwZGF0ZS50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IChUIChub2RlLCBfbm9kZV91cGRhdGUpIGFzIHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT4gTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGUpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9ubHlfaW5fZGVidWcgPSBzdHJ1Y3RcbiAgKCogRXh0cmEgc3RhdGUga2VwdCBvbmx5IHdoZW4gW2RlYnVnXSBmb3IgdGhlIHB1cnBvc2Ugb2Ygd3JpdGluZyBhc3NlcnRpb25zLiAqKVxuICB0eXBlIHQgPSBUeXBlcy5Pbmx5X2luX2RlYnVnLnQgPVxuICAgIHsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19ub2RlIDogTm9kZS5QYWNrZWQudCBvcHRpb25cbiAgICA7IG11dGFibGUgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDogTm9kZS5QYWNrZWQudCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5jdXJyZW50bHlfcnVubmluZ19ub2RlOmlnbm9yZVxuICAgICAgICB+ZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlOmlnbm9yZSlcbiAgOztcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICB7IGN1cnJlbnRseV9ydW5uaW5nX25vZGUgPSBOb25lOyBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPSBbXSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFBhY2tlZF93ZWFrX2hhc2h0YmwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuUGFja2VkX3dlYWtfaGFzaHRibC50ID0gVCA6IChfLCBfKSBXZWFrX2hhc2h0YmwudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxudHlwZSB0ID0gVHlwZXMuU3RhdGUudCA9XG4gIHsgbXV0YWJsZSBzdGF0dXMgOiBzdGF0dXNcbiAgOyBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzIDogYm9vbFxuICA7ICgqIFtzdGFiaWxpemF0aW9uX251bV0gc3RhcnRzIGF0IHplcm8sIGFuZCBpcyBpbmNyZW1lbnRlZCBhdCB0aGUgZW5kIG9mIGVhY2hcbiAgICAgICBzdGFiaWxpemF0aW9uLiAqKVxuICAgIG11dGFibGUgc3RhYmlsaXphdGlvbl9udW0gOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgbXV0YWJsZSBjdXJyZW50X3Njb3BlIDogU2NvcGUudFxuICA7IHJlY29tcHV0ZV9oZWFwIDogUmVjb21wdXRlX2hlYXAudFxuICA7IGFkanVzdF9oZWlnaHRzX2hlYXAgOiBBZGp1c3RfaGVpZ2h0c19oZWFwLnRcbiAgOyAoKiBbcHJvcGFnYXRlX2ludmFsaWRpdHldIGhvbGRzIG5vZGVzIHRoYXQgaGF2ZSBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgc2hvdWxkIGJlXG4gICAgICAgY29uc2lkZXJlZCBmb3IgaW52YWxpZGF0aW9uLiAgSXQgaXMgb25seSB1c2VkIGR1cmluZyBncmFwaCByZXN0cnVjdHVyaW5nOlxuICAgICAgIFtpbnZhbGlkYXRlX25vZGVdIGFuZCBbYWRkX3BhcmVudF0uICBPbmNlIGFuIGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0YWNrLCB3ZSB0aGVuXG4gICAgICAgaXRlcmF0ZSB1bnRpbCBpbnZhbGlkaXR5IGhhcyBwcm9wYWdhdGVkIHRvIGFsbCBhbmNlc3RvcnMgYXMgbmVjZXNzYXJ5LCBhY2NvcmRpbmcgdG9cbiAgICAgICBbTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWRdLiAqKVxuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW251bV9hY3RpdmVfb2JzZXJ2ZXJzXSBpcyB0aGUgbnVtYmVyIG9mIG9ic2VydmVycyB3aG9zZSBzdGF0ZSBpcyBbQ3JlYXRlZF0gb3JcbiAgICAgICBbSW5fdXNlXS4gKilcbiAgICBtdXRhYmxlIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIDogaW50XG4gIDsgKCogW2FsbF9vYnNlcnZlcnNdIGlzIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2YgYWxsIG9ic2VydmVycyBpbiBlZmZlY3QsIG9yIHRoYXQgaGF2ZVxuICAgICAgIGJlZW4gZGlzYWxsb3dlZCBzaW5jZSB0aGUgbW9zdCByZWNlbnQgc3RhcnQgb2YgYSBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmVcbiAgICAgICBbc3RhdGVdIGFzIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICBtdXRhYmxlIGFsbF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBXZSBlbnF1ZXVlIGZpbmFsaXplZCBvYnNlcnZlcnMgaW4gYSB0aHJlYWQtc2FmZSBxdWV1ZSwgZm9yIGhhbmRsaW5nIGR1cmluZ1xuICAgICAgIHN0YWJpbGl6YXRpb24uICBXZSB1c2UgYSB0aHJlYWQtc2FmZSBxdWV1ZSBiZWNhdXNlIE9DYW1sIGZpbmFsaXplcnMgY2FuIHJ1biBpbiBhbnlcbiAgICAgICB0aHJlYWQuICopXG4gICAgZmluYWxpemVkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyAoKiBbbmV3X29ic2VydmVyc10gaG9sZHMgb2JzZXJ2ZXJzIGNyZWF0ZWQgc2luY2UgdGhlIG1vc3QgcmVjZW50IHN0YXJ0IG9mIGFcbiAgICAgICBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmUgW3N0YXRlXSBhcyBbQ3JlYXRlZF0gb3IgW1VubGlua2VkXS4gIEF0IHRoZSBzdGFydCBvZlxuICAgICAgIHN0YWJpbGl6YXRpb24sIHdlIGxpbmsgaW50byBbYWxsX29ic2VydmVyc10gYWxsIG9ic2VydmVycyBpbiBbbmV3X29ic2VydmVyc10gd2hvc2VcbiAgICAgICBzdGF0ZSBpcyBbQ3JlYXRlZF0gYW5kIGFkZCB0aGVtIHRvIHRoZSBbb2JzZXJ2ZXJzXSBvZiB0aGUgbm9kZSB0aGV5IGFyZSBvYnNlcnZpbmcuXG4gICAgICAgV2Ugc3RydWN0dXJlIHRoaW5ncyB0aGlzIHdheSB0byBhbGxvdyBvYnNlcnZlcnMgdG8gYmUgY3JlYXRlZCBkdXJpbmcgc3RhYmlsaXphdGlvblxuICAgICAgIHdoaWxlIHJ1bm5pbmcgdXNlciBjb2RlIChbbWFwXSwgW2JpbmRdLCBldGMpLCBidXQgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoIG5vZGVzXG4gICAgICAgYmVjb21pbmcgbmVjZXNzYXJ5IGFuZCB0aGUgdGhlIGdyYXBoIGNoYW5naW5nIGR1cmluZyBzdWNoIGNvZGUuICopXG4gICAgbmV3X29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbZGlzYWxsb3dlZF9vYnNlcnZlcnNdIGhvbGRzIGFsbCBvYnNlcnZlcnMgdGhhdCBoYXZlIGJlZW4gZGlzYWxsb3dlZCBzaW5jZSB0aGUgbW9zdFxuICAgICAgIHJlY2VudCBzdGFydCBvZiBhIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZSBbc3RhdGUgPSBEaXNhbGxvd2VkXS4gIEF0IHRoZSBzdGFydFxuICAgICAgIG9mIHN0YWJpbGl6YXRpb24sIHRoZXNlIGFyZSB1bmxpbmtlZCBmcm9tIFthbGxfb2JzZXJ2ZXJzXSBhbmQgdGhlaXIgc3RhdGUgaXNcbiAgICAgICBjaGFuZ2VkIHRvIFtVbmxpbmtlZF0uICBXZSBzdHJ1Y3R1cmUgdGhpbmdzIHRoaXMgd2F5IHRvIGFsbG93IHVzZXIgY29kZSBydW5uaW5nXG4gICAgICAgZHVyaW5nIHN0YWJpbGl6YXRpb24gdG8gY2FsbCBbZGlzYWxsb3dfZnV0dXJlX3VzZV0sIGJ1dCB0byBub3QgaGF2ZSB0byBkZWFsIHdpdGhcbiAgICAgICBub2RlcyBiZWNvbWluZyB1bm5lY2Vzc2FyeSBhbmQgdGhlIGdyYXBoIGNoYW5naW5nIGR1cmluZyBzdWNoIGNvZGUuICopXG4gICAgZGlzYWxsb3dlZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogV2UgZGVsYXkgYWxsIFtWYXIuc2V0XSBjYWxscyB0aGF0IGhhcHBlbiBkdXJpbmcgc3RhYmlsaXphdGlvbiBzbyB0aGF0IHRoZXkgdGFrZVxuICAgICAgIGVmZmVjdCBhZnRlciBzdGFiaWxpemF0aW9uLiAgQWxsIHZhcmlhYmxlcyBzZXQgZHVyaW5nIHN0YWJpbGl6YXRpb24gYXJlIHB1c2hlZCBvblxuICAgICAgIFtzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHJhdGhlciB0aGFuIHNldHRpbmcgdGhlbS4gIFRoZW4sIGFmdGVyIHRoZSBncmFwaCBoYXNcbiAgICAgICBzdGFiaWxpemVkLCB3ZSBkbyBhbGwgdGhlIHNldHMsIHNvIHRoYXQgdGhleSB0YWtlIGVmZmVjdCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHRcbiAgICAgICBzdGFiaWxpemF0aW9uLiAqKVxuICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6IFZhci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSBoYXMgYWxsIG5vZGVzIHdpdGggaGFuZGxlcnMgdG8gY29uc2lkZXIgcnVubmluZyBhdCB0aGVcbiAgICAgICBlbmQgb2YgdGhlIG5leHQgc3RhYmlsaXphdGlvbi4gIEF0IHRoZSBlbmQgb2Ygc3RhYmlsaXphdGlvbiwgd2UgY29uc2lkZXIgZWFjaCBub2RlXG4gICAgICAgaW4gW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSwgYW5kIGlmIHdlIGRlY2lkZSB0byBydW4gaXRzIG9uLXVwZGF0ZSBoYW5kbGVycyxcbiAgICAgICBwdXNoIGl0IG9uIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXS4gIFRoZW4sIG9uY2Ugd2UndmUgY29uc2lkZXJlZCBhbGwgbm9kZXMgaW5cbiAgICAgICBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLCB3ZSBpdGVyYXRlIHRocm91Z2ggW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdIGFuZFxuICAgICAgIGFjdHVhbGx5IHJ1biB0aGUgaGFuZGxlcnMuXG5cbiAgICAgICBUaGVzZSB0d28gcGFzc2VzIGFyZSBlc3NlbnRpYWwgZm9yIGNvcnJlY3RuZXNzLiAgRHVyaW5nIHRoZSBmaXJzdCBwYXNzLCB3ZSBoYXZlbid0XG4gICAgICAgcnVuIGFueSB1c2VyIGhhbmRsZXJzLCBzbyB3ZSBrbm93IHRoYXQgdGhlIHN0YXRlIGlzIGV4YWN0bHkgYXMgaXQgd2FzIHdoZW5cbiAgICAgICBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgSW4gcGFydGljdWxhciwgd2Uga25vdyB0aGF0IGlmIGEgbm9kZSBpcyBuZWNlc3NhcnksIHRoZW5cbiAgICAgICBpdCBoYXMgYSBzdGFibGUgdmFsdWU7IG9uY2UgdXNlciBoYW5kbGVycyBydW4sIHdlIGRvbid0IGtub3cgdGhpcy4gIER1cmluZyB0aGVcbiAgICAgICBzZWNvbmQgcGFzcywgdXNlciBoYW5kbGVycyBjYW4gbWFrZSBjYWxscyB0byBhbnkgaW5jcmVtZW50YWwgZnVuY3Rpb24gZXhjZXB0IGZvclxuICAgICAgIFtzdGFiaWxpemVdLiAgSW4gcGFydGljdWxhciwgc29tZSBmdW5jdGlvbnMgcHVzaCBub2RlcyBvblxuICAgICAgIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICBCdXQgbm8gZnVuY3Rpb25zIChleGNlcHQgZm9yIFtzdGFiaWxpemVdKSBtb2RpZnlcbiAgICAgICBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10uICopXG4gICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgOyBydW5fb25fdXBkYXRlX2hhbmRsZXJzIDogUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50IFN0YWNrLnRcbiAgOyBtdXRhYmxlIG9ubHlfaW5fZGVidWcgOiBPbmx5X2luX2RlYnVnLnRcbiAgOyB3ZWFrX2hhc2h0YmxzIDogUGFja2VkX3dlYWtfaGFzaHRibC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIGtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgOiBib29sXG4gIDsgKCogU3RhdHMuICBUaGVzZSBhcmUgYWxsIGluY3JlbWVudGVkIGF0IHRoZSBhcHByb3ByaWF0ZSBwbGFjZSwgYW5kIG5ldmVyIGRlY3JlbWVudGVkLiAqKVxuICAgIG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19jaGFuZ2VkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfY3JlYXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2ludmFsaWRhdGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA6IGludFxuICA7IG11dGFibGUgbnVtX3Zhcl9zZXRzIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubW9kdWxlIENsb2NrID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkNsb2NrLnQgPVxuICAgIHsgKCogV2UgdXNlIFt0aW1pbmdfd2hlZWxdIGZvciB0aW1lLWJhc2VkIGluY3JlbWVudGFscy4gIFtub3ddIGlzIGEgdmFyaWFibGUgaG9sZGluZ1xuICAgICAgICAgdGhlIGN1cnJlbnQgdGltZS4gIFtoYW5kbGVfZmlyZWRdIGlzIHRoZSBjbG9zdXJlIHBhc3NlZCB0b1xuICAgICAgICAgW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXS4gIEl0IGxpbmtzIGFsbCB0aGUgZmlyZWQgYWxhcm0gdmFsdWVzIGludG9cbiAgICAgICAgIFtmaXJlZF9hbGFybV92YWx1ZXNdLiAgQWZ0ZXIgW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXSByZXR1cm5zLCBpdCB0aGVuXG4gICAgICAgICB3YWxrcyB0aHJvdWdoIHRoZSBsaW5rZWQgbGlzdCBhbmQgYWN0dWFsbHkgZmlyZXMgdGhlbS4gIFRoaXMgdHdvLXBhc3MgYXBwcm9hY2ggaXNcbiAgICAgICAgIG5lY2Vzc2FyeSBiZWNhdXNlIG9uZSBpcyBub3QgYWxsb3dlZCB0byBjYWxsIFtUaW1pbmdfd2hlZWxdIGZ1bmN0aW9ucyBmcm9tIHRoZVxuICAgICAgICAgW2hhbmRsZV9maXJlZF0gdGhhdCBvbmUgcGFzc2VzIHRvIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10uICopXG4gICAgICB0aW1pbmdfd2hlZWwgOiBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC50XG4gICAgOyBub3cgOiBUaW1lX25zLnQgVmFyLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBmaXJlZF9hbGFybV92YWx1ZXMgOiBBbGFybV92YWx1ZS50IFVvcHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5ub3c6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKG5vdyA6IF8gVmFyLnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLmVxdWFsIG5vdy52YWx1ZSAoVGltaW5nX3doZWVsLm5vdyB0LnRpbWluZ193aGVlbCkpKSlcbiAgICAgICAgfmhhbmRsZV9maXJlZDppZ25vcmVcbiAgICAgICAgfmZpcmVkX2FsYXJtX3ZhbHVlczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBmaXJlZF9hbGFybV92YWx1ZXMgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgZmlyZWRfYWxhcm1fdmFsdWVzKSkpXG4gICAgICAgIH50aW1pbmdfd2hlZWw6KGNoZWNrIChUaW1pbmdfd2hlZWwuaW52YXJpYW50IEFsYXJtX3ZhbHVlLmludmFyaWFudCkpKVxuICA7O1xuXG4gIGxldCBpbmNyX3N0YXRlIHQgPSBWYXIuaW5jcl9zdGF0ZSB0Lm5vd1xuZW5kXG5cbmxldCBub3cgKGNsb2NrIDogQ2xvY2sudCkgPSBjbG9jay5ub3cudmFsdWVcbmxldCB0aW1pbmdfd2hlZWxfbGVuZ3RoIChjbG9jayA6IENsb2NrLnQpID0gVGltaW5nX3doZWVsLmxlbmd0aCBjbG9jay50aW1pbmdfd2hlZWxcbmxldCBudW1fc3RhYmlsaXplcyB0ID0gU3RhYmlsaXphdGlvbl9udW0udG9faW50IHQuc3RhYmlsaXphdGlvbl9udW1cbmxldCBtYXhfaGVpZ2h0X2FsbG93ZWQgdCA9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxubGV0IG1heF9oZWlnaHRfc2VlbiB0ID0gQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X3NlZW4gdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG5cbmxldCBpdGVyX29ic2VydmVycyB0IH5mID1cbiAgbGV0IHIgPSByZWYgdC5hbGxfb2JzZXJ2ZXJzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQubmV4dF9pbl9hbGwgb2JzZXJ2ZXI7XG4gICAgZiBvYnNlcnZlclxuICBkb25lXG47O1xuXG5sZXQgZGlyZWN0bHlfb2JzZXJ2ZWQgdCA9XG4gIGxldCByIDogTm9kZS5QYWNrZWQudCBsaXN0IHJlZiA9IHJlZiBbXSBpblxuICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4gKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpIC0+XG4gICAgciA6PSBUIGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyA6OiAhcik7XG4gICFyXG47O1xuXG5sZXQgc2F2ZV9kb3QgdCBvdXQgPSBOb2RlLlBhY2tlZC5zYXZlX2RvdCBvdXQgKGRpcmVjdGx5X29ic2VydmVkIHQpXG5sZXQgc2F2ZV9kb3RfdG9fZmlsZSB0IGZpbGUgPSBOb2RlLlBhY2tlZC5zYXZlX2RvdF90b19maWxlIGZpbGUgKGRpcmVjdGx5X29ic2VydmVkIHQpXG5sZXQgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mID0gTm9kZS5QYWNrZWQuaXRlcl9kZXNjZW5kYW50cyAoZGlyZWN0bHlfb2JzZXJ2ZWQgdCkgfmZcblxubW9kdWxlIFN0YXRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtYXhfbnVtX3BhcmVudHMgOiBpbnRcbiAgICA7IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgOiAoaW50ICogUGVyY2VudC50KSBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbmxldCBzdGF0cyB0ID1cbiAgbGV0IG1heF9udW1fcGFyZW50cyA9IHJlZiAoLTEpIGluXG4gIGxldCBudW1fbmVjZXNzYXJ5X25vZGVzID0gcmVmIDAgaW5cbiAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICBpbmNyIG51bV9uZWNlc3Nhcnlfbm9kZXM7XG4gICAgbWF4X251bV9wYXJlbnRzIDo9IEludC5tYXggIW1heF9udW1fcGFyZW50cyBub2RlLm51bV9wYXJlbnRzKTtcbiAgbGV0IG1heF9udW1fcGFyZW50cyA9ICFtYXhfbnVtX3BhcmVudHMgaW5cbiAgbGV0IG51bV9ub2Rlc19ieV9udW1fcGFyZW50cyA9IEFycmF5LmNyZWF0ZSB+bGVuOihtYXhfbnVtX3BhcmVudHMgKyAxKSAwIGluXG4gIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgbGV0IG51bV9wYXJlbnRzID0gbm9kZS5udW1fcGFyZW50cyBpblxuICAgIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cy4obnVtX3BhcmVudHMpIDwtIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cy4obnVtX3BhcmVudHMpICsgMSk7XG4gIGxldCBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzID1cbiAgICBBcnJheS5mb2xkaSBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMgfmluaXQ6W10gfmY6KGZ1biBpIGFjIG51bV9ub2RlcyAtPlxuICAgICAgaWYgbnVtX25vZGVzID0gMFxuICAgICAgdGhlbiBhY1xuICAgICAgZWxzZSAoaSwgUGVyY2VudC5vZl9tdWx0IChmbG9hdCBudW1fbm9kZXMgLy4gZmxvYXQgIW51bV9uZWNlc3Nhcnlfbm9kZXMpKSA6OiBhYylcbiAgICB8PiBMaXN0LnJldlxuICBpblxuICB7IFN0YXRzLm1heF9udW1fcGFyZW50czsgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyB9XG47O1xuXG5sZXQgYW1fc3RhYmlsaXppbmcgdCA9XG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIC0+IHRydWVcbiAgfCBOb3Rfc3RhYmlsaXppbmcgLT4gZmFsc2VcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJjYW5ub3QgY2FsbCBhbV9zdGFiaWxpemluZyAtLSBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIlxuICAgICAgcmFpc2VkX2V4blxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnRdXG47O1xuXG5sZXQgaW52YXJpYW50IHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gKClcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICAgICAgKG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT5cbiAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgIFwibWVtYmVyIG9mIGFsbF9vYnNlcnZlcnMgd2l0aCB1bmV4cGVjdGVkIHN0YXRlXCJcbiAgICAgICAgICAgICBpbnRlcm5hbF9vYnNlcnZlclxuICAgICAgICAgICAgIFslc2V4cF9vZjogXyBJbnRlcm5hbF9vYnNlcnZlci50XSk7XG4gICAgICAgIEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpZ25vcmUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoYW1fc3RhYmlsaXppbmcgdCkgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLm9sZF92YWx1ZV9vcHQpO1xuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIG5vZGUuaGVpZ2h0IDw9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcCkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgID0gUmVjb21wdXRlX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXApO1xuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfnN0YXR1czppZ25vcmVcbiAgICAgICAgfmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHM6aWdub3JlXG4gICAgICAgIH5zdGFiaWxpemF0aW9uX251bTooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgICB+Y3VycmVudF9zY29wZTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X3Njb3BlIC0+IGFzc2VydCAocGh5c19lcXVhbCBjdXJyZW50X3Njb3BlIFNjb3BlLnRvcCkpKVxuICAgICAgICB+cmVjb21wdXRlX2hlYXA6KGNoZWNrIFJlY29tcHV0ZV9oZWFwLmludmFyaWFudClcbiAgICAgICAgfmFkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICAgIGFzc2VydCAoQWRqdXN0X2hlaWdodHNfaGVhcC5sZW5ndGggYWRqdXN0X2hlaWdodHNfaGVhcCA9IDApO1xuICAgICAgICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuaW52YXJpYW50IGFkanVzdF9oZWlnaHRzX2hlYXApKVxuICAgICAgICB+cHJvcGFnYXRlX2ludmFsaWRpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gcHJvcGFnYXRlX2ludmFsaWRpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHByb3BhZ2F0ZV9pbnZhbGlkaXR5KSkpXG4gICAgICAgIH5udW1fYWN0aXZlX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fYWN0aXZlX29ic2VydmVycyAtPiBhc3NlcnQgKG51bV9hY3RpdmVfb2JzZXJ2ZXJzID49IDApKSlcbiAgICAgICAgfmFsbF9vYnNlcnZlcnM6aWdub3JlXG4gICAgICAgIH5maW5hbGl6ZWRfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+bmV3X29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgICgqIFdoZW4gYW4gb2JzZXJ2ZXIgaXMgYWRkZWQgdG8gW25ld19vYnNlcnZlcnNdLCBpdCBoYXMgW3N0YXRlID0gQ3JlYXRlZF0uXG4gICAgICAgICAgICAgICAgICAgVGhlIG9ubHkgcG9zc2libGUgdHJhbnNpdGlvbnMgZnJvbSB0aGVyZSBhcmUgdG8gW1VubGlua2VkXSBvciB0b1xuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdLCB3aGljaCBhbHNvIHJlbW92ZXMgaXQgZnJvbSBbbmV3X29ic2VydmVyc10sIG5ldmVyIHRvIGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgICAgYWdhaW4uICBUaHVzIGl0IGlzIGltcG9zc2libGUgZm9yIGFuIG9ic2VydmVyIGluIFtuZXdfb2JzZXJ2ZXJzXSB0byBiZVxuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5kaXNhbGxvd2VkX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgICAgfnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbjpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gLT5cbiAgICAgICAgICAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbilcbiAgICAgICAgICAgICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBTdGFjay5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgICAgKGZ1biAoVmFyLlBhY2tlZC5UIHZhcikgLT5cbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgICAgICAgICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgIH5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjooY2hlY2sgKFN0YWNrLmludmFyaWFudCBOb2RlLlBhY2tlZC5pbnZhcmlhbnQpKVxuICAgICAgICB+cnVuX29uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgICAoY2hlY2sgKFN0YWNrLmludmFyaWFudCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLmludmFyaWFudCkpXG4gICAgICAgIH5vbmx5X2luX2RlYnVnOihjaGVjayBPbmx5X2luX2RlYnVnLmludmFyaWFudClcbiAgICAgICAgfndlYWtfaGFzaHRibHM6aWdub3JlXG4gICAgICAgIH5rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV9uZWNlc3Nhcnk6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NoYW5nZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfY3JlYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19pbnZhbGlkYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQ6aWdub3JlXG4gICAgICAgIH5udW1fdmFyX3NldHM6aWdub3JlKVxuOztcblxubGV0IGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZSB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICBpZiBub3QgYWxsb3dfaW5fdXBkYXRlX2hhbmRsZXJcbiAgICB0aGVuIChcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgb24tdXBkYXRlIGhhbmRsZXJzXCIgbmFtZSlcbiAgICAgICAgYmFja3RyYWNlXG4gICAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdKVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5nZXQgKCkgaW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIChzcHJpbnRmIFwiY2Fubm90ICVzIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiIG5hbWUpXG4gICAgICAocmFpc2VkX2V4biwgYmFja3RyYWNlKVxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnQgKiBCYWNrdHJhY2UudF1cbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgc3RhYmlsaXphdGlvblwiIG5hbWUpXG4gICAgICBiYWNrdHJhY2VcbiAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdXG47O1xuXG5sZXQgc2V0X2hlaWdodCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgQWRqdXN0X2hlaWdodHNfaGVhcC5zZXRfaGVpZ2h0IHQuYWRqdXN0X2hlaWdodHNfaGVhcCBub2RlIGhlaWdodFxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBoZWlnaHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgaGVpZ2h0O1xuICBSZWNvbXB1dGVfaGVhcC5zZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXAgaGVpZ2h0XG47O1xuXG5sZXQgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBub3Qgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvblxuICB0aGVuIChcbiAgICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIHRydWU7XG4gICAgU3RhY2sucHVzaCB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIChUIG5vZGUpKVxuOztcblxubGV0IHJlYyByZW1vdmVfY2hpbGRyZW4gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gcGFyZW50IC0+XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gcGFyZW50IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgcmVtb3ZlX2NoaWxkIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleClcblxuYW5kIHJlbW92ZV9jaGlsZCA6IHR5cGUgYSBiLiBjaGlsZDpiIE5vZGUudCAtPiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGNoaWxkXG5cbmFuZCBjaGVja19pZl91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+IGlmIG5vdCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSkgdGhlbiBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZVxuXG5hbmQgYmVjYW1lX3VubmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgbm9kZS5oZWlnaHQgPC0gLTE7XG4gIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBVbm9yZGVyZWRfYXJyYXlfZm9sZC5mb3JjZV9mdWxsX2NvbXB1dGUgdVxuICAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6ZmFsc2VcbiAgIHwgXyAtPiAoKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpO1xuICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtIChjbG9jayA6IENsb2NrLnQpIGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbiAgdGhlbiBUaW1pbmdfd2hlZWwucmVtb3ZlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybVxuOztcblxuKCogQW4gaW52YWxpZCBub2RlIGlzIG5vZGUgd2hvc2Uga2luZCBpcyBbSW52YWxpZF0uICBBIG5vZGUncyBraW5kIGlzIHNldCB0byBbSW52YWxpZF1cbiAgIHdoZW4gdGhlIGxocyBvZiBpdHMgc2NvcGUgY2hhbmdlcywgb3Igb25lIGlmIGl0cyBjaGlsZHJlbiBwcm9wYWdhdGUgdGhlIGludmFsaWRpdHlcbiAgIHVwd2FyZCAoc2VlIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0gdG8gc2VlIGluIHdoaWNoIGNhc2UgaW52YWxpZGl0eSBwcm9wYWdhdGlvblxuICAgc3RvcHMpLiAgSW52YWxpZGF0aW5nIGEgbm9kZSBkaXNjb25uZWN0cyBpdCBmcm9tIGl0cyBjaGlsZHJlbiwgd2hpY2ggbWVhbnM6XG5cbiAgIDEuIGFuIGludmFsaWQgbm9kZSBjYW5ub3QgZW5kIHVwIG9uIHRoZSBzY2hlZHVsZXIgKGlmIGl0IGlzIG9uIHRoZSBzY2hlZHVsZXIgd2hlblxuICAgaXQgaXMgaW52YWxpZGF0ZWQsIGl0IGlzIHJlbW92ZWQpXG4gICAyLiBhbiBpbnZhbGlkIG5vZGUgZG9lc24ndCBtYWtlIGl0cyBjaGlsZHJlbiBuZWNlc3NhcnkgYW55bW9yZS5cblxuICAgSW52YWxpZCBub2RlcyB1c3VhbGx5IGhhdmUgbm8gcGFyZW50cywgYmVjYXVzZSB0aGUgdXB3YXJkIGludmFsaWRpdHkgcHJvcGFnYXRpb24gbWVhbnNcbiAgIHRoYXQgdGhlaXIgcGFyZW50cyB3aWxsIHRoZW1zZWx2ZXMgYmVjb21lIGludmFsaWQgYW5kIGRpc2Nvbm5lY3QgZnJvbSB0aGVpciBjaGlsZHJlbi5cbiAgIEhvd2V2ZXIsIFtpZl0sIFtqb2luXSBvciBbYmluZF0gYXJlIG5vdCBpbnZhbGlkYXRlZCBieSB0aGUgdXB3YXJkIHByb3BhZ2F0aW9uLCBzbyBhblxuICAgaW52YWxpZCBub2RlIGNhbiBzdGlsbCBoYXZlIHBhcmVudHMuICBJbnZhbGlkIG5vZGVzIGNhbiBiZSBuZWNlc3NhcnksIGluIHRoZSBjYXNlIHdoZXJlXG4gICB0aGV5IGhhdmUgcGFyZW50cywgYW5kIGFsc28gd2hlbiB0aGV5IGFyZSBvYnNlcnZlZC5cblxuICAgVGhlIHVwd2FyZCBwcm9wYWdhdGlvbiBvZiBpbnZhbGlkaXR5IGhhcHBlbnMgYm90aCB3aGVuIGEgbm9kZSBiZWNvbWVzIGludmFsaWQsIGFuZCB3aGVuXG4gICB0cnlpbmcgdG8gYWRkIGFuIGVkZ2UgZnJvbSBhbiBpbnZhbGlkIGNoaWxkIG5vZGUgdG8gYW5vdGhlciBub2RlLiAgQmVjYXVzZSBpbnZhbGlkaXR5XG4gICBpcyBvbmx5IHByb3BhZ2F0ZWQgdXB3YXJkLCBhbmQgYmVjYXVzZSB0aGUgcmhzIG9mIGEgYmluZCBpcyBpbnZhbGlkYXRlZCBiZWZvcmUgaXRcbiAgIGV4ZWN1dGVzLCBhIG5vZGUgY2Fubm90IGJlIGJvdGggY29tcHV0ZWQgYW5kIGludmFsaWRhdGVkIGluIHRoZSBzYW1lIHN0YWJpbGl6YXRpb24uXG5cbiAgIFdoZW4gaW52YWxpZGF0aW5nLCB3ZSBjYW4ndCBhc3N1bWUgbXVjaCBhYm91dCB0aGUgbm9kZXMgd2UgdmlzaXQuICBXZSBjYW5ub3QgYXNzdW1lXG4gICB0aGF0IG5vZGVzIGFyZSB2YWxpZCAodGhlIHJocyBjYW4gY29udGFpbiBwcmV2aW91c2x5IGludmFsaWRhdGVkIG5vZGVzKSwgb3IgdGhhdCBub2Rlc1xuICAgYXJlIHVubmVjZXNzYXJ5IChub2RlcyBjYW4gYmUgbWFkZSBuZWNlc3Nhcnkgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZWlyIGNvbnRhaW5pbmdcbiAgIGJpbmRzKS4gKilcblxubGV0IHJlYyBpbnZhbGlkYXRlX25vZGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGVcbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCA8LSB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCArIDE7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAoKiBUaGUgbm9kZSBkb2Vzbid0IGhhdmUgY2hpbGRyZW4gYW55bW9yZSwgc28gd2UgY2FuIGxvd2VyIGl0cyBoZWlnaHQgYXMgbXVjaCBhc1xuICAgICAgICAgcG9zc2libGUsIHRvIG9uZSBncmVhdGVyIHRoYW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgQWxzbywgYmVjYXVzZSB3ZVxuICAgICAgICAgYXJlIGxvd2VyaW5nIHRoZSBoZWlnaHQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0IGFueSBvZiBpdHMgYW5jZXN0b3JzJyBoZWlnaHRzLlxuICAgICAgICAgV2UgY291bGQgbGVhdmUgdGhlIGhlaWdodCBhbG9uZSwgYnV0IHdlIG1heSBhcyB3ZWxsIGxvd2VyIGl0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlIHRvIGF2b2lkIG1ha2luZyB0aGUgaGVpZ2h0cyBvZiBhbnkgZnV0dXJlIGFuY2VzdG9ycyB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICBsYXJnZS4gKilcbiAgICAgIG5vZGUuaGVpZ2h0IDwtIFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgICAoKiBXZSBkb24ndCBzZXQgW25vZGUuY3JlYXRlZF9pbl0gb3IgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdOyB3ZSBsZWF2ZSBbbm9kZV1cbiAgICAgICBpbiB0aGUgc2NvcGUgaXQgd2FzIGNyZWF0ZWQgaW4uICBJZiB0aGF0IHNjb3BlIGlzIGV2ZXIgaW52YWxpZGF0ZWQsIHRoZW4gdGhhdFxuICAgICAgIHdpbGwgY2xlYXIgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdICopXG4gICAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgIHwgQXQgYXQgLT4gcmVtb3ZlX2FsYXJtIGF0LmNsb2NrIGF0LmFsYXJtXG4gICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiByZW1vdmVfYWxhcm0gYXRfaW50ZXJ2YWxzLmNsb2NrIGF0X2ludGVydmFscy5hbGFybVxuICAgICB8IEJpbmRfbWFpbiBiaW5kIC0+IGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgYWxhcm07IGNsb2NrOyBfIH0gLT4gcmVtb3ZlX2FsYXJtIGNsb2NrIGFsYXJtXG4gICAgIHwgXyAtPiAoKSk7XG4gICAgTm9kZS5zZXRfa2luZCBub2RlIEludmFsaWQ7XG4gICAgKCogSWYgd2UgY2FsbGVkIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gcmlnaHQgYXdheSBvbiB0aGUgcGFyZW50cywgd2Ugd291bGQgZ2V0IGludG9cbiAgICAgICB0cm91YmxlLiAgVGhlIHBhcmVudCB3b3VsZCBkaXNjb25uZWN0IGl0c2VsZiBmcm9tIHRoZSBjdXJyZW50IG5vZGUsIHRodXNcbiAgICAgICBtb2RpZnlpbmcgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgRXZlbiBpZiB3ZSBtYWRlIGEgc3BlY2lhbCBjYXNlLCBpdFxuICAgICAgIHN0aWxsIHdvdWxkbid0IGJlIGVub3VnaCB0byBoYW5kbGUgb3RoZXIgY2FzZXMgd2hlcmUgdGhlIGxpc3Qgb2YgcGFyZW50cyBpc1xuICAgICAgIG1vZGlmaWVkIChlLmcuIHdoZW4gW2xoc10gaXMgaW52YWxpZGF0ZWQgaW4gdGhlIGV4YW1wbGUgaW4gdGhlIGNvbW1lbnQgYWJvdXRcbiAgICAgICBbY2FuX3JlY29tcHV0ZV9ub3ddIGZhciBiZWxvdykuICopXG4gICAgZm9yIGluZGV4ID0gMCB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChOb2RlLmdldF9wYXJlbnQgbm9kZSB+aW5kZXgpXG4gICAgZG9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuXG5hbmQgaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBub2RlID1cbiAgbGV0IHIgPSByZWYgbm9kZSBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxuKCogV2hlbiBbbm90IHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc10gYW5kIGEgYmluZCdzIGxocyBjaGFuZ2VzLCB3ZSBtb3ZlXG4gICBub2RlcyBjcmVhdGVkIG9uIHRoZSBiaW5kJ3MgcmhzIHVwIHRvIGl0cyBwYXJlbnQgYmluZCwgYXMgb3Bwb3NlZCB0byBbU2NvcGUuVG9wXS4gIFRoaXNcbiAgIG1haW50YWlucyB0aGVpciBkZXBlbmRlbmNlIG9uIHZhbGlkIGJpbmQgbGVmdC1oYW5kIHNpZGVzLCBhbmQga2VlcHMgdGhlbSBoaWdoZXIgaW4gdGhlXG4gICBncmFwaC4gIFRoaXMgaW4gdHVybiBtZWFucyB0aGF0IHdlIHdpbGwgY29udGludWUgdG8gY29tcHV0ZSB0aG9zZSBub2RlcyBhZnRlciB0aGVcbiAgIHBhcmVudCBiaW5kJ3MgbGhzLCB3aGljaCBnaXZlcyB0aGVtIG1vcmUgb2YgYSBjaGFuY2UgdG8gYmVjb21lIHVubmVjZXNzYXJ5IGFuZCBub3QgYmVcbiAgIGNvbXB1dGVkIHNob3VsZCB0aGUgcGFyZW50IGJpbmQncyBsaHMgY2hhbmdlLiAqKVxubGV0IHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgX3QgKGZpcnN0X25vZGVfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXdfc2NvcGUgPVxuICBsZXQgciA9IHJlZiBmaXJzdF9ub2RlX29uX3JocyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBub2RlX29uX3Jocy5jcmVhdGVkX2luIDwtIG5ld19zY29wZTtcbiAgICBTY29wZS5hZGRfbm9kZSBuZXdfc2NvcGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxubGV0IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQgPVxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucHJvcGFnYXRlX2ludmFsaWRpdHkpIGRvXG4gICAgbGV0IChUIG5vZGUpID0gU3RhY2sucG9wX2V4biB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IGluXG4gICAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gICAgdGhlblxuICAgICAgaWYgTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWQgbm9kZVxuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGUgbm9kZVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIG5vZGUgaXMgbmVjZXNzYXJ5LiBUaGlzIGlzIGJlY2F1c2UgY2hpbGRyZW4gY2FuIG9ubHkgcG9pbnQgdG8gbmVjZXNzYXJ5XG4gICAgICAgICAgICAgcGFyZW50c1xuICAgICAgICAgICAtIG5vZGUgaXMgc3RhbGUuIFRoaXMgaXMgYmVjYXVzZTogRm9yIGJpbmQsIGlmLCBqb2luLCB0aGlzIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIGVpdGhlciB0aGUgaW52YWxpZGF0aW9uIGlzIGNhdXNlZCBieSB0aGUgbGhzIGNoYW5naW5nIChpbiB3aGljaCBjYXNlIHRoZVxuICAgICAgICAgICAgIGxocy1jaGFuZ2Ugbm9kZSBiZWluZyBuZXdlciBtYWtlcyB1cyBzdGFsZSkuXG4gICAgICAgICAgIC0gb3IgYSBjaGlsZCBiZWNhbWUgaW52YWxpZCB0aGlzIHN0YWJpbGl6YXRpb24gY3ljbGUsIGluIHdoaWNoIGNhc2UgaXQgaGFzXG4gICAgICAgICAgICAgdC5jaGFuZ2VkX2F0IG9mIFt0LnN0YWJpbGl6YXRpb25fbnVtXSwgYW5kIHNvIFtub2RlXSBpcyBzdGFsZVxuICAgICAgICAgICAtIG9yIFtub2RlXSBqdXN0IGJlY2FtZSBuZWNlc3NhcnkgYW5kIHRyaWVkIGNvbm5lY3RpbmcgdG8gYW4gYWxyZWFkeSBpbnZhbGlkXG4gICAgICAgICAgICAgY2hpbGQuIEluIHRoYXQgY2FzZSwgW2NoaWxkLmNoYW5nZWRfYXQgPiBub2RlLnJlY29tcHV0ZWRfYXRdIGZvciB0aGF0IGNoaWxkLFxuICAgICAgICAgICAgIGJlY2F1c2UgaWYgd2UgaGFkIGJlZW4gcmVjb21wdXRlZCB3aGVuIHRoYXQgY2hpbGQgY2hhbmdlZCwgd2Ugd291bGQgaGF2ZSBiZWVuXG4gICAgICAgICAgICAgbWFkZSBpbnZhbGlkIGJhY2sgdGhlbi4gIEZvciBleHBlcnQgbm9kZXMsIHRoZSBhcmd1bWVudCBpcyB0aGUgc2FtZSwgZXhjZXB0XG4gICAgICAgICAgICAgdGhhdCBpbnN0ZWFkIG9mIGxocy1jaGFuZ2Ugbm9kZXMgbWFrZSB0aGUgZXhwZXJ0IG5vZGVzIHN0YWxlLCBpdCdzIG1hZGUgc3RhbGVcbiAgICAgICAgICAgICBleHBsaWNpdGVseSB3aGVuIGFkZGluZyBvciByZW1vdmluZyBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgICgqIElmIG11bHRpcGxlIGNoaWxkcmVuIGFyZSBpbnZhbGlkLCB0aGV5IHdpbGwgcHVzaCB1cyBhcyBtYW55IHRpbWVzIG9uIHRoZVxuICAgICAgICAgICAgICBwcm9wYWdhdGlvbiBzdGFjaywgc28gd2UgY291bnQgdGhlbSByaWdodC4gKilcbiAgICAgICAgICAgRXhwZXJ0LmluY3JfaW52YWxpZF9jaGlsZHJlbiBleHBlcnRcbiAgICAgICAgIHwga2luZCAtPlxuICAgICAgICAgICBpZiBkZWJ1Z1xuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICB8IEJpbmRfbWFpbiBfIHwgSWZfdGhlbl9lbHNlIF8gfCBKb2luX21haW4gXyAtPiAoKVxuICAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKCogbm9kZXMgd2l0aCBubyBjaGlsZHJlbiBhcmUgbmV2ZXIgcHVzaGVkIG9uIHRoZSBzdGFjayAqKSkpO1xuICAgICAgICAoKiBXZSBkbyBub3QgY2hlY2sgW05vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZV0gaGVyZSwgYmVjYXVzZSBpdCBzaG91bGQgYmVcbiAgICAgICAgICAgdHJ1ZSwgYW5kIGJlY2F1c2UgY29tcHV0aW5nIGl0IHRha2VzIE8obnVtYmVyIG9mIGNoaWxkcmVuKSwgbm9kZSBjYW4gYmUgcHVzaGVkXG4gICAgICAgICAgIG9uIHRoZSBzdGFjayBvbmNlIHBlciBjaGlsZCwgYW5kIGV4cGVydCBub2RlcyBjYW4gaGF2ZSBsb3RzIG9mIGNoaWxkcmVuLiAqKVxuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICBkb25lXG47O1xuXG4oKiBbYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIHQgfmNoaWxkIH5wYXJlbnRdIGFkZHMgW3BhcmVudF0gYXMgYSBwYXJlbnQgb2ZcbiAgIFtjaGlsZF0sIGFuZCBtYWtlcyBbY2hpbGRdIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzIG5lY2Vzc2FyeSwgZW5zdXJpbmcgdGhlaXIgaGVpZ2h0c1xuICAgYXJlIGFjY3VyYXRlLiAgVGhlcmUgaXMgbm8gZ3VhcmFudGVlIGFib3V0IHRoZSByZWxhdGl2ZSBoZWlnaHRzIG9mIFtjaGlsZF0gYW5kIFtwYXJlbnRdXG4gICB0aG91Z2guICopXG5sZXQgcmVjIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0c1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIE5vZGUudCAtPiBwYXJlbnQ6YiBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBsZXQgdCA9IGNoaWxkLnN0YXRlIGluXG4gIGxldCB3YXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3NhcnkgY2hpbGQgaW5cbiAgTm9kZS5hZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIGNoaWxkKSB0aGVuIFN0YWNrLnB1c2ggdC5wcm9wYWdhdGVfaW52YWxpZGl0eSAoVCBwYXJlbnQpO1xuICBpZiBub3Qgd2FzX25lY2Vzc2FyeSB0aGVuIGJlY2FtZV9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgfCBFeHBlcnQgZSAtPiBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgZSB+Y2hpbGRfaW5kZXhcbiAgfCBfIC0+ICgpXG5cbmFuZCBiZWNhbWVfbmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgKCogW1Njb3BlLmlzX25lY2Vzc2FyeSBub2RlLmNyZWF0ZWRfaW5dIGlzIHRydWUgKGFzc3VtaW5nIHRoZSBzY29wZSBpdHNlbGYgaXMgdmFsaWQpXG4gICAgIGJlY2F1c2UgW05vZGUuaXRlcl9jaGlsZHJlbl0gYmVsb3cgZmlyc3QgdmlzaXRzIHRoZSBsaHMtY2hhbmdlIG9mIGJpbmQgbm9kZXMgYW5kXG4gICAgIHRoZW4gdGhlIHJocy4gKilcbiAgaWYgTm9kZS5pc192YWxpZCBub2RlICYmIG5vdCAoU2NvcGUuaXNfbmVjZXNzYXJ5IG5vZGUuY3JlYXRlZF9pbilcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUcnlpbmcgdG8gbWFrZSBhIG5vZGUgbmVjZXNzYXJ5IHdob3NlIGRlZmluaW5nIGJpbmQgaXMgbm90IG5lY2Vzc2FyeVwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgPC0gdC5udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSArIDE7XG4gIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICAoKiBTaW5jZSBbbm9kZV0gYmVjYW1lIG5lY2Vzc2FyeSwgdG8gcmVzdG9yZSB0aGUgaW52YXJpYW50LCB3ZSBuZWVkIHRvOlxuXG4gICAgIC0gYWRkIHBhcmVudCBwb2ludGVycyB0byBbbm9kZV0gZnJvbSBpdHMgY2hpbGRyZW4uXG4gICAgIC0gc2V0IFtub2RlXSdzIGhlaWdodC5cbiAgICAgLSBhZGQgW25vZGVdIHRvIHRoZSByZWNvbXB1dGUgaGVhcCwgaWYgbmVjZXNzYXJ5LiAqKVxuICBzZXRfaGVpZ2h0IG5vZGUgKFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgTm9kZS5pdGVyaV9jaGlsZHJlbiBub2RlIH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4O1xuICAgICgqIE5vdyB0aGF0IGNoaWxkIGlzIG5lY2Vzc2FyeSwgaXQgc2hvdWxkIGhhdmUgYSB2YWxpZCBoZWlnaHQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkLmhlaWdodCA+PSAwKTtcbiAgICBpZiBjaGlsZC5oZWlnaHQgPj0gbm9kZS5oZWlnaHQgdGhlbiBzZXRfaGVpZ2h0IG5vZGUgKGNoaWxkLmhlaWdodCArIDEpKTtcbiAgKCogTm93IHRoYXQgdGhlIGhlaWdodCBpcyBjb3JyZWN0LCBtYXliZSBhZGQgW25vZGVdIHRvIHRoZSByZWNvbXB1dGUgaGVhcC4gIFtub2RlXVxuICAgICBqdXN0IGJlY2FtZSBuZWNlc3NhcnksIHNvIGl0IGNhbid0IGhhdmUgYmVlbiBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICBTaW5jZSBbbm9kZV1cbiAgICAgaXMgbmVjZXNzYXJ5LCB3ZSBzaG91bGQgYWRkIGl0IHRvIHRoZSByZWNvbXB1dGUgaGVhcCBpZmYgaXQgaXMgc3RhbGUuICopXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSk7XG4gIGlmIE5vZGUuaXNfc3RhbGUgbm9kZSB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gIHwgRXhwZXJ0IHAgLT4gRXhwZXJ0Lm9ic2VydmFiaWxpdHlfY2hhbmdlIHAgfmlzX25vd19vYnNlcnZhYmxlOnRydWVcbiAgfCBfIC0+ICgpXG47O1xuXG5sZXQgYmVjYW1lX25lY2Vzc2FyeSBub2RlID1cbiAgYmVjYW1lX25lY2Vzc2FyeSBub2RlO1xuICBwcm9wYWdhdGVfaW52YWxpZGl0eSBub2RlLnN0YXRlXG47O1xuXG5sZXQgYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgbGV0IHQgPSBwYXJlbnQuc3RhdGUgaW5cbiAgKCogSW4gdGhlIGNhc2Ugd2hlbiB0aGUgZWRnZSBiZWluZyBhZGRlZCBjcmVhdGVzIGEgY3ljbGUsIGl0IGlzIHBvc3NpYmxlIGZvciB0aGVcbiAgICAgcmVjdXJzaW9uIGluIFthZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHNdIHRvIHJlYWNoIFtwYXJlbnRdIGFzIGEgZGVzY2VuZGFudFxuICAgICBvZiBbY2hpbGRdLiAgSW4gdGhhdCBjYXNlLCB0aGUgcmVjdXJzaW9uIHRlcm1pbmF0ZXMsIGJlY2F1c2UgW05vZGUuaXNfbmVjZXNzYXJ5XG4gICAgIHBhcmVudF0uICBXZSB0aGVuIHJldHVybiBoZXJlIGFuZCBzdWJzZXF1ZW50bHkgZGV0ZWN0IHRoZSBjeWNsZSBpblxuICAgICBbYWRqdXN0X2hlaWdodHNdLiAqKVxuICBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAoKiBXZSBhZGp1c3QgaGVpZ2h0cyBzbyB0aGF0IHdlIGVuc3VyZSB0aGVyZSBhcmUgbm8gY3ljbGVzIGJlZm9yZSBjYWxsaW5nXG4gICAgIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0uICopXG4gIGlmIGNoaWxkLmhlaWdodCA+PSBwYXJlbnQuaGVpZ2h0XG4gIHRoZW5cbiAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLmFkanVzdF9oZWlnaHRzXG4gICAgICB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICAgIHQucmVjb21wdXRlX2hlYXBcbiAgICAgIH5jaGlsZFxuICAgICAgfnBhcmVudDtcbiAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdDtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gICgqIHdlIG9ubHkgYWRkIG5lY2Vzc2FyeSBwYXJlbnRzICopXG4gIGlmIChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KSlcbiAgJiYgKFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgcGFyZW50LnJlY29tcHV0ZWRfYXRcbiAgICAgIHx8IE5vZGUuZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudClcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnRcbjs7XG5cbmxldCBydW5fd2l0aF9zY29wZSB0IHNjb3BlIH5mID1cbiAgbGV0IHNhdmVkID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIHQuY3VycmVudF9zY29wZSA8LSBzY29wZTtcbiAgdHJ5XG4gICAgbGV0IHYgPSBmICgpIGluXG4gICAgdC5jdXJyZW50X3Njb3BlIDwtIHNhdmVkO1xuICAgIHZcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHQuY3VycmVudF9zY29wZSA8LSBzYXZlZDtcbiAgICByYWlzZSBleG5cbjs7XG5cbmxldCB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZiA9XG4gIGlmIG5vdCAoU2NvcGUuaXNfdmFsaWQgc2NvcGUpXG4gIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIHJ1biB3aXRoaW4gYW4gaW52YWxpZCBzY29wZVwiIHQgWyVzZXhwX29mOiB0XTtcbiAgcnVuX3dpdGhfc2NvcGUgdCBzY29wZSB+ZlxuOztcblxubGV0IGNoYW5nZV9jaGlsZFxuICA6IHR5cGUgYSBiLlxuICAgIHBhcmVudDphIE5vZGUudFxuICAgIC0+IG9sZF9jaGlsZDpiIE5vZGUudCBVb3B0LnRcbiAgICAtPiBuZXdfY2hpbGQ6YiBOb2RlLnRcbiAgICAtPiBjaGlsZF9pbmRleDppbnRcbiAgICAtPiB1bml0XG4gID1cbiAgZnVuIH5wYXJlbnQgfm9sZF9jaGlsZCB+bmV3X2NoaWxkIH5jaGlsZF9pbmRleCAtPlxuICBpZiBVb3B0LmlzX25vbmUgb2xkX2NoaWxkXG4gIHRoZW4gYWRkX3BhcmVudCB+Y2hpbGQ6bmV3X2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4XG4gIGVsc2UgKFxuICAgIGxldCBvbGRfY2hpbGQgPSBVb3B0LnVuc2FmZV92YWx1ZSBvbGRfY2hpbGQgaW5cbiAgICBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX2NoaWxkIG5ld19jaGlsZClcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIHJlbW92ZSBbb2xkX2NoaWxkXSBiZWZvcmUgYWRkaW5nIFtuZXdfY2hpbGRdLCBiZWNhdXNlIHRoZXkgc2hhcmUgdGhlIHNhbWVcbiAgICAgICAgIGNoaWxkIGluZGV4LiAqKVxuICAgICAgTm9kZS5yZW1vdmVfcGFyZW50IH5jaGlsZDpvbGRfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICAgICAoKiBXZSBmb3JjZSBbb2xkX2NoaWxkXSB0byB0ZW1wb3JhcmlseSBiZSBuZWNlc3Nhcnkgc28gdGhhdCBbYWRkX3BhcmVudF0gY2FuJ3RcbiAgICAgICAgIG1pc3Rha2VubHkgdGhpbmsgaXQgaXMgdW5uZWNlc3NhcnkgYW5kIHRyYW5zaXRpb24gaXQgdG8gbmVjZXNzYXJ5ICh3aGljaCB3b3VsZFxuICAgICAgICAgYWRkIGR1cGxpY2F0ZSBlZGdlcyBhbmQgYnJlYWsgdGhpbmdzIGhvcnJpYmx5KS4gKilcbiAgICAgIG9sZF9jaGlsZC5mb3JjZV9uZWNlc3NhcnkgPC0gdHJ1ZTtcbiAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOm5ld19jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgICAgIG9sZF9jaGlsZC5mb3JjZV9uZWNlc3NhcnkgPC0gZmFsc2U7XG4gICAgICAoKiBXZSBbY2hlY2tfaWZfdW5uZWNlc3NhcnldIGFmdGVyIFthZGRfcGFyZW50XSwgc28gdGhhdCB3ZSBkb24ndCB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICB0cmFuc2l0aW9uIG5vZGVzIGZyb20gbmVjZXNzYXJ5IHRvIHVubmVjZXNzYXJ5IGFuZCB0aGVuIGJhY2sgYWdhaW4uICopXG4gICAgICBjaGVja19pZl91bm5lY2Vzc2FyeSBvbGRfY2hpbGQpKVxuOztcblxubGV0IGFkZF9hbGFybSBjbG9jayB+YXQgYWxhcm1fdmFsdWUgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gIFRpbWluZ193aGVlbC5hZGQgY2xvY2sudGltaW5nX3doZWVsIH5hdCBhbGFybV92YWx1ZVxuOztcblxubGV0IHJlYyByZWNvbXB1dGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgdC5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgPC0gU29tZSAoVCBub2RlKTtcbiAgICB0Lm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDwtIFtdKTtcbiAgdC5udW1fbm9kZXNfcmVjb21wdXRlZCA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkICsgMTtcbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gIHwgQXJyYXlfZm9sZCBhcnJheV9mb2xkIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChBcnJheV9mb2xkLmNvbXB1dGUgYXJyYXlfZm9sZClcbiAgfCBBdCB7IGF0OyBjbG9jazsgXyB9IC0+XG4gICAgKCogSXQgaXMgYSBidWcgaWYgd2UgdHJ5IHRvIGNvbXB1dGUgYW4gW0F0XSBub2RlIGFmdGVyIFthdF0uICBbYWR2YW5jZV9jbG9ja10gd2FzXG4gICAgICAgc3VwcG9zZWQgdG8gY29udmVydCBpdCB0byBhIFtDb25zdF0gYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIEJlZm9yZVxuICB8IEF0X2ludGVydmFscyBfIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgQmluZF9saHNfY2hhbmdlXG4gICAgICAoeyBtYWluXG4gICAgICAgOyBmXG4gICAgICAgOyBsaHNcbiAgICAgICA7IHJoc19zY29wZVxuICAgICAgIDsgcmhzID0gb2xkX3Joc1xuICAgICAgIDsgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzID0gb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgIDsgX1xuICAgICAgIH0gYXMgYmluZCkgLT5cbiAgICAoKiBXZSBjbGVhciBbYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXSBzbyBpdCB3aWxsIGhvbGQganVzdCB0aGUgbm9kZXMgY3JlYXRlZCBieVxuICAgICAgIHRoaXMgY2FsbCB0byBbZl0uICopXG4gICAgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPC0gVW9wdC5ub25lO1xuICAgIGxldCByaHMgPSBydW5fd2l0aF9zY29wZSB0IHJoc19zY29wZSB+ZjooZnVuICgpIC0+IGYgKE5vZGUudmFsdWVfZXhuIGxocykpIGluXG4gICAgYmluZC5yaHMgPC0gVW9wdC5zb21lIHJocztcbiAgICAoKiBBbnRpY2lwYXRlIHdoYXQgW21heWJlX2NoYW5nZV92YWx1ZV0gd2lsbCBkbywgdG8gbWFrZSBzdXJlIEJpbmRfbWFpbiBpcyBzdGFsZVxuICAgICAgIHJpZ2h0IGF3YXkuIFRoaXMgd2F5LCBpZiB0aGUgbmV3IGNoaWxkIGlzIGludmFsaWQsIHdlJ2xsIHNhdGlzZnkgdGhlIGludmFyaWFudFxuICAgICAgIHNheWluZyB0aGF0IFtuZWVkc190b19iZV9jb21wdXRlZCBiaW5kX21haW5dIGluIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpvbGRfcmhzXG4gICAgICB+bmV3X2NoaWxkOnJoc1xuICAgICAgfmNoaWxkX2luZGV4OktpbmQuYmluZF9yaHNfY2hpbGRfaW5kZXg7XG4gICAgaWYgVW9wdC5pc19zb21lIG9sZF9yaHNcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIGludmFsaWRhdGUgYWZ0ZXIgW2NoYW5nZV9jaGlsZF0sIGJlY2F1c2UgaW52YWxpZGF0aW9uIGNoYW5nZXMgdGhlIFtraW5kXSBvZlxuICAgICAgICAgbm9kZXMgdG8gW0ludmFsaWRdLCB3aGljaCBtZWFucyB0aGF0IHdlIGNhbiBubyBsb25nZXIgdmlzaXQgdGhlaXIgY2hpbGRyZW4uXG4gICAgICAgICBBbHNvLCB0aGUgW29sZF9yaHNdIG5vZGVzIGFyZSB0eXBpY2FsbHkgbWFkZSB1bm5lY2Vzc2FyeSBieSBbY2hhbmdlX2NoaWxkXSwgYW5kXG4gICAgICAgICBzbyBieSBpbnZhbGlkYXRpbmcgYWZ0ZXJ3YXJkcywgd2Ugd2lsbCBub3Qgd2FzdGUgdGltZSBhZGRpbmcgdGhlbSB0byB0aGVcbiAgICAgICAgIHJlY29tcHV0ZSBoZWFwIGFuZCB0aGVuIHJlbW92aW5nIHRoZW0uICopXG4gICAgICBpZiB0LmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNcbiAgICAgIHRoZW4gaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICBlbHNlXG4gICAgICAgIHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICAgICB0XG4gICAgICAgICAgb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgICAgIH5uZXdfc2NvcGU6bWFpbi5jcmVhdGVkX2luO1xuICAgICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdCk7XG4gICAgKCogW25vZGVdIHdhcyB2YWxpZCBhdCB0aGUgc3RhcnQgb2YgdGhlIFtCaW5kX2xoc19jaGFuZ2VdIGJyYW5jaCwgYW5kIGludmFsaWRhdGlvblxuICAgICAgIG9ubHkgdmlzaXRzIGhpZ2hlciBub2Rlcywgc28gW25vZGVdIGlzIHN0aWxsIHZhbGlkLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3ZhbGlkIG5vZGUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgQmluZF9tYWluIHsgcmhzOyBfIH0gLT4gY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biByaHMpXG4gIHwgQ29uc3QgYSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBhXG4gIHwgRnJlZXplIHsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW47IF8gfSAtPlxuICAgIGxldCB2YWx1ZSA9IE5vZGUudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgaWYgb25seV9mcmVlemVfd2hlbiB2YWx1ZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICBOb2RlLnNldF9raW5kIG5vZGUgKENvbnN0IHZhbHVlKTtcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgdGhlbiBzZXRfaGVpZ2h0IG5vZGUgMCBlbHNlIGJlY2FtZV91bm5lY2Vzc2FyeSBub2RlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSB2YWx1ZVxuICB8IElmX3Rlc3RfY2hhbmdlICh7IG1haW47IGN1cnJlbnRfYnJhbmNoOyB0ZXN0OyB0aGVuXzsgZWxzZV87IF8gfSBhcyBpZl90aGVuX2Vsc2UpIC0+XG4gICAgbGV0IGRlc2lyZWRfYnJhbmNoID0gaWYgTm9kZS52YWx1ZV9leG4gdGVzdCB0aGVuIHRoZW5fIGVsc2UgZWxzZV8gaW5cbiAgICBpZl90aGVuX2Vsc2UuY3VycmVudF9icmFuY2ggPC0gVW9wdC5zb21lIGRlc2lyZWRfYnJhbmNoO1xuICAgICgqIHNlZSB0aGUgY29tbWVudCBpbiBCaW5kX2xoc19jaGFuZ2UgKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpjdXJyZW50X2JyYW5jaFxuICAgICAgfm5ld19jaGlsZDpkZXNpcmVkX2JyYW5jaFxuICAgICAgfmNoaWxkX2luZGV4OktpbmQuaWZfYnJhbmNoX2NoaWxkX2luZGV4O1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgSWZfdGhlbl9lbHNlIHsgY3VycmVudF9icmFuY2g7IF8gfSAtPlxuICAgIGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gY3VycmVudF9icmFuY2gpXG4gIHwgSW52YWxpZCAtPlxuICAgICgqIFdlIG5ldmVyIGhhdmUgaW52YWxpZCBub2RlcyBpbiB0aGUgcmVjb21wdXRlIGhlYXA7IHRoZXkgYXJlIG5ldmVyIHN0YWxlLiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEpvaW5fbGhzX2NoYW5nZSAoeyBsaHM7IG1haW47IHJocyA9IG9sZF9yaHM7IF8gfSBhcyBqb2luKSAtPlxuICAgIGxldCByaHMgPSBOb2RlLnZhbHVlX2V4biBsaHMgaW5cbiAgICBqb2luLnJocyA8LSBVb3B0LnNvbWUgcmhzO1xuICAgICgqIHNlZSB0aGUgY29tbWVudCBpbiBCaW5kX2xoc19jaGFuZ2UgKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpvbGRfcmhzXG4gICAgICB+bmV3X2NoaWxkOnJoc1xuICAgICAgfmNoaWxkX2luZGV4OktpbmQuam9pbl9yaHNfY2hpbGRfaW5kZXg7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBKb2luX21haW4geyByaHM7IF8gfSAtPiBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIHJocylcbiAgfCBNYXAgKGYsIG4xKSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZiAoTm9kZS52YWx1ZV9leG4gbjEpKVxuICB8IFNuYXBzaG90IHsgYXQ7IGJlZm9yZTsgY2xvY2s7IF8gfSAtPlxuICAgICgqIEl0IGlzIGEgYnVnIGlmIHdlIHRyeSB0byBjb21wdXRlIGEgW1NuYXBzaG90XSBhbmQgdGhlIGFsYXJtIHNob3VsZCBoYXZlIGZpcmVkLlxuICAgICAgIFthZHZhbmNlX2Nsb2NrXSB3YXMgc3VwcG9zZWQgdG8gY29udmVydCBpdCB0byBhIFtGcmVlemVdIGF0IHRoZSBhcHByb3ByaWF0ZVxuICAgICAgIHRpbWUuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIGJlZm9yZVxuICB8IFN0ZXBfZnVuY3Rpb24gKHsgY2hpbGQ7IGNsb2NrOyBfIH0gYXMgc3RlcF9mdW5jdGlvbl9ub2RlKSAtPlxuICAgIGlmIFVvcHQuaXNfc29tZSBjaGlsZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNoaWxkID0gVW9wdC52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmVcbiAgICAgICAgICAgY2hpbGQuY2hhbmdlZF9hdFxuICAgICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdFxuICAgICAgICAgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPC0gY2hpbGQuY2hhbmdlZF9hdDtcbiAgICAgICAgcmVtb3ZlX2FsYXJtIGNsb2NrIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybTtcbiAgICAgICAgbGV0IHN0ZXBfZnVuY3Rpb24gPSBOb2RlLnZhbHVlX2V4biBjaGlsZCBpblxuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUudmFsdWUgPC0gVW9wdC5zb21lIChTdGVwX2Z1bmN0aW9uLmluaXQgc3RlcF9mdW5jdGlvbik7XG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS51cGNvbWluZ19zdGVwcyA8LSBTdGVwX2Z1bmN0aW9uLnN0ZXBzIHN0ZXBfZnVuY3Rpb247XG4gICAgICAgICgqIElmIHRoZSBjaGlsZCBpcyBhIGNvbnN0YW50LCB3ZSBkcm9wIG91ciByZWZlcmVuY2UgdG8gaXQsIHRvIGF2b2lkIGhvbGRpbmcgb24gdG9cbiAgICAgICAgICAgdGhlIGVudGlyZSBzdGVwIGZ1bmN0aW9uLiAqKVxuICAgICAgICBpZiBOb2RlLmlzX2NvbnN0IGNoaWxkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5jaGlsZCA8LSBVb3B0Lm5vbmU7XG4gICAgICAgICAgc2V0X2hlaWdodCBub2RlIChTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSkpKSk7XG4gICAgU3RlcF9mdW5jdGlvbl9ub2RlLmFkdmFuY2Ugc3RlcF9mdW5jdGlvbl9ub2RlIH50b186KG5vdyBjbG9jayk7XG4gICAgbGV0IHN0ZXBfZnVuY3Rpb25fdmFsdWUgPSBVb3B0LnZhbHVlX2V4biBzdGVwX2Z1bmN0aW9uX25vZGUudmFsdWUgaW5cbiAgICAobWF0Y2ggU2VxdWVuY2UuaGQgc3RlcF9mdW5jdGlvbl9ub2RlLnVwY29taW5nX3N0ZXBzIHdpdGhcbiAgICAgfCBOb25lIC0+IGlmIFVvcHQuaXNfbm9uZSBjaGlsZCB0aGVuIE5vZGUuc2V0X2tpbmQgbm9kZSAoQ29uc3Qgc3RlcF9mdW5jdGlvbl92YWx1ZSlcbiAgICAgfCBTb21lIChhdCwgXykgLT5cbiAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm0gPC0gYWRkX2FsYXJtIGNsb2NrIH5hdCBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm1fdmFsdWUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHN0ZXBfZnVuY3Rpb25fdmFsdWVcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChVbm9yZGVyZWRfYXJyYXlfZm9sZC5jb21wdXRlIHUpXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBWYXIgdmFyIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHZhci52YWx1ZVxuICB8IE1hcDIgKGYsIG4xLCBuMikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikpXG4gIHwgTWFwMyAoZiwgbjEsIG4yLCBuMykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSAoTm9kZS52YWx1ZV9leG4gbjMpKVxuICB8IE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpIChOb2RlLnZhbHVlX2V4biBuMykgKE5vZGUudmFsdWVfZXhuIG40KSlcbiAgfCBNYXA1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KSlcbiAgfCBNYXA2IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNikpXG4gIHwgTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KSlcbiAgfCBNYXA4IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KSlcbiAgfCBNYXA5IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSkpXG4gIHwgTWFwMTAgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKSlcbiAgfCBNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpKVxuICB8IE1hcDEyIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMikpXG4gIHwgTWFwMTMgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKSlcbiAgfCBNYXAxNCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTQpKVxuICB8IE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE0KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNSkpXG4gIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgIChtYXRjaCBFeHBlcnQuYmVmb3JlX21haW5fY29tcHV0YXRpb24gZXhwZXJ0IHdpdGhcbiAgICAgfCBgSW52YWxpZCAtPlxuICAgICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHRcbiAgICAgfCBgT2sgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGV4cGVydC5mICgpKSlcblxuYW5kIGNvcHlfY2hpbGQgOiB0eXBlIGEuIHBhcmVudDphIE5vZGUudCAtPiBjaGlsZDphIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIH5wYXJlbnQgfmNoaWxkIC0+XG4gIGlmIE5vZGUuaXNfdmFsaWQgY2hpbGRcbiAgdGhlbiBtYXliZV9jaGFuZ2VfdmFsdWUgcGFyZW50IChOb2RlLnZhbHVlX2V4biBjaGlsZClcbiAgZWxzZSAoXG4gICAgaW52YWxpZGF0ZV9ub2RlIHBhcmVudDtcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSBwYXJlbnQuc3RhdGUpXG5cbmFuZCBtYXliZV9jaGFuZ2VfdmFsdWUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IGEgLT4gdW5pdCA9XG4gIGZ1biBub2RlIG5ld192YWx1ZSAtPlxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbGV0IG9sZF92YWx1ZV9vcHQgPSBub2RlLnZhbHVlX29wdCBpblxuICBpZiBVb3B0LmlzX25vbmUgb2xkX3ZhbHVlX29wdFxuICB8fCBub3RcbiAgICAgICAoQ3V0b2ZmLnNob3VsZF9jdXRvZmZcbiAgICAgICAgICBub2RlLmN1dG9mZlxuICAgICAgICAgIH5vbGRfdmFsdWU6KFVvcHQudW5zYWZlX3ZhbHVlIG9sZF92YWx1ZV9vcHQpXG4gICAgICAgICAgfm5ld192YWx1ZSlcbiAgdGhlbiAoXG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5zb21lIG5ld192YWx1ZTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19jaGFuZ2VkIDwtIHQubnVtX25vZGVzX2NoYW5nZWQgKyAxO1xuICAgIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIG5vZGUub2xkX3ZhbHVlX29wdCA8LSBvbGRfdmFsdWVfb3B0O1xuICAgICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZSk7XG4gICAgaWYgbm9kZS5udW1fcGFyZW50cyA+PSAxXG4gICAgdGhlbiAoXG4gICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGUucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICAgIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgICAgICAgICBsZXQgY2hpbGRfaW5kZXggPSBub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSBpblxuICAgICAgICAgICBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgfmNoaWxkX2luZGV4IGV4cGVydFxuICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+XG4gICAgICAgICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRcbiAgICAgICAgICAgICB1XG4gICAgICAgICAgICAgfmNoaWxkOm5vZGVcbiAgICAgICAgICAgICB+Y2hpbGRfaW5kZXg6bm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleClcbiAgICAgICAgICAgICB+b2xkX3ZhbHVlX29wdFxuICAgICAgICAgICAgIH5uZXdfdmFsdWVcbiAgICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICAgICgqIFdlIGRvbid0IGRvIHRoZSBbY2FuX3JlY29tcHV0ZV9ub3ddIG9wdGltaXphdGlvbi4gIFNpbmNlIG1vc3Qgbm9kZXMgb25seSBoYXZlXG4gICAgICAgICAgIG9uZSBwYXJlbnQsIGl0IGlzIG5vdCBwcm9iYWJseSBub3QgYSBiaWcgbG9zcy4gIElmIHdlIGRpZCBpdCBhbnl3YXksIHdlJ2RcbiAgICAgICAgICAgaGF2ZSB0byBiZSBjYXJlZnVsLCBiZWNhdXNlIHdoaWxlIHdlIGl0ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBwYXJlbnRzLCB3ZVxuICAgICAgICAgICB3b3VsZCBleGVjdXRlIHRoZW0sIGFuZCBpbiBwYXJ0aWN1bGFyIHdlIGNhbiBleGVjdXRlIGxocy1jaGFuZ2Ugbm9kZXMgd2hvIGNhblxuICAgICAgICAgICBjaGFuZ2UgdGhlIHN0cnVjdHVyZSBvZiB0aGUgbGlzdCBvZiBwYXJlbnRzIHdlIGl0ZXJhdGUgb24uICBUaGluayBhYm91dDpcblxuICAgICAgICAgICB7W1xuICAgICAgICAgICAgIGxocyA+Pj0gZnVuIGIgLT4gaWYgYiB0aGVuIGxocyA+PnwgRm4uaWQgZWxzZSBjb25zdCBiXG4gICAgICAgICAgIF19XG5cbiAgICAgICAgICAgSWYgdGhlIG9wdGltaXphdGlvbiBraWNrcyBpbiB3aGVuIHdlIHByb3BhZ2F0ZSBjaGFuZ2UgdG8gdGhlIHBhcmVudHMgb2YgW2xoc11cbiAgICAgICAgICAgKHdoaWNoIGNoYW5nZXMgZnJvbSBbdHJ1ZV0gdG8gW2ZhbHNlXSksIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIFtsaHMtY2hhbmdlXVxuICAgICAgICAgICBmaXJzdCwgd2hpY2ggd291bGQgbWFrZSBkaXNjb25uZWN0IHRoZSBbbWFwXSBub2RlIGZyb20gW2xoc10uICBBbmQgdGhlbiB3ZVxuICAgICAgICAgICB3b3VsZCBleGVjdXRlIHRoZSBzZWNvbmQgY2hpbGQgb2YgdGhlIFtsaHNdLCB3aGljaCBkb2Vzbid0IGV4aXN0IGFueW1vcmUgYW5kXG4gICAgICAgICAgIGluY3JlbWVudGFsIHdvdWxkIHNlZ2ZhdWx0ICh0aGVyZSBtYXkgYmUgYSBsZXNzIG5haXZlIHdheSBvZiBtYWtpbmcgdGhpcyB3b3JrXG4gICAgICAgICAgIHRob3VnaCkuICopXG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50XG4gICAgICBkb25lO1xuICAgICAgbGV0IChUIHBhcmVudCkgPSBVb3B0LnZhbHVlX2V4biBub2RlLnBhcmVudDAgaW5cbiAgICAgIChtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgfCBFeHBlcnQgcCAtPlxuICAgICAgICAgbGV0IGNoaWxkX2luZGV4ID0gbm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKDApIGluXG4gICAgICAgICBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgfmNoaWxkX2luZGV4IHBcbiAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT5cbiAgICAgICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRcbiAgICAgICAgICAgdVxuICAgICAgICAgICB+Y2hpbGQ6bm9kZVxuICAgICAgICAgICB+Y2hpbGRfaW5kZXg6bm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKDApXG4gICAgICAgICAgIH5vbGRfdmFsdWVfb3B0XG4gICAgICAgICAgIH5uZXdfdmFsdWVcbiAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGNhbl9yZWNvbXB1dGVfbm93ID1cbiAgICAgICAgICBtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgICAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGFyZW4ndCBwYXJlbnRzLiAqKVxuICAgICAgICAgIHwgQXQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEF0X2ludGVydmFscyBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgQ29uc3QgXyB8IEludmFsaWQgfCBTbmFwc2hvdCBfIHwgVmFyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgaGF2ZSBtb3JlIHRoYW4gb25lIGNoaWxkLiAqKVxuICAgICAgICAgIHwgQXJyYXlfZm9sZCBfXG4gICAgICAgICAgfCBNYXAyIF9cbiAgICAgICAgICB8IE1hcDMgX1xuICAgICAgICAgIHwgTWFwNCBfXG4gICAgICAgICAgfCBNYXA1IF9cbiAgICAgICAgICB8IE1hcDYgX1xuICAgICAgICAgIHwgTWFwNyBfXG4gICAgICAgICAgfCBNYXA4IF9cbiAgICAgICAgICB8IE1hcDkgX1xuICAgICAgICAgIHwgTWFwMTAgX1xuICAgICAgICAgIHwgTWFwMTEgX1xuICAgICAgICAgIHwgTWFwMTIgX1xuICAgICAgICAgIHwgTWFwMTMgX1xuICAgICAgICAgIHwgTWFwMTQgX1xuICAgICAgICAgIHwgTWFwMTUgX1xuICAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgX1xuICAgICAgICAgIHwgRXhwZXJ0IF8gLT4gZmFsc2VcbiAgICAgICAgICAoKiBXZSBjYW4gaW1tZWRpYXRlbHkgcmVjb21wdXRlIFtwYXJlbnRdIGlmIG5vIG90aGVyIG5vZGUgbmVlZHMgdG8gYmUgc3RhYmxlXG4gICAgICAgICAgICAgYmVmb3JlIGNvbXB1dGluZyBpdC4gIElmIFtwYXJlbnRdIGhhcyBhIHNpbmdsZSBjaGlsZCAoaS5lLiBbbm9kZV0pLCB0aGVuXG4gICAgICAgICAgICAgdGhpcyBhbW91bnRzIHRvIGNoZWNraW5nIHRoYXQgW3BhcmVudF0gd29uJ3QgYmUgaW52YWxpZGF0ZWQsIGkuZS4gdGhhdFxuICAgICAgICAgICAgIFtwYXJlbnRdJ3Mgc2NvcGUgaGFzIGFscmVhZHkgc3RhYmlsaXplZC4gKilcbiAgICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBGcmVlemUgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IE1hcCBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICAoKiBGb3IgdGhlc2UsIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgXCJfY2hhbmdlXCIgY2hpbGQgaGFzIGFscmVhZHkgYmVlblxuICAgICAgICAgICAgIGV2YWx1YXRlZCAoaWYgbmVlZGVkKS4gIElmIHNvLCB0aGlzIGFsc28gaW1wbGllczpcblxuICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgICAgIF19ICopXG4gICAgICAgICAgfCBCaW5kX21haW4gYiAtPiBub2RlLmhlaWdodCA+IGIubGhzX2NoYW5nZS5oZWlnaHRcbiAgICAgICAgICB8IElmX3RoZW5fZWxzZSBpIC0+IG5vZGUuaGVpZ2h0ID4gaS50ZXN0X2NoYW5nZS5oZWlnaHRcbiAgICAgICAgICB8IEpvaW5fbWFpbiBqIC0+IG5vZGUuaGVpZ2h0ID4gai5saHNfY2hhbmdlLmhlaWdodFxuICAgICAgICBpblxuICAgICAgICBpZiBjYW5fcmVjb21wdXRlX25vd1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkXG4gICAgICAgICAgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCArIDE7XG4gICAgICAgICAgcmVjb21wdXRlIHBhcmVudClcbiAgICAgICAgZWxzZSBpZiBwYXJlbnQuaGVpZ2h0IDw9IFJlY29tcHV0ZV9oZWFwLm1pbl9oZWlnaHQgdC5yZWNvbXB1dGVfaGVhcFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBJZiBbcGFyZW50LmhlaWdodF0gaXMgWzw9XSB0aGUgaGVpZ2h0IG9mIGFsbCBub2RlcyBpbiB0aGUgcmVjb21wdXRlIGhlYXBcbiAgICAgICAgICAgICAocG9zc2libHkgYmVjYXVzZSB0aGUgcmVjb21wdXRlIGhlYXAgaXMgZW1wdHkpLCB0aGVuIHdlIGNhbiByZWNvbXB1dGVcbiAgICAgICAgICAgICBbcGFyZW50XSBpbW1lZGlhdGVseSBhbmQgc2F2ZSBhZGRpbmcgaXQgdG8gYW5kIHRoZW4gcmVtb3ZpbmcgaXQgZnJvbSB0aGVcbiAgICAgICAgICAgICByZWNvbXB1dGUgaGVhcC4gKilcbiAgICAgICAgICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodFxuICAgICAgICAgIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ICsgMTtcbiAgICAgICAgICByZWNvbXB1dGUgcGFyZW50KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KSk7XG4gICAgICAgICAgUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50KSkpKTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByID1cbiAgbGV0IChUIG5vZGUpID0gUmVjb21wdXRlX2hlYXAucmVtb3ZlX21pbiByIGluXG4gIGlmIGRlYnVnICYmIG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIm5vZGUgdW5leHBlY3RlZGx5IGRvZXMgbm90IG5lZWQgdG8gYmUgY29tcHV0ZWRcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIHJlY29tcHV0ZSBub2RlXG47O1xuXG5sZXQgdW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBTdGFjay5sZW5ndGggdC5kaXNhbGxvd2VkX29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgcGFja2VkID0gU3RhY2sucG9wX2V4biB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzIGluXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICB8IERpc2FsbG93ZWQgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIFVubGlua2VkO1xuICAgIGxldCAoVCBhbGxfb2JzZXJ2ZXJzKSA9IFVvcHQudmFsdWVfZXhuIHQuYWxsX29ic2VydmVycyBpblxuICAgIGlmIEludGVybmFsX29ic2VydmVyLnNhbWUgaW50ZXJuYWxfb2JzZXJ2ZXIgYWxsX29ic2VydmVyc1xuICAgIHRoZW4gdC5hbGxfb2JzZXJ2ZXJzIDwtIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fYWxsO1xuICAgIEludGVybmFsX29ic2VydmVyLnVubGluayBpbnRlcm5hbF9vYnNlcnZlcjtcbiAgICBjaGVja19pZl91bm5lY2Vzc2FyeSBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmdcbiAgZG9uZVxuOztcblxubGV0IGRpc2FsbG93X2Z1dHVyZV91c2UgaW50ZXJuYWxfb2JzZXJ2ZXIgPVxuICBsZXQgdCA9IEludGVybmFsX29ic2VydmVyLmluY3Jfc3RhdGUgaW50ZXJuYWxfb2JzZXJ2ZXIgaW5cbiAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiAoKVxuICB8IENyZWF0ZWQgLT5cbiAgICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgLSAxO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIFVubGlua2VkO1xuICAgIGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBbXVxuICB8IEluX3VzZSAtPlxuICAgIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyAtIDE7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gRGlzYWxsb3dlZDtcbiAgICBTdGFjay5wdXNoIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpXG47O1xuXG5sZXQgZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQuZmluYWxpemVkX29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzIGluXG4gICAgaWYgTGlzdC5pc19lbXB0eSBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICB0aGVuIGRpc2FsbG93X2Z1dHVyZV91c2UgaW50ZXJuYWxfb2JzZXJ2ZXJcbiAgZG9uZVxuOztcblxubGV0IG9ic2VydmVyX2ZpbmFsaXplciB0ID1cbiAgc3RhZ2UgKGZ1biBvYnNlcnZlciAtPlxuICAgIGxldCBpbnRlcm5hbF9vYnNlcnZlciA9ICFvYnNlcnZlciBpblxuICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKSlcbjs7XG5cbmxldCBjcmVhdGVfb2JzZXJ2ZXIgPyhzaG91bGRfZmluYWxpemUgPSB0cnVlKSAob2JzZXJ2aW5nIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBvYnNlcnZpbmcuc3RhdGUgaW5cbiAgbGV0IGludGVybmFsX29ic2VydmVyIDogXyBJbnRlcm5hbF9vYnNlcnZlci50ID1cbiAgICB7IHN0YXRlID0gQ3JlYXRlZFxuICAgIDsgb2JzZXJ2aW5nXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgcHJldl9pbl9hbGwgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fYWxsID0gVW9wdC5ub25lXG4gICAgOyBwcmV2X2luX29ic2VydmluZyA9IFVvcHQubm9uZVxuICAgIDsgbmV4dF9pbl9vYnNlcnZpbmcgPSBVb3B0Lm5vbmVcbiAgICB9XG4gIGluXG4gIFN0YWNrLnB1c2ggdC5uZXdfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKTtcbiAgbGV0IG9ic2VydmVyID0gcmVmIGludGVybmFsX29ic2VydmVyIGluXG4gIGlmIHNob3VsZF9maW5hbGl6ZVxuICB0aGVuIEdjLkV4cGVydC5hZGRfZmluYWxpemVyX2V4biBvYnNlcnZlciAodW5zdGFnZSAob2JzZXJ2ZXJfZmluYWxpemVyIHQpKTtcbiAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzICsgMTtcbiAgb2JzZXJ2ZXJcbjs7XG5cbmxldCBhZGRfbmV3X29ic2VydmVycyB0ID1cbiAgd2hpbGUgU3RhY2subGVuZ3RoIHQubmV3X29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgcGFja2VkID0gU3RhY2sucG9wX2V4biB0Lm5ld19vYnNlcnZlcnMgaW5cbiAgICBsZXQgbW9kdWxlIFBhY2tlZCA9IEludGVybmFsX29ic2VydmVyLlBhY2tlZCBpblxuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgVW5saW5rZWQgLT4gKClcbiAgICB8IENyZWF0ZWQgLT5cbiAgICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIEluX3VzZTtcbiAgICAgIGxldCBvbGRfYWxsX29ic2VydmVycyA9IHQuYWxsX29ic2VydmVycyBpblxuICAgICAgaWYgVW9wdC5pc19zb21lIG9sZF9hbGxfb2JzZXJ2ZXJzXG4gICAgICB0aGVuIChcbiAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9hbGwgPC0gb2xkX2FsbF9vYnNlcnZlcnM7XG4gICAgICAgIFBhY2tlZC5zZXRfcHJldl9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9hbGxfb2JzZXJ2ZXJzKSAoVW9wdC5zb21lIHBhY2tlZCkpO1xuICAgICAgdC5hbGxfb2JzZXJ2ZXJzIDwtIFVvcHQuc29tZSBwYWNrZWQ7XG4gICAgICBsZXQgb2JzZXJ2aW5nID0gaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIGluXG4gICAgICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG9ic2VydmluZyBpblxuICAgICAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICAgICArIExpc3QubGVuZ3RoIGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgICAgIGxldCBvbGRfb2JzZXJ2ZXJzID0gb2JzZXJ2aW5nLm9ic2VydmVycyBpblxuICAgICAgaWYgVW9wdC5pc19zb21lIG9sZF9vYnNlcnZlcnNcbiAgICAgIHRoZW4gKFxuICAgICAgICBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX29ic2VydmluZyA8LSBvbGRfb2JzZXJ2ZXJzO1xuICAgICAgICAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX29ic2VydmVycykucHJldl9pbl9vYnNlcnZpbmcgPC0gVW9wdC5zb21lIGludGVybmFsX29ic2VydmVyKTtcbiAgICAgIG9ic2VydmluZy5vYnNlcnZlcnMgPC0gVW9wdC5zb21lIGludGVybmFsX29ic2VydmVyO1xuICAgICAgKCogQnkgYWRkaW5nIFtpbnRlcm5hbF9vYnNlcnZlcl0gdG8gW29ic2VydmluZy5vYnNlcnZlcnNdLCB3ZSBtYXkgaGF2ZSBhZGRlZFxuICAgICAgICAgb24tdXBkYXRlIGhhbmRsZXJzIHRvIFtvYnNlcnZpbmddLiAgV2UgbmVlZCB0byBoYW5kbGUgW29ic2VydmluZ10gYWZ0ZXIgdGhpc1xuICAgICAgICAgc3RhYmlsaXphdGlvbiB0byBnaXZlIHRob3NlIGhhbmRsZXJzIGEgY2hhbmNlIHRvIHJ1bi4gKilcbiAgICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG9ic2VydmluZztcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBvYnNlcnZpbmcpO1xuICAgICAgaWYgbm90IHdhc19uZWNlc3NhcnkgdGhlbiBiZWNhbWVfbmVjZXNzYXJ5IG9ic2VydmluZ1xuICBkb25lXG47O1xuXG5sZXQgb2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyID1cbiAgbGV0IHQgPSBPYnNlcnZlci5pbmNyX3N0YXRlIG9ic2VydmVyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBOb3Rfc3RhYmlsaXppbmcgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyAtPiBPYnNlcnZlci52YWx1ZV9leG4gb2JzZXJ2ZXJcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBbJXNleHBfb2Y6IFJhaXNlZF9leG4udF1cbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXCJcbiAgICAgIG9ic2VydmVyXG4gICAgICBbJXNleHBfb2Y6IF8gT2JzZXJ2ZXIudF1cbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZSBvYnNlcnZlciA9XG4gIHRyeSBPayAob2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuOztcblxubGV0IG5vZGVfb25fdXBkYXRlICh0eXBlIGEpIChub2RlIDogYSBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIE5vZGUub25fdXBkYXRlIG5vZGUgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZVxuOztcblxubGV0IG9ic2VydmVyX29uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgfmYgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgT2JzZXJ2ZXIub25fdXBkYXRlX2V4biBvYnNlcnZlciAoT25fdXBkYXRlX2hhbmRsZXIuY3JlYXRlIGYgfmF0OnQuc3RhYmlsaXphdGlvbl9udW0pO1xuICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoT2JzZXJ2ZXIub2JzZXJ2aW5nIG9ic2VydmVyKVxuOztcblxubGV0IHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIHQubnVtX3Zhcl9zZXRzIDwtIHQubnVtX3Zhcl9zZXRzICsgMTtcbiAgdmFyLnZhbHVlIDwtIHZhbHVlO1xuICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHZhci5zZXRfYXQgdC5zdGFiaWxpemF0aW9uX251bSA8IDBcbiAgdGhlbiAoXG4gICAgdmFyLnNldF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGxldCB3YXRjaCA9IHZhci53YXRjaCBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIHdhdGNoKTtcbiAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSB3YXRjaCAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgd2F0Y2gpXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCB3YXRjaClcbjs7XG5cbmxldCBzZXRfdmFyIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImNhbm5vdCBzZXQgdmFyIC0tIHN0YWJpbGl6YXRpb24gcHJldmlvdXNseSByYWlzZWRcIlxuICAgICAgcmFpc2VkX2V4blxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnRdXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBpZiBVb3B0LmlzX25vbmUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICAgIHRoZW4gU3RhY2sucHVzaCB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiAoVCB2YXIpO1xuICAgIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPC0gVW9wdC5zb21lIHZhbHVlXG47O1xuXG5sZXQgcmVjbGFpbV9zcGFjZV9pbl93ZWFrX2hhc2h0YmxzIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC53ZWFrX2hhc2h0YmxzID4gMCBkb1xuICAgIGxldCAoVCB3ZWFrX2hhc2h0YmwpID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC53ZWFrX2hhc2h0YmxzIGluXG4gICAgV2Vha19oYXNodGJsLnJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB3ZWFrX2hhc2h0YmxcbiAgZG9uZVxuOztcblxubGV0IHN0YWJpbGl6ZV9zdGFydCB0ID1cbiAgdC5zdGF0dXMgPC0gU3RhYmlsaXppbmc7XG4gIGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdDtcbiAgKCogSnVzdCBsaWtlIGZvciBiaW5kcywgd2UgYWRkIG5ldyBvYnNlcnZlcnMgYmVmb3JlIHJlbW92aW5nIGRpc2FsbG93ZWQgb2JzZXJ2ZXJzIHRvXG4gICAgIHBvdGVudGlhbGx5IGF2b2lkIHN3aXRjaGluZyB0aGUgb2JzZXJ2YWJpbGl0eSBvZiBzb21lIG5vZGVzIGJhY2sgYW5kIGZvcnRoLiAqKVxuICBhZGRfbmV3X29ic2VydmVycyB0O1xuICB1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMgdDtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdFxuOztcblxubGV0IHN0YWJpbGl6ZV9lbmQgdCA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIE5vbmU7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gICgqIFdlIGluY3JlbWVudCBbdC5zdGFiaWxpemF0aW9uX251bV0gYmVmb3JlIGhhbmRsaW5nIHZhcmlhYmxlcyBzZXQgZHVyaW5nXG4gICAgIHN0YWJpbGl6YXRpb24sIHNvIHRoYXQgdGhleSBhcmUgdHJlYXRlZCBhcyBzZXQgZHVyaW5nIHRoZSBuZXcgc3RhYmlsaXphdGlvbiBjeWNsZS5cbiAgICAgQWxzbywgd2UgaW5jcmVtZW50IGJlZm9yZSBydW5uaW5nIG9uLXVwZGF0ZSBoYW5kbGVycywgdG8gYXZvaWQgcnVubmluZyBvbiB1cGRhdGVcbiAgICAgaGFuZGxlcnMgY3JlYXRlZCBkdXJpbmcgb24gdXBkYXRlIGhhbmRsZXJzLiAqKVxuICB0LnN0YWJpbGl6YXRpb25fbnVtIDwtIFN0YWJpbGl6YXRpb25fbnVtLmFkZDEgdC5zdGFiaWxpemF0aW9uX251bTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgdmFyKSA9IFN0YWNrLnBvcF9leG4gdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICBsZXQgdmFsdWUgPSBVb3B0LnZhbHVlX2V4biB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIGluXG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0Lm5vbmU7XG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgdmFyIHZhbHVlXG4gIGRvbmU7XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgbm9kZSkgPSBTdGFjay5wb3BfZXhuIHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIGZhbHNlO1xuICAgIGxldCBvbGRfdmFsdWUgPSBub2RlLm9sZF92YWx1ZV9vcHQgaW5cbiAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGxldCBub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCA9XG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgbm9kZSlcbiAgICAgIHRoZW4gSW52YWxpZGF0ZWRcbiAgICAgIGVsc2UgaWYgbm90IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKVxuICAgICAgdGhlbiBVbm5lY2Vzc2FyeVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfdmFsdWUgPSBVb3B0LnZhbHVlX2V4biBub2RlLnZhbHVlX29wdCBpblxuICAgICAgICBpZiBVb3B0LmlzX25vbmUgb2xkX3ZhbHVlXG4gICAgICAgIHRoZW4gTmVjZXNzYXJ5IG5ld192YWx1ZVxuICAgICAgICBlbHNlIENoYW5nZWQgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF92YWx1ZSwgbmV3X3ZhbHVlKSlcbiAgICBpblxuICAgIFN0YWNrLnB1c2ggdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIChUIChub2RlLCBub2RlX3VwZGF0ZSkpXG4gIGRvbmU7XG4gIHQuc3RhdHVzIDwtIFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzO1xuICBsZXQgbm93ID0gdC5zdGFiaWxpemF0aW9uX251bSBpblxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycykgZG9cbiAgICBsZXQgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSkgPSBTdGFjay5wb3BfZXhuIHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIE5vZGUucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBub2RlIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gTm90X3N0YWJpbGl6aW5nO1xuICByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdFxuOztcblxubGV0IHJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIHQgZXhuID1cbiAgdC5zdGF0dXMgPC0gU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIChSYWlzZWRfZXhuLmNyZWF0ZSBleG4pO1xuICByYWlzZSBleG5cbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0YWJpbGl6ZVwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjpmYWxzZTtcbiAgdHJ5XG4gICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgd2hpbGUgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwIGRvXG4gICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByXG4gICAgZG9uZTtcbiAgICBzdGFiaWxpemVfZW5kIHRcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4blxuOztcblxubW9kdWxlIFN0ZXBfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBLZWVwX2dvaW5nXG4gICAgfCBEb25lXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSB0IDogU3RlcF9yZXN1bHQudCA9XG4gIHRyeVxuICAgIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgICBLZWVwX2dvaW5nXG4gICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgICBpZiBSZWNvbXB1dGVfaGVhcC5sZW5ndGggciA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByO1xuICAgICAgICBLZWVwX2dvaW5nKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHN0YWJpbGl6ZV9lbmQgdDtcbiAgICAgICAgRG9uZSlcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0ZXBcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgICAoKiBJZiBzdGFiaWxpemF0aW9uIGhhcyBhbHJlYWR5IHJhaXNlZCwgdGhlbiBbZXhuXSBpcyBtZXJlbHkgYSBub3RpZmljYXRpb24gb2YgdGhpc1xuICAgICAgICAgIGZhY3QsIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gaXRzZWxmLiAgV2Ugc2hvdWxkIGp1c3QgcHJvcGFnYXRlIFtleG5dXG4gICAgICAgICAgZm9yd2FyZDsgY2FsbGluZyBbcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHdvdWxkIHN0b3JlIFtleG5dIGFzIHRoZSBleGNlcHRpb25cbiAgICAgICAgICB0aGF0IGluaXRpYWxseSByYWlzZWQgZHVyaW5nIHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgcmFpc2UgZXhuXG4gICAgIHwgXyAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4bilcbjs7XG5cbmxldCBjcmVhdGVfbm9kZV9pbiB0IGNyZWF0ZWRfaW4ga2luZCA9XG4gIHQubnVtX25vZGVzX2NyZWF0ZWQgPC0gdC5udW1fbm9kZXNfY3JlYXRlZCArIDE7XG4gIE5vZGUuY3JlYXRlIHQgY3JlYXRlZF9pbiBraW5kXG47O1xuXG5sZXQgY3JlYXRlX25vZGUgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCB0LmN1cnJlbnRfc2NvcGUga2luZFxubGV0IGNyZWF0ZV9ub2RlX3RvcCB0IGtpbmQgPSBjcmVhdGVfbm9kZV9pbiB0IFNjb3BlLnRvcCBraW5kXG5cbmxldCBjcmVhdGVfdmFyIHQgPyh1c2VfY3VycmVudF9zY29wZSA9IGZhbHNlKSB2YWx1ZSA9XG4gIGxldCBzY29wZSA9IGlmIHVzZV9jdXJyZW50X3Njb3BlIHRoZW4gdC5jdXJyZW50X3Njb3BlIGVsc2UgU2NvcGUudG9wIGluXG4gIGxldCB3YXRjaCA9IGNyZWF0ZV9ub2RlX2luIHQgc2NvcGUgVW5pbml0aWFsaXplZCBpblxuICBsZXQgdmFyID1cbiAgICB7IFZhci52YWx1ZVxuICAgIDsgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gVW9wdC5ub25lXG4gICAgOyBzZXRfYXQgPSB0LnN0YWJpbGl6YXRpb25fbnVtXG4gICAgOyB3YXRjaFxuICAgIH1cbiAgaW5cbiAgTm9kZS5zZXRfa2luZCB3YXRjaCAoVmFyIHZhcik7XG4gIHZhclxuOztcblxuKCogQSBbY29uc3RdIHZhbHVlIGNvdWxkIGNvbWUgZnJvbSB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG91dGVyIGJpbmQuICBTbywgd2UgY3JlYXRlIGFcbiAgIFtjb25zdF0gbm9kZSBpbiB0aGUgY3VycmVudCBzY29wZSwgbm90IGluIFtTY29wZS50b3BdLiAqKVxubGV0IGNvbnN0IHQgYSA9IGNyZWF0ZV9ub2RlIHQgKENvbnN0IGEpXG5sZXQgbWFwIChuIDogXyBOb2RlLnQpIH5mID0gY3JlYXRlX25vZGUgbi5zdGF0ZSAoTWFwIChmLCBuKSlcbmxldCBtYXAyIChuMSA6IF8gTm9kZS50KSBuMiB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAyIChmLCBuMSwgbjIpKVxuXG5sZXQgYm90aCAobjEgOiBfIE5vZGUudCkgKG4yIDogXyBOb2RlLnQpID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCB7IGtpbmQgPSBDb25zdCBhOyBfIH0sIHsga2luZCA9IENvbnN0IGI7IF8gfSAtPiBjb25zdCBuMS5zdGF0ZSAoYSwgYilcbiAgfCBfIC0+IG1hcDIgbjEgbjIgfmY6VHVwbGUyLmNyZWF0ZVxuOztcblxubGV0IG1hcDMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDMgKGYsIG4xLCBuMiwgbjMpKVxubGV0IG1hcDQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSlcblxubGV0IG1hcDUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkpXG47O1xuXG5sZXQgbWFwNiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikpXG47O1xuXG5sZXQgbWFwNyAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpKVxuOztcblxubGV0IG1hcDggKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkpXG47O1xuXG5sZXQgbWFwOSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkpXG47O1xuXG5sZXQgbWFwMTAgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSlcbjs7XG5cbmxldCBtYXAxMSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpKVxuOztcblxubGV0IG1hcDEyIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikpXG47O1xuXG5sZXQgbWFwMTMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSlcbjs7XG5cbmxldCBtYXAxNCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCB+ZiA9XG4gIGNyZWF0ZV9ub2RlXG4gICAgbjEuc3RhdGVcbiAgICAoTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSlcbjs7XG5cbmxldCBtYXAxNSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCBuMTUgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSlcbjs7XG5cbmxldCBwcmVzZXJ2ZV9jdXRvZmYgfihpbnB1dCA6IF8gTm9kZS50KSB+b3V0cHV0ID1cbiAgTm9kZS5zZXRfY3V0b2ZmXG4gICAgb3V0cHV0XG4gICAgKEN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlOl8gfm5ld192YWx1ZTpfIC0+XG4gICAgICAgU3RhYmlsaXphdGlvbl9udW0uZXF1YWwgaW5wdXQuY2hhbmdlZF9hdCBvdXRwdXQuY2hhbmdlZF9hdCkpXG47O1xuXG5sZXQgZGVwZW5kX29uIGlucHV0IH5kZXBlbmRfb24gPVxuICBsZXQgb3V0cHV0ID0gbWFwMiBpbnB1dCBkZXBlbmRfb24gfmY6KGZ1biBhIF8gLT4gYSkgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBuZWNlc3NhcnlfaWZfYWxpdmUgaW5wdXQgPVxuICAoKiBJZiBbb3V0cHV0XSBpcyBhbGl2ZSwgdGhlbiBbb2JzZXJ2ZXJdIGlzIGFsaXZlLCB0aGVuIFtpbnB1dF0gaXMgbmVjZXNzYXJ5LiAgSWZcbiAgICAgW291dHB1dF0gaXMgdW5uZWNlc3NhcnksIHRoZW4gW291dHB1dF0gaXMgbm90IGEgcGFyZW50IG9mIFtpbnB1dF0sIGFuZCB0aHVzXG4gICAgIFtvdXRwdXRdJ3MgbGl2ZW5lc3MgaXMgZGVwZW5kZW50IHNvbGVseSBvbiB1c2VyIGNvZGUuICBBbmQgaW4gcGFydGljdWxhciwgaWYgW291dHB1dF1cbiAgICAgZGllcywgdGhlbiBbb2JzZXJ2ZXJdIHdpbGwgYmUgZmluYWxpemVkLCBhbmQgdGhlbiB1cG9uIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sXG4gICAgIFtpbnB1dF0gd2lsbCBiZWNvbWUgdW5uZWNlc3NhcnkgKGF0IGxlYXN0IHdpdGggcmVzcGVjdCB0byBbb3V0cHV0XSkuICopXG4gIGxldCBvYnNlcnZlciA9IGNyZWF0ZV9vYnNlcnZlciBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBtYXAgaW5wdXQgfmY6KGZ1biBhIC0+XG4gICAgICBHYy5rZWVwX2FsaXZlIG9ic2VydmVyO1xuICAgICAgYSlcbiAgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBiaW5kIChsaHMgOiBfIE5vZGUudCkgfmYgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmluZCA9XG4gICAgeyBCaW5kLm1haW5cbiAgICA7IGZcbiAgICA7IGxoc1xuICAgIDsgbGhzX2NoYW5nZVxuICAgIDsgcmhzID0gVW9wdC5ub25lXG4gICAgOyByaHNfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgKCogV2Ugc2V0IFtsaHNfY2hhbmdlXSB0byBuZXZlciBjdXRvZmYgc28gdGhhdCB3aGVuZXZlciBbbGhzXSBjaGFuZ2VzLCBbbWFpbl0gaXNcbiAgICAgcmVjb21wdXRlZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBbZl0gcmV0dXJucyBhbiBleGlzdGluZyBzdGFibGVcbiAgICAgbm9kZSwgaW4gd2hpY2ggY2FzZSB0aGUgW2xoc19jaGFuZ2VdIHdvdWxkIGJlIHRoZSBvbmx5IHRoaW5nIGNhdXNpbmcgW21haW5dIHRvIGJlXG4gICAgIHN0YWxlLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbGhzX2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIGJpbmQucmhzX3Njb3BlIDwtIEJpbmQgYmluZDtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChCaW5kX2xoc19jaGFuZ2UgYmluZCk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQmluZF9tYWluIGJpbmQpO1xuICBtYWluXG47O1xuXG5sZXQgYmluZDIgbjEgbjIgfmYgPVxuICBiaW5kIChtYXAyIG4xIG4yIH5mOihmdW4gdjEgdjIgLT4gdjEsIHYyKSkgfmY6KGZ1biAodjEsIHYyKSAtPiBmIHYxIHYyKVxuOztcblxubGV0IGJpbmQzIG4xIG4yIG4zIH5mID1cbiAgYmluZCAobWFwMyBuMSBuMiBuMyB+ZjooZnVuIHYxIHYyIHYzIC0+IHYxLCB2MiwgdjMpKSB+ZjooZnVuICh2MSwgdjIsIHYzKSAtPiBmIHYxIHYyIHYzKVxuOztcblxubGV0IGJpbmQ0IG4xIG4yIG4zIG40IH5mID1cbiAgYmluZFxuICAgIChtYXA0IG4xIG4yIG4zIG40IH5mOihmdW4gdjEgdjIgdjMgdjQgLT4gdjEsIHYyLCB2MywgdjQpKVxuICAgIH5mOihmdW4gKHYxLCB2MiwgdjMsIHY0KSAtPiBmIHYxIHYyIHYzIHY0KVxuOztcblxubGV0IGpvaW4gKGxocyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gbGhzLnN0YXRlIGluXG4gIGxldCBsaHNfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBqb2luID0geyBKb2luLmxoczsgbGhzX2NoYW5nZTsgcmhzID0gVW9wdC5ub25lOyBtYWluIH0gaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIGxoc19jaGFuZ2UgKEpvaW5fbGhzX2NoYW5nZSBqb2luKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChKb2luX21haW4gam9pbik7XG4gIG1haW5cbjs7XG5cbmxldCBpZl8gKHRlc3QgOiBfIE5vZGUudCkgfnRoZW5fIH5lbHNlXyA9XG4gIGxldCB0ID0gdGVzdC5zdGF0ZSBpblxuICBsZXQgdGVzdF9jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGlmX3RoZW5fZWxzZSA9XG4gICAgeyBJZl90aGVuX2Vsc2UudGVzdDsgdGhlbl87IGVsc2VfOyB0ZXN0X2NoYW5nZTsgbWFpbjsgY3VycmVudF9icmFuY2ggPSBVb3B0Lm5vbmUgfVxuICBpblxuICBOb2RlLnNldF9jdXRvZmYgdGVzdF9jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIHRlc3RfY2hhbmdlIChJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKElmX3RoZW5fZWxzZSBpZl90aGVuX2Vsc2UpO1xuICBtYWluXG47O1xuXG5sZXQgbGF6eV9mcm9tX2Z1biB0IH5mID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiB3aXRoaW5fc2NvcGUgdCBzY29wZSB+Zilcbjs7XG5cbmxldCBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplID0gNFxuXG5sZXQgbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICAoKiBIZXJlJ3MgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHdlIGdldCBbdC5jdXJyZW50X3Njb3BlXSBoZXJlLCBhbmQgdGhlbiBjYWxsXG4gICAgIFt3aXRoaW5fc2NvcGVdIGJlbG93LiAgQ29uc2lkZXIgdGhpcyAoaW1wb3NzaWJsZSkgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgIFttZW1vaXplX2Z1bl9ieV9rZXldOlxuXG4gICAgIHtbXG4gICAgICAgbGV0IHRhYmxlID1cbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfZXhuIGhhc2hhYmxlXG4gICAgICAgICAgIChMaXN0Lm1hcCBhbGxfcG9zc2libGVfYV92YWx1ZXMgfmY6KGZ1biBhIC0+IChwcm9qZWN0X2tleSBhLCBmIGEpKVxuICAgICAgIGluXG4gICAgICAgc3RhZ2UgKGZ1biBrZXkgLT4gSGFzaHRibC5maW5kX2V4biB0YWJsZSAocHJvamVjdF9rZXkgYSkpXG4gICAgIF19XG5cbiAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHVzZSBbY3VycmVudF9zY29wZV0gb3IgW3dpdGhpbl9zY29wZV0uICBBbGwgY2FsbHMgdG8gW2ZdXG4gICAgIG5hdHVyYWxseSBvY2N1ciBpbiBbdC5jdXJyZW50X3Njb3BlXS5cblxuICAgICBTdWNoIGFuIGltcGxlbWVudGF0aW9uIGlzIGltcG9zc2libGUgYmVjYXVzZSB3ZSBkbyBub3QgaGF2ZSBbYWxsX3Bvc3NpYmxlX2FfdmFsdWVzXS5cbiAgICAgVGhlIGltcGxlbWVudGF0aW9uIGJlbG93IHVzZXMgW3dpdGhpbl9zY29wZV0gdG8gY2FsbCBbZiBhXSBpbiB0aGUgc2NvcGUgdGhhdCB3YXNcbiAgICAgY3VycmVudCBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwgdG8gW21lbW9pemVfZnVuX2J5X2tleV0gc28gdGhhdCB3ZSBjYW4gdGhpbmsgb2YgdGhlXG4gICAgIFt0YWJsZV0gYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCB0aGVuLCB3aGVuIGl0IGluIHJlYWxpdHkgaXMgY3JlYXRlZCBvbi1kZW1hbmQuICopXG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBsZXQgdGFibGUgPSBIYXNodGJsLmNyZWF0ZSBoYXNoYWJsZSB+c2l6ZTppbml0aWFsX3NpemUgaW5cbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdGFibGUga2V5IHdpdGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgYiA9IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mOihmdW4gKCkgLT4gZiBhKSBpblxuICAgICAgSGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5sZXQgYXJyYXlfZm9sZCB0IGNoaWxkcmVuIH5pbml0IH5mID1cbiAgaWYgQXJyYXkubGVuZ3RoIGNoaWxkcmVuID0gMFxuICB0aGVuIGNvbnN0IHQgaW5pdFxuICBlbHNlIGNyZWF0ZV9ub2RlIHQgKEFycmF5X2ZvbGQgeyBpbml0OyBmOyBjaGlsZHJlbiB9KVxuOztcblxubGV0IGFsbCB0IHRzID0gYXJyYXlfZm9sZCB0IChBcnJheS5vZl9saXN0X3JldiB0cykgfmluaXQ6W10gfmY6KGZ1biBhYyBhIC0+IGEgOjogYWMpXG5cbm1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBVbm9yZGVyZWRfYXJyYXlfZm9sZC5VcGRhdGVcblxubGV0IHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICB0XG4gICAgICA/KGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPSBJbnQubWF4X3ZhbHVlKVxuICAgICAgY2hpbGRyZW5cbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfnVwZGF0ZVxuICA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBpZiBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDw9IDBcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCBnb3Qgbm9uLXBvc2l0aXZlIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcIlxuICAgICAgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgWyVzZXhwX29mOiBpbnRdXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gICAgTm9kZS5zZXRfa2luZFxuICAgICAgbWFpblxuICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgICAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY3JlYXRlXG4gICAgICAgICAgICB+aW5pdFxuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICB+Y2hpbGRyZW5cbiAgICAgICAgICAgIH5tYWluKSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgbGV0IGYgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCArIDFcbiAgICB8IFNvbWUgeCAtPiBmIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIGxldCBmX2ludmVyc2UgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCAtIDFcbiAgICB8IFNvbWUgeCAtPiBmX2ludmVyc2UgYWNjdW0geCwgbnVtX2ludmFsaWRcbiAgaW5cbiAgbWFwXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIHRzXG4gICAgICAgfmluaXQ6KGluaXQsIDApXG4gICAgICAgfmZcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgZl9pbnZlcnNlKVxuICAgICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKVxuICAgIH5mOihmdW4gKGFjY3VtLCBudW1faW52YWxpZCkgLT4gaWYgbnVtX2ludmFsaWQgPSAwIHRoZW4gU29tZSBhY2N1bSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rID1cbiAgbGV0IGJvb2xfdG9faW50IGIgPSBpZiBiIHRoZW4gMSBlbHNlIDAgaW5cbiAgbWFwXG4gICAgfmY6KGZ1biBpIC0+IGkgPj0gaylcbiAgICAodW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICB0XG4gICAgICAgbm9kZXNcbiAgICAgICB+aW5pdDowXG4gICAgICAgfmY6KGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlICsgYm9vbF90b19pbnQgYilcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgKGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlIC0gYm9vbF90b19pbnQgYikpKVxuOztcblxubGV0IGV4aXN0cyB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOjFcbmxldCBmb3JfYWxsIHQgbm9kZXMgPSBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfms6KEFycmF5Lmxlbmd0aCBub2RlcylcblxubGV0IHN1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH51cGRhdGU6KEZfaW52ZXJzZSBzdWIpXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBvcHRfc3VtIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgbm9kZXMgfnplcm8gfmFkZCB+c3ViID1cbiAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH5mX2ludmVyc2U6c3ViXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBzdW1faW50IHQgbm9kZXMgPSBzdW0gdCBub2RlcyB+emVybzowIH5hZGQ6KCArICkgfnN1YjooIC0gKVxuXG5sZXQgc3VtX2Zsb2F0IHQgbm9kZXMgPVxuICBzdW1cbiAgICB0XG4gICAgbm9kZXNcbiAgICB+emVybzowLlxuICAgIH5hZGQ6KCArLiApXG4gICAgfnN1YjooIC0uIClcbiAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczooQXJyYXkubGVuZ3RoIG5vZGVzKVxuOztcblxubGV0IHNldF9mcmVlemUgKG5vZGUgOiBfIE5vZGUudCkgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFNjb3BlLmlzX3RvcCBub2RlLmNyZWF0ZWRfaW4pO1xuICAoKiBCeSBtYWtpbmcgW25vZGUua2luZF0gYmUgW0ZyZWV6ZV0sIHdlIGFyZSBtYWtpbmcgW05vZGUuaXNfbmVjZXNzYXJ5IG5vZGVdLiAqKVxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgaW5cbiAgTm9kZS5zZXRfa2luZCBub2RlIChGcmVlemUgeyBtYWluID0gbm9kZTsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW4gfSk7XG4gIGlmIHdhc19uZWNlc3NhcnlcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4OktpbmQuZnJlZXplX2NoaWxkX2luZGV4XG4gIGVsc2UgYmVjYW1lX25lY2Vzc2FyeSBub2RlXG47O1xuXG5sZXQgZnJlZXplIChjaGlsZCA6IF8gTm9kZS50KSB+b25seV9mcmVlemVfd2hlbiA9XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IG5vZGUgPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gIHNldF9mcmVlemUgbm9kZSB+Y2hpbGQgfm9ubHlfZnJlZXplX3doZW47XG4gIG5vZGVcbjs7XG5cbmxldCBhdCBjbG9jayB0aW1lID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKG5vdyBjbG9jaylcbiAgdGhlbiBjb25zdCB0IEJlZm9yZV9vcl9hZnRlci5BZnRlclxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBhdCA9IHsgQXQuYXQgPSB0aW1lOyBtYWluOyBhbGFybSA9IEFsYXJtLm51bGw7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKEF0IGF0KTtcbiAgICBhdC5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0OnRpbWUgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoQXQgYXQpKTtcbiAgICBtYWluKVxuOztcblxubGV0IGFmdGVyIGNsb2NrIHNwYW4gPSBhdCBjbG9jayAoVGltZV9ucy5hZGQgKG5vdyBjbG9jaykgc3BhbilcblxubGV0IG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IChjbG9jayA6IENsb2NrLnQpIH5iYXNlIH5pbnRlcnZhbCA9XG4gIGxldCBhZnRlciA9IG5vdyBjbG9jayBpblxuICBsZXQgYXQgPSBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCB+Y2FuX2VxdWFsX2FmdGVyOmZhbHNlICgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IGFmdGVyKTtcbiAgYXRcbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgKGNsb2NrIDogQ2xvY2sudCkgaW50ZXJ2YWwgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPCApIGludGVydmFsIChUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIGNsb2NrLnRpbWluZ193aGVlbClcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhdF9pbnRlcnZhbHMgZ290IHRvbyBzbWFsbCBpbnRlcnZhbFwiXG4gICAgICBpbnRlcnZhbFxuICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF07XG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBiYXNlID0gbm93IGNsb2NrIGluXG4gIGxldCBhdF9pbnRlcnZhbHMgPSB7IEF0X2ludGVydmFscy5tYWluOyBiYXNlOyBpbnRlcnZhbDsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyk7XG4gICgqIFttYWluIDogdW5pdCBOb2RlLnRdLCBzbyB3ZSBtYWtlIGl0IG5ldmVyIGN1dG9mZiBzbyBpdCBjaGFuZ2VzIGVhY2ggdGltZSBpdCBpc1xuICAgICByZWNvbXB1dGVkLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbWFpbiBDdXRvZmYubmV2ZXI7XG4gIGF0X2ludGVydmFscy5hbGFybVxuICA8LSBhZGRfYWxhcm1cbiAgICAgICBjbG9ja1xuICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpKTtcbiAgbWFpblxuOztcblxubGV0IHNuYXBzaG90IGNsb2NrIHZhbHVlX2F0IH5hdCB+YmVmb3JlID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIGF0IChub3cgY2xvY2spXG4gIHRoZW5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IChub3cgY2xvY2spXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvciBcImNhbm5vdCB0YWtlIHNuYXBzaG90IGluIHRoZSBwYXN0XCIgYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdXG4gICAgZWxzZSBPayAoZnJlZXplIHZhbHVlX2F0IH5vbmx5X2ZyZWV6ZV93aGVuOihGbi5jb25zdCB0cnVlKSlcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gICAgbGV0IHNuYXBzaG90ID0geyBTbmFwc2hvdC5tYWluOyBhdDsgYmVmb3JlOyB2YWx1ZV9hdDsgY2xvY2sgfSBpblxuICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoU25hcHNob3Qgc25hcHNob3QpO1xuICAgICgqIFVubGlrZSBvdGhlciB0aW1lLWJhc2VkIGluY3JlbWVudGFscywgYSBzbmFwc2hvdCBpcyBjcmVhdGVkIGluIFtTY29wZS50b3BdIGFuZFxuICAgICAgIGNhbm5vdCBiZSBpbnZhbGlkYXRlZCBieSBpdHMgc2NvcGUuICBUaHVzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gICAgICAgYWxhcm0gdGhhdCBpcyBhZGRlZCwgYmVjYXVzZSBpdCB3aWxsIG5ldmVyIG5lZWQgdG8gYmUgcmVtb3ZlZCBlYXJseS4gKilcbiAgICBpZ25vcmUgKGFkZF9hbGFybSBjbG9jayB+YXQgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU25hcHNob3Qgc25hcHNob3QpKSA6IEFsYXJtLnQpO1xuICAgIE9rIG1haW4pXG47O1xuXG5sZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiBjbG9jayBjaGlsZCA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgc3RlcF9mdW5jdGlvbl9ub2RlID1cbiAgICB7IFN0ZXBfZnVuY3Rpb25fbm9kZS5tYWluXG4gICAgOyB2YWx1ZSA9IFVvcHQubm9uZVxuICAgIDsgY2hpbGQgPSBVb3B0LnNvbWUgY2hpbGRcbiAgICA7IGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyB1cGNvbWluZ19zdGVwcyA9IFNlcXVlbmNlLmVtcHR5XG4gICAgOyBhbGFybSA9IEFsYXJtLm51bGxcbiAgICA7IGFsYXJtX3ZhbHVlID0gT2JqLm1hZ2ljIE5vbmUgKCogc2V0IGJlbG93ICopXG4gICAgOyBjbG9ja1xuICAgIH1cbiAgaW5cbiAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlIDwtIEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgbWFpblxuOztcblxubGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIFN0YWJpbGl6YXRpb25fbnVtLm5vbmU7XG4gICgqIGZvcmNlIHRoZSBub2RlIHRvIGJlIHN0YWxlICopXG4gIGlmIE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgYWR2YW5jZV9jbG9jayAoY2xvY2sgOiBDbG9jay50KSB+dG9fID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcImFkdmFuY2VfY2xvY2tcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6dHJ1ZTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgVGltZV9ucy4oID4gKSB0b18gKG5vdyBjbG9jaylcbiAgdGhlbiAoXG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgY2xvY2subm93IHRvXztcbiAgICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayBjbG9jay50aW1pbmdfd2hlZWwgfnRvXyB+aGFuZGxlX2ZpcmVkOmNsb2NrLmhhbmRsZV9maXJlZDtcbiAgICBUaW1pbmdfd2hlZWwuZmlyZV9wYXN0X2FsYXJtcyBjbG9jay50aW1pbmdfd2hlZWwgfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgd2hpbGUgVW9wdC5pc19zb21lIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBkb1xuICAgICAgbGV0IGFsYXJtX3ZhbHVlID0gVW9wdC51bnNhZmVfdmFsdWUgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIGluXG4gICAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gYWxhcm1fdmFsdWUubmV4dF9maXJlZDtcbiAgICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gVW9wdC5ub25lO1xuICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgIHwgQXQgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoQ29uc3QgQWZ0ZXIpO1xuICAgICAgICAgIG1ha2Vfc3RhbGUgbWFpbilcbiAgICAgIHwgQXRfaW50ZXJ2YWxzICh7IG1haW47IGJhc2U7IGludGVydmFsOyBfIH0gYXMgYXRfaW50ZXJ2YWxzKSAtPlxuICAgICAgICBpZiBOb2RlLmlzX3ZhbGlkIG1haW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gICAgICAgICAgPC0gYWRkX2FsYXJtXG4gICAgICAgICAgICAgICBjbG9ja1xuICAgICAgICAgICAgICAgfmF0OihuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCBjbG9jayB+YmFzZSB+aW50ZXJ2YWwpXG4gICAgICAgICAgICAgICBhbGFybV92YWx1ZTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IFNuYXBzaG90IHsgbWFpbjsgdmFsdWVfYXQ7IF8gfSAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBtYWluKTtcbiAgICAgICAgc2V0X2ZyZWV6ZSBtYWluIH5jaGlsZDp2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooZnVuIF8gLT4gdHJ1ZSk7XG4gICAgICAgIG1ha2Vfc3RhbGUgbWFpblxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgbWFpbjsgXyB9IC0+IGlmIE5vZGUuaXNfdmFsaWQgbWFpbiB0aGVuIG1ha2Vfc3RhbGUgbWFpblxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdClcbjs7XG5cbmxldCBjcmVhdGVfY2xvY2sgdCB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgPVxuICBsZXQgdGltaW5nX3doZWVsID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0IGluXG4gIGxldCByZWMgY2xvY2sgOiBDbG9jay50ID1cbiAgICB7IG5vdyA9IGNyZWF0ZV92YXIgdCBzdGFydFxuICAgIDsgaGFuZGxlX2ZpcmVkXG4gICAgOyBmaXJlZF9hbGFybV92YWx1ZXMgPSBVb3B0Lm5vbmVcbiAgICA7IHRpbWluZ193aGVlbFxuICAgIH1cbiAgYW5kIGhhbmRsZV9maXJlZCBhbGFybSA9XG4gICAgbGV0IGFsYXJtX3ZhbHVlID0gVGltaW5nX3doZWVsLkFsYXJtLnZhbHVlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybSBpblxuICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzO1xuICAgIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyA8LSBVb3B0LnNvbWUgYWxhcm1fdmFsdWVcbiAgaW5cbiAgY2xvY2tcbjs7XG5cbmxldCBjcmVhdGUgKG1vZHVsZSBDb25maWcgOiBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgbGV0IGFkanVzdF9oZWlnaHRzX2hlYXAgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCByZWNvbXB1dGVfaGVhcCA9IFJlY29tcHV0ZV9oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCB0ID1cbiAgICB7IHN0YXR1cyA9IE5vdF9zdGFiaWxpemluZ1xuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IENvbmZpZy5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgOyBzdGFiaWxpemF0aW9uX251bSA9IFN0YWJpbGl6YXRpb25fbnVtLnplcm9cbiAgICA7IGN1cnJlbnRfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICA7IHJlY29tcHV0ZV9oZWFwXG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgPSAwXG4gICAgOyBhbGxfb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbmV3X29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgb25seV9pbl9kZWJ1ZyA9IE9ubHlfaW5fZGVidWcuY3JlYXRlICgpXG4gICAgOyB3ZWFrX2hhc2h0YmxzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlID0gZmFsc2VcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ID0gMFxuICAgIDsgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19jaGFuZ2VkID0gMFxuICAgIDsgbnVtX25vZGVzX2ludmFsaWRhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX2NyZWF0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ID0gMFxuICAgIDsgbnVtX3Zhcl9zZXRzID0gMFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gV2Vha19oYXNodGJsLmNyZWF0ZSB+c2l6ZTppbml0aWFsX3NpemUgaGFzaGFibGUgaW5cbiAgbGV0IHBhY2tlZCA9IFBhY2tlZF93ZWFrX2hhc2h0YmwuVCB0YWJsZSBpblxuICBXZWFrX2hhc2h0Ymwuc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHRhYmxlIH50aHJlYWRfc2FmZV9mOihmdW4gKCkgLT5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQud2Vha19oYXNodGJscyBwYWNrZWQpO1xuICBzdGFnZSAoZnVuIGEgLT5cbiAgICBsZXQga2V5ID0gcHJvamVjdF9rZXkgYSBpblxuICAgIG1hdGNoIFdlYWtfaGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIFdlYWtfaGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICgqIEdpdmVuIHRoYXQgaW52YWxpZCBub2RlIGFyZSBhdCBhdHRlbXB0IGF0IGF2b2lkaW5nIGJyZWFraW5nIHRoZSBlbnRpcmUgaW5jcmVtZW50YWxcbiAgICAgY29tcHV0YXRpb24gb24gcHJvYmxlbXMsIGxldCdzIGp1c3QgaWdub3JlIGFueSBvcGVyYXRpb24gb24gYW4gaW52YWxpZCBpbmNyZW1lbnRhbFxuICAgICByYXRoZXIgdGhhbiByYWlzaW5nLiAqKVxuICBsZXQgZXhwZXJ0X2tpbmRfb2Zfbm9kZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICB8IEV4cGVydCBlIC0+IFVvcHQuc29tZSBlXG4gICAgfCBJbnZhbGlkIC0+IFVvcHQubm9uZVxuICAgIHwga2luZCAtPiByYWlzZV9zIFslc2V4cCBcInVuZXhwZWN0ZWQga2luZCBmb3IgZXhwZXJ0IG5vZGVcIiwgKGtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9XG4gICAgbGV0IGUgPSBFeHBlcnQuY3JlYXRlIH5mIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBpblxuICAgIGxldCBub2RlID0gY3JlYXRlX25vZGUgc3RhdGUgKEV4cGVydCBlKSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgc3RhdGUub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlXG4gICAgICB0aGVuXG4gICAgICAgIHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlXG4gICAgICAgIDwtIFQgbm9kZSA6OiBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgPVxuICAgIG1hdGNoIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiA6IHN0cmluZyldXG4gICAgfCBTb21lIGN1cnJlbnQgLT4gY3VycmVudFxuICA7O1xuXG4gICgqIE5vdGUgdGhhdCB0aGUgdHdvIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBzeW1tZXRyaWMgb2Ygb25lIGFub3RoZXI6IGluIFtsZXQgeSA9XG4gICAgIG1hcCB4XSwgW3hdIGlzIGFsd2F5cyBhIGNoaWxkIG9mIFt5XSAoYXNzdW1pbmcgW3hdIGRvZXNuJ3QgYmVjb21lIGludmFsaWQpIGJ1dCBbeV0gaW5cbiAgICAgb25seSBhIHBhcmVudCBvZiBbeF0gaWYgeSBpcyBuZWNlc3NhcnkuICopXG4gIGxldCBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX2NoaWxkIG5vZGUgfmNoaWxkOmN1cnJlbnQpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIG9uIHBhcmVudCBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfcGFyZW50IHN0YXRlIG5vZGUgbmFtZSA9XG4gICAgbGV0IChUIGN1cnJlbnQpID0gY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSBpblxuICAgIGlmIG5vdCAoTm9kZS5oYXNfcGFyZW50IH5wYXJlbnQ6Y3VycmVudCBub2RlKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBjaGlsZHJlbiBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwibWFrZV9zdGFsZVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbWF0Y2ggRXhwZXJ0Lm1ha2Vfc3RhbGUgZSB3aXRoXG4gICAgICB8IGBBbHJlYWR5X3N0YWxlIC0+ICgpXG4gICAgICB8IGBPayAtPlxuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICA7O1xuXG4gIGxldCBpbnZhbGlkYXRlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiaW52YWxpZGF0ZVwiO1xuICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChkZXAgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgKExpc3QubWVtXG4gICAgICAgICAgICAgICAgfmVxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICAgICAgICAgIChUIG5vZGUpKVxuICAgICAgICB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJhZGRfZGVwZW5kZW5jeVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbGV0IG5ld19jaGlsZF9pbmRleCA9IEV4cGVydC5hZGRfY2hpbGRfZWRnZSBlIChFIGRlcCkgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGV2ZW4gaWYgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBvZlxuICAgICAgICAgW25vZGVdLCBiZWNhdXNlIHdlIGNvdWxkIGJlIHJ1bm5pbmcgZHVlIHRvIGEgcGFyZW50IG90aGVyIHRoYW4gW25vZGVdIG1ha2luZyB1c1xuICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOmRlcC5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Om5ld19jaGlsZF9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKSlcbiAgOztcblxuICBsZXQgcmVtb3ZlX2RlcGVuZGVuY3kgKG5vZGUgOiBfIE5vZGUudCkgKGVkZ2UgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwicmVtb3ZlX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGZvciB0aGUgcmVhc29uIHN0YXRlZCBpblxuICAgICAgICAgW2FkZF9kZXBlbmRlbmN5XSAqKVxuICAgICAgbGV0IGVkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBlZGdlLmluZGV4IGluXG4gICAgICBsZXQgKEUgbGFzdF9lZGdlKSA9IEV4cGVydC5sYXN0X2NoaWxkX2VkZ2VfZXhuIGUgaW5cbiAgICAgIGxldCBsYXN0X2VkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBsYXN0X2VkZ2UuaW5kZXggaW5cbiAgICAgIGlmIGVkZ2VfaW5kZXggPD4gbGFzdF9lZGdlX2luZGV4XG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9kZS5zd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB+Y2hpbGQxOmVkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleFxuICAgICAgICAgICAgfmNoaWxkMjpsYXN0X2VkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDI6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBFeHBlcnQuc3dhcF9jaGlsZHJlbiBlIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleCB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSk7XG4gICAgICBFeHBlcnQucmVtb3ZlX2xhc3RfY2hpbGRfZWRnZV9leG4gZTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIG5vZGUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQ6ZWRnZS5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Omxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBlZGdlLmNoaWxkKSB0aGVuIEV4cGVydC5kZWNyX2ludmFsaWRfY2hpbGRyZW4gZSkpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBFeHBlcnQuZWRnZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhvbl9jaGFuZ2UgPSBpZ25vcmUpIGNoaWxkIDogXyB0ID0geyBjaGlsZDsgb25fY2hhbmdlOyBpbmRleCA9IFVvcHQubm9uZSB9XG5cbiAgbGV0IHZhbHVlICh0IDogXyB0KSA9XG4gICAgbGV0IHN0YXRlID0gdC5jaGlsZC5zdGF0ZSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgU3RhdGUuRXhwZXJ0LmFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudFxuICAgICAgICBzdGF0ZVxuICAgICAgICB0LmNoaWxkXG4gICAgICAgIFwiRGVwZW5kZW5jeS52YWx1ZVwiO1xuICAgICgqIE5vdCBleHBvc2luZyB0aGUgX2V4biwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFkdmVydGlzZWQgYXMgYmVpbmcgdXNhYmxlIG9ubHlcbiAgICAgICBpbnNpZGUgdGhlIGNhbGxiYWNrcyBvZiBwYXJlbnRzLCB3aGVyZSBpdCB3aWxsIG5vdCByYWlzZS4gKilcbiAgICBOb2RlLnZhbHVlX2V4biB0LmNoaWxkXG4gIDs7XG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgc3RhdGUgPyhvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IGZ1biB+aXNfbm93X29ic2VydmFibGU6XyAtPiAoKSkgZiA9XG4gICAgU3RhdGUuRXhwZXJ0LmNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICA7O1xuXG4gIGxldCBtYWtlX3N0YWxlID0gU3RhdGUuRXhwZXJ0Lm1ha2Vfc3RhbGVcbiAgbGV0IHdhdGNoID0gRm4uaWRcbiAgbGV0IGludmFsaWRhdGUgPSBTdGF0ZS5FeHBlcnQuaW52YWxpZGF0ZVxuICBsZXQgYWRkX2RlcGVuZGVuY3kgPSBTdGF0ZS5FeHBlcnQuYWRkX2RlcGVuZGVuY3lcbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LnJlbW92ZV9kZXBlbmRlbmN5XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5sZXQgY3JlYXRlIHN0YXRlIGNoaWxkcmVuIH5mIH5yZWR1Y2UgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWR1Y2VyID0gQmFsYW5jZWRfcmVkdWNlci5jcmVhdGVfZXhuICgpIH5sZW4gfnJlZHVjZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyO1xuICAgIGxldCBub2RlID1cbiAgICAgIEV4cGVydDEuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgYSA9IEJhbGFuY2VkX3JlZHVjZXIuY29tcHV0ZV9leG4gcmVkdWNlciBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICAgICAgYSlcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBFeHBlcnQxLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRXhwZXJ0MS5EZXBlbmRlbmN5LmNyZWF0ZSBjaGlsZHJlbi4oaSkgfm9uX2NoYW5nZTooZnVuIGEgLT5cbiAgICAgICAgICAgQmFsYW5jZWRfcmVkdWNlci5zZXRfZXhuIHJlZHVjZXIgaSAoZiBhKTtcbiAgICAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXIpKVxuICAgIGRvbmU7XG4gICAgU29tZSAoRXhwZXJ0MS5Ob2RlLndhdGNoIG5vZGUpKVxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIG1vc3RseSBhIHdyYXBwZXIgYXJvdW5kIFtTdGF0ZV0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5jcmVtZW50YWxfaW50ZlxuXG5tb2R1bGUgdHlwZSBJbmNyZW1lbnRhbF9jb25maWcgPSBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnXG5cbm1vZHVsZSBDb25maWcgPSBDb25maWdcblxubGV0IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkID0gMTI4XG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIG1vZHVsZSBDdXRvZmYgPSBDdXRvZmZcbiAgbW9kdWxlIFN0ZXBfZnVuY3Rpb24gPSBTdGVwX2Z1bmN0aW9uXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIHZhbCB0IDogdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZV9pbnRlcm5hbCA9IGNyZWF0ZVxuXG4gICAgbGV0IGNyZWF0ZSA/KG1heF9oZWlnaHRfYWxsb3dlZCA9IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkKSAoKSA6IChtb2R1bGUgUykgPVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgKG1vZHVsZSBDb25maWcuRGVmYXVsdCAoKSkgfm1heF9oZWlnaHRfYWxsb3dlZFxuICAgICAgZW5kKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50IChzdGF0ZSA6IFN0YXRlLnQpICgpID0gc3RhdGUuY3VycmVudF9zY29wZVxuICAgIGxldCB3aXRoaW4gc3RhdGUgdCB+ZiA9IFN0YXRlLndpdGhpbl9zY29wZSBzdGF0ZSB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTm9kZVxuXG4gIGxldCBzdGF0ZSB0ID0gdC5zdGF0ZVxuICBsZXQgcGFjayB0ID0gUGFja2VkLlQgdFxuICBsZXQgY29uc3Qgc3RhdGUgYSA9IFN0YXRlLmNvbnN0IHN0YXRlIGFcbiAgbGV0IHJldHVybiA9IGNvbnN0XG4gIGxldCBvYnNlcnZlID0gU3RhdGUuY3JlYXRlX29ic2VydmVyXG4gIGxldCBtYXAgPSBTdGF0ZS5tYXBcbiAgbGV0IGJpbmQgPSBTdGF0ZS5iaW5kXG5cbiAgbW9kdWxlIE5fYXJ5X21hcF9hbmRfYmluZCA9IHN0cnVjdFxuICAgIGxldCBtYXAyID0gU3RhdGUubWFwMlxuICAgIGxldCBtYXAzID0gU3RhdGUubWFwM1xuICAgIGxldCBtYXA0ID0gU3RhdGUubWFwNFxuICAgIGxldCBtYXA1ID0gU3RhdGUubWFwNVxuICAgIGxldCBtYXA2ID0gU3RhdGUubWFwNlxuICAgIGxldCBtYXA3ID0gU3RhdGUubWFwN1xuICAgIGxldCBtYXA4ID0gU3RhdGUubWFwOFxuICAgIGxldCBtYXA5ID0gU3RhdGUubWFwOVxuICAgIGxldCBtYXAxMCA9IFN0YXRlLm1hcDEwXG4gICAgbGV0IG1hcDExID0gU3RhdGUubWFwMTFcbiAgICBsZXQgbWFwMTIgPSBTdGF0ZS5tYXAxMlxuICAgIGxldCBtYXAxMyA9IFN0YXRlLm1hcDEzXG4gICAgbGV0IG1hcDE0ID0gU3RhdGUubWFwMTRcbiAgICBsZXQgbWFwMTUgPSBTdGF0ZS5tYXAxNVxuICAgIGxldCBiaW5kMiA9IFN0YXRlLmJpbmQyXG4gICAgbGV0IGJpbmQzID0gU3RhdGUuYmluZDNcbiAgICBsZXQgYmluZDQgPSBTdGF0ZS5iaW5kNFxuICBlbmRcblxuICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gIG1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgSW5maXhcblxuICBsZXQgam9pbiA9IFN0YXRlLmpvaW5cbiAgbGV0IGlmXyA9IFN0YXRlLmlmX1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuICBsZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IFN0YXRlLmRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemVcbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLm1lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSBzdGF0ZSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcblxuICBsZXQgYXJyYXlfZm9sZCBzdGF0ZSB0cyB+aW5pdCB+ZiA9IFN0YXRlLmFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCBzdGF0ZSB0cyB+ZiB+cmVkdWNlID0gUmVkdWNlX2JhbGFuY2VkLmNyZWF0ZSBzdGF0ZSB0cyB+ZiB+cmVkdWNlXG5cbiAgbW9kdWxlIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZSA9IFN0YXRlLlVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA9IFN0YXRlLnVub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS5vcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgbGV0IGFsbCA9IFN0YXRlLmFsbFxuICBsZXQgZXhpc3RzID0gU3RhdGUuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gU3RhdGUuZm9yX2FsbFxuICBsZXQgYm90aCA9IFN0YXRlLmJvdGhcbiAgbGV0IHN1bSA9IFN0YXRlLnN1bVxuICBsZXQgb3B0X3N1bSA9IFN0YXRlLm9wdF9zdW1cbiAgbGV0IHN1bV9pbnQgPSBTdGF0ZS5zdW1faW50XG4gIGxldCBzdW1fZmxvYXQgPSBTdGF0ZS5zdW1fZmxvYXRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgPSBTdGF0ZS5jcmVhdGVfdmFyXG4gICAgbGV0IHNldCA9IFN0YXRlLnNldF92YXJcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgd2F0Y2ggdCA9IHQud2F0Y2hcblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0LnZhbHVlIHw+IFslc2V4cF9vZjogYV1cbiAgICBsZXQgcmVwbGFjZSB0IH5mID0gc2V0IHQgKGYgKGxhdGVzdF92YWx1ZSB0KSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBPYnNlcnZlclxuXG4gICAgbW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBJbml0aWFsaXplZCBvZiAnYVxuICAgICAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgICAgICB8IEludmFsaWRhdGVkXG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IG9uX3VwZGF0ZV9leG4gdCB+KGYgOiBfIFVwZGF0ZS50IC0+IHVuaXQpID1cbiAgICAgIFN0YXRlLm9ic2VydmVyX29uX3VwZGF0ZV9leG4gdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOZWNlc3NhcnkgYSAtPiBmIChJbml0aWFsaXplZCBhKVxuICAgICAgICB8IENoYW5nZWQgKGExLCBhMikgLT4gZiAoQ2hhbmdlZCAoYTEsIGEyKSlcbiAgICAgICAgfCBJbnZhbGlkYXRlZCAtPiBmIEludmFsaWRhdGVkXG4gICAgICAgIHwgVW5uZWNlc3NhcnkgLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiSW5jcmVtZW50YWwgYnVnIC0tIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gZ290IHVuZXhwZWN0ZWQgdXBkYXRlIFxcXG4gICAgICAgICAgICAgVW5uZWNlc3NhcnlcIlxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgWyVzZXhwX29mOiBfIHRdKVxuICAgIDs7XG5cbiAgICBsZXQgZGlzYWxsb3dfZnV0dXJlX3VzZSB0ID0gU3RhdGUuZGlzYWxsb3dfZnV0dXJlX3VzZSAhdFxuICAgIGxldCB2YWx1ZSA9IFN0YXRlLm9ic2VydmVyX3ZhbHVlXG4gICAgbGV0IHZhbHVlX2V4biA9IFN0YXRlLm9ic2VydmVyX3ZhbHVlX2V4blxuXG4gICAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8ganVzdCBzaG93IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgICAgcmVwcmVzZW50YXRpb24uICopXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgKHQgOiBfIHQpID1cbiAgICAgIG1hdGNoICF0LnN0YXRlIHdpdGhcbiAgICAgIHwgQ3JlYXRlZCAtPiBbJW1lc3NhZ2UgXCI8dW5zdGFiaWxpemVkPlwiXVxuICAgICAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gWyVtZXNzYWdlIFwiPGRpc2FsbG93ZWQ+XCJdXG4gICAgICB8IEluX3VzZSAtPlxuICAgICAgICBsZXQgdW9wdCA9ICF0Lm9ic2VydmluZy52YWx1ZV9vcHQgaW5cbiAgICAgICAgaWYgVW9wdC5pc19ub25lIHVvcHRcbiAgICAgICAgdGhlbiBbJW1lc3NhZ2UgXCI8aW52YWxpZD5cIl1cbiAgICAgICAgZWxzZSBbJXNleHAgKFVvcHQudW5zYWZlX3ZhbHVlIHVvcHQgOiBhKV1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgQmVmb3JlX29yX2FmdGVyID0gQmVmb3JlX29yX2FmdGVyXG5cbiAgbW9kdWxlIENsb2NrID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZS5DbG9ja1xuXG4gICAgbGV0IHN0YXRlID0gaW5jcl9zdGF0ZVxuXG4gICAgbGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gICAgICBsZXQgYWxhcm1fcHJlY2lzaW9uID0gQWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWxsaXNlY29uZCBpblxuICAgICAgbGV0IGxldmVsX2JpdHMgPSBbIDE0OyAxMzsgNSBdIGluXG4gICAgICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgICAgICB+YWxhcm1fcHJlY2lzaW9uXG4gICAgICAgIH5sZXZlbF9iaXRzOlxuICAgICAgICAgIChUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGxldmVsX2JpdHMgfmV4dGVuZF90b19tYXhfbnVtX2JpdHM6dHJ1ZSlcbiAgICAgICAgKClcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSBzdGF0ZSA/KHRpbWluZ193aGVlbF9jb25maWcgPSBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcpIH5zdGFydCAoKSA9XG4gICAgICAoKiBNYWtlIHN1cmUgW3N0YXJ0XSBpcyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAgT3RoZXJ3aXNlLCBpZiB5b3VcbiAgICAgICAgIGZlZWQgW0Nsb2NrLm5vdyAoKV0gdG8gYSB0aW1lIGZ1bmN0aW9uLCBpdCBjYW4gYmUgcm91bmRlZCBkb3duIHRvIGEgdGltZSBpblxuICAgICAgICAgdGhlIHBhc3QsIGNhdXNpbmcgZXJyb3JzLiAqKVxuICAgICAgbGV0IHN0YXJ0ID1cbiAgICAgICAgVGltZV9ucy5vZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbiAgICAgICAgICAoVGltZV9ucy50b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgc3RhcnQpXG4gICAgICBpblxuICAgICAgU3RhdGUuY3JlYXRlX2Nsb2NrIHN0YXRlIH50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydFxuICAgIDs7XG5cbiAgICBsZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQudGltaW5nX3doZWVsXG4gICAgbGV0IHRpbWluZ193aGVlbF9sZW5ndGggPSBTdGF0ZS50aW1pbmdfd2hlZWxfbGVuZ3RoXG4gICAgbGV0IG5vdyA9IFN0YXRlLm5vd1xuICAgIGxldCB3YXRjaF9ub3cgdCA9IHQubm93LndhdGNoXG4gICAgbGV0IGF0ID0gU3RhdGUuYXRcbiAgICBsZXQgYWZ0ZXIgPSBTdGF0ZS5hZnRlclxuICAgIGxldCBhdF9pbnRlcnZhbHMgPSBTdGF0ZS5hdF9pbnRlcnZhbHNcbiAgICBsZXQgYWR2YW5jZV9jbG9jayA9IFN0YXRlLmFkdmFuY2VfY2xvY2tcbiAgICBsZXQgYWR2YW5jZV9jbG9ja19ieSB0IHNwYW4gPSBhZHZhbmNlX2Nsb2NrIHQgfnRvXzooVGltZV9ucy5hZGQgKG5vdyB0KSBzcGFuKVxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uID0gU3RhdGUuaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG4gICAgbGV0IHN0ZXBfZnVuY3Rpb24gdCB+aW5pdCBzdGVwcyA9XG4gICAgICBpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uXG4gICAgICAgIHRcbiAgICAgICAgKGNvbnN0IChpbmNyX3N0YXRlIHQpIChTdGVwX2Z1bmN0aW9uLmNyZWF0ZV9leG4gfmluaXQgfnN0ZXBzKSlcbiAgICA7O1xuXG4gICAgbGV0IHNuYXBzaG90ID0gU3RhdGUuc25hcHNob3RcbiAgZW5kXG5cbiAgbGV0IGZyZWV6ZSA/KHdoZW5fID0gZnVuIF8gLT4gdHJ1ZSkgdCA9IFN0YXRlLmZyZWV6ZSB0IH5vbmx5X2ZyZWV6ZV93aGVuOndoZW5fXG4gIGxldCBkZXBlbmRfb24gdCB+ZGVwZW5kX29uID0gU3RhdGUuZGVwZW5kX29uIHQgfmRlcGVuZF9vblxuICBsZXQgbmVjZXNzYXJ5X2lmX2FsaXZlID0gU3RhdGUubmVjZXNzYXJ5X2lmX2FsaXZlXG5cbiAgbW9kdWxlIFVwZGF0ZSA9IE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlXG5cbiAgbGV0IG9uX3VwZGF0ZSA9IFN0YXRlLm5vZGVfb25fdXBkYXRlXG4gIGxldCBzdGFiaWxpemUgc3RhdGUgPSBTdGF0ZS5zdGFiaWxpemUgc3RhdGVcbiAgbGV0IGFtX3N0YWJpbGl6aW5nIHN0YXRlID0gU3RhdGUuYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgbGV0IHNhdmVfZG90ID0gU3RhdGUuc2F2ZV9kb3RcbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgPSBTdGF0ZS5zYXZlX2RvdF90b19maWxlXG5cbiAgbW9kdWxlIE5vZGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBJbnZhbGlkXG4gICAgICB8IE5lY2Vzc2FyeV9tYXliZV9zdGFsZSBvZiAnYSBvcHRpb25cbiAgICAgIHwgVW5uZWNlc3NhcnlfbWF5YmVfc3RhbGUgb2YgJ2Egb3B0aW9uXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IG5vZGVfdmFsdWUgdCA6IF8gTm9kZV92YWx1ZS50ID1cbiAgICBpZiBub3QgKGlzX3ZhbGlkIHQpXG4gICAgdGhlbiBJbnZhbGlkXG4gICAgZWxzZSBpZiBpc19uZWNlc3NhcnkgdFxuICAgIHRoZW4gTmVjZXNzYXJ5X21heWJlX3N0YWxlIChVb3B0LnRvX29wdGlvbiB0LnZhbHVlX29wdClcbiAgICBlbHNlIFVubmVjZXNzYXJ5X21heWJlX3N0YWxlIChVb3B0LnRvX29wdGlvbiB0LnZhbHVlX29wdClcbiAgOztcblxuICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBzaG93IGp1c3QgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgcmVwcmVzZW50YXRpb24uICBXZSBvbmx5IHNob3cgdGhlIHZhbHVlIGlmIGl0IGlzIG5lY2Vzc2FyeSBhbmQgdmFsaWQuICopXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGlmIG5vdCAoaXNfdmFsaWQgdClcbiAgICB0aGVuIFwiPGludmFsaWQ+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSBpZiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgIHRoZW4gXCI8dW5uZWNlc3Nhcnk+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSBpZiBVb3B0LmlzX25vbmUgdC52YWx1ZV9vcHRcbiAgICB0aGVuIFwiPHVuY29tcHV0ZWQ+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSB1bnNhZmVfdmFsdWUgdCB8PiBbJXNleHBfb2Y6IGFdXG4gIDs7XG5cbiAgbW9kdWxlIEV4cGVydCA9IEV4cGVydDFcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoIHQxIHQyID0gbWFwMiB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4MilcblxuICAgICAgaW5jbHVkZSBOX2FyeV9tYXBfYW5kX2JpbmRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0XG4gICAgICAgIGxldCB3YXRjaCA9IFZhci53YXRjaFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NvbmZpZyAoSW5jcmVtZW50YWxfY29uZmlnIDogSW5jcmVtZW50YWxfY29uZmlnKSAoKSA9IHN0cnVjdFxuICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YXRlXG5cbiAgICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCAobW9kdWxlIEluY3JlbWVudGFsX2NvbmZpZykgfm1heF9oZWlnaHRfYWxsb3dlZDoxMjhcbiAgZW5kXG5cbiAgbW9kdWxlIENsb2NrID0gc3RydWN0XG4gICAgaW5jbHVkZSBDbG9ja1xuXG4gICAgbGV0IGNyZWF0ZSA/dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgKCkgPVxuICAgICAgY3JlYXRlID90aW1pbmdfd2hlZWxfY29uZmlnIFN0YXRlLnQgfnN0YXJ0ICgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwZXJ0XG5cbiAgICBtb2R1bGUgTm9kZSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBOb2RlXG5cbiAgICAgIGxldCBjcmVhdGUgP29uX29ic2VydmFiaWxpdHlfY2hhbmdlIGYgPSBjcmVhdGUgU3RhdGUudCA/b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0ZXBfcmVzdWx0ID0gU3RhdGUuU3RlcF9yZXN1bHRcblxuICAgIGxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgKCkgPSBTdGF0ZS5kb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgU3RhdGUudFxuICBlbmRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuXG4gICAgbGV0IHJldHVybiBhID0gcmV0dXJuIFN0YXRlLnQgYVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50ICgpID0gY3VycmVudCBTdGF0ZS50ICgpXG4gICAgbGV0IHdpdGhpbiB0IH5mID0gd2l0aGluIFN0YXRlLnQgdCB+ZlxuICBlbmRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgP3VzZV9jdXJyZW50X3Njb3BlIHZhbHVlID0gY3JlYXRlID91c2VfY3VycmVudF9zY29wZSBTdGF0ZS50IHZhbHVlXG4gIGVuZFxuXG4gIGxldCBjb25zdCBhID0gY29uc3QgU3RhdGUudCBhXG4gIGxldCByZXR1cm4gYSA9IHJldHVybiBTdGF0ZS50IGFcbiAgbGV0IGFsbCB0cyA9IGFsbCBTdGF0ZS50IHRzXG4gIGxldCBleGlzdHMgdHMgPSBleGlzdHMgU3RhdGUudCB0c1xuICBsZXQgZm9yX2FsbCB0cyA9IGZvcl9hbGwgU3RhdGUudCB0c1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuXG4gIGxldCBtZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBwcm9qZWN0X2tleSBmID1cbiAgICBtZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIHByb2plY3Rfa2V5IGZcbiAgOztcblxuICBsZXQgbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBmID0gbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIGZcbiAgbGV0IGFycmF5X2ZvbGQgdHMgfmluaXQgfmYgPSBhcnJheV9mb2xkIFN0YXRlLnQgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCB0cyB+ZiB+cmVkdWNlID0gcmVkdWNlX2JhbGFuY2VkIFN0YXRlLnQgdHMgfmYgfnJlZHVjZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+dXBkYXRlID1cbiAgICB1bm9yZGVyZWRfYXJyYXlfZm9sZCBTdGF0ZS50IHRzIH5pbml0IH5mIH51cGRhdGUgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgOztcblxuICBsZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH5pbml0IH5mIH5mX2ludmVyc2UgPVxuICAgIG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH5pbml0IH5mIH5mX2ludmVyc2VcbiAgOztcblxuICBsZXQgc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH56ZXJvIH5hZGQgfnN1YiA9XG4gICAgc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfnplcm8gfmFkZCB+c3ViXG4gIDs7XG5cbiAgbGV0IG9wdF9zdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfnplcm8gfmFkZCB+c3ViID1cbiAgICBvcHRfc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfnplcm8gfmFkZCB+c3ViXG4gIDs7XG5cbiAgbGV0IHN1bV9pbnQgdHMgPSBzdW1faW50IFN0YXRlLnQgdHNcbiAgbGV0IHN1bV9mbG9hdCB0cyA9IHN1bV9mbG9hdCBTdGF0ZS50IHRzXG4gIGxldCBzdGFiaWxpemUgKCkgPSBzdGFiaWxpemUgU3RhdGUudFxuICBsZXQgYW1fc3RhYmlsaXppbmcgKCkgPSBhbV9zdGFiaWxpemluZyBTdGF0ZS50XG4gIGxldCBzYXZlX2RvdCBvdXQgPSBzYXZlX2RvdCBTdGF0ZS50IG91dFxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSBmaWxlID0gT3V0X2NoYW5uZWwud2l0aF9maWxlIGZpbGUgfmY6c2F2ZV9kb3RcbiAgbGV0IGxhenlfZnJvbV9mdW4gZiA9IGxhenlfZnJvbV9mdW4gU3RhdGUudCBmXG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgaGFzaGFibGUgcHJvamVjdF9rZXkgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIHByb2plY3Rfa2V5IGZcbiAgOztcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIGZcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoKSA9IE1ha2Vfd2l0aF9jb25maWcgKENvbmZpZy5EZWZhdWx0ICgpKSAoKVxuaW5jbHVkZSBHZW5lcmljXG5cbm1vZHVsZSBBZGRfd2l0bmVzczAgKE0gOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogc2lnXG4gIHR5cGUgJ3cgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICd3IHQgPSBNLnRcblxuICBsZXQgaW52YXJpYW50IF8gdCA9IE0uaW52YXJpYW50IHRcbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBNLnNleHBfb2ZfdCB0XG5lbmRcblxubW9kdWxlIEFkZF93aXRuZXNzMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpIDogc2lnXG4gIHR5cGUgKCdhLCAndykgdCA9ICdhIE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ3cpIHQgPSAnYSBNLnRcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IE0uaW52YXJpYW50IGludmFyaWFudF9hIHRcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gTS5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbmVuZFxuXG5tb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDbG9ja1xuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoQ2xvY2spXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBpbmNsdWRlIEV4cGVydFxuXG4gIG1vZHVsZSBEZXBlbmRlbmN5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBEZXBlbmRlbmN5XG5cbiAgICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRGVwZW5kZW5jeVxuXG4gICAgICAgIGxldCBpbnZhcmlhbnQgXyBfID0gKClcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE5vZGVcblxuICAgIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBOb2RlXG5cbiAgICAgICAgbGV0IGludmFyaWFudCBfIF8gPSAoKVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgU3RlcF9yZXN1bHQgPSBTdGF0ZS5TdGVwX3Jlc3VsdFxuXG4gIGxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgc3RhdGUgPSBTdGF0ZS5kb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgc3RhdGVcbmVuZFxuXG5tb2R1bGUgTm9kZSA9IHN0cnVjdFxuICBpbmNsdWRlIE5vZGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKE5vZGUpXG5lbmRcblxudHlwZSAoJ2EsICd3KSB0ID0gKCdhLCAndykgTm9kZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG50eXBlICgnYSwgJ3cpIGluY3JlbWVudGFsID0gKCdhLCAndykgdFxuXG5sZXQgaW52YXJpYW50ID0gTm9kZS5pbnZhcmlhbnRcblxubW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gIGluY2x1ZGUgT2JzZXJ2ZXJcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKE9ic2VydmVyKVxuZW5kXG5cbm1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICBpbmNsdWRlIFNjb3BlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChTY29wZSlcbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGF0ZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoU3RhdGUpXG5lbmRcblxubW9kdWxlIFZhciA9IHN0cnVjdFxuICBpbmNsdWRlIFZhclxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoVmFyKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZVxuICAgIFNfZ2VuXG4gICAgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIGluY3JlbWVudGFsXG4gICAgd2l0aCB0eXBlIEJlZm9yZV9vcl9hZnRlci50ID0gQmVmb3JlX29yX2FmdGVyLnRcbiAgICB3aXRoIHR5cGUgQ2xvY2sudCA9IHN0YXRlX3dpdG5lc3MgQ2xvY2sudFxuICAgIHdpdGggdHlwZSAnYSBDdXRvZmYudCA9ICdhIEN1dG9mZi50XG4gICAgd2l0aCB0eXBlICdhIEV4cGVydC5EZXBlbmRlbmN5LnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEV4cGVydC5EZXBlbmRlbmN5LnRcbiAgICB3aXRoIHR5cGUgJ2EgRXhwZXJ0Lk5vZGUudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgRXhwZXJ0Lk5vZGUudFxuICAgIHdpdGggdHlwZSBFeHBlcnQuU3RlcF9yZXN1bHQudCA9IEV4cGVydC5TdGVwX3Jlc3VsdC50XG4gICAgd2l0aCB0eXBlICdhIE9ic2VydmVyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIE9ic2VydmVyLnRcbiAgICB3aXRoIHR5cGUgJ2EgT2JzZXJ2ZXIuVXBkYXRlLnQgPSAnYSBPYnNlcnZlci5VcGRhdGUudFxuICAgIHdpdGggdHlwZSBQYWNrZWQudCA9IFBhY2tlZC50XG4gICAgd2l0aCB0eXBlIFNjb3BlLnQgPSBzdGF0ZV93aXRuZXNzIFNjb3BlLnRcbiAgICB3aXRoIHR5cGUgU3RhdGUudCA9IHN0YXRlX3dpdG5lc3MgU3RhdGUudFxuICAgIHdpdGggdHlwZSBTdGF0ZS5TdGF0cy50ID0gU3RhdGUuU3RhdHMudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUudCA9XG4gICAgICAgICAgICgnYSwgJ2IpIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZS50XG4gICAgd2l0aCB0eXBlICdhIFVwZGF0ZS50ID0gJ2EgVXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgJ2EgVmFyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIFZhci50XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGRlYnVnID0gZGVidWdcbmVuZFxuIiwiXG5vcGVuIEJhc2VcblxubW9kdWxlIENvbW11dGF0aXZlX2dyb3VwID0gc3RydWN0XG4gICgqKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cbiAgICAgICsgYXNzb2NpYXRpdml0eTogWyhhICsgYikgKyBjID0gYSArIChiICsgYyldXG4gICAgICArIGlkZW50aXR5OiBbemVybyArIGEgPSBhICsgemVybyA9IGFdXG4gICAgICArIGludmVyc2VzOiBnaXZlbiBhbnkgW2FdIHRoZXJlIGV4aXN0cyBhICh1bmlxdWUpIGVsdCBbYl0gc3VjaCB0aGF0IFthICsgYiA9IGIgKyBhID1cbiAgICAgIHplcm9dXG4gICAgICArIGNvbW11dGF0aXZpdHk6IFthICsgYiA9IGIgKyBhXVxuICAqKVxuXG4gIG1vZHVsZSB0eXBlIFdpdGhvdXRfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsICgrKSAgOiB0IC0+IHQgLT4gdFxuICAgIHZhbCAoLSkgIDogdCAtPiB0IC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGluY2x1ZGUgV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFZlY3Rvcl9zcGFjZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG4gICAgaW5jbHVkZSBDb21tdXRhdGl2ZV9ncm91cC5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICB2YWwgc2NhbGUgOiB0IC0+IGZsb2F0IC0+IHRcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBJbmNyX21hcF9pbnRmXG5cbigqKiBUaGlzIHR5cGUgbGV0cyB1cyBjYXB0dXJlIHRoZSBraW5kIG9mIG1hcCBmdW5jdGlvbiBiZWluZyBwZXJmb3JtZWQsIHNvIHdlIGNhbiB3aXRoXG4gICAgb25lIGltcGxlbWVudGF0aW9uIHBlcmZvcm0gbWFwIGFuZCBmaWx0ZXItbWFwIG9wZXJhdGlvbnMuXG5cbiAgICBIZXJlLCBbJ2lucHV0X2RhdGFdIGlzIHRoZSB0eXBlIG9mIGRhdGEgaW4gdGhlIGlucHV0IG1hcCwgWydvdXRwdXRfZGF0YV0gaXMgdGhlIHR5cGVcbiAgICBvZiBkYXRhIGluIHRoZSBvdXRwdXQgbWFwLCBhbmQgWydmX291dHB1dF0gaXMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBbfmZdIGZ1bmN0aW9uXG4gICAgcGFzc2VkIHRvIHRoZSBtYXBwaW5nIGZ1bmN0aW9uLiAqKVxubW9kdWxlIE1hcF90eXBlID0gc3RydWN0XG4gIHR5cGUgKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdmX291dHB1dCkgdCA9XG4gICAgfCBNYXAgOiAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhKSB0XG4gICAgfCBGaWx0ZXJfbWFwIDogKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSBvcHRpb24pIHRcblxuICAoKiBUaGUgZXh0cmEgdHlwZSB2YXJpYWJsZSAnYSBpcyB0byBhbGxvdyBpbiBmdXR1cmU6XG4gICAgIHwgRmlsdGVyIDogKCdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhLCBib29sKSB0ICopXG5lbmRcblxubW9kdWxlIEdlbmVyaWMgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhfb2xkIGkgfmYgPVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQlbWFwIGEgPSBpIGluXG4gICAgbGV0IGIgPSBmIH5vbGQ6IW9sZCBhIGluXG4gICAgb2xkIDo9IFNvbWUgKGEsIGIpO1xuICAgIGJcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgICA/KHJldmVydF90b19pbml0X3doZW5fZW1wdHkgPSBmYWxzZSlcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIGxldCBkZWZhdWx0IH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgPVxuICAgICAgICBhZGQgfmtleSB+ZGF0YTpuZXdfZGF0YSAocmVtb3ZlIH5rZXkgfmRhdGE6b2xkX2RhdGEgYWNjKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi52YWx1ZSB1cGRhdGUgfmRlZmF1bHRcbiAgICBpblxuICAgIHdpdGhfb2xkIG1hcCB+ZjooZnVuIH5vbGQgbmV3X2luIC0+XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBzcGVjaWFsaXplZF9pbml0aWFsIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBNYXAuZm9sZCB+aW5pdCB+ZjphZGQgbmV3X2luXG4gICAgICAgICB8IFNvbWUgaW5pdGlhbCAtPiBpbml0aWFsIH5pbml0IG5ld19pbilcbiAgICAgIHwgU29tZSAob2xkX2luLCBvbGRfb3V0KSAtPlxuICAgICAgICBpZiByZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ICYmIE1hcC5sZW5ndGggbmV3X2luID0gMFxuICAgICAgICB0aGVuIGluaXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICB+aW5pdDpvbGRfb3V0XG4gICAgICAgICAgICBvbGRfaW5cbiAgICAgICAgICAgIG5ld19pblxuICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjY1xuICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IGFkZCB+a2V5IH5kYXRhOm5ld18gYWNjXG4gICAgICAgICAgICAgIHwgYFVuZXF1YWwgKG9sZCwgbmV3XykgLT4gdXBkYXRlIH5rZXkgfm9sZF9kYXRhOm9sZCB+bmV3X2RhdGE6bmV3XyBhY2MpKVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgIGluY3JfbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIG1hdGNoIHVwZGF0ZSB3aXRoXG4gICAgICB8IFNvbWUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgICBhZGRcbiAgICAgICAgICAgIH5vdXRlcl9rZXlcbiAgICAgICAgICAgIH5pbm5lcl9rZXlcbiAgICAgICAgICAgIH5kYXRhOm5ld19kYXRhXG4gICAgICAgICAgICAocmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgaW5jcl9tYXBcbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5vbGRfZGF0YTpvbGRfaW5uZXJfbWFwIH5uZXdfZGF0YTpuZXdfaW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICAoTWFwLmZvbGRfc3ltbWV0cmljX2RpZmYgb2xkX2lubmVyX21hcCBuZXdfaW5uZXJfbWFwIH5kYXRhX2VxdWFsKVxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gYWNjIChpbm5lcl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgZGF0YV9yZW1vdmVkIC0+IHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6ZGF0YV9yZW1vdmVkIGFjY1xuICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9hZGRlZCAtPiBhZGQgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfYWRkZWQgYWNjXG4gICAgICAgICAgICB8IGBVbmVxdWFsIChvbGRfZGF0YSwgbmV3X2RhdGEpIC0+XG4gICAgICAgICAgICAgIHVwZGF0ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MpKVxuICAgICAgfmFkZDooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIGFkZCB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIE1hcC5mb2xkIGlubmVyX21hcCB+aW5pdDphY2MgfmY6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgICByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYykpXG4gIDs7XG5cbiAgbGV0IHdpdGhfY29tcGFyYXRvcicgZ2V0X2NvbXBhcmF0b3IgeCBmID1cbiAgICBJbmNyZW1lbnRhbC5iaW5kIChJbmNyZW1lbnRhbC5mcmVlemUgKEluY3JlbWVudGFsLm1hcCB4IH5mOmdldF9jb21wYXJhdG9yKSkgfmZcbiAgOztcblxuICAoKiogQ2FwdHVyZXMgdGhlIGNvbXBhcmF0b3IgKHdoaWNoIGNhbid0IGNoYW5nZSBhbnl3YXksIHNpbmNlIHRoZSB0eXBlIGRldGVybWluZXMgdGhlXG4gICAgICBjb21wYXJhdG9yKSBieSBmcmVlemluZyB0aGUgY29ycmVzcG9uZGluZyBtYXAuICBOb3RlIHRoYXQgYnkgZmlyc3QgdXNpbmcgSW5jcmVtZW50YWwubWFwIHRvXG4gICAgICBnZXQgdGhlIGNvbXBhcmF0b3Igb3V0IG9mIHRoZSBtYXAsIHdlIGFsbG93IHRoZSBpbml0aWFsIG1hcCBpdHNlbGYgdG8gYmUgZ2FyYmFnZVxuICAgICAgY29sbGVjdGVkICopXG4gIGxldCB3aXRoX2NvbXBhcmF0b3IgbWFwIGYgPSB3aXRoX2NvbXBhcmF0b3InIE1hcC5jb21wYXJhdG9yIG1hcCBmXG5cbiAgbGV0IG9mX3NldCBzZXQgPVxuICAgIHdpdGhfY29tcGFyYXRvcicgU2V0LmNvbXBhcmF0b3Igc2V0IChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IG9sZF9pbnB1dCA9IHJlZiAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBsZXQgb2xkX291dHB1dCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBJbmNyZW1lbnRhbC5tYXAgc2V0IH5mOihmdW4gbmV3X2lucHV0IC0+XG4gICAgICAgIGxldCBuZXdfb3V0cHV0ID1cbiAgICAgICAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICAgICAgICAoU2V0LnN5bW1ldHJpY19kaWZmICFvbGRfaW5wdXQgbmV3X2lucHV0KVxuICAgICAgICAgICAgfmluaXQ6IW9sZF9vdXRwdXRcbiAgICAgICAgICAgIH5mOihmdW4gb3V0cHV0IC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRmlyc3QgayAtPiBNYXAucmVtb3ZlIG91dHB1dCBrXG4gICAgICAgICAgICAgIHwgU2Vjb25kIGsgLT4gTWFwLmFkZF9leG4gb3V0cHV0IH5rZXk6ayB+ZGF0YTooKSlcbiAgICAgICAgaW5cbiAgICAgICAgb2xkX2lucHV0IDo9IG5ld19pbnB1dDtcbiAgICAgICAgb2xkX291dHB1dCA6PSBuZXdfb3V0cHV0O1xuICAgICAgICBuZXdfb3V0cHV0KSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpXG4gICAgICAgICh0eXBlIGlucHV0X2RhdGEgb3V0cHV0X2RhdGEgZl9vdXRwdXQgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKHdpdG5lc3MgOiAoaW5wdXRfZGF0YSwgb3V0cHV0X2RhdGEsIGZfb3V0cHV0KSBNYXBfdHlwZS50KVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobWFwIDogKCgna2V5LCBpbnB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihmIDoga2V5OidrZXkgLT4gZGF0YTppbnB1dF9kYXRhIC0+IGZfb3V0cHV0KVxuICAgID1cbiAgICB3aXRoX29sZCBtYXAgfmY6KGZ1biB+b2xkIGlucHV0IC0+XG4gICAgICBtYXRjaCBvbGQsIE1hcC5sZW5ndGggaW5wdXQgd2l0aFxuICAgICAgfCBfLCAwIHwgTm9uZSwgXyAtPlxuICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiAoTWFwLm1hcGkgaW5wdXQgfmYgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50KVxuICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+IE1hcC5maWx0ZXJfbWFwaSBpbnB1dCB+ZilcbiAgICAgIHwgU29tZSAob2xkX2lucHV0LCBvbGRfb3V0cHV0KSwgXyAtPlxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgIG9sZF9pbnB1dFxuICAgICAgICAgIGlucHV0XG4gICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICB+aW5pdDpvbGRfb3V0cHV0XG4gICAgICAgICAgfmY6KGZ1biBvdXRwdXQgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgYFJpZ2h0IG5ld19kYXRhIHwgYFVuZXF1YWwgKF8sIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgICAgICAgIChtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6cmVzXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICAgICAgICB8IFNvbWUgb3V0cHV0X2RhdGEgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YTpvdXRwdXRfZGF0YSkpKSlcbiAgOztcblxuICBsZXQgbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmYgPSBnZW5lcmljX21hcGkgTWFwID9kYXRhX2VxdWFsIG1hcCB+ZlxuICBsZXQgZmlsdGVyX21hcGkgP2RhdGFfZXF1YWwgbWFwIH5mID0gZ2VuZXJpY19tYXBpIEZpbHRlcl9tYXAgP2RhdGFfZXF1YWwgbWFwIH5mXG4gIGxldCBtYXAgP2RhdGFfZXF1YWwgbWFwIH5mID0gbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG4gIGxldCBmaWx0ZXJfbWFwID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgd2l0aF9vbGQyIGkxIGkyIH5mID1cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAyIGkxIGkyIH5mOihmdW4gYTEgYTIgLT5cbiAgICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYTEgYTIgaW5cbiAgICAgIG9sZCA6PSBTb21lIChhMSwgYTIsIGIpO1xuICAgICAgYilcbiAgOztcblxuICBsZXQgbWFwaV9jb3VudFxuICAgICAgICAodHlwZSBhIGNtcClcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgaW5wdXRcbiAgICAgICAgfihjb21wYXJhdG9yIDpcbiAgICAgICAgICAgIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApKVxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSAodmFsIGNvbXBhcmF0b3IpIGluXG4gICAgbGV0IGFkZCBuZXdfa2V5IGFjYyA9XG4gICAgICBNYXAudXBkYXRlIGFjYyBuZXdfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gMVxuICAgICAgICB8IFNvbWUgbiAtPiBuICsgMSlcbiAgICBpblxuICAgIGxldCByZW1vdmUgbmV3X2tleSBhY2MgPVxuICAgICAgTWFwLmNoYW5nZSBhY2MgbmV3X2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIDEgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgbiAtPiBTb21lIChuIC0gMSkpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIGlucHV0XG4gICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgTSkpXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIChmIH5rZXkgfmRhdGEpIGFjYylcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgKGYgfmtleSB+ZGF0YSkgYWNjKVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgbGV0IHByZXZfa2V5ID0gZiB+a2V5IH5kYXRhOm9sZF9kYXRhIGluXG4gICAgICAgIGxldCBuZXdfa2V5ID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgIGlmIE0uY29tcGFyYXRvci5jb21wYXJlIHByZXZfa2V5IG5ld19rZXkgPSAwXG4gICAgICAgIHRoZW4gYWNjXG4gICAgICAgIGVsc2UgYWNjIHw+IHJlbW92ZSBwcmV2X2tleSB8PiBhZGQgbmV3X2tleSlcbiAgOztcblxuICBsZXQgbWFwX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXykgLT4gU29tZSBtaW5cbiAgOztcblxuICBsZXQgbWF4X2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1heCwgXykgLT4gU29tZSBtYXhcbiAgOztcblxuICBsZXQgYm91bmRzX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCwgTWFwLm1heF9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWluLCBfKSwgU29tZSAobWF4LCBfKSAtPiBTb21lIChtaW4sIG1heClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWluID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6bWluX2hlbHBlciAobWFwaV9jb3VudCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9tYXggP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcCB+ZjptYXhfaGVscGVyIChtYXBpX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX2JvdW5kcyA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmJvdW5kc19oZWxwZXIgKG1hcGlfY291bnQgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcGlfbW4gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWluID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWFwX21heCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9tYXggP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtaW5fdmFsdWUgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcGlfbW4gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6Rm4uaWRcbiAgOztcblxuICBsZXQgbWF4X3ZhbHVlID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfbWF4ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1hcF9ib3VuZHMgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgdmFsdWVfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1lcmdlXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgbGVmdF9tYXBcbiAgICAgICAgcmlnaHRfbWFwXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHdpdGhfb2xkMiBsZWZ0X21hcCByaWdodF9tYXAgfmY6KGZ1biB+b2xkIG5ld19sZWZ0X21hcCBuZXdfcmlnaHRfbWFwIC0+XG4gICAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG5ld19sZWZ0X21hcCBpblxuICAgICAgbGV0IG9sZF9sZWZ0X21hcCwgb2xkX3JpZ2h0X21hcCwgb2xkX291dHB1dCA9XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgICAgZW1wdHksIGVtcHR5LCBlbXB0eVxuICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICBpblxuICAgICAgbGV0IGxlZnRfZGlmZiA9XG4gICAgICAgIE1hcC5zeW1tZXRyaWNfZGlmZiBvbGRfbGVmdF9tYXAgbmV3X2xlZnRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfbGVmdFxuICAgICAgaW5cbiAgICAgIGxldCByaWdodF9kaWZmID1cbiAgICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9yaWdodF9tYXAgbmV3X3JpZ2h0X21hcCB+ZGF0YV9lcXVhbDpkYXRhX2VxdWFsX3JpZ2h0XG4gICAgICBpblxuICAgICAgKCogV2UgbWVyZ2UgdGhlIHR3byBzaWRlcyBvZiB0aGUgZGlmZnMgdG9nZXRoZXIgc28gd2UgY2FuIG1ha2Ugc3VyZSB0byBoYW5kbGUgZWFjaFxuICAgICAgICAga2V5IGV4YWN0bHkgb25jZS4gVGhpcyByZWxpZXMgb24gc3ltbWV0cmljIGRpZmYgZ2l2aW5nIHNvcnRlZCBvdXRwdXQuICopXG4gICAgICBTZXF1ZW5jZS5tZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgICAgbGVmdF9kaWZmXG4gICAgICAgIHJpZ2h0X2RpZmZcbiAgICAgICAgfmNvbXBhcmU6KGZ1biAobGVmdF9rZXksIF8pIChyaWdodF9rZXksIF8pIC0+XG4gICAgICAgICAgY29tcGFyYXRvci5jb21wYXJlIGxlZnRfa2V5IHJpZ2h0X2tleSlcbiAgICAgIHw+IFNlcXVlbmNlLmZvbGQgfmluaXQ6b2xkX291dHB1dCB+ZjooZnVuIG91dHB1dCBkaWZmX2VsZW1lbnQgLT5cbiAgICAgICAgbGV0IGtleSA9XG4gICAgICAgICAgbWF0Y2ggZGlmZl9lbGVtZW50IHdpdGhcbiAgICAgICAgICB8IExlZnQgKGtleSwgXykgfCBSaWdodCAoa2V5LCBfKSAtPiBrZXlcbiAgICAgICAgICB8IEJvdGggKChsZWZ0X2tleSwgXyksIChyaWdodF9rZXksIF8pKSAtPlxuICAgICAgICAgICAgYXNzZXJ0IChjb21wYXJhdG9yLmNvbXBhcmUgbGVmdF9rZXkgcmlnaHRfa2V5ID0gMCk7XG4gICAgICAgICAgICBsZWZ0X2tleVxuICAgICAgICBpblxuICAgICAgICAoKiBUaGVzZSB2YWx1ZXMgcmVwcmVzZW50IHdoZXRoZXIgdGhlcmUgaXMgZGF0YSBmb3IgdGhlIGdpdmVuIGtleSBpbiB0aGUgbmV3XG4gICAgICAgICAgIGlucHV0IGluIHRoZSBsZWZ0IGFuZCByaWdodCBtYXAuICopXG4gICAgICAgIGxldCBsZWZ0X2RhdGFfb3B0LCByaWdodF9kYXRhX29wdCA9XG4gICAgICAgICAgbGV0IG5ld19kYXRhID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZGlmZl9lbGVtZW50IHdpdGhcbiAgICAgICAgICB8IEJvdGggKChfLCBsZWZ0X2RpZmYpLCAoXywgcmlnaHRfZGlmZikpIC0+XG4gICAgICAgICAgICBuZXdfZGF0YSBsZWZ0X2RpZmYsIG5ld19kYXRhIHJpZ2h0X2RpZmZcbiAgICAgICAgICB8IExlZnQgKF8sIGxlZnRfZGlmZikgLT4gbmV3X2RhdGEgbGVmdF9kaWZmLCBNYXAuZmluZCBuZXdfcmlnaHRfbWFwIGtleVxuICAgICAgICAgIHwgUmlnaHQgKF8sIHJpZ2h0X2RpZmYpIC0+IE1hcC5maW5kIG5ld19sZWZ0X21hcCBrZXksIG5ld19kYXRhIHJpZ2h0X2RpZmZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG91dHB1dF9kYXRhX29wdCA9XG4gICAgICAgICAgbWF0Y2ggbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIHgsIE5vbmUgLT4gZiB+a2V5IChgTGVmdCB4KVxuICAgICAgICAgIHwgTm9uZSwgU29tZSB5IC0+IGYgfmtleSAoYFJpZ2h0IHkpXG4gICAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBmIH5rZXkgKGBCb3RoICh4LCB5KSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggb3V0cHV0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICB8IFNvbWUgZGF0YSAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhKSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKGxocyA6ICgoJ2tleSwgaW5wdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6XG4gICAgICAgICAgICBrZXk6J2tleVxuICAgICAgICAgIC0+IGRhdGE6KGlucHV0X2RhdGEsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAoZl9vdXRwdXQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgOiAoKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBsaHMgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHByZXZfbm9kZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGFjYyA6ICgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWFjYykgaW5cbiAgICBsZXQgKG9uX2lubmVyX2NoYW5nZSA6IGtleTona2V5IC0+IGZfb3V0cHV0IC0+IHVuaXQpID1cbiAgICAgIG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gZnVuIH5rZXkgZGF0YSAtPiBhY2MgOj0gTWFwLnNldCAhYWNjIH5rZXkgfmRhdGFcbiAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPlxuICAgICAgICBmdW4gfmtleSBvcHQgLT5cbiAgICAgICAgICBsZXQgb2xkID0gIWFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgICAgIDo9IChtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb2xkIGtleVxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT4gTWFwLnNldCBvbGQgfmtleSB+ZGF0YSlcbiAgICBpblxuICAgIGxldCByZWMgbGhzX2NoYW5nZSA9XG4gICAgICBsYXp5XG4gICAgICAgIChJbmNyZW1lbnRhbC5tYXAgbGhzIH5mOihmdW4gbWFwIC0+XG4gICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgIH5pbml0OiFwcmV2X25vZGVzXG4gICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBkZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWFwLnJlbW92ZSBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gTWFwLnJlbW92ZSAhYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuaW52YWxpZGF0ZSBub2RlO1xuICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBPcHRpb24uaXRlciBjdXRvZmYgfmY6KGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGxoc19jaGFuZ2UpKTtcbiAgICAgICAgICAgICAgICAgICBsZXQgdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAoZiB+a2V5IH5kYXRhOihFLk5vZGUud2F0Y2ggbm9kZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KG9uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCB1c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICBNYXAuc2V0IG5vZGVzIH5rZXkgfmRhdGE6KG5vZGUsIHVzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgcHJldl9ub2RlcyA6PSBuZXdfbm9kZXM7XG4gICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBsaHNfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLndhdGNoIHJlc3VsdFxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaScgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICBNYXBfdHlwZS5GaWx0ZXJfbWFwXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXBpJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InIE1hcF90eXBlLk1hcCA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaScgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZmlsdGVyX21hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWVyZ2UnID9jdXRvZmYgP2RhdGFfZXF1YWxfbGVmdCA/ZGF0YV9lcXVhbF9yaWdodCBtYXAxIG1hcDIgfmYgPVxuICAgIG1lcmdlID9kYXRhX2VxdWFsX2xlZnQgP2RhdGFfZXF1YWxfcmlnaHQgbWFwMSBtYXAyIH5mOihmdW4gfmtleTpfIGRpZmYgLT4gU29tZSBkaWZmKVxuICAgIHw+IGZpbHRlcl9tYXBpJyA/Y3V0b2ZmIH5mOihmdW4gfmtleSB+ZGF0YTpkaWZmIC0+IGYgfmtleSBkaWZmKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvclxuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oZGF0YV9lcXVhbCA6IHYgLT4gdiAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhsZWZ0X3Jlc3VsdF9lcXVhbCA6IHYxIC0+IHYxIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KHJpZ2h0X3Jlc3VsdF9lcXVhbCA6IHYyIC0+IHYyIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOiBrZXk6J2tleSAtPiBkYXRhOnYgLT4gdjEgKiB2MilcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgaW5wdXRfY2hhbmdlID1cbiAgICAgIEluY3JlbWVudGFsLm1hcCBpbnB1dCB+ZjooZnVuIG1hcCAtPlxuICAgICAgICBsZXQgbGVmdCwgcmlnaHQgPVxuICAgICAgICAgIG1hdGNoIE1hcC5pc19lbXB0eSAhcHJldl9tYXAsIE1hcC5pc19lbXB0eSBtYXAgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSB8IGZhbHNlLCB0cnVlIC0+IGVtcHR5X21hcCwgZW1wdHlfbWFwXG4gICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICAgKCogTWFwcGluZyBvbiBhIG1hcCBpcyB3YXkgZmFzdGVyIHRoYW4gc3ltbWV0cmljIGRpZmZpbmcgYW5kIHRoZW5cbiAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBtYXBzIHVwIHBpZWNlIGJ5IHBpZWNlLCBzbyB3ZSBkbyB0aGlzIHdoZW5ldmVyIHdlXG4gICAgICAgICAgICAgICB0cmFuc2l0aW9uIGZyb20gXCJlbXB0eVwiIHRvIFwic29tZXRoaW5nXCIsIHdoaWNoIHdpbGwgYWxtb3N0IGFsd2F5c1xuICAgICAgICAgICAgICAgaGFwcGVuIG9uIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICBNYXAubWFwaSBtYXAgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICAgICAgICAgbGV0IGwsIF8gPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgIE1hcC5tYXBpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgICAgICBsZXQgXywgciA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgICAgICAgIHIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICB+aW5pdDooIWxlZnRfYWNjLCAhcmlnaHRfYWNjKVxuICAgICAgICAgICAgICB+ZjooZnVuIChsZWZ0LCByaWdodCkgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChwcmV2LCBuZXdfKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHByZXZfYSwgcHJldl9iID0gZiB+a2V5IH5kYXRhOnByZXYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBuZXdfYSwgbmV3X2IgPSBmIH5rZXkgfmRhdGE6bmV3XyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICAgICAgICBpZiBsZWZ0X3Jlc3VsdF9lcXVhbCBwcmV2X2EgbmV3X2FcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBsZWZ0XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgTWFwLnNldCBsZWZ0IH5rZXkgfmRhdGE6bmV3X2FcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICAgICAgICBpZiByaWdodF9yZXN1bHRfZXF1YWwgcHJldl9iIG5ld19iXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHJpZ2h0IH5rZXkgfmRhdGE6bmV3X2JcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIGxlZnQga2V5LCBNYXAucmVtb3ZlIHJpZ2h0IGtleVxuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGVsZW1lbnQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gZiB+a2V5IH5kYXRhOmVsZW1lbnQgaW5cbiAgICAgICAgICAgICAgICAgIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOmEsIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpiKVxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgIWxlZnRfYWNjIGxlZnQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgbGVmdF9yZXN1bHQ7XG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAhcmlnaHRfYWNjIHJpZ2h0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIHJpZ2h0X3Jlc3VsdDtcbiAgICAgICAgbGVmdF9hY2MgOj0gbGVmdDtcbiAgICAgICAgcmlnaHRfYWNjIDo9IHJpZ2h0O1xuICAgICAgICBwcmV2X21hcCA6PSBtYXApXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfY2hhbmdlKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGkgP2RhdGFfZXF1YWwgP2xlZnRfcmVzdWx0X2VxdWFsID9yaWdodF9yZXN1bHRfZXF1YWwgaW5wdXQgfmYgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgICAgaW5wdXRcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgICAgICAgID9yaWdodF9yZXN1bHRfZXF1YWxcbiAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgIH5mXG4gICAgICAgIHw+IFR1cGxlMi51bmN1cnJ5IEluY3JlbWVudGFsLmJvdGgpXG4gICAgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0IHBhaXIsIEluY3JlbWVudGFsLm1hcCB+ZjpzbmQgcGFpclxuICA7O1xuXG4gIGxldCB1bnppcCA/bGVmdF9yZXN1bHRfZXF1YWwgP3JpZ2h0X3Jlc3VsdF9lcXVhbCBpbnB1dCA9XG4gICAgbGV0IGRhdGFfZXF1YWwgPVxuICAgICAgT3B0aW9uLm1hcDIgbGVmdF9yZXN1bHRfZXF1YWwgcmlnaHRfcmVzdWx0X2VxdWFsIH5mOihmdW4gbCByIC0+XG4gICAgICAgIFR1cGxlMi5lcXVhbCB+ZXExOmwgfmVxMjpyKVxuICAgIGluXG4gICAgdW56aXBfbWFwaVxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGRhdGEpXG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKGlucHV0IDogKCgna2V5LCB2LCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDpcbiAgICAgICAgICAgIGtleTona2V5XG4gICAgICAgICAgLT4gZGF0YToodiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICh2MSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudCAqICh2Miwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X2FjYyA6ICgna2V5LCB2MSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhbGVmdF9hY2MpIGluXG4gICAgbGV0IHJpZ2h0X2FjYyA6ICgna2V5LCB2MiwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByaWdodF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJpZ2h0X2FjYykgaW5cbiAgICBsZXQgbGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gbGVmdF9hY2MgOj0gTWFwLnNldCAhbGVmdF9hY2MgfmtleSB+ZGF0YSBpblxuICAgIGxldCByaWdodF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gcmlnaHRfYWNjIDo9IE1hcC5zZXQgIXJpZ2h0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJlYyBpbnB1dF9jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgIH5pbml0OiFwcmV2X25vZGVzXG4gICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2xlZnRfZGVwLCBfcmlnaHRfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGxlZnRfZGVwLCByaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWFwLnJlbW92ZSBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgbGVmdF9kZXA7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF9kZXA7XG4gICAgICAgICAgICAgICAgICAgbGVmdF9hY2MgOj0gTWFwLnJlbW92ZSAhbGVmdF9hY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgIHJpZ2h0X2FjYyA6PSBNYXAucmVtb3ZlICFyaWdodF9hY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBNYXAuZmluZF9leG4gIXByZXZfbWFwIGtleSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIE9wdGlvbi5pdGVyIGN1dG9mZiB+ZjooZnVuIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLnNldF9jdXRvZmYgKEUuTm9kZS53YXRjaCBub2RlKSBjKTtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgbGV0IGxlZnRfaW5jciwgcmlnaHRfaW5jciA9IGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGxlZnRfdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICBsZWZ0X2luY3JcbiAgICAgICAgICAgICAgICAgICAgICAgfm9uX2NoYW5nZToobGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIGxldCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcCA9XG4gICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0X2luY3JcbiAgICAgICAgICAgICAgICAgICAgICAgfm9uX2NoYW5nZToocmlnaHRfb25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgIE1hcC5zZXRcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgICAgICB+ZGF0YToobm9kZSwgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCwgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXApKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBwcmV2X25vZGVzIDo9IG5ld19ub2RlcztcbiAgICAgICAgICAgcHJldl9tYXAgOj0gbWFwKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgICBtYXBcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3InID9jdXRvZmYgP2RhdGFfZXF1YWwgfmNvbXBhcmF0b3IgfmZcbiAgICAgICAgfD4gVHVwbGUyLnVuY3VycnkgSW5jcmVtZW50YWwuYm90aClcbiAgICBpblxuICAgIEluY3JlbWVudGFsLm1hcCB+Zjpmc3QgcGFpciwgSW5jcmVtZW50YWwubWFwIH5mOnNuZCBwYWlyXG4gIDs7XG5cbiAgbGV0IGtleXMgbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhOl8gYWNjID0gU2V0LmFkZCBhY2Mga2V5IGluXG4gICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQucmVtb3ZlIGFjYyBrZXkgaW5cbiAgICAgIGxldCBkYXRhX2VxdWFsIF8gXyA9IHRydWUgaW5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdDooU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0OihlbXB0eSwgZW1wdHkpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhOl8gfm5ld19kYXRhOmRhdGEgKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IGRhdGEgLT4gTWFwLnNldCBmaXJzdCB+a2V5IH5kYXRhLCBNYXAucmVtb3ZlIHNlY29uZCBrZXlcbiAgICAgICAgICB8IFNlY29uZCBkYXRhIC0+IE1hcC5yZW1vdmUgZmlyc3Qga2V5LCBNYXAuc2V0IHNlY29uZCB+a2V5IH5kYXRhKVxuICAgICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgZGF0YSAtPiBNYXAuYWRkX2V4biBmaXJzdCB+a2V5IH5kYXRhLCBzZWNvbmRcbiAgICAgICAgICB8IFNlY29uZCBkYXRhIC0+IGZpcnN0LCBNYXAuYWRkX2V4biBzZWNvbmQgfmtleSB+ZGF0YSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGE6XyAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBNYXAucmVtb3ZlIGZpcnN0IGtleSwgTWFwLnJlbW92ZSBzZWNvbmQga2V5KSlcbiAgOztcblxuICBsZXQgZmxhdHRlbiBzdGF0ZSBtYXAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCByZXN1bHQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApKSBpblxuICAgIGxldCBub2RlID0gRS5Ob2RlLmNyZWF0ZSBzdGF0ZSAoZnVuICgpIC0+ICFyZXN1bHQpIGluXG4gICAgTWFwLml0ZXJpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGE6aW5jciAtPlxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5jciB+b25fY2hhbmdlOihmdW4gYSAtPlxuICAgICAgICAgICByZXN1bHQgOj0gTWFwLnNldCAhcmVzdWx0IH5rZXkgfmRhdGE6YSkpKTtcbiAgICBFLk5vZGUud2F0Y2ggbm9kZVxuICA7O1xuXG4gIGxldCBqb2luX3dpdGhfY29tcGFyYXRvciBtYXBfaW5jciB+Y29tcGFyYXRvciA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgbWFwX2luY3IgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcmVzdWx0X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgb2xkX21hcF9vZl9pbmNycyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgY3VycmVudF9kZXBlbmRlbmNpZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmVzdWx0X21hcCkgaW5cbiAgICBsZXQgYWRkX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YV9ub2RlID1cbiAgICAgIGxldCBuZXdfZGVwID1cbiAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZSBkYXRhX25vZGUgfm9uX2NoYW5nZTooZnVuIGRhdGEgLT5cbiAgICAgICAgICByZXN1bHRfbWFwIDo9IE1hcC5zZXQgIXJlc3VsdF9tYXAgfmtleSB+ZGF0YSlcbiAgICAgIGluXG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IG5ld19kZXA7XG4gICAgICBNYXAuc2V0IGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGE6bmV3X2RlcFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgPVxuICAgICAgbGV0IGRlcCA9IE1hcC5maW5kX2V4biBjdXJyZW50X2RlcGVuZGVuY2llcyBrZXkgaW5cbiAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByZXN1bHQgZGVwO1xuICAgICAgcmVzdWx0X21hcCA6PSBNYXAucmVtb3ZlICFyZXN1bHRfbWFwIGtleTtcbiAgICAgIE1hcC5yZW1vdmUgY3VycmVudF9kZXBlbmRlbmNpZXMga2V5XG4gICAgaW5cbiAgICBsZXQgbGhzX2NoYW5nZSA9XG4gICAgICBJbmNyZW1lbnRhbC5tYXAgbWFwX2luY3IgfmY6KGZ1biBtYXBfb2ZfaW5jcnMgLT5cbiAgICAgICAgbGV0IG5ld19kZXBlbmRlbmN5X21hcCA9XG4gICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgIH5kYXRhX2VxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICFvbGRfbWFwX29mX2luY3JzXG4gICAgICAgICAgICBtYXBfb2ZfaW5jcnNcbiAgICAgICAgICAgIH5pbml0OiFjdXJyZW50X2RlcGVuZGVuY2llc1xuICAgICAgICAgICAgfmY6KGZ1biBjdXJyZW50X2RlcGVuZGVuY2llcyAoa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXlcbiAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9ub2RlIC0+IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZVxuICAgICAgICAgICAgICB8IGBVbmVxdWFsIChfLCBkYXRhX25vZGUpIC0+XG4gICAgICAgICAgICAgICAgcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB8PiBhZGRfc3Vibm9kZSB+a2V5IH5kYXRhX25vZGUpXG4gICAgICAgIGluXG4gICAgICAgIGN1cnJlbnRfZGVwZW5kZW5jaWVzIDo9IG5ld19kZXBlbmRlbmN5X21hcDtcbiAgICAgICAgb2xkX21hcF9vZl9pbmNycyA6PSBtYXBfb2ZfaW5jcnMpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGxoc19jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgam9pbiBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+IGpvaW5fd2l0aF9jb21wYXJhdG9yIG1hcCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBtb2R1bGUgU2VwYXJhdGVfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBpbnB1dF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgOyBtdXRhYmxlIGV4cGVydF9ub2RlcyA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBvdXRwdXRfbWFwIDogKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudFxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSBjb21wYXJhdG9yID1cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB7IGlucHV0X21hcCA9IGVtcHR5OyBleHBlcnRfbm9kZXMgPSBlbXB0eTsgb3V0cHV0X21hcCA9IGVtcHR5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9sb29rdXBfbm9kZSBzdGF0ZSB0IGtleSA9XG4gICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPiBNYXAuZmluZF9leG4gdC5pbnB1dF9tYXAga2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzZXBhcmF0ZSBpbnB1dF9tYXAgfmRhdGFfZXF1YWwgPVxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0X21hcCBpblxuICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dF9tYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgc3RhdGUgPSBTZXBhcmF0ZV9zdGF0ZS5jcmVhdGUgY29tcGFyYXRvciBpblxuICAgICAgbGV0IG91dHB1dF9tYXBfbm9kZSA9XG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+IHN0YXRlLm91dHB1dF9tYXApXG4gICAgICBpblxuICAgICAgbGV0IG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQgPVxuICAgICAgICBsZXQgZGVwZW5kZW5jeSA9XG4gICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0LkRlcGVuZGVuY3kuY3JlYXRlIChMYXp5LmZvcmNlX3ZhbCBpbnB1dF9tYXBfY2hhbmdlZClcbiAgICAgICAgaW5cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSBkZXBlbmRlbmN5XG4gICAgICBpblxuICAgICAgKCogV2Ugd2FudCB0byBtYWtlIG5vZGVzIGRlcGVuZCBvbiBbaW5wdXRfbWFwX2NoYW5nZWRdIHNvIHRoYXQgW2lucHV0X21hcF9jaGFuZ2VkXVxuICAgICAgICAgaXMgYWxsb3dlZCB0byBtYWtlIHRoZW0gc3RhbGUsIGJ1dCB3ZSBkbyBub3Qgd2FudCB0aGVtIHRvIGJlIHJlY29tcHV0ZWQgZm9yIGFueVxuICAgICAgICAgb3RoZXIgcmVhc29uLiBTbyB3ZSBtYWtlIFtpbnB1dF9tYXBfY2hhbmdlZF0gYSB1bml0IGluY3JlbWVudGFsICh0aGF0IHRoZXJlZm9yZVxuICAgICAgICAgbmV2ZXIgY2hhbmdlcykgYW5kIHRoaXMgd2F5IFtvdXRwdXRfbWFwX25vZGVdIGFuZCB0aGUgbG9va3VwIG5vZGVzIHdpbGwgb25seSBiZVxuICAgICAgICAgcmVjb21wdXRlZCB3aGVuIHRoZXkgYXJlIGV4cGxpY2l0bHkgbWFkZSBzdGFsZS5cbiAgICAgICopXG4gICAgICBsZXQgcmVjIGlucHV0X21hcF9jaGFuZ2VkID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChJbmNyZW1lbnRhbC5tYXAgaW5wdXRfbWFwIH5mOihmdW4gaW5wdXRfbWFwIC0+XG4gICAgICAgICAgICAgbGV0IHByZXZfaW5wdXRfbWFwID0gc3RhdGUuaW5wdXRfbWFwIGluXG4gICAgICAgICAgICAgbGV0IGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcCA9XG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICBwcmV2X2lucHV0X21hcFxuICAgICAgICAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgfmluaXQ6KHN0YXRlLmV4cGVydF9ub2Rlcywgc3RhdGUub3V0cHV0X21hcClcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biAoZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwKSAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF9vbGRfdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBvbGRfbm9kZSA9IE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5pbnZhbGlkYXRlIG9sZF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBvdXRwdXRfbWFwX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICBNYXAucmVtb3ZlIGV4cGVydF9ub2RlcyBrZXksIE1hcC5yZW1vdmUgb3V0cHV0X21hcCBrZXlcbiAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfbmV3X3ZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlX3N0YXRlLmNyZWF0ZV9sb29rdXBfbm9kZSBpbmNyZW1lbnRhbF9zdGF0ZSBzdGF0ZSBrZXlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBvdXRwdXRfbWFwX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICAoIE1hcC5hZGRfZXhuIGV4cGVydF9ub2RlcyB+a2V5IH5kYXRhOm5vZGVcbiAgICAgICAgICAgICAgICAgICAgICwgTWFwLmFkZF9leG5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgIH5kYXRhOihJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlKSApXG4gICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAoX29sZF92YWx1ZSwgX25ld192YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgKE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgIGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHN0YXRlLmlucHV0X21hcCA8LSBpbnB1dF9tYXA7XG4gICAgICAgICAgICAgc3RhdGUuZXhwZXJ0X25vZGVzIDwtIGV4cGVydF9ub2RlcztcbiAgICAgICAgICAgICBzdGF0ZS5vdXRwdXRfbWFwIDwtIG91dHB1dF9tYXApKVxuICAgICAgaW5cbiAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgb3V0cHV0X21hcF9ub2RlIH5pbnB1dF9tYXBfY2hhbmdlZDtcbiAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG91dHB1dF9tYXBfbm9kZSlcbiAgOztcblxuICAoKiBKdXN0IGZvciBkZXJpdmluZyBzdHJ1Y3R1cmFsIGVxdWFsaXR5LiAqKVxuICB0eXBlICdhIG1heWJlX2JvdW5kX3N0cnVjdHVyYWxseSA9ICdhIE1heWJlX2JvdW5kLnQgPVxuICAgIHwgSW5jbCBvZiAnYVxuICAgIHwgRXhjbCBvZiAnYVxuICAgIHwgVW5ib3VuZGVkXG4gIFtAQGRlcml2aW5nIGVxdWFsXVxuXG4gIGxldCBzdWJyYW5nZVxuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXBfaW5jciA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgcmFuZ2VcbiAgICA9XG4gICAgd2l0aF9vbGQyIG1hcF9pbmNyIHJhbmdlIH5mOihmdW4gfm9sZCBtYXAgcmFuZ2UgLT5cbiAgICAgIGxldCBjb21wYXJlID0gKE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgbGV0IGVxdWFsIGwgciA9IGNvbXBhcmUgbCByID0gMCBpblxuICAgICAgbGV0ICggPiApIGEgYiA9IGNvbXBhcmUgYSBiID4gMFxuICAgICAgYW5kICggPj0gKSBhIGIgPSBjb21wYXJlIGEgYiA+PSAwIGluXG4gICAgICBsZXQgbWF5YmVfYm91bmRfZXF1YWwgYSBiIDogYm9vbCA9IGVxdWFsX21heWJlX2JvdW5kX3N0cnVjdHVyYWxseSBlcXVhbCBhIGIgaW5cbiAgICAgIGxldCByYW5nZV9pc19lbXB0eSB+bWluIH5tYXggOiBib29sID1cbiAgICAgICAgbWF0Y2ggbWluLCBtYXggd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCwgKFVuYm91bmRlZCB8IEV4Y2wgXyB8IEluY2wgXykgfCAoRXhjbCBfIHwgSW5jbCBfKSwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgfCBJbmNsIG1pbiwgSW5jbCBtYXggLT4gbWluID4gbWF4XG4gICAgICAgIHwgRXhjbCBtaW4sIEV4Y2wgbWF4IHwgSW5jbCBtaW4sIEV4Y2wgbWF4IHwgRXhjbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+PSBtYXhcbiAgICAgIGluXG4gICAgICBsZXQgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleSA6IGJvb2wgPVxuICAgICAgICBNYXliZV9ib3VuZC5pc19sb3dlcl9ib3VuZCBtaW4gfm9mXzprZXkgfmNvbXBhcmVcbiAgICAgICAgJiYgTWF5YmVfYm91bmQuaXNfdXBwZXJfYm91bmQgbWF4IH5vZl86a2V5IH5jb21wYXJlXG4gICAgICBpblxuICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIEVtcHR5IG5ldyByYW5nZSBtZWFucyBlbXB0eSBtYXAgKilcbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgIHwgU29tZSAoKG1pbiwgbWF4KSBhcyByYW5nZSkgLT5cbiAgICAgICAgbGV0IGZyb21fc2NyYXRjaCAoKSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6bWF4IGluXG4gICAgICAgIChtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgfCBOb25lIHwgU29tZSAoXywgTm9uZSwgXykgLT5cbiAgICAgICAgICAgKCogbm8gb2xkIHJhbmdlICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChfLCBTb21lIChvbGRfbWluLCBvbGRfbWF4KSwgXylcbiAgICAgICAgICAgd2hlbiByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbiB+bWF4Om9sZF9tYXhcbiAgICAgICAgICAgICB8fCByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heCAtPlxuICAgICAgICAgICAoKiBlbXB0eSBvbGQgcmFuZ2Ugb3Igb2xkIHJhbmdlIGRpc2pvaW50IHdpdGggbmV3ICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBTb21lICgob2xkX21pbiwgb2xkX21heCkgYXMgb2xkX3JhbmdlKSwgb2xkX3JlcykgLT5cbiAgICAgICAgICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICAgICAgICAgKCogUmV0dXJucyB0cnVlIGlmZiB0aGUga2V5IGlzIGluIGJvdGggbmV3IGFuZCBvbGQgcmFuZ2VzICopXG4gICAgICAgICAgICAgbGV0IGluX3JhbmdlX2ludGVyc2VjdGlvbiBrZXkgPVxuICAgICAgICAgICAgICAgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleVxuICAgICAgICAgICAgICAgJiYgcmFuZ2VfaW5jbHVkZXMgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heCBrZXlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEFwcGx5IGNoYW5nZXMgdG8ga2V5cyB3aGljaCBhcmUgaW4gdGhlIGludGVyc2VjdGlvbiBvZiBib3RoIHJhbmdlcy5cblxuICAgICAgICAgICAgICAgIFtvdXRzaWRlXSBpcyB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgb3V0c2lkZSB0aGUgcmFuZ2UgaW50ZXJzZWN0aW9uIHRoYXQgd2VcbiAgICAgICAgICAgICAgICB0b2xlcmF0ZSBiZWZvcmUgZ2l2aW5nIHVwIGFuZCByZWNvbnN0cnVjdGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlLiBUaGlzXG4gICAgICAgICAgICAgICAgaXMgYW4gb3B0aW1pc2F0aW9uIGluIHRoZSBjYXNlIHRoYXQgdGhlIG1hcCBjaGFuZ2VzIGluIGEgdmVyeSBiaWcgd2F5LCBhdFxuICAgICAgICAgICAgICAgIHdoaWNoIHBvaW50IGNvbXB1dGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlIGlzIGNoZWFwZXIuICAqKVxuICAgICAgICAgICAgIGxldCBhcHBseV9kaWZmX2luX2ludGVyc2VjdGlvbiAob3V0c2lkZSwgbWFwKSAoa2V5LCBkYXRhKSA9XG4gICAgICAgICAgICAgICBpZiBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5XG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXlcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YSB8IGBVbmVxdWFsIChfLCBkYXRhKSAtPiBvdXRzaWRlLCBNYXAuc2V0IG1hcCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIGxldCBvdXRzaWRlID0gb3V0c2lkZSAtIDEgaW5cbiAgICAgICAgICAgICAgICAgaWYgSW50Lk8uKG91dHNpZGUgPCAwKVxuICAgICAgICAgICAgICAgICB0aGVuIHJldHVybiAoZnJvbV9zY3JhdGNoICgpKVxuICAgICAgICAgICAgICAgICBlbHNlIG91dHNpZGUsIE1hcC5yZW1vdmUgbWFwIGtleSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEZpcnN0IHVwZGF0ZSB0aGUga2V5cyBpbiAvYm90aC8gdGhlIG9sZCBhbmQgdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICBsZXQgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb24gPVxuICAgICAgICAgICAgICAgKCogQ3V0b2ZmIHRoZSBiaWcgZGlmZiBjb21wdXRhdGlvbiBpZiB3ZSByZWFjaCBPKHxzdWJtYXB8KSBudW1iZXIgb2ZcbiAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgcmFuZ2UgKilcbiAgICAgICAgICAgICAgIGxldCBvdXRzaWRlX2N1dG9mZiA9IE1hcC5sZW5ndGggb2xkX3JlcyAvIDQgaW5cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OihvdXRzaWRlX2N1dG9mZiwgb2xkX3JlcylcbiAgICAgICAgICAgICAgICAgfmY6YXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgIHw+IHNuZFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgVHVwbGUyLmVxdWFsXG4gICAgICAgICAgICAgICAgICB+ZXExOm1heWJlX2JvdW5kX2VxdWFsXG4gICAgICAgICAgICAgICAgICB+ZXEyOm1heWJlX2JvdW5kX2VxdWFsXG4gICAgICAgICAgICAgICAgICBvbGRfcmFuZ2VcbiAgICAgICAgICAgICAgICAgIHJhbmdlXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogVGhlcmUgYXJlIG5vIGtleXMgdG8gcmVtb3ZlIGFuZCBldmVyeXRoaW5nIGluIHJhbmdlIGlzIHVwZGF0ZWQuICopXG4gICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgKCogUmVtb3ZlIGFueSBrZXlzIHdoaWNoIGFyZSBub3QgaW4gdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlID1cbiAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlXG4gICAgICAgICAgICAgICAgICAgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICB+bG93ZXJfYm91bmQ6bWluXG4gICAgICAgICAgICAgICAgICAgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICgqIEFkZCBpbiBhbnkga2V5cyB3aGljaCBhcmUgaW4gdGhlIG5ldyByYW5nZSBidXQgbm90IHRoZSBvbGQgcmFuZ2UuICopXG4gICAgICAgICAgICAgICBsZXQgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBsZXQgbWFwX2FwcGVuZF9leG4gbG93ZXJfcGFydCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgICAgICAgICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbXBvc3NpYmxlIGNhc2U6IEJVRyBpbiBpbmNyX21hcC5tbCBzdWJyYW5nZVwiXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIGxldCBsb3dlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21pbiAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDooSW5jbCBvbGRfbWluKVxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihFeGNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgIGFuZCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWF4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21heCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6KEluY2wgb2xkX21heCkgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooRXhjbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIG1hcF9hcHBlbmRfZXhuXG4gICAgICAgICAgICAgICAgICAgbG93ZXJfcGFydFxuICAgICAgICAgICAgICAgICAgIChtYXBfYXBwZW5kX2V4biB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIHVwcGVyX3BhcnQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UpKSkpXG4gIDs7XG5cbiAgbGV0IHJla2V5ID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgfmYgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICBtYXBfaW5jclxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIG91dHB1dCAtPiBNYXAuYWRkX2V4biBvdXRwdXQgfmtleTooZiB+a2V5IH5kYXRhKSB+ZGF0YSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIG91dHB1dCAtPiBNYXAucmVtb3ZlIG91dHB1dCAoZiB+a2V5IH5kYXRhKSlcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgb3V0cHV0IC0+XG4gICAgICAgIGxldCBwcmV2X2tleSA9IGYgfmtleSB+ZGF0YTpvbGRfZGF0YSBpblxuICAgICAgICBsZXQgbmV3X2tleSA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICBpZiAoTWFwLmNvbXBhcmF0b3Igb3V0cHV0KS5jb21wYXJlIHByZXZfa2V5IG5ld19rZXkgPSAwXG4gICAgICAgIHRoZW4gTWFwLnNldCBvdXRwdXQgfmtleTpuZXdfa2V5IH5kYXRhOm5ld19kYXRhXG4gICAgICAgIGVsc2UgTWFwLnJlbW92ZSBvdXRwdXQgcHJldl9rZXkgfD4gTWFwLmFkZF9leG4gfmtleTpuZXdfa2V5IH5kYXRhOm5ld19kYXRhKVxuICA7O1xuXG4gIGxldCBpbmRleF9ieWkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvciB+aW5kZXggPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXBfaW5jciAoZnVuIGlubmVyX2NvbXBhcmF0b3IgLT5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+YWRkOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgb3V0ZXJfbWFwIC0+XG4gICAgICAgICAgbWF0Y2ggaW5kZXggfmtleTppbm5lcl9rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBvdXRlcl9tYXBcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfa2V5IC0+XG4gICAgICAgICAgICBNYXAudXBkYXRlIG91dGVyX21hcCBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvblxuICAgICAgICAgICAgICAgICAgaW5uZXJfa2V5XG4gICAgICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICAgICAgICB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT4gTWFwLmFkZF9leG4gaW5uZXJfbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLmNoYW5nZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcIkJVRzogSGl0IHN1cHBvc2VkbHkgaW1wb3NzaWJsZSBjYXNlIGluIEluY3JfbWFwLmluZGV4X2J5XCJcbiAgICAgICAgICAgICAgfCBTb21lIGlubmVyX21hcCAtPlxuICAgICAgICAgICAgICAgIGxldCBpbm5lcl9tYXAgPSBNYXAucmVtb3ZlIGlubmVyX21hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgaW5uZXJfbWFwIHRoZW4gTm9uZSBlbHNlIFNvbWUgaW5uZXJfbWFwKSkpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5ID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yIH5pbmRleCA9XG4gICAgaW5kZXhfYnlpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yIH5pbmRleDooZnVuIH5rZXk6XyB+ZGF0YSAtPiBpbmRleCBkYXRhKVxuICA7O1xuXG5cbiAgKCoqIEZpbmQgdHdvIGtleXMgaW4gbWFwIGJ5IGluZGV4LCBPKG4pLiBXZSB1c2UganVzdCBvbmUgZm9sZCAodHdvIE1hcC5udGggd291bGQgdXNlIHR3bylcbiAgICAgIGFuZCBvcHRpbWl6ZSBmb3Iga2V5cyBjbG9zZSB0byBlaXRoZXIgYmVnaW5uaW5nIG9yIGVuZCBieSB1c2luZyBlaXRoZXIgZm9sZCBvclxuICAgICAgZm9sZF9yaWdodC5cbiAgKilcbiAgbW9kdWxlIEtleV9zdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICdrIHQgPVxuICAgICAgfCBLbm93biBvZiAna1xuICAgICAgfCBLbm93bl9ub25lXG4gICAgICB8IFVua25vd25cblxuICAgIGxldCBpc19rbm93biA9IGZ1bmN0aW9uXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlXG4gICAgOztcblxuICAgIGxldCB0b19vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIHwgS25vd25fbm9uZSAtPiBOb25lXG4gICAgICB8IEtub3duIGsgLT4gU29tZSBrXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciAodHlwZSBrKSB+ZnJvbSB+dG9fIChtYXAgOiAoaywgXywgXykgTWFwLnQpXG4gICAgOiAoayAqIGsgb3B0aW9uKSBvcHRpb25cbiAgICA9XG4gICAgbGV0IG9wZW4gS2V5X3N0YXR1cyBpblxuICAgIGxldCBsZW4gPSBNYXAubGVuZ3RoIG1hcCBpblxuICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA+PSApIGZyb20gbGVuIHRoZW4gS25vd25fbm9uZSBlbHNlIFVua25vd24gaW5cbiAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID49ICkgdG9fIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGZpbmRfa2V5cyBmb2xkIH5zdGFydF9wb3MgfmFkdmFuY2VfcG9zID1cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgbWFwXG4gICAgICAgICAgfmluaXQ6KGJlZ2luX2tleSwgZW5kX2tleSwgc3RhcnRfcG9zKVxuICAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YTpfIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcykgLT5cbiAgICAgICAgICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA9ICkgcG9zIGZyb20gdGhlbiBLbm93biBrZXkgZWxzZSBiZWdpbl9rZXkgaW5cbiAgICAgICAgICAgIGxldCBlbmRfa2V5ID0gaWYgSW50LiggPSApIHBvcyB0b18gdGhlbiBLbm93biBrZXkgZWxzZSBlbmRfa2V5IGluXG4gICAgICAgICAgICBpZiBpc19rbm93biBiZWdpbl9rZXkgJiYgaXNfa25vd24gZW5kX2tleVxuICAgICAgICAgICAgdGhlbiByZXR1cm4gKGJlZ2luX2tleSwgZW5kX2tleSwgcG9zKVxuICAgICAgICAgICAgZWxzZSBiZWdpbl9rZXksIGVuZF9rZXksIGFkdmFuY2VfcG9zIHBvcykpXG4gICAgaW5cbiAgICBsZXQgYmVnaW5fa2V5LCBlbmRfa2V5LCBfID1cbiAgICAgICgqIFNlYXJjaGluZyBmcm9tIGxlZnQgdGFrZXMgTyh0b18pLCBmcm9tIHJpZ2h0IC0gTyhsZW4gLSBmcm9tKSwgc28gc2VsZWN0IHRoZVxuICAgICAgICAgc21hbGxlciBvbmUuICopXG4gICAgICBpZiB0b18gPCBsZW4gLSBmcm9tXG4gICAgICB0aGVuIGZpbmRfa2V5cyBNYXAuZm9sZCB+c3RhcnRfcG9zOjAgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyArIDEpXG4gICAgICBlbHNlIGZpbmRfa2V5cyBNYXAuZm9sZF9yaWdodCB+c3RhcnRfcG9zOihsZW4gLSAxKSB+YWR2YW5jZV9wb3M6KGZ1biBwb3MgLT4gcG9zIC0gMSlcbiAgICBpblxuICAgIE9wdGlvbi5tYXAgKEtleV9zdGF0dXMudG9fb3B0aW9uIGJlZ2luX2tleSkgfmY6KGZ1biBiZWdpbl9rZXkgLT5cbiAgICAgIGJlZ2luX2tleSwgS2V5X3N0YXR1cy50b19vcHRpb24gZW5kX2tleSlcbiAgOztcblxuICBsZXQgbnRoX2Zyb21fZWl0aGVyX3NpZGUgKHR5cGUgaykgbiAobWFwIDogKGssIF8sIF8pIE1hcC50KSA6IGsgb3B0aW9uID1cbiAgICBPcHRpb24ubWFwIH5mOmZzdCAoZmluZF9rZXlfcmFuZ2VfbGluZWFyIH5mcm9tOm4gfnRvXzpuIG1hcClcbiAgOztcblxuICAoKiogRmluZCBrZXkgW2J5XSBwb3NpdGlvbnMgZWFybGllci9sYXRlciBpbiBhIG1hcC4gUmV0dXJucyBub25lIGlmIG91dCBvZiBib3VuZHMuICopXG4gIGxldCByZWMgb2Zmc2V0IChrZXkgOiAnaykgKG1hcCA6ICgnaywgXywgXykgTWFwLnQpIH5ieSA6ICdrIG9wdGlvbiA9XG4gICAgaWYgSW50LiggPSApIGJ5IDBcbiAgICB0aGVuIFNvbWUga2V5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2xvc2VzdF9kaXIsIGFkZCA9XG4gICAgICAgIGlmIEludC4oIDwgKSBieSAwIHRoZW4gYExlc3NfdGhhbiwgMSBlbHNlIGBHcmVhdGVyX3RoYW4sIC0xXG4gICAgICBpblxuICAgICAgbWF0Y2ggTWFwLmNsb3Nlc3Rfa2V5IG1hcCBjbG9zZXN0X2RpciBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBvZmZzZXQga2V5IG1hcCB+Ynk6KGJ5ICsgYWRkKSlcbiAgOztcblxuICAoKiogRmluZCBob3cgd2UgbmVlZCB0byBtb3ZlIFtrZXldIGlmIFtjaGFuZ2VkX2tleV0gY2hhbmdlZCBpbiB0aGUgZ2l2ZW5cbiAgICAgIHdheSAqKVxuICBsZXQgZmluZF9vZmZzZXQgfmNvbXBhcmUgfmtleSB+Y2hhbmdlZF9rZXkgY2hhbmdlID1cbiAgICBpZiBJbnQuKCA8ICkgKGNvbXBhcmUgY2hhbmdlZF9rZXkga2V5KSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgfCBgTGVmdCBfIC0+IDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gLTFcbiAgICAgIHwgXyAtPiAwKVxuICAgIGVsc2UgMFxuICA7O1xuXG4gIGxldCByYW5rXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKG1hcCA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKGtleSA6IChrLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgc2FtZV9rZXkgYSBiID0gY29tcGFyZV9rZXkgYSBiID0gMCBpblxuICAgICAgbGV0IHdoZW5fa2V5X2NoYW5nZWQgfm1hcCB+b2xkX2tleSB+bmV3X2tleSB+b2xkX3JhbmsgPVxuICAgICAgICBpZiBjb21wYXJlX2tleSBuZXdfa2V5IG9sZF9rZXkgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIElmIHRoZSBuZXcga2V5IGlzIHNtYWxsZXIgdGhhbiB0aGUgb2xkIGtleSwgZmluZCB0aGUgc2l6ZSBvZiB0aGUgbWFwIHN1YnJhbmdlXG4gICAgICAgICAgICAgYmV0d2VlbiB0aGVtIGFuZCBzdWJ0cmFjdCBpdCBmcm9tIHRoZSBwcmV2aW91cyByYW5rICopXG4gICAgICAgICAgbGV0IGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCA9IEV4Y2wgbmV3X2tleSwgRXhjbCBvbGRfa2V5IGluXG4gICAgICAgICAgbGV0IHN1YnJhbmdlID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIGluXG4gICAgICAgICAgb2xkX3JhbmsgLSBNYXAubGVuZ3RoIHN1YnJhbmdlIC0gMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogT3RoZXJ3aXNlLCB0aGUgbmV3IGtleSBpcyBsYXJnZXIgdGhhbiB0aGUgb2xkIGtleSwgc28gZmluZCB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgICAgICBtYXAgc3VicmFuZ2UgYmV0d2VlbiB0aGVtIGFuZCBhZGQgaXQgdG8gdGhlIHByZXZpb3VzIHJhbmsgKilcbiAgICAgICAgICBsZXQgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kID0gRXhjbCBvbGRfa2V5LCBFeGNsIG5ld19rZXkgaW5cbiAgICAgICAgICBsZXQgc3VicmFuZ2UgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgaW5cbiAgICAgICAgICBvbGRfcmFuayArIE1hcC5sZW5ndGggc3VicmFuZ2UgKyAxKVxuICAgICAgaW5cbiAgICAgIGxldCB3aGVuX21hcF9jaGFuZ2VkIH5vbGRfbWFwIH5uZXdfbWFwIH5rZXkgfm9sZF9yYW5rID1cbiAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAoKiBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSBkYXRhLCBzbyBvcHRpbWl6ZSB0aGVzZSBjaGVja3MgKilcbiAgICAgICAgICB+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiB0cnVlKVxuICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICBuZXdfbWFwXG4gICAgICAgICAgfmluaXQ6b2xkX3JhbmtcbiAgICAgICAgICB+ZjooZnVuIGFjYyAoZGlmZl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyB3aGVuIGNvbXBhcmVfa2V5IGRpZmZfa2V5IGtleSA8IDAgLT4gYWNjIC0gMVxuICAgICAgICAgICAgfCBgUmlnaHQgXyB3aGVuIGNvbXBhcmVfa2V5IGRpZmZfa2V5IGtleSA8IDAgLT4gYWNjICsgMVxuICAgICAgICAgICAgfCBfIC0+IGFjYylcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHByb2Nlc3MgfihvbGQgOiAoKGssIHYsIF8pIE1hcC50ICogXyAqIF8pIG9wdGlvbikgbmV3X21hcCAobmV3X2tleSA6IGspID1cbiAgICAgICAgaWYgbm90IChNYXAubWVtIG5ld19tYXAgbmV3X2tleSlcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgICAgKCogSWYgdGhlIG1hcCBhbmQga2V5IGFyZSB0aGUgc2FtZSwganVzdCByZXVzZSB0aGUgb2xkIHJhbmsgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIG9sZF9yYW5rKVxuICAgICAgICAgICAgd2hlbiBwaHlzX2VxdWFsIG5ld19tYXAgb2xkX21hcCAmJiBzYW1lX2tleSBvbGRfa2V5IG5ld19rZXkgLT4gb2xkX3JhbmtcbiAgICAgICAgICAoKiBJZiB0aGUgbWFwIGlzIHRoZSBzYW1lIGJ1dCB0aGUga2V5IGNoYW5nZWQgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIHdoZW4gcGh5c19lcXVhbCBuZXdfbWFwIG9sZF9tYXAgLT5cbiAgICAgICAgICAgIFNvbWUgKHdoZW5fa2V5X2NoYW5nZWQgfm1hcDpuZXdfbWFwIH5vbGRfa2V5IH5uZXdfa2V5IH5vbGRfcmFuaylcbiAgICAgICAgICAoKiBJZiB0aGUga2V5IGlzIHRoZSBzYW1lIGJ1dCB0aGUgbWFwIGNoYW5nZWQgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIHdoZW4gc2FtZV9rZXkgbmV3X2tleSBvbGRfa2V5IC0+XG4gICAgICAgICAgICBTb21lICh3aGVuX21hcF9jaGFuZ2VkIH5vbGRfbWFwIH5uZXdfbWFwIH5rZXk6bmV3X2tleSB+b2xkX3JhbmspXG4gICAgICAgICAgKCogSWYgYm90aCB0aGUgbWFwIGFuZCB0aGUga2V5IGNoYW5nZWQsIHRoaXMgY2FuIGJlIHNpbXVsYXRlZCBhcyB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdpbmcgZm9sbG93ZWQgYnkgdGhlIGtleSBjaGFuZ2luZyAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgLT5cbiAgICAgICAgICAgICgqIFdlIGNhbGwgW3Byb2Nlc3NdIHJlY3Vyc2l2ZWx5IGluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZ1xuICAgICAgICAgICAgICAgW3doZW5fbWFwX2NoYW5nZWRdIGZvbGxvd2VkIGJ5IFt3aGVuX2tleV9jaGFuZ2VkXSBzaW5jZSBpdCBtaWdodCBiZSB0aGVcbiAgICAgICAgICAgICAgIGNhc2UgdGhhdCBbb2xkX2tleV0gaXMgaW4gW29sZF9tYXBdIGFuZCBbbmV3X2tleV0gaXMgaW4gW25ld19tYXBdLCBidXRcbiAgICAgICAgICAgICAgIFtvbGRfa2V5XSBpcyBub3QgaW4gW25ld19tYXBdLiAqKVxuICAgICAgICAgICAgbGV0IG9sZF9yYW5rID1cbiAgICAgICAgICAgICAgcHJvY2VzcyB+b2xkOihTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSkgbmV3X21hcCBvbGRfa2V5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcHJvY2VzcyB+b2xkOihTb21lIChuZXdfbWFwLCBvbGRfa2V5LCBvbGRfcmFuaykpIG5ld19tYXAgbmV3X2tleVxuICAgICAgICAgICgqIElmIHRoZSBwcmV2aW91cyBrZXkgd2FzIG5vdCBpbiB0aGUgbWFwIG9yIHRoaXMgaXMgdGhlIGZpcnN0IHN0YWJpbGl6YXRpb24sXG4gICAgICAgICAgICAgY29tcHV0ZSB0aGUgcmFuayBmcm9tIHNjcmF0Y2ggKilcbiAgICAgICAgICB8IFNvbWUgKF8sIF8sIE5vbmUpIHwgTm9uZSAtPiBNYXAucmFuayBuZXdfbWFwIG5ld19rZXkpXG4gICAgICBpblxuICAgICAgd2l0aF9vbGQyIG1hcCBrZXkgfmY6cHJvY2VzcylcbiAgOztcblxuICAoKiogUmFuZ2UgbWFwIGJ5IGluZGljZXMgKilcbiAgbGV0IHN1YnJhbmdlX2J5X3JhbmtcbiAgICAgICAgKHR5cGUgayBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwIDogKChrLCBfLCBfKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKHJhbmdlIDogKGludCBNYXliZV9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgPVxuICAgIGxldCBmaW5kX2tleV9yYW5nZSAocmFuZ2UgOiAoaW50ICogaW50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgOiAoKGsgKiBrIG9wdGlvbikgb3B0aW9uLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICA9XG4gICAgICB3aXRoX29sZDIgbWFwIHJhbmdlIH5mOihmdW4gfm9sZCBtYXAgKGZyb20sIHRvXykgLT5cbiAgICAgICAgKCogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vIGtleXMsIG9ubHkgYmVnaW4ga2V5LCBvciBiZWdpbiBhbmQgZW5kIGtleXMuXG4gICAgICAgICAgIFRoZXNlIGFyZSB0aGUga2V5cyBhdCBbZnJvbV0gYW5kIFt0b19dIHBvc2l0aW9ucyBpbiB0aGUgbWFwLCBvciBOb25lIGlmIHRoZVxuICAgICAgICAgICBpbmRpY2VzIGFyZSB0b28gYmlnLiBBcyBhbHdheXMgWzAgPD0gZnJvbSAmJiBmcm9tIDw9IHRvX10sIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIHBvc3NpYmlsaXR5IG9mIG9ubHkgW3RvX10gYmVpbmcgYSB2YWxpZCBwb3NpdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgaWYgSW50LiggPCApIHRvXyBmcm9tIHx8IEludC4oIDwgKSBmcm9tIDBcbiAgICAgICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkludmFsaWQgaW5kaWNlc1wiIChmcm9tIDogaW50KSAodG9fIDogaW50KV07XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgU29tZSAob2xkX21hcCwgKG9sZF9mcm9tLCBvbGRfdG8pLCBTb21lIChiZWdpbl9rZXksIGVuZF9rZXlfb3B0KSkgLT5cbiAgICAgICAgICBsZXQgZmluZF9vZmZzZXQgPSBmaW5kX29mZnNldCB+Y29tcGFyZTooTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICAgICAgbGV0IHJhbmdlX29mZnNldF9iZWdpbiA9IGZyb20gLSBvbGRfZnJvbSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfZW5kID0gdG9fIC0gb2xkX3RvIGluXG4gICAgICAgICAgbGV0IGFkanVzdF9hbmRfb2Zmc2V0IH5ieSBrZXkgPVxuICAgICAgICAgICAgbGV0IGJ5ID0gYnkgKyBpZiBieSA+PSAwICYmIG5vdCAoTWFwLm1lbSBtYXAga2V5KSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICBvZmZzZXQga2V5IG1hcCB+YnlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUga2V5cyBjaGFuZ2luZyBhbmQgbm90IHRoZSBkYXRhLCBzbyBbZGF0YV9lcXVhbF0gaGVyZVxuICAgICAgICAgICAgIGNhbiBiZSBhbHdheXMgdHJ1ZSAqKVxuICAgICAgICAgIGxldCBkaWZmIH5pbml0IH5mID1cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpIG9sZF9tYXAgbWFwIH5pbml0IH5mXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmVnaW5fa2V5X29wdCwgZW5kX2tleV9vcHQgPVxuICAgICAgICAgICAgbWF0Y2ggZW5kX2tleV9vcHQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGVuZF9rZXkgLT5cbiAgICAgICAgICAgICAgbGV0IG1hcF9vZmZzZXRfYmVnaW4sIG1hcF9vZmZzZXRfZW5kID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OigwLCAwKSB+ZjooZnVuIChvZmZzZXRfYmVnaW4sIG9mZnNldF9lbmQpIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICggb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICwgb2Zmc2V0X2VuZCArIGZpbmRfb2Zmc2V0IH5rZXk6ZW5kX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZSApKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgYWRqdXN0X2FuZF9vZmZzZXQgZW5kX2tleSB+Ynk6KG1hcF9vZmZzZXRfZW5kICsgcmFuZ2Vfb2Zmc2V0X2VuZCkgKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OjAgfmY6KGZ1biBvZmZzZXRfYmVnaW4gKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggYWRqdXN0X2FuZF9vZmZzZXQgYmVnaW5fa2V5IH5ieToobWFwX29mZnNldF9iZWdpbiArIHJhbmdlX29mZnNldF9iZWdpbilcbiAgICAgICAgICAgICAgLCBudGhfZnJvbV9laXRoZXJfc2lkZSB0b18gbWFwIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFzc2VydCAoT3B0aW9uLmZvcl9hbGwgfmY6KE1hcC5tZW0gbWFwKSBiZWdpbl9rZXlfb3B0KTtcbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgZW5kX2tleV9vcHQpO1xuICAgICAgICAgIE9wdGlvbi5tYXAgYmVnaW5fa2V5X29wdCB+ZjooZnVuIGJlZ2luX2tleSAtPiBiZWdpbl9rZXksIGVuZF9rZXlfb3B0KVxuICAgICAgICB8IE5vbmUgfCBTb21lIChfLCBfLCBOb25lKSAtPlxuICAgICAgICAgICgqIE9uIGZpcnN0IHJ1biAod2hlbiB3ZSBoYXZlIHRvKSBvciB3aGVuIGJvdGggdGhlIGtleXMgYXJlIG5vbmUsIHJ1biBPKG4pXG4gICAgICAgICAgICAgc2Nhbi4gVGhpcyBpcyBmaW5lIGZvciBrZXlzLWFyZS1ub25lIGNhc2UgYXMgaXQgaGFwcGVucyB3aGVuIHRoZSBwb3NpdGlvbnNcbiAgICAgICAgICAgICBhcmUgcGFzdCBlbmQgb2YgdGhlIG1hcCwgc28gdGhleSBzaG91bGRuJ3QgYmUgdG9vIGZhciBmcm9tIGVuZCBhZnRlciB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdlcywgYW5kIFtmaW5kX2tleV9yYW5nZV9saW5lYXJdIGlzIGZhc3QgaW4gc3VjaCBjYXNlLiAqKVxuICAgICAgICAgIGZpbmRfa2V5X3JhbmdlX2xpbmVhciBtYXAgfmZyb20gfnRvXylcbiAgICBpblxuICAgICgqIEhhbmRsZSBkaWZmZXJlbnQgTWF5YmVfYm91bmQgY2FzZXMgYW5kIGNhbGwgZmluZF9rZXlfcmFuZ2UgaWYgbmVjZXNzYXJ5LiBJdCdzXG4gICAgICAgbmljZXIgdG8gZG8gdGhpcyBoZXJlIGFzIG9wcG9zZWQgdG8gbWFraW5nIGZpbmRfa2V5X3JhbmdlIGV2ZW4gbW9yZSBjb21wbGljYXRlZCAqKVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgKCA+Pj4gKSBuZXdfIGJvdW5kID0gTWF5YmVfYm91bmQubWFwIH5mOihmdW4gXyAtPiBuZXdfKSBib3VuZCBpblxuICAgIGxldCByZXR1cm4gPSBJbmNyZW1lbnRhbC5yZXR1cm4gKEluY3JlbWVudGFsLnN0YXRlIG1hcCkgaW5cbiAgICBsZXQga2V5X3JhbmdlID1cbiAgICAgIG1hdGNoJXBhdHRlcm5fYmluZCByYW5nZSB3aXRoXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkIC0+XG4gICAgICAgIHJldHVybiAoU29tZSAoTWF5YmVfYm91bmQuVW5ib3VuZGVkLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQpKVxuICAgICAgfCAoICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYilcbiAgICAgICAgLCAoKE1heWJlX2JvdW5kLkluY2wgdSB8IE1heWJlX2JvdW5kLkV4Y2wgdSkgYXMgdWIpICkgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIHUpXG4gICAgICAgIGFuZCBsYiA9IGxiXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIFNvbWUgZW5kX2tleSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgZW5kX2tleSA+Pj4gdWIpXG4gICAgICAgICB8IFNvbWUgKGJlZ2luX2tleSwgTm9uZSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8ICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYiksIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIGwgbClcbiAgICAgICAgYW5kIGxiID0gbGIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIHUgdSlcbiAgICAgICAgYW5kIHViID0gdWIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoVW5ib3VuZGVkLCBrZXkgPj4+IHViKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgaW5cbiAgICBzdWJyYW5nZSA/ZGF0YV9lcXVhbCBtYXAga2V5X3JhbmdlXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZVxuICAgIDogdHlwZSBrMSBrMiB2IGsxX2NtcCBrMl9jbXAgc3RhdGVfd2l0bmVzcy5cbiAgICAgID9kYXRhX2VxdWFsOih2IC0+IHYgLT4gYm9vbClcbiAgICAgIC0+IChrMiwgazJfY21wKSBNYXAuY29tcGFyYXRvclxuICAgICAgLT4gKChrMSwgKGsyLCB2LCBrMl9jbXApIE1hcC50LCBrMV9jbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAtPiAoKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgZnVuID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpIGsyX2NvbXBhcmF0b3IgbSAtPlxuICAgICAgd2l0aF9jb21wYXJhdG9yIG0gKGZ1biBrMV9jb21wYXJhdG9yIC0+XG4gICAgICAgIGxldCB1cGRhdGVcbiAgICAgICAgICA6ICBrZXk6azEgLT4gb2xkX2RhdGE6KGsyLCB2LCBrMl9jbXApIE1hcC50IC0+IG5ld19kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudFxuICAgICAgICAgICAgLT4gKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgPVxuICAgICAgICAgIGZ1biB+a2V5OmsxIH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICBvbGRfZGF0YVxuICAgICAgICAgICAgICBuZXdfZGF0YVxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGsyLCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTWFwLmNoYW5nZSBhY2MgazIgfmY6KGZ1biBhY2NfaW5uZXIgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2NfaW5uZXIgPVxuICAgICAgICAgICAgICAgICAgICBNYXAuY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19pbm5lclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5kZWZhdWx0OihNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjprMV9jb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICAgICAgICBrMVxuICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gXyAtPiB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgYWNjX2lubmVyIHRoZW4gTm9uZSBlbHNlIFNvbWUgYWNjX2lubmVyKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKSB+bmV3X2RhdGE6ZGF0YVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGEgPVxuICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpkYXRhIH5uZXdfZGF0YTooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgIGluXG4gICAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgICAgbVxuICAgICAgICAgIH5pbml0OihNYXAuZW1wdHkgazJfY29tcGFyYXRvcilcbiAgICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgICAgfnVwZGF0ZVxuICAgICAgICAgIH5hZGRcbiAgICAgICAgICB+cmVtb3ZlKVxuICA7O1xuXG4gIGxldCBjb2xsYXBzZV9ieVxuICAgICAgICAodHlwZSBvdXRlcl9rZXkgb3V0ZXJfY21wIGlubmVyX2tleSBpbm5lcl9jbXAgY29tYmluZWRfa2V5IGNvbWJpbmVkX2NtcClcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4obWVyZ2Vfa2V5cyA6IG91dGVyX2tleSAtPiBpbm5lcl9rZXkgLT4gY29tYmluZWRfa2V5KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoY29tYmluZWRfa2V5LCBjb21iaW5lZF9jbXApIE1hcC5jb21wYXJhdG9yKVxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IGNvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+dXBkYXRlOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YTpfIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnNldCBhY2MgfmtleToobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSB+ZGF0YTpuZXdfZGF0YSlcbiAgICAgIH5hZGQ6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgIE1hcC5hZGRfZXhuIGFjYyB+a2V5OihtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpIH5kYXRhKVxuICAgICAgfnJlbW92ZTooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpfIGFjYyAtPlxuICAgICAgICBNYXAucmVtb3ZlIGFjYyAobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSlcbiAgOztcblxuICBsZXQgY29sbGFwc2VcbiAgICAgICAgKHR5cGUgb3V0ZXJfa2V5IG91dGVyX2NtcCBpbm5lcl9rZXkgaW5uZXJfY21wKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfmNvbXBhcmF0b3I6KGlubmVyX2NvbXBhcmF0b3IgOiAoaW5uZXJfa2V5LCBpbm5lcl9jbXApIE1hcC5jb21wYXJhdG9yKVxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBvdXRlcl9jb21wYXJhdG9yIC0+XG4gICAgICBsZXQgbW9kdWxlIENtcCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBvdXRlcl9rZXkgKiBpbm5lcl9rZXlcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAob3V0ZXJfY21wLCBpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9XG4gICAgICAgICAgbGV0IGlubmVyX2NvbXBhcmF0b3IgPVxuICAgICAgICAgICAgbGV0IG1vZHVsZSBNID0gKHZhbCBpbm5lcl9jb21wYXJhdG9yKSBpblxuICAgICAgICAgICAgTS5jb21wYXJhdG9yXG4gICAgICAgICAgaW5cbiAgICAgICAgICBUdXBsZTIuY29tcGFyYXRvciBvdXRlcl9jb21wYXJhdG9yIGlubmVyX2NvbXBhcmF0b3JcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGNvbGxhcHNlX2J5XG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5tZXJnZV9rZXlzOlR1cGxlMi5jcmVhdGVcbiAgICAgICAgfmNvbXBhcmF0b3I6KG1vZHVsZSBDbXApKVxuICA7O1xuXG4gIGxldCBleHBhbmQgP2RhdGFfZXF1YWwgbWFwX2luY3Igfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3IgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfm9sZF9kYXRhOl8gfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBNYXAudXBkYXRlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE1hcC5zaW5nbGV0b24gaW5uZXJfY29tcGFyYXRvciBpbm5lcl9rZXkgbmV3X2RhdGFcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+IE1hcC5zZXQgbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhOm5ld19kYXRhKSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfmRhdGEgYWNjIC0+XG4gICAgICAgIE1hcC51cGRhdGUgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTWFwLnNpbmdsZXRvbiBpbm5lcl9jb21wYXJhdG9yIGlubmVyX2tleSBkYXRhXG4gICAgICAgICAgfCBTb21lIG1hcCAtPiBNYXAuYWRkX2V4biBtYXAgfmtleTppbm5lcl9rZXkgfmRhdGEpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+ZGF0YTpfIGFjYyAtPlxuICAgICAgICBNYXAuY2hhbmdlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+XG4gICAgICAgICAgICBsZXQgbWFwID0gTWFwLnJlbW92ZSBtYXAgaW5uZXJfa2V5IGluXG4gICAgICAgICAgICBPcHRpb24uc29tZV9pZiAobm90IChNYXAuaXNfZW1wdHkgbWFwKSkgbWFwKSlcbiAgOztcblxuICBsZXQgY291bnRpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDowXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBjb3VudCAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50IC0gMSBlbHNlIGNvdW50KVxuICA7O1xuXG4gIGxldCBjb3VudCA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgY291bnRpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIChjb3VudGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYpIH5mOihmdW4gY291bnQgLT4gY291bnQgPD4gMClcbiAgOztcblxuICBsZXQgZXhpc3RzID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBleGlzdHNpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgc3VtXG4gICAgICAgICh0eXBlIHUpXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXBfaW5jciA6ICgoXywgXywgXykgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChtb2R1bGUgR3JvdXAgOiBBYnN0cmFjdF9hbGdlYnJhLkNvbW11dGF0aXZlX2dyb3VwLldpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA9IHUpXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0Okdyb3VwLnplcm9cbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5Ol8gfmRhdGE6diBhY2MgLT4gR3JvdXAuKCArICkgYWNjIChmIHYpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6XyB+ZGF0YTp2IGFjYyAtPiBHcm91cC4oIC0gKSBhY2MgKGYgdikpXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIChjb3VudGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IG5vdCAoZiB+a2V5IH5kYXRhKSkpXG4gICAgICB+ZjooZnVuIGNvdW50IC0+IGNvdW50ID0gMClcbiAgOztcblxuICBsZXQgZm9yX2FsbCA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZm9yX2FsbGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCBmaW5kX2tleV9yYW5nZV9saW5lYXIgPSBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgZW5kXG5cbiAgbW9kdWxlIExvb2t1cCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2LCAndykgZW50cnkgPVxuICAgICAgeyBtdXRhYmxlIHNhdmVkX3ZhbHVlIDogJ3Ygb3B0aW9uXG4gICAgICA7IG5vZGUgOiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudFxuICAgICAgfVxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wLCAndykgdCA9XG4gICAgICB7IG11dGFibGUgc2F2ZWRfbWFwIDogKCdrLCAndiwgJ2NtcCkgTWFwLnRcbiAgICAgICgqIFdlIG1heSBoYXZlIG11bHRpcGxlIGVudHJpZXMgcGVyIGtleSBpZiBub2RlcyBiZWNvbWUgbmVjZXNzYXJ5IGFnYWluIGFmdGVyIGJlaW5nXG4gICAgICAgICByZW1vdmVkLiAqKVxuICAgICAgOyBtdXRhYmxlIGxvb2t1cF9lbnRyaWVzIDogKCdrLCAoJ3YsICd3KSBlbnRyeSBsaXN0LCAnY21wKSBNYXAudFxuICAgICAgOyB1cGRhdGVyX25vZGUgOiAodW5pdCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgIDsgc2NvcGUgOiAndyBJbmNyZW1lbnRhbC5TY29wZS50XG4gICAgICB9XG5cbiAgICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCd2LCAndykgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcywgJ3cpIHRcbiAgICBlbmRcblxuICAgIGxldCBjcmVhdGUgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbCkgaW5wdXRfbWFwIH5jb21wYXJhdG9yID1cbiAgICAgIGxldCByZWMgc2VsZiA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAobGV0IHVwZGF0ZXJfbm9kZSA9XG4gICAgICAgICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgICAgbGV0IChsYXp5IHNlbGYpID0gc2VsZiBpblxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXBcbiAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIH5pbml0OigpXG4gICAgICAgICAgICAgICAgIH5mOihmdW4gKCkgKGtleSwgY2hhbmdlZF92YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZW50cmllcyA9IE1hcC5maW5kX211bHRpIHNlbGYubG9va3VwX2VudHJpZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGVudHJpZXMgfmY6KGZ1biBlbnRyeSAtPlxuICAgICAgICAgICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgIDwtIChtYXRjaCBjaGFuZ2VkX3ZhbHVlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3X3ZhbHVlIHwgYFVuZXF1YWwgKF8sIG5ld192YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIG5ld192YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIGVudHJ5Lm5vZGUpKTtcbiAgICAgICAgICAgICAgIHNlbGYuc2F2ZWRfbWFwIDwtIGlucHV0X21hcClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgICAgIHsgc2F2ZWRfbWFwID0gZW1wdHlfbWFwXG4gICAgICAgICAgIDsgbG9va3VwX2VudHJpZXMgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyB1cGRhdGVyX25vZGVcbiAgICAgICAgICAgOyBzY29wZSA9IEluY3JlbWVudGFsLlNjb3BlLmN1cnJlbnQgKEluY3JlbWVudGFsLnN0YXRlIGlucHV0X21hcCkgKClcbiAgICAgICAgICAgfSlcbiAgICAgIGluXG4gICAgICBMYXp5LmZvcmNlIHNlbGZcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgbGV0IGN1cnJlbnRfZW50cmllcyA9IE1hcC5maW5kX211bHRpIHQubG9va3VwX2VudHJpZXMga2V5IGluXG4gICAgICBsZXQgaXNfbGlua2VkID0gTGlzdC5leGlzdHMgY3VycmVudF9lbnRyaWVzIH5mOihwaHlzX2VxdWFsIGVudHJ5KSBpblxuICAgICAgaWYgQm9vbC5lcXVhbCBpc19saW5rZWQgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaWYgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSBNYXAudXBkYXRlIHQubG9va3VwX2VudHJpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSAob3RoZXJfZW50cnkgOjogXyBhcyBvdGhlcl9lbnRyaWVzKSAtPlxuICAgICAgICAgICAgKCogVXBkYXRlIHRoaXMgZW50cnkncyB2YWx1ZSB0byBiZSBjdXJyZW50LiAqKVxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gb3RoZXJfZW50cnkuc2F2ZWRfdmFsdWU7XG4gICAgICAgICAgICBlbnRyeSA6OiBvdGhlcl9lbnRyaWVzXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBbXSAtPlxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gTWFwLmZpbmQgdC5zYXZlZF9tYXAga2V5O1xuICAgICAgICAgICAgWyBlbnRyeSBdKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfZW50cmllcyA9XG4gICAgICAgICAgTGlzdC5maWx0ZXIgY3VycmVudF9lbnRyaWVzIH5mOihmdW4geCAtPiBub3QgKHBoeXNfZXF1YWwgZW50cnkgeCkpXG4gICAgICAgIGluXG4gICAgICAgIHQubG9va3VwX2VudHJpZXNcbiAgICAgICAgPC0gKGlmIExpc3QuaXNfZW1wdHkgbmV3X2VudHJpZXNcbiAgICAgICAgICAgIHRoZW4gTWFwLnJlbW92ZSB0Lmxvb2t1cF9lbnRyaWVzIGtleVxuICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHQubG9va3VwX2VudHJpZXMgfmtleSB+ZGF0YTpuZXdfZW50cmllcykpXG4gICAgOztcblxuICAgIGxldFtAY29sZF0gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5ID1cbiAgICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIHQudXBkYXRlcl9ub2RlIGluXG4gICAgICBJbmNyZW1lbnRhbC5TY29wZS53aXRoaW4gaW5jcmVtZW50YWxfc3RhdGUgdC5zY29wZSB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxldCByZWMgZW50cnkgPVxuICAgICAgICAgIGxhenlcbiAgICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgPSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXlcbiAgICAgICAgICAgIDsgbm9kZSA9XG4gICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlXG4gICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiAoZm9yY2UgZW50cnkpLnNhdmVkX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkpXG4gICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICAgIGVudHJ5Lm5vZGVcbiAgICAgICAgICAoSW5jcmVtZW50YWwuRXhwZXJ0LkRlcGVuZGVuY3kuY3JlYXRlIHQudXBkYXRlcl9ub2RlKTtcbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCBrZXkgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgd2l0aFxuICAgICAgfCBlbnRyeSA6OiBfIC0+IEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIGVudHJ5Lm5vZGVcbiAgICAgIHwgW10gLT4gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5XG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgPSBzdHJ1Y3RcbiAgICAgIGxldFtAY29sZF0gc2V4cF9vZl9lbnRyeSBzZXhwX29mX3ZhbHVlIGVudHJ5ID1cbiAgICAgICAgbGV0IHsgc2F2ZWRfdmFsdWU7IG5vZGUgfSA9IGVudHJ5IGluXG4gICAgICAgIGxldCBub2RlID0gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggbm9kZSBpblxuICAgICAgICBbJXNleHBcbiAgICAgICAgICB7IHNhdmVkX3ZhbHVlIDogdmFsdWUgb3B0aW9uXG4gICAgICAgICAgOyBub2RlX2luZm8gPSAoSW5jcmVtZW50YWwudXNlcl9pbmZvIG5vZGUgOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfY29uc3QgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKEluY3JlbWVudGFsLmlzX2NvbnN0IG5vZGUpICgpIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19pbnZhbGlkID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX3ZhbGlkIG5vZGUpKSAoKSA6ICh1bml0IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfdW5uZWNlc3NhcnkgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKG5vdCAoSW5jcmVtZW50YWwuaXNfbmVjZXNzYXJ5IG5vZGUpKSAoKSA6ICh1bml0IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgfV1cbiAgICAgIDs7XG5cbiAgICAgIGxldFtAY29sZF0gc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsdWUgdCA9XG4gICAgICAgIGxldCBpbmZvX3Blcl9rZXkgPVxuICAgICAgICAgIE1hcC5tZXJnZSB0LnNhdmVkX21hcCB0Lmxvb2t1cF9lbnRyaWVzIH5mOihmdW4gfmtleSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQgYWN0dWFsX3ZhbHVlLCBlbnRyaWVzID1cbiAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgIHwgYExlZnQgeCAtPiBTb21lIHgsIFtdXG4gICAgICAgICAgICAgIHwgYFJpZ2h0IHkgLT4gTm9uZSwgeVxuICAgICAgICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBTb21lIHgsIHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsga2V5IDoga2V5XG4gICAgICAgICAgICAgICAgOyBhY3R1YWxfdmFsdWUgOiAodmFsdWUgb3B0aW9uW0BzZXhwLm9wdGlvbl0pXG4gICAgICAgICAgICAgICAgOyBlbnRyaWVzIDogdmFsdWUgZW50cnkgbGlzdFxuICAgICAgICAgICAgICAgIH1dKVxuICAgICAgICBpblxuICAgICAgICBTZXhwLkxpc3QgKE1hcC5kYXRhIGluZm9fcGVyX2tleSlcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBzdGF0ZV93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIFNfZ2VuXG4gICAgd2l0aCB0eXBlICdhIEluY3IudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICBhbmQgdHlwZSAnYSBJbmNyLkN1dG9mZi50ID0gJ2EgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAgYW5kIHR5cGUgKCdrLCAndiwgJ2NtcCkgTG9va3VwLnQgPSAoJ2ssICd2LCAnY21wLCBzdGF0ZV93aXRuZXNzKSBHZW5lcmljLkxvb2t1cC50XG5lbmRcblxubW9kdWxlIE1ha2UgKEluY3IgOiBJbmNyZW1lbnRhbC5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgZmxhdHRlbiB4ID0gZmxhdHRlbiBJbmNyLlN0YXRlLnQgeFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExvb2t1cFxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCwgSW5jci5zdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgR2VuZXJpY1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuU19nZW4pID0gc3RydWN0XG4gIG1vZHVsZSBFID0gSW5jci5FeHBlcnRcblxuICAoKiBIYXNodGJsIHN0YXJ0cyBvdXQgYXQgYSByaWRpY3Vsb3VzIHNpemUgb2YgMTI4LiBUaGlzIGlzIGEgbW9yZSByZWFzb25hYmxlIG51bWJlclxuICAgICBvZiBiaW5zIHRvIGhhdmUuICopXG4gIGxldCBoYXNodGJsX3NpemUgPSAxMFxuXG4gICgqKiBbc2V0dXBfZ2VuZXJhdG9yXSBzZXRzIHVwIHRoZSBzdGFnZWQgY29udmVyc2lvbi5cblxuICAgICAgW2hhc2hhYmxlXSBpcyB1c2VkIHRvIGJ1aWxkIGEgdGFibGUgb2YgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcy4gV2UgZHJvcCB1bm5lY2Vzc2FyeVxuICAgICAgZGVwZW5kZW5jaWVzIHRvIGFsbG93IHRoZW0gdG8gYmUgY29sbGVjdGVkLlxuXG4gICAgICBbY29tcHV0ZV9vdXRwdXQga2V5XSByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgb3V0cHV0IG5vZGUgY29ycmVzcG9uZGluZyB0byBba2V5XS5cbiAgICAgIFtjb21wdXRlX291dHB1dF0gaXMgY2xvc2VkIG92ZXIgdGhlIG11dGFibGUgc3RhdGUgZGV0ZXJtaW5pbmcgdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIHRoZSBzZWxlY3RvcidzIGlucHV0LlxuXG4gICAgICBbbWFrZV9pbnB1dF9ub2RlXSBtYWtlcyBzdXJlIHRoYXQgd2hlbiB0aGUgbXV0YWJsZSBzdGF0ZSBpbnNpZGUgW2NvbXB1dGVfb3V0cHV0XSBpc1xuICAgICAgdXBkYXRlZCwgdGhlIGNvcnJlc3BvbmRpbmcgbm9kZXMgaW4gdGhlIFtuZWNlc3NhcnlfZGVwZW5kZW5jaWVzXSB0YWJsZSBhcmUgbWFkZVxuICAgICAgc3RhbGUuICAqKVxuICBsZXQgc2V0dXBfZ2VuZXJhdG9yXG4gICAgICAgIChoYXNoYWJsZSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KVxuICAgICAgICB+KGNvbXB1dGVfb3V0cHV0IDogJ2EgLT4gJ2IpXG4gICAgICAgIH4obWFrZV9pbnB1dF9ub2RlIDogbWFrZV9rZXlfc3RhbGU6KCdhIC0+IHVuaXQpIC0+IHVuaXQgSW5jci50KVxuICAgIDogKCdhIC0+ICdiIEluY3IudCkgU3RhZ2VkLnRcbiAgICA9XG4gICAgbGV0IG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IChpbnB1dF9ub2RlIDogdW5pdCBJbmNyLnQpID1cbiAgICAgIGxldCBtYWtlX2tleV9zdGFsZSBrZXkgPVxuICAgICAgICBIYXNodGJsLmZpbmQgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyBrZXlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdXG4gICAgICAgIHw+IExpc3QuaXRlciB+ZjpFLk5vZGUubWFrZV9zdGFsZVxuICAgICAgaW5cbiAgICAgIG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGVcbiAgICBpblxuICAgICgqIFNldCB0aGUgY3V0b2ZmIHNvIHRoYXQgd2UgbmV2ZXIgcGFzcyBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHVwZGF0ZSB0byB0aGUgbm9kZXMuIFdlXG4gICAgICAgd2FudCBldmVyeXRoaW5nIHRvIGdvIHRocm91Z2ggW21ha2Vfa2V5X3N0YWxlXSAqKVxuICAgIEluY3Iuc2V0X2N1dG9mZiBpbnB1dF9ub2RlIEluY3IuQ3V0b2ZmLmFsd2F5cztcbiAgICBzdGFnZSAoZnVuIGtleSAtPlxuICAgICAgbGV0IGlucHV0X2RlcCA9IEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfbm9kZSBpblxuICAgICAgbGV0IHJlYyBvdXRwdXRfbm9kZSA9IGxhenkgKFxuICAgICAgICBFLk5vZGUuY3JlYXRlXG4gICAgICAgICAgKGZ1biAoKSAtPiBjb21wdXRlX291dHB1dCBrZXkpXG4gICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihmdW4gfmlzX25vd19vYnNlcnZhYmxlIC0+XG4gICAgICAgICAgICBpZiBpc19ub3dfb2JzZXJ2YWJsZSB0aGVuXG4gICAgICAgICAgICAgIEhhc2h0YmwuYWRkX211bHRpIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTooZm9yY2Ugb3V0cHV0X25vZGUpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEhhc2h0YmwuY2hhbmdlIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIGwgfmY6KEZuLm5vbiAocGh5c19lcXVhbCAoZm9yY2Ugb3V0cHV0X25vZGUpKSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGwnIC0+IFNvbWUgbCdcbiAgICAgICAgICAgICAgKSkpXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dF9ub2RlID0gZm9yY2Ugb3V0cHV0X25vZGUgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBvdXRwdXRfbm9kZSBpbnB1dF9kZXA7XG4gICAgICBFLk5vZGUud2F0Y2ggb3V0cHV0X25vZGVcbiAgICApXG5cbiAgKCoqIFRoaXMgY3JlYXRlcyBhIHVuaXQgaW5jcmVtZW50YWwgdGhhdCBmaXJlcyB3aGVuZXZlciB0aGUgaW5wdXQgaW5jcmVtZW50YWxcbiAgICAgIGZpcmVzLiBXaGVuIHRoYXQgb2NjdXJzLCBpdCB1cGRhdGVzIFtzZWxlY3RlZF0gdG8gbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIFtpbnB1dF0sIGFuZCBjYWxscyBbbWFrZV9rZXlfc3RhbGVdIGZvciBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZSBvZiB0aGVcbiAgICAgIGluY3JlbWVudGFsLiAqKVxuICBsZXQgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlID1cbiAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgT3B0aW9uLml0ZXIgaW5wIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBPcHRpb24uaXRlciAhc2VsZWN0ZWQgfmY6bWFrZV9zdGFsZTtcbiAgICAgIHNlbGVjdGVkIDo9IGlucFxuICAgIClcblxuICBsZXQgc2VsZWN0X29uZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgKGlucHV0IDogYSBvcHRpb24gSW5jci50KVxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGtleScgLT4gSC5jb21wYXJlIGtleSBrZXknID0gMFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlOm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgSC5oYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3Rfb25lIGggaW5wdXQgPVxuICAgIHNlbGVjdF9vbmUnIGggKEluY3IubWFwIH5mOk9wdGlvbi5zb21lIGlucHV0KVxuXG4gIGxldCBzZWxlY3Rfb25lX3ZhbHVlJ1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkZWZhdWx0XG4gICAgICB8IFNvbWUgKGtleScsIGRhdGEpIC0+IGlmIEguY29tcGFyZSBrZXkga2V5JyA9IDAgdGhlbiBkYXRhIGVsc2UgZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+c2VsZWN0ZWQgfmlucHV0IH5tYWtlX3N0YWxlOihmdW4gKGtleSwgXykgLT4gbWFrZV9rZXlfc3RhbGUga2V5KVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSBoIH5kZWZhdWx0IGlucHV0ID1cbiAgICBzZWxlY3Rfb25lX3ZhbHVlJyBoIH5kZWZhdWx0IChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X21hbnlfdmFsdWVzXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIH5kZWZhdWx0XG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBIYXNodGJsLmZpbmQgc2VsZWN0ZWQga2V5IHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgSGFzaHRibC5pdGVyX2tleXMgc2VsZWN0ZWQgfmY6bWFrZV9rZXlfc3RhbGU7XG4gICAgICAgIEhhc2h0YmwuY2xlYXIgc2VsZWN0ZWQ7XG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgICBIYXNodGJsLnNldCBzZWxlY3RlZCB+a2V5IH5kYXRhXG4gICAgICAgICkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X21hbnlcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IGhhc2hhYmxlID0gSC5oYXNoYWJsZSBpblxuICAgIGxldCBzZWxlY3RlZCA9IEhhc2hfc2V0LlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9IEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgICBsZXQgb2xkX3NldCA9IEhhc2hfc2V0LmNvcHkgc2VsZWN0ZWQgaW5cbiAgICAgICAgSGFzaF9zZXQuY2xlYXIgc2VsZWN0ZWQ7XG5cbiAgICAgICAgTGlzdC5pdGVyIGlucCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIG9sZF9zZXQga2V5KSB0aGVuXG4gICAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaF9zZXQuYWRkIHNlbGVjdGVkIGtleVxuICAgICAgICApO1xuXG4gICAgICAgIEhhc2hfc2V0Lml0ZXIgb2xkX3NldCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlbGVjdGVkIGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5lbmRcblxuIiwiZXh0ZXJuYWwganNfcHJvZl9tYXJrIDogc3RyaW5nIC0+IHVuaXQgPSBcImpzX3Byb2ZfbWFya1wiXG5leHRlcm5hbCBqc19wcm9mX21lYXN1cmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21lYXN1cmVcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tYXJrcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tYXJrc1wiXG5leHRlcm5hbCBqc19wcm9mX2NsZWFyX21lYXN1cmVzIDogdW5pdCAtPiB1bml0ID0gXCJqc19wcm9mX2NsZWFyX21lYXN1cmVzXCJcblxubGV0IG1hcmsgbmFtZSA9IGpzX3Byb2ZfbWFyayBuYW1lXG5sZXQgbWVhc3VyZSB+bmFtZSB+c3RhcnQgfmVuZF8gPSBqc19wcm9mX21lYXN1cmUgbmFtZSBzdGFydCBlbmRfXG5cbmxldCByZWNvcmQgbmFtZSB+ZiA9XG4gIGxldCBiZWZvcmVfbmFtZSA9IG5hbWUgXiBcIl9iZWZvcmVcIiBpblxuICBsZXQgYWZ0ZXJfbmFtZSA9IG5hbWUgXiBcIl9hZnRlclwiIGluXG4gIGxldCAoKSA9IG1hcmsgYmVmb3JlX25hbWUgaW5cbiAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgbGV0ICgpID0gbWFyayBhZnRlcl9uYW1lIGluXG4gIG1lYXN1cmUgfm5hbWUgfnN0YXJ0OmJlZm9yZV9uYW1lIH5lbmRfOmFmdGVyX25hbWU7XG4gIHJlc1xuOztcblxubGV0IGNsZWFyX21hcmtzICgpID0ganNfcHJvZl9jbGVhcl9tYXJrcyAoKVxubGV0IGNsZWFyX21lYXN1cmVzICgpID0ganNfcHJvZl9jbGVhcl9tZWFzdXJlcyAoKVxuXG5tb2R1bGUgTWFudWFsID0gc3RydWN0XG4gIGxldCBtYXJrID0gbWFya1xuICBsZXQgbWVhc3VyZSA9IG1lYXN1cmVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5cbnR5cGUgdCA9XG4gIHsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgOyBtaW1ldHlwZSA6IHN0cmluZ1xuICA7IGNvbnRlbnRzIDogc3RyaW5nXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxkb3dubG9hZGVyOiAlcz5cIiB0LmZpbGVuYW1lKVxuXG5sZXQgdHJpZ2dlciB7IGZpbGVuYW1lOyBtaW1ldHlwZTsgY29udGVudHMgfSA9XG4gIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gIGlmIGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RcbiAgdGhlblxuICAgIHByaW50X3NcbiAgICAgIFslbWVzc2FnZSBcIkRvd25sb2FkIHRyaWdnZXJlZFwiIChmaWxlbmFtZSA6IHN0cmluZykgKG1pbWV0eXBlIDogc3RyaW5nKSBjb250ZW50c11cbiAgZWxzZSAoXG4gICAgKCogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE5MzI4ODkxLzU1ODU5MiAqKVxuICAgIGxldCBhID0gRG9tX2h0bWwuY3JlYXRlQSBEb21faHRtbC5kb2N1bWVudCBpblxuICAgIGxldCBjb250ZW50c19iaWdzdHIgPVxuICAgICAgVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIChCaWdzdHJpbmcub2Zfc3RyaW5nIGNvbnRlbnRzKVxuICAgIGluXG4gICAgbGV0IGJsb2IgPVxuICAgICAgKCogRG9uJ3QgdXNlIFtibG9iX2Zyb21fc3RyaW5nXS4gVGhhdCBoYXMgYW4gYXR0cmFjdGl2ZSB0eXBlIGJ1dCB3b3JrcyBieSBmaXJzdFxuICAgICAgICAgY29udmVydGluZyBvdXIgT0NhbWwgc3RyaW5nIHRvIGEgSmF2YXNjcmlwdCBzdHJpbmcsIHdoaWNoIGNvbnZlcnRzIHRvXG4gICAgICAgICBVVEYtMTYuIElmIHRoZSBzdHJpbmcgY29udGFpbnMgcmFuZG9tIGJpbmFyeSBkYXRhIHRoYXQgd2lsbCBkaXN0b3J0IGl0LiAqKVxuICAgICAgRmlsZS5ibG9iX2Zyb21fYW55IFsgYGFycmF5QnVmZmVyIGNvbnRlbnRzX2JpZ3N0ciBdIH5jb250ZW50VHlwZTptaW1ldHlwZVxuICAgIGluXG4gICAgbGV0IHVybCA9IERvbV9odG1sLndpbmRvdyMjLl9VUkwjI2NyZWF0ZU9iamVjdFVSTCBibG9iIGluXG4gICAgYSMjc2V0QXR0cmlidXRlIChKcy5zdHJpbmcgXCJocmVmXCIpIHVybDtcbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImRvd25sb2FkXCIpIChKcy5zdHJpbmcgZmlsZW5hbWUpO1xuICAgIGEjI2NsaWNrO1xuICAgIERvbV9odG1sLndpbmRvdyMjLl9VUkwjI3Jldm9rZU9iamVjdFVSTCB1cmwpXG47O1xuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyhlbmFibGVkID0gdHJ1ZSlcbiAgICAgICAgPyhvbl9jbGljayA9IGZ1biBfIC0+IFZkb20uRWZmZWN0Lklnbm9yZSlcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICB+Z2V0X2Rvd25sb2FkXG4gICAgICAgIH5idXR0b25fdGV4dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgb3BlbiBWZG9tIGluXG4gICAgbGV0IHRyaWdnZXJfY3N2X2Rvd25sb2FkIGV2ID1cbiAgICAgIHRyaWdnZXIgKGdldF9kb3dubG9hZCAoKSk7XG4gICAgICBvbl9jbGljayBldlxuICAgIGluXG4gICAgbGV0IGVuYWJsZWRfZGlzYWJsZWQgPVxuICAgICAgaWYgZW5hYmxlZCB0aGVuIFtdIGVsc2UgWyBBdHRyLmRpc2FibGVkOyBBdHRyLnN0eWxlIChDc3NfZ2VuLmNvbG9yIChgTmFtZSBcImdyZXlcIikpIF1cbiAgICBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIGV4dHJhX2F0dHJzOyBlbmFibGVkX2Rpc2FibGVkOyBbIEF0dHIub25fY2xpY2sgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgXSBdXG4gICAgICB8PiBMaXN0LmNvbmNhdFxuICAgIGluXG4gICAgTm9kZS5idXR0b24gfmF0dHI6KEF0dHIubWFueV93aXRob3V0X21lcmdlIGF0dHJzKSBbIE5vZGUudGV4dCBidXR0b25fdGV4dCBdXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBJbmNyID0gSW5jcmVtZW50YWwuTWFrZSAoKVxuXG4oKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGNsb2NrIGZvciBydW5uaW5nIGNsaWVudHMsIGJ1dCBib25zYWkgdGVzdHMgaGF2ZSB0aGVpclxuICAgb3duIHNlcGFyYXRlIGNsb2NrcyAqKVxubGV0IGNsb2NrID0gSW5jci5DbG9jay5jcmVhdGUgfnN0YXJ0OihUaW1lX25zLm5vdyAoKSkgKClcblxuaW5jbHVkZSBJbmNyXG5tb2R1bGUgTWFwID0gSW5jcl9tYXAuTWFrZSAoSW5jcilcbm1vZHVsZSBTZWxlY3QgPSBJbmNyX3NlbGVjdC5NYWtlIChJbmNyKVxuIiwib3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBDb3JlXG5cbnR5cGUgKCdhY3Rpb24sICdtb2RlbCwgJ3N0YXRlLCAnZXh0cmEpIHdpdGhfZXh0cmEgPVxuICB7IGFwcGx5X2FjdGlvbiA6ICdhY3Rpb24gLT4gJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgOyBvbl9kaXNwbGF5IDogJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiB1bml0XG4gIDsgZXh0cmEgOiAnZXh0cmFcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG50eXBlICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCkgdCA9ICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCwgdW5pdCkgd2l0aF9leHRyYVxuXG5sZXQgY3JlYXRlX3dpdGhfZXh0cmEgP2FwcGx5X2FjdGlvbiA/dXBkYXRlX3Zpc2liaWxpdHkgP29uX2Rpc3BsYXkgfmV4dHJhIG1vZGVsIHZpZXcgPVxuICBsZXQgYXBwbHlfYWN0aW9uID1cbiAgICBPcHRpb24udmFsdWUgYXBwbHlfYWN0aW9uIH5kZWZhdWx0OihmdW4gXyBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ID1cbiAgICBPcHRpb24udmFsdWUgdXBkYXRlX3Zpc2liaWxpdHkgfmRlZmF1bHQ6KGZ1biB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gbW9kZWwpXG4gIGluXG4gIGxldCBvbl9kaXNwbGF5ID0gT3B0aW9uLnZhbHVlIG9uX2Rpc3BsYXkgfmRlZmF1bHQ6KGZ1biBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiAoKSkgaW5cbiAgeyBhcHBseV9hY3Rpb247IHVwZGF0ZV92aXNpYmlsaXR5OyBvbl9kaXNwbGF5OyBleHRyYTsgdmlldyB9XG47O1xuXG5sZXQgY3JlYXRlID0gY3JlYXRlX3dpdGhfZXh0cmEgfmV4dHJhOigpXG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG4oKiogQ29tbW9uIG1vZHVsZSB0eXBlcyAqKVxubW9kdWxlIHR5cGUgTW9kZWwgPSBzaWdcbiAgdHlwZSB0XG5cblxuICAoKiogQSBmdW5jdGlvbiBmb3IgdGVzdGluZyB3aGV0aGVyIHRoZSBtb2RlbCBoYXMgY2hhbmdlZCBlbm91Z2ggdG8gcmVxdWlyZSByZWZpcmluZ1xuICAgICAgdGhlIGluY3JlbWVudGFsIGdyYXBoLlxuXG4gICAgICBJdCdzIGJlc3QgaWYgdGhlIHZhbHVlcyBpbiB0aGUgbW9kZWwgc3VwcG9ydCBhIHNlbWFudGljYWxseSByZWFzb25hYmxlIGN1dG9mZlxuICAgICAgZnVuY3Rpb24gd2hpY2ggbGV0cyB5b3UgYXZvaWQgaW5maW5pdGUgcmVjb21wdXRhdGlvbiBsb29wcyB0aGF0IGNhbiBvdGhlcndpc2UgYmVcbiAgICAgIHRyaWdnZXJlZCBieSB0aGUgdmlzaWJpbGl0eSBjaGVja3MuIEZvciB0aGlzIHJlYXNvbiwgaXQncyB0eXBpY2FsbHkgYSBnb29kIGlkZWEgdG9cbiAgICAgIGF2b2lkIGhhdmluZyBzaW1wbGUgY2xvc3VyZXMgc3RvcmVkIGluIHRoZSBtb2RlbC5cblxuICAgICAgVGhhdCBzYWlkLCBpdCBkb2VzIHdvcmsgaWYgeW91IHB1dCBwaHlzX2VxdWFsIGluIGZvciB0aGUgY3V0b2ZmLiAqKVxuICB2YWwgY3V0b2ZmIDogdCAtPiB0IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY3Rpb24gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgU3RhdGUgPSBzaWdcbiAgKCoqIFJlcHJlc2VudHMgdGhlIGltcGVyYXRpdmUgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIGFuIGFwcGxpY2F0aW9uLCB0eXBpY2FsbHkgdXNlZCBmb3JcbiAgICAgIGhvdXNpbmcgdGhpbmdzIGxpa2UgY29tbXVuaWNhdGlvbiBBc3luYy1SUEMgY29ubmVjdGlvbnMuICopXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIE1vZGVsIDogTW9kZWxcbiAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICgqKiBbb25fc3RhcnR1cF0gaXMgY2FsbGVkIG9uY2UsIHJpZ2h0IGFmdGVyIHRoZSBpbml0aWFsIERPTSBpcyBzZXQgdG8gdGhlIHZpZXcgdGhhdFxuICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGluaXRpYWwgc3RhdGUuIFRoaXMgaXMgdXNlZnVsIGZvciBkb2luZyB0aGluZ3MgbGlrZSBzdGFydGluZyB1cFxuICAgICAgYXN5bmMgcHJvY2Vzc2VzLiAgTm90ZSB0aGF0IHRoaXMgcGFydCBvZiB0aGUgY29tcHV0YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBhbnlcbiAgICAgIGluY3JlbWVudGFsaXR5LCBzaW5jZSBpdCdzIG9ubHkgcnVuIG9uY2UuICopXG4gIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICgqKiBbY3JlYXRlXSBpcyBhIGZ1bmN0aW9uIHRoYXQgaW5jcmVtZW50YWxseSBjb25zdHJ1Y3RzIGEgeyFDb21wb25lbnR9LiBOb3RlIHRoYXQgYVxuICAgICAgW0NvbXBvbmVudF0gc3VwcG9ydHMgZnVuY3Rpb25zIGxpa2UgW2FwcGx5X2FjdGlvbl0sIHdoaWNoIHJldHVybiBhIG5ldyBbTW9kZWwudF0sXG4gICAgICB3aXRob3V0IHRha2luZyBhIG1vZGVsIGFzIGFuIGV4cGxpY2l0IGlucHV0LiAgVGhlIGludGVudCBpcyBmb3IgW2FwcGx5X2FjdGlvbl0gdG9cbiAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBjdXJyZW50IG1vZGVsIHZpYSBpdHMgY29uc3RydWN0aW9uXG5cbiAgICAgIEhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIG1pZ2h0IGxvb2sgaW4gcHJhY3RpY2UuXG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHsgY291bnRlciA6IGludCB9IFtAQGRlcml2aW5nIGZpZWxkcywgY29tcGFyZV1cblxuICAgICAgICAgIGxldCBjdXRvZmYgdDEgdDIgPSBjb21wYXJlIHQxIHQyID0gMFxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB1bml0XG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBJbmNyZW1lbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGxldCBzaG91bGRfbG9nIF8gPSBmYWxzZVxuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgaW5pdGlhbF9tb2RlbCA9IHsgTW9kZWwuY291bnRlciA9IDAgfVxuXG4gICAgICAgIGxldCBvbl9zdGFydHVwIH5zY2hlZHVsZV9hY3Rpb25zIF9tb2RlbCA9XG4gICAgICAgICAgZXZlcnkgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgMS4pIChmdW4gKCkgLT5cbiAgICAgICAgICAgIHNjaGVkdWxlX2FjdGlvbnMgWyBBY3Rpb24uSW5jcmVtZW50IF0pO1xuICAgICAgICAgIERlZmVycmVkLnVuaXRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6XyB+aW5qZWN0Ol8gPVxuICAgICAgICAgIGxldCBvcGVuIEluY3IuTGV0X3N5bnRheCBpblxuICAgICAgICAgIGxldCVtYXAgYXBwbHlfYWN0aW9uID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICBmdW4gKEluY3JlbWVudCA6IEFjdGlvbi50KSBfIH5zY2hlZHVsZV9hY3Rpb25zOl8gLT5cbiAgICAgICAgICAgICAgeyBNb2RlbC5jb3VudGVyID0gY291bnRlciArIDEgfVxuICAgICAgICAgIGFuZCB2aWV3ID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9XG4gICAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICAgIFZkb20uTm9kZS5kaXYgW10gWyBWZG9tLk5vZGUudGV4dCAoSW50LnRvX3N0cmluZyBjb3VudGVyKSBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVmRvbS5Ob2RlLmJvZHkgW10gWyBjb3VudGVyIF1cbiAgICAgICAgICBhbmQgbW9kZWwgPSBtb2RlbCBpblxuICAgICAgICAgICgqIE5vdGUgdGhhdCB3ZSBkb24ndCBpbmNsdWRlIFtvbl9kaXNwbGF5XSBvciBbdXBkYXRlX3Zpc2liaWxpdHldLCBzaW5jZVxuICAgICAgICAgICAgIHRoZXNlIGFyZSBvcHRpb25hbCBhcmd1bWVudHMgKilcbiAgICAgICAgICBDb21wb25lbnQuY3JlYXRlIH5hcHBseV9hY3Rpb24gbW9kZWwgdmlld1xuICAgICAgICA7OyBdfVxuXG4gICAgICBUaGUgZnVsbCBjb2RlIGZvciB0aGlzIGV4YW1wbGUgY2FuIGJlIGZvdW5kIGluIGV4YW1wbGVzL2NvdW50ZXIuXG4gICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBNb2RlbC50IEluY3IudFxuICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICgqKiBbb2xkX21vZGVsXSBjb250YWlucyB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgbW9kZWwgKilcbiAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAoKiogW2luamVjdF0gZ2l2ZXMgeW91IHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBldmVudCBoYW5kbGVycyBpbiB0aGUgdmlydHVhbCBET00uIEluXG4gICAgICAgIHlvdXIgZXZlbnQgaGFuZGxlciwgY2FsbCB0aGlzIGZ1bmN0aW9uIG9uIHRoZSBhY3Rpb24geW91IHdvdWxkIGxpa2UgdG9cbiAgICAgICAgc2NoZWR1bGUuIFZpcnR1YWwgRE9NIHdpbGwgYXV0b21hdGljYWxseSBkZWxlZ2F0ZSB0aGF0IGFjdGlvbiBiYWNrIHRvIHRoZVxuICAgICAgICBbU3RhcnRfYXBwXSBtYWluIGxvb3AuICopXG4gICAgLT4gKEFjdGlvbi50LCBNb2RlbC50LCBTdGF0ZS50KSBDb21wb25lbnQudCBJbmNyLnRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICB0eXBlICgnc3RhdGUsICdtb2RlbCwgJ2FjdGlvbikgc25hcHNob3QgPVxuICAgIHsgdmlldyA6IFZkb20uTm9kZS50XG4gICAgOyBhcHBseV9hY3Rpb24gOlxuICAgICAgICAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gJ21vZGVsIC0+ICdhY3Rpb24gLT4gJ21vZGVsXG4gICAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6ICdtb2RlbCAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWxcbiAgICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gdW5pdFxuICAgIH1cblxuICBtb2R1bGUgdHlwZSBTX2Zvcl9ib25zYWkgPSBzaWdcbiAgICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICAgIG1vZHVsZSBBY3Rpb24gOiBBY3Rpb25cbiAgICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICAgdmFsIGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIDogQWN0aW9uLnQgLT4gYm9vbFxuICAgIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgTW9kZWwudCBJbmNyLnRcbiAgICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICAgLT4gaW5qZWN0OihBY3Rpb24udCAtPiB1bml0IFZkb20uRWZmZWN0LnQpXG4gICAgICAtPiAoU3RhdGUudCwgTW9kZWwudCwgQWN0aW9uLnQpIHNuYXBzaG90IEluY3IudFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgUmVjdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgdG9wIDogJ2FcbiAgICA7IGxlZnQgOiAnYVxuICAgIDsgYm90dG9tIDogJ2FcbiAgICA7IHJpZ2h0IDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgeyB0b3AgPSBmIHQudG9wOyBsZWZ0ID0gZiB0LmxlZnQ7IGJvdHRvbSA9IGYgdC5ib3R0b207IHJpZ2h0ID0gZiB0LnJpZ2h0IH1cbiAgOztcblxuICBsZXQgaW50X2hlaWdodCB0ID0gdC5ib3R0b20gLSB0LnRvcFxuICBsZXQgaW50X3dpZHRoIHQgPSB0LnJpZ2h0IC0gdC5sZWZ0XG4gIGxldCBmbG9hdF9oZWlnaHQgdCA9IHQuYm90dG9tIC0uIHQudG9wXG4gIGxldCBmbG9hdF93aWR0aCB0ID0gdC5yaWdodCAtLiB0LmxlZnRcbmVuZFxuXG5sZXQgcm91bmRfZmxvYXRfcmVjdCA/KHJvdW5kID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuKSA9IFJlY3QubWFwIH5mOnJvdW5kXG5cbnR5cGUgcm93c19vcl9jb2x1bW5zID1cbiAgfCBSb3dzXG4gIHwgQ29sdW1uc1xuW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCB2YXJpYW50cywgY29tcGFyZV1cblxubGV0IGlubmVySGVpZ2h0ICgpID1cbiAgRG9tX2h0bWwud2luZG93IyMuaW5uZXJIZWlnaHRcbjs7XG5cbmxldCBpbm5lcldpZHRoICgpID1cbiAgRG9tX2h0bWwud2luZG93IyMuaW5uZXJXaWR0aFxuOztcblxubGV0IGVsZW1lbnRfaXNfaW5fdmlld3BvcnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICBsZXQgcmVjdCA9IGVsdCMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIEZsb2F0LiggPj0gKSByZWN0IyMudG9wIDAuXG4gICYmIEZsb2F0LiggPj0gKSByZWN0IyMubGVmdCAwLlxuICAmJiBGbG9hdC4oIDw9ICkgcmVjdCMjLmJvdHRvbSAoRmxvYXQub2ZfaW50IChpbm5lckhlaWdodCAoKSkpXG4gICYmIEZsb2F0LiggPD0gKSByZWN0IyMucmlnaHQgKEZsb2F0Lm9mX2ludCAoaW5uZXJXaWR0aCAoKSkpXG47O1xuXG4oKiogU2Nyb2xscyB0byB0aGUgaXRlbSBtYXJrZWQgYXMgXCJrZWVwLWluLXZpZXdcIiAqKVxubGV0IHNjcm9sbCA/KGlkID0gXCJrZWVwLWluLXZpZXdcIikgKCkgPVxuICBtYXRjaCBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9vcHQgaWQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGVsdCAtPiBpZiBub3QgKGVsZW1lbnRfaXNfaW5fdmlld3BvcnQgZWx0KSB0aGVuIGVsdCMjc2Nyb2xsSW50b1ZpZXcgSnMuX3RydWVcbjs7XG5cbigqIE5vdCB5ZXQgc3VwcG9ydGVkIG9uIENocm9tZS4gIE1heWJlIHdlIHNob3VsZCB1c2UgalF1ZXJ5P1xuICAge1tcbiAgICAgbGV0IHNjcm9sbF9pbnRvX3ZpZXcgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiB1bml0ID1cbiAgICAgICBlbHQjI3Njcm9sbEludG9WaWV3IChvYmplY3QlanNcbiAgICAgICAgIHZhbCBibG9jayA9IEpzLnN0cmluZyBcInN0YXJ0XCJcbiAgICAgICAgIHZhbCBiZWhhdmlvciA9IEpzLnN0cmluZyBcInNtb290aFwiXG4gICAgICAgZW5kKVxuICAgXX1cbiopXG4oKiBbdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IGVsXSBnZXRzIGJvdW5kaW5nIHJlY3Qgb2YgW2VsdF0uIFRoZSBib3VuZGluZyByZWN0IGlzXG4gICByZWxhdGl2ZSB0byB0aGUgdmlldyBwb3J0ICopXG5sZXQgdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogZmxvYXQgUmVjdC50ID1cbiAgbGV0IHJlY3QgPSBlbHQjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICB7IFJlY3QudG9wID0gcmVjdCMjLnRvcFxuICA7IGxlZnQgPSByZWN0IyMubGVmdFxuICA7IGJvdHRvbSA9IHJlY3QjIy5ib3R0b21cbiAgOyByaWdodCA9IHJlY3QjIy5yaWdodFxuICB9XG47O1xuXG5sZXQgdmlld3BvcnRfcmVjdCAoKSA9XG4gIHsgUmVjdC50b3AgPSAwOyBsZWZ0ID0gMDsgYm90dG9tID0gaW5uZXJIZWlnaHQgKCk7IHJpZ2h0ID0gaW5uZXJXaWR0aCAoKSB9XG47O1xuXG5sZXQgY2xpZW50X3JlY3Rfb2ZfZWxlbWVudCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IGZsb2F0IFJlY3QudCA9XG4gIGxldCBib3VuZGluZ19yZWN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IGVsdCBpblxuICB7IGJvdW5kaW5nX3JlY3Qgd2l0aFxuICAgIGJvdHRvbSA9IGJvdW5kaW5nX3JlY3QudG9wICsuIEZsb2F0Lm9mX2ludCBlbHQjIy5jbGllbnRIZWlnaHRcbiAgOyByaWdodCA9IGJvdW5kaW5nX3JlY3QubGVmdCArLiBGbG9hdC5vZl9pbnQgZWx0IyMuY2xpZW50V2lkdGhcbiAgfVxuOztcblxubGV0IGNsaWVudF9yZWN0ICgpID1cbiAgeyBSZWN0LnRvcCA9IDBcbiAgOyBsZWZ0ID0gMFxuICA7IGJvdHRvbSA9IERvbV9odG1sLmRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IyMuY2xpZW50SGVpZ2h0XG4gIDsgcmlnaHQgPSBEb21faHRtbC5kb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCMjLmNsaWVudFdpZHRoXG4gIH1cbjs7XG5cblxuKCoqIFNpbXBsZSB3cmFwcGVyIGZvciB0aGUgYmluYXJ5LXNlYXJjaCBmdW5jdG9yICAgKilcbmxldCBiaW5hcnlfc2VhcmNoICh0eXBlIGVsdCkgfmxlbmd0aCB+Z2V0IH5jb21wYXJlIG1vZGUgeCA9XG4gIGxldCBtb2R1bGUgQnMgPVxuICAgIEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgZWx0ID0gZWx0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdW5pdFxuXG4gICAgICBsZXQgZ2V0ICgpIG4gPSBnZXQgblxuICAgICAgbGV0IGxlbmd0aCAoKSA9IGxlbmd0aFxuICAgIGVuZClcbiAgaW5cbiAgQnMuYmluYXJ5X3NlYXJjaCAoKSB+Y29tcGFyZSBtb2RlIHhcbjs7XG5cbigqKiBTZWFyY2hlcyB0aHJvdWdoIGVsZW1lbnRzIGluZGV4ZWQgZnJvbSBbMF0gdG8gW2xlbmd0aCAtIDFdLiAqKVxubGV0IGVsZW1lbnRfc2VhcmNoIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIH5zZWFyY2hfYnkgbW9kZSBsYXlvdXQgeCA9XG4gIGxldCBnZXQgPVxuICAgIGxldCBudGhfZWxlbWVudCBuID1cbiAgICAgIGxldCBpZCA9IG50aF9lbGVtZW50X2lkIG4gaW5cbiAgICAgIG1hdGNoIERvbV9odG1sLmdldEVsZW1lbnRCeUlkX29wdCBpZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiRWxlbWVudCAlcyBub3QgZm91bmRcIiBpZCAoKVxuICAgICAgfCBTb21lIGVsdCAtPiBlbHRcbiAgICBpblxuICAgIGxldCBmaXJzdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnQgMCkgaW5cbiAgICBsZXQgbGFzdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnQgKGxlbmd0aCAtIDEpKSBpblxuICAgICgqIENvbXB1dGUgdGhlIG4ndGggZWxlbWVudCBpbiBhIG5vcm1hbGl6ZWQgd2F5LCBhcyBpZiB0aGUgaW5kZXhpbmcgYWx3YXlzIGdvZXMgaW5cbiAgICAgICBpbmNyZWFzaW5nIG9yZGVyIGZyb20gdG9wIHRvcCBib3R0b20gKilcbiAgICBsZXQgbnRoX2VsZW1lbnRfbm9ybWFsaXplZCBuID1cbiAgICAgIGxldCBpc19hc2NlbmRpbmcgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gRmxvYXQuKCA8PSApIGZpcnN0LnRvcCBsYXN0LnRvcFxuICAgICAgICB8IENvbHVtbnMgLT4gRmxvYXQuKCA8PSApIGZpcnN0LmxlZnQgbGFzdC5sZWZ0XG4gICAgICBpblxuICAgICAgbnRoX2VsZW1lbnQgKGlmIGlzX2FzY2VuZGluZyB0aGVuIG4gZWxzZSBsZW5ndGggLSBuIC0gMSlcbiAgICBpblxuICAgIGZ1biBuIC0+IHNlYXJjaF9ieSAodmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudF9ub3JtYWxpemVkIG4pKVxuICBpblxuICBiaW5hcnlfc2VhcmNoIH5sZW5ndGggfmdldCB+Y29tcGFyZTpGbG9hdC5jb21wYXJlIG1vZGUgeFxuOztcblxubGV0IGZpbmRfdmlzaWJsZV9yYW5nZSB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCBsYXlvdXQgPVxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgZWxlbWVudF9zZWFyY2ggPSBlbGVtZW50X3NlYXJjaCB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCBpblxuICAgIGxldCB2aWV3cG9ydF9yZWN0ID0gdmlld3BvcnRfcmVjdCAoKSBpblxuICAgIGxldCBmaXJzdCA9XG4gICAgICBsZXQgc2VhcmNoX2J5LCB0YXJnZXQgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gUmVjdC5ib3R0b20sIHZpZXdwb3J0X3JlY3QudG9wXG4gICAgICAgIHwgQ29sdW1ucyAtPiBSZWN0LnJpZ2h0LCB2aWV3cG9ydF9yZWN0LmxlZnRcbiAgICAgIGluXG4gICAgICBlbGVtZW50X3NlYXJjaCB+c2VhcmNoX2J5IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gbGF5b3V0IChGbG9hdC5vZl9pbnQgdGFyZ2V0KVxuICAgIGluXG4gICAgbGV0IGxhc3QgPVxuICAgICAgbGV0IHNlYXJjaF9ieSwgdGFyZ2V0ID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IFJlY3QudG9wLCB2aWV3cG9ydF9yZWN0LmJvdHRvbVxuICAgICAgICB8IENvbHVtbnMgLT4gUmVjdC5sZWZ0LCB2aWV3cG9ydF9yZWN0LnJpZ2h0XG4gICAgICBpblxuICAgICAgZWxlbWVudF9zZWFyY2ggfnNlYXJjaF9ieSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gbGF5b3V0IChGbG9hdC5vZl9pbnQgdGFyZ2V0KVxuICAgIGluXG4gICAgKCogQm90aCBbZmlyc3RdIGFuZCBbbGFzdF0gbmVlZCB0byBiZSBbU29tZV0uIE90aGVyd2lzZSwgZm9yIGV4YW1wbGUgaWYgdGhlIHdob2xlXG4gICAgICAgdGFibGUgaXMgYmVsb3cgdmlldyBwb3J0LCB0aGVuIFtmaXJzdF0gd2lsbCBiZSBbU29tZV0sIFtsYXN0XSB3aWxsIGJlIFtOb25lXSAqKVxuICAgIE9wdGlvbi5ib3RoIGZpcnN0IGxhc3QpXG47O1xuXG5sZXQgZ2V0X3Njcm9sbF9jb250YWluZXJfanNfZXhwciA9XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHJcbiAgICB7anN8XG4gICAgICAoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGRvYyA9IGVsZW1lbnQub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcbiAgICAgICAgdmFyIHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gICAgICAgIHZhciByZSA9IC8oYXV0b3xzY3JvbGwpLztcblxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gZG9jKSB7XG4gICAgICAgICAgcmV0dXJuIGRvYztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXIgPSBlbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICAgICAgd2hpbGUgKGN1ci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgdmFyIHN0eWxlID0gd2luLmdldENvbXB1dGVkU3R5bGUoY3VyKTtcblxuICAgICAgICAgIGlmIChyZS50ZXN0KHN0eWxlLm92ZXJmbG93ICsgc3R5bGUub3ZlcmZsb3dZICsgc3R5bGUub3ZlcmZsb3dYKSkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkb2M7XG4gICAgICB9KVxuICAgIHxqc31cbjs7XG5cbmxldCBnZXRfc2Nyb2xsX2NvbnRhaW5lciAoZWwgOiAjRG9tLm5vZGUgSnMudCkgOiBEb20ubm9kZSBKcy50ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIGdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIgW3wgSnMuVW5zYWZlLmluamVjdCBlbCB8XVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgUGVyZm9ybWFuY2UgPSBKYXZhc2NyaXB0X3Byb2ZpbGluZ1xuXG5sZXQgdGltZXJfc3RhcnQgcyB+ZGVidWcgfnByb2ZpbGUgPVxuICBpZiBwcm9maWxlIHRoZW4gUGVyZm9ybWFuY2UuTWFudWFsLm1hcmsgKHMgXiBcImJlZm9yZVwiKTtcbiAgaWYgZGVidWcgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI3RpbWUgKEpzLnN0cmluZyBzKVxuOztcblxubGV0IHRpbWVyX3N0b3AgcyB+ZGVidWcgfnByb2ZpbGUgPVxuICBpZiBwcm9maWxlXG4gIHRoZW4gKFxuICAgIGxldCBiZWZvcmUgPSBzIF4gXCJiZWZvcmVcIiBpblxuICAgIGxldCBhZnRlciA9IHMgXiBcImFmdGVyXCIgaW5cbiAgICBQZXJmb3JtYW5jZS5NYW51YWwubWFyayBhZnRlcjtcbiAgICBQZXJmb3JtYW5jZS5NYW51YWwubWVhc3VyZSB+bmFtZTpzIH5zdGFydDpiZWZvcmUgfmVuZF86YWZ0ZXIpO1xuICBpZiBkZWJ1ZyB0aGVuIEZpcmVidWcuY29uc29sZSMjdGltZUVuZCAoSnMuc3RyaW5nIHMpXG47O1xuXG5sZXQgcHJpbnRfZXJyb3JmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgcykpIGZtdFxuXG5tb2R1bGUgUmVxdWVzdF9pZHMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuXG4gIHZhbCBzZXRfb25jZV9leG5cbiAgICA6ICB0XG4gICAgLT4gYW5pbWF0aW9uX2ZyYW1lX2lkOkRvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG4gICAgLT4gc2V0X3RpbWVvdXRfaWQ6RG9tX2h0bWwudGltZW91dF9pZFxuICAgIC0+IHVuaXRcblxuICB2YWwgY2FuY2VsbGVkIDogdCAtPiBib29sXG4gIHZhbCBjYW5jZWwgOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGlkcyA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ2FuY2VsbGVkXG4gICAgfCBJZHMgb2ZcbiAgICAgICAgeyBhbmltYXRpb25fZnJhbWVfaWQgOiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuICAgICAgICA7IHNldF90aW1lb3V0X2lkIDogRG9tX2h0bWwudGltZW91dF9pZFxuICAgICAgICB9XG5cbiAgdHlwZSB0ID0gaWRzIHJlZlxuXG4gIGxldCBjcmVhdGUgKCkgOiB0ID0gcmVmIEVtcHR5XG5cbiAgbGV0IHNldF9vbmNlX2V4biAodCA6IHQpIH5hbmltYXRpb25fZnJhbWVfaWQgfnNldF90aW1lb3V0X2lkID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT5cbiAgICAgICgqIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCBsZXQncyBiZSBkZWZlbnNpdmUuICopXG4gICAgICBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9mcmFtZV9pZDtcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0IHNldF90aW1lb3V0X2lkXG4gICAgfCBFbXB0eSAtPiB0IDo9IElkcyB7IGFuaW1hdGlvbl9mcmFtZV9pZDsgc2V0X3RpbWVvdXRfaWQgfVxuICAgIHwgSWRzIF8gLT4gaW52YWxpZF9hcmcgXCJyZXF1ZXN0X2lkcyBhbHJlYWR5IHNldFwiXG4gIDs7XG5cbiAgbGV0IGNhbmNlbGxlZCB4ID1cbiAgICBtYXRjaCAheCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT4gdHJ1ZVxuICAgIHwgRW1wdHkgfCBJZHMgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBjYW5jZWwgKHQgOiB0KSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+ICgpXG4gICAgfCBFbXB0eSAtPiB0IDo9IENhbmNlbGxlZFxuICAgIHwgSWRzIHsgYW5pbWF0aW9uX2ZyYW1lX2lkOyBzZXRfdGltZW91dF9pZCB9IC0+XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9mcmFtZV9pZDtcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0IHNldF90aW1lb3V0X2lkO1xuICAgICAgdCA6PSBDYW5jZWxsZWRcbiAgOztcbmVuZFxuXG4oKiogW3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSBub3RpZmllcyB0aGUgYnJvd3NlciB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGRvIHNvbWVcbiAgICBjb21wdXRhdGlvbiBiZWZvcmUgdGhlIG5leHQgcmVwYWludC4gQmVjYXVzZSB0aGlzIG5lZWRzIHRvIG9jY3VyIGluIHRoZSBzYW1lXG4gICAgc3luY2hyb25vdXMgY2FsbCAoY2FsbGVkIGJlZm9yZSB0aGUgbmV4dCByZXBhaW50KSwgcmV0dXJuaW5nIGEgRGVmZXJyZWQudCB3aWxsIG5vdFxuICAgIHdvcmsuIEluc3RlYWQsIHlvdSBwYXNzIGluIGEgam9iIHRvIGJlIHJ1biBiZWZvcmUgdGhlIHJlcGFpbnQuXG5cbiAgICBOb3RlIHRoYXQgaWYgW2NhbGxiYWNrXSBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHdvcmsgYmVmb3JlIGRvaW5nIERPTSBjaGFuZ2VzLCB0aG9zZVxuICAgIGNoYW5nZXMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcGFpbnQgYW5kIHdpbGwgYmUgc2F2ZWQgdW50aWwgdGhlIGZvbGxvd2luZyBvbmUuXG5cbiAgICBXaGVuIHRoZSB0YWIgaXMgaW4gdGhlIGJhY2tncm91bmQsIHRoZSBicm93c2VycyBuYXRpdmUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZ1bmN0aW9uXG4gICAgd2lsbCBuZXZlciBjYWxsIHRoZSBjYWxsYmFjaywgc28gaW4gb3JkZXIgdG8gY29udGludWUgcHJvY2Vzc2luZyBldmVudHMsIHdlIHNldCBhblxuICAgIGFsdGVybmF0ZSBzZXRUaW1lb3V0IGF0IDEgc2Vjb25kLlxuKilcbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjayA9XG4gICgqIFdlIGNhcHR1cmUgdGhlIGN1cnJlbnQgY29udGV4dCB0byB1c2UgaXQgbGF0ZXIgd2hlbiBoYW5kbGluZyBjYWxsYmFja3MgZnJvbVxuICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIHNpbmNlIGV4Y2VwdGlvbnMgcmFpc2VkIHRvIHRoYXQgd291bGQgb3RoZXJ3aXNlIG5vdCBnbyB0aHJvdWdoXG4gICAgIG91ciBvcmRpbmFyeSBBc3luYyBtb25pdG9yLiAqKVxuICBsZXQgY3VycmVudF9jb250ZXh0ID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpIGluXG4gIGxldCByZXF1ZXN0X2lkcyA9IFJlcXVlc3RfaWRzLmNyZWF0ZSAoKSBpblxuICBsZXQgY2FsbGJhY2sgKCkgPVxuICAgIGlmIFJlcXVlc3RfaWRzLmNhbmNlbGxlZCByZXF1ZXN0X2lkc1xuICAgIHRoZW4gKClcbiAgICBlbHNlIChcbiAgICAgIFJlcXVlc3RfaWRzLmNhbmNlbCByZXF1ZXN0X2lkcztcbiAgICAgIGxldCBjYWxsYmFja19yZXN1bHQgPVxuICAgICAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLndpdGhpbl9jb250ZXh0IGN1cnJlbnRfY29udGV4dCBjYWxsYmFja1xuICAgICAgaW5cbiAgICAgIGlnbm9yZSAoY2FsbGJhY2tfcmVzdWx0IDogKHVuaXQsIHVuaXQpIFJlc3VsdC50KSlcbiAgaW5cbiAgbGV0IGFuaW1hdGlvbl9mcmFtZV9pZCA9XG4gICAgbGV0IGFuaW1hdGlvbl9jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGNhbGxiYWNrICgpKSBpblxuICAgIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9jYWxsYmFja1xuICBpblxuICBsZXQgc2V0X3RpbWVvdXRfaWQgPVxuICAgIGxldCB0aW1lb3V0X2NhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT4gY2FsbGJhY2sgKCkpIGluXG4gICAgKCogMTAwMCBtcyA9IDFzOyAgQ2hvc2VuIGJlY2F1c2UgYmFja2dyb3VuZGVkIHRhbmdsZSBzZW5kcyByZXF1ZXN0c1xuICAgICAgIGF0IGFwcHJveGltYXRlbHkgdGhpcyByYXRlLiAqKVxuICAgIGxldCB0aW1lb3V0ID0gMTAwMC4wIGluXG4gICAgRG9tX2h0bWwud2luZG93IyNzZXRUaW1lb3V0IHRpbWVvdXRfY2FsbGJhY2sgdGltZW91dFxuICBpblxuICBSZXF1ZXN0X2lkcy5zZXRfb25jZV9leG4gcmVxdWVzdF9pZHMgfmFuaW1hdGlvbl9mcmFtZV9pZCB+c2V0X3RpbWVvdXRfaWRcbjs7XG5cbigqKiBUaGUgSnNfb2Zfb2NhbWwgdHlwZSBEb21faHRtbC5lbGVtZW50IGRvZXNuJ3QgaGF2ZSB0aGUgY29ycmVjdCBvcHRpb25zIGZvclxuICAgIHRoZWlyIGBmb2N1c2AgbWV0aG9kLiBDYXN0IHRvIHRoaXMgaW4gb3JkZXIgdG8gd29yayBhcm91bmQgdGhpcyBidWcuICAqKVxudHlwZSBmb2N1c2FibGUgPVxuICA8IGZvY3VzIDogPCBwcmV2ZW50U2Nyb2xsIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3AgPiBKcy50IC0+IHVuaXQgSnMubWV0aCA+XG5cbmxldCBhc19mb2N1c2FibGUgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gZm9jdXNhYmxlIEpzLnQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbigqKiBbVmlzaWJpbGl0eV0gZW5jYXBzdWxhdGVzIHRoZSBkaXJ0eWluZyBhbmQgY2xlYW5pbmcgb2YgdGhlIHZpc2liaWxpdHkgZmxhZ1xuXG4gICAgVGhlIHZpZXdwb3J0IHN0YXJ0cyBvdXQgZGlydHkuIFdoZW4gd2UgbG9vayBhdCB0aGUgRE9NIHRvIGNvbXB1dGUgd2hhdCBpcyB2aXNpYmxlIGJ5XG4gICAgY2FsbGluZyBbdXBkYXRlX3Zpc2liaWxpdHldLCB0aGUgdmlld3BvcnQgdGhlbiBiZWNvbWVzIGNsZWFuLiBBbnkgdGltZSB0aGUgdXNlclxuICAgIHNjcm9sbHMgb3VyIHBhZ2Ugb3IgcmVzaXplcyB0aGUgd2luZG93LCB0aGUgdmlld3BvcnQgYmVjb21lcyBkaXJ0eSBhZ2Fpbi4gSWYgd2UgdXBkYXRlXG4gICAgdGhlIERPTSwgdGhlIHZpZXdwb3J0IGJlY29tZXMgZGlydHkgYWdhaW4gYmVjYXVzZSBhIERPTSB1cGRhdGUgY291bGQgY2F1c2UgYSByZWZsb3csXG4gICAgbW92aW5nIHRoZSBlbGVtZW50cyB0aGF0IGFyZSB2aXNpYmxlLlxuXG4gICAgV2UgaGF2ZSBpbXBsZW1lbnRlZCB0aGlzIGFzIGEgZmxhZyBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgdXNlcnMgdG8gc2VuZCBhbiBhY3Rpb24gb25cbiAgICBzY3JvbGwgYmVjYXVzZSBpdCB3b3VsZCBtYWtlIG5vIHNlbnNlIHRvIGNvbXB1dGUgdGhlIHZpc2liaWxpdHkgb24gdGhlIHZpcnR1YWwtZG9tXG4gICAgd2hlbiB0aGUgdmlydHVhbC1kb20gZG9lcyBub3QgbWF0Y2ggdGhlIGFjdHVhbCBkb20gKGFzIGl0IGlzIGluIHRoZSBtaWRkbGUgb2ZcbiAgICBbYXBwbHlfYWN0aW9uc10pLiAqKVxubW9kdWxlIFZpc2liaWxpdHkgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZV9hc19kaXJ0eSA6IHVuaXQgLT4gdFxuICB2YWwgbWFya19jbGVhbiA6IHQgLT4gdW5pdFxuICB2YWwgbWFya19kaXJ0eSA6IHQgLT4gdW5pdFxuICB2YWwgaXNfZGlydHkgOiB0IC0+IGJvb2xcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IG11dGFibGUgd2hlbl9kaXJ0eSA6IHVuaXQgSXZhci50IH1cblxuICBsZXQgY3JlYXRlX2FzX2RpcnR5ICgpID0geyB3aGVuX2RpcnR5ID0gSXZhci5jcmVhdGVfZnVsbCAoKSB9XG4gIGxldCBtYXJrX2RpcnR5IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC53aGVuX2RpcnR5ICgpXG4gIGxldCBpc19kaXJ0eSB0ID0gSXZhci5pc19mdWxsIHQud2hlbl9kaXJ0eVxuICBsZXQgbWFya19jbGVhbiB0ID0gaWYgaXNfZGlydHkgdCB0aGVuIHQud2hlbl9kaXJ0eSA8LSBJdmFyLmNyZWF0ZSAoKVxuZW5kXG5cbm1vZHVsZSBMb2dnaW5nX2ZpbHRlciA9IHN0cnVjdFxuICBtb2R1bGUgU3RyaW5nX2JsYW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyBCbGFuZy50IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB8IEFsbFxuICAgIHwgTm9uZVxuICAgIHwgTmFtZWRfZmlsdGVyX2JsYW5nIG9mIFN0cmluZ19ibGFuZy50XG4gICAgfCBDdXN0b21fZmlsdGVyIG9mIChTZXhwLnQgLT4gYm9vbClcbmVuZFxuXG5tb2R1bGUgRGVidWdfZmxhZ3MgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IGxvZ2dpbmdfZmlsdGVyIDogdW5pdCAtPiBMb2dnaW5nX2ZpbHRlci50XG4gICAgOyBzaG91bGRfcHJvZmlsZSA6IHVuaXQgLT4gYm9vbFxuICAgIDsgc2hvdWxkX2RlYnVnIDogdW5pdCAtPiBib29sXG4gICAgfVxuXG4gIHZhbCBpbml0X2FwcFxuICAgIDogIGFwcF9pZDpzdHJpbmdcbiAgICAtPiBmaWx0ZXJfbmFtZXM6U3RyaW5nLlNldC50XG4gICAgLT4gZGVidWc6Ym9vbFxuICAgIC0+IHN0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA6IHVuaXQgLT4gTG9nZ2luZ19maWx0ZXIudFxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiB1bml0IC0+IGJvb2xcbiAgICA7IHNob3VsZF9kZWJ1ZyA6IHVuaXQgLT4gYm9vbFxuICAgIH1cblxuICBtb2R1bGUgQXBwX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZmlsdGVyX25hbWVzIDogU3RyaW5nLlNldC50XG4gICAgICA7IGxvZ2dpbmdfZmlsdGVyIDogTG9nZ2luZ19maWx0ZXIudCByZWZcbiAgICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiBib29sIHJlZlxuICAgICAgOyBzaG91bGRfZGVidWcgOiBib29sIHJlZlxuICAgICAgfVxuXG4gICAgbGV0IHNldF9sb2dnaW5nX2ZpbHRlciB0IH5sb2dnaW5nX2ZpbHRlciA9IHQubG9nZ2luZ19maWx0ZXIgOj0gbG9nZ2luZ19maWx0ZXJcbiAgICBsZXQgc2V0X3Nob3VsZF9wcm9maWxlIHQgfnNob3VsZF9wcm9maWxlID0gdC5zaG91bGRfcHJvZmlsZSA6PSBzaG91bGRfcHJvZmlsZVxuICAgIGxldCBzZXRfc2hvdWxkX2RlYnVnIHQgfnNob3VsZF9kZWJ1ZyA9IHQuc2hvdWxkX2RlYnVnIDo9IHNob3VsZF9kZWJ1Z1xuICBlbmRcblxuICBjbGFzcyB0eXBlIGdsb2JhbCA9XG4gICAgb2JqZWN0XG4gICAgICBtZXRob2Qgc3RhcnRMb2dnaW5nQWxsIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnRMb2dnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdGFydExvZ2dpbmdDdXN0b20gOlxuICAgICAgICAoKEpzLmpzX3N0cmluZyBKcy50IC0+IGJvb2wgSnMudCkgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0b3BMb2dnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnRQcm9maWxpbmcgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdG9wUHJvZmlsaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnREZWJ1Z2dpbmcgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdG9wRGVidWdnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc2F2ZUluY3JlbWVudGFsR3JhcGggOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICAgIGVuZFxuXG4gIGxldCBnbG9iYWwgOiBnbG9iYWwgSnMudCA9IEpzLlVuc2FmZS5nbG9iYWxcbiAgbGV0IGdsb2JhbF9pc19pbml0aWFsaXplZCA9IHJlZiBmYWxzZVxuICBsZXQgYXBwX3N0YXRlcyA6IEFwcF9zdGF0ZS50IFN0cmluZy5UYWJsZS50ID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSAoKVxuXG4gIGxldCBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiXFxcIlwiIF4gc3RyIF4gXCJcXFwiXCIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgOztcblxuICBsZXQgbXVsdGlfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiICBcIiBeIHN0cikgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgaW5pdF9nbG9iYWwgKCkgPVxuICAgIGxldCB3aXRoX2FwcF9pZF9vcHQgdXBkYXRlX3N0YXRlIGFwcF9pZF9vcHQgPVxuICAgICAgbGV0IGFwcF9pZF9vcHQgPSBKcy5PcHQudG9fb3B0aW9uIGFwcF9pZF9vcHQgfD4gT3B0aW9uLm1hcCB+ZjpKcy50b19zdHJpbmcgaW5cbiAgICAgIG1hdGNoIGFwcF9pZF9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEhhc2h0YmwuaXRlciBhcHBfc3RhdGVzIH5mOnVwZGF0ZV9zdGF0ZVxuICAgICAgfCBTb21lIGFwcF9pZCAtPlxuICAgICAgICAobWF0Y2ggSGFzaHRibC5maW5kIGFwcF9zdGF0ZXMgYXBwX2lkIHdpdGhcbiAgICAgICAgIHwgU29tZSBzdGF0ZSAtPiB1cGRhdGVfc3RhdGUgc3RhdGVcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBwcmludF9lcnJvcmZcbiAgICAgICAgICAgICBcIlVuYWJsZSB0byBmaW5kIGFwcCB3aXRoIGlkIFxcXCIlc1xcXCIuIFZhbGlkIGFwcCBpZHMgYXJlOiAlc1wiXG4gICAgICAgICAgICAgYXBwX2lkXG4gICAgICAgICAgICAgKEhhc2h0Ymwua2V5cyBhcHBfc3RhdGVzIHw+IHNpbmdsZV9saW5lX3N0cmluZ19saXN0KSlcbiAgICBpblxuICAgIGxldCB1cGRhdGVfbG9nZ2luZ19maWx0ZXIgbG9nZ2luZ19maWx0ZXIgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X2xvZ2dpbmdfZmlsdGVyIH5sb2dnaW5nX2ZpbHRlcilcbiAgICBpblxuICAgIGxldCB1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgc2hvdWxkX3Byb2ZpbGUgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X3Nob3VsZF9wcm9maWxlIH5zaG91bGRfcHJvZmlsZSlcbiAgICBpblxuICAgIGxldCB1cGRhdGVfc2hvdWxkX2RlYnVnIHNob3VsZF9kZWJ1ZyA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfc2hvdWxkX2RlYnVnIH5zaG91bGRfZGVidWcpXG4gICAgaW5cbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdBbGwgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX2xvZ2dpbmdfZmlsdGVyIEFsbCk7XG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGJsYW5nX3N0ciAtPlxuICAgICAgbGV0IGJsYW5nX3N0ciA9IEpzLnRvX3N0cmluZyBibGFuZ19zdHIgaW5cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoZnVuIGFwcF9zdGF0ZSAtPlxuICAgICAgICBsZXQgYmxhbmcgPVxuICAgICAgICAgIEJsYW5nLnRfb2Zfc2V4cCBTdHJpbmcudF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBibGFuZ19zdHIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbnZhbGlkX25hbWVzID1cbiAgICAgICAgICBCbGFuZy5mb2xkIGJsYW5nIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBpbnZhbGlkX25hbWVzIG5hbWUgLT5cbiAgICAgICAgICAgIGlmIFNldC5tZW0gYXBwX3N0YXRlLmZpbHRlcl9uYW1lcyBuYW1lXG4gICAgICAgICAgICB0aGVuIGludmFsaWRfbmFtZXNcbiAgICAgICAgICAgIGVsc2UgU2V0LmFkZCBpbnZhbGlkX25hbWVzIG5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIFNldC5pc19lbXB0eSBpbnZhbGlkX25hbWVzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBcHBfc3RhdGUuc2V0X2xvZ2dpbmdfZmlsdGVyXG4gICAgICAgICAgICBhcHBfc3RhdGVcbiAgICAgICAgICAgIH5sb2dnaW5nX2ZpbHRlcjooTmFtZWRfZmlsdGVyX2JsYW5nIGJsYW5nKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICBcIlVuYWJsZSB0byBmaW5kIG5hbWVkIGZpbHRlcihzKTogJXMuIFZhbGlkIG5hbWVzIGFyZTpcXG4lc1wiXG4gICAgICAgICAgICAoU2V0LnRvX2xpc3QgaW52YWxpZF9uYW1lcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdClcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpKSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQ3VzdG9tXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGZpbHRlciAtPlxuICAgICAgbGV0IGZpbHRlciBhY3Rpb25fc2V4cCA9XG4gICAgICAgIGFjdGlvbl9zZXhwIHw+IFNleHAudG9fc3RyaW5nIHw+IEpzLnN0cmluZyB8PiBmaWx0ZXIgfD4gSnMudG9fYm9vbFxuICAgICAgaW5cbiAgICAgIHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciAoQ3VzdG9tX2ZpbHRlciBmaWx0ZXIpKTtcbiAgICBnbG9iYWwjIy5zdG9wTG9nZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfbG9nZ2luZ19maWx0ZXIgTm9uZSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zdGFydERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BEZWJ1Z2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9kZWJ1ZyBmYWxzZSk7XG4gICAgZ2xvYmFsIyMuc2F2ZUluY3JlbWVudGFsR3JhcGhcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgIGxldCBmaWxlbmFtZSA9IFwiY3VycmVudF9pbmNyX2RvbV9kb3RfZ3JhcGguZG90XCIgaW5cbiAgICAgIFVpX2luY3Iuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlbmFtZTtcbiAgICAgIGxldCBjb250ZW50cyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZmlsZW5hbWUgaW5cbiAgICAgIFZkb21fZmlsZV9kb3dubG9hZC5jcmVhdGUgfmZpbGVuYW1lIH5taW1ldHlwZTpcInBsYWluL3RleHRcIiB+Y29udGVudHNcbiAgICAgIHw+IFZkb21fZmlsZV9kb3dubG9hZC50cmlnZ2VyKTtcbiAgICBsZXQgaW5pdF9tZXNzYWdlID1cbiAgICAgIFwiIEluY3JfZG9tIEFjdGlvbiBMb2dnaW5nXFxuXFxcbiAgICAgIFxcID09PT09PT09PT09PT09PT09PT09PT09XFxuXFxcbiAgICAgIFxcIExvZ2dpbmcgcHJpbnRzIGFjdGlvbiBpbmZvIHRvIHRoZSBjb25zb2xlLlxcblxcXG4gICAgICBcXCBJdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LlxcblxcXG4gICAgICBcXCBUbyBzdGFydCBsb2dnaW5nLCB0eXBlIG9uZSBvZiB0aGUgZm9sbG93aW5nOlxcblxcXG4gICAgICBcXCBcXHRzdGFydExvZ2dpbmdBbGwoW2FwcF9pZF0pIC0gbG9nIGFsbCBhY3Rpb25zXFxuXFxcbiAgICAgIFxcIFxcdHN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZSBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgcHJlLWRlZmluZWQgXFxcbiAgICAgICBuYW1lZCBmaWx0ZXIgW2ZpbHRlcl9uYW1lXVxcblxcXG4gICAgICBcXCBcXHRzdGFydExvZ2dpbmcoZmlsdGVyX25hbWVfYmxhbmcgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIGJsYW5nIG9mIFxcXG4gICAgICAgbmFtZWQgZmlsdGVycyBbZmlsdGVyX25hbWVfYmxhbmddXFxuXFxcbiAgICAgIFxcIFxcdHN0YXJ0TG9nZ2luZ0N1c3RvbShmaWx0ZXIgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIGN1c3RvbSBmdW5jdGlvbiBcXFxuICAgICAgIFtmaWx0ZXJdIGZyb20gYSBzdHJpbmcgKHRoZSBhY3Rpb24gc2V4cCkgdG8gYSBib29sXFxuXFxcbiAgICAgIFxcIFRvIHN0b3AgbG9nZ2luZywgdHlwZTogc3RvcExvZ2dpbmcoW2FwcF9pZF0pXFxuXFxuXFxcbiAgICAgIFxcIEluY3JfZG9tIEFjdGlvbiBQcm9maWxpbmdcXG5cXFxuICAgICAgXFwgPT09PT09PT09PT09PT09PT09PT09PT09PVxcblxcXG4gICAgICBcXCBQcm9maWxpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cXG5cXFxuICAgICAgXFwgVG8gc3RhcnQgcHJvZmlsaW5nLCB0eXBlOiBzdGFydFByb2ZpbGluZyhbYXBwX2lkXSlcXG5cXFxuICAgICAgXFwgVG8gc3RvcCBwcm9maWxpbmcsIHR5cGU6IHN0b3BQcm9maWxpbmcoW2FwcF9pZF0pXFxuXFxuXFxcbiAgICAgIFxcIEluY3JfZG9tIERlYnVnZ2luZ1xcblxcXG4gICAgICBcXCA9PT09PT09PT09PT09PT09PT1cXG5cXFxuICAgICAgXFwgRGVidWdnaW5nIHByaW50cyB0aW1pbmcgaW5mbyB0byB0aGUgY29uc29sZS5cXG5cXFxuICAgICAgXFwgSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCBieSB0aGUgYXBwLlxcblxcXG4gICAgICBcXCBUbyBzdGFydCBkZWJ1Z2dpbmcsIHR5cGU6IHN0YXJ0RGVidWdnaW5nKFthcHBfaWRdKVxcblxcXG4gICAgICBcXCBUbyBzdG9wIGRlYnVnZ2luZywgdHlwZTogc3RvcERlYnVnZ2luZyhbYXBwX2lkXSlcXG5cXG5cXFxuICAgICAgXFwgW2FwcF9pZF0gaXMgZXF1YWwgdG8gdGhlIGlkIG9mIHRoZSBlbGVtZW50IHRoYXQgdGhlIGluY3ItZG9tIGFwcCBpcyBib3VuZCB0by4gSWYgXFxcbiAgICAgICB0aGUgcGFnZSBvbmx5IGhhcyBvbmUgYXBwIG9yIHlvdSB3YW50IHRvIGFwcGx5IHRoZSBhY3Rpb24gdG8gYWxsIGFwcHMsIHlvdSBjYW4gXFxcbiAgICAgICBwYXNzIGluIFtudWxsXSAob3IgZm9yIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMsIG9taXQgaXQgYWx0b2dldGhlcikuXCJcbiAgICBpblxuICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgaW5pdF9tZXNzYWdlKVxuICA7O1xuXG4gIGxldCBpbml0X2FwcCB+YXBwX2lkIH5maWx0ZXJfbmFtZXMgfmRlYnVnIH5zdG9wID1cbiAgICBpZiBub3QgIWdsb2JhbF9pc19pbml0aWFsaXplZFxuICAgIHRoZW4gKFxuICAgICAgaW5pdF9nbG9iYWwgKCk7XG4gICAgICBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgOj0gdHJ1ZSk7XG4gICAgbGV0IGFwcF9pbml0X21lc3NhZ2UgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICBcIkF2YWlsYWJsZSBsb2dnaW5nIGZpbHRlcnMgZm9yIFxcXCIlc1xcXCI6XFxuJXNcIlxuICAgICAgICBhcHBfaWRcbiAgICAgICAgKFNldC50b19saXN0IGZpbHRlcl9uYW1lcyB8PiBtdWx0aV9saW5lX3N0cmluZ19saXN0KVxuICAgIGluXG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBhcHBfaW5pdF9tZXNzYWdlKTtcbiAgICBsZXQgbG9nZ2luZ19maWx0ZXIgPSByZWYgTG9nZ2luZ19maWx0ZXIuTm9uZSBpblxuICAgIGxldCBzaG91bGRfcHJvZmlsZSA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzaG91bGRfZGVidWcgPSByZWYgZGVidWcgaW5cbiAgICBIYXNodGJsLnNldFxuICAgICAgYXBwX3N0YXRlc1xuICAgICAgfmtleTphcHBfaWRcbiAgICAgIH5kYXRhOnsgZmlsdGVyX25hbWVzOyBsb2dnaW5nX2ZpbHRlcjsgc2hvdWxkX3Byb2ZpbGU7IHNob3VsZF9kZWJ1ZyB9O1xuICAgIHVwb24gc3RvcCAoZnVuICgpIC0+IEhhc2h0YmwucmVtb3ZlIGFwcF9zdGF0ZXMgYXBwX2lkKTtcbiAgICB7IGxvZ2dpbmdfZmlsdGVyID0gKGZ1biAoKSAtPiAhbG9nZ2luZ19maWx0ZXIpXG4gICAgOyBzaG91bGRfcHJvZmlsZSA9IChmdW4gKCkgLT4gIXNob3VsZF9wcm9maWxlKVxuICAgIDsgc2hvdWxkX2RlYnVnID0gKGZ1biAoKSAtPiAhc2hvdWxkX2RlYnVnKVxuICAgIH1cbiAgOztcbmVuZFxuXG4oKiBBZGRzIHRoZSBuZWNlc3NhcnkgYXR0cmlidXRlIHRvIHRoZSByb290IG5vZGUgc28gdGhhdCBpdCBjYW4gaW50ZXJjZXB0XG4gICBrZXlib2FyZCBldmVudHMuXG4gICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4ICopXG5sZXQgb3ZlcnJpZGVfcm9vdF9lbGVtZW50IHJvb3QgPVxuICBsZXQgb3BlbiBWZG9tIGluXG4gIGxldCBzaG91bGRfYWRkX2ZvY3VzX21vZGlmaWVycyBlbGVtZW50ID1cbiAgICBlbGVtZW50IHw+IE5vZGUuRWxlbWVudC5hdHRycyB8PiBBdHRyLkV4cGVydC5jb250YWluc19uYW1lIFwiZGlzYWJsZV90YWJfaW5kZXhcIiB8PiBub3RcbiAgaW5cbiAgbWF0Y2ggKHJvb3QgOiBOb2RlLnQpIHdpdGhcbiAgfCBFbGVtZW50IGVsZW1lbnQgd2hlbiBzaG91bGRfYWRkX2ZvY3VzX21vZGlmaWVycyBlbGVtZW50IC0+XG4gICAgbGV0IGFkZF9uZXdfYXR0cnMgYXR0cnMgPVxuICAgICAgVmRvbS5BdHRyLihzdHlsZSAoQ3NzX2dlbi5vdXRsaW5lIH5zdHlsZTpgTm9uZSAoKSkgQCB0YWJpbmRleCAwIEAgYXR0cnMpXG4gICAgaW5cbiAgICBlbGVtZW50IHw+IE5vZGUuRWxlbWVudC5tYXBfYXR0cnMgfmY6YWRkX25ld19hdHRycyB8PiBOb2RlLkVsZW1lbnRcbiAgfCBfIC0+IHJvb3Rcbjs7XG5cbmxldCBnZXRfdGFnX25hbWUgKG5vZGUgOiBWZG9tLk5vZGUudCkgPVxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBFbGVtZW50IGUgLT4gU29tZSAoVmRvbS5Ob2RlLkVsZW1lbnQudGFnIGUpXG4gIHwgTm9uZSB8IFRleHQgXyB8IFdpZGdldCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzdGFydF9ib25zYWlcbiAgICAgICh0eXBlIG1vZGVsIGFjdGlvbilcbiAgICAgID8oZGVidWcgPSBmYWxzZSlcbiAgICAgID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKVxuICAgICAgPyhuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPSBbXSlcbiAgICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZFxuICAgICAgfmluaXRpYWxfbW9kZWxcbiAgICAgIChtb2R1bGUgQXBwIDogQXBwX2ludGYuUHJpdmF0ZS5TX2Zvcl9ib25zYWlcbiAgICAgICAgd2l0aCB0eXBlIE1vZGVsLnQgPSBtb2RlbFxuICAgICAgICAgYW5kIHR5cGUgQWN0aW9uLnQgPSBhY3Rpb24pXG4gID1cbiAgKCogVGhpcyBpcyBpZGVtcG90ZW50IGFuZCBzbyBmaW5lIHRvIGRvLiAqKVxuICBBc3luY19qcy5pbml0ICgpO1xuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQlYmluZCAoKSA9IEFzeW5jX2pzLmRvY3VtZW50X2xvYWRlZCAoKSBpblxuICAgICBsZXQgbW9kZWxfdiA9IEluY3IuVmFyLmNyZWF0ZSBpbml0aWFsX21vZGVsIGluXG4gICAgIGxldCBtb2RlbCA9IEluY3IuVmFyLndhdGNoIG1vZGVsX3YgaW5cbiAgICAgbGV0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgPSBJbmNyLlZhci5jcmVhdGUgaW5pdGlhbF9tb2RlbCBpblxuICAgICBsZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgPSBJbmNyLlZhci53YXRjaCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92IGluXG4gICAgIGxldCBjdXRvZmYgPVxuICAgICAgIEluY3IuQ3V0b2ZmLmNyZWF0ZSAoZnVuIH5vbGRfdmFsdWUgfm5ld192YWx1ZSAtPlxuICAgICAgICAgQXBwLk1vZGVsLmN1dG9mZiBvbGRfdmFsdWUgbmV3X3ZhbHVlKVxuICAgICBpblxuICAgICBJbmNyLnNldF9jdXRvZmYgbW9kZWwgY3V0b2ZmO1xuICAgICBJbmNyLnNldF9jdXRvZmYgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgY3V0b2ZmO1xuICAgICBsZXQgYWN0aW9uX3F1ZXVlID0gRGVxdWUuY3JlYXRlICgpIGluXG4gICAgIGxldCBtb2R1bGUgRXZlbnQgPVxuICAgICAgIFZkb20uRWZmZWN0LkRlZmluZSAoc3RydWN0XG4gICAgICAgICBtb2R1bGUgQWN0aW9uID0gQXBwLkFjdGlvblxuXG4gICAgICAgICBsZXQgaGFuZGxlIGFjdGlvbiA9IERlcXVlLmVucXVldWVfYmFjayBhY3Rpb25fcXVldWUgYWN0aW9uXG4gICAgICAgZW5kKVxuICAgICBpblxuICAgICBsZXQgdmlzaWJpbGl0eSA9IFZpc2liaWxpdHkuY3JlYXRlX2FzX2RpcnR5ICgpIGluXG4gICAgIGxldCB2aWV3cG9ydF9jaGFuZ2VkICgpID0gVmlzaWJpbGl0eS5tYXJrX2RpcnR5IHZpc2liaWxpdHkgaW5cbiAgICAgKCogVGhpcyByZWdpc3RlcnMgdGhlIFt2aWV3cG9ydF9jaGFuZ2VkXSBoYW5kbGVyIHdpdGggVmlydHVhbF9kb20uIElmIGV2ZW50IGhhbmRsZXJzXG4gICAgICAgIHVzZSB0aGUgW1Zkb20uRWZmZWN0LlZpZXdwb3J0X2NoYW5nZWRdIGV2ZW50LCB3ZSBhcmUgbm90aWZpZWQuICopXG4gICAgIGxldCBtb2R1bGUgXyA9XG4gICAgICAgVmRvbS5FZmZlY3QuRGVmaW5lX3Zpc2liaWxpdHkgKHN0cnVjdFxuICAgICAgICAgbGV0IGhhbmRsZSA9IHZpZXdwb3J0X2NoYW5nZWRcbiAgICAgICBlbmQpXG4gICAgIGluXG4gICAgIGxldCBnZXRfdmlldywgZ2V0X2FwcGx5X2FjdGlvbiwgZ2V0X3VwZGF0ZV92aXNpYmlsaXR5LCBnZXRfb25fZGlzcGxheSA9XG4gICAgICAgbGV0IG9icyA9XG4gICAgICAgICBJbmNyLm9ic2VydmVcbiAgICAgICAgICAgKEFwcC5jcmVhdGUgbW9kZWwgfm9sZF9tb2RlbDptb2RlbF9mcm9tX2xhc3RfZGlzcGxheSB+aW5qZWN0OkV2ZW50LmluamVjdClcbiAgICAgICBpblxuICAgICAgIGxldCBmZXRjaCAoZiA6IF8gQXBwX2ludGYuUHJpdmF0ZS5zbmFwc2hvdCAtPiBfKSAoKSA9XG4gICAgICAgICBmIChJbmNyLk9ic2VydmVyLnZhbHVlX2V4biBvYnMpXG4gICAgICAgaW5cbiAgICAgICAoIGZldGNoIChmdW4geyB2aWV3OyBfIH0gLT4gdmlldylcbiAgICAgICAsIGZldGNoIChmdW4geyBhcHBseV9hY3Rpb247IF8gfSAtPiBhcHBseV9hY3Rpb24pXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgdXBkYXRlX3Zpc2liaWxpdHk7IF8gfSAtPiB1cGRhdGVfdmlzaWJpbGl0eSlcbiAgICAgICAsIGZldGNoIChmdW4geyBvbl9kaXNwbGF5OyBfIH0gLT4gb25fZGlzcGxheSkgKVxuICAgICBpblxuICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgbGV0IG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9XG4gICAgICAgKFwiYWxsXCIsIEZuLmNvbnN0IHRydWUpIDo6IChcIm5vbmVcIiwgRm4uY29uc3QgZmFsc2UpIDo6IG5hbWVkX2xvZ2dpbmdfZmlsdGVyc1xuICAgICAgIHw+IFN0cmluZy5UYWJsZS5vZl9hbGlzdF9leG5cbiAgICAgaW5cbiAgICAgbGV0IHsgRGVidWdfZmxhZ3MubG9nZ2luZ19maWx0ZXI7IHNob3VsZF9wcm9maWxlOyBzaG91bGRfZGVidWcgfSA9XG4gICAgICAgbGV0IGZpbHRlcl9uYW1lcyA9IEhhc2h0Ymwua2V5cyBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgfD4gU3RyaW5nLlNldC5vZl9saXN0IGluXG4gICAgICAgRGVidWdfZmxhZ3MuaW5pdF9hcHAgfmFwcF9pZDpiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCB+ZmlsdGVyX25hbWVzIH5kZWJ1ZyB+c3RvcFxuICAgICBpblxuICAgICBsZXQgaHRtbCA9IGdldF92aWV3ICgpIGluXG4gICAgIGxldCBodG1sX2RvbSA9IFZkb20uTm9kZS50b19kb20gaHRtbCBpblxuICAgICBsZXQgZWxlbSA9IERvbV9odG1sLmdldEVsZW1lbnRCeUlkX2V4biBiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCBpblxuICAgICBsZXQgcGFyZW50ID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdIChKcy5PcHQudG9fb3B0aW9uIGVsZW0jIy5wYXJlbnROb2RlKSBpblxuICAgICBEb20ucmVwbGFjZUNoaWxkIHBhcmVudCBodG1sX2RvbSBlbGVtO1xuICAgICAoKiB3ZSBtYWtlIHN1cmUgdG8gY2FsbCBbdmlld3BvcnRfY2hhbmdlZF0gd2hlbmV2ZXIgdGhlIHdpbmRvdyByZXNpemVzIG9yIHRoZSBzY3JvbGxcbiAgICAgICAgY29udGFpbmVyIGluIHdoaWNoIG91ciBIVE1MIGlzIGxvY2F0ZWQgaXMgc2Nyb2xsZWQuICopXG4gICAgIGxldCBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgZXZlbnRfbmFtZSB3aGVyZSA9XG4gICAgICAgaWdub3JlXG4gICAgICAgICAoRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiAgICAgICAgICAgIHdoZXJlXG4gICAgICAgICAgICAoRG9tLkV2ZW50Lm1ha2UgZXZlbnRfbmFtZSlcbiAgICAgICAgICAgIChEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgIHZpZXdwb3J0X2NoYW5nZWQgKCk7XG4gICAgICAgICAgICAgICBKcy5fdHJ1ZSkpXG4gICAgICAgICAgICBKcy5fZmFsc2VcbiAgICAgICAgICA6IERvbS5ldmVudF9saXN0ZW5lcl9pZClcbiAgICAgaW5cbiAgICAgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IFwic2Nyb2xsXCIgKEpzX21pc2MuZ2V0X3Njcm9sbF9jb250YWluZXIgaHRtbF9kb20pO1xuICAgICBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgXCJyZXNpemVcIiBEb21faHRtbC53aW5kb3c7XG4gICAgIGxldCViaW5kIHN0YXRlID1cbiAgICAgICBBcHAub25fc3RhcnR1cFxuICAgICAgICAgfnNjaGVkdWxlX2FjdGlvbjooZnVuIGEgLT4gVWlfZWZmZWN0LkV4cGVydC5oYW5kbGUgKEV2ZW50LmluamVjdCBhKSlcbiAgICAgICAgIChJbmNyLlZhci52YWx1ZSBtb2RlbF92KVxuICAgICBpblxuICAgICBsZXQgcHJldl9odG1sID0gcmVmIGh0bWwgaW5cbiAgICAgbGV0IHByZXZfZWx0ID0gcmVmIGh0bWxfZG9tIGluXG4gICAgIGxldCByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKSA9XG4gICAgICAgbGV0IGVsZW1lbnQgPSAhcHJldl9lbHQgaW5cbiAgICAgICAoKiBJZiB0aGUgZWxlbWVudCB0byBmb2N1cyBpcyBhbiBlbGVtZW50LCBjYXN0IGl0IGludG8gdGhlXG4gICAgICAgICAgbW9yZSBwZXJtaXNzaXZlIFwiZm9jdXNhYmxlXCIgdHlwZSBkZWZpbmVkIGF0IHRoZSB0b3Agb2ZcbiAgICAgICAgICB0aGlzIGZpbGUsIGFuZCB0aGVuIGZvY3VzIHRoYXQuICopXG4gICAgICAgRG9tX2h0bWwuQ29lcmNlVG8uZWxlbWVudCBlbGVtZW50XG4gICAgICAgfD4gSnMuT3B0LnRvX29wdGlvblxuICAgICAgIHw+IE9wdGlvbi5tYXAgfmY6YXNfZm9jdXNhYmxlXG4gICAgICAgfD4gT3B0aW9uLml0ZXIgfmY6KGZ1biBlbGVtZW50IC0+XG4gICAgICAgICBlbGVtZW50IyNmb2N1c1xuICAgICAgICAgICAob2JqZWN0JWpzXG4gICAgICAgICAgICAgdmFsIHByZXZlbnRTY3JvbGwgPSBKcy5fdHJ1ZVxuICAgICAgICAgICBlbmQpKVxuICAgICBpblxuICAgICBsZXQgdGltZXJfc3RhcnQgcyA9XG4gICAgICAgdGltZXJfc3RhcnQgcyB+ZGVidWc6KHNob3VsZF9kZWJ1ZyAoKSkgfnByb2ZpbGU6KHNob3VsZF9wcm9maWxlICgpKVxuICAgICBpblxuICAgICBsZXQgdGltZXJfc3RvcCBzID1cbiAgICAgICB0aW1lcl9zdG9wIHMgfmRlYnVnOihzaG91bGRfZGVidWcgKCkpIH5wcm9maWxlOihzaG91bGRfcHJvZmlsZSAoKSlcbiAgICAgaW5cbiAgICAgKCpcbiAgICAgICAgVGFrZSBhY3Rpb24gb24gYW55IGJsdXIgZXZlbnQsIHJlZm9jdXNpbmcgdG8gdGhlIHJvb3Qgbm9kZSBpZiB0aGUgcmVsYXRlZFRhcmdldCBpc1xuICAgICAgICBudWxsIG9yIHVuZGVmaW5lZCwgc2lnbmlmeWluZyB0aGF0IGZvY3VzIHdhcyBsb3N0IGFuZCB3b3VsZCBvdGhlcndpc2UgYmUgcmVzZXQgdG9cbiAgICAgICAgdGhlIGJvZHkgbm9kZS5cblxuICAgICAgICBUaGUgSnMuX3RydWUgcGFyYW1ldGVyIHByb3ZpZGVkIHRvIERvbS5hZGRFdmVudExpc3RlbmVyIGlzIHRoZSB1c2VDYXB0dXJlXG4gICAgICAgIHBhcmFtZXRlciBkZXNjcmliZWQgaGVyZTpcbiAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXJcbiAgICAgKilcbiAgICAgaWdub3JlXG4gICAgIEBAIERvbS5hZGRFdmVudExpc3RlbmVyXG4gICAgICAgICAgRG9tX2h0bWwud2luZG93XG4gICAgICAgICAgRG9tX2h0bWwuRXZlbnQuYmx1clxuICAgICAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICAgICAgICgqIFtKcy5VbnNhZmUuKl0gaXMgbGlrZSBbT2JqLm1hZ2ljXS4gV2Ugc2hvdWxkIGJlIGV4cGxpY2l0IGFib3V0IHdoYXQgd2VcbiAgICAgICAgICAgICAgICBleHBlY3QuICopXG4gICAgICAgICAgICAgbGV0IGVcbiAgICAgICAgICAgICAgIDogPCByZWxhdGVkVGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wID5cbiAgICAgICAgICAgICAgICAgICBKcy50XG4gICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlIGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCByZWxhdGVkX3RhcmdldCA9IGUjIy5yZWxhdGVkVGFyZ2V0IGluXG4gICAgICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCByZWxhdGVkX3RhcmdldCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKTtcbiAgICAgICAgICAgICBKcy5fdHJ1ZSkpXG4gICAgICAgICAgSnMuX3RydWU7XG4gICAgIGxldCB1cGRhdGVfdmlzaWJpbGl0eSAoKSA9XG4gICAgICAgVmlzaWJpbGl0eS5tYXJrX2NsZWFuIHZpc2liaWxpdHk7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X3VwZGF0ZV92aXNpYmlsaXR5ICgpKVxuICAgICAgICAgICB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGVcbiAgICAgICAgICAgKEluY3IuVmFyLmxhdGVzdF92YWx1ZSBtb2RlbF92KVxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiXG4gICAgIGluXG4gICAgIGxldCBtYXliZV9sb2dfYWN0aW9uID1cbiAgICAgICBsZXQgc2FmZV9maWx0ZXIgfm5hbWUgZmlsdGVyIGFjdGlvbiA9XG4gICAgICAgICBtYXRjaCBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGZpbHRlciBhY3Rpb24pIHdpdGhcbiAgICAgICAgIHwgT2sgc2hvdWxkX2xvZyAtPiBzaG91bGRfbG9nXG4gICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICBwcmludF9lcnJvcmYgIVwiRXhjZXB0aW9uIHJhaXNlZCBieSAlczogJXtFcnJvciNodW19XCIgbmFtZSBlcnI7XG4gICAgICAgICAgIGZhbHNlXG4gICAgICAgaW5cbiAgICAgICBsZXQgbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlID1cbiAgICAgICAgIENvcmUuTWVtby5vZl9jb21wYXJhYmxlXG4gICAgICAgICAgIChtb2R1bGUgTG9nZ2luZ19maWx0ZXIuU3RyaW5nX2JsYW5nKVxuICAgICAgICAgICAoZnVuIGJsYW5nIC0+XG4gICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBIYXNodGJsLmZpbmRfZXhuIG5hbWVkX2xvZ2dpbmdfZmlsdGVycyBpblxuICAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgIH5uYW1lOihzcHJpbnRmICFcIm5hbWVkIGZpbHRlciBibGFuZyBcXFwiJXtzZXhwOnN0cmluZyBCbGFuZy50fVxcXCJcIiBibGFuZylcbiAgICAgICAgICAgICAgICAobWF0Y2ggYmxhbmcgd2l0aFxuICAgICAgICAgICAgICAgICB8IEJhc2UgbmFtZSAtPiBmaWx0ZXIgbmFtZVxuICAgICAgICAgICAgICAgICB8IF8gLT4gZnVuIGFjdGlvbiAtPiBCbGFuZy5ldmFsIGJsYW5nIChmdW4gbmFtZSAtPiBmaWx0ZXIgbmFtZSBhY3Rpb24pKSlcbiAgICAgICBpblxuICAgICAgIGZ1biBhY3Rpb24gLT5cbiAgICAgICAgIGxldCBzaG91bGRfbG9nX2FjdGlvbiA9XG4gICAgICAgICAgIG1hdGNoIGxvZ2dpbmdfZmlsdGVyICgpIHdpdGhcbiAgICAgICAgICAgfCBBbGwgLT4gdHJ1ZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgfCBOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcgLT4gbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIGJsYW5nIGFjdGlvblxuICAgICAgICAgICB8IEN1c3RvbV9maWx0ZXIgZmlsdGVyIC0+XG4gICAgICAgICAgICAgc2FmZV9maWx0ZXJcbiAgICAgICAgICAgICAgIH5uYW1lOlwiY3VzdG9tIGZpbHRlclwiXG4gICAgICAgICAgICAgICAoZnVuIGFjdGlvbiAtPiBmaWx0ZXIgKEFwcC5BY3Rpb24uc2V4cF9vZl90IGFjdGlvbikpXG4gICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgIGluXG4gICAgICAgICBpZiBzaG91bGRfbG9nX2FjdGlvblxuICAgICAgICAgdGhlbiBBc3luY19qcy5sb2dfc19hc19zdHJpbmcgWyVtZXNzYWdlIFwiQWN0aW9uXCIgKGFjdGlvbiA6IEFwcC5BY3Rpb24udCldXG4gICAgIGluXG4gICAgIGxldCBhcHBseV9hY3Rpb24gYWN0aW9uID1cbiAgICAgICBtYXliZV9sb2dfYWN0aW9uIGFjdGlvbjtcbiAgICAgICBpZiBBcHAuYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gYWN0aW9uXG4gICAgICAgdGhlbiAoXG4gICAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCI7XG4gICAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemUtZm9yLWFjdGlvblwiKVxuICAgICAgIGVsc2UgaWYgc2hvdWxkX2RlYnVnICgpXG4gICAgICAgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgXCJhY3Rpb24gYXBwbGllZCB3aXRob3V0IHN0YWJpbGl6aW5nXCIpO1xuICAgICAgIGxldCBuZXdfbW9kZWwgPVxuICAgICAgICAgKGdldF9hcHBseV9hY3Rpb24gKCkpXG4gICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgICAgIGFjdGlvblxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsXG4gICAgIGluXG4gICAgIGxldCByZWMgYXBwbHlfYWN0aW9ucyAoKSA9XG4gICAgICAgbWF0Y2ggRGVxdWUuZGVxdWV1ZV9mcm9udCBhY3Rpb25fcXVldWUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBhY3Rpb24gLT5cbiAgICAgICAgIGFwcGx5X2FjdGlvbiBhY3Rpb247XG4gICAgICAgICBhcHBseV9hY3Rpb25zICgpXG4gICAgIGluXG4gICAgIGxldCBwZXJmb3JtX3VwZGF0ZSAoKSA9XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICAoKiBUaGUgY2xvY2sgaXMgc2V0IG9ubHkgb25jZSBwZXIgY2FsbCB0byBwZXJmb3JtX3VwZGF0ZSwgc28gdGhhdCBhbGwgYWN0aW9ucyB0aGF0XG4gICAgICAgICAgb2NjdXIgYmVmb3JlIGVhY2ggZGlzcGxheSB1cGRhdGUgb2NjdXIgXCJhdCB0aGUgc2FtZSB0aW1lLlwiICopXG4gICAgICAgbGV0IG5vdyA9XG4gICAgICAgICBsZXQgZGF0ZSA9IG5ldyVqcyBKcy5kYXRlX25vdyBpblxuICAgICAgICAgVGltZV9ucy5TcGFuLm9mX21zIGRhdGUjI2dldFRpbWUgfD4gVGltZV9ucy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgICAgaW5cbiAgICAgICBJbmNyLkNsb2NrLmFkdmFuY2VfY2xvY2sgSW5jci5jbG9jayB+dG9fOm5vdztcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ0b3RhbFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICBpZiBWaXNpYmlsaXR5LmlzX2RpcnR5IHZpc2liaWxpdHkgdGhlbiB1cGRhdGVfdmlzaWJpbGl0eSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICBhcHBseV9hY3Rpb25zICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJhcHBseSBhY3Rpb25zXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICAgIGxldCBodG1sID0gb3ZlcnJpZGVfcm9vdF9lbGVtZW50IGh0bWwgaW5cbiAgICAgICB0aW1lcl9zdGFydCBcImRpZmZcIjtcbiAgICAgICBsZXQgcGF0Y2ggPSBWZG9tLk5vZGUuUGF0Y2guY3JlYXRlIH5wcmV2aW91czohcHJldl9odG1sIH5jdXJyZW50Omh0bWwgaW5cbiAgICAgICB0aW1lcl9zdG9wIFwiZGlmZlwiO1xuICAgICAgIGlmIG5vdCAoVmRvbS5Ob2RlLlBhdGNoLmlzX2VtcHR5IHBhdGNoKSB0aGVuIFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5O1xuICAgICAgIHRpbWVyX3N0YXJ0IFwicGF0Y2hcIjtcbiAgICAgICBsZXQgZWx0ID0gVmRvbS5Ob2RlLlBhdGNoLmFwcGx5IHBhdGNoICFwcmV2X2VsdCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJwYXRjaFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwib25fZGlzcGxheVwiO1xuICAgICAgIChnZXRfb25fZGlzcGxheSAoKSkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlO1xuICAgICAgIHRpbWVyX3N0b3AgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgKEluY3IuVmFyLnZhbHVlIG1vZGVsX3YpO1xuICAgICAgIGxldCBvbGRfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgIXByZXZfaHRtbCBpblxuICAgICAgIGxldCBuZXdfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgaHRtbCBpblxuICAgICAgIGxldCB0YWdzX3RoZV9zYW1lID0gT3B0aW9uLmVxdWFsIFN0cmluZy5lcXVhbCBvbGRfdGFnX25hbWUgbmV3X3RhZ19uYW1lIGluXG4gICAgICAgcHJldl9odG1sIDo9IGh0bWw7XG4gICAgICAgcHJldl9lbHQgOj0gZWx0O1xuICAgICAgIHRpbWVyX3N0b3AgXCJ0b3RhbFwiO1xuICAgICAgIGlmIHNob3VsZF9kZWJ1ZyAoKSB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcIi0tLS0tLS1cIik7XG4gICAgICAgKCogQ2hhbmdpbmcgdGhlIHRhZyBuYW1lIGNhdXNlcyBmb2N1cyB0byBiZSBsb3N0LiAgUmVmb2N1cyBpbiB0aGF0IGNhc2UuICopXG4gICAgICAgaWYgbm90IHRhZ3NfdGhlX3NhbWUgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICBpblxuICAgICAoKiBXZSB1c2UgW3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSBzbyB0aGF0IGJyb3dzZXIgdGVsbHMgdXMgd2hlcmUgaXQncyB0aW1lIHRvXG4gICAgICAgIHJlZnJlc2ggdGhlIFVJLiBBbGwgdGhlIGFjdGlvbnMgd2lsbCBiZSBwcm9jZXNzZWQgYW5kIHRoZSBjaGFuZ2VzIHByb3BhZ2F0ZWRcbiAgICAgICAgdG8gdGhlIERPTSBpbiBvbmUgZnJhbWUuICopXG4gICAgIGxldCByZWMgY2FsbGJhY2sgKCkgPVxuICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgICAgIHRoZW4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2spXG4gICAgIGluXG4gICAgICgqIFdlIHdhbnQgdGhlIHJvb3QgZWxlbWVudCB0byBzdGFydCBvdXQgZm9jdXNlZCwgc28gcGVyZm9ybSBhbiBpbml0aWFsXG4gICAgICAgIHVwZGF0ZS9yZW5kZXIsIHRoZW4gaW1tZWRpYXRlbHkgZm9jdXMgdGhlIHJvb3QgKHVubGVzcyBhIG5vbi1ib2R5IGVsZW1lbnQgYWxyZWFkeVxuICAgICAgICBoYXMgZm9jdXMpLiAgVGhpcyBmb2N1c2luZyBjYW4ndCBoYXBwZW4gaW5zaWRlIG9mIHRoZSBgY2FsbGJhY2tgIGJlY2F1c2UgdGhlbiBpdFxuICAgICAgICB3b3VsZCByZWZvY3VzIHJvb3QgZXZlcnkgZnJhbWUuICAqKVxuICAgICBwZXJmb3JtX3VwZGF0ZSAoKTtcbiAgICAgKG1hdGNoIEpzLk9wdC50b19vcHRpb24gRG9tX2h0bWwuZG9jdW1lbnQjIy5hY3RpdmVFbGVtZW50IHdpdGhcbiAgICAgIHwgU29tZSBlbCAtPiBpZiBKcy5PcHQudGVzdCAoRG9tX2h0bWwuQ29lcmNlVG8uYm9keSBlbCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICAgfCBOb25lIC0+IHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpKTtcbiAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2s7XG4gICAgIERlZmVycmVkLm5ldmVyICgpKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN0YXJ0X2JvbnNhaSA9IHN0YXJ0X2JvbnNhaVxuZW5kXG5cbmxldCBzdGFydFxuICAgICAgKHR5cGUgbW9kZWwgYWN0aW9uKVxuICAgICAgPyhkZWJ1ZyA9IGZhbHNlKVxuICAgICAgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpXG4gICAgICA/KG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9IFtdKVxuICAgICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgICB+aW5pdGlhbF9tb2RlbFxuICAgICAgKG1vZHVsZSBBcHAgOiBBcHBfaW50Zi5TIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWwgYW5kIHR5cGUgQWN0aW9uLnQgPSBhY3Rpb24pXG4gID1cbiAgc3RhcnRfYm9uc2FpXG4gICAgfmRlYnVnXG4gICAgfnN0b3BcbiAgICB+bmFtZWRfbG9nZ2luZ19maWx0ZXJzXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgfmluaXRpYWxfbW9kZWxcbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgaW5jbHVkZSBBcHBcblxuICAgICAgbGV0IGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIF8gPSB0cnVlXG5cbiAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0ID1cbiAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgIGxldCVtYXAgY29tcG9uZW50ID0gY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWwgfmluamVjdCBpblxuICAgICAgICBsZXQgdmlldyA9IENvbXBvbmVudC52aWV3IGNvbXBvbmVudCBpblxuICAgICAgICBsZXQgYXBwbHlfYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9ldmVudCBfbW9kZWwgYWN0aW9uID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50LmFwcGx5X2FjdGlvbiBjb21wb25lbnQgYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5IF9tb2RlbCB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQudXBkYXRlX3Zpc2liaWxpdHkgY29tcG9uZW50IH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9uX2Rpc3BsYXkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50ID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50Lm9uX2Rpc3BsYXkgY29tcG9uZW50IHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgeyBBcHBfaW50Zi5Qcml2YXRlLnZpZXc7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXkgfVxuICAgICAgOztcbiAgICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tLlZkb21cbmluY2x1ZGUgVmRvbV9pbnB1dF93aWRnZXRzX2ludGZcblxubW9kdWxlIERlY2ltYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXRcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIHQpXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJDYW5ub3QgcmVwcmVzZW50IG5vbi1maW5pdGUgZmxvYXQgYXMgZGVjaW1hbDogJWZcIiB0ICgpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgdCA9IEZsb2F0Lm9mX3N0cmluZyBzIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9XG4gICAgaW52YXJpYW50IHQ7XG4gICAgc3ByaW50ZiBcIiUuMTJnXCIgdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBWYWxpZGF0ZWQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEluaXRpYWxcbiAgICAoKiBUaGlzIGlzIHVzZWQgdG8gYXZvaWQgbWFya2luZyBhcyBpbnZhbGlkIGEgZmllbGQgdGhhdCBoYXNuJ3QgZXZlciBiZWVuXG4gICAgICAgdG91Y2hlZCBieSB0aGUgdXNlciwgdG8gaW1wcm92ZSBVWC4gKilcbiAgICB8IFZhbGlkIG9mXG4gICAgICAgIHsgaW5wdXQgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgfCBJbnZhbGlkIG9mXG4gICAgICAgIHsgaW5wdXQgOiBzdHJpbmdcbiAgICAgICAgOyBsYXN0X3ZhbGlkIDogJ2Egb3B0aW9uXG4gICAgICAgIDsgZXJyb3IgOiBzdHJpbmdcbiAgICAgICAgfVxuICBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIHR5cGUgJ2EgdXBkYXRlID0gJ2EgdCBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCBsaWZ0ICh0eXBlIGEpIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IGEgdFxuXG4gICAgICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBJbml0aWFsIC0+IFwiXCJcbiAgICAgICAgfCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBfOyBlcnJvciA9IF8gfSAtPiBpbnB1dFxuICAgICAgICB8IFZhbGlkIHsgaW5wdXQ7IHZhbHVlIH0gLT5cbiAgICAgICAgICAobWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgaW5wdXQgLT4gaW5wdXRcbiAgICAgICAgICAgfCBOb25lIC0+IE0udG9fc3RyaW5nIHZhbHVlKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IFZhbGlkIHsgaW5wdXQgPSBTb21lIHM7IHZhbHVlID0gTS5vZl9zdHJpbmcgcyB9IHdpdGhcbiAgICAgICAgfCBleG4gLT4gSW52YWxpZCB7IGlucHV0ID0gczsgbGFzdF92YWxpZCA9IE5vbmU7IGVycm9yID0gRXhuLnRvX3N0cmluZyBleG4gfVxuICAgICAgOztcbiAgICBlbmQgOiBTdHJpbmdhYmxlLlNcbiAgICAgIHdpdGggdHlwZSB0ID0gYSB0KVxuICA7O1xuXG4gIGxldCBpbml0aWFsX2VtcHR5ID0gSW5pdGlhbFxuICBsZXQgcmV0dXJuIHZhbHVlID0gVmFsaWQgeyBpbnB1dCA9IE5vbmU7IHZhbHVlIH1cblxuICBsZXQgZ2V0X2N1cnJlbnQgPSBmdW5jdGlvblxuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlIH0gLT4gU29tZSB2YWx1ZVxuICAgIHwgSW52YWxpZCBfIHwgSW5pdGlhbCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9sYXN0ID0gZnVuY3Rpb25cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSB9IC0+IFNvbWUgdmFsdWVcbiAgICB8IEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQ7IGVycm9yID0gXyB9IC0+IGxhc3RfdmFsaWRcbiAgICB8IEluaXRpYWwgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfZXJyb3IgPSBmdW5jdGlvblxuICAgIHwgSW5pdGlhbCB8IFZhbGlkIF8gLT4gTm9uZVxuICAgIHwgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZCA9IF87IGVycm9yIH0gLT4gU29tZSBlcnJvclxuICA7O1xuXG4gIGxldCBpc19pbnZhbGlkID0gZnVuY3Rpb25cbiAgICB8IEludmFsaWQgXyAtPiB0cnVlXG4gICAgfCBWYWxpZCBfIHwgSW5pdGlhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19pbml0aWFsX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEluaXRpYWwgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgb2xkIG5ld18gPVxuICAgIG1hdGNoIG9sZCwgbmV3XyB3aXRoXG4gICAgfCBJbml0aWFsLCBfIC0+IG5ld19cbiAgICB8IF8sIFZhbGlkIF8gLT4gbmV3X1xuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlID0gb2xkIH0sIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IF87IGVycm9yIH0gLT5cbiAgICAgIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IFNvbWUgb2xkOyBlcnJvciB9XG4gICAgfCAoIEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQ7IGVycm9yID0gXyB9XG4gICAgICAsIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IE5vbmU7IGVycm9yIH0gKSAtPlxuICAgICAgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkOyBlcnJvciB9XG4gICAgfCBJbnZhbGlkIF8sIEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQgPSBTb21lIF87IGVycm9yID0gXyB9IC0+IG5ld19cbiAgICB8IF8sIEluaXRpYWwgLT4gb2xkXG4gIDs7XG5lbmRcblxubGV0IG1heWJlX2ludmFsaWQgdmFsaWRhdGVkIGF0dHJzID1cbiAgaWYgVmFsaWRhdGVkLmlzX2ludmFsaWQgdmFsaWRhdGVkXG4gIHRoZW4gQXR0ci5jcmVhdGUgXCJhcmlhLWludmFsaWRcIiBcInRydWVcIiA6OiBhdHRyc1xuICBlbHNlIGF0dHJzXG47O1xuXG5tb2R1bGUgVGltZV9jb21wYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVGltZV9ucy5PZmRheS50XG5cbiAgICBsZXQgb2Zfc3RyaW5nID0gVGltZV9ucy5PZmRheS5vZl9zdHJpbmdcblxuICAgICgqIFRoZSBicm93c2VyIGV4cGVjdHMgYSBISDptbSBmb3JtYXQgd2l0aCBvcHRpb25hbCB0cmFpbGluZyBcIjpzc1wiIG9yIFwiOnNzLlNTU1wiO1xuICAgICAgIFtUaW1lX25zLk9mZGF5LnRvX3N0cmluZ10gcHJvdmlkZXMgcHJlY2lzaW9uIGluIG5hbm9zZWNvbmRzLCB3aGljaCBpcyB0b28gbXVjaC4gKilcbiAgICBsZXQgdG9fc3RyaW5nID0gVGltZV9ucy5PZmRheS50b19taWxsaXNlY29uZF9zdHJpbmdcbiAgZW5kXG5cbiAgbGV0IHpvbmVkIHpvbmUgOiAobW9kdWxlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IFRpbWVfbnMudCkgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBUaW1lX25zLnRcblxuICAgICAgKCogRm9ybWF0IGZyb20gdGhlIGJyb3dzZXI6IHl5eXktTU0tZGRUaGg6bW0gKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIGxldCBwYXJ0cyA9IFN0cmluZy5zcGxpdF9vbl9jaGFycyBzIH5vbjpbICdUJzsgJzonIF0gaW5cbiAgICAgICAgbGV0IGRhdGUgPSBMaXN0Lm50aF9leG4gcGFydHMgMCB8PiBEYXRlLm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgaHIgPSBMaXN0Lm50aF9leG4gcGFydHMgMSB8PiBJbnQub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBtaW4gPSBMaXN0Lm50aF9leG4gcGFydHMgMiB8PiBJbnQub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBvZmRheSA9IFRpbWVfbnMuT2ZkYXkuY3JlYXRlIH5ociB+bWluICgpIGluXG4gICAgICAgIFRpbWVfbnMub2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICBsZXQgcyA9IFRpbWVfbnMudG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgfnpvbmUgdCBpblxuICAgICAgICAoKiBUaGUgYnJvd3NlciBleHBlY3QgYSB5eXl5LU1NLWRkVGhoOm1tIGZvcm1hdCBhbmQgaXQgYWxsb3dzXG4gICAgICAgICAgIHRyYWlsaW5nIFwiOnNzXCIgb3IgXCI6c3MuU1NTXCIuXG5cbiAgICAgICAgICAgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgZm9ybWF0OiAyMDE5LTAxLTMwVDAxOjAwOjAwLjAwMDAwMDAwMCswMTowMFxuXG4gICAgICAgICAgIGRlc2lyZWQgZm9ybWF0IGFmdGVyIGN1dHRpbmc6ICAgMjAxOS0wMS0zMFQwMTowMDowMFxuICAgICAgICAqKVxuICAgICAgICBTdHJpbmcubHNwbGl0Ml9leG4gfm9uOicuJyBzIHw+IFR1cGxlMi5nZXQxXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5sZXQgbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkIGF0dHJzID0gaWYgZGlzYWJsZWQgdGhlbiBBdHRyLmRpc2FibGVkIDo6IGF0dHJzIGVsc2UgYXR0cnNcbmxldCBhZGRfYXR0cnMgYXR0cnMnIGF0dHJzID0gYXR0cnMgQCBhdHRycycgfD4gQXR0cnMubWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXG5cbmxldCBzdHJ1Y3R1cmFsX2xpc3QgPyhvcmllbnRhdGlvbiA9IGBWZXJ0aWNhbCkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgbGF5b3V0X3N0eWxlID1cbiAgICBtYXRjaCBvcmllbnRhdGlvbiB3aXRoXG4gICAgfCBgVmVydGljYWwgLT4gQ3NzX2dlbi4oZGlzcGxheSBgQmxvY2spXG4gICAgfCBgSG9yaXpvbnRhbCAtPiBDc3NfZ2VuLihkaXNwbGF5IGBJbmxpbmVfYmxvY2spXG4gIGluXG4gIE5vZGUudWxcbiAgICB+YXR0cjpcbiAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgKFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwibGlzdC1zdHlsZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiBtYXJnaW5fbGVmdCAoYFB4IDApKVxuICAgICAgICAgIF1cbiAgICAgICAgICB8PiBhZGRfYXR0cnMgYXR0cnMpKVxuICAgIChMaXN0Lm1hcCBjaGlsZHJlbiB+ZjooZnVuIGNoaWxkIC0+IE5vZGUubGkgfmF0dHI6KEF0dHIuc3R5bGUgbGF5b3V0X3N0eWxlKSBbIGNoaWxkIF0pKVxuOztcblxubW9kdWxlIFZhbHVlX25vcm1hbGl6aW5nX2hvb2sgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVuc2FmZSA9IEpzX29mX29jYW1sLkpzLlVuc2FmZVxuICBvcGVuIEpzX29mX29jYW1sXG4gIG9wZW4gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcblxuICBsZXQgaXNfYWN0aXZlIGVsZW1lbnQgPVxuICAgIGxldCBkb2N1bWVudF9hY3RpdmVfZWxlbWVudCA9IFVuc2FmZS5nZXQgZG9jdW1lbnQgKEpzLnN0cmluZyBcImFjdGl2ZUVsZW1lbnRcIikgaW5cbiAgICBwaHlzX2VxdWFsIGVsZW1lbnQgZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnRcbiAgOztcblxuICBsZXQgdmFsdWVfcHJvcGVydHkgPSBKcy5zdHJpbmcgXCJ2YWx1ZVwiXG4gIGxldCBnZXRfdmFsdWUgZWxlbWVudCA6ICdhIEpzLnQgPSBVbnNhZmUuZ2V0IGVsZW1lbnQgdmFsdWVfcHJvcGVydHlcbiAgbGV0IHNldF92YWx1ZSBlbGVtZW50IHZhbHVlID0gVW5zYWZlLnNldCBlbGVtZW50IHZhbHVlX3Byb3BlcnR5IHZhbHVlXG5cbiAgbGV0IGluc3RhbGxfZXZlbnRfaGFuZGxlciBlbGVtZW50IH5mID1cbiAgICAoKiBUaGlzIGV2ZW50IGhhbmRsZXIgbm9ybWFsaXplcyB0aGUgdmFsdWUgb24gdGhlIGlucHV0IGVsZW1lbnQgb24gdGhlIFtjaGFuZ2VdIGV2ZW50LlxuICAgICAgIEZvciBhIHRleHQgZW50cnksIHRoaXMgbWVhbnMgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGVudGVyLCBhbmQgd2hlbiB0aGUgdXNlciBibHVyc1xuICAgICAgIHRoZSBlbGVtZW50LiBXaHkgZG9uJ3Qgd2Ugc2ltcGx5IFt0b19zdHJpbmddIHRoZSB2YWx1ZSBpbiB0aGUgbW9kZWw/IEJlY2F1c2UgZm9yXG4gICAgICAgc29tZSBpbnB1dCBlbGVtZW50cywgeW91IGNhbiBoYXZlIGEgY2hhbmdlIGV2ZW50IHRoYXQgZmlyZXMgYWZ0ZXIgdGhlIHZhbHVlIGNoYW5nZXNcbiAgICAgICBidXQgYmVmb3JlIFtJbmNyX2RvbV0gY2FuIHVwZGF0ZSB0aGUgbW9kZWwuIEZvciBleGFtcGxlLCB0aGlzIGhhcHBlbnMgd2hlbiB5b3VcbiAgICAgICBwcmVzcyB0aGUgdXAgYXJyb3cgb24gYSBudW1iZXIgaW5wdXQuIFRoaXMgbGVhZHMgdG8gYSBidWcgd2hlcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgICAgIG1vZGVsIHN3YXBzIGJhY2sgYW5kIGZvcnRoIHdpdGggdGhlIHZhbHVlIGluIHRoZSBlbGVtZW50LiAqKVxuICAgIGxldCBjaGFuZ2VfaGFuZGxlciBfID1cbiAgICAgIGxldCB2YWx1ZSA9IEpzLnRvX3N0cmluZyAoZ2V0X3ZhbHVlIGVsZW1lbnQpIGluXG4gICAgICBPcHRpb24uaXRlciAoZiB2YWx1ZSkgfmY6KGZ1biBub3JtYWxpemVkIC0+XG4gICAgICAgIHNldF92YWx1ZSBlbGVtZW50IChKcy5zdHJpbmcgbm9ybWFsaXplZCkpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIGxldCBjaGFuZ2VfaGFuZGxlciA9IERvbS5oYW5kbGVyIGNoYW5nZV9oYW5kbGVyIGluXG4gICAgYWRkRXZlbnRMaXN0ZW5lciBlbGVtZW50IEV2ZW50LmNoYW5nZSBjaGFuZ2VfaGFuZGxlciBKcy5fZmFsc2VcbiAgOztcblxuICBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0geyBtdXRhYmxlIGV2ZW50X2lkIDogZXZlbnRfbGlzdGVuZXJfaWQgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHZhbHVlIDogc3RyaW5nXG4gICAgICAgIDsgZiA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIH1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB7IHZhbHVlOyBfIH0gPSBTZXhwLkF0b20gdmFsdWVcbiAgICAgIGxldCBjb21iaW5lIF9sZWZ0IHJpZ2h0ID0gcmlnaHRcbiAgICBlbmRcblxuICAgIGxldCBpbml0IHsgSW5wdXQudmFsdWU7IGYgfSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAoaXNfYWN0aXZlIGVsZW1lbnQpIHRoZW4gc2V0X3ZhbHVlIGVsZW1lbnQgKEpzLnN0cmluZyB2YWx1ZSk7XG4gICAgICBsZXQgZXZlbnRfaWQgPSBpbnN0YWxsX2V2ZW50X2hhbmRsZXIgZWxlbWVudCB+ZiBpblxuICAgICAgeyBTdGF0ZS5ldmVudF9pZCB9XG4gICAgOztcblxuICAgIGxldCBvbl9tb3VudCBfaW5wdXQgX3N0YXRlIF9lbGVtZW50ID0gKClcbiAgICBsZXQgZGVzdHJveSBfaW5wdXQgeyBTdGF0ZS5ldmVudF9pZCB9IF9lbGVtZW50ID0gcmVtb3ZlRXZlbnRMaXN0ZW5lciBldmVudF9pZFxuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQgc3RhdGUgZWxlbWVudCA9XG4gICAgICBkZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgICAgbGV0IHsgU3RhdGUuZXZlbnRfaWQgfSA9IGluaXQgbmV3X2lucHV0IGVsZW1lbnQgaW5cbiAgICAgIHN0YXRlLlN0YXRlLmV2ZW50X2lkIDwtIGV2ZW50X2lkXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBBdHRyLkhvb2tzLk1ha2UgKE0pXG5cbiAgKCogW2NyZWF0ZSB2YWx1ZSB+Zl0gd2lsbCBzZXQgdGhlIFwidmFsdWVcIiBwcm9wZXJ0eSB0byBbdmFsdWVdIGlmIHRoZSBlbGVtZW50IGlzIG5vdFxuICAgICBmb2N1c2VkIGFuZCBvbiBlYWNoIGNoYW5nZSwgcnVuIHRoZSBjdXJyZW50IHZhbHVlIHRocm91Z2ggW2ZdIHRvIHJlLXNldCBpdC4gQWdhaW4sXG4gICAgIHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZSBlbGVtZW50IGlzIG5vdCBmb2N1c2VkLiBJZiBbZl0gcmV0dXJucyBbTm9uZV0sIG5vIGNoYW5nZVxuICAgICB0YWtlcyBwbGFjZS4gKilcbiAgbGV0IGNyZWF0ZSB2YWx1ZSB+ZiA9IEF0dHIuY3JlYXRlX2hvb2sgXCJ2YWx1ZTpub3JtYWxpemVkXCIgKGNyZWF0ZSB7IHZhbHVlOyBmIH0pXG5lbmRcblxubW9kdWxlIERyb3Bkb3duID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmVxdWFsXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgTm9kZS5zZWxlY3RcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci5jbGFzc18gXCJ3aWRnZXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgOyBBdHRyLm9uX2NoYW5nZSAoZnVuIF8gdmFsdWUgLT5cbiAgICAgICAgICAgICAgICBvbl9jaGFuZ2UgKEludC5vZl9zdHJpbmcgdmFsdWUgfD4gTGlzdC5udGhfZXhuIHZhbHVlcykpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICAoTGlzdC5tYXBpIHZhbHVlcyB+ZjooZnVuIGluZGV4IHZhbHVlIC0+XG4gICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICB+YXR0cjpcbiAgICAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAgICBbIEF0dHIudmFsdWUgKEludC50b19zdHJpbmcgaW5kZXgpXG4gICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIChlcXVhbCB2YWx1ZSBzZWxlY3RlZClcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICBbIE5vZGUudGV4dCAodG9fc3RyaW5nIHZhbHVlKSBdKSlcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IHZhbHVlcyA9IE5vbmUgOjogTGlzdC5tYXAgdmFsdWVzIH5mOk9wdGlvbi5zb21lIGluXG4gICAgbGV0IHRvX3N0cmluZyA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6XCJcIiB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIE0uYWxsXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1fb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGxldCB2YWx1ZXMgPSBOb25lIDo6IExpc3QubWFwIE0uYWxsIH5mOk9wdGlvbi5zb21lIGluXG4gICAgbGV0IHRvX3N0cmluZyA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6XCJcIiB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5lbmRcblxubW9kdWxlIENoZWNrYm94ID0gc3RydWN0XG4gIGxldCBpbXBsID8oZXh0cmFfYXR0cnMgPSBbXSkgPyhkaXNhYmxlZCA9IGZhbHNlKSB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSAoKSA9XG4gICAgTm9kZS5sYWJlbFxuICAgICAgfmF0dHI6KEF0dHIubWFueV93aXRob3V0X21lcmdlIGV4dHJhX2F0dHJzKVxuICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgfmF0dHI6XG4gICAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSAoKSlcbiAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBpc19jaGVja2VkXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZCkpXG4gICAgICAgICAgW11cbiAgICAgIDsgTm9kZS50ZXh0IGxhYmVsXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHNpbXBsZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkIH5pc19jaGVja2VkIH5sYWJlbCB+b25fdG9nZ2xlICgpID1cbiAgICBOb2RlLmRpdlxuICAgICAgfmF0dHI6KEF0dHIuY2xhc3NfIFwiY2hlY2tib3gtY29udGFpbmVyXCIpXG4gICAgICBbIGltcGwgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSAoKSBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENoZWNrbGlzdCA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgID1cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LWNoZWNrbGlzdFwiOyBcImNoZWNrYm94LWNvbnRhaW5lclwiIF0gXVxuICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgIChMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biBpdGVtIC0+XG4gICAgICAgICBDaGVja2JveC5pbXBsXG4gICAgICAgICAgIH5leHRyYV9hdHRyc1xuICAgICAgICAgICB+ZGlzYWJsZWRcbiAgICAgICAgICAgfmlzX2NoZWNrZWQ6KGlzX2NoZWNrZWQgaXRlbSlcbiAgICAgICAgICAgfmxhYmVsOih0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgfm9uX3RvZ2dsZTooZnVuICgpIC0+IG9uX3RvZ2dsZSBpdGVtKVxuICAgICAgICAgICAoKSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IERpc3BsYXkgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgID1cbiAgICBpbXBsID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgdmFsdWVzIH5pc19jaGVja2VkIH5vbl90b2dnbGUgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICA9XG4gICAgaW1wbCA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkIE0uYWxsIH5pc19jaGVja2VkIH5vbl90b2dnbGUgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9fYWN0aW9uXG4gICAgICB8IENsZWFyX2FsbFxuICAgICAgfCBTZWxlY3RfYWxsXG4gIGVuZFxuXG4gIGxldCBpbXBsXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/KHJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yID0gUmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IuTm9fYWN0aW9uKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgP3NpemVcbiAgICAgICAgKG1vZHVsZSBNIDogU2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICAgIGxldCBzaXplID0gT3B0aW9uLnZhbHVlIHNpemUgfmRlZmF1bHQ6KExpc3QubGVuZ3RoIHZhbHVlcykgaW5cbiAgICBsZXQgYXR0cnMgPVxuICAgICAgWyBBdHRyLmNyZWF0ZSBcIm11bHRpcGxlXCIgXCJcIlxuICAgICAgOyBBdHRyLmNyZWF0ZSBcInNpemVcIiAoSW50LnRvX3N0cmluZyBzaXplKVxuICAgICAgOyBBdHRyLm9uX2NoYW5nZSAoZnVuIGV2dCAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5iaW5kIGV2dCMjLnRhcmdldCBEb21faHRtbC5Db2VyY2VUby5zZWxlY3QpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgdGFyZ2V0IC0+IHRhcmdldFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgXCJNdWx0aV9zZWxlY3QgW29uX2NoYW5nZV0gZXZlbnQgZmlyZWQgd2l0aCBhIG1pc3NpbmcgdGFyZ2V0IG9yIHRhcmdldCBcXFxuICAgICAgICAgICAgICAgICB0aGF0IHdhcyBub3QgYSBzZWxlY3QgZWxlbWVudC5cIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGNvbGxlY3Rpb25fdG9fbGlzdCBjb2xsZWN0aW9uID1cbiAgICAgICAgICAgIExpc3QuaW5pdCBjb2xsZWN0aW9uIyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuZ2V0IChjb2xsZWN0aW9uIyNpdGVtIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvcHRpb25zID0gY29sbGVjdGlvbl90b19saXN0IHRhcmdldCMjLm9wdGlvbnMgaW5cbiAgICAgICAgICBsZXQgc2VsZWN0ZWRfdmFsdWVzID1cbiAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC56aXBfZXhuIHZhbHVlcyBvcHRpb25zKSB+ZjooZnVuICh2YWx1ZSwgb3B0aW9uKSAtPlxuICAgICAgICAgICAgICBPcHRpb24uc29tZV9pZiAoSnMudG9fYm9vbCBvcHRpb24jIy5zZWxlY3RlZCkgdmFsdWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBvbl9jaGFuZ2UgKFNldC5vZl9saXN0IChtb2R1bGUgTSkgc2VsZWN0ZWRfdmFsdWVzKSlcbiAgICAgIF1cbiAgICAgIEAgZXh0cmFfYXR0cnNcbiAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgIGluXG4gICAgbGV0IG9wdGlvbnMgPVxuICAgICAgTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gdmFsdWUgLT5cbiAgICAgICAgbGV0IGlzX3NlbGVjdGVkID0gU2V0Lm1lbSBzZWxlY3RlZCB2YWx1ZSBpblxuICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICgqIFtBdHRyLmJvb2xfcHJvcGVydHldIGtlZXBzIHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW9uIGluIHN5bmMgYnkgc2V0dGluZyB0aGUgSlNcbiAgICAgICAgICAgICBwcm9wZXJ0eS4gW0F0dHIuc2VsZWN0ZWRdIG1vZGlmaWVzIHRoZSBET00gYXR0cmlidXRlIHNvIHRoYXQgc2VsZWN0ZWQgb3B0aW9uc1xuICAgICAgICAgICAgIGNhbiBiZSBzdHlsZWQgd2l0aCBDU1MuIFtBdHRyLnNlbGVjdGVkXSBhbG9uZSBkb2VzIG5vdCB1cGRhdGUgdGhlIHN0YXRlXG4gICAgICAgICAgICAgcHJvcGVybHkgaWYgdGhlIG1vZGVsIGNoYW5nZXMsIHNvIGJvdGggYXJlIG5lZWRlZC4gKilcbiAgICAgICAgICB+YXR0cjpcbiAgICAgICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAgICAgKFsgU29tZSAoQXR0ci5ib29sX3Byb3BlcnR5IFwic2VsZWN0ZWRcIiBpc19zZWxlY3RlZClcbiAgICAgICAgICAgICAgICA7IFNvbWVcbiAgICAgICAgICAgICAgICAgICAgKEF0dHIub25fY2xpY2sgKGZ1biBldnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhc19yZXBlYXRlZF9jbGljayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoSnMudG9fYm9vbCBldnQjIy5jdHJsS2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTZXQuZXF1YWwgc2VsZWN0ZWQgKFNldC5zaW5nbGV0b24gKG1vZHVsZSBNKSB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggd2FzX3JlcGVhdGVkX2NsaWNrLCByZXBlYXRlZF9jbGlja19iZWhhdmlvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgZmFsc2UsIF8gfCB0cnVlLCBOb19hY3Rpb24gLT4gRWZmZWN0Lklnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICB8IHRydWUsIENsZWFyX2FsbCAtPiBvbl9jaGFuZ2UgKFNldC5lbXB0eSAobW9kdWxlIE0pKVxuICAgICAgICAgICAgICAgICAgICAgICB8IHRydWUsIFNlbGVjdF9hbGwgLT4gb25fY2hhbmdlIChTZXQub2ZfbGlzdCAobW9kdWxlIE0pIHZhbHVlcykpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB8PiBMaXN0LmZpbHRlcl9vcHQpKVxuICAgICAgICAgIFsgTm9kZS50ZXh0IChNLnRvX3N0cmluZyB2YWx1ZSkgXSlcbiAgICBpblxuICAgIE5vZGUuc2VsZWN0IH5hdHRyOihBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBhdHRycykgb3B0aW9uc1xuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IFNldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3NpemVcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIHZhbHVlc1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW1fc2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICBNLmFsbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5lbmRcblxubW9kdWxlIEVudHJ5ID0gc3RydWN0XG4gIG1vZHVsZSBDYWxsX29uX2lucHV0X3doZW4gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBUZXh0X2NoYW5nZWRcbiAgICAgIHwgRW50ZXJfa2V5X3ByZXNzZWRfb3JfZm9jdXNfbG9zdFxuXG4gICAgbGV0IGxpc3RlbmVyID0gZnVuY3Rpb25cbiAgICAgIHwgVGV4dF9jaGFuZ2VkIC0+IEF0dHIub25faW5wdXRcbiAgICAgIHwgRW50ZXJfa2V5X3ByZXNzZWRfb3JfZm9jdXNfbG9zdCAtPiBBdHRyLm9uX2NoYW5nZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBub3JtYWxpemUgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TKSBzID1cbiAgICBtYXRjaCBNLnRvX3N0cmluZyAoTS5vZl9zdHJpbmcgcykgd2l0aFxuICAgIHwgZXhjZXB0aW9uIF8gLT4gU29tZSBcIlwiXG4gICAgfCB2IC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuIGF0dHJzID1cbiAgICBtYXRjaCBvbl9yZXR1cm4gd2l0aFxuICAgIHwgTm9uZSAtPiBhdHRyc1xuICAgIHwgU29tZSBvbl9yZXR1cm4gLT5cbiAgICAgIEF0dHIub25fa2V5ZG93biAoZnVuIGV2IC0+XG4gICAgICAgIGlmIGV2IyMua2V5Q29kZSA9IDEzIHRoZW4gb25fcmV0dXJuICgpIGVsc2UgRWZmZWN0Lklnbm9yZSlcbiAgICAgIDo6IGF0dHJzXG4gIDs7XG5cbiAgbGV0IGlucHV0X25vZGUgPyhleHRyYV9hdHRycyA9IFtdKSA/KGRpc2FibGVkID0gZmFsc2UpID8ocGxhY2Vob2xkZXIgPSBcIlwiKSBhdHRycyA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoYXR0cnNcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXI7IEF0dHIuY3JlYXRlIFwic3BlbGxjaGVja1wiIFwiZmFsc2VcIiBdXG4gICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbXVxuICA7O1xuXG4gIGxldCByYXcgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgP29uX3JldHVybiB+dmFsdWUgfm9uX2lucHV0ICgpID1cbiAgICBbIEF0dHIuc3RyaW5nX3Byb3BlcnR5IFwidmFsdWVcIiB2YWx1ZTsgQXR0ci5vbl9pbnB1dCAoZnVuIF9ldiAtPiBvbl9pbnB1dCkgXVxuICAgIHw+IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm5cbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyXG4gIDs7XG5cbiAgbGV0IHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhzaG91bGRfbm9ybWFsaXplID0gdHJ1ZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnR5cGVfYXR0cnNcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBsZXQgdmFsdWUgPVxuICAgICAgbGV0IHZhbHVlID0gT3B0aW9uLnZhbHVlX21hcCB+ZjpNLnRvX3N0cmluZyB2YWx1ZSB+ZGVmYXVsdDpcIlwiIGluXG4gICAgICBpZiBzaG91bGRfbm9ybWFsaXplXG4gICAgICB0aGVuIFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOihub3JtYWxpemUgKG1vZHVsZSBNKSlcbiAgICAgIGVsc2UgVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6KGNvbnN0IE5vbmUpXG4gICAgaW5cbiAgICBbIENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IG9uX2lucHV0IE5vbmVcbiAgICAgICAgfCBzIC0+IG9uX2lucHV0IChPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBNLm9mX3N0cmluZyBzKSkpXG4gICAgOyB2YWx1ZVxuICAgIF1cbiAgICB8PiBhZGRfYXR0cnMgdHlwZV9hdHRyc1xuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXJcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nYWJsZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInRleHRcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/b25fcmV0dXJuXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IChtb2R1bGUgVikgPSBWYWxpZGF0ZWQubGlmdCAobW9kdWxlIE0pIGluXG4gICAgbGV0IHZhbHVlX2F0dHIgPVxuICAgICAgbWF0Y2ggKHZhbHVlIDogVi50KSB3aXRoXG4gICAgICB8IEluaXRpYWwgLT4gQXR0ci5zdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIFwiXCJcbiAgICAgIHwgXyAtPiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSAoVi50b19zdHJpbmcgdmFsdWUpIH5mOihub3JtYWxpemUgKG1vZHVsZSBWKSlcbiAgICBpblxuICAgIFsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+XG4gICAgICAgIG9uX2lucHV0IChWLm9mX3N0cmluZyBzKSlcbiAgICA7IHZhbHVlX2F0dHJcbiAgICA7IEF0dHIudHlwZV8gXCJ0ZXh0XCJcbiAgICBdXG4gICAgfD4gbWF5YmVfb25fcmV0dXJuIG9uX3JldHVyblxuICAgIHw+IG1heWJlX2ludmFsaWQgdmFsdWVcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyXG4gIDs7XG5cbiAgbGV0IHRleHQgP2V4dHJhX2F0dHJzID9jYWxsX29uX2lucHV0X3doZW4gP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+dmFsdWUgfm9uX2lucHV0ICgpID1cbiAgICBvZl9zdHJpbmdhYmxlXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFN0cmluZylcbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IG51bWJlclxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcIm51bWJlclwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IHJhbmdlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5zdGVwXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwicmFuZ2VcIjsgQXR0ci5jcmVhdGVfZmxvYXQgXCJzdGVwXCIgc3RlcCBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCB0aW1lID9leHRyYV9hdHRycyA/Y2FsbF9vbl9pbnB1dF93aGVuID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfnZhbHVlIH5vbl9pbnB1dCAoKSA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgVGltZV9jb21wYXQuT2ZkYXkpXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwidGltZVwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IGRhdGUgP2V4dHJhX2F0dHJzID9jYWxsX29uX2lucHV0X3doZW4gP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+dmFsdWUgfm9uX2lucHV0ICgpID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBEYXRlKVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcImRhdGVcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCBkYXRldGltZV9sb2NhbFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID91dGNfb2Zmc2V0XG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGhvdXJzID1cbiAgICAgIE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgdXRjX29mZnNldFxuICAgICAgICAoKiBnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIHRoZSB0aW1lIHpvbmUgZGlmZmVyZW5jZSwgaW4gbWludXRlcywgZnJvbSBjdXJyZW50XG4gICAgICAgICAgIGxvY2FsZSB0byBVVEMuIFV0YyBvZmZzZXQgaXMgdGhlIGRpZmZlcmVuY2UgZnJvbSBVVEMgdG8gY3VycmVudCBsb2NhbGUgd2hpY2hcbiAgICAgICAgICAgaXMgd2hlcmUgdGhlIG1pbnVzIGNvbWVzIGZyb20uXG5cbiAgICAgICAgICAgVGhlIG1pbnV0ZXMgaGF2ZSB0byBiZSBjb252ZXJ0ZWQgdG8gaG91cnMgc2luY2UgdGhhdCBpcyB0aGUgZm9ybWF0XG4gICAgICAgICAgIFRpbWUuWm9uZS5vZl91dGNfb2Zmc2V0IGV4cGVjdHMgZm9yIHRoZSB1dGNfb2Zmc2V0LiAqKVxuICAgICAgICB+ZGVmYXVsdDooKG5ldyVqcyBKc19vZl9vY2FtbC5Kcy5kYXRlX25vdykjI2dldFRpbWV6b25lT2Zmc2V0IC8gLTYwKVxuICAgICAgICB+ZjooZnVuIHV0Y19vZmZzZXQgLT4gVGltZV9ucy5TcGFuLnRvX2hyIHV0Y19vZmZzZXQgfD4gRmxvYXQudG9faW50KVxuICAgIGluXG4gICAgbGV0IChtb2R1bGUgWm9uZWRfdGltZSkgPSBUaW1lX2NvbXBhdC56b25lZCAoVGltZS5ab25lLm9mX3V0Y19vZmZzZXQgfmhvdXJzKSBpblxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFpvbmVkX3RpbWUpXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJkYXRldGltZS1sb2NhbFwiIF1cbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCB0ZXh0X2FyZWFcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS50ZXh0YXJlYVxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoWyBBdHRyLnBsYWNlaG9sZGVyIHBsYWNlaG9sZGVyXG4gICAgICAgICAgICA7IENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICBvbl9pbnB1dCB2YWx1ZSlcbiAgICAgICAgICAgIDsgVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6T3B0aW9uLnJldHVyblxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgW11cbiAgOztcblxuICAoKiBBY2NvcmRpbmcgdG9cbiAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L2NvbG9yI1ZhbHVlIHRoZVxuICAgICB2YWx1ZSBtdXN0IGJlIHNldCBpbiBoZXggZm9ybWF0IGFuZCB3aWxsIGFsd2F5cyBjb21lcyBiYWNrIGluIGhleCBmb3JtYXQuICopXG4gIGxldCBjb2xvcl9waWNrZXJcbiAgICAgICAgPyhleHRyYV9hdHRyID0gQXR0ci5lbXB0eSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgKGBIZXggdmFsdWVfKSA9IHZhbHVlIGluXG4gICAgWyBBdHRyLih0eXBlXyBcImNvbG9yXCIgQCB2YWx1ZV9wcm9wIHZhbHVlXyBAIGV4dHJhX2F0dHIpXG4gICAgOyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHMgLT4gb25faW5wdXQgKGBIZXggcykpXG4gICAgXVxuICAgIHw+IGlucHV0X25vZGUgP2Rpc2FibGVkXG4gIDs7XG5lbmRcblxubW9kdWxlIEJ1dHRvbiA9IHN0cnVjdFxuICBsZXQgd2l0aF92YWxpZGF0aW9uID8oZXh0cmFfYXR0cnMgPSBbXSkgdGV4dCB+dmFsaWRhdGlvbiB+b25fY2xpY2sgPVxuICAgIG1hdGNoIHZhbGlkYXRpb24gd2l0aFxuICAgIHwgT2sgcmVzdWx0IC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cjpcbiAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAoWyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIHJlc3VsdCk7IEF0dHIudHlwZV8gXCJidXR0b25cIiBdXG4gICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICAgIHwgRXJyb3IgcmVhc29uIC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cjpcbiAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAoWyBBdHRyLmRpc2FibGVkXG4gICAgICAgICAgICAgIDsgQXR0ci50eXBlXyBcImJ1dHRvblwiXG4gICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJ0b29sdGlwXCIgcmVhc29uXG4gICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJ0b29sdGlwLXBvc2l0aW9uXCIgXCJ0b3BcIlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICA7O1xuXG4gIGxldCBzaW1wbGUgPyhleHRyYV9hdHRycyA9IFtdKSA/KGRpc2FibGVkID0gZmFsc2UpIHRleHQgfm9uX2NsaWNrID1cbiAgICBOb2RlLmJ1dHRvblxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiYnV0dG9uXCI7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgKCkpIF1cbiAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBSYWRpb19idXR0b25zID0gc3RydWN0XG4gIG1vZHVsZSBTdHlsZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5hdGl2ZVxuICAgICAgfCBCdXR0b25fbGlrZSBvZiB7IGV4dHJhX2F0dHJzIDogY2hlY2tlZDpib29sIC0+IEF0dHIudCBsaXN0IH1cblxuICAgIGxldCBiYXJlYm9uZXNfYnV0dG9uX2xpa2UgPVxuICAgICAgQnV0dG9uX2xpa2VcbiAgICAgICAgeyBleHRyYV9hdHRycyA9XG4gICAgICAgICAgICAoZnVuIH5jaGVja2VkIC0+XG4gICAgICAgICAgICAgICBpZiBjaGVja2VkXG4gICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgICAgQ3NzX2dlbi4oXG4gICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiM0MDQwNDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgQD4gY29sb3IgKGBIZXggXCIjRjdGN0Y3XCIpKVxuICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgICAgQ3NzX2dlbi4oXG4gICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiNFRkVGRUZcIikpXG4gICAgICAgICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgaGlkZV9uYXRpdmVfaW5wdXRzID1cbiAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwiYXBwZWFyYW5jZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiB1bmlmb3JtX21hcmdpbiAoYFB4IDApKVxuICA7O1xuXG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KHN0eWxlIDogU3R5bGUudCA9IE5hdGl2ZSlcbiAgICAgICAgfm9yaWVudGF0aW9uXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+ZXF1YWxcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGxldCBpbnB1dF9hdHRycywgbGFiZWxfYXR0cnMgPVxuICAgICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgICAgfCBOYXRpdmUgLT4gW10sIGZ1biB+Y2hlY2tlZDpfIC0+IFtdXG4gICAgICB8IEJ1dHRvbl9saWtlIHsgZXh0cmFfYXR0cnMgfSAtPiBbIEF0dHIuc3R5bGUgaGlkZV9uYXRpdmVfaW5wdXRzIF0sIGV4dHJhX2F0dHJzXG4gICAgaW5cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIH5vcmllbnRhdGlvblxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtcmFkaW8tYnV0dG9uc1wiOyBcInJhZGlvLWJ1dHRvbi1jb250YWluZXJcIiBdIF1cbiAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAoTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gaXRlbSAtPlxuICAgICAgICAgbGV0IGNoZWNrZWQgPSBPcHRpb24udmFsdWVfbWFwIHNlbGVjdGVkIH5kZWZhdWx0OmZhbHNlIH5mOihlcXVhbCBpdGVtKSBpblxuICAgICAgICAgTm9kZS5sYWJlbFxuICAgICAgICAgICB+YXR0cjooQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2UgKGxhYmVsX2F0dHJzIH5jaGVja2VkKSlcbiAgICAgICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgICAgICB+YXR0cjpcbiAgICAgICAgICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICA7IEF0dHIubmFtZSBuYW1lXG4gICAgICAgICAgICAgICAgICAgICA7IEF0dHIuY2xhc3NlcyBbIFwicmFkaW8tYnV0dG9uXCIgXVxuICAgICAgICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBjaGVja2VkXG4gICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICBAIGlucHV0X2F0dHJzXG4gICAgICAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpKVxuICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgOyBOb2RlLnRleHQgKHRvX3N0cmluZyBpdGVtKVxuICAgICAgICAgICBdKSlcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3N0eWxlXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBWZXJ0aWNhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgdmFsdWVzXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc19ob3Jpem9udGFsXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3N0eWxlXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBIb3Jpem9udGFsXG4gICAgICB+bmFtZVxuICAgICAgfm9uX2NsaWNrXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6RS50b19zdHJpbmdcbiAgICAgIH5lcXVhbDpFLmVxdWFsXG4gICAgICB2YWx1ZXNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIEpzID0gSnNfb2Zfb2NhbWwuSnNcblxuICBsZXQgYWNjZXB0X2F0dHJzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQXR0ci5lbXB0eVxuICAgIHwgU29tZSBhY2NlcHRzIC0+XG4gICAgICBBdHRyLmNyZWF0ZVxuICAgICAgICBcImFjY2VwdFwiXG4gICAgICAgIChMaXN0Lm1hcCBhY2NlcHRzIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IGBFeHRlbnNpb24gcyAtPiBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIi5cIiB0aGVuIHMgZWxzZSBcIi5cIiBeIHNcbiAgICAgICAgICAgfCBgTWltZXR5cGUgcyAtPiBzKVxuICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiKVxuICA7O1xuXG4gIGxldCBsaXN0ID8oZXh0cmFfYXR0cnMgPSBbXSkgP2FjY2VwdCB+b25faW5wdXQgKCkgPVxuICAgIE5vZGUuaW5wdXRcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgOyBhY2NlcHRfYXR0cnMgYWNjZXB0XG4gICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZXMgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5pbml0IGZpbGVfbGlzdCMjLmxlbmd0aCB+ZjooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgZmlsZV9saXN0IyNpdGVtIGlcbiAgICAgICAgICAgICAgICAgICAgfD4gSnMuT3B0LnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICB8PiBPcHRpb24udmFsdWVfZXhuXG4gICAgICAgICAgICAgICAgICAgICAgICAgfm1lc3NhZ2U6WyVzdHJpbmcgXCJjb3VsZG4ndCBnZXQgZmlsZSAle2kjSW50fVwiXSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGVzKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIFtdXG4gIDs7XG5cbiAgbGV0IHNpbmdsZSA/KGV4dHJhX2F0dHJzID0gW10pID9hY2NlcHQgfm9uX2lucHV0ICgpID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cjpcbiAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgOyBBdHRyLm9uX2ZpbGVfaW5wdXQgKGZ1biBfZXYgZmlsZV9saXN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBmaWxlX2xpc3QjI2l0ZW0gMCB8PiBKcy5PcHQudG9fb3B0aW9uIGluXG4gICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbXVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IChDKSBKZWFuLUNocmlzdG9waGUgRmlsbGlhdHJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgVGhpcyBzb2Z0d2FyZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgICAgICopXG4oKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICopXG4oKiAgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyAgICAgICAgICAgICopXG4oKiAgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgICAgICopXG4oKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICopXG4oKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqcyBNYXBzIG9mIGludGVnZXJzIGltcGxlbWVudGVkIGFzIFBhdHJpY2lhIHRyZWVzLCBmb2xsb3dpbmcgQ2hyaXNcbiAgICBPa2FzYWtpIGFuZCBBbmRyZXcgR2lsbCdzIHBhcGVyIHtcXGVtIEZhc3QgTWVyZ2VhYmxlIEludGVnZXIgTWFwc31cbiAgICAoe1xcdHRcXHNtYWxsIGh0dHA6Ly93d3cuY3MuY29sdW1iaWEuZWR1L1xcfnt9Y2RvL3BhcGVycy5odG1sXFwjbWw5OG1hcHN9KS5cbiAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgbW9kdWxlIFtQdHNldF0gd2hpY2ggaXMgYWxzbyBiYXNlZCBvbiB0aGVcbiAgICBzYW1lIGRhdGEtc3RydWN0dXJlLiAqKVxuXG50eXBlIGtleSA9IGludFxuXG50eXBlICdhIHQgPVxuICB8IEVtcHR5XG4gIHwgTGVhZiBvZiBpbnQgKiAnYVxuICB8IEJyYW5jaCBvZiBpbnQgKiBpbnQgKiAnYSB0ICogJ2EgdFxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgdCA9IHQgPSBFbXB0eVxuXG5sZXQgemVyb19iaXQgayBtID0gKGsgbGFuZCBtKSA9PSAwXG5cbmxldCByZWMgbWVtIGsgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGZhbHNlXG4gIHwgTGVhZiAoaixfKSAtPiBrID09IGpcbiAgfCBCcmFuY2ggKF8sIG0sIGwsIHIpIC0+IG1lbSBrIChpZiB6ZXJvX2JpdCBrIG0gdGhlbiBsIGVsc2UgcilcblxubGV0IHJlYyBmaW5kIGsgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgayA9PSBqIHRoZW4geCBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgbSwgbCwgcikgLT4gZmluZCBrIChpZiB6ZXJvX2JpdCBrIG0gdGhlbiBsIGVsc2UgcilcblxubGV0IGZpbmRfb3B0IGsgbSA9IHRyeSBTb21lIChmaW5kIGsgbSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG4oKiBOb3RlOiBmaW5kX2ZpcnN0L2xhc3QgaGF2ZSB0byBsb29rIGluIGJvdGggc3VidHJlZXNcbiAgIGFzIHRoZXNlIGFyZSBsaXR0bGUtZW5kaWFuIFBhdHJpY2lhIHRyZWVzICopXG5sZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIFNvbWUgKGoseCkgZWxzZSBOb25lXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfb3B0IGYgbCwgZmluZF9maXJzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPlxuICAgICAgICBpZiBsayA8IHJrIHRoZW4gU29tZSAobGssbHYpIGVsc2UgU29tZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gU29tZSB2XG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcblxubGV0IGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiAoaix4KSBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2ZpcnN0X29wdCBmIGwsIGZpbmRfZmlyc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT4gaWYgbGsgPCByayB0aGVuIChsayxsdikgZWxzZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gdlxuICAgIHwgTm9uZSwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIFNvbWUgKGoseCkgZWxzZSBOb25lXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfbGFzdF9vcHQgZiBsLCBmaW5kX2xhc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT5cbiAgICAgICAgaWYgbGsgPiByayB0aGVuIFNvbWUgKGxrLGx2KSBlbHNlIFNvbWUgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IFNvbWUgdlxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG5cbmxldCBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiAoaix4KSBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2xhc3Rfb3B0IGYgbCwgZmluZF9sYXN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+IGlmIGxrID4gcmsgdGhlbiAobGssbHYpIGVsc2UgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBsb3dlc3RfYml0IHggPSB4IGxhbmQgKC14KVxuXG5sZXQgYnJhbmNoaW5nX2JpdCBwMCBwMSA9IGxvd2VzdF9iaXQgKHAwIGx4b3IgcDEpXG5cbmxldCBtYXNrIHAgbSA9IHAgbGFuZCAobS0xKVxuXG5sZXQgam9pbiAocDAsdDAscDEsdDEpID1cbiAgbGV0IG0gPSBicmFuY2hpbmdfYml0IHAwIHAxIGluXG4gIGlmIHplcm9fYml0IHAwIG0gdGhlblxuICAgIEJyYW5jaCAobWFzayBwMCBtLCBtLCB0MCwgdDEpXG4gIGVsc2VcbiAgICBCcmFuY2ggKG1hc2sgcDAgbSwgbSwgdDEsIHQwKVxuXG5sZXQgbWF0Y2hfcHJlZml4IGsgcCBtID0gKG1hc2sgayBtKSA9PSBwXG5cbmxldCBhZGQgayB4IHQgPVxuICBsZXQgcmVjIGlucyA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrLHgpXG4gICAgfCBMZWFmIChqLF8pIGFzIHQgLT5cbiAgICAgIGlmIGogPT0gayB0aGVuIExlYWYgKGsseCkgZWxzZSBqb2luIChrLCBMZWFmIChrLHgpLCBqLCB0KVxuICAgIHwgQnJhbmNoIChwLG0sdDAsdDEpIGFzIHQgLT5cbiAgICAgIGlmIG1hdGNoX3ByZWZpeCBrIHAgbSB0aGVuXG5cdGlmIHplcm9fYml0IGsgbSB0aGVuXG5cdCAgQnJhbmNoIChwLCBtLCBpbnMgdDAsIHQxKVxuXHRlbHNlXG5cdCAgQnJhbmNoIChwLCBtLCB0MCwgaW5zIHQxKVxuICAgICAgZWxzZVxuXHRqb2luIChrLCBMZWFmIChrLHgpLCBwLCB0KVxuICBpblxuICBpbnMgdFxuXG5sZXQgc2luZ2xldG9uIGsgdiA9XG4gIGFkZCBrIHYgZW1wdHlcblxubGV0IGJyYW5jaCA9IGZ1bmN0aW9uXG4gIHwgKF8sXyxFbXB0eSx0KSAtPiB0XG4gIHwgKF8sXyx0LEVtcHR5KSAtPiB0XG4gIHwgKHAsbSx0MCx0MSkgICAtPiBCcmFuY2ggKHAsbSx0MCx0MSlcblxubGV0IHJlbW92ZSBrIHQgPVxuICBsZXQgcmVjIHJtdiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAoaixfKSBhcyB0IC0+IGlmIGsgPT0gaiB0aGVuIEVtcHR5IGVsc2UgdFxuICAgIHwgQnJhbmNoIChwLG0sdDAsdDEpIGFzIHQgLT5cbiAgICAgIGlmIG1hdGNoX3ByZWZpeCBrIHAgbSB0aGVuXG5cdGlmIHplcm9fYml0IGsgbSB0aGVuXG5cdCAgYnJhbmNoIChwLCBtLCBybXYgdDAsIHQxKVxuXHRlbHNlXG5cdCAgYnJhbmNoIChwLCBtLCB0MCwgcm12IHQxKVxuICAgICAgZWxzZVxuXHR0XG4gIGluXG4gIHJtdiB0XG5cbmxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IDBcbiAgfCBMZWFmIF8gLT4gMVxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBjYXJkaW5hbCB0MCArIGNhcmRpbmFsIHQxXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgKGsseCkgLT4gZiBrIHhcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gaXRlciBmIHQwOyBpdGVyIGYgdDFcblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLHgpIC0+IExlYWYgKGssIGYgeClcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gQnJhbmNoIChwLCBtLCBtYXAgZiB0MCwgbWFwIGYgdDEpXG5cbmxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGsseCkgLT4gTGVhZiAoaywgZiBrIHgpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IEJyYW5jaCAocCwgbSwgbWFwaSBmIHQwLCBtYXBpIGYgdDEpXG5cbmxldCByZWMgZm9sZCBmIHMgYWNjdSA9IG1hdGNoIHMgd2l0aFxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBMZWFmIChrLHgpIC0+IGYgayB4IGFjY3VcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZm9sZCBmIHQwIChmb2xkIGYgdDEgYWNjdSlcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBMZWFmIChrLCB2KSAgLT4gcCBrIHZcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZm9yX2FsbCBwIHQwICYmIGZvcl9hbGwgcCB0MVxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IExlYWYgKGssIHYpIC0+IHAgayB2XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGV4aXN0cyBwIHQwIHx8IGV4aXN0cyBwIHQxXG5cbmxldCByZWMgZmlsdGVyIHByID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGssIHYpIGFzIHQgLT4gaWYgcHIgayB2IHRoZW4gdCBlbHNlIEVtcHR5XG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IGJyYW5jaCAocCwgbSwgZmlsdGVyIHByIHQwLCBmaWx0ZXIgcHIgdDEpXG5cbmxldCByZWMgZmlsdGVyX21hcCBwciA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLCB2KSAtPiAobWF0Y2ggcHIgayB2IHdpdGggU29tZSB2JyAtPiBMZWFmIChrLCB2JykgfCBOb25lIC0+IEVtcHR5KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBicmFuY2ggKHAsIG0sIGZpbHRlcl9tYXAgcHIgdDAsIGZpbHRlcl9tYXAgcHIgdDEpXG5cbmxldCBwYXJ0aXRpb24gcCBzID1cbiAgbGV0IHJlYyBwYXJ0ICh0LGYgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2NcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIHAgayB2IHRoZW4gKGFkZCBrIHYgdCwgZikgZWxzZSAodCwgYWRkIGsgdiBmKVxuICAgIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IHBhcnQgKHBhcnQgYWNjIHQwKSB0MVxuICBpblxuICBwYXJ0IChFbXB0eSwgRW1wdHkpIHNcblxubGV0IHJlYyBjaG9vc2UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXywgXywgdDAsIF8pIC0+IGNob29zZSB0MCAgICgqIHdlIGtub3cgdGhhdCBbdDBdIGlzIG5vbi1lbXB0eSAqKVxuXG5sZXQgcmVjIGNob29zZV9vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXywgXywgdDAsIF8pIC0+IGNob29zZV9vcHQgdDAgICAoKiB3ZSBrbm93IHRoYXQgW3QwXSBpcyBub24tZW1wdHkgKilcblxubGV0IHNwbGl0IHggbSA9XG4gIGxldCBjb2xsIGsgdiAobCwgYiwgcikgPVxuICAgIGlmIGsgPCB4IHRoZW4gYWRkIGsgdiBsLCBiLCByXG4gICAgZWxzZSBpZiBrID4geCB0aGVuIGwsIGIsIGFkZCBrIHYgclxuICAgIGVsc2UgbCwgU29tZSB2LCByXG4gIGluXG4gIGZvbGQgY29sbCBtIChlbXB0eSwgTm9uZSwgZW1wdHkpXG5cbmxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBsZXQgKGtzLCBfKSBhcyBicyA9IG1pbl9iaW5kaW5nIHMgaW5cbiAgICBsZXQgKGt0LCBfKSBhcyBidCA9IG1pbl9iaW5kaW5nIHQgaW5cbiAgICBpZiBrcyA8IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIG1hdGNoIChtaW5fYmluZGluZ19vcHQgcywgbWluX2JpbmRpbmdfb3B0IHQpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgTm9uZSwgYnQgLT4gYnRcbiAgICB8IGJzLCBOb25lIC0+IGJzXG4gICAgfCAoU29tZSAoa3MsIF8pIGFzIGJzKSwgKFNvbWUgKGt0LCBfKSBhcyBidCkgLT5cbiAgICAgIGlmIGtzIDwga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBsZXQgKGtzLCBfKSBhcyBicyA9IG1heF9iaW5kaW5nIHMgaW5cbiAgICBsZXQgKGt0LCBfKSBhcyBidCA9IG1heF9iaW5kaW5nIHQgaW5cbiAgICBpZiBrcyA+IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIG1hdGNoIG1heF9iaW5kaW5nX29wdCBzLCBtYXhfYmluZGluZ19vcHQgdCB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IE5vbmUsIGJ0IC0+IGJ0XG4gICAgfCBicywgTm9uZSAtPiBic1xuICAgIHwgKFNvbWUgKGtzLCBfKSBhcyBicyksIChTb21lIChrdCwgXykgYXMgYnQpIC0+XG4gICAgICBpZiBrcyA+IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgYmluZGluZ3MgbSA9XG4gIGZvbGQgKGZ1biBrIHYgYWNjIC0+IChrLCB2KSA6OiBhY2MpIG0gW11cblxuKCogd2Ugb3JkZXIgY29uc3RydWN0b3JzIGFzIEVtcHR5IDwgTGVhZiA8IEJyYW5jaCAqKVxubGV0IGNvbXBhcmUgY21wIHQxIHQyID1cbiAgbGV0IHJlYyBjb21wYXJlX2F1eCB0MSB0MiA9IG1hdGNoIHQxLHQyIHdpdGhcbiAgICB8IEVtcHR5LCBFbXB0eSAtPiAwXG4gICAgfCBFbXB0eSwgXyAtPiAtMVxuICAgIHwgXywgRW1wdHkgLT4gMVxuICAgIHwgTGVhZiAoazEseDEpLCBMZWFmIChrMix4MikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrMSBrMiBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIGNtcCB4MSB4MlxuICAgIHwgTGVhZiBfLCBCcmFuY2ggXyAtPiAtMVxuICAgIHwgQnJhbmNoIF8sIExlYWYgXyAtPiAxXG4gICAgfCBCcmFuY2ggKHAxLG0xLGwxLHIxKSwgQnJhbmNoIChwMixtMixsMixyMikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBwMSBwMiBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG5cdGxldCBjID0gY29tcGFyZSBtMSBtMiBpblxuXHRpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYXV4IGwxIGwyIGluXG4gICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCByMSByMlxuICBpblxuICBjb21wYXJlX2F1eCB0MSB0MlxuXG5sZXQgZXF1YWwgZXEgdDEgdDIgPVxuICBsZXQgcmVjIGVxdWFsX2F1eCB0MSB0MiA9IG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiAoazEseDEpLCBMZWFmIChrMix4MikgLT4gazEgPSBrMiAmJiBlcSB4MSB4MlxuICAgIHwgQnJhbmNoIChwMSxtMSxsMSxyMSksIEJyYW5jaCAocDIsbTIsbDIscjIpIC0+XG4gICAgICBwMSA9IHAyICYmIG0xID0gbTIgJiYgZXF1YWxfYXV4IGwxIGwyICYmIGVxdWFsX2F1eCByMSByMlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBlcXVhbF9hdXggdDEgdDJcblxubGV0IG1lcmdlIGYgbTEgbTIgPVxuICBsZXQgYWRkIG0gayA9IGZ1bmN0aW9uIE5vbmUgLT4gbSB8IFNvbWUgdiAtPiBhZGQgayB2IG0gaW5cbiAgKCogZmlyc3QgY29uc2lkZXIgYWxsIGJpbmRpbmdzIGluIG0xICopXG4gIGxldCBtID0gZm9sZFxuICAgICAgKGZ1biBrMSB2MSBtIC0+IGFkZCBtIGsxIChmIGsxIChTb21lIHYxKSAoZmluZF9vcHQgazEgbTIpKSkgbTEgZW1wdHkgaW5cbiAgKCogdGhlbiBiaW5kaW5ncyBpbiBtMiB0aGF0IGFyZSBub3QgaW4gbTEgKilcbiAgZm9sZCAoZnVuIGsyIHYyIG0gLT4gaWYgbWVtIGsyIG0xIHRoZW4gbSBlbHNlIGFkZCBtIGsyIChmIGsyIE5vbmUgKFNvbWUgdjIpKSlcbiAgICBtMiBtXG5cbmxldCB1cGRhdGUgeCBmIG0gPVxuICBtYXRjaCBmIChmaW5kX29wdCB4IG0pIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB4IG1cbiAgfCBTb21lIHogLT4gYWRkIHggeiBtXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPSBuID49IDAgJiYgKG0gPCAwIHx8IG4gPCBtKVxuXG5sZXQgcmVjIHVuaW9uIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5LCB0ICAtPiB0XG4gIHwgdCwgRW1wdHkgIC0+IHRcbiAgfCBMZWFmIChrLHYxKSwgdCAtPlxuICAgICAgdXBkYXRlIGsgKGZ1bmN0aW9uIE5vbmUgLT4gU29tZSB2MSB8IFNvbWUgdjIgLT4gZiBrIHYxIHYyKSB0XG4gIHwgdCwgTGVhZiAoayx2MikgLT5cbiAgICAgIHVwZGF0ZSBrIChmdW5jdGlvbiBOb25lIC0+IFNvbWUgdjIgfCBTb21lIHYxIC0+IGYgayB2MSB2MikgdFxuICB8IChCcmFuY2ggKHAsbSxzMCxzMSkgYXMgcyksIChCcmFuY2ggKHEsbix0MCx0MSkgYXMgdCkgLT5cbiAgICAgIGlmIG0gPT0gbiAmJiBtYXRjaF9wcmVmaXggcSBwIG0gdGhlblxuXHQoKiBUaGUgdHJlZXMgaGF2ZSB0aGUgc2FtZSBwcmVmaXguIE1lcmdlIHRoZSBzdWJ0cmVlcy4gKilcblx0YnJhbmNoIChwLCBtLCB1bmlvbiBmIChzMCx0MCksIHVuaW9uIGYgKHMxLHQxKSlcbiAgICAgIGVsc2UgaWYgdW5zaWduZWRfbHQgbSBuICYmIG1hdGNoX3ByZWZpeCBxIHAgbSB0aGVuXG5cdCgqIFtxXSBjb250YWlucyBbcF0uIE1lcmdlIFt0XSB3aXRoIGEgc3VidHJlZSBvZiBbc10uICopXG5cdGlmIHplcm9fYml0IHEgbSB0aGVuXG5cdCAgYnJhbmNoIChwLCBtLCB1bmlvbiBmIChzMCx0KSwgczEpXG4gICAgICAgIGVsc2Vcblx0ICBicmFuY2ggKHAsIG0sIHMwLCB1bmlvbiBmIChzMSx0KSlcbiAgICAgIGVsc2UgaWYgdW5zaWduZWRfbHQgbiBtICYmIG1hdGNoX3ByZWZpeCBwIHEgbiB0aGVuXG5cdCgqIFtwXSBjb250YWlucyBbcV0uIE1lcmdlIFtzXSB3aXRoIGEgc3VidHJlZSBvZiBbdF0uICopXG5cdGlmIHplcm9fYml0IHAgbiB0aGVuXG5cdCAgYnJhbmNoIChxLCBuLCB1bmlvbiBmIChzLHQwKSwgdDEpXG5cdGVsc2Vcblx0ICBicmFuY2ggKHEsIG4sIHQwLCB1bmlvbiBmIChzLHQxKSlcbiAgICAgIGVsc2Vcblx0KCogVGhlIHByZWZpeGVzIGRpc2FncmVlLiAqKVxuXHRqb2luIChwLCBzLCBxLCB0KVxuXG5sZXQgdW5pb24gZiBzIHQgPSB1bmlvbiBmIChzLHQpXG5cbmxldCB0b19zZXEgbSA9XG4gIGxldCByZWMgcHJlcGVuZF9zZXEgbSBzID0gbWF0Y2ggbSB3aXRoXG4gICAgfCBFbXB0eSAtPiBzXG4gICAgfCBMZWFmIChrLCB2KSAtPiBmdW4gKCkgLT4gU2VxLkNvbnMoKGssdiksIHMpXG4gICAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+IHByZXBlbmRfc2VxIGwgKHByZXBlbmRfc2VxIHIgcylcbiAgaW5cbiAgcHJlcGVuZF9zZXEgbSBTZXEuZW1wdHlcblxubGV0IHRvX3NlcV9mcm9tIGsgbSA9XG4gIGxldCByZWMgcHJlcGVuZF9zZXEgbSBzID0gbWF0Y2ggbSB3aXRoXG4gICAgfCBFbXB0eSAtPiBzXG4gICAgfCBMZWFmIChrZXksIHYpIC0+IGlmIGtleSA+PSBrIHRoZW4gZnVuICgpIC0+IFNlcS5Db25zKChrZXksdiksIHMpIGVsc2Ugc1xuICAgIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPiBwcmVwZW5kX3NlcSBsIChwcmVwZW5kX3NlcSByIHMpXG4gIGluXG4gIHByZXBlbmRfc2VxIG0gU2VxLmVtcHR5XG5cbmxldCBhZGRfc2VxIHMgbSA9XG4gIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIG0gc1xuXG5sZXQgb2Zfc2VxIHMgPVxuICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBlbXB0eSBzXG4iLCJsZXQgdXRmOF9vZl9jb2RlIGJ1ZiB4ID1cbiAgbGV0IGFkZCA9IEJ1ZmZlci5hZGRfY2hhciBpblxuXG4gICgqIFN0cmFpZ2h0IDw9IGRvZXNuJ3Qgd29yayB3aXRoIHNpZ25lZCAzMS1iaXQgaW50cyAqKVxuICBsZXQgbWF4Yml0cyBuIHggPSB4IGxzciBuID0gMCBpblxuXG4gIGlmIG1heGJpdHMgNyB4IHRoZW4gKCogNyAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyIHgpXG4gIGVsc2UgaWYgbWF4Yml0cyAxMSB4IHRoZW4gKFxuICAgICgqIDUgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTEwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMDExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAxNiB4IHRoZW4gKFxuICAgICgqIDQgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAwMDExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyMSB4IHRoZW4gKFxuICAgICgqIDMgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMDAwMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyNiB4IHRoZW4gKFxuICAgICgqIDIgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTEwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDAwMDAxMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAobWF4Yml0cyAzMSB4KTtcbiAgICAoKiAxICsgNiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTEwMCBsb3IgKCh4IGxzciAzMCkgbGFuZCAwYjAwMDAwMDAxKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuXG5sZXQgY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGogPVxuICBsZXQgaGlnaDEwID0gaSAtIDB4RDgwMCBpblxuICBsZXQgbG93MTAgPSBqIC0gMHhEQzAwIGluXG4gIDB4MTAwMDAgKyAoKGhpZ2gxMCBsc2wgMTApIGxvciBsb3cxMClcblxubGV0IHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgYnVmIGkgaiA9XG4gIHV0Zjhfb2ZfY29kZSBidWYgKGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqKVxuIiwibGV0IHZlcnNpb24gPSBcIjIuMS4yXCJcblxuZXhjZXB0aW9uIEpzb25fZXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBqc29uX2Vycm9yIHMgPSByYWlzZSAoSnNvbl9lcnJvciBzKVxuXG5leGNlcHRpb24gRW5kX29mX2FycmF5XG5leGNlcHRpb24gRW5kX29mX29iamVjdFxuZXhjZXB0aW9uIEVuZF9vZl90dXBsZVxuZXhjZXB0aW9uIEVuZF9vZl9pbnB1dFxuXG50eXBlIGxleGVyX3N0YXRlID0ge1xuICBidWYgOiBCdWZmZXIudDsgKCogQnVmZmVyIHVzZWQgdG8gYWNjdW11bGF0ZSBzdWJzdHJpbmdzICopXG4gIG11dGFibGUgbG51bSA6IGludDsgKCogQ3VycmVudCBsaW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAxKSAqKVxuICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICAgICgqIEFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGN1cnJlbnQgbGluZVxuICAgICAgICAgKHN0YXJ0aW5nIGZyb20gMCkgKilcbiAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247ICgqIE5hbWUgZGVzY3JpYmluZyB0aGUgaW5wdXQgZmlsZSAqKVxufVxuXG5tb2R1bGUgTGV4ZXJfc3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV4ZXJfc3RhdGUgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5lbmRcblxubGV0IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgPyhsbnVtID0gMSkgKCkgPVxuICBsZXQgYnVmID0gbWF0Y2ggYnVmIHdpdGggTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDI1NiB8IFNvbWUgYnVmIC0+IGJ1ZiBpblxuICB7IGJ1ZjsgbG51bTsgYm9sID0gMDsgZm5hbWUgfVxuIiwibGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qdW5rIGJ1ZiBuIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgICAgKCAoKSApXG4jIDk4IFwibGliL2xleGVyX3V0aWxzLm1sXCJcblxuICB8IDEgLT5cbiMgMyBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuICAgICAgKFxuICAgICBpZiBuIDw9IDAgdGhlbiAoKVxuICAgICBlbHNlIGJlZ2luXG4gICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoTGV4aW5nLmxleGVtZV9jaGFyIGxleGJ1ZiAwKTtcbiAgICAgICByZWFkX2p1bmsgYnVmIChuIC0gMSkgbGV4YnVmXG4gICAgIGVuZFxuICAgICApXG4jIDEwOSBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTEgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiBcbmxldCByZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIG4gKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgbGV0IGp1bmtfc3RhcnRfcG9zID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgcmVhZF9qdW5rIGJ1ZiBuIGxleGJ1ZjtcbiAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0ganVua19zdGFydF9wb3MgKyAxXG5cbiMgMTIzIFwibGliL2xleGVyX3V0aWxzLm1sXCJcbiIsIm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4hIFlvanNvblxuXG50eXBlIHQgPSBZb2pzb24uU2FmZS50XG5cbmxldCB5b2pzb25fb2ZfdW5pdCAoKSA6IHQgPSBgTnVsbFxubGV0IHlvanNvbl9vZl9ib29sIGIgOiB0ID0gYEJvb2wgYlxubGV0IHlvanNvbl9vZl9zdHJpbmcgc3RyIDogdCA9IGBTdHJpbmcgc3RyXG5sZXQgeW9qc29uX29mX2J5dGVzIGJ5dGVzIDogdCA9IGBTdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBieXRlcylcbmxldCB5b2pzb25fb2ZfY2hhciBjIDogdCA9IGBTdHJpbmcgKFN0cmluZy5tYWtlIDEgYylcbmxldCB5b2pzb25fb2ZfaW50IG4gOiB0ID0gYEludCBuXG5sZXQgeW9qc29uX29mX2Zsb2F0IG4gOiB0ID0gYEZsb2F0IG5cbmxldCB5b2pzb25fb2ZfaW50MzIgKG4gOiBJbnQzMi50KSA6IHQgPSBgSW50bGl0IChJbnQzMi50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfaW50NjQgKG4gOiBJbnQ2NC50KSA6IHQgPSBgSW50bGl0IChJbnQ2NC50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfbmF0aXZlaW50IG4gOiB0ID0gYEludGxpdCAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9yZWYgeW9qc29uX29mX19hIHJmID0geW9qc29uX29mX19hICFyZlxubGV0IHlvanNvbl9vZl9sYXp5X3QgeW9qc29uX29mX19hIGx2ID0geW9qc29uX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgeW9qc29uX29mX29wdGlvbiB5b2pzb25fb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiB5b2pzb25fb2ZfX2EgeFxuICB8IE5vbmUgLT4gYE51bGxcbjs7XG5cbmxldCB5b2pzb25fb2ZfcGFpciB5b2pzb25fb2ZfX2EgeW9qc29uX29mX19iIChhLCBiKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiIF1cbjs7XG5cbmxldCB5b2pzb25fb2ZfdHJpcGxlIHlvanNvbl9vZl9fYSB5b2pzb25fb2ZfX2IgeW9qc29uX29mX19jIChhLCBiLCBjKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiOyB5b2pzb25fb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgeW9qc29uX29mX2xpc3QgeW9qc29uX29mX19hIGxzdCA9IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIH5mOnlvanNvbl9vZl9fYSBsc3QpKVxuXG5sZXQgeW9qc29uX29mX2FycmF5IHlvanNvbl9vZl9fYSBhciA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkubGVuZ3RoIGFyIC0gMSBkb3dudG8gMCBkb1xuICAgIGxzdF9yZWYgOj0geW9qc29uX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHlvanNvbl9vZl9oYXNodGJsIHlvanNvbl9vZl9rZXkgeW9qc29uX29mX3ZhbCBodGJsID1cbiAgbGV0IGNvbGwgfmtleTprIH5kYXRhOnYgYWNjID0gYExpc3QgWyB5b2pzb25fb2Zfa2V5IGs7IHlvanNvbl9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBgTGlzdCAoSGFzaHRibC5mb2xkIGh0YmwgfmluaXQ6W10gfmY6Y29sbClcbjs7XG5cbmxldCB5b2pzb25fb2Zfb3BhcXVlIF8gPSBgU3RyaW5nIFwiPG9wYXF1ZT5cIlxubGV0IHlvanNvbl9vZl9mdW4gXyA9IGBTdHJpbmcgXCI8ZnVuPlwiXG5cbmV4Y2VwdGlvbiBPZl95b2pzb25fZXJyb3Igb2YgZXhuICogdFxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2ZfeW9qc29uX2Vycm9yX2V4biBleGMgeW9qc29uID0gcmFpc2UgKE9mX3lvanNvbl9lcnJvciAoZXhjLCB5b2pzb24pKVxubGV0IG9mX3lvanNvbl9lcnJvciB3aGF0IHlvanNvbiA9IHJhaXNlIChPZl95b2pzb25fZXJyb3IgKEZhaWx1cmUgd2hhdCwgeW9qc29uKSlcblxubGV0IHVuaXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYE51bGwgLT4gKClcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInVuaXRfb2ZfeW9qc29uOiBgTnVsbCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBib29sX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBCb29sIHYgLT4gdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYm9vbF9vZl95b2pzb246IHRydWUvZmFsc2UgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgc3RyaW5nX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwic3RyaW5nX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGJ5dGVzX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IEJ5dGVzLm9mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImJ5dGVzX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGNoYXJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA8PiAxXG4gICAgdGhlbiBvZl95b2pzb25fZXJyb3IgXCJjaGFyX29mX3lvanNvbjogc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiB5b2pzb247XG4gICAgc3RyLlswXVxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiY2hhcl9vZl95b2pzb246IHN0cmluZyBvZiBzaXplIG9uZSBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludCB2IC0+IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgZmxvYXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEZsb2F0IHYgLT4gdlxuICB8IGBJbnQgaSAtPiBmbG9hdF9vZl9pbnQgaVxuICB8IGBJbnRsaXQgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImZsb2F0X29mX3lvanNvbjogZmxvYXQgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50MzJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gSW50MzIub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBJbnQzMi5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50MzJfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludDY0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IEludDY0Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gSW50NjQub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludDY0X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBuYXRpdmVpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gTmF0aXZlaW50Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gTmF0aXZlaW50Lm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJuYXRpdmVpbnRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IHJlZl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9IHJlZiAoYV9fb2ZfeW9qc29uIHlvanNvbilcbmxldCBsYXp5X3Rfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPSBMYXp5LmZyb21fdmFsIChhX19vZl95b2pzb24geW9qc29uKVxuXG5sZXQgb3B0aW9uX29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwgZWwgLT4gU29tZSAoYV9fb2ZfeW9qc29uIGVsKVxuOztcblxubGV0IHBhaXJfb2ZfeW9qc29uIGFfX29mX3lvanNvbiBiX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbiBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl95b2pzb24gYV95b2pzb24gaW5cbiAgICBsZXQgYiA9IGJfX29mX3lvanNvbiBiX3lvanNvbiBpblxuICAgIGEsIGJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInBhaXJfb2ZfeW9qc29uOiBpbnZhbGlkIGZvcm1hdFwiIHlvanNvblxuOztcblxubGV0IHRyaXBsZV9vZl95b2pzb24gYV9fb2ZfeW9qc29uIGJfX29mX3lvanNvbiBjX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbjsgY195b2pzb24gXSAtPlxuICAgIGxldCBhID0gYV9fb2ZfeW9qc29uIGFfeW9qc29uIGluXG4gICAgbGV0IGIgPSBiX19vZl95b2pzb24gYl95b2pzb24gaW5cbiAgICBsZXQgYyA9IGNfX29mX3lvanNvbiBjX3lvanNvbiBpblxuICAgIGEsIGIsIGNcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInRyaXBsZV9vZl95b2pzb246IGludmFsaWQgZm9ybWF0XCIgeW9qc29uXG47O1xuXG5sZXQgbGlzdF9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgbHN0IC0+XG4gICAgbGV0IHJldl9sc3QgPSBMaXN0LnJldl9tYXAgbHN0IH5mOmFfX29mX3lvanNvbiBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImxpc3Rfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGFycmF5X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbXSAtPiBbfHxdXG4gIHwgYExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3lvanNvbiBoKSBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMuKGkpIDwtIGFfX29mX3lvanNvbiBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImFycmF5X29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBoYXNodGJsX29mX3lvanNvbiBrZXlfb2ZfeW9qc29uIHZhbF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgWyBrX3lvanNvbjsgdl95b2pzb24gXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl95b2pzb24ga195b2pzb24pIH5kYXRhOih2YWxfb2ZfeW9qc29uIHZfeW9qc29uKVxuICAgICAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImhhc2h0Ymxfb2ZfeW9qc29uOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHlvanNvblxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaGFzaHRibF9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgb3BhcXVlX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJvcGFxdWVfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgeW9qc29uXG47O1xuXG5sZXQgZnVuX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJmdW5fb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiB5b2pzb25cbjs7XG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGxldCB5b2pzb25fb2ZfYXJyYXkgPSB5b2pzb25fb2ZfYXJyYXlcbiAgbGV0IGFycmF5X29mX3lvanNvbiA9IGFycmF5X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Jvb2wgPSB5b2pzb25fb2ZfYm9vbFxuICBsZXQgYm9vbF9vZl95b2pzb24gPSBib29sX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2NoYXIgPSB5b2pzb25fb2ZfY2hhclxuICBsZXQgY2hhcl9vZl95b2pzb24gPSBjaGFyX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Zsb2F0ID0geW9qc29uX29mX2Zsb2F0XG4gIGxldCBmbG9hdF9vZl95b2pzb24gPSBmbG9hdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQgPSB5b2pzb25fb2ZfaW50XG4gIGxldCBpbnRfb2ZfeW9qc29uID0gaW50X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludDMyID0geW9qc29uX29mX2ludDMyXG4gIGxldCBpbnQzMl9vZl95b2pzb24gPSBpbnQzMl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQ2NCA9IHlvanNvbl9vZl9pbnQ2NFxuICBsZXQgaW50NjRfb2ZfeW9qc29uID0gaW50NjRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGlzdCA9IHlvanNvbl9vZl9saXN0XG4gIGxldCBsaXN0X29mX3lvanNvbiA9IGxpc3Rfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbmF0aXZlaW50ID0geW9qc29uX29mX25hdGl2ZWludFxuICBsZXQgbmF0aXZlaW50X29mX3lvanNvbiA9IG5hdGl2ZWludF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9vcHRpb24gPSB5b2pzb25fb2Zfb3B0aW9uXG4gIGxldCBvcHRpb25fb2ZfeW9qc29uID0gb3B0aW9uX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3JlZiA9IHlvanNvbl9vZl9yZWZcbiAgbGV0IHJlZl9vZl95b2pzb24gPSByZWZfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2Zfc3RyaW5nID0geW9qc29uX29mX3N0cmluZ1xuICBsZXQgc3RyaW5nX29mX3lvanNvbiA9IHN0cmluZ19vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9ieXRlcyA9IHlvanNvbl9vZl9ieXRlc1xuICBsZXQgYnl0ZXNfb2ZfeW9qc29uID0gYnl0ZXNfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfdW5pdCA9IHlvanNvbl9vZl91bml0XG4gIGxldCB1bml0X29mX3lvanNvbiA9IHVuaXRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGF6eV90ID0geW9qc29uX29mX2xhenlfdFxuICBsZXQgbGF6eV90X29mX3lvanNvbiA9IGxhenlfdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9oYXNodGJsID0geW9qc29uX29mX2hhc2h0YmxcbiAgbGV0IGhhc2h0Ymxfb2ZfeW9qc29uID0gaGFzaHRibF9vZl95b2pzb25cbmVuZFxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBZb2pzb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4hIFN0ZExhYmVsc1xub3BlbiBZb2pzb25fY29udlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAoc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBzdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIHRhZyB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiBzdW0gdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiIGxvYyB0YWdcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYSBuZXN0ZWQgbGlzdFwiKSB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHlvanNvblxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHJlY29yZHMgKilcblxubGV0IHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3lvanNvbjogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvblxuOztcblxubGV0IHJlY29yZF9leHRyYV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb25cbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHlvanNvbiBsc3QgPVxuICBsZXQgdW5kZWZpbmVkID0gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBbXSBsc3QgaW5cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBsb2MgeW9qc29uID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3lvanNvbjogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCB2YWx1ZXMgb2YgdHlwZXMgcmVzdWx0aW5nIGZyb20gcG9seW1vcnBoaWMgcmVjb3JkIFxcXG4gICAgICAgZmllbGRzXCJcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbmxldCBub192YXJpYW50X21hdGNoICgpID0gcmFpc2UgTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IG5vIG1hdGNoaW5nIHZhcmlhbnQgZm91bmRcIikgeW9qc29uXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGZcbiAgICAgIFwiJXNfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHB0YWdfdGFrZXNfYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnIHRha2VzIGFuIGFyZ3VtZW50XCIpIHlvanNvblxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvclxuICAgIChsb2MgXiBcIl9vZl95b2pzb246IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpXG4gICAgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3JcbiAgICAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIilcbiAgICB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSB5b2pzb25cbjs7XG4iLCJtb2R1bGUgWW9qc29uX2NvbnZfZXJyb3IgPSBZb2pzb25fY29udl9lcnJvclxubW9kdWxlIFlvanNvbl9jb252ID0gWW9qc29uX2NvbnZcbm1vZHVsZSBZb2pzb25hYmxlID0gWW9qc29uYWJsZV9pbnRmXG5tb2R1bGUgWW9qc29uID0gWW9qc29uXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgICB8IE5vbmVcbiAgICB8IFNvbWUgb2YgJ2FcbmVuZFxuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgcG9seV9lcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IGZ1biB4IC0+ICF4XG4iLCIjIDEgXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbnR5cGUgbm9ucmVjIGludCA9IGludFxudHlwZSBub25yZWMgY2hhciA9IGNoYXJcbnR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZ1xudHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdFxudHlwZSBub25yZWMgYm9vbCA9IGJvb2xcbnR5cGUgbm9ucmVjIHVuaXQgPSB1bml0XG50eXBlIG5vbnJlYyBleG4gPSBleG5cbnR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXlcbnR5cGUgbm9ucmVjICdhIGxpc3QgPSAnYSBsaXN0XG50eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb25cbnR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludFxudHlwZSBub25yZWMgaW50MzIgPSBpbnQzMlxudHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NFxudHlwZSBub25yZWMgJ2EgbGF6eV90ID0gJ2EgbGF6eV90XG50eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzXG5cbiMgMTggXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbigqIFdlIHJlcXVpcmUgNC4wOCB3aGlsZSA0LjA3IGFscmVhZHkgaGFzIGEgU3RkbGliIG1vZHVsZS5cbiAgIEluIDQuMDcsIHRoZSB0eXBlIGVxdWFsaXRpZXMgb24gU3RkbGliLlBlcnZhc2l2ZXNcbiAgIGFyZSBub3Qgc3Ryb25nIGVub3VnaCBmb3IgdGhlICdpbmNsdWRlIFN0ZGxpYidcbiAgIGJlbG93IHRvIHNhdGlzZnkgdGhlIHNpZ25hdHVyZSBjb25zdHJhaW50cyBvblxuICAgUHB4X2Rlcml2aW5nX3J1bnRpbWUuUGVydmFzaXZlcy4gKilcbm1vZHVsZSBTdGRsaWIgPSBTdGRsaWJcblxuaW5jbHVkZSBTdGRsaWJcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSByZXN1bHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IEVycm9yIG9mICdiXG5cbiAgdHlwZSAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBFcnJvciBvZiAnYlxuZW5kXG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbmxldCBjbHNzID0gQXR0ci5jbGFzc2VzO1xuXG5sZXQgZGl2X2MgPSBjbHMgPT4gZGl2KH5hdHRyPUF0dHIuY2xhc3NfKGNscykpO1xubGV0IHNwYW5fYyA9IGNscyA9PiBzcGFuKH5hdHRyPUF0dHIuY2xhc3NfKGNscykpO1xuXG5sZXQgZGl2X2VtcHR5ID0gZGl2KH5hdHRyPUF0dHIuY3JlYXRlKFwic3R5bGVcIiwgXCJkaXNwbGF5Om5vbmVcIiksIFtdKTtcblxubGV0IGRpdl9pZiA9IChwLCBhdHMsIG5zKSA9PiBwID8gZGl2KH5hdHRyPUF0dHIubWFueShhdHMpLCBucykgOiBkaXZfZW1wdHk7XG5sZXQgc3Bhbl9pZiA9IChwLCBhdHMsIG5zKSA9PlxuICBwID8gc3Bhbih+YXR0cj1BdHRyLm1hbnkoYXRzKSwgbnMpIDogc3BhbihbXSk7XG5cbmxldCB1bmxlc3MgPSAocCwgYSkgPT4gcCA/IEVmZmVjdC5NYW55KFtdKSA6IGE7XG4iLCJsZXQgc3dhcCA9ICgoYSwgYikpID0+IChiLCBhKTtcblxubGV0IG1hcDIgPSAoZiwgKGEsIGIpKSA9PiAoZihhKSwgZihiKSk7XG5cbmxldCBtYXAzID0gKGYsIChhLCBiLCBjKSkgPT4gKGYoYSksIGYoYiksIGYoYykpO1xuIiwibGV0IHByaW50X3RpbWVfcHJlZml4ID1cbiAgICAobmFtZTogc3RyaW5nLCBzdGFydF90aW1lOiBmbG9hdCwgZW5kX3RpbWU6IGZsb2F0KTogdW5pdCA9PiB7XG4gIFByaW50Zi5wcmludGYoXG4gICAgXCIlLTMycyU0LjBmbXNcIixcbiAgICBuYW1lICsrIFwiOlwiLFxuICAgIDEwMDAuMCAqLiAoZW5kX3RpbWUgLS4gc3RhcnRfdGltZSksXG4gICk7XG59O1xuXG5sZXQgcHJpbnRfdGltZSA9IChuYW1lOiBzdHJpbmcsIHN0YXJ0X3RpbWU6IGZsb2F0LCBlbmRfdGltZTogZmxvYXQpOiB1bml0ID0+IHtcbiAgcHJpbnRfdGltZV9wcmVmaXgobmFtZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUpO1xuICBQcmludGYucHJpbnRmKFwiXFxuJSFcIik7XG59O1xuXG5sZXQgcHJpbnRfdGltZXMgPVxuICAgIChuYW1lOiBzdHJpbmcsIHN0YXJ0X3RpbWU6IGZsb2F0LCB0aW1lczogbGlzdCgoc3RyaW5nLCBmbG9hdCkpKTogdW5pdCA9PiB7XG4gIGFzc2VydCh0aW1lcyAhPSBbXSk7XG4gIGxldCBlbmRfdGltZSA9IExpc3QuZm9sZF9sZWZ0KChfLCBsYXN0KSA9PiBzbmQobGFzdCksIC0xLjAsIHRpbWVzKTtcbiAgcHJpbnRfdGltZV9wcmVmaXgobmFtZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUpO1xuICBQcmludGYucHJpbnRmKFwiIFtcIik7XG4gIGxldCByZWMgZ28gPSAocHJldmlvdXNfdGltZTogZmxvYXQsIHRpbWVzOiBsaXN0KChzdHJpbmcsIGZsb2F0KSkpOiB1bml0ID0+IHtcbiAgICBzd2l0Y2ggKHRpbWVzKSB7XG4gICAgfCBbXSA9PiAoKVxuICAgIHwgWyhuYW1lLCB0aW1lKSwgLi4udGltZXNdID0+XG4gICAgICBQcmludGYucHJpbnRmKFwiICVzOiAlLjBmbXNcIiwgbmFtZSwgMTAwMC4wICouICh0aW1lIC0uIHByZXZpb3VzX3RpbWUpKTtcbiAgICAgIGdvKHRpbWUsIHRpbWVzKTtcbiAgICB9O1xuICB9O1xuICBnbyhzdGFydF90aW1lLCB0aW1lcyk7XG4gIFByaW50Zi5wcmludGYoXCIgXVxcbiUhXCIpO1xufTtcblxubGV0IG1lYXN1cmVfdGltZSA9IChuYW1lOiBzdHJpbmcsIG1lYXN1cmU6IGJvb2wsIGY6IHVuaXQgPT4gJ2EpOiAnYSA9PlxuICBpZiAobWVhc3VyZSkge1xuICAgIGxldCBzdGFydF90aW1lID0gU3lzLnRpbWUoKTtcbiAgICBsZXQgeCA9IGYoKTtcbiAgICBsZXQgZW5kX3RpbWUgPSBTeXMudGltZSgpO1xuICAgIHByaW50X3RpbWUobmFtZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUpO1xuICAgIHg7XG4gIH0gZWxzZSB7XG4gICAgZigpO1xuICB9O1xuIiwibGV0IGNhdCA9IFN0cmluZy5jb25jYXQoXCJcIik7XG5cbmxldCByZW1vdmVfbnRoID0gKG4sIHQpID0+IHtcbiAgYXNzZXJ0KG4gPCBTdHJpbmcubGVuZ3RoKHQpKTtcbiAgU3RyaW5nLnN1Yih0LCAwLCBuKSArKyBTdHJpbmcuc3ViKHQsIG4gKyAxLCBTdHJpbmcubGVuZ3RoKHQpIC0gbiAtIDEpO1xufTtcblxubGV0IHJlbW92ZV9maXJzdCA9IHJlbW92ZV9udGgoMCk7XG5sZXQgcmVtb3ZlX2xhc3QgPSB0ID0+IHJlbW92ZV9udGgoU3RyaW5nLmxlbmd0aCh0KSAtIDEsIHQpO1xuXG5sZXQgaW5zZXJ0X250aCA9IChuLCBzLCB0KSA9PiB7XG4gIGFzc2VydChuIDwgU3RyaW5nLmxlbmd0aCh0KSk7XG4gIFN0cmluZy5zdWIodCwgMCwgbikgKysgcyArKyBTdHJpbmcuc3ViKHQsIG4sIFN0cmluZy5sZW5ndGgodCkgLSBuKTtcbn07XG5cbmxldCBzcGxpdF9udGggPSAobiwgdCkgPT4ge1xuICBhc3NlcnQobiA8IFN0cmluZy5sZW5ndGgodCkpO1xuICAoU3RyaW5nLnN1Yih0LCAwLCBuKSwgU3RyaW5nLnN1Yih0LCBuLCBTdHJpbmcubGVuZ3RoKHQpIC0gbikpO1xufTtcblxubGV0IHRvX2xpc3QgPSBzID0+IExpc3QuaW5pdChTdHJpbmcubGVuZ3RoKHMpLCBpID0+IFN0cmluZy5tYWtlKDEsIHMuW2ldKSk7XG5cbmxldCByZXBlYXQgPSAobiwgcykgPT4gU3RyaW5nLmNvbmNhdChcIlwiLCBMaXN0LmluaXQobiwgXyA9PiBzKSk7XG5cbmxldCBhYmJyZXZpYXRlID0gKG1heF9sZW4sIHMpID0+XG4gIFN0cmluZy5sZW5ndGgocykgPiBtYXhfbGVuID8gU3RyaW5nLnN1YihzLCAwLCBtYXhfbGVuKSArKyBcIi4uLlwiIDogcztcbiIsIi8qIFRPRE86IHdlIG1pZ2h0IHdhbnQgdG8ganVzdCB1c2UgdGhpcyBBUEk/XG5cbiAgICBodHRwczovL2dpdGh1Yi5jb20vcmdyaW5iZXJnL29jYW1sLW10bC9ibG9iL21hc3Rlci9saWIvbXRsLm1sXG5cbiAgIFRob3VnaCBpdCdzIGEgYml0IGhlYXZ5LCBlc3BlY2lhbGx5IHdpdGggdGhlIGV4dHJhIHR5cGUgcGFyYW1ldGVyLi4uXG5cbiAgIEluIGFueSBjYXNlLCB0aGF0J3MgYSBnb29kIHJlZmVyZW5jZS4gKi9cblxubW9kdWxlIHR5cGUgTU9OQURfQkFTSUMgPSB7XG4gIFtAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB0KCdhKTtcbiAgbGV0IHJldHVybjogJ2EgPT4gdCgnYSk7XG4gIGxldCBiaW5kOiAodCgnYSksICdhID0+IHQoJ2IpKSA9PiB0KCdiKTtcbn07XG5cbm1vZHVsZSB0eXBlIE1PTkFEX0ZVTkNUT1IgPSB7XG4gIGluY2x1ZGUgTU9OQURfQkFTSUM7XG4gIGxldCBtYXA6ICh0KCdhKSwgJ2EgPT4gJ2IpID0+IHQoJ2IpO1xufTtcblxubW9kdWxlIE1ha2VfRnVuY3RvciA9IChNOiBNT05BRF9CQVNJQykgPT4ge1xuICBpbmNsdWRlIE07XG4gIGxldCBtYXAgPSAoeCwgZikgPT4gYmluZCh4LCBhID0+IE0ucmV0dXJuKGYoYSkpKTtcbn07XG5cbm1vZHVsZSB0eXBlIE1PTkFEX1pJUCA9IHtcbiAgaW5jbHVkZSBNT05BRF9GVU5DVE9SO1xuICBsZXQgemlwOiAodCgnYSksIHQoJ2IpKSA9PiB0KCgnYSwgJ2IpKTtcbn07XG5cbm1vZHVsZSBNYWtlX1ppcCA9IChNOiBNT05BRF9GVU5DVE9SKSA9PiB7XG4gIGluY2x1ZGUgTTtcblxuICBsZXQgemlwID0gKHgsIHkpID0+IGJpbmQoeCwgYSA9PiBiaW5kKHksIGIgPT4gTS5yZXR1cm4oKGEsIGIpKSkpO1xufTtcblxubW9kdWxlIHR5cGUgTU9OQUQgPSB7XG4gIGluY2x1ZGUgTU9OQURfWklQO1xuXG4gIGxldCBzZXF1ZW5jZTogbGlzdCh0KCdhKSkgPT4gdChsaXN0KCdhKSk7XG5cbiAgbW9kdWxlIFN5bnRheDoge1xuICAgIGxldCAoIGxldCogKTogKHQoJ2EpLCAnYSA9PiB0KCdiKSkgPT4gdCgnYik7XG4gICAgbGV0IChsZXQrKTogKHQoJ2EpLCAnYSA9PiAnYikgPT4gdCgnYik7XG4gICAgbGV0IChhbmQrKTogKHQoJ2EpLCB0KCdiKSkgPT4gdCgoJ2EsICdiKSk7XG5cbiAgICBsZXQgKD4+PSk6ICh0KCdhKSwgJ2EgPT4gdCgnYikpID0+IHQoJ2IpO1xuICAgIGxldCAoPj58KTogKHQoJ2EpLCAnYSA9PiAnYikgPT4gdCgnYik7XG4gIH07XG59O1xuXG5tb2R1bGUgTWFrZV9Nb25hZF9aID0gKE06IE1PTkFEX1pJUCkgPT4ge1xuICBpbmNsdWRlIE07XG5cbiAgbGV0IHNlcXVlbmNlID0gbXMgPT4ge1xuICAgIGxldCByZWMgc2VxdWVuY2UnID0gKG1zLCBhY2MpID0+IHtcbiAgICAgIHN3aXRjaCAobXMpIHtcbiAgICAgIHwgW10gPT4gYWNjXG4gICAgICB8IFttLCAuLi5tc10gPT5cbiAgICAgICAgYmluZChtLCB4ID0+IHNlcXVlbmNlJyhtcywgbWFwKGFjYywgYWNjID0+IFt4LCAuLi5hY2NdKSkpXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBtYXAoc2VxdWVuY2UnKG1zLCBbXSB8PiByZXR1cm4pLCBMaXN0LnJldik7XG4gIH07XG5cbiAgbW9kdWxlIFN5bnRheCA9IHtcbiAgICBsZXQgKCBsZXQqICkgPSBiaW5kO1xuICAgIGxldCAobGV0KykgPSBtYXA7XG4gICAgbGV0IChhbmQrKSA9IHppcDtcblxuICAgIGxldCAoPj49KSA9IGJpbmQ7XG4gICAgbGV0ICg+PnwpID0gbWFwO1xuICB9O1xufTtcblxubW9kdWxlIE1ha2VfTW9uYWRfQiA9IChNOiBNT05BRF9CQVNJQykgPT5cbiAgTWFrZV9Nb25hZF9aKE1ha2VfWmlwKE1ha2VfRnVuY3RvcihNKSkpO1xuIiwibW9kdWxlIHR5cGUgU1RBVEUgPSB7XG4gIHR5cGUgdDtcbn07XG5cbm1vZHVsZSB0eXBlIFMgPSB7XG4gIHR5cGUgc3RhdGU7XG5cbiAgaW5jbHVkZSBNb25hZHMuTU9OQUQgd2l0aCB0eXBlIHQoJ2EpID0gc3RhdGUgPT4gKHN0YXRlLCAnYSk7XG5cbiAgbGV0IGdldDogdChzdGF0ZSk7XG4gIGxldCBwdXQ6IHN0YXRlID0+IHQodW5pdCk7XG4gIGxldCBtb2RpZnk6IChzdGF0ZSA9PiBzdGF0ZSkgPT4gdCh1bml0KTtcbiAgbGV0IG1vZGlmeSc6IChzdGF0ZSA9PiAoJ2EsIHN0YXRlKSkgPT4gdCgnYSk7XG59O1xuXG5tb2R1bGUgTWFrZSA9IChTVDogU1RBVEUpID0+IHtcbiAgdHlwZSBzdGF0ZSA9IFNULnQ7XG5cbiAgbW9kdWxlIFQgPSB7XG4gICAgW0BkZXJpdmluZyBzZXhwXVxuICAgIHR5cGUgdCgnYSkgPSBzdGF0ZSA9PiAoc3RhdGUsICdhKTtcblxuICAgIGxldCByZXR1cm4gPSAoeCwgcykgPT4gKHMsIHgpO1xuXG4gICAgbGV0IGJpbmQgPSAoeGYsIGYsIHMpID0+IHtcbiAgICAgIGxldCAocycsIHgpID1cbiAgICAgICAgc3dpdGNoICh4ZihzKSkge1xuICAgICAgICB8IHIgPT4gclxuICAgICAgICB8IGV4Y2VwdGlvbiBleG4gPT5cbiAgICAgICAgICBwcmludF9lbmRsaW5lKFxuICAgICAgICAgICAgXCJiaW5kIGV4Y2VwdGlvbjogXCJcbiAgICAgICAgICAgICsrIFNleHBsaWIuU2V4cC50b19zdHJpbmdfaHVtKFNleHBsaWIuU3RkLnNleHBfb2ZfZXhuKGV4bikpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmFpc2UoZXhuKTtcbiAgICAgICAgfTtcbiAgICAgIGYoeCwgcycpO1xuICAgIH07XG5cbiAgICBsZXQgZ2V0ID0gcyA9PiAocywgcyk7XG5cbiAgICBsZXQgcHV0ID0gKHgsIF8pID0+ICh4LCAoKSk7XG5cbiAgICBsZXQgbW9kaWZ5ID0gZiA9PiBiaW5kKGdldCwgcyA9PiBwdXQoZihzKSkpO1xuXG4gICAgbGV0IG1vZGlmeScgPSBmID0+XG4gICAgICBiaW5kKFxuICAgICAgICBnZXQsXG4gICAgICAgIHMgPT4ge1xuICAgICAgICAgIGxldCAoeCwgcykgPSBmKHMpO1xuICAgICAgICAgIGJpbmQocHV0KHMpLCBfID0+IHJldHVybih4KSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICB9O1xuXG4gIGluY2x1ZGUgVDtcbiAgaW5jbHVkZSBNb25hZHMuTWFrZV9Nb25hZF9CKFQpO1xufTtcbiIsImluY2x1ZGUgQmFzZS5SZXN1bHQ7XG5cbm1vZHVsZSBTeW50YXggPSB7XG4gIGxldCAoIGxldCogKSA9IChyZXN1bHQsIGYpID0+IGJpbmQofmYsIHJlc3VsdCk7XG4gIGxldCAobGV0KykgPSAocmVzdWx0LCBmKSA9PiBtYXAofmYsIHJlc3VsdCk7XG59O1xuXG5tb2R1bGUgU2VyaWFsaXphdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdywgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50KCdhLCAnYikgPVxuICAgIHwgT2soJ2EpXG4gICAgfCBFcnJvcignYik7XG5cbiAgbGV0IHRvX3BlcnNpc3RlbnQgPSAocmVzdWx0OiB0KCdhLCAnYikpOiBwZXJzaXN0ZW50KCdhLCAnYikgPT5cbiAgICBzd2l0Y2ggKHJlc3VsdCkge1xuICAgIHwgT2soYSkgPT4gT2soYSlcbiAgICB8IEVycm9yKGIpID0+IEVycm9yKGIpXG4gICAgfTtcblxuICBsZXQgb2ZfcGVyc2lzdGVudCA9IChyZXN1bHQ6IHBlcnNpc3RlbnQoJ2EsICdiKSk6IHQoJ2EsICdiKSA9PlxuICAgIHN3aXRjaCAocmVzdWx0KSB7XG4gICAgfCBPayhhKSA9PiBPayhhKVxuICAgIHwgRXJyb3IoYikgPT4gRXJyb3IoYilcbiAgICB9O1xufTtcblxubGV0IHBwID0gKGEsIGIsIGMsIHgpID0+XG4gIHggfD4gU2VyaWFsaXphdGlvbi50b19wZXJzaXN0ZW50IHw+IFNlcmlhbGl6YXRpb24ucHBfcGVyc2lzdGVudChhLCBiLCBjKTtcblxubGV0IHRfb2ZfeW9qc29uID0gKGEsIGIsIHgpID0+XG4gIHggfD4gU2VyaWFsaXphdGlvbi5wZXJzaXN0ZW50X29mX3lvanNvbihhLCBiKSB8PiBTZXJpYWxpemF0aW9uLm9mX3BlcnNpc3RlbnQ7XG5cbmxldCB5b2pzb25fb2ZfdCA9IChhLCBiLCB4KSA9PlxuICB4IHw+IFNlcmlhbGl6YXRpb24udG9fcGVyc2lzdGVudCB8PiBTZXJpYWxpemF0aW9uLnlvanNvbl9vZl9wZXJzaXN0ZW50KGEsIGIpO1xuIiwibGV0IG1hcF9mc3QgPSAoZiwgKHgsIHkpKSA9PiAoZih4KSwgeSk7XG5sZXQgbWFwX3NuZCA9IChmLCAoeCwgeSkpID0+ICh4LCBmKHkpKTtcbiIsImxldCBnZXQgPSAoaWZfbm9uZSwgbykgPT5cbiAgc3dpdGNoIChvKSB7XG4gIHwgTm9uZSA9PiBpZl9ub25lKClcbiAgfCBTb21lKGEpID0+IGFcbiAgfTtcbmxldCBnZXRfb3JfZmFpbCA9IHMgPT4gZ2V0KCgpID0+IGZhaWx3aXRoKHMpKTtcbmxldCBnZXRfb3JfcmFpc2UgPSBlID0+IGdldCgoKSA9PiByYWlzZShlKSk7XG5cbmxldCBtYXAyID0gKGYsIG8xLCBvMikgPT5cbiAgc3dpdGNoIChvMSwgbzIpIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gTm9uZVxuICB8IChTb21lKHYxKSwgU29tZSh2MikpID0+IFNvbWUoZih2MSwgdjIpKVxuICB9O1xuXG5sZXQgc29tZV9pZiA9IChjb25kLCBhKSA9PiBjb25kID8gU29tZShhKSA6IE5vbmU7XG5cbmxldCB6aXAgPSAobzEsIG8yKSA9PlxuICBzd2l0Y2ggKG8xLCBvMikge1xuICB8IChOb25lLCBfKVxuICB8IChfLCBOb25lKSA9PiBOb25lXG4gIHwgKFNvbWUoYSksIFNvbWUoYikpID0+IFNvbWUoKGEsIGIpKVxuICB9O1xubGV0IHVuemlwID0gKG86IG9wdGlvbigoJ2EsICdiKSkpOiAob3B0aW9uKCdhKSwgb3B0aW9uKCdiKSkgPT5cbiAgc3dpdGNoIChvKSB7XG4gIHwgTm9uZSA9PiAoTm9uZSwgTm9uZSlcbiAgfCBTb21lKChhLCBiKSkgPT4gKFNvbWUoYSksIFNvbWUoYikpXG4gIH07XG5cbmxldCBzZXF1ZW5jZSA9IChsOiBsaXN0KG9wdGlvbignYSkpKTogb3B0aW9uKGxpc3QoJ2EpKSA9PlxuICBMaXN0LmZvbGRfcmlnaHQobWFwMigoeCwgeHMpID0+IFt4LCAuLi54c10pLCBsLCBTb21lKFtdKSk7XG5cbmxldCBhbmRfdGhlbiA9IChmLCBvKSA9PiBPcHRpb24uYmluZChvLCBmKTtcblxubW9kdWxlIFN5bnRheCA9IHtcbiAgbGV0ICggbGV0KiApID0gT3B0aW9uLmJpbmQ7XG4gIGxldCAobGV0KykgPSAobywgZikgPT4gT3B0aW9uLm1hcChmLCBvKTtcbiAgbGV0IChhbmQrKSA9IHppcDtcbn07XG4iLCJtb2R1bGUgdHlwZSBPcmRlcmVkU2hvd1R5cGUgPSB7XG4gIGluY2x1ZGUgTWFwLk9yZGVyZWRUeXBlO1xuXG4gIGxldCBwcDogKEZvcm1hdC5mb3JtYXR0ZXIsIHQpID0+IHVuaXQ7XG59O1xuXG5tb2R1bGUgdHlwZSBPcmRlcmVkU2V4cFR5cGUgPSB7XG4gIGluY2x1ZGUgTWFwLk9yZGVyZWRUeXBlO1xuXG4gIGxldCBzZXhwX29mX3Q6IHQgPT4gU2V4cGxpYi5TZXhwLnQ7XG4gIGxldCB0X29mX3NleHA6IFNleHBsaWIuU2V4cC50ID0+IHQ7XG59O1xuXG5tb2R1bGUgdHlwZSBPcmRlcmVkWW9qc29uVHlwZSA9IHtcbiAgaW5jbHVkZSBNYXAuT3JkZXJlZFR5cGU7XG5cbiAgbGV0IHlvanNvbl9vZl90OiB0ID0+IFlvanNvbi5TYWZlLnQ7XG4gIGxldCB0X29mX3lvanNvbjogWW9qc29uLlNhZmUudCA9PiB0O1xufTtcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPSB7XG4gIGluY2x1ZGUgT3JkZXJlZFNob3dUeXBlO1xuICBpbmNsdWRlIE9yZGVyZWRTZXhwVHlwZSB3aXRoIHR5cGUgdCA6PSB0O1xuICBpbmNsdWRlIE9yZGVyZWRZb2pzb25UeXBlIHdpdGggdHlwZSB0IDo9IHQ7XG59O1xuXG5tb2R1bGUgdHlwZSBTaG93UyA9IHtcbiAgaW5jbHVkZSBNYXAuUztcblxuICBsZXQgcHA6ICgoRm9ybWF0LmZvcm1hdHRlciwgJ2EpID0+IHVuaXQsIEZvcm1hdC5mb3JtYXR0ZXIsIHQoJ2EpKSA9PiB1bml0O1xufTtcblxubW9kdWxlIHR5cGUgU2V4cFMgPSB7XG4gIGluY2x1ZGUgTWFwLlM7XG5cbiAgbGV0IHNleHBfb2ZfdDogKCd2ID0+IFNleHBsaWIuU2V4cC50LCB0KCd2KSkgPT4gU2V4cGxpYi5TZXhwLnQ7XG4gIGxldCB0X29mX3NleHA6IChTZXhwbGliLlNleHAudCA9PiAndiwgU2V4cGxpYi5TZXhwLnQpID0+IHQoJ3YpO1xufTtcblxubW9kdWxlIHR5cGUgWW9qc29uUyA9IHtcbiAgaW5jbHVkZSBNYXAuUztcblxuICBsZXQgeW9qc29uX29mX3Q6ICgndiA9PiBZb2pzb24uU2FmZS50LCB0KCd2KSkgPT4gWW9qc29uLlNhZmUudDtcbiAgbGV0IHRfb2ZfeW9qc29uOiAoWW9qc29uLlNhZmUudCA9PiAndiwgWW9qc29uLlNhZmUudCkgPT4gdCgndik7XG59O1xuXG5tb2R1bGUgdHlwZSBTID0ge1xuICBpbmNsdWRlIFNob3dTO1xuICBpbmNsdWRlIFNleHBTIHdpdGggdHlwZSB0KCdhKSA6PSB0KCdhKSBhbmQgdHlwZSBrZXkgOj0ga2V5O1xuICBpbmNsdWRlIFlvanNvblMgd2l0aCB0eXBlIHQoJ2EpIDo9IHQoJ2EpIGFuZCB0eXBlIGtleSA6PSBrZXk7XG59O1xuXG5tb2R1bGUgTWFrZVNob3dGb3IgPSAoTzogT3JkZXJlZFNob3dUeXBlLCBTOiBNYXAuUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIGxldCBwcCA9IChwcF92LCBmLCBtYXApID0+XG4gICAgUy5pdGVyKFxuICAgICAgKGssIHYpID0+IEZvcm1hdC5mcHJpbnRmKGYsIFwiJWEgLT4gJWFAXFxuXCIsIE8ucHAsIGssIHBwX3YsIHYpLFxuICAgICAgbWFwLFxuICAgICk7XG59O1xuXG5tb2R1bGUgTWFrZVNob3cgPSAoTzogT3JkZXJlZFNob3dUeXBlKSA6IChTaG93UyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIG1vZHVsZSBNID0gTWFwLk1ha2UoTyk7XG5cbiAgaW5jbHVkZSBNO1xuICBpbmNsdWRlIE1ha2VTaG93Rm9yKE8sIE0pO1xufTtcblxubW9kdWxlIE1ha2VTZXhwRm9yID0gKE86IE9yZGVyZWRTZXhwVHlwZSwgUzogTWFwLlMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBvcGVuIFNleHBsaWIuU3RkO1xuXG4gIFtAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBiaW5kaW5nKCd2KSA9IChPLnQsICd2KTtcblxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdiwgbWFwKSA9PlxuICAgIG1hcCB8PiBTLmJpbmRpbmdzIHw+IHNleHBfb2ZfbGlzdChzZXhwX29mX2JpbmRpbmcoc2V4cF9vZl92KSk7XG4gIGxldCB0X29mX3NleHAgPSAodl9vZl9zZXhwLCBzZXhwKSA9PlxuICAgIHNleHBcbiAgICB8PiBsaXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBTLm9mX3NlcTtcbn07XG5cbm1vZHVsZSBNYWtlU2V4cCA9IChPOiBPcmRlcmVkU2V4cFR5cGUpIDogKFNleHBTIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbW9kdWxlIE0gPSBNYXAuTWFrZShPKTtcblxuICBpbmNsdWRlIE07XG4gIGluY2x1ZGUgTWFrZVNleHBGb3IoTywgTSk7XG59O1xuXG5tb2R1bGUgTWFrZVlvanNvbkZvciA9IChPOiBPcmRlcmVkWW9qc29uVHlwZSwgUzogTWFwLlMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBbQGRlcml2aW5nIHlvanNvbl1cbiAgdHlwZSBiaW5kaW5nKCd2KSA9IChPLnQsICd2KTtcblxuICBsZXQgeW9qc29uX29mX3QgPSAoeW9qc29uX29mX3YsIG1hcCkgPT5cbiAgICBtYXAgfD4gUy5iaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuICBsZXQgdF9vZl95b2pzb24gPSAodl9vZl95b2pzb24sIHlvanNvbikgPT5cbiAgICB5b2pzb25cbiAgICB8PiBsaXN0X29mX3lvanNvbihiaW5kaW5nX29mX3lvanNvbih2X29mX3lvanNvbikpXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBTLm9mX3NlcTtcbn07XG5cbm1vZHVsZSBNYWtlWW9qc29uID0gKE86IE9yZGVyZWRZb2pzb25UeXBlKSA6IChZb2pzb25TIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbW9kdWxlIE0gPSBNYXAuTWFrZShPKTtcblxuICBpbmNsdWRlIE07XG4gIGluY2x1ZGUgTWFrZVlvanNvbkZvcihPLCBNKTtcbn07XG5cbm1vZHVsZSBNYWtlRm9yID0gKE86IE9yZGVyZWRUeXBlLCBNOiBNYXAuUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIGluY2x1ZGUgTWFrZVNob3dGb3IoTywgTSk7XG4gIGluY2x1ZGUgTWFrZVNleHBGb3IoTywgTSk7XG4gIGluY2x1ZGUgTWFrZVlvanNvbkZvcihPLCBNKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE86IE9yZGVyZWRUeXBlKSA6IChTIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbW9kdWxlIE0gPSBNYXAuTWFrZShPKTtcblxuICBpbmNsdWRlIE07XG4gIGluY2x1ZGUgTWFrZUZvcihPLCBNKTtcbn07XG4iLCJsZXQgcmV2X2lmID0gKGI6IGJvb2wpID0+IGIgPyBMaXN0LnJldiA6IEZ1bi5pZDtcblxubGV0IGRlZHVwID0geHMgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICh4LCBkZWR1cGVkKSA9PiBMaXN0Lm1lbSh4LCBkZWR1cGVkKSA/IGRlZHVwZWQgOiBbeCwgLi4uZGVkdXBlZF0sXG4gICAgeHMsXG4gICAgW10sXG4gICk7XG5cbmxldCBkZWR1cF9mID0gKGYsIHhzKSA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKHgsIGRlZHVwZWQpID0+IExpc3QuZXhpc3RzKGYoeCksIGRlZHVwZWQpID8gZGVkdXBlZCA6IFt4LCAuLi5kZWR1cGVkXSxcbiAgICB4cyxcbiAgICBbXSxcbiAgKTtcblxubGV0IGFyZV9kdXBsaWNhdGVzID0geHMgPT5cbiAgTGlzdC5sZW5ndGgoTGlzdC5zb3J0X3VuaXEoY29tcGFyZSwgeHMpKSA9PSBMaXN0Lmxlbmd0aCh4cyk7XG5cbmxldCBncm91cF9ieSA9IChrZXk6ICd4ID0+ICdrLCB4czogbGlzdCgneCkpOiBsaXN0KCgnaywgbGlzdCgneCkpKSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoZ3JvdXBlZCwgeCkgPT4ge1xuICAgICAgbGV0IGsgPSBrZXkoeCk7XG4gICAgICBsZXQga19ncm91cCA9XG4gICAgICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoaywgZ3JvdXBlZCkpIHtcbiAgICAgICAgfCBOb25lID0+IFtdXG4gICAgICAgIHwgU29tZSh4cykgPT4geHNcbiAgICAgICAgfTtcbiAgICAgIFsoaywgW3gsIC4uLmtfZ3JvdXBdKSwgLi4uTGlzdC5yZW1vdmVfYXNzb2MoaywgZ3JvdXBlZCldO1xuICAgIH0sXG4gICAgW10sXG4gICAgeHMsXG4gICk7XG5cbmxldCByZWMgcmFuZ2UgPSAofmxvPTAsIGhpKSA9PlxuICBpZiAobG8gPiBoaSkge1xuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5yYW5nZVwiKSk7XG4gIH0gZWxzZSBpZiAobG8gPT0gaGkpIHtcbiAgICBbXTtcbiAgfSBlbHNlIHtcbiAgICBbbG8sIC4uLnJhbmdlKH5sbz1sbyArIDEsIGhpKV07XG4gIH07XG5cbi8vIGhlYWRzIG9mIHByZWZpeCBhbmQgc3VmZml4IG5laWdoYm9yIHRoZSBzdWJqZWN0XG50eXBlIGZyYW1lKCd4KSA9IChsaXN0KCd4KSwgbGlzdCgneCkpO1xuXG5sZXQgcmVjIG1rX2ZyYW1lID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogZnJhbWUoJ3gpID0+IHtcbiAgbGV0IGludmFsaWRfYXJnID0gKCkgPT4gcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLm1rX2ZyYW1lXCIpKTtcbiAgaWYgKG4gPCAwKSB7XG4gICAgaW52YWxpZF9hcmcoKTtcbiAgfSBlbHNlIGlmIChuID09IDApIHtcbiAgICAoW10sIHhzKTtcbiAgfSBlbHNlIHtcbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiBpbnZhbGlkX2FyZygpXG4gICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICBsZXQgKHByZWZpeCwgc3VmZml4KSA9IG1rX2ZyYW1lKG4gLSAxLCB4cyk7XG4gICAgICAocHJlZml4IEAgW3hdLCBzdWZmaXgpO1xuICAgIH07XG4gIH07XG59O1xuXG5sZXQgcmVjIHNwbGl0ID1cbiAgICAgICAgKGw6IGxpc3QoJ3gpLCBjb25kOiAneCA9PiBib29sKTogKGxpc3QoJ3gpLCBvcHRpb24oJ3gpLCBsaXN0KCd4KSkgPT4ge1xuICBzd2l0Y2ggKGwpIHtcbiAgfCBbXSA9PiAoW10sIE5vbmUsIFtdKVxuICB8IFt4LCAuLi54c10gPT5cbiAgICBpZiAoY29uZCh4KSkge1xuICAgICAgKFtdLCBTb21lKHgpLCB4cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCAocHJlLCB4JywgcG9zdCkgPSBzcGxpdCh4cywgY29uZCk7XG4gICAgICAoW3gsIC4uLnByZV0sIHgnLCBwb3N0KTtcbiAgICB9XG4gIH07XG59O1xuXG5sZXQgcmVjIHNwbGl0X2ZyYW1lID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogKCd4LCBmcmFtZSgneCkpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IGZhaWx3aXRoKFwibGlzdCBpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIHwgKDAsIFt4LCAuLi54c10pID0+ICh4LCAoW10sIHhzKSlcbiAgfCAoXywgW3gsIC4uLnhzXSkgPT5cbiAgICBsZXQgKHN1YmosIChwcmVmaXgsIHN1ZmZpeCkpID0gc3BsaXRfZnJhbWUobiAtIDEsIHhzKTtcbiAgICAoc3ViaiwgKHByZWZpeCBAIFt4XSwgc3VmZml4KSk7XG4gIH07XG5cbmxldCBvZl9mcmFtZSA9ICh+c3ViamVjdDogbGlzdCgneCk9W10sIChwcmVmaXgsIHN1ZmZpeCk6IGZyYW1lKCd4KSkgPT5cbiAgTGlzdC5jb25jYXQoW0xpc3QucmV2KHByZWZpeCksIHN1YmplY3QsIHN1ZmZpeF0pO1xuXG5sZXQgY29tYmluZV9vcHQgPSAoeHMsIHlzKSA9PlxuICBzd2l0Y2ggKExpc3QuY29tYmluZSh4cywgeXMpKSB7XG4gIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBOb25lXG4gIHwgeHlzID0+IFNvbWUoeHlzKVxuICB9O1xuXG5sZXQgaXNfZW1wdHkgPVxuICBmdW5cbiAgfCBbXSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGZsYXRfbWFwID0gKGYsIGwpID0+IExpc3QuZmxhdHRlbihMaXN0Lm1hcChmLCBsKSk7XG5cbmxldCByZWMgam9pbiA9IChzZXA6ICd4LCB4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeF0gPT4gW3hdXG4gIHwgW3gsIC4uLnhzXSA9PiBbeCwgc2VwLCAuLi5qb2luKHNlcCwgeHMpXVxuICB9O1xuXG5sZXQgaGRfb3B0ID1cbiAgZnVuXG4gIHwgW10gPT4gTm9uZVxuICB8IFtoZCwgLi4uX10gPT4gU29tZShoZCk7XG5cbmxldCByZWMgbnRoX29wdCA9IChuLCB4cykgPT5cbiAgbiA8IDBcbiAgICA/IE5vbmVcbiAgICA6IChcbiAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgfCBbaGQsIC4uLnRsXSA9PiBuID09IDAgPyBTb21lKGhkKSA6IG50aF9vcHQobiAtIDEsIHRsKVxuICAgICAgfVxuICAgICk7XG5cbi8qKlxuICogYHNwbGl0X25fb3B0KG4sIHhzKWAgc3BsaXRzIHRoZSBmaXJzdCBgbmAgZWxlbWVudHMgZnJvbSBgeHNgXG4gKiBpZiBgeHNgIGhhcyBgbmAgb3IgbW9yZSBlbGVtZW50c1xuICovXG5sZXQgc3BsaXRfbl9vcHQgPSAobjogaW50LCB4czogbGlzdCgneCkpOiBvcHRpb24oKGxpc3QoJ3gpLCBsaXN0KCd4KSkpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSkgPT5cbiAgICBpZiAobiA8IDApIHtcbiAgICAgIE5vbmU7XG4gICAgfSBlbHNlIGlmIChuID09IDApIHtcbiAgICAgIFNvbWUoKFtdLCB4cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICB8IFtdID0+IE5vbmVcbiAgICAgIHwgW3gsIC4uLnhzXSA9PlxuICAgICAgICBnbyhuIC0gMSwgeHMpXG4gICAgICAgIHw+IE9wdGlvbi5tYXAoKChwcmVmaXgsIHN1ZmZpeCkpID0+IChbeCwgLi4ucHJlZml4XSwgc3VmZml4KSlcbiAgICAgIH07XG4gICAgfTtcbiAgZ28obiwgeHMpO1xufTtcblxuLy8gVE9ETyB1bmlmeSB3aXRoIExpc3RGcmFtZVxubGV0IHNwbGl0X24gPSAobjogaW50LCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIGxpc3QoJ3gpKSA9PlxuICBzd2l0Y2ggKHNwbGl0X25fb3B0KG4sIHhzKSkge1xuICB8IE5vbmUgPT5cbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfbjogXCIgKysgc3RyaW5nX29mX2ludChuKSkpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBzdWJsaXN0IGZyb20gaW5kZXggaSAoaW5jbHVzaXZlKVxuICogdG8gaW5kZXggaiAoZXhjbHVzaXZlKSwgY291cGxlZCB3aXRoIHRoZVxuICogc3Vycm91bmRpbmcgcHJlZml4L3N1ZmZpeCBzdWJsaXN0cy5cbiAqIFJldHVybnMgTm9uZSBpZiBpID4gai5cbiAqL1xubGV0IHNwbGl0X3N1Ymxpc3Rfb3B0ID1cbiAgICAoaTogaW50LCBqOiBpbnQsIHhzOiBsaXN0KCd4KSlcbiAgICA6IG9wdGlvbigobGlzdCgneCksIGxpc3QoJ3gpLCBsaXN0KCd4KSkpID0+IHtcbiAgc3dpdGNoIChzcGxpdF9uX29wdChqLCB4cykpIHtcbiAgfCBOb25lID0+IE5vbmVcbiAgfCBTb21lKChsZWZ0LCByaWdodCkpID0+XG4gICAgc3dpdGNoIChzcGxpdF9uX29wdChpLCBsZWZ0KSkge1xuICAgIHwgTm9uZSA9PiBOb25lXG4gICAgfCBTb21lKChsZWZ0LCBtaWQpKSA9PiBTb21lKChsZWZ0LCBtaWQsIHJpZ2h0KSlcbiAgICB9XG4gIH07XG59O1xubGV0IHNwbGl0X3N1Ymxpc3QgPVxuICAgIChpOiBpbnQsIGo6IGludCwgeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCBsaXN0KCd4KSwgbGlzdCgneCkpID0+XG4gIHN3aXRjaCAoc3BsaXRfc3VibGlzdF9vcHQoaSwgaiwgeHMpKSB7XG4gIHwgTm9uZSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfc3VibGlzdFwiKSlcbiAgfCBTb21lKHIpID0+IHJcbiAgfTtcbmxldCBzdWJsaXN0ID0gKChpLCBqKSwgeHM6IGxpc3QoJ3gpKTogbGlzdCgneCkgPT4ge1xuICBsZXQgKF8sIHN1Ymxpc3QsIF8pID0gc3BsaXRfc3VibGlzdChpLCBqLCB4cyk7XG4gIHN1Ymxpc3Q7XG59O1xuXG5sZXQgcmVjIHNwbGl0X250aF9vcHQgPSAobiwgeHMpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCBfIHdoZW4gbiA8IDAgPT4gTm9uZVxuICB8IChfLCBbXSkgPT4gTm9uZVxuICB8ICgwLCBbeCwgLi4uc3VmZml4XSkgPT4gU29tZSgoW10sIHgsIHN1ZmZpeCkpXG4gIHwgKF8sIFt4LCAuLi54c10pID0+XG4gICAgc3BsaXRfbnRoX29wdChuIC0gMSwgeHMpXG4gICAgfD4gT3B0aW9uLm1hcCgoKHByZWZpeCwgc3ViamVjdCwgc3VmZml4KSkgPT5cbiAgICAgICAgIChbeCwgLi4ucHJlZml4XSwgc3ViamVjdCwgc3VmZml4KVxuICAgICAgIClcbiAgfTtcbmxldCBzcGxpdF9udGggPSAobiwgeHMpID0+XG4gIHN3aXRjaCAoc3BsaXRfbnRoX29wdChuLCB4cykpIHtcbiAgfCBOb25lID0+XG4gICAgcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLnNwbGl0X250aDogXCIgKysgc3RyaW5nX29mX2ludChuKSkpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG5cbmxldCByZWMgcHV0X250aCA9IChuOiBpbnQsIHg6ICd4LCB4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBmYWlsd2l0aChcIm91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW18sIC4uLnRsXSkgPT4gW3gsIC4uLnRsXVxuICB8IChfLCBbaGQsIC4uLnRsXSkgPT5cbiAgICBsZXQgdGwgPSBwdXRfbnRoKG4gLSAxLCB4LCB0bCk7XG4gICAgW2hkLCAuLi50bF07XG4gIH07XG5cbmxldCByZWMgbWFwX250aCA9IChuOiBpbnQsIGY6ICdhID0+ICdhLCB4czogbGlzdCgnYSkpOiBsaXN0KCdhKSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBmYWlsd2l0aChcIm91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW2hkLCAuLi50bF0pID0+IFtmKGhkKSwgLi4udGxdXG4gIHwgKF8sIFtoZCwgLi4udGxdKSA9PiBbaGQsIC4uLm1hcF9udGgobiAtIDEsIGYsIHRsKV1cbiAgfTtcblxubGV0IHJlYyBzcGxpdF9sYXN0X29wdCA9ICh4czogbGlzdCgneCkpOiBvcHRpb24oKGxpc3QoJ3gpLCAneCkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3hdID0+IFNvbWUoKFtdLCB4KSlcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgc3BsaXRfbGFzdF9vcHQoeHMpXG4gICAgfD4gT3B0aW9uLm1hcCgoKGxlYWRpbmcsIGxhc3QpKSA9PiAoW3gsIC4uLmxlYWRpbmddLCBsYXN0KSlcbiAgfTtcbi8vIGxldCBsYXN0X29wdCA9IHhzID0+IHhzIHw+IHNwbGl0X2xhc3Rfb3B0IHw+IE9wdGlvbi5tYXAoc25kKTtcblxubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCAneCkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9sYXN0XCIpKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xubGV0IGxlYWRpbmcgPSB4cyA9PiBmc3Qoc3BsaXRfbGFzdCh4cykpO1xubGV0IGxhc3QgPSB4cyA9PiBzbmQoc3BsaXRfbGFzdCh4cykpO1xubGV0IGxhc3Rfb3B0ID0geHMgPT4ge1xuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGgoeHMpO1xuICBpZiAobGVuZ3RoID09IDApIHtcbiAgICBOb25lO1xuICB9IGVsc2Uge1xuICAgIFNvbWUoTGlzdC5udGgoeHMsIGxlbmd0aCAtIDEpKTtcbiAgfTtcbn07XG5cbmxldCBzcGxpdF9maXJzdF9vcHQgPSAoeHM6IGxpc3QoJ3gpKTogb3B0aW9uKCgneCwgbGlzdCgneCkpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmaXJzdCwgLi4udHJhaWxpbmddID0+IFNvbWUoKGZpcnN0LCB0cmFpbGluZykpXG4gIH07XG5sZXQgc3BsaXRfZmlyc3QgPSB4cyA9PlxuICBzcGxpdF9maXJzdF9vcHQoeHMpXG4gIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9maXJzdFwiKSk7XG5cbmxldCByZWMgZm9sZF9sZWZ0X21hcCA9XG4gICAgICAgIChmOiAoJ2FjYywgJ3gpID0+ICgnYWNjLCAneSksIHN0YXJ0OiAnYWNjLCB4czogbGlzdCgneCkpXG4gICAgICAgIDogKCdhY2MsIGxpc3QoJ3kpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gKHN0YXJ0LCBbXSlcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgbGV0IChuZXdfYWNjLCB5KSA9IGYoc3RhcnQsIHgpO1xuICAgIGxldCAoZmluYWwsIHlzKSA9IGZvbGRfbGVmdF9tYXAoZiwgbmV3X2FjYywgeHMpO1xuICAgIChmaW5hbCwgW3ksIC4uLnlzXSk7XG4gIH07XG5cbmxldCByZWMgdGFrZV93aGlsZSA9IChwOiAneCA9PiBib29sLCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIGxpc3QoJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gKFtdLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIGlmIChwKGhkKSkge1xuICAgICAgbGV0ICh0YWtlbiwgcmVzdCkgPSB0YWtlX3doaWxlKHAsIHRsKTtcbiAgICAgIChbaGQsIC4uLnRha2VuXSwgcmVzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIChbXSwgeHMpO1xuICAgIH1cbiAgfTtcblxubGV0IHByb2R1Y3QgPSAoeHMsIHlzKSA9PlxuICB4cyB8PiBMaXN0Lm1hcCh4ID0+IHlzIHw+IExpc3QubWFwKHkgPT4gKHgsIHkpKSkgfD4gTGlzdC5mbGF0dGVuO1xuXG5sZXQgcmVjIG9yZGVyZWRfcGFpcnMgPSAoeHM6IGxpc3QoJ3gpKTogbGlzdCgoJ3gsICd4KSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW2hkLCAuLi50bF0gPT4gTGlzdC5tYXAoeCA9PiAoaGQsIHgpLCB0bCkgQCBvcmRlcmVkX3BhaXJzKHRsKVxuICB9O1xuXG5sZXQgcmVjIG5laWdoYm9ycyA9ICh4czogbGlzdCgneCkpOiBsaXN0KCgneCwgJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW11cbiAgfCBbX10gPT4gW11cbiAgfCBbeDEsIHgyLCAuLi54c10gPT4gWyh4MSwgeDIpLCAuLi5uZWlnaGJvcnMoW3gyLCAuLi54c10pXVxuICB9O1xuXG5tb2R1bGUgU3ludGF4ID0ge1xuICBsZXQgKGxldCspID0gKHhzLCBmKSA9PiBMaXN0Lm1hcChmLCB4cyk7XG4gIGxldCAoYW5kKykgPSBwcm9kdWN0O1xuICBsZXQgKCBsZXQqICkgPSAoeHMsIGYpID0+IExpc3QuY29uY2F0X21hcChmLCB4cyk7XG59O1xuXG5sZXQgbWFwX2FsdDogKCdhID0+ICdjLCAnYiA9PiAnYywgbGlzdCgnYSksIGxpc3QoJ2IpKSA9PiBsaXN0KCdjKSA9XG4gIChmeCwgZnksIHhzLCB5cykgPT4ge1xuICAgIGlmIChMaXN0Lmxlbmd0aCh4cykgIT0gTGlzdC5sZW5ndGgoeXMpICsgMSkge1xuICAgICAgcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLm1hcF9hbHRcIikpO1xuICAgIH07XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKGFjYywgeCwgeSkgPT4gYWNjIEAgW2Z5KHkpLCBmeCh4KV0sXG4gICAgICBbZngoTGlzdC5oZCh4cykpXSxcbiAgICAgIExpc3QudGwoeHMpLFxuICAgICAgeXMsXG4gICAgKTtcbiAgfTtcblxubGV0IGludGVybGVhdmUgPSAoeHMsIHlzKSA9PiBtYXBfYWx0KHggPT4geCwgeSA9PiB5LCB4cywgeXMpO1xuXG5sZXQgcF9pbmRpY2VzID0gKHA6ICdhID0+IGJvb2wsIHhzOiBsaXN0KCdhKSk6IGxpc3QoaW50KSA9PiB7XG4gIGxldCAoXywgaWR4cykgPVxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKChuLCBpZHhzKSwgeCkgPT4gKG4gKyAxLCBpZHhzIEAgKHAoeCkgPyBbbl0gOiBbXSkpLFxuICAgICAgKDAsIFtdKSxcbiAgICAgIHhzLFxuICAgICk7XG4gIGlkeHM7XG59O1xuXG5sZXQgc3BsaXRzID0gKHhzOiBsaXN0KCd4KSBhcyAneHMpOiBsaXN0KCgneHMsICd4cykpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChzcGxpdDogKCd4cywgJ3hzKSk6IGxpc3QoKCd4cywgJ3hzKSkgPT5cbiAgICBzd2l0Y2ggKHNwbGl0KSB7XG4gICAgfCAoXywgW10pID0+IFtzcGxpdF1cbiAgICB8IChsLCBbaGQsIC4uLnRsXSkgPT4gW3NwbGl0LCAuLi5nbygobCBAIFtoZF0sIHRsKSldXG4gICAgfTtcbiAgZ28oKFtdLCB4cykpO1xufTtcblxubGV0IGVsZW1fc3BsaXRzID0gKHhzOiBsaXN0KCd4KSBhcyAneHMpOiBsaXN0KCgneHMsICd4LCAneHMpKSA9PiB7XG4gIGxldCByZWMgZ28gPSAoc3BsaXQ6ICgneHMsICd4LCAneHMpKTogbGlzdCgoJ3hzLCAneCwgJ3hzKSkgPT5cbiAgICBzd2l0Y2ggKHNwbGl0KSB7XG4gICAgfCAoXywgXywgW10pID0+IFtzcGxpdF1cbiAgICB8IChsLCB4LCBbaGQsIC4uLnRsXSkgPT4gW3NwbGl0LCAuLi5nbygoW3gsIC4uLmxdLCBoZCwgdGwpKV1cbiAgICB9O1xuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeCwgLi4ueHNdID0+IGdvKChbXSwgeCwgeHMpKVxuICB9O1xufTtcblxubGV0IHJvdGF0ZSA9ICh4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PiB0bCBAIFtoZF1cbiAgfTtcblxubGV0IHNpbmdsZV9lbGVtID0gKHhzOiBsaXN0KCd4KSk6IG9wdGlvbigneCkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbaGQsIC4uLnRsXSA9PiBMaXN0LmZvcl9hbGwoKD09KShoZCksIHRsKSA/IFNvbWUoaGQpIDogTm9uZVxuICB9O1xuXG5sZXQgY291bnRfcHJlZCA9IChmOiAnYSA9PiBib29sLCB4czogbGlzdCgnYSkpOiBpbnQgPT5cbiAgTGlzdC5mb2xkX2xlZnQoKG4sIHgpID0+IGYoeCkgPyBuICsgMSA6IG4sIDAsIHhzKTtcblxubGV0IGZvcl9hbGwyX29wdCA9XG4gICAgKGY6ICgnYSwgJ2IpID0+IGJvb2wsIHhzOiBsaXN0KCdhKSwgeXM6IGxpc3QoJ2IpKTogb3B0aW9uKGJvb2wpID0+XG4gIHN3aXRjaCAoTGlzdC5mb3JfYWxsMihmLCB4cywgeXMpKSB7XG4gIHwgYiA9PiBTb21lKGIpXG4gIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBOb25lXG4gIH07XG5cbmxldCBtYXAyX29wdCA9XG4gICAgKGY6ICgnYSwgJ2IpID0+ICdjLCB4czogbGlzdCgnYSksIHlzOiBsaXN0KCdiKSk6IG9wdGlvbihsaXN0KCdjKSkgPT5cbiAgc3dpdGNoIChMaXN0Lm1hcDIoZiwgeHMsIHlzKSkge1xuICB8IGIgPT4gU29tZShiKVxuICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gTm9uZVxuICB9O1xuXG4vKiByZXBlYXQgYW4gZWxlbWVudCBuIHRpbWVzICovXG5sZXQgcmVwbGljYXRlID0gKG46IGludCwgZTogJ2EpOiBsaXN0KCdhKSA9PiB7XG4gIC8qIGFkZCBjIGFkZGl0aW9uYWwgY29waWVzIG9mIGUgdG8geHMgKi9cbiAgbGV0IHJlYyBmID0gKGMsIHhzKSA9PlxuICAgIGlmIChjID4gMCkge1xuICAgICAgZihjIC0gMSwgW2UsIC4uLnhzXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHhzO1xuICAgIH07XG4gIGYobiwgW10pO1xufTtcblxuLyoqXG4gKiBaaXBzIHRvZ2V0aGVyIHR3byBsaXN0cywgcmV0dXJuaW5nIE5vbmUgaWYgZGlmZmVyZW50IGxlbmd0aHNcbiAqL1xubGV0IHJlYyBvcHRfemlwID0gKHhzOiBsaXN0KCd4KSwgeXM6IGxpc3QoJ3kpKTogb3B0aW9uKGxpc3QoKCd4LCAneSkpKSA9PlxuICBzd2l0Y2ggKHhzLCB5cykge1xuICB8IChbXSwgW18sIC4uLl9dKVxuICB8IChbXywgLi4uX10sIFtdKSA9PiBOb25lXG4gIHwgKFtdLCBbXSkgPT4gU29tZShbXSlcbiAgfCAoW3gsIC4uLnhzXSwgW3ksIC4uLnlzXSkgPT5cbiAgICBvcHRfemlwKHhzLCB5cykgfD4gT3B0aW9uLm1hcCh4eXMgPT4gWyh4LCB5KSwgLi4ueHlzXSlcbiAgfTtcblxubGV0IHJlYyB6aXBfZGVmYXVsdHMgPVxuICAgICAgICAoeHM6IGxpc3QoJ2EpLCB5czogbGlzdCgnYiksIGRlZmF1bHRfeDogJ2EsIGRlZmF1bHRfeTogJ2IpXG4gICAgICAgIDogbGlzdCgoJ2EsICdiKSkgPT5cbiAgc3dpdGNoICh4cywgeXMpIHtcbiAgfCAoW10sIFtdKSA9PiBbXVxuICB8IChbeCwgLi4ueHNdLCBbeSwgLi4ueXNdKSA9PiBbXG4gICAgICAoeCwgeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB8IChbXSwgW3ksIC4uLnlzXSkgPT4gW1xuICAgICAgKGRlZmF1bHRfeCwgeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB8IChbeCwgLi4ueHNdLCBbXSkgPT4gW1xuICAgICAgKHgsIGRlZmF1bHRfeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB9O1xuXG5sZXQgcmVjIHVwZGF0ZV9udGggPSAobiwgeHMsIGYpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IFtdXG4gIHwgKDAsIFt4LCAuLi54c10pID0+IFtmKHgpLCAuLi54c11cbiAgfCAobiwgW3gsIC4uLnhzXSkgPT4gW3gsIC4uLnVwZGF0ZV9udGgobiAtIDEsIHhzLCBmKV1cbiAgfTtcblxubGV0IHJlYyBkaXNqb2ludF9wYWlycyA9ICh4czogbGlzdCgneCkpOiBsaXN0KCgneCwgJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW11cbiAgfCBbX10gPT4gW11cbiAgfCBbeDEsIHgyLCAuLi54c10gPT4gWyh4MSwgeDIpLCAuLi5kaXNqb2ludF9wYWlycyh4cyldXG4gIH07XG5cbmxldCBmaW5kaV9vcHQ6ICgneCA9PiBib29sLCBsaXN0KCd4KSkgPT4gb3B0aW9uKChpbnQsICd4KSkgPVxuICAoZiwgeHMpID0+IHtcbiAgICBMaXN0Lm1hcGkoKGksIHgpID0+IChpLCB4KSwgeHMpXG4gICAgfD4gTGlzdC5maW5kX21hcCgoKF8sIHgpIGFzIHBhaXIpID0+XG4gICAgICAgICBpZiAoZih4KSkge1xuICAgICAgICAgICBTb21lKHBhaXIpO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgTm9uZTtcbiAgICAgICAgIH1cbiAgICAgICApO1xuICB9O1xuXG5sZXQgaW5pdF9mb2xkOiAoaW50LCAnYiwgKGludCwgJ2IpID0+ICgnYiwgJ2EpKSA9PiAoJ2IsIGxpc3QoJ2EpKSA9XG4gIChuLCBiLCBmKSA9PiB7XG4gICAgbGV0IHJhbmdlID0gTGlzdC5pbml0KG4sIG4gPT4gbik7XG4gICAgbGV0IChhY2MsIHJldl94cykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICgoYWNjLCB4cyksIG4pID0+IHtcbiAgICAgICAgICBsZXQgKGFjYycsIGVsdCkgPSBmKG4sIGFjYyk7XG4gICAgICAgICAgKGFjYycsIFtlbHQsIC4uLnhzXSk7XG4gICAgICAgIH0sXG4gICAgICAgIChiLCBbXSksXG4gICAgICAgIHJhbmdlLFxuICAgICAgKTtcbiAgICAoYWNjLCBMaXN0LnJldihyZXZfeHMpKTtcbiAgfTtcblxubGV0IGFzc29jX2VyciA9ICh4LCB4cywgZXJyOiBzdHJpbmcpID0+XG4gIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoeCwgeHMpKSB7XG4gIHwgTm9uZSA9PiBmYWlsd2l0aChlcnIpXG4gIHwgU29tZSh5KSA9PiB5XG4gIH07XG5cbmxldCB1cGRhdGVfYXNzb2MgPSAoKGssIHYpKSA9PlxuICBMaXN0Lm1hcCgoKGsnLCB2JykpID0+IGsgPT0gaycgPyAoaywgdikgOiAoaycsIHYnKSk7XG5cbi8qIEdpdmUgYSBsaXN0IG9mIG9wdGlvbmFsICdhLCBzcGxpdCB0aGVcbiAqIGxpc3QgdXAgdXNpbmcgdGhlIE5vbmVzIGFzIGRpdmlkZXJzICovXG5sZXQgc3BsaXRfYXRfbm9uZXMgPSAoeHM6IGxpc3Qob3B0aW9uKCdhKSkpOiBsaXN0KGxpc3QoJ2EpKSA9PiB7XG4gIGxldCByZWMgZ28gPSAoeHMsIGFjYykgPT5cbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiBhY2NcbiAgICB8IFtOb25lLCAuLi54c10gPT4gZ28oeHMsIFtbXSwgLi4uYWNjXSlcbiAgICB8IFtTb21lKHgpLCAuLi54c10gPT5cbiAgICAgIHN3aXRjaCAoYWNjKSB7XG4gICAgICB8IFthY2MsIC4uLmFjY3NdID0+IGdvKHhzLCBbW3gsIC4uLmFjY10sIC4uLmFjY3NdKVxuICAgICAgfCBbXSA9PiBnbyh4cywgW1t4XV0pXG4gICAgICB9XG4gICAgfTtcbiAgZ28oeHMsIFtdKSB8PiBMaXN0Lm1hcChMaXN0LnJldikgfD4gTGlzdC5yZXY7XG59O1xuXG4vKiBHaXZlIGEgbGlzdCBvZiBsaXN0cywgcmV0dXJuIGEgbGlzdCBvZiBwYWlycyBvZlxuICogdGhlIGZpcnN0IGFuZCBsYXN0IGVsZW1lbnQgb2YgZWFjaCBsaXN0LiAqL1xubGV0IGZpcnN0X2FuZF9sYXN0ID0gKHhzczogbGlzdChsaXN0KCdhKSkpOiBsaXN0KCgnYSwgJ2EpKSA9PlxuICB4c3NcbiAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgIGZ1blxuICAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgIHwgW3hdID0+IFNvbWUoKHgsIHgpKVxuICAgICAgIHwgW3gsIC4uLnhzXSA9PiBTb21lKCh4LCBsYXN0KHhzKSkpLFxuICAgICApO1xuXG5sZXQgcmVjIHJldl9jb25jYXQ6IChsaXN0KCdhKSwgbGlzdCgnYSkpID0+IGxpc3QoJ2EpID1cbiAgKGxzLCBycykgPT4ge1xuICAgIHN3aXRjaCAobHMpIHtcbiAgICB8IFtdID0+IHJzXG4gICAgfCBbaGQsIC4uLnRsXSA9PiByZXZfY29uY2F0KHRsLCBbaGQsIC4uLnJzXSlcbiAgICB9O1xuICB9O1xuXG5sZXQgcmVjIG1hcDMgPSAoZiwgeHMsIHlzLCB6cykgPT5cbiAgc3dpdGNoICh4cywgeXMsIHpzKSB7XG4gIHwgKFtdLCBbXSwgW10pID0+IFtdXG4gIHwgKFt4LCAuLi54c10sIFt5LCAuLi55c10sIFt6LCAuLi56c10pID0+IFtcbiAgICAgIGYoeCwgeSwgeiksXG4gICAgICAuLi5tYXAzKGYsIHhzLCB5cywgenMpLFxuICAgIF1cbiAgfCBfID0+IGZhaWx3aXRoKFwiTGlzdHMgYXJlIG9mIHVuZXF1YWwgbGVuZ3RoXCIpXG4gIH07XG5cbmxldCByZWMgdW56aXAgPSAobHN0OiBsaXN0KCgnYSwgJ2IpKSk6IChsaXN0KCdhKSwgbGlzdCgnYikpID0+IHtcbiAgc3dpdGNoIChsc3QpIHtcbiAgfCBbXSA9PiAoW10sIFtdKVxuICB8IFsoYSwgYiksIC4uLnRhaWxdID0+XG4gICAgbGV0IChfYXMsIGJzKSA9IHVuemlwKHRhaWwpO1xuICAgIChbYSwgLi4uX2FzXSwgW2IsIC4uLmJzXSk7XG4gIH07XG59O1xuXG5sZXQgY3Jvc3MgPSAoeHMsIHlzKSA9PlxuICBMaXN0LmNvbmNhdChMaXN0Lm1hcCh4ID0+IExpc3QubWFwKHkgPT4gKHgsIHkpLCB5cyksIHhzKSk7XG5cbmxldCByZWMgaW50ZXJzcGVyc2UgPSAoc2VwLCB4cykgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW3hdID0+IFt4XVxuICB8IFt4LCAuLi54c10gPT4gW3gsIHNlcCwgLi4uaW50ZXJzcGVyc2Uoc2VwLCB4cyldXG4gIH07XG5cbmxldCByZWMgZmxhdF9pbnRlcnNwZXJzZSA9IChzZXAsIHhzcykgPT5cbiAgc3dpdGNoICh4c3MpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFt4c10gPT4geHNcbiAgfCBbeHMsIC4uLnhzc10gPT4geHMgQCBbc2VwLCAuLi5mbGF0X2ludGVyc3BlcnNlKHNlcCwgeHNzKV1cbiAgfTtcblxubGV0IHJlYyBtYXBfbGFzdF9vbmx5ID0gKGYsIHhzKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeF0gPT4gW2YoeCldXG4gIHwgW3gsIC4uLnhzXSA9PiBbeCwgLi4ubWFwX2xhc3Rfb25seShmLCB4cyldXG4gIH07XG5cbmxldCByZWMgc3BsaXRfbGFzdCA9ICh4czogbGlzdCgneCkpOiAobGlzdCgneCksICd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gZmFpbHdpdGgoXCJMaXN0VXRpbC5zcGxpdF9sYXN0XCIpXG4gIHwgW3hdID0+IChbXSwgeClcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgbGV0IChwcmVmaXgsIGxhc3QpID0gc3BsaXRfbGFzdCh4cyk7XG4gICAgKFt4LCAuLi5wcmVmaXhdLCBsYXN0KTtcbiAgfTtcblxubGV0IG1pbmltdW0gPSAoZjogJ2EgPT4gaW50LCB4czogbGlzdCgnYSkpOiBvcHRpb24oJ2EpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3gsIC4uLnhzXSA9PlxuICAgIGxldCByZWMgbG9vcCA9IChiZXN0OiAnYSwgYmVzdF9mOiBpbnQsIHhzOiBsaXN0KCdhKSk6IG9wdGlvbignYSkgPT5cbiAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgIHwgW10gPT4gU29tZShiZXN0KVxuICAgICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICAgIGxldCBmX3ggPSBmKHgpO1xuICAgICAgICBpZiAoZl94IDwgYmVzdF9mKSB7XG4gICAgICAgICAgbG9vcCh4LCBmX3gsIHhzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb29wKGJlc3QsIGJlc3RfZiwgeHMpO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICBsb29wKHgsIGYoeCksIHhzKTtcbiAgfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgTGVmdFxuICB8IFJpZ2h0O1xuXG5sZXQgdG9nZ2xlID1cbiAgZnVuXG4gIHwgTGVmdCA9PiBSaWdodFxuICB8IFJpZ2h0ID0+IExlZnQ7XG5cbmxldCBzaWduID1cbiAgZnVuXG4gIHwgTGVmdCA9PiAoLTEpXG4gIHwgUmlnaHQgPT4gMTtcblxubGV0IGNob29zZSA9IChkLCAobCwgcikpID0+XG4gIHN3aXRjaCAoZCkge1xuICB8IExlZnQgPT4gbFxuICB8IFJpZ2h0ID0+IHJcbiAgfTtcbiIsIm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8vIGhlYWRzIG9mIHByZWZpeCBhbmQgc3VmZml4IG5laWdoYm9yIHRoZSBzdWJqZWN0XG4vLyBOT1RFOiBERVBSRUNBVEVEXG50eXBlIHQoJ3gpID0gKGxpc3QoJ3gpLCBsaXN0KCd4KSk7XG5cbmxldCByZWMgbWtfb3B0ID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogb3B0aW9uKHQoJ3gpKSA9PlxuICBpZiAobiA8IDApIHtcbiAgICBOb25lO1xuICB9IGVsc2UgaWYgKG4gPT0gMCkge1xuICAgIFNvbWUoKFtdLCB4cykpO1xuICB9IGVsc2Uge1xuICAgIHN3aXRjaCAoeHMpIHtcbiAgICB8IFtdID0+IE5vbmVcbiAgICB8IFt4LCAuLi54c10gPT5cbiAgICAgIGxldCsgKHByZWZpeCwgc3VmZml4KSA9IG1rX29wdChuIC0gMSwgeHMpO1xuICAgICAgKHByZWZpeCBAIFt4XSwgc3VmZml4KTtcbiAgICB9O1xuICB9O1xubGV0IG1rID0gKG4sIHhzKSA9PlxuICBta19vcHQobiwgeHMpXG4gIHw+IE9wdFV0aWwuZ2V0KCgpID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0RnJhbWUubWtcIikpKTtcblxubGV0IHJlYyBmaW5kX21rID1cbiAgICAgICAgKHA6ICd4ID0+IG9wdGlvbigneSksIHhzOiBsaXN0KCd4KSk6IG9wdGlvbigoJ3ksIHQoJ3gpKSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgc3dpdGNoIChwKHgpKSB7XG4gICAgfCBTb21lKHkpID0+IFNvbWUoKHksIChbXSwgeHMpKSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCsgKHksIChwcmVmaXgsIHN1ZmZpeCkpID0gZmluZF9tayhwLCB4cyk7XG4gICAgICAoeSwgKHByZWZpeCBAIFt4XSwgc3VmZml4KSk7XG4gICAgfVxuICB9O1xuXG5sZXQgb3JpZW50ID1cbiAgICAoZDogRGlyZWN0aW9uLnQsIChwcmVmaXgsIHN1ZmZpeCk6IHQoJ3gpKTogKGxpc3QoJ3gpLCBsaXN0KCd4KSkgPT5cbiAgZCA9PSBMZWZ0ID8gKHByZWZpeCwgc3VmZml4KSA6IChzdWZmaXgsIHByZWZpeCk7XG5sZXQgdW5vcmllbnQgPSBvcmllbnQ7XG5cbmxldCByZWMgc3BsaXRfbnRoID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogKCd4LCB0KCd4KSkgPT5cbiAgc3dpdGNoIChuLCB4cykge1xuICB8IChfLCBbXSkgPT4gZmFpbHdpdGgoXCJsaXN0IGluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW3gsIC4uLnhzXSkgPT4gKHgsIChbXSwgeHMpKVxuICB8IChfLCBbeCwgLi4ueHNdKSA9PlxuICAgIGxldCAoc3ViaiwgKHByZWZpeCwgc3VmZml4KSkgPSBzcGxpdF9udGgobiAtIDEsIHhzKTtcbiAgICAoc3ViaiwgKHByZWZpeCBAIFt4XSwgc3VmZml4KSk7XG4gIH07XG5cbmxldCBzcGxpdF9zdWJsaXN0ID0gKChpOiBpbnQsIGo6IGludCksIHhzOiBsaXN0KCd4KSk6IChsaXN0KCd4KSwgdCgneCkpID0+IHtcbiAgbGV0IChwcmVmaXgsIHN1ZmZpeCkgPSBtayhqLCB4cyk7XG4gIGxldCAocHJlZml4LCBzdWJsaXN0KSA9IG1rKGksIExpc3QucmV2KHByZWZpeCkpO1xuICAoc3VibGlzdCwgKHByZWZpeCwgc3VmZml4KSk7XG59O1xuXG5sZXQgdG9fbGlzdCA9ICh+c3ViamVjdDogbGlzdCgneCk9W10sIChwcmVmaXgsIHN1ZmZpeCk6IHQoJ3gpKSA9PlxuICBMaXN0LmNvbmNhdChbTGlzdC5yZXYocHJlZml4KSwgc3ViamVjdCwgc3VmZml4XSk7XG5cbmxldCBhcHBlbmQgPSAoKHByZWZpeCwgc3VmZml4KTogdCgneCksIChwcmVmaXgnLCBzdWZmaXgnKTogdCgneCkpID0+IChcbiAgcHJlZml4IEAgcHJlZml4JyxcbiAgc3VmZml4IEAgc3VmZml4Jyxcbik7XG4iLCJsZXQgbnVtX2RpZ2l0cyA9IG4gPT4gU3RyaW5nLmxlbmd0aChzdHJpbmdfb2ZfaW50KG4pKTtcblxubGV0IG1vZHVsbyA9ICh4LCB5KSA9PiB7XG4gIGxldCByZXN1bHQgPSB4IG1vZCB5O1xuICByZXN1bHQgPj0gMCA/IHJlc3VsdCA6IHJlc3VsdCArIHk7XG59O1xuXG5sZXQgaXBvdyA9IChiYXNlOiBpbnQsIGV4cG9uZW50OiBpbnQpOiBpbnQgPT4ge1xuICBsZXQgcmVjIGlwb3dfaXRlciA9IChiOiBpbnQsIGU6IGludCwgcjogaW50KTogaW50ID0+XG4gICAgaWYgKGUgPT09IDApIHtcbiAgICAgIHI7XG4gICAgfSBlbHNlIGlmIChlIGxhbmQgMSAhPT0gMCkge1xuICAgICAgaXBvd19pdGVyKGIgKiBiLCBlIGxzciAxLCByICogYik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlwb3dfaXRlcihiICogYiwgZSBsc3IgMSwgcik7XG4gICAgfTtcbiAgaXBvd19pdGVyKGJhc2UsIGV4cG9uZW50LCAxKTtcbn07XG4iLCJpbmNsdWRlIFB0bWFwO1xub3BlbiBTZXhwbGliLlN0ZDtcbm1vZHVsZSBTZXhwID0gU2V4cGxpYi5TZXhwO1xuXG5bQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxudHlwZSBiaW5kaW5nKCd2KSA9IChpbnQsICd2KTtcblxubGV0IHNpbmdsZXRvbiA9IChrLCB2KSA9PiBQdG1hcC5hZGQoaywgdiwgUHRtYXAuZW1wdHkpO1xuXG5sZXQgZGlzal91bmlvbiA9IChtOiB0KCdhKSwgbSc6IHQoJ2EpKTogdCgnYSkgPT5cbiAgdW5pb24oXG4gICAgKF8sIF8sIF8pID0+XG4gICAgICByYWlzZShcbiAgICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgICBcIkludE1hcC5kaXNqX3VuaW9uIGV4cGVjdHMgaW5wdXQgbWFwcyB0byBoYXZlIGRpc2pvaW50IGtleSBzZXRzXCIsXG4gICAgICAgICksXG4gICAgICApLFxuICAgIG0sXG4gICAgbScsXG4gICk7XG5cbmxldCBwcCA9IChwcF92LCBmLCBtYXApID0+XG4gIGl0ZXIoKGssIHYpID0+IEZvcm1hdC5mcHJpbnRmKGYsIFwiJWQgLT4gJWFAXFxuXCIsIGssIHBwX3YsIHYpLCBtYXApO1xuXG5sZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdjogJ3YgPT4gU2V4cC50LCBtYXA6IHQoJ3YpKTogU2V4cC50ID0+XG4gIG1hcCB8PiBiaW5kaW5ncyB8PiBzZXhwX29mX2xpc3Qoc2V4cF9vZl9iaW5kaW5nKHNleHBfb2ZfdikpO1xubGV0IHRfb2Zfc2V4cCA9ICh2X29mX3NleHA6IFNleHAudCA9PiAndiwgc2V4cDogU2V4cC50KTogdCgndikgPT5cbiAgc2V4cCB8PiBsaXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpIHw+IExpc3QudG9fc2VxIHw+IG9mX3NlcTtcblxubGV0IHlvanNvbl9vZl90ID1cbiAgICAoeW9qc29uX29mX3Y6ICd2ID0+IFlvanNvbi5TYWZlLnQsIG1hcDogdCgndikpOiBZb2pzb24uU2FmZS50ID0+XG4gIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xubGV0IHRfb2ZfeW9qc29uID1cbiAgICAodl9vZl95b2pzb246IFlvanNvbi5TYWZlLnQgPT4gJ3YsIHlvanNvbjogWW9qc29uLlNhZmUudCk6IHQoJ3YpID0+XG4gIHlvanNvblxuICB8PiBsaXN0X29mX3lvanNvbihiaW5kaW5nX29mX3lvanNvbih2X29mX3lvanNvbikpXG4gIHw+IExpc3QudG9fc2VxXG4gIHw+IG9mX3NlcTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnbCwgJ3IpID1cbiAgfCBMKCdsKVxuICB8IFIoJ3IpO1xuXG5sZXQgbCA9IHggPT4gTCh4KTtcbmxldCByID0geCA9PiBSKHgpO1xuXG5sZXQgaXNfTCA9XG4gIGZ1blxuICB8IEwoXykgPT4gdHJ1ZVxuICB8IFIoXykgPT4gZmFsc2U7XG5sZXQgaXNfUiA9IGUgPT4gIWlzX0woZSk7XG5cbmxldCBnZXRfTCA9XG4gIGZ1blxuICB8IEwobCkgPT4gU29tZShsKVxuICB8IFIoXykgPT4gTm9uZTtcbmxldCBnZXRfUiA9XG4gIGZ1blxuICB8IFIocikgPT4gU29tZShyKVxuICB8IEwoXykgPT4gTm9uZTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vIGludmFyaWFudDogTGlzdC5sZW5ndGgoYXMpID09IExpc3QubGVuZ3RoKGJzKSArIDFcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnYSwgJ2IpID0gKGxpc3QoJ2EpLCBsaXN0KCdiKSk7XG5cbmxldCBtayA9IChhc186IGxpc3QoJ2EpLCBiczogbGlzdCgnYikpOiB0KCdhLCAnYikgPT4ge1xuICBhc3NlcnQoTGlzdC5sZW5ndGgoYXNfKSA9PSBMaXN0Lmxlbmd0aChicykgKyAxKTtcbiAgKGFzXywgYnMpO1xufTtcblxubGV0IGZpcnN0X2EgPSAoKGFzXywgXyk6IHQoJ2EsIF8pKTogJ2EgPT4ge1xuICBhc3NlcnQoTGlzdC5sZW5ndGgoYXNfKSA+IDApO1xuICBMaXN0LmhkKGFzXyk7XG59O1xubGV0IGxhc3RfYSA9ICgoYXNfLCBfKTogdCgnYSwgXykpOiAnYSA9PiB7XG4gIGFzc2VydChMaXN0Lmxlbmd0aChhc18pID4gMCk7XG4gIExpc3RVdGlsLmxhc3QoYXNfKTtcbn07XG5cbmxldCByZXYgPSAocmV2X2EsIHJldl9iLCAoYXNfLCBicyk6IHQoJ2EsICdiKSk6IHQoJ2EsICdiKSA9PiAoXG4gIExpc3QucmV2X21hcChyZXZfYSwgYXNfKSxcbiAgTGlzdC5yZXZfbWFwKHJldl9iLCBicyksXG4pO1xuXG5sZXQgY29ucyA9IChhOiAnYSwgYjogJ2IsIChhc18sIGJzKTogdCgnYSwgJ2IpKTogdCgnYSwgJ2IpID0+IChcbiAgW2EsIC4uLmFzX10sXG4gIFtiLCAuLi5ic10sXG4pO1xubGV0IHNub2MgPSAoKGFzXywgYnMpOiB0KCdhLCAnYiksIGI6ICdiLCBhOiAnYSk6IHQoJ2EsICdiKSA9PiAoXG4gIGFzXyBAIFthXSxcbiAgYnMgQCBbYl0sXG4pO1xuXG5sZXQgc2luZ2xldG9uID0gKGE6ICdhKTogdCgnYSwgXykgPT4gKFthXSwgW10pO1xuXG5sZXQgZ2V0X2FzOiB0KCdhLCBfKSA9PiBsaXN0KCdhKSA9IGZzdDtcbmxldCBnZXRfYnM6IHQoXywgJ2IpID0+IGxpc3QoJ2IpID0gc25kO1xuXG5sZXQgaGQgPSAoKGFzXywgXyk6IHQoJ2EsICdiKSk6ICdhID0+IExpc3QuaGQoYXNfKTtcblxubGV0IHJlYyBhYmFfdHJpcGxlcyA9IChhYmE6IHQoJ2EsICdiKSk6IGxpc3QoKCdhLCAnYiwgJ2EpKSA9PlxuICBzd2l0Y2ggKGFiYSkge1xuICB8IChbYTEsIGEyLCAuLi5hc19dLCBbYiwgLi4uYnNdKSA9PiBbXG4gICAgICAoYTEsIGIsIGEyKSxcbiAgICAgIC4uLmFiYV90cmlwbGVzKChbYTIsIC4uLmFzX10sIGJzKSksXG4gICAgXVxuICB8IF8gPT4gW11cbiAgfTtcbmxldCByZWMgYmFiX3RyaXBsZXMnID1cbiAgICAgICAgKGIxOiBvcHRpb24oJ2IpLCBhYmE6IHQoJ2EsICdiKSlcbiAgICAgICAgOiBsaXN0KChvcHRpb24oJ2IpLCAnYSwgb3B0aW9uKCdiKSkpID0+XG4gIHN3aXRjaCAoYWJhKSB7XG4gIHwgKFthLCAuLi5hc19dLCBbYjIsIC4uLmJzXSkgPT4gW1xuICAgICAgKGIxLCBhLCBTb21lKGIyKSksXG4gICAgICAuLi5iYWJfdHJpcGxlcycoU29tZShiMiksIChhc18sIGJzKSksXG4gICAgXVxuICB8IChbYV0sIFtdKSA9PiBbKGIxLCBhLCBOb25lKV1cbiAgfCBfID0+IFtdXG4gIH07XG5sZXQgYmFiX3RyaXBsZXM6IHQoJ2EsICdiKSA9PiBsaXN0KChvcHRpb24oJ2IpLCAnYSwgb3B0aW9uKCdiKSkpID1cbiAgYWJhID0+IGJhYl90cmlwbGVzJyhOb25lLCBhYmEpO1xuXG5sZXQgbWFwX2EgPSAoZl9hOiAnYSA9PiAnYywgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdjLCAnYikgPT4gKFxuICBMaXN0Lm1hcChmX2EsIGFzXyksXG4gIGJzLFxuKTtcbmxldCBtYXBfYiA9IChmX2I6ICdiID0+ICdjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSk6IHQoJ2EsICdjKSA9PiAoXG4gIGFzXyxcbiAgTGlzdC5tYXAoZl9iLCBicyksXG4pO1xubGV0IG1hcF9hYmFzID1cbiAgICAoZl9hYmE6ICgoJ2EsICdiLCAnYSkpID0+ICdjLCAoYXNfLCBfKSBhcyBhYmE6IHQoJ2EsICdiKSk6IHQoJ2EsICdjKSA9PiAoXG4gIGFzXyxcbiAgTGlzdC5tYXAoZl9hYmEsIGFiYV90cmlwbGVzKGFiYSkpLFxuKTtcbmxldCBtYXBfaGQgPSAoZl9hOiAnYSA9PiAnYSwgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdhLCAnYikgPT4gKFxuICBbYXNfIHw+IExpc3QuaGQgfD4gZl9hLCAuLi5hc18gfD4gTGlzdC50bF0sXG4gIGJzLFxuKTtcblxubGV0IHRyaW0gPSAoKGFzXywgYnMpOiB0KCdhLCAnYikpOiBvcHRpb24oKCdhLCB0KCdiLCAnYSksICdhKSkgPT5cbiAgc3dpdGNoIChicykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbXywgLi4uX10gPT5cbiAgICBsZXQgKGwsIGFzXykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChhc18pO1xuICAgIGxldCAoYXNfLCByKSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoYXNfKTtcbiAgICBTb21lKChsLCBtayhicywgYXNfKSwgcikpO1xuICB9O1xuXG5sZXQgc3BsaXQgPSAoZjogJ2MgPT4gRWl0aGVyLnQoJ2EsICdiKSwgY3M6IGxpc3QoJ2MpKTogdChsaXN0KCdhKSwgJ2IpID0+XG4gIExpc3QuZm9sZF9yaWdodChcbiAgICAoYywgKGFzXywgYnMpKSA9PlxuICAgICAgc3dpdGNoIChmKGMpKSB7XG4gICAgICB8IEwoYSkgPT5cbiAgICAgICAgbGV0IChoZCwgdGwpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoYXNfKTtcbiAgICAgICAgKFtbYSwgLi4uaGRdLCAuLi50bF0sIGJzKTtcbiAgICAgIHwgUihiKSA9PiAoW1tdLCAuLi5hc19dLCBbYiwgLi4uYnNdKVxuICAgICAgfSxcbiAgICBjcyxcbiAgICBtayhbW11dLCBbXSksXG4gICk7XG5cbmxldCBqb2luID0gKGZfYTogJ2EgPT4gJ2MsIGZfYjogJ2IgPT4gJ2MsIGFiYTogdCgnYSwgJ2IpKTogbGlzdCgnYykgPT4ge1xuICBsZXQgKGFzXywgYSkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGdldF9hcyhhYmEpKTtcbiAgbGV0IGJzID0gZ2V0X2JzKGFiYSk7XG4gIExpc3QuZm9sZF9yaWdodDIoXG4gICAgKGEsIGIsIGNzKSA9PiBbZl9hKGEpLCBmX2IoYiksIC4uLmNzXSxcbiAgICBhc18sXG4gICAgYnMsXG4gICAgW2ZfYShhKV0sXG4gICk7XG59O1xuXG5sZXQgZm9sZF9sZWZ0ID1cbiAgICAoZl9hOiAnYSA9PiAnYWNjLCBmX2JhOiAoJ2FjYywgJ2IsICdhKSA9PiAnYWNjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSlcbiAgICA6ICdhY2MgPT4ge1xuICBsZXQgKGEsIGFzXykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChhc18pO1xuICBMaXN0LmZvbGRfbGVmdDIoZl9iYSwgZl9hKGEpLCBicywgYXNfKTtcbn07XG5sZXQgZm9sZF9sZWZ0X21hcCA9XG4gICAgKFxuICAgICAgZl9hOiAnYSA9PiAoJ2FjYywgJ2MpLFxuICAgICAgZl9iYTogKCdhY2MsICdiLCAnYSkgPT4gKCdhY2MsICdkLCAnYyksXG4gICAgICBhYmE6IHQoJ2EsICdiKSxcbiAgICApXG4gICAgOiAoJ2FjYywgdCgnYywgJ2QpKSA9PlxuICBhYmFcbiAgfD4gZm9sZF9sZWZ0KFxuICAgICAgIGEgPT4ge1xuICAgICAgICAgbGV0IChhY2MsIGMpID0gZl9hKGEpO1xuICAgICAgICAgKGFjYywgc2luZ2xldG9uKGMpKTtcbiAgICAgICB9LFxuICAgICAgICgoYWNjLCBtYXBwZWQpLCBiLCBhKSA9PiB7XG4gICAgICAgICBsZXQgKGFjYywgZCwgYykgPSBmX2JhKGFjYywgYiwgYSk7XG4gICAgICAgICAoYWNjLCBzbm9jKG1hcHBlZCwgZCwgYykpO1xuICAgICAgIH0sXG4gICAgICk7XG5cbmxldCBmb2xkX3JpZ2h0ID1cbiAgICAoZl9hYjogKCdhLCAnYiwgJ2MpID0+ICdjLCBmX2E6ICdhID0+ICdjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSkgPT4ge1xuICBsZXQgKGFzXywgYSkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGFzXyk7XG4gIExpc3QuZm9sZF9yaWdodDIoZl9hYiwgYXNfLCBicywgZl9hKGEpKTtcbn07XG4iLCJcbnR5cGUgdCA9IGludFxubGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxubGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG5sZXQgdG9faW50IHggPSB4XG5sZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5cbmxldCBpbnRlcnNlY3QgeCB5ID0geCBsYW5kIHkgPD4gMFxubGV0ICgrKykgeCB5ID0geCBsb3IgeVxuXG5sZXQgZHVtbXkgPSAtMVxubGV0IGluZXhpc3RhbnQgPSAxXG5sZXQgbGV0dGVyID0gMlxubGV0IG5vdF9sZXR0ZXIgPSA0XG5sZXQgbmV3bGluZSA9IDhcbmxldCBsYXN0bmV3bGluZSA9IDE2XG5sZXQgc2VhcmNoX2JvdW5kYXJ5ID0gMzJcblxubGV0IGZyb21fY2hhciA9IGZ1bmN0aW9uXG4gICgqIFNob3VsZCBtYXRjaCBbY3dvcmRdIGRlZmluaXRpb24gKilcbiAgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScgfCAnXycgfCAnXFwxNzAnIHwgJ1xcMTgxJyB8ICdcXDE4NidcbiAgfCAnXFwxOTInLi4nXFwyMTQnIHwgJ1xcMjE2Jy4uJ1xcMjQ2JyB8ICdcXDI0OCcuLidcXDI1NScgLT5cbiAgICBsZXR0ZXJcbiAgfCAnXFxuJyAtPlxuICAgIG5vdF9sZXR0ZXIgKysgbmV3bGluZVxuICB8IF8gLT5cbiAgICBub3RfbGV0dGVyXG4iLCIoKiogVmVyeSBzbWFsbCB0b29saW5nIGZvciBmb3JtYXQgcHJpbnRlcnMuICopXG5cbmluY2x1ZGUgRm9ybWF0XG5cbnR5cGUgJ2EgdCA9IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdFxuXG5sZXQgbGlzdCA9IHBwX3ByaW50X2xpc3RcbmxldCBzdHIgPSBwcF9wcmludF9zdHJpbmdcbmxldCBzZXhwIGZtdCBzIHBwIHggPSBmcHJpbnRmIGZtdCBcIkBbPDM+KCVzQCAlYSlAXVwiIHMgcHAgeFxubGV0IHBhaXIgcHAxIHBwMiBmbXQgKHYxLHYyKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7IHBwMiBmbXQgdjJcbmxldCB0cmlwbGUgcHAxIHBwMiBwcDMgZm10ICh2MSwgdjIsIHYzKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMiBmbXQgdjI7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMyBmbXQgdjNcbmxldCBpbnQgPSBwcF9wcmludF9pbnRcbmxldCBvcHRpbnQgZm10ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpIC0+IGZwcmludGYgZm10IFwiQCAlZFwiIGlcblxubGV0IHF1b3RlIGZtdCBzID0gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIHNcblxubGV0IHBwX29saXN0IHBwX2VsZW0gZm10ID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mz5bQCAlYUAgXUBdXCJcbiAgICAocHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gZnByaW50ZiBmbXQgXCI7QCBcIilcbiAgICAgICBwcF9lbGVtKVxuXG5sZXQgcHBfc3RyX2xpc3QgPSBwcF9vbGlzdCBxdW90ZVxuXG5sZXQgdG9fdG9fc3RyaW5nIHBwIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgcHAgZm10IHg7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIGMgPSBpbnRcbnR5cGUgdCA9IChjICogYykgbGlzdFxuXG5sZXQgcmVjIHVuaW9uIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IGwnXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgKyAxIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjp1bmlvbiByIGwnXG4gICAgZWxzZSBpZiBjMicgKyAxIDwgYzEgdGhlblxuICAgICAgKGMxJywgYzInKTo6dW5pb24gbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgdW5pb24gciAoKG1pbiBjMSBjMScsIGMyJyk6OnInKVxuICAgIGVsc2VcbiAgICAgIHVuaW9uICgobWluIGMxIGMxJywgYzIpOjpyKSByJ1xuXG5sZXQgcmVjIGludGVyIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gW11cbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIGludGVyIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGludGVyIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIChtYXggYzEgYzEnLCBjMik6OmludGVyIHIgbCdcbiAgICBlbHNlXG4gICAgICAobWF4IGMxIGMxJywgYzInKTo6aW50ZXIgbCByJ1xuXG5sZXQgcmVjIGRpZmYgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6ZGlmZiByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBkaWZmIGwgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcicnID0gaWYgYzInIDwgYzIgdGhlbiAoYzInICsgMSwgYzIpIDo6IHIgZWxzZSByIGluXG4gICAgICBpZiBjMSA8IGMxJyB0aGVuXG4gICAgICAgIChjMSwgYzEnIC0gMSk6OmRpZmYgcicnIHInXG4gICAgICBlbHNlXG4gICAgICAgIGRpZmYgcicnIHInXG5cbmxldCBzaW5nbGUgYyA9IFtjLCBjXVxuXG5sZXQgYWRkIGMgbCA9IHVuaW9uIChzaW5nbGUgYykgbFxuXG5sZXQgc2VxIGMgYycgPSBpZiBjIDw9IGMnIHRoZW4gW2MsIGMnXSBlbHNlIFtjJywgY11cblxubGV0IHJlYyBvZmZzZXQgbyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgICAgICAgICAtPiBbXVxuICB8IChjMSwgYzIpIDo6IHIgLT4gKGMxICsgbywgYzIgKyBvKSA6OiBvZmZzZXQgbyByXG5cbmxldCBlbXB0eSA9IFtdXG5cbmxldCByZWMgbWVtIChjIDogaW50KSBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gICAgW10gICAgICAgICAgICAgIC0+IGZhbHNlXG4gIHwgKGMxLCBjMikgOjogcmVtIC0+IGlmIGMgPD0gYzIgdGhlbiBjID49IGMxIGVsc2UgbWVtIGMgcmVtXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcblxubGV0IHJlYyBoYXNoX3JlYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgIC0+IDBcbiAgfCAoaSwgaik6OnIgLT4gaSArIDEzICogaiArIDI1NyAqIGhhc2hfcmVjIHJcbmxldCBoYXNoIGwgPSAoaGFzaF9yZWMgbCkgbGFuZCAweDNGRkZGRkZGXG5cbigqKioqKVxuXG5sZXQgcHJpbnRfb25lIGNoIChjMSwgYzIpID1cbiAgaWYgYzEgPSBjMiB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZFwiIGMxXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYzEgYzJcblxubGV0IHBwID0gRm10Lmxpc3QgcHJpbnRfb25lXG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoeCwgeSk6OnhzIC0+XG4gICAgZiB4IHk7XG4gICAgaXRlciB4cyAgfmZcblxubGV0IG9uZV9jaGFyID0gZnVuY3Rpb25cbiAgfCBbaSwgal0gd2hlbiBpID0gaiAtPiBTb21lIGlcbiAgfCBfIC0+IE5vbmVcblxuXG5tb2R1bGUgQ1NldE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgKiAoaW50ICogaW50KSBsaXN0XG4gICAgbGV0IGNvbXBhcmUgKGksIHUpIChqLCB2KSA9XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaSBqIGluXG4gICAgICBpZiBjIDw+IDBcbiAgICAgIHRoZW4gY1xuICAgICAgZWxzZSBjb21wYXJlIHUgdlxuICBlbmQpXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBMaXN0LmZvbGRfcmlnaHQgZiB0IGluaXRcblxubGV0IGNzaW5nbGUgYyA9IHNpbmdsZSAoQ2hhci5jb2RlIGMpXG5cbmxldCBjYW55ID0gWzAsIDI1NV1cblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIHByZXBlbmQgcyB4IGwgPVxuICBtYXRjaCBzLCBsIHdpdGhcbiAgfCBbXSwgXyAtPiBsXG4gIHwgX3IsIFtdIC0+IFtdXG4gIHwgKF9jLCBjJykgOjogciwgKFtkLCBfZCddLCBfeCcpIDo6IF9yJyB3aGVuIGMnIDwgZCAtPiBwcmVwZW5kIHIgeCBsXG4gIHwgKGMsIGMnKSA6OiByLCAoW2QsIGQnXSwgeCcpIDo6IHInIC0+XG4gICAgaWYgYyA8PSBkIHRoZW4gYmVnaW5cbiAgICAgIGlmIGMnIDwgZCdcbiAgICAgIHRoZW4gKFtkLCBjJ10sIHggQCB4JykgOjogcHJlcGVuZCByIHggKChbYycgKyAxLCBkJ10sIHgnKSA6OiByJylcbiAgICAgIGVsc2UgKFtkLCBkJ10sIHggQCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgYyA+IGQnXG4gICAgICB0aGVuIChbZCwgZCddLCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICAgIGVsc2UgKFtkLCBjIC0gMV0sIHgnKSA6OiBwcmVwZW5kIHMgeCAoKFtjLCBkJ10sIHgnKSA6OiByJylcbiAgICBlbmRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcGljayA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJSZV9jc2V0LnBpY2tcIlxuICB8ICh4LCBfKTo6XyAtPiB4XG4iLCJcbm1vZHVsZSBQbWFyayA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbiAgbGV0IHIgPSByZWYgMFxuICBsZXQgZ2VuICgpID0gaW5jciByIDsgIXJcblxuICBsZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmRcblxuaW5jbHVkZSBQbWFya1xubW9kdWxlIFNldCA9IFNldC5NYWtlKFBtYXJrKVxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBzZW0gPSBbIGBMb25nZXN0IHwgYFNob3J0ZXN0IHwgYEZpcnN0IF1cblxudHlwZSByZXBfa2luZCA9IFsgYEdyZWVkeSB8IGBOb25fZ3JlZWR5IF1cblxudHlwZSBtYXJrID0gaW50XG50eXBlIGlkeCA9IGludFxuXG50eXBlIGV4cHIgPSB7IGlkIDogaW50OyBkZWYgOiBkZWYgfVxuXG5hbmQgZGVmID1cbiAgICBDc3Qgb2YgQ3NldC50XG4gIHwgQWx0IG9mIGV4cHIgbGlzdFxuICB8IFNlcSBvZiBzZW0gKiBleHByICogZXhwclxuICB8IEVwc1xuICB8IFJlcCBvZiByZXBfa2luZCAqIHNlbSAqIGV4cHJcbiAgfCBNYXJrIG9mIGludFxuICB8IEVyYXNlIG9mIGludCAqIGludFxuICB8IEJlZm9yZSBvZiBDYXRlZ29yeS50XG4gIHwgQWZ0ZXIgb2YgQ2F0ZWdvcnkudFxuICB8IFBtYXJrIG9mIFBtYXJrLnRcblxubGV0IGhhc2hfY29tYmluZSBoIGFjY3UgPSBhY2N1ICogNjU1OTkgKyBoXG5cbm1vZHVsZSBNYXJrcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWFya3MgOiAoaW50ICogaW50KSBsaXN0XG4gICAgOyBwbWFya3MgOiBQbWFyay5TZXQudCB9XG5cbiAgbGV0IGVtcHR5ID0geyBtYXJrcyA9IFtdIDsgcG1hcmtzID0gUG1hcmsuU2V0LmVtcHR5IH1cblxuICBsZXQgcmVjIG1lcmdlX21hcmtzX29mZnNldCBvbGQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIG9sZFxuICAgIHwgKGksIHYpIDo6IHJlbSAtPlxuICAgICAgbGV0IG53JyA9IG1lcmdlX21hcmtzX29mZnNldCAoTGlzdC5yZW1vdmVfYXNzcSBpIG9sZCkgcmVtIGluXG4gICAgICBpZiB2ID0gLTIgdGhlblxuICAgICAgICBudydcbiAgICAgIGVsc2VcbiAgICAgICAgKGksIHYpIDo6IG53J1xuXG4gIGxldCBtZXJnZSBvbGQgbncgPVxuICAgIHsgbWFya3MgPSBtZXJnZV9tYXJrc19vZmZzZXQgb2xkLm1hcmtzIG53Lm1hcmtzXG4gICAgOyBwbWFya3MgPSBQbWFyay5TZXQudW5pb24gb2xkLnBtYXJrcyBudy5wbWFya3MgfVxuXG4gIGxldCByZWMgaGFzaF9tYXJrc19vZmZzZXQgbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdICAgICAgICAgIC0+IGFjY3VcbiAgICB8IChhLCBpKSA6OiByIC0+IGhhc2hfbWFya3Nfb2Zmc2V0IHIgKGhhc2hfY29tYmluZSBhIChoYXNoX2NvbWJpbmUgaSBhY2N1KSlcblxuICBsZXQgaGFzaCBtIGFjY3UgPVxuICAgIGhhc2hfbWFya3Nfb2Zmc2V0IG0ubWFya3MgKGhhc2hfY29tYmluZSAoSGFzaHRibC5oYXNoIG0ucG1hcmtzKSBhY2N1KVxuXG4gIGxldCByZWMgbWFya3Nfc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICAgIHwgKGEsIC0xKSA6OiByZW0gLT5cbiAgICAgIChhLCBpZHgpIDo6IG1hcmtzX3NldF9pZHggaWR4IHJlbVxuICAgIHwgbWFya3MgLT5cbiAgICAgIG1hcmtzXG5cbiAgbGV0IG1hcmtzX3NldF9pZHggbWFya3MgaWR4ID1cbiAgICB7IG1hcmtzIHdpdGggbWFya3MgPSBtYXJrc19zZXRfaWR4IGlkeCBtYXJrcy5tYXJrcyB9XG5cbiAgbGV0IHBwX21hcmtzIGNoIHQgPVxuICAgIG1hdGNoIHQubWFya3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gICAgfCAoYSwgaSkgOjogciAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGEgaTtcbiAgICAgIExpc3QuaXRlciAoZnVuIChhLCBpKSAtPiBGb3JtYXQuZnByaW50ZiBjaCBcIiAlZC0lZFwiIGEgaSkgclxuZW5kXG5cbigqKioqKVxuXG5sZXQgcHBfc2VtIGNoIGsgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGNoXG4gICAgKG1hdGNoIGsgd2l0aFxuICAgICAgIGBTaG9ydGVzdCAtPiBcInNob3J0XCJcbiAgICAgfCBgTG9uZ2VzdCAgLT4gXCJsb25nXCJcbiAgICAgfCBgRmlyc3QgICAgLT4gXCJmaXJzdFwiKVxuXG5cbmxldCBwcF9yZXBfa2luZCBmbXQgPSBmdW5jdGlvblxuICB8IGBHcmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJHcmVlZHlcIlxuICB8IGBOb25fZ3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uX2dyZWVkeVwiXG5cbmxldCByZWMgcHAgY2ggZSA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBtYXRjaCBlLmRlZiB3aXRoXG4gICAgQ3N0IGwgLT5cbiAgICBzZXhwIGNoIFwiY3N0XCIgQ3NldC5wcCBsO1xuICB8IEFsdCBsIC0+XG4gICAgc2V4cCBjaCBcImFsdFwiIChsaXN0IHBwKSBsXG4gIHwgU2VxIChrLCBlLCBlJykgLT5cbiAgICBzZXhwIGNoIFwic2VxXCIgKHRyaXBsZSBwcF9zZW0gcHAgcHApIChrLCBlLCBlJylcbiAgfCBFcHMgLT5cbiAgICBzdHIgY2ggXCJlcHNcIlxuICB8IFJlcCAoX3JrLCBrLCBlKSAtPlxuICAgIHNleHAgY2ggXCJyZXBcIiAocGFpciBwcF9zZW0gcHApIChrLCBlKVxuICB8IE1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJtYXJrXCIgaW50IGlcbiAgfCBQbWFyayBpIC0+XG4gICAgc2V4cCBjaCBcInBtYXJrXCIgaW50IChpIDo+IGludClcbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBzZXhwIGNoIFwiZXJhc2VcIiAocGFpciBpbnQgaW50KSAoYiwgZSlcbiAgfCBCZWZvcmUgYyAtPlxuICAgIHNleHAgY2ggXCJiZWZvcmVcIiBDYXRlZ29yeS5wcCBjXG4gIHwgQWZ0ZXIgYyAtPlxuICAgIHNleHAgY2ggXCJhZnRlclwiIENhdGVnb3J5LnBwIGNcblxuXG4oKioqKilcblxubGV0IHJlYyBmaXJzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIE5vbmVcbiAgfCB4IDo6IHIgLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgTm9uZSAgICAgICAgICAtPiBmaXJzdCBmIHJcbiAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzXG5cbigqKioqKVxuXG50eXBlIGlkcyA9IGludCByZWZcbmxldCBjcmVhdGVfaWRzICgpID0gcmVmIDBcblxubGV0IGVwc19leHByID0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5cbmxldCBta19leHByIGlkcyBkZWYgPVxuICBpbmNyIGlkcztcbiAgeyBpZCA9ICFpZHM7IGRlZiA9IGRlZiB9XG5cbmxldCBlbXB0eSBpZHMgPSBta19leHByIGlkcyAoQWx0IFtdKVxuXG5sZXQgY3N0IGlkcyBzID1cbiAgaWYgQ3NldC5pc19lbXB0eSBzXG4gIHRoZW4gZW1wdHkgaWRzXG4gIGVsc2UgbWtfZXhwciBpZHMgKENzdCBzKVxuXG5sZXQgYWx0IGlkcyA9IGZ1bmN0aW9uXG4gIHwgW10gIC0+IGVtcHR5IGlkc1xuICB8IFtjXSAtPiBjXG4gIHwgbCAgIC0+IG1rX2V4cHIgaWRzIChBbHQgbClcblxubGV0IHNlcSBpZHMga2luZCB4IHkgPVxuICBtYXRjaCB4LmRlZiwgeS5kZWYgd2l0aFxuICAgIEFsdCBbXSwgXyAgICAgICAgICAgICAgICAgLT4geFxuICB8IF8sIEFsdCBbXSAgICAgICAgICAgICAgICAgLT4geVxuICB8IEVwcywgXyAgICAgICAgICAgICAgICAgICAgLT4geVxuICB8IF8sIEVwcyB3aGVuIGtpbmQgPSBgRmlyc3QgLT4geFxuICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgLT4gbWtfZXhwciBpZHMgKFNlcSAoa2luZCwgeCwgeSkpXG5cbmxldCBpc19lcHMgZXhwciA9XG4gIG1hdGNoIGV4cHIuZGVmIHdpdGhcbiAgfCBFcHMgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IGVwcyBpZHMgPSBta19leHByIGlkcyBFcHNcblxubGV0IHJlcCBpZHMga2luZCBzZW0geCA9IG1rX2V4cHIgaWRzIChSZXAgKGtpbmQsIHNlbSwgeCkpXG5cbmxldCBtYXJrIGlkcyBtID0gbWtfZXhwciBpZHMgKE1hcmsgbSlcblxubGV0IHBtYXJrIGlkcyBpID0gbWtfZXhwciBpZHMgKFBtYXJrIGkpXG5cbmxldCBlcmFzZSBpZHMgbSBtJyA9IG1rX2V4cHIgaWRzIChFcmFzZSAobSwgbScpKVxuXG5sZXQgYmVmb3JlIGlkcyBjID0gbWtfZXhwciBpZHMgKEJlZm9yZSBjKVxuXG5sZXQgYWZ0ZXIgaWRzIGMgPSBta19leHByIGlkcyAoQWZ0ZXIgYylcblxuKCoqKiopXG5cbmxldCByZWMgcmVuYW1lIGlkcyB4ID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBfIHwgRXBzIHwgTWFyayBfIHwgUG1hcmsgXyB8IEVyYXNlIF8gfCBCZWZvcmUgXyB8IEFmdGVyIF8gLT5cbiAgICBta19leHByIGlkcyB4LmRlZlxuICB8IEFsdCBsIC0+XG4gICAgbWtfZXhwciBpZHMgKEFsdCAoTGlzdC5tYXAgKHJlbmFtZSBpZHMpIGwpKVxuICB8IFNlcSAoaywgeSwgeikgLT5cbiAgICBta19leHByIGlkcyAoU2VxIChrLCByZW5hbWUgaWRzIHksIHJlbmFtZSBpZHMgeikpXG4gIHwgUmVwIChnLCBrLCB5KSAtPlxuICAgIG1rX2V4cHIgaWRzIChSZXAgKGcsIGssIHJlbmFtZSBpZHMgeSkpXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcbnR5cGUgbWFya19pbmZvcyA9IGludCBhcnJheVxudHlwZSBzdGF0dXMgPSBGYWlsZWQgfCBNYXRjaCBvZiBtYXJrX2luZm9zICogUG1hcmsuU2V0LnQgfCBSdW5uaW5nXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUU2VxIG9mIHQgbGlzdCAqIGV4cHIgKiBzZW1cbiAgICB8IFRFeHAgb2YgTWFya3MudCAqIGV4cHJcbiAgICB8IFRNYXRjaCBvZiBNYXJrcy50XG5cbiAgbGV0IHJlYyBlcXVhbCBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgVFNlcSAobDEnLCBlMSwgXykgOjogcjEsIFRTZXEgKGwyJywgZTIsIF8pIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIGVxdWFsIGwxJyBsMicgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRFeHAgKG1hcmtzMSwgZTEpIDo6IHIxLCBURXhwIChtYXJrczIsIGUyKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRNYXRjaCBtYXJrczEgOjogcjEsIFRNYXRjaCBtYXJrczIgOjogcjIgLT5cbiAgICAgIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgcmVjIGhhc2ggbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhY2N1XG4gICAgfCBUU2VxIChsJywgZSwgXykgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxNzJhMWJjZSAoaGFzaF9jb21iaW5lIGUuaWQgKGhhc2ggbCcgYWNjdSkpKVxuICAgIHwgVEV4cCAobWFya3MsIGUpIDo6IHIgLT5cbiAgICAgIGhhc2ggclxuICAgICAgICAoaGFzaF9jb21iaW5lIDB4MmI0YzBkNzcgKGhhc2hfY29tYmluZSBlLmlkIChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKSlcbiAgICB8IFRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDFjMjA1YWQ1IChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKVxuXG4gIGxldCB0ZXhwIG1hcmtzIHggPSBURXhwIChtYXJrcywgeClcblxuICBsZXQgdHNlcSBraW5kIHggeSByZW0gPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiByZW1cbiAgICB8IFtURXhwIChtYXJrcywge2RlZiA9IEVwcyA7IF99KV0gLT4gVEV4cCAobWFya3MsIHkpIDo6IHJlbVxuICAgIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBUU2VxICh4LCB5LCBraW5kKSA6OiByZW1cblxuICBsZXQgcmVjIHByaW50X3N0YXRlX3JlYyBjaCBlIHkgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgVE1hdGNoIG1hcmtzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KE1hdGNoQCAlYSlAXVwiIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBUU2VxIChsJywgeCwgX2tpbmQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KFNlcUAgXCI7XG4gICAgICBwcmludF9zdGF0ZV9sc3QgY2ggbCcgeDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCAlYSlAXVwiIHBwIHhcbiAgICB8IFRFeHAgKG1hcmtzLCB7ZGVmID0gRXBzOyBffSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgKGVwcykpQF1cIiB5LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBURXhwIChtYXJrcywgeCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgJWEpQF1cIiB4LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzIHBwIHhcblxuICBhbmQgcHJpbnRfc3RhdGVfbHN0IGNoIGwgeSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIoKVwiXG4gICAgfCBlIDo6IHJlbSAtPlxuICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeTtcbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAIHwgXCI7XG4gICAgICAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHkpXG4gICAgICAgIHJlbVxuXG4gIGxldCBwcCBjaCB0ID0gcHJpbnRfc3RhdGVfbHN0IGNoIFt0XSB7IGlkID0gMDsgZGVmID0gRXBzIH1cbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGlkeDogaWR4XG4gICAgOyBjYXRlZ29yeTogQ2F0ZWdvcnkudFxuICAgIDsgZGVzYzogRS50IGxpc3RcbiAgICA7IG11dGFibGUgc3RhdHVzOiBzdGF0dXMgb3B0aW9uXG4gICAgOyBoYXNoOiBoYXNoIH1cblxuICBsZXQgZHVtbXkgPVxuICAgIHsgaWR4ID0gLTFcbiAgICA7IGNhdGVnb3J5ID0gQ2F0ZWdvcnkuZHVtbXlcbiAgICA7IGRlc2MgPSBbXVxuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IC0xIH1cblxuICBsZXQgaGFzaCBpZHggY2F0IGRlc2MgPVxuICAgIEUuaGFzaCBkZXNjIChoYXNoX2NvbWJpbmUgaWR4IChoYXNoX2NvbWJpbmUgKENhdGVnb3J5LnRvX2ludCBjYXQpIDApKSBsYW5kIDB4M0ZGRkZGRkZcblxuICBsZXQgbWsgaWR4IGNhdCBkZXNjID1cbiAgICB7IGlkeFxuICAgIDsgY2F0ZWdvcnkgPSBjYXRcbiAgICA7IGRlc2NcbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSBoYXNoIGlkeCBjYXQgZGVzY31cblxuICBsZXQgY3JlYXRlIGNhdCBlID0gbWsgMCBjYXQgW0UuVEV4cCAoTWFya3MuZW1wdHksIGUpXVxuXG4gIGxldCBlcXVhbCB4IHkgPVxuICAgICh4Lmhhc2ggOiBpbnQpID0geS5oYXNoICYmICh4LmlkeCA6IGludCkgPSB5LmlkeCAmJlxuICAgIENhdGVnb3J5LmVxdWFsIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSAmJiBFLmVxdWFsIHguZGVzYyB5LmRlc2NcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgIGxldCBjID0gY29tcGFyZSAoeC5oYXNoIDogaW50KSB5Lmhhc2ggaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgIGxldCBjID0gQ2F0ZWdvcnkuY29tcGFyZSB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICBjb21wYXJlIHguZGVzYyB5LmRlc2NcblxuICB0eXBlIHQnID0gdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSB0J1xuICAgICAgbGV0IGVxdWFsID0gZXF1YWxcbiAgICAgIGxldCBoYXNoIHQgPSB0Lmhhc2hcbiAgICBlbmQpXG5lbmRcblxuKCoqKiogRmluZCBhIGZyZWUgaW5kZXggKioqKilcblxudHlwZSB3b3JraW5nX2FyZWEgPSBib29sIGFycmF5IHJlZlxuXG5sZXQgY3JlYXRlX3dvcmtpbmdfYXJlYSAoKSA9IHJlZiBbfCBmYWxzZSB8XVxuXG5sZXQgaW5kZXhfY291bnQgdyA9IEFycmF5Lmxlbmd0aCAhd1xuXG5sZXQgcmVzZXRfdGFibGUgYSA9IEFycmF5LmZpbGwgYSAwIChBcnJheS5sZW5ndGggYSkgZmFsc2VcblxubGV0IHJlYyBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgPVxuICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEUuVFNlcSAobCwgXywgXykgLT4gbWFya191c2VkX2luZGljZXMgdGJsIGxcbiAgICAgIHwgRS5URXhwIChtYXJrcywgXylcbiAgICAgIHwgRS5UTWF0Y2ggbWFya3MgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKF8sIGkpIC0+IGlmIGkgPj0gMCB0aGVuIHRibC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBtYXJrcy5NYXJrcy5tYXJrcylcblxubGV0IHJlYyBmaW5kX2ZyZWUgdGJsIGlkeCBsZW4gPVxuICBpZiBpZHggPSBsZW4gfHwgbm90IHRibC4oaWR4KSB0aGVuIGlkeCBlbHNlIGZpbmRfZnJlZSB0YmwgKGlkeCArIDEpIGxlblxuXG5sZXQgZnJlZV9pbmRleCB0YmxfcmVmIGwgPVxuICBsZXQgdGJsID0gIXRibF9yZWYgaW5cbiAgcmVzZXRfdGFibGUgdGJsO1xuICBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0YmwgaW5cbiAgbGV0IGlkeCA9IGZpbmRfZnJlZSB0YmwgMCBsZW4gaW5cbiAgaWYgaWR4ID0gbGVuIHRoZW4gdGJsX3JlZiA6PSBBcnJheS5tYWtlICgyICogbGVuKSBmYWxzZTtcbiAgaWR4XG5cbigqKioqIENvbXB1dGF0aW9uIG9mIHRoZSBuZXh0IHN0YXRlICoqKiopXG5cbmxldCByZW1vdmVfbWF0Y2hlcyA9IExpc3QuZmlsdGVyIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuXG5sZXQgcmVjIHNwbGl0X2F0X21hdGNoX3JlYyBsJyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBFLlRNYXRjaCBfIDo6IHIgLT4gKExpc3QucmV2IGwnLCByZW1vdmVfbWF0Y2hlcyByKVxuICB8IHggOjogciAgICAgICAgLT4gc3BsaXRfYXRfbWF0Y2hfcmVjICh4IDo6IGwnKSByXG5cbmxldCBzcGxpdF9hdF9tYXRjaCBsID0gc3BsaXRfYXRfbWF0Y2hfcmVjIFtdIGxcblxubGV0IHJlYyByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwgeSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+XG4gICAgKFtdLCBwcmV2KVxuICB8IEUuVE1hdGNoIF8gYXMgeCA6OiBfIC0+ICgqIFRydW5jYXRlIGFmdGVyIGZpcnN0IG1hdGNoICopXG4gICAgKFt4XSwgcHJldilcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgbGV0IChsJycsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCcgeCBpblxuICAgIGxldCAocicsIHByZXYnJykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2JyByIHkgaW5cbiAgICAoRS50c2VxIGtpbmQgbCcnIHggcicsIHByZXYnJylcbiAgfCBFLlRFeHAgKF9tYXJrcywge2RlZiA9IEVwczsgX30pIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB5LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeS5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcbiAgfCBFLlRFeHAgKF9tYXJrcywgeCkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHguaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh4LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuXG5sZXQgcmVjIHNldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgRS5UTWF0Y2ggbWFya3MgOjogciAtPlxuICAgIEUuVE1hdGNoIChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBFLlRTZXEgKHNldF9pZHggaWR4IGwnLCB4LCBraW5kKSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5URXhwIChtYXJrcywgeCkgOjogciAtPlxuICAgIEUuVEV4cCAoKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSwgeCkgOjogc2V0X2lkeCBpZHggclxuXG5sZXQgZmlsdGVyX21hcmtzIGIgZSBtYXJrcyA9XG4gIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gTGlzdC5maWx0ZXIgKGZ1biAoaSwgXykgLT4gaSA8IGIgfHwgaSA+IGUpIG1hcmtzLk1hcmtzLm1hcmtzIH1cblxubGV0IHJlYyBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gICgqRm9ybWF0LmVwcmludGYgXCIlZEAuXCIgeC5pZDsqKVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IHMgLT5cbiAgICBpZiBDc2V0Lm1lbSBjIHMgdGhlbiBFLnRleHAgbWFya3MgZXBzX2V4cHIgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgbGV0ICh5JycsIG1hcmtzJykgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgZmlyc3RcbiAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeSdcbiAgICAgIHdpdGhcbiAgICAgICAgTm9uZSAgICAgICAgLT4gKHknLCBtYXJrcylcbiAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHknLCBtYXJrcycpXG4gICAgaW5cbiAgICBiZWdpbiBtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHknJyB4IChFLlRNYXRjaCBtYXJrcycgOjogcmVtKVxuICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB5JycgeCByZW1cbiAgICBlbmRcbiAgfCBFcHMgLT5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MubWFya3MgPSAoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgUG1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5wbWFya3MgPSBQbWFyay5TZXQuYWRkIGkgbWFya3MuTWFya3MucG1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBFLlRNYXRjaCAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykgOjogcmVtXG4gIHwgQmVmb3JlIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IG5leHRfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWZ0ZXIgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgcHJldl9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cblxuYW5kIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxuYW5kIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5IHogcmVtID1cbiAgbWF0Y2hcbiAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeVxuICB3aXRoXG4gICAgTm9uZSAtPlxuICAgIEUudHNlcSBraW5kIHkgeiByZW1cbiAgfCBTb21lIG1hcmtzIC0+XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICBgTG9uZ2VzdCAtPlxuICAgICAgRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogcmVtKVxuICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6XG4gICAgICAgIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiByZW0pXG4gICAgfCBgRmlyc3QgLT5cbiAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICBFLnRzZXEga2luZCB5JyB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IChFLnRzZXEga2luZCB5JycgeiByZW0pKVxuXG5sZXQgcmVjIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIHggOjogcmVtXG5cbmFuZCBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmxldCBkZWx0YSB0YmxfcmVmIG5leHRfY2F0IGNoYXIgc3QgPVxuICBsZXQgcHJldl9jYXQgPSBzdC5TdGF0ZS5jYXRlZ29yeSBpblxuICBsZXQgKGV4cHInLCBfKSA9XG4gICAgcmVtb3ZlX2R1cGxpY2F0ZXMgW11cbiAgICAgIChkZWx0YV80IGNoYXIgfm5leHRfY2F0IH5wcmV2X2NhdCBzdC5TdGF0ZS5kZXNjIFtdKVxuICAgICAgZXBzX2V4cHIgaW5cbiAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgU3RhdGUubWsgaWR4IG5leHRfY2F0IGV4cHInJ1xuXG4oKioqKilcblxubGV0IHJlYyByZWRfdHIgPSBmdW5jdGlvblxuICB8IFtdIHwgW19dIGFzIGwgLT5cbiAgICBsXG4gIHwgKChzMSwgc3QxKSBhcyB0cjEpIDo6ICgoczIsIHN0MikgYXMgdHIyKSA6OiByZW0gLT5cbiAgICBpZiBTdGF0ZS5lcXVhbCBzdDEgc3QyIHRoZW5cbiAgICAgIHJlZF90ciAoKENzZXQudW5pb24gczEgczIsIHN0MSkgOjogcmVtKVxuICAgIGVsc2VcbiAgICAgIHRyMSA6OiByZWRfdHIgKHRyMiA6OiByZW0pXG5cbmxldCBzaW1wbF90ciBsID1cbiAgTGlzdC5zb3J0XG4gICAgKGZ1biAoczEsIF8pIChzMiwgXykgLT4gY29tcGFyZSBzMSBzMilcbiAgICAocmVkX3RyIChMaXN0LnNvcnQgKGZ1biAoXywgc3QxKSAoXywgc3QyKSAtPiBTdGF0ZS5jb21wYXJlIHN0MSBzdDIpIGwpKVxuXG4oKioqKilcblxubGV0IHByZXBlbmRfZGVyaXYgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgeCkgbCAtPiBDc2V0LnByZXBlbmQgcyB4IGwpXG5cbmxldCByZWMgcmVzdHJpY3QgcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAocycsIHgnKSA6OiByZW0gLT5cbiAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICB0aGVuIHJlc3RyaWN0IHMgcmVtXG4gICAgZWxzZSAocycnLCB4JykgOjogcmVzdHJpY3QgcyByZW1cblxubGV0IHJlYyByZW1vdmVfbWFya3MgYiBlIHJlbSA9XG4gIGlmIGIgPiBlIHRoZW4gcmVtIGVsc2UgcmVtb3ZlX21hcmtzIGIgKGUgLSAxKSAoKGUsIC0yKSA6OiByZW0pXG5cbmxldCByZWMgcHJlcGVuZF9tYXJrc19leHByIG0gPSBmdW5jdGlvblxuICB8IEUuVFNlcSAobCwgZScsIHMpIC0+IEUuVFNlcSAocHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwsIGUnLCBzKVxuICB8IEUuVEV4cCAobScsIGUnKSAgIC0+IEUuVEV4cCAoTWFya3MubWVyZ2UgbSBtJywgZScpXG4gIHwgRS5UTWF0Y2ggbScgICAgICAgLT4gRS5UTWF0Y2ggKE1hcmtzLm1lcmdlIG0gbScpXG5cbmFuZCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCA9XG4gIExpc3QubWFwIChwcmVwZW5kX21hcmtzX2V4cHIgbSkgbFxuXG5sZXQgcHJlcGVuZF9tYXJrcyBtID1cbiAgTGlzdC5tYXAgKGZ1biAocywgeCkgLT4gKHMsIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSB4KSlcblxubGV0IHJlYyBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgfCBDc3QgcyAtPlxuICAgIENzZXQucHJlcGVuZCBzIFtFLnRleHAgbWFya3MgZXBzX2V4cHJdIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeikgcmVtIC0+XG4gICAgICAgICBsZXQgKHonLCBtYXJrcycpID1cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgICB6XG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICBOb25lICAgICAgICAtPiAoeiwgbWFya3MpXG4gICAgICAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHosIG1hcmtzJylcbiAgICAgICAgIGluXG4gICAgICAgICBDc2V0LnByZXBlbmQgc1xuICAgICAgICAgICAobWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB6JyB4IFtFLlRNYXRjaCBtYXJrcyddXG4gICAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHonIHggW10pXG4gICAgICAgICAgIHJlbSlcbiAgICAgIHknIHJlbVxuICB8IEVwcyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9ICgoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBQbWFyayBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnNcbiAgICAgIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChyZW1vdmVfbWFya3MgYiBlIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKS5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBCZWZvcmUgY2F0JyAtPlxuICAgIENzZXQucHJlcGVuZCAoTGlzdC5hc3NxIGNhdCcgY2F0ZWdvcmllcykgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBBZnRlciBjYXQnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IGNhdCBjYXQnIHRoZW4gQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgciByZW0pXG5cbmFuZCBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeSB6IHJlbSA9XG4gIGlmXG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gKF9zLCB4bCkgLT5cbiAgICAgICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSB4bClcbiAgICAgIHlcbiAgdGhlblxuICAgIGxldCB6JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgTWFya3MuZW1wdHkgY2F0IHogWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHkpIHJlbSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgeVxuICAgICAgICAgd2l0aFxuICAgICAgICAgICBOb25lIC0+XG4gICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5IHogW10pIHJlbVxuICAgICAgICAgfCBTb21lIG1hcmtzIC0+XG4gICAgICAgICAgIGxldCB6JycgPSBwcmVwZW5kX21hcmtzIG1hcmtzIHonIGluXG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIGBMb25nZXN0IC0+XG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgcmVtKVxuICAgICAgICAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIHJlbSlcbiAgICAgICAgICAgfCBgRmlyc3QgLT5cbiAgICAgICAgICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JyB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScnIHogW10pIHJlbSkpKVxuICAgICAgeSByZW1cbiAgZWxzZVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeGwpIHJlbSAtPiBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeGwgeiBbXSkgcmVtKSB5IHJlbVxuXG5sZXQgcmVjIGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW3hdIHJlbVxuXG5hbmQgZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgciByZW0pXG5cbmxldCBkZXJpdiB0YmxfcmVmIGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0ID1cbiAgbGV0IGRlciA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QuU3RhdGUuY2F0ZWdvcnkgc3QuU3RhdGUuZGVzY1xuICAgICAgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgc2ltcGxfdHIgKFxuICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCBleHByKSByZW0gLT5cbiAgICAgICAgbGV0IChleHByJywgXykgPSByZW1vdmVfZHVwbGljYXRlcyBbXSBleHByIGVwc19leHByIGluXG4oKlxuRm9ybWF0LmVwcmludGYgXCJAWzwzPkBbJWFAXTogJWEgLyAlYUBdQC5cIiBDc2V0LnByaW50IHMgcHJpbnRfc3RhdGUgZXhwciBwcmludF9zdGF0ZSBleHByJztcbiopXG4gICAgICAgIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgICAgICAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChjYXQnLCBzJykgcmVtIC0+XG4gICAgICAgICAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgICAgICAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgICAgICAgICAgdGhlbiByZW1cbiAgICAgICAgICAgIGVsc2UgKHMnJywgU3RhdGUubWsgaWR4IGNhdCcgZXhwcicnKSA6OiByZW0pXG4gICAgICAgICAgY2F0ZWdvcmllcyByZW0pIGRlciBbXSlcblxuKCoqKiopXG5cbmxldCBmbGF0dGVuX21hdGNoIG0gPVxuICBsZXQgbWEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG1hIChpLCBfKSAtPiBtYXggbWEgaSkgKC0xKSBtIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChtYSArIDEpICgtMSkgaW5cbiAgTGlzdC5pdGVyIChmdW4gKGksIHYpIC0+IHJlcy4oaSkgPC0gdikgbTtcbiAgcmVzXG5cbmxldCBzdGF0dXMgcyA9XG4gIG1hdGNoIHMuU3RhdGUuc3RhdHVzIHdpdGhcbiAgICBTb21lIHN0IC0+XG4gICAgc3RcbiAgfCBOb25lIC0+XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIHMuU3RhdGUuZGVzYyB3aXRoXG4gICAgICAgIFtdICAgICAgICAgICAgICAtPiBGYWlsZWRcbiAgICAgIHwgRS5UTWF0Y2ggbSA6OiBfIC0+IE1hdGNoIChmbGF0dGVuX21hdGNoIG0uTWFya3MubWFya3MsIG0uTWFya3MucG1hcmtzKVxuICAgICAgfCBfICAgICAgICAgICAgICAgLT4gUnVubmluZ1xuICAgIGluXG4gICAgcy5TdGF0ZS5zdGF0dXMgPC0gU29tZSBzdDtcbiAgICBzdFxuIiwiKCogSW4gcmVhbGl0eSwgdGhpcyBjYW4gcmVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIGEgYm9vbCBhcnJheS5cblxuICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIGxpc3Qgb2YgYWxsIGNoYXJzIGFsb25nIHdpdGggYVxuICAgZmxhZzpcblxuICAgKGEsIDApLCAoYiwgMSksIChjLCAwKSwgKGQsIDApLCAuLi5cblxuICAgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgY29sb3IgYXJlIHJlcHJlc2VudGVkIGJ5IHNlcXVuY2VzIG9mXG4gICBjaGFyYWN0ZXJzIHdpdGggdGhlIGZsYWcgc2V0IHRvIDAuXG4qKVxuXG50eXBlIHQgPSBCeXRlcy50XG5cbmxldCBtYWtlICgpID0gQnl0ZXMubWFrZSAyNTcgJ1xcMDAwJ1xuXG5sZXQgZmxhdHRlbiBjbSA9XG4gIGxldCBjID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgY29sb3JfcmVwciA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IHYgPSByZWYgMCBpblxuICBCeXRlcy5zZXQgYyAwICdcXDAwMCc7XG4gIEJ5dGVzLnNldCBjb2xvcl9yZXByIDAgJ1xcMDAwJztcbiAgZm9yIGkgPSAxIHRvIDI1NSBkb1xuICAgIGlmIEJ5dGVzLmdldCBjbSBpIDw+ICdcXDAwMCcgdGhlbiBpbmNyIHY7XG4gICAgQnl0ZXMuc2V0IGMgaSAoQ2hhci5jaHIgIXYpO1xuICAgIEJ5dGVzLnNldCBjb2xvcl9yZXByICF2IChDaGFyLmNociBpKVxuICBkb25lO1xuICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjLCBCeXRlcy5zdWJfc3RyaW5nIGNvbG9yX3JlcHIgMCAoIXYgKyAxKSwgIXYgKyAxKVxuXG4oKiBtYXJrIGFsbCB0aGUgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMgb2YgdGhlIGNoYXIgc2V0IHdpdGggdGhlIDEgYnl0ZSAqKVxubGV0IHNwbGl0IHMgY20gPVxuICBDc2V0Lml0ZXIgcyB+ZjooZnVuIGkgaiAtPlxuICAgICAgQnl0ZXMuc2V0IGNtIGkgJ1xcMDAxJztcbiAgICAgIEJ5dGVzLnNldCBjbSAoaiArIDEpICdcXDAwMSc7XG4gICAgKVxuIiwiKCogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gKilcbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG1hcmtzIDogQXV0b21hdGEubWFya19pbmZvc1xuICA7IHBtYXJrcyA6IFBtYXJrLlNldC50XG4gIDsgZ3BvcyA6IGludCBhcnJheVxuICA7IGdjb3VudCA6IGludFxuICB9XG5cbmxldCBvZmZzZXQgdCBpID1cbiAgaWYgMiAqIGkgKyAxID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgaWYgbTEgPSAtMSB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAocDEsIHAyKVxuXG5sZXQgZ2V0IHQgaSA9XG4gIGxldCAocDEsIHAyKSA9IG9mZnNldCB0IGkgaW5cbiAgU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG5cbmxldCBzdGFydCBzdWJzIGkgPSBmc3QgKG9mZnNldCBzdWJzIGkpXG5cbmxldCBzdG9wIHN1YnMgaSA9IHNuZCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHRlc3QgdCBpID1cbiAgaWYgMiAqIGkgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlblxuICAgIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaWR4ID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWR4IDw+IC0xXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIGlmIHRlc3QgdCBpXG4gIHRoZW4gU29tZSAoZ2V0IHQgaSlcbiAgZWxzZSBOb25lXG5cbmxldCBkdW1teV9vZmZzZXQgPSAoLTEsIC0xKVxuXG5sZXQgYWxsX29mZnNldCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfb2Zmc2V0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gKHAxLCBwMilcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBkdW1teV9zdHJpbmcgPSBcIlwiXG5cbmxldCBhbGwgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X3N0cmluZyBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IHBwIGZtdCB0ID1cbiAgbGV0IG1hdGNoZXMgPVxuICAgIGxldCBvZmZzZXRzID0gYWxsX29mZnNldCB0IGluXG4gICAgbGV0IHN0cnMgPSBhbGwgdCBpblxuICAgIEFycmF5LnRvX2xpc3QgKFxuICAgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHN0cnMpIChmdW4gaSAtPiBzdHJzLihpKSwgb2Zmc2V0cy4oaSkpXG4gICAgKSBpblxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHBwX21hdGNoIGZtdCAoc3RyLCAoc3RhcnQsIHN0b3ApKSA9XG4gICAgZnByaW50ZiBmbXQgXCJAWyglcyAoJWQgJWQpKUBdXCIgc3RyIHN0YXJ0IHN0b3AgaW5cbiAgc2V4cCBmbXQgXCJHcm91cFwiIChsaXN0IHBwX21hdGNoKSBtYXRjaGVzXG5cbmxldCBuYl9ncm91cHMgdCA9IHQuZ2NvdW50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5sZXQgcmVjIGl0ZXIgbiBmIHYgPSBpZiBuID0gMCB0aGVuIHYgZWxzZSBpdGVyIChuIC0gMSkgZiAoZiB2KVxuXG4oKioqKilcblxubGV0IHVua25vd24gPSAtMlxubGV0IGJyZWFrID0gLTNcblxudHlwZSBtYXRjaF9pbmZvID1cbiAgfCBNYXRjaCBvZiBHcm91cC50XG4gIHwgRmFpbGVkXG4gIHwgUnVubmluZyBvZiB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgOiBpbnQgfVxuXG50eXBlIHN0YXRlID1cbiAgeyBpZHggOiBpbnQ7XG4gICAgKCogSW5kZXggb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHBvc2l0aW9uIHRhYmxlLlxuICAgICAgIE5vdCB5ZXQgY29tcHV0ZWQgdHJhbnNpdGlvbnMgcG9pbnQgdG8gYSBkdW1teSBzdGF0ZSB3aGVyZVxuICAgICAgIFtpZHhdIGlzIHNldCB0byBbdW5rbm93bl07XG4gICAgICAgSWYgW2lkeF0gaXMgc2V0IHRvIFticmVha10gZm9yIHN0YXRlcyB0aGF0IGVpdGhlciBhbHdheXNcbiAgICAgICBzdWNjZWVkIG9yIGFsd2F5cyBmYWlsLiAqKVxuICAgIHJlYWxfaWR4IDogaW50O1xuICAgICgqIFRoZSByZWFsIGluZGV4LCBpbiBjYXNlIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdICopXG4gICAgbmV4dCA6IHN0YXRlIGFycmF5O1xuICAgICgqIFRyYW5zaXRpb24gdGFibGUsIGluZGV4ZWQgYnkgY29sb3IgKilcbiAgICBtdXRhYmxlIGZpbmFsIDpcbiAgICAgIChDYXRlZ29yeS50ICpcbiAgICAgICAoQXV0b21hdGEuaWR4ICogQXV0b21hdGEuc3RhdHVzKSkgbGlzdDtcbiAgICAoKiBNYXBwaW5nIGZyb20gdGhlIGNhdGVnb3J5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b1xuICAgICAgIC0gdGhlIGluZGV4IHdoZXJlIHRoZSBuZXh0IHBvc2l0aW9uIHNob3VsZCBiZSBzYXZlZFxuICAgICAgIC0gcG9zc2libHksIHRoZSBsaXN0IG9mIG1hcmtzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5kaWNlcylcbiAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJlc3QgbWF0Y2ggKilcbiAgICBkZXNjIDogQXV0b21hdGEuU3RhdGUudFxuICAgICgqIERlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgb2YgdGhlIGF1dG9tYXRhICopIH1cblxuKCogQXV0b21hdGEgKGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbikgKilcbnR5cGUgcmUgPVxuICB7IGluaXRpYWwgOiBBdXRvbWF0YS5leHByO1xuICAgICgqIFRoZSB3aG9sZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc3RhdGVzIDogKENhdGVnb3J5LnQgKiBzdGF0ZSkgbGlzdDtcbiAgICAoKiBJbml0aWFsIHN0YXRlcywgaW5kZXhlZCBieSBpbml0aWFsIGNhdGVnb3J5ICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlICopXG4gICAgY29sb3JfcmVwciA6IHN0cmluZztcbiAgICAoKiBUYWJsZSBmcm9tIGNvbG9ycyB0byBvbmUgY2hhcmFjdGVyIG9mIHRoaXMgY29sb3IgKilcbiAgICBuY29sb3IgOiBpbnQ7XG4gICAgKCogTnVtYmVyIG9mIGNvbG9ycy4gKilcbiAgICBsbmwgOiBpbnQ7XG4gICAgKCogQ29sb3Igb2YgdGhlIGxhc3QgbmV3bGluZS4gLTEgaWYgdW5uZWNlc3NhcnkgKilcbiAgICB0YmwgOiBBdXRvbWF0YS53b3JraW5nX2FyZWE7XG4gICAgKCogVGVtcG9yYXJ5IHRhYmxlIHVzZWQgdG8gY29tcHV0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGluZGV4XG4gICAgICAgd2hlbiBjb21wdXRpbmcgYSBuZXcgc3RhdGUgKilcbiAgICBzdGF0ZXMgOiBzdGF0ZSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS50O1xuICAgICgqIFN0YXRlcyBvZiB0aGUgZGV0ZXJtaW5pc3RpYyBhdXRvbWF0YSAqKVxuICAgIGdyb3VwX25hbWVzIDogKHN0cmluZyAqIGludCkgbGlzdDtcbiAgICAoKiBOYW1lZCBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIGdyb3VwX2NvdW50IDogaW50XG4gICAgKCogTnVtYmVyIG9mIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopIH1cblxubGV0IHBwX3JlIGNoIHJlID0gQXV0b21hdGEucHAgY2ggcmUuaW5pdGlhbFxuXG5sZXQgcHJpbnRfcmUgPSBwcF9yZVxuXG5sZXQgZ3JvdXBfY291bnQgcmUgPSByZS5ncm91cF9jb3VudFxuXG5sZXQgZ3JvdXBfbmFtZXMgcmUgPSByZS5ncm91cF9uYW1lc1xuXG4oKiBJbmZvcm1hdGlvbiB1c2VkIGR1cmluZyBtYXRjaGluZyAqKVxudHlwZSBpbmZvID1cbiAgeyByZSA6IHJlO1xuICAgICgqIFRoZSBhdXRvbWF0YSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAoW3guY29sb3JzID0geC5yZS5jb2xvcnNdKVxuICAgICAgIFNob3J0Y3V0IHVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBtdXRhYmxlIHBvc2l0aW9ucyA6IGludCBhcnJheTtcbiAgICAoKiBBcnJheSBvZiBtYXJrIHBvc2l0aW9uc1xuICAgICAgIFRoZSBtYXJrIGFyZSBvZmYgYnkgb25lIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgcG9zIDogaW50O1xuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBpcyBzdGFydGVkICopXG4gICAgbGFzdCA6IGludFxuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBzaG91bGQgc3RvcCAqKSB9XG5cblxuKCoqKiopXG5cbmxldCBjYXRlZ29yeSByZSB+Y29sb3IgPVxuICBpZiBjb2xvciA9IC0xIHRoZW5cbiAgICBDYXRlZ29yeS5pbmV4aXN0YW50XG4gICAgKCogU3BlY2lhbCBjYXRlZ29yeSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICBlbHNlIGlmIGNvbG9yID0gcmUubG5sIHRoZW5cbiAgICBDYXRlZ29yeS4obGFzdG5ld2xpbmUgKysgbmV3bGluZSArKyBub3RfbGV0dGVyKVxuICBlbHNlXG4gICAgQ2F0ZWdvcnkuZnJvbV9jaGFyIChyZS5jb2xvcl9yZXByLltjb2xvcl0pXG5cbigqKioqKVxuXG5sZXQgZHVtbXlfbmV4dCA9IFt8fF1cblxubGV0IHVua25vd25fc3RhdGUgPVxuICB7IGlkeCA9IHVua25vd247IHJlYWxfaWR4ID0gMDtcbiAgICBuZXh0ID0gZHVtbXlfbmV4dDsgZmluYWwgPSBbXTtcbiAgICBkZXNjID0gQXV0b21hdGEuU3RhdGUuZHVtbXkgfVxuXG5sZXQgbWtfc3RhdGUgbmNvbCBkZXNjID1cbiAgbGV0IGJyZWFrX3N0YXRlID1cbiAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgZGVzYyB3aXRoXG4gICAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+IGZhbHNlXG4gICAgfCBBdXRvbWF0YS5GYWlsZWRcbiAgICB8IEF1dG9tYXRhLk1hdGNoIF8gLT4gdHJ1ZVxuICBpblxuICB7IGlkeCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gYnJlYWsgZWxzZSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICByZWFsX2lkeCA9IGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIG5leHQgPSBpZiBicmVha19zdGF0ZSB0aGVuIGR1bW15X25leHQgZWxzZSBBcnJheS5tYWtlIG5jb2wgdW5rbm93bl9zdGF0ZTtcbiAgICBmaW5hbCA9IFtdO1xuICAgIGRlc2MgfVxuXG5sZXQgZmluZF9zdGF0ZSByZSBkZXNjID1cbiAgdHJ5XG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuZmluZCByZS5zdGF0ZXMgZGVzY1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IG1rX3N0YXRlIHJlLm5jb2xvciBkZXNjIGluXG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuYWRkIHJlLnN0YXRlcyBkZXNjIHN0O1xuICAgIHN0XG5cbigqKioqIE1hdGNoIHdpdGggbWFya3MgKioqKilcblxubGV0IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCA9XG4gIGxldCBkZXNjID0gQXV0b21hdGEuZGVsdGEgaW5mby5yZS50YmwgY2F0IGNvbG9yIHN0LmRlc2MgaW5cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBpbmZvLnBvc2l0aW9ucyBpblxuICBpZiBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeCA9IGxlbiAmJiBsZW4gPiAwIHRoZW4gYmVnaW5cbiAgICBsZXQgcG9zID0gaW5mby5wb3NpdGlvbnMgaW5cbiAgICBpbmZvLnBvc2l0aW9ucyA8LSBBcnJheS5tYWtlICgyICogbGVuKSAwO1xuICAgIEFycmF5LmJsaXQgcG9zIDAgaW5mby5wb3NpdGlvbnMgMCBsZW5cbiAgZW5kO1xuICBkZXNjXG5cbmxldCB2YWxpZGF0ZSBpbmZvIChzOnN0cmluZykgfnBvcyBzdCA9XG4gIGxldCBjb2xvciA9IENoYXIuY29kZSAoaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCBpblxuICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCdcblxubGV0IHJlYyBsb29wIGluZm8gcyB+cG9zIHN0ID1cbiAgaWYgcG9zIDwgaW5mby5sYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgbGV0IGlkeCA9IHN0Jy5pZHggaW5cbiAgICBpZiBpZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBwb3M7XG4gICAgICBsb29wIGluZm8gcyB+cG9zOihwb3MgKyAxKSBzdCdcbiAgICBlbmQgZWxzZSBpZiBpZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgICBzdCdcbiAgICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3Mgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCByZWMgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0ID1cbiAgaWYgcG9zIDwgbGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGlmIHN0Jy5pZHggPj0gMCB0aGVuXG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3M6KHBvcyArIDEpIH5sYXN0IHN0J1xuICAgIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0J1xuICAgIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCBmaW5hbCBpbmZvIHN0IGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgc3QuZmluYWxcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOigtMSkgc3QgaW5cbiAgICBsZXQgcmVzID0gKHN0Jy5BdXRvbWF0YS5TdGF0ZS5pZHgsIEF1dG9tYXRhLnN0YXR1cyBzdCcpIGluXG4gICAgc3QuZmluYWwgPC0gKGNhdCwgcmVzKSA6OiBzdC5maW5hbDtcbiAgICByZXNcblxubGV0IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHJlLmluaXRpYWxfc3RhdGVzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gZmluZF9zdGF0ZSByZSAoQXV0b21hdGEuU3RhdGUuY3JlYXRlIGNhdCByZS5pbml0aWFsKSBpblxuICAgIHJlLmluaXRpYWxfc3RhdGVzIDwtIChjYXQsIHN0KSA6OiByZS5pbml0aWFsX3N0YXRlcztcbiAgICBzdFxuXG5sZXQgZ2V0X2NvbG9yIHJlIChzOnN0cmluZykgcG9zID1cbiAgaWYgcG9zIDwgMCB0aGVuXG4gICAgLTFcbiAgZWxzZVxuICAgIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgaWYgcG9zID49IHNsZW4gdGhlblxuICAgICAgLTFcbiAgICBlbHNlIGlmIHBvcyA9IHNsZW4gLSAxICYmIHJlLmxubCA8PiAtMSAmJiBzLltwb3NdID0gJ1xcbicgdGhlblxuICAgICAgKCogU3BlY2lhbCBjYXNlIGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gICAgICByZS5sbmxcbiAgICBlbHNlXG4gICAgICBDaGFyLmNvZGUgcmUuY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV1cblxubGV0IHJlYyBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzID1cbiAgbGV0IHN0JyA9IHN0Lm5leHQuKGluZm8ucmUubG5sKSBpblxuICBpZiBzdCcuaWR4ID49IDAgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcuaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgbGV0IGNvbG9yID0gaW5mby5yZS5sbmwgaW5cbiAgICBsZXQgcmVhbF9jID0gQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgJ1xcbiddIGluXG4gICAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gICAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOnJlYWxfYyBzdCBpblxuICAgIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnO1xuICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHNcbiAgZW5kXG5cbmxldCByZWMgc2Nhbl9zdHIgaW5mbyAoczpzdHJpbmcpIGluaXRpYWxfc3RhdGUgfmdyb3VwcyA9XG4gIGxldCBwb3MgPSBpbmZvLnBvcyBpblxuICBsZXQgbGFzdCA9IGluZm8ubGFzdCBpblxuICBpZiAobGFzdCA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgJiYgaW5mby5yZS5sbmwgPD4gLTFcbiAgICAgICYmIGxhc3QgPiBwb3NcbiAgICAgICYmIFN0cmluZy5nZXQgcyAobGFzdCAtIDEpID0gJ1xcbicpXG4gIHRoZW4gYmVnaW5cbiAgICBsZXQgaW5mbyA9IHsgaW5mbyB3aXRoIGxhc3QgPSBsYXN0IC0gMSB9IGluXG4gICAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0XG4gICAgZWxzZVxuICAgICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3M6KGxhc3QgLSAxKSBzdCB+Z3JvdXBzXG4gIGVuZCBlbHNlIGlmIGdyb3VwcyB0aGVuXG4gICAgbG9vcCBpbmZvIHMgfnBvcyBpbml0aWFsX3N0YXRlXG4gIGVsc2VcbiAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3QgaW5pdGlhbF9zdGF0ZVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBmaW5hbCBib3VuZGFyeSBjaGVjayBvbiB0aGUgaW5wdXQuXG4gICBUaGlzIGlzIHVzZWZ1bCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZmFpbGVkIGJlY2F1c2VcbiAgIG9mIGluc3VmZmljaWVudCBpbnB1dCwgb3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseVxuICAgbWF0Y2hlcyBmb3IgcmVnZXggdGhhdCBoYXZlIGJvdW5kYXJ5IGNvbmRpdGlvbnMgd2l0aCByZXNwZWN0XG4gICB0byB0aGUgaW5wdXQgc3RyaW5nLlxuICopXG5sZXQgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyA9XG4gIGxldCBmaW5hbF9jYXQgPVxuICAgIGlmIGxhc3QgPSBzbGVuIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgbGFzdCkpXG4gIGluXG4gIGxldCAoaWR4LCByZXMpID0gZmluYWwgaW5mbyBzdCBmaW5hbF9jYXQgaW5cbiAgKG1hdGNoIGdyb3VwcywgcmVzIHdpdGhcbiAgfCB0cnVlLCBNYXRjaCBfIC0+IGluZm8ucG9zaXRpb25zLihpZHgpIDwtIGxhc3RcbiAgfCBfIC0+ICgpKTtcbiAgcmVzXG5cbmxldCBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsYXN0ID0gaWYgbGVuID0gLTEgdGhlbiBzbGVuIGVsc2UgcG9zICsgbGVuIGluXG4gIGxldCBpbmZvID1cbiAgICB7IHJlIDsgY29sb3JzID0gcmUuY29sb3JzOyBwb3MgOyBsYXN0XG4gICAgOyBwb3NpdGlvbnMgPVxuICAgICAgICBpZiBncm91cHMgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuID0gQXV0b21hdGEuaW5kZXhfY291bnQgcmUudGJsICsgMSBpblxuICAgICAgICAgIGlmIG4gPD0gMTAgdGhlblxuICAgICAgICAgICAgW3wwOzA7MDswOzA7MDswOzA7MDswfF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5tYWtlIG4gMFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIFt8fF0gfVxuICBpblxuICBsZXQgaW5pdGlhbF9jYXQgPVxuICAgIGlmIHBvcyA9IDAgdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnlcbiAgICAgICAgICAgICAgICArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIChwb3MgLSAxKSkpXG4gIGluXG4gIGxldCBpbml0aWFsX3N0YXRlID0gZmluZF9pbml0aWFsX3N0YXRlIHJlIGluaXRpYWxfY2F0IGluXG4gIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgbGV0IHJlcyA9XG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgfHwgKHBhcnRpYWwgJiYgbm90IGdyb3VwcykgdGhlblxuICAgICAgQXV0b21hdGEuc3RhdHVzIHN0LmRlc2NcbiAgICBlbHNlIGlmIHBhcnRpYWwgJiYgZ3JvdXBzIHRoZW5cbiAgICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjIHdpdGhcbiAgICAgIHwgTWF0Y2ggXyB8IEZhaWxlZCBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgKCogVGhpcyBjb3VsZCBiZSBiZWNhdXNlIGl0J3Mgc3RpbGwgbm90IGZ1bGx5IG1hdGNoZWQsIG9yIGl0XG4gICAgICAgICAgIGNvdWxkIGJlIHRoYXQgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biBzcGVjaWFsIGVuZCBvZiBpbnB1dFxuICAgICAgICAgICBjaGVja3MuICopXG4gICAgICAgIChtYXRjaCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzIHdpdGhcbiAgICAgICAgIHwgTWF0Y2ggXyBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICAgICB8IEZhaWxlZCB8IFJ1bm5pbmcgLT5cbiAgICAgICAgICAgKCogQSBmYWlsdXJlIGhlcmUganVzdCBtZWFucyB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhLCBpLmUuXG4gICAgICAgICAgICAgIGl0J3MgYSBwYXJ0aWFsIG1hdGNoLiAqKVxuICAgICAgICAgICBSdW5uaW5nKVxuICAgIGVsc2UgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3Vwc1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICAgIEF1dG9tYXRhLk1hdGNoIChtYXJrcywgcG1hcmtzKSAtPlxuICAgIE1hdGNoIHsgcyA7IG1hcmtzOyBwbWFya3MgOyBncG9zID0gaW5mby5wb3NpdGlvbnM7IGdjb3VudCA9IHJlLmdyb3VwX2NvdW50fVxuICB8IEF1dG9tYXRhLkZhaWxlZCAtPiBGYWlsZWRcbiAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+XG4gICAgbGV0IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgPSBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oMCkgZWxzZSAwIGluXG4gICAgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfVxuXG5sZXQgbWtfcmUgfmluaXRpYWwgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzIH5ncm91cF9jb3VudCA9XG4gIHsgaW5pdGlhbCA7XG4gICAgaW5pdGlhbF9zdGF0ZXMgPSBbXTtcbiAgICBjb2xvcnM7XG4gICAgY29sb3JfcmVwcjtcbiAgICBuY29sb3I7XG4gICAgbG5sO1xuICAgIHRibCA9IEF1dG9tYXRhLmNyZWF0ZV93b3JraW5nX2FyZWEgKCk7XG4gICAgc3RhdGVzID0gQXV0b21hdGEuU3RhdGUuVGFibGUuY3JlYXRlIDk3O1xuICAgIGdyb3VwX25hbWVzO1xuICAgIGdyb3VwX2NvdW50IH1cblxuKCoqKiogQ2hhcmFjdGVyIHNldHMgKioqKilcblxubGV0IGNzZXEgYyBjJyA9IENzZXQuc2VxIChDaGFyLmNvZGUgYykgKENoYXIuY29kZSBjJylcbmxldCBjYWRkIGMgcyA9IENzZXQuYWRkIChDaGFyLmNvZGUgYykgc1xuXG5sZXQgdHJhbnNfc2V0IGNhY2hlIGNtIHMgPVxuICBtYXRjaCBDc2V0Lm9uZV9jaGFyIHMgd2l0aFxuICB8IFNvbWUgaSAtPiBDc2V0LmNzaW5nbGUgY20uW2ldXG4gIHwgTm9uZSAtPlxuICAgIGxldCB2ID0gKENzZXQuaGFzaF9yZWMgcywgcykgaW5cbiAgICB0cnlcbiAgICAgIENzZXQuQ1NldE1hcC5maW5kIHYgIWNhY2hlXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBsID1cbiAgICAgICAgQ3NldC5mb2xkX3JpZ2h0XG4gICAgICAgICAgc1xuICAgICAgICAgIH5mOihmdW4gKGksIGopIGwgLT4gQ3NldC51bmlvbiAoY3NlcSBjbS5baV0gY20uW2pdKSBsKVxuICAgICAgICAgIH5pbml0OkNzZXQuZW1wdHlcbiAgICAgIGluXG4gICAgICBjYWNoZSA6PSBDc2V0LkNTZXRNYXAuYWRkIHYgbCAhY2FjaGU7XG4gICAgICBsXG5cbigqKioqKVxuXG50eXBlIHJlZ2V4cCA9XG4gICAgU2V0IG9mIENzZXQudFxuICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG5tb2R1bGUgVmlldyA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWdleHAgPVxuICAgICAgU2V0IG9mIENzZXQudFxuICAgIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICAgIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICAgIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICAgIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG4gIGxldCB2aWV3IHQgPSB0XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgdCA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgdmFyIHMgcmUgPSBzZXhwIGZtdCBzIHBwIHJlIGluXG4gIGxldCBzZXEgcyByZWwgPSBzZXhwIGZtdCBzIChsaXN0IHBwKSByZWwgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2V0IHMgLT4gIHNleHAgZm10IFwiU2V0XCIgQ3NldC5wcCBzXG4gIHwgU2VxdWVuY2Ugc3EgLT4gc2VxIFwiU2VxdWVuY2VcIiBzcVxuICB8IEFsdGVybmF0aXZlIGFsdCAtPiBzZXEgXCJBbHRlcm5hdGl2ZVwiIGFsdFxuICB8IFJlcGVhdCAocmUsIHN0YXJ0LCBzdG9wKSAtPlxuICAgIGxldCBwcCcgZm10ICgpID0gZnByaW50ZiBmbXQgXCIlYUAgJWQlYVwiIHBwIHJlICAgc3RhcnQgICBvcHRpbnQgc3RvcCBpblxuICAgIHNleHAgZm10IFwiUmVwZWF0XCIgcHAnICgpXG4gIHwgQmVnX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX2xpbmVcIlxuICB8IEVuZF9vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9saW5lXCJcbiAgfCBCZWdfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfd29yZFwiXG4gIHwgRW5kX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3dvcmRcIlxuICB8IE5vdF9ib3VuZCAgICAgICAgLT4gc3RyIGZtdCBcIk5vdF9ib3VuZFwiXG4gIHwgQmVnX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3N0clwiXG4gIHwgRW5kX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3N0clwiXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPiBzdHIgZm10IFwiTGFzdF9lbmRfb2ZfbGluZVwiXG4gIHwgU3RhcnQgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RhcnRcIlxuICB8IFN0b3AgICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0b3BcIlxuICB8IFNlbSAoc2VtLCByZSkgICAgLT5cbiAgICBzZXhwIGZtdCBcIlNlbVwiIChwYWlyIEF1dG9tYXRhLnBwX3NlbSBwcCkgKHNlbSwgcmUpXG4gIHwgU2VtX2dyZWVkeSAoaywgcmUpIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1fZ3JlZWR5XCIgKHBhaXIgQXV0b21hdGEucHBfcmVwX2tpbmQgcHApIChrLCByZSlcbiAgfCBHcm91cCAoTm9uZSwgYykgICAtPiB2YXIgXCJHcm91cFwiIGNcbiAgfCBHcm91cCAoU29tZSBuLCBjKSAtPiBzZXhwIGZtdCBcIk5hbWVkX2dyb3VwXCIgKHBhaXIgc3RyIHBwKSAobiwgYylcbiAgfCBOb19ncm91cCBjICAgICAtPiB2YXIgXCJOb19ncm91cFwiIGNcbiAgfCBOZXN0IGMgICAgICAgICAtPiB2YXIgXCJOZXN0XCIgY1xuICB8IENhc2UgYyAgICAgICAgIC0+IHZhciBcIkNhc2VcIiBjXG4gIHwgTm9fY2FzZSBjICAgICAgLT4gdmFyIFwiTm9fY2FzZVwiIGNcbiAgfCBJbnRlcnNlY3Rpb24gYyAtPiBzZXEgXCJJbnRlcnNlY3Rpb25cIiBjXG4gIHwgQ29tcGxlbWVudCBjICAgLT4gc2VxIFwiQ29tcGxlbWVudFwiIGNcbiAgfCBEaWZmZXJlbmNlIChhLCBiKSAtPiBzZXhwIGZtdCBcIkRpZmZlcmVuY2VcIiAocGFpciBwcCBwcCkgKGEsIGIpXG4gIHwgUG1hcmsgKG0sIHIpICAgICAgLT4gc2V4cCBmbXQgXCJQbWFya1wiIChwYWlyIFBtYXJrLnBwIHBwKSAobSwgcilcblxubGV0IHJlYyBpc19jaGFyc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgXyAtPlxuICAgIHRydWVcbiAgfCBBbHRlcm5hdGl2ZSBsIHwgSW50ZXJzZWN0aW9uIGwgfCBDb21wbGVtZW50IGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgaXNfY2hhcnNldCBsXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgaXNfY2hhcnNldCByICYmIGlzX2NoYXJzZXQgcidcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgfCBOb19ncm91cCByIHwgQ2FzZSByIHwgTm9fY2FzZSByIC0+XG4gICAgaXNfY2hhcnNldCByXG4gIHwgU2VxdWVuY2UgXyB8IFJlcGVhdCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IE5vdF9ib3VuZCB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBHcm91cCBfIHwgTmVzdCBfIHwgUG1hcmsgKF8sXyktPlxuICAgIGZhbHNlXG5cbigqWFhYIFVzZSBhIGJldHRlciBhbGdvcml0aG0gYWxsb3dpbmcgbm9uLWNvbnRpZ3VvdXMgcmVnaW9ucz8gKilcblxubGV0IGN1cHBlciA9XG4gIENzZXQudW5pb24gKGNzZXEgJ0EnICdaJylcbiAgICAoQ3NldC51bmlvbiAoY3NlcSAnXFwxOTInICdcXDIxNCcpIChjc2VxICdcXDIxNicgJ1xcMjIyJykpXG5sZXQgY2xvd2VyID0gQ3NldC5vZmZzZXQgMzIgY3VwcGVyXG5sZXQgY2FscGhhID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGNhZGQgWydcXDE3MCc7ICdcXDE4MSc7ICdcXDE4Nic7ICdcXDIyMyc7ICdcXDI1NSddXG4gICAgKENzZXQudW5pb24gY2xvd2VyIGN1cHBlcilcbmxldCBjZGlnaXQgPSBjc2VxICcwJyAnOSdcbmxldCBjYWxudW0gPSBDc2V0LnVuaW9uIGNhbHBoYSBjZGlnaXRcbmxldCBjd29yZCA9IGNhZGQgJ18nIGNhbG51bVxuXG5sZXQgY29sb3JpemUgYyByZWdleHAgPVxuICBsZXQgbG5sID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgY29sb3JpemUgcmVnZXhwID1cbiAgICBtYXRjaCByZWdleHAgd2l0aFxuICAgICAgU2V0IHMgICAgICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgcyBjXG4gICAgfCBTZXF1ZW5jZSBsICAgICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBBbHRlcm5hdGl2ZSBsICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBSZXBlYXQgKHIsIF8sIF8pICAgICAgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgLT4gQ29sb3JfbWFwLnNwbGl0IChDc2V0LmNzaW5nbGUgJ1xcbicpIGNcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZCAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IGN3b3JkIGNcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBTdGFydCB8IFN0b3AgICAgICAgICAgICAgIC0+ICgpXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lICAgICAgICAgIC0+IGxubCA6PSB0cnVlXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKVxuICAgIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByIHwgUG1hcmsgKF8scikgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IENhc2UgXyB8IE5vX2Nhc2UgX1xuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSBfICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgY29sb3JpemUgcmVnZXhwO1xuICAhbG5sXG5cbigqKioqIENvbXBpbGF0aW9uICoqKiopXG5cbmxldCByZWMgZXF1YWwgeDEgeDIgPVxuICBtYXRjaCB4MSwgeDIgd2l0aFxuICAgIFNldCBzMSwgU2V0IHMyIC0+XG4gICAgczEgPSBzMlxuICB8IFNlcXVlbmNlIGwxLCBTZXF1ZW5jZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBBbHRlcm5hdGl2ZSBsMSwgQWx0ZXJuYXRpdmUgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgUmVwZWF0ICh4MScsIGkxLCBqMSksIFJlcGVhdCAoeDInLCBpMiwgajIpIC0+XG4gICAgaTEgPSBpMiAmJiBqMSA9IGoyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBCZWdfb2ZfbGluZSwgQmVnX29mX2xpbmVcbiAgfCBFbmRfb2ZfbGluZSwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCwgQmVnX29mX3dvcmRcbiAgfCBFbmRfb2Zfd29yZCwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQsIE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIsIEJlZ19vZl9zdHJcbiAgfCBFbmRfb2Zfc3RyLCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSwgTGFzdF9lbmRfb2ZfbGluZVxuICB8IFN0YXJ0LCBTdGFydFxuICB8IFN0b3AsIFN0b3AgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChzZW0xLCB4MScpLCBTZW0gKHNlbTIsIHgyJykgLT5cbiAgICBzZW0xID0gc2VtMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgU2VtX2dyZWVkeSAoazEsIHgxJyksIFNlbV9ncmVlZHkgKGsyLCB4MicpIC0+XG4gICAgazEgPSBrMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgR3JvdXAgXywgR3JvdXAgXyAtPiAoKiBEbyBub3QgbWVyZ2UgZ3JvdXBzISAqKVxuICAgIGZhbHNlXG4gIHwgTm9fZ3JvdXAgeDEnLCBOb19ncm91cCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTmVzdCB4MScsIE5lc3QgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IENhc2UgeDEnLCBDYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOb19jYXNlIHgxJywgTm9fY2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgSW50ZXJzZWN0aW9uIGwxLCBJbnRlcnNlY3Rpb24gbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQ29tcGxlbWVudCBsMSwgQ29tcGxlbWVudCBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBEaWZmZXJlbmNlICh4MScsIHgxJycpLCBEaWZmZXJlbmNlICh4MicsIHgyJycpIC0+XG4gICAgZXF1YWwgeDEnIHgyJyAmJiBlcXVhbCB4MScnIHgyJydcbiAgfCBQbWFyayAobTEsIHIxKSwgUG1hcmsgKG0yLCByMikgLT5cbiAgICBQbWFyay5lcXVhbCBtMSBtMiAmJiBlcXVhbCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5hbmQgZXFfbGlzdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgW10sIFtdIC0+XG4gICAgdHJ1ZVxuICB8IHgxIDo6IHIxLCB4MiA6OiByMiAtPlxuICAgIGVxdWFsIHgxIHgyICYmIGVxX2xpc3QgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxubGV0IHNlcXVlbmNlID0gZnVuY3Rpb25cbiAgfCBbeF0gLT4geFxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCByZWMgbWVyZ2Vfc2VxdWVuY2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgQWx0ZXJuYXRpdmUgbCcgOjogciAtPlxuICAgIG1lcmdlX3NlcXVlbmNlcyAobCcgQCByKVxuICB8IFNlcXVlbmNlICh4IDo6IHkpIDo6IHIgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgciB3aXRoXG4gICAgICAgIFNlcXVlbmNlICh4JyA6OiB5JykgOjogcicgd2hlbiBlcXVhbCB4IHgnIC0+XG4gICAgICAgIFNlcXVlbmNlIFt4OyBBbHRlcm5hdGl2ZSBbc2VxdWVuY2UgeTsgc2VxdWVuY2UgeSddXSA6OiByJ1xuICAgICAgfCByJyAtPlxuICAgICAgICBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByJ1xuICAgIGVuZFxuICB8IHggOjogciAtPlxuICAgIHggOjogbWVyZ2Vfc2VxdWVuY2VzIHJcblxubW9kdWxlIEEgPSBBdXRvbWF0YVxuXG5sZXQgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyID1cbiAgbWF0Y2gga2luZCwga2luZCcgd2l0aFxuICAgIGBGaXJzdCwgYEZpcnN0IC0+IGNyXG4gIHwgYEZpcnN0LCBrICAgICAgIC0+IEEuc2VxIGlkcyBrIGNyIChBLmVwcyBpZHMpXG4gIHwgIF8gICAgICAgICAgICAgICAtPiBjclxuXG4oKiBYWFggc2hvdWxkIHByb2JhYmx5IGNvbXB1dGUgYSBjYXRlZ29yeSBtYXNrICopXG5sZXQgcmVjIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIChBLmNzdCBpZHMgKHRyYW5zX3NldCBjYWNoZSBjIHMpLCBraW5kKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICAodHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgbCwga2luZClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIGwgd2l0aFxuICAgICAgICBbciddIC0+XG4gICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciwga2luZClcbiAgICAgIHwgbWVyZ2VkX3NlcXVlbmNlcyAtPlxuICAgICAgICAoQS5hbHQgaWRzXG4gICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAoZnVuIHInIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHlcbiAgICAgICAgICAgICAgICAgICAgIHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgICAgICAgICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcilcbiAgICAgICAgICAgICAgbWVyZ2VkX3NlcXVlbmNlcyksXG4gICAgICAgICBraW5kKVxuICAgIGVuZFxuICB8IFJlcGVhdCAocicsIGksIGopIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgbGV0IHJlbSA9XG4gICAgICBtYXRjaCBqIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICBBLnJlcCBpZHMgZ3JlZWR5IGtpbmQnIGNyXG4gICAgICB8IFNvbWUgaiAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggZ3JlZWR5IHdpdGhcbiAgICAgICAgICAgIGBHcmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0Euc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW07IEEuZXBzIGlkc11cbiAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLmVwcyBpZHM7IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKGogLSBpKSBmIChBLmVwcyBpZHMpXG4gICAgaW5cbiAgICAoaXRlciBpIChmdW4gcmVtIC0+IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW0pIHJlbSwga2luZClcbiAgfCBCZWdfb2ZfbGluZSAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBFbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgQmVnX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlciksXG4gICAgIGtpbmQpXG4gIHwgRW5kX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSksXG4gICAgIGtpbmQpXG4gIHwgTm90X2JvdW5kIC0+XG4gICAgKEEuYWx0IGlkcyBbQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKTtcbiAgICAgICAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKV0sXG4gICAgIGtpbmQpXG4gIHwgQmVnX29mX3N0ciAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IEVuZF9vZl9zdHIgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbGFzdG5ld2xpbmUpLCBraW5kKVxuICB8IFN0YXJ0IC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTdG9wIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU2VtIChraW5kJywgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQnIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kJyBraW5kJycgY3IsXG4gICAgIGtpbmQnKVxuICB8IFNlbV9ncmVlZHkgKGdyZWVkeScsIHInKSAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5JyBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IEdyb3VwIChuLCByJykgLT5cbiAgICBpZiBpZ25fZ3JvdXAgdGhlblxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcCA9ICFwb3MgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lcyA6PSAobmFtZSwgcCAvIDIpIDo6ICFuYW1lc1xuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgIGluXG4gICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEubWFyayBpZHMgcCkgKFxuICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3QgY3IgKEEubWFyayBpZHMgKHAgKyAxKSkpLFxuICAgICAgIGtpbmQnKVxuICB8IE5vX2dyb3VwIHInIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIHRydWUgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgTmVzdCByJyAtPlxuICAgIGxldCBiID0gIXBvcyBpblxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGluXG4gICAgbGV0IGUgPSAhcG9zIC0gMSBpblxuICAgIGlmIGUgPCBiIHRoZW5cbiAgICAgIChjciwga2luZCcpXG4gICAgZWxzZVxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEuZXJhc2UgaWRzIGIgZSkgY3IsIGtpbmQnKVxuICB8IERpZmZlcmVuY2UgXyB8IENvbXBsZW1lbnQgXyB8IEludGVyc2VjdGlvbiBfIHwgTm9fY2FzZSBfIHwgQ2FzZSBfIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgUG1hcmsgKGksIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLnBtYXJrIGlkcyBpKSBjciwga2luZCcpXG5cbmFuZCB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBBLmVwcyBpZHNcbiAgfCBbcl0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3InXG4gIHwgciA6OiByZW0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBsZXQgY3InJyA9XG4gICAgICB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByZW0gaW5cbiAgICBpZiBBLmlzX2VwcyBjcicnIHRoZW5cbiAgICAgIGNyJ1xuICAgIGVsc2UgaWYgQS5pc19lcHMgY3InIHRoZW5cbiAgICAgIGNyJydcbiAgICBlbHNlXG4gICAgICBBLnNlcSBpZHMga2luZCcgY3InIGNyJydcblxuKCoqKiogQ2FzZSAqKioqKVxuXG5sZXQgY2FzZV9pbnNlbnMgcyA9XG4gIENzZXQudW5pb24gcyAoQ3NldC51bmlvbiAoQ3NldC5vZmZzZXQgMzIgKENzZXQuaW50ZXIgcyBjdXBwZXIpKVxuICAgICAgICAgICAgICAgICAgKENzZXQub2Zmc2V0ICgtMzIpIChDc2V0LmludGVyIHMgY2xvd2VyKSkpXG5cbmxldCBhc19zZXQgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+IHNcbiAgfCBfICAgICAtPiBhc3NlcnQgZmFsc2VcblxuKCogWFhYIFNob3VsZCBzcGxpdCBhbHRlcm5hdGl2ZXMgaW50byAoMSkgY2hhcnNldHMgYW5kICgyKSBtb3JlXG4gICBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGFsdGVybmF0aXZlIHNob3VsZCB0aGVyZWZvcmUgcHJvYmFibHlcbiAgIGJlIGZsYXR0ZW4gaGVyZSAqKVxubGV0IHJlYyBoYW5kbGVfY2FzZSBpZ25fY2FzZSA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICBTZXQgKGlmIGlnbl9jYXNlIHRoZW4gY2FzZV9pbnNlbnMgcyBlbHNlIHMpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIFNlcXVlbmNlIChMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbCBpblxuICAgIGlmIGlzX2NoYXJzZXQgKEFsdGVybmF0aXZlIGwnKSB0aGVuXG4gICAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKSBDc2V0LmVtcHR5IGwnKVxuICAgIGVsc2VcbiAgICAgIEFsdGVybmF0aXZlIGwnXG4gIHwgUmVwZWF0IChyLCBpLCBqKSAtPlxuICAgIFJlcGVhdCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciwgaSwgailcbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcCBhcyByIC0+XG4gICAgclxuICB8IFNlbSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtIChrLCByJylcbiAgfCBTZW1fZ3JlZWR5IChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW1fZ3JlZWR5IChrLCByJylcbiAgfCBHcm91cCAobiwgcikgLT5cbiAgICBHcm91cCAobiwgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcbiAgfCBOb19ncm91cCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5vX2dyb3VwIHInXG4gIHwgTmVzdCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5lc3QgcidcbiAgfCBDYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSBmYWxzZSByXG4gIHwgTm9fY2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgdHJ1ZSByXG4gIHwgSW50ZXJzZWN0aW9uIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC5pbnRlciBzIChhc19zZXQgcikpIENzZXQuY2FueSBsJylcbiAgfCBDb21wbGVtZW50IGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoQ3NldC5kaWZmIENzZXQuY2FueVxuICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpXG4gICAgICAgICAgICAgIENzZXQuZW1wdHkgbCcpKVxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIFNldCAoQ3NldC5pbnRlciAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSlcbiAgICAgICAgICAgKENzZXQuZGlmZiBDc2V0LmNhbnkgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcicpKSkpXG4gIHwgUG1hcmsgKGkscikgLT4gUG1hcmsgKGksaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcblxuKCoqKiopXG5cbmxldCBjb21waWxlXzEgcmVnZXhwID1cbiAgbGV0IHJlZ2V4cCA9IGhhbmRsZV9jYXNlIGZhbHNlIHJlZ2V4cCBpblxuICBsZXQgYyA9IENvbG9yX21hcC5tYWtlICgpIGluXG4gIGxldCBuZWVkX2xubCA9IGNvbG9yaXplIGMgcmVnZXhwIGluXG4gIGxldCAoY29sb3JzLCBjb2xvcl9yZXByLCBuY29sb3IpID0gQ29sb3JfbWFwLmZsYXR0ZW4gYyBpblxuICBsZXQgbG5sID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgZWxzZSAtMSBpblxuICBsZXQgbmNvbG9yID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgKyAxIGVsc2UgbmNvbG9yIGluXG4gIGxldCBpZHMgPSBBLmNyZWF0ZV9pZHMgKCkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCBuYW1lcyA9IHJlZiBbXSBpblxuICBsZXQgKHIsIGtpbmQpID1cbiAgICB0cmFuc2xhdGUgaWRzXG4gICAgICBgRmlyc3QgZmFsc2UgZmFsc2UgYEdyZWVkeSBwb3MgbmFtZXMgKHJlZiBDc2V0LkNTZXRNYXAuZW1wdHkpIGNvbG9ycyByZWdleHAgaW5cbiAgbGV0IHIgPSBlbmZvcmNlX2tpbmQgaWRzIGBGaXJzdCBraW5kIHIgaW5cbiAgKCpGb3JtYXQuZXByaW50ZiBcIjwlZCAlZD5ALlwiICFpZHMgbmNvbDsqKVxuICBta19yZSB+aW5pdGlhbDpyIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lczooTGlzdC5yZXYgIW5hbWVzKSB+Z3JvdXBfY291bnQ6KCFwb3MgLyAyKVxuXG4oKioqKilcblxubGV0IHJlYyBhbmNob3JlZCA9IGZ1bmN0aW9uXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIExpc3QuZXhpc3RzIGFuY2hvcmVkIGxcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGFuY2hvcmVkIGxcbiAgfCBSZXBlYXQgKHIsIGksIF8pIC0+XG4gICAgaSA+IDAgJiYgYW5jaG9yZWQgclxuICB8IFNldCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0b3BcbiAgfCBJbnRlcnNlY3Rpb24gXyB8IENvbXBsZW1lbnQgXyB8IERpZmZlcmVuY2UgXyAtPlxuICAgIGZhbHNlXG4gIHwgQmVnX29mX3N0ciB8IFN0YXJ0IC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKSB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHIgfCBOZXN0IHJcbiAgfCBDYXNlIHIgfCBOb19jYXNlIHIgfCBQbWFyayAoXywgcikgLT5cbiAgICBhbmNob3JlZCByXG5cbigqKioqKVxuXG50eXBlIHQgPSByZWdleHBcblxubGV0IHN0ciBzID1cbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSBTZXQgKENzZXQuY3NpbmdsZSBzLltpXSkgOjogIWxcbiAgZG9uZTtcbiAgU2VxdWVuY2UgIWxcbmxldCBjaGFyIGMgPSBTZXQgKENzZXQuY3NpbmdsZSBjKVxuXG5sZXQgYWx0ID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBBbHRlcm5hdGl2ZSBsXG5sZXQgc2VxID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCBlbXB0eSA9IGFsdCBbXVxubGV0IGVwc2lsb24gPSBzZXEgW11cbmxldCByZXBuIHIgaSBqID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIjtcbiAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIlxuICAgIHwgXyAtPiAoKVxuICBlbmQ7XG4gIFJlcGVhdCAociwgaSwgailcbmxldCByZXAgciA9IHJlcG4gciAwIE5vbmVcbmxldCByZXAxIHIgPSByZXBuIHIgMSBOb25lXG5sZXQgb3B0IHIgPSByZXBuIHIgMCAoU29tZSAxKVxubGV0IGJvbCA9IEJlZ19vZl9saW5lXG5sZXQgZW9sID0gRW5kX29mX2xpbmVcbmxldCBib3cgPSBCZWdfb2Zfd29yZFxubGV0IGVvdyA9IEVuZF9vZl93b3JkXG5sZXQgd29yZCByID0gc2VxIFtib3c7IHI7IGVvd11cbmxldCBub3RfYm91bmRhcnkgPSBOb3RfYm91bmRcbmxldCBib3MgPSBCZWdfb2Zfc3RyXG5sZXQgZW9zID0gRW5kX29mX3N0clxubGV0IHdob2xlX3N0cmluZyByID0gc2VxIFtib3M7IHI7IGVvc11cbmxldCBsZW9sID0gTGFzdF9lbmRfb2ZfbGluZVxubGV0IHN0YXJ0ID0gU3RhcnRcbmxldCBzdG9wID0gU3RvcFxubGV0IGxvbmdlc3QgciA9IFNlbSAoYExvbmdlc3QsIHIpXG5sZXQgc2hvcnRlc3QgciA9IFNlbSAoYFNob3J0ZXN0LCByKVxubGV0IGZpcnN0IHIgPSBTZW0gKGBGaXJzdCwgcilcbmxldCBncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBHcmVlZHksIHIpXG5sZXQgbm9uX2dyZWVkeSByID0gU2VtX2dyZWVkeSAoYE5vbl9ncmVlZHksIHIpXG5sZXQgZ3JvdXAgP25hbWUgciA9IEdyb3VwIChuYW1lLCByKVxubGV0IG5vX2dyb3VwIHIgPSBOb19ncm91cCByXG5sZXQgbmVzdCByID0gTmVzdCByXG5sZXQgbWFyayByID0gbGV0IGkgPSBQbWFyay5nZW4gKCkgaW4gKGksUG1hcmsgKGkscikpXG5cbmxldCBzZXQgc3RyID1cbiAgbGV0IHMgPSByZWYgQ3NldC5lbXB0eSBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgcyA6PSBDc2V0LnVuaW9uIChDc2V0LmNzaW5nbGUgc3RyLltpXSkgIXNcbiAgZG9uZTtcbiAgU2V0ICFzXG5cbmxldCByZyBjIGMnID0gU2V0IChjc2VxIGMgYycpXG5cbmxldCBpbnRlciBsID1cbiAgbGV0IHIgPSBJbnRlcnNlY3Rpb24gbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuaW50ZXJcIlxuXG5sZXQgY29tcGwgbCA9XG4gIGxldCByID0gQ29tcGxlbWVudCBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5jb21wbFwiXG5cbmxldCBkaWZmIHIgcicgPVxuICBsZXQgcicnID0gRGlmZmVyZW5jZSAociwgcicpIGluXG4gIGlmIGlzX2NoYXJzZXQgcicnIHRoZW5cbiAgICByJydcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuZGlmZlwiXG5cbmxldCBhbnkgPSBTZXQgQ3NldC5jYW55XG5sZXQgbm90bmwgPSBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnkgKENzZXQuY3NpbmdsZSAnXFxuJykpXG5cbmxldCBsb3dlciA9IGFsdCBbcmcgJ2EnICd6JzsgY2hhciAnXFwxODEnOyByZyAnXFwyMjMnICdcXDI0Nic7IHJnICdcXDI0OCcgJ1xcMjU1J11cbmxldCB1cHBlciA9IGFsdCBbcmcgJ0EnICdaJzsgcmcgJ1xcMTkyJyAnXFwyMTQnOyByZyAnXFwyMTYnICdcXDIyMiddXG5sZXQgYWxwaGEgPSBhbHQgW2xvd2VyOyB1cHBlcjsgY2hhciAnXFwxNzAnOyBjaGFyICdcXDE4NiddXG5sZXQgZGlnaXQgPSByZyAnMCcgJzknXG5sZXQgYWxudW0gPSBhbHQgW2FscGhhOyBkaWdpdF1cbmxldCB3b3JkYyA9IGFsdCBbYWxudW07IGNoYXIgJ18nXVxubGV0IGFzY2lpID0gcmcgJ1xcMDAwJyAnXFwxMjcnXG5sZXQgYmxhbmsgPSBzZXQgXCJcXHQgXCJcbmxldCBjbnRybCA9IGFsdCBbcmcgJ1xcMDAwJyAnXFwwMzEnOyByZyAnXFwxMjcnICdcXDE1OSddXG5sZXQgZ3JhcGggPSBhbHQgW3JnICdcXDAzMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHByaW50ID0gYWx0IFtyZyAnXFwwMzInICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwdW5jdCA9XG4gIGFsdCBbcmcgJ1xcMDMzJyAnXFwwNDcnOyByZyAnXFwwNTgnICdcXDA2NCc7IHJnICdcXDA5MScgJ1xcMDk2JztcbiAgICAgICByZyAnXFwxMjMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMTY5JzsgcmcgJ1xcMTcxJyAnXFwxODAnO1xuICAgICAgIHJnICdcXDE4MicgJ1xcMTg1JzsgcmcgJ1xcMTg3JyAnXFwxOTEnOyBjaGFyICdcXDIxNSc7IGNoYXIgJ1xcMjQ3J11cbmxldCBzcGFjZSA9IGFsdCBbY2hhciAnICc7IHJnICdcXDAwOScgJ1xcMDEzJ11cbmxldCB4ZGlnaXQgPSBhbHQgW2RpZ2l0OyByZyAnYScgJ2YnOyByZyAnQScgJ0YnXVxuXG5sZXQgY2FzZSByID0gQ2FzZSByXG5sZXQgbm9fY2FzZSByID0gTm9fY2FzZSByXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZSByID1cbiAgY29tcGlsZV8xIChcbiAgICBpZiBhbmNob3JlZCByIHRoZW5cbiAgICAgIGdyb3VwIHJcbiAgICBlbHNlXG4gICAgICBzZXEgW3Nob3J0ZXN0IChyZXAgYW55KTsgZ3JvdXAgcl1cbiAgKVxuXG5sZXQgZXhlY19pbnRlcm5hbCBuYW1lID8ocG9zPTApID8obGVuID0gLTEpIH5wYXJ0aWFsIH5ncm91cHMgcmUgcyA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgLTEgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBuYW1lO1xuICBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlblxuXG5sZXQgZXhlYyA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjXCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZXhlY19vcHQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY19vcHRcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlXG4gICAgICAgICAgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IFNvbWUgc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IE5vbmVcblxubGV0IGV4ZWNwID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOmZhbHNlIFwiUmUuZXhlY3BcIiA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggX3N1YnN0ciAtPiB0cnVlXG4gIHwgXyAgICAgICAgICAgICAtPiBmYWxzZVxuXG5sZXQgZXhlY19wYXJ0aWFsID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfIC0+IGBGdWxsXG4gIHwgUnVubmluZyBfIC0+IGBQYXJ0aWFsXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubGV0IGV4ZWNfcGFydGlhbF9kZXRhaWxlZCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxfZGV0YWlsZWRcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBncm91cCAtPiBgRnVsbCBncm91cFxuICB8IFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH0gLT4gYFBhcnRpYWwgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZVxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbm1vZHVsZSBNYXJrID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gUG1hcmsudFxuXG4gIGxldCB0ZXN0IChnIDogR3JvdXAudCkgcCA9XG4gICAgUG1hcmsuU2V0Lm1lbSBwIGcucG1hcmtzXG5cbiAgbGV0IGFsbCAoZyA6IEdyb3VwLnQpID0gZy5wbWFya3NcblxuICBtb2R1bGUgU2V0ID0gUG1hcmsuU2V0XG5cbiAgbGV0IGVxdWFsID0gUG1hcmsuZXF1YWxcblxuICBsZXQgY29tcGFyZSA9IFBtYXJrLmNvbXBhcmVcblxuZW5kXG5cbnR5cGUgc3BsaXRfdG9rZW4gPVxuICBbIGBUZXh0IG9mIHN0cmluZ1xuICB8IGBEZWxpbSBvZiBHcm91cC50XG4gIF1cblxubW9kdWxlIFJzZXEgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAoKiBpbmRleCBvZiB0aGUgZmlyc3QgcG9zaXRpb24gd2UgZG8gbm90IGNvbnNpZGVyLlxuICAgICAgICFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQgKilcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGl0ZXJhdGUgb24gbWF0Y2hlcy4gV2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBuZXh0XG4gICAgICAgb25lIGp1c3QgYWZ0ZXIgaXRzIGVuZCAqKVxuICAgIGxldCByZWMgYXV4IHBvcyAoKSA9XG4gICAgICBpZiBwb3MgPj0gbGltaXRcbiAgICAgIHRoZW4gU2VxLk5pbCAoKiBubyBtb3JlIG1hdGNoZXMgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzXG4gICAgICAgICAgICAgICAgfnBvcyB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoc3Vic3RyLCBhdXggcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgX1xuICAgICAgICB8IEZhaWxlZCAtPiBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggcG9zXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBhbGwgP3BvcyA/bGVuIHJlIHNcbiAgICB8PiBTZXEubWFwIChmdW4gc3ViIC0+IEdyb3VwLmdldCBzdWIgMClcblxuICBsZXQgc3BsaXRfZnVsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpOiBzdGFydCBvZiBkZWxpbWl0ZWQgc3RyaW5nXG4gICAgICAgcG9zOiBmaXJzdCBwb3NpdGlvbiBhZnRlciBsYXN0IG1hdGNoIG9mIFtyZV1cbiAgICAgICBsaW1pdDogZmlyc3QgaW5kZXggd2UgaWdub3JlICghcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50KSAqKVxuICAgIGxldCBwb3MwID0gcG9zIGluXG4gICAgbGV0IHJlYyBhdXggc3RhdGUgaSBwb3MgKCkgPSBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IGBJZGxlIHdoZW4gcG9zID49IGxpbWl0IC0+XG4gICAgICAgIGlmIGkgPCBsaW1pdCB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgc3ViLCBhdXggc3RhdGUgKGkrMSkgcG9zKVxuICAgICAgICApIGVsc2UgU2VxLk5pbFxuICAgICAgfCBgSWRsZSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIGxldCBvbGRfaSA9IGkgaW5cbiAgICAgICAgICBsZXQgaSA9IHAyIGluXG4gICAgICAgICAgaWYgcDEgPiBwb3MwIHRoZW4gKFxuICAgICAgICAgICAgKCogc3RyaW5nIGRvZXMgbm90IHN0YXJ0IGJ5IGEgZGVsaW1pdGVyICopXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBvbGRfaSAocDEgLSBvbGRfaSkgaW5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGBZaWVsZCAoYERlbGltIHN1YnN0cikgaW5cbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgICAgKSBlbHNlIFNlcS5Db25zIChgRGVsaW0gc3Vic3RyLCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfIC0+IFNlcS5OaWxcbiAgICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgICBpZiBpIDwgbGltaXRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICAgICgqIHlpZWxkIGxhc3Qgc3RyaW5nICopXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGxpbWl0IHBvcylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgZW5kXG4gICAgICB8IGBZaWVsZCB4IC0+XG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggYElkbGUgaSBwb3MpXG4gICAgaW5cbiAgICBhdXggYElkbGUgcG9zIHBvc1xuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGxldCBzZXEgPSBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgc2VxICgpID0gbWF0Y2ggc2VxICgpICB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gU2VxLk5pbFxuICAgICAgfCBTZXEuQ29ucyAoYERlbGltIF8sIHRsKSAtPiBmaWx0ZXIgdGwgKClcbiAgICAgIHwgU2VxLkNvbnMgKGBUZXh0IHMsdGwpIC0+IFNlcS5Db25zIChzLCBmaWx0ZXIgdGwpXG4gICAgaW4gZmlsdGVyIHNlcVxuZW5kXG5cbm1vZHVsZSBSbGlzdCA9IHN0cnVjdFxuICBsZXQgbGlzdF9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgbGlzdCA9XG4gICAgU2VxLmZvbGRfbGVmdCAoZnVuIGwgeCAtPiB4IDo6IGwpIFtdIHMgfD4gTGlzdC5yZXZcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuZW5kXG5cbm1vZHVsZSBHZW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSBnZW4gPSB1bml0IC0+ICdhIG9wdGlvblxuICBsZXQgZ2VuX29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBnZW4gPVxuICAgIGxldCByID0gcmVmIHMgaW5cbiAgICBmdW4gKCkgLT4gbWF0Y2ggIXIgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICAgIHwgU2VxLkNvbnMgKHgsIHRsKSAtPlxuICAgICAgICByIDo9IHRsO1xuICAgICAgICBTb21lIHhcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcbmVuZFxuXG5sZXQgcmVwbGFjZSA/KHBvcz0wKSA/bGVuID8oYWxsPXRydWUpIHJlIH5mIHMgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgIHwgU29tZSBsIC0+XG4gICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgICAgIHBvcytsXG4gIGluXG4gICgqIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIHdyaXRlIHRoZSByZXN1bHQgKilcbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgKCogaXRlcmF0ZSBvbiBtYXRjaGVkIHN1YnN0cmluZ3MuICopXG4gIGxldCByZWMgaXRlciBwb3MgPVxuICAgIGlmIHBvcyA8IGxpbWl0XG4gICAgdGhlblxuICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3MgfmxlbjoobGltaXQtcG9zKSB3aXRoXG4gICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICgqIGFkZCBzdHJpbmcgYmV0d2VlbiBwcmV2aW91cyBtYXRjaCBhbmQgY3VycmVudCBtYXRjaCAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKHAxLXBvcyk7XG4gICAgICAgICgqIHdoYXQgc2hvdWxkIHdlIHJlcGxhY2UgdGhlIG1hdGNoZWQgZ3JvdXAgd2l0aD8gKilcbiAgICAgICAgbGV0IHJlcGxhY2luZyA9IGYgc3Vic3RyIGluXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiByZXBsYWNpbmc7XG4gICAgICAgIGlmIGFsbCB0aGVuXG4gICAgICAgICAgKCogaWYgd2UgbWF0Y2hlZCBhIG5vbi1jaGFyIGUuZy4gXiB3ZSBtdXN0IG1hbnVhbGx5IGFkdmFuY2UgYnkgMSAqKVxuICAgICAgICAgIGl0ZXIgKFxuICAgICAgICAgICAgaWYgcDE9cDIgdGhlbiAoXG4gICAgICAgICAgICAgICgqIGEgbm9uIGNoYXIgY291bGQgYmUgcGFzdCB0aGUgZW5kIG9mIHN0cmluZy4gZS5nLiAkICopXG4gICAgICAgICAgICAgIGlmIHAyIDwgbGltaXQgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmIHMuW3AyXTtcbiAgICAgICAgICAgICAgcDIrMVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHAyKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcDIgKGxpbWl0LXAyKVxuICAgICAgfCBSdW5uaW5nIF8gLT4gKClcbiAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAobGltaXQtcG9zKVxuICBpblxuICBpdGVyIHBvcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcmVwbGFjZV9zdHJpbmcgP3BvcyA/bGVuID9hbGwgcmUgfmJ5IHMgPVxuICByZXBsYWNlID9wb3MgP2xlbiA/YWxsIHJlIHMgfmY6KGZ1biBfIC0+IGJ5KVxuXG5sZXQgd2l0bmVzcyB0ID1cbiAgbGV0IHJlYyB3aXRuZXNzID0gZnVuY3Rpb25cbiAgICB8IFNldCBjIC0+IFN0cmluZy5tYWtlIDEgKENoYXIuY2hyIChDc2V0LnBpY2sgYykpXG4gICAgfCBTZXF1ZW5jZSB4cyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHdpdG5lc3MgeHMpXG4gICAgfCBBbHRlcm5hdGl2ZSAoeCA6OiBfKSAtPiB3aXRuZXNzIHhcbiAgICB8IEFsdGVybmF0aXZlIFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgUmVwZWF0IChyLCBmcm9tLCBfdG8pIC0+XG4gICAgICBsZXQgdyA9IHdpdG5lc3MgciBpblxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHcgKiBmcm9tKSBpblxuICAgICAgZm9yIF9pPTEgdG8gZnJvbSBkb1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHdcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgTm9fY2FzZSByIC0+IHdpdG5lc3MgclxuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSAoXywgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBHcm91cCAoXywgcilcbiAgICB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgclxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgUG1hcmsgKF8sIHIpXG4gICAgfCBDYXNlIHJcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpIC0+IHdpdG5lc3MgclxuICAgIHwgQmVnX29mX2xpbmVcbiAgICB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZFxuICAgIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZVxuICAgIHwgU3RhcnRcbiAgICB8IFN0b3BcbiAgICB8IEVuZF9vZl9zdHIgLT4gXCJcIiBpblxuICB3aXRuZXNzIChoYW5kbGVfY2FzZSBmYWxzZSB0KVxuXG5tb2R1bGUgU2VxID0gUnNlcVxubW9kdWxlIExpc3QgPSBSbGlzdFxubW9kdWxlIEdyb3VwID0gR3JvdXBcblxuKCoqIHsyIERlcHJlY2F0ZWQgZnVuY3Rpb25zfSAqKVxuXG5sZXQgc3BsaXRfZnVsbF9zZXEgPSBTZXEuc3BsaXRfZnVsbFxubGV0IHNwbGl0X3NlcSA9IFNlcS5zcGxpdFxubGV0IG1hdGNoZXNfc2VxID0gU2VxLm1hdGNoZXNcbmxldCBhbGxfc2VxID0gU2VxLmFsbFxuXG50eXBlICdhIGdlbiAgICAgICAgPSAnYSBHZW4uZ2VuXG5sZXQgYWxsX2dlbiAgICAgICAgPSBHZW4uYWxsXG5sZXQgbWF0Y2hlc19nZW4gICAgPSBHZW4ubWF0Y2hlc1xubGV0IHNwbGl0X2dlbiAgICAgID0gR2VuLnNwbGl0XG5sZXQgc3BsaXRfZnVsbF9nZW4gPSBHZW4uc3BsaXRfZnVsbFxuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcblxubGV0IGdldCA9IEdyb3VwLmdldFxubGV0IGdldF9vZnMgPSBHcm91cC5vZmZzZXRcbmxldCBnZXRfYWxsID0gR3JvdXAuYWxsXG5sZXQgZ2V0X2FsbF9vZnMgPSBHcm91cC5hbGxfb2Zmc2V0XG5sZXQgdGVzdCA9IEdyb3VwLnRlc3RcblxudHlwZSBtYXJraWQgPSBNYXJrLnRcblxubGV0IG1hcmtlZCA9IE1hcmsudGVzdFxubGV0IG1hcmtfc2V0ID0gTWFyay5hbGxcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqXG5JbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyOlxuLSBkb2VzIG5vdCBleGlzdHNcbi0gaXMgYSBsZXR0ZXJcbi0gaXMgbm90IGEgbGV0dGVyXG4tIGlzIGEgbmV3bGluZVxuLSBpcyBsYXN0IG5ld2xpbmVcblxuQmVnaW5uaW5nIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgbGluZTpcbi0gcHJldmlvdXMgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBidWZmZXI6XG4tIHByZXZpb3VzIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBidWZmZXJcbi0gY3VycmVudCBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgbGluZVxuLSBjdXJyZW50IGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuKilcblxuKCpcblJlcDogZSA9IFQsZSB8ICgpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSBjb21tYSAoc2hvcnRlc3QvbG9uZ2VzdC9maXJzdClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIHVuaW9uIChncmVlZHkvbm9uLWdyZWVkeSlcblxuQm91bmRlZCByZXBldGl0aW9uXG4gIGF7MCwzfSA9IChhLChhLGE/KT8pP1xuKilcblxudHlwZSBncm91cHMgPSBHcm91cC50XG5cbmluY2x1ZGUgUmxpc3RcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IHRlc3QyIGMgYycgPSAhaSArIDEgPCBsICYmIHMuWyFpXSA9IGMgJiYgcy5bIWkgKyAxXSA9IGMnIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdDIgYyBjJyA9IGxldCByID0gdGVzdDIgYyBjJyBpbiBpZiByIHRoZW4gaSA6PSAhaSArIDI7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQyICdcXFxcJyAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdDIgJ1xcXFwnICd8JyB8fCB0ZXN0MiAnXFxcXCcgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgUmUuYm9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBSZS5lb2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0MiAnXFxcXCcgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ2AnIHRoZW5cbiAgICAgICAgUmUuYm9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnXFwnJyB0aGVuXG4gICAgICAgIFJlLmVvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz0nIHRoZW5cbiAgICAgICAgUmUuc3RhcnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdiJyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnQicgdGhlblxuICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuXG4gICAgICAgIFJlLmJvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz4nIHRoZW5cbiAgICAgICAgUmUuZW93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAndycgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdXJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICdbJyB8ICddJyB8ICcuJyB8ICdeJyB8ICckJyB8ICdcXFxcJyBhcyBjIC0+XG4gICAgICAgICAgICBSZS5jaGFyIGNcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgYyAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgZ2V0ICgpXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG5sZXQgcmUgPyhjYXNlID0gdHJ1ZSkgcyA9IGxldCByID0gcGFyc2UgcyBpbiBpZiBjYXNlIHRoZW4gciBlbHNlIFJlLm5vX2Nhc2UgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KGNhc2UgPSB0cnVlKSBzID0gY29tcGlsZSAocmUgfmNhc2UgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKilcbigqICBsaW5raW5nIGV4Y2VwdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kaWZpZWQgYnkgSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyIGZvciBpbnRlZ3JhdGlvbiBpbiBSRSAqKVxuXG4oKiAkSWQ6IHJlX3N0ci5tbCx2IDEuMyAyMDAyLzA3LzAzIDE1OjQ3OjU0IHZvdWlsbG9uIEV4cCAkICopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxudHlwZSByZWdleHAgPVxuICB7IHJlOiBSZS50XG4gIDsgbXRjaDogUmUucmUgTGF6eS50XG4gIDsgc3JjaDogUmUucmUgTGF6eS50IH1cblxubGV0IGNvbXBpbGVfcmVnZXhwIHMgYyA9XG4gIGxldCByZSA9IEVtYWNzLnJlIH5jYXNlOihub3QgYykgcyBpblxuICB7IHJlXG4gIDsgbXRjaCA9IGxhenkgKFJlLmNvbXBpbGUgKFJlLnNlcSBbUmUuc3RhcnQ7IHJlXSkpXG4gIDsgc3JjaCA9IGxhenkgKFJlLmNvbXBpbGUgcmUpIH1cblxubGV0IHN0YXRlID0gcmVmIE5vbmVcblxubGV0IHN0cmluZ19tYXRjaCByZSBzIHAgPVxuICB0cnlcbiAgICBzdGF0ZSA6PSBTb21lIChSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBmYWxzZVxuXG5sZXQgc3RyaW5nX3BhcnRpYWxfbWF0Y2ggcmUgcyBwID1cbiAgbWF0Y2hcbiAgICBSZS5leGVjX3BhcnRpYWwgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHNcbiAgd2l0aFxuICAgIGBGdWxsICAgICAtPiBzdHJpbmdfbWF0Y2ggcmUgcyBwXG4gIHwgYFBhcnRpYWwgIC0+IHRydWVcbiAgfCBgTWlzbWF0Y2ggLT4gZmFsc2VcblxubGV0IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5zcmNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgZnN0IChSZS5Hcm91cC5vZmZzZXQgcmVzIDApXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBzZWFyY2hfYmFja3dhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBwXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBpZiBwID0gMCB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlXG4gICAgICBzZWFyY2hfYmFja3dhcmQgcmUgcyAocCAtIDEpXG5cbmxldCB2YWxpZF9ncm91cCBuID1cbiAgbiA+PSAwICYmIG4gPCAxMCAmJiAoXG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbSAtPiBuIDwgUmUuR3JvdXAubmJfZ3JvdXBzIG1cbiAgKVxuXG5sZXQgb2Zmc2V0X2dyb3VwIGkgPVxuICBtYXRjaCAhc3RhdGUgd2l0aFxuICB8IFNvbWUgbSAtPiBSZS5Hcm91cC5vZmZzZXQgbSBpXG4gIHwgTm9uZSAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZ3JvdXBfbGVuIGkgPVxuICB0cnlcbiAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIGkgaW5cbiAgICBlIC0gYlxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIDBcblxubGV0IHJlYyByZXBsX2xlbmd0aCByZXBsIHAgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBpZiByZXBsLltwXSA8PiAnXFxcXCcgdGhlblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIChxICsgMSkgbGVuXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHAgPSBwICsgMSBpblxuICAgICAgaWYgcCA9IGxlbiB0aGVuIGZhaWx3aXRoIFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCI7XG4gICAgICBsZXQgcSA9XG4gICAgICAgIG1hdGNoIHJlcGwuW3BdIHdpdGhcbiAgICAgICAgfCAnXFxcXCcgLT4gcSArIDFcbiAgICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gcSArIGdyb3VwX2xlbiAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgICB8IF8gLT4gcSArIDIgaW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSBxIGxlblxuICAgIGVuZFxuICBlbmQgZWxzZVxuICAgIHFcblxubGV0IHJlYyByZXBsYWNlIG9yaWcgcmVwbCBwIHJlcyBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGxldCBjID0gcmVwbC5bcF0gaW5cbiAgICBpZiBjIDw+ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBCeXRlcy5zZXQgcmVzIHEgYztcbiAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMSkgcmVzIChxICsgMSkgbGVuXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIHJlcGwuW3AgKyAxXSB3aXRoXG4gICAgICAgICdcXFxcJyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDEpIGxlblxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgbGV0IGQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBlIC0gYiBpblxuICAgICAgICAgICAgaWYgZCA+IDAgdGhlbiBTdHJpbmcuYmxpdCBvcmlnIGIgcmVzIHEgZDtcbiAgICAgICAgICAgIGRcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgMFxuICAgICAgICBpblxuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIGQpIGxlblxuICAgICAgfCBjIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIEJ5dGVzLnNldCByZXMgKHEgKyAxKSBjO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDIpIGxlblxuICAgIGVuZFxuICBlbmRcblxubGV0IHJlcGxhY2VtZW50X3RleHQgcmVwbCBvcmlnID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcmVwbCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChyZXBsX2xlbmd0aCByZXBsIDAgMCBsZW4pIGluXG4gIHJlcGxhY2Ugb3JpZyByZXBsIDAgcmVzIDAgKFN0cmluZy5sZW5ndGggcmVwbCk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHN0cmluZ19iZWZvcmUgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgZmlyc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgbGFzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgKFN0cmluZy5sZW5ndGggcyAtIG4pIG5cblxubGV0IHJlZ2V4cCBlID0gY29tcGlsZV9yZWdleHAgZSBmYWxzZVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBlID0gY29tcGlsZV9yZWdleHAgZSB0cnVlXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgZmFsc2VcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgdHJ1ZVxuXG5sZXQgZ3JvdXBfYmVnaW5uaW5nIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfYmVnaW5uaW5nXCI7XG4gIGxldCBwb3MgPSBmc3QgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IGdyb3VwX2VuZCBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2VuZFwiO1xuICBsZXQgcG9zID0gc25kIChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBtYXRjaGVkX2dyb3VwIG4gdHh0ID1cbiAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBuIGluXG4gIFN0cmluZy5zdWIgdHh0IGIgKGUgLSBiKVxuXG5sZXQgcmVwbGFjZV9tYXRjaGVkIHJlcGwgbWF0Y2hlZCA9IHJlcGxhY2VtZW50X3RleHQgcmVwbCBtYXRjaGVkXG5cbmxldCBtYXRjaF9iZWdpbm5pbmcgKCkgPSBncm91cF9iZWdpbm5pbmcgMFxuYW5kIG1hdGNoX2VuZCAoKSA9IGdyb3VwX2VuZCAwXG5hbmQgbWF0Y2hlZF9zdHJpbmcgdHh0ID0gbWF0Y2hlZF9ncm91cCAwIHR4dFxuXG5sZXQgc3Vic3RpdHV0ZV9maXJzdCBleHByIHJlcGxfZnVuIHRleHQgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IDAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW3N0cmluZ19iZWZvcmUgdGV4dCBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbF9mdW4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfYWZ0ZXIgdGV4dCAobWF0Y2hfZW5kICgpKV1cbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0ZXh0XG5cbmxldCBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIHJlcGxfZnVuIHRleHQgPVxuICBsZXQgcmVjIHJlcGxhY2UgYWNjdSBzdGFydCBsYXN0X3dhc19lbXB0eSA9XG4gICAgbGV0IHN0YXJ0cG9zID0gaWYgbGFzdF93YXNfZW1wdHkgdGhlbiBzdGFydCArIDEgZWxzZSBzdGFydCBpblxuICAgIGlmIHN0YXJ0cG9zID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCBzdGFydHBvcyB3aXRoXG4gICAgICB8IHBvcyAtPlxuICAgICAgICBsZXQgZW5kX3BvcyA9IG1hdGNoX2VuZCAoKSBpblxuICAgICAgICBsZXQgcmVwbF90ZXh0ID0gcmVwbF9mdW4gdGV4dCBpblxuICAgICAgICByZXBsYWNlIChyZXBsX3RleHQgOjogU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgZW5kX3BvcyAoZW5kX3BvcyA9IHBvcylcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiAocmVwbGFjZSBbXSAwIGZhbHNlKSlcblxubGV0IGdsb2JhbF9yZXBsYWNlIGV4cHIgcmVwbCB0ZXh0ID1cbiAgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5hbmQgcmVwbGFjZV9maXJzdCBleHByIHJlcGwgdGV4dCA9XG4gIHN1YnN0aXR1dGVfZmlyc3QgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5cbmxldCBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyByZSBzIHAgPVxuICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgcmUgcyBwIGluXG4gIGlmIG1hdGNoX2VuZCAoKSA+IHAgdGhlblxuICAgIHBvc1xuICBlbHNlIGlmIHAgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIHNlYXJjaF9mb3J3YXJkIHJlIHMgKHAgKyAxKVxuICBlbHNlXG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgc3RhcnQgPVxuICAgIGlmIHN0cmluZ19tYXRjaCBleHByIHRleHQgMCB0aGVuIG1hdGNoX2VuZCAoKSBlbHNlIDAgaW5cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIHN0YXJ0IG51bSlcblxubGV0IHNwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IDBcblxubGV0IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIGlmIHRleHQgPSBcIlwiIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gICAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgc3BsaXRfZGVsaW0gZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgMFxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nIHwgRGVsaW0gb2Ygc3RyaW5nXG5cbmxldCBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBsZXQgcyA9IG1hdGNoZWRfc3RyaW5nIHRleHQgaW5cbiAgICAgICAgaWYgcG9zID4gc3RhcnQgdGhlblxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjpcbiAgICAgICAgICAgICAgICAgVGV4dCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3MgLSBzdGFydCkpIDo6XG4gICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6IGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBmdWxsX3NwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgMFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBlbmNsb3NlZCA9XG4gIHwgQ2hhciBvZiBjaGFyXG4gIHwgUmFuZ2Ugb2YgY2hhciAqIGNoYXJcblxudHlwZSBwaWVjZSA9XG4gIHwgRXhhY3RseSBvZiBjaGFyXG4gIHwgQW55X29mIG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBBbnlfYnV0IG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBPbmVcbiAgfCBNYW55XG4gIHwgTWFueU1hbnlcblxudHlwZSB0ID0gcGllY2UgbGlzdFxuXG5sZXQgb2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcyA6IHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHJlYWQgYyA9XG4gICAgbGV0IHIgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICAgIGlmIHIgdGhlbiBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gICgqKlxuICAgW3JlYWRfYWhlYWQgcGF0dGVybl0gd2lsbCBhdHRlbXB0IHRvIHJlYWQgW3BhdHRlcm5dIGFuZCB3aWxsIHJldHVybiBbdHJ1ZV0gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwuXG4gICBJZiBpdCBmYWlscywgaXQgd2lsbCByZXR1cm4gW2ZhbHNlXSBhbmQgbm90IGluY3JlbWVudCB0aGUgcmVhZCBpbmRleC5cbiAgKilcbiAgbGV0IHJlYWRfYWhlYWQgcGF0dGVybiA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIGluXG4gICAgKCogaWYgdGhlIHBhdHRlcm4gd2UgYXJlIGxvb2tpbmcgZm9yIGV4ZWVkcyB0aGUgcmVtYWluaW5nIGxlbmd0aCBvZiBzLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHkgKilcbiAgICBpZiAhaSArIHBhdHRlcm5fbGVuID49IGwgdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAwIHRvIHBhdHRlcm5fbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBmb3VuZCA9IG5vdCAoZW9zICgpKSAmJiBzLlshaSArIGpdID0gcGF0dGVybi5bal0gaW5cbiAgICAgICAgICBpZiBub3QgZm91bmQgdGhlbiByYWlzZV9ub3RyYWNlIEV4aXQ7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGkgOj0gIWkgKyBwYXR0ZXJuX2xlbjtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCB8IEV4aXQgIC0+IGZhbHNlXG4gIGluXG5cbiAgbGV0IGNoYXIgKCkgPVxuICAgIGlnbm9yZSAocmVhZCAnXFxcXCcgOiBib29sKTtcbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgciA9IHMuWyFpXSBpblxuICAgIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgbGV0IGVuY2xvc2VkICgpIDogZW5jbG9zZWQgbGlzdCA9XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgKCogVGhpcyByZXR1cm5zIHRoZSBsaXN0IGluIHJldmVyc2Ugb3JkZXIsIGJ1dCBvcmRlciBpc24ndCBpbXBvcnRhbnQgYW55d2F5ICopXG4gICAgICBpZiBzIDw+IFtdICYmIHJlYWQgJ10nXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICAgIGlmIG5vdCAocmVhZCAnLScpXG4gICAgICAgIHRoZW4gbG9vcCAoQ2hhciBjIDo6IHMpXG4gICAgICAgIGVsc2UgaWYgcmVhZCAnXSdcbiAgICAgICAgdGhlbiBDaGFyIGMgOjogQ2hhciAnLScgOjogc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGxvb3AgKFJhbmdlIChjLCBjJykgOjogcylcbiAgICBpblxuICAgIGxvb3AgW11cbiAgaW5cblxuICBsZXQgcGllY2UgKCkgPVxuICAgIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkX2FoZWFkIFwiLyoqXCIgJiYgbm90IChlb3MgKCkpXG4gICAgdGhlbiBNYW55TWFueVxuICAgIGVsc2UgaWYgcmVhZCAnKidcbiAgICB0aGVuIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkICcqJ1xuICAgICAgdGhlbiBNYW55TWFueVxuICAgICAgZWxzZSBNYW55XG4gICAgZWxzZSBpZiByZWFkICc/J1xuICAgIHRoZW4gT25lXG4gICAgZWxzZSBpZiBub3QgKHJlYWQgJ1snKVxuICAgIHRoZW4gRXhhY3RseSAoY2hhciAoKSlcbiAgICBlbHNlIGlmIHJlYWQgJ14nIHx8IHJlYWQgJyEnXG4gICAgdGhlbiBBbnlfYnV0IChlbmNsb3NlZCAoKSlcbiAgICBlbHNlIEFueV9vZiAoZW5jbG9zZWQgKCkpXG4gIGluXG5cbiAgbGV0IHJlYyBsb29wIHBpZWNlcyA9XG4gICAgaWYgZW9zICgpXG4gICAgdGhlbiBMaXN0LnJldiBwaWVjZXNcbiAgICBlbHNlIGxvb3AgKHBpZWNlICgpIDo6IHBpZWNlcylcbiAgaW5cblxuICBsb29wIFtdXG5cbmxldCBtdWwgbCBsJyA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biBzIC0+IExpc3QubWFwIChmdW4gcycgLT4gcyBeIHMnKSBsJykgbClcblxubGV0IGV4cGxvZGUgc3RyID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGV4cGwgaW5uZXIgcyBpIGFjYyBiZWcgPVxuICAgIGlmIGkgPj0gbCB0aGVuIGJlZ2luXG4gICAgICBpZiBpbm5lciB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0sIGkpXG4gICAgZW5kIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgfCAnXFxcXCcgLT4gZXhwbCBpbm5lciBzIChpICsgMikgYWNjIGJlZ1xuICAgICAgfCAneycgLT5cbiAgICAgICAgbGV0ICh0LCBpJykgPSBleHBsIHRydWUgKGkgKyAxKSAoaSArIDEpIFtdIFtcIlwiXSBpblxuICAgICAgICBleHBsIGlubmVyIGknIGknIGFjY1xuICAgICAgICAgIChtdWwgYmVnIChtdWwgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gdCkpXG4gICAgICB8ICcsJyB3aGVuIGlubmVyIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgKGkgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MpIFtcIlwiXVxuICAgICAgfCAnfScgd2hlbiBpbm5lciAtPlxuICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYywgaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgZXhwbCBpbm5lciBzIChpICsgMSkgYWNjIGJlZ1xuICBpblxuICBMaXN0LnJldiAoZnN0IChleHBsIGZhbHNlIDAgMCBbXSBbXCJcIl0pKVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlX3BpZWNlcyAgICAgICAgICAgICAgICA6IFJlLnQgbGlzdDsgICgqIGxhc3QgcGllY2UgYXQgaGVhZCBvZiBsaXN0LiAqKVxuICAgIHJlbWFpbmluZyAgICAgICAgICAgICAgICA6IHBpZWNlIGxpc3Q7ICgqIGxhc3QgcGllY2UgYXQgdGFpbCBvZiBsaXN0LiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gICA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiBvciBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyICcvJyAqKVxuICAgIHBhdGhuYW1lICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gICAgbWF0Y2hfYmFja3NsYXNoZXMgICAgICAgIDogYm9vbDtcbiAgICBwZXJpb2QgICAgICAgICAgICAgICAgICAgOiBib29sO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+cGVyaW9kIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgcmVtYWluaW5nID1cbiAgICB7XG4gICAgICByZV9waWVjZXMgPSBbXTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSB0cnVlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIHBhdGhuYW1lO1xuICAgICAgbWF0Y2hfYmFja3NsYXNoZXM7XG4gICAgICBwZXJpb2Q7XG4gICAgICByZW1haW5pbmc7XG4gICAgfVxuXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgdCA9XG4gICAgdC5wZXJpb2QgJiYgKFxuICAgICAgdC5hbV9hdF9zdGFydF9vZl9wYXR0ZXJuIHx8XG4gICAgICAodC5hbV9hdF9zdGFydF9vZl9jb21wb25lbnQgJiYgdC5wYXRobmFtZSlcbiAgICApXG5cbiAgbGV0IGV4cGxpY2l0X3NsYXNoIHQgPSB0LnBhdGhuYW1lXG5cbiAgbGV0IHNsYXNoZXMgdCA9XG4gICAgaWYgdC5tYXRjaF9iYWNrc2xhc2hlcyB0aGVuIFsnLyc7ICdcXFxcJ10gZWxzZSBbJy8nXVxuXG4gIGxldCBhcHBlbmQgPyhhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ9ZmFsc2UpIHQgcGllY2UgPVxuICAgIHsgdCB3aXRoXG4gICAgICByZV9waWVjZXMgPSBwaWVjZSA6OiB0LnJlX3BpZWNlcztcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSBmYWxzZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgbGV0IHRvX3JlIHQgPSBSZS5zZXEgKExpc3QucmV2IHQucmVfcGllY2VzKVxuXG4gIGxldCBuZXh0IHQgPVxuICAgIG1hdGNoIHQucmVtYWluaW5nIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHBpZWNlIDo6IHJlbWFpbmluZyAtPiBTb21lIChwaWVjZSwgeyB0IHdpdGggcmVtYWluaW5nIH0pXG5lbmRcblxubGV0IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCA9XG4gIFJlLmNvbXBsIChcbiAgICBMaXN0LmNvbmNhdCBbXG4gICAgICBpZiBleHBsaWNpdF9zbGFzaCAgdGhlbiBMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMgZWxzZSBbXTtcbiAgICAgIGlmIGV4cGxpY2l0X3BlcmlvZCB0aGVuIFtSZS5jaGFyICcuJ10gZWxzZSBbXTtcbiAgICBdXG4gIClcblxubGV0IGVuY2xvc2VkIGVuY2xvc2VkID1cbiAgbWF0Y2ggZW5jbG9zZWQgd2l0aFxuICB8IENoYXIgYyAtPiBSZS5jaGFyIGNcbiAgfCBSYW5nZSAobG93LCBoaWdoKSAtPiBSZS5yZyBsb3cgaGlnaFxuXG5sZXQgZW5jbG9zZWRfc2V0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGtpbmQgc2V0ID1cbiAgbGV0IHNldCA9IExpc3QubWFwIGVuY2xvc2VkIHNldCBpblxuICBsZXQgZW5jbG9zdXJlID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBbnlfb2YgLT4gUmUuYWx0IHNldFxuICAgIHwgYEFueV9idXQgLT4gUmUuY29tcGwgc2V0XG4gIGluXG4gIFJlLmludGVyIFtlbmNsb3N1cmU7IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZF1cblxubGV0IGV4YWN0bHkgc3RhdGUgYyA9XG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gTGlzdC5tZW0gYyBzbGFzaGVzIGluXG4gIGxldCBjaGFycyA9IGlmIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCB0aGVuIHNsYXNoZXMgZWxzZSBbY10gaW5cbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgY2hhcnMpKSB+YW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50XG5cbmxldCBtYW55X21hbnkgc3RhdGUgPVxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gc3RhdGUuU3RhdGUucGVyaW9kICYmIHN0YXRlLlN0YXRlLnBhdGhuYW1lIGluXG4gIGxldCBmaXJzdF9leHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCA9XG4gICAgUmUuc2VxIFtcbiAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICBdXG4gIGluXG4gICgqIFdlIG11c3QgbWF0Y2ggY29tcG9uZW50cyBpbmRpdmlkdWFsbHkgd2hlbiBbcGVyaW9kXSBmbGFnIGlzIHNldCxcbiAgICAgbWFraW5nIHN1cmUgdG8gbm90IG1hdGNoIFtcImZvby8uYmFyXCJdLiAqKVxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFxuICAgIFJlLnNlcSBbXG4gICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kOmZpcnN0X2V4cGxpY2l0X3BlcmlvZCk7XG4gICAgICBSZS5yZXAgKFxuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzKTtcbiAgICAgICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgICAgXVxuICAgICAgKTtcbiAgICBdKVxuXG5sZXQgbWFueSAoc3RhdGUgOiBTdGF0ZS50KSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gICgqIFdoZXRoZXIgd2UgbXVzdCBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZCBkZXBlbmRzIG9uIHRoZSBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBidXRcbiAgICAgc2xhc2hlcyBhcmUgZWFzeSB0byBleHBsaWNpdCBtYXRjaC4gVGhpcyBjb25kaXRpb25hbCBzcGxpdHMgb3V0IHNvbWUgc2ltcGxlIGNhc2VzLlxuICAqKVxuICBpZiBub3QgZXhwbGljaXRfcGVyaW9kIHRoZW4gYmVnaW5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKSlcbiAgZW5kIGVsc2UgaWYgbm90IGV4cGxpY2l0X3NsYXNoIHRoZW4gYmVnaW5cbiAgICAoKiBJbiB0aGlzIHN0YXRlLCB3ZSBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZHMgb25seSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgKilcbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLm9wdCAoXG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgICkpXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgbGV0IG5vdF9lbXB0eSA9XG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgIGluXG4gICAgKCogW21heWJlX2VtcHR5XSBpcyB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbiBvZiBNYW55LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLlxuICAgICopXG4gICAgbGV0IG1heWJlX2VtcHR5ID0gUmUub3B0IG5vdF9lbXB0eSBpblxuICAgIGxldCBlbmNsb3NlZF9zZXQgc3RhdGUga2luZCBzZXQgPVxuICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgW1xuICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIG5vdF9lbXB0eTtcbiAgICAgICAgICAoKiBTaW5jZSBbbm90X2VtcHR5XSBtYXRjaGVkLCBzdWJzZXF1ZW50IGRvdHMgYXJlIG5vdCBsZWFkaW5nLiAqKVxuICAgICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlO1xuICAgICAgICBdO1xuICAgICAgXSlcbiAgICBpblxuICAgIGxldCByZWMgbG9va2FoZWFkIHN0YXRlID1cbiAgICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBtYXliZV9lbXB0eVxuICAgICAgKCogZ2xvYiAqKiA9PT0gZ2xvYiAqIC4gKilcbiAgICAgIHwgU29tZSAoTWFueSwgc3RhdGUpIC0+IGxvb2thaGVhZCBzdGF0ZVxuICAgICAgfCBTb21lIChFeGFjdGx5IGMsIHN0YXRlKSAtPlxuICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZVxuICAgICAgICAgICAgKGlmIGMgPSAnLidcbiAgICAgICAgICAgICB0aGVuIG5vdF9lbXB0eVxuICAgICAgICAgICAgIGVsc2UgbWF5YmVfZW1wdHkpXG4gICAgICAgIGluXG4gICAgICAgIGV4YWN0bHkgc3RhdGUgY1xuICAgICAgKCogZ2xvYiAqPyA9PT0gZ2xvYiA/KiAqKVxuICAgICAgfCBTb21lIChPbmUsIHN0YXRlKSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbm90X2VtcHR5XG4gICAgICB8IFNvbWUgKEFueV9vZiBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X29mIGVuY2xvc2VkXG4gICAgICB8IFNvbWUgKEFueV9idXQgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9idXQgZW5jbG9zZWRcbiAgICAgICgqICogdGhlbiAqKiA9PT0gKiogKilcbiAgICAgIHwgU29tZSAoTWFueU1hbnksIHN0YXRlKSAtPiBtYW55X21hbnkgc3RhdGVcbiAgICBpblxuICAgIGxvb2thaGVhZCBzdGF0ZVxuICBlbmRcblxubGV0IHBpZWNlIHN0YXRlIHBpZWNlID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbWF0Y2ggcGllY2Ugd2l0aFxuICB8IE9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZClcbiAgfCBNYW55IC0+IG1hbnkgc3RhdGVcbiAgfCBBbnlfb2YgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X29mIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEFueV9idXQgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X2J1dCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBFeGFjdGx5IGMgLT4gZXhhY3RseSBzdGF0ZSBjXG4gIHwgTWFueU1hbnkgLT4gbWFueV9tYW55IHN0YXRlXG5cbmxldCBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RhdGUudG9fcmUgc3RhdGVcbiAgICB8IFNvbWUgKHAsIHN0YXRlKSAtPiBsb29wIChwaWVjZSBzdGF0ZSBwKVxuICBpblxuICBsb29wIChTdGF0ZS5jcmVhdGUgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IpXG5cbmxldCBnbG9iXG4gICAgICA/KGFuY2hvcmVkID0gZmFsc2UpXG4gICAgICA/KHBhdGhuYW1lID0gdHJ1ZSlcbiAgICAgID8obWF0Y2hfYmFja3NsYXNoZXMgPSBmYWxzZSlcbiAgICAgID8ocGVyaW9kID0gdHJ1ZSlcbiAgICAgID8oZXhwYW5kX2JyYWNlcyA9IGZhbHNlKVxuICAgICAgPyhkb3VibGVfYXN0ZXJpc2sgPSB0cnVlKVxuICAgICAgc1xuICA9XG4gIGxldCB0b19yZSBzID1cbiAgICBsZXQgcmUgPSBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCAob2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcykgaW5cbiAgICBpZiBhbmNob3JlZFxuICAgIHRoZW4gUmUud2hvbGVfc3RyaW5nIHJlXG4gICAgZWxzZSByZVxuICBpblxuICBpZiBleHBhbmRfYnJhY2VzXG4gIHRoZW4gUmUuYWx0IChMaXN0Lm1hcCB0b19yZSAoZXhwbG9kZSBzKSlcbiAgZWxzZSB0b19yZSBzXG5cbmxldCBnbG9iJyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+cGVyaW9kIHNcblxubGV0IGdsb2J4ID9hbmNob3JlZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSBzXG5cbmxldCBnbG9ieCcgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSB+cGVyaW9kIHNcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImFscGhhXCIgIC0+IFJlLmFscGhhXG4gIHwgXCJhbG51bVwiICAtPiBSZS5hbG51bVxuICB8IFwiYXNjaWlcIiAgLT4gUmUuYXNjaWlcbiAgfCBcImJsYW5rXCIgIC0+IFJlLmJsYW5rXG4gIHwgXCJjbnRybFwiICAtPiBSZS5jbnRybFxuICB8IFwiZGlnaXRcIiAgLT4gUmUuZGlnaXRcbiAgfCBcImxvd2VyXCIgIC0+IFJlLmxvd2VyXG4gIHwgXCJwcmludFwiICAtPiBSZS5wcmludFxuICB8IFwic3BhY2VcIiAgLT4gUmUuc3BhY2VcbiAgfCBcInVwcGVyXCIgIC0+IFJlLnVwcGVyXG4gIHwgXCJ3b3JkXCIgICAtPiBSZS53b3JkY1xuICB8IFwicHVuY3RcIiAgLT4gUmUucHVuY3RcbiAgfCBcImdyYXBoXCIgIC0+IFJlLmdyYXBoXG4gIHwgXCJ4ZGlnaXRcIiAtPiBSZS54ZGlnaXRcbiAgfCBjbGFzc18gICAtPiBpbnZhbGlkX2FyZyAoXCJJbnZhbGlkIHBjcmUgY2xhc3M6IFwiIF4gY2xhc3NfKVxuXG5sZXQgcG9zaXhfY2xhc3Nfc3RyaW5ncyA9XG4gIFsgXCJhbHBoYVwiIDsgXCJhbG51bVwiIDsgXCJhc2NpaVwiXG4gIDsgXCJibGFua1wiIDsgXCJjbnRybFwiIDsgXCJkaWdpdFwiXG4gIDsgXCJsb3dlclwiIDsgXCJwcmludFwiIDsgXCJzcGFjZVwiXG4gIDsgXCJ1cHBlclwiIDsgXCJ3b3JkXCIgIDsgXCJwdW5jdFwiXG4gIDsgXCJncmFwaFwiIDsgXCJ4ZGlnaXRcIiBdXG5cbmxldCBwYXJzZSBtdWx0aWxpbmUgZG9sbGFyX2VuZG9ubHkgZG90YWxsIHVuZ3JlZWR5IHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdF9zIHMnID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzJyBpblxuICAgIHRyeVxuICAgICAgZm9yIGogPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgdHJ5IGlmIHMnLltqXSA8PiBzLlshaSArIGpdIHRoZW4gcmFpc2UgRXhpdFxuICAgICAgICB3aXRoIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGkgOj0gIWkgKyBsZW47XG4gICAgICB0cnVlXG4gICAgd2l0aCBFeGl0IC0+IGZhbHNlIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG4gIGxldCBncmVlZHlfbW9kIHIgPVxuICAgIGxldCBnciA9IGFjY2VwdCAnPycgaW5cbiAgICBsZXQgZ3IgPSBpZiB1bmdyZWVkeSB0aGVuIG5vdCBnciBlbHNlIGdyIGluXG4gICAgaWYgZ3IgdGhlbiBSZS5ub25fZ3JlZWR5IHIgZWxzZSBSZS5ncmVlZHkgclxuICBpblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcDEgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBncmVlZHlfbW9kIChSZS5vcHQgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgZ3JlZWR5X21vZCAoUmUucmVwbiByIGkgailcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBkb3RhbGwgdGhlbiBSZS5hbnkgZWxzZSBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc/JyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIHJcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcjJyB0aGVuIGJlZ2luXG4gICAgICAgICAgY29tbWVudCAoKVxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWUgKCkgaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBSZS5ncm91cCB+bmFtZSByXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuZW9sIGVsc2UgaWYgZG9sbGFyX2VuZG9ubHkgdGhlbiBSZS5sZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbigqIFhYWFxuICAgLSBCYWNrLXJlZmVyZW5jZXNcbiAgIC0gXFxjeCAoY29udHJvbC14KSwgXFxkZGRcbiopXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd3JyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAnVycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAncycgLT5cbiAgICAgICAgICBSZS5zcGFjZVxuICAgICAgfCAnUycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuc3BhY2VdXG4gICAgICB8ICdkJyAtPlxuICAgICAgICAgIFJlLmRpZ2l0XG4gICAgICB8ICdEJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5kaWdpdF1cbiAgICAgIHwgJ2InIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIHwgJ0InIC0+XG4gICAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICB8ICdBJyAtPlxuICAgICAgICAgIFJlLmJvc1xuICAgICAgfCAnWicgLT5cbiAgICAgICAgICBSZS5sZW9sXG4gICAgICB8ICd6JyAtPlxuICAgICAgICAgIFJlLmVvc1xuICAgICAgfCAnRycgLT5cbiAgICAgICAgICBSZS5zdGFydFxuICAgICAgfCAnZScgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgxYidcbiAgICAgIHwgJ2YnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MGMnXG4gICAgICB8ICduJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcbidcbiAgICAgIHwgJ3InIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxyJ1xuICAgICAgfCAndCcgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHQnXG4gICAgICB8ICd4JyAtPlxuICAgICAgICAgIGxldCBjMSA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGMyID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgY29kZSA9IGMxICogMTYgKyBjMiBpblxuICAgICAgICAgIFJlLmNoYXIgKGNoYXJfb2ZfaW50IGNvZGUpXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIFJlLmNoYXIgY1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaGV4ZGlnaXQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ2EnLi4nZicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgJ0EnLi4nRicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgbmFtZSAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJykgYXMgYyAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDMyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgbmFtZScgYiA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknKSBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgJz4nIC0+IEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICB8IGBDaGFyIGMgLT5cbiAgICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgICAgICAgICBgQ2hhciBjJyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgICAgICB8IGBTZXQgc3QnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzdCcgOjogcylcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICAgIHwgYFNldCBzdCAtPiBicmFja2V0IChzdCA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuXG4gICAgICAgIGxldCBjb21wbCA9IGFjY2VwdCAnXicgaW5cbiAgICAgICAgbGV0IGNscyA9XG4gICAgICAgICAgdHJ5IExpc3QuZmluZCBhY2NlcHRfcyBwb3NpeF9jbGFzc19zdHJpbmdzXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgUGFyc2VfZXJyb3IgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHRfcyBcIjpdXCIpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCByZSA9XG4gICAgICAgICAgbGV0IHBvc2l4X2NsYXNzID0gcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nIGNscyBpblxuICAgICAgICAgIGlmIGNvbXBsIHRoZW4gUmUuY29tcGwgW3Bvc2l4X2NsYXNzXSBlbHNlIHBvc2l4X2NsYXNzIGluXG4gICAgICAgIGBTZXQgKHJlKVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGBDaGFyIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZSBpZiBjID0gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbigqIFhYWFxuICAgXFwxMjcsIC4uLlxuKilcbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnYicgLT4gYENoYXIgJ1xcMDA4J1xuICAgICAgfCAnbicgLT4gYENoYXIgJ1xcbicgKCpYWFgqKVxuICAgICAgfCAncicgLT4gYENoYXIgJ1xccicgKCpYWFgqKVxuICAgICAgfCAndCcgLT4gYENoYXIgJ1xcdCcgKCpYWFgqKVxuICAgICAgfCAndycgLT4gYFNldCAoUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAnVycgLT4gYFNldCAoUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdzJyAtPiBgU2V0IChSZS5zcGFjZSlcbiAgICAgIHwgJ1MnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5zcGFjZV0pXG4gICAgICB8ICdkJyAtPiBgU2V0IChSZS5kaWdpdClcbiAgICAgIHwgJ0QnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5kaWdpdF0pXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZVxuICAgICAgYENoYXIgY1xuICBhbmQgY29tbWVudCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgaWYgYWNjZXB0ICcpJyB0aGVuIFJlLmVwc2lsb24gZWxzZSBiZWdpbiBpbmNyIGk7IGNvbW1lbnQgKCkgZW5kXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9XG4gIFsgYFVuZ3JlZWR5IHwgYERvdGFsbCB8IGBEb2xsYXJfZW5kb25seVxuICB8IGBNdWx0aWxpbmUgfCBgQW5jaG9yZWQgfCBgQ2FzZWxlc3MgXVxuXG5sZXQgcmUgID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPVxuICAgIHBhcnNlXG4gICAgICAoTGlzdC5tZW1xIGBNdWx0aWxpbmUgb3B0cykgKExpc3QubWVtcSBgRG9sbGFyX2VuZG9ubHkgb3B0cylcbiAgICAgIChMaXN0Lm1lbXEgYERvdGFsbCBvcHRzKSAoTGlzdC5tZW1xIGBVbmdyZWVkeSBvcHRzKVxuICAgICAgc1xuICBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQW5jaG9yZWQgb3B0cyB0aGVuIFJlLnNlcSBbUmUuc3RhcnQ7IHJdIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQ2FzZWxlc3Mgb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCJtb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBlcmwuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkID0gUGVybC5Ob3Rfc3VwcG9ydGVkXG5cbnR5cGUgcmVnZXhwID0gUmUucmVcblxudHlwZSBmbGFnID0gWyBgQ0FTRUxFU1MgfCBgTVVMVElMSU5FIHwgYEFOQ0hPUkVEIHwgYERPVEFMTCBdXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID1cbiAgfCBUZXh0ICBvZiBzdHJpbmdcbiAgfCBEZWxpbSBvZiBzdHJpbmdcbiAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmdcbiAgfCBOb0dyb3VwXG5cbnR5cGUgZ3JvdXBzID0gQ29yZS5Hcm91cC50XG5cbmxldCByZSA/KGZsYWdzID0gW10pIHBhdCA9XG4gIGxldCBvcHRzID0gTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgfCBgQ0FTRUxFU1MgLT4gYENhc2VsZXNzXG4gICAgfCBgTVVMVElMSU5FIC0+IGBNdWx0aWxpbmVcbiAgICB8IGBBTkNIT1JFRCAtPiBgQW5jaG9yZWRcbiAgICB8IGBET1RBTEwgLT4gYERvdGFsbFxuICApIGZsYWdzIGluXG4gIFBlcmwucmUgfm9wdHMgcGF0XG5cbmxldCByZWdleHAgP2ZsYWdzIHBhdCA9IFJlLmNvbXBpbGUgKHJlID9mbGFncyBwYXQpXG5cbmxldCBleHRyYWN0IH5yZXggcyA9XG4gIFJlLkdyb3VwLmFsbCAoUmUuZXhlYyByZXggcylcblxubGV0IGV4ZWMgfnJleCA/cG9zIHMgPVxuICBSZS5leGVjIHJleCA/cG9zIHNcblxubGV0IGdldF9zdWJzdHJpbmcgcyBpID1cbiAgUmUuR3JvdXAuZ2V0IHMgaVxuXG5sZXQgbmFtZXMgcmV4ID1cbiAgUmUuZ3JvdXBfbmFtZXMgcmV4XG4gIHw+IExpc3QubWFwIGZzdFxuICB8PiBBcnJheS5vZl9saXN0XG5cbmxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHMgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCAobiwgaSkgOjogcmVtIHdoZW4gbiA9IG5hbWUgLT5cbiAgICAgICBiZWdpblxuICAgICAgICAgdHJ5IGdldF9zdWJzdHJpbmcgcyBpXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBsb29wIHJlbVxuICAgICAgIGVuZFxuICAgIHwgXyA6OiByZW0gLT4gbG9vcCByZW1cbiAgaW5cbiAgbG9vcCAoUmUuZ3JvdXBfbmFtZXMgcmV4KVxuXG5sZXQgZ2V0X3N1YnN0cmluZ19vZnMgcyBpID1cbiAgUmUuR3JvdXAub2Zmc2V0IHMgaVxuXG5sZXQgcG1hdGNoIH5yZXggcyA9XG4gIFJlLmV4ZWNwIHJleCBzXG5cbmxldCBzdWJzdGl0dXRlIH5yZXggfnN1YnN0IHN0ciA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBwYXQgPSBSZS5Hcm91cC5nZXQgc3MgMCBpblxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChzdGFydCAtIHBvcyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdWJzdCBwYXQpO1xuICAgICAgbG9vcCBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcyk7XG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgfnJleCBzdHIgPVxuICBsZXQgcmVjIGxvb3AgYWNjdSBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBMaXN0LnJldiBhY2N1XG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKSBpblxuICBsb29wIFtdIDBcblxuKCogRnJvbSBQQ1JFICopXG5sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgcyBvZnMgbGVuID1cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIEJ5dGVzLnVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgclxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgIHwgJ1xcXFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnXG4gICAgfCAnKCcgIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcXFwnO1xuICAgICAgaW5jciBwb3M7XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gICAgfCBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgZG9uZTtcbiAgc3RyaW5nX3Vuc2FmZV9zdWIgYnVmIDAgIXBvc1xuXG5sZXQgZnVsbF9zcGxpdCA/KG1heD0wKSB+cmV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAwIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQgc11cbiAgZWxzZVxuICAgIGxldCByZXN1bHRzID0gUmUuc3BsaXRfZnVsbCByZXggcyBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIExpc3QubWFwIChmdW5jdGlvblxuICAgICAgICB8IGBUZXh0IHMgLT4gW1RleHQgc11cbiAgICAgICAgfCBgRGVsaW0gZCAtPlxuICAgICAgICAgIGxldCBtYXRjaGVzID0gUmUuR3JvdXAuYWxsX29mZnNldCBkIGluXG4gICAgICAgICAgbGV0IGRlbGltID0gUmUuR3JvdXAuZ2V0IGQgMCBpblxuICAgICAgICAgIChEZWxpbSBkZWxpbSk6OihcbiAgICAgICAgICAgIGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIG1hdGNoZXMgLSAxIGRvXG4gICAgICAgICAgICAgIGwgOj1cbiAgICAgICAgICAgICAgICAoaWYgbWF0Y2hlcy4oaSkgPSAoLTEsIC0xKVxuICAgICAgICAgICAgICAgICB0aGVuIE5vR3JvdXBcbiAgICAgICAgICAgICAgICAgZWxzZSBHcm91cCAoaSwgUmUuR3JvdXAuZ2V0IGQgaSkpXG4gICAgICAgICAgICAgICAgOjooIWwpXG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgTGlzdC5yZXYgIWwpKSByZXN1bHRzIGluXG4gICAgTGlzdC5jb25jYXQgbWF0Y2hlc1xuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbigqXG5XaGF0IHdlIGNvdWxkIChzaG91bGQ/KSBkbzpcbi0gYSogPT0+IGxvbmdlc3QgKChzaG9ydGVzdCAobm9fZ3JvdXAgYSkqICksIGEgfCAoKSkgICghISEpXG4tIGFiYyB1bmRlcnN0b29kIGFzIChhYiljXG4tIFwiKChhPyl8YilcIiBhZ2FpbnN0IFwiYWJcIiBzaG91bGQgbm90IGJpbmQgdGhlIGZpcnN0IHN1YnBhdHRlcm4gdG8gYW55dGhpbmdcblxuTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBoYW5kbGUgXCIoKChhYiljKWQpZVwiIGVmZmljaWVudGx5XG4qKVxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBuZXdsaW5lIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBSZS5yZXBuIChSZS5uZXN0IHIpIGkgalxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ub3RubCBlbHNlIFJlLmFueVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIFJlLmdyb3VwIHJcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmRpZmYgKFJlLmNvbXBsIChicmFja2V0IFtdKSkgKFJlLmNoYXIgJ1xcbicpXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnfCcgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnPydcbiAgICAgIHwgJ1snIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ3snIHwgJ1xcXFwnIGFzIGMgLT4gUmUuY2hhciBjXG4gICAgICB8ICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZCAoKlhYWCopXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGNcbiAgICBlbmQgZWxzZVxuICAgICAgY1xuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPSBbYElDYXNlIHwgYE5vU3ViIHwgYE5ld2xpbmVdXG5cbmxldCByZSA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID0gcGFyc2UgKExpc3QubWVtcSBgTmV3bGluZSBvcHRzKSBzIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBJQ2FzZSBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgTm9TdWIgb3B0cyB0aGVuIFJlLm5vX2dyb3VwIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgcmUgPSBSZS5jb21waWxlIChSZS5sb25nZXN0IHJlKVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGlzIG1vZHVsZSBvZmZlcnMgYSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJhc2VkIG9uIGRpc2pvaW50IHNldFxuICAgZm9yZXN0cywgd2l0aCBwYXRoIGNvbXByZXNzaW9uIGFuZCBsaW5raW5nIGJ5IHJhbmsuICopXG5cbm9wZW4gU3RvcmVcblxubW9kdWxlIE1ha2UgKFMgOiBTVE9SRSkgPSBzdHJ1Y3RcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHJhbmsgb2YgYSB2ZXJ0ZXggaXMgdGhlIG1heGltdW0gbGVuZ3RoLCBpbiBlZGdlcywgb2YgYW4gdW5jb21wcmVzc2VkIHBhdGhcbiAgIHRoYXQgbGVhZHMgdG8gdGhpcyB2ZXJ0ZXguIEluIG90aGVyIHdvcmRzLCB0aGUgcmFuayBvZiBbeF0gaXMgdGhlIGhlaWdodCBvZlxuICAgdGhlIHRyZWUgcm9vdGVkIGF0IFt4XSB0aGF0IHdvdWxkIGV4aXN0IGlmIHdlIGRpZCBub3QgcGVyZm9ybSBwYXRoXG4gICBjb21wcmVzc2lvbi4gKilcblxudHlwZSByYW5rID1cbiAgaW50XG5cbigqIFRoZSBjb250ZW50IG9mIGEgdmVydGV4IGlzIGEgcG9pbnRlciB0byBhIHBhcmVudCB2ZXJ0ZXggKGlmIHRoZSB2ZXJ0ZXhcbiAgIGhhcyBhIHBhcmVudCkgb3IgYSBwYWlyIG9mIGEgcmFuayBhbmQgYSB1c2VyIHZhbHVlIChpZiB0aGUgdmVydGV4IGhhcyBub1xuICAgcGFyZW50LCBhbmQgaXMgdGh1cyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IGZvciB0aGlzIGVxdWl2YWxlbmNlXG4gICBjbGFzcykuICopXG5cbigqIEluIHRoaXMgdmVyc2lvbiB0aGUgY29kZSwgdGhlIHR5cGUgWydhIGNvbnRlbnRdIG11c3Qgbm90IG11dGFibGUuIEluZGVlZCxcbiAgIGV2ZXJ5IG11dGF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHZpYSBbUy5zZXRdLiAqKVxuXG50eXBlICdhIGNvbnRlbnQgPVxufCBMaW5rIG9mICdhIHJyZWZcbnwgUm9vdCBvZiByYW5rICogJ2FcblxuKCogVGhlIHR5cGUgWydhIHJyZWZdIHJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUuICopXG5cbmFuZCAnYSBycmVmID1cbiAgJ2EgY29udGVudCBTLnJyZWZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHR5cGUgb2Ygc3RvcmVzLCBhbmQgdGhlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIG5ldyBzdG9yZSwgYXJlIHRob3NlXG4gICBvZiB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBbU10uICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICAnYSBjb250ZW50IFMuc3RvcmVcblxubGV0IG5ld19zdG9yZSA6IHVuaXQgLT4gJ2Egc3RvcmUgPVxuICBTLm5ld19zdG9yZVxuXG5sZXQgY29weSA6ICdhIHN0b3JlIC0+ICdhIHN0b3JlID1cbiAgUy5jb3B5XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttYWtlIHMgdl0gY3JlYXRlcyBhIG5ldyByb290IG9mIHJhbmsgemVyby4gKilcblxubGV0IG1ha2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgUy5tYWtlIHMgKFJvb3QgKDAsIHYpKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZmluZCBzIHhdIGZpbmRzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG9mIFt4XS5cbiAgIEl0IGRvZXMgYnkgZm9sbG93aW5nIHRoZSBwYXRoIGZyb20gW3hdIHRvIHRoZSByb290LiBQYXRoIGNvbXByZXNzaW9uIGlzXG4gICBwZXJmb3JtZWQgKG9uIHRoZSB3YXkgYmFjaykgYnkgbWFraW5nIGV2ZXJ5IHZlcnRleCBhbG9uZyB0aGUgcGF0aCBhXG4gICBkaXJlY3QgY2hpbGQgb2YgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gTm8gcmFuayBpcyBhbHRlcmVkLiAqKVxuXG5sZXQgcmVjIGZpbmQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIF8pIC0+XG4gICAgICB4XG4gIHwgTGluayB5IC0+XG4gICAgICBsZXQgeiA9IGZpbmQgcyB5IGluXG4gICAgICBpZiBTLmVxIHMgeSB6IHRoZW5cbiAgICAgICAgelxuICAgICAgZWxzZVxuICAgICAgICBsZXQgbGlua190b196ID0gUy5nZXQgcyB5IGluXG4gICAgICAgIFMuc2V0IHMgeCBsaW5rX3RvX3o7XG4gICAgICAgIHpcblxubGV0IGlzX3JlcHJlc2VudGF0aXZlIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiBib29sID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHRydWVcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtlcSBzIHggeV0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB2ZXJ0aWNlcyBbeF0gYW5kIFt5XSBiZWxvbmcgaW4gdGhlIHNhbWVcbiAgIGVxdWl2YWxlbmNlIGNsYXNzLiBJdCBkb2VzIHNvIHZpYSB0d28gY2FsbHMgdG8gW2ZpbmRdIGFuZCBhIHBoeXNpY2FsXG4gICBlcXVhbGl0eSB0ZXN0LiBBcyBhIGZhc3QgcGF0aCwgd2UgZmlyc3QgdGVzdCB3aGV0aGVyIFt4XSBhbmQgW3ldIGFyZVxuICAgcGh5c2ljYWxseSBlcXVhbC4gKilcblxubGV0IGVxIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICBTLmVxIHMgeCB5IHx8IFMuZXEgcyAoZmluZCBzIHgpIChmaW5kIHMgeSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2dldF8gcyB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgZ2V0XyAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBsZXQgeCA9IGZpbmQgcyB4IGluXG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgdikgLT5cbiAgICAgIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiBbZ2V0IHMgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxuKCogQnkgbm90IGNhbGxpbmcgW2ZpbmRdIGltbWVkaWF0ZWx5LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoZVxuICAgcGF0aCBvdXQgb2YgW3hdIGhhcyBsZW5ndGggMCBvciAxLCBhdCB0aGUgZXhwZW5zZSBvZiB0aGUgZ2VuZXJhbCBjYXNlLlxuICAgVGh1cywgd2UgY2FsbCBbZmluZF0gb25seSBpZiBwYXRoIGNvbXByZXNzaW9uIG11c3QgYmUgcGVyZm9ybWVkLiAqKVxuXG5sZXQgZ2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgdikgLT5cbiAgICAgIHZcbiAgfCBMaW5rIHkgLT5cbiAgICAgIG1hdGNoIFMuZ2V0IHMgeSB3aXRoXG4gICAgICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICAgICAgdlxuICAgICAgfCBMaW5rIF8gLT5cbiAgICAgICAgICBnZXRfIHMgeFxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbc2V0XyBzIHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBzZXRfIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IHggPSBmaW5kIHMgeCBpblxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICBTLnNldCBzIHggKFJvb3QgKHIsIHYpKVxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIFtzZXQgcyB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG4oKiBCeSBub3QgY2FsbGluZyBbZmluZF0gaW1tZWRpYXRlbHksIHdlIG9wdGltaXplIHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhlXG4gICBwYXRoIG91dCBvZiBbeF0gaGFzIGxlbmd0aCAwIG9yIDEsIGF0IHRoZSBleHBlbnNlIG9mIHRoZSBnZW5lcmFsIGNhc2UuXG4gICBUaHVzLCB3ZSBjYWxsIFtmaW5kXSBvbmx5IGlmIHBhdGggY29tcHJlc3Npb24gbXVzdCBiZSBwZXJmb3JtZWQuICopXG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICBTLnNldCBzIHggKFJvb3QgKHIsIHYpKVxuICB8IExpbmsgeSAtPlxuICAgICAgbWF0Y2ggUy5nZXQgcyB5IHdpdGhcbiAgICAgIHwgUm9vdCAociwgXykgLT5cbiAgICAgICAgICBTLnNldCBzIHkgKFJvb3QgKHIsIHYpKVxuICAgICAgfCBMaW5rIF8gLT5cbiAgICAgICAgICBzZXRfIHMgeCB2XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFt1bmlvbiBzIHggeV0gbWVyZ2VzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzIG9mIFt4XSBhbmQgW3ldIGJ5IGluc3RhbGxpbmcgYVxuICAgbGluayBmcm9tIG9uZSByb290IHZlcnRleCB0byB0aGUgb3RoZXIuICopXG5cbigqIExpbmtpbmcgaXMgYnkgcmFuazogdGhlIHNtYWxsZXItcmFua2VkIHZlcnRleCBpcyBtYWRlIHRvIHBvaW50IHRvIHRoZVxuICAgbGFyZ2VyLiBJZiB0aGUgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgcmFuaywgdGhlbiBhbiBhcmJpdHJhcnkgY2hvaWNlXG4gICBpcyBtYWRlLCBhbmQgdGhlIHJhbmsgb2YgdGhlIG5ldyByb290IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4gKilcblxubGV0IHVuaW9uIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBsZXQgeCA9IGZpbmQgcyB4XG4gIGFuZCB5ID0gZmluZCBzIHkgaW5cbiAgaWYgUy5lcSBzIHggeSB0aGVuIHggZWxzZVxuICAgIG1hdGNoIFMuZ2V0IHMgeCwgUy5nZXQgcyB5IHdpdGhcbiAgICB8IFJvb3QgKHJ4LCB2eCksIFJvb3QgKHJ5LCBfKSAtPlxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHggKExpbmsgeSk7IHlcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpOyB4XG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIFMuc2V0IHMgeCAoUm9vdCAocnggKyAxLCB2eCkpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWVyZ2VdIGlzIGFuYWxvZ291cyB0byBbdW5pb25dLCBidXQgaW52b2tlcyBhIHVzZXItc3BlY2lmaWVkIGZ1bmN0aW9uIFtmXVxuICAgdG8gY29tcHV0ZSB0aGUgbmV3IHZhbHVlIFt2XSBhc3NvY2lhdGVkIHdpdGggdGhlIGVxdWl2YWxlbmNlIGNsYXNzLiAqKVxuXG4oKiBUaGUgZnVuY3Rpb24gW2ZdIG11c3Qgbm90IGFmZmVjdCB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBieSBtYWtpbmdcbiAgIHJlLWVudHJhbnQgY2FsbHMgdG8gW3NldF0sIFt1bmlvbl0sIG9yIFttZXJnZV0uIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3JcbiAgIHRoaXMuIEZpcnN0LCBbZl0gbWF5IGJlIGludm9rZWQgYXQgYSB0aW1lIHdoZW4gdGhlIGludmFyaWFudCBvZiB0aGUgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRlbXBvcmFyaWx5IHZpb2xhdGVkOiBpbiB0aGUgdGhpcmQgYnJhbmNoIGJlbG93LCB0aGUgcmFuayBvZlxuICAgW3hdIGhhcyBub3QgeWV0IGJlZW4gaW5jcmVhc2VkIHdoZW4gW2ZdIGlzIGludm9rZWQuIFNlY29uZCwgbW9yZSBzZXJpb3VzbHksXG4gICBpZiBbZl0gY291bGQgY2FsbCwgc2F5LCBbdW5pb25dLCB0aGVuIHRoYXQgY291bGQgY2hhbmdlIGEgW1Jvb3RdIGludG8gYVxuICAgW0xpbmtdLCBzbyB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCBjaGFuZ2UgYSBbTGlua11cbiAgIGJhY2sgaW50byBhIFtSb290XSwgc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbWFrZSBhbnkgc2Vuc2UuIEFsc28sIGlmIFtmXVxuICAgY291bGQgY2FsbCBbc2V0XSwgdGhlbiB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCB1bmRvXG4gICB0aGUgZWZmZWN0IG9mIHRoaXMgW3NldF0gb3BlcmF0aW9uOyB0aGlzIGFsc28gZG9lcyBub3QgbWFrZSBzZW5zZS4gKilcblxuKCogVGhlIHRlc3RzIFtpZiB2ICE9IHZ5IHRoZW4gLi4uXSBhbmQgW2lmIHYgIT0gdnggdGhlbiAuLi5dIGFyZSBpbnRlbmRlZCB0b1xuICAgc2F2ZSBhbiBhbGxvY2F0aW9uIGFuZCBhIHdyaXRlIHdoZW4gcG9zc2libGUuICopXG5cbigqIFdlIGludm9rZSBbZl0gYmVmb3JlIHBlcmZvcm1pbmcgYW55IHVwZGF0ZSwgc28gdGhhdCBpZiBbZl0gZmFpbHNcbiAgIChieSByYWlzaW5nIGFuIGV4Y2VwdGlvbiksIHRoZSBzdGF0ZSBpcyB1bmFmZmVjdGVkLiAqKVxuXG5sZXQgbWVyZ2UgcyAoZiA6ICdhIC0+ICdhIC0+ICdhKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbGV0IHggPSBmaW5kIHMgeFxuICBhbmQgeSA9IGZpbmQgcyB5IGluXG4gIGlmIFMuZXEgcyB4IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCBTLmdldCBzIHgsIFMuZ2V0IHMgeSB3aXRoXG4gICAgfCBSb290IChyeCwgdngpLCBSb290IChyeSwgdnkpIC0+XG4gICAgICAgIGxldCB2ID0gZiB2eCB2eSBpblxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHggKExpbmsgeSk7XG4gICAgICAgICAgaWYgdiAhPSB2eSB0aGVuIFMuc2V0IHMgeSAoUm9vdCAocnksIHYpKTtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gUy5zZXQgcyB4IChSb290IChyeCwgdikpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgUy5zZXQgcyB4IChSb290IChyeCsxLCB2KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoaXMgbW9kdWxlIG9mZmVycyBhIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYmFzZWQgb24gZGlzam9pbnQgc2V0XG4gICBmb3Jlc3RzLCB3aXRoIHBhdGggY29tcHJlc3Npb24gYW5kIGxpbmtpbmcgYnkgcmFuay4gKilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHJhbmsgb2YgYSB2ZXJ0ZXggaXMgdGhlIG1heGltdW0gbGVuZ3RoLCBpbiBlZGdlcywgb2YgYW4gdW5jb21wcmVzc2VkIHBhdGhcbiAgIHRoYXQgbGVhZHMgdG8gdGhpcyB2ZXJ0ZXguIEluIG90aGVyIHdvcmRzLCB0aGUgcmFuayBvZiBbeF0gaXMgdGhlIGhlaWdodCBvZlxuICAgdGhlIHRyZWUgcm9vdGVkIGF0IFt4XSB0aGF0IHdvdWxkIGV4aXN0IGlmIHdlIGRpZCBub3QgcGVyZm9ybSBwYXRoXG4gICBjb21wcmVzc2lvbi4gKilcblxudHlwZSByYW5rID1cbiAgaW50XG5cbigqIFRoZSBjb250ZW50IG9mIGEgdmVydGV4IGlzIGEgcG9pbnRlciB0byBhIHBhcmVudCB2ZXJ0ZXggKGlmIHRoZSB2ZXJ0ZXhcbiAgIGhhcyBhIHBhcmVudCkgb3IgYSBwYWlyIG9mIGEgcmFuayBhbmQgYSB1c2VyIHZhbHVlIChpZiB0aGUgdmVydGV4IGhhcyBub1xuICAgcGFyZW50LCBhbmQgaXMgdGh1cyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IGZvciB0aGlzIGVxdWl2YWxlbmNlXG4gICBjbGFzcykuICopXG5cbigqIFdlIG1ha2UgdGhlIHR5cGUgWydhIGNvbnRlbnRdIG11dGFibGUsIGFuZCB3ZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdFxuICAgZXZlcnkgdmVydGV4IHVuaXF1ZWx5IG93bnMgaXRzIGNvbnRlbnQuIFRoaXMgYWxsb3dzIHVzIHRvIHVwZGF0ZSBhIGNvbnRlbnRcbiAgIGluIHBsYWNlIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIG5ldyBjb250ZW50IGFuZCB1cGRhdGluZyB0aGUgdmVydGV4IHdpdGhcbiAgIHRoaXMgbmV3IGNvbnRlbnQuXG5cbiAgIFdlIG9idGFpbiB0aGUgcHJvcGVydHkgdGhhdDpcbiAgIC0gb25seSBbbWFrZV0gYWxsb2NhdGVzIGEgbmV3IHZlcnRleCAoYSByZWZlcmVuY2UgYW5kIGEgW1Jvb3RdIGNvbnRlbnQpO1xuICAgLSBvbmx5IFt1bmlvbl0gYW5kIFttZXJnZV0gYWxsb2NhdGUgYSBuZXcgZWRnZSAoYSBbTGlua10gY29udGVudCkuXG4gICBbZmluZF0sIFtnZXRdLCBbc2V0XSwgW2VxXSBhbGxvY2F0ZSBubyBtZW1vcnkuICopXG5cbnR5cGUgJ2EgY29udGVudCA9XG58IExpbmsgb2YgeyBtdXRhYmxlIHBhcmVudCA6ICdhIGVsZW0gfVxufCBSb290IG9mIHsgbXV0YWJsZSByYW5rIDogcmFuazsgbXV0YWJsZSB2YWx1ZSA6ICdhIH1cblxuKCogVGhlIHR5cGUgWydhIGVsZW1dIHJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUuICopXG5cbmFuZCAnYSBlbGVtID1cbiAgJ2EgY29udGVudCByZWZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21ha2Ugdl0gY3JlYXRlcyBhIG5ldyByb290IG9mIHJhbmsgemVyby4gKilcblxubGV0IG1ha2UgKHYgOiAnYSkgOiAnYSBlbGVtID1cbiAgcmVmIChSb290IHsgcmFuayA9IDA7IHZhbHVlID0gdiB9KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZmluZCB4XSBmaW5kcyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBvZiBbeF0uXG4gICBJdCBkb2VzIHNvIGJ5IGZvbGxvd2luZyB0aGUgcGF0aCBmcm9tIFt4XSB0byB0aGUgcm9vdC4gUGF0aCBjb21wcmVzc2lvbiBpc1xuICAgcGVyZm9ybWVkIChvbiB0aGUgd2F5IGJhY2spIGJ5IG1ha2luZyBldmVyeSB2ZXJ0ZXggYWxvbmcgdGhlIHBhdGggYVxuICAgZGlyZWN0IGNoaWxkIG9mIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguIE5vIHJhbmsgaXMgYWx0ZXJlZC4gKilcblxubGV0IHJlYyBmaW5kICh4IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgeFxuICB8IExpbmsgKHsgcGFyZW50ID0geSB9IGFzIGxpbmspIC0+XG4gICAgICBsZXQgeiA9IGZpbmQgeSBpblxuICAgICAgaWYgeiAhPSB5IHRoZW5cbiAgICAgICAgbGluay5wYXJlbnQgPC0gejtcbiAgICAgIHpcblxubGV0IGlzX3JlcHJlc2VudGF0aXZlICh4IDogJ2EgZWxlbSkgOiBib29sID1cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgdHJ1ZVxuICB8IExpbmsgXyAtPlxuICAgICAgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2VxIHggeV0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB2ZXJ0aWNlcyBbeF0gYW5kIFt5XSBiZWxvbmcgaW4gdGhlXG4gICBzYW1lIGVxdWl2YWxlbmNlIGNsYXNzLiBJdCBkb2VzIHNvIHZpYSB0d28gY2FsbHMgdG8gW2ZpbmRdIGFuZCBhXG4gICBwaHlzaWNhbCBlcXVhbGl0eSB0ZXN0LiBBcyBhIGZhc3QgcGF0aCwgd2UgZmlyc3QgdGVzdCB3aGV0aGVyIFt4XVxuICAgYW5kIFt5XSBhcmUgcGh5c2ljYWxseSBlcXVhbC4gKilcblxubGV0IGVxICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6IGJvb2wgPVxuICB4ID09IHkgfHwgZmluZCB4ID09IGZpbmQgeVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZ2V0IHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBnZXQgKHggOiAnYSBlbGVtKSA6ICdhID1cbiAgbGV0IHggPSBmaW5kIHggaW5cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgeyB2YWx1ZSA9IHY7IF8gfSAtPlxuICAgICAgdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtzZXQgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IHNldCAoeCA6ICdhIGVsZW0pICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCB4ID0gZmluZCB4IGluXG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IHJvb3QgLT5cbiAgICAgIHJvb3QudmFsdWUgPC0gdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFt1bmlvbiB4IHldIG1lcmdlcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlcyBvZiBbeF0gYW5kIFt5XSBieSBpbnN0YWxsaW5nIGFcbiAgIGxpbmsgZnJvbSBvbmUgcm9vdCB2ZXJ0ZXggdG8gdGhlIG90aGVyLiAqKVxuXG4oKiBMaW5raW5nIGlzIGJ5IHJhbms6IHRoZSBzbWFsbGVyLXJhbmtlZCB2ZXJ0ZXggaXMgbWFkZSB0byBwb2ludCB0byB0aGVcbiAgIGxhcmdlci4gSWYgdGhlIHR3byB2ZXJ0aWNlcyBoYXZlIHRoZSBzYW1lIHJhbmssIHRoZW4gYW4gYXJiaXRyYXJ5IGNob2ljZVxuICAgaXMgbWFkZSwgYW5kIHRoZSByYW5rIG9mIHRoZSBuZXcgcm9vdCBpcyBpbmNyZW1lbnRlZCBieSBvbmUuICopXG5cbmxldCB1bmlvbiAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbGV0IHggPSBmaW5kIHhcbiAgYW5kIHkgPSBmaW5kIHkgaW5cbiAgaWYgeCA9PSB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggIXgsICF5IHdpdGhcbiAgICB8IFJvb3QgKHsgcmFuayA9IHJ4OyBfIH0gYXMgcm9vdHgpLCBSb290IHsgcmFuayA9IHJ5OyBfIH0gLT5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeCA6PSBMaW5rIHsgcGFyZW50ID0geSB9O1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4fTtcbiAgICAgICAgICByb290eC5yYW5rIDwtIHJ4ICsgMTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21lcmdlXSBpcyBhbmFsb2dvdXMgdG8gW3VuaW9uXSwgYnV0IGludm9rZXMgYSB1c2VyLXNwZWNpZmllZCBmdW5jdGlvbiBbZl1cbiAgIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBbdl0gYXNzb2NpYXRlZCB3aXRoIHRoZSBlcXVpdmFsZW5jZSBjbGFzcy4gKilcblxuKCogVGhlIGZ1bmN0aW9uIFtmXSBtdXN0IG5vdCBhZmZlY3QgdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYnkgbWFraW5nXG4gICByZS1lbnRyYW50IGNhbGxzIHRvIFtzZXRdLCBbdW5pb25dLCBvciBbbWVyZ2VdLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yXG4gICB0aGlzLiBGaXJzdCwgW2ZdIG1heSBiZSBpbnZva2VkIGF0IGEgdGltZSB3aGVuIHRoZSBpbnZhcmlhbnQgb2YgdGhlIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0ZW1wb3JhcmlseSB2aW9sYXRlZDogaW4gdGhlIHRoaXJkIGJyYW5jaCBiZWxvdywgdGhlIHJhbmsgb2ZcbiAgIFt4XSBoYXMgbm90IHlldCBiZWVuIGluY3JlYXNlZCB3aGVuIFtmXSBpcyBpbnZva2VkLiBTZWNvbmQsIG1vcmUgc2VyaW91c2x5LFxuICAgaWYgW2ZdIGNvdWxkIGNhbGwsIHNheSwgW3VuaW9uXSwgdGhlbiB0aGF0IGNvdWxkIGNoYW5nZSBhIFtSb290XSBpbnRvIGFcbiAgIFtMaW5rXSwgc28gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgY2hhbmdlIGEgW0xpbmtdXG4gICBiYWNrIGludG8gYSBbUm9vdF0sIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNlLiBBbHNvLCBpZiBbZl1cbiAgIGNvdWxkIGNhbGwgW3NldF0sIHRoZW4gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgdW5kb1xuICAgdGhlIGVmZmVjdCBvZiB0aGlzIFtzZXRdIG9wZXJhdGlvbjsgdGhpcyBhbHNvIGRvZXMgbm90IG1ha2Ugc2Vuc2UuICopXG5cbigqIFRoZSB0ZXN0cyBbaWYgdiAhPSB2eSB0aGVuIC4uLl0gYW5kIFtpZiB2ICE9IHZ4IHRoZW4gLi4uXSBhcmUgaW50ZW5kZWQgdG9cbiAgIHNhdmUgYW4gYWxsb2NhdGlvbiBhbmQgYSB3cml0ZSB3aGVuIHBvc3NpYmxlLiAqKVxuXG4oKiBXZSBpbnZva2UgW2ZdIGJlZm9yZSBwZXJmb3JtaW5nIGFueSB1cGRhdGUsIHNvIHRoYXQgaWYgW2ZdIGZhaWxzXG4gICAoYnkgcmFpc2luZyBhbiBleGNlcHRpb24pLCB0aGUgc3RhdGUgaXMgdW5hZmZlY3RlZC4gKilcblxubGV0IG1lcmdlIChmIDogJ2EgLT4gJ2EgLT4gJ2EpICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBsZXQgeCA9IGZpbmQgeFxuICBhbmQgeSA9IGZpbmQgeSBpblxuICBpZiB4ID09IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCAheCwgIXkgd2l0aFxuICAgIHwgUm9vdCAoeyByYW5rID0gcng7IHZhbHVlID0gdnggfSBhcyByb290eCksXG4gICAgICBSb290ICh7IHJhbmsgPSByeTsgdmFsdWUgPSB2eSB9IGFzIHJvb3R5KSAtPlxuICAgICAgICBsZXQgdiA9IGYgdnggdnkgaW5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeCA6PSBMaW5rIHsgcGFyZW50ID0geSB9O1xuICAgICAgICAgIGlmIHYgIT0gdnkgdGhlbiByb290eS52YWx1ZSA8LSB2O1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiByb290eC52YWx1ZSA8LSB2O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgcm9vdHgucmFuayA8LSByeCArIDE7XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIHJvb3R4LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgSU5UTUFQID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB2YWwgZW1wdHk6ICdhIHRcbiAgdmFsIGZpbmQ6IGludCAtPiAnYSB0IC0+ICdhXG4gIHZhbCBhZGQ6IGludCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSW50TWFwIDogSU5UTUFQKSA9IHN0cnVjdFxuXG4oKiBBIHN0b3JlIGlzIGltcGxlbWVudGVkIGFzIGEgcGFpciBvZiBhbiBpbnRlZ2VyIGFkZHJlc3MgYW5kIGEgbWFwIG9mXG4gICBpbnRlZ2VyIGFkZHJlc3NlcyB0byB2YWx1ZXMuIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGVcbiAgIGRvbWFpbiBvZiB0aGUgbWFwIFtjb250ZW50XSBpcyB0aGUgc2VtaS1vcGVuIGludGVydmFsIG9mIHplcm9cbiAgIChpbmNsdWRlZCkgdXAgdG8gW2xpbWl0XSAoZXhjbHVkZWQpLiAqKVxuXG50eXBlICdhIHN0b3JlID0ge1xuICAoKiBUaGUgbmV4dCBhdmFpbGFibGUgYWRkcmVzcy4gKilcbiAgbXV0YWJsZSBsaW1pdDogICBpbnQ7XG4gICgqIFRoZSBjb250ZW50IG9mIHRoZSBzdG9yZS4gKilcbiAgbXV0YWJsZSBjb250ZW50OiAnYSBJbnRNYXAudFxufVxuXG5sZXQgbmV3X3N0b3JlICgpID0ge1xuICBsaW1pdCA9IDA7XG4gIGNvbnRlbnQgPSBJbnRNYXAuZW1wdHlcbn1cblxuKCogQmVjYXVzZSBhIHBlcnNpc3RlbnQgbWFwIGlzIHVzZWQsIGNvcHlpbmcgYSBzdG9yZSBhbW91bnRzIHRvIGNvcHlpbmdcbiAgIHRoZSBtdXRhYmxlIHJlY29yZCBhdCB0aGUgcm9vdC4gKilcblxubGV0IGNvcHkgcyA9XG4gIHsgbGltaXQgPSBzLmxpbWl0OyBjb250ZW50ID0gcy5jb250ZW50IH1cblxuKCogQSByZWZlcmVuY2UgaXMganVzdCBhbiBpbnRlZ2VyIGFkZHJlc3MuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gIGludFxuXG5sZXQgbWFrZSBzIHYgPVxuICBsZXQgeCA9IHMubGltaXQgaW5cbiAgcy5saW1pdCA8LSB4ICsgMTtcbiAgcy5jb250ZW50IDwtIEludE1hcC5hZGQgeCB2IHMuY29udGVudDtcbiAgeFxuXG4oKiBbY2hlY2sgcyB4XSBjaGVja3MgdGhhdCB0aGUgYWRkcmVzcyBbeF0gaXMgaW4gcmFuZ2UgZm9yIHRoZSBzdG9yZSBbc10uIElmXG4gICB0aGlzIGR5bmFtaWMgY2hlY2sgZmFpbHMsIHRoZW4gdGhlIHVzZXIgaXMgY29uZnVzZWQgYW5kIGhhcyBwYXNzZWQgdXMgYW5cbiAgIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKElmIHRoZSBjaGVjayBzdWNjZWVkcyxcbiAgIHRoZSB1c2VyIG1heSBiZSBjb25mdXNlZCB0b28hIGJ1dCB3ZSBjYW5ub3QgZGV0ZWN0IGl0LikgKilcblxuZXhjZXB0aW9uIEludmFsaWRSZWZcblxubGV0IGNoZWNrIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgPVxuICAoKiBXZSBkbyBub3QgY2hlY2sgdGhhdCBbeF0gaXMgbm9ubmVnYXRpdmUuIEFuIG92ZXJmbG93IGNhbm5vdCBvY2N1cixcbiAgICAgc2luY2UgdGhhdCB3b3VsZCBpbXBseSB0aGF0IHdlIGhhdmUgZmlsbGVkIHRoZSBtZW1vcnkgd2l0aCBhIGh1Z2VcbiAgICAgYXJyYXkuICopXG4gICBpZiB4ID49IHMubGltaXQgdGhlblxuICAgICByYWlzZSBJbnZhbGlkUmVmXG5cbmxldCBnZXQgcyB4ID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIEludE1hcC5maW5kIHggcy5jb250ZW50XG5cbmxldCBzZXQgcyB4IHYgPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgcy5jb250ZW50IDwtIEludE1hcC5hZGQgeCB2IHMuY29udGVudFxuXG5sZXQgZXEgcyAoeCA6IGludCkgKHkgOiBpbnQpID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIGNoZWNrIHMgeTtcbiAgeCA9IHlcblxuZW5kXG5cbigqIEluY2x1ZGUgdGhlIG1vc3QgY29tbW9uIGluc3RhbmNlIG9mIHRoZSBhYm92ZSBmdW5jdG9yLiAqKVxuXG5pbmNsdWRlIE1ha2UoTWFwLk1ha2Uoc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgY29tcGFyZSA9ICgtKSAoKiBvayBzaW5jZSB0aGUgYXJndW1lbnRzIGFyZSBub25uZWdhdGl2ZSBpbnRlZ2VycyAqKVxuZW5kKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBXaGVuIE9DYW1sJ3MgYnVpbHQtaW4gc3RvcmUgaXMgdXNlZCwgbm8gZXhwbGljaXQgc3RvcmUgaXMgbmVlZGVkLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgdW5pdFxuXG5sZXQgbmV3X3N0b3JlICgpID1cbiAgKClcblxuKCogQ29weWluZyBpcyBub3Qgc3VwcG9ydGVkLiAqKVxuXG5sZXQgY29weSBfcyA9XG4gIGFzc2VydCBmYWxzZVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBhIHByaW1pdGl2ZSByZWZlcmVuY2UuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gICdhIHJlZlxuXG5sZXQgbWFrZSAoKSB2ID1cbiAgcmVmIHZcblxubGV0IGdldCAoKSB4ID1cbiAgIXhcblxubGV0IHNldCAoKSB4IHYgPVxuICB4IDo9IHZcblxubGV0IGVxICgpIHggeSA9XG4gIHggPT0geVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcmVmZXJlbmNlIGNlbGwgcmVjb3JkcyBib3RoIGl0cyBjdXJyZW50IChwb3NzaWJseSB1bmNvbW1pdHRlZCkgdmFsdWUgYW5kXG4gICBpdHMgbGFzdCBjb21taXR0ZWQgdmFsdWUuIEEgY2VsbCBpcyBjb25zaWRlcmVkIHN0YWJsZSB3aGVuIHRoZXNlIHR3byB2YWx1ZXNcbiAgIGFyZSAocGh5c2ljYWxseSkgZXF1YWwsIGFuZCB1bnN0YWJsZSBvdGhlcndpc2UuICopXG5cbigqIE9uZSBjb3VsZCBwZXJoYXBzIGVucmljaCBlYWNoIGNlbGwgd2l0aCBhIHBvaW50ZXIgdG8gaXRzIHN0b3JlLCBzbyBhcyB0b1xuICAgZW5zdXJlIGF0IHJ1bnRpbWUgdGhhdCB0aGUgdXNlciBpcyBub3QgY29uZnVzZWQuICopXG5cbnR5cGUgJ2EgcnJlZiA9IHtcbiAgKCogVGhlIGN1cnJlbnQgKHBvc3NpYmx5IHVuY29tbWl0dGVkKSB2YWx1ZS4gKilcbiAgbXV0YWJsZSBjdXJyZW50OiAnYTtcbiAgKCogVGhlIGxhc3QgY29tbWl0dGVkIHZhbHVlLiAqKVxuICBtdXRhYmxlIGNvbW1pdHRlZDogJ2Fcbn1cblxuKCogQSB0cmFuc2FjdGlvbiBjb250YWlucyBhIHN0YWNrIG9mIGFsbCB1bnN0YWJsZSBjZWxscyAoYW5kIHBvc3NpYmx5IHNvbWVcbiAgIHN0YWJsZSBjZWxscyB0b28sIGFsdGhvdWdoIHRoYXQgaXMgdW5saWtlbHkpLiAqKVxuXG50eXBlICdhIHRyYW5zYWN0aW9uID1cbiAgJ2EgcnJlZiBTdGFjay50XG5cbigqIEEgc3RvcmUgY29udGFpbnMgYW4gb3B0aW9uYWwgdHJhbnNhY3Rpb24uIFRoaXMgaW5kaWNhdGVzIHdoZXRoZXIgYVxuICAgdHJhbnNhY3Rpb24gaXMgY3VycmVudGx5IG9uZ29pbmcuIFRyYW5zYWN0aW9ucyBjYW5ub3QgYmUgbmVzdGVkLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgeyBtdXRhYmxlIHRyYW5zYWN0aW9uOiAnYSB0cmFuc2FjdGlvbiBvcHRpb24gfVxuXG5sZXQgbmV3X3N0b3JlICgpIDogJ2Egc3RvcmUgPVxuICB7IHRyYW5zYWN0aW9uID0gTm9uZSB9XG5cbigqIENvcHlpbmcgaXMgbm90IHN1cHBvcnRlZC4gKilcblxubGV0IGNvcHkgX3MgPVxuICBhc3NlcnQgZmFsc2VcblxubGV0IG1ha2UgKF9zIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIHsgY3VycmVudCA9IHY7IGNvbW1pdHRlZCA9IHYgfVxuXG5sZXQgZ2V0IChfcyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICB4LmN1cnJlbnRcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gICgqIElmIHRoZSBuZXcgdmFsdWUgaGFwcGVucyB0byBiZSB0aGUgY3VycmVudCB2YWx1ZSwgdGhlcmUgaXMgbm90aGluZyB0byBkby4gKilcbiAgbGV0IGN1cnJlbnQgPSB4LmN1cnJlbnQgaW5cbiAgaWYgdiA9PSBjdXJyZW50IHRoZW5cbiAgICAoKVxuICBlbHNlIGJlZ2luIG1hdGNoIHMudHJhbnNhY3Rpb24gd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgICgqIE91dHNpZGUgb2YgYSB0cmFuc2FjdGlvbiwgdHdvIG5vcm1hbCB3cml0ZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQuXG4gICAgICAgICBUaGUgY2VsbCByZW1haW5zIHN0YWJsZS4gTm90aGluZyBpcyBsb2dnZWQuICopXG4gICAgICB4LmN1cnJlbnQgPC0gdjtcbiAgICAgIHguY29tbWl0dGVkIDwtIHZcbiAgfCBTb21lIHN0YWNrIC0+XG4gICAgICAoKiBXZSBhcmUgd2l0aGluIGEgdHJhbnNhY3Rpb24uICopXG4gICAgICAoKiBJZiB0aGlzIGNlbGwgd2FzIHN0YWJsZSBhbmQgbm93IGJlY29tZXMgdW5zdGFibGUsIHRoZW4gaXQgbXVzdCBiZVxuICAgICAgICAgaW5zZXJ0ZWQgaW50byB0aGUgc2V0IG9mIHVuc3RhYmxlIGNlbGxzLCB3aGljaCBpcyByZWNvcmRlZCBhcyBwYXJ0XG4gICAgICAgICBvZiB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICBpZiBjdXJyZW50ID09IHguY29tbWl0dGVkIHRoZW5cbiAgICAgICAgU3RhY2sucHVzaCB4IHN0YWNrO1xuICAgICAgKCogVGhlIGNlbGwgbXVzdCB0aGVuIGJlIHVwZGF0ZWQuIElmIFt2XSBoYXBwZW5zIHRvIGJlIGVxdWFsIHRvXG4gICAgICAgICBbY29tbWl0dGVkXSwgdGhpcyBjb3VsZCBtYWtlIHRoZSBjZWxsIHN0YWJsZSBhZ2Fpbi4gV2UgZG8gbm90XG4gICAgICAgICBjaGVjayBmb3IgdGhpcyB1bmxpa2VseSBzaXR1YXRpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGUgc2V0IG9mXG4gICAgICAgICB1bnN0YWJsZSBjZWxscyBjb3VsZCBhY3R1YWxseSBjb250YWluIHN0YWJsZSBjZWxscyB0b28uICopXG4gICAgICB4LmN1cnJlbnQgPC0gdlxuICAgIGVuZFxuXG5sZXQgZXEgKF9zIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICB4ID09IHlcblxuZXhjZXB0aW9uIE5lc3RlZFRyYW5zYWN0aW9uQXR0ZW1wdFxuXG5sZXQgY29tbWl0IHggPVxuICB4LmNvbW1pdHRlZCA8LSB4LmN1cnJlbnRcblxubGV0IHJvbGxiYWNrIHggPVxuICB4LmN1cnJlbnQgPC0geC5jb21taXR0ZWRcblxubGV0IHRlbnRhdGl2ZWx5IChzIDogJ2Egc3RvcmUpIChmIDogdW5pdCAtPiAnYikgOiAnYiA9XG4gIG1hdGNoIHMudHJhbnNhY3Rpb24gd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICAgcmFpc2UgTmVzdGVkVHJhbnNhY3Rpb25BdHRlbXB0XG4gIHwgTm9uZSAtPlxuICAgICAgbGV0IHN0YWNrID0gU3RhY2suY3JlYXRlKCkgaW5cbiAgICAgIHMudHJhbnNhY3Rpb24gPC0gU29tZSBzdGFjaztcbiAgICAgIHRyeVxuICAgICAgICBsZXQgYiA9IGYoKSBpblxuICAgICAgICAoKiBDb21taXQgZXZlcnkgdW5zdGFibGUgY2VsbC4gKilcbiAgICAgICAgU3RhY2suaXRlciBjb21taXQgc3RhY2s7XG4gICAgICAgICgqIENsb3NlIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICAgcy50cmFuc2FjdGlvbiA8LSBOb25lO1xuICAgICAgICAoKiBSZXBvcnQgdGhlIG91dGNvbWUuICopXG4gICAgICAgIGJcbiAgICAgIHdpdGggZSAtPlxuICAgICAgICBsZXQgYiA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlKCkgaW5cbiAgICAgICAgKCogUm9sbCBiYWNrIGV2ZXJ5IHVuc3RhYmxlIGNlbGwuICopXG4gICAgICAgIFN0YWNrLml0ZXIgcm9sbGJhY2sgc3RhY2s7XG4gICAgICAgICgqIENsb3NlIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICAgcy50cmFuc2FjdGlvbiA8LSBOb25lO1xuICAgICAgICAoKiBSZXBvcnQgdGhlIG91dGNvbWUuICopXG4gICAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgc3RvcmUgaXMgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZW5zaWJsZSBhcnJheSwgdGhhdCBpcywgYSBwYWlyIG9mIGFuXG4gICBpbnRlZ2VyIGFkZHJlc3MgYW5kIGFuIGFycmF5LiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGxlbmd0aCBvZlxuICAgdGhlIGFycmF5IGlzIGF0IGxlYXN0IFtsaW1pdF0uIFRoZSBhcmVhIG9mIHRoZSBhcnJheSBhdCBpbmRleCBbbGltaXRdIGFuZFxuICAgYmV5b25kIGlzIGNvbnNpZGVyZWQgdW5pbml0aWFsaXplZC4gKilcblxuKCogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoaXMgYXJlYSBpcyBmaWxsZWQgd2l0aCBhcmJpdHJhcnkgdmFsdWUocylcbiAgIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGluIGNhbGxzIHRvIFttYWtlXSBvciBbc2V0XS4gVGhpcyBpcyBub3QgaWRlYWwsIGFzIGl0XG4gICBjYW4gY2F1c2UgYSBtZW1vcnkgbGVhay4gKilcblxudHlwZSAnYSBzdG9yZSA9IHtcbiAgKCogVGhlIGxvZ2ljYWwgc2l6ZSBvZiB0aGUgYXJyYXk7IGFsc28sIHRoZSBuZXh0IGF2YWlsYWJsZSBhZGRyZXNzLiAqKVxuICBtdXRhYmxlIGxpbWl0OiAgIGludDtcbiAgKCogVGhlIGFycmF5LCB3aG9zZSBsZW5ndGggaXMgYXQgbGVhc3QgW2xpbWl0XS4gKilcbiAgbXV0YWJsZSBjb250ZW50OiAnYSBhcnJheVxufVxuXG4oKiBUaGUgYXJyYXkgaXMgY3JlYXRlZCB3aXRoIGEgc2l6ZSBhbmQgbGVuZ3RoIG9mIHplcm8uIFdlIGhhdmUgbm8gb3RoZXJcbiAgIGNob2ljZSwgc2luY2Ugd2UgZG8gbm90IGhhdmUgYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYXQgaGFuZC4gKilcblxubGV0IG5ld19zdG9yZSAoKSA6ICdhIHN0b3JlID0ge1xuICBsaW1pdCA9IDA7XG4gIGNvbnRlbnQgPSBbfHxdXG59XG5cbigqIENvcHlpbmcgaXMgc3VwcG9ydGVkLCBidXQgaXMgbm90IGNoZWFwLiBVc2UgYXQgeW91ciBvd24gcmlzay4gKilcblxubGV0IGNvcHkgKHMgOiAnYSBzdG9yZSkgOiAnYSBzdG9yZSA9XG4gIHsgbGltaXQgPSBzLmxpbWl0OyBjb250ZW50ID0gQXJyYXkuY29weSBzLmNvbnRlbnQgfVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBhbiBpbmRleCBpbnRvIHRoZSBhcnJheS4gKilcblxudHlwZSAnYSBycmVmID1cbiAgaW50XG5cbigqIFRoZSBhcnJheSBqdW1wcyBmcm9tIGxlbmd0aCB6ZXJvIHRvIGxlbmd0aCBbZGVmYXVsdF9pbml0aWFsX2xlbmd0aF0gYXMgc29vblxuICAgYXMgYSBjYWxsIHRvIFttYWtlXSBpcyBtYWRlLiAqKVxuXG5sZXQgZGVmYXVsdF9pbml0aWFsX2xlbmd0aCA9XG4gIDI1NlxuXG4oKiBbZW5sYXJnZSBzIHZdIGluY3JlYXNlcyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSAoaWYgbmVjZXNzYXJ5KSBzbyBhcyB0b1xuICAgZW5zdXJlIHRoYXQgW3MubGltaXRdIGJlY29tZXMgYSB2YWxpZCBpbmRleC4gVGhlIGFyZ3VtZW50IFt2XSBpcyB1c2VkIGFzIGFcbiAgIGRlZmF1bHQgdmFsdWUgdG8gZmlsbCB0aGUgdW5pbml0aWFsaXplZCBhcmVhLiAqKVxuXG5sZXQgZW5sYXJnZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgY29udGVudCA9IHMuY29udGVudCBpblxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbnRlbnQgaW5cbiAgaWYgcy5saW1pdCA9IGxlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbmd0aCcgPVxuICAgICAgaWYgbGVuZ3RoID0gMCB0aGVuXG4gICAgICAgIGRlZmF1bHRfaW5pdGlhbF9sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgMiAqIGxlbmd0aFxuICAgIGluXG4gICAgYXNzZXJ0IChzLmxpbWl0IDwgbGVuZ3RoJyk7XG4gICAgbGV0IGNvbnRlbnQnID0gQXJyYXkubWFrZSBsZW5ndGgnIHYgaW5cbiAgICBBcnJheS5ibGl0IGNvbnRlbnQgMCBjb250ZW50JyAwIGxlbmd0aDtcbiAgICBzLmNvbnRlbnQgPC0gY29udGVudCdcbiAgZW5kXG5cbigqIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBhbmQgW0FycmF5LnVuc2FmZV9nZXRdIHdpdGhvdXRcbiAgIGFueSBwcmVjYXV0aW9ucywgc2luY2UgdGhlIE9DYW1sIHR5cGUtY2hlY2tlciBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgdGhlXG4gICBpbmRpY2VzIGFyZSBpbiByYW5nZS4gQSBjb25mdXNlZCB1c2VyIGNvdWxkIHBhc3MgcmVmZXJlbmNlcyBpbnRvIHNvbWVcbiAgIG90aGVyIHN0b3JlLiBXZSBjaG9vc2UgdG8gZXhwbGljaXRseSBjaGVjayB0aGF0IHRoZSBpbmRleCBpcyB3aXRoaW4gdGhlXG4gICBsb2dpY2FsIGJvdW5kcyBvZiB0aGUgYXJyYXkgLS0gdGhpcyBpcyBhIG1vcmUgcHJlY2lzZSBjaGVjay4gKilcblxuZXhjZXB0aW9uIEludmFsaWRSZWZcblxubGV0IGNoZWNrIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiB1bml0ID1cbiAgKCogV2UgZG8gbm90IGNoZWNrIHRoYXQgW3hdIGlzIG5vbm5lZ2F0aXZlLiBBbiBvdmVyZmxvdyBjYW5ub3Qgb2NjdXIsXG4gICAgIHNpbmNlIHRoYXQgd291bGQgaW1wbHkgdGhhdCB3ZSBoYXZlIGZpbGxlZCB0aGUgbWVtb3J5IHdpdGggYSBodWdlXG4gICAgIGFycmF5LiAqKVxuICBpZiB4ID49IHMubGltaXQgdGhlblxuICAgIHJhaXNlIEludmFsaWRSZWZcblxubGV0IG1ha2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgZW5sYXJnZSBzIHY7XG4gIGxldCB4ID0gcy5saW1pdCBpblxuICBzLmxpbWl0IDwtIHggKyAxO1xuICBBcnJheS51bnNhZmVfc2V0IHMuY29udGVudCB4IHY7XG4gIHhcblxubGV0IGdldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBjaGVjayBzIHg7XG4gIEFycmF5LnVuc2FmZV9nZXQgcy5jb250ZW50IHhcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIGNoZWNrIHMgeDtcbiAgQXJyYXkudW5zYWZlX3NldCBzLmNvbnRlbnQgeCB2XG5cbmxldCBlcSAgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIGNoZWNrIHMgeDtcbiAgY2hlY2sgcyB5O1xuICB4ID0geVxuIiwiLyogSUQgRkFRXG5cbiAgIFdIQVRTIEFOIElEP1xuXG4gICBJRHMgYXJlIHJhbmRvbS1nZW5lcmF0ZWQgMTI4Yml0IFVVSURzOyB1c2UgSWQubWsoKSB0byBnZW5lcmF0ZSBvbmUuXG5cbiAgIFdIQVQgQVJFIElEUyBVU0VEIEZPUj9cblxuICAgVW5pcXVlIGlkcyBhcmUgYXNzaWduZWQgdG8gdGlsZXMgKGFuZCBoZW5jZSwgaW5kaXJlY3RseSwgdG8gdGVybXMpXG4gICBhdCB0aGUgdGltZSBvZiBjcmVhdGlvbiBvZiBzdXJmYWNlIHN5bnRheC4gSWRzIGFyZSB1c2VkIGFzIGtleXMgaW5cbiAgIHZhcmlvdXMgbWFwcyAobW9zdGx5IG5vdGFibHkgdGhlIE1lYXN1cmVkIG1hcCwgd2hpY2ggdHJhY2tzIHNjcmVlblxuICAgY29vcmRpbmF0ZXMgZm9yIHRoZSB2aWV3LCBhbmQgdGhlIEluZm8gbWFwIHdoaWNoIGNvbGxlY3RzIHN0YXRpY1xuICAgZGF0YSBzdWNoIGFzIHR5cGUgaW5mb3JtYXRpb24pLiBJZHMgYXJlIHVzZWQgZm9yIG1hbnkgemlwcGVyIGFjdGlvbnMsXG4gICBpbmNsdWRpbmcganVtcCB0byBkZWZpbml0aW9uLCBhbmQgYXJlIGFsc28gdXNlZCB0byBjb29yZGluYXRlIHRlcm1cbiAgIGRlY29yYXRpb25zLiBBY2NpZGVudGFsbHkgY3JlYXRpbmcgbm9uLXVuaXF1ZSBJRHMgY2FuIGJlIHRoZSBjYXVzZVxuICAgb2YgbWFueSBvZGQgaXNzdWVzIGZvciB6aXBwZXIgYWN0aW9ucyBhbmQgZGlzcGxheS5cblxuICAgQlVUIFdIWSBJUyBUSEVSRSBBIF9MSVNUXyBPRiBJRFM/XG5cbiAgIFRlY2huaWNhbGx5LCBlYWNoIHRpbGUgaGFzIGEgbGlzdCBvZiBpZHMsIHRvIHN1cHBvcnQgbi1hcnkgZm9ybXMgbGlrZVxuICAgdHVwbGVzOyB0aGVyZSBhcmUgcmVwX2lkIGZ1bmN0aW9ucyBpbiBUZXJtIHRvIGNhbm9uaWNhbGx5IGV4dHJhY3RcbiAgIHNpbmdsZSByZXByZXNlbnRhdGl2ZSBpZHMgZnJvbSB0aGlzIGxpc3Qgd2hlcmUgYXBwcm9wcmlhdGUuXG5cbiAgIENBTiBJIFVTRSBJRFMgSU4gRFlOQU1JQ1M/XG5cbiAgIEN1cnJlbnRseSwgREhFeHBzIChhcyBwcm9kdWNlZCBieSB0aGUgZWxhYm9yYXRvciBhbmQgcHJvZHVjZWQvY29uc3VtZWRcbiAgIGJ5IHRoZSBldmFsdWF0b3IpIGRvIG5vdCBpbiBnZW5lcmFsIHBlcnNpc3QgaWRzOyB0aGUgZXhjZXB0aW9ucyBhcmVcbiAgIHRoaW5ncyBsaWtlIGhvbGVzIGFuZCB0ZXN0cyB3aGljaCBoYXZlIGFkZGl0aW9uYWwgbWV0YWRhdGEgd2hpY2ggaXNcbiAgIGFjY3VtdWxhdGVkIGR1dGluZyBldmFsdWF0aW9uLiBUaGVyZSBhcmUgbWFueSB1c2UgY2FzZXMgZm9yIHRyYWNraW5nXG4gICBpZHMgbW9yZSBnZW5lcmFsbHkgZHVyaW5nIGV2YWx1YXRpb24sIGJ1dCBkb2luZyBzbyBpbiBhIHByaW5jaXBsZWRcbiAgIHdheSBpcyBhIGxhcmdlLXNjYWxlIGNoYW5nZSB3aXRoIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zLlxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG5sZXQgc2V4cF9vZl90OiBVdWlkbS50ID0+IFNleHBsaWIuU2V4cC50ID1cbiAgdCA9PiBTZXhwbGliLlNleHAuQXRvbShVdWlkbS50b19zdHJpbmcodCkpO1xuXG5sZXQgdF9vZl9zZXhwOiBTZXhwbGliLlNleHAudCA9PiBVdWlkbS50ID1cbiAgZnVuXG4gIHwgU2V4cGxpYi5TZXhwLkF0b20ocykgPT5cbiAgICBVdWlkbS5vZl9zdHJpbmcocylcbiAgICB8PiBVdGlsLk9wdFV0aWwuZ2V0KF8gPT4gZmFpbHdpdGgoXCJVdWlkbS50X29mX3NleHA6IG5vdCB2YWxpZCBVVUlEICgxKVwiKSlcbiAgfCBfID0+IGZhaWx3aXRoKFwiVXVpZG0udF9vZl9zZXhwOiBub3QgdmFsaWQgVVVJRCAoMilcIik7XG5cbmxldCB5b2pzb25fb2ZfdDogVXVpZG0udCA9PiBZb2pzb24uU2FmZS50ID0gdCA9PiBgU3RyaW5nKFV1aWRtLnRvX3N0cmluZyh0KSk7XG5cbmxldCB0X29mX3lvanNvbjogWW9qc29uLlNhZmUudCA9PiBVdWlkbS50ID1cbiAgZnVuXG4gIHwgYFN0cmluZyhzKSA9PlxuICAgIFV1aWRtLm9mX3N0cmluZyhzKVxuICAgIHw+IFV0aWwuT3B0VXRpbC5nZXQoXyA9PlxuICAgICAgICAgZmFpbHdpdGgoXCJVdWlkbS50X29mX3lvanNvbjogbm90IHZhbGlkIFVVSUQgKDEpXCIpXG4gICAgICAgKVxuICB8IF8gPT4gZmFpbHdpdGgoXCJVdWlkbS50X29mX3lvanNvbjogbm90IHZhbGlkIFVVSUQgKDIpXCIpO1xuXG50eXBlIHQgPSBVdWlkbS50O1xuXG5sZXQgbWs6IHVuaXQgPT4gdCA9IFV1aWRtLnY0X2dlbihSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSk7XG5cbmxldCBjb21wYXJlOiAodCwgdCkgPT4gaW50ID0gVXVpZG0uY29tcGFyZTtcbmxldCB0b19zdHJpbmc6ICh+dXBwZXI6IGJvb2w9PywgdCkgPT4gc3RyaW5nID0gVXVpZG0udG9fc3RyaW5nO1xubGV0IG9mX3N0cmluZzogKH5wb3M6IGludD0/LCBzdHJpbmcpID0+IG9wdGlvbih0KSA9IFV1aWRtLm9mX3N0cmluZztcbmxldCBwcDogKEZvcm1hdC5mb3JtYXR0ZXIsIHQpID0+IHVuaXQgPVxuICAoZiwgaWQpID0+XG4gICAgRm9ybWF0LmZwcmludGYoXG4gICAgICBmLFxuICAgICAgXCJPcHRpb24uZ2V0KEhhejNsY29yZS5JZC5vZl9zdHJpbmcoXFxcIiVzXFxcIikpXCIsXG4gICAgICB0b19zdHJpbmcoaWQpLFxuICAgICk7XG5sZXQgc2hvdyA9IGlkID0+XG4gIEZvcm1hdC5zcHJpbnRmKFxuICAgIFwiT3B0aW9uLmdldChIYXozbGNvcmUuSWQub2Zfc3RyaW5nKFxcXCIlc1xcXCIpKVwiLFxuICAgIHRvX3N0cmluZyhpZCksXG4gICk7XG5cbltAZGVyaXZpbmcgKHNleHAsIHlvanNvbildXG50eXBlIGJpbmRpbmcoJ3YpID0gKHQsICd2KTtcblxubW9kdWxlIE1hcCA9IHtcbiAgaW5jbHVkZSBNYXAuTWFrZShVdWlkbSk7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3YsIG1hcCkgPT5cbiAgICBtYXAgfD4gYmluZGluZ3MgfD4gU2V4cGxpYi5TdGQuc2V4cF9vZl9saXN0KHNleHBfb2ZfYmluZGluZyhzZXhwX29mX3YpKTtcblxuICBsZXQgdF9vZl9zZXhwID0gKHZfb2Zfc2V4cCwgc2V4cCkgPT5cbiAgICBzZXhwXG4gICAgfD4gU2V4cGxpYi5TdGQubGlzdF9vZl9zZXhwKGJpbmRpbmdfb2Zfc2V4cCh2X29mX3NleHApKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gb2Zfc2VxO1xuXG4gIGxldCB5b2pzb25fb2ZfdCA9ICh5b2pzb25fb2ZfdiwgbWFwKSA9PlxuICAgIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuXG4gIGxldCB0X29mX3lvanNvbiA9ICh2X29mX3lvanNvbiwganNvbikgPT5cbiAgICBqc29uXG4gICAgfD4gbGlzdF9vZl95b2pzb24oYmluZGluZ19vZl95b2pzb24odl9vZl95b2pzb24pKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gb2Zfc2VxO1xuXG4gIGxldCBwcCA9IChwcF92LCBmbXQsIG1hcCkgPT5cbiAgICBiaW5kaW5ncyhtYXApXG4gICAgfD4gTGlzdC5pdGVyKCgoaywgdikpID0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZihmbXQsIFwiJWEgLT4gJWFcXG5cIiwgcHAsIGssIHBwX3YsIHYpXG4gICAgICAgKTtcbn07XG5sZXQgaW52YWxpZDogdCA9XG4gIFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIgfD4gVXVpZG0ub2Zfc3RyaW5nIHw+IE9wdGlvbi5nZXQ7XG5cbi8qIFNwZWNpYWwgaWQgdXNlZCB0byBkZW5vdGUgYSB0cml2aWFsIChlbXB0eSkgZnVuY3Rpb24gYXBwbGljYXRpb24gKi9cbmxldCBudWxsYXJ5X2FwX2ZsYWc6IHQgPVxuICBcIkRFQURCRUVGLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiIHw+IFV1aWRtLm9mX3N0cmluZyB8PiBPcHRpb24uZ2V0O1xuXG5sZXQgaXNfbnVsbGFyeV9hcF9mbGFnID0gKGlkczogbGlzdCh0KSkgPT5cbiAgc3dpdGNoIChpZHMpIHtcbiAgfCBbaWRdIHdoZW4gaWQgPT0gbnVsbGFyeV9hcF9mbGFnID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbm1vZHVsZSBVZjoge1xuICB0eXBlIHN0b3JlKCdhKTtcbiAgbGV0IGluaXQ6IHVuaXQgPT4gc3RvcmUoXyk7XG4gIGxldCBhZGQ6ICh0LCAnYSwgc3RvcmUoJ2EpKSA9PiB1bml0O1xuICBsZXQgZ2V0OiAodCwgc3RvcmUoJ2EpKSA9PiAnYTtcbiAgbGV0IGdldF9vcHQ6ICh0LCBzdG9yZSgnYSkpID0+IG9wdGlvbignYSk7XG4gIGxldCBzZXQ6ICh0LCAnYSwgc3RvcmUoJ2EpKSA9PiB1bml0O1xuICBsZXQgbWVyZ2U6ICgoJ2EsICdhKSA9PiAnYSwgdCwgdCwgc3RvcmUoJ2EpKSA9PiB1bml0O1xufSA9IHtcbiAgbW9kdWxlIE0gPSBVbmlvbkZpbmQuTWFrZShVbmlvbkZpbmQuU3RvcmVWZWN0b3IpO1xuICB0eXBlIHN0b3JlKCdhKSA9IHtcbiAgICByZWZzOiByZWYoTWFwLnQoTS5ycmVmKCdhKSkpLFxuICAgIHN0b3JlOiBNLnN0b3JlKCdhKSxcbiAgfTtcbiAgbGV0IGluaXQgPSAoKSA9PiB7cmVmczogcmVmKE1hcC5lbXB0eSksIHN0b3JlOiBNLm5ld19zdG9yZSgpfTtcbiAgbGV0IHJyZWYgPSAoaWQsIHMpID0+IE1hcC5maW5kKGlkLCBzLnJlZnNeKTtcbiAgbGV0IGFkZCA9IChpZCwgYSwgcykgPT5cbiAgICBzd2l0Y2ggKE1hcC5maW5kX29wdChpZCwgcy5yZWZzXikpIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCByID0gTS5tYWtlKHMuc3RvcmUsIGEpO1xuICAgICAgcy5yZWZzIDo9IE1hcC5hZGQoaWQsIHIsIHMucmVmc14pO1xuICAgIHwgU29tZShfKSA9PiAoKVxuICAgIH07XG4gIGxldCBnZXQgPSAoaWQsIHMpID0+IE0uZ2V0KHMuc3RvcmUsIE0uZmluZChzLnN0b3JlLCBycmVmKGlkLCBzKSkpO1xuICBsZXQgZ2V0X29wdCA9IChpZCwgcykgPT5cbiAgICBNYXAuZmluZF9vcHQoaWQsIHMucmVmc14pIHw+IE9wdGlvbi5tYXAoXyA9PiBnZXQoaWQsIHMpKTtcbiAgbGV0IHNldCA9IChpZCwgYSwgcykgPT4gTS5zZXQocy5zdG9yZSwgTS5maW5kKHMuc3RvcmUsIHJyZWYoaWQsIHMpKSwgYSk7XG5cbiAgbGV0IG1lcmdlID0gKGYsIGlkLCBpZCcsIHMpID0+XG4gICAgaWdub3JlKE0ubWVyZ2Uocy5zdG9yZSwgZiwgcnJlZihpZCwgcyksIHJyZWYoaWQnLCBzKSkpO1xufTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfdW5fYm9vbCA9XG4gIHwgTm90O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9wX3VuX21ldGEgPVxuICB8IFVucXVvdGU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfdW5faW50ID1cbiAgfCBNaW51cztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBvcF9iaW5fYm9vbCA9XG4gIHwgQW5kXG4gIHwgT3I7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluX2ludCA9XG4gIHwgUGx1c1xuICB8IE1pbnVzXG4gIHwgVGltZXNcbiAgfCBQb3dlclxuICB8IERpdmlkZVxuICB8IExlc3NUaGFuXG4gIHwgTGVzc1RoYW5PckVxdWFsXG4gIHwgR3JlYXRlclRoYW5cbiAgfCBHcmVhdGVyVGhhbk9yRXF1YWxcbiAgfCBFcXVhbHNcbiAgfCBOb3RFcXVhbHM7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluX2Zsb2F0ID1cbiAgfCBQbHVzXG4gIHwgTWludXNcbiAgfCBUaW1lc1xuICB8IFBvd2VyXG4gIHwgRGl2aWRlXG4gIHwgTGVzc1RoYW5cbiAgfCBMZXNzVGhhbk9yRXF1YWxcbiAgfCBHcmVhdGVyVGhhblxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbFxuICB8IEVxdWFsc1xuICB8IE5vdEVxdWFscztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBvcF9iaW5fc3RyaW5nID1cbiAgfCBDb25jYXRcbiAgfCBFcXVhbHM7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfdW4gPVxuICB8IE1ldGEob3BfdW5fbWV0YSlcbiAgfCBJbnQob3BfdW5faW50KVxuICB8IEJvb2wob3BfdW5fYm9vbCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluID1cbiAgfCBJbnQob3BfYmluX2ludClcbiAgfCBGbG9hdChvcF9iaW5fZmxvYXQpXG4gIHwgQm9vbChvcF9iaW5fYm9vbClcbiAgfCBTdHJpbmcob3BfYmluX3N0cmluZyk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYXBfZGlyZWN0aW9uID1cbiAgfCBGb3J3YXJkXG4gIHwgUmV2ZXJzZTtcblxuLy8gQXJlIHRoZXNlIHNob3cgZnVuY3Rpb24gbmVjZXNzYXJ5P1xubGV0IHNob3dfb3BfdW5fbWV0YTogb3BfdW5fbWV0YSA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBVbnF1b3RlID0+IFwiVW4tcXVvdGF0aW9uXCI7XG5cbmxldCBzaG93X29wX3VuX2Jvb2w6IG9wX3VuX2Jvb2wgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTm90ID0+IFwiQm9vbGVhbiBOZWdhdGlvblwiO1xuXG5sZXQgc2hvd19vcF91bl9pbnQ6IG9wX3VuX2ludCA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBNaW51cyA9PiBcIkludGVnZXIgTmVnYXRpb25cIjtcblxubGV0IHNob3dfdW5vcDogb3BfdW4gPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTWV0YShvcCkgPT4gc2hvd19vcF91bl9tZXRhKG9wKVxuICB8IEJvb2wob3ApID0+IHNob3dfb3BfdW5fYm9vbChvcClcbiAgfCBJbnQob3ApID0+IHNob3dfb3BfdW5faW50KG9wKTtcblxubGV0IHNob3dfb3BfYmluX2Jvb2w6IG9wX2Jpbl9ib29sID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IEFuZCA9PiBcIkJvb2xlYW4gQ29uanVuY3Rpb25cIlxuICB8IE9yID0+IFwiQm9vbGVhbiBEaXNqdW5jdGlvblwiO1xuXG5sZXQgc2hvd19vcF9iaW5faW50OiBvcF9iaW5faW50ID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IFBsdXMgPT4gXCJJbnRlZ2VyIEFkZGl0aW9uXCJcbiAgfCBNaW51cyA9PiBcIkludGVnZXIgU3VidHJhY3Rpb25cIlxuICB8IFRpbWVzID0+IFwiSW50ZWdlciBNdWx0aXBsaWNhdGlvblwiXG4gIHwgUG93ZXIgPT4gXCJJbnRlZ2VyIEV4cG9uZW50aWF0aW9uXCJcbiAgfCBEaXZpZGUgPT4gXCJJbnRlZ2VyIERpdmlzaW9uXCJcbiAgfCBMZXNzVGhhbiA9PiBcIkludGVnZXIgTGVzcyBUaGFuXCJcbiAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCJJbnRlZ2VyIExlc3MgVGhhbiBvciBFcXVhbFwiXG4gIHwgR3JlYXRlclRoYW4gPT4gXCJJbnRlZ2VyIEdyZWF0ZXIgVGhhblwiXG4gIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IFwiSW50ZWdlciBHcmVhdGVyIFRoYW4gb3IgRXF1YWxcIlxuICB8IEVxdWFscyA9PiBcIkludGVnZXIgRXF1YWxpdHlcIlxuICB8IE5vdEVxdWFscyA9PiBcIkludGVnZXIgSW5lcXVhbGl0eVwiO1xuXG5sZXQgc2hvd19vcF9iaW5fZmxvYXQ6IG9wX2Jpbl9mbG9hdCA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBQbHVzID0+IFwiRmxvYXQgQWRkaXRpb25cIlxuICB8IE1pbnVzID0+IFwiRmxvYXQgU3VidHJhY3Rpb25cIlxuICB8IFRpbWVzID0+IFwiRmxvYXQgTXVsdGlwbGljYXRpb25cIlxuICB8IFBvd2VyID0+IFwiRmxvYXQgRXhwb25lbnRpYXRpb25cIlxuICB8IERpdmlkZSA9PiBcIkZsb2F0IERpdmlzaW9uXCJcbiAgfCBMZXNzVGhhbiA9PiBcIkZsb2F0IExlc3MgVGhhblwiXG4gIHwgTGVzc1RoYW5PckVxdWFsID0+IFwiRmxvYXQgTGVzcyBUaGFuIG9yIEVxdWFsXCJcbiAgfCBHcmVhdGVyVGhhbiA9PiBcIkZsb2F0IEdyZWF0ZXIgVGhhblwiXG4gIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IFwiRmxvYXQgR3JlYXRlciBUaGFuIG9yIEVxdWFsXCJcbiAgfCBFcXVhbHMgPT4gXCJGbG9hdCBFcXVhbGl0eVwiXG4gIHwgTm90RXF1YWxzID0+IFwiRmxvYXQgSW5lcXVhbGl0eVwiO1xuXG5sZXQgc2hvd19vcF9iaW5fc3RyaW5nOiBvcF9iaW5fc3RyaW5nID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IENvbmNhdCA9PiBcIlN0cmluZyBDb25jYXRlbmF0aW9uXCJcbiAgfCBFcXVhbHMgPT4gXCJTdHJpbmcgRXF1YWxpdHlcIjtcblxubGV0IHNob3dfYmlub3A6IG9wX2JpbiA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBJbnQob3ApID0+IHNob3dfb3BfYmluX2ludChvcClcbiAgfCBGbG9hdChvcCkgPT4gc2hvd19vcF9iaW5fZmxvYXQob3ApXG4gIHwgQm9vbChvcCkgPT4gc2hvd19vcF9iaW5fYm9vbChvcClcbiAgfCBTdHJpbmcob3ApID0+IHNob3dfb3BfYmluX3N0cmluZyhvcCk7XG5cbmxldCBib29sX29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluX2Jvb2wpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG9wKSB7XG4gIHwgQW5kID0+IFwiJiZcIlxuICB8IE9yID0+IFwifHxcIlxuICB9O1xufTtcblxubGV0IGludF9vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbl9pbnQpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG9wKSB7XG4gIHwgUGx1cyA9PiBcIitcIlxuICB8IE1pbnVzID0+IFwiLVwiXG4gIHwgVGltZXMgPT4gXCIqXCJcbiAgfCBQb3dlciA9PiBcIioqXCJcbiAgfCBEaXZpZGUgPT4gXCIvXCJcbiAgfCBMZXNzVGhhbiA9PiBcIjxcIlxuICB8IExlc3NUaGFuT3JFcXVhbCA9PiBcIjw9XCJcbiAgfCBHcmVhdGVyVGhhbiA9PiBcIj5cIlxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBcIj49XCJcbiAgfCBFcXVhbHMgPT4gXCI9PVwiXG4gIHwgTm90RXF1YWxzID0+IFwiIT1cIlxuICB9O1xufTtcblxubGV0IGZsb2F0X29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluX2Zsb2F0KTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICB8IFBsdXMgPT4gXCIrLlwiXG4gIHwgTWludXMgPT4gXCItLlwiXG4gIHwgVGltZXMgPT4gXCIqLlwiXG4gIHwgUG93ZXIgPT4gXCIqKi5cIlxuICB8IERpdmlkZSA9PiBcIi8uXCJcbiAgfCBMZXNzVGhhbiA9PiBcIjwuXCJcbiAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCI8PS5cIlxuICB8IEdyZWF0ZXJUaGFuID0+IFwiPi5cIlxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBcIj49LlwiXG4gIHwgRXF1YWxzID0+IFwiPT0uXCJcbiAgfCBOb3RFcXVhbHMgPT4gXCIhPS5cIlxuICB9O1xufTtcblxubGV0IHN0cmluZ19vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbl9zdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG9wKSB7XG4gIHwgQ29uY2F0ID0+IFwiKytcIlxuICB8IEVxdWFscyA9PiBcIiQ9PVwiXG4gIH07XG59O1xuXG5sZXQgYmluX29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICB8IEludChvcCkgPT4gaW50X29wX3RvX3N0cmluZyhvcClcbiAgfCBGbG9hdChvcCkgPT4gZmxvYXRfb3BfdG9fc3RyaW5nKG9wKVxuICB8IEJvb2wob3ApID0+IGJvb2xfb3BfdG9fc3RyaW5nKG9wKVxuICB8IFN0cmluZyhvcCkgPT4gc3RyaW5nX29wX3RvX3N0cmluZyhvcClcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG4vKipcbiAqIGhpZ2hlciBwcmVjZWRlbmNlIG1lYW5zIGxvd2VyIGludCByZXByZXNlbnRhdGlvblxuICpcbiAqIFRoZXNlIHByZWNlZGVuY2VzIGFyZSBpbnRlcnNwZXJzZWQgd2l0aCBleGFtcGxlcyB0byBoZWxwIHlvdVxuICogd29yayBvdXQgdGhlIHByZWNlZGVuY2UuIEZvciBlYWNoIGV4YW1wbGUsIGlmIGEgY29uc3RydWN0XG4gKiByZXF1aXJlcyBwYXJlbnRoZXNlcyB3aGVuIHBsYWNlZCBpbiB0aGUgJ19fX19fJyBzcGFjZSwgdGhlblxuICogeW91ciBuZXcgY29uc3RydWN0J3MgcHJlY2VkZW5jZSBpcyBiZWxvdyB0aGUgY29tbWVudCB3aXRoXG4gKiB0aGUgZXhhbXBsZS4gKGkuZS4gaGlnaGVyIGludClcbiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gaW50O1xuXG5sZXQgbWF4OiB0ID0gMDtcblxubGV0IHVucXVvdGUgPSAxO1xubGV0IGNhc3QgPSAyO1xubGV0IGFwID0gMztcbi8vIF9fX19fKHgpXG4vLyAtIF9fX19fXG5sZXQgbmVnID0gNDtcbi8vIF9fX19fICoqIDJcbmxldCBwb3dlciA9IDU7XG4vLyAyICoqIF9fX19fXG4vLyA2IC8gX19fX19cbmxldCBtdWx0ID0gNjtcbmxldCBub3RfID0gNjtcbi8vIF9fX19fIC8gNlxuLy8gNCAtIF9fX19fXG5sZXQgcGx1cyA9IDc7XG4vLyBfX19fXyAtIDRcbi8vIF9fX19fIDo6IFtdXG5sZXQgY29ucyA9IDg7XG4vLyAxIDo6IF9fX19fXG4vLyBbMSwyXSBAIF9fX19fXG5sZXQgY29uY2F0ID0gOTtcbi8vIF9fX19fIEAgWzEsMl1cbi8vIHggPT0gX19fX19cbmxldCBlcXMgPSAxMDtcbi8vIF9fX19fID09IHhcbi8vIF9fX19fICYmIHRydWVcbmxldCBhbmRfID0gMTE7XG4vLyB0cnVlICYmIF9fX19fXG4vLyBfX19fXyB8fCBmYWxzZVxubGV0IG9yXyA9IDEyO1xuLy8gZmFsc2UgfHwgX19fX19cbmxldCBhbm4gPSAxMztcbi8vIF9fX19fIDogVFxubGV0IGlmXyA9IDE0O1xubGV0IGZ1bl8gPSAxNTtcbi8vIGZ1biB4IC0+IF9fX19fXG5sZXQgcHJvZCA9IDE2O1xuLy8gYSAsIF9fX19fICwgeFxuLy8gX19fX18gOyAoKVxubGV0IHNlbWkgPSAxNztcbi8vICgpIDsgX19fX19cbmxldCBsZXRfID0gMTg7XG5sZXQgcnVsZV9hcnIgPSAxOTtcbmxldCBydWxlX3ByZSA9IDIwO1xubGV0IHJ1bGVfc2VwID0gMjE7XG5sZXQgY2FzZV8gPSAyMjtcbmxldCBtaW4gPSAyNDtcblxubGV0IGNvbXBhcmUgPSAocDE6IHQsIHAyOiB0KTogaW50ID0+XG4gICgtMSkgKiBJbnQuY29tcGFyZSgocDEgOj4gaW50KSwgKHAyIDo+IGludCkpO1xuLy8gbGV0IG1pbiA9IChwMTogdCwgcDI6IHQpOiB0ID0+IG1heChwMSwgcDIpO1xuXG5sZXQgYXNzb2NpYXRpdml0eV9tYXA6IEludE1hcC50KERpcmVjdGlvbi50KSA9XG4gIFtcbiAgICAobXVsdCwgRGlyZWN0aW9uLkxlZnQpLFxuICAgIChwbHVzLCBMZWZ0KSxcbiAgICAocG93ZXIsIFJpZ2h0KSxcbiAgICAoY29ucywgUmlnaHQpLFxuICAgIChjb25jYXQsIFJpZ2h0KSxcbiAgICAoYW5uLCBMZWZ0KSxcbiAgICAoZXFzLCBMZWZ0KSxcbiAgXVxuICB8PiBMaXN0LnRvX3NlcVxuICB8PiBJbnRNYXAub2Zfc2VxO1xuXG5sZXQgYXNzb2NpYXRpdml0eSA9IChwOiB0KTogb3B0aW9uKERpcmVjdGlvbi50KSA9PlxuICBJbnRNYXAuZmluZF9vcHQocCwgYXNzb2NpYXRpdml0eV9tYXApO1xuXG5sZXQgb2ZfYmluX29wOiBPcGVyYXRvcnMub3BfYmluID0+IHQgPVxuICBmdW5cbiAgfCBJbnQob3ApID0+XG4gICAgc3dpdGNoIChvcCkge1xuICAgIHwgUGx1cyA9PiBwbHVzXG4gICAgfCBNaW51cyA9PiBwbHVzXG4gICAgfCBUaW1lcyA9PiBtdWx0XG4gICAgfCBQb3dlciA9PiBwb3dlclxuICAgIHwgRGl2aWRlID0+IG11bHRcbiAgICB8IExlc3NUaGFuID0+IGVxc1xuICAgIHwgTGVzc1RoYW5PckVxdWFsID0+IGVxc1xuICAgIHwgR3JlYXRlclRoYW4gPT4gZXFzXG4gICAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gZXFzXG4gICAgfCBFcXVhbHMgPT4gZXFzXG4gICAgfCBOb3RFcXVhbHMgPT4gZXFzXG4gICAgfVxuICB8IEZsb2F0KG9wKSA9PlxuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IFBsdXMgPT4gcGx1c1xuICAgIHwgTWludXMgPT4gcGx1c1xuICAgIHwgVGltZXMgPT4gbXVsdFxuICAgIHwgUG93ZXIgPT4gcG93ZXJcbiAgICB8IERpdmlkZSA9PiBtdWx0XG4gICAgfCBMZXNzVGhhbiA9PiBlcXNcbiAgICB8IExlc3NUaGFuT3JFcXVhbCA9PiBlcXNcbiAgICB8IEdyZWF0ZXJUaGFuID0+IGVxc1xuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IGVxc1xuICAgIHwgRXF1YWxzID0+IGVxc1xuICAgIHwgTm90RXF1YWxzID0+IGVxc1xuICAgIH1cbiAgfCBCb29sKG9wKSA9PlxuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IEFuZCA9PiBhbmRfXG4gICAgfCBPciA9PiBvcl9cbiAgICB9XG4gIHwgU3RyaW5nKG9wKSA9PlxuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IENvbmNhdCA9PiBjb25jYXRcbiAgICB8IEVxdWFscyA9PiBlcXNcbiAgICB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBBbnlcbiAgfCBOdWxcbiAgfCBQYXRcbiAgfCBUeXBcbiAgfCBUUGF0XG4gIHwgUnVsXG4gIHwgRXhwO1xuXG5sZXQgcm9vdCA9IEV4cDtcblxubGV0IGFsbCA9IFtBbnksIE51bCwgUGF0LCBUeXAsIFJ1bCwgRXhwLCBUUGF0XTtcblxubGV0IGNvbnNpc3RlbnQgPSAocywgcycpID0+XG4gIHN3aXRjaCAocywgcycpIHtcbiAgfCAoQW55LCBfKVxuICB8IChfLCBBbnkpID0+IHRydWVcbiAgfCAoTnVsLCBfKVxuICB8IChfLCBOdWwpID0+IGZhbHNlXG4gIHwgXyA9PiBzID09IHMnXG4gIH07XG5cbmxldCB0b19zdHJpbmcgPVxuICBmdW5cbiAgfCBBbnkgPT4gXCJBbnlcIlxuICB8IE51bCA9PiBcIk51bFwiXG4gIHwgUGF0ID0+IFwiUGF0XCJcbiAgfCBUUGF0ID0+IFwiVFBhdFwiXG4gIHwgVHlwID0+IFwiVHlwXCJcbiAgfCBSdWwgPT4gXCJSdWxcIlxuICB8IEV4cCA9PiBcIkV4cFwiO1xuXG5sZXQgdG9fc3RyaW5nX3ZlcmJvc2UgPVxuICBmdW5cbiAgfCBBbnkgPT4gXCJhbnlcIlxuICB8IE51bCA9PiBcIm51bGxcIlxuICB8IFBhdCA9PiBcInBhdHRlcm5cIlxuICB8IFRQYXQgPT4gXCJ0eXBlIHBhdHRlcm5cIlxuICB8IFR5cCA9PiBcInR5cGVcIlxuICB8IFJ1bCA9PiBcInJ1bGVcIlxuICB8IEV4cCA9PiBcImV4cHJlc3Npb25cIjtcbiIsIm1vZHVsZSBTaGFwZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQ29udmV4XG4gICAgfCBDb25jYXZlKFByZWNlZGVuY2UudCk7XG5cbiAgbGV0IGNvbmNhdmUgPSAofnA9PywgKCkpID0+IHtcbiAgICBsZXQgcCA9XG4gICAgICBzd2l0Y2ggKHApIHtcbiAgICAgIHwgTm9uZSA9PiBQcmVjZWRlbmNlLm1pblxuICAgICAgfCBTb21lKHApID0+IHBcbiAgICAgIH07XG4gICAgQ29uY2F2ZShwKTtcbiAgfTtcblxuICBsZXQgZml0cyA9IChsOiB0LCByOiB0KSA9PlxuICAgIHN3aXRjaCAobCwgcikge1xuICAgIHwgKENvbnZleCwgQ29uY2F2ZShfKSlcbiAgICB8IChDb25jYXZlKF8pLCBDb252ZXgpID0+IHRydWVcbiAgICB8IChDb252ZXgsIENvbnZleClcbiAgICB8IChDb25jYXZlKF8pLCBDb25jYXZlKF8pKSA9PiBmYWxzZVxuICAgIH07XG5cbiAgbGV0IGZpdHRpbmcgPVxuICAgIGZ1blxuICAgIHwgQ29udmV4ID0+IGNvbmNhdmUoKVxuICAgIHwgQ29uY2F2ZShfKSA9PiBDb252ZXg7XG5cbiAgbGV0IGZsaXAgPVxuICAgIGZ1blxuICAgIHwgQ29udmV4ID0+IGNvbmNhdmUoKVxuICAgIHwgQ29uY2F2ZShfKSA9PiBDb252ZXg7XG5cbiAgbGV0IGFic29sdXRlID0gKGQ6IFV0aWwuRGlyZWN0aW9uLnQsIHM6IHQpOiBVdGlsLkRpcmVjdGlvbi50ID0+XG4gICAgLyogVGhlIGRpcmVjdGlvbiBhbiBzLXNoYXBlZCBuaWIgb24gdGhlIGQtaGFuZCBzaWRlIGlzIGZhY2luZyAqL1xuICAgIHN3aXRjaCAocykge1xuICAgIHwgQ29udmV4ID0+IGRcbiAgICB8IENvbmNhdmUoXykgPT4gVXRpbC5EaXJlY3Rpb24udG9nZ2xlKGQpXG4gICAgfTtcblxuICBsZXQgcmVsYXRpdmUgPSAobmliOiBVdGlsLkRpcmVjdGlvbi50LCBzaWRlOiBVdGlsLkRpcmVjdGlvbi50KTogdCA9PlxuICAgIG5pYiA9PSBzaWRlID8gQ29udmV4IDogY29uY2F2ZSgpO1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzaGFwZTogU2hhcGUudCxcbiAgc29ydDogU29ydC50LFxufTtcblxubGV0IHNoYXBlID0gbiA9PiBuLnNoYXBlO1xuXG5sZXQgZml0cyA9IChsOiB0LCByOiB0KTogYm9vbCA9PlxuICBsLnNvcnQgPT0gci5zb3J0ICYmIFNoYXBlLmZpdHMobC5zaGFwZSwgci5zaGFwZSk7XG5cbmxldCBmaXR0aW5nID0gKG5pYjogdCk6IHQgPT4gey4uLm5pYiwgc2hhcGU6IFNoYXBlLmZpdHRpbmcobmliLnNoYXBlKX07XG5cbmxldCBmbGlwID0gKG5pYjogdCkgPT4gey4uLm5pYiwgc2hhcGU6IFNoYXBlLmZsaXAobmliLnNoYXBlKX07XG5cbi8vIGxldCB0b2dnbGUgPSAobmliOiB0KSA9PiB7XG4vLyAgIC4uLm5pYixcbi8vICAgb3JpZW50YXRpb246IERpcmVjdGlvbi50b2dnbGUobmliLm9yaWVudGF0aW9uKSxcbi8vIH07XG5cbi8vIGxldCBzb3J0X2NvbnNpc3RlbnQgPSAobmliOiB0LCBuaWInOiB0KSA9PiBuaWIuc29ydCA9PSBuaWInLnNvcnQ7XG5cbi8vIGxldCBvZl9zb3J0ID0gc29ydCA9PiBbXG4vLyAgIHtzb3J0LCBvcmllbnRhdGlvbjogTGVmdH0sXG4vLyAgIHtzb3J0LCBvcmllbnRhdGlvbjogUmlnaHR9LFxuLy8gXTtcbiIsIm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzaGFwZSA9XG4gIHwgQ29udmV4XG4gIHwgQ29uY2F2ZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBpZDogSWQudCxcbiAgc2hhcGUsXG59O1xuXG5sZXQgaWQgPSBnID0+IGcuaWQ7XG5cbmxldCBzaGFwZXMgPSBnID0+XG4gIHN3aXRjaCAoZy5zaGFwZSkge1xuICB8IENvbnZleCA9PiBOaWIuU2hhcGUuKENvbnZleCwgQ29udmV4KVxuICB8IENvbmNhdmUgPT4gTmliLlNoYXBlLihDb25jYXZlKFByZWNlZGVuY2UubWluKSwgQ29uY2F2ZShQcmVjZWRlbmNlLm1pbikpXG4gIH07XG5cbi8vIGFzc3VtZXMgc2FtZSBzaGFwZSBvbiBib3RoIHNpZGVzXG5sZXQgbWtfZml0c19zaGFwZSA9IChzOiBOaWIuU2hhcGUudCk6IHQgPT4ge1xuICBsZXQgaWQgPSBJZC5taygpO1xuICBsZXQgc2hhcGUgPVxuICAgIHN3aXRjaCAocykge1xuICAgIHwgQ29udmV4ID0+IENvbmNhdmVcbiAgICB8IENvbmNhdmUoXykgPT4gQ29udmV4XG4gICAgfTtcbiAge2lkLCBzaGFwZX07XG59O1xuLy9sZXQgbWtfZml0cyA9ICgobCwgcik6IE5pYnMuc2hhcGVzKTogb3B0aW9uKHQpID0+XG4vLyAgTmliLlNoYXBlLmZpdHMobCwgcikgPyBOb25lIDogU29tZShta19maXRzX3NoYXBlKGwpKTtcblxubGV0IGZpdHNfc2hhcGUgPSAoZzogdCwgczogTmliLlNoYXBlLnQpID0+XG4gIHN3aXRjaCAoZy5zaGFwZSwgcykge1xuICB8IChDb252ZXgsIENvbnZleClcbiAgfCAoQ29uY2F2ZSwgQ29uY2F2ZShfKSkgPT4gZmFsc2VcbiAgfCAoQ29udmV4LCBDb25jYXZlKF8pKVxuICB8IChDb25jYXZlLCBDb252ZXgpID0+IHRydWVcbiAgfTtcblxubGV0IGZpdHMgPSAoZzogdCwgZyc6IHQpID0+XG4gIHN3aXRjaCAoZy5zaGFwZSwgZycuc2hhcGUpIHtcbiAgfCAoQ29udmV4LCBDb252ZXgpXG4gIHwgKENvbmNhdmUsIENvbmNhdmUpID0+IGZhbHNlXG4gIHwgKENvbnZleCwgQ29uY2F2ZSlcbiAgfCAoQ29uY2F2ZSwgQ29udmV4KSA9PiB0cnVlXG4gIH07XG5cbmxldCBtZXJnZSA9IChnczogbGlzdCh0KSk6IG9wdGlvbih0KSA9PlxuICBzd2l0Y2ggKGdzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9sYXN0X29wdCh0bCkpIHtcbiAgICB8IE5vbmUgPT4gU29tZShoZClcbiAgICB8IFNvbWUoKF8sIGZ0KSkgPT4gaGQuc2hhcGUgPT0gZnQuc2hhcGUgPyBTb21lKGhkKSA6IE5vbmVcbiAgICB9XG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vLyBtYWtlIGFuIGVudW1cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHN0cmluZztcblxubW9kdWxlIEluZGV4ID0ge1xuICB0eXBlIHQgPSBpbnQ7XG59O1xuXG5sZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aDtcbmxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmU7XG5sZXQgcm1fbnRoID0gVXRpbC5TdHJpbmdVdGlsLnJlbW92ZV9udGg7XG5sZXQgcm1fbGFzdCA9IFV0aWwuU3RyaW5nVXRpbC5yZW1vdmVfbGFzdDtcbmxldCBybV9maXJzdCA9IFV0aWwuU3RyaW5nVXRpbC5yZW1vdmVfZmlyc3Q7XG5sZXQgc3BsaXRfbnRoID0gVXRpbC5TdHJpbmdVdGlsLnNwbGl0X250aDtcbmxldCBpbnNlcnRfbnRoID0gVXRpbC5TdHJpbmdVdGlsLmluc2VydF9udGg7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBBIGxhYmVsIGlzIHRoZSB0ZXh0dWFsIGV4cHJlc3Npb24gb2YgYSBmb3JtJ3MgZGVsaW1pdGVycyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gbGlzdChUb2tlbi50KTtcbmV4Y2VwdGlvbiBFbXB0eV9sYWJlbDtcblxubGV0IGxlbmd0aDogdCA9PiBpbnQgPSBMaXN0Lmxlbmd0aDtcblxubGV0IHJldjogdCA9PiB0ID0gTGlzdC5yZXY7XG5cbmxldCBoZF90bCA9IChsYmw6IHQpOiAoVG9rZW4udCwgbGlzdChUb2tlbi50KSkgPT5cbiAgc3dpdGNoIChsYmwpIHtcbiAgfCBbXSA9PiByYWlzZShFbXB0eV9sYWJlbClcbiAgfCBbaGQsIC4uLnRsXSA9PiAoaGQsIHRsKVxuICB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gKE5pYi50LCBOaWIudCk7XG5cbltAZGVyaXZpbmcgc2hvd11cbnR5cGUgc2hhcGVzID0gKE5pYi5TaGFwZS50LCBOaWIuU2hhcGUudCk7XG5cbmxldCBmbGlwID0gKChsLCByKTogdCkgPT4gKHIsIGwpO1xuXG5sZXQgb2ZfaG9sZSA9IHNvcnQgPT4gTmliLih7c29ydCwgc2hhcGU6IENvbnZleH0sIHtzb3J0LCBzaGFwZTogQ29udmV4fSk7XG5cbmxldCBmaXR0aW5nID0gKChsLCByKTogdCkgPT4gKE5pYi5maXR0aW5nKGwpLCBOaWIuZml0dGluZyhyKSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIG91dDogU29ydC50LFxuICBpbl86IGxpc3QoU29ydC50KSxcbiAgbmliczogTmlicy50LFxufTtcblxubGV0IGZsaXBfbmlicyA9IG0gPT4gey4uLm0sIG5pYnM6IE5pYnMuZmxpcChtLm5pYnMpfTtcblxubGV0IG1rX29wID0gKG91dCwgaW5fKSA9PiB7XG4gIGxldCBuID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0OiBvdXR9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChuLCBuKX07XG59O1xubGV0IG1rX3ByZSA9IChwLCBvdXQsIGluXykgPT4ge1xuICBsZXQgbCA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogb3V0fTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBvdXR9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChsLCByKX07XG59O1xubGV0IG1rX3Bvc3QgPSAocCwgb3V0LCBpbl8pID0+IHtcbiAgbGV0IGwgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBvdXR9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogb3V0fTtcbiAge291dCwgaW5fLCBuaWJzOiAobCwgcil9O1xufTtcbmxldCBta19iaW4gPSAofmw9PywgfnI9PywgcCwgb3V0LCBpbl8pID0+IHtcbiAgbGV0IGwgPSBPcHRpb24udmFsdWUobCwgfmRlZmF1bHQ9b3V0KTtcbiAgbGV0IHIgPSBPcHRpb24udmFsdWUociwgfmRlZmF1bHQ9b3V0KTtcbiAgbGV0IG5pYiA9IHNvcnQgPT4gTmliLntzb3J0LCBzaGFwZTogQ29uY2F2ZShwKX07XG4gIHtvdXQsIGluXywgbmliczogKG5pYihsKSwgbmliKHIpKX07XG59O1xuXG4vLyBmb3JtcyB3aGVyZSB0aXBzIGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBvdXQgc29ydFxubGV0IG1rX3ByZScgPSAocCwgb3V0LCBzb3J0X2wsIGluXywgc29ydF9yKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0OiBzb3J0X2x9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IHNvcnRfcn07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5sZXQgbWtfcG9zdCcgPSAocCwgb3V0LCBzb3J0X2wsIGluXywgc29ydF9yKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogc29ydF9sfTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnQ6IHNvcnRfcn07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5sZXQgbWtfYmluJyA9IChwLCBvdXQsIHNvcnRfbCwgaW5fLCBzb3J0X3IpID0+IHtcbiAgbGV0IGwgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBzb3J0X2x9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IHNvcnRfcn07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5cbmxldCBuaWJzID0gKH5pbmRleD0/LCBtb2xkOiB0KTogTmlicy50ID0+XG4gIHN3aXRjaCAoaW5kZXgpIHtcbiAgfCBOb25lID0+IG1vbGQubmlic1xuICB8IFNvbWUoaSkgPT5cbiAgICBsZXQgKGwsIHIpID0gbW9sZC5uaWJzO1xuICAgIGxldCBpbl8gPSBtb2xkLmluXztcbiAgICBsZXQgbCA9XG4gICAgICBpID09IDAgPyBsIDogTmliLntzaGFwZTogU2hhcGUuY29uY2F2ZSgpLCBzb3J0OiBMaXN0Lm50aChpbl8sIGkgLSAxKX07XG4gICAgbGV0IHIgPVxuICAgICAgaSA9PSBMaXN0Lmxlbmd0aChpbl8pXG4gICAgICAgID8gciA6IE5pYi57c2hhcGU6IFNoYXBlLmNvbmNhdmUoKSwgc29ydDogTGlzdC5udGgoaW5fLCBpKX07XG4gICAgKGwsIHIpO1xuICB9O1xuXG5sZXQgbmliX3NoYXBlcyA9ICh+aW5kZXg9PywgbW9sZDogdCk6IE5pYnMuc2hhcGVzID0+IHtcbiAgbGV0IChuaWJfbCwgbmliX3IpID0gbmlicyh+aW5kZXg/LCBtb2xkKTtcbiAgKG5pYl9sLnNoYXBlLCBuaWJfci5zaGFwZSk7XG59O1xuXG5tb2R1bGUgTWFwID0ge1xuICB0eXBlIG1vbGQgPSB0O1xuICBpbmNsdWRlIElkLk1hcDtcbiAgdHlwZSBub25yZWMgdCA9IElkLk1hcC50KGxpc3QobW9sZCkpO1xufTtcblxubGV0IG9mX2dyb3V0OiAoR3JvdXQudCwgU29ydC50KSA9PiB0ID1cbiAgKGcsIHNvcnQpID0+IHtcbiAgICBuaWJzOlxuICAgICAgLy8gVE9ETyhkKTogcmV2aXNpdCB0aGlzIHdoZW4gcmVmb3JtdWxhdGluZyBtb2xkc1xuICAgICAgc3dpdGNoIChnLnNoYXBlKSB7XG4gICAgICB8IENvbnZleCA9PlxuICAgICAgICBsZXQgbiA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydH07XG4gICAgICAgIChuLCBuKTtcbiAgICAgIHwgQ29uY2F2ZSA9PlxuICAgICAgICBsZXQgbiA9IE5pYi57c2hhcGU6IENvbmNhdmUoUHJlY2VkZW5jZS5taW4pLCBzb3J0fTtcbiAgICAgICAgKG4sIG4pO1xuICAgICAgfSxcbiAgICBvdXQ6IHNvcnQsXG4gICAgaW5fOiBbXSxcbiAgfTtcblxubGV0IG9mX3NlY29uZGFyeSA9IChsOiBOaWIudCkgPT4ge1xuICBuaWJzOiAoTmliLmZsaXAobCksIGwpLFxuICBvdXQ6IGwuc29ydCxcbiAgaW5fOiBbXSxcbn07XG5cbmxldCBmaXRzX3NoYXBlID0gKGQ6IERpcmVjdGlvbi50LCBzOiBOaWIuU2hhcGUudCwgbTogdCk6IGJvb2wgPT4ge1xuICBsZXQgcycgPSBEaXJlY3Rpb24uY2hvb3NlKGQsIG5pYl9zaGFwZXMobSkpO1xuICBOaWIuU2hhcGUuZml0cyhzLCBzJyk7XG59O1xuXG5sZXQgY29uc2lzdGVudF9zaGFwZXMgPSAobXM6IGxpc3QodCkpID0+XG4gIG1zXG4gIHw+IExpc3QubWFwKG5pYl9zaGFwZXMpXG4gIHw+IExpc3Quc3BsaXRcbiAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdFV0aWwuc2luZ2xlX2VsZW0pO1xuXG5sZXQgaXNfaW5maXhfb3AgPSAobW9sZDogdCk6IGJvb2wgPT5cbiAgc3dpdGNoIChtb2xkLm5pYnMsIG1vbGQuaW5fKSB7XG4gIHwgKCh7c2hhcGU6IENvbmNhdmUoXyksIF99LCB7c2hhcGU6IENvbmNhdmUoXyksIF99KSwgW10pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbmxldCBjaGV2cm9uID0gKHNvcnQ6IFNvcnQudCwgcDogUHJlY2VkZW5jZS50LCBkOiBVdGlsLkRpcmVjdGlvbi50KTogdCA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBSaWdodCA9PiBta19wb3N0KHAsIHNvcnQsIFtdKVxuICB8IExlZnQgPT4gbWtfcHJlKHAsIHNvcnQsIFtdKVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gTW9sZDtcbm1vZHVsZSBQID0gUHJlY2VkZW5jZTtcblxuLyogRk9STVxuICAgVGhpcyBtb2R1bGUgZGV0ZXJtaW5lcyB0aGUgc3ludGFjdGljIGV4dGVudCBvZiB0aGUgbGFuZ3VhZ2U7IHRoZVxuICAgZW50aXJlIFN5bnRheCBtb2R1bGUgaXMgZHJpdmVuIGJ5IHRoZSBiZWxvdyBkZWZpbml0aW9ucy4gQWRkaW5nXG4gICBhIG5ldyBzeW50YWN0aWMgZm9ybSBpcyBzaW1wbHkgYSBtYXR0ZXIgb2YgYWRkaW5nIGEgbmV3IGxpbmUgdG8gZWl0aGVyXG4gICB0aGUgJ2NvbnZleF9tb25vcycgdGFibGUsIGZvciBzaW5nbGUtdG9rZW4gZm9ybXMsIG9yIHRoZSAnZm9ybXMnXG4gICB0YWJsZSwgZm9yIGNvbXBvdW5kIGZvcm1zLlxuICAgVGhlIHdyYXBwaW5nIGZ1bmN0aW9ucyBzZWVuIGluIGJvdGggb2YgdGhvc2UgdGFibGVzIGRldGVybWluZSB0aGVcbiAgIHNoYXBlLCBwcmVjZWRlbmNlLCBhbmQgZXhwYW5zaW9uIGJlaGF2aW9yIG9mIHRoZSBmb3JtLiAqL1xuXG5sZXQgcmVnZXhwID0gKHIsIHMpID0+XG4gIEpzX29mX29jYW1sLlJlZ2V4cC5zdHJpbmdfbWF0Y2goSnNfb2Zfb2NhbWwuUmVnZXhwLnJlZ2V4cChyKSwgcywgMClcbiAgfD4gT3B0aW9uLmlzX3NvbWU7XG5cbi8qIEEgbGFiZWwgaXMgdGhlIHRleHR1YWwgZXhwcmVzc2lvbiBvZiBhIGZvcm0ncyBkZWxpbWl0ZXJzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGxhYmVsID0gbGlzdChUb2tlbi50KTtcblxuLyogVGhlIGNvbnN0cnVjdGlvbiBvZiBhIGNvbXBvdW5kIGZvcm1zIGNhbiBiZSB0cmlnZ2VyZWQgYnkgaW5zZXJ0aW5nXG4gICBvbmUgb2YgaXRzIGRlbGltaXRlcnMgdGhyb3VnaCBhIHByb2Nlc3MgY2FsbGVkIGV4cGFuc2lvbi4gRXhwYW5zaW9uXG4gICBjYW4gZWl0aGVyIG9jY3VyIChJbnN0YW50KWx5IHVwb24gZGVsaW1pdGVyIGNyZWF0aW9uLCBvciBiZSAoRGVsYXllZClcbiAgIHVudGlsIGFmdGVyIGEgdG9rZW4gYm91bmRhcnkgZXZlbnQgaXMgdHJpZ2dlcmVkIChzYXkgYnkgcHJlc3NpbmdcbiAgIHNwYWNlIGFmdGVyIGVudGVyaW5nICdsZXQnKS4gVGhlIChTdGF0aWMpIGNhc2UgaXMgdXNlZCBmb3IgbW9ub3NcbiAgIGFrYSBzaW5nbGUtdG9rZW4gZm9ybXMuICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwYW5zaW9uX3RpbWUgPVxuICB8IFN0YXRpY1xuICB8IEluc3RhbnRcbiAgfCBEZWxheWVkO1xuXG4vKiBFeHBhbnNpb24gY2FuIGJlIHRyaWdnZXJlZCBieSBlaXRoZXIvYm90aCB0aGUgZmlyc3Qgb3IgbGFzdCB0b2tlblxuICAgb2YgYSBmb3JtLCByZXByZXNlbnRlZCBoZXJlIGJ5IHRoZSBmaXJzdC9sYXN0IGVsZW1lbnRzIG9mIHRoaXMgcGFpci4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwYW5zaW9uID0gKGV4cGFuc2lvbl90aW1lLCBleHBhbnNpb25fdGltZSk7XG5cbi8qIEEgbGFiZWwsIGEgbW9sZCwgYW5kIGV4cGFuc2lvbiBiZWhhdmlvciB0b2dldGhlciBkZXRlcm1pbmUgYSBmb3JtLiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBsYWJlbCxcbiAgZXhwYW5zaW9uLFxuICBtb2xkOiBNb2xkLnQsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGJhZF90b2tlbl9jbHMgPVxuICB8IE90aGVyXG4gIHwgQmFkSW50O1xuXG5sZXQgbWsgPSAoZXhwYW5zaW9uLCBsYWJlbCwgbW9sZCkgPT4ge2xhYmVsLCBtb2xkLCBleHBhbnNpb259O1xuXG4vKiBBYmJyZXZpYXRpb25zIGZvciBleHBhbnNpb24gYmVoYXZpb3JzICovXG5sZXQgc3M6IGV4cGFuc2lvbiA9IChTdGF0aWMsIFN0YXRpYyk7XG5sZXQgaWk6IGV4cGFuc2lvbiA9IChJbnN0YW50LCBJbnN0YW50KTtcbmxldCBpczogZXhwYW5zaW9uID0gKEluc3RhbnQsIFN0YXRpYyk7XG5sZXQgZHM6IGV4cGFuc2lvbiA9IChEZWxheWVkLCBTdGF0aWMpO1xuXG5sZXQgbWtfaW5maXggPSAodDogVG9rZW4udCwgc29ydDogU29ydC50LCBwcmVjKSA9PlxuICBtayhzcywgW3RdLCBta19iaW4ocHJlYywgc29ydCwgW10pKTtcblxubGV0IG1rX251bF9pbmZpeCA9ICh0OiBUb2tlbi50LCBwcmVjKSA9PlxuICBtayhzcywgW3RdLCBta19iaW4ofmw9QW55LCB+cj1BbnksIHByZWMsIEFueSwgW10pKTtcblxuLyogVG9rZW4gUmVjb2duaXRpb24gUHJlZGljYXRlcyAqL1xuXG4vKiBBLiBTZWNvbmRhcnkgTm90YXRpb24gKENvbW1lbnRzLCBXaGl0ZXNwYWNlLCBldGMuKSAgKi9cbmxldCBzcGFjZSA9IFwiIFwiO1xuLyogSEFDSyhhbmRyZXcpOiBVc2luZyDij44gY2hhciB0byByZXByZXNlbnQgbGluZWJyZWFrIHRvIGF2b2lkIHJlZ2V4cFxuICAgaXNzdWVzIHdpdGggdXNpbmcgXFxuLiBTb21lb25lIHdobyB1bmRlcnN0YW5kcyByZWdleHBzIGJldHRlclxuICAgc2hvdWxkIGZpeCB0aGlzLiAqL1xubGV0IGxpbmVicmVhayA9IFwi4o+OXCI7XG5sZXQgY29tbWVudF9yZWdleHAgPSBcIl4jW14j4o+OXSojJFwiOyAvKiBNdWx0aWxpbmUgY29tbWVudHMgbm90IHN1cHBvcnRlZCAqL1xubGV0IGlzX2NvbW1lbnQgPSB0ID0+IHJlZ2V4cChjb21tZW50X3JlZ2V4cCwgdCkgfHwgdCA9PSBcIiNcIjtcbmxldCBpc19jb21tZW50X2RlbGltID0gdCA9PiB0ID09IFwiI1wiO1xubGV0IGlzX3NlY29uZGFyeSA9IHQgPT5cbiAgTGlzdC5tZW0odCwgW3NwYWNlLCBsaW5lYnJlYWtdKSB8fCByZWdleHAoY29tbWVudF9yZWdleHAsIHQpO1xuXG4vKiBTVFJJTkdTOiBzcGVjaWFsLWNhc2Ugc3ludGF4ICovXG5cbi8qIGlzX3N0cmluZzogbGFzdCBjbGF1c2UgaXMgYSBzb21ld2hhdCBoYWNreSB3YXkgb2YgbWFraW5nIHN1cmVcbiAgIHRoZXJlIGFyZSBhdCBtb3N0IHR3byBxdW90ZXMsIGluIG9yZGVyIHRvIHByZXZlbnQgbWVyZ2VzICovXG5sZXQgaXNfc3RyaW5nID0gdCA9PlxuICByZWdleHAoXCJeXFxcIlte4o+OXSpcXFwiJFwiLCB0KVxuICAmJiBMaXN0Lmxlbmd0aChTdHJpbmcuc3BsaXRfb25fY2hhcignXCInLCB0KSkgPCA0O1xubGV0IHN0cmluZ19kZWxpbSA9IFwiXFxcIlwiO1xubGV0IGVtcHR5X3N0cmluZyA9IHN0cmluZ19kZWxpbSArKyBzdHJpbmdfZGVsaW07XG5sZXQgaXNfc3RyaW5nX2RlbGltID0gKD09KShzdHJpbmdfZGVsaW0pO1xubGV0IHN0cmlwX3F1b3RlcyA9IHMgPT5cbiAgaWYgKFN0cmluZy5sZW5ndGgocykgPCAyKSB7XG4gICAgcztcbiAgfSBlbHNlIGlmIChTdHJpbmcuc3ViKHMsIDAsIDEpICE9IFwiXFxcIlwiXG4gICAgICAgICAgICAgfHwgU3RyaW5nLnN1YihzLCBTdHJpbmcubGVuZ3RoKHMpIC0gMSwgMSkgIT0gXCJcXFwiXCIpIHtcbiAgICBzO1xuICB9IGVsc2Uge1xuICAgIFN0cmluZy5zdWIocywgMSwgU3RyaW5nLmxlbmd0aChzKSAtIDIpO1xuICB9O1xubGV0IHN0cmluZ19xdW90ZSA9IHMgPT4gXCJcXFwiXCIgKysgcyArKyBcIlxcXCJcIjtcblxubGV0IGtleXdvcmRzID0gW1xuICBcImZ1blwiLFxuICBcImxldFwiLFxuICBcImluXCIsXG4gIFwidHlwZVwiLFxuICBcImNhc2VcIixcbiAgXCJ0ZXN0XCIsXG4gIFwiaWZcIixcbiAgXCJ0aGVuXCIsXG4gIFwiZWxzZVwiLFxuXTtcbmxldCByZXNlcnZlZF9rZXl3b3JkcyA9IFtcIm9mXCIsIFwid2hlblwiLCBcIndpdGhcIiwgXCJzd2l0Y2hcIiwgXCJtYXRjaFwiXTtcbmxldCBpc19rZXl3b3JkID0gcmVnZXhwKFwiXihcIiArKyBTdHJpbmcuY29uY2F0KFwifFwiLCBrZXl3b3JkcykgKysgXCIpJFwiKTtcbmxldCBpc19yZXNlcnZlZF9rZXl3b3JkID1cbiAgcmVnZXhwKFwiXihcIiArKyBTdHJpbmcuY29uY2F0KFwifFwiLCByZXNlcnZlZF9rZXl3b3JkcykgKysgXCIpJFwiKTtcblxuLyogUG90ZW50aWFsIHRva2VuczogVGhlc2UgYXJlIGZhbGx0aHJvdWdoIGNsYXNzZXMgd2hpY2ggZGV0ZXJtaW5lXG4gKiB0aGUgYmVoYXZpb3Igd2hlbiBpbnNlcnRpbmcgYSBjaGFyYWN0ZXIgaW4gY29udGFjdCB3aXRoIGEgdG9rZW4gKi9cbmxldCBpc19wb3RlbnRpYWxfb3BlcmFuZCA9IHJlZ2V4cChcIl5bYS16QS1aMC05XydcXFxcLj9dKyRcIik7XG4vKiBBbnl0aGluZyBlbHNlIGlzIGNvbnNpZGVyZWQgYSBwb3RlbnRpYWwgb3BlcmF0b3IsIGFzIGxvbmdcbiAqICBhcyBpdCBkb2VzIG5vdCBjb250YWluIGFueSB3aGl0ZXNwYWNlLCBsaW5lYnJlYWtzLCBjb21tZW50XG4gKiAgZGVsaW1pdGVycywgc3RyaW5nIGRlbGltaXRlcnMsIG9yIHRoZSBpbnN0YW50IGV4cGFuZGluZyBwYWlyZWRcbiAqICBkZWxpbWl0ZXJzOiAoKVtdfCAqL1xubGV0IGlzX3BvdGVudGlhbF9vcGVyYXRvciA9IHJlZ2V4cChcIl5bXmEtekEtWjAtOV8nP1xcXCIj4o+OXFxcXHNcXFxcW1xcXFxdXFxcXChcXFxcKV0rJFwiKTtcbmxldCBpc19wb3RlbnRpYWxfdG9rZW4gPSB0ID0+XG4gIGlzX3BvdGVudGlhbF9vcGVyYW5kKHQpXG4gIHx8IGlzX3BvdGVudGlhbF9vcGVyYXRvcih0KVxuICB8fCBpc19zdHJpbmcodClcbiAgfHwgaXNfY29tbWVudCh0KTtcblxubGV0IGlzX2FyYml0YXJ5X2ludCA9IHJlZ2V4cChcIl4tP1xcXFxkK1swLTlfXSokXCIpO1xubGV0IGlzX2FyYml0YXJ5X2Zsb2F0ID0geCA9PlxuICB4ICE9IFwiLlwiICYmIHggIT0gXCItXCIgJiYgcmVnZXhwKFwiXi0/WzAtOV0qXFxcXC4/WzAtOV0qKChlfEUpLT9bMC05XSopPyRcIiwgeCk7XG5sZXQgaXNfaW50ID0gc3RyID0+IGlzX2FyYml0YXJ5X2ludChzdHIpICYmIGludF9vZl9zdHJpbmdfb3B0KHN0cikgIT0gTm9uZTtcbi8qIE5PVEU6IFRoZSBpc19hcmJpdGFyeV9pbnQgY2hlY2sgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnRcbiAgIG1pbnVzZXMgZnJvbSBiZWluZyBwYXJzZWQgYXMgcGFydCBvZiB0aGUgaW50IHRva2VuLiAqL1xuXG5sZXQgaXNfYmFkX2ludCA9IHN0ciA9PiBpc19hcmJpdGFyeV9pbnQoc3RyKSAmJiAhaXNfaW50KHN0cik7XG5cbi8qIE5PVEU6IEFzIHdlbGwgYXMgbWFraW5nIGlzX2Zsb2F0ICBkaXNqb2ludCBmcm9tIGlzX2ludCxcbiAgIHRoZSBpc19hcmJpdGFyeV9pbnQgIGFsc28gcHJldmVudHMgaW50cyBvdmVyIGludF9tYXggZnJvbSBiZWluZ1xuICAgY2FzdCBhcyBmbG9hdHMuIFRoZSBpc19hcmJpdGFyeV9mbG9hdCBjaGVjayBpcyBuZWNlc3NhcnkgdG8gcHJldmVudFxuICAgbWludXNlcyBmcm9tIGJlaW5nIHBhcnNlZCBhcyBwYXJ0IG9mIHRoZSBmbG9hdCB0b2tlbi4gKi9cbmxldCBpc19mbG9hdCA9IHN0ciA9PlxuICAhaXNfYXJiaXRhcnlfaW50KHN0cilcbiAgJiYgaXNfYXJiaXRhcnlfZmxvYXQoc3RyKVxuICAmJiBmbG9hdF9vZl9zdHJpbmdfb3B0KHN0cikgIT0gTm9uZTtcbmxldCBpc19iYWRfZmxvYXQgPSBzdHIgPT4gaXNfYXJiaXRhcnlfZmxvYXQoc3RyKSAmJiAhaXNfZmxvYXQoc3RyKTtcbmxldCBib29scyA9IFtcInRydWVcIiwgXCJmYWxzZVwiXTtcbmxldCBpc19ib29sID0gcmVnZXhwKFwiXihcIiArKyBTdHJpbmcuY29uY2F0KFwifFwiLCBib29scykgKysgXCIpJFwiKTtcblxubGV0IGlzX3ZhciA9IHN0ciA9PlxuICAhaXNfYm9vbChzdHIpXG4gICYmIHN0ciAhPSBcIl9cIlxuICAvLyYmICFpc19rZXl3b3JkKHN0cilcbiAgLy8mJiAhaXNfcmVzZXJ2ZWQoc3RyKVxuICAmJiByZWdleHAoXG4gICAgICAge3woXlthLXpfXVtBLVphLXowLTlfJ10qJCl8KF5bQS1aXVtBLVphLXowLTlfJ10qXFwuW2Etel1bQS1aYS16MC05XyddKiQpfH0sXG4gICAgICAgc3RyLFxuICAgICApO1xubGV0IGlzX2NhcGl0YWxpemVkX25hbWUgPSByZWdleHAoXCJeW0EtWl1bQS1aYS16MC05X10qJFwiKTtcbmxldCBpc19jdHIgPSBpc19jYXBpdGFsaXplZF9uYW1lO1xubGV0IGJhc2VfdHlwcyA9IFtcIlN0cmluZ1wiLCBcIkludFwiLCBcIkZsb2F0XCIsIFwiQm9vbFwiXTtcbmxldCBpc19iYXNlX3R5cCA9IHJlZ2V4cChcIl4oXCIgKysgU3RyaW5nLmNvbmNhdChcInxcIiwgYmFzZV90eXBzKSArKyBcIikkXCIpO1xubGV0IGlzX3R5cF92YXIgPSBzdHIgPT4gaXNfdmFyKHN0cikgfHwgaXNfY2FwaXRhbGl6ZWRfbmFtZShzdHIpO1xubGV0IHdpbGQgPSBcIl9cIjtcbmxldCBpc193aWxkID0gcmVnZXhwKFwiXlwiICsrIHdpbGQgKysgXCIkXCIpO1xuXG4vKiBMaXN0IGxpdGVyYWxzICovXG5sZXQgbGlzdF9zdGFydCA9IFwiW1wiO1xubGV0IGxpc3RfZW5kID0gXCJdXCI7XG5sZXQgbGlzdGxpdF9sYmwgPSBbbGlzdF9zdGFydCwgbGlzdF9lbmRdO1xubGV0IGVtcHR5X2xpc3QgPSBsaXN0X3N0YXJ0ICsrIGxpc3RfZW5kO1xubGV0IGlzX2VtcHR5X2xpc3QgPSAoPT0pKGVtcHR5X2xpc3QpO1xuXG4vKiBUdXBsZXMgKi9cbmxldCB0dXBsZV9zdGFydCA9IFwiKFwiO1xubGV0IHR1cGxlX2VuZCA9IFwiKVwiO1xubGV0IHR1cGxlX2xibCA9IFt0dXBsZV9zdGFydCwgdHVwbGVfZW5kXTtcbmxldCBlbXB0eV90dXBsZSA9IHR1cGxlX3N0YXJ0ICsrIHR1cGxlX2VuZDtcbmxldCBpc19lbXB0eV90dXBsZSA9ICg9PSkoZW1wdHlfdHVwbGUpO1xuXG4vKiBUaGVzZSBmdW5jdGlvbnMgZGV0ZXJtaW5lIHdoaWNoIGZvcm1zIGNhbiBzd2l0Y2ggYmFjayBhbmQgZm9ydGggYmV0d2VlblxuICAgbW9ubyBhbmQgZHVvdGlsZSBmb3JtcywgbGlrZSBsaXN0IGxpdGVyYWxzIGFuZCB0dXBsZXMgc3dpdGNoaW5nIHRvL2Zyb21cbiAgIHRoZSBlbXB0eSBsaXN0IGFuZCBlbXB0eSB0dXBsZS4gVGVjaG5pY2FsbHkgdGhpcyBzaG91bGQgYmUgZGVyaXZhYmxlIGZyb21cbiAgIHRoZSBsYW5ndWFnZSBkYXRhOyBsZWF2aW5nIHRoYXQgZm9yIGEgZnV0dXJlIHJlZmFjdG9yLiAqL1xubGV0IGR1b3NwbGl0cyA9ICh0OiBUb2tlbi50KTogTGFiZWwudCA9PlxuICBzd2l0Y2ggKCkge1xuICB8IF8gd2hlbiBpc19lbXB0eV9saXN0KHQpID0+IGxpc3RsaXRfbGJsXG4gIHwgXyB3aGVuIGlzX2VtcHR5X3R1cGxlKHQpID0+IHR1cGxlX2xibFxuICB8IF8gPT4gW11cbiAgfTtcblxubGV0IGR1b21lcmdlcyA9IChsYmw6IExhYmVsLnQpOiBvcHRpb24oTGFiZWwudCkgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gbGJsID09IGxpc3RsaXRfbGJsID0+IFNvbWUoW2VtcHR5X2xpc3RdKVxuICB8IF8gd2hlbiBsYmwgPT0gdHVwbGVfbGJsID0+IFNvbWUoW2VtcHR5X3R1cGxlXSlcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxuLy9UT0RPKGFuZHJldyk6IHJlZmFjdG9yIGF0b21pY19mb3JtcyB0byBzZXBlcmF0ZSB0aGVzZSBvdXRcbmxldCBjb25zdF9tb25vX2RlbGltcyA9XG4gIGJhc2VfdHlwcyBAIGJvb2xzIEAgW3dpbGQsIGVtcHR5X2xpc3QsIGVtcHR5X3R1cGxlLCBlbXB0eV9zdHJpbmddO1xuXG5sZXQgZXhwbGljaXRfaG9sZSA9IFwiP1wiO1xubGV0IGlzX2V4cGxpY2l0X2hvbGUgPSB0ID0+IHQgPT0gZXhwbGljaXRfaG9sZTtcbmxldCBiYWRfdG9rZW5fY2xzOiBzdHJpbmcgPT4gYmFkX3Rva2VuX2NscyA9XG4gIHQgPT5cbiAgICBzd2l0Y2ggKCkge1xuICAgIHwgXyB3aGVuIGlzX2JhZF9pbnQodCkgPT4gQmFkSW50XG4gICAgfCBfID0+IE90aGVyXG4gICAgfTtcblxuLyogQi4gT3BlcmFuZHM6XG4gICBPcmRlciBpbiB0aGlzIGxpc3QgZGV0ZXJtaW5lcyByZWxhdGl2ZSByZW1vbGRpbmdcbiAgIHByaW9yaXR5IGZvciBmb3JtcyB3aXRoIG92ZXJsYXBwaW5nIHJlZ2V4cHMgKi9cbmxldCBhdG9taWNfZm9ybXM6IGxpc3QoKHN0cmluZywgKHN0cmluZyA9PiBib29sLCBsaXN0KE1vbGQudCkpKSkgPSBbXG4gIChcInZhclwiLCAoaXNfdmFyLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXG4gICAgXCJleHBsaWNpdF9ob2xlXCIsXG4gICAgKFxuICAgICAgaXNfZXhwbGljaXRfaG9sZSxcbiAgICAgIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSksIG1rX29wKFR5cCwgW10pLCBta19vcChUUGF0LCBbXSldLFxuICAgICksXG4gICksXG4gIChcIndpbGRcIiwgKGlzX3dpbGQsIFtta19vcChQYXQsIFtdKV0pKSxcbiAgKFwic3RyaW5nXCIsIChpc19zdHJpbmcsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcImludF9saXRcIiwgKGlzX2ludCwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFwiZmxvYXRfbGl0XCIsIChpc19mbG9hdCwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFwiYm9vbF9saXRcIiwgKGlzX2Jvb2wsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcImVtcHR5X2xpc3RcIiwgKGlzX2VtcHR5X2xpc3QsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcbiAgICBcImVtcHR5X3R1cGxlXCIsXG4gICAgKGlzX2VtcHR5X3R1cGxlLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pLCBta19vcChUeXAsIFtdKV0pLFxuICApLFxuICAoXCJkZWZlcnJhbFwiLCAoaXNfd2lsZCwgW21rX29wKEV4cCwgW10pXSkpLFxuICAoXCJ0eV92YXJcIiwgKGlzX3R5cF92YXIsIFtta19vcChUeXAsIFtdKV0pKSxcbiAgKFwidHlfdmFyX3BcIiwgKGlzX3R5cF92YXIsIFtta19vcChUUGF0LCBbXSldKSksXG4gIChcImN0clwiLCAoaXNfY3RyLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXCJ0eXBlXCIsIChpc19iYXNlX3R5cCwgW21rX29wKFR5cCwgW10pXSkpLFxuXTtcblxuLyogQy4gQ29tcG91bmQgRm9ybXM6XG4gICBPcmRlciBpbiB0aGlzIGxpc3QgZGV0ZXJtaW5lcyByZWxhdGl2ZSByZW1vbGRpbmdcbiAgIHByaW9yaXR5IGZvciBmb3JtcyB3aGljaCBzaGFyZSB0aGUgc2FtZSBsYWJlbHMgKi9cblxubGV0IGZvcm1zOiBsaXN0KChzdHJpbmcsIHQpKSA9IFtcbiAgLy8gSU5GSVggT1BFUkFUT1JTXG4gIChcInR5cF9wbHVzXCIsIG1rX2luZml4KFwiK1wiLCBUeXAsIFAub3JfKSksXG4gIChcInR5cGUtYXJyb3dcIiwgbWtfaW5maXgoXCItPlwiLCBUeXAsIFAucGx1cykpLFxuICAoXCJjZWxsLWpvaW5cIiwgbWtfaW5maXgoXCI7XCIsIEV4cCwgUC5zZW1pKSksXG4gIChcInBsdXNcIiwgbWtfaW5maXgoXCIrXCIsIEV4cCwgUC5wbHVzKSksXG4gIChcIm1pbnVzXCIsIG1rX2luZml4KFwiLVwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJ0aW1lc1wiLCBta19pbmZpeChcIipcIiwgRXhwLCBQLm11bHQpKSxcbiAgKFwicG93ZXJcIiwgbWtfaW5maXgoXCIqKlwiLCBFeHAsIFAucG93ZXIpKSxcbiAgKFwiZnBvd2VyXCIsIG1rX2luZml4KFwiKiouXCIsIEV4cCwgUC5wb3dlcikpLFxuICAoXCJkaXZpZGVcIiwgbWtfaW5maXgoXCIvXCIsIEV4cCwgUC5tdWx0KSksXG4gIChcImVxdWFsc1wiLCBta19pbmZpeChcIj09XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwic3RyaW5nX2VxdWFsc1wiLCBta19pbmZpeChcIiQ9PVwiLCBFeHAsIFAuZXFzKSksXG4gIChcInN0cmluZ19jb25jYXRcIiwgbWtfaW5maXgoXCIrK1wiLCBFeHAsIFAucGx1cykpLFxuICAoXCJsdFwiLCBta19pbmZpeChcIjxcIiwgRXhwLCBQLmVxcykpLFxuICAoXCJndFwiLCBta19pbmZpeChcIj5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJub3RfZXF1YWxzXCIsIG1rX2luZml4KFwiIT1cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJndGVcIiwgbWtfaW5maXgoXCI+PVwiLCBFeHAsIFAuZXFzKSksXG4gIChcImx0ZVwiLCBta19pbmZpeChcIjw9XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZnBsdXNcIiwgbWtfaW5maXgoXCIrLlwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJmbWludXNcIiwgbWtfaW5maXgoXCItLlwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJmdGltZXNcIiwgbWtfaW5maXgoXCIqLlwiLCBFeHAsIFAubXVsdCkpLFxuICAoXCJmZGl2aWRlXCIsIG1rX2luZml4KFwiLy5cIiwgRXhwLCBQLm11bHQpKSxcbiAgKFwiZmVxdWFsc1wiLCBta19pbmZpeChcIj09LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZsdFwiLCBta19pbmZpeChcIjwuXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZmd0XCIsIG1rX2luZml4KFwiPi5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmbm90X2VxdWFsc1wiLCBta19pbmZpeChcIiE9LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZndGVcIiwgbWtfaW5maXgoXCI+PS5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmbHRlXCIsIG1rX2luZml4KFwiPD0uXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwibG9naWNhbF9hbmRcIiwgbWtfaW5maXgoXCImJlwiLCBFeHAsIFAuYW5kXykpLFxuICAoXCJsb2dpY2FsX29yX2xlZ2FjeVwiLCBta19pbmZpeChcIlxcXFwvXCIsIEV4cCwgUC5vcl8pKSxcbiAgKFwibG9naWNhbF9vclwiLCBta19pbmZpeChcInx8XCIsIEV4cCwgUC5vcl8pKSxcbiAgKFwibGlzdF9jb25jYXRcIiwgbWtfaW5maXgoXCJAXCIsIEV4cCwgUC5wbHVzKSksXG4gIChcImNvbnNfZXhwXCIsIG1rX2luZml4KFwiOjpcIiwgRXhwLCBQLmNvbnMpKSxcbiAgKFwiY29uc19wYXRcIiwgbWtfaW5maXgoXCI6OlwiLCBQYXQsIFAuY29ucykpLFxuICAoXCJ0eXBlYW5uXCIsIG1rKHNzLCBbXCI6XCJdLCBta19iaW4nKFAuYW5uLCBQYXQsIFBhdCwgW10sIFR5cCkpKSxcbiAgLy8gVU5BUlkgUFJFRklYIE9QRVJBVE9SU1xuICAoXCJub3RcIiwgbWsoaWksIFtcIiFcIl0sIG1rX3ByZShQLm5vdF8sIEV4cCwgW10pKSksIC8vVE9ETzogcHJlY2VkZW5jZVxuICAoXCJ0eXBfc3VtX3NpbmdsZVwiLCBtayhzcywgW1wiK1wiXSwgbWtfcHJlKFAub3JfLCBUeXAsIFtdKSkpLFxuICAoXCJ1bmFyeV9taW51c1wiLCBtayhzcywgW1wiLVwiXSwgbWtfcHJlKFAubmVnLCBFeHAsIFtdKSkpLFxuICAoXCJ1bnF1b3RlXCIsIG1rKHNzLCBbXCIkXCJdLCBta19wcmUoUC51bnF1b3RlLCBFeHAsIFtdKSkpLFxuICAvLyBOLUFSWSBPUFMgKG9uIHRoZSBzZW1hbnRpY3MgbGV2ZWwpXG4gIChcImNvbW1hX2V4cFwiLCBta19pbmZpeChcIixcIiwgRXhwLCBQLnByb2QpKSxcbiAgKFwiY29tbWFfcGF0XCIsIG1rX2luZml4KFwiLFwiLCBQYXQsIFAucHJvZCkpLFxuICAoXCJjb21tYV90eXBcIiwgbWtfaW5maXgoXCIsXCIsIFR5cCwgUC5wcm9kKSksXG4gIC8vIFBBSVJFRCBERUxJTUlURVJTOlxuICAoXCJsaXN0X2xpdF9leHBcIiwgbWsoaWksIFtcIltcIiwgXCJdXCJdLCBta19vcChFeHAsIFtFeHBdKSkpLFxuICAoXCJsaXN0X2xpdF9wYXRcIiwgbWsoaWksIFtcIltcIiwgXCJdXCJdLCBta19vcChQYXQsIFtQYXRdKSkpLFxuICAoXCJsaXN0X3R5cFwiLCBtayhpaSwgW1wiW1wiLCBcIl1cIl0sIG1rX29wKFR5cCwgW1R5cF0pKSksXG4gIC8vTk9URShhbmRyZXcpOiBwYXJlbnMgYmVpbmcgYmVsb3cgYXBzIGlzIGxvYWQtYmVhcmluZywgdW5mb3J0dW5hdGVseVxuICAoXCJwYXJlbnNfZXhwXCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfb3AoRXhwLCBbRXhwXSkpKSxcbiAgKFwicGFyZW5zX3BhdFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX29wKFBhdCwgW1BhdF0pKSksXG4gIChcInBhcmVuc190eXBcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19vcChUeXAsIFtUeXBdKSkpLFxuICAoXCJhcF9leHBfZW1wdHlcIiwgbWsoaWksIFtcIigpXCJdLCBta19wb3N0KFAuYXAsIEV4cCwgW10pKSksXG4gIChcImFwX2V4cFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX3Bvc3QoUC5hcCwgRXhwLCBbRXhwXSkpKSxcbiAgKFwiYXBfcGF0XCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfcG9zdChQLmFwLCBQYXQsIFtQYXRdKSkpLFxuICAoXCJhcF90eXBcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19wb3N0KFAuYXAsIFR5cCwgW1R5cF0pKSksXG4gIChcbiAgICBcImFwX2V4cF90eXBcIixcbiAgICBtaygoSW5zdGFudCwgU3RhdGljKSwgW1wiQDxcIiwgXCI+XCJdLCBta19wb3N0KFAuYXAsIEV4cCwgW1R5cF0pKSxcbiAgKSxcbiAgKFwiYXRfc2lnblwiLCBta19udWxfaW5maXgoXCJAXCIsIFAuZXFzKSksIC8vIEhBQ0s6IFNVQlNUUklORyBSRVFcbiAgKFwiY2FzZVwiLCBtayhkcywgW1wiY2FzZVwiLCBcImVuZFwiXSwgbWtfb3AoRXhwLCBbUnVsXSkpKSxcbiAgKFwidGVzdFwiLCBtayhkcywgW1widGVzdFwiLCBcImVuZFwiXSwgbWtfb3AoRXhwLCBbRXhwXSkpKSxcbiAgKFwiZnVuX1wiLCBtayhkcywgW1wiZnVuXCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIEV4cCwgW1BhdF0pKSksXG4gIChcImZpeFwiLCBtayhkcywgW1wiZml4XCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIEV4cCwgW1BhdF0pKSksXG4gIChcInR5cGZ1blwiLCBtayhkcywgW1widHlwZnVuXCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIEV4cCwgW1RQYXRdKSkpLFxuICAoXCJmb3JhbGxcIiwgbWsoZHMsIFtcImZvcmFsbFwiLCBcIi0+XCJdLCBta19wcmUoUC5mdW5fLCBUeXAsIFtUUGF0XSkpKSxcbiAgKFwicmVjXCIsIG1rKGRzLCBbXCJyZWNcIiwgXCItPlwiXSwgbWtfcHJlKFAuZnVuXywgVHlwLCBbVFBhdF0pKSksXG4gIChcbiAgICBcInJ1bGVcIixcbiAgICBtayhkcywgW1wifFwiLCBcIj0+XCJdLCBta19iaW4nKFAucnVsZV9zZXAsIFJ1bCwgRXhwLCBbUGF0XSwgRXhwKSksXG4gICksXG4gIChcInBpcGVsaW5lXCIsIG1rX2luZml4KFwifD5cIiwgRXhwLCBQLmVxcykpLCAvLyBpbiBPQ2FtbCwgcGlwZWxpbmUgcHJlY2VkZW5jZSBpcyBpbiBzYW1lIGNsYXNzIGFzICc9JywgJzwnLCBldGMuXG4gIC8vIERPVUJMRSBERUxJTUlURVJTXG4gIChcImZpbHRlcl9oaWRlXCIsIG1rKGRzLCBbXCJoaWRlXCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW0V4cF0pKSksXG4gIChcImZpbHRlcl9ldmFsXCIsIG1rKGRzLCBbXCJldmFsXCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW0V4cF0pKSksXG4gIChcImZpbHRlcl9wYXVzZVwiLCBtayhkcywgW1wicGF1c2VcIiwgXCJpblwiXSwgbWtfcHJlKFAubGV0XywgRXhwLCBbRXhwXSkpKSxcbiAgKFwiZmlsdGVyX2RlYnVnXCIsIG1rKGRzLCBbXCJkZWJ1Z1wiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtFeHBdKSkpLFxuICAvLyBUUklQTEUgREVMSU1JVEVSU1xuICAoXCJsZXRfXCIsIG1rKGRzLCBbXCJsZXRcIiwgXCI9XCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW1BhdCwgRXhwXSkpKSxcbiAgKFxuICAgIFwidHlwZV9hbGlhc1wiLFxuICAgIG1rKGRzLCBbXCJ0eXBlXCIsIFwiPVwiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtUUGF0LCBUeXBdKSksXG4gICksXG4gIChcImlmX1wiLCBtayhkcywgW1wiaWZcIiwgXCJ0aGVuXCIsIFwiZWxzZVwiXSwgbWtfcHJlKFAuaWZfLCBFeHAsIFtFeHAsIEV4cF0pKSksXG5dO1xuXG5sZXQgZ2V0OiBTdHJpbmcudCA9PiB0ID1cbiAgbmFtZSA9PiBVdGlsLkxpc3RVdGlsLmFzc29jX2VycihuYW1lLCBmb3JtcywgXCJGb3Jtcy5nZXQgOiBcIiArKyBuYW1lKTtcblxubGV0IGRlbGltczogbGlzdChUb2tlbi50KSA9XG4gIGZvcm1zXG4gIHw+IExpc3QuZm9sZF9sZWZ0KChhY2MsIChfLCB7bGFiZWwsIF99OiB0KSkgPT4ge2xhYmVsIEAgYWNjfSwgW10pXG4gIHw+IExpc3Quc29ydF91bmlxKGNvbXBhcmUpO1xuXG5sZXQgYXRvbWljX21vbGRzOiBUb2tlbi50ID0+IGxpc3QoTW9sZC50KSA9XG4gIHMgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIChfLCAodGVzdCwgbW9sZHMpKSkgPT4gdGVzdChzKSA/IG1vbGRzIEAgYWNjIDogYWNjLFxuICAgICAgW10sXG4gICAgICBhdG9taWNfZm9ybXMsXG4gICAgKTtcblxubGV0IGlzX2F0b21pYyA9IHQgPT4gYXRvbWljX21vbGRzKHQpICE9IFtdO1xuXG5sZXQgaXNfZGVsaW0gPSB0ID0+IExpc3QubWVtKHQsIGRlbGltcyk7XG5cbmxldCBpc192YWxpZF90b2tlbiA9IHQgPT4gaXNfYXRvbWljKHQpIHx8IGlzX3NlY29uZGFyeSh0KSB8fCBpc19kZWxpbSh0KTtcblxubGV0IG1rX2F0b21pYyA9IChzb3J0OiBTb3J0LnQsIHQ6IFRva2VuLnQpID0+IHtcbiAgYXNzZXJ0KGlzX2F0b21pYyh0KSk7XG4gIG1rKHNzLCBbdF0sIE1vbGQuKG1rX29wKHNvcnQsIFtdKSkpO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY2xzID1cbiAgfCBXaGl0ZXNwYWNlXG4gIHwgQ29tbWVudDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZWNvbmRhcnlfY29udGVudCA9XG4gIHwgV2hpdGVzcGFjZShzdHJpbmcpXG4gIHwgQ29tbWVudChzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGlkOiBJZC50LFxuICBjb250ZW50OiBzZWNvbmRhcnlfY29udGVudCxcbn07XG5cbmxldCBjbHNfb2YgPSAoczogdCk6IGNscyA9PlxuICBzd2l0Y2ggKHMuY29udGVudCkge1xuICB8IFdoaXRlc3BhY2UoXykgPT4gV2hpdGVzcGFjZVxuICB8IENvbW1lbnQoXykgPT4gQ29tbWVudFxuICB9O1xuXG5sZXQgbWtfc3BhY2UgPSBpZCA9PiB7Y29udGVudDogV2hpdGVzcGFjZShGb3JtLnNwYWNlKSwgaWR9O1xuXG5sZXQgbWtfbmV3bGluZSA9IGlkID0+IHtjb250ZW50OiBXaGl0ZXNwYWNlKFwiXFxuXCIpLCBpZH07XG5cbmxldCBjb25zdHJ1Y3RfY29tbWVudCA9IGNvbnRlbnQgPT5cbiAgaWYgKFN0cmluZy5lcXVhbChjb250ZW50LCBcIiNcIikpIHtcbiAgICBDb21tZW50KFwiIyNcIik7XG4gIH0gZWxzZSB7XG4gICAgQ29tbWVudChjb250ZW50KTtcbiAgfTtcblxubGV0IGlzX3NwYWNlOiB0ID0+IGJvb2wgPVxuICB3ID0+XG4gICAgc3dpdGNoICh3LmNvbnRlbnQpIHtcbiAgICB8IFdoaXRlc3BhY2UocykgPT4gcyA9PSBGb3JtLnNwYWNlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxubGV0IGlzX2xpbmVicmVhazogdCA9PiBib29sID1cbiAgdyA9PlxuICAgIHN3aXRjaCAody5jb250ZW50KSB7XG4gICAgfCBXaGl0ZXNwYWNlKHMpID0+IHMgPT0gRm9ybS5saW5lYnJlYWtcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xuXG5sZXQgY29udGVudF9pc19jb21tZW50OiBzZWNvbmRhcnlfY29udGVudCA9PiBib29sID1cbiAgY29udGVudCA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgQ29tbWVudChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxubGV0IGlzX2NvbW1lbnQ6IHQgPT4gYm9vbCA9XG4gIHcgPT5cbiAgICBzd2l0Y2ggKHcuY29udGVudCkge1xuICAgIHwgQ29tbWVudChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxuLy8gUmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZSBXaGl0ZXNwYWNlXG5sZXQgZ2V0X3N0cmluZzogc2Vjb25kYXJ5X2NvbnRlbnQgPT4gc3RyaW5nID1cbiAgY29udGVudCA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgQ29tbWVudChzKVxuICAgIHwgV2hpdGVzcGFjZShzKSA9PiBzXG4gICAgfTtcblxubGV0IGlkID0gdyA9PiB3LmlkO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZWdtZW50ID0gbGlzdChwaWVjZSlcbmFuZCBwaWVjZSA9XG4gIHwgVGlsZSh0aWxlKVxuICB8IEdyb3V0KEdyb3V0LnQpXG4gIHwgU2Vjb25kYXJ5KFNlY29uZGFyeS50KVxuYW5kIHRpbGUgPSB7XG4gIC8vIGludmFyaWFudHM6XG4gIC8vIC0gbGVuZ3RoKG1vbGQuaW5fKSArIDEgPT0gbGVuZ3RoKGxhYmVsKVxuICAvLyAtIGxlbmd0aChzaGFyZHMpIDw9IGxlbmd0aChsYWJlbClcbiAgLy8gLSBsZW5ndGgoc2hhcmRzKSA9PSBsZW5ndGgoY2hpbGRyZW4pICsgMVxuICAvLyAtIHNvcnQoc2hhcmRzKSA9PSBzaGFyZHNcbiAgaWQ6IElkLnQsXG4gIGxhYmVsOiBMYWJlbC50LFxuICBtb2xkOiBNb2xkLnQsXG4gIHNoYXJkczogbGlzdChpbnQpLFxuICBjaGlsZHJlbjogbGlzdChzZWdtZW50KSxcbn07XG5cbi8vIFRoaXMgaXMgZm9yIGNvbW1lbnQgaW5zZXJ0aW9uXG5sZXQgbWtfc2Vjb25kYXJ5ID0gKGlkLCBjb250ZW50KSA9PiBbU2Vjb25kYXJ5KHtpZCwgY29udGVudH0pXTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgVG91Y2goSWQudClcbiAgfCBEZWxldGUoSWQudCk7XG5cbi8vIHVzZWQgdG8gcmVjb3JkIGVmZmVjdHMgb3ZlciB0aGUgY291cnNlIG9mIGEgc2luZ2xlIGFjdGlvblxubGV0IHM6IHJlZihsaXN0KHQpKSA9IHJlZihbXSk7XG5sZXQgc19jbGVhciA9ICgpID0+IHMgOj0gW107XG5sZXQgc190b3VjaCA9IChpZHM6IGxpc3QoSWQudCkpID0+XG4gIHMgOj0gTGlzdC5tYXAoaWQgPT4gVG91Y2goaWQpLCBpZHMpIEAgc147XG5cbmxldCBzX3RvdWNoZWQgPSAoaWQ6IElkLnQpOiBib29sID0+IExpc3QubWVtKFRvdWNoKGlkKSwgc14pO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleHBhbnNpb25zID0gbGlzdCgoVG9rZW4udCwgKGxpc3QoVG9rZW4udCksIERpcmVjdGlvbi50KSkpO1xuXG5sZXQgZm9ybXNfYXNzb2M6IGxpc3QoKExhYmVsLnQsIGxpc3QoTW9sZC50KSkpID1cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKGFjYywgKF8sIHtsYWJlbCwgbW9sZCwgX306IEZvcm0udCkpID0+IHtcbiAgICAgIGxldCBtb2xkcyA9XG4gICAgICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQobGFiZWwsIGFjYykpIHtcbiAgICAgICAgfCBTb21lKG9sZF9tb2xkcykgPT4gb2xkX21vbGRzIEAgW21vbGRdXG4gICAgICAgIHwgTm9uZSA9PiBbbW9sZF1cbiAgICAgICAgfTtcbiAgICAgIExpc3QuY29ucygobGFiZWwsIG1vbGRzKSwgTGlzdC5yZW1vdmVfYXNzb2MobGFiZWwsIGFjYykpO1xuICAgIH0sXG4gICAgW10sXG4gICAgRm9ybS5mb3JtcyxcbiAgKTtcblxubGV0IGdldCA9IChsYWJlbDogTGFiZWwudCk6IGxpc3QoTW9sZC50KSA9PlxuICBzd2l0Y2ggKGxhYmVsLCBMaXN0LmFzc29jX29wdChsYWJlbCwgZm9ybXNfYXNzb2MpKSB7XG4gIHwgKFt0XSwgU29tZShtb2xkcykpIHdoZW4gRm9ybS5hdG9taWNfbW9sZHModCkgIT0gW10gPT5cbiAgICAvLyBUT0RPKGFuZHJldyk6IGRvZXMgdGhpcyBtYWtlIHNlbnNlP1xuICAgIEZvcm0uYXRvbWljX21vbGRzKHQpIEAgbW9sZHNcbiAgfCAoW3RdLCBOb25lKSB3aGVuIEZvcm0uYXRvbWljX21vbGRzKHQpICE9IFtdID0+IEZvcm0uYXRvbWljX21vbGRzKHQpXG4gIHwgKF8sIFNvbWUobW9sZHMpKSA9PiBtb2xkc1xuICB8IChbdF0sIE5vbmUpID0+XG4gICAgLyogRm9yIHRva2VucyB3aGljaCBhcmUgbm90IGFzc2lnbmVkIG1vbGRzIGJ5IHRoZSBsYW5ndWFnZSBkZWZpbml0aW9uLFxuICAgICAgIGFzc2luZyBhIGRlZmF1bHQgJ0FueScgbW9sZCwgd2hpY2ggaXMgZWl0aGVyIGNvbnZleCBvciBjb25jYXZlXG4gICAgICAgZGVwZW5kaW5nIG9uIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIFRoaXMgaXMgYSBoZXVyaXN0aWMgYXQgdGhlXG4gICAgICAgbW9tZW50IGFzIHdlIGRvbid0IGN1cnJlbnRseSByaWdvcm91c2x5IGRpdmlkZSB0b2tlbiBjbGFzc2VzXG4gICAgICAgZm9yIG9wZXJhdG9ycyB2cyBvcGVyYW5kcywgYnV0IGlzIHNvbWV3aGF0IGxvYWQtYmVhcmluZyBpbiB0aGF0XG4gICAgICAgcmVtb2xkaW5nIGFzIG9uZSBpcyB0eXBpbmcgaW4gYSBtdWx0aS1jaGFyYWN0ZXIgb3BlcmF0b3IgY2FuIGNhdXNlXG4gICAgICAgamFuaywgd2hpY2ggaXMgYWxsZXZpYXRlZCBpZiB3ZSBjb3JyZWN0bHkgZ3Vlc3MgdGhhdCBpdCB3aWxsXG4gICAgICAgYmVjb21lIGFuIG9wZXJhdG9yLiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGNvdWxkIGJlIGJhc2VkIG9uXG4gICAgICAgbG9naWMgd2hpY2ggY2hlY2tzIGlmIHRoZSB0b2tlbiBpcyB0aGUgcHJlZml4IG9mIHdoYXRldmVyLiAqL1xuICAgIHN3aXRjaCAoRm9ybS5pc19wb3RlbnRpYWxfb3BlcmFuZCh0KSwgRm9ybS5pc19wb3RlbnRpYWxfb3BlcmF0b3IodCkpIHtcbiAgICB8ICh0cnVlLCBmYWxzZSkgPT4gW01vbGQubWtfb3AoQW55LCBbXSldXG4gICAgfCAoZmFsc2UsIHRydWUpID0+IFtNb2xkLm1rX2JpbihQcmVjZWRlbmNlLm1heCwgQW55LCBbXSldXG4gICAgfCAodHJ1ZSwgdHJ1ZSkgPT5cbiAgICAgIFByaW50Zi5wcmludGYoXG4gICAgICAgIFwiV2FybmluZzogTW9sZHMuZ2V0OiBjYW4ndCBkZWNpZGUgaWYgb3BlcmFuZCBvciBvcGVyYXRvcjogJyVzJ1xcblwiLFxuICAgICAgICB0LFxuICAgICAgKTtcbiAgICAgIFtNb2xkLm1rX29wKEFueSwgW10pXTtcbiAgICB8IChmYWxzZSwgZmFsc2UpID0+XG4gICAgICAvL1RPRE8oYW5kcmV3KTogdGhpcyBpcyB0cmlnZ2VyZWQgaW4gYWxsIGluc3RhbnQgZXhwYW5kIGNhc2VzIChbXSgpfCwgZXRjKVxuICAgICAgLy9QcmludGYucHJpbnRmKFwiV2FybmluZzogTW9sZHMuZ2V0OiB1bmhhbmRsZWQgbW9ubzogJyVzJ1xcblwiLCB0KTtcbiAgICAgIFtNb2xkLm1rX29wKEFueSwgW10pXVxuICAgIH1cbiAgfCAobGJsLCBOb25lKSA9PlxuICAgIFByaW50Zi5wcmludGYoXG4gICAgICBcIldhcm5pbmc6IE1vbGRzLmdldDogdW5oYW5kbGVkIGxhYmVsOiAnJXMnXFxuXCIsXG4gICAgICBTdHJpbmcuY29uY2F0KFwiIFwiLCBsYmwpLFxuICAgICk7XG4gICAgW01vbGQubWtfb3AoQW55LCBbXSldO1xuICB9O1xuXG5sZXQgZGVsYXllZF9leHBhbnNpb25zOiBleHBhbnNpb25zID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICgoXywge2V4cGFuc2lvbiwgbGFiZWwsIF99OiBGb3JtLnQpKSA9PlxuICAgICAgc3dpdGNoIChleHBhbnNpb24sIGxhYmVsKSB7XG4gICAgICB8ICgoRGVsYXllZCwgRGVsYXllZCksIFtoZCwgLi4uX10pID0+XG4gICAgICAgIFNvbWUoW1xuICAgICAgICAgIChoZCwgKGxhYmVsLCBEaXJlY3Rpb24uTGVmdCkpLFxuICAgICAgICAgIChMaXN0VXRpbC5sYXN0KGxhYmVsKSwgKGxhYmVsLCBSaWdodCkpLFxuICAgICAgICBdKVxuICAgICAgfCAoKERlbGF5ZWQsIF8pLCBbaGQsIC4uLl9dKSA9PiBTb21lKFsoaGQsIChsYWJlbCwgTGVmdCkpXSlcbiAgICAgIHwgKChfLCBEZWxheWVkKSwgW18sIC4uLl9dKSA9PlxuICAgICAgICBTb21lKFsoTGlzdFV0aWwubGFzdChsYWJlbCksIChsYWJlbCwgUmlnaHQpKV0pXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfSxcbiAgICBGb3JtLmZvcm1zLFxuICApXG4gIHw+IExpc3QuZmxhdHRlblxuICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxubGV0IGluc3RhbnRfZXhwYW5zaW9uczogZXhwYW5zaW9ucyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICAoKF8sIHtleHBhbnNpb24sIGxhYmVsLCBffTogRm9ybS50KSkgPT5cbiAgICAgIHN3aXRjaCAoZXhwYW5zaW9uLCBsYWJlbCkge1xuICAgICAgfCAoKEluc3RhbnQsIEluc3RhbnQpLCBbaGQsIC4uLl9dKSA9PlxuICAgICAgICBTb21lKFtcbiAgICAgICAgICAoaGQsIChsYWJlbCwgRGlyZWN0aW9uLkxlZnQpKSxcbiAgICAgICAgICAoTGlzdFV0aWwubGFzdChsYWJlbCksIChsYWJlbCwgUmlnaHQpKSxcbiAgICAgICAgXSlcbiAgICAgIHwgKChJbnN0YW50LCBfKSwgW2hkLCAuLi5fXSkgPT4gU29tZShbKGhkLCAobGFiZWwsIExlZnQpKV0pXG4gICAgICB8ICgoXywgSW5zdGFudCksIFtfLCAuLi5fXSkgPT5cbiAgICAgICAgU29tZShbKExpc3RVdGlsLmxhc3QobGFiZWwpLCAobGFiZWwsIFJpZ2h0KSldKVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH0sXG4gICAgRm9ybS5mb3JtcyxcbiAgKVxuICB8PiBMaXN0LmZsYXR0ZW5cbiAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbmxldCBkZWxheWVkX2V4cGFuc2lvbjogVG9rZW4udCA9PiAobGlzdChUb2tlbi50KSwgRGlyZWN0aW9uLnQpID1cbiAgcyA9PlxuICAgIC8qIENvbXBsZXRpb25zIHdoaWNoIG11c3QgYmUgZGVmZXJlZCBhcyB0aGV5IGFyZSBhbWJpZ3VvdXMgcHJlZml4ZXMgKi9cbiAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KHMsIGRlbGF5ZWRfZXhwYW5zaW9ucykpIHtcbiAgICB8IFNvbWUoZXhwYW5zaW9uKSA9PiBleHBhbnNpb25cbiAgICB8IE5vbmUgPT4gKFtzXSwgUmlnaHQpXG4gICAgfTtcblxubGV0IGluc3RhbnRfZXhwYW5zaW9uOiBUb2tlbi50ID0+IChsaXN0KFRva2VuLnQpLCBEaXJlY3Rpb24udCkgPVxuICBzID0+XG4gICAgLyogQ29tcGxldGlvbnMgd2hpY2ggY2FuIG9yIG11c3QgYmUgZXhlY3V0ZWQgaW1tZWRpYXRlbHkgKi9cbiAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KHMsIGluc3RhbnRfZXhwYW5zaW9ucykpIHtcbiAgICB8IFNvbWUoZXhwYW5zaW9uKSA9PiBleHBhbnNpb25cbiAgICB8IE5vbmUgPT4gKFtzXSwgUmlnaHQpXG4gICAgfTtcblxubGV0IGlzX2RlbGF5ZWQgPSBrdyA9PiBMaXN0Lmxlbmd0aChkZWxheWVkX2V4cGFuc2lvbihrdykgfD4gZnN0KSA+IDE7XG5cbmxldCBhbGxvd19tZXJnZSA9IChsOiBUb2tlbi50LCByOiBUb2tlbi50KTogYm9vbCA9PlxuICBGb3JtLmlzX3BvdGVudGlhbF90b2tlbihsICsrIHIpO1xuXG5sZXQgYWxsb3dfYXBwZW5kX3JpZ2h0ID0gKHQ6IFRva2VuLnQsIGNoYXI6IHN0cmluZyk6IGJvb2wgPT5cbiAgRm9ybS5pc19wb3RlbnRpYWxfdG9rZW4odCArKyBjaGFyKTtcblxubGV0IGFsbG93X2FwcGVuZF9sZWZ0ID0gKGNoYXI6IHN0cmluZywgdDogVG9rZW4udCk6IGJvb2wgPT5cbiAgRm9ybS5pc19wb3RlbnRpYWxfdG9rZW4odCArKyBjaGFyKTtcblxubGV0IGFsbG93X2luc2VydGlvbiA9IChfY2hhcjogc3RyaW5nLCBfdDogVG9rZW4udCwgbmV3X3Q6IFRva2VuLnQpOiBib29sID0+XG4gIEZvcm0uaXNfcG90ZW50aWFsX3Rva2VuKG5ld190KTtcbiIsIm9wZW4gVXRpbDtcbmluY2x1ZGUgQmFzZTtcblxuZXhjZXB0aW9uIEFtYmlndW91c19tb2xkcztcbmV4Y2VwdGlvbiBJbnZhbGlkX21vbGQ7XG5leGNlcHRpb24gRW1wdHlfdGlsZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gdGlsZTtcblxubGV0IGlkID0gdCA9PiB0LmlkO1xuXG5sZXQgaXNfY29tcGxldGUgPSAodDogdCkgPT4gTGlzdC5sZW5ndGgodC5sYWJlbCkgPT0gTGlzdC5sZW5ndGgodC5zaGFyZHMpO1xuXG5sZXQgbF9zaGFyZCA9IHQgPT5cbiAgT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSwgTGlzdFV0aWwuaGRfb3B0KHQuc2hhcmRzKSk7XG5sZXQgcl9zaGFyZCA9IHQgPT5cbiAgT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSwgTGlzdFV0aWwubGFzdF9vcHQodC5zaGFyZHMpKTtcblxubGV0IGhhc19lbmQgPSAoZDogRGlyZWN0aW9uLnQsIHQpID0+XG4gIHN3aXRjaCAoZCkge1xuICB8IExlZnQgPT4gbF9zaGFyZCh0KSA9PSAwXG4gIHwgUmlnaHQgPT4gcl9zaGFyZCh0KSA9PSBMaXN0Lmxlbmd0aCh0LmxhYmVsKSAtIDFcbiAgfTtcbmxldCBoYXNfZW5kcyA9IHQgPT4gaGFzX2VuZChMZWZ0LCB0KSAmJiBoYXNfZW5kKFJpZ2h0LCB0KTtcblxubGV0IG5pYnMgPSAodDogdCkgPT4ge1xuICBsZXQgKGwsIF8pID0gTW9sZC5uaWJzKH5pbmRleD1sX3NoYXJkKHQpLCB0Lm1vbGQpO1xuICBsZXQgKF8sIHIpID0gTW9sZC5uaWJzKH5pbmRleD1yX3NoYXJkKHQpLCB0Lm1vbGQpO1xuICAobCwgcik7XG59O1xuXG5sZXQgc2hhcGVzID0gKHQ6IHQpID0+IHtcbiAgbGV0IChsLCByKSA9IG5pYnModCk7XG4gIChsLnNoYXBlLCByLnNoYXBlKTtcbn07XG5cbmxldCB0b19waWVjZSA9IHQgPT4gVGlsZSh0KTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9ICh7bW9sZCwgc2hhcmRzLCBjaGlsZHJlbiwgX306IHQpID0+XG4gIEFiYS5tayhzaGFyZHMsIGNoaWxkcmVuKVxuICB8PiBBYmEuYWJhX3RyaXBsZXNcbiAgfD4gTGlzdC5tYXAoKChsLCBjaGlsZCwgcikpID0+IHtcbiAgICAgICBsZXQgKF8sIGwpID0gTW9sZC5uaWJzKH5pbmRleD1sLCBtb2xkKTtcbiAgICAgICBsZXQgKHIsIF8pID0gTW9sZC5uaWJzKH5pbmRleD1yLCBtb2xkKTtcbiAgICAgICAobC5zb3J0ID09IHIuc29ydCA/IGwuc29ydCA6IEFueSwgY2hpbGQpO1xuICAgICB9KTtcblxubGV0IGNvbnRhaW5lZF9jaGlsZHJlbiA9ICh0OiB0KTogbGlzdCgodCwgQmFzZS5zZWdtZW50LCB0KSkgPT5cbiAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICB8PiBBYmEuYWJhX3RyaXBsZXNcbiAgfD4gTGlzdC5tYXAoKChsLCBjaGlsZCwgcikpID0+IHtcbiAgICAgICBsZXQgbCA9IHsuLi50LCBzaGFyZHM6IFtsXSwgY2hpbGRyZW46IFtdfTtcbiAgICAgICBsZXQgciA9IHsuLi50LCBzaGFyZHM6IFtyXSwgY2hpbGRyZW46IFtdfTtcbiAgICAgICAobCwgY2hpbGQsIHIpO1xuICAgICB9KTtcblxuLy8gbGV0IHJlbW9sZCA9ICh0OiB0KTogbGlzdCh0KSA9PlxuLy8gICBNb2xkcy5nZXQodC5sYWJlbCkgfD4gTGlzdC5tYXAobW9sZCA9PiB7Li4udCwgbW9sZH0pO1xuXG5sZXQgc3BsaXRfc2hhcmRzID0gKGlkLCBsYWJlbCwgbW9sZCwgc2hhcmRzKSA9PlxuICBzaGFyZHMgfD4gTGlzdC5tYXAoaSA9PiB7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHM6IFtpXSwgY2hpbGRyZW46IFtdfSk7XG5cbi8vIHBvc3Rjb25kOiBvdXRwdXQgc2VnbWVudCBpcyBub25lbXB0eVxubGV0IGRpc2Fzc2VtYmxlID0gKHtpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcywgY2hpbGRyZW59OiB0KTogc2VnbWVudCA9PiB7XG4gIGxldCBzaGFyZHMgPSBzcGxpdF9zaGFyZHMoaWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMpO1xuICBBYmEubWsoc2hhcmRzLCBjaGlsZHJlbilcbiAgfD4gQWJhLmpvaW4ocyA9PiBbdG9fcGllY2UocyldLCBGdW4uaWQpXG4gIHw+IExpc3QuY29uY2F0O1xufTtcblxubGV0IGRpc2ludGVncmF0ZSA9ICh7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMsIF99OiB0KTogbGlzdCh0aWxlKSA9PiB7XG4gIHNwbGl0X3NoYXJkcyhpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcyk7XG59O1xuXG5sZXQgcmVhc3NlbWJsZSA9IChtYXRjaDogQWJhLnQodCwgc2VnbWVudCkpOiB0ID0+IHtcbiAgbGV0IHQgPSBBYmEuaGQobWF0Y2gpO1xuICBsZXQgKHNoYXJkcywgY2hpbGRyZW4pID1cbiAgICBtYXRjaFxuICAgIHw+IEFiYS5mb2xkX3JpZ2h0KFxuICAgICAgICAgKHQsIGNoaWxkLCAoc2hhcmRzLCBjaGlsZHJlbikpID0+XG4gICAgICAgICAgICh0LnNoYXJkcyBAIHNoYXJkcywgdC5jaGlsZHJlbiBAIFtjaGlsZCwgLi4uY2hpbGRyZW5dKSxcbiAgICAgICAgIHQgPT4gKHQuc2hhcmRzLCB0LmNoaWxkcmVuKSxcbiAgICAgICApO1xuICAvLyBjaGVjayBsZW5ndGhzXG4gIGxldCBfID0gQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pO1xuICBhc3NlcnQoTGlzdC5zb3J0KEludC5jb21wYXJlLCBzaGFyZHMpID09IHNoYXJkcyk7XG4gIHtcbiAgICBpZDogdC5pZCxcbiAgICBsYWJlbDogdC5sYWJlbCxcbiAgICAvLyBub3RlOiB0aGlzIHRocm93cyBhd2F5IG1vbGRzIG9uIHRpbGVzIG90aGVyIHRoYW4gaGQuXG4gICAgLy8gaW4gY2FzZXMgd2hlcmUgdGhvc2UgbW9sZHMgZGlmZmVyLCByZWFzc2VtYmxlZCB0aWxlXG4gICAgLy8gc2hvdWxkIHVuZGVyZ28gc3Vic2VxdWVudCByZW1vbGRpbmcuXG4gICAgbW9sZDogdC5tb2xkLFxuICAgIHNoYXJkcyxcbiAgICBjaGlsZHJlbixcbiAgfTtcbn07XG5cbmxldCBwb3BfbCA9ICh0aWxlOiB0KTogKHBpZWNlLCBzZWdtZW50KSA9PlxuICBkaXNhc3NlbWJsZSh0aWxlKVxuICB8PiBMaXN0VXRpbC5zcGxpdF9maXJzdF9vcHRcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSk7XG5sZXQgcG9wX3IgPSAodGlsZTogdCk6IChzZWdtZW50LCBwaWVjZSkgPT5cbiAgZGlzYXNzZW1ibGUodGlsZSlcbiAgfD4gTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHRcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSk7XG5cbi8vIGxldCB1bmlxdWVfbW9sZCA9IF8gPT4gZmFpbHdpdGgoXCJ0b2RvIHVuaXF1ZV9tb2xkXCIpO1xuXG4vLyBtb2R1bGUgTWF0Y2ggPSB7XG4vLyAgIHR5cGUgdGlsZSA9IHQ7XG5cbi8vICAgbW9kdWxlIE1ha2UgPSAoTzogT3JpZW50YXRpb24uUykgPT4ge1xuLy8gICAgIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbi8vICAgICB0eXBlIHQgPSBBYmEudChTaGFyZC50LCBzZWdtZW50KTtcblxuLy8gICAgIGxldCBpZCA9IChtOiB0KSA9PiBBYmEuaGQobSkudGlsZV9pZDtcblxuLy8gICAgIGxldCBsYWJlbCA9IChtOiB0KSA9PiBzbmQoQWJhLmhkKG0pLmxhYmVsKTtcblxuLy8gICAgIGxldCBzaGFyZHM6IHQgPT4gbGlzdChTaGFyZC50KSA9IEFiYS5nZXRfYXM7XG4vLyAgICAgLy8gbGV0IGNoaWxkcmVuOiB0ID0+IGxpc3Qoc2VnbWVudCkgPSBBYmEuZ2V0X2JzO1xuXG4vLyAgICAgbGV0IGxlbmd0aCA9IChtOiB0KSA9PiBMaXN0Lmxlbmd0aChzaGFyZHMobSkpO1xuXG4vLyAgICAgbGV0IG1vbGQgPSAobTogdCkgPT4ge1xuLy8gICAgICAgbGV0IG1vbGRzID1cbi8vICAgICAgICAgc3dpdGNoIChTaGFyZC5jb25zaXN0ZW50X21vbGRzKHNoYXJkcyhtKSkpIHtcbi8vICAgICAgICAgfCBbXSA9PlxuLy8gICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIHVwb24gY29uc3RydWN0L2Rlc3RydWN0LFxuLy8gICAgICAgICAgIC8vIGluIHdoaWNoIGNhc2UgZXZlcnl0aGluZyB3aWxsIGJlIHN1YnNlcXVlbnRseSByZW1vbGRlZFxuLy8gICAgICAgICAgIE1vbGRzLmdldChsYWJlbChtKSlcbi8vICAgICAgICAgfCBbXywgLi4uX10gYXMgbW9sZHMgPT4gbW9sZHNcbi8vICAgICAgICAgfTtcbi8vICAgICAgIGFzc2VydChtb2xkcyAhPSBbXSk7XG4vLyAgICAgICBMaXN0LmhkKG1vbGRzKTtcbi8vICAgICB9O1xuXG4vLyAgICAgbGV0IGNoaWxkcmVuID0gbSA9PlxuLy8gICAgICAgTGlzdC5tYXAoTGlzdFV0aWwucmV2X2lmKE8uZCA9PSBMZWZ0KSwgQWJhLmdldF9icyhtKSk7XG5cbi8vICAgICBsZXQgam9pbiA9IChtOiB0KTogc2VnbWVudCA9PlxuLy8gICAgICAgbSB8PiBBYmEuam9pbihzID0+IFtTaGFyZC50b19waWVjZShzKV0sIEZ1bi5pZCkgfD4gTGlzdC5mbGF0dGVuO1xuXG4vLyAgICAgbGV0IGNvbXBsZXRlID0gKG06IHQpOiBvcHRpb24odGlsZSkgPT4ge1xuLy8gICAgICAgbGV0IGlkID0gaWQobSk7XG4vLyAgICAgICBsZXQgbGFiZWwgPSBsYWJlbChtKTtcbi8vICAgICAgIGxldCBtb2xkID0gbW9sZChtKTtcbi8vICAgICAgIGxlbmd0aChtKSA9PSBMYWJlbC5sZW5ndGgobGFiZWwpXG4vLyAgICAgICAgID8ge1xuLy8gICAgICAgICAgIGxldCBjaGlsZHJlbiA9IExpc3RVdGlsLnJldl9pZihPLmQgPT0gTGVmdCwgY2hpbGRyZW4obSkpO1xuLy8gICAgICAgICAgIFNvbWUoQmFzZS5UaWxlLntpZCwgbGFiZWwsIG1vbGQsIGNoaWxkcmVufSk7XG4vLyAgICAgICAgIH1cbi8vICAgICAgICAgOiBOb25lO1xuLy8gICAgIH07XG4vLyAgIH07XG4vLyB9O1xuIiwiLy8gb3BlbiBVdGlsO1xuaW5jbHVkZSBCYXNlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBwaWVjZTtcblxubGV0IHNlY29uZGFyeSA9IHcgPT4gU2Vjb25kYXJ5KHcpO1xubGV0IGdyb3V0ID0gZyA9PiBHcm91dChnKTtcbmxldCB0aWxlID0gdCA9PiBUaWxlKHQpO1xuXG5sZXQgZ2V0ID0gKGZfdywgZl9nLCBmX3QsIHA6IHQpID0+XG4gIHN3aXRjaCAocCkge1xuICB8IFNlY29uZGFyeSh3KSA9PiBmX3codylcbiAgfCBHcm91dChnKSA9PiBmX2coZylcbiAgfCBUaWxlKHQpID0+IGZfdCh0KVxuICB9O1xuXG5sZXQgaWQgPSBnZXQoU2Vjb25kYXJ5LmlkLCBHcm91dC5pZCwgVGlsZS5pZCk7XG5cbmxldCBzb3J0ID1cbiAgZ2V0KFxuICAgIF8gPT4gKFNvcnQuQW55LCBbXSksXG4gICAgXyA9PiAoU29ydC5BbnksIFtdKSxcbiAgICB0ID0+ICh0Lm1vbGQub3V0LCB0Lm1vbGQuaW5fKSxcbiAgKTtcblxubGV0IG5pYnMgPVxuICBnZXQoXG4gICAgXyA9PiBOb25lLFxuICAgIGcgPT4ge1xuICAgICAgbGV0IChsLCByKSA9IEdyb3V0LnNoYXBlcyhnKTtcbiAgICAgIFNvbWUoTmliLih7c2hhcGU6IGwsIHNvcnQ6IEFueX0sIHtzaGFwZTogciwgc29ydDogQW55fSkpO1xuICAgIH0sXG4gICAgdCA9PiBTb21lKFRpbGUubmlicyh0KSksXG4gICk7XG5cbmxldCBuaWJfc29ydHMgPVxuICBnZXQoXG4gICAgXyA9PiAoU29ydC5BbnksIFNvcnQuQW55KSxcbiAgICBfID0+IChTb3J0LkFueSwgU29ydC5BbnkpLFxuICAgIHQgPT4ge1xuICAgICAgbGV0IChsLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgIChsLnNvcnQsIHIuc29ydCk7XG4gICAgfSxcbiAgKTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IGdldChfID0+IFtdLCBfID0+IFtdLCBUaWxlLnNvcnRlZF9jaGlsZHJlbik7XG5sZXQgY2hpbGRyZW4gPSBwID0+IHNvcnRlZF9jaGlsZHJlbihwKSB8PiBMaXN0LnNwbGl0IHw+IHNuZDtcblxuLy8gbGV0IGlzX2JhbGFuY2VkID1cbi8vICAgZnVuXG4vLyAgIHwgU2hhcmQoXykgPT4gZmFsc2Vcbi8vICAgfCBTZWNvbmRhcnkoXylcbi8vICAgfCBHcm91dChfKVxuLy8gICB8IFRpbGUoXykgPT4gdHJ1ZTtcblxubGV0IHBvcF9sID0gKHA6IHQpOiAodCwgc2VnbWVudCkgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiBUaWxlLnBvcF9sKHQpXG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gKHAsIFtdKVxuICB9O1xubGV0IHBvcF9yID0gKHA6IHQpOiAoc2VnbWVudCwgdCkgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiBUaWxlLnBvcF9yKHQpXG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gKFtdLCBwKVxuICB9O1xuXG5sZXQgZGlzYXNzZW1ibGUgPSAocDogdCk6IHNlZ21lbnQgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gW3BdXG4gIHwgVGlsZSh0KSA9PiBUaWxlLmRpc2Fzc2VtYmxlKHQpXG4gIH07XG5cbi8vIGxldCByZW1vbGQgPSAocDogdCkgPT5cbi8vICAgc3dpdGNoIChwKSB7XG4vLyAgIHwgR3JvdXQoXylcbi8vICAgfCBTZWNvbmRhcnkoXykgPT4gW3BdXG4vLyAgIHwgVGlsZSh0KSA9PiBMaXN0Lm1hcCh0aWxlLCBUaWxlLnJlbW9sZCh0KSlcbi8vICAgfTtcblxubGV0IHNoYXBlcyA9XG4gIGdldChfID0+IE5vbmUsIGcgPT4gU29tZShHcm91dC5zaGFwZXMoZykpLCB0ID0+IFNvbWUoVGlsZS5zaGFwZXModCkpKTtcblxubGV0IGlzX2dyb3V0OiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBHcm91dChfKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGlzX3NlY29uZGFyeTogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgU2Vjb25kYXJ5KF8pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlO1xuXG5sZXQgaXNfdGlsZTogdCA9PiBvcHRpb24oVGlsZS50KSA9XG4gIGZ1blxuICB8IFRpbGUodCkgPT4gU29tZSh0KVxuICB8IF8gPT4gTm9uZTtcblxubGV0IGxhYmVsOiB0ID0+IG9wdGlvbihMYWJlbC50KSA9XG4gIGZ1blxuICB8IFRpbGUoe2xhYmVsLCBffSkgPT4gU29tZShsYWJlbClcbiAgfCBfID0+IE5vbmU7XG5cbmxldCBtb25vdGlsZTogdCA9PiBvcHRpb24oVG9rZW4udCkgPVxuICBmdW5cbiAgfCBUaWxlKHtsYWJlbDogW3RdLCBffSkgPT4gU29tZSh0KVxuICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHcpID0+XG4gICAgU29tZShTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpKVxuICB8IF8gPT4gTm9uZTtcblxubGV0IGhhc19lbmRzID0gZ2V0KF8gPT4gdHJ1ZSwgXyA9PiB0cnVlLCBUaWxlLmhhc19lbmRzKTtcblxubGV0IGlzX2NvbXBsZXRlOiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBUaWxlKHQpID0+IFRpbGUuaXNfY29tcGxldGUodClcbiAgfCBfID0+IHRydWU7XG5cbmxldCBnZXRfb3V0c2lkZV9zb3J0cyA9ICh+ZGVmYXVsdF9zb3J0PVNvcnQuQW55LCBwOiB0KTogbGlzdChTb3J0LnQpID0+XG4gIC8vVE9ETzogRGF2aWQgcGxlYXNlIHJldmlldyB0aGlzXG4gIHN3aXRjaCAocCkge1xuICB8IFNlY29uZGFyeShfKSA9PiBbXVxuICB8IEdyb3V0KHtzaGFwZTogQ29udmV4LCBffSkgPT4gW11cbiAgfCBHcm91dCh7c2hhcGU6IENvbmNhdmUsIF99KSA9PiBbZGVmYXVsdF9zb3J0LCBkZWZhdWx0X3NvcnRdXG4gIHwgVGlsZSh7c2hhcmRzOiBfLCBffSBhcyB0KSB3aGVuICFUaWxlLmlzX2NvbXBsZXRlKHQpID0+XG4gICAgLy8gVE9ETyhhbmRyZXcpOiBiZXR0ZXIgaW5jb21wbGV0ZSB0aWxlIGhhbmRsaW5nXG4gICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc2hhcGUgb2YgaW5jb21wbGV0ZSB0aWxlIGlzXG4gICAgW11cbiAgfCBUaWxlKHQpID0+XG4gICAgbGV0IChzb3J0X2wsIHNvcnRfcikgPSBuaWJfc29ydHMocCk7XG4gICAgc3dpdGNoICgodC5tb2xkLm5pYnMgfD4gZnN0KS5zaGFwZSwgKHQubW9sZC5uaWJzIHw+IHNuZCkuc2hhcGUpIHtcbiAgICB8IChDb252ZXgsIENvbnZleCkgPT4gW11cbiAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+IFtzb3J0X3JdXG4gICAgfCAoQ29uY2F2ZShfKSwgQ29udmV4KSA9PiBbc29ydF9sXVxuICAgIHwgKENvbmNhdmUoXyksIENvbmNhdmUoXykpID0+IFtzb3J0X2wsIHNvcnRfcl1cbiAgICB9O1xuICB9O1xuXG5sZXQgbW9sZF9vZiA9ICh+c2hhcGU9TmliLlNoYXBlLkNvbnZleCwgcDogdCkgPT5cbiAgLy8gVE9ETyhkKSBmaXggc29ydHNcbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiB0Lm1vbGRcbiAgfCBHcm91dChnKSA9PiBNb2xkLm9mX2dyb3V0KGcsIEFueSlcbiAgfCBTZWNvbmRhcnkoXykgPT4gTW9sZC5vZl9zZWNvbmRhcnkoe3NvcnQ6IEFueSwgc2hhcGV9KVxuICB9O1xuIiwib3BlbiBVdGlsO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBPcChyb290KVxuICB8IFByZShyb290LCB0KVxuICB8IFBvc3QodCwgcm9vdClcbiAgfCBCaW4odCwgcm9vdCwgdClcbmFuZCByb290ID0gQWJhLnQoaW50LCB0KTtcblxuLy8gbGV0IHJlYyBzaXplID1cbi8vICAgZnVuXG4vLyAgIHwgT3AoXykgPT4gMVxuLy8gICB8IFByZShfLCByKSA9PiAxICsgc2l6ZShyKVxuLy8gICB8IFBvc3QobCwgXykgPT4gc2l6ZShsKSArIDFcbi8vICAgfCBCaW4obCwgXywgcikgPT4gc2l6ZShsKSArIDEgKyBzaXplKHIpO1xuXG4vLyBUT0RPKGQpOiByZW5hbWUgdG8gcmVmbGVjdCBhYmFcbmxldCByb290ID1cbiAgZnVuXG4gIHwgT3AocilcbiAgfCBQcmUociwgXylcbiAgfCBQb3N0KF8sIHIpXG4gIHwgQmluKF8sIHIsIF8pID0+IHI7XG5cbi8vIGxldCBjaGlsZHJlbiA9XG4vLyAgIGZ1blxuLy8gICB8IE9wKF8pID0+IFtdXG4vLyAgIHwgUHJlKF8sIHNrZWwpID0+IFsoRGlyZWN0aW9uLlJpZ2h0LCBza2VsKV1cbi8vICAgfCBQb3N0KHNrZWwsIF8pID0+IFsoTGVmdCwgc2tlbCldXG4vLyAgIHwgQmluKGwsIF8sIHIpID0+IFsoTGVmdCwgbCksIChSaWdodCwgcildO1xuXG4vLyByZXR1cm5zIGluY2x1c2l2ZSBsb3dlciBib3VuZCwgZXhjbHVzaXZlIHVwcGVyIGJvdW5kXG4vLyBsZXQgcmVjIHJhbmdlID1cbi8vICAgZnVuXG4vLyAgIHwgT3AobikgPT4gKG4sIG4gKyAxKVxuLy8gICB8IFByZShuLCByKSA9PiAobiwgc25kKHJhbmdlKHIpKSlcbi8vICAgfCBQb3N0KGwsIG4pID0+IChmc3QocmFuZ2UobCkpLCBuICsgMSlcbi8vICAgfCBCaW4obCwgXywgcikgPT4gKGZzdChyYW5nZShsKSksIHNuZChyYW5nZShyKSkpO1xuXG4vLyBsZXQgcmVjIHNrZWxfYXQgPSAobiwgc2tlbCkgPT5cbi8vICAgc3dpdGNoIChza2VsKSB7XG4vLyAgIHwgT3AobSkgPT4gbiA9PSBtID8gc2tlbCA6IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJTa2VsLnNrZWxfYXRcIikpXG4vLyAgIHwgUHJlKG0sIHIpID0+IG4gPT0gbSA/IHNrZWwgOiBza2VsX2F0KG4sIHIpXG4vLyAgIHwgUG9zdChsLCBtKSA9PiBuID09IG0gPyBza2VsIDogc2tlbF9hdChuLCBsKVxuLy8gICB8IEJpbihsLCBtLCByKSA9PlxuLy8gICAgIGlmIChuIDwgbSkge1xuLy8gICAgICAgc2tlbF9hdChuLCBsKTtcbi8vICAgICB9IGVsc2UgaWYgKG4gPiBtKSB7XG4vLyAgICAgICBza2VsX2F0KG4sIHIpO1xuLy8gICAgIH0gZWxzZSB7XG4vLyAgICAgICBza2VsO1xuLy8gICAgIH1cbi8vICAgfTtcblxuZXhjZXB0aW9uIElucHV0X2NvbnRhaW5zX3NlY29uZGFyeTtcbmV4Y2VwdGlvbiBOb25jb252ZXhfc2VnbWVudDtcblxuW0BkZXJpdmluZyBzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSldXG50eXBlIGlwID0gKGludCwgUGllY2UudCk7XG5cbnR5cGUgcmVsID1cbiAgfCBMdFxuICB8IEVxXG4gIHwgR3Q7XG5cbmxldCByZWwgPSAocDE6IFBpZWNlLnQsIHAyOiBQaWVjZS50KTogb3B0aW9uKHJlbCkgPT5cbiAgc3dpdGNoIChwMSwgcDIpIHtcbiAgfCAoU2Vjb25kYXJ5KF8pLCBfKVxuICB8IChfLCBTZWNvbmRhcnkoXykpID0+IE5vbmVcbiAgfCAoR3JvdXQoe3NoYXBlLCBffSksIF8pID0+XG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgIHwgQ29udmV4ID0+IFNvbWUoR3QpXG4gICAgfCBDb25jYXZlID0+IFNvbWUoTHQpXG4gICAgfVxuICB8IChfLCBHcm91dCh7c2hhcGUsIF99KSkgPT5cbiAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgfCBDb252ZXggPT4gU29tZShMdClcbiAgICB8IENvbmNhdmUgPT4gU29tZShHdClcbiAgICB9XG4gIHwgKFRpbGUodDEpLCBUaWxlKHQyKSkgPT5cbiAgICBvcGVuIExhYmVscztcbiAgICBsZXQgbGJsMSA9ICg9PSkodDEubGFiZWwpO1xuICAgIGxldCBsYmwyID0gKD09KSh0Mi5sYWJlbCk7XG4gICAgbGV0IGVxID1cbiAgICAgIFtcbiAgICAgICAgbGJsMShjYXNlKSAmJiBsYmwyKHJ1bGUpLFxuICAgICAgICBsYmwxKHJ1bGUpICYmIGxibDIocnVsZSksXG4gICAgICAgIGxibDEoY29tbWEpICYmIGxibDIoY29tbWEpICYmIHQxLm1vbGQgPT0gdDIubW9sZCxcbiAgICAgICAgbGJsMShbXCIrXCJdKSAmJiBsYmwyKFtcIitcIl0pICYmIHQxLm1vbGQgPT0gdDIubW9sZCxcbiAgICAgIF1cbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KCh8fCksIGZhbHNlKTtcbiAgICBpZiAoZXEpIHtcbiAgICAgIFNvbWUoRXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgKF8sIHIxKSA9IFRpbGUuc2hhcGVzKHQxKTtcbiAgICAgIGxldCAobDIsIF8pID0gVGlsZS5zaGFwZXModDIpO1xuICAgICAgc3dpdGNoIChyMSwgbDIpIHtcbiAgICAgIHwgKENvbnZleCwgQ29udmV4KSA9PiBOb25lXG4gICAgICB8IChDb25jYXZlKF8pLCBDb252ZXgpID0+IFNvbWUoTHQpXG4gICAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+IFNvbWUoR3QpXG4gICAgICB8IChDb25jYXZlKHApLCBDb25jYXZlKHAnKSkgPT5cbiAgICAgICAgaWYgKHAgPCBwJykge1xuICAgICAgICAgIFNvbWUoTHQpO1xuICAgICAgICB9IGVsc2UgaWYgKHAgPiBwJykge1xuICAgICAgICAgIFNvbWUoR3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN3aXRjaCAoUHJlY2VkZW5jZS5hc3NvY2lhdGl2aXR5KHApKSB7XG4gICAgICAgICAgfCBTb21lKExlZnQpID0+IFNvbWUoR3QpXG4gICAgICAgICAgfCBTb21lKFJpZ2h0KSA9PiBTb21lKEx0KVxuICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgLy8gbWF5IHdhbnQgdG8gbWFrZSB0aGlzIFNvbWUoRXEpXG4gICAgICAgICAgICAvLyBmb3IgdGhpbmdzIGxpa2UgY29tbWEgYnV0IGRvbid0XG4gICAgICAgICAgICAvLyB3YW50IHRvIGJvdGhlciB3aXRoIG1vbGQgY29uY2VybnMgaGVyZVxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgfTtcblxubW9kdWxlIFN0YWNrcyA9IHtcbiAgW0BkZXJpdmluZyBzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSldXG4gIHR5cGUgc2tlbCA9IHQ7XG4gIFtAZGVyaXZpbmcgc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pXVxuICB0eXBlIHQgPSB7XG4gICAgb3V0cHV0OiBsaXN0KHNrZWwpLFxuICAgIHNodW50ZWQ6IGxpc3QoaXApLFxuICB9O1xuXG4gIGxldCBlbXB0eSA9IHtvdXRwdXQ6IFtdLCBzaHVudGVkOiBbXX07XG5cbiAgbGV0IHJlYyBwb3BfY2hhaW4gPVxuICAgICAgICAgICh+cG9wcGVkPVtdLCBzaHVudGVkOiBsaXN0KGlwKSk6IChsaXN0KGlwKSwgbGlzdChpcCkpID0+XG4gICAgc3dpdGNoIChzaHVudGVkKSB7XG4gICAgfCBbXSA9PiAocG9wcGVkLCBzaHVudGVkKVxuICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgIHN3aXRjaCAocG9wcGVkKSB7XG4gICAgICB8IFtdID0+IHBvcF9jaGFpbih+cG9wcGVkPVtoZF0sIHRsKVxuICAgICAgfCBbcCwgLi4uX10gPT5cbiAgICAgICAgc3dpdGNoIChyZWwoc25kKGhkKSwgc25kKHApKSkge1xuICAgICAgICB8IFNvbWUoRXEpID0+IHBvcF9jaGFpbih+cG9wcGVkPVtoZCwgLi4ucG9wcGVkXSwgdGwpXG4gICAgICAgIHwgXyA9PiAocG9wcGVkLCBzaHVudGVkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgc2hhcGVzID0gcCA9PlxuICAgIFBpZWNlLnNoYXBlcyhwKSB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnB1dF9jb250YWluc19zZWNvbmRhcnkpO1xuXG4gIGxldCBzaGFwZXNfb2ZfY2hhaW4gPVxuICAgICAgKGNoYWluOiBsaXN0KGlwKSk6IG9wdGlvbigoTmliLlNoYXBlLnQsIE5pYi5TaGFwZS50KSkgPT5cbiAgICBzd2l0Y2ggKGNoYWluLCBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChjaGFpbikpIHtcbiAgICB8IChbKF8sIGZpcnN0KSwgLi4uX10sIFNvbWUoKF8sIChfLCBsYXN0KSkpKSA9PlxuICAgICAgbGV0IChsLCBfKSA9IHNoYXBlcyhmaXJzdCk7XG4gICAgICBsZXQgKF8sIHIpID0gc2hhcGVzKGxhc3QpO1xuICAgICAgU29tZSgobCwgcikpO1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgcmVjIHB1c2hfb3V0cHV0ID0gKH5wcmVjOiBvcHRpb24oUHJlY2VkZW5jZS50KT0/LCBzdGFja3M6IHQpOiB0ID0+IHtcbiAgICBsZXQgKGNoYWluLCBzaHVudGVkKSA9IHBvcF9jaGFpbihzdGFja3Muc2h1bnRlZCk7XG4gICAgc3dpdGNoIChwcmVjLCBzaGFwZXNfb2ZfY2hhaW4oY2hhaW4pKSB7XG4gICAgfCAoU29tZShwcmVjKSwgU29tZSgoXywgQ29uY2F2ZShwcmVjJykpKSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFByZWNlZGVuY2UuY29tcGFyZShwcmVjJywgcHJlYykgPCAwXG4gICAgICAgICAgfHwgUHJlY2VkZW5jZS5jb21wYXJlKHByZWMnLCBwcmVjKSA9PSAwXG4gICAgICAgICAgJiYgUHJlY2VkZW5jZS5hc3NvY2lhdGl2aXR5KHByZWMnKSAhPSBTb21lKExlZnQpID0+IHN0YWNrc1xuICAgIHwgKF8sIE5vbmUpID0+IHN0YWNrc1xuICAgIHwgKF8sIFNvbWUoKGwsIHIpKSkgPT5cbiAgICAgIGxldCBpcyA9IExpc3QubWFwKGZzdCwgY2hhaW4pO1xuICAgICAgbGV0IHNwbGl0X2tpZHMgPSBuID0+XG4gICAgICAgIHRyeShMaXN0VXRpbC5zcGxpdF9uKG4sIHN0YWNrcy5vdXRwdXQpIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5yZXYpKSB7XG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIHByaW50X2VuZGxpbmUoc2hvdyhzdGFja3MpKTtcbiAgICAgICAgICBmYWlsd2l0aChcIlNrZWwucHVzaF9vdXRwdXQ6IHNwbGl0X2tpZHM6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG4gICAgICAgIH07XG4gICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgc3dpdGNoIChsLCByKSB7XG4gICAgICAgIHwgKENvbnZleCwgQ29udmV4KSA9PlxuICAgICAgICAgIGxldCAoa2lkcywgb3V0cHV0KSA9IHNwbGl0X2tpZHMoTGlzdC5sZW5ndGgoY2hhaW4pIC0gMSk7XG4gICAgICAgICAgW09wKEFiYS5tayhpcywga2lkcykpLCAuLi5vdXRwdXRdO1xuICAgICAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+XG4gICAgICAgICAgbGV0IChraWRzLCBvdXRwdXQpID0gc3BsaXRfa2lkcyhMaXN0Lmxlbmd0aChjaGFpbikpO1xuICAgICAgICAgIGxldCAoa2lkcywgcikgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGtpZHMpO1xuICAgICAgICAgIFtQcmUoQWJhLm1rKGlzLCBraWRzKSwgciksIC4uLm91dHB1dF07XG4gICAgICAgIHwgKENvbmNhdmUoXyksIENvbnZleCkgPT5cbiAgICAgICAgICBsZXQgKGtpZHMsIG91dHB1dCkgPSBzcGxpdF9raWRzKExpc3QubGVuZ3RoKGNoYWluKSk7XG4gICAgICAgICAgbGV0IChsLCBraWRzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGtpZHMpO1xuICAgICAgICAgIFtQb3N0KGwsIEFiYS5tayhpcywga2lkcykpLCAuLi5vdXRwdXRdO1xuICAgICAgICB8IChDb25jYXZlKF8pLCBDb25jYXZlKF8pKSA9PlxuICAgICAgICAgIGxldCAoa2lkcywgb3V0cHV0KSA9IHNwbGl0X2tpZHMoTGlzdC5sZW5ndGgoY2hhaW4pICsgMSk7XG4gICAgICAgICAgbGV0IChsLCBraWRzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGtpZHMpO1xuICAgICAgICAgIGxldCAoa2lkcywgcikgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGtpZHMpO1xuICAgICAgICAgIFtCaW4obCwgQWJhLm1rKGlzLCBraWRzKSwgciksIC4uLm91dHB1dF07XG4gICAgICAgIH07XG4gICAgICBwdXNoX291dHB1dCh+cHJlYz8sIHtzaHVudGVkLCBvdXRwdXR9KTtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBwdXNoX3NodW50ZWQgPSAoKF8sIHApIGFzIGlwOiBpcCwgc3RhY2tzOiB0KTogdCA9PiB7XG4gICAgbGV0IChsLCBfKSA9IHNoYXBlcyhwKTtcbiAgICBsZXQgc3RhY2tzID1cbiAgICAgIHN3aXRjaCAobCkge1xuICAgICAgfCBDb252ZXggPT4gc3RhY2tzXG4gICAgICB8IENvbmNhdmUocHJlYykgPT4gcHVzaF9vdXRwdXQofnByZWMsIHN0YWNrcylcbiAgICAgIH07XG4gICAgey4uLnN0YWNrcywgc2h1bnRlZDogW2lwLCAuLi5zdGFja3Muc2h1bnRlZF19O1xuICB9O1xuXG4gIGxldCBmaW5pc2ggPSBzdGFja3MgPT4gcHVzaF9vdXRwdXQoc3RhY2tzKTtcbn07XG5cbmxldCBtayA9IChzZWc6IGxpc3QoaXApKTogdCA9PiB7XG4gIGxldCBzdGFja3MgPVxuICAgIHNlZ1xuICAgIHw+IExpc3QuZm9sZF9sZWZ0KEZ1bi5mbGlwKFN0YWNrcy5wdXNoX3NodW50ZWQpLCBTdGFja3MuZW1wdHkpXG4gICAgfD4gU3RhY2tzLmZpbmlzaDtcbiAgTGlzdFV0aWwuaGRfb3B0KHN0YWNrcy5vdXRwdXQpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKE5vbmNvbnZleF9zZWdtZW50KTtcbn07XG4iLCJvcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBFbXB0eV9zZWdtZW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBCYXNlLnNlZ21lbnQ7XG5cbmxldCBlbXB0eSA9IFtdO1xubGV0IGNvbnMgPSBMaXN0LmNvbnM7XG5sZXQgY29uY2F0ID0gTGlzdC5jb25jYXQ7XG5sZXQgZm9sZF9yaWdodCA9IExpc3QuZm9sZF9yaWdodDtcbmxldCByZXYgPSBMaXN0LnJldjtcblxubGV0IG9mX3RpbGUgPSB0ID0+IFtUaWxlLnRvX3BpZWNlKHQpXTtcblxubGV0IG5pYnMgPSB0aWxlcyA9PlxuICBzd2l0Y2ggKHRpbGVzLCBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdCh0aWxlcykpIHtcbiAgfCAoW10sIF8pXG4gIHwgKF8sIE5vbmUpID0+IE5vbmVcbiAgfCAoW19maXJzdCwgLi4uX10sIFNvbWUoKF8sIF9sYXN0KSkpID0+IGZhaWx3aXRoKFwidG9kbyBUaWxlcy5uaWJzXCIpXG4gIH07XG5cbmxldCBpbmNvbXBsZXRlX3RpbGVzID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSB3aGVuICFUaWxlLmlzX2NvbXBsZXRlKHQpID0+IFNvbWUodClcbiAgICB8IF8gPT4gTm9uZSxcbiAgKTtcbmxldCB0aWxlcyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgPT4gU29tZSh0KVxuICAgIHwgXyA9PiBOb25lLFxuICApO1xuXG5sZXQgY29udmV4X2dyb3V0ID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuR3JvdXQoZykgd2hlbiBnLnNoYXBlID09IENvbnZleCA9PiBTb21lKGcpXG4gICAgfCBfID0+IE5vbmUsXG4gICk7XG5cbmxldCBjb250YWluc19tYXRjaGluZyA9ICh0OiBUaWxlLnQpID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0JykgPT4gdCcuaWQgPT0gdC5pZFxuICAgIHwgXyA9PiBmYWxzZSxcbiAgKTtcblxubGV0IHJlbW92ZV9tYXRjaGluZyA9ICh0OiBUaWxlLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCcpIHdoZW4gdCcuaWQgPT0gdC5pZCA9PiBOb25lXG4gICAgfCBwID0+IFNvbWUocCksXG4gICk7XG5cbmxldCBzbm9jID0gKHRpbGVzLCB0aWxlKSA9PiB0aWxlcyBAIFt0aWxlXTtcblxuLy8gbGV0IGlzX2JhbGFuY2VkID0gTGlzdC5mb3JfYWxsKFBpZWNlLmlzX2JhbGFuY2VkKTtcblxubGV0IHNoYXBlX2FmZml4ID1cbiAgICAoZDogRGlyZWN0aW9uLnQsIGFmZml4OiB0LCByOiBOaWIuU2hhcGUudClcbiAgICA6IChBYmEudChsaXN0KFNlY29uZGFyeS50KSwgR3JvdXQudCksIE5pYi5TaGFwZS50LCB0KSA9PiB7XG4gIGxldCBlbXB0eV93Z3cgPSBBYmEubWsoW1tdXSwgW10pO1xuICBsZXQgcmVjIGdvID0gKGFmZml4OiB0LCByOiBOaWIuU2hhcGUudCkgPT5cbiAgICBzd2l0Y2ggKGFmZml4KSB7XG4gICAgfCBbXSA9PiAoZW1wdHlfd2d3LCByLCBbXSlcbiAgICB8IFtwLCAuLi50bF0gPT5cbiAgICAgIGxldCAod2d3LCBzLCB0bCkgPSBnbyh0bCwgcik7XG4gICAgICBzd2l0Y2ggKHApIHtcbiAgICAgIHwgU2Vjb25kYXJ5KHcpID0+XG4gICAgICAgIGxldCAod3NzLCBncykgPSB3Z3c7XG4gICAgICAgIGxldCAod3MsIHdzcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdCh3c3MpO1xuICAgICAgICAoKFtbdywgLi4ud3NdLCAuLi53c3NdLCBncyksIHMsIHRsKTtcbiAgICAgIHwgR3JvdXQoZykgPT4gKEFiYS5jb25zKFtdLCBnLCB3Z3cpLCBzLCB0bClcbiAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICBsZXQgKGwsIF8pID0gVGlsZS5zaGFwZXModCkgfD4gKGQgPT0gTGVmdCA/IFR1cGxlVXRpbC5zd2FwIDogRnVuLmlkKTtcbiAgICAgICAgKGVtcHR5X3dndywgbCwgdGwpO1xuICAgICAgfTtcbiAgICB9O1xuICBnbygoZCA9PSBMZWZ0ID8gTGlzdC5yZXYgOiBGdW4uaWQpKGFmZml4KSwgcik7XG59O1xubGV0IHNoYXBlID0gc2hhcGVfYWZmaXgoUmlnaHQpO1xuXG5sZXQgcmVjIGNvbnZleCA9IHNlZyA9PiB7XG4gIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gIGxldCBsID1cbiAgICBmb2xkX3JpZ2h0KFxuICAgICAgKHA6IFBpZWNlLnQsIHNoYXBlKSA9PiB7XG4gICAgICAgIGxldCogcyA9IHNoYXBlO1xuICAgICAgICBzd2l0Y2ggKHApIHtcbiAgICAgICAgfCBTZWNvbmRhcnkoXykgPT4gc2hhcGVcbiAgICAgICAgfCBHcm91dChnKSA9PlxuICAgICAgICAgIEdyb3V0LmZpdHNfc2hhcGUoZywgcykgPyBTb21lKGZzdChHcm91dC5zaGFwZXMoZykpKSA6IE5vbmVcbiAgICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgICAgbGV0IChsLCByKSA9IFRpbGUuc2hhcGVzKHQpO1xuICAgICAgICAgIExpc3QuZm9yX2FsbChjb252ZXgsIHQuY2hpbGRyZW4pICYmIE5pYi5TaGFwZS5maXRzKHIsIHMpXG4gICAgICAgICAgICA/IFNvbWUobCkgOiBOb25lO1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHNlZyxcbiAgICAgIFNvbWUoTmliLlNoYXBlLmNvbmNhdmUoKSksXG4gICAgKTtcbiAgc3dpdGNoIChsKSB7XG4gIHwgTm9uZSA9PiBmYWxzZVxuICB8IFNvbWUobCkgPT4gTmliLlNoYXBlLmZpdHMoTmliLlNoYXBlLmNvbmNhdmUoKSwgbClcbiAgfTtcbn07XG5cbmxldCBzcGxpdF9ieV9ncm91dDogdCA9PiBBYmEudCh0LCBHcm91dC50KSA9XG4gIEFiYS5zcGxpdChcbiAgICBmdW5cbiAgICB8IFBpZWNlLkdyb3V0KGcpID0+IEVpdGhlci5SKGcpXG4gICAgfCBwID0+IEwocCksXG4gICk7XG5cbmxldCByZWMgcmVtb2xkID0gKH5zaGFwZT1OaWIuU2hhcGUuY29uY2F2ZSgpLCBzZWc6IHQsIHM6IFNvcnQudCkgPT5cbiAgc3dpdGNoIChzKSB7XG4gIHwgQW55ID0+IHNlZ1xuICB8IFR5cCA9PiByZW1vbGRfdHlwKHNoYXBlLCBzZWcpXG4gIHwgUGF0ID0+IHJlbW9sZF9wYXQoc2hhcGUsIHNlZylcbiAgfCBFeHAgPT4gcmVtb2xkX2V4cChzaGFwZSwgc2VnKVxuICB8IFJ1bCA9PiByZW1vbGRfcnVsKHNoYXBlLCBzZWcpXG4gIHwgVFBhdCA9PiByZW1vbGRfdHBhdChzaGFwZSwgc2VnKVxuICB8IF8gPT4gZmFpbHdpdGgoXCJyZW1vbGQgdW5leHBlY3RlZFwiKVxuICB9XG5hbmQgcmVtb2xkX3RpbGUgPSAoczogU29ydC50LCBzaGFwZSwgdDogVGlsZS50KTogb3B0aW9uKFRpbGUudCkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHJlbW9sZGVkID1cbiAgICBNb2xkcy5nZXQodC5sYWJlbClcbiAgICB8PiBMaXN0LmZpbHRlcigobTogTW9sZC50KSA9PiBtLm91dCA9PSBzKVxuICAgIHw+IExpc3QubWFwKG1vbGQgPT4gey4uLnQsIG1vbGR9KVxuICAgIHw+IChcbiAgICAgIGZ1blxuICAgICAgfCBbX10gYXMgdHMgPT4gdHNcbiAgICAgIHwgdHMgPT5cbiAgICAgICAgdHMgfD4gTGlzdC5maWx0ZXIodCA9PiBOaWIuU2hhcGUuZml0cyhzaGFwZSwgZnN0KFRpbGUuc2hhcGVzKHQpKSkpXG4gICAgKVxuICAgIHw+IExpc3RVdGlsLmhkX29wdDtcbiAgbGV0IGNoaWxkcmVuID1cbiAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAoKGwsIGNoaWxkLCByKSwgY2hpbGRyZW4pID0+IHtcbiAgICAgICAgbGV0IGNoaWxkID1cbiAgICAgICAgICBpZiAobFxuICAgICAgICAgICAgICArIDEgPT0gclxuICAgICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgTGlzdC5udGgocmVtb2xkZWQubW9sZC5pbl8sIGwpICE9IExpc3QubnRoKHQubW9sZC5pbl8sIGwpXG4gICAgICAgICAgICAgICAgfHwgRWZmZWN0LnNfdG91Y2hlZChyZW1vbGRlZC5pZClcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgcmVtb2xkKGNoaWxkLCBMaXN0Lm50aChyZW1vbGRlZC5tb2xkLmluXywgbCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGlsZDtcbiAgICAgICAgICB9O1xuICAgICAgICBbY2hpbGQsIC4uLmNoaWxkcmVuXTtcbiAgICAgIH0sXG4gICAgICBBYmEuYWJhX3RyaXBsZXMoQWJhLm1rKHJlbW9sZGVkLnNoYXJkcywgcmVtb2xkZWQuY2hpbGRyZW4pKSxcbiAgICAgIFtdLFxuICAgICk7XG4gIHsuLi5yZW1vbGRlZCwgY2hpbGRyZW59O1xufVxuYW5kIHJlbW9sZF90eXAgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF90eXAoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoVHlwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3R5cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT4gW1RpbGUodCksIC4uLnJlbW9sZF90eXAoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF90eXBfdW5pID0gKHNoYXBlLCBzZWc6IHQpOiAodCwgTmliLlNoYXBlLnQsIHQpID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gKFtdLCBzaGFwZSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+XG4gICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgKFtoZCwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFR5cCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gKFtdLCBzaGFwZSwgc2VnKVxuICAgICAgfCBTb21lKHQpIHdoZW4gIVRpbGUuaGFzX2VuZChSaWdodCwgdCkgPT5cbiAgICAgICAgbGV0IChfLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgICAgbGV0IHJlbW9sZGVkID0gcmVtb2xkKH5zaGFwZT1yLnNoYXBlLCB0bCwgci5zb3J0KTtcbiAgICAgICAgbGV0IChfLCBzaGFwZSwgXykgPSBzaGFwZV9hZmZpeChMZWZ0LCByZW1vbGRlZCwgci5zaGFwZSk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgW10pO1xuICAgICAgfCBTb21lKHQpIHdoZW4gdC5sYWJlbCA9PSBGb3JtLmdldChcImNvbW1hX3R5cFwiKS5sYWJlbCA9PiAoXG4gICAgICAgICAgW10sXG4gICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgc2VnLFxuICAgICAgICApXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID1cbiAgICAgICAgICByZW1vbGRfdHlwX3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3BhdF91bmkgPSAoc2hhcGUsIHNlZzogdCk6ICh0LCBOaWIuU2hhcGUudCwgdCkgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAoW10sIHNoYXBlLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT5cbiAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAoW2hkLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWRfdHlwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfcGF0LCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfcGF0X3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90eXBdIEAgcmVtb2xkZWRfcGF0LCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9XG4gICAgICAgICAgICByZW1vbGRfcGF0X3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9wYXQgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF9wYXQoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3BhdChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9wYXQoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IF8gPT4gW1RpbGUodCksIC4uLnJlbW9sZF9wYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3RwYXRfdW5pID0gKHNoYXBlLCBzZWc6IHQpOiAodCwgTmliLlNoYXBlLnQsIHQpID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gKFtdLCBzaGFwZSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+XG4gICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHBhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgIChbaGQsIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShUUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID1cbiAgICAgICAgICAgIHJlbW9sZF90cGF0X3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF90cGF0ID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfdHBhdChzaGFwZSwgdGwpXVxuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShUUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3RwYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIHN3aXRjaCAoVGlsZS5uaWJzKHQpKSB7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogVHlwfSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfdHBhdChzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgXyA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3RwYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX2V4cF91bmkgPSAoc2hhcGUsIHNlZzogdCk6ICh0LCBOaWIuU2hhcGUudCwgdCkgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAoW10sIHNoYXBlLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT5cbiAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAoW2hkLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoRXhwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUUGF0fSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX3RwYXQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90cGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90cGF0XSBAIHJlbW9sZGVkX2V4cCwgc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9wYXQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCByZXN0KTtcbiAgICAgICAgICAoW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkX3BhdF0gQCByZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWRfdHlwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90eXBdIEAgcmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogUnVsfSkgPT5cbiAgICAgICAgICAvLyBUT0RPIHJldmlldyBzaG9ydCBjaXJjdWl0XG4gICAgICAgICAgKFtUaWxlKHQpXSwgc2hhcGUsIHRsKVxuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPVxuICAgICAgICAgICAgcmVtb2xkX2V4cF91bmkoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpO1xuICAgICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfcnVsID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfcnVsKHNoYXBlLCB0bCldXG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFJ1bCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBFeHB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9ydWwoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3BhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICAvLyBUT0RPKGQpIGNvbnRpbnVpbmcgb250byBydWxlIG1pZ2h0IG5vdCBiZSByaWdodCByaWdodC4uLlxuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfcnVsKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCBfID0+IGZhaWx3aXRoKFwicmVtb2xkX3J1bCB1bmV4cGVjdGVkXCIpXG4gICAgICAgIH1cbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgW2hkLCAuLi50bF0pO1xuICAgICAgICBzd2l0Y2ggKHJlbW9sZGVkKSB7XG4gICAgICAgIHwgW10gPT4gW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZF9ydWwoc2hhcGUsIHRsKV1cbiAgICAgICAgfCBbXywgLi4uX10gPT4gcmVtb2xkZWQgQCByZW1vbGRfcnVsKHNoYXBlLCByZXN0KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9leHAgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF9leHAoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoRXhwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX2V4cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9leHAoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFRQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90cGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfZXhwKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9leHAoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFJ1bH0pID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfcnVsKHNoYXBlLCB0bCldXG4gICAgICAgIHwgXyA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX2V4cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbmxldCBza2VsID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMDAsIHNlZyA9PlxuICAgIHNlZ1xuICAgIHw+IExpc3QubWFwaSgoaSwgcCkgPT4gKGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpXG4gICAgfD4gU2tlbC5ta1xuICApO1xuXG5sZXQgc29ydGVkX2NoaWxkcmVuID0gTGlzdC5jb25jYXRfbWFwKFBpZWNlLnNvcnRlZF9jaGlsZHJlbik7XG5sZXQgY2hpbGRyZW4gPSBzZWcgPT4gTGlzdC5tYXAoc25kLCBzb3J0ZWRfY2hpbGRyZW4oc2VnKSk7XG5cbm1vZHVsZSBUcmltID0ge1xuICB0eXBlIHNlZyA9IHQ7XG4gIHR5cGUgdCA9IEFiYS50KGxpc3QoU2Vjb25kYXJ5LnQpLCBHcm91dC50KTtcblxuICBsZXQgZW1wdHkgPSBBYmEubWsoW1tdXSwgW10pO1xuXG4gIGxldCByZXYgPSBBYmEucmV2KExpc3QucmV2LCBGdW4uaWQpO1xuXG4gIGxldCBjb25zX3cgPSAodzogU2Vjb25kYXJ5LnQsICh3c3MsIGdzKSkgPT4ge1xuICAgIC8vIHNhZmUgYmMgQWJhIGFsd2F5cyBoYXMgYXQgbGVhc3Qgb25lIEEgZWxlbWVudFxuICAgIGxldCAod3MsIHdzcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdCh3c3MpO1xuICAgIEFiYS5tayhbW3csIC4uLndzXSwgLi4ud3NzXSwgZ3MpO1xuICB9O1xuICBsZXQgY29uc19nID0gKGc6IEdyb3V0LnQsICh3c3MsIGdzKSkgPT5cbiAgICBBYmEubWsoW1tdLCAuLi53c3NdLCBbZywgLi4uZ3NdKTtcblxuICBsZXQgd3MgPSAoKHdzcywgXyk6IHQpOiBzZWcgPT4gTGlzdC4obWFwKFBpZWNlLnNlY29uZGFyeSwgY29uY2F0KHdzcykpKTtcblxuICAvLyBwb3N0Y29uZDogcmVzdWx0IGlzIGVpdGhlciA8d3M+IG9yIDx3cyxnLHdzJz5cbiAgbGV0IG1lcmdlID0gKCh3c3MsIGdzKTogdCk6IHQgPT4ge1xuICAgIHN3aXRjaCAoR3JvdXQubWVyZ2UoZ3MpKSB7XG4gICAgfCBOb25lID0+IEFiYS5tayhbTGlzdC5jb25jYXQod3NzKV0sIFtdKVxuICAgIHwgU29tZShnKSA9PlxuICAgICAgbGV0ICh3cywgd3NzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KHdzcyk7XG4gICAgICBBYmEubWsoW3dzLCBMaXN0LmNvbmNhdCh3c3MpXSwgW2ddKTtcbiAgICB9O1xuICB9O1xuICAvLyBzYW1lIGFzIG1lcmdlIGJ1dCB0eXBlIGVuY29kZXMgcG9zdGNvbmRcbiAgLy8gbGV0IG1lcmdlZCA9ICh0cmltOiB0KTogKGxpc3QoU2Vjb25kYXJ5LnQpLCBvcHRpb24oKEdyb3V0LnQsIGxpc3QoU2Vjb25kYXJ5LnQpKSkpID0+IHtcbiAgLy8gICBsZXQgKHdzcywgZ3MpID0gbWVyZ2UodHJpbSk7XG4gIC8vICAgbGV0ICh3cywgd3NzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KHdzcyk7XG4gIC8vICAgc3dpdGNoIChncykge1xuICAvLyAgIHwgW10gPT4gKHdzLCBOb25lKVxuICAvLyAgIHwgW2csIC4uLl9dID0+ICh3cywgU29tZSgoZywgTGlzdC5jb25jYXQod3NzKSkpKVxuICAvLyAgIH07XG4gIC8vIH07XG4gIGxldCByZWMgcm1fdXBfdG9fb25lX3NwYWNlID1cbiAgICAgICAgICAod3NzOiBsaXN0KGxpc3QoU2Vjb25kYXJ5LnQpKSk6IGxpc3QobGlzdChTZWNvbmRhcnkudCkpID0+XG4gICAgc3dpdGNoICh3c3MpIHtcbiAgICB8IFtdID0+IFtdXG4gICAgfCBbW3csIC4uLndzXSwgLi4ud3NzXSB3aGVuIFNlY29uZGFyeS5pc19zcGFjZSh3KSA9PiBMaXN0LmNvbnMod3MsIHdzcylcbiAgICB8IFt3cywgLi4ud3NzXSA9PiBMaXN0LmNvbnMod3MsIHJtX3VwX3RvX29uZV9zcGFjZSh3c3MpKVxuICAgIH07XG5cbiAgbGV0IGFkZF9ncm91dCA9ICh+ZDogRGlyZWN0aW9uLnQsIHNoYXBlOiBOaWIuU2hhcGUudCwgKHdzcywgZ3MpOiB0KTogdCA9PiB7XG4gICAgbGV0IGcgPSBHcm91dC5ta19maXRzX3NoYXBlKHNoYXBlKTtcbiAgICAvKiBXaGVuIGFkZGluZyBhIGdyb3V0IHRvIHRoZSBsZWZ0LCBjb25zdW1lIGEgc3BhY2UuIE5vdGVcbiAgICAgICBjaGFuZ2VzIG1hZGUgdG8gdGhlIGxvZ2ljIGhlcmUgc2hvdWxkIGFsc28gdGFrZSBpbnRvXG4gICAgICAgYWNjb3VudCB0aGUgb3RoZXIgZGlyZWN0aW9uIGluICdyZWdyb3V0JyBiZWxvdyAqL1xuICAgIGxldCB3c3MnID1cbiAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgLyogUmlnaHQgQ29udmV4IGUuZy4gQmFja3NwYWNlIGAxfCArIDJgID0+IGB8PD4gKyAyYCAoRG9uJ3QgY29uc3VtZSkgKi9cbiAgICAgIC8qIFJpZ2h0IENvbmNhdmUgZS5nLiBCYWNrc3BhY2UgYDEgK3wgMWAgPT4gYDEgfD48IDFgIChEb24ndCBjb25zdW1lKSAqL1xuICAgICAgfCBSaWdodCA9PiB3c3NcbiAgICAgIC8qIExlZnQgQ29udmV4IGUuZy4gSW5zZXJ0IFNwYWNlIGBbfF1gID0+IGBbIHxdYCA9PiBgWzw+fF1gIChDb25zdW1lKSAqL1xuICAgICAgLyogTGVmdCBDb25jYXZlIGUuZy4gSW5zZXJ0IFwiaVwiIGBsZXQgYSA9IDEgaXxgID0+IGBsZXQgYSA9IDE+PGl8YCAoQ29uc3VtZSkgKi9cbiAgICAgIHwgTGVmdCA9PiBybV91cF90b19vbmVfc3BhY2Uod3NzKVxuICAgICAgfTtcbiAgICBjb25zX2coZywgKHdzcycsIGdzKSk7XG4gIH07XG5cbiAgLy8gYXNzdW1lcyBncm91dCBpbiB0cmltIGZpdCByIGJ1dCBtYXkgbm90IGZpdCBsXG4gIGxldCByZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCAobCwgcik6IE5pYnMuc2hhcGVzLCB0cmltOiB0KTogdCA9PlxuICAgIGlmIChOaWIuU2hhcGUuZml0cyhsLCByKSkge1xuICAgICAgbGV0ICh3c3MsIGdzKSA9IHRyaW07XG4gICAgICAvKiBXaGVuIHJlbW92aW5nIGEgZ3JvdXQgdG8gdGhlIExlZnQsIGFkZCBhIHNwYWNlLiBOb3RlXG4gICAgICAgICBjaGFuZ2VzIG1hZGUgdG8gdGhlIGxvZ2ljIGhlcmUgc2hvdWxkIGFsc28gdGFrZSBpbnRvXG4gICAgICAgICBhY2NvdW50IHRoZSBvdGhlciBkaXJlY3Rpb24gaW4gJ2FkZF9ncm91dCcgYWJvdmUgKi9cbiAgICAgIGxldCBuZXdfc3BhY2VzID1cbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgIChnOiBHcm91dC50KSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGcuc2hhcGUsIGQpIHtcbiAgICAgICAgICAgIC8qIExlZnQgQ29uY2F2ZSBlLmcuIGBsZXQgYSA9IDE+PGlufGAgPT4gYGxldCBhID0gMSBpbiB8YCAoQWRkKSAqL1xuICAgICAgICAgICAgLyogTk9URShhbmRyZXcpOiBOb3Qgc3VyZSB3aHkgZCBoZXJlIHNlZW1zIHJldmVyc2VkLiBBbHNvIG5vdCBzdXJlIHdoeVxuICAgICAgICAgICAgICogcmVzdHJpY3Rpb24gdG8gY29uY2F2ZSBpcyBuZWNlc3NhcnkgYnV0IHNlZW1zIHRvIHByZXZlbnQgYWRkaXRpb25cbiAgICAgICAgICAgICAqIG9mIG5lZWRsZXNzIHdoaXRlc3BhY2UgaW4gc29tZSBzaXR1YXRpb24gc3VjaCBhcyB3aGVuIGluc2VydGluZ1xuICAgICAgICAgICAgICogb24gYCh8KWAsIHdoaWNoIHNlZW1zIHRvIGFkZCB3aGl0ZXNwYWNlIGFmdGVyIHRoZSByaWdodCBwYXJlbnNcbiAgICAgICAgICAgICAqIHdpdGhvdXQgdGhpcyBzaGFwZSByZXN0aXJjdGlvbiAqL1xuICAgICAgICAgICAgfCAoQ29uY2F2ZSwgUmlnaHQpID0+IFNvbWUoU2Vjb25kYXJ5Lm1rX3NwYWNlKGcuaWQpKVxuICAgICAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdzLFxuICAgICAgICApO1xuICAgICAgLyogTm90ZSBiZWxvdyB0aGF0IGl0IGlzIGltcG9ydGFudCB0aGF0IHdlIGFkZCB0aGUgbmV3IHNwYWNlc1xuICAgICAgICAgYmVmb3JlIHRoZSBleGlzdGluZyB3c3MsIGFzIGRvaW5nIG90aGVyd2lzZSBtYXkgcmVzdWx0XG4gICAgICAgICBpbiB0aGUgbmV3IHNwYWNlcyBlbmRpbmcgdXAgbGVhZGluZyBhIGxpbmUuIFRoaXMgYXBwcm9hY2ggaXNcbiAgICAgICAgIHNvbWV3aGF0IGhhY2t5OyB3ZSBtYXkganVzdCB3YW50IHRvIHJlbW92ZSBhbGwgdGhlIHNwYWNlc1xuICAgICAgICAgd2hlbmV2ZXIgdGhlcmUgaXMgYSBsaW5lYnJlYWs7IG5vdCBtYWtpbmcgdGhpcyBjaGFuY2Ugbm93XG4gICAgICAgICBhcyBJJ20gd29ycmllZCBhYm91dCBpdCBpbnRyb2R1Y2luZyBzdWJ0bGUgamFuayAqL1xuXG4gICAgICAvKiBEYXZpZCBQUiBjb21tZW50OlxuICAgICAgICAgQWxsIHRoZXNlIGNoYW5nZXMgYXNzdW1lIHRoZSB0cmltIGlzIG9yZGVyZWQgbGVmdC10by1yaWdodCxcbiAgICAgICAgIGJ1dCB0aGlzIG1heSBub3QgYmUgdHJ1ZSB3aGVuIFRyaW0ucmVncm91dCBpcyBjYWxsZWQgYnlcbiAgICAgICAgIHJlZ3JvdXRfYWZmaXgoTGVmdCwgLi4uKSBiZWxvdywgd2hpY2ggcmV2ZXJzZXMgdGhlIGFmZml4IGJlZm9yZVxuICAgICAgICAgcHJvY2Vzc2luZy4gKFRoaXMgZGlkbid0IHBvc2UgYW4gaXNzdWUgYmVmb3JlIHdpdGggdHJpbSBiZWNhdXNlXG4gICAgICAgICB0aGUgc2Vjb25kYXJ5IGFuZCBncm91dCBhcmUgc3ltbWV0cmljIGFuZCB0aGUgZXhpc3RpbmcgY29kZVxuICAgICAgICAgZGlkbid0IGFmZmVjdCBvcmRlci4pXG4gICAgICAgICBQcm9wZXIgZml4IHdvdWxkIHJlcXVpcmUgdGhyZWFkaW5nIHRocm91Z2ggZGlyZWN0aW9uYWwgcGFyYW1ldGVyXG4gICAgICAgICBmcm9tIHJlZ3JvdXRfYWZmaXggaW50byBUcmltLnJlZ3JvdXQgYW5kIGFwcGVuZGluZyB0byBjb3JyZWN0IHNpZGUuXG4gICAgICAgICBTaW1pbGFyIHRocmVhZGluZyBmb3IgYWRkX2dyb3V0LiBUaGF0IHNhaWQsIEkgY291bGRuJ3QgdHJpZ2dlciBhbnlcbiAgICAgICAgIHVuZGVzaXJhYmxlIGJlaGF2aW9yIHdpdGggdGhlc2UgY2hhbmdlcyBhbmQgYW0gZmluZSB3aXRoIGdvaW5nIGFoZWFkXG4gICAgICAgICB3aXRoIHRoaXMgZm9yIG5vdy4gKi9cbiAgICAgIGxldCB3c3MgPSBbbmV3X3NwYWNlcyBAIExpc3QuY29uY2F0KHdzcyldO1xuICAgICAgQWJhLm1rKHdzcywgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgKF8sIGdzKSBhcyBtZXJnZWQgPSBtZXJnZSh0cmltKTtcbiAgICAgIHN3aXRjaCAoZ3MpIHtcbiAgICAgIHwgW10gPT4gYWRkX2dyb3V0KH5kLCBsLCBtZXJnZWQpXG4gICAgICB8IFtfLCAuLi5fXSA9PiBtZXJnZWRcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgdG9fc2VnID0gKHRyaW06IHQpID0+XG4gICAgdHJpbVxuICAgIHw+IEFiYS5qb2luKExpc3QubWFwKFBpZWNlLnNlY29uZGFyeSksIGcgPT4gW1BpZWNlLkdyb3V0KGcpXSlcbiAgICB8PiBMaXN0LmNvbmNhdDtcbn07XG5cbmxldCByZWMgcmVncm91dCA9ICgobCwgciksIHNlZykgPT4ge1xuICBsZXQgKHRyaW0sIHIsIHRsKSA9IHJlZ3JvdXRfYWZmaXgoRGlyZWN0aW9uLlJpZ2h0LCBzZWcsIHIpO1xuICBsZXQgdHJpbSA9IFRyaW0ucmVncm91dChEaXJlY3Rpb24uUmlnaHQsIChsLCByKSwgdHJpbSk7XG4gIFRyaW0udG9fc2VnKHRyaW0pIEAgdGw7XG59XG5hbmQgcmVncm91dF9hZmZpeCA9XG4gICAgKGQ6IERpcmVjdGlvbi50LCBhZmZpeDogdCwgcjogTmliLlNoYXBlLnQpOiAoVHJpbS50LCBOaWIuU2hhcGUudCwgdCkgPT4ge1xuICBsZXQgKHRyaW0sIHMsIGFmZml4KSA9XG4gICAgZm9sZF9yaWdodChcbiAgICAgIChwOiBQaWVjZS50LCAodHJpbSwgciwgdGwpKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocCkge1xuICAgICAgICB8IFNlY29uZGFyeSh3KSA9PiAoVHJpbS5jb25zX3codywgdHJpbSksIHIsIHRsKVxuICAgICAgICB8IEdyb3V0KGcpID0+IChUcmltLihtZXJnZShjb25zX2coZywgdHJpbSkpKSwgciwgdGwpXG4gICAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICAgIGxldCBjaGlsZHJlbiA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAgICAgICAgIChoZCwgdGwpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdGwgPSB0bDtcbiAgICAgICAgICAgICAgICBsZXQgaGQgPSByZWdyb3V0KE5pYi5TaGFwZS4oY29uY2F2ZSgpLCBjb25jYXZlKCkpLCBoZCk7XG4gICAgICAgICAgICAgICAgW2hkLCAuLi50bF07XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHQuY2hpbGRyZW4sXG4gICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgcCA9IFBpZWNlLlRpbGUoey4uLnQsIGNoaWxkcmVufSk7XG4gICAgICAgICAgbGV0IChsJywgcicpID1cbiAgICAgICAgICAgIFRpbGUuc2hhcGVzKHQpIHw+IChkID09IExlZnQgPyBUdXBsZVV0aWwuc3dhcCA6IEZ1bi5pZCk7XG4gICAgICAgICAgbGV0IHRyaW0gPSBUcmltLnJlZ3JvdXQoZCwgKHInLCByKSwgdHJpbSk7XG4gICAgICAgICAgKFRyaW0uZW1wdHksIGwnLCBbcCwgLi4uVHJpbS50b19zZWcodHJpbSldIEAgdGwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGQgPT0gTGVmdCA/IExpc3QucmV2IDogRnVuLmlkKShhZmZpeCksXG4gICAgICAoQWJhLm1rKFtbXV0sIFtdKSwgciwgZW1wdHkpLFxuICAgICk7XG4gIGQgPT0gTGVmdCA/IChUcmltLnJldih0cmltKSwgcywgcmV2KGFmZml4KSkgOiAodHJpbSwgcywgYWZmaXgpO1xufTtcblxuLy8gZm9yIGludGVybmFsIHVzZSB3aGVuIGRlYWxpbmcgd2l0aCBzZWdtZW50cyBpbiByZXZlcnNlIG9yZGVyIChlZyBBZmZpeC5yZSlcbi8vIGxldCBmbGlwX25pYnMgPVxuLy8gICBMaXN0Lm1hcChcbi8vICAgICBmdW5cbi8vICAgICB8IChQaWVjZS5TZWNvbmRhcnkoXykgfCBHcm91dChfKSkgYXMgcCA9PiBwXG4vLyAgICAgfCBUaWxlKHQpID0+IFRpbGUoey4uLnQsIG1vbGQ6IE1vbGQuZmxpcF9uaWJzKHQubW9sZCl9KSxcbi8vICAgKTtcblxubGV0IHNwbGl0X2J5X21hdGNoaW5nID0gKGlkOiBJZC50KTogKHQgPT4gQWJhLnQodCwgVGlsZS50KSkgPT5cbiAgQWJhLnNwbGl0KFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSB3aGVuIHQuaWQgPT0gaWQgPT4gRWl0aGVyLlIodClcbiAgICB8IHAgPT4gTChwKSxcbiAgKTtcblxuLy8gbW9kdWxlIE1hdGNoID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLlIpO1xubGV0IHJlYyByZWFzc2VtYmxlID0gKHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChpbmNvbXBsZXRlX3RpbGVzKHNlZykpIHtcbiAgfCBbXSA9PiBzZWdcbiAgfCBbdCwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKEFiYS50cmltKHNwbGl0X2J5X21hdGNoaW5nKHQuaWQsIHNlZykpKSB7XG4gICAgfCBOb25lID0+IHNlZ1xuICAgIHwgU29tZSgoc2VnX2wsIG1hdGNoLCBzZWdfcikpID0+XG4gICAgICBsZXQgdCA9IFRpbGUucmVhc3NlbWJsZShtYXRjaCk7XG4gICAgICBsZXQgY2hpbGRyZW4gPSBMaXN0Lm1hcChyZWFzc2VtYmxlLCB0LmNoaWxkcmVuKTtcbiAgICAgIGxldCBwID0gVGlsZS50b19waWVjZSh7Li4udCwgY2hpbGRyZW59KTtcbiAgICAgIHNlZ19sIEAgW3AsIC4uLnJlYXNzZW1ibGUoc2VnX3IpXTtcbiAgICB9XG4gIH07XG5cbmxldCB0cmltX2Y6IChsaXN0KEJhc2UucGllY2UpID0+IGxpc3QoQmFzZS5waWVjZSksIERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKHRyaW1fbCwgZCwgcHMpID0+IHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IExlZnQgPT4gcHMgfD4gdHJpbV9sXG4gICAgfCBSaWdodCA9PiBwcyB8PiBMaXN0LnJldiB8PiB0cmltX2wgfD4gTGlzdC5yZXZcbiAgICB9O1xuICB9O1xuXG5sZXQgdHJpbV9zZWNvbmRhcnk6IChEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gIChkLCBwcykgPT4ge1xuICAgIC8qIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgc2Vjb25kYXJ5ICovXG4gICAgbGV0IHJlYyB0cmltX2wgPSB4cyA9PlxuICAgICAgc3dpdGNoICh4cykge1xuICAgICAgfCBbXSA9PiBbXVxuICAgICAgfCBbUGllY2UuU2Vjb25kYXJ5KF8pLCAuLi54c10gPT4gdHJpbV9sKHhzKVxuICAgICAgfCBbXywgLi4uX10gPT4geHNcbiAgICAgIH07XG4gICAgdHJpbV9mKHRyaW1fbCwgZCwgcHMpO1xuICB9O1xuXG5sZXQgdHJpbV9ncm91dDogKERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKGQsIHBzKSA9PiB7XG4gICAgLyogVHJpbXMgbGVhZGluZy90cmFpbGluZyBncm91dCAqL1xuICAgIGxldCByZWMgdHJpbV9sOiBsaXN0KEJhc2UucGllY2UpID0+IGxpc3QoQmFzZS5waWVjZSkgPVxuICAgICAgeHMgPT5cbiAgICAgICAgc3dpdGNoICh4cykge1xuICAgICAgICB8IFtdID0+IFtdXG4gICAgICAgIHwgW0dyb3V0KF8pLCAuLi54c10gPT4gdHJpbV9sKHhzKVxuICAgICAgICB8IFtfLCAuLi5fXSA9PiB4c1xuICAgICAgICB9O1xuICAgIHRyaW1fZih0cmltX2wsIGQsIHBzKTtcbiAgfTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dDogKERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKGQsIHBzKSA9PiB7XG4gICAgLyogVHJpbXMgbGVhZGluZy90cmFpbGluZyBzZWNvbmRhcnksIGNvbnRpbnVpbmdcbiAgICAgICB0byB0cmltIGFyb3VuZCBncm91dCB1bnRpbCBmaXJzdCBUaWxlIGlzIHJlYWNoZWQgKi9cbiAgICBsZXQgcmVjIHRyaW1fbDogbGlzdChCYXNlLnBpZWNlKSA9PiBsaXN0KEJhc2UucGllY2UpID1cbiAgICAgIHhzID0+XG4gICAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgICAgfCBbXSA9PiBbXVxuICAgICAgICB8IFtTZWNvbmRhcnkoXykgfCBHcm91dChfKSwgLi4ueHNdID0+IHRyaW1fbCh4cylcbiAgICAgICAgfCBbXywgLi4uX10gPT4geHNcbiAgICAgICAgfTtcbiAgICB0cmltX2YodHJpbV9sLCBkLCBwcyk7XG4gIH07XG5cbmxldCB0cmltX2dyb3V0X2Fyb3VuZF9zZWNvbmRhcnk6IChEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gIChkLCBwcykgPT4ge1xuICAgIC8qIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgZ3JvdXQsIHNraXBwaW5nIG92ZXIgc2Vjb25kYXJ5LFxuICAgICAgIGJ1dCBub3Qgc2tpcHBpbmcgb3ZlciBvdGhlciBwaWVjZXMuICovXG4gICAgbGV0IHJlYyB0cmltX2w6IGxpc3QoQmFzZS5waWVjZSkgPT4gbGlzdChCYXNlLnBpZWNlKSA9XG4gICAgICB4cyA9PlxuICAgICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICAgIHwgW10gPT4gW11cbiAgICAgICAgfCBbU2Vjb25kYXJ5KHcpLCAuLi54c10gPT4gW1NlY29uZGFyeSh3KSwgLi4udHJpbV9sKHhzKV1cbiAgICAgICAgfCBbR3JvdXQoXyksIC4uLnhzXSA9PiB0cmltX2woeHMpXG4gICAgICAgIHwgW18sIC4uLl9dID0+IHhzXG4gICAgICAgIH07XG4gICAgdHJpbV9mKHRyaW1fbCwgZCwgcHMpO1xuICB9O1xuXG5sZXQgZWRnZV9zaGFwZV9vZiA9IChkOiBEaXJlY3Rpb24udCwgcHM6IHQpOiBvcHRpb24oTmliLlNoYXBlLnQpID0+IHtcbiAgbGV0IHRyaW1tZWQgPSB0cmltX3NlY29uZGFyeShkLCBwcyk7XG4gIHN3aXRjaCAoZCwgTGlzdFV0aWwuaGRfb3B0KHRyaW1tZWQpLCBMaXN0VXRpbC5sYXN0X29wdCh0cmltbWVkKSkge1xuICB8IChSaWdodCwgXywgU29tZShwKSkgPT4gcCB8PiBQaWVjZS5zaGFwZXMgfD4gT3B0aW9uLm1hcChzbmQpXG4gIHwgKExlZnQsIFNvbWUocCksIF8pID0+IHAgfD4gUGllY2Uuc2hhcGVzIHw+IE9wdGlvbi5tYXAoZnN0KVxuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IGVkZ2VfZGlyZWN0aW9uX29mID0gKGQ6IERpcmVjdGlvbi50LCBwczogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgT3B0aW9uLm1hcChOaWIuU2hhcGUuYWJzb2x1dGUoZCksIGVkZ2Vfc2hhcGVfb2YoZCwgcHMpKTtcblxubGV0IHJlYyBzZXJpYWxpemUgPSAoc2VnOiB0KSA9PlxuICBzZWdcbiAgfD4gTGlzdC5jb25jYXRfbWFwKFxuICAgICAgIGZ1blxuICAgICAgIHwgKFBpZWNlLlNlY29uZGFyeShfKSB8IEdyb3V0KF8pIHwgVGlsZSh7c2hhcmRzOiBbX10sIF99KSkgYXMgcCA9PiBbXG4gICAgICAgICAgIHAsXG4gICAgICAgICBdXG4gICAgICAgfCBUaWxlKHQpID0+IHtcbiAgICAgICAgICAgbGV0IHNoYXJkcyA9XG4gICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICBUaWxlLnRvX3BpZWNlLFxuICAgICAgICAgICAgICAgVGlsZS5zcGxpdF9zaGFyZHModC5pZCwgdC5sYWJlbCwgdC5tb2xkLCB0LnNoYXJkcyksXG4gICAgICAgICAgICAgKTtcbiAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gTGlzdC5tYXAoc2VyaWFsaXplLCB0LmNoaWxkcmVuKTtcbiAgICAgICAgICAgQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pXG4gICAgICAgICAgIHw+IEFiYS5qb2luKHMgPT4gW3NdLCBGdW4uaWQpXG4gICAgICAgICAgIHw+IExpc3QuY29uY2F0O1xuICAgICAgICAgfSxcbiAgICAgKTtcblxubGV0IHNhbWVsaW5lX3NlY29uZGFyeSA9XG4gIExpc3QuZm9yX2FsbChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlNlY29uZGFyeSh3KSA9PiAhU2Vjb25kYXJ5LmlzX2xpbmVicmVhayh3KVxuICAgIHwgXyA9PiBmYWxzZSxcbiAgKTtcblxubGV0IGV4cGVjdGVkX3NvcnRzID0gKHNvcnQ6IFNvcnQudCwgc2VnOiB0KTogbGlzdCgoaW50LCBTb3J0LnQpKSA9PiB7XG4gIGxldCBwID0gTGlzdC5udGgoc2VnKTtcbiAgbGV0IHJlYyBnbyA9IChzb3J0OiBTb3J0LnQsIHNrZWw6IFNrZWwudCk6IGxpc3QoKGxpc3QoaW50KSwgU29ydC50KSkgPT4ge1xuICAgIGxldCByb290ID0gU2tlbC5yb290KHNrZWwpO1xuICAgIGxldCBpbnNpZGVfc29ydHMgPVxuICAgICAgQWJhLmFiYV90cmlwbGVzKHJvb3QpXG4gICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChuX2wsIGtpZCwgbl9yKSkgPT4ge1xuICAgICAgICAgICBsZXQgKF8sIHNfbCkgPSBQaWVjZS5uaWJfc29ydHMocChuX2wpKTtcbiAgICAgICAgICAgbGV0IChzX3IsIF8pID0gUGllY2UubmliX3NvcnRzKHAobl9yKSk7XG4gICAgICAgICAgIGxldCBzID0gc19sID09IHNfciA/IHNfbCA6IFNvcnQuQW55O1xuICAgICAgICAgICBnbyhzLCBraWQpO1xuICAgICAgICAgfSk7XG4gICAgbGV0IG91dHNpZGVfc29ydHMgPSB7XG4gICAgICBsZXQgbnMgPSBBYmEuZ2V0X2FzKHJvb3QpO1xuICAgICAgbGV0IChsX3NvcnQsIF8pID0gUGllY2UubmliX3NvcnRzKHAoQWJhLmZpcnN0X2Eocm9vdCkpKTtcbiAgICAgIGxldCAoXywgcl9zb3J0KSA9IFBpZWNlLm5pYl9zb3J0cyhwKEFiYS5sYXN0X2Eocm9vdCkpKTtcbiAgICAgIHN3aXRjaCAoc2tlbCkge1xuICAgICAgfCBPcChfKSA9PiBbKG5zLCBzb3J0KV1cbiAgICAgIHwgUHJlKF8sIHIpID0+IFsobnMsIHNvcnQpXSBAIGdvKHJfc29ydCwgcilcbiAgICAgIHwgUG9zdChsLCBfKSA9PiBnbyhsX3NvcnQsIGwpIEAgWyhucywgc29ydCldXG4gICAgICB8IEJpbihsLCBfLCByKSA9PiBnbyhsX3NvcnQsIGwpIEAgWyhucywgc29ydCldIEAgZ28ocl9zb3J0LCByKVxuICAgICAgfTtcbiAgICB9O1xuICAgIG91dHNpZGVfc29ydHMgQCBpbnNpZGVfc29ydHM7XG4gIH07XG4gIGdvKHNvcnQsIHNrZWwoc2VnKSlcbiAgfD4gTGlzdC5jb25jYXRfbWFwKCgobnMsIHMpKSA9PiBMaXN0Lm1hcChuID0+IChuLCBzKSwgbnMpKTtcbn07XG5cbmxldCByZWMgaG9sZXMgPSAoc2VnbWVudDogdCk6IGxpc3QoR3JvdXQudCkgPT5cbiAgTGlzdC5jb25jYXRfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuU2Vjb25kYXJ5KF8pID0+IFtdXG4gICAgfCBUaWxlKHQpID0+IExpc3QuY29uY2F0X21hcChob2xlcywgdC5jaGlsZHJlbilcbiAgICB8IEdyb3V0KGcpID0+IFtnXSxcbiAgICBzZWdtZW50LFxuICApO1xuXG5sZXQgZ2V0X2NoaWxkcmVuczogdCA9PiBsaXN0KHQpID1cbiAgTGlzdC5jb25jYXRfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSA9PiB0LmNoaWxkcmVuXG4gICAgfCBfID0+IFtdLFxuICApO1xuXG5sZXQgcmVjIGdldF9pbmNvbXBsZXRlX2lkcyA9IChzZWc6IHQpOiBsaXN0KElkLnQpID0+XG4gIExpc3QuY29uY2F0X21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgPT4ge1xuICAgICAgICBsZXQgaWRzID0gTGlzdC5jb25jYXRfbWFwKGdldF9pbmNvbXBsZXRlX2lkcywgdC5jaGlsZHJlbik7XG4gICAgICAgIFRpbGUuaXNfY29tcGxldGUodCkgPyBpZHMgOiBbdC5pZCwgLi4uaWRzXTtcbiAgICAgIH1cbiAgICB8IF8gPT4gW10sXG4gICAgc2VnLFxuICApO1xuXG5sZXQgaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkZWxpbWl0ZWRzID0gKHNlZzogdCk6IGxpc3QoSWQudCkgPT5cbiAgZ2V0X2NoaWxkcmVucyhzZWcpIHw+IExpc3QuY29uY2F0IHw+IGdldF9pbmNvbXBsZXRlX2lkcztcblxubGV0IGZpcnN0X3N0cmluZyA9XG4gIGZ1blxuICB8IFtdID0+IFwiRklSU1RcIlxuICB8IFtQaWVjZS5TZWNvbmRhcnkodyksIC4uLl9dID0+IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudClcbiAgfCBbUGllY2UuR3JvdXQoXyksIC4uLl9dID0+IFwiP1wiXG4gIHwgW1BpZWNlLlRpbGUodCksIC4uLl9dID0+IHQubGFiZWwgfD4gTGlzdC5oZDtcblxubGV0IGxhc3Rfc3RyaW5nID1cbiAgZnVuXG4gIHwgW10gPT4gXCJMQVNUXCJcbiAgfCB4cyA9PlxuICAgIHN3aXRjaCAoTGlzdFV0aWwubGFzdCh4cykpIHtcbiAgICB8IFBpZWNlLlNlY29uZGFyeSh3KSA9PiBTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpXG4gICAgfCBQaWVjZS5Hcm91dChfKSA9PiBcIj9cIlxuICAgIHwgUGllY2UuVGlsZSh0KSA9PiB0LmxhYmVsIHw+IExpc3RVdGlsLmxhc3RcbiAgICB9O1xuIiwib3BlbiBVdGlsO1xuXG4vLyBtb2R1bGUgUHJlZml4ID0gQWZmaXguTWFrZShPcmllbnRhdGlvbi5MKTtcbi8vIG1vZHVsZSBTdWZmaXggPSBBZmZpeC5NYWtlKE9yaWVudGF0aW9uLlIpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSAoU2VnbWVudC50LCBTZWdtZW50LnQpO1xuXG5sZXQgZW1wdHkgPSBTZWdtZW50LihlbXB0eSwgZW1wdHkpO1xuXG5sZXQgbm9fc2libGluZ3M6IHQgPT4gYm9vbCA9IHMgPT4gcyA9PSBlbXB0eTtcblxubGV0IHVuemlwOiAoaW50LCBTZWdtZW50LnQpID0+IHQgPSBMaXN0VXRpbC5zcGxpdF9uO1xubGV0IHppcCA9ICh+c2VsPVNlZ21lbnQuZW1wdHksIChwcmUsIHN1Zik6IHQpID0+XG4gIFNlZ21lbnQuY29uY2F0KFtwcmUsIHNlbCwgc3VmXSk7XG5cbmxldCBwcmVwZW5kID0gKGQ6IERpcmVjdGlvbi50LCBzZWc6IFNlZ21lbnQudCwgKGwsIHIpOiB0KTogdCA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBMZWZ0ID0+IChsIEAgc2VnLCByKVxuICB8IFJpZ2h0ID0+IChsLCBzZWcgQCByKVxuICB9O1xuXG5sZXQgY29uY2F0ID0gKHNpYnNzOiBsaXN0KHQpKTogdCA9PlxuICBzaWJzc1xuICB8PiBMaXN0LnNwbGl0XG4gIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5yZXYpXG4gIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5jb25jYXQpXG4gIHw+IFBhaXJVdGlsLm1hcF9zbmQoTGlzdC5jb25jYXQpO1xuXG4vLyBsZXQgY29uc2lzdGVudF9zaGFyZHMgPSAoKHByZSwgc3VmKTogdCk6IGJvb2wgPT4ge1xuLy8gICBsZXQgc2hhcmRzX3ByZSA9IFByZWZpeC5zaGFyZHMocHJlKTtcbi8vICAgbGV0IHNoYXJkc19zdWYgPSBTdWZmaXguc2hhcmRzKHN1Zik7XG4vLyAgIExpc3RVdGlsLmdyb3VwX2J5KFNoYXJkLmlkLCBzaGFyZHNfcHJlIEAgc2hhcmRzX3N1Zilcbi8vICAgfD4gTGlzdC5mb3JfYWxsKCgoXywgc2hhcmRzKSkgPT4gU2hhcmQuY29uc2lzdGVudF9tb2xkcyhzaGFyZHMpICE9IFtdKTtcbi8vIH07XG5cbmxldCByZW1vbGQgPSAoKHByZSwgXykgYXMgc2liczogdCwgczogU29ydC50KTogdCA9PlxuICBTZWdtZW50LnJlbW9sZCh6aXAoc2licyksIHMpIHw+IHVuemlwKExpc3QubGVuZ3RoKHByZSkpO1xuXG5sZXQgc2hhcGVzID0gKChwcmUsIHN1Zik6IHQpID0+IHtcbiAgbGV0IHMgPSBOaWIuU2hhcGUuY29uY2F2ZSgpO1xuICBsZXQgKF8sIGwsIF8pID0gU2VnbWVudC5zaGFwZV9hZmZpeChMZWZ0LCBwcmUsIHMpO1xuICBsZXQgKF8sIHIsIF8pID0gU2VnbWVudC5zaGFwZV9hZmZpeChSaWdodCwgc3VmLCBzKTtcbiAgKGwsIHIpO1xufTtcblxubGV0IGlzX21pc21hdGNoID0gKChsLCByKTogdCk6IGJvb2wgPT4ge1xuICAvKiBwcmVkaWN0cyBpZiBncm91dCBpcyBuZWNjZXNzYXJ5IGJldHdlZW4gc2libGluZ3MgKi9cbiAgc3dpdGNoIChTZWdtZW50LmVkZ2Vfc2hhcGVfb2YoTGVmdCwgciksIFNlZ21lbnQuZWRnZV9zaGFwZV9vZihSaWdodCwgbCkpIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gZmFsc2VcbiAgfCAoczEsIHMyKSA9PiBzMSA9PSBzMlxuICB9O1xufTtcblxubGV0IGNvbnRhaW5zX21hdGNoaW5nID0gKHQ6IFRpbGUudCwgKHByZSwgc3VmKTogdCkgPT5cbiAgU2VnbWVudC4oY29udGFpbnNfbWF0Y2hpbmcodCwgcHJlKSB8fCBjb250YWluc19tYXRjaGluZyh0LCBzdWYpKTtcblxubGV0IHB1c2ggPSAob250bzogRGlyZWN0aW9uLnQsIHA6IFBpZWNlLnQsIChwcmUsIHN1Zik6IHQpOiB0ID0+XG4gIHN3aXRjaCAob250bykge1xuICB8IExlZnQgPT4gKHByZSBAIFtwXSwgc3VmKVxuICB8IFJpZ2h0ID0+IChwcmUsIFtwLCAuLi5zdWZdKVxuICB9O1xuXG5sZXQgcG9wID0gKGZyb206IERpcmVjdGlvbi50LCAocHJlLCBzdWYpOiB0KTogb3B0aW9uKChQaWVjZS50LCB0KSkgPT5cbiAgc3dpdGNoIChmcm9tKSB7XG4gIHwgTGVmdCA9PlxuICAgIExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHByZSlcbiAgICB8PiBPcHRpb24ubWFwKCgocHJlLCBwKSkgPT4ge1xuICAgICAgICAgbGV0IChwcmUnLCBwKSA9IFBpZWNlLnBvcF9yKHApO1xuICAgICAgICAgKHAsIChwcmUgQCBwcmUnLCBzdWYpKTtcbiAgICAgICB9KVxuICB8IFJpZ2h0ID0+XG4gICAgTGlzdFV0aWwuc3BsaXRfZmlyc3Rfb3B0KHN1ZilcbiAgICB8PiBPcHRpb24ubWFwKCgocCwgc3VmKSkgPT4ge1xuICAgICAgICAgbGV0IChwLCBzdWYnKSA9IFBpZWNlLnBvcF9sKHApO1xuICAgICAgICAgKHAsIChwcmUsIHN1ZicgQCBzdWYpKTtcbiAgICAgICB9KVxuICB9O1xuXG5sZXQgaW5jb21wbGV0ZV90aWxlcyA9IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyk7XG5cbmxldCBzcGxpdF9ieV9tYXRjaGluZyA9IGlkID0+IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuc3BsaXRfYnlfbWF0Y2hpbmcoaWQpKTtcblxubGV0IHJlYXNzZW1ibGUgPSBUdXBsZVV0aWwubWFwMihTZWdtZW50LnJlYXNzZW1ibGUpO1xuXG5sZXQgcmVncm91dCA9ICgocHJlLCBzdWYpOiB0KSA9PiB7XG4gIGxldCBzID0gTmliLlNoYXBlLmNvbmNhdmUoKTtcbiAgbGV0IHN1ZiA9IFNlZ21lbnQucmVncm91dF9hZmZpeChSaWdodCwgc3VmLCBzKTtcbiAgbGV0ICh0cmltX2wsIHNfbCwgcHJlKSA9IFNlZ21lbnQucmVncm91dF9hZmZpeChMZWZ0LCBwcmUsIHMpO1xuICAoKHByZSwgc19sLCB0cmltX2wpLCBzdWYpO1xufTtcblxubGV0IGxlZnRfbmVpZ2hib3I6IHQgPT4gb3B0aW9uKFBpZWNlLnQpID0gKChsLCBfKSkgPT4gTGlzdFV0aWwubGFzdF9vcHQobCk7XG5cbmxldCByaWdodF9uZWlnaGJvcjogdCA9PiBvcHRpb24oUGllY2UudCkgPSAoKF8sIHIpKSA9PiBMaXN0VXRpbC5oZF9vcHQocik7XG5cbmxldCBuZWlnaGJvcnM6IHQgPT4gKG9wdGlvbihQaWVjZS50KSwgb3B0aW9uKFBpZWNlLnQpKSA9XG4gIG4gPT4gKGxlZnRfbmVpZ2hib3IobiksIHJpZ2h0X25laWdoYm9yKG4pKTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5ID0gKChsX3NpYnMsIHJfc2licyk6IHQpID0+IChcbiAgU2VnbWVudC50cmltX3NlY29uZGFyeShSaWdodCwgbF9zaWJzKSxcbiAgU2VnbWVudC50cmltX3NlY29uZGFyeShMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IHRyaW1fZ3JvdXQgPSAoKGxfc2licywgcl9zaWJzKTogdCkgPT4gKFxuICBTZWdtZW50LnRyaW1fZ3JvdXQoUmlnaHQsIGxfc2licyksXG4gIFNlZ21lbnQudHJpbV9ncm91dChMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dCA9ICgobF9zaWJzLCByX3NpYnMpOiB0KSA9PiAoXG4gIFNlZ21lbnQudHJpbV9zZWNvbmRhcnlfYW5kX2dyb3V0KFJpZ2h0LCBsX3NpYnMpLFxuICBTZWdtZW50LnRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dChMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IGRpcmVjdGlvbl9iZXR3ZWVuID0gKChsLCByKTogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgLyogRmFjaW5nIGRpcmVjdGlvbiBvZiB0aGUgc2hhcmVkIG5pYiBiZXR3ZWVuIGwgJiByICovXG4gIHN3aXRjaCAoU2VnbWVudC5lZGdlX2RpcmVjdGlvbl9vZihMZWZ0LCByKSkge1xuICB8IE5vbmUgPT4gU2VnbWVudC5lZGdlX2RpcmVjdGlvbl9vZihSaWdodCwgbClcbiAgfCBkID0+IGRcbiAgfTtcblxubGV0IG1vbGRfZml0dGluZ19iZXR3ZWVuID0gKHNvcnQ6IFNvcnQudCwgcDogUHJlY2VkZW5jZS50LCBzaWJzOiB0KTogTW9sZC50ID0+XG4gIHN3aXRjaCAoZGlyZWN0aW9uX2JldHdlZW4oc2licykpIHtcbiAgfCBTb21lKGQpID0+IE1vbGQuY2hldnJvbihzb3J0LCBwLCBkKVxuICB8IE5vbmUgPT4gTW9sZC5ta19vcChzb3J0LCBbXSlcbiAgfTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuc29ydGVkX2NoaWxkcmVuKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBFbXB0eV9zaGFyZF9hZmZpeDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGVwID0gaW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGlkOiBJZC50LFxuICBsYWJlbDogTGFiZWwudCxcbiAgbW9sZDogTW9sZC50LFxuICBzaGFyZHM6IChsaXN0KGludCksIGxpc3QoaW50KSksXG4gIGNoaWxkcmVuOiAobGlzdChTZWdtZW50LnQpLCBsaXN0KFNlZ21lbnQudCkpLFxufTtcblxuLy8gVE9ETyhkKSByZXZpc2l0IG5hbWluZyB3LnIudC4gb3V0ZXIgdnMgaW5uZXIgc2hhcmRzXG5sZXQgbF9zaGFyZCA9IGEgPT5cbiAgTGlzdFV0aWwuaGRfb3B0KGZzdChhLnNoYXJkcykpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3NoYXJkX2FmZml4KTtcbmxldCByX3NoYXJkID0gYSA9PlxuICBMaXN0VXRpbC5sYXN0X29wdChzbmQoYS5zaGFyZHMpKVxuICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV9zaGFyZF9hZmZpeCk7XG5cbmxldCBuaWJzID0gKGE6IHQpID0+IHtcbiAgbGV0IChsLCBfKSA9IE1vbGQubmlicyh+aW5kZXg9bF9zaGFyZChhKSwgYS5tb2xkKTtcbiAgbGV0IChfLCByKSA9IE1vbGQubmlicyh+aW5kZXg9cl9zaGFyZChhKSwgYS5tb2xkKTtcbiAgKGwsIHIpO1xufTtcbmxldCBzaGFwZXMgPSBhID0+IHtcbiAgbGV0IChsLCByKSA9IG5pYnMoYSk7XG4gIChsLnNoYXBlLCByLnNoYXBlKTtcbn07XG5cbmxldCB6aXAgPSAoY2hpbGQ6IFNlZ21lbnQudCwge2lkLCBsYWJlbCwgbW9sZCwgc2hhcmRzLCBjaGlsZHJlbn06IHQpOiBUaWxlLnQgPT4ge1xuICBpZCxcbiAgbGFiZWwsXG4gIG1vbGQsXG4gIHNoYXJkczogZnN0KHNoYXJkcykgQCBzbmQoc2hhcmRzKSxcbiAgY2hpbGRyZW46IGZzdChjaGlsZHJlbikgQCBbY2hpbGQsIC4uLnNuZChjaGlsZHJlbildLFxufTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IChhOiB0KSA9PiB7XG4gIGxldCBuID0gTGlzdC5sZW5ndGgoZnN0KGEuY2hpbGRyZW4pKTtcbiAgbGV0IHQgPSB6aXAoU2VnbWVudC5lbXB0eSwgYSk7XG4gIGxldCAobCwgXywgcikgPSBMaXN0VXRpbC5zcGxpdF9udGgobiwgVGlsZS5zb3J0ZWRfY2hpbGRyZW4odCkpO1xuICAobCwgcik7XG59O1xuXG4vLyBUT0RPIGZsYXR0ZW4gd2l0aCBzaGFyZCBpbmRpY2VzXG4vLyBsZXQgc3RlcCA9IChmcmFtZTogdCk6IHN0ZXAgPT4ge1xuLy8gICBsZXQgKHByZWZpeCwgXykgPSBmcmFtZS5jaGlsZHJlbjtcbi8vICAgTGlzdC5sZW5ndGgocHJlZml4KTtcbi8vIH07XG5cbmxldCByZW1vbGQgPSAoYTogdCk6IGxpc3QodCkgPT5cbiAgTW9sZHMuZ2V0KGEubGFiZWwpIHw+IExpc3QubWFwKG1vbGQgPT4gey4uLmEsIG1vbGR9KTtcblxuLy8gbGV0IHNvcnQgPSAoZnJhbWU6IHQpOiBTb3J0LnQgPT4ge1xuLy8gICBhc3NlcnQoc3RlcChmcmFtZSkgPj0gMCAmJiBzdGVwKGZyYW1lKSA8IExpc3QubGVuZ3RoKGZyYW1lLm1vbGQuaW5fKSk7XG4vLyAgIExpc3QubnRoKGZyYW1lLm1vbGQuaW5fLCBzdGVwKGZyYW1lKSk7XG4vLyB9O1xubGV0IHNvcnQgPSAoYTogdCk6IFNvcnQudCA9PiB7XG4gIGxldCAocHJlLCBzdWYpID0gYS5zaGFyZHM7XG4gIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQocHJlKSwgc3VmKSB7XG4gIHwgKFNvbWUoKF8sIGkpKSwgW2osIC4uLl9dKSA9PlxuICAgIGxldCAoXywgbCkgPSBNb2xkLm5pYnMofmluZGV4PWksIGEubW9sZCk7XG4gICAgbGV0IChyLCBfKSA9IE1vbGQubmlicyh+aW5kZXg9aiwgYS5tb2xkKTtcbiAgICBsLnNvcnQgPT0gci5zb3J0ID8gbC5zb3J0IDogQW55O1xuICB8IF8gPT4gcmFpc2UoRW1wdHlfc2hhcmRfYWZmaXgpXG4gIH07XG59O1xuXG5sZXQgZGlzYXNzZW1ibGUgPVxuICAgICh7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMsIGNoaWxkcmVuOiAoa2lkc19sLCBraWRzX3IpfTogdCk6IFNpYmxpbmdzLnQgPT4ge1xuICBsZXQgKHNoYXJkc19sLCBzaGFyZHNfcikgPVxuICAgIHNoYXJkc1xuICAgIHw+IFR1cGxlVXRpbC5tYXAyKFRpbGUuc3BsaXRfc2hhcmRzKGlkLCBsYWJlbCwgbW9sZCkpXG4gICAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdC5tYXAoVGlsZS50b19waWVjZSkpO1xuICBsZXQgZmxhdHRlbiA9IChzaGFyZHMsIGtpZHMpID0+XG4gICAgQWJhLm1rKHNoYXJkcywga2lkcykgfD4gQWJhLmpvaW4ocCA9PiBbcF0sIEZ1bi5pZCkgfD4gTGlzdC5mbGF0dGVuO1xuICAoZmxhdHRlbihzaGFyZHNfbCwga2lkc19sKSwgZmxhdHRlbihzaGFyZHNfciwga2lkc19yKSk7XG59O1xuXG5sZXQgY29udGFpbmVyX3NoYXJkcyA9IChhOiB0KTogKFBpZWNlLnQsIFBpZWNlLnQpID0+IHtcbiAgbGV0IChzaGFyZHNfbCwgc2hhcmRzX3IpID1cbiAgICBhLnNoYXJkc1xuICAgIHw+IFR1cGxlVXRpbC5tYXAyKFRpbGUuc3BsaXRfc2hhcmRzKGEuaWQsIGEubGFiZWwsIGEubW9sZCkpXG4gICAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdC5tYXAoVGlsZS50b19waWVjZSkpO1xuICBsZXQgbCA9XG4gICAgTGlzdFV0aWwubGFzdF9vcHQoc2hhcmRzX2wpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3NoYXJkX2FmZml4KTtcbiAgbGV0IHIgPVxuICAgIExpc3RVdGlsLmhkX29wdChzaGFyZHNfcikgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfc2hhcmRfYWZmaXgpO1xuICAobCwgcik7XG59O1xuXG5sZXQgcmVhc3NlbWJsZSA9IChtYXRjaF9sOiBBYmEudChUaWxlLnQsIFNlZ21lbnQudCkgYXMgJ20sIG1hdGNoX3I6ICdtKTogdCA9PiB7XG4gIC8vIFRPRE8oZCkgYml0IGhhY2t5LCBuZWVkIHRvIGRvIGEgZmxpcC9vcmllbnRhdGlvbiBwYXNzXG4gIC8vIGxldCBtYXRjaF9sID0gQWJhLm1hcF9iKFNlZ21lbnQucmV2LCBtYXRjaF9sKTtcbiAgbGV0ICh0X2wsIHRfcikgPSBUaWxlLihyZWFzc2VtYmxlKG1hdGNoX2wpLCByZWFzc2VtYmxlKG1hdGNoX3IpKTtcbiAgYXNzZXJ0KHRfbC5pZCA9PSB0X3IuaWQpO1xuICB7XG4gICAgaWQ6IHRfbC5pZCxcbiAgICBsYWJlbDogdF9sLmxhYmVsLFxuICAgIG1vbGQ6IHRfbC5tb2xkLFxuICAgIHNoYXJkczogKHRfbC5zaGFyZHMsIHRfci5zaGFyZHMpLFxuICAgIGNoaWxkcmVuOiAodF9sLmNoaWxkcmVuLCB0X3IuY2hpbGRyZW4pLFxuICB9O1xufTtcblxuLy8gbW9kdWxlIE1hdGNoID0ge1xuLy8gICBtb2R1bGUgUHJlZml4ID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLkwpO1xuLy8gICBtb2R1bGUgU3VmZml4ID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLlIpO1xuXG4vLyAgIHR5cGUgYW5jZXN0b3IgPSB0O1xuLy8gICB0eXBlIHQgPSAoUHJlZml4LnQsIFN1ZmZpeC50KTtcblxuLy8gICBsZXQgaWQgPSAoKHByZSwgXyk6IHQpID0+IFByZWZpeC5pZChwcmUpO1xuXG4vLyAgIGxldCBzaGFyZHMgPSAoKHByZSwgc3VmKTogdCkgPT5cbi8vICAgICBMaXN0LnJldihQcmVmaXguc2hhcmRzKHByZSkpIEAgU3VmZml4LnNoYXJkcyhzdWYpO1xuXG4vLyAgIGxldCBsYWJlbCA9ICgoXywgc3VmKSkgPT4gU3VmZml4LmxhYmVsKHN1Zik7XG5cbi8vICAgbGV0IGxlbmd0aCA9ICgocHJlLCBzdWYpKSA9PiBQcmVmaXgubGVuZ3RoKHByZSkgKyBTdWZmaXgubGVuZ3RoKHN1Zik7XG5cbi8vICAgbGV0IGNoaWxkcmVuID0gKChwcmUsIHN1ZikpID0+IChcbi8vICAgICBQcmVmaXguY2hpbGRyZW4ocHJlKSxcbi8vICAgICBTdWZmaXguY2hpbGRyZW4oc3VmKSxcbi8vICAgKTtcblxuLy8gICBsZXQgbW9sZCA9IChtOiB0KSA9PiB7XG4vLyAgICAgbGV0IG1vbGRzID1cbi8vICAgICAgIHN3aXRjaCAoU2hhcmQuY29uc2lzdGVudF9tb2xkcyhzaGFyZHMobSkpKSB7XG4vLyAgICAgICB8IFtdID0+XG4vLyAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIHVwb24gY29uc3RydWN0L2Rlc3RydWN0LFxuLy8gICAgICAgICAvLyBpbiB3aGljaCBjYXNlIGV2ZXJ5dGhpbmcgd2lsbCBiZSBzdWJzZXF1ZW50bHkgcmVtb2xkZWRcbi8vICAgICAgICAgTW9sZHMuZ2V0KGxhYmVsKG0pKVxuLy8gICAgICAgfCBbXywgLi4uX10gYXMgbW9sZHMgPT4gbW9sZHNcbi8vICAgICAgIH07XG4vLyAgICAgYXNzZXJ0KG1vbGRzICE9IFtdKTtcbi8vICAgICBMaXN0LmhkKG1vbGRzKTtcbi8vICAgfTtcblxuLy8gICBsZXQgam9pbiA9ICgocHJlLCBzdWYpOiB0KSA9PiAoUHJlZml4LmpvaW4ocHJlKSwgU3VmZml4LmpvaW4oc3VmKSk7XG5cbi8vICAgbGV0IGNvbXBsZXRlID0gKG06IHQpOiBvcHRpb24oYW5jZXN0b3IpID0+IHtcbi8vICAgICBsZXQgaWQgPSBpZChtKTtcbi8vICAgICBsZXQgbGFiZWwgPSBsYWJlbChtKTtcbi8vICAgICBsZXQgbW9sZCA9IG1vbGQobSk7XG4vLyAgICAgbGVuZ3RoKG0pID09IFRpbGUuTGFiZWwubGVuZ3RoKGxhYmVsKVxuLy8gICAgICAgPyBTb21lKHtpZCwgbGFiZWwsIG1vbGQsIGNoaWxkcmVuOiBjaGlsZHJlbihtKX0pIDogTm9uZTtcbi8vICAgfTtcbi8vIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdlbmVyYXRpb24gPSAoQW5jZXN0b3IudCwgU2libGluZ3MudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoZ2VuZXJhdGlvbik7XG5cbmxldCBlbXB0eSA9IFtdO1xuXG5sZXQgcGFyZW50OiB0ID0+IG9wdGlvbihBbmNlc3Rvci50KSA9XG4gIGZ1blxuICB8IFtdID0+IE5vbmVcbiAgfCBbKHBhcmVudCwgXyksIC4uLl9dID0+IFNvbWUocGFyZW50KTtcblxubGV0IHNvcnQgPVxuICBmdW5cbiAgfCBbXSA9PiBTb3J0LnJvb3RcbiAgfCBbKGEsIF8pLCAuLi5fXSA9PiBBbmNlc3Rvci5zb3J0KGEpO1xuXG5sZXQgemlwX2dlbiA9IChzZWc6IFNlZ21lbnQudCwgKGEsIChwcmUsIHN1ZikpOiBnZW5lcmF0aW9uKTogU2VnbWVudC50ID0+XG4gIHByZSBAIFtQaWVjZS5UaWxlKEFuY2VzdG9yLnppcChzZWcsIGEpKSwgLi4uc3VmXTtcbmxldCB6aXAgPSAoc2VnOiBTZWdtZW50LnQsIGFuY3M6IHQpID0+IGFuY3MgfD4gTGlzdC5mb2xkX2xlZnQoemlwX2dlbiwgc2VnKTtcblxubGV0IGRpc2Fzc2VtYmxlID0gYW5jcyA9PlxuICBhbmNzXG4gIHw+IExpc3QubWFwKCgoYSwgc2licykpID0+XG4gICAgICAgU2libGluZ3MuY29uY2F0KFtBbmNlc3Rvci5kaXNhc3NlbWJsZShhKSwgc2lic10pXG4gICAgIClcbiAgfD4gU2libGluZ3MuY29uY2F0O1xuXG4vLyBsZXQgcmVtb2xkID0gKGFuY2VzdG9yczogdCk6IGxpc3QodCkgPT5cbi8vICAgTGlzdC5mb2xkX3JpZ2h0KFxuLy8gICAgICgoYSwgc2licyksIHJlbW9sZGVkKSA9PiB7XG4vLyAgICAgICBvcGVuIExpc3RVdGlsLlN5bnRheDtcbi8vICAgICAgIGxldCsgYW5jZXN0b3JzID0gcmVtb2xkZWRcbi8vICAgICAgIGFuZCsgc2licyA9IFNpYmxpbmdzLnJlbW9sZChzaWJzKVxuLy8gICAgICAgYW5kKyBhID0gQW5jZXN0b3IucmVtb2xkKGEpO1xuLy8gICAgICAgWyhhLCBzaWJzKSwgLi4uYW5jZXN0b3JzXTtcbi8vICAgICB9LFxuLy8gICAgIGFuY2VzdG9ycyxcbi8vICAgICBbZW1wdHldLFxuLy8gICApO1xuXG5sZXQgc2tlbCA9ICgoYSwgKHByZSwgc3VmKSk6IGdlbmVyYXRpb24pOiBTa2VsLnQgPT4ge1xuICBsZXQgbiA9IExpc3QubGVuZ3RoKHByZSk7XG4gIGxldCBhID0gKG4sIFBpZWNlLlRpbGUoQW5jZXN0b3IuemlwKFNlZ21lbnQuZW1wdHksIGEpKSk7XG4gIGxldCBwcmUgPVxuICAgIHByZVxuICAgIHw+IExpc3QubWFwaSgoaSwgcCkgPT4gKGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpO1xuICBsZXQgc3VmID1cbiAgICBzdWZcbiAgICB8PiBMaXN0Lm1hcGkoKGksIHApID0+IChuICsgMSArIGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpO1xuICBTa2VsLm1rKHByZSBAIFthLCAuLi5zdWZdKTtcbn07XG5cbi8vIGxldCBzb3J0cyA9IChpLCAoYSwgKHByZSwgc3VmKSk6IGdlbmVyYXRpb24pID0+IHtcbi8vICAgbGV0IG4gPSBMaXN0Lmxlbmd0aChwcmUpO1xuLy8gICBpZiAoaSA8IExpc3QubGVuZ3RoKHByZSkpIHtcbi8vICAgICBMaXN0Lm50aF9vcHQocHJlLCBpKVxuLy8gICAgIHw+IE9wdGlvbi5tYXAoUGllY2Uuc29ydClcbi8vICAgICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiQW5jZXN0b3JzLnNvcnRfb3V0XCIpKVxuLy8gICB9IGVsc2UgaWYgKGkgPiBuKSB7XG4vLyAgICAgTGlzdC5udGhfb3B0KHN1ZiwgaSAtIDEgLSBuKVxuLy8gICAgIHw+IE9wdGlvbi5tYXAoUGllY2Uuc29ydClcbi8vICAgICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiQW5jZXN0b3JzLnNvcnRfb3V0XCIpKVxuLy8gICB9IGVsc2Uge1xuLy8gICAgIGEubW9sZC5vdXQ7XG4vLyAgIH07XG4vLyB9O1xuXG5sZXQgcmVncm91dCA9IChhbmNzOiB0KSA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKChhLCBzaWJzKTogZ2VuZXJhdGlvbiwgcmVncm91dGVkKSA9PiB7XG4gICAgICBsZXQgcmVncm91dGVkID0gcmVncm91dGVkO1xuICAgICAgbGV0ICgocHJlLCBsLCB0cmltX2wpLCAodHJpbV9yLCByLCBzdWYpKSA9IFNpYmxpbmdzLnJlZ3JvdXQoc2licyk7XG4gICAgICBsZXQgKGwnLCByJykgPSBUdXBsZVV0aWwubWFwMihOaWIuc2hhcGUsIE1vbGQubmlicyhhLm1vbGQpKTtcbiAgICAgIGxldCB0cmltX2wgPSBTZWdtZW50LlRyaW0ucmVncm91dChMZWZ0LCAobCwgbCcpLCB0cmltX2wpO1xuICAgICAgbGV0IHRyaW1fciA9IFNlZ21lbnQuVHJpbS5yZWdyb3V0KFJpZ2h0LCAocicsIHIpLCB0cmltX3IpO1xuICAgICAgbGV0IHByZSA9IHByZSBAIFNlZ21lbnQuVHJpbS50b19zZWcodHJpbV9sKTtcbiAgICAgIGxldCBzdWYgPSBTZWdtZW50LlRyaW0udG9fc2VnKHRyaW1fcikgQCBzdWY7XG4gICAgICBbKGEsIChwcmUsIHN1ZikpLCAuLi5yZWdyb3V0ZWRdO1xuICAgIH0sXG4gICAgYW5jcyxcbiAgICBlbXB0eSxcbiAgKTtcblxubGV0IHBhcmVudF9tYXRjaGVzID0gKHQ6IFRpbGUudCwgYW5jczogdCkgPT5cbiAgc3dpdGNoIChhbmNzKSB7XG4gIHwgW10gPT4gZmFsc2VcbiAgfCBbKGEsIF8pLCAuLi5fXSA9PiBhLmlkID09IHQuaWRcbiAgfTtcbiIsInR5cGUgdCA9IGludDtcbmxldCB0ID0gcmVmKDApO1xuXG5sZXQgdGljayA9ICgpOiB0ID0+IHtcbiAgbGV0IHRpbWUgPSB0XjtcbiAgdCA6PSB0aW1lICsgMTtcbiAgdGltZTtcbn07XG5cbmxldCBsdCA9ICg8KTtcblxubGV0IG1pbiA9IG1pbjtcbmxldCBtYXggPSBtYXg7XG5cbmxldCBtYXhfdGltZSA9IEludC5tYXhfaW50O1xuIiwiaW5jbHVkZSBJZC5NYXA7XG50eXBlIHQgPSBJZC5NYXAudChUaW1lLnQpO1xuXG5tb2R1bGUgdHlwZSBTID0ge1xuICBsZXQgdG91Y2hlZDogdDtcbn07XG5cbmxldCB1cGRhdGUgPSAodDogVGltZS50LCBlczogbGlzdChFZmZlY3QudCksIHRkOiB0KSA9PlxuICBlc1xuICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAodGQsIGU6IEVmZmVjdC50KSA9PlxuICAgICAgICAgc3dpdGNoIChlKSB7XG4gICAgICAgICB8IERlbGV0ZShpZCkgPT4gdGQgfD4gcmVtb3ZlKGlkKVxuICAgICAgICAgfCBUb3VjaChpZCkgPT5cbiAgICAgICAgICAgdGRcbiAgICAgICAgICAgfD4gdXBkYXRlKFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGZ1blxuICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBTb21lKHQpXG4gICAgICAgICAgICAgICAgfCBTb21lKHQnKSA9PiBTb21lKFRpbWUubWF4KHQsIHQnKSksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgIH0sXG4gICAgICAgdGQsXG4gICAgICk7XG4iLCJsZXQgbGFtID0gXCLOu1wiO1xubGV0IHVwX2Fycm93ID0gXCLihpFcIjtcbmxldCBkb3duX2Fycm93ID0gXCLihpNcIjtcbmxldCBsZWZ0X2Fycm93ID0gXCLihpBcIjtcbmxldCByaWdodF9hcnJvdyA9IFwi4oaSXCI7XG5sZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiO1xubGV0IHp3c3AgPSBcIuKAi1wiO1xuXG5sZXQgdHlwZUFycm93U3ltID0gXCLihpJcIjsgLy8gVSsyMTkyIFwiUmlnaHR3YXJkcyBBcnJvd1wiXG5sZXQgY2FzdEFycm93U3ltID0gXCLih6hcIjtcbmxldCBjYXN0QmFja0Fycm93U3ltID0gXCLih6ZcIjtcblxubGV0IGVsbGlwc2lzID0gXCJcXHhFMlxceDgwXFx4QTZcIjtcblxuLy8gY29waWVkIGZyb20gaGF6ZWxcbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByb3cgPSBpbnQ7XG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNvbCA9IGludDtcblxubW9kdWxlIFBvaW50ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICByb3csXG4gICAgY29sLFxuICB9O1xuICBsZXQgemVybyA9IHtyb3c6IDAsIGNvbDogMH07XG5cbiAgbGV0IGVxdWFsczogKHQsIHQpID0+IGJvb2wgPSAocCwgcSkgPT4gcC5yb3cgPT0gcS5yb3cgJiYgcC5jb2wgPT0gcS5jb2w7XG5cbiAgdHlwZSBjb21wYXJpc29uID1cbiAgICB8IEV4YWN0XG4gICAgfCBVbmRlclxuICAgIHwgT3ZlcjtcblxuICBsZXQgY29tcCA9IChjdXJyZW50LCB0YXJnZXQpOiBjb21wYXJpc29uID0+XG4gICAgc3dpdGNoICgpIHtcbiAgICB8IF8gd2hlbiBjdXJyZW50ID09IHRhcmdldCA9PiBFeGFjdFxuICAgIHwgXyB3aGVuIGN1cnJlbnQgPCB0YXJnZXQgPT4gVW5kZXJcbiAgICB8IF8gPT4gT3ZlclxuICAgIH07XG4gIGxldCBjb21wYXJlID0gKHAxLCBwMikgPT5cbiAgICBzd2l0Y2ggKGNvbXAocDEsIHAyKSkge1xuICAgIHwgRXhhY3QgPT4gMFxuICAgIHwgVW5kZXIgPT4gKC0xKVxuICAgIHwgT3ZlciA9PiAxXG4gICAgfTtcblxuICBsZXQgZGNvbXAgPSAoZGlyZWN0aW9uOiBEaXJlY3Rpb24udCwgYSwgYikgPT5cbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgIHwgUmlnaHQgPT4gY29tcChhLCBiKVxuICAgIHwgTGVmdCA9PiBjb21wKGIsIGEpXG4gICAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbWVhc3VyZW1lbnQgPSB7XG4gIG9yaWdpbjogUG9pbnQudCxcbiAgbGFzdDogUG9pbnQudCxcbn07XG5cbi8vIGluZGVudGF0aW9uIHJlbGF0aXZlIHRvIGNvbnRhaW5lclxudHlwZSByZWxfaW5kZW50ID0gaW50O1xuLy8gaW5kZW50YXRpb24gcmVsYXRpdmUgdG8gY29kZSBjb250YWluZXJcbnR5cGUgYWJzX2luZGVudCA9IGludDtcblxubW9kdWxlIFJvd3MgPSB7XG4gIGluY2x1ZGUgSW50TWFwO1xuICB0eXBlIHNoYXBlID0ge1xuICAgIGluZGVudDogY29sLFxuICAgIG1heF9jb2w6IGNvbCxcbiAgfTtcbiAgdHlwZSB0ID0gSW50TWFwLnQoc2hhcGUpO1xuXG4gIGxldCBtYXhfY29sID0gKHJzOiBsaXN0KHJvdyksIG1hcDogdCkgPT5cbiAgICBycyB8PiBMaXN0Lm1hcChyID0+IGZpbmQociwgbWFwKS5tYXhfY29sKSB8PiBMaXN0LmZvbGRfbGVmdChtYXgsIDApO1xuXG4gIGxldCBtaW5fY29sID0gKHJzOiBsaXN0KHJvdyksIG1hcDogdCkgPT5cbiAgICByc1xuICAgIHw+IExpc3QubWFwKHIgPT4gZmluZChyLCBtYXApLmluZGVudClcbiAgICB8PiBMaXN0LmZvbGRfbGVmdChtaW4sIEludC5tYXhfaW50KTtcbn07XG5cbm1vZHVsZSBTaGFyZHMgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzaGFyZCA9IChpbnQsIG1lYXN1cmVtZW50KTtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KHNoYXJkKTtcblxuICAvLyBlbGVtZW50cyBvZiByZXR1cm5lZCBsaXN0IGFyZSBub25lbXB0eVxuICBsZXQgcmVjIHNwbGl0X2J5X3JvdzogdCA9PiBsaXN0KHQpID1cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbaGQsIC4uLnRsXSA9PlxuICAgICAgc3dpdGNoIChzcGxpdF9ieV9yb3codGwpKSB7XG4gICAgICB8IFtdID0+IFtbaGRdXVxuICAgICAgfCBbcm93LCAuLi5yb3dzXSA9PlxuICAgICAgICBzbmQoTGlzdC5oZChyb3cpKS5vcmlnaW4ucm93ID09IHNuZChoZCkub3JpZ2luLnJvd1xuICAgICAgICAgID8gW1toZCwgLi4ucm93XSwgLi4ucm93c10gOiBbW2hkXSwgcm93LCAuLi5yb3dzXVxuICAgICAgfTtcbiAgLy8gbGV0IGxhc3QgPSAoc2hhcmRzOiB0KSA9PlxuICAvLyAgIHNoYXJkc1xuICAvLyAgIHw+IExpc3Quc29ydCgoKGksIF8pLCAoaiwgXykpID0+IEludC5jb21wYXJlKGksIGopKVxuICAvLyAgIHw+IExpc3RVdGlsLmxhc3Rfb3B0XG4gIC8vICAgfD4gT3B0aW9uLm1hcChzbmQpO1xufTtcblxudHlwZSB0ID0ge1xuICB0aWxlczogSWQuTWFwLnQoU2hhcmRzLnQpLFxuICBncm91dDogSWQuTWFwLnQobWVhc3VyZW1lbnQpLFxuICBzZWNvbmRhcnk6IElkLk1hcC50KG1lYXN1cmVtZW50KSxcbiAgcm93czogUm93cy50LFxuICBsaW5lYnJlYWtzOiBJZC5NYXAudChyZWxfaW5kZW50KSxcbn07XG5cbmxldCBlbXB0eSA9IHtcbiAgdGlsZXM6IElkLk1hcC5lbXB0eSxcbiAgZ3JvdXQ6IElkLk1hcC5lbXB0eSxcbiAgc2Vjb25kYXJ5OiBJZC5NYXAuZW1wdHksXG4gIHJvd3M6IFJvd3MuZW1wdHksXG4gIGxpbmVicmVha3M6IElkLk1hcC5lbXB0eSxcbn07XG5cbmxldCBhZGRfcyA9IChpZDogSWQudCwgaTogaW50LCBtLCBtYXApID0+IHtcbiAgLi4ubWFwLFxuICB0aWxlczpcbiAgICBtYXAudGlsZXNcbiAgICB8PiBJZC5NYXAudXBkYXRlKFxuICAgICAgICAgaWQsXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgTm9uZSA9PiBTb21lKFsoaSwgbSldKVxuICAgICAgICAgfCBTb21lKG1zKSA9PlxuICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgIFsoaSwgbSksIC4uLm1zXVxuICAgICAgICAgICAgIHw+IExpc3Quc29ydCgoKGksIF8pLCAoaiwgXykpID0+IEludC5jb21wYXJlKGksIGopKSxcbiAgICAgICAgICAgKSxcbiAgICAgICApLFxufTtcblxuLy8gYXNzdW1lcyB0aWxlIGlzIHNpbmdsZSBzaGFyZFxubGV0IGFkZF90ID0gKHQ6IFRpbGUudCwgbSwgbWFwKSA9PiB7XG4gIC4uLm1hcCxcbiAgdGlsZXM6XG4gICAgbWFwLnRpbGVzXG4gICAgfD4gSWQuTWFwLnVwZGF0ZShcbiAgICAgICAgIHQuaWQsXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgTm9uZSA9PiBTb21lKFsoVGlsZS5sX3NoYXJkKHQpLCBtKV0pXG4gICAgICAgICB8IFNvbWUobXMpID0+IFNvbWUoWyhUaWxlLmxfc2hhcmQodCksIG0pLCAuLi5tc10pLFxuICAgICAgICksXG59O1xubGV0IGFkZF9nID0gKGc6IEdyb3V0LnQsIG0sIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIGdyb3V0OiBtYXAuZ3JvdXQgfD4gSWQuTWFwLmFkZChnLmlkLCBtKSxcbn07XG5sZXQgYWRkX3cgPSAodzogU2Vjb25kYXJ5LnQsIG0sIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIHNlY29uZGFyeTogbWFwLnNlY29uZGFyeSB8PiBJZC5NYXAuYWRkKHcuaWQsIG0pLFxufTtcbmxldCBhZGRfcCA9IChwOiBQaWVjZS50LCBtLCBtYXApID0+XG4gIHBcbiAgfD4gUGllY2UuZ2V0KFxuICAgICAgIHcgPT4gYWRkX3codywgbSwgbWFwKSxcbiAgICAgICBnID0+IGFkZF9nKGcsIG0sIG1hcCksXG4gICAgICAgdCA9PiBhZGRfdCh0LCBtLCBtYXApLFxuICAgICApO1xuXG5sZXQgYWRkX3JvdyA9IChyb3c6IGludCwgc2hhcGU6IFJvd3Muc2hhcGUsIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIHJvd3M6IFJvd3MuYWRkKHJvdywgc2hhcGUsIG1hcC5yb3dzKSxcbn07XG5cbmxldCBhZGRfbGIgPSAoaWQsIGluZGVudCwgbWFwKSA9PiB7XG4gIC4uLm1hcCxcbiAgbGluZWJyZWFrczogSWQuTWFwLmFkZChpZCwgaW5kZW50LCBtYXAubGluZWJyZWFrcyksXG59O1xuXG5sZXQgc2luZ2xldG9uX3cgPSAodywgbSkgPT4gZW1wdHkgfD4gYWRkX3codywgbSk7XG5sZXQgc2luZ2xldG9uX2cgPSAoZywgbSkgPT4gZW1wdHkgfD4gYWRkX2coZywgbSk7XG5sZXQgc2luZ2xldG9uX3MgPSAoaWQsIHNoYXJkLCBtKSA9PiBlbXB0eSB8PiBhZGRfcyhpZCwgc2hhcmQsIG0pO1xuXG4vLyBUT0RPKGQpIHJlbmFtZVxubGV0IGZpbmRfb3B0X3NoYXJkcyA9ICh0OiBUaWxlLnQsIG1hcCkgPT4gSWQuTWFwLmZpbmRfb3B0KHQuaWQsIG1hcC50aWxlcyk7XG5sZXQgZmluZF9zaGFyZHMgPSAodDogVGlsZS50LCBtYXApID0+IElkLk1hcC5maW5kKHQuaWQsIG1hcC50aWxlcyk7XG5cbmxldCBmaW5kX29wdF9sYiA9IChpZCwgbWFwKSA9PiBJZC5NYXAuZmluZF9vcHQoaWQsIG1hcC5saW5lYnJlYWtzKTtcblxubGV0IGZpbmRfc2hhcmRzJyA9IChpZDogSWQudCwgbWFwKSA9PlxuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLnRpbGVzKSkge1xuICB8IE5vbmUgPT4gW11cbiAgfCBTb21lKHNzKSA9PiBzc1xuICB9O1xuXG5sZXQgZmluZF93ID0gKHc6IFNlY29uZGFyeS50LCBtYXApOiBtZWFzdXJlbWVudCA9PlxuICBJZC5NYXAuZmluZCh3LmlkLCBtYXAuc2Vjb25kYXJ5KTtcbmxldCBmaW5kX2cgPSAoZzogR3JvdXQudCwgbWFwKTogbWVhc3VyZW1lbnQgPT4gSWQuTWFwLmZpbmQoZy5pZCwgbWFwLmdyb3V0KTtcbi8vIHJldHVybnMgdGhlIG1lYXN1cmVtZW50IHNwYW5uaW5nIHRoZSB3aG9sZSB0aWxlXG5sZXQgZmluZF90ID0gKHQ6IFRpbGUudCwgbWFwKTogbWVhc3VyZW1lbnQgPT4ge1xuICBsZXQgc2hhcmRzID0gSWQuTWFwLmZpbmQodC5pZCwgbWFwLnRpbGVzKTtcbiAgbGV0IGZpcnN0ID0gTGlzdFV0aWwuYXNzb2NfZXJyKFRpbGUubF9zaGFyZCh0KSwgc2hhcmRzLCBcImZpbmRfdFwiKTtcbiAgbGV0IGxhc3QgPSBMaXN0VXRpbC5hc3NvY19lcnIoVGlsZS5yX3NoYXJkKHQpLCBzaGFyZHMsIFwiZmluZF90XCIpO1xuICB7b3JpZ2luOiBmaXJzdC5vcmlnaW4sIGxhc3Q6IGxhc3QubGFzdH07XG59O1xuLy8gbGV0IGZpbmRfYSA9ICh7c2hhcmRzOiAobCwgciksIF99IGFzIGE6IEFuY2VzdG9yLnQsIG1hcCkgPT5cbi8vICAgTGlzdC5hc3NvYyhsIEAgciwgSWQuTWFwLmZpbmQoYS5pZCwgbWFwLnRpbGVzKSk7XG5sZXQgZmluZF9wID0gKHA6IFBpZWNlLnQsIG1hcCk6IG1lYXN1cmVtZW50ID0+XG4gIHBcbiAgfD4gUGllY2UuZ2V0KFxuICAgICAgIHcgPT4gZmluZF93KHcsIG1hcCksXG4gICAgICAgZyA9PiBmaW5kX2coZywgbWFwKSxcbiAgICAgICB0ID0+IGZpbmRfdCh0LCBtYXApLFxuICAgICApO1xuXG5sZXQgZmluZF9ieV9pZCA9IChpZDogSWQudCwgbWFwOiB0KTogb3B0aW9uKG1lYXN1cmVtZW50KSA9PiB7XG4gIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCBtYXAuc2Vjb25kYXJ5KSkge1xuICB8IFNvbWUobSkgPT4gU29tZShtKVxuICB8IE5vbmUgPT5cbiAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLmdyb3V0KSkge1xuICAgIHwgU29tZShtKSA9PiBTb21lKG0pXG4gICAgfCBOb25lID0+XG4gICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLnRpbGVzKSkge1xuICAgICAgfCBTb21lKHNoYXJkcykgPT5cbiAgICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgICBMaXN0VXRpbC5hc3NvY19lcnIoTGlzdC5oZChzaGFyZHMpIHw+IGZzdCwgc2hhcmRzLCBcImZpbmRfYnlfaWRcIik7XG4gICAgICAgIGxldCBsYXN0ID1cbiAgICAgICAgICBMaXN0VXRpbC5hc3NvY19lcnIoXG4gICAgICAgICAgICBMaXN0VXRpbC5sYXN0KHNoYXJkcykgfD4gZnN0LFxuICAgICAgICAgICAgc2hhcmRzLFxuICAgICAgICAgICAgXCJmaW5kX2J5X2lkXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgU29tZSh7b3JpZ2luOiBmaXJzdC5vcmlnaW4sIGxhc3Q6IGxhc3QubGFzdH0pO1xuICAgICAgfCBOb25lID0+XG4gICAgICAgIFByaW50Zi5wcmludGYoXCJNZWFzdXJlZC5XQVJOSU5HOiBpZCAlcyBub3QgZm91bmRcIiwgSWQudG9fc3RyaW5nKGlkKSk7XG4gICAgICAgIE5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxubGV0IHBvc3RfdGlsZV9pbmRlbnQgPSAodDogVGlsZS50KSA9PiB7XG4gIC8vIGhhY2sgZm9yIGluZGVudCBmb2xsb3dpbmcgZnVuL2lmIHRpbGVzLlxuICAvLyBwcm9wZXIgZml4IGludm9sdmVzIHVwZGF0aW5nIG1vbGQgZGF0YXR5cGVcbiAgLy8gdG8gc3BlY2lmeSB3aGV0aGVyIGEgcmlnaHQtZmFjaW5nIGNvbmNhdmVcbiAgLy8gdGlwIGltcG9zZXMgaW5kZW50YXRpb24gb24gYSBmb2xsb3dpbmcgbmV3bGluZS5cbiAgbGV0IGNvbXBsZXRlX2Z1biA9XG4gICAgVGlsZS5pc19jb21wbGV0ZSh0KVxuICAgICYmIChcbiAgICAgIHQubGFiZWwgPT0gRm9ybS5nZXQoXCJmdW5fXCIpLmxhYmVsXG4gICAgICB8fCB0LmxhYmVsID09IEZvcm0uZ2V0KFwidHlwZnVuXCIpLmxhYmVsXG4gICAgICB8fCB0LmxhYmVsID09IEZvcm0uZ2V0KFwiaWZfXCIpLmxhYmVsXG4gICAgKTtcbiAgbGV0IG1pc3NpbmdfcmlnaHRfZXh0cmVtZSA9IFRpbGUucl9zaGFyZCh0KSA8IExpc3QubGVuZ3RoKHQubGFiZWwpIC0gMTtcbiAgY29tcGxldGVfZnVuIHx8IG1pc3NpbmdfcmlnaHRfZXh0cmVtZTtcbn07XG5cbmxldCBtaXNzaW5nX2xlZnRfZXh0cmVtZSA9ICh0OiBUaWxlLnQpID0+IFRpbGUubF9zaGFyZCh0KSA+IDA7XG5cbmxldCBpc19pbmRlbnRlZF9tYXAgPSAoc2VnOiBTZWdtZW50LnQpID0+IHtcbiAgbGV0IHJlYyBnbyA9ICh+aXNfaW5kZW50ZWQ9ZmFsc2UsIH5tYXA9SWQuTWFwLmVtcHR5LCBzZWc6IFNlZ21lbnQudCkgPT5cbiAgICBzZWdcbiAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICgoaXNfaW5kZW50ZWQsIG1hcCksIHA6IFBpZWNlLnQpID0+XG4gICAgICAgICAgIHN3aXRjaCAocCkge1xuICAgICAgICAgICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsodykgPT4gKFxuICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICBJZC5NYXAuYWRkKHcuaWQsIGlzX2luZGVudGVkLCBtYXApLFxuICAgICAgICAgICAgIClcbiAgICAgICAgICAgfCBTZWNvbmRhcnkoXylcbiAgICAgICAgICAgfCBHcm91dChfKSA9PiAoaXNfaW5kZW50ZWQsIG1hcClcbiAgICAgICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgICAgICAgbGV0IGlzX2luZGVudGVkID0gaXNfaW5kZW50ZWQgfHwgcG9zdF90aWxlX2luZGVudCh0KTtcbiAgICAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgICAgIHQuY2hpbGRyZW5cbiAgICAgICAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAgICAobWFwLCBjaGlsZCkgPT4gZ28ofmlzX2luZGVudGVkPXRydWUsIH5tYXAsIGNoaWxkKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAoaXNfaW5kZW50ZWQsIG1hcCk7XG4gICAgICAgICAgIH0sXG4gICAgICAgICAoaXNfaW5kZW50ZWQsIG1hcCksXG4gICAgICAgKVxuICAgIHw+IHNuZDtcbiAgZ28oc2VnKTtcbn07XG5cbmxldCBvZl9zZWdtZW50ID0gKH5vbGQ6IHQ9ZW1wdHksIH50b3VjaGVkPVRvdWNoZWQuZW1wdHksIHNlZzogU2VnbWVudC50KTogdCA9PiB7XG4gIGxldCBpc19pbmRlbnRlZCA9IGlzX2luZGVudGVkX21hcChzZWcpO1xuXG4gIC8vIHJlY3Vyc2l2ZSBhY3Jvc3Mgc2VnJ3MgYmlkZWxpbWl0ZWQgY29udGFpbmVyc1xuICBsZXQgcmVjIGdvX25lc3RlZCA9XG4gICAgICAgICAgKFxuICAgICAgICAgICAgfm1hcCxcbiAgICAgICAgICAgIH5jb250YWluZXJfaW5kZW50OiBhYnNfaW5kZW50PTAsXG4gICAgICAgICAgICB+b3JpZ2luPVBvaW50Lnplcm8sXG4gICAgICAgICAgICBzZWc6IFNlZ21lbnQudCxcbiAgICAgICAgICApXG4gICAgICAgICAgOiAoUG9pbnQudCwgdCkgPT4ge1xuICAgIGxldCBmaXJzdF90b3VjaGVkX2luY29tcGxldGUgPVxuICAgICAgc3dpdGNoIChTZWdtZW50LmluY29tcGxldGVfdGlsZXMoc2VnKSkge1xuICAgICAgfCBbXSA9PiBOb25lXG4gICAgICB8IHRzID0+XG4gICAgICAgIHRzXG4gICAgICAgIHw+IExpc3QubWFwKCh0OiBUaWxlLnQpID0+IFRvdWNoZWQuZmluZF9vcHQodC5pZCwgdG91Y2hlZCkpXG4gICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgIChhY2MsIHRvdWNoZWQpID0+XG4gICAgICAgICAgICAgICBzd2l0Y2ggKGFjYywgdG91Y2hlZCkge1xuICAgICAgICAgICAgICAgfCAoU29tZSh0aW1lKSwgU29tZSh0aW1lJykpID0+IFNvbWUoVGltZS5taW4odGltZSwgdGltZScpKVxuICAgICAgICAgICAgICAgfCAoU29tZSh0aW1lKSwgXylcbiAgICAgICAgICAgICAgIHwgKF8sIFNvbWUodGltZSkpID0+IFNvbWUodGltZSlcbiAgICAgICAgICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgIE5vbmUsXG4gICAgICAgICAgIClcbiAgICAgIH07XG5cbiAgICAvLyByZWN1cnNpdmUgYWNyb3NzIHNlZydzIGxpc3Qgc3RydWN0dXJlXG4gICAgbGV0IHJlYyBnb19zZXEgPVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICB+Y29udGFpbmVkX2luZGVudDogcmVsX2luZGVudD0wLFxuICAgICAgICAgICAgICB+b3JpZ2luOiBQb2ludC50LFxuICAgICAgICAgICAgICBzZWc6IFNlZ21lbnQudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogKFBvaW50LnQsIHQpID0+XG4gICAgICBzd2l0Y2ggKHNlZykge1xuICAgICAgfCBbXSA9PlxuICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICBtYXBcbiAgICAgICAgICB8PiBhZGRfcm93KFxuICAgICAgICAgICAgICAgb3JpZ2luLnJvdyxcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgaW5kZW50OiBjb250YWluZXJfaW5kZW50ICsgY29udGFpbmVkX2luZGVudCxcbiAgICAgICAgICAgICAgICAgbWF4X2NvbDogb3JpZ2luLmNvbCxcbiAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgKTtcbiAgICAgICAgKG9yaWdpbiwgbWFwKTtcbiAgICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgICAgbGV0IChjb250YWluZWRfaW5kZW50LCBvcmlnaW4sIG1hcCkgPVxuICAgICAgICAgIHN3aXRjaCAoaGQpIHtcbiAgICAgICAgICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsodykgPT5cbiAgICAgICAgICAgIGxldCByb3dfaW5kZW50ID0gY29udGFpbmVyX2luZGVudCArIGNvbnRhaW5lZF9pbmRlbnQ7XG4gICAgICAgICAgICBsZXQgaW5kZW50ID1cbiAgICAgICAgICAgICAgaWYgKFNlZ21lbnQuc2FtZWxpbmVfc2Vjb25kYXJ5KHRsKSkge1xuICAgICAgICAgICAgICAgIDA7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgIFRvdWNoZWQuZmluZF9vcHQody5pZCwgdG91Y2hlZCksXG4gICAgICAgICAgICAgICAgICBmaXJzdF90b3VjaGVkX2luY29tcGxldGUsXG4gICAgICAgICAgICAgICAgICBmaW5kX29wdF9sYih3LmlkLCBvbGQpLFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHwgKFNvbWUodG91Y2hlZCksIFNvbWUodG91Y2hlZCcpLCBTb21lKGluZGVudCkpXG4gICAgICAgICAgICAgICAgICAgIHdoZW4gVGltZS5sdCh0b3VjaGVkLCB0b3VjaGVkJykgPT4gaW5kZW50XG4gICAgICAgICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICAgICAgICBjb250YWluZWRfaW5kZW50ICsgKElkLk1hcC5maW5kKHcuaWQsIGlzX2luZGVudGVkKSA/IDIgOiAwKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgICAgIFBvaW50Lntyb3c6IG9yaWdpbi5yb3cgKyAxLCBjb2w6IGNvbnRhaW5lcl9pbmRlbnQgKyBpbmRlbnR9O1xuICAgICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICB8PiBhZGRfdyh3LCB7b3JpZ2luLCBsYXN0fSlcbiAgICAgICAgICAgICAgfD4gYWRkX3JvdyhcbiAgICAgICAgICAgICAgICAgICBvcmlnaW4ucm93LFxuICAgICAgICAgICAgICAgICAgIHtpbmRlbnQ6IHJvd19pbmRlbnQsIG1heF9jb2w6IG9yaWdpbi5jb2x9LFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHw+IGFkZF9sYih3LmlkLCBpbmRlbnQpO1xuICAgICAgICAgICAgKGluZGVudCwgbGFzdCwgbWFwKTtcbiAgICAgICAgICB8IFNlY29uZGFyeSh3KSA9PlxuICAgICAgICAgICAgbGV0IHdzcGFjZV9sZW5ndGggPVxuICAgICAgICAgICAgICBVbmljb2RlLmxlbmd0aChTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpKTtcbiAgICAgICAgICAgIGxldCBsYXN0ID0gey4uLm9yaWdpbiwgY29sOiBvcmlnaW4uY29sICsgd3NwYWNlX2xlbmd0aH07XG4gICAgICAgICAgICBsZXQgbWFwID0gbWFwIHw+IGFkZF93KHcsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIHwgR3JvdXQoZykgPT5cbiAgICAgICAgICAgIGxldCBsYXN0ID0gey4uLm9yaWdpbiwgY29sOiBvcmlnaW4uY29sICsgMX07XG4gICAgICAgICAgICBsZXQgbWFwID0gbWFwIHw+IGFkZF9nKGcsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICAgICAgbGV0IHRva2VuID0gTGlzdC5udGgodC5sYWJlbCk7XG4gICAgICAgICAgICBsZXQgYWRkX3NoYXJkID0gKG9yaWdpbiwgc2hhcmQsIG1hcCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgICAgICAgUG9pbnQue1xuICAgICAgICAgICAgICAgICAgLi4ub3JpZ2luLFxuICAgICAgICAgICAgICAgICAgY29sOiBvcmlnaW4uY29sICsgU3RyaW5nLmxlbmd0aCh0b2tlbihzaGFyZCkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGxldCBtYXAgPSBtYXAgfD4gYWRkX3ModC5pZCwgc2hhcmQsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgICAgKGxhc3QsIG1hcCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IChsYXN0LCBtYXApID1cbiAgICAgICAgICAgICAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICAgICAgICAgICAgICB8PiBBYmEuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAgIHNoYXJkID0+IGFkZF9zaGFyZChvcmlnaW4sIHNoYXJkLCBtYXApLFxuICAgICAgICAgICAgICAgICAgICgob3JpZ2luLCBtYXApLCBjaGlsZCwgc2hhcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgIGxldCAoY2hpbGRfbGFzdCwgY2hpbGRfbWFwKSA9XG4gICAgICAgICAgICAgICAgICAgICAgIGdvX25lc3RlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5jb250YWluZXJfaW5kZW50PWNvbnRhaW5lcl9pbmRlbnQgKyBjb250YWluZWRfaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICBhZGRfc2hhcmQoY2hpbGRfbGFzdCwgc2hhcmQsIGNoaWxkX21hcCk7XG4gICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIH07XG4gICAgICAgIGxldCAodGxfbGFzdCwgbWFwKSA9IGdvX3NlcSh+bWFwLCB+Y29udGFpbmVkX2luZGVudCwgfm9yaWdpbiwgdGwpO1xuICAgICAgICAodGxfbGFzdCwgbWFwKTtcbiAgICAgIH07XG4gICAgZ29fc2VxKH5tYXAsIH5vcmlnaW4sIHNlZyk7XG4gIH07XG4gIHNuZChnb19uZXN0ZWQofm1hcD1lbXB0eSwgc2VnKSk7XG59O1xuXG5sZXQgbGVuZ3RoID0gKHNlZzogU2VnbWVudC50LCBtYXA6IHQpOiBpbnQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAwXG4gIHwgW3BdID0+XG4gICAgbGV0IG0gPSBmaW5kX3AocCwgbWFwKTtcbiAgICBtLmxhc3QuY29sIC0gbS5vcmlnaW4uY29sO1xuICB8IFtoZCwgLi4udGxdID0+XG4gICAgbGV0IGZpcnN0ID0gZmluZF9wKGhkLCBtYXApO1xuICAgIGxldCBsYXN0ID0gZmluZF9wKExpc3RVdGlsLmxhc3QodGwpLCBtYXApO1xuICAgIGxhc3QubGFzdC5jb2wgLSBmaXJzdC5vcmlnaW4uY29sO1xuICB9O1xuXG5sZXQgc2VnbWVudF9vcmlnaW4gPSAoc2VnOiBTZWdtZW50LnQpOiBvcHRpb24oUG9pbnQudCkgPT5cbiAgT3B0aW9uLm1hcChcbiAgICBmaXJzdCA9PiBmaW5kX3AoZmlyc3QsIG9mX3NlZ21lbnQoc2VnKSkub3JpZ2luLFxuICAgIExpc3RVdGlsLmhkX29wdChzZWcpLFxuICApO1xuXG5sZXQgc2VnbWVudF9sYXN0ID0gKHNlZzogU2VnbWVudC50KTogb3B0aW9uKFBvaW50LnQpID0+XG4gIE9wdGlvbi5tYXAoXG4gICAgbGFzdCA9PiBmaW5kX3AobGFzdCwgb2Zfc2VnbWVudChzZWcpKS5sYXN0LFxuICAgIExpc3RVdGlsLmxhc3Rfb3B0KHNlZyksXG4gICk7XG5cbmxldCBzZWdtZW50X2hlaWdodCA9IChzZWc6IFNlZ21lbnQudCkgPT5cbiAgc3dpdGNoIChzZWdtZW50X2xhc3Qoc2VnKSwgc2VnbWVudF9vcmlnaW4oc2VnKSkge1xuICB8IChTb21lKGxhc3QpLCBTb21lKGZpcnN0KSkgPT4gMSArIGxhc3Qucm93IC0gZmlyc3Qucm93XG4gIHwgXyA9PiAwXG4gIH07XG5cbmxldCBzZWdtZW50X3dpZHRoID0gKHNlZzogU2VnbWVudC50KTogaW50ID0+XG4gIEludE1hcC5mb2xkKFxuICAgIChfLCB7bWF4X2NvbCwgX306IFJvd3Muc2hhcGUsIGFjYykgPT4gbWF4KG1heF9jb2wsIGFjYyksXG4gICAgb2Zfc2VnbWVudChzZWcpLnJvd3MsXG4gICAgMCxcbiAgKTtcblxubGV0IHdpZHRoX2Nvc3QgPSAoc2VnOiBTZWdtZW50LnQsIG1heF93aWR0aDogaW50KTogaW50ID0+XG4gIEludE1hcC5mb2xkKFxuICAgIChfLCB7bWF4X2NvbCwgX306IFJvd3Muc2hhcGUsIGFjYykgPT4ge1xuICAgICAgbGV0IG92ZXJmbG93ID0gbWF4KG1heF9jb2wgLSBtYXhfd2lkdGgsIDApO1xuICAgICAgYWNjICsgb3ZlcmZsb3cgKiBvdmVyZmxvdztcbiAgICB9LFxuICAgIG9mX3NlZ21lbnQoc2VnKS5yb3dzLFxuICAgIDAsXG4gICk7XG4iLCJvcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYnVmZmVyID1cbiAgfCBVbnBhcnNlZFxuICB8IFBhcnNlZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb2RlID1cbiAgfCBOb3JtYWxcbiAgfCBCdWZmZXIoYnVmZmVyKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBmb2N1czogRGlyZWN0aW9uLnQsXG4gIGNvbnRlbnQ6IFNlZ21lbnQudCxcbiAgbW9kZSxcbn07XG5cbi8qIE5PVEU6IGJhY2twYWNrIG5vIGxvbmdlciB1c2VzIHNlbGVjdGlvbiBmb2N1cyAqL1xubGV0IG1rID0gKH5tb2RlPU5vcm1hbCwgfmZvY3VzPURpcmVjdGlvbi5MZWZ0LCBjb250ZW50OiBTZWdtZW50LnQpID0+IHtcbiAgZm9jdXMsXG4gIGNvbnRlbnQsXG4gIG1vZGUsXG59O1xuXG5sZXQgbWtfYnVmZmVyID0gYnVmZmVyID0+IG1rKH5tb2RlPUJ1ZmZlcihidWZmZXIpLCB+Zm9jdXM9RGlyZWN0aW9uLkxlZnQpO1xuXG5sZXQgaXNfYnVmZmVyOiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCB7bW9kZTogQnVmZmVyKF8pLCBffSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGJ1ZmZlcl9pZHMgPSAoc2VsOiB0KTogbGlzdChJZC50KSA9PiB7XG4gIC8qIENvbGxlY3QgaWRzIG9mIHRva2VucyBpbiBidWZmZXIgZm9yIHN0eWxpbmcgcHVycG9zZXMuIFRoaXMgaXNcbiAgICogY3VycmVudGx5IG5lY2Vzc2FyeSBhcyB0aGUgc2VsZWN0aW9uIGlzIG5vdCBwZXJzaXN0ZWQgdGhyb3VnaFxuICAgKiB1bnppcHBpbmcgZm9yIGRpc3BsYXkgKi9cbiAgbGV0IGJ1ZmZlciA9IGlzX2J1ZmZlcihzZWwpID8gc2VsLmNvbnRlbnQgOiBbXTtcbiAgSWQuTWFwLmJpbmRpbmdzKE1lYXN1cmVkLm9mX3NlZ21lbnQoYnVmZmVyKS50aWxlcykgfD4gTGlzdC5tYXAoZnN0KTtcbn07XG5cbmxldCBlbXB0eSA9IG1rKFNlZ21lbnQuZW1wdHkpO1xuXG5sZXQgbWFwID0gKGYsIHNlbCkgPT4gey4uLnNlbCwgY29udGVudDogZihzZWwuY29udGVudCl9O1xuXG5sZXQgdG9nZ2xlX2ZvY3VzID0gc2VsZWN0aW9uID0+IHtcbiAgLi4uc2VsZWN0aW9uLFxuICBmb2N1czogVXRpbC5EaXJlY3Rpb24udG9nZ2xlKHNlbGVjdGlvbi5mb2N1cyksXG59O1xuXG5sZXQgaXNfZW1wdHkgPSAoc2VsZWN0aW9uOiB0KSA9PiBzZWxlY3Rpb24uY29udGVudCA9PSBTZWdtZW50LmVtcHR5O1xuXG5sZXQgcHVzaCA9IChwOiBQaWVjZS50LCB7Zm9jdXMsIGNvbnRlbnQsIG1vZGV9OiB0KTogdCA9PiB7XG4gIGxldCBjb250ZW50ID1cbiAgICBTZWdtZW50LnJlYXNzZW1ibGUoXG4gICAgICBzd2l0Y2ggKGZvY3VzKSB7XG4gICAgICB8IExlZnQgPT4gU2VnbWVudC5jb25zKHAsIGNvbnRlbnQpXG4gICAgICB8IFJpZ2h0ID0+IFNlZ21lbnQuc25vYyhjb250ZW50LCBwKVxuICAgICAgfSxcbiAgICApO1xuICB7Zm9jdXMsIGNvbnRlbnQsIG1vZGV9O1xufTtcblxubGV0IHBvcCA9IChzZWw6IHQpOiBvcHRpb24oKFBpZWNlLnQsIHQpKSA9PlxuICBzd2l0Y2ggKHNlbC5mb2N1cywgc2VsLmNvbnRlbnQsIExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHNlbC5jb250ZW50KSkge1xuICB8IChfLCBbXSwgXylcbiAgfCAoXywgXywgTm9uZSkgPT4gTm9uZVxuICB8IChMZWZ0LCBbcCwgLi4uY29udGVudF0sIF8pID0+XG4gICAgbGV0IChwLCByZXN0KSA9IFBpZWNlLnBvcF9sKHApO1xuICAgIFNvbWUoKHAsIHsuLi5zZWwsIGNvbnRlbnQ6IHJlc3QgQCBjb250ZW50fSkpO1xuICB8IChSaWdodCwgXywgU29tZSgoY29udGVudCwgcCkpKSA9PlxuICAgIGxldCAocmVzdCwgcCkgPSBQaWVjZS5wb3BfcihwKTtcbiAgICBTb21lKChwLCB7Li4uc2VsLCBjb250ZW50OiBjb250ZW50IEAgcmVzdH0pKTtcbiAgfTtcblxubGV0IHNwbGl0X3BpZWNlID0gXzogb3B0aW9uKChQaWVjZS50LCB0KSkgPT4gZmFpbHdpdGgoXCJ0b2RvIHNwbGl0X3BpZWNlXCIpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxubW9kdWxlIFNoYXJkSW5mbyA9IHtcbiAgbW9kdWxlIE9yZGVyID0ge1xuICAgIHR5cGUga2V5ID0gKElkLnQsIGludCk7XG4gICAgLy8gbGV0IGtleSA9IChzOiBTaGFyZC50KSA9PiAocy50aWxlX2lkLCBTaGFyZC5pbmRleChzKSk7XG5cbiAgICBvcGVuIEhhc2h0Ymw7XG4gICAgdHlwZSB0ID0gSGFzaHRibC50KGtleSwgSGFzaHRibC50KGtleSwgdW5pdCkpO1xuXG4gICAgbGV0IG4gPSAyMDtcbiAgICBsZXQgaW5pdCA9ICgpID0+IGNyZWF0ZShuKTtcblxuICAgIGxldCBsdCA9IChsOiBUaWxlLnQsIHI6IFRpbGUudCwgb3JkOiB0KTogYm9vbCA9PiB7XG4gICAgICBsZXQgKGlfbCwgaV9yKSA9IFRpbGUuKHJfc2hhcmQobCksIGxfc2hhcmQocikpO1xuICAgICAgc3dpdGNoIChmaW5kX29wdChvcmQsIChsLmlkLCBpX2wpKSkge1xuICAgICAgfCBOb25lID0+IGZhbHNlXG4gICAgICB8IFNvbWUocm93KSA9PiBPcHRpb24uaXNfc29tZShmaW5kX29wdChyb3csIChyLmlkLCBpX3IpKSlcbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgZ3QgPSAobCwgciwgb3JkKSA9PiBsdChyLCBsLCBvcmQpO1xuICAgIGxldCB1biA9IChsLCByLCBvcmQpID0+ICFsdChsLCByLCBvcmQpICYmICFndChsLCByLCBvcmQpO1xuXG4gICAgbGV0IGRpc29yZGVyZWQgPSAodDogVGlsZS50LCB0JzogVGlsZS50KTogYm9vbCA9PlxuICAgICAgdC5pZCA9PSB0Jy5pZFxuICAgICAgJiYge1xuICAgICAgICBsZXQgKGwsIHIpID0gVGlsZS4obF9zaGFyZCh0KSwgcl9zaGFyZCh0KSk7XG4gICAgICAgIGxldCAobCcsIHInKSA9IFRpbGUuKGxfc2hhcmQodCcpLCByX3NoYXJkKHQnKSk7XG4gICAgICAgIGwgPCBsJyAmJiBsJyA8IHIgfHwgbCcgPCBsICYmIGwgPCByJztcbiAgICAgIH07XG5cbiAgICBsZXQgbHRfb3JfdW4gPSAobHMsIHJzLCBvcmQpID0+XG4gICAgICBsc1xuICAgICAgfD4gTGlzdC5mb3JfYWxsKGwgPT5cbiAgICAgICAgICAgcnNcbiAgICAgICAgICAgfD4gTGlzdC5mb3JfYWxsKHIgPT5cbiAgICAgICAgICAgICAgICAhZGlzb3JkZXJlZChsLCByKSAmJiAobHQobCwgciwgb3JkKSB8fCB1bihsLCByLCBvcmQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICApO1xuXG4gICAgbGV0IGdldCA9IChpLCBqLCBtKSA9PiB7XG4gICAgICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICAgICAgbGV0KiByID0gZmluZF9vcHQobSwgaSk7XG4gICAgICBmaW5kX29wdChyLCBqKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IChpLCBqLCBtKSA9PiB7XG4gICAgICBsZXQgciA9XG4gICAgICAgIHN3aXRjaCAoZmluZF9vcHQobSwgaSkpIHtcbiAgICAgICAgfCBOb25lID0+IGNyZWF0ZShuKVxuICAgICAgICB8IFNvbWUocikgPT4gclxuICAgICAgICB9O1xuICAgICAgcmVwbGFjZShyLCBqLCAoKSk7XG4gICAgICByZXBsYWNlKG0sIGksIHIpO1xuICAgIH07XG5cbiAgICBsZXQgYWRkX3RpbGUgPSAoaWQsIGxibCwgb3JkKSA9PlxuICAgICAgbGJsXG4gICAgICB8PiBMaXN0Lml0ZXJpKChpLCBfKSA9PiB7XG4gICAgICAgICAgIHN3aXRjaCAoZmluZF9vcHQob3JkLCAoaWQsIGkpKSkge1xuICAgICAgICAgICB8IFNvbWUoXykgPT4gKClcbiAgICAgICAgICAgfCBOb25lID0+IHJlcGxhY2Uob3JkLCAoaWQsIGkpLCBjcmVhdGUobikpXG4gICAgICAgICAgIH07XG4gICAgICAgICAgIGkgPT0gMCA/ICgpIDogc2V0KChpZCwgaSAtIDEpLCAoaWQsIGkpLCBvcmQpO1xuICAgICAgICAgfSk7XG5cbiAgICAvLyBXYXJzaGFsbCdzIGFsZ29yaXRobSBodHRwczovL2NzLndpbm9uYS5lZHUvbGluL2NzNDQwL2NoMDgtMi5wZGZcbiAgICBsZXQgdHJhbl9jbG9zZSA9IChvcmQ6IHQpOiB1bml0ID0+IHtcbiAgICAgIGxldCBrZXlzID0gTGlzdC5vZl9zZXEoSGFzaHRibC50b19zZXFfa2V5cyhvcmQpKTtcbiAgICAgIGtleXNcbiAgICAgIHw+IExpc3QuaXRlcmkoKG4sIGspID0+XG4gICAgICAgICAgIGlmIChuID09IDApIHtcbiAgICAgICAgICAgICAoKTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBrZXlzXG4gICAgICAgICAgICAgfD4gTGlzdC5pdGVyKGkgPT5cbiAgICAgICAgICAgICAgICAgIGtleXNcbiAgICAgICAgICAgICAgICAgIHw+IExpc3QuaXRlcihqID0+XG4gICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0KGksIGosIG9yZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKF8pID0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0KGksIGssIG9yZCksIGdldChrLCBqLCBvcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfCAoTm9uZSwgXylcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IChfLCBOb25lKSA9PiAoKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKFNvbWUoXyksIFNvbWUoXykpID0+IHNldChpLCBqLCBvcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgfVxuICAgICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBDb3VudCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBsYWJlbHM6IElkLk1hcC50KExhYmVsLnQpLFxuICAgICAgY291bnRzOiBJZC5NYXAudChpbnQpLFxuICAgIH07XG5cbiAgICBsZXQgb2ZfdGlsZSA9ICh0OiBUaWxlLnQpID0+IHtcbiAgICAgIGxhYmVsczogSWQuTWFwLnNpbmdsZXRvbih0LmlkLCB0LmxhYmVsKSxcbiAgICAgIGNvdW50czogSWQuTWFwLnNpbmdsZXRvbih0LmlkLCBMaXN0Lmxlbmd0aCh0LnNoYXJkcykpLFxuICAgIH07XG5cbiAgICBsZXQgbWVyZ2UgPSAobTogdCwgbSc6IHQpID0+IHtcbiAgICAgIGxhYmVsczogSWQuTWFwLnVuaW9uKChfLCBsYmwsIF8pID0+IFNvbWUobGJsKSwgbS5sYWJlbHMsIG0nLmxhYmVscyksXG4gICAgICBjb3VudHM6IElkLk1hcC51bmlvbigoXywgbiwgbicpID0+IFNvbWUobiArIG4nKSwgbS5jb3VudHMsIG0nLmNvdW50cyksXG4gICAgfTtcblxuICAgIGxldCBtZW0gPSAoaWQsIG0pID0+IElkLk1hcC5tZW0oaWQsIG0ubGFiZWxzKTtcblxuICAgIGxldCBleGlzdHNfbWVtID0gKHRzOiBsaXN0KFRpbGUudCksIG0pID0+XG4gICAgICBMaXN0LmV4aXN0cygodDogVGlsZS50KSA9PiBtZW0odC5pZCwgbSksIHRzKTtcblxuICAgIGxldCBpc19jb21wbGV0ZSA9IChtOiB0KSA9PlxuICAgICAgbS5jb3VudHNcbiAgICAgIHw+IElkLk1hcC5mb3JfYWxsKChpZCwgbikgPT5cbiAgICAgICAgICAgbiA9PSBMaXN0Lmxlbmd0aChJZC5NYXAuZmluZChpZCwgbS5sYWJlbHMpKVxuICAgICAgICAgKTtcbiAgfTtcblxuICBtb2R1bGUgQ291bnRzID0ge1xuICAgIHR5cGUgdCA9IElkLlVmLnN0b3JlKENvdW50LnQpO1xuICAgIGluY2x1ZGUgSWQuVWY7XG4gICAgbGV0IG1lcmdlID0gbWVyZ2UoQ291bnQubWVyZ2UpO1xuICAgIGxldCBhZGRfdGlsZSA9ICh0OiBUaWxlLnQsIGNzOiB0KTogdW5pdCA9PlxuICAgICAgc3dpdGNoIChnZXRfb3B0KHQuaWQsIGNzKSkge1xuICAgICAgfCBOb25lID0+IGFkZCh0LmlkLCBDb3VudC5vZl90aWxlKHQpLCBjcylcbiAgICAgIHwgU29tZShjKSA9PlxuICAgICAgICBsZXQgYyA9IHtcbiAgICAgICAgICAuLi5jLFxuICAgICAgICAgIGNvdW50czpcbiAgICAgICAgICAgIElkLk1hcC51cGRhdGUoXG4gICAgICAgICAgICAgIHQuaWQsXG4gICAgICAgICAgICAgIE9wdGlvbi5tYXAoKCspKExpc3QubGVuZ3RoKHQuc2hhcmRzKSkpLFxuICAgICAgICAgICAgICBjLmNvdW50cyxcbiAgICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgICAgIHNldCh0LmlkLCBjLCBjcyk7XG4gICAgICB9O1xuICB9O1xuXG4gIC8vIFNoYXJkcyBhcmUgY29uc2lkZXJlZCBzZWxlY3Rpb24tbWF0Y2hpbmcgaWYgdGhleSBhcmUgcmVsYXRlZCB0cmFuc2l0aXZlbHlcbiAgLy8gYnkgbm9ybWFsIHdpdGhpbi10aWxlIG1hdGNoaW5nIG9yIGJ5IHNhbWUtc2VsZWN0aW9uLWNvbnRhaW5tZW50LlxuICAvLyBTZWxlY3Rpb24tbWF0Y2hpbmcgc2hhcmRzIGFyZSBvcmRlcmVkIHRyYW5zaXRpdmVseSBieSB3aXRoaW4tdGlsZVxuICAvLyBvcmRlcmluZyBhbmQgc2FtZS1zZWxlY3Rpb24gb3JkZXJpbmcgY29tYmluZWQgd2l0aCB3ZWxsLW5lc3RlZG5lc3MuXG4gIC8vIFJlcHJlc2VudHMgdGhlIGV4cGVjdGVkIG9yZGVyIG9mIGFsbCBzZWxlY3Rpb24tbWF0Y2hpbmcgc2hhcmRzIGFzXG4gIC8vIGltcG9zZWQgYnkgc2VsZWN0aW9ucyBpbiB0aGUgYmFja3BhY2ssIGFsb25nIHdpdGggY291bnRzIG9mIHRob3NlXG4gIC8vIHNoYXJkcyBjb250YWluZWQgaW4gdGhlIGJhY2twYWNrLlxuICAvLyBDb3VudHMgYXJlIHBhcnRpdGlvbmVkIGJ5IHRoZSBzZWxlY3Rpb24tbWF0Y2hpbmcgcmVsYXRpb24uXG4gIHR5cGUgdCA9IHtcbiAgICBvcmRlcjogT3JkZXIudCxcbiAgICBjb3VudHM6IENvdW50cy50LFxuICB9O1xuXG4gIGxldCBpbml0ID0gKCkgPT4ge29yZGVyOiBPcmRlci5pbml0KCksIGNvdW50czogQ291bnRzLmluaXQoKX07XG5cbiAgbGV0IGFkZF9zZWwgPSAoc2VsOiBTZWxlY3Rpb24udCwge2NvdW50cywgb3JkZXJ9OiB0KTogdW5pdCA9PiB7XG4gICAgbGV0IHRzID0gU2VnbWVudC5pbmNvbXBsZXRlX3RpbGVzKHNlbC5jb250ZW50KTtcbiAgICAvLyBpbml0aWFsaXplXG4gICAgdHNcbiAgICB8PiBMaXN0Lml0ZXIoKHQ6IFRpbGUudCkgPT4ge1xuICAgICAgICAgQ291bnRzLmFkZF90aWxlKHQsIGNvdW50cyk7XG4gICAgICAgICBPcmRlci5hZGRfdGlsZSh0LmlkLCB0LmxhYmVsLCBvcmRlcik7XG4gICAgICAgfSk7XG4gICAgLy8gbWVyZ2UgY291bnRzXG4gICAgaWdub3JlKFxuICAgICAgdHNcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAocHJldjogb3B0aW9uKFRpbGUudCksIGN1cnI6IFRpbGUudCkgPT4ge1xuICAgICAgICAgICAgIHN3aXRjaCAocHJldikge1xuICAgICAgICAgICAgIHwgTm9uZSA9PiAoKVxuICAgICAgICAgICAgIHwgU29tZShwcmV2KSA9PiBDb3VudHMubWVyZ2UocHJldi5pZCwgY3Vyci5pZCwgY291bnRzKVxuICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgU29tZShjdXJyKTtcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgTm9uZSxcbiAgICAgICAgICksXG4gICAgKTtcbiAgICAvLyBwcm9wYWdhdGUgd2VsbC1uZXN0ZWQgb3JkZXJpbmcgY29uc3RyYWludHNcbiAgICBMaXN0VXRpbC5vcmRlcmVkX3BhaXJzKHRzKVxuICAgIHw+IExpc3QuaXRlcigoKGw6IFRpbGUudCwgcjogVGlsZS50KSkgPT4ge1xuICAgICAgICAgbGV0IChuX2wsIG5fcikgPSBMaXN0LihsZW5ndGgobC5sYWJlbCksIGxlbmd0aChyLmxhYmVsKSk7XG4gICAgICAgICBsZXQgKGlfbCwgaV9yKSA9IFRpbGUuKHJfc2hhcmQobCksIGxfc2hhcmQocikpO1xuICAgICAgICAgT3JkZXIuc2V0KChsLmlkLCBpX2wpLCAoci5pZCwgaV9yKSwgb3JkZXIpO1xuICAgICAgICAgaWYgKGlfbCA9PSBuX2wgLSAxICYmIGlfciAhPSAwKSB7XG4gICAgICAgICAgIC8vIGwgbXVzdCBiZSBuZXN0ZWQgd2l0aGluIHJcbiAgICAgICAgICAgT3JkZXIuc2V0KFxuICAgICAgICAgICAgIChyLmlkLCBpX3IgLSAxKSxcbiAgICAgICAgICAgICAobC5pZCwgMCksXG4gICAgICAgICAgICAgb3JkZXIsXG4gICAgICAgICAgICk7XG4gICAgICAgICB9IGVsc2UgaWYgKGlfbCAhPSBuX2wgLSAxICYmIGlfciA9PSAwKSB7XG4gICAgICAgICAgIC8vIHIgbXVzdCBiZSBuZXN0ZWQgd2l0aGluIGxcbiAgICAgICAgICAgT3JkZXIuc2V0KFxuICAgICAgICAgICAgIChyLmlkLCBuX3IgLSAxKSxcbiAgICAgICAgICAgICAobC5pZCwgaV9sICsgMSksXG4gICAgICAgICAgICAgb3JkZXIsXG4gICAgICAgICAgICk7XG4gICAgICAgICB9O1xuICAgICAgIH0pO1xuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gbGlzdChTZWxlY3Rpb24udCk7XG5cbmxldCBlbXB0eSA9IFtdO1xuXG5sZXQgc2hhcmRfaW5mbyA9IChicDogdCkgPT4ge1xuICBvcGVuIFNoYXJkSW5mbztcbiAgbGV0IGluZm8gPSBpbml0KCk7XG4gIGJwIHw+IExpc3QuaXRlcihzZWwgPT4gYWRkX3NlbChzZWwsIGluZm8pKTtcbiAgT3JkZXIudHJhbl9jbG9zZShpbmZvLm9yZGVyKTtcbiAgaW5mbztcbn07XG5cbi8qIFBFUkY6IFRoaXMgYmVjb21lcyB2ZXJ5IGNvc3RseSB3aGVuIHRoZXJlIGFyZSBhIGxvdCBvZiB0aGluZ3NcbiAgIGluIHRoZSBiYWNrcGFjazsgZS5nLiBpZiB5b3Ugb3BlbiAyMyBwYXJlbnMsIGl0J3MgYWxtb3N0IDEwMCVcbiAgIG9mIHRoZSBrZXlzdG9rZSBjb3N0LCBmb3IgYSA1NXggdG90YWwgc2xvd2Rvd24gICovXG5sZXQgc2hhcmRfaW5mbyA9IENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIHNoYXJkX2luZm8pO1xuXG5sZXQgcHVzaCA9IHNlbCA9PiBTZWxlY3Rpb24uaXNfZW1wdHkoc2VsKSA/IEZ1bi5pZCA6IExpc3QuY29ucyhzZWwpO1xuXG5sZXQgcHVzaF9zOiAobGlzdChTZWxlY3Rpb24udCksIHQpID0+IHQgPSBMaXN0LmZvbGRfcmlnaHQocHVzaCk7XG5cbmxldCBwb3AgPVxuICAgICgocHJlLCBzdWYpOiAobGlzdChUaWxlLnQpLCBsaXN0KFRpbGUudCkpLCBicDogdClcbiAgICA6IG9wdGlvbigoYm9vbCwgU2VsZWN0aW9uLnQsIHQpKSA9PiB7XG4gIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gIGxldCogKGhkLCB0bCkgPSBMaXN0VXRpbC5zcGxpdF9maXJzdF9vcHQoYnApO1xuICBzd2l0Y2ggKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhoZC5jb250ZW50KSkge1xuICB8IFtdID0+IFNvbWUoKHRydWUsIGhkLCB0bCkpXG4gIHwgW3QsIC4uLl9dIGFzIHRzID0+XG4gICAgb3BlbiBTaGFyZEluZm87XG4gICAgbGV0IHtjb3VudHMsIG9yZGVyfSA9IHNoYXJkX2luZm8oYnApO1xuICAgIGxldCBjb3VudCA9IENvdW50cy5nZXQodC5pZCwgY291bnRzKTtcbiAgICBsZXQgZmlyc3QgPSBDb3VudC5pc19jb21wbGV0ZShjb3VudCk7XG4gICAgZmlyc3RcbiAgICB8fCAoQ291bnQuZXhpc3RzX21lbShwcmUsIGNvdW50KSB8fCBDb3VudC5leGlzdHNfbWVtKHN1ZiwgY291bnQpKVxuICAgICYmIE9yZGVyLmx0X29yX3VuKHByZSwgdHMsIG9yZGVyKVxuICAgICYmIE9yZGVyLmx0X29yX3VuKHRzLCBzdWYsIG9yZGVyKVxuICAgICAgPyBTb21lKChmaXJzdCwgaGQsIHRsKSkgOiBOb25lO1xuICB9O1xufTtcblxubGV0IHJlc3RyaWN0ZWQgPSAoYnA6IHQpOiBib29sID0+XG4gIHN3aXRjaCAoYnApIHtcbiAgfCBbXSA9PiBmYWxzZVxuICB8IFtoZCwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhoZC5jb250ZW50KSkge1xuICAgIHwgW10gPT4gZmFsc2VcbiAgICB8IFt0LCAuLi5fXSA9PlxuICAgICAgb3BlbiBTaGFyZEluZm87XG4gICAgICBsZXQgaW5mbyA9IHNoYXJkX2luZm8oYnApO1xuICAgICAgIUNvdW50LmlzX2NvbXBsZXRlKENvdW50cy5nZXQodC5pZCwgaW5mby5jb3VudHMpKTtcbiAgICB9XG4gIH07XG5cbmxldCByZW1vdmVfbWF0Y2hpbmcgPSAodHM6IGxpc3QoVGlsZS50KSwgYnA6IHQpID0+XG4gIExpc3QuZm9sZF9sZWZ0KFxuICAgIChicCwgdDogVGlsZS50KSA9PlxuICAgICAgYnBcbiAgICAgIHw+IExpc3QubWFwKFNlbGVjdGlvbi5tYXAoU2VnbWVudC5yZW1vdmVfbWF0Y2hpbmcodCkpKVxuICAgICAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICBmdW5cbiAgICAgICAgICAgfCBzZWwgd2hlbiAhU2VsZWN0aW9uLmlzX2VtcHR5KHNlbCkgPT4gU29tZShzZWwpXG4gICAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgICAgKSxcbiAgICBicCxcbiAgICB0cyxcbiAgKTtcblxubGV0IHdpbGxfYmFyZiA9ICh0OiBUb2tlbi50LCBicDogdCk6IGJvb2wgPT5cbiAgLyogRG9lcyB0aGUgZmlyc3Qgc2VsZWN0aW9uIGluIHRoZSBiYWNrcGFjayBjb25zaXN0XG4gICAgIG9mIGEgc2luZ2xlIHRva2VuIHdoaWNoIG1hdGNoZXMgdGhlIG9uZSBwcm92aWRlZD8gKi9cbiAgc3dpdGNoIChicCkge1xuICB8IFtdID0+IGZhbHNlXG4gIHwgW3tjb250ZW50OiBbcF0sIF99LCAuLi5fXSA9PlxuICAgIHN3aXRjaCAocCkge1xuICAgIHwgVGlsZSh7c2hhcmRzOiBbaV0sIGxhYmVsLCBffSkgPT5cbiAgICAgIGFzc2VydChpIDwgTGlzdC5sZW5ndGgobGFiZWwpKTtcbiAgICAgIExpc3QubnRoKGxhYmVsLCBpKSA9PSB0O1xuICAgIHwgXyA9PiBmYWxzZVxuICAgIH1cbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbmxldCByZW1vdmVfdW5pX3RpbGVzX3dpdGhfZGVlcF9tYXRjaGVzID0gKGJwOiB0LCBzZWw6IFNlbGVjdGlvbi50KTogdCA9PiB7XG4gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIHByZXZlbnQgaW5jb21wbGV0ZSB0aWxlcyBpbnNpZGUgc2VsZWN0aW9uIHRpbGVzXG4gICAqIGZyb20gYmVpbmcgb3JwaGFuZWQgb24gZGVsZXRpb24sIGUuZy4gaWYgeW91IGRlbGV0ZSBzZWdtZW50IFwiKFspXCJcbiAgICogd2l0aCBcIl1cIiBpbiB0aGUgYmFja3BhY2suICAqL1xuICBsZXQgaWRzID0gU2VnbWVudC5pZHNfb2ZfaW5jb21wbGV0ZV90aWxlc19pbl9iaWRlbGltaXRlZHMoc2VsLmNvbnRlbnQpO1xuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBTZWxlY3Rpb24ue2NvbnRlbnQ6IFtQaWVjZS5UaWxlKHtpZCwgX30pXSwgX30gd2hlbiBMaXN0Lm1lbShpZCwgaWRzKSA9PlxuICAgICAgTm9uZVxuICAgIHwgeCA9PiBTb21lKHgpLFxuICAgIGJwLFxuICApO1xufTtcbiIsIm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzaWJsaW5nczogU2libGluZ3MudCxcbiAgYW5jZXN0b3JzOiBBbmNlc3RvcnMudCxcbn07XG5cbmxldCBlbXB0eSA9IHtzaWJsaW5nczogU2libGluZ3MuZW1wdHksIGFuY2VzdG9yczogQW5jZXN0b3JzLmVtcHR5fTtcblxubGV0IHB1c2ggPSAoZDogRGlyZWN0aW9uLnQsIHA6IFBpZWNlLnQsIHJzOiB0KTogdCA9PiB7XG4gIC4uLnJzLFxuICBzaWJsaW5nczogU2libGluZ3MucHVzaChkLCBwLCBycy5zaWJsaW5ncyksXG59O1xuXG5sZXQgcHJlcGVuZCA9IChkOiBEaXJlY3Rpb24udCwgc2VnOiBTZWdtZW50LnQsIHJzOiB0KTogdCA9PiB7XG4gIGxldCBzaWJsaW5ncyA9IFNpYmxpbmdzLnByZXBlbmQoZCwgc2VnLCBycy5zaWJsaW5ncyk7XG4gIHsuLi5ycywgc2libGluZ3N9O1xufTtcblxubGV0IHBvcCA9IChkOiBEaXJlY3Rpb24udCwgcnM6IHQpOiBvcHRpb24oKFBpZWNlLnQsIHQpKSA9PlxuICBzd2l0Y2ggKFNpYmxpbmdzLnBvcChkLCBycy5zaWJsaW5ncykpIHtcbiAgfCBTb21lKChwLCBzaWJsaW5ncykpID0+IFNvbWUoKHAsIHsuLi5ycywgc2libGluZ3N9KSlcbiAgfCBOb25lID0+XG4gICAgc3dpdGNoIChycy5hbmNlc3RvcnMpIHtcbiAgICB8IFtdID0+IE5vbmVcbiAgICB8IFsoYW5jZXN0b3IsIHNpYmxpbmdzKSwgLi4uYW5jZXN0b3JzXSA9PlxuICAgICAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgICAgIGxldCBzaWJsaW5ncycgPSBBbmNlc3Rvci5kaXNhc3NlbWJsZShhbmNlc3Rvcik7XG4gICAgICBsZXQrIChwLCBzaWJsaW5ncykgPVxuICAgICAgICBTaWJsaW5ncy4ocG9wKGQsIGNvbmNhdChbcnMuc2libGluZ3MsIHNpYmxpbmdzJywgc2libGluZ3NdKSkpO1xuICAgICAgKHAsIHtzaWJsaW5ncywgYW5jZXN0b3JzfSk7XG4gICAgfVxuICB9O1xuXG5sZXQgemlwID0gKH5zZWw9U2VnbWVudC5lbXB0eSwge3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KSA9PlxuICBBbmNlc3RvcnMuemlwKFNpYmxpbmdzLnppcCh+c2VsLCBzaWJsaW5ncyksIGFuY2VzdG9ycyk7XG5cbmxldCBsb2NhbF9pbmNvbXBsZXRlX3RpbGVzID0gKHtzaWJsaW5nczogKHByZSwgc3VmKSwgYW5jZXN0b3JzfTogdCkgPT4ge1xuICBsZXQgc2licyA9XG4gICAgc3dpdGNoIChhbmNlc3RvcnMpIHtcbiAgICB8IFtdID0+IChwcmUsIHN1ZilcbiAgICB8IFsoYSwgXyksIC4uLl9dID0+XG4gICAgICBsZXQgKGwsIHIpID0gQW5jZXN0b3IuY29udGFpbmVyX3NoYXJkcyhhKTtcbiAgICAgIChbbCwgLi4ucHJlXSwgc3VmIEAgW3JdKTtcbiAgICB9O1xuICBTaWJsaW5ncy5pbmNvbXBsZXRlX3RpbGVzKHNpYnMpO1xufTtcblxubGV0IHBhcmVudCA9XG4gICAgKH5zZWw9U2VnbWVudC5lbXB0eSwge3NpYmxpbmdzOiAobF9zaWJzLCByX3NpYnMpLCBhbmNlc3RvcnN9OiB0KVxuICAgIDogb3B0aW9uKFBpZWNlLnQpID0+XG4gIGFuY2VzdG9yc1xuICB8PiBBbmNlc3RvcnMucGFyZW50XG4gIHw+IE9wdGlvbi5tYXAocCA9PiBCYXNlLlRpbGUoQW5jZXN0b3IuemlwKGxfc2licyBAIHNlbCBAIHJfc2licywgcCkpKTtcblxubGV0IGRlbGV0ZV9wYXJlbnQgPSAoe3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KTogdCA9PiB7XG4gIHN3aXRjaCAoYW5jZXN0b3JzKSB7XG4gIHwgW10gPT4ge3NpYmxpbmdzLCBhbmNlc3RvcnN9XG4gIHwgWyhfLCBwX3NpYnMpLCAuLi5hbmNlc3RvcnNdID0+IHtcbiAgICAgIHNpYmxpbmdzOiBTaWJsaW5ncy5jb25jYXQoW3NpYmxpbmdzLCBwX3NpYnNdKSxcbiAgICAgIGFuY2VzdG9ycyxcbiAgICB9XG4gIH07XG59O1xuXG5sZXQgZGlzYXNzZW1ibGUgPSAoe3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KTogU2libGluZ3MudCA9PlxuICBTaWJsaW5ncy5jb25jYXQoW3NpYmxpbmdzLCBBbmNlc3RvcnMuZGlzYXNzZW1ibGUoYW5jZXN0b3JzKV0pO1xuXG5sZXQgcmVtb2xkID0gKHtzaWJsaW5ncywgYW5jZXN0b3JzfTogdCk6IHQgPT4ge1xuICBsZXQgcyA9IEFuY2VzdG9ycy5zb3J0KGFuY2VzdG9ycyk7XG4gIGxldCBzaWJsaW5ncyA9IFNpYmxpbmdzLnJlbW9sZChzaWJsaW5ncywgcyk7XG4gIHthbmNlc3RvcnMsIHNpYmxpbmdzfTtcbn07XG5cbmxldCByZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCB7c2libGluZ3MsIGFuY2VzdG9yc306IHQpOiB0ID0+IHtcbiAgLyogRGlyZWN0aW9uIGlzIHNpZGUgb2YgZ3JvdXQgY2FyZXQgd2lsbCBlbmQgdXAgb24gKi9cblxuICBsZXQgYW5jZXN0b3JzID0gQW5jZXN0b3JzLnJlZ3JvdXQoYW5jZXN0b3JzKTtcbiAgbGV0IHNpYmxpbmdzID0ge1xuICAgIGxldCAoKHByZSwgc19sLCB0cmltX2wpLCAodHJpbV9yLCBzX3IsIHN1ZikpID1cbiAgICAgIFNpYmxpbmdzLnJlZ3JvdXQoc2libGluZ3MpO1xuICAgIGxldCAodHJpbV9sLCB0cmltX3IpID0ge1xuICAgICAgb3BlbiBTZWdtZW50LlRyaW07XG4gICAgICBsZXQgKChfLCBnc19sKSwgKF8sIGdzX3IpKSA9ICh0cmltX2wsIHRyaW1fcik7XG4gICAgICBsZXQgKHNlZ19sLCBzZWdfcikgPSAodG9fc2VnKHRyaW1fbCksIHRvX3NlZyh0cmltX3IpKTtcbiAgICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoZ3NfbCksIGdzX3IpIHtcbiAgICAgIHwgKFNvbWUoKF8sIGdfbCkpLCBbZ19yLCAuLi5fXSkgPT5cbiAgICAgICAgR3JvdXQuZml0cyhnX2wsIGdfcilcbiAgICAgICAgICAvLyBub3RlOiBhc3N1bWVzIHNpbmdsZSBncm91dCBpbnZhcmlhbnQgaW4gdW4tY2FyZXQtaW50ZXJydXB0ZWQgdHJpbVxuICAgICAgICAgID8gKHdzKHRyaW1fbCksIHdzKHRyaW1fcikpICAvLyh3cyh0cmltX2wpLCBzZWdfcilcbiAgICAgICAgICA6IChcbiAgICAgICAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgICAgICAgfCBMZWZ0ID0+ICh3cyh0cmltX2wpLCBzZWdfcilcbiAgICAgICAgICAgIHwgUmlnaHQgPT4gKHNlZ19sLCB3cyh0cmltX3IpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgIHwgKFNvbWUoKF8sIGcpKSwgW10pID0+XG4gICAgICAgIEdyb3V0LmZpdHNfc2hhcGUoZywgc19yKSA/IChzZWdfbCwgc2VnX3IpIDogKHdzKHRyaW1fbCksIHNlZ19yKVxuICAgICAgfCAoTm9uZSwgW2csIC4uLl9dKSA9PlxuICAgICAgICBHcm91dC5maXRzX3NoYXBlKGcsIHNfbCkgPyAoc2VnX2wsIHNlZ19yKSA6IChzZWdfbCwgd3ModHJpbV9yKSlcbiAgICAgIHwgKE5vbmUsIFtdKSA9PlxuICAgICAgICBOaWIuU2hhcGUuZml0cyhzX2wsIHNfcilcbiAgICAgICAgICA/IChzZWdfbCwgc2VnX3IpXG4gICAgICAgICAgLy8gY2FuIG1vZHVsYXRlIHdpdGggZGlyZWN0aW9uYWwgYXJnXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgICAgICAgIHwgTGVmdCA9PlxuICAgICAgICAgICAgICBsZXQgdHJpbSA9IGFkZF9ncm91dCh+ZD1SaWdodCwgc19yLCB0cmltX3IpO1xuICAgICAgICAgICAgICAoc2VnX2wsIHRvX3NlZyh0cmltKSk7XG4gICAgICAgICAgICB8IFJpZ2h0ID0+XG4gICAgICAgICAgICAgIGxldCB0cmltID0gYWRkX2dyb3V0KH5kPUxlZnQsIHNfbCwgdHJpbV9sKTtcbiAgICAgICAgICAgICAgKHRvX3NlZyh0cmltKSwgc2VnX3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgIH07XG4gICAgfTtcbiAgICAocHJlIEAgdHJpbV9sLCB0cmltX3IgQCBzdWYpO1xuICB9O1xuICB7c2libGluZ3MsIGFuY2VzdG9yc307XG59O1xuXG5sZXQgcHJlcGVuZF9nZW5lcmF0aW9uID0gKChhLCBzaWJzKTogQW5jZXN0b3JzLmdlbmVyYXRpb24sIHJzOiB0KTogdCA9PiB7XG4gIHNpYmxpbmdzOiBTaWJsaW5ncy5lbXB0eSxcbiAgYW5jZXN0b3JzOiBbKGEsIFNpYmxpbmdzLmNvbmNhdChbc2licywgcnMuc2libGluZ3NdKSksIC4uLnJzLmFuY2VzdG9yc10sXG59O1xubGV0IHByZXBlbmRfc2libGluZ3MgPSAoc2liczogU2libGluZ3MudCwgcnM6IHQpOiB0ID0+IHtcbiAgLi4ucnMsXG4gIHNpYmxpbmdzOiBTaWJsaW5ncy5jb25jYXQoW3NpYnMsIHJzLnNpYmxpbmdzXSksXG59O1xuXG5sZXQgY29uY2F0ID0gKHJzczogbGlzdCh0KSk6IHQgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgIChyczogdCwgY2F0OiB0KSA9PlxuICAgICAgTGlzdC5mb2xkX3JpZ2h0KHByZXBlbmRfZ2VuZXJhdGlvbiwgcnMuYW5jZXN0b3JzLCBjYXQpXG4gICAgICB8PiBwcmVwZW5kX3NpYmxpbmdzKHJzLnNpYmxpbmdzKSxcbiAgICByc3MsXG4gICAgZW1wdHksXG4gICk7XG5cbmxldCByZWFzc2VtYmxlX3BhcmVudCA9IChyczogdCk6IHQgPT5cbiAgc3dpdGNoIChycy5hbmNlc3RvcnMpIHtcbiAgfCBbXSA9PiByc1xuICB8IFsoYSwgc2licyksIC4uLmFuY3NdID0+XG4gICAgbGV0IChsLCByKSA9XG4gICAgICBycy5zaWJsaW5nc1xuICAgICAgfD4gU2libGluZ3Muc3BsaXRfYnlfbWF0Y2hpbmcoYS5pZClcbiAgICAgIHw+IFR1cGxlVXRpbC5tYXAyKEFiYS50cmltKTtcbiAgICBsZXQgZmxhdHRlbl9tYXRjaCA9XG4gICAgICBBYmEuZm9sZF9yaWdodChcbiAgICAgICAgKHQ6IFRpbGUudCwga2lkLCAoc2hhcmRzLCBraWRzKSkgPT5cbiAgICAgICAgICBBYmEubWsodC5zaGFyZHMgQCBzaGFyZHMsIHQuY2hpbGRyZW4gQCBba2lkLCAuLi5raWRzXSksXG4gICAgICAgICh0OiBUaWxlLnQpID0+IEFiYS5tayh0LnNoYXJkcywgdC5jaGlsZHJlbiksXG4gICAgICApO1xuICAgIGxldCAoYSwgbCkgPVxuICAgICAgc3dpdGNoIChsKSB7XG4gICAgICB8IE5vbmUgPT4gKGEsIGZzdChycy5zaWJsaW5ncykpXG4gICAgICB8IFNvbWUoKG91dGVyX2wsIG1hdGNoX2wsIGlubmVyX2wpKSA9PlxuICAgICAgICBsZXQgKHNoYXJkc19sLCBraWRzX2wpID0gZmxhdHRlbl9tYXRjaChtYXRjaF9sKTtcbiAgICAgICAgbGV0IGEgPSB7XG4gICAgICAgICAgLi4uYSxcbiAgICAgICAgICBzaGFyZHM6IGEuc2hhcmRzIHw+IFBhaXJVdGlsLm1hcF9mc3Qoc3MgPT4gc3MgQCBzaGFyZHNfbCksXG4gICAgICAgICAgY2hpbGRyZW46XG4gICAgICAgICAgICBhLmNoaWxkcmVuXG4gICAgICAgICAgICB8PiBQYWlyVXRpbC5tYXBfZnN0KGtpZHMgPT4ga2lkcyBAIFtvdXRlcl9sLCAuLi5raWRzX2xdKSxcbiAgICAgICAgfTtcbiAgICAgICAgKGEsIGlubmVyX2wpO1xuICAgICAgfTtcbiAgICBsZXQgKGEsIHIpID1cbiAgICAgIHN3aXRjaCAocikge1xuICAgICAgfCBOb25lID0+IChhLCBzbmQocnMuc2libGluZ3MpKVxuICAgICAgfCBTb21lKChpbm5lcl9yLCBtYXRjaF9yLCBvdXRlcl9yKSkgPT5cbiAgICAgICAgbGV0IChzaGFyZHNfciwga2lkc19yKSA9IGZsYXR0ZW5fbWF0Y2gobWF0Y2hfcik7XG4gICAgICAgIGxldCBhID0ge1xuICAgICAgICAgIC4uLmEsXG4gICAgICAgICAgc2hhcmRzOiBhLnNoYXJkcyB8PiBQYWlyVXRpbC5tYXBfc25kKHNzID0+IHNoYXJkc19yIEAgc3MpLFxuICAgICAgICAgIGNoaWxkcmVuOlxuICAgICAgICAgICAgYS5jaGlsZHJlblxuICAgICAgICAgICAgfD4gUGFpclV0aWwubWFwX3NuZChraWRzID0+IFtvdXRlcl9yLCAuLi5raWRzX3JdIEAga2lkcyksXG4gICAgICAgIH07XG4gICAgICAgIChhLCBpbm5lcl9yKTtcbiAgICAgIH07XG4gICAge3NpYmxpbmdzOiAobCwgciksIGFuY2VzdG9yczogWyhhLCBzaWJzKSwgLi4uYW5jc119O1xuICB9O1xuXG5sZXQgcmVhc3NlbWJsZV9zaWJsaW5ncyA9IChyczogdCkgPT4ge1xuICAuLi5ycyxcbiAgc2libGluZ3M6IFNpYmxpbmdzLnJlYXNzZW1ibGUocnMuc2libGluZ3MpLFxufTtcblxubGV0IHJlYXNzZW1ibGUgPSAocnM6IHQpOiB0ID0+IHtcbiAgbGV0IHJlYyBnbyA9IChyczogdCk6IHQgPT5cbiAgICBzd2l0Y2ggKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhzbmQocnMuc2libGluZ3MpKSkge1xuICAgIHwgW10gPT4gcnNcbiAgICB8IFt0LCAuLi5fXSA9PlxuICAgICAgc3dpdGNoIChcbiAgICAgICAgcnMuc2libGluZ3NcbiAgICAgICAgfD4gU2libGluZ3Muc3BsaXRfYnlfbWF0Y2hpbmcodC5pZClcbiAgICAgICAgfD4gVHVwbGVVdGlsLm1hcDIoQWJhLnRyaW0pXG4gICAgICApIHtcbiAgICAgIHwgKF8sIE5vbmUpID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZVwiKVxuICAgICAgfCAoTm9uZSwgU29tZSgoaW5uZXJfciwgbWF0Y2hfciwgb3V0ZXJfcikpKSA9PlxuICAgICAgICBsZXQge3NpYmxpbmdzOiAocHJlLCBzdWYpLCBhbmNlc3RvcnN9ID1cbiAgICAgICAgICBnbyh7Li4ucnMsIHNpYmxpbmdzOiAoZnN0KHJzLnNpYmxpbmdzKSwgb3V0ZXJfcil9KTtcbiAgICAgICAgbGV0IHQgPSBUaWxlLnJlYXNzZW1ibGUobWF0Y2hfcik7XG4gICAgICAgIGxldCBzdWYgPSBTZWdtZW50LmNvbmNhdChbaW5uZXJfciwgW1RpbGUudG9fcGllY2UodCksIC4uLnN1Zl1dKTtcbiAgICAgICAge3NpYmxpbmdzOiAocHJlLCBzdWYpLCBhbmNlc3RvcnN9O1xuICAgICAgfCAoXG4gICAgICAgICAgU29tZSgob3V0ZXJfbCwgbWF0Y2hfbCwgaW5uZXJfbCkpLFxuICAgICAgICAgIFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSxcbiAgICAgICAgKSA9PlxuICAgICAgICBsZXQgcnMgPSBnbyh7Li4ucnMsIHNpYmxpbmdzOiAob3V0ZXJfbCwgb3V0ZXJfcil9KTtcbiAgICAgICAgbGV0IGFuY2VzdG9ycyA9IFtcbiAgICAgICAgICAoQW5jZXN0b3IucmVhc3NlbWJsZShtYXRjaF9sLCBtYXRjaF9yKSwgcnMuc2libGluZ3MpLFxuICAgICAgICAgIC4uLnJzLmFuY2VzdG9ycyxcbiAgICAgICAgXTtcbiAgICAgICAgbGV0IHNpYmxpbmdzID0gKGlubmVyX2wsIGlubmVyX3IpO1xuICAgICAgICB7YW5jZXN0b3JzLCBzaWJsaW5nc307XG4gICAgICB9XG4gICAgfTtcbiAgcnMgfD4gcmVhc3NlbWJsZV9zaWJsaW5ncyB8PiByZWFzc2VtYmxlX3BhcmVudCB8PiBnbztcbn07XG5cbi8vIGxldCByZWMgcmVhc3NlbWJsZSA9IChyczogdCk6IHQgPT4ge1xuLy8gICBsZXQgc2libGluZ3MgPSBTaWJsaW5ncy5yZWFzc2VtYmxlKHJzLnNpYmxpbmdzKTtcbi8vICAgc3dpdGNoIChTaWJsaW5ncy5pbmNvbXBsZXRlX3RpbGVzKHNpYmxpbmdzKSkge1xuLy8gICB8IChbXSwgXylcbi8vICAgfCAoXywgW10pID0+IHsuLi5ycywgc2libGluZ3N9XG4vLyAgIHwgKFtfLCAuLi5fXSwgW3QsIC4uLl9dKSA9PlxuLy8gICAgIHN3aXRjaCAoXG4vLyAgICAgICBzaWJsaW5nc1xuLy8gICAgICAgfD4gU2libGluZ3Muc3BsaXRfYnlfbWF0Y2hpbmcodC5pZClcbi8vICAgICAgIHw+IFR1cGxlVXRpbC5tYXAyKEFiYS50cmltKVxuLy8gICAgICkge1xuLy8gICAgIHwgKE5vbmUsIE5vbmUpID0+IHsuLi5ycywgc2libGluZ3N9XG4vLyAgICAgfCAoTm9uZSwgU29tZSgoaW5uZXJfciwgbWF0Y2hfciwgb3V0ZXJfcikpKSA9PlxuLy8gICAgICAgbGV0IHtzaWJsaW5nczogKGwsIHIpLCBhbmNlc3RvcnN9ID1cbi8vICAgICAgICAgcmVhc3NlbWJsZSh7Li4ucnMsIHNpYmxpbmdzOiAoZnN0KHNpYmxpbmdzKSwgb3V0ZXJfcil9KTtcbi8vICAgICAgIHtcbi8vICAgICAgICAgc2libGluZ3M6IChcbi8vICAgICAgICAgICBsLFxuLy8gICAgICAgICAgIFNlZ21lbnQuY29uY2F0KFtpbm5lcl9yLCBBbmNlc3Rvci5NYXRjaC5TdWZmaXguam9pbihtYXRjaF9yKSwgcl0pLFxuLy8gICAgICAgICApLFxuLy8gICAgICAgICBhbmNlc3RvcnMsXG4vLyAgICAgICB9O1xuLy8gICAgIHwgKFNvbWUoKGlubmVyX2wsIG1hdGNoX2wsIG91dGVyX2wpKSwgTm9uZSkgPT5cbi8vICAgICAgIGxldCB7c2libGluZ3M6IChsLCByKSwgYW5jZXN0b3JzfSA9XG4vLyAgICAgICAgIHJlYXNzZW1ibGUoey4uLnJzLCBzaWJsaW5nczogKG91dGVyX2wsIHNuZChycy5zaWJsaW5ncykpfSk7XG4vLyAgICAgICB7XG4vLyAgICAgICAgIHNpYmxpbmdzOiAoXG4vLyAgICAgICAgICAgU2VnbWVudC5jb25jYXQoW2lubmVyX2wsIEFuY2VzdG9yLk1hdGNoLlN1ZmZpeC5qb2luKG1hdGNoX2wpLCBsXSksXG4vLyAgICAgICAgICAgcixcbi8vICAgICAgICAgKSxcbi8vICAgICAgICAgYW5jZXN0b3JzLFxuLy8gICAgICAgfTtcbi8vICAgICB8IChTb21lKChpbm5lcl9sLCBtYXRjaF9sLCBvdXRlcl9sKSksIFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSkgPT5cbi8vICAgICAgIGxldCBtYXRjaCA9IChtYXRjaF9sLCBtYXRjaF9yKTtcbi8vICAgICAgIGxldCByc19pbm5lciA9XG4vLyAgICAgICAgIHN3aXRjaCAoQW5jZXN0b3IuTWF0Y2guY29tcGxldGUobWF0Y2gpKSB7XG4vLyAgICAgICAgIHwgTm9uZSA9PiB7XG4vLyAgICAgICAgICAgICBzaWJsaW5nczpcbi8vICAgICAgICAgICAgICAgU2libGluZ3MuY29uY2F0KFtcbi8vICAgICAgICAgICAgICAgICAoaW5uZXJfbCwgaW5uZXJfciksXG4vLyAgICAgICAgICAgICAgICAgQW5jZXN0b3IuTWF0Y2guam9pbihtYXRjaCksXG4vLyAgICAgICAgICAgICAgIF0pLFxuLy8gICAgICAgICAgICAgYW5jZXN0b3JzOiBBbmNlc3RvcnMuZW1wdHksXG4vLyAgICAgICAgICAgfVxuLy8gICAgICAgICB8IFNvbWUoYSkgPT4ge1xuLy8gICAgICAgICAgICAgc2libGluZ3M6IChpbm5lcl9sLCBpbm5lcl9yKSxcbi8vICAgICAgICAgICAgIGFuY2VzdG9yczogWyhhLCBTaWJsaW5ncy5lbXB0eSldLFxuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfTtcbi8vICAgICAgIGxldCByc19vdXRlciA9IHJlYXNzZW1ibGUoey4uLnJzLCBzaWJsaW5nczogKG91dGVyX2wsIG91dGVyX3IpfSk7XG4vLyAgICAgICBjb25jYXQoW3JzX2lubmVyLCByc19vdXRlcl0pO1xuLy8gICAgIH1cbi8vICAgfTtcbi8vIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubW9kdWxlIENhcmV0ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBPdXRlclxuICAgIHwgSW5uZXIoaW50LCBpbnQpO1xuXG4gIGxldCBkZWNyZW1lbnQ6IHQgPT4gdCA9XG4gICAgZnVuXG4gICAgfCBPdXRlclxuICAgIHwgSW5uZXIoXywgMCkgPT4gT3V0ZXJcbiAgICB8IElubmVyKGQsIGMpID0+IElubmVyKGQsIGMgLSAxKTtcblxuICBsZXQgb2Zmc2V0OiB0ID0+IGludCA9XG4gICAgZnVuXG4gICAgfCBPdXRlciA9PiAwXG4gICAgfCBJbm5lcihfLCBjKSA9PiBjICsgMTtcbn07XG5cbi8vIGFzc3VtaW5nIHNpbmdsZSBiYWNrcGFjaywgc2hhcmRzIG1heSBhcHBlYXIgaW4gc2VsZWN0aW9uLCBiYWNrcGFjaywgb3Igc2libGluZ3NcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb24udCxcbiAgYmFja3BhY2s6IEJhY2twYWNrLnQsXG4gIHJlbGF0aXZlczogUmVsYXRpdmVzLnQsXG4gIGNhcmV0OiBDYXJldC50LFxuICAvLyBjb2xfdGFyZ2V0OiBpbnQsXG59O1xuXG5sZXQgaW5pdDogdW5pdCA9PiB0ID1cbiAgKCkgPT4ge1xuICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uLm1rKFtdKSxcbiAgICBiYWNrcGFjazogW10sXG4gICAgcmVsYXRpdmVzOiB7XG4gICAgICBzaWJsaW5nczogKFtdLCBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldKSxcbiAgICAgIGFuY2VzdG9yczogW10sXG4gICAgfSxcbiAgICBjYXJldDogT3V0ZXIsXG4gICAgLy8gY29sX3RhcmdldDogMCxcbiAgfTtcblxubGV0IG5leHRfYmxhbmsgPSBfID0+IElkLm1rKCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY2h1bmtpbmVzcyA9XG4gIHwgQnlDaGFyXG4gIHwgTW9ub0J5Q2hhclxuICB8IEJ5VG9rZW47XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGxhbmFyID1cbiAgfCBVcFxuICB8IERvd25cbiAgfCBMZWZ0KGNodW5raW5lc3MpXG4gIHwgUmlnaHQoY2h1bmtpbmVzcyk7XG5cbmxldCBmcm9tX3BsYW5lOiBwbGFuYXIgPT4gRGlyZWN0aW9uLnQgPVxuICBmdW5cbiAgfCBMZWZ0KF8pID0+IExlZnRcbiAgfCBSaWdodChfKSA9PiBSaWdodFxuICB8IFVwID0+IExlZnRcbiAgfCBEb3duID0+IFJpZ2h0O1xuXG5sZXQgdXBkYXRlX2NhcmV0ID0gKGY6IENhcmV0LnQgPT4gQ2FyZXQudCwgejogdCk6IHQgPT4ge1xuICAuLi56LFxuICBjYXJldDogZih6LmNhcmV0KSxcbn07XG5sZXQgc2V0X2NhcmV0ID0gKGNhcmV0OiBDYXJldC50KTogKHQgPT4gdCkgPT4gdXBkYXRlX2NhcmV0KF8gPT4gY2FyZXQpO1xuXG5sZXQgdXBkYXRlX3JlbGF0aXZlcyA9IChmOiBSZWxhdGl2ZXMudCA9PiBSZWxhdGl2ZXMudCwgejogdCk6IHQgPT4ge1xuICAuLi56LFxuICByZWxhdGl2ZXM6IGYoei5yZWxhdGl2ZXMpLFxufTtcblxubGV0IHVwZGF0ZV9zaWJsaW5nczogKFNpYmxpbmdzLnQgPT4gU2libGluZ3MudCwgdCkgPT4gdCA9XG4gIGYgPT4gdXBkYXRlX3JlbGF0aXZlcyhycyA9PiB7Li4ucnMsIHNpYmxpbmdzOiBmKHJzLnNpYmxpbmdzKX0pO1xuXG5sZXQgcGFyZW50ID0gKHo6IHQpOiBvcHRpb24oUGllY2UudCkgPT5cbiAgUmVsYXRpdmVzLnBhcmVudCh+c2VsPXouc2VsZWN0aW9uLmNvbnRlbnQsIHoucmVsYXRpdmVzKTtcblxubGV0IGRlbGV0ZV9wYXJlbnQgPSAoejogdCk6IHQgPT4ge1xuICAuLi56LFxuICByZWxhdGl2ZXM6IFJlbGF0aXZlcy5kZWxldGVfcGFyZW50KHoucmVsYXRpdmVzKSxcbn07XG5cbmxldCB6aXAgPSAoejogdCk6IFNlZ21lbnQudCA9PlxuICBSZWxhdGl2ZXMuemlwKH5zZWw9ei5zZWxlY3Rpb24uY29udGVudCwgei5yZWxhdGl2ZXMpO1xuXG5sZXQgdW56aXAgPSAoc2VnOiBTZWdtZW50LnQpOiB0ID0+IHtcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb24ubWsoW10pLFxuICBiYWNrcGFjazogW10sXG4gIHJlbGF0aXZlczoge1xuICAgIHNpYmxpbmdzOiAoc2VnLCBbXSksXG4gICAgYW5jZXN0b3JzOiBbXSxcbiAgfSxcbiAgY2FyZXQ6IE91dGVyLFxufTtcblxubGV0IHNpYnNfd2l0aF9zZWwgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgc2VsZWN0aW9uOiB7Y29udGVudCwgZm9jdXMsIF99LFxuICAgICAgICByZWxhdGl2ZXM6IHtzaWJsaW5nczogKGxfc2licywgcl9zaWJzKSwgX30sXG4gICAgICAgIF8sXG4gICAgICB9OiB0LFxuICAgIClcbiAgICA6IFNpYmxpbmdzLnQgPT5cbiAgc3dpdGNoIChmb2N1cykge1xuICB8IExlZnQgPT4gKGxfc2licywgY29udGVudCBAIHJfc2licylcbiAgfCBSaWdodCA9PiAobF9zaWJzIEAgY29udGVudCwgcl9zaWJzKVxuICB9O1xuXG5sZXQgcG9wX2JhY2twYWNrID0gKHo6IHQpID0+XG4gIEJhY2twYWNrLnBvcChSZWxhdGl2ZXMubG9jYWxfaW5jb21wbGV0ZV90aWxlcyh6LnJlbGF0aXZlcyksIHouYmFja3BhY2spO1xuXG5sZXQgbGVmdF9uZWlnaGJvcl9tb25vdGlsZTogU2libGluZ3MudCA9PiBvcHRpb24oVG9rZW4udCkgPVxuICBzID0+IHMgfD4gU2libGluZ3MubGVmdF9uZWlnaGJvciB8PiBPcHRVdGlsLmFuZF90aGVuKFBpZWNlLm1vbm90aWxlKTtcblxubGV0IHJpZ2h0X25laWdoYm9yX21vbm90aWxlOiBTaWJsaW5ncy50ID0+IG9wdGlvbihUb2tlbi50KSA9XG4gIHMgPT4gcyB8PiBTaWJsaW5ncy5yaWdodF9uZWlnaGJvciB8PiBPcHRVdGlsLmFuZF90aGVuKFBpZWNlLm1vbm90aWxlKTtcblxubGV0IG5laWdoYm9yX21vbm90aWxlczogU2libGluZ3MudCA9PiAob3B0aW9uKFRva2VuLnQpLCBvcHRpb24oVG9rZW4udCkpID1cbiAgcyA9PiAobGVmdF9uZWlnaGJvcl9tb25vdGlsZShzKSwgcmlnaHRfbmVpZ2hib3JfbW9ub3RpbGUocykpO1xuXG5sZXQgcmVncm91dCA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IHQgPT4ge1xuICBhc3NlcnQoU2VsZWN0aW9uLmlzX2VtcHR5KHouc2VsZWN0aW9uKSk7XG4gIGxldCByZWxhdGl2ZXMgPSBSZWxhdGl2ZXMucmVncm91dChkLCB6LnJlbGF0aXZlcyk7XG4gIHsuLi56LCByZWxhdGl2ZXN9O1xufTtcblxubGV0IHJlbW9sZCA9ICh6OiB0KTogdCA9PiB7XG4gIGFzc2VydChTZWxlY3Rpb24uaXNfZW1wdHkoei5zZWxlY3Rpb24pKTtcbiAgey4uLnosIHJlbGF0aXZlczogUmVsYXRpdmVzLnJlbW9sZCh6LnJlbGF0aXZlcyl9O1xufTtcblxubGV0IHJlbW9sZF9yZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogdCA9PiB6IHw+IHJlbW9sZCB8PiByZWdyb3V0KGQpO1xuXG5sZXQgY2xlYXJfdW5wYXJzZWRfYnVmZmVyID0gKHo6IHQpID0+XG4gIHN3aXRjaCAoei5zZWxlY3Rpb24ubW9kZSkge1xuICB8IEJ1ZmZlcihVbnBhcnNlZCkgPT4gey4uLnosIHNlbGVjdGlvbjogU2VsZWN0aW9uLmVtcHR5fVxuICB8IF8gPT4gelxuICB9O1xuXG5sZXQgdW5zZWxlY3QgPSAofmVyYXNlX2J1ZmZlcj1mYWxzZSwgejogdCk6IHQgPT4ge1xuICAvKiBOT1RFKGFuZHJldyk6IEVyYXNlIGJ1ZmZlciBmbGFnIG9ubHkgYXBwbGllcyB0byB1bnBhcnNlZCBidWZmZXIsXG4gICAqIHRoYXQgaXMsIHRoZSBidWZmZXIgc3R5bGUgdGhhdCBqdXN0IGNvbnRhaW5zIGEgc2luZ2xlIGZsYXQgdG9rZW4uXG4gICAqIEVyYXNpbmcgYSBidWZmZXIgdGhlIGNvbnRhaW5zIGFyYml0cmFyeSB0aWxlcyB3b3VsZCBiZSBtb3JlIGNvbXBsZXhcbiAgICogYXMgd2UgY2FuJ3QganVzdCBlbXB0eSB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgcmVncm91dGluZyAqL1xuICBsZXQgeiA9IGVyYXNlX2J1ZmZlciA/IGNsZWFyX3VucGFyc2VkX2J1ZmZlcih6KSA6IHo7XG4gIGxldCByZWxhdGl2ZXMgPVxuICAgIHoucmVsYXRpdmVzXG4gICAgfD4gUmVsYXRpdmVzLnByZXBlbmQoei5zZWxlY3Rpb24uZm9jdXMsIHouc2VsZWN0aW9uLmNvbnRlbnQpXG4gICAgfD4gUmVsYXRpdmVzLnJlYXNzZW1ibGU7XG4gIGxldCBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZW1wdHk7XG4gIHsuLi56LCBzZWxlY3Rpb24sIHJlbGF0aXZlc307XG59O1xubGV0IHVuc2VsZWN0X2FuZF96aXAgPSAofmVyYXNlX2J1ZmZlcj1mYWxzZSwgejogdCk6IFNlZ21lbnQudCA9PlxuICB6IHw+IHVuc2VsZWN0KH5lcmFzZV9idWZmZXIpIHw+IHppcDtcblxubGV0IHVwZGF0ZV9zZWxlY3Rpb24gPSAoc2VsZWN0aW9uOiBTZWxlY3Rpb24udCwgejogdCk6IChTZWxlY3Rpb24udCwgdCkgPT4ge1xuICBsZXQgb2xkID0gei5zZWxlY3Rpb247XG4gIC8vIHVzZWQgdG8gYmUgbmVjZXNzYXJ5IHRvIHVuc2VsZWN0IHdoZW4gc2VsZWN0aW9uIHVwZGF0ZVxuICAvLyBpbmNsdWRlZCByZW1vbGQvcmVncm91dCwgbm93IG5vIGxvbmdlciBuZWNlc3NhcnkgaWYgbmVlZHNcbiAgLy8gdG8gYmUgY2hhbmdlZCBidXQga2VlcGluZyBmb3Igbm93IHRvIG1pbmltaXplIGNoYW5nZVxuICBsZXQgeiA9IHVuc2VsZWN0KHsuLi56LCBzZWxlY3Rpb259KTtcbiAgKG9sZCwgeik7XG59O1xuXG5sZXQgcHV0X3NlbGVjdGlvbiA9IChzZWw6IFNlbGVjdGlvbi50LCB6OiB0KTogdCA9PlxuICBzbmQodXBkYXRlX3NlbGVjdGlvbihzZWwsIHopKTtcblxubGV0IGdyb3dfc2VsZWN0aW9uID0gKHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICBsZXQrIChwLCByZWxhdGl2ZXMpID0gUmVsYXRpdmVzLnBvcCh6LnNlbGVjdGlvbi5mb2N1cywgei5yZWxhdGl2ZXMpO1xuICBsZXQgc2VsZWN0aW9uID0gU2VsZWN0aW9uLnB1c2gocCwgei5zZWxlY3Rpb24pO1xuICB7Li4ueiwgc2VsZWN0aW9uLCByZWxhdGl2ZXN9O1xufTtcblxuLy8gdG9nZ2xlcyBmb2N1cyBhbmQgZ3Jvd3MgaWYgc2VsZWN0aW9uIGlzIGVtcHR5XG5sZXQgc2hyaW5rX3NlbGVjdGlvbiA9ICh6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgc3dpdGNoIChTZWxlY3Rpb24ucG9wKHouc2VsZWN0aW9uKSkge1xuICB8IE5vbmUgPT5cbiAgICBsZXQgc2VsZWN0aW9uID0gU2VsZWN0aW9uLnRvZ2dsZV9mb2N1cyh6LnNlbGVjdGlvbik7XG4gICAgZ3Jvd19zZWxlY3Rpb24oey4uLnosIHNlbGVjdGlvbn0pO1xuICB8IFNvbWUoKHAsIHNlbGVjdGlvbikpID0+XG4gICAgbGV0IHJlbGF0aXZlcyA9XG4gICAgICB6LnJlbGF0aXZlc1xuICAgICAgfD4gUmVsYXRpdmVzLnB1c2goc2VsZWN0aW9uLmZvY3VzLCBwKVxuICAgICAgfD4gUmVsYXRpdmVzLnJlYXNzZW1ibGU7XG4gICAgU29tZSh7Li4ueiwgc2VsZWN0aW9uLCByZWxhdGl2ZXN9KTtcbiAgfTtcbn07XG5cbmxldCB0b2dnbGVfZm9jdXMgPSAoejogdCk6IHQgPT4ge1xuICAuLi56LFxuICBzZWxlY3Rpb246IFNlbGVjdGlvbi50b2dnbGVfZm9jdXMoei5zZWxlY3Rpb24pLFxufTtcblxubGV0IGRpcmVjdGlvbmFsX3Vuc2VsZWN0ID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogdCA9PiB7XG4gIGxldCBzZWxlY3Rpb24gPSB7Li4uei5zZWxlY3Rpb24sIGZvY3VzOiBEaXJlY3Rpb24udG9nZ2xlKGQpfTtcbiAgdW5zZWxlY3Qoey4uLnosIHNlbGVjdGlvbn0pO1xufTtcblxubGV0IG1vdmUgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgaWYgKFNlbGVjdGlvbi5pc19lbXB0eSh6LnNlbGVjdGlvbikpIHtcbiAgICAvLyBsZXQgYmFsYW5jZWQgPSAhQmFja3BhY2suaXNfYmFsYW5jZWQoei5iYWNrcGFjayk7XG4gICAgbGV0KyAocCwgcmVsYXRpdmVzKSA9IFJlbGF0aXZlcy5wb3AoZCwgei5yZWxhdGl2ZXMpO1xuICAgIGxldCByZWxhdGl2ZXMgPVxuICAgICAgcmVsYXRpdmVzXG4gICAgICB8PiBSZWxhdGl2ZXMucHVzaChEaXJlY3Rpb24udG9nZ2xlKGQpLCBwKVxuICAgICAgfD4gUmVsYXRpdmVzLnJlYXNzZW1ibGU7XG4gICAgey4uLnosIHJlbGF0aXZlc307XG4gIH0gZWxzZSB7XG4gICAgU29tZShkaXJlY3Rpb25hbF91bnNlbGVjdChkLCB6KSk7XG4gIH07XG5cbmxldCBzZWxlY3QgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgZCA9PSB6LnNlbGVjdGlvbi5mb2N1cyA/IGdyb3dfc2VsZWN0aW9uKHopIDogc2hyaW5rX3NlbGVjdGlvbih6KTtcblxubGV0IHBpY2tfdXAgPSAoejogdCk6IHQgPT4ge1xuICBsZXQgKHNlbGVjdGVkLCB6KSA9IHVwZGF0ZV9zZWxlY3Rpb24oU2VsZWN0aW9uLmVtcHR5LCB6KTtcbiAgbGV0IHNlbGVjdGlvbiA9XG4gICAgc2VsZWN0ZWQuY29udGVudFxuICAgIHw+IFNlZ21lbnQudHJpbV9ncm91dF9hcm91bmRfc2Vjb25kYXJ5KExlZnQpXG4gICAgfD4gU2VnbWVudC50cmltX2dyb3V0X2Fyb3VuZF9zZWNvbmRhcnkoUmlnaHQpXG4gICAgfD4gU2VsZWN0aW9uLm1rO1xuICBTZWdtZW50LnRpbGVzKHNlbGVjdGlvbi5jb250ZW50KVxuICB8PiBMaXN0Lm1hcCgodDogVGlsZS50KSA9PiB0LmlkKVxuICB8PiBFZmZlY3Quc190b3VjaDtcbiAgbGV0IGJhY2twYWNrID0gQmFja3BhY2sucHVzaChzZWxlY3Rpb24sIHouYmFja3BhY2spO1xuICB7Li4ueiwgYmFja3BhY2t9O1xufTtcblxubGV0IGRlc3RydWN0ID0gKH5kZXN0cm95X2tpZHM9dHJ1ZSwgejogdCk6IHQgPT4ge1xuICBsZXQgYmFja3BhY2sgPVxuICAgIEJhY2twYWNrLnJlbW92ZV91bmlfdGlsZXNfd2l0aF9kZWVwX21hdGNoZXMoei5iYWNrcGFjaywgei5zZWxlY3Rpb24pO1xuICBsZXQgKHNlbGVjdGVkLCB6KSA9IHVwZGF0ZV9zZWxlY3Rpb24oU2VsZWN0aW9uLmVtcHR5LCB6KTtcbiAgbGV0ICh0b19waWNrX3VwLCB0b19yZW1vdmUpID1cbiAgICBTZWdtZW50LmluY29tcGxldGVfdGlsZXMoc2VsZWN0ZWQuY29udGVudClcbiAgICB8PiBMaXN0LnBhcnRpdGlvbih0ID0+XG4gICAgICAgICBTaWJsaW5ncy5jb250YWluc19tYXRjaGluZyh0LCB6LnJlbGF0aXZlcy5zaWJsaW5ncylcbiAgICAgICAgIHx8IEFuY2VzdG9ycy5wYXJlbnRfbWF0Y2hlcyh0LCB6LnJlbGF0aXZlcy5hbmNlc3RvcnMpXG4gICAgICAgKTtcbiAgLyogSWYgZmxhZyBpcyBzZXQsIGJyZWFrIHVwIHRpbGVzIGFuZCByZW1vdmUgY2hpbGRyZW4gKi9cbiAgbGV0IHRvX3BpY2tfdXAgPVxuICAgIGRlc3Ryb3lfa2lkc1xuICAgICAgPyBMaXN0Lm1hcChUaWxlLmRpc2ludGVncmF0ZSwgdG9fcGlja191cCkgfD4gTGlzdC5mbGF0dGVuIDogdG9fcGlja191cDtcbiAgRWZmZWN0LnNfdG91Y2goTGlzdC5tYXAoKHQ6IFRpbGUudCkgPT4gdC5pZCwgdG9fcGlja191cCkpO1xuICBsZXQgYmFja3BhY2sgPVxuICAgIGJhY2twYWNrXG4gICAgfD4gQmFja3BhY2sucmVtb3ZlX21hdGNoaW5nKHRvX3JlbW92ZSlcbiAgICB8PiBCYWNrcGFjay5wdXNoX3MoXG4gICAgICAgICB0b19waWNrX3VwIHw+IExpc3QubWFwKFNlZ21lbnQub2ZfdGlsZSkgfD4gTGlzdC5tYXAoU2VsZWN0aW9uLm1rKSxcbiAgICAgICApO1xuICB7Li4ueiwgYmFja3BhY2t9O1xufTtcblxubGV0IGRlbGV0ZSA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PlxuICB6IHw+IHNlbGVjdChkKSB8PiBPcHRpb24ubWFwKGRlc3RydWN0KTtcblxubGV0IHB1dF9kb3duID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgbGV0IHogPSBkZXN0cnVjdCh6KTtcbiAgbGV0KiAoXywgcG9wcGVkLCBiYWNrcGFjaykgPSBwb3BfYmFja3BhY2soeik7XG4gIFNlZ21lbnQudGlsZXMocG9wcGVkLmNvbnRlbnQpXG4gIHw+IExpc3QubWFwKCh0OiBUaWxlLnQpID0+IHQuaWQpXG4gIHw+IEVmZmVjdC5zX3RvdWNoO1xuICBsZXQgeiA9IHsuLi56LCBiYWNrcGFja30gfD4gcHV0X3NlbGVjdGlvbihwb3BwZWQpIHw+IHVuc2VsZWN0O1xuICBzd2l0Y2ggKGQpIHtcbiAgfCBMZWZ0ID0+IFNvbWUoeilcbiAgfCBSaWdodCA9PiBtb3ZlKExlZnQsIHopXG4gIH07XG59O1xuXG5sZXQgcmVjIGNvbnN0cnVjdCA9XG4gICAgICAgICh+Y2FyZXQ6IERpcmVjdGlvbi50LCB+YmFja3BhY2s6IERpcmVjdGlvbi50LCBsYWJlbDogTGFiZWwudCwgejogdCk6IHQgPT4ge1xuICBzd2l0Y2ggKGxhYmVsKSB7XG4gIHwgW3RdIHdoZW4gRm9ybS5pc19zdHJpbmdfZGVsaW0odCkgPT5cbiAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGNvbnN0cnVjdGluZyBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgICAgU2VlIEluc2VydC5tb3ZlX2ludG9faWZfc3RyaW5nbGl0IGZvciBtb3JlIHNwZWNpYWwtY2FzaW5nLiAqL1xuICAgIGNvbnN0cnVjdCh+Y2FyZXQsIH5iYWNrcGFjaywgW0Zvcm0uc3RyaW5nX2RlbGltICsrIEZvcm0uc3RyaW5nX2RlbGltXSwgeilcbiAgfCBbY29udGVudF0gd2hlbiBGb3JtLmlzX2NvbW1lbnQoY29udGVudCkgPT5cbiAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGNvbW1lbnRzLCBjYW4ndCByZWx5IG9uIHRoZSBsYXN0IGJyYW5jaCB0byBjb25zdHJ1Y3QgKi9cbiAgICBsZXQgY29udGVudCA9IFNlY29uZGFyeS5jb25zdHJ1Y3RfY29tbWVudChjb250ZW50KTtcbiAgICBsZXQgaWQgPSBJZC5taygpO1xuICAgIEVmZmVjdC5zX3RvdWNoKFtpZF0pO1xuICAgIGxldCB6ID0gZGVzdHJ1Y3Qoeik7XG4gICAgbGV0IHNlbGVjdGlvbnMgPSBbU2VsZWN0aW9uLm1rKEJhc2UubWtfc2Vjb25kYXJ5KGlkLCBjb250ZW50KSldO1xuICAgIGxldCBiYWNrcGFjayA9IEJhY2twYWNrLnB1c2hfcyhzZWxlY3Rpb25zLCB6LmJhY2twYWNrKTtcbiAgICBPcHRpb24uZ2V0KHB1dF9kb3duKGNhcmV0LCB7Li4ueiwgYmFja3BhY2t9KSk7XG5cbiAgfCBbY29udGVudF0gd2hlbiBGb3JtLmlzX3NlY29uZGFyeShjb250ZW50KSA9PlxuICAgIGxldCBjb250ZW50ID0gU2Vjb25kYXJ5LldoaXRlc3BhY2UoY29udGVudCk7XG4gICAgbGV0IGlkID0gSWQubWsoKTtcbiAgICBFZmZlY3Quc190b3VjaChbaWRdKTtcbiAgICB6IHw+IHVwZGF0ZV9zaWJsaW5ncygoKGwsIHIpKSA9PiAobCBAIFtTZWNvbmRhcnkoe2lkLCBjb250ZW50fSldLCByKSk7XG4gIHwgXyA9PlxuICAgIGxldCB6ID0gZGVzdHJ1Y3Qoeik7XG4gICAgbGV0IG1vbGRzID0gTW9sZHMuZ2V0KGxhYmVsKTtcbiAgICBhc3NlcnQobW9sZHMgIT0gW10pO1xuICAgIC8vIGluaXRpYWwgbW9sZCB0byB0eXBlY2hlY2ssIHdpbGwgYmUgcmVtb2xkZWRcbiAgICBsZXQgbW9sZCA9IExpc3QuaGQobW9sZHMpO1xuICAgIGxldCBpZCA9IElkLm1rKCk7XG4gICAgRWZmZWN0LnNfdG91Y2goW2lkXSk7XG4gICAgbGV0IHNlbGVjdGlvbnMgPVxuICAgICAgVGlsZS5zcGxpdF9zaGFyZHMoaWQsIGxhYmVsLCBtb2xkLCBMaXN0Lm1hcGkoKGksIF8pID0+IGksIGxhYmVsKSlcbiAgICAgIHw+IExpc3QubWFwKFNlZ21lbnQub2ZfdGlsZSlcbiAgICAgIHw+IExpc3QubWFwKFNlbGVjdGlvbi5taylcbiAgICAgIHw+IExpc3RVdGlsLnJldl9pZihiYWNrcGFjayA9PSBSaWdodCk7XG4gICAgbGV0IGJhY2twYWNrID0gQmFja3BhY2sucHVzaF9zKHNlbGVjdGlvbnMsIHouYmFja3BhY2spO1xuICAgIE9wdGlvbi5nZXQocHV0X2Rvd24oY2FyZXQsIHsuLi56LCBiYWNrcGFja30pKTtcbiAgfTtcbn07XG5cbmxldCBjb25zdHJ1Y3RfbW9ubyA9IChkOiBEaXJlY3Rpb24udCwgdDogVG9rZW4udCwgejogdCk6IHQgPT5cbiAgY29uc3RydWN0KH5jYXJldD1kLCB+YmFja3BhY2s9TGVmdCwgW3RdLCB6KTtcblxubGV0IHJlcGxhY2UgPVxuICAgICh+Y2FyZXQ6IERpcmVjdGlvbi50LCB+YmFja3BhY2s6IERpcmVjdGlvbi50LCBsOiBMYWJlbC50LCB6OiB0KVxuICAgIDogb3B0aW9uKHQpID0+XG4gIC8qIGkuZS4gc2VsZWN0IGFuZCBjb25zdHJ1Y3QsIG92ZXJ3cml0aW5nIHRoZSBzZWxlY3Rpb24gKi9cbiAgeiB8PiBkZWxldGUoY2FyZXQpIHw+IE9wdGlvbi5tYXAoY29uc3RydWN0KH5jYXJldCwgfmJhY2twYWNrLCBsKSk7XG5cbmxldCByZXBsYWNlX21vbm8gPSAoZDogRGlyZWN0aW9uLnQsIHQ6IFRva2VuLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgcmVwbGFjZSh+Y2FyZXQ9ZCwgfmJhY2twYWNrPUxlZnQsIFt0XSwgeik7XG5cbmxldCByZXByZXNlbnRhdGl2ZV9waWVjZSA9ICh6OiB0KTogb3B0aW9uKChQaWVjZS50LCBEaXJlY3Rpb24udCkpID0+IHtcbiAgLyogVGhlIHBpZWNlIHRvIHRoZSBsZWZ0IG9mIHRoZSBjYXJldCwgb3IgaWYgbm9uZSBleGlzdHMsIHRoZSBwaWVjZSB0byB0aGUgcmlnaHQgKi9cbiAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoc2lic193aXRoX3NlbCh6KSkpIHtcbiAgfCAoU29tZShsKSwgXykgPT4gU29tZSgobCwgTGVmdCkpXG4gIHwgKF8sIFNvbWUocikpID0+IFNvbWUoKHIsIFJpZ2h0KSlcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCBjYXJldF9kaXJlY3Rpb24gPSAoejogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgLyogRGlyZWN0aW9uIHRoZSBjYXJldCBpcyBmYWNpbmcgaW4gKi9cbiAgc3dpdGNoICh6LmNhcmV0KSB7XG4gIHwgSW5uZXIoXykgPT4gTm9uZVxuICB8IE91dGVyID0+XG4gICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoc2lic193aXRoX3NlbCh6KSkpIHtcbiAgICB8IChTb21lKGwpLCBTb21lKHIpKSB3aGVuIFBpZWNlLmlzX3NlY29uZGFyeShsKSAmJiBQaWVjZS5pc19zZWNvbmRhcnkocikgPT5cbiAgICAgIE5vbmVcbiAgICB8IF8gPT4gU2libGluZ3MuZGlyZWN0aW9uX2JldHdlZW4oc2lic193aXRoX3NlbCh6KSlcbiAgICB9XG4gIH07XG5cbmxldCBiYXNlX3BvaW50ID0gKG1lYXN1cmVkOiBNZWFzdXJlZC50LCB6OiB0KTogTWVhc3VyZWQuUG9pbnQudCA9PiB7XG4gIHN3aXRjaCAocmVwcmVzZW50YXRpdmVfcGllY2UoeikpIHtcbiAgfCBTb21lKChwLCBkKSkgPT5cbiAgICBsZXQgc2VnID0gUGllY2UuZGlzYXNzZW1ibGUocCk7XG4gICAgc3dpdGNoIChkKSB7XG4gICAgfCBMZWZ0ID0+XG4gICAgICBsZXQgcCA9IExpc3RVdGlsLmxhc3Qoc2VnKTtcbiAgICAgIGxldCBtID0gTWVhc3VyZWQuZmluZF9wKHAsIG1lYXN1cmVkKTtcbiAgICAgIG0ubGFzdDtcbiAgICB8IFJpZ2h0ID0+XG4gICAgICBsZXQgcCA9IExpc3QuaGQoc2VnKTtcbiAgICAgIGxldCBtID0gTWVhc3VyZWQuZmluZF9wKHAsIG1lYXN1cmVkKTtcbiAgICAgIG0ub3JpZ2luO1xuICAgIH07XG4gIHwgTm9uZSA9PiB7cm93OiAwLCBjb2w6IDB9XG4gIH07XG59O1xubGV0IGNhcmV0X3BvaW50ID0gKG1lYXN1cmVkLCB6OiB0KTogTWVhc3VyZWQuUG9pbnQudCA9PiB7XG4gIGxldCBNZWFzdXJlZC5Qb2ludC57cm93LCBjb2x9ID0gYmFzZV9wb2ludChtZWFzdXJlZCwgeik7XG4gIHtyb3csIGNvbDogY29sICsgQ2FyZXQub2Zmc2V0KHouY2FyZXQpfTtcbn07XG5cbmxldCBzZXJpYWxpemUgPSAoejogdCk6IHN0cmluZyA9PiB7XG4gIHNleHBfb2ZfdCh6KSB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xufTtcblxubGV0IGRlc2VyaWFsaXplID0gKGRhdGE6IHN0cmluZyk6IHQgPT4ge1xuICBTZXhwbGliLlNleHAub2Zfc3RyaW5nKGRhdGEpIHw+IHRfb2Zfc2V4cDtcbn07XG5cbmxldCBjYW5fcHV0X2Rvd24gPSB6ID0+XG4gIHN3aXRjaCAocG9wX2JhY2twYWNrKHopKSB7XG4gIHwgU29tZShfKSA9PiB6LmNhcmV0ID09IE91dGVyXG4gIHwgTm9uZSA9PiBmYWxzZVxuICB9O1xuXG5sZXQgc2V0X2J1ZmZlciA9ICh6OiB0LCB+bW9kZTogU2VsZWN0aW9uLmJ1ZmZlciwgfmNvbnRlbnQ6IFNlZ21lbnQudCk6IHQgPT4ge1xuICAuLi56LFxuICBzZWxlY3Rpb246IFNlbGVjdGlvbi5ta19idWZmZXIobW9kZSwgY29udGVudCksXG59O1xuXG5sZXQgaXNfbGluZWJyZWFrX3RvX3JpZ2h0X29mX2NhcmV0ID1cbiAgICAoe3JlbGF0aXZlczoge3NpYmxpbmdzOiAoXywgciksIF99LCBffTogdCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHIpIHtcbiAgfCBbU2Vjb25kYXJ5KHMpLCAuLi5fXSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsocykgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbi8qIFRyeSB0byBjb21wbGV0ZSB0aGUgc3ludGF4IHRvIGdpdmUgYmV0dGVyIHNlbWFudGljIGZlZWJhY2suXG4gKiBUaGlzIGlzIGEgYmVzdC1lZmZvcnQgYXBwcm9hY2ggZm9jdXNzZWQgb24gYWRkaW5nIG5ldyBkZWZpbml0aW9uc1xuICogYXMgb3Bwb3NlZCB0byByZXN0cnVjdHVyaW5nOyBpdCBkb2VzIG5vdCBjb21wbGV0ZSB0aGUgc3ludGF4IGluXG4gKiBhbGwgY2FzZXMuXG4gKlxuICogTk9URTogU2V0dGluZyB0aGUgY2FyZXQgdG8gb3V0ZXIgd2FzIG5lY2Vzc2FyeSB0byAnZ2V0IGl0IHBhc3QnXG4gKiBzdHJpbmcgbGl0ZXJhbHMsIGkuZS4gb2ZmZXIgbGl2ZSBmZWViYWNrIHdoZW4gdHlwaW5nIGluc2lkZSBhXG4gKiBzdHJpbmc7IG5vdCBzdXJlIGlmIHRoaXMgaXMgYSBoYWNrIG9yIG5vdCwgaXQgbWF5IGJlIGNvbXBlbnNhdGluZ1xuICogZm9yIHRoZSBwdXRfZG93biBsb2dpYyBub3Qgd29ya2luZyByaWdodCB3aXRoIHN0cmluZyBsaXRzLiBUbyB0ZXN0LFxuICogdHJ5IHRvIGxvb2sgYXQgbGl2ZSBldmFsdWF0aW9uIHdoaWxlIHR5cGluZyBpbnNpZGUgYSBzdHJpbmcgbGl0IHdpdGhcbiAqIHN0dWZmIGxlZnQgdG8gZHJvcCBpbiBiYWNrcGFjayB3aXRoIGJlbG93IHNldDogT3V0ZXIgZGlzYWJsZWQuICovXG5sZXQgdHJ5X3RvX2R1bXBfYmFja3BhY2sgPSAoemlwcGVyOiB0KSA9PiB7XG4gIHN3aXRjaCAoemlwcGVyLmJhY2twYWNrKSB7XG4gIHwgW10gPT4gemlwcGVyXG4gIHwgXyA9PlxuICAgIGxldCB6aXBwZXIgPSB7Li4uemlwcGVyLCBjYXJldDogT3V0ZXJ9O1xuICAgIGxldCByZWMgbW92ZV91bnRpbF9jYW50X3B1dF9kb3duID0gKHpfbGFzdCwgejogdCkgPT5cbiAgICAgIGlmIChjYW5fcHV0X2Rvd24oeikgJiYgIWlzX2xpbmVicmVha190b19yaWdodF9vZl9jYXJldCh6KSkge1xuICAgICAgICBzd2l0Y2ggKG1vdmUoUmlnaHQsIHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6XG4gICAgICAgIHwgU29tZSh6X25ldykgPT4gbW92ZV91bnRpbF9jYW50X3B1dF9kb3duKHosIHpfbmV3KVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgel9sYXN0O1xuICAgICAgfTtcbiAgICBsZXQgcmVjIG1vdmVfdW50aWxfY2FuX3B1dF9kb3duID0gKHo6IHQpID0+XG4gICAgICBpZiAoIWNhbl9wdXRfZG93bih6KSkge1xuICAgICAgICBzd2l0Y2ggKG1vdmUoUmlnaHQsIHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6XG4gICAgICAgIHwgU29tZSh6X25ldykgPT4gbW92ZV91bnRpbF9jYW5fcHV0X2Rvd24oel9uZXcpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB6O1xuICAgICAgfTtcbiAgICBsZXQgcmVjIGdvID0gKHo6IHQpOiB0ID0+XG4gICAgICBpZiAoY2FuX3B1dF9kb3duKHopKSB7XG4gICAgICAgIGxldCB6X2NhbiA9IG1vdmVfdW50aWxfY2FudF9wdXRfZG93bih6LCB6KTtcbiAgICAgICAgc3dpdGNoIChwdXRfZG93bihSaWdodCwgel9jYW4pKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6X2NhblxuICAgICAgICB8IFNvbWUoeikgPT5cbiAgICAgICAgICBsZXQgeiA9IHJlZ3JvdXQoUmlnaHQsIHopO1xuICAgICAgICAgIGdvKHopO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHpfY2FuID0gbW92ZV91bnRpbF9jYW5fcHV0X2Rvd24oeik7XG4gICAgICAgIGxldCB6X2NhbiA9IG1vdmVfdW50aWxfY2FudF9wdXRfZG93bih6X2Nhbiwgel9jYW4pO1xuICAgICAgICBzd2l0Y2ggKHB1dF9kb3duKFJpZ2h0LCB6X2NhbikpIHtcbiAgICAgICAgfCBOb25lID0+IHpfY2FuXG4gICAgICAgIHwgU29tZSh6KSA9PlxuICAgICAgICAgIGxldCB6ID0gcmVncm91dChSaWdodCwgeik7XG4gICAgICAgICAgZ28oeik7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIGdvKHppcHBlcik7XG4gIH07XG59O1xuXG5sZXQgc21hcnRfc2VnID0gKH5kdW1wX2JhY2twYWNrOiBib29sLCB+ZXJhc2VfYnVmZmVyOiBib29sLCB6OiB0KSA9PiB7XG4gIGxldCB6ID0gZXJhc2VfYnVmZmVyID8gY2xlYXJfdW5wYXJzZWRfYnVmZmVyKHopIDogejtcbiAgbGV0IHogPSBkdW1wX2JhY2twYWNrID8gdHJ5X3RvX2R1bXBfYmFja3BhY2soeikgOiB6O1xuICB1bnNlbGVjdF9hbmRfemlwKH5lcmFzZV9idWZmZXIsIHopO1xufTtcblxubGV0IHNlZ19mb3JfdmlldyA9IHNtYXJ0X3NlZyh+ZXJhc2VfYnVmZmVyPWZhbHNlLCB+ZHVtcF9iYWNrcGFjaz1mYWxzZSk7XG5sZXQgc2VnX2Zvcl9zZW0gPSBzbWFydF9zZWcofmVyYXNlX2J1ZmZlcj10cnVlLCB+ZHVtcF9iYWNrcGFjaz10cnVlKTtcblxubGV0IHNlZ193aXRob3V0X2J1ZmZlciA9IHNtYXJ0X3NlZyh+ZXJhc2VfYnVmZmVyPXRydWUsIH5kdW1wX2JhY2twYWNrPWZhbHNlKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdF8oJ2EpID0gbGlzdCgoVG9rZW4udCwgJ2EpKTtcblxubGV0IGVtcHR5ID0gW107XG5cbmxldCBpc19lbXB0eSA9XG4gIGZ1blxuICB8IFtdID0+IHRydWVcbiAgfCBbXywgLi4uX10gPT4gZmFsc2U7XG5cbmxldCBleHRlbmQgPSAoY3R4LCB4YSkgPT4ge1xuICBbeGEsIC4uLmN0eF07XG59O1xuXG4vLyBUaGUgbmV3IHRoaW5ncyBzaG91bGQgZ28gdG8gdGhlIHJpZ2h0IHdoZW4gY29uY2F0ZW5hdGluZ1xubGV0IGNvbmNhdCA9IChjdHgsIG5ld19jdHgpID0+IG5ld19jdHggQCBjdHg7XG5cbmxldCBsb29rdXAgPSAoY3R4LCB4KSA9PiBMaXN0LmFzc29jX29wdCh4LCBjdHgpO1xuXG5sZXQgY29udGFpbnMgPSAoY3R4LCB4KSA9PiBMaXN0Lm1lbV9hc3NvYyh4LCBjdHgpO1xuXG5sZXQgbWFwID0gKGYsIHhzKSA9PiBMaXN0Lm1hcCgoKHgsIF8pIGFzIHhhKSA9PiAoeCwgZih4YSkpLCB4cyk7XG5cbmxldCBmaWx0ZXIgPSBMaXN0LmZpbHRlcjtcblxubGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoO1xuXG5sZXQgdG9fbGlzdCA9IGN0eCA9PiBjdHg7XG5cbmxldCBmaW5kX21hcCA9IExpc3QuZmluZF9tYXA7XG5cbmxldCByZWMgdXBkYXRlID0gKGN0eDogdF8oJ2EpLCBuYW1lOiBzdHJpbmcsIGY6ICdhID0+ICdhKTogdF8oJ2EpID0+XG4gIHN3aXRjaCAoY3R4KSB7XG4gIHwgW10gPT4gW11cbiAgfCBbKGssIHYpLCAuLi5jdHhdID0+XG4gICAgaWYgKG5hbWUgPT0gaykge1xuICAgICAgWyhrLCBmKHYpKSwgLi4uY3R4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgWyhrLCB2KSwgLi4udXBkYXRlKGN0eCwgbmFtZSwgZildO1xuICAgIH1cbiAgfTtcbiIsIm1vZHVsZSBIb2xlUmVhc29uID0ge1xuICAvKiBWYXJpYWJsZTogcmVhc29uICovXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEZyZWU7XG59O1xuXG4vKiBWYXJpYWJsZTogdmFyX2VyciAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBOb3RJblZhckhvbGVcbiAgfCBJblZhckhvbGUoSG9sZVJlYXNvbi50LCBJZC50KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHN0cmluZztcblxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsO1xuIiwib3BlbiBVdGlsLk9wdFV0aWwuU3ludGF4O1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB2YXJpYW50KCdhKSA9XG4gIHwgVmFyaWFudChDb25zdHJ1Y3Rvci50LCBsaXN0KElkLnQpLCBvcHRpb24oJ2EpKVxuICB8IEJhZEVudHJ5KCdhKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0KCdhKSA9IGxpc3QodmFyaWFudCgnYSkpO1xuXG5sZXQgZXF1YWxfY29uc3RydWN0b3IgPVxuICAgIChlcTogKCdhLCAnYSkgPT4gYm9vbCwgeDogdmFyaWFudCgnYSksIHk6IHZhcmlhbnQoJ2EpKTogYm9vbCA9PlxuICBzd2l0Y2ggKHgsIHkpIHtcbiAgfCAoVmFyaWFudChjdHIxLCBfLCBTb21lKHgxKSksIFZhcmlhbnQoY3RyMiwgXywgU29tZSh5MSkpKSA9PlxuICAgIENvbnN0cnVjdG9yLmVxdWFsKGN0cjEsIGN0cjIpICYmIGVxKHgxLCB5MSlcbiAgfCAoVmFyaWFudChjdHIxLCBfLCBOb25lKSwgVmFyaWFudChjdHIyLCBfLCBOb25lKSkgPT5cbiAgICBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKVxuICB8IChCYWRFbnRyeSh4KSwgQmFkRW50cnkoeSkpID0+IGVxKHgsIHkpXG4gIHwgKFZhcmlhbnQoXyksIFZhcmlhbnQoXykpXG4gIHwgKEJhZEVudHJ5KF8pLCBWYXJpYW50KF8pKVxuICB8IChWYXJpYW50KF8pLCBCYWRFbnRyeShfKSkgPT4gZmFsc2VcbiAgfTtcblxubGV0IHNhbWVfY29uc3RydWN0b3IgPVxuICAgIChlcTogKCdhLCAnYSkgPT4gYm9vbCwgeDogdmFyaWFudCgnYSksIHk6IHZhcmlhbnQoJ2EpKTogYm9vbCA9PlxuICBzd2l0Y2ggKHgsIHkpIHtcbiAgfCAoVmFyaWFudChjdHIxLCBfLCBfKSwgVmFyaWFudChjdHIyLCBfLCBfKSkgPT5cbiAgICBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKVxuICB8IChCYWRFbnRyeSh4KSwgQmFkRW50cnkoeSkpID0+IGVxKHgsIHkpXG4gIHwgKEJhZEVudHJ5KF8pLCBWYXJpYW50KF8pKVxuICB8IChWYXJpYW50KF8pLCBCYWRFbnRyeShfKSkgPT4gZmFsc2VcbiAgfTtcblxubGV0IGhhc19iYWRfZW50cnkgPSAoeDogdCgnYSkpOiBib29sID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgQmFkRW50cnkoXykgPT4gdHJ1ZVxuICAgIHwgVmFyaWFudChfKSA9PiBmYWxzZSxcbiAgICB4LFxuICApO1xuXG5sZXQgaGFzX2dvb2RfZW50cnkgPSAoeDogdCgnYSkpOiBib29sID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgQmFkRW50cnkoXykgPT4gZmFsc2VcbiAgICB8IFZhcmlhbnQoXykgPT4gdHJ1ZSxcbiAgICB4LFxuICApO1xuXG5sZXQgZnJlZV92YXJpYWJsZXMgPSAoZiwgbSkgPT5cbiAgbVxuICB8PiBMaXN0Lm1hcChcbiAgICAgICBmdW5cbiAgICAgICB8IFZhcmlhbnQoXywgXywgU29tZSh2YWx1ZSkpID0+IGYodmFsdWUpXG4gICAgICAgfCBfID0+IFtdLFxuICAgICApXG4gIHw+IExpc3QuZmxhdHRlbjtcblxubGV0IGlzX2dyb3VuZCA9IGlzX2hvbGUgPT5cbiAgZnVuXG4gIHwgW0JhZEVudHJ5KHgpXSB3aGVuIGlzX2hvbGUoeCkgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2U7XG5cbi8qIGNvbXB1dGVzIGFsbCB0aHJlZSByZWdpb25zIG9mIGEgdmVubiBkaWFncmFtIG9mIHR3byBzZXRzIHJlcHJlc2VudGVkIGFzIGxpc3RzICovXG5sZXQgdmVubl9yZWdpb25zID1cbiAgICAoZjogKCdhLCAnYSkgPT4gYm9vbCwgeHM6IGxpc3QoJ2EpLCB5czogbGlzdCgnYSkpXG4gICAgOiAobGlzdCgoJ2EsICdhKSksIGxpc3QoJ2EpLCBsaXN0KCdhKSkgPT4ge1xuICBsZXQgcmVjIGdvID0gKHhzLCB5cywgYWNjLCBsZWZ0LCByaWdodCkgPT5cbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiAoYWNjIHw+IExpc3QucmV2LCBsZWZ0IHw+IExpc3QucmV2LCBMaXN0LnJldl9hcHBlbmQocmlnaHQsIHlzKSlcbiAgICB8IFt4LCAuLi54c10gPT5cbiAgICAgIHN3aXRjaCAoTGlzdC5wYXJ0aXRpb24oZih4LCBfKSwgeXMpKSB7XG4gICAgICB8IChbXSwgXykgPT4gZ28oeHMsIHlzLCBhY2MsIFt4LCAuLi5sZWZ0XSwgcmlnaHQpXG4gICAgICB8IChbeV0sIHlzJykgPT4gZ28oeHMsIHlzJywgWyh4LCB5KSwgLi4uYWNjXSwgbGVmdCwgcmlnaHQpXG4gICAgICB8IF8gPT4gZmFpbHdpdGgoXCJTdW0gdHlwZSBoYXMgbm9uLXVuaXF1ZSBjb25zdHJ1Y3RvcnNcIilcbiAgICAgIH1cbiAgICB9O1xuICBnbyh4cywgeXMsIFtdLCBbXSwgW10pO1xufTtcblxubGV0IGpvaW5fZW50cnkgPVxuICAgIChqb2luOiAoJ2EsICdhKSA9PiBvcHRpb24oJ2EpLCAoeDogdmFyaWFudCgnYSksIHk6IHZhcmlhbnQoJ2EpKSlcbiAgICA6IG9wdGlvbih2YXJpYW50KCdhKSkgPT5cbiAgc3dpdGNoICh4LCB5KSB7XG4gIHwgKFZhcmlhbnQoY3RyMSwgaWRzMSwgU29tZSh2YWx1ZTEpKSwgVmFyaWFudChjdHIyLCBfLCBTb21lKHZhbHVlMikpKVxuICAgICAgd2hlbiBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKSA9PlxuICAgIGxldCsgdmFsdWUgPSBqb2luKHZhbHVlMSwgdmFsdWUyKTtcbiAgICBWYXJpYW50KGN0cjEsIGlkczEsIFNvbWUodmFsdWUpKTtcbiAgfCAoVmFyaWFudChjdHIxLCBpZHMxLCBOb25lKSwgVmFyaWFudChjdHIyLCBfLCBOb25lKSlcbiAgICAgIHdoZW4gQ29uc3RydWN0b3IuZXF1YWwoY3RyMSwgY3RyMikgPT5cbiAgICBTb21lKFZhcmlhbnQoY3RyMSwgaWRzMSwgTm9uZSkpXG4gIHwgKEJhZEVudHJ5KHgpLCBCYWRFbnRyeSh5KSkgPT5cbiAgICBsZXQrIHZhbHVlID0gam9pbih4LCB5KTtcbiAgICBCYWRFbnRyeSh2YWx1ZSk7XG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCBqb2luID1cbiAgICAoXG4gICAgICBlcTogKCdhLCAnYSkgPT4gYm9vbCxcbiAgICAgIGpvaW46ICgnYSwgJ2EpID0+IG9wdGlvbignYSksXG4gICAgICBtMTogdCgnYSksXG4gICAgICBtMjogdCgnYSksXG4gICAgKVxuICAgIDogb3B0aW9uKHQoJ2EpKSA9PiB7XG4gIGxldCAoaW50ZXIsIGxlZnQsIHJpZ2h0KSA9IHZlbm5fcmVnaW9ucyhzYW1lX2NvbnN0cnVjdG9yKGVxKSwgbTEsIG0yKTtcbiAgbGV0IGpvaW5fZW50cmllcyA9IExpc3QuZmlsdGVyX21hcChqb2luX2VudHJ5KGpvaW4pLCBpbnRlcik7XG4gIGlmIChMaXN0Lmxlbmd0aChqb2luX2VudHJpZXMpID09IExpc3QubGVuZ3RoKGludGVyKSkge1xuICAgIHN3aXRjaCAoXG4gICAgICBoYXNfZ29vZF9lbnRyeShsZWZ0KSxcbiAgICAgIGhhc19iYWRfZW50cnkobTEpLFxuICAgICAgaGFzX2dvb2RfZW50cnkocmlnaHQpLFxuICAgICAgaGFzX2JhZF9lbnRyeShtMiksXG4gICAgKSB7XG4gICAgfCAoXywgdHJ1ZSwgXywgdHJ1ZSkgPT4gU29tZShqb2luX2VudHJpZXMgQCBsZWZ0IEAgcmlnaHQpXG4gICAgfCAoZmFsc2UsIHRydWUsIF8sIF8pID0+IFNvbWUoam9pbl9lbnRyaWVzIEAgcmlnaHQpXG4gICAgfCAoXywgXywgZmFsc2UsIHRydWUpID0+IFNvbWUoam9pbl9lbnRyaWVzIEAgbGVmdClcbiAgICB8IF8gd2hlbiBsZWZ0ID09IFtdICYmIHJpZ2h0ID09IFtdID0+IFNvbWUoam9pbl9lbnRyaWVzKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBOb25lO1xuICB9O1xufTtcblxubGV0IG1hdGNoX3N5bnN3aXRjaCA9XG4gICAgKG1hdGNoX3N5bnN3aXRjaDogKCdhLCAnYSkgPT4gJ2EsIG0xOiB0KCdhKSwgbTI6IHQoJ2EpKTogdCgnYSkgPT4ge1xuICBMaXN0Lm1hcChcbiAgICBmdW5cbiAgICB8IChWYXJpYW50KGN0ciwgaWRzLCBTb21lKHZhbHVlMSkpLCBWYXJpYW50KF8sIF8sIFNvbWUodmFsdWUyKSkpID0+XG4gICAgICBWYXJpYW50KGN0ciwgaWRzLCBTb21lKG1hdGNoX3N5bnN3aXRjaCh2YWx1ZTEsIHZhbHVlMikpKVxuICAgIHwgKHYsIF8pID0+IHYsXG4gICAgTGlzdC5jb21iaW5lKG0xLCBtMiksXG4gICk7XG59O1xuXG5sZXQgZXF1YWwgPSAoZXE6ICgnYSwgJ2EpID0+IGJvb2wsIG0xOiB0KCdhKSwgbTI6IHQoJ2EpKSA9PiB7XG4gIHN3aXRjaCAodmVubl9yZWdpb25zKHNhbWVfY29uc3RydWN0b3IoZXEpLCBtMSwgbTIpKSB7XG4gIHwgKGludGVyLCBbXSwgW10pID0+XG4gICAgTGlzdC5mb3JfYWxsKFxuICAgICAgKCh4LCB5KSkgPT5cbiAgICAgICAgc3dpdGNoICh4LCB5KSB7XG4gICAgICAgIHwgKFZhcmlhbnQoXywgXywgU29tZSh2YWx1ZTEpKSwgVmFyaWFudChfLCBfLCBTb21lKHZhbHVlMikpKSA9PlxuICAgICAgICAgIGVxKHZhbHVlMSwgdmFsdWUyKVxuICAgICAgICB8IChWYXJpYW50KF8sIF8sIE5vbmUpLCBWYXJpYW50KF8sIF8sIE5vbmUpKSA9PiB0cnVlXG4gICAgICAgIHwgKEJhZEVudHJ5KHgpLCBCYWRFbnRyeSh5KSkgPT4gZXEoeCwgeSlcbiAgICAgICAgfCBfID0+IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICBpbnRlcixcbiAgICApXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xufTtcblxubGV0IG1hcCA9IChmOiBvcHRpb24oJ2EpID0+IG9wdGlvbignYiksIG06IHQoJ2EpKTogdCgnYikgPT4ge1xuICBMaXN0Lm1hcChcbiAgICBmdW5cbiAgICB8IFZhcmlhbnQoY3RyLCBhcmdzLCB2YWx1ZSkgPT4gVmFyaWFudChjdHIsIGFyZ3MsIGYodmFsdWUpKVxuICAgIHwgQmFkRW50cnkodmFsdWUpID0+IEJhZEVudHJ5KHZhbHVlKSxcbiAgICBtLFxuICApO1xufTtcblxubGV0IGdldF9lbnRyeSA9IChjdHIsIG0pID0+XG4gIExpc3QuZmluZF9tYXAoXG4gICAgZnVuXG4gICAgfCBWYXJpYW50KGN0cicsIF8sIHZhbHVlKSB3aGVuIENvbnN0cnVjdG9yLmVxdWFsKGN0ciwgY3RyJykgPT4gdmFsdWVcbiAgICB8IFZhcmlhbnQoXylcbiAgICB8IEJhZEVudHJ5KF8pID0+IE5vbmUsXG4gICAgbSxcbiAgKTtcblxubGV0IGhhc19jb25zdHJ1Y3Rvcl9ub19hcmdzID0gY3RyID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgVmFyaWFudChjdHInLCBfLCBOb25lKSB3aGVuIENvbnN0cnVjdG9yLmVxdWFsKGN0ciwgY3RyJykgPT4gdHJ1ZVxuICAgIHwgVmFyaWFudChfKSA9PiBmYWxzZVxuICAgIHwgQmFkRW50cnkoXykgPT4gZmFsc2UsXG4gICk7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9XG4gIHwgU3RlcFxuICB8IEV2YWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY291bnQgPVxuICB8IE9uZVxuICB8IEFsbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gKGFjdGlvbiwgY291bnQpO1xuXG5sZXQgc3RyaW5nX29mX3QgPSB2ID0+IHtcbiAgc3dpdGNoICh2KSB7XG4gIHwgKFN0ZXAsIE9uZSkgPT4gXCJwYXVzZVwiXG4gIHwgKFN0ZXAsIEFsbCkgPT4gXCJkZWJ1Z1wiXG4gIHwgKEV2YWwsIE9uZSkgPT4gXCJoaWRlXCJcbiAgfCAoRXZhbCwgQWxsKSA9PiBcImV2YWxcIlxuICB9O1xufTtcbiIsImluY2x1ZGUgU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnYSkgPSB7XG4gIFtAc2hvdy5vcGFxdWVdXG4gIGlkczogbGlzdChJZC50KSxcbiAgLyogVUV4cCBpbnZhcmlhbnQ6IGNvcGllZCBzaG91bGQgYWx3YXlzIGJlIGZhbHNlLCBhbmQgdGhlIGlkIHNob3VsZCBiZSB1bmlxdWVcbiAgICAgREhFeHAgaW52YXJpYW50OiBpZiBjb3BpZWQgaXMgdHJ1ZSwgdGhlbiB0aGlzIHRlcm0gYW5kIGl0cyBjaGlsZHJlbiBtYXkgbm90XG4gICAgIGhhdmUgdW5pcXVlIGlkcy4gKi9cbiAgW0BzaG93Lm9wYXF1ZV1cbiAgY29waWVkOiBib29sLFxuICB0ZXJtOiAnYSxcbn07XG5cbmxldCBmcmVzaCA9IHRlcm0gPT4ge1xuICB7aWRzOiBbSWQubWsoKV0sIGNvcGllZDogZmFsc2UsIHRlcm19O1xufTtcblxubGV0IHRlcm1fb2YgPSB4ID0+IHgudGVybTtcbmxldCB1bndyYXAgPSB4ID0+ICh4LnRlcm0sIHRlcm0nID0+IHsuLi54LCB0ZXJtOiB0ZXJtJ30pO1xubGV0IHJlcF9pZCA9ICh7aWRzLCBffSkgPT4gTGlzdC5oZChpZHMpO1xubGV0IGZhc3RfY29weSA9IChpZCwge3Rlcm0sIF99KSA9PiB7aWRzOiBbaWRdLCB0ZXJtLCBjb3BpZWQ6IHRydWV9O1xubGV0IG5ld19pZHMgPVxuICBmdW5cbiAgfCB7aWRzOiBfLCB0ZXJtLCBjb3BpZWR9ID0+IHtpZHM6IFtJZC5taygpXSwgdGVybSwgY29waWVkfTtcblxuLy8gbGV0IHNlcmlhbGl6YXRpb24gPSAoZjEsIGYyKSA9PlxuLy8gICBTdHJ1Y3R1cmVTaGFyZVNleHAuc3RydWN0dXJlX3NoYXJlX2hlcmUoXG4vLyAgICAgcmVwX2lkLFxuLy8gICAgIHNleHBfb2ZfdChmMSksXG4vLyAgICAgdF9vZl9zZXhwKGYyKSxcbi8vICAgKTtcblxuLy8gbGV0IHNleHBfb2ZfdCA9IGYxID0+IHNlcmlhbGl6YXRpb24oZjEsIE9iai5tYWdpYygpKSB8PiBmc3Q7XG4vLyBsZXQgdF9vZl9zZXhwID0gZjIgPT4gc2VyaWFsaXphdGlvbihPYmoubWFnaWMoKSwgZjIpIHw+IHNuZDtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgSW52YWxpZE9mU3RyaW5nXG4gIHwgSW5kZXhPdXRPZkJvdW5kc1xuICB8IERpdmlkZUJ5WmVyb1xuICB8IE5lZ2F0aXZlRXhwb25lbnRcbiAgfCBPdXRPZkZ1ZWw7XG5cbmxldCBlcnJfbXNnID0gKGVycjogdCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKGVycikge1xuICB8IEludmFsaWRPZlN0cmluZyA9PiBcIkVycm9yOiBJbnZhbGlkIFN0cmluZyBDb252ZXJzaW9uXCJcbiAgfCBJbmRleE91dE9mQm91bmRzID0+IFwiRXJyb3I6IEluZGV4IE91dCBvZiBCb3VuZHNcIlxuICB8IERpdmlkZUJ5WmVybyA9PiBcIkVycm9yOiBEaXZpZGUgYnkgWmVyb1wiXG4gIHwgTmVnYXRpdmVFeHBvbmVudCA9PiBcIkVycm9yOiBOZWdhdGl2ZSBFeHBvbmVudCBpbiBJbnRlZ2VyIEV4cG9uZW50aWF0aW9uIChDb25zaWRlciB1c2luZyAqKi4pXCJcbiAgfCBPdXRPZkZ1ZWwgPT4gXCJFcnJvcjogT3V0IG9mIEZ1ZWxcIlxuICB9O1xuIiwiLypcbiAgICAgVGhpcyBtb2R1bGUgYWRkcyBoZWxwZXJzIGZvciBjcmVhdGluZyBzLWV4cHJlc3Npb25zIHRoYXQgdXNlIHNvbWUgc3RydWN0dXJhbCBzaGFyaW5nXG4gICAgIChodHRwczovL3d3dy5vY2FtbHdpa2kuY29tL3dpa2kvU3RydWN0dXJhbF9zaGFyaW5nKSBpbnN0ZWFkIG9mIGNvcHlpbmcgYWxsIGluc3RhbmNlc1xuICAgICBvZiB0aGUgc2FtZSByZWNvcmQuXG4gKi9cblxubGV0IHN0cnVjdHVyZV9zaGFyZV9tYXA6IHJlZihvcHRpb24oSWQuTWFwLnQoU2V4cGxpYi5TZXhwLnQpKSkgPSByZWYoTm9uZSk7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgc3RydWN0dXJlX3NoYXJlZCA9IChTZXhwbGliLlNleHAudCwgSWQuTWFwLnQoU2V4cGxpYi5TZXhwLnQpKTtcblxuLy8gVG8gYmUgdXNlZCBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgd2hlcmUgdGhlIHN0cnVjdHVyZSBzaGFyaW5nIHRha2VzIHBsYWNlXG5sZXQgc3RydWN0dXJlX3NoYXJlX2hlcmUgPVxuICAgIChcbiAgICAgIGtleV9mOiAnYSA9PiBJZC50LFxuICAgICAgc2V4cF9vZl90OiAnYSA9PiBTZXhwbGliLlNleHAudCxcbiAgICAgIHRfb2Zfc2V4cDogU2V4cGxpYi5TZXhwLnQgPT4gJ2EsXG4gICAgKVxuICAgIDogKCdhID0+IFNleHBsaWIuU2V4cC50LCBTZXhwbGliLlNleHAudCA9PiAnYSkgPT4ge1xuICBsZXQgc2V4cF9vZl90JyA9ICh0aGluZzogJ2EpOiBTZXhwbGliLlNleHAudCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgU29tZShtKSA9PlxuICAgICAgbGV0IHNleHAgPSBzZXhwX29mX3QodGhpbmcpO1xuICAgICAgbGV0IGtleSA9IGtleV9mKHRoaW5nKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gU29tZShJZC5NYXAudXBkYXRlKGtleSwgXyA9PiBTb21lKHNleHApLCBtKSk7XG4gICAgICBJZC5zZXhwX29mX3Qoa2V5KTtcbiAgICB8IE5vbmUgPT4gc2V4cF9vZl90KHRoaW5nKVxuICAgIH07XG4gIH07XG4gIGxldCB0X29mX3NleHAnID0gc2V4cCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgU29tZShtKSA9PlxuICAgICAgbGV0IGlkID0gSWQudF9vZl9zZXhwKHNleHApO1xuICAgICAgbGV0IHRoaW5nX3MgPVxuICAgICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbSkpIHtcbiAgICAgICAgfCBTb21lKHQpID0+IHRcbiAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoKFwic3RydWN0dXJlLXNoYXJpbmcgZGVzZXJpYWxpemF0aW9uIGZhaWxlZFwiKVxuICAgICAgICB9O1xuICAgICAgdF9vZl9zZXhwKHRoaW5nX3MpO1xuICAgIHwgTm9uZSA9PiB0X29mX3NleHAoc2V4cClcbiAgICB9O1xuICB9O1xuICAoc2V4cF9vZl90JywgdF9vZl9zZXhwJyk7XG59O1xuXG4vLyBUbyBiZSB1c2VkIG9uIHRoZSByb290IG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBjdXJyZW50bHkgYmVpbmcgc2VyaWFsaXplZFxubGV0IHN0cnVjdHVyZV9zaGFyZV9pbiA9IChzZXhwX29mX3QsIHRfb2Zfc2V4cCkgPT4ge1xuICBsZXQgc2V4cF9vZl90JyA9ICh0aGluZzogJ2EpOiBTZXhwbGliLlNleHAudCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgTm9uZSA9PlxuICAgICAgc3RydWN0dXJlX3NoYXJlX21hcCA6PSBTb21lKElkLk1hcC5lbXB0eSk7XG4gICAgICBsZXQgc2V4cCA9IHNleHBfb2ZfdCh0aGluZyk7XG4gICAgICBsZXQgcmVzdWx0OiBzdHJ1Y3R1cmVfc2hhcmVkID0gKFxuICAgICAgICBzZXhwLFxuICAgICAgICBzdHJ1Y3R1cmVfc2hhcmVfbWFwXiB8PiBPcHRpb24uZ2V0LFxuICAgICAgKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gTm9uZTtcbiAgICAgIHNleHBfb2Zfc3RydWN0dXJlX3NoYXJlZChyZXN1bHQpO1xuICAgIHwgU29tZShfKSA9PiBzZXhwX29mX3QodGhpbmcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUbyBiZSB1c2VkIG9ubHkgb24gdGhlIHJvb3Qgb2YgdGhlIGRhdGEgc3RydWN0dXJlIGN1cnJlbnRseSBiZWluZyBzZXJpYWxpemVkXG4gIGxldCB0X29mX3NleHAnID0gKHNleHA6IFNleHBsaWIuU2V4cC50KTogJ2EgPT4ge1xuICAgIHN3aXRjaCAoc3RydWN0dXJlX3NoYXJlX21hcF4pIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCAoc2V4cCwgbWFwKSA9IHN0cnVjdHVyZV9zaGFyZWRfb2Zfc2V4cChzZXhwKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gU29tZShtYXApO1xuICAgICAgbGV0IHRoaW5nID0gdF9vZl9zZXhwKHNleHApO1xuICAgICAgc3RydWN0dXJlX3NoYXJlX21hcCA6PSBOb25lO1xuICAgICAgdGhpbmc7XG4gICAgfCBTb21lKF8pID0+IHRfb2Zfc2V4cChzZXhwKVxuICAgIH07XG4gIH07XG4gIChzZXhwX29mX3QnLCB0X29mX3NleHAnKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBzdHJpbmc7XG5cbmxldCBlcSA9IFN0cmluZy5lcXVhbDtcblxubGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGg7XG5cbmxldCB2YWxpZF9yZWdleCA9XG4gIFJlLlN0ci5yZWdleHAoXCJeXFxcXChbYS16QS1aXVxcXFx8X1tfYS16QS1aMC05XVxcXFwpW19hLXpBLVowLTknXSokXCIpO1xubGV0IGlzX3ZhbGlkID0gcyA9PiBSZS5TdHIuc3RyaW5nX21hdGNoKHZhbGlkX3JlZ2V4LCBzLCAwKTtcblxuLyogaGVscGVyIGZ1bmN0aW9uIGZvciBndWFyZGluZyBvcHRpb25zIHdpdGggaXNfdmFsaWQgKi9cbmxldCBjaGVja192YWxpZCA9IChzLCByZXN1bHQpID0+XG4gIGlmIChpc192YWxpZChzKSkge1xuICAgIHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICBOb25lO1xuICB9O1xuXG5sZXQgaXNfdHJ1ZSA9IGVxKFwidHJ1ZVwiKTtcblxubGV0IGlzX2ZhbHNlID0gZXEoXCJmYWxzZVwiKTtcblxubGV0IGlzX2xldCA9IGVxKFwibGV0XCIpO1xuXG5sZXQgaXNfZnVuID0gZXEoXCJmdW5cIik7XG5cbmxldCBpc19jYXNlID0gZXEoXCJjYXNlXCIpO1xuXG5sZXQgaXNfd2lsZCA9IGVxKFwiX1wiKTtcblxubGV0IHNwbGl0ID0gKHBvcywgbmFtZSkgPT4ge1xuICBsZXQgbGVmdF92YXIgPSBTdHJpbmcuc3ViKG5hbWUsIDAsIHBvcyk7XG4gIGxldCByaWdodF92YXIgPSBTdHJpbmcuc3ViKG5hbWUsIHBvcywgU3RyaW5nLmxlbmd0aChuYW1lKSAtIHBvcyk7XG4gIChsZWZ0X3ZhciwgcmlnaHRfdmFyKTtcbn07XG5cbi8qIFVzZWQgZm9yIFZhckJzdE1hcCAqL1xubGV0IGNvbXBhcmUgPSAoeDogdCwgeTogdCkgPT4gY29tcGFyZSh4LCB5KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5tb2R1bGUgU2V4cCA9IFNleHBsaWIuU2V4cDtcblxubW9kdWxlIElubmVyID0ge1xuICBpbmNsdWRlIE1hcC5NYWtlKFZhcik7XG5cbiAgLyogU2VlIEludE1hcCAqL1xuICBbQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxuICB0eXBlIGJpbmRpbmcoJ3YpID0gKFZhci50LCAndik7XG5cbiAgbGV0IHBwID0gKHBwX3YsIGYsIG1hcCkgPT5cbiAgICBpdGVyKChrLCB2KSA9PiBGb3JtYXQuZnByaW50ZihmLCBcIiVzIC0+ICVhQFxcblwiLCBrLCBwcF92LCB2KSwgbWFwKTtcblxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdjogJ3YgPT4gU2V4cC50LCBtYXA6IHQoJ3YpKTogU2V4cC50ID0+XG4gICAgbWFwIHw+IGJpbmRpbmdzIHw+IHNleHBfb2ZfbGlzdChzZXhwX29mX2JpbmRpbmcoc2V4cF9vZl92KSk7XG4gIGxldCB0X29mX3NleHAgPSAodl9vZl9zZXhwOiBTZXhwLnQgPT4gJ3YsIHNleHA6IFNleHAudCk6IHQoJ3YpID0+XG4gICAgc2V4cCB8PiBsaXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpIHw+IExpc3QudG9fc2VxIHw+IG9mX3NlcTtcblxuICBsZXQgeW9qc29uX29mX3QgPVxuICAgICAgKHlvanNvbl9vZl92OiAndiA9PiBZb2pzb24uU2FmZS50LCBtYXA6IHQoJ3YpKTogWW9qc29uLlNhZmUudCA9PlxuICAgIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuICBsZXQgdF9vZl95b2pzb24gPVxuICAgICAgKHZfb2ZfeW9qc29uOiBZb2pzb24uU2FmZS50ID0+ICd2LCB5b2pzb246IFlvanNvbi5TYWZlLnQpOiB0KCd2KSA9PlxuICAgIHlvanNvblxuICAgIHw+IGxpc3Rfb2ZfeW9qc29uKGJpbmRpbmdfb2ZfeW9qc29uKHZfb2ZfeW9qc29uKSlcbiAgICB8PiBMaXN0LnRvX3NlcVxuICAgIHw+IG9mX3NlcTtcbn07XG5cbm1vZHVsZSBWYXJCc3RNYXAwID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdF8oJ2EpID0gSW5uZXIudCgnYSk7XG5cbiAgbGV0IGVtcHR5ID0gSW5uZXIuZW1wdHk7XG5cbiAgbGV0IGlzX2VtcHR5ID0gSW5uZXIuaXNfZW1wdHk7XG5cbiAgbGV0IHNpbmdsZXRvbiA9ICgoeCwgYSkpID0+IElubmVyLnNpbmdsZXRvbih4LCBhKTtcblxuICBsZXQgZXh0ZW5kID0gKGN0eCwgKHgsIGEpKSA9PiBJbm5lci5hZGQoeCwgYSwgY3R4KTtcblxuICBsZXQgdXBkYXRlID0gKGN0eCwgZiwgeCkgPT4gSW5uZXIudXBkYXRlKHgsIGYsIGN0eCk7XG5cbiAgbGV0IHVuaW9uID0gKGN0eDEsIGN0eDIpID0+XG4gICAgSW5uZXIudW5pb24oKF94LCBhLCBfYScpID0+IFNvbWUoYSksIGN0eDEsIGN0eDIpO1xuXG4gIGxldCBsb29rdXAgPSAoY3R4LCB4KSA9PiBJbm5lci5maW5kX29wdCh4LCBjdHgpO1xuXG4gIGxldCBjb250YWlucyA9IChjdHgsIHgpID0+IElubmVyLm1lbSh4LCBjdHgpO1xuXG4gIGxldCBtYXAgPSBmID0+IElubmVyLm1hcGkoKHgsIGEpID0+IGYoKHgsIGEpKSk7XG5cbiAgbGV0IGZpbHRlciA9IGYgPT4gSW5uZXIuZmlsdGVyKCh4LCBhKSA9PiBmKCh4LCBhKSkpO1xuXG4gIGxldCBmb2xkID0gKGYsIGluaXQsIGN0eCkgPT5cbiAgICBJbm5lci5mb2xkKCh4LCBhLCBhY2MpID0+IGYoKHgsIGEpLCBhY2MpLCBjdHgsIGluaXQpO1xuXG4gIGxldCBsZW5ndGggPSBJbm5lci5jYXJkaW5hbDtcblxuICBsZXQgdG9fbGlzdCA9IGN0eCA9PiBjdHggfD4gSW5uZXIudG9fc2VxIHw+IExpc3Qub2Zfc2VxO1xuXG4gIGxldCBvZl9saXN0ID0gYmluZGluZ3MgPT4gYmluZGluZ3MgfD4gTGlzdC50b19zZXEgfD4gSW5uZXIub2Zfc2VxO1xufTtcblxubW9kdWxlIE9yZGVyZWQgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0XygnYSkgPSB7XG4gICAgbWFwOiBWYXJCc3RNYXAwLnRfKCdhKSxcbiAgICAvKiogVGhlIHJldmVyc2UgaW5zZXJ0aW9uIG9yZGVyIG9mIGJpbmRpbmdzIChkZW5vdGVkIGJ5IGtleSkuICovXG4gICAgcmV2X29yZGVyOiBsaXN0KChWYXIudCwgdW5pdCkpLFxuICB9O1xuXG4gIGxldCBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50ID0gKCkgPT5cbiAgICBmYWlsd2l0aChcIlZhckJzdE1hcC5PcmRlcmVkOiBvcmRlciBrZXkgbm90IGluIG1hcFwiKTtcblxuICBsZXQgZW1wdHkgPSB7bWFwOiBWYXJCc3RNYXAwLmVtcHR5LCByZXZfb3JkZXI6IFtdfTtcblxuICBsZXQgaXNfZW1wdHkgPSAoe21hcCwgX30pID0+IFZhckJzdE1hcDAuaXNfZW1wdHkobWFwKTtcblxuICBsZXQgc2luZ2xldG9uID0gKCh4LCBhKSkgPT4ge1xuICAgIHttYXA6IFZhckJzdE1hcDAuc2luZ2xldG9uKCh4LCBhKSksIHJldl9vcmRlcjogWyh4LCAoKSldfTtcbiAgfTtcblxuICBsZXQgZXh0ZW5kID0gKHttYXAsIHJldl9vcmRlcn0sICh4LCBhKSkgPT4ge1xuICAgIG1hcDogVmFyQnN0TWFwMC5leHRlbmQobWFwLCAoeCwgYSkpLFxuICAgIHJldl9vcmRlcjogWyh4LCAoKSksIC4uLkxpc3QucmVtb3ZlX2Fzc29jKHgsIHJldl9vcmRlcildLFxuICB9O1xuXG4gIGxldCB1bmlvbiA9XG4gICAgICAoXG4gICAgICAgIHttYXA6IG1hcDEsIHJldl9vcmRlcjogcmV2X29yZGVyMX0sXG4gICAgICAgIHttYXA6IG1hcDIsIHJldl9vcmRlcjogcmV2X29yZGVyMn0sXG4gICAgICApID0+IHtcbiAgICBsZXQgcmVjIHVuaW9uX29yZGVyID0gKG9yZGVyMSwgcmV2X29yZGVyMikgPT5cbiAgICAgIHN3aXRjaCAob3JkZXIxLCByZXZfb3JkZXIyKSB7XG4gICAgICB8IChbXSwgb3JkZXIyKSA9PiBvcmRlcjJcbiAgICAgIHwgKFsoeCwgKCkpLCAuLi5yZXZfb3JkZXIxJ10sIG9yZGVyMikgPT5cbiAgICAgICAgbGV0IHJldl9vcmRlcjInID0gWyh4LCAoKSksIC4uLkxpc3QucmVtb3ZlX2Fzc29jKHgsIG9yZGVyMildO1xuICAgICAgICB1bmlvbl9vcmRlcihyZXZfb3JkZXIxJywgcmV2X29yZGVyMicpO1xuICAgICAgfTtcblxuICAgIGxldCBtYXAgPSBWYXJCc3RNYXAwLnVuaW9uKG1hcDEsIG1hcDIpO1xuICAgIGxldCByZXZfb3JkZXIgPSB1bmlvbl9vcmRlcihMaXN0LnJldihyZXZfb3JkZXIxKSwgcmV2X29yZGVyMik7XG4gICAge21hcCwgcmV2X29yZGVyfTtcbiAgfTtcblxuICBsZXQgbG9va3VwID0gKHttYXAsIF99LCB4KSA9PiBWYXJCc3RNYXAwLmxvb2t1cChtYXAsIHgpO1xuXG4gIGxldCBjb250YWlucyA9ICh7bWFwLCBffSwgeCkgPT4gVmFyQnN0TWFwMC5jb250YWlucyhtYXAsIHgpO1xuXG4gIGxldCBtYXBrID0gKGYsIHttYXAsIHJldl9vcmRlcn0pID0+IHtcbiAgICBsZXQgbWFwID0gbWFwIHw+IFZhckJzdE1hcDAubWFwKGYpO1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IG1hcG8gPSAoZiwge21hcCwgcmV2X29yZGVyfSkgPT4ge1xuICAgIGxldCBtYXAgPVxuICAgICAgcmV2X29yZGVyXG4gICAgICB8PiBMaXN0LnJldlxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgIChtYXAnLCAoeCwgKCkpKSA9PlxuICAgICAgICAgICAgIHN3aXRjaCAoVmFyQnN0TWFwMC5sb29rdXAobWFwLCB4KSkge1xuICAgICAgICAgICAgIHwgU29tZShhKSA9PlxuICAgICAgICAgICAgICAgbGV0IGEgPSBmKCh4LCBhKSk7XG4gICAgICAgICAgICAgICBWYXJCc3RNYXAwLmV4dGVuZChtYXAnLCAoeCwgYSkpO1xuICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KClcbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICBWYXJCc3RNYXAwLmVtcHR5LFxuICAgICAgICAgKTtcbiAgICB7bWFwLCByZXZfb3JkZXJ9O1xuICB9O1xuXG4gIGxldCBmaWx0ZXJrID0gKGYsIHttYXAsIHJldl9vcmRlcn0pID0+IHtcbiAgICBsZXQgbWFwID0gVmFyQnN0TWFwMC5maWx0ZXIoZiwgbWFwKTtcbiAgICBsZXQgcmV2X29yZGVyID1cbiAgICAgIHJldl9vcmRlclxuICAgICAgfD4gTGlzdC5yZXZcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoeCwgXykpID0+IFZhckJzdE1hcDAuY29udGFpbnMobWFwLCB4KSlcbiAgICAgIHw+IExpc3QucmV2O1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IGZpbHRlcm8gPSAoZiwge21hcCwgcmV2X29yZGVyfSkgPT4ge1xuICAgIGxldCAobWFwLCByZXZfb3JkZXIpID1cbiAgICAgIHJldl9vcmRlclxuICAgICAgfD4gTGlzdC5yZXZcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoKG1hcCcsIHJldl9vcmRlcicpLCAoeCwgKCkpKSA9PiB7XG4gICAgICAgICAgICAgbGV0IHJldl9vcmRlcicgPSByZWYocmV2X29yZGVyJyk7XG4gICAgICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICAgICBWYXJCc3RNYXAwLnVwZGF0ZShcbiAgICAgICAgICAgICAgICAgbWFwJyxcbiAgICAgICAgICAgICAgICAgZnVuXG4gICAgICAgICAgICAgICAgIHwgU29tZShhKSB3aGVuICFmKCh4LCBhKSkgPT4gTm9uZVxuICAgICAgICAgICAgICAgICB8IFNvbWUoYSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgcmV2X29yZGVyJyA6PSBbKHgsICgpKSwgLi4ucmV2X29yZGVyJ15dO1xuICAgICAgICAgICAgICAgICAgICAgU29tZShhKTtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KCksXG4gICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgIChtYXAsIHJldl9vcmRlcideKTtcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgKG1hcCwgW10pLFxuICAgICAgICAgKTtcblxuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IGZvbGRrID0gKGYsIGluaXQsIHttYXAsIF99KSA9PlxuICAgIFZhckJzdE1hcDAuZm9sZCgoKHgsIGEpLCBhY2MpID0+IGYoKHgsIGEpLCBhY2MpLCBpbml0LCBtYXApO1xuXG4gIGxldCBmb2xkbyA9IChmLCBpbml0LCB7bWFwLCByZXZfb3JkZXJ9KSA9PlxuICAgIHJldl9vcmRlclxuICAgIHw+IExpc3QucmV2XG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCAoeCwgKCkpKSA9PlxuICAgICAgICAgICBzd2l0Y2ggKFZhckJzdE1hcDAubG9va3VwKG1hcCwgeCkpIHtcbiAgICAgICAgICAgfCBTb21lKGEpID0+IGYoKHgsIGEpLCBhY2MpXG4gICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KClcbiAgICAgICAgICAgfSxcbiAgICAgICAgIGluaXQsXG4gICAgICAgKTtcblxuICBsZXQgbGVuZ3RoID0gKHtyZXZfb3JkZXIsIF99KSA9PiBMaXN0Lmxlbmd0aChyZXZfb3JkZXIpO1xuXG4gIGxldCB0b19saXN0ayA9ICh7bWFwLCBffSkgPT4gVmFyQnN0TWFwMC50b19saXN0KG1hcCk7XG5cbiAgbGV0IHRvX2xpc3RvID0gKHttYXAsIHJldl9vcmRlcn0pID0+XG4gICAgcmV2X29yZGVyXG4gICAgfD4gTGlzdC5yZXZcbiAgICB8PiBMaXN0Lm1hcCgoKHgsICgpKSkgPT5cbiAgICAgICAgIHN3aXRjaCAoVmFyQnN0TWFwMC5sb29rdXAobWFwLCB4KSkge1xuICAgICAgICAgfCBTb21lKGEpID0+ICh4LCBhKVxuICAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoX2tleXNpbmNvbnNpc3RlbnQoKVxuICAgICAgICAgfVxuICAgICAgICk7XG5cbiAgbGV0IG9mX2xpc3QgPSBiaW5kaW5ncyA9PiB7XG4gICAgbGV0IG1hcCA9IFZhckJzdE1hcDAub2ZfbGlzdChiaW5kaW5ncyk7XG4gICAgbGV0IHJldl9vcmRlciA9IGJpbmRpbmdzIHw+IExpc3QubWFwKCgoeCwgXykpID0+ICh4LCAoKSkpIHw+IExpc3QucmV2O1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IHdpdGhvdXRfa2V5cyA9IChrZXlzLCBtKSA9PiB7XG4gICAgZmlsdGVyaygoKHMsIF8pKSA9PiAhTGlzdC5leGlzdHMoeCA9PiB4ID09IHMsIGtleXMpLCBtKTtcbiAgfTtcbn07XG5cbmluY2x1ZGUgVmFyQnN0TWFwMDtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbmxldCBjb250aW51ZSA9IHggPT4geDtcbmxldCBzdG9wID0gKF8sIHgpID0+IHg7XG5cbi8qIFRPRE9bTWF0dF06IEV4cGxhaW4gbWFwX3Rlcm0gKi9cblxubW9kdWxlIHJlYyBBbnk6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRXhwKEV4cC50KVxuICAgIHwgUGF0KFBhdC50KVxuICAgIHwgVHlwKFR5cC50KVxuICAgIHwgVFBhdChUUGF0LnQpXG4gICAgfCBSdWwoUnVsLnQpXG4gICAgfCBOdWwodW5pdClcbiAgICB8IEFueSh1bml0KTtcblxuICBsZXQgbWFwX3Rlcm06XG4gICAgKFxuICAgICAgfmZfZXhwOiAoRXhwLnQgPT4gRXhwLnQsIEV4cC50KSA9PiBFeHAudD0/LFxuICAgICAgfmZfcGF0OiAoUGF0LnQgPT4gUGF0LnQsIFBhdC50KSA9PiBQYXQudD0/LFxuICAgICAgfmZfdHlwOiAoVHlwLnQgPT4gVHlwLnQsIFR5cC50KSA9PiBUeXAudD0/LFxuICAgICAgfmZfdHBhdDogKFRQYXQudCA9PiBUUGF0LnQsIFRQYXQudCkgPT4gVFBhdC50PT8sXG4gICAgICB+Zl9ydWw6IChSdWwudCA9PiBSdWwudCwgUnVsLnQpID0+IFJ1bC50PT8sXG4gICAgICB+Zl9hbnk6IChBbnkudCA9PiBBbnkudCwgQW55LnQpID0+IEFueS50PT8sXG4gICAgICB0XG4gICAgKSA9PlxuICAgIHQ7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRXhwKEV4cC50KVxuICAgIHwgUGF0KFBhdC50KVxuICAgIHwgVHlwKFR5cC50KVxuICAgIHwgVFBhdChUUGF0LnQpXG4gICAgfCBSdWwoUnVsLnQpXG4gICAgfCBOdWwodW5pdClcbiAgICB8IEFueSh1bml0KTtcblxuICBsZXQgbWFwX3Rlcm0gPVxuICAgICAgKFxuICAgICAgICB+Zl9leHA9Y29udGludWUsXG4gICAgICAgIH5mX3BhdD1jb250aW51ZSxcbiAgICAgICAgfmZfdHlwPWNvbnRpbnVlLFxuICAgICAgICB+Zl90cGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl9ydWw9Y29udGludWUsXG4gICAgICAgIH5mX2FueT1jb250aW51ZSxcbiAgICAgICAgeCxcbiAgICAgICkgPT4ge1xuICAgIGxldCByZWNfY2FsbCA9IHkgPT5cbiAgICAgIHN3aXRjaCAoeSkge1xuICAgICAgfCBFeHAoeCkgPT5cbiAgICAgICAgRXhwKEV4cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSwgeCkpXG4gICAgICB8IFBhdCh4KSA9PlxuICAgICAgICBQYXQoUGF0Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55LCB4KSlcbiAgICAgIHwgVHlwKHgpID0+XG4gICAgICAgIFR5cChUeXAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnksIHgpKVxuICAgICAgfCBUUGF0KHgpID0+XG4gICAgICAgIFRQYXQoXG4gICAgICAgICAgVFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSwgeCksXG4gICAgICAgIClcbiAgICAgIHwgUnVsKHgpID0+XG4gICAgICAgIFJ1bChSdWwubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnksIHgpKVxuICAgICAgfCBOdWwgKCkgPT4gTnVsKClcbiAgICAgIHwgQW55ICgpID0+IEFueSgpXG4gICAgICB9O1xuICAgIHggfD4gZl9hbnkocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCBmYXN0X2VxdWFsID0gKHgsIHkpID0+XG4gICAgc3dpdGNoICh4LCB5KSB7XG4gICAgfCAoRXhwKHgpLCBFeHAoeSkpID0+IEV4cC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoUGF0KHgpLCBQYXQoeSkpID0+IFBhdC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoVHlwKHgpLCBUeXAoeSkpID0+IFR5cC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoVFBhdCh4KSwgVFBhdCh5KSkgPT4gVFBhdC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoUnVsKHgpLCBSdWwoeSkpID0+IFJ1bC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoTnVsICgpLCBOdWwgKCkpID0+IHRydWVcbiAgICB8IChBbnkgKCksIEFueSAoKSkgPT4gdHJ1ZVxuICAgIHwgKEV4cChfKSwgXylcbiAgICB8IChQYXQoXyksIF8pXG4gICAgfCAoVHlwKF8pLCBfKVxuICAgIHwgKFRQYXQoXyksIF8pXG4gICAgfCAoUnVsKF8pLCBfKVxuICAgIHwgKE51bCAoKSwgXylcbiAgICB8IChBbnkgKCksIF8pID0+IGZhbHNlXG4gICAgfTtcbn1cbmFuZCBFeHA6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGRlZmVycmFsX3Bvc2l0aW9uID1cbiAgICB8IEluQXBcbiAgICB8IE91dHNpZGVBcDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgRHluYW1pY0Vycm9ySG9sZSh0LCBJbnZhbGlkT3BlcmF0aW9uRXJyb3IudClcbiAgICB8IEZhaWxlZENhc3QodCwgVHlwLnQsIFR5cC50KVxuICAgIHwgRGVmZXJyYWwoZGVmZXJyYWxfcG9zaXRpb24pXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgRnVuKFxuICAgICAgICBQYXQudCxcbiAgICAgICAgdCxcbiAgICAgICAgW0BzaG93Lm9wYXF1ZV0gb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSxcbiAgICAgICAgb3B0aW9uKFZhci50KSxcbiAgICAgIClcbiAgICB8IFR5cEZ1bihUUGF0LnQsIHQsIG9wdGlvbihWYXIudCkpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgTGV0KFBhdC50LCB0LCB0KVxuICAgIHwgRml4RihQYXQudCwgdCwgb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSlcbiAgICB8IFR5QWxpYXMoVFBhdC50LCBUeXAudCwgdClcbiAgICB8IEFwKE9wZXJhdG9ycy5hcF9kaXJlY3Rpb24sIHQsIHQpXG4gICAgfCBUeXBBcCh0LCBUeXAudClcbiAgICB8IERlZmVycmVkQXAodCwgbGlzdCh0KSlcbiAgICB8IElmKHQsIHQsIHQpXG4gICAgfCBTZXEodCwgdClcbiAgICB8IFRlc3QodClcbiAgICB8IEZpbHRlcihTdGVwcGVyRmlsdGVyS2luZC50LCB0KVxuICAgIHwgQ2xvc3VyZShbQHNob3cub3BhcXVlXSBDbG9zdXJlRW52aXJvbm1lbnQudCwgdClcbiAgICB8IFBhcmVucyh0KSAvLyAoXG4gICAgfCBDb25zKHQsIHQpXG4gICAgfCBMaXN0Q29uY2F0KHQsIHQpXG4gICAgfCBVbk9wKE9wZXJhdG9ycy5vcF91biwgdClcbiAgICB8IEJpbk9wKE9wZXJhdG9ycy5vcF9iaW4sIHQsIHQpXG4gICAgfCBCdWlsdGluRnVuKHN0cmluZylcbiAgICB8IE1hdGNoKHQsIGxpc3QoKFBhdC50LCB0KSkpXG4gICAgLyogSU5WQVJJQU5UOiBpbiBkeW5hbWljIGV4cHJlc3Npb25zLCBjYXN0cyBtdXN0IGJlIGJldHdlZW5cbiAgICAgICB0d28gY29uc2lzdGVudCB0eXBlcy4gQm90aCB0eXBlcyBzaG91bGQgYmUgbm9ybWFsaXplZCBpblxuICAgICAgIGR5bmFtaWNzIGZvciB0aGUgY2FzdCBjYWxjdWx1cyB0byB3b3JrIHJpZ2h0LiAqL1xuICAgIHwgQ2FzdCh0LCBUeXAudCwgVHlwLnQpXG4gIGFuZCB0ID0gSWRUYWdnZWQudCh0ZXJtKTtcblxuICBsZXQgbWFwX3Rlcm06XG4gICAgKFxuICAgICAgfmZfZXhwOiAoRXhwLnQgPT4gRXhwLnQsIEV4cC50KSA9PiBFeHAudD0/LFxuICAgICAgfmZfcGF0OiAoUGF0LnQgPT4gUGF0LnQsIFBhdC50KSA9PiBQYXQudD0/LFxuICAgICAgfmZfdHlwOiAoVHlwLnQgPT4gVHlwLnQsIFR5cC50KSA9PiBUeXAudD0/LFxuICAgICAgfmZfdHBhdDogKFRQYXQudCA9PiBUUGF0LnQsIFRQYXQudCkgPT4gVFBhdC50PT8sXG4gICAgICB+Zl9ydWw6IChSdWwudCA9PiBSdWwudCwgUnVsLnQpID0+IFJ1bC50PT8sXG4gICAgICB+Zl9hbnk6IChBbnkudCA9PiBBbnkudCwgQW55LnQpID0+IEFueS50PT8sXG4gICAgICB0XG4gICAgKSA9PlxuICAgIHQ7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGRlZmVycmFsX3Bvc2l0aW9uID1cbiAgICB8IEluQXBcbiAgICB8IE91dHNpZGVBcDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZSAvLyBDb21iaW5lIHRoZSBwcm9ibGVtcyBpbnRvIG9uZSBjb25zdHJ1Y3RcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IER5bmFtaWNFcnJvckhvbGUodCwgSW52YWxpZE9wZXJhdGlvbkVycm9yLnQpXG4gICAgfCBGYWlsZWRDYXN0KHQsIFR5cC50LCBUeXAudCkgLy8gVE9ETzogZ2V0IHJpZCBvZiBmYWlsZWRjYXN0XG4gICAgfCBEZWZlcnJhbChkZWZlcnJhbF9wb3NpdGlvbilcbiAgICB8IEJvb2woYm9vbClcbiAgICB8IEludChpbnQpXG4gICAgfCBGbG9hdChmbG9hdClcbiAgICB8IFN0cmluZyhzdHJpbmcpXG4gICAgfCBMaXN0TGl0KGxpc3QodCkpXG4gICAgfCBDb25zdHJ1Y3RvcihzdHJpbmcpXG4gICAgfCBGdW4oXG4gICAgICAgIFBhdC50LFxuICAgICAgICB0LFxuICAgICAgICBbQHNob3cub3BhcXVlXSBvcHRpb24oQ2xvc3VyZUVudmlyb25tZW50LnQpLFxuICAgICAgICBvcHRpb24oVmFyLnQpLFxuICAgICAgKVxuICAgIHwgVHlwRnVuKFRQYXQudCwgdCwgb3B0aW9uKHN0cmluZykpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgTGV0KFBhdC50LCB0LCB0KVxuICAgIHwgRml4RihQYXQudCwgdCwgW0BzaG93Lm9wYXF1ZV0gb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSlcbiAgICB8IFR5QWxpYXMoVFBhdC50LCBUeXAudCwgdClcbiAgICB8IEFwKE9wZXJhdG9ycy5hcF9kaXJlY3Rpb24sIHQsIHQpIC8vIG5vdGU6IGZ1bmN0aW9uIGlzIGFsd2F5cyBmaXJzdCB0aGVuIGFyZ3VtZW50OyBldmVuIGluIHBpcGUgbW9kZVxuICAgIHwgVHlwQXAodCwgVHlwLnQpXG4gICAgfCBEZWZlcnJlZEFwKHQsIGxpc3QodCkpXG4gICAgfCBJZih0LCB0LCB0KVxuICAgIHwgU2VxKHQsIHQpXG4gICAgfCBUZXN0KHQpXG4gICAgfCBGaWx0ZXIoU3RlcHBlckZpbHRlcktpbmQudCwgdClcbiAgICB8IENsb3N1cmUoW0BzaG93Lm9wYXF1ZV0gQ2xvc3VyZUVudmlyb25tZW50LnQsIHQpXG4gICAgfCBQYXJlbnModClcbiAgICB8IENvbnModCwgdClcbiAgICB8IExpc3RDb25jYXQodCwgdClcbiAgICB8IFVuT3AoT3BlcmF0b3JzLm9wX3VuLCB0KVxuICAgIHwgQmluT3AoT3BlcmF0b3JzLm9wX2JpbiwgdCwgdClcbiAgICB8IEJ1aWx0aW5GdW4oc3RyaW5nKSAvLy8gRG9lc24ndCBjdXJyZW50bHkgaGF2ZSBhIGRpc3Rpbmd1aXNoYWJsZSBzeW50YXhcbiAgICB8IE1hdGNoKHQsIGxpc3QoKFBhdC50LCB0KSkpXG4gICAgfCBDYXN0KHQsIFR5cC50LCBUeXAudClcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGV4cF9tYXBfdGVybSA9XG4gICAgICBFeHAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBwYXRfbWFwX3Rlcm0gPVxuICAgICAgUGF0Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgdHlwX21hcF90ZXJtID1cbiAgICAgIFR5cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHRwYXRfbWFwX3Rlcm0gPVxuICAgICAgVFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IGFueV9tYXBfdGVybSA9XG4gICAgICBBbnkubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBmbHRfbWFwX3Rlcm0gPVxuICAgICAgU3RlcHBlckZpbHRlcktpbmQubWFwX3Rlcm0oXG4gICAgICAgIH5mX2V4cCxcbiAgICAgICAgfmZfcGF0LFxuICAgICAgICB+Zl90eXAsXG4gICAgICAgIH5mX3RwYXQsXG4gICAgICAgIH5mX3J1bCxcbiAgICAgICAgfmZfYW55LFxuICAgICAgKTtcbiAgICBsZXQgcmVjX2NhbGwgPSAoe3Rlcm0sIF99IGFzIGV4cDogdCkgPT4ge1xuICAgICAgLi4uZXhwLFxuICAgICAgdGVybTpcbiAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IEJvb2woXylcbiAgICAgICAgfCBJbnQoXylcbiAgICAgICAgfCBGbG9hdChfKVxuICAgICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICAgIHwgU3RyaW5nKF8pXG4gICAgICAgIHwgRGVmZXJyYWwoXylcbiAgICAgICAgfCBWYXIoXykgPT4gdGVybVxuICAgICAgICB8IE11bHRpSG9sZSh0aGluZ3MpID0+IE11bHRpSG9sZShMaXN0Lm1hcChhbnlfbWFwX3Rlcm0sIHRoaW5ncykpXG4gICAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShlLCBlcnIpID0+IER5bmFtaWNFcnJvckhvbGUoZXhwX21hcF90ZXJtKGUpLCBlcnIpXG4gICAgICAgIHwgRmFpbGVkQ2FzdChlLCB0MSwgdDIpID0+IEZhaWxlZENhc3QoZXhwX21hcF90ZXJtKGUpLCB0MSwgdDIpXG4gICAgICAgIHwgTGlzdExpdCh0cykgPT4gTGlzdExpdChMaXN0Lm1hcChleHBfbWFwX3Rlcm0sIHRzKSlcbiAgICAgICAgfCBGdW4ocCwgZSwgZW52LCBmKSA9PlxuICAgICAgICAgIEZ1bihwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlKSwgZW52LCBmKVxuICAgICAgICB8IFR5cEZ1bih0cCwgZSwgZikgPT4gVHlwRnVuKHRwYXRfbWFwX3Rlcm0odHApLCBleHBfbWFwX3Rlcm0oZSksIGYpXG4gICAgICAgIHwgVHVwbGUoeHMpID0+IFR1cGxlKExpc3QubWFwKGV4cF9tYXBfdGVybSwgeHMpKVxuICAgICAgICB8IExldChwLCBlMSwgZTIpID0+XG4gICAgICAgICAgTGV0KHBhdF9tYXBfdGVybShwKSwgZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBGaXhGKHAsIGUsIGVudikgPT4gRml4RihwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlKSwgZW52KVxuICAgICAgICB8IFR5QWxpYXModHAsIHQsIGUpID0+XG4gICAgICAgICAgVHlBbGlhcyh0cGF0X21hcF90ZXJtKHRwKSwgdHlwX21hcF90ZXJtKHQpLCBleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgQXAob3AsIGUxLCBlMikgPT4gQXAob3AsIGV4cF9tYXBfdGVybShlMSksIGV4cF9tYXBfdGVybShlMikpXG4gICAgICAgIHwgVHlwQXAoZSwgdCkgPT4gVHlwQXAoZXhwX21hcF90ZXJtKGUpLCB0eXBfbWFwX3Rlcm0odCkpXG4gICAgICAgIHwgRGVmZXJyZWRBcChlLCBlcykgPT5cbiAgICAgICAgICBEZWZlcnJlZEFwKGV4cF9tYXBfdGVybShlKSwgTGlzdC5tYXAoZXhwX21hcF90ZXJtLCBlcykpXG4gICAgICAgIHwgSWYoZTEsIGUyLCBlMykgPT5cbiAgICAgICAgICBJZihleHBfbWFwX3Rlcm0oZTEpLCBleHBfbWFwX3Rlcm0oZTIpLCBleHBfbWFwX3Rlcm0oZTMpKVxuICAgICAgICB8IFNlcShlMSwgZTIpID0+IFNlcShleHBfbWFwX3Rlcm0oZTEpLCBleHBfbWFwX3Rlcm0oZTIpKVxuICAgICAgICB8IFRlc3QoZSkgPT4gVGVzdChleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgRmlsdGVyKGYsIGUpID0+IEZpbHRlcihmbHRfbWFwX3Rlcm0oZiksIGV4cF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBDbG9zdXJlKGVudiwgZSkgPT4gQ2xvc3VyZShlbnYsIGV4cF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBQYXJlbnMoZSkgPT4gUGFyZW5zKGV4cF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBDb25zKGUxLCBlMikgPT4gQ29ucyhleHBfbWFwX3Rlcm0oZTEpLCBleHBfbWFwX3Rlcm0oZTIpKVxuICAgICAgICB8IExpc3RDb25jYXQoZTEsIGUyKSA9PlxuICAgICAgICAgIExpc3RDb25jYXQoZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBVbk9wKG9wLCBlKSA9PiBVbk9wKG9wLCBleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgQmluT3Aob3AsIGUxLCBlMikgPT5cbiAgICAgICAgICBCaW5PcChvcCwgZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBCdWlsdGluRnVuKHN0cikgPT4gQnVpbHRpbkZ1bihzdHIpXG4gICAgICAgIHwgTWF0Y2goZSwgcmxzKSA9PlxuICAgICAgICAgIE1hdGNoKFxuICAgICAgICAgICAgZXhwX21hcF90ZXJtKGUpLFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICgocCwgZSkpID0+IChwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlKSksXG4gICAgICAgICAgICAgIHJscyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICB8IENhc3QoZSwgdDEsIHQyKSA9PiBDYXN0KGV4cF9tYXBfdGVybShlKSwgdDEsIHQyKVxuICAgICAgICB9LFxuICAgIH07XG4gICAgeCB8PiBmX2V4cChyZWNfY2FsbCk7XG4gIH07XG5cbiAgbGV0IHJlYyBmYXN0X2VxdWFsID0gKGUxLCBlMikgPT5cbiAgICBzd2l0Y2ggKGUxIHw+IElkVGFnZ2VkLnRlcm1fb2YsIGUyIHw+IElkVGFnZ2VkLnRlcm1fb2YpIHtcbiAgICB8IChEeW5hbWljRXJyb3JIb2xlKHgsIF8pLCBfKVxuICAgIHwgKFBhcmVucyh4KSwgXykgPT4gZmFzdF9lcXVhbCh4LCBlMilcbiAgICB8IChfLCBEeW5hbWljRXJyb3JIb2xlKHgsIF8pKVxuICAgIHwgKF8sIFBhcmVucyh4KSkgPT4gZmFzdF9lcXVhbChlMSwgeClcbiAgICB8IChFbXB0eUhvbGUsIEVtcHR5SG9sZSkgPT4gdHJ1ZVxuICAgIHwgKEludmFsaWQoczEpLCBJbnZhbGlkKHMyKSkgPT4gczEgPT0gczJcbiAgICB8IChNdWx0aUhvbGUoeHMpLCBNdWx0aUhvbGUoeXMpKSB3aGVuIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cykgPT5cbiAgICAgIExpc3QuZXF1YWwoQW55LmZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChGYWlsZWRDYXN0KGUxLCB0MSwgdDIpLCBGYWlsZWRDYXN0KGUyLCB0MywgdDQpKSA9PlxuICAgICAgRXhwLmZhc3RfZXF1YWwoZTEsIGUyKVxuICAgICAgJiYgVHlwLmZhc3RfZXF1YWwodDEsIHQzKVxuICAgICAgJiYgVHlwLmZhc3RfZXF1YWwodDIsIHQ0KVxuICAgIHwgKERlZmVycmFsKGQxKSwgRGVmZXJyYWwoZDIpKSA9PiBkMSA9PSBkMlxuICAgIHwgKEJvb2woYjEpLCBCb29sKGIyKSkgPT4gYjEgPT0gYjJcbiAgICB8IChJbnQoaTEpLCBJbnQoaTIpKSA9PiBpMSA9PSBpMlxuICAgIHwgKEZsb2F0KGYxKSwgRmxvYXQoZjIpKSA9PiBmMSA9PSBmMlxuICAgIHwgKFN0cmluZyhzMSksIFN0cmluZyhzMikpID0+IHMxID09IHMyXG4gICAgfCAoTGlzdExpdCh4cyksIExpc3RMaXQoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKSAmJiBMaXN0LmVxdWFsKGZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChDb25zdHJ1Y3RvcihjMSksIENvbnN0cnVjdG9yKGMyKSkgPT4gYzEgPT0gYzJcbiAgICB8IChGdW4ocDEsIGUxLCBlbnYxLCBfKSwgRnVuKHAyLCBlMiwgZW52MiwgXykpID0+XG4gICAgICBQYXQuZmFzdF9lcXVhbChwMSwgcDIpXG4gICAgICAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIE9wdGlvbi5lcXVhbChDbG9zdXJlRW52aXJvbm1lbnQuaWRfZXF1YWwsIGVudjEsIGVudjIpXG4gICAgfCAoVHlwRnVuKHRwMSwgZTEsIF8pLCBUeXBGdW4odHAyLCBlMiwgXykpID0+XG4gICAgICBUUGF0LmZhc3RfZXF1YWwodHAxLCB0cDIpICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgIHwgKFR1cGxlKHhzKSwgVHVwbGUoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKSAmJiBMaXN0LmVxdWFsKGZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChWYXIodjEpLCBWYXIodjIpKSA9PiB2MSA9PSB2MlxuICAgIHwgKExldChwMSwgZTEsIGUyKSwgTGV0KHAyLCBlMywgZTQpKSA9PlxuICAgICAgUGF0LmZhc3RfZXF1YWwocDEsIHAyKSAmJiBmYXN0X2VxdWFsKGUxLCBlMykgJiYgZmFzdF9lcXVhbChlMiwgZTQpXG4gICAgfCAoRml4RihwMSwgZTEsIGMxKSwgRml4RihwMiwgZTIsIGMyKSkgPT5cbiAgICAgIFBhdC5mYXN0X2VxdWFsKHAxLCBwMilcbiAgICAgICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgICAgJiYgT3B0aW9uLmVxdWFsKENsb3N1cmVFbnZpcm9ubWVudC5pZF9lcXVhbCwgYzEsIGMyKVxuICAgIHwgKFR5QWxpYXModHAxLCB0MSwgZTEpLCBUeUFsaWFzKHRwMiwgdDIsIGUyKSkgPT5cbiAgICAgIFRQYXQuZmFzdF9lcXVhbCh0cDEsIHRwMilcbiAgICAgICYmIFR5cC5mYXN0X2VxdWFsKHQxLCB0MilcbiAgICAgICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgIHwgKEFwKGQxLCBlMSwgZTIpLCBBcChkMiwgZTMsIGU0KSkgPT5cbiAgICAgIGQxID09IGQyICYmIGZhc3RfZXF1YWwoZTEsIGUzKSAmJiBmYXN0X2VxdWFsKGUyLCBlNClcbiAgICB8IChUeXBBcChlMSwgdDEpLCBUeXBBcChlMiwgdDIpKSA9PlxuICAgICAgZmFzdF9lcXVhbChlMSwgZTIpICYmIFR5cC5mYXN0X2VxdWFsKHQxLCB0MilcbiAgICB8IChEZWZlcnJlZEFwKGUxLCBlczEpLCBEZWZlcnJlZEFwKGUyLCBlczIpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoZXMxKSA9PSBMaXN0Lmxlbmd0aChlczIpXG4gICAgICAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIExpc3QuZXF1YWwoZmFzdF9lcXVhbCwgZXMxLCBlczIpXG4gICAgfCAoSWYoZTEsIGUyLCBlMyksIElmKGU0LCBlNSwgZTYpKSA9PlxuICAgICAgZmFzdF9lcXVhbChlMSwgZTQpICYmIGZhc3RfZXF1YWwoZTIsIGU1KSAmJiBmYXN0X2VxdWFsKGUzLCBlNilcbiAgICB8IChTZXEoZTEsIGUyKSwgU2VxKGUzLCBlNCkpID0+XG4gICAgICBmYXN0X2VxdWFsKGUxLCBlMykgJiYgZmFzdF9lcXVhbChlMiwgZTQpXG4gICAgfCAoVGVzdChlMSksIFRlc3QoZTIpKSA9PiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICB8IChGaWx0ZXIoZjEsIGUxKSwgRmlsdGVyKGYyLCBlMikpID0+XG4gICAgICBTdGVwcGVyRmlsdGVyS2luZC5mYXN0X2VxdWFsKGYxLCBmMikgJiYgZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgfCAoQ2xvc3VyZShjMSwgZTEpLCBDbG9zdXJlKGMyLCBlMikpID0+XG4gICAgICBDbG9zdXJlRW52aXJvbm1lbnQuaWRfZXF1YWwoYzEsIGMyKSAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICB8IChDb25zKGUxLCBlMiksIENvbnMoZTMsIGU0KSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUzKSAmJiBmYXN0X2VxdWFsKGUyLCBlNClcbiAgICB8IChMaXN0Q29uY2F0KGUxLCBlMiksIExpc3RDb25jYXQoZTMsIGU0KSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUzKSAmJiBmYXN0X2VxdWFsKGUyLCBlNClcbiAgICB8IChVbk9wKG8xLCBlMSksIFVuT3AobzIsIGUyKSkgPT4gbzEgPT0gbzIgJiYgZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgfCAoQmluT3AobzEsIGUxLCBlMiksIEJpbk9wKG8yLCBlMywgZTQpKSA9PlxuICAgICAgbzEgPT0gbzIgJiYgZmFzdF9lcXVhbChlMSwgZTMpICYmIGZhc3RfZXF1YWwoZTIsIGU0KVxuICAgIHwgKEJ1aWx0aW5GdW4oZjEpLCBCdWlsdGluRnVuKGYyKSkgPT4gZjEgPT0gZjJcbiAgICB8IChNYXRjaChlMSwgcmxzMSksIE1hdGNoKGUyLCBybHMyKSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgICAgJiYgTGlzdC5sZW5ndGgocmxzMSkgPT0gTGlzdC5sZW5ndGgocmxzMilcbiAgICAgICYmIExpc3QuZm9yX2FsbDIoXG4gICAgICAgICAgICgocDEsIGUxKSwgKHAyLCBlMikpID0+XG4gICAgICAgICAgICAgUGF0LmZhc3RfZXF1YWwocDEsIHAyKSAmJiBmYXN0X2VxdWFsKGUxLCBlMiksXG4gICAgICAgICAgIHJsczEsXG4gICAgICAgICAgIHJsczIsXG4gICAgICAgICApXG4gICAgfCAoQ2FzdChlMSwgdDEsIHQyKSwgQ2FzdChlMiwgdDMsIHQ0KSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUyKSAmJiBUeXAuZmFzdF9lcXVhbCh0MSwgdDMpICYmIFR5cC5mYXN0X2VxdWFsKHQyLCB0NClcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKEZhaWxlZENhc3QoXyksIF8pXG4gICAgfCAoRGVmZXJyYWwoXyksIF8pXG4gICAgfCAoQm9vbChfKSwgXylcbiAgICB8IChJbnQoXyksIF8pXG4gICAgfCAoRmxvYXQoXyksIF8pXG4gICAgfCAoU3RyaW5nKF8pLCBfKVxuICAgIHwgKExpc3RMaXQoXyksIF8pXG4gICAgfCAoQ29uc3RydWN0b3IoXyksIF8pXG4gICAgfCAoRnVuKF8pLCBfKVxuICAgIHwgKFR5cEZ1bihfKSwgXylcbiAgICB8IChUdXBsZShfKSwgXylcbiAgICB8IChWYXIoXyksIF8pXG4gICAgfCAoTGV0KF8pLCBfKVxuICAgIHwgKEZpeEYoXyksIF8pXG4gICAgfCAoVHlBbGlhcyhfKSwgXylcbiAgICB8IChBcChfKSwgXylcbiAgICB8IChUeXBBcChfKSwgXylcbiAgICB8IChEZWZlcnJlZEFwKF8pLCBfKVxuICAgIHwgKElmKF8pLCBfKVxuICAgIHwgKFNlcShfKSwgXylcbiAgICB8IChUZXN0KF8pLCBfKVxuICAgIHwgKEZpbHRlcihfKSwgXylcbiAgICB8IChDbG9zdXJlKF8pLCBfKVxuICAgIHwgKENvbnMoXyksIF8pXG4gICAgfCAoTGlzdENvbmNhdChfKSwgXylcbiAgICB8IChVbk9wKF8pLCBfKVxuICAgIHwgKEJpbk9wKF8pLCBfKVxuICAgIHwgKEJ1aWx0aW5GdW4oXyksIF8pXG4gICAgfCAoTWF0Y2goXyksIF8pXG4gICAgfCAoQ2FzdChfKSwgXylcbiAgICB8IChNdWx0aUhvbGUoXyksIF8pXG4gICAgfCAoRW1wdHlIb2xlLCBfKSA9PiBmYWxzZVxuICAgIH07XG59XG5hbmQgUGF0OiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFBhcmVucyh0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IENhc3QodCwgVHlwLnQsIFR5cC50KSAvLyBUaGUgc2Vjb25kIG9uZSBpcyBoaWRkZW4gZnJvbSB0aGUgdXNlclxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBmYXN0X2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFBhcmVucyh0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IENhc3QodCwgVHlwLnQsIFR5cC50KSAvLyBUaGUgc2Vjb25kIG9uZSBpcyBoaWRkZW4gZnJvbSB0aGUgdXNlclxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtID1cbiAgICAgIChcbiAgICAgICAgfmZfZXhwPWNvbnRpbnVlLFxuICAgICAgICB+Zl9wYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3R5cD1jb250aW51ZSxcbiAgICAgICAgfmZfdHBhdD1jb250aW51ZSxcbiAgICAgICAgfmZfcnVsPWNvbnRpbnVlLFxuICAgICAgICB+Zl9hbnk9Y29udGludWUsXG4gICAgICAgIHgsXG4gICAgICApID0+IHtcbiAgICBsZXQgcGF0X21hcF90ZXJtID1cbiAgICAgIFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHR5cF9tYXBfdGVybSA9XG4gICAgICBUeXAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBhbnlfbWFwX3Rlcm0gPVxuICAgICAgQW55Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgcmVjX2NhbGwgPSAoe3Rlcm0sIF99IGFzIGV4cDogdCkgPT4ge1xuICAgICAgLi4uZXhwLFxuICAgICAgdGVybTpcbiAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IFdpbGRcbiAgICAgICAgfCBCb29sKF8pXG4gICAgICAgIHwgSW50KF8pXG4gICAgICAgIHwgRmxvYXQoXylcbiAgICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICB8IFZhcihfKSA9PiB0ZXJtXG4gICAgICAgIHwgTXVsdGlIb2xlKHRoaW5ncykgPT4gTXVsdGlIb2xlKExpc3QubWFwKGFueV9tYXBfdGVybSwgdGhpbmdzKSlcbiAgICAgICAgfCBMaXN0TGl0KHRzKSA9PiBMaXN0TGl0KExpc3QubWFwKHBhdF9tYXBfdGVybSwgdHMpKVxuICAgICAgICB8IEFwKGUxLCBlMikgPT4gQXAocGF0X21hcF90ZXJtKGUxKSwgcGF0X21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBDb25zKGUxLCBlMikgPT4gQ29ucyhwYXRfbWFwX3Rlcm0oZTEpLCBwYXRfbWFwX3Rlcm0oZTIpKVxuICAgICAgICB8IFR1cGxlKHhzKSA9PiBUdXBsZShMaXN0Lm1hcChwYXRfbWFwX3Rlcm0sIHhzKSlcbiAgICAgICAgfCBQYXJlbnMoZSkgPT4gUGFyZW5zKHBhdF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBDYXN0KGUsIHQxLCB0MikgPT5cbiAgICAgICAgICBDYXN0KHBhdF9tYXBfdGVybShlKSwgdHlwX21hcF90ZXJtKHQxKSwgdHlwX21hcF90ZXJtKHQyKSlcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHggfD4gZl9wYXQocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCByZWMgZmFzdF9lcXVhbCA9IChwMSwgcDIpID0+XG4gICAgc3dpdGNoIChwMSB8PiBJZFRhZ2dlZC50ZXJtX29mLCBwMiB8PiBJZFRhZ2dlZC50ZXJtX29mKSB7XG4gICAgfCAoUGFyZW5zKHgpLCBfKSA9PiBmYXN0X2VxdWFsKHgsIHAyKVxuICAgIHwgKF8sIFBhcmVucyh4KSkgPT4gZmFzdF9lcXVhbChwMSwgeClcbiAgICB8IChFbXB0eUhvbGUsIEVtcHR5SG9sZSkgPT4gdHJ1ZVxuICAgIHwgKE11bHRpSG9sZSh4cyksIE11bHRpSG9sZSh5cykpID0+XG4gICAgICBMaXN0Lmxlbmd0aCh4cykgPT0gTGlzdC5sZW5ndGgoeXMpXG4gICAgICAmJiBMaXN0LmVxdWFsKEFueS5mYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoSW52YWxpZChzMSksIEludmFsaWQoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKFdpbGQsIFdpbGQpID0+IHRydWVcbiAgICB8IChCb29sKGIxKSwgQm9vbChiMikpID0+IGIxID09IGIyXG4gICAgfCAoSW50KGkxKSwgSW50KGkyKSkgPT4gaTEgPT0gaTJcbiAgICB8IChGbG9hdChmMSksIEZsb2F0KGYyKSkgPT4gZjEgPT0gZjJcbiAgICB8IChTdHJpbmcoczEpLCBTdHJpbmcoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKENvbnN0cnVjdG9yKGMxKSwgQ29uc3RydWN0b3IoYzIpKSA9PiBjMSA9PSBjMlxuICAgIHwgKFZhcih2MSksIFZhcih2MikpID0+IHYxID09IHYyXG4gICAgfCAoTGlzdExpdCh4cyksIExpc3RMaXQoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKSAmJiBMaXN0LmVxdWFsKGZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChDb25zKHgxLCB5MSksIENvbnMoeDIsIHkyKSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoeDEsIHgyKSAmJiBmYXN0X2VxdWFsKHkxLCB5MilcbiAgICB8IChUdXBsZSh4cyksIFR1cGxlKHlzKSkgPT5cbiAgICAgIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cykgJiYgTGlzdC5lcXVhbChmYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoQXAoeDEsIHkxKSwgQXAoeDIsIHkyKSkgPT4gZmFzdF9lcXVhbCh4MSwgeDIpICYmIGZhc3RfZXF1YWwoeTEsIHkyKVxuICAgIHwgKENhc3QoeDEsIHQxLCB0MiksIENhc3QoeDIsIHUxLCB1MikpID0+XG4gICAgICBmYXN0X2VxdWFsKHgxLCB4MikgJiYgVHlwLmZhc3RfZXF1YWwodDEsIHUxKSAmJiBUeXAuZmFzdF9lcXVhbCh0MiwgdTIpXG4gICAgfCAoRW1wdHlIb2xlLCBfKVxuICAgIHwgKE11bHRpSG9sZShfKSwgXylcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKFdpbGQsIF8pXG4gICAgfCAoQm9vbChfKSwgXylcbiAgICB8IChJbnQoXyksIF8pXG4gICAgfCAoRmxvYXQoXyksIF8pXG4gICAgfCAoU3RyaW5nKF8pLCBfKVxuICAgIHwgKExpc3RMaXQoXyksIF8pXG4gICAgfCAoQ29uc3RydWN0b3IoXyksIF8pXG4gICAgfCAoQ29ucyhfKSwgXylcbiAgICB8IChWYXIoXyksIF8pXG4gICAgfCAoVHVwbGUoXyksIF8pXG4gICAgfCAoQXAoXyksIF8pXG4gICAgfCAoQ2FzdChfKSwgXykgPT4gZmFsc2VcbiAgICB9O1xufVxuYW5kIFR5cDoge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9ob2xlID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpO1xuXG4gIC8qIFRZUEVfUFJPVkVOQU5DRTogRnJvbSB3aGVuY2UgZG9lcyBhbiB1bmtub3duIHR5cGUgb3JpZ2luYXRlP1xuICAgICBJcyBpdCBnZW5lcmF0ZWQgZnJvbSBhbiB1bmFubm90YXRlZCBwYXR0ZXJuIHZhcmlhYmxlIChTeW5Td2l0Y2gpLFxuICAgICBhIHBhdHRlcm4gdmFyaWFibGUgYW5ub3RhdGVkIHdpdGggYSB0eXBlIGhvbGUgKFR5cGVIb2xlKSwgb3JcbiAgICAgZ2VuZXJhdGVkIGJ5IGFuIGludGVybmFsIGp1ZGdlbWVudCAoSW50ZXJuYWwpPyAqL1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9wcm92ZW5hbmNlID1cbiAgICB8IFN5blN3aXRjaFxuICAgIHwgSG9sZSh0eXBlX2hvbGUpXG4gICAgfCBJbnRlcm5hbDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBVbmtub3duKFR5cC50eXBlX3Byb3ZlbmFuY2UpXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IFZhcihzdHJpbmcpXG4gICAgfCBMaXN0KHQpXG4gICAgfCBBcnJvdyh0LCB0KVxuICAgIHwgU3VtKENvbnN0cnVjdG9yTWFwLnQodCkpXG4gICAgfCBQcm9kKGxpc3QodCkpXG4gICAgfCBQYXJlbnModClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBSZWMoVFBhdC50LCB0KVxuICAgIHwgRm9yYWxsKFRQYXQudCwgdClcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIHR5cGUgc3VtX21hcCA9IENvbnN0cnVjdG9yTWFwLnQodCk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBzdWJzdDogKHQsIFRQYXQudCwgdCkgPT4gdDtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9ob2xlID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpO1xuXG4gIC8qIFRZUEVfUFJPVkVOQU5DRTogRnJvbSB3aGVuY2UgZG9lcyBhbiB1bmtub3duIHR5cGUgb3JpZ2luYXRlP1xuICAgICBJcyBpdCBnZW5lcmF0ZWQgZnJvbSBhbiB1bmFubm90YXRlZCBwYXR0ZXJuIHZhcmlhYmxlIChTeW5Td2l0Y2gpLFxuICAgICBhIHBhdHRlcm4gdmFyaWFibGUgYW5ub3RhdGVkIHdpdGggYSB0eXBlIGhvbGUgKFR5cGVIb2xlKSwgb3JcbiAgICAgZ2VuZXJhdGVkIGJ5IGFuIGludGVybmFsIGp1ZGdlbWVudCAoSW50ZXJuYWwpPyAqL1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9wcm92ZW5hbmNlID1cbiAgICB8IFN5blN3aXRjaFxuICAgIHwgSG9sZSh0eXBlX2hvbGUpXG4gICAgfCBJbnRlcm5hbDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBVbmtub3duKFR5cC50eXBlX3Byb3ZlbmFuY2UpXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IFZhcihzdHJpbmcpXG4gICAgfCBMaXN0KHQpXG4gICAgfCBBcnJvdyh0LCB0KVxuICAgIHwgU3VtKENvbnN0cnVjdG9yTWFwLnQodCkpXG4gICAgfCBQcm9kKGxpc3QodCkpXG4gICAgfCBQYXJlbnModClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBSZWMoVFBhdC50LCB0KVxuICAgIHwgRm9yYWxsKFRQYXQudCwgdClcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIHR5cGUgc3VtX21hcCA9IENvbnN0cnVjdG9yTWFwLnQodCk7XG5cbiAgbGV0IG1hcF90ZXJtID1cbiAgICAgIChcbiAgICAgICAgfmZfZXhwPWNvbnRpbnVlLFxuICAgICAgICB+Zl9wYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3R5cD1jb250aW51ZSxcbiAgICAgICAgfmZfdHBhdD1jb250aW51ZSxcbiAgICAgICAgfmZfcnVsPWNvbnRpbnVlLFxuICAgICAgICB+Zl9hbnk9Y29udGludWUsXG4gICAgICAgIHgsXG4gICAgICApID0+IHtcbiAgICBsZXQgdHlwX21hcF90ZXJtID1cbiAgICAgIFR5cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IGFueV9tYXBfdGVybSA9XG4gICAgICBBbnkubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCB0cGF0X21hcF90ZXJtID1cbiAgICAgIFRQYXQubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCByZWNfY2FsbCA9ICh7dGVybSwgX30gYXMgZXhwOiB0KSA9PiB7XG4gICAgICAuLi5leHAsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgICAgfCBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSlcbiAgICAgICAgfCBVbmtub3duKEhvbGUoSW52YWxpZChfKSkpXG4gICAgICAgIHwgVW5rbm93bihTeW5Td2l0Y2gpXG4gICAgICAgIHwgVW5rbm93bihJbnRlcm5hbClcbiAgICAgICAgfCBCb29sXG4gICAgICAgIHwgSW50XG4gICAgICAgIHwgRmxvYXRcbiAgICAgICAgfCBTdHJpbmdcbiAgICAgICAgfCBWYXIoXykgPT4gdGVybVxuICAgICAgICB8IExpc3QodCkgPT4gTGlzdCh0eXBfbWFwX3Rlcm0odCkpXG4gICAgICAgIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZSh0aGluZ3MpKSkgPT5cbiAgICAgICAgICBVbmtub3duKEhvbGUoTXVsdGlIb2xlKExpc3QubWFwKGFueV9tYXBfdGVybSwgdGhpbmdzKSkpKVxuICAgICAgICB8IEFwKGUxLCBlMikgPT4gQXAodHlwX21hcF90ZXJtKGUxKSwgdHlwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBQcm9kKHhzKSA9PiBQcm9kKExpc3QubWFwKHR5cF9tYXBfdGVybSwgeHMpKVxuICAgICAgICB8IFBhcmVucyhlKSA9PiBQYXJlbnModHlwX21hcF90ZXJtKGUpKVxuICAgICAgICB8IEFycm93KHQxLCB0MikgPT4gQXJyb3codHlwX21hcF90ZXJtKHQxKSwgdHlwX21hcF90ZXJtKHQyKSlcbiAgICAgICAgfCBTdW0odmFyaWFudHMpID0+XG4gICAgICAgICAgU3VtKFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgIGZ1blxuICAgICAgICAgICAgICB8IENvbnN0cnVjdG9yTWFwLlZhcmlhbnQoYywgaWRzLCB0KSA9PlxuICAgICAgICAgICAgICAgIENvbnN0cnVjdG9yTWFwLlZhcmlhbnQoYywgaWRzLCBPcHRpb24ubWFwKHR5cF9tYXBfdGVybSwgdCkpXG4gICAgICAgICAgICAgIHwgQ29uc3RydWN0b3JNYXAuQmFkRW50cnkodCkgPT5cbiAgICAgICAgICAgICAgICBDb25zdHJ1Y3Rvck1hcC5CYWRFbnRyeSh0eXBfbWFwX3Rlcm0odCkpLFxuICAgICAgICAgICAgICB2YXJpYW50cyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICB8IFJlYyh0cCwgdCkgPT4gUmVjKHRwYXRfbWFwX3Rlcm0odHApLCB0eXBfbWFwX3Rlcm0odCkpXG4gICAgICAgIHwgRm9yYWxsKHRwLCB0KSA9PiBGb3JhbGwodHBhdF9tYXBfdGVybSh0cCksIHR5cF9tYXBfdGVybSh0KSlcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHggfD4gZl90eXAocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCByZWMgc3Vic3QgPSAoczogdCwgeDogVFBhdC50LCB0eTogdCkgPT4ge1xuICAgIHN3aXRjaCAoVFBhdC50eXZhcl9vZl91dHBhdCh4KSkge1xuICAgIHwgU29tZShzdHIpID0+XG4gICAgICBsZXQgKHRlcm0sIHJld3JhcCkgPSBJZFRhZ2dlZC51bndyYXAodHkpO1xuICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICB8IEludCA9PiBJbnQgfD4gcmV3cmFwXG4gICAgICB8IEZsb2F0ID0+IEZsb2F0IHw+IHJld3JhcFxuICAgICAgfCBCb29sID0+IEJvb2wgfD4gcmV3cmFwXG4gICAgICB8IFN0cmluZyA9PiBTdHJpbmcgfD4gcmV3cmFwXG4gICAgICB8IFVua25vd24ocHJvdikgPT4gVW5rbm93bihwcm92KSB8PiByZXdyYXBcbiAgICAgIHwgQXJyb3codHkxLCB0eTIpID0+XG4gICAgICAgIEFycm93KHN1YnN0KHMsIHgsIHR5MSksIHN1YnN0KHMsIHgsIHR5MikpIHw+IHJld3JhcFxuICAgICAgfCBQcm9kKHR5cykgPT4gUHJvZChMaXN0Lm1hcChzdWJzdChzLCB4KSwgdHlzKSkgfD4gcmV3cmFwXG4gICAgICB8IFN1bShzbSkgPT5cbiAgICAgICAgU3VtKENvbnN0cnVjdG9yTWFwLm1hcChPcHRpb24ubWFwKHN1YnN0KHMsIHgpKSwgc20pKSB8PiByZXdyYXBcbiAgICAgIHwgRm9yYWxsKHRwMiwgdHkpXG4gICAgICAgICAgd2hlbiBUUGF0LnR5dmFyX29mX3V0cGF0KHgpID09IFRQYXQudHl2YXJfb2ZfdXRwYXQodHAyKSA9PlxuICAgICAgICBGb3JhbGwodHAyLCB0eSkgfD4gcmV3cmFwXG4gICAgICB8IEZvcmFsbCh0cDIsIHR5KSA9PiBGb3JhbGwodHAyLCBzdWJzdChzLCB4LCB0eSkpIHw+IHJld3JhcFxuICAgICAgfCBSZWModHAyLCB0eSkgd2hlbiBUUGF0LnR5dmFyX29mX3V0cGF0KHgpID09IFRQYXQudHl2YXJfb2ZfdXRwYXQodHAyKSA9PlxuICAgICAgICBSZWModHAyLCB0eSkgfD4gcmV3cmFwXG4gICAgICB8IFJlYyh0cDIsIHR5KSA9PiBSZWModHAyLCBzdWJzdChzLCB4LCB0eSkpIHw+IHJld3JhcFxuICAgICAgfCBMaXN0KHR5KSA9PiBMaXN0KHN1YnN0KHMsIHgsIHR5KSkgfD4gcmV3cmFwXG4gICAgICB8IFZhcih5KSA9PiBzdHIgPT0geSA/IHMgOiBWYXIoeSkgfD4gcmV3cmFwXG4gICAgICB8IFBhcmVucyh0eSkgPT4gUGFyZW5zKHN1YnN0KHMsIHgsIHR5KSkgfD4gcmV3cmFwXG4gICAgICB8IEFwKHQxLCB0MikgPT4gQXAoc3Vic3QocywgeCwgdDEpLCBzdWJzdChzLCB4LCB0MikpIHw+IHJld3JhcFxuICAgICAgfTtcbiAgICB8IE5vbmUgPT4gdHlcbiAgICB9O1xuICB9O1xuXG4gIC8qIFR5cGUgRXF1YWxpdHk6IFRoaXMgY29pbmNpZGVzIHdpdGggYWxwaGEgZXF1aXZhbGVuY2UgZm9yIG5vcm1hbGl6ZWQgdHlwZXMuXG4gICAgIE90aGVyIHR5cGVzIG1heSBiZSBlcXVpdmFsZW50IGJ1dCB0aGlzIHdpbGwgbm90IGRldGVjdCBzbyBpZiB0aGV5IGFyZSBub3Qgbm9ybWFsaXplZC4gKi9cblxuICBsZXQgcmVjIGVxX2ludGVybmFsID0gKG46IGludCwgdDE6IHQsIHQyOiB0KSA9PiB7XG4gICAgc3dpdGNoIChJZFRhZ2dlZC50ZXJtX29mKHQxKSwgSWRUYWdnZWQudGVybV9vZih0MikpIHtcbiAgICB8IChQYXJlbnModDEpLCBfKSA9PiBlcV9pbnRlcm5hbChuLCB0MSwgdDIpXG4gICAgfCAoXywgUGFyZW5zKHQyKSkgPT4gZXFfaW50ZXJuYWwobiwgdDEsIHQyKVxuICAgIHwgKFJlYyh4MSwgdDEpLCBSZWMoeDIsIHQyKSlcbiAgICB8IChGb3JhbGwoeDEsIHQxKSwgRm9yYWxsKHgyLCB0MikpID0+XG4gICAgICBsZXQgYWxwaGFfc3Vic3QgPVxuICAgICAgICBzdWJzdCh7XG4gICAgICAgICAgdGVybTogVmFyKFwiPVwiICsrIHN0cmluZ19vZl9pbnQobikpLFxuICAgICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgICAgaWRzOiBbSWQuaW52YWxpZF0sXG4gICAgICAgIH0pO1xuICAgICAgZXFfaW50ZXJuYWwobiArIDEsIGFscGhhX3N1YnN0KHgxLCB0MSksIGFscGhhX3N1YnN0KHgyLCB0MikpO1xuICAgIHwgKFJlYyhfKSwgXykgPT4gZmFsc2VcbiAgICB8IChGb3JhbGwoXyksIF8pID0+IGZhbHNlXG4gICAgfCAoSW50LCBJbnQpID0+IHRydWVcbiAgICB8IChJbnQsIF8pID0+IGZhbHNlXG4gICAgfCAoRmxvYXQsIEZsb2F0KSA9PiB0cnVlXG4gICAgfCAoRmxvYXQsIF8pID0+IGZhbHNlXG4gICAgfCAoQm9vbCwgQm9vbCkgPT4gdHJ1ZVxuICAgIHwgKEJvb2wsIF8pID0+IGZhbHNlXG4gICAgfCAoU3RyaW5nLCBTdHJpbmcpID0+IHRydWVcbiAgICB8IChTdHJpbmcsIF8pID0+IGZhbHNlXG4gICAgfCAoQXAodDEsIHQyKSwgQXAodDEnLCB0MicpKSA9PlxuICAgICAgZXFfaW50ZXJuYWwobiwgdDEsIHQxJykgJiYgZXFfaW50ZXJuYWwobiwgdDIsIHQyJylcbiAgICB8IChBcChfKSwgXykgPT4gZmFsc2VcbiAgICB8IChVbmtub3duKF8pLCBVbmtub3duKF8pKSA9PiB0cnVlXG4gICAgfCAoVW5rbm93bihfKSwgXykgPT4gZmFsc2VcbiAgICB8IChBcnJvdyh0MSwgdDIpLCBBcnJvdyh0MScsIHQyJykpID0+XG4gICAgICBlcV9pbnRlcm5hbChuLCB0MSwgdDEnKSAmJiBlcV9pbnRlcm5hbChuLCB0MiwgdDInKVxuICAgIHwgKEFycm93KF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKFByb2QodHlzMSksIFByb2QodHlzMikpID0+IExpc3QuZXF1YWwoZXFfaW50ZXJuYWwobiksIHR5czEsIHR5czIpXG4gICAgfCAoUHJvZChfKSwgXykgPT4gZmFsc2VcbiAgICB8IChMaXN0KHQxKSwgTGlzdCh0MikpID0+IGVxX2ludGVybmFsKG4sIHQxLCB0MilcbiAgICB8IChMaXN0KF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKFN1bShzbTEpLCBTdW0oc20yKSkgPT5cbiAgICAgIC8qIERvZXMgbm90IG5vcm1hbGl6ZSB0aGUgdHlwZXMuICovXG4gICAgICBDb25zdHJ1Y3Rvck1hcC5lcXVhbChlcV9pbnRlcm5hbChuKSwgc20xLCBzbTIpXG4gICAgfCAoU3VtKF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKFZhcihuMSksIFZhcihuMikpID0+IG4xID09IG4yXG4gICAgfCAoVmFyKF8pLCBfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IGZhc3RfZXF1YWwgPSBlcV9pbnRlcm5hbCgwKTtcbn1cbmFuZCBUUGF0OiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBWYXIoc3RyaW5nKVxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCB0eXZhcl9vZl91dHBhdDogdCA9PiBvcHRpb24oc3RyaW5nKTtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgVmFyKHN0cmluZylcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGFueV9tYXBfdGVybSA9XG4gICAgICBBbnkubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCByZWNfY2FsbCA9ICh7dGVybSwgX30gYXMgZXhwOiB0KSA9PiB7XG4gICAgICAuLi5leHAsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGVcbiAgICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICAgIHwgVmFyKF8pID0+IHRlcm1cbiAgICAgICAgfCBNdWx0aUhvbGUodGhpbmdzKSA9PiBNdWx0aUhvbGUoTGlzdC5tYXAoYW55X21hcF90ZXJtLCB0aGluZ3MpKVxuICAgICAgICB9LFxuICAgIH07XG4gICAgeCB8PiBmX3RwYXQocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCB0eXZhcl9vZl91dHBhdCA9ICh7dGVybSwgX306IHQpID0+XG4gICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4gU29tZSh4KVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9ICh0cDE6IHQsIHRwMjogdCkgPT5cbiAgICBzd2l0Y2ggKHRwMSB8PiBJZFRhZ2dlZC50ZXJtX29mLCB0cDIgfD4gSWRUYWdnZWQudGVybV9vZikge1xuICAgIHwgKEVtcHR5SG9sZSwgRW1wdHlIb2xlKSA9PiB0cnVlXG4gICAgfCAoSW52YWxpZChzMSksIEludmFsaWQoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKE11bHRpSG9sZSh4cyksIE11bHRpSG9sZSh5cykpID0+XG4gICAgICBMaXN0Lmxlbmd0aCh4cykgPT0gTGlzdC5sZW5ndGgoeXMpXG4gICAgICAmJiBMaXN0LmVxdWFsKEFueS5mYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoVmFyKHgpLCBWYXIoeSkpID0+IHggPT0geVxuICAgIHwgKEVtcHR5SG9sZSwgXylcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKE11bHRpSG9sZShfKSwgXylcbiAgICB8IChWYXIoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbn1cbmFuZCBSdWw6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgUnVsZXMoRXhwLnQsIGxpc3QoKFBhdC50LCBFeHAudCkpKVxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBmYXN0X2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFJ1bGVzKEV4cC50LCBsaXN0KChQYXQudCwgRXhwLnQpKSlcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGV4cF9tYXBfdGVybSA9XG4gICAgICBFeHAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBwYXRfbWFwX3Rlcm0gPVxuICAgICAgUGF0Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgYW55X21hcF90ZXJtID1cbiAgICAgIEFueS5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHJlY19jYWxsID0gKHt0ZXJtLCBffSBhcyBleHA6IHQpID0+IHtcbiAgICAgIC4uLmV4cCxcbiAgICAgIHRlcm06XG4gICAgICAgIHN3aXRjaCAodGVybSkge1xuICAgICAgICB8IEludmFsaWQoXykgPT4gdGVybVxuICAgICAgICB8IEhvbGUodGhpbmdzKSA9PiBIb2xlKExpc3QubWFwKGFueV9tYXBfdGVybSwgdGhpbmdzKSlcbiAgICAgICAgfCBSdWxlcyhlLCBybHMpID0+XG4gICAgICAgICAgUnVsZXMoXG4gICAgICAgICAgICBleHBfbWFwX3Rlcm0oZSksXG4gICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgKChwLCBlKSkgPT4gKHBhdF9tYXBfdGVybShwKSwgZXhwX21hcF90ZXJtKGUpKSxcbiAgICAgICAgICAgICAgcmxzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICB4IHw+IGZfcnVsKHJlY19jYWxsKTtcbiAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9IChyMTogdCwgcjI6IHQpID0+XG4gICAgc3dpdGNoIChyMSB8PiBJZFRhZ2dlZC50ZXJtX29mLCByMiB8PiBJZFRhZ2dlZC50ZXJtX29mKSB7XG4gICAgfCAoSW52YWxpZChzMSksIEludmFsaWQoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKEhvbGUoeHMpLCBIb2xlKHlzKSkgPT5cbiAgICAgIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cylcbiAgICAgICYmIExpc3QuZXF1YWwoQW55LmZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChSdWxlcyhlMSwgcmxzMSksIFJ1bGVzKGUyLCBybHMyKSkgPT5cbiAgICAgIEV4cC5mYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIExpc3QubGVuZ3RoKHJsczEpID09IExpc3QubGVuZ3RoKHJsczIpXG4gICAgICAmJiBMaXN0LmZvcl9hbGwyKFxuICAgICAgICAgICAoKHAxLCBlMSksIChwMiwgZTIpKSA9PlxuICAgICAgICAgICAgIFBhdC5mYXN0X2VxdWFsKHAxLCBwMikgJiYgRXhwLmZhc3RfZXF1YWwoZTEsIGUyKSxcbiAgICAgICAgICAgcmxzMSxcbiAgICAgICAgICAgcmxzMixcbiAgICAgICAgIClcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKEhvbGUoXyksIF8pXG4gICAgfCAoUnVsZXMoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbn1cblxuYW5kIEVudmlyb25tZW50OiB7XG4gIGluY2x1ZGVcbiAgICAgKG1vZHVsZSB0eXBlIG9mIFZhckJzdE1hcC5PcmRlcmVkKSB3aXRoXG4gICAgICB0eXBlIHRfKCdhKSA9IFZhckJzdE1hcC5PcmRlcmVkLnRfKCdhKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHRfKEV4cC50KTtcbn0gPSB7XG4gIGluY2x1ZGUgVmFyQnN0TWFwLk9yZGVyZWQ7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB0XyhFeHAudCk7XG59XG5cbmFuZCBDbG9zdXJlRW52aXJvbm1lbnQ6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQ7XG5cbiAgbGV0IHdyYXA6IChJZC50LCBFbnZpcm9ubWVudC50KSA9PiB0O1xuXG4gIGxldCBpZF9vZjogdCA9PiBJZC50O1xuICBsZXQgbWFwX29mOiB0ID0+IEVudmlyb25tZW50LnQ7XG5cbiAgbGV0IHRvX2xpc3Q6IHQgPT4gbGlzdCgoVmFyLnQsIEV4cC50KSk7XG5cbiAgbGV0IG9mX2Vudmlyb25tZW50OiBFbnZpcm9ubWVudC50ID0+IHQ7XG5cbiAgbGV0IGlkX2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcblxuICBsZXQgZW1wdHk6IHQ7XG4gIGxldCBpc19lbXB0eTogdCA9PiBib29sO1xuICBsZXQgbGVuZ3RoOiB0ID0+IGludDtcblxuICBsZXQgbG9va3VwOiAodCwgVmFyLnQpID0+IG9wdGlvbihFeHAudCk7XG4gIGxldCBjb250YWluczogKHQsIFZhci50KSA9PiBib29sO1xuICBsZXQgdXBkYXRlOiAoRW52aXJvbm1lbnQudCA9PiBFbnZpcm9ubWVudC50LCB0KSA9PiB0O1xuICBsZXQgdXBkYXRlX2tlZXBfaWQ6IChFbnZpcm9ubWVudC50ID0+IEVudmlyb25tZW50LnQsIHQpID0+IHQ7XG4gIGxldCBleHRlbmQ6ICh0LCAoVmFyLnQsIEV4cC50KSkgPT4gdDtcbiAgbGV0IGV4dGVuZF9rZWVwX2lkOiAodCwgKFZhci50LCBFeHAudCkpID0+IHQ7XG4gIGxldCB1bmlvbjogKHQsIHQpID0+IHQ7XG4gIGxldCB1bmlvbl9rZWVwX2lkOiAodCwgdCkgPT4gdDtcbiAgbGV0IG1hcDogKCgoVmFyLnQsIEV4cC50KSkgPT4gRXhwLnQsIHQpID0+IHQ7XG4gIGxldCBtYXBfa2VlcF9pZDogKCgoVmFyLnQsIEV4cC50KSkgPT4gRXhwLnQsIHQpID0+IHQ7XG4gIGxldCBmaWx0ZXI6ICgoKFZhci50LCBFeHAudCkpID0+IGJvb2wsIHQpID0+IHQ7XG4gIGxldCBmaWx0ZXJfa2VlcF9pZDogKCgoVmFyLnQsIEV4cC50KSkgPT4gYm9vbCwgdCkgPT4gdDtcbiAgbGV0IGZvbGQ6ICgoKFZhci50LCBFeHAudCksICdiKSA9PiAnYiwgJ2IsIHQpID0+ICdiO1xuXG4gIGxldCB3aXRob3V0X2tleXM6IChsaXN0KFZhci50KSwgdCkgPT4gdDtcblxuICBsZXQgcGxhY2Vob2xkZXI6IHQ7XG59ID0ge1xuICBtb2R1bGUgSW5uZXI6IHtcbiAgICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gICAgdHlwZSB0O1xuXG4gICAgbGV0IHdyYXA6IChJZC50LCBFbnZpcm9ubWVudC50KSA9PiB0O1xuXG4gICAgbGV0IGlkX29mOiB0ID0+IElkLnQ7XG4gICAgbGV0IG1hcF9vZjogdCA9PiBFbnZpcm9ubWVudC50O1xuICB9ID0ge1xuICAgIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgICB0eXBlIHQgPSAoSWQudCwgRW52aXJvbm1lbnQudCk7XG5cbiAgICBsZXQgd3JhcCA9IChlaSwgbWFwKTogdCA9PiAoZWksIG1hcCk7XG5cbiAgICBsZXQgaWRfb2YgPSAoKGVpLCBfKSkgPT4gZWk7XG4gICAgbGV0IG1hcF9vZiA9ICgoXywgbWFwKSkgPT4gbWFwO1xuICAgIGxldCAoc2V4cF9vZl90LCB0X29mX3NleHApID1cbiAgICAgIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaGVyZShpZF9vZiwgc2V4cF9vZl90LCB0X29mX3NleHApO1xuICB9O1xuICBpbmNsdWRlIElubmVyO1xuXG4gIGxldCB0b19saXN0ID0gZW52ID0+IGVudiB8PiBtYXBfb2YgfD4gRW52aXJvbm1lbnQudG9fbGlzdG87XG5cbiAgbGV0IG9mX2Vudmlyb25tZW50ID0gbWFwID0+IHtcbiAgICBsZXQgZWkgPSBJZC5taygpO1xuICAgIHdyYXAoZWksIG1hcCk7XG4gIH07XG5cbiAgLyogRXF1YWxzIG9ubHkgbmVlZHMgdG8gY2hlY2sgZW52aXJvbm1lbnQgaWQncyAoZmFzdGVyIHRoYW4gc3RydWN0dXJhbCBlcXVhbGl0eVxuICAgKiBjaGVja2luZy4pICovXG4gIGxldCBpZF9lcXVhbCA9IChlbnYxLCBlbnYyKSA9PiBpZF9vZihlbnYxKSA9PSBpZF9vZihlbnYyKTtcblxuICBsZXQgZW1wdHkgPSBFbnZpcm9ubWVudC5lbXB0eSB8PiBvZl9lbnZpcm9ubWVudDtcblxuICBsZXQgaXNfZW1wdHkgPSBlbnYgPT4gZW52IHw+IG1hcF9vZiB8PiBFbnZpcm9ubWVudC5pc19lbXB0eTtcblxuICBsZXQgbGVuZ3RoID0gZW52ID0+IEVudmlyb25tZW50Lmxlbmd0aChtYXBfb2YoZW52KSk7XG5cbiAgbGV0IGxvb2t1cCA9IChlbnYsIHgpID0+XG4gICAgZW52IHw+IG1hcF9vZiB8PiAobWFwID0+IEVudmlyb25tZW50Lmxvb2t1cChtYXAsIHgpKTtcblxuICBsZXQgY29udGFpbnMgPSAoZW52LCB4KSA9PlxuICAgIGVudiB8PiBtYXBfb2YgfD4gKG1hcCA9PiBFbnZpcm9ubWVudC5jb250YWlucyhtYXAsIHgpKTtcblxuICBsZXQgdXBkYXRlID0gKGYsIGVudikgPT4gZW52IHw+IG1hcF9vZiB8PiBmIHw+IG9mX2Vudmlyb25tZW50O1xuXG4gIGxldCB1cGRhdGVfa2VlcF9pZCA9IChmLCBlbnYpID0+IGVudiB8PiBtYXBfb2YgfD4gZiB8PiB3cmFwKGVudiB8PiBpZF9vZik7XG5cbiAgbGV0IGV4dGVuZCA9IChlbnYsIHhyKSA9PlxuICAgIGVudiB8PiB1cGRhdGUobWFwID0+IEVudmlyb25tZW50LmV4dGVuZChtYXAsIHhyKSk7XG5cbiAgbGV0IGV4dGVuZF9rZWVwX2lkID0gKGVudiwgeHIpID0+XG4gICAgZW52IHw+IHVwZGF0ZV9rZWVwX2lkKG1hcCA9PiBFbnZpcm9ubWVudC5leHRlbmQobWFwLCB4cikpO1xuXG4gIGxldCB1bmlvbiA9IChlbnYxLCBlbnYyKSA9PlxuICAgIGVudjIgfD4gdXBkYXRlKG1hcDIgPT4gRW52aXJvbm1lbnQudW5pb24oZW52MSB8PiBtYXBfb2YsIG1hcDIpKTtcblxuICBsZXQgdW5pb25fa2VlcF9pZCA9IChlbnYxLCBlbnYyKSA9PlxuICAgIGVudjIgfD4gdXBkYXRlX2tlZXBfaWQobWFwMiA9PiBFbnZpcm9ubWVudC51bmlvbihlbnYxIHw+IG1hcF9vZiwgbWFwMikpO1xuXG4gIGxldCBtYXAgPSAoZiwgZW52KSA9PiBlbnYgfD4gdXBkYXRlKEVudmlyb25tZW50Lm1hcG8oZikpO1xuXG4gIGxldCBtYXBfa2VlcF9pZCA9IChmLCBlbnYpID0+IGVudiB8PiB1cGRhdGVfa2VlcF9pZChFbnZpcm9ubWVudC5tYXBvKGYpKTtcblxuICBsZXQgZmlsdGVyID0gKGYsIGVudikgPT4gZW52IHw+IHVwZGF0ZShFbnZpcm9ubWVudC5maWx0ZXJvKGYpKTtcblxuICBsZXQgZmlsdGVyX2tlZXBfaWQgPSAoZiwgZW52KSA9PlxuICAgIGVudiB8PiB1cGRhdGVfa2VlcF9pZChFbnZpcm9ubWVudC5maWx0ZXJvKGYpKTtcblxuICBsZXQgZm9sZCA9IChmLCBpbml0LCBlbnYpID0+IGVudiB8PiBtYXBfb2YgfD4gRW52aXJvbm1lbnQuZm9sZG8oZiwgaW5pdCk7XG5cbiAgbGV0IHBsYWNlaG9sZGVyID0gd3JhcChJZC5pbnZhbGlkLCBFbnZpcm9ubWVudC5lbXB0eSk7XG5cbiAgbGV0IHdpdGhvdXRfa2V5cyA9IGtleXMgPT4gdXBkYXRlKEVudmlyb25tZW50LndpdGhvdXRfa2V5cyhrZXlzKSk7XG59XG5hbmQgU3RlcHBlckZpbHRlcktpbmQ6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGZpbHRlciA9IHtcbiAgICBwYXQ6IEV4cC50LFxuICAgIGFjdDogRmlsdGVyQWN0aW9uLnQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRmlsdGVyKGZpbHRlcilcbiAgICB8IFJlc2lkdWUoaW50LCBGaWx0ZXJBY3Rpb24udCk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBtYXA6IChFeHAudCA9PiBFeHAudCwgdCkgPT4gdDtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZmlsdGVyID0ge1xuICAgIHBhdDogRXhwLnQsXG4gICAgYWN0OiBGaWx0ZXJBY3Rpb24udCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBGaWx0ZXIoZmlsdGVyKVxuICAgIHwgUmVzaWR1ZShpbnQsIEZpbHRlckFjdGlvbi50KTtcblxuICBsZXQgbWFwID0gKG1hcHBlciwgZmlsdGVyKSA9PiB7XG4gICAgc3dpdGNoIChmaWx0ZXIpIHtcbiAgICB8IEZpbHRlcih7YWN0LCBwYXR9KSA9PiBGaWx0ZXIoe2FjdCwgcGF0OiBtYXBwZXIocGF0KX0pXG4gICAgfCBSZXNpZHVlKGlkeCwgYWN0KSA9PiBSZXNpZHVlKGlkeCwgYWN0KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IG1hcF90ZXJtID1cbiAgICAgIChcbiAgICAgICAgfmZfZXhwPWNvbnRpbnVlLFxuICAgICAgICB+Zl9wYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3R5cD1jb250aW51ZSxcbiAgICAgICAgfmZfdHBhdD1jb250aW51ZSxcbiAgICAgICAgfmZfcnVsPWNvbnRpbnVlLFxuICAgICAgICB+Zl9hbnk9Y29udGludWUsXG4gICAgICApID0+IHtcbiAgICBsZXQgZXhwX21hcF90ZXJtID1cbiAgICAgIEV4cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgZnVuXG4gICAgfCBGaWx0ZXIoe3BhdDogZSwgYWN0fSkgPT4gRmlsdGVyKHtwYXQ6IGV4cF9tYXBfdGVybShlKSwgYWN0fSlcbiAgICB8IFJlc2lkdWUoaSwgYSkgPT4gUmVzaWR1ZShpLCBhKTtcbiAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9IChmMSwgZjIpID0+XG4gICAgc3dpdGNoIChmMSwgZjIpIHtcbiAgICB8IChGaWx0ZXIoe3BhdDogZTEsIGFjdDogYTF9KSwgRmlsdGVyKHtwYXQ6IGUyLCBhY3Q6IGEyfSkpID0+XG4gICAgICBFeHAuZmFzdF9lcXVhbChlMSwgZTIpICYmIGExID09IGEyXG4gICAgfCAoUmVzaWR1ZShpMSwgYTEpLCBSZXNpZHVlKGkyLCBhMikpID0+IGkxID09IGkyICYmIGExID09IGEyXG4gICAgfCAoRmlsdGVyKF8pLCBfKVxuICAgIHwgKFJlc2lkdWUoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbn07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNscyA9XG4gIHwgSW52YWxpZFxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZVxuICB8IFZhcjtcblxuaW5jbHVkZSBUZXJtQmFzZS5UUGF0O1xuXG5sZXQgcmVwX2lkOiB0ID0+IElkLnQgPSBJZFRhZ2dlZC5yZXBfaWQ7XG5sZXQgZnJlc2g6IHRlcm0gPT4gdCA9IElkVGFnZ2VkLmZyZXNoO1xuXG5sZXQgaG9sZSA9ICh0bXM6IGxpc3QoVGVybUJhc2UuQW55LnQpKSA9PlxuICBzd2l0Y2ggKHRtcykge1xuICB8IFtdID0+IEVtcHR5SG9sZVxuICB8IFtfLCAuLi5fXSA9PiBNdWx0aUhvbGUodG1zKVxuICB9O1xuXG5sZXQgY2xzX29mX3Rlcm06IHRlcm0gPT4gY2xzID1cbiAgZnVuXG4gIHwgSW52YWxpZChfKSA9PiBJbnZhbGlkXG4gIHwgRW1wdHlIb2xlID0+IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZShfKSA9PiBNdWx0aUhvbGVcbiAgfCBWYXIoXykgPT4gVmFyO1xuXG5sZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBJbnZhbGlkID0+IFwiSW52YWxpZCB0eXBlIGFsaWFzXCJcbiAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gdHlwZSBhbGlhc1wiXG4gIHwgRW1wdHlIb2xlID0+IFwiRW1wdHkgdHlwZSBhbGlhcyBob2xlXCJcbiAgfCBWYXIgPT4gXCJUeXBlIGFsaWFzXCI7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGtpbmQgPVxuICB8IFNpbmdsZXRvbihUZXJtQmFzZS5UeXAudClcbiAgfCBBYnN0cmFjdDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB2YXJfZW50cnkgPSB7XG4gIG5hbWU6IFZhci50LFxuICBpZDogSWQudCxcbiAgdHlwOiBUZXJtQmFzZS5UeXAudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHZhcl9lbnRyeSA9IHtcbiAgbmFtZTogc3RyaW5nLFxuICBpZDogSWQudCxcbiAga2luZCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZW50cnkgPVxuICB8IFZhckVudHJ5KHZhcl9lbnRyeSlcbiAgfCBDb25zdHJ1Y3RvckVudHJ5KHZhcl9lbnRyeSlcbiAgfCBUVmFyRW50cnkodHZhcl9lbnRyeSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoZW50cnkpO1xuXG5sZXQgZXh0ZW5kID0gKGN0eCwgZW50cnkpID0+IExpc3QuY29ucyhlbnRyeSwgY3R4KTtcblxubGV0IGV4dGVuZF90dmFyID0gKGN0eDogdCwgdHZhcl9lbnRyeTogdHZhcl9lbnRyeSk6IHQgPT5cbiAgZXh0ZW5kKGN0eCwgVFZhckVudHJ5KHR2YXJfZW50cnkpKTtcblxubGV0IGV4dGVuZF9hbGlhcyA9IChjdHg6IHQsIG5hbWU6IHN0cmluZywgaWQ6IElkLnQsIHR5OiBUZXJtQmFzZS5UeXAudCk6IHQgPT5cbiAgZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQsIGtpbmQ6IFNpbmdsZXRvbih0eSl9KTtcblxubGV0IGV4dGVuZF9kdW1teV90dmFyID0gKGN0eDogdCwgdHZhcjogVFBhdC50KSA9PlxuICBzd2l0Y2ggKFRQYXQudHl2YXJfb2ZfdXRwYXQodHZhcikpIHtcbiAgfCBTb21lKG5hbWUpID0+IGV4dGVuZF90dmFyKGN0eCwge2tpbmQ6IEFic3RyYWN0LCBuYW1lLCBpZDogSWQuaW52YWxpZH0pXG4gIHwgTm9uZSA9PiBjdHhcbiAgfTtcblxubGV0IGxvb2t1cF90dmFyID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHR2YXJfZW50cnkpID0+XG4gIExpc3QuZmluZF9tYXAoXG4gICAgZnVuXG4gICAgfCBUVmFyRW50cnkodikgd2hlbiB2Lm5hbWUgPT0gbmFtZSA9PiBTb21lKHYpXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG5sZXQgbG9va3VwX2FsaWFzID0gKGN0eDogdCwgdDogc3RyaW5nKTogb3B0aW9uKFRlcm1CYXNlLlR5cC50KSA9PlxuICBzd2l0Y2ggKGxvb2t1cF90dmFyKGN0eCwgdCkpIHtcbiAgfCBTb21lKHtraW5kOiBTaW5nbGV0b24odHkpLCBffSkgPT4gU29tZSh0eSlcbiAgfCBTb21lKHtraW5kOiBBYnN0cmFjdCwgX30pXG4gIHwgTm9uZSA9PiBOb25lXG4gIH07XG5cbmxldCBnZXRfaWQ6IGVudHJ5ID0+IElkLnQgPVxuICBmdW5cbiAgfCBWYXJFbnRyeSh7aWQsIF99KVxuICB8IENvbnN0cnVjdG9yRW50cnkoe2lkLCBffSlcbiAgfCBUVmFyRW50cnkoe2lkLCBffSkgPT4gaWQ7XG5cbmxldCBsb29rdXBfdmFyID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHZhcl9lbnRyeSkgPT5cbiAgTGlzdC5maW5kX21hcChcbiAgICBmdW5cbiAgICB8IFZhckVudHJ5KHYpIHdoZW4gdi5uYW1lID09IG5hbWUgPT4gU29tZSh2KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxubGV0IGxvb2t1cF9jdHIgPSAoY3R4OiB0LCBuYW1lOiBzdHJpbmcpOiBvcHRpb24odmFyX2VudHJ5KSA9PlxuICBMaXN0LmZpbmRfbWFwKFxuICAgIGZ1blxuICAgIHwgQ29uc3RydWN0b3JFbnRyeSh0KSB3aGVuIHQubmFtZSA9PSBuYW1lID0+IFNvbWUodClcbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBpc19hbGlhcyA9IChjdHg6IHQsIG5hbWU6IHN0cmluZyk6IGJvb2wgPT5cbiAgc3dpdGNoIChsb29rdXBfYWxpYXMoY3R4LCBuYW1lKSkge1xuICB8IFNvbWUoXykgPT4gdHJ1ZVxuICB8IE5vbmUgPT4gZmFsc2VcbiAgfTtcblxubGV0IGlzX2Fic3RyYWN0ID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogYm9vbCA9PlxuICBzd2l0Y2ggKGxvb2t1cF90dmFyKGN0eCwgbmFtZSkpIHtcbiAgfCBTb21lKHtraW5kOiBBYnN0cmFjdCwgX30pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbmxldCBhZGRfY3RycyA9IChjdHg6IHQsIG5hbWU6IHN0cmluZywgaWQ6IElkLnQsIGN0cnM6IFRlcm1CYXNlLlR5cC5zdW1fbWFwKTogdCA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBDb25zdHJ1Y3Rvck1hcC5WYXJpYW50KGN0ciwgXywgdHlwKSA9PlxuICAgICAgU29tZShcbiAgICAgICAgQ29uc3RydWN0b3JFbnRyeSh7XG4gICAgICAgICAgbmFtZTogY3RyLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIHR5cDpcbiAgICAgICAgICAgIHN3aXRjaCAodHlwKSB7XG4gICAgICAgICAgICB8IE5vbmUgPT4gVGVybUJhc2UuVHlwLlZhcihuYW1lKSB8PiBJZFRhZ2dlZC5mcmVzaFxuICAgICAgICAgICAgfCBTb21lKHR5cCkgPT5cbiAgICAgICAgICAgICAgVGVybUJhc2UuVHlwLkFycm93KFxuICAgICAgICAgICAgICAgIHR5cCxcbiAgICAgICAgICAgICAgICBUZXJtQmFzZS5UeXAuVmFyKG5hbWUpIHw+IElkVGFnZ2VkLmZyZXNoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHw+IElkVGFnZ2VkLmZyZXNoXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB8IENvbnN0cnVjdG9yTWFwLkJhZEVudHJ5KF8pID0+IE5vbmUsXG4gICAgY3RycyxcbiAgKVxuICBAIGN0eDtcblxubGV0IHN1YnRyYWN0X3ByZWZpeCA9IChjdHg6IHQsIHByZWZpeF9jdHg6IHQpOiBvcHRpb24odCkgPT4ge1xuICAvLyBOT1RFOiBkb2VzIG5vdCBjaGVjayB0aGF0IHRoZSBwcmVmaXggaXMgYW4gYWN0dWFsIHByZWZpeFxuICBsZXQgcHJlZml4X2xlbmd0aCA9IExpc3QubGVuZ3RoKHByZWZpeF9jdHgpO1xuICBsZXQgY3R4X2xlbmd0aCA9IExpc3QubGVuZ3RoKGN0eCk7XG4gIGlmIChwcmVmaXhfbGVuZ3RoID4gY3R4X2xlbmd0aCkge1xuICAgIE5vbmU7XG4gIH0gZWxzZSB7XG4gICAgU29tZShcbiAgICAgIExpc3QucmV2KFxuICAgICAgICBMaXN0VXRpbC5zdWJsaXN0KChwcmVmaXhfbGVuZ3RoLCBjdHhfbGVuZ3RoKSwgTGlzdC5yZXYoY3R4KSksXG4gICAgICApLFxuICAgICk7XG4gIH07XG59O1xuXG5sZXQgYWRkZWRfYmluZGluZ3MgPSAoY3R4X2FmdGVyOiB0LCBjdHhfYmVmb3JlOiB0KTogdCA9PiB7XG4gIC8qIFByZWNvbmRpdGlvbjogbmV3X2N0eCBpcyBvbGRfY3R4IHBsdXMgc29tZSBuZXcgYmluZGluZ3MgKi9cbiAgbGV0IG5ld19jb3VudCA9IExpc3QubGVuZ3RoKGN0eF9hZnRlcikgLSBMaXN0Lmxlbmd0aChjdHhfYmVmb3JlKTtcbiAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9uX29wdChuZXdfY291bnQsIGN0eF9hZnRlcikpIHtcbiAgfCBTb21lKChjdHgsIF8pKSA9PiBjdHhcbiAgfCBfID0+IFtdXG4gIH07XG59O1xuXG5tb2R1bGUgVmFyU2V0ID0gU2V0Lk1ha2UoVmFyKTtcblxuLy8gTm90ZTogZmlsdGVyIG91dCBkdXBsaWNhdGVzIHdoZW4gcmVuZGVyaW5nXG5sZXQgZmlsdGVyX2R1cGxpY2F0ZXMgPSAoY3R4OiB0KTogdCA9PlxuICBjdHhcbiAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgKChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KSwgZW50cnkpID0+IHtcbiAgICAgICAgIHN3aXRjaCAoZW50cnkpIHtcbiAgICAgICAgIHwgVmFyRW50cnkoe25hbWUsIF99KVxuICAgICAgICAgfCBDb25zdHJ1Y3RvckVudHJ5KHtuYW1lLCBffSkgPT5cbiAgICAgICAgICAgVmFyU2V0Lm1lbShuYW1lLCB0ZXJtX3NldClcbiAgICAgICAgICAgICA/IChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KVxuICAgICAgICAgICAgIDogKFtlbnRyeSwgLi4uY3R4XSwgVmFyU2V0LmFkZChuYW1lLCB0ZXJtX3NldCksIHR5cF9zZXQpXG4gICAgICAgICB8IFRWYXJFbnRyeSh7bmFtZSwgX30pID0+XG4gICAgICAgICAgIFZhclNldC5tZW0obmFtZSwgdHlwX3NldClcbiAgICAgICAgICAgICA/IChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KVxuICAgICAgICAgICAgIDogKFtlbnRyeSwgLi4uY3R4XSwgdGVybV9zZXQsIFZhclNldC5hZGQobmFtZSwgdHlwX3NldCkpXG4gICAgICAgICB9XG4gICAgICAgfSxcbiAgICAgICAoW10sIFZhclNldC5lbXB0eSwgVmFyU2V0LmVtcHR5KSxcbiAgICAgKVxuICB8PiAoKChjdHgsIF8sIF8pKSA9PiBMaXN0LnJldihjdHgpKTtcblxubGV0IHNoYWRvd3NfdHlwID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogYm9vbCA9PlxuICBGb3JtLmlzX2Jhc2VfdHlwKG5hbWUpIHx8IGxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpICE9IE5vbmU7XG4iLCJvcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNscyA9XG4gIHwgSW52YWxpZFxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZVxuICB8IFN5blN3aXRjaFxuICB8IEludGVybmFsXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nXG4gIHwgQXJyb3dcbiAgfCBQcm9kXG4gIHwgU3VtXG4gIHwgTGlzdFxuICB8IFZhclxuICB8IENvbnN0cnVjdG9yXG4gIHwgUGFyZW5zXG4gIHwgQXBcbiAgfCBSZWNcbiAgfCBGb3JhbGw7XG5cbmluY2x1ZGUgVGVybUJhc2UuVHlwO1xuXG5sZXQgdGVybV9vZjogdCA9PiB0ZXJtID0gSWRUYWdnZWQudGVybV9vZjtcbmxldCB1bndyYXA6IHQgPT4gKHRlcm0sIHRlcm0gPT4gdCkgPSBJZFRhZ2dlZC51bndyYXA7XG5sZXQgZnJlc2g6IHRlcm0gPT4gdCA9IElkVGFnZ2VkLmZyZXNoO1xuLyogZnJlc2ggYXNzaWducyBhIHJhbmRvbSBpZCwgd2hlcmVhcyBta19mYXN0IGFzc2lnbnMgSWQuaW52YWxpZCwgd2hpY2hcbiAgIGlzIGEgbG90IGZhc3RlciwgYW5kIHNpbmNlIHdlIHNvIG9mdGVuIG1ha2UgdHlwZXMgYW5kIHRocm93IHRoZW0gYXdheVxuICAgc2hvcnRseSBhZnRlciwgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIGl0LiAqL1xubGV0IG1rX2Zhc3Q6IHRlcm0gPT4gdCA9IHRlcm0gPT4ge3Rlcm0sIGlkczogW0lkLmludmFsaWRdLCBjb3BpZWQ6IGZhbHNlfTtcbmxldCByZXBfaWQ6IHQgPT4gSWQudCA9IElkVGFnZ2VkLnJlcF9pZDtcblxubGV0IGhvbGUgPSAodG1zOiBsaXN0KFRlcm1CYXNlLkFueS50KSkgPT5cbiAgc3dpdGNoICh0bXMpIHtcbiAgfCBbXSA9PiBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSlcbiAgfCBbXywgLi4uX10gPT4gVW5rbm93bihIb2xlKE11bHRpSG9sZSh0bXMpKSlcbiAgfTtcblxubGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gIGZ1blxuICB8IFVua25vd24oSG9sZShJbnZhbGlkKF8pKSkgPT4gSW52YWxpZFxuICB8IFVua25vd24oSG9sZShFbXB0eUhvbGUpKSA9PiBFbXB0eUhvbGVcbiAgfCBVbmtub3duKEhvbGUoTXVsdGlIb2xlKF8pKSkgPT4gTXVsdGlIb2xlXG4gIHwgVW5rbm93bihTeW5Td2l0Y2gpID0+IFN5blN3aXRjaFxuICB8IFVua25vd24oSW50ZXJuYWwpID0+IEludGVybmFsXG4gIHwgSW50ID0+IEludFxuICB8IEZsb2F0ID0+IEZsb2F0XG4gIHwgQm9vbCA9PiBCb29sXG4gIHwgU3RyaW5nID0+IFN0cmluZ1xuICB8IExpc3QoXykgPT4gTGlzdFxuICB8IEFycm93KF8pID0+IEFycm93XG4gIHwgVmFyKF8pID0+IFZhclxuICB8IFByb2QoXykgPT4gUHJvZFxuICB8IFBhcmVucyhfKSA9PiBQYXJlbnNcbiAgfCBBcChfKSA9PiBBcFxuICB8IFN1bShfKSA9PiBTdW1cbiAgfCBSZWMoXykgPT4gUmVjXG4gIHwgRm9yYWxsKF8pID0+IEZvcmFsbDtcblxubGV0IHNob3dfY2xzOiBjbHMgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgSW52YWxpZCA9PiBcIkludmFsaWQgdHlwZVwiXG4gIHwgTXVsdGlIb2xlID0+IFwiQnJva2VuIHR5cGVcIlxuICB8IEVtcHR5SG9sZSA9PiBcIkVtcHR5IHR5cGUgaG9sZVwiXG4gIHwgU3luU3dpdGNoID0+IFwiU3ludGhldGljIHR5cGVcIlxuICB8IEludGVybmFsID0+IFwiSW50ZXJuYWwgdHlwZVwiXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBTdHJpbmdcbiAgfCBCb29sID0+IFwiQmFzZSB0eXBlXCJcbiAgfCBWYXIgPT4gXCJUeXBlIHZhcmlhYmxlXCJcbiAgfCBDb25zdHJ1Y3RvciA9PiBcIlN1bSBjb25zdHJ1Y3RvclwiXG4gIHwgTGlzdCA9PiBcIkxpc3QgdHlwZVwiXG4gIHwgQXJyb3cgPT4gXCJGdW5jdGlvbiB0eXBlXCJcbiAgfCBQcm9kID0+IFwiUHJvZHVjdCB0eXBlXCJcbiAgfCBTdW0gPT4gXCJTdW0gdHlwZVwiXG4gIHwgUGFyZW5zID0+IFwiUGFyZW50aGVzaXplZCB0eXBlXCJcbiAgfCBBcCA9PiBcIkNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uXCJcbiAgfCBSZWMgPT4gXCJSZWN1cnNpdmUgdHlwZVwiXG4gIHwgRm9yYWxsID0+IFwiRm9yYWxsIHR5cGVcIjtcblxubGV0IHJlYyBpc19hcnJvdyA9ICh0eXA6IHQpID0+IHtcbiAgc3dpdGNoICh0eXAudGVybSkge1xuICB8IFBhcmVucyh0eXApID0+IGlzX2Fycm93KHR5cClcbiAgfCBBcnJvdyhfKSA9PiB0cnVlXG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZ1xuICB8IExpc3QoXylcbiAgfCBQcm9kKF8pXG4gIHwgVmFyKF8pXG4gIHwgQXAoXylcbiAgfCBTdW0oXylcbiAgfCBGb3JhbGwoXylcbiAgfCBSZWMoXykgPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCByZWMgaXNfZm9yYWxsID0gKHR5cDogdCkgPT4ge1xuICBzd2l0Y2ggKHR5cC50ZXJtKSB7XG4gIHwgUGFyZW5zKHR5cCkgPT4gaXNfZm9yYWxsKHR5cClcbiAgfCBGb3JhbGwoXykgPT4gdHJ1ZVxuICB8IFVua25vd24oXylcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmdcbiAgfCBBcnJvdyhfKVxuICB8IExpc3QoXylcbiAgfCBQcm9kKF8pXG4gIHwgVmFyKF8pXG4gIHwgQXAoXylcbiAgfCBTdW0oXylcbiAgfCBSZWMoXykgPT4gZmFsc2VcbiAgfTtcbn07XG5cbi8qIENvbnZlcnRzIGEgc3ludGFjdGljIHR5cGUgaW50byBhIHNlbWFudGljIHR5cGUsIHNwZWNpZmljYWxseVxuICAgaXQgYWRkcyBpbXBsaWNpdCByZWN1cnNpdmUgdHlwZXMsIGFuZCByZW1vdmVzIGR1cGxpY2F0ZVxuICAgY29uc3RydWN0b3JzLiAqL1xubGV0IHJlYyB0b190eXA6IChDdHgudCwgdCkgPT4gdCA9XG4gIChjdHgsIHV0eXApID0+IHtcbiAgICBsZXQgKHRlcm0sIHJld3JhcCkgPSBJZFRhZ2dlZC51bndyYXAodXR5cCk7XG4gICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgfCBVbmtub3duKF8pXG4gICAgfCBCb29sXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBTdHJpbmcgPT4gdXR5cFxuICAgIHwgVmFyKG5hbWUpID0+XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfdHZhcihjdHgsIG5hbWUpKSB7XG4gICAgICB8IFNvbWUoXykgPT4gVmFyKG5hbWUpIHw+IHJld3JhcFxuICAgICAgfCBOb25lID0+IFVua25vd24oSG9sZShJbnZhbGlkKG5hbWUpKSkgfD4gcmV3cmFwXG4gICAgICB9XG4gICAgfCBBcnJvdyh1MSwgdTIpID0+IEFycm93KHRvX3R5cChjdHgsIHUxKSwgdG9fdHlwKGN0eCwgdTIpKSB8PiByZXdyYXBcbiAgICB8IFByb2QodXMpID0+IFByb2QoTGlzdC5tYXAodG9fdHlwKGN0eCksIHVzKSkgfD4gcmV3cmFwXG4gICAgfCBTdW0odXRzKSA9PiBTdW0odG9fY3RyX21hcChjdHgsIHV0cykpIHw+IHJld3JhcFxuICAgIHwgTGlzdCh1KSA9PiBMaXN0KHRvX3R5cChjdHgsIHUpKSB8PiByZXdyYXBcbiAgICB8IFBhcmVucyh1KSA9PiB0b190eXAoY3R4LCB1KVxuICAgIHwgRm9yYWxsKHt0ZXJtOiBJbnZhbGlkKF8pLCBffSBhcyB0cGF0LCB0Ym9keSlcbiAgICB8IEZvcmFsbCh7dGVybTogRW1wdHlIb2xlLCBffSBhcyB0cGF0LCB0Ym9keSlcbiAgICB8IEZvcmFsbCh7dGVybTogTXVsdGlIb2xlKF8pLCBffSBhcyB0cGF0LCB0Ym9keSkgPT5cbiAgICAgIEZvcmFsbCh0cGF0LCB0b190eXAoY3R4LCB0Ym9keSkpIHw+IHJld3JhcFxuICAgIHwgRm9yYWxsKHt0ZXJtOiBWYXIobmFtZSksIF99IGFzIHV0cGF0LCB0Ym9keSkgPT5cbiAgICAgIGxldCBjdHggPVxuICAgICAgICBDdHguZXh0ZW5kX3R2YXIoXG4gICAgICAgICAgY3R4LFxuICAgICAgICAgIHtuYW1lLCBpZDogSWRUYWdnZWQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9LFxuICAgICAgICApO1xuICAgICAgRm9yYWxsKHV0cGF0LCB0b190eXAoY3R4LCB0Ym9keSkpIHw+IHJld3JhcDtcbiAgICB8IFJlYyh7dGVybTogSW52YWxpZChfKSwgX30gYXMgdHBhdCwgdGJvZHkpXG4gICAgfCBSZWMoe3Rlcm06IEVtcHR5SG9sZSwgX30gYXMgdHBhdCwgdGJvZHkpXG4gICAgfCBSZWMoe3Rlcm06IE11bHRpSG9sZShfKSwgX30gYXMgdHBhdCwgdGJvZHkpID0+XG4gICAgICBSZWModHBhdCwgdG9fdHlwKGN0eCwgdGJvZHkpKSB8PiByZXdyYXBcbiAgICB8IFJlYyh7dGVybTogVmFyKG5hbWUpLCBffSBhcyB1dHBhdCwgdGJvZHkpID0+XG4gICAgICBsZXQgY3R4ID1cbiAgICAgICAgQ3R4LmV4dGVuZF90dmFyKFxuICAgICAgICAgIGN0eCxcbiAgICAgICAgICB7bmFtZSwgaWQ6IElkVGFnZ2VkLnJlcF9pZCh1dHBhdCksIGtpbmQ6IEFic3RyYWN0fSxcbiAgICAgICAgKTtcbiAgICAgIFJlYyh1dHBhdCwgdG9fdHlwKGN0eCwgdGJvZHkpKSB8PiByZXdyYXA7XG4gICAgLyogVGhlIGJlbG93IGNhc2VzIHNob3VsZCBvY2N1ciBvbmx5IGluc2lkZSBzdW1zICovXG4gICAgfCBBcChfKSA9PiBVbmtub3duKEludGVybmFsKSB8PiByZXdyYXBcbiAgICB9O1xuICB9XG5hbmQgdG9fdmFyaWFudDpcbiAgKEN0eC50LCBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpKSA9PiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpID1cbiAgY3R4ID0+XG4gICAgZnVuXG4gICAgfCBWYXJpYW50KGN0ciwgaWRzLCB1KSA9PlxuICAgICAgQ29uc3RydWN0b3JNYXAuVmFyaWFudChjdHIsIGlkcywgT3B0aW9uLm1hcCh0b190eXAoY3R4KSwgdSkpXG4gICAgfCBCYWRFbnRyeSh1KSA9PiBDb25zdHJ1Y3Rvck1hcC5CYWRFbnRyeSh0b190eXAoY3R4LCB1KSlcbmFuZCB0b19jdHJfbWFwID0gKGN0eDogQ3R4LnQsIHV0czogbGlzdChDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpKSkgPT4ge1xuICB1dHNcbiAgfD4gTGlzdC5tYXAodG9fdmFyaWFudChjdHgpKVxuICB8PiBMaXN0VXRpbC5kZWR1cF9mKFxuICAgICAgICh4OiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpLCB5OiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpKSA9PlxuICAgICAgIHN3aXRjaCAoeCwgeSkge1xuICAgICAgIHwgKFZhcmlhbnQoYzEsIF8sIF8pLCBWYXJpYW50KGMyLCBfLCBfKSkgPT4gYzEgPT0gYzJcbiAgICAgICB8IChWYXJpYW50KF8pLCBCYWRFbnRyeShfKSlcbiAgICAgICB8IChCYWRFbnRyeShfKSwgVmFyaWFudChfKSlcbiAgICAgICB8IChCYWRFbnRyeShfKSwgQmFkRW50cnkoXykpID0+IGZhbHNlXG4gICAgICAgfVxuICAgICApO1xufTtcblxuLyogRnVuY3Rpb25zIGJlbG93IHRoaXMgcG9pbnQgYXNzdW1lIHRoYXQgdHlwZXMgaGF2ZSBiZWVuIHRocm91Z2ggdGhlIHRvX3R5cCBmdW5jdGlvbiBhYm92ZSAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNvdXJjZSA9IHtcbiAgaWQ6IElkLnQsXG4gIHR5OiB0LFxufTtcblxuLyogU3RyaXAgbG9jYXRpb24gaW5mb3JtYXRpb24gZnJvbSBhIGxpc3Qgb2Ygc291cmNlcyAqL1xubGV0IG9mX3NvdXJjZSA9IExpc3QubWFwKChzb3VyY2U6IHNvdXJjZSkgPT4gc291cmNlLnR5KTtcblxuLyogSG93IHR5cGUgcHJvdmVuYW5jZSBpbmZvcm1hdGlvbiBzaG91bGQgYmUgY29sbGF0ZWQgd2hlblxuICAgam9pbmluZyB1bmtub3duIHR5cGVzLiBUaGlzIHByb2JhYmx5IHJlcXVpcmVzIG1vcmUgdGhvdWdodCxcbiAgIGJ1dCByaWdodCBub3cgVHlwZUhvbGUgc3RyaWN0bHkgcHJlZG9taW5hdGVzIG92ZXIgSW50ZXJuYWxcbiAgIHdoaWNoIHN0cmljdGx5IHByZWRvbWluYXRlcyBvdmVyIFN5blN3aXRjaC4gKi9cbmxldCBqb2luX3R5cGVfcHJvdmVuYW5jZSA9XG4gICAgKHAxOiB0eXBlX3Byb3ZlbmFuY2UsIHAyOiB0eXBlX3Byb3ZlbmFuY2UpOiB0eXBlX3Byb3ZlbmFuY2UgPT5cbiAgc3dpdGNoIChwMSwgcDIpIHtcbiAgfCAoSG9sZShoMSksIEhvbGUoaDIpKSB3aGVuIGgxID09IGgyID0+IEhvbGUoaDEpXG4gIHwgKEhvbGUoRW1wdHlIb2xlKSwgSG9sZShFbXB0eUhvbGUpIHwgU3luU3dpdGNoKVxuICB8IChTeW5Td2l0Y2gsIEhvbGUoRW1wdHlIb2xlKSkgPT4gSG9sZShFbXB0eUhvbGUpXG4gIHwgKFN5blN3aXRjaCwgSW50ZXJuYWwpXG4gIHwgKEludGVybmFsLCBTeW5Td2l0Y2gpID0+IFN5blN3aXRjaFxuICB8IChJbnRlcm5hbCB8IEhvbGUoXyksIF8pXG4gIHwgKF8sIEhvbGUoXykpID0+IEludGVybmFsXG4gIHwgKFN5blN3aXRjaCwgU3luU3dpdGNoKSA9PiBTeW5Td2l0Y2hcbiAgfTtcblxubGV0IHJlYyBmcmVlX3ZhcnMgPSAofmJvdW5kPVtdLCB0eTogdCk6IGxpc3QoVmFyLnQpID0+XG4gIHN3aXRjaCAodGVybV9vZih0eSkpIHtcbiAgfCBVbmtub3duKF8pXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nID0+IFtdXG4gIHwgQXAodDEsIHQyKSA9PiBmcmVlX3ZhcnMofmJvdW5kLCB0MSkgQCBmcmVlX3ZhcnMofmJvdW5kLCB0MilcbiAgfCBWYXIodikgPT4gTGlzdC5tZW0odiwgYm91bmQpID8gW10gOiBbdl1cbiAgfCBQYXJlbnModHkpID0+IGZyZWVfdmFycyh+Ym91bmQsIHR5KVxuICB8IExpc3QodHkpID0+IGZyZWVfdmFycyh+Ym91bmQsIHR5KVxuICB8IEFycm93KHQxLCB0MikgPT4gZnJlZV92YXJzKH5ib3VuZCwgdDEpIEAgZnJlZV92YXJzKH5ib3VuZCwgdDIpXG4gIHwgU3VtKHNtKSA9PiBDb25zdHJ1Y3Rvck1hcC5mcmVlX3ZhcmlhYmxlcyhmcmVlX3ZhcnMofmJvdW5kKSwgc20pXG4gIHwgUHJvZCh0eXMpID0+IExpc3RVdGlsLmZsYXRfbWFwKGZyZWVfdmFycyh+Ym91bmQpLCB0eXMpXG4gIHwgUmVjKHgsIHR5KVxuICB8IEZvcmFsbCh4LCB0eSkgPT5cbiAgICBmcmVlX3ZhcnMofmJvdW5kPSh4IHw+IFRQYXQudHl2YXJfb2ZfdXRwYXQgfD4gT3B0aW9uLnRvX2xpc3QpIEAgYm91bmQsIHR5KVxuICB9O1xuXG5sZXQgdmFyX2NvdW50ID0gcmVmKDApO1xubGV0IGZyZXNoX3ZhciA9ICh2YXJfbmFtZTogc3RyaW5nKSA9PiB7XG4gIGxldCB4ID0gdmFyX2NvdW50XjtcbiAgdmFyX2NvdW50IDo9IHggKyAxO1xuICB2YXJfbmFtZSArKyBcIl/OsVwiICsrIHN0cmluZ19vZl9pbnQoeCk7XG59O1xuXG5sZXQgdW5yb2xsID0gKHR5OiB0KTogdCA9PlxuICBzd2l0Y2ggKHRlcm1fb2YodHkpKSB7XG4gIHwgUmVjKHRwLCB0eV9ib2R5KSA9PiBzdWJzdCh0eSwgdHAsIHR5X2JvZHkpXG4gIHwgXyA9PiB0eVxuICB9O1xuXG4vKiBUeXBlIEVxdWFsaXR5OiBUaGlzIGNvaW5jaWRlcyB3aXRoIGFscGhhIGVxdWl2YWxlbmNlIGZvciBub3JtYWxpemVkIHR5cGVzLlxuICAgT3RoZXIgdHlwZXMgbWF5IGJlIGVxdWl2YWxlbnQgYnV0IHRoaXMgd2lsbCBub3QgZGV0ZWN0IHNvIGlmIHRoZXkgYXJlIG5vdCBub3JtYWxpemVkLiAqL1xubGV0IGVxID0gKHQxOiB0LCB0MjogdCk6IGJvb2wgPT4gZmFzdF9lcXVhbCh0MSwgdDIpO1xuXG4vKiBMYXR0aWNlIGpvaW4gb24gdHlwZXMuIFRoaXMgaXMgYSBMVUIgam9pbiBpbiB0aGUgaGF6ZWwyXG4gICBzZW5zZSBpbiB0aGF0IGFueSB0eXBlIGRvbWluYXRlcyBVbmtub3duLiBUaGUgb3B0aW9uYWxcbiAgIHJlc29sdmUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyLCBpbiB0aGUgY2FzZSBvZiBhIHR5cGVcbiAgIHZhcmlhYmxlIGFuZCBhIHN1Y2Nlc2Z1bCBqb2luLCB0byByZXR1cm4gdGhlIHJlc29sdmVkIGpvaW4gdHlwZSxcbiAgIG9yIHRvIHJldHVybiB0aGUgKGZpcnN0KSB0eXBlIHZhcmlhYmxlIGZvciByZWFkYWJpbGl0eSAqL1xubGV0IHJlYyBqb2luID0gKH5yZXNvbHZlPWZhbHNlLCB+Zml4LCBjdHg6IEN0eC50LCB0eTE6IHQsIHR5MjogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCBqb2luJyA9IGpvaW4ofnJlc29sdmUsIH5maXgsIGN0eCk7XG4gIHN3aXRjaCAodGVybV9vZih0eTEpLCB0ZXJtX29mKHR5MikpIHtcbiAgfCAoXywgUGFyZW5zKHR5MikpID0+IGpvaW4nKHR5MSwgdHkyKVxuICB8IChQYXJlbnModHkxKSwgXykgPT4gam9pbicodHkxLCB0eTIpXG4gIHwgKF8sIFVua25vd24oSG9sZShfKSkpIHdoZW4gZml4ID0+XG4gICAgLyogTk9URShhbmRyZXcpOiBUaGlzIGlzIGxvYWQgYmVhcmluZ1xuICAgICAgIGZvciBlbnN1cmluZyB0aGF0IGZ1bmN0aW9uIGxpdGVyYWxzIGdldCBhcHByb3ByaWF0ZVxuICAgICAgIGNhc3RzLiBEb2N1bWVudGF0aW9uL0R5bmFtaWNzIGhhcyByZWdyZXNzaW9uIHRlc3RzICovXG4gICAgU29tZSh0eTIpXG4gIHwgKFVua25vd24ocDEpLCBVbmtub3duKHAyKSkgPT5cbiAgICBTb21lKFVua25vd24oam9pbl90eXBlX3Byb3ZlbmFuY2UocDEsIHAyKSkgfD4gbWtfZmFzdClcbiAgfCAoVW5rbm93bihfKSwgXykgPT4gU29tZSh0eTIpXG4gIHwgKF8sIFVua25vd24oSW50ZXJuYWwgfCBTeW5Td2l0Y2gpKSA9PiBTb21lKHR5MSlcbiAgfCAoVmFyKG4xKSwgVmFyKG4yKSkgPT5cbiAgICBpZiAobjEgPT0gbjIpIHtcbiAgICAgIFNvbWUodHkxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0KiB0eTEgPSBDdHgubG9va3VwX2FsaWFzKGN0eCwgbjEpO1xuICAgICAgbGV0KiB0eTIgPSBDdHgubG9va3VwX2FsaWFzKGN0eCwgbjIpO1xuICAgICAgbGV0KyB0eV9qb2luID0gam9pbicodHkxLCB0eTIpO1xuICAgICAgIXJlc29sdmUgJiYgZXEodHkxLCB0eV9qb2luKSA/IHR5MSA6IHR5X2pvaW47XG4gICAgfVxuICB8IChWYXIobmFtZSksIF8pID0+XG4gICAgbGV0KiB0eV9uYW1lID0gQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpO1xuICAgIGxldCsgdHlfam9pbiA9IGpvaW4nKHR5X25hbWUsIHR5Mik7XG4gICAgIXJlc29sdmUgJiYgZXEodHlfbmFtZSwgdHlfam9pbikgPyB0eTEgOiB0eV9qb2luO1xuICB8IChfLCBWYXIobmFtZSkpID0+XG4gICAgbGV0KiB0eV9uYW1lID0gQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpO1xuICAgIGxldCsgdHlfam9pbiA9IGpvaW4nKHR5X25hbWUsIHR5MSk7XG4gICAgIXJlc29sdmUgJiYgZXEodHlfbmFtZSwgdHlfam9pbikgPyB0eTIgOiB0eV9qb2luO1xuICAvKiBOb3RlOiBPcmRlcmluZyBvZiBVbmtub3duLCBWYXIsIGFuZCBSZWMgYWJvdmUgaXMgbG9hZC1iZWFyaW5nISAqL1xuICB8IChSZWModHAxLCB0eTEpLCBSZWModHAyLCB0eTIpKSA9PlxuICAgIGxldCBjdHggPSBDdHguZXh0ZW5kX2R1bW15X3R2YXIoY3R4LCB0cDEpO1xuICAgIGxldCB0eTEnID1cbiAgICAgIHN3aXRjaCAoVFBhdC50eXZhcl9vZl91dHBhdCh0cDIpKSB7XG4gICAgICB8IFNvbWUoeDIpID0+IHN1YnN0KFZhcih4MikgfD4gbWtfZmFzdCwgdHAxLCB0eTEpXG4gICAgICB8IE5vbmUgPT4gdHkxXG4gICAgICB9O1xuICAgIGxldCsgdHlfYm9keSA9IGpvaW4ofnJlc29sdmUsIH5maXgsIGN0eCwgdHkxJywgdHkyKTtcbiAgICBSZWModHAxLCB0eV9ib2R5KSB8PiBta19mYXN0O1xuICB8IChSZWMoXyksIF8pID0+IE5vbmVcbiAgfCAoRm9yYWxsKHgxLCB0eTEpLCBGb3JhbGwoeDIsIHR5MikpID0+XG4gICAgbGV0IGN0eCA9IEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIHgxKTtcbiAgICBsZXQgdHkxJyA9XG4gICAgICBzd2l0Y2ggKFRQYXQudHl2YXJfb2ZfdXRwYXQoeDIpKSB7XG4gICAgICB8IFNvbWUoeDIpID0+IHN1YnN0KFZhcih4MikgfD4gbWtfZmFzdCwgeDEsIHR5MSlcbiAgICAgIHwgTm9uZSA9PiB0eTFcbiAgICAgIH07XG4gICAgbGV0KyB0eV9ib2R5ID0gam9pbih+cmVzb2x2ZSwgfmZpeCwgY3R4LCB0eTEnLCB0eTIpO1xuICAgIEZvcmFsbCh4MSwgdHlfYm9keSkgfD4gbWtfZmFzdDtcbiAgLyogTm90ZSBmb3IgYWJvdmU6IHRoZXJlIGlzIG5vIGRhbmdlciBvZiBmcmVlIHZhcmlhYmxlIGNhcHR1cmUgYXNcbiAgICAgc3Vic3QgaXRzZWxmIHBlcmZvcm1zIGNhcHR1cmUgYXZvaWRpbmcgc3Vic3RpdHV0aW9uLiBIb3dldmVyIHRoaXNcbiAgICAgbWF5IGdlbmVyYXRlIGludGVybmFsIHR5cGUgdmFyaWFibGUgbmFtZXMgdGhhdCBpbiBjb3JuZXIgY2FzZXMgY2FuXG4gICAgIGJlIGV4cG9zZWQgdG8gdGhlIHVzZXIuIFdlIHByZXNlcnZlIHRoZSB2YXJpYWJsZSBuYW1lIG9mIHRoZVxuICAgICBzZWNvbmQgdHlwZSB0byBwcmVzZXJ2ZSBzeW50aGVzaXplZCB0eXBlIHZhcmlhYmxlIG5hbWVzLCB3aGljaFxuICAgICBjb21lIGZyb20gdXNlciBhbm5vdGF0aW9ucy4gKi9cbiAgfCAoRm9yYWxsKF8pLCBfKSA9PiBOb25lXG4gIHwgKEludCwgSW50KSA9PiBTb21lKHR5MSlcbiAgfCAoSW50LCBfKSA9PiBOb25lXG4gIHwgKEZsb2F0LCBGbG9hdCkgPT4gU29tZSh0eTEpXG4gIHwgKEZsb2F0LCBfKSA9PiBOb25lXG4gIHwgKEJvb2wsIEJvb2wpID0+IFNvbWUodHkxKVxuICB8IChCb29sLCBfKSA9PiBOb25lXG4gIHwgKFN0cmluZywgU3RyaW5nKSA9PiBTb21lKHR5MSlcbiAgfCAoU3RyaW5nLCBfKSA9PiBOb25lXG4gIHwgKEFycm93KHR5MSwgdHkyKSwgQXJyb3codHkxJywgdHkyJykpID0+XG4gICAgbGV0KiB0eTEgPSBqb2luJyh0eTEsIHR5MScpO1xuICAgIGxldCsgdHkyID0gam9pbicodHkyLCB0eTInKTtcbiAgICBBcnJvdyh0eTEsIHR5MikgfD4gbWtfZmFzdDtcbiAgfCAoQXJyb3coXyksIF8pID0+IE5vbmVcbiAgfCAoUHJvZCh0eXMxKSwgUHJvZCh0eXMyKSkgPT5cbiAgICBsZXQqIHR5cyA9IExpc3RVdGlsLm1hcDJfb3B0KGpvaW4nLCB0eXMxLCB0eXMyKTtcbiAgICBsZXQrIHR5cyA9IE9wdFV0aWwuc2VxdWVuY2UodHlzKTtcbiAgICBQcm9kKHR5cykgfD4gbWtfZmFzdDtcbiAgfCAoUHJvZChfKSwgXykgPT4gTm9uZVxuICB8IChTdW0oc20xKSwgU3VtKHNtMikpID0+XG4gICAgbGV0KyBzbScgPSBDb25zdHJ1Y3Rvck1hcC5qb2luKGVxLCBqb2luKH5yZXNvbHZlLCB+Zml4LCBjdHgpLCBzbTEsIHNtMik7XG4gICAgU3VtKHNtJykgfD4gbWtfZmFzdDtcbiAgfCAoU3VtKF8pLCBfKSA9PiBOb25lXG4gIHwgKExpc3QodHkxKSwgTGlzdCh0eTIpKSA9PlxuICAgIGxldCsgdHkgPSBqb2luJyh0eTEsIHR5Mik7XG4gICAgTGlzdCh0eSkgfD4gbWtfZmFzdDtcbiAgfCAoTGlzdChfKSwgXykgPT4gTm9uZVxuICB8IChBcChfKSwgXykgPT4gZmFpbHdpdGgoXCJUeXBlIGpvaW4gb2YgYXBcIilcbiAgfTtcbn07XG5cbi8qIFJFUVVJUkVTIE5PUk1BTElaRUQgVFlQRVNcbiAgIFJlbW92ZSBzeW5zd2l0Y2hlcyBmcm9tIHQxIGJ5IG1hY2hpbmcgYWdhaW5zdCB0MiAqL1xubGV0IHJlYyBtYXRjaF9zeW5zd2l0Y2ggPSAodDE6IHQsIHQyOiB0KSA9PiB7XG4gIGxldCAodGVybTEsIHJld3JhcDEpID0gdW53cmFwKHQxKTtcbiAgc3dpdGNoICh0ZXJtMSwgdGVybV9vZih0MikpIHtcbiAgfCAoUGFyZW5zKHQxKSwgXykgPT4gUGFyZW5zKG1hdGNoX3N5bnN3aXRjaCh0MSwgdDIpKSB8PiByZXdyYXAxXG4gIHwgKFVua25vd24oU3luU3dpdGNoKSwgXykgPT4gdDJcbiAgLy8gVGhlc2UgY2FzZXMgY2FuJ3QgaGF2ZSBhIHN5bnN3aXRjaCBpbnNpZGVcbiAgfCAoVW5rbm93bihfKSwgXylcbiAgfCAoSW50LCBfKVxuICB8IChGbG9hdCwgXylcbiAgfCAoQm9vbCwgXylcbiAgfCAoU3RyaW5nLCBfKVxuICB8IChWYXIoXyksIF8pXG4gIHwgKEFwKF8pLCBfKVxuICB8IChSZWMoXyksIF8pXG4gIHwgKEZvcmFsbChfKSwgXykgPT4gdDFcbiAgLy8gVGhlc2UgbWlnaHRcbiAgfCAoTGlzdCh0eTEpLCBMaXN0KHR5MikpID0+IExpc3QobWF0Y2hfc3luc3dpdGNoKHR5MSwgdHkyKSkgfD4gcmV3cmFwMVxuICB8IChMaXN0KF8pLCBfKSA9PiB0MVxuICB8IChBcnJvdyh0eTEsIHR5MiksIEFycm93KHR5MScsIHR5MicpKSA9PlxuICAgIEFycm93KG1hdGNoX3N5bnN3aXRjaCh0eTEsIHR5MScpLCBtYXRjaF9zeW5zd2l0Y2godHkyLCB0eTInKSkgfD4gcmV3cmFwMVxuICB8IChBcnJvdyhfKSwgXykgPT4gdDFcbiAgfCAoUHJvZCh0eXMxKSwgUHJvZCh0eXMyKSkgd2hlbiBMaXN0Lmxlbmd0aCh0eXMxKSA9PSBMaXN0Lmxlbmd0aCh0eXMyKSA9PlxuICAgIGxldCB0eXMgPSBMaXN0Lm1hcDIobWF0Y2hfc3luc3dpdGNoLCB0eXMxLCB0eXMyKTtcbiAgICBQcm9kKHR5cykgfD4gcmV3cmFwMTtcbiAgfCAoUHJvZChfKSwgXykgPT4gdDFcbiAgfCAoU3VtKHNtMSksIFN1bShzbTIpKSA9PlxuICAgIGxldCBzbScgPSBDb25zdHJ1Y3Rvck1hcC5tYXRjaF9zeW5zd2l0Y2gobWF0Y2hfc3luc3dpdGNoLCBzbTEsIHNtMik7XG4gICAgU3VtKHNtJykgfD4gcmV3cmFwMTtcbiAgfCAoU3VtKF8pLCBfKSA9PiB0MVxuICB9O1xufTtcblxubGV0IGpvaW5fZml4ID0gam9pbih+Zml4PXRydWUpO1xuXG5sZXQgam9pbl9hbGwgPSAofmVtcHR5OiB0LCBjdHg6IEN0eC50LCB0czogbGlzdCh0KSk6IG9wdGlvbih0KSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoYWNjLCB0eSkgPT4gT3B0VXRpbC5hbmRfdGhlbihqb2luKH5maXg9ZmFsc2UsIGN0eCwgdHkpLCBhY2MpLFxuICAgIFNvbWUoZW1wdHkpLFxuICAgIHRzLFxuICApO1xuXG5sZXQgaXNfY29uc2lzdGVudCA9IChjdHg6IEN0eC50LCB0eTE6IHQsIHR5MjogdCk6IGJvb2wgPT5cbiAgam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5MSwgdHkyKSAhPSBOb25lO1xuXG5sZXQgcmVjIHdlYWtfaGVhZF9ub3JtYWxpemUgPSAoY3R4OiBDdHgudCwgdHk6IHQpOiB0ID0+XG4gIHN3aXRjaCAodGVybV9vZih0eSkpIHtcbiAgfCBWYXIoeCkgPT5cbiAgICBzd2l0Y2ggKEN0eC5sb29rdXBfYWxpYXMoY3R4LCB4KSkge1xuICAgIHwgU29tZSh0eSkgPT4gd2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KVxuICAgIHwgTm9uZSA9PiB0eVxuICAgIH1cbiAgfCBfID0+IHR5XG4gIH07XG5cbmxldCByZWMgbm9ybWFsaXplID0gKGN0eDogQ3R4LnQsIHR5OiB0KTogdCA9PiB7XG4gIGxldCAodGVybSwgcmV3cmFwKSA9IHVud3JhcCh0eSk7XG4gIHN3aXRjaCAodGVybSkge1xuICB8IFZhcih4KSA9PlxuICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIHgpKSB7XG4gICAgfCBTb21lKHR5KSA9PiBub3JtYWxpemUoY3R4LCB0eSlcbiAgICB8IE5vbmUgPT4gdHlcbiAgICB9XG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZyA9PiB0eVxuICB8IFBhcmVucyh0KSA9PiB0XG4gIHwgTGlzdCh0KSA9PiBMaXN0KG5vcm1hbGl6ZShjdHgsIHQpKSB8PiByZXdyYXBcbiAgfCBBcCh0MSwgdDIpID0+IEFwKG5vcm1hbGl6ZShjdHgsIHQxKSwgbm9ybWFsaXplKGN0eCwgdDIpKSB8PiByZXdyYXBcbiAgfCBBcnJvdyh0MSwgdDIpID0+XG4gICAgQXJyb3cobm9ybWFsaXplKGN0eCwgdDEpLCBub3JtYWxpemUoY3R4LCB0MikpIHw+IHJld3JhcFxuICB8IFByb2QodHMpID0+IFByb2QoTGlzdC5tYXAobm9ybWFsaXplKGN0eCksIHRzKSkgfD4gcmV3cmFwXG4gIHwgU3VtKHRzKSA9PlxuICAgIFN1bShDb25zdHJ1Y3Rvck1hcC5tYXAoT3B0aW9uLm1hcChub3JtYWxpemUoY3R4KSksIHRzKSkgfD4gcmV3cmFwXG4gIHwgUmVjKHRwYXQsIHR5KSA9PlxuICAgIC8qIE5PVEU6IER1bW15IHR2YXIgYWRkZWQgaGFzIGZha2UgaWQgYnV0IHNob3VsZG4ndCBtYXR0ZXJcbiAgICAgICBhcyBpbiBjdXJyZW50IGltcGxlbWVudGF0aW9uIFJlY3MgZG8gbm90IG9jY3VyIGluIHRoZVxuICAgICAgIHN1cmZhY2Ugc3ludGF4LCBzbyB3ZSB3b24ndCB0cnkgdG8ganVtcCB0byB0aGVtLiAqL1xuICAgIFJlYyh0cGF0LCBub3JtYWxpemUoQ3R4LmV4dGVuZF9kdW1teV90dmFyKGN0eCwgdHBhdCksIHR5KSkgfD4gcmV3cmFwXG4gIHwgRm9yYWxsKG5hbWUsIHR5KSA9PlxuICAgIEZvcmFsbChuYW1lLCBub3JtYWxpemUoQ3R4LmV4dGVuZF9kdW1teV90dmFyKGN0eCwgbmFtZSksIHR5KSkgfD4gcmV3cmFwXG4gIH07XG59O1xuXG5sZXQgbWF0Y2hlZF9hcnJvdyA9IChjdHgsIHR5KSA9PlxuICBzd2l0Y2ggKHRlcm1fb2Yod2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KSkpIHtcbiAgfCBBcnJvdyh0eV9pbiwgdHlfb3V0KSA9PiAodHlfaW4sIHR5X291dClcbiAgfCBVbmtub3duKFN5blN3aXRjaCkgPT4gKFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3QsXG4gICAgICBVbmtub3duKFN5blN3aXRjaCkgfD4gbWtfZmFzdCxcbiAgICApXG4gIHwgXyA9PiAoVW5rbm93bihJbnRlcm5hbCkgfD4gbWtfZmFzdCwgVW5rbm93bihJbnRlcm5hbCkgfD4gbWtfZmFzdClcbiAgfTtcblxubGV0IG1hdGNoZWRfZm9yYWxsID0gKGN0eCwgdHkpID0+XG4gIHN3aXRjaCAodGVybV9vZih3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSkge1xuICB8IEZvcmFsbCh0LCB0eSkgPT4gKFNvbWUodCksIHR5KVxuICB8IFVua25vd24oU3luU3dpdGNoKSA9PiAoTm9uZSwgVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3QpXG4gIHwgXyA9PiAoTm9uZSwgVW5rbm93bihJbnRlcm5hbCkgfD4gbWtfZmFzdClcbiAgfTtcblxubGV0IG1hdGNoZWRfcHJvZCA9IChjdHgsIGxlbmd0aCwgdHkpID0+XG4gIHN3aXRjaCAodGVybV9vZih3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSkge1xuICB8IFByb2QodHlzKSB3aGVuIExpc3QubGVuZ3RoKHR5cykgPT0gbGVuZ3RoID0+IHR5c1xuICB8IFVua25vd24oU3luU3dpdGNoKSA9PlxuICAgIExpc3QuaW5pdChsZW5ndGgsIF8gPT4gVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3QpXG4gIHwgXyA9PiBMaXN0LmluaXQobGVuZ3RoLCBfID0+IFVua25vd24oSW50ZXJuYWwpIHw+IG1rX2Zhc3QpXG4gIH07XG5cbmxldCBtYXRjaGVkX2xpc3QgPSAoY3R4LCB0eSkgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHdlYWtfaGVhZF9ub3JtYWxpemUoY3R4LCB0eSkpKSB7XG4gIHwgTGlzdCh0eSkgPT4gdHlcbiAgfCBVbmtub3duKFN5blN3aXRjaCkgPT4gVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3RcbiAgfCBfID0+IFVua25vd24oSW50ZXJuYWwpIHw+IG1rX2Zhc3RcbiAgfTtcblxubGV0IG1hdGNoZWRfYXJncyA9IChjdHgsIGRlZmF1bHRfYXJpdHksIHR5KSA9PiB7XG4gIGxldCB0eScgPSB3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpO1xuICBzd2l0Y2ggKHRlcm1fb2YodHknKSkge1xuICB8IFByb2QoW18sIC4uLl9dIGFzIHR5cykgPT4gdHlzXG4gIHwgVW5rbm93bihfKSA9PiBMaXN0LmluaXQoZGVmYXVsdF9hcml0eSwgXyA9PiB0eScpXG4gIHwgXyA9PiBbdHknXVxuICB9O1xufTtcblxubGV0IGdldF9zdW1fY29uc3RydWN0b3JzID0gKGN0eDogQ3R4LnQsIHR5OiB0KTogb3B0aW9uKHN1bV9tYXApID0+IHtcbiAgbGV0IHR5ID0gd2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KTtcbiAgc3dpdGNoICh0ZXJtX29mKHR5KSkge1xuICB8IFN1bShzbSkgPT4gU29tZShzbSlcbiAgfCBSZWMoXykgPT5cbiAgICAvKiBOb3RlOiBXZSBtdXN0IHVucm9sbCBoZXJlIHRvIGdldCByaWdodCBjdHIgdHlwZXM7XG4gICAgICAgb3RoZXJ3aXNlIHRoZSByZWMgcGFyYW1ldGVyIHdpbGwgbGVhay4gSG93ZXZlciwgc2VlaW5nXG4gICAgICAgYXMgc3Vic3RpdHV0aW9uIGlzIHRvbyBleHBlbnNpdmUgdG8gYmUgdXNlZCBoZXJlLCB3ZVxuICAgICAgIGN1cnJlbnRseSBtYWtpbmcgdGhlIG9wdGltaXphdGlvbiB0aGF0LCBzaW5jZSBhbGxcbiAgICAgICByZWN1cnNpdmUgdHlwZXMgYXJlIHR5cGUgYWxpc2VzIHdoaWNoIHVzZSB0aGUgYWxpYXMgbmFtZVxuICAgICAgIGFzIHRoZSByZWN1cnNpdmUgcGFyYW1ldGVyLCBhbmQgdHlwZSBhbGlhc2VzIGNhbm5vdCBiZVxuICAgICAgIHNoYWRvd2VkLCBpdCBpcyBzYWZlIHRvIHNpbXBseSByZW1vdmUgdGhlIFJlYyBjb25zdHJ1Y3RvcixcbiAgICAgICBwcm92aWRlZCB3ZSBoYXZlbid0IGVzY2FwZWQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIGFsaWFzXG4gICAgICAgaXMgYm91bmQuIElmIGVpdGhlciBvZiB0aGUgYWJvdmUgYXNzdW1wdGlvbnMgYmVjb21lIGludmFsaWQsXG4gICAgICAgdGhlIGJlbG93IGNvZGUgd2lsbCBiZSBpbmNvcnJlY3QhICovXG4gICAgbGV0IHR5ID1cbiAgICAgIHN3aXRjaCAodHkgfD4gdGVybV9vZikge1xuICAgICAgfCBSZWMoe3Rlcm06IFZhcih4KSwgX30sIHR5X2JvZHkpID0+XG4gICAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIHgpKSB7XG4gICAgICAgIHwgTm9uZSA9PiB1bnJvbGwodHkpXG4gICAgICAgIHwgU29tZShfKSA9PiB0eV9ib2R5XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiB0eVxuICAgICAgfTtcbiAgICBzd2l0Y2ggKHR5IHw+IHRlcm1fb2YpIHtcbiAgICB8IFN1bShzbSkgPT4gU29tZShzbSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuXG5sZXQgaXNfdW5rbm93biA9ICh0eTogdCk6IGJvb2wgPT5cbiAgc3dpdGNoICh0eSB8PiB0ZXJtX29mKSB7XG4gIHwgVW5rbm93bihfKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG4vKiBEb2VzIHRoZSB0eXBlIHJlcXVpcmUgcGFyZW50aGVzZXMgd2hlbiBvbiB0aGUgbGVmdCBvZiBhbiBhcnJvdyBmb3IgcHJpbnRpbmc/ICovXG5sZXQgcmVjIG5lZWRzX3BhcmVucyA9ICh0eTogdCk6IGJvb2wgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHR5KSkge1xuICB8IFBhcmVucyh0eSkgPT4gbmVlZHNfcGFyZW5zKHR5KVxuICB8IEFwKF8pXG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgU3RyaW5nXG4gIHwgQm9vbFxuICB8IFZhcihfKSA9PiBmYWxzZVxuICB8IFJlYyhfLCBfKVxuICB8IEZvcmFsbChfLCBfKSA9PiB0cnVlXG4gIHwgTGlzdChfKSA9PiBmYWxzZSAvKiBpcyBhbHJlYWR5IHdyYXBwZWQgaW4gW10gKi9cbiAgfCBBcnJvdyhfLCBfKSA9PiB0cnVlXG4gIHwgUHJvZChfKVxuICB8IFN1bShfKSA9PiB0cnVlIC8qIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIChBICsgQikgLT4gQyBhbmQgQSArIChCIC0+IEMpICovXG4gIH07XG5cbmxldCBwcmV0dHlfcHJpbnRfdHZhciA9ICh0djogVFBhdC50KTogc3RyaW5nID0+XG4gIHN3aXRjaCAoSWRUYWdnZWQudGVybV9vZih0dikpIHtcbiAgfCBWYXIoeCkgPT4geFxuICB8IEludmFsaWQoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBNdWx0aUhvbGUoXykgPT4gXCI/XCJcbiAgfTtcblxuLyogRXNzZW50aWFsbHkgcmVjcmVhdGVzIGhhejNsd2ViL3ZpZXcvVHlwZS5yZSdzIHZpZXdfdHkgYnV0IHdpdGggc3RyaW5nIG91dHB1dCAqL1xubGV0IHJlYyBwcmV0dHlfcHJpbnQgPSAodHk6IHQpOiBzdHJpbmcgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHR5KSkge1xuICB8IFBhcmVucyh0eSkgPT4gcHJldHR5X3ByaW50KHR5KVxuICB8IEFwKF8pXG4gIHwgVW5rbm93bihfKSA9PiBcIj9cIlxuICB8IEludCA9PiBcIkludFwiXG4gIHwgRmxvYXQgPT4gXCJGbG9hdFwiXG4gIHwgQm9vbCA9PiBcIkJvb2xcIlxuICB8IFN0cmluZyA9PiBcIlN0cmluZ1wiXG4gIHwgVmFyKHR2YXIpID0+IHR2YXJcbiAgfCBMaXN0KHQpID0+IFwiW1wiICsrIHByZXR0eV9wcmludCh0KSArKyBcIl1cIlxuICB8IEFycm93KHQxLCB0MikgPT4gcGFyZW5fcHJldHR5X3ByaW50KHQxKSArKyBcIi0+XCIgKysgcHJldHR5X3ByaW50KHQyKVxuICB8IFN1bShzbSkgPT5cbiAgICBzd2l0Y2ggKHNtKSB7XG4gICAgfCBbXSA9PiBcIis/XCJcbiAgICB8IFt0MF0gPT4gXCIrXCIgKysgY3RyX3ByZXR0eV9wcmludCh0MClcbiAgICB8IFt0MCwgLi4udHNdID0+XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKGFjYywgdCkgPT4gYWNjICsrIFwiK1wiICsrIGN0cl9wcmV0dHlfcHJpbnQodCksXG4gICAgICAgIGN0cl9wcmV0dHlfcHJpbnQodDApLFxuICAgICAgICB0cyxcbiAgICAgIClcbiAgICB9XG4gIHwgUHJvZChbXSkgPT4gXCIoKVwiXG4gIHwgUHJvZChbdDAsIC4uLnRzXSkgPT5cbiAgICBcIihcIlxuICAgICsrIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKGFjYywgdCkgPT4gYWNjICsrIFwiLCBcIiArKyBwcmV0dHlfcHJpbnQodCksXG4gICAgICAgICBwcmV0dHlfcHJpbnQodDApLFxuICAgICAgICAgdHMsXG4gICAgICAgKVxuICAgICsrIFwiKVwiXG4gIHwgUmVjKHR2LCB0KSA9PiBcInJlYyBcIiArKyBwcmV0dHlfcHJpbnRfdHZhcih0dikgKysgXCItPlwiICsrIHByZXR0eV9wcmludCh0KVxuICB8IEZvcmFsbCh0diwgdCkgPT5cbiAgICBcImZvcmFsbCBcIiArKyBwcmV0dHlfcHJpbnRfdHZhcih0dikgKysgXCItPlwiICsrIHByZXR0eV9wcmludCh0KVxuICB9XG5hbmQgY3RyX3ByZXR0eV9wcmludCA9XG4gIGZ1blxuICB8IENvbnN0cnVjdG9yTWFwLlZhcmlhbnQoY3RyLCBfLCBOb25lKSA9PiBjdHJcbiAgfCBDb25zdHJ1Y3Rvck1hcC5WYXJpYW50KGN0ciwgXywgU29tZSh0KSkgPT5cbiAgICBjdHIgKysgXCIoXCIgKysgcHJldHR5X3ByaW50KHQpICsrIFwiKVwiXG4gIHwgQ29uc3RydWN0b3JNYXAuQmFkRW50cnkoXykgPT4gXCI/XCJcbmFuZCBwYXJlbl9wcmV0dHlfcHJpbnQgPSB0eXAgPT5cbiAgaWYgKG5lZWRzX3BhcmVucyh0eXApKSB7XG4gICAgXCIoXCIgKysgcHJldHR5X3ByaW50KHR5cCkgKysgXCIpXCI7XG4gIH0gZWxzZSB7XG4gICAgcHJldHR5X3ByaW50KHR5cCk7XG4gIH07XG4iLCJbQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBWYXJNYXAudF8oVHlwLnQpO1xuaW5jbHVkZSBWYXJNYXA7XG4iLCJtb2R1bGUgUGF0ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlXG4gICAgfCBXaWxkXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IExpc3RMaXRcbiAgICB8IENvbnN0cnVjdG9yXG4gICAgfCBDb25zXG4gICAgfCBWYXJcbiAgICB8IFR1cGxlXG4gICAgfCBQYXJlbnNcbiAgICB8IEFwXG4gICAgfCBDYXN0O1xuXG4gIGluY2x1ZGUgVGVybUJhc2UuUGF0O1xuXG4gIGxldCByZXBfaWQgPSAoe2lkcywgX306IHQpID0+IHtcbiAgICBhc3NlcnQoaWRzICE9IFtdKTtcbiAgICBMaXN0LmhkKGlkcyk7XG4gIH07XG5cbiAgbGV0IHRlcm1fb2Y6IHQgPT4gVGVybUJhc2UuUGF0LnRlcm0gPSBJZFRhZ2dlZC50ZXJtX29mO1xuXG4gIGxldCB1bndyYXA6IHQgPT4gKHRlcm0sIHRlcm0gPT4gdCkgPSBJZFRhZ2dlZC51bndyYXA7XG5cbiAgbGV0IGZyZXNoOiB0ZXJtID0+IHQgPSBJZFRhZ2dlZC5mcmVzaDtcblxuICBsZXQgaG9sZSA9ICh0bXM6IGxpc3QoVGVybUJhc2UuQW55LnQpKSA9PlxuICAgIHN3aXRjaCAodG1zKSB7XG4gICAgfCBbXSA9PiBFbXB0eUhvbGVcbiAgICB8IFtfLCAuLi5fXSA9PiBNdWx0aUhvbGUodG1zKVxuICAgIH07XG5cbiAgbGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gICAgZnVuXG4gICAgfCBJbnZhbGlkKF8pID0+IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZSA9PiBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKSA9PiBNdWx0aUhvbGVcbiAgICB8IFdpbGQgPT4gV2lsZFxuICAgIHwgSW50KF8pID0+IEludFxuICAgIHwgRmxvYXQoXykgPT4gRmxvYXRcbiAgICB8IEJvb2woXykgPT4gQm9vbFxuICAgIHwgU3RyaW5nKF8pID0+IFN0cmluZ1xuICAgIHwgTGlzdExpdChfKSA9PiBMaXN0TGl0XG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBDb25zdHJ1Y3RvclxuICAgIHwgQ29ucyhfKSA9PiBDb25zXG4gICAgfCBWYXIoXykgPT4gVmFyXG4gICAgfCBUdXBsZShfKSA9PiBUdXBsZVxuICAgIHwgUGFyZW5zKF8pID0+IFBhcmVuc1xuICAgIHwgQXAoXykgPT4gQXBcbiAgICB8IENhc3QoXykgPT4gQ2FzdDtcblxuICBsZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZCA9PiBcIkludmFsaWQgcGF0dGVyblwiXG4gICAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gcGF0dGVyblwiXG4gICAgfCBFbXB0eUhvbGUgPT4gXCJFbXB0eSBwYXR0ZXJuIGhvbGVcIlxuICAgIHwgV2lsZCA9PiBcIldpbGRjYXJkXCJcbiAgICB8IEludCA9PiBcIkludGVnZXIgbGl0ZXJhbFwiXG4gICAgfCBGbG9hdCA9PiBcIkZsb2F0IGxpdGVyYWxcIlxuICAgIHwgQm9vbCA9PiBcIkJvb2xlYW4gbGl0ZXJhbFwiXG4gICAgfCBTdHJpbmcgPT4gXCJTdHJpbmcgbGl0ZXJhbFwiXG4gICAgfCBMaXN0TGl0ID0+IFwiTGlzdCBsaXRlcmFsXCJcbiAgICB8IENvbnN0cnVjdG9yID0+IFwiQ29uc3RydWN0b3JcIlxuICAgIHwgQ29ucyA9PiBcIkNvbnNcIlxuICAgIHwgVmFyID0+IFwiVmFyaWFibGUgYmluZGluZ1wiXG4gICAgfCBUdXBsZSA9PiBcIlR1cGxlXCJcbiAgICB8IFBhcmVucyA9PiBcIlBhcmVudGhlc2l6ZWQgcGF0dGVyblwiXG4gICAgfCBBcCA9PiBcIkNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uXCJcbiAgICB8IENhc3QgPT4gXCJBbm5vdGF0aW9uXCI7XG5cbiAgbGV0IHJlYyBpc192YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdClcbiAgICB8IENhc3QocGF0LCBfLCBfKSA9PiBpc192YXIocGF0KVxuICAgIHwgVmFyKF8pID0+IHRydWVcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFR1cGxlKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQXAoXykgPT4gZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgaXNfZnVuX3ZhciA9IChwYXQ6IHQpID0+IHtcbiAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgfCBQYXJlbnMocGF0KSA9PiBpc19mdW5fdmFyKHBhdClcbiAgICB8IENhc3QocGF0LCB0eXAsIF8pID0+XG4gICAgICBpc192YXIocGF0KSAmJiAoVVR5cC5pc19hcnJvdyh0eXApIHx8IFR5cC5pc19mb3JhbGwodHlwKSlcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFZhcihfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBBcChfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBpc190dXBsZV9vZl9hcnJvd3MgPSAocGF0OiB0KSA9PlxuICAgIGlzX2Z1bl92YXIocGF0KVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgIHwgUGFyZW5zKHBhdCkgPT4gaXNfdHVwbGVfb2ZfYXJyb3dzKHBhdClcbiAgICAgIHwgVHVwbGUocGF0cykgPT4gcGF0cyB8PiBMaXN0LmZvcl9hbGwoaXNfZnVuX3ZhcilcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IFdpbGRcbiAgICAgIHwgSW50KF8pXG4gICAgICB8IEZsb2F0KF8pXG4gICAgICB8IEJvb2woXylcbiAgICAgIHwgU3RyaW5nKF8pXG4gICAgICB8IExpc3RMaXQoXylcbiAgICAgIHwgQ29ucyhfLCBfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgfCBBcChfKSA9PiBmYWxzZVxuICAgICAgfVxuICAgICk7XG5cbiAgbGV0IHJlYyBpc190dXBsZV9vZl92YXJzID0gKHBhdDogdCkgPT5cbiAgICBpc192YXIocGF0KVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgIHwgUGFyZW5zKHBhdClcbiAgICAgIHwgQ2FzdChwYXQsIF8sIF8pID0+IGlzX3R1cGxlX29mX3ZhcnMocGF0KVxuICAgICAgfCBUdXBsZShwYXRzKSA9PiBwYXRzIHw+IExpc3QuZm9yX2FsbChpc192YXIpXG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBXaWxkXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IFN0cmluZyhfKVxuICAgICAgfCBMaXN0TGl0KF8pXG4gICAgICB8IENvbnMoXywgXylcbiAgICAgIHwgVmFyKF8pXG4gICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICB8IEFwKF8pID0+IGZhbHNlXG4gICAgICB9XG4gICAgKTtcblxuICBsZXQgcmVjIGdldF92YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gZ2V0X3ZhcihwYXQpXG4gICAgfCBWYXIoeCkgPT4gU29tZSh4KVxuICAgIHwgQ2FzdCh4LCBfLCBfKSA9PiBnZXRfdmFyKHgpXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZFxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBDb25zKF8sIF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICB8IEFwKF8pID0+IE5vbmVcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgZ2V0X2Z1bl92YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gZ2V0X2Z1bl92YXIocGF0KVxuICAgIHwgQ2FzdChwYXQsIHQxLCBfKSA9PlxuICAgICAgaWYgKFR5cC5pc19hcnJvdyh0MSkgfHwgVVR5cC5pc19mb3JhbGwodDEpKSB7XG4gICAgICAgIGdldF92YXIocGF0KSB8PiBPcHRpb24ubWFwKHZhciA9PiB2YXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTm9uZTtcbiAgICAgIH1cbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFZhcihfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBBcChfKSA9PiBOb25lXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGdldF9udW1fb2ZfdmFycyA9IChwYXQ6IHQpID0+XG4gICAgaWYgKGlzX3ZhcihwYXQpKSB7XG4gICAgICBTb21lKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgICB8IFBhcmVucyhwYXQpXG4gICAgICB8IENhc3QocGF0LCBfLCBfKSA9PiBnZXRfbnVtX29mX3ZhcnMocGF0KVxuICAgICAgfCBUdXBsZShwYXRzKSA9PlxuICAgICAgICBpc190dXBsZV9vZl92YXJzKHBhdCkgPyBTb21lKExpc3QubGVuZ3RoKHBhdHMpKSA6IE5vbmVcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IFdpbGRcbiAgICAgIHwgSW50KF8pXG4gICAgICB8IEZsb2F0KF8pXG4gICAgICB8IEJvb2woXylcbiAgICAgIHwgU3RyaW5nKF8pXG4gICAgICB8IExpc3RMaXQoXylcbiAgICAgIHwgQ29ucyhfLCBfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICAgIHwgQXAoXykgPT4gTm9uZVxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCBjdHJfbmFtZSA9IChwOiB0KTogb3B0aW9uKENvbnN0cnVjdG9yLnQpID0+XG4gICAgc3dpdGNoIChwLnRlcm0pIHtcbiAgICB8IENvbnN0cnVjdG9yKG5hbWUpID0+IFNvbWUobmFtZSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG59O1xuXG5tb2R1bGUgRXhwID0ge1xuICBpbmNsdWRlIFRlcm1CYXNlLkV4cDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlXG4gICAgfCBTdGF0aWNFcnJvckhvbGVcbiAgICB8IER5bmFtaWNFcnJvckhvbGVcbiAgICB8IEZhaWxlZENhc3RcbiAgICB8IERlZmVycmFsXG4gICAgfCBCb29sXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBTdHJpbmdcbiAgICB8IExpc3RMaXRcbiAgICB8IENvbnN0cnVjdG9yXG4gICAgfCBGdW5cbiAgICB8IFR5cEZ1blxuICAgIHwgVHVwbGVcbiAgICB8IFZhclxuICAgIHwgTWV0YVZhclxuICAgIHwgTGV0XG4gICAgfCBGaXhGXG4gICAgfCBUeUFsaWFzXG4gICAgfCBBcFxuICAgIHwgVHlwQXBcbiAgICB8IERlZmVycmVkQXBcbiAgICB8IFBpcGVsaW5lXG4gICAgfCBJZlxuICAgIHwgU2VxXG4gICAgfCBUZXN0XG4gICAgfCBGaWx0ZXJcbiAgICB8IENsb3N1cmVcbiAgICB8IFBhcmVuc1xuICAgIHwgQ29uc1xuICAgIHwgVW5PcChPcGVyYXRvcnMub3BfdW4pXG4gICAgfCBCaW5PcChPcGVyYXRvcnMub3BfYmluKVxuICAgIHwgQnVpbHRpbkZ1blxuICAgIHwgTWF0Y2hcbiAgICB8IENhc3RcbiAgICB8IExpc3RDb25jYXQ7XG5cbiAgbGV0IGhvbGUgPSAodG1zOiBsaXN0KFRlcm1CYXNlLkFueS50KSk6IHRlcm0gPT5cbiAgICBzd2l0Y2ggKHRtcykge1xuICAgIHwgW10gPT4gRW1wdHlIb2xlXG4gICAgfCBbXywgLi4uX10gPT4gTXVsdGlIb2xlKHRtcylcbiAgICB9O1xuXG4gIGxldCByZXBfaWQ6IHQgPT4gSWQudCA9IElkVGFnZ2VkLnJlcF9pZDtcbiAgbGV0IGZyZXNoOiB0ZXJtID0+IHQgPSBJZFRhZ2dlZC5mcmVzaDtcbiAgbGV0IHRlcm1fb2Y6IHQgPT4gdGVybSA9IElkVGFnZ2VkLnRlcm1fb2Y7XG4gIGxldCB1bndyYXA6IHQgPT4gKHRlcm0sIHRlcm0gPT4gdCkgPSBJZFRhZ2dlZC51bndyYXA7XG5cbiAgbGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gICAgZnVuXG4gICAgfCBJbnZhbGlkKF8pID0+IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZSA9PiBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKSA9PiBNdWx0aUhvbGVcbiAgICB8IER5bmFtaWNFcnJvckhvbGUoXykgPT4gRHluYW1pY0Vycm9ySG9sZVxuICAgIHwgRmFpbGVkQ2FzdChfKSA9PiBGYWlsZWRDYXN0XG4gICAgfCBEZWZlcnJhbChfKSA9PiBEZWZlcnJhbFxuICAgIHwgQm9vbChfKSA9PiBCb29sXG4gICAgfCBJbnQoXykgPT4gSW50XG4gICAgfCBGbG9hdChfKSA9PiBGbG9hdFxuICAgIHwgU3RyaW5nKF8pID0+IFN0cmluZ1xuICAgIHwgTGlzdExpdChfKSA9PiBMaXN0TGl0XG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBDb25zdHJ1Y3RvclxuICAgIHwgRnVuKF8pID0+IEZ1blxuICAgIHwgVHlwRnVuKF8pID0+IFR5cEZ1blxuICAgIHwgVHVwbGUoXykgPT4gVHVwbGVcbiAgICB8IFZhcihfKSA9PiBWYXJcbiAgICB8IExldChfKSA9PiBMZXRcbiAgICB8IEZpeEYoXykgPT4gRml4RlxuICAgIHwgVHlBbGlhcyhfKSA9PiBUeUFsaWFzXG4gICAgfCBBcChfKSA9PiBBcFxuICAgIHwgVHlwQXAoXykgPT4gVHlwQXBcbiAgICB8IERlZmVycmVkQXAoXykgPT4gRGVmZXJyZWRBcFxuICAgIHwgSWYoXykgPT4gSWZcbiAgICB8IFNlcShfKSA9PiBTZXFcbiAgICB8IFRlc3QoXykgPT4gVGVzdFxuICAgIHwgRmlsdGVyKF8pID0+IEZpbHRlclxuICAgIHwgQ2xvc3VyZShfKSA9PiBDbG9zdXJlXG4gICAgfCBQYXJlbnMoXykgPT4gUGFyZW5zXG4gICAgfCBDb25zKF8pID0+IENvbnNcbiAgICB8IExpc3RDb25jYXQoXykgPT4gTGlzdENvbmNhdFxuICAgIHwgVW5PcChvcCwgXykgPT4gVW5PcChvcClcbiAgICB8IEJpbk9wKG9wLCBfLCBfKSA9PiBCaW5PcChvcClcbiAgICB8IEJ1aWx0aW5GdW4oXykgPT4gQnVpbHRpbkZ1blxuICAgIHwgTWF0Y2goXykgPT4gTWF0Y2hcbiAgICB8IENhc3QoXykgPT4gQ2FzdDtcblxuICBsZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZCA9PiBcIkludmFsaWQgZXhwcmVzc2lvblwiXG4gICAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gZXhwcmVzc2lvblwiXG4gICAgfCBFbXB0eUhvbGUgPT4gXCJFbXB0eSBleHByZXNzaW9uIGhvbGVcIlxuICAgIHwgU3RhdGljRXJyb3JIb2xlID0+IFwiU3RhdGljIGVycm9yIGhvbGVcIlxuICAgIHwgRHluYW1pY0Vycm9ySG9sZSA9PiBcIkR5bmFtaWMgZXJyb3IgaG9sZVwiXG4gICAgfCBGYWlsZWRDYXN0ID0+IFwiRmFpbGVkIGNhc3RcIlxuICAgIHwgRGVmZXJyYWwgPT4gXCJEZWZlcnJhbFwiXG4gICAgfCBCb29sID0+IFwiQm9vbGVhbiBsaXRlcmFsXCJcbiAgICB8IEludCA9PiBcIkludGVnZXIgbGl0ZXJhbFwiXG4gICAgfCBGbG9hdCA9PiBcIkZsb2F0IGxpdGVyYWxcIlxuICAgIHwgU3RyaW5nID0+IFwiU3RyaW5nIGxpdGVyYWxcIlxuICAgIHwgTGlzdExpdCA9PiBcIkxpc3QgbGl0ZXJhbFwiXG4gICAgfCBDb25zdHJ1Y3RvciA9PiBcIkNvbnN0cnVjdG9yXCJcbiAgICB8IEZ1biA9PiBcIkZ1bmN0aW9uIGxpdGVyYWxcIlxuICAgIHwgVHlwRnVuID0+IFwiVHlwZSBGdW5jdGlvbiBMaXRlcmFsXCJcbiAgICB8IFR1cGxlID0+IFwiVHVwbGUgbGl0ZXJhbFwiXG4gICAgfCBWYXIgPT4gXCJWYXJpYWJsZSByZWZlcmVuY2VcIlxuICAgIHwgTWV0YVZhciA9PiBcIk1ldGEgdmFyaWFibGUgcmVmZXJlbmNlXCJcbiAgICB8IExldCA9PiBcIkxldCBleHByZXNzaW9uXCJcbiAgICB8IEZpeEYgPT4gXCJGaXhwb2ludCBvcGVyYXRvclwiXG4gICAgfCBUeUFsaWFzID0+IFwiVHlwZSBBbGlhcyBkZWZpbml0aW9uXCJcbiAgICB8IEFwID0+IFwiQXBwbGljYXRpb25cIlxuICAgIHwgVHlwQXAgPT4gXCJUeXBlIGFwcGxpY2F0aW9uXCJcbiAgICB8IERlZmVycmVkQXAgPT4gXCJQYXJ0aWFsIEFwcGxpY2F0aW9uXCJcbiAgICB8IFBpcGVsaW5lID0+IFwiUGlwZWxpbmUgZXhwcmVzc2lvblwiXG4gICAgfCBJZiA9PiBcIklmIGV4cHJlc3Npb25cIlxuICAgIHwgU2VxID0+IFwiU2VxdWVuY2UgZXhwcmVzc2lvblwiXG4gICAgfCBUZXN0ID0+IFwiVGVzdFwiXG4gICAgfCBGaWx0ZXIgPT4gXCJGaWx0ZXJcIlxuICAgIHwgQ2xvc3VyZSA9PiBcIkNsb3N1cmVcIlxuICAgIHwgUGFyZW5zID0+IFwiUGFyZW50aGVzaXplZCBleHByZXNzaW9uXCJcbiAgICB8IENvbnMgPT4gXCJDb25zXCJcbiAgICB8IExpc3RDb25jYXQgPT4gXCJMaXN0IENvbmNhdGVuYXRpb25cIlxuICAgIHwgQmluT3Aob3ApID0+IE9wZXJhdG9ycy5zaG93X2Jpbm9wKG9wKVxuICAgIHwgVW5PcChvcCkgPT4gT3BlcmF0b3JzLnNob3dfdW5vcChvcClcbiAgICB8IEJ1aWx0aW5GdW4gPT4gXCJCdWlsdC1pbiBGdW5jdGlvblwiXG4gICAgfCBNYXRjaCA9PiBcIkNhc2UgZXhwcmVzc2lvblwiXG4gICAgfCBDYXN0ID0+IFwiQ2FzdCBleHByZXNzaW9uXCI7XG5cbiAgLy8gVHlwZnVuIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgZnVuY3Rpb24gaGVyZSBhcyB0aGlzIGlzIG9ubHkgdXNlZCB0b1xuICAvLyBkZXRlcm1pbmUgd2hlbiB0byBhbGxvdyBmb3IgcmVjdXJzaXZlIGRlZmluaXRpb25zIGluIGEgbGV0IGJpbmRpbmcuXG4gIGxldCByZWMgaXNfZnVuID0gKGU6IHQpID0+IHtcbiAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgIHwgUGFyZW5zKGUpID0+IGlzX2Z1bihlKVxuICAgIHwgQ2FzdChlLCBfLCBfKSA9PiBpc19mdW4oZSlcbiAgICB8IFR5cEZ1bihfKVxuICAgIHwgRnVuKF8pXG4gICAgfCBCdWlsdGluRnVuKF8pID0+IHRydWVcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgfCBGYWlsZWRDYXN0KF8pXG4gICAgfCBEZWZlcnJhbChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgVmFyKF8pXG4gICAgfCBMZXQoXylcbiAgICB8IEZpeEYoXylcbiAgICB8IFR5QWxpYXMoXylcbiAgICB8IEFwKF8pXG4gICAgfCBUeXBBcChfKVxuICAgIHwgRGVmZXJyZWRBcChfKVxuICAgIHwgSWYoXylcbiAgICB8IFNlcShfKVxuICAgIHwgVGVzdChfKVxuICAgIHwgRmlsdGVyKF8pXG4gICAgfCBDb25zKF8pXG4gICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgfCBDbG9zdXJlKF8pXG4gICAgfCBVbk9wKF8pXG4gICAgfCBCaW5PcChfKVxuICAgIHwgTWF0Y2goXylcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGlzX3R1cGxlX29mX2Z1bmN0aW9ucyA9IChlOiB0KSA9PlxuICAgIGlzX2Z1bihlKVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgICB8IENhc3QoZSwgXywgXylcbiAgICAgIHwgUGFyZW5zKGUpID0+IGlzX3R1cGxlX29mX2Z1bmN0aW9ucyhlKVxuICAgICAgfCBUdXBsZShlcykgPT4gZXMgfD4gTGlzdC5mb3JfYWxsKGlzX2Z1bilcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgICAgIHwgRmFpbGVkQ2FzdChfKVxuICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBTdHJpbmcoXylcbiAgICAgIHwgTGlzdExpdChfKVxuICAgICAgfCBGdW4oXylcbiAgICAgIHwgVHlwRnVuKF8pXG4gICAgICB8IENsb3N1cmUoXylcbiAgICAgIHwgQnVpbHRpbkZ1bihfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgTGV0KF8pXG4gICAgICB8IEZpeEYoXylcbiAgICAgIHwgVHlBbGlhcyhfKVxuICAgICAgfCBBcChfKVxuICAgICAgfCBUeXBBcChfKVxuICAgICAgfCBEZWZlcnJlZEFwKF8pXG4gICAgICB8IElmKF8pXG4gICAgICB8IFNlcShfKVxuICAgICAgfCBUZXN0KF8pXG4gICAgICB8IEZpbHRlcihfKVxuICAgICAgfCBDb25zKF8pXG4gICAgICB8IExpc3RDb25jYXQoXylcbiAgICAgIHwgVW5PcChfKVxuICAgICAgfCBCaW5PcChfKVxuICAgICAgfCBNYXRjaChfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICAgICAgfVxuICAgICk7XG5cbiAgbGV0IGN0cl9uYW1lID0gKGU6IHQpOiBvcHRpb24oQ29uc3RydWN0b3IudCkgPT5cbiAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgIHwgQ29uc3RydWN0b3IobmFtZSkgPT4gU29tZShuYW1lKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgaXNfZGVmZXJyYWwgPSAoZTogdCkgPT4ge1xuICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgfCBEZWZlcnJhbChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGdldF9udW1fb2ZfZnVuY3Rpb25zID0gKGU6IHQpID0+XG4gICAgaWYgKGlzX2Z1bihlKSkge1xuICAgICAgU29tZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChlLnRlcm0pIHtcbiAgICAgIHwgUGFyZW5zKGUpID0+IGdldF9udW1fb2ZfZnVuY3Rpb25zKGUpXG4gICAgICB8IFR1cGxlKGVzKSA9PiBpc190dXBsZV9vZl9mdW5jdGlvbnMoZSkgPyBTb21lKExpc3QubGVuZ3RoKGVzKSkgOiBOb25lXG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgICB8IEZhaWxlZENhc3QoXylcbiAgICAgIHwgRml4RihfKVxuICAgICAgfCBDbG9zdXJlKF8pXG4gICAgICB8IEJ1aWx0aW5GdW4oXylcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBTdHJpbmcoXylcbiAgICAgIHwgTGlzdExpdChfKVxuICAgICAgfCBGdW4oXylcbiAgICAgIHwgVHlwRnVuKF8pXG4gICAgICB8IFZhcihfKVxuICAgICAgfCBMZXQoXylcbiAgICAgIHwgRmlsdGVyKF8pXG4gICAgICB8IFR5QWxpYXMoXylcbiAgICAgIHwgQXAoXylcbiAgICAgIHwgVHlwQXAoXylcbiAgICAgIHwgRGVmZXJyZWRBcChfKVxuICAgICAgfCBJZihfKVxuICAgICAgfCBTZXEoXylcbiAgICAgIHwgVGVzdChfKVxuICAgICAgfCBDb25zKF8pXG4gICAgICB8IExpc3RDb25jYXQoXylcbiAgICAgIHwgVW5PcChfKVxuICAgICAgfCBCaW5PcChfKVxuICAgICAgfCBNYXRjaChfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBOb25lXG4gICAgICB9O1xuICAgIH07XG59O1xuXG5tb2R1bGUgUnVsID0ge1xuICBpbmNsdWRlIFRlcm1CYXNlLlJ1bDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IFJ1bGU7XG5cbiAgLy8gZXhhbXBsZSBvZiBhd2t3YXJkbmVzcyBpbmR1Y2VkIGJ5IGhhdmluZyBmb3JtcyBsaWtlIHJ1bGVzXG4gIC8vIHRoYXQgbWF5IGhhdmUgYSBkaWZmZXJlbnQtc29ydGVkIGNoaWxkIHdpdGggbm8gZGVsaW1pdGVyc1xuICAvLyAoZWcgc2NydXQgd2l0aCBubyBydWxlcylcbiAgbGV0IGlkcyA9ICh+YW55X2lkcywge2lkcywgdGVybSwgX306IHQpID0+XG4gICAgc3dpdGNoIChpZHMpIHtcbiAgICB8IFtfLCAuLi5fXSA9PiBpZHNcbiAgICB8IFtdID0+XG4gICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgIHwgSG9sZShbdG0sIC4uLl9dKSA9PiBhbnlfaWRzKHRtKVxuICAgICAgfCBSdWxlcyhzY3J1dCwgW10pID0+IHNjcnV0Lmlkc1xuICAgICAgfCBfID0+IFtdXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgcmVwX2lkID0gKH5hbnlfaWRzLCB0bSkgPT5cbiAgICBzd2l0Y2ggKGlkcyh+YW55X2lkcywgdG0pKSB7XG4gICAgfCBbXSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiVUV4cC5yZXBfaWRcIikpXG4gICAgfCBbaWQsIC4uLl9dID0+IGlkXG4gICAgfTtcbn07XG5cbm1vZHVsZSBBbnkgPSB7XG4gIGluY2x1ZGUgVGVybUJhc2UuQW55O1xuXG4gIGxldCBpc19leHA6IHQgPT4gb3B0aW9uKFRlcm1CYXNlLkV4cC50KSA9XG4gICAgZnVuXG4gICAgfCBFeHAoZSkgPT4gU29tZShlKVxuICAgIHwgXyA9PiBOb25lO1xuICBsZXQgaXNfcGF0OiB0ID0+IG9wdGlvbihUZXJtQmFzZS5QYXQudCkgPVxuICAgIGZ1blxuICAgIHwgUGF0KHApID0+IFNvbWUocClcbiAgICB8IF8gPT4gTm9uZTtcbiAgbGV0IGlzX3R5cDogdCA9PiBvcHRpb24oVGVybUJhc2UuVHlwLnQpID1cbiAgICBmdW5cbiAgICB8IFR5cCh0KSA9PiBTb21lKHQpXG4gICAgfCBfID0+IE5vbmU7XG5cbiAgbGV0IHJlYyBpZHMgPVxuICAgIGZ1blxuICAgIHwgRXhwKHRtKSA9PiB0bS5pZHNcbiAgICB8IFBhdCh0bSkgPT4gdG0uaWRzXG4gICAgfCBUeXAodG0pID0+IHRtLmlkc1xuICAgIHwgVFBhdCh0bSkgPT4gdG0uaWRzXG4gICAgfCBSdWwodG0pID0+IFJ1bC5pZHMofmFueV9pZHM9aWRzLCB0bSlcbiAgICB8IE51bCAoKVxuICAgIHwgQW55ICgpID0+IFtdO1xuXG4gIC8vIFRlcm1zIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIHRpbGVzLCBlZyB0aGUgY29tbWFzIGluIGFuIG4tdHVwbGUsXG4gIC8vIHRoZSBydWxlcyBvZiBhIGNhc2UgZXhwcmVzc2lvbiArIHRoZSBzdXJyb3VuZGluZyBjYXNlLWVuZCB0aWxlLFxuICAvLyB0aGUgbGlzdCBicmFja2V0cyB0aWxlIGNvdXBsZWQgd2l0aCB0aGUgZWxlbS1zZXBhcmF0aW5nIGNvbW1hcy5cbiAgLy8gVGhlIF9yZXByZXNlbnRhdGl2ZSBpZF8gaXMgdGhlIGNhbm9uaWNhbCB0aWxlIGlkIHVzZWQgdG8gaWRlbnRpZnlcbiAgLy8gYW5kIGxvb2sgdXAgaW5mbyBhYm91dCBhIHRlcm0uXG4gIC8vXG4gIC8vIEluIGluc3RhbmNlcyBsaWtlIGNhc2UgZXhwcmVzc2lvbnMgYW5kIGxpc3QgbGl0ZXJhbHMsIHdoZXJlIGEgcGFyZW50XG4gIC8vIHRpbGUgc3Vycm91bmRzIHRoZSBvdGhlciB0aWxlcywgdGhlIHJlcHJlc2VudGF0aXZlIGlkIGlzIHRoZSBwYXJlbnQgdGlsZSdzLlxuICAvLyBJbiBvdGhlciBpbnN0YW5jZXMgbGlrZSBuLXR1cGxlcywgd2hlcmUgdGhlIGNvbW1hcyBhcmUgYWxsIHNpYmxpbmdzLFxuICAvLyB0aGUgcmVwcmVzZW50YXRpdmUgaWQgaXMgb25lIG9mIHRoZSBjb21tYSBpZHMsIHVuc3BlY2lmaWVkIHdoaWNoIG9uZS5cbiAgLy8gKFRoaXMgd291bGQgY2hhbmdlIGZvciBuLXR1cGxlcyBpZiB3ZSBkZWNpZGVkIHBhcmVudGhlc2VzIGFyZSBuZWNlc3NhcnkuKVxuICBsZXQgcmVwX2lkID1cbiAgICBmdW5cbiAgICB8IEV4cCh0bSkgPT4gRXhwLnJlcF9pZCh0bSlcbiAgICB8IFBhdCh0bSkgPT4gUGF0LnJlcF9pZCh0bSlcbiAgICB8IFR5cCh0bSkgPT4gVHlwLnJlcF9pZCh0bSlcbiAgICB8IFRQYXQodG0pID0+IFRQYXQucmVwX2lkKHRtKVxuICAgIHwgUnVsKHRtKSA9PiBSdWwucmVwX2lkKH5hbnlfaWRzPWlkcywgdG0pXG4gICAgfCBOdWwgKClcbiAgICB8IEFueSAoKSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiVGVybS5yZXBfaWRcIikpO1xufTtcbiIsIi8qIERIRXhwLnJlXG5cbiAgIFRoaXMgbW9kdWxlIGlzIHNwZWNpZmljYWxseSBmb3IgZHluYW1pYyBleHByZXNzaW9ucy4gVGhleSBhcmUgc3RvcmVkXG4gICB1c2luZyB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBhcyB1c2VyIGV4cHJlc3Npb25zLCBidXQgZHluYW1pY1xuICAgZXhwcmVzc2lvbnMgYXJlIHNwZWNpZmljYWxseSBwYWlyZWQgd2l0aCBhIGBTYXRpYy5NYXAudGAuXG4gICAqL1xuXG5pbmNsdWRlIEV4cDtcblxubGV0IHRlcm1fb2Y6IHQgPT4gdGVybSA9IElkVGFnZ2VkLnRlcm1fb2Y7XG5sZXQgZmFzdF9jb3B5OiAoSWQudCwgdCkgPT4gdCA9IElkVGFnZ2VkLmZhc3RfY29weTtcblxubGV0IG1rID0gKGlkcywgdGVybSk6IHQgPT4ge1xuICB7aWRzLCBjb3BpZWQ6IHRydWUsIHRlcm19O1xufTtcblxuLy8gVE9ETzogbWFrZSB0aGlzIGZ1bmN0aW9uIGVtaXQgYSBtYXAgb2YgY2hhbmdlc1xubGV0IHJlcGxhY2VfYWxsX2lkcyA9XG4gIG1hcF90ZXJtKFxuICAgIH5mX2V4cD0oY29udGludWUsIGV4cCkgPT4gey4uLmV4cCwgaWRzOiBbSWQubWsoKV19IHw+IGNvbnRpbnVlLFxuICAgIH5mX3BhdD0oY29udGludWUsIGV4cCkgPT4gey4uLmV4cCwgaWRzOiBbSWQubWsoKV19IHw+IGNvbnRpbnVlLFxuICAgIH5mX3R5cD0oY29udGludWUsIGV4cCkgPT4gey4uLmV4cCwgaWRzOiBbSWQubWsoKV19IHw+IGNvbnRpbnVlLFxuICAgIH5mX3RwYXQ9KGNvbnRpbnVlLCBleHApID0+IHsuLi5leHAsIGlkczogW0lkLm1rKCldfSB8PiBjb250aW51ZSxcbiAgICB+Zl9ydWw9KGNvbnRpbnVlLCBleHApID0+IHsuLi5leHAsIGlkczogW0lkLm1rKCldfSB8PiBjb250aW51ZSxcbiAgKTtcblxuLy8gVE9ETzogbWFrZSB0aGlzIGZ1bmN0aW9uIGVtaXQgYSBtYXAgb2YgY2hhbmdlc1xubGV0IHJlcGFpcl9pZHMgPVxuICBtYXBfdGVybShcbiAgICB+Zl9leHA9XG4gICAgICAoY29udGludWUsIGV4cCkgPT5cbiAgICAgICAgaWYgKGV4cC5jb3BpZWQpIHtcbiAgICAgICAgICByZXBsYWNlX2FsbF9pZHMoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250aW51ZShleHApO1xuICAgICAgICB9LFxuICAgIF8sXG4gICk7XG5cbi8vIEFsc28gc3RyaXBzIHN0YXRpYyBlcnJvciBob2xlcyAtIGtpbmRhIGxpa2UgdW5lbGFib3JhdGlvblxubGV0IHJlYyBzdHJpcF9jYXN0cyA9XG4gIG1hcF90ZXJtKFxuICAgIH5mX2V4cD1cbiAgICAgIChjb250aW51ZSwgZXhwKSA9PiB7XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihleHApKSB7XG4gICAgICAgIC8qIExlYXZlIG5vbi1jYXN0cyB1bmNoYW5nZWQgKi9cbiAgICAgICAgfCBUdXBsZShfKVxuICAgICAgICB8IENvbnMoXylcbiAgICAgICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgICAgIHwgTGlzdExpdChfKVxuICAgICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgICB8IFNlcShfKVxuICAgICAgICB8IEZpbHRlcihfKVxuICAgICAgICB8IExldChfKVxuICAgICAgICB8IEZpeEYoXylcbiAgICAgICAgfCBUeUFsaWFzKF8pXG4gICAgICAgIHwgRnVuKF8pXG4gICAgICAgIHwgQXAoXylcbiAgICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgICB8IERlZmVycmVkQXAoXylcbiAgICAgICAgfCBUZXN0KF8pXG4gICAgICAgIHwgQnVpbHRpbkZ1bihfKVxuICAgICAgICB8IFVuT3AoXylcbiAgICAgICAgfCBCaW5PcChfKVxuICAgICAgICB8IE1hdGNoKF8pXG4gICAgICAgIHwgUGFyZW5zKF8pXG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IFZhcihfKVxuICAgICAgICB8IEJvb2woXylcbiAgICAgICAgfCBJbnQoXylcbiAgICAgICAgfCBGbG9hdChfKVxuICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgICAgICB8IENsb3N1cmUoXylcbiAgICAgICAgfCBUeXBGdW4oXylcbiAgICAgICAgfCBUeXBBcChfKVxuICAgICAgICB8IElmKF8pID0+IGNvbnRpbnVlKGV4cClcbiAgICAgICAgLyogUmVtb3ZlIGNhc3RzKi9cbiAgICAgICAgfCBGYWlsZWRDYXN0KGQsIF8sIF8pXG4gICAgICAgIHwgQ2FzdChkLCBfLCBfKSA9PiBzdHJpcF9jYXN0cyhkKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIF8sXG4gICk7XG5cbmxldCBhc3NpZ25fbmFtZV9pZl9ub25lID0gKHQsIG5hbWUpID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gdW53cmFwKHQpO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBGdW4oYXJnLCB0eSwgYm9keSwgTm9uZSkgPT4gRnVuKGFyZywgdHksIGJvZHksIG5hbWUpIHw+IHJld3JhcFxuICB8IFR5cEZ1bih1dHBhdCwgYm9keSwgTm9uZSkgPT4gVHlwRnVuKHV0cGF0LCBib2R5LCBuYW1lKSB8PiByZXdyYXBcbiAgfCBfID0+IHRcbiAgfTtcbn07XG5cbmxldCB0eV9zdWJzdCA9IChzOiBUeXAudCwgdHBhdDogVFBhdC50LCBleHA6IHQpOiB0ID0+IHtcbiAgc3dpdGNoIChUUGF0LnR5dmFyX29mX3V0cGF0KHRwYXQpKSB7XG4gIHwgTm9uZSA9PiBleHBcbiAgfCBTb21lKHgpID0+XG4gICAgRXhwLm1hcF90ZXJtKFxuICAgICAgfmZfdHlwPShfLCB0eXApID0+IFR5cC5zdWJzdChzLCB0cGF0LCB0eXApLFxuICAgICAgfmZfZXhwPVxuICAgICAgICAoY29udGludWUsIGV4cCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZXhwKSkge1xuICAgICAgICAgIHwgVHlwRnVuKHV0cGF0LCBfLCBfKSA9PlxuICAgICAgICAgICAgc3dpdGNoIChUUGF0LnR5dmFyX29mX3V0cGF0KHV0cGF0KSkge1xuICAgICAgICAgICAgfCBTb21lKHgnKSB3aGVuIHggPT0geCcgPT4gZXhwXG4gICAgICAgICAgICB8IFNvbWUoXylcbiAgICAgICAgICAgIHwgTm9uZSA9PiBjb250aW51ZShleHApXG4gICAgICAgICAgICAvKiBOb3RlIHRoYXQgd2UgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgY2FwdHVyZSBhdm9pZGFuY2UsIHNpbmNlIHMgd2lsbCBhbHdheXMgYmUgY2xvc2VkLiAqL1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgQ2FzdChfKVxuICAgICAgICAgIHwgRml4RihfKVxuICAgICAgICAgIHwgRnVuKF8pXG4gICAgICAgICAgfCBUeXBBcChfKVxuICAgICAgICAgIHwgTGlzdExpdChfKVxuICAgICAgICAgIHwgVGVzdChfKVxuICAgICAgICAgIHwgQ2xvc3VyZShfKVxuICAgICAgICAgIHwgU2VxKF8pXG4gICAgICAgICAgfCBMZXQoXylcbiAgICAgICAgICB8IEFwKF8pXG4gICAgICAgICAgfCBCdWlsdGluRnVuKF8pXG4gICAgICAgICAgfCBCaW5PcChfKVxuICAgICAgICAgIHwgQ29ucyhfKVxuICAgICAgICAgIHwgTGlzdENvbmNhdChfKVxuICAgICAgICAgIHwgVHVwbGUoXylcbiAgICAgICAgICB8IE1hdGNoKF8pXG4gICAgICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgICAgICAgfCBGaWx0ZXIoXylcbiAgICAgICAgICB8IElmKF8pXG4gICAgICAgICAgfCBFbXB0eUhvbGVcbiAgICAgICAgICB8IEludmFsaWQoXylcbiAgICAgICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICAgICAgfCBWYXIoXylcbiAgICAgICAgICB8IEJvb2woXylcbiAgICAgICAgICB8IEludChfKVxuICAgICAgICAgIHwgRmxvYXQoXylcbiAgICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICAgIHwgRmFpbGVkQ2FzdChfLCBfLCBfKVxuICAgICAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgICAgIHwgVHlBbGlhcyhfKVxuICAgICAgICAgIHwgRGVmZXJyZWRBcChfKVxuICAgICAgICAgIHwgUGFyZW5zKF8pXG4gICAgICAgICAgfCBVbk9wKF8pID0+IGNvbnRpbnVlKGV4cClcbiAgICAgICAgICB9LFxuICAgICAgZXhwLFxuICAgIClcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE91dE9mRnVlbFxuICB8IFN0ZXBEb2VzTm90TWF0Y2hcbiAgfCBCYWRQYXR0ZXJuTWF0Y2hcbiAgfCBDYXN0QlZIb2xlR3JvdW5kKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkVHlwRnVuKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkRnVuKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkQm9vbExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEludExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEZsb2F0TGl0KERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkTGlzdExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZFN0cmluZ0xpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZFN1bUNvbnN0cnVjdG9yKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkVHVwbGUoREhFeHAudClcbiAgfCBJbnZhbGlkQnVpbHRpbihzdHJpbmcpXG4gIHwgQmFkQnVpbHRpbkFwKHN0cmluZywgbGlzdChESEV4cC50KSlcbiAgfCBJbnZhbGlkUHJvamVjdGlvbihpbnQpO1xuXG5leGNlcHRpb24gRXhjZXB0aW9uKHQpO1xuIiwib3BlbiBESEV4cDtcblxuLypcbiAgIEJ1aWx0LWluIGZ1bmN0aW9ucyBmb3IgSGF6ZWwuXG5cbiAgIFRvIGFkZCBhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIGNvbnN0YW50LCB3cml0ZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gdGhlXG4gICBgUGVydmFzaXZlcy5JbXBsc2AgbW9kdWxlIGJlbG93IGFuZCBhZGQgaXQgdG8gYGJ1aWx0aW5zYC5cblxuICAgU2VlIHRoZSBleGlzdGluZyBvbmVzIGZvciByZWZlcmVuY2UuXG4gKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBidWlsdGluID1cbiAgfCBDb25zdChUeXAudCwgREhFeHAudClcbiAgfCBGbihUeXAudCwgVHlwLnQsIERIRXhwLnQgPT4gREhFeHAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IFZhck1hcC50XyhidWlsdGluKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtcyA9IFZhck1hcC50XyhESEV4cC50ID0+IERIRXhwLnQpO1xuXG50eXBlIHJlc3VsdCA9IFJlc3VsdC50KERIRXhwLnQsIEV2YWx1YXRvckVycm9yLnQpO1xuXG5sZXQgY29uc3QgPSAobmFtZTogVmFyLnQsIHR5cDogVHlwLnRlcm0sIHY6IERIRXhwLnQsIGJ1aWx0aW5zOiB0KTogdCA9PlxuICBWYXJNYXAuZXh0ZW5kKGJ1aWx0aW5zLCAobmFtZSwgQ29uc3QodHlwIHw+IFR5cC5mcmVzaCwgdikpKTtcbmxldCBmbiA9XG4gICAgKFxuICAgICAgbmFtZTogVmFyLnQsXG4gICAgICB0MTogVHlwLnRlcm0sXG4gICAgICB0MjogVHlwLnRlcm0sXG4gICAgICBpbXBsOiBESEV4cC50ID0+IERIRXhwLnQsXG4gICAgICBidWlsdGluczogdCxcbiAgICApXG4gICAgOiB0ID0+XG4gIFZhck1hcC5leHRlbmQoXG4gICAgYnVpbHRpbnMsXG4gICAgKG5hbWUsIEZuKHQxIHw+IFR5cC5mcmVzaCwgdDIgfD4gVHlwLmZyZXNoLCBpbXBsKSksXG4gICk7XG5cbm1vZHVsZSBQZXJ2YXNpdmVzID0ge1xuICBtb2R1bGUgSW1wbHMgPSB7XG4gICAgLyogY29uc3RhbnRzICovXG4gICAgbGV0IGluZmluaXR5ID0gREhFeHAuRmxvYXQoRmxvYXQuaW5maW5pdHkpIHw+IGZyZXNoO1xuICAgIGxldCBuZWdfaW5maW5pdHkgPSBESEV4cC5GbG9hdChGbG9hdC5uZWdfaW5maW5pdHkpIHw+IGZyZXNoO1xuICAgIGxldCBuYW4gPSBESEV4cC5GbG9hdChGbG9hdC5uYW4pIHw+IGZyZXNoO1xuICAgIGxldCBlcHNpbG9uX2Zsb2F0ID0gREhFeHAuRmxvYXQoZXBzaWxvbl9mbG9hdCkgfD4gZnJlc2g7XG4gICAgbGV0IHBpID0gREhFeHAuRmxvYXQoRmxvYXQucGkpIHw+IGZyZXNoO1xuICAgIGxldCBtYXhfaW50ID0gREhFeHAuSW50KEludC5tYXhfaW50KSB8PiBmcmVzaDtcbiAgICBsZXQgbWluX2ludCA9IERIRXhwLkludChJbnQubWluX2ludCkgfD4gZnJlc2g7XG5cbiAgICBsZXQgdW5hcnkgPSAoZjogREhFeHAudCA9PiByZXN1bHQsIGQ6IERIRXhwLnQpID0+IHtcbiAgICAgIHN3aXRjaCAoZihkKSkge1xuICAgICAgfCBPayhyJykgPT4gcidcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKGUpIHw+IHJhaXNlXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgYmluYXJ5ID0gKGY6IChESEV4cC50LCBESEV4cC50KSA9PiByZXN1bHQsIGQ6IERIRXhwLnQpID0+IHtcbiAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgfCBUdXBsZShbZDEsIGQyXSkgPT5cbiAgICAgICAgc3dpdGNoIChmKGQxLCBkMikpIHtcbiAgICAgICAgfCBPayhyKSA9PiByXG4gICAgICAgIHwgRXJyb3IoZSkgPT4gRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKGUpIHw+IHJhaXNlXG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkVHVwbGUoZCkpKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHRlcm5hcnkgPSAoZjogKERIRXhwLnQsIERIRXhwLnQsIERIRXhwLnQpID0+IHJlc3VsdCwgZDogREhFeHAudCkgPT4ge1xuICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICB8IFR1cGxlKFtkMSwgZDIsIGQzXSkgPT5cbiAgICAgICAgc3dpdGNoIChmKGQxLCBkMiwgZDMpKSB7XG4gICAgICAgIHwgT2socikgPT4gclxuICAgICAgICB8IEVycm9yKGUpID0+IEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihlKSB8PiByYWlzZVxuICAgICAgICB9XG4gICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR1cGxlKGQpKSlcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCBpc19maW5pdGUgPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChCb29sKEZsb2F0LmlzX2Zpbml0ZShmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgaXNfaW5maW5pdGUgPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChCb29sKEZsb2F0LmlzX2luZmluaXRlKGYpKSkpXG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRGbG9hdExpdChkKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBpc19uYW4gPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChCb29sKEZsb2F0LmlzX25hbihmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX29mX2ludCA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEludChuKSA9PiBPayhmcmVzaChTdHJpbmcoc3RyaW5nX29mX2ludChuKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZl9mbG9hdCA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEZsb2F0KGYpID0+IE9rKGZyZXNoKFN0cmluZyhzdHJpbmdfb2ZfZmxvYXQoZikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZl9ib29sID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgQm9vbChiKSA9PiBPayhmcmVzaChTdHJpbmcoc3RyaW5nX29mX2Jvb2woYikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEJvb2xMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgaW50X29mX2Zsb2F0ID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgRmxvYXQoZikgPT4gT2soZnJlc2goSW50KGludF9vZl9mbG9hdChmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgZmxvYXRfb2ZfaW50ID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgSW50KG4pID0+IE9rKGZyZXNoKEZsb2F0KGZsb2F0X29mX2ludChuKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IGFicyA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEludChuKSA9PiBPayhmcmVzaChJbnQoYWJzKG4pKSkpXG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRJbnRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgZmxvYXRfb3AgPSBmbiA9PlxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChGbG9hdChmbihmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgYWJzX2Zsb2F0ID0gZmxvYXRfb3AoYWJzX2Zsb2F0KTtcbiAgICBsZXQgY2VpbCA9IGZsb2F0X29wKGNlaWwpO1xuICAgIGxldCBmbG9vciA9IGZsb2F0X29wKGZsb29yKTtcbiAgICBsZXQgc3FydCA9IGZsb2F0X29wKHNxcnQpO1xuICAgIGxldCBleHAgPSBmbG9hdF9vcChleHApO1xuICAgIGxldCBsb2cgPSBmbG9hdF9vcChsb2cpO1xuICAgIGxldCBsb2cxMCA9IGZsb2F0X29wKGxvZzEwKTtcbiAgICBsZXQgc2luID0gZmxvYXRfb3Aoc2luKTtcbiAgICBsZXQgY29zID0gZmxvYXRfb3AoY29zKTtcbiAgICBsZXQgdGFuID0gZmxvYXRfb3AodGFuKTtcbiAgICBsZXQgYXNpbiA9IGZsb2F0X29wKGFzaW4pO1xuICAgIGxldCBhY29zID0gZmxvYXRfb3AoYWNvcyk7XG4gICAgbGV0IGF0YW4gPSBmbG9hdF9vcChhdGFuKTtcblxuICAgIGxldCBvZl9zdHJpbmcgPVxuICAgICAgICAoY29udmVydDogc3RyaW5nID0+IG9wdGlvbignYSksIHdyYXA6ICdhID0+IERIRXhwLnQsIG5hbWU6IHN0cmluZykgPT5cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgU3RyaW5nKHMpID0+XG4gICAgICAgICAgc3dpdGNoIChjb252ZXJ0KHMpKSB7XG4gICAgICAgICAgfCBTb21lKG4pID0+IE9rKHdyYXAobikpXG4gICAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgICBsZXQgZCcgPSBESEV4cC5CdWlsdGluRnVuKG5hbWUpIHw+IERIRXhwLmZyZXNoO1xuICAgICAgICAgICAgbGV0IGQnID0gREhFeHAuQXAoRm9yd2FyZCwgZCcsIGQpIHw+IERIRXhwLmZyZXNoO1xuICAgICAgICAgICAgbGV0IGQnID0gRHluYW1pY0Vycm9ySG9sZShkJywgSW52YWxpZE9mU3RyaW5nKSB8PiBESEV4cC5mcmVzaDtcbiAgICAgICAgICAgIE9rKGQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgaW50X29mX3N0cmluZyA9XG4gICAgICBvZl9zdHJpbmcoaW50X29mX3N0cmluZ19vcHQsIG4gPT4gSW50KG4pIHw+IERIRXhwLmZyZXNoKTtcbiAgICBsZXQgZmxvYXRfb2Zfc3RyaW5nID1cbiAgICAgIG9mX3N0cmluZyhmbG9hdF9vZl9zdHJpbmdfb3B0LCBmID0+IEZsb2F0KGYpIHw+IERIRXhwLmZyZXNoKTtcbiAgICBsZXQgYm9vbF9vZl9zdHJpbmcgPVxuICAgICAgb2Zfc3RyaW5nKGJvb2xfb2Zfc3RyaW5nX29wdCwgYiA9PiBCb29sKGIpIHw+IERIRXhwLmZyZXNoKTtcblxuICAgIGxldCBpbnRfbW9kID0gKG5hbWUsIGQxKSA9PlxuICAgICAgYmluYXJ5KFxuICAgICAgICAoZDEsIGQyKSA9PlxuICAgICAgICAgIHN3aXRjaCAodGVybV9vZihkMSksIHRlcm1fb2YoZDIpKSB7XG4gICAgICAgICAgfCAoSW50KF8pLCBJbnQoMCkpID0+XG4gICAgICAgICAgICBPayhcbiAgICAgICAgICAgICAgZnJlc2goXG4gICAgICAgICAgICAgICAgRHluYW1pY0Vycm9ySG9sZShcbiAgICAgICAgICAgICAgICAgIERIRXhwLkFwKEZvcndhcmQsIERIRXhwLkJ1aWx0aW5GdW4obmFtZSkgfD4gZnJlc2gsIGQxKVxuICAgICAgICAgICAgICAgICAgfD4gZnJlc2gsXG4gICAgICAgICAgICAgICAgICBEaXZpZGVCeVplcm8sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IChJbnQobiksIEludChtKSkgPT4gT2soSW50KG4gbW9kIG0pIHw+IGZyZXNoKVxuICAgICAgICAgIHwgKEludChfKSwgXykgPT5cbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRJbnRMaXQoZDIpKSlcbiAgICAgICAgICB8IChfLCBfKSA9PlxuICAgICAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEludExpdChkMSkpKVxuICAgICAgICAgIH0sXG4gICAgICAgIGQxLFxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfbGVuZ3RoID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgU3RyaW5nKHMpID0+IE9rKEludChTdHJpbmcubGVuZ3RoKHMpKSB8PiBmcmVzaClcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZFN0cmluZ0xpdChkKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfY29tcGFyZSA9XG4gICAgICBiaW5hcnkoKGQxLCBkMikgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQxKSwgdGVybV9vZihkMikpIHtcbiAgICAgICAgfCAoU3RyaW5nKHMxKSwgU3RyaW5nKHMyKSkgPT5cbiAgICAgICAgICBPayhJbnQoU3RyaW5nLmNvbXBhcmUoczEsIHMyKSkgfD4gZnJlc2gpXG4gICAgICAgIHwgKFN0cmluZyhfKSwgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQyKSlcbiAgICAgICAgfCAoXywgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQxKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfdHJpbSA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IFN0cmluZyhzKSA9PiBPayhTdHJpbmcoU3RyaW5nLnRyaW0ocykpIHw+IGZyZXNoKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZjogREhFeHAudCA9PiBvcHRpb24oc3RyaW5nKSA9XG4gICAgICBkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IFN0cmluZyhzKSA9PiBTb21lKHMpXG4gICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgIH07XG5cbiAgICBsZXQgc3RyaW5nX2NvbmNhdCA9XG4gICAgICBiaW5hcnkoKGQxLCBkMikgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQxKSwgdGVybV9vZihkMikpIHtcbiAgICAgICAgfCAoU3RyaW5nKHMxKSwgTGlzdExpdCh4cykpID0+XG4gICAgICAgICAgc3dpdGNoICh4cyB8PiBMaXN0Lm1hcChzdHJpbmdfb2YpIHw+IFV0aWwuT3B0VXRpbC5zZXF1ZW5jZSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoTGlzdC5oZCh4cykpKVxuICAgICAgICAgIHwgU29tZSh4cykgPT4gT2soU3RyaW5nKFN0cmluZy5jb25jYXQoczEsIHhzKSkgfD4gZnJlc2gpXG4gICAgICAgICAgfVxuICAgICAgICB8IChTdHJpbmcoXyksIF8pID0+IEVycm9yKEludmFsaWRCb3hlZExpc3RMaXQoZDIpKVxuICAgICAgICB8IChfLCBfKSA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZDEpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19zdWIgPSBfID0+XG4gICAgICB0ZXJuYXJ5KChkMSwgZDIsIGQzKSA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZDEpLCB0ZXJtX29mKGQyKSwgdGVybV9vZihkMykpIHtcbiAgICAgICAgfCAoU3RyaW5nKHMpLCBJbnQoaWR4KSwgSW50KGxlbikpID0+XG4gICAgICAgICAgdHJ5KE9rKFN0cmluZyhTdHJpbmcuc3ViKHMsIGlkeCwgbGVuKSkgfD4gZnJlc2gpKSB7XG4gICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICAvLyBUT0RPOiBtYWtlIGl0IGNsZWFyIHRoYXQgdGhlIHByb2JsZW0gY291bGQgYmUgd2l0aCBkMyB0b29cbiAgICAgICAgICAgIE9rKER5bmFtaWNFcnJvckhvbGUoZDIsIEluZGV4T3V0T2ZCb3VuZHMpIHw+IGZyZXNoKVxuICAgICAgICAgIH1cbiAgICAgICAgfCAoU3RyaW5nKF8pLCBJbnQoXyksIF8pID0+IEVycm9yKEludmFsaWRCb3hlZEludExpdChkMykpXG4gICAgICAgIHwgKFN0cmluZyhfKSwgXywgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQyKSlcbiAgICAgICAgfCAoXywgXywgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQxKSlcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfTtcblxuICBvcGVuIEltcGxzO1xuICBsZXQgYnVpbHRpbnMgPVxuICAgIFZhck1hcC5lbXB0eVxuICAgIHw+IGNvbnN0KFwiaW5maW5pdHlcIiwgRmxvYXQsIGluZmluaXR5KVxuICAgIHw+IGNvbnN0KFwibmVnX2luZmluaXR5XCIsIEZsb2F0LCBuZWdfaW5maW5pdHkpXG4gICAgfD4gY29uc3QoXCJuYW5cIiwgRmxvYXQsIG5hbilcbiAgICB8PiBjb25zdChcImVwc2lsb25fZmxvYXRcIiwgRmxvYXQsIGVwc2lsb25fZmxvYXQpXG4gICAgfD4gY29uc3QoXCJwaVwiLCBGbG9hdCwgcGkpXG4gICAgfD4gY29uc3QoXCJtYXhfaW50XCIsIEludCwgbWF4X2ludClcbiAgICB8PiBjb25zdChcIm1pbl9pbnRcIiwgSW50LCBtaW5faW50KVxuICAgIHw+IGZuKFwiaXNfZmluaXRlXCIsIEZsb2F0LCBCb29sLCBpc19maW5pdGUpXG4gICAgfD4gZm4oXCJpc19pbmZpbml0ZVwiLCBGbG9hdCwgQm9vbCwgaXNfaW5maW5pdGUpXG4gICAgfD4gZm4oXCJpc19uYW5cIiwgRmxvYXQsIEJvb2wsIGlzX25hbilcbiAgICB8PiBmbihcImludF9vZl9mbG9hdFwiLCBGbG9hdCwgSW50LCBpbnRfb2ZfZmxvYXQpXG4gICAgfD4gZm4oXCJmbG9hdF9vZl9pbnRcIiwgSW50LCBGbG9hdCwgZmxvYXRfb2ZfaW50KVxuICAgIHw+IGZuKFwic3RyaW5nX29mX2ludFwiLCBJbnQsIFN0cmluZywgc3RyaW5nX29mX2ludClcbiAgICB8PiBmbihcInN0cmluZ19vZl9mbG9hdFwiLCBGbG9hdCwgU3RyaW5nLCBzdHJpbmdfb2ZfZmxvYXQpXG4gICAgfD4gZm4oXCJzdHJpbmdfb2ZfYm9vbFwiLCBCb29sLCBTdHJpbmcsIHN0cmluZ19vZl9ib29sKVxuICAgIHw+IGZuKFwiaW50X29mX3N0cmluZ1wiLCBTdHJpbmcsIEludCwgaW50X29mX3N0cmluZyhcImludF9vZl9zdHJpbmdcIikpXG4gICAgfD4gZm4oXG4gICAgICAgICBcImZsb2F0X29mX3N0cmluZ1wiLFxuICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgRmxvYXQsXG4gICAgICAgICBmbG9hdF9vZl9zdHJpbmcoXCJmbG9hdF9vZl9zdHJpbmdcIiksXG4gICAgICAgKVxuICAgIHw+IGZuKFwiYm9vbF9vZl9zdHJpbmdcIiwgU3RyaW5nLCBCb29sLCBib29sX29mX3N0cmluZyhcImJvb2xfb2Zfc3RyaW5nXCIpKVxuICAgIHw+IGZuKFwiYWJzXCIsIEludCwgSW50LCBhYnMpXG4gICAgfD4gZm4oXCJhYnNfZmxvYXRcIiwgRmxvYXQsIEZsb2F0LCBhYnNfZmxvYXQpXG4gICAgfD4gZm4oXCJjZWlsXCIsIEZsb2F0LCBGbG9hdCwgY2VpbClcbiAgICB8PiBmbihcImZsb29yXCIsIEZsb2F0LCBGbG9hdCwgZmxvb3IpXG4gICAgfD4gZm4oXCJleHBcIiwgRmxvYXQsIEZsb2F0LCBleHApXG4gICAgfD4gZm4oXCJsb2dcIiwgRmxvYXQsIEZsb2F0LCBsb2cpXG4gICAgfD4gZm4oXCJsb2cxMFwiLCBGbG9hdCwgRmxvYXQsIGxvZzEwKVxuICAgIHw+IGZuKFwic3FydFwiLCBGbG9hdCwgRmxvYXQsIHNxcnQpXG4gICAgfD4gZm4oXCJzaW5cIiwgRmxvYXQsIEZsb2F0LCBzaW4pXG4gICAgfD4gZm4oXCJjb3NcIiwgRmxvYXQsIEZsb2F0LCBjb3MpXG4gICAgfD4gZm4oXCJ0YW5cIiwgRmxvYXQsIEZsb2F0LCB0YW4pXG4gICAgfD4gZm4oXCJhc2luXCIsIEZsb2F0LCBGbG9hdCwgYXNpbilcbiAgICB8PiBmbihcImFjb3NcIiwgRmxvYXQsIEZsb2F0LCBhY29zKVxuICAgIHw+IGZuKFwiYXRhblwiLCBGbG9hdCwgRmxvYXQsIGF0YW4pXG4gICAgfD4gZm4oXG4gICAgICAgICBcIm1vZFwiLFxuICAgICAgICAgUHJvZChbSW50IHw+IFR5cC5mcmVzaCwgSW50IHw+IFR5cC5mcmVzaF0pLFxuICAgICAgICAgSW50LFxuICAgICAgICAgaW50X21vZChcIm1vZFwiKSxcbiAgICAgICApXG4gICAgfD4gZm4oXCJzdHJpbmdfbGVuZ3RoXCIsIFN0cmluZywgSW50LCBzdHJpbmdfbGVuZ3RoKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJzdHJpbmdfY29tcGFyZVwiLFxuICAgICAgICAgUHJvZChbU3RyaW5nIHw+IFR5cC5mcmVzaCwgU3RyaW5nIHw+IFR5cC5mcmVzaF0pLFxuICAgICAgICAgSW50LFxuICAgICAgICAgc3RyaW5nX2NvbXBhcmUsXG4gICAgICAgKVxuICAgIHw+IGZuKFwic3RyaW5nX3RyaW1cIiwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZ190cmltKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJzdHJpbmdfY29uY2F0XCIsXG4gICAgICAgICBQcm9kKFtTdHJpbmcgfD4gVHlwLmZyZXNoLCBMaXN0KFN0cmluZyB8PiBUeXAuZnJlc2gpIHw+IFR5cC5mcmVzaF0pLFxuICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgc3RyaW5nX2NvbmNhdCxcbiAgICAgICApXG4gICAgfD4gZm4oXG4gICAgICAgICBcInN0cmluZ19zdWJcIixcbiAgICAgICAgIFByb2QoW1N0cmluZyB8PiBUeXAuZnJlc2gsIEludCB8PiBUeXAuZnJlc2gsIEludCB8PiBUeXAuZnJlc2hdKSxcbiAgICAgICAgIFN0cmluZyxcbiAgICAgICAgIHN0cmluZ19zdWIoXCJzdHJpbmdfc3ViXCIpLFxuICAgICAgICk7XG59O1xuXG5sZXQgY3R4X2luaXQ6IEN0eC50ID0ge1xuICBsZXQgbWV0YV9jb25zX21hcDogQ29uc3RydWN0b3JNYXAudChUeXAudCkgPSBbXG4gICAgVmFyaWFudChcIiRlXCIsIFtJZC5taygpXSwgTm9uZSksXG4gICAgVmFyaWFudChcIiR2XCIsIFtJZC5taygpXSwgTm9uZSksXG4gIF07XG4gIGxldCBtZXRhID1cbiAgICBDdHguVFZhckVudHJ5KHtcbiAgICAgIG5hbWU6IFwiJE1ldGFcIixcbiAgICAgIGlkOiBJZC5pbnZhbGlkLFxuICAgICAga2luZDogQ3R4LlNpbmdsZXRvbihTdW0obWV0YV9jb25zX21hcCkgfD4gVHlwLmZyZXNoKSxcbiAgICB9KTtcbiAgTGlzdC5tYXAoXG4gICAgZnVuXG4gICAgfCAobmFtZSwgQ29uc3QodHlwLCBfKSkgPT4gQ3R4LlZhckVudHJ5KHtuYW1lLCB0eXAsIGlkOiBJZC5pbnZhbGlkfSlcbiAgICB8IChuYW1lLCBGbih0MSwgdDIsIF8pKSA9PlxuICAgICAgQ3R4LlZhckVudHJ5KHtuYW1lLCB0eXA6IEFycm93KHQxLCB0MikgfD4gVHlwLmZyZXNoLCBpZDogSWQuaW52YWxpZH0pLFxuICAgIFBlcnZhc2l2ZXMuYnVpbHRpbnMsXG4gIClcbiAgfD4gQ3R4LmV4dGVuZChfLCBtZXRhKVxuICB8PiBDdHguYWRkX2N0cnMoXywgXCIkTWV0YVwiLCBJZC5pbnZhbGlkLCBtZXRhX2NvbnNfbWFwKTtcbn07XG5cbmxldCBmb3Jtc19pbml0OiBmb3JtcyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IChfLCBDb25zdChfKSkgPT4gTm9uZVxuICAgIHwgKG5hbWUsIEZuKF8sIF8sIGYpKSA9PiBTb21lKChuYW1lLCBmKSksXG4gICAgUGVydmFzaXZlcy5idWlsdGlucyxcbiAgKTtcblxubGV0IGVudl9pbml0OiBFbnZpcm9ubWVudC50ID1cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgZW52ID0+XG4gICAgICBmdW5cbiAgICAgIHwgKG5hbWUsIENvbnN0KF8sIGQpKSA9PiBFbnZpcm9ubWVudC5leHRlbmQoZW52LCAobmFtZSwgZCkpXG4gICAgICB8IChuYW1lLCBGbihfKSkgPT5cbiAgICAgICAgRW52aXJvbm1lbnQuZXh0ZW5kKGVudiwgKG5hbWUsIEJ1aWx0aW5GdW4obmFtZSkgfD4gZnJlc2gpKSxcbiAgICBFbnZpcm9ubWVudC5lbXB0eSxcbiAgICBQZXJ2YXNpdmVzLmJ1aWx0aW5zLFxuICApO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBFeHAoRXhwLmNscylcbiAgfCBQYXQoUGF0LmNscylcbiAgfCBUeXAoVHlwLmNscylcbiAgfCBUUGF0KFRQYXQuY2xzKVxuICB8IFJ1bChSdWwuY2xzKVxuICB8IFNlY29uZGFyeShTZWNvbmRhcnkuY2xzKTtcblxubGV0IHNob3cgPSAoY2xzOiB0KSA9PlxuICBzd2l0Y2ggKGNscykge1xuICB8IEV4cChjbHMpID0+IEV4cC5zaG93X2NscyhjbHMpXG4gIHwgUGF0KGNscykgPT4gUGF0LnNob3dfY2xzKGNscylcbiAgfCBUeXAoY2xzKSA9PiBUeXAuc2hvd19jbHMoY2xzKVxuICB8IFRQYXQoY2xzKSA9PiBUUGF0LnNob3dfY2xzKGNscylcbiAgfCBSdWwoY2xzKSA9PiBSdWwuc2hvd19jbHMoY2xzKVxuICB8IFNlY29uZGFyeShjbHMpID0+IFNlY29uZGFyeS5zaG93X2NscyhjbHMpXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBDby1jb250ZXh0czpcblxuICAgQSB0eXBpbmcgY28tY29udGV4dCAoZHVhbCB0byBhIHR5cGluZyBjb250ZXh0KSwgaXMgYSBtYXAgYmV0d2VlblxuICAgdmFyaWFibGUgbmFtZXMgYW5kIGEgbGlzdCBvZiB0aGF0IHZhcmlhYmxlJ3MgdXNlcyB3aXRoaW4gc29tZSBzY29wZS5cbiAgIEZvciBlYWNoIHVzZSwgd2UgcmV0YWluIHRoZSB1bmlxdWUgaWQgYW5kIGV4cGVjdGVkIHR5cGUgb2YgdGhlIHVzZSBzaXRlLlxuICAgVGhlIGNvLWN0eCwgYWxvbmcgd2l0aCB0aGUgY3R4LCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgZnJlZSBhbmQgdW51c2VkIHZhcmlhYmxlcy5cblxuICAgVGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgdXNlZnVsOlxuXG4gICAxLiBBIGxvY2FsbHkgZnJlZSB2YXJpYWJsZSAoaW4gYW4gZXhwcmVzc2lvbikgaXMgb25lXG4gICAgICB0aGF0IG9jY3VycyBpbiB0aGUgY29fY3R4IG9mIHRoYXQgZXhwcmVzc2lvbi5cbiAgIDIuIEEgZ2xvYmFsIGZyZWUgdmFyaWFibGUgKGluIHRoZSBwcm9ncmFtKSBpcyBvbmUgdGhhdFxuICAgICAgb2NjdXJzIGluIHRoZSBjb19jdHggYnV0IG5vdCB0aGUgY3R4IG9mIHNvbWUgZXhwcmVzc2lvblxuICAgMy4gQSBsb2NhbGx5IHVudXNlZCB2YXJpYWJsZSAoaW4gYW4gZXhwcmVzc2lvbikgaXMgb25lIHRoYXRcbiAgICAgIG9jY3VycyBpbiB0aGUgY3R4IGJ1dCBub3QgdGhlIGNvLWN0eCBvZiB0aGF0IGV4cHJlc3Npb25cbiAgIDQuIEEgZ2xvYmFsIHVudXNlZCB2YXJpYWJsZSAoaW4gdGhlIHByb2dyYW0pIGlzIG9uZSB0aGF0XG4gICAgICBvY2N1cnMgaW4gdGhlIGN0eCBidXQgbm90IHRoZSBjb19jdHggb2Ygc29tZSBleHByZXNzaW9uXG5cbiAgIFRoZSBmb2xsb3dpbmcgdGhlb3JlbXMgc2hvdWxkIGhvbGQ6XG5cbiAgIEEuIFRvIGRldGVybWluZSBpZiBhIHZhcmlhYmxlIGlzIGdsb2JhbGx5IGZyZWUsIGl0IHN1ZmZpY2VzIHRvIGNvbnNpZGVyXG4gICAgICBleHByZXNzaW9ucyB3aGljaCBhcmUgdmFyaWFibGUgcmVmZXJlbmNlcyAobG9jdXMgb2YgY3R4IGxvb2t1cHMpXG4gICBCLiBUbyBkZXRlcm1pbmUgaWYgYSB2YXJpYWJsZSBpcyBnbG9iYWxseSB1bnVzZWQsIGl0IHN1ZmZpY2VzIHRvIGNvbnNpZGVyXG4gICAgICBleHByZXNzaW9ucyB3aGljaCBhcmUgdGhlIGJvZGllcyBvZiBiaW5kaW5nIGZvcm1zIChsb2N1cyBvZiBjdHggZXh0ZW5zaW9ucylcblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlbnRyeSA9IHtcbiAgaWQ6IElkLnQsXG4gIGV4cGVjdGVkX3R5OiBUeXAudCxcbn07XG5cbi8qIEVhY2ggY28tY29udGV4dCBlbnRyeSBpcyBhIGxpc3Qgb2YgdGhlIHVzZXMgb2YgYSB2YXJpYWJsZVxuICAgd2l0aGluIHNvbWUgc2NvcGUsIGluY2x1ZGluZyB0aGVpciB0eXBlIGRlbWFuZHMgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IFZhck1hcC50XyhsaXN0KGVudHJ5KSk7XG5cbmxldCBlbXB0eTogdCA9IFZhck1hcC5lbXB0eTtcblxubGV0IG1rID0gKGN0eF9iZWZvcmU6IEN0eC50LCBjdHhfYWZ0ZXIsIGNvX2N0eDogdCk6IHQgPT4ge1xuICBsZXQgYWRkZWRfYmluZGluZ3MgPSBDdHguYWRkZWRfYmluZGluZ3MoY3R4X2FmdGVyLCBjdHhfYmVmb3JlKTtcbiAgVmFyTWFwLmZpbHRlcihcbiAgICAoKG5hbWUsIF8pKSA9PlxuICAgICAgc3dpdGNoIChDdHgubG9va3VwX3ZhcihhZGRlZF9iaW5kaW5ncywgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PiB0cnVlXG4gICAgICB8IFNvbWUoXykgPT4gZmFsc2VcbiAgICAgIH0sXG4gICAgY29fY3R4LFxuICApO1xufTtcblxuLyogTm90ZTogdGhpcyBjdXJyZW50bHkgc2hhZG93cyBpbiB0aGUgY2FzZSBvZiBkdXBsaWNhdGVzICovXG5sZXQgdW5pb246IGxpc3QodCkgPT4gdCA9XG4gIExpc3QuZm9sZF9sZWZ0KChjb19jdHgxLCBjb19jdHgyKSA9PiBjb19jdHgxIEAgY29fY3R4MiwgW10pO1xuXG5sZXQgc2luZ2xldG9uID0gKG5hbWUsIGlkLCBleHBlY3RlZF90eSk6IHQgPT4gW1xuICAobmFtZSwgW3tpZCwgZXhwZWN0ZWRfdHl9XSksXG5dO1xuXG5sZXQgam9pbjogKEN0eC50LCBsaXN0KGVudHJ5KSkgPT4gVHlwLnQgPVxuICAoY3R4LCBlbnRyaWVzKSA9PiB7XG4gICAgbGV0IGV4cGVjdGVkX3R5cyA9IExpc3QubWFwKGVudHJ5ID0+IGVudHJ5LmV4cGVjdGVkX3R5LCBlbnRyaWVzKTtcbiAgICBzd2l0Y2ggKFxuICAgICAgVHlwLmpvaW5fYWxsKH5lbXB0eT1Vbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2gsIGN0eCwgZXhwZWN0ZWRfdHlzKVxuICAgICkge1xuICAgIHwgTm9uZSA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2hcbiAgICB8IFNvbWUodHkpID0+IHR5XG4gICAgfTtcbiAgfTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8qIE1PREUucmVcblxuICAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSAoYW5hbHl0aWMpIHR5cGUgZXhwZWN0YXRpb24gaW1wb3NlZCBieSBhIHRlcm0nc1xuICAgICAgc3ludGFjdGljIGNvbnRleHQsIGluIHBhcnRpY3VsYXIgaXRzIGltbWVkaWF0ZSBwYXJlbnQuIFRoZSBtb3N0IGNvbW1vblxuICAgICAgY2FzZXMgYXJlIGVpdGhlciBTeW4gKG5vIHR5cGUgZXhwZWN0YXRpb24pLCBvciBBbmEgKHNvbWUgdHlwZSBleHBlY3RhdGlvbikuXG5cbiAgICAgIEEgdGVybSdzIE1PREUgaXMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoYXQgdGVybSdzIFNFTEYgKFNlbGYucmUpIGJ5XG4gICAgICB0byBkZXRlcm1pbmUgdGhhdCB0ZXJtJ3MgU1RBVFVTIChJbmZvLnJlKSwgd2hpY2ggZGljdGF0ZXMgd2hldGhlciBvciBub3RcbiAgICAgIGl0IGlzIHBsYWNlZCBpbiBhIGhvbGUsIGFuZCBoZW5jZSBpdHMgRklYRUQgVFlQRSAoSW5mby5yZSkuXG5cbiAgICAgIChJdCBpcyBjb25qZWN0dXJlZCBbY2l0YXRpb24gbmVlZGVkXSB0aGF0IHRoZSBTeW4gbW9kZSBpcyBmdW5jdGlvbmFsbHlcbiAgICAgIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gQW5hKFVua25vd24oU3luU3dpdGNoKSksIGFuZCB0aGF0IHRoaXMgdHlwZSBpc1xuICAgICAgdGh1cyB2ZXN0aWdpYWwuKVxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IFN5bkZ1biAvKiBVc2VkIG9ubHkgaW4gZnVuY3Rpb24gcG9zaXRpb24gb2YgYXBwbGljYXRpb25zICovXG4gIHwgU3luVHlwRnVuXG4gIHwgU3luXG4gIHwgQW5hKFR5cC50KTtcblxubGV0IGFuYTogVHlwLnQgPT4gdCA9IHR5ID0+IEFuYSh0eSk7XG5cbi8qIFRoZSBleHBlY3RlZCB0eXBlIGltcG9zZWQgYnkgYSBtb2RlICovXG5sZXQgdHlfb2Y6IHQgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBBbmEodHkpID0+IHR5XG4gIHwgU3luID0+IFVua25vd24oU3luU3dpdGNoKSB8PiBUeXAubWtfZmFzdFxuICB8IFN5bkZ1biA9PlxuICAgIEFycm93KFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgICB8PiBUeXAubWtfZmFzdFxuICB8IFN5blR5cEZ1biA9PlxuICAgIEZvcmFsbChcbiAgICAgIFZhcihcInN5bnR5cGZ1blwiKSB8PiBUUGF0LmZyZXNoLFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgICB8PiBUeXAubWtfZmFzdDsgLyogVE9ETzogbmFtaW5nIHRoZSB0eXBlIHZhcmlhYmxlPyAqL1xuXG5sZXQgb2ZfYXJyb3cgPSAoY3R4OiBDdHgudCwgbW9kZTogdCk6ICh0LCB0KSA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gKFN5biwgU3luKVxuICB8IEFuYSh0eSkgPT4gdHkgfD4gVHlwLm1hdGNoZWRfYXJyb3coY3R4KSB8PiBUdXBsZVV0aWwubWFwMihhbmEpXG4gIH07XG5cbmxldCBvZl9mb3JhbGwgPSAoY3R4OiBDdHgudCwgbmFtZV9vcHQ6IG9wdGlvbihzdHJpbmcpLCBtb2RlOiB0KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gU3luXG4gIHwgQW5hKHR5KSA9PlxuICAgIGxldCAobmFtZV9leHBlY3RlZF9vcHQsIGl0ZW0pID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgdHkpO1xuICAgIHN3aXRjaCAobmFtZV9vcHQsIG5hbWVfZXhwZWN0ZWRfb3B0KSB7XG4gICAgfCAoU29tZShuYW1lKSwgU29tZShuYW1lX2V4cGVjdGVkKSkgPT5cbiAgICAgIEFuYShUeXAuc3Vic3QoVmFyKG5hbWUpIHw+IFR5cC5ta19mYXN0LCBuYW1lX2V4cGVjdGVkLCBpdGVtKSlcbiAgICB8IF8gPT4gQW5hKGl0ZW0pXG4gICAgfTtcbiAgfTtcblxubGV0IG9mX3Byb2QgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgbGVuZ3RoKTogbGlzdCh0KSA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gTGlzdC5pbml0KGxlbmd0aCwgXyA9PiBTeW4pXG4gIHwgQW5hKHR5KSA9PiB0eSB8PiBUeXAubWF0Y2hlZF9wcm9kKGN0eCwgbGVuZ3RoKSB8PiBMaXN0Lm1hcChhbmEpXG4gIH07XG5cbmxldCBvZl9jb25zX2hkID0gKGN0eDogQ3R4LnQsIG1vZGU6IHQpOiB0ID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1blxuICB8IFN5blR5cEZ1biA9PiBTeW5cbiAgfCBBbmEodHkpID0+IEFuYShUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKVxuICB9O1xuXG5sZXQgb2ZfY29uc190bCA9IChjdHg6IEN0eC50LCBtb2RlOiB0LCBoZF90eTogVHlwLnQpOiB0ID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1blxuICB8IFN5blR5cEZ1biA9PiBBbmEoTGlzdChoZF90eSkgfD4gVHlwLm1rX2Zhc3QpXG4gIHwgQW5hKHR5KSA9PiBBbmEoTGlzdChUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKSB8PiBUeXAubWtfZmFzdClcbiAgfTtcblxubGV0IG9mX2xpc3QgPSAoY3R4OiBDdHgudCwgbW9kZTogdCk6IHQgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luXG4gIHwgU3luRnVuXG4gIHwgU3luVHlwRnVuID0+IFN5blxuICB8IEFuYSh0eSkgPT4gQW5hKFR5cC5tYXRjaGVkX2xpc3QoY3R4LCB0eSkpXG4gIH07XG5cbmxldCBvZl9saXN0X2NvbmNhdCA9IChjdHg6IEN0eC50LCBtb2RlOiB0KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gQW5hKExpc3QoVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0KSB8PiBUeXAubWtfZmFzdClcbiAgfCBBbmEodHkpID0+IEFuYShMaXN0KFR5cC5tYXRjaGVkX2xpc3QoY3R4LCB0eSkpIHw+IFR5cC5ta19mYXN0KVxuICB9O1xuXG5sZXQgb2ZfbGlzdF9saXQgPSAoY3R4OiBDdHgudCwgbGVuZ3RoLCBtb2RlOiB0KTogbGlzdCh0KSA9PlxuICBMaXN0LmluaXQobGVuZ3RoLCBfID0+IG9mX2xpc3QoY3R4LCBtb2RlKSk7XG5cbmxldCBjdHJfYW5hX3R5cCA9IChjdHg6IEN0eC50LCBtb2RlOiB0LCBjdHI6IENvbnN0cnVjdG9yLnQpOiBvcHRpb24oVHlwLnQpID0+IHtcbiAgLyogSWYgYSBjdHIgaXMgYmVpbmcgYW5hbHl6ZWQgYWdhaW5zdCAoYW4gYXJyb3cgdHlwZSByZXR1cm5pbmcpXG4gICAgIGEgc3VtIHR5cGUgaGF2aW5nIHRoYXQgY3RyIGFzIGEgdmFyaWFudCwgd2UgY29uc2lkZXIgdGhlXG4gICAgIGN0cidzIHR5cGUgdG8gYmUgZGV0ZXJtaW5lZCBieSB0aGUgc3VtIHR5cGUgKi9cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgQW5hKHt0ZXJtOiBBcnJvdyhfLCB0eV9hbmEpLCBffSlcbiAgfCBBbmEodHlfYW5hKSA9PlxuICAgIGxldCsgY3RycyA9IFR5cC5nZXRfc3VtX2NvbnN0cnVjdG9ycyhjdHgsIHR5X2FuYSk7XG4gICAgbGV0IHR5X2VudHJ5ID0gQ29uc3RydWN0b3JNYXAuZ2V0X2VudHJ5KGN0ciwgY3Rycyk7XG4gICAgc3dpdGNoICh0eV9lbnRyeSkge1xuICAgIHwgTm9uZSA9PiB0eV9hbmFcbiAgICB8IFNvbWUodHlfaW4pID0+IEFycm93KHR5X2luLCB0eV9hbmEpIHw+IFR5cC5ta19mYXN0XG4gICAgfTtcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCBvZl9jdHJfaW5fYXAgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgY3RyOiBDb25zdHJ1Y3Rvci50KTogb3B0aW9uKHQpID0+XG4gIHN3aXRjaCAoY3RyX2FuYV90eXAoY3R4LCBtb2RlLCBjdHIpKSB7XG4gIHwgU29tZSh7dGVybTogQXJyb3coXyksIF99IGFzIHR5X2FuYSkgPT4gU29tZShBbmEodHlfYW5hKSlcbiAgfCBTb21lKHR5X2FuYSkgPT5cbiAgICAvKiBDb25zaWRlciBmb3IgZXhhbXBsZSBcImxldCBfIDogK1lvID0gWW8oXCJsb2xcIikgaW4uLi5cIlxuICAgICAgIEhlcmUsIHRoZSAnWW8nIGNvbnN0cnVjdG9yIHNob3VsZCBiZSBpbiBhIGhvbGUsIGFzIGl0XG4gICAgICAgaXMgbnVsbGFyeSBidXQgdXNlZCBhcyB1bmFyeTsgd2UgcmVmbGVjdCB0aGlzIGJ5IGFuYWx5emluZ1xuICAgICAgIGFnYWluc3QgYW4gYXJyb3cgdHlwZS4gU2luY2Ugd2UgY2FuJ3QgZ3Vlc3MgYXQgd2hhdCB0aGVcbiAgICAgICBwYXJhbWV0ZXIgdHlwZSBtaWdodCBoYXZlIGJlLCB3ZSB1c2UgVW5rbm93bi4gKi9cbiAgICBTb21lKFxuICAgICAgQW5hKEFycm93KFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCB0eV9hbmEpIHw+IFR5cC5ta19mYXN0KSxcbiAgICApXG4gIHwgTm9uZSA9PiBOb25lXG4gIH07XG5cbmxldCBvZl9hcCA9IChjdHgsIG1vZGUsIGN0cjogb3B0aW9uKENvbnN0cnVjdG9yLnQpKTogdCA9PlxuICAvKiBJZiBhIGN0ciBhcHBsaWNhdGlvbiBpcyBiZWluZyBhbmFseXplZCBhZ2FpbnN0IGEgc3VtIHR5cGUgZm9yXG4gICAgIHdoaWNoIHRoYXQgY3RyIGlzIGEgdmFyaWFudCwgdGhlbiB3ZSBjb25zaWRlciB0aGUgY3RyIHRvIGJlIGluXG4gICAgIGFuYWx5dGljIG1vZGUgYWdhaW5zdCBhbiBhcnJvdyByZXR1cm5pbmcgdGhhdCBzdW0gdHlwZTsgb3RoZXJ3aXNlXG4gICAgIHdlIHVzZSB0aGUgdHlwaWNhbCBtb2RlIGZvciBmdW5jdGlvbiBhcHBsaWNhdGlvbnMgKi9cbiAgc3dpdGNoIChjdHIpIHtcbiAgfCBTb21lKG5hbWUpID0+XG4gICAgc3dpdGNoIChvZl9jdHJfaW5fYXAoY3R4LCBtb2RlLCBuYW1lKSkge1xuICAgIHwgU29tZShtb2RlKSA9PiBtb2RlXG4gICAgfCBfID0+IFN5bkZ1blxuICAgIH1cbiAgfCBOb25lID0+IFN5bkZ1blxuICB9O1xuXG5sZXQgdHlwYXBfbW9kZTogdCA9IFN5blR5cEZ1bjtcblxubGV0IG9mX2RlZmVycmVkX2FwX2FyZ3MgPSAobGVuZ3RoOiBpbnQsIHR5X2luczogbGlzdChUeXAudCkpOiBsaXN0KHQpID0+XG4gIChcbiAgICBMaXN0Lmxlbmd0aCh0eV9pbnMpID09IGxlbmd0aFxuICAgICAgPyB0eV9pbnMgOiBMaXN0LmluaXQobGVuZ3RoLCBfID0+IFR5cC5Vbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdClcbiAgKVxuICB8PiBMaXN0Lm1hcCh0eSA9PiBBbmEodHkpKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIFNFTEYucmVcblxuICAgVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgU0VMRiBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggcmVwcmVzZW50c1xuICAgdGhlIHN5bnRoZXRpYyB0eXBlIGluZm9ybWF0aW9uIGRlcml2YWJsZSBmcm9tIGEgdGVybSBpbmRlcGVuZGVudFxuICAgb2YgdGhlIHR5cGUgZXhwZWN0YXRpb24gKGkuZS4gTU9ERSkgb2YgaXRzIHN5bnRhY3RpYyBjb250ZXh0LiBUaGlzXG4gICBzeW5ldGhldGljIGluZm9ybWF0aW9uIGlzIG5vdCBlbnRpcmVseSBpbmRlcGVuZGVudCwgaW4gdGhhdCBpdCBzdGlsbFxuICAgdXNlcyB0aGUgdHlwaW5nIGNvbnRleHQgcGFzc2VkIGRvd24gZnJvbSB0aGUgc3ludGFjdGljIGNvbnRleHQuXG5cbiAgIEEgdGVybSB3aGljaCBmcm9tIHdoaWNoIGEgdHlwZSBjYW4gYmUgZGVyaXZlZCBpbiBpc29sYXRpb24sIHRoYXQgaXMsXG4gICB0aGF0IGhhcyBhIHZhbGlkIHN5bnRoZXRpYyB0eXBpbmcganVkZ2VtZW50LCB3aWxsIGdlbmVyYWxseSBoYXZlIGEgU0VMRlxuICAgb2YgSnVzdChzb21lX3R5cGUpLiAoVGhlIG9uZSBjdXJyZW50IGV4Y2VwdGlvbiBhcmUgdGhlIGNvbnN0cnVjdG9ycyBvZiBsYWJlbGxlZFxuICAgc3VtIHR5cGVzLCB3aGljaCBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYXMgdGhlaXIgc3ludGhldGljIHR5cGVcbiAgIG1heSBiZSAnb3ZlcndyaXR0ZW4nIGJ5IHRoZSBhbmFseXRpYyBleHBlY3RhdGlvbilcblxuICAgVGhlIG90aGVyIGNhc2VzIGFsbCByZXByZXNlbnQgc3RhdGVzIGZvciB3aGljaCBubyBzaW5nbGUgdHlwZSBjYW4gYmVcbiAgIGRlcml2ZWQsIHN1Y2ggYXMgc3ludGFjdGljIGVycm9ycywgb3IgYnJhbmNoaW5nIGNvbnN0cnVjdHMgd2hpY2ggbWF5XG4gICBoYXZlIGluY29uc2lzdGVudCB0eXBlcy5cblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBqb2luX3R5cGUgPVxuICB8IElkXG4gIHwgTGlzdDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBKdXN0KFR5cC50KSAvKiBKdXN0IGEgcmVndWxhciB0eXBlICovXG4gIHwgTm9Kb2luKGpvaW5fdHlwZSwgbGlzdChUeXAuc291cmNlKSkgLyogSW5jb25zaXN0ZW50IHR5cGVzIGZvciBlLmcgbWF0Y2gsIGxpc3RsaXRzICovXG4gIHwgQmFkVG9rZW4oVG9rZW4udCkgLyogSW52YWxpZCBleHByZXNzaW9uIHRva2VuLCB0cmVhdGVkIGFzIGhvbGUgKi9cbiAgfCBCYWRUcml2QXAoVHlwLnQpIC8qIFRyaXZpYWwgKG51bGxhcnkpIGFwIG9uIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCB0YWtlIHRyaXYgKi9cbiAgfCBJc011bHRpIC8qIE11bHRpaG9sZSwgdHJlYXRlZCBhcyBob2xlICovXG4gIHwgSXNDb25zdHJ1Y3Rvcih7XG4gICAgICBuYW1lOiBDb25zdHJ1Y3Rvci50LFxuICAgICAgc3luX3R5OiBvcHRpb24oVHlwLnQpLFxuICAgIH0pOyAvKiBDb25zdHJ1Y3RvcnMgaGF2ZSBzcGVjaWFsIGFuYSBsb2dpYyAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3BhcnRpYWxfYXAgPVxuICB8IE5vRGVmZXJyZWRBcmdzXG4gIHwgQXJpdHlNaXNtYXRjaCh7XG4gICAgICBleHBlY3RlZDogaW50LFxuICAgICAgYWN0dWFsOiBpbnQsXG4gICAgfSk7XG5cbi8qIEV4cHJlc3Npb25zIGNhbiBhbHNvIGJlIGZyZWUgdmFyaWFibGVzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cCA9XG4gIHwgRnJlZShWYXIudClcbiAgfCBJc0RlZmVycmFsKEV4cC5kZWZlcnJhbF9wb3NpdGlvbilcbiAgfCBJc0JhZFBhcnRpYWxBcChlcnJvcl9wYXJ0aWFsX2FwKVxuICB8IENvbW1vbih0KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwYXQgPVxuICB8IENvbW1vbih0KTtcblxubGV0IGpvaW5fb2YgPSAoajogam9pbl90eXBlLCB0eTogVHlwLnQpOiBUeXAudCA9PlxuICBzd2l0Y2ggKGopIHtcbiAgfCBJZCA9PiB0eVxuICB8IExpc3QgPT4gTGlzdCh0eSkgfD4gVHlwLmZyZXNoXG4gIH07XG5cbi8qIFdoYXQgdGhlIHR5cGUgd291bGQgYmUgaWYgdGhlIHBvc2l0aW9uIGhhZCBiZWVuXG4gICBzeW50aGV0aWMsIHNvIG5vIGhvbGUgZml4aW5nLiBSZXR1cm5zIG5vbmUgaWZcbiAgIHRoZXJlJ3Mgbm8gYXBwbGljYWJsZSBzeW50aGV0aWMgcnVsZS4gKi9cbmxldCB0eXBfb2Y6IChDdHgudCwgdCkgPT4gb3B0aW9uKFR5cC50KSA9XG4gIF9jdHggPT5cbiAgICBmdW5cbiAgICB8IEp1c3QodHlwKSA9PiBTb21lKHR5cClcbiAgICB8IElzQ29uc3RydWN0b3Ioe3N5bl90eSwgX30pID0+IHN5bl90eVxuICAgIHwgQmFkVG9rZW4oXylcbiAgICB8IEJhZFRyaXZBcChfKVxuICAgIHwgSXNNdWx0aVxuICAgIHwgTm9Kb2luKF8pID0+IE5vbmU7XG5cbmxldCB0eXBfb2ZfZXhwOiAoQ3R4LnQsIGV4cCkgPT4gb3B0aW9uKFR5cC50KSA9XG4gIGN0eCA9PlxuICAgIGZ1blxuICAgIHwgRnJlZShfKVxuICAgIHwgSXNEZWZlcnJhbChfKVxuICAgIHwgSXNCYWRQYXJ0aWFsQXAoXykgPT4gTm9uZVxuICAgIHwgQ29tbW9uKHNlbGYpID0+IHR5cF9vZihjdHgsIHNlbGYpO1xuXG5sZXQgdHlwX29mX3BhdDogKEN0eC50LCBwYXQpID0+IG9wdGlvbihUeXAudCkgPVxuICBjdHggPT5cbiAgICBmdW5cbiAgICB8IENvbW1vbihzZWxmKSA9PiB0eXBfb2YoY3R4LCBzZWxmKTtcblxuLyogVGhlIHNlbGYgb2YgYSB2YXIgZGVwZW5kcyBvbiB0aGUgY3R4OyBpZiB0aGVcbiAgIGxvb2t1cCBmYWlscywgaXQgaXMgYSBmcmVlIHZhcmlhYmxlICovXG5sZXQgb2ZfZXhwX3ZhciA9IChjdHg6IEN0eC50LCBuYW1lOiBWYXIudCk6IGV4cCA9PlxuICBzd2l0Y2ggKEN0eC5sb29rdXBfdmFyKGN0eCwgbmFtZSkpIHtcbiAgfCBOb25lID0+IEZyZWUobmFtZSlcbiAgfCBTb21lKHZhcikgPT4gQ29tbW9uKEp1c3QodmFyLnR5cCkpXG4gIH07XG5cbi8qIFRoZSBzZWxmIG9mIGEgY3RyIGRlcGVuZHMgb24gdGhlIGN0eCwgYnV0IGFcbiAgIGxvb2t1cCBmYWlsdXJlIGRvZXNuJ3QgbmVjZXNzYXJpbHkgbWVhbnMgaXRzXG4gICBmcmVlOyBpdCBtYXkgYmUgZ2l2ZW4gYSB0eXBlIGFuYWx5dGljYWxseSAqL1xubGV0IG9mX2N0ciA9IChjdHg6IEN0eC50LCBuYW1lOiBDb25zdHJ1Y3Rvci50KTogdCA9PlxuICBJc0NvbnN0cnVjdG9yKHtcbiAgICBuYW1lLFxuICAgIHN5bl90eTpcbiAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9jdHIoY3R4LCBuYW1lKSkge1xuICAgICAgfCBOb25lID0+IE5vbmVcbiAgICAgIHwgU29tZSh7dHlwLCBffSkgPT4gU29tZSh0eXApXG4gICAgICB9LFxuICB9KTtcblxubGV0IG9mX2RlZmVycmVkX2FwID0gKGFyZ3MsIHR5X2luczogbGlzdChUeXAudCksIHR5X291dDogVHlwLnQpOiBleHAgPT4ge1xuICBsZXQgZXhwZWN0ZWQgPSBMaXN0Lmxlbmd0aCh0eV9pbnMpO1xuICBsZXQgYWN0dWFsID0gTGlzdC5sZW5ndGgoYXJncyk7XG4gIGlmIChleHBlY3RlZCAhPSBhY3R1YWwpIHtcbiAgICBJc0JhZFBhcnRpYWxBcChBcml0eU1pc21hdGNoKHtleHBlY3RlZCwgYWN0dWFsfSkpO1xuICB9IGVsc2UgaWYgKExpc3QuZm9yX2FsbChFeHAuaXNfZGVmZXJyYWwsIGFyZ3MpKSB7XG4gICAgSXNCYWRQYXJ0aWFsQXAoTm9EZWZlcnJlZEFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGxldCB0eV9pbnMgPVxuICAgICAgTGlzdC5jb21iaW5lKGFyZ3MsIHR5X2lucylcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoYXJnLCBfdHkpKSA9PiBFeHAuaXNfZGVmZXJyYWwoYXJnKSlcbiAgICAgIHw+IExpc3QubWFwKHNuZCk7XG4gICAgbGV0IHR5X2luID1cbiAgICAgIExpc3QubGVuZ3RoKHR5X2lucykgPT0gMVxuICAgICAgICA/IExpc3QuaGQodHlfaW5zKSA6IFByb2QodHlfaW5zKSB8PiBUeXAuZnJlc2g7XG4gICAgQ29tbW9uKEp1c3QoQXJyb3codHlfaW4sIHR5X291dCkgfD4gVHlwLmZyZXNoKSk7XG4gIH07XG59O1xuXG5sZXQgYWRkX3NvdXJjZSA9IExpc3QubWFwMigoaWQsIHR5KSA9PiBUeXAue2lkLCB0eX0pO1xuXG5sZXQgbWF0Y2ggPSAoY3R4OiBDdHgudCwgdHlzOiBsaXN0KFR5cC50KSwgaWRzOiBsaXN0KElkLnQpKTogdCA9PlxuICBzd2l0Y2ggKFR5cC5qb2luX2FsbCh+ZW1wdHk9VW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLmZyZXNoLCBjdHgsIHR5cykpIHtcbiAgfCBOb25lID0+IE5vSm9pbihJZCwgYWRkX3NvdXJjZShpZHMsIHR5cykpXG4gIHwgU29tZSh0eSkgPT4gSnVzdCh0eSlcbiAgfTtcblxubGV0IGxpc3RsaXQgPSAofmVtcHR5LCBjdHg6IEN0eC50LCB0eXM6IGxpc3QoVHlwLnQpLCBpZHM6IGxpc3QoSWQudCkpOiB0ID0+XG4gIHN3aXRjaCAoVHlwLmpvaW5fYWxsKH5lbXB0eSwgY3R4LCB0eXMpKSB7XG4gIHwgTm9uZSA9PiBOb0pvaW4oTGlzdCwgYWRkX3NvdXJjZShpZHMsIHR5cykpXG4gIHwgU29tZSh0eSkgPT4gSnVzdChMaXN0KHR5KSB8PiBUeXAuZnJlc2gpXG4gIH07XG5cbmxldCBsaXN0X2NvbmNhdCA9IChjdHg6IEN0eC50LCB0eXM6IGxpc3QoVHlwLnQpLCBpZHM6IGxpc3QoSWQudCkpOiB0ID0+XG4gIHN3aXRjaCAoVHlwLmpvaW5fYWxsKH5lbXB0eT1Vbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2gsIGN0eCwgdHlzKSkge1xuICB8IE5vbmUgPT4gTm9Kb2luKExpc3QsIGFkZF9zb3VyY2UoaWRzLCB0eXMpKVxuICB8IFNvbWUodHkpID0+IEp1c3QodHkpXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxuLyogSU5GTy5yZVxuXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBjdXJzb3IgSU5GTyBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggaXMgdXNlZFxuICAgdG8gcmVwcmVzZW50IHRoZSBzdGF0aWMgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgdGVybSBpbiB0aGVcbiAgIEFTVC4gVGhpcyBpbmNsdWRlcyB0aGUgdGVybSBpdHNlbGYsIGFuZCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvXG4gICB0eXBpbmcgYW5kIHN5bnRheCwgaW5jbHVkZWQgZXJyb25lb3VzIHN0YXRlcy5cblxuICAgRWFjaCB0ZXJtIGlzIGFzc2lnbmVkIGEgU1RBVFVTLCB3aGljaCBpcyBkaXJlY3RseSB1c2VkIHRvIGRldGVybWluZVxuICAgdGhlIG1lc3NhZ2UgZGlzcGxheWVkIHRvIHRoZSB1c2VyIGluIEN1cnNvckluc3BlY3Rvci5yZS4gRWFjaCBzb3J0XG4gICBoYXMgaXRzIG93biBzdGF0dXMgZGF0YXR5cGUsIHdoaWNoIGlzIGRpdmlkZWQgaW50byBPSyBzdGF0ZXMgKG5vdFxuICAgaW4gZXJyb3IgaG9sZXMpIGFuZCBFUlJPUiBzdGF0ZXMgKGluIGVycm9yIGhvbGVzKS5cblxuICAgUmVnYXJkbGVzcyBvZiBlcnJvcnMsIGV2ZXJ5IGV4cHJlc3Npb24gJiBwYXR0ZXJuIHRlcm0gaXMgdWx0aW1hdGVseVxuICAgYXNzaWduZWQgYSBGSVhFRCBUWVBFLCB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgdGVybSBhZnRlciBob2xlXG4gICBmaXhpbmc7IHRoYXQgaXMsIGFsbCBvdGhlcndpc2UgaWxsLXR5cGVkIHRlcm1zIGFyZSBjb25zaWRlcmVkIHRvXG4gICBiZSAnd3JhcHBlZCBpbiBub24tZW1wdHkgaG9sZXMnLCBpLmUuIGFzc2lnbmVkIGFuIFVua25vd24gdHlwZS5cblxuICAgRml4ZWQgdHlwZXMgYXJlIGRldGVybWluZWQgYnkgcmVjb25jaWxsaW5nIHR3byBzb3VyY2VzIG9mIHR5cGVcbiAgIGluZm9ybWF0aW9uOiB0aGUgU0VMRiAoU2VsZi5yZSksIHJlcHJlc2VudGluZyB0aGUgdHlwZSBpbmZvcm1hdGlvblxuICAgZGVyaXZhYmxlIGZyb20gYSB0ZXJtIGluIGlzb2xhdGlvbiwgYW5kIHRoZSBNT0RFIChNb2RlLnJlKSxcbiAgIHJlcHJlc2VudGluZyB0aGUgZXhwZWN0ZWQgdHlwZSBpbmZvcm1hdGlvbiBpbXBvc2VkIGJ5IHRoZSBzdXJyb3VuZGluZ1xuICAgc3ludGFjdGljIGNvbnRleHQuIEEgc3VjY2Vzc2Z1bCByZWNvbmNpbGxpYXRpb24gcmVzdWx0cyBpbiBhbiBPS1xuICAgc3RhdHVzOyBvdGhlcndpc2UsIGFuIEVSUk9SIHN0YXR1cywgYnV0IGluIGJvdGggY2FzZXMsIGEgZml4ZWQgdHlwZVxuICAgaXMgZGV0ZXJtaW5lZC5cblxuICAgKi9cblxuLyogVGhlIGlkcyBvZiBhIHRlcm0ncyBhbmNlc3RvcnMgaW4gdGhlIEFTVCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhbmNlc3RvcnMgPSBsaXN0KElkLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX2luY29uc2lzdGVudCA9XG4gIC8qIFNlbGYgdHlwZSAoc3luKSBpbmNvbnNpc3RlbnQgd2l0aCBleHBlY3RlZCB0eXBlIChhbmEpICovXG4gIHwgRXhwZWN0YXRpb24oe1xuICAgICAgYW5hOiBUeXAudCxcbiAgICAgIHN5bjogVHlwLnQsXG4gICAgfSlcbiAgLyogSW5jb25zaXN0ZW50IG1hdGNoIG9yIGxpc3RsaXQgKi9cbiAgfCBJbnRlcm5hbChsaXN0KFR5cC50KSlcbiAgLyogQmFkIGZ1bmN0aW9uIHBvc2l0aW9uICovXG4gIHwgV2l0aEFycm93KFR5cC50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9ub190eXBlID1cbiAgLyogSW52YWxpZCBleHByZXNzaW9uIHRva2VuLCB0cmVhdGVkIGFzIGhvbGUgKi9cbiAgfCBCYWRUb2tlbihUb2tlbi50KVxuICAvKiBFbXB0eSBhcHBsaWNhdGlvbiBvZiBmdW5jdGlvbiB3aXRoIGluY29uc2lzdGVudCB0eXBlICovXG4gIHwgQmFkVHJpdkFwKFR5cC50KVxuICAvKiBTdW0gY29uc3RydWN0b3IgbmVpdGVyIGJvdW5kIG5vciBpbiBhbmEgdHlwZSAqL1xuICB8IEZyZWVDb25zdHJ1Y3RvcihDb25zdHJ1Y3Rvci50KTtcblxuLyogRXJyb3JzIHdoaWNoIGNhbiBhcHBseSB0byBlaXRoZXIgZXhwcmVzc2lvbiBvciBwYXR0ZXJucyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9jb21tb24gPVxuICAvKiBVbmRlcmRldGVybWluZWQ6IE5vIHR5cGUgY2FuIGJlIGFzc2lnbmVkICovXG4gIHwgTm9UeXBlKGVycm9yX25vX3R5cGUpXG4gIC8qIE92ZXJkZXRlcm1pbmVkOiBDb25mbGljdGluZyB0eXBlIGV4cGVjdGF0aW9ucyAqL1xuICB8IEluY29uc2lzdGVudChlcnJvcl9pbmNvbnNpc3RlbnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX2V4cCA9XG4gIHwgRnJlZVZhcmlhYmxlKFZhci50KSAvKiBVbmJvdW5kIHZhcmlhYmxlIChub3QgaW4gdHlwaW5nIGNvbnRleHQpICovXG4gIHwgVW51c2VkRGVmZXJyYWxcbiAgfCBCYWRQYXJ0aWFsQXAoU2VsZi5lcnJvcl9wYXJ0aWFsX2FwKVxuICB8IENvbW1vbihlcnJvcl9jb21tb24pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3BhdCA9XG4gIHwgRXhwZWN0ZWRDb25zdHJ1Y3RvciAvKiBPbmx5IGNvbnN0cnV0b3JzIGNhbiBiZSBhcHBsaWVkICovXG4gIHwgQ29tbW9uKGVycm9yX2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfYW5hID1cbiAgLyogVGhlIGV4cGVjdGVkIChhbmEpIHR5cGUgYW5kIHRoZSBzZWxmIChzeW4pIHR5cGUgYXJlXG4gICAgIGNvbnNpc3RlbnQsIGFzIHdpdG5lc3NlZCBieSB0aGVpciBqb2ludCB0eXBlIChqb2luKSAqL1xuICB8IENvbnNpc3RlbnQoe1xuICAgICAgYW5hOiBUeXAudCxcbiAgICAgIHN5bjogVHlwLnQsXG4gICAgICBqb2luOiBUeXAudCxcbiAgICB9KVxuICAvKiBBIG1hdGNoIGV4cHJlc3Npb24gb3IgbGlzdCBsaXRlcmFsIHdoaWNoLCBpbiBzeW50aGV0aWMgcG9zaXRpb24sXG4gICAgIHdvdWxkIGJlIG1hcmtlZCBhcyBpbnRlcm5hbGx5IGluY29uc2lzdGVudCwgYnV0IGlzIGNvbnNpZGVyZWRcbiAgICAgZmluZSBhcyB0aGUgZXhwZWN0ZWQgdHlwZSBwcm92aWRlcyBhIGNvbnNpc3RlbnQgbG93ZXIgYm91bmRcbiAgICAgKG9mdGVuIFVua25vd24pIGZvciB0aGUgdHlwZXMgb2YgdGhlIGJyYW5jaGVzL2VsZW1lbnRzICovXG4gIHwgSW50ZXJuYWxseUluY29uc2lzdGVudCh7XG4gICAgICBhbmE6IFR5cC50LFxuICAgICAgbm9qb2luOiBsaXN0KFR5cC50KSxcbiAgICB9KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19jb21tb24gPVxuICB8IFN5bihUeXAudClcbiAgfCBBbmEob2tfYW5hKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19leHAgPVxuICB8IEFuYURlZmVycmFsQ29uc2lzdGVudChUeXAudClcbiAgfCBDb21tb24ob2tfY29tbW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19wYXQgPSBva19jb21tb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX2NvbW1vbiA9XG4gIHwgSW5Ib2xlKGVycm9yX2NvbW1vbilcbiAgfCBOb3RJbkhvbGUob2tfY29tbW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0dXNfZXhwID1cbiAgfCBJbkhvbGUoZXJyb3JfZXhwKVxuICB8IE5vdEluSG9sZShva19leHApO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c19wYXQgPVxuICB8IEluSG9sZShlcnJvcl9wYXQpXG4gIHwgTm90SW5Ib2xlKG9rX3BhdCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX3ZhcmlhbnQgPVxuICB8IFVuaXF1ZVxuICB8IER1cGxpY2F0ZTtcblxuLyogRXhwZWN0YXRpb24gaW1wb3NlZCBvbiBhIHR5cGUgYnkgdGhlIHBhcmVudCBmb3JtLlxuICAgVE9ETzogVGhpcyBpcyBmdW5kYW1lbnRhbGx5IHN5bnRhY3RpYyBhbmQgc2hvdWxkXG4gICBldmVudHVhbGx5IGJlIHJlaW1wbGVtZXRlZCB2aWEgYSBzZXBlcmF0ZSBzb3J0ICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHR5cF9leHBlY3RzID1cbiAgfCBUeXBlRXhwZWN0ZWRcbiAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKHN0YXR1c192YXJpYW50LCBUeXAudClcbiAgfCBWYXJpYW50RXhwZWN0ZWQoc3RhdHVzX3ZhcmlhbnQsIFR5cC50KTtcblxuLyogVHlwZSB0ZXJtIGVycm9yc1xuICAgVE9ETzogVGhlIHRocmVlIGFkZGl0aW9uYWwgZXJyb3JzIHN0YXR1c2VzXG4gICBhcmUgZnVuZGFtZW50YWxseSBzeW50YWN0aWMgYW5kIHNob3VsZCB3aGVuXG4gICBwb3NzaWJsZSBiZSByZWltcGxlbWV0ZWQgdmlhIGEgc2VwZXJhdGUgc29ydCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl90eXAgPVxuICB8IEJhZFRva2VuKFRva2VuLnQpIC8qIEludmFsaWQgdG9rZW4sIHRyZWF0ZWQgYXMgdHlwZSBob2xlICovXG4gIHwgRnJlZVR5cGVWYXJpYWJsZShzdHJpbmcpIC8qIEZyZWUgdHlwZSB2YXJpYWJsZSAqL1xuICB8IER1cGxpY2F0ZUNvbnN0cnVjdG9yKENvbnN0cnVjdG9yLnQpIC8qIER1cGxpY2F0ZSBjdHIgaW4gc2FtZSBzdW0gKi9cbiAgfCBXYW50VHlwZUZvdW5kQXBcbiAgfCBXYW50Q29uc3RydWN0b3JGb3VuZFR5cGUoVHlwLnQpXG4gIHwgV2FudENvbnN0cnVjdG9yRm91bmRBcDtcblxuLyogVHlwZSBvayBzdGF0dXNlcyBmb3IgY3Vyc29yIGluc3BlY3RvciAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva190eXAgPVxuICB8IFZhcmlhbnQoQ29uc3RydWN0b3IudCwgVHlwLnQpXG4gIHwgVmFyaWFudEluY29tcGxldGUoVHlwLnQpXG4gIHwgVHlwZUFsaWFzKHN0cmluZywgVHlwLnQpXG4gIHwgVHlwZShUeXAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX3R5cCA9XG4gIHwgSW5Ib2xlKGVycm9yX3R5cClcbiAgfCBOb3RJbkhvbGUob2tfdHlwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0eXBlX3Zhcl9lcnIgPVxuICB8IE90aGVyXG4gIHwgTm90Q2FwaXRhbGl6ZWQ7XG5cbi8qIFdoYXQgYXJlIHdlIHNoYWRvd2luZz8gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2hhZG93X3NyYyA9XG4gIHwgQmFzZVR5cFxuICB8IFR5QWxpYXNcbiAgfCBUeVZhcjtcblxuLyogVHlwZSBwYXR0ZXJuIHRlcm0gZXJyb3JzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3RwYXQgPVxuICB8IFNoYWRvd3NUeXBlKHN0cmluZywgc2hhZG93X3NyYylcbiAgfCBOb3RBVmFyKHR5cGVfdmFyX2Vycik7XG5cbi8qIFR5cGUgcGF0dGVybiBvayBzdGF0dXNlcyBmb3IgY3Vyc29yIGluc3BlY3RvciAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva190cGF0ID1cbiAgfCBFbXB0eVxuICB8IFZhcihzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c190cGF0ID1cbiAgfCBOb3RJbkhvbGUob2tfdHBhdClcbiAgfCBJbkhvbGUoZXJyb3JfdHBhdCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwID0ge1xuICB0ZXJtOiBVRXhwLnQsIC8qIFRoZSB0ZXJtIHVuZGVyIGNvbnNpZGVyYXRpb24gKi9cbiAgYW5jZXN0b3JzLCAvKiBBc2NlbmRpbmcgbGlzdCBvZiBjb250YWluaW5nIHRlcm0gaWRzICovXG4gIGN0eDogQ3R4LnQsIC8qIFR5cGluZyBjb250ZXh0IGZvciB0aGUgdGVybSAqL1xuICBtb2RlOiBNb2RlLnQsIC8qIFBhcmVudGFsIHR5cGUgZXhwZWN0YXRpb25zICAqL1xuICBzZWxmOiBTZWxmLmV4cCwgLyogRXhwZWN0YXRpb24taW5kZXBlbmRlbnQgdHlwZSBpbmZvICovXG4gIGNvX2N0eDogQ29DdHgudCwgLyogTG9jYWxseSBmcmVlIHZhcmlhYmxlcyAqL1xuICBjbHM6IENscy50LCAvKiBERVJJVkVEOiBTeW50YXggY2xhc3MgKGkuZS4gZm9ybSBuYW1lKSAqL1xuICBzdGF0dXM6IHN0YXR1c19leHAsIC8qIERFUklWRUQ6IE9rL0Vycm9yIHN0YXR1c2VzIGZvciBkaXNwbGF5ICovXG4gIHR5OiBUeXAudCAvKiBERVJJVkVEOiBUeXBlIGFmdGVyIG5vbmVtcHR5IGhvbGUgZml4aW5nICovXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBhdCA9IHtcbiAgdGVybTogVVBhdC50LFxuICBhbmNlc3RvcnMsXG4gIGN0eDogQ3R4LnQsXG4gIGNvX2N0eDogQ29DdHgudCxcbiAgcHJldl9zeW5zd2l0Y2g6IG9wdGlvbihUeXAudCksIC8vIElmIGEgcGF0dGVybiBpcyBmaXJzdCBzeW50aGVzaXplZCwgdGhlbiBhbmFseXNlZCwgdGhlIGluaXRpYWwgc3luIGlzIHN0b3JlZCBoZXJlLlxuICBtb2RlOiBNb2RlLnQsXG4gIHNlbGY6IFNlbGYucGF0LFxuICBjbHM6IENscy50LFxuICBzdGF0dXM6IHN0YXR1c19wYXQsXG4gIHR5OiBUeXAudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHlwID0ge1xuICB0ZXJtOiBVVHlwLnQsXG4gIGFuY2VzdG9ycyxcbiAgY3R4OiBDdHgudCxcbiAgZXhwZWN0czogdHlwX2V4cGVjdHMsXG4gIGNsczogQ2xzLnQsXG4gIHN0YXR1czogc3RhdHVzX3R5cCxcbiAgdHk6IFR5cC50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0cGF0ID0ge1xuICB0ZXJtOiBUUGF0LnQsXG4gIGFuY2VzdG9ycyxcbiAgY3R4OiBDdHgudCxcbiAgY2xzOiBDbHMudCxcbiAgc3RhdHVzOiBzdGF0dXNfdHBhdCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2Vjb25kYXJ5ID0ge1xuICBpZDogSWQudCwgLy8gSWQgb2YgdGVybSBzdGF0aWMgaW5mbyBpcyBzb3VyY2VkIGZyb21cbiAgY2xzOiBDbHMudCwgLy8gQ2xzIG9mIHNlY29uZGFyeSwgbm90IHNvdXJjZSB0ZXJtXG4gIHNvcnQ6IFNvcnQudCwgLy8gZnJvbSBzb3VyY2UgdGVybVxuICBjdHg6IEN0eC50IC8vIGZyb20gc291cmNlIHRlcm1cbn07XG5cbi8qIFRoZSBzdGF0aWMgaW5mb3JtYXRpb24gY29sbGF0ZWQgZm9yIGVhY2ggdGVybSAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBJbmZvRXhwKGV4cClcbiAgfCBJbmZvUGF0KHBhdClcbiAgfCBJbmZvVHlwKHR5cClcbiAgfCBJbmZvVFBhdCh0cGF0KVxuICB8IFNlY29uZGFyeShzZWNvbmRhcnkpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yID1cbiAgfCBFeHAoZXJyb3JfZXhwKVxuICB8IFBhdChlcnJvcl9wYXQpXG4gIHwgVHlwKGVycm9yX3R5cClcbiAgfCBUUGF0KGVycm9yX3RwYXQpO1xuXG5sZXQgc29ydF9vZjogdCA9PiBTb3J0LnQgPVxuICBmdW5cbiAgfCBJbmZvRXhwKF8pID0+IEV4cFxuICB8IEluZm9QYXQoXykgPT4gUGF0XG4gIHwgSW5mb1R5cChfKSA9PiBUeXBcbiAgfCBJbmZvVFBhdChfKSA9PiBUUGF0XG4gIHwgU2Vjb25kYXJ5KHMpID0+IHMuc29ydDtcblxubGV0IGNsc19vZjogdCA9PiBDbHMudCA9XG4gIGZ1blxuICB8IEluZm9FeHAoe2NscywgX30pXG4gIHwgSW5mb1BhdCh7Y2xzLCBffSlcbiAgfCBJbmZvVHlwKHtjbHMsIF99KVxuICB8IEluZm9UUGF0KHtjbHMsIF99KVxuICB8IFNlY29uZGFyeSh7Y2xzLCBffSkgPT4gY2xzO1xuXG5sZXQgY3R4X29mOiB0ID0+IEN0eC50ID1cbiAgZnVuXG4gIHwgSW5mb0V4cCh7Y3R4LCBffSlcbiAgfCBJbmZvUGF0KHtjdHgsIF99KVxuICB8IEluZm9UeXAoe2N0eCwgX30pXG4gIHwgSW5mb1RQYXQoe2N0eCwgX30pXG4gIHwgU2Vjb25kYXJ5KHtjdHgsIF99KSA9PiBjdHg7XG5cbmxldCBhbmNlc3RvcnNfb2Y6IHQgPT4gYW5jZXN0b3JzID1cbiAgZnVuXG4gIHwgSW5mb0V4cCh7YW5jZXN0b3JzLCBffSlcbiAgfCBJbmZvUGF0KHthbmNlc3RvcnMsIF99KVxuICB8IEluZm9UeXAoe2FuY2VzdG9ycywgX30pXG4gIHwgSW5mb1RQYXQoe2FuY2VzdG9ycywgX30pID0+IGFuY2VzdG9yc1xuICB8IFNlY29uZGFyeShfKSA9PiBbXTsgLy9UT0RPXG5cbmxldCBpZF9vZjogdCA9PiBJZC50ID1cbiAgZnVuXG4gIHwgSW5mb0V4cChpKSA9PiBFeHAucmVwX2lkKGkudGVybSlcbiAgfCBJbmZvUGF0KGkpID0+IFBhdC5yZXBfaWQoaS50ZXJtKVxuICB8IEluZm9UeXAoaSkgPT4gVHlwLnJlcF9pZChpLnRlcm0pXG4gIHwgSW5mb1RQYXQoaSkgPT4gVFBhdC5yZXBfaWQoaS50ZXJtKVxuICB8IFNlY29uZGFyeShzKSA9PiBzLmlkO1xuXG5sZXQgZXJyb3Jfb2Y6IHQgPT4gb3B0aW9uKGVycm9yKSA9XG4gIGZ1blxuICB8IEluZm9FeHAoe3N0YXR1czogTm90SW5Ib2xlKF8pLCBffSlcbiAgfCBJbmZvUGF0KHtzdGF0dXM6IE5vdEluSG9sZShfKSwgX30pXG4gIHwgSW5mb1R5cCh7c3RhdHVzOiBOb3RJbkhvbGUoXyksIF99KVxuICB8IEluZm9UUGF0KHtzdGF0dXM6IE5vdEluSG9sZShfKSwgX30pID0+IE5vbmVcbiAgfCBJbmZvRXhwKHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShFeHAoZXJyKSlcbiAgfCBJbmZvUGF0KHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShQYXQoZXJyKSlcbiAgfCBJbmZvVHlwKHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShUeXAoZXJyKSlcbiAgfCBJbmZvVFBhdCh7c3RhdHVzOiBJbkhvbGUoZXJyKSwgX30pID0+IFNvbWUoVFBhdChlcnIpKVxuICB8IFNlY29uZGFyeShfKSA9PiBOb25lO1xuXG5sZXQgZXhwX2NvX2N0eDogZXhwID0+IENvQ3R4LnQgPSAoe2NvX2N0eCwgX30pID0+IGNvX2N0eDtcbmxldCBleHBfdHk6IGV4cCA9PiBUeXAudCA9ICh7dHksIF99KSA9PiB0eTtcbmxldCBwYXRfY3R4OiBwYXQgPT4gQ3R4LnQgPSAoe2N0eCwgX30pID0+IGN0eDtcbmxldCBwYXRfdHk6IHBhdCA9PiBUeXAudCA9ICh7dHksIF99KSA9PiB0eTtcblxubGV0IHJlYyBzdGF0dXNfY29tbW9uID1cbiAgICAgICAgKGN0eDogQ3R4LnQsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi50KTogc3RhdHVzX2NvbW1vbiA9PlxuICBzd2l0Y2ggKHNlbGYsIG1vZGUpIHtcbiAgfCAoSnVzdCh0eSksIFN5bikgPT4gTm90SW5Ib2xlKFN5bih0eSkpXG4gIHwgKEp1c3QodHkpLCBTeW5GdW4pID0+XG4gICAgc3dpdGNoIChcbiAgICAgIFR5cC5qb2luX2ZpeChcbiAgICAgICAgY3R4LFxuICAgICAgICBBcnJvdyhcbiAgICAgICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgKVxuICAgICAgICB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgdHksXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBTb21lKF8pID0+IE5vdEluSG9sZShTeW4odHkpKVxuICAgIHwgTm9uZSA9PiBJbkhvbGUoSW5jb25zaXN0ZW50KFdpdGhBcnJvdyh0eSkpKVxuICAgIH1cbiAgfCAoSnVzdCh0eSksIFN5blR5cEZ1bikgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgVHlwLmpvaW5fZml4KFxuICAgICAgICBjdHgsXG4gICAgICAgIEZvcmFsbChWYXIoXCI/XCIpIHw+IFRQYXQuZnJlc2gsIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KVxuICAgICAgICB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgdHksXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBTb21lKF8pID0+IE5vdEluSG9sZShTeW4odHkpKVxuICAgIHwgTm9uZSA9PiBJbkhvbGUoSW5jb25zaXN0ZW50KFdpdGhBcnJvdyh0eSkpKVxuICAgIH1cbiAgfCAoSnVzdChzeW4pLCBBbmEoYW5hKSkgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgVHlwLmpvaW5fZml4KFxuICAgICAgICBjdHgsXG4gICAgICAgIGFuYSxcbiAgICAgICAgc3luIC8qIE5vdGU6IHRoZSBvcmRlcmluZyBvZiBhbmEsIHN5biBtYXR0ZXJzICovXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBOb25lID0+IEluSG9sZShJbmNvbnNpc3RlbnQoRXhwZWN0YXRpb24oe3N5biwgYW5hfSkpKVxuICAgIHwgU29tZShqb2luKSA9PiBOb3RJbkhvbGUoQW5hKENvbnNpc3RlbnQoe2FuYSwgc3luLCBqb2lufSkpKVxuICAgIH1cbiAgfCAoSXNDb25zdHJ1Y3Rvcih7bmFtZSwgc3luX3R5fSksIF8pID0+XG4gICAgLyogSWYgYSBjdHIgaXMgYmVpbmcgYW5hbHl6ZWQgYWdhaW5zdCAoYW4gYXJyb3cgdHlwZSByZXR1cm5pbmcpXG4gICAgICAgYSBzdW0gdHlwZSBoYXZpbmcgdGhhdCBjdHIgYXMgYSB2YXJpYW50LCBpdHMgc2VsZiB0eXBlIGlzXG4gICAgICAgY29uc2lkZXJlZCB0byBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBzdW0gdHlwZTsgb3RoZXJ3aXNlLFxuICAgICAgIGNoZWNrIHRoZSBjb250ZXh0IGZvciB0aGUgY3RyJ3MgdHlwZSAqL1xuICAgIHN3aXRjaCAoTW9kZS5jdHJfYW5hX3R5cChjdHgsIG1vZGUsIG5hbWUpLCBzeW5fdHkpIHtcbiAgICB8IChTb21lKGFuYV90eSksIF8pID0+IHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBKdXN0KGFuYV90eSkpXG4gICAgfCAoXywgU29tZShzeW5fdHkpKSA9PiBzdGF0dXNfY29tbW9uKGN0eCwgbW9kZSwgSnVzdChzeW5fdHkpKVxuICAgIHwgXyA9PiBJbkhvbGUoTm9UeXBlKEZyZWVDb25zdHJ1Y3RvcihuYW1lKSkpXG4gICAgfVxuICB8IChCYWRUb2tlbihuYW1lKSwgXykgPT4gSW5Ib2xlKE5vVHlwZShCYWRUb2tlbihuYW1lKSkpXG4gIHwgKEJhZFRyaXZBcCh0eSksIF8pID0+IEluSG9sZShOb1R5cGUoQmFkVHJpdkFwKHR5KSkpXG4gIHwgKElzTXVsdGksIF8pID0+IE5vdEluSG9sZShTeW4oVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IChOb0pvaW4od3JhcCwgdHlzKSwgQW5hKGFuYSkpID0+XG4gICAgbGV0IHN5bjogVHlwLnQgPSBTZWxmLmpvaW5fb2Yod3JhcCwgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHN3aXRjaCAoVHlwLmpvaW5fZml4KGN0eCwgYW5hLCBzeW4pKSB7XG4gICAgfCBOb25lID0+IEluSG9sZShJbmNvbnNpc3RlbnQoRXhwZWN0YXRpb24oe2FuYSwgc3lufSkpKVxuICAgIHwgU29tZShfKSA9PlxuICAgICAgTm90SW5Ib2xlKFxuICAgICAgICBBbmEoSW50ZXJuYWxseUluY29uc2lzdGVudCh7YW5hLCBub2pvaW46IFR5cC5vZl9zb3VyY2UodHlzKX0pKSxcbiAgICAgIClcbiAgICB9O1xuICB8IChOb0pvaW4oXywgdHlzKSwgU3luIHwgU3luRnVuIHwgU3luVHlwRnVuKSA9PlxuICAgIEluSG9sZShJbmNvbnNpc3RlbnQoSW50ZXJuYWwoVHlwLm9mX3NvdXJjZSh0eXMpKSkpXG4gIH07XG5cbmxldCBzdGF0dXNfcGF0ID0gKGN0eDogQ3R4LnQsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5wYXQpOiBzdGF0dXNfcGF0ID0+XG4gIHN3aXRjaCAobW9kZSwgc2VsZikge1xuICB8IChTeW4gfCBTeW5UeXBGdW4gfCBBbmEoXyksIENvbW1vbihzZWxmX3BhdCkpXG4gIHwgKFN5bkZ1biwgQ29tbW9uKElzQ29uc3RydWN0b3IoXykgYXMgc2VsZl9wYXQpKSA9PlxuICAgIC8qIExpdHRsZSBiaXQgb2YgYSBoYWNrLiBBbnl0aGluZyBvdGhlciB0aGFuIGEgYm91bmQgY3RyIHdpbGwsIGluXG4gICAgICAgZnVuY3Rpb24gcG9zaXRpb24sIGhhdmUgU3luRnVuIG1vZGUgKHNlZSBUeXAuYXBfbW9kZSkuIFNpbmNlIHdlXG4gICAgICAgYXJlIHByb2hpYml0aW5nIG5vbi1jdHJzIGluIGN0ciBhcHBsaWNhdGlvbnMgaW4gcGF0dGVybnMgZm9yIG5vdyxcbiAgICAgICB3ZSBjYXRjaCB0aGVtIGhlcmUsIGRpdmVydGluZyB0byBhbiBFeHBlY3RlZENvbnN0cnVjdG9yIGVycm9yLiBCdXQgd2VcbiAgICAgICBhdm9pZCBjYXB0dXJpbmcgdGhlIHNlY29uZCBjYXNlIGFib3ZlLCBhcyB0aGVzZSB3aWxsIHVsdGltYXRlbHlcbiAgICAgICBnZXQgYSAobW9yZSBwcmVjaXNlKSB1bmJvdW5kIGN0ciAgdmlhIHN0YXR1c19jb21tb24gKi9cbiAgICBzd2l0Y2ggKHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBzZWxmX3BhdCkpIHtcbiAgICB8IE5vdEluSG9sZShva19leHApID0+IE5vdEluSG9sZShva19leHApXG4gICAgfCBJbkhvbGUoZXJyX3BhdCkgPT4gSW5Ib2xlKENvbW1vbihlcnJfcGF0KSlcbiAgICB9XG4gIHwgKFN5bkZ1biwgXykgPT4gSW5Ib2xlKEV4cGVjdGVkQ29uc3RydWN0b3IpXG4gIH07XG5cbi8qIERldGVybWluZXMgd2hldGhlciBhbiBleHByZXNzaW9uIG9yIHBhdHRlcm4gaXMgaW4gYW4gZXJyb3IgaG9sZSxcbiAgIGRlcGVuZGluZyBvbiB0aGUgbW9kZSwgd2hpY2ggcmVwcmVzZW50cyB0aGUgZXhwZWN0YXRpb25zIG9mIHRoZVxuICAgc3Vycm91bmRpbmcgc3ludGFjdGljIGNvbnRleHQsIGFuZCB0aGUgc2VsZiB3aGljaCByZXByZXNlbnRzIHRoZVxuICAgbWFrZXVwIG9mIHRoZSBleHByZXNzaW9uIC8gcGF0dGVybiBpdHNlbGYuICovXG5sZXQgc3RhdHVzX2V4cCA9IChjdHg6IEN0eC50LCBtb2RlOiBNb2RlLnQsIHNlbGY6IFNlbGYuZXhwKTogc3RhdHVzX2V4cCA9PlxuICBzd2l0Y2ggKHNlbGYsIG1vZGUpIHtcbiAgfCAoRnJlZShuYW1lKSwgXykgPT4gSW5Ib2xlKEZyZWVWYXJpYWJsZShuYW1lKSlcbiAgfCAoSXNEZWZlcnJhbChJbkFwKSwgQW5hKGFuYSkpID0+IE5vdEluSG9sZShBbmFEZWZlcnJhbENvbnNpc3RlbnQoYW5hKSlcbiAgfCAoSXNEZWZlcnJhbChfKSwgXykgPT4gSW5Ib2xlKFVudXNlZERlZmVycmFsKVxuICB8IChJc0JhZFBhcnRpYWxBcChfIGFzIGluZm8pLCBfKSA9PiBJbkhvbGUoQmFkUGFydGlhbEFwKGluZm8pKVxuICB8IChDb21tb24oc2VsZl9wYXQpLCBfKSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX2NvbW1vbihjdHgsIG1vZGUsIHNlbGZfcGF0KSkge1xuICAgIHwgTm90SW5Ib2xlKG9rX2V4cCkgPT4gTm90SW5Ib2xlKENvbW1vbihva19leHApKVxuICAgIHwgSW5Ib2xlKGVycl9wYXQpID0+IEluSG9sZShDb21tb24oZXJyX3BhdCkpXG4gICAgfVxuICB9O1xuXG4vKiBUaGlzIGxvZ2ljIGRldGVybWluZXMgd2hldGhlciBhIHR5cGUgc2hvdWxkIGJlIHB1dFxuICAgaW4gYSBob2xlIG9yIG5vdC4gSXQncyBtb3N0bHkgc3ludGFjdGljLCBkZXRlcm1pbmluZ1xuICAgdGhlIHByb3BlciBwbGFjZW1lbnQgb2Ygc3VtIHR5cGUgdmFyaWFudHMgYW5kIGN0cnM7XG4gICB0aGlzIHNob3VsZCBiZSByZWltcGxlbWVudGVkIGluIHRoZSBmdXR1cmUgYXMgYVxuICAgc2VwYXJhdGUgc29ydC4gSXQgYWxzbyBkZXRlcm1pbmVzIHNlbWFudGljIHByb3BlcnRpZXNcbiAgIHN1Y2ggYXMgd2hldGhlciBvciBub3QgYSB0eXBlIHZhcmlhYmxlIHJlZmVyZW5jZSBpc1xuICAgZnJlZSwgYW5kIHdoZXRoZXIgYSBjdHIgbmFtZSBpcyBhIGR1cGUuICovXG5sZXQgc3RhdHVzX3R5cCA9XG4gICAgKGN0eDogQ3R4LnQsIGV4cGVjdHM6IHR5cF9leHBlY3RzLCB0ZXJtOiBUeXAudCwgdHk6IFR5cC50KTogc3RhdHVzX3R5cCA9PlxuICBzd2l0Y2ggKHRlcm0udGVybSkge1xuICB8IFVua25vd24oSG9sZShJbnZhbGlkKHRva2VuKSkpID0+IEluSG9sZShCYWRUb2tlbih0b2tlbikpXG4gIHwgVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpID0+IE5vdEluSG9sZShUeXBlKHR5KSlcbiAgfCBWYXIobmFtZSkgPT5cbiAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChVbmlxdWUsIHN1bV90eSlcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoVW5pcXVlLCBzdW1fdHkpID0+XG4gICAgICBOb3RJbkhvbGUoVmFyaWFudChuYW1lLCBzdW1fdHkpKVxuICAgIHwgVmFyaWFudEV4cGVjdGVkKER1cGxpY2F0ZSwgXylcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoRHVwbGljYXRlLCBfKSA9PlxuICAgICAgSW5Ib2xlKER1cGxpY2F0ZUNvbnN0cnVjdG9yKG5hbWUpKVxuICAgIHwgVHlwZUV4cGVjdGVkID0+XG4gICAgICBzd2l0Y2ggKEN0eC5pc19hbGlhcyhjdHgsIG5hbWUpKSB7XG4gICAgICB8IGZhbHNlID0+XG4gICAgICAgIHN3aXRjaCAoQ3R4LmlzX2Fic3RyYWN0KGN0eCwgbmFtZSkpIHtcbiAgICAgICAgfCBmYWxzZSA9PiBJbkhvbGUoRnJlZVR5cGVWYXJpYWJsZShuYW1lKSlcbiAgICAgICAgfCB0cnVlID0+IE5vdEluSG9sZShUeXBlKFZhcihuYW1lKSB8PiBUeXAubWtfZmFzdCkpXG4gICAgICAgIH1cbiAgICAgIHwgdHJ1ZSA9PiBOb3RJbkhvbGUoVHlwZUFsaWFzKG5hbWUsIFR5cC53ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIHN3aXRjaCAoZXhwZWN0cykge1xuICAgIHwgVmFyaWFudEV4cGVjdGVkKHN0YXR1c192YXJpYW50LCB0eV92YXJpYW50KSA9PlxuICAgICAgbGV0IHR5X2luID0gVVR5cC50b190eXAoY3R4LCB0Mik7XG4gICAgICBzd2l0Y2ggKHN0YXR1c192YXJpYW50LCB0MS50ZXJtKSB7XG4gICAgICB8IChVbmlxdWUsIFZhcihuYW1lKSkgPT5cbiAgICAgICAgTm90SW5Ib2xlKFZhcmlhbnQobmFtZSwgQXJyb3codHlfaW4sIHR5X3ZhcmlhbnQpIHw+IFR5cC5ta19mYXN0KSlcbiAgICAgIHwgXyA9PlxuICAgICAgICBOb3RJbkhvbGUoXG4gICAgICAgICAgVmFyaWFudEluY29tcGxldGUoQXJyb3codHlfaW4sIHR5X3ZhcmlhbnQpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXykgPT4gSW5Ib2xlKFdhbnRDb25zdHJ1Y3RvckZvdW5kQXApXG4gICAgfCBUeXBlRXhwZWN0ZWQgPT4gSW5Ib2xlKFdhbnRUeXBlRm91bmRBcClcbiAgICB9XG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoZXhwZWN0cykge1xuICAgIHwgVHlwZUV4cGVjdGVkID0+IE5vdEluSG9sZShUeXBlKHR5KSlcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXylcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChfKSA9PiBJbkhvbGUoV2FudENvbnN0cnVjdG9yRm91bmRUeXBlKHR5KSlcbiAgICB9XG4gIH07XG5cbmxldCBzdGF0dXNfdHBhdCA9IChjdHg6IEN0eC50LCB1dHBhdDogVFBhdC50KTogc3RhdHVzX3RwYXQgPT5cbiAgc3dpdGNoICh1dHBhdC50ZXJtKSB7XG4gIHwgRW1wdHlIb2xlID0+IE5vdEluSG9sZShFbXB0eSlcbiAgfCBWYXIobmFtZSkgd2hlbiBDdHguc2hhZG93c190eXAoY3R4LCBuYW1lKSA9PlxuICAgIGxldCBmID0gc3JjID0+IEluSG9sZShTaGFkb3dzVHlwZShuYW1lLCBzcmMpKTtcbiAgICBpZiAoRm9ybS5pc19iYXNlX3R5cChuYW1lKSkge1xuICAgICAgZihCYXNlVHlwKTtcbiAgICB9IGVsc2UgaWYgKEN0eC5pc19hbGlhcyhjdHgsIG5hbWUpKSB7XG4gICAgICBmKFR5QWxpYXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmKFR5VmFyKTtcbiAgICB9O1xuICB8IFZhcihuYW1lKSA9PiBOb3RJbkhvbGUoVmFyKG5hbWUpKVxuICB8IEludmFsaWQoXykgPT4gSW5Ib2xlKE5vdEFWYXIoTm90Q2FwaXRhbGl6ZWQpKVxuICB8IE11bHRpSG9sZShfKSA9PiBJbkhvbGUoTm90QVZhcihPdGhlcikpXG4gIH07XG5cbi8qIERldGVybWluZXMgd2hldGhlciBhbnkgdGVybSBpcyBpbiBhbiBlcnJvciBob2xlLiAqL1xubGV0IGlzX2Vycm9yID0gKGNpOiB0KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAoY2kpIHtcbiAgfCBJbmZvRXhwKHttb2RlLCBzZWxmLCBjdHgsIF99KSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX2V4cChjdHgsIG1vZGUsIHNlbGYpKSB7XG4gICAgfCBJbkhvbGUoXykgPT4gdHJ1ZVxuICAgIHwgTm90SW5Ib2xlKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEluZm9QYXQoe21vZGUsIHNlbGYsIGN0eCwgX30pID0+XG4gICAgc3dpdGNoIChzdGF0dXNfcGF0KGN0eCwgbW9kZSwgc2VsZikpIHtcbiAgICB8IEluSG9sZShfKSA9PiB0cnVlXG4gICAgfCBOb3RJbkhvbGUoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgSW5mb1R5cCh7ZXhwZWN0cywgY3R4LCB0ZXJtLCB0eSwgX30pID0+XG4gICAgc3dpdGNoIChzdGF0dXNfdHlwKGN0eCwgZXhwZWN0cywgdGVybSwgdHkpKSB7XG4gICAgfCBJbkhvbGUoXykgPT4gdHJ1ZVxuICAgIHwgTm90SW5Ib2xlKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEluZm9UUGF0KHt0ZXJtLCBjdHgsIF99KSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX3RwYXQoY3R4LCB0ZXJtKSkge1xuICAgIHwgSW5Ib2xlKF8pID0+IHRydWVcbiAgICB8IE5vdEluSG9sZShfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBTZWNvbmRhcnkoXykgPT4gZmFsc2VcbiAgfTtcbn07XG5cbi8qIERldGVybWluZWQgdGhlIHR5cGUgb2YgYW4gZXhwcmVzc2lvbiBvciBwYXR0ZXJuICdhZnRlciBob2xlIGZpeGluZyc7XG4gICB0aGF0IGlzLCBzb21lIGlsbC10eXBlZCB0ZXJtcyBhcmUgY29uc2lkZXJlZCB0byBiZSAnd3JhcHBlZCBpblxuICAgbm9uLWVtcHR5IGhvbGVzJywgaS5lLiBhc3NpZ25lZCBVbmtub3duIHR5cGUuICovXG5sZXQgZml4ZWRfdHlwX29rOiBva19wYXQgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBTeW4oc3luKSA9PiBzeW5cbiAgfCBBbmEoQ29uc2lzdGVudCh7am9pbiwgX30pKSA9PiBqb2luXG4gIHwgQW5hKEludGVybmFsbHlJbmNvbnNpc3RlbnQoe2FuYSwgX30pKSA9PiBhbmE7XG5cbmxldCBmaXhlZF90eXBfZXJyX2NvbW1vbjogZXJyb3JfY29tbW9uID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgTm9UeXBlKF8pID0+IFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0XG4gIHwgSW5jb25zaXN0ZW50KEV4cGVjdGF0aW9uKHthbmEsIF99KSkgPT4gYW5hXG4gIHwgSW5jb25zaXN0ZW50KEludGVybmFsKF8pKSA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCAvLyBTaG91bGQgdGhpcyBiZSBzb21lIHNvcnQgb2YgbWVldD9cbiAgfCBJbmNvbnNpc3RlbnQoV2l0aEFycm93KF8pKSA9PlxuICAgIEFycm93KFxuICAgICAgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICApXG4gICAgfD4gVHlwLm1rX2Zhc3Q7XG5cbmxldCBmaXhlZF90eXBfZXJyOiBlcnJvcl9leHAgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBGcmVlVmFyaWFibGUoXykgPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3RcbiAgfCBVbnVzZWREZWZlcnJhbCA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdFxuICB8IEJhZFBhcnRpYWxBcChfKSA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdFxuICB8IENvbW1vbihlcnIpID0+IGZpeGVkX3R5cF9lcnJfY29tbW9uKGVycik7XG5cbmxldCBmaXhlZF90eXBfZXJyX3BhdDogZXJyb3JfcGF0ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgRXhwZWN0ZWRDb25zdHJ1Y3RvciA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdFxuICB8IENvbW1vbihlcnIpID0+IGZpeGVkX3R5cF9lcnJfY29tbW9uKGVycik7XG5cbmxldCBmaXhlZF90eXBfcGF0ID0gKGN0eCwgbW9kZTogTW9kZS50LCBzZWxmOiBTZWxmLnBhdCk6IFR5cC50ID0+XG4gIHN3aXRjaCAoc3RhdHVzX3BhdChjdHgsIG1vZGUsIHNlbGYpKSB7XG4gIHwgSW5Ib2xlKGVycikgPT4gZml4ZWRfdHlwX2Vycl9wYXQoZXJyKVxuICB8IE5vdEluSG9sZShvaykgPT4gZml4ZWRfdHlwX29rKG9rKVxuICB9O1xuXG5sZXQgZml4ZWRfdHlwX2V4cCA9IChjdHgsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5leHApOiBUeXAudCA9PlxuICBzd2l0Y2ggKHN0YXR1c19leHAoY3R4LCBtb2RlLCBzZWxmKSkge1xuICB8IEluSG9sZShlcnIpID0+IGZpeGVkX3R5cF9lcnIoZXJyKVxuICB8IE5vdEluSG9sZShBbmFEZWZlcnJhbENvbnNpc3RlbnQoYW5hKSkgPT4gYW5hXG4gIHwgTm90SW5Ib2xlKENvbW1vbihvaykpID0+IGZpeGVkX3R5cF9vayhvaylcbiAgfTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciBleHByZXNzaW9uIHRlcm1zICovXG5sZXQgZGVyaXZlZF9leHAgPVxuICAgICh+dWV4cDogVUV4cC50LCB+Y3R4LCB+bW9kZSwgfmFuY2VzdG9ycywgfnNlbGYsIH5jb19jdHgpOiBleHAgPT4ge1xuICBsZXQgY2xzID0gQ2xzLkV4cChVRXhwLmNsc19vZl90ZXJtKHVleHAudGVybSkpO1xuICBsZXQgc3RhdHVzID0gc3RhdHVzX2V4cChjdHgsIG1vZGUsIHNlbGYpO1xuICBsZXQgdHkgPSBmaXhlZF90eXBfZXhwKGN0eCwgbW9kZSwgc2VsZik7XG4gIHtjbHMsIHNlbGYsIHR5LCBtb2RlLCBzdGF0dXMsIGN0eCwgY29fY3R4LCBhbmNlc3RvcnMsIHRlcm06IHVleHB9O1xufTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciBwYXR0ZXJuIHRlcm1zICovXG5sZXQgZGVyaXZlZF9wYXQgPVxuICAgICh+dXBhdDogVVBhdC50LCB+Y3R4LCB+Y29fY3R4LCB+cHJldl9zeW5zd2l0Y2gsIH5tb2RlLCB+YW5jZXN0b3JzLCB+c2VsZilcbiAgICA6IHBhdCA9PiB7XG4gIGxldCBjbHMgPSBDbHMuUGF0KFVQYXQuY2xzX29mX3Rlcm0odXBhdC50ZXJtKSk7XG4gIGxldCBzdGF0dXMgPSBzdGF0dXNfcGF0KGN0eCwgbW9kZSwgc2VsZik7XG4gIGxldCB0eSA9IGZpeGVkX3R5cF9wYXQoY3R4LCBtb2RlLCBzZWxmKTtcbiAge1xuICAgIGNscyxcbiAgICBzZWxmLFxuICAgIHByZXZfc3luc3dpdGNoLFxuICAgIG1vZGUsXG4gICAgdHksXG4gICAgc3RhdHVzLFxuICAgIGN0eCxcbiAgICBjb19jdHgsXG4gICAgYW5jZXN0b3JzLFxuICAgIHRlcm06IHVwYXQsXG4gIH07XG59O1xuXG4vKiBBZGQgZGVyaXZhYmxlIGF0dHJpYnV0ZXMgZm9yIHR5cGVzICovXG5sZXQgZGVyaXZlZF90eXAgPSAofnV0eXA6IFVUeXAudCwgfmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHMpOiB0eXAgPT4ge1xuICBsZXQgY2xzOiBDbHMudCA9XG4gICAgLyogSGFjayB0byBpbXByb3ZlIENJIGRpc3BsYXkgKi9cbiAgICBzd2l0Y2ggKGV4cGVjdHMsIFVUeXAuY2xzX29mX3Rlcm0odXR5cC50ZXJtKSkge1xuICAgIHwgKFZhcmlhbnRFeHBlY3RlZChfKSB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXyksIFZhcikgPT5cbiAgICAgIENscy5UeXAoQ29uc3RydWN0b3IpXG4gICAgfCAoXywgY2xzKSA9PiBDbHMuVHlwKGNscylcbiAgICB9O1xuICBsZXQgdHkgPSBVVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICBsZXQgc3RhdHVzID0gc3RhdHVzX3R5cChjdHgsIGV4cGVjdHMsIHV0eXAsIHR5KTtcbiAge2NscywgY3R4LCBhbmNlc3RvcnMsIHN0YXR1cywgZXhwZWN0cywgdHksIHRlcm06IHV0eXB9O1xufTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciB0eXBlIHBhdHRlcm5zICovXG5sZXQgZGVyaXZlZF90cGF0ID0gKH51dHBhdDogVFBhdC50LCB+Y3R4LCB+YW5jZXN0b3JzKTogdHBhdCA9PiB7XG4gIGxldCBjbHMgPSBDbHMuVFBhdChUUGF0LmNsc19vZl90ZXJtKHV0cGF0LnRlcm0pKTtcbiAgbGV0IHN0YXR1cyA9IHN0YXR1c190cGF0KGN0eCwgdXRwYXQpO1xuICB7Y2xzLCBhbmNlc3RvcnMsIHN0YXR1cywgY3R4LCB0ZXJtOiB1dHBhdH07XG59O1xuXG4vKiBJZiB0aGUgaW5mbyByZXByZXNlbnRzIHNvbWUga2luZCBvZiBuYW1lIGJpbmRpbmcgd2hpY2hcbiAgIGV4aXN0cyBpbiB0aGUgY29udGV4dCwgcmV0dXJuIHRoZSBpZCB3aGVyZSB0aGUgYmluZGluZyBvY2N1cnMgKi9cbmxldCBnZXRfYmluZGluZ19zaXRlID0gKGluZm86IHQpOiBvcHRpb24oSWQudCkgPT4ge1xuICBzd2l0Y2ggKGluZm8pIHtcbiAgfCBJbmZvRXhwKHt0ZXJtOiB7dGVybTogVmFyKG5hbWUpLCBffSwgY3R4LCBffSkgPT5cbiAgICBsZXQrIGVudHJ5ID0gQ3R4Lmxvb2t1cF92YXIoY3R4LCBuYW1lKTtcbiAgICBlbnRyeS5pZDtcbiAgfCBJbmZvRXhwKHt0ZXJtOiB7dGVybTogQ29uc3RydWN0b3IobmFtZSksIF99LCBjdHgsIF99KVxuICB8IEluZm9QYXQoe3Rlcm06IHt0ZXJtOiBDb25zdHJ1Y3RvcihuYW1lKSwgX30sIGN0eCwgX30pID0+XG4gICAgbGV0KyBlbnRyeSA9IEN0eC5sb29rdXBfY3RyKGN0eCwgbmFtZSk7XG4gICAgZW50cnkuaWQ7XG4gIHwgSW5mb1R5cCh7dGVybToge3Rlcm06IFZhcihuYW1lKSwgX30sIGN0eCwgX30pID0+XG4gICAgbGV0KyBlbnRyeSA9IEN0eC5sb29rdXBfdHZhcihjdHgsIG5hbWUpO1xuICAgIGVudHJ5LmlkO1xuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IHR5cF9pc19jb25zdHJ1Y3Rvcl9leHBlY3RlZCA9IHQgPT5cbiAgc3dpdGNoICh0KSB7XG4gIHwge2V4cGVjdHM6IENvbnN0cnVjdG9yRXhwZWN0ZWQoXykgfCBWYXJpYW50RXhwZWN0ZWQoXyksIF99ID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG4iLCJvcGVuIFV0aWw7XG5cbmluY2x1ZGUgSWQuTWFwO1xudHlwZSByYW5nZSA9IChQaWVjZS50LCBQaWVjZS50KTtcbnR5cGUgbm9ucmVjIHQgPSB0KHJhbmdlKTtcblxubGV0IHVuaW9uID0gdW5pb24oKF8sIHJhbmdlLCBfKSA9PiBTb21lKHJhbmdlKSk7XG5cbi8qIFBFUkY6IFVwIHRvIDUwJSByZWR1Y3Rpb24gaW4gc29tZSBjYXNlcyBieSBtZW1vaXppbmdcbiAqIHRoaXMgZnVuY3Rpb24uIE1pZ2h0IGJlIGJldHRlciB0aG91Z2ggdG8ganVzdCBkbyBhblxuICogdW5tZW1vaXplZCB0cmF2ZXJzYWwgYnVpbGRpbmcgYSBoYXNodGJsIGF2b2lkaW5nIHVuaW9uaW5nLlxuXG4gICBUT0RPKGFuZHJldyk6IENvbnNpZGVyIHNldHRpbmcgYSBsaW1pdCBmb3IgdGhlIGhhc2h0Ymwgc2l6ZSAqL1xubGV0IHJhbmdlX2hhc2g6IEhhc2h0YmwudChUaWxlLnNlZ21lbnQsIElkLk1hcC50KHJhbmdlKSkgPVxuICBIYXNodGJsLmNyZWF0ZSgxMDAwKTtcblxuLy8gTk9URTogdGhpcyBjYWxjdWxhdGlvbiBpcyBvdXQgb2Ygc3luYyB3aXRoXG4vLyBNYWtlVGVybSwgd2hpY2ggbWF0Y2hlcyB0aGluZ3MgbGlrZSBsaXN0IGJyYWNrZXRzXG4vLyBhbmQgY2FzZS4uLmVuZCB0byBzZXBhcmF0b3JzIGluc2lkZSBlZyBsaXN0IGNvbW1hc1xuLy8gYW5kIHJ1bGVzIGB8IHAgPT5gLiB0aGlzIGNhbGN1bGF0aW9uIGRvZXMgbm90XG4vLyBpbmNsdWRlIHRoZSBjb250YWluZXIgaW4gdGhlIHJhbmdlcyBmb3IgdGhvc2UgaW5uZXJcbi8vIHNlcGFyYXRvcnMuXG4vLyBUT0RPKGQpIGZpeCBvciBkZXJpdmUgZnJvbSBvdGhlciBpbmZvXG4vL1xuLy8gdGFpbC1yZWN1cnNpdmUgaW4gb3V0ZXIgcmVjdXJzaW9uXG5sZXQgcmVjIG1rJyA9IChzZWc6IFNlZ21lbnQudCkgPT4ge1xuICBsZXQgcmVjIGdvID0gKHNrZWw6IFNrZWwudCk6IChyYW5nZSwgdCkgPT4ge1xuICAgIGxldCByb290ID0gU2tlbC5yb290KHNrZWwpIHw+IEFiYS5tYXBfYShMaXN0Lm50aChzZWcpKTtcbiAgICBsZXQgcm9vdF9sID0gQWJhLmZpcnN0X2Eocm9vdCk7XG4gICAgbGV0IHJvb3RfciA9IEFiYS5sYXN0X2Eocm9vdCk7XG4gICAgbGV0IChyYW5nZSwgdW5pY2hpbGRfbWFwKSA9XG4gICAgICBzd2l0Y2ggKHNrZWwpIHtcbiAgICAgIHwgT3AoXykgPT4gKChyb290X2wsIHJvb3RfciksIGVtcHR5KVxuICAgICAgfCBQcmUoXywgcikgPT5cbiAgICAgICAgbGV0ICgoXywgciksIG1hcCkgPSBnbyhyKTtcbiAgICAgICAgKChyb290X2wsIHIpLCBtYXApO1xuICAgICAgfCBQb3N0KGwsIF8pID0+XG4gICAgICAgIGxldCAoKGwsIF8pLCBtYXApID0gZ28obCk7XG4gICAgICAgICgobCwgcm9vdF9yKSwgbWFwKTtcbiAgICAgIHwgQmluKGwsIF8sIHIpID0+XG4gICAgICAgIGxldCAoKGwsIF8pLCBtYXBfbCkgPSBnbyhsKTtcbiAgICAgICAgbGV0ICgoXywgciksIG1hcF9yKSA9IGdvKHIpO1xuICAgICAgICAoKGwsIHIpLCB1bmlvbihtYXBfbCwgbWFwX3IpKTtcbiAgICAgIH07XG4gICAgbGV0IGJldHdlZW5fY2hpbGRfbWFwID1cbiAgICAgIEFiYS5nZXRfYnMocm9vdClcbiAgICAgIHw+IExpc3QubWFwKGdvKVxuICAgICAgfD4gTGlzdC5tYXAoc25kKVxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQodW5pb24sIGVtcHR5KTtcbiAgICBsZXQgbWFwID1cbiAgICAgIEFiYS5nZXRfYXMocm9vdClcbiAgICAgIHw+IExpc3QubWFwKFBpZWNlLmlkKVxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgIChtYXAsIGlkKSA9PiBJZC5NYXAuYWRkKGlkLCByYW5nZSwgbWFwKSxcbiAgICAgICAgICAgdW5pb24oYmV0d2Vlbl9jaGlsZF9tYXAsIHVuaWNoaWxkX21hcCksXG4gICAgICAgICApO1xuICAgIChyYW5nZSwgbWFwKTtcbiAgfTtcbiAgU2VnbWVudC5jaGlsZHJlbihzZWcpXG4gIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgIChtYXAsIGtpZCkgPT4gdW5pb24obWFwLCBtayhraWQpKSxcbiAgICAgICB1bmlvbihlbXB0eSwgc25kKGdvKFNlZ21lbnQuc2tlbChzZWcpKSkpLFxuICAgICApO1xufVxuYW5kIG1rID0gc2VnID0+XG4gIHRyeShIYXNodGJsLmZpbmQocmFuZ2VfaGFzaCwgc2VnKSkge1xuICB8IF8gPT5cbiAgICBsZXQgcmVzID0gbWsnKHNlZyk7XG4gICAgSGFzaHRibC5hZGQocmFuZ2VfaGFzaCwgc2VnLCByZXMpO1xuICAgIHJlcztcbiAgfTtcbiIsIi8qIFNUQVRJQ1MucmVcblxuICAgVGhpcyBtb2R1bGUgZGV0ZXJtaW5lcyB0aGUgc3RhdGljcyBzZW1hbnRpY3Mgb2YgYSBwcm9ncmFtLlxuICAgSXQgbWFrZXMgdXNlIG9mIHRoZSBmb2xsb3dpbmcgbW9kdWxlczpcblxuICAgSU5GTy5yZTogRGVmaW5lcyB0aGUgSW5mby50IHR5cGUgd2hpY2ggaXMgdXNlZCB0byByZXByZXNlbnQgdGhlXG4gICBzdGF0aWMgU1RBVFVTIG9mIGEgdGVybS4gVGhpcyBTVEFUVVMgY2FuIGJlIGVpdGhlciBPSyBvciBFUlJPUixcbiAgIGFuZCBpcyBkZXRlcm1pbmVkIGJ5IHJlY29uY2lsbGluZyB0d28gc291cmNlcyBvZiB0eXBpbmcgaW5mb3JtYXRpb24sXG4gICB0aGUgTU9ERSBhbmQgdGhlIFNFTEYuXG5cbiAgIE1PREUucmU6IERlZmluZXMgdGhlIE1vZGUudCB0eXBlIHdoaWNoIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZVxuICAgdHlwaW5nIGV4cGVjdGF0aW9ucyBpbXBvc2VkIGJ5IGEgdGVybSdzIGFuY2VzdG9ycy5cblxuICAgU0VMRi5yZTogRGVmaW5lIHRoZSBTZWxmLnQgdHlwZSB3aGljaCBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGVcbiAgIHR5cGUgaW5mb3JtYXRpb24gZGVyaXZhYmxlIGZyb20gdGhlIHRlcm0gaXRzZWxmLlxuXG4gICBUaGUgcG9pbnQgb2YgU1RBVElDUy5yZSBpdHNlbGYgaXMgdG8gZGVyaXZlIGEgbWFwIGJldHdlZW4gZWFjaFxuICAgdGVybSdzIHVuaXF1ZSBpZCBhbmQgdGhhdCB0ZXJtJ3Mgc3RhdGljIElORk8uIFRoZSBiZWxvdyBmdW5jdGlvbnNcbiAgIGFyZSBpbnRlbmRlZCBtb3N0bHkgYXMgaW5mcmFzdHJ1Y3R1cmU6IFRoZSBwb2ludCBpcyB0byBkZWZpbmUgYVxuICAgdHJhdmVyc2FsIHRocm91Z2ggdGhlIHN5bnRheCB0cmVlIHdoaWNoLCBmb3IgZWFjaCB0ZXJtLCBwYXNzZXNcbiAgIGRvd24gdGhlIE1PREUsIHBhc3NlcyB1cCB0aGUgU0VMRiwgY2FsY3VsYXRlcyB0aGUgSU5GTywgYW5kIGFkZHNcbiAgIGl0IHRvIHRoZSBtYXAuXG5cbiAgIFRoZSBhcmNoaXRlY3R1cmFsIGludGVudGlvbiBoZXJlIGlzIHRoYXQgbW9zdCB0eXBlLW1hbmlwdWxhdGlvblxuICAgbG9naWMgaXMgZGVmaW5lZCBpbiBJTkZPLCBNT0RFLCBhbmQgU0VMRiwgYW5kIHRoZSBTVEFUSUNTIG1vZHVsZVxuICAgaXRzZWxmIGlzIGRlZGljYXRlZCB0byB0aGUgcGlwaW5nIG5lY2Vzc2FyeSB0byAoQSkgaW50cm9kdWNlIGFuZFxuICAgKEIpIHByb3BhZ2F0ZSB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRocm91Z2ggdGhlIHN5bnRheCB0cmVlLlxuXG4gICAgKi9cblxubW9kdWxlIEluZm8gPSBJbmZvO1xuXG5tb2R1bGUgTWFwID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IElkLk1hcC50KEluZm8udCk7XG5cbiAgLy8gbGV0IChzZXhwX29mX3QsIHRfb2Zfc2V4cCkgPVxuICAvLyAgIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaW4oc2V4cF9vZl90LCB0X29mX3NleHApO1xuXG4gIGxldCBlcnJvcl9pZHMgPSAodGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudCwgaW5mb19tYXA6IHQpOiBsaXN0KElkLnQpID0+XG4gICAgSWQuTWFwLmZvbGQoXG4gICAgICAoaWQsIGluZm8sIGFjYykgPT5cbiAgICAgICAgLyogQmVjYXVzZSBvZiBhcnRlZmFjdHMgaW4gTWFrZXRlcm0gSUQgaGFuZGxpbmcsXG4gICAgICAgICAqIHRoZXJlIGFyZSBiZSBzaXR1YXRpb25zIHdoZXJlIGlkcyBhcHBlYXIgaW4gdGhlXG4gICAgICAgICAqIGluZm9fbWFwIHdoaWNoIGRvIG5vdCBvY2N1ciBpbiB0ZXJtX3Jhbmdlcy4gVGhlc2VcbiAgICAgICAgICogaWRzIHNob3VsZCBiZSBwdXJlbHkgZHVwbGljYXRpdmUsIHNvIHNraXBwaW5nIHRoZW1cbiAgICAgICAgICogd2hlbiBpdGVyYXRpbmcgb3ZlciB0aGUgaW5mb19tYXAgc2hvdWxkIGhhdmUgbm9cbiAgICAgICAgICogZWZmZWN0LCBiZXlvbmQgc3VwcmVzc2luZyB0aGUgcmVzdWx0aW5nIE5vdF9mb3VuZCBleHMgKi9cbiAgICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIHRlcm1fcmFuZ2VzKSkge1xuICAgICAgICB8IFNvbWUoXykgd2hlbiBJbmZvLmlzX2Vycm9yKGluZm8pID0+IFtpZCwgLi4uYWNjXVxuICAgICAgICB8IF8gPT4gYWNjXG4gICAgICAgIH0sXG4gICAgICBpbmZvX21hcCxcbiAgICAgIFtdLFxuICAgICk7XG59O1xuXG5sZXQgbWFwX20gPSAoZiwgeHMsIG06IE1hcC50KSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoKHhzLCBtKSwgeCkgPT4gZih4LCBtKSB8PiAoKCh4LCBtKSkgPT4gKHhzIEAgW3hdLCBtKSksXG4gICAgKFtdLCBtKSxcbiAgICB4cyxcbiAgKTtcblxubGV0IGFkZF9pbmZvID0gKGlkczogbGlzdChJZC50KSwgaW5mbzogSW5mby50LCBtOiBNYXAudCk6IE1hcC50ID0+XG4gIGlkcyB8PiBMaXN0LmZvbGRfbGVmdCgobSwgaWQpID0+IElkLk1hcC5hZGQoaWQsIGluZm8sIG0pLCBtKTtcblxubGV0IHJlYyBpc19hcnJvd19saWtlID0gKHQ6IFR5cC50KSA9PiB7XG4gIHN3aXRjaCAodCB8PiBUeXAudGVybV9vZikge1xuICB8IFVua25vd24oXykgPT4gdHJ1ZVxuICB8IEFycm93KF8pID0+IHRydWVcbiAgfCBGb3JhbGwoXywgdCkgPT4gaXNfYXJyb3dfbGlrZSh0KVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCBpc19yZWN1cnNpdmUgPSAoY3R4LCBwLCBkZWYsIHN5bjogVHlwLnQpID0+IHtcbiAgc3dpdGNoIChQYXQuZ2V0X251bV9vZl92YXJzKHApLCBFeHAuZ2V0X251bV9vZl9mdW5jdGlvbnMoZGVmKSkge1xuICB8IChTb21lKG51bV92YXJzKSwgU29tZShudW1fZm5zKSlcbiAgICAgIHdoZW4gbnVtX3ZhcnMgIT0gMCAmJiBudW1fdmFycyA9PSBudW1fZm5zID0+XG4gICAgbGV0IG5vcm0gPSBUeXAubm9ybWFsaXplKGN0eCwgc3luKTtcbiAgICBzd2l0Y2ggKG5vcm0gfD4gVHlwLnRlcm1fb2YpIHtcbiAgICB8IFByb2Qoc3lucykgd2hlbiBMaXN0Lmxlbmd0aChzeW5zKSA9PSBudW1fdmFycyA9PlxuICAgICAgc3lucyB8PiBMaXN0LmZvcl9hbGwoaXNfYXJyb3dfbGlrZSlcbiAgICB8IF8gd2hlbiBpc19hcnJvd19saWtlKG5vcm0pID0+IG51bV92YXJzID09IDFcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCB0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQ6IE9wZXJhdG9ycy5vcF9iaW5faW50ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpIGFzIF9vcCA9PiBJbnQgfD4gVHlwLm1rX2Zhc3RcbiAgfCAoXG4gICAgICBMZXNzVGhhbiB8IEdyZWF0ZXJUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW5PckVxdWFsIHwgRXF1YWxzIHxcbiAgICAgIE5vdEVxdWFsc1xuICAgICkgYXMgX29wID0+XG4gICAgQm9vbCB8PiBUeXAubWtfZmFzdDtcblxubGV0IHR5cF9leHBfYmlub3BfYmluX2Zsb2F0OiBPcGVyYXRvcnMub3BfYmluX2Zsb2F0ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpIGFzIF9vcCA9PiBGbG9hdCB8PiBUeXAubWtfZmFzdFxuICB8IChcbiAgICAgIExlc3NUaGFuIHwgR3JlYXRlclRoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbk9yRXF1YWwgfCBFcXVhbHMgfFxuICAgICAgTm90RXF1YWxzXG4gICAgKSBhcyBfb3AgPT5cbiAgICBCb29sIHw+IFR5cC5ta19mYXN0O1xuXG5sZXQgdHlwX2V4cF9iaW5vcF9iaW5fc3RyaW5nOiBPcGVyYXRvcnMub3BfYmluX3N0cmluZyA9PiBUeXAudCA9XG4gIGZ1blxuICB8IENvbmNhdCA9PiBTdHJpbmcgfD4gVHlwLm1rX2Zhc3RcbiAgfCBFcXVhbHMgPT4gQm9vbCB8PiBUeXAubWtfZmFzdDtcblxubGV0IHR5cF9leHBfYmlub3A6IE9wZXJhdG9ycy5vcF9iaW4gPT4gKFR5cC50LCBUeXAudCwgVHlwLnQpID1cbiAgZnVuXG4gIHwgQm9vbChBbmQgfCBPcikgPT4gKFxuICAgICAgQm9vbCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIEJvb2wgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBCb29sIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgfCBJbnQob3ApID0+IChcbiAgICAgIEludCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIEludCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIHR5cF9leHBfYmlub3BfYmluX2ludChvcCksXG4gICAgKVxuICB8IEZsb2F0KG9wKSA9PiAoXG4gICAgICBGbG9hdCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIEZsb2F0IHw+IFR5cC5ta19mYXN0LFxuICAgICAgdHlwX2V4cF9iaW5vcF9iaW5fZmxvYXQob3ApLFxuICAgIClcbiAgfCBTdHJpbmcob3ApID0+IChcbiAgICAgIFN0cmluZyB8PiBUeXAubWtfZmFzdCxcbiAgICAgIFN0cmluZyB8PiBUeXAubWtfZmFzdCxcbiAgICAgIHR5cF9leHBfYmlub3BfYmluX3N0cmluZyhvcCksXG4gICAgKTtcblxubGV0IHR5cF9leHBfdW5vcDogT3BlcmF0b3JzLm9wX3VuID0+IChUeXAudCwgVHlwLnQpID1cbiAgZnVuXG4gIHwgTWV0YShVbnF1b3RlKSA9PiAoXG4gICAgICBWYXIoXCIkTWV0YVwiKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgfCBCb29sKE5vdCkgPT4gKEJvb2wgfD4gVHlwLm1rX2Zhc3QsIEJvb2wgfD4gVHlwLm1rX2Zhc3QpXG4gIHwgSW50KE1pbnVzKSA9PiAoSW50IHw+IFR5cC5ta19mYXN0LCBJbnQgfD4gVHlwLm1rX2Zhc3QpO1xuXG5sZXQgcmVjIGFueV90b19pbmZvX21hcCA9XG4gICAgICAgICh+Y3R4OiBDdHgudCwgfmFuY2VzdG9ycywgYW55OiBBbnkudCwgbTogTWFwLnQpOiAoQ29DdHgudCwgTWFwLnQpID0+XG4gIHN3aXRjaCAoYW55KSB7XG4gIHwgRXhwKGUpID0+XG4gICAgbGV0ICh7Y29fY3R4LCBffTogSW5mby5leHAsIG0pID1cbiAgICAgIHVleHBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgZSwgbSk7XG4gICAgKGNvX2N0eCwgbSk7XG4gIHwgUGF0KHApID0+XG4gICAgbGV0IG0gPVxuICAgICAgdXBhdF90b19pbmZvX21hcChcbiAgICAgICAgfmlzX3N5bnN3aXRjaD1mYWxzZSxcbiAgICAgICAgfmNvX2N0eD1Db0N0eC5lbXB0eSxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfmN0eCxcbiAgICAgICAgcCxcbiAgICAgICAgbSxcbiAgICAgIClcbiAgICAgIHw+IHNuZDtcbiAgICAoQ29DdHguZW1wdHksIG0pO1xuICB8IFRQYXQodHApID0+IChcbiAgICAgIENvQ3R4LmVtcHR5LFxuICAgICAgdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdHAsIG0pIHw+IHNuZCxcbiAgICApXG4gIHwgVHlwKHR5KSA9PiAoXG4gICAgICBDb0N0eC5lbXB0eSxcbiAgICAgIHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdHksIG0pIHw+IHNuZCxcbiAgICApXG4gIHwgUnVsKF8pXG4gIHwgTnVsICgpXG4gIHwgQW55ICgpID0+IChDb0N0eC5lbXB0eSwgbSlcbiAgfVxuYW5kIG11bHRpID0gKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcykgPT5cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKChjb19jdHhzLCBtKSwgYW55KSA9PiB7XG4gICAgICBsZXQgKGNvX2N0eCwgbSkgPSBhbnlfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgYW55LCBtKTtcbiAgICAgIChjb19jdHhzIEAgW2NvX2N0eF0sIG0pO1xuICAgIH0sXG4gICAgKFtdLCBtKSxcbiAgICB0bXMsXG4gIClcbmFuZCB1ZXhwX3RvX2luZm9fbWFwID1cbiAgICAoXG4gICAgICB+Y3R4OiBDdHgudCxcbiAgICAgIH5tb2RlPU1vZGUuU3luLFxuICAgICAgfmlzX2luX2ZpbHRlcj1mYWxzZSxcbiAgICAgIH5hbmNlc3RvcnMsXG4gICAgICB7aWRzLCBjb3BpZWQ6IF8sIHRlcm19IGFzIHVleHA6IFVFeHAudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLmV4cCwgTWFwLnQpID0+IHtcbiAgLyogTWF5YmUgc3dpdGNoIG1vZGUgdG8gc3luICovXG4gIGxldCBtb2RlID1cbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICB8IEFuYSh7dGVybTogVW5rbm93bihTeW5Td2l0Y2gpLCBffSkgPT4gTW9kZS5TeW5cbiAgICB8IF8gPT4gbW9kZVxuICAgIH07XG4gIGxldCBhZGQnID0gKH5zZWxmLCB+Y29fY3R4LCBtKSA9PiB7XG4gICAgbGV0IGluZm8gPVxuICAgICAgSW5mby5kZXJpdmVkX2V4cCh+dWV4cCwgfmN0eCwgfm1vZGUsIH5hbmNlc3RvcnMsIH5zZWxmLCB+Y29fY3R4KTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvRXhwKGluZm8pLCBtKSk7XG4gIH07XG4gIGxldCBhZGQgPSAofnNlbGYsIH5jb19jdHgsIG0pID0+IGFkZCcofnNlbGY9Q29tbW9uKHNlbGYpLCB+Y29fY3R4LCBtKTtcbiAgbGV0IGFuY2VzdG9ycyA9IFtVRXhwLnJlcF9pZCh1ZXhwKV0gQCBhbmNlc3RvcnM7XG4gIGxldCB1ZXhwX3RvX2luZm9fbWFwID1cbiAgICAgIChcbiAgICAgICAgfmN0eCxcbiAgICAgICAgfm1vZGU9TW9kZS5TeW4sXG4gICAgICAgIH5pc19pbl9maWx0ZXI9aXNfaW5fZmlsdGVyLFxuICAgICAgICB+YW5jZXN0b3JzPWFuY2VzdG9ycyxcbiAgICAgICAgdWV4cDogVUV4cC50LFxuICAgICAgICBtOiBNYXAudCxcbiAgICAgICkgPT4ge1xuICAgIHVleHBfdG9faW5mb19tYXAofmN0eCwgfm1vZGUsIH5pc19pbl9maWx0ZXIsIH5hbmNlc3RvcnMsIHVleHAsIG0pO1xuICB9O1xuICBsZXQgZ28nID0gdWV4cF90b19pbmZvX21hcCh+YW5jZXN0b3JzKTtcbiAgbGV0IGdvID0gZ28nKH5jdHgpO1xuICBsZXQgbWFwX21fZ28gPSBtID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKChlcywgbSksIG1vZGUsIGUpID0+XG4gICAgICAgIGdvKH5tb2RlLCBlLCBtKSB8PiAoKChlLCBtKSkgPT4gKGVzIEAgW2VdLCBtKSksXG4gICAgICAoW10sIG0pLFxuICAgICk7XG4gIGxldCBnb19wYXQgPSB1cGF0X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMpO1xuICBsZXQgYXRvbWljID0gc2VsZiA9PiBhZGQofnNlbGYsIH5jb19jdHg9Q29DdHguZW1wdHksIG0pO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBDbG9zdXJlKF8sIGUpID0+XG4gICAgLy8gVE9ETzogaW1wbGVtZW50IGNsb3N1cmUgdHlwZSBjaGVja2luZyBwcm9wZXJseSAtIHNlZSBob3cgZHluYW1pYyB0eXBlIGFzc2lnbm1lbnQgZG9lcyBpdFxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZSwgZSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoZS50eSksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IE11bHRpSG9sZSh0bXMpID0+XG4gICAgbGV0IChjb19jdHhzLCBtKSA9IG11bHRpKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcyk7XG4gICAgYWRkKH5zZWxmPUlzTXVsdGksIH5jb19jdHg9Q29DdHgudW5pb24oY29fY3R4cyksIG0pO1xuICB8IENhc3QoZSwgdDEsIHQyKVxuICB8IEZhaWxlZENhc3QoZSwgdDEsIHQyKSA9PlxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZT1BbmEodDEpLCBlLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdCh0MiksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IEludmFsaWQodG9rZW4pID0+IGF0b21pYyhCYWRUb2tlbih0b2tlbikpXG4gIHwgRW1wdHlIb2xlID0+IGF0b21pYyhKdXN0KFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBEZWZlcnJhbChwb3NpdGlvbikgPT5cbiAgICBhZGQnKH5zZWxmPUlzRGVmZXJyYWwocG9zaXRpb24pLCB+Y29fY3R4PUNvQ3R4LmVtcHR5LCBtKVxuICB8IEJvb2woXykgPT4gYXRvbWljKEp1c3QoQm9vbCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgSW50KF8pID0+IGF0b21pYyhKdXN0KEludCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgRmxvYXQoXykgPT4gYXRvbWljKEp1c3QoRmxvYXQgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IFN0cmluZyhfKSA9PiBhdG9taWMoSnVzdChTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IExpc3RMaXQoZXMpID0+XG4gICAgbGV0IGlkcyA9IExpc3QubWFwKFVFeHAucmVwX2lkLCBlcyk7XG4gICAgbGV0IG1vZGVzID0gTW9kZS5vZl9saXN0X2xpdChjdHgsIExpc3QubGVuZ3RoKGVzKSwgbW9kZSk7XG4gICAgbGV0IChlcywgbSkgPSBtYXBfbV9nbyhtLCBtb2RlcywgZXMpO1xuICAgIGxldCB0eXMgPSBMaXN0Lm1hcChJbmZvLmV4cF90eSwgZXMpO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVxuICAgICAgICBTZWxmLmxpc3RsaXQofmVtcHR5PVVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCBjdHgsIHR5cywgaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBlcykpLFxuICAgICAgbSxcbiAgICApO1xuICB8IENvbnMoaGQsIHRsKSA9PlxuICAgIGxldCAoaGQsIG0pID0gZ28ofm1vZGU9TW9kZS5vZl9jb25zX2hkKGN0eCwgbW9kZSksIGhkLCBtKTtcbiAgICBsZXQgKHRsLCBtKSA9IGdvKH5tb2RlPU1vZGUub2ZfY29uc190bChjdHgsIG1vZGUsIGhkLnR5KSwgdGwsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QoTGlzdChoZC50eSkgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihbaGQuY29fY3R4LCB0bC5jb19jdHhdKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICBsZXQgbW9kZSA9IE1vZGUub2ZfbGlzdF9jb25jYXQoY3R4LCBtb2RlKTtcbiAgICBsZXQgaWRzID0gTGlzdC5tYXAoVUV4cC5yZXBfaWQsIFtlMSwgZTJdKTtcbiAgICBsZXQgKGUxLCBtKSA9IGdvKH5tb2RlLCBlMSwgbSk7XG4gICAgbGV0IChlMiwgbSkgPSBnbyh+bW9kZSwgZTIsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubGlzdF9jb25jYXQoY3R4LCBbZTEudHksIGUyLnR5XSwgaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2UxLmNvX2N0eCwgZTIuY29fY3R4XSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgVmFyKG5hbWUpID0+XG4gICAgYWRkJyhcbiAgICAgIH5zZWxmPVNlbGYub2ZfZXhwX3ZhcihjdHgsIG5hbWUpLFxuICAgICAgfmNvX2N0eD1Db0N0eC5zaW5nbGV0b24obmFtZSwgVUV4cC5yZXBfaWQodWV4cCksIE1vZGUudHlfb2YobW9kZSkpLFxuICAgICAgbSxcbiAgICApXG4gIHwgRHluYW1pY0Vycm9ySG9sZShlLCBfKVxuICB8IFBhcmVucyhlKSA9PlxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZSwgZSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoZS50eSksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgZSkgd2hlbiBpc19pbl9maWx0ZXIgPT5cbiAgICBsZXQgZTogVUV4cC50ID0ge1xuICAgICAgaWRzOiBlLmlkcyxcbiAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgICAgICB8IFZhcihcImVcIikgPT4gVUV4cC5Db25zdHJ1Y3RvcihcIiRlXCIpXG4gICAgICAgIHwgVmFyKFwidlwiKSA9PiBVRXhwLkNvbnN0cnVjdG9yKFwiJHZcIilcbiAgICAgICAgfCBfID0+IGUudGVybVxuICAgICAgICB9LFxuICAgIH07XG4gICAgbGV0IHR5X2luID0gVHlwLlZhcihcIiRNZXRhXCIpIHw+IFR5cC5ta19mYXN0O1xuICAgIGxldCB0eV9vdXQgPSBUeXAuVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgbGV0IChlLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IFVuT3Aob3AsIGUpID0+XG4gICAgbGV0ICh0eV9pbiwgdHlfb3V0KSA9IHR5cF9leHBfdW5vcChvcCk7XG4gICAgbGV0IChlLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IEJpbk9wKG9wLCBlMSwgZTIpID0+XG4gICAgbGV0ICh0eTEsIHR5MiwgdHlfb3V0KSA9IHR5cF9leHBfYmlub3Aob3ApO1xuICAgIGxldCAoZTEsIG0pID0gZ28ofm1vZGU9QW5hKHR5MSksIGUxLCBtKTtcbiAgICBsZXQgKGUyLCBtKSA9IGdvKH5tb2RlPUFuYSh0eTIpLCBlMiwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QodHlfb3V0KSwgfmNvX2N0eD1Db0N0eC51bmlvbihbZTEuY29fY3R4LCBlMi5jb19jdHhdKSwgbSk7XG4gIHwgQnVpbHRpbkZ1bihzdHJpbmcpID0+XG4gICAgYWRkJyhcbiAgICAgIH5zZWxmPVNlbGYub2ZfZXhwX3ZhcihCdWlsdGlucy5jdHhfaW5pdCwgc3RyaW5nKSxcbiAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICBtLFxuICAgIClcbiAgfCBUdXBsZShlcykgPT5cbiAgICBsZXQgbW9kZXMgPSBNb2RlLm9mX3Byb2QoY3R4LCBtb2RlLCBMaXN0Lmxlbmd0aChlcykpO1xuICAgIGxldCAoZXMsIG0pID0gbWFwX21fZ28obSwgbW9kZXMsIGVzKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KFByb2QoTGlzdC5tYXAoSW5mby5leHBfdHksIGVzKSkgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihMaXN0Lm1hcChJbmZvLmV4cF9jb19jdHgsIGVzKSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgVGVzdChlKSA9PlxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZT1BbmEoQm9vbCB8PiBUeXAubWtfZmFzdCksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KFByb2QoW10pIHw+IFR5cC5ta19mYXN0KSwgfmNvX2N0eD1lLmNvX2N0eCwgbSk7XG4gIHwgRmlsdGVyKEZpbHRlcih7cGF0OiBjb25kLCBffSksIGJvZHkpID0+XG4gICAgbGV0IChjb25kLCBtKSA9IGdvKH5tb2RlLCBjb25kLCBtLCB+aXNfaW5fZmlsdGVyPXRydWUpO1xuICAgIGxldCAoYm9keSwgbSkgPSBnbyh+bW9kZSwgYm9keSwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChib2R5LnR5KSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2NvbmQuY29fY3R4LCBib2R5LmNvX2N0eF0pLFxuICAgICAgbSxcbiAgICApO1xuICB8IEZpbHRlcihSZXNpZHVlKF8pLCBib2R5KSA9PlxuICAgIGxldCAoYm9keSwgbSkgPSBnbyh+bW9kZSwgYm9keSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoYm9keS50eSksIH5jb19jdHg9Q29DdHgudW5pb24oW2JvZHkuY29fY3R4XSksIG0pO1xuICB8IFNlcShlMSwgZTIpID0+XG4gICAgbGV0IChlMSwgbSkgPSBnbyh+bW9kZT1TeW4sIGUxLCBtKTtcbiAgICBsZXQgKGUyLCBtKSA9IGdvKH5tb2RlLCBlMiwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoZTIudHkpLCB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtlMS5jb19jdHgsIGUyLmNvX2N0eF0pLCBtKTtcbiAgfCBDb25zdHJ1Y3RvcihjdHIpID0+IGF0b21pYyhTZWxmLm9mX2N0cihjdHgsIGN0cikpXG4gIHwgQXAoXywgZm4sIGFyZykgPT5cbiAgICBsZXQgZm5fbW9kZSA9IE1vZGUub2ZfYXAoY3R4LCBtb2RlLCBVRXhwLmN0cl9uYW1lKGZuKSk7XG4gICAgbGV0IChmbiwgbSkgPSBnbyh+bW9kZT1mbl9tb2RlLCBmbiwgbSk7XG4gICAgbGV0ICh0eV9pbiwgdHlfb3V0KSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgZm4udHkpO1xuICAgIGxldCAoYXJnLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGFyZywgbSk7XG4gICAgbGV0IHNlbGY6IFNlbGYudCA9XG4gICAgICBJZC5pc19udWxsYXJ5X2FwX2ZsYWcoYXJnLnRlcm0uaWRzKVxuICAgICAgJiYgIVR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfaW4sIFByb2QoW10pIHw+IFR5cC5ta19mYXN0KVxuICAgICAgICA/IEJhZFRyaXZBcCh0eV9pbikgOiBKdXN0KHR5X291dCk7XG4gICAgYWRkKH5zZWxmLCB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtmbi5jb19jdHgsIGFyZy5jb19jdHhdKSwgbSk7XG4gIHwgVHlwQXAoZm4sIHV0eXApID0+XG4gICAgbGV0IHR5cGZuX21vZGUgPSBNb2RlLnR5cGFwX21vZGU7XG4gICAgbGV0IChmbiwgbSkgPSBnbyh+bW9kZT10eXBmbl9tb2RlLCBmbiwgbSk7XG4gICAgbGV0IChfLCBtKSA9IHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXR5cCwgbSk7XG4gICAgbGV0IChvcHRpb25fbmFtZSwgdHlfYm9keSkgPSBUeXAubWF0Y2hlZF9mb3JhbGwoY3R4LCBmbi50eSk7XG4gICAgbGV0IHR5ID0gVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgIHN3aXRjaCAob3B0aW9uX25hbWUpIHtcbiAgICB8IFNvbWUobmFtZSkgPT5cbiAgICAgIGFkZCh+c2VsZj1KdXN0KFR5cC5zdWJzdCh0eSwgbmFtZSwgdHlfYm9keSkpLCB+Y29fY3R4PWZuLmNvX2N0eCwgbSlcbiAgICB8IE5vbmUgPT4gYWRkKH5zZWxmPUp1c3QodHlfYm9keSksIH5jb19jdHg9Zm4uY29fY3R4LCBtKSAvKiBpbnZhbGlkIG5hbWUgbWF0Y2hlcyB3aXRoIG5vIGZyZWUgdHlwZSB2YXJpYWJsZXMuICovXG4gICAgfTtcbiAgfCBEZWZlcnJlZEFwKGZuLCBhcmdzKSA9PlxuICAgIGxldCBmbl9tb2RlID0gTW9kZS5vZl9hcChjdHgsIG1vZGUsIFVFeHAuY3RyX25hbWUoZm4pKTtcbiAgICBsZXQgKGZuLCBtKSA9IGdvKH5tb2RlPWZuX21vZGUsIGZuLCBtKTtcbiAgICBsZXQgKHR5X2luLCB0eV9vdXQpID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCBmbi50eSk7XG4gICAgbGV0IG51bV9hcmdzID0gTGlzdC5sZW5ndGgoYXJncyk7XG4gICAgbGV0IHR5X2lucyA9IFR5cC5tYXRjaGVkX2FyZ3MoY3R4LCBudW1fYXJncywgdHlfaW4pO1xuICAgIGxldCBzZWxmOiBTZWxmLmV4cCA9IFNlbGYub2ZfZGVmZXJyZWRfYXAoYXJncywgdHlfaW5zLCB0eV9vdXQpO1xuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfZGVmZXJyZWRfYXBfYXJncyhudW1fYXJncywgdHlfaW5zKTtcbiAgICBsZXQgKGFyZ3MsIG0pID0gbWFwX21fZ28obSwgbW9kZXMsIGFyZ3MpO1xuICAgIGxldCBhcmdfY29fY3R4ID0gQ29DdHgudW5pb24oTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBhcmdzKSk7XG4gICAgYWRkJyh+c2VsZiwgfmNvX2N0eD1Db0N0eC51bmlvbihbZm4uY29fY3R4LCBhcmdfY29fY3R4XSksIG0pO1xuICB8IEZ1bihwLCBlLCBfLCBfKSA9PlxuICAgIGxldCAobW9kZV9wYXQsIG1vZGVfYm9keSkgPSBNb2RlLm9mX2Fycm93KGN0eCwgbW9kZSk7XG4gICAgbGV0IChwJywgXykgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9Q29DdHguZW1wdHksIH5tb2RlPW1vZGVfcGF0LCBwLCBtKTtcbiAgICBsZXQgKGUsIG0pID0gZ28nKH5jdHg9cCcuY3R4LCB+bW9kZT1tb2RlX2JvZHksIGUsIG0pO1xuICAgIC8qIGFkZCBjb19jdHggdG8gcGF0dGVybiAqL1xuICAgIGxldCAocCwgbSkgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9ZS5jb19jdHgsIH5tb2RlPW1vZGVfcGF0LCBwLCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KEFycm93KHAudHksIGUudHkpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIH5jb19jdHg9Q29DdHgubWsoY3R4LCBwLmN0eCwgZS5jb19jdHgpLFxuICAgICAgbSxcbiAgICApO1xuICB8IFR5cEZ1bih7dGVybTogVmFyKG5hbWUpLCBffSBhcyB1dHBhdCwgYm9keSwgXylcbiAgICAgIHdoZW4gIUN0eC5zaGFkb3dzX3R5cChjdHgsIG5hbWUpID0+XG4gICAgbGV0IG1vZGVfYm9keSA9IE1vZGUub2ZfZm9yYWxsKGN0eCwgU29tZShuYW1lKSwgbW9kZSk7XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB1dHBhdCwgbSkgfD4gc25kO1xuICAgIGxldCBjdHhfYm9keSA9XG4gICAgICBDdHguZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQ6IFRQYXQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9KTtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28nKH5jdHg9Y3R4X2JvZHksIH5tb2RlPW1vZGVfYm9keSwgYm9keSwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChGb3JhbGwodXRwYXQsIGJvZHkudHkpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIH5jb19jdHg9Ym9keS5jb19jdHgsXG4gICAgICBtLFxuICAgICk7XG4gIHwgVHlwRnVuKHV0cGF0LCBib2R5LCBfKSA9PlxuICAgIGxldCBtb2RlX2JvZHkgPSBNb2RlLm9mX2ZvcmFsbChjdHgsIE5vbmUsIG1vZGUpO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28ofm1vZGU9bW9kZV9ib2R5LCBib2R5LCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KEZvcmFsbCh1dHBhdCwgYm9keS50eSkgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgfmNvX2N0eD1ib2R5LmNvX2N0eCxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIGxldCAocF9zeW4sIF8pID1cbiAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPXRydWUsIH5jb19jdHg9Q29DdHguZW1wdHksIH5tb2RlPVN5biwgcCwgbSk7XG4gICAgbGV0IChkZWYsIHBfYW5hX2N0eCwgbSwgdHlfcF9hbmEpID1cbiAgICAgIGlmICghaXNfcmVjdXJzaXZlKGN0eCwgcCwgZGVmLCBwX3N5bi50eSkpIHtcbiAgICAgICAgbGV0IChkZWYsIG0pID0gZ28ofm1vZGU9QW5hKHBfc3luLnR5KSwgZGVmLCBtKTtcbiAgICAgICAgbGV0IHR5X3BfYW5hID0gZGVmLnR5O1xuICAgICAgICBsZXQgKHBfYW5hJywgXykgPVxuICAgICAgICAgIGdvX3BhdChcbiAgICAgICAgICAgIH5pc19zeW5zd2l0Y2g9ZmFsc2UsXG4gICAgICAgICAgICB+Y29fY3R4PUNvQ3R4LmVtcHR5LFxuICAgICAgICAgICAgfm1vZGU9QW5hKHR5X3BfYW5hKSxcbiAgICAgICAgICAgIHAsXG4gICAgICAgICAgICBtLFxuICAgICAgICAgICk7XG4gICAgICAgIChkZWYsIHBfYW5hJy5jdHgsIG0sIHR5X3BfYW5hKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCAoZGVmX2Jhc2UsIF8pID1cbiAgICAgICAgICBnbycofmN0eD1wX3N5bi5jdHgsIH5tb2RlPUFuYShwX3N5bi50eSksIGRlZiwgbSk7XG4gICAgICAgIGxldCB0eV9wX2FuYSA9IGRlZl9iYXNlLnR5O1xuICAgICAgICAvKiBBbmFseXplIHBhdHRlcm4gdG8gaW5jb3Jwb3JhdGUgZGVmIHR5cGUgaW50byBjdHggKi9cbiAgICAgICAgbGV0IChwX2FuYScsIF8pID1cbiAgICAgICAgICBnb19wYXQoXG4gICAgICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICAgICAgfmNvX2N0eD1Db0N0eC5lbXB0eSxcbiAgICAgICAgICAgIH5tb2RlPUFuYSh0eV9wX2FuYSksXG4gICAgICAgICAgICBwLFxuICAgICAgICAgICAgbSxcbiAgICAgICAgICApO1xuICAgICAgICBsZXQgZGVmX2N0eCA9IHBfYW5hJy5jdHg7XG4gICAgICAgIGxldCAoZGVmX2Jhc2UyLCBfKSA9IGdvJyh+Y3R4PWRlZl9jdHgsIH5tb2RlPUFuYShwX3N5bi50eSksIGRlZiwgbSk7XG4gICAgICAgIGxldCBhbmFfdHlfZm4gPSAoKHR5X2ZuMSwgdHlfZm4yKSwgdHlfcCkgPT4ge1xuICAgICAgICAgIFR5cC50ZXJtX29mKHR5X3ApID09IFR5cC5Vbmtub3duKFN5blN3aXRjaClcbiAgICAgICAgICAmJiAhVHlwLmVxKHR5X2ZuMSwgdHlfZm4yKVxuICAgICAgICAgICAgPyB0eV9mbjEgOiB0eV9wO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgYW5hID1cbiAgICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgICAgKGRlZl9iYXNlLnR5IHw+IFR5cC50ZXJtX29mLCBkZWZfYmFzZTIudHkgfD4gVHlwLnRlcm1fb2YpLFxuICAgICAgICAgICAgcF9zeW4udHkgfD4gVHlwLnRlcm1fb2YsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgfCAoKFByb2QodHlfZm5zMSksIFByb2QodHlfZm5zMikpLCBQcm9kKHR5X3BzKSkgPT5cbiAgICAgICAgICAgIGxldCB0eXMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcDIoYW5hX3R5X2ZuLCBMaXN0LmNvbWJpbmUodHlfZm5zMSwgdHlfZm5zMiksIHR5X3BzKTtcbiAgICAgICAgICAgIFR5cC5Qcm9kKHR5cykgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgICAgICAgfCAoKF8sIF8pLCBfKSA9PiBhbmFfdHlfZm4oKGRlZl9iYXNlLnR5LCBkZWZfYmFzZTIudHkpLCBwX3N5bi50eSlcbiAgICAgICAgICB9O1xuICAgICAgICBsZXQgKGRlZiwgbSkgPSBnbycofmN0eD1kZWZfY3R4LCB+bW9kZT1BbmEoYW5hKSwgZGVmLCBtKTtcbiAgICAgICAgKGRlZiwgZGVmX2N0eCwgbSwgdHlfcF9hbmEpO1xuICAgICAgfTtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28nKH5jdHg9cF9hbmFfY3R4LCB+bW9kZSwgYm9keSwgbSk7XG4gICAgLyogYWRkIGNvX2N0eCB0byBwYXR0ZXJuICovXG4gICAgbGV0IChwX2FuYSwgbSkgPVxuICAgICAgZ29fcGF0KFxuICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICB+Y29fY3R4PWJvZHkuY29fY3R4LFxuICAgICAgICB+bW9kZT1BbmEodHlfcF9hbmEpLFxuICAgICAgICBwLFxuICAgICAgICBtLFxuICAgICAgKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KGJvZHkudHkpLFxuICAgICAgfmNvX2N0eD1cbiAgICAgICAgQ29DdHgudW5pb24oW2RlZi5jb19jdHgsIENvQ3R4Lm1rKGN0eCwgcF9hbmEuY3R4LCBib2R5LmNvX2N0eCldKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBGaXhGKHAsIGUsIF8pID0+XG4gICAgbGV0IChwJywgXykgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9Q29DdHguZW1wdHksIH5tb2RlLCBwLCBtKTtcbiAgICBsZXQgKGUnLCBtKSA9IGdvJyh+Y3R4PXAnLmN0eCwgfm1vZGU9QW5hKHAnLnR5KSwgZSwgbSk7XG4gICAgbGV0IChwJycsIG0pID1cbiAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPWZhbHNlLCB+Y29fY3R4PWUnLmNvX2N0eCwgfm1vZGUsIHAsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QocCcudHkpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihbQ29DdHgubWsoY3R4LCBwJycuY3R4LCBlJy5jb19jdHgpXSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgSWYoZTAsIGUxLCBlMikgPT5cbiAgICBsZXQgYnJhbmNoX2lkcyA9IExpc3QubWFwKFVFeHAucmVwX2lkLCBbZTEsIGUyXSk7XG4gICAgbGV0IChjb25kLCBtKSA9IGdvKH5tb2RlPUFuYShCb29sIHw+IFR5cC5ta19mYXN0KSwgZTAsIG0pO1xuICAgIGxldCAoY29ucywgbSkgPSBnbyh+bW9kZSwgZTEsIG0pO1xuICAgIGxldCAoYWx0LCBtKSA9IGdvKH5tb2RlLCBlMiwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9U2VsZi5tYXRjaChjdHgsIFtjb25zLnR5LCBhbHQudHldLCBicmFuY2hfaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2NvbmQuY29fY3R4LCBjb25zLmNvX2N0eCwgYWx0LmNvX2N0eF0pLFxuICAgICAgbSxcbiAgICApO1xuICB8IE1hdGNoKHNjcnV0LCBydWxlcykgPT5cbiAgICBsZXQgKHNjcnV0LCBtKSA9IGdvKH5tb2RlPVN5biwgc2NydXQsIG0pO1xuICAgIGxldCAocHMsIGVzKSA9IExpc3Quc3BsaXQocnVsZXMpO1xuICAgIGxldCBicmFuY2hfaWRzID0gTGlzdC5tYXAoVUV4cC5yZXBfaWQsIGVzKTtcbiAgICBsZXQgKHBzJywgXykgPVxuICAgICAgbWFwX20oXG4gICAgICAgIGdvX3BhdChcbiAgICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICAgICAgfm1vZGU9TW9kZS5BbmEoc2NydXQudHkpLFxuICAgICAgICApLFxuICAgICAgICBwcyxcbiAgICAgICAgbSxcbiAgICAgICk7XG4gICAgbGV0IHBfY3R4cyA9IExpc3QubWFwKEluZm8ucGF0X2N0eCwgcHMnKTtcbiAgICBsZXQgKGVzLCBtKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgICgoZXMsIG0pLCBlLCBjdHgpID0+XG4gICAgICAgICAgZ28nKH5jdHgsIH5tb2RlLCBlLCBtKSB8PiAoKChlLCBtKSkgPT4gKGVzIEAgW2VdLCBtKSksXG4gICAgICAgIChbXSwgbSksXG4gICAgICAgIGVzLFxuICAgICAgICBwX2N0eHMsXG4gICAgICApO1xuICAgIGxldCBlX3R5cyA9IExpc3QubWFwKEluZm8uZXhwX3R5LCBlcyk7XG4gICAgbGV0IGVfY29fY3R4cyA9XG4gICAgICBMaXN0Lm1hcDIoQ29DdHgubWsoY3R4KSwgcF9jdHhzLCBMaXN0Lm1hcChJbmZvLmV4cF9jb19jdHgsIGVzKSk7XG4gICAgLyogQWRkIGNvLWN0eHMgdG8gcGF0dGVybnMgKi9cbiAgICBsZXQgKF8sIG0pID1cbiAgICAgIG1hcF9tKFxuICAgICAgICAoKHAsIGNvX2N0eCkpID0+XG4gICAgICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHgsIH5tb2RlPU1vZGUuQW5hKHNjcnV0LnR5KSwgcCksXG4gICAgICAgIExpc3QuY29tYmluZShwcywgZV9jb19jdHhzKSxcbiAgICAgICAgbSxcbiAgICAgICk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9U2VsZi5tYXRjaChjdHgsIGVfdHlzLCBicmFuY2hfaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW3NjcnV0LmNvX2N0eF0gQCBlX2NvX2N0eHMpLFxuICAgICAgbSxcbiAgICApO1xuICB8IFR5QWxpYXModHlwYXQsIHV0eXAsIGJvZHkpID0+XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB0eXBhdCwgbSkgfD4gc25kO1xuICAgIHN3aXRjaCAodHlwYXQudGVybSkge1xuICAgIHwgVmFyKG5hbWUpIHdoZW4gIUN0eC5zaGFkb3dzX3R5cChjdHgsIG5hbWUpID0+XG4gICAgICAvKiBDdXJyZW50bHkgd2UgZGlzYWxsb3cgYWxsIHR5cGUgc2hhZG93aW5nICovXG4gICAgICAvKiBOT1RFKGFuZHJldyk6IEN1cnJlbnRseSwgVVR5cC50b190eXAgcmV0dXJucyBVbmtub3duKFR5cGVIb2xlKVxuICAgICAgICAgZm9yIGFueSB0eXBlIHZhcmlhYmxlIHJlZmVyZW5jZSBub3QgaW4gaXRzIGN0eC4gU28gYW55IGZyZWUgdmFyaWFibGVzXG4gICAgICAgICBpbiB0aGUgZGVmaW5pdGlvbiB3b3VsZCBiZSBvYmxpdGVyYXRlZC4gQnV0IHdlIG5lZWQgdG8gY2hlY2sgZm9yIGZyZWVcbiAgICAgICAgIHZhcmlhYmxlcyB0byBkZWNpZGUgd2hldGhlciB0byBtYWtlIGEgcmVjdXJzaXZlIHR5cGUgb3Igbm90LiBTbyB3ZVxuICAgICAgICAgdGVudGF0aXZlbHkgYWRkIGFuIGFidHJhY3QgdHlwZSB0byB0aGUgY3R4LCByZXByZXNlbnRpbmcgdGhlXG4gICAgICAgICBzcGVjdWxhdGl2ZSByZWMgcGFyYW1ldGVyLiAqL1xuICAgICAgbGV0ICh0eV9kZWYsIGN0eF9kZWYsIGN0eF9ib2R5KSA9IHtcbiAgICAgICAgbGV0IHR5X3ByZSA9IFVUeXAudG9fdHlwKEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIHR5cGF0KSwgdXR5cCk7XG4gICAgICAgIHN3aXRjaCAodXR5cC50ZXJtKSB7XG4gICAgICAgIHwgU3VtKF8pIHdoZW4gTGlzdC5tZW0obmFtZSwgVHlwLmZyZWVfdmFycyh0eV9wcmUpKSA9PlxuICAgICAgICAgIC8qIE5PVEU6IFdoZW4gZGVidWdnaW5nIHR5cGUgc3lzdGVtIGlzc3VlcyBpdCBtYXkgYmUgYmVuZWZpY2lhbCB0b1xuICAgICAgICAgICAgIHVzZSBhIGRpZmZlcmVudCBuYW1lIHRoYW4gdGhlIGFsaWFzIGZvciB0aGUgcmVjdXJzaXZlIHBhcmFtZXRlciAqL1xuICAgICAgICAgIC8vbGV0IHR5X3JlYyA9IFR5cC5SZWMoXCLOsVwiLCBUeXAuc3Vic3QoVmFyKFwizrFcIiksIG5hbWUsIHR5X3ByZSkpO1xuICAgICAgICAgIGxldCB0eV9yZWMgPVxuICAgICAgICAgICAgVHlwLlJlYyhUUGF0LlZhcihuYW1lKSB8PiBJZFRhZ2dlZC5mcmVzaCwgdHlfcHJlKSB8PiBUeXAubWtfZmFzdDtcbiAgICAgICAgICBsZXQgY3R4X2RlZiA9XG4gICAgICAgICAgICBDdHguZXh0ZW5kX2FsaWFzKGN0eCwgbmFtZSwgVFBhdC5yZXBfaWQodHlwYXQpLCB0eV9yZWMpO1xuICAgICAgICAgICh0eV9yZWMsIGN0eF9kZWYsIGN0eF9kZWYpO1xuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBsZXQgdHkgPSBVVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgICAgICAgICh0eSwgY3R4LCBDdHguZXh0ZW5kX2FsaWFzKGN0eCwgbmFtZSwgVFBhdC5yZXBfaWQodHlwYXQpLCB0eSkpO1xuICAgICAgICB9O1xuICAgICAgICAvKiBOT1RFKHl1Y2hlbik6IEJlbG93IGlzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIHRoYXQgYXR0ZW1wdHMgdG9cbiAgICAgICAgICAgYWRkIGEgcmVjIHdoZW5ldmVyIHR5cGUgYWxpYXMgaXMgcHJlc2VudC4gSXQgbWF5IGNhdXNlIHRyb3VibGUgdG8gdGhlXG4gICAgICAgICAgIHJ1bnRpbWUsIHNvIHByZWNlZGUgd2l0aCBjYXV0aW9uLiAqL1xuICAgICAgICAvLyBUeXAubG9va3VwX3N1cmZhY2UodHlfcHJlKVxuICAgICAgICAvLyAgID8ge1xuICAgICAgICAvLyAgICAgbGV0IHR5X3JlYyA9IFR5cC5SZWMoe2l0ZW06IHR5X3ByZSwgbmFtZX0pO1xuICAgICAgICAvLyAgICAgbGV0IGN0eF9kZWYgPSBDdHguYWRkX2FsaWFzKGN0eCwgbmFtZSwgdXRwYXRfaWQodHlwYXQpLCB0eV9yZWMpO1xuICAgICAgICAvLyAgICAgKHR5X3JlYywgY3R4X2RlZiwgY3R4X2RlZik7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyAgIDoge1xuICAgICAgICAvLyAgICAgbGV0IHR5ID0gVGVybS5VVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgICAgICAvLyAgICAgKHR5LCBjdHgsIEN0eC5hZGRfYWxpYXMoY3R4LCBuYW1lLCB1dHBhdF9pZCh0eXBhdCksIHR5KSk7XG4gICAgICAgIC8vICAgfTtcbiAgICAgIH07XG4gICAgICBsZXQgY3R4X2JvZHkgPVxuICAgICAgICBzd2l0Y2ggKFR5cC5nZXRfc3VtX2NvbnN0cnVjdG9ycyhjdHgsIHR5X2RlZikpIHtcbiAgICAgICAgfCBTb21lKHNtKSA9PiBDdHguYWRkX2N0cnMoY3R4X2JvZHksIG5hbWUsIFVUeXAucmVwX2lkKHV0eXApLCBzbSlcbiAgICAgICAgfCBOb25lID0+IGN0eF9ib2R5XG4gICAgICAgIH07XG4gICAgICBsZXQgKHtjb19jdHgsIHR5OiB0eV9ib2R5LCBffTogSW5mby5leHAsIG0pID1cbiAgICAgICAgZ28nKH5jdHg9Y3R4X2JvZHksIH5tb2RlLCBib2R5LCBtKTtcbiAgICAgIC8qIE1ha2Ugc3VyZSB0eXBlcyBkb24ndCBlc2NhcGUgdGhlaXIgc2NvcGUgKi9cbiAgICAgIGxldCB0eV9lc2NhcGUgPSBUeXAuc3Vic3QodHlfZGVmLCB0eXBhdCwgdHlfYm9keSk7XG4gICAgICBsZXQgbSA9IHV0eXBfdG9faW5mb19tYXAofmN0eD1jdHhfZGVmLCB+YW5jZXN0b3JzLCB1dHlwLCBtKSB8PiBzbmQ7XG4gICAgICBhZGQofnNlbGY9SnVzdCh0eV9lc2NhcGUpLCB+Y29fY3R4LCBtKTtcbiAgICB8IFZhcihfKVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXykgPT5cbiAgICAgIGxldCAoe2NvX2N0eCwgdHk6IHR5X2JvZHksIF99OiBJbmZvLmV4cCwgbSkgPVxuICAgICAgICBnbycofmN0eCwgfm1vZGUsIGJvZHksIG0pO1xuICAgICAgbGV0IG0gPSB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHV0eXAsIG0pIHw+IHNuZDtcbiAgICAgIGFkZCh+c2VsZj1KdXN0KHR5X2JvZHkpLCB+Y29fY3R4LCBtKTtcbiAgICB9O1xuICB9O1xufVxuYW5kIHVwYXRfdG9faW5mb19tYXAgPVxuICAgIChcbiAgICAgIH5pc19zeW5zd2l0Y2gsXG4gICAgICB+Y3R4LFxuICAgICAgfmNvX2N0eCxcbiAgICAgIH5hbmNlc3RvcnM6IEluZm8uYW5jZXN0b3JzLFxuICAgICAgfm1vZGU6IE1vZGUudD1Nb2RlLlN5bixcbiAgICAgIHtpZHMsIHRlcm0sIF99IGFzIHVwYXQ6IFVQYXQudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLnBhdCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9ICh+c2VsZiwgfmN0eCwgbSkgPT4ge1xuICAgIGxldCBwcmV2X3N5bnN3aXRjaCA9XG4gICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChQYXQucmVwX2lkKHVwYXQpLCBtKSkge1xuICAgICAgfCBTb21lKEluZm8uSW5mb1BhdCh7bW9kZTogU3luIHwgU3luRnVuLCB0eSwgX30pKSA9PiBTb21lKHR5KVxuICAgICAgfCBTb21lKEluZm8uSW5mb1BhdCh7bW9kZTogQW5hKF8pLCBwcmV2X3N5bnN3aXRjaCwgX30pKSA9PiBwcmV2X3N5bnN3aXRjaFxuICAgICAgfCBTb21lKF8pXG4gICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgfTtcbiAgICBsZXQgaW5mbyA9XG4gICAgICBJbmZvLmRlcml2ZWRfcGF0KFxuICAgICAgICB+cHJldl9zeW5zd2l0Y2gsXG4gICAgICAgIH51cGF0LFxuICAgICAgICB+Y3R4LFxuICAgICAgICB+Y29fY3R4LFxuICAgICAgICB+bW9kZSxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfnNlbGY9Q29tbW9uKHNlbGYpLFxuICAgICAgKTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvUGF0KGluZm8pLCBtKSk7XG4gIH07XG4gIGxldCBhdG9taWMgPSBzZWxmID0+IGFkZCh+c2VsZiwgfmN0eCwgbSk7XG4gIGxldCBhbmNlc3RvcnMgPSBbVVBhdC5yZXBfaWQodXBhdCldIEAgYW5jZXN0b3JzO1xuICBsZXQgZ28gPSB1cGF0X3RvX2luZm9fbWFwKH5pc19zeW5zd2l0Y2gsIH5hbmNlc3RvcnMsIH5jb19jdHgpO1xuICBsZXQgdW5rbm93biA9IFR5cC5Vbmtub3duKGlzX3N5bnN3aXRjaCA/IFN5blN3aXRjaCA6IEludGVybmFsKTtcbiAgbGV0IGN0eF9mb2xkID0gKGN0eDogQ3R4LnQsIG0pID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKChjdHgsIHR5cywgbSksIGUsIG1vZGUpID0+XG4gICAgICAgIGdvKH5jdHgsIH5tb2RlLCBlLCBtKVxuICAgICAgICB8PiAoKChpbmZvLCBtKSkgPT4gKGluZm8uY3R4LCB0eXMgQCBbaW5mby50eV0sIG0pKSxcbiAgICAgIChjdHgsIFtdLCBtKSxcbiAgICApO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBNdWx0aUhvbGUodG1zKSA9PlxuICAgIGxldCAoXywgbSkgPSBtdWx0aSh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpO1xuICAgIGFkZCh+c2VsZj1Jc011bHRpLCB+Y3R4LCBtKTtcbiAgfCBJbnZhbGlkKHRva2VuKSA9PiBhdG9taWMoQmFkVG9rZW4odG9rZW4pKVxuICB8IEVtcHR5SG9sZSA9PiBhdG9taWMoSnVzdCh1bmtub3duIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBJbnQoXykgPT4gYXRvbWljKEp1c3QoSW50IHw+IFR5cC5ta19mYXN0KSlcbiAgfCBGbG9hdChfKSA9PiBhdG9taWMoSnVzdChGbG9hdCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgQm9vbChfKSA9PiBhdG9taWMoSnVzdChCb29sIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBTdHJpbmcoXykgPT4gYXRvbWljKEp1c3QoU3RyaW5nIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBMaXN0TGl0KHBzKSA9PlxuICAgIGxldCBpZHMgPSBMaXN0Lm1hcChVUGF0LnJlcF9pZCwgcHMpO1xuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfbGlzdF9saXQoY3R4LCBMaXN0Lmxlbmd0aChwcyksIG1vZGUpO1xuICAgIGxldCAoY3R4LCB0eXMsIG0pID0gY3R4X2ZvbGQoY3R4LCBtLCBwcywgbW9kZXMpO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubGlzdGxpdCh+ZW1wdHk9dW5rbm93biB8PiBUeXAubWtfZmFzdCwgY3R4LCB0eXMsIGlkcyksXG4gICAgICB+Y3R4LFxuICAgICAgbSxcbiAgICApO1xuICB8IENvbnMoaGQsIHRsKSA9PlxuICAgIGxldCAoaGQsIG0pID0gZ28ofmN0eCwgfm1vZGU9TW9kZS5vZl9jb25zX2hkKGN0eCwgbW9kZSksIGhkLCBtKTtcbiAgICBsZXQgKHRsLCBtKSA9XG4gICAgICBnbyh+Y3R4PWhkLmN0eCwgfm1vZGU9TW9kZS5vZl9jb25zX3RsKGN0eCwgbW9kZSwgaGQudHkpLCB0bCwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoTGlzdChoZC50eSkgfD4gVHlwLm1rX2Zhc3QpLCB+Y3R4PXRsLmN0eCwgbSk7XG4gIHwgV2lsZCA9PiBhdG9taWMoSnVzdCh1bmtub3duIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBWYXIobmFtZSkgPT5cbiAgICAvKiBOT1RFOiBUaGUgc2VsZiB0eXBlIGFzc2lnbmVkIHRvIHBhdHRlcm4gdmFyaWFibGVzIChVbmtub3duKVxuICAgICAgIG1heSBiZSBTeW5Td2l0Y2gsIGJ1dCBTeW5Td2l0Y2ggaXMgbmV2ZXIgYWRkZWQgdG8gdGhlIGNvbnRleHQ7XG4gICAgICAgVW5rbm93bihJbnRlcm5hbCkgaXMgdXNlZCBpbiB0aGlzIGNhc2UgKi9cbiAgICBsZXQgY3R4X3R5cCA9XG4gICAgICBJbmZvLmZpeGVkX3R5cF9wYXQoXG4gICAgICAgIGN0eCxcbiAgICAgICAgbW9kZSxcbiAgICAgICAgQ29tbW9uKEp1c3QoVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpKSxcbiAgICAgICk7XG4gICAgbGV0IGVudHJ5ID0gQ3R4LlZhckVudHJ5KHtuYW1lLCBpZDogVVBhdC5yZXBfaWQodXBhdCksIHR5cDogY3R4X3R5cH0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHVua25vd24gfD4gVHlwLm1rX2Zhc3QpLCB+Y3R4PUN0eC5leHRlbmQoY3R4LCBlbnRyeSksIG0pO1xuICB8IFR1cGxlKHBzKSA9PlxuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfcHJvZChjdHgsIG1vZGUsIExpc3QubGVuZ3RoKHBzKSk7XG4gICAgbGV0IChjdHgsIHR5cywgbSkgPSBjdHhfZm9sZChjdHgsIG0sIHBzLCBtb2Rlcyk7XG4gICAgYWRkKH5zZWxmPUp1c3QoUHJvZCh0eXMpIHw+IFR5cC5ta19mYXN0KSwgfmN0eCwgbSk7XG4gIHwgUGFyZW5zKHApID0+XG4gICAgbGV0IChwLCBtKSA9IGdvKH5jdHgsIH5tb2RlLCBwLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdChwLnR5KSwgfmN0eD1wLmN0eCwgbSk7XG4gIHwgQ29uc3RydWN0b3IoY3RyKSA9PiBhdG9taWMoU2VsZi5vZl9jdHIoY3R4LCBjdHIpKVxuICB8IEFwKGZuLCBhcmcpID0+XG4gICAgbGV0IGZuX21vZGUgPSBNb2RlLm9mX2FwKGN0eCwgbW9kZSwgVVBhdC5jdHJfbmFtZShmbikpO1xuICAgIGxldCAoZm4sIG0pID0gZ28ofmN0eCwgfm1vZGU9Zm5fbW9kZSwgZm4sIG0pO1xuICAgIGxldCAodHlfaW4sIHR5X291dCkgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIGZuLnR5KTtcbiAgICBsZXQgKGFyZywgbSkgPSBnbyh+Y3R4LCB+bW9kZT1BbmEodHlfaW4pLCBhcmcsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jdHg9YXJnLmN0eCwgbSk7XG4gIHwgQ2FzdChwLCBhbm4sIF8pID0+XG4gICAgbGV0IChhbm4sIG0pID0gdXR5cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCBhbm4sIG0pO1xuICAgIGxldCAocCwgbSkgPSBnbyh+Y3R4LCB+bW9kZT1BbmEoYW5uLnR5KSwgcCwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoYW5uLnR5KSwgfmN0eD1wLmN0eCwgbSk7XG4gIH07XG59XG5hbmQgdXR5cF90b19pbmZvX21hcCA9XG4gICAgKFxuICAgICAgfmN0eCxcbiAgICAgIH5leHBlY3RzPUluZm8uVHlwZUV4cGVjdGVkLFxuICAgICAgfmFuY2VzdG9ycyxcbiAgICAgIHtpZHMsIHRlcm0sIF99IGFzIHV0eXA6IFVUeXAudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLnR5cCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9IG0gPT4ge1xuICAgIGxldCBpbmZvID0gSW5mby5kZXJpdmVkX3R5cCh+dXR5cCwgfmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHMpO1xuICAgIChpbmZvLCBhZGRfaW5mbyhpZHMsIEluZm9UeXAoaW5mbyksIG0pKTtcbiAgfTtcbiAgbGV0IGFuY2VzdG9ycyA9IFtVVHlwLnJlcF9pZCh1dHlwKV0gQCBhbmNlc3RvcnM7XG4gIGxldCBnbycgPSB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMpO1xuICBsZXQgZ28gPSBnbycofmV4cGVjdHM9VHlwZUV4cGVjdGVkKTtcbiAgLy9UT0RPKGFuZHJldyk6IG1ha2UgdGhpcyByZXR1cm4gZnJlZSwgcmVwbGFjaW5nIFR5cC5mcmVlX3ZhcnNcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZSh0bXMpKSkgPT5cbiAgICBsZXQgKF8sIG0pID0gbXVsdGkofmN0eCwgfmFuY2VzdG9ycywgbSwgdG1zKTtcbiAgICBhZGQobSk7XG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZyA9PiBhZGQobSlcbiAgfCBWYXIoXykgPT5cbiAgICAvKiBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gSW5mby5zdGF0dXNfdHlwICovXG4gICAgYWRkKG0pXG4gIHwgTGlzdCh0KVxuICB8IFBhcmVucyh0KSA9PiBhZGQoZ28odCwgbSkgfD4gc25kKVxuICB8IEFycm93KHQxLCB0MikgPT5cbiAgICBsZXQgbSA9IGdvKHQxLCBtKSB8PiBzbmQ7XG4gICAgbGV0IG0gPSBnbyh0MiwgbSkgfD4gc25kO1xuICAgIGFkZChtKTtcbiAgfCBQcm9kKHRzKSA9PlxuICAgIGxldCBtID0gbWFwX20oZ28sIHRzLCBtKSB8PiBzbmQ7XG4gICAgYWRkKG0pO1xuICB8IEFwKHQxLCB0MikgPT5cbiAgICBsZXQgdHlfaW4gPSBVVHlwLnRvX3R5cChjdHgsIHQyKTtcbiAgICBsZXQgdDFfbW9kZTogSW5mby50eXBfZXhwZWN0cyA9XG4gICAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICAgIHwgVmFyaWFudEV4cGVjdGVkKG0sIHN1bV90eSkgPT5cbiAgICAgICAgQ29uc3RydWN0b3JFeHBlY3RlZChtLCBBcnJvdyh0eV9pbiwgc3VtX3R5KSB8PiBUeXAubWtfZmFzdClcbiAgICAgIHwgXyA9PlxuICAgICAgICBDb25zdHJ1Y3RvckV4cGVjdGVkKFxuICAgICAgICAgIFVuaXF1ZSxcbiAgICAgICAgICBBcnJvdyh0eV9pbiwgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgICApXG4gICAgICB9O1xuICAgIGxldCBtID0gZ28nKH5leHBlY3RzPXQxX21vZGUsIHQxLCBtKSB8PiBzbmQ7XG4gICAgbGV0IG0gPSBnbycofmV4cGVjdHM9VHlwZUV4cGVjdGVkLCB0MiwgbSkgfD4gc25kO1xuICAgIGFkZChtKTtcbiAgfCBTdW0odmFyaWFudHMpID0+XG4gICAgbGV0IHR5X3N1bSA9IFVUeXAudG9fdHlwKGN0eCwgdXR5cCk7XG4gICAgbGV0IChtLCBfKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgdmFyaWFudF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB+dHlfc3VtKSxcbiAgICAgICAgKG0sIFtdKSxcbiAgICAgICAgdmFyaWFudHMsXG4gICAgICApO1xuICAgIGFkZChtKTtcbiAgfCBGb3JhbGwoe3Rlcm06IFZhcihuYW1lKSwgX30gYXMgdXRwYXQsIHRib2R5KSA9PlxuICAgIGxldCBib2R5X2N0eCA9XG4gICAgICBDdHguZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQ6IFRQYXQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9KTtcbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKFxuICAgICAgICB0Ym9keSxcbiAgICAgICAgfmN0eD1ib2R5X2N0eCxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfmV4cGVjdHM9VHlwZUV4cGVjdGVkLFxuICAgICAgICBtLFxuICAgICAgKVxuICAgICAgfD4gc25kO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7IC8vIFRPRE86IGNoZWNrIHdpdGggYW5kcmV3XG4gIHwgRm9yYWxsKHV0cGF0LCB0Ym9keSkgPT5cbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKHRib2R5LCB+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cz1UeXBlRXhwZWN0ZWQsIG0pXG4gICAgICB8PiBzbmQ7XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB1dHBhdCwgbSkgfD4gc25kO1xuICAgIGFkZChtKTsgLy8gVE9ETzogY2hlY2sgd2l0aCBhbmRyZXdcbiAgfCBSZWMoe3Rlcm06IFZhcihuYW1lKSwgX30gYXMgdXRwYXQsIHRib2R5KSA9PlxuICAgIGxldCBib2R5X2N0eCA9XG4gICAgICBDdHguZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQ6IFRQYXQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9KTtcbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKFxuICAgICAgICB0Ym9keSxcbiAgICAgICAgfmN0eD1ib2R5X2N0eCxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfmV4cGVjdHM9VHlwZUV4cGVjdGVkLFxuICAgICAgICBtLFxuICAgICAgKVxuICAgICAgfD4gc25kO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7IC8vIFRPRE86IGNoZWNrIHdpdGggYW5kcmV3XG4gIHwgUmVjKHV0cGF0LCB0Ym9keSkgPT5cbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKHRib2R5LCB+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cz1UeXBlRXhwZWN0ZWQsIG0pXG4gICAgICB8PiBzbmQ7XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB1dHBhdCwgbSkgfD4gc25kO1xuICAgIGFkZChtKTsgLy8gVE9ETzogY2hlY2sgd2l0aCBhbmRyZXdcbiAgfTtcbn1cbmFuZCB1dHBhdF90b19pbmZvX21hcCA9XG4gICAgKH5jdHgsIH5hbmNlc3RvcnMsIHtpZHMsIHRlcm0sIF99IGFzIHV0cGF0OiBUUGF0LnQsIG06IE1hcC50KVxuICAgIDogKEluZm8udHBhdCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9IG0gPT4ge1xuICAgIGxldCBpbmZvID0gSW5mby5kZXJpdmVkX3RwYXQofnV0cGF0LCB+Y3R4LCB+YW5jZXN0b3JzKTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvVFBhdChpbmZvKSwgbSkpO1xuICB9O1xuICBsZXQgYW5jZXN0b3JzID0gW1RQYXQucmVwX2lkKHV0cGF0KV0gQCBhbmNlc3RvcnM7XG4gIHN3aXRjaCAodGVybSkge1xuICB8IE11bHRpSG9sZSh0bXMpID0+XG4gICAgbGV0IChfLCBtKSA9IG11bHRpKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcyk7XG4gICAgYWRkKG0pO1xuICB8IEludmFsaWQoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBWYXIoXykgPT4gYWRkKG0pXG4gIH07XG59XG5hbmQgdmFyaWFudF90b19pbmZvX21hcCA9XG4gICAgKFxuICAgICAgfmN0eCxcbiAgICAgIH5hbmNlc3RvcnMsXG4gICAgICB+dHlfc3VtLFxuICAgICAgKG0sIGN0cnMpLFxuICAgICAgdXR5OiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KFVUeXAudCksXG4gICAgKSA9PiB7XG4gIGxldCBnbyA9IGV4cGVjdHMgPT4gdXR5cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cyk7XG4gIHN3aXRjaCAodXR5KSB7XG4gIHwgQmFkRW50cnkodXR5KSA9PlxuICAgIGxldCBtID0gZ28oVmFyaWFudEV4cGVjdGVkKFVuaXF1ZSwgdHlfc3VtKSwgdXR5LCBtKSB8PiBzbmQ7XG4gICAgKG0sIGN0cnMpO1xuICB8IFZhcmlhbnQoY3RyLCBpZHMsIHBhcmFtKSA9PlxuICAgIGxldCBtID1cbiAgICAgIGdvKFxuICAgICAgICBDb25zdHJ1Y3RvckV4cGVjdGVkKFxuICAgICAgICAgIExpc3QubWVtKGN0ciwgY3RycykgPyBEdXBsaWNhdGUgOiBVbmlxdWUsXG4gICAgICAgICAgdHlfc3VtLFxuICAgICAgICApLFxuICAgICAgICB7dGVybTogVmFyKGN0ciksIGlkcywgY29waWVkOiBmYWxzZX0sXG4gICAgICAgIG0sXG4gICAgICApXG4gICAgICB8PiBzbmQ7XG4gICAgbGV0IG0gPVxuICAgICAgc3dpdGNoIChwYXJhbSkge1xuICAgICAgfCBTb21lKHBhcmFtX3R5KSA9PiBnbyhUeXBlRXhwZWN0ZWQsIHBhcmFtX3R5LCBtKSB8PiBzbmRcbiAgICAgIHwgTm9uZSA9PiBtXG4gICAgICB9O1xuICAgIChtLCBbY3RyLCAuLi5jdHJzXSk7XG4gIH07XG59O1xuXG5sZXQgZ2V0X2Vycm9yX2F0ID0gKGluZm9fbWFwOiBNYXAudCwgaWQ6IElkLnQpID0+IHtcbiAgaWRcbiAgfD4gSWQuTWFwLmZpbmRfb3B0KF8sIGluZm9fbWFwKVxuICB8PiBPcHRpb24uYmluZChcbiAgICAgICBfLFxuICAgICAgIGZ1blxuICAgICAgIHwgSW5mb0V4cChlKSA9PiBTb21lKGUpXG4gICAgICAgfCBfID0+IE5vbmUsXG4gICAgIClcbiAgfD4gT3B0aW9uLmJpbmQoXywgZSA9PlxuICAgICAgIHN3aXRjaCAoZS5zdGF0dXMpIHtcbiAgICAgICB8IEluSG9sZShlcnJfaW5mbykgPT4gU29tZShlcnJfaW5mbylcbiAgICAgICB8IE5vdEluSG9sZShfKSA9PiBOb25lXG4gICAgICAgfVxuICAgICApO1xufTtcblxubGV0IGdldF9wYXRfZXJyb3JfYXQgPSAoaW5mb19tYXA6IE1hcC50LCBpZDogSWQudCkgPT4ge1xuICBpZFxuICB8PiBJZC5NYXAuZmluZF9vcHQoXywgaW5mb19tYXApXG4gIHw+IE9wdGlvbi5iaW5kKFxuICAgICAgIF8sXG4gICAgICAgZnVuXG4gICAgICAgfCBJbmZvUGF0KGUpID0+IFNvbWUoZSlcbiAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgKVxuICB8PiBPcHRpb24uYmluZChfLCBlID0+XG4gICAgICAgc3dpdGNoIChlLnN0YXR1cykge1xuICAgICAgIHwgSW5Ib2xlKGVycl9pbmZvKSA9PiBTb21lKGVycl9pbmZvKVxuICAgICAgIHwgTm90SW5Ib2xlKF8pID0+IE5vbmVcbiAgICAgICB9XG4gICAgICk7XG59O1xuXG5sZXQgY29sbGVjdF9lcnJvcnMgPSAobWFwOiBNYXAudCk6IGxpc3QoKElkLnQsIEluZm8uZXJyb3IpKSA9PlxuICBJZC5NYXAuZm9sZChcbiAgICAoaWQsIGluZm86IEluZm8udCwgYWNjKSA9PlxuICAgICAgT3B0aW9uLnRvX2xpc3QoSW5mby5lcnJvcl9vZihpbmZvKSB8PiBPcHRpb24ubWFwKHggPT4gKGlkLCB4KSkpIEAgYWNjLFxuICAgIG1hcCxcbiAgICBbXSxcbiAgKTtcbiIsImluY2x1ZGUgUGF0O1xuXG4vKiBBIER5bmFtaWMgUGF0dGVybiAoREhQYXQpIGlzIGEgcGF0dGVybiB0aGF0IGlzIHBhcnQgb2YgYW4gZXhwcmVzc2lvblxuICAgdGhhdCBoYXMgYmVlbiB0eXBlLWNoZWNrZWQuIEhlbmNlIHdoeSB0aGVzZSBmdW5jdGlvbnMgdGFrZSBib3RoIGFcbiAgIHBhdHRlcm4sIGRwLCBhbmQgYW4gaW5mbyBtYXAsIG0sIHdpdGggdHlwZSBpbmZvcm1hdGlvbi4gKi9cblxuLyoqXG4gKiBXaGV0aGVyIGRwIGNvbnRhaW5zIHRoZSB2YXJpYWJsZSB4IG91dHNpZGUgb2YgYSBob2xlLlxuICovXG5sZXQgcmVjIGJpbmRzX3ZhciA9IChtOiBTdGF0aWNzLk1hcC50LCB4OiBWYXIudCwgZHA6IHQpOiBib29sID0+XG4gIHN3aXRjaCAoU3RhdGljcy5nZXRfcGF0X2Vycm9yX2F0KG0sIHJlcF9pZChkcCkpKSB7XG4gIHwgU29tZShfKSA9PiBmYWxzZVxuICB8IE5vbmUgPT5cbiAgICBzd2l0Y2ggKGRwIHw+IHRlcm1fb2YpIHtcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gICAgfCBDYXN0KHksIF8sIF8pXG4gICAgfCBQYXJlbnMoeSkgPT4gYmluZHNfdmFyKG0sIHgsIHkpXG4gICAgfCBWYXIoeSkgPT4gVmFyLmVxKHgsIHkpXG4gICAgfCBUdXBsZShkcHMpID0+IGRwcyB8PiBMaXN0LmV4aXN0cyhiaW5kc192YXIobSwgeCkpXG4gICAgfCBDb25zKGRwMSwgZHAyKSA9PiBiaW5kc192YXIobSwgeCwgZHAxKSB8fCBiaW5kc192YXIobSwgeCwgZHAyKVxuICAgIHwgTGlzdExpdChkX2xpc3QpID0+XG4gICAgICBsZXQgbmV3X2xpc3QgPSBMaXN0Lm1hcChiaW5kc192YXIobSwgeCksIGRfbGlzdCk7XG4gICAgICBMaXN0LmZvbGRfbGVmdCgofHwpLCBmYWxzZSwgbmV3X2xpc3QpO1xuICAgIHwgQXAoXywgXykgPT4gZmFsc2VcbiAgICB9XG4gIH07XG5cbmxldCByZWMgYm91bmRfdmFycyA9IChkcDogdCk6IGxpc3QoVmFyLnQpID0+XG4gIHN3aXRjaCAoZHAgfD4gdGVybV9vZikge1xuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZShfKVxuICB8IFdpbGRcbiAgfCBJbnZhbGlkKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gW11cbiAgfCBDYXN0KHksIF8sIF8pXG4gIHwgUGFyZW5zKHkpID0+IGJvdW5kX3ZhcnMoeSlcbiAgfCBWYXIoeSkgPT4gW3ldXG4gIHwgVHVwbGUoZHBzKSA9PiBMaXN0LmZsYXR0ZW4oTGlzdC5tYXAoYm91bmRfdmFycywgZHBzKSlcbiAgfCBDb25zKGRwMSwgZHAyKSA9PiBib3VuZF92YXJzKGRwMSkgQCBib3VuZF92YXJzKGRwMilcbiAgfCBMaXN0TGl0KGRwcykgPT4gTGlzdC5mbGF0dGVuKExpc3QubWFwKGJvdW5kX3ZhcnMsIGRwcykpXG4gIHwgQXAoXywgZHAxKSA9PiBib3VuZF92YXJzKGRwMSlcbiAgfTtcbiIsIm9wZW4gVXRpbDtcblxuLyogVGhlIGNhc3QgY2FsY3VsdXMgaXMgYmFzZWQgb2ZmIHRoZSBQT1BMIDIwMTkgcGFwZXI6XG4gICBodHRwczovL2FyeGl2Lm9yZy9wZGYvMTgwNS4wMDE1NS5wZGYgKi9cblxuLyogR1JPVU5EIFRZUEVTICovXG5cbi8qIFlvdSBjYW4gdGhpbmsgb2YgYSBncm91bmQgdHlwZSBhcyBhIHR5cGV0IHRoYXQgdGVsbHMgeW91IHdoYXQgdGhlIHJvb3Qgb2YgdGhlXG4gICAgICB0eXBlIGV4cHJlc3Npb24gaXMsIGJ1dCBub3RoaW5nIG1vcmUuIEZvciBleGFtcGxlOiBJbnQsIFs/XSwgPyAtPiA/LCAuLi4gYXJlXG4gICAgICBncm91bmQgdHlwZXMgYW5kIFtJbnRdLCA/IC0+IEZsb2F0IGFyZSBub3QuXG5cbiAgICAgIFRoZSBtb3N0IGltcG9ydGFudCBwcm9wZXJ0eSBvZiBncm91bmQgdHlwZXMgaXM6XG4gICAgICAgICAgSWYgdHdvIHR5cGVzIGFyZSBncm91bmQgdHlwZXMsXG4gICAgICAgICAgYW5kIHRoZSB0d28gdHlwZXMgYXJlIGNvbnNpc3RlbnQsXG4gICAgICAgICAgdGhlbiB0aGV5IGFyZSBlcXVhbC5cblxuICAgICAgIE1ha2Ugc3VyZSB0aGlzIGhvbGRzIGZvciB5b3VyIG5ldyBmZWF0dXJlISFcblxuICAgICAgIGUuZy4gWz9dIGFuZCBbP10gYXJlIGVxdWFsLCBidXQgWz9dIGFuZCBbSW50XSBhcmUgbm90IChiZWNhdXNlIFtJbnRdIGlzIG5vdFxuICAgICAgIGdyb3VuZCwgZXZlbiB0aG91Z2ggW0ludF0gYW5kIFs/XSBhcmUgY29uc2lzdGVudCkuXG5cbiAgICovXG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgZ3JvdW5kX2Nhc2VzID1cbiAgfCBIb2xlXG4gIHwgR3JvdW5kXG4gIHwgTm90R3JvdW5kT3JIb2xlKFR5cC50KSAvKiB0aGUgYXJndW1lbnQgaXMgdGhlIGNvcnJlc3BvbmRpbmcgZ3JvdW5kIHR5cGUgKi87XG5cbmxldCBncm91bmRlZF9BcnJvdyA9XG4gIE5vdEdyb3VuZE9ySG9sZShcbiAgICBBcnJvdyhcbiAgICAgIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsXG4gICAgKVxuICAgIHw+IFR5cC5ta19mYXN0LFxuICApO1xubGV0IGdyb3VuZGVkX0ZvcmFsbCA9XG4gIE5vdEdyb3VuZE9ySG9sZShcbiAgICBGb3JhbGwoRW1wdHlIb2xlIHw+IFRQYXQuZnJlc2gsIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KVxuICAgIHw+IFR5cC5ta19mYXN0LFxuICApO1xubGV0IGdyb3VuZGVkX1Byb2QgPSBsZW5ndGggPT5cbiAgTm90R3JvdW5kT3JIb2xlKFxuICAgIFByb2QoTGlzdFV0aWwucmVwbGljYXRlKGxlbmd0aCwgVHlwLlVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSlcbiAgICB8PiBUeXAubWtfZmFzdCxcbiAgKTtcbmxldCBncm91bmRlZF9TdW06IHVuaXQgPT4gVHlwLnN1bV9tYXAgPVxuICAoKSA9PiBbQmFkRW50cnkoVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKV07XG5sZXQgZ3JvdW5kZWRfTGlzdCA9XG4gIE5vdEdyb3VuZE9ySG9sZShMaXN0KFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSB8PiBUeXAubWtfZmFzdCk7XG5cbmxldCByZWMgZ3JvdW5kX2Nhc2VzX29mID0gKHR5OiBUeXAudCk6IGdyb3VuZF9jYXNlcyA9PiB7XG4gIGxldCBpc19ob2xlOiBUeXAudCA9PiBib29sID1cbiAgICBmdW5cbiAgICB8IHt0ZXJtOiBUeXAuVW5rbm93bihfKSwgX30gPT4gdHJ1ZVxuICAgIHwgXyA9PiBmYWxzZTtcbiAgc3dpdGNoIChUeXAudGVybV9vZih0eSkpIHtcbiAgfCBVbmtub3duKF8pID0+IEhvbGVcbiAgfCBCb29sXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBTdHJpbmdcbiAgfCBWYXIoXylcbiAgfCBSZWMoXylcbiAgfCBGb3JhbGwoXywge3Rlcm06IFVua25vd24oXyksIF99KVxuICB8IEFycm93KHt0ZXJtOiBVbmtub3duKF8pLCBffSwge3Rlcm06IFVua25vd24oXyksIF99KVxuICB8IExpc3Qoe3Rlcm06IFVua25vd24oXyksIF99KSA9PiBHcm91bmRcbiAgfCBQYXJlbnModHkpID0+IGdyb3VuZF9jYXNlc19vZih0eSlcbiAgfCBQcm9kKHR5cykgPT5cbiAgICBpZiAoTGlzdC5mb3JfYWxsKFxuICAgICAgICAgIGZ1blxuICAgICAgICAgIHwgKHt0ZXJtOiBUeXAuVW5rbm93bihfKSwgX306IFR5cC50KSA9PiB0cnVlXG4gICAgICAgICAgfCBfID0+IGZhbHNlLFxuICAgICAgICAgIHR5cyxcbiAgICAgICAgKSkge1xuICAgICAgR3JvdW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXMgfD4gTGlzdC5sZW5ndGggfD4gZ3JvdW5kZWRfUHJvZDtcbiAgICB9XG4gIHwgU3VtKHNtKSA9PlxuICAgIHNtIHw+IENvbnN0cnVjdG9yTWFwLmlzX2dyb3VuZChpc19ob2xlKVxuICAgICAgPyBHcm91bmQgOiBOb3RHcm91bmRPckhvbGUoU3VtKGdyb3VuZGVkX1N1bSgpKSB8PiBUeXAubWtfZmFzdClcbiAgfCBBcnJvdyhfLCBfKSA9PiBncm91bmRlZF9BcnJvd1xuICB8IEZvcmFsbChfKSA9PiBncm91bmRlZF9Gb3JhbGxcbiAgfCBMaXN0KF8pID0+IGdyb3VuZGVkX0xpc3RcbiAgfCBBcChfKSA9PiBmYWlsd2l0aChcInR5cGUgYXBwbGljYXRpb24gaW4gZHluYW1pY3NcIilcbiAgfTtcbn07XG5cbi8qIENBU1QgQ0FMQ1VMVVMgKi9cblxuLyogUnVsZXMgYXJlIHRha2VuIGZyb20gZmlndXJlIDEyIG9mIGh0dHBzOi8vYXJ4aXYub3JnL3BkZi8xODA1LjAwMTU1LnBkZiAgKi9cblxuLyogZ2l2ZXMgYSB0cmFuc2l0aW9uIHN0ZXAgdGhhdCBjYW4gYmUgdGFrZW4gYnkgdGhlIGNhc3QgY2FsY3VsdXMgaGVyZSBpZiBhcHBsaWNhYmxlLiAqL1xubGV0IHJlYyB0cmFuc2l0aW9uID0gKH5yZWN1cnNpdmU9ZmFsc2UsIGQ6IERIRXhwLnQpOiBvcHRpb24oREhFeHAudCkgPT4ge1xuICBzd2l0Y2ggKERIRXhwLnRlcm1fb2YoZCkpIHtcbiAgfCBDYXN0KGQxLCB0MSwgdDIpID0+XG4gICAgbGV0IGQxID1cbiAgICAgIGlmIChyZWN1cnNpdmUpIHtcbiAgICAgICAgZDEgfD4gdHJhbnNpdGlvbih+cmVjdXJzaXZlKSB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9ZDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZDE7XG4gICAgICB9O1xuICAgIHN3aXRjaCAoZ3JvdW5kX2Nhc2VzX29mKHQxKSwgZ3JvdW5kX2Nhc2VzX29mKHQyKSkge1xuICAgIHwgKEhvbGUsIEhvbGUpXG4gICAgfCAoR3JvdW5kLCBHcm91bmQpID0+XG4gICAgICAvKiBpZiB0d28gdHlwZXMgYXJlIGdyb3VuZCBhbmQgY29uc2lzdGVudCwgdGhlbiB0aGV5IGFyZSBlcSAqL1xuICAgICAgU29tZShkMSkgLy8gUnVsZSBJVENhc3RJZFxuXG4gICAgfCAoR3JvdW5kLCBIb2xlKSA9PlxuICAgICAgLyogY2FuJ3QgcmVtb3ZlIHRoZSBjYXN0IG9yIGRvIGFueXRoaW5nIGVsc2UgaGVyZSwgc28gd2UncmUgZG9uZSAqL1xuICAgICAgTm9uZVxuXG4gICAgfCAoSG9sZSwgR3JvdW5kKSA9PlxuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQxKSkge1xuICAgICAgfCBDYXN0KGQyLCB0Mywge3Rlcm06IFVua25vd24oXyksIF99KSA9PlxuICAgICAgICAvKiBieSBjYW5vbmljYWwgZm9ybXMsIGQxJyBtdXN0IGJlIG9mIHRoZSBmb3JtIGQ8dHknJyAtPiA/PiAqL1xuICAgICAgICBpZiAoVHlwLmVxKHQzLCB0MikpIHtcbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoZDIpOyAvLyBSdWxlIElUQ2FzdFN1Y2NlZWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoRmFpbGVkQ2FzdChkMiwgdDMsIHQyKSB8PiBESEV4cC5mcmVzaCk7IC8vIFJ1bGUgSVRDYXN0RmFpbFxuICAgICAgICB9XG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfVxuXG4gICAgfCAoSG9sZSwgTm90R3JvdW5kT3JIb2xlKHQyX2dyb3VuZGVkKSkgPT5cbiAgICAgIC8qIElURXhwYW5kIHJ1bGUgKi9cbiAgICAgIGxldCBpbm5lcl9jYXN0ID0gQ2FzdChkMSwgdDEsIHQyX2dyb3VuZGVkKSB8PiBESEV4cC5mcmVzaDtcbiAgICAgIC8vIEhBQ0s6IHdlIG5lZWQgdG8gY2hlY2sgdGhlIGlubmVyIGNhc3QgaGVyZVxuICAgICAgbGV0IGlubmVyX2Nhc3QgPVxuICAgICAgICBzd2l0Y2ggKHRyYW5zaXRpb24ofnJlY3Vyc2l2ZSwgaW5uZXJfY2FzdCkpIHtcbiAgICAgICAgfCBTb21lKGQxKSA9PiBkMVxuICAgICAgICB8IE5vbmUgPT4gaW5uZXJfY2FzdFxuICAgICAgICB9O1xuICAgICAgU29tZShESEV4cC5DYXN0KGlubmVyX2Nhc3QsIHQyX2dyb3VuZGVkLCB0MikgfD4gREhFeHAuZnJlc2gpO1xuXG4gICAgfCAoTm90R3JvdW5kT3JIb2xlKHQxX2dyb3VuZGVkKSwgSG9sZSkgPT5cbiAgICAgIC8qIElUR3JvdW5kIHJ1bGUgKi9cbiAgICAgIFNvbWUoXG4gICAgICAgIERIRXhwLkNhc3QoQ2FzdChkMSwgdDEsIHQxX2dyb3VuZGVkKSB8PiBESEV4cC5mcmVzaCwgdDFfZ3JvdW5kZWQsIHQyKVxuICAgICAgICB8PiBESEV4cC5mcmVzaCxcbiAgICAgIClcblxuICAgIHwgKEdyb3VuZCwgTm90R3JvdW5kT3JIb2xlKF8pKSA9PlxuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQxKSkge1xuICAgICAgfCBDYXN0KGQyLCB0MywgXykgPT5cbiAgICAgICAgaWYgKFR5cC5lcSh0MywgdDIpKSB7XG4gICAgICAgICAgU29tZShkMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgTm9uZTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH1cbiAgICB8IChOb3RHcm91bmRPckhvbGUoXyksIEdyb3VuZCkgPT5cbiAgICAgIC8qIGNhbid0IGRvIGFueXRoaW5nIHdoZW4gY2FzdGluZyBiZXR3ZWVuIGRpc2VxLCBub24taG9sZSB0eXBlcyAqL1xuICAgICAgTm9uZVxuXG4gICAgfCAoTm90R3JvdW5kT3JIb2xlKF8pLCBOb3RHcm91bmRPckhvbGUoXykpID0+XG4gICAgICAvKiB0aGV5IG1pZ2h0IGJlIGVxIGluIHRoaXMgY2FzZSwgc28gcmVtb3ZlIGNhc3QgaWYgc28gKi9cbiAgICAgIGlmIChUeXAuZXEodDEsIHQyKSkge1xuICAgICAgICBTb21lXG4gICAgICAgICAgKGQxKTsgLy8gUnVsZSBJVENhc3RJZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTm9uZTtcbiAgICAgIH1cbiAgICB9O1xuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IHJlYyB0cmFuc2l0aW9uX211bHRpcGxlID0gKGQ6IERIRXhwLnQpOiBESEV4cC50ID0+IHtcbiAgc3dpdGNoICh0cmFuc2l0aW9uKH5yZWN1cnNpdmU9dHJ1ZSwgZCkpIHtcbiAgfCBTb21lKGQnJykgPT4gdHJhbnNpdGlvbl9tdWx0aXBsZShkJycpXG4gIHwgTm9uZSA9PiBkXG4gIH07XG59O1xuXG4vLyBTbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcmVnZW5lcmF0ZSBpdHMgaWRcbmxldCBob2xlID0gRW1wdHlIb2xlIHw+IERIRXhwLmZyZXNoO1xuXG4vLyBIYWNreSB3YXkgdG8gZG8gdHJhbnNpdGlvbl9tdWx0aXBsZSBvbiBwYXR0ZXJucyBieSB0cmFuc2ZlcnJpbmdcbi8vIHRoZSBjYXN0IHRvIHRoZSBleHByZXNzaW9uIGFuZCB0aGVuIGJhY2sgdG8gdGhlIHBhdHRlcm4uXG5sZXQgcGF0dGVybl9maXh1cCA9IChwOiBESFBhdC50KTogREhQYXQudCA9PiB7XG4gIGxldCByZWMgdW53cmFwX2Nhc3RzID0gKHA6IERIUGF0LnQpOiAoREhQYXQudCwgREhFeHAudCkgPT4ge1xuICAgIHN3aXRjaCAoREhQYXQudGVybV9vZihwKSkge1xuICAgIHwgQ2FzdChwMSwgdDEsIHQyKSA9PlxuICAgICAgbGV0IChwMSwgZDEpID0gdW53cmFwX2Nhc3RzKHAxKTtcbiAgICAgIChcbiAgICAgICAgcDEsXG4gICAgICAgIHt0ZXJtOiBESEV4cC5DYXN0KGQxLCB0MSwgdDIpLCBjb3BpZWQ6IHAuY29waWVkLCBpZHM6IHAuaWRzfVxuICAgICAgICB8PiB0cmFuc2l0aW9uX211bHRpcGxlLFxuICAgICAgKTtcbiAgICB8IF8gPT4gKHAsIGhvbGUpXG4gICAgfTtcbiAgfTtcbiAgbGV0IHJlYyByZXdyYXBfY2FzdHMgPSAoKHA6IERIUGF0LnQsIGQ6IERIRXhwLnQpKTogREhQYXQudCA9PiB7XG4gICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQpKSB7XG4gICAgfCBFbXB0eUhvbGUgPT4gcFxuICAgIHwgQ2FzdChkMSwgdDEsIHQyKSA9PlxuICAgICAgbGV0IHAxID0gcmV3cmFwX2Nhc3RzKChwLCBkMSkpO1xuICAgICAge3Rlcm06IERIUGF0LkNhc3QocDEsIHQxLCB0MiksIGNvcGllZDogZC5jb3BpZWQsIGlkczogZC5pZHN9O1xuICAgIHwgRmFpbGVkQ2FzdChkMSwgdDEsIHQyKSA9PlxuICAgICAgbGV0IHAxID0gcmV3cmFwX2Nhc3RzKChwLCBkMSkpO1xuICAgICAge1xuICAgICAgICB0ZXJtOlxuICAgICAgICAgIERIUGF0LkNhc3QoXG4gICAgICAgICAgICBESFBhdC5DYXN0KHAxLCB0MSwgVHlwLmZyZXNoKFVua25vd24oSW50ZXJuYWwpKSkgfD4gREhQYXQuZnJlc2gsXG4gICAgICAgICAgICBUeXAuZnJlc2goVW5rbm93bihJbnRlcm5hbCkpLFxuICAgICAgICAgICAgdDIsXG4gICAgICAgICAgKSxcbiAgICAgICAgY29waWVkOiBkLmNvcGllZCxcbiAgICAgICAgaWRzOiBkLmlkcyxcbiAgICAgIH07XG4gICAgfCBfID0+IGZhaWx3aXRoKFwidW5leHBlY3RlZCB0ZXJtIGluIHJld3JhcF9jYXN0c1wiKVxuICAgIH07XG4gIH07XG4gIHAgfD4gdW53cmFwX2Nhc3RzIHw+IHJld3JhcF9jYXN0cztcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgRXZhbHVhdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgc2hvd19jYXNlX2NsYXVzZXM6IGJvb2wsXG4gICAgc2hvd19mbl9ib2RpZXM6IGJvb2wsXG4gICAgc2hvd19maXhwb2ludHM6IGJvb2wsXG4gICAgc2hvd19jYXN0czogYm9vbCxcbiAgICBzaG93X2xvb2t1cF9zdGVwczogYm9vbCxcbiAgICBzaG93X3N0ZXBwZXJfZmlsdGVyczogYm9vbCxcbiAgICAvLyBUT0RPW01hdHRdOiBNb3ZlIHRoaXMgdG8gc29tZXdoZXJlIHdoZXJlIGl0IGlzIGEgcGVyLXNjcmF0Y2ggc2V0dGluZ1xuICAgIHN0ZXBwZXJfaGlzdG9yeTogYm9vbCxcbiAgICBzaG93X3NldHRpbmdzOiBib29sLFxuICAgIHNob3dfaGlkZGVuX3N0ZXBzOiBib29sLFxuICB9O1xuXG4gIGxldCBpbml0ID0ge1xuICAgIHNob3dfY2FzZV9jbGF1c2VzOiB0cnVlLFxuICAgIHNob3dfZm5fYm9kaWVzOiBmYWxzZSxcbiAgICBzaG93X2ZpeHBvaW50czogZmFsc2UsXG4gICAgc2hvd19jYXN0czogZmFsc2UsXG4gICAgc2hvd19sb29rdXBfc3RlcHM6IGZhbHNlLFxuICAgIHNob3dfc3RlcHBlcl9maWx0ZXJzOiBmYWxzZSxcbiAgICBzdGVwcGVyX2hpc3Rvcnk6IGZhbHNlLFxuICAgIHNob3dfc2V0dGluZ3M6IGZhbHNlLFxuICAgIHNob3dfaGlkZGVuX3N0ZXBzOiBmYWxzZSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3RhdGljczogYm9vbCxcbiAgZWxhYm9yYXRlOiBib29sLFxuICBhc3Npc3Q6IGJvb2wsXG4gIGR5bmFtaWNzOiBib29sLFxuICBldmFsdWF0aW9uOiBFdmFsdWF0aW9uLnQsXG59O1xuXG5sZXQgb2ZmOiB0ID0ge1xuICBzdGF0aWNzOiBmYWxzZSxcbiAgZWxhYm9yYXRlOiBmYWxzZSxcbiAgYXNzaXN0OiBmYWxzZSxcbiAgZHluYW1pY3M6IGZhbHNlLFxuICBldmFsdWF0aW9uOiBFdmFsdWF0aW9uLmluaXQsXG59O1xuXG5sZXQgb246IHQgPSB7XG4gIHN0YXRpY3M6IHRydWUsXG4gIGVsYWJvcmF0ZTogdHJ1ZSxcbiAgYXNzaXN0OiB0cnVlLFxuICBkeW5hbWljczogdHJ1ZSxcbiAgZXZhbHVhdGlvbjogRXZhbHVhdGlvbi5pbml0LFxufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdGVybSA9XG4gIHwgQ2xvc3VyZShbQHNob3cub3BhcXVlXSBDbG9zdXJlRW52aXJvbm1lbnQudCwgdClcbiAgfCBGaWx0ZXIoVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQudCwgdClcbiAgfCBTZXExKHQsIERIRXhwLnQpXG4gIHwgU2VxMihESEV4cC50LCB0KVxuICB8IExldDEoUGF0LnQsIHQsIERIRXhwLnQpXG4gIHwgTGV0MihQYXQudCwgREhFeHAudCwgdClcbiAgfCBGdW4oUGF0LnQsIHQsIG9wdGlvbihDbG9zdXJlRW52aXJvbm1lbnQudCksIG9wdGlvbihWYXIudCkpXG4gIHwgRml4RihQYXQudCwgdCwgb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSlcbiAgfCBUeXBBcCh0LCBUeXAudClcbiAgfCBBcDEoT3BlcmF0b3JzLmFwX2RpcmVjdGlvbiwgdCwgREhFeHAudClcbiAgfCBBcDIoT3BlcmF0b3JzLmFwX2RpcmVjdGlvbiwgREhFeHAudCwgdClcbiAgfCBEZWZlcnJlZEFwMSh0LCBsaXN0KERIRXhwLnQpKVxuICB8IERlZmVycmVkQXAyKERIRXhwLnQsIHQsIChsaXN0KERIRXhwLnQpLCBsaXN0KERIRXhwLnQpKSlcbiAgfCBJZjEodCwgREhFeHAudCwgREhFeHAudClcbiAgfCBJZjIoREhFeHAudCwgdCwgREhFeHAudClcbiAgfCBJZjMoREhFeHAudCwgREhFeHAudCwgdClcbiAgfCBVbk9wKE9wZXJhdG9ycy5vcF91biwgdClcbiAgfCBCaW5PcDEoT3BlcmF0b3JzLm9wX2JpbiwgdCwgREhFeHAudClcbiAgfCBCaW5PcDIoT3BlcmF0b3JzLm9wX2JpbiwgREhFeHAudCwgdClcbiAgfCBUdXBsZSh0LCAobGlzdChESEV4cC50KSwgbGlzdChESEV4cC50KSkpXG4gIHwgVGVzdCh0KVxuICB8IExpc3RMaXQodCwgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpKVxuICB8IE11bHRpSG9sZSh0LCAobGlzdChBbnkudCksIGxpc3QoQW55LnQpKSlcbiAgfCBDb25zMSh0LCBESEV4cC50KVxuICB8IENvbnMyKERIRXhwLnQsIHQpXG4gIHwgTGlzdENvbmNhdDEodCwgREhFeHAudClcbiAgfCBMaXN0Q29uY2F0MihESEV4cC50LCB0KVxuICB8IENhc3QodCwgVHlwLnQsIFR5cC50KVxuICB8IEZhaWxlZENhc3QodCwgVHlwLnQsIFR5cC50KVxuICB8IER5bmFtaWNFcnJvckhvbGUodCwgSW52YWxpZE9wZXJhdGlvbkVycm9yLnQpXG4gIHwgTWF0Y2hTY3J1dCh0LCBsaXN0KChVUGF0LnQsIERIRXhwLnQpKSlcbiAgfCBNYXRjaFJ1bGUoXG4gICAgICBESEV4cC50LFxuICAgICAgVVBhdC50LFxuICAgICAgdCxcbiAgICAgIChsaXN0KChVUGF0LnQsIERIRXhwLnQpKSwgbGlzdCgoVVBhdC50LCBESEV4cC50KSkpLFxuICAgIClcbmFuZCB0ID1cbiAgfCBNYXJrXG4gIHwgVGVybSh7XG4gICAgICB0ZXJtLFxuICAgICAgaWRzOiBsaXN0KElkLnQpLFxuICAgIH0pO1xuXG5sZXQgcmVjIGNvbXBvc2UgPSAoY3R4OiB0LCBkOiBESEV4cC50KTogREhFeHAudCA9PiB7XG4gIHN3aXRjaCAoY3R4KSB7XG4gIHwgTWFyayA9PiBkXG4gIHwgVGVybSh7dGVybSwgaWRzfSkgPT5cbiAgICBsZXQgd3JhcCA9IERIRXhwLm1rKGlkcyk7XG4gICAgREhFeHAuKFxuICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICB8IENsb3N1cmUoZW52LCBjdHgpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBDbG9zdXJlKGVudiwgZCkgfD4gd3JhcDtcbiAgICAgIHwgRmlsdGVyKGZsdCwgY3R4KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgRmlsdGVyKGZsdCwgZCkgfD4gd3JhcDtcbiAgICAgIHwgU2VxMShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIFNlcShkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IFNlcTIoZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBTZXEoZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBBcDEoZGlyLCBjdHgsIGQyKSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEFwKGRpciwgZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBBcDIoZGlyLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEFwKGRpciwgZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBEZWZlcnJlZEFwMShjdHgsIGQycykgPT5cbiAgICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBEZWZlcnJlZEFwKGQxLCBkMnMpIHw+IHdyYXA7XG4gICAgICB8IERlZmVycmVkQXAyKGQxLCBjdHgsIChsZCwgcmQpKSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIERlZmVycmVkQXAoZDEsIExpc3RVdGlsLnJldl9jb25jYXQobGQsIFtkMiwgLi4ucmRdKSkgfD4gd3JhcDtcbiAgICAgIHwgSWYxKGN0eCwgZDIsIGQzKSA9PlxuICAgICAgICBsZXQgZCcgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIElmKGQnLCBkMiwgZDMpIHw+IHdyYXA7XG4gICAgICB8IElmMihkMSwgY3R4LCBkMykgPT5cbiAgICAgICAgbGV0IGQnID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBJZihkMSwgZCcsIGQzKSB8PiB3cmFwO1xuICAgICAgfCBJZjMoZDEsIGQyLCBjdHgpID0+XG4gICAgICAgIGxldCBkJyA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgSWYoZDEsIGQyLCBkJykgfD4gd3JhcDtcbiAgICAgIHwgVGVzdChjdHgpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgVGVzdChkMSkgfD4gd3JhcDtcbiAgICAgIHwgVW5PcChvcCwgY3R4KSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIFVuT3Aob3AsIGQxKSB8PiB3cmFwO1xuICAgICAgfCBCaW5PcDEob3AsIGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgQmluT3Aob3AsIGQxLCBkMikgfD4gd3JhcDtcbiAgICAgIHwgQmluT3AyKG9wLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEJpbk9wKG9wLCBkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IENvbnMxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgQ29ucyhkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IENvbnMyKGQxLCBjdHgpID0+XG4gICAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgQ29ucyhkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IExpc3RDb25jYXQxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGlzdENvbmNhdChkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IExpc3RDb25jYXQyKGQxLCBjdHgpID0+XG4gICAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGlzdENvbmNhdChkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IFR1cGxlKGN0eCwgKGxkLCByZCkpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBUdXBsZShMaXN0VXRpbC5yZXZfY29uY2F0KGxkLCBbZCwgLi4ucmRdKSkgfD4gd3JhcDtcbiAgICAgIHwgTGlzdExpdChjdHgsIChsZCwgcmQpKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGlzdExpdChMaXN0VXRpbC5yZXZfY29uY2F0KGxkLCBbZCwgLi4ucmRdKSkgfD4gd3JhcDtcbiAgICAgIHwgTXVsdGlIb2xlKGN0eCwgKGxkLCByZCkpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBNdWx0aUhvbGUoTGlzdFV0aWwucmV2X2NvbmNhdChsZCwgW1Rlcm1CYXNlLkFueS5FeHAoZCksIC4uLnJkXSkpXG4gICAgICAgIHw+IHdyYXA7XG4gICAgICB8IExldDEoZHAsIGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBMZXQoZHAsIGQsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBMZXQyKGRwLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGV0KGRwLCBkMSwgZCkgfD4gd3JhcDtcbiAgICAgIHwgRnVuKGRwLCBjdHgsIGVudiwgdikgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEZ1bihkcCwgZCwgZW52LCB2KSB8PiB3cmFwO1xuICAgICAgfCBGaXhGKHYsIGN0eCwgZW52KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgRml4Rih2LCBkLCBlbnYpIHw+IHdyYXA7XG4gICAgICB8IENhc3QoY3R4LCB0eTEsIHR5MikgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIENhc3QoZCwgdHkxLCB0eTIpIHw+IHdyYXA7XG4gICAgICB8IEZhaWxlZENhc3QoY3R4LCB0eTEsIHR5MikgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEZhaWxlZENhc3QoZCwgdHkxLCB0eTIpIHw+IHdyYXA7XG4gICAgICB8IER5bmFtaWNFcnJvckhvbGUoY3R4LCBlcnIpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBEeW5hbWljRXJyb3JIb2xlKGQsIGVycikgfD4gd3JhcDtcbiAgICAgIHwgTWF0Y2hTY3J1dChjdHgsIHJ1bGVzKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTWF0Y2goZCwgcnVsZXMpIHw+IHdyYXA7XG4gICAgICB8IE1hdGNoUnVsZShzY3IsIHAsIGN0eCwgKGxyLCBycikpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBNYXRjaChzY3IsIExpc3RVdGlsLnJldl9jb25jYXQobHIsIFsocCwgZCksIC4uLnJyXSkpIHw+IHdyYXA7XG4gICAgICB8IFR5cEFwKGN0eCwgdHkpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBUeXBBcChkLCB0eSkgfD4gd3JhcDtcbiAgICAgIH1cbiAgICApO1xuICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcblxuLyogV2hhdCBpcyB1bmJveGluZz9cblxuICAgV2hlbiB5b3UgaGF2ZSBhbiBleHByZXNzaW9uIG9mIHR5cGUgbGlzdCwgYW5kIGl0J3MgZmluaXNoZWQgZXZhbHVhdGluZyxcbiAgIGlzIGl0IGEgbGlzdD8gU2FkbHkgbm90IG5lY2Vzc2FyaWx5LCBpdCBtaWdodCBiZTpcblxuICAgIC0gaW5kZXRlcm1pbmF0ZSwgZS5nLiBpdCBoYXMgYSBob2xlIGluIGl0XG4gICAgLSBhIGxpc3Qgd2l0aCBzb21lIGNhc3RzIHdyYXBwZWQgYXJvdW5kIGl0XG5cbiAgICBVbmJveGluZyBpcyB0aGUgcHJvY2VzcyBvZiB0dXJuaW5nIGEgbGlzdCBpbnRvIGEgbGlzdCBpZiBpdCBpcyBhIGxpc3QsXG4gICAgYnkgcHVzaGluZyBjYXN0cyBpbnNpZGUgZGF0YSBzdHJ1Y3R1cmVzLCBvciBnaXZpbmcgdXAgaWYgaXQgaXMgbm90IGEgbGlzdC5cblxuICAgIE5vdGUgdW5ib3hpbmcgb25seSB3b3JrcyBvbmUgbGF5ZXIgZGVlcCwgaWYgd2UgaGF2ZSBhIGxpc3Qgb2YgbGlzdHMgdGhlblxuICAgIHRoZSBpbm5lciBsaXN0cyBtYXkgc3RpbGwgaGF2ZSBjYXN0cyBhcm91bmQgdGhlbSBhZnRlciB1bmJveGluZy5cbiAgICAqL1xuXG50eXBlIHVuYm94X3JlcXVlc3QoJ2EpID1cbiAgfCBJbnQ6IHVuYm94X3JlcXVlc3QoaW50KVxuICB8IEZsb2F0OiB1bmJveF9yZXF1ZXN0KGZsb2F0KVxuICB8IEJvb2w6IHVuYm94X3JlcXVlc3QoYm9vbClcbiAgfCBTdHJpbmc6IHVuYm94X3JlcXVlc3Qoc3RyaW5nKVxuICB8IFR1cGxlKGludCk6IHVuYm94X3JlcXVlc3QobGlzdChESEV4cC50KSlcbiAgfCBMaXN0OiB1bmJveF9yZXF1ZXN0KGxpc3QoREhFeHAudCkpXG4gIHwgQ29uczogdW5ib3hfcmVxdWVzdCgoREhFeHAudCwgREhFeHAudCkpXG4gIHwgU3VtTm9Bcmcoc3RyaW5nKTogdW5ib3hfcmVxdWVzdCh1bml0KVxuICB8IFN1bVdpdGhBcmcoc3RyaW5nKTogdW5ib3hfcmVxdWVzdChESEV4cC50KTtcblxudHlwZSB1bmJveGVkKCdhKSA9XG4gIHwgRG9lc05vdE1hdGNoXG4gIHwgSW5kZXRNYXRjaFxuICB8IE1hdGNoZXMoJ2EpO1xuXG5sZXQgKCBsZXQqICkgPSAoeDogdW5ib3hlZCgnYSksIGY6ICdhID0+IHVuYm94ZWQoJ2IpKTogdW5ib3hlZCgnYikgPT5cbiAgc3dpdGNoICh4KSB7XG4gIHwgSW5kZXRNYXRjaCA9PiBJbmRldE1hdGNoXG4gIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICB8IE1hdGNoZXMoeCkgPT4gZih4KVxuICB9O1xuXG5sZXQgZml4dXBfY2FzdCA9IENhc3RzLnRyYW5zaXRpb25fbXVsdGlwbGU7XG5cbi8qIFRoaXMgZnVuY3Rpb24gaGFzIGEgZGlmZmVyZW50IHJldHVybiB0eXBlIGRlcGVuZGluZyBvbiB3aGF0IGtpbmQgb2YgcmVxdWVzdFxuICAgaXQgaXMgZ2l2ZW4uIFRoaXMgdW5mb3J0dW5hdGVseSB1c2VzIGEgY3JhenkgT0NhbWwgZmVhdHVyZSBjYWxsZWQgR0FEVFMsIGJ1dFxuICAgaXQgYXZvaWRzIGhhdmluZyB0byB3cml0ZSBhIHNlcGFyYXRlIHVuYm94IGZ1bmN0aW9uIGZvciBlYWNoIGtpbmQgb2YgcmVxdWVzdC5cbiAgICovXG5cbmxldCByZWMgdW5ib3g6IHR5cGUgYS4gKHVuYm94X3JlcXVlc3QoYSksIERIRXhwLnQpID0+IHVuYm94ZWQoYSkgPVxuICAocmVxdWVzdCwgZXhwcikgPT4ge1xuICAgIHN3aXRjaCAocmVxdWVzdCwgREhFeHAudGVybV9vZihleHByKSkge1xuICAgIC8qIFJlbW92ZSBwYXJlbnRoZXNlcyBmcm9tIGNhc3RzICovXG4gICAgfCAoXywgQ2FzdChkLCB7dGVybTogUGFyZW5zKHgpLCBffSwgeSkpXG4gICAgfCAoXywgQ2FzdChkLCB4LCB7dGVybTogUGFyZW5zKHkpLCBffSkpID0+XG4gICAgICB1bmJveChyZXF1ZXN0LCBDYXN0KGQsIHgsIHkpIHw+IERIRXhwLmZyZXNoKVxuXG4gICAgLyogQmFzZSB0eXBlcyBhcmUgYWx3YXlzIGFscmVhZHkgdW5ib3hlZCBiZWNhdXNlIG9mIHRoZSBJVENhc3RJRCBydWxlKi9cbiAgICB8IChCb29sLCBCb29sKGIpKSA9PiBNYXRjaGVzKGIpXG4gICAgfCAoSW50LCBJbnQoaSkpID0+IE1hdGNoZXMoaSlcbiAgICB8IChGbG9hdCwgRmxvYXQoZikpID0+IE1hdGNoZXMoZilcbiAgICB8IChTdHJpbmcsIFN0cmluZyhzKSkgPT4gTWF0Y2hlcyhzKVxuXG4gICAgLyogTGlzdHMgY2FuIGJlIGVpdGhlciBsaXN0cyBvciBsaXN0IGNhc3RzICovXG4gICAgfCAoTGlzdCwgTGlzdExpdChsKSkgPT4gTWF0Y2hlcyhsKVxuICAgIHwgKENvbnMsIExpc3RMaXQoW3gsIC4uLnhzXSkpID0+XG4gICAgICBNYXRjaGVzKCh4LCBMaXN0TGl0KHhzKSB8PiBESEV4cC5mcmVzaCkpXG4gICAgfCAoQ29ucywgTGlzdExpdChbXSkpID0+IERvZXNOb3RNYXRjaFxuICAgIHwgKExpc3QsIENhc3QobCwge3Rlcm06IExpc3QodDEpLCBffSwge3Rlcm06IExpc3QodDIpLCBffSkpID0+XG4gICAgICBsZXQqIGwgPSB1bmJveChMaXN0LCBsKTtcbiAgICAgIGxldCBsID0gTGlzdC5tYXAoZCA9PiBDYXN0KGQsIHQxLCB0MikgfD4gREhFeHAuZnJlc2gsIGwpO1xuICAgICAgbGV0IGwgPSBMaXN0Lm1hcChmaXh1cF9jYXN0LCBsKTtcbiAgICAgIE1hdGNoZXMobCk7XG4gICAgfCAoXG4gICAgICAgIENvbnMsXG4gICAgICAgIENhc3QobCwge3Rlcm06IExpc3QodDEpLCBffSBhcyBjdDEsIHt0ZXJtOiBMaXN0KHQyKSwgX30gYXMgY3QyKSxcbiAgICAgICkgPT5cbiAgICAgIGxldCogbCA9IHVuYm94KExpc3QsIGwpO1xuICAgICAgc3dpdGNoIChsKSB7XG4gICAgICB8IFtdID0+IERvZXNOb3RNYXRjaFxuICAgICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICAgIE1hdGNoZXMoKFxuICAgICAgICAgIENhc3QoeCwgdDEsIHQyKSB8PiBESEV4cC5mcmVzaCB8PiBmaXh1cF9jYXN0LFxuICAgICAgICAgIENhc3QoTGlzdExpdCh4cykgfD4gREhFeHAuZnJlc2gsIGN0MSwgY3QyKSB8PiBESEV4cC5mcmVzaCxcbiAgICAgICAgKSlcbiAgICAgIH07XG5cbiAgICAvKiBUdXBsZXMgY2FuIGJlIGVpdGhlciB0dXBsZXMgb3IgdHVwbGUgY2FzdHMgKi9cbiAgICB8IChUdXBsZShuKSwgVHVwbGUodCkpIHdoZW4gTGlzdC5sZW5ndGgodCkgPT0gbiA9PiBNYXRjaGVzKHQpXG4gICAgfCAoVHVwbGUoXyksIFR1cGxlKF8pKSA9PiBEb2VzTm90TWF0Y2hcbiAgICB8IChUdXBsZShuKSwgQ2FzdCh0LCB7dGVybTogUHJvZCh0MXMpLCBffSwge3Rlcm06IFByb2QodDJzKSwgX30pKVxuICAgICAgICB3aGVuIG4gPT0gTGlzdC5sZW5ndGgodDFzKSAmJiBuID09IExpc3QubGVuZ3RoKHQycykgPT5cbiAgICAgIGxldCogdCA9IHVuYm94KFR1cGxlKG4pLCB0KTtcbiAgICAgIGxldCB0ID1cbiAgICAgICAgTGlzdFV0aWwubWFwMyhcbiAgICAgICAgICAoZCwgdDEsIHQyKSA9PiBDYXN0KGQsIHQxLCB0MikgfD4gREhFeHAuZnJlc2gsXG4gICAgICAgICAgdCxcbiAgICAgICAgICB0MXMsXG4gICAgICAgICAgdDJzLFxuICAgICAgICApO1xuICAgICAgbGV0IHQgPSBMaXN0Lm1hcChmaXh1cF9jYXN0LCB0KTtcbiAgICAgIE1hdGNoZXModCk7XG5cbiAgICAvKiBTdW0gY29uc3RydWN0b3JzIGNhbiBiZSBlaXRoZXIgc3VtIGNvbnN0cnVjdG9ycywgc3VtIGNvbnN0cnVjdG9yc1xuICAgICAgIGFwcGxpZWQgdG8gc29tZSB2YWx1ZSBvciBzdW0gY2FzdHMgKi9cbiAgICB8IChTdW1Ob0FyZyhuYW1lMSksIENvbnN0cnVjdG9yKG5hbWUyKSkgd2hlbiBuYW1lMSA9PSBuYW1lMiA9PiBNYXRjaGVzKClcbiAgICB8IChTdW1Ob0FyZyhfKSwgQ29uc3RydWN0b3IoXykpID0+IERvZXNOb3RNYXRjaFxuICAgIHwgKFN1bU5vQXJnKF8pLCBBcChfLCB7dGVybTogQ29uc3RydWN0b3IoXyksIF99LCBfKSkgPT4gRG9lc05vdE1hdGNoXG4gICAgfCAoU3VtTm9BcmcobmFtZSksIENhc3QoZDEsIHt0ZXJtOiBTdW0oXyksIF99LCB7dGVybTogU3VtKHMyKSwgX30pKVxuICAgICAgICB3aGVuXG4gICAgICAgICAgQ29uc3RydWN0b3JNYXAuaGFzX2NvbnN0cnVjdG9yX25vX2FyZ3MobmFtZSwgczIpXG4gICAgICAgICAgfHwgQ29uc3RydWN0b3JNYXAuaGFzX2JhZF9lbnRyeShzMikgPT5cbiAgICAgIGxldCogZDEgPSB1bmJveChTdW1Ob0FyZyhuYW1lKSwgZDEpO1xuICAgICAgTWF0Y2hlcyhkMSk7XG4gICAgfCAoU3VtTm9BcmcoXyksIENhc3QoXywge3Rlcm06IFN1bShfKSwgX30sIHt0ZXJtOiBTdW0oXyksIF99KSkgPT5cbiAgICAgIEluZGV0TWF0Y2hcblxuICAgIHwgKFN1bVdpdGhBcmcoXyksIENvbnN0cnVjdG9yKF8pKSA9PiBEb2VzTm90TWF0Y2hcbiAgICB8IChTdW1XaXRoQXJnKG5hbWUxKSwgQXAoXywge3Rlcm06IENvbnN0cnVjdG9yKG5hbWUyKSwgX30sIGQzKSlcbiAgICAgICAgd2hlbiBuYW1lMSA9PSBuYW1lMiA9PlxuICAgICAgTWF0Y2hlcyhkMylcbiAgICB8IChTdW1XaXRoQXJnKF8pLCBBcChfLCB7dGVybTogQ29uc3RydWN0b3IoXyksIF99LCBfKSkgPT4gRG9lc05vdE1hdGNoXG4gICAgfCAoU3VtV2l0aEFyZyhuYW1lKSwgQ2FzdChkMSwge3Rlcm06IFN1bShfKSwgX30sIHt0ZXJtOiBTdW0oczIpLCBffSkpXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBDb25zdHJ1Y3Rvck1hcC5nZXRfZW50cnkobmFtZSwgczIpICE9IE5vbmVcbiAgICAgICAgICB8fCBDb25zdHJ1Y3Rvck1hcC5oYXNfYmFkX2VudHJ5KHMyKSA9PlxuICAgICAgbGV0KiBkMSA9IHVuYm94KFN1bVdpdGhBcmcobmFtZSksIGQxKTtcbiAgICAgIE1hdGNoZXMoZDEgfD4gZml4dXBfY2FzdCk7XG4gICAgfCAoU3VtV2l0aEFyZyhfKSwgQ2FzdChfLCB7dGVybTogU3VtKF8pLCBffSwge3Rlcm06IFN1bShfKSwgX30pKSA9PlxuICAgICAgSW5kZXRNYXRjaFxuXG4gICAgLyogQW55IGNhc3QgZnJvbSB1bmtub3duIGlzIGluZGV0ICovXG4gICAgfCAoXywgQ2FzdChfLCB7dGVybTogVW5rbm93bihfKSwgX30sIF8pKSA9PiBJbmRldE1hdGNoXG5cbiAgICAvKiBGb3JtcyB0aGF0IGFyZSB0aGUgd3JvbmcgdHlwZSBvZiB2YWx1ZSAtIHRoZXNlIGNhc2VzIGluZGljYXRlIGFuIGVycm9yXG4gICAgICAgaW4gZWxhYm9yYXRpb24gb3IgaW4gdGhlIGNhc3QgY2FsY3VsdXMuICovXG4gICAgfCAoXG4gICAgICAgIF8sXG4gICAgICAgIEJvb2woXykgfCBJbnQoXykgfCBGbG9hdChfKSB8IFN0cmluZyhfKSB8IENvbnN0cnVjdG9yKF8pIHxcbiAgICAgICAgQnVpbHRpbkZ1bihfKSB8XG4gICAgICAgIERlZmVycmFsKF8pIHxcbiAgICAgICAgRGVmZXJyZWRBcChfKSB8XG4gICAgICAgIEZ1bihfLCBfLCBfLCBTb21lKF8pKSB8XG4gICAgICAgIExpc3RMaXQoXykgfFxuICAgICAgICBUdXBsZShfKSB8XG4gICAgICAgIENhc3QoXykgfFxuICAgICAgICBBcChfLCB7dGVybTogQ29uc3RydWN0b3IoXyksIF99LCBfKSB8XG4gICAgICAgIFR5cEZ1bihfKSB8XG4gICAgICAgIFR5cEFwKF8pLFxuICAgICAgKSA9PlxuICAgICAgc3dpdGNoIChyZXF1ZXN0KSB7XG4gICAgICB8IEJvb2wgPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEJvb2xMaXQoZXhwcikpKVxuICAgICAgfCBJbnQgPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEludExpdChleHByKSkpXG4gICAgICB8IEZsb2F0ID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRGbG9hdExpdChleHByKSkpXG4gICAgICB8IFN0cmluZyA9PlxuICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkU3RyaW5nTGl0KGV4cHIpKSlcbiAgICAgIHwgVHVwbGUoXykgPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR1cGxlKGV4cHIpKSlcbiAgICAgIHwgTGlzdFxuICAgICAgfCBDb25zID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRMaXN0TGl0KGV4cHIpKSlcbiAgICAgIHwgU3VtTm9BcmcoXylcbiAgICAgIHwgU3VtV2l0aEFyZyhfKSA9PlxuICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkU3VtQ29uc3RydWN0b3IoZXhwcikpKVxuICAgICAgfVxuXG4gICAgLyogRm9ybXMgdGhhdCBhcmUgbm90IHlldCBvciB3aWxsIG5ldmVyIGJlIGEgdmFsdWUgKi9cbiAgICB8IChcbiAgICAgICAgXyxcbiAgICAgICAgSW52YWxpZChfKSB8IEVtcHR5SG9sZSB8IE11bHRpSG9sZShfKSB8IER5bmFtaWNFcnJvckhvbGUoXykgfFxuICAgICAgICBGYWlsZWRDYXN0KF8pIHxcbiAgICAgICAgVmFyKF8pIHxcbiAgICAgICAgTGV0KF8pIHxcbiAgICAgICAgRnVuKF8sIF8sIF8sIE5vbmUpIHxcbiAgICAgICAgRml4RihfKSB8XG4gICAgICAgIFR5QWxpYXMoXykgfFxuICAgICAgICBBcChfKSB8XG4gICAgICAgIElmKF8pIHxcbiAgICAgICAgU2VxKF8pIHxcbiAgICAgICAgVGVzdChfKSB8XG4gICAgICAgIEZpbHRlcihfKSB8XG4gICAgICAgIENsb3N1cmUoXykgfFxuICAgICAgICBQYXJlbnMoXykgfFxuICAgICAgICBDb25zKF8pIHxcbiAgICAgICAgTGlzdENvbmNhdChfKSB8XG4gICAgICAgIFVuT3AoXykgfFxuICAgICAgICBCaW5PcChfKSB8XG4gICAgICAgIE1hdGNoKF8pLFxuICAgICAgKSA9PlxuICAgICAgSW5kZXRNYXRjaFxuICAgIH07XG4gIH07XG4iLCJ0eXBlIG1hdGNoX3Jlc3VsdCA9IFVuYm94aW5nLnVuYm94ZWQoRW52aXJvbm1lbnQudCk7XG5sZXQgKCBsZXQqICkgPSBVbmJveGluZy4oIGxldCogKTtcblxubGV0IGNvbWJpbmVfcmVzdWx0ID0gKHIxOiBtYXRjaF9yZXN1bHQsIHIyOiBtYXRjaF9yZXN1bHQpOiBtYXRjaF9yZXN1bHQgPT5cbiAgc3dpdGNoIChyMSwgcjIpIHtcbiAgfCAoRG9lc05vdE1hdGNoLCBfKVxuICB8IChfLCBEb2VzTm90TWF0Y2gpID0+IERvZXNOb3RNYXRjaFxuICB8IChJbmRldE1hdGNoLCBfKVxuICB8IChfLCBJbmRldE1hdGNoKSA9PiBJbmRldE1hdGNoXG4gIHwgKE1hdGNoZXMoZW52MSksIE1hdGNoZXMoZW52MikpID0+XG4gICAgTWF0Y2hlcyhFbnZpcm9ubWVudC51bmlvbihlbnYxLCBlbnYyKSlcbiAgfTtcblxubGV0IHJlYyBtYXRjaGVzID0gKGRwOiBQYXQudCwgZDogREhFeHAudCk6IG1hdGNoX3Jlc3VsdCA9PlxuICBzd2l0Y2ggKERIUGF0LnRlcm1fb2YoZHApKSB7XG4gIHwgSW52YWxpZChfKVxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZShfKVxuICB8IFdpbGQgPT4gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSlcbiAgfCBJbnQobikgPT5cbiAgICBsZXQqIG4nID0gVW5ib3hpbmcudW5ib3goSW50LCBkKTtcbiAgICBuID09IG4nID8gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkgOiBEb2VzTm90TWF0Y2g7XG4gIHwgRmxvYXQobikgPT5cbiAgICBsZXQqIG4nID0gVW5ib3hpbmcudW5ib3goRmxvYXQsIGQpO1xuICAgIG4gPT0gbicgPyBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSA6IERvZXNOb3RNYXRjaDtcbiAgfCBCb29sKGIpID0+XG4gICAgbGV0KiBiJyA9IFVuYm94aW5nLnVuYm94KEJvb2wsIGQpO1xuICAgIGIgPT0gYicgPyBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSA6IERvZXNOb3RNYXRjaDtcbiAgfCBTdHJpbmcocykgPT5cbiAgICBsZXQqIHMnID0gVW5ib3hpbmcudW5ib3goU3RyaW5nLCBkKTtcbiAgICBzID09IHMnID8gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkgOiBEb2VzTm90TWF0Y2g7XG4gIHwgTGlzdExpdCh4cykgPT5cbiAgICBsZXQqIHMnID0gVW5ib3hpbmcudW5ib3goTGlzdCwgZCk7XG4gICAgaWYgKExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aChzJykpIHtcbiAgICAgIExpc3QubWFwMihtYXRjaGVzLCB4cywgcycpXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChjb21iaW5lX3Jlc3VsdCwgTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBEb2VzTm90TWF0Y2g7XG4gICAgfTtcbiAgfCBDb25zKHgsIHhzKSA9PlxuICAgIGxldCogKHgnLCB4cycpID0gVW5ib3hpbmcudW5ib3goQ29ucywgZCk7XG4gICAgbGV0KiBtX3ggPSBtYXRjaGVzKHgsIHgnKTtcbiAgICBsZXQqIG1feHMgPSBtYXRjaGVzKHhzLCB4cycpO1xuICAgIE1hdGNoZXMoRW52aXJvbm1lbnQudW5pb24obV94LCBtX3hzKSk7XG4gIHwgQ29uc3RydWN0b3IoY3RyKSA9PlxuICAgIGxldCogKCkgPSBVbmJveGluZy51bmJveChTdW1Ob0FyZyhjdHIpLCBkKTtcbiAgICBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KTtcbiAgfCBBcCh7dGVybTogQ29uc3RydWN0b3IoY3RyKSwgX30sIHAyKSA9PlxuICAgIGxldCogZDIgPSBVbmJveGluZy51bmJveChTdW1XaXRoQXJnKGN0ciksIGQpO1xuICAgIG1hdGNoZXMocDIsIGQyKTtcbiAgfCBBcChfLCBfKSA9PiBJbmRldE1hdGNoIC8vIFRPRE86IHNob3VsZCB0aGlzIGZhaWw/XG4gIHwgVmFyKHgpID0+IE1hdGNoZXMoRW52aXJvbm1lbnQuc2luZ2xldG9uKCh4LCBkKSkpXG4gIHwgVHVwbGUocHMpID0+XG4gICAgbGV0KiBkcyA9IFVuYm94aW5nLnVuYm94KFR1cGxlKExpc3QubGVuZ3RoKHBzKSksIGQpO1xuICAgIExpc3QubWFwMihtYXRjaGVzLCBwcywgZHMpXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoY29tYmluZV9yZXN1bHQsIE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpKTtcbiAgfCBQYXJlbnMocCkgPT4gbWF0Y2hlcyhwLCBkKVxuICB8IENhc3QocCwgdDEsIHQyKSA9PlxuICAgIG1hdGNoZXMocCwgQ2FzdChkLCB0MiwgdDEpIHw+IERIRXhwLmZyZXNoIHw+IENhc3RzLnRyYW5zaXRpb25fbXVsdGlwbGUpXG4gIH07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IFBhc3NcbiAgfCBGYWlsXG4gIHwgSW5kZXQ7XG5cbmxldCB0b19zdHJpbmc6IHQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgUGFzcyA9PiBcIlBhc3NcIlxuICB8IEZhaWwgPT4gXCJGYWlsXCJcbiAgfCBJbmRldCA9PiBcIkluZGV0XCI7XG5cbmxldCBqb2luOiAodCwgdCkgPT4gdCA9XG4gIChhLCBiKSA9PlxuICAgIHN3aXRjaCAoYSwgYikge1xuICAgIHwgKEZhaWwsIF8pID0+IEZhaWxcbiAgICB8IChJbmRldCwgRmFpbCkgPT4gRmFpbFxuICAgIHwgKEluZGV0LCBfKSA9PiBJbmRldFxuICAgIHwgKFBhc3MsIHgpID0+IHhcbiAgICB9O1xuXG5sZXQgam9pbl9hbGw6IGxpc3QodCkgPT4gdCA9IExpc3QuZm9sZF9sZWZ0KGpvaW4sIFBhc3MpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyogRklYTUU6IE1ha2UgbW9yZSBvYnZpb3VzIG5hbWVzLiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBpbnN0YW5jZV9yZXBvcnQgPSAoREhFeHAudCwgVGVzdFN0YXR1cy50KTtcblxubGV0IGpvaW50X3N0YXR1czogbGlzdChpbnN0YW5jZV9yZXBvcnQpID0+IFRlc3RTdGF0dXMudCA9XG4gIHJlcG9ydHMgPT4gVGVzdFN0YXR1cy5qb2luX2FsbChMaXN0Lm1hcCgoKF8sIHgpKSA9PiB4LCByZXBvcnRzKSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcmVwb3J0ID0gKElkLnQsIGxpc3QoaW5zdGFuY2VfcmVwb3J0KSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QocmVwb3J0KTtcbmxldCBlbXB0eTogdCA9IFtdO1xuXG5sZXQgbG9va3VwID0gTGlzdC5hc3NvY19vcHQ7XG5cbmxldCBsb29rdXBfYW5kX2pvaW4gPSAobiwgdGVzdF9tYXApID0+XG4gIHN3aXRjaCAobG9va3VwKG4sIHRlc3RfbWFwKSkge1xuICB8IE5vbmUgPT4gVGVzdFN0YXR1cy5JbmRldFxuICB8IFNvbWUocmVwb3J0cykgPT4gam9pbnRfc3RhdHVzKHJlcG9ydHMpXG4gIH07XG5cbmxldCBleHRlbmQgPSAoKGlkLCByZXBvcnQpLCB0ZXN0X21hcCkgPT4ge1xuICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KGlkLCB0ZXN0X21hcCkpIHtcbiAgfCBTb21lKGEpID0+IExpc3QucmVtb3ZlX2Fzc29jKGlkLCB0ZXN0X21hcCkgQCBbKGlkLCBhIEAgW3JlcG9ydF0pXVxuICB8IE5vbmUgPT4gdGVzdF9tYXAgQCBbKGlkLCBbcmVwb3J0XSldXG4gIH07XG59O1xuXG5sZXQgY291bnQgPSBMaXN0Lmxlbmd0aDtcblxubGV0IGNvdW50X3N0YXR1cyA9IChzdGF0dXMsIHRlc3RfbWFwKSA9PlxuICBMaXN0LmZpbHRlcihcbiAgICAoKF8sIGluc3RhbmNlcykpID0+IHN0YXR1cyA9PSBqb2ludF9zdGF0dXMoaW5zdGFuY2VzKSxcbiAgICB0ZXN0X21hcCxcbiAgKVxuICB8PiBMaXN0Lmxlbmd0aDtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFBhdHRlcm5NYXRjaDtcblxuLyogVHJhbnNpdGlvbi5yZVxuXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBldmFsdWF0aW9uIHNlbWFudGljcyBvZiBIYXplbCBpbiB0ZXJtcyBvZiBzbWFsbCBzdGVwXG4gICBldmFsdWF0aW9uLiBUaGVzZSBzbWFsbCBzdGVwcyBhcmUgd3JhcHBlZCB1cCBpbnRvIGEgYmlnIHN0ZXAgaW4gRXZhbHVhdG9yLnJlLlxuXG4gICBJJ2xsIHVzZSB0aGUgU2VxIGNhc2UgYXMgYW4gZXhhbXBsZTpcblxuICAgIHwgU2VxKGQxLCBkMikgPT5cbiAgICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGQxID0+IFNlcShkMSwgZDIpKVxuICAgICAgICBhbmQuIF8gPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCAwLCBkMSk7XG4gICAgICAgIFN0ZXAoe2V4cHI6IGQyLCBzdGF0ZSwga2luZDogU2VxLCBmaW5hbDogZmFsc2V9KTtcblxuXG4gICAgRWFjaCBzdGVwIHNlbWFudGljcyBzdGFydHMgd2l0aCBhIGBsZXQuICgpID0gb3RoZXJ3aXNlKC4uLilgIHRoYXQgZGVmaW5lcyBob3dcbiAgICB0byB3cmFwIHRoZSBleHByZXNzaW9uIGJhY2sgdXAgaWYgdGhlIHN0ZXAgY291bGRuJ3QgYmUgZXZhbHVhdGVkLlxuXG4gICAgVGhpcyBpcyBmb2xsb3dlZCBieSBhIHNlcmllcyBvZiBgYW5kLiBkMScgPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCA8aT4sIDxkMT4pYFxuICAgIHdoaWNoIGluZGljYXRlIHRoYXQgaW4gb3JkZXIgdG8gZXZhbHVhdGUgdGhlIHN0ZXAsIDxkMT4gbXVzdCBiZSBmaW5hbC4gKHJlcV92YWx1ZVxuICAgIGlzIGFsc28gYXZhaWxhYmxlIGlmIGl0IG5lZWRzIHRvIGJlIGEgdmFsdWUpLiBOb3RlIHRoYXQgaWYgc3VjY2Vzc2Z1bCwgZDEnIHdpbGxcbiAgICBiZSB0aGUgZnVsbHktZXZhbHVhdGVkIHZlcnNpb24gb2YgZDEuIFRoZSBzdWItZXhwcmVzc2lvbnMgYXJlIGFsbCBlbnVtZXJhdGVkIGJ5XG4gICAgdGhlIDxpPiBmaWVsZCwgc28gaT0wIGluZGljYXRlcyB0aGF0IGl0IGlzIHRoZSBmaXJzdCBzdWItZXhwcmVzc2lvbiwgaT0xIHRoZVxuICAgIHNlY29uZCBldGMuXG5cbiAgICBGaW5hbGx5LCB3ZSBoYXZlIHRoZSBTdGVwIGNvbnN0cnVjdCB0aGF0IGRlZmluZXMgdGhlIGFjdHVhbCBzdGVwLiBOb3RlIFwiU3RlcFwic1xuICAgIHNob3VsZCBiZSB1c2VkIGlmIGFuZCBvbmx5IGlmIHRoZXkgY2hhbmdlIHRoZSBleHByZXNzaW9uLiBJZiB0aGV5IGRvIG5vdCBjaGFuZ2VcbiAgICB0aGUgZXhwcmVzc2lvbiwgdXNlIGBDb25zdHJ1Y3RvcmAgb3IgYEluZGV0YC5cblxuICAgIFRoZSBzdGVwIGRlZmluZXMgZmlyc3RseSwgYSBgKCkgPT4gLi4uYCBmdW5jdGlvbiBnaXZpbmcgdGhlIHJlc3VsdCBvZiB0aGUgc3RlcCxcbiAgICBzZWNvbmRseSBhIGBraW5kYCwgdGhhdCBkZXNjcmliZXMgdGhlIHN0ZXAgKHdoaWNoIHdpbGwgYmUgdXNlZCBpbiB0aGUgc3RlcHBlcilcblxuICAgIExhc3RseSwgdGhlIGB2YWx1ZWAgZmllbGQgYWxsb3dzIGZvciBzb21lIHNwZWVkaW5nIHVwIG9mIHRoZSBldmFsdWF0b3IuIElmIHlvdVxuICAgIGFyZSB1bnN1cmUsIGl0IGlzIGFsd2F5cyBzYWZlIHRvIHB1dCBgaXNfdmFsdWU6IGZhbHNlYC5cblxuICAgIGBpc192YWx1ZTogdHJ1ZWAgZ3VhcmFudGVlczpcbiAgICAgIC0gaWYgYWxsIHJlcXVpcmVtZW50cyBhcmUgdmFsdWVzLCB0aGVuIHRoZSBvdXRwdXQgd2lsbCBiZSBhIHZhbHVlXG4gICAgICAtIGlmIHNvbWUgcmVxdWlyZW1lbnRzIGFyZSBpbmRldCwgdGhlbiB0aGUgb3V0cHV0IHdpbGwgYmUgaW5kZXRcblxuICAgIEEgdmFsdWUgaXMgZWl0aGVyIGEgbGl0ZXJhbCwgb3IgYSBmdW5jdGlvbiB3aXRoIGEgY2xvc3VyZSwgb3IgYSB0eXBlIGZ1bmN0aW9uLlxuICAgIChmdW5jdGlvbnMgd2l0aG91dCBjbG9zdXJlcyBpbW1lZGlhdGVseSBpbnNpZGUgdGhlbSBkbyBub3QgY291bnQgYXMgdmFsdWVzKS5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcF9raW5kID1cbiAgfCBJbnZhbGlkU3RlcFxuICB8IFZhckxvb2t1cFxuICB8IFNlcVxuICB8IExldEJpbmRcbiAgfCBGdW5DbG9zdXJlXG4gIHwgRml4VW53cmFwXG4gIHwgRml4Q2xvc3VyZVxuICB8IFVwZGF0ZVRlc3RcbiAgfCBUeXBGdW5BcFxuICB8IEZ1bkFwXG4gIHwgRGVmZXJyZWRBcFxuICB8IENhc3RUeXBBcFxuICB8IENhc3RBcFxuICB8IEJ1aWx0aW5XcmFwXG4gIHwgQnVpbHRpbkFwKHN0cmluZylcbiAgfCBVbk9wKE9wZXJhdG9ycy5vcF91bilcbiAgfCBCaW5Cb29sT3AoT3BlcmF0b3JzLm9wX2Jpbl9ib29sKVxuICB8IEJpbkludE9wKE9wZXJhdG9ycy5vcF9iaW5faW50KVxuICB8IEJpbkZsb2F0T3AoT3BlcmF0b3JzLm9wX2Jpbl9mbG9hdClcbiAgfCBCaW5TdHJpbmdPcChPcGVyYXRvcnMub3BfYmluX3N0cmluZylcbiAgfCBDb25kaXRpb25hbChib29sKVxuICB8IFByb2plY3Rpb25cbiAgfCBMaXN0Q29uc1xuICB8IExpc3RDb25jYXRcbiAgfCBDYXNlQXBwbHlcbiAgfCBDb21wbGV0ZUNsb3N1cmVcbiAgfCBDb21wbGV0ZUZpbHRlclxuICB8IENhc3RcbiAgfCBSZW1vdmVUeXBlQWxpYXNcbiAgfCBSZW1vdmVQYXJlbnM7XG5sZXQgZXZhbHVhdGVfZXh0ZW5kX2VudiA9XG4gICAgKG5ld19iaW5kaW5nczogRW52aXJvbm1lbnQudCwgdG9fZXh0ZW5kOiBDbG9zdXJlRW52aXJvbm1lbnQudClcbiAgICA6IENsb3N1cmVFbnZpcm9ubWVudC50ID0+IHtcbiAgdG9fZXh0ZW5kXG4gIHw+IENsb3N1cmVFbnZpcm9ubWVudC5tYXBfb2ZcbiAgfD4gRW52aXJvbm1lbnQudW5pb24obmV3X2JpbmRpbmdzKVxuICB8PiBDbG9zdXJlRW52aXJvbm1lbnQub2ZfZW52aXJvbm1lbnQ7XG59O1xuXG50eXBlIHJ1bGUgPVxuICB8IFN0ZXAoe1xuICAgICAgZXhwcjogREhFeHAudCxcbiAgICAgIHN0YXRlX3VwZGF0ZTogdW5pdCA9PiB1bml0LFxuICAgICAga2luZDogc3RlcF9raW5kLFxuICAgICAgaXNfdmFsdWU6IGJvb2wsXG4gICAgfSlcbiAgfCBDb25zdHJ1Y3RvclxuICB8IEluZGV0O1xuXG5sZXQgKGxldC11bmJveCkgPSAoKHJlcXVlc3QsIHYpLCBmKSA9PlxuICBzd2l0Y2ggKFVuYm94aW5nLnVuYm94KHJlcXVlc3QsIHYpKSB7XG4gIHwgSW5kZXRNYXRjaFxuICB8IERvZXNOb3RNYXRjaCA9PiBJbmRldFxuICB8IE1hdGNoZXMobikgPT4gZihuKVxuICB9O1xuXG5tb2R1bGUgdHlwZSBFVl9NT0RFID0ge1xuICB0eXBlIHN0YXRlO1xuICB0eXBlIHJlc3VsdDtcbiAgdHlwZSByZXF1aXJlbWVudCgnYSk7XG4gIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYik7XG5cbiAgbGV0IHJlcV92YWx1ZTpcbiAgICAoREhFeHAudCA9PiByZXN1bHQsIEV2YWxDdHgudCA9PiBFdmFsQ3R4LnQsIERIRXhwLnQpID0+XG4gICAgcmVxdWlyZW1lbnQoREhFeHAudCk7XG4gIGxldCByZXFfYWxsX3ZhbHVlOlxuICAgIChcbiAgICAgIERIRXhwLnQgPT4gcmVzdWx0LFxuICAgICAgKEV2YWxDdHgudCwgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpKSA9PiBFdmFsQ3R4LnQsXG4gICAgICBsaXN0KERIRXhwLnQpXG4gICAgKSA9PlxuICAgIHJlcXVpcmVtZW50KGxpc3QoREhFeHAudCkpO1xuICBsZXQgcmVxX2ZpbmFsOlxuICAgIChESEV4cC50ID0+IHJlc3VsdCwgRXZhbEN0eC50ID0+IEV2YWxDdHgudCwgREhFeHAudCkgPT5cbiAgICByZXF1aXJlbWVudChESEV4cC50KTtcbiAgbGV0IHJlcV9hbGxfZmluYWw6XG4gICAgKFxuICAgICAgREhFeHAudCA9PiByZXN1bHQsXG4gICAgICAoRXZhbEN0eC50LCAobGlzdChESEV4cC50KSwgbGlzdChESEV4cC50KSkpID0+IEV2YWxDdHgudCxcbiAgICAgIGxpc3QoREhFeHAudClcbiAgICApID0+XG4gICAgcmVxdWlyZW1lbnQobGlzdChESEV4cC50KSk7XG4gIGxldCByZXFfZmluYWxfb3JfdmFsdWU6XG4gICAgKERIRXhwLnQgPT4gcmVzdWx0LCBFdmFsQ3R4LnQgPT4gRXZhbEN0eC50LCBESEV4cC50KSA9PlxuICAgIHJlcXVpcmVtZW50KChESEV4cC50LCBib29sKSk7XG5cbiAgbGV0IChsZXQuKTogKHJlcXVpcmVtZW50cygnYSwgREhFeHAudCksICdhID0+IHJ1bGUpID0+IHJlc3VsdDtcbiAgbGV0IChhbmQuKTpcbiAgICAocmVxdWlyZW1lbnRzKCdhLCAnYyA9PiAnYiksIHJlcXVpcmVtZW50KCdjKSkgPT5cbiAgICByZXF1aXJlbWVudHMoKCdhLCAnYyksICdiKTtcbiAgbGV0IG90aGVyd2lzZTogKENsb3N1cmVFbnZpcm9ubWVudC50LCAnYSkgPT4gcmVxdWlyZW1lbnRzKHVuaXQsICdhKTtcblxuICBsZXQgdXBkYXRlX3Rlc3Q6IChzdGF0ZSwgSWQudCwgVGVzdE1hcC5pbnN0YW5jZV9yZXBvcnQpID0+IHVuaXQ7XG59O1xuXG5tb2R1bGUgVHJhbnNpdGlvbiA9IChFVjogRVZfTU9ERSkgPT4ge1xuICBvcGVuIEVWO1xuICBvcGVuIERIRXhwO1xuXG4gIC8vIERlZmF1bHQgc3RhdGUgdXBkYXRlXG4gIGxldCBzdGF0ZV91cGRhdGUgPSAoKSA9PiAoKTtcblxuICBsZXQgKGxldC5tYXRjaCkgPSAoKGVudiwgbWF0Y2hfcmVzdWx0OiBQYXR0ZXJuTWF0Y2gubWF0Y2hfcmVzdWx0KSwgcikgPT5cbiAgICBzd2l0Y2ggKG1hdGNoX3Jlc3VsdCkge1xuICAgIHwgSW5kZXRNYXRjaFxuICAgIHwgRG9lc05vdE1hdGNoID0+IEluZGV0XG4gICAgfCBNYXRjaGVzKGVudicpID0+IHIoZXZhbHVhdGVfZXh0ZW5kX2VudihlbnYnLCBlbnYpKVxuICAgIH07XG5cbiAgLyogTm90ZVtNYXR0XTogRm9yIElEcywgSSdtIGN1cnJlbnRseSB1c2luZyBhIGZyZXNoIGlkXG4gICAgIGlmIGFueXRoaW5nIGFib3V0IHRoZSBjdXJyZW50IG5vZGUgY2hhbmdlcywgaWYgb25seSBpdHNcbiAgICAgY2hpbGRyZW4gY2hhbmdlLCB3ZSB1c2UgcmV3cmFwICovXG5cbiAgbGV0IHRyYW5zaXRpb24gPSAocmVxLCBzdGF0ZSwgZW52LCBkKTogJ2EgPT4ge1xuICAgIC8vIFNwbGl0IERIRXhwIGludG8gdGVybSBhbmQgaWQgaW5mb3JtYXRpb25cbiAgICBsZXQgKHRlcm0sIHJld3JhcCkgPSBESEV4cC51bndyYXAoZCk7XG4gICAgbGV0IHdyYXBfY3R4ID0gKHRlcm0pOiBFdmFsQ3R4LnQgPT4gVGVybSh7dGVybSwgaWRzOiBbcmVwX2lkKGQpXX0pO1xuXG4gICAgLy8gVHJhbnNpdGlvbiBydWxlc1xuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgVmFyKHgpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBWYXIoeCkgfD4gcmV3cmFwKTtcbiAgICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpKSB7XG4gICAgICB8IFNvbWUoZCkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogZCB8PiBmYXN0X2NvcHkoSWQubWsoKSksXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IFZhckxvb2t1cCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB8IE5vbmUgPT4gSW5kZXRcbiAgICAgIH07XG4gICAgfCBTZXEoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gU2VxKGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBfID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gU2VxMShkMSwgZDIpIHw+IHdyYXBfY3R4LCBkMSk7XG4gICAgICBTdGVwKHtleHByOiBkMiwgc3RhdGVfdXBkYXRlLCBraW5kOiBTZXEsIGlzX3ZhbHVlOiBmYWxzZX0pO1xuICAgIHwgTGV0KGRwLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBMZXQoZHAsIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBMZXQxKGRwLCBkMSwgZDIpIHw+IHdyYXBfY3R4LCBkMSk7XG4gICAgICBsZXQubWF0Y2ggZW52JyA9IChlbnYsIG1hdGNoZXMoZHAsIGQxJykpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IENsb3N1cmUoZW52JywgZDIpIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IExldEJpbmQsXG4gICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIHwgVHlwRnVuKF8pXG4gICAgfCBGdW4oXywgXywgU29tZShfKSwgXykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgQ29uc3RydWN0b3I7XG4gICAgfCBGdW4ocCwgZDEsIE5vbmUsIHYpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBGdW4ocCwgZDEsIFNvbWUoZW52KSwgdikgfD4gcmV3cmFwLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEZ1bkNsb3N1cmUsXG4gICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBGaXhGKGRwLCBkMSwgTm9uZSkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIEZpeEYoZHAsIGQxLCBOb25lKSB8PiByZXdyYXApO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IEZpeEYoZHAsIGQxLCBTb21lKGVudikpIHw+IHJld3JhcCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBGaXhDbG9zdXJlLFxuICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IEZpeEYoZHAsIGQxLCBTb21lKGVudikpID0+XG4gICAgICBzd2l0Y2ggKERIUGF0LmdldF92YXIoZHApKSB7XG4gICAgICAvLyBTaW1wbGUgUmVjdXJzaW9uIGNhc2VcbiAgICAgIHwgU29tZShmKSA9PlxuICAgICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgICAgbGV0IGVudicnID1cbiAgICAgICAgICBldmFsdWF0ZV9leHRlbmRfZW52KFxuICAgICAgICAgICAgRW52aXJvbm1lbnQuc2luZ2xldG9uKChmLCBGaXhGKGRwLCBkMSwgU29tZShlbnYpKSB8PiByZXdyYXApKSxcbiAgICAgICAgICAgIGVudixcbiAgICAgICAgICApO1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOiBDbG9zdXJlKGVudicnLCBkMSkgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEZpeFVud3JhcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgLy8gTXV0dWFsIFJlY3Vyc2lvbiBjYXNlXG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICAgIGxldCBiaW5kaW5ncyA9IERIUGF0LmJvdW5kX3ZhcnMoZHApO1xuICAgICAgICBsZXQgc3Vic3RpdHV0aW9ucyA9XG4gICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICBiaW5kaW5nID0+XG4gICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBiaW5kaW5nLFxuICAgICAgICAgICAgICAgIExldChcbiAgICAgICAgICAgICAgICAgIGRwLFxuICAgICAgICAgICAgICAgICAgRml4RihkcCwgZDEsIFNvbWUoZW52KSkgfD4gcmV3cmFwLFxuICAgICAgICAgICAgICAgICAgVmFyKGJpbmRpbmcpIHw+IGZyZXNoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB8PiBmcmVzaCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJpbmRpbmdzLFxuICAgICAgICAgICk7XG4gICAgICAgIGxldCBlbnYnJyA9XG4gICAgICAgICAgZXZhbHVhdGVfZXh0ZW5kX2VudihFbnZpcm9ubWVudC5vZl9saXN0KHN1YnN0aXR1dGlvbnMpLCBlbnYpO1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOiBDbG9zdXJlKGVudicnLCBkMSkgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEZpeFVud3JhcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIHwgVGVzdChkKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKChkLCBfKSkgPT4gVGVzdChkKSB8PiByZXdyYXApXG4gICAgICBhbmQuIChkJywgaXNfdmFsdWUpID1cbiAgICAgICAgcmVxX2ZpbmFsX29yX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZCA9PiBUZXN0KGQpIHw+IHdyYXBfY3R4LCBkKTtcbiAgICAgIGxldCByZXN1bHQ6IFRlc3RTdGF0dXMudCA9XG4gICAgICAgIGlmIChpc192YWx1ZSkge1xuICAgICAgICAgIHN3aXRjaCAoVW5ib3hpbmcudW5ib3goQm9vbCwgZCcpKSB7XG4gICAgICAgICAgfCBEb2VzTm90TWF0Y2hcbiAgICAgICAgICB8IEluZGV0TWF0Y2ggPT4gSW5kZXRcbiAgICAgICAgICB8IE1hdGNoZXMoYikgPT4gYiA/IFBhc3MgOiBGYWlsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBJbmRldDtcbiAgICAgICAgfTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBUdXBsZShbXSkgfD4gZnJlc2gsXG4gICAgICAgIHN0YXRlX3VwZGF0ZTogKCkgPT5cbiAgICAgICAgICB1cGRhdGVfdGVzdChzdGF0ZSwgREhFeHAucmVwX2lkKGQpLCAoZCcsIHJlc3VsdCkpLFxuICAgICAgICBraW5kOiBVcGRhdGVUZXN0LFxuICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgVHlwQXAoZCwgdGF1KSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCA9PiBUeXBBcChkLCB0YXUpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZCcgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkID0+IFR5cEFwKGQsIHRhdSkgfD4gd3JhcF9jdHgsIGQpO1xuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQnKSkge1xuICAgICAgfCBUeXBGdW4odXRwYXQsIHRmYm9keSwgbmFtZSkgPT5cbiAgICAgICAgLyogUnVsZSBJVFRMYW0gKi9cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjpcbiAgICAgICAgICAgIERIRXhwLmFzc2lnbl9uYW1lX2lmX25vbmUoXG4gICAgICAgICAgICAgIC8qIEluaGVyaXQgbmFtZSBmb3IgdXNlciBjbGFyaXR5ICovXG4gICAgICAgICAgICAgIERIRXhwLnR5X3N1YnN0KHRhdSwgdXRwYXQsIHRmYm9keSksXG4gICAgICAgICAgICAgIE9wdGlvbi5tYXAoXG4gICAgICAgICAgICAgICAgeCA9PiB4ICsrIFwiQDxcIiArKyBUeXAucHJldHR5X3ByaW50KHRhdSkgKysgXCI+XCIsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IFR5cEZ1bkFwLFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIHwgQ2FzdChcbiAgICAgICAgICBkJycsXG4gICAgICAgICAge3Rlcm06IEZvcmFsbCh0cDEsIF8pLCBffSBhcyB0MSxcbiAgICAgICAgICB7dGVybTogRm9yYWxsKHRwMiwgXyksIF99IGFzIHQyLFxuICAgICAgICApID0+XG4gICAgICAgIC8qIFJ1bGUgSVRUQXBDYXN0ICovXG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6XG4gICAgICAgICAgICBDYXN0KFxuICAgICAgICAgICAgICBUeXBBcChkJycsIHRhdSkgfD4gRXhwLmZyZXNoLFxuICAgICAgICAgICAgICBUeXAuc3Vic3QodGF1LCB0cDEsIHQxKSxcbiAgICAgICAgICAgICAgVHlwLnN1YnN0KHRhdSwgdHAyLCB0MiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICB8PiBFeHAuZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IENhc3RUeXBBcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR5cEZ1bihkJykpKVxuICAgICAgfTtcbiAgICB8IERlZmVycmVkQXAoZDEsIGRzKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkcykgPT4gRGVmZXJyZWRBcChkMSwgZHMpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gRGVmZXJyZWRBcDEoZDEsIGRzKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBfID1cbiAgICAgICAgcmVxX2FsbF9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgKGQyLCBkcykgPT4gRGVmZXJyZWRBcDIoZDEsIGQyLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZHMsXG4gICAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IEFwKGRpciwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCAoZDIsIF8pKSA9PiBBcChkaXIsIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBBcDEoZGlyLCBkMSwgZDIpIHw+IHdyYXBfY3R4LCBkMSlcbiAgICAgIGFuZC4gKGQyJywgZDJfaXNfdmFsdWUpID1cbiAgICAgICAgcmVxX2ZpbmFsX29yX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMiA9PiBBcDIoZGlyLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQyLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQxJykpIHtcbiAgICAgIHwgQ29uc3RydWN0b3IoXykgPT4gQ29uc3RydWN0b3JcbiAgICAgIHwgRnVuKGRwLCBkMywgU29tZShlbnYnKSwgXykgPT5cbiAgICAgICAgbGV0Lm1hdGNoIGVudicnID0gKGVudicsIG1hdGNoZXMoZHAsIGQyJykpO1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOiBDbG9zdXJlKGVudicnLCBkMykgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEZ1bkFwLFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB8IENhc3QoXG4gICAgICAgICAgZDMnLFxuICAgICAgICAgIHt0ZXJtOiBBcnJvdyh0eTEsIHR5MiksIF99LFxuICAgICAgICAgIHt0ZXJtOiBBcnJvdyh0eTEnLCB0eTInKSwgX30sXG4gICAgICAgICkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjpcbiAgICAgICAgICAgIENhc3QoXG4gICAgICAgICAgICAgIEFwKGRpciwgZDMnLCBDYXN0KGQyJywgdHkxJywgdHkxKSB8PiBmcmVzaCkgfD4gZnJlc2gsXG4gICAgICAgICAgICAgIHR5MixcbiAgICAgICAgICAgICAgdHkyJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHw+IGZyZXNoLFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBDYXN0QXAsXG4gICAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgfCBCdWlsdGluRnVuKGlkZW50KSA9PlxuICAgICAgICBpZiAoZDJfaXNfdmFsdWUpIHtcbiAgICAgICAgICBTdGVwKHtcbiAgICAgICAgICAgIGV4cHI6IHtcbiAgICAgICAgICAgICAgbGV0IGJ1aWx0aW4gPVxuICAgICAgICAgICAgICAgIFZhck1hcC5sb29rdXAoQnVpbHRpbnMuZm9ybXNfaW5pdCwgaWRlbnQpXG4gICAgICAgICAgICAgICAgfD4gT3B0VXRpbC5nZXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgLyogVGhpcyBleGNlcHRpb24gc2hvdWxkIG5ldmVyIGJlIHJhaXNlZCBiZWNhdXNlIHRoZXJlIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICBubyB3YXkgZm9yIHRoZSB1c2VyIHRvIGNyZWF0ZSBhIEJ1aWx0aW5GdW4uIFRoZXkgYXJlIGFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWQgaW50byB0aGUgY29udGV4dCBiZWZvcmUgZXZhbHVhdGlvbi4gKi9cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlKFxuICAgICAgICAgICAgICAgICAgICAgICBFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJ1aWx0aW4oaWRlbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnVpbHRpbihkMik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgICAga2luZDogQnVpbHRpbkFwKGlkZW50KSxcbiAgICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSAvLyBOb3QgbmVjZXNzYXJpbHkgYSB2YWx1ZSBiZWNhdXNlIG9mIEludmFsaWRPcGVyYXRpb25zXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgSW5kZXQ7XG4gICAgICAgIH1cbiAgICAgIC8qIFRoaXMgY2FzZSBpc24ndCBjdXJyZW50bHkgdXNlZCBiZWNhdXNlIGRlZmVycmFscyBhcmUgZWxhYm9yYXRlZCBhd2F5ICovXG4gICAgICB8IERlZmVycmVkQXAoZDMsIGQ0cykgPT5cbiAgICAgICAgbGV0IG5fYXJncyA9XG4gICAgICAgICAgTGlzdC5sZW5ndGgoXG4gICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgZnVuXG4gICAgICAgICAgICAgIHwge3Rlcm06IERlZmVycmFsKF8pLCBffSA9PiB0cnVlXG4gICAgICAgICAgICAgIHwgXyA9PiBmYWxzZTogRXhwLnQgPT4gYm9vbCxcbiAgICAgICAgICAgICAgZDRzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICBsZXQtdW5ib3ggYXJncyA9IChUdXBsZShuX2FyZ3MpLCBkMik7XG4gICAgICAgIGxldCBuZXdfYXJncyA9IHtcbiAgICAgICAgICBsZXQgcmVjIGdvID0gKGRlZmVycmVkLCBhcmdzKSA9PlxuICAgICAgICAgICAgc3dpdGNoICgoZGVmZXJyZWQ6IGxpc3QoRXhwLnQpKSkge1xuICAgICAgICAgICAgfCBbXSA9PiBbXVxuICAgICAgICAgICAgfCBbe3Rlcm06IERlZmVycmFsKF8pLCBffSwgLi4uZGVmZXJyZWRdID0+XG4gICAgICAgICAgICAgIC8qIEkgY2FuIHVzZSBMaXN0LmhkIGFuZCBMaXN0LnRsIGhlcmUgYmVjYXVzZSBsZXQtdW5ib3ggZW5zdXJlIHRoYXRcbiAgICAgICAgICAgICAgICAgdGhlcmUgYXJlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmdzICovXG4gICAgICAgICAgICAgIFtMaXN0LmhkKGFyZ3MpLCAuLi5nbyhkZWZlcnJlZCwgTGlzdC50bChhcmdzKSldXG4gICAgICAgICAgICB8IFt4LCAuLi5kZWZlcnJlZF0gPT4gW3gsIC4uLmdvKGRlZmVycmVkLCBhcmdzKV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgZ28oZDRzLCBhcmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogQXAoRm9yd2FyZCwgZDMsIFR1cGxlKG5ld19hcmdzKSB8PiBmcmVzaCkgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IERlZmVycmVkQXAsXG4gICAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBGYWlsZWRDYXN0KF8pID0+IEluZGV0XG4gICAgICB8IEZpeEYoXykgPT5cbiAgICAgICAgcHJpbnRfZW5kbGluZShFeHAuc2hvdyhkMSkpO1xuICAgICAgICBwcmludF9lbmRsaW5lKEV4cC5zaG93KGQxJykpO1xuICAgICAgICBwcmludF9lbmRsaW5lKFwiRklYRlwiKTtcbiAgICAgICAgZmFpbHdpdGgoXCJGaXhGIGluIEFwXCIpO1xuICAgICAgfCBfID0+XG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6IHtcbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRGdW4oZDEnKSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEludmFsaWRTdGVwLFxuICAgICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB8IERlZmVycmFsKF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIEluZGV0O1xuICAgIHwgQm9vbChfKVxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQnVpbHRpbkZ1bihfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IElmKGMsIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGMgPT4gSWYoYywgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGMnID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgYyA9PiBJZjEoYywgZDEsIGQyKSB8PiB3cmFwX2N0eCwgYyk7XG4gICAgICBsZXQtdW5ib3ggYiA9IChCb29sLCBjJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjoge1xuICAgICAgICAgIGIgPyBkMSA6IGQyO1xuICAgICAgICB9LFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIC8vIEF0dGFjaCBjJyB0byBpbmRpY2F0ZSB3aGljaCBicmFuY2ggdGFrZW4uXG4gICAgICAgIGtpbmQ6IENvbmRpdGlvbmFsKGIpLFxuICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgXykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgSW5kZXQ7XG4gICAgfCBVbk9wKEludChNaW51cyksIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gVW5PcChJbnQoTWludXMpLCBkMSkgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGMgPT4gVW5PcChJbnQoTWludXMpLCBjKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKTtcbiAgICAgIGxldC11bmJveCBuID0gKEludCwgZDEnKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBJbnQoLSBuKSB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBVbk9wKEludChNaW51cykpLFxuICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgVW5PcChCb29sKE5vdCksIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gVW5PcChCb29sKE5vdCksIGQxKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgYyA9PiBVbk9wKEJvb2woTm90KSwgYykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDEsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggYiA9IChCb29sLCBkMScpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IEJvb2woIWIpIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IFVuT3AoQm9vbChOb3QpKSxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IEJpbk9wKEJvb2woQW5kKSwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gQmluT3AoQm9vbChBbmQpLCBkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBCaW5PcDEoQm9vbChBbmQpLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IGIxID0gKEJvb2wsIGQxJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjogYjEgPyBkMiA6IEJvb2woZmFsc2UpIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEJpbkJvb2xPcChBbmQpLFxuICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IEJpbk9wKEJvb2woT3IpLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBCaW5PcChCb29sKE9yKSwgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gQmluT3AxKEJvb2woT3IpLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IGIxID0gKEJvb2wsIGQxJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjogYjEgPyBCb29sKHRydWUpIHw+IGZyZXNoIDogZDIsXG4gICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAga2luZDogQmluQm9vbE9wKE9yKSxcbiAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBCaW5PcChJbnQob3ApLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCAoZDEsIGQyKSA9PiBCaW5PcChJbnQob3ApLCBkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBCaW5PcDEoSW50KG9wKSwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQyID0+IEJpbk9wMihJbnQob3ApLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQyLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IG4xID0gKEludCwgZDEnKTtcbiAgICAgIGxldC11bmJveCBuMiA9IChJbnQsIGQyJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjpcbiAgICAgICAgICAoXG4gICAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICB8IFBsdXMgPT4gSW50KG4xICsgbjIpXG4gICAgICAgICAgICB8IE1pbnVzID0+IEludChuMSAtIG4yKVxuICAgICAgICAgICAgfCBQb3dlciB3aGVuIG4yIDwgMCA9PlxuICAgICAgICAgICAgICBEeW5hbWljRXJyb3JIb2xlKFxuICAgICAgICAgICAgICAgIEJpbk9wKEludChvcCksIGQxJywgZDInKSB8PiByZXdyYXAsXG4gICAgICAgICAgICAgICAgTmVnYXRpdmVFeHBvbmVudCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBQb3dlciA9PiBJbnQoSW50VXRpbC5pcG93KG4xLCBuMikpXG4gICAgICAgICAgICB8IFRpbWVzID0+IEludChuMSAqIG4yKVxuICAgICAgICAgICAgfCBEaXZpZGUgd2hlbiBuMiA9PSAwID0+XG4gICAgICAgICAgICAgIER5bmFtaWNFcnJvckhvbGUoXG4gICAgICAgICAgICAgICAgQmluT3AoSW50KG9wKSwgZDEnLCBkMScpIHw+IHJld3JhcCxcbiAgICAgICAgICAgICAgICBEaXZpZGVCeVplcm8sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgRGl2aWRlID0+IEludChuMSAvIG4yKVxuICAgICAgICAgICAgfCBMZXNzVGhhbiA9PiBCb29sKG4xIDwgbjIpXG4gICAgICAgICAgICB8IExlc3NUaGFuT3JFcXVhbCA9PiBCb29sKG4xIDw9IG4yKVxuICAgICAgICAgICAgfCBHcmVhdGVyVGhhbiA9PiBCb29sKG4xID4gbjIpXG4gICAgICAgICAgICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBCb29sKG4xID49IG4yKVxuICAgICAgICAgICAgfCBFcXVhbHMgPT4gQm9vbChuMSA9PSBuMilcbiAgICAgICAgICAgIHwgTm90RXF1YWxzID0+IEJvb2wobjEgIT0gbjIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEJpbkludE9wKG9wKSxcbiAgICAgICAgLy8gRmFsc2Ugc28gdGhhdCBJbnZhbGlkT3BlcmF0aW9ucyBhcmUgY2F1Z2h0IGFuZCBtYWRlIGluZGV0IGJ5IHRoZSBuZXh0IHN0ZXBcbiAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBCaW5PcChGbG9hdChvcCksIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9XG4gICAgICAgIG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IEJpbk9wKEZsb2F0KG9wKSwgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gQmluT3AxKEZsb2F0KG9wKSwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQyID0+IEJpbk9wMihGbG9hdChvcCksIGQxLCBkMikgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDIsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggbjEgPSAoRmxvYXQsIGQxJyk7XG4gICAgICBsZXQtdW5ib3ggbjIgPSAoRmxvYXQsIGQyJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjpcbiAgICAgICAgICAoXG4gICAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICB8IFBsdXMgPT4gRmxvYXQobjEgKy4gbjIpXG4gICAgICAgICAgICB8IE1pbnVzID0+IEZsb2F0KG4xIC0uIG4yKVxuICAgICAgICAgICAgfCBQb3dlciA9PiBGbG9hdChuMSAqKiBuMilcbiAgICAgICAgICAgIHwgVGltZXMgPT4gRmxvYXQobjEgKi4gbjIpXG4gICAgICAgICAgICB8IERpdmlkZSA9PiBGbG9hdChuMSAvLiBuMilcbiAgICAgICAgICAgIHwgTGVzc1RoYW4gPT4gQm9vbChuMSA8IG4yKVxuICAgICAgICAgICAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gQm9vbChuMSA8PSBuMilcbiAgICAgICAgICAgIHwgR3JlYXRlclRoYW4gPT4gQm9vbChuMSA+IG4yKVxuICAgICAgICAgICAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gQm9vbChuMSA+PSBuMilcbiAgICAgICAgICAgIHwgRXF1YWxzID0+IEJvb2wobjEgPT0gbjIpXG4gICAgICAgICAgICB8IE5vdEVxdWFscyA9PiBCb29sKG4xICE9IG4yKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBCaW5GbG9hdE9wKG9wKSxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IEJpbk9wKFN0cmluZyhvcCksIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9XG4gICAgICAgIG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IEJpbk9wKFN0cmluZyhvcCksIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQxID0+IEJpbk9wMShTdHJpbmcob3ApLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDIgPT4gQmluT3AyKFN0cmluZyhvcCksIGQxLCBkMikgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDIsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggczEgPSAoU3RyaW5nLCBkMScpO1xuICAgICAgbGV0LXVuYm94IHMyID0gKFN0cmluZywgZDInKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOlxuICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICB8IENvbmNhdCA9PiBTdHJpbmcoczEgKysgczIpIHw+IGZyZXNoXG4gICAgICAgICAgfCBFcXVhbHMgPT4gQm9vbChzMSA9PSBzMikgfD4gZnJlc2hcbiAgICAgICAgICB9LFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEJpblN0cmluZ09wKG9wKSxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IFR1cGxlKGRzKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZHMgPT4gVHVwbGUoZHMpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9hbGxfZmluYWwoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIChkMSwgZHMpID0+IFR1cGxlKGQxLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZHMsXG4gICAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IENvbnMoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gQ29ucyhkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gQ29uczEoZDEsIGQyKSB8PiB3cmFwX2N0eCwgZDEpXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQyID0+IENvbnMyKGQxLCBkMikgfD4gd3JhcF9jdHgsIGQyKTtcbiAgICAgIGxldC11bmJveCBkcyA9IChMaXN0LCBkMicpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IExpc3RMaXQoW2QxJywgLi4uZHNdKSB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBMaXN0Q29ucyxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IExpc3RDb25jYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gTGlzdENvbmNhdChkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBMaXN0Q29uY2F0MShkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDIgPT4gTGlzdENvbmNhdDIoZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMixcbiAgICAgICAgKTtcbiAgICAgIGxldC11bmJveCBkczEgPSAoTGlzdCwgZDEnKTtcbiAgICAgIGxldC11bmJveCBkczIgPSAoTGlzdCwgZDInKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBMaXN0TGl0KGRzMSBAIGRzMikgfD4gZnJlc2gsXG4gICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAga2luZDogTGlzdENvbmNhdCxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IExpc3RMaXQoZHMpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkcyA9PiBMaXN0TGl0KGRzKSB8PiByZXdyYXApXG4gICAgICBhbmQuIF8gPVxuICAgICAgICByZXFfYWxsX2ZpbmFsKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICAoZDEsIGRzKSA9PiBMaXN0TGl0KGQxLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZHMsXG4gICAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IE1hdGNoKGQxLCBydWxlcykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IE1hdGNoKGQxLCBydWxlcykgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMSA9XG4gICAgICAgIHJlcV9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gTWF0Y2hTY3J1dChkMSwgcnVsZXMpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgbGV0IHJlYyBuZXh0X3J1bGUgPSAoXG4gICAgICAgIGZ1blxuICAgICAgICB8IFtdID0+IE5vbmVcbiAgICAgICAgfCBbKGRwLCBkMiksIC4uLnJ1bGVzXSA9PlxuICAgICAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcCwgZDEpKSB7XG4gICAgICAgICAgfCBNYXRjaGVzKGVudicpID0+IFNvbWUoKGVudicsIGQyKSlcbiAgICAgICAgICB8IERvZXNOb3RNYXRjaCA9PiBuZXh0X3J1bGUocnVsZXMpXG4gICAgICAgICAgfCBJbmRldE1hdGNoID0+IE5vbmVcbiAgICAgICAgICB9XG4gICAgICApO1xuICAgICAgc3dpdGNoIChuZXh0X3J1bGUocnVsZXMpKSB7XG4gICAgICB8IFNvbWUoKGVudicsIGQyKSkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogQ2xvc3VyZShldmFsdWF0ZV9leHRlbmRfZW52KGVudicsIGVudiksIGQyKSB8PiBmcmVzaCxcbiAgICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgICAga2luZDogQ2FzZUFwcGx5LFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIHwgTm9uZSA9PiBJbmRldFxuICAgICAgfTtcbiAgICB8IENsb3N1cmUoZW52JywgZCkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQgPT4gQ2xvc3VyZShlbnYnLCBkKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQnID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52JyksIGQxID0+IENsb3N1cmUoZW52JywgZDEpIHw+IHdyYXBfY3R4LCBkKTtcbiAgICAgIFN0ZXAoe2V4cHI6IGQnLCBzdGF0ZV91cGRhdGUsIGtpbmQ6IENvbXBsZXRlQ2xvc3VyZSwgaXNfdmFsdWU6IHRydWV9KTtcbiAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICAvLyBhbmQuIF8gPVxuICAgICAgLy8gICByZXFfYWxsX2ZpbmFsKFxuICAgICAgLy8gICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgIC8vICAgICAoZDEsIGRzKSA9PiBNdWx0aUhvbGUoZDEsIGRzKSB8PiB3cmFwX2N0eCxcbiAgICAgIC8vICAgICBkcyxcbiAgICAgIC8vICAgKTtcbiAgICAgIEluZGV0O1xuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIEluZGV0O1xuICAgIHwgQ2FzdChkLCB0MSwgdDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkID0+IENhc3QoZCwgdDEsIHQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQnID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZCA9PiBDYXN0KGQsIHQxLCB0MikgfD4gd3JhcF9jdHgsIGQpO1xuICAgICAgc3dpdGNoIChDYXN0cy50cmFuc2l0aW9uKENhc3QoZCcsIHQxLCB0MikgfD4gcmV3cmFwKSkge1xuICAgICAgfCBTb21lKGQpID0+IFN0ZXAoe2V4cHI6IGQsIHN0YXRlX3VwZGF0ZSwga2luZDogQ2FzdCwgaXNfdmFsdWU6IGZhbHNlfSlcbiAgICAgIHwgTm9uZSA9PiBDb25zdHJ1Y3RvclxuICAgICAgfTtcbiAgICB8IEZhaWxlZENhc3QoZDEsIHQxLCB0MikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IEZhaWxlZENhc3QoZDEsIHQxLCB0MikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBfID1cbiAgICAgICAgcmVxX2ZpbmFsKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBGYWlsZWRDYXN0KGQxLCB0MSwgdDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgSW5kZXQ7XG4gICAgfCBQYXJlbnMoZCkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgU3RlcCh7ZXhwcjogZCwgc3RhdGVfdXBkYXRlLCBraW5kOiBSZW1vdmVQYXJlbnMsIGlzX3ZhbHVlOiBmYWxzZX0pO1xuICAgIHwgVHlBbGlhcyhfLCBfLCBkKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBTdGVwKHtleHByOiBkLCBzdGF0ZV91cGRhdGUsIGtpbmQ6IFJlbW92ZVR5cGVBbGlhcywgaXNfdmFsdWU6IGZhbHNlfSk7XG4gICAgfCBGaWx0ZXIoZjEsIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gRmlsdGVyKGYxLCBkMSkgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMSA9XG4gICAgICAgIHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQxID0+IEZpbHRlcihmMSwgZDEpIHw+IHdyYXBfY3R4LCBkMSk7XG4gICAgICBTdGVwKHtleHByOiBkMSwgc3RhdGVfdXBkYXRlLCBraW5kOiBDb21wbGV0ZUZpbHRlciwgaXNfdmFsdWU6IHRydWV9KTtcbiAgICB9O1xuICB9O1xufTtcblxubGV0IHNob3VsZF9oaWRlX3N0ZXAgPSAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MuRXZhbHVhdGlvbi50KSA9PlxuICBmdW5cbiAgfCBMZXRCaW5kXG4gIHwgU2VxXG4gIHwgVXBkYXRlVGVzdFxuICB8IFR5cEZ1bkFwXG4gIHwgRnVuQXBcbiAgfCBEZWZlcnJlZEFwXG4gIHwgQnVpbHRpbkFwKF8pXG4gIHwgQmluQm9vbE9wKF8pXG4gIHwgQmluSW50T3AoXylcbiAgfCBCaW5GbG9hdE9wKF8pXG4gIHwgQmluU3RyaW5nT3AoXylcbiAgfCBVbk9wKF8pXG4gIHwgTGlzdENvbnNcbiAgfCBMaXN0Q29uY2F0XG4gIHwgQ2FzZUFwcGx5XG4gIHwgUHJvamVjdGlvbiAvLyBUT0RPKE1hdHQpOiBXZSBkb24ndCB3YW50IHRvIHNob3cgcHJvamVjdGlvbiB0byB0aGUgdXNlclxuICB8IENvbmRpdGlvbmFsKF8pXG4gIHwgUmVtb3ZlVHlwZUFsaWFzXG4gIHwgSW52YWxpZFN0ZXAgPT4gZmFsc2VcbiAgfCBWYXJMb29rdXAgPT4gIXNldHRpbmdzLnNob3dfbG9va3VwX3N0ZXBzXG4gIHwgQ2FzdFR5cEFwXG4gIHwgQ2FzdEFwXG4gIHwgQ2FzdCA9PiAhc2V0dGluZ3Muc2hvd19jYXN0c1xuICB8IEZpeFVud3JhcCA9PiAhc2V0dGluZ3Muc2hvd19maXhwb2ludHNcbiAgfCBDb21wbGV0ZUNsb3N1cmVcbiAgfCBDb21wbGV0ZUZpbHRlclxuICB8IEJ1aWx0aW5XcmFwXG4gIHwgRnVuQ2xvc3VyZVxuICB8IEZpeENsb3N1cmVcbiAgfCBSZW1vdmVQYXJlbnMgPT4gdHJ1ZTtcbiIsIm9wZW4gREhFeHA7XG5vcGVuIFRyYW5zaXRpb247XG5cbnR5cGUgdCA9XG4gIHwgVmFsdWVcbiAgfCBJbmRldFxuICB8IEV4cHI7XG5cbm1vZHVsZSBWYWx1ZUNoZWNrZXJFVk1vZGU6IHtcbiAgaW5jbHVkZSBFVl9NT0RFIHdpdGggdHlwZSByZXN1bHQgPSB0IGFuZCB0eXBlIHN0YXRlID0gdW5pdDtcbn0gPSB7XG4gIHR5cGUgc3RhdGUgPSB1bml0O1xuICB0eXBlIHJlc3VsdCA9IHQ7XG5cbiAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAoJ2EsIChyZXN1bHQsIGJvb2wpKTtcbiAgdHlwZSByZXF1aXJlbWVudHMoJ2EsICdiKSA9ICgnYSwgKHJlc3VsdCwgYm9vbCkpO1xuXG4gIGxldCBjb21iaW5lID0gKChyMSwgYjEpLCAocjIsIGIyKSkgPT4gKFxuICAgIHN3aXRjaCAocjEsIHIyKSB7XG4gICAgfCAoRXhwciwgXykgPT4gRXhwclxuICAgIHwgKF8sIEV4cHIpID0+IEV4cHJcbiAgICB8IChJbmRldCwgXykgPT4gSW5kZXRcbiAgICB8IChfLCBJbmRldCkgPT4gSW5kZXRcbiAgICB8IChWYWx1ZSwgVmFsdWUpID0+IFZhbHVlXG4gICAgfSxcbiAgICBiMSAmJiBiMixcbiAgKTtcblxuICBsZXQgcmVxX3ZhbHVlID0gKHZjLCBfLCBkKSA9PiAoXG4gICAgZCxcbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoVmFsdWUsIHRydWUpXG4gICAgfCBJbmRldCA9PiAoSW5kZXQsIGZhbHNlKVxuICAgIHwgRXhwciA9PiAoRXhwciwgZmFsc2UpXG4gICAgfSxcbiAgKTtcbiAgbGV0IHJlcV9hbGxfdmFsdWUgPSAodmMsIF8sIGRzKSA9PlxuICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgICgodjEsIHIxKSwgKHYyLCByMikpID0+IChbdjEsIC4uLnYyXSwgY29tYmluZShyMSwgcjIpKSxcbiAgICAgIExpc3QubWFwKHJlcV92YWx1ZSh2YywgeCA9PiB4KSwgZHMpLFxuICAgICAgKFtdLCAoVmFsdWUsIHRydWUpKSxcbiAgICApO1xuICBsZXQgcmVxX2ZpbmFsID0gKHZjLCBfLCBkKSA9PiAoXG4gICAgZCxcbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoVmFsdWUsIHRydWUpXG4gICAgfCBJbmRldCA9PiAoSW5kZXQsIHRydWUpXG4gICAgfCBFeHByID0+IChFeHByLCBmYWxzZSlcbiAgICB9LFxuICApO1xuICBsZXQgcmVxX2FsbF9maW5hbCA9ICh2YywgXywgZHMpID0+XG4gICAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICAgKCh2MSwgcjEpLCAodjIsIHIyKSkgPT4gKFt2MSwgLi4udjJdLCBjb21iaW5lKHIxLCByMikpLFxuICAgICAgTGlzdC5tYXAocmVxX2ZpbmFsKHZjLCB4ID0+IHgpLCBkcyksXG4gICAgICAoW10sIChWYWx1ZSwgdHJ1ZSkpLFxuICAgICk7XG5cbiAgbGV0IHJlcV9maW5hbF9vcl92YWx1ZSA9ICh2YywgXywgZCkgPT5cbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoKGQsIHRydWUpLCAoVmFsdWUsIHRydWUpKVxuICAgIHwgSW5kZXQgPT4gKChkLCBmYWxzZSksIChWYWx1ZSwgdHJ1ZSkpXG4gICAgfCBFeHByID0+ICgoZCwgZmFsc2UpLCAoVmFsdWUsIGZhbHNlKSlcbiAgICB9O1xuXG4gIGxldCBvdGhlcndpc2UgPSAoXywgXykgPT4gKCgpLCAoVmFsdWUsIHRydWUpKTtcblxuICBsZXQgKGxldC4pID0gKCh2LCAociwgYikpLCBydWxlKSA9PlxuICAgIHN3aXRjaCAoYiwgciwgcnVsZSh2KSkge1xuICAgIHwgKF8sIF8sIENvbnN0cnVjdG9yKSA9PiByXG4gICAgfCAoXywgRXhwciwgSW5kZXQpID0+IEV4cHJcbiAgICB8IChfLCBfLCBJbmRldCkgPT4gSW5kZXRcbiAgICB8ICh0cnVlLCBfLCBTdGVwKF8pKSA9PiBFeHByXG4gICAgfCAoZmFsc2UsIF8sIFN0ZXAoXykpID0+IHJcbiAgICB9O1xuXG4gIGxldCAoYW5kLikgPSAoKHYxLCByMSksICh2MiwgcjIpKSA9PiB7XG4gICAgKCh2MSwgdjIpLCBjb21iaW5lKHIxLCByMikpO1xuICB9O1xuXG4gIGxldCB1cGRhdGVfdGVzdCA9IChfLCBfLCBfKSA9PiAoKTtcbn07XG5cbm1vZHVsZSBDViA9IFRyYW5zaXRpb24oVmFsdWVDaGVja2VyRVZNb2RlKTtcblxubGV0IHJlYyBjaGVja192YWx1ZSA9IChzdGF0ZSwgZW52LCBkKSA9PlxuICBDVi50cmFuc2l0aW9uKGNoZWNrX3ZhbHVlLCBzdGF0ZSwgZW52LCBkKTtcblxubGV0IHJlYyBjaGVja192YWx1ZV9tb2RfY3R4ID0gKCgpLCBlbnYsIGQpID0+XG4gIHN3aXRjaCAoREhFeHAudGVybV9vZihkKSkge1xuICB8IFZhcih4KSA9PlxuICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpKSB7XG4gICAgfCBTb21lKHYpID0+IGNoZWNrX3ZhbHVlX21vZF9jdHgoKCksIGVudiwgdilcbiAgICB8IE5vbmUgPT4gQ1YudHJhbnNpdGlvbihjaGVja192YWx1ZV9tb2RfY3R4LCAoKSwgZW52LCBkKVxuICAgIH1cbiAgfCBfID0+IENWLnRyYW5zaXRpb24oY2hlY2tfdmFsdWVfbW9kX2N0eCwgKCksIGVudiwgZClcbiAgfTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFppcHBlcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwaWVjZV9nb2FsID1cbiAgfCBHcm91dDtcblxubGV0IG9mX3BpZWNlX2dvYWwgPVxuICBmdW5cbiAgfCBHcm91dCA9PiAoXG4gICAgICBmdW5cbiAgICAgIHwgUGllY2UuR3JvdXQoXykgPT4gdHJ1ZVxuICAgICAgfCBfID0+IGZhbHNlXG4gICAgKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBnb2FsID1cbiAgfCBQb2ludChNZWFzdXJlZC5Qb2ludC50KVxuICB8IFBpZWNlKHBpZWNlX2dvYWwsIERpcmVjdGlvbi50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb3ZlID1cbiAgfCBFeHRyZW1lKHBsYW5hcilcbiAgfCBMb2NhbChwbGFuYXIpXG4gIHwgR29hbChnb2FsKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBqdW1wX3RhcmdldCA9XG4gIHwgVGlsZUlkKElkLnQpXG4gIHwgQmluZGluZ1NpdGVPZkluZGljYXRlZFZhcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByZWwgPVxuICB8IEN1cnJlbnRcbiAgfCBJZChJZC50LCBEaXJlY3Rpb24udCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2VsZWN0ID1cbiAgfCBBbGxcbiAgfCBSZXNpemUobW92ZSlcbiAgfCBTbWFydFxuICB8IFRpbGUocmVsKVxuICB8IFRlcm0ocmVsKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBNb3ZlKG1vdmUpXG4gIHwgTW92ZVRvTmV4dEhvbGUoRGlyZWN0aW9uLnQpXG4gIHwgSnVtcChqdW1wX3RhcmdldClcbiAgfCBTZWxlY3Qoc2VsZWN0KVxuICB8IFVuc2VsZWN0KG9wdGlvbihEaXJlY3Rpb24udCkpXG4gIHwgRGVzdHJ1Y3QoRGlyZWN0aW9uLnQpXG4gIHwgSW5zZXJ0KHN0cmluZylcbiAgfCBSb3RhdGVCYWNrcGFja1xuICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KHBsYW5hcilcbiAgfCBQaWNrX3VwXG4gIHwgUHV0X2Rvd25cbiAgfCBQYXN0ZShzdHJpbmcpXG4gIHwgU3VnZ2VzdChTZWdtZW50LnQpXG4gIHwgUmVzZXRTdWdnZXN0aW9uO1xuXG5tb2R1bGUgRmFpbHVyZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQ2FudF9tb3ZlXG4gICAgfCBDYW50X2luc2VydFxuICAgIHwgQ2FudF9kZXN0cnVjdFxuICAgIHwgQ2FudF9zZWxlY3RcbiAgICB8IENhbnRfcHV0X2Rvd25cbiAgICB8IENhbnRfcGFzdGVcbiAgICB8IENhbnRfdW5kb1xuICAgIHwgQ2FudF9yZWRvO1xuXG4gIGV4Y2VwdGlvbiBFeGNlcHRpb24odCk7XG59O1xuXG5tb2R1bGUgUmVzdWx0ID0ge1xuICBpbmNsdWRlIFJlc3VsdDtcbiAgdHlwZSB0KCdzdWNjZXNzKSA9IFJlc3VsdC50KCdzdWNjZXNzLCBGYWlsdXJlLnQpO1xufTtcblxubGV0IGlzX2VkaXQ6IHQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IEluc2VydChfKVxuICB8IERlc3RydWN0KF8pXG4gIHwgUGlja191cFxuICB8IFB1dF9kb3duXG4gIHwgUGFzdGUoXykgPT4gdHJ1ZVxuICB8IE1vdmUoXylcbiAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICB8IEp1bXAoXylcbiAgfCBTZWxlY3QoXylcbiAgfCBVbnNlbGVjdChfKVxuICB8IFJvdGF0ZUJhY2twYWNrXG4gIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoXylcbiAgfCBTdWdnZXN0KF8pXG4gIHwgUmVzZXRTdWdnZXN0aW9uID0+IGZhbHNlO1xuIiwiLyogQml0IG9mIGEgaGFjay4gV2Ugd2FudCB0byBkZWNvcmF0ZSBzdWdnZXN0aW9ucyB3aGljaCB3aWxsIHRyaWdnZXJcbiAgIGFuIGV4cGFuc2lvbiB0byB0ZWxlZ3JhcGggdGhhdCBleHBhbnNpb24uIEVhc2llc3Qgd2F5IG1ldHJpY3Mgd2lzZVxuICAgaXMgdG8ga2VlcCB0aGF0IGRlY28gaW4gdGhlIHN5bnRheC4gV2FudCB0byBkZWNvcmF0ZSB3aXRoIGVsbGlwc2VzXG4gICBjaGFyYWN0ZXIsIGJ1dCBPQ2FtbCBzdHJpbmcgZnVuY3Rpb25zIGRvbid0IHN1cHBvcnQgdW5pY29kZSwgc29cbiAgIHdlIHVzZSAkLCB0aGVuIHN3YXAgaXQgb3V0IGZvciB0aGUgdW5pY29kZSBjaGFyYWN0ZXIgaW4gQ29kZS5cbiAgIEV2ZW50dWFsbHkgcmVwbGFjZSB0aGlzIGJ5IGV4dGVuZGluZyB0aGUgc3VnZ2VzdGlvbiBkYXRhIHN0cnVjdHVyZSAqL1xubGV0IGMgPSBcIiRcIjtcblxubGV0IGlzX2V4cGFuZGVyX3RvayA9ICh0OiBUb2tlbi50KSA9PlxuICBTdHJpbmcuc3ViKHQsIFN0cmluZy5sZW5ndGgodCkgLSAxLCAxKSA9PSBjO1xuXG5sZXQgdHJpbV9sYXN0ID0gKHQ6IFRva2VuLnQpID0+IFN0cmluZy5zdWIodCwgMCwgU3RyaW5nLmxlbmd0aCh0KSAtIDEpO1xuXG5sZXQgaXNfZXhwYW5kZXIgPSAobGFiZWw6IExhYmVsLnQpID0+XG4gIHN3aXRjaCAobGFiZWwpIHtcbiAgfCBbdF0gPT4gaXNfZXhwYW5kZXJfdG9rKHQpXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG5sZXQgbWFyayA9IChsYWJlbDogTGFiZWwudCk6IExhYmVsLnQgPT5cbiAgaXNfZXhwYW5kZXIobGFiZWwpID8gTGlzdC5tYXAodCA9PiB0cmltX2xhc3QodCkgKysgXCLigKZcIiwgbGFiZWwpIDogbGFiZWw7XG5cbmxldCB0cmltID0gKGNvbXBsZXRpb246IFRva2VuLnQpOiBUb2tlbi50ID0+XG4gIGlzX2V4cGFuZGVyX3Rvayhjb21wbGV0aW9uKSA/IHRyaW1fbGFzdChjb21wbGV0aW9uKSA6IGNvbXBsZXRpb247XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBUeURpOiBUeXBlLURpcmVjdGVkIE5leHQtVG9rZW4gU3VnZ2VzdGlvbnNcblxuICAgIElERUE6IEV4cGFuZGVkIGNyaXRlcmlhIGZvciB3aGVuIHRvIGF1dG9zaG93OiBDdXJyZW50bHksIHdlIHNob3cgb25seVxuICAgIHdoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHN1Z2dlc3Rpb24gd2hpY2ggcHJlZml4LW1hdGNoZXMgYnV0IGlzIG5vdFxuICAgIGlkZW50aWNhbCB0byB0aGUgY3VycmVudCBub256ZXJvIHByZWZpeC4gV2UgbWlnaHQgY29uc2lkZXIgcmVsYXhpbmdcbiAgICB0aGUgbm9uemVybyBwcmVmaXggcGFydC4gV2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBhdXRvc2hvdyBvbiBjb3JyZWN0XG4gICAgdG9rZW5zLCBidXQgd2UgY291bGQgYXV0b3Nob3cgb24gZXJyb3JzIGlmIHRoZXJlIGFyZSBmaXhlcywgb3Igb25cbiAgICBlbXB0aWVzIGlmIHRoZXJlJ3Mgb25seSBvbmUgb3B0aW9uLlxuXG4gICAgIElERUE6IEFkZCBhIGtleWJpbmRpbmcgdG8gZm9yY2UgcmV2ZWFsIHN1Z2dlc3Rpb24gaWYgbm90IGN1cnJlbnQgc2hvd24uXG4gICAgIEkndmUgc3R1YmJlZCB0aGlzIG91dCAoQ21kKz8pIGJ1dCBuZWVkcyBhbiBvcHRpb24gdG8gc2hvdyBzdWdnZXN0aW9uc1xuICAgICBldmVuIGlmIG9uIGhvbGUgKGllIHByZWZpeCBmb3IgY29tcGxldGlvbiBpcyBcIlwiKVxuXG4gICAgIElERUE6IElmIHRoZXJlIGFyZSB+IG5vIGN1cnJlbnQgc3VnZ2VzdGlvbnMsIGFuZCB0aGUgaW5kaWNhdGVkIHRlcm1cbiAgICAgaGFzIGEgdHlwZSBlcnJvciBzdWdnZXN0IGZvbGxvd2luZyBpbmZpeGVzIHdoaWNoIGZpeCB0aGF0IHR5cGUgZXJyb3IsXG4gICAgIGUuZy4gZ2l2ZW4gXCJsZXQgYTpGbG9hdCA9IGZzdCgxLjB8XCIgc3VnZ2VzdCBjb21tYVxuICAgICBlLmcuIGdpdmVuIFwibGV0IGI6Qm9vbCA9IDF8XCIgc3VnZ2VzdCA8LCA+LCA8PSwgPj0sID09LCAhPSwgZXRjLlxuXG4gICAgIElERUE6IFVOQklESVJFQ1RJT05BTCBQT1NJVElPTlM6XG4gICAgMS4gSW4gYXAgZnVucG9zOiBmYXZvciBpbnB1dCB0eSBjb25zaXN0ZW50IHdpdGggYXJnXG4gICAgMi4gSW4gY2FzZSBzY3J1dCwgZmF2b3IgdGhlIHR5cyBvZiBleHRhbnQgcGF0dGVybnNcbiAgICAzLiBJbiBsaXN0IGVsZW1lbnQsIGZhdm9yIHRoZSB0eXMgb2YgZXh0YW50IGVsZW1lbnRzXG4gICAgMy4gSW4gcGF0dGVybiBhbm5vdGF0aW9uIHR5cGU6IGZhdm9yIHBhdGFubiBleHBlY3RlZCB0eXBlXG5cbiAgICBJREVBOiBJZiBvbiBpbmZpeCBvcCwgc3VnZ2VzdCBiYXNlZCBvbiBlaXRoZXIgb3BlcmFuZCB0eXBlLFxuICAgIGVzcGVjaWFsbHkgdGhlIGNhc2Ugd2hlcmUgaXQgd291bGQgZml4IGFuIG9wZXJhbmQgdHlwZSBlcnJvclxuXG4gICAgSURFQTogSWYgb24gMi1tdWx0aWhvbGUsIHN1Z2dlc3QgaW5maXggb3BzIGFzIGFib3ZlIG9yIEFwIGlmIGFwcGxpY2FibGVcblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV9hbGwgPVxuICB8IEZyb21CYWNrcGFjaztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV9jb21tb24gPVxuICB8IE5ld0Zvcm0oVHlwLnQpXG4gIHwgRnJvbUN0eChUeXAudClcbiAgfCBGcm9tQ3R4QXAoVHlwLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0cmF0ZWd5X2V4cCA9XG4gIHwgQ29tbW9uKHN0cmF0ZWd5X2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfcGF0ID1cbiAgfCBDb21tb24oc3RyYXRlZ3lfY29tbW9uKVxuICB8IEZyb21Db0N0eChUeXAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfdHlwID1cbiAgfCBOZXdGb3JtXG4gIHwgRnJvbUN0eDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneSA9XG4gIHwgQW55KHN0cmF0ZWd5X2FsbClcbiAgfCBFeHAoc3RyYXRlZ3lfZXhwKVxuICB8IFBhdChzdHJhdGVneV9wYXQpXG4gIHwgVHlwKHN0cmF0ZWd5X3R5cCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgY29udGVudDogc3RyaW5nLFxuICBzdHJhdGVneSxcbn07XG5cbmxldCBjb21wYXJlID0gKHMxOiB0LCBzMjogdCk6IGludCA9PiB7XG4gIFN0cmluZy5jb21wYXJlKHMxLmNvbnRlbnQsIHMyLmNvbnRlbnQpO1xufTtcbiIsIm9wZW4gU3VnZ2VzdGlvbjtcblxubGV0IGV4cGFuZGVyID0gQXNzaXN0YW50RXhwYW5kZXIuYztcblxuLyogRm9yIHN1Z2dlc3Rpb25zIGluIHBhdHRlcm5zLCBzdWdnZXN0IHZhcmlhYmxlcyB3aGljaFxuICogb2NjdXIgZnJlZSBpbiB0aGF0IHBhdHRlcm4ncyBzY29wZS4gKi9cbmxldCBmcmVlX3ZhcmlhYmxlcyA9XG4gICAgKGV4cGVjdGVkX3R5OiBUeXAudCwgY3R4OiBDdHgudCwgY29fY3R4OiBDb0N0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICgobmFtZSwgZW50cmllcykpID0+XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfdmFyKGN0eCwgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBsZXQgam9pbnRfdXNlX3R5cCA9IENvQ3R4LmpvaW4oY3R4LCBlbnRyaWVzKTtcbiAgICAgICAgaWYgKFR5cC5pc19jb25zaXN0ZW50KGN0eCwgZXhwZWN0ZWRfdHksIGpvaW50X3VzZV90eXApKSB7XG4gICAgICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IFBhdChGcm9tQ29DdHgoam9pbnRfdXNlX3R5cCkpfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgTm9uZTtcbiAgICAgICAgfTtcbiAgICAgIHwgU29tZShfKSA9PiBOb25lXG4gICAgICB9LFxuICAgIGNvX2N0eCxcbiAgKTtcbn07XG5cbi8qIEZvciBzdWdnZXN0c2lvbnMgaW4gZXhwcmVzc2lvbnMsIHN1Z2dlc3QgdmFyaWFibGVzIGZyb20gdGhlIGN0eCAqL1xubGV0IGJvdW5kX3ZhcmlhYmxlcyA9ICh0eV9leHBlY3Q6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5WYXJFbnRyeSh7dHlwLCBuYW1lLCBffSlcbiAgICAgICAgd2hlbiBUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5X2V4cGVjdCwgdHlwKSA9PlxuICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IEV4cChDb21tb24oRnJvbUN0eCh0eXApKSl9KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxubGV0IGJvdW5kX2NvbnN0cnVjdG9ycyA9XG4gICAgKHdyYXA6IHN0cmF0ZWd5X2NvbW1vbiA9PiBzdHJhdGVneSwgdHk6IFR5cC50LCBjdHg6IEN0eC50KVxuICAgIDogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIC8qIGdldCBuYW1lcyBvZiBhbGwgY29uc3RydWN0b3IgZW50cmllcyBjb25zaXN0ZW50IHdpdGggdHkgKi9cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgQ3R4LkNvbnN0cnVjdG9yRW50cnkoe3R5cCwgbmFtZSwgX30pXG4gICAgICAgIHdoZW4gVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCB0eSwgdHlwKSA9PlxuICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IHdyYXAoRnJvbUN0eCh0eXApKX0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG4vKiBTdWdnZXN0IGFwcGx5aW5nIGEgZnVuY3Rpb24gZnJvbSB0aGUgY3R4IHdoaWNoIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdHlwZSAqL1xubGV0IGJvdW5kX2FwcyA9ICh0eV9leHBlY3Q6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5WYXJFbnRyeSh7dHlwOiB7dGVybTogQXJyb3coXywgdHlfb3V0KSwgX30gYXMgdHlfYXJyLCBuYW1lLCBffSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfZXhwZWN0LCB0eV9vdXQpXG4gICAgICAgICAgJiYgIVR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfZXhwZWN0LCB0eV9hcnIpID0+IHtcbiAgICAgICAgU29tZSh7XG4gICAgICAgICAgY29udGVudDogbmFtZSArKyBcIihcIiArKyBleHBhbmRlcixcbiAgICAgICAgICBzdHJhdGVneTogRXhwKENvbW1vbihGcm9tQ3R4QXAodHlfb3V0KSkpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBib3VuZF9jb25zdHJ1Y3Rvcl9hcHMgPSAod3JhcCwgdHk6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5Db25zdHJ1Y3RvckVudHJ5KHtcbiAgICAgICAgdHlwOiB7dGVybTogQXJyb3coXywgdHlfb3V0KSwgX30gYXMgdHlfYXJyLFxuICAgICAgICBuYW1lLFxuICAgICAgICBfLFxuICAgICAgfSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHksIHR5X291dClcbiAgICAgICAgICAmJiAhVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCB0eSwgdHlfYXJyKSA9PlxuICAgICAgU29tZSh7XG4gICAgICAgIGNvbnRlbnQ6IG5hbWUgKysgXCIoXCIgKysgZXhwYW5kZXIsXG4gICAgICAgIHN0cmF0ZWd5OiB3cmFwKEZyb21DdHhBcCh0eV9vdXQpKSxcbiAgICAgIH0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG4vKiBTdWdnZXN0IGJvdW5kIHR5cGUgYWxpYXNlcyBpbiB0eXBlIGFubm90YXRpb25zIG9yIGRlZmluaXRpb25zICovXG5sZXQgdHlwX2NvbnRleHRfZW50cmllcyA9IChjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5UVmFyRW50cnkoe2tpbmQ6IFNpbmdsZXRvbihfKSwgbmFtZSwgX30pID0+XG4gICAgICBTb21lKHtjb250ZW50OiBuYW1lLCBzdHJhdGVneTogVHlwKEZyb21DdHgpfSlcbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBzdWdnZXN0X3ZhcmlhYmxlID0gKGNpOiBJbmZvLnQpOiBsaXN0KFN1Z2dlc3Rpb24udCkgPT4ge1xuICBsZXQgY3R4ID0gSW5mby5jdHhfb2YoY2kpO1xuICBzd2l0Y2ggKGNpKSB7XG4gIHwgSW5mb0V4cCh7bW9kZSwgX30pID0+XG4gICAgYm91bmRfdmFyaWFibGVzKE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgICBAIGJvdW5kX2FwcyhNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gICAgQCBib3VuZF9jb25zdHJ1Y3RvcnMoeCA9PiBFeHAoQ29tbW9uKHgpKSwgTW9kZS50eV9vZihtb2RlKSwgY3R4KVxuICAgIEAgYm91bmRfY29uc3RydWN0b3JfYXBzKHggPT4gRXhwKENvbW1vbih4KSksIE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgfCBJbmZvUGF0KHttb2RlLCBjb19jdHgsIF99KSA9PlxuICAgIGZyZWVfdmFyaWFibGVzKE1vZGUudHlfb2YobW9kZSksIGN0eCwgY29fY3R4KVxuICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gUGF0KENvbW1vbih4KSksIE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgICBAIGJvdW5kX2NvbnN0cnVjdG9yX2Fwcyh4ID0+IFBhdChDb21tb24oeCkpLCBNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gIHwgSW5mb1R5cChfKSA9PiB0eXBfY29udGV4dF9lbnRyaWVzKGN0eClcbiAgfCBfID0+IFtdXG4gIH07XG59O1xuXG4vKiBTdWdnZXN0IGxvb2thaGVhZCB0b2tlbnM6XG4gKlxuICogU29tZXRpbWVzIHRoZSBleHBlY3RlZCB0eXBlIGlzIFR5LCBidXQgd2Ugd2FudCB0byBlbnRlciBzb21ldGhpbmcgb2YgVHknXG4gKiBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIGZvbGxvdyBpdCB1cCB3aXRoIGFuIGluZml4IG9wIG9mIHR5cGUgKFR5JywgXykgLT4gVHkuXG4gKlxuICogRm9yIG5vdyB3ZSBzcGVjaWFsLWNhc2Ugc3VjaCBzaXR1YXRpb25zIGluc3RlYWQgb2YgZGVyaXZpbmcgdGhlbSBmcm9tIHRoZVxuICogZ3JhbW1hci4gSW4gdGhlIGN1cnJlbnQgZ3JhbW1hciB0aGVyZSBhcmUgYmFzaWNhbGx5IDMgY2xhc3NlczpcbiAqXG4gKiAxLiBJZiBib29sIGlzIGV4cGVjdGVkLCBjb3VsZCBiZSBpbnQsIGZsb2F0IG9yIHN0cmluZyAoY29tcGFyaXNvbnMpXG4gKiAyLiBJZiBsaXN0KHR5KSBpcyBleHBlY3RlZCwgY291bGQgYmUgdHkgKGNvbnMpXG4gKiAzLiBJZiB0dXBsZShbdHksIC4uLl0pIGlzIGV4cGVjdGVkLCBjb3VsZCBiZSB0eSAoY29tbWEpXG5cbiAqIDIgYW5kIDMgYXJlIHRoZSBlYXNpZXN0IHRvIG1ha2UgZXJnb25vbWljIGFzIHRoZXJlIGlzIG9ubHkgb25lIHN1Y2hcbiAqIGluZml4IG9wLCBzbyB3ZSBjYW4ganVzdCBjb21iaW5lIHRoZSB0d28gdG9rZW5zIGludG8gYSBzaW5nbGUgY29tcGxldGlvbi5cbiAqIDEgaXMgc2xpZ2h0bHkgbW9yZSBmcmF1Z2h0IGJlY2F1c2UgYXMgd2UgZWl0aGVyIG5lZWQgdG8gbm90IHNob3cgdGhlXG4gKiBzZWNvbmQgdG9rZW4sIG9yIHBpY2sgYW4gYXJiaXRyYXJ5IHJlcHJlc2VudGF0aXZlIG9wIHRvIHNob3csIGFuZCB3ZVxuICogcHJvYmFibHkgd291bGRuJ3Qgd2FudCB0byBjb21wbGV0ZSB0aGF0IG9wLCBmb3JjaW5nIHRoZSB1c2VyIHRvIGJhY2tzcGFjZVxuICogaWYgdGhleSBtZWFudCBhbm90aGVyLCBzbyB3ZSdkIG5lZWQgdG8gaW1wbGVtZW50IHN0YWdlZCBjb21wbGV0aW9uLlxuICogRm9yIG5vdyB3ZSBqdXN0IGRvbid0IHNob3cgYSBzZWNvbmQgdG9rZW4sIHdoaWNoIGNhbiBiZSBzbGlnaHRseSBjb25mdXNpbmcuXG4gKlxuICovXG5cbmxldCBzdWdnZXN0X2xvb2thaGVhZF92YXJpYWJsZSA9IChjaTogSW5mby50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgbGV0IHJlc3RyYXRlZ2l6ZSA9IChzdWZmaXgsIHtjb250ZW50LCBzdHJhdGVneX0pID0+IHtcbiAgICBjb250ZW50OiBjb250ZW50ICsrIHN1ZmZpeCxcbiAgICBzdHJhdGVneSxcbiAgfTtcbiAgbGV0IGN0eCA9IEluZm8uY3R4X29mKGNpKTtcbiAgc3dpdGNoIChjaSkge1xuICB8IEluZm9FeHAoe21vZGUsIF99KSA9PlxuICAgIGxldCBleHBfcmVmcyA9IHR5ID0+XG4gICAgICBib3VuZF92YXJpYWJsZXModHksIGN0eClcbiAgICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gRXhwKENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIGxldCBleHBfYXBzID0gdHkgPT5cbiAgICAgIGJvdW5kX2Fwcyh0eSwgY3R4KVxuICAgICAgQCBib3VuZF9jb25zdHJ1Y3Rvcl9hcHMoeCA9PiBFeHAoQ29tbW9uKHgpKSwgdHksIGN0eCk7XG4gICAgc3dpdGNoIChNb2RlLnR5X29mKG1vZGUpIHw+IFR5cC50ZXJtX29mKSB7XG4gICAgfCBMaXN0KHR5KSA9PlxuICAgICAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiICk6OlwiKSwgZXhwX2Fwcyh0eSkpXG4gICAgICBAIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIjo6XCIpLCBleHBfcmVmcyh0eSkpXG4gICAgfCBQcm9kKFt0eSwgLi4udHlzXSkgPT5cbiAgICAgIGxldCBjb21tYXMgPVxuICAgICAgICBMaXN0LmluaXQoTGlzdC5sZW5ndGgodHlzKSwgXyA9PiBcIixcIikgfD4gU3RyaW5nLmNvbmNhdChcIiBcIik7XG4gICAgICBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCIgKVwiICsrIGNvbW1hcyksIGV4cF9hcHModHkpKVxuICAgICAgQCBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoY29tbWFzKSwgZXhwX3JlZnModHkpKTtcbiAgICB8IEJvb2wgPT5cbiAgICAgIC8qIFRPRE86IEZpbmQgYSBVSSB0byBtYWtlIHRoZXNlIGxlc3MgY29uZnVzaW5nICovXG4gICAgICBleHBfcmVmcyhJbnQgfD4gVHlwLmZyZXNoKVxuICAgICAgQCBleHBfcmVmcyhGbG9hdCB8PiBUeXAuZnJlc2gpXG4gICAgICBAIGV4cF9yZWZzKFN0cmluZyB8PiBUeXAuZnJlc2gpXG4gICAgICBAIGV4cF9hcHMoSW50IHw+IFR5cC5mcmVzaClcbiAgICAgIEAgZXhwX2FwcyhGbG9hdCB8PiBUeXAuZnJlc2gpXG4gICAgICBAIGV4cF9hcHMoU3RyaW5nIHw+IFR5cC5mcmVzaClcbiAgICB8IF8gPT4gW11cbiAgICB9O1xuICB8IEluZm9QYXQoe21vZGUsIGNvX2N0eCwgX30pID0+XG4gICAgbGV0IHBhdF9yZWZzID0gdHkgPT5cbiAgICAgIGZyZWVfdmFyaWFibGVzKHR5LCBjdHgsIGNvX2N0eClcbiAgICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gUGF0KENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIGxldCBwYXRfYXBzID0gdHkgPT4gYm91bmRfY29uc3RydWN0b3JfYXBzKHggPT4gUGF0KENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIHN3aXRjaCAoTW9kZS50eV9vZihtb2RlKSB8PiBUeXAudGVybV9vZikge1xuICAgIHwgTGlzdCh0eSkgPT5cbiAgICAgIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIiApOjpcIiksIHBhdF9hcHModHkpKVxuICAgICAgQCBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCI6OlwiKSwgcGF0X3JlZnModHkpKVxuICAgIHwgUHJvZChbdHksIC4uLnR5c10pID0+XG4gICAgICBsZXQgY29tbWFzID1cbiAgICAgICAgTGlzdC5pbml0KExpc3QubGVuZ3RoKHR5cyksIF8gPT4gXCIsXCIpIHw+IFN0cmluZy5jb25jYXQoXCIgXCIpO1xuICAgICAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiIClcIiArKyBjb21tYXMpLCBwYXRfYXBzKHR5KSlcbiAgICAgIEAgTGlzdC5tYXAocmVzdHJhdGVnaXplKGNvbW1hcyksIHBhdF9yZWZzKHR5KSk7XG4gICAgfCBfID0+IFtdXG4gICAgfTtcbiAgfCBJbmZvVHlwKF8pID0+IFtdXG4gIHwgXyA9PiBbXVxuICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8qIFRoaXMgbW9kdWxlIGdlbmVyYXRlcyBUeURpIHN1Z2dlc3Rpb25zIHdoaWNoIGRlcGVuZFxuICogbmVpdGhlciBvbiB0aGUgdHlwaW5nIGNvbnRleHQgb3IgdGhlIGJhY2twYWNrICovXG5cbmxldCBsZWFkaW5nX2V4cGFuZGVyID0gXCIgXCIgKysgQXNzaXN0YW50RXhwYW5kZXIuYztcblxuLyogU3BlY2lmaWVzIHR5cGUgaW5mb3JtYXRpb24gZm9yIHN5bnRhY3RpYyBmb3Jtcy4gQ291bGQgaW4gcHJpbmNpcGxlIGJlXG4gKiBkZXJpdmVkIGJ5IGdlbmVyYXRpbmcgc2VnbWVudHMgZnJvbSBGb3JtcywgcGFyc2luZyB0aGVtIHRvIHRlcm1zLCBhbmRcbiAqIHJ1bm5pbmcgU3RhdGljcywgYnV0IGZvciBub3csIG5ldyBmb3JtcyBlLmcuIG9wZXJhdG9ycyBtdXN0IGJlIGFkZGVkXG4gKiBiZWxvdyBtYW51YWxseS4gICovXG5tb2R1bGUgVHlwID0ge1xuICBsZXQgdW5rOiBUeXAudCA9IFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5mcmVzaDtcblxuICBsZXQgb2ZfY29uc3RfbW9ub19kZWxpbTogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSA9IFtcbiAgICAoXCJ0cnVlXCIsIEJvb2wgfD4gVHlwLmZyZXNoKSxcbiAgICAoXCJmYWxzZVwiLCBCb29sIHw+IFR5cC5mcmVzaCksXG4gICAgLy8oXCJbXVwiLCBMaXN0KHVuaykpLCAvICpOT1RFOiB3b3VsZCBuZWVkIHRvIHJlZmFjdG9yIGJ1ZmZlciBmb3IgdGhpcyB0byBzaG93IHVwICovXG4gICAgLy8oXCIoKVwiLCBQcm9kKFtdKSksIC8qIE5PVEU6IHdvdWxkIG5lZWQgdG8gcmVmYWN0b3IgYnVmZmVyIGZvciB0aGlzIHRvIHNob3cgdXAgKi9cbiAgICAoXCJcXFwiXFxcIlwiLCBTdHJpbmcgfD4gVHlwLmZyZXNoKSwgLyogTk9URTogSXJyZWxldmVudCBhcyBzZWNvbmQgcXVvdGUgYXBwZWFycyBhdXRvbWF0aWNhbGx5ICovXG4gICAgKFwiX1wiLCB1bmspLFxuICBdO1xuXG4gIGxldCBvZl9sZWFkaW5nX2RlbGltOiBsaXN0KChUb2tlbi50LCBUeXAudCkpID0gW1xuICAgIChcImNhc2VcIiArKyBsZWFkaW5nX2V4cGFuZGVyLCB1bmspLFxuICAgIChcImZ1blwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIEFycm93KHVuaywgdW5rKSB8PiBUeXAuZnJlc2gpLFxuICAgIChcbiAgICAgIFwidHlwZnVuXCIgKysgbGVhZGluZ19leHBhbmRlcixcbiAgICAgIEZvcmFsbChWYXIoXCJcIikgfD4gVFBhdC5mcmVzaCwgdW5rKSB8PiBUeXAuZnJlc2gsXG4gICAgKSxcbiAgICAoXCJpZlwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIHVuayksXG4gICAgKFwibGV0XCIgKysgbGVhZGluZ19leHBhbmRlciwgdW5rKSxcbiAgICAoXCJ0ZXN0XCIgKysgbGVhZGluZ19leHBhbmRlciwgUHJvZChbXSkgfD4gVHlwLmZyZXNoKSxcbiAgICAoXCJ0eXBlXCIgKysgbGVhZGluZ19leHBhbmRlciwgdW5rKSxcbiAgXTtcblxuICBsZXQgb2ZfaW5maXhfZGVsaW06IGxpc3QoKFRva2VuLnQsIFR5cC50ZXJtKSkgPSBbXG4gICAgKFwifD5cIiwgVW5rbm93bihJbnRlcm5hbCkpLCAvKiAqL1xuICAgIChcIixcIiwgUHJvZChbdW5rLCB1bmtdKSksIC8qIE5PVEU6IEN1cnJlbnQgYXBwcm9hY2ggZG9lc24ndCB3b3JrIGZvciB0aGlzLCBidXQgaXJyZWxldmFudCBhcyAxLWNoYXIgKi9cbiAgICAoXCI6OlwiLCBMaXN0KHVuaykpLFxuICAgIChcIkBcIiwgTGlzdCh1bmspKSxcbiAgICAoXCI7XCIsIFVua25vd24oSW50ZXJuYWwpKSxcbiAgICAoXCImJlwiLCBCb29sKSxcbiAgICAoXCJcXFxcL1wiLCBCb29sKSxcbiAgICAoXCJ8fFwiLCBCb29sKSxcbiAgICAoXCIkPT1cIiwgQm9vbCksXG4gICAgKFwiPT0uXCIsIEJvb2wpLFxuICAgIChcIj09XCIsIEJvb2wpLFxuICAgIChcIiFcIiwgQm9vbCksIC8vIG1heWJlIGRvZXNudCBiZWxvbmcgaGVyZT8gYnV0IGJsb2NrcyBhdXRvY29tcGxldGUgb2YgISB0byAhPVxuICAgIChcIiE9XCIsIEJvb2wpLFxuICAgIChcIiE9LlwiLCBCb29sKSxcbiAgICAoXCI8XCIsIEJvb2wpLFxuICAgIChcIj5cIiwgQm9vbCksXG4gICAgKFwiPD1cIiwgQm9vbCksXG4gICAgKFwiPj1cIiwgQm9vbCksXG4gICAgKFwiPC5cIiwgQm9vbCksXG4gICAgKFwiPi5cIiwgQm9vbCksXG4gICAgKFwiPD0uXCIsIEJvb2wpLFxuICAgIChcIj49LlwiLCBCb29sKSxcbiAgICAoXCIrXCIsIEludCksXG4gICAgKFwiLVwiLCBJbnQpLFxuICAgIChcIipcIiwgSW50KSxcbiAgICAoXCIvXCIsIEludCksXG4gICAgKFwiKipcIiwgSW50KSxcbiAgICAoXCIrLlwiLCBGbG9hdCksXG4gICAgKFwiLS5cIiwgRmxvYXQpLFxuICAgIChcIiouXCIsIEZsb2F0KSxcbiAgICAoXCIvLlwiLCBGbG9hdCksXG4gICAgKFwiKiouXCIsIEZsb2F0KSxcbiAgICAoXCIrK1wiLCBTdHJpbmcpLFxuICBdO1xuXG4gIGxldCBleHBlY3RlZDogSW5mby50ID0+IFR5cC50ID1cbiAgICBmdW5cbiAgICB8IEluZm9FeHAoe21vZGUsIF99KVxuICAgIHwgSW5mb1BhdCh7bW9kZSwgX30pID0+IE1vZGUudHlfb2YobW9kZSlcbiAgICB8IF8gPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLmZyZXNoO1xuXG4gIGxldCBmaWx0ZXJfYnkgPVxuICAgICAgKFxuICAgICAgICBjdHg6IEN0eC50LFxuICAgICAgICBleHBlY3RlZF90eTogVHlwLnQsXG4gICAgICAgIHNlbGZfdHlzOiBsaXN0KChUb2tlbi50LCBUeXAudCkpLFxuICAgICAgICBkZWxpbXM6IGxpc3Qoc3RyaW5nKSxcbiAgICAgIClcbiAgICAgIDogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSA9PlxuICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgIGRlbGltID0+IHtcbiAgICAgICAgbGV0KiBzZWxmX3R5ID0gTGlzdC5hc3NvY19vcHQoZGVsaW0sIHNlbGZfdHlzKTtcbiAgICAgICAgVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCBleHBlY3RlZF90eSwgc2VsZl90eSlcbiAgICAgICAgICA/IFNvbWUoKGRlbGltLCBzZWxmX3R5KSkgOiBOb25lO1xuICAgICAgfSxcbiAgICAgIGRlbGltcyxcbiAgICApO1xufTtcblxuLyogQXV0b21hdGljYWxseSBjb2xsYXRlcyBtb3N0IGRlbGltaXRlcnMgZnJvbSBGb3Jtcywgbm90YWJseSBhbGxcbiAqIG1vbm8gZGVsaW1pdGVycywgYWxsIGluZml4IG9wZXJhdG9ycywgYW5kIGFsbCBsZWFkaW5nIGRlbGltaXRlcnMgKi9cbm1vZHVsZSBEZWxpbXMgPSB7XG4gIGxldCBkZWxheWVkX2xlYWRpbmcgPSAoc29ydDogU29ydC50KTogbGlzdChUb2tlbi50KSA9PlxuICAgIEZvcm0uZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgbGV0IChsYmwsIF8pID0gTW9sZHMuZGVsYXllZF9leHBhbnNpb24odG9rZW4pO1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIExpc3QubGVuZ3RoKGxibCkgPiAxICYmIHRva2VuID09IExpc3QuaGQobGJsKSAmJiBtLm91dCA9PSBzb3J0XG4gICAgICAgICAgICAgICA/IFNvbWUodG9rZW4gKysgbGVhZGluZ19leHBhbmRlcikgOiBOb25lLFxuICAgICAgICAgICBNb2xkcy5nZXQobGJsKSxcbiAgICAgICAgICk7XG4gICAgICAgfSlcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxuICBsZXQgZGVsYXRlZF9sZWFkaW5nX2V4cCA9IGRlbGF5ZWRfbGVhZGluZyhFeHApO1xuICBsZXQgZGVsYXRlZF9sZWFkaW5nX3BhdCA9IGRlbGF5ZWRfbGVhZGluZyhQYXQpO1xuICBsZXQgZGVsYXRlZF9sZWFkaW5nX3R5cCA9IGRlbGF5ZWRfbGVhZGluZyhUeXApO1xuXG4gIGxldCBkZWxheWVkX2xlYWRpbmcgPSAoc29ydDogU29ydC50KTogbGlzdChzdHJpbmcpID0+XG4gICAgc3dpdGNoIChzb3J0KSB7XG4gICAgfCBFeHAgPT4gZGVsYXRlZF9sZWFkaW5nX2V4cFxuICAgIHwgUGF0ID0+IGRlbGF0ZWRfbGVhZGluZ19wYXRcbiAgICB8IFR5cCA9PiBkZWxhdGVkX2xlYWRpbmdfdHlwXG4gICAgfCBfID0+IFtdXG4gICAgfTtcblxuICBsZXQgaW5maXggPSAoc29ydDogU29ydC50KTogbGlzdChUb2tlbi50KSA9PlxuICAgIEZvcm0uZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIG0ub3V0ID09IHNvcnQgJiYgTW9sZC5pc19pbmZpeF9vcChtKSA/IFNvbWUodG9rZW4pIDogTm9uZSxcbiAgICAgICAgICAgTW9sZHMuZ2V0KFt0b2tlbl0pLFxuICAgICAgICAgKVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG4gIGxldCBpbmZpeF9leHAgPSBpbmZpeChFeHApO1xuICBsZXQgaW5maXhfcGF0ID0gaW5maXgoUGF0KTtcbiAgbGV0IGluZml4X3R5cCA9IGluZml4KFR5cCk7XG4gIGxldCBpbmZpeCA9IChzb3J0OiBTb3J0LnQpOiBsaXN0KHN0cmluZykgPT5cbiAgICBzd2l0Y2ggKHNvcnQpIHtcbiAgICB8IEV4cCA9PiBpbmZpeF9leHBcbiAgICB8IFBhdCA9PiBpbmZpeF9wYXRcbiAgICB8IFR5cCA9PiBpbmZpeF90eXBcbiAgICB8IF8gPT4gW11cbiAgICB9O1xuXG4gIGxldCBjb25zdF9tb25vID0gKHNvcnQ6IFNvcnQudCk6IGxpc3QoVG9rZW4udCkgPT5cbiAgICBGb3JtLmNvbnN0X21vbm9fZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIG0ub3V0ID09IHNvcnQgJiYgTGlzdC5tZW0odG9rZW4sIEZvcm0uY29uc3RfbW9ub19kZWxpbXMpXG4gICAgICAgICAgICAgICA/IFNvbWUodG9rZW4pIDogTm9uZSxcbiAgICAgICAgICAgTW9sZHMuZ2V0KFt0b2tlbl0pLFxuICAgICAgICAgKVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbiAgbGV0IGNvbnN0X21vbm9fZXhwID0gY29uc3RfbW9ubyhFeHApO1xuICBsZXQgY29uc3RfbW9ub19wYXQgPSBjb25zdF9tb25vKFBhdCk7XG4gIGxldCBjb25zdF9tb25vX3R5cCA9IGNvbnN0X21vbm8oVHlwKTtcblxuICBsZXQgY29uc3RfbW9ubyA9IChzb3J0OiBTb3J0LnQpOiBsaXN0KHN0cmluZykgPT5cbiAgICBzd2l0Y2ggKHNvcnQpIHtcbiAgICB8IEV4cCA9PiBjb25zdF9tb25vX2V4cFxuICAgIHwgUGF0ID0+IGNvbnN0X21vbm9fcGF0XG4gICAgfCBUeXAgPT4gY29uc3RfbW9ub190eXBcbiAgICB8IF8gPT4gW11cbiAgICB9O1xufTtcblxubGV0IHN1Z2dlc3RfZm9ybSA9ICh0eV9tYXAsIGRlbGltc19vZl9zb3J0LCBjaTogSW5mby50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgbGV0IHNvcnQgPSBJbmZvLnNvcnRfb2YoY2kpO1xuICBsZXQgZGVsaW1zID0gZGVsaW1zX29mX3NvcnQoc29ydCk7XG4gIGxldCBmaWx0ZXJlZCA9XG4gICAgVHlwLmZpbHRlcl9ieShJbmZvLmN0eF9vZihjaSksIFR5cC5leHBlY3RlZChjaSksIHR5X21hcCwgZGVsaW1zKTtcbiAgc3dpdGNoIChzb3J0KSB7XG4gIHwgRXhwID0+XG4gICAgTGlzdC5tYXAoXG4gICAgICAoKGNvbnRlbnQsIHR5KSkgPT5cbiAgICAgICAgU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IEV4cChDb21tb24oTmV3Rm9ybSh0eSkpKX0sXG4gICAgICBmaWx0ZXJlZCxcbiAgICApXG4gIHwgUGF0ID0+XG4gICAgTGlzdC5tYXAoXG4gICAgICAoKGNvbnRlbnQsIHR5KSkgPT5cbiAgICAgICAgU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IFBhdChDb21tb24oTmV3Rm9ybSh0eSkpKX0sXG4gICAgICBmaWx0ZXJlZCxcbiAgICApXG4gIHwgXyA9PlxuICAgIGRlbGltc1xuICAgIHw+IExpc3QubWFwKGNvbnRlbnQgPT4gU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IFR5cChOZXdGb3JtKX0pXG4gIH07XG59O1xuXG5sZXQgc3VnZ2VzdF9vcGVyYXRvcjogSW5mby50ID0+IGxpc3QoU3VnZ2VzdGlvbi50KSA9XG4gIHN1Z2dlc3RfZm9ybShcbiAgICBMaXN0Lm1hcCgoKGEsIGIpKSA9PiAoYSwgSWRUYWdnZWQuZnJlc2goYikpLCBUeXAub2ZfaW5maXhfZGVsaW0pLFxuICAgIERlbGltcy5pbmZpeCxcbiAgKTtcblxubGV0IHN1Z2dlc3Rfb3BlcmFuZDogSW5mby50ID0+IGxpc3QoU3VnZ2VzdGlvbi50KSA9XG4gIHN1Z2dlc3RfZm9ybShUeXAub2ZfY29uc3RfbW9ub19kZWxpbSwgRGVsaW1zLmNvbnN0X21vbm8pO1xuXG5sZXQgc3VnZ2VzdF9sZWFkaW5nOiBJbmZvLnQgPT4gbGlzdChTdWdnZXN0aW9uLnQpID1cbiAgc3VnZ2VzdF9mb3JtKFR5cC5vZl9sZWFkaW5nX2RlbGltLCBEZWxpbXMuZGVsYXllZF9sZWFkaW5nKTtcbiIsIltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgaG9sZV9zb3J0ID1cbiAgfCBFeHByZXNzaW9uSG9sZVxuICB8IFBhdHRlcm5Ib2xlO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBJZC5NYXAudCgoaG9sZV9zb3J0LCBUeXAudCwgVmFyQ3R4LnQpKTtcbmxldCBlbXB0eTogdCA9IChJZC5NYXAuZW1wdHk6IHQpO1xuIiwiaW5jbHVkZSBJZC5NYXA7XG50eXBlIHQgPSBJZC5NYXAudChBbnkudCk7XG5cbmxldCBhZGRfYWxsID0gKGlkczogbGlzdChJZC50KSwgdG06IEFueS50LCBtYXA6IHQpID0+XG4gIGlkcyB8PiBMaXN0LmZvbGRfbGVmdCgobWFwLCBpZCkgPT4gYWRkKGlkLCB0bSwgbWFwKSwgbWFwKTtcbiIsImluY2x1ZGUgSWQuTWFwO1xudHlwZSB0ID0gSWQuTWFwLnQoVGlsZS50KTtcblxuLy8gdGFpbC1yZWN1cnNpdmVcbmxldCByZWMgbWsgPSAofm1hcD1lbXB0eSwgc2VnOiBTZWdtZW50LnQpOiB0ID0+XG4gIFNlZ21lbnQudGlsZXMoc2VnKVxuICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAobWFwLCB0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgIHQuY2hpbGRyZW5cbiAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KChtYXAsIGtpZCkgPT4gbWsofm1hcCwga2lkKSwgYWRkKHQuaWQsIHQsIG1hcCkpXG4gICAgICAgfSxcbiAgICAgICBtYXAsXG4gICAgICk7XG4iLCIvKiBNQUtFVEVSTVxuXG4gICAgIFRoaXMgcGFyc2VzIHRpbGUgc3RydWN0dXJlIGludG8gdGVybSBzdHJ1Y3R1cmUuXG4gICAgIFRoZSBsYW5ndWFnZSBzeW50YXgsIGFzIGRldGVybWluZWQgYnkgRm9ybS5yZSwgaXMgYW5cbiAgICAgb3BlbiwgZGF0YS1kcml2ZW4gc3lzdGVtLCBzbyBhZGRpbmcgYSBzeW50YWN0aWMgZm9ybVxuICAgICB0aGVyZSB3aWxsIG5vdCB0cmlnZ2VyIGEgc3RhdGljIGVycm9yIGhlcmU7IHlvdSBtdXN0XG4gICAgIHJlbWVtYmVyIHRvIGFkZCBhIGNhc2UgYmVsb3cgZm9yIGVhY2ggbmV3IGZvcm0gYWRkZWRcbiAgICAgdG8gdGhlIHN5bnRheC5cblxuICAgICBXQVJOSU5HOiBUaGlzIG1vZHVsZSBpcyBzdGlsbCBzdHJ1Y3R1cmFsbHkgaW4gZmx1eC5cbiAgICovXG5cbm9wZW4gVXRpbDtcbm9wZW4gQW55O1xuXG4vLyBUT0RPIG1ha2UgbGVzcyBoYWNreVxubGV0IHRva2VucyA9XG4gIFBpZWNlLmdldChcbiAgICBfID0+IFtdLFxuICAgIF8gPT4gW1wiIFwiXSxcbiAgICAodDogVGlsZS50KSA9PiB0LnNoYXJkcyB8PiBMaXN0Lm1hcChMaXN0Lm50aCh0LmxhYmVsKSksXG4gICk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdGlsZSA9IChJZC50LCBBYmEudChUb2tlbi50LCB0KSk7XG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRpbGVzID0gQWJhLnQodGlsZSwgdCk7XG5sZXQgc2luZ2xlID0gKGlkLCBzdWJzdCkgPT4gKFsoaWQsIHN1YnN0KV0sIFtdKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB1bnNvcnRlZCA9XG4gIHwgT3AodGlsZXMpXG4gIHwgUHJlKHRpbGVzLCB0KVxuICB8IFBvc3QodCwgdGlsZXMpXG4gIHwgQmluKHQsIHRpbGVzLCB0KTtcblxubGV0IGlzX25hcnkgPVxuICAgIChpc19zb3J0OiBBbnkudCA9PiBvcHRpb24oJ3NvcnQpLCBkZWxpbTogVG9rZW4udCwgKGRlbGltcywga2lkcyk6IHRpbGVzKVxuICAgIDogb3B0aW9uKGxpc3QoJ3NvcnQpKSA9PlxuICBpZiAoZGVsaW1zIHw+IExpc3QubWFwKHNuZCkgfD4gTGlzdC5mb3JfYWxsKCg9PSkoKFtkZWxpbV0sIFtdKSkpKSB7XG4gICAga2lkcyB8PiBMaXN0Lm1hcChpc19zb3J0KSB8PiBPcHRVdGlsLnNlcXVlbmNlO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBpc190dXBsZV9leHAgPSBpc19uYXJ5KEFueS5pc19leHAsIFwiLFwiKTtcbmxldCBpc190dXBsZV9wYXQgPSBpc19uYXJ5KEFueS5pc19wYXQsIFwiLFwiKTtcbmxldCBpc190dXBsZV90eXAgPSBpc19uYXJ5KEFueS5pc190eXAsIFwiLFwiKTtcbmxldCBpc190eXBfYnN1bSA9IGlzX25hcnkoQW55LmlzX3R5cCwgXCIrXCIpO1xuXG5sZXQgaXNfZ3JvdXQgPSB0aWxlcyA9PlxuICBBYmEuZ2V0X2FzKHRpbGVzKSB8PiBMaXN0Lm1hcChzbmQpIHw+IExpc3QuZm9yX2FsbCgoPT0pKChbXCIgXCJdLCBbXSkpKTtcblxubGV0IGlzX3J1bGVzID0gKCh0cywga2lkcyk6IHRpbGVzKTogb3B0aW9uKEFiYS50KFVQYXQudCwgVUV4cC50KSkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHBzID1cbiAgICB0c1xuICAgIHw+IExpc3QubWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IChfLCAoW1wifFwiLCBcIj0+XCJdLCBbQW55LlBhdChwKV0pKSA9PiBTb21lKHApXG4gICAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgICApXG4gICAgfD4gT3B0VXRpbC5zZXF1ZW5jZVxuICBhbmQrIGNsYXVzZXMgPVxuICAgIGtpZHNcbiAgICB8PiBMaXN0Lm1hcChcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCBFeHAoY2xhdXNlKSA9PiBTb21lKGNsYXVzZSlcbiAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgIClcbiAgICB8PiBPcHRVdGlsLnNlcXVlbmNlO1xuICBBYmEubWsocHMsIGNsYXVzZXMpO1xufTtcblxubGV0IGlkc19vZl90aWxlcyA9ICh0aWxlczogdGlsZXMpID0+IExpc3QubWFwKGZzdCwgQWJhLmdldF9hcyh0aWxlcykpO1xubGV0IGlkcyA9XG4gIGZ1blxuICB8IE9wKHRpbGVzKVxuICB8IFByZSh0aWxlcywgXylcbiAgfCBQb3N0KF8sIHRpbGVzKVxuICB8IEJpbihfLCB0aWxlcywgXykgPT4gaWRzX29mX3RpbGVzKHRpbGVzKTtcblxubGV0IGtpZHNfb2ZfdGlsZSA9ICgoX2lkLCAoX3Rva2Vucywga2lkcykpOiB0aWxlKSA9PiBraWRzO1xubGV0IGtpZHNfb2ZfdGlsZXMgPSAodGlsZXM6IHRpbGVzKSA9PlxuICB0aWxlc1xuICB8PiBBYmEubWFwX2Eoa2lkc19vZl90aWxlKVxuICB8PiBBYmEuam9pbihGdW4uaWQsIGtpZCA9PiBba2lkXSlcbiAgfD4gTGlzdC5jb25jYXQ7XG5sZXQga2lkc19vZl91bnNvcnRlZCA9XG4gIGZ1blxuICB8IE9wKHRpbGVzKSA9PiBraWRzX29mX3RpbGVzKHRpbGVzKVxuICB8IFByZSh0aWxlcywgcikgPT4ga2lkc19vZl90aWxlcyh0aWxlcykgQCBbcl1cbiAgfCBQb3N0KGwsIHRpbGVzKSA9PiBbbF0gQCBraWRzX29mX3RpbGVzKHRpbGVzKVxuICB8IEJpbihsLCB0aWxlcywgcikgPT4gW2xdIEAga2lkc19vZl90aWxlcyh0aWxlcykgQCBbcl07XG5cbi8vIE5lZWQgdGhpcyBtYXAgdG8gY29sbGVjdCBhbGwgc3RydWN0dXJhbCB0ZXJtcyxcbi8vIG5vdCBqdXN0IHRoZSBvbmVzIHJlY29nbml6ZWQgaW4gU3RhdGljcy5cbi8vIFRPRE8gdW5oYWNrXG5sZXQgbWFwOiByZWYoVGVybU1hcC50KSA9IHJlZihJZC5NYXAuZW1wdHkpO1xubGV0IHJldHVybiA9ICh3cmFwLCBpZHMsIHRtKSA9PiB7XG4gIG1hcCA6PSBUZXJtTWFwLmFkZF9hbGwoaWRzLCB3cmFwKHRtKSwgbWFwXik7XG4gIHRtO1xufTtcblxubGV0IHBhcnNlX3N1bV90ZXJtOiBVVHlwLnQgPT4gQ29uc3RydWN0b3JNYXAudmFyaWFudChVVHlwLnQpID1cbiAgZnVuXG4gIHwge3Rlcm06IFZhcihjdHIpLCBpZHMsIF99ID0+IFZhcmlhbnQoY3RyLCBpZHMsIE5vbmUpXG4gIHwge3Rlcm06IEFwKHt0ZXJtOiBWYXIoY3RyKSwgaWRzOiBpZHNfY3RyLCBffSwgdSksIGlkczogaWRzX2FwLCBffSA9PlxuICAgIFZhcmlhbnQoY3RyLCBpZHNfY3RyIEAgaWRzX2FwLCBTb21lKHUpKVxuICB8IHQgPT4gQmFkRW50cnkodCk7XG5cbmxldCByZWMgZ29fcyA9IChzOiBTb3J0LnQsIHNrZWw6IFNrZWwudCwgc2VnOiBTZWdtZW50LnQpOiB0ID0+XG4gIHN3aXRjaCAocykge1xuICB8IFBhdCA9PiBQYXQocGF0KHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFRQYXQgPT4gVFBhdCh0cGF0KHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFR5cCA9PiBUeXAodHlwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IEV4cCA9PiBFeHAoZXhwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFJ1bCA9PiBSdWwocnVsKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IE51bCA9PiBOdWwoKSAvL1RPRE9cbiAgfCBBbnkgPT5cbiAgICBsZXQgdG0gPSB1bnNvcnRlZChza2VsLCBzZWcpO1xuICAgIGxldCBpZHMgPSBpZHModG0pO1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuaGRfb3B0KGlkcykpIHtcbiAgICB8IE5vbmUgPT4gRXhwKGV4cCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgICB8IFNvbWUoaWQpID0+XG4gICAgICBzd2l0Y2ggKFRpbGVNYXAuZmluZF9vcHQoaWQsIFRpbGVNYXAubWsoc2VnKSkpIHtcbiAgICAgIHwgTm9uZSA9PiBFeHAoZXhwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIGlmICh0Lm1vbGQub3V0ID09IEFueSkge1xuICAgICAgICAgIEV4cChleHAodW5zb3J0ZWQoc2tlbCwgc2VnKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdvX3ModC5tb2xkLm91dCwgc2tlbCwgc2VnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuYW5kIGV4cCA9IHVuc29ydGVkID0+IHtcbiAgbGV0ICh0ZXJtLCBpbm5lcl9pZHMpID0gZXhwX3Rlcm0odW5zb3J0ZWQpO1xuICBsZXQgaWRzID0gaWRzKHVuc29ydGVkKSBAIGlubmVyX2lkcztcbiAgcmV0dXJuKGUgPT4gRXhwKGUpLCBpZHMsIHtpZHMsIGNvcGllZDogZmFsc2UsIHRlcm19KTtcbn1cbmFuZCBleHBfdGVybTogdW5zb3J0ZWQgPT4gKFVFeHAudGVybSwgbGlzdChJZC50KSkgPSB7XG4gIGxldCByZXQgPSAodG06IFVFeHAudGVybSkgPT4gKHRtLCBbXSk7XG4gIGxldCBob2xlID0gdW5zb3J0ZWQgPT4gVUV4cC5ob2xlKGtpZHNfb2ZfdW5zb3J0ZWQodW5zb3J0ZWQpKTtcbiAgZnVuXG4gIHwgT3AodGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIC8vIHNpbmdsZS10aWxlIGNhc2VcbiAgICB8IChbKF9pZCwgdCldLCBbXSkgPT5cbiAgICAgIHN3aXRjaCAodCkge1xuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X3R1cGxlKHQpID0+IHJldChUdXBsZShbXSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfd2lsZCh0KSA9PiByZXQoRGVmZXJyYWwoT3V0c2lkZUFwKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV9saXN0KHQpID0+IHJldChMaXN0TGl0KFtdKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19ib29sKHQpID0+IHJldChCb29sKGJvb2xfb2Zfc3RyaW5nKHQpKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19pbnQodCkgPT4gcmV0KEludChpbnRfb2Zfc3RyaW5nKHQpKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19zdHJpbmcodCkgPT5cbiAgICAgICAgcmV0KFN0cmluZyhGb3JtLnN0cmlwX3F1b3Rlcyh0KSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZmxvYXQodCkgPT4gcmV0KEZsb2F0KGZsb2F0X29mX3N0cmluZyh0KSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfdmFyKHQpID0+IHJldChWYXIodCkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfY3RyKHQpID0+IHJldChDb25zdHJ1Y3Rvcih0KSlcbiAgICAgIHwgKFtcIihcIiwgXCIpXCJdLCBbRXhwKGJvZHkpXSkgPT4gcmV0KFBhcmVucyhib2R5KSlcbiAgICAgIHwgKFtcIltcIiwgXCJdXCJdLCBbRXhwKGJvZHkpXSkgPT5cbiAgICAgICAgc3dpdGNoIChib2R5KSB7XG4gICAgICAgIHwge2lkcywgY29waWVkOiBmYWxzZSwgdGVybTogVHVwbGUoZXMpfSA9PiAoTGlzdExpdChlcyksIGlkcylcbiAgICAgICAgfCB0ZXJtID0+IHJldChMaXN0TGl0KFt0ZXJtXSkpXG4gICAgICAgIH1cbiAgICAgIHwgKFtcInRlc3RcIiwgXCJlbmRcIl0sIFtFeHAodGVzdCldKSA9PiByZXQoVGVzdCh0ZXN0KSlcbiAgICAgIHwgKFtcImNhc2VcIiwgXCJlbmRcIl0sIFtSdWwoe2lkcywgdGVybTogUnVsZXMoc2NydXQsIHJ1bGVzKSwgX30pXSkgPT4gKFxuICAgICAgICAgIE1hdGNoKHNjcnV0LCBydWxlcyksXG4gICAgICAgICAgaWRzLFxuICAgICAgICApXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICByZXQoSW52YWxpZCh0KSlcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUHJlKHRpbGVzLCBFeHAocikpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgcmV0KFxuICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgfCAoW1wiJFwiXSwgW10pID0+IFVuT3AoTWV0YShVbnF1b3RlKSwgcilcbiAgICAgICAgfCAoW1wiLVwiXSwgW10pID0+IFVuT3AoSW50KE1pbnVzKSwgcilcbiAgICAgICAgfCAoW1wiIVwiXSwgW10pID0+IFVuT3AoQm9vbChOb3QpLCByKVxuICAgICAgICB8IChbXCJmdW5cIiwgXCItPlwiXSwgW1BhdChwYXQpXSkgPT4gRnVuKHBhdCwgciwgTm9uZSwgTm9uZSlcbiAgICAgICAgfCAoW1wiZml4XCIsIFwiLT5cIl0sIFtQYXQocGF0KV0pID0+IEZpeEYocGF0LCByLCBOb25lKVxuICAgICAgICB8IChbXCJ0eXBmdW5cIiwgXCItPlwiXSwgW1RQYXQodHBhdCldKSA9PiBUeXBGdW4odHBhdCwgciwgTm9uZSlcbiAgICAgICAgfCAoW1wibGV0XCIsIFwiPVwiLCBcImluXCJdLCBbUGF0KHBhdCksIEV4cChkZWYpXSkgPT4gTGV0KHBhdCwgZGVmLCByKVxuICAgICAgICB8IChbXCJoaWRlXCIsIFwiaW5cIl0sIFtFeHAoZmlsdGVyKV0pID0+XG4gICAgICAgICAgRmlsdGVyKEZpbHRlcih7YWN0OiAoRXZhbCwgT25lKSwgcGF0OiBmaWx0ZXJ9KSwgcilcbiAgICAgICAgfCAoW1wiZXZhbFwiLCBcImluXCJdLCBbRXhwKGZpbHRlcildKSA9PlxuICAgICAgICAgIEZpbHRlcihGaWx0ZXIoe2FjdDogKEV2YWwsIEFsbCksIHBhdDogZmlsdGVyfSksIHIpXG4gICAgICAgIHwgKFtcInBhdXNlXCIsIFwiaW5cIl0sIFtFeHAoZmlsdGVyKV0pID0+XG4gICAgICAgICAgRmlsdGVyKEZpbHRlcih7YWN0OiAoU3RlcCwgT25lKSwgcGF0OiBmaWx0ZXJ9KSwgcilcbiAgICAgICAgfCAoW1wiZGVidWdcIiwgXCJpblwiXSwgW0V4cChmaWx0ZXIpXSkgPT5cbiAgICAgICAgICBGaWx0ZXIoRmlsdGVyKHthY3Q6IChTdGVwLCBBbGwpLCBwYXQ6IGZpbHRlcn0pLCByKVxuICAgICAgICB8IChbXCJ0eXBlXCIsIFwiPVwiLCBcImluXCJdLCBbVFBhdCh0cGF0KSwgVHlwKGRlZildKSA9PlxuICAgICAgICAgIFR5QWxpYXModHBhdCwgZGVmLCByKVxuICAgICAgICB8IChbXCJpZlwiLCBcInRoZW5cIiwgXCJlbHNlXCJdLCBbRXhwKGNvbmQpLCBFeHAoY29uc2VxKV0pID0+XG4gICAgICAgICAgSWYoY29uZCwgY29uc2VxLCByKVxuICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQb3N0KEV4cChsKSwgdGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgc3dpdGNoICh0KSB7XG4gICAgICB8IChbXCIoKVwiXSwgW10pID0+XG4gICAgICAgIHJldChcbiAgICAgICAgICBBcChcbiAgICAgICAgICAgIEZvcndhcmQsXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAge2lkczogW0lkLm51bGxhcnlfYXBfZmxhZ10sIGNvcGllZDogZmFsc2UsIHRlcm06IFR1cGxlKFtdKX0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCAoW1wiKFwiLCBcIilcIl0sIFtFeHAoYXJnKV0pID0+XG4gICAgICAgIGxldCB1c2VfZGVmZXJyYWwgPSAoYXJnOiBVRXhwLnQpOiBVRXhwLnQgPT4ge1xuICAgICAgICAgIGlkczogYXJnLmlkcyxcbiAgICAgICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgICAgIHRlcm06IERlZmVycmFsKEluQXApLFxuICAgICAgICB9O1xuICAgICAgICBzd2l0Y2ggKGFyZy50ZXJtKSB7XG4gICAgICAgIHwgXyB3aGVuIFVFeHAuaXNfZGVmZXJyYWwoYXJnKSA9PlxuICAgICAgICAgIHJldChEZWZlcnJlZEFwKGwsIFt1c2VfZGVmZXJyYWwoYXJnKV0pKVxuICAgICAgICB8IFR1cGxlKGVzKSB3aGVuIExpc3QuZXhpc3RzKFVFeHAuaXNfZGVmZXJyYWwsIGVzKSA9PiAoXG4gICAgICAgICAgICBEZWZlcnJlZEFwKFxuICAgICAgICAgICAgICBsLFxuICAgICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgICBhcmcgPT4gVUV4cC5pc19kZWZlcnJhbChhcmcpID8gdXNlX2RlZmVycmFsKGFyZykgOiBhcmcsXG4gICAgICAgICAgICAgICAgZXMsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYXJnLmlkcyxcbiAgICAgICAgICApXG4gICAgICAgIHwgXyA9PiByZXQoQXAoRm9yd2FyZCwgbCwgYXJnKSlcbiAgICAgICAgfTtcbiAgICAgIHwgKFtcIkA8XCIsIFwiPlwiXSwgW1R5cCh0eSldKSA9PiByZXQoVHlwQXAobCwgdHkpKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBCaW4oRXhwKGwpLCB0aWxlcywgRXhwKHIpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAoaXNfdHVwbGVfZXhwKHRpbGVzKSkge1xuICAgIHwgU29tZShiZXR3ZWVuX2tpZHMpID0+IHJldChUdXBsZShbbF0gQCBiZXR3ZWVuX2tpZHMgQCBbcl0pKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoICh0aWxlcykge1xuICAgICAgfCAoWyhfaWQsIHQpXSwgW10pID0+XG4gICAgICAgIHJldChcbiAgICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgICB8IChbXCIrXCJdLCBbXSkgPT4gQmluT3AoSW50KFBsdXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTWludXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIipcIl0sIFtdKSA9PiBCaW5PcChJbnQoVGltZXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIioqXCJdLCBbXSkgPT4gQmluT3AoSW50KFBvd2VyKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIvXCJdLCBbXSkgPT4gQmluT3AoSW50KERpdmlkZSksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPFwiXSwgW10pID0+IEJpbk9wKEludChMZXNzVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPlwiXSwgW10pID0+IEJpbk9wKEludChHcmVhdGVyVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPD1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTGVzc1RoYW5PckVxdWFsKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI+PVwiXSwgW10pID0+IEJpbk9wKEludChHcmVhdGVyVGhhbk9yRXF1YWwpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj09XCJdLCBbXSkgPT4gQmluT3AoSW50KEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiIT1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTm90RXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIrLlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KFBsdXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTWludXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiouXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoVGltZXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi8uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoRGl2aWRlKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIqKi5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChQb3dlciksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPC5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChMZXNzVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPi5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChHcmVhdGVyVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPD0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTGVzc1RoYW5PckVxdWFsKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI+PS5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChHcmVhdGVyVGhhbk9yRXF1YWwpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj09LlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiIT0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTm90RXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCImJlwiXSwgW10pID0+IEJpbk9wKEJvb2woQW5kKSwgbCwgcilcbiAgICAgICAgICB8IChbXCJ8fFwiXSwgW10pID0+IEJpbk9wKEJvb2woT3IpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIjo6XCJdLCBbXSkgPT4gQ29ucyhsLCByKVxuICAgICAgICAgIHwgKFtcIjtcIl0sIFtdKSA9PiBTZXEobCwgcilcbiAgICAgICAgICB8IChbXCIrK1wiXSwgW10pID0+IEJpbk9wKFN0cmluZyhDb25jYXQpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiQ9PVwiXSwgW10pID0+IEJpbk9wKFN0cmluZyhFcXVhbHMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcInw+XCJdLCBbXSkgPT4gQXAoUmV2ZXJzZSwgbCwgcilcbiAgICAgICAgICB8IChbXCJAXCJdLCBbXSkgPT4gTGlzdENvbmNhdChsLCByKVxuICAgICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfVxuICB8IHRtID0+IHJldChob2xlKHRtKSk7XG59XG5hbmQgcGF0ID0gdW5zb3J0ZWQgPT4ge1xuICBsZXQgKHRlcm0sIGlubmVyX2lkcykgPSBwYXRfdGVybSh1bnNvcnRlZCk7XG4gIGxldCBpZHMgPSBpZHModW5zb3J0ZWQpIEAgaW5uZXJfaWRzO1xuICByZXR1cm4ocCA9PiBQYXQocCksIGlkcywge2lkcywgdGVybSwgY29waWVkOiBmYWxzZX0pO1xufVxuYW5kIHBhdF90ZXJtOiB1bnNvcnRlZCA9PiAoVVBhdC50ZXJtLCBsaXN0KElkLnQpKSA9IHtcbiAgbGV0IHJldCA9ICh0ZXJtOiBVUGF0LnRlcm0pID0+ICh0ZXJtLCBbXSk7XG4gIGxldCBob2xlID0gdW5zb3J0ZWQgPT4gVVBhdC5ob2xlKGtpZHNfb2ZfdW5zb3J0ZWQodW5zb3J0ZWQpKTtcbiAgZnVuXG4gIHwgT3AodGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0aWxlKV0sIFtdKSA9PlxuICAgICAgcmV0KFxuICAgICAgICBzd2l0Y2ggKHRpbGUpIHtcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X3R1cGxlKHQpID0+IFR1cGxlKFtdKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZW1wdHlfbGlzdCh0KSA9PiBMaXN0TGl0KFtdKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfYm9vbCh0KSA9PiBCb29sKGJvb2xfb2Zfc3RyaW5nKHQpKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZmxvYXQodCkgPT4gRmxvYXQoZmxvYXRfb2Zfc3RyaW5nKHQpKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfaW50KHQpID0+IEludChpbnRfb2Zfc3RyaW5nKHQpKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfc3RyaW5nKHQpID0+XG4gICAgICAgICAgbGV0IHMgPSBSZS5TdHIuc3RyaW5nX2FmdGVyKHQsIDEpO1xuICAgICAgICAgIGxldCBzID0gUmUuU3RyLnN0cmluZ19iZWZvcmUocywgU3RyaW5nLmxlbmd0aChzKSAtIDEpO1xuICAgICAgICAgIFN0cmluZyhzKTtcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3Zhcih0KSA9PiBWYXIodClcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3dpbGQodCkgPT4gV2lsZFxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfY3RyKHQpID0+IENvbnN0cnVjdG9yKHQpXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gdCAhPSBcIiBcIiAmJiAhRm9ybS5pc19leHBsaWNpdF9ob2xlKHQpID0+XG4gICAgICAgICAgSW52YWxpZCh0KVxuICAgICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW1BhdChib2R5KV0pID0+IFBhcmVucyhib2R5KVxuICAgICAgICB8IChbXCJbXCIsIFwiXVwiXSwgW1BhdChib2R5KV0pID0+XG4gICAgICAgICAgc3dpdGNoIChib2R5KSB7XG4gICAgICAgICAgfCB7dGVybTogVHVwbGUocHMpLCBffSA9PiBMaXN0TGl0KHBzKVxuICAgICAgICAgIHwgdGVybSA9PiBMaXN0TGl0KFt0ZXJtXSlcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICB9LFxuICAgICAgKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IFBvc3QoUGF0KGwpLCB0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIHQpXSwgW10pID0+XG4gICAgICByZXQoXG4gICAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW1BhdChhcmcpXSkgPT4gQXAobCwgYXJnKVxuICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQcmUoXykgYXMgdG0gPT4gcmV0KGhvbGUodG0pKVxuICB8IEJpbihQYXQocCksIHRpbGVzLCBUeXAodHkpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgKFtcIjpcIl0sIFtdKSldLCBbXSkgPT5cbiAgICAgIHJldChDYXN0KHAsIHR5LCBVbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2gpKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IEJpbihQYXQobCksIHRpbGVzLCBQYXQocikpIGFzIHRtID0+XG4gICAgc3dpdGNoIChpc190dXBsZV9wYXQodGlsZXMpKSB7XG4gICAgfCBTb21lKGJldHdlZW5fa2lkcykgPT4gcmV0KFR1cGxlKFtsXSBAIGJldHdlZW5fa2lkcyBAIFtyXSkpXG4gICAgfCBOb25lID0+XG4gICAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgICB8IChbKF9pZCwgKFtcIjo6XCJdLCBbXSkpXSwgW10pID0+IHJldChDb25zKGwsIHIpKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgdG0gPT4gcmV0KGhvbGUodG0pKTtcbn1cbmFuZCB0eXAgPSB1bnNvcnRlZCA9PiB7XG4gIGxldCAodGVybSwgaW5uZXJfaWRzKSA9IHR5cF90ZXJtKHVuc29ydGVkKTtcbiAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCkgQCBpbm5lcl9pZHM7XG4gIHJldHVybih0eSA9PiBUeXAodHkpLCBpZHMsIHtpZHMsIHRlcm0sIGNvcGllZDogZmFsc2V9KTtcbn1cbmFuZCB0eXBfdGVybTogdW5zb3J0ZWQgPT4gKFVUeXAudGVybSwgbGlzdChJZC50KSkgPSB7XG4gIGxldCByZXQgPSAodGVybTogVVR5cC50ZXJtKSA9PiAodGVybSwgW10pO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFVUeXAuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdGlsZSldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0aWxlKSB7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV90dXBsZSh0KSA9PiBQcm9kKFtdKVxuICAgICAgICB8IChbXCJCb29sXCJdLCBbXSkgPT4gQm9vbFxuICAgICAgICB8IChbXCJJbnRcIl0sIFtdKSA9PiBJbnRcbiAgICAgICAgfCAoW1wiRmxvYXRcIl0sIFtdKSA9PiBGbG9hdFxuICAgICAgICB8IChbXCJTdHJpbmdcIl0sIFtdKSA9PiBTdHJpbmdcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3R5cF92YXIodCkgPT4gVmFyKHQpXG4gICAgICAgIHwgKFtcIihcIiwgXCIpXCJdLCBbVHlwKGJvZHkpXSkgPT4gUGFyZW5zKGJvZHkpXG4gICAgICAgIHwgKFtcIltcIiwgXCJdXCJdLCBbVHlwKGJvZHkpXSkgPT4gTGlzdChib2R5KVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICAgIFVua25vd24oSG9sZShJbnZhbGlkKHQpKSlcbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUG9zdChUeXAodCksIHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF8sIChbXCIoXCIsIFwiKVwiXSwgW1R5cCh0eXApXSkpXSwgW10pID0+IHJldChBcCh0LCB0eXApKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICAvKiBmb3JhbGwgYW5kIHJlYyBoYXZlIHRvIGJlIGJlZm9yZSBzdW0gc28gdGhhdCB0aGV5IGJpbmQgdGlnaHRlci5cbiAgICogVGh1cyBgcmVjIEEgLT4gTGVmdChBKSArIFJpZ2h0KEIpYCBnZXQgcGFyc2VkIGFzIGByZWMgQSAtPiAoTGVmdChBKSArIFJpZ2h0KEIpKWBcbiAgICogSWYgdGhpcyBpcyBiZWxvdyB0aGUgY2FzZSBmb3Igc3VtLCB0aGVuIGl0IGdldHMgcGFyc2VkIGFzIGFuIGludmFsaWQgZm9ybS4gKi9cbiAgfCBQcmUoKFsoX2lkLCAoW1wiZm9yYWxsXCIsIFwiLT5cIl0sIFtUUGF0KHRwYXQpXSkpXSwgW10pLCBUeXAodCkpID0+XG4gICAgcmV0KEZvcmFsbCh0cGF0LCB0KSlcbiAgfCBQcmUoKFsoX2lkLCAoW1wicmVjXCIsIFwiLT5cIl0sIFtUUGF0KHRwYXQpXSkpXSwgW10pLCBUeXAodCkpID0+XG4gICAgcmV0KFJlYyh0cGF0LCB0KSlcbiAgfCBQcmUodGlsZXMsIFR5cCh7dGVybTogU3VtKHQwKSwgaWRzLCBffSkpIGFzIHRtID0+XG4gICAgLyogQ2FzZSBmb3IgbGVhZGluZyBwcmVmaXggKyBwcmVjZWVkaW5nIGEgc3VtICovXG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoXywgKFtcIitcIl0sIFtdKSldLCBbXSkgPT4gKFN1bSh0MCksIGlkcylcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQcmUodGlsZXMsIFR5cCh0KSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfLCAoW1wiK1wiXSwgW10pKV0sIFtdKSA9PiByZXQoU3VtKFtwYXJzZV9zdW1fdGVybSh0KV0pKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IEJpbihUeXAodDEpLCB0aWxlcywgVHlwKHQyKSkgYXMgdG0gd2hlbiBpc190eXBfYnN1bSh0aWxlcykgIT0gTm9uZSA9PlxuICAgIHN3aXRjaCAoaXNfdHlwX2JzdW0odGlsZXMpKSB7XG4gICAgfCBTb21lKGJldHdlZW5fa2lkcykgPT5cbiAgICAgIHJldChTdW0oTGlzdC5tYXAocGFyc2Vfc3VtX3Rlcm0sIFt0MV0gQCBiZXR3ZWVuX2tpZHMgQCBbdDJdKSkpXG4gICAgfCBOb25lID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgQmluKFR5cChsKSwgdGlsZXMsIFR5cChyKSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKGlzX3R1cGxlX3R5cCh0aWxlcykpIHtcbiAgICB8IFNvbWUoYmV0d2Vlbl9raWRzKSA9PiByZXQoUHJvZChbbF0gQCBiZXR3ZWVuX2tpZHMgQCBbcl0pKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoICh0aWxlcykge1xuICAgICAgfCAoWyhfaWQsIChbXCItPlwiXSwgW10pKV0sIFtdKSA9PiByZXQoQXJyb3cobCwgcikpXG4gICAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgICAgfVxuICAgIH1cbiAgfCB0bSA9PiByZXQoaG9sZSh0bSkpO1xufVxuYW5kIHRwYXQgPSB1bnNvcnRlZCA9PiB7XG4gIGxldCB0ZXJtID0gdHBhdF90ZXJtKHVuc29ydGVkKTtcbiAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCk7XG4gIHJldHVybih0eSA9PiBUUGF0KHR5KSwgaWRzLCB7aWRzLCB0ZXJtLCBjb3BpZWQ6IGZhbHNlfSk7XG59XG5hbmQgdHBhdF90ZXJtOiB1bnNvcnRlZCA9PiBUUGF0LnRlcm0gPSB7XG4gIGxldCByZXQgPSAodGVybTogVFBhdC50ZXJtKSA9PiB0ZXJtO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFRQYXQuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdGlsZSldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0aWxlKSB7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc190eXBfdmFyKHQpID0+IFZhcih0KVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICAgIEludmFsaWQodClcbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgKFByZShfKSB8IFBvc3QoXykpIGFzIHRtID0+IHJldChob2xlKHRtKSlcbiAgfCB0bSA9PiByZXQoaG9sZSh0bSkpO1xufVxuXG4vLyBhbmQgcnVsID0gdW5zb3J0ZWQgPT4ge1xuLy8gICBsZXQgdGVybSA9IHJ1bF90ZXJtKHVuc29ydGVkKTtcbi8vICAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCk7XG4vLyAgIHJldHVybihyID0+IFJ1bChyKSwgaWRzLCB7aWRzLCB0ZXJtfSk7XG4vLyB9XG5hbmQgcnVsID0gKHVuc29ydGVkOiB1bnNvcnRlZCk6IFJ1bC50ID0+IHtcbiAgbGV0IGhvbGUgPSBSdWwuSG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIHN3aXRjaCAoZXhwKHVuc29ydGVkKSkge1xuICB8IHt0ZXJtOiBNdWx0aUhvbGUoXyksIF99ID0+XG4gICAgc3dpdGNoICh1bnNvcnRlZCkge1xuICAgIHwgQmluKEV4cChzY3J1dCksIHRpbGVzLCBFeHAobGFzdF9jbGF1c2UpKSA9PlxuICAgICAgc3dpdGNoIChpc19ydWxlcyh0aWxlcykpIHtcbiAgICAgIHwgU29tZSgocHMsIGxlYWRpbmdfY2xhdXNlcykpID0+IHtcbiAgICAgICAgICBpZHM6IGlkcyh1bnNvcnRlZCksXG4gICAgICAgICAgdGVybTpcbiAgICAgICAgICAgIFJ1bGVzKHNjcnV0LCBMaXN0LmNvbWJpbmUocHMsIGxlYWRpbmdfY2xhdXNlcyBAIFtsYXN0X2NsYXVzZV0pKSxcbiAgICAgICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB8IE5vbmUgPT4ge2lkczogaWRzKHVuc29ydGVkKSwgdGVybTogaG9sZSwgY29waWVkOiBmYWxzZX1cbiAgICAgIH1cbiAgICB8IF8gPT4ge2lkczogaWRzKHVuc29ydGVkKSwgdGVybTogaG9sZSwgY29waWVkOiBmYWxzZX1cbiAgICB9XG4gIHwgZSA9PiB7aWRzOiBbXSwgdGVybTogUnVsZXMoZSwgW10pLCBjb3BpZWQ6IGZhbHNlfVxuICB9O1xufVxuXG5hbmQgdW5zb3J0ZWQgPSAoc2tlbDogU2tlbC50LCBzZWc6IFNlZ21lbnQudCk6IHVuc29ydGVkID0+IHtcbiAgbGV0IHRpbGVfa2lkcyA9IChwOiBQaWVjZS50KTogbGlzdCh0KSA9PlxuICAgIHN3aXRjaCAocCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbXVxuICAgIHwgVGlsZSh7bW9sZCwgc2hhcmRzLCBjaGlsZHJlbiwgX30pID0+XG4gICAgICBBYmEuYWJhX3RyaXBsZXMoQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pKVxuICAgICAgfD4gTGlzdC5tYXAoKChsLCBraWQsIHIpKSA9PiB7XG4gICAgICAgICAgIGxldCBzID0gbCArIDEgPT0gciA/IExpc3QubnRoKG1vbGQuaW5fLCBsKSA6IFNvcnQuQW55O1xuICAgICAgICAgICBnb19zKHMsIFNlZ21lbnQuc2tlbChraWQpLCBraWQpO1xuICAgICAgICAgfSlcbiAgICB9O1xuXG4gIGxldCByb290OiBBYmEudChQaWVjZS50LCBTa2VsLnQpID1cbiAgICBTa2VsLnJvb3Qoc2tlbCkgfD4gQWJhLm1hcF9hKExpc3QubnRoKHNlZykpO1xuXG4gIC8vIG1haW50YWluaW5nIHRoaXMgYWx0ZXJuYXRpbmcgb3JkZXJlZCBzdHJ1Y3R1cmVcbiAgLy8gZm9yIGhhbmRsaW5nIGluY29tcGxldGUgZm9ybXMgbGF0ZXJcbiAgbGV0IHRpbGVzID1cbiAgICByb290XG4gICAgfD4gQWJhLm1hcF9hYmFzKCgocF9sLCBraWQsIHBfcikpID0+IHtcbiAgICAgICAgIGxldCAoXywgc19sKSA9IFBpZWNlLm5pYl9zb3J0cyhwX2wpO1xuICAgICAgICAgbGV0IChzX3IsIF8pID0gUGllY2UubmliX3NvcnRzKHBfcik7XG4gICAgICAgICBsZXQgcyA9IHNfbCA9PSBzX3IgPyBzX2wgOiBTb3J0LkFueTtcbiAgICAgICAgIGdvX3Mocywga2lkLCBzZWcpO1xuICAgICAgIH0pXG4gICAgfD4gQWJhLm1hcF9hKHBcbiAgICAgICAgIC8vIFRPRE8gdGhyb3cgcHJvcGVyIGV4Y2VwdGlvblxuICAgICAgICAgPT4gKFBpZWNlLmlkKHApLCBBYmEubWsodG9rZW5zKHApLCB0aWxlX2tpZHMocCkpKSk7XG5cbiAgbGV0IChsX3NvcnQsIHJfc29ydCkgPSB7XG4gICAgbGV0IHBfbCA9IEFiYS5maXJzdF9hKHJvb3QpO1xuICAgIGxldCBwX3IgPSBBYmEubGFzdF9hKHJvb3QpO1xuICAgIC8vIFRPRE8gdGhyb3cgcHJvcGVyIGV4Y2VwdGlvbnNcbiAgICBsZXQgKGwsIF8pID0gT3B0aW9uLmdldChQaWVjZS5uaWJzKHBfbCkpO1xuICAgIGxldCAoXywgcikgPSBPcHRpb24uZ2V0KFBpZWNlLm5pYnMocF9yKSk7XG4gICAgKGwuc29ydCwgci5zb3J0KTtcbiAgfTtcblxuICBzd2l0Y2ggKHNrZWwpIHtcbiAgfCBPcChfKSA9PiBPcCh0aWxlcylcbiAgfCBQcmUoXywgcikgPT4gUHJlKHRpbGVzLCBnb19zKHJfc29ydCwgciwgc2VnKSlcbiAgfCBQb3N0KGwsIF8pID0+IFBvc3QoZ29fcyhsX3NvcnQsIGwsIHNlZyksIHRpbGVzKVxuICB8IEJpbihsLCBfLCByKSA9PiBCaW4oZ29fcyhsX3NvcnQsIGwsIHNlZyksIHRpbGVzLCBnb19zKHJfc29ydCwgciwgc2VnKSlcbiAgfTtcbn07XG5cbmxldCBnbyA9XG4gIENvcmUuTWVtby5nZW5lcmFsKFxuICAgIH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsXG4gICAgc2VnID0+IHtcbiAgICAgIG1hcCA6PSBUZXJtTWFwLmVtcHR5O1xuICAgICAgbGV0IGUgPSBleHAodW5zb3J0ZWQoU2VnbWVudC5za2VsKHNlZyksIHNlZykpO1xuICAgICAgKGUsIG1hcF4pO1xuICAgIH0sXG4gICk7XG5cbmxldCBmcm9tX3ppcCA9ICh+ZHVtcF9iYWNrcGFjazogYm9vbCwgfmVyYXNlX2J1ZmZlcjogYm9vbCwgejogWmlwcGVyLnQpID0+IHtcbiAgbGV0IHNlZyA9IFppcHBlci5zbWFydF9zZWcofmR1bXBfYmFja3BhY2ssIH5lcmFzZV9idWZmZXIsIHopO1xuICBnbyhzZWcpO1xufTtcblxubGV0IGZyb21femlwX2Zvcl92aWV3ID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwoXG4gICAgfmNhY2hlX3NpemVfYm91bmQ9MTAwMCxcbiAgICBmcm9tX3ppcCh+ZHVtcF9iYWNrcGFjaz1mYWxzZSwgfmVyYXNlX2J1ZmZlcj10cnVlKSxcbiAgKTtcblxubGV0IGZyb21femlwX2Zvcl9zZW0gPVxuICBDb3JlLk1lbW8uZ2VuZXJhbChcbiAgICB+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLFxuICAgIGZyb21femlwKH5kdW1wX2JhY2twYWNrPXRydWUsIH5lcmFzZV9idWZmZXI9dHJ1ZSksXG4gICk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5tb2R1bGUgTWV0YSA9IHtcbiAgdHlwZSB0ID0ge1xuICAgIGNvbF90YXJnZXQ6IGludCxcbiAgICB0b3VjaGVkOiBUb3VjaGVkLnQsXG4gICAgbWVhc3VyZWQ6IE1lYXN1cmVkLnQsXG4gICAgdGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudCxcbiAgICB1bnNlbGVjdGVkOiBTZWdtZW50LnQsXG4gICAgc2VnbWVudDogU2VnbWVudC50LFxuICAgIHZpZXdfdGVybTogVUV4cC50LFxuICAgIHRlcm1zOiBUZXJtTWFwLnQsXG4gICAgdGlsZXM6IFRpbGVNYXAudCxcbiAgICBob2xlczogbGlzdChHcm91dC50KSxcbiAgICBidWZmZXJfaWRzOiBsaXN0KElkLnQpLFxuICB9O1xuXG4gIGxldCBpbml0ID0gKHo6IFppcHBlci50KSA9PiB7XG4gICAgbGV0IHVuc2VsZWN0ZWQgPSBaaXBwZXIudW5zZWxlY3RfYW5kX3ppcCh6KTtcbiAgICBsZXQgKHZpZXdfdGVybSwgdGVybXMpID0gTWFrZVRlcm0uZ28odW5zZWxlY3RlZCk7XG4gICAge1xuICAgICAgY29sX3RhcmdldDogMCxcbiAgICAgIHRvdWNoZWQ6IFRvdWNoZWQuZW1wdHksXG4gICAgICBtZWFzdXJlZDogTWVhc3VyZWQub2Zfc2VnbWVudCh1bnNlbGVjdGVkKSxcbiAgICAgIHVuc2VsZWN0ZWQsXG4gICAgICB0ZXJtX3JhbmdlczogVGVybVJhbmdlcy5tayh1bnNlbGVjdGVkKSxcbiAgICAgIHNlZ21lbnQ6IFppcHBlci56aXAoeiksXG4gICAgICB0aWxlczogVGlsZU1hcC5tayh1bnNlbGVjdGVkKSxcbiAgICAgIHZpZXdfdGVybSxcbiAgICAgIHRlcm1zLFxuICAgICAgaG9sZXM6IFNlZ21lbnQuaG9sZXModW5zZWxlY3RlZCksXG4gICAgICBidWZmZXJfaWRzOiBTZWxlY3Rpb24uYnVmZmVyX2lkcyh6LnNlbGVjdGlvbiksXG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgdHlwZSBTID0ge1xuICAgIGxldCB0b3VjaGVkOiBUb3VjaGVkLnQ7XG4gICAgbGV0IG1lYXN1cmVkOiBNZWFzdXJlZC50O1xuICAgIGxldCB0ZXJtX3JhbmdlczogVGVybVJhbmdlcy50O1xuICAgIGxldCBjb2xfdGFyZ2V0OiBpbnQ7XG4gIH07XG4gIGxldCBtb2R1bGVfb2ZfdCA9IChtOiB0KTogKG1vZHVsZSBTKSA9PlxuICAgIChtb2R1bGVcbiAgICAge1xuICAgICAgIGxldCB0b3VjaGVkID0gbS50b3VjaGVkO1xuICAgICAgIGxldCBtZWFzdXJlZCA9IG0ubWVhc3VyZWQ7XG4gICAgICAgbGV0IHRlcm1fcmFuZ2VzID0gbS50ZXJtX3JhbmdlcztcbiAgICAgICBsZXQgY29sX3RhcmdldCA9IG0uY29sX3RhcmdldDtcbiAgICAgfSk7XG5cbiAgLy8gc2hvdWxkIG5vdCBiZSBzZXJpYWxpemluZ1xuICBsZXQgc2V4cF9vZl90ID0gXyA9PiBmYWlsd2l0aChcIkVkaXRvci5NZXRhLnNleHBfb2ZfdFwiKTtcbiAgbGV0IHRfb2Zfc2V4cCA9IF8gPT4gZmFpbHdpdGgoXCJFZGl0b3IuTWV0YS50X29mX3NleHBcIik7XG4gIGxldCB5b2pzb25fb2ZfdCA9IF8gPT4gZmFpbHdpdGgoXCJFZGl0b3IuTWV0YS55b2pzb25fb2ZfdFwiKTtcbiAgbGV0IHRfb2ZfeW9qc29uID0gXyA9PiBmYWlsd2l0aChcIkVkaXRvci5NZXRhLnRfb2ZfeW9qc29uXCIpO1xuXG4gIGxldCBuZXh0ID1cbiAgICAgICh+ZWZmZWN0czogbGlzdChFZmZlY3QudCk9W10sIGE6IEFjdGlvbi50LCB6OiBaaXBwZXIudCwgbWV0YTogdCk6IHQgPT4ge1xuICAgIGxldCB7dG91Y2hlZCwgbWVhc3VyZWQsIGNvbF90YXJnZXQsIF99ID0gbWV0YTtcbiAgICBsZXQgdG91Y2hlZCA9IFRvdWNoZWQudXBkYXRlKFRpbWUudGljaygpLCBlZmZlY3RzLCB0b3VjaGVkKTtcbiAgICBsZXQgaXNfZWRpdCA9IEFjdGlvbi5pc19lZGl0KGEpO1xuICAgIGxldCB1bnNlbGVjdGVkID0gaXNfZWRpdCA/IFppcHBlci51bnNlbGVjdF9hbmRfemlwKHopIDogbWV0YS51bnNlbGVjdGVkO1xuICAgIGxldCBtZWFzdXJlZCA9XG4gICAgICBpc19lZGl0XG4gICAgICAgID8gTWVhc3VyZWQub2Zfc2VnbWVudCh+dG91Y2hlZCwgfm9sZD1tZWFzdXJlZCwgdW5zZWxlY3RlZCkgOiBtZWFzdXJlZDtcbiAgICBsZXQgY29sX3RhcmdldCA9XG4gICAgICBzd2l0Y2ggKGEpIHtcbiAgICAgIHwgTW92ZShMb2NhbChVcCB8IERvd24pKVxuICAgICAgfCBTZWxlY3QoUmVzaXplKExvY2FsKFVwIHwgRG93bikpKSA9PiBjb2xfdGFyZ2V0XG4gICAgICB8IF8gPT4gWmlwcGVyLmNhcmV0X3BvaW50KG1lYXN1cmVkLCB6KS5jb2xcbiAgICAgIH07XG4gICAgbGV0ICh2aWV3X3Rlcm0sIHRlcm1zKSA9XG4gICAgICBpc19lZGl0ID8gTWFrZVRlcm0uZ28odW5zZWxlY3RlZCkgOiAobWV0YS52aWV3X3Rlcm0sIG1ldGEudGVybXMpO1xuICAgIHtcbiAgICAgIGNvbF90YXJnZXQsXG4gICAgICB0b3VjaGVkLFxuICAgICAgbWVhc3VyZWQsXG4gICAgICB1bnNlbGVjdGVkLFxuICAgICAgdGVybV9yYW5nZXM6IGlzX2VkaXQgPyBUZXJtUmFuZ2VzLm1rKHVuc2VsZWN0ZWQpIDogbWV0YS50ZXJtX3JhbmdlcyxcbiAgICAgIHNlZ21lbnQ6IFppcHBlci56aXAoeiksXG4gICAgICB0aWxlczogaXNfZWRpdCA/IFRpbGVNYXAubWsodW5zZWxlY3RlZCkgOiBtZXRhLnRpbGVzLFxuICAgICAgdmlld190ZXJtLFxuICAgICAgdGVybXMsXG4gICAgICBob2xlczogaXNfZWRpdCA/IFNlZ21lbnQuaG9sZXModW5zZWxlY3RlZCkgOiBtZXRhLmhvbGVzLFxuICAgICAgYnVmZmVyX2lkczogU2VsZWN0aW9uLmJ1ZmZlcl9pZHMoei5zZWxlY3Rpb24pLFxuICAgIH07XG4gIH07XG59O1xuXG5tb2R1bGUgU3RhdGUgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIHppcHBlcjogWmlwcGVyLnQsXG4gICAgW0BvcGFxdWVdXG4gICAgbWV0YTogTWV0YS50LFxuICB9O1xuXG4gIGxldCBpbml0ID0gemlwcGVyID0+IHt6aXBwZXIsIG1ldGE6IE1ldGEuaW5pdCh6aXBwZXIpfTtcblxuICBsZXQgbmV4dCA9ICh+ZWZmZWN0czogbGlzdChFZmZlY3QudCk9W10sIGE6IEFjdGlvbi50LCB6OiBaaXBwZXIudCwgc3RhdGUpID0+IHtcbiAgICB6aXBwZXI6IHosXG4gICAgbWV0YTogTWV0YS5uZXh0KH5lZmZlY3RzLCBhLCB6LCBzdGF0ZS5tZXRhKSxcbiAgfTtcbn07XG5cbm1vZHVsZSBIaXN0b3J5ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgYWZmaXggPSBsaXN0KChBY3Rpb24udCwgU3RhdGUudCkpO1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IChhZmZpeCwgYWZmaXgpO1xuXG4gIGxldCBlbXB0eSA9IChbXSwgW10pO1xuXG4gIGxldCBhZGQgPSAoYTogQWN0aW9uLnQsIHN0YXRlOiBTdGF0ZS50LCAocHJlLCBfKTogdCk6IHQgPT4gKFxuICAgIFsoYSwgc3RhdGUpLCAuLi5wcmVdLFxuICAgIFtdLFxuICApO1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzdGF0ZTogU3RhdGUudCxcbiAgaGlzdG9yeTogSGlzdG9yeS50LFxuICByZWFkX29ubHk6IGJvb2wsXG59O1xuXG5sZXQgaW5pdCA9ICh+cmVhZF9vbmx5PWZhbHNlLCB6KSA9PiB7XG4gIHN0YXRlOiBTdGF0ZS5pbml0KHopLFxuICBoaXN0b3J5OiBIaXN0b3J5LmVtcHR5LFxuICByZWFkX29ubHksXG59O1xubGV0IGVtcHR5ID0gaWQgPT4gaW5pdCh+cmVhZF9vbmx5PWZhbHNlLCBaaXBwZXIuaW5pdChpZCkpO1xuXG5sZXQgdXBkYXRlX3ogPSAoZjogWmlwcGVyLnQgPT4gWmlwcGVyLnQsIGVkOiB0KSA9PiB7XG4gIC4uLmVkLFxuICBzdGF0ZToge1xuICAgIC4uLmVkLnN0YXRlLFxuICAgIHppcHBlcjogZihlZC5zdGF0ZS56aXBwZXIpLFxuICB9LFxufTtcbmxldCBwdXRfeiA9ICh6OiBaaXBwZXIudCkgPT4gdXBkYXRlX3ooXyA9PiB6KTtcblxubGV0IHVwZGF0ZV96X29wdCA9IChmOiBaaXBwZXIudCA9PiBvcHRpb24oWmlwcGVyLnQpLCBlZDogdCkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHogPSBmKGVkLnN0YXRlLnppcHBlcik7XG4gIHB1dF96KHosIGVkKTtcbn07XG5cbmxldCBuZXdfc3RhdGUgPVxuICAgICh+ZWZmZWN0czogbGlzdChFZmZlY3QudCk9W10sIGE6IEFjdGlvbi50LCB6OiBaaXBwZXIudCwgZWQ6IHQpOiB0ID0+IHtcbiAgbGV0IHN0YXRlID0gU3RhdGUubmV4dCh+ZWZmZWN0cywgYSwgeiwgZWQuc3RhdGUpO1xuICBsZXQgaGlzdG9yeSA9IEhpc3RvcnkuYWRkKGEsIGVkLnN0YXRlLCBlZC5oaXN0b3J5KTtcbiAge3N0YXRlLCBoaXN0b3J5LCByZWFkX29ubHk6IGVkLnJlYWRfb25seX07XG59O1xuXG5sZXQgY2FyZXRfcG9pbnQgPSAoZWQ6IHQpOiBNZWFzdXJlZC5Qb2ludC50ID0+IHtcbiAgbGV0IFN0YXRlLnt6aXBwZXIsIG1ldGF9ID0gZWQuc3RhdGU7XG4gIFppcHBlci5jYXJldF9wb2ludChtZXRhLm1lYXN1cmVkLCB6aXBwZXIpO1xufTtcblxubGV0IHVuZG8gPSAoZWQ6IHQpID0+XG4gIHN3aXRjaCAoZWQuaGlzdG9yeSkge1xuICB8IChbXSwgXykgPT4gTm9uZVxuICB8IChbKGEsIHByZXYpLCAuLi5iZWZvcmVdLCBhZnRlcikgPT5cbiAgICBTb21lKHtcbiAgICAgIHN0YXRlOiBwcmV2LFxuICAgICAgaGlzdG9yeTogKGJlZm9yZSwgWyhhLCBlZC5zdGF0ZSksIC4uLmFmdGVyXSksXG4gICAgICByZWFkX29ubHk6IGVkLnJlYWRfb25seSxcbiAgICB9KVxuICB9O1xubGV0IHJlZG8gPSAoZWQ6IHQpID0+XG4gIHN3aXRjaCAoZWQuaGlzdG9yeSkge1xuICB8IChfLCBbXSkgPT4gTm9uZVxuICB8IChiZWZvcmUsIFsoYSwgbmV4dCksIC4uLmFmdGVyXSkgPT5cbiAgICBTb21lKHtcbiAgICAgIHN0YXRlOiBuZXh0LFxuICAgICAgaGlzdG9yeTogKFsoYSwgZWQuc3RhdGUpLCAuLi5iZWZvcmVdLCBhZnRlciksXG4gICAgICByZWFkX29ubHk6IGVkLnJlYWRfb25seSxcbiAgICB9KVxuICB9O1xuXG5sZXQgY2FuX3VuZG8gPSBlZCA9PiBPcHRpb24uaXNfc29tZSh1bmRvKGVkKSk7XG5sZXQgY2FuX3JlZG8gPSBlZCA9PiBPcHRpb24uaXNfc29tZShyZWRvKGVkKSk7XG5cbmxldCBzZXRfcmVhZF9vbmx5ID0gKGVkLCByZWFkX29ubHkpID0+IHsuLi5lZCwgcmVhZF9vbmx5fTtcblxubGV0IHRyYWlsaW5nX2hvbGVfY3R4ID0gKGVkOiB0LCBpbmZvX21hcDogU3RhdGljcy5NYXAudCkgPT4ge1xuICBsZXQgc2VnbWVudCA9IFppcHBlci51bnNlbGVjdF9hbmRfemlwKGVkLnN0YXRlLnppcHBlcik7XG4gIGxldCBjb252ZXhfZ3JvdXQgPSBTZWdtZW50LmNvbnZleF9ncm91dChzZWdtZW50KTtcbiAgLy8gcHJpbnRfZW5kbGluZShTdHJpbmcuY29uY2F0KFwiOyBcIiwgTGlzdC5tYXAoR3JvdXQuc2hvdywgY29udmV4X2dyb3V0KSkpO1xuICBsZXQgbGFzdCA9IFV0aWwuTGlzdFV0aWwubGFzdF9vcHQoY29udmV4X2dyb3V0KTtcbiAgc3dpdGNoIChsYXN0KSB7XG4gIHwgTm9uZSA9PiBOb25lXG4gIHwgU29tZShncm91dCkgPT5cbiAgICBsZXQgaWQgPSBncm91dC5pZDtcbiAgICBsZXQgaW5mbyA9IElkLk1hcC5maW5kX29wdChpZCwgaW5mb19tYXApO1xuICAgIHN3aXRjaCAoaW5mbykge1xuICAgIHwgU29tZShpbmZvKSA9PiBTb21lKEluZm8uY3R4X29mKGluZm8pKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbiAgfTtcbn07XG4iLCIvKlxuIEEgbmljZSBwcm9wZXJ0eSB3b3VsZCBiZSB0aGF0IGVsYWJvcmF0aW9uIGlzIGlkZW1wb3RlbnQuLi5cbiAqL1xuXG5vcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBNaXNzaW5nVHlwZUluZm87XG5cbm1vZHVsZSBFbGFib3JhdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7ZDogREhFeHAudH07XG59O1xuXG5tb2R1bGUgRWxhYm9yYXRpb25SZXN1bHQgPSB7XG4gIFtAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB0ID1cbiAgICB8IEVsYWJvcmF0ZXMoREhFeHAudCwgVHlwLnQsIERlbHRhLnQpXG4gICAgfCBEb2VzTm90RWxhYm9yYXRlO1xufTtcblxubGV0IGZyZXNoX2Nhc3QgPSAoZDogREhFeHAudCwgdDE6IFR5cC50LCB0MjogVHlwLnQpOiBESEV4cC50ID0+IHtcbiAgVHlwLmVxKHQxLCB0MilcbiAgICA/IGRcbiAgICA6IHtcbiAgICAgIGxldCBkJyA9XG4gICAgICAgIERIRXhwLkNhc3QoZCwgdDEsIFR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSlcbiAgICAgICAgfD4gREhFeHAuZnJlc2hcbiAgICAgICAgfD4gQ2FzdHMudHJhbnNpdGlvbl9tdWx0aXBsZTtcbiAgICAgIERIRXhwLkNhc3QoZCcsIFR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSwgdDIpXG4gICAgICB8PiBESEV4cC5mcmVzaFxuICAgICAgfD4gQ2FzdHMudHJhbnNpdGlvbl9tdWx0aXBsZTtcbiAgICB9O1xufTtcblxubGV0IGZyZXNoX3BhdF9jYXN0ID0gKHA6IERIUGF0LnQsIHQxOiBUeXAudCwgdDI6IFR5cC50KTogREhQYXQudCA9PiB7XG4gIFR5cC5lcSh0MSwgdDIpXG4gICAgPyBwXG4gICAgOiB7XG4gICAgICBsZXQgXyA9IHByaW50X2VuZGxpbmUoXCI9PT09PXZ2dnZ2PT09XCIpO1xuICAgICAgbGV0IF8gPSBwcmludF9lbmRsaW5lKFR5cC5zaG93KHQxKSk7XG4gICAgICBsZXQgXyA9IHByaW50X2VuZGxpbmUoVHlwLnNob3codDIpKTtcbiAgICAgIGxldCBfID0gcHJpbnRfZW5kbGluZShcIj09PT09Xl5eXl49PT1cIik7XG4gICAgICBDYXN0KFxuICAgICAgICBESFBhdC5mcmVzaChDYXN0KHAsIHQxLCBUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpKVxuICAgICAgICB8PiBDYXN0cy5wYXR0ZXJuX2ZpeHVwLFxuICAgICAgICBUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSksXG4gICAgICAgIHQyLFxuICAgICAgKVxuICAgICAgfD4gREhQYXQuZnJlc2hcbiAgICAgIHw+IENhc3RzLnBhdHRlcm5fZml4dXA7XG4gICAgfTtcbn07XG5cbmxldCBlbGFib3JhdGVkX3R5cGUgPSAobTogU3RhdGljcy5NYXAudCwgdWV4cDogVUV4cC50KTogKFR5cC50LCBDdHgudCkgPT4ge1xuICBsZXQgKG1vZGUsIHNlbGZfdHksIGN0eCkgPVxuICAgIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KEV4cC5yZXBfaWQodWV4cCksIG0pKSB7XG4gICAgfCBTb21lKEluZm8uSW5mb0V4cCh7bW9kZSwgdHksIGN0eCwgX30pKSA9PiAobW9kZSwgdHksIGN0eClcbiAgICB8IF8gPT4gcmFpc2UoTWlzc2luZ1R5cGVJbmZvKVxuICAgIH07XG4gIGxldCBlbGFiX3R5ID1cbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICB8IFN5biA9PiBzZWxmX3R5XG4gICAgfCBTeW5GdW4gPT5cbiAgICAgIGxldCAodHkxLCB0eTIpID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCBzZWxmX3R5KTtcbiAgICAgIFR5cC5BcnJvdyh0eTEsIHR5MikgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgfCBTeW5UeXBGdW4gPT5cbiAgICAgIGxldCAodHBhdCwgdHkpID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgc2VsZl90eSk7XG4gICAgICBsZXQgdHBhdCA9IE9wdGlvbi52YWx1ZSh0cGF0LCB+ZGVmYXVsdD1UUGF0LmZyZXNoKEVtcHR5SG9sZSkpO1xuICAgICAgVHlwLkZvcmFsbCh0cGF0LCB0eSkgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgLy8gV2UgbmVlZCB0byByZW1vdmUgdGhlIHN5bnN3aXRjaGVzIGZyb20gdGhpcyB0eXBlLlxuICAgIHwgQW5hKGFuYV90eSkgPT4gVHlwLm1hdGNoX3N5bnN3aXRjaChhbmFfdHksIHNlbGZfdHkpXG4gICAgfTtcbiAgKGVsYWJfdHkgfD4gVHlwLm5vcm1hbGl6ZShjdHgpLCBjdHgpO1xufTtcblxubGV0IGVsYWJvcmF0ZWRfcGF0X3R5cGUgPSAobTogU3RhdGljcy5NYXAudCwgdXBhdDogVVBhdC50KTogKFR5cC50LCBDdHgudCkgPT4ge1xuICBsZXQgKG1vZGUsIHNlbGZfdHksIGN0eCwgcHJldl9zeW5zd2l0Y2gpID1cbiAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChVUGF0LnJlcF9pZCh1cGF0KSwgbSkpIHtcbiAgICB8IFNvbWUoSW5mby5JbmZvUGF0KHttb2RlLCB0eSwgY3R4LCBwcmV2X3N5bnN3aXRjaCwgX30pKSA9PiAoXG4gICAgICAgIG1vZGUsXG4gICAgICAgIHR5LFxuICAgICAgICBjdHgsXG4gICAgICAgIHByZXZfc3luc3dpdGNoLFxuICAgICAgKVxuICAgIHwgXyA9PiByYWlzZShNaXNzaW5nVHlwZUluZm8pXG4gICAgfTtcbiAgbGV0IGVsYWJfdHkgPVxuICAgIHN3aXRjaCAobW9kZSkge1xuICAgIHwgU3luID0+IHNlbGZfdHlcbiAgICB8IFN5bkZ1biA9PlxuICAgICAgbGV0ICh0eTEsIHR5MikgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHNlbGZfdHkpO1xuICAgICAgVHlwLkFycm93KHR5MSwgdHkyKSB8PiBUeXAubWtfZmFzdDtcbiAgICB8IFN5blR5cEZ1biA9PlxuICAgICAgbGV0ICh0cGF0LCB0eSkgPSBUeXAubWF0Y2hlZF9mb3JhbGwoY3R4LCBzZWxmX3R5KTtcbiAgICAgIGxldCB0cGF0ID0gT3B0aW9uLnZhbHVlKHRwYXQsIH5kZWZhdWx0PVRQYXQuZnJlc2goRW1wdHlIb2xlKSk7XG4gICAgICBUeXAuRm9yYWxsKHRwYXQsIHR5KSB8PiBUeXAubWtfZmFzdDtcbiAgICB8IEFuYShhbmFfdHkpID0+XG4gICAgICBzd2l0Y2ggKHByZXZfc3luc3dpdGNoKSB7XG4gICAgICB8IE5vbmUgPT4gYW5hX3R5XG4gICAgICB8IFNvbWUoc3luX3R5KSA9PiBUeXAubWF0Y2hfc3luc3dpdGNoKHN5bl90eSwgYW5hX3R5KVxuICAgICAgfVxuICAgIH07XG4gIChlbGFiX3R5IHw+IFR5cC5ub3JtYWxpemUoY3R4KSwgY3R4KTtcbn07XG5cbmxldCByZWMgZWxhYm9yYXRlX3BhdHRlcm4gPVxuICAgICAgICAobTogU3RhdGljcy5NYXAudCwgdXBhdDogVVBhdC50KTogKERIUGF0LnQsIFR5cC50KSA9PiB7XG4gIGxldCAoZWxhYm9yYXRlZF90eXBlLCBjdHgpID0gZWxhYm9yYXRlZF9wYXRfdHlwZShtLCB1cGF0KTtcbiAgbGV0IGNhc3RfZnJvbSA9ICh0eSwgZXhwKSA9PiBmcmVzaF9wYXRfY2FzdChleHAsIHR5LCBlbGFib3JhdGVkX3R5cGUpO1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSBVUGF0LnVud3JhcCh1cGF0KTtcbiAgbGV0IGRwYXQgPVxuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgSW50KF8pID0+IHVwYXQgfD4gY2FzdF9mcm9tKEludCB8PiBUeXAubWtfZmFzdClcbiAgICB8IEJvb2woXykgPT4gdXBhdCB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdClcbiAgICB8IEZsb2F0KF8pID0+IHVwYXQgfD4gY2FzdF9mcm9tKEZsb2F0IHw+IFR5cC5ta19mYXN0KVxuICAgIHwgU3RyaW5nKF8pID0+IHVwYXQgfD4gY2FzdF9mcm9tKFN0cmluZyB8PiBUeXAubWtfZmFzdClcbiAgICB8IExpc3RMaXQocHMpID0+XG4gICAgICBsZXQgKHBzLCB0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlX3BhdHRlcm4obSksIHBzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIGxldCBpbm5lcl90eXBlID1cbiAgICAgICAgdHlzXG4gICAgICAgIHw+IFR5cC5qb2luX2FsbCh+ZW1wdHk9VW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsIGN0eClcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSk7XG4gICAgICBwc1xuICAgICAgfD4gTGlzdC5tYXAyKChwLCB0KSA9PiBmcmVzaF9wYXRfY2FzdChwLCB0LCBpbm5lcl90eXBlKSwgXywgdHlzKVxuICAgICAgfD4gKFxuICAgICAgICBwcycgPT5cbiAgICAgICAgICBESFBhdC5MaXN0TGl0KHBzJylcbiAgICAgICAgICB8PiByZXdyYXBcbiAgICAgICAgICB8PiBjYXN0X2Zyb20oTGlzdChpbm5lcl90eXBlKSB8PiBUeXAubWtfZmFzdClcbiAgICAgICk7XG4gICAgfCBDb25zKHAxLCBwMikgPT5cbiAgICAgIGxldCAocDEnLCB0eTEpID0gZWxhYm9yYXRlX3BhdHRlcm4obSwgcDEpO1xuICAgICAgbGV0IChwMicsIHR5MikgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwMik7XG4gICAgICBsZXQgdHkyX2lubmVyID0gVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5Mik7XG4gICAgICBsZXQgdHlfaW5uZXIgPVxuICAgICAgICBUeXAuam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5MSwgdHkyX2lubmVyKVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBwMScnID0gZnJlc2hfcGF0X2Nhc3QocDEnLCB0eTEsIHR5X2lubmVyKTtcbiAgICAgIGxldCBwMicnID0gZnJlc2hfcGF0X2Nhc3QocDInLCB0eTIsIExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICAgIERIUGF0LkNvbnMocDEnJywgcDInJylcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFR1cGxlKHBzKSA9PlxuICAgICAgbGV0IChwcycsIHR5cykgPSBMaXN0Lm1hcChlbGFib3JhdGVfcGF0dGVybihtKSwgcHMpIHw+IExpc3RVdGlsLnVuemlwO1xuICAgICAgREhQYXQuVHVwbGUocHMnKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKFR5cC5Qcm9kKHR5cykgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQXAocDEsIHAyKSA9PlxuICAgICAgbGV0IChwMScsIHR5MSkgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwMSk7XG4gICAgICBsZXQgKHAyJywgdHkyKSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHAyKTtcbiAgICAgIGxldCAodHkxbCwgdHkxcikgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHR5MSk7XG4gICAgICBsZXQgcDEnJyA9IGZyZXNoX3BhdF9jYXN0KHAxJywgdHkxLCBBcnJvdyh0eTFsLCB0eTFyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBsZXQgcDInJyA9IGZyZXNoX3BhdF9jYXN0KHAyJywgdHkyLCB0eTFsKTtcbiAgICAgIERIUGF0LkFwKHAxJycsIHAyJycpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkxcik7XG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZCA9PiB1cGF0IHw+IGNhc3RfZnJvbShUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpXG4gICAgfCBWYXIodikgPT5cbiAgICAgIHVwYXRcbiAgICAgIHw+IGNhc3RfZnJvbShcbiAgICAgICAgICAgQ3R4Lmxvb2t1cF92YXIoY3R4LCB2KVxuICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBDdHgudmFyX2VudHJ5KSA9PiB4LnR5cCB8PiBUeXAubm9ybWFsaXplKGN0eCkpXG4gICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpLFxuICAgICAgICAgKVxuICAgIC8vIFR5cGUgYW5ub3RhdGlvbnMgc2hvdWxkIGFscmVhZHkgYXBwZWFyXG4gICAgfCBQYXJlbnMocClcbiAgICB8IENhc3QocCwgXywgXykgPT5cbiAgICAgIGxldCAocCcsIHR5KSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHApO1xuICAgICAgcCcgfD4gY2FzdF9mcm9tKHR5KTtcbiAgICB8IENvbnN0cnVjdG9yKGMpID0+XG4gICAgICB1cGF0XG4gICAgICB8PiBjYXN0X2Zyb20oXG4gICAgICAgICAgIEN0eC5sb29rdXBfY3RyKGN0eCwgYylcbiAgICAgICAgICAgfD4gT3B0aW9uLm1hcCgoeDogQ3R4LnZhcl9lbnRyeSkgPT4geC50eXAgfD4gVHlwLm5vcm1hbGl6ZShjdHgpKVxuICAgICAgICAgICB8PiBPcHRpb24udmFsdWUoXG4gICAgICAgICAgICAgICAgfmRlZmF1bHQ9XG4gICAgICAgICAgICAgICAgICBUeXAubWtfZmFzdChcbiAgICAgICAgICAgICAgICAgICAgVHlwLlN1bShbQmFkRW50cnkoVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKV0pLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgIClcbiAgICB9O1xuICAoZHBhdCwgZWxhYm9yYXRlZF90eXBlKTtcbn07XG5cbi8qIFRoZSBwcmltYXJ5IGdvYWwgb2YgZWxhYm9yYXRpb24gaXMgdG8gY29udmVydCBmcm9tIGEgdHlwZSBzeXN0ZW1cbiAgIHdoZXJlIHdlIGhhdmUgY29uc2lzdGVuY3ksIHRvIGEgdHlwZSBzeXN0ZW0gd2hlcmUgdHlwZXMgYXJlIGVpdGhlclxuICAgZXF1YWwgb3IgdGhleSdyZSBub3QuIEFueXRoaW5nIHRoYXQgd2FzIGp1c3QgY29uc2lzdGVudCBuZWVkcyB0b1xuICAgYmVjb21lIGEgY2FzdC4gW1RoZSBvbmUgb3RoZXIgdGhpbmcgZWxhYm9yYXRpb24gZG9lcyBpcyBtYWtlXG4gICByZWN1cnNpdmUgbGV0IGJpbmRpbmdzIGV4cGxpY2l0Ll1cblxuICAgQXQgdGhlIHRvcCBvZiB0aGlzIGZ1bmN0aW9uIHdlIHdvcmsgb3V0IHRoZSBcImVsYWJvcmF0ZWQgdHlwZVwiIG9mXG4gICBvZiB0aGUgZXhwcmVzc2lvbi4gV2UgYWxzbyByZXR1cm4gdGhpcyBlbGFib3JhdGVkIHR5cGUgc28gd2UgY2FuXG4gICB1c2UgaXQgaW4gdGhlIHJlY3Vyc2l2ZSBjYWxsLiBXaGVuIGVsYWJvcmF0ZSByZXR1cm5zLCB5b3UgY2FuIHRydXN0XG4gICB0aGF0IHRoZSByZXR1cm5lZCBleHByZXNzaW9uIHdpbGwgaGF2ZSB0aGUgcmV0dXJuZWQgdHlwZS4gVGhlcmUgaXNcbiAgIGhvd2V2ZXIsIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSByZXR1cm5lZCB0eXBlIGlzIGV2ZW4gY29uc2lzdGVudCB3aXRoXG4gICB0aGUgXCJlbGFib3JhdGVkIHR5cGVcIiBhdCB0aGUgdG9wLCBzbyB5b3Ugc2hvdWxkIGZyZXNoX2Nhc3QgRVZFUllXSEVSRVxuICAganVzdCBpbiBjYXNlLlxuXG4gICBbTWF0dF0gQSBsb3Qgb2YgdGhlc2UgZnJlc2hfY2FzdCBjYWxscyBhcmUgcmVkdW5kYW50LCBob3dldmVyIGlmIHlvdVxuICAgd2FudCB0byByZW1vdmUgb25lLCBJJ2QgYXNrIHlvdSBpbnN0ZWFkIGNvbW1lbnQgaXQgb3V0IGFuZCBsZWF2ZVxuICAgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IGl0J3MgcmVkdW5kYW50LiAgKi9cbmxldCByZWMgZWxhYm9yYXRlID0gKG06IFN0YXRpY3MuTWFwLnQsIHVleHA6IFVFeHAudCk6IChESEV4cC50LCBUeXAudCkgPT4ge1xuICBsZXQgKGVsYWJvcmF0ZWRfdHlwZSwgY3R4KSA9IGVsYWJvcmF0ZWRfdHlwZShtLCB1ZXhwKTtcbiAgbGV0IGNhc3RfZnJvbSA9ICh0eSwgZXhwKSA9PiBmcmVzaF9jYXN0KGV4cCwgdHksIGVsYWJvcmF0ZWRfdHlwZSk7XG4gIGxldCAodGVybSwgcmV3cmFwKSA9IFVFeHAudW53cmFwKHVleHApO1xuICBsZXQgZGhleHAgPVxuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlID0+IHVleHAgfD4gY2FzdF9mcm9tKFR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpXG4gICAgfCBNdWx0aUhvbGUoc3R1ZmYpID0+XG4gICAgICBBbnkubWFwX3Rlcm0oXG4gICAgICAgIH5mX2V4cD0oXywgZXhwKSA9PiB7ZWxhYm9yYXRlKG0sIGV4cCkgfD4gZnN0fSxcbiAgICAgICAgfmZfcGF0PShfLCBwYXQpID0+IHtlbGFib3JhdGVfcGF0dGVybihtLCBwYXQpIHw+IGZzdH0sXG4gICAgICAgIF8sXG4gICAgICApXG4gICAgICB8PiBMaXN0Lm1hcChfLCBzdHVmZilcbiAgICAgIHw+IChcbiAgICAgICAgc3R1ZmYgPT5cbiAgICAgICAgICBESEV4cC5NdWx0aUhvbGUoc3R1ZmYpXG4gICAgICAgICAgfD4gcmV3cmFwXG4gICAgICAgICAgfD4gY2FzdF9mcm9tKFR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpXG4gICAgICApXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKGUsIGVycikgPT5cbiAgICAgIGxldCAoZScsIF8pID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgRHluYW1pY0Vycm9ySG9sZShlJywgZXJyKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICB8IENhc3QoZSwgXywgXykgLy8gV2UgcmVtb3ZlIHRoZXNlIGNhc3RzIGJlY2F1c2UgdGhleSBzaG91bGQgYmUgcmUtaW5zZXJ0ZWQgaW4gdGhlIHJlY3Vyc2l2ZSBjYWxsXG4gICAgfCBGYWlsZWRDYXN0KGUsIF8sIF8pXG4gICAgfCBQYXJlbnMoZSkgPT5cbiAgICAgIGxldCAoZScsIHR5KSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIGUnIHw+IGNhc3RfZnJvbSh0eSk7XG4gICAgfCBEZWZlcnJhbChfKSA9PiB1ZXhwXG4gICAgfCBJbnQoXykgPT4gdWV4cCB8PiBjYXN0X2Zyb20oSW50IHw+IFR5cC5ta19mYXN0KVxuICAgIHwgQm9vbChfKSA9PiB1ZXhwIHw+IGNhc3RfZnJvbShCb29sIHw+IFR5cC5ta19mYXN0KVxuICAgIHwgRmxvYXQoXykgPT4gdWV4cCB8PiBjYXN0X2Zyb20oRmxvYXQgfD4gVHlwLm1rX2Zhc3QpXG4gICAgfCBTdHJpbmcoXykgPT4gdWV4cCB8PiBjYXN0X2Zyb20oU3RyaW5nIHw+IFR5cC5ta19mYXN0KVxuICAgIHwgTGlzdExpdChlcykgPT5cbiAgICAgIGxldCAoZHMsIHR5cykgPSBMaXN0Lm1hcChlbGFib3JhdGUobSksIGVzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIGxldCBpbm5lcl90eXBlID1cbiAgICAgICAgVHlwLmpvaW5fYWxsKH5lbXB0eT1UeXAuVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsIGN0eCwgdHlzKVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVHlwLlVua25vd24oSW50ZXJuYWwpKSk7XG4gICAgICBsZXQgZHMnID0gTGlzdC5tYXAyKChkLCB0KSA9PiBmcmVzaF9jYXN0KGQsIHQsIGlubmVyX3R5cGUpLCBkcywgdHlzKTtcbiAgICAgIEV4cC5MaXN0TGl0KGRzJylcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKExpc3QoaW5uZXJfdHlwZSkgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQ29uc3RydWN0b3IoYykgPT5cbiAgICAgIHVleHBcbiAgICAgIHw+IGNhc3RfZnJvbShcbiAgICAgICAgICAgQ3R4Lmxvb2t1cF9jdHIoY3R4LCBjKVxuICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBDdHgudmFyX2VudHJ5KSA9PiB4LnR5cCB8PiBUeXAubm9ybWFsaXplKGN0eCkpXG4gICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZShcbiAgICAgICAgICAgICAgICB+ZGVmYXVsdD1cbiAgICAgICAgICAgICAgICAgIFR5cC5ta19mYXN0KFxuICAgICAgICAgICAgICAgICAgICBUeXAuU3VtKFtCYWRFbnRyeShUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpXSksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgKVxuICAgIHwgRnVuKHAsIGUsIGVudiwgbikgPT5cbiAgICAgIGxldCAocCcsIHR5cCkgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwKTtcbiAgICAgIGxldCAoZScsIHR5ZSkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBFeHAuRnVuKHAnLCBlJywgZW52LCBuKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQXJyb3codHlwLCB0eWUpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFR5cEZ1bih0cGF0LCBlLCBuYW1lKSA9PlxuICAgICAgbGV0IChlJywgdHllKSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIEV4cC5UeXBGdW4odHBhdCwgZScsIG5hbWUpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShUeXAuRm9yYWxsKHRwYXQsIHR5ZSkgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgVHVwbGUoZXMpID0+XG4gICAgICBsZXQgKGRzLCB0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlKG0pLCBlcykgfD4gTGlzdFV0aWwudW56aXA7XG4gICAgICBFeHAuVHVwbGUoZHMpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20oUHJvZCh0eXMpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFZhcih2KSA9PlxuICAgICAgdWV4cFxuICAgICAgfD4gY2FzdF9mcm9tKFxuICAgICAgICAgICBDdHgubG9va3VwX3ZhcihjdHgsIHYpXG4gICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKHg6IEN0eC52YXJfZW50cnkpID0+IHgudHlwIHw+IFR5cC5ub3JtYWxpemUoY3R4KSlcbiAgICAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpLFxuICAgICAgICAgKVxuICAgIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICAgIGxldCBhZGRfbmFtZTogKG9wdGlvbihzdHJpbmcpLCBESEV4cC50KSA9PiBESEV4cC50ID0gKFxuICAgICAgICAobmFtZSwgZXhwKSA9PiB7XG4gICAgICAgICAgbGV0ICh0ZXJtLCByZXdyYXApID0gREhFeHAudW53cmFwKGV4cCk7XG4gICAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgICAgfCBGdW4ocCwgZSwgY3R4LCBfKSA9PiBGdW4ocCwgZSwgY3R4LCBuYW1lKSB8PiByZXdyYXBcbiAgICAgICAgICB8IF8gPT4gZXhwXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGxldCAocCwgdHkxKSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHApO1xuICAgICAgaWYgKCFTdGF0aWNzLmlzX3JlY3Vyc2l2ZShjdHgsIHAsIGRlZiwgdHkxKSkge1xuICAgICAgICBsZXQgZGVmID0gYWRkX25hbWUoUGF0LmdldF92YXIocCksIGRlZik7XG4gICAgICAgIGxldCAoZGVmLCB0eTIpID0gZWxhYm9yYXRlKG0sIGRlZik7XG4gICAgICAgIGxldCAoYm9keSwgdHkpID0gZWxhYm9yYXRlKG0sIGJvZHkpO1xuICAgICAgICBFeHAuTGV0KHAsIGZyZXNoX2Nhc3QoZGVmLCB0eTIsIHR5MSksIGJvZHkpXG4gICAgICAgIHw+IHJld3JhcFxuICAgICAgICB8PiBjYXN0X2Zyb20odHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVE9ETzogQWRkIG5hbWVzIHRvIG11dHVhbGx5IHJlY3Vyc2l2ZSBmdW5jdGlvbnNcbiAgICAgICAgLy8gVE9ETzogRG9uJ3QgYWRkIGZpeHBvaW50IGlmIHRoZXJlIGFscmVhZHkgaXMgb25lXG4gICAgICAgIGxldCBkZWYgPSBhZGRfbmFtZShPcHRpb24ubWFwKHMgPT4gcyArKyBcIitcIiwgUGF0LmdldF92YXIocCkpLCBkZWYpO1xuICAgICAgICBsZXQgKGRlZiwgdHkyKSA9IGVsYWJvcmF0ZShtLCBkZWYpO1xuICAgICAgICBsZXQgKGJvZHksIHR5KSA9IGVsYWJvcmF0ZShtLCBib2R5KTtcbiAgICAgICAgbGV0IGZpeGYgPSBGaXhGKHAsIGZyZXNoX2Nhc3QoZGVmLCB0eTIsIHR5MSksIE5vbmUpIHw+IERIRXhwLmZyZXNoO1xuICAgICAgICBFeHAuTGV0KHAsIGZpeGYsIGJvZHkpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkpO1xuICAgICAgfTtcbiAgICB8IEZpeEYocCwgZSwgZW52KSA9PlxuICAgICAgbGV0IChwJywgdHlwKSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHApO1xuICAgICAgbGV0IChlJywgdHllKSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIEV4cC5GaXhGKHAnLCBmcmVzaF9jYXN0KGUnLCB0eWUsIHR5cCksIGVudilcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKHR5cCk7XG4gICAgfCBUeUFsaWFzKF8sIF8sIGUpID0+XG4gICAgICBsZXQgKGUnLCB0eWUpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgZScgfD4gY2FzdF9mcm9tKHR5ZSk7XG4gICAgfCBBcChkaXIsIGYsIGEpID0+XG4gICAgICBsZXQgKGYnLCB0eWYpID0gZWxhYm9yYXRlKG0sIGYpO1xuICAgICAgbGV0IChhJywgdHlhKSA9IGVsYWJvcmF0ZShtLCBhKTtcbiAgICAgIGxldCAodHlmMSwgdHlmMikgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHR5Zik7XG4gICAgICBsZXQgZicnID0gZnJlc2hfY2FzdChmJywgdHlmLCBBcnJvdyh0eWYxLCB0eWYyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBsZXQgYScnID0gZnJlc2hfY2FzdChhJywgdHlhLCB0eWYxKTtcbiAgICAgIEV4cC5BcChkaXIsIGYnJywgYScnKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKHR5ZjIpO1xuICAgIHwgRGVmZXJyZWRBcChmLCBhcmdzKSA9PlxuICAgICAgbGV0IChmJywgdHlmKSA9IGVsYWJvcmF0ZShtLCBmKTtcbiAgICAgIGxldCAoYXJncycsIHR5cykgPSBMaXN0Lm1hcChlbGFib3JhdGUobSksIGFyZ3MpIHw+IExpc3RVdGlsLnVuemlwO1xuICAgICAgbGV0ICh0eWYxLCB0eWYyKSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgdHlmKTtcbiAgICAgIGxldCB0eV9mYXJncyA9IFR5cC5tYXRjaGVkX3Byb2QoY3R4LCBMaXN0Lmxlbmd0aChhcmdzKSwgdHlmMSk7XG4gICAgICBsZXQgZicnID1cbiAgICAgICAgZnJlc2hfY2FzdChcbiAgICAgICAgICBmJyxcbiAgICAgICAgICB0eWYsXG4gICAgICAgICAgQXJyb3coUHJvZCh0eV9mYXJncykgfD4gVHlwLm1rX2Zhc3QsIHR5ZjIpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgICApO1xuICAgICAgbGV0IGFyZ3MnJyA9IExpc3RVdGlsLm1hcDMoZnJlc2hfY2FzdCwgYXJncycsIHR5cywgdHlfZmFyZ3MpO1xuICAgICAgbGV0IHJlbWFpbmluZ19hcmdzID1cbiAgICAgICAgTGlzdC5maWx0ZXIoXG4gICAgICAgICAgKChhcmcsIF8pKSA9PiBFeHAuaXNfZGVmZXJyYWwoYXJnKSxcbiAgICAgICAgICBMaXN0LmNvbWJpbmUoYXJncywgdHlfZmFyZ3MpLFxuICAgICAgICApO1xuICAgICAgbGV0IHJlbWFpbmluZ19hcmdfdHkgPVxuICAgICAgICBQcm9kKExpc3QubWFwKHNuZCwgcmVtYWluaW5nX2FyZ3MpKSB8PiBUeXAubWtfZmFzdDtcbiAgICAgIERlZmVycmVkQXAoZicnLCBhcmdzJycpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShBcnJvdyhyZW1haW5pbmdfYXJnX3R5LCB0eWYyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBUeXBBcChlLCB1dCkgPT5cbiAgICAgIGxldCAoZScsIHR5ZSkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBsZXQgKHRwYXQsIHR5ZScpID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgdHllKTtcbiAgICAgIGxldCB1dCcgPSBUeXAubm9ybWFsaXplKGN0eCwgdXQpO1xuICAgICAgbGV0IHR5ZScnID1cbiAgICAgICAgVHlwLnN1YnN0KFxuICAgICAgICAgIHV0JyxcbiAgICAgICAgICB0cGF0IHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UUGF0LmZyZXNoKEVtcHR5SG9sZSkpLFxuICAgICAgICAgIHR5ZScsXG4gICAgICAgICk7XG4gICAgICBUeXBBcChlJywgdXQpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHllJycpO1xuICAgIHwgSWYoYywgdCwgZikgPT5cbiAgICAgIGxldCAoYycsIHR5YykgPSBlbGFib3JhdGUobSwgYyk7XG4gICAgICBsZXQgKHQnLCB0eXQpID0gZWxhYm9yYXRlKG0sIHQpO1xuICAgICAgbGV0IChmJywgdHlmKSA9IGVsYWJvcmF0ZShtLCBmKTtcbiAgICAgIGxldCB0eSA9XG4gICAgICAgIFR5cC5qb2luKH5maXg9ZmFsc2UsIGN0eCwgdHl0LCB0eWYpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBjJycgPSBmcmVzaF9jYXN0KGMnLCB0eWMsIEJvb2wgfD4gVHlwLm1rX2Zhc3QpO1xuICAgICAgbGV0IHQnJyA9IGZyZXNoX2Nhc3QodCcsIHR5dCwgdHkpO1xuICAgICAgbGV0IGYnJyA9IGZyZXNoX2Nhc3QoZicsIHR5ZiwgdHkpO1xuICAgICAgRXhwLklmKGMnJywgdCcnLCBmJycpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkpO1xuICAgIHwgU2VxKGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCBfKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdHkyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBTZXEoZTEnLCBlMicpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkyKTtcbiAgICB8IFRlc3QoZSkgPT5cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgVGVzdChmcmVzaF9jYXN0KGUnLCB0LCBCb29sIHw+IFR5cC5ta19mYXN0KSlcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKFByb2QoW10pIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEZpbHRlcihraW5kLCBlKSA9PlxuICAgICAgbGV0IChlJywgdCkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBsZXQga2luZCcgPVxuICAgICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgfCBSZXNpZHVlKF8pID0+IGtpbmRcbiAgICAgICAgfCBGaWx0ZXIoe2FjdCwgcGF0fSkgPT4gRmlsdGVyKHthY3QsIHBhdDogZWxhYm9yYXRlKG0sIHBhdCkgfD4gZnN0fSlcbiAgICAgICAgfTtcbiAgICAgIEZpbHRlcihraW5kJywgZScpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odCk7XG4gICAgfCBDbG9zdXJlKGVudiwgZSkgPT5cbiAgICAgIC8vIFNob3VsZCB3ZSBiZSBlbGFib3JhdGluZyB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50P1xuICAgICAgbGV0IChlJywgdCkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBDbG9zdXJlKGVudiwgZScpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odCk7XG4gICAgfCBDb25zKGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0eTEpID0gZWxhYm9yYXRlKG0sIGUxKTtcbiAgICAgIGxldCAoZTInLCB0eTIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIGxldCB0eTJfaW5uZXIgPSBUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkyKTtcbiAgICAgIGxldCB0eV9pbm5lciA9XG4gICAgICAgIFR5cC5qb2luKH5maXg9ZmFsc2UsIGN0eCwgdHkxLCB0eTJfaW5uZXIpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpO1xuICAgICAgbGV0IGUxJycgPSBmcmVzaF9jYXN0KGUxJywgdHkxLCB0eV9pbm5lcik7XG4gICAgICBsZXQgZTInJyA9IGZyZXNoX2Nhc3QoZTInLCB0eTIsIExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICAgIENvbnMoZTEnJywgZTInJykgfD4gcmV3cmFwIHw+IGNhc3RfZnJvbShMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0eTEpID0gZWxhYm9yYXRlKG0sIGUxKTtcbiAgICAgIGxldCAoZTInLCB0eTIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIGxldCB0eV9pbm5lcjEgPSBUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkxKTtcbiAgICAgIGxldCB0eV9pbm5lcjIgPSBUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkyKTtcbiAgICAgIGxldCB0eV9pbm5lciA9XG4gICAgICAgIFR5cC5qb2luKH5maXg9ZmFsc2UsIGN0eCwgdHlfaW5uZXIxLCB0eV9pbm5lcjIpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpO1xuICAgICAgbGV0IGUxJycgPSBmcmVzaF9jYXN0KGUxJywgdHkxLCBMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBsZXQgZTInJyA9IGZyZXNoX2Nhc3QoZTInLCB0eTIsIExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICAgIExpc3RDb25jYXQoZTEnJywgZTInJylcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgZSkgPT5cbiAgICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgICB8IFZhcihcImVcIikgPT4gQ29uc3RydWN0b3IoXCIkZVwiKSB8PiByZXdyYXBcbiAgICAgIHwgVmFyKFwidlwiKSA9PiBDb25zdHJ1Y3RvcihcIiR2XCIpIHw+IHJld3JhcFxuICAgICAgfCBfID0+XG4gICAgICAgIERIRXhwLkVtcHR5SG9sZVxuICAgICAgICB8PiByZXdyYXBcbiAgICAgICAgfD4gY2FzdF9mcm9tKFR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpXG4gICAgICB9XG4gICAgfCBVbk9wKEludChNaW51cyksIGUpID0+XG4gICAgICBsZXQgKGUnLCB0KSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIFVuT3AoSW50KE1pbnVzKSwgZnJlc2hfY2FzdChlJywgdCwgSW50IHw+IFR5cC5ta19mYXN0KSlcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEludCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBVbk9wKEJvb2woTm90KSwgZSkgPT5cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgVW5PcChCb29sKE5vdCksIGZyZXNoX2Nhc3QoZScsIHQsIEJvb2wgfD4gVHlwLm1rX2Zhc3QpKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChJbnQoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBQb3dlciB8IERpdmlkZSkgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgSW50IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBJbnQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oSW50IHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEJpbk9wKFxuICAgICAgICBJbnQoXG4gICAgICAgICAgTGVzc1RoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbiB8IEdyZWF0ZXJUaGFuT3JFcXVhbCB8XG4gICAgICAgICAgRXF1YWxzIHxcbiAgICAgICAgICBOb3RFcXVhbHMsXG4gICAgICAgICkgYXMgb3AsXG4gICAgICAgIGUxLFxuICAgICAgICBlMixcbiAgICAgICkgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgSW50IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBJbnQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChCb29sKEFuZCB8IE9yKSBhcyBvcCwgZTEsIGUyKSA9PlxuICAgICAgbGV0IChlMScsIHQxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdDIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIEJpbk9wKFxuICAgICAgICBvcCxcbiAgICAgICAgZnJlc2hfY2FzdChlMScsIHQxLCBCb29sIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBCb29sIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIClcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEJvb2wgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQmluT3AoRmxvYXQoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBEaXZpZGUgfCBQb3dlcikgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgRmxvYXQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgICBmcmVzaF9jYXN0KGUyJywgdDIsIEZsb2F0IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIClcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEZsb2F0IHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEJpbk9wKFxuICAgICAgICBGbG9hdChcbiAgICAgICAgICBMZXNzVGhhbiB8IExlc3NUaGFuT3JFcXVhbCB8IEdyZWF0ZXJUaGFuIHwgR3JlYXRlclRoYW5PckVxdWFsIHxcbiAgICAgICAgICBFcXVhbHMgfFxuICAgICAgICAgIE5vdEVxdWFscyxcbiAgICAgICAgKSBhcyBvcCxcbiAgICAgICAgZTEsXG4gICAgICAgIGUyLFxuICAgICAgKSA9PlxuICAgICAgbGV0IChlMScsIHQxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdDIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIEJpbk9wKFxuICAgICAgICBvcCxcbiAgICAgICAgZnJlc2hfY2FzdChlMScsIHQxLCBGbG9hdCB8PiBUeXAubWtfZmFzdCksXG4gICAgICAgIGZyZXNoX2Nhc3QoZTInLCB0MiwgRmxvYXQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChTdHJpbmcoQ29uY2F0KSBhcyBvcCwgZTEsIGUyKSA9PlxuICAgICAgbGV0IChlMScsIHQxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdDIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIEJpbk9wKFxuICAgICAgICBvcCxcbiAgICAgICAgZnJlc2hfY2FzdChlMScsIHQxLCBTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgICBmcmVzaF9jYXN0KGUyJywgdDIsIFN0cmluZyB8PiBUeXAubWtfZmFzdCksXG4gICAgICApXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQmluT3AoU3RyaW5nKEVxdWFscykgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgU3RyaW5nIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCdWlsdGluRnVuKGZuKSA9PlxuICAgICAgdWV4cFxuICAgICAgfD4gY2FzdF9mcm9tKFxuICAgICAgICAgICBDdHgubG9va3VwX3ZhcihCdWlsdGlucy5jdHhfaW5pdCwgZm4pXG4gICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKHg6IEN0eC52YXJfZW50cnkpID0+IHgudHlwKVxuICAgICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVHlwLlVua25vd24oSW50ZXJuYWwpKSksXG4gICAgICAgICApXG4gICAgfCBNYXRjaChlLCBjYXNlcykgPT5cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgbGV0IChwcywgZXMpID0gTGlzdFV0aWwudW56aXAoY2FzZXMpO1xuICAgICAgbGV0IChwcycsIHB0eXMpID1cbiAgICAgICAgTGlzdC5tYXAoZWxhYm9yYXRlX3BhdHRlcm4obSksIHBzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIGxldCBqb2luZWRfcHR5ID1cbiAgICAgICAgVHlwLmpvaW5fYWxsKH5lbXB0eT1UeXAuVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsIGN0eCwgcHR5cylcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpO1xuICAgICAgbGV0IHBzJycgPVxuICAgICAgICBMaXN0Lm1hcDIoKHAsIHQpID0+IGZyZXNoX3BhdF9jYXN0KHAsIHQsIGpvaW5lZF9wdHkpLCBwcycsIHB0eXMpO1xuICAgICAgbGV0IGUnJyA9IGZyZXNoX2Nhc3QoZScsIHQsIGpvaW5lZF9wdHkpO1xuICAgICAgbGV0IChlcycsIGV0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlKG0pLCBlcykgfD4gTGlzdFV0aWwudW56aXA7XG4gICAgICBsZXQgam9pbmVkX2V0eSA9XG4gICAgICAgIFR5cC5qb2luX2FsbCh+ZW1wdHk9VHlwLlVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCBjdHgsIGV0eXMpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBlcycnID1cbiAgICAgICAgTGlzdC5tYXAyKChlLCB0KSA9PiBmcmVzaF9jYXN0KGUsIHQsIGpvaW5lZF9ldHkpLCBlcycsIGV0eXMpO1xuICAgICAgTWF0Y2goZScnLCBMaXN0LmNvbWJpbmUocHMnJywgZXMnJykpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShqb2luZWRfZXR5KTtcbiAgICB9O1xuICAoZGhleHAsIGVsYWJvcmF0ZWRfdHlwZSk7XG59O1xuXG4vL2xldCBkaGV4cF9vZl91ZXhwID0gQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMCwgZGhleHBfb2ZfdWV4cCk7XG5cbi8qIFRoaXMgZnVuY3Rpb24gZ2l2ZXMgYSBuZXcgaWQgdG8gYWxsIHRoZSB0eXBlc1xuICAgaW4gdGhlIGV4cHJlc3Npb24uIEl0IGRvZXMgdGhpcyB0byBnZXQgcmlkIG9mXG4gICBhbGwgdGhlIGludmFsaWQgaWRzIHdlIGFkZGVkIHRvIHByZXZlbnQgZ2VuZXJhdGluZ1xuICAgdG9vIG1hbnkgbmV3IGlkcyAqL1xubGV0IGZpeF90eXBfaWRzID1cbiAgRXhwLm1hcF90ZXJtKH5mX3R5cD0oY29udCwgZSkgPT4gZSB8PiBJZFRhZ2dlZC5uZXdfaWRzIHw+IGNvbnQpO1xuXG5sZXQgdWV4cF9lbGFiID0gKG06IFN0YXRpY3MuTWFwLnQsIHVleHA6IFVFeHAudCk6IEVsYWJvcmF0aW9uUmVzdWx0LnQgPT5cbiAgc3dpdGNoIChlbGFib3JhdGUobSwgdWV4cCkpIHtcbiAgfCBleGNlcHRpb24gTWlzc2luZ1R5cGVJbmZvID0+IERvZXNOb3RFbGFib3JhdGVcbiAgfCAoZCwgdHkpID0+IEVsYWJvcmF0ZXMoZCwgdHksIERlbHRhLmVtcHR5KVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge3N0ZXA6IGludH07XG5cbmxldCBpbml0aWFsOiB0ID0ge3N0ZXA6IDB9O1xuXG5sZXQgdGFrZV9zdGVwID0gKHtzdGVwfSkgPT4ge3N0ZXA6IHN0ZXAgKyAxfTtcbmxldCBnZXRfc3RlcCA9ICh7c3RlcH0pID0+IHN0ZXA7XG5sZXQgcHV0X3N0ZXAgPSBzdGVwID0+IHtzdGVwOiBzdGVwfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3RhdHM6IEV2YWx1YXRvclN0YXRzLnQsXG4gIHRlc3RzOiBUZXN0TWFwLnQsXG59O1xuXG5sZXQgaW5pdCA9IHtzdGF0czogRXZhbHVhdG9yU3RhdHMuaW5pdGlhbCwgdGVzdHM6IFRlc3RNYXAuZW1wdHl9O1xuXG5sZXQgdGFrZV9zdGVwID0gKHtzdGF0cywgX30gYXMgZXMpID0+IHtcbiAgLi4uZXMsXG4gIHN0YXRzOiBzdGF0cyB8PiBFdmFsdWF0b3JTdGF0cy50YWtlX3N0ZXAsXG59O1xuXG5sZXQgZ2V0X3N0ZXAgPSAoe3N0YXRzLCBffSkgPT4gc3RhdHMgfD4gRXZhbHVhdG9yU3RhdHMuZ2V0X3N0ZXA7XG5cbmxldCBwdXRfc3RlcCA9IChzdGVwLCBlcykgPT4gey4uLmVzLCBzdGF0czogRXZhbHVhdG9yU3RhdHMucHV0X3N0ZXAoc3RlcCl9O1xuXG5sZXQgYWRkX3Rlc3QgPSAoe3Rlc3RzLCBffSBhcyBlcywgaWQsIHJlcG9ydCkgPT4ge1xuICBsZXQgdGVzdHMgPSB0ZXN0cyB8PiBUZXN0TWFwLmV4dGVuZCgoaWQsIHJlcG9ydCkpO1xuICB7Li4uZXMsIHRlc3RzfTtcbn07XG5cbmxldCBnZXRfdGVzdHMgPSAoe3Rlc3RzLCBffSkgPT4gdGVzdHM7XG5cbmxldCBwdXRfdGVzdHMgPSAodGVzdHMsIGVzKSA9PiB7Li4uZXMsIHRlc3RzfTtcbiIsIm9wZW4gVHJhbnNpdGlvbjtcblxubW9kdWxlIFJlc3VsdCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQm94ZWRWYWx1ZShESEV4cC50KVxuICAgIHwgSW5kZXQoREhFeHAudCk7XG5cbiAgbGV0IHVuYm94ID1cbiAgICBmdW5cbiAgICB8IEJveGVkVmFsdWUoZClcbiAgICB8IEluZGV0KGQpID0+IGQ7XG5cbiAgbGV0IGZhc3RfZXF1YWwgPSAocjEsIHIyKSA9PlxuICAgIHN3aXRjaCAocjEsIHIyKSB7XG4gICAgfCAoQm94ZWRWYWx1ZShkMSksIEJveGVkVmFsdWUoZDIpKVxuICAgIHwgKEluZGV0KGQxKSwgSW5kZXQoZDIpKSA9PiBESEV4cC5mYXN0X2VxdWFsKGQxLCBkMilcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xufTtcblxub3BlbiBSZXN1bHQ7XG5cbm1vZHVsZSBFdmFsdWF0b3JFVk1vZGU6IHtcbiAgdHlwZSBzdGF0dXMgPVxuICAgIHwgQm94ZWRWYWx1ZVxuICAgIHwgSW5kZXRcbiAgICB8IFVuZXZhbDtcblxuICBpbmNsdWRlXG4gICAgRVZfTU9ERSB3aXRoXG4gICAgICB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpIGFuZCB0eXBlIHJlc3VsdCA9IChzdGF0dXMsIERIRXhwLnQpO1xufSA9IHtcbiAgdHlwZSBzdGF0dXMgPVxuICAgIHwgQm94ZWRWYWx1ZVxuICAgIHwgSW5kZXRcbiAgICB8IFVuZXZhbDtcblxuICB0eXBlIHJlc3VsdCA9IChzdGF0dXMsIERIRXhwLnQpO1xuXG4gIHR5cGUgcmVxc3RhdGUgPVxuICAgIHwgQm94ZWRSZWFkeVxuICAgIHwgSW5kZXRSZWFkeVxuICAgIHwgSW5kZXRCbG9ja2VkO1xuXG4gIGxldCAoJiYpID0gKHgsIHkpID0+XG4gICAgc3dpdGNoICh4LCB5KSB7XG4gICAgfCAoSW5kZXRCbG9ja2VkLCBfKSA9PiBJbmRldEJsb2NrZWRcbiAgICB8IChfLCBJbmRldEJsb2NrZWQpID0+IEluZGV0QmxvY2tlZFxuICAgIHwgKEluZGV0UmVhZHksIF8pID0+IEluZGV0UmVhZHlcbiAgICB8IChfLCBJbmRldFJlYWR5KSA9PiBJbmRldFJlYWR5XG4gICAgfCAoQm94ZWRSZWFkeSwgQm94ZWRSZWFkeSkgPT4gQm94ZWRSZWFkeVxuICAgIH07XG5cbiAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAocmVxc3RhdGUsICdhKTtcblxuICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpID0gKHJlcXN0YXRlLCAnYSwgJ2IpOyAvLyBjdW11bGF0aXZlIHN0YXRlLCBjdW11bGF0aXZlIGFyZ3VtZW50cywgY3VtdWxhdGl2ZSAndW5kbydcblxuICB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICBsZXQgdXBkYXRlX3Rlc3QgPSAoc3RhdGUsIGlkLCB2KSA9PlxuICAgIHN0YXRlIDo9IEV2YWx1YXRvclN0YXRlLmFkZF90ZXN0KHN0YXRlXiwgaWQsIHYpO1xuXG4gIGxldCByZXFfdmFsdWUgPSAoZiwgXywgeCkgPT5cbiAgICBzd2l0Y2ggKGYoeCkpIHtcbiAgICB8IChCb3hlZFZhbHVlLCB4KSA9PiAoQm94ZWRSZWFkeSwgeClcbiAgICB8IChJbmRldCwgeCkgPT4gKEluZGV0QmxvY2tlZCwgeClcbiAgICB8IChVbmV2YWwsIF8pID0+IGZhaWx3aXRoKFwiVW5leHBlY3RlZCBVbmV2YWxcIilcbiAgICB9O1xuXG4gIGxldCByZWMgcmVxX2FsbF92YWx1ZSA9IChmLCBpKSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gKEJveGVkUmVhZHksIFtdKVxuICAgIHwgW3gsIC4uLnhzXSA9PiB7XG4gICAgICAgIGxldCAocjEsIHgnKSA9IHJlcV92YWx1ZShmLCB4ID0+IHgsIHgpO1xuICAgICAgICBsZXQgKHIyLCB4cycpID0gcmVxX2FsbF92YWx1ZShmLCBpLCB4cyk7XG4gICAgICAgIChyMSAmJiByMiwgW3gnLCAuLi54cyddKTtcbiAgICAgIH07XG5cbiAgbGV0IHJlcV9maW5hbCA9IChmLCBfLCB4KSA9PlxuICAgIHN3aXRjaCAoZih4KSkge1xuICAgIHwgKEJveGVkVmFsdWUsIHgpID0+IChCb3hlZFJlYWR5LCB4KVxuICAgIHwgKEluZGV0LCB4KSA9PiAoSW5kZXRSZWFkeSwgeClcbiAgICB8IChVbmV2YWwsIF8pID0+IGZhaWx3aXRoKFwiVW5leHBlY3RlZCBVbmV2YWxcIilcbiAgICB9O1xuXG4gIGxldCByZWMgcmVxX2FsbF9maW5hbCA9IChmLCBpKSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gKEJveGVkUmVhZHksIFtdKVxuICAgIHwgW3gsIC4uLnhzXSA9PiB7XG4gICAgICAgIGxldCAocjEsIHgnKSA9IHJlcV9maW5hbChmLCB4ID0+IHgsIHgpO1xuICAgICAgICBsZXQgKHIyLCB4cycpID0gcmVxX2FsbF9maW5hbChmLCBpLCB4cyk7XG4gICAgICAgIChyMSAmJiByMiwgW3gnLCAuLi54cyddKTtcbiAgICAgIH07XG5cbiAgbGV0IHJlcV9maW5hbF9vcl92YWx1ZSA9IChmLCBfLCB4KSA9PlxuICAgIHN3aXRjaCAoZih4KSkge1xuICAgIHwgKEJveGVkVmFsdWUsIHgpID0+IChCb3hlZFJlYWR5LCAoeCwgdHJ1ZSkpXG4gICAgfCAoSW5kZXQsIHgpID0+IChJbmRldFJlYWR5LCAoeCwgZmFsc2UpKVxuICAgIHwgKFVuZXZhbCwgXykgPT4gZmFpbHdpdGgoXCJVbmV4cGVjdGVkIFVuZXZhbFwiKVxuICAgIH07XG5cbiAgbGV0IG90aGVyd2lzZSA9IChfLCBjKSA9PiAoQm94ZWRSZWFkeSwgKCksIGMpO1xuXG4gIGxldCAoYW5kLikgPSAoKHIxLCB4MSwgYzEpLCAocjIsIHgyKSkgPT4gKHIxICYmIHIyLCAoeDEsIHgyKSwgYzEoeDIpKTtcblxuICBsZXQgKGxldC4pID0gKChyLCB4LCBjKSwgcykgPT5cbiAgICBzd2l0Y2ggKHIsIHMoeCkpIHtcbiAgICB8IChCb3hlZFJlYWR5LCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIGlzX3ZhbHVlOiB0cnVlLCBffSkpID0+XG4gICAgICBzdGF0ZV91cGRhdGUoKTtcbiAgICAgIChCb3hlZFZhbHVlLCBleHByKTtcbiAgICB8IChJbmRldFJlYWR5LCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIGlzX3ZhbHVlOiB0cnVlLCBffSkpID0+XG4gICAgICBzdGF0ZV91cGRhdGUoKTtcbiAgICAgIChJbmRldCwgZXhwcik7XG4gICAgfCAoQm94ZWRSZWFkeSwgU3RlcCh7ZXhwciwgc3RhdGVfdXBkYXRlLCBpc192YWx1ZTogZmFsc2UsIF99KSlcbiAgICB8IChJbmRldFJlYWR5LCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIGlzX3ZhbHVlOiBmYWxzZSwgX30pKSA9PlxuICAgICAgc3RhdGVfdXBkYXRlKCk7XG4gICAgICAoVW5ldmFsLCBleHByKTtcbiAgICB8IChCb3hlZFJlYWR5LCBDb25zdHJ1Y3RvcikgPT4gKEJveGVkVmFsdWUsIGMpXG4gICAgfCAoSW5kZXRSZWFkeSwgQ29uc3RydWN0b3IpID0+IChJbmRldCwgYylcbiAgICB8IChJbmRldEJsb2NrZWQsIF8pID0+IChJbmRldCwgYylcbiAgICB8IChfLCBJbmRldCkgPT4gKEluZGV0LCBjKVxuICAgIH07XG59O1xubW9kdWxlIEV2YWwgPSBUcmFuc2l0aW9uKEV2YWx1YXRvckVWTW9kZSk7XG5cbmxldCByZWMgZXZhbHVhdGUgPSAoc3RhdGUsIGVudiwgZCkgPT4ge1xuICBsZXQgdSA9IEV2YWwudHJhbnNpdGlvbihldmFsdWF0ZSwgc3RhdGUsIGVudiwgZCk7XG4gIHN3aXRjaCAodSkge1xuICB8IChCb3hlZFZhbHVlLCB4KSA9PiAoQm94ZWRWYWx1ZSwgeClcbiAgfCAoSW5kZXQsIHgpID0+IChJbmRldCwgeClcbiAgfCAoVW5ldmFsLCB4KSA9PiBldmFsdWF0ZShzdGF0ZSwgZW52LCB4KVxuICB9O1xufTtcblxubGV0IGV2YWx1YXRlID0gKGVudiwge2QsIF99OiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpID0+IHtcbiAgbGV0IHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLmluaXQpO1xuICBsZXQgZW52ID0gQ2xvc3VyZUVudmlyb25tZW50Lm9mX2Vudmlyb25tZW50KGVudik7XG4gIGxldCByZXN1bHQgPSBldmFsdWF0ZShzdGF0ZSwgZW52LCBkKTtcbiAgbGV0IHJlc3VsdCA9XG4gICAgc3dpdGNoIChyZXN1bHQpIHtcbiAgICB8IChCb3hlZFZhbHVlLCB4KSA9PiBCb3hlZFZhbHVlKHggfD4gREhFeHAucmVwYWlyX2lkcylcbiAgICB8IChJbmRldCwgeCkgPT4gSW5kZXQoeCB8PiBESEV4cC5yZXBhaXJfaWRzKVxuICAgIHwgKFVuZXZhbCwgeCkgPT4gSW5kZXQoeCB8PiBESEV4cC5yZXBhaXJfaWRzKVxuICAgIH07XG4gIChzdGF0ZV4sIHJlc3VsdCk7XG59O1xuIiwib3BlbiBVdGlsO1xuXG4vLyBpbnZhcmlhbnQ6IGFsd2F5cyBoYXMgYXQgbGVhc3Qgb25lIG9wdGlvblxudHlwZSBwcmV0dHkgPSBsaXN0KFNlZ21lbnQudCk7XG5cbmxldCBwX2NvbmNhdCA9IChwcmV0dHkyLCBwcmV0dHkxKSA9PlxuICBMaXN0Lm1hcChwaWVjZTEgPT4gTGlzdC5tYXAocGllY2UyID0+IHBpZWNlMSBAIHBpZWNlMiwgcHJldHR5MiksIHByZXR0eTEpXG4gIHw+IExpc3QuZmxhdHRlbjtcbmxldCBwX29yID0gKHByZXR0eTIsIHByZXR0eTEpID0+IHByZXR0eTEgQCBwcmV0dHkyO1xubGV0IHBfb3JpZiA9IChjb25kLCBwcmV0dHkyLCBwcmV0dHkxKSA9PlxuICBpZiAoY29uZCkge1xuICAgIHByZXR0eTEgQCBwcmV0dHkyO1xuICB9IGVsc2Uge1xuICAgIHByZXR0eTI7XG4gIH07XG5sZXQgcF9qdXN0ID0gc2VnbWVudCA9PiBbc2VnbWVudF07XG5cbmxldCBwX2NvbmNhdCA9IChwcmV0dGllczogbGlzdChwcmV0dHkpKSA9PlxuICBMaXN0LmZvbGRfbGVmdChwX2NvbmNhdCwgW1tdXSwgcHJldHRpZXMpO1xuXG5sZXQgKGxldCspID0gKHByZXR0eSwgZikgPT4gTGlzdC5tYXAoZiwgcHJldHR5KTtcbmxldCAoYW5kKykgPSAocHJldHR5MSwgcHJldHR5MikgPT4gTGlzdFV0aWwuY3Jvc3MocHJldHR5MSwgcHJldHR5Mik7XG5cbmxldCAoIGxldCogKSA9IChwcmV0dHksIGYpID0+IExpc3QubWFwKGYsIHByZXR0eSkgfD4gTGlzdC5mbGF0dGVuO1xubGV0ICggYW5kKiApID0gKHByZXR0eTEsIHByZXR0eTIpID0+IExpc3RVdGlsLmNyb3NzKHByZXR0eTEsIHByZXR0eTIpO1xuXG5sZXQgcmVjIGFsbCA9XG4gIGZ1blxuICB8IFtdID0+IFtbXV1cbiAgfCBbeCwgLi4ueHNdID0+IHtcbiAgICAgIGxldCByZXN0ID0gYWxsKHhzKTtcbiAgICAgIExpc3QuZmxhdHRlbihMaXN0Lm1hcCh4ID0+IExpc3QubWFwKHJlc3QgPT4gW3gsIC4uLnJlc3RdLCByZXN0KSwgeCkpO1xuICAgIH07XG5cbmxldCBzZWxlY3Q6IHByZXR0eSA9PiBTZWdtZW50LnQgPVxuICBzZWcgPT5cbiAgICBMaXN0VXRpbC5taW5pbXVtKFxuICAgICAgcyA9PiB7XG4gICAgICAgIGxldCB1ID1cbiAgICAgICAgICBNZWFzdXJlZC53aWR0aF9jb3N0KHMsIDgwKSAqIDEwMCArIE1lYXN1cmVkLnNlZ21lbnRfaGVpZ2h0KHMpO1xuICAgICAgICB1O1xuICAgICAgfSxcbiAgICAgIHNlZyxcbiAgICApXG4gICAgfD4gT3B0aW9uLmdldDtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gUHJldHR5U2VnbWVudDtcbm9wZW4gQmFzZTtcblxubGV0IHNob3VsZF9hZGRfc3BhY2UgPSAoczEsIHMyKSA9PlxuICBzd2l0Y2ggKCkge1xuICB8IF8gd2hlbiBTdHJpbmcuZW5kc193aXRoKHMxLCB+c3VmZml4PVwiKFwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuZW5kc193aXRoKHMxLCB+c3VmZml4PVwiW1wiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuc3RhcnRzX3dpdGgoczIsIH5wcmVmaXg9XCIpXCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIl1cIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLnN0YXJ0c193aXRoKHMyLCB+cHJlZml4PVwiLFwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuc3RhcnRzX3dpdGgoczIsIH5wcmVmaXg9XCI7XCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIjpcIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLmVuZHNfd2l0aChzMSwgfnN1ZmZpeD1cIiBcIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLnN0YXJ0c193aXRoKHMyLCB+cHJlZml4PVwiIFwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuZW5kc193aXRoKHMxLCB+c3VmZml4PVwiXFxuXCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIlxcblwiKSA9PiBmYWxzZVxuICB8IF8gPT4gdHJ1ZVxuICB9O1xuXG5sZXQgdGV4dF90b19wcmV0dHkgPSAoaWQsIHNvcnQsIHN0cik6IHByZXR0eSA9PiB7XG4gIHBfanVzdChbXG4gICAgVGlsZSh7XG4gICAgICBpZCxcbiAgICAgIGxhYmVsOiBbc3RyXSxcbiAgICAgIG1vbGQ6IE1vbGQubWtfb3Aoc29ydCwgW10pLFxuICAgICAgc2hhcmRzOiBbMF0sXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgfSksXG4gIF0pO1xufTtcblxubGV0IG1rX2Zvcm0gPSAoZm9ybV9uYW1lOiBzdHJpbmcsIGlkLCBjaGlsZHJlbik6IFBpZWNlLnQgPT4ge1xuICBsZXQgZm9ybTogRm9ybS50ID0gRm9ybS5nZXQoZm9ybV9uYW1lKTtcbiAgYXNzZXJ0KExpc3QubGVuZ3RoKGNoaWxkcmVuKSA9PSBMaXN0Lmxlbmd0aChmb3JtLm1vbGQuaW5fKSk7XG4gIC8vIEFkZCB3aGl0ZXNwYWNlc1xuICBsZXQgY2hpbGRyZW4gPVxuICAgIEFiYS5tYXBfYWJhcyhcbiAgICAgICgobCwgY2hpbGQsIHIpKSA9PiB7XG4gICAgICAgIGxldCBsc3BhY2UgPSBzaG91bGRfYWRkX3NwYWNlKGwsIGNoaWxkIHw+IFNlZ21lbnQuZmlyc3Rfc3RyaW5nKTtcbiAgICAgICAgbGV0IHJzcGFjZSA9IHNob3VsZF9hZGRfc3BhY2UoY2hpbGQgfD4gU2VnbWVudC5sYXN0X3N0cmluZywgcik7XG4gICAgICAgIChsc3BhY2UgPyBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19zcGFjZShJZC5taygpKSldIDogW10pXG4gICAgICAgIEAgKFxuICAgICAgICAgIHJzcGFjZSA/IGNoaWxkIEAgW1NlY29uZGFyeShTZWNvbmRhcnkubWtfc3BhY2UoSWQubWsoKSkpXSA6IGNoaWxkXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgQWJhLm1rKGZvcm0ubGFiZWwsIGNoaWxkcmVuKSxcbiAgICApXG4gICAgfD4gQWJhLmdldF9icztcbiAgVGlsZSh7XG4gICAgaWQsXG4gICAgbGFiZWw6IGZvcm0ubGFiZWwsXG4gICAgbW9sZDogZm9ybS5tb2xkLFxuICAgIHNoYXJkczogTGlzdC5pbml0KExpc3QubGVuZ3RoKGNoaWxkcmVuKSArIDEsIG4gPT4gbiksXG4gICAgY2hpbGRyZW4sXG4gIH0pO1xufTtcblxuLyogSEFDS1tNYXR0XTogU29tZXRpbWVzIHRlcm1zIHRoYXQgc2hvdWxkIGhhdmUgbXVsdGlwbGUgaWRzIHdvbid0IGJlY2F1c2VcbiAgIGV2YWx1YXRpb24gb25seSBldmVyIGdpdmVzIHRoZW0gb25lICovXG5sZXQgcGFkX2lkcyA9IChuOiBpbnQsIGlkczogbGlzdChJZC50KSk6IGxpc3QoSWQudCkgPT4ge1xuICBsZXQgbGVuID0gTGlzdC5sZW5ndGgoaWRzKTtcbiAgaWYgKGxlbiA8IG4pIHtcbiAgICBpZHMgQCBMaXN0LmluaXQobiAtIGxlbiwgXyA9PiBJZC5taygpKTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0VXRpbC5zcGxpdF9uKG4sIGlkcykgfD4gZnN0O1xuICB9O1xufTtcblxubGV0IChAKSA9IChzZWcxOiBTZWdtZW50LnQsIHNlZzI6IFNlZ21lbnQudCk6IFNlZ21lbnQudCA9PlxuICBzd2l0Y2ggKHNlZzEsIHNlZzIpIHtcbiAgfCAoW10sIF8pID0+IHNlZzJcbiAgfCAoXywgW10pID0+IHNlZzFcbiAgfCBfID0+XG4gICAgaWYgKHNob3VsZF9hZGRfc3BhY2UoXG4gICAgICAgICAgU2VnbWVudC5sYXN0X3N0cmluZyhzZWcxKSxcbiAgICAgICAgICBTZWdtZW50LmZpcnN0X3N0cmluZyhzZWcyKSxcbiAgICAgICAgKSkge1xuICAgICAgc2VnMSBAIFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX3NwYWNlKElkLm1rKCkpKV0gQCBzZWcyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWcxIEAgc2VnMjtcbiAgICB9XG4gIH07XG5cbi8qIFdlIGFzc3VtZSB0aGF0IHBhcmVudGhlc2VzIGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkIGFzIG5lY2Vzc2FyeSwgYW5kXG4gICAgICB0aGF0IHRoZSBleHByZXNzaW9uIGhhcyBubyBEeW5hbWljRXJyb3JIb2xlcywgQ2FzdHMsIG9yIEZhaWxlZENhc3RzXG4gICAqL1xubGV0IHJlYyBleHBfdG9fcHJldHR5ID0gKH5pbmxpbmUsIGV4cDogRXhwLnQpOiBwcmV0dHkgPT4ge1xuICBsZXQgZ28gPSAofmlubGluZT1pbmxpbmUpID0+IGV4cF90b19wcmV0dHkofmlubGluZSk7XG4gIHN3aXRjaCAoZXhwIHw+IEV4cC50ZXJtX29mKSB7XG4gIC8vIEFzc3VtZSB0aGVzZSBoYXZlIGJlZW4gcmVtb3ZlZCBieSB0aGUgcGFyZW50aGVzaXplclxuICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgfCBDYXN0KF8pXG4gIHwgRmFpbGVkQ2FzdChfKVxuICB8IENsb3N1cmUoXylcbiAgfCBGaWx0ZXIoXykgPT4gZmFpbHdpdGgoXCJwcmludGluZyB0aGVzZSBub3QgaW1wbGVtZW50ZWQgeWV0XCIpXG4gIC8vIE90aGVyIGNhc2VzXG4gIHwgSW52YWxpZCh4KSA9PiB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIHgpXG4gIHwgRW1wdHlIb2xlID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgcF9qdXN0KFtHcm91dCh7aWQsIHNoYXBlOiBDb252ZXh9KV0pO1xuICB8IEJvb2woYikgPT4gdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBCb29sLnRvX3N0cmluZyhiKSlcbiAgfCBJbnQobikgPT4gdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBJbnQudG9fc3RyaW5nKG4pKVxuICAvLyBUT0RPOiBkbyBmbG9hdHMgcHJpbnQgcmlnaHQ/XG4gIHwgRmxvYXQoZikgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIEZsb2F0LnRvX3N0cmluZyhmKSlcbiAgfCBTdHJpbmcocykgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIFwiXFxcIlwiICsrIHMgKysgXCJcXFwiXCIpXG4gIHwgQ29uc3RydWN0b3IoYykgPT4gdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBjKVxuICB8IExpc3RMaXQoW10pID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgXCJbXVwiKVxuICB8IERlZmVycmFsKF8pID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgXCJkZWZlcnJhbFwiKVxuICB8IExpc3RMaXQoW3gsIC4uLnhzXSkgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQqIHggPSBnbyh4KVxuICAgIGFuZCogeHMgPSB4cyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIGxldCAoaWQsIGlkcykgPSAoXG4gICAgICBleHAuaWRzIHw+IExpc3QuaGQsXG4gICAgICBleHAuaWRzIHw+IExpc3QudGwgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh4cykpLFxuICAgICk7XG4gICAgbGV0IGZvcm0gPSAoeCwgeHMpID0+XG4gICAgICBta19mb3JtKFxuICAgICAgICBcImxpc3RfbGl0X2V4cFwiLFxuICAgICAgICBpZCxcbiAgICAgICAgW1xuICAgICAgICAgIHhcbiAgICAgICAgICBAIExpc3QuZmxhdHRlbihcbiAgICAgICAgICAgICAgTGlzdC5tYXAyKFxuICAgICAgICAgICAgICAgIChpZCwgeCkgPT4gW21rX2Zvcm0oXCJjb21tYV9leHBcIiwgaWQsIFtdKV0gQCB4LFxuICAgICAgICAgICAgICAgIGlkcyxcbiAgICAgICAgICAgICAgICB4cyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApO1xuICAgIHBfanVzdChbZm9ybSh4LCB4cyldKVxuICAgIHw+IHBfb3JpZihcbiAgICAgICAgICFpbmxpbmUsXG4gICAgICAgICBwX2p1c3QoXG4gICAgICAgICAgIHtcbiAgICAgICAgICAgICBsZXQgeCA9IFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXSBAIHg7XG4gICAgICAgICAgICAgbGV0IHhzID1cbiAgICAgICAgICAgICAgIHhzXG4gICAgICAgICAgICAgICB8PiBMaXN0Lm1hcCh4ID0+XG4gICAgICAgICAgICAgICAgICAgIFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXSBAIHhcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgIHw+IExpc3RVdGlsLm1hcF9sYXN0X29ubHkoeCA9PlxuICAgICAgICAgICAgICAgICAgICB4IEAgW1NlY29uZGFyeShTZWNvbmRhcnkubWtfbmV3bGluZShJZC5taygpKSldXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgIFtmb3JtKHgsIHhzKV07XG4gICAgICAgICAgIH0sXG4gICAgICAgICApLFxuICAgICAgICk7XG4gIHwgVmFyKHYpID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgdilcbiAgfCBCaW5PcChvcCwgbCwgcikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGwgPSBnbyhsKVxuICAgIGFuZCsgciA9IGdvKHIpO1xuICAgIGxcbiAgICBAIFtcbiAgICAgIFRpbGUoe1xuICAgICAgICBpZCxcbiAgICAgICAgbGFiZWw6IFtPcGVyYXRvcnMuYmluX29wX3RvX3N0cmluZyhvcCldLFxuICAgICAgICBtb2xkOiBNb2xkLm1rX2JpbihQcmVjZWRlbmNlLm9mX2Jpbl9vcChvcCksIFNvcnQuRXhwLCBbXSksXG4gICAgICAgIHNoYXJkczogWzBdLFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICB9KSxcbiAgICBdXG4gICAgQCByO1xuICB8IE11bHRpSG9sZShlcykgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGVzID0gZXMgfD4gTGlzdC5tYXAoYW55X3RvX3ByZXR0eSh+aW5saW5lKSkgfD4gYWxsO1xuICAgIExpc3RVdGlsLmZsYXRfaW50ZXJzcGVyc2UoR3JvdXQoe2lkLCBzaGFwZTogQ29uY2F2ZX0pLCBlcyk7XG4gIHwgRnVuKHAsIGUsIF8sIF8pID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBwID0gcGF0X3RvX3ByZXR0eSh+aW5saW5lLCBwKVxuICAgIGFuZCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwiZnVuX1wiLCBpZCwgW3BdKV0gQCBlO1xuICB8IFR5cEZ1bih0cCwgZSwgXykgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIHRwID0gdHBhdF90b19wcmV0dHkofmlubGluZSwgdHApXG4gICAgYW5kKyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJ0eXBmdW5cIiwgaWQsIFt0cF0pXSBAIGU7XG4gIHwgVHVwbGUoW10pID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgXCIoKVwiKVxuICB8IFR1cGxlKFtfXSkgPT4gZmFpbHdpdGgoXCJTaW5nbGV0b24gVHVwbGVzIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFR1cGxlKFt4LCAuLi54c10pID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0KyB4ID0gZ28oeClcbiAgICBhbmQrIHhzID0geHMgfD4gTGlzdC5tYXAoZ28pIHw+IGFsbDtcbiAgICBsZXQgaWRzID0gZXhwLmlkcyB8PiBwYWRfaWRzKExpc3QubGVuZ3RoKHhzKSk7XG4gICAgeFxuICAgIEAgTGlzdC5mbGF0dGVuKFxuICAgICAgICBMaXN0Lm1hcDIoKGlkLCB4KSA9PiBbbWtfZm9ybShcImNvbW1hX2V4cFwiLCBpZCwgW10pXSBAIHgsIGlkcywgeHMpLFxuICAgICAgKTtcbiAgfCBMZXQocCwgZTEsIGUyKSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgcCA9IHBhdF90b19wcmV0dHkofmlubGluZSwgcClcbiAgICBhbmQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKTtcbiAgICBsZXQgZTIgPSBpbmxpbmUgPyBlMiA6IFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXSBAIGUyO1xuICAgIFtta19mb3JtKFwibGV0X1wiLCBpZCwgW3AsIGUxXSldIEAgZTI7XG4gIHwgRml4RihwLCBlLCBfKSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgcCA9IHBhdF90b19wcmV0dHkofmlubGluZSwgcClcbiAgICBhbmQrIGUgPSBnbyhlKTtcbiAgICBbbWtfZm9ybShcImZpeFwiLCBpZCwgW3BdKV0gQCBlO1xuICB8IFR5QWxpYXModHAsIHQsIGUpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyB0cCA9IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICAgIGFuZCsgdCA9IHR5cF90b19wcmV0dHkofmlubGluZSwgdClcbiAgICBhbmQrIGUgPSBnbyhlKTtcbiAgICBsZXQgZSA9IGlubGluZSA/IGUgOiBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCBlO1xuICAgIFtta19mb3JtKFwidHlhbGlhc1wiLCBpZCwgW3RwLCB0XSldIEAgZTtcbiAgfCBBcChGb3J3YXJkLCBlMSwgZTIpID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMik7XG4gICAgZTEgQCBbbWtfZm9ybShcImFwX2V4cFwiLCBpZCwgW2UyXSldO1xuICB8IEFwKFJldmVyc2UsIGUxLCBlMikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKVxuICAgIGFuZCsgb3AgPSB0ZXh0X3RvX3ByZXR0eShpZCwgU29ydC5FeHAsIFwifD5cIik7XG4gICAgZTEgQCBvcCBAIGUyO1xuICB8IFR5cEFwKGUsIHQpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlID0gZ28oZSlcbiAgICBhbmQrIHRwID0gdHlwX3RvX3ByZXR0eSh+aW5saW5lLCB0KTtcbiAgICBlIEAgW21rX2Zvcm0oXCJhcF9leHBfdHlwXCIsIGlkLCBbdHBdKV07XG4gIHwgRGVmZXJyZWRBcChlLCBlcykgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQrIGUgPSBnbyhlKVxuICAgIGFuZCsgZXMgPSBlcyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIGxldCAoaWQsIGlkcykgPSAoXG4gICAgICBleHAuaWRzIHw+IExpc3QuaGQsXG4gICAgICBleHAuaWRzIHw+IExpc3QudGwgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aChlcykpLFxuICAgICk7XG4gICAgZVxuICAgIEAgW1xuICAgICAgbWtfZm9ybShcbiAgICAgICAgXCJhcF9leHBcIixcbiAgICAgICAgaWQsXG4gICAgICAgIFtcbiAgICAgICAgICBMaXN0LmZsYXR0ZW4oXG4gICAgICAgICAgICBMaXN0Lm1hcDIoXG4gICAgICAgICAgICAgIChpZCwgZSkgPT4gW21rX2Zvcm0oXCJjb21tYV9leHBcIiwgaWQsIFtdKV0gQCBlLFxuICAgICAgICAgICAgICBpZHMsXG4gICAgICAgICAgICAgIGVzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICBdO1xuICB8IElmKGUxLCBlMiwgZTMpID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMilcbiAgICBhbmQrIGUzID0gZ28oZTMpO1xuICAgIGxldCBlMiA9IGlubGluZSA/IGUyIDogW1NlY29uZGFyeShTZWNvbmRhcnkubWtfbmV3bGluZShJZC5taygpKSldIEAgZTI7XG4gICAgbGV0IGUzID0gaW5saW5lID8gZTMgOiBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCBlMztcbiAgICBbbWtfZm9ybShcImlmX1wiLCBpZCwgW2UxLCBlMl0pXSBAIGUzO1xuICB8IFNlcShlMSwgZTIpID0+XG4gICAgLy8gVE9ETzogTWFrZSBuZXdsaW5lIG9wdGlvbmFsXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMik7XG4gICAgbGV0IGUyID0gaW5saW5lID8gZTIgOiBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCBlMjtcbiAgICBlMSBAIFtta19mb3JtKFwiY2VsbC1qb2luXCIsIGlkLCBbXSldIEAgZTI7XG4gIHwgVGVzdChlKSA9PlxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwidGVzdFwiLCBpZCwgW2VdKV07XG4gIHwgUGFyZW5zKGUpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJwYXJlbnNfZXhwXCIsIGlkLCBbZV0pXTtcbiAgfCBDb25zKGUxLCBlMikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKTtcbiAgICBlMSBAIFtta19mb3JtKFwiY29uc19leHBcIiwgaWQsIFtdKV0gQCBlMjtcbiAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKTtcbiAgICBlMSBAIFtta19mb3JtKFwibGlzdF9jb25jYXRcIiwgaWQsIFtdKV0gQCBlMjtcbiAgfCBVbk9wKE1ldGEoVW5xdW90ZSksIGUpID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJ1bnF1b3RlXCIsIGlkLCBbXSldIEAgZTtcbiAgfCBVbk9wKEJvb2woTm90KSwgZSkgPT5cbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUgPSBnbyhlKTtcbiAgICBbbWtfZm9ybShcIm5vdFwiLCBpZCwgW10pXSBAIGU7XG4gIHwgVW5PcChJbnQoTWludXMpLCBlKSA9PlxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwidW5hcnlfbWludXNcIiwgaWQsIFtdKV0gQCBlO1xuICAvKiBUT0RPOiB0aGlzIGlzbid0IGFjdHVhbGx5IGNvcnJlY3QgYmVjYXVzZSB3ZSBjb3VsZCB0aGUgYnVpbHRpblxuICAgICBjb3VsZCBoYXZlIGJlZW4gb3ZlcnJpZGVuIGluIHRoaXMgc2NvcGU7IHdvcnRoIGZpeGluZyB3aGVuIHdlIGZpeFxuICAgICBjbG9zdXJlcy4gKi9cbiAgfCBCdWlsdGluRnVuKGYpID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgZilcbiAgfCBNYXRjaChlLCBycykgPT5cbiAgICAvLyBUT0RPOiBBZGQgbmV3bGluZXNcbiAgICBsZXQrIGUgPSBnbyhlKVxuICAgIGFuZCsgcnM6IGxpc3QobGlzdCgoU2VnbWVudC50LCBTZWdtZW50LnQpKSkgPSB7XG4gICAgICByc1xuICAgICAgfD4gTGlzdC5tYXAoKChwLCBlKSkgPT4gKHBhdF90b19wcmV0dHkofmlubGluZSwgcCksIGdvKGUpKSlcbiAgICAgIHw+IExpc3QubWFwKCgoeCwgeSkpID0+IExpc3RVdGlsLmNyb3NzKHgsIHkpKVxuICAgICAgfD4gYWxsO1xuICAgIH07XG4gICAgbGV0IChpZCwgaWRzKSA9IChcbiAgICAgIGV4cC5pZHMgfD4gTGlzdC5oZCxcbiAgICAgIGV4cC5pZHMgfD4gTGlzdC50bCB8PiBwYWRfaWRzKExpc3QubGVuZ3RoKHJzKSksXG4gICAgKTtcbiAgICBbXG4gICAgICBta19mb3JtKFxuICAgICAgICBcImNhc2VcIixcbiAgICAgICAgaWQsXG4gICAgICAgIFtcbiAgICAgICAgICBlXG4gICAgICAgICAgQCAoXG4gICAgICAgICAgICBMaXN0Lm1hcDIoXG4gICAgICAgICAgICAgIChpZCwgKHAsIGUpKSA9PiBbbWtfZm9ybShcInJ1bGVcIiwgaWQsIFtwXSldIEAgZSxcbiAgICAgICAgICAgICAgaWRzLFxuICAgICAgICAgICAgICBycyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIF07XG4gIH07XG59XG5hbmQgcGF0X3RvX3ByZXR0eSA9ICh+aW5saW5lLCBwYXQ6IFBhdC50KTogcHJldHR5ID0+IHtcbiAgbGV0IGdvID0gcGF0X3RvX3ByZXR0eSh+aW5saW5lKTtcbiAgc3dpdGNoIChwYXQgfD4gUGF0LnRlcm1fb2YpIHtcbiAgfCBJbnZhbGlkKHQpID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgdClcbiAgfCBFbXB0eUhvbGUgPT5cbiAgICBsZXQgaWQgPSBwYXQgfD4gUGF0LnJlcF9pZDtcbiAgICBwX2p1c3QoW0dyb3V0KHtpZCwgc2hhcGU6IENvbnZleH0pXSk7XG4gIHwgV2lsZCA9PiB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIFwiX1wiKVxuICB8IFZhcih2KSA9PiB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIHYpXG4gIHwgSW50KG4pID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgSW50LnRvX3N0cmluZyhuKSlcbiAgfCBGbG9hdChmKSA9PlxuICAgIHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgRmxvYXQudG9fc3RyaW5nKGYpKVxuICB8IEJvb2woYikgPT4gdGV4dF90b19wcmV0dHkocGF0IHw+IFBhdC5yZXBfaWQsIFNvcnQuUGF0LCBCb29sLnRvX3N0cmluZyhiKSlcbiAgfCBTdHJpbmcocykgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIFwiXFxcIlwiICsrIHMgKysgXCJcXFwiXCIpXG4gIHwgQ29uc3RydWN0b3IoYykgPT4gdGV4dF90b19wcmV0dHkocGF0IHw+IFBhdC5yZXBfaWQsIFNvcnQuUGF0LCBjKVxuICB8IExpc3RMaXQoW10pID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgXCJbXVwiKVxuICB8IExpc3RMaXQoW3gsIC4uLnhzXSkgPT5cbiAgICBsZXQqIHggPSBnbyh4KVxuICAgIGFuZCogeHMgPSB4cyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIGxldCAoaWQsIGlkcykgPSAoXG4gICAgICBwYXQuaWRzIHw+IExpc3QuaGQsXG4gICAgICBwYXQuaWRzIHw+IExpc3QudGwgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh4cykpLFxuICAgICk7XG4gICAgcF9qdXN0KFtcbiAgICAgIG1rX2Zvcm0oXG4gICAgICAgIFwibGlzdF9saXRfcGF0XCIsXG4gICAgICAgIGlkLFxuICAgICAgICBbXG4gICAgICAgICAgeFxuICAgICAgICAgIEAgTGlzdC5mbGF0dGVuKFxuICAgICAgICAgICAgICBMaXN0Lm1hcDIoXG4gICAgICAgICAgICAgICAgKGlkLCB4KSA9PiBbbWtfZm9ybShcImNvbW1hX3BhdFwiLCBpZCwgW10pXSBAIHgsXG4gICAgICAgICAgICAgICAgaWRzLFxuICAgICAgICAgICAgICAgIHhzLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgXSk7XG4gIHwgQ29ucyhwMSwgcDIpID0+XG4gICAgbGV0IGlkID0gcGF0IHw+IFBhdC5yZXBfaWQ7XG4gICAgbGV0KyBwMSA9IGdvKHAxKVxuICAgIGFuZCsgcDIgPSBnbyhwMik7XG4gICAgcDEgQCBbbWtfZm9ybShcImNvbnNfcGF0XCIsIGlkLCBbXSldIEAgcDI7XG4gIHwgVHVwbGUoW10pID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgXCIoKVwiKVxuICB8IFR1cGxlKFtfXSkgPT4gZmFpbHdpdGgoXCJTaW5nbGV0b24gVHVwbGVzIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFR1cGxlKFt4LCAuLi54c10pID0+XG4gICAgbGV0KyB4ID0gZ28oeClcbiAgICBhbmQrIHhzID0geHMgfD4gTGlzdC5tYXAoZ28pIHw+IGFsbDtcbiAgICBsZXQgaWRzID0gcGF0LmlkcyB8PiBwYWRfaWRzKExpc3QubGVuZ3RoKHhzKSk7XG4gICAgeFxuICAgIEAgTGlzdC5mbGF0dGVuKFxuICAgICAgICBMaXN0Lm1hcDIoKGlkLCB4KSA9PiBbbWtfZm9ybShcImNvbW1hX3BhdFwiLCBpZCwgW10pXSBAIHgsIGlkcywgeHMpLFxuICAgICAgKTtcbiAgfCBQYXJlbnMocCkgPT5cbiAgICBsZXQgaWQgPSBwYXQgfD4gUGF0LnJlcF9pZDtcbiAgICBsZXQrIHAgPSBnbyhwKTtcbiAgICBbbWtfZm9ybShcInBhcmVuc19wYXRcIiwgaWQsIFtwXSldO1xuICB8IE11bHRpSG9sZShlcykgPT5cbiAgICBsZXQgaWQgPSBwYXQgfD4gUGF0LnJlcF9pZDtcbiAgICBsZXQrIGVzID0gZXMgfD4gTGlzdC5tYXAoYW55X3RvX3ByZXR0eSh+aW5saW5lKSkgfD4gYWxsO1xuICAgIExpc3RVdGlsLmZsYXRfaW50ZXJzcGVyc2UoR3JvdXQoe2lkLCBzaGFwZTogQ29uY2F2ZX0pLCBlcyk7XG4gIHwgQXAocDEsIHAyKSA9PlxuICAgIGxldCBpZCA9IHBhdCB8PiBQYXQucmVwX2lkO1xuICAgIGxldCsgcDEgPSBnbyhwMSlcbiAgICBhbmQrIHAyID0gZ28ocDIpO1xuICAgIHAxIEAgW21rX2Zvcm0oXCJhcF9wYXRcIiwgaWQsIFtwMl0pXTtcbiAgfCBDYXN0KHAsIHQsIF8pID0+XG4gICAgbGV0IGlkID0gcGF0IHw+IFBhdC5yZXBfaWQ7XG4gICAgbGV0KyBwID0gZ28ocClcbiAgICBhbmQrIHQgPSB0eXBfdG9fcHJldHR5KH5pbmxpbmUsIHQpO1xuICAgIHAgQCBbbWtfZm9ybShcInR5cGVhbm5cIiwgaWQsIFtdKV0gQCB0O1xuICB9O1xufVxuYW5kIHR5cF90b19wcmV0dHkgPSAofmlubGluZSwgdHlwOiBUeXAudCk6IHByZXR0eSA9PiB7XG4gIGxldCBnbyA9IHR5cF90b19wcmV0dHkofmlubGluZSk7XG4gIGxldCBnb19jb25zdHJ1Y3RvcjogQ29uc3RydWN0b3JNYXAudmFyaWFudChUeXAudCkgPT4gcHJldHR5ID1cbiAgICBmdW5cbiAgICB8IFZhcmlhbnQoYywgaWRzLCBOb25lKSA9PiB0ZXh0X3RvX3ByZXR0eShMaXN0LmhkKGlkcyksIFNvcnQuVHlwLCBjKVxuICAgIHwgVmFyaWFudChjLCBpZHMsIFNvbWUoeCkpID0+IHtcbiAgICAgICAgbGV0KyBjb25zdHJ1Y3RvciA9XG4gICAgICAgICAgdGV4dF90b19wcmV0dHkoTGlzdC5oZChMaXN0LnRsKGlkcykpLCBTb3J0LlR5cCwgYyk7XG4gICAgICAgIGNvbnN0cnVjdG9yIEAgW21rX2Zvcm0oXCJhcF90eXBcIiwgTGlzdC5oZChpZHMpLCBnbyh4KSldO1xuICAgICAgfVxuICAgIHwgQmFkRW50cnkoeCkgPT4gZ28oeCk7XG4gIHN3aXRjaCAodHlwIHw+IFR5cC50ZXJtX29mKSB7XG4gIHwgVW5rbm93bihIb2xlKEludmFsaWQocykpKSA9PlxuICAgIHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgcylcbiAgfCBVbmtub3duKEludGVybmFsKVxuICB8IFVua25vd24oU3luU3dpdGNoKVxuICB8IFVua25vd24oSG9sZShFbXB0eUhvbGUpKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIHBfanVzdChbR3JvdXQoe2lkLCBzaGFwZTogQ29udmV4fSldKTtcbiAgfCBVbmtub3duKEhvbGUoTXVsdGlIb2xlKGVzKSkpID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyBlcyA9IGVzIHw+IExpc3QubWFwKGFueV90b19wcmV0dHkofmlubGluZSkpIHw+IGFsbDtcbiAgICBMaXN0VXRpbC5mbGF0X2ludGVyc3BlcnNlKEdyb3V0KHtpZCwgc2hhcGU6IENvbmNhdmV9KSwgZXMpO1xuICB8IFZhcih2KSA9PiB0ZXh0X3RvX3ByZXR0eSh0eXAgfD4gVHlwLnJlcF9pZCwgU29ydC5UeXAsIHYpXG4gIHwgSW50ID0+IHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgXCJJbnRcIilcbiAgfCBGbG9hdCA9PiB0ZXh0X3RvX3ByZXR0eSh0eXAgfD4gVHlwLnJlcF9pZCwgU29ydC5UeXAsIFwiRmxvYXRcIilcbiAgfCBCb29sID0+IHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgXCJCb29sXCIpXG4gIHwgU3RyaW5nID0+IHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgXCJTdHJpbmdcIilcbiAgfCBMaXN0KHQpID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyB0ID0gZ28odCk7XG4gICAgW21rX2Zvcm0oXCJsaXN0X3R5cFwiLCBpZCwgW3RdKV07XG4gIHwgUHJvZChbXSkgPT4gdGV4dF90b19wcmV0dHkodHlwIHw+IFR5cC5yZXBfaWQsIFNvcnQuVHlwLCBcIigpXCIpXG4gIHwgUHJvZChbX10pID0+IGZhaWx3aXRoKFwiU2luZ2xldG9uIFByb2RzIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFByb2QoW3QsIC4uLnRzXSkgPT5cbiAgICBsZXQrIHQgPSBnbyh0KVxuICAgIGFuZCsgdHMgPSB0cyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIHRcbiAgICBAIExpc3QuZmxhdHRlbihcbiAgICAgICAgTGlzdC5tYXAyKFxuICAgICAgICAgIChpZCwgdCkgPT4gW21rX2Zvcm0oXCJjb21tYV90eXBcIiwgaWQsIFtdKV0gQCB0LFxuICAgICAgICAgIHR5cC5pZHMgfD4gcGFkX2lkcyh0cyB8PiBMaXN0Lmxlbmd0aCksXG4gICAgICAgICAgdHMsXG4gICAgICAgICksXG4gICAgICApO1xuICB8IFBhcmVucyh0KSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdCA9IGdvKHQpO1xuICAgIFtta19mb3JtKFwicGFyZW5zX3R5cFwiLCBpZCwgW3RdKV07XG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdDEgPSBnbyh0MSlcbiAgICBhbmQrIHQyID0gZ28odDIpO1xuICAgIHQxIEAgW21rX2Zvcm0oXCJhcF90eXBcIiwgaWQsIFt0Ml0pXTtcbiAgfCBSZWModHAsIHQpID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyB0cCA9IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICAgIGFuZCsgdCA9IGdvKHQpO1xuICAgIFtta19mb3JtKFwicmVjXCIsIGlkLCBbdHBdKV0gQCB0O1xuICB8IEZvcmFsbCh0cCwgdCkgPT5cbiAgICBsZXQgaWQgPSB0eXAgfD4gVHlwLnJlcF9pZDtcbiAgICBsZXQrIHRwID0gdHBhdF90b19wcmV0dHkofmlubGluZSwgdHApXG4gICAgYW5kKyB0ID0gZ28odCk7XG4gICAgW21rX2Zvcm0oXCJmb3JhbGxcIiwgaWQsIFt0cF0pXSBAIHQ7XG4gIHwgQXJyb3codDEsIHQyKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdDEgPSBnbyh0MSlcbiAgICBhbmQrIHQyID0gZ28odDIpO1xuICAgIHQxIEAgW21rX2Zvcm0oXCJhcnJvd1wiLCBpZCwgW10pXSBAIHQyO1xuICB8IFN1bShbXSkgPT4gZmFpbHdpdGgoXCJFbXB0eSBTdW1zIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFN1bShbdF0pID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyB0ID0gZ29fY29uc3RydWN0b3IodCk7XG4gICAgW21rX2Zvcm0oXCJ0eXBfc3VtX3NpbmdsZVwiLCBpZCwgW10pXSBAIHQ7XG4gIHwgU3VtKFt0LCAuLi50c10pID0+XG4gICAgbGV0KyB0ID0gZ29fY29uc3RydWN0b3IodClcbiAgICBhbmQrIHRzID0gdHMgfD4gTGlzdC5tYXAoZ29fY29uc3RydWN0b3IpIHw+IGFsbDtcbiAgICB0XG4gICAgQCBMaXN0LmZsYXR0ZW4oXG4gICAgICAgIExpc3QubWFwMihcbiAgICAgICAgICAoaWQsIHQpID0+IFtta19mb3JtKFwidHlwX3BsdXNcIiwgaWQsIFtdKV0gQCB0LFxuICAgICAgICAgIHR5cC5pZHMgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh0cykpLFxuICAgICAgICAgIHRzLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgfTtcbn1cbmFuZCB0cGF0X3RvX3ByZXR0eSA9ICh+aW5saW5lLCB0cGF0OiBUUGF0LnQpOiBwcmV0dHkgPT4ge1xuICBzd2l0Y2ggKHRwYXQgfD4gSWRUYWdnZWQudGVybV9vZikge1xuICB8IEludmFsaWQodCkgPT4gdGV4dF90b19wcmV0dHkodHBhdCB8PiBUUGF0LnJlcF9pZCwgU29ydC5UeXAsIHQpXG4gIHwgRW1wdHlIb2xlID0+XG4gICAgbGV0IGlkID0gdHBhdCB8PiBUUGF0LnJlcF9pZDtcbiAgICBwX2p1c3QoW0dyb3V0KHtpZCwgc2hhcGU6IENvbnZleH0pXSk7XG4gIHwgTXVsdGlIb2xlKHhzKSA9PlxuICAgIGxldCBpZCA9IHRwYXQgfD4gVFBhdC5yZXBfaWQ7XG4gICAgbGV0KyB4cyA9IHhzIHw+IExpc3QubWFwKGFueV90b19wcmV0dHkofmlubGluZSkpIHw+IGFsbDtcbiAgICBMaXN0VXRpbC5mbGF0X2ludGVyc3BlcnNlKEdyb3V0KHtpZCwgc2hhcGU6IENvbmNhdmV9KSwgeHMpO1xuICB8IFZhcih2KSA9PiB0ZXh0X3RvX3ByZXR0eSh0cGF0IHw+IFRQYXQucmVwX2lkLCBTb3J0LlR5cCwgdilcbiAgfTtcbn1cbmFuZCBhbnlfdG9fcHJldHR5ID0gKH5pbmxpbmUsIGFueTogQW55LnQpOiBwcmV0dHkgPT4ge1xuICBzd2l0Y2ggKGFueSkge1xuICB8IEV4cChlKSA9PiBleHBfdG9fcHJldHR5KH5pbmxpbmUsIGUpXG4gIHwgUGF0KHApID0+IHBhdF90b19wcmV0dHkofmlubGluZSwgcClcbiAgfCBUeXAodCkgPT4gdHlwX3RvX3ByZXR0eSh+aW5saW5lLCB0KVxuICB8IFRQYXQodHApID0+IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICB8IEFueShfKVxuICB8IE51bChfKVxuICB8IFJ1bChfKSA9PlxuICAgIC8vVE9ETzogcHJpbnQgb3V0IGludmFsaWQgcnVsZXMgcHJvcGVybHlcbiAgICBsZXQgaWQgPSBhbnkgfD4gQW55LnJlcF9pZDtcbiAgICBwX2p1c3QoW0dyb3V0KHtpZCwgc2hhcGU6IENvbnZleH0pXSk7XG4gIH07XG59O1xuXG4vLyBVc2UgUHJlY2VkZW5jZS5yZSB0byB3b3JrIG91dCB3aGVyZSB5b3VyIGNvbnN0cnVjdCBnb2VzIGhlcmUuXG5sZXQgcmVjIGV4dGVybmFsX3ByZWNlZGVuY2UgPSAoZXhwOiBFeHAudCk6IFByZWNlZGVuY2UudCA9PiB7XG4gIHN3aXRjaCAoRXhwLnRlcm1fb2YoZXhwKSkge1xuICAvLyBGb3JtcyB3aGljaCB3ZSBhcmUgYWJvdXQgdG8gc3RyaXAsIHNvIHdlIGp1c3QgbG9vayBpbnNpZGVcbiAgfCBDbG9zdXJlKF8sIHgpXG4gIHwgRHluYW1pY0Vycm9ySG9sZSh4LCBfKSA9PiBleHRlcm5hbF9wcmVjZWRlbmNlKHgpXG5cbiAgLy8gQmluYXJ5IG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQgaW4gUHJlY2VkZW5jZS5yZVxuICB8IEJpbk9wKG9wLCBfLCBfKSA9PiBQcmVjZWRlbmNlLm9mX2Jpbl9vcChvcClcblxuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBuZXZlciBuZWVkIHBhcmVudGhlc2VzIGFyb3VuZCB0aGVtXG4gIHwgVmFyKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IEVtcHR5SG9sZVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRGVmZXJyYWwoXylcbiAgfCBCdWlsdGluRnVuKF8pID0+IFByZWNlZGVuY2UubWF4XG5cbiAgLy8gU2FtZSBnb2VzIGZvciBmb3JtcyB3aGljaCBhcmUgYWxyZWFkeSBzdXJyb3VuZGVkXG4gIHwgUGFyZW5zKF8pXG4gIHwgTGlzdExpdChfKVxuICB8IFRlc3QoXylcbiAgfCBNYXRjaChfKSA9PiBQcmVjZWRlbmNlLm1heFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgVW5PcChNZXRhKFVucXVvdGUpLCBfKSA9PiBQcmVjZWRlbmNlLnVucXVvdGVcbiAgfCBDYXN0KF8pXG4gIHwgRmFpbGVkQ2FzdChfKSA9PiBQcmVjZWRlbmNlLmNhc3RcbiAgfCBBcChGb3J3YXJkLCBfLCBfKVxuICB8IERlZmVycmVkQXAoXylcbiAgfCBUeXBBcChfKSA9PiBQcmVjZWRlbmNlLmFwXG4gIHwgVW5PcChCb29sKE5vdCksIF8pID0+IFByZWNlZGVuY2Uubm90X1xuICB8IFVuT3AoSW50KE1pbnVzKSwgXykgPT4gUHJlY2VkZW5jZS5uZWdcbiAgfCBDb25zKF8pID0+IFByZWNlZGVuY2UuY29uc1xuICB8IEFwKFJldmVyc2UsIF8sIF8pID0+IFByZWNlZGVuY2UuZXFzXG4gIHwgTGlzdENvbmNhdChfKSA9PiBQcmVjZWRlbmNlLmNvbmNhdFxuICB8IElmKF8pID0+IFByZWNlZGVuY2UuaWZfXG4gIHwgVHlwRnVuKF8pXG4gIHwgRnVuKF8pXG4gIHwgRml4RihfKSA9PiBQcmVjZWRlbmNlLmZ1bl9cbiAgfCBUdXBsZShfKSA9PiBQcmVjZWRlbmNlLnByb2RcbiAgfCBTZXEoXykgPT4gUHJlY2VkZW5jZS5zZW1pXG5cbiAgLy8gVG9wLWxldmVsIHRoaW5nc1xuICB8IEZpbHRlcihfKVxuICB8IFR5QWxpYXMoXylcbiAgfCBMZXQoXykgPT4gUHJlY2VkZW5jZS5sZXRfXG5cbiAgLy8gTWF0dDogSSB0aGluayBtdWx0aWhvbGVzIGFyZSBtaW4gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHRoZSBwcmVjZWRlbmNlIG9mIHRoZSBg4p+pP+KfqGBzXG4gIHwgTXVsdGlIb2xlKF8pID0+IFByZWNlZGVuY2UubWluXG4gIH07XG59O1xuXG5sZXQgZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQgPSAoZHA6IFBhdC50KSA9PlxuICBzd2l0Y2ggKERIUGF0LnRlcm1fb2YoZHApKSB7XG4gIC8vIEluZGl2aXNpYmxlIGZvcm1zIG5ldmVyIG5lZWQgcGFyZW50aGVzZXMgYXJvdW5kIHRoZW1cbiAgfCBFbXB0eUhvbGVcbiAgfCBXaWxkXG4gIHwgSW52YWxpZChfKVxuICB8IFZhcihfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgQm9vbChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IFByZWNlZGVuY2UubWF4XG5cbiAgLy8gU2FtZSBnb2VzIGZvciBmb3JtcyB3aGljaCBhcmUgYWxyZWFkeSBzdXJyb3VuZGVkXG4gIHwgTGlzdExpdChfKVxuICB8IFBhcmVucyhfKSA9PiBQcmVjZWRlbmNlLm1heFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgQ29ucyhfKSA9PiBQcmVjZWRlbmNlLmNvbnNcbiAgfCBBcChfKSA9PiBQcmVjZWRlbmNlLmFwXG4gIHwgQ2FzdChfKSA9PiBQcmVjZWRlbmNlLmFublxuICB8IFR1cGxlKF8pID0+IFByZWNlZGVuY2UucHJvZFxuXG4gIC8vIE1hdHQ6IEkgdGhpbmsgbXVsdGlob2xlcyBhcmUgbWluIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB0aGUgcHJlY2VkZW5jZSBvZiB0aGUgYOKfqT/in6hgc1xuICB8IE11bHRpSG9sZShfKSA9PiBQcmVjZWRlbmNlLm1pblxuICB9O1xuXG5sZXQgZXh0ZXJhbF9wcmVjZWRlbmNlX3R5cCA9ICh0cDogVHlwLnQpID0+XG4gIHN3aXRjaCAoVHlwLnRlcm1fb2YodHApKSB7XG4gIC8vIEluZGl2aXNpYmxlIGZvcm1zIG5ldmVyIG5lZWQgcGFyZW50aGVzZXMgYXJvdW5kIHRoZW1cbiAgfCBVbmtub3duKEhvbGUoSW52YWxpZChfKSkpXG4gIHwgVW5rbm93bihJbnRlcm5hbClcbiAgfCBVbmtub3duKFN5blN3aXRjaClcbiAgfCBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSlcbiAgfCBWYXIoXylcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmcgPT4gUHJlY2VkZW5jZS5tYXhcblxuICAvLyBTYW1lIGdvZXMgZm9yIGZvcm1zIHdoaWNoIGFyZSBhbHJlYWR5IHN1cnJvdW5kZWRcbiAgfCBQYXJlbnMoXylcbiAgfCBMaXN0KF8pID0+IFByZWNlZGVuY2UubWF4XG5cbiAgLy8gT3RoZXIgZm9ybXNcbiAgfCBQcm9kKF8pID0+IFByZWNlZGVuY2UucHJvZFxuICB8IEFwKF8pID0+IFByZWNlZGVuY2UuYXBcbiAgfCBBcnJvdyhfLCBfKSA9PiBQcmVjZWRlbmNlLnBvd2VyXG4gIHwgU3VtKF8pID0+IFByZWNlZGVuY2UucGx1c1xuICB8IFJlYyhfLCBfKSA9PiBQcmVjZWRlbmNlLmxldF9cbiAgfCBGb3JhbGwoXywgXykgPT4gUHJlY2VkZW5jZS5sZXRfXG5cbiAgLy8gTWF0dDogSSB0aGluayBtdWx0aWhvbGVzIGFyZSBtaW4gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHRoZSBwcmVjZWRlbmNlIG9mIHRoZSBg4p+pP+KfqGBzXG4gIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZShfKSkpID0+IFByZWNlZGVuY2UubWluXG4gIH07XG5cbmxldCBwYXJlbl9hdCA9IChpbnRlcm5hbF9wcmVjZWRlbmNlOiBQcmVjZWRlbmNlLnQsIGV4cDogRXhwLnQpOiBFeHAudCA9PlxuICBleHRlcm5hbF9wcmVjZWRlbmNlKGV4cCkgPj0gaW50ZXJuYWxfcHJlY2VkZW5jZVxuICAgID8gRXhwLmZyZXNoKFBhcmVucyhleHApKSA6IGV4cDtcblxubGV0IHBhcmVuX2Fzc29jX2F0ID0gKGludGVybmFsX3ByZWNlZGVuY2U6IFByZWNlZGVuY2UudCwgZXhwOiBFeHAudCk6IEV4cC50ID0+XG4gIGV4dGVybmFsX3ByZWNlZGVuY2UoZXhwKSA+IGludGVybmFsX3ByZWNlZGVuY2VcbiAgICA/IEV4cC5mcmVzaChQYXJlbnMoZXhwKSkgOiBleHA7XG5cbmxldCBwYXJlbl9wYXRfYXQgPSAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCBwYXQ6IFBhdC50KTogUGF0LnQgPT5cbiAgZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQocGF0KSA+PSBpbnRlcm5hbF9wcmVjZWRlbmNlXG4gICAgPyBQYXQuZnJlc2goUGFyZW5zKHBhdCkpIDogcGF0O1xuXG5sZXQgcGFyZW5fcGF0X2Fzc29jX2F0ID1cbiAgICAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCBwYXQ6IFBhdC50KTogUGF0LnQgPT5cbiAgZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQocGF0KSA+IGludGVybmFsX3ByZWNlZGVuY2VcbiAgICA/IFBhdC5mcmVzaChQYXJlbnMocGF0KSkgOiBwYXQ7XG5cbmxldCBwYXJlbl90eXBfYXQgPSAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCB0eXA6IFR5cC50KTogVHlwLnQgPT5cbiAgZXh0ZXJhbF9wcmVjZWRlbmNlX3R5cCh0eXApID49IGludGVybmFsX3ByZWNlZGVuY2VcbiAgICA/IFR5cC5mcmVzaChQYXJlbnModHlwKSkgOiB0eXA7XG5cbmxldCBwYXJlbl90eXBfYXNzb2NfYXQgPVxuICAgIChpbnRlcm5hbF9wcmVjZWRlbmNlOiBQcmVjZWRlbmNlLnQsIHR5cDogVHlwLnQpOiBUeXAudCA9PlxuICBleHRlcmFsX3ByZWNlZGVuY2VfdHlwKHR5cCkgPiBpbnRlcm5hbF9wcmVjZWRlbmNlXG4gICAgPyBUeXAuZnJlc2goUGFyZW5zKHR5cCkpIDogdHlwO1xuXG5sZXQgcmVjIHBhcmVudGhlc2l6ZSA9IChleHA6IEV4cC50KTogRXhwLnQgPT4ge1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSBFeHAudW53cmFwKGV4cCk7XG4gIHN3aXRjaCAodGVybSkge1xuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBkb250JyBjaGFuZ2VcbiAgfCBWYXIoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBEZWZlcnJhbChfKVxuICB8IEJ1aWx0aW5GdW4oXykgPT4gZXhwXG5cbiAgLy8gRm9ybXMgdGhhdCBjdXJyZW50bHkgbmVlZCB0byBzdHJpcHBlZCBiZWZvcmUgb3V0dXR0aW5nXG4gIHwgQ2xvc3VyZShfLCB4KVxuICB8IER5bmFtaWNFcnJvckhvbGUoeCwgXylcbiAgfCBUdXBsZShbeF0pXG4gIHwgRmlsdGVyKF8sIHgpXG4gIHwgQ2FzdCh4LCBfLCBfKVxuICB8IEZhaWxlZENhc3QoeCwgXywgXykgPT4geCB8PiBwYXJlbnRoZXNpemVcblxuICAvLyBPdGhlciBmb3Jtc1xuICB8IEZ1bihwLCBlLCBjLCBuKSA9PlxuICAgIEZ1bihcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmZ1bl8pLFxuICAgICAgYywgLy8gVE9ETzogUGFyZW50aGVzaXplIHRocm91Z2ggY2xvc3VyZVxuICAgICAgbixcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVHlwRnVuKHRwLCBlLCBuKSA9PlxuICAgIFR5cEZ1bih0cCwgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2UuZnVuXyksIG4pXG4gICAgfD4gcmV3cmFwXG4gIHwgVHVwbGUoZXMpID0+XG4gICAgVHVwbGUoXG4gICAgICBlcyB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemUpIHw+IExpc3QubWFwKHBhcmVuX2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMaXN0TGl0KGVzKSA9PlxuICAgIExpc3RMaXQoXG4gICAgICBlcyB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemUpIHw+IExpc3QubWFwKHBhcmVuX2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMZXQocCwgZTEsIGUyKSA9PlxuICAgIExldChcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgICAgcGFyZW50aGVzaXplKGUyKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmxldF8pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBGaXhGKHAsIGUsIGMpID0+XG4gICAgRml4RihcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmZ1bl8pLFxuICAgICAgYyAvLyBUT0RPOiBQYXJlbnRoZXNpemUgdGhyb3VnaCBjbG9zdXJlXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFR5QWxpYXModHAsIHQsIGUpID0+XG4gICAgVHlBbGlhcyhcbiAgICAgIHRwLFxuICAgICAgdCwgLy8gVE9ETzogVHlwZXNcbiAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmxldF8pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBBcChGb3J3YXJkLCBlMSwgZTIpID0+XG4gICAgQXAoXG4gICAgICBGb3J3YXJkLFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmFwKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMikgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBBcChSZXZlcnNlLCBlMSwgZTIpID0+XG4gICAgQXAoXG4gICAgICBSZXZlcnNlLFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmVxcyksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UuZXFzKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVHlwQXAoZSwgdHApID0+XG4gICAgVHlwQXAoXG4gICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5hcCksXG4gICAgICBwYXJlbnRoZXNpemVfdHlwKHRwKSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBEZWZlcnJlZEFwKGUsIGVzKSA9PlxuICAgIERlZmVycmVkQXAoXG4gICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5hcCksXG4gICAgICBlcyB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemUpIHw+IExpc3QubWFwKHBhcmVuX2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBJZihlMSwgZTIsIGUzKSA9PlxuICAgIElmKFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbiksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMykgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5pZl8pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBTZXEoZTEsIGUyKSA9PlxuICAgIFNlcShcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5zZW1pKSwgLy8gdGVtcHRpbmcgdG8gbWFrZSB0aGlzIG9uZSBhc3NvYyB0b29cbiAgICAgIHBhcmVudGhlc2l6ZShlMikgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5zZW1pKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVGVzdChlKSA9PiBUZXN0KHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbikpIHw+IHJld3JhcFxuICAvLyB8IEZpbHRlcihmLCBlKSA9PlxuICAvLyAgIEZpbHRlcihcbiAgLy8gICAgIGYsIC8vIFRPRE86IEZpbHRlcnNcbiAgLy8gICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbiksXG4gIC8vICAgKVxuICAvLyAgIHw+IHJld3JhcFxuICB8IFBhcmVucyhlKSA9PlxuICAgIFBhcmVucyhwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pKSB8PiByZXdyYXBcbiAgfCBDb25zKGUxLCBlMikgPT5cbiAgICBDb25zKFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLmNvbnMpLFxuICAgICAgcGFyZW50aGVzaXplKGUyKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmNvbnMpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICBMaXN0Q29uY2F0KFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLmNvbmNhdCksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2UuY29uY2F0KSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVW5PcChNZXRhKFVucXVvdGUpLCBlKSA9PlxuICAgIFVuT3AoTWV0YShVbnF1b3RlKSwgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UudW5xdW90ZSkpXG4gICAgfD4gcmV3cmFwXG4gIHwgVW5PcChCb29sKE5vdCksIGUpID0+XG4gICAgVW5PcChCb29sKE5vdCksIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm5vdF8pKSB8PiByZXdyYXBcbiAgfCBVbk9wKEludChNaW51cyksIGUpID0+XG4gICAgVW5PcChJbnQoTWludXMpLCBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5uZWcpKSB8PiByZXdyYXBcbiAgfCBCaW5PcChvcCwgZTEsIGUyKSA9PlxuICAgIEJpbk9wKFxuICAgICAgb3AsXG4gICAgICBwYXJlbnRoZXNpemUoZTEpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2Uub2ZfYmluX29wKG9wKSksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2Uub2ZfYmluX29wKG9wKSksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IE1hdGNoKGUsIHJzKSA9PlxuICAgIE1hdGNoKFxuICAgICAgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHJzXG4gICAgICB8PiBMaXN0Lm1hcCgoKHAsIGUpKSA9PlxuICAgICAgICAgICAoXG4gICAgICAgICAgICAgcGFyZW50aGVzaXplX3BhdChwKSB8PiBwYXJlbl9wYXRfYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgICAgICAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmNhc2VfKSxcbiAgICAgICAgICAgKVxuICAgICAgICAgKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgTXVsdGlIb2xlKF8pID0+IGV4cCAvLyBUT0RPOiBQYXJlbnRoZXNpemUgdGhyb3VnaCBtdWx0aWhvbGVzXG4gIH07XG59XG5hbmQgcGFyZW50aGVzaXplX3BhdCA9IChwYXQ6IFBhdC50KTogUGF0LnQgPT4ge1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSBQYXQudW53cmFwKHBhdCk7XG4gIHN3aXRjaCAodGVybSkge1xuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBkb250JyBjaGFuZ2VcbiAgfCBWYXIoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gcGF0XG5cbiAgLy8gT3RoZXIgZm9ybXNcbiAgfCBXaWxkID0+IHBhdFxuICB8IFBhcmVucyhwKSA9PlxuICAgIFBhcmVucyhwYXJlbnRoZXNpemVfcGF0KHApIHw+IHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLm1pbikpIHw+IHJld3JhcFxuICB8IENvbnMocDEsIHAyKSA9PlxuICAgIENvbnMoXG4gICAgICBwYXJlbnRoZXNpemVfcGF0KHAxKSB8PiBwYXJlbl9wYXRfYXQoUHJlY2VkZW5jZS5jb25zKSxcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocDIpIHw+IHBhcmVuX3BhdF9hc3NvY19hdChQcmVjZWRlbmNlLmNvbnMpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBUdXBsZShwcykgPT5cbiAgICBUdXBsZShcbiAgICAgIHBzXG4gICAgICB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemVfcGF0KVxuICAgICAgfD4gTGlzdC5tYXAocGFyZW5fcGF0X2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMaXN0TGl0KHBzKSA9PlxuICAgIExpc3RMaXQoXG4gICAgICBwc1xuICAgICAgfD4gTGlzdC5tYXAocGFyZW50aGVzaXplX3BhdClcbiAgICAgIHw+IExpc3QubWFwKHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLnByb2QpKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgQXAocDEsIHAyKSA9PlxuICAgIEFwKFxuICAgICAgcGFyZW50aGVzaXplX3BhdChwMSkgfD4gcGFyZW5fcGF0X2Fzc29jX2F0KFByZWNlZGVuY2UuYXApLFxuICAgICAgcGFyZW50aGVzaXplX3BhdChwMikgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgTXVsdGlIb2xlKF8pID0+IHBhdCAvLyBUT0RPOiBQYXJlbnRoZXNpemUgdGhyb3VnaCBtdWx0aWhvbGVzXG4gIHwgQ2FzdChwLCB0MSwgdDIpID0+XG4gICAgQ2FzdChcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2Fzc29jX2F0KFByZWNlZGVuY2UuYW5uKSxcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDEpIHw+IHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLm1heCksIC8vIEhhY2tbTWF0dF06IGFsd2F5cyBhZGQgcGFyZW5zIHRvIGdldCB0aGUgYXJyb3dzIHJpZ2h0XG4gICAgICBwYXJlbnRoZXNpemVfdHlwKHQyKSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5tYXgpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfTtcbn1cblxuYW5kIHBhcmVudGhlc2l6ZV90eXAgPSAodHlwOiBUeXAudCk6IFR5cC50ID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gVHlwLnVud3JhcCh0eXApO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgLy8gSW5kaXZpc2libGUgZm9ybXMgZG9udCcgY2hhbmdlXG4gIHwgVmFyKF8pXG4gIHwgVW5rbm93bihIb2xlKEludmFsaWQoXykpKVxuICB8IFVua25vd24oSW50ZXJuYWwpXG4gIHwgVW5rbm93bihTeW5Td2l0Y2gpXG4gIHwgVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nID0+IHR5cFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgUGFyZW5zKHQpID0+XG4gICAgUGFyZW5zKHBhcmVudGhlc2l6ZV90eXAodCkgfD4gcGFyZW5fdHlwX2F0KFByZWNlZGVuY2UubWluKSkgfD4gcmV3cmFwXG4gIHwgTGlzdCh0KSA9PlxuICAgIExpc3QocGFyZW50aGVzaXplX3R5cCh0KSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5taW4pKSB8PiByZXdyYXBcbiAgfCBQcm9kKHRzKSA9PlxuICAgIFByb2QoXG4gICAgICB0c1xuICAgICAgfD4gTGlzdC5tYXAocGFyZW50aGVzaXplX3R5cClcbiAgICAgIHw+IExpc3QubWFwKHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLnByb2QpKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIEFwKFxuICAgICAgcGFyZW50aGVzaXplX3R5cCh0MSkgfD4gcGFyZW5fdHlwX2Fzc29jX2F0KFByZWNlZGVuY2UuYXApLFxuICAgICAgcGFyZW50aGVzaXplX3R5cCh0MikgfD4gcGFyZW5fdHlwX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgUmVjKHRwLCB0KSA9PlxuICAgIFJlYyh0cCwgcGFyZW50aGVzaXplX3R5cCh0KSB8PiBwYXJlbl90eXBfYXNzb2NfYXQoUHJlY2VkZW5jZS5sZXRfKSlcbiAgICB8PiByZXdyYXBcbiAgfCBGb3JhbGwodHAsIHQpID0+XG4gICAgRm9yYWxsKHRwLCBwYXJlbnRoZXNpemVfdHlwKHQpIHw+IHBhcmVuX3R5cF9hc3NvY19hdChQcmVjZWRlbmNlLmxldF8pKVxuICAgIHw+IHJld3JhcFxuICB8IEFycm93KHQxLCB0MikgPT5cbiAgICBBcnJvdyhcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDEpIHw+IHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLnBvd2VyKSxcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDIpIHw+IHBhcmVuX3R5cF9hc3NvY19hdChQcmVjZWRlbmNlLnBvd2VyKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgU3VtKHRzKSA9PlxuICAgIFN1bShcbiAgICAgIENvbnN0cnVjdG9yTWFwLm1hcChcbiAgICAgICAgdHMgPT5cbiAgICAgICAgICB0c1xuICAgICAgICAgIHw+IE9wdGlvbi5tYXAocGFyZW50aGVzaXplX3R5cClcbiAgICAgICAgICB8PiBPcHRpb24ubWFwKHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLm1pbikpLFxuICAgICAgICB0cyxcbiAgICAgICksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFVua25vd24oSG9sZShNdWx0aUhvbGUoXykpKSA9PiB0eXAgLy8gVE9ETzogUGFyZW50aGVzaXplIHRocm91Z2ggbXVsdGlob2xlc1xuICB9O1xufTtcblxubGV0IGV4cF90b19lZGl0b3IgPSAofmlubGluZSwgZXhwOiBFeHAudCk6IEVkaXRvci50ID0+IHtcbiAgbGV0IGV4cCA9IHBhcmVudGhlc2l6ZShleHApO1xuICBsZXQgcCA9IGV4cF90b19wcmV0dHkofmlubGluZSwgZXhwKTtcbiAgbGV0IHNlZyA9IHAgfD4gUHJldHR5U2VnbWVudC5zZWxlY3Q7XG4gIEVkaXRvci5pbml0KH5yZWFkX29ubHk9dHJ1ZSwgWmlwcGVyLnVuemlwKHNlZykpO1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gWmlwcGVyO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxudHlwZSByZWxhdGlvbiA9XG4gIHwgUGFyZW50XG4gIHwgU2libGluZztcblxubGV0IHBpZWNlJyA9XG4gICAgKH5ub193czogYm9vbCwgfmlnbjogUGllY2UudCA9PiBib29sLCB+dHJpbV9zZWNvbmRhcnk9ZmFsc2UsIHo6IFppcHBlci50KVxuICAgIDogb3B0aW9uKChQaWVjZS50LCBEaXJlY3Rpb24udCwgcmVsYXRpb24pKSA9PiB7XG4gIGxldCBzaWJzID1cbiAgICB0cmltX3NlY29uZGFyeVxuICAgICAgPyBzaWJzX3dpdGhfc2VsKHopIHw+IFNpYmxpbmdzLnRyaW1fc2Vjb25kYXJ5IDogc2lic193aXRoX3NlbCh6KTtcbiAgLyogUmV0dXJucyB0aGUgcGllY2UgY3VycmVudGx5IGluZGljYXRlZCAoaWYgYW55KSBhbmQgd2hpY2ggc2lkZSBvZlxuICAgICB0aGF0IHBpZWNlIHRoZSBjYXJldCBpcyBvbi4gV2UgZmF2b3IgaW5kaWNhdGluZyB0aGUgcGllY2UgdG8gdGhlXG4gICAgIChSKWlnaHQsIGJ1dCBtYXkgZW5kIHVwIGluZGljYXRpbmcgdGhlIChQKWFyZW50IG9yIHRoZSAoTCllZnQuXG4gICAgIFdlIGRvbid0IGluZGljYXRlIHNlY29uZGFyeSB0aWxlcy4gVGhpcyBmdW5jdGlvbiBpZ25vcmVzIHdoZXRoZXJcbiAgICAgb3Igbm90IHRoZXJlIGlzIGEgc2VsZWN0aW9uIHNvIHRoaXMgY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBjYXJldFxuICAgICBkaXJlY3Rpb24sIGJ1dCB0aGUgY2FsbGVyIHNob3VsZG4ndCBpbmRpY2F0ZSBpZiB0aGVyZSdzIGEgc2VsZWN0aW9uICovXG4gIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHNpYnMpLCBwYXJlbnQoeikpIHtcbiAgLyogTm9uLWVtcHR5IHNlbGVjdGlvbiA9PiBubyBpbmRpY2F0aW9uICovXG4gIC8vfCBfIHdoZW4gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA9PiBOb25lXG4gIC8qIEVtcHR5IHN5bnRheCA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChOb25lLCBOb25lKSwgTm9uZSkgPT4gTm9uZVxuICAvKiBMIG5vdCBzZWNvbmRhcnksIFIgaXMgc2Vjb25kYXJ5ID0+IGluZGljYXRlIEwgKi9cbiAgfCAoKFNvbWUobCksIFNvbWUocikpLCBfKSB3aGVuICFpZ24obCkgJiYgaWduKHIpID0+XG4gICAgU29tZSgobCwgTGVmdCwgU2libGluZykpXG4gIC8qIEwgYW5kIFIgYXJlIHNlY29uZGFyeXMgPT4gbm8gaW5kaWNhdGlvbiAqL1xuICB8ICgoU29tZShsKSwgU29tZShyKSksIF8pIHdoZW4gaWduKGwpICYmIGlnbihyKSA9PlxuICAgIG5vX3dzID8gTm9uZSA6IFNvbWUoKGwsIExlZnQsIFNpYmxpbmcpKVxuICAvKiBBdCByaWdodCBlbmQgb2Ygc3ludGF4IGFuZCBMIGlzIHNlY29uZGFyeSA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChTb21lKGwpLCBOb25lKSwgTm9uZSkgd2hlbiBpZ24obCkgPT5cbiAgICBub193cyA/IE5vbmUgOiBTb21lKChsLCBMZWZ0LCBTaWJsaW5nKSlcbiAgLyogQXQgbGVmdCBlbmQgb2Ygc3ludGF4IGFuZCBSIGlzIHNlY29uZGFyeSA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChOb25lLCBTb21lKHIpKSwgTm9uZSkgd2hlbiBpZ24ocikgPT5cbiAgICBub193cyA/IE5vbmUgOiBTb21lKChyLCBSaWdodCwgU2libGluZykpXG4gIC8qIE5vIEwgYW5kIFIgaXMgYSBzZWNvbmRhcnkgYW5kIHRoZXJlIGlzIGEgUCA9PiBpbmRpY2F0ZSBQICovXG4gIHwgKChOb25lLCBTb21lKHIpKSwgU29tZShwYXJlbnQpKSB3aGVuIGlnbihyKSA9PlxuICAgIFNvbWUoKHBhcmVudCwgTGVmdCwgUGFyZW50KSlcbiAgLyogTCBpcyBub3Qgc2Vjb25kYXJ5IGFuZCBjYXJldCBpcyBvdXRlciA9PiBpbmRpY2F0ZSBMICovXG4gIHwgKChTb21lKGwpLCBfKSwgXykgd2hlbiAhaWduKGwpICYmIHouY2FyZXQgPT0gT3V0ZXIgPT5cbiAgICBTb21lKChsLCBMZWZ0LCBTaWJsaW5nKSlcbiAgLyogTm8gTCwgc29tZSBQLCBhbmQgY2FyZXQgaXMgb3V0ZXIgPT4gaW5kaWNhdGUgUiAqL1xuICB8ICgoTm9uZSwgXyksIFNvbWUocGFyZW50KSkgd2hlbiB6LmNhcmV0ID09IE91dGVyID0+XG4gICAgU29tZSgocGFyZW50LCBMZWZ0LCBQYXJlbnQpKVxuICAvKiBSIGlzIG5vdCBzZWNvbmRhcnksIGVpdGhlciBubyBMIG9yIEwgaXMgc2Vjb25kYXJ5IG9yIGNhcmV0IGlzIGlubmVyID0+IGluZGljYXRlIFIgKi9cbiAgfCAoKF8sIFNvbWUocikpLCBfKSA9PiBTb21lKChyLCBSaWdodCwgU2libGluZykpXG4gIC8qIE5vIFIgYW5kIHRoZXJlIGlzIGEgUCA9PiBpbmRpY2F0ZSBQICovXG4gIHwgKChfLCBOb25lKSwgU29tZShwYXJlbnQpKSA9PiBTb21lKChwYXJlbnQsIFJpZ2h0LCBQYXJlbnQpKVxuICAvKiBUaGVyZSBpcyBhbiBMIGJ1dCBubyBSIGFuZCBubyBQID0+IGluZGljYXRlIEwgKi9cbiAgLy9UT0RPKGFuZHJldyk6IFJpZ2h0IGJlbG93IHNlZW1zIHdyb25nIGJ1dCBpdCBnZXRzIGZ1Y2t5IG90aGVyd2lzZVxuICB8ICgoU29tZShsKSwgTm9uZSksIE5vbmUpID0+IFNvbWUoKGwsIFJpZ2h0LCBTaWJsaW5nKSlcbiAgfTtcbn07XG5cbmxldCBwaWVjZSA9XG4gIHBpZWNlJyh+bm9fd3M9dHJ1ZSwgfmlnbj1wID0+IFBpZWNlLihpc19zZWNvbmRhcnkocCkgfHwgaXNfZ3JvdXQocCkpKTtcblxubGV0IHNoYXJkX2luZGV4ID0gKHo6IFppcHBlci50KTogb3B0aW9uKGludCkgPT5cbiAgc3dpdGNoIChwaWVjZSh6KSkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoKHAsIHNpZGUsIHJlbGF0aW9uKSkgPT5cbiAgICBzd2l0Y2ggKHJlbGF0aW9uKSB7XG4gICAgfCBQYXJlbnQgPT5cbiAgICAgIHN3aXRjaCAoQW5jZXN0b3JzLnBhcmVudCh6LnJlbGF0aXZlcy5hbmNlc3RvcnMpKSB7XG4gICAgICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJpbmRpY2F0ZWRfc2hhcmRfaW5kZXggaW1wb3NzaWJsZVwiKVxuICAgICAgfCBTb21lKHtjaGlsZHJlbjogKGJlZm9yZSwgXyksIF99KSA9PlxuICAgICAgICBsZXQgYmVmb3JlID0gTGlzdC5sZW5ndGgoYmVmb3JlKTtcbiAgICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gICAgICAgIHwgKF8sIE5vbmUpID0+IFNvbWUoYmVmb3JlICsgMSlcbiAgICAgICAgfCBfID0+IFNvbWUoYmVmb3JlKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIHwgU2libGluZyA9PlxuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IFNlY29uZGFyeShfKVxuICAgICAgfCBHcm91dChfKSA9PiBTb21lKDApXG4gICAgICB8IFRpbGUodCkgPT5cbiAgICAgICAgc3dpdGNoIChzaWRlKSB7XG4gICAgICAgIHwgTGVmdCA9PiBTb21lKExpc3QubGVuZ3RoKHQuY2hpbGRyZW4pKVxuICAgICAgICB8IFJpZ2h0ID0+IFNvbWUoMClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxubGV0IGluZGV4ID0gKHo6IFppcHBlci50KTogb3B0aW9uKElkLnQpID0+XG4gIHN3aXRjaCAoXG4gICAgcGllY2UnKH5ub193cz1mYWxzZSwgfmlnbj1QaWVjZS5pc19zZWNvbmRhcnksIH50cmltX3NlY29uZGFyeT1mYWxzZSwgeilcbiAgKSB7XG4gIHwgTm9uZSA9PiBOb25lXG4gIHwgU29tZSgocCwgXywgXykpID0+IFNvbWUoUGllY2UuaWQocCkpXG4gIH07XG5cbmxldCBjaV9vZiA9ICh6OiBaaXBwZXIudCwgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQpOiBvcHRpb24oU3RhdGljcy5JbmZvLnQpID0+XG4gIC8qIFRoaXMgdmVyc2lvbiB0YWtlcyBpbnRvIGFjY291bnRzIFNlY29uZGFyeSwgd2hpbGUgYWNjb3VudGluZyBmb3IgdGhlXG4gICAqIGZhY3QgdGhhdCBTZWNvbmRhcnkgaXMgbm90IGN1cnJlbnRseSBhZGRlZCB0byB0aGUgaW5mb19tYXAuIEZpcnN0IHdlXG4gICAqIHRyeSB0aGUgYmFzaWMgaW5kaWNhdGlvbiBmdW5jdGlvbiwgc3BlY2lmeWluZyB0aGF0IHdlIGRvIG5vdCB3YW50XG4gICAqIFNlY29uZGFyeS4gQnV0IGlmIHRoaXMgZG9lc24ndCBzdWNjZWVkLCB0aGVuIHdlIGNyZWF0ZSBhICd2aXJ0dWFsJ1xuICAgKiBpbmZvIG1hcCBlbnRyeSByZXByZXNlbnRpbmcgdGhlIFNlY29uZGFyeSBub3RhdGlvbiwgd2hpY2ggdGFrZXMgb25cbiAgICogc29tZSBvZiB0aGUgc2VtYW50aWMgY29udGV4dCBvZiBhIG5lYXJieSAncHJveHknIHRlcm0gKi9cbiAgc3dpdGNoIChcbiAgICBwaWVjZScofm5vX3dzPXRydWUsIH5pZ249UGllY2UuaXNfc2Vjb25kYXJ5LCB+dHJpbV9zZWNvbmRhcnk9ZmFsc2UsIHopXG4gICkge1xuICB8IFNvbWUoKHAsIF8sIF8pKSA9PiBJZC5NYXAuZmluZF9vcHQoUGllY2UuaWQocCksIGluZm9fbWFwKVxuICB8IE5vbmUgPT5cbiAgICBsZXQgc2licyA9IHNpYnNfd2l0aF9zZWwoeik7XG4gICAgbGV0KiBjbHMgPVxuICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoc2licykpIHtcbiAgICAgIC8qIElmIG9uIHNpZGUgb2YgY29tbWVudCwgc2F5IHdlJ3JlIG9uIGNvbW1lbnQgKi9cbiAgICAgIHwgKFNvbWUoU2Vjb25kYXJ5KHNsKSksIFNvbWUoU2Vjb25kYXJ5KF8pKSlcbiAgICAgICAgICB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHNsKSA9PlxuICAgICAgICBTb21lKFNlY29uZGFyeS5jbHNfb2Yoc2wpKVxuICAgICAgfCAoU29tZShTZWNvbmRhcnkoXykpLCBTb21lKFNlY29uZGFyeShzcikpKVxuICAgICAgICAgIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQoc3IpID0+XG4gICAgICAgIFNvbWUoU2Vjb25kYXJ5LmNsc19vZihzcikpXG4gICAgICB8IChfLCBTb21lKFNlY29uZGFyeShzKSkpXG4gICAgICB8IChTb21lKFNlY29uZGFyeShzKSksIF8pID0+IFNvbWUoU2Vjb25kYXJ5LmNsc19vZihzKSlcbiAgICAgIHwgXyA9PiBOb25lXG4gICAgICB9O1xuICAgIGxldCogcHJveHlfaWQgPVxuICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoU2libGluZ3MudHJpbV9zZWNvbmRhcnkoc2licykpKSB7XG4gICAgICB8IChfLCBTb21lKHApKVxuICAgICAgfCAoU29tZShwKSwgXykgPT4gU29tZShQaWVjZS5pZChwKSlcbiAgICAgIHwgXyA9PiBOb25lXG4gICAgICB9O1xuICAgIGxldCsgY2kgPSBJZC5NYXAuZmluZF9vcHQocHJveHlfaWQsIGluZm9fbWFwKTtcbiAgICBJbmZvLlNlY29uZGFyeSh7XG4gICAgICBpZDogcHJveHlfaWQsXG4gICAgICBjbHM6IFNlY29uZGFyeShjbHMpLFxuICAgICAgc29ydDogSW5mby5zb3J0X29mKGNpKSxcbiAgICAgIGN0eDogSW5mby5jdHhfb2YoY2kpLFxuICAgIH0pO1xuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyoqXG4gIFRoZSByZXN1bHQgb2YgYSBwcm9ncmFtIGV2YWx1YXRpb24uIEluY2x1ZGVzIHRoZSB7IXR5cGU6RXZhbHVhdG9yUmVzdWx0LnR9LFxuICB0aGUgeyF0eXBlOkV2YWx1YXRvclN0YXRlfSwgYW5kIHRoZSB0cmFja2VkIGhvbGUgaW5zdGFuY2UgaW5mb3JtYXRpb25cbiAgKHshdHlwZTpIb2xlSW5zdGFuY2VJbmZvLnR9KS4gQ29uc3RydWN0ZWQgYnkgeyF2YWw6UHJvZ3JhbS5nZXRfcmVzdWx0fS5cbiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBpbm5lciA9IHtcbiAgcmVzdWx0OiBFdmFsdWF0b3IuUmVzdWx0LnQsXG4gIGVkaXRvcjogRWRpdG9yLnQsXG4gIHN0YXRlOiBFdmFsdWF0b3JTdGF0ZS50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvciA9XG4gIHwgVGltZW91dFxuICB8IEV2YXVsYXRvckVycm9yKEV2YWx1YXRvckVycm9yLnQpXG4gIHwgVW5rbm93bkV4Y2VwdGlvbihzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE9mZihFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpXG4gIHwgUmVzdWx0T2soaW5uZXIpXG4gIHwgUmVzdWx0RmFpbChlcnJvcilcbiAgfCBSZXN1bHRQZW5kaW5nO1xuXG5sZXQgZ2V0X2RoZXhwID0gKHI6IGlubmVyKSA9PiBFdmFsdWF0b3IuUmVzdWx0LnVuYm94KHIucmVzdWx0KTtcbmxldCBnZXRfc3RhdGUgPSAocjogaW5uZXIpID0+IHIuc3RhdGU7XG4iLCJtb2R1bGUgQ29yZVN0YXRpY3MgPSBTdGF0aWNzO1xuXG5tb2R1bGUgU3RhdGljcyA9IHtcbiAgbGV0IG1rX21hcCcgPVxuICAgIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIGUgPT4ge1xuICAgICAgU3RhdGljcy51ZXhwX3RvX2luZm9fbWFwKFxuICAgICAgICB+Y3R4PUJ1aWx0aW5zLmN0eF9pbml0LFxuICAgICAgICB+YW5jZXN0b3JzPVtdLFxuICAgICAgICBlLFxuICAgICAgICBJZC5NYXAuZW1wdHksXG4gICAgICApXG4gICAgICB8PiBzbmRcbiAgICB9KTtcbiAgbGV0IG1rX21hcCA9IChjb3JlOiBDb3JlU2V0dGluZ3MudCwgZXhwKSA9PlxuICAgIGNvcmUuc3RhdGljcyA/IG1rX21hcCcoZXhwKSA6IElkLk1hcC5lbXB0eTtcblxuICBsZXQgbWtfbWFwX2FuZF9pbmZvX2N0eCA9XG4gICAgQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMCwgKGN0eCwgZSkgPT4ge1xuICAgICAgU3RhdGljcy51ZXhwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnM9W10sIGUsIElkLk1hcC5lbXB0eSlcbiAgICB9KTtcbiAgbGV0IG1rX21hcF9hbmRfaW5mb19jdHggPSAoY29yZTogQ29yZVNldHRpbmdzLnQsIGN0eCwgZXhwKSA9PlxuICAgIGNvcmUuc3RhdGljc1xuICAgICAgPyB7XG4gICAgICAgIGxldCAoaW5mbywgbWFwKSA9IG1rX21hcF9hbmRfaW5mb19jdHgoY3R4LCBleHApO1xuICAgICAgICAoU29tZShpbmZvKSwgbWFwKTtcbiAgICAgIH1cbiAgICAgIDogKE5vbmUsIElkLk1hcC5lbXB0eSk7XG5cbiAgbGV0IG1rX21hcF9jdHggPVxuICAgIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIChjdHgsIGUpID0+IHtcbiAgICAgIFN0YXRpY3MudWV4cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzPVtdLCBlLCBJZC5NYXAuZW1wdHkpIHw+IHNuZFxuICAgIH0pO1xuICBsZXQgbWtfbWFwX2N0eCA9IChjb3JlOiBDb3JlU2V0dGluZ3MudCwgY3R4LCBleHApID0+XG4gICAgY29yZS5zdGF0aWNzID8gbWtfbWFwX2N0eChjdHgsIGV4cCkgOiBJZC5NYXAuZW1wdHk7XG59O1xuXG5sZXQgZGhfZXJyID0gKGVycm9yOiBzdHJpbmcpOiBESEV4cC50ID0+IFZhcihlcnJvcikgfD4gREhFeHAuZnJlc2g7XG5cbmxldCBlbGFib3JhdGUgPVxuICBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCBFbGFib3JhdG9yLnVleHBfZWxhYik7XG5cbmV4Y2VwdGlvbiBEb2VzTm90RWxhYm9yYXRlO1xubGV0IGVsYWJvcmF0ZSA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCBtYXAsIHRlcm0pOiBESEV4cC50ID0+XG4gIHN3aXRjaCAoKSB7XG4gIHwgXyB3aGVuICFzZXR0aW5ncy5zdGF0aWNzID0+IGRoX2VycihcIlN0YXRpY3MgZGlzYWJsZWRcIilcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmR5bmFtaWNzICYmICFzZXR0aW5ncy5lbGFib3JhdGUgPT5cbiAgICBkaF9lcnIoXCJEeW5hbWljcyAmIEVsYWJvcmF0aW9uIGRpc2FibGVkXCIpXG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoZWxhYm9yYXRlKG1hcCwgdGVybSkpIHtcbiAgICB8IERvZXNOb3RFbGFib3JhdGUgPT4gZGhfZXJyKFwiRWxhYm9yYXRpb24gcmV0dXJucyBOb25lXCIpXG4gICAgfCBFbGFib3JhdGVzKGQsIF8sIF8pID0+IGRcbiAgICB9XG4gIH07XG5cbmxldCBldmFsdWF0ZSA9XG4gICAgKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIH5lbnY9QnVpbHRpbnMuZW52X2luaXQsIGVsYWI6IERIRXhwLnQpXG4gICAgOiBQcm9ncmFtUmVzdWx0LnQgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmR5bmFtaWNzID0+IE9mZih7ZDogZWxhYn0pXG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoRXZhbHVhdG9yLmV2YWx1YXRlKGVudiwge2Q6IGVsYWJ9KSkge1xuICAgIHwgZXhjZXB0aW9uIChFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24ocmVhc29uKSkgPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJFdmFsdWF0b3JFcnJvcjpcIiArKyBFdmFsdWF0b3JFcnJvci5zaG93KHJlYXNvbikpO1xuICAgICAgUmVzdWx0RmFpbChFdmF1bGF0b3JFcnJvcihyZWFzb24pKTtcbiAgICB8IGV4Y2VwdGlvbiBleG4gPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJFWE46XCIgKysgUHJpbnRleGMudG9fc3RyaW5nKGV4bikpO1xuICAgICAgUmVzdWx0RmFpbChVbmtub3duRXhjZXB0aW9uKFByaW50ZXhjLnRvX3N0cmluZyhleG4pKSk7XG4gICAgfCAoc3RhdGUsIHJlc3VsdCkgPT5cbiAgICAgIFJlc3VsdE9rKHtcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICBlZGl0b3I6XG4gICAgICAgICAgRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IoXG4gICAgICAgICAgICB+aW5saW5lPWZhbHNlLFxuICAgICAgICAgICAgRXZhbHVhdG9yLlJlc3VsdC51bmJveChyZXN1bHQpLFxuICAgICAgICAgICksXG4gICAgICAgIHN0YXRlLFxuICAgICAgfSlcbiAgICB9XG4gIH07XG5cbmxldCBldmFsX3ogPVxuICAgIChcbiAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICB+Y3R4X2luaXQ6IEN0eC50LFxuICAgICAgfmVudl9pbml0OiBFbnZpcm9ubWVudC50LFxuICAgICAgejogWmlwcGVyLnQsXG4gICAgKVxuICAgIDogUHJvZ3JhbVJlc3VsdC50ID0+IHtcbiAgbGV0ICh0ZXJtLCBfKSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oeik7XG4gIGxldCBpbmZvX21hcCA9IFN0YXRpY3MubWtfbWFwX2N0eChzZXR0aW5ncywgY3R4X2luaXQsIHRlcm0pO1xuICBsZXQgZCA9IGVsYWJvcmF0ZSh+c2V0dGluZ3MsIGluZm9fbWFwLCB0ZXJtKTtcbiAgZXZhbHVhdGUofnNldHRpbmdzLCB+ZW52PWVudl9pbml0LCBkKTtcbn07XG4iLCJvcGVuIFV0aWwuT3B0VXRpbC5TeW50YXg7XG5vcGVuIFN1Z2dlc3Rpb247XG5cbi8qIFN1Z2dlc3QgdGhlIHRva2VuIGF0IHRoZSB0b3Agb2YgdGhlIGJhY2twYWNrLCBpZiB3ZSBjYW4gcHV0IGl0IGRvd24gKi9cbmxldCBzdWdnZXN0X2JhY2twYWNrID0gKHo6IFppcHBlci50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgLyogTm90ZTogU29ydCBjaGVjayB1bm5lY2Vzc2FyeSBoZXJlIGFzIHdvdWxkbid0IGJlIGFibGUgdG8gcHV0IGRvd24gKi9cbiAgc3dpdGNoICh6LmJhY2twYWNrKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbe2NvbnRlbnQsIF99LCAuLi5fXSA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgW1RpbGUoe2xhYmVsLCBzaGFyZHM6IFtpZHhdLCBffSldIHdoZW4gWmlwcGVyLmNhbl9wdXRfZG93bih6KSA9PiBbXG4gICAgICAgIHtjb250ZW50OiBMaXN0Lm50aChsYWJlbCwgaWR4KSwgc3RyYXRlZ3k6IEFueShGcm9tQmFja3BhY2spfSxcbiAgICAgIF1cbiAgICB8IF8gPT4gW11cbiAgICB9XG4gIH07XG59O1xuXG5sZXQgc3VnZ2VzdCA9IChjaTogSW5mby50LCB6OiBaaXBwZXIudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIC8qIE5PVEU6IFNvcnRpbmcgZW5zdXJlcyB0aGF0IGlmIHdlIGhhdmUgYW4gZXhhY3QgbWF0Y2ggYWxyZWFkeSxcbiAgICogd2Ugd29uJ3Qgc3VnZ2VzdCBleHRlbmRpbmcgaXQsIGJ1dCBzdHJhaWdodC11cCBsZXhpY2FsIHNvcnRpbmdcbiAgICogbWF5IG5vdCBiZSBkZXNpcmFibGUgaW4gb3RoZXIgd2F5cywgZm9yIGV4YW1wbGUgbWF5YmUgd2Ugd2FudFxuICAgKiByZWNlbmN5IGJpYXMgaW4gY3R4LiBSZXZpc2l0IHRoaXMgbGF0ZXIuIEknbSBzb3J0aW5nIGJlZm9yZVxuICAgKiBjb21iaW5hdGlvbiBiZWNhdXNlIHdlIHdhbnQgYmFja3BhY2sgY2FuZGlkYXRlcyB0byBzaG93IHVwIGZpcnN0ICovXG4gIHN1Z2dlc3RfYmFja3BhY2soeilcbiAgQCAoXG4gICAgQXNzaXN0YW50Rm9ybXMuc3VnZ2VzdF9vcGVyYW5kKGNpKVxuICAgIEAgQXNzaXN0YW50Rm9ybXMuc3VnZ2VzdF9sZWFkaW5nKGNpKVxuICAgIEAgQXNzaXN0YW50Q3R4LnN1Z2dlc3RfdmFyaWFibGUoY2kpXG4gICAgQCBBc3Npc3RhbnRDdHguc3VnZ2VzdF9sb29rYWhlYWRfdmFyaWFibGUoY2kpXG4gICAgfD4gTGlzdC5zb3J0KFN1Z2dlc3Rpb24uY29tcGFyZSlcbiAgKVxuICBAIChBc3Npc3RhbnRGb3Jtcy5zdWdnZXN0X29wZXJhdG9yKGNpKSB8PiBMaXN0LnNvcnQoU3VnZ2VzdGlvbi5jb21wYXJlKSk7XG59O1xuXG4vKiBJZiB0aGVyZSBpcyBhIG1vbm90aWxlIHRvIHRoZSBsZWZ0IG9mIHRoZSBjYXJldCwgcmV0dXJuIGl0LiBXZVxuICogY3VycmVudGx5IG9ubHkgbWFrZSBzdWdnZXN0aW9ucyBpbiBzdWNoIHNpdHVhdGlvbnMgKi9cbmxldCB0b2tlbl90b19sZWZ0ID0gKHo6IFppcHBlci50KTogb3B0aW9uKHN0cmluZykgPT5cbiAgc3dpdGNoIChcbiAgICB6LmNhcmV0LFxuICAgIHoucmVsYXRpdmVzLnNpYmxpbmdzIHw+IGZzdCB8PiBMaXN0LnJldixcbiAgICB6LnJlbGF0aXZlcy5zaWJsaW5ncyB8PiBzbmQsXG4gICkge1xuICB8IChPdXRlciwgW1RpbGUoe2xhYmVsOiBbdG9rX3RvX2xlZnRdLCBffSksIC4uLl9dLCBfKSA9PlxuICAgIFNvbWUodG9rX3RvX2xlZnQpXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbi8qIFRoZSBzZWxlY3Rpb24gYnVmZmVyIHVzZWQgYnkgVHlEaSBpcyBjdXJyZW50bHkgdW5zdHJ1Y3R1cmVkOyBpdCBzaW1wbHlcbiAqIGhvbGRzIGFuIHVucGFyc2VkIHN0cmluZywgd2hpY2ggaXMgcGFyc2VkIHZpYSB0aGUgc2FtZSBtZWNoYW5pc20gYXNcbiAqIFBhc3RlIG9ubHkgd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYWNjZXB0ZWQuICovXG5sZXQgbWtfdW5wYXJzZWRfYnVmZmVyID1cbiAgICAofnNvcnQ6IFNvcnQudCwgc2liczogU2libGluZ3MudCwgdDogVG9rZW4udCk6IFNlZ21lbnQudCA9PiB7XG4gIGxldCBtb2xkID0gU2libGluZ3MubW9sZF9maXR0aW5nX2JldHdlZW4oc29ydCwgUHJlY2VkZW5jZS5tYXgsIHNpYnMpO1xuICBbVGlsZSh7aWQ6IElkLm1rKCksIGxhYmVsOiBbdF0sIHNoYXJkczogWzBdLCBjaGlsZHJlbjogW10sIG1vbGR9KV07XG59O1xuXG4vKiBJZiAnY3VycmVudCcgaXMgYSBwcm9wZXIgcHJlZml4IG9mICdjYW5kaWRhdGUnLCByZXR1cm4gdGhlXG4gKiBzdWZmaXggc3VjaCB0aGF0IGN1cnJlbnQgKysgc3VmZml4ID09IGNhbmRpZGF0ZSAqL1xubGV0IHN1ZmZpeF9vZiA9IChjYW5kaWRhdGU6IFRva2VuLnQsIGN1cnJlbnQ6IFRva2VuLnQpOiBvcHRpb24oVG9rZW4udCkgPT4ge1xuICBsZXQgY2FuZGlkYXRlX3N1ZmZpeCA9XG4gICAgU3RyaW5nLnN1YihcbiAgICAgIGNhbmRpZGF0ZSxcbiAgICAgIFN0cmluZy5sZW5ndGgoY3VycmVudCksXG4gICAgICBTdHJpbmcubGVuZ3RoKGNhbmRpZGF0ZSkgLSBTdHJpbmcubGVuZ3RoKGN1cnJlbnQpLFxuICAgICk7XG4gIGNhbmRpZGF0ZV9zdWZmaXggPT0gXCJcIiA/IE5vbmUgOiBTb21lKGNhbmRpZGF0ZV9zdWZmaXgpO1xufTtcblxuLyogUEVSRjogVGhpcyBpcyBxdWl0ZSBleHBlbnNpdmUgKi9cbmxldCB6X3RvX2NpID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIH5jdHg6IEN0eC50LCB6OiBaaXBwZXIudCkgPT4ge1xuICBsZXQgbWFwID1cbiAgICB6XG4gICAgfD4gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbVxuICAgIHw+IGZzdFxuICAgIHw+IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MsIGN0eCk7XG4gIGxldCogaW5kZXggPSBJbmRpY2F0ZWQuaW5kZXgoeik7XG4gIElkLk1hcC5maW5kX29wdChpbmRleCwgbWFwKTtcbn07XG5cbi8qIFJldHVybnMgdGhlIHRleHQgY29udGVudCBvZiB0aGUgc3VnZ2VzdGlvbiBidWZmZXIgKi9cbmxldCBnZXRfYnVmZmVyID0gKHo6IFppcHBlci50KTogb3B0aW9uKFRva2VuLnQpID0+XG4gIHN3aXRjaCAoei5zZWxlY3Rpb24ubW9kZSwgei5zZWxlY3Rpb24uY29udGVudCkge1xuICB8IChCdWZmZXIoVW5wYXJzZWQpLCBbVGlsZSh7bGFiZWw6IFtjb21wbGV0aW9uXSwgX30pXSkgPT5cbiAgICBTb21lKGNvbXBsZXRpb24pXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbi8qIEdpdmVzIGEgdHlwZS1kaXJlY3RlZCBzdWdnZXN0aW9uICovXG5sZXQgc3VnZ2VzdCA9ICh+c2V0dGluZ3MsIH5jdHg6IEN0eC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihTZWdtZW50LnQpID0+IHtcbiAgbGV0KiB0b2tfdG9fbGVmdCA9IHRva2VuX3RvX2xlZnQoeik7XG4gIGxldCogY2kgPSB6X3RvX2NpKH5zZXR0aW5ncywgfmN0eCwgeik7XG4gIGxldCBzdWdnZXN0aW9ucyA9IHN1Z2dlc3QoY2ksIHopO1xuICBsZXQgc3VnZ2VzdGlvbnMgPVxuICAgIHN1Z2dlc3Rpb25zXG4gICAgfD4gTGlzdC5maWx0ZXIoKHtjb250ZW50LCBffTogU3VnZ2VzdGlvbi50KSA9PlxuICAgICAgICAgU3RyaW5nLnN0YXJ0c193aXRoKH5wcmVmaXg9dG9rX3RvX2xlZnQsIGNvbnRlbnQpXG4gICAgICAgKTtcbiAgbGV0KiB0b3Bfc3VnZ2VzdGlvbiA9IHN1Z2dlc3Rpb25zIHw+IFV0aWwuTGlzdFV0aWwuaGRfb3B0O1xuICBsZXQqIHN1Z2dlc3Rpb25fc3VmZml4ID0gc3VmZml4X29mKHRvcF9zdWdnZXN0aW9uLmNvbnRlbnQsIHRva190b19sZWZ0KTtcbiAgbGV0IGNvbnRlbnQgPVxuICAgIG1rX3VucGFyc2VkX2J1ZmZlcihcbiAgICAgIH5zb3J0PUluZm8uc29ydF9vZihjaSksXG4gICAgICB6LnJlbGF0aXZlcy5zaWJsaW5ncyxcbiAgICAgIHN1Z2dlc3Rpb25fc3VmZml4LFxuICAgICk7XG4gIFNvbWUoY29udGVudCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICB0ZXN0X21hcDogVGVzdE1hcC50LFxuICBzdGF0dXNlczogbGlzdChUZXN0U3RhdHVzLnQpLFxuICBkZXNjcmlwdGlvbnM6IGxpc3Qoc3RyaW5nKSxcbiAgdG90YWw6IGludCxcbiAgcGFzc2luZzogaW50LFxuICBmYWlsaW5nOiBpbnQsXG4gIHVuZmluaXNoZWQ6IGludCxcbn07XG5cbmxldCBta19yZXN1bHRzID0gKH5kZXNjcmlwdGlvbnM9W10sIHRlc3RfbWFwOiBUZXN0TWFwLnQpOiB0ID0+IHtcbiAgdGVzdF9tYXAsXG4gIHN0YXR1c2VzOiB0ZXN0X21hcCB8PiBMaXN0Lm1hcChyID0+IHIgfD4gc25kIHw+IFRlc3RNYXAuam9pbnRfc3RhdHVzKSxcbiAgZGVzY3JpcHRpb25zLFxuICB0b3RhbDogVGVzdE1hcC5jb3VudCh0ZXN0X21hcCksXG4gIHBhc3Npbmc6IFRlc3RNYXAuY291bnRfc3RhdHVzKFBhc3MsIHRlc3RfbWFwKSxcbiAgZmFpbGluZzogVGVzdE1hcC5jb3VudF9zdGF0dXMoRmFpbCwgdGVzdF9tYXApLFxuICB1bmZpbmlzaGVkOiBUZXN0TWFwLmNvdW50X3N0YXR1cyhJbmRldCwgdGVzdF9tYXApLFxufTtcblxubGV0IHJlc3VsdF9zdW1tYXJ5X3N0ciA9XG4gICAgKH5uLCB+cCwgfnEsIH5uX3N0ciwgfm5zX3N0ciwgfnBfc3RyLCB+cV9zdHIsIH5yX3N0cik6IHN0cmluZyA9PiB7XG4gIGxldCBvbmVfcCA9IFwib25lIGlzIFwiICsrIHBfc3RyICsrIFwiIFwiO1xuICBsZXQgb25lX3EgPSBcIm9uZSBpcyBcIiArKyBxX3N0ciArKyBcIiBcIjtcbiAgbGV0IG1ueV9wID0gUHJpbnRmLnNwcmludGYoXCIlZCBhcmUgJXMgXCIsIHAsIHBfc3RyKTtcbiAgbGV0IG1ueV9xID0gUHJpbnRmLnNwcmludGYoXCIlZCBhcmUgJXMgXCIsIHEsIHFfc3RyKTtcbiAgbGV0IG9mX24gPSBQcmludGYuc3ByaW50ZihcIk91dCBvZiAlZCAlcywgXCIsIG4sIG5zX3N0cik7XG4gIHN3aXRjaCAobiwgcCwgcSkge1xuICB8ICgwLCBfLCBfKSA9PiBcIk5vIFwiICsrIG5zX3N0ciArKyBcIiBhdmFpbGFibGUuXCJcbiAgfCAoXywgMCwgMCkgPT4gXCJBbGwgXCIgKysgbnNfc3RyICsrIFwiIFwiICsrIHJfc3RyICsrIFwiISBcIlxuICB8IChuLCBfLCBjKSB3aGVuIG4gPT0gYyA9PiBcIkFsbCBcIiArKyBuc19zdHIgKysgXCIgXCIgKysgcV9zdHIgKysgXCIgXCJcbiAgfCAobiwgZiwgXykgd2hlbiBuID09IGYgPT4gXCJBbGwgXCIgKysgbnNfc3RyICsrIFwiIFwiICsrIHBfc3RyICsrIFwiIFwiXG4gIHwgKDEsIDAsIDEpID0+IFwiT25lIFwiICsrIG5fc3RyICsrIFwiIFwiICsrIHFfc3RyICsrIFwiIFwiXG4gIHwgKDEsIDEsIDApID0+IFwiT25lIFwiICsrIG5fc3RyICsrIFwiIFwiICsrIHBfc3RyICsrIFwiIFwiXG4gIHwgKDIsIDEsIDEpID0+XG4gICAgXCJPbmUgXCIgKysgbl9zdHIgKysgXCIgXCIgKysgcF9zdHIgKysgXCIgYW5kIG9uZSBcIiArKyBxX3N0ciArKyBcIiBcIlxuICB8IChfLCAwLCAxKSA9PiBvZl9uICsrIG9uZV9xXG4gIHwgKF8sIDEsIDApID0+IG9mX24gKysgb25lX3BcbiAgfCAoXywgMSwgMSkgPT4gb2ZfbiArKyBvbmVfcCArKyBcImFuZCBcIiArKyBvbmVfcVxuICB8IChfLCAxLCBfKSA9PiBvZl9uICsrIG9uZV9wICsrIFwiYW5kIFwiICsrIG1ueV9xXG4gIHwgKF8sIF8sIDEpID0+IG9mX24gKysgbW55X3AgKysgXCJhbmQgXCIgKysgb25lX3FcbiAgfCAoXywgMCwgXykgPT4gb2ZfbiArKyBtbnlfcVxuICB8IChfLCBfLCAwKSA9PiBvZl9uICsrIG1ueV9wXG4gIHwgKF8sIF8sIF8pID0+IG9mX24gKysgbW55X3AgKysgXCJhbmQgXCIgKysgbW55X3FcbiAgfTtcbn07XG5cbmxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogdCk6IHN0cmluZyA9PlxuICByZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgfm49dGVzdF9yZXN1bHRzLnRvdGFsLFxuICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgIH5uX3N0cj1cInRlc3RcIixcbiAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgfnFfc3RyPVwiaW5kZXRlcm1pbmF0ZVwiLFxuICAgIH5yX3N0cj1cInBhc3NpbmdcIixcbiAgKTtcbiIsIi8qIGNsb3NlZCBzdWJzdGl0dXRpb24gW2QxL3hdZDIgKi9cbmxldCByZWMgc3Vic3RfdmFyID0gKG0sIGQxOiBESEV4cC50LCB4OiBWYXIudCwgZDI6IERIRXhwLnQpOiBESEV4cC50ID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gREhFeHAudW53cmFwKGQyKTtcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIHwgVmFyKHkpID0+XG4gICAgaWYgKFZhci5lcSh4LCB5KSkge1xuICAgICAgZDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGQyO1xuICAgIH1cbiAgfCBJbnZhbGlkKF8pID0+IGQyXG4gIHwgU2VxKGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBTZXEoZDMsIGQ0KSB8PiByZXdyYXA7XG4gIHwgRmlsdGVyKGZpbHRlciwgZGJvZHkpID0+XG4gICAgbGV0IGRib2R5ID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkYm9keSk7XG4gICAgbGV0IGZpbHRlciA9IHN1YnN0X3Zhcl9maWx0ZXIobSwgZDEsIHgsIGZpbHRlcik7XG4gICAgRmlsdGVyKGZpbHRlciwgZGJvZHkpIHw+IHJld3JhcDtcbiAgfCBMZXQoZHAsIGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPVxuICAgICAgaWYgKERIUGF0LmJpbmRzX3ZhcihtLCB4LCBkcCkpIHtcbiAgICAgICAgZDQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICAgIH07XG4gICAgTGV0KGRwLCBkMywgZDQpIHw+IHJld3JhcDtcbiAgfCBGaXhGKHksIGQzLCBlbnYpID0+XG4gICAgbGV0IGVudicgPSBPcHRpb24ubWFwKHN1YnN0X3Zhcl9lbnYobSwgZDEsIHgpLCBlbnYpO1xuICAgIGxldCBkMyA9XG4gICAgICBpZiAoREhQYXQuYmluZHNfdmFyKG0sIHgsIHkpKSB7XG4gICAgICAgIGQzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgICB9O1xuICAgIEZpeEYoeSwgZDMsIGVudicpIHw+IHJld3JhcDtcbiAgfCBGdW4oZHAsIGQzLCBlbnYsIHMpID0+XG4gICAgLyogRnVuY3Rpb24gY2xvc3VyZSBzaG91bGRuJ3QgYXBwZWFyIGR1cmluZyBzdWJzdGl0dXRpb25cbiAgICAgICAod2hpY2ggb25seSBpcyBjYWxsZWQgZnJvbSBlbGFib3JhdGlvbiBjdXJyZW50bHkpICovXG4gICAgbGV0IGVudicgPSBPcHRpb24ubWFwKHN1YnN0X3Zhcl9lbnYobSwgZDEsIHgpLCBlbnYpO1xuICAgIGlmIChESFBhdC5iaW5kc192YXIobSwgeCwgZHApKSB7XG4gICAgICBGdW4oZHAsIGQzLCBlbnYnLCBzKSB8PiByZXdyYXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgICAgRnVuKGRwLCBkMywgZW52JywgcykgfD4gcmV3cmFwO1xuICAgIH07XG4gIHwgVHlwRnVuKHRwYXQsIGQzLCBzKSA9PlxuICAgIFR5cEZ1bih0cGF0LCBzdWJzdF92YXIobSwgZDEsIHgsIGQzKSwgcykgfD4gcmV3cmFwXG4gIHwgQ2xvc3VyZShlbnYsIGQzKSA9PlxuICAgIC8qIENsb3N1cmUgc2hvdWxkbid0IGFwcGVhciBkdXJpbmcgc3Vic3RpdHV0aW9uICh3aGljaFxuICAgICAgIG9ubHkgaXMgY2FsbGVkIGZyb20gZWxhYm9yYXRpb24gY3VycmVudGx5KSAqL1xuICAgIGxldCBlbnYnID0gc3Vic3RfdmFyX2VudihtLCBkMSwgeCwgZW52KTtcbiAgICBsZXQgZDMnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgQ2xvc3VyZShlbnYnLCBkMycpIHw+IHJld3JhcDtcbiAgfCBBcChkaXIsIGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBBcChkaXIsIGQzLCBkNCkgfD4gcmV3cmFwO1xuICB8IEJ1aWx0aW5GdW4oXykgPT4gZDJcbiAgfCBUZXN0KGQzKSA9PiBUZXN0KHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpKSB8PiByZXdyYXBcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBkMlxuICB8IExpc3RMaXQoZHMpID0+IExpc3RMaXQoTGlzdC5tYXAoc3Vic3RfdmFyKG0sIGQxLCB4KSwgZHMpKSB8PiByZXdyYXBcbiAgfCBDb25zKGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBDb25zKGQzLCBkNCkgfD4gcmV3cmFwO1xuICB8IExpc3RDb25jYXQoZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIExpc3RDb25jYXQoZDMsIGQ0KSB8PiByZXdyYXA7XG4gIHwgVHVwbGUoZHMpID0+IFR1cGxlKExpc3QubWFwKHN1YnN0X3ZhcihtLCBkMSwgeCksIGRzKSkgfD4gcmV3cmFwXG4gIHwgVW5PcChvcCwgZDMpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgVW5PcChvcCwgZDMpIHw+IHJld3JhcDtcbiAgfCBCaW5PcChvcCwgZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIEJpbk9wKG9wLCBkMywgZDQpIHw+IHJld3JhcDtcbiAgfCBNYXRjaChkcywgcnVsZXMpID0+XG4gICAgbGV0IGRzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkcyk7XG4gICAgbGV0IHJ1bGVzID1cbiAgICAgIExpc3QubWFwKFxuICAgICAgICAoKHAsIHYpKSA9PlxuICAgICAgICAgIGlmIChESFBhdC5iaW5kc192YXIobSwgeCwgcCkpIHtcbiAgICAgICAgICAgIChwLCB2KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgKHAsIHN1YnN0X3ZhcihtLCBkMSwgeCwgdikpO1xuICAgICAgICAgIH0sXG4gICAgICAgIHJ1bGVzLFxuICAgICAgKTtcbiAgICBNYXRjaChkcywgcnVsZXMpIHw+IHJld3JhcDtcbiAgfCBFbXB0eUhvbGUgPT4gRW1wdHlIb2xlIHw+IHJld3JhcFxuICAvLyBUT0RPOiBoYW5kbGUgbXVsdGlob2xlXG4gIHwgTXVsdGlIb2xlKF9kMikgPT4gZDIgLy9NdWx0aUhvbGUoTGlzdC5tYXAoc3Vic3RfdmFyKG0sIGQxLCB4KSwgZHMpKSB8PiByZXdyYXBcbiAgfCBDYXN0KGQsIHR5MSwgdHkyKSA9PlxuICAgIGxldCBkJyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZCk7XG4gICAgQ2FzdChkJywgdHkxLCB0eTIpIHw+IHJld3JhcDtcbiAgfCBGYWlsZWRDYXN0KGQsIHR5MSwgdHkyKSA9PlxuICAgIGxldCBkJyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZCk7XG4gICAgRmFpbGVkQ2FzdChkJywgdHkxLCB0eTIpIHw+IHJld3JhcDtcbiAgfCBEeW5hbWljRXJyb3JIb2xlKGQsIGVycikgPT5cbiAgICBsZXQgZCcgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQpO1xuICAgIER5bmFtaWNFcnJvckhvbGUoZCcsIGVycikgfD4gcmV3cmFwO1xuICB8IElmKGQ0LCBkNSwgZDYpID0+XG4gICAgbGV0IGQ0JyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIGxldCBkNScgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ1KTtcbiAgICBsZXQgZDYnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNik7XG4gICAgSWYoZDQnLCBkNScsIGQ2JykgfD4gcmV3cmFwO1xuICB8IFR5QWxpYXModHAsIHV0LCBkNCkgPT5cbiAgICBsZXQgZDQnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNCk7XG4gICAgVHlBbGlhcyh0cCwgdXQsIGQ0JykgfD4gcmV3cmFwO1xuICB8IFBhcmVucyhkNCkgPT5cbiAgICBsZXQgZDQnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNCk7XG4gICAgUGFyZW5zKGQ0JykgfD4gcmV3cmFwO1xuICB8IERlZmVycmFsKF8pID0+IGQyXG4gIHwgRGVmZXJyZWRBcChkMywgZDRzKSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIGxldCBkNHMgPSBMaXN0Lm1hcChzdWJzdF92YXIobSwgZDEsIHgpLCBkNHMpO1xuICAgIERlZmVycmVkQXAoZDMsIGQ0cykgfD4gcmV3cmFwO1xuICB8IFR5cEFwKGQzLCB1dCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBUeXBBcChkMywgdXQpIHw+IHJld3JhcDtcbiAgfTtcbn1cblxuYW5kIHN1YnN0X3Zhcl9lbnYgPVxuICAgIChtLCBkMTogREhFeHAudCwgeDogVmFyLnQsIGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQpXG4gICAgOiBDbG9zdXJlRW52aXJvbm1lbnQudCA9PiB7XG4gIGxldCBpZCA9IGVudiB8PiBDbG9zdXJlRW52aXJvbm1lbnQuaWRfb2Y7XG4gIGxldCBtYXAgPVxuICAgIGVudlxuICAgIHw+IENsb3N1cmVFbnZpcm9ubWVudC5tYXBfb2ZcbiAgICB8PiBFbnZpcm9ubWVudC5mb2xkbyhcbiAgICAgICAgICgoeCcsIGQnOiBESEV4cC50KSwgbWFwKSA9PiB7XG4gICAgICAgICAgIGxldCBkJyA9XG4gICAgICAgICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQnKSkge1xuICAgICAgICAgICAgIC8qIFN1YnN0aXR1dGUgZWFjaCBwcmV2aW91c2x5IHN1YnN0aXR1dGVkIGJpbmRpbmcgaW50byB0aGVcbiAgICAgICAgICAgICAgKiBmaXhwb2ludC4gKi9cbiAgICAgICAgICAgICB8IEZpeEYoXykgPT5cbiAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgfD4gRW52aXJvbm1lbnQuZm9sZG8oXG4gICAgICAgICAgICAgICAgICAgICgoeCcnLCBkJycpLCBkKSA9PiBzdWJzdF92YXIobSwgZCcnLCB4JycsIGQpLFxuICAgICAgICAgICAgICAgICAgICBkJyxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IF8gPT4gZCdcbiAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgIC8qIFN1YnN0aXR1dGUuICovXG4gICAgICAgICAgIGxldCBkJyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZCcpO1xuICAgICAgICAgICBFbnZpcm9ubWVudC5leHRlbmQobWFwLCAoeCcsIGQnKSk7XG4gICAgICAgICB9LFxuICAgICAgICAgRW52aXJvbm1lbnQuZW1wdHksXG4gICAgICAgKTtcblxuICBDbG9zdXJlRW52aXJvbm1lbnQud3JhcChpZCwgbWFwKTtcbn1cblxuYW5kIHN1YnN0X3Zhcl9maWx0ZXIgPVxuICAgIChtLCBkMTogREhFeHAudCwgeDogVmFyLnQsIGZsdDogVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQudClcbiAgICA6IFRlcm1CYXNlLlN0ZXBwZXJGaWx0ZXJLaW5kLnQgPT4ge1xuICBmbHQgfD4gVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQubWFwKHN1YnN0X3ZhcihtLCBkMSwgeCkpO1xufTtcblxubGV0IHN1YnN0ID0gKG0sIGVudjogRW52aXJvbm1lbnQudCwgZDogREhFeHAudCk6IERIRXhwLnQgPT5cbiAgZW52XG4gIHw+IEVudmlyb25tZW50LmZvbGRvKFxuICAgICAgICh4ZDogKFZhci50LCBESEV4cC50KSwgZDIpID0+IHtcbiAgICAgICAgIGxldCAoeCwgZDEpID0geGQ7XG4gICAgICAgICBzdWJzdF92YXIobSwgZDEsIHgsIGQyKTtcbiAgICAgICB9LFxuICAgICAgIGQsXG4gICAgICk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXRpY3MgPSB7XG4gIHRlcm06IFVFeHAudCxcbiAgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQsXG4gIGVycm9yX2lkczogbGlzdChJZC50KSxcbn07XG5cbmxldCBzdGF0aWNzX29mX3Rlcm0gPSAofnNldHRpbmdzLCB0ZXJtOiBVRXhwLnQsIGVkaXRvcjogRWRpdG9yLnQpOiBzdGF0aWNzID0+IHtcbiAgbGV0IGluZm9fbWFwID1cbiAgICBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLCBCdWlsdGlucy5jdHhfaW5pdCwgdGVybSk7XG4gIGxldCBlcnJvcl9pZHMgPVxuICAgIFN0YXRpY3MuTWFwLmVycm9yX2lkcyhlZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcywgaW5mb19tYXApO1xuICB7dGVybSwgaW5mb19tYXAsIGVycm9yX2lkc307XG59O1xuXG5sZXQgZW1wdHlfc3RhdGljczogc3RhdGljcyA9IHtcbiAgdGVybTogVUV4cC57aWRzOiBbSWQuaW52YWxpZF0sIGNvcGllZDogZmFsc2UsIHRlcm06IFR1cGxlKFtdKX0sXG4gIGluZm9fbWFwOiBJZC5NYXAuZW1wdHksXG4gIGVycm9yX2lkczogW10sXG59O1xuXG5tb2R1bGUgS2V5ID0ge1xuICBpbmNsdWRlIFN0cmluZztcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBzdHJpbmc7XG59O1xuXG5tb2R1bGUgTSA9IFV0aWwuTWFwVXRpbC5NYWtlKEtleSk7XG5pbmNsdWRlIE07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IE0udChzdGF0aWNzKTtcblxubGV0IG1rID0gKGRzOiBsaXN0KChLZXkudCwgc3RhdGljcykpKTogdCA9PlxuICBkcyB8PiBMaXN0LnRvX3NlcSB8PiBvZl9zZXEgfD4gbWFwKEZ1bi5pZCk7XG5cbmxldCBsb29rdXAgPSAocmVzdWx0czogdCwga2V5OiBLZXkudCkgPT5cbiAgc3dpdGNoIChmaW5kX29wdChrZXksIHJlc3VsdHMpKSB7XG4gIHwgTm9uZSA9PiBlbXB0eV9zdGF0aWNzXG4gIHwgU29tZShzdGF0aWNzKSA9PiBzdGF0aWNzXG4gIH07XG4iLCJvcGVuIFRyYW5zaXRpb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcCA9IHtcbiAgZDogREhFeHAudCwgLy8gdGVjaG5pY2FsbHkgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSBkX2xvYyBhbmQgY3R4XG4gIHN0YXRlOiBFdmFsdWF0b3JTdGF0ZS50LFxuICBkX2xvYzogREhFeHAudCwgLy8gdGhlIGV4cHJlc3Npb24gYXQgdGhlIGxvY2F0aW9uIGdpdmVuIGJ5IGN0eFxuICBkX2xvYyc6IERIRXhwLnQsXG4gIGN0eDogRXZhbEN0eC50LFxuICBrbmQ6IHN0ZXBfa2luZCxcbn07XG5cbm1vZHVsZSBFdmFsT2JqID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LCAvLyB0ZWNobmljYWxseSBjYW4gYmUgY2FsY3VsYXRlZCBmcm9tIGN0eFxuICAgIGRfbG9jOiBESEV4cC50LFxuICAgIGN0eDogRXZhbEN0eC50LFxuICAgIGtuZDogc3RlcF9raW5kLFxuICB9O1xuXG4gIGxldCBtayA9IChjdHgsIGVudiwgZF9sb2MsIGtuZCkgPT4ge2N0eCwgZW52LCBkX2xvYywga25kfTtcblxuICBsZXQgZ2V0X2N0eCA9IChvYmo6IHQpOiBFdmFsQ3R4LnQgPT4ge1xuICAgIG9iai5jdHg7XG4gIH07XG4gIGxldCBnZXRfa2luZCA9IChvYmo6IHQpOiBzdGVwX2tpbmQgPT4gb2JqLmtuZDtcblxuICBsZXQgd3JhcCA9IChmOiBFdmFsQ3R4LnQgPT4gRXZhbEN0eC50LCBvYmo6IHQpID0+IHtcbiAgICAuLi5vYmosXG4gICAgY3R4OiBvYmouY3R4IHw+IGYsXG4gIH07XG59O1xuXG5tb2R1bGUgRGVjb21wb3NlID0ge1xuICBtb2R1bGUgUmVzdWx0ID0ge1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEluZGV0XG4gICAgICB8IEJveGVkVmFsdWVcbiAgICAgIHwgU3RlcChsaXN0KEV2YWxPYmoudCkpO1xuXG4gICAgbGV0IHVuYm94ID0gKHI6IHQpOiBsaXN0KEV2YWxPYmoudCkgPT4ge1xuICAgICAgc3dpdGNoIChyKSB7XG4gICAgICB8IEluZGV0XG4gICAgICB8IEJveGVkVmFsdWUgPT4gW11cbiAgICAgIHwgU3RlcChvYmpzKSA9PiBvYmpzXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIERlY29tcG9zZUVWTW9kZToge1xuICAgIGluY2x1ZGVcbiAgICAgIEVWX01PREUgd2l0aFxuICAgICAgICB0eXBlIHJlc3VsdCA9IFJlc3VsdC50IGFuZCB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICB9ID0ge1xuICAgIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCk7XG4gICAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAoUmVzdWx0LnQsICdhKTtcbiAgICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpID0gKCdiLCBSZXN1bHQudCwgQ2xvc3VyZUVudmlyb25tZW50LnQsICdhKTtcbiAgICB0eXBlIHJlc3VsdCA9IFJlc3VsdC50O1xuXG4gICAgbGV0IHJlcV92YWx1ZSA9IChjb250LCB3ciwgZCkgPT4ge1xuICAgICAgc3dpdGNoIChjb250KGQpKSB7XG4gICAgICB8IFJlc3VsdC5JbmRldCA9PiAoUmVzdWx0LkluZGV0LCBkKVxuICAgICAgfCBSZXN1bHQuQm94ZWRWYWx1ZSA9PiAoUmVzdWx0LkJveGVkVmFsdWUsIGQpXG4gICAgICB8IFJlc3VsdC5TdGVwKG9ianMpID0+IChcbiAgICAgICAgICBSZXN1bHQuU3RlcChMaXN0Lm1hcChFdmFsT2JqLndyYXAod3IpLCBvYmpzKSksXG4gICAgICAgICAgZCxcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0ICgmJik6IChSZXN1bHQudCwgUmVzdWx0LnQpID0+IFJlc3VsdC50ID1cbiAgICAgICh1LCB2KSA9PlxuICAgICAgICBzd2l0Y2ggKHUsIHYpIHtcbiAgICAgICAgfCAoU3RlcChzczEpLCBTdGVwKHNzMikpID0+IFN0ZXAoc3MxIEAgc3MyKVxuICAgICAgICB8IChTdGVwKHNzKSwgXylcbiAgICAgICAgfCAoXywgU3RlcChzcykpID0+IFN0ZXAoc3MpXG4gICAgICAgIHwgKEluZGV0LCBCb3hlZFZhbHVlKVxuICAgICAgICB8IChCb3hlZFZhbHVlLCBJbmRldClcbiAgICAgICAgfCAoSW5kZXQsIEluZGV0KSA9PiBJbmRldFxuICAgICAgICB8IChCb3hlZFZhbHVlLCBCb3hlZFZhbHVlKSA9PiBCb3hlZFZhbHVlXG4gICAgICAgIH07XG5cbiAgICBsZXQgcmVjIHJlcV9hbGxfdmFsdWUnID0gKGNvbnQsIHdyLCBkcycpID0+XG4gICAgICBmdW5cbiAgICAgIHwgW10gPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCBbXSlcbiAgICAgIHwgW2QsIC4uLmRzXSA9PiB7XG4gICAgICAgICAgbGV0IChyMSwgdikgPSByZXFfdmFsdWUoY29udCwgd3IoXywgKGRzJywgZHMpKSwgZCk7XG4gICAgICAgICAgbGV0IChyMiwgdnMpID0gcmVxX2FsbF92YWx1ZScoY29udCwgd3IsIFtkLCAuLi5kcyddLCBkcyk7XG4gICAgICAgICAgKHIxICYmIHIyLCBbdiwgLi4udnNdKTtcbiAgICAgICAgfTtcbiAgICBsZXQgcmVxX2FsbF92YWx1ZSA9IChjb250LCB3ciwgZHMpID0+IHtcbiAgICAgIHJlcV9hbGxfdmFsdWUnKGNvbnQsIHdyLCBbXSwgZHMpO1xuICAgIH07XG5cbiAgICBsZXQgcmVxX2ZpbmFsID0gKGNvbnQsIHdyLCBkKSA9PiB7XG4gICAgICAoXG4gICAgICAgIHN3aXRjaCAoY29udChkKSkge1xuICAgICAgICB8IFJlc3VsdC5JbmRldCA9PiBSZXN1bHQuQm94ZWRWYWx1ZVxuICAgICAgICB8IFJlc3VsdC5Cb3hlZFZhbHVlID0+IFJlc3VsdC5Cb3hlZFZhbHVlXG4gICAgICAgIHwgUmVzdWx0LlN0ZXAob2JqcykgPT5cbiAgICAgICAgICBSZXN1bHQuU3RlcChMaXN0Lm1hcChFdmFsT2JqLndyYXAod3IpLCBvYmpzKSlcbiAgICAgICAgfSxcbiAgICAgICAgZCxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGxldCByZXFfZmluYWxfb3JfdmFsdWUgPSAoY29udCwgd3IsIGQpID0+IHtcbiAgICAgIHN3aXRjaCAoY29udChkKSkge1xuICAgICAgfCBSZXN1bHQuSW5kZXQgPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCAoZCwgZmFsc2UpKVxuICAgICAgfCBSZXN1bHQuQm94ZWRWYWx1ZSA9PiAoUmVzdWx0LkJveGVkVmFsdWUsIChkLCB0cnVlKSlcbiAgICAgIHwgUmVzdWx0LlN0ZXAob2JqcykgPT4gKFxuICAgICAgICAgIFJlc3VsdC5TdGVwKExpc3QubWFwKEV2YWxPYmoud3JhcCh3ciksIG9ianMpKSxcbiAgICAgICAgICAoZCwgZmFsc2UpLFxuICAgICAgICApXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgcmVjIHJlcV9hbGxfZmluYWwnID0gKGNvbnQsIHdyLCBkcycpID0+XG4gICAgICBmdW5cbiAgICAgIHwgW10gPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCBbXSlcbiAgICAgIHwgW2QsIC4uLmRzXSA9PiB7XG4gICAgICAgICAgbGV0IChyMSwgdikgPSByZXFfZmluYWwoY29udCwgd3IoXywgKGRzJywgZHMpKSwgZCk7XG4gICAgICAgICAgbGV0IChyMiwgdnMpID0gcmVxX2FsbF9maW5hbCcoY29udCwgd3IsIFtkLCAuLi5kcyddLCBkcyk7XG4gICAgICAgICAgKHIxICYmIHIyLCBbdiwgLi4udnNdKTtcbiAgICAgICAgfTtcblxuICAgIGxldCByZXFfYWxsX2ZpbmFsID0gKGNvbnQsIHdyLCBkcykgPT4ge1xuICAgICAgcmVxX2FsbF9maW5hbCcoY29udCwgd3IsIFtdLCBkcyk7XG4gICAgfTtcblxuICAgIGxldCAobGV0Lik6IChyZXF1aXJlbWVudHMoJ2EsIERIRXhwLnQpLCAnYSA9PiBydWxlKSA9PiByZXN1bHQgPVxuICAgICAgKHJxLCBybCkgPT5cbiAgICAgICAgc3dpdGNoIChycSkge1xuICAgICAgICB8IChfLCBSZXN1bHQuSW5kZXQsIF8sIF8pID0+IFJlc3VsdC5JbmRldFxuICAgICAgICB8ICh1bmRvLCBSZXN1bHQuQm94ZWRWYWx1ZSwgZW52LCB2KSA9PlxuICAgICAgICAgIHN3aXRjaCAocmwodikpIHtcbiAgICAgICAgICB8IENvbnN0cnVjdG9yID0+IFJlc3VsdC5Cb3hlZFZhbHVlXG4gICAgICAgICAgfCBJbmRldCA9PiBSZXN1bHQuSW5kZXRcbiAgICAgICAgICB8IFN0ZXAocykgPT4gUmVzdWx0LlN0ZXAoW0V2YWxPYmoubWsoTWFyaywgZW52LCB1bmRvLCBzLmtpbmQpXSlcbiAgICAgICAgICAvLyBUT0RPOiBBY3R1YWxseSBzaG93IHRoZXNlIGV4Y2VwdGlvbnMgdG8gdGhlIHVzZXIhXG4gICAgICAgICAgfCBleGNlcHRpb24gKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihfKSkgPT4gUmVzdWx0LkluZGV0XG4gICAgICAgICAgfVxuICAgICAgICB8IChfLCBSZXN1bHQuU3RlcChfKSBhcyByLCBfLCBfKSA9PiByXG4gICAgICAgIH07XG5cbiAgICBsZXQgKGFuZC4pOlxuICAgICAgKHJlcXVpcmVtZW50cygnYSwgJ2MgPT4gJ2IpLCByZXF1aXJlbWVudCgnYykpID0+XG4gICAgICByZXF1aXJlbWVudHMoKCdhLCAnYyksICdiKSA9XG4gICAgICAoKHUsIHIxLCBlbnYsIHYxKSwgKHIyLCB2MikpID0+ICh1KHYyKSwgcjEgJiYgcjIsIGVudiwgKHYxLCB2MikpO1xuXG4gICAgbGV0IG90aGVyd2lzZSA9IChlbnYsIG8pID0+IChvLCBSZXN1bHQuQm94ZWRWYWx1ZSwgZW52LCAoKSk7XG4gICAgbGV0IHVwZGF0ZV90ZXN0ID0gKHN0YXRlLCBpZCwgdikgPT5cbiAgICAgIHN0YXRlIDo9IEV2YWx1YXRvclN0YXRlLmFkZF90ZXN0KHN0YXRlXiwgaWQsIHYpO1xuICB9O1xuXG4gIG1vZHVsZSBEZWNvbXAgPSBUcmFuc2l0aW9uKERlY29tcG9zZUVWTW9kZSk7XG4gIGxldCByZWMgZGVjb21wb3NlID0gKHN0YXRlLCBlbnYsIGV4cCkgPT4ge1xuICAgIGxldCAodGVybSwgcmV3cmFwKSA9IERIRXhwLnVud3JhcChleHApO1xuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgREhFeHAuRmlsdGVyKGZsdCwgZDEpID0+XG4gICAgICBEZWNvbXBvc2VFVk1vZGUuKFxuICAgICAgICB7XG4gICAgICAgICAgbGV0LiBfID1cbiAgICAgICAgICAgIG90aGVyd2lzZShlbnYsIChkMSkgPT4gKEZpbHRlcihmbHQsIGQxKSB8PiByZXdyYXA6IERIRXhwLnQpKVxuICAgICAgICAgIGFuZC4gZDEgPVxuICAgICAgICAgICAgcmVxX2ZpbmFsKFxuICAgICAgICAgICAgICBkZWNvbXBvc2Uoc3RhdGUsIGVudiksXG4gICAgICAgICAgICAgIGQxID0+XG4gICAgICAgICAgICAgICAgVGVybSh7dGVybTogRmlsdGVyKGZsdCwgZDEpLCBpZHM6IFtESEV4cC5yZXBfaWQoZXhwKV19KSxcbiAgICAgICAgICAgICAgZDEsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIFN0ZXAoe1xuICAgICAgICAgICAgZXhwcjogZDEsXG4gICAgICAgICAgICBzdGF0ZV91cGRhdGU6ICgpID0+ICgpLFxuICAgICAgICAgICAga2luZDogQ29tcGxldGVGaWx0ZXIsXG4gICAgICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIHwgXyA9PlxuICAgICAgc3dpdGNoIChEZWNvbXAudHJhbnNpdGlvbihkZWNvbXBvc2UsIHN0YXRlLCBlbnYsIGV4cCkpIHtcbiAgICAgIHwgciA9PiByXG4gICAgICB8IGV4Y2VwdGlvbiAoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKF8pKSA9PiBSZXN1bHQuSW5kZXRcbiAgICAgIH1cbiAgICB9O1xuICB9O1xufTtcblxubW9kdWxlIFRha2VTdGVwID0ge1xuICBtb2R1bGUgVGFrZVN0ZXBFVk1vZGU6IHtcbiAgICBpbmNsdWRlXG4gICAgICBFVl9NT0RFIHdpdGhcbiAgICAgICAgdHlwZSByZXN1bHQgPSBvcHRpb24oREhFeHAudCkgYW5kIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCk7XG4gIH0gPSB7XG4gICAgdHlwZSBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS50KTtcbiAgICB0eXBlIHJlcXVpcmVtZW50KCdhKSA9ICdhO1xuICAgIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYikgPSAnYTtcbiAgICB0eXBlIHJlc3VsdCA9IG9wdGlvbihESEV4cC50KTtcblxuICAgIC8vIEFzc3VtZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgZWl0aGVyIHZhbHVlIG9yIGZpbmFsIGFzIHJlcXVpcmVkLlxuICAgIGxldCByZXFfdmFsdWUgPSAoXywgXywgZCkgPT4gZDtcbiAgICBsZXQgcmVxX2FsbF92YWx1ZSA9IChfLCBfLCBkcykgPT4gZHM7XG4gICAgbGV0IHJlcV9maW5hbCA9IChfLCBfLCBkKSA9PiBkO1xuICAgIGxldCByZXFfYWxsX2ZpbmFsID0gKF8sIF8sIGRzKSA9PiBkcztcblxuICAgIGxldCByZXFfZmluYWxfb3JfdmFsdWUgPSAoXywgXywgZCkgPT4gKGQsIHRydWUpO1xuXG4gICAgbGV0IChsZXQuKSA9IChycTogcmVxdWlyZW1lbnRzKCdhLCBESEV4cC50KSwgcmw6ICdhID0+IHJ1bGUpID0+XG4gICAgICBzd2l0Y2ggKHJsKHJxKSkge1xuICAgICAgfCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIF99KSA9PlxuICAgICAgICBzdGF0ZV91cGRhdGUoKTtcbiAgICAgICAgU29tZShleHByKTtcbiAgICAgIHwgQ29uc3RydWN0b3JcbiAgICAgIHwgSW5kZXQgPT4gTm9uZVxuICAgICAgfTtcblxuICAgIGxldCAoYW5kLikgPSAoeDEsIHgyKSA9PiAoeDEsIHgyKTtcblxuICAgIGxldCBvdGhlcndpc2UgPSAoXywgXykgPT4gKCk7XG5cbiAgICBsZXQgdXBkYXRlX3Rlc3QgPSAoc3RhdGUsIGlkLCB2KSA9PlxuICAgICAgc3RhdGUgOj0gRXZhbHVhdG9yU3RhdGUuYWRkX3Rlc3Qoc3RhdGVeLCBpZCwgdik7XG4gIH07XG5cbiAgbW9kdWxlIFRha2VTdGVwRVYgPSBUcmFuc2l0aW9uKFRha2VTdGVwRVZNb2RlKTtcblxuICBsZXQgdGFrZV9zdGVwID0gKHN0YXRlLCBlbnYsIGQpID0+XG4gICAgVGFrZVN0ZXBFVi50cmFuc2l0aW9uKChfLCBfLCBfKSA9PiBOb25lLCBzdGF0ZSwgZW52LCBkKTtcbn07XG5cbmxldCB0YWtlX3N0ZXAgPSBUYWtlU3RlcC50YWtlX3N0ZXA7XG5cbmxldCBkZWNvbXBvc2UgPSAoZDogREhFeHAudCwgZXM6IEV2YWx1YXRvclN0YXRlLnQpID0+IHtcbiAgbGV0IGVudiA9IENsb3N1cmVFbnZpcm9ubWVudC5vZl9lbnZpcm9ubWVudChCdWlsdGlucy5lbnZfaW5pdCk7XG4gIGxldCBycyA9IERlY29tcG9zZS5kZWNvbXBvc2UocmVmKGVzKSwgZW52LCBkKTtcbiAgRGVjb21wb3NlLlJlc3VsdC51bmJveChycyk7XG59O1xuXG5sZXQgZXZhbHVhdGVfd2l0aF9oaXN0b3J5ID0gZCA9PiB7XG4gIGxldCBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS5pbml0KTtcbiAgbGV0IHJlYyBnbyA9IGQgPT5cbiAgICBzd2l0Y2ggKGRlY29tcG9zZShkLCBzdGF0ZV4pKSB7XG4gICAgfCBbXSA9PiBbXVxuICAgIHwgW3gsIC4uLl9dID0+XG4gICAgICBzd2l0Y2ggKHRha2Vfc3RlcChzdGF0ZSwgeC5lbnYsIHguZF9sb2MpKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShkKSA9PlxuICAgICAgICBsZXQgbmV4dCA9IEV2YWxDdHguY29tcG9zZSh4LmN0eCwgZCk7XG4gICAgICAgIFtuZXh0LCAuLi5nbyhuZXh0KV07XG4gICAgICB9XG4gICAgfTtcbiAgZ28oZCk7XG59O1xuIiwidHlwZSB0ID0gbGlzdChUZXJtQmFzZS5TdGVwcGVyRmlsdGVyS2luZC5maWx0ZXIpO1xubGV0IGV4dGVuZHMgPSAoZmx0LCBlbnYpID0+IFtmbHQsIC4uLmVudl07XG4iLCJsZXQgcmVjIG1hdGNoZXNfZXhwID1cbiAgICAgICAgKGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsIGQ6IERIRXhwLnQsIGY6IERIRXhwLnQpOiBib29sID0+IHtcbiAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQpLCBESEV4cC50ZXJtX29mKGYpKSB7XG4gIHwgKFBhcmVucyh4KSwgXykgPT4gbWF0Y2hlc19leHAoZW52LCB4LCBmKVxuICB8IChfLCBQYXJlbnMoeCkpID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgeClcbiAgfCAoQ29uc3RydWN0b3IoXCIkZVwiKSwgXykgPT4gZmFpbHdpdGgoXCIkZSBpbiBtYXRjaGVkIGV4cHJlc3Npb25cIilcbiAgfCAoQ29uc3RydWN0b3IoXCIkdlwiKSwgXykgPT4gZmFpbHdpdGgoXCIkdiBpbiBtYXRjaGVkIGV4cHJlc3Npb25cIilcbiAgfCAoXywgQ29uc3RydWN0b3IoXCIkdlwiKSkgPT5cbiAgICBzd2l0Y2ggKFZhbHVlQ2hlY2tlci5jaGVja192YWx1ZSgoKSwgZW52LCBkKSkge1xuICAgIHwgSW5kZXRcbiAgICB8IFZhbHVlID0+IHRydWVcbiAgICB8IEV4cHIgPT4gZmFsc2VcbiAgICB9XG5cbiAgfCAoXywgRW1wdHlIb2xlKVxuICB8IChfLCBDb25zdHJ1Y3RvcihcIiRlXCIpKSA9PiB0cnVlXG5cbiAgfCAoXywgQ2xvc3VyZShlbnYsIGYpKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIHwgKF8sIENhc3QoZiwgXywgXykpID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcbiAgfCAoXywgRmFpbGVkQ2FzdChmLCBfLCBfKSkgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuXG4gIHwgKENsb3N1cmUoZW52LCBkKSwgXykgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICB8IChDYXN0KGQsIF8sIF8pLCBfKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIHwgKEZhaWxlZENhc3QoZCwgXywgXyksIF8pID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcblxuICB8IChWYXIoZHgpLCBWYXIoZngpKSA9PiBkeCA9PSBmeFxuICB8IChWYXIoZHgpLCBfKSA9PlxuICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIGR4KSkge1xuICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgIHwgU29tZShkKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gICAgfVxuICB8IChfLCBWYXIoZngpKSA9PlxuICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIGZ4KSkge1xuICAgIHwgU29tZShmKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gICAgfCBOb25lID0+IGZhbHNlXG4gICAgfVxuXG4gIHwgKEVtcHR5SG9sZSwgXykgPT4gZmFsc2VcblxuICB8IChEZWZlcnJhbCh4KSwgRGVmZXJyYWwoeSkpID0+IHggPT0geVxuICB8IChEZWZlcnJhbChfKSwgXykgPT4gZmFsc2VcblxuICB8IChGaWx0ZXIoZGYsIGRkKSwgRmlsdGVyKGZmLCBmZCkpID0+XG4gICAgVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQuZmFzdF9lcXVhbChkZiwgZmYpICYmIG1hdGNoZXNfZXhwKGVudiwgZGQsIGZkKVxuICB8IChGaWx0ZXIoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQm9vbChkdiksIEJvb2woZnYpKSA9PiBkdiA9PSBmdlxuICB8IChCb29sKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEludChkdiksIEludChmdikpID0+IGR2ID09IGZ2XG4gIHwgKEludChfKSwgXykgPT4gZmFsc2VcblxuICB8IChGbG9hdChkdiksIEZsb2F0KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoRmxvYXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoU3RyaW5nKGR2KSwgU3RyaW5nKGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoU3RyaW5nKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKENvbnN0cnVjdG9yKF8pLCBBcChfLCBkMSwgZDIpKSA9PlxuICAgIHN3aXRjaCAoREhFeHAudGVybV9vZihkMSksIERIRXhwLnRlcm1fb2YoZDIpKSB7XG4gICAgfCAoQ29uc3RydWN0b3IoXCJ+TVZhbFwiKSwgVHVwbGUoW10pKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfVxuICB8IChDb25zdHJ1Y3RvcihkdCksIENvbnN0cnVjdG9yKGZ0KSkgPT4gZHQgPT0gZnRcbiAgfCAoQ29uc3RydWN0b3IoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQnVpbHRpbkZ1bihkbiksIEJ1aWx0aW5GdW4oZm4pKSA9PiBkbiA9PSBmblxuICB8IChCdWlsdGluRnVuKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFR5cEZ1bihwYXQxLCBkMSwgczEpLCBUeXBGdW4ocGF0MiwgZDIsIHMyKSkgPT5cbiAgICBzMSA9PSBzMiAmJiBtYXRjaGVzX3V0cGF0KHBhdDEsIHBhdDIpICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGQyKVxuICB8IChUeXBGdW4oXyksIF8pID0+IGZhbHNlXG5cbiAgLy8gTm90IHN1cmUgaWYgd2Ugc2hvdWxkIGJlIGNoZWNraW5nIGZ1bmN0aW9ucyBmb3IgY2xvc3VyZXMgaGVyZVxuICB8IChGdW4oZHAxLCBkMSwgXywgZG5hbWUxKSwgRnVuKGZwMSwgZjEsIF8sIGZuYW1lMSkpID0+XG4gICAgbWF0Y2hlc19wYXQoZHAxLCBmcDEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBkbmFtZTEgPT0gZm5hbWUxXG4gIHwgKEZ1bihfKSwgXykgPT4gZmFsc2VcblxuICB8IChGaXhGKGRwLCBkMSwgXyksIEZpeEYoZnAsIGYxLCBfKSkgPT5cbiAgICBtYXRjaGVzX3BhdChkcCwgZnApICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICB8IChGaXhGKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExldChkcCwgZDEsIGQyKSwgTGV0KGZwLCBmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfcGF0KGRwLCBmcClcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoTGV0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFR5cEFwKGQxLCB0MSksIFR5cEFwKGQyLCB0MikpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZDIpICYmIG1hdGNoZXNfdHlwKHQxLCB0MilcbiAgfCAoVHlwQXAoXyksIF8pID0+IGZhbHNlXG5cbiAgLy8gVE9ETzogZG8gd2Ugd2FudCBmKHgpIHRvIG1hdGNoIHggfD4gZiA/Pz9cbiAgfCAoQXAoXywgZDEsIGQyKSwgQXAoXywgZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSkgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKEFwKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKERlZmVycmVkQXAoZDEsIGQyKSwgRGVmZXJyZWRBcChmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICAgICYmIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICAgIChhY2MsIGQsIGYpID0+IGFjYyAmJiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpLFxuICAgICAgICAgdHJ1ZSxcbiAgICAgICAgIGQyLFxuICAgICAgICAgZjIsXG4gICAgICAgKVxuICB8IChEZWZlcnJlZEFwKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKElmKGQxLCBkMiwgZDMpLCBJZihmMSwgZjIsIGYzKSkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQzLCBmMylcbiAgfCAoSWYoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoU2VxKGQxLCBkMiksIFNlcShmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoU2VxKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFRlc3QoZDIpLCBUZXN0KGYyKSkgPT4gbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKFRlc3QoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQ29ucyhkMSwgZDIpLCBDb25zKGYxLCBmMikpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChDb25zKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExpc3RMaXQoZHYpLCBMaXN0TGl0KGZ2KSkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAoYWNjLCBkLCBmKSA9PiBhY2MgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKSxcbiAgICAgIHRydWUsXG4gICAgICBkdixcbiAgICAgIGZ2LFxuICAgIClcbiAgfCAoTGlzdExpdChfKSwgXykgPT4gZmFsc2VcblxuICB8IChUdXBsZShkdiksIFR1cGxlKGZ2KSkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAoYWNjLCBkLCBmKSA9PiBhY2MgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKSxcbiAgICAgIHRydWUsXG4gICAgICBkdixcbiAgICAgIGZ2LFxuICAgIClcbiAgfCAoVHVwbGUoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoVW5PcChkX29wLCBkMSksIFVuT3AoZl9vcCwgZjEpKSA9PlxuICAgIGRfb3AgPT0gZl9vcCAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgfCAoVW5PcChfKSwgXykgPT4gZmFsc2VcblxuICB8IChCaW5PcChkX29wLCBkMSwgZDIpLCBCaW5PcChmX29wLCBmMSwgZjIpKSA9PlxuICAgIGRfb3AgPT0gZl9vcCAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSkgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKEJpbk9wKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExpc3RDb25jYXQoZDEsIGQyKSwgTGlzdENvbmNhdChmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoTGlzdENvbmNhdChfKSwgXykgPT4gZmFsc2VcblxuICB8IChNYXRjaChkc2NydXQsIGRydWxlKSwgTWF0Y2goZnNjcnV0LCBmcnVsZSkpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkc2NydXQsIGZzY3J1dClcbiAgICAmJiAoXG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBMaXN0LmZvcl9hbGwyKFxuICAgICAgICAgICgoZGssIGR2KSwgKGZrLCBmdikpID0+XG4gICAgICAgICAgICBtYXRjaGVzX3BhdChkaywgZmspICYmIG1hdGNoZXNfZXhwKGVudiwgZHYsIGZ2KSxcbiAgICAgICAgICBkcnVsZSxcbiAgICAgICAgICBmcnVsZSxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gZmFsc2VcbiAgICAgIHwgcmVzID0+IHJlc1xuICAgICAgfVxuICAgIClcbiAgfCAoTWF0Y2goXyksIF8pID0+IGZhbHNlXG4gIC8vIFRPRE86IHNob3VsZCB0aGVzZSBub3QgZGVmYXVsdCB0byBmYWxzZT9cbiAgfCAoTXVsdGlIb2xlKF8pLCBfKSA9PiBmYWxzZVxuICB8IChJbnZhbGlkKF8pLCBfKSA9PiBmYWxzZVxuICB8IChEeW5hbWljRXJyb3JIb2xlKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFR5QWxpYXMoZHRwLCBkdXQsIGRkKSwgVHlBbGlhcyhmdHAsIGZ1dCwgZmQpKSA9PlxuICAgIGR0cCA9PSBmdHAgJiYgZHV0ID09IGZ1dCAmJiBtYXRjaGVzX2V4cChlbnYsIGRkLCBmZClcbiAgfCAoVHlBbGlhcyhfKSwgXykgPT4gZmFsc2VcbiAgfTtcbn1cbmFuZCBtYXRjaGVzX3BhdCA9IChkOiBQYXQudCwgZjogUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoIChkIHw+IERIUGF0LnRlcm1fb2YsIGYgfD4gREhQYXQudGVybV9vZikge1xuICAvLyBNYXR0OiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgZXhhY3Qgc2VtYW50aWNzIG9mIG1hdGNoaW5nIHNob3VsZCBiZSBoZXJlLlxuICB8IChQYXJlbnMoeCksIF8pID0+IG1hdGNoZXNfcGF0KHgsIGYpXG4gIHwgKF8sIFBhcmVucyh4KSkgPT4gbWF0Y2hlc19wYXQoZCwgeClcbiAgfCAoQ2FzdCh4LCBfLCBfKSwgXykgPT4gbWF0Y2hlc19wYXQoeCwgZilcbiAgfCAoXywgQ2FzdCh4LCBfLCBfKSkgPT4gbWF0Y2hlc19wYXQoZCwgeClcbiAgfCAoXywgRW1wdHlIb2xlKSA9PiB0cnVlXG4gIHwgKE11bHRpSG9sZShfKSwgTXVsdGlIb2xlKF8pKSA9PiB0cnVlXG4gIHwgKE11bHRpSG9sZShfKSwgXykgPT4gZmFsc2VcbiAgfCAoV2lsZCwgV2lsZCkgPT4gdHJ1ZVxuICB8IChXaWxkLCBfKSA9PiBmYWxzZVxuICB8IChJbnQoZHYpLCBJbnQoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChJbnQoXyksIF8pID0+IGZhbHNlXG4gIHwgKEZsb2F0KGR2KSwgRmxvYXQoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChGbG9hdChfKSwgXykgPT4gZmFsc2VcbiAgfCAoQm9vbChkdiksIEJvb2woZnYpKSA9PiBkdiA9PSBmdlxuICB8IChCb29sKF8pLCBfKSA9PiBmYWxzZVxuICB8IChTdHJpbmcoZHYpLCBTdHJpbmcoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChTdHJpbmcoXyksIF8pID0+IGZhbHNlXG4gIHwgKExpc3RMaXQoZGwpLCBMaXN0TGl0KGZsKSkgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgTGlzdC5mb2xkX2xlZnQyKChyZXMsIGQsIGYpID0+IHJlcyAmJiBtYXRjaGVzX3BhdChkLCBmKSwgdHJ1ZSwgZGwsIGZsKVxuICAgICkge1xuICAgIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBmYWxzZVxuICAgIHwgcmVzID0+IHJlc1xuICAgIH1cbiAgfCAoTGlzdExpdChfKSwgXykgPT4gZmFsc2VcbiAgfCAoQ29uc3RydWN0b3IoZHQpLCBDb25zdHJ1Y3RvcihmdCkpID0+IGR0ID09IGZ0XG4gIHwgKENvbnN0cnVjdG9yKF8pLCBfKSA9PiBmYWxzZVxuICB8IChWYXIoZHgpLCBWYXIoZngpKSA9PiBkeCA9PSBmeFxuICB8IChWYXIoXyksIF8pID0+IGZhbHNlXG4gIHwgKFR1cGxlKGRsKSwgVHVwbGUoZmwpKSA9PlxuICAgIHN3aXRjaCAoXG4gICAgICBMaXN0LmZvbGRfbGVmdDIoKHJlcywgZCwgZikgPT4gcmVzICYmIG1hdGNoZXNfcGF0KGQsIGYpLCB0cnVlLCBkbCwgZmwpXG4gICAgKSB7XG4gICAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IGZhbHNlXG4gICAgfCByZXMgPT4gcmVzXG4gICAgfVxuICB8IChUdXBsZShfKSwgXykgPT4gZmFsc2VcbiAgfCAoQXAoZDEsIGQyKSwgQXAoZjEsIGYyKSkgPT4gbWF0Y2hlc19wYXQoZDEsIGYxKSAmJiBtYXRjaGVzX3BhdChkMiwgZjIpXG4gIHwgKEFwKF8pLCBfKSA9PiBmYWxzZVxuICB8IChDb25zKGQxLCBkMiksIENvbnMoZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX3BhdChkMSwgZjEpICYmIG1hdGNoZXNfcGF0KGQyLCBmMilcbiAgfCAoQ29ucyhfKSwgXykgPT4gZmFsc2VcbiAgfCAoRW1wdHlIb2xlLCBfKSA9PiBmYWxzZVxuICB8IChJbnZhbGlkKF8pLCBfKSA9PiBmYWxzZVxuICB9O1xufVxuYW5kIG1hdGNoZXNfdHlwID0gKGQ6IFR5cC50LCBmOiBUeXAudCkgPT4ge1xuICBUeXAuZXEoZCwgZik7XG59XG5hbmQgbWF0Y2hlc19ydWwgPSAoZW52LCAoZHAsIGQpLCAoZnAsIGYpKSA9PiB7XG4gIG1hdGNoZXNfcGF0KGRwLCBmcCkgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKTtcbn1cbmFuZCBtYXRjaGVzX3V0cGF0ID0gKGQ6IFRQYXQudCwgZjogVFBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAoZC50ZXJtLCBmLnRlcm0pIHtcbiAgfCAoSW52YWxpZChfKSwgXykgPT4gZmFsc2VcbiAgfCAoXywgSW52YWxpZChfKSkgPT4gZmFsc2VcbiAgfCAoXywgRW1wdHlIb2xlKSA9PiB0cnVlXG4gIHwgKE11bHRpSG9sZShsMSksIE11bHRpSG9sZShsMikpID0+IExpc3QubGVuZ3RoKGwxKSA9PSBMaXN0Lmxlbmd0aChsMikgLyogVE9ETzogcHJvYmFibHkgc2hvdWxkIGRlZmluZSBhIG1hdGNoZXNfYW55IGFuZCByZWN1cnNlIGluIGhlcmUuLi4/ICovXG4gIHwgKFZhcih0MSksIFZhcih0MikpID0+IHQxID09IHQyXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xufTtcblxubGV0IG1hdGNoZXMgPVxuICAgIChcbiAgICAgIH5lbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LFxuICAgICAgfmV4cDogREhFeHAudCxcbiAgICAgIH5mbHQ6IFRlcm1CYXNlLlN0ZXBwZXJGaWx0ZXJLaW5kLmZpbHRlcixcbiAgICApXG4gICAgOiBvcHRpb24oRmlsdGVyQWN0aW9uLnQpID0+XG4gIGlmIChtYXRjaGVzX2V4cChlbnYsIGV4cCwgZmx0LnBhdCkpIHtcbiAgICBTb21lKGZsdC5hY3QpO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBtYXRjaGVzID1cbiAgICAofmVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsIH5leHA6IERIRXhwLnQsIH5hY3Q6IEZpbHRlckFjdGlvbi50LCBmbHRfZW52KVxuICAgIDogKEZpbHRlckFjdGlvbi50LCBpbnQpID0+IHtcbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoKGZsdF9lbnYpO1xuICBsZXQgcmVjIG1hdGNoZXMnID0gKH5lbnYsIH5leHAsIH5hY3QsIGZsdF9lbnYsIGlkeCkgPT4ge1xuICAgIHN3aXRjaCAoZmx0X2Vudikge1xuICAgIHwgW10gPT4gKGFjdCwgaWR4KVxuICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgIHN3aXRjaCAobWF0Y2hlcyh+ZW52LCB+ZXhwLCB+Zmx0PWhkKSkge1xuICAgICAgfCBTb21lKGFjdCkgPT4gKGFjdCwgaWR4KVxuICAgICAgfCBOb25lID0+IG1hdGNoZXMnKH5lbnYsIH5leHAsIH5hY3QsIHRsLCBpZHggKyAxKVxuICAgICAgfVxuICAgIH07XG4gIH07XG4gIGxldCAoYWN0LCBpZHgpID0gbWF0Y2hlcycofmVudiwgfmV4cCwgfmFjdCwgZmx0X2VudiwgMCk7XG4gIChhY3QsIGxlbiAtIGlkeCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gRXZhbHVhdG9yU3RlcDtcbm9wZW4gVHJhbnNpdGlvbjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmV4Y2VwdGlvbiBFeGNlcHRpb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcHBlcl9zdGF0ZSA9XG4gIHwgU3RlcFBlbmRpbmcoaW50KVxuICB8IFN0ZXBwZXJSZWFkeVxuICB8IFN0ZXBwZXJEb25lXG4gIHwgU3RlcFRpbWVvdXQoRXZhbE9iai50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhID0gKENhY2hlZFN0YXRpY3Muc3RhdGljcywgRWRpdG9yLnQsIEV2YWx1YXRvclN0YXRlLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGhpc3RvcnkgPSBBYmEudChhLCBzdGVwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBoaXN0b3J5LFxuICBuZXh0X29wdGlvbnM6IGxpc3QoRXZhbE9iai50KSxcbiAgc3RlcHBlcl9zdGF0ZSxcbn07XG5cbmxldCByZWMgbWF0Y2hlcyA9XG4gICAgICAgIChcbiAgICAgICAgICBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LFxuICAgICAgICAgIGZsdDogRmlsdGVyRW52aXJvbm1lbnQudCxcbiAgICAgICAgICBjdHg6IEV2YWxDdHgudCxcbiAgICAgICAgICBleHA6IERIRXhwLnQsXG4gICAgICAgICAgYWN0OiBGaWx0ZXJBY3Rpb24udCxcbiAgICAgICAgICBpZHg6IGludCxcbiAgICAgICAgKVxuICAgICAgICA6IChGaWx0ZXJBY3Rpb24udCwgaW50LCBFdmFsQ3R4LnQpID0+IHtcbiAgbGV0IGNvbXBvc2VkID0gRXZhbEN0eC5jb21wb3NlKGN0eCwgZXhwKTtcbiAgbGV0IChwYWN0LCBwaWR4KSA9IChhY3QsIGlkeCk7XG4gIGxldCAobWFjdCwgbWlkeCkgPSBGaWx0ZXJNYXRjaGVyLm1hdGNoZXMofmVudiwgfmV4cD1jb21wb3NlZCwgfmFjdCwgZmx0KTtcbiAgbGV0IChhY3QsIGlkeCkgPVxuICAgIHN3aXRjaCAoY3R4KSB7XG4gICAgfCBUZXJtKHt0ZXJtOiBGaWx0ZXIoXywgXyksIF99KSA9PiAocGFjdCwgcGlkeClcbiAgICB8IF8gPT4gbWlkeCA+IGlkeCA/IChtYWN0LCBtaWR4KSA6IChwYWN0LCBwaWR4KVxuICAgIH07XG4gIGxldCBtYXAgPSAoKGEsIGksIGMpLCBmKSA9PiB7XG4gICAgKGEsIGksIGYoYykpO1xuICB9O1xuICBsZXQgKGxldCspID0gbWFwO1xuICBsZXQgKHJhY3QsIHJpZHgsIHJjdHgpID1cbiAgICBzd2l0Y2ggKGN0eCkge1xuICAgIHwgTWFyayA9PiAoYWN0LCBpZHgsIEV2YWxDdHguTWFyaylcbiAgICB8IFRlcm0oe3Rlcm0sIGlkc30pID0+XG4gICAgICBsZXQgcmV3cmFwID0gdGVybSA9PiBFdmFsQ3R4LlRlcm0oe3Rlcm0sIGlkc30pO1xuICAgICAgc3dpdGNoICgodGVybTogRXZhbEN0eC50ZXJtKSkge1xuICAgICAgfCBDbG9zdXJlKGVudiwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIENsb3N1cmUoZW52LCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgRmlsdGVyKEZpbHRlcihmbHQnKSwgY3R4KSA9PlxuICAgICAgICBsZXQgZmx0ID0gZmx0IHw+IEZpbHRlckVudmlyb25tZW50LmV4dGVuZHMoZmx0Jyk7XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRmlsdGVyKEZpbHRlcihmbHQnKSwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IEZpbHRlcihSZXNpZHVlKGlkeCwgYWN0KSwgY3R4KSA9PlxuICAgICAgICBsZXQgKHJhY3QsIHJpZHgsIHJjdHgpID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgaWYgKHJpZHggPT0gaWR4ICYmIHJhY3QgfD4gc25kID09IEFsbCkge1xuICAgICAgICAgIChyYWN0LCByaWR4LCBGaWx0ZXIoUmVzaWR1ZShpZHgsIGFjdCksIHJjdHgpIHw+IHJld3JhcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgKHJhY3QsIHJpZHgsIHJjdHgpO1xuICAgICAgICB9O1xuICAgICAgfCBTZXExKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgU2VxMShjdHgsIGQyKSB8PiByZXdyYXA7XG4gICAgICB8IFNlcTIoZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBTZXEyKGQxLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgTGV0MShkMSwgY3R4LCBkMykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBMZXQxKGQxLCBjdHgsIGQzKSB8PiByZXdyYXA7XG4gICAgICB8IExldDIoZDEsIGQyLCBjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTGV0MihkMSwgZDIsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBGdW4oZHAsIGN0eCwgZW52JywgbmFtZSkgPT5cbiAgICAgICAgbGV0KyBjdHggPVxuICAgICAgICAgIG1hdGNoZXMoT3B0aW9uLnZhbHVlKH5kZWZhdWx0PWVudiwgZW52JyksIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRnVuKGRwLCBjdHgsIGVudicsIG5hbWUpIHw+IHJld3JhcDtcbiAgICAgIHwgRml4RihuYW1lLCBjdHgsIGVudicpID0+XG4gICAgICAgIGxldCsgY3R4ID1cbiAgICAgICAgICBtYXRjaGVzKE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1lbnYsIGVudicpLCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEZpeEYobmFtZSwgY3R4LCBlbnYnKSB8PiByZXdyYXA7XG4gICAgICB8IEFwMShkaXIsIGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgQXAxKGRpciwgY3R4LCBkMikgfD4gcmV3cmFwO1xuICAgICAgfCBBcDIoZGlyLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEFwMihkaXIsIGQxLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgVHlwQXAoY3R4LCB0eSkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBUeXBBcChjdHgsIHR5KSB8PiByZXdyYXA7XG4gICAgICB8IERlZmVycmVkQXAxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRGVmZXJyZWRBcDEoY3R4LCBkMikgfD4gcmV3cmFwO1xuICAgICAgfCBEZWZlcnJlZEFwMihkMSwgY3R4LCBkcykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBEZWZlcnJlZEFwMihkMSwgY3R4LCBkcykgfD4gcmV3cmFwO1xuICAgICAgfCBJZjEoY3R4LCBkMiwgZDMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgSWYxKGN0eCwgZDIsIGQzKSB8PiByZXdyYXA7XG4gICAgICB8IElmMihkMSwgY3R4LCBkMykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBJZjIoZDEsIGN0eCwgZDMpIHw+IHJld3JhcDtcbiAgICAgIHwgSWYzKGQxLCBkMiwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIElmMyhkMSwgZDIsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBVbk9wKG9wLCBjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgVW5PcChvcCwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IEJpbk9wMShvcCwgY3R4LCBkMSkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBCaW5PcDEob3AsIGN0eCwgZDEpIHw+IHJld3JhcDtcbiAgICAgIHwgQmluT3AyKG9wLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEJpbk9wMihvcCwgZDEsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBUdXBsZShjdHgsIGRzKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIFR1cGxlKGN0eCwgZHMpIHw+IHJld3JhcDtcbiAgICAgIHwgVGVzdChjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgVGVzdChjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgTGlzdExpdChjdHgsIGRzKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIExpc3RMaXQoY3R4LCBkcykgfD4gcmV3cmFwO1xuICAgICAgfCBDb25zMShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIENvbnMxKGN0eCwgZDIpIHw+IHJld3JhcDtcbiAgICAgIHwgQ29uczIoZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBDb25zMihkMSwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IExpc3RDb25jYXQxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTGlzdENvbmNhdDEoY3R4LCBkMikgfD4gcmV3cmFwO1xuICAgICAgfCBMaXN0Q29uY2F0MihkMSwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIExpc3RDb25jYXQyKGQxLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgTXVsdGlIb2xlKGN0eCwgKGRsLCBkcikpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTXVsdGlIb2xlKGN0eCwgKGRsLCBkcikpIHw+IHJld3JhcDtcbiAgICAgIHwgQ2FzdChjdHgsIHR5LCB0eScpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgQ2FzdChjdHgsIHR5LCB0eScpIHw+IHJld3JhcDtcbiAgICAgIHwgRmFpbGVkQ2FzdChjdHgsIHR5LCB0eScpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRmFpbGVkQ2FzdChjdHgsIHR5LCB0eScpIHw+IHJld3JhcDtcbiAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShjdHgsIGVycm9yKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIER5bmFtaWNFcnJvckhvbGUoY3R4LCBlcnJvcikgfD4gcmV3cmFwO1xuICAgICAgfCBNYXRjaFNjcnV0KGN0eCwgcnMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTWF0Y2hTY3J1dChjdHgsIHJzKSB8PiByZXdyYXA7XG4gICAgICB8IE1hdGNoUnVsZShzY3IsIHAsIGN0eCwgcnMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTWF0Y2hSdWxlKHNjciwgcCwgY3R4LCBycykgfD4gcmV3cmFwO1xuICAgICAgfTtcbiAgICB9O1xuICBzd2l0Y2ggKGN0eCkge1xuICB8IFRlcm0oe3Rlcm06IEZpbHRlcihfKSwgX30pID0+IChyYWN0LCByaWR4LCByY3R4KVxuICB8IF8gd2hlbiBtaWR4ID09IHJpZHggJiYgbWlkeCA+IHBpZHggJiYgbWFjdCB8PiBzbmQgPT0gQWxsID0+IChcbiAgICAgIHJhY3QsXG4gICAgICByaWR4LFxuICAgICAgVGVybSh7dGVybTogRmlsdGVyKFJlc2lkdWUobWlkeCwgbWFjdCksIHJjdHgpLCBpZHM6IFtJZC5taygpXX0pLFxuICAgIClcbiAgfCBfID0+IChyYWN0LCByaWR4LCByY3R4KVxuICB9O1xufTtcblxubGV0IHNob3VsZF9oaWRlX2V2YWxfb2JqID1cbiAgICAofnNldHRpbmdzLCB4OiBFdmFsT2JqLnQpOiAoRmlsdGVyQWN0aW9uLmFjdGlvbiwgRXZhbE9iai50KSA9PlxuICBpZiAoc2hvdWxkX2hpZGVfc3RlcCh+c2V0dGluZ3MsIHgua25kKSkge1xuICAgIChFdmFsLCB4KTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgKGFjdCwgXywgY3R4KSA9XG4gICAgICBtYXRjaGVzKENsb3N1cmVFbnZpcm9ubWVudC5lbXB0eSwgW10sIHguY3R4LCB4LmRfbG9jLCAoU3RlcCwgT25lKSwgMCk7XG4gICAgc3dpdGNoIChhY3QpIHtcbiAgICB8IChFdmFsLCBfKSA9PiAoRXZhbCwgey4uLngsIGN0eH0pXG4gICAgfCAoU3RlcCwgXykgPT4gKFN0ZXAsIHsuLi54LCBjdHh9KVxuICAgIH07XG4gIH07XG5cbmxldCBzaG91bGRfaGlkZV9zdGVwID0gKH5zZXR0aW5ncywgeDogc3RlcCk6IChGaWx0ZXJBY3Rpb24uYWN0aW9uLCBzdGVwKSA9PlxuICBpZiAoc2hvdWxkX2hpZGVfc3RlcCh+c2V0dGluZ3MsIHgua25kKSkge1xuICAgIChFdmFsLCB4KTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgKGFjdCwgXywgY3R4KSA9XG4gICAgICBtYXRjaGVzKENsb3N1cmVFbnZpcm9ubWVudC5lbXB0eSwgW10sIHguY3R4LCB4LmRfbG9jLCAoU3RlcCwgT25lKSwgMCk7XG4gICAgc3dpdGNoIChhY3QpIHtcbiAgICB8IChFdmFsLCBfKSA9PiAoRXZhbCwgey4uLngsIGN0eH0pXG4gICAgfCAoU3RlcCwgXykgPT4gKFN0ZXAsIHsuLi54LCBjdHh9KVxuICAgIH07XG4gIH07XG5cbmxldCBnZXRfZWxhYiA9ICh7aGlzdG9yeSwgX306IHQpOiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQgPT4ge1xuICBsZXQgKGNzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MsIF8sIF8pID0gQWJhLmxhc3RfYShoaXN0b3J5KTtcbiAge2Q6IGNzLnRlcm19O1xufTtcblxubGV0IGdldF9uZXh0X3N0ZXBzID0gcyA9PiBzLm5leHRfb3B0aW9ucztcblxubGV0IGN1cnJlbnRfZXhwciA9ICh7aGlzdG9yeSwgX306IHQpID0+XG4gIEFiYS5oZChoaXN0b3J5KSB8PiAoKCh4LCBfLCBfKSkgPT4geCk7XG5cbmxldCBjdXJyZW50X3N0YXRlID0gKHtoaXN0b3J5LCBffTogdCkgPT5cbiAgQWJhLmhkKGhpc3RvcnkpIHw+ICgoKF8sIF8sIHgpKSA9PiB4KTtcblxubGV0IHN0ZXBfcGVuZGluZyA9IChpZHg6IGludCwgc3RlcHBlcjogdCkgPT4ge1xuICB7Li4uc3RlcHBlciwgc3RlcHBlcl9zdGF0ZTogU3RlcFBlbmRpbmcoaWR4KX07XG59O1xuXG5sZXQgcmVjIGV2YWx1YXRlX3BlbmRpbmcgPSAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgczogdCkgPT4ge1xuICBzd2l0Y2ggKHMuc3RlcHBlcl9zdGF0ZSkge1xuICB8IFN0ZXBwZXJEb25lXG4gIHwgU3RlcFRpbWVvdXQoXykgPT4gc1xuICB8IFN0ZXBwZXJSZWFkeSA9PlxuICAgIGxldCBuZXh0JyA9XG4gICAgICBzLm5leHRfb3B0aW9uc1xuICAgICAgfD4gTGlzdC5tYXAoc2hvdWxkX2hpZGVfZXZhbF9vYmoofnNldHRpbmdzPXNldHRpbmdzLmV2YWx1YXRpb24pKTtcbiAgICBsZXQgbmV4dCcnID0gTGlzdC5tYXBpKChpLCB4KSA9PiAoaSwgeCksIG5leHQnKTtcbiAgICBzd2l0Y2ggKFxuICAgICAgTGlzdC5maW5kX29wdCgoKF8sIChhY3QsIF8pKSkgPT4gYWN0ID09IEZpbHRlckFjdGlvbi5FdmFsLCBuZXh0JycpXG4gICAgKSB7XG4gICAgfCBTb21lKChpLCAoXywgXykpKSA9PlxuICAgICAgey4uLnMsIHN0ZXBwZXJfc3RhdGU6IFN0ZXBQZW5kaW5nKGkpfSB8PiBldmFsdWF0ZV9wZW5kaW5nKH5zZXR0aW5ncylcbiAgICB8IE5vbmUgPT4gey4uLnMsIHN0ZXBwZXJfc3RhdGU6IFN0ZXBwZXJEb25lfVxuICAgIH07XG4gIHwgU3RlcFBlbmRpbmcoaSkgPT5cbiAgICBsZXQgZW8gPSBMaXN0Lm50aChzLm5leHRfb3B0aW9ucywgaSk7XG4gICAgbGV0ICh7dGVybTogZCwgX306IENhY2hlZFN0YXRpY3Muc3RhdGljcywgXywgc3RhdGUpID0gQWJhLmhkKHMuaGlzdG9yeSk7XG4gICAgbGV0IHN0YXRlX3JlZiA9IHJlZihzdGF0ZSk7XG4gICAgbGV0IGRfbG9jJyA9XG4gICAgICAoXG4gICAgICAgIHN3aXRjaCAodGFrZV9zdGVwKHN0YXRlX3JlZiwgZW8uZW52LCBlby5kX2xvYykpIHtcbiAgICAgICAgfCBTb21lKGQpID0+IGQgfD4gREhFeHAucmVwYWlyX2lkc1xuICAgICAgICB8IE5vbmUgPT4gcmFpc2UoRXhjZXB0aW9uKVxuICAgICAgICB9XG4gICAgICApXG4gICAgICB8PiBESEV4cC5yZXBhaXJfaWRzO1xuICAgIGxldCBfID0gcHJpbnRfZW5kbGluZShkX2xvYycgfD4gREhFeHAuc2hvdyk7XG4gICAgbGV0IGQnID0gRXZhbEN0eC5jb21wb3NlKGVvLmN0eCwgZF9sb2MnKTtcbiAgICBsZXQgbmV3X3N0ZXAgPSB7XG4gICAgICBkLFxuICAgICAgZF9sb2M6IGVvLmRfbG9jLFxuICAgICAgZF9sb2MnLFxuICAgICAgY3R4OiBlby5jdHgsXG4gICAgICBrbmQ6IGVvLmtuZCxcbiAgICAgIHN0YXRlLFxuICAgIH07XG4gICAgbGV0IG5ld19zdGF0ZSA9IHN0YXRlX3JlZl47XG4gICAgbGV0IGVkaXRvciA9IEV4cFRvU2VnbWVudC5leHBfdG9fZWRpdG9yKH5pbmxpbmU9ZmFsc2UsIGQnKTtcbiAgICBsZXQgc3RhdGljcyA9IENhY2hlZFN0YXRpY3Muc3RhdGljc19vZl90ZXJtKH5zZXR0aW5ncywgZCcsIGVkaXRvcik7XG4gICAge1xuICAgICAgaGlzdG9yeTogcy5oaXN0b3J5IHw+IEFiYS5jb25zKChzdGF0aWNzLCBlZGl0b3IsIG5ld19zdGF0ZSksIG5ld19zdGVwKSxcbiAgICAgIHN0ZXBwZXJfc3RhdGU6IFN0ZXBwZXJSZWFkeSxcbiAgICAgIG5leHRfb3B0aW9uczogZGVjb21wb3NlKGQnLCBuZXdfc3RhdGUpLFxuICAgIH1cbiAgICB8PiBldmFsdWF0ZV9wZW5kaW5nKH5zZXR0aW5ncyk7XG4gIH07XG59O1xuXG5sZXQgcmVjIGV2YWx1YXRlX2Z1bGwgPSAofnNldHRpbmdzLCBzOiB0KSA9PiB7XG4gIHN3aXRjaCAocy5zdGVwcGVyX3N0YXRlKSB7XG4gIHwgU3RlcFRpbWVvdXQoXykgPT4gc1xuICB8IFN0ZXBwZXJEb25lIHdoZW4gcy5uZXh0X29wdGlvbnMgPT0gW10gPT4gc1xuICB8IFN0ZXBwZXJEb25lID0+IHMgfD4gc3RlcF9wZW5kaW5nKDApIHw+IGV2YWx1YXRlX2Z1bGwofnNldHRpbmdzKVxuICB8IFN0ZXBwZXJSZWFkeVxuICB8IFN0ZXBQZW5kaW5nKF8pID0+XG4gICAgZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3MsIHMpIHw+IGV2YWx1YXRlX2Z1bGwofnNldHRpbmdzKVxuICB9O1xufTtcblxubGV0IGluaXQgPSAoe2R9OiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQsIH5zZXR0aW5ncykgPT4ge1xuICBsZXQgc3RhdGUgPSBFdmFsdWF0b3JTdGF0ZS5pbml0O1xuICBsZXQgZWRpdG9yID0gRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IofmlubGluZT1mYWxzZSwgZCk7XG4gIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5zdGF0aWNzX29mX3Rlcm0ofnNldHRpbmdzLCBkLCBlZGl0b3IpO1xuICB7XG4gICAgaGlzdG9yeTogQWJhLnNpbmdsZXRvbigoc3RhdGljcywgZWRpdG9yLCBzdGF0ZSkpLFxuICAgIG5leHRfb3B0aW9uczogZGVjb21wb3NlKGQsIHN0YXRlKSxcbiAgICBzdGVwcGVyX3N0YXRlOiBTdGVwcGVyUmVhZHksXG4gIH1cbiAgfD4gZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3MpO1xufTtcblxubGV0IHRpbWVvdXQgPVxuICBmdW5cbiAgfCB7c3RlcHBlcl9zdGF0ZTogU3RlcFBlbmRpbmcoaWR4KSwgX30gYXMgcyA9PiB7XG4gICAgICAuLi5zLFxuICAgICAgc3RlcHBlcl9zdGF0ZTogU3RlcFRpbWVvdXQoTGlzdC5udGgocy5uZXh0X29wdGlvbnMsIGlkeCkpLFxuICAgIH1cbiAgfCB7c3RlcHBlcl9zdGF0ZTogU3RlcFRpbWVvdXQoXykgfCBTdGVwcGVyUmVhZHkgfCBTdGVwcGVyRG9uZSwgX30gYXMgcyA9PiBzO1xuXG5sZXQgcmVjIHRydW5jYXRlX2hpc3RvcnkgPSAofnNldHRpbmdzKSA9PlxuICBmdW5cbiAgfCAoW18sIC4uLmFzX10sIFtiLCAuLi5ic10pXG4gICAgICB3aGVuIHNob3VsZF9oaWRlX3N0ZXAofnNldHRpbmdzLCBiKSB8PiBmc3QgPT0gRXZhbCA9PlxuICAgIHRydW5jYXRlX2hpc3RvcnkofnNldHRpbmdzLCAoYXNfLCBicykpXG4gIHwgKFtfLCAuLi5hc19dLCBbXywgLi4uYnNdKSA9PiBTb21lKChhc18sIGJzKSlcbiAgfCBfID0+IE5vbmU7XG5cbmxldCBzdGVwX2JhY2t3YXJkID0gKH5zZXR0aW5ncywgczogdCkgPT4ge1xuICBsZXQgaCcgPVxuICAgIHRydW5jYXRlX2hpc3RvcnkofnNldHRpbmdzLCBzLmhpc3RvcnkpXG4gICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PXMuaGlzdG9yeSk7XG4gIHtcbiAgICBoaXN0b3J5OiBoJyxcbiAgICBuZXh0X29wdGlvbnM6IHtcbiAgICAgIGxldCAoY3MsIF8sIHN0KSA9IEFiYS5oZChoJyk7XG4gICAgICBkZWNvbXBvc2UoY3MudGVybSwgc3QpO1xuICAgIH0sXG4gICAgc3RlcHBlcl9zdGF0ZTogU3RlcHBlckRvbmUsXG4gIH07XG59O1xuXG5sZXQgY2FuX3VuZG8gPSAofnNldHRpbmdzLCBzOiB0KSA9PiB7XG4gIHRydW5jYXRlX2hpc3RvcnkofnNldHRpbmdzLCBzLmhpc3RvcnkpIHw+IE9wdGlvbi5pc19zb21lO1xufTtcblxubGV0IGdldF9qdXN0aWZpY2F0aW9uOiBzdGVwX2tpbmQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTGV0QmluZCA9PiBcInN1YnN0aXR1dGlvblwiXG4gIHwgU2VxID0+IFwic2VxdWVuY2VcIlxuICB8IEZpeFVud3JhcCA9PiBcInVucm9sbCBmaXhwb2ludFwiXG4gIHwgVXBkYXRlVGVzdCA9PiBcInVwZGF0ZSB0ZXN0XCJcbiAgfCBUeXBGdW5BcCA9PiBcImFwcGx5IHR5cGUgZnVuY3Rpb25cIlxuICB8IEZ1bkFwID0+IFwiYXBwbHkgZnVuY3Rpb25cIlxuICB8IERlZmVycmVkQXAgPT4gXCJkZWZlcnJlZCBhcHBsaWNhdGlvblwiXG4gIHwgQnVpbHRpbldyYXAgPT4gXCJ3cmFwIGJ1aWx0aW5cIlxuICB8IEJ1aWx0aW5BcChzKSA9PiBcImV2YWx1YXRlIFwiICsrIHNcbiAgfCBVbk9wKEludChNaW51cykpXG4gIHwgQmluSW50T3AoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBQb3dlciB8IERpdmlkZSlcbiAgfCBCaW5GbG9hdE9wKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpID0+IFwiYXJpdGhtZXRpY1wiXG4gIHwgQmluSW50T3AoTGVzc1RoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbiB8IEdyZWF0ZXJUaGFuT3JFcXVhbClcbiAgfCBCaW5GbG9hdE9wKExlc3NUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW4gfCBHcmVhdGVyVGhhbk9yRXF1YWwpID0+IFwiY29tcGFyaXNvblwiXG4gIHwgQmluSW50T3AoRXF1YWxzIHwgTm90RXF1YWxzKVxuICB8IEJpbkZsb2F0T3AoRXF1YWxzIHwgTm90RXF1YWxzKVxuICB8IEJpblN0cmluZ09wKEVxdWFscykgPT4gXCJjaGVjayBlcXVhbGl0eVwiXG4gIHwgQmluU3RyaW5nT3AoQ29uY2F0KSA9PiBcInN0cmluZyBtYW5pcHVsYXRpb25cIlxuICB8IFVuT3AoQm9vbChOb3QpKVxuICB8IEJpbkJvb2xPcChfKSA9PiBcImJvb2xlYW4gbG9naWNcIlxuICB8IENvbmRpdGlvbmFsKF8pID0+IFwiY29uZGl0aW9uYWxcIlxuICB8IExpc3RDb25zID0+IFwibGlzdCBtYW5pcHVsYXRpb25cIlxuICB8IExpc3RDb25jYXQgPT4gXCJsaXN0IG1hbmlwdWxhdGlvblwiXG4gIHwgQ2FzZUFwcGx5ID0+IFwiY2FzZSBzZWxlY3Rpb25cIlxuICB8IFByb2plY3Rpb24gPT4gXCJwcm9qZWN0aW9uXCIgLy8gVE9ETyhNYXR0KTogV2UgZG9uJ3Qgd2FudCB0byBzaG93IHByb2plY3Rpb24gdG8gdGhlIHVzZXJcbiAgfCBJbnZhbGlkU3RlcCA9PiBcImVycm9yXCJcbiAgfCBWYXJMb29rdXAgPT4gXCJ2YXJpYWJsZSBsb29rdXBcIlxuICB8IENhc3RUeXBBcFxuICB8IENhc3RBcFxuICB8IENhc3QgPT4gXCJjYXN0IGNhbGN1bHVzXCJcbiAgfCBGaXhDbG9zdXJlID0+IFwiZml4cG9pbnQgY2xvc3VyZVwiXG4gIHwgQ29tcGxldGVGaWx0ZXIgPT4gXCJjb21wbGV0ZSBmaWx0ZXJcIlxuICB8IENvbXBsZXRlQ2xvc3VyZSA9PiBcImNvbXBsZXRlIGNsb3N1cmVcIlxuICB8IEZ1bkNsb3N1cmUgPT4gXCJmdW5jdGlvbiBjbG9zdXJlXCJcbiAgfCBSZW1vdmVUeXBlQWxpYXMgPT4gXCJkZWZpbmUgdHlwZVwiXG4gIHwgUmVtb3ZlUGFyZW5zID0+IFwicmVtb3ZlIHBhcmVudGhlc2VzXCJcbiAgfCBVbk9wKE1ldGEoVW5xdW90ZSkpID0+IGZhaWx3aXRoKFwiSU5WQUxJRCBTVEVQXCIpO1xuXG50eXBlIHN0ZXBfaW5mbyA9IHtcbiAgaGlkZGVuX2hpc3Rvcnk6IEFiYS50KGEsIChzdGVwLCBJZC50KSksXG4gIGNob3Nlbl9zdGVwOiBvcHRpb24oc3RlcCksIC8vIFRoZSBzdGVwIHRoYXQgd2FzIHRha2VuIG5leHRcbiAgcHJldmlvdXNfc3RlcDogb3B0aW9uKChzdGVwLCBJZC50KSkgLy8gVGhlIHN0ZXAgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBhYm92ZSB0aGlzIG9uZSAoYW4gSWQgaW4gaW5jbHVkZWQgYmVjYXVzZSBpdCBtYXkgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBzdGVwIHdhcyB0YWtlbilcbn07XG5cbmxldCBnZXRfaGlzdG9yeSA9ICh+c2V0dGluZ3MsIHN0ZXBwZXIpID0+IHtcbiAgbGV0IHNob3VsZF9za2lwX3N0ZXAgPSBzdGVwID0+XG4gICAgc3RlcCB8PiBzaG91bGRfaGlkZV9zdGVwKH5zZXR0aW5ncykgfD4gZnN0ID09IEV2YWw7XG4gIGxldCBncm91cGVkX3N0ZXBzID1cbiAgICBBYmEuZm9sZF9yaWdodChcbiAgICAgICgoZCwgZWRpdG9yLCBzdGF0ZSksIHN0ZXAsIHJlc3VsdCkgPT5cbiAgICAgICAgaWYgKHNob3VsZF9za2lwX3N0ZXAoc3RlcCkpIHtcbiAgICAgICAgICBBYmEubWFwX2hkKEFiYS5jb25zKChkLCBlZGl0b3IsIHN0YXRlKSwgc3RlcCksIHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQWJhLmNvbnMoQWJhLnNpbmdsZXRvbigoZCwgZWRpdG9yLCBzdGF0ZSkpLCBzdGVwLCByZXN1bHQpO1xuICAgICAgICB9LFxuICAgICAgKChkLCBlZGl0b3IsIHN0YXRlKSkgPT5cbiAgICAgICAgQWJhLnNpbmdsZXRvbihBYmEuc2luZ2xldG9uKChkLCBlZGl0b3IsIHN0YXRlKSkpLFxuICAgICAgc3RlcHBlci5oaXN0b3J5LFxuICAgIClcbiAgICB8PiBBYmEubWFwX2EoQWJhLnJldih4ID0+IHgsIHggPT4geCkpO1xuICBsZXQgcmVwbGFjZV9pZCA9ICh4LCB5LCAocywgeikpID0+IChzLCB4ID09IHogPyB5IDogeik7XG4gIGxldCB0cmFja19pZHMgPVxuICAgICAgKFxuICAgICAgICAoXG4gICAgICAgICAgY2hvc2VuX3N0ZXA6IG9wdGlvbihzdGVwKSxcbiAgICAgICAgICBoaWRkZW5faGlzdG9yeTogaGlzdG9yeSxcbiAgICAgICAgICBwcmV2aW91c19zdGVwOiBvcHRpb24oc3RlcCksXG4gICAgICAgICksXG4gICAgICApID0+IHtcbiAgICBsZXQgKHByZXZpb3VzX3N0ZXAsIGhpZGRlbl9oaXN0b3J5KSA9XG4gICAgICBBYmEuZm9sZF9sZWZ0KFxuICAgICAgICB4ID0+XG4gICAgICAgICAgKFxuICAgICAgICAgICAgT3B0aW9uLm1hcCh4ID0+ICh4LCB4LmRfbG9jJyB8PiBESEV4cC5yZXBfaWQpLCBwcmV2aW91c19zdGVwKSxcbiAgICAgICAgICAgIEFiYS5zaW5nbGV0b24oeCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKChwcywgaGgpLCBoOiBzdGVwLCBocykgPT4ge1xuICAgICAgICAgIGxldCByZXBsYWNlbWVudCA9XG4gICAgICAgICAgICByZXBsYWNlX2lkKGguZF9sb2MgfD4gREhFeHAucmVwX2lkLCBoLmRfbG9jJyB8PiBESEV4cC5yZXBfaWQpO1xuICAgICAgICAgIChcbiAgICAgICAgICAgIE9wdGlvbi5tYXAocmVwbGFjZW1lbnQsIHBzKSxcbiAgICAgICAgICAgIEFiYS5jb25zKFxuICAgICAgICAgICAgICBocyxcbiAgICAgICAgICAgICAgKGgsIGguZF9sb2MnIHw+IERIRXhwLnJlcF9pZCksXG4gICAgICAgICAgICAgIEFiYS5tYXBfYihyZXBsYWNlbWVudCwgaGgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBoaWRkZW5faGlzdG9yeSxcbiAgICAgICk7XG4gICAge2hpZGRlbl9oaXN0b3J5LCBwcmV2aW91c19zdGVwLCBjaG9zZW5fc3RlcH07XG4gIH07XG4gIGxldCBwYWRkZWQgPSBncm91cGVkX3N0ZXBzIHw+IEFiYS5iYWJfdHJpcGxlcztcbiAgbGV0IHJlc3VsdCA9IHBhZGRlZCB8PiBMaXN0Lm1hcCh0cmFja19pZHMpO1xuICByZXN1bHQ7XG4gIC8vZ3JvdXBlZF9zdGVwcyB8PiBBYmEuYmFiX3RyaXBsZXMgfD4gTGlzdC5tYXAodHJhY2tfaWRzKTtcbn07XG5cbmxldCBoaWRkZW5fc3RlcHNfb2ZfaW5mbyA9IChpbmZvOiBzdGVwX2luZm8pOiBsaXN0KHN0ZXBfaW5mbykgPT4ge1xuICAvLyBub3RlIHRoZSBwcmV2aW91c19zdGVwIGZpZWxkIGlzIGZ1ZGdlZCBiZWNhdXNlIGl0IGlzIGN1cnJlbnRseSB1c3VzZWQuXG4gIExpc3QubWFwKFxuICAgICgocHJlLCAoaHMsIF8pLCBfKSkgPT5cbiAgICAgIHtcbiAgICAgICAgY2hvc2VuX3N0ZXA6IFNvbWUoaHMpLFxuICAgICAgICBoaWRkZW5faGlzdG9yeTogQWJhLnNpbmdsZXRvbihwcmUpLFxuICAgICAgICBwcmV2aW91c19zdGVwOiBOb25lLFxuICAgICAgfSxcbiAgICBpbmZvLmhpZGRlbl9oaXN0b3J5IHw+IEFiYS5hYmFfdHJpcGxlcyxcbiAgKTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGVyc2lzdGVudF9oaXN0b3J5ID0gQWJhLnQoKERIRXhwLnQsIEV2YWx1YXRvclN0YXRlLnQpLCBzdGVwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwZXJzaXN0ZW50ID0ge3BlcnNpc3RlbnRfaGlzdG9yeX07XG5cbmxldCAoc2V4cF9vZl9wZXJzaXN0ZW50LCBwZXJzaXN0ZW50X29mX3NleHApID1cbiAgU3RydWN0dXJlU2hhcmVTZXhwLnN0cnVjdHVyZV9zaGFyZV9pbihcbiAgICBzZXhwX29mX3BlcnNpc3RlbnQsXG4gICAgcGVyc2lzdGVudF9vZl9zZXhwLFxuICApO1xuXG5sZXQgKHNleHBfb2ZfcGVyc2lzdGVudCwgcGVyc2lzdGVudF9vZl9zZXhwKSA9XG4gIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaW4oXG4gICAgc2V4cF9vZl9wZXJzaXN0ZW50LFxuICAgIHBlcnNpc3RlbnRfb2Zfc2V4cCxcbiAgKTtcblxubGV0IHRvX3BlcnNpc3RlbnRfaGlzdG9yeSA9IGhpc3RvcnkgPT5cbiAgQWJhLm1hcF9hKCgoe3Rlcm06IGQsIF99LCBfLCBzKTogYSkgPT4gKGQsIHMpLCBoaXN0b3J5KTtcblxuLy8gUmVtb3ZlIEV2YWxPYmoudCBvYmplY3RzIGZyb20gc3RlcHBlciB0byBwcmV2ZW50IHByb2JsZW1zIHdoZW4gbG9hZGluZ1xubGV0IHRvX3BlcnNpc3RlbnQ6IHQgPT4gcGVyc2lzdGVudCA9XG4gICh7aGlzdG9yeSwgX30pID0+IHtwZXJzaXN0ZW50X2hpc3Rvcnk6IGhpc3RvcnkgfD4gdG9fcGVyc2lzdGVudF9oaXN0b3J5fTtcblxubGV0IGZyb21fcGVyc2lzdGVudF9oaXN0b3J5ID0gKH5zZXR0aW5ncywgaGlzdG9yeSkgPT5cbiAgQWJhLm1hcF9hKFxuICAgICgoZCwgcykpID0+IHtcbiAgICAgIGxldCBlZGl0b3IgPSBFeHBUb1NlZ21lbnQuZXhwX3RvX2VkaXRvcihkLCB+aW5saW5lPWZhbHNlKTtcbiAgICAgIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5zdGF0aWNzX29mX3Rlcm0ofnNldHRpbmdzLCBkLCBlZGl0b3IpO1xuICAgICAgKHN0YXRpY3MsIGVkaXRvciwgcyk7XG4gICAgfSxcbiAgICBoaXN0b3J5LFxuICApO1xuXG5sZXQgZnJvbV9wZXJzaXN0ZW50ID0gKH5zZXR0aW5ncywge3BlcnNpc3RlbnRfaGlzdG9yeX0pID0+IHtcbiAgbGV0IGhpc3RvcnkgPSBwZXJzaXN0ZW50X2hpc3RvcnkgfD4gZnJvbV9wZXJzaXN0ZW50X2hpc3RvcnkofnNldHRpbmdzKTtcbiAge1xuICAgIGhpc3RvcnksXG4gICAgbmV4dF9vcHRpb25zOiB7XG4gICAgICBsZXQgKHt0ZXJtOiBkLCBffTogQ2FjaGVkU3RhdGljcy5zdGF0aWNzLCBfLCBzdGF0ZSkgPSBBYmEuaGQoaGlzdG9yeSk7XG4gICAgICBkZWNvbXBvc2UoZCwgc3RhdGUpO1xuICAgIH0sXG4gICAgc3RlcHBlcl9zdGF0ZTogU3RlcHBlckRvbmUsXG4gIH07XG59O1xuXG50eXBlIHNlbGVjdGlvbiA9IGludDtcblxubGV0IGdldF9zZWxlY3RlZF9lZGl0b3IgPSAofnNlbGVjdGlvbjogc2VsZWN0aW9uLCBzdGVwcGVyOiB0KSA9PiB7XG4gIGxldCsgKF8sIGVkaXRvciwgXykgPVxuICAgIExpc3QubnRoX29wdChzdGVwcGVyLmhpc3RvcnkgfD4gQWJhLmdldF9hcywgc2VsZWN0aW9uKTtcbiAgZWRpdG9yO1xufTtcblxubGV0IHB1dF9zZWxlY3RlZF9lZGl0b3IgPSAofnNlbGVjdGlvbjogc2VsZWN0aW9uLCBzdGVwcGVyOiB0LCBlZGl0b3IpID0+IHtcbiAgbGV0IGFzXyA9XG4gICAgc3RlcHBlci5oaXN0b3J5XG4gICAgfD4gQWJhLmdldF9hc1xuICAgIHw+IExpc3RVdGlsLm1hcF9udGgoc2VsZWN0aW9uLCAoKGQsIF8sIHMpKSA9PiAoZCwgZWRpdG9yLCBzKSk7XG4gIGxldCBoaXN0b3J5ID0gQWJhLm1rKGFzXywgc3RlcHBlci5oaXN0b3J5IHw+IEFiYS5nZXRfYnMpO1xuICB7Li4uc3RlcHBlciwgaGlzdG9yeX07XG59O1xuIiwib3BlbiBaaXBwZXI7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb3ZhYmlsaXR5ID1cbiAgfCBDYW5FbnRlcihpbnQsIGludClcbiAgfCBDYW5QYXNzXG4gIHwgQ2FudEV2ZW47XG5cbmxldCBtb3ZhYmlsaXR5ID0gKGNodW5raW5lc3M6IGNodW5raW5lc3MsIGxhYmVsLCBkZWxpbV9pZHgpOiBtb3ZhYmlsaXR5ID0+IHtcbiAgYXNzZXJ0KGRlbGltX2lkeCA8IExpc3QubGVuZ3RoKGxhYmVsKSk7XG4gIHN3aXRjaCAoY2h1bmtpbmVzcywgbGFiZWwsIGRlbGltX2lkeCkge1xuICB8IChCeUNoYXIsIF8sIF8pXG4gIHwgKE1vbm9CeUNoYXIsIFtfXSwgMCkgPT5cbiAgICBsZXQgY2hhcl9tYXggPSBUb2tlbi5sZW5ndGgoTGlzdC5udGgobGFiZWwsIGRlbGltX2lkeCkpIC0gMjtcbiAgICBjaGFyX21heCA8IDAgPyBDYW5QYXNzIDogQ2FuRW50ZXIoZGVsaW1faWR4LCBjaGFyX21heCk7XG4gIHwgKEJ5VG9rZW4sIF8sIF8pXG4gIHwgKE1vbm9CeUNoYXIsIF8sIF8pID0+IENhblBhc3NcbiAgfTtcbn07XG5cbmxldCBuZWlnaGJvcl9tb3ZhYmlsaXR5ID1cbiAgICAoY2h1bmtpbmVzczogY2h1bmtpbmVzcywge3JlbGF0aXZlczoge3NpYmxpbmdzLCBhbmNlc3RvcnN9LCBffTogdClcbiAgICA6IChtb3ZhYmlsaXR5LCBtb3ZhYmlsaXR5KSA9PiB7XG4gIGxldCBtb3ZhYmlsaXR5ID0gbW92YWJpbGl0eShjaHVua2luZXNzKTtcbiAgbGV0IChzdXBlcm5oYnJfbCwgc3VwZXJuaGJyX3IpID1cbiAgICBzd2l0Y2ggKGFuY2VzdG9ycykge1xuICAgIHwgW10gPT4gKENhbnRFdmVuLCBDYW50RXZlbilcbiAgICB8IFsoe2NoaWxkcmVuOiAobF9raWRzLCBfKSwgbGFiZWwsIF99LCBfKSwgLi4uX10gPT4gKFxuICAgICAgICBtb3ZhYmlsaXR5KGxhYmVsLCBMaXN0Lmxlbmd0aChsX2tpZHMpKSxcbiAgICAgICAgbW92YWJpbGl0eShsYWJlbCwgTGlzdC5sZW5ndGgobF9raWRzKSArIDEpLFxuICAgICAgKVxuICAgIH07XG4gIGxldCAobF9uaGJyLCByX25oYnIpID0gU2libGluZ3MubmVpZ2hib3JzKHNpYmxpbmdzKTtcbiAgbGV0IGwgPVxuICAgIHN3aXRjaCAobF9uaGJyKSB7XG4gICAgfCBTb21lKFRpbGUoe2xhYmVsLCBffSkpID0+IG1vdmFiaWxpdHkobGFiZWwsIExpc3QubGVuZ3RoKGxhYmVsKSAtIDEpXG4gICAgfCBTb21lKFNlY29uZGFyeSh3KSkgd2hlbiBTZWNvbmRhcnkuaXNfY29tbWVudCh3KSA9PlxuICAgICAgLy8gQ29tbWVudHMgYXJlIGFsd2F5cyBsZW5ndGggPj0gMlxuICAgICAgbGV0IGNvbnRlbnRfc3RyaW5nID0gU2Vjb25kYXJ5LmdldF9zdHJpbmcody5jb250ZW50KTtcbiAgICAgIENhbkVudGVyKFxuICAgICAgICBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAxLFxuICAgICAgICBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAyLFxuICAgICAgKTtcbiAgICB8IFNvbWUoXykgPT4gQ2FuUGFzc1xuICAgIHwgXyA9PiBzdXBlcm5oYnJfbFxuICAgIH07XG4gIGxldCByID1cbiAgICBzd2l0Y2ggKHJfbmhicikge1xuICAgIHwgU29tZShUaWxlKHtsYWJlbCwgX30pKSA9PiBtb3ZhYmlsaXR5KGxhYmVsLCAwKVxuICAgIHwgU29tZShTZWNvbmRhcnkodykpIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQodykgPT5cbiAgICAgIC8vIENvbW1lbnRzIGFyZSBhbHdheXMgbGVuZ3RoID49IDJcbiAgICAgIGxldCBjb250ZW50X3N0cmluZyA9IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudCk7XG4gICAgICBDYW5FbnRlcigwLCBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAyKTtcbiAgICB8IFNvbWUoXykgPT4gQ2FuUGFzc1xuICAgIHwgXyA9PiBzdXBlcm5oYnJfclxuICAgIH07XG4gIChsLCByKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE06IEVkaXRvci5NZXRhLlMpID0+IHtcbiAgbGV0IGNhcmV0X3BvaW50ID0gWmlwcGVyLmNhcmV0X3BvaW50KE0ubWVhc3VyZWQpO1xuXG4gIGxldCBwb3Bfb3V0ID0geiA9PiBTb21lKHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikpO1xuICBsZXQgcG9wX21vdmUgPSAoZCwgeikgPT4geiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIubW92ZShkKTtcbiAgbGV0IGlubmVyX2luY3IgPSAoZGVsaW0sIGMsIHopID0+XG4gICAgU29tZShaaXBwZXIuc2V0X2NhcmV0KElubmVyKGRlbGltLCBjICsgMSksIHopKTtcbiAgbGV0IGlubmVyX2RlY3IgPSB6ID0+IFNvbWUoWmlwcGVyLnVwZGF0ZV9jYXJldChaaXBwZXIuQ2FyZXQuZGVjcmVtZW50LCB6KSk7XG4gIGxldCBpbm5lcl9zdGFydCA9IChkX2luaXQsIHopID0+XG4gICAgU29tZShaaXBwZXIuc2V0X2NhcmV0KElubmVyKGRfaW5pdCwgMCksIHopKTtcbiAgbGV0IGlubmVyX2VuZCA9IChkLCBkX2luaXQsIGNfbWF4LCB6KSA9PlxuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcihkX2luaXQsIGNfbWF4KSkgfD4gWmlwcGVyLm1vdmUoZCk7XG5cbiAgbGV0IHByaW1hcnkgPSAoY2h1bmtpbmVzczogY2h1bmtpbmVzcywgZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIHN3aXRjaCAoZCwgei5jYXJldCwgbmVpZ2hib3JfbW92YWJpbGl0eShjaHVua2luZXNzLCB6KSkge1xuICAgIC8qIHRoaXMgY2FzZSBtYXliZSBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJ1dCBjdXJyZW50bHkgY292ZXJzIGFuIGVkZ2VcbiAgICAgICAoc2VsZWN0IGFuIG9wZW4gcGFyZW5zIHRvIGxlZnQgb2YgYSBtdWx0aWNoYXIgdG9rZW4gYW5kIHByZXNzIGxlZnQpICovXG4gICAgfCBfIHdoZW4gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA9PiBwb3BfbW92ZShkLCB6KVxuICAgIHwgKExlZnQsIE91dGVyLCAoQ2FuRW50ZXIoZGxtLCBjX21heCksIF8pKSA9PlxuICAgICAgaW5uZXJfZW5kKGQsIGRsbSwgY19tYXgsIHopXG4gICAgfCAoTGVmdCwgT3V0ZXIsIF8pID0+IFppcHBlci5tb3ZlKGQsIHopXG4gICAgfCAoTGVmdCwgSW5uZXIoXyksIF8pIHdoZW4gY2h1bmtpbmVzcyA9PSBCeVRva2VuID0+IHBvcF9vdXQoeilcbiAgICB8IChMZWZ0LCBJbm5lcihfKSwgXykgPT5cbiAgICAgIFNvbWUoWmlwcGVyLnVwZGF0ZV9jYXJldChaaXBwZXIuQ2FyZXQuZGVjcmVtZW50LCB6KSlcbiAgICB8IChSaWdodCwgT3V0ZXIsIChfLCBDYW5FbnRlcihkX2luaXQsIF8pKSkgPT4gaW5uZXJfc3RhcnQoZF9pbml0LCB6KVxuICAgIHwgKFJpZ2h0LCBPdXRlciwgXykgPT4gWmlwcGVyLm1vdmUoZCwgeilcbiAgICB8IChSaWdodCwgSW5uZXIoXywgYyksIChfLCBDYW5FbnRlcihfLCBjX21heCkpKSB3aGVuIGMgPT0gY19tYXggPT5cbiAgICAgIHBvcF9tb3ZlKGQsIHopXG4gICAgfCAoUmlnaHQsIElubmVyKF8pLCBfKSB3aGVuIGNodW5raW5lc3MgPT0gQnlUb2tlbiA9PiBwb3BfbW92ZShkLCB6KVxuICAgIHwgKFJpZ2h0LCBJbm5lcihkZWxpbSwgYyksIF8pID0+IGlubmVyX2luY3IoZGVsaW0sIGMsIHopXG4gICAgfTtcbiAgfTtcblxuICBsZXQgaXNfYXRfc2lkZV9vZl9yb3cgPSAoZDogRGlyZWN0aW9uLnQsIHo6IFppcHBlci50KSA9PiB7XG4gICAgbGV0IE1lYXN1cmVkLlBvaW50Lntyb3csIGNvbH0gPSBjYXJldF9wb2ludCh6KTtcbiAgICBzd2l0Y2ggKFppcHBlci5tb3ZlKGQsIHopKSB7XG4gICAgfCBOb25lID0+IHRydWVcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIGxldCBNZWFzdXJlZC5Qb2ludC57cm93OiByb3dwLCBjb2w6IGNvbHB9ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgICByb3cgIT0gcm93cCB8fCBjb2wgPT0gY29scDtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBkb190b3dhcmRzID1cbiAgICAgIChcbiAgICAgICAgfmFuY2hvcjogb3B0aW9uKE1lYXN1cmVkLlBvaW50LnQpPT8sXG4gICAgICAgIGY6IChEaXJlY3Rpb24udCwgdCkgPT4gb3B0aW9uKHQpLFxuICAgICAgICBnb2FsOiBNZWFzdXJlZC5Qb2ludC50LFxuICAgICAgICB6OiB0LFxuICAgICAgKVxuICAgICAgOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCBpbml0ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IGQgPVxuICAgICAgZ29hbC5yb3cgPCBpbml0LnJvdyB8fCBnb2FsLnJvdyA9PSBpbml0LnJvdyAmJiBnb2FsLmNvbCA8IGluaXQuY29sXG4gICAgICAgID8gRGlyZWN0aW9uLkxlZnQgOiBSaWdodDtcbiAgICBsZXQgcmVjIGdvID0gKHByZXY6IHQsIGN1cnI6IHQpID0+IHtcbiAgICAgIGxldCBjdXJyX3AgPSBjYXJldF9wb2ludChjdXJyKTtcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIE1lYXN1cmVkLlBvaW50LmRjb21wKGQsIGN1cnJfcC5jb2wsIGdvYWwuY29sKSxcbiAgICAgICAgTWVhc3VyZWQuUG9pbnQuZGNvbXAoZCwgY3Vycl9wLnJvdywgZ29hbC5yb3cpLFxuICAgICAgKSB7XG4gICAgICB8IChFeGFjdCwgRXhhY3QpID0+IGN1cnJcbiAgICAgIHwgKF8sIE92ZXIpID0+IHByZXZcbiAgICAgIHwgKF8sIFVuZGVyKVxuICAgICAgfCAoVW5kZXIsIEV4YWN0KSA9PlxuICAgICAgICBzd2l0Y2ggKGYoZCwgY3VycikpIHtcbiAgICAgICAgfCBOb25lID0+IGN1cnJcbiAgICAgICAgfCBTb21lKG5leHQpID0+IGdvKGN1cnIsIG5leHQpXG4gICAgICAgIH1cbiAgICAgIHwgKE92ZXIsIEV4YWN0KSA9PlxuICAgICAgICBzd2l0Y2ggKGFuY2hvcikge1xuICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIHdoZW4geW91J3JlIChlZykgeW91J3JlIHRyeWluZ1xuICAgICAgICAgICAgIHRvIG1vdmUgZG93biwgYnV0IHlvdSdyZSBhdCB0aGUgcmlnaHQgZW5kIG9mIGEgcm93XG4gICAgICAgICAgICAgYW5kIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgbmV4dCByb3cgaXMgZnVydGhlclxuICAgICAgICAgICAgIHJpZ2h0IHRoYW4gdGhlIGN1cnJlbnQgcm93J3MgZW5kLiBJbiB0aGlzIGNhc2Ugd2VcbiAgICAgICAgICAgICB3YW50IHRvIHByb2dyZXNzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbmV3XG4gICAgICAgICAgICAgcG9zaXRpb24gd291bGQgYmUgY2xvc2VyIG9yIGZ1dGhlciBmcm9tIHRoZVxuICAgICAgICAgICAgIGdvYWwgY29sICovXG4gICAgICAgICAgaXNfYXRfc2lkZV9vZl9yb3coRGlyZWN0aW9uLnRvZ2dsZShkKSwgY3VycilcbiAgICAgICAgICAgID8gY3VyclxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGxldCBkX2N1cnIgPSBhYnMoY3Vycl9wLmNvbCAtIGdvYWwuY29sKTtcbiAgICAgICAgICAgICAgbGV0IGRfcHJldiA9IGFicyhjYXJldF9wb2ludChwcmV2KS5jb2wgLSBnb2FsLmNvbCk7XG4gICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gZ29pbmcgb3ZlciB3aGVuIGVxdWFsXG4gICAgICAgICAgICAgIGRfcHJldiA8IGRfY3VyciA/IHByZXYgOiBjdXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB8IFNvbWUoYW5jaG9yKSA9PlxuICAgICAgICAgIGxldCBhbmNob3JfZCA9XG4gICAgICAgICAgICBnb2FsLnJvdyA8IGFuY2hvci5yb3dcbiAgICAgICAgICAgIHx8IGdvYWwucm93ID09IGFuY2hvci5yb3dcbiAgICAgICAgICAgICYmIGdvYWwuY29sIDwgYW5jaG9yLmNvbFxuICAgICAgICAgICAgICA/IERpcmVjdGlvbi5MZWZ0IDogUmlnaHQ7XG4gICAgICAgICAgYW5jaG9yX2QgPT0gZCA/IGN1cnIgOiBwcmV2O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgbGV0IHJlcyA9IGdvKHosIHopO1xuICAgIE1lYXN1cmVkLlBvaW50LmVxdWFscyhjYXJldF9wb2ludChyZXMpLCBjYXJldF9wb2ludCh6KSlcbiAgICAgID8gTm9uZSA6IFNvbWUocmVzKTtcbiAgfTtcbiAgbGV0IGRvX3ZlcnRpY2FsID1cbiAgICAgIChmOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSwgZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIC8qIEhlcmUgZiBzaG91bGQgYmUgYSBmdW5jdGlvbiB3aGljaCByZXN1bHRzIGluIHN0cmljdCBkLXdhcmRzXG4gICAgICAgbW92ZW1lbnQgb2YgdGhlIGNhcmV0LiBJdGVyYXRlIGYgdW50aWwgd2UgZ2V0IHRvIHRoZSBjbG9zZXRcbiAgICAgICBjYXJldCBwb3NpdGlvbiB0byBhIHRhcmdldCBkZXJpdmVkIGZyb20gdGhlIGluaXRpYWwgcG9zaXRpb24gKi9cbiAgICBsZXQgY3VyX3AgPSBjYXJldF9wb2ludCh6KTtcbiAgICBsZXQgZ29hbCA9XG4gICAgICBNZWFzdXJlZC5Qb2ludC57XG4gICAgICAgIGNvbDogTS5jb2xfdGFyZ2V0LFxuICAgICAgICByb3c6IGN1cl9wLnJvdyArIChkID09IFJpZ2h0ID8gMSA6ICgtMSkpLFxuICAgICAgfTtcbiAgICBkb190b3dhcmRzKGYsIGdvYWwsIHopO1xuICB9O1xuXG4gIGxldCBkb19leHRyZW1lID1cbiAgICAgIChmOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSwgZDogcGxhbmFyLCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQgY3VyX3AgPSBjYXJldF9wb2ludCh6KTtcbiAgICBsZXQgZ29hbDogTWVhc3VyZWQuUG9pbnQudCA9XG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIHwgUmlnaHQoXykgPT4ge2NvbDogSW50Lm1heF9pbnQsIHJvdzogY3VyX3Aucm93fVxuICAgICAgfCBMZWZ0KF8pID0+IHtjb2w6IDAsIHJvdzogY3VyX3Aucm93fVxuICAgICAgfCBVcCA9PiB7Y29sOiAwLCByb3c6IDB9XG4gICAgICB8IERvd24gPT4ge2NvbDogSW50Lm1heF9pbnQsIHJvdzogSW50Lm1heF9pbnR9XG4gICAgICB9O1xuICAgIGRvX3Rvd2FyZHMoZiwgZ29hbCwgeik7XG4gIH07XG5cbiAgbGV0IHRvX3N0YXJ0ID0gZG9fZXh0cmVtZShwcmltYXJ5KEJ5VG9rZW4pLCBVcCk7XG4gIGxldCB0b19lbmQgPSBkb19leHRyZW1lKHByaW1hcnkoQnlUb2tlbiksIERvd24pO1xuXG4gIGxldCB0b19lZGdlOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSA9XG4gICAgZnVuXG4gICAgfCBMZWZ0ID0+IHRvX3N0YXJ0XG4gICAgfCBSaWdodCA9PiB0b19lbmQ7XG5cbiAgLyogRG8gbW92ZV9hY3Rpb24gdW50aWwgdGhlIGluZGljYXRlZCBwaWVjZSBpcyBzdWNoIHRoYXQgcGllY2VfcCBpcyB0cnVlLlxuICAgICBJZiBubyBzdWNoIHBpZWNlIGlzIGZvdW5kLCBkb24ndCBtb3ZlLiAqL1xuICBsZXQgcmVjIGRvX3VudGlsID1cbiAgICAgICAgICAoXG4gICAgICAgICAgICB+bW92ZV9maXJzdD10cnVlLFxuICAgICAgICAgICAgbW92ZV9hY3Rpb246IHQgPT4gb3B0aW9uKHQpLFxuICAgICAgICAgICAgcGllY2VfcDogUGllY2UudCA9PiBib29sLFxuICAgICAgICAgICAgejogdCxcbiAgICAgICAgICApXG4gICAgICAgICAgOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCogeiA9IG1vdmVfZmlyc3QgPyBtb3ZlX2FjdGlvbih6KSA6IFNvbWUoeik7XG4gICAgbGV0KiAocGllY2UsIF8sIF8pID0gSW5kaWNhdGVkLnBpZWNlJyh+bm9fd3M9ZmFsc2UsIH5pZ249XyA9PiBmYWxzZSwgeik7XG4gICAgaWYgKHBpZWNlX3AocGllY2UpKSB7XG4gICAgICBTb21lKHopO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQqIHogPSBtb3ZlX2ZpcnN0ID8gU29tZSh6KSA6IG1vdmVfYWN0aW9uKHopO1xuICAgICAgZG9fdW50aWwofm1vdmVfZmlyc3QsIG1vdmVfYWN0aW9uLCBwaWVjZV9wLCB6KTtcbiAgICB9O1xuICB9O1xuXG4gIC8qIERvIG1vdmVfYWN0aW9uIHVudGlsIHRoZSBpbmRpY2F0ZWQgcGllY2UgaXMgc3VjaCB0aGF0IHBpZWNlX3AgaXMgdHJ1ZSxcbiAgICAgcmVzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcvZW5kIGlmIG5vdCBmb3VuZCBpbiBmb3J3YXJkIGRpcmVjdGlvbi5cbiAgICAgSWYgbm8gc3VjaCBwaWVjZSBpcyBmb3VuZCwgZG9uJ3QgbW92ZS4gKi9cbiAgbGV0IGRvX3VudGlsX3dyYXAgPSAocCwgZCwgeikgPT5cbiAgICBzd2l0Y2ggKGRvX3VudGlsKHByaW1hcnkoQnlUb2tlbiwgZCksIHAsIHopKSB7XG4gICAgfCBOb25lID0+XG4gICAgICBsZXQqIHogPSB0b19lZGdlKERpcmVjdGlvbi50b2dnbGUoZCksIHopO1xuICAgICAgZG9fdW50aWwocHJpbWFyeShCeVRva2VuLCBkKSwgcCwgeik7XG4gICAgfCBTb21lKHopID0+IFNvbWUoeilcbiAgICB9O1xuXG4gIGxldCBqdW1wX3RvX2lkID0gKHo6IHQsIGlkOiBJZC50KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQqIHtvcmlnaW4sIF99ID0gTWVhc3VyZWQuZmluZF9ieV9pZChpZCwgTS5tZWFzdXJlZCk7XG4gICAgbGV0IHogPVxuICAgICAgc3dpdGNoICh0b19zdGFydCh6KSkge1xuICAgICAgfCBOb25lID0+IHpcbiAgICAgIHwgU29tZSh6KSA9PiB6XG4gICAgICB9O1xuICAgIHN3aXRjaCAoZG9fdG93YXJkcyhwcmltYXJ5KEJ5Q2hhciksIG9yaWdpbiwgeikpIHtcbiAgICB8IE5vbmUgPT4gU29tZSh6KVxuICAgIHwgU29tZSh6KSA9PiBTb21lKHopXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdmVydGljYWwgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgICB6LnNlbGVjdGlvbi5jb250ZW50ID09IFtdXG4gICAgICA/IGRvX3ZlcnRpY2FsKHByaW1hcnkoQnlDaGFyKSwgZCwgeilcbiAgICAgIDogU29tZShaaXBwZXIuZGlyZWN0aW9uYWxfdW5zZWxlY3QoZCwgeikpO1xuXG4gIGxldCB0YXJnZXRzX3dpdGhpbl9yb3cgPSAoejogdCk6IGxpc3QodCkgPT4ge1xuICAgIGxldCBpbml0ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IHJlYyBnbyA9IChkOiBEaXJlY3Rpb24udCwgejogdCkgPT4ge1xuICAgICAgc3dpdGNoIChwcmltYXJ5KEJ5Q2hhciwgZCwgeikpIHtcbiAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgfCBTb21lKHopID0+XG4gICAgICAgIGlmIChjYXJldF9wb2ludCh6KS5yb3cgIT0gaW5pdC5yb3cpIHtcbiAgICAgICAgICBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzd2l0Y2ggKHBvcF9iYWNrcGFjayh6KSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBnbyhkLCB6KVxuICAgICAgICAgIHwgU29tZShfKSA9PiBbeiwgLi4uZ28oZCwgeildXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCBjdXJyID1cbiAgICAgIHN3aXRjaCAocG9wX2JhY2twYWNrKHopKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShfKSA9PiBbel1cbiAgICAgIH07XG4gICAgTGlzdC5yZXYoZ28oTGVmdCwgeikpIEAgY3VyciBAIGdvKFJpZ2h0LCB6KTtcbiAgfTtcblxuICAvLyBUT0RPKGQpOiB1bmlmeSB0aGlzIGxvZ2ljIHdpdGggcmVzdCBvZiBtb3ZlbWVudCBsb2dpY1xuICBsZXQgcmVjIHRvX2JhY2twYWNrX3RhcmdldCA9IChkOiBwbGFuYXIsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCBkb25lX29yX3RyeV9hZ2FpbiA9IChkLCB6KSA9PlxuICAgICAgc3dpdGNoIChwb3BfYmFja3BhY2soeikpIHtcbiAgICAgIHwgTm9uZSA9PiB0b19iYWNrcGFja190YXJnZXQoZCwgeilcbiAgICAgIHwgU29tZShfKSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgTGVmdChjaHVuaykgPT5cbiAgICAgIGxldCogeiA9IHByaW1hcnkoY2h1bmssIExlZnQsIHopO1xuICAgICAgZG9uZV9vcl90cnlfYWdhaW4oZCwgeik7XG4gICAgfCBSaWdodChjaHVuaykgPT5cbiAgICAgIGxldCogeiA9IHByaW1hcnkoY2h1bmssIFJpZ2h0LCB6KTtcbiAgICAgIGRvbmVfb3JfdHJ5X2FnYWluKGQsIHopO1xuICAgIHwgVXAgPT5cbiAgICAgIGxldCogeiA9IHZlcnRpY2FsKExlZnQsIHopO1xuICAgICAgbGV0IHpzID1cbiAgICAgICAgdGFyZ2V0c193aXRoaW5fcm93KHopXG4gICAgICAgIHw+IExpc3Quc29ydCgoejEsIHoyKSA9PiB7XG4gICAgICAgICAgICAgbGV0IGRpc3QxID0gY2FyZXRfcG9pbnQoejEpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgZGlzdDIgPSBjYXJldF9wb2ludCh6MikuY29sIC0gTS5jb2xfdGFyZ2V0O1xuICAgICAgICAgICAgIGxldCBjID0gSW50LmNvbXBhcmUoYWJzKGRpc3QxKSwgYWJzKGRpc3QyKSk7XG4gICAgICAgICAgICAgLy8gZmF2b3IgbGVmdFxuICAgICAgICAgICAgIGMgIT0gMCA/IGMgOiBJbnQuY29tcGFyZShkaXN0MSwgZGlzdDIpO1xuICAgICAgICAgICB9KTtcbiAgICAgIHN3aXRjaCAoenMpIHtcbiAgICAgIHwgW10gPT4gdG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8IFt6LCAuLi5fXSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIHwgRG93biA9PlxuICAgICAgbGV0KiB6ID0gdmVydGljYWwoUmlnaHQsIHopO1xuICAgICAgbGV0IHpzID1cbiAgICAgICAgdGFyZ2V0c193aXRoaW5fcm93KHopXG4gICAgICAgIHw+IExpc3Quc29ydCgoejEsIHoyKSA9PiB7XG4gICAgICAgICAgICAgbGV0IGRpc3QxID0gY2FyZXRfcG9pbnQoejEpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgZGlzdDIgPSBjYXJldF9wb2ludCh6MikuY29sIC0gTS5jb2xfdGFyZ2V0O1xuICAgICAgICAgICAgIGxldCBjID0gSW50LmNvbXBhcmUoYWJzKGRpc3QxKSwgYWJzKGRpc3QyKSk7XG4gICAgICAgICAgICAgLy8gZmF2b3IgcmlnaHRcbiAgICAgICAgICAgICBjICE9IDAgPyBjIDogLSBJbnQuY29tcGFyZShkaXN0MSwgZGlzdDIpO1xuICAgICAgICAgICB9KTtcbiAgICAgIHN3aXRjaCAoenMpIHtcbiAgICAgIHwgW10gPT4gdG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8IFt6LCAuLi5fXSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbGV0IGdvID0gKGQ6IEFjdGlvbi5tb3ZlLCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT5cbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IEdvYWwoUGllY2UocCwgZCkpID0+IGRvX3VudGlsX3dyYXAoQWN0aW9uLm9mX3BpZWNlX2dvYWwocCksIGQsIHopXG4gICAgfCBHb2FsKFBvaW50KGdvYWwpKSA9PlxuICAgICAgbGV0IHogPSBaaXBwZXIudW5zZWxlY3Qoeik7XG4gICAgICBkb190b3dhcmRzKHByaW1hcnkoQnlDaGFyKSwgZ29hbCwgeik7XG4gICAgfCBFeHRyZW1lKGQpID0+IGRvX2V4dHJlbWUocHJpbWFyeShCeVRva2VuKSwgZCwgeilcbiAgICB8IExvY2FsKGQpID0+XG4gICAgICB6XG4gICAgICB8PiAoXG4gICAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgICB8IExlZnQoY2h1bmspID0+IHByaW1hcnkoY2h1bmssIExlZnQpXG4gICAgICAgIHwgUmlnaHQoY2h1bmspID0+IHByaW1hcnkoY2h1bmssIFJpZ2h0KVxuICAgICAgICB8IFVwID0+IHZlcnRpY2FsKExlZnQpXG4gICAgICAgIHwgRG93biA9PiB2ZXJ0aWNhbChSaWdodClcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH07XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubW9kdWxlIE1ha2UgPSAoTTogRWRpdG9yLk1ldGEuUykgPT4ge1xuICBtb2R1bGUgTW92ZSA9IE1vdmUuTWFrZShNKTtcblxuICBsZXQgcHJpbWFyeSA9IChkOiBEaXJlY3Rpb24udCwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+XG4gICAgaWYgKHouY2FyZXQgPT0gT3V0ZXIpIHtcbiAgICAgIFppcHBlci5zZWxlY3QoZCwgeik7XG4gICAgfSBlbHNlIGlmIChkID09IExlZnQpIHtcbiAgICAgIHpcbiAgICAgIHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpXG4gICAgICB8PiBaaXBwZXIubW92ZShSaWdodClcbiAgICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oWmlwcGVyLnNlbGVjdChkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLnNlbGVjdChkKTtcbiAgICB9O1xuXG4gIGxldCB2ZXJ0aWNhbCA9IChkOiBEaXJlY3Rpb24udCwgZWQ6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PlxuICAgIE1vdmUuZG9fdmVydGljYWwocHJpbWFyeSwgZCwgZWQpO1xuXG4gIGxldCByYW5nZSA9IChsOiBJZC50LCByOiBJZC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIGxldCogeiA9IE1vdmUuanVtcF90b19pZCh6LCBsKTtcbiAgICBsZXQqIE1lYXN1cmVkLntsYXN0LCBffSA9IE1lYXN1cmVkLmZpbmRfYnlfaWQociwgTS5tZWFzdXJlZCk7XG4gICAgTW92ZS5kb190b3dhcmRzKHByaW1hcnksIGxhc3QsIHopO1xuICB9O1xuXG4gIGxldCB0ZXJtID0gKGlkOiBJZC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIC8vVE9ETzogY2hlY2sgaWYgc2VsZWN0aW9uIGlzIGFscmVhZHkgYSB0ZXJtOiBuby1vcCBpbiB0aGlzIGNhc2VcbiAgICBsZXQqIChsLCByKSA9IFRlcm1SYW5nZXMuZmluZF9vcHQoaWQsIE0udGVybV9yYW5nZXMpO1xuICAgIHJhbmdlKFBpZWNlLmlkKGwpLCBQaWVjZS5pZChyKSwgeik7XG4gIH07XG5cbiAgbGV0IHRpbGUgPSAoaWQ6IElkLnQsIHo6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gICAgbGV0KiB6ID0gTW92ZS5qdW1wX3RvX2lkKHosIGlkKTtcbiAgICBsZXQqIE1lYXN1cmVkLntsYXN0LCBffSA9IE1lYXN1cmVkLmZpbmRfYnlfaWQoaWQsIE0ubWVhc3VyZWQpO1xuICAgIE1vdmUuZG9fdG93YXJkcyhwcmltYXJ5LCBsYXN0LCB6KTtcbiAgfTtcblxuICBsZXQgZ28gPSAoZDogQWN0aW9uLm1vdmUsIHo6IFppcHBlci50KSA9PlxuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgR29hbChQaWVjZShfKSkgPT4gZmFpbHdpdGgoXCJTZWxlY3QuZ28gbm90IGltcGxlbWVudGVkIGZvciBQaWVjZSBHb2FsXCIpXG4gICAgfCBHb2FsKFBvaW50KGdvYWwpKSA9PlxuICAgICAgbGV0IGFuY2hvciA9IHogfD4gWmlwcGVyLnRvZ2dsZV9mb2N1cyB8PiBaaXBwZXIuY2FyZXRfcG9pbnQoTS5tZWFzdXJlZCk7XG4gICAgICBNb3ZlLmRvX3Rvd2FyZHMofmFuY2hvciwgcHJpbWFyeSwgZ29hbCwgeik7XG4gICAgfCBFeHRyZW1lKGQpID0+IE1vdmUuZG9fZXh0cmVtZShwcmltYXJ5LCBkLCB6KVxuICAgIHwgTG9jYWwoZCkgPT5cbiAgICAgIC8qIE5vdGU6IERvbid0IHVwZGF0ZSB0YXJnZXQgb24gdmVydGljYWwgc2VsZWN0aW9uICovXG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIHwgTGVmdChfKSA9PiBwcmltYXJ5KExlZnQsIHopXG4gICAgICB8IFJpZ2h0KF8pID0+IHByaW1hcnkoUmlnaHQsIHopXG4gICAgICB8IFVwID0+IHZlcnRpY2FsKExlZnQsIHopXG4gICAgICB8IERvd24gPT4gdmVydGljYWwoUmlnaHQsIHopXG4gICAgICB9XG4gICAgfTtcbn07XG4iLCJvcGVuIFppcHBlcjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBiYXJmID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLyogUmVtb3ZlcyB0aGUgZC1uZWlnaGJvcmluZyB0aWxlIGFuZCBkcm9wcyBmcm9tIGJhY2twYWNrO1xuICAgICBwcmVjb25kaXRpb246IHRoZSBkLW5laWdoYm9yIHNob3VsZCBiZSBhIG1vbm90aWxlXG4gICAgIHN0cmluZy1tYXRjaGluZyB0aGUgZHJvcHBpbmcgc2hhcmQgKi9cbiAgbGV0KiB6ID0gZGVsZXRlKGQsIHopO1xuICBsZXQrIHogPSBwdXRfZG93bihkLCB6KTtcbiAgejtcbn07XG5cbmxldCBkZWxheWVkX2V4cGFuZCA9ICh0OiBUb2tlbi50LCBjYXJldDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAvKiBSZW1vdmVzIHRoZSBkLW5laWdoYm9yaW5nIHRpbGUgYW5kIHJlY29uc3RydWN0cyBpdCwgdHJpZ2dlcmluZ1xuICAgICBrZXl3b3JkLWV4cGFuc2lvbjsgcHJlY29uZGl0aW9uOiB0aGUgZC1uZWlnaGJvciBzaG91bGQgYmUgYSBtb25vdGlsZVxuICAgICBzdHJpbmctbWF0Y2hpbmcgYSBrZXl3b3JkIG9mIGFuIGV4cGFuZGluZyBmb3JtICovXG4gIGxldCAobmV3X2xhYmVsLCBiYWNrcGFjaykgPSBNb2xkcy5kZWxheWVkX2V4cGFuc2lvbih0KTtcbiAgbGV0KyB6ID0gZGVsZXRlKGNhcmV0LCB6KTtcbiAgY29uc3RydWN0KH5iYWNrcGFjaywgfmNhcmV0LCBuZXdfbGFiZWwsIHopO1xufTtcblxubGV0IGV4cGFuZF9vcl9iYXJmX2xlZnRfbmVpZ2hib3IgPSAoeiBhcyBzOiB0KTogb3B0aW9uKHQpID0+XG4gIC8qIElmIGxlZnQgbmVpZ2hib3IgaXMgYSBtb25vdGlsZSAoYSkgc3RyaW5nLW1hdGNoaW5nIHRoZSBzaGFyZCBhdCB0aGVcbiAgICAgdG9wIG9mIHRoZSBiYWNrcGFjaywgYmFyZiBpdCwgb3IgKGIpIGFuIGV4cGFuc2luZyBrZXl3b3JkLCBleHBhbmQgaXQuICovXG4gIHN3aXRjaCAobGVmdF9uZWlnaGJvcl9tb25vdGlsZSh6LnJlbGF0aXZlcy5zaWJsaW5ncykpIHtcbiAgfCBTb21lKHQpIHdoZW4gQmFja3BhY2sud2lsbF9iYXJmKHQsIHouYmFja3BhY2spID0+IGJhcmYoTGVmdCwgcylcbiAgfCBTb21lKHQpIHdoZW4gTW9sZHMuaXNfZGVsYXllZCh0KSA9PiBkZWxheWVkX2V4cGFuZCh0LCBMZWZ0LCBzKVxuICB8IF8gPT4gU29tZShzKVxuICB9O1xuXG5sZXQgZXhwYW5kX29yX2JhcmZfcmlnaHRfbmVpZ2hib3IgPSAoeiBhcyBzOiB0KTogb3B0aW9uKHQpID0+XG4gIC8qIElmIHJpZ2h0IG5laWdoYm9yIGlzIGEgbW9ub3RpbGUgKGEpIHN0cmluZy1tYXRjaGluZyB0aGUgc2hhcmQgYXQgdGhlXG4gICAgIHRvcCBvZiB0aGUgYmFja3BhY2ssIGJhcmYgaXQsIG9yIChiKSBhbiBleHBhbnNpbmcga2V5d29yZCwgZXhwYW5kIGl0LiAqL1xuICBzd2l0Y2ggKHJpZ2h0X25laWdoYm9yX21vbm90aWxlKHoucmVsYXRpdmVzLnNpYmxpbmdzKSkge1xuICB8IFNvbWUodCkgd2hlbiBCYWNrcGFjay53aWxsX2JhcmYodCwgei5iYWNrcGFjaykgPT4gYmFyZihSaWdodCwgcylcbiAgfCBTb21lKHQpIHdoZW4gTW9sZHMuaXNfZGVsYXllZCh0KSA9PiBkZWxheWVkX2V4cGFuZCh0LCBSaWdodCwgcylcbiAgfCBfID0+IFNvbWUocylcbiAgfTtcblxubGV0IGdldF9kdW9fc2hhcmQgPSAoe2xhYmVsLCBzaGFyZHMsIF99OiBUaWxlLnQpID0+XG4gIGlmIChMaXN0Lmxlbmd0aChsYWJlbCkgPT0gMiAmJiBMaXN0Lmxlbmd0aChzaGFyZHMpID09IDEpIHtcbiAgICBMaXN0Lm50aF9vcHQobGFiZWwsIExpc3QuaGQoc2hhcmRzKSk7XG4gIH0gZWxzZSB7XG4gICAgTm9uZTtcbiAgfTtcblxubGV0IG5laWdoYm9yX2Nhbl9kdW9tZXJnZSA9XG4gICAgKHQ6IFRva2VuLnQsIHM6IFNpYmxpbmdzLnQpOiBvcHRpb24oKExhYmVsLnQsIERpcmVjdGlvbi50KSkgPT5cbiAgLyogQ2hlY2tzIGlmIGEgbmVpZ2hib3IsIHByZWZlcmVudGlhbGx5IHRoZSBsZWZ0IG5laWdoYm9yLCBpc1xuICAgICBhIHNoYXJkIG9mIGEgZHVvdGlsZSB3aGljaCBjYW4gYmUgbWVyZ2VkIHRvIGZvcm0gYSBtb25vdGlsZS5cbiAgICAgSXQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIChtb25vKWxhYmVsLCBhbmQgdGhlIGRpcmVjdGlvbiBvZlxuICAgICB0aGUgcmVsZXZhbnQgbmVpZ2hib3IuICovXG4gIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHMpKSB7XG4gIHwgKFNvbWUoVGlsZSh0aWxlKSksIF8pID0+XG4gICAgbGV0KiBzdGFydCA9IGdldF9kdW9fc2hhcmQodGlsZSk7XG4gICAgbGV0KyBtb25vX2xibCA9IEZvcm0uZHVvbWVyZ2VzKFtzdGFydCwgdF0pO1xuICAgIChtb25vX2xibCwgRGlyZWN0aW9uLkxlZnQpO1xuICB8IChfLCBTb21lKFRpbGUodGlsZSkpKSA9PlxuICAgIGxldCogbGFzdCA9IGdldF9kdW9fc2hhcmQodGlsZSk7XG4gICAgbGV0KyBtb25vX2xibCA9IEZvcm0uZHVvbWVyZ2VzKFt0LCBsYXN0XSk7XG4gICAgKG1vbm9fbGJsLCBEaXJlY3Rpb24uUmlnaHQpO1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgbWFrZV9uZXdfdGlsZSA9ICh0OiBUb2tlbi50LCBjYXJldDogRGlyZWN0aW9uLnQsIHo6IHQpOiB0ID0+XG4gIC8qIEFkZHMgYSBuZXcgdGlsZSBhdCB0aGUgY2FyZXQuIElmIHRoZSBuZXcgdG9rZW4gbWF0Y2hlcyB0aGUgdG9wXG4gICAgIG9mIHRoZSBiYWNrcGFjaywgdGhlIGJhY2twYWNrIHNoYXJkIGlzIGRyb3BwZWQuIE90aGVyd2lzZSwgd2VcbiAgICAgY29uc3RydWN0IGEgbmV3IHRpbGUsIHdoaWNoIG1heSBpbW1lZGlhdGVseSBleHBhbmQuICovXG4gIEJhY2twYWNrLndpbGxfYmFyZih0LCB6LmJhY2twYWNrKVxuICAgID8gc3dpdGNoIChuZWlnaGJvcl9jYW5fZHVvbWVyZ2UodCwgei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gICAgICB8IFNvbWUoKGxibCwgZCkpID0+XG4gICAgICAgIFppcHBlci5yZXBsYWNlKH5jYXJldD1kLCB+YmFja3BhY2s9ZCwgbGJsLCB6KSB8PiBPcHRpb24uZ2V0XG4gICAgICB8IE5vbmUgPT4gcHV0X2Rvd24oY2FyZXQsIHopIHw+IE9wdGlvbi5nZXRcbiAgICAgIH1cbiAgICA6IHtcbiAgICAgIGxldCAobGJsLCBiYWNrcGFjaykgPSBNb2xkcy5pbnN0YW50X2V4cGFuc2lvbih0KTtcbiAgICAgIGxldCB6ID0gY29uc3RydWN0KH5jYXJldCwgfmJhY2twYWNrLCBsYmwsIHopO1xuICAgICAgejtcbiAgICB9O1xuXG5sZXQgZXhwYW5kX25laWdoYm9yc19hbmRfbWFrZV9uZXdfdGlsZSA9IChjaGFyOiBUb2tlbi50LCBzdGF0ZTogdCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIFRyaWdnZXIgYSB0b2tlbiBib3VuZGFyeSBldmVudCBhbmQgY3JlYXRlIGEgbmV3IHRpbGUuXG4gICAgIFRoaXMgcHJvY2VzcyBwb3RlbnRpYWxseSBpbnZvbHZlcyBib3RoIG5laWdoYm9yaW5nIHRpbGVzLFxuICAgICBwb3RlbnRpYWxseSB0cmlnZ2VyaW5nIHVwIHRvIDMgZXhwYW5zaW9ucyBvciBiYWNrcGFjayBiYXJmcy5cbiAgICAgSW4gcGFydGljdWxhciwgYm90aCBsZWZ0IGFuZCByaWdodCBuZWlnaGJvcmluZyBtb25vdGlsZXMgbWF5XG4gICAgIHVuZGVyZ28gZGVsYXllZCAoYWthIGtleXdvcmQpIGV4cGFuc2lvbiwgYW5kIHRoZSBuZXdseS1jcmVhdGVkXG4gICAgIHNpbmdsZS1jaGFyYWN0ZXIgdG9rZW4gbWF5IHVuZGVyZ28gaW5zdGFudCBleHBhbnNpb24uIEN1cnJlbnRseVxuICAgICBtYWRlIHRoZSBkZWNpc2lvbiB0byBleHBhbmQgb3IgYmFyZiB0aGUgbmVpZ2hib3JzIGJlZm9yZSBtYWtpbmdcbiAgICAgdGhlIG5ldyB0aWxlIGJlY2F1c2UgYmFyZmluZyBpcyBsaW1pdGVkIHRvIHRoZSB0b3Agb2YgdGhlIGJhY2twYWNrLFxuICAgICBhbmQgSSB3YW50ZWQgdGhpbmdzIGxpa2UgXCJpZnx0aGVuXCIsIHdoZW4geW91IGVudGVyIGEgXCIoXCIsIHRvXG4gICAgIGJhcmYgdGhlIFwidGhlblwiLCBiZWZvcmUgaXQgaXMgYnVyaWVkIGJ5IHRoZSBcIilcIiBhZGRlZCB0byB0aGUgQlAuXG4gICAgIFRoZSBvcmRlciBoZXJlIGNvdWxkIGJlIHJldmlzaXRlZCBpZiBiYXJmaW5nIHdhcyBtb3JlIHNvcGhpc3RpY2F0ZWQuXG4gICAgICovXG4gIGxldCogeiA9IGV4cGFuZF9vcl9iYXJmX2xlZnRfbmVpZ2hib3Ioc3RhdGUpO1xuICAvL2xldCAoeikgPSByZWdyb3V0KExlZnQsIHopO1xuICAvKiBOb3RlIHRvIGRhdmlkOiBJJ20gbm90IHN1cmUgd2h5IHRoZSBhYm92ZSByZWdyb3V0IGlzIG5lY2Vzc2FyeS5cbiAgICAgV2l0aG91dCBpdCwgdGhlcmUgaXMgYSBOb25jb252ZXggc2VnbWVudCBlcnJvciB0aHJvd24gaW4gZXhhY3RseVxuICAgICBvbmUgY2FzZSwgdGhlIGRvdWJsZSBiYXJmIGNhc2U6IGluc2VydCBzcGFjZSBvbiBcImlmIHRoZW58ZWxzZVwiICovXG4gIGxldCsgeiA9IGV4cGFuZF9vcl9iYXJmX3JpZ2h0X25laWdoYm9yKHopO1xuICBtYWtlX25ld190aWxlKGNoYXIsIExlZnQsIHopO1xufTtcblxubGV0IHJlcGxhY2VfdGlsZSA9ICh0OiBUb2tlbi50LCBkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCsgeiA9IGRlbGV0ZShkLCB6KTtcbiAgbWFrZV9uZXdfdGlsZSh0LCBkLCB6KTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYXBwZW5kYWJpbGl0eSA9XG4gIHwgQXBwZW5kTGVmdChUb2tlbi50KVxuICB8IEFwcGVuZFJpZ2h0KFRva2VuLnQpXG4gIHwgTWFrZU5ldztcblxubGV0IHNpYmxpbmdfYXBwZW5kYWJpbGl0eTogKHN0cmluZywgU2libGluZ3MudCkgPT4gYXBwZW5kYWJpbGl0eSA9XG4gIChjaGFyLCBzaWJsaW5ncykgPT5cbiAgICBzd2l0Y2ggKG5laWdoYm9yX21vbm90aWxlcyhzaWJsaW5ncykpIHtcbiAgICB8IChTb21lKHQpLCBfKSB3aGVuIE1vbGRzLmFsbG93X2FwcGVuZF9yaWdodCh0LCBjaGFyKSA9PlxuICAgICAgQXBwZW5kTGVmdCh0ICsrIGNoYXIpXG4gICAgfCAoXywgU29tZSh0KSkgd2hlbiBNb2xkcy5hbGxvd19hcHBlbmRfbGVmdChjaGFyLCB0KSA9PlxuICAgICAgQXBwZW5kUmlnaHQoY2hhciArKyB0KVxuICAgIHwgXyA9PiBNYWtlTmV3XG4gICAgfTtcblxubGV0IGluc2VydF9vdXRlciA9IChjaGFyOiBzdHJpbmcsIHogYXMgc3RhdGU6IHQpOiBvcHRpb24odCkgPT5cbiAgc3dpdGNoIChzaWJsaW5nX2FwcGVuZGFiaWxpdHkoY2hhciwgei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gIHwgTWFrZU5ldyA9PiBleHBhbmRfbmVpZ2hib3JzX2FuZF9tYWtlX25ld190aWxlKGNoYXIsIHN0YXRlKVxuICB8IEFwcGVuZExlZnQodCkgPT4gcmVwbGFjZV90aWxlKHQsIExlZnQsIHN0YXRlKVxuICB8IEFwcGVuZFJpZ2h0KHQpID0+IHJlcGxhY2VfdGlsZSh0LCBSaWdodCwgc3RhdGUpXG4gIH07XG5cbmxldCBpbnNlcnRfZHVvID0gKGxibDogTGFiZWwudCwgejogb3B0aW9uKHQpKTogb3B0aW9uKHQpID0+XG4gIHpcbiAgfD4gT3B0aW9uLm1hcCh6ID0+IFppcHBlci5jb25zdHJ1Y3QofmNhcmV0PUxlZnQsIH5iYWNrcGFjaz1MZWZ0LCBsYmwsIHopKVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKHogPT4ge1xuICAgICAgIC8vTk9URTogcmVncm91dCB0byBwdXQgZS5nLiBhcCgxfCkgYmFjayB0b2dldGhlclxuICAgICAgIHpcbiAgICAgICB8PiByZW1vbGRfcmVncm91dChMZWZ0KVxuICAgICAgIHw+IFppcHBlci5wdXRfZG93bihMZWZ0KVxuICAgICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oWmlwcGVyLm1vdmUoTGVmdCkpXG4gICAgIH0pO1xuXG5sZXQgaW5zZXJ0X21vbm9zID0gKGw6IFRva2VuLnQsIHI6IFRva2VuLnQsIHo6IG9wdGlvbih0KSk6IG9wdGlvbih0KSA9PlxuICB6XG4gIHw+IE9wdGlvbi5tYXAoWmlwcGVyLmNvbnN0cnVjdF9tb25vKFJpZ2h0LCByKSlcbiAgfD4gT3B0aW9uLm1hcChaaXBwZXIuY29uc3RydWN0X21vbm8oTGVmdCwgbCkpO1xuXG5sZXQgc3BsaXQgPSAoejogdCwgY2hhcjogc3RyaW5nLCBpZHg6IGludCwgdDogVG9rZW4udCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIEN1cnJlbnQgdGhpcyBuZWNlc3NhcmlseSBjcmVhdGVzIHRocmVlIHRva2VuczsgdHdvIGZyb20gc3BsaXR0aW5nXG4gICAqIHRoZSBleGlzdGluZyBvbmUsIGFuZCBhIG5ldyBvbmUuIFRoZSB0d28gc3BsaXR0aW5nIHRva2VucyBtYXkgYmVjb21lXG4gICAqIGRlbGltaXRlcnMgb2YgdGhlIHNhbWUgdGltZSAoZS5nLiBgW3xdYD0+YFs8PnxdYCkuIEluIHRoZSBmdXR1cmUgaXRcbiAgICogbWF5IGJlIHBydWRlbnQgdG8gcmVsYXggdGhpcyBieSwgYWZ0ZXIgc3BsaXR0aW5nLCBmaXJzdCBhdHRlbXB0aW5nXG4gICAqIHRvIGFwcGVuZCB0aGUgbmV3IGNoYXIgdG8gdGhlIGxlZnQgaGFsZiwgYW5kIHRoZW4gdGhlIHJpZ2h0IGhhbGYsXG4gICAqIGFuZCBvbmx5IGlmIHRob3NlIGZhaWwgY3JlYXRpbmcgYSBuZXcgY2VudGVyIHRva2VuLiAqL1xuICBsZXQgKGwsIHIpID0gVG9rZW4uc3BsaXRfbnRoKGlkeCwgdCk7XG4gIHpcbiAgfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcilcbiAgfD4gWmlwcGVyLnNlbGVjdChSaWdodClcbiAgfD4gKFxuICAgIC8qIG92ZXJ3cml0ZSBzZWxlY3Rpb24gKi9cbiAgICBzd2l0Y2ggKEZvcm0uZHVvbWVyZ2VzKFtsLCByXSkpIHtcbiAgICB8IFNvbWUoXykgPT4gaW5zZXJ0X2R1byhbbCwgcl0pXG4gICAgfCBOb25lID0+IGluc2VydF9tb25vcyhsLCByKVxuICAgIH1cbiAgKVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKGV4cGFuZF9uZWlnaGJvcnNfYW5kX21ha2VfbmV3X3RpbGUoY2hhcikpO1xufTtcblxubGV0IG9wdF9yZWdyb2xkID0gZCA9PiBPcHRpb24ubWFwKHJlbW9sZF9yZWdyb3V0KGQpKTtcblxubGV0IG1vdmVfaW50b19pZl9zdHJpbmdsaXRfb3JfY29tbWVudCA9IChjaGFyLCB6KSA9PlxuICAvKiBUaGlzIGlzIHNwZWNpYWwtY2FzZSBsb2dpYyBmb3IgYWR2YW5jaW5nIHRoZSBjYXJldCB0byBwb3NpdGlvbiBiZXR3ZWVuIHRoZSBxdW90ZXNcbiAgICAgaW4gbmV3bHktY3JlYXRlZCBzdHJpbmdsaXRzLiBUaGUgbWFpbiBzdHJpbmdsaXQgc3BlY2lhbC1jYXNlIGlzIGluIFppcHBlci5jb25zdHVjdFxuICAgICBhbmQgaWRlYWxseSB0aGlzIGxvZ2ljIHdvdWxkIGJlIGxvY2F0ZWQgdGhlcmUgYXMgd2VsbCwgYnV0IGJvdGggcmVncm91dGluZyBhbmRcbiAgICAgc3Vic2VxdWVudCBjYXJldCBwb3NpdGlvbiBsb2dpYyBhdCB0aGlzIGZ1bmN0aW9uJ3MgY2FsbHNpdGVzIGRpY2F0ZSB0aGF0IHRoaXNcbiAgICAgYmUgZG9uZSBhZnRlci4gTm90IHRvbyBoYXBweSBhYm91dCB0aGlzIHRiaC4gKi9cbiAgRm9ybS5pc19zdHJpbmdfZGVsaW0oY2hhcikgfHwgRm9ybS5pc19jb21tZW50X2RlbGltKGNoYXIpXG4gICAgPyBzd2l0Y2ggKG1vdmUoTGVmdCwgeikpIHtcbiAgICAgIHwgTm9uZSA9PiB6XG4gICAgICB8IFNvbWUoeikgPT4geiB8PiBzZXRfY2FyZXQoSW5uZXIoMCwgMCkpXG4gICAgICB9XG4gICAgOiB6O1xuXG5sZXQgY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudCA9IChjaGFyLCB0KSA9PlxuICBGb3JtLmlzX3N0cmluZyh0KVxuICAmJiBGb3JtLmlzX3N0cmluZ19kZWxpbShjaGFyKVxuICB8fCBGb3JtLmlzX2NvbW1lbnQodClcbiAgJiYgRm9ybS5pc19jb21tZW50X2RlbGltKGNoYXIpO1xuXG5sZXQgZ28gPVxuICAgIChjaGFyOiBzdHJpbmcsIHtjYXJldCwgcmVsYXRpdmVzOiB7c2libGluZ3MsIF99LCBffSBhcyB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLyogSWYgdGhlcmUncyBhIHNlbGVjdGlvbiwgZGVsZXRlIGl0IGJlZm9yZSBwcm9jZWVkaW5nICovXG4gIGxldCB6ID0gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA/IFppcHBlci5kZXN0cnVjdCh6KSA6IHo7XG4gIHN3aXRjaCAoY2FyZXQsIG5laWdoYm9yX21vbm90aWxlcyhzaWJsaW5ncykpIHtcbiAgLyogSWYgd2UgdHJ5IHRvIGluc2VydCBhIHF1b3RlIGluc2lkZSBhbiBleGlzdGluZyBzdHJpbmcsIG9yIGEgI1xuICAgKiBpbiBhIGNvbW1lbnQsIHdlIGFyZSBpbnN0ZWFkIG1vdmVkIHRvIHRoZSByaWdodGhhbmQgc2lkZSBvZlxuICAgKiB0aGUgb3BlcmFuZC4gTm90ZSB0aGF0IHRoaXMgYmVoYXZpb3IgaXMgbG9hZC1iZWFyaW5nIGZvciB0aGVcbiAgICogY3VycmVudCBwYXJzaW5nIGFwcHJvYWNoIGluY2x1ZGluZyBQYXN0ZSAqL1xuICB8IChfLCAoXywgU29tZSh0KSkpIHdoZW4gY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyLCB0KSA9PlxuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLm1vdmUoUmlnaHQpXG4gIHwgKE91dGVyLCAoU29tZSh0KSwgXykpIHdoZW4gY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyLCB0KSA9PlxuICAgIFNvbWUoeilcbiAgfCAoSW5uZXIoZF9pZHgsIG4pLCAoXywgU29tZSh0KSkpID0+XG4gICAgbGV0IGlkeCA9IG4gKyAxO1xuICAgIGxldCBuZXdfdCA9IFRva2VuLmluc2VydF9udGgoaWR4LCBjaGFyLCB0KTtcbiAgICAvKiBJZiBpbnNlcnRpbmcgd291bGRuJ3QgcHJvZHVjZSBhIHZhbGlkIHRva2VuLCBzcGxpdC4gVGhpcyBpc1xuICAgICAqIG1vc3RseSB0YXJnZXR0aW5nIHRoZSBjYXNlIG9mIGluc2VydGluZyBhbiBpbmZpeCBvcGVyYXRvclxuICAgICAqIGluc2lkZSBhbiBvcGVyYW5kIChvciBtb3JlIHJhcmVseSB2aWNlLXZlcnNhKS4gSW4gc3VjaCBjYXNlcyxcbiAgICAgKiBkdWUgdG8gdGhlIGN1cnJlbnQgTU9TVExZIGRpc2pvaW50ZWRuZXNzIG9mIHRoZXNlIGNoYXJhY3RlclxuICAgICAqIGNsYXNzZXMsIEFMTCAoaXNoPykgY3VycmVudCBzcGxpdHMgc2hvdWxkIGJlIDMtd2F5XG4gICAgICogc3BsaXRzIChhcyBvcHBvc2VkIHRvIDItd2F5KS4gVGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHlcbiAgICAgKiBraW5kIG9mIHNwbGl0dGluZyBzdXBwb3J0ZWQ7IHRoaXMgc2hvdWxkIGJlIHJldmlzaXRlZCBpZlxuICAgICAqIHdlIG1vdmUgdG8gbW9yZSBzdWJ0bGUgdG9rZW4gZGl2aXNpb24gbG9naWMgKi9cbiAgICBNb2xkcy5hbGxvd19pbnNlcnRpb24oY2hhciwgdCwgbmV3X3QpXG4gICAgICA/IHpcbiAgICAgICAgfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcihkX2lkeCwgaWR4KSlcbiAgICAgICAgfD4gWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgbmV3X3QpXG4gICAgICAgIHw+IG9wdF9yZWdyb2xkKExlZnQpXG4gICAgICA6IHNwbGl0KHosIGNoYXIsIGlkeCwgdCkgfD4gb3B0X3JlZ3JvbGQoUmlnaHQpO1xuICAvKiBDYW4ndCBpbnNlcnQgaW5zaWRlIGRlbGltaXRlciAqL1xuICB8IChJbm5lcihfLCBfKSwgKF8sIE5vbmUpKSA9PiBOb25lXG4gIHwgKE91dGVyLCAoXywgU29tZShfKSkpID0+XG4gICAgbGV0IGNhcmV0OiBaaXBwZXIuQ2FyZXQudCA9XG4gICAgICBzd2l0Y2ggKHNpYmxpbmdfYXBwZW5kYWJpbGl0eShjaGFyLCBzaWJsaW5ncykpIHtcbiAgICAgIHwgQXBwZW5kUmlnaHQoXykgPT5cbiAgICAgICAgLyogSWYgd2UncmUgYWRkaW5nIHRvIHRoZSByaWdodCwgbW92ZSBjYXJldCBpbnNpZGUgcmlnaHQgbmhici5cbiAgICAgICAgICogTm90ZSB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoaXMgaXMgYSBtb25vdGlsZSAqL1xuICAgICAgICBJbm5lcigwLCAwKVxuICAgICAgfCBNYWtlTmV3XG4gICAgICB8IEFwcGVuZExlZnQoXykgPT4gT3V0ZXJcbiAgICAgIH07XG4gICAgelxuICAgIHw+IGluc2VydF9vdXRlcihjaGFyKVxuICAgIHw+IE9wdGlvbi5tYXAoWmlwcGVyLnNldF9jYXJldChjYXJldCkpXG4gICAgfD4gb3B0X3JlZ3JvbGQoTGVmdClcbiAgICB8PiBPcHRpb24ubWFwKG1vdmVfaW50b19pZl9zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyKSk7XG4gIHwgKE91dGVyLCAoXywgTm9uZSkpID0+XG4gICAgelxuICAgIHw+IGluc2VydF9vdXRlcihjaGFyKVxuICAgIHw+IG9wdF9yZWdyb2xkKExlZnQpXG4gICAgfD4gT3B0aW9uLm1hcChtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW1lbnQoY2hhcikpXG4gIH07XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBVdGlsLk9wdFV0aWwuU3ludGF4O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGNvZGU6IGxpc3Qoc3RyaW5nKSxcbiAgc2VsZWN0aW9uOiBsaXN0KHN0cmluZyksXG4gIGJhY2twYWNrOiBsaXN0KGxpc3Qoc3RyaW5nKSksXG59O1xuXG5sZXQgc2VnX29mX3ppcCA9IFppcHBlci5zZWdfd2l0aG91dF9idWZmZXI7XG5cbmxldCByZWMgb2Zfc2VnbWVudCA9ICh+aG9sZXMsIHNlZzogU2VnbWVudC50KTogc3RyaW5nID0+XG4gIHNlZyB8PiBMaXN0Lm1hcChvZl9waWVjZSh+aG9sZXMpKSB8PiBTdHJpbmcuY29uY2F0KFwiXCIpXG5hbmQgb2ZfcGllY2UgPSAofmhvbGVzLCBwOiBQaWVjZS50KTogc3RyaW5nID0+XG4gIHN3aXRjaCAocCkge1xuICB8IFRpbGUodCkgPT4gb2ZfdGlsZSh+aG9sZXMsIHQpXG4gIHwgR3JvdXQoe3NoYXBlOiBDb25jYXZlLCBffSkgPT4gXCIgXCJcbiAgfCBHcm91dCh7c2hhcGU6IENvbnZleCwgX30pIHdoZW4gaG9sZXMgIT0gTm9uZSA9PiBPcHRpb24uZ2V0KGhvbGVzKVxuICB8IEdyb3V0KHtzaGFwZTogQ29udmV4LCBffSkgPT4gXCIgXCJcbiAgfCBTZWNvbmRhcnkodykgPT5cbiAgICBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHcpID8gXCJcXG5cIiA6IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudClcbiAgfVxuYW5kIG9mX3RpbGUgPSAofmhvbGVzLCB0OiBUaWxlLnQpOiBzdHJpbmcgPT5cbiAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICB8PiBBYmEuam9pbihvZl9kZWxpbSh0KSwgb2Zfc2VnbWVudCh+aG9sZXMpKVxuICB8PiBTdHJpbmcuY29uY2F0KFwiXCIpXG5hbmQgb2ZfZGVsaW0gPSAodDogUGllY2UudGlsZSwgaTogaW50KTogc3RyaW5nID0+IExpc3QubnRoKHQubGFiZWwsIGkpO1xuXG5sZXQgdG9fc3RyaW5nX2Jhc2ljID0gKHo6IFppcHBlci50KTogc3RyaW5nID0+IHtcbiAgeiB8PiBzZWdfb2ZfemlwIHw+IG9mX3NlZ21lbnQofmhvbGVzPU5vbmUpO1xufTtcblxubGV0IGxpbmVzX3RvX2xpc3QgPSBTdHJpbmcuc3BsaXRfb25fY2hhcignXFxuJyk7XG5cbmxldCBjYXJldF9zdHIgPSBcIuKWkVwiO1xuXG5sZXQgdG9fcm93cyA9XG4gICAgKFxuICAgICAgfmhvbGVzOiBvcHRpb24oc3RyaW5nKSxcbiAgICAgIH5tZWFzdXJlZDogTWVhc3VyZWQudCxcbiAgICAgIH5jYXJldDogb3B0aW9uKE1lYXN1cmVkLlBvaW50LnQpLFxuICAgICAgfmluZGVudDogc3RyaW5nLFxuICAgICAgfnNlZ21lbnQ6IFNlZ21lbnQudCxcbiAgICApXG4gICAgOiBsaXN0KHN0cmluZykgPT4ge1xuICBsZXQgaW5kZW50X29mID0gaSA9PiBNZWFzdXJlZC5Sb3dzLmZpbmQoaSwgbWVhc3VyZWQucm93cykuaW5kZW50O1xuICBsZXQgbWtfaW5kZW50ID0gKGksIHIpID0+IFN0cmluZ1V0aWwucmVwZWF0KGluZGVudF9vZihpKSwgaW5kZW50KSArKyByO1xuICBsZXQgcm93cyA9XG4gICAgc2VnbWVudCB8PiBvZl9zZWdtZW50KH5ob2xlcykgfD4gbGluZXNfdG9fbGlzdCB8PiBMaXN0Lm1hcGkobWtfaW5kZW50KTtcbiAgc3dpdGNoIChjYXJldCkge1xuICB8IFNvbWUoe3JvdywgY29sfSkgPT5cbiAgICBzd2l0Y2ggKExpc3RVdGlsLnNwbGl0X250aF9vcHQocm93LCByb3dzKSkge1xuICAgIHwgU29tZSgocHJlLCBjYXJldF9yb3csIHN1ZikpIHdoZW4gY29sIDwgU3RyaW5nLmxlbmd0aChjYXJldF9yb3cpID0+XG4gICAgICBwcmUgQCBbU3RyaW5nVXRpbC5pbnNlcnRfbnRoKGNvbCwgY2FyZXRfc3RyLCBjYXJldF9yb3cpXSBAIHN1ZlxuICAgIHwgU29tZSgocHJlLCBjYXJldF9yb3csIHN1ZikpID0+IHByZSBAIFtjYXJldF9yb3cgKysgY2FyZXRfc3RyXSBAIHN1ZlxuICAgIHwgXyA9PiByb3dzXG4gICAgfVxuICB8IE5vbmUgPT4gcm93c1xuICB9O1xufTtcblxubGV0IHByZXR0eV9wcmludCA9ICh+bWVhc3VyZWQ6IE1lYXN1cmVkLnQsIHo6IFppcHBlci50KTogc3RyaW5nID0+XG4gIHRvX3Jvd3MoXG4gICAgfmhvbGVzPU5vbmUsXG4gICAgfm1lYXN1cmVkLFxuICAgIH5jYXJldD1Ob25lLFxuICAgIH5pbmRlbnQ9XCIgXCIsXG4gICAgfnNlZ21lbnQ9c2VnX29mX3ppcCh6KSxcbiAgKVxuICB8PiBTdHJpbmcuY29uY2F0KFwiXFxuXCIpO1xuXG5sZXQgdG9fc3RyaW5nX2VkaXRvciA9XG4gICAgKH5ob2xlczogb3B0aW9uKHN0cmluZyk9U29tZShcIlwiKSwgZWRpdG9yOiBFZGl0b3IudCk6IHN0cmluZyA9PlxuICB0b19yb3dzKFxuICAgIH5ob2xlcyxcbiAgICB+bWVhc3VyZWQ9ZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQsXG4gICAgfmNhcmV0PU5vbmUsXG4gICAgfmluZGVudD1cIlwiLFxuICAgIH5zZWdtZW50PXNlZ19vZl96aXAoZWRpdG9yLnN0YXRlLnppcHBlciksXG4gIClcbiAgfD4gU3RyaW5nLmNvbmNhdChcIlxcblwiKTtcblxubGV0IHRvX3N0cmluZ19zZWxlY3Rpb24gPSAoZWRpdG9yOiBFZGl0b3IudCk6IHN0cmluZyA9PlxuICB0b19yb3dzKFxuICAgIH5tZWFzdXJlZD1lZGl0b3Iuc3RhdGUubWV0YS5tZWFzdXJlZCxcbiAgICB+Y2FyZXQ9Tm9uZSxcbiAgICB+aW5kZW50PVwiIFwiLFxuICAgIH5ob2xlcz1Ob25lLFxuICAgIH5zZWdtZW50PWVkaXRvci5zdGF0ZS56aXBwZXIuc2VsZWN0aW9uLmNvbnRlbnQsXG4gIClcbiAgfD4gU3RyaW5nLmNvbmNhdChcIlxcblwiKTtcblxubGV0IHRvX2xvZyA9ICh+bWVhc3VyZWQ6IE1lYXN1cmVkLnQsIHo6IFppcHBlci50KTogdCA9PiB7XG4gIGNvZGU6XG4gICAgdG9fcm93cyhcbiAgICAgIH5ob2xlcz1Ob25lLFxuICAgICAgfm1lYXN1cmVkLFxuICAgICAgfmNhcmV0PVNvbWUoWmlwcGVyLmNhcmV0X3BvaW50KG1lYXN1cmVkLCB6KSksXG4gICAgICB+aW5kZW50PVwiIFwiLFxuICAgICAgfnNlZ21lbnQ9c2VnX29mX3ppcCh6KSxcbiAgICApLFxuICBzZWxlY3Rpb246IHouc2VsZWN0aW9uLmNvbnRlbnQgfD4gb2Zfc2VnbWVudCh+aG9sZXM9Tm9uZSkgfD4gbGluZXNfdG9fbGlzdCxcbiAgYmFja3BhY2s6XG4gICAgTGlzdC5tYXAoXG4gICAgICAoczogU2VsZWN0aW9uLnQpID0+XG4gICAgICAgIHMuY29udGVudCB8PiBvZl9zZWdtZW50KH5ob2xlcz1Ob25lKSB8PiBsaW5lc190b19saXN0LFxuICAgICAgei5iYWNrcGFjayxcbiAgICApLFxufTtcblxubGV0IHRvX2xvZ19mbGF0ID0gKH5tZWFzdXJlZCwgejogWmlwcGVyLnQpOiBzdHJpbmcgPT4ge1xuICBsZXQge2NvZGUsIHNlbGVjdGlvbiwgYmFja3BhY2t9ID0gdG9fbG9nKH5tZWFzdXJlZCwgeik7XG4gIFByaW50Zi5zcHJpbnRmKFxuICAgIFwiQ09ERTpcXG4lc1xcblNFTEVDVElPTjpcXG4lc1xcbiVzXFxuXCIsXG4gICAgU3RyaW5nLmNvbmNhdChcIlxcblwiLCBjb2RlKSxcbiAgICBTdHJpbmcuY29uY2F0KFwiXFxuXCIsIHNlbGVjdGlvbiksXG4gICAgYmFja3BhY2tcbiAgICB8PiBMaXN0Lm1hcGkoKGksIGIpID0+XG4gICAgICAgICBQcmludGYuc3ByaW50ZihcIkJQKCVkKTpcXG4gJXNcXG5cIiwgaSwgU3RyaW5nLmNvbmNhdChcIlxcblwiLCBiKSlcbiAgICAgICApXG4gICAgfD4gU3RyaW5nLmNvbmNhdChcIlwiKSxcbiAgKTtcbn07XG5cbmxldCB6aXBwZXJfb2Zfc3RyaW5nID1cbiAgICAofnppcHBlcl9pbml0PVppcHBlci5pbml0KCksIHN0cjogc3RyaW5nKTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gIGxldCBpbnNlcnQgPSAoejogb3B0aW9uKFppcHBlci50KSwgYzogc3RyaW5nKTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gICAgbGV0KiB6ID0gejtcbiAgICB0cnkoYyA9PSBcIlxcclwiID8gU29tZSh6KSA6IEluc2VydC5nbyhjID09IFwiXFxuXCIgPyBGb3JtLmxpbmVicmVhayA6IGMsIHopKSB7XG4gICAgfCBleG4gPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJXQVJOOiB6aXBwZXJfb2Zfc3RyaW5nOiBcIiArKyBQcmludGV4Yy50b19zdHJpbmcoZXhuKSk7XG4gICAgICBOb25lO1xuICAgIH07XG4gIH07XG4gIHN0ciB8PiBVdGlsLlN0cmluZ1V0aWwudG9fbGlzdCB8PiBMaXN0LmZvbGRfbGVmdChpbnNlcnQsIFNvbWUoemlwcGVyX2luaXQpKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHppcHBlcjogc3RyaW5nLFxuICBiYWNrdXBfdGV4dDogc3RyaW5nLFxufTtcblxubGV0IHBlcnNpc3QgPSAoemlwcGVyOiBaaXBwZXIudCkgPT4ge1xuICB7XG4gICAgemlwcGVyOiBaaXBwZXIuc2V4cF9vZl90KHppcHBlcikgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZyxcbiAgICBiYWNrdXBfdGV4dDogUHJpbnRlci50b19zdHJpbmdfYmFzaWMoemlwcGVyKSxcbiAgfTtcbn07XG5cbmxldCB1bnBlcnNpc3QgPSAocGVyc2lzdGVkOiB0KSA9PlxuICB0cnkoU2V4cGxpYi5TZXhwLm9mX3N0cmluZyhwZXJzaXN0ZWQuemlwcGVyKSB8PiBaaXBwZXIudF9vZl9zZXhwKSB7XG4gIHwgXyA9PlxuICAgIHByaW50X2VuZGxpbmUoXG4gICAgICBcIldhcm5pbmc6IHVzaW5nIGJhY2t1cCB0ZXh0ISBTZXJpYWxpemF0aW9uIG1heSBiZSBmb3IgYW4gb2xkZXIgdmVyc2lvbiBvZiBIYXplbC5cIixcbiAgICApO1xuICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKHBlcnNpc3RlZC5iYWNrdXBfdGV4dCkpIHtcbiAgICB8IE5vbmUgPT4gWmlwcGVyLmluaXQoKVxuICAgIHwgU29tZSh6KSA9PiB6XG4gICAgfTtcbiAgfTtcblxubGV0IHNlcmlhbGl6ZSA9ICh6aXBwZXI6IFppcHBlci50KSA9PiB7XG4gIHBlcnNpc3QoemlwcGVyKSB8PiB5b2pzb25fb2ZfdCB8PiBZb2pzb24uU2FmZS50b19zdHJpbmc7XG59O1xuXG5sZXQgZGVzZXJpYWxpemUgPSAoZGF0YTogc3RyaW5nKSA9PiB7XG4gIGxldCBwZXJzaXN0ZWQgPSBkYXRhIHw+IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHw+IHRfb2ZfeW9qc29uO1xuICB1bnBlcnNpc3QocGVyc2lzdGVkKTtcbn07XG4iLCJvcGVuIFppcHBlcjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBkZXN0cnVjdCA9XG4gICAgKFxuICAgICAgZDogRGlyZWN0aW9uLnQsXG4gICAgICB7Y2FyZXQsIHJlbGF0aXZlczoge3NpYmxpbmdzOiAobF9zaWJzLCByX3NpYnMpLCBffSwgX30gYXMgejogdCxcbiAgICApXG4gICAgOiBvcHRpb24odCkgPT4ge1xuICAvKiBDb3VsZCBhZGQgY2hlY2tzIG9uIHZhbGlkIHRva2VucyAoYWxsIG9mIHRoZXNlIGhvbGQgYXNzdW1pbmcgc3Vic3RyaW5nKSAqL1xuICBsZXQgbGFzdF9pbm5lcl9wb3MgPSB0ID0+IFRva2VuLmxlbmd0aCh0KSAtIDI7XG4gIGxldCBkZWxldGVfcmlnaHQgPSB6ID0+XG4gICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIuZGVsZXRlKFJpZ2h0KTtcbiAgbGV0IGRlbGV0ZV9sZWZ0ID0gWmlwcGVyLmRlbGV0ZShMZWZ0KTtcbiAgbGV0IGNvbnN0cnVjdF9yaWdodCA9IChsLCBzKSA9PlxuICAgIE9wdGlvbi5tYXAoWmlwcGVyLmNvbnN0cnVjdCh+Y2FyZXQ9UmlnaHQsIH5iYWNrcGFjaz1SaWdodCwgbCksIHMpO1xuICBsZXQgY29uc3RydWN0X2xlZnQgPSAobCwgcykgPT5cbiAgICBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3QofmNhcmV0PUxlZnQsIH5iYWNrcGFjaz1MZWZ0LCBsKSwgcyk7XG4gIHN3aXRjaCAoZCwgY2FyZXQsIG5laWdoYm9yX21vbm90aWxlcygobF9zaWJzLCByX3NpYnMpKSkge1xuICAvKiBXaGVuIHRoZXJlJ3MgYSBzZWxlY3Rpb24sIGRlZmVyIHRvIE91dGVyICovXG4gIHwgXyB3aGVuIHouc2VsZWN0aW9uLmNvbnRlbnQgIT0gW10gPT4geiB8PiBaaXBwZXIuZGVzdHJ1Y3QgfD4gT3B0aW9uLnNvbWVcbiAgLyogU3BlY2lhbCBjYXNlcyBmb3IgbW9ubyBmb3JtcyB3aGljaCBjYW4gc3BsaXQgaW50byBkdW8gZm9ybXMsXG4gICAgIGUuZy4gbGlzdCBsaXRlcmFscy4gV2hlbiBkZWxldGlvbiB3b3VsZCBhbHRlciB0aGUgbW9ubyBmb3JtLFxuICAgICB3ZSByZXBsYWNlIGl0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGR1byBmb3JtLiAgKi9cbiAgfCAoTGVmdCwgT3V0ZXIsIChTb21lKHQpLCBfKSkgd2hlbiBGb3JtLmR1b3NwbGl0cyh0KSAhPSBbXSA9PlxuICAgIHogfD4gZGVsZXRlX2xlZnQgfD4gY29uc3RydWN0X2xlZnQoRm9ybS5kdW9zcGxpdHModCkpXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKSB3aGVuIEZvcm0uZHVvc3BsaXRzKHQpICE9IFtdID0+XG4gICAgeiB8PiBkZWxldGVfcmlnaHQgfD4gY29uc3RydWN0X3JpZ2h0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICB8IChMZWZ0LCBJbm5lcihfLCAwKSwgKF8sIFNvbWUodCkpKSB3aGVuIEZvcm0uZHVvc3BsaXRzKHQpICE9IFtdID0+XG4gICAgeiB8PiBkZWxldGVfcmlnaHQgfD4gY29uc3RydWN0X3JpZ2h0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICB8IChSaWdodCwgSW5uZXIoXywgbiksIChfLCBTb21lKHQpKSlcbiAgICAgIHdoZW4gRm9ybS5kdW9zcGxpdHModCkgIT0gW10gJiYgbiA9PSBsYXN0X2lubmVyX3Bvcyh0KSA9PlxuICAgIHogfD4gZGVsZXRlX3JpZ2h0IHw+IGNvbnN0cnVjdF9sZWZ0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICAvKiBTcGVjaWFsIGNhc2VzIGZvciBzdHJpbmcgbGl0ZXJhbHMuIFdoZW4gZGVsZXRpb24gd291bGRcbiAgICAgcmVtb3ZlIGFuIG91dGVyIHF1b3RlLCB3ZSBpbnN0ZWFkIHJlbW92ZSB0aGUgd2hvbGUgc3RyaW5nICovXG4gIHwgKExlZnQsIE91dGVyLCAoU29tZSh0KSwgXykpXG4gICAgICB3aGVuIEZvcm0uaXNfc3RyaW5nKHQpIHx8IEZvcm0uaXNfY29tbWVudCh0KSA9PlxuICAgIGRlbGV0ZV9sZWZ0KHopXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKVxuICAgICAgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeilcbiAgfCAoTGVmdCwgSW5uZXIoXywgMCksIChfLCBTb21lKHQpKSkgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSA9PlxuICAgIGRlbGV0ZV9yaWdodCh6KVxuICB8IChMZWZ0LCBJbm5lcihfLCAwKSwgKF8sIFNvbWUodCkpKVxuICAgICAgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeilcbiAgfCAoUmlnaHQsIElubmVyKF8sIG4pLCAoXywgU29tZSh0KSkpXG4gICAgICB3aGVuXG4gICAgICAgIChGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkpICYmIG4gPT0gbGFzdF9pbm5lcl9wb3ModCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeikgLyogUmVtb3ZlIGlubmVyIGNoYXJhY3RlciAqL1xuICB8IChMZWZ0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgPT5cbiAgICBsZXQgeiA9IFppcHBlci51cGRhdGVfY2FyZXQoWmlwcGVyLkNhcmV0LmRlY3JlbWVudCwgeik7XG4gICAgWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgVG9rZW4ucm1fbnRoKGNfaWR4LCB0KSwgeik7XG4gIHwgKFJpZ2h0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgd2hlbiBjX2lkeCA9PSBsYXN0X2lubmVyX3Bvcyh0KSA9PlxuICAgIFppcHBlci5yZXBsYWNlX21vbm8oUmlnaHQsIFRva2VuLnJtX250aChjX2lkeCArIDEsIHQpLCB6KVxuICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oeiA9PlxuICAgICAgICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIubW92ZShSaWdodClcbiAgICAgICApIC8qIElmIG5vdCBvbiBsYXN0IGlubmVyIHBvc2l0aW9uICovXG4gIHwgKFJpZ2h0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKFJpZ2h0LCBUb2tlbi5ybV9udGgoY19pZHggKyAxLCB0KSwgeilcbiAgLyogQ2FuJ3Qgc3ViZGVzdHJ1Y3QgaW4gZGVsaW1pdGVyLCBzbyBqdXN0IGRlc3RydWN0IG9uIHdob2xlIGRlbGltaXRlciAqL1xuICB8IChMZWZ0LCBJbm5lcihfKSwgKF8sIE5vbmUpKVxuICB8IChSaWdodCwgSW5uZXIoXyksIChfLCBOb25lKSkgPT5cbiAgICAvKiBOb3RlOiBDb3VudGVyaW50dWl0dmUsIGJ1dCB5ZXMsIHRoZXNlIGNhc2VzIGFyZSBpZGVudGljYWxseSBoYW5kbGVkICovXG4gICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIuZGVsZXRlKFJpZ2h0KVxuXG4gIC8vfCAoXywgSW5uZXIoXyksIChfLCBOb25lKSkgPT4gTm9uZVxuICB8IChMZWZ0LCBPdXRlciwgKFNvbWUodCksIF8pKSB3aGVuIFRva2VuLmxlbmd0aCh0KSA+IDEgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKExlZnQsIFRva2VuLnJtX2xhc3QodCksIHopXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKSB3aGVuIFRva2VuLmxlbmd0aCh0KSA+IDEgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKFJpZ2h0LCBUb2tlbi5ybV9maXJzdCh0KSwgeilcbiAgfCAoXywgT3V0ZXIsIChTb21lKF8pLCBfKSkgLyogdC5sZW5ndGggPT0gMSAqL1xuICB8IChfLCBPdXRlciwgKE5vbmUsIF8pKSA9PiB6IHw+IFppcHBlci5kZWxldGUoZClcbiAgfTtcbn07XG5cbmxldCBtZXJnZSA9ICgobCwgcik6IChUb2tlbi50LCBUb2tlbi50KSwgejogdCk6IG9wdGlvbih0KSA9PlxuICB6XG4gIHw+IFppcHBlci5zZXRfY2FyZXQoSW5uZXIoMCwgVG9rZW4ubGVuZ3RoKGwpIC0gMSkpICAvLyBub3RlIG1vbm90aWxlIGFzc3VtcHRpb25cbiAgfD4gWmlwcGVyLmRlbGV0ZShMZWZ0KVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKFppcHBlci5kZWxldGUoUmlnaHQpKVxuICB8PiBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3RfbW9ubyhSaWdodCwgbCArKyByKSk7XG5cbi8qIENoZWNrIGlmIGNvbnRhaW5pbmcgZHVvIGZvcm0gaGFzIGEgbW9ubyBlcXVpdmFsZW50IGUuZy4gbGlzdCBsaXRlcmFscyAqL1xubGV0IHBhcmVudF9kdW9tZXJnZXMgPSAoejogWmlwcGVyLnQpID0+IHtcbiAgbGV0KiBwYXJlbnQgPSBSZWxhdGl2ZXMucGFyZW50KHoucmVsYXRpdmVzKTtcbiAgbGV0KiBsYmwgPSBQaWVjZS5sYWJlbChwYXJlbnQpO1xuICBGb3JtLmR1b21lcmdlcyhsYmwpO1xufTtcblxubGV0IGdvID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgbGV0KiB6ID0gZGVzdHJ1Y3QoZCwgeik7XG4gIHN3aXRjaCAoXG4gICAgcGFyZW50X2R1b21lcmdlcyh6KSxcbiAgICB6LmNhcmV0LFxuICAgIG5laWdoYm9yX21vbm90aWxlcyh6LnJlbGF0aXZlcy5zaWJsaW5ncyksXG4gICkge1xuICB8IChTb21lKGxibCksIE91dGVyLCAoTm9uZSwgTm9uZSkpXG4gICAgICB3aGVuIFNpYmxpbmdzLm5vX3NpYmxpbmdzKHoucmVsYXRpdmVzLnNpYmxpbmdzKSA9PlxuICAgIC8qIE5vdGU6IHdlIG11c3QgZG8gdGhlIG5vX3NpYmxpbmdzIGNoZWNrLCBpdCBkb2VzIG5vdCBzdWZmaWNlXG4gICAgICAgdG8gY2hlY2sgbm8gbW9ub3RpbGUgbmVpZ2hib3JzIGFzIHRoZXJlIGNvdWxkIGJlIG90aGVyIG5laWdoYm9yc1xuICAgICAgIGZvciBleGFtcGxlIGVkZ2UgY2FzZTogXCIoKHwpKVwiICovXG4gICAgelxuICAgIHw+IFppcHBlci5kZWxldGVfcGFyZW50XG4gICAgfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcigwLCAwKSlcbiAgICB8PiBaaXBwZXIuY29uc3RydWN0KH5jYXJldD1SaWdodCwgfmJhY2twYWNrPUxlZnQsIGxibClcbiAgICAvKiBCZWxvdyByZWdyb3V0aW5nIGltcG9ydGFudCBmb3IgcGFyZW5zL2FwIHBvc2l0aW9uaW5nICovXG4gICAgfD4gWmlwcGVyLnJlZ3JvdXQoUmlnaHQpXG4gICAgfD4gT3B0aW9uLnNvbWVcbiAgfCAoXywgT3V0ZXIsIChTb21lKGwpLCBTb21lKHIpKSkgd2hlbiBNb2xkcy5hbGxvd19tZXJnZShsLCByKSA9PlxuICAgIG1lcmdlKChsLCByKSwgeilcbiAgfCBfID0+IFNvbWUoeilcbiAgfTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFppcHBlcjtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBpc193cml0ZV9hY3Rpb24gPSAoYTogQWN0aW9uLnQpID0+IHtcbiAgc3dpdGNoIChhKSB7XG4gIHwgTW92ZShfKVxuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVW5zZWxlY3QoXylcbiAgfCBKdW1wKF8pXG4gIHwgU2VsZWN0KF8pXG4gIHwgU3VnZ2VzdChfKVxuICB8IFJlc2V0U3VnZ2VzdGlvbiA9PiBmYWxzZVxuICB8IERlc3RydWN0KF8pXG4gIHwgSW5zZXJ0KF8pXG4gIHwgUGlja191cFxuICB8IFB1dF9kb3duXG4gIHwgUm90YXRlQmFja3BhY2tcbiAgfCBNb3ZlVG9CYWNrcGFja1RhcmdldChfKVxuICB8IFBhc3RlKF8pID0+IHRydWVcbiAgfTtcbn07XG5cbmxldCByZWMgZ29feiA9XG4gICAgICAgIChcbiAgICAgICAgICB+bWV0YTogb3B0aW9uKEVkaXRvci5NZXRhLnQpPT8sXG4gICAgICAgICAgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgICBhOiBBY3Rpb24udCxcbiAgICAgICAgICB6OiBaaXBwZXIudCxcbiAgICAgICAgKVxuICAgICAgICA6IEFjdGlvbi5SZXN1bHQudChaaXBwZXIudCkgPT4ge1xuICBsZXQgbWV0YSA9XG4gICAgc3dpdGNoIChtZXRhKSB7XG4gICAgfCBTb21lKG0pID0+IG1cbiAgICB8IE5vbmUgPT4gRWRpdG9yLk1ldGEuaW5pdCh6KVxuICAgIH07XG4gIG1vZHVsZSBNID0gKHZhbCBFZGl0b3IuTWV0YS5tb2R1bGVfb2ZfdChtZXRhKSk7XG4gIG1vZHVsZSBNb3ZlID0gTW92ZS5NYWtlKE0pO1xuICBtb2R1bGUgU2VsZWN0ID0gU2VsZWN0Lk1ha2UoTSk7XG5cbiAgbGV0IHNlbGVjdF90ZXJtX2N1cnJlbnQgPSB6ID0+XG4gICAgc3dpdGNoIChJbmRpY2F0ZWQuaW5kZXgoeikpIHtcbiAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgfCBTb21lKGlkKSA9PlxuICAgICAgc3dpdGNoIChTZWxlY3QudGVybShpZCwgeikpIHtcbiAgICAgIHwgU29tZSh6KSA9PiBPayh6KVxuICAgICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgICAgfVxuICAgIH07XG5cbiAgc3dpdGNoIChhKSB7XG4gIHwgTW92ZShkKSA9PlxuICAgIE1vdmUuZ28oZCwgeikgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKVxuICB8IE1vdmVUb05leHRIb2xlKGQpID0+XG4gICAgTW92ZS5nbyhHb2FsKFBpZWNlKEdyb3V0LCBkKSksIHopXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKVxuICB8IEp1bXAoanVtcF90YXJnZXQpID0+XG4gICAgb3BlbiBPcHRVdGlsLlN5bnRheDtcblxuICAgIGxldCBpZHggPSBJbmRpY2F0ZWQuaW5kZXgoeik7XG4gICAgbGV0ICh0ZXJtLCBfKSA9XG4gICAgICBVdGlsLlRpbWVVdGlsLm1lYXN1cmVfdGltZShcIlBlcmZvcm0uZ29feiA9PiBNYWtlVGVybS5mcm9tX3ppcFwiLCB0cnVlLCAoKSA9PlxuICAgICAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfdmlldyh6KVxuICAgICAgKTtcbiAgICBsZXQgc3RhdGljcyA9IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcChzZXR0aW5ncywgdGVybSk7XG5cbiAgICAoXG4gICAgICBzd2l0Y2ggKGp1bXBfdGFyZ2V0KSB7XG4gICAgICB8IEJpbmRpbmdTaXRlT2ZJbmRpY2F0ZWRWYXIgPT5cbiAgICAgICAgbGV0KiBpZHggPSBpZHg7XG4gICAgICAgIGxldCogY2kgPSBJZC5NYXAuZmluZF9vcHQoaWR4LCBzdGF0aWNzKTtcbiAgICAgICAgbGV0KiBiaW5kaW5nX2lkID0gSW5mby5nZXRfYmluZGluZ19zaXRlKGNpKTtcbiAgICAgICAgTW92ZS5qdW1wX3RvX2lkKHosIGJpbmRpbmdfaWQpO1xuICAgICAgfCBUaWxlSWQoaWQpID0+IE1vdmUuanVtcF90b19pZCh6LCBpZClcbiAgICAgIH1cbiAgICApXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKTtcbiAgfCBVbnNlbGVjdChTb21lKGQpKSA9PiBPayhaaXBwZXIuZGlyZWN0aW9uYWxfdW5zZWxlY3QoZCwgeikpXG4gIHwgVW5zZWxlY3QoTm9uZSkgPT5cbiAgICBsZXQgeiA9IFppcHBlci5kaXJlY3Rpb25hbF91bnNlbGVjdCh6LnNlbGVjdGlvbi5mb2N1cywgeik7XG4gICAgT2soeik7XG4gIHwgU2VsZWN0KEFsbCkgPT5cbiAgICBzd2l0Y2ggKE1vdmUuZG9fZXh0cmVtZShNb3ZlLnByaW1hcnkoQnlUb2tlbiksIFVwLCB6KSkge1xuICAgIHwgU29tZSh6KSA9PlxuICAgICAgc3dpdGNoIChTZWxlY3QuZ28oRXh0cmVtZShEb3duKSwgeikpIHtcbiAgICAgIHwgU29tZSh6KSA9PiBPayh6KVxuICAgICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgICAgfVxuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB9XG4gIHwgU2VsZWN0KFRlcm0oQ3VycmVudCkpID0+IHNlbGVjdF90ZXJtX2N1cnJlbnQoeilcbiAgfCBTZWxlY3QoU21hcnQpID0+XG4gICAgLyogSWYgdGhlIGN1cnJlbnQgdGlsZSBpcyBub3QgY29pbmNpZGVudCB3aXRoIHRoZSB0ZXJtLFxuICAgICAgIHNlbGVjdCB0aGUgdGVybS4gT3RoZXJ3aXNlLCBzZWxlY3QgdGhlIHBhcmVudCB0ZXJtLiAqL1xuICAgIGxldCB0aWxlX2lzX3Rlcm0gPVxuICAgICAgc3dpdGNoIChJbmRpY2F0ZWQuaW5kZXgoeikpIHtcbiAgICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgICAgfCBTb21lKGlkKSA9PiBTZWxlY3QudGlsZShpZCwgeikgPT0gU2VsZWN0LnRlcm0oaWQsIHopXG4gICAgICB9O1xuICAgIGlmICghdGlsZV9pc190ZXJtKSB7XG4gICAgICBzZWxlY3RfdGVybV9jdXJyZW50KHopO1xuICAgIH0gZWxzZSB7XG4gICAgICAvL1BFUkY6IHRoaXMgaXMgZXhwZW5zaXZlXG4gICAgICBsZXQgKHRlcm0sIF8pID0gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3ZpZXcoeik7XG4gICAgICBsZXQgc3RhdGljcyA9IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcChzZXR0aW5ncywgdGVybSk7XG4gICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICBJbmRpY2F0ZWQuaW5kZXgoeilcbiAgICAgICAgICB8PiBPcHRVdGlsLmFuZF90aGVuKGlkeCA9PiBJZC5NYXAuZmluZF9vcHQoaWR4LCBzdGF0aWNzKSlcbiAgICAgICAgKSB7XG4gICAgICAgIHwgU29tZShjaSkgPT5cbiAgICAgICAgICBzd2l0Y2ggKEluZm8uYW5jZXN0b3JzX29mKGNpKSkge1xuICAgICAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgICAgIHwgW3BhcmVudCwgLi4uX10gPT4gU29tZShwYXJlbnQpXG4gICAgICAgICAgfVxuICAgICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgICB9O1xuICAgICAgc3dpdGNoICh0YXJnZXQpIHtcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgIHwgU29tZShpZCkgPT5cbiAgICAgICAgc3dpdGNoIChTZWxlY3QudGVybShpZCwgeikpIHtcbiAgICAgICAgfCBTb21lKHopID0+IE9rKHopXG4gICAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICB8IFNlbGVjdChUZXJtKElkKGlkLCBkKSkpID0+XG4gICAgc3dpdGNoIChTZWxlY3QudGVybShpZCwgeikpIHtcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIGxldCB6ID0gZCA9PSBSaWdodCA/IHogOiBaaXBwZXIudG9nZ2xlX2ZvY3VzKHopO1xuICAgICAgT2soeik7XG4gICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgIH1cbiAgfCBTZWxlY3QoVGlsZShDdXJyZW50KSkgPT5cbiAgICBzd2l0Y2ggKEluZGljYXRlZC5pbmRleCh6KSkge1xuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB8IFNvbWUoaWQpID0+XG4gICAgICBzd2l0Y2ggKFNlbGVjdC50aWxlKGlkLCB6KSkge1xuICAgICAgfCBTb21lKHopID0+IE9rKHopXG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgICB9XG4gICAgfVxuICB8IFNlbGVjdChUaWxlKElkKGlkLCBkKSkpID0+XG4gICAgc3dpdGNoIChTZWxlY3QudGlsZShpZCwgeikpIHtcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIGxldCB6ID0gZCA9PSBSaWdodCA/IHogOiBaaXBwZXIudG9nZ2xlX2ZvY3VzKHopO1xuICAgICAgT2soeik7XG4gICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgIH1cbiAgfCBTZWxlY3QoUmVzaXplKGQpKSA9PlxuICAgIFNlbGVjdC5nbyhkLCB6KSB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgfCBEZXN0cnVjdChkKSA9PlxuICAgIHpcbiAgICB8PiBEZXN0cnVjdC5nbyhkKVxuICAgIHw+IE9wdGlvbi5tYXAocmVtb2xkX3JlZ3JvdXQoZCkpXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9kZXN0cnVjdClcbiAgfCBJbnNlcnQoY2hhcikgPT5cbiAgICB6XG4gICAgfD4gSW5zZXJ0LmdvKGNoYXIpXG4gICAgLyogbm90ZTogcmVtb2xkaW5nIGhlcmUgaXMgZG9uZSBjYXNlLWJ5LWNhc2UgKi9cbiAgICAvL3w+IE9wdGlvbi5tYXAoKHopID0+IHJlbW9sZF9yZWdyb3V0KFJpZ2h0LCB6KSlcbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X2luc2VydClcbiAgfCBQaWNrX3VwID0+IE9rKHJlbW9sZF9yZWdyb3V0KExlZnQsIFppcHBlci5waWNrX3VwKHopKSlcbiAgfCBQdXRfZG93biA9PlxuICAgIGxldCB6ID1cbiAgICAgIC8qIEFsdGVybmF0aXZlbHksIHB1dHRpbmcgZG93biBpbnNpZGUgdG9rZW4gY291bGQgZWl0ZXIgbWVyZ2UtaW4gb3Igc3BsaXQgKi9cbiAgICAgIHN3aXRjaCAoei5jYXJldCkge1xuICAgICAgfCBJbm5lcihfKSA9PiBOb25lXG4gICAgICB8IE91dGVyID0+IFppcHBlci5wdXRfZG93bihMZWZ0LCB6KVxuICAgICAgfTtcbiAgICB6XG4gICAgfD4gT3B0aW9uLm1hcChyZW1vbGRfcmVncm91dChMZWZ0KSlcbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X3B1dF9kb3duKTtcbiAgfCBSb3RhdGVCYWNrcGFjayA9PlxuICAgIGxldCB6ID0gey4uLnosIGJhY2twYWNrOiBVdGlsLkxpc3RVdGlsLnJvdGF0ZSh6LmJhY2twYWNrKX07XG4gICAgT2soeik7XG4gIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoKExlZnQoXykgfCBSaWdodChfKSkgYXMgZCkgPT5cbiAgICBpZiAoQmFja3BhY2sucmVzdHJpY3RlZCh6LmJhY2twYWNrKSkge1xuICAgICAgTW92ZS50b19iYWNrcGFja190YXJnZXQoZCwgeilcbiAgICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE1vdmUuZ28oTG9jYWwoZCksIHopXG4gICAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X21vdmUpO1xuICAgIH1cbiAgfCBNb3ZlVG9CYWNrcGFja1RhcmdldCgoVXAgfCBEb3duKSBhcyBkKSA9PlxuICAgIE1vdmUudG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKVxuICB8IFBhc3RlKGNsaXBib2FyZCkgPT5cbiAgICB7XG4gICAgICBsZXQqIHogPSBQcmludGVyLnppcHBlcl9vZl9zdHJpbmcofnppcHBlcl9pbml0PXosIGNsaXBib2FyZCk7XG4gICAgICBsZXQqIHogPSBnb196KH5zZXR0aW5ncywgSW5zZXJ0KFwiIFwiKSwgeikgfD4gUmVzdWx0Lm9rO1xuICAgICAgbGV0KyB6ID0gZ29feih+c2V0dGluZ3MsIERlc3RydWN0KExlZnQpLCB6KSB8PiBSZXN1bHQub2s7XG4gICAgICB6O1xuICAgIH1cbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X3Bhc3RlKVxuICB8IFN1Z2dlc3QoY29udGVudCkgPT5cbiAgICBsZXQgeiA9IFppcHBlci5zZXRfYnVmZmVyKHosIH5jb250ZW50LCB+bW9kZT1VbnBhcnNlZCk7XG4gICAgT2soeik7XG4gIHwgUmVzZXRTdWdnZXN0aW9uID0+XG4gICAgc3dpdGNoICh6LnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgfCBCdWZmZXIoXykgPT5cbiAgICAgIHN3aXRjaCAoZ29feih+c2V0dGluZ3MsIERlc3RydWN0KExlZnQpLCB6KSkge1xuICAgICAgfCBFcnJvcihfKSA9PiBPayh6KVxuICAgICAgfCBPayh6KSA9PiBnb196KH5zZXR0aW5ncywgRGVzdHJ1Y3QoTGVmdCksIHopXG4gICAgICB9XG4gICAgfCBfID0+IE9rKHopXG4gICAgfVxuICB9O1xufTtcblxubGV0IGdvID1cbiAgICAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgYTogQWN0aW9uLnQsIGVkOiBFZGl0b3IudClcbiAgICA6IEFjdGlvbi5SZXN1bHQudChFZGl0b3IudCkgPT5cbiAgaWYgKGVkLnJlYWRfb25seSAmJiBpc193cml0ZV9hY3Rpb24oYSkpIHtcbiAgICBSZXN1bHQuT2soZWQpO1xuICB9IGVsc2Uge1xuICAgIG9wZW4gUmVzdWx0LlN5bnRheDtcbiAgICBsZXQgRWRpdG9yLlN0YXRlLnt6aXBwZXIsIG1ldGF9ID0gZWQuc3RhdGU7XG4gICAgRWZmZWN0LnNfY2xlYXIoKTtcbiAgICBsZXQrIHogPSBnb196KH5zZXR0aW5ncywgfm1ldGEsIGEsIHppcHBlcik7XG4gICAgRWRpdG9yLm5ld19zdGF0ZSh+ZWZmZWN0cz1FZmZlY3Quc14sIGEsIHosIGVkKTtcbiAgfTtcbiIsIm9wZW4gVXRpbDtcblxubW9kdWxlIHR5cGUgUyA9IHtcbiAgbGV0IGQ6IERpcmVjdGlvbi50O1xuICBsZXQgb3JpZW50OiAoKCdhLCAnYSkpID0+ICgnYSwgJ2EpO1xufTtcblxubW9kdWxlIEw6IFMgPSB7XG4gIGxldCBkID0gRGlyZWN0aW9uLkxlZnQ7XG4gIGxldCBvcmllbnQgPSAoKGwsIHIpKSA9PiAobCwgcik7XG59O1xubW9kdWxlIFI6IFMgPSB7XG4gIGxldCBkID0gRGlyZWN0aW9uLlJpZ2h0O1xuICBsZXQgb3JpZW50ID0gKChsLCByKSkgPT4gKHIsIGwpO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXZhbF9yZXN1bHQgPSB7XG4gIGVsYWI6IEVsYWJvcmF0b3IuRWxhYm9yYXRpb24udCxcbiAgZXZhbHVhdGlvbjogUHJvZ3JhbVJlc3VsdC50LFxuICBwcmV2aW91czogUHJvZ3JhbVJlc3VsdC50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKGV2YWxfcmVzdWx0KVxuICB8IFN0ZXBwZXIoU3RlcHBlci50KTtcblxubGV0IGluaXRfZXZhbCA9IChlbGFiOiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpID0+XG4gIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nfSk7XG5cbmxldCB1cGRhdGVfZWxhYiA9IChlbGFiLCB+c2V0dGluZ3MpID0+XG4gIGZ1blxuICB8IE5vRWxhYiA9PlxuICAgIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nfSlcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uLCBffSkgPT5cbiAgICBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLCBwcmV2aW91czogZXZhbHVhdGlvbn0pXG4gIHwgU3RlcHBlcihzKSBhcyBzJyB3aGVuIERIRXhwLmZhc3RfZXF1YWwoZWxhYi5kLCBTdGVwcGVyLmdldF9lbGFiKHMpLmQpID0+IHMnXG4gIHwgU3RlcHBlcihfKSA9PiB7XG4gICAgICBTdGVwcGVyKFN0ZXBwZXIuaW5pdChlbGFiLCB+c2V0dGluZ3MpKTtcbiAgICB9O1xuXG5sZXQgdXBkYXRlX3N0ZXBwZXIgPSBmID0+XG4gIGZ1blxuICB8IE5vRWxhYiBhcyBlXG4gIHwgRXZhbHVhdGlvbihfKSBhcyBlID0+IGVcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoZihzKSk7XG5cbmxldCBzdGVwX2ZvcndhcmQgPSAoaWR4OiBpbnQsIG1yOiB0KSA9PlxuICBtciB8PiB1cGRhdGVfc3RlcHBlcihTdGVwcGVyLnN0ZXBfcGVuZGluZyhpZHgpKTtcblxubGV0IHN0ZXBfYmFja3dhcmQgPSAofnNldHRpbmdzLCBtcjogdCkgPT5cbiAgbXIgfD4gdXBkYXRlX3N0ZXBwZXIoU3RlcHBlci5zdGVwX2JhY2t3YXJkKH5zZXR0aW5ncykpO1xuXG5sZXQgcnVuX3BlbmRpbmcgPSAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCkgPT5cbiAgZnVuXG4gIHwgTm9FbGFiID0+IE5vRWxhYlxuICB8IEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzfSkgPT5cbiAgICBFdmFsdWF0aW9uKHtcbiAgICAgIGVsYWIsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIGV2YWx1YXRpb246IEludGVyZmFjZS5ldmFsdWF0ZSh+c2V0dGluZ3MsIGVsYWIuZCksXG4gICAgfSlcbiAgfCBFdmFsdWF0aW9uKF8pIGFzIGUgPT4gZVxuICB8IFN0ZXBwZXIocykgPT4gU3RlcHBlcihTdGVwcGVyLmV2YWx1YXRlX3BlbmRpbmcofnNldHRpbmdzLCBzKSk7XG5cbmxldCB1cGRhdGVfZXZhbHVhdGlvbiA9XG4gICAgKFxuICAgICAgZXZhbDpcbiAgICAgICAgUmVzdWx0LnQoXG4gICAgICAgICAgKEV2YWx1YXRvci5SZXN1bHQudCwgRXZhbHVhdG9yU3RhdGUudCksXG4gICAgICAgICAgUHJvZ3JhbVJlc3VsdC5lcnJvcixcbiAgICAgICAgKSxcbiAgICAgIHJlc3VsdDogdCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgc3dpdGNoIChyZXN1bHQpIHtcbiAgfCBTdGVwcGVyKF8pXG4gIHwgTm9FbGFiID0+IHJlc3VsdFxuICB8IEV2YWx1YXRpb24oe2VsYWIsIHByZXZpb3VzLCBffSkgPT5cbiAgICBFdmFsdWF0aW9uKHtcbiAgICAgIGVsYWIsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIGV2YWx1YXRpb246XG4gICAgICAgIHN3aXRjaCAoZXZhbCkge1xuICAgICAgICB8IE9rKChleHAsIHN0YXRlKSkgPT5cbiAgICAgICAgICBSZXN1bHRPayh7XG4gICAgICAgICAgICByZXN1bHQ6IGV4cCxcbiAgICAgICAgICAgIGVkaXRvcjpcbiAgICAgICAgICAgICAgRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IoXG4gICAgICAgICAgICAgICAgfmlubGluZT1mYWxzZSxcbiAgICAgICAgICAgICAgICBleHAgfD4gRXZhbHVhdG9yLlJlc3VsdC51bmJveCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIH0pXG4gICAgICAgIHwgRXJyb3IocmVhc29uKSA9PiBSZXN1bHRGYWlsKHJlYXNvbilcbiAgICAgICAgfSxcbiAgICB9KVxuICB9O1xufTtcblxubGV0IHRpbWVvdXQ6IHQgPT4gdCA9XG4gIGZ1blxuICB8IE5vRWxhYiA9PiBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uLCBffSBhcyBlKSA9PlxuICAgIEV2YWx1YXRpb24oey4uLmUsIGV2YWx1YXRpb246IFJlc3VsdEZhaWwoVGltZW91dCksIHByZXZpb3VzOiBldmFsdWF0aW9ufSlcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci50aW1lb3V0KHMpKTtcblxubGV0IHRvZ2dsZV9zdGVwcGVyID0gKH5zZXR0aW5ncykgPT5cbiAgZnVuXG4gIHwgTm9FbGFiID0+IE5vRWxhYlxuICB8IEV2YWx1YXRpb24oe2VsYWIsIF99KSA9PiBTdGVwcGVyKFN0ZXBwZXIuaW5pdCh+c2V0dGluZ3MsIGVsYWIpKVxuICB8IFN0ZXBwZXIocykgPT5cbiAgICBFdmFsdWF0aW9uKHtcbiAgICAgIGVsYWI6IFN0ZXBwZXIuZ2V0X2VsYWIocyksXG4gICAgICBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLFxuICAgICAgcHJldmlvdXM6IFJlc3VsdFBlbmRpbmcsXG4gICAgfSk7XG5cbmxldCB0ZXN0X3Jlc3VsdHMgPSAocmVzdWx0OiB0KSA9PlxuICBzd2l0Y2ggKHJlc3VsdCkge1xuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb246IFJlc3VsdE9rKHByKSwgX30pXG4gIHwgRXZhbHVhdGlvbih7XG4gICAgICBldmFsdWF0aW9uOiBPZmYoXykgfCBSZXN1bHRGYWlsKF8pIHwgUmVzdWx0UGVuZGluZyxcbiAgICAgIHByZXZpb3VzOiBSZXN1bHRPayhwciksXG4gICAgICBfLFxuICAgIH0pID0+XG4gICAgcHJcbiAgICB8PiBQcm9ncmFtUmVzdWx0LmdldF9zdGF0ZVxuICAgIHw+IEV2YWx1YXRvclN0YXRlLmdldF90ZXN0c1xuICAgIHw+IFRlc3RSZXN1bHRzLm1rX3Jlc3VsdHNcbiAgICB8PiBPcHRpb24uc29tZVxuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb246IE9mZihfKSB8IFJlc3VsdEZhaWwoXykgfCBSZXN1bHRQZW5kaW5nLCBffSlcbiAgfCBOb0VsYWJcbiAgfCBTdGVwcGVyKF8pID0+IE5vbmVcbiAgfTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwZXJzaXN0ZW50ID1cbiAgfCBFdmFsdWF0aW9uXG4gIHwgU3RlcHBlcihTdGVwcGVyLnBlcnNpc3RlbnQpO1xuXG5sZXQgdG9fcGVyc2lzdGVudDogdCA9PiBwZXJzaXN0ZW50ID1cbiAgZnVuXG4gIHwgTm9FbGFiXG4gIHwgRXZhbHVhdGlvbihfKSA9PiBFdmFsdWF0aW9uXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKFN0ZXBwZXIudG9fcGVyc2lzdGVudChzKSk7XG5cbmxldCBvZl9wZXJzaXN0ZW50ID0gKH5zZXR0aW5ncykgPT5cbiAgZnVuXG4gIHwgRXZhbHVhdGlvbiA9PiBOb0VsYWJcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci5mcm9tX3BlcnNpc3RlbnQofnNldHRpbmdzLCBzKSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2VsZWN0aW9uID0gaW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9IHtcbiAgc2VsZWN0aW9uLFxuICBhY3Rpb246IEFjdGlvbi50LFxufTtcblxubGV0IGdldF9zZWxlY3RlZF9lZGl0b3IgPSAofnNlbGVjdGlvbjogc2VsZWN0aW9uLCBtcjogdCkgPT5cbiAgc3dpdGNoIChtcikge1xuICB8IE5vRWxhYiA9PiBOb25lXG4gIHwgRXZhbHVhdGlvbih7ZXZhbHVhdGlvbjogUmVzdWx0T2soe2VkaXRvciwgX30pLCBffSkgPT4gU29tZShlZGl0b3IpXG4gIHwgRXZhbHVhdGlvbih7cHJldmlvdXM6IFJlc3VsdE9rKHtlZGl0b3IsIF99KSwgX30pID0+IFNvbWUoZWRpdG9yKVxuICB8IEV2YWx1YXRpb24oXykgPT4gTm9uZVxuICB8IFN0ZXBwZXIocykgPT4gU3RlcHBlci5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHMpXG4gIH07XG5cbmxldCBwdXRfc2VsZWN0ZWRfZWRpdG9yID0gKH5zZWxlY3Rpb246IHNlbGVjdGlvbiwgbXI6IHQsIGVkaXRvcikgPT5cbiAgc3dpdGNoIChtcikge1xuICB8IE5vRWxhYiA9PiBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uOiBSZXN1bHRPayhwciksIGVsYWIsIHByZXZpb3VzfSkgPT5cbiAgICBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRPayh7Li4ucHIsIGVkaXRvcn0pLCBwcmV2aW91c30pXG4gIHwgRXZhbHVhdGlvbih7cHJldmlvdXM6IFJlc3VsdE9rKHByKSwgZWxhYiwgZXZhbHVhdGlvbn0pID0+XG4gICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbiwgcHJldmlvdXM6IFJlc3VsdE9rKHsuLi5wciwgZWRpdG9yfSl9KVxuICB8IEV2YWx1YXRpb24oXykgPT4gbXJcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci5wdXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHMsIGVkaXRvcikpXG4gIH07XG5cbmxldCBnZXRfZWxhYm9yYXRpb24gPSBtciA9PlxuICBzd2l0Y2ggKG1yKSB7XG4gIHwgTm9FbGFiID0+IE5vbmVcbiAgfCBFdmFsdWF0aW9uKHtlbGFiLCBffSkgPT4gU29tZShlbGFiKVxuICB8IFN0ZXBwZXIocykgPT4gU29tZShTdGVwcGVyLmdldF9lbGFiKHMpKVxuICB9O1xuXG5sZXQgcGVyZm9ybSA9ICh+c2V0dGluZ3MsIGlkeCwgYWN0aW9uLCBtcikgPT4ge1xuICBnZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb249aWR4LCBtcilcbiAgfD4gT3B0aW9uLm1hcChlZGl0b3IgPT5cbiAgICAgICBlZGl0b3JcbiAgICAgICB8PiBQZXJmb3JtLmdvKH5zZXR0aW5ncywgYWN0aW9uKVxuICAgICAgIHw+IChcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCBPayhlZGl0b3IpID0+IGVkaXRvclxuICAgICAgICAgfCBFcnJvcihlKSA9PiByYWlzZShBY3Rpb24uRmFpbHVyZS5FeGNlcHRpb24oZSkpXG4gICAgICAgKVxuICAgICAgIHw+IHB1dF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbj1pZHgsIG1yKVxuICAgICApXG4gIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1tcik7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLypcbiBNb2RlbFJlc3VsdHMgaXMgdXNlZCB0byBzdG9yZSB0aGUgcmVzdWx0cyBvZlxuIGV2YWx1YXRpb25zIHJlcXVlc3RlZCBieSB0aGUgY3VycmVudCBlZGl0b3IgbW9kZSxcbiB3aXRoIHRoZSBrZXkgZGlzdGluZ3Vpc2hpbmcgdGhlc2UgcmVxdWVzdHMuXG5cbiBTZWUgdGhlIFNjaG9vbEV4ZXJjaXNlIG1vZHVsZSBmb3IgYW4gZXhhbXBsZS5cbiAqL1xubW9kdWxlIEtleSA9IHtcbiAgaW5jbHVkZSBTdHJpbmc7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gc3RyaW5nO1xufTtcblxubW9kdWxlIE0gPSBVdGlsLk1hcFV0aWwuTWFrZShLZXkpO1xuaW5jbHVkZSBNO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBNLnQoTW9kZWxSZXN1bHQudCk7XG5cbmxldCBpbml0X2V2YWwgPSAoZHM6IGxpc3QoKEtleS50LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSk6IHQgPT5cbiAgZHMgfD4gTGlzdC50b19zZXEgfD4gb2Zfc2VxIHw+IG1hcChNb2RlbFJlc3VsdC5pbml0X2V2YWwpO1xuXG5sZXQgdXBkYXRlX2VsYWJzID0gKH5zZXR0aW5ncykgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KCgoaywgZWxhYiksIGFjYykgPT5cbiAgICB1cGRhdGUoXG4gICAgICBrLFxuICAgICAgdiA9PlxuICAgICAgICBTb21lKFxuICAgICAgICAgIHZcbiAgICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9TW9kZWxSZXN1bHQuTm9FbGFiKVxuICAgICAgICAgIHw+IE1vZGVsUmVzdWx0LnVwZGF0ZV9lbGFiKH5zZXR0aW5ncywgZWxhYiksXG4gICAgICAgICksXG4gICAgICBhY2MsXG4gICAgKVxuICApO1xuXG5sZXQgbG9va3VwID0gKHJlc3VsdHM6IHQsIGtleTogS2V5LnQpID0+IGZpbmRfb3B0KGtleSwgcmVzdWx0cyk7XG5cbmxldCBydW5fcGVuZGluZyA9ICh+c2V0dGluZ3MpID0+IE0ubWFwKE1vZGVsUmVzdWx0LnJ1bl9wZW5kaW5nKH5zZXR0aW5ncykpO1xuXG5sZXQgdGltZW91dF9hbGwgPSBtYXAoTW9kZWxSZXN1bHQudGltZW91dCk7XG5cbmxldCBhZHZhbmNlX2V2YWx1YXRvcl9yZXN1bHQgPVxuICAgIChyZXN1bHRzOiB0LCAoa2V5OiBLZXkudCwgZWxhYjogRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KSlcbiAgICA6IG9wdGlvbigoS2V5LnQsIE1vZGVsUmVzdWx0LnQpKSA9PlxuICBzd2l0Y2ggKGxvb2t1cChyZXN1bHRzLCBrZXkpKSB7XG4gIHwgU29tZShTdGVwcGVyKF8pKSA9PiBOb25lXG4gIHwgU29tZShFdmFsdWF0aW9uKHtldmFsdWF0aW9uOiBwcmV2aW91cywgX30pKSA9PlxuICAgIFNvbWUoKGtleSwgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXN9KSkpXG4gIHwgU29tZShOb0VsYWIpXG4gIHwgTm9uZSA9PlxuICAgIFNvbWUoKFxuICAgICAga2V5LFxuICAgICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXM6IFJlc3VsdFBlbmRpbmd9KSxcbiAgICApKVxuICB9O1xuXG5sZXQgc3RlcHBlcl9yZXN1bHRfb3B0ID1cbiAgICAoKGtleTogS2V5LnQsIHI6IE1vZGVsUmVzdWx0LnQpKTogb3B0aW9uKChLZXkudCwgTW9kZWxSZXN1bHQudCkpID0+XG4gIHN3aXRjaCAocikge1xuICB8IFN0ZXBwZXIoXykgPT4gU29tZSgoa2V5LCByKSlcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxubGV0IHRvX2V2YWx1YXRlID1cbiAgICAocmVzdWx0czogdCwgZWxhYnM6IGxpc3QoKEtleS50LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSk6IHQgPT5cbiAgZWxhYnNcbiAgfD4gTGlzdC5maWx0ZXJfbWFwKGFkdmFuY2VfZXZhbHVhdG9yX3Jlc3VsdChyZXN1bHRzKSlcbiAgfD4gTGlzdC50b19zZXFcbiAgfD4gb2Zfc2VxO1xuXG5sZXQgdG9fc3RlcCA9IChyZXN1bHRzOiB0KTogdCA9PlxuICBiaW5kaW5ncyhyZXN1bHRzKVxuICB8PiBMaXN0LmZpbHRlcl9tYXAoc3RlcHBlcl9yZXN1bHRfb3B0KVxuICB8PiBMaXN0LnRvX3NlcVxuICB8PiBvZl9zZXE7XG5cbmxldCBwdXRfcmVzdWx0ID0gKGtleTogS2V5LnQsIHJlc3VsdDogTW9kZWxSZXN1bHQudCwgcmVzdWx0czogdCk6IHQgPT5cbiAgcmVzdWx0cyB8PiByZW1vdmUoa2V5KSB8PiBhZGQoa2V5LCByZXN1bHQpO1xuIiwidHlwZSB0ID0gSWQuTWFwLnQobGlzdChpbnQpKTtcblxubGV0IHQgPSByZWYoSWQuTWFwLmVtcHR5KTtcblxubGV0IGNvbnRhaW5zID0gKGlkLCBpKTogYm9vbCA9PlxuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgdF4pKSB7XG4gIHwgTm9uZSA9PiBmYWxzZVxuICB8IFNvbWUoaXMpID0+IExpc3QubWVtKGksIGlzKVxuICB9O1xuXG5sZXQgY2xlYXIgPSAoKSA9PiB7XG4gIHQgOj0gSWQuTWFwLmVtcHR5O1xufTtcblxuLy8gYXNzdW1lcyBzZWcgaXMgZnVsbHkgYXNzZW1ibGVkXG5sZXQgc2V0ID0gKHNlZzogQmFzZS5zZWdtZW50KTogdW5pdCA9PlxuICB0IDo9XG4gICAgc2VnXG4gICAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IFBpZWNlLlRpbGUodCkgPT4ge1xuICAgICAgICAgICAgIGxldCAobF9zaGFyZCwgcl9zaGFyZCkgPSBUaWxlLihsX3NoYXJkKHQpLCByX3NoYXJkKHQpKTtcbiAgICAgICAgICAgICBsZXQgbCA9IGxfc2hhcmQgPT0gMCA/IFtdIDogW2xfc2hhcmQgLSAxXTtcbiAgICAgICAgICAgICBsZXQgciA9IHJfc2hhcmQgPT0gTGlzdC5sZW5ndGgodC5sYWJlbCkgLSAxID8gW10gOiBbcl9zaGFyZF07XG4gICAgICAgICAgICAgbGV0IGxyID0gbCBAIHI7XG4gICAgICAgICAgICAgbHIgPT0gW10gPyBOb25lIDogU29tZSgodC5pZCwgbCBAIHIpKTtcbiAgICAgICAgICAgfVxuICAgICAgICAgfCBHcm91dChfKVxuICAgICAgICAgfCBTZWNvbmRhcnkoXykgPT4gTm9uZSxcbiAgICAgICApXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBJZC5NYXAub2Zfc2VxO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gc3RyaW5nO1xuIiwibGV0IGVkaXRvcl9vZl9jb2RlID0gKH5yZWFkX29ubHk9ZmFsc2UsIGNvZGU6IENvZGVTdHJpbmcudCkgPT4ge1xuICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhjb2RlKSkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoeikgPT4gU29tZShFZGl0b3IuaW5pdCh+cmVhZF9vbmx5LCB6KSlcbiAgfTtcbn07XG5cbmxldCBlZGl0b3JzX2ZvciA9XG4gICAgKH5yZWFkX29ubHk9ZmFsc2UsIHhzOiBsaXN0KCdhKSwgZjogJ2EgPT4gb3B0aW9uKHN0cmluZykpXG4gICAgOiAoaW50LCBsaXN0KCgnYSwgb3B0aW9uKEVkaXRvci50KSkpKSA9PiB7XG4gIGxldCB6cyA9XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjX3pzLCBhKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZihhKSkge1xuICAgICAgICB8IFNvbWUoc3RyKSA9PlxuICAgICAgICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKHN0cikpIHtcbiAgICAgICAgICB8IE5vbmUgPT4gYWNjX3pzIEAgWyhhLCBTb21lKFppcHBlci5pbml0KCkpKV1cbiAgICAgICAgICB8IFNvbWUoeikgPT4gYWNjX3pzIEAgWyhhLCBTb21lKHopKV1cbiAgICAgICAgICB9XG4gICAgICAgIHwgTm9uZSA9PiBhY2NfenMgQCBbKGEsIE5vbmUpXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW10sXG4gICAgICB4cyxcbiAgICApO1xuICAoXG4gICAgMCxcbiAgICBMaXN0Lm1hcChcbiAgICAgICgoYSwgc3opKSA9PlxuICAgICAgICBzd2l0Y2ggKHN6KSB7XG4gICAgICAgIHwgU29tZSh6KSA9PiAoYSwgU29tZShFZGl0b3IuaW5pdCh6LCB+cmVhZF9vbmx5KSkpXG4gICAgICAgIHwgTm9uZSA9PiAoYSwgTm9uZSlcbiAgICAgICAgfSxcbiAgICAgIHpzLFxuICAgICksXG4gICk7XG59O1xuXG5sZXQgZWRpdG9yc19vZl9zdHJpbmdzID0gKH5yZWFkX29ubHk9ZmFsc2UsIHhzOiBsaXN0KHN0cmluZykpID0+IHtcbiAgbGV0IChpLCBhZXMpID0gZWRpdG9yc19mb3IoeHMsIHggPT4gU29tZSh4KSwgfnJlYWRfb25seSk7XG4gIChpLCBMaXN0Lm1hcCgoKF8sIG9lKSkgPT4gT3B0aW9uLmdldChvZSksIGFlcykpO1xufTtcblxubGV0IHJlYyBhcHBlbmRfZXhwID0ge1xuICBFeHAuKFxuICAgIChlMTogRXhwLnQsIGUyOiBFeHAudCkgPT4gKFxuICAgICAge1xuICAgICAgICBzd2l0Y2ggKGUxLnRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGVcbiAgICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgICAgICB8IEZhaWxlZENhc3QoXylcbiAgICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgICB8IEJvb2woXylcbiAgICAgICAgfCBJbnQoXylcbiAgICAgICAgfCBGbG9hdChfKVxuICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICB8IExpc3RMaXQoXylcbiAgICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgICB8IENsb3N1cmUoXylcbiAgICAgICAgfCBGdW4oXylcbiAgICAgICAgfCBUeXBGdW4oXylcbiAgICAgICAgfCBGaXhGKF8pXG4gICAgICAgIHwgVHVwbGUoXylcbiAgICAgICAgfCBWYXIoXylcbiAgICAgICAgfCBBcChfKVxuICAgICAgICB8IFR5cEFwKF8pXG4gICAgICAgIHwgRGVmZXJyZWRBcChfKVxuICAgICAgICB8IElmKF8pXG4gICAgICAgIHwgVGVzdChfKVxuICAgICAgICB8IFBhcmVucyhfKVxuICAgICAgICB8IENvbnMoXylcbiAgICAgICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgICAgIHwgVW5PcChfKVxuICAgICAgICB8IEJpbk9wKF8pXG4gICAgICAgIHwgQnVpbHRpbkZ1bihfKVxuICAgICAgICB8IENhc3QoXylcbiAgICAgICAgfCBNYXRjaChfKSA9PiBFeHAue2lkczogW0lkLm1rKCldLCBjb3BpZWQ6IGZhbHNlLCB0ZXJtOiBTZXEoZTEsIGUyKX1cbiAgICAgICAgfCBTZXEoZTExLCBlMTIpID0+XG4gICAgICAgICAgbGV0IGUxMicgPSBhcHBlbmRfZXhwKGUxMiwgZTIpO1xuICAgICAgICAgIHtpZHM6IGUxLmlkcywgY29waWVkOiBmYWxzZSwgdGVybTogU2VxKGUxMSwgZTEyJyl9O1xuICAgICAgICB8IEZpbHRlcihraW5kLCBlYm9keSkgPT5cbiAgICAgICAgICBsZXQgZWJvZHknID0gYXBwZW5kX2V4cChlYm9keSwgZTIpO1xuICAgICAgICAgIHtpZHM6IGUxLmlkcywgY29waWVkOiBmYWxzZSwgdGVybTogRmlsdGVyKGtpbmQsIGVib2R5Jyl9O1xuICAgICAgICB8IExldChwLCBlZGVmLCBlYm9keSkgPT5cbiAgICAgICAgICBsZXQgZWJvZHknID0gYXBwZW5kX2V4cChlYm9keSwgZTIpO1xuICAgICAgICAgIHtpZHM6IGUxLmlkcywgY29waWVkOiBmYWxzZSwgdGVybTogTGV0KHAsIGVkZWYsIGVib2R5Jyl9O1xuICAgICAgICB8IFR5QWxpYXModHAsIHRkZWYsIGVib2R5KSA9PlxuICAgICAgICAgIGxldCBlYm9keScgPSBhcHBlbmRfZXhwKGVib2R5LCBlMik7XG4gICAgICAgICAge2lkczogZTEuaWRzLCBjb3BpZWQ6IGZhbHNlLCB0ZXJtOiBUeUFsaWFzKHRwLCB0ZGVmLCBlYm9keScpfTtcbiAgICAgICAgfTtcbiAgICAgIH06IEV4cC50XG4gICAgKVxuICApO1xufTtcbiIsImxldCBuYnNwID0gXCJcXHhDMlxceEEwXCI7IC8vIFVURi04IGVuY29kaW5nIGZvciBVKzAwQTAgXCJOby1icmVhayBzcGFjZVwiXG5cbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwiLy8gTWFwcyBrZXllZCBieSBhbiBlbmQgcG9zaXRpb25cbi8vIEludmFyaWVudDoga2V5cyBhcmUgYXNjZW5kaW5nIGFuZCB1bmlxdWVcbnR5cGUga2V5ID0gaW50O1xudHlwZSB0KCdhKSA9IGxpc3QoKGtleSwgJ2EpKTtcbmxldCBlbXB0eTogJ2EuIHQoJ2EpID0gW107XG5sZXQgc2luZ2xldG9uOiAnYS4gKGtleSwgJ2EpID0+IHQoJ2EpID0gKHBvcywgeCkgPT4gWyhwb3MsIHgpXTtcbmxldCByZWMgdW5pb246ICdhLiAoKCdhLCAnYSkgPT4gJ2EsIHQoJ2EpLCB0KCdhKSkgPT4gdCgnYSkgPVxuICAoZiwgdDEsIHQyKSA9PlxuICAgIHN3aXRjaCAodDEsIHQyKSB7XG4gICAgfCAoW10sIHRfb3RoZXIpID0+IHRfb3RoZXJcbiAgICB8ICh0X290aGVyLCBbXSkgPT4gdF9vdGhlclxuICAgIHwgKFsocDEsIHgxKSwgLi4ueHMxXSwgWyhwMiwgeDIpLCAuLi54czJdKSA9PlxuICAgICAgaWYgKHAxIDwgcDIpIHtcbiAgICAgICAgWyhwMSwgeDEpLCAuLi51bmlvbihmLCB4czEsIFsocDIsIHgyKSwgLi4ueHMyXSldO1xuICAgICAgfSBlbHNlIGlmIChwMSA+IHAyKSB7XG4gICAgICAgIFsocDIsIHgyKSwgLi4udW5pb24oZiwgWyhwMSwgeDEpLCAuLi54czFdLCB4czIpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFsocDEsIGYoeDEsIHgyKSksIC4uLnVuaW9uKGYsIHhzMSwgeHMyKV07XG4gICAgICB9XG4gICAgfTtcbmxldCByZWMgbWFwOiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZih4KSksIC4uLm1hcChmLCByZXN0KV07XG5sZXQgcmVjIG1hcGk6ICdhICdiLiAoKGtleSwgJ2EpID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZihwb3MsIHgpKSwgLi4ubWFwaShmLCByZXN0KV07XG5sZXQgcmVjIG1hcGs6ICdhICdiLiAoKGtleSwgJ2EpID0+IChrZXksICdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gW2YocG9zLCB4KSwgLi4ubWFwayhmLCByZXN0KV07XG5sZXQgcmVjIGZvbGRfbGVmdDogJ2EgJ2IuICgoa2V5LCAnYiwgJ2EpID0+ICdiLCAnYiwgdCgnYSkpID0+ICdiID1cbiAgKGYsIHopID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiB6XG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IGZvbGRfbGVmdChmLCBmKHBvcywgeiwgeCksIHJlc3QpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0ge1xuICByb3c6IGludCxcbiAgY29sOiBpbnQsXG59O1xuXG5sZXQgY29tcGFyZSA9IChwb3MxLCBwb3MyKSA9PlxuICBpZiAocG9zMS5yb3cgPCBwb3MyLnJvdykge1xuICAgICgtMSk7XG4gIH0gZWxzZSBpZiAocG9zMS5yb3cgPiBwb3MyLnJvdykge1xuICAgIDE7XG4gIH0gZWxzZSB7XG4gICAgSW50LmNvbXBhcmUocG9zMS5jb2wsIHBvczIuY29sKTtcbiAgfTtcblxubGV0IHplcm8gPSB7cm93OiAwLCBjb2w6IDB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLy8gVE9ETzogcmVuYW1lIEFubm90IHRvIEFubj9cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZykgLy8gSW52YXJpYW50OiBjb250YWlucyBubyBuZXdsaW5lcy4gVGV4dChcIlwiKSBpcyBpZGVudGl0eSBmb3IgYENhdGBcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpIC8vIEFzc29jaWF0aXZlXG4gIHwgTGluZWJyZWFrXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTsgLy8gQW5ub3RhdGlvbnNcblxubGV0IGFsaWduID0gKGw6IHQoJ2Fubm90KSkgPT4gQWxpZ24obCk7XG5sZXQgYW5ub3QgPSAoYW5ub3Q6ICdhbm5vdCwgbDogdCgnYW5ub3QpKSA9PiBBbm5vdChhbm5vdCwgbCk7XG5cbmxldCByZWMgcmVtb3ZlX2Fubm90cyA9IChsYXlvdXQ6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gIHN3aXRjaCAobGF5b3V0KSB7XG4gIHwgQW5ub3QoXywgbCkgPT4gcmVtb3ZlX2Fubm90cyhsKVxuICB8IFRleHQoc3RyaW5nKSA9PiBUZXh0KHN0cmluZylcbiAgfCBDYXQobDEsIGwyKSA9PiBDYXQocmVtb3ZlX2Fubm90cyhsMSksIHJlbW92ZV9hbm5vdHMobDIpKVxuICB8IExpbmVicmVhayA9PiBMaW5lYnJlYWtcbiAgfCBBbGlnbihsKSA9PiBBbGlnbihyZW1vdmVfYW5ub3RzKGwpKVxuICB9O1xufTtcblxuLy8gVE9ETz9cbi8vbGV0IHRleHQgPSAoc3RyaW5nKSA9PiB0X29mX2xheW91dChUZXh0KHN0cmluZykpO1xuLy9sZXQgY2F0ID0gKHQxLCB0MikgPT4gdF9vZl9sYXlvdXQoQ2F0KHQxLCB0MikpO1xuLy9sZXQgbGluZWJyZWFrID0gdF9vZl9sYXlvdXQobGluZWJyZWFrKTtcblxuLy8gVE9ETzogbW92ZSB0byBvd24gbW9kdWxlXG50eXBlIHRleHQoJ2Fubm90LCAnaW1wLCAndCkgPSB7XG4gIC8vIFRPRE86IHJlbmFtZSBgaW1wYFxuICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gJ2ltcCxcbiAgaW1wX2FwcGVuZDogKCdpbXAsICdpbXApID0+ICdpbXAsXG4gIGltcF9uZXdsaW5lOiBpbnQgPT4gJ2ltcCxcbiAgaW1wX29mX2Fubm90OiAoJ2Fubm90LCAnaW1wKSA9PiAnaW1wLFxuICB0X29mX2ltcDogJ2ltcCA9PiAndCxcbn07XG5cbmxldCBta19vZl9sYXlvdXQ6ICh0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpLCB0KCdhbm5vdCkpID0+ICd0ID1cbiAgKHRleHQsIGxheW91dCkgPT4ge1xuICAgIGxldCBjb2x1bW46IHJlZihpbnQpID0gcmVmKDApO1xuICAgIGxldCByZWMgZ286IChpbnQsIHQoJ2Fubm90KSkgPT4gJ2ltcCA9XG4gICAgICAoaW5kZW50LCBsYXlvdXQpID0+IHtcbiAgICAgICAgc3dpdGNoIChsYXlvdXQpIHtcbiAgICAgICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgICAgICBjb2x1bW4gOj0gY29sdW1uXiArIFVuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICAgICAgdGV4dC5pbXBfb2Zfc3RyaW5nKHN0cmluZyk7XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgaW1wMSA9IGdvKGluZGVudCwgbDEpO1xuICAgICAgICAgIGxldCBpbXAyID0gZ28oaW5kZW50LCBsMik7XG4gICAgICAgICAgdGV4dC5pbXBfYXBwZW5kKGltcDEsIGltcDIpO1xuICAgICAgICB8IExpbmVicmVhayA9PlxuICAgICAgICAgIC8vIFRPRE86IG5vIGluZGVudCBpZiBvbiBmaW5hbCBsaW5lIGJyZWFrXG4gICAgICAgICAgY29sdW1uIDo9IGluZGVudDtcbiAgICAgICAgICB0ZXh0LmltcF9uZXdsaW5lKGluZGVudCk7XG4gICAgICAgIHwgQWxpZ24obCkgPT4gZ28oY29sdW1uXiwgbClcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT4gdGV4dC5pbXBfb2ZfYW5ub3QoYW5ub3QsIGdvKGluZGVudCwgbCkpXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIHRleHQudF9vZl9pbXAoZ28oMCwgbGF5b3V0KSk7XG4gIH07XG5cbmxldCBzdHJpbmdfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBzdHJpbmcgPVxuICBsYXlvdXQgPT4ge1xuICAgIGxldCByZWNvcmQ6ICdhbm5vdC4gdGV4dCgnYW5ub3QsIHN0cmluZywgc3RyaW5nKSA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBzdHJpbmcsXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiBzMSArKyBzMixcbiAgICAgIGltcF9uZXdsaW5lOiBpbmRlbnQgPT4gXCJcXG5cIiArKyBTdHJpbmcubWFrZShpbmRlbnQsICcgJyksXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBpbXAgPT4gaW1wLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcblxubGV0IHN0cmluZ3Nfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBsaXN0KChpbnQsIHN0cmluZykpID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOlxuICAgICAgJ2Fubm90LlxuICAgICAgdGV4dCgnYW5ub3QsIGxpc3QoKGludCwgc3RyaW5nKSksIGxpc3QoKGludCwgc3RyaW5nKSkpXG4gICAgID0ge1xuICAgICAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+IFsoMCwgc3RyaW5nKV0sXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoTGlzdC5yZXYoczEpLCBzMikge1xuICAgICAgICB8IChbXSwgXykgPT4gczJcbiAgICAgICAgfCAoXywgW10pID0+IHMxXG4gICAgICAgIHwgKFxuICAgICAgICAgICAgWyhsYXN0X2luZGVudF8xLCBsYXN0X3N0cmluZ18xKSwgLi4ucmVzdDFdLFxuICAgICAgICAgICAgWyhmaXJzdF9pbmRlbnRfMiwgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml0sXG4gICAgICAgICAgKSA9PlxuICAgICAgICAgIGFzc2VydChmaXJzdF9pbmRlbnRfMiA9PSAwKTtcbiAgICAgICAgICBMaXN0LnJldihyZXN0MSlcbiAgICAgICAgICBAIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSArKyBmaXJzdF9zdHJpbmdfMiksIC4uLnJlc3QyXTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFsoaW5kZW50LCBcIlwiKV0sXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBzID0+IHMsXG4gICAgfTtcbiAgICBta19vZl9sYXlvdXQocmVjb3JkLCBsYXlvdXQpO1xuICB9O1xuIiwibGV0IHNwbGl0X2ZpcnN0ID0gKHhzOiBsaXN0KCdhKSk6ICgnYSwgbGlzdCgnYSkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBmYWlsd2l0aChcImVtcHR5IGxpc3RcIilcbiAgfCBbZmlyc3QsIC4uLnRyYWlsaW5nXSA9PiAoZmlyc3QsIHRyYWlsaW5nKVxuICB9O1xuXG5sZXQgc3BsaXRfbGFzdF9vcHQgPSAoeHM6IGxpc3QoJ2EpKTogb3B0aW9uKChsaXN0KCdhKSwgJ2EpKSA9PlxuICBzd2l0Y2ggKExpc3QucmV2KHhzKSkge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbeSwgLi4ueXNdID0+IFNvbWUoKExpc3QucmV2KHlzKSwgeSkpXG4gIH07XG5sZXQgc3BsaXRfbGFzdCA9ICh4czogbGlzdCgnYSkpOiAobGlzdCgnYSksICdhKSA9PlxuICBzd2l0Y2ggKHNwbGl0X2xhc3Rfb3B0KHhzKSkge1xuICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIGJveCA9IHtcbiAgaGVpZ2h0OiBpbnQsXG4gIHdpZHRoOiBpbnQsXG59O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbGF5b3V0OiB0JygnYW5ub3QpLFxuICBtZXRyaWNzOiBsaXN0KGJveCksXG59XG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgTGluZWJyZWFrXG4gIHwgVGV4dChzdHJpbmcpXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbnR5cGUgd2l0aF9vZmZzZXQoJ2Fubm90KSA9IChpbnQsIHQoJ2Fubm90KSk7XG5cbmxldCBoZWlnaHQgPSAobTogdChfKSkgPT5cbiAgbS5tZXRyaWNzIHw+IExpc3QubWFwKGJveCA9PiBib3guaGVpZ2h0KSB8PiBMaXN0LmZvbGRfbGVmdCgoKyksIDApO1xuXG5sZXQgd2lkdGggPSAofm9mZnNldD0wLCBtOiB0KF8pKSA9PlxuICBMaXN0LnRsKG0ubWV0cmljcylcbiAgfD4gTGlzdC5tYXAoYm94ID0+IGJveC53aWR0aClcbiAgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCBvZmZzZXQgKyBMaXN0LmhkKG0ubWV0cmljcykud2lkdGgpO1xuXG5sZXQgZm9sZCA9XG4gICAgKFxuICAgICAgfmxpbmVicmVhazogJ2FjYyxcbiAgICAgIH50ZXh0OiBzdHJpbmcgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogJ2FjYyA9PiAnYWNjLFxuICAgICAgfmNhdDogKCdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBhbGxvdyBjbGllbnQgdG8gY29udHJvbCByZWN1cnNpb24gYmFzZWQgb24gYW5ub3RhdGlvblxuICAgICAgICAgKHQoJ2Fubm90KSA9PiAnYWNjLCAnYW5ub3QsIHQoJ2Fubm90KSkgPT4gJ2FjYyxcbiAgICAgIG06IHQoJ2Fubm90KSxcbiAgICApXG4gICAgOiAnYWNjID0+IHtcbiAgbGV0IHJlYyBnbyA9IChtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWtcbiAgICB8IFRleHQocykgPT4gdGV4dChzKVxuICAgIHwgQWxpZ24obSkgPT4gYWxpZ24oZ28obSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IGFjYzEgPSBnbyhtMSk7XG4gICAgICBsZXQgYWNjMiA9IGdvKG0yKTtcbiAgICAgIGNhdChhY2MxLCBhY2MyKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QoZ28sIGFubiwgbSlcbiAgICB9O1xuICBnbyhtKTtcbn07XG5cbmxldCBuZXh0X3Bvc2l0aW9uID1cbiAgICAofmluZGVudDogaW50LCB7cm93LCBjb2x9OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpXG4gICAgOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4ge1xuICBsZXQgdXBkYXRlZF9yb3cgPSByb3cgKyBoZWlnaHQobSkgLSAxO1xuICBsZXQgdXBkYXRlZF9jb2wgPSB7XG4gICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QobS5tZXRyaWNzKTtcbiAgICBsYXN0LndpZHRoXG4gICAgKyAoXG4gICAgICBzd2l0Y2ggKGxlYWRpbmcpIHtcbiAgICAgIHwgW10gPT4gY29sXG4gICAgICB8IFtfLCAuLi5fXSA9PiBpbmRlbnRcbiAgICAgIH1cbiAgICApO1xuICB9O1xuICB7cm93OiB1cGRhdGVkX3JvdywgY29sOiB1cGRhdGVkX2NvbH07XG59O1xuXG5sZXQgcG9zX2ZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6IE1lYXN1cmVkUG9zaXRpb24udCA9PiAnYWNjLFxuICAgICAgfnRleHQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsIHN0cmluZykgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogKE1lYXN1cmVkUG9zaXRpb24udCwgJ2FjYykgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBsZXQgY2xpZW50IGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgIChcbiAgICAgICAgICAgfmdvOiB0KCdhbm5vdCkgPT4gJ2FjYyxcbiAgICAgICAgICAgfmluZGVudDogaW50LFxuICAgICAgICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCxcbiAgICAgICAgICAgJ2Fubm90LFxuICAgICAgICAgICB0KCdhbm5vdClcbiAgICAgICAgICkgPT5cbiAgICAgICAgICdhY2MsXG4gICAgICB+aW5kZW50PTAsXG4gICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udD1NZWFzdXJlZFBvc2l0aW9uLnplcm8sXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAoaW5kZW50OiBpbnQsIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpID0+XG4gICAgc3dpdGNoIChtLmxheW91dCkge1xuICAgIHwgTGluZWJyZWFrID0+IGxpbmVicmVhayhzdGFydClcbiAgICB8IFRleHQocykgPT4gdGV4dChzdGFydCwgcylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKHN0YXJ0LCBnbyhzdGFydC5jb2wsIHN0YXJ0LCBtKSlcbiAgICB8IENhdChtMSwgbTIpID0+XG4gICAgICBsZXQgbWlkID0gbmV4dF9wb3NpdGlvbih+aW5kZW50LCBzdGFydCwgbTEpO1xuICAgICAgY2F0KHN0YXJ0LCBnbyhpbmRlbnQsIHN0YXJ0LCBtMSksIGdvKGluZGVudCwgbWlkLCBtMikpO1xuICAgIHwgQW5ub3QoYW5uLCBtKSA9PiBhbm5vdCh+Z289Z28oaW5kZW50LCBzdGFydCksIH5pbmRlbnQsIH5zdGFydCwgYW5uLCBtKVxuICAgIH07XG4gIGdvKGluZGVudCwgc3RhcnQsIG0pO1xufTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBtayA9IChsOiBMYXlvdXQudCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgfCBTb21lKG0pID0+IE9iai5tYWdpYyhtKVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IG0gPVxuICAgICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICBsZXQgYm94ID0ge2hlaWdodDogMSwgd2lkdGg6IDB9O1xuICAgICAgICAgIHttZXRyaWNzOiBbYm94LCBib3hdLCBsYXlvdXQ6IExpbmVicmVha307XG4gICAgICAgIHwgVGV4dChzKSA9PiB7XG4gICAgICAgICAgICBtZXRyaWNzOiBbe2hlaWdodDogMSwgd2lkdGg6IFVuaWNvZGUubGVuZ3RoKHMpfV0sXG4gICAgICAgICAgICBsYXlvdXQ6IFRleHQocyksXG4gICAgICAgICAgfVxuICAgICAgICB8IEFsaWduKGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICBsZXQgYm91bmRpbmdfYm94ID1cbiAgICAgICAgICAgIG0ubWV0cmljc1xuICAgICAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICh7aGVpZ2h0OiBiaCwgd2lkdGg6IGJ3fSwge2hlaWdodCwgd2lkdGh9KSA9PlxuICAgICAgICAgICAgICAgICAgIHtoZWlnaHQ6IGJoICsgaGVpZ2h0LCB3aWR0aDogbWF4KGJ3LCB3aWR0aCl9LFxuICAgICAgICAgICAgICAgICB7aGVpZ2h0OiAwLCB3aWR0aDogMH0sXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgIHttZXRyaWNzOiBbYm91bmRpbmdfYm94XSwgbGF5b3V0OiBBbGlnbihtKX07XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgbTEgPSBtayhsMSk7XG4gICAgICAgICAgbGV0IG0yID0gbWsobDIpO1xuICAgICAgICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0xLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KG0yLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCBtaWRfYm94ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiBtYXgobGFzdC5oZWlnaHQsIGZpcnN0LmhlaWdodCksXG4gICAgICAgICAgICB3aWR0aDogbGFzdC53aWR0aCArIGZpcnN0LndpZHRoLFxuICAgICAgICAgIH07XG4gICAgICAgICAge21ldHJpY3M6IGxlYWRpbmcgQCBbbWlkX2JveCwgLi4udHJhaWxpbmddLCBsYXlvdXQ6IENhdChtMSwgbTIpfTtcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT5cbiAgICAgICAgICBsZXQgbSA9IG1rKGwpO1xuICAgICAgICAgIHsuLi5tLCBsYXlvdXQ6IEFubm90KGFubm90LCBtKX07XG4gICAgICAgIH07XG4gICAgICBNZW1vVGJsLnNldCh0YWJsZSwgT2JqLm1hZ2ljKGwpLCBPYmoubWFnaWMobSkpO1xuICAgICAgbTtcbiAgICB9O1xuICB9O1xufTtcbiIsInR5cGUgdCA9IHtcbiAgLy8gU3VtIG9mIHRoZSBzcXVhcmUgb2YgaG93IG11Y2ggZWFjaCBsaW5lIGV4dGVuZHMgYmV5b25kIG1heCB3aWR0aC4gIFVzdWFsbHkgemVyby5cbiAgb3ZlcmZsb3dfY29zdDogaW50LFxuICAvLyBIZWlnaHQgbWludXMgb25lLiAgQS5rLmEuIG51bWJlciBvZiBsaW5lIGJyZWFrcy5cbiAgaGVpZ2h0X2Nvc3Q6IGludCxcbn07XG5cbmxldCBtayA9ICh+b3ZlcmZsb3dfY29zdDogaW50LCB+aGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4ge1xuICBvdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdCxcbn07XG5cbmxldCBta19oZWlnaHQgPSAoaGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4gbWsofm92ZXJmbG93X2Nvc3Q9MCwgfmhlaWdodF9jb3N0KTtcblxubGV0IG1rX292ZXJmbG93ID0gKG92ZXJmbG93X2Nvc3Q6IGludCk6IHQgPT5cbiAgbWsofm92ZXJmbG93X2Nvc3QsIH5oZWlnaHRfY29zdD0wKTtcblxubGV0IHplcm86IHQgPSB7b3ZlcmZsb3dfY29zdDogMCwgaGVpZ2h0X2Nvc3Q6IDB9O1xuXG5sZXQgaW5mOiB0ID0ge292ZXJmbG93X2Nvc3Q6IG1heF9pbnQsIGhlaWdodF9jb3N0OiBtYXhfaW50fTtcblxubGV0IGFkZCA9IChjMTogdCwgYzI6IHQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdDogYzEub3ZlcmZsb3dfY29zdCArIGMyLm92ZXJmbG93X2Nvc3QsXG4gIGhlaWdodF9jb3N0OiBjMS5oZWlnaHRfY29zdCArIGMyLmhlaWdodF9jb3N0LFxufTtcblxubGV0IGVxID0gKGMxOiB0LCBjMjogdCk6IGJvb2wgPT5cbiAgYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCAmJiBjMS5oZWlnaHRfY29zdCA9PT0gYzIuaGVpZ2h0X2Nvc3Q7XG5cbmxldCBsdCA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPCBjMi5oZWlnaHRfY29zdDtcbiAgfSBlbHNlIHtcbiAgICBjMS5vdmVyZmxvd19jb3N0IDwgYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcblxubGV0IGxlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPD0gYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8PSBjMi5vdmVyZmxvd19jb3N0O1xuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIFdpZHRoUG9zS2V5ID0ge1xuICB0eXBlIHQgPSAoaW50LCBpbnQpO1xuICBsZXQgaGFzaCA9ICgod2lkdGgsIHBvcykpID0+IDI1NiAqIDI1NiAqIHdpZHRoICsgcG9zO1xuICBsZXQgZXF1YWwgPSAoKHcxLCBwMSksICh3MiwgcDIpKSA9PiB3MSA9PSB3MiAmJiBwMSA9PSBwMjtcbn07XG5cbm1vZHVsZSBNID0gSGFzaHRibC5NYWtlKFdpZHRoUG9zS2V5KTtcblxuLy8gTk9URTogcG9zIGlzIHJlbGF0aXZlIHRvIG1vc3QgcmVjZW50IGBBbGlnbmBcbnR5cGUgbScoJ2EpID0gUG9zTWFwLnQoKENvc3QudCwgJ2EpKTtcbnR5cGUgbSgnYSkgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCkgPT4gbScoJ2EpO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbWVtOiBbQHNleHAub3BhcXVlXSBNLnQobScoTGF5b3V0LnQoJ2Fubm90KSkpLFxuICBkb2M6IHQnKCdhbm5vdCksXG59XG5bQGRlcml2aW5nIHNleHBdXG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBhc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSkgLy8gQW5ub3RhdGlvbnNcbiAgfCBGYWlsIC8vIGlkZW50aXR5IGZvciBgQ2hvaWNlYFxuICB8IENob2ljZSh0KCdhbm5vdCksIHQoJ2Fubm90KSk7XG5cbmxldCB0X29mX3QnID0gKHQnOiB0JygnYW5ub3QpKTogdCgnYW5ub3QpID0+IHttZW06IE0uY3JlYXRlKDApLCBkb2M6IHQnfTtcblxubGV0IHRleHQgPSAoczogc3RyaW5nKSA9PiB0X29mX3QnKFRleHQocykpO1xubGV0IGxpbmVicmVhayA9ICgpID0+IHRfb2ZfdCcoTGluZWJyZWFrKTtcbmxldCBhbGlnbiA9IGRvYyA9PiB0X29mX3QnKEFsaWduKGRvYykpO1xubGV0IGFubm90ID0gKGFubm90LCBkb2MpID0+IHRfb2ZfdCcoQW5ub3QoYW5ub3QsIGRvYykpO1xubGV0IGZhaWwgPSAoKSA9PiB0X29mX3QnKEZhaWwpO1xuXG5sZXQgZW1wdHkgPSAoKSA9PiB0ZXh0KFwiXCIpO1xubGV0IHNwYWNlID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3ApOyAvLyBUT0RPOiBwYXJhbSB0byBoc2VwXG5cbmxldCBpbmRlbnQgPSAoKSA9PiB0ZXh0KFVuaWNvZGUubmJzcCArKyBVbmljb2RlLm5ic3ApO1xubGV0IGluZGVudF9hbmRfYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhDYXQoaW5kZW50KCksIGFsaWduKGRvYykpKTtcblxubGV0IGhjYXQgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgeSkpO1xubGV0IGhjYXRzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhjYXQsIGRvYywgZG9jcyk7XG5cbmxldCBoc2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KHNwYWNlKCksIHkpKSkpO1xubGV0IGhzZXBzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhzZXAsIGRvYywgZG9jcyk7XG5cbmxldCB2c2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KGxpbmVicmVhaygpLCB5KSkpKTtcbmxldCB2c2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWx3aXRoKF9fTE9DX18gKysgXCI6IHZzZXBzIHJlcXVpcmVzIGEgbm9uLWVtcHR5IGxpc3RcIilcbiAgfCBbZG9jXSA9PiBkb2NcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdCh2c2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgY2hvaWNlID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2hvaWNlKHgsIHkpKTtcbmxldCBjaG9pY2VzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZmFpbCgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoY2hvaWNlLCBkb2MsIGRvY3MpO1xuXG5sZXQgbWFwX3QnOiAnYSAnYi4gKHQnKCdhKSA9PiB0JygnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PiB0X29mX3QnKGYoZC5kb2MpKTtcblxubGV0IHJlYyBtYXBfYW5ub3Q6ICdhICdiLiAoJ2EgPT4gJ2IsIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PlxuICAgIGRcbiAgICB8PiBtYXBfdCcoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgKFRleHQoXykgfCBMaW5lYnJlYWsgfCBGYWlsKSBhcyBkJyA9PiBkJ1xuICAgICAgICAgfCBBbm5vdChhbm5vdCwgZCkgPT4gQW5ub3QoZihhbm5vdCksIG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQWxpZ24oZCkgPT4gQWxpZ24obWFwX2Fubm90KGYsIGQpKVxuICAgICAgICAgfCBDYXQoZDEsIGQyKSA9PiBDYXQobWFwX2Fubm90KGYsIGQxKSwgbWFwX2Fubm90KGYsIGQyKSlcbiAgICAgICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gQ2hvaWNlKG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpLFxuICAgICAgICk7XG4iLCIvLyBUT0RPOiBjb21wdXRlIGFjdHVhbCBsYXlvdXQgc2l6ZSBhbmQgdXNlIGluc3RlYWQgb2YgdF9vZl9sYXlvdXRcbmxldCByZWMgYWxsOiAnYW5ub3QuIERvYy50KCdhbm5vdCkgPT4gbGlzdChMYXlvdXQudCgnYW5ub3QpKSA9IHtcbiAgZG9jID0+IHtcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PiBbTGF5b3V0LlRleHQoc3RyaW5nKV1cbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbHMxID0gYWxsKGQxKTtcbiAgICAgIGxldCBsczIgPSBhbGwoZDIpO1xuICAgICAgTGlzdC5jb25jYXQoXG4gICAgICAgIExpc3QubWFwKGwxID0+IExpc3QubWFwKGwyID0+IExheW91dC5DYXQobDEsIGwyKSwgbHMyKSwgbHMxKSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT4gW0xheW91dC5MaW5lYnJlYWtdXG4gICAgfCBBbGlnbihkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5BbGlnbihsKSwgYWxsKGQpKVxuICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IExpc3QubWFwKGwgPT4gTGF5b3V0LkFubm90KGFubm90LCBsKSwgYWxsKGQpKVxuICAgIHwgRmFpbCA9PiBbXVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gYWxsKGQxKSBAIGFsbChkMilcbiAgICB9O1xuICB9O1xufTtcblxuLy8gTm90ZTogVGhpcyB1bmlvbiBpcyBsZWZ0IGJpYXNlZFxubGV0IG0nX3VuaW9uOiAnYS4gKERvYy5tJygnYSksIERvYy5tJygnYSkpID0+IERvYy5tJygnYSkgPVxuICAocDEsIHAyKSA9PiB7XG4gICAgbGV0IGNvc3RfdW5pb24gPSAoKGNvc3QxOiBDb3N0LnQsIF8pIGFzIHQxLCAoY29zdDI6IENvc3QudCwgXykgYXMgdDIpID0+XG4gICAgICBpZiAoQ29zdC5sZXEoY29zdDEsIGNvc3QyKSkge1xuICAgICAgICB0MTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHQyO1xuICAgICAgfTtcbiAgICBQb3NNYXAudW5pb24oY29zdF91bmlvbiwgcDEsIHAyKTtcbiAgfTtcblxubGV0IHJlYyBsYXlvdXRfb2ZfZG9jJyA9IChkb2M6IERvYy50KHVuaXQpKTogRG9jLm0oTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgbGV0IGcgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIC8vIFRPRE86IGxpZnQgdGhlIHN3aXRjaChkb2MuZG9jKSBvdXRzaWRlIHRoZSBsYW1iZGFcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PlxuICAgICAgLy8gVE9ETzogY2FjaGUgdGV4dCBsZW5ndGggaW4gVGV4dD9cbiAgICAgIGxldCBwb3MnID0gcG9zICsgU3RyaW5nLmxlbmd0aChzdHJpbmcpOyAvL1VuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICBsZXQgY29zdCA9XG4gICAgICAgIGlmIChwb3MnIDw9IHdpZHRoKSB7XG4gICAgICAgICAgQ29zdC56ZXJvO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBvdmVyZmxvdyA9IHBvcycgLSB3aWR0aDtcbiAgICAgICAgICAvLyBvdmVyZmxvd19jb3N0ID0gc3VtIGkgZnJvbSAxIHRvIG92ZXJmbG93XG4gICAgICAgICAgbGV0IG92ZXJmbG93X2Nvc3QgPSBvdmVyZmxvdyAqIChvdmVyZmxvdyArIDEpIC8gMjtcbiAgICAgICAgICBDb3N0Lm1rX292ZXJmbG93KG92ZXJmbG93X2Nvc3QpO1xuICAgICAgICB9O1xuICAgICAgUG9zTWFwLnNpbmdsZXRvbihwb3MnLCAoY29zdCwgTGF5b3V0LlRleHQoc3RyaW5nKSkpO1xuICAgIHwgQ2F0KGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLmZvbGRfbGVmdChcbiAgICAgICAgKHBvcywgeiwgKGNvc3QxLCBsYXlvdXQxKSkgPT4ge1xuICAgICAgICAgIGxldCBsMiA9IGxheW91dF9vZl9kb2MnKGQyLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgICAgIGxldCBsYXlvdXRzID1cbiAgICAgICAgICAgIFBvc01hcC5tYXAoXG4gICAgICAgICAgICAgICgoY29zdDIsIGxheW91dDIpKSA9PlxuICAgICAgICAgICAgICAgIChDb3N0LmFkZChjb3N0MSwgY29zdDIpLCBMYXlvdXQuQ2F0KGxheW91dDEsIGxheW91dDIpKSxcbiAgICAgICAgICAgICAgbDIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIG0nX3VuaW9uKHosIGxheW91dHMpO1xuICAgICAgICB9LFxuICAgICAgICBQb3NNYXAuZW1wdHksXG4gICAgICAgIGwxLFxuICAgICAgKTtcbiAgICB8IExpbmVicmVhayA9PlxuICAgICAgUG9zTWFwLnNpbmdsZXRvbigwLCAoQ29zdC5ta19oZWlnaHQoMSksIExheW91dC5MaW5lYnJlYWspKVxuICAgIHwgQWxpZ24oZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGg9d2lkdGggLSBwb3MsIH5wb3M9MCk7XG4gICAgICBQb3NNYXAubWFwayhcbiAgICAgICAgKHAsIChjLCBsKSkgPT4gKHAgKyBwb3MsIChjLCBMYXlvdXQuQWxpZ24obCkpKSxcbiAgICAgICAgbGF5b3V0LFxuICAgICAgKTtcbiAgICB8IEFubm90KGFubm90LCBkKSA9PlxuICAgICAgbGV0IGxheW91dCA9IGxheW91dF9vZl9kb2MnKGQsIH53aWR0aCwgfnBvcyk7XG4gICAgICBQb3NNYXAubWFwKCgoYywgbCkpID0+IChjLCBMYXlvdXQuQW5ub3QoYW5ub3QsIGwpKSwgbGF5b3V0KTtcbiAgICB8IEZhaWwgPT4gUG9zTWFwLmVtcHR5XG4gICAgfCBDaG9pY2UoZDEsIGQyKSA9PlxuICAgICAgbGV0IGwxID0gbGF5b3V0X29mX2RvYycoZDEsIH53aWR0aCwgfnBvcyk7XG4gICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgIG0nX3VuaW9uKGwxLCBsMik7XG4gICAgfTtcbiAgfTtcbiAgbGV0IGggPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIGxldCBrZXkgPSAod2lkdGgsIHBvcyk7XG4gICAgc3dpdGNoIChEb2MuTS5maW5kX29wdChkb2MubWVtLCBrZXkpKSB7XG4gICAgfCBTb21lKHZhbHVlKSA9PiB2YWx1ZVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IHZhbHVlID0gZyh+d2lkdGgsIH5wb3MpO1xuICAgICAgRG9jLk0uYWRkKGRvYy5tZW0sIGtleSwgdmFsdWUpO1xuICAgICAgdmFsdWU7XG4gICAgfTtcbiAgfTtcbiAgaDtcbn07XG5cbmxldCBsYXlvdXRfb2ZfZG9jID1cbiAgICAoZG9jOiBEb2MudCgnYW5ub3QpLCB+d2lkdGg6IGludCwgfnBvczogaW50KTogb3B0aW9uKExheW91dC50KCdhbm5vdCkpID0+IHtcbiAgbGV0IHJlYyBtaW5pbXVtID1cbiAgICAgICAgICAoKHBvcywgKGNvc3QsIHQpKTogKGludCwgKENvc3QudCwgb3B0aW9uKCdhKSkpKVxuICAgICAgICAgIDogKGxpc3QoKGludCwgKENvc3QudCwgJ2EpKSkgPT4gb3B0aW9uKCdhKSkgPT4ge1xuICAgIGZ1blxuICAgIHwgW10gPT4gdFxuICAgIHwgWyh4X3BvcywgKHhfY29zdCwgeCkpLCAuLi5yZXN0XSA9PlxuICAgICAgLy8gUHJlZmVyIGxvd2VzdCBjb3N0LCBvciBpZiBzYW1lIGNvc3QsIHByZWZlciBlbmRpbmcgYXQgYW4gZWFybGllciBjb2x1bW5cbiAgICAgIC8vIChDb2x1bW5zIGFyZSB1bmlxdWUgYnkgY29uc3RydWN0aW9uIG9mIFBvc01hcC4pXG4gICAgICBpZiAoQ29zdC5sdCh4X2Nvc3QsIGNvc3QpIHx8IENvc3QuZXEoeF9jb3N0LCBjb3N0KSAmJiB4X3BvcyA8IHBvcykge1xuICAgICAgICBtaW5pbXVtKCh4X3BvcywgKHhfY29zdCwgU29tZSh4KSkpLCByZXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pbmltdW0oKHBvcywgKGNvc3QsIHQpKSwgcmVzdCk7XG4gICAgICB9O1xuICB9O1xuICAvLyBUT0RPOiB1c2Ugb3B0aW9ucyBpbnN0ZWFkIG9mIG1heF9pbnRcbiAgLy8gbGV0IHN0YXJ0X3RpbWUgPSBTeXMudGltZSgpO1xuICBsZXQgbCA9XG4gICAgbWluaW11bShcbiAgICAgIChtYXhfaW50LCAoQ29zdC5pbmYsIE5vbmUpKSxcbiAgICAgIE9iai5tYWdpYyhsYXlvdXRfb2ZfZG9jJyhPYmoubWFnaWMoZG9jKSwgfndpZHRoLCB+cG9zKSksXG4gICAgKTtcbiAgLy8gbGV0IGVuZF90aW1lID0gU3lzLnRpbWUoKTtcbiAgLypcbiAgIFByaW50Zi5wcmludGYoXG4gICAgIFwibGF5b3V0X29mX2RvYzogJWQgXFx0JWZcXG5cIixcbiAgICAgLTEsIC8vZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpIyMuc2l6ZSxcbiAgICAgLy9NZW1vaXplLldlYWtQb2x5LlRhYmxlLmxlbmd0aChmc3QoTGF6eS5mb3JjZShtZW1vX3RhYmxlKSkpLFxuICAgICAxMDAwLjAgKi4gKGVuZF90aW1lIC0uIHN0YXJ0X3RpbWUpLFxuICAgKTtcbiAgICovXG4gIGw7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKVxuICB8IEhCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IFZCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCBoZWlnaHRfdGJsOiBNZW1vVGJsLnQodCh1bml0KSwgaW50KSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBoZWlnaHQgPSAoYm94OiB0KCdhbm5vdCkpID0+XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldChoZWlnaHRfdGJsLCBPYmoubWFnaWMoYm94KSkpIHtcbiAgICB8IFNvbWUoaCkgPT4gaFxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IGggPVxuICAgICAgICBzd2l0Y2ggKGJveCkge1xuICAgICAgICB8IFRleHQoXykgPT4gMVxuICAgICAgICB8IEFubm90KF8sIGIpID0+IGhlaWdodChiKVxuICAgICAgICB8IEhCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCAxKSAvLyBOb3RlOiAxIGlzIEhCb3goW10pIGhlaWdodFxuICAgICAgICB8IFZCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKVxuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCksIGgpO1xuICAgICAgaDtcbiAgICB9O1xuXG4gIC8vIE5vdGU6IGFubm90cyBhcmUgaW5zaWRlLW91dCAoaS5lLiBMaXN0LmhkKGFubm90cykgaXMgdGhlIGlubmVyLW1vc3QgYW5ub3QpXG4gIGxldCByZWMgYW5ub3QgPSAoYW5ub3RzOiBsaXN0KCdhbm5vdCksIGJveDogdCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKGFubm90cykge1xuICAgIHwgW10gPT4gYm94XG4gICAgfCBbYW5uLCAuLi5hbm5zXSA9PiBhbm5vdChhbm5zLCBBbm5vdChhbm4sIGJveCkpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGFwcGVuZF9ib3ggPVxuICAgICAgICAgICh+YW5ub3RzOiBsaXN0KCdhbm5vdCk9W10sIGJveDE6IHQoJ2Fubm90KSwgYm94MjogdCgnYW5ub3QpKVxuICAgICAgICAgIDogdCgnYW5ub3QpID0+XG4gICAgaWYgKGhlaWdodChib3gxKSA8PSAxKSB7XG4gICAgICBIQm94KFthbm5vdChhbm5vdHMsIGJveDEpLCBib3gyXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZWMgYXBwZW5kX2xhc3QgPSAoYnMxOiBsaXN0KHQoJ2Fubm90KSkpOiBsaXN0KHQoJ2Fubm90KSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGJzMSkge1xuICAgICAgICB8IFtdID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZSBkdWUgdG8gYGJveF9oZWlnaHRgIGd1YXJkXCIpXG4gICAgICAgIHwgW2IxXSA9PiBbYXBwZW5kX2JveCh+YW5ub3RzLCBiMSwgYm94MildXG4gICAgICAgIHwgW2IxLCAuLi5iczFdID0+IFthbm5vdChhbm5vdHMsIGIxKSwgLi4uYXBwZW5kX2xhc3QoYnMxKV1cbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKGJveDEpIHtcbiAgICAgIHwgVGV4dChfKSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgfCBIQm94KGJzMSkgPT4gSEJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBWQm94KGJzMSkgPT4gVkJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBBbm5vdChhbm5vdCwgYikgPT4gYXBwZW5kX2JveCh+YW5ub3RzPVthbm5vdCwgLi4uYW5ub3RzXSwgYiwgYm94MilcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgYXBwZW5kX2hib3ggPSAoYm94ZXMxOiBsaXN0KHQoJ2Fubm90KSksIGJveGVzMjogbGlzdCh0KCdhbm5vdCkpKSA9PiB7XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChib3hlczEpKSB7XG4gICAgfCBOb25lID0+IGJveGVzMlxuICAgIHwgU29tZSgobGVhZGluZywgbGFzdCkpID0+IGxlYWRpbmcgQCBbYXBwZW5kX2JveChsYXN0LCBIQm94KGJveGVzMikpXVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRhYmxlOiBNZW1vVGJsLnQoTGF5b3V0LnQodW5pdCksIHQodW5pdCkpID0gTWVtb1RibC5taygpO1xuICBsZXQgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgbGV0IG1rID0gKGJveGVzOiBsaXN0KGxpc3QodChfKSkpKSA9PlxuICAgICAgVkJveChMaXN0Lm1hcChyb3cgPT4gSEJveChyb3cpLCBib3hlcykpO1xuICAgIGxldCByZWMgZ28gPSAobDogTGF5b3V0LnQoXykpID0+IHtcbiAgICAgIHN3aXRjaCAoTWVtb1RibC5nZXQodGFibGUsIE9iai5tYWdpYyhsKSkpIHtcbiAgICAgIHwgU29tZShib3gpID0+IE9iai5tYWdpYyhib3gpXG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0IGJveCA9XG4gICAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgICAgfCBMaW5lYnJlYWsgPT4gW1tdLCBbXV1cbiAgICAgICAgICB8IFRleHQocykgPT4gW1tUZXh0KHMpXV1cbiAgICAgICAgICB8IEFsaWduKGwpID0+IFtbbWsoZ28obCkpXV1cbiAgICAgICAgICB8IEFubm90KGFubiwgbCkgPT5cbiAgICAgICAgICAgIGdvKGwpIHw+IExpc3QubWFwKHJvdyA9PiBbQW5ub3QoYW5uLCBIQm94KHJvdykpXSlcbiAgICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChnbyhsMSkpO1xuICAgICAgICAgICAgbGV0IChmaXJzdCwgdHJhaWxpbmcpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoZ28obDIpKTtcbiAgICAgICAgICAgIGxlYWRpbmcgQCBbYXBwZW5kX2hib3gobGFzdCwgZmlyc3QpLCAuLi50cmFpbGluZ107XG4gICAgICAgICAgfTtcbiAgICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKGJveCkpO1xuICAgICAgICBib3g7XG4gICAgICB9O1xuICAgIH07XG4gICAgbWsoZ28obCkpO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuLypcbiAgVGhlc2UgYXJlIHRoZSBzeW50YXggdGVzdCBmdW5jdGlvbnMgdXNlZCBmb3IgdGhlIHN5bnRheCB2YWxpZGF0aW9uXG4gIHNlY3Rpb24gb2YgdGhlIGV4ZXJjaXNlcy4gVGhlIHN5bnRheCB0ZXN0cyBhcmUgZGVzaWduZWQgdG9cbiAgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaW1wbGVtZW50YXRpb24gc2F0aXNmaWVzIGNlcnRhaW4gc3ludGF4IHByb3BlcnRpZXNcbiAgZS5nLiB0YWlsIHJlY3Vyc2l2ZSBmdW5jdGlvbiBvciB2YXJpYWJsZSB1c2FnZS5cbiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN5bnRheF9yZXN1bHQgPSB7XG4gIHJlc3VsdHM6IGxpc3QoYm9vbCksXG4gIHBlcmNlbnRhZ2U6IGZsb2F0LFxufTtcblxubGV0IHJlYyBmaW5kX3Zhcl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IEJvb2woXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICB8IENvbnModXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1cCkgPT4ge2FjYyB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKX0sIGZhbHNlLCBsKVxuICB8IFBhcmVucyh1cCkgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cClcbiAgfCBBcCh1cDEsIHVwMikgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cDEpIHx8IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAyKVxuICB8IENhc3QodXAsIF8sIF8pID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIH07XG59O1xuXG4vKlxuICBIZWxwZXIgZnVuY3Rpb24gdXNlZCBpbiB0aGUgZnVuY3Rpb24gZmluZF9mbiB3aGljaCB0YWtlcyB0aGVcbiAgcGF0dGVybiAodXBhdCkgYW5kIHRoZSBkZWZpbml0aW9uIChkZWYpIG9mIGEgbGV0IGV4cHJlc3Npb24gYW5kXG4gIGNvbGxlY3RzIGZ1bmN0aW9ucyBpbiBkZWYgdGhhdCBhcmUgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBpblxuICB1cGF0LiBFeGFtcGxlOiBmb3IgdGhlIGV4cHJlc3Npb24gXCJsZXQgKGEsYikgPSAoZnVuIHggLT4geCsxLCA0MSkgaW5cIlxuICBpZiBuYW1lPVwiYVwiLCB0aGVuIGw9W2Z1biB4IC0+IHgrMV1cbiAqL1xubGV0IHJlYyBmaW5kX2luX2xldCA9XG4gICAgICAgIChuYW1lOiBzdHJpbmcsIHVwYXQ6IFVQYXQudCwgZGVmOiBVRXhwLnQsIGw6IGxpc3QoVUV4cC50KSlcbiAgICAgICAgOiBsaXN0KFVFeHAudCkgPT4ge1xuICBzd2l0Y2ggKHVwYXQudGVybSwgZGVmLnRlcm0pIHtcbiAgfCAoUGFyZW5zKHVwKSwgUGFyZW5zKHVlKSkgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIHVlLCBsKVxuICB8IChQYXJlbnModXApLCBfKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmLCBsKVxuICB8IChfLCBQYXJlbnModWUpKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cGF0LCB1ZSwgbClcbiAgfCAoQ2FzdCh1cCwgXywgXyksIF8pID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYsIGwpXG4gIHwgKFZhcih4KSwgRnVuKF8pKSA9PiB4ID09IG5hbWUgPyBbZGVmLCAuLi5sXSA6IGxcbiAgfCAoVHVwbGUocGwpLCBUdXBsZSh1bCkpID0+XG4gICAgaWYgKExpc3QubGVuZ3RoKHBsKSAhPSBMaXN0Lmxlbmd0aCh1bCkpIHtcbiAgICAgIGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICAgKGFjYywgdXAsIHVlKSA9PiB7ZmluZF9pbl9sZXQobmFtZSwgdXAsIHVlLCBhY2MpfSxcbiAgICAgICAgbCxcbiAgICAgICAgcGwsXG4gICAgICAgIHVsLFxuICAgICAgKTtcbiAgICB9XG4gIHwgKFZhcihfKSwgXylcbiAgfCAoVHVwbGUoXyksIF8pXG4gIHwgKFxuICAgICAgRW1wdHlIb2xlIHwgV2lsZCB8IEludmFsaWQoXykgfCBNdWx0aUhvbGUoXykgfCBJbnQoXykgfCBGbG9hdChfKSB8IEJvb2woXykgfFxuICAgICAgU3RyaW5nKF8pIHxcbiAgICAgIExpc3RMaXQoXykgfFxuICAgICAgQ29uc3RydWN0b3IoXykgfFxuICAgICAgQ29ucyhfLCBfKSB8XG4gICAgICBBcChfLCBfKSxcbiAgICAgIF8sXG4gICAgKSA9PiBsXG4gIH07XG59O1xuXG4vKlxuIEZpbmQgYW55IGZ1bmN0aW9uIGV4cHJlc3Npb25zIGluIHVleHAgdGhhdCBhcmUgYm91bmQgdG8gdmFyaWFibGUgbmFtZVxuICovXG5sZXQgcmVjIGZpbmRfZm4gPVxuICAgICAgICAobmFtZTogc3RyaW5nLCB1ZXhwOiBVRXhwLnQsIGw6IGxpc3QoVUV4cC50KSk6IGxpc3QoVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgTGV0KHVwLCBkZWYsIGJvZHkpID0+XG4gICAgbCB8PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmKSB8PiBmaW5kX2ZuKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdCh1bClcbiAgfCBUdXBsZSh1bCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1MSkgPT4ge2ZpbmRfZm4obmFtZSwgdTEsIGFjYyl9LCBsLCB1bClcbiAgfCBUeXBGdW4oXywgYm9keSwgXylcbiAgfCBGaXhGKF8sIGJvZHksIF8pXG4gIHwgRnVuKF8sIGJvZHksIF8sIF8pID0+IGwgfD4gZmluZF9mbihuYW1lLCBib2R5KVxuICB8IFR5cEFwKHUxLCBfKVxuICB8IFBhcmVucyh1MSlcbiAgfCBDYXN0KHUxLCBfLCBfKVxuICB8IFVuT3AoXywgdTEpXG4gIHwgVHlBbGlhcyhfLCBfLCB1MSlcbiAgfCBUZXN0KHUxKVxuICB8IENsb3N1cmUoXywgdTEpXG4gIHwgRmlsdGVyKF8sIHUxKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpXG4gIHwgQXAoXywgdTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpIHw+IGZpbmRfZm4obmFtZSwgdTMpXG4gIHwgRGVmZXJyZWRBcChmbiwgYXJncykgPT5cbiAgICBsXG4gICAgfD4gZmluZF9mbihuYW1lLCBmbilcbiAgICB8PiBMaXN0LmZvbGRfbGVmdCgobCwgdSkgPT4gZmluZF9mbihuYW1lLCB1LCBsKSwgXywgYXJncylcbiAgfCBNYXRjaCh1MSwgdWwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCAoXywgdWUpKSA9PiB7ZmluZF9mbihuYW1lLCB1ZSwgYWNjKX0sXG4gICAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpLFxuICAgICAgdWwsXG4gICAgKVxuICB8IEVtcHR5SG9sZVxuICB8IERlZmVycmFsKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgfCBGYWlsZWRDYXN0KF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBCdWlsdGluRnVuKF8pXG4gIHwgVmFyKF8pID0+IGxcbiAgfTtcbn07XG5cbi8qXG4gRmluZHMgd2hldGhlciB2YXJpYWJsZSBuYW1lIGlzIGV2ZXIgbWVudGlvbmVkIGluIHVwYXQuXG4gKi9cbmxldCByZWMgdmFyX21lbnRpb25fdXBhdCA9IChuYW1lOiBzdHJpbmcsIHVwYXQ6IFBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFdpbGRcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVwKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApfSxcbiAgICAgIGZhbHNlLFxuICAgICAgbCxcbiAgICApXG4gIHwgUGFyZW5zKHVwKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB8IEFwKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBDYXN0KHVwLCBfLCBfKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbiA9IChuYW1lOiBzdHJpbmcsIHVleHA6IEV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHksIF8sIF8pID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfbWVudGlvbihuYW1lLCBkZWYpIHx8IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUsIF8pXG4gIHwgVHlwQXAodSwgXylcbiAgfCBUZXN0KHUpXG4gIHwgUGFyZW5zKHUpXG4gIHwgVW5PcChfLCB1KVxuICB8IFR5QWxpYXMoXywgXywgdSlcbiAgfCBGaWx0ZXIoXywgdSkgPT4gdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBEeW5hbWljRXJyb3JIb2xlKHUsIF8pID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgRmFpbGVkQ2FzdCh1LCBfLCBfKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEZpeEYoYXJncywgYm9keSwgXykgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IENsb3N1cmUoXywgdSkgPT4gdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBCdWlsdGluRnVuKF8pID0+IGZhbHNlXG4gIHwgQ2FzdChkLCBfLCBfKSA9PiB2YXJfbWVudGlvbihuYW1lLCBkKVxuICB8IEFwKF8sIHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCBMaXN0LmV4aXN0cyh2YXJfbWVudGlvbihuYW1lKSwgdXMpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBhcHBsaWVkIG9uIGFub3RoZXIgZXhwcmVzc3Npb24uXG4gaS5lLiBBcChWYXIobmFtZSksIHUpIG9jY3VycyBhbnl3aGVyZSBpbiB0aGUgdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfYXBwbGllZCA9IChuYW1lOiBzdHJpbmcsIHVleHA6IEV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRGVmZXJyYWwoXykgPT4gZmFsc2VcbiAgfCBGdW4oYXJncywgYm9keSwgXywgXylcbiAgfCBGaXhGKGFyZ3MsIGJvZHksIF8pID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfYXBwbGllZChuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBkZWYpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUsIF8pXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIHUpID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUpXG4gIHwgVHlwQXAodSwgXykgPT5cbiAgICBzd2l0Y2ggKHUudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBmYWxzZVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICAgIH1cbiAgfCBEeW5hbWljRXJyb3JIb2xlKF8pID0+IGZhbHNlXG4gIHwgRmFpbGVkQ2FzdChfKSA9PiBmYWxzZVxuICAvLyBUaGlzIGNhc2Ugc2hvdWxkbid0IGNvbWUgdXAhXG4gIHwgQ2xvc3VyZShfKSA9PiBmYWxzZVxuICB8IEJ1aWx0aW5GdW4oXykgPT4gZmFsc2VcbiAgfCBDYXN0KGQsIF8sIF8pID0+IHZhcl9hcHBsaWVkKG5hbWUsIGQpXG4gIHwgQXAoXywgdTEsIHUyKSA9PlxuICAgIHN3aXRjaCAodTEudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIH1cbiAgfCBEZWZlcnJlZEFwKHUxLCB1cykgPT5cbiAgICBzd2l0Y2ggKHUxLnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogTGlzdC5leGlzdHModmFyX2FwcGxpZWQobmFtZSksIHVzKVxuICAgIHwgXyA9PiBMaXN0LmV4aXN0cyh2YXJfYXBwbGllZChuYW1lKSwgdXMpXG4gICAgfVxuICB8IENvbnModTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIENoZWNrIHdoZXRoZXIgYWxsIGZ1bmN0aW9ucyBib3VuZCB0byB2YXJpYWJsZSBuYW1lIGFyZSByZWN1cnNpdmUuXG4gKi9cbmxldCBpc19yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBFeHAudCk6IGJvb2wgPT4ge1xuICBsZXQgZm5fYm9kaWVzID0gW10gfD4gZmluZF9mbihuYW1lLCB1ZXhwKTtcbiAgaWYgKExpc3QubGVuZ3RoKGZuX2JvZGllcykgPT0gMCkge1xuICAgIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdWUpID0+IHthY2MgJiYgdmFyX21lbnRpb24obmFtZSwgdWUpfSxcbiAgICAgIHRydWUsXG4gICAgICBmbl9ib2RpZXMsXG4gICAgKTtcbiAgfTtcbn07XG5cbi8qXG4gQ2hlY2sgaWYgdmFyaWFibGUgbmFtZSBpcyBub3QgbWVudGlvbmVkIGFueXdoZXJlIG91dHNpZGUgb2ZcbiBhIHRhaWwgcG9zaXRpb24gaW4gdWV4cC4gTm90ZSB0aGF0IGlmIHRoZSB2YXJpYWJsZSBpcyBub3RcbiBtZW50aW9uZWQgYW55d2hlcmUgaW4gdGhlIGV4cHJlc3Npb24sIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUuXG4gKi9cbmxldCByZWMgdGFpbF9jaGVjayA9IChuYW1lOiBzdHJpbmcsIHVleHA6IEV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgRW1wdHlIb2xlXG4gIHwgRGVmZXJyYWwoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICB8IEZhaWxlZENhc3QoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKVxuICB8IEJ1aWx0aW5GdW4oXykgPT4gdHJ1ZVxuICB8IEZpeEYoYXJncywgYm9keSwgXylcbiAgfCBGdW4oYXJncywgYm9keSwgXywgXykgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApIHx8IHZhcl9tZW50aW9uKG5hbWUsIGRlZilcbiAgICAgID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgLy9JZiBsIGhhcyBubyByZWN1cnNpdmUgY2FsbHMgdGhlbiB0cnVlXG4gICAgIUxpc3QuZm9sZF9sZWZ0KChhY2MsIHVlKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sIGZhbHNlLCBsKVxuICB8IFRlc3QoXykgPT4gZmFsc2VcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgQ2FzdCh1LCBfLCBfKVxuICB8IEZpbHRlcihfLCB1KVxuICB8IENsb3N1cmUoXywgdSlcbiAgfCBUeXBGdW4oXywgdSwgXylcbiAgfCBUeXBBcCh1LCBfKVxuICB8IFBhcmVucyh1KSA9PiB0YWlsX2NoZWNrKG5hbWUsIHUpXG4gIHwgVW5PcChfLCB1KSA9PiAhdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBBcChfLCB1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUyKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MSlcbiAgfCBEZWZlcnJlZEFwKGZuLCBhcmdzKSA9PlxuICAgIHRhaWxfY2hlY2sobmFtZSwgQXAoRm9yd2FyZCwgZm4sIFR1cGxlKGFyZ3MpIHw+IEV4cC5mcmVzaCkgfD4gRXhwLmZyZXNoKVxuICB8IFNlcSh1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUxKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MilcbiAgfCBDb25zKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+ICEodmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKSlcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKVxuICAgICAgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpICYmIHRhaWxfY2hlY2sobmFtZSwgdTMpXG4gIHwgTWF0Y2goZywgbCkgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCBnKVxuICAgICAgPyBmYWxzZVxuICAgICAgOiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCAocCwgZSkpID0+IHtcbiAgICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyAmJiB0YWlsX2NoZWNrKG5hbWUsIGUpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICAgIGwsXG4gICAgICAgIClcbiAgfTtcbn07XG5cbi8qXG4gQ2hlY2sgd2hldGhlciBhbGwgZnVuY3Rpb25zIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgYXJlIHRhaWwgcmVjdXJzaXZlLlxuICovXG5sZXQgaXNfdGFpbF9yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBVRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKSAmJiB0YWlsX2NoZWNrKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG5sZXQgY2hlY2sgPSAodWV4cDogVUV4cC50LCBwcmVkaWNhdGVzOiBsaXN0KFVFeHAudCA9PiBib29sKSk6IHN5bnRheF9yZXN1bHQgPT4ge1xuICBsZXQgcmVzdWx0cyA9IExpc3QubWFwKHByZWQgPT4ge3VleHAgfD4gcHJlZH0sIHByZWRpY2F0ZXMpO1xuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGgocHJlZGljYXRlcyk7XG4gIGxldCBwYXNzaW5nID0gVXRpbC5MaXN0VXRpbC5jb3VudF9wcmVkKHJlcyA9PiByZXMsIHJlc3VsdHMpO1xuXG4gIHtcbiAgICByZXN1bHRzLFxuICAgIHBlcmNlbnRhZ2U6XG4gICAgICAvL3ZhY3VvdXNseSBwYXNzZXMgaWYgdGhlcmUgYXJlIG5vIHRlc3RzXG4gICAgICBsZW5ndGggPT0gMCA/IDEuIDogZmxvYXRfb2ZfaW50KHBhc3NpbmcpIC8uIGZsb2F0X29mX2ludChsZW5ndGgpLFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwcmVkaWNhdGUgPVxuICB8IFZhckFwcGxpZWQoc3RyaW5nKVxuICB8IElzUmVjdXJzaXZlKHN0cmluZylcbiAgfCBJc05vdFJlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNUYWlsUmVjdXJzaXZlKHN0cmluZyk7XG5cbmxldCBwcmVkaWNhdGVfZm4gPSBwcmVkaWNhdGUgPT4ge1xuICBzd2l0Y2ggKHByZWRpY2F0ZSkge1xuICB8IFZhckFwcGxpZWQobmFtZSkgPT4gdmFyX2FwcGxpZWQobmFtZSlcbiAgfCBJc1JlY3Vyc2l2ZShuYW1lKSA9PiBpc19yZWN1cnNpdmUobmFtZSlcbiAgfCBJc05vdFJlY3Vyc2l2ZShuYW1lKSA9PiAodWV4cCA9PiAhaXNfcmVjdXJzaXZlKG5hbWUsIHVleHApKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShuYW1lKSA9PiBpc190YWlsX3JlY3Vyc2l2ZShuYW1lKVxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxubW9kdWxlIHR5cGUgRXhlcmNpc2VFbnYgPSB7XG4gIHR5cGUgbm9kZTtcbiAgbGV0IGRlZmF1bHQ6IG5vZGU7XG4gIGxldCBvdXRwdXRfaGVhZGVyOiBzdHJpbmcgPT4gc3RyaW5nO1xufTtcblxubGV0IG91dHB1dF9oZWFkZXJfZ3JhZGluZyA9IF9tb2R1bGVfbmFtZSA9PlxuICBcIm1vZHVsZSBFeGVyY2lzZSA9IEdyYWRlUHJlbHVkZS5FeGVyY2lzZVxcblwiICsrIFwibGV0IHByb21wdCA9ICgpXFxuXCI7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZUVudikgPT4ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgd3JvbmdfaW1wbCgnY29kZSkgPSB7XG4gICAgaW1wbDogJ2NvZGUsXG4gICAgaGludDogc3RyaW5nLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaWRkZW5fdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaW50ID0gc3RyaW5nO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdCA9IChoaW50LCBTeW50YXhUZXN0LnByZWRpY2F0ZSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0cyA9IGxpc3Qoc3ludGF4X3Rlc3QpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB5b3VyX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgcmVxdWlyZWQ6IGludCxcbiAgICBwcm92aWRlZDogaW50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludF9kaXN0cmlidXRpb24gPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiBpbnQsXG4gICAgbXV0YXRpb25fdGVzdGluZzogaW50LFxuICAgIGltcGxfZ3JhZGluZzogaW50LFxuICB9O1xuXG4gIGxldCB2YWxpZGF0ZV9wb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgKHt0ZXN0X3ZhbGlkYXRpb24sIG11dGF0aW9uX3Rlc3RpbmcsIGltcGxfZ3JhZGluZ306IHBvaW50X2Rpc3RyaWJ1dGlvbikgPT5cbiAgICB0ZXN0X3ZhbGlkYXRpb24gKyBtdXRhdGlvbl90ZXN0aW5nICsgaW1wbF9ncmFkaW5nID09IDEwMFxuICAgICAgPyAoKSA6IGZhaWx3aXRoKFwiSW52YWxpZCBwb2ludCBkaXN0cmlidXRpb24gaW4gZXhlcmNpc2UuXCIpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwKCdjb2RlKSA9IHtcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHZlcnNpb246IGludCxcbiAgICBtb2R1bGVfbmFtZTogc3RyaW5nLFxuICAgIHByb21wdDpcbiAgICAgIFtAcHJpbnRlciAoZm10LCBfKSA9PiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJwcm9tcHRcIildIFtAb3BhcXVlXSBFeGVyY2lzZUVudi5ub2RlLFxuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICBwcmVsdWRlOiAnY29kZSxcbiAgICBjb3JyZWN0X2ltcGw6ICdjb2RlLFxuICAgIHlvdXJfdGVzdHM6IHlvdXJfdGVzdHMoJ2NvZGUpLFxuICAgIHlvdXJfaW1wbDogJ2NvZGUsXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbCgnY29kZSkpLFxuICAgIGhpZGRlbl90ZXN0czogaGlkZGVuX3Rlc3RzKCdjb2RlKSxcbiAgICBzeW50YXhfdGVzdHMsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGtleSA9IChzdHJpbmcsIGludCk7XG5cbiAgbGV0IGtleV9vZiA9IHAgPT4ge1xuICAgIChwLnRpdGxlLCBwLnZlcnNpb24pO1xuICB9O1xuXG4gIGxldCBmaW5kX2tleV9vcHQgPSAoa2V5LCBzcGVjczogbGlzdChwKCdjb2RlKSkpID0+IHtcbiAgICBzcGVjcyB8PiBVdGlsLkxpc3RVdGlsLmZpbmRpX29wdChzcGVjID0+IGtleV9vZihzcGVjKSA9PSBrZXkpO1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb3MgPVxuICAgIHwgUHJlbHVkZVxuICAgIHwgQ29ycmVjdEltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IFlvdXJJbXBsXG4gICAgfCBIaWRkZW5CdWdzKGludClcbiAgICB8IEhpZGRlblRlc3RzO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzcGVjID0gcChaaXBwZXIudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRyYW5zaXRpb25hcnlfc3BlYyA9IHAoQ29kZVN0cmluZy50KTtcblxuICBsZXQgbWFwID0gKHA6IHAoJ2EpLCBmOiAnYSA9PiAnYik6IHAoJ2IpID0+IHtcbiAgICB7XG4gICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgIHZlcnNpb246IHAudmVyc2lvbixcbiAgICAgIG1vZHVsZV9uYW1lOiBwLm1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBwLnByb21wdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogcC5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlOiBmKHAucHJlbHVkZSksXG4gICAgICBjb3JyZWN0X2ltcGw6IGYocC5jb3JyZWN0X2ltcGwpLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogZihwLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgICByZXF1aXJlZDogcC55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogcC55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbDogZihwLnlvdXJfaW1wbCksXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgcC5oaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHtcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBpbXBsOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3Qod3JvbmdfaW1wbC5pbXBsKSxcbiAgICAgICAgICAgICAgIGhpbnQ6IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgIH0pLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QocC5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgICAgICBoaW50czogcC5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBwLnN5bnRheF90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBlZHMgPSBwKEVkaXRvci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3RhdGUgPSB7ZWRzfTtcblxuICBsZXQga2V5X29mX3N0YXRlID0gKHtlZHMsIF99KSA9PiBrZXlfb2YoZWRzKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudF9zdGF0ZSA9IGxpc3QoKHBvcywgUGVyc2lzdGVudFppcHBlci50KSk7XG5cbiAgbGV0IG1haW5fZWRpdG9yX29mX3N0YXRlID0gKH5zZWxlY3Rpb246IHBvcywge2Vkc30pID0+XG4gICAgc3dpdGNoIChzZWxlY3Rpb24pIHtcbiAgICB8IFByZWx1ZGUgPT4gZWRzLnByZWx1ZGVcbiAgICB8IENvcnJlY3RJbXBsID0+IGVkcy5jb3JyZWN0X2ltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICB8IFlvdXJJbXBsID0+IGVkcy55b3VyX2ltcGxcbiAgICB8IEhpZGRlbkJ1Z3MoaSkgPT4gTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBpKS5pbXBsXG4gICAgfCBIaWRkZW5UZXN0cyA9PiBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXG4gICAgfTtcblxuICBsZXQgcHV0X21haW5fZWRpdG9yID0gKH5zZWxlY3Rpb246IHBvcywge2Vkc306IHN0YXRlLCBlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgIHN3aXRjaCAoc2VsZWN0aW9uKSB7XG4gICAgfCBQcmVsdWRlID0+IHtcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHByZWx1ZGU6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IENvcnJlY3RJbXBsID0+IHtcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGNvcnJlY3RfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMueW91cl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJJbXBsID0+IHtcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHlvdXJfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgSGlkZGVuQnVncyhuKSA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgICAgIFV0aWwuTGlzdFV0aWwucHV0X250aChcbiAgICAgICAgICAgICAgbixcbiAgICAgICAgICAgICAgey4uLkxpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgbiksIGltcGw6IGVkaXRvcn0sXG4gICAgICAgICAgICAgIGVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy5oaWRkZW5fdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZWRpdG9ycyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1xuICAgICAgZWRzLnByZWx1ZGUsXG4gICAgICBlZHMuY29ycmVjdF9pbXBsLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX2ltcGwsXG4gICAgXVxuICAgIEAgTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB3cm9uZ19pbXBsLmltcGwsIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXTtcblxuICBsZXQgZWRpdG9yX3Bvc2l0aW9ucyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1ByZWx1ZGUsIENvcnJlY3RJbXBsLCBZb3VyVGVzdHNUZXN0aW5nLCBZb3VyVGVzdHNWYWxpZGF0aW9uLCBZb3VySW1wbF1cbiAgICBAIExpc3QubWFwaSgoaSwgXykgPT4gSGlkZGVuQnVncyhpKSwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW0hpZGRlblRlc3RzXTtcblxuICBsZXQgcG9zaXRpb25lZF9lZGl0b3JzID0gc3RhdGUgPT5cbiAgICBMaXN0LmNvbWJpbmUoZWRpdG9yX3Bvc2l0aW9ucyhzdGF0ZSksIGVkaXRvcnMoc3RhdGUpKTtcblxuICBsZXQgaWR4X29mX3BvcyA9IChwb3MsIHA6IHAoJ2NvZGUpKSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IDBcbiAgICB8IENvcnJlY3RJbXBsID0+IDFcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gMlxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiAzXG4gICAgfCBZb3VySW1wbCA9PiA0XG4gICAgfCBIaWRkZW5CdWdzKGkpID0+XG4gICAgICBpZiAoaSA8IExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIDUgKyBpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJpbnZhbGlkIGhpZGRlbiBidWcgaW5kZXhcIik7XG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncylcbiAgICB9O1xuXG4gIGxldCBwb3Nfb2ZfaWR4ID0gKHA6IHAoJ2NvZGUpLCBpZHg6IGludCkgPT5cbiAgICBzd2l0Y2ggKGlkeCkge1xuICAgIHwgMCA9PiBQcmVsdWRlXG4gICAgfCAxID0+IENvcnJlY3RJbXBsXG4gICAgfCAyID0+IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IDMgPT4gWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgNCA9PiBZb3VySW1wbFxuICAgIHwgXyA9PlxuICAgICAgaWYgKGlkeCA8IDApIHtcbiAgICAgICAgZmFpbHdpdGgoXCJuZWdhdGl2ZSBpZHhcIik7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA8IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5CdWdzKGlkeCAtIDUpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPT0gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlblRlc3RzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJlbGVtZW50IGlkeFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCB6aXBwZXJfb2ZfY29kZSA9IGNvZGUgPT4ge1xuICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKGNvZGUpKSB7XG4gICAgfCBOb25lID0+IGZhaWx3aXRoKFwiVHJhbnNpdGlvbiBmYWlsZWQuXCIpXG4gICAgfCBTb21lKHppcHBlcikgPT4gemlwcGVyXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbjogdHJhbnNpdGlvbmFyeV9zcGVjID0+IHNwZWMgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH0sXG4gICAgKSA9PiB7XG4gICAgICBsZXQgcHJlbHVkZSA9IHppcHBlcl9vZl9jb2RlKHByZWx1ZGUpO1xuICAgICAgbGV0IGNvcnJlY3RfaW1wbCA9IHppcHBlcl9vZl9jb2RlKGNvcnJlY3RfaW1wbCk7XG4gICAgICBsZXQgeW91cl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHRlc3RzID0gemlwcGVyX29mX2NvZGUoeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgcmVxdWlyZWQ6IHlvdXJfdGVzdHMucmVxdWlyZWQsIHByb3ZpZGVkOiB5b3VyX3Rlc3RzLnByb3ZpZGVkfTtcbiAgICAgIH07XG4gICAgICBsZXQgeW91cl9pbXBsID0gemlwcGVyX29mX2NvZGUoeW91cl9pbXBsKTtcbiAgICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGltcGwgPSB6aXBwZXJfb2ZfY29kZShpbXBsKTtcbiAgICAgICAgICAgIGFjYyBAIFt7aW1wbCwgaGludH1dO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICk7XG4gICAgICBsZXQgaGlkZGVuX3Rlc3RzID0ge1xuICAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHRlc3RzKTtcbiAgICAgICAge3Rlc3RzLCBoaW50c307XG4gICAgICB9O1xuICAgICAge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICBwcmVsdWRlLFxuICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiA9IHppcHBlciA9PiBFZGl0b3IuaW5pdCh6aXBwZXIpO1xuICBsZXQgZWRzX29mX3NwZWM6IHNwZWMgPT4gZWRzID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9LFxuICAgICkgPT4ge1xuICAgICAgbGV0IHByZWx1ZGUgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihwcmVsdWRlKTtcbiAgICAgIGxldCBjb3JyZWN0X2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihjb3JyZWN0X2ltcGwpO1xuICAgICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgICB9O1xuICAgICAgbGV0IHlvdXJfaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHlvdXJfaW1wbCk7XG4gICAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgICBoaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCgoe2ltcGwsIGhpbnR9KSA9PiB7XG4gICAgICAgICAgICAgbGV0IGltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihpbXBsKTtcbiAgICAgICAgICAgICB7aW1wbCwgaGludH07XG4gICAgICAgICAgIH0pO1xuICAgICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgICBsZXQgdGVzdHMgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih0ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgICAgfTtcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH07XG4gICAgfTtcblxuICAvL1xuICAvLyBPbGQgdmVyc2lvbiBvZiBhYm92ZSB0aGF0IGRpZCBzdHJpbmctYmFzZWQgcGFyc2luZywgbWF5IGJlIHVzZWZ1bFxuICAvLyBmb3IgdHJhbnNpdGlvbnMgYmV0d2VlbiB6aXBwZXIgZGF0YSBzdHJ1Y3R1cmUgdmVyc2lvbnMgKFRPRE8pXG4gIC8vXG4gIC8vIGxldCBlZGl0b3Jfb2ZfY29kZSA9IChpbml0X2lkLCBjb2RlKSA9PlxuICAvLyAgIHN3aXRjaCAoRWRpdG9yVXRpbC5lZGl0b3Jfb2ZfY29kZShpbml0X2lkLCBjb2RlKSkge1xuICAvLyAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIkV4ZXJjaXNlIGVycm9yOiBpbnZhbGlkIGNvZGVcIilcbiAgLy8gICB8IFNvbWUoeCkgPT4geFxuICAvLyAgIH07XG4gIC8vIGxldCBlZHNfb2Zfc3BlYzogc3BlYyA9PiBlZHMgPVxuICAvLyAgIChcbiAgLy8gICAgIHtcbiAgLy9cbiAgLy8gICAgICAgdGl0bGUsXG4gIC8vICAgICAgIHZlcnNpb24sXG4gIC8vICAgICAgIHByb21wdCxcbiAgLy8gICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAvLyAgICAgICBwcmVsdWRlLFxuICAvLyAgICAgICBjb3JyZWN0X2ltcGwsXG4gIC8vICAgICAgIHlvdXJfdGVzdHMsXG4gIC8vICAgICAgIHlvdXJfaW1wbCxcbiAgLy8gICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgLy8gICAgIH0sXG4gIC8vICAgKSA9PiB7XG4gIC8vICAgICBsZXQgaWQgPSBuZXh0X2lkO1xuICAvLyAgICAgbGV0IChpZCwgcHJlbHVkZSkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgcHJlbHVkZSk7XG4gIC8vICAgICBsZXQgKGlkLCBjb3JyZWN0X2ltcGwpID0gZWRpdG9yX29mX2NvZGUoaWQsIGNvcnJlY3RfaW1wbCk7XG4gIC8vICAgICBsZXQgKGlkLCB5b3VyX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IChpZCwgdGVzdHMpID0gZWRpdG9yX29mX2NvZGUoaWQsIHlvdXJfdGVzdHMudGVzdHMpO1xuICAvLyAgICAgICAoXG4gIC8vICAgICAgICAgaWQsXG4gIC8vICAgICAgICAge1xuICAvLyAgICAgICAgICAgdGVzdHMsXG4gIC8vICAgICAgICAgICBudW1fcmVxdWlyZWQ6IHlvdXJfdGVzdHMubnVtX3JlcXVpcmVkLFxuICAvLyAgICAgICAgICAgbWluaW11bTogeW91cl90ZXN0cy5taW5pbXVtLFxuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9O1xuICAvLyAgICAgbGV0IChpZCwgeW91cl9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX2J1Z3MpID1cbiAgLy8gICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gIC8vICAgICAgICAgKChpZCwgYWNjKSwge2ltcGwsIGhpbnR9KSA9PiB7XG4gIC8vICAgICAgICAgICBsZXQgKGlkLCBpbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBpbXBsKTtcbiAgLy8gICAgICAgICAgIChpZCwgYWNjIEAgW3tpbXBsLCBoaW50fV0pO1xuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICAgKGlkLCBbXSksXG4gIC8vICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgICk7XG4gIC8vICAgICBsZXQgKGlkLCBoaWRkZW5fdGVzdHMpID0ge1xuICAvLyAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB0ZXN0cyk7XG4gIC8vICAgICAgIChpZCwge3Rlc3RzLCBoaW50c30pO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIHtcbiAgLy8gICAgICAgbmV4dF9pZDogaWQsXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9O1xuICAvLyAgIH07XG5cbiAgbGV0IHNldF9pbnN0cnVjdG9yX21vZGUgPSAoe2Vkc306IHN0YXRlLCBuZXdfbW9kZTogYm9vbCkgPT4ge1xuICAgIGVkczoge1xuICAgICAgLi4uZWRzLFxuICAgICAgcHJlbHVkZTogRWRpdG9yLnNldF9yZWFkX29ubHkoZWRzLnByZWx1ZGUsICFuZXdfbW9kZSksXG4gICAgfSxcbiAgfTtcblxuICBsZXQgdmlzaWJsZV9pbiA9IChwb3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0cnVlXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IGZhbHNlXG4gICAgfCBZb3VySW1wbCA9PiB0cnVlXG4gICAgfCBIaWRkZW5CdWdzKF8pID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGVfb2Zfc3BlYyA9IChzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKTogc3RhdGUgPT4ge1xuICAgIGxldCBlZHMgPSBlZHNfb2Zfc3BlYyhzcGVjKTtcbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKHtlZHM6IGVkc30sIGluc3RydWN0b3JfbW9kZSk7XG4gIH07XG5cbiAgbGV0IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc3RhdGUgPSAoc3RhdGU6IHN0YXRlLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKSA9PiB7XG4gICAgbGV0IHppcHBlcnMgPVxuICAgICAgcG9zaXRpb25lZF9lZGl0b3JzKHN0YXRlKVxuICAgICAgfD4gTGlzdC5maWx0ZXIoKChwb3MsIF8pKSA9PiB2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpXG4gICAgICB8PiBMaXN0Lm1hcCgoKHBvcywgZWRpdG9yKSkgPT4ge1xuICAgICAgICAgICAocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoRWRpdG9yLihlZGl0b3Iuc3RhdGUuemlwcGVyKSkpXG4gICAgICAgICB9KTtcbiAgICB6aXBwZXJzO1xuICB9O1xuXG4gIGxldCB1bnBlcnNpc3Rfc3RhdGUgPVxuICAgICAgKFxuICAgICAgICBwb3NpdGlvbmVkX3ppcHBlcnM6IHBlcnNpc3RlbnRfc3RhdGUsXG4gICAgICAgIH5zcGVjOiBzcGVjLFxuICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sLFxuICAgICAgKVxuICAgICAgOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGxvb2t1cCA9IChwb3MsIGRlZmF1bHQpID0+XG4gICAgICBpZiAodmlzaWJsZV9pbihwb3MsIH5pbnN0cnVjdG9yX21vZGUpKSB7XG4gICAgICAgIGxldCBwZXJzaXN0ZWRfemlwcGVyID0gTGlzdC5hc3NvYyhwb3MsIHBvc2l0aW9uZWRfemlwcGVycyk7XG4gICAgICAgIGxldCB6aXBwZXIgPSBQZXJzaXN0ZW50WmlwcGVyLnVucGVyc2lzdChwZXJzaXN0ZWRfemlwcGVyKTtcbiAgICAgICAgRWRpdG9yLmluaXQoemlwcGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKGRlZmF1bHQpO1xuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9IGxvb2t1cChQcmVsdWRlLCBzcGVjLnByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBsb29rdXAoQ29ycmVjdEltcGwsIHNwZWMuY29ycmVjdF9pbXBsKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IGxvb2t1cChZb3VyVGVzdHNWYWxpZGF0aW9uLCBzcGVjLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBsb29rdXAoWW91ckltcGwsIHNwZWMueW91cl9pbXBsKTtcbiAgICBsZXQgKF8sIGhpZGRlbl9idWdzKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKChpLCBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSkpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICBsZXQgaW1wbCA9IGxvb2t1cChIaWRkZW5CdWdzKGkpLCBpbXBsKTtcbiAgICAgICAgICAoaSArIDEsIGhpZGRlbl9idWdzIEAgW3tpbXBsLCBoaW50fV0pO1xuICAgICAgICB9LFxuICAgICAgICAoMCwgW10pLFxuICAgICAgICBzcGVjLmhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gbG9va3VwKEhpZGRlblRlc3RzLCBzcGVjLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG5cbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKFxuICAgICAge1xuICAgICAgICBlZHM6IHtcbiAgICAgICAgICB0aXRsZTogc3BlYy50aXRsZSxcbiAgICAgICAgICB2ZXJzaW9uOiBzcGVjLnZlcnNpb24sXG4gICAgICAgICAgbW9kdWxlX25hbWU6IHNwZWMubW9kdWxlX25hbWUsXG4gICAgICAgICAgcHJvbXB0OiBzcGVjLnByb21wdCxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb246IHNwZWMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHByZWx1ZGUsXG4gICAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHNwZWMueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgICAgIHByb3ZpZGVkOiBzcGVjLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICAgICAgaGludHM6IHNwZWMuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3ludGF4X3Rlc3RzOiBzcGVjLnN5bnRheF90ZXN0cyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBpbnN0cnVjdG9yX21vZGUsXG4gICAgKTtcbiAgfTtcblxuICAvLyAjIFN0aXRjaGluZ1xuXG4gIG1vZHVsZSBUZXJtSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXJtOiBFeHAudCxcbiAgICAgIHRlcm1fcmFuZ2VzOiBUZXJtUmFuZ2VzLnQsXG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgU3RhdGljc0l0ZW0gPSB7XG4gICAgdHlwZSB0ID0gQ2FjaGVkU3RhdGljcy5zdGF0aWNzO1xuICB9O1xuXG4gIHR5cGUgc3RpdGNoZWQoJ2EpID0ge1xuICAgIHRlc3RfdmFsaWRhdGlvbjogJ2EsIC8vIHByZWx1ZGUgKyBjb3JyZWN0X2ltcGwgKyB5b3VyX3Rlc3RzXG4gICAgdXNlcl9pbXBsOiAnYSwgLy8gcHJlbHVkZSArIHlvdXJfaW1wbFxuICAgIHVzZXJfdGVzdHM6ICdhLCAvLyBwcmVsdWRlICsgeW91cl9pbXBsICsgeW91cl90ZXN0c1xuICAgIHByZWx1ZGU6ICdhLCAvLyBwcmVsdWRlXG4gICAgaW5zdHJ1Y3RvcjogJ2EsIC8vIHByZWx1ZGUgKyBjb3JyZWN0X2ltcGwgKyBoaWRkZW5fdGVzdHMudGVzdHMgLy8gVE9ETyBvbmx5IG5lZWRzIHRvIHJ1biBpbiBpbnN0cnVjdG9yIG1vZGVcbiAgICBoaWRkZW5fYnVnczogbGlzdCgnYSksIC8vIHByZWx1ZGUgKyBoaWRkZW5fYnVnc1tpXS5pbXBsICsgeW91cl90ZXN0cyxcbiAgICBoaWRkZW5fdGVzdHM6ICdhLFxuICB9O1xuXG4gIGxldCB3cmFwX2ZpbHRlciA9IChhY3Q6IEZpbHRlckFjdGlvbi5hY3Rpb24sIHRlcm06IFVFeHAudCk6IFVFeHAudCA9PlxuICAgIEV4cC57XG4gICAgICB0ZXJtOlxuICAgICAgICBFeHAuRmlsdGVyKFxuICAgICAgICAgIEZpbHRlcih7XG4gICAgICAgICAgICBhY3Q6IEZpbHRlckFjdGlvbi4oYWN0LCBPbmUpLFxuICAgICAgICAgICAgcGF0OiB7XG4gICAgICAgICAgICAgIHRlcm06IENvbnN0cnVjdG9yKFwiJGVcIiksXG4gICAgICAgICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgICAgICAgIGlkczogW0lkLm1rKCldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICApLFxuICAgICAgY29waWVkOiBmYWxzZSxcbiAgICAgIGlkczogW0lkLm1rKCldLFxuICAgIH07XG5cbiAgbGV0IHdyYXAgPSAodGVybSwgZWRpdG9yOiBFZGl0b3IudCk6IFRlcm1JdGVtLnQgPT4ge1xuICAgIHRlcm0sXG4gICAgdGVybV9yYW5nZXM6IGVkaXRvci5zdGF0ZS5tZXRhLnRlcm1fcmFuZ2VzLFxuICB9O1xuXG4gIGxldCB0ZXJtX29mID0gKGVkaXRvcjogRWRpdG9yLnQpOiBVRXhwLnQgPT4gZWRpdG9yLnN0YXRlLm1ldGEudmlld190ZXJtO1xuXG4gIGxldCBzdGl0Y2gzID0gKGVkMTogRWRpdG9yLnQsIGVkMjogRWRpdG9yLnQsIGVkMzogRWRpdG9yLnQpID0+XG4gICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKFxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHRlcm1fb2YoZWQxKSwgdGVybV9vZihlZDIpKSxcbiAgICAgIHRlcm1fb2YoZWQzKSxcbiAgICApO1xuXG4gIGxldCBzdGl0Y2hfdGVybSA9ICh7ZWRzLCBffTogc3RhdGUpOiBzdGl0Y2hlZChUZXJtSXRlbS50KSA9PiB7XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfaW1wbF90ZXJtID0ge1xuICAgICAgbGV0IHlvdXJfaW1wbF90ZXJtID1cbiAgICAgICAgZWRzLnlvdXJfaW1wbCB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5TdGVwKTtcbiAgICAgIGxldCBwcmVsdWRlX3Rlcm0gPVxuICAgICAgICBlZHMucHJlbHVkZSB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5FdmFsKTtcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChwcmVsdWRlX3Rlcm0sIHlvdXJfaW1wbF90ZXJtKTtcbiAgICB9O1xuICAgIGxldCB0ZXN0X3ZhbGlkYXRpb25fdGVybSA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLnlvdXJfdGVzdHMudGVzdHMpKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IHdyYXAodGVzdF92YWxpZGF0aW9uX3Rlcm0sIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgIHVzZXJfaW1wbDogd3JhcCh1c2VyX2ltcGxfdGVybSwgZWRzLnlvdXJfaW1wbCksXG4gICAgICB1c2VyX3Rlc3RzOiB3cmFwKHVzZXJfdGVzdHNfdGVybSwgZWRzLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgLy8gaW5zdHJ1Y3RvciB3b3JrcyBoZXJlIGFzIGxvbmcgYXMgeW91IGRvbid0IHNoYWRvdyBhbnl0aGluZyBpbiB0aGUgcHJlbHVkZVxuICAgICAgcHJlbHVkZTogd3JhcChpbnN0cnVjdG9yLCBlZHMucHJlbHVkZSksXG4gICAgICBpbnN0cnVjdG9yOiB3cmFwKGluc3RydWN0b3IsIGVkcy5jb3JyZWN0X2ltcGwpLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh0KTogVGVybUl0ZW0udCA9PlxuICAgICAgICAgICAgd3JhcChzdGl0Y2gzKGVkcy5wcmVsdWRlLCB0LmltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSwgdC5pbXBsKSxcbiAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBoaWRkZW5fdGVzdHM6IHdyYXAoaGlkZGVuX3Rlc3RzX3Rlcm0sIGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgIH07XG4gIH07XG4gIGxldCBzdGl0Y2hfdGVybSA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF90ZXJtKTtcblxuICB0eXBlIHN0aXRjaGVkX3N0YXRpY3MgPSBzdGl0Y2hlZChTdGF0aWNzSXRlbS50KTtcblxuICAvKiBNdWx0aXBsZSBzdGl0Y2hpbmdzIGFyZSBuZWVkZWQgZm9yIGVhY2ggZXhlcmNpc2VcbiAgICAgKHNlZSBjb21tZW50cyBpbiB0aGUgc3RpdGNoZWQgdHlwZSBhYm92ZSlcblxuICAgICBTdGl0Y2hpbmcgaXMgbmVjZXNzYXJ5IHRvIGNvbmNhdGVuYXRlIHRlcm1zXG4gICAgIGZyb20gZGlmZmVyZW50IGVkaXRvcnMsIHdoaWNoIGFyZSB0aGVuIHR5cGVjaGVja2VkLiAqL1xuICBsZXQgc3RpdGNoX3N0YXRpYyA9XG4gICAgICAoc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB0OiBzdGl0Y2hlZChUZXJtSXRlbS50KSk6IHN0aXRjaGVkX3N0YXRpY3MgPT4ge1xuICAgIGxldCBtayA9ICh7dGVybSwgdGVybV9yYW5nZXMsIF99OiBUZXJtSXRlbS50KTogU3RhdGljc0l0ZW0udCA9PiB7XG4gICAgICBsZXQgaW5mb19tYXAgPSBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXAoc2V0dGluZ3MsIHRlcm0pO1xuICAgICAge1xuICAgICAgICB0ZXJtLFxuICAgICAgICBlcnJvcl9pZHM6IFN0YXRpY3MuTWFwLmVycm9yX2lkcyh0ZXJtX3JhbmdlcywgaW5mb19tYXApLFxuICAgICAgICBpbmZvX21hcCxcbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9IG1rKHQuaW5zdHJ1Y3Rvcik7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiBtayh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICB1c2VyX2ltcGw6IG1rKHQudXNlcl9pbXBsKSxcbiAgICAgIHVzZXJfdGVzdHM6IG1rKHQudXNlcl90ZXN0cyksXG4gICAgICBwcmVsdWRlOiBpbnN0cnVjdG9yLCAvLyB3b3JrcyBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAobWssIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgaGlkZGVuX3Rlc3RzOiBtayh0LmhpZGRlbl90ZXN0cyksXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX3N0YXRpYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9zdGF0aWMpO1xuXG4gIGxldCBwcmVsdWRlX2tleSA9IFwicHJlbHVkZVwiO1xuICBsZXQgdGVzdF92YWxpZGF0aW9uX2tleSA9IFwidGVzdF92YWxpZGF0aW9uXCI7XG4gIGxldCB1c2VyX2ltcGxfa2V5ID0gXCJ1c2VyX2ltcGxcIjtcbiAgbGV0IHVzZXJfdGVzdHNfa2V5ID0gXCJ1c2VyX3Rlc3RzXCI7XG4gIGxldCBpbnN0cnVjdG9yX2tleSA9IFwiaW5zdHJ1Y3RvclwiO1xuICBsZXQgaGlkZGVuX2J1Z3Nfa2V5ID0gbiA9PiBcImhpZGRlbl9idWdzX1wiICsrIHN0cmluZ19vZl9pbnQobik7XG4gIGxldCBoaWRkZW5fdGVzdHNfa2V5ID0gXCJoaWRkZW5fdGVzdHNcIjtcblxuICBsZXQga2V5X2Zvcl9zdGF0aWNzID0gKHBvczogcG9zKTogc3RyaW5nID0+XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gcHJlbHVkZV9rZXlcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3Jfa2V5XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IHRlc3RfdmFsaWRhdGlvbl9rZXlcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gdXNlcl90ZXN0c19rZXlcbiAgICB8IFlvdXJJbXBsID0+IHVzZXJfaW1wbF9rZXlcbiAgICB8IEhpZGRlbkJ1Z3MoaWR4KSA9PiBoaWRkZW5fYnVnc19rZXkoaWR4KVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaGlkZGVuX3Rlc3RzX2tleVxuICAgIH07XG5cbiAgbGV0IHNwbGljZWRfZWxhYnMgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgc3RhdGU6IHN0YXRlKVxuICAgICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBwcmVsdWRlOiBfLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH0gPVxuICAgICAgc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICBsZXQgZWxhYiA9IChzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MpOiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQgPT4ge1xuICAgICAgZDogSW50ZXJmYWNlLmVsYWJvcmF0ZSh+c2V0dGluZ3MsIHMuaW5mb19tYXAsIHMudGVybSksXG4gICAgfTtcbiAgICBbXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgZWxhYih0ZXN0X3ZhbGlkYXRpb24pKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBlbGFiKHVzZXJfaW1wbCkpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBlbGFiKHVzZXJfdGVzdHMpKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgZWxhYihpbnN0cnVjdG9yKSksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgZWxhYihoaWRkZW5fdGVzdHMpKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXBpKChuLCBoaWRkZW5fYnVnOiBTdGF0aWNzSXRlbS50KSA9PlxuICAgICAgICAgICAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBlbGFiKGhpZGRlbl9idWcpKVxuICAgICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbGV0IG1rX3N0YXRpY3MgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgc3RhdGU6IHN0YXRlKVxuICAgICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBTdGF0aWNzSXRlbS50KSkgPT4ge1xuICAgIGxldCBzdGl0Y2hlZCA9IHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgW1xuICAgICAgKHByZWx1ZGVfa2V5LCBzdGl0Y2hlZC5wcmVsdWRlKSxcbiAgICAgICh0ZXN0X3ZhbGlkYXRpb25fa2V5LCBzdGl0Y2hlZC50ZXN0X3ZhbGlkYXRpb24pLFxuICAgICAgKHVzZXJfaW1wbF9rZXksIHN0aXRjaGVkLnVzZXJfaW1wbCksXG4gICAgICAodXNlcl90ZXN0c19rZXksIHN0aXRjaGVkLnVzZXJfdGVzdHMpLFxuICAgICAgKGluc3RydWN0b3Jfa2V5LCBzdGl0Y2hlZC5pbnN0cnVjdG9yKSxcbiAgICAgIChoaWRkZW5fdGVzdHNfa2V5LCBzdGl0Y2hlZC5oaWRkZW5fdGVzdHMpLFxuICAgIF1cbiAgICBAIExpc3QubWFwaShcbiAgICAgICAgKG4sIGhpZGRlbl9idWc6IFN0YXRpY3NJdGVtLnQpID0+IChoaWRkZW5fYnVnc19rZXkobiksIGhpZGRlbl9idWcpLFxuICAgICAgICBzdGl0Y2hlZC5oaWRkZW5fYnVncyxcbiAgICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIER5bmFtaWNzSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXJtOiBFeHAudCxcbiAgICAgIGluZm9fbWFwOiBTdGF0aWNzLk1hcC50LFxuICAgICAgcmVzdWx0OiBNb2RlbFJlc3VsdC50LFxuICAgIH07XG4gICAgbGV0IGVtcHR5OiB0ID0ge1xuICAgICAgdGVybToge1xuICAgICAgICB0ZXJtOiBUdXBsZShbXSksXG4gICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgIGlkczogW0lkLm1rKCldLFxuICAgICAgfSxcbiAgICAgIGluZm9fbWFwOiBJZC5NYXAuZW1wdHksXG4gICAgICByZXN1bHQ6IE5vRWxhYixcbiAgICB9O1xuICAgIGxldCBzdGF0aWNzX29ubHkgPSAoe3Rlcm0sIGluZm9fbWFwLCBffTogU3RhdGljc0l0ZW0udCk6IHQgPT4ge1xuICAgICAge3Rlcm0sIGluZm9fbWFwLCByZXN1bHQ6IE5vRWxhYn07XG4gICAgfTtcbiAgfTtcblxuICAvKiBHaXZlbiB0aGUgZXZhbHVhdGlvbiByZXN1bHRzLCBjb2xsZWN0cyB0aGVcbiAgICAgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIHByb2R1Y2luZyBkeW5hbWljXG4gICAgIGZlZWRiYWNrKi9cbiAgbGV0IHN0aXRjaF9keW5hbWljID1cbiAgICAgIChcbiAgICAgICAgc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IG9wdGlvbihNb2RlbFJlc3VsdHMudCksXG4gICAgICApXG4gICAgICA6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBwcmVsdWRlLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH0gPVxuICAgICAgc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICBsZXQgcmVzdWx0X29mID0ga2V5ID0+XG4gICAgICBzd2l0Y2ggKHJlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiBNb2RlbFJlc3VsdC5Ob0VsYWJcbiAgICAgIHwgU29tZShyZXN1bHRzKSA9PlxuICAgICAgICBNb2RlbFJlc3VsdHMubG9va3VwKHJlc3VsdHMsIGtleSlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PU1vZGVsUmVzdWx0Lk5vRWxhYilcbiAgICAgIH07XG5cbiAgICBsZXQgdGVzdF92YWxpZGF0aW9uID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IHRlc3RfdmFsaWRhdGlvbi50ZXJtLFxuICAgICAgICBpbmZvX21hcDogdGVzdF92YWxpZGF0aW9uLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZih0ZXN0X3ZhbGlkYXRpb25fa2V5KSxcbiAgICAgIH07XG5cbiAgICBsZXQgdXNlcl9pbXBsID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IHVzZXJfaW1wbC50ZXJtLFxuICAgICAgICBpbmZvX21hcDogdXNlcl9pbXBsLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZih1c2VyX2ltcGxfa2V5KSxcbiAgICAgIH07XG5cbiAgICBsZXQgdXNlcl90ZXN0cyA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiB1c2VyX3Rlc3RzLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiB1c2VyX3Rlc3RzLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZih1c2VyX3Rlc3RzX2tleSksXG4gICAgICB9O1xuICAgIGxldCBwcmVsdWRlID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IHByZWx1ZGUudGVybSxcbiAgICAgICAgaW5mb19tYXA6IHByZWx1ZGUuaW5mb19tYXAsXG4gICAgICAgIHJlc3VsdDogTm9FbGFiLFxuICAgICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiBpbnN0cnVjdG9yLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiBpbnN0cnVjdG9yLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZihpbnN0cnVjdG9yX2tleSksXG4gICAgICB9O1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChuLCBzdGF0aWNzX2l0ZW06IFN0YXRpY3NJdGVtLnQpID0+XG4gICAgICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgICAgIHRlcm06IHN0YXRpY3NfaXRlbS50ZXJtLFxuICAgICAgICAgICAgaW5mb19tYXA6IHN0YXRpY3NfaXRlbS5pbmZvX21hcCxcbiAgICAgICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl9idWdzX2tleShuKSksXG4gICAgICAgICAgfSxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICApO1xuICAgIGxldCBoaWRkZW5fdGVzdHMgPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgdGVybTogaGlkZGVuX3Rlc3RzLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiBoaWRkZW5fdGVzdHMuaW5mb19tYXAsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl90ZXN0c19rZXkpLFxuICAgICAgfTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT5cbiAgICBpZiAoc2V0dGluZ3Muc3RhdGljcyAmJiBzZXR0aW5ncy5keW5hbWljcykge1xuICAgICAgc3RpdGNoX2R5bmFtaWMoc2V0dGluZ3MsIHN0YXRlLCByZXN1bHRzKTtcbiAgICB9IGVsc2UgaWYgKHNldHRpbmdzLnN0YXRpY3MpIHtcbiAgICAgIGxldCB0ID0gc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl9pbXBsKSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfdGVzdHMpLFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaW5zdHJ1Y3RvciksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5wcmVsdWRlKSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHksIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5oaWRkZW5fdGVzdHMpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgIExpc3QuaW5pdChMaXN0Lmxlbmd0aChzdGF0ZS5lZHMuaGlkZGVuX2J1Z3MpLCBfID0+XG4gICAgICAgICAgICBEeW5hbWljc0l0ZW0uZW1wdHlcbiAgICAgICAgICApLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHN0aXRjaF9keW5hbWljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX2R5bmFtaWMpO1xuXG4gIC8vIE1vZHVsZSBFeHBvcnRcblxuICBsZXQgZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBzZXJpYWxpemF0aW9uID0gWmlwcGVyLnNob3coemlwcGVyKTtcbiAgICAvLyBsZXQgc3RyaW5nX2xpdGVyYWwgPSBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChzZXJpYWxpemF0aW9uKSArKyBcIlxcXCJcIjtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgc2VyaWFsaXphdGlvbik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IGNvZGUgPSBQcmludGVyLnRvX3N0cmluZ19iYXNpYyh6aXBwZXIpO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChjb2RlKSArKyBcIlxcXCJcIik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBFeGVyY2lzZS50cmFuc2l0aW9uKFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AodHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiKVxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9ncmFkaW5nX21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IGhlYWRlciA9IG91dHB1dF9oZWFkZXJfZ3JhZGluZyhtb2R1bGVfbmFtZSk7XG4gICAgbGV0IHByZWZpeCA9IFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBoZWFkZXIgKysgcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGJsYW5rX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB+dGl0bGUsXG4gICAgICAgIH5tb2R1bGVfbmFtZSxcbiAgICAgICAgfnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgfnJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICB+cHJvdmlkZWRfdGVzdHMsXG4gICAgICAgIH5udW1fd3JvbmdfaW1wbHMsXG4gICAgICApID0+IHtcbiAgICBsZXQgcHJlbHVkZSA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0LmluaXQoXG4gICAgICAgIG51bV93cm9uZ19pbXBscyxcbiAgICAgICAgaSA9PiB7XG4gICAgICAgICAgbGV0IHppcHBlciA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgICAgICAge2ltcGw6IHppcHBlciwgaGludDogXCJUT0RPOiBoaW50IFwiICsrIHN0cmluZ19vZl9pbnQoaSl9O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICB7XG4gICAgICB0aXRsZSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBtb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogRXhlcmNpc2VFbnYuZGVmYXVsdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIHByb3ZpZGVkOiBwcm92aWRlZF90ZXN0cyxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGwsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICBoaW50czogW10sXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBbXSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIEZyb20gU3RvcmVcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZXhlcmNpc2VfZXhwb3J0ID0ge1xuICAgIGN1cl9leGVyY2lzZToga2V5LFxuICAgIGV4ZXJjaXNlX2RhdGE6IGxpc3QoKGtleSwgcGVyc2lzdGVudF9zdGF0ZSkpLFxuICB9O1xuXG4gIGxldCBzZXJpYWxpemVfZXhlcmNpc2UgPSAoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIHw+IHNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZVxuICAgIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlID0gKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgZGF0YVxuICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHBcbiAgICB8PiB1bnBlcnNpc3Rfc3RhdGUofnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gZXhlcmNpc2VfZXhwb3J0X29mX3NleHA7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgRiA9IChFeGVyY2lzZUVudjogRXhlcmNpc2UuRXhlcmNpc2VFbnYpID0+IHtcbiAgb3BlbiBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyY2VudGFnZSA9IGZsb2F0O1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcG9pbnRzID0gZmxvYXQ7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzY29yZSA9IChwb2ludHMsIHBvaW50cyk7XG5cbiAgbGV0IHNjb3JlX29mX3BlcmNlbnQgPSAocGVyY2VudCwgbWF4X3BvaW50cykgPT4ge1xuICAgIGxldCBtYXhfcG9pbnRzID0gZmxvYXRfb2ZfaW50KG1heF9wb2ludHMpO1xuICAgIChwZXJjZW50ICouIG1heF9wb2ludHMsIG1heF9wb2ludHMpO1xuICB9O1xuXG4gIG1vZHVsZSBUZXN0VmFsaWRhdGlvblJlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIHJlcXVpcmVkOiBpbnQsXG4gICAgICBwcm92aWRlZDogaW50LFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAoZWRzOiBlZHMsIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpKSA9PiB7XG4gICAgICB7XG4gICAgICAgIHRlc3RfcmVzdWx0cyxcbiAgICAgICAgcmVxdWlyZWQ6IGVkcy55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogZWRzLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgcGVyY2VudGFnZSA9IChyZXBvcnQ6IHQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgICAgfCBOb25lID0+IDAuMFxuICAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbiAgICAgICAgbGV0IG51bV90ZXN0cyA9IGZsb2F0X29mX2ludCh0ZXN0X3Jlc3VsdHMudG90YWwpO1xuICAgICAgICBsZXQgcmVxdWlyZWQgPSBmbG9hdF9vZl9pbnQocmVwb3J0LnJlcXVpcmVkKTtcbiAgICAgICAgbGV0IHByb3ZpZGVkID0gZmxvYXRfb2ZfaW50KHJlcG9ydC5wcm92aWRlZCk7XG4gICAgICAgIGxldCBudW1fcGFzc2luZyA9IGZsb2F0X29mX2ludCh0ZXN0X3Jlc3VsdHMucGFzc2luZyk7XG5cbiAgICAgICAgcmVxdWlyZWQgLS4gcHJvdmlkZWQgPD0gMC4wIHx8IG51bV90ZXN0cyA8PSAwLjBcbiAgICAgICAgICA/IDAuMFxuICAgICAgICAgIDogbnVtX3Bhc3NpbmdcbiAgICAgICAgICAgIC8uIG51bV90ZXN0c1xuICAgICAgICAgICAgKi4gKFxuICAgICAgICAgICAgICBGbG9hdC5tYXgoXG4gICAgICAgICAgICAgICAgMC4sXG4gICAgICAgICAgICAgICAgRmxvYXQubWluKG51bV90ZXN0cyAtLiBwcm92aWRlZCwgcmVxdWlyZWQgLS4gcHJvdmlkZWQpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC8uIChyZXF1aXJlZCAtLiBwcm92aWRlZClcbiAgICAgICAgICAgICk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgdGVzdF9zdW1tYXJ5X3N0ciA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dGVzdF9yZXN1bHRzLnRvdGFsLFxuICAgICAgICB+cD10ZXN0X3Jlc3VsdHMuZmFpbGluZyxcbiAgICAgICAgfnE9dGVzdF9yZXN1bHRzLnVuZmluaXNoZWQsXG4gICAgICAgIH5uX3N0cj1cInRlc3RcIixcbiAgICAgICAgfm5zX3N0cj1cInRlc3RzXCIsXG4gICAgICAgIH5wX3N0cj1cImZhaWxpbmdcIixcbiAgICAgICAgfnFfc3RyPVwiaW5kZXRlcm1pbmF0ZVwiLFxuICAgICAgICB+cl9zdHI9XCJ2YWxpZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBNdXRhdGlvblRlc3RpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge3Jlc3VsdHM6IGxpc3QoKFRlc3RTdGF0dXMudCwgc3RyaW5nKSl9O1xuXG4gICAgbGV0IGhpZGRlbl9idWdfc3RhdHVzID1cbiAgICAgICAgKFxuICAgICAgICAgIHRlc3RfdmFsaWRhdGlvbl9kYXRhOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgICBoaWRkZW5fYnVnX2RhdGE6IER5bmFtaWNzSXRlbS50LFxuICAgICAgICApXG4gICAgICAgIDogVGVzdFN0YXR1cy50ID0+IHtcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyh0ZXN0X3ZhbGlkYXRpb25fZGF0YS5yZXN1bHQpLFxuICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoaGlkZGVuX2J1Z19kYXRhLnJlc3VsdCksXG4gICAgICApIHtcbiAgICAgIHwgKE5vbmUsIF8pXG4gICAgICB8IChfLCBOb25lKSA9PiBJbmRldFxuICAgICAgfCAoU29tZSh0ZXN0X3ZhbGlkYXRpb25fZGF0YSksIFNvbWUoaGlkZGVuX2J1Z19kYXRhKSkgPT5cbiAgICAgICAgbGV0IHZhbGlkYXRpb25fdGVzdF9tYXAgPSB0ZXN0X3ZhbGlkYXRpb25fZGF0YS50ZXN0X21hcDtcbiAgICAgICAgbGV0IGhpZGRlbl9idWdfdGVzdF9tYXAgPSBoaWRkZW5fYnVnX2RhdGEudGVzdF9tYXA7XG5cbiAgICAgICAgbGV0IGZvdW5kID1cbiAgICAgICAgICBoaWRkZW5fYnVnX3Rlc3RfbWFwXG4gICAgICAgICAgfD4gTGlzdC5maW5kX29wdCgoKGlkLCBpbnN0YW5jZV9yZXBvcnRzKSkgPT4ge1xuICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3RNYXAuam9pbnRfc3RhdHVzKGluc3RhbmNlX3JlcG9ydHMpO1xuICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5QYXNzXG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuSW5kZXQgPT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5GYWlsID0+XG4gICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0aW9uX3Rlc3RfcmVwb3J0cyA9XG4gICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl90ZXN0X21hcCB8PiBUZXN0TWFwLmxvb2t1cChpZCk7XG4gICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsaWRhdGlvbl90ZXN0X3JlcG9ydHMpIHtcbiAgICAgICAgICAgICAgICAgfCBOb25lID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgU29tZShyZXBvcnRzKSA9PlxuICAgICAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSBUZXN0TWFwLmpvaW50X3N0YXR1cyhyZXBvcnRzKTtcbiAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5QYXNzID0+IHRydWVcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuRmFpbFxuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5JbmRldCA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIH0pO1xuICAgICAgICBzd2l0Y2ggKGZvdW5kKSB7XG4gICAgICAgIHwgTm9uZSA9PiBGYWlsXG4gICAgICAgIHwgU29tZShfKSA9PiBQYXNzXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07IC8vIGZvciBlYWNoIGhpZGRlbiBidWdcbiAgICAvLyAgIGluIHRoZSB0ZXN0IHJlc3VsdHMgZGF0YSwgZmluZCBhIHRlc3QgSUQgdGhhdCBwYXNzZXMgdGVzdCB2YWxpZGF0aW9uIGJ1dCBmYWlscyBhZ2FpbnN0XG5cbiAgICBsZXQgbWsgPVxuICAgICAgICAoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbjogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlOiBsaXN0KHdyb25nX2ltcGwoRWRpdG9yLnQpKSxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M6IGxpc3QoRHluYW1pY3NJdGVtLnQpLFxuICAgICAgICApXG4gICAgICAgIDogdCA9PiB7XG4gICAgICBsZXQgcmVzdWx0cyA9XG4gICAgICAgIExpc3QubWFwKGhpZGRlbl9idWdfc3RhdHVzKHRlc3RfdmFsaWRhdGlvbiksIGhpZGRlbl9idWdzKTtcbiAgICAgIGxldCBoaW50cyA9XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh3cm9uZ19pbXBsOiB3cm9uZ19pbXBsKEVkaXRvci50KSkgPT4gd3JvbmdfaW1wbC5oaW50LFxuICAgICAgICAgIGhpZGRlbl9idWdzX3N0YXRlLFxuICAgICAgICApO1xuICAgICAgbGV0IHJlc3VsdHMgPSBMaXN0LmNvbWJpbmUocmVzdWx0cywgaGludHMpO1xuICAgICAge3Jlc3VsdHM6IHJlc3VsdHN9O1xuICAgIH07XG5cbiAgICBsZXQgcGVyY2VudGFnZSA9IChyZXBvcnQ6IHQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIGxldCByZXN1bHRzID0gcmVwb3J0LnJlc3VsdHM7XG4gICAgICBsZXQgbnVtX3dyb25nX2ltcGxzID0gTGlzdC5sZW5ndGgocmVzdWx0cyk7XG4gICAgICBsZXQgbnVtX3Bhc3NlZCA9XG4gICAgICAgIHJlc3VsdHNcbiAgICAgICAgfD4gTGlzdC5maW5kX2FsbCgoKHN0YXR1cywgXykpID0+IHN0YXR1cyA9PSBUZXN0U3RhdHVzLlBhc3MpXG4gICAgICAgIHw+IExpc3QubGVuZ3RoO1xuICAgICAgc3dpdGNoIChudW1fd3JvbmdfaW1wbHMpIHtcbiAgICAgIHwgMCA9PiAxLjBcbiAgICAgIHwgXyA9PiBmbG9hdF9vZl9pbnQobnVtX3Bhc3NlZCkgLy4gZmxvYXRfb2ZfaW50KG51bV93cm9uZ19pbXBscylcbiAgICAgIH07XG4gICAgfTtcblxuICAgIC8vIFRPRE8gbW92ZSB0byBzZXBhcmF0ZSBtb2R1bGVcblxuICAgIGxldCBzdW1tYXJ5X3N0ciA9ICh+dG90YWwsIH5mb3VuZCk6IHN0cmluZyA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRvdGFsLFxuICAgICAgICB+cD1mb3VuZCxcbiAgICAgICAgfnE9MCxcbiAgICAgICAgfm5fc3RyPVwiYnVnXCIsXG4gICAgICAgIH5uc19zdHI9XCJidWdzXCIsXG4gICAgICAgIH5wX3N0cj1cImV4cG9zZWRcIixcbiAgICAgICAgfnFfc3RyPVwiXCIsXG4gICAgICAgIH5yX3N0cj1cInVucmV2ZWFsZWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgU3ludGF4UmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIGhpbnRlZF9yZXN1bHRzOiBsaXN0KChib29sLCBoaW50KSksXG4gICAgICBwZXJjZW50YWdlLFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAofnlvdXJfaW1wbDogRWRpdG9yLnQsIH50ZXN0czogc3ludGF4X3Rlc3RzKTogdCA9PiB7XG4gICAgICBsZXQgdXNlcl9pbXBsX3Rlcm0gPSB5b3VyX2ltcGwuc3RhdGUubWV0YS52aWV3X3Rlcm07XG5cbiAgICAgIGxldCBwcmVkaWNhdGVzID1cbiAgICAgICAgTGlzdC5tYXAoKChfLCBwKSkgPT4gU3ludGF4VGVzdC5wcmVkaWNhdGVfZm4ocCksIHRlc3RzKTtcbiAgICAgIGxldCBoaW50cyA9IExpc3QubWFwKCgoaCwgXykpID0+IGgsIHRlc3RzKTtcbiAgICAgIGxldCBzeW50YXhfcmVzdWx0cyA9IFN5bnRheFRlc3QuY2hlY2sodXNlcl9pbXBsX3Rlcm0sIHByZWRpY2F0ZXMpO1xuXG4gICAgICB7XG4gICAgICAgIGhpbnRlZF9yZXN1bHRzOlxuICAgICAgICAgIExpc3QubWFwMigociwgaCkgPT4gKHIsIGgpLCBzeW50YXhfcmVzdWx0cy5yZXN1bHRzLCBoaW50cyksXG4gICAgICAgIHBlcmNlbnRhZ2U6IHN5bnRheF9yZXN1bHRzLnBlcmNlbnRhZ2UsXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEltcGxHcmFkaW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIGhpbnRzOiBsaXN0KHN0cmluZyksXG4gICAgICB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIGhpbnRlZF9yZXN1bHRzOiBsaXN0KChUZXN0U3RhdHVzLnQsIHN0cmluZykpLFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAofmhpbnRzOiBsaXN0KHN0cmluZyksIH50ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSk6IHQgPT4ge1xuICAgICAgbGV0IGhpbnRlZF9yZXN1bHRzID1cbiAgICAgICAgc3dpdGNoICh0ZXN0X3Jlc3VsdHMpIHtcbiAgICAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbiAgICAgICAgICBsZXQgc3RhdHVzZXMgPSB0ZXN0X3Jlc3VsdHMuc3RhdHVzZXM7XG4gICAgICAgICAgVXRpbC5MaXN0VXRpbC56aXBfZGVmYXVsdHMoXG4gICAgICAgICAgICBzdGF0dXNlcyxcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgSGF6M2xjb3JlLlRlc3RTdGF0dXMuSW5kZXQsXG4gICAgICAgICAgICBcIk5vIGhpbnQgYXZhaWxhYmxlLlwiLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgVXRpbC5MaXN0VXRpbC56aXBfZGVmYXVsdHMoXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgSGF6M2xjb3JlLlRlc3RTdGF0dXMuSW5kZXQsXG4gICAgICAgICAgICBcIkV4ZXJjaXNlIGNvbmZpZ3VyYXRpb24gZXJyb3I6IEhpbnQgd2l0aG91dCBhIHRlc3QuXCIsXG4gICAgICAgICAgKVxuICAgICAgICB9O1xuICAgICAge2hpbnRzLCB0ZXN0X3Jlc3VsdHMsIGhpbnRlZF9yZXN1bHRzfTtcbiAgICB9O1xuXG4gICAgbGV0IHRvdGFsID0gKHJlcG9ydDogdCkgPT4gTGlzdC5sZW5ndGgocmVwb3J0LmhpbnRlZF9yZXN1bHRzKTtcbiAgICBsZXQgbnVtX3Bhc3NlZCA9IChyZXBvcnQ6IHQpID0+IHtcbiAgICAgIHJlcG9ydC5oaW50ZWRfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5maW5kX2FsbCgoKHN0YXR1cywgXykpID0+IHN0YXR1cyA9PSBUZXN0U3RhdHVzLlBhc3MpXG4gICAgICB8PiBMaXN0Lmxlbmd0aDtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0LCBzeW50YXhfcmVwb3J0OiBTeW50YXhSZXBvcnQudCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3ludGF4X3JlcG9ydC5wZXJjZW50YWdlXG4gICAgICAqLiAoZmxvYXRfb2ZfaW50KG51bV9wYXNzZWQocmVwb3J0KSkgLy4gZmxvYXRfb2ZfaW50KHRvdGFsKHJlcG9ydCkpKTtcbiAgICB9O1xuXG4gICAgbGV0IHRlc3Rfc3VtbWFyeV9zdHIgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KSA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRlc3RfcmVzdWx0cy50b3RhbCxcbiAgICAgICAgfnA9dGVzdF9yZXN1bHRzLmZhaWxpbmcsXG4gICAgICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgICAgICB+bl9zdHI9XCJ0ZXN0XCIsXG4gICAgICAgIH5uc19zdHI9XCJ0ZXN0c1wiLFxuICAgICAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgICAgIH5xX3N0cj1cImluZGV0ZXJtaW5hdGVcIixcbiAgICAgICAgfnJfc3RyPVwidmFsaWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0OiBUZXN0VmFsaWRhdGlvblJlcG9ydC50LFxuICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQ6IE11dGF0aW9uVGVzdGluZ1JlcG9ydC50LFxuICAgICAgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQsXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OiBJbXBsR3JhZGluZ1JlcG9ydC50LFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAoZWRzOiBlZHMsIH5zdGl0Y2hlZF9keW5hbWljczogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpKSA9PiB7XG4gICAgICBwb2ludF9kaXN0cmlidXRpb246IGVkcy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0OlxuICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5tayhcbiAgICAgICAgICBlZHMsXG4gICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLnRlc3RfdmFsaWRhdGlvbi5yZXN1bHQpLFxuICAgICAgICApLFxuICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQ6XG4gICAgICAgIE11dGF0aW9uVGVzdGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uPXN0aXRjaGVkX2R5bmFtaWNzLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU9ZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICAgIH5oaWRkZW5fYnVncz1zdGl0Y2hlZF9keW5hbWljcy5oaWRkZW5fYnVncyxcbiAgICAgICAgKSxcbiAgICAgIHN5bnRheF9yZXBvcnQ6XG4gICAgICAgIFN5bnRheFJlcG9ydC5tayh+eW91cl9pbXBsPWVkcy55b3VyX2ltcGwsIH50ZXN0cz1lZHMuc3ludGF4X3Rlc3RzKSxcbiAgICAgIGltcGxfZ3JhZGluZ19yZXBvcnQ6XG4gICAgICAgIEltcGxHcmFkaW5nUmVwb3J0Lm1rKFxuICAgICAgICAgIH5oaW50cz1lZHMuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgICAgIH50ZXN0X3Jlc3VsdHM9XG4gICAgICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoc3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX3Rlc3RzLnJlc3VsdCksXG4gICAgICAgICksXG4gICAgfTtcblxuICAgIGxldCBvdmVyYWxsX3Njb3JlID1cbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgICAgIHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQsXG4gICAgICAgICAgICBtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCxcbiAgICAgICAgICAgIHN5bnRheF9yZXBvcnQsXG4gICAgICAgICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0LFxuICAgICAgICAgICAgXyxcbiAgICAgICAgICB9OiB0LFxuICAgICAgICApXG4gICAgICAgIDogc2NvcmUgPT4ge1xuICAgICAgbGV0ICh0dl9wb2ludHMsIHR2X21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIFRlc3RWYWxpZGF0aW9uUmVwb3J0LnBlcmNlbnRhZ2UodGVzdF92YWxpZGF0aW9uX3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgKTtcbiAgICAgIGxldCAobXRfcG9pbnRzLCBtdF9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQucGVyY2VudGFnZShtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLm11dGF0aW9uX3Rlc3RpbmcsXG4gICAgICAgICk7XG4gICAgICBsZXQgKGlnX3BvaW50cywgaWdfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgSW1wbEdyYWRpbmdSZXBvcnQucGVyY2VudGFnZShpbXBsX2dyYWRpbmdfcmVwb3J0LCBzeW50YXhfcmVwb3J0KSxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24uaW1wbF9ncmFkaW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IHRvdGFsX3BvaW50cyA9IHR2X3BvaW50cyArLiBtdF9wb2ludHMgKy4gaWdfcG9pbnRzO1xuICAgICAgbGV0IG1heF9wb2ludHMgPSB0dl9tYXggKy4gbXRfbWF4ICsuIGlnX21heDtcbiAgICAgICh0b3RhbF9wb2ludHMsIG1heF9wb2ludHMpO1xuICAgIH07XG4gIH07XG59O1xuIiwibW9kdWxlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGUgPSB1bml0O1xuICBsZXQgZGVmYXVsdCA9ICgpO1xuICBsZXQgb3V0cHV0X2hlYWRlciA9IEV4ZXJjaXNlLm91dHB1dF9oZWFkZXJfZ3JhZGluZztcbn07XG5cbm1vZHVsZSBFeGVyY2lzZSA9IEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG5tb2R1bGUgR3JhZGluZyA9IEdyYWRpbmcuRihFeGVyY2lzZUVudik7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMy8yMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBkZWJ1ZyA9XG4gIGxldCBfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiREVCVUdcIilcbiAgICB3aXRoIF8gLT4gTm9uZVxuICBhbmQgX09NRF9ERUJVRyA9XG4gICAgdHJ5XG4gICAgICBTb21lKFN5cy5nZXRlbnYgXCJPTURfREVCVUdcIilcbiAgICB3aXRoIF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBfREVCVUcsIF9PTURfREVCVUcgd2l0aFxuICB8IF8sIFNvbWUgXCJmYWxzZVwiIC0+XG4gICAgIGZhbHNlXG4gIHwgU29tZSBfLCBOb25lIC0+XG4gICAgIGVwcmludGYgXCJvbWQ6IGRlYnVnIG1vZGUgYWN0aXZhdGVkIGJlY2F1c2UgREVCVUcgaXMgc2V0LCBcXFxuICAgICAgICAgICAgICB5b3UgY2FuIGRlYWN0aXZhdGUgdGhlIG1vZGUgYnkgdW5zZXR0aW5nIERFQlVHIFxcXG4gICAgICAgICAgICAgIG9yIGJ5IHNldHRpbmcgT01EX0RFQlVHIHRvIHRoZSBzdHJpbmcgXFxcImZhbHNlXFxcIi5cXG4lIVwiO1xuICAgICB0cnVlXG4gIHwgTm9uZSwgTm9uZSAtPlxuICAgICBmYWxzZVxuICB8IF8sIFNvbWUgXyAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIE9NRF9ERUJVRyBpcyBzZXRcbiAgICAgICAgICAgICAgdG8gYSB2YWx1ZSB0aGF0IGlzbid0IHRoZSBzdHJpbmcgXFxcImZhbHNlXFxcIi5cXG4lIVwiO1xuICAgICB0cnVlXG5cbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IHdhcm4gPyh3ZT1mYWxzZSkgbXNnID1cbiAgaWYgd2UgdGhlblxuICAgIHJhaXNlIChFcnJvciBtc2cpXG4gIGVsc2VcbiAgICBlcHJpbnRmIFwiKE9NRCkgV2FybmluZzogJXNcXG4lIVwiIG1zZ1xuXG5cbmxldCB0cmFja2ZpeCA9XG4gIHRyeVxuICAgIGlnbm9yZShTeXMuZ2V0ZW52IFwiT01EX0ZJWFwiKTtcbiAgICBlcHJpbnRmIFwib21kOiB0cmFja2luZyBtb2RlIGFjdGl2YXRlZDogdG9rZW4gbGlzdCBhcmUgdmVyeSBvZnRlbiBjaGVja2VkLCBcXFxuICAgICAgICAgICAgIGl0IG1pZ2h0IHRha2UgYSAqdmVyeSogbG9uZyB0aW1lIGlmIHlvdXIgaW5wdXQgaXMgbGFyZ2UuXFxuJSFcIjtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgZmFsc2VcblxubGV0IF8gPSBpZiBkZWJ1ZyB0aGVuIFByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2UgdHJ1ZVxuXG5sZXQgcmFpc2UgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgKGZ1biBlIC0+XG4gICAgICAgZXByaW50ZiBcIihPTUQpIEV4Y2VwdGlvbiByYWlzZWQ6ICVzXFxuJSFcIiAoUHJpbnRleGMudG9fc3RyaW5nIGUpO1xuICAgICAgIHJhaXNlIGUpXG4gIGVsc2VcbiAgICByYWlzZVxuXG5tb2R1bGUgU3RyaW5nU2V0IDogc2lnXG4gIGluY2x1ZGUgU2V0LlMgd2l0aCB0eXBlIGVsdCA9IHN0cmluZ1xuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFNldC5NYWtlKFN0cmluZylcbiAgbGV0IG9mX2xpc3QgbCA9IExpc3QuZm9sZF9sZWZ0IChmdW4gciBlIC0+IGFkZCBlIHIpIGVtcHR5IGxcbmVuZFxuXG5cbnR5cGUgJ2Egc3BsaXQgPSAnYSBsaXN0IC0+ICdhIHNwbGl0X2FjdGlvblxuYW5kICdhIHNwbGl0X2FjdGlvbiA9XG4gIHwgQ29udGludWVcbiAgfCBDb250aW51ZV93aXRoIG9mICdhIGxpc3QgKiAnYSBsaXN0XG4gIHwgU3BsaXQgb2YgJ2EgbGlzdCAqICdhIGxpc3RcblxuXG5sZXQgZnNwbGl0X3JldiA/KGV4Y2w9KGZ1biBfIC0+IGZhbHNlKSkgfihmOidhIHNwbGl0KSBsXG4gICAgOiAoJ2EgbGlzdCAqICdhIGxpc3QpIG9wdGlvbiA9XG4gIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZiBbXSB3aXRoXG4gICAgICAgICAgfCBTcGxpdChsZWZ0LCByaWdodCkgLT4gICAgICBTb21lKGxlZnRAYWNjdSwgcmlnaHQpXG4gICAgICAgICAgfCBDb250aW51ZV93aXRoKGxlZnQsIHRsKSAtPiBsb29wIChsZWZ0QGFjY3UpIHRsXG4gICAgICAgICAgfCBDb250aW51ZSAtPiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgZTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBleGNsIGwgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBtYXRjaCBmIGwgd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgaW4gbG9vcCBbXSBsXG5cbmxldCBmc3BsaXQgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH5mIGwgPVxuICBtYXRjaCBmc3BsaXRfcmV2IH5leGNsOmV4Y2wgfmY6ZiBsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShyZXYsIGwpIC0+IFNvbWUoTGlzdC5yZXYgcmV2LCBsKVxuXG5sZXQgaWRfb2Zfc3RyaW5nIGlkcyBzID1cbiAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IG91dCA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICAoKiBQdXQgW3NdIGludG8gW2JdLCByZXBsYWNpbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggZGFzaGVzLiAqKVxuICBsZXQgcmVjIGxvb3Agc3RhcnRlZCBpID1cbiAgICBpZiBpID0gbiB0aGVuICgpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0IGMgO1xuICAgICAgICBsb29wIHRydWUgKGkgKyAxKVxuICAgICAgKCogRG9uJ3Qgd2FudCB0byBzdGFydCB3aXRoIGRhc2hlcy4gKilcbiAgICAgIHwgXyB3aGVuIG5vdCBzdGFydGVkIC0+XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvdXQgJy0nIDtcbiAgICAgICAgbG9vcCBmYWxzZSAoaSArIDEpXG4gIGluXG4gIGxvb3AgZmFsc2UgMCA7XG4gIGxldCBzJyA9IEJ1ZmZlci5jb250ZW50cyBvdXQgaW5cbiAgaWYgcycgPSBcIlwiIHRoZW4gXCJcIlxuICBlbHNlXG4gICAgKCogRmluZCBvdXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IGNoYXJhY3RlciBpbiBbcyddIHRoYXQgaXNuJ3QgYSBkYXNoLiAqKVxuICAgIGxldCBsYXN0X3RyYWlsaW5nID0gXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIGlmIGkgPCAwIHx8IHMnLltpXSA8PiAnLScgdGhlbiBpXG4gICAgICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgICBpblxuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzJyAtIDEpXG4gICAgaW5cbiAgICAoKiBUcmltIHRyYWlsaW5nIGRhc2hlcy4gKilcbiAgICBpZHMjbWFuZ2xlIEBAIFN0cmluZy5zdWIgcycgMCAobGFzdF90cmFpbGluZyArIDEpXG5cbigqIG9ubHkgY29udmVydCB3aGVuIFwibmVjZXNzYXJ5XCIgKilcbmxldCBodG1sZW50aXRpZXMgPyhtZD1mYWxzZSkgcyA9XG4gIGxldCBtb2R1bGUgQnJlYWsgPSBzdHJ1Y3QgZXhjZXB0aW9uIEJyZWFrIGVuZCBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgKClcbiAgICBlbHNlXG4gICAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICggJzAnIC4uICc5JyB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onICkgYXMgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgJ1wiJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJnF1b3Q7XCJcbiAgICAgICAgfCAnXFwnJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiMzOTtcIlxuICAgICAgICB8ICcmJyAtPlxuICAgICAgICAgICAgaWYgbWQgdGhlblxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbWF0Y2ggcy5baSsxXSB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcjJyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGZmIGogPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHMuW2pdIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gZmYgKHN1Y2MgailcbiAgICAgICAgICAgICAgICAgICAgICB8ICc7JyAtPiAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBmZiAoaSsyKVxuICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGZmIGogPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHMuW2pdIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImXCJcbiAgICAgICAgICAgICAgICB3aXRoIF8gLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZhbXA7XCJcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgIHwgJzwnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImbHQ7XCJcbiAgICAgICAgfCAnPicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZndDtcIlxuICAgICAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgaW4gbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDA7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IG1pbmltYWxpemVfYmxhbmtzIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgbCBpblxuICBsZXQgcmVjIGxvb3AgZiBpID1cbiAgICBpZiBpID0gbCB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyAtPlxuICAgICAgICBsb29wIHRydWUgKHN1Y2MgaSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIGYgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICBpbiBsb29wIGZhbHNlIDBcblxubGV0IHJlYyBlYXQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBlOjp0bCBhcyBsIC0+IGlmIGYgZSB0aGVuIGVhdCBmIHRsIGVsc2UgbFxuXG5cbmxldCByZWMgZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZW1vdmVfcHJlZml4X3NwYWNlcyBzID0gXG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuWzBdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICB8ICcgJyAtPiBsb29wIChpKzEpXG4gICAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyBpIChTdHJpbmcubGVuZ3RoIHMgLSBpKVxuICAgICAgaW4gbG9vcCAxXG4gIGluXG4gIGxldCByZW1vdmVfc3VmZml4X3NwYWNlcyBzID1cbiAgICBpZiBzID0gXCJcIiB0aGVuXG4gICAgICBzIFxuICAgIGVsc2UgaWYgcy5bU3RyaW5nLmxlbmd0aCBzIC0gMV0gPD4gJyAnIHRoZW5cbiAgICAgIHNcbiAgICBlbHNlXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgLT4gbG9vcCAoaS0xKVxuICAgICAgICB8IF8gLT4gU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICAgIGluIGxvb3AgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzIHJlcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgIHJlc1xuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeVxuICAgICAgICAgIFNvbWUgKHRha2VfYXR0cmlidXRlIHMgaSlcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBTb21lICgoKF8sXykgYXMgYSksIG5ld19zKSAtPlxuICAgICAgICBsb29wIG5ld19zIChhOjpyZXMpIDBcbiAgICAgIHwgTm9uZSAtPiByZXNcbiAgYW5kIHRha2VfYXR0cmlidXRlIHMgaSA9XG4gICAgICBsZXQgbmFtZSwgYWZ0ZXJfZXEgPSBjdXRfb25fY2hhcl9mcm9tIHMgaSAnPScgaW5cbiAgICAgIGxldCBuYW1lID0gcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgbmFtZSBpblxuICAgICAgbGV0IGFmdGVyX2VxID0gcmVtb3ZlX3ByZWZpeF9zcGFjZXMgYWZ0ZXJfZXEgaW5cbiAgICAgIGxldCB2YWx1ZSwgcmVzdCA9IGN1dF9vbl9jaGFyX2Zyb20gYWZ0ZXJfZXEgMSBhZnRlcl9lcS5bMF0gaW5cbiAgICAgIChuYW1lLHZhbHVlKSwgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcmVzdFxuICBpblxuICBpZiAoKiBIYXMgaXQgYXQgbGVhc3Qgb25lIGF0dHJpYnV0ZT8gKilcbiAgICB0cnkgU3RyaW5nLmluZGV4IGh0bWwgJz4nIDwgU3RyaW5nLmluZGV4IGh0bWwgJyAnXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZVxuICB0aGVuXG4gICAgW11cbiAgZWxzZVxuICBtYXRjaCBodG1sLlsxXSB3aXRoXG4gIHwgJzwnIHwgJyAnIC0+XG4gICAgZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXNcbiAgICAgIChyZW1vdmVfcHJlZml4X3NwYWNlcyAoU3RyaW5nLnN1YiBodG1sIDEgKFN0cmluZy5sZW5ndGggaHRtbCAtIDEpKSlcbiAgfCBfIC0+XG4gICAgdHJ5XG4gICAgICBsZXQgaHRtbCA9IHNuZCAoY3V0X29uX2NoYXJfZnJvbSBodG1sIDAgJyAnKSBpblxuICAgICAgbG9vcCAoU3RyaW5nLnN1YiBodG1sIDAgKFN0cmluZy5pbmRleCBodG1sICc+JykpIFtdIDBcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuXG5sZXQgcmVjIGV4dHJhY3RfaW5uZXJfaHRtbCAoaHRtbDpzdHJpbmcpID1cbiAgbGV0IHJlYyBjdXRfb25fY2hhcl9mcm9tIHMgaSBjID1cbiAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgaSAoai1pKSwgU3RyaW5nLnN1YiBzIChqKzEpIChTdHJpbmcubGVuZ3RoIHMgLSAoaisxKSlcbiAgaW5cbiAgbGV0IHJlYyByY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLnJpbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyAwIGosIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCBfLCBwID0gY3V0X29uX2NoYXJfZnJvbSBodG1sIDAgJz4nIGluXG4gIGxldCByLCBfID0gcmN1dF9vbl9jaGFyX2Zyb20gcCAoU3RyaW5nLmxlbmd0aCBwIC0gMSkgJzwnIGluXG4gIHJcblxuXG5sZXQgaHRtbF92b2lkX2VsZW1lbnRzID0gU3RyaW5nU2V0Lm9mX2xpc3QgW1xuICBcImltZ1wiO1xuICBcImlucHV0XCI7XG4gIFwibGlua1wiO1xuICBcIm1ldGFcIjtcbiAgXCJiclwiO1xuICBcImhyXCI7XG4gIFwic291cmNlXCI7XG4gIFwid2JyXCI7XG4gIFwicGFyYW1cIjtcbiAgXCJlbWJlZFwiO1xuICBcImJhc2VcIjtcbiAgXCJhcmVhXCI7XG4gIFwiY29sXCI7XG4gIFwidHJhY2tcIjtcbiAgXCJrZXlnZW5cIjtcbl1cblxubGV0ICggQCApIGwxIGwyID1cbiAgTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBsMSkgbDJcbiIsIm9wZW4gT21kX3V0aWxzXG5vcGVuIFByaW50ZlxuXG4oKiogcmVmZXJlbmNlcywgaW5zdGFuY2VzIGNyZWF0ZWQgaW4gW09tZF9wYXJzZXIubWFpbl9wYXJzZV0gYW5kXG4gICAgYWNjZXNzZWQgaW4gdGhlIFtPbWRfYmFja2VuZF0gbW9kdWxlLiAqKVxubW9kdWxlIFIgPSBNYXAuTWFrZShTdHJpbmcpXG5jbGFzcyByZWZfY29udGFpbmVyIDogb2JqZWN0XG4gICAgdmFsIG11dGFibGUgYyA6IChzdHJpbmcgKiBzdHJpbmcpIFIudFxuICAgIG1ldGhvZCBhZGRfcmVmIDogUi5rZXkgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0XG4gICAgbWV0aG9kIGdldF9yZWYgOiBSLmtleSAtPiAoc3RyaW5nICogc3RyaW5nKSBvcHRpb25cbiAgICBtZXRob2QgZ2V0X2FsbCA6IChzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nKSkgbGlzdFxuICBlbmQgPSBvYmplY3RcbiAgdmFsIG11dGFibGUgYyA9IFIuZW1wdHlcbiAgdmFsIG11dGFibGUgYzIgPSBSLmVtcHR5XG5cbiAgbWV0aG9kIGdldF9hbGwgPSBSLmJpbmRpbmdzIGNcblxuICBtZXRob2QgYWRkX3JlZiBuYW1lIHRpdGxlIHVybCA9XG4gICAgYyA8LSBSLmFkZCBuYW1lICh1cmwsIHRpdGxlKSBjO1xuICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgIGlmIGxuIDw+IG5hbWUgdGhlbiBjMiA8LSBSLmFkZCBsbiAodXJsLCB0aXRsZSkgYzJcblxuICBtZXRob2QgZ2V0X3JlZiBuYW1lID1cbiAgICB0cnlcbiAgICAgIGxldCAodXJsLCB0aXRsZSkgYXMgciA9XG4gICAgICAgIHRyeSBSLmZpbmQgbmFtZSBjXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgbGV0IGxuID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBuYW1lIGluXG4gICAgICAgICAgdHJ5IFIuZmluZCBsbiBjXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFIuZmluZCBsbiBjMlxuICAgICAgaW4gU29tZSByXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIE5vbmVcbmVuZFxuXG50eXBlIGVsZW1lbnQgPVxuICB8IEgxIG9mIHRcbiAgfCBIMiBvZiB0XG4gIHwgSDMgb2YgdFxuICB8IEg0IG9mIHRcbiAgfCBINSBvZiB0XG4gIHwgSDYgb2YgdFxuICB8IFBhcmFncmFwaCBvZiB0XG4gIHwgVGV4dCBvZiBzdHJpbmdcbiAgfCBFbXBoIG9mIHRcbiAgfCBCb2xkIG9mIHRcbiAgfCBVbCBvZiB0IGxpc3RcbiAgfCBPbCBvZiB0IGxpc3RcbiAgfCBVbHAgb2YgdCBsaXN0XG4gIHwgT2xwIG9mIHQgbGlzdFxuICB8IENvZGUgb2YgbmFtZSAqIHN0cmluZ1xuICB8IENvZGVfYmxvY2sgb2YgbmFtZSAqIHN0cmluZ1xuICB8IEJyXG4gIHwgSHJcbiAgfCBOTFxuICB8IFVybCBvZiBocmVmICogdCAqIHRpdGxlXG4gIHwgUmVmIG9mIHJlZl9jb250YWluZXIgKiBuYW1lICogc3RyaW5nICogZmFsbGJhY2tcbiAgfCBJbWdfcmVmIG9mIHJlZl9jb250YWluZXIgKiBuYW1lICogYWx0ICogZmFsbGJhY2tcbiAgfCBIdG1sIG9mIG5hbWUgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIHRcbiAgfCBIdG1sX2Jsb2NrIG9mIG5hbWUgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIHRcbiAgfCBIdG1sX2NvbW1lbnQgb2Ygc3RyaW5nXG4gIHwgUmF3IG9mIHN0cmluZ1xuICB8IFJhd19ibG9jayBvZiBzdHJpbmdcbiAgfCBCbG9ja3F1b3RlIG9mIHRcbiAgfCBJbWcgb2YgYWx0ICogc3JjICogdGl0bGVcbiAgfCBYIG9mXG4gICAgICA8IG5hbWUgOiBzdHJpbmc7XG4gICAgICAgIHRvX2h0bWwgOiA/aW5kZW50OmludCAtPiAodCAtPiBzdHJpbmcpIC0+IHQgLT4gc3RyaW5nIG9wdGlvbjtcbiAgICAgICAgdG9fc2V4cHIgOiAodCAtPiBzdHJpbmcpIC0+IHQgLT4gc3RyaW5nIG9wdGlvbjtcbiAgICAgICAgdG9fdCA6IHQgLT4gdCBvcHRpb24gPlxuYW5kIGZhbGxiYWNrID0gPCB0b19zdHJpbmcgOiBzdHJpbmcgOyB0b190IDogdCA+XG5hbmQgbmFtZSA9IHN0cmluZ1xuYW5kIGFsdCA9IHN0cmluZ1xuYW5kIHNyYyA9IHN0cmluZ1xuYW5kIGhyZWYgPSBzdHJpbmdcbmFuZCB0aXRsZSA9IHN0cmluZ1xuYW5kIHQgPSBlbGVtZW50IGxpc3RcblxuXG5sZXQgcmVjIGxvb3NlX2NvbXBhcmUgdDEgdDIgPSBtYXRjaCB0MSx0MiB3aXRoXG4gIHwgSDEgZTE6OnRsMSwgSDEgZTI6OnRsMlxuICB8IEgyIGUxOjp0bDEsIEgyIGUyOjp0bDJcbiAgfCBIMyBlMTo6dGwxLCBIMyBlMjo6dGwyXG4gIHwgSDQgZTE6OnRsMSwgSDQgZTI6OnRsMlxuICB8IEg1IGUxOjp0bDEsIEg1IGUyOjp0bDJcbiAgfCBINiBlMTo6dGwxLCBINiBlMjo6dGwyXG4gIHwgRW1waCBlMTo6dGwxLCBFbXBoIGUyOjp0bDJcbiAgfCBCb2xkIGUxOjp0bDEsIEJvbGQgZTI6OnRsMlxuICB8IEJsb2NrcXVvdGUgZTE6OnRsMSwgQmxvY2txdW90ZSBlMjo6dGwyXG4gIHwgUGFyYWdyYXBoIGUxOjp0bDEsIFBhcmFncmFwaCBlMjo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBVbCBlMTo6dGwxLCBVbCBlMjo6dGwyXG4gIHwgT2wgZTE6OnRsMSwgT2wgZTI6OnRsMlxuICB8IFVscCBlMTo6dGwxLCBVbHAgZTI6OnRsMlxuICB8IE9scCBlMTo6dGwxLCBPbHAgZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlX2xpc3RzIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgKENvZGUgXyBhcyBlMSk6OnRsMSwgKENvZGUgXyBhcyBlMik6OnRsMlxuICB8IChCciBhcyBlMSk6OnRsMSwgKEJyIGFzIGUyKTo6dGwyXG4gIHwgKEhyIGFzIGUxKTo6dGwxLCAoSHIgYXMgZTIpOjp0bDJcbiAgfCAoTkwgYXMgZTEpOjp0bDEsIChOTCBhcyBlMik6OnRsMlxuICB8IChIdG1sIF8gYXMgZTEpOjp0bDEsIChIdG1sIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9ibG9jayBfIGFzIGUxKTo6dGwxLCAoSHRtbF9ibG9jayBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhdyBfIGFzIGUxKTo6dGwxLCAoUmF3IF8gYXMgZTIpOjp0bDJcbiAgfCAoUmF3X2Jsb2NrIF8gYXMgZTEpOjp0bDEsIChSYXdfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChIdG1sX2NvbW1lbnQgXyBhcyBlMSk6OnRsMSwgKEh0bWxfY29tbWVudCBfIGFzIGUyKTo6dGwyXG4gIHwgKEltZyBfIGFzIGUxKTo6dGwxLCAoSW1nIF8gYXMgZTIpOjp0bDJcbiAgfCAoVGV4dCBfIGFzIGUxKTo6dGwxLCAoVGV4dCBfIGFzIGUyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBDb2RlX2Jsb2NrKGwxLGMxKTo6dGwxLCBDb2RlX2Jsb2NrKGwyLGMyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgbDEgbDIsIFN0cmluZy5sZW5ndGggYzEgLSBTdHJpbmcubGVuZ3RoIGMyIHdpdGhcbiAgICAgICAgIHwgMCwgMCAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIGMyIHdpdGhcbiAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAxIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgYzEgKGMyXlwiXFxuXCIpIHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IDAsIC0xIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgKGMxXlwiXFxuXCIpIGMyIHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGksIF8gLT4gaVxuICAgICAgKVxuXG4gIHwgVXJsIChocmVmMSwgdDEsIHRpdGxlMSk6OnRsMSwgVXJsIChocmVmMiwgdDIsIHRpdGxlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGhyZWYxIGhyZWYyIHdpdGhcbiAgICAgICAgIHwgMCAtPiAobWF0Y2ggbG9vc2VfY29tcGFyZSB0MSB0MiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IChtYXRjaCBjb21wYXJlIHRpdGxlMSB0aXRsZTIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBSZWYgKHJlZl9jb250YWluZXIxLCBuYW1lMSwgeDEsIGZhbGxiYWNrMSk6OnRsMSxcbiAgICAgICAgUmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgfCBJbWdfcmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIEltZ19yZWYgKHJlZl9jb250YWluZXIyLCBuYW1lMiwgeDIsIGZhbGxiYWNrMik6OnRsMlxuICAgICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKG5hbWUxLCB4MSkgKG5hbWUyLCB4Mikgd2l0aFxuICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgbGV0IGNmZiA9XG4gICAgICAgICAgICAgICBpZiBmYWxsYmFjazEjdG9fc3RyaW5nID0gZmFsbGJhY2syI3RvX3N0cmluZyB0aGVuXG4gICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9vc2VfY29tcGFyZSAoZmFsbGJhY2sxI3RvX3QpIChmYWxsYmFjazIjdG9fdClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgaWYgY2ZmID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgY29tcGFyZSAocmVmX2NvbnRhaW5lcjEjZ2V0X2FsbCkgKHJlZl9jb250YWluZXIyI2dldF9hbGwpXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgY2ZmXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IFggZTE6OnRsMSwgWCBlMjo6dGwyIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSAoZTEjbmFtZSkgKGUyI25hbWUpIHdpdGhcbiAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSAoZTEjdG9fdCkgKGUyI3RvX3QpIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGkgLT4gaSlcbiAgfCBYIF86Ol8sIF8gLT4gMVxuICB8IF8sIFggXzo6XyAtPiAtMVxuICB8IF8gLT4gY29tcGFyZSB0MSB0MlxuXG5hbmQgbG9vc2VfY29tcGFyZV9saXN0cyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT4gMFxuICAgIHwgZTE6OnRsMSwgZTI6OnRsMiAtPlxuICAgICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZSBlMSBlMiB3aXRoXG4gICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlX2xpc3RzIHRsMSB0bDJcbiAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCBfIC0+IC0xXG5cblxudHlwZSB0b2sgPSAoKiBDcyhuKSBtZWFucyAobisyKSB0aW1lcyBDICopXG58IEFtcGVyc2FuZFxufCBBbXBlcnNhbmRzIG9mIGludFxufCBBdFxufCBBdHMgb2YgaW50XG58IEJhY2txdW90ZVxufCBCYWNrcXVvdGVzIG9mIGludFxufCBCYWNrc2xhc2hcbnwgQmFja3NsYXNocyBvZiBpbnRcbnwgQmFyXG58IEJhcnMgb2YgaW50XG58IENhcmV0XG58IENhcmV0cyBvZiBpbnRcbnwgQ2JyYWNlXG58IENicmFjZXMgb2YgaW50XG58IENvbG9uXG58IENvbG9ucyBvZiBpbnRcbnwgQ29tbWFcbnwgQ29tbWFzIG9mIGludFxufCBDcGFyZW50aGVzaXNcbnwgQ3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgQ2JyYWNrZXRcbnwgQ2JyYWNrZXRzIG9mIGludFxufCBEb2xsYXJcbnwgRG9sbGFycyBvZiBpbnRcbnwgRG90XG58IERvdHMgb2YgaW50XG58IERvdWJsZXF1b3RlXG58IERvdWJsZXF1b3RlcyBvZiBpbnRcbnwgRXhjbGFtYXRpb25cbnwgRXhjbGFtYXRpb25zIG9mIGludFxufCBFcXVhbFxufCBFcXVhbHMgb2YgaW50XG58IEdyZWF0ZXJ0aGFuXG58IEdyZWF0ZXJ0aGFucyBvZiBpbnRcbnwgSGFzaFxufCBIYXNocyBvZiBpbnRcbnwgTGVzc3RoYW5cbnwgTGVzc3RoYW5zIG9mIGludFxufCBNaW51c1xufCBNaW51c3Mgb2YgaW50XG58IE5ld2xpbmVcbnwgTmV3bGluZXMgb2YgaW50XG58IE51bWJlciBvZiBzdHJpbmdcbnwgT2JyYWNlXG58IE9icmFjZXMgb2YgaW50XG58IE9wYXJlbnRoZXNpc1xufCBPcGFyZW50aGVzaXNzIG9mIGludFxufCBPYnJhY2tldFxufCBPYnJhY2tldHMgb2YgaW50XG58IFBlcmNlbnRcbnwgUGVyY2VudHMgb2YgaW50XG58IFBsdXNcbnwgUGx1c3Mgb2YgaW50XG58IFF1ZXN0aW9uXG58IFF1ZXN0aW9ucyBvZiBpbnRcbnwgUXVvdGVcbnwgUXVvdGVzIG9mIGludFxufCBTZW1pY29sb25cbnwgU2VtaWNvbG9ucyBvZiBpbnRcbnwgU2xhc2hcbnwgU2xhc2hzIG9mIGludFxufCBTcGFjZVxufCBTcGFjZXMgb2YgaW50XG58IFN0YXJcbnwgU3RhcnMgb2YgaW50XG58IFRhYlxufCBUYWJzIG9mIGludFxufCBUaWxkZVxufCBUaWxkZXMgb2YgaW50XG58IFVuZGVyc2NvcmVcbnwgVW5kZXJzY29yZXMgb2YgaW50XG58IFdvcmQgb2Ygc3RyaW5nXG58IFRhZyBvZiBuYW1lICogZXh0ZW5zaW9uXG5cbmFuZCBleHRlbnNpb24gPSA8XG4gIHBhcnNlcl9leHRlbnNpb24gOlxuICAgIHQgLT4gdG9rIGxpc3QgLT4gdG9rIGxpc3QgLT4gKCh0ICogdG9rIGxpc3QgKiB0b2sgbGlzdCkgb3B0aW9uKTtcbiAgdG9fc3RyaW5nIDogc3RyaW5nXG4+XG5cbnR5cGUgZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbiBsaXN0XG5cbmxldCBlbXB0eV9leHRlbnNpb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPSBOb25lXG4gIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG5lbmRcblxubGV0IHJlYyBub3JtYWxpc2VfbWQgbCA9XG4gIGlmIGRlYnVnIHRoZW5cbiAgICBlcHJpbnRmIFwiKE9NRCkgbm9ybWFsaXNlX21kXFxuJSFcIjtcbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MXVxuICAgIHwgW05MXSAtPiBbXVxuICAgIHwgW10gLT4gW11cbiAgICB8IE5MOjpOTDo6Tkw6OnRsIC0+IGxvb3AgKE5MOjpOTDo6dGwpXG4gICAgfCBUZXh0IHQxOjpUZXh0IHQyOjp0bCAtPiBsb29wIChUZXh0KHQxXnQyKTo6dGwpXG4gICAgfCBOTDo6KCgoUGFyYWdyYXBoIF98SDEgX3xIMiBffEgzIF98SDQgX3xINSBffEg2IF9cbiAgICAgICAgICAgIHxDb2RlX2Jsb2NrIF98T2wgX3xVbCBffE9scCBffFVscCBfKTo6XykgYXMgdGwpIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtUZXh0IFwiIFwiXTo6dGwgLT4gbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoW106OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaChwKTo6dGwgLT4gUGFyYWdyYXBoKGxvb3AgcCk6Omxvb3AgdGxcbiAgICB8IEgxIHY6OnRsIC0+IEgxKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEgyIHY6OnRsIC0+IEgyKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEgzIHY6OnRsIC0+IEgzKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg0IHY6OnRsIC0+IEg0KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg1IHY6OnRsIC0+IEg1KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg2IHY6OnRsIC0+IEg2KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEVtcGggdjo6dGwgLT4gRW1waChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCb2xkIHY6OnRsIC0+IEJvbGQobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVWwgdjo6dGwgLT4gVWwoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2wgdjo6dGwgLT4gT2woTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVWxwIHY6OnRsIC0+IFVscChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBPbHAgdjo6dGwgLT4gT2xwKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgdjo6dGwgLT4gQmxvY2txdW90ZShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBVcmwoaHJlZix2LHRpdGxlKTo6dGwgLT4gVXJsKGhyZWYsKGxvb3AgdiksdGl0bGUpOjpsb29wIHRsXG4gICAgfCBUZXh0IF9cbiAgICB8IENvZGUgX1xuICAgIHwgQ29kZV9ibG9jayBfXG4gICAgfCBCclxuICAgIHwgSHJcbiAgICB8IE5MXG4gICAgfCBSZWYgX1xuICAgIHwgSW1nX3JlZiBfXG4gICAgfCBIdG1sIF9cbiAgICB8IEh0bWxfYmxvY2sgX1xuICAgIHwgSHRtbF9jb21tZW50IF9cbiAgICB8IFJhdyBfXG4gICAgfCBSYXdfYmxvY2sgX1xuICAgIHwgSW1nIF9cbiAgICB8IFggXyBhcyB2Ojp0bCAtPiB2Ojpsb29wIHRsXG4gIGluXG4gIGxldCBhID0gbG9vcCBsIGluXG4gIGxldCBiID0gbG9vcCBhIGluXG4gIGlmIGEgPSBiIHRoZW5cbiAgICBhXG4gIGVsc2VcbiAgICBub3JtYWxpc2VfbWQgYlxuXG5cblxubGV0IGR1bW15X1ggPVxuICBYIChvYmplY3RcbiAgICBtZXRob2QgbmFtZSA9IFwiZHVtbXlcIlxuICAgIG1ldGhvZCB0b19odG1sID8oaW5kZW50PTApIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fc2V4cHIgXyBfID0gTm9uZVxuICAgIG1ldGhvZCB0b190IF8gPSBOb25lXG4gIGVuZClcblxuXG5sZXQgcmVjIHZpc2l0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgUGFyYWdyYXBoIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFBhcmFncmFwaCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDEgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgxKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMiB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDIodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgzIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgzKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDQodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg1IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDYgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg2KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBFbXBoIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBFbXBoKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCb2xkIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCb2xkKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVbCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBVbChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBPbChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWxwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE9scCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBPbHAoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQmxvY2txdW90ZSB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCbG9ja3F1b3RlKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVcmwoaHJlZix2LHRpdGxlKSBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVXJsKGhyZWYsdmlzaXQgZiB2LHRpdGxlKTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFRleHQgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IENvZGUgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IENvZGVfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJlZiBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSW1nX3JlZiBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbF9ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbF9jb21tZW50IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXcgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJhd19ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSW1nICBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgWCAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJyIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCcjo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEhyIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIcjo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE5MIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBOTDo6dmlzaXQgZiB0bFxuICAgIGVuZFxuXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjb2RlX3N0eWxpc3QgPSBsYW5nOnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG5cbm9wZW4gUHJpbnRmXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxub3BlbiBPbWRfdXRpbHNcblxubGV0IGRlZmF1bHRfbGFuZ3VhZ2UgPSByZWYgXCJcIlxuXG5cblxubGV0IHRleHRfb2ZfbWQgbWQgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIF8gOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgcTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgbmFtZSk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHQpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXcgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhd19ibG9jayB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBFbXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgKFVsIGwgfCBPbCBsKSA6OiB0bCAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBpdGVtIC0+IGxvb3AgaXRlbTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbicpIGw7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbHAgbCB8IE9scCBsKSA6OiB0bCAtPlxuICAgICAgICBMaXN0Lml0ZXIgbG9vcCBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGUobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBsb29wIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgxIG1kIDo6IHRsXG4gICAgfCBIMiBtZCA6OiB0bFxuICAgIHwgSDMgbWQgOjogdGxcbiAgICB8IEg0IG1kIDo6IHRsXG4gICAgfCBINSBtZCA6OiB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IGRlZmF1bHRfY29kZV9zdHlsaXN0IH5sYW5nIGNvZGUgPSBjb2RlXG5cbmxldCBmaWx0ZXJfdGV4dF9vbWRfcmV2IGwgPVxuICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGlmIGIgdGhlbiByIGVsc2UgbFxuICAgIHwgKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIik6OnRsIC0+XG4gICAgICBsb29wIHRydWUgciB0bFxuICAgIHwgZTo6dGwgLT5cbiAgICAgIGxvb3AgYiAoZTo6cikgdGxcbiAgaW5cbiAgbG9vcCBmYWxzZSBbXSBsXG5cbmxldCByZW1vdmVfbGlua3MgOiB0IC0+IHQgPVxuICBPbWRfcmVwcmVzZW50YXRpb24udmlzaXRcbiAgICAoZnVuIGUgLT5cbiAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IFVybChfLCB0LCBfKSAtPiBTb21lIHRcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKVxuXG5sZXQgcmVjIGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWRcbiAgICA/KHJlbW92ZV9oZWFkZXJfbGlua3M9ZmFsc2UpXG4gICAgPyhvdmVycmlkZT0oZnVuIChlOmVsZW1lbnQpIC0+IChOb25lOnN0cmluZyBvcHRpb24pKSlcbiAgICA/KHBpbmRlbnQ9ZmFsc2UpXG4gICAgPyhubDJicj1mYWxzZSlcbiAgICA/Y3M6KGNvZGVfc3R5bGU9ZGVmYXVsdF9jb2RlX3N0eWxpc3QpXG4gICAgbWRcbiAgPVxuICBsZXQgaWRzID0gb2JqZWN0KHRoaXMpXG4gICAgdmFsIG11dGFibGUgaWRzID0gU3RyaW5nU2V0LmFkZCBcIlwiIFN0cmluZ1NldC5lbXB0eVxuICAgIG1ldGhvZCBtYW5nbGUgaWQgPVxuICAgICAgbGV0IHJlYyBtIGkgPVxuICAgICAgICBpZiBTdHJpbmdTZXQubWVtIGlkIGlkcyB0aGVuXG4gICAgICAgICAgbGV0IGlkeCA9IGlmIGkgPiAwIHRoZW4gaWReXCJfXCJec3RyaW5nX29mX2ludCBpIGVsc2UgaWQgaW5cbiAgICAgICAgICBpZiBTdHJpbmdTZXQubWVtIGlkeCBpZHMgdGhlblxuICAgICAgICAgICAgbSAoaSsxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChpZHMgPC0gU3RyaW5nU2V0LmFkZCBpZHggaWRzO1xuICAgICAgICAgICAgIGlkeClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChpZHMgPC0gU3RyaW5nU2V0LmFkZCBpZCBpZHM7XG4gICAgICAgICAgIGlkKVxuICAgICAgaW4gbSAwXG4gIGVuZCBpblxuICBsZXQgZW1wdHkgcyA9XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFxuJyAtPiBsb29wIChpKzEpXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICB0cnVlXG4gICAgaW5cbiAgICBsb29wIDBcbiAgaW5cbiAgbGV0IHJlbW92ZV90cmFpbGluZ19ibGFua3MgcyA9XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA8IDAgdGhlbiBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICd8J1xcdCd8J1xcbicgLT5cbiAgICAgICAgICBsb29wIChwcmVkIGkpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIHRoZW5cbiAgICAgICAgICAgIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBTdHJpbmcuc3ViIHMgMCAoaSsxKVxuICAgIGluIGxvb3AgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgaGVhZGVycyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIGxvb3AgaW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IFggeCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+IGxvb3AgaW5kZW50IHRcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6aW5kZW50XG4gICAgICAgICAgICAgICAoaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlKSBtZFxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJsb2NrcXVvdGUgcSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxibG9ja3F1b3RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHE7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvYmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIGZhbGxiYWNrKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcmMjZ2V0X3JlZiBuYW1lIHdpdGhcbiAgICAgICAgICAgIHwgU29tZShocmVmLCB0aXRsZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnRcbiAgICAgICAgICAgICAgICAoVXJsKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBocmVmLFxuICAgICAgICAgICAgICAgICAgICAgW1RleHQodGV4dCldLFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKVxuICAgICAgICAgICAgICAgICA6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoc3JjLCB0aXRsZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnRcbiAgICAgICAgICAgICAgICAoSW1nKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQsXG4gICAgICAgICAgICAgICAgICAgICBodG1sZW50aXRpZXMgfm1kOnRydWUgc3JjLFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKTo6dGwpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgKGZhbGxiYWNrI3RvX3QpO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBpbmRlbnQgdGxcbiAgICB8IFBhcmFncmFwaCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKGxldCBzID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgIGlmIGVtcHR5IHMgdGhlblxuICAgICAgICAgICAgICgpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxwPlwiO1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAocmVtb3ZlX3RyYWlsaW5nX2JsYW5rcyBzKTtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L3A+XFxuXCI7XG4gICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxpbWcgc3JjPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgc3JjKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBhbHQ9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiO1xuICAgICAgICAgIGlmIHRpdGxlIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgKEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgXCIpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFRleHQgdCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogQnVmZmVyLmFkZF9zdHJpbmcgYiB0OyAqKVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBFbXBoIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGVtPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IG1kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2VtPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJvbGQgbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8c3Ryb25nPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IG1kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L3N0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoVWwgbHxPbCBsfFVscCBsfE9scCBsIGFzIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjxvbD5cIlxuICAgICAgICAgICAgICB8IF8gLT4gXCI8dWw+XCIpO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGxpPlwiO1xuICAgICAgICAgICAgICAgIGxvb3AgKGluZGVudCsyKSBsaTtcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9saT5cIlxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgbDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgICAgfCBPbCBffE9scCBfIC0+IFwiPC9vbD5cIlxuICAgICAgICAgICAgICB8IF8gLT4gXCI8L3VsPlwiKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsYW5nID0gXCJcIiAmJiAhZGVmYXVsdF9sYW5ndWFnZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxwcmU+PGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiXG4gICAgICAgICAgICAgICFkZWZhdWx0X2xhbmd1YWdlICFkZWZhdWx0X2xhbmd1YWdlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPHByZSBjbGFzcz0nJXMnPjxjb2RlIGNsYXNzPSclcyc+XCIgbGFuZyBsYW5nO1xuICAgICAgICAgIGxldCBuZXdfYyA9IGNvZGVfc3R5bGUgfmxhbmc6bGFuZyBjIGluXG4gICAgICAgICAgaWYgYyA9IG5ld19jIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIG5ld19jO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2NvZGU+PC9wcmU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZShsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8Y29kZT5cIlxuICAgICAgICAgIGVsc2UgaWYgbGFuZyA9IFwiXCIgdGhlblxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPGNvZGUgY2xhc3M9JyVzJz5cIiAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJyIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoci8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3IHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSYXdfYmxvY2sgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIFtdKSBhcyBlIDo6IHRsXG4gICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgIGxldCBhdHRycyA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSBhcyBlIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IGJvZHk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSBhcyBlIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IGJvZHk7XG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgICApXG4gICAgICBlbmRcbiAgICB8IEh0bWxfY29tbWVudCBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBzIGluXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxhIGhyZWY9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBocmVmKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgIGlmIHRpdGxlIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiB0aXRsZT0nXCI7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInXCI7XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvYT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDEgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDEgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDEgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDIgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDIgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDIgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDMgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDMgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDMgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDQgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDQgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDQgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oND5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDUgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDUgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDUgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oNT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDYgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDYgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDYgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oNj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBOTCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbmwyYnIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxiciAvPlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICBpblxuICBsb29wIDAgbWQ7XG4gIEJ1ZmZlci5jb250ZW50cyBiLCBMaXN0LnJldiAhaGVhZGVyc1xuXG5hbmQgc3RyaW5nX29mX2F0dHJzIGF0dHJzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgIGlmIG5vdChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICBlbHNlIGlmIG5vdChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgIHwgYSwgTm9uZSAtPlxuICAgICAgICAoKiBpZiBodG1sNCB0aGVuICopXG4gICAgICAgICgqICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJXMnXCIgYSBhICopXG4gICAgICAgICgqIGVsc2UgKilcbiAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnM7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmFuZCBodG1sX29mX21kXG4gICAgPyhvdmVycmlkZT0oZnVuIChlOmVsZW1lbnQpIC0+IChOb25lOnN0cmluZyBvcHRpb24pKSlcbiAgICA/KHBpbmRlbnQ9ZmFsc2UpXG4gICAgPyhubDJicj1mYWxzZSlcbiAgICA/Y3NcbiAgICBtZFxuICA9XG4gIGZzdCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyID9jcyBtZClcbmFuZCBoZWFkZXJzX29mX21kID9yZW1vdmVfaGVhZGVyX2xpbmtzIG1kID1cbiAgc25kIChodG1sX2FuZF9oZWFkZXJzX29mX21kID9yZW1vdmVfaGVhZGVyX2xpbmtzIG1kKVxuXG5cbmxldCByZWMgc2V4cHJfb2ZfbWQgbWQgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT5cbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICBsb29wIHQ7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHgjdG9fc2V4cHIgc2V4cHJfb2ZfbWQgbWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoWFwiO1xuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6MCBodG1sX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCbG9ja3F1b3RlXCI7XG4gICAgICAgIGxvb3AgcTtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBfKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmVmICVTICVTKVwiIG5hbWUgdGV4dDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBfKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nX3JlZiAlUyAlUylcIiBuYW1lIGFsdDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoUGFyYWdyYXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihJbWcgJVMgJVMgJVMpXCIgYWx0IHNyYyB0aXRsZTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihUZXh0ICVTXCIgdDtcbiAgICAgICAgbGV0IHJlYyBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICAgICAgYnByaW50ZiBiIFwiICVTXCIgdDtcbiAgICAgICAgICAgIGYgdGxcbiAgICAgICAgICB8IHggLT4geFxuICAgICAgICBpblxuICAgICAgICBsZXQgdGwgPSBmIHRsIGluXG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEVtcGhcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJvbGRcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoT2xcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVbFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTticHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgT2xwIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9scFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTsgYnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVscCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGUobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGUgJVMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoQ29kZV9ibG9jayAlcylcIiBjO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCciA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJyKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEhyKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3ICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhd19ibG9jayBzIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihSYXdfYmxvY2sgJVMpXCIgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWwgJXMgJXMgXCIgdGFnbmFtZSAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sX2Jsb2NrICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9jb21tZW50ICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVXJsICVTICVTICVTKVwiIGhyZWYgKGh0bWxfb2ZfbWQgcykgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgxIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDFcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDIgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIMlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMyBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgzXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg0IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDRcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDUgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINVwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg2XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoTkwpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gICAgbG9vcCBtZDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKiAyKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcuJyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPiAwICYmXG4gICAgICAgICAgIG1hdGNoIHMuW2ktMV0gd2l0aFxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnICdcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJy0nIGFzIGMgLT5cbiAgICAgICAgaWYgKGkgPSAwIHx8IG1hdGNoIHMuW2ktMV0gd2l0aCAnICd8ICdcXG4nIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICYmIChpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgKHMuW2krMV0gPSAnICd8fHMuW2krMV0gPSAnLScpKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICcrJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnICcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyEnIGFzIGMgLT5cbiAgICAgICAgaWYgaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnWycgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPCcgYXMgYyAtPlxuICAgICAgICBpZiBpIDw+IFN0cmluZy5sZW5ndGggcyAtIDEgJiZcbiAgICAgICAgICAgICAobWF0Y2ggcy5baSsxXSB3aXRoICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICc+JyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPSAwIHx8XG4gICAgICAgICAgICAgKG1hdGNoIHMuW2ktMV0gd2l0aCAnICcgfCAnXFxuJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnIycgYXMgYyAtPlxuICAgICAgICAgaWYgaSA9IDAgfHwgcy5baS0xXSA9ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnXFxcXCcgfCAnWycgfCAnXScgfCAnKCcgfCAnKScgfCAnYCcgfCAnKicgYXMgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgZG9uZTtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmVjIG1hcmtkb3duX29mX21kIG1kID1cbiAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFya2Rvd25fb2ZfbWQoJVMpXFxuJSFcIiAoc2V4cHJfb2ZfbWQgbWQpO1xuICBsZXQgcXVvdGUgPyhpbmRlbnQ9MCkgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgcmVjIGxvb3AgbmwgaSA9XG4gICAgICBpZiBpIDwgbCB0aGVuXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgbmwgJiYgaSA8IGwgLSAxIHRoZW5cbiAgICAgICAgICAgIChmb3IgaSA9IDEgdG8gaW5kZW50IGRvXG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICdcbiAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+IFwiKTtcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBsb29wIHRydWUgKHN1Y2MgaSlcbiAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICAgICAgICBsb29wIGZhbHNlIChzdWNjIGkpXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGluIGxvb3AgdHJ1ZSAwXG4gIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgYWRkX3NwYWNlcyBuID0gZm9yIGkgPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJyAnIGRvbmUgaW5cbiAgbGV0IHJlZmVyZW5jZXMgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgPyhmc3RfcF9pbl9saT10cnVlKSA/KGlzX2luX2xpc3Q9ZmFsc2UpIGxpc3RfaW5kZW50IGwgPVxuICAgICgqIFtsaXN0X2luZGVudDogaW50XSBpcyB0aGUgaW5kZW50YXRpb24gbGV2ZWwgaW4gbnVtYmVyIG9mIHNwYWNlcy4gKilcbiAgICAoKiBbaXNfaW5fbGlzdDogYm9vbF0gaXMgbmVjZXNzYXJ5IHRvIGtub3cgaWYgd2UgYXJlIGluc2lkZSBhIHBhcmFncmFwaFxuICAgICAgIHdoaWNoIGlzIGluc2lkZSBhIGxpc3QgaXRlbSBiZWNhdXNlIHRob3NlIG5lZWQgdG8gYmUgaW5kZW50ZWQhICopXG4gICAgbGV0IGxvb3AgPyhmc3RfcF9pbl9saT1mc3RfcF9pbl9saSkgPyhpc19pbl9saXN0PWlzX2luX2xpc3QpIGxpc3RfaW5kZW50IGwgPVxuICAgICAgICBsb29wIH5mc3RfcF9pbl9saTpmc3RfcF9pbl9saSB+aXNfaW5fbGlzdDppc19pbl9saXN0IGxpc3RfaW5kZW50IGxcbiAgICBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgWCB4IDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGxpc3RfaW5kZW50IHRcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6MCBodG1sX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHF1b3RlIH5pbmRlbnQ6bGlzdF9pbmRlbnQgKG1hcmtkb3duX29mX21kIHEpKTtcbiAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBpZiAhcmVmZXJlbmNlcyA9IE5vbmUgdGhlbiByZWZlcmVuY2VzIDo9IFNvbWUgcmM7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgKFJhdyhmYWxsYmFjayN0b19zdHJpbmcpOjp0bClcbiAgICB8IFBhcmFncmFwaCBbXSA6OiB0bCAtPiBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgIGlmIGlzX2luX2xpc3QgdGhlblxuICAgICAgICBpZiBmc3RfcF9pbl9saSB0aGVuXG4gICAgICAgICAgYWRkX3NwYWNlcyAobGlzdF9pbmRlbnQtMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCBtZDtcbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCJcXG5cXG5cIjtcbiAgICAgIGxvb3AgfmZzdF9wX2luX2xpOmZhbHNlIGxpc3RfaW5kZW50IHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiFbJXNdKCVzIFxcXCIlc1xcXCIpXCIgYWx0IHNyYyB0aXRsZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKGVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIHQpO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIioqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIioqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxldCBjID0gcmVmIDAgaW4gKCogZG9uJ3QgdXNlIExpc3QuaXRlcmkgYmVjYXVzZSBpdCdzIG5vdCBpbiAzLjEyICopXG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgYztcbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVkLiBcIiAhYztcbiAgICAgICAgICAgICAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBpZiBsaXN0X2luZGVudCA9IDAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVsIGwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiLSBcIjtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBpZiBsaXN0X2luZGVudCA9IDAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgaW5jciBjO1xuICAgICAgICBicHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAoKiBQYXJhZ3JhcGhzID0+IE5vIG5lZWQgb2YgJ1xcbicgKilcbiAgICAgICkgbDtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVscCBsIDo6IHRsIC0+XG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJ1xuICAgICAgICB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICBicHJpbnRmIGIgXCIrIFwiO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF8pOjpfXG4gICAgICB8IE5MOjooSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6XyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJ1xuICAgICAgfCBfIC0+ICgpXG4gICAgICBlbmQ7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBDb2RlKF9sYW5nLCBjKSA6OiB0bCAtPiAoKiBGSVhNRSAqKVxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciAobjppbnQpIChzOmludCBsaXN0KSA9XG4gICAgICAgICAgaWYgbiA+IDAgJiYgbiA8IDEwIHRoZW5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gZSAtPiBlIDw+IG4pIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBjIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIHggYiBpID1cbiAgICAgICAgICBpZiBpID0gbCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBmaWx0ZXIgYiBzIHdpdGhcbiAgICAgICAgICAgIHwgaGQ6Ol8gLT4gaGRcbiAgICAgICAgICAgIHwgW10gLT4geCsxXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggYy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnYCcgLT4gbG9vcCBzIHggKHN1Y2MgYikgKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPiBsb29wIChmaWx0ZXIgYiBzKSAobWF4IGIgeCkgMCAoc3VjYyBpKVxuICAgICAgICBpblxuICAgICAgICAgIGxvb3AgWzE7MjszOzQ7NTs2Ozc7ODs5OzEwXSAwIDAgMFxuICAgICAgaW5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICAgIGlmIGMuWzBdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIGM7XG4gICAgICAgICAgaWYgYy5bU3RyaW5nLmxlbmd0aCBjIC0gMV0gPSAnYCcgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgZW5kO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICBsZXQgbiA9ICgqIGNvbXB1dGUgaG93IG1hbnkgYmFja3F1b3RlcyB3ZSBuZWVkIHRvIHVzZSAqKVxuICAgICAgICBsZXQgZmlsdGVyIG4gcyA9XG4gICAgICAgICAgaWYgbiA+IDAgJiYgbiA8IDEwIHRoZW5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gZSAtPiBlIDw+IG4pIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBjIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICAgIHwgaGQ6Ol8gLT4gaGRcbiAgICAgICAgICAgICAgfCBbXSAtPiAwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggYy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnYCcgLT4gbG9vcCBzIChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgMCAoc3VjYyBpKVxuICAgICAgICBpblxuICAgICAgICAgIGxvb3AgWzM7NDs1OzY7Nzs4Ozk7MTBdIDAgMFxuICAgICAgaW5cbiAgICAgIGxldCBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgbiBzID1cbiAgICAgICAgbGV0IHJlYyBsb29wIHAgaSA9XG4gICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICcgJyk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgcy5baV07XG4gICAgICAgICAgICAgICAgbG9vcCBzLltpXSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgcy5baV07XG4gICAgICAgICAgICAgICAgbG9vcCBzLltpXSAoc3VjYyBpKVxuICAgICAgICBpbiBsb29wICdcXG4nIDBcbiAgICAgIGluXG4gICAgICAgIGlmIG4gPSAwIHRoZW4gICgqIEZJWE1FICopXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICgqIGNhc2Ugd2hlcmUgd2UgY2FuJ3QgdXNlIGJhY2txdW90ZXMgKilcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgb3V0cHV0X2luZGVudGVkX2Jsb2NrICg0K2xpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgdGwgPD4gW10gdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCJcbiAgICAgICAgICBlbmRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcubWFrZSAobGlzdF9pbmRlbnQpICcgJyk7XG4gICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXMlc1xcblwiIChTdHJpbmcubWFrZSBuICdgJylcbiAgICAgICAgICAgICAgKGlmIGxhbmcgPSBcIlwiIHRoZW4gIWRlZmF1bHRfbGFuZ3VhZ2UgZWxzZSBsYW5nKTtcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAobGlzdF9pbmRlbnQpIGM7XG4gICAgICAgICAgICBpZiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcubWFrZSAobGlzdF9pbmRlbnQpICcgJyk7XG4gICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKiAqICpcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJhdyBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIFtdKSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgbGV0IGEgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCBib2R5XG4gICAgICBlbHNlXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgKEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpKTo6dGwgLT5cbiAgICAgIGxldCBuZWVkc19uZXdsaW5lcyA9XG4gICAgICAgIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgfCBOTCA6OiBQYXJhZ3JhcGggcCA6OiBfXG4gICAgICAgIHwgUGFyYWdyYXBoIHAgOjogXyAtPiBwIDw+IFtdXG4gICAgICAgIHwgKEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgX1xuICAgICAgICAgIHwgVWwgXyB8IE9sIF8gfCBVbHAgXyB8IE9scCBfIHwgQ29kZSAoXywgXykgfCBDb2RlX2Jsb2NrIChfLCBfKVxuICAgICAgICAgIHwgVGV4dCBfIHwgRW1waCBfIHwgQm9sZCBfIHwgQnIgfEhyIHwgVXJsIChfLCBfLCBfKVxuICAgICAgICAgIHwgUmVmIChfLCBfLCBfLCBfKSB8IEltZ19yZWYgKF8sIF8sIF8sIF8pXG4gICAgICAgICAgfCBIdG1sIChfLCBfLCBfKVxuICAgICAgICAgIHwgQmxvY2txdW90ZSBfIHwgSW1nIChfLCBfLCBfKSkgOjogXyAtPiB0cnVlXG4gICAgICAgIHwgKCBIdG1sX2Jsb2NrIChfLCBfLCBfKSB8IEh0bWxfY29tbWVudCBfXG4gICAgICAgICAgfCBSYXcgX3xSYXdfYmxvY2sgXykgOjogXy0+IGZhbHNlXG4gICAgICAgIHwgWCBfIDo6IF8gLT4gZmFsc2VcbiAgICAgICAgfCBOTCA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBib2R5ID0gW10gJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyB0aGVuXG4gICAgICAgIChcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICAgIGVsc2VcbiAgICAgICAgKFxuICAgICAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIGlmIGEgPT0gYXR0cnMgdGhlblxuICAgICAgICAgICAgbG9vcCBsaXN0X2luZGVudCBib2R5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbF9vZl9tZCBib2R5KTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgIGlmIG5lZWRzX25ld2xpbmVzIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiO1xuICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICAgICAgKVxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcylcIiAobWFya2Rvd25fb2ZfbWQgcykgaHJlZlxuICAgICAgZWxzZVxuICAgICAgICBicHJpbnRmIGIgXCJbJXNdKCVzIFxcXCIlc1xcXCIpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWYgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDIgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMyBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDUgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID0gMVxuICAgICAgfHwgKEJ1ZmZlci5sZW5ndGggYiA+IDEgJiZcbiAgICAgICAgICBub3QoQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA9ICdcXG4nXG4gICAgICAgICAgICAgICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMikgPSAnXFxuJykpXG4gICAgICB0aGVuXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgMCBtZDtcbiAgICBiZWdpbiBtYXRjaCAhcmVmZXJlbmNlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSByIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIChuYW1lLCAodXJsLCB0aXRsZSkpIC0+XG4gICAgICAgICAgICAgICBpZiB0aXRsZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICBicHJpbnRmIGIgXCJbJXNdOiAlcyBcXG5cIiBuYW1lIHVybFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBicHJpbnRmIGIgXCJbJXNdOiAlcyBcXFwiJXNcXFwiXFxuXCIgbmFtZSB1cmwgdGl0bGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHIjZ2V0X2FsbFxuICAgIGVuZDtcbiAgICBsZXQgcmVzID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgbWFya2Rvd25fb2ZfbWQoJVMpID0+ICVTXFxuJSFcIlxuICAgICAgICAoc2V4cHJfb2ZfbWQgbWQpIHJlcztcbiAgICByZXNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW1wbGVtZW50YXRpb24gbm90ZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgICogLSBUaGlzIG1vZHVsZSBzaG91bGQgZGVwZW5kIG9uIE9DYW1sJ3Mgc3RhbmRhcmQgbGlicmFyeSBvbmx5IGFuZFxuICAgKiBzaG91bGQgYmUgYXMgJ3B1cmUgT0NhbWwnIChpLmUuIGRlcGVuZCBhcyBsZWFzdCBhcyBwb3NzaWJsZSBvblxuICAgKiBleHRlcm5hbCB0b29scykgYXMgcG9zc2libGUuXG5cbiAgICogLSBgd2hpbGUnIGxvb3BzIGFyZSBzb21ldGltZXMgcHJlZmVycmVkIHRvIHJlY3Vyc2lvbiBiZWNhdXNlIHRoaXNcbiAgICogbWF5IGJlIHVzZWQgb24gc3lzdGVtcyB3aGVyZSB0YWlsIHJlY3Vyc2lvbiBpcyBub3Qgd2VsbFxuICAgKiBzdXBwb3J0ZWQuIChJIHRyaWVkIHRvIHdyaXRlIFwid2hpbGVcIiBhcyBvZnRlbiBhcyBwb3NzaWJsZSwgYnV0IGl0XG4gICAqIHR1cm5lZCBvdXQgdGhhdCBpdCB3YXMgcHJldHR5IGluY29udmVuaWVudCwgc28gSSBkbyB1c2VcbiAgICogcmVjdXJzaW9uLiAgV2hlbiBJIGhhdmUgdGltZSwgSSdsbCBkbyBzb21lIHRlc3RzIGFuZCBzZWUgaWYgSVxuICAgKiBuZWVkIHRvIGNvbnZlcnQgcmVjdXJzaXZlIGxvb3BzIGludG8gaXRlcmF0aXZlIGxvb3BzLiBTb3JyeSBpZiBpdFxuICAgKiBtYWtlcyBpdCBoYXJkZXIgdG8gcmVhZC4pXG5cbiopXG5cbigqIGNsYXNzIHR5cGUgdGFnID0gb2JqZWN0IG1ldGhvZCBpc19tZSA6ICdhLiAnYSAtPiBib29sIGVuZCAqKVxuXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxuXG50eXBlIHRva2VuID0gT21kX3JlcHJlc2VudGF0aW9uLnRva1xudHlwZSB0ID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG5cbmxldCBzdHJpbmdfb2ZfdG9rZW4gPSBmdW5jdGlvblxuICB8IFRhZyAobmFtZSwgbykgLT5cbiAgICBpZiBPbWRfdXRpbHMuZGVidWcgdGhlbiBcIlRBRyhcIl5uYW1lXlwiKVwiIF4gbyN0b19zdHJpbmcgZWxzZSBvI3RvX3N0cmluZ1xuICB8IEFtcGVyc2FuZCAtPiBcIiZcIlxuICB8IEFtcGVyc2FuZHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcmJ1xuICB8IEF0IC0+IFwiQFwiXG4gIHwgQXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnQCdcbiAgfCBCYWNrcXVvdGUgLT4gXCJgXCJcbiAgfCBCYWNrcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnYCdcbiAgfCBCYWNrc2xhc2ggLT4gXCJcXFxcXCJcbiAgfCBCYWNrc2xhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxcXCdcbiAgfCBCYXIgLT4gXCJ8XCJcbiAgfCBCYXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfCdcbiAgfCBDYXJldCAtPiBcIl5cIlxuICB8IENhcmV0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ14nXG4gIHwgQ2JyYWNlIC0+IFwifVwiXG4gIHwgQ2JyYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ30nXG4gIHwgQ29sb24gLT4gXCI6XCJcbiAgfCBDb2xvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc6J1xuICB8IENvbW1hIC0+IFwiLFwiXG4gIHwgQ29tbWFzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLCdcbiAgfCBDcGFyZW50aGVzaXMgLT4gXCIpXCJcbiAgfCBDcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKSdcbiAgfCBDYnJhY2tldCAtPiBcIl1cIlxuICB8IENicmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ10nXG4gIHwgRG9sbGFyIC0+IFwiJFwiXG4gIHwgRG9sbGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyQnXG4gIHwgRG90IC0+IFwiLlwiXG4gIHwgRG90cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy4nXG4gIHwgRG91YmxlcXVvdGUgLT4gXCJcXFwiXCJcbiAgfCBEb3VibGVxdW90ZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcIidcbiAgfCBFeGNsYW1hdGlvbiAtPiBcIiFcIlxuICB8IEV4Y2xhbWF0aW9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyEnXG4gIHwgRXF1YWwgLT4gXCI9XCJcbiAgfCBFcXVhbHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc9J1xuICB8IEdyZWF0ZXJ0aGFuIC0+IFwiPlwiXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPidcbiAgfCBIYXNoIC0+IFwiI1wiXG4gIHwgSGFzaHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcjJ1xuICB8IExlc3N0aGFuIC0+IFwiPFwiXG4gIHwgTGVzc3RoYW5zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPCdcbiAgfCBNaW51cyAtPiBcIi1cIlxuICB8IE1pbnVzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy0nXG4gIHwgTmV3bGluZSAtPiBcIlxcblwiXG4gIHwgTmV3bGluZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcXG4nXG4gIHwgTnVtYmVyIHMgLT4gc1xuICB8IE9icmFjZSAtPiBcIntcIlxuICB8IE9icmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd7J1xuICB8IE9wYXJlbnRoZXNpcyAtPiBcIihcIlxuICB8IE9wYXJlbnRoZXNpc3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcoJ1xuICB8IE9icmFja2V0IC0+IFwiW1wiXG4gIHwgT2JyYWNrZXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnWydcbiAgfCBQZXJjZW50IC0+IFwiJVwiXG4gIHwgUGVyY2VudHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICclJ1xuICB8IFBsdXMgLT4gXCIrXCJcbiAgfCBQbHVzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJysnXG4gIHwgUXVlc3Rpb24gLT4gXCI/XCJcbiAgfCBRdWVzdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc/J1xuICB8IFF1b3RlIC0+IFwiJ1wiXG4gIHwgUXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFwnJ1xuICB8IFNlbWljb2xvbiAtPiBcIjtcIlxuICB8IFNlbWljb2xvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc7J1xuICB8IFNsYXNoIC0+IFwiL1wiXG4gIHwgU2xhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLydcbiAgfCBTcGFjZSAtPiBcIiBcIlxuICB8IFNwYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyAnXG4gIHwgU3RhciAtPiBcIipcIlxuICB8IFN0YXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKidcbiAgfCBUYWIgLT4gXCIgICAgXCJcbiAgfCBUYWJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoKDIrbikqNCkgJyAnXG4gIHwgVGlsZGUgLT4gXCJ+XCJcbiAgfCBUaWxkZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd+J1xuICB8IFVuZGVyc2NvcmUgLT4gXCJfXCJcbiAgfCBVbmRlcnNjb3JlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ18nXG4gIHwgV29yZCBzIC0+IHNcblxuXG5sZXQgc2l6ZV9hbmRfbmV3bGluZXMgPSBmdW5jdGlvblxuICB8IFRhZyBfIC0+ICgwLCAwKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2VcbiAgfCBDb2xvbiB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3RcbiAgfCBEb3VibGVxdW90ZSB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhblxuICB8IE1pbnVzIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50IHwgUGx1c1xuICB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSAtPiAoMSwgMClcbiAgfCBBbXBlcnNhbmRzIHggfCBBdHMgeCB8IEJhY2txdW90ZXMgeCB8IEJhY2tzbGFzaHMgeCB8IEJhcnMgeCB8IENhcmV0cyB4XG4gIHwgQ2JyYWNlcyB4IHwgQ29sb25zIHggfCBDb21tYXMgeCB8IENwYXJlbnRoZXNpc3MgeCB8IENicmFja2V0cyB4XG4gIHwgRG9sbGFycyB4IHwgRG90cyB4XG4gIHwgRG91YmxlcXVvdGVzIHggfCBFeGNsYW1hdGlvbnMgeCB8IEVxdWFscyB4IHwgR3JlYXRlcnRoYW5zIHggfCBIYXNocyB4XG4gIHwgTGVzc3RoYW5zIHhcbiAgfCBNaW51c3MgeCB8IE9icmFjZXMgeCB8IE9wYXJlbnRoZXNpc3MgeCB8IE9icmFja2V0cyB4IHwgUGVyY2VudHMgeCB8IFBsdXNzIHhcbiAgfCBRdWVzdGlvbnMgeCB8IFF1b3RlcyB4IHwgU2VtaWNvbG9ucyB4IHwgU2xhc2hzIHggfCBTcGFjZXMgeCB8IFN0YXJzIHhcbiAgfCBUYWJzIHhcbiAgfCBUaWxkZXMgeCB8IFVuZGVyc2NvcmVzIHggLT4gKDIreCwgMClcbiAgfCBOZXdsaW5lIC0+ICgwLCAxKVxuICB8IE5ld2xpbmVzIHggLT4gKDAsIDIreClcbiAgfCBOdW1iZXIgcyB8IFdvcmQgcyAtPiAoU3RyaW5nLmxlbmd0aCBzLCAwKVxuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgYywgbmwgPSBzaXplX2FuZF9uZXdsaW5lcyB0IGluXG4gIGMgKyBubFxuXG5sZXQgc3BsaXRfZmlyc3QgPSBmdW5jdGlvblxuICB8IEFtcGVyc2FuZHMgbiAtPiBBbXBlcnNhbmQsIChpZiBuID4gMCB0aGVuIEFtcGVyc2FuZHMobi0xKSBlbHNlIEFtcGVyc2FuZClcbiAgfCBBdHMgbiAtPiBBdCwgKGlmIG4gPiAwIHRoZW4gQXRzKG4tMSkgZWxzZSBBdClcbiAgfCBCYWNrcXVvdGVzIG4gLT4gQmFja3F1b3RlLCAoaWYgbiA+IDAgdGhlbiBCYWNrcXVvdGVzKG4tMSkgZWxzZSBCYWNrcXVvdGUpXG4gIHwgQmFja3NsYXNocyBuIC0+IEJhY2tzbGFzaCwgKGlmIG4gPiAwIHRoZW4gQmFja3NsYXNocyhuLTEpIGVsc2UgQmFja3NsYXNoKVxuICB8IEJhcnMgbiAtPiBCYXIsIChpZiBuID4gMCB0aGVuIEJhcnMobi0xKSBlbHNlIEJhcilcbiAgfCBDYXJldHMgbiAtPiBDYXJldCwgKGlmIG4gPiAwIHRoZW4gQ2FyZXRzKG4tMSkgZWxzZSBDYXJldClcbiAgfCBDYnJhY2VzIG4gLT4gQ2JyYWNlLCAoaWYgbiA+IDAgdGhlbiBDYnJhY2VzKG4tMSkgZWxzZSBDYnJhY2UpXG4gIHwgQ29sb25zIG4gLT4gQ29sb24sIChpZiBuID4gMCB0aGVuIENvbG9ucyhuLTEpIGVsc2UgQ29sb24pXG4gIHwgQ29tbWFzIG4gLT4gQ29tbWEsIChpZiBuID4gMCB0aGVuIENvbW1hcyhuLTEpIGVsc2UgQ29tbWEpXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IENwYXJlbnRoZXNpcywgKGlmIG4gPiAwIHRoZW4gQ3BhcmVudGhlc2lzcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDcGFyZW50aGVzaXMpXG4gIHwgQ2JyYWNrZXRzIG4gLT4gQ2JyYWNrZXQsIChpZiBuID4gMCB0aGVuIENicmFja2V0cyhuLTEpIGVsc2UgQ2JyYWNrZXQpXG4gIHwgRG9sbGFycyBuIC0+IERvbGxhciwgKGlmIG4gPiAwIHRoZW4gRG9sbGFycyhuLTEpIGVsc2UgRG9sbGFyKVxuICB8IERvdHMgbiAtPiBEb3QsIChpZiBuID4gMCB0aGVuIERvdHMobi0xKSBlbHNlIERvdClcbiAgfCBEb3VibGVxdW90ZXMgbiAtPiBEb3VibGVxdW90ZSwgKGlmIG4gPiAwIHRoZW4gRG91YmxlcXVvdGVzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZSlcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBFeGNsYW1hdGlvbiwgKGlmIG4gPiAwIHRoZW4gRXhjbGFtYXRpb25zKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBFeGNsYW1hdGlvbilcbiAgfCBFcXVhbHMgbiAtPiBFcXVhbCwgKGlmIG4gPiAwIHRoZW4gRXF1YWxzKG4tMSkgZWxzZSBFcXVhbClcbiAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbiwgKGlmIG4gPiAwIHRoZW4gR3JlYXRlcnRoYW5zKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBHcmVhdGVydGhhbilcbiAgfCBIYXNocyBuIC0+IEhhc2gsIChpZiBuID4gMCB0aGVuIEhhc2hzKG4tMSkgZWxzZSBIYXNoKVxuICB8IExlc3N0aGFucyBuIC0+IExlc3N0aGFuLCAoaWYgbiA+IDAgdGhlbiBMZXNzdGhhbnMobi0xKSBlbHNlIExlc3N0aGFuKVxuICB8IE1pbnVzcyBuIC0+IE1pbnVzLCAoaWYgbiA+IDAgdGhlbiBNaW51c3Mobi0xKSBlbHNlIE1pbnVzKVxuICB8IE5ld2xpbmVzIG4gLT4gTmV3bGluZSwgKGlmIG4gPiAwIHRoZW4gTmV3bGluZXMobi0xKSBlbHNlIE5ld2xpbmUpXG4gIHwgT2JyYWNlcyBuIC0+IE9icmFjZSwgKGlmIG4gPiAwIHRoZW4gT2JyYWNlcyhuLTEpIGVsc2UgT2JyYWNlKVxuICB8IE9wYXJlbnRoZXNpc3MgbiAtPiBPcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIE9wYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT3BhcmVudGhlc2lzKVxuICB8IE9icmFja2V0cyBuIC0+IE9icmFja2V0LCAoaWYgbiA+IDAgdGhlbiBPYnJhY2tldHMobi0xKSBlbHNlIE9icmFja2V0KVxuICB8IFBlcmNlbnRzIG4gLT4gUGVyY2VudCwgKGlmIG4gPiAwIHRoZW4gUGVyY2VudHMobi0xKSBlbHNlIFBlcmNlbnQpXG4gIHwgUGx1c3MgbiAtPiBQbHVzLCAoaWYgbiA+IDAgdGhlbiBQbHVzcyhuLTEpIGVsc2UgUGx1cylcbiAgfCBRdWVzdGlvbnMgbiAtPiBRdWVzdGlvbiwgKGlmIG4gPiAwIHRoZW4gUXVlc3Rpb25zKG4tMSkgZWxzZSBRdWVzdGlvbilcbiAgfCBRdW90ZXMgbiAtPiBRdW90ZSwgKGlmIG4gPiAwIHRoZW4gUXVvdGVzKG4tMSkgZWxzZSBRdW90ZSlcbiAgfCBTZW1pY29sb25zIG4gLT4gU2VtaWNvbG9uLCAoaWYgbiA+IDAgdGhlbiBTZW1pY29sb25zKG4tMSkgZWxzZSBTZW1pY29sb24pXG4gIHwgU2xhc2hzIG4gLT4gU2xhc2gsIChpZiBuID4gMCB0aGVuIFNsYXNocyhuLTEpIGVsc2UgU2xhc2gpXG4gIHwgU3BhY2VzIG4gLT4gU3BhY2UsIChpZiBuID4gMCB0aGVuIFNwYWNlcyhuLTEpIGVsc2UgU3BhY2UpXG4gIHwgU3RhcnMgbiAtPiBTdGFyLCAoaWYgbiA+IDAgdGhlbiBTdGFycyhuLTEpIGVsc2UgU3RhcilcbiAgfCBUYWJzIG4gLT4gVGFiLCAoaWYgbiA+IDAgdGhlbiBUYWJzKG4tMSkgZWxzZSBUYWIpXG4gIHwgVGlsZGVzIG4gLT4gVGlsZGUsIChpZiBuID4gMCB0aGVuIFRpbGRlcyhuLTEpIGVsc2UgVGlsZGUpXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBVbmRlcnNjb3JlLCAoaWYgbiA+IDAgdGhlbiBVbmRlcnNjb3JlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVuZGVyc2NvcmUpXG4gIHwgQW1wZXJzYW5kIHwgQXQgfCBCYWNrcXVvdGUgfCBCYWNrc2xhc2ggfCBCYXIgfCBDYXJldCB8IENicmFjZSB8IENvbG9uXG4gIHwgQ29tbWEgfCBDcGFyZW50aGVzaXMgfCBDYnJhY2tldCB8IERvbGxhciB8IERvdCB8IERvdWJsZXF1b3RlXG4gIHwgRXhjbGFtYXRpb24gfCBFcXVhbCB8IEdyZWF0ZXJ0aGFuIHwgSGFzaCB8IExlc3N0aGFuIHwgTWludXNcbiAgfCBOZXdsaW5lIHwgTnVtYmVyIF8gfCBPYnJhY2UgfCBPcGFyZW50aGVzaXMgfCBPYnJhY2tldCB8IFBlcmNlbnRcbiAgfCBQbHVzIHwgUXVlc3Rpb24gfCBRdW90ZSB8IFNlbWljb2xvbiB8IFNsYXNoIHwgU3BhY2UgfCBTdGFyIHwgVGFiXG4gIHwgVGlsZGUgfCBVbmRlcnNjb3JlIHwgVGFnIF8gfCBXb3JkIF8gLT5cbiAgICAgaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIuc3BsaXRfZmlyc3RcIlxuXG5tb2R1bGUgdHlwZSBJbnB1dCA9XG5zaWdcbiAgdHlwZSB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuICB2YWwgc3ViIDogdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIExleChJIDogSW5wdXQpIDpcbnNpZ1xuICB2YWwgbGV4IDogSS50IC0+IHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IGxleCAocyA6IEkudCkgPVxuICAgIGxldCByZXN1bHQgPSByZWYgW10gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGwgPSBJLmxlbmd0aCBzIGluXG4gICAgbGV0IHJjb3VudCBjID1cbiAgICAgICgqIFtyY291bnQgY10gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGltbWVkaWF0ZSBjb25zZWN1dGl2ZVxuICAgICAgICAgb2NjdXJyZW5jZXMgb2YgW2NdLiAgQnkgc2lkZS1lZmZlY3QsIGl0IGluY3JlYXNlcyB0aGUgcmVmZXJlbmNlXG4gICAgICAgICBjb3VudGVyIFtpXS4gKilcbiAgICAgIGxldCByZWMgbG9vcCByID1cbiAgICAgICAgaWYgIWkgPSBsIHRoZW4gclxuICAgICAgICBlbHNlIGlmIEkuZ2V0IHMgIWkgPSBjIHRoZW4gKGluY3IgaTsgbG9vcCAocisxKSlcbiAgICAgICAgZWxzZSByXG4gICAgICBpblxuICAgICAgbG9vcCAxXG4gICAgaW5cbiAgICBsZXQgd29yZCAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBpZiAhaSA9IGwgdGhlblxuICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgfCAnIycgfCAnKicgfCAnLScgfCAnKycgfCAnYCcgfCAnXFwnJ1xuICAgICAgICAgICAgfCAnXCInIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonXG4gICAgICAgICAgICB8ICc7JyB8ICc+JyB8ICd+JyB8ICc8JyB8ICdAJyB8ICcmJyB8ICd8JyB8ICdeJyB8ICcuJyB8ICcvJ1xuICAgICAgICAgICAgfCAnJCcgfCAnJScgfCAnIScgfCAnPycgfCAnPScgLT5cbiAgICAgICAgICAgICAgICBXb3JkKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICAgICAgICB8IGMgLT4gaW5jciBpOyBsb29wKClcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgbG9vcCgpXG4gICAgaW5cbiAgICBsZXQgbWF5YmVfbnVtYmVyICgpID1cbiAgICAgIGxldCBzdGFydCA9ICFpIGluXG4gICAgICB3aGlsZVxuICAgICAgICAhaSA8IGwgJiZcbiAgICAgICAgbWF0Y2ggSS5nZXQgcyAhaSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgZG9cbiAgICAgICAgaW5jciBpXG4gICAgICBkb25lO1xuICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgTnVtYmVyKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJycgfCAnXCInXG4gICAgICAgICAgfCAnXFxcXCcgfCAnXycgfCAnWycgfCAnXScgfCAneycgfCAnfScgfCAnKCcgfCAnKScgfCAnOicgfCAnOycgfCAnPidcbiAgICAgICAgICB8ICd+JyB8ICc8JyB8ICdAJyB8ICcmJyB8ICd8JyB8ICdeJyB8ICcuJyB8ICcvJyB8ICckJyB8ICclJyB8ICchJ1xuICAgICAgICAgIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpIDo9IHN0YXJ0O1xuICAgICAgICAgICAgICB3b3JkKClcbiAgICAgICAgZW5kXG4gICAgaW5cblxuICAgIGxldCBuX29jYyBjID0gaW5jciBpOyByY291bnQgYyBpblxuXG4gICAgd2hpbGUgIWkgPCBsIGRvXG4gICAgICBsZXQgYyA9IEkuZ2V0IHMgIWkgaW5cbiAgICAgIGxldCB3ID0gbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZSBlbHNlIFNwYWNlcyAobi0yKVxuICAgICAgICB8ICdcXHQnIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNwYWNlcygyKSBlbHNlIFNwYWNlcyg0Km4tMilcbiAgICAgICAgfCAnXFxuJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBOZXdsaW5lIGVsc2UgTmV3bGluZXMgKG4tMilcbiAgICAgICAgfCAnXFxyJyAtPiAoKiBlbGltaW5hdGluZyBcXHIgYnkgY29udmVydGluZyBhbGwgc3R5bGVzIHRvIHVuaXggc3R5bGUgKilcbiAgICAgICAgICBpbmNyIGk7XG4gICAgICAgICAgbGV0IHJlYyBjb3VudF9ybiB4ID1cbiAgICAgICAgICAgIGlmICFpIDwgbCAmJiBJLmdldCBzICghaSkgPSAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIGlmICFpICsgMSA8IGwgJiYgSS5nZXQgcyAoIWkrMSkgPSAnXFxyJyB0aGVuXG4gICAgICAgICAgICAgICAgKGkgOj0gIWkgKyAyOyBjb3VudF9ybiAoeCsxKSlcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJuID0gMSArIGNvdW50X3JuIDAgaW5cbiAgICAgICAgICBpZiBybiA9IDEgdGhlblxuICAgICAgICAgICAgbWF0Y2ggbl9vY2MgYyB3aXRoXG4gICAgICAgICAgICB8IDEgLT4gTmV3bGluZVxuICAgICAgICAgICAgfCB4IC0+IGFzc2VydCh4Pj0yKTsgTmV3bGluZXMoeC0yKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChhc3NlcnQocm4+PTIpO05ld2xpbmVzKHJuLTIpKVxuICAgICAgICB8ICcjJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gSGFzaCBlbHNlIEhhc2hzIChuLTIpXG4gICAgICAgIHwgJyonICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTdGFyIGVsc2UgU3RhcnMgKG4tMilcbiAgICAgICAgfCAnLScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE1pbnVzIGVsc2UgTWludXNzIChuLTIpXG4gICAgICAgIHwgJysnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBQbHVzIGVsc2UgUGx1c3MgKG4tMilcbiAgICAgICAgfCAnYCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEJhY2txdW90ZSBlbHNlIEJhY2txdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFwnJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdW90ZSBlbHNlIFF1b3RlcyAobi0yKVxuICAgICAgICB8ICdcIicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvdWJsZXF1b3RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIERvdWJsZXF1b3RlcyAobi0yKVxuICAgICAgICB8ICdcXFxcJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrc2xhc2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQmFja3NsYXNocyAobi0yKVxuICAgICAgICB8ICdfJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVW5kZXJzY29yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlcyAobi0yKVxuICAgICAgICB8ICdbJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT2JyYWNrZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT2JyYWNrZXRzIChuLTIpXG4gICAgICAgIHwgJ10nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYnJhY2tldCBlbHNlIENicmFja2V0cyAobi0yKVxuICAgICAgICB8ICd7JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT2JyYWNlIGVsc2UgT2JyYWNlcyAobi0yKVxuICAgICAgICB8ICd9JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNlIGVsc2UgQ2JyYWNlcyAobi0yKVxuICAgICAgICB8ICcoJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT3BhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpc3MgKG4tMilcbiAgICAgICAgfCAnKScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENwYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJzonICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDb2xvbiBlbHNlIENvbG9ucyAobi0yKVxuICAgICAgICB8ICc7JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU2VtaWNvbG9uIGVsc2UgU2VtaWNvbG9ucyAobi0yKVxuICAgICAgICB8ICc+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gR3JlYXRlcnRoYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW5zIChuLTIpXG4gICAgICAgIHwgJ34nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBUaWxkZSBlbHNlIFRpbGRlcyAobi0yKVxuICAgICAgICB8ICc8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMgKG4tMilcbiAgICAgICAgfCAnQCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEF0IGVsc2UgQXRzIChuLTIpXG4gICAgICAgIHwgJyYnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBbXBlcnNhbmQgZWxzZSBBbXBlcnNhbmRzIChuLTIpXG4gICAgICAgIHwgJ3wnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYXIgZWxzZSBCYXJzIChuLTIpXG4gICAgICAgIHwgJ14nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYXJldCBlbHNlIENhcmV0cyAobi0yKVxuICAgICAgICB8ICcsJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29tbWEgZWxzZSBDb21tYXMgKG4tMilcbiAgICAgICAgfCAnLicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvdCBlbHNlIERvdHMgKG4tMilcbiAgICAgICAgfCAnLycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNsYXNoIGVsc2UgU2xhc2hzIChuLTIpXG4gICAgICAgIHwgJyQnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb2xsYXIgZWxzZSBEb2xsYXJzIChuLTIpXG4gICAgICAgIHwgJyUnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBQZXJjZW50IGVsc2UgUGVyY2VudHMgKG4tMilcbiAgICAgICAgfCAnPScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEVxdWFsIGVsc2UgRXF1YWxzIChuLTIpXG4gICAgICAgIHwgJyEnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFeGNsYW1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBFeGNsYW1hdGlvbnMgKG4tMilcbiAgICAgICAgfCAnPycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFF1ZXN0aW9uIGVsc2UgUXVlc3Rpb25zIChuLTIpXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPiBtYXliZV9udW1iZXIoKVxuICAgICAgICB8IGMgLT4gd29yZCgpIGluXG4gICAgICByZXN1bHQgOj0gdyA6OiAhcmVzdWx0XG4gICAgZG9uZTtcbiAgICBMaXN0LnJldiAhcmVzdWx0XG5lbmRcblxubW9kdWxlIExleF9zdHJpbmcgPSBMZXgoU3RyaW5nTGFiZWxzKVxubGV0IGxleCA9IExleF9zdHJpbmcubGV4XG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCxcbiAgICAgICAgICAgICAgICAgIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG5tb2R1bGUgQmlnYXJyYXlfaW5wdXQgOiBJbnB1dCB3aXRoIHR5cGUgdCA9IGJpZ3N0cmluZyA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEJBID0gQmlnYXJyYXlcblxuICB0eXBlIHQgPSBiaWdzdHJpbmdcbiAgbGV0IGdldCA9IEJBLkFycmF5MS5nZXRcbiAgbGV0IGxlbmd0aCA9IEJBLkFycmF5MS5kaW1cbiAgbGV0IHN1YiBhcnIgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IHBvcyA8IDAgfHwgcG9zICsgbGVuID4gQkEuQXJyYXkxLmRpbSBhcnJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYXJyYXlfaW5wdXQuc3ViXCI7XG4gICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcyBpIChCQS5BcnJheTEudW5zYWZlX2dldCBhcnIgKGkgKyBwb3MpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5lbmRcbm1vZHVsZSBMZXhfYmlnYXJyYXkgPSBMZXgoQmlnYXJyYXlfaW5wdXQpXG5sZXQgbGV4X2JpZ2FycmF5ID0gTGV4X2JpZ2FycmF5LmxleFxuXG5sZXQgbWFrZV9zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgMCAtPiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCJcbiAgfCAxIC0+IFNwYWNlXG4gIHwgbiAtPiBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiT21kX2xleGVyLm1ha2Vfc3BhY2VcIiBlbHNlIFNwYWNlcyAobi0yKVxuXG5cbigqXG4oKiogW3N0cmluZ19vZl90bCBsXSByZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbC5cbiAgICBbZXN0cmluZ19vZl90bCBsXSByZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsXG4gICAgKHNhbWUgc2VtYW50aWNzIGFzIFtTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3RsIGwpXSkuICopXG5sZXQgc3RyaW5nX29mX3RsLCBlc3RyaW5nX29mX3RsID1cbiAgbGV0IGcgZXNjYXBlZCB0bCA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDQyIGluXG4gICAgbGV0IHJlYyBsb29wIDogJ2EgdCBsaXN0IC0+IHVuaXQgPSBmdW5jdGlvblxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGlmIGVzY2FwZWQgdGhlbiBTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3QgZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHN0cmluZ19vZl90IGUpO1xuICAgICAgICAgIGxvb3AgdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICAoKVxuICAgIGluXG4gICAgICBCdWZmZXIuY29udGVudHMgKGxvb3AgdGw7IGIpXG4gIGluIGcgZmFsc2UsIGcgdHJ1ZVxuKilcblxubGV0IHN0cmluZ19vZl90b2tlbnMgdGwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIExpc3QuaXRlciAoZnVuIGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX3Rva2VuIGUpKSB0bDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZGVzdHJpbmdfb2ZfdG9rZW5zID8obGltaXQ9bWF4X2ludCkgdGwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgKGk6aW50KSAodGxpc3Q6dG9rIGxpc3QpIDogdW5pdCA9IG1hdGNoIHRsaXN0IHdpdGhcbiAgICB8IGU6OnRsIC0+XG4gICAgICAgIGlmIGxpbWl0ID0gaSB0aGVuXG4gICAgICAgICAgbG9vcCBpIFtdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90b2tlbiBlKSk7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiOjpcIjtcbiAgICAgICAgICAgIGxvb3AgKHN1Y2MgaSkgdGxcbiAgICAgICAgICBlbmRcbiAgICB8IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJbXVwiXG4gIGluXG4gICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIDAgdGw7IGIpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMy0yMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBzZGVidWcgPSB0cnVlXG5cbm9wZW4gUHJpbnRmXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxub3BlbiBPbWRfdXRpbHNcbm1vZHVsZSBMID0gT21kX2xleGVyXG5cbnR5cGUgciA9IE9tZF9yZXByZXNlbnRhdGlvbi50XG4oKiogYWNjdW11bGF0b3IgKGJld2FyZSwgcmV2ZXJzZWQgdG9rZW5zKSAqKVxuXG5hbmQgcCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIGNvbnRleHQgaW5mb3JtYXRpb246IHByZXZpb3VzIGVsZW1lbnRzICopXG5cbmFuZCBsID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG4oKiogdG9rZW5zIHRvIHBhcnNlICopXG5cbmFuZCBtYWluX2xvb3AgPVxuICA/aHRtbDpib29sIC0+XG4gIHIgLT4gKCogYWNjdW11bGF0b3IgKGJld2FyZSwgcmV2ZXJzZWQgdG9rZW5zKSAqKVxuICBwIC0+ICgqIGluZm86IHByZXZpb3VzIGVsZW1lbnRzICopXG4gIGwgLT4gKCogdG9rZW5zIHRvIHBhcnNlICopXG4gIE9tZF9yZXByZXNlbnRhdGlvbi50ICgqIGZpbmFsIHJlc3VsdCAqKVxuKCoqIG1vc3QgaW1wb3J0YW50IGxvb3AgKilcblxuXG4oKiogTi5CLiBQbGVhc2UgZG8gbm90IHVzZSB0YWJ1bGF0aW9ucyBpbiB5b3VyIE1hcmtkb3duIGZpbGUhICopXG5cbm1vZHVsZSB0eXBlIEVudiA9IHNpZ1xuICB2YWwgcmM6IE9tZF9yZXByZXNlbnRhdGlvbi5yZWZfY29udGFpbmVyXG4gIHZhbCBleHRlbnNpb25zIDogT21kX3JlcHJlc2VudGF0aW9uLmV4dGVuc2lvbnNcbiAgdmFsIGRlZmF1bHRfbGFuZyA6IHN0cmluZ1xuICB2YWwgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSA6IGJvb2xcbiAgdmFsIGJsaW5kX2h0bWwgOiBib29sXG4gIHZhbCBzdHJpY3RfaHRtbCA6IGJvb2xcbiAgdmFsIHdhcm5pbmcgOiBib29sXG4gIHZhbCB3YXJuX2Vycm9yIDogYm9vbFxuZW5kXG5cbm1vZHVsZSBVbml0ID0gc3RydWN0IGVuZFxuXG5tb2R1bGUgRGVmYXVsdF9lbnYgKFVuaXQ6c2lnIGVuZCkgOiBFbnYgPSBzdHJ1Y3RcbiAgbGV0IHJjID0gbmV3IE9tZF9yZXByZXNlbnRhdGlvbi5yZWZfY29udGFpbmVyXG4gIGxldCBleHRlbnNpb25zID0gW11cbiAgbGV0IGRlZmF1bHRfbGFuZyA9IFwiXCJcbiAgbGV0IGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgPSB0cnVlXG4gIGxldCBibGluZF9odG1sID0gZmFsc2VcbiAgbGV0IHN0cmljdF9odG1sID0gZmFsc2VcbiAgbGV0IHdhcm5pbmcgPSBmYWxzZVxuICBsZXQgd2Fybl9lcnJvciA9IGZhbHNlXG5lbmRcblxubW9kdWxlIE1ha2UgKEVudjpFbnYpID1cbnN0cnVjdFxuICBpbmNsdWRlIEVudlxuXG4gIGxldCB3YXJuID0gT21kX3V0aWxzLndhcm4gfndlOndhcm5fZXJyb3JcblxuICAoKiogc2V0IG9mIGtub3duIEhUTUwgY29kZXMgKilcbiAgbGV0IGh0bWxjb2Rlc19zZXQgPSBTdHJpbmdTZXQub2ZfbGlzdCAoKiBUaGlzIGxpc3Qgc2hvdWxkIGJlIGNoZWNrZWQuLi4gKilcbiAgICAgICgqIGxpc3QgZXh0cmFjdGVkIGZyb206IGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2NoYXJzZXQuaHRtbCAqKVxuICAgICAgWyBcIkFFbGlnXCI7ICBcIkFhY3V0ZVwiOyAgXCJBY2lyY1wiOyAgXCJBZ3JhdmVcIjsgXCJBbHBoYVwiOyAgXCJBcmluZ1wiOyAgXCJBdGlsZGVcIjtcbiAgICAgICAgXCJBdW1sXCI7IFwiQmV0YVwiOyAgXCJDY2VkaWxcIjsgXCJDaGlcIjsgXCJEYWdnZXJcIjsgIFwiRGVsdGFcIjsgXCJFVEhcIjsgXCJFYWN1dGVcIjtcbiAgICAgICAgXCJFY2lyY1wiOyAgXCJFZ3JhdmVcIjsgIFwiRXBzaWxvblwiOyAgIFwiRXRhXCI7ICBcIkV1bWxcIjsgIFwiR2FtbWFcIjsgIFwiSWFjdXRlXCI7XG4gICAgICAgIFwiSWNpcmNcIjsgXCJJZ3JhdmVcIjsgXCJJb3RhXCI7ICBcIkl1bWxcIjsgXCJLYXBwYVwiOyBcIkxhbWJkYVwiOyBcIk11XCI7IFwiTnRpbGRlXCI7XG4gICAgICAgIFwiTnVcIjsgIFwiT0VsaWdcIjsgIFwiT2FjdXRlXCI7ICAgXCJPY2lyY1wiOyAgXCJPZ3JhdmVcIjsgIFwiT21lZ2FcIjsgIFwiT21pY3JvblwiO1xuICAgICAgICBcIk9zbGFzaFwiOyAgXCJPdGlsZGVcIjsgIFwiT3VtbFwiOyAgXCJQaGlcIjsgIFwiUGlcIjsgIFwiUHJpbWVcIjsgIFwiUHNpXCI7ICBcIlJob1wiO1xuICAgICAgICBcIlNjYXJvblwiOyAgXCJTaWdtYVwiOyAgIFwiVEhPUk5cIjsgIFwiVGF1XCI7ICBcIlRoZXRhXCI7ICAgXCJVYWN1dGVcIjsgIFwiVWNpcmNcIjtcbiAgICAgICAgXCJVZ3JhdmVcIjsgXCJVcHNpbG9uXCI7IFwiVXVtbFwiOyBcIlhpXCI7IFwiWWFjdXRlXCI7IFwiWXVtbFwiOyBcIlpldGFcIjsgXCJhYWN1dGVcIjtcbiAgICAgICAgXCJhY2lyY1wiOyBcImFjdXRlXCI7IFwiYWVsaWdcIjsgXCJhZ3JhdmVcIjsgXCJhbGVmc3ltXCI7IFwiYWxwaGFcIjsgXCJhbXBcIjsgXCJhbmRcIjtcbiAgICAgICAgXCJhbmdcIjsgXCJhcmluZ1wiOyBcImFzeW1wXCI7ICBcImF0aWxkZVwiOyBcImF1bWxcIjsgXCJiZHF1b1wiOyBcImJldGFcIjsgXCJicnZiYXJcIjtcbiAgICAgICAgXCJidWxsXCI7ICBcImNhcFwiOyAgXCJjY2VkaWxcIjsgXCJjZWRpbFwiOyAgXCJjZW50XCI7ICBcImNoaVwiOyBcImNpcmNcIjsgIFwiY2x1YnNcIjtcbiAgICAgICAgXCJjb25nXCI7ICBcImNvcHlcIjsgXCJjcmFyclwiOyBcImN1cFwiOyAgXCJjdXJyZW5cIjsgXCJkQXJyXCI7ICBcImRhZ2dlclwiOyBcImRhcnJcIjtcbiAgICAgICAgXCJkZWdcIjsgIFwiZGVsdGFcIjsgIFwiZGlhbXNcIjsgICBcImRpdmlkZVwiOyAgXCJlYWN1dGVcIjsgIFwiZWNpcmNcIjsgIFwiZWdyYXZlXCI7XG4gICAgICAgIFwiZW1wdHlcIjsgIFwiZW1zcFwiOyBcImVuc3BcIjsgIFwiZXBzaWxvblwiOyBcImVxdWl2XCI7ICBcImV0YVwiOyAgXCJldGhcIjsgXCJldW1sXCI7XG4gICAgICAgIFwiZXVyb1wiOyAgXCJleGlzdFwiOyAgXCJmbm9mXCI7ICBcImZvcmFsbFwiOyAgXCJmcmFjMTJcIjsgIFwiZnJhYzE0XCI7ICBcImZyYWMzNFwiO1xuICAgICAgICBcImZyYXNsXCI7ICBcImdhbW1hXCI7ICBcImdlXCI7IFwiZ3RcIjsgIFwiaEFyclwiOyAgXCJoYXJyXCI7IFwiaGVhcnRzXCI7ICBcImhlbGxpcFwiO1xuICAgICAgICBcImlhY3V0ZVwiOyBcImljaXJjXCI7IFwiaWV4Y2xcIjsgXCJpZ3JhdmVcIjsgXCJpbWFnZVwiOyBcImluZmluXCI7IFwiaW50XCI7IFwiaW90YVwiO1xuICAgICAgICBcImlxdWVzdFwiOyBcImlzaW5cIjsgXCJpdW1sXCI7ICBcImthcHBhXCI7IFwibEFyclwiOyBcImxhbWJkYVwiOyBcImxhbmdcIjsgXCJsYXF1b1wiO1xuICAgICAgICBcImxhcnJcIjsgIFwibGNlaWxcIjsgIFwibGRxdW9cIjsgXCJsZVwiOyAgXCJsZmxvb3JcIjsgIFwibG93YXN0XCI7IFwibG96XCI7ICBcImxybVwiO1xuICAgICAgICBcImxzYXF1b1wiOyBcImxzcXVvXCI7IFwibHRcIjsgIFwibWFjclwiOyBcIm1kYXNoXCI7IFwibWljcm9cIjsgXCJtaWRkb3RcIjsgXCJtaW51c1wiO1xuICAgICAgICBcIm11XCI7IFwibmFibGFcIjsgIFwibmJzcFwiOyBcIm5kYXNoXCI7ICBcIm5lXCI7IFwibmlcIjsgXCJub3RcIjsgIFwibm90aW5cIjsgXCJuc3ViXCI7XG4gICAgICAgIFwibnRpbGRlXCI7ICBcIm51XCI7ICAgXCJvYWN1dGVcIjsgIFwib2NpcmNcIjsgIFwib2VsaWdcIjsgICBcIm9ncmF2ZVwiOyAgXCJvbGluZVwiO1xuICAgICAgICBcIm9tZWdhXCI7IFwib21pY3JvblwiOyBcIm9wbHVzXCI7IFwib3JcIjsgXCJvcmRmXCI7IFwib3JkbVwiOyBcIm9zbGFzaFwiOyBcIm90aWxkZVwiO1xuICAgICAgICBcIm90aW1lc1wiOyAgXCJvdW1sXCI7ICBcInBhcmFcIjsgIFwicGFydFwiOyAgXCJwZXJtaWxcIjsgXCJwZXJwXCI7ICBcInBoaVwiOyAgXCJwaVwiO1xuICAgICAgICBcInBpdlwiOyAgXCJwbHVzbW5cIjsgIFwicG91bmRcIjsgXCJwcmltZVwiOyAgXCJwcm9kXCI7ICBcInByb3BcIjsgXCJwc2lcIjsgIFwicXVvdFwiO1xuICAgICAgICBcInJBcnJcIjsgIFwicmFkaWNcIjsgXCJyYW5nXCI7IFwicmFxdW9cIjsgIFwicmFyclwiOyBcInJjZWlsXCI7ICBcInJkcXVvXCI7IFwicmVhbFwiO1xuICAgICAgICBcInJlZ1wiOyBcInJmbG9vclwiOyAgXCJyaG9cIjsgXCJybG1cIjsgXCJyc2FxdW9cIjsgIFwicnNxdW9cIjsgXCJzYnF1b1wiOyBcInNjYXJvblwiO1xuICAgICAgICBcInNkb3RcIjsgIFwic2VjdFwiOyAgXCJzaHlcIjsgXCJzaWdtYVwiOyAgXCJzaWdtYWZcIjsgIFwic2ltXCI7IFwic3BhZGVzXCI7ICBcInN1YlwiO1xuICAgICAgICBcInN1YmVcIjsgXCJzdW1cIjsgXCJzdXBcIjsgXCJzdXAxXCI7ICBcInN1cDJcIjsgXCJzdXAzXCI7IFwic3VwZVwiOyBcInN6bGlnXCI7IFwidGF1XCI7XG4gICAgICAgIFwidGhlcmU0XCI7ICBcInRoZXRhXCI7IFwidGhldGFzeW1cIjsgIFwidGhpbnNwXCI7IFwidGhvcm5cIjsgIFwidGlsZGVcIjsgXCJ0aW1lc1wiO1xuICAgICAgICBcInRyYWRlXCI7IFwidUFyclwiOyBcInVhY3V0ZVwiOyAgXCJ1YXJyXCI7IFwidWNpcmNcIjsgXCJ1Z3JhdmVcIjsgXCJ1bWxcIjsgXCJ1cHNpaFwiO1xuICAgICAgICBcInVwc2lsb25cIjsgIFwidXVtbFwiOyBcIndlaWVycFwiOyBcInhpXCI7ICBcInlhY3V0ZVwiOyBcInllblwiOyAgXCJ5dW1sXCI7IFwiemV0YVwiO1xuICAgICAgICBcInp3alwiOyBcInp3bmpcIjsgXVxuXG5cbiAgKCoqIHNldCBvZiBrbm93biBpbmxpbmUgSFRNTCB0YWdzICopXG4gIGxldCBpbmxpbmVfaHRtbHRhZ3Nfc2V0ID1cbiAgICAgIChTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgICAgKCogZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUTUwvSW5saW5lX2VsZW1lbnRzICopXG4gICAgICAgICBbIFwiYlwiO1wiYmlnXCI7XCJpXCI7XCJzbWFsbFwiO1widHRcIjtcbiAgICAgICAgICAgXCJhYmJyXCI7XCJhY3JvbnltXCI7XCJjaXRlXCI7XCJjb2RlXCI7XCJkZm5cIjtcImVtXCI7XCJrYmRcIjtcInN0cm9uZ1wiO1wic2FtcFwiO1widmFyXCI7XG4gICAgICAgICAgIFwiYVwiO1wiYmRvXCI7XCJiclwiO1wiaW1nXCI7XCJtYXBcIjtcIm9iamVjdFwiO1wicVwiO1wic3BhblwiO1wic3ViXCI7XCJzdXBcIjtcbiAgICAgICAgICAgXCJidXR0b25cIjtcImlucHV0XCI7XCJsYWJlbFwiO1wic2VsZWN0XCI7XCJ0ZXh0YXJlYVwiO10pXG5cbiAgKCoqIE4uQi4gaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBubyBjbGVhciBkaXN0aW5jdGlvbiBiZXR3ZWVuIGlubGluZVxuICAgICAgdGFncyBhbmQgYmxvY2stbGV2ZWwgdGFnczogaW4gSFRNTDQgaXQgd2FzIG5vdCBjbGVhciwgaW4gSFRNTDVcbiAgICAgIGl0J3MgZXZlbiBtb3JlIGNvbXBsaWNhdGVkLiBTbywgdGhlIGNob2ljZSAqaGVyZSogaXMgdG8gc3BlY2lmeVxuICAgICAgYSBzZXQgb2YgdGFncyBjb25zaWRlcmVkIGFzIFwiaW5saW5lXCIsIGNmLiBbaW5saW5lX2h0bWx0YWdzX3NldF0uXG4gICAgICBTbyB0aGVyZSB3aWxsIGJlIGlubGluZSB0YWdzLCBub24taW5saW5lIHRhZ3MsIGFuZCB1bmtub3duXG4gICAgICB0YWdzLiopXG5cbiAgKCoqIHNldCBvZiBIVE1MIHRhZ3MgdGhhdCBtYXkgYXBwZWFyIG91dCBvZiBhIGJvZHkgKilcbiAgbGV0IG5vdGluYm9keXRhZ3MgPSBTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgW1xuICAgICAgICBcInRpdGxlXCI7XG4gICAgICAgIFwibGlua1wiO1xuICAgICAgICBcIm1ldGFcIjtcbiAgICAgICAgXCJzdHlsZVwiO1xuICAgICAgICBcImh0bWxcIjtcbiAgICAgICAgXCJoZWFkXCI7XG4gICAgICAgIFwiYm9keVwiO1xuICAgICAgXVxuXG4gICgqKiBBbGwga25vd24gSFRNTCB0YWdzICopXG4gIGxldCBodG1sdGFnc19zZXQgPVxuICAgIFN0cmluZ1NldC51bmlvbiBub3RpbmJvZHl0YWdzXG4gICAgICAoU3RyaW5nU2V0LnVuaW9uIGlubGluZV9odG1sdGFnc19zZXRcbiAgICAgICAgIChTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImFcIjtcImFiYnJcIjtcImFjcm9ueW1cIjtcImFkZHJlc3NcIjtcImFwcGxldFwiO1wiYXJlYVwiO1wiYXJ0aWNsZVwiO1wiYXNpZGVcIlxuICAgICAgICAgICAgICA7XCJhdWRpb1wiO1wiYlwiO1wiYmFzZVwiO1wiYmFzZWZvbnRcIjtcImJkaVwiO1wiYmRvXCI7XCJiaWdcIjtcImJsb2NrcXVvdGVcIlxuICAgICAgICAgICAgICA7XCJiclwiO1wiYnV0dG9uXCI7XCJjYW52YXNcIjtcImNhcHRpb25cIjtcImNlbnRlclwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiY29sXCJcbiAgICAgICAgICAgICAgO1wiY29sZ3JvdXBcIjtcImNvbW1hbmRcIjtcImRhdGFsaXN0XCI7XCJkZFwiO1wiZGVsXCI7XCJkZXRhaWxzXCI7XCJkZm5cIlxuICAgICAgICAgICAgICA7XCJkaWFsb2dcIjtcImRpclwiO1wiZGl2XCI7XCJkbFwiO1wiZHRcIjtcImVtXCI7XCJlbWJlZFwiO1wiZmllbGRzZXRcIlxuICAgICAgICAgICAgICA7XCJmaWdjYXB0aW9uXCI7XCJmaWd1cmVcIjtcImZvbnRcIjtcImZvb3RlclwiO1wiZm9ybVwiO1wiZnJhbWVcIjtcImZyYW1lc2V0XCJcbiAgICAgICAgICAgICAgO1wiaDJcIjtcImgzXCI7XCJoNFwiO1wiaDVcIjtcImg2XCJcbiAgICAgICAgICAgICAgO1wiaDFcIjtcImhlYWRlclwiO1wiaHJcIjtcImlcIjtcImlmcmFtZVwiO1wiaW1nXCI7XCJpbnB1dFwiO1wiaW5zXCI7XCJrYmRcIlxuICAgICAgICAgICAgICA7XCJrZXlnZW5cIjtcImxhYmVsXCI7XCJsZWdlbmRcIjtcImxpXCI7XCJtYXBcIjtcIm1hcmtcIjtcIm1lbnVcIjtcIm1ldGVyXCI7XCJuYXZcIlxuICAgICAgICAgICAgICA7XCJub2ZyYW1lc1wiO1wibm9zY3JpcHRcIjtcIm9iamVjdFwiO1wib2xcIjtcIm9wdGdyb3VwXCI7XCJvcHRpb25cIjtcIm91dHB1dFwiXG4gICAgICAgICAgICAgIDtcInBcIjtcInBhcmFtXCI7XCJwcmVcIjtcInByb2dyZXNzXCI7XCJxXCI7XCJycFwiO1wicnRcIjtcInJ1YnlcIjtcInNcIjtcInNhbXBcIlxuICAgICAgICAgICAgICA7XCJzY3JpcHRcIjtcInNlY3Rpb25cIjtcInNlbGVjdFwiO1wic21hbGxcIjtcInNvdXJjZVwiO1wic3BhblwiO1wic3RyaWtlXCJcbiAgICAgICAgICAgICAgO1wic3Ryb25nXCI7XCJzdHlsZVwiO1wic3ViXCI7XCJzdW1tYXJ5XCI7XCJzdXBcIjtcInRhYmxlXCI7XCJ0Ym9keVwiO1widGRcIlxuICAgICAgICAgICAgICA7XCJ0ZXh0YXJlYVwiO1widGZvb3RcIjtcInRoXCI7XCJ0aGVhZFwiO1widGltZVwiO1widHJcIjtcInRyYWNrXCI7XCJ0dFwiO1widVwiXG4gICAgICAgICAgICAgIDtcInVsXCI7XCJ2YXJcIjtcInZpZGVvXCI7XCJ3YnJcIlxuICAgICAgICAgICAgXSkpXG5cblxuICAoKiogVGhpcyBmdW5jdGlvbnMgZml4ZXMgYmFkIGxleGluZyB0cmVlcywgd2hpY2ggbWF5IGJlIGJ1aWx0IHdoZW5cbiAgICAgIGV4dHJhY3Rpb24gYSBwb3J0aW9uIG9mIGFub3RoZXIgbGV4aW5nIHRyZWUuICopXG4gIGxldCBmaXggbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgKCogY29kZSB0byBnZW5lcmF0ZSB3aGF0IGZvbGxvd3MuLi5cbiAgICAgICAgIExpc3QuaXRlciAoZnVuIGUgLT5cbiAgICAgICAgIFByaW50Zi5wcmludGYgXCJcbiAgICAgICAgIHwgJXM6OiVzOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAxXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyAwOjp0bClcbiAgICAgICAgIHwgJXNzIG46OiVzOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAyXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhuKzEpOjp0bClcbiAgICAgICAgIHwgJXM6OiVzcyBuOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAzXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhuKzEpOjp0bClcbiAgICAgICAgIHwgJXNzIGE6OiVzcyBiOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyA0XFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhhK2IrMik6OnRsKVwiXG4gICAgICAgICBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlKVxuICAgICAgICAgW1wiQW1wZXJzYW5kXCI7IFwiQXRcIjsgXCJCYWNrcXVvdGVcIjsgXCJCYWNrc2xhc2hcIjsgXCJCYXJcIjsgXCJDYXJldFwiOyBcIkNicmFjZVwiOyBcIkNvbG9uXCI7IFwiQ29tbWFcIjsgXCJDcGFyZW50aGVzaXNcIjsgXCJDYnJhY2tldFwiOyBcIkRvbGxhclwiOyBcIkRvdFwiOyBcIkRvdWJsZXF1b3RlXCI7IFwiRXhjbGFtYXRpb25cIjsgXCJFcXVhbFwiOyBcIkdyZWF0ZXJ0aGFuXCI7IFwiSGFzaFwiOyBcIkxlc3N0aGFuXCI7IFwiTWludXNcIjsgXCJOZXdsaW5lXCI7IFwiT2JyYWNlXCI7IFwiT3BhcmVudGhlc2lzXCI7IFwiT2JyYWNrZXRcIjsgXCJQZXJjZW50XCI7IFwiUGx1c1wiOyBcIlF1ZXN0aW9uXCI7IFwiUXVvdGVcIjsgXCJTZW1pY29sb25cIjsgXCJTbGFzaFwiOyBcIlNwYWNlXCI7IFwiU3RhclwiOyBcIlRhYlwiOyBcIlRpbGRlXCI7IFwiVW5kZXJzY29yZVwiXTtcbiAgICAgICAgIHByaW50X3N0cmluZyBcInwgeDo6dGwgLT4gbG9vcCAoeDo6YWNjdSkgdGxcXG58IFtdIC0+IExpc3QucmV2IGFjY3VcXG5cIjsgKilcbiAgICAgIHwgQW1wZXJzYW5kOjpBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyAwOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kcyBuOjpBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhuKzEpOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kOjpBbXBlcnNhbmRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhuKzEpOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kcyBhOjpBbXBlcnNhbmRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhhK2IrMik6OnRsKVxuICAgICAgfCBBdDo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMgMDo6dGwpXG4gICAgICB8IEF0cyBuOjpBdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXQ6OkF0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKG4rMSk6OnRsKVxuICAgICAgfCBBdHMgYTo6QXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyAwOjp0bClcbiAgICAgIHwgQmFja3F1b3RlcyBuOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjpCYWNrcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlcyBhOjpCYWNrcXVvdGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2tzbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzIDA6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIG46OkJhY2tzbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2tzbGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIGE6OkJhY2tzbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IEJhcjo6QmFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMgMDo6dGwpXG4gICAgICB8IEJhcnMgbjo6QmFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMobisxKTo6dGwpXG4gICAgICB8IEJhcjo6QmFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMobisxKTo6dGwpXG4gICAgICB8IEJhcnMgYTo6QmFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgQ2FyZXQ6OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzIDA6OnRsKVxuICAgICAgfCBDYXJldHMgbjo6Q2FyZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2FyZXRzIGE6OkNhcmV0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKGErYisyKTo6dGwpXG4gICAgICB8IENicmFjZTo6Q2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMgMDo6dGwpXG4gICAgICB8IENicmFjZXMgbjo6Q2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMobisxKTo6dGwpXG4gICAgICB8IENicmFjZTo6Q2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMobisxKTo6dGwpXG4gICAgICB8IENicmFjZXMgYTo6Q2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ29sb246OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zIDA6OnRsKVxuICAgICAgfCBDb2xvbnMgbjo6Q29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgQ29sb25zIGE6OkNvbG9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IENvbW1hOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyAwOjp0bClcbiAgICAgIHwgQ29tbWFzIG46OkNvbW1hOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWFzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMobisxKTo6dGwpXG4gICAgICB8IENvbW1hcyBhOjpDb21tYXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhhK2IrMik6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXM6OkNwYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzIDA6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIG46OkNwYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXM6OkNwYXJlbnRoZXNpc3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIGE6OkNwYXJlbnRoZXNpc3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKGErYisyKTo6dGwpXG4gICAgICB8IENicmFja2V0OjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyAwOjp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIG46OkNicmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IENicmFja2V0cyBhOjpDYnJhY2tldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhhK2IrMik6OnRsKVxuICAgICAgfCBEb2xsYXI6OkRvbGxhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzIDA6OnRsKVxuICAgICAgfCBEb2xsYXJzIG46OkRvbGxhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKG4rMSk6OnRsKVxuICAgICAgfCBEb2xsYXI6OkRvbGxhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKG4rMSk6OnRsKVxuICAgICAgfCBEb2xsYXJzIGE6OkRvbGxhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKGErYisyKTo6dGwpXG4gICAgICB8IERvdDo6RG90Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMgMDo6dGwpXG4gICAgICB8IERvdHMgbjo6RG90Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMobisxKTo6dGwpXG4gICAgICB8IERvdDo6RG90cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMobisxKTo6dGwpXG4gICAgICB8IERvdHMgYTo6RG90cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGU6OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzIDA6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgbjo6RG91YmxlcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIGE6OkRvdWJsZXF1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9uOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyAwOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb25zIG46OkV4Y2xhbWF0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMobisxKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBhOjpFeGNsYW1hdGlvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBFcXVhbDo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMgMDo6dGwpXG4gICAgICB8IEVxdWFscyBuOjpFcXVhbDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFscyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKG4rMSk6OnRsKVxuICAgICAgfCBFcXVhbHMgYTo6RXF1YWxzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMoYStiKzIpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zIDA6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgbjo6R3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIGE6OkdyZWF0ZXJ0aGFucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKGErYisyKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzIDA6OnRsKVxuICAgICAgfCBIYXNocyBuOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhuKzEpOjp0bClcbiAgICAgIHwgSGFzaDo6SGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2hzIGE6Okhhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IExlc3N0aGFuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyAwOjp0bClcbiAgICAgIHwgTGVzc3RoYW5zIG46Okxlc3N0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMobisxKTo6dGwpXG4gICAgICB8IExlc3N0aGFucyBhOjpMZXNzdGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBNaW51czo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MgMDo6dGwpXG4gICAgICB8IE1pbnVzcyBuOjpNaW51czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKG4rMSk6OnRsKVxuICAgICAgfCBNaW51c3MgYTo6TWludXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MoYStiKzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMgMDo6dGwpXG4gICAgICB8IE5ld2xpbmVzIG46Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKG4rMSk6OnRsKVxuICAgICAgfCBOZXdsaW5lOjpOZXdsaW5lcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgYTo6TmV3bGluZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT2JyYWNlOjpPYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyAwOjp0bClcbiAgICAgIHwgT2JyYWNlcyBuOjpPYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNlOjpPYnJhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNlcyBhOjpPYnJhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXM6Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzIDA6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIG46Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXM6Ok9wYXJlbnRoZXNpc3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIGE6Ok9wYXJlbnRoZXNpc3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFja2V0OjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyAwOjp0bClcbiAgICAgIHwgT2JyYWNrZXRzIG46Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IE9icmFja2V0cyBhOjpPYnJhY2tldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhhK2IrMik6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyAwOjp0bClcbiAgICAgIHwgUGVyY2VudHMgbjo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMobisxKTo6dGwpXG4gICAgICB8IFBlcmNlbnQ6OlBlcmNlbnRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50cyBhOjpQZXJjZW50cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhhK2IrMik6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyAwOjp0bClcbiAgICAgIHwgUGx1c3Mgbjo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MobisxKTo6dGwpXG4gICAgICB8IFBsdXM6OlBsdXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzcyBhOjpQbHVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhhK2IrMik6OnRsKVxuICAgICAgfCBRdWVzdGlvbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMgMDo6dGwpXG4gICAgICB8IFF1ZXN0aW9ucyBuOjpRdWVzdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKG4rMSk6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgYTo6UXVlc3Rpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgUXVvdGU6OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzIDA6OnRsKVxuICAgICAgfCBRdW90ZXMgbjo6UXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgUXVvdGVzIGE6OlF1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbjo6U2VtaWNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMgMDo6dGwpXG4gICAgICB8IFNlbWljb2xvbnMgbjo6U2VtaWNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMobisxKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbjo6U2VtaWNvbG9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMobisxKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbnMgYTo6U2VtaWNvbG9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgU2xhc2g6OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzIDA6OnRsKVxuICAgICAgfCBTbGFzaHMgbjo6U2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgU2xhc2hzIGE6OlNsYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IFNwYWNlOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyAwOjp0bClcbiAgICAgIHwgU3BhY2VzIG46OlNwYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMobisxKTo6dGwpXG4gICAgICB8IFNwYWNlcyBhOjpTcGFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyAwOjp0bClcbiAgICAgIHwgU3RhcnMgbjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMobisxKTo6dGwpXG4gICAgICB8IFN0YXI6OlN0YXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFycyBhOjpTdGFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBUYWI6OlRhYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzIDA6OnRsKVxuICAgICAgfCBUYWJzIG46OlRhYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKG4rMSk6OnRsKVxuICAgICAgfCBUYWI6OlRhYnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKG4rMSk6OnRsKVxuICAgICAgfCBUYWJzIGE6OlRhYnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKGErYisyKTo6dGwpXG4gICAgICB8IFRpbGRlOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyAwOjp0bClcbiAgICAgIHwgVGlsZGVzIG46OlRpbGRlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMobisxKTo6dGwpXG4gICAgICB8IFRpbGRlcyBhOjpUaWxkZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhhK2IrMik6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyAwOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgbjo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMobisxKTo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmU6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlcyBhOjpVbmRlcnNjb3JlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhhK2IrMik6OnRsKXwgeDo6dGwgLT4gbG9vcCAoeDo6YWNjdSkgdGxcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgIGluXG4gICAgbG9vcCBbXSBsXG5cblxuICAoKiBSZW1vdmUgYWxsIFtOTF0gYW5kIFtCcl0gYXQgdGhlIGJlZ2lubmluZy4gKilcbiAgbGV0IHJlYyByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgKE5MIHwgQnIpIDo6IHRsIC0+IHJlbW92ZV9pbml0aWFsX25ld2xpbmVzIHRsXG4gICAgfCBsIC0+IGxcblxuXG4gICgqKiAtIHJlY29nbml6ZXMgcGFyYWdyYXBoc1xuICAgICAgLSBnbHVlcyBmb2xsb3dpbmcgYmxvY2txdW90ZXMgICopXG4gIGxldCBtYWtlX3BhcmFncmFwaHMgbWQgPVxuICAgIGxldCByZWMgbG9vcCBjcCBhY2N1ID0gZnVuY3Rpb24gKCogY3AgbWVhbnMgY3VycmVudCBwYXJhZ3JhcGggKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IGFjY3UgPVxuICAgICAgICAgIG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gYWNjdVxuICAgICAgICAgIHwgKE5MfEJyKTo6Y3AgLT4gUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdVxuICAgICAgICAgIHwgY3AgLT4gUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdVxuICAgICAgICBpblxuICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICB8IEJsb2NrcXVvdGUgYjEgOjogQmxvY2txdW90ZSBiMiA6OiB0bCAtPlxuICAgICAgICBsb29wIGNwIGFjY3UgKEJsb2NrcXVvdGUoYjFAYjIpOjogdGwpXG4gICAgICB8IEJsb2NrcXVvdGUgYiA6OiB0bCAtPlxuICAgICAgICBsZXQgZSA9IEJsb2NrcXVvdGUobG9vcCBbXSBbXSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChVbHAgYikgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBVbHAoTGlzdC5tYXAgKGZ1biBsaSAtPiBsb29wIFtdIFtdIGxpKSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChPbHAgYikgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBPbHAoTGlzdC5tYXAgKGZ1biBsaSAtPiBsb29wIFtdIFtdIGxpKSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IEh0bWxfY29tbWVudCBfIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gLT4gbG9vcCBbXSAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBbXSAoZTo6Tkw6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGwpXG4gICAgICB8IChSYXdfYmxvY2sgXyB8IEh0bWxfYmxvY2sgXykgYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmNwQGFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChDb2RlX2Jsb2NrIF8gfCBIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgfCBPbCBfIHwgVWwgXykgYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IFRleHQgXCJcXG5cIiA6OiBfIHwgUGFyYWdyYXBoIF8gOjogXyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcIk9tZF9wYXJzZXIubWFrZV9wYXJhZ3JhcGhzXCJcbiAgICAgIHwgKE5MfEJyKSA6OiAoTkx8QnIpIDo6IHRsIC0+XG4gICAgICAgIGxldCB0bCA9IHJlbW92ZV9pbml0aWFsX25ld2xpbmVzIHRsIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBbXSAoTkw6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgIHwgXyAtPiBsb29wIFtdIChQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bFxuICAgICAgICBlbmRcbiAgICAgIHwgWCh4KSBhcyBlIDo6IHRsIC0+XG4gICAgICAgICgqIElmIHRoZSBleHRlbnNpb24gcmV0dXJucyBhIGJsb2NrIGFzIGZpcnN0IGVsZW1lbnQsXG4gICAgICAgICAgIHRoZW4gY29uc2lkZXIgdGhlIGV4dGVuc2lvbiBhcyBhIGJsb2NrLiBIb3dldmVyXG4gICAgICAgICAgIGRvbid0IHRha2UgaXRzIGNvbnRlbnRzIGFzIGl0IGlzIHlldCwgdGhlIGNvbnRlbnRzXG4gICAgICAgICAgIG9mIHRoZSBleHRlbnNpb24gc2hhbGwgYmUgY29uc2lkZXJlZCBmaW5hbCBhcyBsYXRlXG4gICAgICAgICAgIGFzIHBvc3NpYmxlLiAqKVxuICAgICAgICBiZWdpbiBtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgICAgICAgIHwgU29tZSh0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8ICggSDEgX1xuICAgICAgICAgICAgICB8IEgyIF9cbiAgICAgICAgICAgICAgfCBIMyBfXG4gICAgICAgICAgICAgIHwgSDQgX1xuICAgICAgICAgICAgICB8IEg1ICBfXG4gICAgICAgICAgICAgIHwgSDYgIF9cbiAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggIF9cbiAgICAgICAgICAgICAgfCBVbCBfXG4gICAgICAgICAgICAgIHwgT2wgX1xuICAgICAgICAgICAgICB8IFVscCBfXG4gICAgICAgICAgICAgIHwgT2xwIF9cbiAgICAgICAgICAgICAgfCBDb2RlX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBIclxuICAgICAgICAgICAgICB8IEh0bWxfYmxvY2sgX1xuICAgICAgICAgICAgICB8IFJhd19ibG9jayBfXG4gICAgICAgICAgICAgIHwgQmxvY2txdW90ZSBfXG4gICAgICAgICAgICAgICkgOjogX1xuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlX3doaXRlX2NydW1icyBsID1cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBUZXh0IFwiIFwiIDo6IHRsXG4gICAgICAgIHwgTkw6OnRsXG4gICAgICAgIHwgQnI6OnRsXG4gICAgICAgICAgLT5cbiAgICAgICAgICBsb29wIHRsXG4gICAgICAgIHwgbCAtPiBsXG4gICAgICBpblxuICAgICAgTGlzdC5yZXYgKGxvb3AgKExpc3QucmV2IGwpKVxuICAgIGluXG4gICAgbGV0IHJlYyBjbGVhbl9wYXJhZ3JhcGhzID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGNsZWFuX3BhcmFncmFwaHNcXG5cIjtcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFtdXG4gICAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiB0bFxuICAgICAgfCBQYXJhZ3JhcGgocCkgOjogdGwgLT5cbiAgICAgICAgUGFyYWdyYXBoKGNsZWFuX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZV9pbml0aWFsX25ld2xpbmVzXG4gICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmVfd2hpdGVfY3J1bWJzKG5vcm1hbGlzZV9tZCBwKSkpKVxuICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgxIHYgOjogdGwgLT4gSDEoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDIgdiA6OiB0bCAtPiBIMihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMyB2IDo6IHRsIC0+IEgzKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg0IHYgOjogdGwgLT4gSDQoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDUgdiA6OiB0bCAtPiBINShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINiB2IDo6IHRsIC0+IEg2KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEVtcGggdiA6OiB0bCAtPiBFbXBoKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgQm9sZCB2IDo6IHRsIC0+IEJvbGQoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBVbCB2IDo6IHRsIC0+IFVsKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IE9sIHYgOjogdGwgLT4gT2woTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWxwIHYgOjogdGwgLT4gVWxwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbHAgdiA6OiB0bCAtPiBPbHAoTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJsb2NrcXVvdGUgdiA6OiB0bCAtPiBCbG9ja3F1b3RlKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVXJsKGhyZWYsdix0aXRsZSkgOjogdGwgLT4gVXJsKGhyZWYsKGNsZWFuX3BhcmFncmFwaHMgdiksdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVGV4dCBfXG4gICAgICB8IENvZGUgX1xuICAgICAgfCBDb2RlX2Jsb2NrIF9cbiAgICAgIHwgQnJcbiAgICAgIHwgSHJcbiAgICAgIHwgTkxcbiAgICAgIHwgUmVmIF9cbiAgICAgIHwgSW1nX3JlZiBfXG4gICAgICB8IFJhdyBfXG4gICAgICB8IFJhd19ibG9jayBfXG4gICAgICB8IEh0bWwgX1xuICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgIHwgSHRtbF9jb21tZW50IF9cbiAgICAgIHwgSW1nIF9cbiAgICAgIHwgWCBfIGFzIHYgOjogdGwgLT4gdiA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgaW5cbiAgICBsZXQgciA9IGNsZWFuX3BhcmFncmFwaHMobG9vcCBbXSBbXSBtZClcbiAgICBpblxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGNsZWFuX3BhcmFncmFwaHMgJVMgLS0+ICVTXFxuJSFcIlxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgbWQpXG4gICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCByKTtcbiAgICByXG5cblxuICAoKiogW2Fzc2VydF93ZWxsX2Zvcm1lZF0gaXMgYSBkZXZlbG9wZXIncyBmdW5jdGlvbiB0aGF0IGhlbHBzIHRvXG4gICAgICB0cmFjayBiYWRseSBjb25zdHJ1Y3RlZCB0b2tlbiBsaXN0cy4gIFRoaXMgZnVuY3Rpb24gaGFzIGFuXG4gICAgICBlZmZlY3Qgb25seSBpZiBbdHJhY2tmaXhdIGlzIFt0cnVlXS4gICopXG4gIGxldCBhc3NlcnRfd2VsbF9mb3JtZWQgKGw6dG9rIGxpc3QpIDogdW5pdCA9XG4gICAgaWYgdHJhY2tmaXggdGhlblxuICAgICAgbGV0IHJlYyBlcXVpdiBsMSBsMiA9IG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICAgICAgfCBUYWcgXzo6dGwxLCBUYWcgXzo6dGwyLT4gZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT4gZTEgPSBlMiAmJiBlcXVpdiB0bDEgdGwyXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGFzc2VydChlcXVpdiAoZml4IGwpIGwpO1xuICAgICAgKClcblxuICAoKiogR2VuZXJhdGUgZmFsbGJhY2sgZm9yIHJlZmVyZW5jZXMuICopXG4gIGxldCBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIGwgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZXh0cmFjdF9mYWxsYmFja1xcbiUhXCI7XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2N1XG4gICAgICB8IGU6OnRsIGFzIHIgLT5cbiAgICAgICAgaWYgciA9PSByZW1haW5zIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBlLCByZW1haW5zIHdpdGhcbiAgICAgICAgICB8IENicmFja2V0cyAwLCBDYnJhY2tldDo6ciB3aGVuIHRsID0gciAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBXb3JkIFwiXVwiIDo6IGFjY3UgaW5cbiAgICAgICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgICAgICB8IENicmFja2V0cyBuLCBDYnJhY2tldHMgbTo6ciB3aGVuIG0gKyAxID0gbiAmJiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsb29wIChlOjphY2N1KSB0bFxuICAgIGluXG4gICAgbGV0IGEgPSBsb29wIFtdIGwgaW5cbiAgICBvYmplY3RcbiAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBMLnN0cmluZ19vZl90b2tlbnMgYVxuICAgICAgbWV0aG9kIHRvX3QgPSBbVGV4dChMLnN0cmluZ19vZl90b2tlbnMgYSldXG4gICAgZW5kXG5cblxuICBsZXQgdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyA9XG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ0FMTDogT21kX3BhcnNlci51bmluZGVudF9yZXZcXG4lIVwiO1xuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBhY2N1IGNsID0gZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcyh4K3krMik6OnRsKVxuICAgICAgfCBOZXdsaW5lOjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lcyB4Ojp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDEreCk6OnRsKVxuICAgICAgfCBOZXdsaW5lcyB4OjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDEreCk6OnRsKVxuICAgICAgfCBOZXdsaW5lOjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDApOjp0bClcblxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyAwIGFzIG5sKTo6KFNwYWNlfFNwYWNlcyBfIGFzIHMpOjooXG4gICAgICAgICAgKE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8pXG4gICAgICAgIHwgKChTdGFyfFBsdXN8TWludXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICAgIGFzIHRsKSBhcyBsIC0+XG4gICAgICAgIGlmIG4gPSBMLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICBsb29wIChubDo6Y2xAYWNjdSkgW10gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyAwIGFzIG5sKTo6KFNwYWNlfFNwYWNlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICBsZXQgeCA9IEwubGVuZ3RoIHMgLSBuIGluXG4gICAgICAgIGxvb3AgKG5sOjpjbEBhY2N1KVxuICAgICAgICAgIChpZiB4ID4gMCB0aGVuIFtMLm1ha2Vfc3BhY2UgeF0gZWxzZSBbXSlcbiAgICAgICAgICB0bFxuICAgICAgfCBOZXdsaW5lcyhfKTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBOZXdsaW5lOjpfIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSAoZTo6Y2wpIHRsXG4gICAgICB8IFtdIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgW10sIHJpZ2h0IC0+IFtdLCByaWdodFxuICAgIHwgbCwgcmlnaHQgLT5cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgbCwgcmlnaHRcblxuICBsZXQgdW5pbmRlbnQgbiBsZXhlbWVzID1cbiAgICBsZXQgZnN0LCBzbmQgPSB1bmluZGVudF9yZXYgbiBsZXhlbWVzIGluXG4gICAgTGlzdC5yZXYgZnN0LCBzbmRcblxuICBsZXQgcmVjIGlzX2JsYW5rID0gZnVuY3Rpb25cbiAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+XG4gICAgICBpc19ibGFuayB0bFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBzZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3Rhcjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXJzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihTdGFycyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLFN0YXI6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFycyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooU3RhcnxTdGFycyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoU3RhcnxTdGFycyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cbiAgbGV0IHNtX3VlbXBoX29yX2JvbGQgKG46aW50KSAobDpsKSA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGFzc2VydCAobj4wICYmIG48NCk7XG4gICAgbWF0Y2hcbiAgICAgIGZzcGxpdFxuICAgICAgICB+ZXhjbDooZnVuY3Rpb24gTmV3bGluZXMgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sdGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgMDo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSx0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIDAgYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyBuIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8gYXMgeCk6OihVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3M7eF0sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjooV29yZCBffE51bWJlciBfIGFzIHcpOjogdGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbdztzXSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG5cbiAgbGV0IHVlbXBoX29yX2JvbGQgbiBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgaWYgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSB0aGVuXG4gICAgICBnaF91ZW1waF9vcl9ib2xkIG4gbFxuICAgIGVsc2VcbiAgICAgIHNtX3VlbXBoX29yX2JvbGQgbiBsXG5cbiAgbGV0IGVhdF9ibGFuayA9XG4gICAgZWF0IChmdW5jdGlvbiB8U3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfIC0+IHRydWV8IF8gLT4gZmFsc2UpXG5cblxuICAoKiB1c2VkIGJ5IHRhZ19fbWF5YmVfaDEgYW5kIHRhZ19fbWF5YmVfaDIgKilcbiAgbGV0IHNldGV4dF90aXRsZSBtYWluX2xvb3AgKGw6bCkgOiAoT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0ICogbCkgb3B0aW9uID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGRldGVjdF9iYWxhbmNlZF9icXMgbiByIGwgPVxuICAgICAgKCogSWYgdGhlcmUncyBhIGJhbGFuY2VkIChjb21wbGV0ZSkgYmFja3F1b3RlLXN0YXJ0ZWQgY29kZSBibG9ja1xuICAgICAgICAgdGhlbiBpdCBzaG91bGQgYmUgXCJpZ25vcmVkXCIsIGVsc2UgaXQgbWVhbnMgdGhlIGxpbmUgdGhhdFxuICAgICAgICAgZm9sbG93cyBpcyBwYXJ0IG9mIGEgY29kZSBibG9jaywgc28gaXQncyBub3QgZGVmaW5pbmcgYVxuICAgICAgICAgc2V0ZXh0LXN0eWxlIHRpdGxlLiAqKVxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuPSVkIHI9JVMgbD0lU1xcbiUhXCJcbiAgICAgICAgICBuIChMLnN0cmluZ19vZl90b2tlbnMgcikgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBOb25lXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyAwOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIHg6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZTo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIDA6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChCYWNrcXVvdGUgYXMgYik6OnRsIHdoZW4gbiA9IDEgLT5cbiAgICAgICAgU29tZShMaXN0LnJldiAoYjo6ciksIHRsKVxuICAgICAgfCAoQmFja3F1b3RlcyB4IGFzIGIpOjp0bCB3aGVuIG4gPSB4KzIgLT5cbiAgICAgICAgU29tZShMaXN0LnJldiAoYjo6ciksIHRsKVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgciA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCBbXSlcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZTo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyB4Ojp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZGV0ZWN0X2JhbGFuY2VkX2JxcyAxIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IEJhY2txdW90ZXMoeCk6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgKHgrMikgW10gdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShibCx0bCkgLT4gbG9vcCAoYmxAcikgdGxcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICAgIHwgTmV3bGluZTo6KEVxdWFsfEVxdWFscyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT5cbiAgICAgICAgaWYgciA9IFtdIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTb21lKExpc3QucmV2IHIsIHRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuc2V0ZXh0X3RpdGxlIGlzIHdyb25nbHkgdXNlZCFcXG4lIVwiO1xuICAgICAgICBOb25lXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBpZiBtYXRjaCBsIHdpdGhcbiAgICAgIHwgTGVzc3RoYW46OldvcmQgXzo6XyAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYWluX2xvb3AgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCAoSHRtbF9ibG9jayBfIHwgQ29kZV9ibG9jayBfIHwgUmF3X2Jsb2NrIF8pOjpfIC0+XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzdWx0ID0gbG9vcCBbXSBsIGluXG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBzZXRleHRfdGl0bGUgbD0lUyByZXN1bHQ9JVMsJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKVxuICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgKHgsdGwpIC0+IEwuc3RyaW5nX29mX3Rva2VucyB4KVxuICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgKHgsdGwpIC0+IEwuc3RyaW5nX29mX3Rva2VucyB0bCk7XG4gICAgICByZXN1bHRcblxuICBsZXQgdGFnX19tYXliZV9oMSAobWFpbl9sb29wOm1haW5fbG9vcCkgPVxuICAgIFRhZyhcInRhZ19fbWF5YmVfaDFcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSkgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUodGl0bGUsIHRsKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gSDEobWFpbl9sb29wIFtdIFtdIHRpdGxlKSBpblxuICAgICAgICAgICAgICAgICAgU29tZSgodGl0bGU6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6IE9tZF9wYXJzZXIudGFnX19tYXliZV9oMSBpcyB3cm9uZ2x5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCAocD0lUykhXFxuXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcCk7XG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgIClcblxuICBsZXQgdGFnX19tYXliZV9oMiAobWFpbl9sb29wOm1haW5fbG9vcCkgPVxuICAgIFRhZyhcInRhZ19fbWF5YmVfaDJcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSkgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUodGl0bGUsIHRsKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gSDIobWFpbl9sb29wIFtdIFtdIHRpdGxlKSBpblxuICAgICAgICAgICAgICAgICAgU29tZSgodGl0bGU6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6IE9tZF9wYXJzZXIudGFnX19tYXliZV9oMiBpcyB3cm9uZ2x5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCAocD0lUykhXFxuXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcCk7XG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgIClcblxuICBsZXQgdGFnX19tZCBtZCA9ICgqIFttZF0gc2hvdWxkIGJlIGluIHJldmVyc2UgKilcbiAgICBUYWcoXCJ0YWdfX21kXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gU29tZShtZEByLCBbXSwgbClcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgICApXG5cbiAgKCogTGV0J3MgdGFnIHRoZSBsaW5lcyB0aGF0ICptaWdodCogYmUgdGl0bGVzIHVzaW5nIHNldGV4dC1zdHlsZS5cbiAgICAgXCJtaWdodFwiIGJlY2F1c2UgaWYgdGhleSBhcmUsIGZvciBpbnN0YW5jZSwgaW4gYSBjb2RlIHNlY3Rpb24sXG4gICAgIHRoZW4gdGhleSBhcmUgbm90IHRpdGxlcyBhdCBhbGwuICopXG4gIGxldCB0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgcGwgcmVzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gfCBbTmV3bGluZXxOZXdsaW5lcyBfXSAtPlxuICAgICAgICBwbEByZXNcbiAgICAgIHwgKE5ld2xpbmUgYXMgZTEpOjooRXF1YWx8RXF1YWxzIF8gYXMgZTIpOjp0bCAtPiAoKiBtaWdodCBiZSBhIEgxLiAqKVxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRfcmV2XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98RXF1YWx8RXF1YWxzIF8pOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSlcbiAgICAgICAgICAgICAgICAgIHwgXzo6XyBhcyBsIC0+IFNwbGl0KFtdLCBsKSlcbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCAoKFtdfChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfKSBhcyByaWdodCkpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEB0YWdfX21heWJlX2gxIG1haW5fbG9vcDo6cmVzKSkgcmlnaHRcbiAgICAgICAgICB8IFNvbWUocmxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAcmVzKSkgcmlnaHRcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKGUyOjplMTo6cGxAcmVzKSBbXVxuICAgICAgICBlbmRcbiAgICAgIHwgKE5ld2xpbmUgYXMgZTEpOjooTWludXN8TWludXNzIF8gYXMgZTIpOjp0bCAtPiAoKiBtaWdodCBiZSBhIEgyLiAqKVxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRfcmV2XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TWludXN8TWludXNzIF8pOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSlcbiAgICAgICAgICAgICAgICAgIHwgXzo6XyBhcyBsIC0+IFNwbGl0KFtdLCBsKSlcbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCAoKFtdfChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfKSBhcyByaWdodCkpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEB0YWdfX21heWJlX2gyIG1haW5fbG9vcDo6cmVzKSkgcmlnaHRcbiAgICAgICAgICB8IFNvbWUocmxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAcmVzKSkgcmlnaHRcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKGUyOjplMTo6cGxAcmVzKSBbXVxuICAgICAgICBlbmRcbiAgICAgIHwgKE5ld2xpbmUgfCBOZXdsaW5lcyBfIGFzIGUxKTo6dGwgLT5cbiAgICAgICAgbG9vcCBbXSAoZTE6OnBsQHJlcykgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6cGwpIHJlcyB0bFxuICAgIGluXG4gICAgTGlzdC5yZXYgKGxvb3AgW10gW10gbGV4ZW1lcylcblxuXG4gIGxldCBocl9tIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lcyBffE5ld2xpbmUpOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBNaW51czo6dGwgLT5cbiAgICAgICAgbG9vcCAobisxKSB0bFxuICAgICAgfCBNaW51c3MgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoeCsyK24pIHRsXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgIGluIGxvb3AgMCBsXG5cbiAgbGV0IGhyX3MgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBsb29wIG4gPSBmdW5jdGlvblxuICAgICAgfCAoKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsKSB8IChbXSBhcyB0bCkgLT5cbiAgICAgICAgaWYgbiA+PSAzIHRoZW4gU29tZSB0bCBlbHNlIE5vbmVcbiAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgbG9vcCBuIHRsXG4gICAgICB8IFN0YXI6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgU3RhcnMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoeCsyK24pIHRsXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgIGluIGxvb3AgMCBsXG5cbiAgbGV0IGhyIGwgPVxuICAgIG1hdGNoIGhyX20gbCB3aXRoXG4gICAgfCBOb25lIC0+IGhyX3MgbFxuICAgIHwgU29tZSBfIGFzIHRsIC0+IHRsXG5cbiAgKCoqIFtiY29kZV0gcGFyc2VzIGNvZGUgdGhhdCdzIGRlbGltaXRlZCBieSBiYWNrcXVvdGUocykgKilcbiAgbGV0IGJjb2RlID8oZGVmYXVsdF9sYW5nPWRlZmF1bHRfbGFuZykgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCBlLCB0bCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIC0+IGUsIHRsXG4gICAgICB8IF8gLT4gZmFpbHdpdGggXCJPbWRfcGFyc2VyLmJjb2RlIGlzIHdyb25nbHkgY2FsbGVkXCJcbiAgICBpblxuICAgIGxldCByZWMgY29kZV9ibG9jayBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIGUgPSBCYWNrcXVvdGUgdGhlblxuICAgICAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YWNjdSAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjb2RlX2Jsb2NrIChCYWNrcXVvdGU6OmFjY3UpIHRsXG4gICAgICB8IChCYWNrcXVvdGVzIG4gYXMgYik6OnRsIC0+XG4gICAgICAgIGlmIGUgPSBiIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoYjo6YWNjdSkgdGxcbiAgICAgIHwgVGFnKF8sIF8pOjp0bCAtPlxuICAgICAgICBjb2RlX2Jsb2NrIGFjY3UgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIG1hdGNoIGNvZGVfYmxvY2sgW10gdGwgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lKGNiLCBsKSAtPlxuICAgICAgaWYgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIChOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBjYlxuICAgICAgJiYgKG1hdGNoIHAgd2l0aCBbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICYmIChtYXRjaCBlIHdpdGggQmFja3F1b3RlcyBuIHdoZW4gbiA+IDAgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICB0aGVuXG4gICAgICAgIG1hdGNoIGNiIHdpdGhcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0bCBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lcyAwIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyhOZXdsaW5lOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgbiA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgKE5ld2xpbmVzKG4tMSk6OnRsKSBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNsZWFuX2Jjb2RlIHMgPVxuICAgICAgICAgIGxldCByZWMgbG9vcDEgaSA9XG4gICAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICAgIHwgJyAnIC0+IGxvb3AxKGkrMSlcbiAgICAgICAgICAgICAgfCBfIC0+IGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcDIgaSA9XG4gICAgICAgICAgICBpZiBpID0gLTEgdGhlbiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMihpLTEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpKzFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGxvb3AxIDAsIGxvb3AyIChTdHJpbmcubGVuZ3RoIHMgLSAxKSB3aXRoXG4gICAgICAgICAgfCAwLCBuIHdoZW4gbiA9IFN0cmluZy5sZW5ndGggcyAtIDEgLT4gc1xuICAgICAgICAgIHwgaSwgbiAtPiBTdHJpbmcuc3ViIHMgaSAobi1pKVxuICAgICAgICBpblxuICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyBjYiBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZiBcIihPTUQpIGNsZWFuX2Jjb2RlICVTID0+ICVTXFxuJSFcIiBjb2RlIChjbGVhbl9iY29kZSBjb2RlKTtcbiAgICAgICAgU29tZShDb2RlKGRlZmF1bHRfbGFuZywgY2xlYW5fYmNvZGUgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG5cblxuICBleGNlcHRpb24gTkxfZXhjZXB0aW9uXG4gIGV4Y2VwdGlvbiBQcmVtYXR1cmVfZW5kaW5nXG5cbiAgKCogISFETyBOT1QgREVMRVRFIFRISVMhIVxuICAgICBUaGUgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyB0aGUgZ2VuZXJhdGVkIHBhcnQgdGhhdCBmb2xsb3dzIHJpZ2h0IGFmdGVyLlxuICAgICBMaXN0Lml0ZXIgKGZ1biAoYSxiLGMpIC0+XG4gICAgIHByaW50X2VuZGxpbmUgKFwibGV0IHJlYWRfdW50aWxfXCJeYV5cIiA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmJeXCIgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmJeXCJzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIG4gKFwiXmJeXCI6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFwiXG4gICAgICBeKGlmIGM8PlwiXCIgdGhlbiBcIlxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmNeXCIgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmNeXCJzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFwiXmNeXCI6OmFjY3UpIG4gKFwiXmNeXCI6OnRsKVxuICAgICAgfCBcIl5jXlwiIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgXCJeY15cInMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgXCIgZWxzZSBcIlwiKV5cbiAgICAgXCIgICAgfCBcIl5iXlwiIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBcIl5iXlwicyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBcIl5iXlwiOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoXCJeYl5cIjo6YWNjdSkgKG4tMSkgKFwiXmJeXCI6OnRsKVxuICAgICAgfCBcIl5iXlwicyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBcIl5iXlwicyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgXCJeYl5cIjo6YWNjdSAtPiBcIl5iXlwicygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgXCJeYl5cInMgeDo6YWNjdSAtPiBcIl5iXlwicyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IFwiXmJeXCI6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFwiXmJeXCJzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcXFwiT21kX3BhcnNlci5yZWFkX3VudGlsX1wiXmFeXCIgJVMgYnE9JWIgbm9fbmw9JWJcXFxcbiUhXFxcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXCIpKVxuXG4gICAgIFsgXCJndFwiLCBcIkdyZWF0ZXJ0aGFuXCIsIFwiTGVzc3RoYW5cIjtcbiAgICAgXCJsdFwiLCBcIkxlc3N0aGFuXCIsIFwiXCI7XG4gICAgIFwiY3BhcmVudGhcIiwgXCJDcGFyZW50aGVzaXNcIiwgXCJPcGFyZW50aGVzaXNcIjtcbiAgICAgXCJvcGFyZW50aFwiLCBcIk9wYXJlbnRoZXNpc1wiLCBcIlwiO1xuICAgICBcImRxXCIsIFwiRG91YmxlcXVvdGVcIiwgXCJcIjtcbiAgICAgXCJxXCIsIFwiUXVvdGVcIiwgXCJcIjtcbiAgICAgXCJvYnJhY2tldFwiLCBcIk9icmFja2V0XCIsIFwiXCI7XG4gICAgIFwiY2JyYWNrZXRcIiwgXCJDYnJhY2tldFwiLCBcIk9icmFja2V0XCI7XG4gICAgIFwic3BhY2VcIiwgXCJTcGFjZVwiLCBcIlwiO1xuICAgICBdXG4gICopXG5cbiAgKCogYmVnaW4gZ2VuZXJhdGVkIHBhcnQgKilcblxubGV0IHJlYWRfdW50aWxfZ3QgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSBuIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChMZXNzdGhhbjo6YWNjdSkgbiAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IExlc3N0aGFucyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBHcmVhdGVydGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgR3JlYXRlcnRoYW5zIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoR3JlYXRlcnRoYW46OmFjY3UpIChuLTEpIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbnMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFuOjphY2N1IC0+IEdyZWF0ZXJ0aGFucygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIHg6OmFjY3UgLT4gR3JlYXRlcnRoYW5zKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gR3JlYXRlcnRoYW46OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKEdyZWF0ZXJ0aGFucyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9ndCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9sdCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBMZXNzdGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgTGVzc3RoYW5zIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIExlc3N0aGFuOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIChuLTEpIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IExlc3N0aGFucyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbnMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IExlc3N0aGFuOjphY2N1IC0+IExlc3N0aGFucygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgTGVzc3RoYW5zIHg6OmFjY3UgLT4gTGVzc3RoYW5zKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gTGVzc3RoYW46OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKExlc3N0aGFucyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9sdCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9jcGFyZW50aCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChDcGFyZW50aGVzaXM6OmFjY3UpIG4gKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoQ3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBDcGFyZW50aGVzaXM6OmFjY3UgLT4gQ3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IENwYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBDcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENwYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSBuIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXM6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIChuLTEpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9wYXJlbnRoZXNpc3MoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IE9wYXJlbnRoZXNpczo6YWNjdSAtPiBPcGFyZW50aGVzaXNzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXNzIHg6OmFjY3UgLT4gT3BhcmVudGhlc2lzcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9wYXJlbnRoZXNpczo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoT3BhcmVudGhlc2lzcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vcGFyZW50aCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9kcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKERvdWJsZXF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoRG91YmxlcXVvdGU6OmFjY3UpIG4gKERvdWJsZXF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBEb3VibGVxdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIERvdWJsZXF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoRG91YmxlcXVvdGU6OmFjY3UpIChuLTEpIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjphY2N1IC0+IERvdWJsZXF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIHg6OmFjY3UgLT4gRG91YmxlcXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gRG91YmxlcXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKERvdWJsZXF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9kcSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9xID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoUXVvdGUgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChRdW90ZTo6YWNjdSkgbiAoUXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IFF1b3RlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBRdW90ZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgUXVvdGU6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChRdW90ZTo6YWNjdSkgKG4tMSkgKFF1b3RlOjp0bClcbiAgICAgIHwgUXVvdGVzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3Rlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgUXVvdGU6OmFjY3UgLT4gUXVvdGVzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBRdW90ZXMgeDo6YWNjdSAtPiBRdW90ZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBRdW90ZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoUXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9xICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9vYnJhY2tldCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIG4gKE9icmFja2V0Ojp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgT2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9icmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIChuLTEpIChPYnJhY2tldDo6dGwpXG4gICAgICB8IE9icmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IE9icmFja2V0OjphY2N1IC0+IE9icmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT2JyYWNrZXRzIHg6OmFjY3UgLT4gT2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gT2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9icmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9jYnJhY2tldCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKENicmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIG4gKENicmFja2V0Ojp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IE9icmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgT2JyYWNrZXRzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgICAgICB8IENicmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDYnJhY2tldHMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ2JyYWNrZXQ6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChDYnJhY2tldDo6YWNjdSkgKG4tMSkgKENicmFja2V0Ojp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0cyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ2JyYWNrZXQ6OmFjY3UgLT4gQ2JyYWNrZXRzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBDYnJhY2tldHMgeDo6YWNjdSAtPiBDYnJhY2tldHMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBDYnJhY2tldDo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoQ2JyYWNrZXRzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NicmFja2V0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX3NwYWNlID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoU3BhY2UgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChTcGFjZTo6YWNjdSkgbiAoU3BhY2U6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IFNwYWNlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBTcGFjZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgU3BhY2U6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChTcGFjZTo6YWNjdSkgKG4tMSkgKFNwYWNlOjp0bClcbiAgICAgIHwgU3BhY2VzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgU3BhY2U6OmFjY3UgLT4gU3BhY2VzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBTcGFjZXMgeDo6YWNjdSAtPiBTcGFjZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBTcGFjZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoU3BhY2VzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3NwYWNlICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG4gICgqIC9lbmQgZ2VuZXJhdGVkIHBhcnQgKilcblxuICBsZXQgcmVhZF91bnRpbF9uZXdsaW5lIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgKChCYWNrc2xhc2ggYXMgYSkpIDo6ICgoTmV3bGluZSBhcyBiKSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYiA6OiBhIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZSA6OiBCYWNrc2xhc2ggOjogYWNjdSkgbiAoTmV3bGluZSA6OiB0bClcbiAgICAgIHwgKChCYWNrc2xhc2hzIDAgYXMgZSkpIDo6IHRsIC0+IGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgfCAoKEJhY2tzbGFzaHMgeCBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgKHggbW9kIDIpID0gMFxuICAgICAgICB0aGVuIGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgICBlbHNlIGxvb3AgKChCYWNrc2xhc2hzICh4IC0gMSkpIDo6IGFjY3UpIG4gKEJhY2tzbGFzaCA6OiB0bClcbiAgICAgIHwgKChOZXdsaW5lIGFzIGUpKSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuICgoTGlzdC5yZXYgYWNjdSksIHRsKSBlbHNlIGxvb3AgKGUgOjogYWNjdSkgKG4gLSAxKSB0bFxuICAgICAgfCBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwXG4gICAgICAgIHRoZW4gKChMaXN0LnJldiBhY2N1KSwgKE5ld2xpbmUgOjogdGwpKVxuICAgICAgICBlbHNlIGxvb3AgKE5ld2xpbmUgOjogYWNjdSkgKG4gLSAxKSAoTmV3bGluZSA6OiB0bClcbiAgICAgIHwgTmV3bGluZXMgbiA6OiB0bCAtPiAoKExpc3QucmV2IGFjY3UpLCAoKE5ld2xpbmVzIChuIC0gMSkpIDo6IHRsKSlcbiAgICAgIHwgZSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluIGxvb3AgW10gMCBsXG5cbiAgKCogSDEsIEgyLCBIMywgLi4uICopXG4gIGxldCByZWFkX3RpdGxlIChtYWluX2xvb3A6bWFpbl9sb29wKSBuIHIgX3ByZXZpb3VzIGxleGVtZXMgPVxuICAgIGxldCB0aXRsZSwgcmVzdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFja3NsYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaDo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjpIYXNoOjp0bCB3aGVuIG4gbW9kIDIgPSAxIC0+XG4gICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNocyhuLTEpOjphY2N1KSB0bFxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaHMoaCk6OnRsIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgICAgICAgfCBbXVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxOZXdsaW5lcyBfKTo6X1xuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaDo6YWNjdSkgdGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjpIYXNocyhoKTo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNocyhuKTo6YWNjdSlcbiAgICAgICAgICAgICAgICAoKGlmIGggPSAwIHRoZW4gSGFzaCBlbHNlIEhhc2hzKGgtMSkpOjp0bClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNocyhoKTo6QmFja3NsYXNocyhuKTo6YWNjdSkgdGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChIYXNofEhhc2hzIF8pIDo6IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIGFzIGwpXG4gICAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoW10gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChIYXNofEhhc2hzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKFtdIGFzIGwpIC0+XG4gICAgICAgICAgbWFpbl9sb29wIFtdIFtdIChMaXN0LnJldiBhY2N1KSwgbFxuICAgICAgICB8IFtIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IEhhc2h8SGFzaHMgX11cbiAgICAgICAgfCBbKFNwYWNlfFNwYWNlcyBfKTsgKEhhc2h8SGFzaHMgXyk7IChTcGFjZXxTcGFjZXMgXyldIC0+XG4gICAgICAgICAgbWFpbl9sb29wIFtdIFtdIChMaXN0LnJldiBhY2N1KSwgW11cbiAgICAgICAgfCB4Ojp0bCAtPlxuICAgICAgICAgIGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBsZXhlbWVzXG4gICAgaW5cbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDEgLT4gU29tZShIMSB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCAyIC0+IFNvbWUoSDIgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMyAtPiBTb21lKEgzIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDQgLT4gU29tZShINCB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA1IC0+IFNvbWUoSDUgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNiAtPiBTb21lKEg2IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHAgbCA9XG4gICAgbWF0Y2ggZXh0ZW5zaW9ucyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBfIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIChmdW4gZiAtPiBmI3BhcnNlcl9leHRlbnNpb24gciBwIGwpXG4gICAgICAgICAgfCBTb21lKG5yLCBucCwgbmwpIGFzIGUgLT5cbiAgICAgICAgICAgIChmdW4gZiAtPiBtYXRjaCBmI3BhcnNlcl9leHRlbnNpb24gbnIgbnAgbmwgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGVcbiAgICAgICAgICAgICAgIHwgU29tZSBfIGFzIGsgLT4gaylcbiAgICAgICAgKVxuICAgICAgICBOb25lXG4gICAgICAgIGV4dGVuc2lvbnNcblxuICAoKiBibG9ja3F1b3RlcyAqKVxuICBsZXQgZW1haWxzdHlsZV9xdW90aW5nIChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBibG9jayBjbCA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6KE5ld2xpbmU6Ol8gYXMgdGwpIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgICgqIG11bHRpIHBhcmFncmFwaCBibG9ja3F1b3RlcyB3aXRoIGVtcHR5IGxpbmVzICopXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtTcGFjZV0gdGxcbiAgICAgIHwgTmV3bGluZXMgMDo6R3JlYXRlcnRoYW46OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtTcGFjZXMobi0xKV0gdGxcblxuICAgICAgfCAoTmV3bGluZXMgXzo6XyBhcyBsKSB8IChbXSBhcyBsKSAtPiBmaXgoTGlzdC5yZXYoY2xAYmxvY2spKSwgbFxuICAgICAgfCBlOjp0bCAtPiBsb29wIGJsb2NrIChlOjpjbCkgdGxcbiAgICBpblxuICAgIG1hdGNoIGxvb3AgW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6YmxvY2ssIHRsIC0+XG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyAlU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGJsb2NrKTtcbiAgICAgIFNvbWUoKEJsb2NrcXVvdGUobWFpbl9sb29wIFtdIFtdIGJsb2NrKTo6ciksIFtOZXdsaW5lXSwgdGwpXG4gICAgfCBfIC0+XG4gICAgICBOb25lXG5cblxuICAoKiBtYXliZSBhIHJlZmVyZW5jZSAqKVxuICBsZXQgbWF5YmVfcmVmZXJlbmNlIChtYWluX2xvb3A6bWFpbl9sb29wKSByYyByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2Uga25vdyBpdCdzIG5vdCBhIGxpbmsgYWx0aG91Z2hcbiAgICAgICBpdCBzdGFydGVkIHdpdGggYSAnWycgKilcbiAgICAoKiBTbyBpdCBjb3VsZCBiZSBhIHJlZmVyZW5jZSBvciBhIGxpbmsgZGVmaW5pdGlvbi4gKilcbiAgICBsZXQgcmVjIG1heWJlX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGJsYW5rLCByZW1haW5zID0gcmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGFyZSBubyB1bndhbnRlZCBjaGFyYWN0ZXJzIGJldHdlZW4gQ0IgYW5kIE9CLiAqKVxuICAgICAgaWYgZWF0IChsZXQgZmxhZyA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICAgIGZ1bmN0aW9uICgqIGFsbG93IG9ubHkgYSBzcGFjZSwgbXVsdGlwbGUgc3BhY2VzLCBvciBhIG5ld2xpbmUgKilcbiAgICAgICAgICAgICAgfCBOZXdsaW5lIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgLT4gIWZsYWcgJiYgKGZsYWcgOj0gZmFsc2U7IHRydWUpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgYmxhbmsgPD4gW10gdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nICgqIDwtLSBub3QgYSByZWd1bGFyIHJlZmVyZW5jZSAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHJlbWFpbnMgd2l0aFxuICAgICAgICB8IFtdLCByZW1haW5zIC0+XG4gICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRleHQgaW4gKCogaW1wbGljaXQgYW5jaG9yICopXG4gICAgICAgICAgU29tZSgoKFJlZihyYywgaWQsIGlkLCBmYWxsYmFjaykpOjpyKSwgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICAgICAgfCBpZCwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIEwuc3RyaW5nX29mX3Rva2VucyBpZCxcbiAgICAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0LCBmYWxsYmFjaykpOjpyKSxcbiAgICAgICAgICAgICAgIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX25vbnJlZ3VsYXJfcmVmIGwgPVxuICAgICAgbGV0IHRleHQsIHJlbWFpbnMgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgaW5cbiAgICAgICgqIGNoZWNrIHRoYXQgdGhlcmUgaXMgbm8gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGlmICh0cnkgaWdub3JlKHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgdGV4dCk7IHRydWVcbiAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZzsgKCogPC0tIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgU29tZSgoKFJlZihyYywgaWQsIGlkLCBmYWxsYmFjaykpOjpyKSwgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICBpblxuICAgIGxldCByZWMgbWF5YmVfZGVmIGwgPVxuICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIHdpdGhcbiAgICAgIHwgXywgW10gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgfCBpZCwgKENvbG9uOjooU3BhY2V8U3BhY2VzIF8pOjpyZW1haW5zKVxuICAgICAgfCBpZCwgKENvbG9uOjpyZW1haW5zKSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pOjogXyBhcyBsIC0+IFNwbGl0KFtdLCBsKVxuICAgICAgICAgICAgICAgICAgfCBlOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSkpXG4gICAgICAgICAgICAgIHJlbWFpbnNcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZShbXSwgXykgLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgIHwgU29tZSh1cmwsIHJlbWFpbnMpIC0+XG4gICAgICAgICAgICBsZXQgdGl0bGUsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIGVhdFxuICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIHwgKFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXykgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHJlbWFpbnNcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcygwKTo6dGwgLT4gW10sIHRsXG4gICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiByZWFkX3VudGlsX3EgfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OnRsLT4gcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB0bFxuICAgICAgICAgICAgICB8IGwgLT4gW10sIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCB1cmwgPiAyICYmIHVybC5bMF0gPSAnPCdcbiAgICAgICAgICAgICAgICAgJiYgdXJsLltTdHJpbmcubGVuZ3RoIHVybCAtIDFdID0gJz4nIHRoZW5cbiAgICAgICAgICAgICAgICBTdHJpbmcuc3ViIHVybCAxIChTdHJpbmcubGVuZ3RoIHVybCAtIDIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB1cmxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByYyNhZGRfcmVmIChMLnN0cmluZ19vZl90b2tlbnMgaWQpIChMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUpIHVybDtcbiAgICAgICAgICAgIFNvbWUociwgW05ld2xpbmVdLCByZW1haW5zKVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgaW5cbiAgICB0cnlcbiAgICAgIG1heWJlX3JlZiBsXG4gICAgd2l0aCB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgIHRyeVxuICAgICAgICBtYXliZV9kZWYgbFxuICAgICAgd2l0aFxuICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1heWJlX25vbnJlZ3VsYXJfcmVmIGxcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgICBOb25lXG5cblxuICAoKiogbWF5YmUgYSBsaW5rICopXG4gIGxldCBtYXliZV9saW5rIChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGwgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGlua1xcblwiO1xuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWFkX3VybCBuYW1lIGwgPVxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgIyBtYXliZV9saW5rPnJlYWRfdXJsICVTXFxuXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIHRyeVxuICAgICAgICBsZXQgbF9jcCwgcl9jcCA9XG4gICAgICAgICAgcmVhZF91bnRpbF9jcGFyZW50aCB+bm9fbmw6dHJ1ZSB+YnE6ZmFsc2UgbFxuICAgICAgICBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IGxfY3A9JVMgcl9jcD0lU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGxfY3ApXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2NwKTtcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGxfZHEsIHJfZHEgPVxuICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+bm9fbmw6dHJ1ZSB+YnE6ZmFsc2UgbFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2RxPSVTIHJfZHE9JVNcXG4lIVwiXG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGxfZHEpXG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHJfZHEpO1xuICAgICAgICAgICgqIG1heWJlIHRpdGxlICopXG4gICAgICAgICAgaWYgTGlzdC5sZW5ndGggbF9jcCA+IExpc3QubGVuZ3RoIGxfZHEgdGhlbiAoKiB0aXRsZSAqKVxuICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgICAgIG1hdGNoIExpc3QucmV2IGxfZHEgd2l0aFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IHRsKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIGxfZHFcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlLCByZXN0ID0gcmVhZF91bnRpbF9kcSB+bm9fbmw6ZmFsc2UgfmJxOmZhbHNlIHJfZHEgaW5cbiAgICAgICAgICAgICAgbGV0IHJlc3QgPSBzbmQocmVhZF91bnRpbF9jcGFyZW50aCByZXN0KSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgU29tZShVcmwodXJsLCBuYW1lLCB0aXRsZSkgOjogciwgW0NwYXJlbnRoZXNpc10sIHJlc3QpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlICgqIG5vIHRpdGxlICopXG4gICAgICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPiAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IG5vIHRpdGxlXFxuJSFcIjtcbiAgICAgICAgICAgIGxldCB1cmwgPSBtYXRjaCBMaXN0LnJldiBsX2NwIHdpdGhcbiAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGxcbiAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsIC0+IExpc3QucmV2IHRsXG4gICAgICAgICAgICAgIHwgXyAtPiBsX2NwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZXN0ID0gW10sIHJfY3AgaW5cbiAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgIGVuZFxuICAgICAgd2l0aCBOTF9leGNlcHRpb24gfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgIE5vbmVcbiAgICBpblxuICAgIGxldCByZWFkX25hbWUgbCA9XG4gICAgICAoKiBpdCdzIG5vdCByZWFsbHkgdGhlIFwibmFtZVwiIG9mIGEgVVJMIGJ1dCB3aGF0XG4gICAgICAgICBjb3JyZXNwb25kcyB0byB0aGUgaW5uZXIgSFRNTCBvZiBhbiBIVE1MICdBJyB0YWcgKilcbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz4gcmVhZF9uYW1lXFxuXCI7XG4gICAgICB0cnlcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIHdpdGhcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKGVhdF9ibGFuayB0bClcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzcyAwOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3Mgbjo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXNzKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBOb25lXG4gICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT4gTm9uZVxuICAgIGluXG4gICAgcmVhZF9uYW1lIGxcblxuXG4gIGxldCBoYXNfcGFyYWdyYXBocyBsID1cbiAgICAoKiBIYXMgYXQgbGVhc3QgMiBjb25zZWN1dGl2ZSBuZXdsaW5lcy4gKilcbiAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gTmV3bGluZXMgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgbFxuXG4gIGxldCBwYXJzZV9saXN0IChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBwYXJzZV9saXN0IHI9KCVzKSBwPSglcykgbD0oJXMpXFxuJSFcIlxuICAgICAgICBcIlwiICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCAoTGlzdC5yZXYgcikpICopXG4gICAgICAgIFwiXCIgKCogKGRlc3RyaW5nX29mX3RsIHApICopXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB+bGltaXQ6NDAgbCk7XG4gICAgZW5kO1xuICAgIGxldCBtb2R1bGUgVU8gPSBzdHJ1Y3QgdHlwZSBvcmRlcmVkID0gTyB8IFUgZW5kIGluXG4gICAgbGV0IG9wZW4gVU8gaW5cbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdDogbD0oJXMpXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgbGV0IGVuZF9vZl9pdGVtIChpbmRlbnQ6aW50KSBsIDogdG9rIHNwbGl0X2FjdGlvbiAgPSBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgU3BsaXQoW10sW10pXG4gICAgICB8IE5ld2xpbmVzIDAgOjogKChTcGFjZXMgbikgOjogR3JlYXRlcnRoYW4gOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRsXG4gICAgICAgICAgICAgICAgICAgICAgIGFzIHMpIC0+XG4gICAgICAgIGFzc2VydChuPj0wKTtcbiAgICAgICAgaWYgbisyID0gaW5kZW50KzQgdGhlbiAoKiBibG9ja3F1b3RlICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKG4rMikgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZSBpZiBuKzIgPj0gaW5kZW50KzggdGhlbiAoKiBjb2RlIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmVzIDAgOjogKFNwYWNlcyBuIDo6IHRsIGFzIHMpIC0+XG4gICAgICAgIGFzc2VydChuPj0wKTtcbiAgICAgICAgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDApOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZSBpZiBuKzIgPj0gaW5kZW50KzQgdGhlbiAoKiBuZXcgcGFyYWdyYXBoIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IChOZXdsaW5lcyBfKSA6OiBfIC0+ICgqIG4gPiAwICopXG4gICAgICAgICgqIEVuZCBvZiBpdGVtLCBzdG9wICopXG4gICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lIDo6XG4gICAgICAgIChcbiAgICAgICAgICAoKFNwYWNlfFNwYWNlcyBfKSA6OiAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pOjogXylcbiAgICAgICAgfCAoKFNwYWNlfFNwYWNlcyBfKSA6OiBOdW1iZXIgXyA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfKVxuICAgICAgICB8ICgoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pOjogXylcbiAgICAgICAgfCAoTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgICBhcyB0bCkgLT5cbiAgICAgICAgU3BsaXQoW05ld2xpbmVdLCB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgfCBTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBleGFjdGx5IDIgY29uc2VjdXRpdmUgbmV3bGluZXMsXG4gICAgICAgICAgIHNvIHdlIHJld3JpdGUgdGhlIGhlYWQgb2YgdGhlIGxleGluZyBzdHJlYW0uICopXG4gICAgICAgIENvbnRpbnVlX3dpdGgoW10sIE5ld2xpbmVzIDAgOjogdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IChOZXdsaW5lcyBfKSA6OiBfIC0+XG4gICAgICAgICgqIEEgbGluZSB3aXRoIHNwYWNlcyBzaG91bGRuJ3QgaW50ZXJmZXJlIGhlcmUsXG4gICAgICAgICAgIHdoaWNoIGlzIGFib3V0IGF0IGxlYXN0IDMgY29uc2VjdXRpdmUgbmV3bGluZXMsXG4gICAgICAgICAgIHNvIHdlIHN0b3AuICopXG4gICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2VzIF8gYXMgcykgOjogdGwgLT5cbiAgICAgICAgQ29udGludWVfd2l0aFxuICAgICAgICAgIChbcztcbiAgICAgICAgICAgIFRhZyhcInBhcnNlX2xpc3QvcmVtZW1iZXIgc3BhY2VzXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBTcGFjZXMgXzo6dGwgLT4gU29tZShyLHAsU3BhY2U6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICAgIE5ld2xpbmVdLFxuICAgICAgICAgICB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgYXMgcykgOjogdGwgLT5cbiAgICAgICAgQ29udGludWVfd2l0aFxuICAgICAgICAgIChbcztcbiAgICAgICAgICAgIFRhZyhcInBhcnNlX2xpc3QvcmVtZW1iZXIgc3BhY2VcIixcbiAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCA9XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICAgIE5ld2xpbmVdLFxuICAgICAgICAgICB0bClcbiAgICAgIHwgXzo6XyAtPlxuICAgICAgICBDb250aW51ZVxuICAgIGluXG4gICAgbGV0IHJldl90b190IGwgPVxuICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgICAoKiBOZXdsaW5lcyBhdCB0aGUgZW5kIG9mIGl0ZW1zIGhhdmUgbm8gbWVhbmluZyAoZXhjZXB0IHRvIGVuZCB0aGVcbiAgICAgICAgIGl0ZW0gd2hpY2ggaXMgZXhwcmVzc2VkIGJ5IHRoZSBjb25zdHJ1Y3RvciBhbHJlYWR5KS4gKilcbiAgICAgIGxldCBsID0gbWF0Y2ggbCB3aXRoIChOZXdsaW5lIHwgTmV3bGluZXMgXykgOjogdGwgLT4gdGwgfCBfIC0+IGwgaW5cbiAgICAgIG1haW5fbG9vcCBbXSBbTmV3bGluZV0gKExpc3QucmV2IGwpXG4gICAgaW5cbiAgICBsZXQgYWRkIChzdWJsaXN0OmVsZW1lbnQpIGl0ZW1zID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGFkZFxcbiUhXCI7XG4gICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCAoTyxpbmRlbnRzLGl0ZW0pOjp0bCAtPlxuICAgICAgICAoTyxpbmRlbnRzLChpdGVtQFtzdWJsaXN0XSkpOjp0bFxuICAgICAgfCAoVSxpbmRlbnRzLGl0ZW0pOjp0bCAtPlxuICAgICAgICAoVSxpbmRlbnRzLChpdGVtQFtzdWJsaXN0XSkpOjp0bFxuICAgIGluXG4gICAgbGV0IG1ha2VfdXAgfnAgaXRlbXMgOiBPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWtlX3VwIHA9JWJcXG4lIVwiIHA7XG4gICAgICBsZXQgaXRlbXMgPSBMaXN0LnJldiBpdGVtcyBpblxuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCAoVSxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIFVscChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBVbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IChPLF8saXRlbSk6Ol8gLT5cbiAgICAgICAgaWYgcCB0aGVuXG4gICAgICAgICAgT2xwKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE9sKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgIHwgW10gLT5cbiAgICAgICAgZmFpbHdpdGggXCJtYWtlX3VwIGNhbGxlZCB3aXRoIFtdXCIgKCogYXNzZXJ0IGZhbHNlICopXG4gICAgaW5cbiAgICBsZXQgcmVjIGxpc3RfaXRlbXMgfnAgaW5kZW50cyBpdGVtcyBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGxpc3RfaXRlbXM6IHA9JWIgbD0oJXMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAoKiBubyBtb3JlIGxpc3QgaXRlbXMgKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAoKiBtb3JlIGxpc3QgaXRlbXMgKilcbiAgICAgICgqIG5ldyB1bm9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgKFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMCkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoMjM0NikgbmV3X2l0ZW09JVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIG5ld19pdGVtKTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoVSxbMF0sIHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMDo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBfOjpfIC0+XG4gICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2U6OihTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDEpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFsxXSAoKFUsWzFdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoVSwxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2VzIG46OihTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIChuKzIpKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIHNwYWNlc1tdIGw9KCVTKVxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChVLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSkgOjogaXRlbXMgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGlmIGkgPCBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoKG4rMik6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoVSwobisyKTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldXG4gICAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgICAgICAgZWxzZSAoKiBpID4gbiArIDIgKilcbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICAoKiBuZXcgb3JkZXJlZCBpdGVtcyAqKVxuICAgICAgfCBOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIG5ld19pdGVtO1xuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMF0gKChPLFswXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDEpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFsxXSAoKE8sWzFdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMTo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGkgPiAxIHRoZW5cbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICAgICAgZWxzZSAoKiBpIDwgMSA6IG5ldyBzdWIgbGlzdCopXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoMTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLDE6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXSByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wOnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIChuKzIpKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7ICgqIGHvZS4uLiBsaXN0ZXMgbWFsIGZvcm3pZXMgPyEgKilcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbbisyXSAoKE8sW24rMl0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIHNwYWNlcyglZDo6Xykgbj0lZCBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICBpIG4gKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgaWYgaSA9IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcylcbiAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnBcbiAgICAgICAgICAgICAgICAgICAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKE8sKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wOnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgICAgICAgZWxzZSAoKiBpID4gbiArIDIgKilcbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICAoKiAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjooKFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTcGFjZXxTcGFjZXMgXyk6OlN0YXI6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTcGFjZXxTcGFjZXMgXyk6Ok51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgICAgLT5cbiAgICAgICAgbGlzdF9pdGVtcyB+cDp0cnVlIGluZGVudHMgaXRlbXMgbFxuICAgICAgfCBfIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgbGV0IHJlYyBzdHJpbmdfb2ZfaXRlbXMgaXRlbXMgPVxuICAgICAgICAgICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICAgICAgICB8IChPLGluZGVudDo6XyxpdGVtKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAgc3ByaW50ZiBcIihPLGk9JWQsJVMpXCIgKGluZGVudCkgKE9tZF9iYWNrZW5kLmh0bWxfb2ZfbWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaXRlbXMgdGxcbiAgICAgICAgICAgICAgfCAoVSxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoVSxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgXyAtPiBcIih3ZWlyZClcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBOQUxJIHBhcnNlX2xpc3Q6IGw9KCVTKSBpdGVtcz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKSAoc3RyaW5nX29mX2l0ZW1zIGl0ZW1zKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgKCogbm90IGEgbGlzdCBpdGVtICopXG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgIGluXG4gICAgbWF0Y2ggbGlzdF9pdGVtcyB+cDpmYWxzZSBbXSBbXSBsIHdpdGhcbiAgICB8IHJwLCBsIC0+XG4gICAgICBycDo6ciwgW05ld2xpbmVdLCBsXG5cblxuXG4gIGxldCBpY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgX3AgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogaW5kZW50ZWQgY29kZTogcmV0dXJucyAocixwLGwpIHdoZXJlIHIgaXMgdGhlIHJlc3VsdCwgcCBpcyB0aGVcbiAgICAgICBsYXN0IHRoaW5nIHJlYWQsIGwgaXMgdGhlIHJlbWFpbnMgKilcbiAgICBsZXQgZHVtbXlfdGFnID0gVGFnKFwiZHVtbXlfdGFnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gPSBmdW4gciBwIGwgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSBpblxuICAgIGxldCBhY2N1ID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIGxldCByZWMgbG9vcCBzIHRsID0gbWF0Y2ggcywgdGwgd2l0aFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAoU3BhY2V8U3BhY2VzKDB8MSkpOjpfIC0+XG4gICAgICAgICgqIDEsIDIgb3IgMyBzcGFjZXMuICopXG4gICAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2Ugd2hhdCBmb2xsb3dzIGlzbid0LiAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgU3BhY2VzKG4pOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgKCogQXQgbGVhc3QgNCBzcGFjZXMsIGl0J3Mgc3RpbGwgY29kZS4gKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaWYgbiA+PSA0IHRoZW4gU3BhY2VzKG4tNCkgZWxzZSBpZiBuID0gMyB0aGVuIFNwYWNlIGVsc2UgZHVtbXlfdGFnKVxuICAgICAgICAgIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIChub3Rfc3BhY2VzOjpfIGFzIHRsKSAtPiAoKiBzdG9wICopXG4gICAgICAgIENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBCdWZmZXIuY29udGVudHMgYWNjdSkgOjogciwgW3BdLCB0bFxuICAgICAgKCogLT4gUmV0dXJuIHdoYXQncyBiZWVuIGZvdW5kIGFzIGNvZGUgYmVjYXVzZSBpdCdzIG5vIG1vcmUgY29kZS4gKilcbiAgICAgIHwgcCwgZTo6dGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgICgqIGh0bWwgZW50aXRpZXMgYXJlIHRvIGJlIGNvbnZlcnRlZCBsYXRlciEgKilcbiAgICAgICAgbG9vcCBlIHRsXG4gICAgICB8IHAsIFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpOjpyLCBbcF0sIFtdXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFNwYWNlcyBuOjp0bCAtPlxuICAgICAgaWYgbiA+PSA0IHRoZW5cbiAgICAgICAgU29tZShsb29wIChTcGFjZXMobi00KSkgdGwpXG4gICAgICBlbHNlIGlmIG4gPSAzIHRoZW5cbiAgICAgICAgU29tZShsb29wIFNwYWNlIHRsKVxuICAgICAgZWxzZSBTb21lKGxvb3AgZHVtbXlfdGFnIHRsKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4gICgqIFJldHVybnMgWyhyLHAsbCldIHdoZXJlIFtyXSBpcyB0aGUgcmVzdWx0LCBbcF0gaXMgdGhlIGxhc3QgdGhpbmdcbiAgICAgcmVhZCwgYW5kIFtsXSBpcyB3aGF0IHJlbWFpbnMuICopXG4gIGxldCBzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUgbWFpbl9sb29wIGRlZmF1bHRfbGFuZyBuIHIgcHJldmlvdXMgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgYXNzZXJ0IChuID4gMCk7XG4gICAgaWYgbiA8PSAzIHRoZW4gKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgICAoKiB1bm9yZGVyZWQgbGlzdCAqKVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIChMLm1ha2Vfc3BhY2Ugbjo6bGV4ZW1lcylcbiAgICAgIHwgKE51bWJlciBfKTo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAoKiBvcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IFtdXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+ICgqIGJsYW5rIGxpbmUsIHNraXAgc3BhY2VzICopXG4gICAgICAgIHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8ICBfOjpfIC0+XG4gICAgICAgIFRleHQgKFwiIFwiKTo6ciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICApXG4gICAgZWxzZSAoICgqIG4+PTQsIGJsYW5rIGxpbmUgb3IgaW5kZW50ZWQgY29kZSAqKVxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IFtdIHwgKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyAgLT4gciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICAgIHwgXyAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGljb2RlIH5kZWZhdWx0X2xhbmcgciBbTmV3bGluZV0gKEwubWFrZV9zcGFjZSBuIDo6IGxleGVtZXMpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiByLHAsbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5pY29kZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICApXG5cbiAgbGV0IHNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbmUgPyhodG1sPWZhbHNlKSBuIHIgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgYXNzZXJ0IChuID4gMCk7XG4gICAgaWYgbiA9IDEgdGhlblxuICAgICAgKFRleHQgXCIgXCI6OnIpLCBbU3BhY2VdLCBsZXhlbWVzXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBsZXhlbWVzIHdpdGhcbiAgICAgIHwgTmV3bGluZSA6OiB0bCB3aGVuIG5vdCBodG1sIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIihPTUQpIDIgb3IgbW9yZSBzcGFjZXMgYmVmb3JlIGEgbmV3bGluZSwgZWF0IHRoZSBuZXdsaW5lXFxuJSFcIjtcbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIHRsXG4gICAgICB8IE5ld2xpbmVzIGsgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCAxIG5ld2xpbmVcIjtcbiAgICAgICAgbGV0IG5ld2xpbmVzID0gaWYgayA9IDAgdGhlbiBOZXdsaW5lIGVsc2UgTmV3bGluZXMoay0xKSBpblxuICAgICAgICBCcjo6ciwgW1NwYWNlcyhuLTIpXSwgbmV3bGluZXMgOjogdGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBhc3NlcnQgKG4+MSk7XG4gICAgICAgIChUZXh0IChTdHJpbmcubWFrZSBuICcgJyk6OnIpLCBbU3BhY2VzKG4tMildLCBsZXhlbWVzXG4gICAgKVxuXG5cbiAgbGV0IG1heWJlX2F1dG9lbWFpbCByIHAgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBMZXNzdGhhbjo6dGwgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgZnNwbGl0IH5leGNsOihmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIH5mOihmdW5jdGlvbiBBdDo6dGwgLT4gU3BsaXQoW10sdGwpIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgIHRsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lKGxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF98U3BhY2V8U3BhY2VzIF8pIDo6IF8tPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uIEdyZWF0ZXJ0aGFuOjp0bCAtPiBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwOjp0bCAtPiBTcGxpdChbXSxHcmVhdGVydGhhbjo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbjo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgcmlnaHRcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUoZG9tYWluLCB0bCkgLT5cbiAgICAgICAgICAgIGxldCBlbWFpbCA9IEwuc3RyaW5nX29mX3Rva2VucyBsZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICBeIFwiQFwiIF4gTC5zdHJpbmdfb2ZfdG9rZW5zIGRvbWFpbiBpblxuICAgICAgICAgICAgU29tZShVcmwoXCJtYWlsdG86XCJeZW1haWwsW1RleHQgZW1haWxdLFwiXCIpOjpyLFtHcmVhdGVydGhhbl0sdGwpXG4gICAgICBlbmRcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJPbWRfcGFyc2VyLm1heWJlX2F1dG9lbWFpbDogd3JvbmcgdXNlIG9mIHRoZSBmdW5jdGlvbi5cIlxuXG4gIGxldCBpc19oZXggcyA9XG4gICAgU3RyaW5nLmxlbmd0aCBzID4gMVxuICAgICYmIChzLlswXSA9ICdYJyB8fCBzLlswXSA9ICd4JylcbiAgICAmJiAobGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgaSA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgfHxcbiAgICAgICAgIChtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgLT5cbiAgICAgICAgICAgIGxvb3AgKHN1Y2MgaSlcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIGluIGxvb3AgMSlcblxuICBsZXQgbWVkaWF0eXBldGV4dG9tZCA6IHN0cmluZyBsaXN0IHJlZiA9IHJlZiBbXVxuXG4gIGxldCBmaWx0ZXJfdGV4dF9vbWRfcmV2IGwgPVxuICAgIGxldCByZWMgbG9vcCBiIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICAgIHwgKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIik6OnRsIC0+XG4gICAgICAgIGxvb3AgdHJ1ZSByIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgYiAoZTo6cikgdGxcbiAgICBpblxuICAgIGxvb3AgZmFsc2UgW10gbFxuXG4gIGV4Y2VwdGlvbiBPcnBoYW5fY2xvc2luZyBvZiBzdHJpbmcgKiBsICogbFxuXG4gIGxldCByZWMgbWFpbl9pbXBsX3JldiB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYlxcbiUhXCIgaHRtbDsgKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsX3JldiBodG1sPSViIHI9JXMgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgaHRtbFxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgcHJldmlvdXMpXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBsZXhlbWVzKTtcbiAgICBtYXRjaCBwcmV2aW91cywgbGV4ZW1lcyB3aXRoXG4gICAgKCogbm8gbW9yZSB0byBwcm9jZXNzICopXG4gICAgfCBfLCBbXSAtPlxuICAgICAgKCogcmV0dXJuIHRoZSByZXN1bHQgKC8hXFwgaXQgaGFzIHRvIGJlIHJldmVyc2VkIGFzIHNvbWUgcG9pbnQpICopXG4gICAgICByXG5cbiAgICAoKiBUYWc6IHRhZyBzeXN0ZW0gJFxcY3VwJCBoaWdoLXByaW9yaXR5IGV4dGVuc2lvbiBtZWNoYW5pc20gKilcbiAgICB8IF8sIFRhZyhfbmFtZSwgZSkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGUjcGFyc2VyX2V4dGVuc2lvbiByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgdGxcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCBjb21tZW50cyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjooRXhjbGFtYXRpb246Ok1pbnVzcyAwOjpjIGFzIHRsKSAtPlxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgKE1pbnVzcyBfIGFzIG0pOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsIC0+XG4gICAgICAgICAgICBTcGxpdChbZzttXSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmc3BsaXQgfmY6ZiBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSAoY29tbWVudHMsIG5ld190bCkgLT5cbiAgICAgICAgICBsZXQgciA9IEh0bWxfY29tbWVudChMLnN0cmluZ19vZl90b2tlbnMgY29tbWVudHMpIDo6IHIgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW05ld2xpbmVdIG5ld190bFxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nIC8gYmxvY2txdW90ZSAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgR3JlYXRlcnRoYW46OihTcGFjZXxTcGFjZXMgXyk6Ol8gLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCByIHByZXZpb3VzIChOZXdsaW5lOjpsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcblxuICAgICgqIGVtYWlsLXN0eWxlIHF1b3RpbmcsIHdpdGggbGluZXMgc3RhcnRpbmcgd2l0aCBzcGFjZXMhICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoU3BhY2V8U3BhY2VzKDB8MSkgYXMgcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZXxTcGFjZXMgXyk6Ol8gLT5cbiAgICAgICgqIEl0J3MgMSwgMiBvciAzIHNwYWNlcywgbm90IG1vcmUgYmVjYXVzZSBpdCB3b3VsZG4ndCBtZWFuXG4gICAgICAgICBxdW90aW5nIGFueW1vcmUgYnV0IGNvZGUuICopXG4gICAgICBiZWdpblxuICAgICAgICBsZXQgbmV3X3IsIHAsIHJlc3QgPVxuICAgICAgICAgIGxldCBmb28sIHJlc3QgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKEwubGVuZ3RoIHMpIChOZXdsaW5lOjpsZXhlbWVzKSB3aXRoXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpmb28sIHJlc3QgLT4gZm9vLCByZXN0XG4gICAgICAgICAgICB8IHJlcyAtPiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBlbWFpbHN0eWxlX3F1b3RpbmcgbWFpbl9sb29wIFtdIHByZXZpb3VzIChOZXdsaW5lOjpmb28pXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShuZXdfciwgcCwgW10pIC0+IG5ld19yLCBwLCByZXN0XG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKG5ld19yQHIpIFtOZXdsaW5lXSByZXN0XG4gICAgICBlbmRcblxuICAgICgqIG1pbnVzICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLFxuICAgICAgKE1pbnVzfE1pbnVzcyBfIGFzIHQpIDo6ICgoU3BhY2V8U3BhY2VzIF8pOjpfIGFzIHRsKSAtPlxuICAgICAgKCogbWF5YmUgaHIgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgc28gaXQgY291bGQgYmUgYSBsaXN0ICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IE1pbnVzIC0+ICgqIGl0J3MgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgICAgICAgfCBfIC0+ICgqIG5vdCBhIGxpc3QgKilcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIGwgLT4gKCogaHIgKilcbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgIGVuZFxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKE1pbnVzfE1pbnVzcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaHJfbSBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgqIG5vIGhyLCBhbmQgaXQncyBub3QgYSBsaXN0IGVpdGhlclxuICAgICAgICAgICAgICAgICAgICAgYmVjYXVzZSBpdCdzIG5vdCBmb2xsb3dlZCBieSBzcGFjZXMgKilcbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIGwgLT4gKCogaHIgKilcbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgIGVuZFxuXG4gICAgKCogaGFzaGVzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksXG4gICAgICAoSGFzaHMgbiBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKSA6OiB0dGwgYXMgdGwpXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksXG4gICAgICAoSGFzaHMgbiBhcyB0KSA6OiAodHRsIGFzIHRsKSAtPiAoKiBoYXNoIHRpdGxlcyAqKVxuICAgICAgaWYgbiA8PSA0IHRoZW5cbiAgICAgICAgbWF0Y2ggcmVhZF90aXRsZSBtYWluX2xvb3AgKG4rMikgciBwcmV2aW91cyB0dGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgSGFzaCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IHRsXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogdGwgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGJlZ2luIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIDEgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnJlYWRfdGl0bGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcbiAgICB8IF8sIChIYXNofEhhc2hzIF8gYXMgdCkgOjogdGwgLT4gKCogaGFzaCAtLSBubyB0aXRsZSAqKVxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYWZ0ZXIgYSBuZXdsaW5lOiBjb3VsZCBsZWFkIHRvIGhyICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoKFNwYWNlfFNwYWNlcyBfKSBhcyBzcCkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyIHRsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogTm8gW0hyXSwgYnV0IG1heWJlIFtVbF0sIFtPbF0sIGNvZGUsLi4uICopXG4gICAgICAgICAgbGV0IG4gPSBMLmxlbmd0aCBzcCBpblxuICAgICAgICAgIGxldCByLCBwLCBsID1cbiAgICAgICAgICAgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIHRsIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IFNvbWUgdGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIHRsXG4gICAgICBlbmRcblxuICAgICgqIHNwYWNlcyBhbnl3aGVyZSAqKVxuICAgIHwgXywgKChTcGFjZXxTcGFjZXMgXykgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIHRvbyBtYW55IGNhc2VzIHRvIGJlIGhhbmRsZWQgaGVyZSAqKVxuICAgICAgbGV0IG4gPSBMLmxlbmd0aCB0IGluXG4gICAgICBsZXQgciwgcCwgbCA9IHNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbmUgfmh0bWwgbiByIHRsIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG5cbiAgICAoKiB1bmRlcnNjb3JlcyAqKVxuICAgIHwgXywgKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogb25lIFwib3JwaGFuXCIgdW5kZXJzY29yZSwgb3IgZW1waCAqKVxuICAgICAgKG1hdGNoIHVlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcbiAgICB8IF8sIChVbmRlcnNjb3JlcygoMHwxKSBhcyBuKSBhcyB0KSA6OiB0bCAtPlxuICAgICAgKCogMiBvciAzIFwib3JwaGFuXCIgdW5kZXJzY29yZXMsIG9yIGVtcGgvYm9sZCAqKVxuICAgICAgKG1hdGNoIHVlbXBoX29yX2JvbGQgKG4rMikgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW4gKCogMSB1bmRlcnNjb3JlICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgICBlbHNlICgqIDIgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgKVxuXG4gICAgKCogZW51bWVyYXRlZCBsaXN0cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKE51bWJlciBfKSA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bCAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBwbHVzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFBsdXMgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgaW5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcblxuICAgICgqIHN0YXJzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXIgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICAoKiBtYXliZSBociBvciBuZXcgbGlzdCAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG4gICAgICBlbmRcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgU3RhcnMgXyA6OiBfIHdoZW4gaHJfcyBsZXhlbWVzIDw+IE5vbmUgLT5cbiAgICAgICgqIGhyICopXG4gICAgICAobWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICB8IFNvbWUgbCAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICApXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9zIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICBlbmRcbiAgICAgICAgICApXG4gICAgICBlbmRcbiAgICB8IF8sIChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHN0YXIsIG9yIGVtcGggLy8gY2FuJ3QgYmUgaHIgKilcbiAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG4gICAgfCBfLCAoU3RhcnMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHN0YXJzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKFtCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCldKSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgICgqIGJhY2tzbGFzaGVzICopXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE5ld2xpbmUgYXMgdCkgOjogdGwgLT4gKCogXFxcXG4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE5ld2xpbmVzIDAgOjogdGwgLT4gKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdIChOZXdsaW5lIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE5ld2xpbmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFxcblxcblxcblxcbi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQnIgOjogcikgW0JhY2tzbGFzaDsgTmV3bGluZV1cbiAgICAgICAgKE5ld2xpbmVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChCYWNrcXVvdGUgYXMgdCkgOjogdGwgLT4gKCogXFxgICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyAwIDo6IHRsIC0+ICgqIFxcYGBgYC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEJhY2txdW90ZV0gKEJhY2txdW90ZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBCYWNrcXVvdGVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdXG4gICAgICAgIChCYWNrcXVvdGVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIFxcKiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIDAgOjogdGwgLT4gKCogXFwqKioqLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIipcIikgOjogcikgW0JhY2tzbGFzaDsgU3Rhcl0gKFN0YXIgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogU3RhcnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFycyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoVW5kZXJzY29yZSBhcyB0KSA6OiB0bCAtPiAoKiBcXF8gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiX1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBVbmRlcnNjb3JlcyAwIDo6IHRsIC0+ICgqIFxcX19fLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW0JhY2tzbGFzaDsgVW5kZXJzY29yZV0gKFVuZGVyc2NvcmUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcX19fLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW0JhY2tzbGFzaDsgVW5kZXJzY29yZV1cbiAgICAgICAgKFVuZGVyc2NvcmVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2UgYXMgdCkgOjogdGwgLT4gKCogXFx7ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNlcyAwIDo6IHRsIC0+ICgqIFxce3t7Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNlXSAoT2JyYWNlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxce3t7Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNlXSAoT2JyYWNlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxcfSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFjZXMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFjZV0gKENicmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFjZV0gKENicmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIHQpIDo6IHRsIC0+ICgqIFxcWyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFja2V0cyAwIDo6IHRsIC0+ICgqIFxcW1tbLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNrZXRdIChPYnJhY2tldCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcW1tbLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNrZXRdIChPYnJhY2tldHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFja2V0IGFzIHQpIDo6IHRsIC0+ICgqIFxcfSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFja2V0cyAwIDo6IHRsIC0+ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNrZXRdIChDYnJhY2tldCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNrZXRdIChDYnJhY2tldHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyB0KSA6OiB0bCAtPiAoKiBcXCggKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPcGFyZW50aGVzaXNzIDAgOjogdGwgLT4gKCogXFwoKCguLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbQmFja3NsYXNoOyBPcGFyZW50aGVzaXNdIChPcGFyZW50aGVzaXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwoKCguLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbQmFja3NsYXNoOyBPcGFyZW50aGVzaXNdXG4gICAgICAgIChPcGFyZW50aGVzaXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwpICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKSkpLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW0JhY2tzbGFzaDsgQ3BhcmVudGhlc2lzXVxuICAgICAgICAoQ3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKSkpLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW0JhY2tzbGFzaDsgQ3BhcmVudGhlc2lzXVxuICAgICAgICAoQ3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoUGx1cyBhcyB0KSA6OiB0bCAtPiAoKiBcXCsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiK1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBQbHVzcyAwIDo6IHRsIC0+ICgqIFxcKysrLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW0JhY2tzbGFzaDsgUGx1c10gKFBsdXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKysrLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW0JhY2tzbGFzaDsgUGx1c10gKFBsdXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChNaW51cyBhcyB0KSA6OiB0bCAtPiAoKiBcXC0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBNaW51c3MgMCA6OiB0bCAtPiAoKiBcXC0tLS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE1pbnVzXSAoTWludXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXC0tLS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE1pbnVzXSAoTWludXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChEb3QgYXMgdCkgOjogdGwgLT4gKCogXFwuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyAwIDo6IHRsIC0+ICgqIFxcLi4uLi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFtCYWNrc2xhc2g7IERvdF0gKERvdCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBEb3RzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3RzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChFeGNsYW1hdGlvbiBhcyB0KSA6OiB0bCAtPiAoKiBcXCEgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBFeGNsYW1hdGlvbnMgMCA6OiB0bCAtPiAoKiBcXCEhIS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEV4Y2xhbWF0aW9uXSAoRXhjbGFtYXRpb24gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCEhIS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEV4Y2xhbWF0aW9uXVxuICAgICAgICAoRXhjbGFtYXRpb25zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChIYXNoIGFzIHQpIDo6IHRsIC0+ICgqIFxcIyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIjXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEhhc2hzIDAgOjogdGwgLT4gKCogXFwjIyMuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbQmFja3NsYXNoOyBIYXNoXSAoSGFzaCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwjIyMuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbQmFja3NsYXNoOyBIYXNoXSAoSGFzaHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFuIGFzIHQpIDo6IHRsIC0+ICgqIFxcPiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+ICgqIFxcPj4+Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW0JhY2tzbGFzaDsgR3JlYXRlcnRoYW5dIChHcmVhdGVydGhhbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcPj4+Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW0JhY2tzbGFzaDsgR3JlYXRlcnRoYW5dXG4gICAgICAgIChHcmVhdGVydGhhbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIHQpIDo6IHRsIC0+ICgqIFxcPCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IExlc3N0aGFucyAwIDo6IHRsIC0+ICgqIFxcPDw8Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW0JhY2tzbGFzaDsgTGVzc3RoYW5dIChMZXNzdGhhbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcPDw8Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW0JhY2tzbGFzaDsgTGVzc3RoYW5dXG4gICAgICAgIChMZXNzdGhhbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCAoQmFja3NsYXNocyAwIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxcXFxcLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIlxcXFxcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCAoQmFja3NsYXNocyBuIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxcXFxcLi4uICopXG4gICAgICBpZiBuIG1vZCAyID0gMCB0aGVuXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoU3RyaW5nLm1ha2UgKChuKzIpLzIpICdcXFxcJykgOjogcikgW3RdIHRsXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoU3RyaW5nLm1ha2UgKChuKzIpLzIpICdcXFxcJykgOjogcikgW3RdIChCYWNrc2xhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2g6OltdIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IFwiXFxcXFwiIDo6IHIpIFtdIFtdXG4gICAgfCBfLCBCYWNrc2xhc2g6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IFwiXFxcXFwiIDo6IHIpIFtCYWNrc2xhc2hdIHRsXG5cbiAgICAoKiA8ICopXG4gICAgfCBfLCAoTGVzc3RoYW58TGVzc3RoYW5zIF8gYXMgdClcbiAgICAgICAgIDo6IChXb3JkKFwiaHR0cFwifFwiaHR0cHNcInxcImZ0cFwifFwiZnRwc1wifFwic3NoXCJ8XCJhZnBcInxcImltYXBcIikgYXMgdylcbiAgICAgICAgIDo6IENvbG9uOjpTbGFzaHMobik6OnRsIC0+XG4gICAgICAoKiBcInNlbWktYXV0b21hdGljXCIgVVJMcyAqKVxuICAgICAgbGV0IHJlYyByZWFkX3VybCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6dGwgLT5cbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgR3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW4gdykgXiBcIjovL1wiXG4gICAgICAgICAgICBeIChpZiBuID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcubWFrZSAobi0xKSAnLycpXG4gICAgICAgICAgICBeIEwuc3RyaW5nX29mX3Rva2VucyAoTGlzdC5yZXYgYWNjdSlcbiAgICAgICAgICBpbiBTb21lKHVybCwgdGwpXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICByZWFkX3VybCAoeDo6YWNjdSkgdGxcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3VybCBbXSB0bCB3aXRoXG4gICAgICAgIHwgU29tZSh1cmwsIG5ld190bCkgLT5cbiAgICAgICAgICBsZXQgciA9IFxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IExlc3N0aGFucyAwIC0+IFRleHQgXCI8XCIgOjogclxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICc8JykgOjogclxuICAgICAgICAgICAgfCBfIC0+IHJcbiAgICAgICAgICBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFVybCh1cmwsW1RleHQgdXJsXSxcIlwiKTo6cikgW10gbmV3X3RsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cblxuICAgICgqIFdvcmQodykgKilcbiAgICB8IF8sIFdvcmQgdzo6dGwgLT5cbiAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IHcgOjogcikgW1dvcmQgd10gdGxcblxuICAgICgqIG5ld2xpbmUgYXQgdGhlIGVuZCAqKVxuICAgIHwgXywgW05ld2xpbmVdIC0+XG4gICAgICBOTDo6clxuXG4gICAgKCogbmFtZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChXb3JkIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKSBhcyB0bDIpIC0+XG4gICAgICBpZiBTdHJpbmdTZXQubWVtIHcgaHRtbGNvZGVzX3NldCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG4gICAgKCogZGlnaXQtY29kZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChIYXNoOjpOdW1iZXIgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIC0+XG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHcgPD0gNCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb246OnRsKVxuICAgICAgICAgIHwgU2VtaWNvbG9ucyBuIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG4gICAgKCogbWF5YmUgaGV4IGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6V29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgIGFzIHRsMikgd2hlbiBpc19oZXggdyAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuXG4gICAgKCogQW1wZXJzYW5kICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW0FtcGVyc2FuZF0gdGxcblxuICAgICgqIDIgQW1wZXJzYW5kcyAqKVxuICAgIHwgXywgQW1wZXJzYW5kcygwKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kOjp0bClcblxuICAgICgqIFNldmVyYWwgQW1wZXJzYW5kcyAobW9yZSB0aGFuIDIpICopXG4gICAgfCBfLCBBbXBlcnNhbmRzKG4pOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIChBbXBlcnNhbmRzKG4tMSk6OnRsKVxuXG4gICAgKCogYmFja3F1b3RlcyAqKVxuICAgIHwgXywgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBiY29kZSB+ZGVmYXVsdF9sYW5nIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBIVE1MICopXG4gICAgKCogPGJyLz4gYW5kIDxoci8+IHdpdGggb3Igd2l0aG91dCBzcGFjZShzKSAqKVxuICAgIHwgXywgKExlc3N0aGFuOjpXb3JkKFwiYnJcInxcImhyXCIgYXMgdyk6OlNsYXNoXG4gICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsKVxuICAgIHwgXywgKExlc3N0aGFuOjpXb3JkKFwiYnJcInxcImhyXCIgYXMgdyk6OihTcGFjZXxTcGFjZXMgXyk6OlNsYXNoXG4gICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZyB3aXRoXG4gICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl1cbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMobi0xKTo6dGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dIHRsXG4gICAgICBlbmRcblxuICAgICgqIGF3YWl0ZWQgb3JwaGFuIGh0bWwgY2xvc2luZyB0YWcgKilcbiAgICB8IF8sIExlc3N0aGFuOjpTbGFzaDo6V29yZCh3KTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bFxuICAgICAgd2hlbiAhbWVkaWF0eXBldGV4dG9tZCA8PiBbXSAtPlxuICAgICAgcmFpc2UgKE9ycGhhbl9jbG9zaW5nKHcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW46OnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSk6OnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0bCkpKVxuXG4gICAgKCogYmxvY2sgaHRtbCAqKVxuICAgIHwgKFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX3xUYWcoXCJIVE1MQkxPQ0tcIiwgXyldKSxcbiAgICAgIChMZXNzdGhhbiBhcyB0KVxuICAgICAgOjooKFdvcmQodGFnbmFtZXRvcCkgYXMgdylcbiAgICAgICAgIDo6KChTcGFjZXxTcGFjZXMgX3xHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXylcbiAgICAgICAgICAgIDo6XyBhcyBodG1sX3N0dWZmKSBhcyB0bHgpIC0+XG4gICAgICBpZiBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaW5saW5lX2h0bWx0YWdzX3NldCB0aGVuXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBbV29yZCBcIlwiXSBsZXhlbWVzXG4gICAgICBlbHNlIGlmIG5vdCAoYmxpbmRfaHRtbCB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaHRtbHRhZ3Nfc2V0KSB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bHhcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHJlYWRfaHRtbCgpID1cbiAgICAgICAgICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgQXdhaXRpbmcgb2Ygc3RyaW5nXG4gICAgICAgICAgICAgIHwgT3BlbiBvZiBzdHJpbmdcbiAgICAgICAgICAgIHR5cGUgaW50ZXJtID1cbiAgICAgICAgICAgICAgfCBIVE1MIG9mIHN0cmluZyAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogaW50ZXJtIGxpc3RcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgb2YgTC50XG4gICAgICAgICAgICAgIHwgTUQgb2YgT21kX3JlcHJlc2VudGF0aW9uLnRcbiAgICAgICAgICAgIGxldCByZWMgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsID1cbiAgICAgICAgICAgICAgbGV0IG1kX29mX2ludGVybV9saXN0ID8oaHRtbD1odG1sKSBsID1cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCBodG1sIGxcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIGxldCBmX2EgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGEgaW5cbiAgICAgICAgICAgICAgICAgIGlmIGZfYSAhPSBhIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LFxuICAgICAgICAgICAgICAgICAgICAgICBmX2EsXG4gICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFyYWdyYXBoc1xuICAgICAgICAgICAgICAgICAgICAgICAgIChtZF9vZl9pbnRlcm1fbGlzdCB+aHRtbDpmYWxzZSAoTGlzdC5yZXYgYykpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBIdG1sX2Jsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgKHQsIGZfYSwgbWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6dHJ1ZSAoTGlzdC5yZXYgYykpXG4gICAgICAgICAgICAgICAgICAgIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kQG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6RlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldl9hcHBlbmQgdDEgdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQxOjpSVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0XG4gICAgICAgICAgICAgICAgICAoRlRPS0VOUyhMaXN0LnJldl9hcHBlbmQgdDEgKExpc3QucmV2IHQyKSk6OnRsKVxuICAgICAgICAgICAgICB8IEZUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlModDFAdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBpZiBodG1sIHRoZW5cbiAgICAgICAgICAgICAgICAgIFJhdyhMLnN0cmluZ19vZl90b2tlbnMgdCkgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYWluX2xvb3Agfmh0bWwgW10gW1dvcmQgXCJcIl0gdFxuICAgICAgICAgICAgICAgICAgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdCA6OiB0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKExpc3QucmV2IHQpIDo6IHRsKVxuICAgICAgICAgICAgbGV0IG1kX29mX2ludGVybV9saXN0IGwgPSBtZF9vZl9pbnRlcm1fbGlzdCB0cnVlIGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7Qi9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7Qi9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgICAgIHwgVC5SVE9LRU5TIHIgOjogYm9keSAtPiBULlJUT0tFTlMoeDo6cik6OmJvZHlcbiAgICAgICAgICAgIHwgXyAtPiBULlJUT0tFTlNbeF0gOjogYm9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzMzMyBCSFRNTCBsb29wIGJvZHk9JVMgdGFnc3RhdHVzPSVTICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDAxIEJIVE1MIE5vdCBlbm91Z2ggdG8gcmVhZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDA4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpIDo6IHRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodGFnbmFtZSwgYXR0cnMsIFtdKV0gW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQxOSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgU2xhc2hcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5KSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIHRhZyBvcGVuZXIgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzNzUgQkhUTUwgcHJvcGVybHkgY2xvc2luZyAlU1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbiA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSkgOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSlcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzNzkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlJUT0tFTlNbZzt3O1NsYXNoO0xlc3N0aGFuXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzODMgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMlxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBpZiAhbWVkaWF0eXBldGV4dG9tZCA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgKE9ycGhhbl9jbG9zaW5nKHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW46OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhbnMobi0xKTo6dG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSkpXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBCSFRNTCB3cm9uZ2x5IGNsb3NpbmcgJVMgM1xcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OihXb3JkKHRhZ25hbWUpIGFzIHdvcmQpOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIGJsaW5kX2h0bWxcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ4OSBCSFRNTCA8V29yZCglcykuLi5cXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCkgOjogX1xuICAgICAgICAgICAgICAgICAgd2hlbiB0IDw+IHRhZ25hbWUgJiYgU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgYXR0cnMgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDk2IEJIVE1MIHRhZyAlUyBidXQgYXR0cnMgPD4gW11cXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQyMSBCSFRNTCB0YWcgJVMsIHRhZ3N0YXR1cz0lUywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzPVtdLCB0b2tlbnM9JVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWUgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQ4OSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQzMyBCSFRNTCB0YWdzdGF0dXM9JVMgdG9rZW5zPSVTXFxuJSFcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYkBib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGVuZCBvZiBvcGVuaW5nIHRhZyAqKVxuICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogdGFnc3RhdHVzIC0+XG4gICAgICAgICAgICAgICAgICBpZiBMaXN0Lm1lbSAoXCJtZWRpYTp0eXBlXCIsIFNvbWUgXCJ0ZXh0L29tZFwiKSBhdHRycyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICBtZWRpYXR5cGV0ZXh0b21kIDo9IHQgOjogIW1lZGlhdHlwZXRleHRvbWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUobWFpbl9pbXBsX3JldiB+aHRtbCBbXSBbXSB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzUyNCBCSFRNTCBjbG9zaW5nIHRhZyBub3QgZm91bmQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gJVNcXG4lIVwiIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2FyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNsb3NpbmcgdGFnIGAlcycgbm90IGZvdW5kIGZvciB0ZXh0L29tZCB6b25lLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSBMaXN0LnRsICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHdpdGggT3JwaGFuX2Nsb3NpbmcodGFnbmFtZSwgZGVsaW1pdGVyLCBhZnRlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiZWZvcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGYgciA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbnMgbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBkZWxpbWl0ZXIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExlc3N0aGFuOjpfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTGVzc3RoYW46OnRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFuOjpyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFucyhuLTEpOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAoZTo6cikgdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZTo6dGwgYXMgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbCA9PSBkZWxpbWl0ZXIgfHwgbCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgdGwgPT0gZGVsaW1pdGVyIHx8IHRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgKGU6OnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGYgW10gdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzU1MiBCSFRNTCB0b2tlbnM9JXMgZGVsaW1pdGVyPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyPSVzIGJlZm9yZT0lcyAodGFnbmFtZT10KT0lYlxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgZGVsaW1pdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGFmdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGJlZm9yZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWduYW1lID0gdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggIW1lZGlhdHlwZXRleHRvbWQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiB0bCAtPiBtZWRpYXR5cGV0ZXh0b21kIDo9IHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGFnbmFtZSA9IHQgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1QuSFRNTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1QuTURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5faW1wbCB+aHRtbCBbXSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnX3NldGV4dCBtYWluX2xvb3AgYmVmb3JlKSldKV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM1NzEgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzUxOSBCSFRNTCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZG4ndCBmaW5kIGFuIGNsb3NpbmcgdGFnIGZvciAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShib2R5LCBsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5OCBCSFRNTCBGb3VuZCBhIGNsb3NpbmcgdGFnICVzXFxuJSFcIiB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgW1QuSFRNTCh0LCBhdHRycywgYm9keSldIFtdIHRhZ3N0YXR1cyBsXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoW1QuSFRNTCh0LCBhdHRycywgYm9keSldLCBsKVxuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSAzNTkxIEJIVE1MIFNvbWUgYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSBHcmVhdGVydGhhbiBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzU0MiBCSFRNTCB0YWdzdGF0dXM9W11cXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgKCogbWF5YmUgYXR0cmlidXRlICopXG4gICAgICAgICAgICB8IChDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpOjp0b2tlbnNcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgICAgICA6OihDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpXG4gICAgICAgICAgICAgIDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEF0dHJpYnV0ZV92YWx1ZSA9IHN0cnVjdFxuICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gRW1wdHkgb2YgbmFtZSB8IE5hbWVkIG9mIG5hbWUgfCBWb2lkXG4gICAgICAgICAgICAgICAgICBhbmQgbmFtZSA9IHN0cmluZ1xuICAgICAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgICAgIGxldCBvcGVuIEF0dHJpYnV0ZV92YWx1ZSBpblxuICAgICAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyaWJ1dGUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSkgOjogdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IChHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXykgOjogXyBhcyB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgRXF1YWwgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIE5hbWVkKEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBDb2xvbiB8IENvbG9ucyBfIHwgVW5kZXJzY29yZSB8IFVuZGVyc2NvcmVzIF8gfCBXb3JkIF9cbiAgICAgICAgICAgICAgICAgIHwgTnVtYmVyIF8gfCBNaW51cyB8IE1pbnVzcyBfIHwgRG90IHwgRG90cyBfIGFzIHQgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfYXR0cmlidXRlICh0OjphY2N1KSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgdG9rZW5zIC0+IFZvaWQsIHRva2Vuc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggZXh0cmFjdF9hdHRyaWJ1dGUgW3RdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgfCBFbXB0eSBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICgqIGF0dHJpYnV0ZSB3aXRoIG5vIGV4cGxpY2l0IHZhbHVlICopXG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNjI4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgTm9uZSk6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBOYW1lZCBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjEgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY2OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNjU0IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5MCBCSFRNTCBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjk4IEJIVE1MIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2MjIgQkhUTUwgJXM9JVMgJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVm9pZCwgXyAtPiBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICB8IHg6OnRva2VucyBhcyBkZ3RzXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2MjAgQkhUTUwgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBkZ3RzKTtcbiAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzczNyBCSFRNTCBzcGFjZXNcXG4lIVwiO1xuICAgICAgICAgICAgICAgIGxvb3AgYm9keSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZXMgXyBhcyB4KSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzODI3IEJIVE1MIG5ld2xpbmVzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICB3YXJuIFwidGhlcmUgYXJlIGVtcHR5IGxpbmVzIGluIHdoYXQgbWF5IGJlIGFuIEhUTUwgYmxvY2tcIjtcbiAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzQyIEJIVE1MIGZhbGxiYWNrIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnM9JXMgYW5kIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFwiTm9uZVwiXG4gICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBcIkF3YWl0aW5nXCJcbiAgICAgICAgICAgICAgICAgICB8IFQuT3BlbiBfIDo6IF8gLT4gXCJPcGVuIChjYW4ndCBiZSlcIik7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gcmVhZCBhbiBvcGVuIEhUTUwgdGFnICglcyksIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgfCBULk9wZW4gdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIGZpbmQgdGhlIGNsb3NpbmcgSFRNTCB0YWcgZm9yICVzLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDA4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgIG1hdGNoIGxvb3AgW10gW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBTb21lKFQubWRfb2ZfaW50ZXJtX2xpc3QgaCwgcmVzdClcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCByZWFkX2h0bWwoKSB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChoQHIpIFtUYWcoXCJIVE1MQkxPQ0tcIiwgZW1wdHlfZXh0ZW5zaW9uKV0gcmVzdFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0IGluXG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KHRleHQgXiB0YWduYW1ldG9wKTo6cikgW3ddIGh0bWxfc3R1ZmZcbiAgICAgICAgZW5kXG4gICAgKCogLyBlbmQgb2YgYmxvY2sgSFRNTC4gKilcblxuXG4gICAgKCogaW5saW5lIEhUTUwgKilcbiAgICB8IF8sXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgKHN0cmljdF9odG1sICYmIG5vdChTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaW5saW5lX2h0bWx0YWdzX3NldCkpXG4gICAgICB8fCBub3QoYmxpbmRfaHRtbCB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaHRtbHRhZ3Nfc2V0KVxuICAgICAgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICAgICAgICB8IEhUTUwodCwgYSwgYyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgSHRtbCh0LCBhLCBtZF9vZl9pbnRlcm1fbGlzdChMaXN0LnJldiBjKSk6Om1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgTUQgbWQ6OnRsIC0+IG1kIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBUT0tFTlMgdDE6OlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtYWluX2ltcGwgfmh0bWwgW10gW1dvcmQgXCJcIl0gKHQpXG4gICAgICAgICAgICAgICAgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgbGV0IHN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzID1cbiAgICAgICAgICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgICAgICAgICAgIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgT3BlbiB0IC0+IGJwcmludGYgYiBcIntJL09wZW4gJXN9XCIgdFxuICAgICAgICAgICAgICAgICAgfCBBd2FpdGluZyB0IC0+IGJwcmludGYgYiBcIntJL0F3YWl0aW5nICVzfVwiIHRcbiAgICAgICAgICAgICAgICApIHRhZ3N0YXR1cztcbiAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICBsZXQgYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5ID1cbiAgICAgICAgICAgIFQuVE9LRU5TW3hdOjpib2R5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgKGJvZHk6VC5pbnRlcm0gbGlzdCkgYXR0cnMgdGFnc3RhdHVzIHRva2VucyA9XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKCogZXByaW50ZiBcIihPTUQpIDM3MTggbG9vcCB0YWdzdGF0dXM9KCVzKSBib2R5PSglcykgJXNcXG4lIVwiICopXG4gICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgKCogKE9tZF9iYWNrZW5kLnNleHByX29mX21kKFQubWRfb2ZfaW50ZXJtX2xpc3QgYm9keSkpICopXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KTo6XyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTm90IGVub3VnaCB0byByZWFkIGZvciBpbmxpbmUgSFRNTFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlbiBMZXNzdGhhbiBlbHNlIExlc3N0aGFucyhuLTEpKVxuICAgICAgICAgICAgICAgICAgICAgICBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgKExlc3N0aGFuOjp0b2tlbnMpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogc2VsZi1jbG9zaW5nIHRhZ3MgKilcbiAgICAgICAgICAgIHwgU2xhc2g6OkdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcodGFnbmFtZSk6OnRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodGFnbmFtZSwgYXR0cnMsIFtdKV0gW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbR3JlYXRlcnRoYW47U2xhc2hdOjpib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogbXVsdGlwbGUgbmV3bGluZXMgYXJlIG5vdCB0byBiZSBzZWVuIGluIGlubGluZSBIVE1MICopXG4gICAgICAgICAgICB8IE5ld2xpbmVzIF8gOjogXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBNdWx0aXBsZSBsaW5lcyBpbiBpbmxpbmUgSFRNTFxcbiUhXCI7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgXyAtPiB3YXJuIFwibXVsdGlwbGUgbmV3bGluZXMgaW4gaW5saW5lIEhUTUxcIjsgTm9uZSlcbiAgICAgICAgICAgICgqIG1heWJlIGNvZGUgKilcbiAgICAgICAgICAgIHwgKEJhY2txdW90ZSB8IEJhY2txdW90ZXMgXyBhcyBiKTo6dGwgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBubyBjb2RlXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBub25lXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IGxldCdzIHRyeVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBiY29kZSBbXSBbU3BhY2VdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSAoKChDb2RlIF86Ol8pIGFzIGMpLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybWVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULk1EIGM6OmJvZHkpIFtdIHRhZ3N0YXR1cyBsXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBmYWlsZWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2JdOjpib2R5KSBbXSB0YWdzdGF0dXMgdGxcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6U2xhc2g6OihXb3JkKHRhZ25hbWUpIGFzIHcpXG4gICAgICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gd2hlbiB0ID0gdGFnbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDEzNiBwcm9wZXJseSBjbG9zaW5nICVTIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbiA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSkgOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSlcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNDQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMVxcbiUhXCIgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbZzt3O1NsYXNoO0xlc3N0aGFuXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNDkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMlxcbiUhXCIgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNTQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nIG5vdGhpbmcgd2l0aCAlUyAzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgKHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBpbmxpbmVfaHRtbHRhZ3Nfc2V0KVxuICAgICAgICAgICAgICAgIHx8IChub3Qgc3RyaWN0X2h0bWwgJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgPCVzLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc5NiB0YWcgJXMsIGF0dHJzPVtdXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgW10gW10gKFQuQXdhaXRpbmcgdGFnbmFtZTo6dGFnc3RhdHVzKSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1t3b3JkO0xlc3N0aGFuXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShiLHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYkBib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGVuZCBvZiBvcGVuaW5nIHRhZyAqKVxuICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NSBlbmQgb2Ygb3BlbmluZyB0YWcgdG9rZW5zPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyk7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogdGFnc3RhdHVzIGFzIHRzIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBsb29wIGJvZHkgW10gKFQuT3BlbiB0Ojp0YWdzdGF0dXMpIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTg2IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZG4ndCBmaW5kIGFuIGNsb3NpbmcgdGFnIGZvciAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZShiLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIDQxOTIgRm91bmQgYSBjbG9zaW5nIHRhZyAlcyB0cz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIE5vdGU6IHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIHZhbHVlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cnNdIGhlcmUgYmVjYXVzZSBpbiB3ZSBoYXZlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWdzdGF0dXNdIG1hdGNoZXMgW1QuT3BlbiBfIDo6IF9dIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgZmlsdGVyIHRoYXQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSBjYXJlIG9mIGF0dHJzIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2ZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5IVE1MKHQsIGF0dHJzLCBiKTo6Ym9keSkgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIFR1cm5zIG91dCBhbiBgPmAgaXNuJ3QgZm9yIGFuIG9wZW5pbmcgdGFnXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuXTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQyMDIgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgTm9uZSk6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBOYW1lZCBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgbm9uIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDM5NTcpICVzPSVTICVzXFxuJSFcIiBhdHRyaWJ1dGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVm9pZCwgXyAtPiBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0JhY2tzbGFzaDt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjp4Ojp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAmJiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2hzKG4pO3hdOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG5cbiAgICAgICAgICAgIHwgeDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICg0MTYxKSBnZW5lcmFsICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zICh4Ojp0b2tlbnMpKTtcbiAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1t4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmUgfCBTcGFjZSB8IFNwYWNlcyBfKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAoNDI4OSkgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICg0Mjk0KSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrIHdpdGggdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluIG1hdGNoIGxvb3AgW10gW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBTb21lKGh0bWwsIHJlc3QpIC0+XG4gICAgICAgICAgICBTb21lKFQubWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCwgcmVzdClcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCByZWFkX2h0bWwoKSB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChoQHIpIFtHcmVhdGVydGhhbl0gcmVzdFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0IGluXG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KHRleHQgXiB0YWduYW1ldG9wKTo6cikgW3ddIGh0bWxfc3R1ZmZcbiAgICAgICAgZW5kXG4gICAgKCogLyBlbmQgb2YgaW5saW5lIEhUTUwuICopXG5cbiAgICAoKiA8IDogZW1haWxzICopXG4gICAgfCBfLCAoTGVzc3RoYW4gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9hdXRvZW1haWwgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBsaW5lIGJyZWFrcyAqKVxuICAgIHwgXywgTmV3bGluZTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKE5MOjpyKSBbTmV3bGluZV0gdGxcbiAgICB8IF8sIE5ld2xpbmVzIF86OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6Tkw6OnIpIFtOZXdsaW5lXSB0bFxuXG4gICAgKCogWyAqKVxuICAgIHwgXywgKE9icmFja2V0IGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfbGluayBtYWluX2xvb3AgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIG1hdGNoIG1heWJlX3JlZmVyZW5jZSBtYWluX2xvb3AgcmMgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBpbWcgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbnxFeGNsYW1hdGlvbnMgXyBhcyB0KVxuICAgICAgICAgOjpPYnJhY2tldDo6Q2JyYWNrZXQ6Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICgqIGltYWdlIGluc2VydGlvbiB3aXRoIG5vIFwiYWx0XCIgKilcbiAgICAgICgqICFbXSgvcGF0aC90by9pbWcuanBnKSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgbGV0IGIsIHRsID0gcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB+bm9fbmw6ZmFsc2UgdGwgaW5cbiAgICAgICAgICAgKCogbmV3IGxpbmVzIHRoZXJlIGFyZSBhbGxvd2VkICopXG4gICAgICAgICAgIGxldCByICgqIHVwZGF0ZWQgcmVzdWx0ICopID0gbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICB0cnkgU29tZShyZWFkX3VudGlsX3NwYWNlIH5icTpmYWxzZSB+bm9fbmw6dHJ1ZSBiKVxuICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBOb25lXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgfCBTb21lKHVybCwgdGxzKSAtPlxuICAgICAgICAgICAgIGxldCB0aXRsZSwgc2hvdWxkX2JlX2VtcHR5X2xpc3QgPVxuICAgICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSAoc25kIChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRscykpIGluXG4gICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoXCJcIiwgdXJsLCB0aXRsZSkgOjogcikgW0NwYXJlbnRoZXNpc10gdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyBiIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgXCJcIikgOjogcikgW0NwYXJlbnRoZXNpc10gdGxcbiAgICAgICAgIGVuZFxuICAgICAgIHdpdGhcbiAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBpbWcgcmVmICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb24gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICgqIHJlZiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW11bcmVmXSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IGlkLCB0bCA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgfm5vX25sOnRydWUgdGwgaW5cbiAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHRsIGxleGVtZXMgaW5cbiAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIFwiXCIsIGZhbGxiYWNrKSA6OiByKSBbQ2JyYWNrZXRdIHRsXG4gICAgICAgd2l0aCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG5cbiAgICAoKiBpbWcgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbnxFeGNsYW1hdGlvbnMgXyBhcyB0KTo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBcImFsdFwiICopXG4gICAgICAoKiAhW0FsdCB0ZXh0XSgvcGF0aC90by9pbWcuanBnIFwiT3B0aW9uYWwgdGl0bGVcIikgKilcbiAgICAgICh0cnlcbiAgICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgdGwgd2l0aFxuICAgICAgICAgfCBhbHQsIE9wYXJlbnRoZXNpczo6bnRsIC0+XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGhfdGl0bGUsIHJlc3QgPVxuICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIG50bCBpblxuICAgICAgICAgICAgICBsZXQgcGF0aCwgdGl0bGUgPVxuICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgcmVhZF91bnRpbF9zcGFjZSB+YnE6dHJ1ZSB+bm9fbmw6dHJ1ZSBwYXRoX3RpdGxlXG4gICAgICAgICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IHBhdGhfdGl0bGUsIFtdIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgbm90aGluZyA9XG4gICAgICAgICAgICAgICAgaWYgdGl0bGUgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSAoc25kKHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGl0bGUpKVxuICAgICAgICAgICAgICAgIGVsc2UgW10sIFtdIGluXG4gICAgICAgICAgICAgIGlmIG5vdGhpbmcgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvbjsgKCogY2F1Z2h0IHJpZ2h0IGJlbG93ICopXG4gICAgICAgICAgICAgIGxldCByID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyAwIC0+IFRleHQgXCIhXCIgOjogclxuICAgICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnIScpIDo6IHJcbiAgICAgICAgICAgICAgICB8IF8gLT4gciBpblxuICAgICAgICAgICAgICBsZXQgcGF0aCA9IEwuc3RyaW5nX29mX3Rva2VucyBwYXRoIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoYWx0LCBwYXRoLCB0aXRsZSkgOjogcikgW0NwYXJlbnRoZXNpc10gcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOTF9leGNlcHRpb25cbiAgICAgICAgICAgICgqIGlmIE5MX2V4Y2VwdGlvbiB3YXMgcmFpc2VkLCB0aGVuIGZhbGwgYmFjayB0byBcInRleHRcIiAqKVxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6V29yZChpZCk6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KFNwYWNlfFNwYWNlcyBfKTo6V29yZChpZCk6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KFNwYWNlfFNwYWNlcyBfKTo6V29yZChpZCk6OihTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgICA6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6V29yZChpZCk6OihTcGFjZXxTcGFjZXMgXyk6OkNicmFja2V0OjpudGwgLT5cbiAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgbnRsIGxleGVtZXMgaW5cbiAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKSBbQ2JyYWNrZXRdIG50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjooKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF98V29yZCBffE51bWJlciBfKTo6X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgbnRsKSAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgfm5vX25sOmZhbHNlIG50bCB3aXRoXG4gICAgICAgICAgICAgIHwgW10sIHJlc3QgLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgICAgICB8IGlkLCByZXN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVzdCBsZXhlbWVzIGluXG4gICAgICAgICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGlkIGluXG4gICAgICAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWdfcmVmKHJjLCBpZCwgYWx0LCBmYWxsYmFjayk6OnIpXG4gICAgICAgICAgICAgICAgICBbQ2JyYWNrZXRdXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgKVxuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgIGVuZFxuICAgICAgIHdpdGhcbiAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgfCBfLFxuICAgICAgKEF0fEJhcnxDYXJldHxDYnJhY2V8Q29sb258Q29tbWF8Q3BhcmVudGhlc2lzfENicmFja2V0fERvbGxhclxuICAgICAgfERvdHxEb3VibGVxdW90ZXxFeGNsYW1hdGlvbnxFcXVhbHxNaW51c3xPYnJhY2V8T3BhcmVudGhlc2lzXG4gICAgICB8UGVyY2VudHxQbHVzfFF1ZXN0aW9ufFF1b3RlfFNlbWljb2xvbnxTbGFzaHxUYWJ8VGlsZGVcbiAgICAgIHxHcmVhdGVydGhhbiBhcyB0KTo6dGxcbiAgICAgIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcbiAgICB8IF8sIChOdW1iZXIgXyAgYXMgdCk6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cbiAgICB8IF8sIChBdHMgXyB8IEJhcnMgXyB8IENhcmV0cyBfIHwgQ2JyYWNlcyBfIHwgQ2JyYWNrZXRzIF8gfCBDb2xvbnMgX1xuICAgICAgICAgfCBDb21tYXMgXyB8IENwYXJlbnRoZXNpc3MgXyB8IERvbGxhcnMgXyB8IERvdHMgXyB8IERvdWJsZXF1b3RlcyBfXG4gICAgICAgICB8IEVxdWFscyBfIHwgRXhjbGFtYXRpb25zIF8gfCBHcmVhdGVydGhhbnMgXyB8IExlc3N0aGFucyBfXG4gICAgICAgICB8IE1pbnVzcyBfIHwgT2JyYWNlcyBfIHwgT2JyYWNrZXRzIF8gfCBPcGFyZW50aGVzaXNzIF9cbiAgICAgICAgIHwgUGVyY2VudHMgXyB8IFBsdXNzIF8gfCBRdWVzdGlvbnMgXyB8IFF1b3RlcyBfIHwgU2VtaWNvbG9ucyBfXG4gICAgICAgICB8IFNsYXNocyBfIHwgU3RhcnMgXyB8IFRhYnMgXyB8IFRpbGRlcyBfIHwgVW5kZXJzY29yZXMgXyBhcyB0aylcbiAgICAgICAgIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgdGswLCB0a3MgPSBMLnNwbGl0X2ZpcnN0IHRrIGluXG4gICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0azAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IHRleHQgOjogcikgW3RrMF0gKHRrcyA6OiB0bClcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cblxuICBhbmQgbWFpbl9pbXBsIH5odG1sIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgKCogaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsIGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgTGlzdC5yZXYgKG1haW5fbG9vcF9yZXYgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzKVxuXG4gIGFuZCBtYWluX2xvb3AgPyhodG1sPWZhbHNlKSAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICAgbWFpbl9pbXBsIH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG4gIGFuZCBtYWluX2xvb3BfcmV2ID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzXG5cblxuICBsZXQgbWFpbl9wYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX2xvb3AgW10gW10gKHRhZ19zZXRleHQgbWFpbl9sb29wIGxleGVtZXMpXG5cbiAgbGV0IHBhcnNlIGxleGVtZXMgPVxuICAgIG1haW5fcGFyc2UgbGV4ZW1lc1xuXG5lbmRcblxubGV0IGRlZmF1bHRfcGFyc2UgPyhleHRlbnNpb25zPVtdKSA/KGRlZmF1bHRfbGFuZz1cIlwiKSBsZXhlbWVzID1cbiAgbGV0IGUgPSBleHRlbnNpb25zIGFuZCBkID0gZGVmYXVsdF9sYW5nIGluXG4gIGxldCBtb2R1bGUgRSA9IERlZmF1bHRfZW52KFVuaXQpIGluXG4gIGxldCBtb2R1bGUgTSA9XG4gICAgTWFrZShzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRVxuICAgICAgbGV0IGV4dGVuc2lvbnMgPSBlXG4gICAgICBsZXQgZGVmYXVsdF9sYW5nID0gZFxuICAgIGVuZClcbiAgaW5cbiAgTS5tYWluX3BhcnNlIGxleGVtZXNcblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogWW91IHNob3VsZCBlaXRoZXIgdXNlIHRoaXMgbW9kdWxlIG9yIE9tZF9sZXhlciwgbm90IGJvdGguXG4gICAgVGhpcyBtb2R1bGUgaW5jbHVkZXMgT21kX2xleGVyLlxuKilcblxuaW5jbHVkZSBPbWRfbGV4ZXJcblxubGV0IGxleF9mcm9tX2luY2hhbm5lbCBpYyA9XG4gICgqIE1haW50ZW5hbmNlLWVhc2luZXNzLWRyaXZlbiBpbXBsZW1lbnRhdGlvbi4gKilcbiAgbGV0IGljX2NvbnRlbnQgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgKGlucHV0X2NoYXIgaWMpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgbGV4IGljX2NvbnRlbnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIE9NRDogTWFya2Rvd24gdG9vbCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2U6ICBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBodG1sID0gaHRtbF9ub2RlIGxpc3RcblxuYW5kIGh0bWxfbm9kZSA9XG4gIHwgTm9kZSBvZiBub2RlbmFtZSAqIGF0dHJpYnV0ZXMgKiBodG1sXG4gIHwgRGF0YSBvZiBzdHJpbmdcbiAgfCBSYXdkYXRhIG9mIHN0cmluZ1xuICB8IENvbW1lbnQgb2Ygc3RyaW5nXG5cbmFuZCBub2RlbmFtZSA9IHN0cmluZ1xuXG5hbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmFuZCBhdHRyaWJ1dGUgPSBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG5cbmxldCB0b19zdHJpbmcgaHRtbCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCBwcCBmID0gUHJpbnRmLmJwcmludGYgYiBmIGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBOb2RlKG5vZGVuYW1lLCBhdHRyaWJ1dGVzLCBodG1sKSAtPlxuICAgICAgcHAgXCI8JXNcIiBub2RlbmFtZTtcbiAgICAgIHBwYSBhdHRyaWJ1dGVzO1xuICAgICAgcHAgXCI+XCI7XG4gICAgICBMaXN0Lml0ZXIgbG9vcCBodG1sO1xuICAgICAgcHAgXCI8LyVzPlwiIG5vZGVuYW1lXG4gICAgfCBEYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IFJhd2RhdGEgcyAtPiBwcCBcIiVzXCIgc1xuICAgIHwgQ29tbWVudCBjIC0+IHBwIFwiPCEtLSAlcyAtLT5cIiBjXG4gIGFuZCBwcGEgYXR0cnMgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgKGEsIFNvbWUgdikgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5jb250YWlucyB2ICdcXCcnKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz0nJXMnXCIgYSB2XG4gICAgICAgICAgZWxzZSBpZiBub3QgKFN0cmluZy5jb250YWlucyB2ICdcIicpIHRoZW5cbiAgICAgICAgICAgIHBwIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIHBwIFwiICVzPVxcXCJcIiBhO1xuICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB2IC0gMSBkb1xuICAgICAgICAgICAgICAgIG1hdGNoIHYuW2ldIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdcIicgLT4gcHAgXCImcXVvdDtcIlxuICAgICAgICAgICAgICAgIHwgYyAgICAtPiBwcCBcIiVjXCIgY1xuICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICBwcCBcIlxcXCJcIlxuICAgICAgICAgICAgKVxuICAgICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPScnXCIgYSAoKiBIVE1MNSAqKVxuICAgIClcbiAgICBhdHRyc1xuICBpblxuICBMaXN0Lml0ZXIgbG9vcCBodG1sO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuaW5jbHVkZSBPbWRfcmVwcmVzZW50YXRpb25cbmluY2x1ZGUgT21kX2JhY2tlbmRcblxubGV0IG9mX2lucHV0IGxleCA/ZXh0ZW5zaW9uczplID9kZWZhdWx0X2xhbmc6ZCBzID1cbiAgbGV0IG1vZHVsZSBFID0gT21kX3BhcnNlci5EZWZhdWx0X2VudihzdHJ1Y3QgZW5kKSBpblxuICBsZXQgbW9kdWxlIFBhcnNlciA9IE9tZF9wYXJzZXIuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRVxuICAgICAgbGV0IGV4dGVuc2lvbnMgPSBtYXRjaCBlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZXh0ZW5zaW9uc1xuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IG1hdGNoIGQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gRS5kZWZhdWx0X2xhbmdcbiAgICBlbmRcbiAgKSBpblxuICBsZXQgbWQgPVxuICAgIFBhcnNlci5wYXJzZSAobGV4IHMpXG4gIGluXG4gIFBhcnNlci5tYWtlX3BhcmFncmFwaHMgbWRcblxubGV0IG9mX3N0cmluZyA9IG9mX2lucHV0IE9tZF9sZXhlci5sZXhcbmxldCBvZl9iaWdhcnJheSA9IG9mX2lucHV0IE9tZF9sZXhlci5sZXhfYmlnYXJyYXlcblxubGV0IHRvX2h0bWwgOlxuICA/b3ZlcnJpZGU6KE9tZF9yZXByZXNlbnRhdGlvbi5lbGVtZW50IC0+IHN0cmluZyBvcHRpb24pIC0+XG4gID9waW5kZW50OmJvb2wgLT5cbiAgP25sMmJyOmJvb2wgLT5cbiAgP2NzOmNvZGVfc3R5bGlzdCAtPlxuICB0IC0+XG4gIHN0cmluZ1xuICA9XG4gIGh0bWxfb2ZfbWRcblxubGV0IHRvX3RleHQgOiB0IC0+IHN0cmluZyA9IHRleHRfb2ZfbWRcblxubGV0IHRvX21hcmtkb3duIDogdCAtPiBzdHJpbmcgPSBtYXJrZG93bl9vZl9tZFxuXG5sZXQgaHRtbF9vZl9zdHJpbmcgKGh0bWw6c3RyaW5nKSA6IHN0cmluZyA9XG4gIGh0bWxfb2ZfbWQgKE9tZF9wYXJzZXIuZGVmYXVsdF9wYXJzZSAoT21kX2xleGVyLmxleCBodG1sKSlcblxuXG5sZXQgcmVjIHNldF9kZWZhdWx0X2xhbmcgbGFuZyA9IGZ1bmN0aW9uXG4gIHwgQ29kZShcIlwiLCBjb2RlKSA6OiB0bCAtPiBDb2RlKGxhbmcsIGNvZGUpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IENvZGVfYmxvY2soXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZV9ibG9jayhsYW5nLCBjb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gICgqIFJlY3Vyc2Ugb24gYWxsIGVsZW1lbnRzIGV2ZW4gdGhvdWdoIGNvZGUgKGJsb2NrcykgYXJlIG5vdCBhbGxvd2VkXG4gICAgIGV2ZXJ5d2hlcmUuICopXG4gIHwgSDEgdCA6OiB0bCAtPiBIMShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDIgdCA6OiB0bCAtPiBIMihzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDMgdCA6OiB0bCAtPiBIMyhzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDQgdCA6OiB0bCAtPiBINChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDUgdCA6OiB0bCAtPiBINShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDYgdCA6OiB0bCAtPiBINihzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgUGFyYWdyYXBoIHQgOjogdGwgLT4gUGFyYWdyYXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgRW1waCB0IDo6IHRsIC0+IEVtcGgoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJvbGQgdCA6OiB0bCAtPiBCb2xkKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVbCB0IDo6IHRsIC0+IFVsKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IE9sIHQgOjogdGwgLT4gT2woTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWxwIHQgOjogdGwgLT4gVWxwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbHAgdCA6OiB0bCAtPiBPbHAoTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVybChocmVmLCB0LCB0aXRsZSkgOjogdGwgLT4gVXJsKGhyZWYsIHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0LCB0aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgQmxvY2txdW90ZSB0IDo6IHRsIC0+IEJsb2NrcXVvdGUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gICgqIEVsZW1lbnRzIHRoYXQgZG8gbm90IGNvbnRhaW4gTWFya2Rvd24uICopXG4gIHwgKFRleHQgX3xDb2RlIF98Q29kZV9ibG9jayBffEJyfEhyfE5MfFJlZiBffEltZ19yZWYgX3xSYXcgX3xSYXdfYmxvY2sgX1xuICAgIHxIdG1sIF98SHRtbF9ibG9jayBffEh0bWxfY29tbWVudCBffEltZyBffFggXykgYXMgZSA6OiB0bCAtPlxuICAgICBlIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFtdIC0+IFtdXG5cblxuKCogVGFibGUgb2YgY29udGVudHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogR2l2ZW4gYSBsaXN0IG9mIGhlYWRlcnMg4oCUIGluIHRoZSBvcmRlciBvZiB0aGUgZG9jdW1lbnQg4oCUIGdvIHRvIHRoZVxuICAgcmVxdWVzdGVkIHN1YnNlY3Rpb24uICBXZSBmaXJzdCBzZWVrIGZvciB0aGUgW251bWJlcl10aCBoZWFkZXIgYXRcbiAgIFtsZXZlbF0uICAqKVxubGV0IHJlYyBmaW5kX3N0YXJ0IGhlYWRlcnMgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCAoSDEgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAxIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEgyIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMiBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMyBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDMgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDQgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA0IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg1IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDYgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmFuZCBkZWFsX3dpdGhfaGVhZGVyIGhfbGV2ZWwgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnMgPVxuICBpZiBoX2xldmVsID4gbGV2ZWwgdGhlbiAoKiBTa2lwLCByaWdodCBbbGV2ZWxdLWhlYWRlciBub3QgeWV0IHJlYWNoZWQuICopXG4gICAgaWYgbnVtYmVyID0gMCB0aGVuXG4gICAgICAoKiBBc3N1bWUgZW1wdHkgc2VjdGlvbiBhdCBbbGV2ZWxdLCBkbyBub3QgY29uc3VtZSB0b2tlbi4gKilcbiAgICAgIChtYXRjaCBzdWJzZWN0aW9ucyB3aXRoXG4gICAgICAgfCBbXSAtPiBoZWFkZXJzICgqIG5vIHN1YnNlY3Rpb24gdG8gZmluZCAqKVxuICAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IGhlYWRlcnMgKGxldmVsICsgMSkgbiBzdWJzZWN0aW9ucylcbiAgICBlbHNlIGZpbmRfc3RhcnQgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIGVsc2UgaWYgaF9sZXZlbCA9IGxldmVsIHRoZW4gKFxuICAgICgqIEF0IHByb3BlciBbbGV2ZWxdLiAgSGF2ZSB3ZSByZWFjaGVkIHRoZSBbbnVtYmVyXSBvbmU/ICopXG4gICAgaWYgbnVtYmVyIDw9IDEgdGhlbiAoXG4gICAgICBtYXRjaCBzdWJzZWN0aW9ucyB3aXRoXG4gICAgICB8IFtdIC0+IHRsICgqIG5vIHN1YnNlY3Rpb24gdG8gZmluZCAqKVxuICAgICAgfCBuIDo6IHN1YnNlY3Rpb25zIC0+IGZpbmRfc3RhcnQgdGwgKGxldmVsICsgMSkgbiBzdWJzZWN0aW9uc1xuICAgIClcbiAgICBlbHNlIGZpbmRfc3RhcnQgdGwgbGV2ZWwgKG51bWJlciAtIDEpIHN1YnNlY3Rpb25zXG4gIClcbiAgZWxzZSAoKiBoX2xldmVsIDwgbGV2ZWwgKilcbiAgICBbXSAoKiBTb3VnaHQgW2xldmVsXSBoYXMgbm90IGJlZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc2VjdGlvbiAqKVxuXG4oKiBBc3N1bWUgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgaGVhZGVycyB3ZSBhcmUgaW50ZXJlc3RlZCBpbi5cbiAgIFJldHVybiB0aGUgbGlzdCBvZiBUT0MgZW50cmllcyBmb3IgW21pbl9sZXZlbF0gYW5kIHRoZSBbaGVhZGVyc11cbiAgIG5vdCB1c2VkIGZvciB0aGUgVE9DIGVudHJpZXMuICopXG5sZXQgcmVjIG1ha2VfdG9jIChoZWFkZXJzOihlbGVtZW50KnN0cmluZypzdHJpbmcpbGlzdCkgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgbWluX2xldmVsID4gbWF4X2xldmVsIHRoZW4gW10sIGhlYWRlcnNcbiAgZWxzZSAoXG4gICAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gICAgfCBbXSAtPiBbXSwgW11cbiAgICB8IChIMSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgyIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAyIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDMgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDMgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINCB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNCB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg1IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA1IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDYgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDYgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IF8gOjogXyAtPiBhc3NlcnQgZmFsc2VcbiAgKVxuYW5kIHRvY19lbnRyeSBoZWFkZXJzIGhfbGV2ZWwgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgPVxuICBpZiBoX2xldmVsID4gbWF4X2xldmVsIHRoZW4gKCogdG9vIGRlZXAsIHNraXAgKilcbiAgICBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgZWxzZSBpZiBoX2xldmVsIDwgbWluX2xldmVsIHRoZW5cbiAgICAoKiBzZWN0aW9uIHdlIHdhbnRlZCB0aGUgVE9DIGZvciBpcyBmaW5pc2hlZCwgZG8gbm90IGNvbXN1bWUgdGhlIHRva2VuICopXG4gICAgW10sIGhlYWRlcnNcbiAgZWxzZSBpZiBoX2xldmVsID0gbWluX2xldmVsIHRoZW4gKFxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWw6KG1pbl9sZXZlbCArIDEpIH5tYXhfbGV2ZWwgaW5cbiAgICBsZXQgdG9jX2VudHJ5ID0gbWF0Y2ggc3ViX3RvYyB3aXRoXG4gICAgICB8IFtdIC0+IFtVcmwoXCIjXCIgXiBpZCwgdCwgXCJcIik7IE5MXVxuICAgICAgfCBfIC0+IFtVcmwoXCIjXCIgXiBpZCwgdCwgXCJcIik7IE5MOyBVbCBzdWJfdG9jOyBOTF0gaW5cbiAgICBsZXQgdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbCBpblxuICAgIHRvY19lbnRyeSA6OiB0b2MsIHRsXG4gICkgZWxzZSAoKiBoX2xldmVsID4gbWluX2xldmVsICopXG4gICAgbGV0IHN1Yl90b2MsIHRsID0gbWFrZV90b2MgaGVhZGVycyB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICBbVWwgc3ViX3RvY10gOjogdG9jLCB0bFxuXG5sZXQgdG9jID8oc3RhcnQ9W10pID8oZGVwdGg9MikgbWQgPVxuICBpZiBkZXB0aCA8IDEgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZC50b2M6IH5kZXB0aCBtdXN0IGJlID49IDFcIjtcbiAgbGV0IGhlYWRlcnMgPSBPbWRfYmFja2VuZC5oZWFkZXJzX29mX21kIH5yZW1vdmVfaGVhZGVyX2xpbmtzOnRydWUgbWQgaW5cbiAgbGV0IGhlYWRlcnMgPSBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBbXSAtPiBoZWFkZXJzXG4gICAgfCBudW1iZXIgOjogc3Vic2VjdGlvbnMgLT5cbiAgICAgICBpZiBudW1iZXIgPCAwIHRoZW4gaW52YWxpZF9hcmcoXCJPbWQudG9jOiBsZXZlbCAxIHN0YXJ0IG11c3QgYmUgPj0gMFwiKTtcbiAgICAgICBmaW5kX3N0YXJ0IGhlYWRlcnMgMSBudW1iZXIgc3Vic2VjdGlvbnMgaW5cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHN0YXJ0IGluXG4gIGxldCB0b2MsIF8gPSBtYWtlX3RvYyBoZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICB+bWluX2xldmVsOihsZW4gKyAxKSB+bWF4X2xldmVsOihsZW4gKyBkZXB0aCkgaW5cbiAgbWF0Y2ggdG9jIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IF8gLT4gW1VsKHRvYyldXG5cbmxldCBhZGRfdG9jID9zdGFydCA/ZGVwdGggP3RpdGxlIG1kID1cbiAgbGV0IHRvYyA9IHRvYyA/c3RhcnQgP2RlcHRoIG1kIGluXG4gICgqIFJlcGxhY2UgXCIqVGFibGUgb2YgY29udGVudHMqXCIgd2l0aCB0aGUgYWN0dWFsIFRPQy4gKilcbiAgdG9jXG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxudHlwZSBrZXkgPSBzdHJpbmc7XG5cbm1vZHVsZSBSZXF1ZXN0ID0ge1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHZhbHVlID0gSGF6M2xjb3JlLkV4cC50O1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KChzdHJpbmcsIHZhbHVlKSk7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHByb2dyYW0gPT4gcHJvZ3JhbSB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgbGV0IGRlc2VyaWFsaXplID0gc2V4cCA9PiBzZXhwIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcblxubW9kdWxlIFJlc3BvbnNlID0ge1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHZhbHVlID1cbiAgICBSZXN1bHQudChcbiAgICAgIChIYXozbGNvcmUuRXZhbHVhdG9yLlJlc3VsdC50LCBIYXozbGNvcmUuRXZhbHVhdG9yU3RhdGUudCksXG4gICAgICBIYXozbGNvcmUuUHJvZ3JhbVJlc3VsdC5lcnJvcixcbiAgICApO1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KChzdHJpbmcsIHZhbHVlKSk7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHIgPT4gciB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgbGV0IGRlc2VyaWFsaXplID0gc2V4cCA9PiBzZXhwIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcblxubGV0IHdvcmsgPSAocmVzOiBSZXF1ZXN0LnZhbHVlKTogUmVzcG9uc2UudmFsdWUgPT5cbiAgc3dpdGNoIChcbiAgICBIYXozbGNvcmUuRXZhbHVhdG9yLmV2YWx1YXRlKEhhejNsY29yZS5CdWlsdGlucy5lbnZfaW5pdCwge2Q6IHJlc30pXG4gICkge1xuICB8IGV4Y2VwdGlvbiAoSGF6M2xjb3JlLkV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihyZWFzb24pKSA9PlxuICAgIHByaW50X2VuZGxpbmUoXG4gICAgICBcIkV2YWx1YXRvckVycm9yOlwiICsrIEhhejNsY29yZS5FdmFsdWF0b3JFcnJvci5zaG93KHJlYXNvbiksXG4gICAgKTtcbiAgICBFcnJvcihIYXozbGNvcmUuUHJvZ3JhbVJlc3VsdC5FdmF1bGF0b3JFcnJvcihyZWFzb24pKTtcbiAgfCBleGNlcHRpb24gZXhuID0+XG4gICAgcHJpbnRfZW5kbGluZShcIkVYTjpcIiArKyBQcmludGV4Yy50b19zdHJpbmcoZXhuKSk7XG4gICAgRXJyb3IoXG4gICAgICBIYXozbGNvcmUuUHJvZ3JhbVJlc3VsdC5Vbmtub3duRXhjZXB0aW9uKFByaW50ZXhjLnRvX3N0cmluZyhleG4pKSxcbiAgICApO1xuICB8IChzdGF0ZSwgcmVzdWx0KSA9PiBPaygocmVzdWx0LCBzdGF0ZSkpXG4gIH07XG5cbmxldCBvbl9yZXF1ZXN0ID0gKHJlcTogc3RyaW5nKTogdW5pdCA9PlxuICByZXFcbiAgfD4gUmVxdWVzdC5kZXNlcmlhbGl6ZVxuICB8PiBMaXN0Lm1hcCgoKGssIHYpKSA9PiAoaywgd29yayh2KSkpXG4gIHw+IFJlc3BvbnNlLnNlcmlhbGl6ZVxuICB8PiBKc19vZl9vY2FtbC5Xb3JrZXIucG9zdF9tZXNzYWdlO1xuXG5sZXQgc3RhcnQgPSAoKSA9PiBKc19vZl9vY2FtbC5Xb3JrZXIuc2V0X29ubWVzc2FnZShvbl9yZXF1ZXN0KTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIFdvcmtlclNlcnZlcjtcblxubGV0IG5hbWUgPSBcIndvcmtlci5qc1wiOyAvLyBXb3JrZXIgZmlsZSBuYW1lXG5sZXQgdGltZW91dER1cmF0aW9uID0gMjAwMDA7IC8vIFdvcmtlciB0aW1lb3V0IGluIG1zXG5cbmxldCBpbml0V29ya2VyID0gKCkgPT4gV29ya2VyLmNyZWF0ZShuYW1lKTtcblxubGV0IHdvcmtlclJlZjogcmVmKEpzLnQoV29ya2VyLndvcmtlcihzdHJpbmcsIHN0cmluZykpKSA9XG4gIHJlZihpbml0V29ya2VyKCkpO1xuXG5sZXQgdGltZW91dElkID0gcmVmKE5vbmUpO1xuXG5sZXQgcmVzdGFydF93b3JrZXIgPSAoKTogdW5pdCA9PiB7XG4gIHdvcmtlclJlZi5jb250ZW50cyMjdGVybWluYXRlO1xuICB3b3JrZXJSZWYuY29udGVudHMgPSBpbml0V29ya2VyKCk7XG59O1xuXG5sZXQgcmVxdWVzdCA9XG4gICAgKFxuICAgICAgcmVxOiBSZXF1ZXN0LnQsXG4gICAgICB+aGFuZGxlcjogUmVzcG9uc2UudCA9PiB1bml0LFxuICAgICAgfnRpbWVvdXQ6IFJlcXVlc3QudCA9PiB1bml0LFxuICAgIClcbiAgICA6IHVuaXQgPT4ge1xuICBsZXQgc2V0dXBXb3JrZXJNZXNzYWdlSGFuZGxlciA9IHdvcmtlciA9PiB7XG4gICAgd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICBEb20uaGFuZGxlcihldnQgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRpbWVvdXRJZC5jb250ZW50cykge1xuICAgICAgICB8IFNvbWUoaWQpID0+IERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0KGlkKVxuICAgICAgICB8IE5vbmUgPT4gKClcbiAgICAgICAgfTtcbiAgICAgICAgdGltZW91dElkLmNvbnRlbnRzID0gTm9uZTsgLyogQ2xlYXIgdGltZW91dCBhZnRlciByZXNwb25zZSAqL1xuICAgICAgICBldnQjIy5kYXRhIHw+IFJlc3BvbnNlLmRlc2VyaWFsaXplIHw+IGhhbmRsZXI7XG4gICAgICAgIEpzLl90cnVlO1xuICAgICAgfSk7XG4gIH07XG5cbiAgLyogSWYgdGhlcmUncyBhbiBvbmdvaW5nIHJlcXVlc3QsIHRlcm1pbmF0ZSB0aGUgd29ya2VyIGFuZCByZWluaXRpYWxpemUgKi9cbiAgc3dpdGNoICh0aW1lb3V0SWQuY29udGVudHMpIHtcbiAgfCBTb21lKGlkKSA9PlxuICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0KGlkKTtcbiAgICByZXN0YXJ0X3dvcmtlcigpO1xuICB8IE5vbmUgPT4gKClcbiAgfTtcblxuICBzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyKHdvcmtlclJlZi5jb250ZW50cyk7XG5cbiAgLy8gcHJpbnRfZW5kbGluZShSZXF1ZXN0LnNlcmlhbGl6ZShyZXEpKTtcblxuICB3b3JrZXJSZWYuY29udGVudHMjI3Bvc3RNZXNzYWdlKFJlcXVlc3Quc2VyaWFsaXplKHJlcSkpO1xuXG4gIGxldCBvblRpbWVvdXQgPSAoKTogdW5pdCA9PiB7XG4gICAgcmVzdGFydF93b3JrZXIoKTtcbiAgICBzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyKHdvcmtlclJlZi5jb250ZW50cyk7XG4gICAgdGltZW91dChyZXEpO1xuICB9O1xuXG4gIHRpbWVvdXRJZC5jb250ZW50cyA9XG4gICAgU29tZShcbiAgICAgIERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dChcbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayhvblRpbWVvdXQpLFxuICAgICAgICBmbG9hdF9vZl9pbnQodGltZW91dER1cmF0aW9uKSxcbiAgICAgICksXG4gICAgKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xuXG5sZXQgYnV0dG9uID0gKH50b29sdGlwPVwiXCIsIGljb24sIGFjdGlvbikgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJpY29uXCJdKSxcbiAgICAgICAgQXR0ci5vbl9tb3VzZWRvd24oYWN0aW9uKSxcbiAgICAgICAgQXR0ci50aXRsZSh0b29sdGlwKSxcbiAgICAgIF0pLFxuICAgIFtpY29uXSxcbiAgKTtcblxubGV0IGJ1dHRvbl9uYW1lZCA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3Rpb24pID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1wibmFtZWQtbWVudS1pdGVtXCJdKSwgQXR0ci5vbl9jbGljayhhY3Rpb24pXSksXG4gICAgW2J1dHRvbihpY29uLCBfID0+IEVmZmVjdC5JZ25vcmUpLCBkaXYoW3RleHQodG9vbHRpcCldKV0sXG4gICk7XG5cbmxldCBidXR0b25fZCA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3Rpb24sIH5kaXNhYmxlZDogYm9vbCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJpY29uXCJdIEAgKGRpc2FibGVkID8gW1wiZGlzYWJsZWRcIl0gOiBbXSkpLFxuICAgICAgICBBdHRyLnRpdGxlKHRvb2x0aXApLFxuICAgICAgICBBdHRyLm9uX21vdXNlZG93bihfID0+IHVubGVzcyhkaXNhYmxlZCwgYWN0aW9uKSksXG4gICAgICBdKSxcbiAgICBbaWNvbl0sXG4gICk7XG5cbmxldCBsaW5rID0gKH50b29sdGlwPVwiXCIsIGljb24sIHVybCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiaWNvblwiXSksXG4gICAgW1xuICAgICAgYShcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFxuICAgICAgICAgICAgQXR0ci5baHJlZih1cmwpLCB0aXRsZSh0b29sdGlwKSwgY3JlYXRlKFwidGFyZ2V0XCIsIFwiX2JsYW5rXCIpXSxcbiAgICAgICAgICApLFxuICAgICAgICBbaWNvbl0sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG5cbmxldCB0b2dnbGUgPSAofnRvb2x0aXA9XCJcIiwgbGFiZWwsIGFjdGl2ZSwgYWN0aW9uKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbHNzKFtcInRvZ2dsZS1zd2l0Y2hcIl0gQCAoYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgQXR0ci5vbl9jbGljayhhY3Rpb24pLFxuICAgICAgICBBdHRyLnRpdGxlKHRvb2x0aXApLFxuICAgICAgXSksXG4gICAgW2Rpdih+YXR0cj1jbHNzKFtcInRvZ2dsZS1rbm9iXCJdKSwgW3RleHQobGFiZWwpXSldLFxuICApO1xuXG5sZXQgdG9nZ2xlX25hbWVkID0gKH50b29sdGlwPVwiXCIsIGljb24sIGFjdGl2ZSwgYWN0aW9uKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbHNzKFtcIm5hbWVkLW1lbnUtaXRlbVwiXSBAIChhY3RpdmUgPyBbXCJhY3RpdmVcIl0gOiBbXSkpLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKGFjdGlvbiksXG4gICAgICBdKSxcbiAgICBbdG9nZ2xlKGljb24sIGFjdGl2ZSwgXyA9PiBFZmZlY3QuSWdub3JlKSwgZGl2KFt0ZXh0KHRvb2x0aXApXSldLFxuICApO1xuXG5sZXQgZmlsZV9zZWxlY3RfYnV0dG9uID0gKH50b29sdGlwPVwiXCIsIGlkLCBpY29uLCBvbl9pbnB1dCkgPT4ge1xuICAvKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81NzI3Njgvc3R5bGluZy1hbi1pbnB1dC10eXBlLWZpbGUtYnV0dG9uICovXG4gIGxhYmVsKFxuICAgIH5hdHRyPUF0dHIuZm9yXyhpZCksXG4gICAgW1xuICAgICAgVmRvbV9pbnB1dF93aWRnZXRzLkZpbGVfc2VsZWN0LnNpbmdsZShcbiAgICAgICAgfmV4dHJhX2F0dHJzPVtBdHRyLmNsYXNzXyhcImZpbGUtc2VsZWN0LWJ1dHRvblwiKSwgQXR0ci5pZChpZCldLFxuICAgICAgICB+YWNjZXB0PVtgRXh0ZW5zaW9uKFwianNvblwiKV0sXG4gICAgICAgIH5vbl9pbnB1dCxcbiAgICAgICAgKCksXG4gICAgICApLFxuICAgICAgZGl2KH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJpY29uXCJdKSwgQXR0ci50aXRsZSh0b29sdGlwKV0pLCBbaWNvbl0pLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgZmlsZV9zZWxlY3RfYnV0dG9uX25hbWVkID0gKH50b29sdGlwPVwiXCIsIGlkLCBpY29uLCBvbl9pbnB1dCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJuYW1lZC1tZW51LWl0ZW1cIl0pXSksXG4gICAgW2ZpbGVfc2VsZWN0X2J1dHRvbihpZCwgaWNvbiwgb25faW5wdXQpLCBkaXYoW3RleHQodG9vbHRpcCldKV0sXG4gICk7XG4iLCIvLyBjb3BpZWQgZnJvbSBoYXplbFxuXG5tb2R1bGUgSnMgPSBKc19vZl9vY2FtbC5KcztcblxubW9kdWxlIEpTX01BUCA9IHtcbiAgY2xhc3MgdHlwZSB0ICgnaywgJ3YpID0ge1xuICAgIHB1YiBnZXQ6ICdrID0+IEpzLm1ldGgoSnMub3B0ZGVmKCd2KSk7XG4gICAgcHViIGhhczogJ2sgPT4gSnMubWV0aChib29sKTtcbiAgICBwdWIgc2V0OiAoJ2ssICd2KSA9PiBKcy5tZXRoKHQoJ2ssICd2KSk7XG4gIH07XG59O1xuXG5tb2R1bGUgSnNNYXAgPSB7XG4gIHR5cGUgdCgnaywgJ3YpID0gSnMudChKU19NQVAudCgnaywgJ3YpKTtcblxuICBsZXQgbWs6ICdrICd2LiB1bml0ID0+IHQoJ2ssICd2KSA9XG4gICAgKCkgPT4ge1xuICAgICAgbGV0IGMgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX01hcDtcbiAgICAgIFslanMgbmV3IGNdO1xuICAgIH07XG59O1xuXG5tb2R1bGUgSnNXZWFrTWFwID0ge1xuICB0eXBlIHQoJ2ssICd2KSA9IEpzLnQoSlNfTUFQLnQoJ2ssICd2KSk7XG5cbiAgbGV0IG1rOiAnayAndi4gdW5pdCA9PiB0KCdrLCAndikgPVxuICAgICgpID0+IHtcbiAgICAgIGxldCBjID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWFrTWFwO1xuICAgICAgWyVqcyBuZXcgY107XG4gICAgfTtcbn07XG5cbmxldCBpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW1wbDogSnMuVW5zYWZlLnRvcCA9PiBKcy50KGJvb2wpID1cbiAgLy8gQmFzZWQgb24gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODUxMTI4MS9jaGVjay1pZi1hLXZhbHVlLWlzLWFuLW9iamVjdC1pbi1qYXZhc2NyaXB0XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIoXG4gICAgXCJcbiAgZnVuY3Rpb24gKHZhbCkge1xuICAgIHJldHVybiAodmFsID09PSBudWxsKSB8fCAodHlwZW9mIHZhbCAhPT0gJ2Z1bmN0aW9uJykgJiYgKHR5cGVvZiB2YWwgIT09ICdvYmplY3QnKTtcbiAgfVwiLFxuICApO1xuXG5sZXQgaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uOiAnYS4gJ2EgPT4gYm9vbCA9XG4gIHggPT4gSnMudG9fYm9vbChpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW1wbChPYmoubWFnaWMoeCkpKTtcblxudHlwZSB0KCdrLCAndikgPSB7XG4gIHByaW1pdGl2ZV9rZXlzOiBKc01hcC50KCdrLCAndiksXG4gIG5vbl9wcmltaXRpdmVfa2V5czogSnNXZWFrTWFwLnQoJ2ssICd2KSxcbn07XG5cbmxldCBtayA9ICgpOiB0KCdrLCAndikgPT4ge1xuICB7cHJpbWl0aXZlX2tleXM6IEpzTWFwLm1rKCksIG5vbl9wcmltaXRpdmVfa2V5czogSnNXZWFrTWFwLm1rKCl9O1xufTtcblxubGV0IGdldCA9ICh0OiB0KCdrLCAndiksIGs6ICdrKTogb3B0aW9uKCd2KSA9PiB7XG4gIGxldCBtYXAgPVxuICAgIGlmIChpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb24oaykpIHtcbiAgICAgIHQucHJpbWl0aXZlX2tleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQubm9uX3ByaW1pdGl2ZV9rZXlzO1xuICAgIH07XG4gIEpzLk9wdGRlZi50b19vcHRpb24obWFwIyNnZXQoaykpO1xufTtcblxubGV0IHNldCA9ICh0OiB0KCdrLCAndiksIGs6ICdrLCB2OiAndik6IHVuaXQgPT4ge1xuICBsZXQgbWFwID1cbiAgICBpZiAoaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uKGspKSB7XG4gICAgICB0LnByaW1pdGl2ZV9rZXlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0Lm5vbl9wcmltaXRpdmVfa2V5cztcbiAgICB9O1xuICBpZ25vcmUobWFwIyNzZXQoaywgdikpO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgbWtfc2Vjb25kYXJ5OiBzdHJpbmcgPT4gUGllY2UudCA9XG4gIGNvbnRlbnQgPT4gU2Vjb25kYXJ5KHtpZDogSWQubWsoKSwgY29udGVudDogV2hpdGVzcGFjZShjb250ZW50KX0pO1xuXG5sZXQgbWtfdGlsZTogKEZvcm0udCwgbGlzdChsaXN0KFBpZWNlLnQpKSkgPT4gUGllY2UudCA9XG4gIC8vVE9ETzogYXNzZXJ0c1xuICAoZm9ybSwgY2hpbGRyZW4pID0+XG4gICAgVGlsZSh7XG4gICAgICBpZDogSWQubWsoKSxcbiAgICAgIGxhYmVsOiBmb3JtLmxhYmVsLFxuICAgICAgbW9sZDogZm9ybS5tb2xkLFxuICAgICAgc2hhcmRzOiBMaXN0Lm1hcGkoKGksIF8pID0+IGksIGZvcm0ubGFiZWwpLFxuICAgICAgY2hpbGRyZW4sXG4gICAgfSk7XG5cbmxldCBta19hbmNlc3RvcjogKEZvcm0udCwgKGxpc3QoU2VnbWVudC50KSwgbGlzdChTZWdtZW50LnQpKSkgPT4gQW5jZXN0b3IudCA9XG4gIC8vVE9ETzogYXNzZXJ0c1xuICAoZm9ybSwgKGwsIF8pIGFzIGNoaWxkcmVuKSA9PiB7XG4gICAgaWQ6IElkLm1rKCksXG4gICAgbGFiZWw6IGZvcm0ubGFiZWwsXG4gICAgbW9sZDogZm9ybS5tb2xkLFxuICAgIHNoYXJkczpcbiAgICAgIExpc3QubWFwaSgoaSwgXykgPT4gaSwgZm9ybS5sYWJlbClcbiAgICAgIHw+IFV0aWwuTGlzdFV0aWwuc3BsaXRfbihMaXN0Lmxlbmd0aChsKSArIDEpLFxuICAgIGNoaWxkcmVuLFxuICB9O1xuXG5sZXQgbWtfbW9ub3RpbGUgPSBmb3JtID0+IG1rX3RpbGUoZm9ybSwgW10pOyAvL1RPRE86IGFzc2VydHNcbmxldCBpbnQgPSBuID0+IG1rX21vbm90aWxlKEZvcm0ubWtfYXRvbWljKEV4cCwgbikpO1xubGV0IGV4cCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5ta19hdG9taWMoRXhwLCB2KSk7XG5sZXQgcGF0ID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rX2F0b21pYyhQYXQsIHYpKTtcbmxldCBta19wYXJlbnNfZXhwID0gbWtfdGlsZShGb3JtLmdldChcInBhcmVuc19leHBcIikpO1xubGV0IG1rX2Z1biA9IG1rX3RpbGUoRm9ybS5nZXQoXCJmdW5fXCIpKTtcbmxldCBta19mdW5fYW5jZXN0b3IgPSBta19hbmNlc3RvcihGb3JtLmdldChcImZ1bl9cIikpO1xubGV0IG1rX3BhcmVuc19hbmNlc3RvciA9IG1rX2FuY2VzdG9yKEZvcm0uZ2V0KFwicGFyZW5zX2V4cFwiKSk7XG5sZXQgbWtfbGV0X2FuY2VzdG9yID0gbWtfYW5jZXN0b3IoRm9ybS5nZXQoXCJsZXRfXCIpKTtcbmxldCBwbHVzID0gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJwbHVzXCIpKTtcblxubGV0IGxfc2libGluZzogU2VnbWVudC50ID0gW3BsdXMsIEdyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXTtcbmxldCByX3NpYmxpbmc6IFNlZ21lbnQudCA9IFtta19wYXJlbnNfZXhwKFtbaW50KFwiMVwiKSwgcGx1cywgaW50KFwiMlwiKV1dKV07XG5cbmxldCBjb250ZW50OiBTZWdtZW50LnQgPSBbZXhwKFwiZm9vXCIpLCBHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb25jYXZlfSldO1xuXG5sZXQgYW5jZXN0b3JzOiBBbmNlc3RvcnMudCA9IFtcbiAgKG1rX3BhcmVuc19hbmNlc3RvcigoW10sIFtdKSksIChbbWtfZnVuKFtbcGF0KFwiYmFyXCIpXV0pXSwgW10pKSxcbiAgKG1rX3BhcmVuc19hbmNlc3RvcigoW10sIFtdKSksIChbbWtfZnVuKFtbcGF0KFwidGF6XCIpXV0pXSwgW10pKSxcbiAgKG1rX2xldF9hbmNlc3RvcigoW1twYXQoXCJmb29cIildXSwgW10pKSwgKFtdLCBbaW50KFwiMlwiKV0pKSxcbl07XG5cbmxldCBiYWNrcGFjazogQmFja3BhY2sudCA9IFtTZWxlY3Rpb24ubWsoW2V4cChcImZvb1wiKV0pXTtcblxubGV0IHppcHBlcjogWmlwcGVyLnQgPSB7XG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uLm1rKGNvbnRlbnQpLFxuICBiYWNrcGFjayxcbiAgcmVsYXRpdmVzOiB7XG4gICAgc2libGluZ3M6IChsX3NpYmxpbmcsIHJfc2libGluZyksXG4gICAgYW5jZXN0b3JzLFxuICB9LFxuICBjYXJldDogT3V0ZXIsXG59O1xuXG4vLyBUT0RPIE1ha2Ugc3VyZSB1c2luZyB0aGlzIGZvciBhbGwgdGhlIGZvcm1zIHRoYXQgc2hvdWxkLCBsaWtlIHdpbGQgYW5kIG5pbFxuLy8gVE9ETyBTaG91bGQgdGhpcyBoYXZlIGl0cyBvd24gSUQgZ2VuZXJhdG9yIG9yIGlzIHVzaW5nIHRoZSBFeGFtcGxlIG9uZSBmaW5lP1xubGV0IGNvbnNfZXhwID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb25zX2V4cFwiKSk7XG5sZXQgbGlzdF9jb25jYXRfZXhwID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsaXN0X2NvbmNhdFwiKSk7XG5sZXQgY29uc19wYXQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNvbnNfcGF0XCIpKTtcbmxldCBzZXEgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNlbGwtam9pblwiKSk7XG5sZXQgZXhwID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt2XSwgTW9sZC4obWtfb3AoRXhwLCBbXSkpKSk7XG5sZXQgcGF0ID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt2XSwgTW9sZC4obWtfb3AoUGF0LCBbXSkpKSk7XG5sZXQgdHlwID0gdCA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt0XSwgTW9sZC4obWtfb3AoVHlwLCBbXSkpKSk7XG5sZXQgdHBhdCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5tayhGb3JtLnNzLCBbdl0sIE1vbGQuKG1rX29wKFRQYXQsIFtdKSkpKTtcbmxldCB0eXBfcGF0X3ZhciA9IHQgPT4gbWtfbW9ub3RpbGUoRm9ybS5ta19hdG9taWMoVFBhdCwgdCkpO1xubGV0IG1rX3BhcmVuc19leHAgPSBta190aWxlKEZvcm0uZ2V0KFwicGFyZW5zX2V4cFwiKSk7XG5sZXQgbWtfcGFyZW5zX3BhdCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJwYXJlbnNfcGF0XCIpKTtcbmxldCBta19wYXJlbnNfdHlwID0gbWtfdGlsZShGb3JtLmdldChcInBhcmVuc190eXBcIikpO1xubGV0IG1rX2xpc3RfZXhwID0gbWtfdGlsZShGb3JtLmdldChcImxpc3RfbGl0X2V4cFwiKSk7XG5sZXQgbWtfbGlzdF9wYXQgPSBta190aWxlKEZvcm0uZ2V0KFwibGlzdF9saXRfcGF0XCIpKTtcbmxldCBta19saXN0X3R5cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJsaXN0X3R5cFwiKSk7XG5sZXQgbWtfZm9yYWxsID0gbWtfdGlsZShGb3JtLmdldChcImZvcmFsbFwiKSk7XG5sZXQgbWtfcmVjID0gbWtfdGlsZShGb3JtLmdldChcInJlY1wiKSk7XG5sZXQgYXJyb3cgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInR5cGUtYXJyb3dcIikpO1xubGV0IHVuYXJ5X21pbnVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ1bmFyeV9taW51c1wiKSk7XG5sZXQgdW5hcnlfbm90ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJub3RcIikpO1xubGV0IHBsdXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInBsdXNcIikpO1xubGV0IG1pbnVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJtaW51c1wiKSk7XG5sZXQgdGltZXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInRpbWVzXCIpKTtcbmxldCBwb3dlciA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwicG93ZXJcIikpO1xubGV0IGRpdmlkZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZGl2aWRlXCIpKTtcbmxldCBlcXVhbHMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImVxdWFsc1wiKSk7XG5sZXQgbm90X2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibm90X2VxdWFsc1wiKSk7XG5sZXQgbHQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImx0XCIpKTtcbmxldCBsdGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImx0ZVwiKSk7XG5sZXQgZ3QgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImd0XCIpKTtcbmxldCBndGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImd0ZVwiKSk7XG5sZXQgZnBsdXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZwbHVzXCIpKTtcbmxldCBmbWludXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZtaW51c1wiKSk7XG5sZXQgZnRpbWVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmdGltZXNcIikpO1xubGV0IGZwb3dlciA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZnBvd2VyXCIpKTtcbmxldCBmZGl2aWRlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmZGl2aWRlXCIpKTtcbmxldCBmZXF1YWxzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmZXF1YWxzXCIpKTtcbmxldCBmbm90X2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZm5vdF9lcXVhbHNcIikpO1xubGV0IGZsdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmx0XCIpKTtcbmxldCBmbHRlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmbHRlXCIpKTtcbmxldCBmZ3QgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZndFwiKSk7XG5sZXQgZmd0ZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmd0ZVwiKSk7XG5sZXQgc2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwic3RyaW5nX2VxdWFsc1wiKSk7XG5sZXQgc2NvbmNhdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwic3RyaW5nX2NvbmNhdFwiKSk7XG5sZXQgbG9naWNhbF9hbmQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImxvZ2ljYWxfYW5kXCIpKTtcbmxldCBsb2dpY2FsX29yID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsb2dpY2FsX29yXCIpKTtcbmxldCBjb21tYV9leHAgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNvbW1hX2V4cFwiKSk7XG5sZXQgY29tbWFfcGF0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb21tYV9wYXRcIikpO1xubGV0IGNvbW1hX3R5cCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiY29tbWFfdHlwXCIpKTtcbmxldCBwaXBlbGluZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwicGlwZWxpbmVcIikpO1xubGV0IG5pbCA9ICgpID0+IGV4cChcIltdXCIpO1xubGV0IGRlZmVycmFsID0gKCkgPT4gZXhwKFwiX1wiKTtcbmxldCB0eXBlYW5uID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ0eXBlYW5uXCIpKTtcbmxldCBta190eXBmdW4gPSBta190aWxlKEZvcm0uZ2V0KFwidHlwZnVuXCIpKTtcbmxldCBta19mdW4gPSBta190aWxlKEZvcm0uZ2V0KFwiZnVuX1wiKSk7XG5sZXQgbWtfYXBfZXhwX3R5cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJhcF9leHBfdHlwXCIpKTtcbmxldCBta19maXggPSBta190aWxlKEZvcm0uZ2V0KFwiZml4XCIpKTtcbmxldCBta19hcF9leHAgPSBta190aWxlKEZvcm0uZ2V0KFwiYXBfZXhwXCIpKTtcbmxldCBta19hcF9wYXQgPSBta190aWxlKEZvcm0uZ2V0KFwiYXBfcGF0XCIpKTtcbmxldCBta19sZXQgPSBta190aWxlKEZvcm0uZ2V0KFwibGV0X1wiKSk7XG5sZXQgbWtfdHlhbGlhcyA9IG1rX3RpbGUoRm9ybS5nZXQoXCJ0eXBlX2FsaWFzXCIpKTtcbmxldCBta19pZiA9IG1rX3RpbGUoRm9ybS5nZXQoXCJpZl9cIikpO1xubGV0IG1rX3Rlc3QgPSBta190aWxlKEZvcm0uZ2V0KFwidGVzdFwiKSk7XG5sZXQgbWtfY2FzZSA9IG1rX3RpbGUoRm9ybS5nZXQoXCJjYXNlXCIpKTtcbmxldCBta19ydWxlID0gbWtfdGlsZShGb3JtLmdldChcInJ1bGVcIikpO1xubGV0IG1rX2hpZGUgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2hpZGVcIikpO1xubGV0IG1rX2V2YWwgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2V2YWxcIikpO1xubGV0IG1rX3BhdXNlID0gbWtfdGlsZShGb3JtLmdldChcImZpbHRlcl9wYXVzZVwiKSk7XG5sZXQgbWtfZGVidWcgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2RlYnVnXCIpKTtcbmxldCBta191bnF1b3RlID0gbWtfdGlsZShGb3JtLmdldChcInVucXVvdGVcIikpO1xubGV0IGxpbmVicmVhayA9ICgpID0+IG1rX3NlY29uZGFyeShGb3JtLmxpbmVicmVhayk7XG5sZXQgc3BhY2UgPSAoKSA9PiBta19zZWNvbmRhcnkoRm9ybS5zcGFjZSk7XG5cbmxldCBta19leGFtcGxlID0gc3RyID0+IHtcbiAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcoc3RyKSkge1xuICB8IE5vbmUgPT4gW11cbiAgfCBTb21lKHopID0+IFppcHBlci56aXAoeilcbiAgfTtcbn07XG5cbi8qIEludCBwYXJhbSBiZWxvdyBzaG91bGQgYmUgfiB3aWR0aCBvZiBzaWRlYmFyICovXG5sZXQgYWJicmV2aWF0ZSA9IFV0aWwuU3RyaW5nVXRpbC5hYmJyZXZpYXRlKDIwKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxuLy8gVE9ETyBNYWtlIHVuaWZpZWQgd2F5IG9mIHVzaW5nIGNvbnNpc3RlbnQgbWV0YXZhcmlhYmxlcyBmb3Igc3ludGFjdGljIGZvcm1zXG4vLyBUT0RPIFVzZSAvdGF1IGluc3RlYWQgb2YgdHkgd2hlbiBjYW4gZG8gdGhhdCBhbmQgc3RpbGwgaGF2ZSBoaWdobGlnaHRpbmcgd29ya1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGxpc3RfZXhhbXBsZXMgPVxuICB8IEludFxuICB8IFR1cGxlXG4gIHwgQ29uczFcbiAgfCBDb25zMjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0eXBmdW5fZXhhbXBsZXMgPVxuICB8IEJhc2ljXG4gIHwgRW1wdHlIb2xlXG4gIHwgTXVsdGlIb2xlIC8qIFRPRE86IE1heWJlIG5vIGdvb2QgZXhhbXBsZXMgd2l0aCBNdWx0aWhvbGU/ICovXG4gIHwgVmFyO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGZ1bl9leGFtcGxlcyA9XG4gIHwgQmFzaWNcbiAgfCBXaWxkXG4gIHwgSW50TGl0XG4gIHwgRmxvYXRMaXRcbiAgfCBCb29sTGl0XG4gIHwgU3RyTGl0XG4gIHwgVHJpdlxuICB8IExpc3ROaWxcbiAgfCBMaXN0TGl0XG4gIHwgQ29uc0hkXG4gIHwgQ29uc1NuZFxuICB8IFZhckluY3JcbiAgfCBWYXJBbmRcbiAgfCBUdXBsZTJcbiAgfCBUdXBsZTNcbiAgfCBDdHJcbiAgfCBBcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBsZXRfZXhhbXBsZXMgPVxuICB8IEJhc2ljXG4gIHwgV2lsZFxuICB8IEludExpdFxuICB8IEZsb2F0TGl0XG4gIHwgQm9vbExpdFxuICB8IFN0ckxpdFxuICB8IFRyaXZcbiAgfCBMaXN0TmlsXG4gIHwgTGlzdExpdFxuICB8IENvbnNIZFxuICB8IENvbnNTbmRcbiAgfCBWYXJcbiAgfCBUdXBsZTJcbiAgfCBUdXBsZTNcbiAgfCBDdHJcbiAgfCBBcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBudW1lcmljX2Jpbl9vcF9leGFtcGxlcyA9XG4gIHwgUGx1c1xuICB8IE1pbnVzXG4gIHwgVGltZXNcbiAgfCBQb3dlclxuICB8IERpdmlkZVxuICB8IExlc3NUaGFuVHJ1ZVxuICB8IExlc3NUaGFuRmFsc2VcbiAgfCBMZXNzVGhhbkVxdWFsTGVzc1xuICB8IExlc3NUaGFuRXF1YWxFcXVhbFxuICB8IExlc3NUaGFuRXF1YWxGYWxzZVxuICB8IEdyZWF0ZXJUaGFuVHJ1ZVxuICB8IEdyZWF0ZXJUaGFuRmFsc2VcbiAgfCBHcmVhdGVyVGhhbkVxdWFsR3JlYXRlclxuICB8IEdyZWF0ZXJUaGFuRXF1YWxFcXVhbFxuICB8IEdyZWF0ZXJUaGFuRXF1YWxGYWxzZVxuICB8IEVxdWFsRmFsc2VcbiAgfCBFcXVhbFRydWU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZV9pZCA9XG4gIHwgUmVjVHlwXG4gIHwgRGVmZXJyYWxcbiAgfCBMaXN0KGxpc3RfZXhhbXBsZXMpXG4gIHwgVHlwRnVuKHR5cGZ1bl9leGFtcGxlcylcbiAgfCBGdW4oZnVuX2V4YW1wbGVzKVxuICB8IEZpeDFcbiAgfCBGaXgyXG4gIHwgVHVwbGUxXG4gIHwgVHVwbGUyXG4gIHwgTGV0KGxldF9leGFtcGxlcylcbiAgfCBUeXBGdW5BcFxuICB8IEZ1bkFwXG4gIHwgQ29uQXBcbiAgfCBEZWZlcnJlZEFwXG4gIHwgSWZUcnVlXG4gIHwgSWZGYWxzZVxuICB8IFNlcUJhc2ljXG4gIHwgU2VxVGVzdFxuICB8IFRlc3RUcnVlXG4gIHwgVGVzdEZhbHNlXG4gIHwgSW50VW5hcnlNaW51c1xuICB8IEludChudW1lcmljX2Jpbl9vcF9leGFtcGxlcylcbiAgfCBGbG9hdChudW1lcmljX2Jpbl9vcF9leGFtcGxlcylcbiAgfCBBbmRGYWxzZVxuICB8IEFuZFRydWVcbiAgfCBPckZhbHNlXG4gIHwgT3JUcnVlXG4gIHwgU3RyaW5nRXF1YWxGYWxzZVxuICB8IFN0cmluZ0VxdWFsVHJ1ZVxuICB8IENhc2VXaWxkU2ltcGxlXG4gIHwgQ2FzZVdpbGRUdXBsZVxuICB8IENhc2VJbnRcbiAgfCBDYXNlQm9vbFxuICB8IFBpcGVsaW5lMVxuICB8IEZpbHRlclN0ZXBcbiAgfCBGaWx0ZXJFdmFsXG4gIHwgRmlsdGVySGlkZVxuICB8IEZpbHRlckRlYnVnXG4gIHwgRmlsdGVyU2VsZWN0b3I7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZSA9IHtcbiAgc3ViX2lkOiBleGFtcGxlX2lkLFxuICB0ZXJtOiBTZWdtZW50LnQsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGF0X3N1Yl9mb3JtX2lkID1cbiAgfCBCYXNlXG4gIHwgRW1wdHlIb2xlXG4gIHwgTXVsdGlIb2xlXG4gIHwgV2lsZFxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZ1xuICB8IFRyaXZcbiAgfCBMaXN0TmlsXG4gIHwgTGlzdExpdFxuICB8IExpc3RDb25zXG4gIHwgVmFyXG4gIHwgVHVwbGVcbiAgfCBUdXBsZTJcbiAgfCBUdXBsZTNcbiAgfCBDdHJcbiAgfCBBcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtX2lkID1cbiAgfCBFbXB0eUhvbGVFeHBcbiAgfCBNdWx0aUhvbGVFeHBcbiAgfCBUcml2RXhwXG4gIHwgRGVmZXJyYWxFeHBcbiAgfCBCb29sRXhwXG4gIHwgSW50RXhwXG4gIHwgRmxvYXRFeHBcbiAgfCBTdHJpbmdFeHBcbiAgfCBWYXJFeHBcbiAgfCBDdHJFeHBcbiAgfCBMaXN0RXhwXG4gIHwgQ29uc0V4cFxuICB8IExpc3RDb25jYXRFeHBcbiAgfCBUeXBGdW5jdGlvbkV4cFxuICB8IEZ1bmN0aW9uRXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBUdXBsZUV4cFxuICB8IFR1cGxlMkV4cFxuICB8IFR1cGxlM0V4cFxuICB8IExldEV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgRml4RXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBUeXBGdW5BcEV4cFxuICB8IEZ1bkFwRXhwXG4gIHwgQ29uQXBFeHBcbiAgfCBEZWZlcnJlZEFwRXhwXG4gIHwgSWZFeHBcbiAgfCBTZXFFeHBcbiAgfCBUZXN0RXhwXG4gIHwgVW5PcEV4cChPcGVyYXRvcnMub3BfdW4pXG4gIHwgQmluT3BFeHAoT3BlcmF0b3JzLm9wX2JpbilcbiAgfCBDYXNlRXhwXG4gIHwgVHlBbGlhc0V4cFxuICB8IEVtcHR5SG9sZVBhdFxuICB8IE11bHRpSG9sZVBhdFxuICB8IFdpbGRQYXRcbiAgfCBJbnRQYXRcbiAgfCBGbG9hdFBhdFxuICB8IEJvb2xQYXRcbiAgfCBTdHJQYXRcbiAgfCBUcml2UGF0XG4gIHwgVmFyUGF0XG4gIHwgQ3RyUGF0XG4gIHwgTGlzdExpdFBhdFxuICB8IExpc3ROaWxQYXRcbiAgfCBDb25zUGF0XG4gIHwgQ29uczJQYXRcbiAgfCBUdXBsZVBhdFxuICB8IFR1cGxlMlBhdFxuICB8IFR1cGxlM1BhdFxuICB8IEFwUGF0XG4gIHwgVHlwQW5uUGF0XG4gIHwgRW1wdHlIb2xlVHlwXG4gIHwgTXVsdGlIb2xlVHlwXG4gIHwgSW50VHlwXG4gIHwgRmxvYXRUeXBcbiAgfCBCb29sVHlwXG4gIHwgU3RyVHlwXG4gIHwgVmFyVHlwXG4gIHwgTGlzdFR5cFxuICB8IEZvcmFsbFR5cFxuICB8IFJlY1R5cFxuICB8IEFycm93VHlwXG4gIHwgQXJyb3czVHlwXG4gIHwgVHVwbGVUeXBcbiAgfCBUdXBsZTBUeXBcbiAgfCBUdXBsZTJUeXBcbiAgfCBUdXBsZTNUeXBcbiAgfCBMYWJlbGxlZFN1bVR5cFxuICB8IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBTdW1UeXBOdWxsYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBFbXB0eUhvbGVUUGF0XG4gIHwgTXVsdGlIb2xlVFBhdFxuICB8IFZhclRQYXRcbiAgfCBQaXBlbGluZUV4cFxuICB8IEZpbHRlclBhdXNlXG4gIHwgRmlsdGVyRXZhbFxuICB8IEZpbHRlckRlYnVnXG4gIHwgRmlsdGVySGlkZVxuICB8IEZpbHRlclNlbGVjdG9yO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGZvcm0gPSB7XG4gIGlkOiBmb3JtX2lkLFxuICBzeW50YWN0aWNfZm9ybTogU2VnbWVudC50LFxuICBleHBhbmRhYmxlX2lkOiBvcHRpb24oKElkLnQsIFNlZ21lbnQudCkpLFxuICBleHBsYW5hdGlvbjogc3RyaW5nLFxuICBleGFtcGxlczogbGlzdChleGFtcGxlKSxcbn07XG5cbi8vIEhBTk5BSCAtIFRPRE86IE5vdCBzdXJlIHRoaXMgc2hvdWxkIGJlIGRpZmZlcmVudCBmcm9tIGZvcm1faWQgLSBtYXliZSBqdXN0IG9uZSBpZFxuLy8gTUFZQkUgZG9uJ3QgZXZlbiBuZWVkIGFuIGlkIGF0IGFsbCBmb3IgdGhlIGdyb3VwIC0ganVzdCB1c2UgdGhlIG1vc3Qgc3BlY2lmaWMgKDFzdCkgZm9ybSBpZCBpbiBmb3Jtc1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBncm91cF9pZCA9XG4gIHwgRW1wdHlIb2xlRXhwXG4gIHwgTXVsdGlIb2xlRXhwXG4gIHwgVHJpdkV4cFxuICB8IERlZmVycmFsRXhwXG4gIHwgQm9vbEV4cFxuICB8IEludEV4cFxuICB8IEZsb2F0RXhwXG4gIHwgU3RyaW5nRXhwXG4gIHwgVmFyRXhwXG4gIHwgQ3RyRXhwXG4gIHwgTGlzdEV4cFxuICB8IENvbnNFeHBcbiAgfCBMaXN0Q29uY2F0RXhwXG4gIHwgVHlwRnVuY3Rpb25FeHBcbiAgfCBGdW5jdGlvbkV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgVHVwbGVFeHBcbiAgfCBUdXBsZTJFeHBcbiAgfCBUdXBsZTNFeHBcbiAgfCBMZXRFeHAocGF0X3N1Yl9mb3JtX2lkKVxuICB8IFR5cEZ1bkFwRXhwXG4gIHwgRml4RXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBGdW5BcEV4cFxuICB8IENvbkFwRXhwXG4gIHwgRGVmZXJyZWRBcEV4cFxuICB8IElmRXhwXG4gIHwgU2VxRXhwXG4gIHwgVGVzdEV4cFxuICB8IFVuT3BFeHAoT3BlcmF0b3JzLm9wX3VuKVxuICB8IEJpbk9wRXhwKE9wZXJhdG9ycy5vcF9iaW4pXG4gIHwgQ2FzZUV4cFxuICB8IFR5QWxpYXNFeHBcbiAgfCBQaXBlbGluZUV4cFxuICB8IEVtcHR5SG9sZVBhdFxuICB8IE11bHRpSG9sZVBhdFxuICB8IFdpbGRQYXRcbiAgfCBJbnRQYXRcbiAgfCBGbG9hdFBhdFxuICB8IEJvb2xQYXRcbiAgfCBTdHJQYXRcbiAgfCBUcml2UGF0XG4gIHwgVmFyUGF0XG4gIHwgQ3RyUGF0XG4gIHwgTGlzdExpdFBhdFxuICB8IExpc3ROaWxQYXRcbiAgfCBDb25zUGF0XG4gIHwgQ29uczJQYXRcbiAgfCBUdXBsZVBhdFxuICB8IFR1cGxlMlBhdFxuICB8IFR1cGxlM1BhdFxuICB8IEFwUGF0XG4gIHwgVHlwQW5uUGF0XG4gIHwgRW1wdHlIb2xlVHlwXG4gIHwgTXVsdGlIb2xlVHlwXG4gIHwgSW50VHlwXG4gIHwgRmxvYXRUeXBcbiAgfCBCb29sVHlwXG4gIHwgU3RyVHlwXG4gIHwgVmFyVHlwXG4gIHwgTGlzdFR5cFxuICB8IEZvcmFsbFR5cFxuICB8IFJlY1R5cFxuICB8IEFycm93VHlwXG4gIHwgQXJyb3czVHlwXG4gIHwgVHVwbGVUeXBcbiAgfCBUdXBsZTBUeXBcbiAgfCBUdXBsZTJUeXBcbiAgfCBUdXBsZTNUeXBcbiAgfCBMYWJlbGxlZFN1bVR5cFxuICB8IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBTdW1UeXBOdWxsYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBFbXB0eUhvbGVUUGF0XG4gIHwgTXVsdGlIb2xlVFBhdFxuICB8IFZhclRQYXRcbiAgfCBGaWx0ZXJQYXVzZVxuICB8IEZpbHRlckV2YWxcbiAgfCBGaWx0ZXJEZWJ1Z1xuICB8IEZpbHRlckhpZGVcbiAgfCBGaWx0ZXJTZWxlY3RvcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBncm91cCA9IHtcbiAgaWQ6IGdyb3VwX2lkLFxuICBmb3JtczogbGlzdChmb3JtKSAvLyBPcmRlcmVkIC0gbW9yZSBzcGVjaWZpYyB0byBsZXNzIHNwZWNpZmljXG59O1xuXG5tb2R1bGUgU2ltcGxlID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBncm91cF9pZCxcbiAgICBmb3JtX2lkLFxuICAgIGFic3RyYWN0OiAoU2VnbWVudC50LCBsaXN0KChJZC50LCBJZC50KSkpLFxuICAgIGV4cGxhbmF0aW9uOiBzdHJpbmcsXG4gICAgZXhhbXBsZXM6IGxpc3QoZXhhbXBsZSksXG4gIH07XG5cbiAgbGV0IHRvX2dyb3VwID1cbiAgICAgIChcbiAgICAgICAge1xuICAgICAgICAgIGV4cGxhbmF0aW9uLFxuICAgICAgICAgIGFic3RyYWN0OiAoc3ludGFjdGljX2Zvcm0sIGNvbG9yaW5ncyksXG4gICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgZm9ybV9pZCxcbiAgICAgICAgICBleGFtcGxlcyxcbiAgICAgICAgfTogdCxcbiAgICAgICkgPT4gKFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGNvbG9yaW5ncyxcbiAgICB7XG4gICAgICBpZDogZ3JvdXBfaWQsXG4gICAgICBmb3JtczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGZvcm1faWQsXG4gICAgICAgICAgc3ludGFjdGljX2Zvcm0sXG4gICAgICAgICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICAgICAgICBleHBsYW5hdGlvbjogXCJcIixcbiAgICAgICAgICBleGFtcGxlcyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgKTtcblxuICBsZXQgbWtfMSA9XG4gICAgICAoKG46IHN0cmluZywgaWQ6IElkLnQpLCBta19mb3JtOiBQaWVjZS50ID0+IFNlZ21lbnQudClcbiAgICAgIDogKFNlZ21lbnQudCwgbGlzdCgoSWQudCwgSWQudCkpKSA9PiB7XG4gICAgbGV0IHAgPSBFeGFtcGxlLmV4cChuKTtcbiAgICAobWtfZm9ybShwKSwgWyhQaWVjZS5pZChwKSwgaWQpXSk7XG4gIH07XG5cbiAgbGV0IG1rXzIgPVxuICAgICAgKFxuICAgICAgICAobjE6IHN0cmluZywgaWRfMTogSWQudCksXG4gICAgICAgIChuMjogc3RyaW5nLCBpZF8yOiBJZC50KSxcbiAgICAgICAgbWtfZm9ybTogKFBpZWNlLnQsIFBpZWNlLnQpID0+IFNlZ21lbnQudCxcbiAgICAgIClcbiAgICAgIDogKFNlZ21lbnQudCwgbGlzdCgoSWQudCwgSWQudCkpKSA9PiB7XG4gICAgbGV0IChwMSwgcDIpID0gKEV4YW1wbGUuZXhwKG4xKSwgRXhhbXBsZS5leHAobjIpKTtcbiAgICAobWtfZm9ybShwMSwgcDIpLCBbKFBpZWNlLmlkKHAxKSwgaWRfMSksIChQaWVjZS5pZChwMiksIGlkXzIpXSk7XG4gIH07XG5cbiAgbGV0IG1rXzMgPVxuICAgICAgKFxuICAgICAgICAobjE6IHN0cmluZywgaWRfMTogSWQudCksXG4gICAgICAgIChuMjogc3RyaW5nLCBpZF8yOiBJZC50KSxcbiAgICAgICAgKG4zOiBzdHJpbmcsIGlkXzM6IElkLnQpLFxuICAgICAgICBta19mb3JtOiAoUGllY2UudCwgUGllY2UudCwgUGllY2UudCkgPT4gU2VnbWVudC50LFxuICAgICAgKVxuICAgICAgOiAoU2VnbWVudC50LCBsaXN0KChJZC50LCBJZC50KSkpID0+IHtcbiAgICBsZXQgKHAxLCBwMiwgcDMpID0gKFxuICAgICAgRXhhbXBsZS5leHAobjEpLFxuICAgICAgRXhhbXBsZS5leHAobjIpLFxuICAgICAgRXhhbXBsZS5leHAobjMpLFxuICAgICk7XG4gICAgKFxuICAgICAgbWtfZm9ybShwMSwgcDIsIHAzKSxcbiAgICAgIFtcbiAgICAgICAgKFBpZWNlLmlkKHAxKSwgaWRfMSksXG4gICAgICAgIChQaWVjZS5pZChwMiksIGlkXzIpLFxuICAgICAgICAoUGllY2UuaWQocDMpLCBpZF8zKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfTtcbn07XG4iLCJvcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IHZhcl90eXBfcGF0ID0gKG46IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcImAlc2AgYmluZHMgYSB0eXBlIHZhcmlhYmxlLlwiO1xuICB7XG4gICAgaWQ6IFZhclRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtuIHw+IGFiYnJldmlhdGUgfD4gdHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdmFyX3R5cF9wYXRzID0gKG46IHN0cmluZyk6IGdyb3VwID0+IHtcbiAgaWQ6IFZhclRQYXQsXG4gIGZvcm1zOiBbdmFyX3R5cF9wYXQobildLFxufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY29sb3JNYXAgPSBIYXozbGNvcmUuSWQuTWFwLnQoc3RyaW5nKTtcblxuLypbQGRlcml2aW5nIHNleHBdKi9cbnR5cGUgdCA9IChjb2xvck1hcCwgaW50KTtcblxuLyogVE9ETzogSGFubmFoIC0gUGljayA3IG9yIHNvIGRpc3RpbmN0IGNvbG9ycyBmcm9tIHRoZSBkaWZmZXJlbnQgY29sb3IgZ2VuZXJhdG9yIHRoaW5nIChIU0x1dilcbiAgIE1ha2Ugc3VyZSBkaXN0aW5ndWlzaGFibGUgZm9yIGNvbG9yIGJsaW5kIG9yIGdyZXlzY2FsZVxuICAgLSB0aGluayBhYm91dCByZWxhdGVkIGNvbG9ycyBmb3IgcmVsYXRlZCBjb25jZXB0cyovXG5sZXQgY2hpbGRfY29sb3JzID0gW1wiYmx1ZVwiLCBcInBpbmtcIiwgXCJ0ZWFsXCIsIFwib3JhbmdlXCIsIFwicHVycGxlXCIsIFwieWVsbG93XCJdO1xuXG5sZXQgZW1wdHkgPSAoSGF6M2xjb3JlLklkLk1hcC5lbXB0eSwgMCk7XG5sZXQgZ2V0X2NvbG9yID0gKGlkOiBIYXozbGNvcmUuSWQudCwgKG1hcHBpbmcsIGluZGV4KTogdCk6IChzdHJpbmcsIHQpID0+XG4gIHN3aXRjaCAoSGF6M2xjb3JlLklkLk1hcC5maW5kX29wdChpZCwgbWFwcGluZykpIHtcbiAgfCBOb25lID0+XG4gICAgbGV0IGNvbG9yID0gTGlzdC5udGgoY2hpbGRfY29sb3JzLCBpbmRleCBtb2QgTGlzdC5sZW5ndGgoY2hpbGRfY29sb3JzKSk7XG4gICAgbGV0IG1hcHBpbmcgPSBIYXozbGNvcmUuSWQuTWFwLmFkZChpZCwgY29sb3IsIG1hcHBpbmcpO1xuICAgIChjb2xvciwgKG1hcHBpbmcsIGluZGV4ICsgMSkpO1xuICB8IFNvbWUoY29sb3IpID0+IChjb2xvciwgKG1hcHBpbmcsIGluZGV4KSlcbiAgfTtcblxubGV0IHRvX2xpc3QgPSAobWFwOiBjb2xvck1hcCk6IGxpc3QoKEhhejNsY29yZS5JZC50LCBzdHJpbmcpKSA9PiB7XG4gIExpc3Qub2Zfc2VxKEhhejNsY29yZS5JZC5NYXAudG9fc2VxKG1hcCkpO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubGV0IGNvZGUgPSAoY29kZTogc3RyaW5nKSA9PiB7XG4gIE5vZGUuc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImV4ZXJjaXNlLWNvZGVcIiksIFtOb2RlLnRleHQoY29kZSldKTtcbn07XG5cbmxldCBlcXVpdiA9IE5vZGUuc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwiIOKJoSBcIildKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gRXhlcmNpc2VVdGlsO1xuXG5sZXQgcHJvbXB0ID1cbiAgZGl2KFtcbiAgICBwKFtcbiAgICAgIHRleHQoXG4gICAgICAgIFwiV3JpdGUgYSByZWN1cnNpdmUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIGludGVnZXIgaXMgb2RkLiBcIixcbiAgICAgICksXG4gICAgXSksXG4gICAgcChbXG4gICAgICBjb2RlKFwib2RkKG4pXCIpLFxuICAgICAgZXF1aXYsXG4gICAgICBjb2RlKFwidHJ1ZVwiKSxcbiAgICAgIHRleHQoXCIgaWZmIFwiKSxcbiAgICAgIGNvZGUoXCJuXCIpLFxuICAgICAgdGV4dChcIiBpcyBvZGQuXCIpLFxuICAgIF0pLFxuICBdKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubW9kdWxlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGUgPSBOb2RlLnQ7XG4gIGxldCBkZWZhdWx0ID0gTm9kZS50ZXh0KFwiVE9ETzogcHJvbXB0XCIpO1xuICBsZXQgb3V0cHV0X2hlYWRlciA9IG1vZHVsZV9uYW1lID0+XG4gICAgXCJsZXQgcHJvbXB0ID0gXCIgKysgbW9kdWxlX25hbWUgKysgXCJfcHJvbXB0LnByb21wdFxcblwiO1xufTtcblxuaW5jbHVkZSBIYXozbHNjaG9vbC5FeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcbiIsIm9wZW4gSGF6M2xjb3JlXG5cbmxldCBwcm9tcHQgPSBFeF9PZGRseVJlY3Vyc2l2ZV9wcm9tcHQucHJvbXB0XG5cbmxldCBleGVyY2lzZSA6IEV4ZXJjaXNlLnNwZWMgPVxuICB7XG4gICAgdGl0bGUgPSBcIk9kZGx5IFJlY3Vyc2l2ZVwiO1xuICAgIHZlcnNpb24gPSAxO1xuICAgIG1vZHVsZV9uYW1lID0gXCJFeF9PZGRseVJlY3Vyc2l2ZVwiO1xuICAgIHByb21wdDtcbiAgICBwb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgeyB0ZXN0X3ZhbGlkYXRpb24gPSAxOyBtdXRhdGlvbl90ZXN0aW5nID0gMTsgaW1wbF9ncmFkaW5nID0gMiB9O1xuICAgIHByZWx1ZGUgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZhbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gKFsgMDsgMSBdLCBbIDIgXSk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgKCBbXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgICAgICBdICkgKTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBjb3JyZWN0X2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA1OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNTsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSAoWyAwOyAxIF0sIFsgMiBdKTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICggW10sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgXSApICk7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgeW91cl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gUmlnaHQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidHJ1ZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgcmVxdWlyZWQgPSA2O1xuICAgICAgICBwcm92aWRlZCA9IDI7XG4gICAgICB9O1xuICAgIHlvdXJfaW1wbCA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIGhpZGRlbl9idWdzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZhbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaGludCA9IFwiYWx3YXlzIHJldHVybnMgZmFsc2VcIjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJhbHdheXMgcmV0dXJucyB0cnVlXCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBpbXBsID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkJvb2xcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmNhdmUgMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0cnVlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidHJ1ZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGhpbnQgPSBcImluY29ycmVjdCBiYXNlIGNhc2VcIjtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgaGlkZGVuX3Rlc3RzID1cbiAgICAgIHtcbiAgICAgICAgdGVzdHMgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjQyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyN1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgaGludHMgPSBbIFwiemVyb1wiIF07XG4gICAgICB9O1xuICAgIHN5bnRheF90ZXN0cyA9XG4gICAgICBbIChcIm9kZCBpcyByZWN1cnNpdmVcIiwgSGF6M2xzY2hvb2wuU3ludGF4VGVzdC5Jc1JlY3Vyc2l2ZSBcIm9kZFwiKSBdO1xuICB9XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEV4ZXJjaXNlVXRpbDtcblxubGV0IHByb21wdCA9XG4gIGRpdihbXG4gICAgcChbXG4gICAgICBkaXYoW1xuICAgICAgICB0ZXh0KFxuICAgICAgICAgIFwiV3JpdGUgdGVzdHMgY2FzZXMgZm9yLCBhbmQgdGhlbiBpbXBsZW1lbnQsIGEgZnVuY3Rpb24sIHRoYXQgcmVjdXJzaXZlbHkgZGV0ZXJtaW5lcyB0aGUgbnRoIGZpYm9uYWNjaSBudW1iZXIuXCIsXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgICBwKFtcbiAgICAgIGNvZGUoXCJmaWIobilcIiksXG4gICAgICBlcXVpdixcbiAgICAgIHRleHQoXCJ0aGUgXCIpLFxuICAgICAgY29kZShcIm5cIiksXG4gICAgICB0ZXh0KFwidGggZmlib25hY2NpIG51bWJlciwgYXNzdW1pbmcgXCIpLFxuICAgICAgY29kZShcIm4gPj0gMC5cIiksXG4gICAgXSksXG4gIF0pO1xuIiwib3BlbiBIYXozbGNvcmVcblxubGV0IHByb21wdCA9IEV4X1JlY3Vyc2l2ZUZpYm9uYWNjaV9wcm9tcHQucHJvbXB0XG5cbmxldCBleGVyY2lzZSA6IEV4ZXJjaXNlLnNwZWMgPVxuICB7XG4gICAgdGl0bGUgPSBcIlJlY3Vyc2l2ZSBGaWJvbmFjY2lcIjtcbiAgICB2ZXJzaW9uID0gMTtcbiAgICBtb2R1bGVfbmFtZSA9IFwiRXhfUmVjdXJzaXZlRmlib25hY2NpXCI7XG4gICAgcHJvbXB0O1xuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbiA9XG4gICAgICB7IHRlc3RfdmFsaWRhdGlvbiA9IDE7IG11dGF0aW9uX3Rlc3RpbmcgPSAxOyBpbXBsX2dyYWRpbmcgPSAyIH07XG4gICAgcHJlbHVkZSA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9IChbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdLCBbXSk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBjb3JyZWN0X2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDU7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA1OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiK1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICBdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gKFsgMDsgMSBdLCBbIDIgXSk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICggW10sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgXSApICk7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgeW91cl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzID0gKFtdLCBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgcmVxdWlyZWQgPSA1O1xuICAgICAgICBwcm92aWRlZCA9IDA7XG4gICAgICB9O1xuICAgIHlvdXJfaW1wbCA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJuXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIGhpZGRlbl9idWdzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIitcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJpbmNvcnJlY3QgYmFzZSBjYXNlc1wiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgaW1wbCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIitcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJpbmNvcnJlY3QgcmVjdXJzaW9uXCI7XG4gICAgICAgIH07XG4gICAgICBdO1xuICAgIGhpZGRlbl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiM1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiNFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI1XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI1XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjZcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMTNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjdcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMzRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgIH07XG4gICAgICAgIGhpbnRzID0gW107XG4gICAgICB9O1xuICAgIHN5bnRheF90ZXN0cyA9XG4gICAgICBbIChcImZpYiBpcyByZWN1cnNpdmVcIiwgSGF6M2xzY2hvb2wuU3ludGF4VGVzdC5Jc1JlY3Vyc2l2ZSBcImZpYlwiKSBdO1xuICB9XG4iLCJsZXQgZmlsZW5hbWUgPSBcImhhejNsLWRlbW9cIjtcbmxldCBsb2dfa2V5ID0gZmlsZW5hbWU7XG5sZXQgZXhlcmNpc2VzOiBsaXN0KEV4ZXJjaXNlLnNwZWMpID0gW1xuICBFeF9PZGRseVJlY3Vyc2l2ZS5leGVyY2lzZSxcbiAgRXhfUmVjdXJzaXZlRmlib25hY2NpLmV4ZXJjaXNlLFxuXTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5tb2R1bGUgU2V4cCA9IFNleHBsaWIuU2V4cDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZmVlZGJhY2tfb3B0aW9uID1cbiAgfCBUaHVtYnNVcFxuICB8IFRodW1ic0Rvd247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZV9tb2RlbCA9IHtcbiAgc3ViX2lkOiBleGFtcGxlX2lkLFxuICBmZWVkYmFjazogZmVlZGJhY2tfb3B0aW9uLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtX21vZGVsID0ge1xuICBncm91cDogZ3JvdXBfaWQsXG4gIGZvcm06IGZvcm1faWQsXG4gIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBvcHRpb24oZmVlZGJhY2tfb3B0aW9uKSxcbiAgZXhhbXBsZXM6IGxpc3QoZXhhbXBsZV9tb2RlbCksXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdyb3VwX21vZGVsID0ge1xuICBncm91cDogZ3JvdXBfaWQsXG4gIHNlbGVjdGVkOiBmb3JtX2lkLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzcGVjaWZpY2l0eV9vcGVuOiBib29sLFxuICBmb3JtczogbGlzdChmb3JtX21vZGVsKSxcbiAgZ3JvdXBzOiBsaXN0KGdyb3VwX21vZGVsKSxcbn07XG5cbm1vZHVsZSBTZXR0aW5ncyA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpZ2hsaWdodCA9XG4gICAgfCBOb0hpZ2hsaWdodFxuICAgIHwgT25lKElkLnQpXG4gICAgfCBBbGw7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgc2hvdzogYm9vbCxcbiAgICBzaG93X2ZlZWRiYWNrOiBib29sLFxuICAgIGhpZ2hsaWdodCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgaGlnaGxpZ2h0X2FjdGlvbiA9XG4gICAgfCBUb2dnbGVcbiAgICB8IEhvdmVyKElkLnQpXG4gICAgfCBVbnNldEhvdmVyO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBhY3Rpb24gPVxuICAgIHwgVG9nZ2xlU2hvd1xuICAgIHwgVG9nZ2xlU2hvd0ZlZWRiYWNrXG4gICAgfCBTZXRIaWdobGlnaHQoaGlnaGxpZ2h0X2FjdGlvbik7XG5cbiAgbGV0IGluaXQgPSB7c2hvdzogdHJ1ZSwgc2hvd19mZWVkYmFjazogZmFsc2UsIGhpZ2hsaWdodDogTm9IaWdobGlnaHR9O1xufTtcblxubGV0IGluaXQ6IHQgPSB7c3BlY2lmaWNpdHlfb3BlbjogZmFsc2UsIGZvcm1zOiBbXSwgZ3JvdXBzOiBbXX07XG5cbmxldCBnZXRfZXhwbGFuYXRpb25fZmVlZGJhY2sgPVxuICAgIChncm91cF9pZDogZ3JvdXBfaWQsIGZvcm1faWQ6IGZvcm1faWQsIG1vZGVsOiB0KTogb3B0aW9uKGZlZWRiYWNrX29wdGlvbikgPT4ge1xuICBsZXQgZm9ybXMgPVxuICAgIExpc3QuZmlsdGVyKFxuICAgICAgKGZvcm06IGZvcm1fbW9kZWwpID0+IGZvcm0uZ3JvdXAgPT0gZ3JvdXBfaWQgJiYgZm9ybS5mb3JtID09IGZvcm1faWQsXG4gICAgICBtb2RlbC5mb3JtcyxcbiAgICApO1xuICBzd2l0Y2ggKGZvcm1zKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmb3JtXSA9PiBmb3JtLmV4cGxhbmF0aW9uX2ZlZWRiYWNrXG4gIHwgXyA9PlxuICAgIHJhaXNlKFxuICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgXCJFYWNoIGZvcm0sIGdyb3VwIHBhaXIgc2hvdWxkIG9ubHkgYXBwZWFyIG9uY2UsIGJ1dCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICAgICsrIFwiLCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgKysgXCIgYXBwZWFycyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGZvcm1zKSlcbiAgICAgICAgKysgXCIgdGltZXNcIixcbiAgICAgICksXG4gICAgKVxuICB9O1xufTtcblxubGV0IGdldF9leGFtcGxlX2ZlZWRiYWNrID1cbiAgICAoZ3JvdXBfaWQ6IGdyb3VwX2lkLCBmb3JtX2lkOiBmb3JtX2lkLCBleGFtcGxlX2lkOiBleGFtcGxlX2lkLCBtb2RlbDogdClcbiAgICA6IG9wdGlvbihmZWVkYmFja19vcHRpb24pID0+IHtcbiAgbGV0IGZvcm1zID1cbiAgICBMaXN0LmZpbHRlcihcbiAgICAgIChmb3JtOiBmb3JtX21vZGVsKSA9PiBmb3JtLmdyb3VwID09IGdyb3VwX2lkICYmIGZvcm0uZm9ybSA9PSBmb3JtX2lkLFxuICAgICAgbW9kZWwuZm9ybXMsXG4gICAgKTtcblxuICBzd2l0Y2ggKGZvcm1zKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmb3JtXSA9PlxuICAgIGxldCBleGFtcGxlcyA9XG4gICAgICBMaXN0LmZpbHRlcihcbiAgICAgICAgKGV4YW1wbGU6IGV4YW1wbGVfbW9kZWwpID0+IGV4YW1wbGUuc3ViX2lkID09IGV4YW1wbGVfaWQsXG4gICAgICAgIGZvcm0uZXhhbXBsZXMsXG4gICAgICApO1xuICAgIHN3aXRjaCAoZXhhbXBsZXMpIHtcbiAgICB8IFtdID0+IE5vbmVcbiAgICB8IFtleGFtcGxlXSA9PiBTb21lKGV4YW1wbGUuZmVlZGJhY2spXG4gICAgfCBfID0+XG4gICAgICByYWlzZShcbiAgICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgICBcIkVhY2ggZ3JvdXAsIGZvcm0sIGV4YW1wbGUgdHJpcGxlIHNob3VsZCBvbmx5IGFwcGVhciBvbmNlLCBidXQgXCJcbiAgICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgICArKyBcIiwgXCJcbiAgICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICAgICAgKysgXCIsIFwiXG4gICAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9leGFtcGxlX2lkKGV4YW1wbGVfaWQpKVxuICAgICAgICAgICsrIFwiIGFwcGVhcnMgXCJcbiAgICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGV4YW1wbGVzKSlcbiAgICAgICAgICArKyBcIiB0aW1lc1wiLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH07XG4gIHwgXyA9PlxuICAgIHJhaXNlKFxuICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgXCJFYWNoIGdyb3VwLCBmb3JtIHBhaXIgc2hvdWxkIG9ubHkgYXBwZWFyIG9uY2UsIGJ1dCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgKysgXCIsIFwiXG4gICAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZm9ybV9pZChmb3JtX2lkKSlcbiAgICAgICAgKysgXCIgYXBwZWFycyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGZvcm1zKSlcbiAgICAgICAgKysgXCIgdGltZXNcIixcbiAgICAgICksXG4gICAgKVxuICB9O1xufTtcblxubGV0IGdldF9mb3JtX2luX2dyb3VwID0gKGZvcm1faWQ6IGZvcm1faWQsIGdyb3VwOiBncm91cCk6IGZvcm0gPT4ge1xuICBPcHRVdGlsLmdldF9vcl9yYWlzZShcbiAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgXCJGb3JtIFwiXG4gICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICArKyBcIiBpcyBub3QgaW4gZ3JvdXAgXCJcbiAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZ3JvdXBfaWQoZ3JvdXAuaWQpKSxcbiAgICApLFxuICAgIExpc3QuZmluZF9vcHQoKGZvcm06IGZvcm0pID0+IGZvcm0uaWQgPT0gZm9ybV9pZCwgZ3JvdXAuZm9ybXMpLFxuICApO1xufTtcblxubGV0IGdldF9zZWxlY3RlZF9vcHRpb24gPSAoZ3JvdXA6IGdyb3VwLCBtb2RlbDogdCk6IGZvcm0gPT4ge1xuICBsZXQgc2VsZWN0ZWQgPVxuICAgIExpc3QuZmlsdGVyKFxuICAgICAgKGdyb3VwJzogZ3JvdXBfbW9kZWwpID0+IGdyb3VwJy5ncm91cCA9PSBncm91cC5pZCxcbiAgICAgIG1vZGVsLmdyb3VwcyxcbiAgICApO1xuICBzd2l0Y2ggKHNlbGVjdGVkLCBncm91cC5mb3Jtcykge1xuICB8IChbXSwgW2Zvcm0sIC4uLl9mc10pID0+IGZvcm1cbiAgfCAoW3NlbGVjdGVkXSwgXykgPT4gZ2V0X2Zvcm1faW5fZ3JvdXAoc2VsZWN0ZWQuc2VsZWN0ZWQsIGdyb3VwKVxuICB8IChbX2YxLCBfZjIsIC4uLl9mc10sIF8pID0+XG4gICAgcmFpc2UoXG4gICAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICBcIkVhY2ggZ3JvdXAgc2hvdWxkIGhhdmUgb25seSBvbmUgc2VsZWN0aW9uLCBidXQgZ3JvdXAgXCJcbiAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9ncm91cF9pZChncm91cC5pZCkpXG4gICAgICAgICsrIFwiIGhhcyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKHNlbGVjdGVkKSlcbiAgICAgICAgKysgXCJmb3JtcyBzZWxlY3RlZFwiLFxuICAgICAgKSxcbiAgICApXG4gIHwgKF8sIFtdKSA9PlxuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJFYWNoIGdyb3VwIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgZm9ybVwiKSlcbiAgfTtcbn07XG5cbmxldCBnZXRfb3B0aW9ucyA9IChncm91cDogZ3JvdXApOiBsaXN0KChmb3JtX2lkLCBTZWdtZW50LnQpKSA9PlxuICBpZiAoTGlzdC5sZW5ndGgoZ3JvdXAuZm9ybXMpIDwgMikge1xuICAgIFtdO1xuICB9IGVsc2Uge1xuICAgIExpc3QucmV2KFxuICAgICAgTGlzdC5tYXAoXG4gICAgICAgIChmb3JtOiBmb3JtKSA9PlxuICAgICAgICAgIChcbiAgICAgICAgICAgIGZvcm0uaWQsXG4gICAgICAgICAgICBzbmQoXG4gICAgICAgICAgICAgIE9wdFV0aWwuZ2V0X29yX3JhaXNlKFxuICAgICAgICAgICAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgICAgICAgICAgICBcIkZvcm1zIHVzZWQgZm9yIGdyb3VwIG9wdGlvbnMgbXVzdCBzcGVjaWZ5IGV4cGFuZGFibGVcIixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGZvcm0uZXhwYW5kYWJsZV9pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgZ3JvdXAuZm9ybXMsXG4gICAgICApLFxuICAgICk7XG4gIH07XG5cbmxldCBnZXRfZm9ybV9hbmRfb3B0aW9ucyA9XG4gICAgKGdyb3VwOiBncm91cCwgbW9kZWw6IHQpOiAoZm9ybSwgbGlzdCgoZm9ybV9pZCwgU2VnbWVudC50KSkpID0+IHtcbiAgKGdldF9zZWxlY3RlZF9vcHRpb24oZ3JvdXAsIG1vZGVsKSwgZ2V0X29wdGlvbnMoZ3JvdXApKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgTW9kZWwgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBtb2RlID1cbiAgICB8IFNjcmF0Y2hcbiAgICB8IERvY3VtZW50YXRpb25cbiAgICB8IEV4ZXJjaXNlcztcblxuICBsZXQgbW9kZV9vZl9zdHJpbmcgPSAoczogc3RyaW5nKTogbW9kZSA9PlxuICAgIHN3aXRjaCAocykge1xuICAgIHwgXCJTY3JhdGNoXCIgPT4gU2NyYXRjaFxuICAgIHwgXCJEb2N1bWVudGF0aW9uXCIgPT4gRG9jdW1lbnRhdGlvblxuICAgIHwgXCJFeGVyY2lzZXNcIiA9PiBFeGVyY2lzZXNcbiAgICB8IF8gPT4gZmFpbHdpdGgoXCJtb2RlX29mX3N0cmluZzogdW5rbm93biBtb2RlOlwiICsrIHMpXG4gICAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBjYXB0aW9uczogYm9vbCxcbiAgICBzZWNvbmRhcnlfaWNvbnM6IGJvb2wsXG4gICAgY29yZTogSGF6M2xjb3JlLkNvcmVTZXR0aW5ncy50LFxuICAgIGFzeW5jX2V2YWx1YXRpb246IGJvb2wsXG4gICAgY29udGV4dF9pbnNwZWN0b3I6IGJvb2wsXG4gICAgaW5zdHJ1Y3Rvcl9tb2RlOiBib29sLFxuICAgIGJlbmNobWFyazogYm9vbCxcbiAgICBleHBsYWluVGhpczogRXhwbGFpblRoaXNNb2RlbC5TZXR0aW5ncy50LFxuICAgIG1vZGUsXG4gIH07XG5cbiAgbGV0IGZpeF9pbnN0cnVjdG9yX21vZGUgPSBzZXR0aW5ncyA9PlxuICAgIGlmIChzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgJiYgIUV4ZXJjaXNlU2V0dGluZ3Muc2hvd19pbnN0cnVjdG9yKSB7XG4gICAgICB7Li4uc2V0dGluZ3MsIGluc3RydWN0b3JfbW9kZTogZmFsc2V9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXR0aW5ncztcbiAgICB9O1xufTtcblxubW9kdWxlIFVwZGF0ZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGV2YWx1YXRpb24gPVxuICAgIHwgU2hvd1JlY29yZFxuICAgIHwgU2hvd0Nhc2VDbGF1c2VzXG4gICAgfCBTaG93Rm5Cb2RpZXNcbiAgICB8IFNob3dDYXN0c1xuICAgIHwgU2hvd0ZpeHBvaW50c1xuICAgIHwgU2hvd0xvb2t1cHNcbiAgICB8IFNob3dGaWx0ZXJzXG4gICAgfCBTaG93U2V0dGluZ3NcbiAgICB8IFNob3dIaWRkZW5TdGVwcztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBDYXB0aW9uc1xuICAgIHwgU2Vjb25kYXJ5SWNvbnNcbiAgICB8IFN0YXRpY3NcbiAgICB8IER5bmFtaWNzXG4gICAgfCBBc3Npc3RcbiAgICB8IEVsYWJvcmF0ZVxuICAgIHwgQmVuY2htYXJrXG4gICAgfCBDb250ZXh0SW5zcGVjdG9yXG4gICAgfCBJbnN0cnVjdG9yTW9kZVxuICAgIHwgRXZhbHVhdGlvbihldmFsdWF0aW9uKVxuICAgIHwgRXhwbGFpblRoaXMoRXhwbGFpblRoaXNNb2RlbC5TZXR0aW5ncy5hY3Rpb24pXG4gICAgfCBNb2RlKE1vZGVsLm1vZGUpO1xuXG4gIGxldCB1cGRhdGUgPSAoYWN0aW9uLCBzZXR0aW5nczogTW9kZWwudCk6IE1vZGVsLnQgPT5cbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgIHwgU3RhdGljcyA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgLi4uc2V0dGluZ3MuY29yZSxcbiAgICAgICAgICBzdGF0aWNzOiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzLFxuICAgICAgICAgIGFzc2lzdDogIXNldHRpbmdzLmNvcmUuc3RhdGljcyxcbiAgICAgICAgICBkeW5hbWljczogIXNldHRpbmdzLmNvcmUuc3RhdGljcyAmJiBzZXR0aW5ncy5jb3JlLmR5bmFtaWNzLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgRWxhYm9yYXRlID0+IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICAuLi5zZXR0aW5ncy5jb3JlLFxuICAgICAgICAgIHN0YXRpY3M6ICFzZXR0aW5ncy5jb3JlLmVsYWJvcmF0ZSB8fCBzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgZWxhYm9yYXRlOiAhc2V0dGluZ3MuY29yZS5lbGFib3JhdGUsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBEeW5hbWljcyA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgLi4uc2V0dGluZ3MuY29yZSxcbiAgICAgICAgICBzdGF0aWNzOiAhc2V0dGluZ3MuY29yZS5keW5hbWljcyB8fCBzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgZHluYW1pY3M6ICFzZXR0aW5ncy5jb3JlLmR5bmFtaWNzLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgQXNzaXN0ID0+IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICAuLi5zZXR0aW5ncy5jb3JlLFxuICAgICAgICAgIHN0YXRpY3M6ICFzZXR0aW5ncy5jb3JlLmFzc2lzdCB8fCBzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgYXNzaXN0OiAhc2V0dGluZ3MuY29yZS5hc3Npc3QsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBFdmFsdWF0aW9uKHUpID0+XG4gICAgICBsZXQgZXZhbHVhdGlvbiA9IHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbjtcbiAgICAgIGxldCBldmFsdWF0aW9uOiBIYXozbGNvcmUuQ29yZVNldHRpbmdzLkV2YWx1YXRpb24udCA9XG4gICAgICAgIHN3aXRjaCAodSkge1xuICAgICAgICB8IFNob3dSZWNvcmQgPT4ge1xuICAgICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICAgIHN0ZXBwZXJfaGlzdG9yeTogIWV2YWx1YXRpb24uc3RlcHBlcl9oaXN0b3J5LFxuICAgICAgICAgIH1cbiAgICAgICAgfCBTaG93Q2FzZUNsYXVzZXMgPT4ge1xuICAgICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICAgIHNob3dfY2FzZV9jbGF1c2VzOiAhZXZhbHVhdGlvbi5zaG93X2Nhc2VfY2xhdXNlcyxcbiAgICAgICAgICB9XG4gICAgICAgIHwgU2hvd0ZuQm9kaWVzID0+IHtcbiAgICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgICBzaG93X2ZuX2JvZGllczogIWV2YWx1YXRpb24uc2hvd19mbl9ib2RpZXMsXG4gICAgICAgICAgfVxuICAgICAgICB8IFNob3dDYXN0cyA9PiB7Li4uZXZhbHVhdGlvbiwgc2hvd19jYXN0czogIWV2YWx1YXRpb24uc2hvd19jYXN0c31cbiAgICAgICAgfCBTaG93Rml4cG9pbnRzID0+IHtcbiAgICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgICBzaG93X2ZpeHBvaW50czogIWV2YWx1YXRpb24uc2hvd19maXhwb2ludHMsXG4gICAgICAgICAgfVxuICAgICAgICB8IFNob3dMb29rdXBzID0+IHtcbiAgICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgICBzaG93X2xvb2t1cF9zdGVwczogIWV2YWx1YXRpb24uc2hvd19sb29rdXBfc3RlcHMsXG4gICAgICAgICAgfVxuICAgICAgICB8IFNob3dGaWx0ZXJzID0+IHtcbiAgICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgICBzaG93X3N0ZXBwZXJfZmlsdGVyczogIWV2YWx1YXRpb24uc2hvd19zdGVwcGVyX2ZpbHRlcnMsXG4gICAgICAgICAgfVxuICAgICAgICB8IFNob3dTZXR0aW5ncyA9PiB7XG4gICAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgICAgc2hvd19zZXR0aW5nczogIWV2YWx1YXRpb24uc2hvd19zZXR0aW5ncyxcbiAgICAgICAgICB9XG4gICAgICAgIHwgU2hvd0hpZGRlblN0ZXBzID0+IHtcbiAgICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgICBzaG93X2hpZGRlbl9zdGVwczogIWV2YWx1YXRpb24uc2hvd19oaWRkZW5fc3RlcHMsXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY29yZToge1xuICAgICAgICAgIC4uLnNldHRpbmdzLmNvcmUsXG4gICAgICAgICAgZXZhbHVhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfCBFeHBsYWluVGhpcyhUb2dnbGVTaG93KSA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBleHBsYWluVGhpczoge1xuICAgICAgICAgIC4uLnNldHRpbmdzLmV4cGxhaW5UaGlzLFxuICAgICAgICAgIHNob3c6ICFzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgRXhwbGFpblRoaXMoVG9nZ2xlU2hvd0ZlZWRiYWNrKSA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBleHBsYWluVGhpczoge1xuICAgICAgICAgIC4uLnNldHRpbmdzLmV4cGxhaW5UaGlzLFxuICAgICAgICAgIHNob3dfZmVlZGJhY2s6ICFzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93X2ZlZWRiYWNrLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KGEpKSA9PlxuICAgICAgbGV0IGhpZ2hsaWdodDogRXhwbGFpblRoaXNNb2RlbC5TZXR0aW5ncy5oaWdobGlnaHQgPVxuICAgICAgICBzd2l0Y2ggKGEsIHNldHRpbmdzLmV4cGxhaW5UaGlzLmhpZ2hsaWdodCkge1xuICAgICAgICB8IChUb2dnbGUsIEFsbCkgPT4gTm9IaWdobGlnaHRcbiAgICAgICAgfCAoVG9nZ2xlLCBfKSA9PiBBbGxcbiAgICAgICAgfCAoSG92ZXIoXyksIEFsbCkgPT4gQWxsXG4gICAgICAgIHwgKEhvdmVyKGlkKSwgXykgPT4gT25lKGlkKVxuICAgICAgICB8IChVbnNldEhvdmVyLCBBbGwpID0+IEFsbFxuICAgICAgICB8IChVbnNldEhvdmVyLCBfKSA9PiBOb0hpZ2hsaWdodFxuICAgICAgICB9O1xuICAgICAgbGV0IGV4cGxhaW5UaGlzID0gey4uLnNldHRpbmdzLmV4cGxhaW5UaGlzLCBoaWdobGlnaHR9O1xuICAgICAgey4uLnNldHRpbmdzLCBleHBsYWluVGhpc307XG4gICAgfCBCZW5jaG1hcmsgPT4gey4uLnNldHRpbmdzLCBiZW5jaG1hcms6ICFzZXR0aW5ncy5iZW5jaG1hcmt9XG4gICAgfCBDYXB0aW9ucyA9PiB7Li4uc2V0dGluZ3MsIGNhcHRpb25zOiAhc2V0dGluZ3MuY2FwdGlvbnN9XG4gICAgfCBTZWNvbmRhcnlJY29ucyA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBzZWNvbmRhcnlfaWNvbnM6ICFzZXR0aW5ncy5zZWNvbmRhcnlfaWNvbnMsXG4gICAgICB9XG4gICAgfCBDb250ZXh0SW5zcGVjdG9yID0+IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvbnRleHRfaW5zcGVjdG9yOiAhc2V0dGluZ3MuY29udGV4dF9pbnNwZWN0b3IsXG4gICAgICB9XG4gICAgfCBJbnN0cnVjdG9yTW9kZSA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLCAvL1RPRE9bTWF0dF06IE1ha2Ugc3VyZSBpbnN0cnVjdG9yIG1vZGUgYWN0dWFsbHkgbWFrZXMgcHJlbHVkZSByZWFkLW9ubHlcbiAgICAgICAgaW5zdHJ1Y3Rvcl9tb2RlOiAhc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICAgfVxuICAgIHwgTW9kZShtb2RlKSA9PiB7Li4uc2V0dGluZ3MsIG1vZGV9XG4gICAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IE1vZGVsLnQ7XG4iLCJvcGVuIEhhejNsY29yZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0ZSA9IEVkaXRvci50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBlcnNpc3RlbnRfc3RhdGUgPSBQZXJzaXN0ZW50WmlwcGVyLnQ7XG5cbmxldCBzY3JhdGNoX2tleSA9IG4gPT4gXCJzY3JhdGNoX1wiICsrIG47XG5cbmxldCBwZXJzaXN0ID0gKGVkaXRvcjogc3RhdGUpID0+IHtcbiAgUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KGVkaXRvci5zdGF0ZS56aXBwZXIpO1xufTtcblxubGV0IHVucGVyc2lzdCA9ICh6aXBwZXI6IHBlcnNpc3RlbnRfc3RhdGUpID0+IHtcbiAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHppcHBlcik7XG4gIEVkaXRvci5pbml0KHppcHBlciwgfnJlYWRfb25seT1mYWxzZSk7XG59O1xuXG5sZXQgc2VyaWFsaXplID0gKHN0YXRlOiBzdGF0ZSkgPT4ge1xuICBwZXJzaXN0KHN0YXRlKSB8PiBzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbn07XG5cbmxldCBkZXNlcmlhbGl6ZSA9IChkYXRhOiBzdHJpbmcpID0+IHtcbiAgU2V4cGxpYi5TZXhwLm9mX3N0cmluZyhkYXRhKSB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHAgfD4gdW5wZXJzaXN0O1xufTtcblxubGV0IGRlc2VyaWFsaXplX29wdCA9IChkYXRhOiBzdHJpbmcpID0+IHtcbiAgbGV0IHNleHAgPVxuICAgIHRyeShTb21lKFNleHBsaWIuU2V4cC5vZl9zdHJpbmcoZGF0YSkgfD4gcGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwKSkge1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbiAgc2V4cCB8PiBPcHRpb24ubWFwKHNleHAgPT4gc2V4cCB8PiB1bnBlcnNpc3QpO1xufTtcblxubGV0IGV4cG9ydCA9IChzdGF0ZTogc3RhdGUpID0+IHtcbiAgc3RhdGUgfD4gcGVyc2lzdCB8PiB5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZTtcbn07XG5cbmxldCBpbXBvcnQgPSAoZGF0YTogc3RyaW5nKSA9PiB7XG4gIGRhdGEgfD4gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgfD4gcGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24gfD4gdW5wZXJzaXN0O1xufTtcblxubGV0IGV4cG9ydF9pbml0ID0gKHN0YXRlOiBzdGF0ZSkgPT4ge1xuICBzdGF0ZSB8PiBwZXJzaXN0IHw+IHNob3dfcGVyc2lzdGVudF9zdGF0ZTtcbn07XG5cbmxldCBta19zdGF0aWNzID1cbiAgICAofnNldHRpbmdzOiBTZXR0aW5ncy50LCBlZGl0b3I6IEVkaXRvci50LCBjdHhfaW5pdDogQ3R4LnQpXG4gICAgOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MgPT4ge1xuICBsZXQgdGVybSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oZWRpdG9yLnN0YXRlLnppcHBlcikgfD4gZnN0O1xuICBsZXQgaW5mb19tYXAgPSBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLmNvcmUsIGN0eF9pbml0LCB0ZXJtKTtcbiAgbGV0IGVycm9yX2lkcyA9XG4gICAgU3RhdGljcy5NYXAuZXJyb3JfaWRzKGVkaXRvci5zdGF0ZS5tZXRhLnRlcm1fcmFuZ2VzLCBpbmZvX21hcCk7XG4gIHt0ZXJtLCBpbmZvX21hcCwgZXJyb3JfaWRzfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2NyYXRjaCA9IChcbiAgaW50LFxuICBsaXN0KFNjcmF0Y2hTbGlkZS5wZXJzaXN0ZW50X3N0YXRlKSxcbiAgbGlzdCgoc3RyaW5nLCBNb2RlbFJlc3VsdC5wZXJzaXN0ZW50KSksXG4pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGRvY3VtZW50YXRpb24gPSAoXG4gIHN0cmluZyxcbiAgbGlzdCgoc3RyaW5nLCBTY3JhdGNoU2xpZGUucGVyc2lzdGVudF9zdGF0ZSkpLFxuICBbQGRlZmF1bHQgW11dIGxpc3QoKHN0cmluZywgTW9kZWxSZXN1bHQucGVyc2lzdGVudCkpLFxuKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzZXR0aW5nczogU2V0dGluZ3MudCxcbiAgc2NyYXRjaCxcbiAgZG9jdW1lbnRhdGlvbixcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5tb2R1bGUgU2VsZWN0aW9uID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2VsbCA9XG4gICAgfCBNYWluRWRpdG9yXG4gICAgfCBSZXN1bHQoTW9kZWxSZXN1bHQuc2VsZWN0aW9uKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBTY3JhdGNoKGNlbGwpXG4gICAgfCBFeGVyY2lzZXMoRXhlcmNpc2UucG9zLCBjZWxsKTtcbn07XG5cbm1vZHVsZSBBY3Rpb24gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBjZWxsID1cbiAgICB8IE1haW5FZGl0b3IoQWN0aW9uLnQpXG4gICAgfCBSZXN1bHQoTW9kZWxSZXN1bHQuYWN0aW9uKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBTY3JhdGNoKGNlbGwpXG4gICAgfCBEb2N1bWVudGF0aW9uKGNlbGwpXG4gICAgfCBFeGVyY2lzZXMoRXhlcmNpc2UucG9zLCBjZWxsKTtcblxuICBtb2R1bGUgRmFpbHVyZSA9IEFjdGlvbi5GYWlsdXJlO1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBTY3JhdGNoKGludCwgbGlzdChTY3JhdGNoU2xpZGUuc3RhdGUpKVxuICB8IERvY3VtZW50YXRpb24oc3RyaW5nLCBsaXN0KChzdHJpbmcsIFNjcmF0Y2hTbGlkZS5zdGF0ZSkpKVxuICB8IEV4ZXJjaXNlcyhpbnQsIGxpc3QoRXhlcmNpc2Uuc3BlYyksIEV4ZXJjaXNlLnN0YXRlKTtcblxubGV0IHVwZGF0ZV9zY3JhdGNoX3N0YXRlID1cbiAgICAoZjogU2NyYXRjaFNsaWRlLnN0YXRlID0+IFNjcmF0Y2hTbGlkZS5zdGF0ZSwgZWRpdG9yczogdCk6IHQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChuLCBzbGlkZXMpID0+IFNjcmF0Y2gobiwgTGlzdFV0aWwubWFwX250aChuLCBmLCBzbGlkZXMpKVxuICB8IERvY3VtZW50YXRpb24oc3RyLCBzbGlkZXMpID0+XG4gICAgRG9jdW1lbnRhdGlvbihcbiAgICAgIHN0cixcbiAgICAgIExpc3RVdGlsLnVwZGF0ZV9hc3NvYygoc3RyLCBmKExpc3QuYXNzb2Moc3RyLCBzbGlkZXMpKSksIHNsaWRlcyksXG4gICAgKVxuICAvLyBUT0RPW01hdHRdOiB1cGRhdGUgZXhlcmNpc2VzXG4gIHwgRXhlcmNpc2VzKF8pID0+IGVkaXRvcnNcbiAgfTtcblxubGV0IGdldF9jdHhfaW5pdCA9ICh+c2V0dGluZ3MgYXMgXzogU2V0dGluZ3MudCwgZWRpdG9yczogdCk6IEN0eC50ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goXylcbiAgfCBFeGVyY2lzZXMoXylcbiAgfCBEb2N1bWVudGF0aW9uKF8pID0+IEJ1aWx0aW5zLmN0eF9pbml0XG4gIH07XG5cbmxldCBnZXRfZW52X2luaXQgPSAofnNldHRpbmdzIGFzIF86IFNldHRpbmdzLnQsIGVkaXRvcnM6IHQpOiBFbnZpcm9ubWVudC50ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goXylcbiAgfCBFeGVyY2lzZXMoXylcbiAgfCBEb2N1bWVudGF0aW9uKF8pID0+IEJ1aWx0aW5zLmVudl9pbml0XG4gIH07XG5cbmxldCBta19zdGF0aWNzID0gKH5zZXR0aW5nczogU2V0dGluZ3MudCwgZWRpdG9yczogdCk6IENhY2hlZFN0YXRpY3MudCA9PiB7XG4gIGxldCBjdHhfaW5pdCA9IGdldF9jdHhfaW5pdCh+c2V0dGluZ3MsIGVkaXRvcnMpO1xuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmNvcmUuc3RhdGljcyA9PiBDYWNoZWRTdGF0aWNzLm1rKFtdKVxuICB8IFNjcmF0Y2goaWR4LCBzbGlkZXMpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShzdHJpbmdfb2ZfaW50KGlkeCkpO1xuICAgIGxldCBlZGl0b3IgPSBMaXN0Lm50aChzbGlkZXMsIGlkeCk7XG4gICAgWyhrZXksIFNjcmF0Y2hTbGlkZS5ta19zdGF0aWNzKH5zZXR0aW5ncywgZWRpdG9yLCBjdHhfaW5pdCkpXVxuICAgIHw+IENhY2hlZFN0YXRpY3MubWs7XG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICBsZXQgZWRpdG9yID0gTGlzdC5hc3NvYyhuYW1lLCBzbGlkZXMpO1xuICAgIFsoa2V5LCBTY3JhdGNoU2xpZGUubWtfc3RhdGljcyh+c2V0dGluZ3MsIGVkaXRvciwgY3R4X2luaXQpKV1cbiAgICB8PiBDYWNoZWRTdGF0aWNzLm1rO1xuICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgPT5cbiAgICBFeGVyY2lzZS5ta19zdGF0aWNzKHNldHRpbmdzLmNvcmUsIGV4ZXJjaXNlKSB8PiBDYWNoZWRTdGF0aWNzLm1rXG4gIH07XG59O1xuXG5sZXQgbG9va3VwX3N0YXRpY3MgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIH5zZWxlY3Rpb246IFNlbGVjdGlvbi50LCB+c3RhdGljcywgZWRpdG9yczogdClcbiAgICA6IENhY2hlZFN0YXRpY3Muc3RhdGljcyA9PlxuICBzd2l0Y2ggKGVkaXRvcnMsIHNlbGVjdGlvbikge1xuICB8IF8gd2hlbiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzID0+IENhY2hlZFN0YXRpY3MuZW1wdHlfc3RhdGljc1xuICB8IChTY3JhdGNoKGlkeCwgXyksIFNjcmF0Y2goXykpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShzdHJpbmdfb2ZfaW50KGlkeCkpO1xuICAgIENhY2hlZFN0YXRpY3MubG9va3VwKHN0YXRpY3MsIGtleSk7XG4gIHwgKERvY3VtZW50YXRpb24obmFtZSwgXyksIFNjcmF0Y2goXykpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICBDYWNoZWRTdGF0aWNzLmxvb2t1cChzdGF0aWNzLCBrZXkpO1xuICB8IChFeGVyY2lzZXMoXyksIEV4ZXJjaXNlcyhwb3MsIF8pKSA9PlxuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfZm9yX3N0YXRpY3MocG9zKTtcbiAgICBDYWNoZWRTdGF0aWNzLmxvb2t1cChzdGF0aWNzLCBrZXkpO1xuICB8IChFeGVyY2lzZXMoXyksIF8pXG4gIHwgKERvY3VtZW50YXRpb24oXyksIF8pXG4gIHwgKFNjcmF0Y2goXyksIF8pID0+IENhY2hlZFN0YXRpY3MuZW1wdHlfc3RhdGljc1xuICB9O1xuXG4vKiBFYWNoIG1vZGUgKGUuZy4gU2NyYXRjaCwgU2Nob29sKSByZXF1aXJlc1xuICAgZWxhYm9yYXRpbmcgb24gc29tZSBudW1iZXIgb2YgZXhwcmVzc2lvbnNcbiAgIHRoYXQgYXJlIHNwbGljZWQgdG9nZXRoZXIgZnJvbSB0aGUgZWRpdG9yc1xuICAgaW4gdGhlIG1vZGUuIEVhY2ggZWxhYm9yYXRlZCBleHByZXNzaW9uXG4gICBpcyBnaXZlbiBhIGtleSBmb3IgbGF0ZXIgbG9va3VwIGJ5IHRoZSBtb2RlLlxuXG4gICBVc2VkIGluIHRoZSBVcGRhdGUgbW9kdWxlICovXG5sZXQgZ2V0X3NwbGljZWRfZWxhYnMgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIHN0YXRpY3MsIGVkaXRvcnM6IHQpXG4gICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKGlkeCwgXykgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KGlkeCB8PiBzdHJpbmdfb2ZfaW50KTtcbiAgICBsZXQgQ2FjaGVkU3RhdGljcy57dGVybSwgaW5mb19tYXAsIF99ID1cbiAgICAgIGxvb2t1cF9zdGF0aWNzKFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH5zZWxlY3Rpb249U2NyYXRjaChNYWluRWRpdG9yKSxcbiAgICAgICAgfnN0YXRpY3MsXG4gICAgICAgIGVkaXRvcnMsXG4gICAgICApO1xuICAgIGxldCBkID0gSW50ZXJmYWNlLmVsYWJvcmF0ZSh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSwgaW5mb19tYXAsIHRlcm0pO1xuICAgIFsoa2V5LCB7ZDogZH0pXTtcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIF8pID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICBsZXQgQ2FjaGVkU3RhdGljcy57dGVybSwgaW5mb19tYXAsIF99ID1cbiAgICAgIGxvb2t1cF9zdGF0aWNzKFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH5zZWxlY3Rpb249U2NyYXRjaChNYWluRWRpdG9yKSxcbiAgICAgICAgfnN0YXRpY3MsXG4gICAgICAgIGVkaXRvcnMsXG4gICAgICApO1xuICAgIGxldCBkID0gSW50ZXJmYWNlLmVsYWJvcmF0ZSh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSwgaW5mb19tYXAsIHRlcm0pO1xuICAgIFsoa2V5LCB7ZDogZH0pXTtcbiAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpID0+XG4gICAgRXhlcmNpc2Uuc3BsaWNlZF9lbGFicyhzZXR0aW5ncy5jb3JlLCBleGVyY2lzZSlcbiAgfTtcblxubGV0IHNldF9pbnN0cnVjdG9yX21vZGUgPSAoZWRpdG9yczogdCwgaW5zdHJ1Y3Rvcl9tb2RlOiBib29sKTogdCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBlZGl0b3JzXG4gIHwgRXhlcmNpc2VzKG4sIHNwZWNzLCBleGVyY2lzZSkgPT5cbiAgICBFeGVyY2lzZXMoXG4gICAgICBuLFxuICAgICAgc3BlY3MsXG4gICAgICBFeGVyY2lzZS5zZXRfaW5zdHJ1Y3Rvcl9tb2RlKGV4ZXJjaXNlLCBpbnN0cnVjdG9yX21vZGUpLFxuICAgIClcbiAgfTtcblxubGV0IHJlc2V0X250aF9zbGlkZSA9IChuLCBzbGlkZXMpID0+IHtcbiAgbGV0IChfLCBpbml0X2VkaXRvcnMsIF8pID0gSW5pdC5zdGFydHVwLnNjcmF0Y2g7XG4gIGxldCBkYXRhID0gTGlzdC5udGgoaW5pdF9lZGl0b3JzLCBuKTtcbiAgbGV0IGluaXRfbnRoID0gU2NyYXRjaFNsaWRlLnVucGVyc2lzdChkYXRhKTtcbiAgVXRpbC5MaXN0VXRpbC5wdXRfbnRoKG4sIGluaXRfbnRoLCBzbGlkZXMpO1xufTtcblxubGV0IHJlc2V0X25hbWVkX3NsaWRlID0gKG5hbWUsIHNsaWRlcykgPT4ge1xuICBsZXQgKF8sIGluaXRfZWRpdG9ycywgXykgPSBJbml0LnN0YXJ0dXAuZG9jdW1lbnRhdGlvbjtcbiAgbGV0IGRhdGEgPSBMaXN0LmFzc29jKG5hbWUsIGluaXRfZWRpdG9ycyk7XG4gIGxldCBpbml0X25hbWUgPSBTY3JhdGNoU2xpZGUudW5wZXJzaXN0KGRhdGEpO1xuICBzbGlkZXMgfD4gTGlzdC5yZW1vdmVfYXNzb2MobmFtZSkgfD4gTGlzdC5jb25zKChuYW1lLCBpbml0X25hbWUpKTtcbn07XG5cbmxldCByZXNldF9jdXJyZW50ID0gKGVkaXRvcnM6IHQsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpOiB0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2gobiwgc2xpZGVzKSA9PiBTY3JhdGNoKG4sIHJlc2V0X250aF9zbGlkZShuLCBzbGlkZXMpKVxuICB8IERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSA9PlxuICAgIERvY3VtZW50YXRpb24obmFtZSwgcmVzZXRfbmFtZWRfc2xpZGUobmFtZSwgc2xpZGVzKSlcbiAgfCBFeGVyY2lzZXMobiwgc3BlY3MsIF8pID0+XG4gICAgRXhlcmNpc2VzKFxuICAgICAgbixcbiAgICAgIHNwZWNzLFxuICAgICAgTGlzdC5udGgoc3BlY3MsIG4pIHw+IEV4ZXJjaXNlLnN0YXRlX29mX3NwZWMofmluc3RydWN0b3JfbW9kZSksXG4gICAgKVxuICB9O1xuXG5sZXQgaW1wb3J0X2N1cnJlbnQgPSAoZWRpdG9yczogdCwgZGF0YTogb3B0aW9uKHN0cmluZykpOiB0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IERvY3VtZW50YXRpb24oXylcbiAgfCBFeGVyY2lzZXMoXykgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlXCIpXG4gIHwgU2NyYXRjaChpZHgsIHNsaWRlcykgPT5cbiAgICBzd2l0Y2ggKGRhdGEpIHtcbiAgICB8IE5vbmUgPT4gZWRpdG9yc1xuICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgbGV0IHN0YXRlID0gU2NyYXRjaFNsaWRlLmltcG9ydChkYXRhKTtcbiAgICAgIGxldCBzbGlkZXMgPSBVdGlsLkxpc3RVdGlsLnB1dF9udGgoaWR4LCBzdGF0ZSwgc2xpZGVzKTtcbiAgICAgIFNjcmF0Y2goaWR4LCBzbGlkZXMpO1xuICAgIH1cbiAgfTtcblxubGV0IHN3aXRjaF9leGFtcGxlX3NsaWRlID0gKGVkaXRvcnM6IHQsIG5hbWU6IHN0cmluZyk6IG9wdGlvbih0KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRXhlcmNpc2VzKF8pID0+IE5vbmVcbiAgfCBEb2N1bWVudGF0aW9uKGN1ciwgc2xpZGVzKVxuICAgICAgd2hlbiAhTGlzdC5tZW1fYXNzb2MobmFtZSwgc2xpZGVzKSB8fCBjdXIgPT0gbmFtZSA9PlxuICAgIE5vbmVcbiAgfCBEb2N1bWVudGF0aW9uKF8sIHNsaWRlcykgPT4gU29tZShEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykpXG4gIH07XG5cbmxldCBnZXRfc2VsZWN0ZWRfZWRpdG9yID1cbiAgICAofnNlbGVjdGlvbjogU2VsZWN0aW9uLnQsIGVkaXRvcnM6IHQsIG1vZGVsX3Jlc3VsdHM6IE1vZGVsUmVzdWx0cy50KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMsIHNlbGVjdGlvbikge1xuICB8IChEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcyksIFNjcmF0Y2goTWFpbkVkaXRvcikpID0+XG4gICAgTGlzdC5hc3NvY19vcHQobmFtZSwgc2xpZGVzKVxuICB8IChEb2N1bWVudGF0aW9uKG4sIF8pLCBTY3JhdGNoKFJlc3VsdChzZWxlY3Rpb24pKSkgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KG4pO1xuICAgIGxldCogcmVzdWx0ID0gTW9kZWxSZXN1bHRzLmxvb2t1cChtb2RlbF9yZXN1bHRzLCBrZXkpO1xuICAgIE1vZGVsUmVzdWx0LmdldF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgcmVzdWx0KTtcbiAgfCAoRG9jdW1lbnRhdGlvbihfKSwgXykgPT4gTm9uZVxuICB8IChTY3JhdGNoKGlkeCwgc2xpZGVzKSwgU2NyYXRjaChNYWluRWRpdG9yKSkgPT5cbiAgICBMaXN0Lm50aF9vcHQoc2xpZGVzLCBpZHgpXG4gIHwgKFNjcmF0Y2gobiwgXyksIFNjcmF0Y2goUmVzdWx0KHNlbGVjdGlvbikpKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoc3RyaW5nX29mX2ludChuKSk7XG4gICAgbGV0KiByZXN1bHQgPSBNb2RlbFJlc3VsdHMubG9va3VwKG1vZGVsX3Jlc3VsdHMsIGtleSk7XG4gICAgTW9kZWxSZXN1bHQuZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCByZXN1bHQpO1xuICB8IChTY3JhdGNoKF8pLCBfKSA9PiBOb25lXG4gIHwgKEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSksIEV4ZXJjaXNlcyhzZWxlY3Rpb24sIE1haW5FZGl0b3IpKSA9PlxuICAgIFNvbWUoRXhlcmNpc2UubWFpbl9lZGl0b3Jfb2Zfc3RhdGUofnNlbGVjdGlvbiwgZXhlcmNpc2UpKVxuICB8IChFeGVyY2lzZXMoXyksIEV4ZXJjaXNlcyhwb3MsIFJlc3VsdChzZWxlY3Rpb24pKSkgPT5cbiAgICBsZXQqIHJlc3VsdCA9XG4gICAgICBNb2RlbFJlc3VsdHMubG9va3VwKG1vZGVsX3Jlc3VsdHMsIEV4ZXJjaXNlLmtleV9mb3Jfc3RhdGljcyhwb3MpKTtcbiAgICBNb2RlbFJlc3VsdC5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHJlc3VsdCk7XG4gIHwgKEV4ZXJjaXNlcyhfKSwgXykgPT4gTm9uZVxuICB9O1xuXG5sZXQgcHV0X3NlbGVjdGVkX2VkaXRvciA9XG4gICAgKFxuICAgICAgfnNlbGVjdGlvbjogU2VsZWN0aW9uLnQsXG4gICAgICBlZGl0b3JzOiB0LFxuICAgICAgbW9kZWxfcmVzdWx0czogTW9kZWxSZXN1bHRzLnQsXG4gICAgICBlZGl0b3I6IEVkaXRvci50LFxuICAgIClcbiAgICA6ICh0LCBNb2RlbFJlc3VsdHMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzLCBzZWxlY3Rpb24pIHtcbiAgfCAoRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpLCBTY3JhdGNoKE1haW5FZGl0b3IpKSA9PlxuICAgIGxldCBzbGlkZXMgPSBMaXN0VXRpbC51cGRhdGVfYXNzb2MoKG5hbWUsIGVkaXRvciksIHNsaWRlcyk7XG4gICAgKERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSwgbW9kZWxfcmVzdWx0cyk7XG4gIHwgKERvY3VtZW50YXRpb24obiwgXyksIFNjcmF0Y2goUmVzdWx0KHNlbGVjdGlvbikpKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkobik7XG4gICAgbGV0IHJlc3VsdHMgPSB7XG4gICAgICBsZXQrIHJlc3VsdCA9IE1vZGVsUmVzdWx0cy5sb29rdXAobW9kZWxfcmVzdWx0cywga2V5KTtcbiAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICBNb2RlbFJlc3VsdC5wdXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHJlc3VsdCwgZWRpdG9yKTtcbiAgICAgIE1vZGVsUmVzdWx0cy5wdXRfcmVzdWx0KGtleSwgcmVzdWx0LCBtb2RlbF9yZXN1bHRzKTtcbiAgICB9O1xuICAgIHN3aXRjaCAocmVzdWx0cykge1xuICAgIHwgU29tZShyZXN1bHRzKSA9PiAoZWRpdG9ycywgcmVzdWx0cylcbiAgICB8IE5vbmUgPT4gKGVkaXRvcnMsIG1vZGVsX3Jlc3VsdHMpXG4gICAgfTtcbiAgfCAoRG9jdW1lbnRhdGlvbihfKSwgXykgPT4gKGVkaXRvcnMsIG1vZGVsX3Jlc3VsdHMpXG4gIHwgKFNjcmF0Y2goaWR4LCBzbGlkZXMpLCBTY3JhdGNoKE1haW5FZGl0b3IpKSA9PlxuICAgIGxldCBzbGlkZXMgPSBMaXN0VXRpbC5tYXBfbnRoKGlkeCwgXyA9PiBlZGl0b3IsIHNsaWRlcyk7XG4gICAgKFNjcmF0Y2goaWR4LCBzbGlkZXMpLCBtb2RlbF9yZXN1bHRzKTtcbiAgfCAoU2NyYXRjaChuLCBfKSwgU2NyYXRjaChSZXN1bHQoc2VsZWN0aW9uKSkpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShzdHJpbmdfb2ZfaW50KG4pKTtcbiAgICBsZXQgcmVzdWx0cyA9IHtcbiAgICAgIGxldCsgcmVzdWx0ID0gTW9kZWxSZXN1bHRzLmxvb2t1cChtb2RlbF9yZXN1bHRzLCBrZXkpO1xuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIE1vZGVsUmVzdWx0LnB1dF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgcmVzdWx0LCBlZGl0b3IpO1xuICAgICAgTW9kZWxSZXN1bHRzLnB1dF9yZXN1bHQoa2V5LCByZXN1bHQsIG1vZGVsX3Jlc3VsdHMpO1xuICAgIH07XG4gICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgfCBTb21lKHJlc3VsdHMpID0+IChlZGl0b3JzLCByZXN1bHRzKVxuICAgIHwgTm9uZSA9PiAoZWRpdG9ycywgbW9kZWxfcmVzdWx0cylcbiAgICB9O1xuICB8IChTY3JhdGNoKF8pLCBfKSA9PiAoZWRpdG9ycywgbW9kZWxfcmVzdWx0cylcbiAgfCAoRXhlcmNpc2VzKG4sIHNwZWMsIGV4ZXJjaXNlKSwgRXhlcmNpc2VzKHBvcywgTWFpbkVkaXRvcikpID0+XG4gICAgbGV0IGV4ZXJjaXNlID0gRXhlcmNpc2UucHV0X21haW5fZWRpdG9yKH5zZWxlY3Rpb249cG9zLCBleGVyY2lzZSwgZWRpdG9yKTtcbiAgICAoRXhlcmNpc2VzKG4sIHNwZWMsIGV4ZXJjaXNlKSwgbW9kZWxfcmVzdWx0cyk7XG4gIHwgKEV4ZXJjaXNlcyhfKSwgRXhlcmNpc2VzKHBvcywgUmVzdWx0KHNlbGVjdGlvbikpKSA9PlxuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfZm9yX3N0YXRpY3MocG9zKTtcbiAgICBsZXQgcmVzdWx0cyA9IHtcbiAgICAgIGxldCsgcmVzdWx0ID0gTW9kZWxSZXN1bHRzLmxvb2t1cChtb2RlbF9yZXN1bHRzLCBrZXkpO1xuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIE1vZGVsUmVzdWx0LnB1dF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgcmVzdWx0LCBlZGl0b3IpO1xuICAgICAgTW9kZWxSZXN1bHRzLnB1dF9yZXN1bHQoa2V5LCByZXN1bHQsIG1vZGVsX3Jlc3VsdHMpO1xuICAgIH07XG4gICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgfCBTb21lKHJlc3VsdHMpID0+IChlZGl0b3JzLCByZXN1bHRzKVxuICAgIHwgTm9uZSA9PiAoZWRpdG9ycywgbW9kZWxfcmVzdWx0cylcbiAgICB9O1xuICB8IChFeGVyY2lzZXMoXyksIF8pID0+IChlZGl0b3JzLCBtb2RlbF9yZXN1bHRzKVxuICB9O1xuXG5sZXQgdXBkYXRlX3NlbGVjdGVkX2VkaXRvciA9XG4gICAgKFxuICAgICAgfnNlbGVjdGlvbjogb3B0aW9uKFNlbGVjdGlvbi50KSxcbiAgICAgIGY6IEVkaXRvci50ID0+IFJlc3VsdC50KEVkaXRvci50LCBBY3Rpb24uRmFpbHVyZS50KSxcbiAgICAgIGVkaXRvcnM6IHQsXG4gICAgICByZXN1bHRzOiBNb2RlbFJlc3VsdHMudCxcbiAgICApXG4gICAgOiBSZXN1bHQudCgodCwgTW9kZWxSZXN1bHRzLnQpLCBBY3Rpb24uRmFpbHVyZS50KSA9PiB7XG4gIHN3aXRjaCAoc2VsZWN0aW9uKSB7XG4gIHwgTm9uZSA9PiBPaygoZWRpdG9ycywgcmVzdWx0cykpXG4gIHwgU29tZShzZWxlY3Rpb24pID0+XG4gICAgc3dpdGNoIChnZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIGVkaXRvcnMsIHJlc3VsdHMpKSB7XG4gICAgfCBOb25lID0+IE9rKChlZGl0b3JzLCByZXN1bHRzKSlcbiAgICB8IFNvbWUoZWRpdG9yKSA9PlxuICAgICAgc3dpdGNoIChmKGVkaXRvcikpIHtcbiAgICAgIHwgT2soZWRpdG9yKSA9PlxuICAgICAgICBsZXQgKGVkaXRvcnMsIHJlc3VsdHMpID1cbiAgICAgICAgICBwdXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIGVkaXRvcnMsIHJlc3VsdHMsIGVkaXRvcik7XG4gICAgICAgIE9rKChlZGl0b3JzLCByZXN1bHRzKSk7XG4gICAgICB8IEVycm9yKGUpID0+IEVycm9yKGUpXG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxubGV0IGdldF9jdXJzb3JfaW5mbyA9XG4gICAgKFxuICAgICAgfnNlbGVjdGlvbjogb3B0aW9uKFNlbGVjdGlvbi50KSxcbiAgICAgIH5zZXR0aW5ncyxcbiAgICAgIGVkaXRvcnM6IHQsXG4gICAgICBtb2RlbF9yZXN1bHRzOiBNb2RlbFJlc3VsdHMudCxcbiAgICAgIHN0YXRpY3M6IENhY2hlZFN0YXRpY3MudCxcbiAgICApID0+IHtcbiAgbGV0KiBzZWxlY3Rpb24gPSBzZWxlY3Rpb247XG4gIGxldCBzdGF0aWNzID0gbG9va3VwX3N0YXRpY3MofnNldHRpbmdzLCB+c2VsZWN0aW9uLCB+c3RhdGljcywgZWRpdG9ycyk7XG4gIGxldCogZWRpdG9yID0gZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCBlZGl0b3JzLCBtb2RlbF9yZXN1bHRzKTtcbiAgSW5kaWNhdGVkLmNpX29mKGVkaXRvci5zdGF0ZS56aXBwZXIsIHN0YXRpY3MuaW5mb19tYXApO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhwbGFpblRoaXNNb2RlbDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB1cGRhdGUgPVxuICB8IFNwZWNpZmljaXR5T3Blbihib29sKVxuICB8IFRvZ2dsZUV4cGxhbmF0aW9uRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGZlZWRiYWNrX29wdGlvbilcbiAgfCBUb2dnbGVFeGFtcGxlRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGV4YW1wbGVfaWQsIGZlZWRiYWNrX29wdGlvbilcbiAgfCBVcGRhdGVHcm91cFNlbGVjdGlvbihncm91cF9pZCwgZm9ybV9pZCk7XG5cbmxldCBzZXRfdXBkYXRlID1cbiAgICAoZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LCB1OiB1cGRhdGUpOiBFeHBsYWluVGhpc01vZGVsLnQgPT4ge1xuICBzd2l0Y2ggKHUpIHtcbiAgfCBTcGVjaWZpY2l0eU9wZW4oYikgPT4gey4uLmV4cGxhaW5UaGlzTW9kZWwsIHNwZWNpZmljaXR5X29wZW46IGJ9XG4gIHwgVG9nZ2xlRXhwbGFuYXRpb25GZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgZmVlZGJhY2tfb3B0aW9uKSA9PlxuICAgIGxldCAocHJlLCBmb3JtLCBwb3N0KSA9XG4gICAgICBMaXN0VXRpbC5zcGxpdChleHBsYWluVGhpc01vZGVsLmZvcm1zLCBmID0+XG4gICAgICAgIGYuZm9ybSA9PSBmb3JtX2lkICYmIGYuZ3JvdXAgPT0gZ3JvdXBfaWRcbiAgICAgICk7XG4gICAgbGV0IGZvcm0gPVxuICAgICAgc3dpdGNoIChmb3JtKSB7XG4gICAgICB8IFNvbWUoZm9ybSkgPT5cbiAgICAgICAgbGV0IGZlZWRiYWNrID1cbiAgICAgICAgICBzd2l0Y2ggKGZvcm0uZXhwbGFuYXRpb25fZmVlZGJhY2ssIGZlZWRiYWNrX29wdGlvbikge1xuICAgICAgICAgIHwgKFNvbWUoVGh1bWJzVXApLCBUaHVtYnNEb3duKVxuICAgICAgICAgIHwgKFNvbWUoVGh1bWJzRG93biksIFRodW1ic1VwKVxuICAgICAgICAgIHwgKE5vbmUsIF8pID0+IFNvbWUoZmVlZGJhY2tfb3B0aW9uKVxuICAgICAgICAgIHwgKFNvbWUoVGh1bWJzVXApLCBUaHVtYnNVcClcbiAgICAgICAgICB8IChTb21lKFRodW1ic0Rvd24pLCBUaHVtYnNEb3duKSA9PiBOb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgey4uLmZvcm0sIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBmZWVkYmFja307XG4gICAgICB8IE5vbmUgPT4ge1xuICAgICAgICAgIGdyb3VwOiBncm91cF9pZCxcbiAgICAgICAgICBmb3JtOiBmb3JtX2lkLFxuICAgICAgICAgIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBTb21lKGZlZWRiYWNrX29wdGlvbiksXG4gICAgICAgICAgZXhhbXBsZXM6IFtdLFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIHsuLi5leHBsYWluVGhpc01vZGVsLCBmb3JtczogcHJlIEAgW2Zvcm1dIEAgcG9zdH07XG4gIHwgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBmZWVkYmFja19vcHRpb24pID0+XG4gICAgbGV0IChwcmVfZm9ybSwgZm9ybSwgcG9zdF9mb3JtKSA9XG4gICAgICBMaXN0VXRpbC5zcGxpdChleHBsYWluVGhpc01vZGVsLmZvcm1zLCBmID0+XG4gICAgICAgIGYuZm9ybSA9PSBmb3JtX2lkICYmIGYuZ3JvdXAgPT0gZ3JvdXBfaWRcbiAgICAgICk7XG4gICAgbGV0IGZvcm06IGZvcm1fbW9kZWwgPVxuICAgICAgc3dpdGNoIChmb3JtKSB7XG4gICAgICB8IFNvbWUoZm9ybSkgPT5cbiAgICAgICAgbGV0IChwcmVfZXhhbXBsZSwgZXhhbXBsZSwgcG9zdF9leGFtcGxlKSA9XG4gICAgICAgICAgTGlzdFV0aWwuc3BsaXQoZm9ybS5leGFtcGxlcywgZSA9PiBlLnN1Yl9pZCA9PSBleGFtcGxlX2lkKTtcbiAgICAgICAgbGV0IGV4YW1wbGVzOiBsaXN0KGV4YW1wbGVfbW9kZWwpID1cbiAgICAgICAgICBzd2l0Y2ggKGV4YW1wbGUpIHtcbiAgICAgICAgICB8IFNvbWUoZXhhbXBsZSkgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoZXhhbXBsZS5mZWVkYmFjaywgZmVlZGJhY2tfb3B0aW9uKSB7XG4gICAgICAgICAgICB8IChUaHVtYnNVcCwgVGh1bWJzRG93bilcbiAgICAgICAgICAgIHwgKFRodW1ic0Rvd24sIFRodW1ic1VwKSA9PlxuICAgICAgICAgICAgICBwcmVfZXhhbXBsZVxuICAgICAgICAgICAgICBAIFt7Li4uZXhhbXBsZSwgZmVlZGJhY2s6IGZlZWRiYWNrX29wdGlvbn1dXG4gICAgICAgICAgICAgIEAgcG9zdF9leGFtcGxlXG4gICAgICAgICAgICB8IChUaHVtYnNVcCwgVGh1bWJzVXApXG4gICAgICAgICAgICB8IChUaHVtYnNEb3duLCBUaHVtYnNEb3duKSA9PiBwcmVfZXhhbXBsZSBAIHBvc3RfZXhhbXBsZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgcHJlX2V4YW1wbGVcbiAgICAgICAgICAgIEAgW3tzdWJfaWQ6IGV4YW1wbGVfaWQsIGZlZWRiYWNrOiBmZWVkYmFja19vcHRpb259XVxuICAgICAgICAgICAgQCBwb3N0X2V4YW1wbGVcbiAgICAgICAgICB9O1xuICAgICAgICB7Li4uZm9ybSwgZXhhbXBsZXN9O1xuICAgICAgfCBOb25lID0+IHtcbiAgICAgICAgICBncm91cDogZ3JvdXBfaWQsXG4gICAgICAgICAgZm9ybTogZm9ybV9pZCxcbiAgICAgICAgICBleHBsYW5hdGlvbl9mZWVkYmFjazogTm9uZSxcbiAgICAgICAgICBleGFtcGxlczogW3tzdWJfaWQ6IGV4YW1wbGVfaWQsIGZlZWRiYWNrOiBmZWVkYmFja19vcHRpb259XSxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB7Li4uZXhwbGFpblRoaXNNb2RlbCwgZm9ybXM6IHByZV9mb3JtIEAgW2Zvcm1dIEAgcG9zdF9mb3JtfTtcbiAgfCBVcGRhdGVHcm91cFNlbGVjdGlvbihncm91cF9pZCwgZm9ybV9pZCkgPT5cbiAgICBsZXQgKHByZV9ncm91cCwgX2dyb3VwLCBwb3N0X2dyb3VwKSA9XG4gICAgICBMaXN0VXRpbC5zcGxpdChleHBsYWluVGhpc01vZGVsLmdyb3VwcywgZyA9PiBnLmdyb3VwID09IGdyb3VwX2lkKTtcbiAgICB7XG4gICAgICAuLi5leHBsYWluVGhpc01vZGVsLFxuICAgICAgZ3JvdXBzOlxuICAgICAgICBwcmVfZ3JvdXAgQCBbe2dyb3VwOiBncm91cF9pZCwgc2VsZWN0ZWQ6IGZvcm1faWR9XSBAIHBvc3RfZ3JvdXAsXG4gICAgfTtcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQHdhcm5pbmcgXCItMzNcIl1cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgcm93X2hlaWdodDogZmxvYXQsXG4gIGNvbF93aWR0aDogZmxvYXQsXG59O1xuXG5sZXQgaW5pdCA9IHtyb3dfaGVpZ2h0OiAxMC4sIGNvbF93aWR0aDogMTAufTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBnZXRfZWxlbV9ieV9pZCA9IGlkID0+IHtcbiAgbGV0IGRvYyA9IERvbV9odG1sLmRvY3VtZW50O1xuICBKcy5PcHQuZ2V0KFxuICAgIGRvYyMjZ2V0RWxlbWVudEJ5SWQoSnMuc3RyaW5nKGlkKSksXG4gICAgKCkgPT4ge1xuICAgICAgcHJpbnRfZW5kbGluZShpZCk7XG4gICAgICBhc3NlcnQoZmFsc2UpO1xuICAgIH0sXG4gICk7XG59O1xuXG5sZXQgZ2V0X2NoaWxkX3dpdGhfY2xhc3MgPSAoZWxlbWVudDogSnMudChEb21faHRtbC5lbGVtZW50KSwgY2xhc3NOYW1lKSA9PiB7XG4gIGxldCByZWMgbG9vcCA9IChzaWJsaW5nOiBKcy50KERvbV9odG1sLmVsZW1lbnQpKSA9PlxuICAgIGlmIChKcy50b19ib29sKHNpYmxpbmcjIy5jbGFzc0xpc3QjI2NvbnRhaW5zKEpzLnN0cmluZyhjbGFzc05hbWUpKSkpIHtcbiAgICAgIFNvbWUoc2libGluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvb3AoXG4gICAgICAgIEpzLk9wdC5nZXQoc2libGluZyMjLm5leHRTaWJsaW5nLCAoKSA9PiBmYWlsd2l0aChcIm5vIHNpYmxpbmdcIikpXG4gICAgICAgIHw+IEpzLlVuc2FmZS5jb2VyY2UsXG4gICAgICApO1xuICAgIH07XG4gIGxvb3AoXG4gICAgSnMuT3B0LmdldChlbGVtZW50IyMuZmlyc3RDaGlsZCwgKCkgPT4gZmFpbHdpdGgoXCJubyBjaGlsZFwiKSlcbiAgICB8PiBKcy5VbnNhZmUuY29lcmNlLFxuICApO1xufTtcblxubGV0IGRhdGVfbm93ID0gKCkgPT4ge1xuICBbJWpzIG5ldyBKcy5kYXRlX25vd107XG59O1xuXG5sZXQgdGltZXN0YW1wID0gKCkgPT4gZGF0ZV9ub3coKSMjdmFsdWVPZjtcblxubGV0IGdldF9rZXkgPSBldnQgPT5cbiAgSnMudG9fc3RyaW5nKEpzLk9wdGRlZi5nZXQoZXZ0IyMua2V5LCAoKSA9PiBmYWlsd2l0aChcIkpzVXRpbC5nZXRfa2V5XCIpKSk7XG5cbmxldCBjdHJsX2hlbGQgPSBldnQgPT4gSnMudG9fYm9vbChldnQjIy5jdHJsS2V5KTtcbmxldCBzaGlmdF9oZWxkID0gZXZ0ID0+IEpzLnRvX2Jvb2woZXZ0IyMuc2hpZnRLZXkpO1xubGV0IGFsdF9oZWxkID0gZXZ0ID0+IEpzLnRvX2Jvb2woZXZ0IyMuYWx0S2V5KTtcbmxldCBtZXRhX2hlbGQgPSBldnQgPT4gSnMudG9fYm9vbChldnQjIy5tZXRhS2V5KTtcblxubGV0IG51bV9jbGlja3MgPSAoZXZ0OiBKcy50KEpzX29mX29jYW1sLkRvbV9odG1sLm1vdXNlRXZlbnQpKTogaW50ID0+XG4gIEpzLlVuc2FmZS5jb2VyY2UoZXZ0KSMjLmRldGFpbDtcblxubGV0IGlzX2RvdWJsZV9jbGljayA9IChldnQ6IEpzLnQoSnNfb2Zfb2NhbWwuRG9tX2h0bWwubW91c2VFdmVudCkpOiBib29sID0+XG4gIG51bV9jbGlja3MoZXZ0KSA9PSAyO1xuXG5sZXQgZG93bmxvYWRfc3RyaW5nX2ZpbGUgPVxuICAgICh+ZmlsZW5hbWU6IHN0cmluZywgfmNvbnRlbnRfdHlwZTogc3RyaW5nLCB+Y29udGVudHM6IHN0cmluZykgPT4ge1xuICBsZXQgYmxvYiA9IEZpbGUuYmxvYl9mcm9tX3N0cmluZyh+Y29udGVudFR5cGU9Y29udGVudF90eXBlLCBjb250ZW50cyk7XG4gIGxldCB1cmwgPSBEb21faHRtbC53aW5kb3cjIy5fVVJMIyNjcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgbGV0IGxpbmsgPSBEb21faHRtbC5jcmVhdGVBKERvbV9odG1sLmRvY3VtZW50KTtcbiAgbGluayMjLmhyZWYgOj0gdXJsO1xuICBsaW5rIyNzZXRBdHRyaWJ1dGUoSnMuc3RyaW5nKFwiZG93bmxvYWRcIiksIEpzLnN0cmluZyhmaWxlbmFtZSkpO1xuICBsaW5rIyMub25jbGljayA6PSBEb21faHRtbC5oYW5kbGVyKF8gPT4ge0pzLl90cnVlfSk7XG4gIGxpbmsjI2NsaWNrO1xufTtcblxubGV0IGRvd25sb2FkX2pzb24gPSAoZmlsZW5hbWUsIGNvbnRlbnRzKTogdW5pdCA9PlxuICBkb3dubG9hZF9zdHJpbmdfZmlsZShcbiAgICB+ZmlsZW5hbWU9ZmlsZW5hbWUgKysgXCIuanNvblwiLFxuICAgIH5jb250ZW50X3R5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgfmNvbnRlbnRzPWNvbnRlbnRzIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZyxcbiAgKTtcblxubGV0IHJlYWRfZmlsZSA9IChmaWxlLCBrKSA9PiB7XG4gIGxldCByZWFkZXIgPSBbJWpzIG5ldyBGaWxlLmZpbGVSZWFkZXJdO1xuICByZWFkZXIjI3JlYWRBc1RleHQoZmlsZSk7XG4gIHJlYWRlciMjLm9ubG9hZCA6PVxuICAgIERvbS5oYW5kbGVyKF8gPT4ge1xuICAgICAgbGV0IHJlc3VsdCA9IHJlYWRlciMjLnJlc3VsdDtcbiAgICAgIGxldCBvcHRpb24gPSBKcy5PcHQudG9fb3B0aW9uKEZpbGUuQ29lcmNlVG8uc3RyaW5nKHJlc3VsdCkpO1xuICAgICAgbGV0IGRhdGEgPSBPcHRpb24ubWFwKEpzLnRvX3N0cmluZywgb3B0aW9uKTtcbiAgICAgIGsoZGF0YSk7XG4gICAgICBKcy5fdHJ1ZTtcbiAgICB9KTtcbn07XG5cbmxldCBzZXRfbG9jYWxzdG9yZSA9IChrOiBzdHJpbmcsIHY6IHN0cmluZyk6IHVuaXQgPT4ge1xuICBsZXQgbG9jYWxfc3RvcmUgPVxuICAgIEpzLk9wdGRlZi5nZXQoRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlLCAoKSA9PiBhc3NlcnQoZmFsc2UpKTtcbiAgbG9jYWxfc3RvcmUjI3NldEl0ZW0oSnMuc3RyaW5nKGspLCBKcy5zdHJpbmcodikpO1xufTtcblxubGV0IGdldF9sb2NhbHN0b3JlID0gKGs6IHN0cmluZyk6IG9wdGlvbihzdHJpbmcpID0+XG4gIHRyeSh7XG4gICAgbGV0IGxvY2FsX3N0b3JlID1cbiAgICAgIEpzLk9wdGRlZi5nZXQoRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlLCAoKSA9PiBhc3NlcnQoZmFsc2UpKTtcbiAgICBsb2NhbF9zdG9yZSMjZ2V0SXRlbShKcy5zdHJpbmcoaykpXG4gICAgfD4gKFxuICAgICAgeCA9PiBKcy5PcHQuZ2V0KHgsICgpID0+IGFzc2VydChmYWxzZSkpIHw+IEpzLnRvX3N0cmluZyB8PiBPcHRpb24uc29tZVxuICAgICk7XG4gIH0pIHtcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxubGV0IGNsZWFyX2xvY2Fsc3RvcmUgPSAoKSA9PiB7XG4gIGxldCBsb2NhbF9zdG9yZSA9XG4gICAgSnMuT3B0ZGVmLmdldChEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UsICgpID0+IGFzc2VydChmYWxzZSkpO1xuICBsb2NhbF9zdG9yZSMjY2xlYXI7XG59O1xuXG5sZXQgY29uZmlybSA9IG1lc3NhZ2UgPT4ge1xuICBKcy50b19ib29sKERvbV9odG1sLndpbmRvdyMjY29uZmlybShKcy5zdHJpbmcobWVzc2FnZSkpKTtcbn07XG5cbmxldCBsb2cgPSBkYXRhID0+IHtcbiAgRmlyZWJ1Zy5jb25zb2xlIyNsb2coZGF0YSk7XG59O1xuXG5sZXQgY2xpcGJvYXJkX3NoaW1faWQgPSBcImNsaXBib2FyZC1zaGltXCI7XG5cbmxldCBmb2N1c19jbGlwYm9hcmRfc2hpbSA9ICgpID0+IGdldF9lbGVtX2J5X2lkKGNsaXBib2FyZF9zaGltX2lkKSMjZm9jdXM7XG5cbmxldCBjbGlwYm9hcmRfc2hpbSA9IHtcbiAgTm9kZS50ZXh0YXJlYSh+YXR0cj1BdHRyLm1hbnkoW0F0dHIuaWQoY2xpcGJvYXJkX3NoaW1faWQpXSksIFtdKTtcbn07XG5cbmxldCBjb3B5ID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gIGZvY3VzX2NsaXBib2FyZF9zaGltKCk7XG4gIERvbV9odG1sLmRvY3VtZW50IyNleGVjQ29tbWFuZChcbiAgICBKcy5zdHJpbmcoXCJzZWxlY3RBbGxcIiksXG4gICAgSnMuYm9vbChmYWxzZSksXG4gICAgSnMuT3B0LmVtcHR5LFxuICApO1xuICBEb21faHRtbC5kb2N1bWVudCMjZXhlY0NvbW1hbmQoXG4gICAgSnMuc3RyaW5nKFwiaW5zZXJ0VGV4dFwiKSxcbiAgICBKcy5ib29sKGZhbHNlKSxcbiAgICBKcy5PcHQub3B0aW9uKFNvbWUoSnMuc3RyaW5nKHN0cikpKSxcbiAgKTtcbiAgRG9tX2h0bWwuZG9jdW1lbnQjI2V4ZWNDb21tYW5kKFxuICAgIEpzLnN0cmluZyhcInNlbGVjdEFsbFwiKSxcbiAgICBKcy5ib29sKGZhbHNlKSxcbiAgICBKcy5PcHQuZW1wdHksXG4gICk7XG59O1xuXG5sZXQgc2Nyb2xsX2N1cnNvcl9pbnRvX3ZpZXdfaWZfbmVlZGVkID0gKCkgPT5cbiAgdHJ5KHtcbiAgICBsZXQgY2FyZXRfZWxlbSA9IGdldF9lbGVtX2J5X2lkKFwiY2FyZXRcIik7XG4gICAgbGV0IG1haW4gPSBnZXRfZWxlbV9ieV9pZChcIm1haW5cIik7XG4gICAgbGV0IG1haW5fcmVjdCA9IG1haW4jI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBsZXQgY2FyZXRfcmVjdCA9IGNhcmV0X2VsZW0jI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcblxuICAgIGlmIChjYXJldF9yZWN0IyMudG9wIDwgbWFpbl9yZWN0IyMudG9wKSB7XG4gICAgICBjYXJldF9lbGVtIyNzY3JvbGxJbnRvVmlldyhKcy5fdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChjYXJldF9yZWN0IyMuYm90dG9tID4gbWFpbl9yZWN0IyMuYm90dG9tKSB7XG4gICAgICBjYXJldF9lbGVtIyNzY3JvbGxJbnRvVmlldyhKcy5fZmFsc2UpO1xuICAgIH07XG4gIH0pIHtcbiAgfCBBc3NlcnRfZmFpbHVyZShfKSA9PiAoKVxuICB9O1xuXG5tb2R1bGUgRnJhZ21lbnQgPSB7XG4gIGxldCBzZXRfY3VycmVudCA9IGZyYWcgPT4ge1xuICAgIGxldCBmcmFnID1cbiAgICAgIHN3aXRjaCAoZnJhZykge1xuICAgICAgfCBcIlwiID0+IFwiXCJcbiAgICAgIHwgZnJhZyA9PiBcIiNcIiArKyBmcmFnXG4gICAgICB9O1xuICAgIGxldCBoaXN0b3J5ID0gSnNfb2Zfb2NhbWwuRG9tX2h0bWwud2luZG93IyMuaGlzdG9yeTtcbiAgICBoaXN0b3J5IyNwdXNoU3RhdGUoSnMubnVsbCwgSnMuc3RyaW5nKFwiXCIpLCBKcy5zb21lKEpzLnN0cmluZyhmcmFnKSkpO1xuICB9O1xuXG4gIGxldCBnZXRfY3VycmVudCA9ICgpID0+IHtcbiAgICBsZXQgZnJhZ21lbnRfb2ZfdXJsID0gKHVybDogVXJsLnVybCk6IHN0cmluZyA9PlxuICAgICAgc3dpdGNoICh1cmwpIHtcbiAgICAgIHwgSHR0cCh7aHVfZnJhZ21lbnQ6IHN0ciwgX30pXG4gICAgICB8IEh0dHBzKHtodV9mcmFnbWVudDogc3RyLCBffSlcbiAgICAgIHwgRmlsZSh7ZnVfZnJhZ21lbnQ6IHN0ciwgX30pID0+IHN0clxuICAgICAgfTtcbiAgICBVcmwuQ3VycmVudC5nZXQoKSB8PiBPcHRpb24ubWFwKGZyYWdtZW50X29mX3VybCk7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbi8vIEEgZ2VuZXJpYyBrZXktdmFsdWUgc3RvcmUgZm9yIHNhdmluZy9sb2FkaW5nIGRhdGEgdG8vZnJvbSBsb2NhbCBzdG9yYWdlXG5tb2R1bGUgR2VuZXJpYyA9IHtcbiAgbGV0IHByZWZpeDogc3RyaW5nID0gXCJLRVlfU1RPUkVfXCI7XG5cbiAgbGV0IGZ1bGxfa2V5ID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBwcmVmaXggKysga2V5O1xuICB9O1xuXG4gIGxldCBzYXZlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdW5pdCA9PlxuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShmdWxsX2tleShrZXkpLCB2YWx1ZSk7XG5cbiAgbGV0IGxvYWQgPSAoa2V5OiBzdHJpbmcpOiBvcHRpb24oc3RyaW5nKSA9PlxuICAgIEpzVXRpbC5nZXRfbG9jYWxzdG9yZShmdWxsX2tleShrZXkpKTtcbn07XG5cbi8vIFNldHRpbmdzIHNlcmlhbGl6YXRpb25cbm1vZHVsZSBTZXR0aW5ncyA9IHtcbiAgbGV0IHNhdmVfc2V0dGluZ3Nfa2V5OiBzdHJpbmcgPSBcIlNFVFRJTkdTXCI7XG5cbiAgbGV0IGRlZmF1bHQgPSBJbml0LnN0YXJ0dXAuc2V0dGluZ3M7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHNldHRpbmdzID0+XG4gICAgc2V0dGluZ3MgfD4gU2V0dGluZ3Muc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG5cbiAgbGV0IGRlc2VyaWFsaXplID0gZGF0YSA9PlxuICAgIHRyeShcbiAgICAgIGRhdGFcbiAgICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICAgIHw+IFNldHRpbmdzLnRfb2Zfc2V4cFxuICAgICAgfD4gU2V0dGluZ3MuTW9kZWwuZml4X2luc3RydWN0b3JfbW9kZVxuICAgICkge1xuICAgIHwgXyA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcIkNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBzZXR0aW5ncy5cIik7XG4gICAgICBkZWZhdWx0O1xuICAgIH07XG5cbiAgbGV0IHNhdmUgPSAoc2V0dGluZ3M6IFNldHRpbmdzLnQpOiB1bml0ID0+XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKHNhdmVfc2V0dGluZ3Nfa2V5LCBzZXJpYWxpemUoc2V0dGluZ3MpKTtcblxuICBsZXQgaW5pdCA9ICgpID0+IHtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoc2F2ZV9zZXR0aW5nc19rZXksIHNlcmlhbGl6ZShkZWZhdWx0KSk7XG4gICAgZGVmYXVsdDtcbiAgfTtcblxuICBsZXQgbG9hZCA9ICgpOiBTZXR0aW5ncy50ID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9zZXR0aW5nc19rZXkpKSB7XG4gICAgfCBOb25lID0+IGluaXQoKVxuICAgIHwgU29tZShkYXRhKSA9PiBkZXNlcmlhbGl6ZShkYXRhKVxuICAgIH07XG5cbiAgbGV0IGV4cG9ydCA9ICgpID0+IE9wdGlvbi5nZXQoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfc2V0dGluZ3Nfa2V5KSk7XG4gIGxldCBpbXBvcnQgPSBkYXRhID0+IHtcbiAgICBsZXQgc2V0dGluZ3MgPSBkZXNlcmlhbGl6ZShkYXRhKTtcbiAgICBzYXZlKHNldHRpbmdzKTtcbiAgICBzZXR0aW5ncztcbiAgfTtcbn07XG5cbi8vIEV4cGxhaW5UaGlzTW9kZWwgc2VyaWFsaXphdGlvblxubW9kdWxlIEV4cGxhaW5UaGlzTW9kZWwgPSB7XG4gIGxldCBzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5OiBzdHJpbmcgPSBcIkV4cGxhaW5UaGlzTW9kZWxcIjtcblxuICBsZXQgc2VyaWFsaXplID0gZXhwbGFpblRoaXNNb2RlbCA9PlxuICAgIGV4cGxhaW5UaGlzTW9kZWwgfD4gRXhwbGFpblRoaXNNb2RlbC5zZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcblxuICBsZXQgZGVzZXJpYWxpemUgPSBkYXRhID0+XG4gICAgdHJ5KGRhdGEgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBFeHBsYWluVGhpc01vZGVsLnRfb2Zfc2V4cCkge1xuICAgIHwgXyA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcIkNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBFeHBsYWluVGhpc01vZGVsLlwiKTtcbiAgICAgIEV4cGxhaW5UaGlzTW9kZWwuaW5pdDtcbiAgICB9O1xuXG4gIGxldCBzYXZlID0gKGV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCk6IHVuaXQgPT5cbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoXG4gICAgICBzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5LFxuICAgICAgc2VyaWFsaXplKGV4cGxhaW5UaGlzTW9kZWwpLFxuICAgICk7XG5cbiAgbGV0IGluaXQgPSAoKSA9PiB7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKFxuICAgICAgc2F2ZV9FeHBsYWluVGhpc01vZGVsX2tleSxcbiAgICAgIHNlcmlhbGl6ZShFeHBsYWluVGhpc01vZGVsLmluaXQpLFxuICAgICk7XG4gICAgRXhwbGFpblRoaXNNb2RlbC5pbml0O1xuICB9O1xuXG4gIGxldCBsb2FkID0gKCk6IEV4cGxhaW5UaGlzTW9kZWwudCA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXkpKSB7XG4gICAgfCBOb25lID0+IGluaXQoKVxuICAgIHwgU29tZShkYXRhKSA9PiBkZXNlcmlhbGl6ZShkYXRhKVxuICAgIH07XG5cbiAgbGV0IHJlYyBleHBvcnQgPSAoKSA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXkpKSB7XG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgXyA9IGluaXQoKTtcbiAgICAgIGV4cG9ydCgpO1xuICAgIHwgU29tZShkYXRhKSA9PiBkYXRhXG4gICAgfTtcblxuICBsZXQgaW1wb3J0ID0gZGF0YSA9PiB7XG4gICAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBkZXNlcmlhbGl6ZShkYXRhKTtcbiAgICBzYXZlKGV4cGxhaW5UaGlzTW9kZWwpO1xuICB9O1xufTtcblxuLy8gU2NyYXRjaCBtb2RlIHNlcmlhbGl6YXRpb25cbm1vZHVsZSBTY3JhdGNoID0ge1xuICBsZXQgc2F2ZV9zY3JhdGNoX2tleTogc3RyaW5nID0gXCJTQVZFX1NDUkFUQ0hcIjtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudCA9IFBlcnNpc3RlbnREYXRhLnNjcmF0Y2g7XG5cbiAgbGV0IHRvX3BlcnNpc3RlbnQgPSAoKGlkeCwgc2xpZGVzLCByZXN1bHRzKSk6IHBlcnNpc3RlbnQgPT4gKFxuICAgIGlkeCxcbiAgICBMaXN0Lm1hcChTY3JhdGNoU2xpZGUucGVyc2lzdCwgc2xpZGVzKSxcbiAgICByZXN1bHRzXG4gICAgfD4gTW9kZWxSZXN1bHRzLm1hcChNb2RlbFJlc3VsdC50b19wZXJzaXN0ZW50KVxuICAgIHw+IE1vZGVsUmVzdWx0cy5iaW5kaW5ncyxcbiAgKTtcblxuICBsZXQgb2ZfcGVyc2lzdGVudCA9ICh+c2V0dGluZ3MsIChpZHgsIHNsaWRlcywgcmVzdWx0cyk6IHBlcnNpc3RlbnQpID0+IHtcbiAgICAoXG4gICAgICBpZHgsXG4gICAgICBMaXN0Lm1hcChTY3JhdGNoU2xpZGUudW5wZXJzaXN0LCBzbGlkZXMpLFxuICAgICAgcmVzdWx0c1xuICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgIHw+IE1vZGVsUmVzdWx0cy5vZl9zZXFcbiAgICAgIHw+IE1vZGVsUmVzdWx0cy5tYXAoTW9kZWxSZXN1bHQub2ZfcGVyc2lzdGVudCh+c2V0dGluZ3MpKSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBzZXJpYWxpemUgPSBzY3JhdGNoID0+IHtcbiAgICBzY3JhdGNoIHw+IHRvX3BlcnNpc3RlbnQgfD4gc2V4cF9vZl9wZXJzaXN0ZW50IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplID0gZGF0YSA9PiB7XG4gICAgZGF0YSB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHBlcnNpc3RlbnRfb2Zfc2V4cCB8PiBvZl9wZXJzaXN0ZW50O1xuICB9O1xuXG4gIGxldCBzYXZlID0gKHNjcmF0Y2gpOiB1bml0ID0+IHtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoc2F2ZV9zY3JhdGNoX2tleSwgc2VyaWFsaXplKHNjcmF0Y2gpKTtcbiAgfTtcblxuICBsZXQgaW5pdCA9ICh+c2V0dGluZ3MpID0+IHtcbiAgICBsZXQgc2NyYXRjaCA9IG9mX3BlcnNpc3RlbnQofnNldHRpbmdzLCBJbml0LnN0YXJ0dXAuc2NyYXRjaCk7XG4gICAgc2F2ZShzY3JhdGNoKTtcbiAgICBzY3JhdGNoO1xuICB9O1xuXG4gIGxldCBsb2FkID0gKH5zZXR0aW5ncykgPT5cbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShzYXZlX3NjcmF0Y2hfa2V5KSkge1xuICAgIHwgTm9uZSA9PiBpbml0KH5zZXR0aW5ncylcbiAgICB8IFNvbWUoZGF0YSkgPT5cbiAgICAgIHRyeShkZXNlcmlhbGl6ZSh+c2V0dGluZ3MsIGRhdGEpKSB7XG4gICAgICB8IF8gPT4gaW5pdCh+c2V0dGluZ3MpXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZXhwb3J0ID0gKH5zZXR0aW5ncykgPT4gc2VyaWFsaXplKGxvYWQofnNldHRpbmdzKSk7XG4gIGxldCBpbXBvcnQgPSAofnNldHRpbmdzLCBkYXRhKSA9PiBzYXZlKGRlc2VyaWFsaXplKH5zZXR0aW5ncywgZGF0YSkpO1xufTtcblxubW9kdWxlIERvY3VtZW50YXRpb24gPSB7XG4gIGxldCBzYXZlX2RvY3VtZW50YXRpb25fa2V5OiBzdHJpbmcgPSBcIlNBVkVfRE9DVU1FTlRBVElPTlwiO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50ID0gUGVyc2lzdGVudERhdGEuZG9jdW1lbnRhdGlvbjtcblxuICBsZXQgcGVyc2lzdCA9ICgobmFtZSwgZWRpdG9yOiBFZGl0b3IudCkpID0+IHtcbiAgICAobmFtZSwgUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KGVkaXRvci5zdGF0ZS56aXBwZXIpKTtcbiAgfTtcblxuICBsZXQgdW5wZXJzaXN0ID0gKChuYW1lLCB6aXBwZXIpKSA9PiB7XG4gICAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHppcHBlcik7XG4gICAgKG5hbWUsIEVkaXRvci5pbml0KHppcHBlciwgfnJlYWRfb25seT1mYWxzZSkpO1xuICB9O1xuXG4gIGxldCB0b19wZXJzaXN0ZW50ID0gKChzdHJpbmcsIHNsaWRlcywgcmVzdWx0cykpOiBwZXJzaXN0ZW50ID0+IChcbiAgICBzdHJpbmcsXG4gICAgTGlzdC5tYXAocGVyc2lzdCwgc2xpZGVzKSxcbiAgICByZXN1bHRzXG4gICAgfD4gTW9kZWxSZXN1bHRzLm1hcChNb2RlbFJlc3VsdC50b19wZXJzaXN0ZW50KVxuICAgIHw+IE1vZGVsUmVzdWx0cy5iaW5kaW5ncyxcbiAgKTtcblxuICBsZXQgb2ZfcGVyc2lzdGVudCA9ICh+c2V0dGluZ3MsIChzdHJpbmcsIHNsaWRlcywgcmVzdWx0cyk6IHBlcnNpc3RlbnQpID0+IHtcbiAgICAoXG4gICAgICBzdHJpbmcsXG4gICAgICBMaXN0Lm1hcCh1bnBlcnNpc3QsIHNsaWRlcyksXG4gICAgICByZXN1bHRzXG4gICAgICB8PiBMaXN0LnRvX3NlcVxuICAgICAgfD4gTW9kZWxSZXN1bHRzLm9mX3NlcVxuICAgICAgfD4gTW9kZWxSZXN1bHRzLm1hcChNb2RlbFJlc3VsdC5vZl9wZXJzaXN0ZW50KH5zZXR0aW5ncykpLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHNsaWRlcyA9PiB7XG4gICAgc2xpZGVzIHw+IHRvX3BlcnNpc3RlbnQgfD4gc2V4cF9vZl9wZXJzaXN0ZW50IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplID0gZGF0YSA9PiB7XG4gICAgZGF0YSB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHBlcnNpc3RlbnRfb2Zfc2V4cCB8PiBvZl9wZXJzaXN0ZW50O1xuICB9O1xuXG4gIGxldCBzYXZlID0gKHNsaWRlcyk6IHVuaXQgPT4ge1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShzYXZlX2RvY3VtZW50YXRpb25fa2V5LCBzZXJpYWxpemUoc2xpZGVzKSk7XG4gIH07XG5cbiAgbGV0IGluaXQgPSAofnNldHRpbmdzKSA9PiB7XG4gICAgbGV0IGRvY3VtZW50YXRpb24gPSBvZl9wZXJzaXN0ZW50KH5zZXR0aW5ncywgSW5pdC5zdGFydHVwLmRvY3VtZW50YXRpb24pO1xuICAgIHNhdmUoZG9jdW1lbnRhdGlvbik7XG4gICAgZG9jdW1lbnRhdGlvbjtcbiAgfTtcblxuICBsZXQgbG9hZCA9ICh+c2V0dGluZ3MpID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9kb2N1bWVudGF0aW9uX2tleSkpIHtcbiAgICB8IE5vbmUgPT4gaW5pdCh+c2V0dGluZ3MpXG4gICAgfCBTb21lKGRhdGEpID0+XG4gICAgICB0cnkoZGVzZXJpYWxpemUofnNldHRpbmdzLCBkYXRhKSkge1xuICAgICAgfCBfID0+IGluaXQofnNldHRpbmdzKVxuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IGV4cG9ydCA9ICh+c2V0dGluZ3MpID0+IHNlcmlhbGl6ZShsb2FkKH5zZXR0aW5ncykpO1xuICBsZXQgaW1wb3J0ID0gKH5zZXR0aW5ncywgZGF0YSkgPT4gc2F2ZShkZXNlcmlhbGl6ZSh+c2V0dGluZ3MsIGRhdGEpKTtcbn07XG5cbm1vZHVsZSBFeGVyY2lzZSA9IHtcbiAgb3BlbiBFeGVyY2lzZTtcblxuICBsZXQgY3VyX2V4ZXJjaXNlX2tleSA9IFwiQ1VSX0VYRVJDSVNFXCI7XG5cbiAgbGV0IGtleXN0cmluZ19vZl9rZXkgPSBrZXkgPT4ge1xuICAgIGtleSB8PiBzZXhwX29mX2tleSB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICB9O1xuXG4gIGxldCBrZXlzdHJpbmdfb2YgPSBwID0+IHtcbiAgICBrZXlfb2YocCkgfD4ga2V5c3RyaW5nX29mX2tleTtcbiAgfTtcblxuICBsZXQga2V5X29mX2tleXN0cmluZyA9IGtleXN0cmluZyA9PiB7XG4gICAga2V5c3RyaW5nIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4ga2V5X29mX3NleHA7XG4gIH07XG5cbiAgbGV0IHNhdmVfZXhlcmNpc2Vfa2V5ID0ga2V5ID0+IHtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSwga2V5c3RyaW5nX29mX2tleShrZXkpKTtcbiAgfTtcblxuICBsZXQgc2F2ZV9leGVyY2lzZSA9IChleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfb2Zfc3RhdGUoZXhlcmNpc2UpO1xuICAgIGxldCBrZXlzdHJpbmcgPSBrZXlzdHJpbmdfb2Zfa2V5KGtleSk7XG4gICAgbGV0IHZhbHVlID0gRXhlcmNpc2Uuc2VyaWFsaXplX2V4ZXJjaXNlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoa2V5c3RyaW5nLCB2YWx1ZSk7XG4gIH07XG5cbiAgbGV0IGluaXRfZXhlcmNpc2UgPSAoc3BlYywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfb2Yoc3BlYyk7XG4gICAgbGV0IGtleXN0cmluZyA9IGtleXN0cmluZ19vZl9rZXkoa2V5KTtcbiAgICBsZXQgZXhlcmNpc2UgPSBFeGVyY2lzZS5zdGF0ZV9vZl9zcGVjKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIHNhdmVfZXhlcmNpc2UoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5LCBrZXlzdHJpbmcpO1xuICAgIGV4ZXJjaXNlO1xuICB9O1xuXG4gIGxldCBsb2FkX2V4ZXJjaXNlID0gKGtleSwgc3BlYywgfmluc3RydWN0b3JfbW9kZSk6IEV4ZXJjaXNlLnN0YXRlID0+IHtcbiAgICBsZXQga2V5c3RyaW5nID0ga2V5c3RyaW5nX29mX2tleShrZXkpO1xuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKGtleXN0cmluZykpIHtcbiAgICB8IFNvbWUoZGF0YSkgPT5cbiAgICAgIGxldCBleGVyY2lzZSA9XG4gICAgICAgIHRyeShFeGVyY2lzZS5kZXNlcmlhbGl6ZV9leGVyY2lzZShkYXRhLCB+c3BlYywgfmluc3RydWN0b3JfbW9kZSkpIHtcbiAgICAgICAgfCBfID0+IGluaXRfZXhlcmNpc2Uoc3BlYywgfmluc3RydWN0b3JfbW9kZSlcbiAgICAgICAgfTtcbiAgICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5LCBrZXlzdHJpbmcpO1xuICAgICAgZXhlcmNpc2U7XG4gICAgfCBOb25lID0+IGluaXRfZXhlcmNpc2Uoc3BlYywgfmluc3RydWN0b3JfbW9kZSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzYXZlID0gKChuLCBzcGVjcywgZXhlcmNpc2UpLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgbGV0IGtleSA9IGtleV9vZihMaXN0Lm50aChzcGVjcywgbikpO1xuICAgIGxldCBrZXlzdHJpbmcgPSBrZXlzdHJpbmdfb2Zfa2V5KGtleSk7XG4gICAgc2F2ZV9leGVyY2lzZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXksIGtleXN0cmluZyk7XG4gIH07XG5cbiAgbGV0IGluaXQgPSAofmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGxldCBleGVyY2lzZXMgPSB7XG4gICAgICAoXG4gICAgICAgIDAsXG4gICAgICAgIEV4ZXJjaXNlU2V0dGluZ3MuZXhlcmNpc2VzLFxuICAgICAgICBMaXN0Lm50aChFeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcywgMClcbiAgICAgICAgfD4gRXhlcmNpc2Uuc3RhdGVfb2Zfc3BlYyh+aW5zdHJ1Y3Rvcl9tb2RlKSxcbiAgICAgICk7XG4gICAgfTtcbiAgICBzYXZlKGV4ZXJjaXNlcywgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgZXhlcmNpc2VzO1xuICB9O1xuXG4gIGxldCBsb2FkID0gKH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXkpKSB7XG4gICAgfCBTb21lKGtleXN0cmluZykgPT5cbiAgICAgIGxldCBrZXkgPSBrZXlfb2Zfa2V5c3RyaW5nKGtleXN0cmluZyk7XG4gICAgICBzd2l0Y2ggKEV4ZXJjaXNlLmZpbmRfa2V5X29wdChrZXksIHNwZWNzKSkge1xuICAgICAgfCBTb21lKChuLCBzcGVjKSkgPT5cbiAgICAgICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoa2V5c3RyaW5nKSkge1xuICAgICAgICB8IFNvbWUoZGF0YSkgPT5cbiAgICAgICAgICBsZXQgZXhlcmNpc2UgPVxuICAgICAgICAgICAgdHJ5KGRlc2VyaWFsaXplX2V4ZXJjaXNlKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSkge1xuICAgICAgICAgICAgfCBfID0+IGluaXRfZXhlcmNpc2Uoc3BlYywgfmluc3RydWN0b3JfbW9kZSlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgKG4sIHNwZWNzLCBleGVyY2lzZSk7XG4gICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgIC8vIGluaXRpYWxpemUgZXhlcmNpc2UgZnJvbSBzcGVjXG4gICAgICAgICAgbGV0IGV4ZXJjaXNlID0gRXhlcmNpc2Uuc3RhdGVfb2Zfc3BlYyhzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICAgICAgICBzYXZlX2V4ZXJjaXNlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICAgICAgICAobiwgc3BlY3MsIGV4ZXJjaXNlKTtcbiAgICAgICAgfVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIC8vIGludmFsaWQgY3VycmVudCBleGVyY2lzZSBrZXkgc2F2ZWQsIGxvYWQgdGhlIGZpcnN0IGV4ZXJjaXNlXG4gICAgICAgIGxldCBmaXJzdF9zcGVjID0gTGlzdC5udGgoc3BlY3MsIDApO1xuICAgICAgICBsZXQgZmlyc3Rfa2V5ID0gRXhlcmNpc2Uua2V5X29mKGZpcnN0X3NwZWMpO1xuICAgICAgICAoMCwgc3BlY3MsIGxvYWRfZXhlcmNpc2UoZmlyc3Rfa2V5LCBmaXJzdF9zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSk7XG4gICAgICB9O1xuICAgIHwgTm9uZSA9PiBpbml0KH5pbnN0cnVjdG9yX21vZGUpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcHJlcF9leGVyY2lzZV9leHBvcnQgPSAofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAge1xuICAgICAgY3VyX2V4ZXJjaXNlOlxuICAgICAgICBrZXlfb2Zfa2V5c3RyaW5nKFxuICAgICAgICAgIE9wdGlvbi5nZXQoSnNVdGlsLmdldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXkpKSxcbiAgICAgICAgKSxcbiAgICAgIGV4ZXJjaXNlX2RhdGE6XG4gICAgICAgIHNwZWNzXG4gICAgICAgIHw+IExpc3QubWFwKHNwZWMgPT4ge1xuICAgICAgICAgICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfb2Yoc3BlYyk7XG4gICAgICAgICAgICAgbGV0IGV4ZXJjaXNlID1cbiAgICAgICAgICAgICAgIGxvYWRfZXhlcmNpc2Uoa2V5LCBzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgICAgICAgICAgICAgfD4gRXhlcmNpc2UucGVyc2lzdGVudF9zdGF0ZV9vZl9zdGF0ZSh+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICAgICAgICAgICAoa2V5LCBleGVyY2lzZSk7XG4gICAgICAgICAgIH0pLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQgPSAofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgcHJlcF9leGVyY2lzZV9leHBvcnQofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIHw+IHNleHBfb2ZfZXhlcmNpc2VfZXhwb3J0XG4gICAgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQgZXhwb3J0ID0gKH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgfTtcblxuICBsZXQgaW1wb3J0ID0gKGRhdGEsIH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGxldCBleGVyY2lzZV9leHBvcnQgPSBkYXRhIHw+IGRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydDtcbiAgICBzYXZlX2V4ZXJjaXNlX2tleShleGVyY2lzZV9leHBvcnQuY3VyX2V4ZXJjaXNlKTtcbiAgICBleGVyY2lzZV9leHBvcnQuZXhlcmNpc2VfZGF0YVxuICAgIHw+IExpc3QuaXRlcigoKGtleSwgcGVyc2lzdGVudF9zdGF0ZSkpID0+IHtcbiAgICAgICAgIGxldCBzcGVjID0gRXhlcmNpc2UuZmluZF9rZXlfb3B0KGtleSwgc3BlY3MpO1xuICAgICAgICAgc3dpdGNoIChzcGVjKSB7XG4gICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAgcHJpbnRfZW5kbGluZShcIldhcm5pbmc6IHNhdmVkIGtleSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGV4ZXJjaXNlXCIpXG4gICAgICAgICB8IFNvbWUoKF8sIHNwZWMpKSA9PlxuICAgICAgICAgICBzYXZlX2V4ZXJjaXNlKFxuICAgICAgICAgICAgIEV4ZXJjaXNlLnVucGVyc2lzdF9zdGF0ZShcbiAgICAgICAgICAgICAgIHBlcnNpc3RlbnRfc3RhdGUsXG4gICAgICAgICAgICAgICB+c3BlYyxcbiAgICAgICAgICAgICAgIH5pbnN0cnVjdG9yX21vZGUsXG4gICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICAgICAgICApXG4gICAgICAgICB9O1xuICAgICAgIH0pO1xuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIFRoaXMgc2luZ2xlIGRhdGEgc3RydWN0dXJlIGNvbGxlY3RzIHRvZ2V0aGVyIGFsbCB0aGUgYXBwLXdpZGUgdmFsdWVzXG4gICB0aGF0IG1pZ2h0IGJlIG9mIGludGVyZXN0IHRvIHZpZXcgZnVuY3Rpb25zLiBNb3N0IHZpZXcgZnVuY3Rpb25zIHRoZW5cbiAgIHRha2Ugfmdsb2JhbHMgYXMgYW4gYXJndW1lbnQuKi9cblxubW9kdWxlIEFjdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgU2V0TW91c2Vkb3duKGJvb2wpXG4gICAgfCBTZXRTaG93QmFja3BhY2tUYXJnZXRzKGJvb2wpXG4gICAgfCBTZXRGb250TWV0cmljcyhGb250TWV0cmljcy50KVxuICAgIHwgU2V0KFNldHRpbmdzLlVwZGF0ZS50KVxuICAgIHwgSnVtcFRvVGlsZShIYXozbGNvcmUuSWQudCk7XG59O1xuXG5tb2R1bGUgTW9kZWwgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIC8vIFBlcnNpc3RlbnQ6XG4gICAgc2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgLy8gU3RhdGU6XG4gICAgZm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgIHNob3dfYmFja3BhY2tfdGFyZ2V0czogYm9vbCxcbiAgICBtb3VzZWRvd246IGJvb2wsXG4gICAgLy8gQ2FsY3VsYXRlZDpcbiAgICBjb2xvcl9oaWdobGlnaHRzOiBvcHRpb24oQ29sb3JTdGVwcy5jb2xvck1hcCksXG4gICAgLy8gT3RoZXI6XG4gICAgaW5qZWN0X2dsb2JhbDogQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgLyogaW5qZWN0X2dsb2JhbCBpcyBub3QgcmVhbGx5IHBhcnQgb2YgdGhlIG1vZGVsLCBidXQgYWRkZWQgaGVyZSBmb3JcbiAgICAgICBjb252ZW5pZW5jZSB0byBhdm9pZCBoYXZpbmcgdG8gcGFzcyBpdCBhcm91bmQgZXZlcnl3aGVyZS4gQ2FuIG9ubHlcbiAgICAgICBiZSB1c2VkIGluIHZpZXcgZnVuY3Rpb25zLiAqL1xuICB9O1xuXG4gIGxldCBsb2FkID0gKCkgPT4ge1xuICAgIGxldCBzZXR0aW5ncyA9IFN0b3JlLlNldHRpbmdzLmxvYWQoKTtcbiAgICB7XG4gICAgICBmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLmluaXQsXG4gICAgICBzaG93X2JhY2twYWNrX3RhcmdldHM6IGZhbHNlLFxuICAgICAgbW91c2Vkb3duOiBmYWxzZSxcbiAgICAgIHNldHRpbmdzLFxuICAgICAgY29sb3JfaGlnaGxpZ2h0czogTm9uZSxcbiAgICAgIGluamVjdF9nbG9iYWw6IF8gPT5cbiAgICAgICAgZmFpbHdpdGgoXG4gICAgICAgICAgXCJDYW5ub3QgdXNlIGluamVjdF9nbG9iYWwgb3V0c2lkZSBvZiB0aGUgbWFpbiB2aWV3IGZ1bmN0aW9uIVwiLFxuICAgICAgICApLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHNhdmUgPSBtb2RlbCA9PiB7XG4gICAgU3RvcmUuU2V0dGluZ3Muc2F2ZShtb2RlbC5zZXR0aW5ncyk7XG4gIH07XG59O1xuXG5tb2R1bGUgVXBkYXRlID0ge1xuICBpbmNsdWRlIEFjdGlvbjtcblxuICAvLyBVcGRhdGUgaXMgaGFuZGxlZCBieSB0aGUgdG9wLWxldmVsIHVwZGF0ZSBmdW5jdGlvblxuXG4gIGxldCBjYWxjdWxhdGUgPSAoY29sb3JfaGlnaGxpZ2h0cywgbW9kZWw6IE1vZGVsLnQpOiBNb2RlbC50ID0+IHtcbiAgICAuLi5tb2RlbCxcbiAgICBjb2xvcl9oaWdobGlnaHRzLFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gTW9kZWwudDtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxuLyogTU9ERUw6XG5cbiAgICAgIFRoZSBtb2RlbCBjb25zaXN0cyBvZiB0aHJlZSBicm9hZCBjYXRlZ29yaWVzLiBFZGl0b3JzIGlzIHRoZSBtZWF0LFxuICAgICAgY29udGFpbmluZyB0aGUgY29kZSBjb250ZW50IGFuZCBjdXJzb3Ivc2VsZWN0aW9uL2J1ZmZlciBzdGF0ZSBmb3IgYWxsXG4gICAgICBhY3RpdmUgZWRpdG9ycy4gU2V0dGluZ3MgYXJlIHVzZXItc2VsZWN0YWJsZSBwcmVmZXJlbmNlcy4gVG9nZXRoZXIsXG4gICAgICB0aGVzZSB0d28gY29tcHJpc2UgdGhlIHBlcnNpc3RlbnQgc3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uIHdoaWNoIGlzXG4gICAgICBzYXZlZCB0byBsb2NhbHN0b3JlLlxuXG4gICAgICBNZXRhIG9uIHRoZSBvdGhlciBoYW5kIGNvbnNpc3RzIG9mIGV2ZXJ5dGhpbmcgd2hpY2ggaXMgbm90XG4gICAgICBwZXJpc3RhbnQsIGluY2x1ZGluZyB0cmFuc2l0b3J5IHVpX3N0YXRlIHN1Y2ggYXMgd2hldGhlciB0aGUgbW91c2VcbiAgICAgIGlzIGhlbGQgZG93bi5cblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxudHlwZSB0aW1lc3RhbXAgPSBmbG9hdDtcblxudHlwZSB0ID0ge1xuICBlZGl0b3JzOiBFZGl0b3JzLnQsXG4gIHJlc3VsdHM6IE1vZGVsUmVzdWx0cy50LFxuICBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLnQsXG4gIGV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgZ2xvYmFsczogR2xvYmFscy50LFxuICBhY3RpdmVfZWRpdG9yOiBvcHRpb24oRWRpdG9ycy5TZWxlY3Rpb24udCksXG59O1xuXG5sZXQgY3V0b2ZmID0gKD09PSk7XG5cbmxldCBsb2FkX2VkaXRvcnMgPSAofnNldHRpbmdzOiBTZXR0aW5ncy50KTogKEVkaXRvcnMudCwgTW9kZWxSZXN1bHRzLnQpID0+XG4gIHN3aXRjaCAoc2V0dGluZ3MubW9kZSkge1xuICB8IFNjcmF0Y2ggPT5cbiAgICBsZXQgKGlkeCwgc2xpZGVzLCByZXN1bHRzKSA9IFN0b3JlLlNjcmF0Y2gubG9hZCh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSk7XG4gICAgKFNjcmF0Y2goaWR4LCBzbGlkZXMpLCByZXN1bHRzKTtcbiAgfCBEb2N1bWVudGF0aW9uID0+XG4gICAgbGV0IChuYW1lLCBzbGlkZXMsIHJlc3VsdHMpID1cbiAgICAgIFN0b3JlLkRvY3VtZW50YXRpb24ubG9hZCh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSk7XG4gICAgKERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSwgcmVzdWx0cyk7XG4gIHwgRXhlcmNpc2VzID0+XG4gICAgbGV0IChuLCBzcGVjcywgZXhlcmNpc2UpID1cbiAgICAgIFN0b3JlLkV4ZXJjaXNlLmxvYWQoXG4gICAgICAgIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyxcbiAgICAgICAgfmluc3RydWN0b3JfbW9kZT1zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUsXG4gICAgICApO1xuICAgIChFeGVyY2lzZXMobiwgc3BlY3MsIGV4ZXJjaXNlKSwgTW9kZWxSZXN1bHRzLmVtcHR5KTtcbiAgfTtcblxubGV0IHNhdmVfZWRpdG9ycyA9XG4gICAgKGVkaXRvcnM6IEVkaXRvcnMudCwgcmVzdWx0czogTW9kZWxSZXN1bHRzLnQsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpXG4gICAgOiB1bml0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2gobiwgc2xpZGVzKSA9PiBTdG9yZS5TY3JhdGNoLnNhdmUoKG4sIHNsaWRlcywgcmVzdWx0cykpXG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpID0+XG4gICAgU3RvcmUuRG9jdW1lbnRhdGlvbi5zYXZlKChuYW1lLCBzbGlkZXMsIHJlc3VsdHMpKVxuICB8IEV4ZXJjaXNlcyhuLCBzcGVjcywgZXhlcmNpc2UpID0+XG4gICAgU3RvcmUuRXhlcmNpc2Uuc2F2ZSgobiwgc3BlY3MsIGV4ZXJjaXNlKSwgfmluc3RydWN0b3JfbW9kZSlcbiAgfTtcblxubGV0IGxvYWQgPSAoKTogdCA9PiB7XG4gIGxldCBnbG9iYWxzID0gR2xvYmFscy5Nb2RlbC5sb2FkKCk7XG4gIGxldCBzZXR0aW5ncyA9IGdsb2JhbHMuc2V0dGluZ3M7XG4gIGxldCAoZWRpdG9ycywgcmVzdWx0cykgPSBsb2FkX2VkaXRvcnMofnNldHRpbmdzKTtcbiAgbGV0IHN0YXRpY3MgPSBFZGl0b3JzLm1rX3N0YXRpY3MofnNldHRpbmdzLCBlZGl0b3JzKTtcbiAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBTdG9yZS5FeHBsYWluVGhpc01vZGVsLmxvYWQoKTtcbiAge2VkaXRvcnMsIHJlc3VsdHMsIHN0YXRpY3MsIGdsb2JhbHMsIGV4cGxhaW5UaGlzTW9kZWwsIGFjdGl2ZV9lZGl0b3I6IE5vbmV9O1xufTtcblxubGV0IHNhdmUgPSAoe2VkaXRvcnMsIGdsb2JhbHMsIHJlc3VsdHMsIGV4cGxhaW5UaGlzTW9kZWwsIF99OiB0KSA9PiB7XG4gIHNhdmVfZWRpdG9ycyhcbiAgICBlZGl0b3JzLFxuICAgIHJlc3VsdHMsXG4gICAgfmluc3RydWN0b3JfbW9kZT1nbG9iYWxzLnNldHRpbmdzLmluc3RydWN0b3JfbW9kZSxcbiAgKTtcbiAgR2xvYmFscy5Nb2RlbC5zYXZlKGdsb2JhbHMpO1xuICBTdG9yZS5FeHBsYWluVGhpc01vZGVsLnNhdmUoZXhwbGFpblRoaXNNb2RlbCk7XG59O1xuXG5sZXQgc2F2ZV9hbmRfcmV0dXJuID0gKG1vZGVsOiB0KSA9PiB7XG4gIHNhdmUobW9kZWwpO1xuICBPayhtb2RlbCk7XG59O1xubGV0IHJlc2V0ID0gKG1vZGVsOiB0KTogdCA9PiB7XG4gIC8qIFJlc2V0IG1vZGVsIHRvIGRlZmF1bHQsIGluY2x1ZGluZyBpbiBsb2NhbHN0b3JhZ2UsXG4gICAgIGJ1dCBkb24ndCBvdGhlcndpc2UgZXJhc2UgbG9jYWxzdG9yYWdlLCBhbGxvd2luZ1xuICAgICBlLmcuIGFwaSBrZXlzIHRvIHBlcnNpc3QgKi9cbiAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MuaW5pdCgpLmNvcmU7XG4gIGlnbm9yZShTdG9yZS5FeHBsYWluVGhpc01vZGVsLmluaXQoKSk7XG4gIGlnbm9yZShTdG9yZS5TY3JhdGNoLmluaXQofnNldHRpbmdzKSk7XG4gIGlnbm9yZShTdG9yZS5Eb2N1bWVudGF0aW9uLmluaXQofnNldHRpbmdzKSk7XG4gIGlnbm9yZShTdG9yZS5FeGVyY2lzZS5pbml0KH5pbnN0cnVjdG9yX21vZGU9dHJ1ZSkpO1xuICBsZXQgbmV3X21vZGVsID0gbG9hZCgpO1xuICB7XG4gICAgLi4ubmV3X21vZGVsLFxuICAgIGdsb2JhbHM6IHtcbiAgICAgIC4uLm1vZGVsLmdsb2JhbHMsXG4gICAgICBmb250X21ldHJpY3M6IG1vZGVsLmdsb2JhbHMuZm9udF9tZXRyaWNzLFxuICAgIH0sXG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcbm9wZW4gSGF6M2xjb3JlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0ZXBwZXJfYWN0aW9uID1cbiAgfCBTdGVwRm9yd2FyZChpbnQpXG4gIHwgU3RlcEJhY2t3YXJkXG4gIHwgSGlkZVN0ZXBwZXI7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWdlbnQgPVxuICB8IFR5RGk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWdlbnRfYWN0aW9uID1cbiAgfCBQcm9tcHQoYWdlbnQpXG4gIHwgQWNjZXB0U3VnZ2VzdGlvbjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBiZW5jaG1hcmtfYWN0aW9uID1cbiAgfCBTdGFydFxuICB8IEZpbmlzaDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlZGl0b3JfYWN0aW9uID1cbiAgfCBQZXJmb3JtKEFjdGlvbi50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjZWxsX2FjdGlvbiA9XG4gIHwgVG9nZ2xlU3RlcHBlclxuICB8IFN0ZXBwZXIoc3RlcHBlcl9hY3Rpb24pXG4gIHwgRWRpdG9yKGVkaXRvcl9hY3Rpb24pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICAvKiBtZXRhICovXG4gIHwgR2xvYmFscyhHbG9iYWxzLlVwZGF0ZS50KVxuICB8IFJlc2V0XG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChFeHBsYWluVGhpc1VwZGF0ZS51cGRhdGUpXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBEZWJ1Z0NvbnNvbGUoc3RyaW5nKVxuICAvKiBlZGl0b3JzICovXG4gIHwgUmVzZXRDdXJyZW50RWRpdG9yXG4gIHwgSW5pdEltcG9ydEFsbChbQG9wYXF1ZV0gSnNfb2Zfb2NhbWwuSnMudChKc19vZl9vY2FtbC5GaWxlLmZpbGUpKVxuICB8IEZpbmlzaEltcG9ydEFsbChvcHRpb24oc3RyaW5nKSlcbiAgfCBNYWtlQWN0aXZlKEVkaXRvcnMuU2VsZWN0aW9uLnQpXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKHN0cmluZykgLy9leGFtcGxlbW9kZSBvbmx5XG4gIC8vIGVkaXRvcnM6IHNjcmF0Y2htb2RlIG9ubHlcbiAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChbQG9wYXF1ZV0gSnNfb2Zfb2NhbWwuSnMudChKc19vZl9vY2FtbC5GaWxlLmZpbGUpKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQob3B0aW9uKHN0cmluZykpXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKGludClcbiAgLyogZWRpdG9yICovXG4gIHwgVEFCXG4gIHwgU2F2ZVxuICB8IFBlcmZvcm1BY3Rpb24oQWN0aW9uLnQpXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBDdXRcbiAgfCBDb3B5XG4gIHwgVW5kb1xuICB8IFJlZG9cbiAgfCBNb3ZlVG9OZXh0SG9sZShEaXJlY3Rpb24udClcbiAgfCBCZW5jaG1hcmsoYmVuY2htYXJrX2FjdGlvbilcbiAgfCBBc3Npc3RhbnQoYWdlbnRfYWN0aW9uKVxuICB8IFRvZ2dsZVN0ZXBwZXIoTW9kZWxSZXN1bHRzLktleS50KVxuICB8IFN0ZXBwZXJBY3Rpb24oTW9kZWxSZXN1bHRzLktleS50LCBzdGVwcGVyX2FjdGlvbilcbiAgfCBVcGRhdGVFdmFscyhXb3JrZXJTZXJ2ZXIuUmVzcG9uc2UudClcbiAgfCBVcGRhdGVSZXN1bHQoTW9kZWxSZXN1bHRzLnQpO1xuXG5tb2R1bGUgRmFpbHVyZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQ2FudFJlc2V0XG4gICAgfCBDYW50U3VnZ2VzdFxuICAgIHwgRmFpbGVkVG9Mb2FkXG4gICAgfCBGYWlsZWRUb1N3aXRjaFxuICAgIHwgRmFpbGVkVG9QZXJmb3JtKEFjdGlvbi5GYWlsdXJlLnQpXG4gICAgfCBFeGNlcHRpb24oc3RyaW5nKTtcbn07XG5cbm1vZHVsZSBSZXN1bHQgPSB7XG4gIGluY2x1ZGUgUmVzdWx0O1xuICB0eXBlIHQoJ3N1Y2Nlc3MpID0gUmVzdWx0LnQoJ3N1Y2Nlc3MsIEZhaWx1cmUudCk7XG59O1xuXG5sZXQgaXNfZWRpdDogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgUGVyZm9ybUFjdGlvbihhKSA9PiBBY3Rpb24uaXNfZWRpdChhKVxuICB8IEdsb2JhbHMoU2V0KHNfYWN0aW9uKSkgPT5cbiAgICBzd2l0Y2ggKHNfYWN0aW9uKSB7XG4gICAgfCBNb2RlKF8pID0+IHRydWVcbiAgICB8IENhcHRpb25zXG4gICAgfCBTZWNvbmRhcnlJY29uc1xuICAgIHwgU3RhdGljc1xuICAgIHwgQXNzaXN0XG4gICAgfCBFbGFib3JhdGVcbiAgICB8IEV4cGxhaW5UaGlzKF8pXG4gICAgfCBEeW5hbWljc1xuICAgIHwgQmVuY2htYXJrXG4gICAgfCBDb250ZXh0SW5zcGVjdG9yXG4gICAgfCBJbnN0cnVjdG9yTW9kZVxuICAgIHwgRXZhbHVhdGlvbihfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBHbG9iYWxzKFxuICAgICAgU2V0TW91c2Vkb3duKF8pIHwgU2V0U2hvd0JhY2twYWNrVGFyZ2V0cyhfKSB8IFNldEZvbnRNZXRyaWNzKF8pIHxcbiAgICAgIEp1bXBUb1RpbGUoXyksXG4gICAgKSA9PlxuICAgIGZhbHNlXG4gIHwgQ3V0XG4gIHwgVW5kb1xuICB8IFJlZG9cbiAgfCBTd2l0Y2hTY3JhdGNoU2xpZGUoXylcbiAgfCBTd2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoXylcbiAgfCBUb2dnbGVTdGVwcGVyKF8pXG4gIHwgU3RlcHBlckFjdGlvbihfKVxuICB8IFJlcGFyc2VDdXJyZW50RWRpdG9yXG4gIHwgRmluaXNoSW1wb3J0QWxsKF8pXG4gIHwgRmluaXNoSW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IFJlc2V0Q3VycmVudEVkaXRvclxuICB8IEFzc2lzdGFudChBY2NlcHRTdWdnZXN0aW9uKVxuICB8IFJlc2V0ID0+IHRydWVcbiAgfCBVcGRhdGVSZXN1bHQoXylcbiAgfCBVcGRhdGVFdmFscyhfKVxuICB8IE1ha2VBY3RpdmUoXylcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IFNhdmVcbiAgfCBDb3B5XG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChfKVxuICB8IERlYnVnQ29uc29sZShfKVxuICB8IEluaXRJbXBvcnRBbGwoXylcbiAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgQmVuY2htYXJrKF8pXG4gIHwgVEFCXG4gIHwgQXNzaXN0YW50KFByb21wdChfKSkgPT4gZmFsc2U7XG5cbmxldCByZWV2YWx1YXRlX3Bvc3RfdXBkYXRlOiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBQZXJmb3JtQWN0aW9uKGEpID0+IEFjdGlvbi5pc19lZGl0KGEpXG4gIHwgR2xvYmFscyhTZXQoc19hY3Rpb24pKSA9PlxuICAgIHN3aXRjaCAoc19hY3Rpb24pIHtcbiAgICB8IEFzc2lzdFxuICAgIHwgQ2FwdGlvbnNcbiAgICB8IFNlY29uZGFyeUljb25zXG4gICAgfCBTdGF0aWNzXG4gICAgfCBDb250ZXh0SW5zcGVjdG9yXG4gICAgfCBCZW5jaG1hcmtcbiAgICB8IEV4cGxhaW5UaGlzKF8pXG4gICAgfCBFdmFsdWF0aW9uKFxuICAgICAgICBTaG93Q2FzZUNsYXVzZXMgfCBTaG93Rm5Cb2RpZXMgfCBTaG93Q2FzdHMgfCBTaG93UmVjb3JkIHwgU2hvd0ZpeHBvaW50cyB8XG4gICAgICAgIFNob3dMb29rdXBzIHxcbiAgICAgICAgU2hvd0ZpbHRlcnMgfFxuICAgICAgICBTaG93U2V0dGluZ3MgfFxuICAgICAgICBTaG93SGlkZGVuU3RlcHMsXG4gICAgICApID0+XG4gICAgICBmYWxzZVxuICAgIHwgRWxhYm9yYXRlXG4gICAgfCBEeW5hbWljc1xuICAgIHwgSW5zdHJ1Y3Rvck1vZGVcbiAgICB8IE1vZGUoXykgPT4gdHJ1ZVxuICAgIH1cbiAgfCBHbG9iYWxzKFxuICAgICAgU2V0TW91c2Vkb3duKF8pIHwgU2V0U2hvd0JhY2twYWNrVGFyZ2V0cyhfKSB8IFNldEZvbnRNZXRyaWNzKF8pIHxcbiAgICAgIEp1bXBUb1RpbGUoXyksXG4gICAgKSA9PlxuICAgIGZhbHNlXG4gIHwgQXNzaXN0YW50KEFjY2VwdFN1Z2dlc3Rpb24pID0+IHRydWVcbiAgfCBBc3Npc3RhbnQoUHJvbXB0KF8pKSA9PiBmYWxzZVxuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgU2F2ZVxuICB8IENvcHlcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBVcGRhdGVSZXN1bHQoXylcbiAgfCBVcGRhdGVFdmFscyhfKVxuICB8IE1ha2VBY3RpdmUoXylcbiAgfCBEZWJ1Z0NvbnNvbGUoXylcbiAgfCBUQUJcbiAgfCBCZW5jaG1hcmsoXykgPT4gZmFsc2VcbiAgfCBTdGVwcGVyQWN0aW9uKF8sIFN0ZXBGb3J3YXJkKF8pIHwgU3RlcEJhY2t3YXJkIHwgSGlkZVN0ZXBwZXIpXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFJlcGFyc2VDdXJyZW50RWRpdG9yXG4gIHwgRmluaXNoSW1wb3J0QWxsKF8pXG4gIHwgRmluaXNoSW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IFJlc2V0Q3VycmVudEVkaXRvclxuICB8IFN3aXRjaFNjcmF0Y2hTbGlkZShfKVxuICB8IFN3aXRjaERvY3VtZW50YXRpb25TbGlkZShfKVxuICB8IFJlc2V0XG4gIHwgQ3V0XG4gIHwgVW5kb1xuICB8IFJlZG8gPT4gdHJ1ZTtcblxubGV0IHNob3VsZF9zY3JvbGxfdG9fY2FyZXQgPVxuICBmdW5cbiAgfCBHbG9iYWxzKFNldChzX2FjdGlvbikpID0+XG4gICAgc3dpdGNoIChzX2FjdGlvbikge1xuICAgIHwgTW9kZShfKSA9PiB0cnVlXG4gICAgfCBDYXB0aW9uc1xuICAgIHwgU2Vjb25kYXJ5SWNvbnNcbiAgICB8IFN0YXRpY3NcbiAgICB8IEFzc2lzdFxuICAgIHwgRWxhYm9yYXRlXG4gICAgfCBFeHBsYWluVGhpcyhfKVxuICAgIHwgRHluYW1pY3NcbiAgICB8IEJlbmNobWFya1xuICAgIHwgQ29udGV4dEluc3BlY3RvclxuICAgIHwgSW5zdHJ1Y3Rvck1vZGVcbiAgICB8IEV2YWx1YXRpb24oXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgR2xvYmFscyhTZXRGb250TWV0cmljcyhfKSkgPT4gdHJ1ZVxuICB8IEdsb2JhbHMoU2V0TW91c2Vkb3duKF8pIHwgU2V0U2hvd0JhY2twYWNrVGFyZ2V0cyhfKSB8IEp1bXBUb1RpbGUoXykpID0+XG4gICAgZmFsc2VcbiAgfCBBc3Npc3RhbnQoUHJvbXB0KF8pKVxuICB8IFVwZGF0ZVJlc3VsdChfKVxuICB8IFVwZGF0ZUV2YWxzKF8pXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFN0ZXBwZXJBY3Rpb24oXywgU3RlcEJhY2t3YXJkIHwgU3RlcEZvcndhcmQoXykgfCBIaWRlU3RlcHBlcikgPT4gZmFsc2VcbiAgfCBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbikgPT4gdHJ1ZVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBGaW5pc2hJbXBvcnRBbGwoXylcbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBNYWtlQWN0aXZlKF8pXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBSZXNldFxuICB8IENvcHlcbiAgfCBDdXRcbiAgfCBVbmRvXG4gIHwgUmVkb1xuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVEFCID0+IHRydWVcbiAgfCBQZXJmb3JtQWN0aW9uKGEpID0+XG4gICAgc3dpdGNoIChhKSB7XG4gICAgfCBNb3ZlKF8pXG4gICAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICAgIHwgSnVtcChfKVxuICAgIHwgU2VsZWN0KFJlc2l6ZShfKSB8IFRlcm0oXykgfCBTbWFydCB8IFRpbGUoXykpXG4gICAgfCBEZXN0cnVjdChfKVxuICAgIHwgSW5zZXJ0KF8pXG4gICAgfCBQaWNrX3VwXG4gICAgfCBQdXRfZG93blxuICAgIHwgUm90YXRlQmFja3BhY2tcbiAgICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KF8pXG4gICAgfCBQYXN0ZShfKSA9PiB0cnVlXG4gICAgfCBVbnNlbGVjdChfKVxuICAgIHwgU2VsZWN0KEFsbClcbiAgICB8IFN1Z2dlc3QoXylcbiAgICB8IFJlc2V0U3VnZ2VzdGlvbiA9PiBmYWxzZVxuICAgIH1cbiAgfCBTYXZlXG4gIHwgSW5pdEltcG9ydEFsbChfKVxuICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChfKVxuICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhXG4gIHwgRGVidWdDb25zb2xlKF8pXG4gIHwgQmVuY2htYXJrKF8pID0+IGZhbHNlO1xuIiwib3BlbiBIYXozbGNvcmU7XG5pbmNsdWRlIFVwZGF0ZUFjdGlvbjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBhc3Npc3RhbnRfYWN0aW9uX3RvX2VkaXRvcl9hY3Rpb25zID1cbiAgICAoXG4gICAgICB7Z2xvYmFsczoge3NldHRpbmdzLCBffSwgYWN0aXZlX2VkaXRvcjogc2VsZWN0aW9uLCBffSBhcyBtb2RlbDogTW9kZWwudCxcbiAgICAgIGFnZW50X2FjdGlvbixcbiAgICApXG4gICAgOiBsaXN0KEFjdGlvbi50KSA9PlxuICB7XG4gICAgbGV0KiBzZWxlY3Rpb24gPSBzZWxlY3Rpb247XG4gICAgbGV0KyBlZGl0b3IgPVxuICAgICAgRWRpdG9ycy5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIG1vZGVsLmVkaXRvcnMsIG1vZGVsLnJlc3VsdHMpO1xuICAgIGxldCB6ID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICBzd2l0Y2ggKGFnZW50X2FjdGlvbikge1xuICAgIHwgUHJvbXB0KFR5RGkpID0+XG4gICAgICBsZXQgY3R4X2luaXQgPSBFZGl0b3JzLmdldF9jdHhfaW5pdCh+c2V0dGluZ3MsIG1vZGVsLmVkaXRvcnMpO1xuICAgICAgc3dpdGNoIChUeURpLnN1Z2dlc3QofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIH5jdHg9Y3R4X2luaXQsIHopKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShzdWdnZXN0aW9uKSA9PiBbQWN0aW9uLlN1Z2dlc3Qoc3VnZ2VzdGlvbildXG4gICAgICB9O1xuICAgIHwgQWNjZXB0U3VnZ2VzdGlvbiA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcImFjY2VwdGluZyBzdWdnZXN0aW9uXCIpO1xuICAgICAgc3dpdGNoICh6LnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgICB8IE5vcm1hbCA9PiBbXVxuICAgICAgfCBCdWZmZXIoUGFyc2VkKSA9PiBbVW5zZWxlY3QoU29tZShSaWdodCkpXVxuICAgICAgfCBCdWZmZXIoVW5wYXJzZWQpID0+XG4gICAgICAgIHN3aXRjaCAoVHlEaS5nZXRfYnVmZmVyKHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgICAvKiBUaGlzIGNhc2Ugc2hvdWxkbid0IGhhcHBlbiBpZiB3ZSBhc3N1bWUgdGhhdCB3ZSBwcmV2YWxpZGF0ZVxuICAgICAgICAgKiBldmVyeXRoaW5nIHdlIHB1dCBpbiB0aGUgdW5wYXJzZWQgYnVmZmVyKi9cbiAgICAgICAgfCBTb21lKGNvbXBsZXRpb24pIHdoZW4gU3RyaW5nLmNvbnRhaW5zKGNvbXBsZXRpb24sICcgJykgPT5cbiAgICAgICAgICAvKiBTbGlnaHRseSBoYWNreS4gV2UgYXNzdW1lIHRoYXQgaWYgYSBjb21wbGV0aW9uIHN0cmluZyBoYXNcbiAgICAgICAgICAgKiBzcGFjZXMgaW4gaXQsIHRoYXQgbWVhbnMgaXQgd2lsbCBoYXZlIGEgaG9sZSBpbiBpdC4gVGhpc1xuICAgICAgICAgICAqIGlzIGEgbm9uLWVzc2VudGlhbCBpbnZhcmlhbnQgY3VycmVudGx5IG1haW50YWluZWQgaW4gVHlEaS5cbiAgICAgICAgICAgKiBJbiBzdWNoIGEgY2FzZSwgd2UgaW5zZXJ0IHRoZSBjb21wbGV0aW9uIGFzIG5vcm1hbCBieVxuICAgICAgICAgICAqIHBhc3RpbmcsIHRoZW4gcmV0dXJuIHRvIHRoZSBiZWdpbm5pbmcgYW5kIGFkdmFuY2UgdG8gdGhlXG4gICAgICAgICAgICogZmlyc3QgaG9sZS4gVGhpcyBzaG91bGQgYmUgcmV2aXNpdGVkIGlmIGNvbXBsZXRpb25zIGFyZVxuICAgICAgICAgICAqIHJlZmFjdG9yZWQgdG8gdXNlIGEgbW9yZSBzdHJ1Y3R1cmVkIGJ1ZmZlciBmb3JtYXQgKi9cbiAgICAgICAgICBtb2R1bGUgTSA9ICh2YWwgRWRpdG9yLk1ldGEubW9kdWxlX29mX3QoZWRpdG9yLnN0YXRlLm1ldGEpKTtcbiAgICAgICAgICBsZXQgc3RhcnQgPSBaaXBwZXIuY2FyZXRfcG9pbnQoTS5tZWFzdXJlZCwgeik7XG4gICAgICAgICAgW1xuICAgICAgICAgICAgUGFzdGUoQXNzaXN0YW50RXhwYW5kZXIudHJpbShjb21wbGV0aW9uKSksXG4gICAgICAgICAgICBNb3ZlKEdvYWwoUG9pbnQoc3RhcnQpKSksXG4gICAgICAgICAgICBNb3ZlVG9OZXh0SG9sZShSaWdodCksXG4gICAgICAgICAgICBNb3ZlKExvY2FsKExlZnQoQnlUb2tlbikpKSxcbiAgICAgICAgICBdO1xuICAgICAgICB8IFNvbWUoY29tcGxldGlvbikgPT4gW1Bhc3RlKEFzc2lzdGFudEV4cGFuZGVyLnRyaW0oY29tcGxldGlvbikpXVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gIH1cbiAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgfD4gTGlzdC5mbGF0dGVuO1xuIiwibGV0IHNhbXBsZV8xID0ge3wjIEhhemVsIExhbmd1YWdlIFF1aWNrIFJlZmVyZW5jZSAjXG5cbiMgUmVjdXJzaXZlIEZ1bmN0aW9ucyAoYXJyb3cgdHlwZSBhbm5vdGF0aW9uIHJlcXVpcmVkKSAjXG5sZXQgZG91YmxlX3JlY3Vyc2l2ZWx5IDogSW50IC0+IEludCA9XG4gIGZ1biBuIC0+XG4gICAgaWYgbiA9PSAwIHRoZW4gMFxuICAgIGVsc2UgZG91YmxlX3JlY3Vyc2l2ZWx5KG4gLSAxKSArIDJcbmluXG5cbiMgTGlzdHMgI1xubGV0IGVtcHR5X2xpc3QgOiBbSW50XSA9IFtdIGluXG5sZXQgbm9uX2VtcHR5X2xpc3QgOiBbSW50XSA9IDE6OjI6OjM6OltdIGluXG5sZXQgbGlzdF9saXRlcmFscyA6IFtJbnRdID0gWzEsIDIsIDNdIGluXG5sZXQgbGVuZ3RoIDogW0ludF0gLT4gSW50ID1cbiAgZnVuIHhzIC0+XG4gICAgY2FzZSB4c1xuICAgICAgfCBbXSA9PiAwXG4gICAgICB8IGhkOjp0bCA9PiAxICsgbGVuZ3RoKHRsKVxuICAgIGVuZFxuaW5cbmxldCBoYXNfYXRfbGVhc3RfdHdvX2VsZW1lbnRzIDogW0ludF0gLT4gQm9vbCA9XG4gIGZ1biB4cyAtPlxuICAgIGNhc2UgeHNcbiAgICAgIHwgW10gPT4gZmFsc2VcbiAgICAgIHwgaGQ6OltdID0+IGZhbHNlXG4gICAgICB8IGE6OmI6OltdID0+IHRydWVcbiAgICBlbmRcbmluXG5cbiMgU3RyaW5ncyAjXG5sZXQgc3RyaW5nX2xpdHMgPSBcIkhlbGxvLCB3b3JsZCFcIiBpblxubGV0IHN0cmluZ19lcXVhbGl0eSA9IHN0cmluZ19saXRzICQ9PSBcIkhlbGxvLCB3b3JsZCFcIiBpblxuXG4jIE5vbi1lbXB0eSBob2xlcyBhcmUgdGhlIHJlZCBkb3R0ZWQgYm94ZXMgYXJvdW5kIGVycm9ycyAjXG4jICh5b3UgY2FuIHN0aWxsIHJ1biBwcm9ncmFtcyB3aXRoIG5vbi1lbXB0eSBob2xlcykgI1xubGV0IG5vbl9lbXB0eV9ob2xlIDogSW50ID0gdHJ1ZSBpblxuXG4yICsgMlxufH07XG5cbmxldCBzdHJfdG9faW5zZXJ0cyA9IChzdHI6IHN0cmluZyk6IGxpc3QoVXBkYXRlQWN0aW9uLnQpID0+XG4gIExpc3QuaW5pdChcbiAgICBTdHJpbmcubGVuZ3RoKHN0ciksXG4gICAgaSA9PiB7XG4gICAgICBsZXQgYyA9IFN0cmluZy5zdWIoc3RyLCBpLCAxKTtcbiAgICAgIGxldCBjID0gYyA9PSBcIlxcblwiID8gSGF6M2xjb3JlLkZvcm0ubGluZWJyZWFrIDogYztcbiAgICAgIFVwZGF0ZUFjdGlvbi5QZXJmb3JtQWN0aW9uKEluc2VydChjKSk7XG4gICAgfSxcbiAgKTtcblxubGV0IGFjdGlvbnNfMSA9IHN0cl90b19pbnNlcnRzKHNhbXBsZV8xKSBAIFtCZW5jaG1hcmsoRmluaXNoKV07XG5cbmxldCB0aW1lID0gcmVmKC0xLjApO1xuXG5sZXQgc3RhcnQgPSAoKTogdW5pdCA9PiB7XG4gIHRpbWUgOj0gSnNVdGlsLnRpbWVzdGFtcCgpO1xuICBwcmludF9lbmRsaW5lKFwiQmVuY2htYXJrOiBTdGFydGluZ1wiKTtcbn07XG5cbmxldCBmaW5pc2ggPSAoKTogdW5pdCA9PiB7XG4gIHN3aXRjaCAodGltZV4pIHtcbiAgfCAoLTEuMCkgPT5cbiAgICBQcmludGYuc3ByaW50ZihcIkJlbmNobWFyazogRXJyb3I6IE5vIGJlbmNobWFyayBydW5uaW5nXCIpIHw+IHByaW50X2VuZGxpbmVcblxuICB8IF8gPT5cbiAgICBsZXQgZWxhcHNlZCA9IChKc1V0aWwudGltZXN0YW1wKCkgLS4gdGltZV4pIC8uIDEwMDAuO1xuICAgIHRpbWUgOj0gKC0xLjApO1xuICAgIFByaW50Zi5zcHJpbnRmKFwiQmVuY2htYXJrOiBGaW5pc2hlZDogdGltZTogJWYgc2Vjb25kc1wiLCBlbGFwc2VkKVxuICAgIHw+IHByaW50X2VuZGxpbmU7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbi8qIFRoaXMgaXMgYSBwbGFjZSB0byBhZGQgYWQtaG9jIGRlYnVnZ2luZyBwcmludCBhY3Rpb25zLlxuICAgSXQgd2FzIG9yaWdpbmFsbHkgZGlyZWN0bHkgaW4gS2V5Ym9hcmQsIGJ1dCB0aGF0IGFkZGVkIGEgaGFuZGxlclxuICAgZGVwZW5kZW5jeSBvbiB0aGUgbW9kZWwsIHdoaWNoIGlzIHRlY2huaWNhbGx5IGFnYWluc3QgYXJjaGl0ZWN0dXJlICovXG5cbmxldCBwcmludCA9XG4gICAgKFxuICAgICAge2dsb2JhbHM6IHtzZXR0aW5ncywgX30sIGVkaXRvcnMsIGFjdGl2ZV9lZGl0b3IsIHJlc3VsdHMsIF99OiBNb2RlbC50LFxuICAgICAga2V5OiBzdHJpbmcsXG4gICAgKVxuICAgIDogdW5pdCA9PiB7XG4gIHN3aXRjaCAoYWN0aXZlX2VkaXRvcikge1xuICB8IFNvbWUoYWN0aXZlX2VkaXRvcikgPT5cbiAgICBsZXQgZWRpdG9yID1cbiAgICAgIEVkaXRvcnMuZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uPWFjdGl2ZV9lZGl0b3IsIGVkaXRvcnMsIHJlc3VsdHMpO1xuICAgIHN3aXRjaCAoZWRpdG9yKSB7XG4gICAgfCBTb21lKGVkaXRvcikgPT5cbiAgICAgIGxldCB6ID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICAgIGxldCBwcmludCA9IHN0ciA9PiBzdHIgfD4gcHJpbnRfZW5kbGluZTtcbiAgICAgIGxldCBzZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgbGV0IHRlcm0gPSB6ID0+IHogfD4gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3ZpZXcgfD4gZnN0O1xuICAgICAgbGV0IGN0eF9pbml0ID0gRWRpdG9ycy5nZXRfY3R4X2luaXQofnNldHRpbmdzLCBlZGl0b3JzKTtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICB8IFwiRjFcIiA9PiB6IHw+IFppcHBlci5zaG93IHw+IHByaW50XG4gICAgICB8IFwiRjJcIiA9PiB6IHw+IFppcHBlci51bnNlbGVjdF9hbmRfemlwIHw+IFNlZ21lbnQuc2hvdyB8PiBwcmludFxuICAgICAgfCBcIkYzXCIgPT4geiB8PiB0ZXJtIHw+IEV4cC5zaG93IHw+IHByaW50XG4gICAgICB8IFwiRjRcIiA9PlxuICAgICAgICB6XG4gICAgICAgIHw+IHRlcm1cbiAgICAgICAgfD4gSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwX2N0eChzZXR0aW5ncy5jb3JlLCBjdHhfaW5pdClcbiAgICAgICAgfD4gU3RhdGljcy5NYXAuc2hvd1xuICAgICAgICB8PiBwcmludFxuICAgICAgfCBcIkY1XCIgPT5cbiAgICAgICAgbGV0IGVudl9pbml0ID0gRWRpdG9ycy5nZXRfZW52X2luaXQofnNldHRpbmdzLCBlZGl0b3JzKTtcbiAgICAgICAgSW50ZXJmYWNlLmV2YWxfeih+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSwgfmVudl9pbml0LCB+Y3R4X2luaXQsIHopXG4gICAgICAgIHw+IFByb2dyYW1SZXN1bHQuc2hvd1xuICAgICAgICB8PiBwcmludDtcbiAgICAgIHwgXCJGNlwiID0+XG4gICAgICAgIGxldCBpbmRleCA9IEluZGljYXRlZC5pbmRleCh6KTtcbiAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgeiB8PiB0ZXJtIHw+IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MuY29yZSwgY3R4X2luaXQpO1xuICAgICAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICAgIHwgU29tZShpbmRleCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKEhhejNsY29yZS5JZC5NYXAuZmluZF9vcHQoaW5kZXgsIG1hcCkpIHtcbiAgICAgICAgICB8IFNvbWUoY2kpID0+IHByaW50KEluZm8uc2hvdyhjaSkpXG4gICAgICAgICAgfCBOb25lID0+IHByaW50KFwiREVCVUc6IE5vIENJIGZvdW5kIGZvciBpbmRleFwiKVxuICAgICAgICAgIH1cbiAgICAgICAgfCBOb25lID0+IHByaW50KFwiREVCVUc6IE5vIGluZGljYXRlZCBpbmRleFwiKVxuICAgICAgICB9O1xuXG4gICAgICB8IF8gPT4gcHJpbnQoXCJERUJVRzogTm8gYWN0aW9uIGZvciBrZXk6IFwiICsrIGtleSlcbiAgICAgIH07XG4gICAgfCBOb25lID0+IHByaW50X2VuZGxpbmUoXCJERUJVRzogTm8gYWN0aXZlIGVkaXRvclwiKVxuICAgIH07XG4gIHwgTm9uZSA9PiBwcmludF9lbmRsaW5lKFwiREVCVUc6IE5vIGFjdGl2ZSBlZGl0b3JcIilcbiAgfTtcbn07XG4iLCIvKiBMb2dnaW5nIHN5c3RlbSBmb3IgYWN0aW9ucy4gUGVyc2lzdHMgbG9nIHZpYSBJbmRleGVkREIgKi9cblxub3BlbiBTZXhwbGliLlN0ZDtcblxubGV0IGlzX2FjdGlvbl9sb2dnZWQ6IFVwZGF0ZUFjdGlvbi50ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBHbG9iYWxzKFxuICAgICAgU2V0TW91c2Vkb3duKF8pIHwgU2V0U2hvd0JhY2twYWNrVGFyZ2V0cyhfKSB8IFNldEZvbnRNZXRyaWNzKF8pIHxcbiAgICAgIEp1bXBUb1RpbGUoXyksXG4gICAgKVxuICB8IFNhdmVcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IEZpbmlzaEltcG9ydEFsbChfKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBCZW5jaG1hcmsoXylcbiAgfCBVcGRhdGVSZXN1bHQoXylcbiAgfCBVcGRhdGVFdmFscyhfKVxuICB8IERlYnVnQ29uc29sZShfKSA9PiBmYWxzZVxuICB8IFJlc2V0XG4gIHwgVEFCXG4gIHwgQXNzaXN0YW50KF8pXG4gIHwgR2xvYmFscyhTZXQoXykpXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgTWFrZUFjdGl2ZShfKVxuICB8IFJlc2V0Q3VycmVudEVkaXRvclxuICB8IFJlcGFyc2VDdXJyZW50RWRpdG9yXG4gIHwgUGVyZm9ybUFjdGlvbihfKVxuICB8IEN1dFxuICB8IENvcHlcbiAgfCBVbmRvXG4gIHwgUmVkb1xuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFN0ZXBwZXJBY3Rpb24oXywgU3RlcEZvcndhcmQoXykgfCBTdGVwQmFja3dhcmQgfCBIaWRlU3RlcHBlcilcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pID0+IHRydWU7XG5cbm1vZHVsZSBEQiA9IHtcbiAgb3BlbiBFempzX2lkYjtcblxuICBtb2R1bGUgU3RvcmUgPSBFempzX2lkYi5TdG9yZShTdHJpbmdUciwgU3RyaW5nVHIpO1xuXG4gIHR5cGUgZGIgPSBFempzX21pbi50KFR5cGVzLmlEQkRhdGFiYXNlKTtcblxuICBsZXQgZGJfbmFtZSA9IFwiaGF6ZWxfZGJcIjtcbiAgbGV0IHRhYmxlX25hbWUgPSBcImxvZ1wiO1xuXG4gIGxldCBrdl9zdG9yZSA9IChkYjogZGIpOiBTdG9yZS5zdG9yZSA9PlxuICAgIFN0b3JlLnN0b3JlKH5tb2RlPVJFQURXUklURSwgZGIsIHRhYmxlX25hbWUpO1xuXG4gIGxldCB3aXRoX2RiID0gKGYpOiB1bml0ID0+IHtcbiAgICBsZXQgZXJyb3IgPSBfOiB1bml0ID0+IHByaW50X2VuZGxpbmUoXCJFUlJPUjogTG9nLklEQktWLm9wZW5cIik7XG4gICAgbGV0IHVwZ3JhZGUgPSAoZGI6IGRiLCBlOiBkYl91cGdyYWRlKTogdW5pdCA9PlxuICAgICAgZS5uZXdfdmVyc2lvbiA+PSAxICYmIGUub2xkX3ZlcnNpb24gPT0gMFxuICAgICAgICA/IGlnbm9yZShTdG9yZS5jcmVhdGUoZGIsIHRhYmxlX25hbWUpKSA6ICgpO1xuICAgIG9wZW5EQih+dXBncmFkZSwgfmVycm9yLCB+dmVyc2lvbj0xLCBkYl9uYW1lLCBkYiA9PiBmKGRiKSk7XG4gIH07XG5cbiAgbGV0IGFkZCA9IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHVuaXQgPT5cbiAgICB3aXRoX2RiKGRiID0+XG4gICAgICBTdG9yZS5hZGQofmtleSwgfmNhbGxiYWNrPV9rZXkgPT4gKCksIGt2X3N0b3JlKGRiKSwgdmFsdWUpXG4gICAgKTtcblxuICBsZXQgZ2V0ID0gKGtleTogc3RyaW5nLCBmOiBvcHRpb24oc3RyaW5nKSA9PiB1bml0KTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXyA9PiBQcmludGYucHJpbnRmKFwiRVJST1I6IExvZy5JREJLVi5nZXRcIik7XG4gICAgd2l0aF9kYihkYiA9PiBTdG9yZS5nZXQofmVycm9yLCBrdl9zdG9yZShkYiksIGYsIEsoa2V5KSkpO1xuICB9O1xuXG4gIGxldCBnZXRfYWxsID0gKGY6IGxpc3Qoc3RyaW5nKSA9PiB1bml0KTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXyA9PiBQcmludGYucHJpbnRmKFwiRVJST1I6IExvZy5JREJLVi5nZXRfYWxsXCIpO1xuICAgIHdpdGhfZGIoZGIgPT4gU3RvcmUuZ2V0X2FsbCh+ZXJyb3IsIGt2X3N0b3JlKGRiKSwgZikpO1xuICB9O1xuXG4gIGxldCBjbGVhcl9hbmQgPSAoY2FsbGJhY2spOiB1bml0ID0+IHtcbiAgICBsZXQgZXJyb3IgPSBfID0+IFByaW50Zi5wcmludGYoXCJFUlJPUjogTG9nLklEQktWLmNsZWFyXCIpO1xuICAgIHdpdGhfZGIoZGIgPT4gU3RvcmUuY2xlYXIofmVycm9yLCB+Y2FsbGJhY2ssIGt2X3N0b3JlKGRiKSkpO1xuICB9O1xufTtcblxubW9kdWxlIEVudHJ5ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG4gIHR5cGUgdCA9IChNb2RlbC50aW1lc3RhbXAsIFVwZGF0ZUFjdGlvbi50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG4gIHR5cGUgcyA9IGxpc3QodCk7XG5cbiAgbGV0IG1rID0gKHVwZGF0ZSk6IHQgPT4ge1xuICAgIChKc1V0aWwudGltZXN0YW1wKCksIHVwZGF0ZSk7XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoKHRzLCBhY3Rpb24pOiB0KSA9PlxuICAgIERCLmFkZChcbiAgICAgIFByaW50Zi5zcHJpbnRmKFwiJS4wZlwiLCB0cyksXG4gICAgICAodHMsIGFjdGlvbikgfD4gc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmcsXG4gICAgKTtcbn07XG5cbmxldCBpbXBvcnQgPSAoZGF0YTogc3RyaW5nKTogdW5pdCA9PlxuICAvKiBTaG91bGQgYmUgZmluZSB0byBmaXJlIHNhdmVzIGNvbmN1cnJlbnRseT8gKi9cbiAgREIuY2xlYXJfYW5kKCgpID0+XG4gICAgdHJ5KFxuICAgICAgZGF0YVxuICAgICAgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZ1xuICAgICAgfD4gRW50cnkuc19vZl9zZXhwXG4gICAgICB8PiBMaXN0Lml0ZXIoRW50cnkuc2F2ZSlcbiAgICApIHtcbiAgICB8IF8gPT4gUHJpbnRmLnByaW50ZihcIkxvZy5FbnRyeS5pbXBvcnQ6IERlc2VyaWFsaXphdGlvbiBlcnJvclwiKVxuICAgIH1cbiAgKTtcblxubGV0IHVwZGF0ZSA9IChhY3Rpb246IFVwZGF0ZUFjdGlvbi50KTogdW5pdCA9PlxuICBpZiAoaXNfYWN0aW9uX2xvZ2dlZChhY3Rpb24pKSB7XG4gICAgRW50cnkuc2F2ZShFbnRyeS5tayhhY3Rpb24pKTtcbiAgfTtcblxubGV0IGdldF9hbmQgPSAoZjogc3RyaW5nID0+IHVuaXQpOiB1bml0ID0+XG4gIERCLmdldF9hbGwoZW50cmllcyA9PiBmKFwiKFwiICsrIFN0cmluZy5jb25jYXQoXCIgXCIsIGVudHJpZXMpICsrIFwiKVwiKSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFsbCA9IHtcbiAgc2V0dGluZ3M6IHN0cmluZyxcbiAgZXhwbGFpblRoaXNNb2RlbDogc3RyaW5nLFxuICBzY3JhdGNoOiBzdHJpbmcsXG4gIGV4ZXJjaXNlOiBzdHJpbmcsXG4gIGRvY3VtZW50YXRpb246IHN0cmluZyxcbiAgbG9nOiBzdHJpbmcsXG59O1xuXG4vLyBmYWxsYmFjayBmb3Igc2F2ZWQgc3RhdGUgcHJpb3IgdG8gcmVsZWFzZSBvZiBsYW5nIGRvYyBpbiA0OTBGMjJcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWxsX2YyMiA9IHtcbiAgc2V0dGluZ3M6IHN0cmluZyxcbiAgc2NyYXRjaDogc3RyaW5nLFxuICBleGVyY2lzZTogc3RyaW5nLFxuICBsb2c6IHN0cmluZyxcbn07XG5cbmxldCBta19hbGwgPSAofmluc3RydWN0b3JfbW9kZSwgfmxvZykgPT4ge1xuICBsZXQgc2V0dGluZ3MgPSBTdG9yZS5TZXR0aW5ncy5leHBvcnQoKTtcbiAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBTdG9yZS5FeHBsYWluVGhpc01vZGVsLmV4cG9ydCgpO1xuICBsZXQgc2NyYXRjaCA9IFN0b3JlLlNjcmF0Y2guZXhwb3J0KH5zZXR0aW5ncz1IYXozbGNvcmUuQ29yZVNldHRpbmdzLm9mZik7XG4gIGxldCBkb2N1bWVudGF0aW9uID1cbiAgICBTdG9yZS5Eb2N1bWVudGF0aW9uLmV4cG9ydCh+c2V0dGluZ3M9SGF6M2xjb3JlLkNvcmVTZXR0aW5ncy5vZmYpO1xuICBsZXQgZXhlcmNpc2UgPVxuICAgIFN0b3JlLkV4ZXJjaXNlLmV4cG9ydChcbiAgICAgIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyxcbiAgICAgIH5pbnN0cnVjdG9yX21vZGUsXG4gICAgKTtcbiAge3NldHRpbmdzLCBleHBsYWluVGhpc01vZGVsLCBzY3JhdGNoLCBkb2N1bWVudGF0aW9uLCBleGVyY2lzZSwgbG9nfTtcbn07XG5cbmxldCBleHBvcnRfYWxsID0gKH5pbnN0cnVjdG9yX21vZGUsIH5sb2cpID0+IHtcbiAgbWtfYWxsKH5pbnN0cnVjdG9yX21vZGUsIH5sb2cpIHw+IHlvanNvbl9vZl9hbGw7XG59O1xuXG5sZXQgaW1wb3J0X2FsbCA9IChkYXRhLCB+c3BlY3MpID0+IHtcbiAgbGV0IGFsbCA9XG4gICAgdHJ5KGRhdGEgfD4gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgfD4gYWxsX29mX3lvanNvbikge1xuICAgIHwgXyA9PlxuICAgICAgbGV0IGFsbF9mMjIgPSBkYXRhIHw+IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHw+IGFsbF9mMjJfb2ZfeW9qc29uO1xuICAgICAge1xuICAgICAgICBzZXR0aW5nczogYWxsX2YyMi5zZXR0aW5ncyxcbiAgICAgICAgc2NyYXRjaDogYWxsX2YyMi5zY3JhdGNoLFxuICAgICAgICBkb2N1bWVudGF0aW9uOiBcIlwiLFxuICAgICAgICBleGVyY2lzZTogYWxsX2YyMi5leGVyY2lzZSxcbiAgICAgICAgbG9nOiBhbGxfZjIyLmxvZyxcbiAgICAgICAgZXhwbGFpblRoaXNNb2RlbDogXCJcIixcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MuaW1wb3J0KGFsbC5zZXR0aW5ncyk7XG4gIFN0b3JlLkV4cGxhaW5UaGlzTW9kZWwuaW1wb3J0KGFsbC5leHBsYWluVGhpc01vZGVsKTtcbiAgbGV0IGluc3RydWN0b3JfbW9kZSA9IHNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgU3RvcmUuU2NyYXRjaC5pbXBvcnQofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIGFsbC5zY3JhdGNoKTtcbiAgU3RvcmUuRXhlcmNpc2UuaW1wb3J0KGFsbC5leGVyY2lzZSwgfnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgTG9nLmltcG9ydChhbGwubG9nKTtcbn07XG4iLCJ0eXBlIHQgPSB1bml0O1xubGV0IGluaXQgPSAoKSA9PiAoKTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5pbmNsdWRlIFVwZGF0ZUFjdGlvbjsgLy8gdG8gcHJldmVudCBjaXJjdWxhcml0eVxuXG5sZXQgc2NoZWR1bGVfZXZhbHVhdGlvbiA9ICh+c2NoZWR1bGVfYWN0aW9uLCBtb2RlbDogTW9kZWwudCk6IHVuaXQgPT5cbiAgaWYgKG1vZGVsLmdsb2JhbHMuc2V0dGluZ3MuY29yZS5keW5hbWljcykge1xuICAgIGxldCBlbGFicyA9XG4gICAgICBFZGl0b3JzLmdldF9zcGxpY2VkX2VsYWJzKFxuICAgICAgICB+c2V0dGluZ3M9bW9kZWwuZ2xvYmFscy5zZXR0aW5ncyxcbiAgICAgICAgbW9kZWwuc3RhdGljcyxcbiAgICAgICAgbW9kZWwuZWRpdG9ycyxcbiAgICAgICk7XG4gICAgbGV0IGV2YWxfcnMgPVxuICAgICAgTGlzdC5tYXAoKChuLCB7ZH06IEVsYWJvcmF0b3IuRWxhYm9yYXRpb24udCkpID0+IChuLCBkKSwgZWxhYnMpO1xuICAgIGlmIChMaXN0Lmxlbmd0aChldmFsX3JzKSAhPSAwKSB7XG4gICAgICBXb3JrZXJDbGllbnQucmVxdWVzdChcbiAgICAgICAgZXZhbF9ycyxcbiAgICAgICAgfmhhbmRsZXI9cnMgPT4gc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZUV2YWxzKHJzKSksXG4gICAgICAgIH50aW1lb3V0PVxuICAgICAgICAgIHJxcyA9PlxuICAgICAgICAgICAgc2NoZWR1bGVfYWN0aW9uKFxuICAgICAgICAgICAgICBVcGRhdGVFdmFscyhcbiAgICAgICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgICAgICgobiwgXykpID0+IChuLCBFcnJvcihQcm9ncmFtUmVzdWx0LlRpbWVvdXQpKSxcbiAgICAgICAgICAgICAgICAgIHJxcyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfTtcbiAgICAvKiBOb3Qgc2VuZGluZyBzdGVwcGVyIHRvIHdvcmtlciBmb3Igbm93IGJjIGNsb3N1cmUgcGVyZiAqL1xuICAgIGxldCBuZXdfcnMgPVxuICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgfD4gTW9kZWxSZXN1bHRzLnVwZGF0ZV9lbGFicyhcbiAgICAgICAgICAgfnNldHRpbmdzPW1vZGVsLmdsb2JhbHMuc2V0dGluZ3MuY29yZSxcbiAgICAgICAgICAgZWxhYnMsXG4gICAgICAgICApO1xuICAgIGxldCBzdGVwX3JzID0gTW9kZWxSZXN1bHRzLnRvX3N0ZXAobmV3X3JzKTtcbiAgICBpZiAoIU1vZGVsUmVzdWx0cy5pc19lbXB0eShzdGVwX3JzKSkge1xuICAgICAgbGV0IG5ld19ycyA9XG4gICAgICAgIHN0ZXBfcnNcbiAgICAgICAgfD4gTW9kZWxSZXN1bHRzLnJ1bl9wZW5kaW5nKH5zZXR0aW5ncz1tb2RlbC5nbG9iYWxzLnNldHRpbmdzLmNvcmUpO1xuICAgICAgc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZVJlc3VsdChuZXdfcnMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZVJlc3VsdChuZXdfcnMpKTtcbiAgICB9O1xuICB9O1xuXG5sZXQgdXBkYXRlX2NhY2hlZF9kYXRhID0gKH5zY2hlZHVsZV9hY3Rpb24sIHVwZGF0ZSwgbTogTW9kZWwudCk6IE1vZGVsLnQgPT4ge1xuICBsZXQgdXBkYXRlX3N0YXRpY3MgPSBpc19lZGl0KHVwZGF0ZSkgfHwgcmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSh1cGRhdGUpO1xuICBsZXQgdXBkYXRlX2R5bmFtaWNzID0gcmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSh1cGRhdGUpO1xuICBsZXQgbSA9XG4gICAgdXBkYXRlX3N0YXRpY3MgfHwgdXBkYXRlX2R5bmFtaWNzICYmIG0uZ2xvYmFscy5zZXR0aW5ncy5jb3JlLnN0YXRpY3NcbiAgICAgID8ge1xuICAgICAgICAuLi5tLFxuICAgICAgICBzdGF0aWNzOiBFZGl0b3JzLm1rX3N0YXRpY3MofnNldHRpbmdzPW0uZ2xvYmFscy5zZXR0aW5ncywgbS5lZGl0b3JzKSxcbiAgICAgIH1cbiAgICAgIDogbTtcbiAgaWYgKHVwZGF0ZV9keW5hbWljcyAmJiBtLmdsb2JhbHMuc2V0dGluZ3MuY29yZS5keW5hbWljcykge1xuICAgIHNjaGVkdWxlX2V2YWx1YXRpb24ofnNjaGVkdWxlX2FjdGlvbiwgbSk7XG4gICAgbTtcbiAgfSBlbHNlIHtcbiAgICBtO1xuICB9O1xufTtcblxubGV0IHBlcmZvcm1fYWN0aW9uID0gKG1vZGVsOiBNb2RlbC50LCBhOiBBY3Rpb24udCk6IFJlc3VsdC50KE1vZGVsLnQpID0+XG4gIHN3aXRjaCAoXG4gICAgRWRpdG9ycy5nZXRfc2VsZWN0ZWRfZWRpdG9yKFxuICAgICAgfnNlbGVjdGlvbj1tb2RlbC5hY3RpdmVfZWRpdG9yIHw+IE9wdGlvbi5nZXQsXG4gICAgICBtb2RlbC5lZGl0b3JzLFxuICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICApXG4gICAgfD4gT3B0aW9uLmdldFxuICAgIHw+IEhhejNsY29yZS5QZXJmb3JtLmdvKH5zZXR0aW5ncz1tb2RlbC5nbG9iYWxzLnNldHRpbmdzLmNvcmUsIGEpXG4gICkge1xuICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gT2sobW9kZWwpXG4gIHwgRXJyb3IoZXJyKSA9PiBFcnJvcihGYWlsZWRUb1BlcmZvcm0oZXJyKSlcbiAgfCBPayhlZCkgPT5cbiAgICBsZXQgKGVkaXRvcnMsIHJlc3VsdHMpID1cbiAgICAgIEVkaXRvcnMucHV0X3NlbGVjdGVkX2VkaXRvcihcbiAgICAgICAgfnNlbGVjdGlvbj1tb2RlbC5hY3RpdmVfZWRpdG9yIHw+IE9wdGlvbi5nZXQsXG4gICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgIGVkLFxuICAgICAgKTtcbiAgICBsZXQgbW9kZWwgPSB7Li4ubW9kZWwsIGVkaXRvcnMsIHJlc3VsdHN9O1xuICAgIC8qIE5vdGU6IE5vdCBzYXZpbmcgaGVyZSBhcyBzYXZpbmcgaXMgY29zdGx5IHRvIGRvIGVhY2gga2V5c3Ryb2tlLFxuICAgICAgIHdlIHdhaXQgYSBzZWNvbmQgYWZ0ZXIgdGhlIGxhc3QgZWRpdCBhY3Rpb24gKHNlZSBNYWluLnJlKSAqL1xuICAgIE9rKG1vZGVsKTtcbiAgfTtcblxubGV0IHJlYyBwZXJmb3JtX2FjdGlvbnMgPSAobW9kZWw6IE1vZGVsLnQpID0+XG4gIGZ1blxuICB8IFtdID0+IE9rKG1vZGVsKVxuICB8IFthLCAuLi5fYXNdID0+XG4gICAgc3dpdGNoIChwZXJmb3JtX2FjdGlvbihtb2RlbCwgYSkpIHtcbiAgICB8IE9rKG1vZGVsKSA9PiBwZXJmb3JtX2FjdGlvbnMobW9kZWwsIF9hcylcbiAgICB8IEVycm9yKF8pIGFzIGVyciA9PiBlcnJcbiAgICB9O1xuXG5sZXQgc3dpdGNoX3NjcmF0Y2hfc2xpZGUgPVxuICAgIChlZGl0b3JzOiBFZGl0b3JzLnQsIH5pbnN0cnVjdG9yX21vZGUsIGlkeDogaW50KTogb3B0aW9uKEVkaXRvcnMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBOb25lXG4gIHwgU2NyYXRjaChuLCBfKSB3aGVuIG4gPT0gaWR4ID0+IE5vbmVcbiAgfCBTY3JhdGNoKF8sIHNsaWRlcykgd2hlbiBpZHggPj0gTGlzdC5sZW5ndGgoc2xpZGVzKSA9PiBOb25lXG4gIHwgU2NyYXRjaChfLCBzbGlkZXMpID0+IFNvbWUoU2NyYXRjaChpZHgsIHNsaWRlcykpXG4gIHwgRXhlcmNpc2VzKF8sIHNwZWNzLCBfKSB3aGVuIGlkeCA+PSBMaXN0Lmxlbmd0aChzcGVjcykgPT4gTm9uZVxuICB8IEV4ZXJjaXNlcyhfLCBzcGVjcywgXykgPT5cbiAgICBsZXQgc3BlYyA9IExpc3QubnRoKHNwZWNzLCBpZHgpO1xuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfb2Yoc3BlYyk7XG4gICAgbGV0IGV4ZXJjaXNlID0gU3RvcmUuRXhlcmNpc2UubG9hZF9leGVyY2lzZShrZXksIHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIFNvbWUoRXhlcmNpc2VzKGlkeCwgc3BlY3MsIGV4ZXJjaXNlKSk7XG4gIH07XG5cbi8qIFRoaXMgYWN0aW9uIHNhdmVzIGEgZmlsZSB3aGljaCBzZXJpYWxpemVzIGFsbCBjdXJyZW50IGVkaXRvclxuICAgc2V0dGluZ3MsIGluY2x1ZGluZyB0aGUgc3RhdGVzIG9mIGFsbCBTY3JhdGNoIGFuZCBFeGFtcGxlIHNsaWRlcy5cbiAgIFRoaXMgc2F2ZWQgZmlsZSBjYW4gZGlyZWN0bHkgcmVwbGFjZSBIYXozbHdlYi9Jbml0Lm1sLCBhbGxvd2luZ1xuICAgeW91IHRvIG1ha2UgeW91ciBjdXJyZW50IHN0YXRlIHRoZSBkZWZhdWx0IHN0YXJ0dXAgc3RhdGUuXG5cbiAgIFRoaXMgZG9lcyBOT1Qgc2F2ZSBhbnkgRXhlcmNpc2VzIG1vZGUgc3RhdGUgb3IgYW55IGxhbmdkb2NzXG4gICBzdGF0ZS4gVGhlIGxhdHRlciBpcyBpbnRlbnRpb25hbCBhcyB3ZSBkb24ndCB3YW50IHRvIHBlcnNpc3RcbiAgIHRoaXMgYmV0d2VlbiB1c2Vycy4gVGhlIGZvcm1lciBpcyBhIFRPRE8sIGN1cnJlbnRseSBkaWZmaWN1bHRcbiAgIGR1ZSB0byB0aGUgbW9yZSBjb21wbGV4IGFyY2hpdGVjdHVyZSBvZiBFeGVyY2lzZXMuICovXG5sZXQgZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSA9ICgpID0+IHtcbiAgbGV0IGRhdGE6IFBlcnNpc3RlbnREYXRhLnQgPSB7XG4gICAgZG9jdW1lbnRhdGlvbjpcbiAgICAgIFN0b3JlLkRvY3VtZW50YXRpb24ubG9hZCh+c2V0dGluZ3M9Q29yZVNldHRpbmdzLm9mZilcbiAgICAgIHw+IFN0b3JlLkRvY3VtZW50YXRpb24udG9fcGVyc2lzdGVudCxcbiAgICBzY3JhdGNoOlxuICAgICAgU3RvcmUuU2NyYXRjaC5sb2FkKH5zZXR0aW5ncz1Db3JlU2V0dGluZ3Mub2ZmKVxuICAgICAgfD4gU3RvcmUuU2NyYXRjaC50b19wZXJzaXN0ZW50LFxuICAgIHNldHRpbmdzOiBTdG9yZS5TZXR0aW5ncy5sb2FkKCksXG4gIH07XG4gIGxldCBjb250ZW50cyA9XG4gICAgXCJsZXQgc3RhcnR1cCA6IFBlcnNpc3RlbnREYXRhLnQgPSBcIiArKyBQZXJzaXN0ZW50RGF0YS5zaG93KGRhdGEpO1xuICBKc1V0aWwuZG93bmxvYWRfc3RyaW5nX2ZpbGUoXG4gICAgfmZpbGVuYW1lPVwiSW5pdC5tbFwiLFxuICAgIH5jb250ZW50X3R5cGU9XCJ0ZXh0L3BsYWluXCIsXG4gICAgfmNvbnRlbnRzLFxuICApO1xuICBwcmludF9lbmRsaW5lKFwiSU5GTzogUGVyc2lzdGVudCBkYXRhIGV4cG9ydGVkIHRvIEluaXQubWxcIik7XG59O1xuXG5sZXQgcmVjIGFwcGx5ID1cbiAgICAgICAgKG1vZGVsOiBNb2RlbC50LCB1cGRhdGU6IHQsIHN0YXRlOiBTdGF0ZS50LCB+c2NoZWR1bGVfYWN0aW9uKVxuICAgICAgICA6IFJlc3VsdC50KE1vZGVsLnQpID0+IHtcbiAgbGV0IG06IFJlc3VsdC50KE1vZGVsLnQpID1cbiAgICBzd2l0Y2ggKHVwZGF0ZSkge1xuICAgIHwgUmVzZXQgPT4gT2soTW9kZWwucmVzZXQobW9kZWwpKVxuICAgIHwgR2xvYmFscyhTZXRNb3VzZWRvd24oYikpID0+XG4gICAgICBPayh7XG4gICAgICAgIC4uLm1vZGVsLFxuICAgICAgICBnbG9iYWxzOiB7XG4gICAgICAgICAgLi4ubW9kZWwuZ2xvYmFscyxcbiAgICAgICAgICBtb3VzZWRvd246IGIsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIHwgR2xvYmFscyhTZXRTaG93QmFja3BhY2tUYXJnZXRzKGIpKSA9PlxuICAgICAgT2soe1xuICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgZ2xvYmFsczoge1xuICAgICAgICAgIC4uLm1vZGVsLmdsb2JhbHMsXG4gICAgICAgICAgc2hvd19iYWNrcGFja190YXJnZXRzOiBiLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB8IEdsb2JhbHMoU2V0Rm9udE1ldHJpY3MoZm0pKSA9PlxuICAgICAgT2soe1xuICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgZ2xvYmFsczoge1xuICAgICAgICAgIC4uLm1vZGVsLmdsb2JhbHMsXG4gICAgICAgICAgZm9udF9tZXRyaWNzOiBmbSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfCBHbG9iYWxzKFNldChzKSkgPT5cbiAgICAgIE9rKHtcbiAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgIGdsb2JhbHM6IHtcbiAgICAgICAgICAuLi5tb2RlbC5nbG9iYWxzLFxuICAgICAgICAgIHNldHRpbmdzOiBTZXR0aW5ncy5VcGRhdGUudXBkYXRlKHMsIG1vZGVsLmdsb2JhbHMuc2V0dGluZ3MpLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB8IEdsb2JhbHMoSnVtcFRvVGlsZSh0aWxlKSkgPT5cbiAgICAgIC8vIFRPRE86IGp1bXAgdG8gdGlsZXMgaW4gb3RoZXIgZWRpdG9yc1xuICAgICAgcGVyZm9ybV9hY3Rpb25zKG1vZGVsLCBbSnVtcChUaWxlSWQodGlsZSkpXSlcbiAgICB8IFVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwodSkgPT5cbiAgICAgIGxldCBleHBsYWluVGhpc01vZGVsID1cbiAgICAgICAgRXhwbGFpblRoaXNVcGRhdGUuc2V0X3VwZGF0ZShtb2RlbC5leHBsYWluVGhpc01vZGVsLCB1KTtcbiAgICAgIE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGV4cGxhaW5UaGlzTW9kZWx9KTtcbiAgICB8IERlYnVnQ29uc29sZShrZXkpID0+XG4gICAgICBEZWJ1Z0NvbnNvbGUucHJpbnQobW9kZWwsIGtleSk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBTYXZlID0+IE1vZGVsLnNhdmVfYW5kX3JldHVybihtb2RlbClcbiAgICB8IEluaXRJbXBvcnRBbGwoZmlsZSkgPT5cbiAgICAgIEpzVXRpbC5yZWFkX2ZpbGUoZmlsZSwgZGF0YSA9PiBzY2hlZHVsZV9hY3Rpb24oRmluaXNoSW1wb3J0QWxsKGRhdGEpKSk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBGaW5pc2hJbXBvcnRBbGwoZGF0YSkgPT5cbiAgICAgIHN3aXRjaCAoZGF0YSkge1xuICAgICAgfCBOb25lID0+IE9rKG1vZGVsKVxuICAgICAgfCBTb21lKGRhdGEpID0+XG4gICAgICAgIEV4cG9ydC5pbXBvcnRfYWxsKGRhdGEsIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyk7XG4gICAgICAgIE9rKE1vZGVsLmxvYWQoKSk7XG4gICAgICB9XG4gICAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChmaWxlKSA9PlxuICAgICAgSnNVdGlsLnJlYWRfZmlsZShmaWxlLCBkYXRhID0+XG4gICAgICAgIHNjaGVkdWxlX2FjdGlvbihGaW5pc2hJbXBvcnRTY3JhdGNocGFkKGRhdGEpKVxuICAgICAgKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoZGF0YSkgPT5cbiAgICAgIGxldCBlZGl0b3JzID0gRWRpdG9ycy5pbXBvcnRfY3VycmVudChtb2RlbC5lZGl0b3JzLCBkYXRhKTtcbiAgICAgIE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGVkaXRvcnN9KTtcbiAgICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhID0+XG4gICAgICBleHBvcnRfcGVyc2lzdGVudF9kYXRhKCk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBSZXNldEN1cnJlbnRFZGl0b3IgPT5cbiAgICAgIGxldCBpbnN0cnVjdG9yX21vZGUgPSBtb2RlbC5nbG9iYWxzLnNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgICAgIGxldCBlZGl0b3JzID0gRWRpdG9ycy5yZXNldF9jdXJyZW50KG1vZGVsLmVkaXRvcnMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pO1xuICAgIHwgU3dpdGNoU2NyYXRjaFNsaWRlKG4pID0+XG4gICAgICBsZXQgaW5zdHJ1Y3Rvcl9tb2RlID0gbW9kZWwuZ2xvYmFscy5zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGU7XG4gICAgICBzd2l0Y2ggKHN3aXRjaF9zY3JhdGNoX3NsaWRlKG1vZGVsLmVkaXRvcnMsIH5pbnN0cnVjdG9yX21vZGUsIG4pKSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoRmFpbGVkVG9Td2l0Y2gpXG4gICAgICB8IFNvbWUoZWRpdG9ycykgPT4gTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pXG4gICAgICB9O1xuICAgIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKG5hbWUpID0+XG4gICAgICBzd2l0Y2ggKEVkaXRvcnMuc3dpdGNoX2V4YW1wbGVfc2xpZGUobW9kZWwuZWRpdG9ycywgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihGYWlsZWRUb1N3aXRjaClcbiAgICAgIHwgU29tZShlZGl0b3JzKSA9PiBNb2RlbC5zYXZlX2FuZF9yZXR1cm4oey4uLm1vZGVsLCBlZGl0b3JzfSlcbiAgICAgIH1cbiAgICB8IE1ha2VBY3RpdmUocG9zKSA9PiBPayh7Li4ubW9kZWwsIGFjdGl2ZV9lZGl0b3I6IFNvbWUocG9zKX0pXG4gICAgfCBUQUIgPT5cbiAgICAgIC8qIEF0dGVtcHQgdG8gYWN0IGludGVsbGlnZW50bHkgd2hlbiBUQUIgaXMgcHJlc3NlZC5cbiAgICAgICAqIFRPRE8oYW5kcmV3KTogQ29uc2lkZXIgbW9yZSBhZHZhbmNlZCBUQUIgbG9naWMuIEluc3RlYWRcbiAgICAgICAqIG9mIHNpbXBseSBtb3ZpbmcgdG8gbmV4dCBob2xlLCBpZiB0aGUgYmFja3BhY2sgaXMgbm9uLWVtcHR5XG4gICAgICAgKiBidXQgY2FuJ3QgaW1tZWRpYXRlbHkgcHV0IGRvd24sIG1vdmUgdG8gbmV4dCBwb3NpdGlvbiBvZlxuICAgICAgICogaW50ZXJlc3QsIHdoaWNoIGlzIGNsb3NldCBvZjogbmVhcmVzdCBwb3NpdGlvbiB3aGVyZSBjYW5cbiAgICAgICAqIHB1dCBkb3duLCBmYXJ0aGVzdCBwb3NpdGlvbiB3aGVyZSBjYW4gcHV0IGRvd24sIG5leHQgaG9sZSAqL1xuICAgICAgbGV0IHogPVxuICAgICAgICBFZGl0b3JzLmdldF9zZWxlY3RlZF9lZGl0b3IoXG4gICAgICAgICAgfnNlbGVjdGlvbj1tb2RlbC5hY3RpdmVfZWRpdG9yIHw+IE9wdGlvbi5nZXQsXG4gICAgICAgICAgbW9kZWwuZWRpdG9ycyxcbiAgICAgICAgICBtb2RlbC5yZXN1bHRzLFxuICAgICAgICApXG4gICAgICAgIHw+IE9wdGlvbi5nZXRcbiAgICAgICAgfD4gKChlZDogRWRpdG9yLnQpID0+IGVkLnN0YXRlLnppcHBlcik7XG4gICAgICBsZXQgYSA9XG4gICAgICAgIFNlbGVjdGlvbi5pc19idWZmZXIoei5zZWxlY3Rpb24pXG4gICAgICAgICAgPyBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbilcbiAgICAgICAgICA6IFppcHBlci5jYW5fcHV0X2Rvd24oeilcbiAgICAgICAgICAgICAgPyBQZXJmb3JtQWN0aW9uKFB1dF9kb3duKSA6IE1vdmVUb05leHRIb2xlKFJpZ2h0KTtcbiAgICAgIGFwcGx5KG1vZGVsLCBhLCBzdGF0ZSwgfnNjaGVkdWxlX2FjdGlvbik7XG4gICAgfCBQZXJmb3JtQWN0aW9uKGEpXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBtb2RlbC5nbG9iYWxzLnNldHRpbmdzLmNvcmUuYXNzaXN0XG4gICAgICAgICAgJiYgbW9kZWwuZ2xvYmFscy5zZXR0aW5ncy5jb3JlLnN0YXRpY3MgPT5cbiAgICAgIG9wZW4gUmVzdWx0LlN5bnRheDtcbiAgICAgIGxldCogbW9kZWwgPSBwZXJmb3JtX2FjdGlvbnMobW9kZWwsIFtSZXNldFN1Z2dlc3Rpb24sIGFdKTtcbiAgICAgIC8vIGxldCBhY3Rpb25zID1cbiAgICAgIC8vICAgVXBkYXRlQXNzaXN0YW50LmFzc2lzdGFudF9hY3Rpb25fdG9fZWRpdG9yX2FjdGlvbnMoXG4gICAgICAvLyAgICAgbW9kZWwsXG4gICAgICAvLyAgICAgUHJvbXB0KFR5RGkpLFxuICAgICAgLy8gICApO1xuICAgICAgLy8gcGVyZm9ybV9hY3Rpb25zKG1vZGVsLCBhY3Rpb25zKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFBlcmZvcm1BY3Rpb24oYSkgPT4gcGVyZm9ybV9hY3Rpb24obW9kZWwsIGEpXG4gICAgfCBSZXBhcnNlQ3VycmVudEVkaXRvciA9PlxuICAgICAgLyogVGhpcyBzZXJpYWxpemVzIHRoZSBjdXJyZW50IGVkaXRvciB0byB0ZXh0LCByZXNldHMgdGhlIGN1cnJlbnRcbiAgICAgICAgIGVkaXRvciwgYW5kIHRoZW4gZGVzZXJpYWxpemVzLiBJdCBpcyBpbnRlbmRlZCBhcyBhICh0YWN0aWNhbClcbiAgICAgICAgIG51Y2xlYXIgb3B0aW9uIGZvciB3ZWlyZCBiYWNrcGFjayBzdGF0ZXMgKi9cbiAgICAgIHN3aXRjaCAobW9kZWwuYWN0aXZlX2VkaXRvcikge1xuICAgICAgfCBOb25lID0+IE9rKG1vZGVsKVxuICAgICAgfCBTb21lKHNlbGVjdGlvbikgPT5cbiAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICBFZGl0b3JzLmdldF9zZWxlY3RlZF9lZGl0b3IoXG4gICAgICAgICAgICB+c2VsZWN0aW9uLFxuICAgICAgICAgICAgbW9kZWwuZWRpdG9ycyxcbiAgICAgICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgfCBTb21lKGVkKSA9PlxuICAgICAgICAgIGxldCB6aXBwZXJfaW5pdCA9IFppcHBlci5pbml0KCk7XG4gICAgICAgICAgbGV0IGVkX3N0ciA9IFByaW50ZXIudG9fc3RyaW5nX2VkaXRvcihlZCk7XG4gICAgICAgICAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcofnppcHBlcl9pbml0LCBlZF9zdHIpKSB7XG4gICAgICAgICAgfCBOb25lID0+IEVycm9yKENhbnRSZXNldClcbiAgICAgICAgICB8IFNvbWUoeikgPT5cbiAgICAgICAgICAgIC8vVE9ETzogYWRkIGNvcnJlY3QgYWN0aW9uIHRvIGhpc3RvcnkgKFBpY2tfdXAgaXMgd3JvbmcpXG4gICAgICAgICAgICBsZXQgZWRpdG9yID0gSGF6M2xjb3JlLkVkaXRvci5uZXdfc3RhdGUoUGlja191cCwgeiwgZWQpO1xuICAgICAgICAgICAgbGV0IChlZGl0b3JzLCByZXN1bHRzKSA9XG4gICAgICAgICAgICAgIEVkaXRvcnMucHV0X3NlbGVjdGVkX2VkaXRvcihcbiAgICAgICAgICAgICAgICB+c2VsZWN0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgICAgICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBPayh7Li4ubW9kZWwsIGVkaXRvcnMsIHJlc3VsdHN9KTtcbiAgICAgICAgICB9O1xuICAgICAgICB8IE5vbmUgPT4gT2sobW9kZWwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB8IEN1dCA9PlxuICAgICAgLy8gc3lzdGVtIGNsaXBib2FyZCBoYW5kbGluZyBpdHNlbGYgaXMgZG9uZSBpbiBQYWdlLnZpZXcgaGFuZGxlcnNcbiAgICAgIHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBEZXN0cnVjdChMZWZ0KSlcbiAgICB8IENvcHkgPT5cbiAgICAgIC8vIHN5c3RlbSBjbGlwYm9hcmQgaGFuZGxpbmcgaXRzZWxmIGlzIGRvbmUgaW4gUGFnZS52aWV3IGhhbmRsZXJzXG4gICAgICAvLyBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdGUgYnV0IGluY2x1ZGluZyBhcyBhbiBhY3Rpb24gZm9yIGxvZ2dpbmcgcHVycG9zZXNcbiAgICAgIE9rKG1vZGVsKVxuICAgIHwgVW5kbyA9PlxuICAgICAgc3dpdGNoIChcbiAgICAgICAgRWRpdG9ycy51cGRhdGVfc2VsZWN0ZWRfZWRpdG9yKFxuICAgICAgICAgIH5zZWxlY3Rpb249bW9kZWwuYWN0aXZlX2VkaXRvcixcbiAgICAgICAgICBlZGl0b3IgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoSGF6M2xjb3JlLkVkaXRvci51bmRvKGVkaXRvcikpIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihDYW50X3VuZG8pXG4gICAgICAgICAgICB8IFNvbWUoZWRpdG9yKSA9PiBPayhlZGl0b3IpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICB8IE9rKChlZGl0b3JzLCByZXN1bHRzKSkgPT4gT2soey4uLm1vZGVsLCBlZGl0b3JzLCByZXN1bHRzfSlcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGUpKVxuICAgICAgfVxuICAgIHwgUmVkbyA9PlxuICAgICAgc3dpdGNoIChcbiAgICAgICAgRWRpdG9ycy51cGRhdGVfc2VsZWN0ZWRfZWRpdG9yKFxuICAgICAgICAgIH5zZWxlY3Rpb249bW9kZWwuYWN0aXZlX2VkaXRvcixcbiAgICAgICAgICBlZGl0b3IgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoSGF6M2xjb3JlLkVkaXRvci5yZWRvKGVkaXRvcikpIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihDYW50X3JlZG8pXG4gICAgICAgICAgICB8IFNvbWUoZWRpdG9yKSA9PiBPayhlZGl0b3IpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICB8IE9rKChlZGl0b3JzLCByZXN1bHRzKSkgPT4gT2soey4uLm1vZGVsLCBlZGl0b3JzLCByZXN1bHRzfSlcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGUpKVxuICAgICAgfVxuICAgIHwgTW92ZVRvTmV4dEhvbGUoZCkgPT5cbiAgICAgIHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBNb3ZlKEdvYWwoUGllY2UoR3JvdXQsIGQpKSkpXG4gICAgfCBBc3Npc3RhbnQoYWN0aW9uKSA9PlxuICAgICAgcGVyZm9ybV9hY3Rpb25zKFxuICAgICAgICBtb2RlbCxcbiAgICAgICAgVXBkYXRlQXNzaXN0YW50LmFzc2lzdGFudF9hY3Rpb25fdG9fZWRpdG9yX2FjdGlvbnMobW9kZWwsIGFjdGlvbiksXG4gICAgICApXG4gICAgfCBCZW5jaG1hcmsoU3RhcnQpID0+XG4gICAgICBMaXN0Lml0ZXIoc2NoZWR1bGVfYWN0aW9uLCBCZW5jaG1hcmsuYWN0aW9uc18xKTtcbiAgICAgIEJlbmNobWFyay5zdGFydCgpO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgQmVuY2htYXJrKEZpbmlzaCkgPT5cbiAgICAgIEJlbmNobWFyay5maW5pc2goKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFN0ZXBwZXJBY3Rpb24oa2V5LCBTdGVwRm9yd2FyZChpZHgpKSA9PlxuICAgICAgbGV0IHIgPVxuICAgICAgICBtb2RlbC5yZXN1bHRzXG4gICAgICAgIHw+IE1vZGVsUmVzdWx0cy5maW5kKGtleSlcbiAgICAgICAgfD4gTW9kZWxSZXN1bHQuc3RlcF9mb3J3YXJkKGlkeCk7XG4gICAgICBPayh7Li4ubW9kZWwsIHJlc3VsdHM6IG1vZGVsLnJlc3VsdHMgfD4gTW9kZWxSZXN1bHRzLmFkZChrZXksIHIpfSk7XG4gICAgfCBTdGVwcGVyQWN0aW9uKGtleSwgU3RlcEJhY2t3YXJkKSA9PlxuICAgICAgbGV0IHIgPVxuICAgICAgICBtb2RlbC5yZXN1bHRzXG4gICAgICAgIHw+IE1vZGVsUmVzdWx0cy5maW5kKGtleSlcbiAgICAgICAgfD4gTW9kZWxSZXN1bHQuc3RlcF9iYWNrd2FyZChcbiAgICAgICAgICAgICB+c2V0dGluZ3M9bW9kZWwuZ2xvYmFscy5zZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sXG4gICAgICAgICAgICk7XG4gICAgICBPayh7Li4ubW9kZWwsIHJlc3VsdHM6IG1vZGVsLnJlc3VsdHMgfD4gTW9kZWxSZXN1bHRzLmFkZChrZXksIHIpfSk7XG4gICAgfCBTdGVwcGVyQWN0aW9uKGtleSwgSGlkZVN0ZXBwZXIpXG4gICAgfCBUb2dnbGVTdGVwcGVyKGtleSkgPT5cbiAgICAgIE9rKHtcbiAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgIHJlc3VsdHM6XG4gICAgICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgICAgIHw+IE1vZGVsUmVzdWx0cy51cGRhdGUoa2V5LCB2ID0+XG4gICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Ob0VsYWI6IE1vZGVsUmVzdWx0LnQpXG4gICAgICAgICAgICAgICAgIHw+IE1vZGVsUmVzdWx0LnRvZ2dsZV9zdGVwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgIH5zZXR0aW5ncz1tb2RlbC5nbG9iYWxzLnNldHRpbmdzLmNvcmUsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgKSxcbiAgICAgIH0pXG4gICAgfCBVcGRhdGVSZXN1bHQocmVzdWx0cykgPT5cbiAgICAgIGxldCByZXN1bHRzID1cbiAgICAgICAgTW9kZWxSZXN1bHRzLnVuaW9uKChfLCBfYSwgYikgPT4gU29tZShiKSwgbW9kZWwucmVzdWx0cywgcmVzdWx0cyk7XG4gICAgICBPayh7Li4ubW9kZWwsIHJlc3VsdHN9KTtcbiAgICB8IFVwZGF0ZUV2YWxzKGV2YWxzKSA9PlxuICAgICAgT2soe1xuICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgcmVzdWx0czpcbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgIChyZXN1bHRzLCAoa2V5LCBldmFsKSkgPT5cbiAgICAgICAgICAgICAgTW9kZWxSZXN1bHRzLnVwZGF0ZShcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgT3B0aW9uLm1hcChNb2RlbFJlc3VsdC51cGRhdGVfZXZhbHVhdGlvbihldmFsKSksXG4gICAgICAgICAgICAgICAgcmVzdWx0cyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgICAgICBldmFscyxcbiAgICAgICAgICApLFxuICAgICAgfSlcbiAgICB9O1xuICBtIHw+IFJlc3VsdC5tYXAofmY9dXBkYXRlX2NhY2hlZF9kYXRhKH5zY2hlZHVsZV9hY3Rpb24sIHVwZGF0ZSkpO1xufTtcbiIsImxldCBsYW0gPSBcIs67XCI7XG5sZXQgdXBfYXJyb3cgPSBcIuKGkVwiO1xubGV0IGRvd25fYXJyb3cgPSBcIuKGk1wiO1xubGV0IGxlZnRfYXJyb3cgPSBcIuKGkFwiO1xubGV0IHJpZ2h0X2Fycm93ID0gXCLihpJcIjtcbmxldCBuYnNwID0gXCJcXHhDMlxceEEwXCI7XG5sZXQgendzcCA9IFwi4oCLXCI7XG5cbmxldCB0eXBlQXJyb3dTeW0gPSBcIuKGklwiOyAvLyBVKzIxOTIgXCJSaWdodHdhcmRzIEFycm93XCJcbmxldCBjYXN0QXJyb3dTeW0gPSBcIuKHqFwiO1xuXG5sZXQgZWxsaXBzaXMgPSBcIlxceEUyXFx4ODBcXHhBNlwiO1xuXG4vLyBjb3BpZWQgZnJvbSBoYXplbFxuLy8gTk9URTogMzAlIGZhc3RlciB0aGFuIENhbW9taWxlXG5sZXQgbGVuZ3RoID0gKHM6IHN0cmluZyk6IGludCA9PiB7XG4gIGxldCBzdG9wID0gU3RyaW5nLmxlbmd0aChzKTtcbiAgbGV0IHJlYyBkaXN0YW5jZV9hdXggPSAoc3RhcnQ6IGludCwgY291bnQ6IGludCkgPT5cbiAgICBpZiAoc3RhcnQgKyBjb3VudCA+PSBzdG9wKSB7XG4gICAgICBzdG9wIC0gY291bnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBuID0gQ2hhci5jb2RlKFN0cmluZy51bnNhZmVfZ2V0KHMsIHN0YXJ0ICsgY291bnQpKTtcbiAgICAgIGlmIChuIDwgMHg4MCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCk7XG4gICAgICB9IGVsc2UgaWYgKG4gPCAweGUwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKG4gPCAweGYwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDMpO1xuICAgICAgfTtcbiAgICB9O1xuXG4gIGRpc3RhbmNlX2F1eCgwLCAwKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCB0cGF0X3ZpZXcgPSAodHBhdDogSGF6M2xjb3JlLlRQYXQudCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKHRwYXQudGVybSkge1xuICB8IFZhcih4KSA9PiB4XG4gIHwgXyA9PiBcIj9cIlxuICB9O1xuXG5sZXQgdHlfdmlldyA9IChjbHM6IHN0cmluZywgczogc3RyaW5nKTogTm9kZS50ID0+XG4gIGRpdih+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIGNsc10pLCBbdGV4dChzKV0pO1xuXG5sZXQgYWxpYXNfdmlldyA9IChzOiBzdHJpbmcpOiBOb2RlLnQgPT5cbiAgZGl2KH5hdHRyPWNsc3MoW1widHlwLWFsaWFzLXZpZXdcIl0pLCBbdGV4dChzKV0pO1xuXG5sZXQgcmVjIHZpZXdfdHkgPSAofnN0cmlwX291dGVyX3BhcmVucz1mYWxzZSwgdHk6IEhhejNsY29yZS5UeXAudCk6IE5vZGUudCA9PlxuICBzd2l0Y2ggKFR5cC50ZXJtX29mKHR5KSkge1xuICB8IFVua25vd24ocHJvdikgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBjbHNzKFtcInR5cC12aWV3XCIsIFwiYXRvbVwiLCBcInVua25vd25cIl0pLFxuICAgICAgICAgIEF0dHIudGl0bGUoVHlwLnNob3dfdHlwZV9wcm92ZW5hbmNlKHByb3YpKSxcbiAgICAgICAgXSksXG4gICAgICBbdGV4dChcIj9cIikgLyosIHByb3Zfdmlldyhwcm92KSovXSxcbiAgICApXG4gIHwgUGFyZW5zKHR5KSA9PiB2aWV3X3R5KHR5KVxuICB8IEludCA9PiB0eV92aWV3KFwiSW50XCIsIFwiSW50XCIpXG4gIHwgRmxvYXQgPT4gdHlfdmlldyhcIkZsb2F0XCIsIFwiRmxvYXRcIilcbiAgfCBTdHJpbmcgPT4gdHlfdmlldyhcIlN0cmluZ1wiLCBcIlN0cmluZ1wiKVxuICB8IEJvb2wgPT4gdHlfdmlldyhcIkJvb2xcIiwgXCJCb29sXCIpXG4gIHwgVmFyKG5hbWUpID0+IHR5X3ZpZXcoXCJWYXJcIiwgbmFtZSlcbiAgfCBSZWMobmFtZSwgdCkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiUmVjXCJdKSxcbiAgICAgIFt0ZXh0KFwiUmVjIFwiICsrIHRwYXRfdmlldyhuYW1lKSArKyBcIi4gXCIpLCB2aWV3X3R5KHQpXSxcbiAgICApXG4gIHwgRm9yYWxsKG5hbWUsIHQpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIkZvcmFsbFwiXSksXG4gICAgICBbdGV4dChcImZvcmFsbCBcIiArKyB0cGF0X3ZpZXcobmFtZSkgKysgXCIgLT4gXCIpLCB2aWV3X3R5KHQpXSxcbiAgICApXG4gIHwgTGlzdCh0KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJhdG9tXCIsIFwiTGlzdFwiXSksXG4gICAgICBbdGV4dChcIltcIiksIHZpZXdfdHkodCksIHRleHQoXCJdXCIpXSxcbiAgICApXG4gIHwgQXJyb3codDEsIHQyKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJBcnJvd1wiXSksXG4gICAgICBwYXJlbl92aWV3KHQxKSBAIFt0ZXh0KFwiIC0+IFwiKSwgdmlld190eSh0MildLFxuICAgIClcbiAgfCBQcm9kKFtdKSA9PiBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlByb2RcIl0pLCBbdGV4dChcIigpXCIpXSlcbiAgfCBQcm9kKFtfXSkgPT5cbiAgICBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlByb2RcIl0pLCBbdGV4dChcIlNpbmdsZXRvbiBQcm9kdWN0XCIpXSlcbiAgfCBQcm9kKFt0MCwgLi4udHNdKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJhdG9tXCIsIFwiUHJvZFwiXSksXG4gICAgICAoXG4gICAgICAgIGlmICghc3RyaXBfb3V0ZXJfcGFyZW5zKSB7XG4gICAgICAgICAgW3RleHQoXCIoXCIpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbXTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgQCBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiUHJvZFwiXSksXG4gICAgICAgICAgcGFyZW5fdmlldyh0MClcbiAgICAgICAgICBAIChcbiAgICAgICAgICAgIExpc3QubWFwKHQgPT4gW3RleHQoXCIsIFwiKSwgLi4ucGFyZW5fdmlldyh0KV0sIHRzKVxuICAgICAgICAgICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICAgIEAgKFxuICAgICAgICBpZiAoIXN0cmlwX291dGVyX3BhcmVucykge1xuICAgICAgICAgIFt0ZXh0KFwiKVwiKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgW107XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgKVxuICB8IFN1bSh0cykgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiU3VtXCJdKSxcbiAgICAgIHN3aXRjaCAodHMpIHtcbiAgICAgIHwgW10gPT4gW3RleHQoXCJOdWxsYXJ5IFN1bVwiKV1cbiAgICAgIHwgW3QwXSA9PiBbdGV4dChcIitcIildIEAgY3RyX3ZpZXcodDApXG4gICAgICB8IFt0MCwgLi4udHNdID0+XG4gICAgICAgIGxldCB0c192aWV3cyA9XG4gICAgICAgICAgTGlzdC5tYXAodCA9PiBbdGV4dChcIiArIFwiKV0gQCBjdHJfdmlldyh0KSwgdHMpIHw+IExpc3QuZmxhdHRlbjtcbiAgICAgICAgY3RyX3ZpZXcodDApIEAgdHNfdmlld3M7XG4gICAgICB9LFxuICAgIClcbiAgfCBBcChfKSA9PiBmYWlsd2l0aChcInR5cGUgYXBwbGljYXRpb24gaW4gdmlld1wiKVxuICB9XG5hbmQgY3RyX3ZpZXcgPVxuICBmdW5cbiAgfCBWYXJpYW50KGN0ciwgXywgTm9uZSkgPT4gW3RleHQoY3RyKV1cbiAgfCBWYXJpYW50KGN0ciwgXywgU29tZSh0eXApKSA9PiBbXG4gICAgICB0ZXh0KGN0ciArKyBcIihcIiksXG4gICAgICB2aWV3X3R5KHR5cCksXG4gICAgICB0ZXh0KFwiKVwiKSxcbiAgICBdXG4gIHwgQmFkRW50cnkodHlwKSA9PiBbdmlld190eSh0eXApXVxuXG5hbmQgcGFyZW5fdmlldyA9IHR5cCA9PlxuICBpZiAoVHlwLm5lZWRzX3BhcmVucyh0eXApKSB7XG4gICAgW3RleHQoXCIoXCIpLCB2aWV3X3R5KH5zdHJpcF9vdXRlcl9wYXJlbnM9dHJ1ZSwgdHlwKSwgdGV4dChcIilcIildO1xuICB9IGVsc2Uge1xuICAgIFt2aWV3X3R5KHR5cCldO1xuICB9O1xuXG5sZXQgdmlldyA9ICh0eTogSGF6M2xjb3JlLlR5cC50KTogTm9kZS50ID0+XG4gIGRpdl9jKFwidHlwLXdyYXBwZXJcIiwgW3ZpZXdfdHkodHkpXSk7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgcG9seV9pZF9leCA9IHtcbiAgc3ViX2lkOiBUeXBGdW4oQmFzaWMpLFxuICB0ZXJtOlxuICAgIG1rX2V4YW1wbGUoXG4gICAgICBcImxldCBpZCA6IFxcbiBmb3JhbGwgYSAtPiAoYSAtPiBhKSA9IFxcbiB0eXBmdW4gYSAtPiBcXG4gZnVuIHggOiBhIC0+IHggXFxuIGluIGlkXCIsXG4gICAgKSxcbiAgbWVzc2FnZTogXCJUaGUgcG9seW1vcnBoaWMgaWRlbnRpdHkgZnVuY3Rpb24uIEl0IG1heSBiZSBpbnN0YW50aWF0ZWQgYXQgYW55IHR5cGUgYSwgYWZ0ZXIgd2hpY2ggdGhlIGZ1bmN0aW9uIGFjdHMgYXMgdHlwZSAoYSAtPiBhKS5cIixcbn07XG5cbmxldCBfdHAgPSB0cGF0KFwiYVwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCB0eXBmdW5fdmFyOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhIHR5cGUgdGhhdCB3aGljaCBpcyBib3VuZCB0byB0aGUgWyp0eXBlIHZhcmlhYmxlKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIHR5cGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta190eXBmdW4oW1tzcGFjZSgpLCBfdHAsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IFR5cEZ1bmN0aW9uRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfdHApLCBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtwb2x5X2lkX2V4XSxcbiAgfTtcbn07XG5cbmxldCB0eXBlX2Z1bmN0aW9uc19iYXNpYyA9IHtpZDogVHlwRnVuY3Rpb25FeHAsIGZvcm1zOiBbdHlwZnVuX3Zhcl19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IHR5cGZ1bmFwcF9leHBfZXggPSB7XG4gIHN1Yl9pZDogVHlwRnVuQXAsXG4gIHRlcm06XG4gICAgbWtfZXhhbXBsZShcbiAgICAgIFwibGV0IGlkIDogXFxuIGZvcmFsbCBhIC0+IChhIC0+IGEpID0gXFxuIHR5cGZ1biBhIC0+IFxcbiBmdW4geCA6IGEgLT4geCBcXG4gaW4gaWRAPEludD5cIixcbiAgICApLFxuICBtZXNzYWdlOiBcIlRoZSBwb2x5bW9ycGhpYyBpZGVudGl0eSBmdW5jdGlvbiBpcyBpbnN0YW50aWF0ZWQgYXQgSW50LiBUaGUgdHlwZSB2YXJpYWJsZSBhIGlzIGJvdW5kIHRvIEludCBpbiB0aGUgdHlwZSBmdW5jdGlvbiBib2R5IGFuZCB0aGUgYm9keSBldmFsdWF0ZXMgdG8gdGhlIGlkZW50aXR5IGZ1bmN0aW9uIG9uIGludGVnZXJzLlwiLFxufTtcbmxldCBfZXhwX3RmdW4gPSBleHAoXCJlX3RmdW5cIik7XG5sZXQgX3R5cCA9IHR5cChcInR5XCIpO1xubGV0IHR5cGZ1bmFwcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmZfaWQ6IElkLnQsIH50eXBfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF90ZnVuKSwgZl9pZCksXG4gIChQaWVjZS5pZChfdHlwKSwgdHlwX2lkKSxcbl07XG5sZXQgdHlwZnVuYXBwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBcHBsaWVzIHRoZSBbKnR5cGUgZnVuY3Rpb24qXSglcykgdG8gdGhlIFsqdHlwZSpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBUeXBGdW5BcEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfdGZ1biwgbWtfYXBfZXhwX3R5cChbW190eXBdXSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0eXBmdW5hcHBfZXhwX2V4XSxcbiAgfTtcbn07XG5cbmxldCB0eXBmdW5hcHM6IGdyb3VwID0ge2lkOiBUeXBGdW5BcEV4cCwgZm9ybXM6IFt0eXBmdW5hcHBfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xubGV0IF9wYXQgPSBwYXQoXCJwXCIpO1xubGV0IF90eXAgPSB0eXAoXCJ0eVwiKTtcbmxldCB0eXBhbm5fcGF0X2NvbG9yaW5nX2lkcyA9XG4gICAgKH5wYXRfaWQ6IElkLnQsIH50eXBfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdCksIHBhdF9pZCksXG4gIChQaWVjZS5pZChfdHlwKSwgdHlwX2lkKSxcbl07XG5sZXQgdHlwYW5uX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgbWF0Y2ggdGhlIFt0eXBlIGFubm90YXRlZCBwYXR0ZXJuXSglcykgYW5kIGhhdmUgdGhlIFtpbmRpY2F0ZWQgdHlwZV0oJXMpIG1hdGNoIHRoaXMgdHlwZSBhbm5vdGF0aW9uIHBhdHRlcm4uXCI7XG4gIHtcbiAgICBpZDogVHlwQW5uUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdCwgc3BhY2UoKSwgdHlwZWFubigpLCBzcGFjZSgpLCBfdHlwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0eXBhbm46IGdyb3VwID0ge2lkOiBUeXBBbm5QYXQsIGZvcm1zOiBbdHlwYW5uX3BhdF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF90cGF0ID0gdHBhdChcInBcIik7XG5sZXQgX3R5cF9kZWYgPSB0eXAoXCJ0eV9kZWZcIik7XG5sZXQgdHlhbGlhc19iYXNlX2V4cF9jb2xvcmluZ19pZHMgPSAofnRwYXRfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpID0+IFtcbiAgKFBpZWNlLmlkKF90cGF0KSwgdHBhdF9pZCksXG4gIChQaWVjZS5pZChfdHlwX2RlZiksIGRlZl9pZCksXG5dO1xubGV0IHR5YWxpYXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBbKnR5cGUqXSglcykgaXMgYm91bmQgdG8gdGhlIFsqdHlwZSB2YXJpYWJsZSpdKCVzKSBpbiB0aGUgYm9keS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfdHlhbGlhcyhbW3NwYWNlKCksIF90cGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF90eXBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBUeUFsaWFzRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHR5YWxpYXNfZXhwczogZ3JvdXAgPSB7aWQ6IFR5QWxpYXNFeHAsIGZvcm1zOiBbdHlhbGlhc19leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCB0dXBsZV90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyB0dXBsZSB0eXBlIGNsYXNzaWZpZXMgJXMtdHVwbGVzIHdpdGggY29ycmVzcG9uZGluZyBlbGVtZW50IHR5cGVzLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV90eXAoKTtcbiAge1xuICAgIGlkOiBUdXBsZVR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcInR5MVwiKSwgY29tbWEsIHNwYWNlKCksIHR5cChcIi4uLlwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3R5cChcInR5MVwiKSwgY29tbWFfdHlwKCksIHR5cChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHVwbGUwX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGVkZ2UtY2FzZSB0dXBsZSB0eXBlLCBhbHNvIGtub3duIGFzIHRoZSBgdW5pdGAgdHlwZSwgY2xhc3NpZmllcyAwLXR1cGxlcywgb2Ygd2hpY2ggdGhlcmUgaXMgb25seSBvbmUuXCI7XG4gIHtcbiAgICBpZDogVHVwbGUwVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiKClcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IF90eXBfZWxlbTEgPSB0eXAoXCJ0eTFcIik7XG5sZXQgX3R5cF9lbGVtMiA9IHR5cChcInR5MlwiKTtcbmxldCB0dXBsZTJfdHlwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5lbGVtMV9pZDogSWQudCwgfmVsZW0yX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfZWxlbTEpLCBlbGVtMV9pZCksXG4gIChQaWVjZS5pZChfdHlwX2VsZW0yKSwgZWxlbTJfaWQpLFxuXTtcbmxldCB0dXBsZTJfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgdHVwbGUgdHlwZSBjbGFzc2lmaWVzIDItdHVwbGVzIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIFtmaXJzdCBlbGVtZW50IHR5cGVdKCVzKSBhbmQgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIFtzZWNvbmQgZWxlbWVudCB0eXBlXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3R5cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlMlR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW190eXBfZWxlbTEsIGNvbW1hLCBzcGFjZSgpLCBfdHlwX2VsZW0yXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbdHlwKFwidHkxXCIpLCBjb21tYV90eXAoKSwgdHlwKFwidHkyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3R5cF9lbGVtMSA9IHR5cChcInR5MVwiKTtcbmxldCBfdHlwX2VsZW0yID0gdHlwKFwidHkyXCIpO1xubGV0IF90eXBfZWxlbTMgPSB0eXAoXCJ0eTNcIik7XG5sZXQgdHVwbGUzX3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZWxlbTFfaWQ6IElkLnQsIH5lbGVtMl9pZDogSWQudCwgfmVsZW0zX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfZWxlbTEpLCBlbGVtMV9pZCksXG4gIChQaWVjZS5pZChfdHlwX2VsZW0yKSwgZWxlbTJfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9lbGVtMyksIGVsZW0zX2lkKSxcbl07XG5sZXQgdHVwbGUzX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHR1cGxlIHR5cGUgY2xhc3NpZmllcyAzLXR1cGxlcyB3aXRoIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBbZmlyc3QgZWxlbWVudCB0eXBlXSglcyksIHNlY29uZCBlbGVtZW50IG9mIHRoZSBbc2Vjb25kIGVsZW1lbnQgdHlwZV0oJXMpLCBhbmQgdGhpcmQgZWxlbWVudCBvZiB0aGUgW3RoaXJkIGVsZW1lbnQgdHlwZV0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV90eXAoKTtcbiAge1xuICAgIGlkOiBUdXBsZTNUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIF90eXBfZWxlbTEsXG4gICAgICBjb21tYV90eXAoKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfdHlwX2VsZW0yLFxuICAgICAgY29tbWEsXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3R5cF9lbGVtMyxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoY29tbWEpLFxuICAgICAgICBbdHlwKFwidHkxXCIpLCBjb21tYV90eXAoKSwgdHlwKFwidHkyXCIpLCBjb21tYV90eXAoKSwgdHlwKFwidHkzXCIpXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0dXBsZTogZ3JvdXAgPSB7aWQ6IFR1cGxlVHlwLCBmb3JtczogW3R1cGxlX3R5cF19O1xuXG5sZXQgdHVwbGUwOiBncm91cCA9IHtpZDogVHVwbGUwVHlwLCBmb3JtczogW3R1cGxlMF90eXBdfTtcblxubGV0IHR1cGxlMjogZ3JvdXAgPSB7aWQ6IFR1cGxlMlR5cCwgZm9ybXM6IFt0dXBsZTJfdHlwLCB0dXBsZV90eXBdfTtcblxubGV0IHR1cGxlMzogZ3JvdXAgPSB7aWQ6IFR1cGxlM1R5cCwgZm9ybXM6IFt0dXBsZTNfdHlwLCB0dXBsZV90eXBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCB0dXBsZV9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSAlcy10dXBsZXMgd2l0aCBlbGVtZW50cyBtYXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IHBhdHRlcm5zIG1hdGNoIHRoaXMgdHVwbGUgcGF0dGVybi5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIHtcbiAgICBpZDogVHVwbGVQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtwYXQoXCJwMVwiKSwgY29tbWEsIHNwYWNlKCksIHBhdChcIi4uLlwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IHR1cGxlX3BhdF9zaXplMl9jb2xvcmluZ19pZHMgPVxuICAgICh+ZWxlbTFfaWQ6IElkLnQsIH5lbGVtMl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0MSksIGVsZW0xX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQyKSwgZWxlbTJfaWQpLFxuXTtcbmxldCB0dXBsZV9wYXRfc2l6ZTI6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSAyLXR1cGxlcyB3aXRoIGZpcnN0IGVsZW1lbnQgbWF0Y2hpbmcgdGhlIFtmaXJzdCBlbGVtZW50IHBhdHRlcm5dKCVzKSBhbmQgc2Vjb25kIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIFtzZWNvbmQgZWxlbWVudCBwYXR0ZXJuXSglcykgbWF0Y2ggdGhpcyB0dXBsZSBwYXR0ZXJuLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAge1xuICAgIGlkOiBUdXBsZTJQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfcGF0MSwgY29tbWEsIHNwYWNlKCksIF9wYXQyXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfcGF0MyA9IHBhdChcInAzXCIpO1xubGV0IHR1cGxlX3BhdF9zaXplM19jb2xvcmluZ19pZHMgPVxuICAgICh+ZWxlbTFfaWQ6IElkLnQsIH5lbGVtMl9pZDogSWQudCwgfmVsZW0zX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXQxKSwgZWxlbTFfaWQpLFxuICAoUGllY2UuaWQoX3BhdDIpLCBlbGVtMl9pZCksXG4gIChQaWVjZS5pZChfcGF0MyksIGVsZW0zX2lkKSxcbl07XG5sZXQgdHVwbGVfcGF0X3NpemUzOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgMy10dXBsZXMgd2l0aCBmaXJzdCBlbGVtZW50IG1hdGNoaW5nIHRoZSBbZmlyc3QgZWxlbWVudCBwYXR0ZXJuXSglcyksIHNlY29uZCBlbGVtZW50IG1hdGNoaW5nIHRoZSBbc2Vjb25kIGVsZW1lbnQgcGF0dGVybl0oJXMpLCBhbmQgdGhpcmQgZWxlbWVudCBtYXRjaGluZyB0aGUgW3RoaXJkIGVsZW1lbnQgcGF0dGVybl0oJXMpIG1hdGNoIHRoaXMgdHVwbGUgcGF0dGVybi5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIHtcbiAgICBpZDogVHVwbGUzUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfcGF0MSxcbiAgICAgIGNvbW1hX3BhdCgpLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF9wYXQyLFxuICAgICAgY29tbWEsXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3BhdDMsXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKGNvbW1hKSxcbiAgICAgICAgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDJcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwM1wiKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHVwbGU6IGdyb3VwID0ge2lkOiBUdXBsZVBhdCwgZm9ybXM6IFt0dXBsZV9wYXRdfTtcbmxldCB0dXBsZTI6IGdyb3VwID0ge2lkOiBUdXBsZTJQYXQsIGZvcm1zOiBbdHVwbGVfcGF0X3NpemUyLCB0dXBsZV9wYXRdfTtcbmxldCB0dXBsZTM6IGdyb3VwID0ge2lkOiBUdXBsZTNQYXQsIGZvcm1zOiBbdHVwbGVfcGF0X3NpemUzLCB0dXBsZV9wYXRdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCB0dXBsZV9leGFtcGxlXzEgPSB7XG4gIHN1Yl9pZDogVHVwbGUxLFxuICB0ZXJtOiBta19leGFtcGxlKFwiKHRydWUsIDEpXCIpLFxuICBtZXNzYWdlOiBcIkEgdHVwbGUgd2l0aCBmaXJzdCBlbG1lbnQgdHJ1ZSBhbmQgc2Vjb25kIGVsZW1lbnQgMS5cIixcbn07XG5sZXQgdHVwbGVfZXhhbXBsZV8yID0ge1xuICBzdWJfaWQ6IFR1cGxlMixcbiAgdGVybTogbWtfZXhhbXBsZShcIigxLCAyLCAzKVwiKSxcbiAgbWVzc2FnZTogXCJBIHR1cGxlIHdpdGggZmlyc3QgZWxlbWVudCAxLCBzZWNvbmQgZWxlbWVudCAyLCBhbmQgdGhpcmQgZWxlbWVudCAzLlwiLFxufTtcbmxldCB0dXBsZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIHR1cGxlIGhhcyAlcyBlbGVtZW50cy5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfZXhwKCk7XG4gIHtcbiAgICBpZDogVHVwbGVFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtleHAoXCJlMVwiKSwgY29tbWEsIHNwYWNlKCksIGV4cChcIi4uLlwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW2V4cChcImUxXCIpLCBjb21tYV9leHAoKSwgZXhwKFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGVfZXhhbXBsZV8xLCB0dXBsZV9leGFtcGxlXzJdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgdHVwbGVfZXhwX3NpemUyX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5leHAxX2lkOiBJZC50LCB+ZXhwMl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoUGllY2UuaWQoX2V4cDEpLCBleHAxX2lkKSwgKFBpZWNlLmlkKF9leHAyKSwgZXhwMl9pZCldO1xufTtcbmxldCB0dXBsZV9leHBfc2l6ZTI6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIDItdHVwbGUgaGFzIGEgW2ZpcnN0XSglcykgYW5kIFtzZWNvbmRdKCVzKSBlbGVtZW50LlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9leHAoKTtcbiAge1xuICAgIGlkOiBUdXBsZTJFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgY29tbWEsIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbZXhwKFwiZTFcIiksIGNvbW1hX2V4cCgpLCBleHAoXCJlMlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R1cGxlX2V4YW1wbGVfMV0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBfZXhwMyA9IGV4cChcImUzXCIpO1xubGV0IHR1cGxlX2V4cF9zaXplM19jb2xvcmluZ19pZHMgPVxuICAgICh+ZXhwMV9pZDogSWQudCwgfmV4cDJfaWQ6IElkLnQsIH5leHAzX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgW1xuICAgIChQaWVjZS5pZChfZXhwMSksIGV4cDFfaWQpLFxuICAgIChQaWVjZS5pZChfZXhwMiksIGV4cDJfaWQpLFxuICAgIChQaWVjZS5pZChfZXhwMyksIGV4cDNfaWQpLFxuICBdO1xufTtcbmxldCB0dXBsZV9leHBfc2l6ZTM6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIDMtdHVwbGUgaGFzIGEgW2ZpcnN0XSglcyksIFtzZWNvbmRdKCVzKSwgYW5kIFt0aGlyZF0oJXMpIGVsZW1lbnQuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX2V4cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlM0V4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgX2V4cDEsXG4gICAgICBjb21tYV9leHAoKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfZXhwMixcbiAgICAgIGNvbW1hLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF9leHAzLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFtleHAoXCJlMVwiKSwgY29tbWFfZXhwKCksIGV4cChcImUyXCIpLCBjb21tYV9leHAoKSwgZXhwKFwiZTNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZV9leGFtcGxlXzJdLFxuICB9O1xufTtcblxubGV0IHR1cGxlczogZ3JvdXAgPSB7aWQ6IFR1cGxlRXhwLCBmb3JtczogW3R1cGxlX2V4cF19O1xuXG5sZXQgdHVwbGVzMjogZ3JvdXAgPSB7aWQ6IFR1cGxlMkV4cCwgZm9ybXM6IFt0dXBsZV9leHBfc2l6ZTIsIHR1cGxlX2V4cF19O1xuXG5sZXQgdHVwbGVzMzogZ3JvdXAgPSB7aWQ6IFR1cGxlM0V4cCwgZm9ybXM6IFt0dXBsZV9leHBfc2l6ZTMsIHR1cGxlX2V4cF19O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcblxubW9kdWxlIFRlc3RTdGF0dXMgPSBIYXozbGNvcmUuVGVzdFN0YXR1cztcbm1vZHVsZSBUZXN0TWFwID0gSGF6M2xjb3JlLlRlc3RNYXA7XG5tb2R1bGUgVGVzdFJlc3VsdHMgPSBIYXozbGNvcmUuVGVzdFJlc3VsdHM7XG5tb2R1bGUgSW50ZXJmYWNlID0gSGF6M2xjb3JlLkludGVyZmFjZTtcblxuLy8gbGV0IHRlc3RfaW5zdGFuY2VfdmlldyA9XG4vLyAgICAgKFxuLy8gICAgICAgfnNldHRpbmdzLFxuLy8gICAgICAgfmluamVjdCxcbi8vICAgICAgIH5mb250X21ldHJpY3MsXG4vLyAgICAgICB+aW5mb21hcCxcbi8vICAgICAgIChkLCBzdGF0dXMpOiBUZXN0TWFwLmluc3RhbmNlX3JlcG9ydCxcbi8vICAgICApID0+XG4vLyAgIGRpdihcbi8vICAgICB+YXR0cj1cbi8vICAgICAgIEF0dHIubWFueShbY2xzcyhbXCJ0ZXN0LWluc3RhbmNlXCIsIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyldKV0pLFxuLy8gICAgIFtcbi8vICAgICAgIFJlYWRPbmx5RWRpdG9yLnZpZXcoXG4vLyAgICAgICAgIH5pbmplY3QsXG4vLyAgICAgICAgIH5zZXR0aW5ncyxcbi8vICAgICAgICAgfmZvbnRfbWV0cmljcyxcbi8vICAgICAgICAgfndpZHRoPTQwLFxuLy8gICAgICAgICB+cmVzdWx0X2tleT1cIlwiLFxuLy8gICAgICAgICB+aW5mb21hcCxcbi8vICAgICAgICAgZCxcbi8vICAgICAgICksXG4vLyAgICAgICApXG4vLyAgICAgICBESENvZGUudmlldyhcbi8vICAgICAgICAgfmluamVjdCxcbi8vICAgICAgICAgfnNldHRpbmdzLFxuLy8gICAgICAgICB+c2VsZWN0ZWRfaG9sZV9pbnN0YW5jZT1Ob25lLFxuLy8gICAgICAgICB+Zm9udF9tZXRyaWNzLFxuLy8gICAgICAgICB+d2lkdGg9NDAsXG4vLyAgICAgICAgIH5yZXN1bHRfa2V5PVwiXCIsXG4vLyAgICAgICAgIH5pbmZvbWFwLFxuLy8gICAgICAgICBkLFxuLy8gICAgICAgKSxcbi8vICAgICBdLFxuLy8gICApO1xuXG5sZXQganVtcF90b190ZXN0ID0gKH5pbmplY3QsIHBvcywgaWQsIF8pID0+IHtcbiAgbGV0IGVmZmVjdDEgPSBpbmplY3QoVXBkYXRlLk1ha2VBY3RpdmUoRXhlcmNpc2VzKHBvcywgTWFpbkVkaXRvcikpKTtcbiAgbGV0IGVmZmVjdDIgPSBpbmplY3QoVXBkYXRlLlBlcmZvcm1BY3Rpb24oSnVtcChUaWxlSWQoaWQpKSkpO1xuICBFZmZlY3QuYmluZChlZmZlY3QxLCB+Zj1fcmVzdWx0MSA9PiBlZmZlY3QyKTtcbn07XG5cbi8vIGxldCB0ZXN0X3JlcG9ydF92aWV3ID1cbi8vICAgICAoXG4vLyAgICAgICB+c2V0dGluZ3MsXG4vLyAgICAgICB+aW5qZWN0LFxuLy8gICAgICAgfmZvbnRfbWV0cmljcyxcbi8vICAgICAgIH5kZXNjcmlwdGlvbjogb3B0aW9uKHN0cmluZyk9Tm9uZSxcbi8vICAgICAgIH5pbmZvbWFwLFxuLy8gICAgICAgaTogaW50LFxuLy8gICAgICAgKGlkLCBpbnN0YW5jZV9yZXBvcnRzKTogVGVzdE1hcC5yZXBvcnQsXG4vLyAgICAgKSA9PiB7XG4vLyAgIGxldCBzdGF0dXMgPVxuLy8gICAgIGluc3RhbmNlX3JlcG9ydHMgfD4gVGVzdE1hcC5qb2ludF9zdGF0dXMgfD4gVGVzdFN0YXR1cy50b19zdHJpbmc7XG4vLyAgIGRpdihcbi8vICAgICB+YXR0cj1cbi8vICAgICAgIEF0dHIubWFueShbXG4vLyAgICAgICAgIEF0dHIuY2xhc3NfKFwidGVzdC1yZXBvcnRcIiksXG4vLyAgICAgICAgIEF0dHIub25fY2xpY2soanVtcF90b190ZXN0KH5pbmplY3QsIFlvdXJUZXN0c1Rlc3RpbmcsIGlkKSksXG4vLyAgICAgICBdKSxcbi8vICAgICBbXG4vLyAgICAgICBkaXYoXG4vLyAgICAgICAgIH5hdHRyPWNsc3MoW1widGVzdC1pZFwiLCBcIlRlc3RcIiArKyBzdGF0dXNdKSxcbi8vICAgICAgICAgLy8gbm90ZTogcHJpbnRzIGxleGljYWwgaW5kZXgsIG5vdCBpZFxuLy8gICAgICAgICBbdGV4dChzdHJpbmdfb2ZfaW50KGkgKyAxKSldLFxuLy8gICAgICAgKSxcbi8vICAgICAgIGRpdihcbi8vICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LWluc3RhbmNlc1wiKSxcbi8vICAgICAgICAgTGlzdC5tYXAoXG4vLyAgICAgICAgICAgdGVzdF9pbnN0YW5jZV92aWV3KH5pbmZvbWFwLCB+c2V0dGluZ3MsIH5pbmplY3QsIH5mb250X21ldHJpY3MpLFxuLy8gICAgICAgICAgIGluc3RhbmNlX3JlcG9ydHMsXG4vLyAgICAgICAgICksXG4vLyAgICAgICApLFxuLy8gICAgIF1cbi8vICAgICBAIChcbi8vICAgICAgIHN3aXRjaCAoZGVzY3JpcHRpb24pIHtcbi8vICAgICAgIHwgTm9uZSA9PiBbXVxuLy8gICAgICAgfCBTb21lKGQpID0+IFtkaXYofmF0dHI9Y2xzcyhbXCJ0ZXN0LWRlc2NyaXB0aW9uXCJdKSwgW3RleHQoZCldKV1cbi8vICAgICAgIH1cbi8vICAgICApLFxuLy8gICApO1xuLy8gfTtcblxuLy8gbGV0IHRlc3RfcmVwb3J0c192aWV3ID1cbi8vICAgICAoXG4vLyAgICAgICB+c2V0dGluZ3MsXG4vLyAgICAgICB+aW5qZWN0LFxuLy8gICAgICAgfmZvbnRfbWV0cmljcyxcbi8vICAgICAgIH5pbmZvbWFwLFxuLy8gICAgICAgfnRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuLy8gICAgICkgPT5cbi8vICAgZGl2KFxuLy8gICAgIH5hdHRyPWNsc3MoW1wicGFuZWwtYm9keVwiLCBcInRlc3QtcmVwb3J0c1wiXSksXG4vLyAgICAgc3dpdGNoICh0ZXN0X3Jlc3VsdHMpIHtcbi8vICAgICB8IE5vbmUgPT4gW05vZGUudGV4dChcIk5vIHRlc3QgcmVwb3J0IGF2YWlsYWJsZS5cIildXG4vLyAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbi8vICAgICAgIExpc3QubWFwaShcbi8vICAgICAgICAgKGksIHIpID0+XG4vLyAgICAgICAgICAgdGVzdF9yZXBvcnRfdmlldyhcbi8vICAgICAgICAgICAgIH5zZXR0aW5ncyxcbi8vICAgICAgICAgICAgIH5pbmplY3QsXG4vLyAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuLy8gICAgICAgICAgICAgfmluZm9tYXAsXG4vLyAgICAgICAgICAgICB+ZGVzY3JpcHRpb249TGlzdC5udGhfb3B0KHRlc3RfcmVzdWx0cy5kZXNjcmlwdGlvbnMsIGkpLFxuLy8gICAgICAgICAgICAgaSxcbi8vICAgICAgICAgICAgIHIsXG4vLyAgICAgICAgICAgKSxcbi8vICAgICAgICAgdGVzdF9yZXN1bHRzLnRlc3RfbWFwLFxuLy8gICAgICAgKVxuLy8gICAgIH0sXG4vLyAgICk7XG5cbmxldCB0ZXN0X2Jhcl9zZWdtZW50ID0gKH5pbmplY3RfanVtcCwgKGlkLCByZXBvcnRzKSkgPT4ge1xuICBsZXQgc3RhdHVzID0gcmVwb3J0cyB8PiBUZXN0TWFwLmpvaW50X3N0YXR1cyB8PiBUZXN0U3RhdHVzLnRvX3N0cmluZztcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJzZWdtZW50XCIsIHN0YXR1c10pLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT4gaW5qZWN0X2p1bXAoaWQpKSxcbiAgICAgIF0pLFxuICAgIFtdLFxuICApO1xufTtcblxubGV0IHRlc3RfYmFyID0gKH5pbmplY3RfanVtcCwgfnRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1iYXJcIiksXG4gICAgTGlzdC5tYXAodGVzdF9iYXJfc2VnbWVudCh+aW5qZWN0X2p1bXApLCB0ZXN0X3Jlc3VsdHMudGVzdF9tYXApLFxuICApO1xuXG4vLyByZXN1bHRfc3VtbWFyeV9zdHIgYW5kIHRlc3Rfc3VtbWFyeV9zdHIgaGF2ZSBiZWVuIG1vdmVkIHRvIGhhejNsY29yZS9UZXN0UmVzdWx0cy5yZVxuXG5sZXQgcGVyY2VudF92aWV3ID0gKG46IGludCwgcDogaW50KTogTm9kZS50ID0+IHtcbiAgbGV0IHBlcmNlbnRhZ2UgPVxuICAgIG4gPT0gMCA/IDEwMC4gOiAxMDAuICouIGZsb2F0X29mX2ludChwKSAvLiBmbG9hdF9vZl9pbnQobik7XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInRlc3QtcGVyY2VudFwiLCBuID09IHAgPyBcImFsbC1wYXNzXCIgOiBcInNvbWUtZmFpbFwiXSksXG4gICAgW3RleHQoUHJpbnRmLnNwcmludGYoXCIlLjBmJSVcIiwgcGVyY2VudGFnZSkpXSxcbiAgKTtcbn07XG5cbmxldCB0ZXN0X3BlcmNlbnRhZ2UgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KTogTm9kZS50ID0+XG4gIHBlcmNlbnRfdmlldyh0ZXN0X3Jlc3VsdHMudG90YWwsIHRlc3RfcmVzdWx0cy5wYXNzaW5nKTtcblxubGV0IHRlc3RfdGV4dCA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpOiBOb2RlLnQgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC10ZXh0XCIpLFxuICAgIFtcbiAgICAgIHRlc3RfcGVyY2VudGFnZSh0ZXN0X3Jlc3VsdHMpLFxuICAgICAgZGl2KFt0ZXh0KFwiOlwiKV0pLFxuICAgICAgdGV4dChUZXN0UmVzdWx0cy50ZXN0X3N1bW1hcnlfc3RyKHRlc3RfcmVzdWx0cykpLFxuICAgIF0sXG4gICk7XG5cbmxldCB0ZXN0X3N1bW1hcnkgPSAofmluamVjdF9qdW1wLCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1widGVzdC1zdW1tYXJ5XCJdKSxcbiAgICB7XG4gICAgICBzd2l0Y2ggKHRlc3RfcmVzdWx0cykge1xuICAgICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlc3VsdHMgYXZhaWxhYmxlLlwiKV1cbiAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+IFtcbiAgICAgICAgICB0ZXN0X3RleHQodGVzdF9yZXN1bHRzKSxcbiAgICAgICAgICB0ZXN0X2Jhcih+aW5qZWN0X2p1bXAsIH50ZXN0X3Jlc3VsdHMpLFxuICAgICAgICBdXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG59O1xuXG5sZXQgdmlld19vZl9tYWluX3RpdGxlX2JhciA9ICh0aXRsZV90ZXh0OiBzdHJpbmcpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1widGl0bGUtYmFyXCIsIFwicGFuZWwtdGl0bGUtYmFyXCJdKV0pLFxuICAgIFtOb2RlLnRleHQodGl0bGVfdGV4dCldLFxuICApO1xuXG4vLyBsZXQgaW5zcGVjdG9yX3ZpZXcgPVxuLy8gICAgIChcbi8vICAgICAgIH5zZXR0aW5ncyxcbi8vICAgICAgIH5pbmplY3QsXG4vLyAgICAgICB+Zm9udF9tZXRyaWNzLFxuLy8gICAgICAgfnRlc3RfbWFwOiBUZXN0TWFwLnQsXG4vLyAgICAgICB+aW5mb21hcCxcbi8vICAgICAgIGlkOiBIYXozbGNvcmUuSWQudCxcbi8vICAgICApXG4vLyAgICAgOiBvcHRpb24odCkgPT4ge1xuLy8gICBzd2l0Y2ggKFRlc3RNYXAubG9va3VwKGlkLCB0ZXN0X21hcCkpIHtcbi8vICAgfCBTb21lKGluc3RhbmNlcykgd2hlbiBUZXN0TWFwLmpvaW50X3N0YXR1cyhpbnN0YW5jZXMpICE9IEluZGV0ID0+XG4vLyAgICAgU29tZShcbi8vICAgICAgIGRpdihcbi8vICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LWluc3BlY3RvclwiKSxcbi8vICAgICAgICAgW1xuLy8gICAgICAgICAgIGRpdihcbi8vICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1pbnN0YW5jZXNcIiksXG4vLyAgICAgICAgICAgICBMaXN0Lm1hcChcbi8vICAgICAgICAgICAgICAgdGVzdF9pbnN0YW5jZV92aWV3KH5zZXR0aW5ncywgfmluamVjdCwgfmZvbnRfbWV0cmljcywgfmluZm9tYXApLFxuLy8gICAgICAgICAgICAgICBpbnN0YW5jZXMsXG4vLyAgICAgICAgICAgICApLFxuLy8gICAgICAgICAgICksXG4vLyAgICAgICAgIF0sXG4vLyAgICAgICApLFxuLy8gICAgIClcbi8vICAgfCBfID0+IE5vbmVcbi8vICAgfTtcbi8vIH07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgdGVzdF90cnVlX2V4ID0ge1xuICBzdWJfaWQ6IFRlc3RUcnVlLFxuICB0ZXJtOiBta19leGFtcGxlKFwidGVzdCB0cnVlIGVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGlzIGlzIHJlcG9ydGVkIGFzIGEgcGFzc2luZyB0ZXN0IGJlY2F1c2UgdGhlIGJvZHkgb2YgdGhlIHRlc3QgaXMgdHJ1ZS5cIixcbn07XG4vLyBUT0RPIGFyZSB0aGVzZSByZWFsbHkgdGhlIGNvcnJlY3QgbWVzc2FnZXMvZXhwbGFuYXRpb25zOyBtYXliZSBpbmNsdWRlIHNvbWV0aGluZyBhYm91dCB0aGUgcmVzdWx0IGJlaW5nIHRyaXZcbmxldCB0ZXN0X2ZhbHNlX2V4ID0ge1xuICBzdWJfaWQ6IFRlc3RGYWxzZSxcbiAgdGVybTogbWtfZXhhbXBsZShcInRlc3QgMyA8IDEgZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoaXMgaXMgcmVwb3J0ZWQgYXMgYSBmYWlsaW5nIHRlc3QgYmVjYXVzZSB0aGUgYm9keSBvZiB0aGUgdGVzdCBpcyAzIDwgMSB3aGljaCBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IF9leHBfYm9keSA9IGV4cChcImVcIik7XG5sZXQgdGVzdF9leHBfY29sb3JpbmdfaWRzID0gKH5ib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfYm9keSksIGJvZHlfaWQpLFxuXTtcbmxldCB0ZXN0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypib2R5Kl0oJXMpIG9mIHRoZSB0ZXN0IGV2YWx1dGVzIHRvIGB0cnVlYCwgdGhlIHRlc3QgcGFzc2VzLiBPdGhlcndpc2UsIHRoZSB0ZXN0IGZhaWxzLlwiO1xuICB7XG4gICAgaWQ6IFRlc3RFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtta190ZXN0KFtbc3BhY2UoKSwgX2V4cF9ib2R5LCBzcGFjZSgpXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdGVzdF90cnVlX2V4LCB0ZXN0X2ZhbHNlX2V4XSxcbiAgfTtcbn07XG5cbmxldCB0ZXN0czogZ3JvdXAgPSB7aWQ6IFRlc3RFeHAsIGZvcm1zOiBbdGVzdF9leHBdfTtcbiIsIm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgaW50X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYEludGAgdHlwZSBjbGFzc2lmaWVzIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZXMuXCI7XG4gIHtcbiAgICBpZDogSW50VHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiSW50XCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBmbG9hdF90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIGBGbG9hdGAgdHlwZSBjbGFzc2lmaWVzIDY0LWJpdCBmbG9hdGluZy1wb2ludCB2YWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBzdGFuZGFyZC5cIjtcbiAge1xuICAgIGlkOiBGbG9hdFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcIkZsb2F0XCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBib29sX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYEJvb2xgIHR5cGUgY2xhc3NpZmllcyBib29sZWFuIHZhbHVlcy5cIjtcbiAge1xuICAgIGlkOiBCb29sVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiQm9vbFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgc3RyX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYFN0cmluZ2AgdHlwZSBjbGFzc2lmaWVzIHN0cmluZyB2YWx1ZXMuXCI7XG4gIHtcbiAgICBpZDogU3RyVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiU3RyaW5nXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB2YXJfdHlwID0gKG5hbWU6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcImAlc2AgaXMgYSB0eXBlIHZhcmlhYmxlLlwiO1xuICB7XG4gICAgaWQ6IFZhclR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW25hbWUgfD4gYWJicmV2aWF0ZSB8PiB0eXBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGludDogZ3JvdXAgPSB7aWQ6IEludFR5cCwgZm9ybXM6IFtpbnRfdHlwXX07XG5cbmxldCBmbG9hdDogZ3JvdXAgPSB7aWQ6IEZsb2F0VHlwLCBmb3JtczogW2Zsb2F0X3R5cF19O1xuXG5sZXQgYm9vbDogZ3JvdXAgPSB7aWQ6IEJvb2xUeXAsIGZvcm1zOiBbYm9vbF90eXBdfTtcblxubGV0IHN0cjogZ3JvdXAgPSB7aWQ6IFN0clR5cCwgZm9ybXM6IFtzdHJfdHlwXX07XG5cbmxldCB2YXIgPSAobmFtZTogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBWYXJUeXAsIGZvcm1zOiBbdmFyX3R5cChuYW1lKV19O1xuIiwib3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5sZXQgd2lsZF9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlICp3aWxkY2FyZCBwYXR0ZXJuKiBtYXRjaGVzIGFueSBleHByZXNzaW9uLlwiO1xuICB7XG4gICAgaWQ6IFdpbGRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtwYXQoXCJfXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBpbnRsaXRfcGF0ID0gKGk6IGludCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZSBgJWlgIG1hdGNoIHRoZSAqYCVpYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBJbnRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtpIHw+IHN0cmluZ19vZl9pbnQgfD4gYWJicmV2aWF0ZSB8PiBwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGZsb2F0bGl0X3BhdCA9IChmOiBmbG9hdCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZSBgJWZgIG1hdGNoIHRoZSAqYCVmYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBGbG9hdFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2YgfD4gc3RyaW5nX29mX2Zsb2F0IHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBib29sbGl0X3BhdCA9IChiOiBib29sKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHZhbHVlIGAlYmAgbWF0Y2ggdGhlICpgJWJgIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IEJvb2xQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtiIHw+IHN0cmluZ19vZl9ib29sIHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBzdHJsaXRfcGF0ID0gKHM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZSBgJXNgIG1hdGNoIHRoZSAqYCVzYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBTdHJQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtzIHw+IGFiYnJldmlhdGUgfD4gSGF6M2xjb3JlLkZvcm0uc3RyaW5nX3F1b3RlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHJpdl9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHRoZSB0cml2aWFsIHZhbHVlIGAoKWAgbWF0Y2ggdGhlICp0cml2aWFsIHBhdHRlcm4gYCgpYCouXCI7XG4gIHtcbiAgICBpZDogVHJpdlBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIigpXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB2YXJfcGF0ID0gKG5hbWU6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgKnBhdHRlcm4gdmFyaWFibGUqIG1hdGNoZXMgYW55IGV4cHJlc3Npb24sIGJpbmRpbmcgaXRzIHZhbHVlIHRvIHZhcmlhYmxlIGAlc2AuXCI7XG4gIHtcbiAgICBpZDogVmFyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbmFtZSB8PiBhYmJyZXZpYXRlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgY3RyX3BhdCA9IChuYW1lOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgbWF0Y2ggdGhlICpgJXNgIGNvbnN0cnVjdG9yKiBtYXRjaCB0aGlzIGNvbnN0cnVjdG9yIHBhdHRlcm4uXCI7XG4gIHtcbiAgICBpZDogQ3RyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbmFtZSB8PiBhYmJyZXZpYXRlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgd2lsZDogZ3JvdXAgPSB7aWQ6IFdpbGRQYXQsIGZvcm1zOiBbd2lsZF9wYXRdfTtcblxubGV0IGludGxpdCA9IChpOiBpbnQpOiBncm91cCA9PiB7aWQ6IEludFBhdCwgZm9ybXM6IFtpbnRsaXRfcGF0KGkpXX07XG5cbmxldCBmbG9hdGxpdCA9IChmOiBmbG9hdCk6IGdyb3VwID0+IHtcbiAgaWQ6IEZsb2F0UGF0LFxuICBmb3JtczogW2Zsb2F0bGl0X3BhdChmKV0sXG59O1xuXG5sZXQgYm9vbGxpdCA9IChiOiBib29sKTogZ3JvdXAgPT4ge2lkOiBCb29sUGF0LCBmb3JtczogW2Jvb2xsaXRfcGF0KGIpXX07XG5cbmxldCBzdHJsaXQgPSAoczogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBTdHJQYXQsIGZvcm1zOiBbc3RybGl0X3BhdChzKV19O1xuXG5sZXQgdHJpdjogZ3JvdXAgPSB7aWQ6IFRyaXZQYXQsIGZvcm1zOiBbdHJpdl9wYXRdfTtcblxubGV0IHZhciA9IChuYW1lOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IFZhclBhdCwgZm9ybXM6IFt2YXJfcGF0KG5hbWUpXX07XG5cbmxldCBjdHIgPSAobmFtZTogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBDdHJQYXQsIGZvcm1zOiBbY3RyX3BhdChuYW1lKV19O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCB0cml2X2V4cDogZm9ybSA9IHtcbiAgaWQ6IFRyaXZFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbZXhwKFwiKClcIildLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJUaGUgdW5pcXVlIHZhbHVlIG9mIHR5cGUgYCgpYC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCB0cml2X2V4cHM6IGdyb3VwID0ge2lkOiBUcml2RXhwLCBmb3JtczogW3RyaXZfZXhwXX07XG5cbmxldCBkZWZlcnJhbF9leHBfZXggPSB7XG4gIHN1Yl9pZDogRGVmZXJyYWwsXG4gIHRlcm06XG4gICAgbWtfZXhhbXBsZShcbiAgICAgIFwibGV0IHBsdXMgPSBmdW4gKHgsIHkpIC0+IHggKyB5IGluXFxubGV0IGluY3IgPSBwbHVzKF8sIDEpIGluXFxuaW5jcig1KVwiLFxuICAgICksXG4gIG1lc3NhZ2U6IFwiSW4gdGhlIHBhcnRpYWwgYXBwbGljYXRpb24gcGx1cyhfLCAxKSwgdGhlIGRlZmVycmFsIGV4cHJlc3Npb24gbWFya3MgdGhlIGZpcnN0IGFyZ3VtZW50LCB3aGljaCB3YXMgbm90IGFwcGxpZWQgdW50aWwgaW4gdGhlIGZ1bGwgZnVuY3Rpb24gYXBwbGljYXRpb24gaW5jcig1KS5cIixcbn07XG5sZXQgZGVmZXJyYWxfZXhwOiBmb3JtID0ge1xuICBpZDogRGVmZXJyYWxFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbZXhwKFwiX1wiKV0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIk1hcmtzIGFuIGFyZ3VtZW50IHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBhcHBsaWVkIGluIGEgcGFydGlhbCBhcHBsaWNhdGlvbi5cIixcbiAgZXhhbXBsZXM6IFtkZWZlcnJhbF9leHBfZXhdLFxufTtcbmxldCBkZWZlcnJhbF9leHBzOiBncm91cCA9IHtpZDogRGVmZXJyYWxFeHAsIGZvcm1zOiBbZGVmZXJyYWxfZXhwXX07XG5cbmxldCBib29sX2V4cCA9IChiOiBib29sKTogZm9ybSA9PiB7XG4gIGlkOiBCb29sRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2V4cChiIHw+IHN0cmluZ19vZl9ib29sKV0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIkEgYm9vbGVhbiBsaXRlcmFsLCBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWAuXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgYm9vbF9leHBzID0gKGI6IGJvb2wpOiBncm91cCA9PiB7aWQ6IEJvb2xFeHAsIGZvcm1zOiBbYm9vbF9leHAoYildfTtcblxubGV0IGludF9leHAgPSAobjogaW50KTogZm9ybSA9PiB7XG4gIGlkOiBJbnRFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbbiB8PiBzdHJpbmdfb2ZfaW50IHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIkEgc2lnbmVkIGludGVnZXIgbGl0ZXJhbC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBpbnRfZXhwcyA9IChpOiBpbnQpOiBncm91cCA9PiB7aWQ6IEludEV4cCwgZm9ybXM6IFtpbnRfZXhwKGkpXX07XG5cbmxldCBmbG9hdF9leHAgPSAoZjogZmxvYXQpOiBmb3JtID0+IHtcbiAgaWQ6IEZsb2F0RXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2YgfD4gc3RyaW5nX29mX2Zsb2F0IHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIkEgZmxvYXRpbmctcG9pbnQgbGl0ZXJhbC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBmbG9hdF9leHBzID0gKGY6IGZsb2F0KTogZ3JvdXAgPT4ge1xuICBpZDogRmxvYXRFeHAsXG4gIGZvcm1zOiBbZmxvYXRfZXhwKGYpXSxcbn07XG5cbmxldCBzdHJpbmdfZXhwID0gKHM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBpZDogU3RyaW5nRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW3MgfD4gYWJicmV2aWF0ZSB8PiBIYXozbGNvcmUuRm9ybS5zdHJpbmdfcXVvdGUgfD4gZXhwXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiQSBzdHJpbmcgbGl0ZXJhbC4gQW55IGNoYXJhY3RlciBiZXNpZGVzIGRvdWJsZSBxdW90ZXMgKGBcXFwiYCkgY2FuIGJlIHVzZWQuXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgc3RyaW5nX2V4cHMgPSAoczogc3RyaW5nKTogZ3JvdXAgPT4ge1xuICBpZDogU3RyaW5nRXhwLFxuICBmb3JtczogW3N0cmluZ19leHAocyldLFxufTtcblxubGV0IHZhcl9leHAgPSAobjogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGlkOiBWYXJFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbbiB8PiBhYmJyZXZpYXRlIHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIlRha2VzIHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiB0aGF0IGl0IHdhcyBib3VuZCB0by5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCB2YXJfZXhwcyA9ICh4OiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IFZhckV4cCwgZm9ybXM6IFt2YXJfZXhwKHgpXX07XG5cbmxldCBjdHJfZXhwID0gKGM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBpZDogQ3RyRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2MgfD4gYWJicmV2aWF0ZSB8PiBleHBdLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJgJXNgIGlzIGEgY29uc3RydWN0b3IgZm9yIGEgc3VtIHR5cGUgdmFyaWFudC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBjdHIgPSAoYzogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBDdHJFeHAsIGZvcm1zOiBbY3RyX2V4cChjKV19O1xuIiwidHlwZSBvcmRpbmFsID0gaW50O1xuXG50eXBlIHN0YXR1cyA9XG4gIHwgRW1wdHlcbiAgfCBQYXJ0aWFsXG4gIHwgRnVsbDtcblxudHlwZSBpbnRlcnZhbCA9IChmbG9hdCwgZmxvYXQpO1xuXG50eXBlIHQgPSB7XG4gIHJvb3Q6IG5vZGUsXG4gIC8vIGludGVydmFsIGVuZHBvaW50cyBzcGVjaWZpZWQgYXQgaW5pdGlhbGl6YXRpb25cbiAgdmFsdWVzOiBhcnJheShmbG9hdCksXG4gIC8vIG9yZGluYWxzIG9mIHNvcnRlZCBlbmRwb2ludHNcbiAgb3JkaW5hbHM6IEhhc2h0YmwudChmbG9hdCwgb3JkaW5hbCksXG59XG5hbmQgbm9kZSA9IHtcbiAgLy8gaW52YXJpYW50OiB1bml0IGludGVydmFscyBhcmUgbGVhdmVzXG4gIGludGVydmFsOiAob3JkaW5hbCwgb3JkaW5hbCksXG4gIHNoYXBlOiBub2RlX3NoYXBlLFxuICAvLyBzdGF0dXMgYW5kIGNvdW50IGNvdWxkIGJlIGV4dGVybmFsaXplZCBpbiBhIG1vcmVcbiAgLy8gZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGRhdGEgc3RydWN0dXJlXG4gIC8vIGJ1dCB3ZSBvbmx5IG5lZWQgdGhpcyBkYXRhIHN0cnVjdHVyZSBmb3IgYSBzaW5nbGVcbiAgLy8gcHVycG9zZSBhdCB0aGUgbW9tZW50XG4gIHN0YXR1cyxcbiAgY291bnQ6IGludCxcbn1cbmFuZCBub2RlX3NoYXBlID1cbiAgfCBMZWFmXG4gIHwgQnJhbmNoKExhenkudChub2RlKSwgTGF6eS50KG5vZGUpKTtcblxubGV0IG1rID0gKHZhbHVlczogbGlzdChmbG9hdCkpID0+IHtcbiAgbGV0ICh2YWx1ZXMsIG9yZGluYWxzKSA9IHtcbiAgICBsZXQgc29ydGVkX3ZhbHVlcyA9IExpc3Quc29ydF91bmlxKEZsb2F0LmNvbXBhcmUsIHZhbHVlcyk7XG4gICAgKFxuICAgICAgQXJyYXkub2ZfbGlzdChzb3J0ZWRfdmFsdWVzKSxcbiAgICAgIHNvcnRlZF92YWx1ZXNcbiAgICAgIHw+IExpc3QubWFwaSgoaSwgeSkgPT4gKHksIGkpKVxuICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgIHw+IEhhc2h0Ymwub2Zfc2VxLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHJlYyBta19ub2RlID0gKGE6IG9yZGluYWwsIGI6IG9yZGluYWwpOiBub2RlID0+IHtcbiAgICBsZXQgc2hhcGUgPVxuICAgICAgaWYgKGEgKyAxID09IGIpIHtcbiAgICAgICAgTGVhZjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBtaWQgPSAoYSArIGIpIC8gMjtcbiAgICAgICAgQnJhbmNoKGxhenkobWtfbm9kZShhLCBtaWQpKSwgbGF6eShta19ub2RlKG1pZCwgYikpKTtcbiAgICAgIH07XG4gICAge3NoYXBlLCBpbnRlcnZhbDogKGEsIGIpLCBjb3VudDogMCwgc3RhdHVzOiBFbXB0eX07XG4gIH07XG5cbiAge3ZhbHVlcywgb3JkaW5hbHMsIHJvb3Q6IG1rX25vZGUoMCwgQXJyYXkubGVuZ3RoKHZhbHVlcykgLSAxKX07XG59O1xuXG5sZXQgdXBkYXRlX3N0YXR1cyA9IChub2RlOiBub2RlKTogbm9kZSA9PiB7XG4gIGxldCBzdGF0dXMgPVxuICAgIGlmIChub2RlLmNvdW50ID4gMCkge1xuICAgICAgRnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChub2RlLnNoYXBlKSB7XG4gICAgICB8IExlYWYgPT4gRW1wdHlcbiAgICAgIHwgQnJhbmNoKGwsIHIpID0+XG4gICAgICAgIHN3aXRjaCAoTGF6eS5mb3JjZShsKS5zdGF0dXMsIExhenkuZm9yY2Uocikuc3RhdHVzKSB7XG4gICAgICAgIHwgKEVtcHR5LCBFbXB0eSkgPT4gRW1wdHlcbiAgICAgICAgfCBfID0+IFBhcnRpYWxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICB7Li4ubm9kZSwgc3RhdHVzfTtcbn07XG5cbnR5cGUgb3AgPVxuICB8IEluc2VydFxuICB8IERlbGV0ZTtcbmxldCBzdHJpbmdfb2Zfb3AgPVxuICBmdW5cbiAgfCBJbnNlcnQgPT4gXCJpbnNlcnRcIlxuICB8IERlbGV0ZSA9PiBcImRlbGV0ZVwiO1xuXG4vKipcbiAqIEltcGxlbWVudGF0aW9uIGZvbGxvd3MgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBTZWN0aW9ucyA4LjMgKyA4LjVcbiAqIG9mIENvbXB1dGF0aW9uYWwgR2VvbWV0cnk6IEFuIEludHJvZHVjdGlvbiBieSBQcmVwYXJhdGEgJiBTaGFtb3MuXG4gKiBTZWN0aW9uIDguMyBkZXNjcmliZXMgdGhlIGdlbmVyYWwgdXNlIG9mIHNlZ21lbnQgdHJlZXMgdG8gY29tcHV0ZVxuICogZmVhdHVyZXMgb2YgYSBjb2xsZWN0aW9uIG9mIHJlY3RhbmdsZXM7IFNlY3Rpb24gOC41IGRlc2NyaWJlcyB0aGVcbiAqIHNwZWNpYWxpemF0aW9uIG9mIHRoYXQgYXBwcm9hY2ggdG8gY29tcHV0ZSB0aGUgY29udG91ciBvZiBhIHVuaW9uXG4gKiBvZiByZWN0YW5nbGVzLiBUaGUgZ2VuZXJhbCBmcmFtZXdvcmsgbGFpZCBvdXQgaW4gOC4zIGlzIHVubmVjZXNzYXJ5XG4gKiBmb3Igb3VyIHB1cnBvc2VzIChzbyBvdXIgaW1wbGVtZW50YXRpb24gY291bGQgYmUgc3RyZWFtbGluZWQpIGJ1dCBJXG4gKiBpbXBsZW1lbnRlZCBpdCBhbnl3YXkgc28gdGhhdCB0aGUgdGV4dCBzZXJ2ZXMgYXMgZG9jdW1lbnRhdGlvbiB0aGF0XG4gKiBjbG9zZWx5IG1hcHMgdG8gb3VyIGNvZGUuXG4gKi9cbmxldCBwZXJmb3JtID0gKG9wLCAoYSwgYik6IGludGVydmFsLCB0cmVlOiB0KTogdCA9PiB7XG4gIGxldCByZWMgZ28gPSAob3AsIChhLCBiKSBhcyBpbnRlcnZhbCwgbm9kZTogbm9kZSk6IG5vZGUgPT4ge1xuICAgIGxldCAoYScsIGInKSA9IG5vZGUuaW50ZXJ2YWw7XG4gICAgbGV0IG5vZGUgPVxuICAgICAgaWYgKGEgPD0gYScgJiYgYicgPD0gYikge1xuICAgICAgICB7XG4gICAgICAgICAgLy8gYWxsb2NhdGUgdG8gdGhpcyBub2RlXG4gICAgICAgICAgLi4ubm9kZSxcbiAgICAgICAgICBjb3VudDpcbiAgICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICAgIHwgSW5zZXJ0ID0+IG5vZGUuY291bnQgKyAxXG4gICAgICAgICAgICB8IERlbGV0ZSA9PiBub2RlLmNvdW50IC0gMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAobm9kZS5zaGFwZSkge1xuICAgICAgICB8IExlYWYgPT4gbm9kZVxuICAgICAgICB8IEJyYW5jaChsLCByKSA9PlxuICAgICAgICAgIGxldCBtaWQgPSAoYScgKyBiJykgLyAyO1xuICAgICAgICAgIGxldCBsID0gYSA+PSBtaWQgPyBsIDogKGxhenkoZ28ob3AsIGludGVydmFsLCBMYXp5LmZvcmNlKGwpKSkpO1xuICAgICAgICAgIGxldCByID0gYiA8PSBtaWQgPyByIDogKGxhenkoZ28ob3AsIGludGVydmFsLCBMYXp5LmZvcmNlKHIpKSkpO1xuICAgICAgICAgIHsuLi5ub2RlLCBzaGFwZTogQnJhbmNoKGwsIHIpfTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgdXBkYXRlX3N0YXR1cyhub2RlKTtcbiAgfTtcbiAgc3dpdGNoIChcbiAgICBIYXNodGJsLmZpbmRfb3B0KHRyZWUub3JkaW5hbHMsIGEpLFxuICAgIEhhc2h0YmwuZmluZF9vcHQodHJlZS5vcmRpbmFscywgYiksXG4gICkge1xuICB8IChOb25lLCBfKVxuICB8IChfLCBOb25lKSA9PlxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgIFwiU2VnbWVudFRyZWUuJXM6IGV4cGVjdGVkIGludGVydmFsIHdpdGggZW5kcG9pbnRzIHNwZWNpZmllZCBhdCBpbml0aWFsaXphdGlvblwiLFxuICAgICAgICBzdHJpbmdfb2Zfb3Aob3ApLFxuICAgICAgKTtcbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KG1zZykpO1xuICB8IChTb21lKGEpLCBTb21lKGIpKSA9PlxuICAgIGxldCBpbnRlcnZhbCA9IGEgPCBiID8gKGEsIGIpIDogKGIsIGEpO1xuICAgIGxldCBuZXdfcm9vdCA9IGdvKG9wLCBpbnRlcnZhbCwgdHJlZS5yb290KTtcbiAgICB7Li4udHJlZSwgcm9vdDogbmV3X3Jvb3R9O1xuICB9O1xufTtcbmxldCBpbnNlcnQgPSBwZXJmb3JtKEluc2VydCk7XG5sZXQgZGVsZXRlID0gcGVyZm9ybShEZWxldGUpO1xuXG4vKipcbiAqIFByZXBhcmF0YSAmIFNoYW1vcyB1c2UgdGhlIHRlcm1pbm9sb2d5IFwiY29udHJpYnV0aW9uXCIgYW5kIHNwZWNpZnlcbiAqIHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gaW4gdGhlIHByb2NlZHVyZSBDT05UUiBpbiBTZWN0aW9uIDguNS5cbiAqL1xubGV0IGNvbXBsZW1lbnRfaW50ZXJzZWN0aW9uID0gKChhLCBiKTogaW50ZXJ2YWwsIHRyZWU6IHQpOiBsaXN0KGludGVydmFsKSA9PiB7XG4gIGxldCByZWMgZ28gPVxuICAgICAgICAgICh+c3RhY2s9W10sIChhLCBiKSBhcyBpbnRlcnZhbCwgbm9kZTogbm9kZSlcbiAgICAgICAgICA6IGxpc3QoKG9yZGluYWwsIG9yZGluYWwpKSA9PiB7XG4gICAgbGV0IChhJywgYicpID0gbm9kZS5pbnRlcnZhbDtcbiAgICBzd2l0Y2ggKG5vZGUuc3RhdHVzKSB7XG4gICAgfCBGdWxsID0+IHN0YWNrXG4gICAgfCBFbXB0eSB3aGVuIGEgPD0gYScgJiYgYicgPD0gYiA9PlxuICAgICAgLy8gbWVyZ2UgY29udGludW91cyBzZWdtZW50c1xuICAgICAgc3dpdGNoIChzdGFjaykge1xuICAgICAgfCBbKGEnJywgYicnKSwgLi4ucmVzdF0gd2hlbiBhJyA9PSBiJycgPT4gWyhhJycsIGInKSwgLi4ucmVzdF1cbiAgICAgIHwgXyA9PiBbKGEnLCBiJyksIC4uLnN0YWNrXVxuICAgICAgfVxuICAgIHwgXyA9PlxuICAgICAgc3dpdGNoIChub2RlLnNoYXBlKSB7XG4gICAgICB8IExlYWYgPT4gc3RhY2tcbiAgICAgIHwgQnJhbmNoKGwsIHIpID0+XG4gICAgICAgIGxldCBtaWQgPSAoYScgKyBiJykgLyAyO1xuICAgICAgICBsZXQgc3RhY2sgPSBhID49IG1pZCA/IHN0YWNrIDogZ28ofnN0YWNrLCBpbnRlcnZhbCwgTGF6eS5mb3JjZShsKSk7XG4gICAgICAgIGIgPD0gbWlkID8gc3RhY2sgOiBnbyh+c3RhY2ssIGludGVydmFsLCBMYXp5LmZvcmNlKHIpKTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuICBzd2l0Y2ggKFxuICAgIEhhc2h0YmwuZmluZF9vcHQodHJlZS5vcmRpbmFscywgYSksXG4gICAgSGFzaHRibC5maW5kX29wdCh0cmVlLm9yZGluYWxzLCBiKSxcbiAgKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+IGZhaWx3aXRoKFwiaW52YWxpZCBhcmd1bWVudFwiKVxuICB8IChTb21lKGEpLCBTb21lKGIpKSA9PlxuICAgIGxldCBpbnRlcnZhbCA9IGEgPCBiID8gKGEsIGIpIDogKGIsIGEpO1xuICAgIGdvKGludGVydmFsLCB0cmVlLnJvb3QpXG4gICAgfD4gTGlzdC5tYXAoKChvcmRpbmFsMSwgb3JkaW5hbDIpKSA9PiB7XG4gICAgICAgICBsZXQgKG8xLCBvMikgPSBhIDwgYiA/IChvcmRpbmFsMSwgb3JkaW5hbDIpIDogKG9yZGluYWwyLCBvcmRpbmFsMSk7XG4gICAgICAgICAodHJlZS52YWx1ZXNbbzFdLCB0cmVlLnZhbHVlc1tvMl0pO1xuICAgICAgIH0pO1xuICB9O1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gVXRpbDtcblxubW9kdWxlIFBvaW50ID0ge1xuICB0eXBlIHQgPSB7XG4gICAgeDogZmxvYXQsXG4gICAgeTogZmxvYXQsXG4gIH07XG59O1xuXG5tb2R1bGUgVmVjdG9yID0ge1xuICB0eXBlIHQgPSB7XG4gICAgZHg6IGZsb2F0LFxuICAgIGR5OiBmbG9hdCxcbiAgfTtcbn07XG5cbm1vZHVsZSBSZWN0ID0ge1xuICB0eXBlIHQgPSB7XG4gICAgbWluOiBQb2ludC50LFxuICAgIHdpZHRoOiBmbG9hdCxcbiAgICBoZWlnaHQ6IGZsb2F0LFxuICB9O1xufTtcblxubW9kdWxlIFBhdGggPSB7XG4gIHR5cGUgdCA9IGxpc3QoY21kKVxuICBhbmQgY21kID1cbiAgICB8IFpcbiAgICB8IE0oUG9pbnQudClcbiAgICB8IE1fKFZlY3Rvci50KVxuICAgIHwgTChQb2ludC50KVxuICAgIHwgTF8oVmVjdG9yLnQpXG4gICAgfCBIKHt4OiBmbG9hdH0pXG4gICAgfCBIXyh7ZHg6IGZsb2F0fSlcbiAgICB8IFYoe3k6IGZsb2F0fSlcbiAgICB8IFZfKHtkeTogZmxvYXR9KVxuICAgIHwgQV8oe1xuICAgICAgICByeDogZmxvYXQsXG4gICAgICAgIHJ5OiBmbG9hdCxcbiAgICAgICAgeF9heGlzX3JvdGF0aW9uOiBmbG9hdCxcbiAgICAgICAgbGFyZ2VfYXJjX2ZsYWc6IGJvb2wsXG4gICAgICAgIHN3ZWVwX2ZsYWc6IGJvb2wsXG4gICAgICAgIGR4OiBmbG9hdCxcbiAgICAgICAgZHk6IGZsb2F0LFxuICAgICAgfSk7XG5cbiAgbGV0IGNtZGZ1ZGdlID0gKH54PTAuLCB+eT0wLiwgYzogY21kKTogY21kID0+IHtcbiAgICBsZXQgKGgsIHYpID0gKHgsIHkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIHwgTSh7eCwgeX0pID0+IE0oe3g6IHggKy4gaCwgeTogeSArLiB2fSlcbiAgICB8IEwoe3gsIHl9KSA9PiBMKHt4OiB4ICsuIGgsIHk6IHkgKy4gdn0pXG4gICAgfCBIKHt4fSkgPT4gSCh7eDogeCArLiBofSlcbiAgICB8IFYoe3l9KSA9PiBWKHt5OiB5ICsuIHZ9KVxuICAgIHwgXyA9PiBjXG4gICAgfTtcbiAgfTtcblxuICBsZXQgbSA9ICh+eCwgfnkpID0+IE0oe3g6IEZsb2F0Lm9mX2ludCh4KSwgeTogRmxvYXQub2ZfaW50KHkpfSk7XG4gIGxldCBsXyA9ICh+ZHgsIH5keSkgPT4gTF8oe2R4OiBGbG9hdC5vZl9pbnQoZHgpLCBkeTogRmxvYXQub2ZfaW50KGR5KX0pO1xuICBsZXQgaCA9ICh+eCkgPT4gSCh7eDogRmxvYXQub2ZfaW50KHgpfSk7XG4gIGxldCBoXyA9ICh+ZHgpID0+IEhfKHtkeDogRmxvYXQub2ZfaW50KGR4KX0pO1xuICBsZXQgdiA9ICh+eSkgPT4gVih7eTogRmxvYXQub2ZfaW50KHkpfSk7XG4gIGxldCB2XyA9ICh+ZHkpID0+IFZfKHtkeTogRmxvYXQub2ZfaW50KGR5KX0pO1xuXG4gIGxldCBzY2FsZV9jbWQgPSAofnNjYWxlX3g9MS4sIH5zY2FsZV95PTEuKSA9PlxuICAgIGZ1blxuICAgIHwgKFogfCBNKF8pIHwgTChfKSB8IEgoXykgfCBWKF8pIHwgQV8oXykpIGFzIGNtZCA9PiBjbWRcbiAgICB8IE1fKHtkeCwgZHl9KSA9PiBNXyh7ZHg6IHNjYWxlX3ggKi4gZHgsIGR5OiBzY2FsZV95ICouIGR5fSlcbiAgICB8IExfKHtkeCwgZHl9KSA9PiBMXyh7ZHg6IHNjYWxlX3ggKi4gZHgsIGR5OiBzY2FsZV95ICouIGR5fSlcbiAgICB8IEhfKHtkeH0pID0+IEhfKHtkeDogc2NhbGVfeCAqLiBkeH0pXG4gICAgfCBWXyh7ZHl9KSA9PiBWXyh7ZHk6IHNjYWxlX3kgKi4gZHl9KTtcblxuICBsZXQgc2NhbGUgPSBzID0+IExpc3QubWFwKHNjYWxlX2NtZCh+c2NhbGVfeD1zLCB+c2NhbGVfeT1zKSk7XG4gIGxldCBzY2FsZV94ID0gcyA9PiBMaXN0Lm1hcChzY2FsZV9jbWQofnNjYWxlX3g9cykpO1xuICBsZXQgc2NhbGVfeSA9IHMgPT4gTGlzdC5tYXAoc2NhbGVfY21kKH5zY2FsZV95PXMpKTtcblxuICBsZXQgcmV2ZXJzZSA9IExpc3QucmV2X21hcChzY2FsZV9jbWQofnNjYWxlX3g9LTEuLCB+c2NhbGVfeT0tMS4pKTtcblxuICBsZXQgdHJhbnNsYXRlX2NtZCA9ICh2OiBWZWN0b3IudCkgPT5cbiAgICBmdW5cbiAgICB8IChaIHwgTV8oXykgfCBMXyhfKSB8IEhfKF8pIHwgVl8oXykgfCBBXyhfKSkgYXMgY21kID0+IGNtZFxuICAgIHwgTSh7eCwgeX0pID0+IE0oe3g6IHggKy4gdi5keCwgeTogeSArLiB2LmR5fSlcbiAgICB8IEwoe3gsIHl9KSA9PiBMKHt4OiB4ICsuIHYuZHgsIHk6IHkgKy4gdi5keX0pXG4gICAgfCBIKHt4fSkgPT4gSCh7eDogeCArLiB2LmR4fSlcbiAgICB8IFYoe3l9KSA9PiBWKHt5OiB5ICsuIHYuZHl9KTtcbiAgbGV0IHRyYW5zbGF0ZSA9IHYgPT4gTGlzdC5tYXAodHJhbnNsYXRlX2NtZCh2KSk7XG5cbiAgbGV0IHN0cmluZ19vZl9mbGFnID1cbiAgICBmdW5cbiAgICB8IGZhbHNlID0+IFwiMFwiXG4gICAgfCB0cnVlID0+IFwiMVwiO1xuXG4gIGxldCBzdHJpbmdfb2ZfY29tbWFuZCA9XG4gICAgZnVuXG4gICAgfCBaID0+IFwiWlwiXG4gICAgfCBNKHt4LCB5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJNICVmICVmXCIsIHgsIHkpXG4gICAgfCBNXyh7ZHgsIGR5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJtICVmICVmXCIsIGR4LCBkeSlcbiAgICB8IEwoe3gsIHl9KSA9PiBQcmludGYuc3ByaW50ZihcIkwgJWYgJWZcIiwgeCwgeSlcbiAgICB8IExfKHtkeCwgZHl9KSA9PiBQcmludGYuc3ByaW50ZihcImwgJWYgJWZcIiwgZHgsIGR5KVxuICAgIHwgSCh7eH0pID0+IFByaW50Zi5zcHJpbnRmKFwiSCAlZlwiLCB4KVxuICAgIHwgSF8oe2R4fSkgPT4gUHJpbnRmLnNwcmludGYoXCJoICVmXCIsIGR4KVxuICAgIHwgVih7eX0pID0+IFByaW50Zi5zcHJpbnRmKFwiViAlZlwiLCB5KVxuICAgIHwgVl8oe2R5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJ2ICVmXCIsIGR5KVxuICAgIHwgQV8oe3J4LCByeSwgeF9heGlzX3JvdGF0aW9uLCBsYXJnZV9hcmNfZmxhZywgc3dlZXBfZmxhZywgZHgsIGR5fSkgPT5cbiAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICBcImEgJWYgJWYgJWYgJXMgJXMgJWYgJWZcIixcbiAgICAgICAgcngsXG4gICAgICAgIHJ5LFxuICAgICAgICB4X2F4aXNfcm90YXRpb24sXG4gICAgICAgIHN0cmluZ19vZl9mbGFnKGxhcmdlX2FyY19mbGFnKSxcbiAgICAgICAgc3RyaW5nX29mX2ZsYWcoc3dlZXBfZmxhZyksXG4gICAgICAgIGR4LFxuICAgICAgICBkeSxcbiAgICAgICk7XG5cbiAgbGV0IHZpZXcgPSAofmF0dHJzOiBBdHRycy50LCBwYXRoOiB0KTogTm9kZS50ID0+IHtcbiAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZShMaXN0Lmxlbmd0aChwYXRoKSAqIDIwKTtcbiAgICBwYXRoXG4gICAgfD4gTGlzdC5pdGVyKGNtZCA9PiB7XG4gICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyhidWZmZXIsIHN0cmluZ19vZl9jb21tYW5kKGNtZCkpO1xuICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcoYnVmZmVyLCBcIiBcIik7XG4gICAgICAgfSk7XG4gICAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgICAgXCJwYXRoXCIsXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtBdHRyLmNyZWF0ZShcImRcIiwgQnVmZmVyLmNvbnRlbnRzKGJ1ZmZlcikpLCAuLi5hdHRyc10pLFxuICAgICAgW10sXG4gICAgKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBPcnRob2dvbmFsUG9seWdvbiA9IHtcbiAgdHlwZSB0ID0gUGF0aC50O1xuXG4gIHR5cGUgbGlua2VkX2VkZ2UgPSB7XG4gICAgc3JjOiBQb2ludC50LFxuICAgIGRzdDogUG9pbnQudCxcbiAgICBtdXRhYmxlIG5leHQ6IFtAc2V4cC5vcGFxdWVdIG9wdGlvbihsaW5rZWRfZWRnZSksXG4gIH07XG5cbiAgbGV0IGxpbmtlZF9lZGdlX2VxID0gKGUxLCBlMikgPT4gZTEuc3JjID09IGUyLnNyYyAmJiBlMS5kc3QgPT0gZTIuZHN0O1xuXG4gIGxldCBjbWRfb2ZfbGlua2VkX2VkZ2UgPSAoZWRnZSk6IFBhdGguY21kID0+IHtcbiAgICBsZXQgc3JjID0gZWRnZS5zcmM7XG4gICAgbGV0IGRzdCA9IGVkZ2UuZHN0O1xuICAgIHNyYy54ID09IGRzdC54ID8gVl8oe2R5OiBkc3QueSAtLiBzcmMueX0pIDogSF8oe2R4OiBkc3QueCAtLiBzcmMueH0pO1xuICB9O1xuXG4gIGxldCByb3VuZF9jb3JuZXJzID0gKChyeDogZmxvYXQsIHJ5OiBmbG9hdCksIHBhdGg6IFBhdGgudCk6IFBhdGgudCA9PiB7XG4gICAgLy8gQ29ybmVyIHJvdW5kaW5nIGN1dHMgaW50byB0aGUgbGVuZ3RocyBvZiB0aGUgZW50ZXJpbmcgYW5kXG4gICAgLy8gZXhpdGluZyBlZGdlcy4gRmluZCB0aGUgbWF4aW11bSAocHJvcG9ydGlvbmFsbHkgc2NhbGVkKVxuICAgIC8vIHJhZGlpIHBvc3NpYmxlIGdpdmVuIGxlbmd0aHMgb2YgZW50ZXJpbmcgYW5kIGV4aXRpbmcgZWRnZXMuXG4gICAgbGV0IG1heF9yYWRpaSA9XG4gICAgICAgICgocng6IGZsb2F0LCByeTogZmxvYXQpLCAoZHg6IGZsb2F0LCBkeTogZmxvYXQpKTogKGZsb2F0LCBmbG9hdCkgPT4ge1xuICAgICAgbGV0IHJ4X21pbiA9IG1pbihyeCwgRmxvYXQuYWJzKGR4KSk7XG4gICAgICBsZXQgcnlfbWluID0gbWluKHJ5LCBGbG9hdC5hYnMoZHkpKTtcbiAgICAgIHJ5X21pbiAqLiByeCA+PSByeF9taW4gKi4gcnlcbiAgICAgICAgPyAocnhfbWluLCByeF9taW4gKi4gcnkgLy4gcngpIDogKHJ5X21pbiAqLiByeCAvLiByeSwgcnlfbWluKTtcbiAgICB9O1xuXG4gICAgcGF0aFxuICAgIHw+IExpc3QubWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IFBhdGguSF8oe2R4fSkgPT4gUGF0aC5bSF8oe2R4OiBkeCAqLiAwLjV9KSwgSF8oe2R4OiBkeCAqLiAwLjV9KV1cbiAgICAgICAgIHwgVl8oe2R5fSkgPT4gW1ZfKHtkeTogZHkgKi4gMC41fSksIFZfKHtkeTogZHkgKi4gMC41fSldXG4gICAgICAgICB8IGNtZCA9PiBbY21kXSxcbiAgICAgICApXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdFV0aWwucm90YXRlXG4gICAgfD4gTGlzdFV0aWwuZGlzam9pbnRfcGFpcnNcbiAgICB8PiBMaXN0Lm1hcCgoKGNtZDE6IFBhdGguY21kLCBjbWQyOiBQYXRoLmNtZCkpID0+IHtcbiAgICAgICAgIHN3aXRjaCAoY21kMSwgY21kMikge1xuICAgICAgICAgfCAoSF8oe2R4fSksIFZfKHtkeX0pKSA9PlxuICAgICAgICAgICBsZXQgKHJ4LCByeSkgPSBtYXhfcmFkaWkoKHJ4LCByeSksIChkeCwgZHkpKTtcbiAgICAgICAgICAgbGV0IGNsb2Nrd2lzZSA9IEZsb2F0LnNpZ25fYml0KGR4KSA9PSBGbG9hdC5zaWduX2JpdChkeSk7XG4gICAgICAgICAgIFBhdGguW1xuICAgICAgICAgICAgIEhfKHtkeDogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeCkgLS4gcngsIGR4KX0pLFxuICAgICAgICAgICAgIEFfKHtcbiAgICAgICAgICAgICAgIHJ4LFxuICAgICAgICAgICAgICAgcnksXG4gICAgICAgICAgICAgICB4X2F4aXNfcm90YXRpb246IDAuLFxuICAgICAgICAgICAgICAgbGFyZ2VfYXJjX2ZsYWc6IGZhbHNlLFxuICAgICAgICAgICAgICAgc3dlZXBfZmxhZzogY2xvY2t3aXNlLFxuICAgICAgICAgICAgICAgZHg6IEZsb2F0LmNvcHlfc2lnbihyeCwgZHgpLFxuICAgICAgICAgICAgICAgZHk6IEZsb2F0LmNvcHlfc2lnbihyeSwgZHkpLFxuICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgIFZfKHtkeTogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeSkgLS4gcnksIGR5KX0pLFxuICAgICAgICAgICBdO1xuICAgICAgICAgfCAoVl8oe2R5fSksIEhfKHtkeH0pKSA9PlxuICAgICAgICAgICBsZXQgKHJ4LCByeSkgPSBtYXhfcmFkaWkoKHJ4LCByeSksIChkeCwgZHkpKTtcbiAgICAgICAgICAgbGV0IGNsb2Nrd2lzZSA9IEZsb2F0LnNpZ25fYml0KGR5KSAhPSBGbG9hdC5zaWduX2JpdChkeCk7XG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBWXyh7ZHk6IEZsb2F0LmNvcHlfc2lnbihGbG9hdC5hYnMoZHkpIC0uIHJ5LCBkeSl9KSxcbiAgICAgICAgICAgICBBXyh7XG4gICAgICAgICAgICAgICByeCxcbiAgICAgICAgICAgICAgIHJ5LFxuICAgICAgICAgICAgICAgeF9heGlzX3JvdGF0aW9uOiAwLixcbiAgICAgICAgICAgICAgIGxhcmdlX2FyY19mbGFnOiBmYWxzZSxcbiAgICAgICAgICAgICAgIHN3ZWVwX2ZsYWc6IGNsb2Nrd2lzZSxcbiAgICAgICAgICAgICAgIGR4OiBGbG9hdC5jb3B5X3NpZ24ocngsIGR4KSxcbiAgICAgICAgICAgICAgIGR5OiBGbG9hdC5jb3B5X3NpZ24ocnksIGR5KSxcbiAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICBIXyh7ZHg6IEZsb2F0LmNvcHlfc2lnbihGbG9hdC5hYnMoZHgpIC0uIHJ4LCBkeCl9KSxcbiAgICAgICAgICAgXTtcbiAgICAgICAgIHwgXyA9PiBbY21kMSwgY21kMl1cbiAgICAgICAgIH1cbiAgICAgICB9KVxuICAgIHw+IExpc3QuZmxhdHRlbjtcbiAgfTtcblxuICBsZXQgaXNfbGVmdF9zaWRlID0gKGVkZ2U6IGxpbmtlZF9lZGdlKTogYm9vbCA9PiB7XG4gICAgZWRnZS5zcmMueSA+IGVkZ2UuZHN0Lnk7XG4gIH07XG5cbiAgLyoqXG4gICAqIE1lcmdlIGNvaW5jaWRpbmcgdmVydGljYWwgZWRnZXMgdGhhdCBwb2ludCBpbiB0aGUgc2FtZSBkaXJlY3Rpb24uXG4gICAqL1xuICBsZXQgbWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlcyA9XG4gICAgICAoZWRnZXM6IGxpc3QobGlua2VkX2VkZ2UpKTogbGlzdChsaW5rZWRfZWRnZSkgPT4ge1xuICAgIC8vIHRoZXJlIG1heSBiZSBhIGNsZWFuZXIgKyBtb3JlIGVmZmljaWVudCBtZXRob2QgZm9yIHRoaXMgcGFzc1xuICAgIC8vIGJ1dCBnb29kIGVub3VnaCBmb3Igbm93XG4gICAgbGV0IChsZWZ0X2VkZ2VzLCByaWdodF9lZGdlcykgPSBMaXN0LnBhcnRpdGlvbihpc19sZWZ0X3NpZGUsIGVkZ2VzKTtcbiAgICBsZXQgbWVyZ2VkX2xlZnRfZWRnZXMgPVxuICAgICAgbGVmdF9lZGdlc1xuICAgICAgfD4gTGlzdC5zb3J0KCh2MSwgdjIpID0+XG4gICAgICAgICAgIGlmICh2MS5zcmMueCA8IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgKC0xKTtcbiAgICAgICAgICAgfSBlbHNlIGlmICh2MS5zcmMueCA+IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgMTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAoLTEpICogRmxvYXQuY29tcGFyZSh2MS5zcmMueSwgdjIuc3JjLnkpO1xuICAgICAgICAgICB9XG4gICAgICAgICApXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKHN0YWNrLCB2KSA9PlxuICAgICAgICAgICAgIHN3aXRjaCAoc3RhY2spIHtcbiAgICAgICAgICAgICB8IFtdID0+IFt2XVxuICAgICAgICAgICAgIHwgW2hkLCAuLi50bF0gYXMgc3RhY2sgPT5cbiAgICAgICAgICAgICAgIGlmICh2LnNyYy54ID09IGhkLmRzdC54ICYmIHYuc3JjLnkgPj0gaGQuZHN0LnkpIHtcbiAgICAgICAgICAgICAgICAgW3suLi5oZCwgZHN0OiB2LmRzdH0sIC4uLnRsXTtcbiAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgIFt2LCAuLi5zdGFja107XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgW10sXG4gICAgICAgICApO1xuICAgIGxldCBtZXJnZWRfcmlnaHRfZWRnZXMgPVxuICAgICAgcmlnaHRfZWRnZXNcbiAgICAgIHw+IExpc3Quc29ydCgodjEsIHYyKSA9PlxuICAgICAgICAgICBpZiAodjEuc3JjLnggPCB2Mi5zcmMueCkge1xuICAgICAgICAgICAgICgtMSk7XG4gICAgICAgICAgIH0gZWxzZSBpZiAodjEuc3JjLnggPiB2Mi5zcmMueCkge1xuICAgICAgICAgICAgIDE7XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgRmxvYXQuY29tcGFyZSh2MS5zcmMueSwgdjIuc3JjLnkpO1xuICAgICAgICAgICB9XG4gICAgICAgICApXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKHN0YWNrLCB2KSA9PlxuICAgICAgICAgICAgIHN3aXRjaCAoc3RhY2spIHtcbiAgICAgICAgICAgICB8IFtdID0+IFt2XVxuICAgICAgICAgICAgIHwgW2hkLCAuLi50bF0gYXMgc3RhY2sgPT5cbiAgICAgICAgICAgICAgIGlmICh2LnNyYy54ID09IGhkLmRzdC54ICYmIHYuc3JjLnkgPD0gaGQuZHN0LnkpIHtcbiAgICAgICAgICAgICAgICAgW3suLi5oZCwgZHN0OiB2LmRzdH0sIC4uLnRsXTtcbiAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgIFt2LCAuLi5zdGFja107XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgW10sXG4gICAgICAgICApO1xuICAgIG1lcmdlZF9sZWZ0X2VkZ2VzIEAgbWVyZ2VkX3JpZ2h0X2VkZ2VzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBgdmVydGljYWxfY29udG91cl9lZGdlcyhycylgIGNvbXB1dGUgdGhlIHZlcnRpY2FsIGVkZ2VzIG9mIHRoZVxuICAgKiBjb250b3VyIG9mIHRoZSB1bmlvbiBvZiByZWN0YW5nbGVzIGByc2BcbiAgICovXG4gIGxldCB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzID0gKHJlY3RzOiBsaXN0KFJlY3QudCkpOiBsaXN0KGxpbmtlZF9lZGdlKSA9PiB7XG4gICAgbGV0IHNvcnRlZF92ZXJ0aWNhbF9zaWRlczogbGlzdChsaW5rZWRfZWRnZSkgPVxuICAgICAgcmVjdHNcbiAgICAgIHw+IExpc3QubWFwKChSZWN0LnttaW4sIHdpZHRoLCBoZWlnaHR9KSA9PiB7XG4gICAgICAgICAgIGxldCBtYXhfeCA9IG1pbi54ICsuIHdpZHRoO1xuICAgICAgICAgICBsZXQgbWF4X3kgPSBtaW4ueSArLiBoZWlnaHQ7XG4gICAgICAgICAgIGxldCBtYXggPSBQb2ludC57eDogbWF4X3gsIHk6IG1heF95fTtcbiAgICAgICAgICAgbGV0IG1pbl9tYXggPSBQb2ludC57eDogbWluLngsIHk6IG1heF95fTtcbiAgICAgICAgICAgbGV0IG1heF9taW4gPSBQb2ludC57eDogbWF4X3gsIHk6IG1pbi55fTtcbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIC8vIGxlZnQgc2lkZXMgcG9pbnQgaW4gbmVnYXRpdmUgZGlyZWN0aW9uXG4gICAgICAgICAgICAge3NyYzogbWluX21heCwgZHN0OiBtaW4sIG5leHQ6IE5vbmV9LFxuICAgICAgICAgICAgIC8vIHJpZ2h0IHNpZGVzIHBvaW50IGluIHBvc2l0aXZlIGRpcmVjdGlvblxuICAgICAgICAgICAgIHtzcmM6IG1heF9taW4sIGRzdDogbWF4LCBuZXh0OiBOb25lfSxcbiAgICAgICAgICAgXTtcbiAgICAgICAgIH0pXG4gICAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAgIHw+IExpc3Quc29ydCgodjEsIHYyKSA9PlxuICAgICAgICAgICBpZiAodjEuc3JjLnggPCB2Mi5zcmMueCkge1xuICAgICAgICAgICAgICgtMSk7XG4gICAgICAgICAgIH0gZWxzZSBpZiAodjEuc3JjLnggPiB2Mi5zcmMueCkge1xuICAgICAgICAgICAgIDE7XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgLy8gZm9yIHZlcnRpY2FsIHNpZGVzIG9mIGVxdWFsIGFic2Npc3NhLFxuICAgICAgICAgICAgIC8vIG5lZWQgdG8gc29ydCBsZWZ0IHNpZGVzIGJlZm9yZSByaWdodCBzaWRlc1xuICAgICAgICAgICAgIGxldCBpc19sZWZ0MSA9IGlzX2xlZnRfc2lkZSh2MSk7XG4gICAgICAgICAgICAgbGV0IGlzX2xlZnQyID0gaXNfbGVmdF9zaWRlKHYyKTtcbiAgICAgICAgICAgICBpZiAoaXNfbGVmdDEgJiYgIWlzX2xlZnQyKSB7XG4gICAgICAgICAgICAgICAoLTEpO1xuICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzX2xlZnQxICYmIGlzX2xlZnQyKSB7XG4gICAgICAgICAgICAgICAxO1xuICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAwO1xuICAgICAgICAgICAgIH07XG4gICAgICAgICAgIH1cbiAgICAgICAgICk7XG5cbiAgICBsZXQgc2VnbWVudF90cmVlID1cbiAgICAgIHJlY3RzXG4gICAgICB8PiBMaXN0Lm1hcCgoUmVjdC57bWluLCBoZWlnaHQsIF99KSA9PiBbbWluLnksIG1pbi55ICsuIGhlaWdodF0pXG4gICAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAgIHw+IFNlZ21lbnRUcmVlLm1rO1xuXG4gICAgc29ydGVkX3ZlcnRpY2FsX3NpZGVzXG4gICAgLy8gcGxhbmUtc3dlZXBcbiAgICB8PiBMaXN0LmZvbGRfbGVmdF9tYXAoXG4gICAgICAgICAodHJlZSwgdikgPT4ge1xuICAgICAgICAgICBsZXQgeCA9IHYuc3JjLng7XG4gICAgICAgICAgIGxldCB5cyA9ICh2LnNyYy55LCB2LmRzdC55KTtcbiAgICAgICAgICAgbGV0IG1rX2NvbnRvdXJfZWRnZSA9ICgoeV9zcmMsIHlfZHN0KSkgPT4ge1xuICAgICAgICAgICAgIGxldCBzcmMgPSBQb2ludC57eCwgeTogeV9zcmN9O1xuICAgICAgICAgICAgIGxldCBkc3QgPSBQb2ludC57eCwgeTogeV9kc3R9O1xuICAgICAgICAgICAgIHtzcmMsIGRzdCwgbmV4dDogTm9uZX07XG4gICAgICAgICAgIH07XG4gICAgICAgICAgIGlmIChpc19sZWZ0X3NpZGUodikpIHtcbiAgICAgICAgICAgICBsZXQgbmV3X2NvbnRvdXJfZWRnZXMgPVxuICAgICAgICAgICAgICAgU2VnbWVudFRyZWUuY29tcGxlbWVudF9pbnRlcnNlY3Rpb24oeXMsIHRyZWUpXG4gICAgICAgICAgICAgICB8PiBMaXN0Lm1hcChta19jb250b3VyX2VkZ2UpO1xuICAgICAgICAgICAgIGxldCB1cGRhdGVkX3RyZWUgPSBTZWdtZW50VHJlZS5pbnNlcnQoeXMsIHRyZWUpO1xuICAgICAgICAgICAgICh1cGRhdGVkX3RyZWUsIG5ld19jb250b3VyX2VkZ2VzKTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBsZXQgdXBkYXRlZF90cmVlID0gU2VnbWVudFRyZWUuZGVsZXRlKHlzLCB0cmVlKTtcbiAgICAgICAgICAgICBsZXQgbmV3X2NvbnRvdXJfZWRnZXMgPVxuICAgICAgICAgICAgICAgU2VnbWVudFRyZWUuY29tcGxlbWVudF9pbnRlcnNlY3Rpb24oeXMsIHVwZGF0ZWRfdHJlZSlcbiAgICAgICAgICAgICAgIHw+IExpc3QubWFwKG1rX2NvbnRvdXJfZWRnZSk7XG4gICAgICAgICAgICAgKHVwZGF0ZWRfdHJlZSwgbmV3X2NvbnRvdXJfZWRnZXMpO1xuICAgICAgICAgICB9O1xuICAgICAgICAgfSxcbiAgICAgICAgIHNlZ21lbnRfdHJlZSxcbiAgICAgICApXG4gICAgfD4gc25kXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgLy8gdGhpcyBzdGVwIGlzIG5vdCBleHBsaWNhdGVkIGJ5IFByZXBhcmF0YSAmIFNoYW1vc1xuICAgIC8vIGJ1dCBpdHMgYWJzZW5jZSBjYXVzZXMgYnVnc1xuICAgIHw+IG1lcmdlX2NvaW5jaWRpbmdfdmVydGljYWxfZWRnZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDguNSBvZlxuICAgKiBDb21wdXRhdGlvbmFsIEdlb21ldHJ5OiBBbiBJbnRyb2R1Y3Rpb24gYnkgUHJlcGFyYXRhXG4gICAqICYgU2hhbW9zLiBJZiB5b3UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhbGdvcml0aG0gaW5cbiAgICogZGV0YWlsLCB5b3Ugc2hvdWxkIGZpcnN0IHJlYWQgU2VjdGlvbnMgMS4yLjMuMSArIDguMy5cbiAgICovXG4gIGxldCBtayA9ICh+Y29ybmVyX3JhZGlpOiAoZmxvYXQsIGZsb2F0KSwgcmVjdHM6IGxpc3QoUmVjdC50KSk6IHQgPT4ge1xuICAgIGFzc2VydChyZWN0cyAhPSBbXSk7XG5cbiAgICBsZXQgdmVydGljYWxfY29udG91cl9lZGdlcyA9IHZlcnRpY2FsX2NvbnRvdXJfZWRnZXMocmVjdHMpO1xuXG4gICAgLy8gam9pbiB2ZXJ0aWNhbCBjb250b3VyIGVkZ2VzIHZpYSBob3Jpem9udGFsIGVkZ2VzXG4gICAgdmVydGljYWxfY29udG91cl9lZGdlc1xuICAgIHw+IExpc3QubWFwKHYgPT4gWyhmYWxzZSwgdiksICh0cnVlLCB2KV0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgLy8gc29ydCBlbmRwb2ludHMgYnkgeSBjb29yZGluYXRlLCB0aGVuIHggY29vcmRpbmF0ZVxuICAgIHw+IExpc3Quc29ydCgoKGlzX3NyYzEsIHYxKSwgKGlzX3NyYzIsIHYyKSkgPT4ge1xuICAgICAgICAgbGV0IHB0MSA9IGlzX3NyYzEgPyB2MS5zcmMgOiB2MS5kc3Q7XG4gICAgICAgICBsZXQgcHQyID0gaXNfc3JjMiA/IHYyLnNyYyA6IHYyLmRzdDtcbiAgICAgICAgIGlmIChwdDEueSA8IHB0Mi55KSB7XG4gICAgICAgICAgICgtMSk7XG4gICAgICAgICB9IGVsc2UgaWYgKHB0MS55ID4gcHQyLnkpIHtcbiAgICAgICAgICAgMTtcbiAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgIEZsb2F0LmNvbXBhcmUocHQxLngsIHB0Mi54KTtcbiAgICAgICAgIH07XG4gICAgICAgfSlcbiAgICB8PiBMaXN0VXRpbC5kaXNqb2ludF9wYWlyc1xuICAgIC8vIGNvbnNlY3V0aXZlIHBhaXJzIG9mIGVuZHBvaW50cyBmb3JtIGhvcml6b250YWwgZWRnZXNcbiAgICB8PiBMaXN0Lml0ZXIoKCgoaXNfc3JjMSwgdjEpLCAoaXNfc3JjMiwgdjIpKSkgPT4ge1xuICAgICAgICAgbGV0IHB0MSA9IGlzX3NyYzEgPyB2MS5zcmMgOiB2MS5kc3Q7XG4gICAgICAgICBsZXQgcHQyID0gaXNfc3JjMiA/IHYyLnNyYyA6IHYyLmRzdDtcbiAgICAgICAgIGFzc2VydChwdDEueSA9PSBwdDIueSk7XG4gICAgICAgICBsZXQgeSA9IHB0MS55O1xuXG4gICAgICAgICBsZXQgKHhfc3JjLCB4X2RzdCwgcHJldiwgbmV4dCkgPVxuICAgICAgICAgICBpc19zcmMxID8gKHB0Mi54LCBwdDEueCwgdjIsIHYxKSA6IChwdDEueCwgcHQyLngsIHYxLCB2Mik7XG5cbiAgICAgICAgIGxldCBoID0ge1xuICAgICAgICAgICBsZXQgc3JjID0gUG9pbnQue3g6IHhfc3JjLCB5fTtcbiAgICAgICAgICAgbGV0IGRzdCA9IFBvaW50Lnt4OiB4X2RzdCwgeX07XG4gICAgICAgICAgIHtzcmMsIGRzdCwgbmV4dDogU29tZShuZXh0KX07XG4gICAgICAgICB9O1xuICAgICAgICAgcHJldi5uZXh0ID0gU29tZShoKTtcbiAgICAgICB9KTtcblxuICAgIGxldCBzdGFydCA9IExpc3QuaGQodmVydGljYWxfY29udG91cl9lZGdlcyk7XG4gICAgbGV0IHJlYyBidWlsZF9wYXRoID0gKGVkZ2U6IGxpbmtlZF9lZGdlKTogUGF0aC50ID0+IHtcbiAgICAgIHN3aXRjaCAoZWRnZS5uZXh0KSB7XG4gICAgICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJleHBlY3RlZCBzaW5nbGUgY3ljbGVcIilcbiAgICAgIHwgU29tZShuZXh0KSA9PlxuICAgICAgICBsaW5rZWRfZWRnZV9lcShuZXh0LCBzdGFydClcbiAgICAgICAgICA/IFtdIDogW2NtZF9vZl9saW5rZWRfZWRnZShuZXh0KSwgLi4uYnVpbGRfcGF0aChuZXh0KV1cbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgcGF0aCA9IFtjbWRfb2ZfbGlua2VkX2VkZ2Uoc3RhcnQpLCAuLi5idWlsZF9wYXRoKHN0YXJ0KV07XG5cbiAgICBwYXRoXG4gICAgfD4gcm91bmRfY29ybmVycyhjb3JuZXJfcmFkaWkpXG4gICAgfD4gTGlzdC5jb25zKFxuICAgICAgICAgUGF0aC5NKHtcbiAgICAgICAgICAgeDogKHN0YXJ0LnNyYy54ICsuIHN0YXJ0LmRzdC54KSAqLiAwLjUsXG4gICAgICAgICAgIHk6IChzdGFydC5zcmMueSArLiBzdGFydC5kc3QueSkgKi4gMC41LFxuICAgICAgICAgfSksXG4gICAgICAgKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgbGFiZWxsZWRfc3VtX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJTdW0gdHlwZXMgZGVzY3JpYmUgYSBmaW5pdGUgc2V0IG9mIGxhYmVsZWQgY2hvaWNlcy4gVmFsdWVzIG9mIHRoaXMgdHlwZSBjb25zaXN0IG9mIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNvbnN0cnVjdG9ycyBhcHBsaWVkIHRvIGEgcGFyYW1ldGVyIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlciB0eXBlLCBpZiBzcGVjaWZpZWQuIENvbnN0cnVjdG9yIG5hbWVzIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIHN1bS5cIjtcbiAgbGV0IGRpdmlkZXIgPSBFeGFtcGxlLm1rX21vbm90aWxlKEZvcm0uZ2V0KFwidHlwX3BsdXNcIikpO1xuICB7XG4gICAgaWQ6IExhYmVsbGVkU3VtVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBzcGFjZSgpLFxuICAgICAgdHlwKFwiQ29uc3RydWN0b3IodHkpXCIpLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIGRpdmlkZXIsXG4gICAgICBzcGFjZSgpLFxuICAgICAgdHlwKFwiLi4uXCIpLFxuICAgICAgc3BhY2UoKSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBzdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZiA9IChjOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHNwZWNpZmllcyBvbmUgcG9zc2libGUgd2F5IG9mIGNvbnN0cnVjdGluZyB0aGUgcGFyZW50IHN1bSB0eXBlLCB3aGVuIGFwcGxpZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXIgdHlwZS5cIjtcbiAge1xuICAgIGlkOiBTdW1UeXBVbmFyeUNvbnN0cnVjdG9yRGVmLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbYyArKyBcIihUeXBlKVwiIHw+IGFiYnJldmlhdGUgfD4gdHlwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBzdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGVmID0gKGM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgc3BlY2lmaWVzIG9uZSBwb3NzaWJsZSB3YXkgb2YgY29uc3RydWN0aW5nIHRoZSBwYXJlbnQgc3VtIHR5cGUuXCI7XG4gIHtcbiAgICBpZDogU3VtVHlwTnVsbGFyeUNvbnN0cnVjdG9yRGVmLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbYyB8PiBhYmJyZXZpYXRlIHw+IHR5cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbGFiZWxsZWRfc3VtX3R5cHM6IGdyb3VwID0ge1xuICBpZDogTGFiZWxsZWRTdW1UeXAsXG4gIGZvcm1zOiBbbGFiZWxsZWRfc3VtX3R5cF0sXG59O1xuXG5sZXQgc3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWZzID0gKGM6IHN0cmluZyk6IGdyb3VwID0+IHtcbiAgaWQ6IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWYsXG4gIGZvcm1zOiBbc3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWYoYyldLFxufTtcblxubGV0IHN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZWZzID0gKGM6IHN0cmluZyk6IGdyb3VwID0+IHtcbiAgaWQ6IFN1bVR5cE51bGxhcnlDb25zdHJ1Y3RvckRlZixcbiAgZm9ybXM6IFtzdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGVmKGMpXSxcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBzdmcgPSAoYXR0cnMsIGNoaWxkcmVuKSA9PlxuICBOb2RlLmNyZWF0ZV9zdmcoXCJzdmdcIiwgfmF0dHI9QXR0ci5tYW55KGF0dHJzKSwgY2hpbGRyZW4pO1xuXG5sZXQgc3RvcCA9IGF0dHJzID0+IE5vZGUuY3JlYXRlX3N2ZyhcInN0b3BcIiwgfmF0dHI9QXR0ci5tYW55KGF0dHJzKSwgW10pO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsO1xuXG5sZXQgdGlwX3dpZHRoID0gMC4zMjtcbmxldCBjb25jYXZlX2FkaiA9IDAuMjU7XG5sZXQgY29udmV4X2FkaiA9ICgtMC4xMyk7XG5sZXQgc2hhZG93X2FkaiA9IDAuMDE1O1xuXG5sZXQgY2FyZXRfYWRqdXN0ID0gKHNpZGU6IERpcmVjdGlvbi50LCBzaGFwZTogb3B0aW9uKERpcmVjdGlvbi50KSkgPT5cbiAgc3dpdGNoIChzaWRlLCBzaGFwZSkge1xuICB8IChfLCBOb25lKSA9PiAwLlxuICB8IChMZWZ0LCBTb21lKExlZnQpKSA9PiBjb25jYXZlX2FkalxuICB8IChSaWdodCwgU29tZShSaWdodCkpID0+IC0uIGNvbmNhdmVfYWRqXG4gIHwgKExlZnQsIFNvbWUoUmlnaHQpKSA9PiBjb252ZXhfYWRqXG4gIHwgKFJpZ2h0LCBTb21lKExlZnQpKSA9PiAtLiBjb252ZXhfYWRqXG4gIH07XG5cbmxldCBjaGlsZF9ib3JkZXJfdGhpY2tuZXNzID0gMC4wNTtcblxubGV0IHQgPSBjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIC8uIDAuNTtcbmxldCBzaG9ydF90aXBfaGVpZ2h0ID0gKDEuIC0uIHQpICouIDAuNTtcblxubGV0IHN0cmV0Y2hfZHggPSAwLjE1O1xuXG5sZXQgcmFpc2VkX3NoYWRvd19keCA9IFwiMC4xXCI7XG5sZXQgcmFpc2VkX3NoYWRvd19keSA9IFwiMC4wMzdcIjtcbmxldCBzaGFkb3dfZHggPSByYWlzZWRfc2hhZG93X2R4O1xubGV0IHNoYWRvd19keSA9IHJhaXNlZF9zaGFkb3dfZHk7XG5cbmxldCBleHRyYV90YWlsID0gMC47XG5sZXQgamFnZ2VkX2VkZ2VfaCA9IGNoaWxkX2JvcmRlcl90aGlja25lc3MgLy4gMy47XG5sZXQgamFnZ2VkX2VkZ2VfdyA9IGNoaWxkX2JvcmRlcl90aGlja25lc3MgLy4gMS47XG5cbmxldCBzaG9ydF90aXBfd2lkdGggPSAoMS4gLS4gdCkgKi4gdGlwX3dpZHRoO1xuXG50eXBlIGRpbXMgPSB7XG4gIHdpZHRoOiBpbnQsXG4gIGhlaWdodDogaW50LFxuICBsZWZ0OiBpbnQsXG4gIHRvcDogaW50LFxufTtcblxudHlwZSBmZGltcyA9IHtcbiAgd2lkdGg6IGZsb2F0LFxuICBoZWlnaHQ6IGZsb2F0LFxuICBsZWZ0OiBmbG9hdCxcbiAgdG9wOiBmbG9hdCxcbn07XG5cbmxldCBmemVybzogZmRpbXMgPSB7d2lkdGg6IDAuLCBoZWlnaHQ6IDAuLCBsZWZ0OiAwLiwgdG9wOiAwLn07XG5cbmxldCBwb3Nfc3RyID0gKH5kOiBkaW1zLCB+ZnVkZ2U6IGZkaW1zPWZ6ZXJvLCBmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQpID0+XG4gIFByaW50Zi5zcHJpbnRmKFxuICAgIFwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7IHdpZHRoOiAlZnB4OyBoZWlnaHQ6ICVmcHg7XCIsXG4gICAgRmxvYXQub2ZfaW50KGQubGVmdCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBmdWRnZS5sZWZ0LFxuICAgIEZsb2F0Lm9mX2ludChkLnRvcCkgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQgKy4gZnVkZ2UudG9wLFxuICAgIEZsb2F0Lm9mX2ludChkLndpZHRoKSAqLiAoZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBmdWRnZS53aWR0aCksXG4gICAgRmxvYXQub2ZfaW50KGQuaGVpZ2h0KSAqLiAoZm9udF9tZXRyaWNzLnJvd19oZWlnaHQgKy4gZnVkZ2UuaGVpZ2h0KSxcbiAgKTtcblxubGV0IGNvZGVfc3ZnX3NpemVkID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfm1lYXN1cmVtZW50IGFzIHtvcmlnaW4sIGxhc3R9OiBIYXozbGNvcmUuTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgICB+YmFzZV9jbHM9W10sXG4gICAgICB+cGF0aF9jbHM9W10sXG4gICAgICB+YXR0cj1bXSxcbiAgICAgIH5mdWRnZTogZmRpbXM9Znplcm8sXG4gICAgICBwYXRoczogbGlzdChTdmdVdGlsLlBhdGguY21kKSxcbiAgICApID0+IHtcbiAgbGV0IChsZWZ0LCB0b3ApID0gKG9yaWdpbi5jb2wsIG9yaWdpbi5yb3cpO1xuICBsZXQgKHdpZHRoLCBoZWlnaHQpID0gKFxuICAgIGFicyhsYXN0LmNvbCAtIG9yaWdpbi5jb2wpLFxuICAgIGFicyhsYXN0LnJvdyAtIG9yaWdpbi5yb3cgKyAxKSxcbiAgKTtcbiAgbGV0IHN0eWxlID0gcG9zX3N0cih+ZD17bGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0fSwgfmZ1ZGdlLCBmb250X21ldHJpY3MpO1xuICBjcmVhdGVfc3ZnKFxuICAgIFwic3ZnXCIsXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoXG4gICAgICAgIFtcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoYmFzZV9jbHMpLFxuICAgICAgICAgIEF0dHIuY3JlYXRlKFwic3R5bGVcIiwgc3R5bGUpLFxuICAgICAgICAgIEF0dHIuY3JlYXRlKFwidmlld0JveFwiLCBQcmludGYuc3ByaW50ZihcIjAgMCAlZCAlZFwiLCB3aWR0aCwgaGVpZ2h0KSksXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwibm9uZVwiKSxcbiAgICAgICAgXVxuICAgICAgICBAIGF0dHIsXG4gICAgICApLFxuICAgIFtTdmdVdGlsLlBhdGgudmlldyh+YXR0cnM9W0F0dHIuY2xhc3NlcyhwYXRoX2NscyldLCBwYXRocyldLFxuICApO1xufTtcblxubGV0IHBvc2l0aW9uID1cbiAgICAoXG4gICAgICB+c3R5bGU9XCJcIixcbiAgICAgIH5sZWZ0X2Z1ZGdlPTAuMCxcbiAgICAgIH50b3BfZnVkZ2U9MC4wLFxuICAgICAgfndpZHRoX2Z1ZGdlPTAuMCxcbiAgICAgIH5oZWlnaHRfZnVkZ2U9MC4wLFxuICAgICAgfnNjYWxlPTEuLFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIG9yaWdpbjogSGF6M2xjb3JlLk1lYXN1cmVkLlBvaW50LnQsXG4gICAgKSA9PlxuICBBdHRyLmNyZWF0ZShcbiAgICBcInN0eWxlXCIsXG4gICAgc3R5bGVcbiAgICArKyBcIjtcIlxuICAgICsrIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgXCJsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7IHdpZHRoOiAlZnB4OyBoZWlnaHQ6ICVmcHg7XCIsXG4gICAgICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLmNvbCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBsZWZ0X2Z1ZGdlLFxuICAgICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5yb3cpICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0ICsuIHRvcF9mdWRnZSxcbiAgICAgICAgIHNjYWxlICouIChmb250X21ldHJpY3MuY29sX3dpZHRoICsuIHdpZHRoX2Z1ZGdlKSxcbiAgICAgICAgIHNjYWxlICouIChmb250X21ldHJpY3Mucm93X2hlaWdodCArLiBoZWlnaHRfZnVkZ2UpLFxuICAgICAgICksXG4gICk7XG5cbmxldCBhYnNfcG9zaXRpb24gPVxuICAgIChcbiAgICAgIH5sZWZ0X2Z1ZGdlPTAuMCxcbiAgICAgIH50b3BfZnVkZ2U9MC4wLFxuICAgICAgfndpZHRoX2Z1ZGdlPTAuMCxcbiAgICAgIH5oZWlnaHRfZnVkZ2U9MC4wLFxuICAgICAgfnNjYWxlPTEuLFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIG9yaWdpbjogSGF6M2xjb3JlLk1lYXN1cmVkLlBvaW50LnQsXG4gICAgKSA9PiB7XG4gIHBvc2l0aW9uKFxuICAgIH5zdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiLFxuICAgIH5sZWZ0X2Z1ZGdlLFxuICAgIH50b3BfZnVkZ2UsXG4gICAgfndpZHRoX2Z1ZGdlLFxuICAgIH5oZWlnaHRfZnVkZ2UsXG4gICAgfnNjYWxlLFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgb3JpZ2luLFxuICApO1xufTtcblxubGV0IGNvZGVfc3ZnID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfm9yaWdpbjogSGF6M2xjb3JlLk1lYXN1cmVkLlBvaW50LnQsXG4gICAgICB+YmFzZV9jbHM9W10sXG4gICAgICB+cGF0aF9jbHM9W10sXG4gICAgICB+bGVmdF9mdWRnZT0wLjAsXG4gICAgICB+dG9wX2Z1ZGdlPTAuMCxcbiAgICAgIH53aWR0aF9mdWRnZT0wLjAsXG4gICAgICB+aGVpZ2h0X2Z1ZGdlPTAuMCxcbiAgICAgIH5pZD1cIlwiLFxuICAgICAgfmF0dHJzPVtdLFxuICAgICAgfmFic19wb3M9dHJ1ZSxcbiAgICAgIHBhdGhzOiBsaXN0KFN2Z1V0aWwuUGF0aC5jbWQpLFxuICAgICkgPT4ge1xuICAvLyBVc2luZyBhIHZpZXdCb3ggb2YgMCAwIDEgMSBzZWVtcyB0byB0cmlnZ2VyIENocm9tZSByb3VuZGluZyBidWdcbiAgLy8gKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQyNDI4OCkgdGhhdFxuICAvLyBjYXVzZXMgbWlhc2xpZ25tZW50IGJldHdlZW4gcGllY2UgZGVjb3JhdGlvbnMgYW5kIHRleHQuXG4gIC8vIFVzaW5nIGEgZGlmZmVyZW50IHZpZXdCb3ggc2l6ZSBzZWVtcyB0byBmaXggdGhpcy5cbiAgbGV0IHNjYWxlID0gMi47XG4gIGNyZWF0ZV9zdmcoXG4gICAgXCJzdmdcIixcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShcbiAgICAgICAgKGlkID09IFwiXCIgPyBbXSA6IFtBdHRyLmlkKGlkKV0pXG4gICAgICAgIEAgW1xuICAgICAgICAgIEF0dHIuY2xhc3NlcyhiYXNlX2NscyksXG4gICAgICAgICAgYWJzX3Bvc1xuICAgICAgICAgICAgPyBhYnNfcG9zaXRpb24oXG4gICAgICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgICAgICB+bGVmdF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+dG9wX2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH53aWR0aF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+aGVpZ2h0X2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH5zY2FsZSxcbiAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogcG9zaXRpb24oXG4gICAgICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgICAgICB+bGVmdF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+dG9wX2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH53aWR0aF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+aGVpZ2h0X2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH5zY2FsZSxcbiAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJ2aWV3Qm94XCIsIFByaW50Zi5zcHJpbnRmKFwiMCAwICVmICVmXCIsIHNjYWxlLCBzY2FsZSkpLFxuICAgICAgICAgIEF0dHIuY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICAgIF1cbiAgICAgICAgQCBhdHRycyxcbiAgICAgICksXG4gICAgW1N2Z1V0aWwuUGF0aC52aWV3KH5hdHRycz1bQXR0ci5jbGFzc2VzKHBhdGhfY2xzKV0sIHBhdGhzKV0sXG4gICk7XG59O1xuXG5sZXQgcmFpc2VkX3NoYWRvd19maWx0ZXIgPSAoc29ydDogSGF6M2xjb3JlLlNvcnQudCkgPT4ge1xuICBsZXQgcyA9IEhhejNsY29yZS5Tb3J0LnRvX3N0cmluZyhzb3J0KTtcbiAgY3JlYXRlX3N2ZyhcbiAgICBcImZpbHRlclwiLFxuICAgIH5hdHRyPUF0dHIuaWQoXCJyYWlzZWQtZHJvcC1zaGFkb3ctXCIgKysgcyksXG4gICAgW1xuICAgICAgY3JlYXRlX3N2ZyhcbiAgICAgICAgXCJmZURyb3BTaGFkb3dcIixcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJ0aWxlLWRyb3Atc2hhZG93XCJdKSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwiZHhcIiwgcmFpc2VkX3NoYWRvd19keCksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcImR5XCIsIHJhaXNlZF9zaGFkb3dfZHkpLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJzdGREZXZpYXRpb25cIiwgXCIwXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBbXSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBzaGFkb3dfZmlsdGVyID0gKHNvcnQ6IEhhejNsY29yZS5Tb3J0LnQpID0+IHtcbiAgbGV0IHMgPSBIYXozbGNvcmUuU29ydC50b19zdHJpbmcoc29ydCk7XG4gIGNyZWF0ZV9zdmcoXG4gICAgXCJmaWx0ZXJcIixcbiAgICB+YXR0cj1BdHRyLmlkKFwiZHJvcC1zaGFkb3ctXCIgKysgcyksXG4gICAgW1xuICAgICAgY3JlYXRlX3N2ZyhcbiAgICAgICAgXCJmZURyb3BTaGFkb3dcIixcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJ0aWxlLWRyb3Atc2hhZG93XCJdKSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwiZHhcIiwgc2hhZG93X2R4KSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwiZHlcIiwgc2hhZG93X2R5KSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwic3RkRGV2aWF0aW9uXCIsIFwiMFwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgW10sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgZmlsdGVycyA9XG4gIE5vZGVVdGlsLnN2ZyhcbiAgICBBdHRyLltpZChcImZpbHRlcnNcIildLFxuICAgIExpc3QubWFwKHJhaXNlZF9zaGFkb3dfZmlsdGVyLCBIYXozbGNvcmUuU29ydC5hbGwpXG4gICAgQCBMaXN0Lm1hcChzaGFkb3dfZmlsdGVyLCBIYXozbGNvcmUuU29ydC5hbGwpLFxuICApO1xuIiwib3BlbiBEZWNVdGlsO1xub3BlbiBTdmdVdGlsLlBhdGg7XG5vcGVuIFNleHBsaWIuU3RkO1xuXG4vL1RPRE8oPyk6IGRlcHJlY2F0ZSB0aGlzIG1vZHVsZVxuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRpcF9zaGFwZSA9IChIYXozbGNvcmUuTmliLnQsIGludCk7XG5cbi8vIHRvcCByaWdodCB0byBib3R0b20gbGVmdFxubGV0IHRyX2JsID1cbiAgICAoXG4gICAgICB+c2NhbGUgYXMgcz0xLixcbiAgICAgIH5oZW1pOiBbIHwgYE5vcnRoIHwgYFNvdXRoXSxcbiAgICAgIH53aXRoX2NoaWxkX2JvcmRlcj1mYWxzZSxcbiAgICAgIH5zdHJldGNoX3g9MC4sXG4gICAgICB+c3RyZXRjaF95PTAuLFxuICAgICAgKCksXG4gICAgKSA9PlxuICBTdmdVdGlsLlBhdGguKFxuICAgIHtcbiAgICAgIGxldCAoZGlhZywganVuY3Rpb24pID1cbiAgICAgICAgd2l0aF9jaGlsZF9ib3JkZXJcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIExfKHtkeDogRmxvYXQubmVnKHNob3J0X3RpcF93aWR0aCksIGR5OiBzaG9ydF90aXBfaGVpZ2h0fSksXG4gICAgICAgICAgICBIXyh7ZHg6IEZsb2F0Lm5lZygwLjUgLS4gc2hvcnRfdGlwX3dpZHRoKX0pLFxuICAgICAgICAgIClcbiAgICAgICAgICA6IChcbiAgICAgICAgICAgIExfKHtkeDogRmxvYXQubmVnKHRpcF93aWR0aCksIGR5OiAwLjUgKy4gc3RyZXRjaF95fSksXG4gICAgICAgICAgICBIXyh7ZHg6IEZsb2F0Lm5lZyhzdHJldGNoX3gpfSksXG4gICAgICAgICAgKTtcbiAgICAgIGxldCBwYXRoID1cbiAgICAgICAgc3dpdGNoIChoZW1pKSB7XG4gICAgICAgIHwgYE5vcnRoID0+IFtqdW5jdGlvbiwgZGlhZ11cbiAgICAgICAgfCBgU291dGggPT4gW2RpYWcsIGp1bmN0aW9uXVxuICAgICAgICB9O1xuICAgICAgc2NhbGUocywgcGF0aCk7XG4gICAgfVxuICApO1xuLy8gYm90dG9tIGxlZnQgdG8gdG9wIHJpZ2h0XG5sZXQgYmxfdHIgPVxuICAgIChcbiAgICAgIH5oZW1pOiBbIHwgYE5vcnRoIHwgYFNvdXRoXSxcbiAgICAgIH53aXRoX2NoaWxkX2JvcmRlcj1mYWxzZSxcbiAgICAgIH5zdHJldGNoX3g9MC4sXG4gICAgICB+c3RyZXRjaF95PTAuLFxuICAgICAgKCksXG4gICAgKSA9PlxuICBTdmdVdGlsLlBhdGgucmV2ZXJzZShcbiAgICB0cl9ibCh+aGVtaSwgfndpdGhfY2hpbGRfYm9yZGVyLCB+c3RyZXRjaF94LCB+c3RyZXRjaF95LCAoKSksXG4gICk7XG5cbi8vIHRvcCBsZWZ0IHRvIGJvdHRvbSByaWdodFxubGV0IHRsX2JyID1cbiAgICAoXG4gICAgICB+aGVtaTogWyB8IGBOb3J0aCB8IGBTb3V0aF0sXG4gICAgICB+d2l0aF9jaGlsZF9ib3JkZXI9ZmFsc2UsXG4gICAgICB+c3RyZXRjaF94PTAuLFxuICAgICAgfnN0cmV0Y2hfeT0wLixcbiAgICAgICgpLFxuICAgICkgPT5cbiAgU3ZnVXRpbC5QYXRoLihcbiAgICB7XG4gICAgICBsZXQgKGRpYWcsIGp1bmN0aW9uKSA9XG4gICAgICAgIHdpdGhfY2hpbGRfYm9yZGVyXG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICBMXyh7ZHg6IHNob3J0X3RpcF93aWR0aCwgZHk6IHNob3J0X3RpcF9oZWlnaHR9KSxcbiAgICAgICAgICAgIEhfKHtkeDogMC41IC0uIHNob3J0X3RpcF93aWR0aH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICA6IChMXyh7ZHg6IHRpcF93aWR0aCwgZHk6IDAuNSArLiBzdHJldGNoX3l9KSwgSF8oe2R4OiBzdHJldGNoX3h9KSk7XG4gICAgICBzd2l0Y2ggKGhlbWkpIHtcbiAgICAgIHwgYE5vcnRoID0+IFtqdW5jdGlvbiwgZGlhZ11cbiAgICAgIHwgYFNvdXRoID0+IFtkaWFnLCBqdW5jdGlvbl1cbiAgICAgIH07XG4gICAgfVxuICApO1xuLy8gYm90dG9tIHJpZ2h0IHRvIHRvcCBsZWZ0XG5sZXQgYnJfdGwgPVxuICAgIChcbiAgICAgIH5oZW1pOiBbIHwgYE5vcnRoIHwgYFNvdXRoXSxcbiAgICAgIH53aXRoX2NoaWxkX2JvcmRlcj1mYWxzZSxcbiAgICAgIH5zdHJldGNoX3g9MC4sXG4gICAgICB+c3RyZXRjaF95PTAuLFxuICAgICAgKCksXG4gICAgKSA9PlxuICBTdmdVdGlsLlBhdGgucmV2ZXJzZShcbiAgICB0bF9icih+aGVtaSwgfndpdGhfY2hpbGRfYm9yZGVyLCB+c3RyZXRjaF94LCB+c3RyZXRjaF95LCAoKSksXG4gICk7XG5cbmxldCBsZWZ0X3RpcF9wYXRoID1cbiAgICAofnNjYWxlX3ggYXMgc194PTEuLCB+c2NhbGVfeSBhcyBzX3k9MS4sIHRpcDogdGlwX3NoYXBlKTogU3ZnVXRpbC5QYXRoLnQgPT4ge1xuICBsZXQgcGF0aCA9XG4gICAgc3dpdGNoICh0aXApIHtcbiAgICB8ICh7c2hhcGU6IENvbnZleCwgX30sIF8pID0+XG4gICAgICBicl90bCh+aGVtaT1gU291dGgsICgpKSBAIGJsX3RyKH5oZW1pPWBOb3J0aCwgKCkpXG4gICAgfCAoe3NoYXBlOiBDb25jYXZlKF9hKSwgX30sIG4pID0+XG4gICAgICBsZXQgamFnID0gW1xuICAgICAgICBMXyh7ZHg6IC0uIGphZ2dlZF9lZGdlX3csIGR5OiAtLiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICAgIExfKHtkeDogamFnZ2VkX2VkZ2VfdywgZHk6IC0uIGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgICAgTF8oe2R4OiAtLiBqYWdnZWRfZWRnZV93LCBkeTogLS4gamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgXTtcbiAgICAgIGxldCBib3R0b21faGFsZiA9XG4gICAgICAgIG4gPT0gMFxuICAgICAgICAgID8gW0hfKHtkeDogRmxvYXQubmVnKHRpcF93aWR0aCl9KSwgLi4uYmxfdHIofmhlbWk9YFNvdXRoLCAoKSldXG4gICAgICAgICAgOiBMaXN0LmNvbmNhdChbXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IC0uIChleHRyYV90YWlsICsuIDAuNSl9KV0sXG4gICAgICAgICAgICAgIGphZyxcbiAgICAgICAgICAgICAgW0hfKHtkeDogamFnZ2VkX2VkZ2VfdyArLiBleHRyYV90YWlsfSldLFxuICAgICAgICAgICAgICBibF90cih+aGVtaT1gU291dGgsIH53aXRoX2NoaWxkX2JvcmRlcj10cnVlLCAoKSksXG4gICAgICAgICAgICBdKTtcbiAgICAgIGxldCB0b3BfaGFsZiA9XG4gICAgICAgIG4gPT0gMCB8fCBuID09IDFcbiAgICAgICAgICA/IGJyX3RsKH5oZW1pPWBOb3J0aCwgKCkpIEAgW0hfKHtkeDogdGlwX3dpZHRofSldXG4gICAgICAgICAgOiBMaXN0LmNvbmNhdChbXG4gICAgICAgICAgICAgIGJyX3RsKH5oZW1pPWBOb3J0aCwgfndpdGhfY2hpbGRfYm9yZGVyPXRydWUsICgpKSxcbiAgICAgICAgICAgICAgW0hfKHtkeDogLS4gKGphZ2dlZF9lZGdlX3cgKy4gZXh0cmFfdGFpbCl9KV0sXG4gICAgICAgICAgICAgIGphZyxcbiAgICAgICAgICAgICAgW0hfKHtkeDogZXh0cmFfdGFpbCArLiAwLjV9KV0sXG4gICAgICAgICAgICBdKTtcbiAgICAgIGJvdHRvbV9oYWxmIEAgdG9wX2hhbGY7XG4gICAgfTtcbiAgc2NhbGVfeChzX3gsIHNjYWxlX3koc195LCBwYXRoKSk7XG59O1xubGV0IHJpZ2h0X3RpcF9wYXRoID1cbiAgICAofnNjYWxlX3ggYXMgc194PTEuLCB+c2NhbGVfeSBhcyBzX3k9MS4sIHRpcDogdGlwX3NoYXBlKTogU3ZnVXRpbC5QYXRoLnQgPT4ge1xuICBsZXQgcGF0aCA9XG4gICAgc3dpdGNoICh0aXApIHtcbiAgICB8ICh7c2hhcGU6IENvbnZleCwgX30sIF8pID0+XG4gICAgICB0bF9icih+aGVtaT1gTm9ydGgsICgpKSBAIHRyX2JsKH5oZW1pPWBTb3V0aCwgKCkpXG4gICAgfCAoe3NoYXBlOiBDb25jYXZlKF9hKSwgX30sIG4pID0+XG4gICAgICBvcGVuIFN2Z1V0aWwuUGF0aDtcbiAgICAgIGxldCBqYWcgPSBbXG4gICAgICAgIExfKHtkeDogamFnZ2VkX2VkZ2VfdywgZHk6IGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgICAgTF8oe2R4OiAtLiBqYWdnZWRfZWRnZV93LCBkeTogamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgICBMXyh7ZHg6IGphZ2dlZF9lZGdlX3csIGR5OiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICBdO1xuICAgICAgbGV0IHRvcF9oYWxmID1cbiAgICAgICAgbiA9PSAwIHx8IG4gPT0gMVxuICAgICAgICAgID8gW0hfKHtkeDogdGlwX3dpZHRofSksIC4uLnRyX2JsKH5oZW1pPWBOb3J0aCwgKCkpXVxuICAgICAgICAgIDogTGlzdC5jb25jYXQoW1xuICAgICAgICAgICAgICBbSF8oe2R4OiAwLjUgKy4gZXh0cmFfdGFpbH0pXSxcbiAgICAgICAgICAgICAgamFnLFxuICAgICAgICAgICAgICBbSF8oe2R4OiAtLiAoZXh0cmFfdGFpbCArLiBqYWdnZWRfZWRnZV93KX0pXSxcbiAgICAgICAgICAgICAgdHJfYmwofmhlbWk9YE5vcnRoLCB+d2l0aF9jaGlsZF9ib3JkZXI9dHJ1ZSwgKCkpLFxuICAgICAgICAgICAgXSk7XG4gICAgICBsZXQgYm90dG9tX2hhbGYgPVxuICAgICAgICBuID09IDBcbiAgICAgICAgICA/IHRsX2JyKH5oZW1pPWBTb3V0aCwgKCkpIEAgW0hfKHtkeDogRmxvYXQubmVnKHRpcF93aWR0aCl9KV1cbiAgICAgICAgICA6IExpc3QuY29uY2F0KFtcbiAgICAgICAgICAgICAgdGxfYnIofndpdGhfY2hpbGRfYm9yZGVyPXRydWUsIH5oZW1pPWBTb3V0aCwgKCkpLFxuICAgICAgICAgICAgICBbSF8oe2R4OiBleHRyYV90YWlsfSldLFxuICAgICAgICAgICAgICBqYWcsXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IEZsb2F0Lm5lZyhqYWdnZWRfZWRnZV93ICsuIGV4dHJhX3RhaWwgKy4gMC41KX0pXSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgdG9wX2hhbGYgQCBib3R0b21faGFsZjtcbiAgICB9O1xuICBzY2FsZV94KHNfeCwgc2NhbGVfeShzX3ksIHBhdGgpKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIEhhejNsY29yZTtcblxubW9kdWxlIFByb2ZpbGUgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBtZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgbW9sZDogTW9sZC50LFxuICB9O1xufTtcblxubGV0IHBhdGggPSAodGlwX2wsIHRpcF9yLCBvZmZzZXQsIHM6IGZsb2F0KSA9PiB7XG4gIGxldCB4X2RpbGF0ZSA9IDEuNTtcbiAgTGlzdC5jb25jYXQoXG4gICAgU3ZnVXRpbC5QYXRoLltcbiAgICAgIFtcbiAgICAgICAgTSh7eDogb2Zmc2V0ICsuIDAuNSwgeTogMC41IC0uIHMgLy4gMi59KSxcbiAgICAgICAgSF8oe2R4OiB4X2RpbGF0ZSAqLiBzIC8uIDIufSksXG4gICAgICBdLFxuICAgICAgRGlhZy5yaWdodF90aXBfcGF0aCh+c2NhbGVfeD1zICouIHhfZGlsYXRlLCB+c2NhbGVfeT1zLCAodGlwX3IsIDApKSxcbiAgICAgIFtIXyh7ZHg6IC0uIHMgKi4geF9kaWxhdGV9KV0sXG4gICAgICBEaWFnLmxlZnRfdGlwX3BhdGgofnNjYWxlX3g9cyAqLiB4X2RpbGF0ZSwgfnNjYWxlX3k9cywgKHRpcF9sLCAwKSksXG4gICAgICBbWl0sXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCB2aWV3ID0gKH5mb250X21ldHJpY3MsIHttZWFzdXJlbWVudCwgbW9sZH06IFByb2ZpbGUudCk6IE5vZGUudCA9PiB7XG4gIGxldCBzb3J0ID0gbW9sZC5vdXQ7XG4gIGxldCBjX2NscyA9IFNvcnQudG9fc3RyaW5nKHNvcnQpO1xuICBsZXQgKHRpcF9sLCB0aXBfcik6IChIYXozbGNvcmUuTmliLlNoYXBlLnQsIEhhejNsY29yZS5OaWIuU2hhcGUudCkgPVxuICAgIFV0aWwuVHVwbGVVdGlsLm1hcDIoSGF6M2xjb3JlLk5pYi5zaGFwZSwgbW9sZC5uaWJzKTtcbiAgbGV0ICh0aXBfbCwgdGlwX3IpOiAoSGF6M2xjb3JlLk5pYi50LCBIYXozbGNvcmUuTmliLnQpID0gKFxuICAgIHtzb3J0LCBzaGFwZTogdGlwX2x9LFxuICAgIHtzb3J0LCBzaGFwZTogdGlwX3J9LFxuICApO1xuICBEZWNVdGlsLmNvZGVfc3ZnX3NpemVkKFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgfm1lYXN1cmVtZW50LFxuICAgIH5iYXNlX2Nscz1bXCJlbXB0eS1ob2xlXCJdLFxuICAgIH5wYXRoX2Nscz1bXCJlbXB0eS1ob2xlLXBhdGhcIiwgY19jbHNdLFxuICAgIHBhdGgodGlwX2wsIHRpcF9yLCAwLiwgMC4yOCksXG4gICk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFV0aWw7XG5vcGVuIFV0aWwuV2ViO1xuXG5sZXQgb2ZfZGVsaW0nID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwoXG4gICAgfmNhY2hlX3NpemVfYm91bmQ9MTAwMDAsXG4gICAgKChsYWJlbCwgaXNfaW5fYnVmZmVyLCBzb3J0LCBpc19jb25zaXN0ZW50LCBpc19jb21wbGV0ZSwgaSkpID0+IHtcbiAgICAgIGxldCBjbHMgPVxuICAgICAgICBzd2l0Y2ggKGxhYmVsKSB7XG4gICAgICAgIHwgXyB3aGVuIGlzX2luX2J1ZmZlciA9PiBcImluLWJ1ZmZlclwiXG4gICAgICAgIHwgXyB3aGVuICFpc19jb25zaXN0ZW50ID0+IFwic29ydC1pbmNvbnNpc3RlbnRcIlxuICAgICAgICB8IF8gd2hlbiAhaXNfY29tcGxldGUgPT4gXCJpbmNvbXBsZXRlXCJcbiAgICAgICAgfCBbc10gd2hlbiBzID09IEZvcm0uZXhwbGljaXRfaG9sZSA9PiBcImV4cGxpY2l0LWhvbGVcIlxuICAgICAgICB8IFtzXSB3aGVuIEZvcm0uaXNfc3RyaW5nKHMpID0+IFwic3RyaW5nLWxpdFwiXG4gICAgICAgIHwgXyA9PiBcImRlZmF1bHRcIlxuICAgICAgICB9O1xuICAgICAgbGV0IHBsdXJhbGl0eSA9IExpc3QubGVuZ3RoKGxhYmVsKSA9PSAxID8gXCJtb25vXCIgOiBcInBvbHlcIjtcbiAgICAgIGxldCBsYWJlbCA9IGlzX2luX2J1ZmZlciA/IEFzc2lzdGFudEV4cGFuZGVyLm1hcmsobGFiZWwpIDogbGFiZWw7XG4gICAgICBbXG4gICAgICAgIHNwYW4oXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1widG9rZW5cIiwgY2xzLCBTb3J0LnRvX3N0cmluZyhzb3J0KSwgcGx1cmFsaXR5XSksXG4gICAgICAgICAgW05vZGUudGV4dChMaXN0Lm50aChsYWJlbCwgaSkpXSxcbiAgICAgICAgKSxcbiAgICAgIF07XG4gICAgfSxcbiAgKTtcbmxldCBvZl9kZWxpbSA9XG4gICAgKGlzX2luX2J1ZmZlciwgaXNfY29uc2lzdGVudCwgdDogUGllY2UudGlsZSwgaTogaW50KTogbGlzdChOb2RlLnQpID0+XG4gIG9mX2RlbGltJygoXG4gICAgdC5sYWJlbCxcbiAgICBpc19pbl9idWZmZXIsXG4gICAgdC5tb2xkLm91dCxcbiAgICBpc19jb25zaXN0ZW50LFxuICAgIFRpbGUuaXNfY29tcGxldGUodCksXG4gICAgaSxcbiAgKSk7XG5cbmxldCBvZl9ncm91dCA9IFtOb2RlLnRleHQoVW5pY29kZS5uYnNwKV07XG5cbmxldCBvZl9zZWNvbmRhcnkgPVxuICBDb3JlLk1lbW8uZ2VuZXJhbChcbiAgICB+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwMCwgKChjb250ZW50LCBzZWNvbmRhcnlfaWNvbnMsIGluZGVudCkpID0+XG4gICAgaWYgKFN0cmluZy5lcXVhbChTZWNvbmRhcnkuZ2V0X3N0cmluZyhjb250ZW50KSwgRm9ybS5saW5lYnJlYWspKSB7XG4gICAgICBsZXQgc3RyID0gc2Vjb25kYXJ5X2ljb25zID8gRm9ybS5saW5lYnJlYWsgOiBcIlwiO1xuICAgICAgW1xuICAgICAgICBzcGFuX2MoXCJsaW5lYnJlYWtcIiwgW3RleHQoc3RyKV0pLFxuICAgICAgICBOb2RlLmJyKCksXG4gICAgICAgIE5vZGUudGV4dChTdHJpbmdVdGlsLnJlcGVhdChpbmRlbnQsIFVuaWNvZGUubmJzcCkpLFxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKFN0cmluZy5lcXVhbChTZWNvbmRhcnkuZ2V0X3N0cmluZyhjb250ZW50KSwgRm9ybS5zcGFjZSkpIHtcbiAgICAgIGxldCBzdHIgPSBzZWNvbmRhcnlfaWNvbnMgPyBcIsK3XCIgOiBVbmljb2RlLm5ic3A7XG4gICAgICBbc3Bhbl9jKFwic2Vjb25kYXJ5XCIsIFt0ZXh0KHN0cildKV07XG4gICAgfSBlbHNlIGlmIChTZWNvbmRhcnkuY29udGVudF9pc19jb21tZW50KGNvbnRlbnQpKSB7XG4gICAgICBbc3Bhbl9jKFwiY29tbWVudFwiLCBbTm9kZS50ZXh0KFNlY29uZGFyeS5nZXRfc3RyaW5nKGNvbnRlbnQpKV0pXTtcbiAgICB9IGVsc2Uge1xuICAgICAgW3NwYW5fYyhcInNlY29uZGFyeVwiLCBbTm9kZS50ZXh0KFNlY29uZGFyeS5nZXRfc3RyaW5nKGNvbnRlbnQpKV0pXTtcbiAgICB9XG4gICk7XG5cbm1vZHVsZSBUZXh0ID0gKE06IHtcbiAgICAgICAgICAgICAgICAgbGV0IG1hcDogTWVhc3VyZWQudDtcbiAgICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzOiBTZXR0aW5ncy50O1xuICAgICAgICAgICAgICAgfSkgPT4ge1xuICBsZXQgbSA9IHAgPT4gTWVhc3VyZWQuZmluZF9wKHAsIE0ubWFwKTtcbiAgbGV0IHJlYyBvZl9zZWdtZW50ID1cbiAgICAgICAgICAoYnVmZmVyX2lkcywgbm9fc29ydHMsIHNvcnQsIHNlZzogU2VnbWVudC50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICAvKiBub3RlOiBub19zb3J0cyBmbGFnIGlzIHVzZWQgZm9yIGJhY2twYWNrIHZpZXc7XG4gICAgICAgb3RoZXJ3aXNlIFNlZ21lbnQuZXhwZWN0ZWRfc29ydHMgY2FsbCBjcmFzaGVzIGZvciBzb21lIHJlYXNvbiAqL1xuICAgIGxldCBleHBlY3RlZF9zb3J0cyA9XG4gICAgICBub19zb3J0c1xuICAgICAgICA/IExpc3QuaW5pdChMaXN0Lmxlbmd0aChzZWcpLCBpID0+IChpLCBTb3J0LkFueSkpXG4gICAgICAgIDogU2VnbWVudC5leHBlY3RlZF9zb3J0cyhzb3J0LCBzZWcpO1xuICAgIGxldCBzb3J0X29mX3BfaWR4ID0gaWR4ID0+XG4gICAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KGlkeCwgZXhwZWN0ZWRfc29ydHMpKSB7XG4gICAgICB8IE5vbmUgPT4gU29ydC5BbnlcbiAgICAgIHwgU29tZShzb3J0KSA9PiBzb3J0XG4gICAgICB9O1xuICAgIHNlZ1xuICAgIHw+IExpc3QubWFwaSgoaSwgcCkgPT4gKGksIHApKVxuICAgIHw+IExpc3QuY29uY2F0X21hcCgoKGksIHApKSA9PlxuICAgICAgICAgb2ZfcGllY2UoYnVmZmVyX2lkcywgc29ydF9vZl9wX2lkeChpKSwgcClcbiAgICAgICApO1xuICB9XG4gIGFuZCBvZl9waWVjZSA9XG4gICAgICAoYnVmZmVyX2lkcywgZXhwZWN0ZWRfc29ydDogU29ydC50LCBwOiBQaWVjZS50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICBzd2l0Y2ggKHApIHtcbiAgICB8IFRpbGUodCkgPT4gb2ZfdGlsZShidWZmZXJfaWRzLCBleHBlY3RlZF9zb3J0LCB0KVxuICAgIHwgR3JvdXQoXykgPT4gb2ZfZ3JvdXRcbiAgICB8IFNlY29uZGFyeSh7Y29udGVudCwgX30pID0+XG4gICAgICBvZl9zZWNvbmRhcnkoKGNvbnRlbnQsIE0uc2V0dGluZ3Muc2Vjb25kYXJ5X2ljb25zLCBtKHApLmxhc3QuY29sKSlcbiAgICB9O1xuICB9XG4gIGFuZCBvZl90aWxlID0gKGJ1ZmZlcl9pZHMsIGV4cGVjdGVkX3NvcnQ6IFNvcnQudCwgdDogVGlsZS50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICBsZXQgY2hpbGRyZW5fYW5kX3NvcnRzID1cbiAgICAgIExpc3QubWFwaShcbiAgICAgICAgKGksIChsLCBjaGlsZCwgcikpID0+XG4gICAgICAgICAgLy9UT0RPKGFuZHJldyk6IG1vcmUgc3VidGxlIGxvZ2ljIGFib3V0IHNvcnQgYWNjZXB0YWJpbGl0eVxuICAgICAgICAgIChjaGlsZCwgbCArIDEgPT0gciA/IExpc3QubnRoKHQubW9sZC5pbl8sIGkpIDogU29ydC5BbnkpLFxuICAgICAgICBBYmEuYWJhX3RyaXBsZXMoQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKSksXG4gICAgICApO1xuICAgIGxldCBpc19jb25zaXN0ZW50ID0gU29ydC5jb25zaXN0ZW50KHQubW9sZC5vdXQsIGV4cGVjdGVkX3NvcnQpO1xuICAgIGxldCBpc19pbl9idWZmZXIgPSBMaXN0Lm1lbSh0LmlkLCBidWZmZXJfaWRzKTtcbiAgICBBYmEubWsodC5zaGFyZHMsIGNoaWxkcmVuX2FuZF9zb3J0cylcbiAgICB8PiBBYmEuam9pbihvZl9kZWxpbShpc19pbl9idWZmZXIsIGlzX2NvbnNpc3RlbnQsIHQpLCAoKHNlZywgc29ydCkpID0+XG4gICAgICAgICBvZl9zZWdtZW50KGJ1ZmZlcl9pZHMsIGZhbHNlLCBzb3J0LCBzZWcpXG4gICAgICAgKVxuICAgIHw+IExpc3QuY29uY2F0O1xuICB9O1xufTtcblxubGV0IHJlYyBob2xlcyA9XG4gICAgICAgICh+Zm9udF9tZXRyaWNzLCB+bWFwOiBNZWFzdXJlZC50LCBzZWc6IFNlZ21lbnQudCk6IGxpc3QoTm9kZS50KSA9PlxuICBzZWdcbiAgfD4gTGlzdC5jb25jYXRfbWFwKFxuICAgICAgIGZ1blxuICAgICAgIHwgUGllY2UuU2Vjb25kYXJ5KF8pID0+IFtdXG4gICAgICAgfCBUaWxlKHQpID0+IExpc3QuY29uY2F0X21hcChob2xlcyh+bWFwLCB+Zm9udF9tZXRyaWNzKSwgdC5jaGlsZHJlbilcbiAgICAgICB8IEdyb3V0KGcpID0+IFtcbiAgICAgICAgICAgRW1wdHlIb2xlRGVjLnZpZXcoXG4gICAgICAgICAgICAgfmZvbnRfbWV0cmljcywgLy8gVE9ETyhkKSBmaXggc29ydFxuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIG1lYXN1cmVtZW50OiBNZWFzdXJlZC5maW5kX2coZywgbWFwKSxcbiAgICAgICAgICAgICAgIG1vbGQ6IE1vbGQub2ZfZ3JvdXQoZywgQW55KSxcbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICApLFxuICAgICAgICAgXSxcbiAgICAgKTtcblxubGV0IHNpbXBsZV92aWV3ID1cbiAgICAofmZvbnRfbWV0cmljcywgfnVuc2VsZWN0ZWQsIH5tYXAsIH5zZXR0aW5nczogU2V0dGluZ3MudCk6IE5vZGUudCA9PiB7XG4gIG1vZHVsZSBUZXh0ID1cbiAgICBUZXh0KHtcbiAgICAgIGxldCBtYXAgPSBtYXA7XG4gICAgICBsZXQgc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB9KTtcbiAgbGV0IGhvbGVzID0gaG9sZXMofm1hcCwgfmZvbnRfbWV0cmljcywgdW5zZWxlY3RlZCk7XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLmNsYXNzXyhcImNvZGVcIiksXG4gICAgW1xuICAgICAgc3Bhbl9jKFwiY29kZS10ZXh0XCIsIFRleHQub2Zfc2VnbWVudChbXSwgZmFsc2UsIFNvcnQuQW55LCB1bnNlbGVjdGVkKSksXG4gICAgICAuLi5ob2xlcyxcbiAgICBdLFxuICApO1xufTtcblxubGV0IG9mX2hvbGUgPSAofmdsb2JhbHM6IEdsb2JhbHMudCwgfm1lYXN1cmVkLCBnOiBHcm91dC50KSA9PlxuICAvLyBUT0RPKGQpIGZpeCBzb3J0XG4gIEVtcHR5SG9sZURlYy52aWV3KFxuICAgIH5mb250X21ldHJpY3M9Z2xvYmFscy5mb250X21ldHJpY3MsXG4gICAge1xuICAgICAgbWVhc3VyZW1lbnQ6IE1lYXN1cmVkLmZpbmRfZyhnLCBtZWFzdXJlZCksXG4gICAgICBtb2xkOiBNb2xkLm9mX2dyb3V0KGcsIEFueSksXG4gICAgfSxcbiAgKTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5nbG9iYWxzOiBHbG9iYWxzLnQsXG4gICAgICB+c29ydDogU29ydC50LFxuICAgICAge3N0YXRlOiB7bWV0YToge21lYXN1cmVkLCBidWZmZXJfaWRzLCB1bnNlbGVjdGVkLCBob2xlcywgX30sIF99LCBffTogRWRpdG9yLnQsXG4gICAgKVxuICAgIDogTm9kZS50ID0+IHtcbiAgbW9kdWxlIFRleHQgPVxuICAgIFRleHQoe1xuICAgICAgbGV0IG1hcCA9IG1lYXN1cmVkO1xuICAgICAgbGV0IHNldHRpbmdzID0gZ2xvYmFscy5zZXR0aW5ncztcbiAgICB9KTtcbiAgbGV0IGNvZGUgPSBUZXh0Lm9mX3NlZ21lbnQoYnVmZmVyX2lkcywgZmFsc2UsIHNvcnQsIHVuc2VsZWN0ZWQpO1xuICBsZXQgaG9sZXMgPSBMaXN0Lm1hcChvZl9ob2xlKH5tZWFzdXJlZCwgfmdsb2JhbHMpLCBob2xlcyk7XG4gIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImNvZGVcIiksIFtzcGFuX2MoXCJjb2RlLXRleHRcIiwgY29kZSksIC4uLmhvbGVzXSk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCBiYWNrcGFja19zZWxfdmlldyA9XG4gICAgKFxuICAgICAgeF9vZmY6IGZsb2F0LFxuICAgICAgeV9vZmY6IGZsb2F0LFxuICAgICAgc2NhbGU6IGZsb2F0LFxuICAgICAgb3BhY2l0eTogZmxvYXQsXG4gICAgICB7Zm9jdXM6IF8sIGNvbnRlbnQsIF99OiBTZWxlY3Rpb24udCxcbiAgICApID0+IHtcbiAgbW9kdWxlIFRleHQgPVxuICAgIENvZGUuVGV4dCh7XG4gICAgICBsZXQgbWFwID0gTWVhc3VyZWQub2Zfc2VnbWVudChjb250ZW50KTtcbiAgICAgIGxldCBzZXR0aW5ncyA9IEluaXQuc3RhcnR1cC5zZXR0aW5ncztcbiAgICB9KTtcbiAgLy8gVE9ETyhhbmRyZXcpOiBNYXliZSB1c2UgaW5pdCBzb3J0IGF0IGNhcmV0IHRvIHByaW1lIHRoaXNcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5jbGFzc2VzKFtcImNvZGUtdGV4dFwiLCBcImJhY2twYWNrLXNlbGVjdGlvblwiXSksXG4gICAgICAgIEF0dHIuY3JlYXRlKFxuICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoJWZweCwgJWZweCkgc2NhbGUoJWYpOyBvcGFjaXR5OiAlZiUlO1wiLFxuICAgICAgICAgICAgeF9vZmYsXG4gICAgICAgICAgICB5X29mZixcbiAgICAgICAgICAgIHNjYWxlLFxuICAgICAgICAgICAgb3BhY2l0eSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgLy8gendzcCBuZWNlc3NhcnkgZm9yIGNvbnRhaW5pbmcgYm94IHRvIHN0cmV0Y2ggdG8gY29udGFpbiB0cmFpbGluZyBuZXdsaW5lXG4gICAgVGV4dC5vZl9zZWdtZW50KFtdLCB0cnVlLCBBbnksIGNvbnRlbnQpIEAgW3RleHQoVW5pY29kZS56d3NwKV0sXG4gICk7XG59O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5vcmlnaW46IE1lYXN1cmVkLlBvaW50LnQsXG4gICAgICB7YmFja3BhY2ssIF99IGFzIHo6IFppcHBlci50LFxuICAgIClcbiAgICA6IE5vZGUudCA9PiB7XG4gIC8vVE9ETyhhbmRyZXcpOiBjbGVhbiB1cCB0aGlzIGR1bXBzdGVyIGZpcmUgb2YgYSBmdW5jdGlvblxuICBsZXQgaGVpZ2h0X2hlYWQgPVxuICAgIHN3aXRjaCAoYmFja3BhY2spIHtcbiAgICB8IFtdID0+IDBcbiAgICB8IFtoZCwgLi4uX10gPT4gTWVhc3VyZWQuc2VnbWVudF9oZWlnaHQoaGQuY29udGVudClcbiAgICB9O1xuICBsZXQgY2FuX3B1dF9kb3duID1cbiAgICBzd2l0Y2ggKFppcHBlci5wb3BfYmFja3BhY2soeikpIHtcbiAgICAvLyBjYXJldCB0aGluZyBpcyBoYWNrOyBpIGRvbid0IGtub3cgd2h5IHBvcF9iYWNrcGFja1xuICAgIC8vIGdpdmVzIHVzIHdoYXQgd2Ugd2FudCBoZXJlXG4gICAgfCBTb21lKF8pID0+IHouY2FyZXQgPT0gT3V0ZXJcbiAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICB9O1xuICBsZXQgY2FyZXRfYWRqID0ge1xuICAgIGxldCBzaGFwZSA9IFppcHBlci5jYXJldF9kaXJlY3Rpb24oeik7XG4gICAgbGV0IHNpZGUgPVxuICAgICAgc3dpdGNoIChJbmRpY2F0ZWQucGllY2UoeikpIHtcbiAgICAgIHwgU29tZSgoXywgc2lkZSwgXykpID0+IHNpZGVcbiAgICAgIHwgXyA9PiBSaWdodFxuICAgICAgfTtcbiAgICBEZWNVdGlsLmNhcmV0X2FkanVzdChzaWRlLCBzaGFwZSk7XG4gIH07XG4gIGxldCBjYXJldF9hZGpfcHggPVxuICAgIC8vVE9ETyhhbmRyZXcpOiBmaWd1cmUgb3V0IHdoeSB3ZSBuZWVkIHRoaXMgbXlzdGVyeSBwaXhlbCBiZWxvd1xuICAgICgtMS4pICsuIGNhcmV0X2FkaiAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoO1xuICBsZXQgbWF4X2Rpc3AgPSAzOyAvKiBNYXhpbXVtIHZlcnRpY2FsIGJhY2twYWNrIGRpc3BsYWNlbWVudCAqL1xuICBsZXQgdmVydGljYWxfZGlzcCA9IG9yaWdpbi5yb3cgPD0gbWF4X2Rpc3AgPyBvcmlnaW4ucm93IDogbWF4X2Rpc3A7XG4gIGxldCBzZWxlY3Rpb25zX3N0eWxlID1cbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7XCIsXG4gICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLmNvbCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBjYXJldF9hZGpfcHgsXG4gICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLnJvdyAtIHZlcnRpY2FsX2Rpc3AgLSBoZWlnaHRfaGVhZCAtIDEpXG4gICAgICAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICApO1xuICBsZXQgc2NhbGVfZm4gPSBpZHggPT4gZmxvYXRfb2ZfaW50KDEwMCAtIDEyICogaWR4KSAvLiAxMDAuO1xuICBsZXQgeF9mbiA9IGlkeCA9PiBmbG9hdF9vZl9pbnQoMTIgKiBpZHgpO1xuICBsZXQgaW5pdF9vcGFjaXR5ID0gMTAwLjtcbiAgbGV0IG9wYWNpdHlfcmVkdWN0aW9uID0gMjAuOyAvLyByZWR1Y3Rpb24gcGVyIGxpbmVcbiAgbGV0IGluaXRfaWR4ID0gMDtcbiAgbGV0IGR5X2ZuID0gKGlkeCwgYmFzZV9oZWlnaHQpID0+XG4gICAgZm9udF9tZXRyaWNzLnJvd19oZWlnaHRcbiAgICAqLiBmbG9hdF9vZl9pbnQoYmFzZV9oZWlnaHQpXG4gICAgKi4gc2NhbGVfZm4oaWR4KVxuICAgIC0uIDQuO1xuICBsZXQgaW5pdF95X29mZnNldCA9IGR5X2ZuKGluaXRfaWR4LCBoZWlnaHRfaGVhZCk7XG4gIGxldCAoXywgXywgXywgc2VsZWN0aW9ucykgPVxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKChpZHgsIHlfb2Zmc2V0LCBvcGFjaXR5LCB2cyksIHM6IFNlbGVjdGlvbi50KSA9PiB7XG4gICAgICAgIGxldCBiYXNlX2hlaWdodCA9IE1lYXN1cmVkLnNlZ21lbnRfaGVpZ2h0KHMuY29udGVudCk7XG4gICAgICAgIGxldCBzY2FsZSA9IHNjYWxlX2ZuKGlkeCk7XG4gICAgICAgIGxldCB4X29mZnNldCA9IHhfZm4oaWR4KTtcbiAgICAgICAgbGV0IG5ld195X29mZnNldCA9IHlfb2Zmc2V0IC0uIGR5X2ZuKGlkeCwgYmFzZV9oZWlnaHQpO1xuICAgICAgICBsZXQgdiA9IGJhY2twYWNrX3NlbF92aWV3KHhfb2Zmc2V0LCBuZXdfeV9vZmZzZXQsIHNjYWxlLCBvcGFjaXR5LCBzKTtcbiAgICAgICAgbGV0IG5ld19pZHggPSBpZHggKyAxO1xuICAgICAgICBsZXQgbmV3X29wYWNpdHkgPSBvcGFjaXR5IC0uIG9wYWNpdHlfcmVkdWN0aW9uO1xuICAgICAgICAvL1RPRE8oYW5kcmV3KTogYW0gaSBtYWtpbmcgdGhpcyBkaWZmaWN1bHQgYnkgZ29pbmcgYmFja3dhcmRzP1xuICAgICAgICAobmV3X2lkeCwgbmV3X3lfb2Zmc2V0LCBuZXdfb3BhY2l0eSwgTGlzdC5jb25zKHYsIHZzKSk7XG4gICAgICB9LFxuICAgICAgKGluaXRfaWR4LCBpbml0X3lfb2Zmc2V0LCBpbml0X29wYWNpdHksIFtdKSxcbiAgICAgIGJhY2twYWNrLFxuICAgICk7XG4gIGxldCBzZWxlY3Rpb25zX3ZpZXcgPVxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuY3JlYXRlKFwic3R5bGVcIiwgc2VsZWN0aW9uc19zdHlsZSksXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcImJhY2twYWNrXCJdKSxcbiAgICAgICAgXSksXG4gICAgICBzZWxlY3Rpb25zLFxuICAgICk7XG4gIGxldCBsZW5ndGggPVxuICAgIHN3aXRjaCAoYmFja3BhY2spIHtcbiAgICB8IFtdID0+IDBcbiAgICB8IFtoZCwgLi4uX10gPT4gTWVhc3VyZWQuc2VnbWVudF93aWR0aChoZC5jb250ZW50KVxuICAgIH07XG5cbiAgbGV0IGpvaW5lcl9zdHlsZSA9XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogJWZweDsgdG9wOiAlZnB4OyBoZWlnaHQ6ICVmcHg7XCIsXG4gICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLmNvbCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBjYXJldF9hZGpfcHgsXG4gICAgICAoLTMuKVxuICAgICAgKy4gRmxvYXQub2ZfaW50KG9yaWdpbi5yb3cgLSB2ZXJ0aWNhbF9kaXNwKVxuICAgICAgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQsXG4gICAgICAzLiArLiBGbG9hdC5vZl9pbnQodmVydGljYWxfZGlzcCkgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQsXG4gICAgKTtcbiAgbGV0IGpvaW5lciA9XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBqb2luZXJfc3R5bGUpLFxuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJiYWNrcGFjay1qb2luZXJcIl0pLFxuICAgICAgICBdKSxcbiAgICAgIFtdLFxuICAgICk7XG4gIC8vVE9ETyhhbmRyZXcpOiBicmVhayBvdXQgYmFja3BhY2sgZGVjb3JhdGlvbiBpbnRvIGl0cyBvd24gbW9kdWxlXG4gIGxldCBnZW5pZV92aWV3ID1cbiAgICBEZWNVdGlsLmNvZGVfc3ZnKFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5vcmlnaW49e3JvdzogMCwgY29sOiAwfSxcbiAgICAgIH5iYXNlX2Nscz1bXCJyZXN0cnVjdHVyaW5nLWdlbmllXCJdLFxuICAgICAgfnBhdGhfY2xzPVtcInJlc3RydWN0dXJpbmctZ2VuaWUtcGF0aFwiXSxcbiAgICAgIFN2Z1V0aWwuUGF0aC5bXG4gICAgICAgIE0oe3g6IDAuLCB5OiAwLn0pLFxuICAgICAgICBWKHt5OiAoLTEuMCl9KSxcbiAgICAgICAgSF8oe2R4OiBGbG9hdC5vZl9pbnQobGVuZ3RoKX0pLFxuICAgICAgICBWXyh7ZHk6IDAuMH0pLFxuICAgICAgICBaLFxuICAgICAgXSxcbiAgICApO1xuICBsZXQgZ2VuaWVfc3R5bGUgPVxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6ICVmcHg7IHRvcDogJWZweDtcIixcbiAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4uY29sKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoICsuIGNhcmV0X2Fkal9weCxcbiAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4ucm93IC0gdmVydGljYWxfZGlzcClcbiAgICAgICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0XG4gICAgICArLiAxLixcbiAgICApO1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLmNsYXNzZXMoXG4gICAgICAgICAgW1wiYmFja3BhY2tcIl0gQCAoY2FuX3B1dF9kb3duID8gW10gOiBbXCJjYW50LXB1dC1kb3duXCJdKSxcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgIFtcbiAgICAgIHNlbGVjdGlvbnNfdmlldyxcbiAgICAgIGRpdih+YXR0cj1BdHRyLmNyZWF0ZShcInN0eWxlXCIsIGdlbmllX3N0eWxlKSwgW2dlbmllX3ZpZXddKSxcbiAgICBdXG4gICAgQCAoYmFja3BhY2sgIT0gW10gPyBbam9pbmVyXSA6IFtdKSxcbiAgKTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFN2Z1V0aWw7XG5cbmxldCBjYXJldF93aWR0aF9zdHJhaWdodCA9IDAuMTtcbmxldCBjYXJldF93aWR0aF9iZW50ID0gMC4xO1xubGV0IGNhcmV0X2JlbmQgPSBEZWNVdGlsLnRpcF93aWR0aDtcblxubW9kdWxlIFByb2ZpbGUgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBzaWRlOiBEaXJlY3Rpb24udCxcbiAgICBvcmlnaW46IEhhejNsY29yZS5NZWFzdXJlZC5Qb2ludC50LFxuICAgIHNoYXBlOiBvcHRpb24oRGlyZWN0aW9uLnQpLFxuICB9O1xufTtcblxubGV0IGNhcmV0X3BhdGggPSAoc2hhcGU6IG9wdGlvbihEaXJlY3Rpb24udCkpID0+IHtcbiAgbGV0IGNhcmV0X2JlbmRfcGFyYW0gPVxuICAgIHN3aXRjaCAoc2hhcGUpIHtcbiAgICB8IFNvbWUoUmlnaHQpID0+IC0uIGNhcmV0X2JlbmRcbiAgICB8IFNvbWUoTGVmdCkgPT4gY2FyZXRfYmVuZFxuICAgIHwgTm9uZSA9PiAwLjBcbiAgICB9O1xuICBsZXQgY2FyZXRfd2lkdGhfcGFyYW0gPVxuICAgIHN3aXRjaCAoc2hhcGUpIHtcbiAgICB8IFNvbWUoUmlnaHQpID0+IC0uIGNhcmV0X3dpZHRoX2JlbnRcbiAgICB8IFNvbWUoTGVmdCkgPT4gY2FyZXRfd2lkdGhfYmVudFxuICAgIHwgTm9uZSA9PiBjYXJldF93aWR0aF9zdHJhaWdodFxuICAgIH07XG4gIFBhdGguW1xuICAgIG0ofng9MCwgfnk9MCksXG4gICAgSCh7eDogY2FyZXRfd2lkdGhfcGFyYW19KSxcbiAgICBMXyh7ZHg6IC0uIGNhcmV0X2JlbmRfcGFyYW0sIGR5OiAwLjV9KSxcbiAgICBMXyh7ZHg6ICsuIGNhcmV0X2JlbmRfcGFyYW0sIGR5OiAwLjV9KSxcbiAgICBIKHt4OiAtLiBjYXJldF93aWR0aF9wYXJhbX0pLFxuICAgIExfKHtkeDogLS4gY2FyZXRfYmVuZF9wYXJhbSwgZHk6ICgtMC41KX0pLFxuICAgIExfKHtkeDogKy4gY2FyZXRfYmVuZF9wYXJhbSwgZHk6ICgtMC41KX0pLFxuICBdO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+cHJvZmlsZSBhcyB7c2hhcGUsIHNpZGUsIG9yaWdpbn06IFByb2ZpbGUudCxcbiAgICApID0+IHtcbiAgbGV0IGxfYWRqID0gRGVjVXRpbC5jYXJldF9hZGp1c3Qoc2lkZSwgc2hhcGUpO1xuICBEZWNVdGlsLmNvZGVfc3ZnKFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgfm9yaWdpbixcbiAgICB+aWQ9XCJjYXJldFwiLFxuICAgIH5iYXNlX2Nscz1bXCJibGlua1wiXSxcbiAgICB+cGF0aF9jbHM9W1wiY2FyZXQtcGF0aFwiXSxcbiAgICB+aGVpZ2h0X2Z1ZGdlPURlY1V0aWwuc2hhZG93X2FkaiAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICB+bGVmdF9mdWRnZT1sX2FkaiAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoLFxuICAgIGNhcmV0X3BhdGgoc2hhcGUpLFxuICApO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubW9kdWxlIFByb2ZpbGUgPSB7XG4gIHR5cGUgc3R5bGUgPSBbIHwgYEJhcmUgfCBgU2libGluZyB8IGBBbmNob3IgfCBgQ2FyZXRdO1xuICB0eXBlIHQgPSB7XG4gICAgc3R5bGUsXG4gICAgbWVhc3VyZW1lbnQ6IEhhejNsY29yZS5NZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICBzb3J0OiBIYXozbGNvcmUuU29ydC50LFxuICB9O1xufTtcblxubGV0IGNhcmV0X3Bvc2l0aW9uX3JhZGlpID1cbiAgICAofmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCwgfnN0eWxlOiBQcm9maWxlLnN0eWxlKSA9PiB7XG4gIGxldCByID1cbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgfCBgQ2FyZXQgPT4gMy43NVxuICAgIHwgYEFuY2hvclxuICAgIHwgYFNpYmxpbmcgPT4gMi43NVxuICAgIHwgYEJhcmUgPT4gMi4wXG4gICAgfTtcbiAgKHIgLy4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCwgciAvLiBmb250X21ldHJpY3Mucm93X2hlaWdodCk7XG59O1xuXG5sZXQgdmlldyA9ICh+Zm9udF9tZXRyaWNzLCB7c3R5bGUsIHNvcnQsIG1lYXN1cmVtZW50fTogUHJvZmlsZS50KSA9PiB7XG4gIGxldCAocl94LCByX3kpID0gY2FyZXRfcG9zaXRpb25fcmFkaWkofmZvbnRfbWV0cmljcywgfnN0eWxlKTtcbiAgbGV0IGNfY2xzID0gSGF6M2xjb3JlLlNvcnQudG9fc3RyaW5nKHNvcnQpO1xuICBsZXQgY2xzID1cbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgfCBgQmFyZSA9PiBcIm91dGVyLWNvdXNpblwiXG4gICAgfCBgQ2FyZXQgPT4gXCJjdXJyZW50LWNhcmV0LXBvc1wiXG4gICAgfCBgQW5jaG9yID0+IFwiYW5jaG9yXCJcbiAgICB8IGBTaWJsaW5nID0+IFwic2libGluZ1wiXG4gICAgfTtcbiAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgIFwic3ZnXCIsXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLmNsYXNzXyhjbHMpLFxuICAgICAgICBEZWNVdGlsLmFic19wb3NpdGlvbih+Zm9udF9tZXRyaWNzLCBtZWFzdXJlbWVudC5vcmlnaW4pLFxuICAgICAgICBBdHRyLmNyZWF0ZShcInZpZXdCb3hcIiwgUHJpbnRmLnNwcmludGYoXCIwIDAgMSAxXCIpKSxcbiAgICAgICAgQXR0ci5jcmVhdGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwibm9uZVwiKSxcbiAgICAgIF0pLFxuICAgIFtcbiAgICAgIE5vZGUuY3JlYXRlX3N2ZyhcbiAgICAgICAgXCJyZWN0XCIsXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShcbiAgICAgICAgICAgIEF0dHIuW1xuICAgICAgICAgICAgICBjcmVhdGUoXCJ4XCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCAtLiByX3gpKSxcbiAgICAgICAgICAgICAgY3JlYXRlKFwieVwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgMC4xIC0uIHJfeSkpLFxuICAgICAgICAgICAgICBjcmVhdGUoXCJ3aWR0aFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgMS4gKi4gcl94KSksXG4gICAgICAgICAgICAgIGNyZWF0ZShcImhlaWdodFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgMS4gKi4gcl95KSksXG4gICAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJjYXJldC1wb3NpdGlvbi1wYXRoXCIsIGNscywgY19jbHNdKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKSxcbiAgICAgICAgW10sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFN2Z1V0aWw7XG5cbmxldCBydW46IE5pYi5TaGFwZS50ID0+IGZsb2F0ID1cbiAgZnVuXG4gIHwgQ29udmV4ID0+ICsuIERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoXG4gIHwgQ29uY2F2ZShfKSA9PiAtLiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aDtcblxubGV0IGFkajogTmliLlNoYXBlLnQgPT4gZmxvYXQgPVxuICBmdW5cbiAgfCBDb252ZXggPT4gRGVjVXRpbC5jb252ZXhfYWRqXG4gIHwgQ29uY2F2ZShfKSA9PiBEZWNVdGlsLmNvbmNhdmVfYWRqO1xuXG5sZXQgbF9ob29rID0gKGw6IE5pYi5TaGFwZS50KTogbGlzdChQYXRoLmNtZCkgPT4gW1xuICBIXyh7ZHg6IC0uIGFkaihsKX0pLFxuICBMXyh7ZHg6IC0uIHJ1bihsKSwgZHk6ICgtMC41KX0pLFxuICBMXyh7ZHg6ICsuIHJ1bihsKSwgZHk6ICgtMC41KX0pLFxuICBIXyh7ZHg6ICsuIGFkaihsKX0pLFxuXTtcblxubGV0IHJfaG9vayA9IChyOiBOaWIuU2hhcGUudCk6IGxpc3QoUGF0aC5jbWQpID0+IFtcbiAgSF8oe2R4OiArLiBhZGoocil9KSxcbiAgTF8oe2R4OiArLiBydW4ociksIGR5OiAwLjV9KSxcbiAgTF8oe2R4OiAtLiBydW4ociksIGR5OiAwLjV9KSxcbiAgSF8oe2R4OiAtLiBhZGoocil9KSxcbl07XG5cbmxldCBzaW1wbGVfc2hhcmRfcGF0aCA9ICgobCwgcik6IE5pYnMuc2hhcGVzLCBsZW5ndGg6IGludCk6IGxpc3QoUGF0aC5jbWQpID0+XG4gIExpc3QuZmxhdHRlbihcbiAgICBQYXRoLltcbiAgICAgIFttKH54PTAsIH55PTApLCBoKH54PWxlbmd0aCldLFxuICAgICAgcl9ob29rKHIpLFxuICAgICAgW2gofng9MCldLFxuICAgICAgbF9ob29rKGwpLFxuICAgIF0sXG4gICk7XG5cbmxldCBzaW1wbGVfc2hhcmQgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+c2hhcGVzLFxuICAgICAgfnBhdGhfY2xzLFxuICAgICAgfmJhc2VfY2xzLFxuICAgICAgfmF0dHI9W10sXG4gICAgICB+ZnVkZ2U9RGVjVXRpbC5memVybyxcbiAgICAgIG1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICApXG4gICAgOiB0ID0+XG4gIERlY1V0aWwuY29kZV9zdmdfc2l6ZWQoXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB+bWVhc3VyZW1lbnQsXG4gICAgfmJhc2VfY2xzLFxuICAgIH5wYXRoX2NscyxcbiAgICB+YXR0cixcbiAgICB+ZnVkZ2UsXG4gICAgc2ltcGxlX3NoYXJkX3BhdGgoc2hhcGVzLCBtZWFzdXJlbWVudC5sYXN0LmNvbCAtIG1lYXN1cmVtZW50Lm9yaWdpbi5jb2wpLFxuICApO1xuXG5sZXQgc2ltcGxlX3NoYXJkX3NlbGVjdGVkID1cbiAgICAofmZvbnRfbWV0cmljcywgfnNoYXBlcywgfm1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCwgfmJ1ZmZlcik6IHQgPT4ge1xuICBsZXQgcGF0aF9jbHMgPSBbXG4gICAgXCJ0aWxlLXBhdGhcIixcbiAgICBcInJhaXNlZFwiLFxuICAgIGJ1ZmZlciA/IFwic2VsZWN0ZWQtYnVmZmVyXCIgOiBcInNlbGVjdGVkXCIsXG4gIF07XG4gIGxldCBiYXNlX2NscyA9IFtcInRpbGUtc2VsZWN0ZWRcIl07XG4gIHNpbXBsZV9zaGFyZChcbiAgICAvKiBJbmNyZWFzZSBoZWlnaHQgc2xpZ2h0bHkgdG8gYXZvaWQgbGVhdmluZyBzcGFjZXMgYmV0d2VlbiBzZWxlY3RlZCBsaW5lcyAqL1xuICAgIH5mdWRnZT17aGVpZ2h0OiAwLjMsIHRvcDogMC4sIHdpZHRoOiAwLiwgbGVmdDogMC59LFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgfnNoYXBlcyxcbiAgICB+cGF0aF9jbHMsXG4gICAgfmJhc2VfY2xzLFxuICAgIG1lYXN1cmVtZW50LFxuICApO1xufTtcblxubGV0IHNpbXBsZV9zaGFyZF9pbmRpY2F0ZWQgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+aGFzX2NhcmV0LFxuICAgICAgfnNoYXBlcyxcbiAgICAgIH5zb3J0LFxuICAgICAgfm1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IHBhdGhfY2xzID1cbiAgICBbXCJ0aWxlLXBhdGhcIiwgXCJyYWlzZWRcIiwgU29ydC50b19zdHJpbmcoc29ydCldXG4gICAgQCAoaGFzX2NhcmV0ID8gW1wiaW5kaWNhdGVkLWNhcmV0XCJdIDogW1wiaW5kaWNhdGVkXCJdKTtcbiAgbGV0IGJhc2VfY2xzID0gW1widGlsZS1pbmRpY2F0ZWRcIl07XG4gIHNpbXBsZV9zaGFyZCh+Zm9udF9tZXRyaWNzLCB+c2hhcGVzLCB+cGF0aF9jbHMsIH5iYXNlX2NscywgbWVhc3VyZW1lbnQpO1xufTtcblxubGV0IHNpbXBsZV9zaGFyZHNfaW5kaWNhdGVkID1cbiAgICAofmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCwgfmNhcmV0OiAoSWQudCwgaW50KSwgKGlkLCBtb2xkLCBzaGFyZHMpKVxuICAgIDogbGlzdCh0KSA9PlxuICBMaXN0Lm1hcChcbiAgICAoKGluZGV4LCBtZWFzdXJlbWVudCkpID0+XG4gICAgICBzaW1wbGVfc2hhcmRfaW5kaWNhdGVkKFxuICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICB+aGFzX2NhcmV0PWNhcmV0ID09IChpZCwgaW5kZXgpLFxuICAgICAgICB+c2hhcGVzPU1vbGQubmliX3NoYXBlcyh+aW5kZXgsIG1vbGQpLFxuICAgICAgICB+c29ydD1tb2xkLm91dCxcbiAgICAgICAgfm1lYXN1cmVtZW50LFxuICAgICAgKSxcbiAgICBzaGFyZHMsXG4gICk7XG5cbmxldCBuZXh0X3N0ZXBfaW5kaWNhdGVkID1cbiAgICAoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5oYXNfY2FyZXQsXG4gICAgICB+c2hhcGVzLFxuICAgICAgfnNvcnQsXG4gICAgICB+bWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIClcbiAgICA6IHQgPT4ge1xuICBsZXQgcGF0aF9jbHMgPVxuICAgIFtcInRpbGUtcGF0aFwiLCBcInJhaXNlZFwiLCBTb3J0LnRvX3N0cmluZyhzb3J0KV1cbiAgICBAIChoYXNfY2FyZXQgPyBbXCJpbmRpY2F0ZWQtY2FyZXRcIl0gOiBbXCJpbmRpY2F0ZWRcIl0pO1xuICBsZXQgYmFzZV9jbHMgPSBbXCJ0aWxlLW5leHQtc3RlcFwiXTtcbiAgc2ltcGxlX3NoYXJkKFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgfnNoYXBlcyxcbiAgICB+cGF0aF9jbHMsXG4gICAgfmJhc2VfY2xzLFxuICAgIH5hdHRyPVtcbiAgICAgIEF0dHIub25fbW91c2Vkb3duKF8gPT4ge1xuICAgICAgICBwcmludF9lbmRsaW5lKFwiQ0xJQ0shXCIpO1xuICAgICAgICBpbmplY3QoKTtcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgbWVhc3VyZW1lbnQsXG4gICk7XG59O1xuXG5sZXQgbmV4dF9zdGVwX3NoYXJkc19pbmRpY2F0ZWQgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfmNhcmV0OiAoSWQudCwgaW50KSxcbiAgICAgIChpZCwgbW9sZCwgc2hhcmRzKSxcbiAgICApXG4gICAgOiBsaXN0KHQpID0+XG4gIExpc3QubWFwKFxuICAgICgoaW5kZXgsIG1lYXN1cmVtZW50KSkgPT5cbiAgICAgIG5leHRfc3RlcF9pbmRpY2F0ZWQoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgIH5oYXNfY2FyZXQ9Y2FyZXQgPT0gKGlkLCBpbmRleCksXG4gICAgICAgIH5zaGFwZXM9TW9sZC5uaWJfc2hhcGVzKH5pbmRleCwgbW9sZCksXG4gICAgICAgIH5zb3J0PW1vbGQub3V0LFxuICAgICAgICB+bWVhc3VyZW1lbnQsXG4gICAgICApLFxuICAgIHNoYXJkcyxcbiAgKTtcblxubGV0IHRha2VuX3N0ZXBfaW5kaWNhdGVkID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfmhhc19jYXJldCxcbiAgICAgIH5zaGFwZXMsXG4gICAgICB+c29ydCxcbiAgICAgIH5tZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgKVxuICAgIDogdCA9PiB7XG4gIGxldCBwYXRoX2NscyA9XG4gICAgW1widGlsZS1wYXRoXCIsIFwicmFpc2VkXCIsIFNvcnQudG9fc3RyaW5nKHNvcnQpXVxuICAgIEAgKGhhc19jYXJldCA/IFtcImluZGljYXRlZC1jYXJldFwiXSA6IFtcImluZGljYXRlZFwiXSk7XG4gIGxldCBiYXNlX2NscyA9IFtcInRpbGUtdGFrZW4tc3RlcFwiXTtcbiAgc2ltcGxlX3NoYXJkKH5mb250X21ldHJpY3MsIH5zaGFwZXMsIH5wYXRoX2NscywgfmJhc2VfY2xzLCBtZWFzdXJlbWVudCk7XG59O1xuXG5sZXQgdGFrZW5fc3RlcF9zaGFyZHNfaW5kaWNhdGVkID1cbiAgICAofmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCwgfmNhcmV0OiAoSWQudCwgaW50KSwgKGlkLCBtb2xkLCBzaGFyZHMpKVxuICAgIDogbGlzdCh0KSA9PlxuICBMaXN0Lm1hcChcbiAgICAoKGluZGV4LCBtZWFzdXJlbWVudCkpID0+XG4gICAgICB0YWtlbl9zdGVwX2luZGljYXRlZChcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgfmhhc19jYXJldD1jYXJldCA9PSAoaWQsIGluZGV4KSxcbiAgICAgICAgfnNoYXBlcz1Nb2xkLm5pYl9zaGFwZXMofmluZGV4LCBtb2xkKSxcbiAgICAgICAgfnNvcnQ9bW9sZC5vdXQsXG4gICAgICAgIH5tZWFzdXJlbWVudCxcbiAgICAgICksXG4gICAgc2hhcmRzLFxuICApO1xuXG5sZXQgc2hhZG93ZnVkZ2UgPSBQYXRoLmNtZGZ1ZGdlKH55PURlY1V0aWwuc2hhZG93X2Fkaik7XG5cbmxldCBzaGFyZHNfb2ZfdGlsZXMgPSB0aWxlcyA9PlxuICB0aWxlc1xuICB8PiBMaXN0LmNvbmNhdF9tYXAoKChfLCBfLCBzaGFyZHMpKSA9PiBzaGFyZHMpXG4gIHw+IExpc3Quc29ydChcbiAgICAgICAoKF8sIG0xOiBNZWFzdXJlZC5tZWFzdXJlbWVudCksIChfLCBtMjogTWVhc3VyZWQubWVhc3VyZW1lbnQpKSA9PlxuICAgICAgIE1lYXN1cmVkLlBvaW50LmNvbXBhcmUobTEub3JpZ2luLCBtMi5vcmlnaW4pXG4gICAgICk7XG5cbmxldCBiaV9saW5lcyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5yb3dzOiBNZWFzdXJlZC5Sb3dzLnQsXG4gICAgICB0aWxlczogbGlzdCgoSWQudCwgTW9sZC50LCBNZWFzdXJlZC5TaGFyZHMudCkpLFxuICAgIClcbiAgICA6IGxpc3QodCkgPT4ge1xuICBsZXQgc2hhcmRzID0gc2hhcmRzX29mX3RpbGVzKHRpbGVzKTtcbiAgbGV0IHNoYXJkX3Jvd3MgPSBNZWFzdXJlZC5TaGFyZHMuc3BsaXRfYnlfcm93KHNoYXJkcyk7XG4gIGxldCBpbnRyYV9saW5lcyA9XG4gICAgc2hhcmRfcm93c1xuICAgIHw+IExpc3QubWFwKExpc3RVdGlsLm5laWdoYm9ycylcbiAgICB8PiBMaXN0LmNvbmNhdF9tYXAoXG4gICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgKCgoXywgbDogTWVhc3VyZWQubWVhc3VyZW1lbnQpLCAoXywgcjogTWVhc3VyZWQubWVhc3VyZW1lbnQpKSkgPT5cbiAgICAgICAgICAgKFxuICAgICAgICAgICAgIGwub3JpZ2luLFxuICAgICAgICAgICAgIFN2Z1V0aWwuUGF0aC5bXG4gICAgICAgICAgICAgICBzaGFkb3dmdWRnZShtKH54PTAsIH55PTEpKSxcbiAgICAgICAgICAgICAgIGgofng9ci5sYXN0LmNvbCAtIGwub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgXSxcbiAgICAgICAgICAgKVxuICAgICAgICAgKSxcbiAgICAgICApO1xuICBsZXQgaW50ZXJfbGluZXMgPVxuICAgIExpc3RVdGlsLm5laWdoYm9ycyhzaGFyZF9yb3dzKVxuICAgIHw+IExpc3QubWFwKFxuICAgICAgICAgKChyb3dfc2hhcmRzOiBNZWFzdXJlZC5TaGFyZHMudCwgcm93X3NoYXJkcyc6IE1lYXN1cmVkLlNoYXJkcy50KSkgPT4ge1xuICAgICAgICAgYXNzZXJ0KHJvd19zaGFyZHMgIT0gW10pO1xuICAgICAgICAgYXNzZXJ0KHJvd19zaGFyZHMnICE9IFtdKTtcbiAgICAgICAgIGxldCBvcmlnaW4gPSBzbmQoTGlzdC5oZChyb3dfc2hhcmRzKSkub3JpZ2luO1xuICAgICAgICAgbGV0IG9yaWdpbicgPSBzbmQoTGlzdC5oZChyb3dfc2hhcmRzJykpLm9yaWdpbjtcbiAgICAgICAgIGxldCBpbmRlbnQgPSBNZWFzdXJlZC5Sb3dzLmZpbmQob3JpZ2luLnJvdywgcm93cykuaW5kZW50O1xuICAgICAgICAgbGV0IHZfZGVsdGEgPSBvcmlnaW4nLmNvbCA9PSBpbmRlbnQgPyAoLTEpIDogMDtcbiAgICAgICAgIChcbiAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICBTdmdVdGlsLlBhdGguW1xuICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKG0ofng9MCwgfnk9MSkpLFxuICAgICAgICAgICAgIGhfKH5keD1pbmRlbnQgLSBvcmlnaW4uY29sKSxcbiAgICAgICAgICAgICBzaGFkb3dmdWRnZSh2Xyh+ZHk9b3JpZ2luJy5yb3cgLSBvcmlnaW4ucm93ICsgdl9kZWx0YSkpLFxuICAgICAgICAgICAgIGhfKH5keD1vcmlnaW4nLmNvbCAtIGluZGVudCksXG4gICAgICAgICAgIF0sXG4gICAgICAgICApO1xuICAgICAgIH0pO1xuICAvLyBUT0RPKGQpIGNsZWFuIHVwIFByb2ZpbGUgZGF0YXR5cGVcbiAgbGV0IHMgPVxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IFtdID0+IGZhaWx3aXRoKFwiZW1wdHkgdGlsZVwiKVxuICAgIHwgWyhfLCBtb2xkLCBfKSwgLi4uX10gPT4gbW9sZC5vdXRcbiAgICB9O1xuICBsZXQgY2xzcyA9IFtcImNoaWxkLWxpbmVcIiwgU29ydC50b19zdHJpbmcocyldO1xuICBpbnRyYV9saW5lc1xuICBAIGludGVyX2xpbmVzXG4gIHw+IExpc3QubWFwKCgob3JpZ2luLCBwYXRoKSkgPT5cbiAgICAgICBEZWNVdGlsLmNvZGVfc3ZnKH5mb250X21ldHJpY3MsIH5vcmlnaW4sIH5wYXRoX2Nscz1jbHNzLCBwYXRoKVxuICAgICApO1xufTtcblxubGV0IHVuaV9saW5lcyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5yb3dzOiBNZWFzdXJlZC5Sb3dzLnQsXG4gICAgICAobDogTWVhc3VyZWQuUG9pbnQudCwgcjogTWVhc3VyZWQuUG9pbnQudCksXG4gICAgICB0aWxlczogbGlzdCgoSWQudCwgTW9sZC50LCBNZWFzdXJlZC5TaGFyZHMudCkpLFxuICAgICkgPT4ge1xuICBvcGVuIFN2Z1V0aWwuUGF0aDtcbiAgbGV0IHNoYXJkcyA9IHNoYXJkc19vZl90aWxlcyh0aWxlcyk7XG4gIGxldCBsX2xpbmUgPSB7XG4gICAgbGV0IChfLCBtX2ZpcnN0KSA9IExpc3QuaGQoc2hhcmRzKTtcbiAgICBsZXQgKF8sIG1fbGFzdF9vZl9maXJzdCkgPSB7XG4gICAgICBsZXQgc2hhcmRfcm93cyA9IE1lYXN1cmVkLlNoYXJkcy5zcGxpdF9ieV9yb3coc2hhcmRzKTtcbiAgICAgIGFzc2VydChzaGFyZF9yb3dzICE9IFtdKTtcbiAgICAgIGxldCByb3cgPSBMaXN0LmhkKHNoYXJkX3Jvd3MpO1xuICAgICAgYXNzZXJ0KHJvdyAhPSBbXSk7XG4gICAgICBMaXN0VXRpbC5sYXN0KHJvdyk7XG4gICAgfTtcbiAgICBpZiAoTWVhc3VyZWQuUG9pbnQuY29tcGFyZShsLCBtX2ZpcnN0Lm9yaWdpbikgPCAwKSB7XG4gICAgICBsZXQgbWF4X2NvbCA9XG4gICAgICAgIE1lYXN1cmVkLlJvd3MubWF4X2NvbChcbiAgICAgICAgICBMaXN0VXRpbC5yYW5nZSh+bG89bC5yb3csIG1fZmlyc3Qub3JpZ2luLnJvdyksXG4gICAgICAgICAgcm93cyxcbiAgICAgICAgKVxuICAgICAgICB8PiBtYXgobV9maXJzdC5vcmlnaW4uY29sKTtcbiAgICAgIGxldCBpbmRlbnQgPSBNZWFzdXJlZC5Sb3dzLmZpbmQobV9maXJzdC5vcmlnaW4ucm93LCByb3dzKS5pbmRlbnQ7XG4gICAgICBbXG4gICAgICAgIGwucm93ID09IG1fZmlyc3Qub3JpZ2luLnJvd1xuICAgICAgICAgID8gKFxuICAgICAgICAgICAgbV9maXJzdC5vcmlnaW4sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKG0ofng9MCwgfnk9MSkpLFxuICAgICAgICAgICAgICBoKH54PWwuY29sIC0gbV9maXJzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICAgTF8oe1xuICAgICAgICAgICAgICAgIGR4OiAtLiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCxcbiAgICAgICAgICAgICAgICBkeTogLS4gRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0IC8uIDIuIC8vaGFja1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy9MXyh7XG4gICAgICAgICAgICAgIC8vICBkeDogRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsXG4gICAgICAgICAgICAgIC8vICBkeTogLS4gRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0LFxuICAgICAgICAgICAgICAvL30pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICBtX2ZpcnN0Lm9yaWdpbixcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgbV9maXJzdC5vcmlnaW4uY29sID09IGluZGVudFxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgbSh+eD1tX2xhc3Rfb2ZfZmlyc3QubGFzdC5jb2wgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wsIH55PTApLFxuICAgICAgICAgICAgICAgICAgLy8gVE9ETyhkKSBuZWVkIHRvIHRha2UgbWF4IG9mIGFsbCByb3dzLCBub3QganVzdCB0b3BcbiAgICAgICAgICAgICAgICAgIGgofng9bWF4X2NvbCAtIG1fZmlyc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgICAgICBzaGFkb3dmdWRnZSh2KH55PWwucm93IC0gbV9sYXN0X29mX2ZpcnN0Lm9yaWdpbi5yb3cpKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICBzaGFkb3dmdWRnZShtKH54PTAsIH55PTEpKSxcbiAgICAgICAgICAgICAgICAgIGgofng9aW5kZW50IC0gbV9maXJzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKHYofnk9bC5yb3cgKyAxIC0gbV9maXJzdC5vcmlnaW4ucm93KSksXG4gICAgICAgICAgICAgICAgICBoKH54PW1heF9jb2wgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgICAgICAgc2hhZG93ZnVkZ2Uodih+eT1sLnJvdyAtIG1fZmlyc3Qub3JpZ2luLnJvdykpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIEAgW1xuICAgICAgICAgICAgICBoKH54PWwuY29sIC0gbV9maXJzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICAgTF8oe1xuICAgICAgICAgICAgICAgIGR4OiAtLiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCxcbiAgICAgICAgICAgICAgICBkeTogRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0IC8uIDIuIC8vaGFja1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy9MXyh7ZHg6IERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLCBkeTogRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0fSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBbXTtcbiAgICB9O1xuICB9O1xuICBsZXQgcl9saW5lID0ge1xuICAgIGxldCAoXywgbV9sYXN0KSA9IExpc3RVdGlsLmxhc3Qoc2hhcmRzKTtcbiAgICBsZXQgaG9vayA9IFtcbiAgICAgIExfKHtcbiAgICAgICAgZHg6IERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLFxuICAgICAgICBkeTogLS4gRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0IC8uIDIuIC8vaGFja1xuICAgICAgfSksXG4gICAgICAvL0xfKHtkeDogLS4gRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsIGR5OiAtLiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHR9KSxcbiAgICBdO1xuICAgIGlmIChyLnJvdyA9PSBtX2xhc3QubGFzdC5yb3cgJiYgci5jb2wgPiBtX2xhc3QubGFzdC5jb2wpIHtcbiAgICAgIFtcbiAgICAgICAgKFxuICAgICAgICAgIG1fbGFzdC5vcmlnaW4sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgc2hhZG93ZnVkZ2UoXG4gICAgICAgICAgICAgIG0oXG4gICAgICAgICAgICAgICAgfng9bV9sYXN0Lmxhc3QuY29sIC0gbV9sYXN0Lm9yaWdpbi5jb2wsXG4gICAgICAgICAgICAgICAgfnk9bV9sYXN0Lmxhc3Qucm93IC0gbV9sYXN0Lm9yaWdpbi5yb3cgKyAxLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGgofng9ci5jb2wgLSBtX2xhc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAuLi5ob29rLFxuICAgICAgICAgIF0sXG4gICAgICAgICksXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoci5yb3cgPiBtX2xhc3QubGFzdC5yb3cpIHtcbiAgICAgIGxldCBtaW5fY29sID1cbiAgICAgICAgTWVhc3VyZWQuUm93cy5taW5fY29sKFxuICAgICAgICAgIExpc3RVdGlsLnJhbmdlKH5sbz1tX2xhc3QubGFzdC5yb3csIHIucm93ICsgMSksXG4gICAgICAgICAgcm93cyxcbiAgICAgICAgKVxuICAgICAgICB8PiBtaW4obV9sYXN0Lmxhc3QuY29sKTtcbiAgICAgIC8vIGxldCByX2luZGVudCA9IE1lYXN1cmVkLlJvd3MuZmluZChyLnJvdywgcm93cykuaW5kZW50O1xuICAgICAgbGV0IChfLCBtX2ZsYXN0KSA9IHtcbiAgICAgICAgbGV0IHNoYXJkX3Jvd3MgPSBNZWFzdXJlZC5TaGFyZHMuc3BsaXRfYnlfcm93KHNoYXJkcyk7XG4gICAgICAgIGFzc2VydChzaGFyZF9yb3dzICE9IFtdKTtcbiAgICAgICAgbGV0IHJvdyA9IExpc3RVdGlsLmxhc3Qoc2hhcmRfcm93cyk7XG4gICAgICAgIGFzc2VydChyb3cgIT0gW10pO1xuICAgICAgICBMaXN0LmhkKHJvdyk7XG4gICAgICB9O1xuICAgICAgLy8gbGV0IGZsYXN0X2luZGVudCA9IE1lYXN1cmVkLlJvd3MuZmluZChtX2ZsYXN0Lm9yaWdpbi5yb3csIHJvd3MpLmluZGVudDtcbiAgICAgIFtcbiAgICAgICAgKFxuICAgICAgICAgIG1fZmxhc3Qub3JpZ2luLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKFxuICAgICAgICAgICAgICBtKH54PTAsIH55PW1fZmxhc3QubGFzdC5yb3cgLSBtX2ZsYXN0Lm9yaWdpbi5yb3cgKyAxKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBoKH54PW1pbl9jb2wgLSBtX2ZsYXN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgc2hhZG93ZnVkZ2Uodih+eT1yLnJvdyAtIG1fZmxhc3Qub3JpZ2luLnJvdyArIDEpKSxcbiAgICAgICAgICAgIGgofng9ci5jb2wgLSBtX2ZsYXN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgLi4uaG9vayxcbiAgICAgICAgICBdLFxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgW107XG4gICAgfTtcbiAgfTtcbiAgLy8gVE9ETyhkKSBjbGVhbiB1cCBQcm9maWxlIGRhdGF0eXBlXG4gIGxldCBzID1cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCBbXSA9PiBmYWlsd2l0aChcImVtcHR5IHRpbGVcIilcbiAgICB8IFsoXywgbW9sZCwgXyksIC4uLl9dID0+IG1vbGQub3V0XG4gICAgfTtcbiAgbGV0IGNsc3MgPSBbXCJjaGlsZC1saW5lXCIsIFNvcnQudG9fc3RyaW5nKHMpXTtcbiAgbF9saW5lXG4gIEAgcl9saW5lXG4gIHw+IExpc3QubWFwKCgob3JpZ2luLCBwYXRoKSkgPT5cbiAgICAgICBEZWNVdGlsLmNvZGVfc3ZnKH5mb250X21ldHJpY3MsIH5vcmlnaW4sIH5wYXRoX2Nscz1jbHNzLCBwYXRoKVxuICAgICApO1xufTtcblxubGV0IGluZGljYXRlZCA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5yb3dzOiBNZWFzdXJlZC5Sb3dzLnQsXG4gICAgICB+Y2FyZXQsXG4gICAgICB+dGlsZXMsXG4gICAgICByYW5nZSxcbiAgICApXG4gICAgOiBsaXN0KE5vZGUudCkgPT4ge1xuICBMaXN0LmNvbmNhdF9tYXAoc2ltcGxlX3NoYXJkc19pbmRpY2F0ZWQofmZvbnRfbWV0cmljcywgfmNhcmV0KSwgdGlsZXMpXG4gIEAgdW5pX2xpbmVzKH5mb250X21ldHJpY3MsIH5yb3dzLCByYW5nZSwgdGlsZXMpXG4gIEAgYmlfbGluZXMofmZvbnRfbWV0cmljcywgfnJvd3MsIHRpbGVzKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcblxubW9kdWxlIERlY28gPSAoTToge1xuICAgICAgICAgICAgICAgICBsZXQgZ2xvYmFsczogR2xvYmFscy50O1xuICAgICAgICAgICAgICAgICBsZXQgZWRpdG9yOiBFZGl0b3IudDtcbiAgICAgICAgICAgICAgIH0pID0+IHtcbiAgbGV0IGZvbnRfbWV0cmljcyA9IE0uZ2xvYmFscy5mb250X21ldHJpY3M7XG4gIGxldCBtYXAgPSBNLmVkaXRvci5zdGF0ZS5tZXRhLm1lYXN1cmVkO1xuICBsZXQgc2hvd19iYWNrcGFja190YXJnZXRzID0gTS5nbG9iYWxzLnNob3dfYmFja3BhY2tfdGFyZ2V0cztcbiAgbGV0IHRlcm1zID0gTS5lZGl0b3Iuc3RhdGUubWV0YS50ZXJtcztcbiAgbGV0IHRlcm1fcmFuZ2VzID0gTS5lZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcztcbiAgbGV0IHRpbGVzID0gTS5lZGl0b3Iuc3RhdGUubWV0YS50aWxlcztcblxuICBsZXQgdGlsZSA9IGlkID0+IElkLk1hcC5maW5kKGlkLCB0aWxlcyk7XG5cbiAgbGV0IGNhcmV0ID0gKHo6IFppcHBlci50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICBsZXQgb3JpZ2luID0gWmlwcGVyLmNhcmV0X3BvaW50KG1hcCwgeik7XG4gICAgbGV0IHNoYXBlID0gWmlwcGVyLmNhcmV0X2RpcmVjdGlvbih6KTtcbiAgICBsZXQgc2lkZSA9XG4gICAgICBzd2l0Y2ggKEluZGljYXRlZC5waWVjZSh6KSkge1xuICAgICAgfCBTb21lKChfLCBzaWRlLCBfKSkgPT4gc2lkZVxuICAgICAgfCBfID0+IFJpZ2h0XG4gICAgICB9O1xuICAgIFtDYXJldERlYy52aWV3KH5mb250X21ldHJpY3MsIH5wcm9maWxlPXtzaWRlLCBvcmlnaW4sIHNoYXBlfSldO1xuICB9O1xuXG4gIHR5cGUgc2hhcmRfZGF0YSA9IChNZWFzdXJlZC5tZWFzdXJlbWVudCwgTmlicy5zaGFwZXMpO1xuXG4gIGxldCBzZWxfc2hhcmRfc3ZnID1cbiAgICAgICh+aW5kZXg9PywgfnN0YXJ0X3NoYXBlLCBtZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsIHApXG4gICAgICA6IChNZWFzdXJlZC5tZWFzdXJlbWVudCwgTmlicy5zaGFwZXMpID0+IChcbiAgICBtZWFzdXJlbWVudCxcbiAgICBNb2xkLm5pYl9zaGFwZXMofmluZGV4PywgUGllY2UubW9sZF9vZih+c2hhcGU9c3RhcnRfc2hhcGUsIHApKSxcbiAgKTtcblxuICBsZXQgcmVjIHNlbF9vZl9waWVjZSA9XG4gICAgICAgICAgKHN0YXJ0X3NoYXBlOiBOaWIuU2hhcGUudCwgcDogUGllY2UudClcbiAgICAgICAgICA6IChOaWIuU2hhcGUudCwgbGlzdChvcHRpb24oc2hhcmRfZGF0YSkpKSA9PiB7XG4gICAgbGV0IHNoYXJkX2RhdGEgPVxuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IFRpbGUodCkgPT4gc2VsX29mX3RpbGUofnN0YXJ0X3NoYXBlLCB0KVxuICAgICAgfCBHcm91dChnKSA9PiBbXG4gICAgICAgICAgU29tZShzZWxfc2hhcmRfc3ZnKH5zdGFydF9zaGFwZSwgTWVhc3VyZWQuZmluZF9nKGcsIG1hcCksIHApKSxcbiAgICAgICAgXVxuICAgICAgfCBTZWNvbmRhcnkodykgd2hlbiBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHcpID0+IFtOb25lXVxuICAgICAgfCBTZWNvbmRhcnkodykgPT4gW1xuICAgICAgICAgIFNvbWUoc2VsX3NoYXJkX3N2Zyh+c3RhcnRfc2hhcGUsIE1lYXN1cmVkLmZpbmRfdyh3LCBtYXApLCBwKSksXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgbGV0IHN0YXJ0X3NoYXBlID1cbiAgICAgIHN3aXRjaCAoUGllY2UubmlicyhwKSkge1xuICAgICAgfCBOb25lID0+IHN0YXJ0X3NoYXBlXG4gICAgICB8IFNvbWUoKF8sIHtzaGFwZSwgX30pKSA9PiBzaGFwZVxuICAgICAgfTtcbiAgICAoc3RhcnRfc2hhcGUsIHNoYXJkX2RhdGEpO1xuICB9XG4gIGFuZCBzZWxfb2ZfdGlsZSA9ICh+c3RhcnRfc2hhcGUsIHQ6IFRpbGUudCk6IGxpc3Qob3B0aW9uKHNoYXJkX2RhdGEpKSA9PiB7XG4gICAgbGV0IHRpbGVfc2hhcmRzID1cbiAgICAgIE1lYXN1cmVkLmZpbmRfc2hhcmRzKHQsIG1hcClcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoaSwgXykpID0+IExpc3QubWVtKGksIHQuc2hhcmRzKSlcbiAgICAgIHw+IExpc3QubWFwKCgoaW5kZXgsIG1lYXN1cmVtZW50KSkgPT5cbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIFNvbWUoc2VsX3NoYXJkX3N2Zyh+c3RhcnRfc2hhcGUsIH5pbmRleCwgbWVhc3VyZW1lbnQsIFRpbGUodCkpKSxcbiAgICAgICAgICAgXVxuICAgICAgICAgKTtcbiAgICBsZXQgc2hhcGVfYXQgPSBpbmRleCA9PiBzbmQoTW9sZC5uaWJzKH5pbmRleCwgdC5tb2xkKSkuc2hhcGU7XG4gICAgbGV0IGNoaWxkcmVuX3NoYXJkcyA9XG4gICAgICB0LmNoaWxkcmVuIHw+IExpc3QubWFwaShpbmRleCA9PiBzZWxfb2Zfc2VnbWVudChzaGFwZV9hdChpbmRleCkpKTtcbiAgICBMaXN0VXRpbC5pbnRlcmxlYXZlKHRpbGVfc2hhcmRzLCBjaGlsZHJlbl9zaGFyZHMpIHw+IExpc3QuZmxhdHRlbjtcbiAgfVxuICBhbmQgc2VsX29mX3NlZ21lbnQgPVxuICAgICAgKHN0YXJ0X3NoYXBlOiBOaWIuU2hhcGUudCwgc2VnOiBTZWdtZW50LnQpOiBsaXN0KG9wdGlvbihzaGFyZF9kYXRhKSkgPT4ge1xuICAgIHNlZ1xuICAgIHw+IExpc3RVdGlsLmZvbGRfbGVmdF9tYXAoc2VsX29mX3BpZWNlLCBzdGFydF9zaGFwZSlcbiAgICB8PiBzbmRcbiAgICB8PiBMaXN0LmZsYXR0ZW47XG4gIH1cbiAgYW5kIHNlbGVjdGVkX3BpZWNlcyA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PlxuICAgIC8qIFdlIGRyYXcgYSBzaW5nbGUgZGVjbyBwZXIgcm93IGJ5IGRpdmlkaW5nIHBhcnRpb25pbmluZyB0aGUgc2hhcmRzXG4gICAgICogaW50byBsaW5lYnJlYWstc2VwZXJhdGVkIHNlZ21lbnRzLCB0aGVuIGNvbWJpbmluZyB0aGUgbWVhc3VyZW1lbnRzXG4gICAgICogYW5kIHNoYXBlcyBvZiB0aGUgZmlyc3QgYW5kIGxhc3Qgc2hhcmQgb2YgZWFjaCBzZWdtZW50LiBJZGVhbGx5IHdlXG4gICAgICogY291bGQganVzdCBnZXQgdGhpcyBpbmZvIGZyb20gdGhlIHJvdyBtZWFzdXJlbWVudHMsIGJ1dCB3ZSBoYXZlIG5vXG4gICAgICogY3VycmVudCB3YXkgb2YgZmlndXJpbmcgb3V0IHNoYXBlcyBmb3Igd2hpdGVzcGFjZSB3aXRob3V0IHRyYXZlcnNpbmcgKi9cbiAgICBzZWxfb2Zfc2VnbWVudChcbiAgICAgIGZzdChTaWJsaW5ncy5zaGFwZXMoei5yZWxhdGl2ZXMuc2libGluZ3MpKSxcbiAgICAgIHouc2VsZWN0aW9uLmNvbnRlbnQsXG4gICAgKVxuICAgIHw+IExpc3RVdGlsLnNwbGl0X2F0X25vbmVzXG4gICAgfD4gTGlzdFV0aWwuZmlyc3RfYW5kX2xhc3RcbiAgICB8PiBMaXN0Lm1hcCgoKChtMSwgKGwxLCBfKSk6IHNoYXJkX2RhdGEsIChtMiwgKF8sIHIyKSk6IHNoYXJkX2RhdGEpKSA9PlxuICAgICAgICAgKCh7b3JpZ2luOiBtMS5vcmlnaW4sIGxhc3Q6IG0yLmxhc3R9LCAobDEsIHIyKSk6IHNoYXJkX2RhdGEpXG4gICAgICAgKVxuICAgIHw+IExpc3QubWFwKCgobWVhc3VyZW1lbnQsIHNoYXBlcykpID0+XG4gICAgICAgICBQaWVjZURlYy5zaW1wbGVfc2hhcmRfc2VsZWN0ZWQoXG4gICAgICAgICAgIH5idWZmZXI9U2VsZWN0aW9uLmlzX2J1ZmZlcih6LnNlbGVjdGlvbiksXG4gICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgIH5tZWFzdXJlbWVudCxcbiAgICAgICAgICAgfnNoYXBlcyxcbiAgICAgICAgIClcbiAgICAgICApO1xuXG4gIGxldCBpbmRpY2F0ZWRfcGllY2VfZGVjbyA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgc3dpdGNoIChJbmRpY2F0ZWQucGllY2UoeikpIHtcbiAgICB8IF8gd2hlbiB6LnNlbGVjdGlvbi5jb250ZW50ICE9IFtdID0+IFtdXG4gICAgfCBOb25lID0+IFtdXG4gICAgfCBTb21lKChHcm91dChfKSwgXywgXykpID0+IFtdXG4gICAgfCBTb21lKChwLCBzaWRlLCBfKSkgPT5cbiAgICAgIC8vIHJvb3RfcHJvZmlsZSBjYWxjdWxhdGlvbiBhc3N1bWVzIHAgaXMgdGlsZVxuICAgICAgLy8gVE9ETyBlbmNvZGUgaW4gdHlwZXNcbiAgICAgIGxldCBfbmliX3NoYXBlID1cbiAgICAgICAgc3dpdGNoIChaaXBwZXIuY2FyZXRfZGlyZWN0aW9uKHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiBOaWIuU2hhcGUuQ29udmV4XG4gICAgICAgIHwgU29tZShuaWIpID0+IE5pYi5TaGFwZS5yZWxhdGl2ZShuaWIsIHNpZGUpXG4gICAgICAgIH07XG4gICAgICBsZXQgcmFuZ2U6IG9wdGlvbigoTWVhc3VyZWQuUG9pbnQudCwgTWVhc3VyZWQuUG9pbnQudCkpID0ge1xuICAgICAgICAvLyBpZiAoUGllY2UuaGFzX2VuZHMocCkpIHtcbiAgICAgICAgbGV0IGlkID0gSWQuTWFwLmZpbmQoUGllY2UuaWQocCksIHRlcm1zKSB8PiBBbnkucmVwX2lkO1xuICAgICAgICBzd2l0Y2ggKFRlcm1SYW5nZXMuZmluZF9vcHQoaWQsIHRlcm1fcmFuZ2VzKSkge1xuICAgICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgICB8IFNvbWUoKHBfbCwgcF9yKSkgPT5cbiAgICAgICAgICBsZXQgbCA9IE1lYXN1cmVkLmZpbmRfcChwX2wsIG1hcCkub3JpZ2luO1xuICAgICAgICAgIGxldCByID0gTWVhc3VyZWQuZmluZF9wKHBfciwgbWFwKS5sYXN0O1xuICAgICAgICAgIFNvbWUoKGwsIHIpKTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBsZXQgaW5kZXggPVxuICAgICAgICBzd2l0Y2ggKEluZGljYXRlZC5zaGFyZF9pbmRleCh6KSkge1xuICAgICAgICB8IE5vbmUgPT4gKC0xKVxuICAgICAgICB8IFNvbWUoaSkgPT4gaVxuICAgICAgICB9O1xuICAgICAgc3dpdGNoIChyYW5nZSkge1xuICAgICAgfCBOb25lID0+IFtdXG4gICAgICB8IFNvbWUocmFuZ2UpID0+XG4gICAgICAgIGxldCB0aWxlcyA9XG4gICAgICAgICAgSWQuTWFwLmZpbmQoUGllY2UuaWQocCksIHRlcm1zKVxuICAgICAgICAgIHw+IEFueS5pZHNcbiAgICAgICAgICAvKiBOT1RFKGFuZHJldyk6IGRhcmtfaWRzIHdlcmUgb3JpZ2luYWxseSBmaWx0ZXJlZCBoZXJlLlxuICAgICAgICAgICAqIExlYXZpbmcgdGhpcyBjb21tZW50IGluIHBsYWNlIGluIGNhc2UgaXNzdWVzIGluIHRoZVxuICAgICAgICAgICAqIGZ1dHVyZSBhcmUgdHJhY2VkIGJhY2sgdG8gaGVyZS5cbiAgICAgICAgICAgKiB8PiBMaXN0LmZpbHRlcihpZCA9PiBpZCA+PSAwKSovXG4gICAgICAgICAgfD4gTGlzdC5tYXAoaWQgPT4ge1xuICAgICAgICAgICAgICAgbGV0IHQgPSB0aWxlKGlkKTtcbiAgICAgICAgICAgICAgIChpZCwgdC5tb2xkLCBNZWFzdXJlZC5maW5kX3NoYXJkcyh0LCBtYXApKTtcbiAgICAgICAgICAgICB9KTtcbiAgICAgICAgUGllY2VEZWMuaW5kaWNhdGVkKFxuICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgfnJvd3M9bWFwLnJvd3MsXG4gICAgICAgICAgfmNhcmV0PShQaWVjZS5pZChwKSwgaW5kZXgpLFxuICAgICAgICAgIH50aWxlcyxcbiAgICAgICAgICByYW5nZSxcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIHRhcmdldHMgPSAofmNvbnRhaW5lcl9zaGFyZHM9PywgYnA6IEJhY2twYWNrLnQsIHNlZzogU2VnbWVudC50KSA9PiB7XG4gICAgbGV0IHdpdGhfY29udGFpbmVyX3NoYXJkcyA9ICgocHJlLCBzdWYpIGFzIHNpYnMpID0+XG4gICAgICBzd2l0Y2ggKGNvbnRhaW5lcl9zaGFyZHMpIHtcbiAgICAgIHwgTm9uZSA9PiBzaWJzXG4gICAgICB8IFNvbWUoKGwsIHIpKSA9PiAoW2wsIC4uLnByZV0sIHN1ZiBAIFtyXSlcbiAgICAgIH07XG4gICAgbGV0IHJvb3RfdGFyZ2V0cyA9XG4gICAgICBMaXN0VXRpbC5zcGxpdHMoc2VnKVxuICAgICAgfD4gTGlzdC5jb25jYXRfbWFwKCgobCwgcikpID0+IHtcbiAgICAgICAgICAgbGV0IHNpYnMgPVxuICAgICAgICAgICAgIFNlZ21lbnQuKGluY29tcGxldGVfdGlsZXMobCksIGluY29tcGxldGVfdGlsZXMocikpXG4gICAgICAgICAgICAgfD4gd2l0aF9jb250YWluZXJfc2hhcmRzO1xuICAgICAgICAgICBzd2l0Y2ggKEJhY2twYWNrLnBvcChzaWJzLCBicCkpIHtcbiAgICAgICAgICAgfCBOb25lXG4gICAgICAgICAgIHwgU29tZSgodHJ1ZSwgXywgXykpID0+IFtdXG4gICAgICAgICAgIHwgU29tZShfKSA9PlxuICAgICAgICAgICAgIGxldCBtZWFzdXJlbWVudCA9XG4gICAgICAgICAgICAgICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycygobCwgcikpKSB7XG4gICAgICAgICAgICAgICB8IChOb25lLCBOb25lKSA9PiBmYWlsd2l0aChcImltcG9zc2libGVcIilcbiAgICAgICAgICAgICAgIHwgKF8sIFNvbWUocCkpID0+XG4gICAgICAgICAgICAgICAgIGxldCBtID0gTWVhc3VyZWQuZmluZF9wKHAsIG1hcCk7XG4gICAgICAgICAgICAgICAgIE1lYXN1cmVkLntvcmlnaW46IG0ub3JpZ2luLCBsYXN0OiBtLm9yaWdpbn07XG4gICAgICAgICAgICAgICB8IChTb21lKHApLCBfKSA9PlxuICAgICAgICAgICAgICAgICBsZXQgbSA9IE1lYXN1cmVkLmZpbmRfcChwLCBtYXApO1xuICAgICAgICAgICAgICAgICBNZWFzdXJlZC57b3JpZ2luOiBtLmxhc3QsIGxhc3Q6IG0ubGFzdH07XG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIGxldCBwcm9maWxlID1cbiAgICAgICAgICAgICAgIENhcmV0UG9zRGVjLlByb2ZpbGUue3N0eWxlOiBgU2libGluZywgbWVhc3VyZW1lbnQsIHNvcnQ6IEV4cH07XG4gICAgICAgICAgICAgW0NhcmV0UG9zRGVjLnZpZXcofmZvbnRfbWV0cmljcywgcHJvZmlsZSldO1xuICAgICAgICAgICB9O1xuICAgICAgICAgfSk7XG4gICAgc3dpdGNoIChyb290X3RhcmdldHMpIHtcbiAgICB8IFtfLCAuLi5fXSA9PiByb290X3RhcmdldHNcbiAgICB8IFtdID0+XG4gICAgICBzZWdcbiAgICAgIHw+IExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgZnVuXG4gICAgICAgICAgIHwgUGllY2UuVGlsZSh0KSA9PiBTb21lKHQpXG4gICAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgICAgKVxuICAgICAgfD4gTGlzdC5jb25jYXRfbWFwKCh0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgICAgLy8gVE9ETyhkKTogdW5pZnkgd2l0aCBSZWxhdGl2ZXMubG9jYWxfaW5jb21wbGV0ZV90aWxlc1xuICAgICAgICAgICBUaWxlLmNvbnRhaW5lZF9jaGlsZHJlbih0KVxuICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChsLCBzZWcsIHIpKSA9PlxuICAgICAgICAgICAgICAgIHRhcmdldHMofmNvbnRhaW5lcl9zaGFyZHM9KGwsIHIpLCBicCwgc2VnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICB9KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IGJhY2twYWNrID0gKHo6IFppcHBlci50KTogbGlzdChOb2RlLnQpID0+IFtcbiAgICBCYWNrcGFja1ZpZXcudmlldyh+Zm9udF9tZXRyaWNzLCB+b3JpZ2luPVppcHBlci5jYXJldF9wb2ludChtYXAsIHopLCB6KSxcbiAgXTtcblxuICBsZXQgdGFyZ2V0cycgPSAoYmFja3BhY2ssIHNlZykgPT4ge1xuICAgIHNob3dfYmFja3BhY2tfdGFyZ2V0cyAmJiBCYWNrcGFjay5yZXN0cmljdGVkKGJhY2twYWNrKVxuICAgICAgPyB0YXJnZXRzKGJhY2twYWNrLCBzZWcpIDogW107XG4gIH07XG5cbiAgbGV0IHRlcm1fZGVjb3JhdGlvbiA9XG4gICAgICAoXG4gICAgICAgIH5pZDogSWQudCxcbiAgICAgICAgZGVjbzpcbiAgICAgICAgICAoKE1lYXN1cmVkLlBvaW50LnQsIE1lYXN1cmVkLlBvaW50LnQsIFN2Z1V0aWwuUGF0aC50KSkgPT4gTm9kZS50LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IChwX2wsIHBfcikgPSBUZXJtUmFuZ2VzLmZpbmQoaWQsIHRlcm1fcmFuZ2VzKTtcbiAgICBsZXQgbCA9IE1lYXN1cmVkLmZpbmRfcChwX2wsIG1hcCkub3JpZ2luO1xuICAgIGxldCByID0gTWVhc3VyZWQuZmluZF9wKHBfciwgbWFwKS5sYXN0O1xuICAgIG9wZW4gU3ZnVXRpbC5QYXRoO1xuICAgIGxldCByX2VkZ2UgPVxuICAgICAgTGlzdFV0aWwucmFuZ2UofmxvPWwucm93LCByLnJvdyArIDEpXG4gICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoaSA9PiB7XG4gICAgICAgICAgIGxldCByb3cgPSBNZWFzdXJlZC5Sb3dzLmZpbmQoaSwgbWFwLnJvd3MpO1xuICAgICAgICAgICBbaCh+eD1pID09IHIucm93ID8gci5jb2wgOiByb3cubWF4X2NvbCksIHZfKH5keT0xKV07XG4gICAgICAgICB9KTtcbiAgICBsZXQgbF9lZGdlID1cbiAgICAgIExpc3RVdGlsLnJhbmdlKH5sbz1sLnJvdywgci5yb3cgKyAxKVxuICAgICAgfD4gTGlzdC5yZXZfbWFwKGkgPT4ge1xuICAgICAgICAgICBsZXQgcm93ID0gTWVhc3VyZWQuUm93cy5maW5kKGksIG1hcC5yb3dzKTtcbiAgICAgICAgICAgW2gofng9aSA9PSBsLnJvdyA/IGwuY29sIDogcm93LmluZGVudCksIHZfKH5keT0tMSldO1xuICAgICAgICAgfSlcbiAgICAgIHw+IExpc3QuY29uY2F0O1xuICAgIGxldCBwYXRoID1cbiAgICAgIFttKH54PWwuY29sLCB+eT1sLnJvdyksIC4uLnJfZWRnZV1cbiAgICAgIEAgbF9lZGdlXG4gICAgICBAIFtaXVxuICAgICAgfD4gdHJhbnNsYXRlKHtkeDogRmxvYXQub2ZfaW50KC0gbC5jb2wpLCBkeTogRmxvYXQub2ZfaW50KC0gbC5yb3cpfSk7XG4gICAgKGwsIHIsIHBhdGgpIHw+IGRlY287XG4gIH07XG5cbiAgbGV0IHRlcm1faGlnaGxpZ2h0ID0gKH5jbHNzOiBsaXN0KHN0cmluZyksIGlkOiBJZC50KSA9PiB7XG4gICAgdGVybV9kZWNvcmF0aW9uKH5pZCwgKChvcmlnaW4sIGxhc3QsIHBhdGgpKSA9PlxuICAgICAgRGVjVXRpbC5jb2RlX3N2Z19zaXplZChcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgfm1lYXN1cmVtZW50PXtvcmlnaW4sIGxhc3R9LFxuICAgICAgICB+YmFzZV9jbHM9Y2xzcyxcbiAgICAgICAgcGF0aCxcbiAgICAgIClcbiAgICApO1xuICB9O1xuXG4gIGxldCBjb2xvcl9oaWdobGlnaHRzID0gKGNvbG9yaW5nczogbGlzdCgoSWQudCwgc3RyaW5nKSkpID0+IHtcbiAgICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAoKGlkLCBjb2xvcikpID0+XG4gICAgICAgIC8qIEhBQ0soYW5kcmV3KTogQ2F0Y2hpbmcgZXhjZXB0aW9ucyBzaW5jZSB3aGVuIHNob3dpbmdcbiAgICAgICAgICAgdGVybSBoaWdobGlnaHRzIHdoZW4gdGhlIGJhY2twYWNrIGlzIG5vbi1lbXB0eSwgdGhlXG4gICAgICAgICAgIHByb3NwZWN0aXZlIGNvbXBsZXRpb24gbWF5IGhhdmUgZGlmZmVyZW50IHRlcm0gaWRzXG4gICAgICAgICAgIHRoYW4gdGhlIGRpc3BsYXllZCBjb2RlLiAqL1xuICAgICAgICB0cnkoU29tZSh0ZXJtX2hpZ2hsaWdodCh+Y2xzcz1bXCJoaWdobGlnaHQtY29kZS1cIiArKyBjb2xvcl0sIGlkKSkpIHtcbiAgICAgICAgfCBOb3RfZm91bmQgPT4gTm9uZVxuICAgICAgICB9LFxuICAgICAgY29sb3JpbmdzLFxuICAgICk7XG4gIH07XG5cbiAgLy8gZmFzdGVyIGluZm9fbWFwIHRyYXZlcnNhbFxuICBsZXQgZXJyX2hvbGVzID0gZXJyb3JfaWRzID0+XG4gICAgTGlzdC5tYXAodGVybV9oaWdobGlnaHQofmNsc3M9W1wiZXJyLWhvbGVcIl0pLCBlcnJvcl9pZHMpO1xuXG4gIGxldCBuZXh0X3N0ZXBzID0gKG5leHRfc3RlcHMsIH5pbmplY3QpID0+IHtcbiAgICBsZXQgdGlsZXMgPSBMaXN0LmZpbHRlcl9tYXAoVGlsZU1hcC5maW5kX29wdChfLCB0aWxlcyksIG5leHRfc3RlcHMpO1xuICAgIExpc3QubWFwaShcbiAgICAgIChpLCB0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgbGV0IGlkID0gVGlsZS5pZCh0KTtcbiAgICAgICAgbGV0IG1vbGQgPSB0Lm1vbGQ7XG4gICAgICAgIGxldCBzaGFyZHMgPSBNZWFzdXJlZC5maW5kX3NoYXJkcyh0LCBtYXApO1xuICAgICAgICBQaWVjZURlYy5uZXh0X3N0ZXBfc2hhcmRzX2luZGljYXRlZChcbiAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgIH5jYXJldD0oSWQuaW52YWxpZCwgMCksXG4gICAgICAgICAgfmluamVjdD0oKSA9PiBpbmplY3QoaSksXG4gICAgICAgICAgKGlkLCBtb2xkLCBzaGFyZHMpLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHRpbGVzLFxuICAgIClcbiAgICB8PiBMaXN0LmZsYXR0ZW47XG4gIH07XG5cbiAgbGV0IHRha2VuX3N0ZXAgPSB0YWtlbl9zdGVwID0+IHtcbiAgICBsZXQgdGlsZXMgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICBUaWxlTWFwLmZpbmRfb3B0KF8sIHRpbGVzKSxcbiAgICAgICAgdGFrZW5fc3RlcCB8PiBPcHRpb24udG9fbGlzdCxcbiAgICAgICk7XG4gICAgTGlzdC5tYXAoXG4gICAgICAodDogVGlsZS50KSA9PiB7XG4gICAgICAgIGxldCBpZCA9IFRpbGUuaWQodCk7XG4gICAgICAgIGxldCBtb2xkID0gdC5tb2xkO1xuICAgICAgICBsZXQgc2hhcmRzID0gTWVhc3VyZWQuZmluZF9zaGFyZHModCwgbWFwKTtcbiAgICAgICAgUGllY2VEZWMudGFrZW5fc3RlcF9zaGFyZHNfaW5kaWNhdGVkKFxuICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgfmNhcmV0PShJZC5pbnZhbGlkLCAwKSxcbiAgICAgICAgICAoaWQsIG1vbGQsIHNoYXJkcyksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgdGlsZXMsXG4gICAgKVxuICAgIHw+IExpc3QuZmxhdHRlbjtcbiAgfTtcblxuICBsZXQgc3RhdGljcyA9IGVoID0+IGVycl9ob2xlcyhlaCk7XG5cbiAgbGV0IGVkaXRvciA9ICh6aXBwZXIsIHNlbF9zZWcsIHNlbGVjdGVkKSA9PlxuICAgIHNlbGVjdGVkXG4gICAgICA/IExpc3QuY29uY2F0KFtcbiAgICAgICAgICBjYXJldCh6aXBwZXIpLFxuICAgICAgICAgIGluZGljYXRlZF9waWVjZV9kZWNvKHppcHBlciksXG4gICAgICAgICAgc2VsZWN0ZWRfcGllY2VzKHppcHBlciksXG4gICAgICAgICAgYmFja3BhY2soemlwcGVyKSxcbiAgICAgICAgICB0YXJnZXRzJyh6aXBwZXIuYmFja3BhY2ssIHNlbF9zZWcpLFxuICAgICAgICBdKVxuICAgICAgOiBbXTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIFV0aWwuUmVzdWx0LlN5bnRheDtcbm9wZW4gSGF6M2xjb3JlO1xuXG50eXBlIG1vZGVsID0ge1xuICAvLyBVcGRhdGU6XG4gIGVkaXRvcjogRWRpdG9yLnQsXG4gIC8vIENhbGN1bGF0ZTpcbiAgc3RhdGljczogQ2FjaGVkU3RhdGljcy5zdGF0aWNzLFxufTtcblxudHlwZSBhY3Rpb24gPSBBY3Rpb24udDtcblxubGV0IHVwZGF0ZSA9ICh+c2V0dGluZ3MsIGFjdGlvbiwgbW9kZWwpID0+IHtcbiAgbGV0KyBlZGl0b3IgPSBQZXJmb3JtLmdvKH5zZXR0aW5ncywgYWN0aW9uLCBtb2RlbC5lZGl0b3IpO1xuICB7ZWRpdG9yLCBzdGF0aWNzOiBtb2RlbC5zdGF0aWNzfTtcbn07XG5cbmxldCBjYWxjdWxhdGUgPSAofnNldHRpbmdzLCB+c3RpdGNoLCB7ZWRpdG9yLCBzdGF0aWNzfSBhcyBtb2RlbCkgPT4ge1xuICBsZXQgdGVybSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oZWRpdG9yLnN0YXRlLnppcHBlcikgfD4gZnN0IHw+IHN0aXRjaDtcbiAgaWYgKEV4cC5mYXN0X2VxdWFsKHRlcm0sIHN0YXRpY3MudGVybSkpIHtcbiAgICBtb2RlbDtcbiAgfSBlbHNlIHtcbiAgICB7XG4gICAgICBlZGl0b3IsXG4gICAgICBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3Nfb2ZfdGVybSh+c2V0dGluZ3MsIHRlcm0sIGVkaXRvciksXG4gICAgfTtcbiAgfTtcbn07XG5cbi8vIFRoZXJlIGFyZSBubyBldmVudHMgZm9yIGEgcmVhZC1vbmx5IGVkaXRvclxudHlwZSBldmVudDtcblxuLy8gcmVhZC1vbmx5IGVkaXRvcnMgY2Fubm90IGJlIHNlbGVjdGVkXG50eXBlIHNlbGVjdGlvbjtcblxubGV0IHZpZXcgPVxuICAgICh+Z2xvYmFscywgfm92ZXJsYXlzOiBsaXN0KE5vZGUudCk9W10sIH5zb3J0PVNvcnQucm9vdCwgbW9kZWw6IG1vZGVsKSA9PiB7XG4gIGxldCBjb2RlX3RleHRfdmlldyA9IENvZGUudmlldyh+Z2xvYmFscywgfnNvcnQsIG1vZGVsLmVkaXRvcik7XG4gIGxldCBzdGF0aWNzX2RlY29zID0ge1xuICAgIG1vZHVsZSBEZWNvID1cbiAgICAgIERlY28uRGVjbyh7XG4gICAgICAgIGxldCBnbG9iYWxzID0gZ2xvYmFscztcbiAgICAgICAgbGV0IGVkaXRvciA9IG1vZGVsLmVkaXRvcjtcbiAgICAgIH0pO1xuICAgIERlY28uc3RhdGljcyhtb2RlbC5zdGF0aWNzLmVycm9yX2lkcyk7XG4gIH07XG4gIE5vZGUuZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc2VzKFtcImNvZGUtY29udGFpbmVyXCJdKV0pLFxuICAgIFtjb2RlX3RleHRfdmlld10gQCBzdGF0aWNzX2RlY29zIEAgb3ZlcmxheXMsXG4gICk7XG59O1xuIiwib3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xudHlwZSBlZGl0b3JfaWQgPSBzdHJpbmc7XG5cbnR5cGUgbW9kZWwgPSBSZWFkT25seUVkaXRvci5tb2RlbDtcblxudHlwZSBhY3Rpb24gPSBSZWFkT25seUVkaXRvci5hY3Rpb247XG5cbmxldCB1cGRhdGUgPSBSZWFkT25seUVkaXRvci51cGRhdGU7XG5cbmxldCBjYWxjdWxhdGUgPSBSZWFkT25seUVkaXRvci5jYWxjdWxhdGU7XG5cbnR5cGUgZXZlbnQgPVxuICB8IE1ha2VBY3RpdmU7XG5cbm1vZHVsZSBWaWV3ID0ge1xuICBsZXQgZ2V0X2dvYWwgPVxuICAgICAgKFxuICAgICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgICB0ZXh0X2JveDogSnMudChEb21faHRtbC5lbGVtZW50KSxcbiAgICAgICAgZTogSnMudChEb21faHRtbC5tb3VzZUV2ZW50KSxcbiAgICAgICkgPT4ge1xuICAgIGxldCByZWN0ID0gdGV4dF9ib3gjI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBsZXQgZ29hbF94ID0gZmxvYXRfb2ZfaW50KGUjIy5jbGllbnRYKTtcbiAgICBsZXQgZ29hbF95ID0gZmxvYXRfb2ZfaW50KGUjIy5jbGllbnRZKTtcbiAgICBNZWFzdXJlZC5Qb2ludC57XG4gICAgICByb3c6IEZsb2F0LnRvX2ludCgoZ29hbF95IC0uIHJlY3QjIy50b3ApIC8uIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0KSxcbiAgICAgIGNvbDpcbiAgICAgICAgRmxvYXQuKFxuICAgICAgICAgIHRvX2ludChyb3VuZCgoZ29hbF94IC0uIHJlY3QjIy5sZWZ0KSAvLiBmb250X21ldHJpY3MuY29sX3dpZHRoKSlcbiAgICAgICAgKSxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBtb3VzZWRvd25fb3ZlcmxheSA9ICh+Z2xvYmFsczogR2xvYmFscy50LCB+aW5qZWN0KSA9PlxuICAgIE5vZGUuZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShcbiAgICAgICAgICBBdHRyLltcbiAgICAgICAgICAgIGlkKFwibW91c2Vkb3duLW92ZXJsYXlcIiksXG4gICAgICAgICAgICBvbl9tb3VzZXVwKF8gPT4gZ2xvYmFscy5pbmplY3RfZ2xvYmFsKFNldE1vdXNlZG93bihmYWxzZSkpKSxcbiAgICAgICAgICAgIG9uX21vdXNlbW92ZShlID0+IHtcbiAgICAgICAgICAgICAgbGV0IG1vdXNlX2hhbmRsZXIgPVxuICAgICAgICAgICAgICAgIGUjIy50YXJnZXQgfD4gSnMuT3B0LmdldChfLCBfID0+IGZhaWx3aXRoKFwibm8gdGFyZ2V0XCIpKTtcbiAgICAgICAgICAgICAgbGV0IHRleHRfYm94ID1cbiAgICAgICAgICAgICAgICBKc1V0aWwuZ2V0X2NoaWxkX3dpdGhfY2xhc3MoXG4gICAgICAgICAgICAgICAgICBtb3VzZV9oYW5kbGVyIyMucGFyZW50Tm9kZVxuICAgICAgICAgICAgICAgICAgfD4gSnMuT3B0LmdldChfLCBfID0+IGZhaWx3aXRoKFwiXCIpKVxuICAgICAgICAgICAgICAgICAgfD4gSnMuVW5zYWZlLmNvZXJjZSxcbiAgICAgICAgICAgICAgICAgIFwiY29kZS1jb250YWluZXJcIixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfD4gT3B0aW9uLmdldDtcbiAgICAgICAgICAgICAgbGV0IGdvYWwgPVxuICAgICAgICAgICAgICAgIGdldF9nb2FsKH5mb250X21ldHJpY3M9Z2xvYmFscy5mb250X21ldHJpY3MsIHRleHRfYm94LCBlKTtcbiAgICAgICAgICAgICAgaW5qZWN0KEFjdGlvbi5TZWxlY3QoUmVzaXplKEdvYWwoUG9pbnQoZ29hbCkpKSkpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgKSxcbiAgICAgIFtdLFxuICAgICk7XG5cbiAgbGV0IG1vdXNlZG93bl9oYW5kbGVyID0gKH5nbG9iYWxzOiBHbG9iYWxzLnQsIH5zaWduYWwsIH5pbmplY3QsIGV2dCkgPT4ge1xuICAgIGxldCBnb2FsID1cbiAgICAgIGdldF9nb2FsKFxuICAgICAgICB+Zm9udF9tZXRyaWNzPWdsb2JhbHMuZm9udF9tZXRyaWNzLFxuICAgICAgICBldnQjIy5jdXJyZW50VGFyZ2V0XG4gICAgICAgIHw+IEpzLk9wdC5nZXQoXywgXyA9PiBmYWlsd2l0aChcIlwiKSlcbiAgICAgICAgfD4gSnNVdGlsLmdldF9jaGlsZF93aXRoX2NsYXNzKF8sIFwiY29kZS1jb250YWluZXJcIilcbiAgICAgICAgfD4gT3B0aW9uLmdldCxcbiAgICAgICAgZXZ0LFxuICAgICAgKTtcbiAgICBzd2l0Y2ggKEpzVXRpbC5jdHJsX2hlbGQoZXZ0KSwgSnNVdGlsLm51bV9jbGlja3MoZXZ0KSkge1xuICAgIHwgKHRydWUsIF8pID0+XG4gICAgICBFZmZlY3QuTWFueShbXG4gICAgICAgIHNpZ25hbChNYWtlQWN0aXZlKSxcbiAgICAgICAgaW5qZWN0KEFjdGlvbi5Nb3ZlKEdvYWwoUG9pbnQoZ29hbCkpKSksXG4gICAgICAgIGluamVjdChBY3Rpb24uSnVtcChCaW5kaW5nU2l0ZU9mSW5kaWNhdGVkVmFyKSksXG4gICAgICBdKVxuICAgIHwgKGZhbHNlLCAxKSA9PlxuICAgICAgRWZmZWN0Lk1hbnkoW1xuICAgICAgICBnbG9iYWxzLmluamVjdF9nbG9iYWwoU2V0TW91c2Vkb3duKHRydWUpKSxcbiAgICAgICAgc2lnbmFsKE1ha2VBY3RpdmUpLFxuICAgICAgICBpbmplY3QoQWN0aW9uLk1vdmUoR29hbChQb2ludChnb2FsKSkpKSxcbiAgICAgIF0pXG4gICAgfCAoZmFsc2UsIDIpID0+IGluamVjdChBY3Rpb24uU2VsZWN0KFRpbGUoQ3VycmVudCkpKVxuICAgIHwgKGZhbHNlLCAzIHwgXykgPT4gaW5qZWN0KEFjdGlvbi5TZWxlY3QoU21hcnQpKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHZpZXcgPVxuICAgICAgKFxuICAgICAgICB+Z2xvYmFsczogR2xvYmFscy50LFxuICAgICAgICB+c2lnbmFsOiBldmVudCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfmluamVjdDogYWN0aW9uID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+c2VsZWN0ZWQ6IGJvb2wsXG4gICAgICAgIH5oaWdobGlnaHRzOiBvcHRpb24oQ29sb3JTdGVwcy5jb2xvck1hcCksXG4gICAgICAgIH5vdmVybGF5czogbGlzdChOb2RlLnQpPVtdLFxuICAgICAgICB+c29ydD0/LFxuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICApID0+IHtcbiAgICBsZXQgZWRpdF9kZWNvcyA9IHtcbiAgICAgIG1vZHVsZSBEZWNvID1cbiAgICAgICAgRGVjby5EZWNvKHtcbiAgICAgICAgICBsZXQgZWRpdG9yID0gbW9kZWwuZWRpdG9yO1xuICAgICAgICAgIGxldCBnbG9iYWxzID0gZ2xvYmFscztcbiAgICAgICAgfSk7XG4gICAgICBEZWNvLmVkaXRvcihcbiAgICAgICAgbW9kZWwuZWRpdG9yLnN0YXRlLnppcHBlcixcbiAgICAgICAgbW9kZWwuZWRpdG9yLnN0YXRlLm1ldGEuc2VnbWVudCxcbiAgICAgICAgc2VsZWN0ZWQsXG4gICAgICApXG4gICAgICBAIChcbiAgICAgICAgc3dpdGNoIChoaWdobGlnaHRzKSB7XG4gICAgICAgIHwgU29tZShjb2xvck1hcCkgPT5cbiAgICAgICAgICBEZWNvLmNvbG9yX2hpZ2hsaWdodHMoQ29sb3JTdGVwcy50b19saXN0KGNvbG9yTWFwKSlcbiAgICAgICAgfCBfID0+IFtdXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfTtcbiAgICBsZXQgb3ZlcmxheXMgPSBlZGl0X2RlY29zIEAgb3ZlcmxheXM7XG4gICAgbGV0IGNvZGVfdmlldyA9IFJlYWRPbmx5RWRpdG9yLnZpZXcofmdsb2JhbHMsIH5vdmVybGF5cywgfnNvcnQ/LCBtb2RlbCk7XG4gICAgbGV0IG1vdXNlZG93bl9vdmVybGF5ID1cbiAgICAgIHNlbGVjdGVkICYmIGdsb2JhbHMubW91c2Vkb3duXG4gICAgICAgID8gW21vdXNlZG93bl9vdmVybGF5KH5nbG9iYWxzLCB+aW5qZWN0KV0gOiBbXTtcbiAgICBsZXQgb25fbW91c2Vkb3duID0gbW91c2Vkb3duX2hhbmRsZXIofmdsb2JhbHMsIH5zaWduYWwsIH5pbmplY3QpO1xuICAgIE5vZGUuZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiXSksXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcImNvZGUtZWRpdG9yXCJdKSxcbiAgICAgICAgICBBdHRyLm9uX21vdXNlZG93bihvbl9tb3VzZWRvd24pLFxuICAgICAgICBdKSxcbiAgICAgIG1vdXNlZG93bl9vdmVybGF5IEAgW2NvZGVfdmlld10sXG4gICAgKTtcbiAgfTtcbn07XG5cbmxldCB2aWV3ID0gVmlldy52aWV3O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbm1vZHVsZSBTdGVwcGVkID0ge1xuICB0eXBlIG1vZGVsID0ge1xuICAgIGVkaXRvcjogUmVhZE9ubHlFZGl0b3IubW9kZWwsXG4gICAgc3RlcDogb3B0aW9uKEV2YWx1YXRvclN0ZXAuc3RlcCksXG4gICAgc3RlcF9pZDogb3B0aW9uKElkLnQpLFxuICB9O1xuXG4gIHR5cGUgYWN0aW9uID0gUmVhZE9ubHlFZGl0b3IuYWN0aW9uO1xuXG4gIHR5cGUgZXZlbnQgPSBSZWFkT25seUVkaXRvci5ldmVudDtcblxuICB0eXBlIHNlbGVjdGlvbiA9IFJlYWRPbmx5RWRpdG9yLnNlbGVjdGlvbjtcblxuICBsZXQgdmlldyA9ICh+Z2xvYmFsczogR2xvYmFscy50LCB+b3ZlcmxheXM9W10sIG1vZGVsOiBtb2RlbCkgPT4ge1xuICAgIGxldCBvdmVybGF5cyA9IHtcbiAgICAgIG1vZHVsZSBEZWNvID1cbiAgICAgICAgRGVjby5EZWNvKHtcbiAgICAgICAgICBsZXQgZWRpdG9yID0gbW9kZWwuZWRpdG9yLmVkaXRvcjtcbiAgICAgICAgICBsZXQgZ2xvYmFscyA9IGdsb2JhbHM7XG4gICAgICAgIH0pO1xuICAgICAgb3ZlcmxheXMgQCBEZWNvLnRha2VuX3N0ZXAobW9kZWwuc3RlcF9pZCk7XG4gICAgfTtcbiAgICBSZWFkT25seUVkaXRvci52aWV3KH5nbG9iYWxzLCB+b3ZlcmxheXMsIG1vZGVsLmVkaXRvcik7XG4gIH07XG59O1xuXG5tb2R1bGUgU3RlcHBhYmxlID0ge1xuICB0eXBlIG1vZGVsID0ge1xuICAgIGVkaXRvcjogQ29kZUVkaXRvci5tb2RlbCxcbiAgICBuZXh0X3N0ZXBzOiBsaXN0KElkLnQpLFxuICB9O1xuXG4gIHR5cGUgYWN0aW9uID0gQ29kZUVkaXRvci5hY3Rpb247XG5cbiAgdHlwZSBldmVudCA9XG4gICAgfCBUYWtlU3RlcChpbnQpO1xuXG4gIGxldCB2aWV3ID1cbiAgICAgIChcbiAgICAgICAgfmdsb2JhbHM6IEdsb2JhbHMudCxcbiAgICAgICAgfnNpZ25hbDogZXZlbnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5vdmVybGF5cz1bXSxcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgKSA9PiB7XG4gICAgbGV0IG92ZXJsYXlzID0ge1xuICAgICAgbW9kdWxlIERlY28gPVxuICAgICAgICBEZWNvLkRlY28oe1xuICAgICAgICAgIGxldCBlZGl0b3IgPSBtb2RlbC5lZGl0b3IuZWRpdG9yO1xuICAgICAgICAgIGxldCBnbG9iYWxzID0gZ2xvYmFscztcbiAgICAgICAgfSk7XG4gICAgICBvdmVybGF5c1xuICAgICAgQCBEZWNvLm5leHRfc3RlcHMobW9kZWwubmV4dF9zdGVwcywgfmluamVjdD14ID0+IHNpZ25hbChUYWtlU3RlcCh4KSkpO1xuICAgIH07XG4gICAgUmVhZE9ubHlFZGl0b3Iudmlldyh+Z2xvYmFscywgfm92ZXJsYXlzLCBtb2RlbC5lZGl0b3IpO1xuICB9O1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gRWRpdG9ycztcbmxldCBpbWcgPSBjcmVhdGUoXCJpbWdcIik7XG5cbmxldCBzbGlkZSA9IChoZWFkZXIsIGNvbnRlbnQpID0+XG4gIGRpdihcbiAgICB+a2V5PVwic2xpZGVcIixcbiAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInNsaWRlXCIpLFxuICAgIFtcbiAgICAgIGgxKH5rZXk9XCJoZWFkZXJcIiwgfmF0dHI9QXR0ci5jbGFzc18oXCJzbGlkZS1oZWFkZXJcIiksIFt0ZXh0KGhlYWRlcildKSxcbiAgICAgIGRpdih+a2V5PVwiY29udGVudFwiLCB+YXR0cj1BdHRyLmNsYXNzXyhcInNsaWRlLWNvbnRlbnRcIiksIGNvbnRlbnQpLFxuICAgIF0sXG4gICk7XG5cbmxldCBjb2RlID0gY29udGVudCA9PiBzcGFuKH5hdHRyPUF0dHIuY2xhc3NfKFwiY29kZVwiKSwgW3RleHQoY29udGVudCldKTtcblxubGV0IGVtID0gY29udGVudCA9PiBzcGFuKH5hdHRyPUF0dHIuY2xhc3NfKFwiZW1cIiksIFt0ZXh0KGNvbnRlbnQpXSk7XG5cbmxldCBnZXRfY29udGVudCA9XG4gIGZ1blxuICB8IERvY3VtZW50YXRpb24oXCJQcm9ncmFtbWluZyBFeHByZXNzaXZlbHlcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiUHJvZ3JhbW1pbmcgRXhwcmVzc2l2ZWx5XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiWW91IG1pZ2h0IG5vdCBoYXZlIHJlYWxpemVkIGl0LCBidXQgeW91IHdyb3RlIHlvdXJcbiAgICAgIGZpcnN0IGNvbXB1dGVyIHByb2dyYW1zIGluIGdyYWRlIHNjaG9vbCBpbiB0aGUgZm9ybSBvZlxuICAgICAgYXJpdGhtZXRpYyBleHByZXNzaW9ucyFcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFwiRm9yIGV4YW1wbGUsIGVudGVyIHRoZSBwcm9ncmFtIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyICsgMlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGluIHRoZSBleHByZXNzaW9uIGVkaXRvciBiZWxvdy5cbiAgICAgICAgICAgICAgSGF6ZWwgb3BlcmF0ZXMgbGlrZSBhIGNhbGN1bGF0b3IsIGNvbXB1dGluZyB0aGUgdmFsdWUgb2YgeW91ciBleHByZXNzaW9uIGJ5IGVxdWF0aW9uYWxseSBzaW1wbGlmeWluZyBpdCAoaS5lLiBldmFsdWF0aW5nIGl0KSwgaGVyZSB0byB0aGUgaW50ZWdlciB2YWx1ZSBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiNFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuIFwiKSxcbiAgICAgICAgICAgIHRleHQoXCJUaGUgc3ltYm9sIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCLiiaFcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGlzIHByb25vdW5jZWQgXFxcImlzIGVxdWl2YWxlbnQgdG9cXFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb21wb3NpbmcgQXJpdGhtZXRpYyBFeHByZXNzaW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJDb21wb3NpbmcgQXJpdGhtZXRpYyBFeHByZXNzaW9uc1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFwiQXJpdGhtZXRpYyBleHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQgXCIpLFxuICAgICAgICAgICAgZW0oXCJjb21wb3NpdGlvbmFsbHlcIiksXG4gICAgICAgICAgICB0ZXh0KFwiOiBieSBjb21iaW5pbmcgc21hbGxlciBleHByZXNzaW9ucyB1c2luZyB2YXJpb3VzIFwiKSxcbiAgICAgICAgICAgIGVtKFwib3BlcmF0b3JzXCIpLFxuICAgICAgICAgICAgdGV4dChcIiwgbGlrZSBhZGRpdGlvbiAoXCIpLFxuICAgICAgICAgICAgY29kZShcIitcIiksXG4gICAgICAgICAgICB0ZXh0KFwiKSBhbmQgbXVsdGlwbGljYXRpb24gKFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIqXCIpLFxuICAgICAgICAgICAgdGV4dChcIiksIFwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIHRvIGZvcm0gbGFyZ2VyIGV4cHJlc3Npb25zLiBUaGUgc21hbGxlc3QgYXJpdGhtZXRpYyBleHByZXNzaW9ucyBhcmUgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZW0oXCJudW1iZXIgbGl0ZXJhbHNcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGxpa2UgXCIpLFxuICAgICAgICAgICAgY29kZShcIjJcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGFuZCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiNDJcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXCJGb3IgZXhhbXBsZSwgZW50ZXIgXCIpLFxuICAgICAgICAgICAgY29kZShcIjIgKiAzICsgNCAqIDVcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBpbiB0aGUgZXhwcmVzc2lvbiBlZGl0b3IgYmVsb3csIG9ic2VydmluZyB0aGF0IGl0cyB2YWx1ZSBpcyBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiMjZcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIFRoZSByZWFzb24gaXMgYmVjYXVzZSBvZiB0aGUgZmFtaWxpYXIgb3JkZXIgb2Ygb3BlcmF0aW9uczogbXVsdGlwbGljYXRpb24gcHJlY2VkZXMgYWRkaXRpb24uXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgQnkgcnVubmluZyB5b3VyIGN1cnNvciB0aHJvdWdoIHRoaXMgcHJvZ3JhbSwgb2JzZXJ2ZSBob3cgSGF6ZWwncyBjdXJzb3IgZGVjb3JhdGlvbnMgZGVtb25zdHJhdGUgdGhpcyBvcmRlciBvZiBvcGVyYXRpb25zIGJ5IGdyb3VwaW5nIHRvZ2V0aGVyIHRoZSBvcGVyYW5kcyBvZiBlYWNoIG9wZXJhdG9yLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb21wdXRpbmcgRXF1YXRpb25hbGx5XCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkNvbXB1dGluZyBFcXVhdGlvbmFsbHlcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIlRvIHByb3ZlIHRoYXQgXCIpLFxuICAgICAgICAgICAgY29kZShcIjIgKiAzICsgNCAqIDUg4omhIDI2XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaW4gZ3JhZGUgc2Nob29sLCB3ZSB3b3VsZCBoYXZlIHdyaXR0ZW4gb3V0IGEgc2VyaWVzIG9mIGVxdWF0aW9uYWwgc3RlcHMsIGVhY2ggc2ltcGxpZnlpbmcgdGhlIGV4cHJlc3Npb24gZnJvbSB0aGUgcHJldmlvdXMgc3RlcCBieSBwZXJmb3JtaW5nIG9uZSBlbGVtZW50YXJ5IGFyaXRobWV0aWMgY29tcHV0YXRpb24gYXQgYSB0aW1lLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiVXNlIEhhemVsJ3Mgc3RlcHBlciBieSBjbGlja2luZyB0aGUgYnV0dG9uIHRvIHRoZSByaWdodCBvZiB0aGUgcmVzdWx0IGJlbG93IGFuZCBpbnRlcmFjdGl2ZWx5IHByb3ZlIHRoYXQgb3VyIGV2YWx1YXRpb24gdG8gXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjI2XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaXMgY29ycmVjdCBvbmUgZWxlbWVudGFyeSBhcml0aG1ldGljIHN0ZXAgYXQgYSB0aW1lLiBUaGlzIHByb29mIGlzIHRoZSBlc3NlbmNlIG9mIGNvbXB1dGF0aW9uIVwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJWYXJpYWJsZXNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiVmFyaWFibGVzXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiQXMgaXQgdHVybnMgb3V0LCB5b3UgY2FuIGVucmljaCBhcml0aG1ldGljIGV4cHJlc3Npb25zIHRvIGdvIGZyb20gc2ltcGxlIGludGVnZXIgY29tcHV0YXRpb25zIHRvIGdlbmVyYWwtcHVycG9zZSBjb21wdXRhdGlvbnMhIE92ZXIgdGhlIG5leHQgc2V2ZXJhbCBzbGlkZXMsIHdlIHdpbGwgc2VlIGhvdyB0aGlzIHdvcmtzLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiT3VyIGZpcnN0IHN0ZXAgaXMgdG8gaW50cm9kdWNlIGEgd2F5IHRvIGFiYnJldmlhdGUgZXhwcmVzc2lvbnMgdXNpbmcgdmFyaWFibGVzLiBUeXBlIHRoZSBleHByZXNzaW9uIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJsZXQgeCA9IDIgKiAzIGluIHggKyAxXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaW50byB0aGUgZXhwcmVzc2lvbiBlZGl0b3IgYmVsb3csIG9ic2VydmluZyB0aGF0IGl0IGV2YWx1YXRlcyB0byBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiN1wiKSxcbiAgICAgICAgICAgIHRleHQoXCIuIFlvdSBjYW4gaW5zZXJ0IGEgbmV3IGxpbmUgYWZ0ZXIgdGhlIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJpblwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGtleXdvcmQgdG8gbWFrZSB0aGUgcHJvZ3JhbSBtb3JlIGlkaW9tYXRpYyAoaS5lLiByZWFkYWJsZSkuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJWYXJpYWJsZXMgYXJlIGdpdmVuIGNvbXB1dGF0aW9uYWwgbWVhbmluZyBzaW1wbHkgYnkgc3Vic3RpdHV0aW9uLiBVc2UgdGhlIHN0ZXBwZXIgdG8gc2VlIGhvdyB0aGlzIHdvcmtzLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb21wb3NpdGlvbmFsaXR5XCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkNvbXBvc2l0aW9uYWxpdHlcIixcbiAgICAgICAgW1xuICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICBcIkxldCBleHByZXNzaW9ucyBhcmUgZXhwcmVzc2lvbnMsIGp1c3QgbGlrZSBhcml0aG1ldGljIGV4cHJlc3Npb25zLiBBcyB3ZSBkaXNjdXNzZWQgZWFybGllciwgZXhwcmVzc2lvbnMgYXJlIGNvbnN0cnVjdGVkIGNvbXBvc2l0aW9uYWxseSwgc28gd2UgY2FuIGV2ZW4gbWFrZSBhIGxldCBleHByZXNzaW9uIGFuIG9wZXJhbmQgb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvci5cIixcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIlNjb3BlXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIlNjb3BlXCIsXG4gICAgICAgIFtcbiAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgXCJUaGUgc2NvcGUgb2YgYSB2YXJpYWJsZSBpcyB0aGUgZXhwcmVzc2lvbihzKSBvZiB0aGUgcHJvZ3JhbSB3aGVyZSBpdCBpcyBhdmFpbGFibGUgZm9yIHVzZS4gRm9yIGxldCBleHByZXNzaW9ucywgdGhlIHN1Yi1leHByZXNzaW9uIHRoYXQgZm9sbG93cyB0aGUgXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjb2RlKFwiaW5cIiksXG4gICAgICAgICAgdGV4dChcbiAgICAgICAgICAgIFwiIGtleXdvcmQgaGFzIHRoZSB2YXJpYWJsZSBib3VuZCBieSB0aGUgbGV0IGV4cHJlc3Npb24gaW4gc2NvcGUuIEhhemVsJ3MgZXhwcmVzc2lvbiBkZWNvcmF0aW9ucyBzaG93IHlvdSB3aGVyZSB0aGUgc2NvcGUgb2YgdGhlIHZhcmlhYmxlIHdpbGwgZW5kLlwiLFxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiU2hhZG93aW5nXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIlNoYWRvd2luZ1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIk9uY2UgYSB2YXJpYWJsZSBpcyBkZWZpbmVkLCBpdCBjYW5ub3QgYmUgY2hhbmdlZC4gVGhlcmUgaXMgbm8gYXNzaWdubWVudCBvcGVyYXRvciBpbiBsYW5ndWFnZXMgYmFzZWQgb24gcHVyZSBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbnMsIHdoZXJlIHZhcmlhYmxlcyBhcmUgZ2l2ZW4gbWVhbmluZyBieSBzdWJzdGl0dXRpb24sIGxpa2UgSGF6ZWwuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIkhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBhIFwiKSxcbiAgICAgICAgICAgIGVtKFwibmV3IHZhcmlhYmxlXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgdGhhdCBzaGFyZXMgdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlLiBIb3dldmVyLCB0aGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gcmVmZXIgdG8gdGhlIHByZXZpb3VzIGJpbmRpbmcgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgbmV3IGJpbmRpbmc7IHdlIHNheSB0aGF0IHZhcmlhYmxlIGhhcyBiZWVuIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVtKFwic2hhZG93ZWRcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJCb29sZWFucyBhbmQgVHlwZXNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiQm9vbGVhbnMgYW5kIFR5cGVzXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiU28gZmFyLCB3ZSBoYXZlIG9ubHkgc2VlbiBleHByZXNzaW9ucyB0aGF0IGV2YWx1YXRlIHRvIGludGVnZXJzLiBIb3dldmVyLCBIYXplbCBzdXBwb3J0cyBtYW55IG90aGVyIHR5cGVzIG9mIHZhbHVlcywgbGlrZSBib29sZWFucy4gVGhlcmUgYXJlIHR3byBib29sZWFuIHZhbHVlcywgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcInRydWVcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGFuZCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiZmFsc2VcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiSGF6ZWwncyB0eXBlIHN5c3RlbSBlbnN1cmVzIHRoYXQgZXhwcmVzc2lvbnMgYXJlIHVzZWQgaW4gd2F5cyB0aGF0IG1ha2Ugc2Vuc2UuIEVhY2ggZXhwcmVzc2lvbiBoYXMgYSB0eXBlLCB3aGljaCBwcmVkaWN0cyB0aGUgdHlwZSBvZiBpdHMgdmFsdWUuIFRoZSBleHByZXNzaW9ucyBpbiB0aGUgcHJldmlvdXMgc2xpZGVzIGFsbCBoYWQgdHlwZSBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiSW50XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIsIHdoaWNoIGlzIHRoZSB0eXBlIG9mIGludGVnZXJzLCB3aGVyZWFzIHRoZSBib29sZWFuIHZhbHVlcyBoYXZlIHR5cGUgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIkJvb2xcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLiBcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIllvdSBjYW4gc2VlIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uIHlvdXIgY3Vyc29yIGlzIG9uIGluIHRoZSBjdXJzb3IgaW5zcGVjdG9yIGF0IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbi4gVGhlIHN5bWJvbCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiOlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIgaXMgcHJvbm91bmNlZCBcXFwiaGFzIHR5cGVcXFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiQm9vbGVhbiB2YWx1ZXMgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IHVzaW5nIGNvbXBhcmlzb24gb3BlcmF0b3JzIGxpa2UgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjxcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiPT1cIiksXG4gICAgICAgICAgICB0ZXh0KFwiLCBhbmQgXCIpLFxuICAgICAgICAgICAgY29kZShcIj5cIiksXG4gICAgICAgICAgICB0ZXh0KFwiIG9uIGludGVnZXJzLiBGb3IgZXhhbXBsZSwgXCIpLFxuICAgICAgICAgICAgY29kZShcIjIgPCAzXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBldmFsdWF0ZXMgdG8gXCIpLFxuICAgICAgICAgICAgY29kZShcInRydWVcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIEJvb2xlYW5zIGNhbiBhbHNvIGJlIGNvbWJpbmVkIHVzaW5nIGxvZ2ljYWwgYW5kIChjb25qdW5jdGlvbiksIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCImJlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIsIGFuZCBsb2dpY2FsIG9yIChkaXNqdW5jdGlvbiksIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJ8fFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIkNvbmRpdGlvbmFsIEV4cHJlc3Npb25zXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkNvbmRpdGlvbmFsIEV4cHJlc3Npb25zXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiR2l2ZW4gYSBib29sZWFuIGV4cHJlc3Npb24sIHdlIGNhbiB1c2UgaXQgdG8gY2hvb3NlIGJldHdlZW4gdHdvIGV4cHJlc3Npb25zIHVzaW5nIGEgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZW0oXCJjb25kaXRpb25hbCBleHByZXNzaW9uXCIpLFxuICAgICAgICAgICAgdGV4dChcIi4gRm9yIGV4YW1wbGUsIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJpZiAyIDwgMyB0aGVuIDQgKiA0IGVsc2UgNSAqIDVcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGV2YWx1YXRlcyB0byBcIiksXG4gICAgICAgICAgICBjb2RlKFwiNFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIkZ1bmN0aW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJGdW5jdGlvbnNcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJGdW5jdGlvbnMgYXJlIGV4cHJlc3Npb25zIHRoYXQgdGFrZSBvdGhlciBleHByZXNzaW9ucyBhcyBpbnB1dHMgYW5kIHByb2R1Y2Ugb3RoZXIgZXhwcmVzc2lvbnMgYXMgb3V0cHV0cy4gRm9yIGV4YW1wbGUsIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJmdW4geCAtPiB4ICsgMVwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGlzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBpbnRlZ2VyIGV4cHJlc3Npb24gYXMgaW5wdXQgYW5kIHByb2R1Y2VzIGFuIGludGVnZXIgZXhwcmVzc2lvbiBhcyBvdXRwdXQuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJGdW5jdGlvbnMgaW4gSGF6ZWwgZG8gbm90IHRoZW1zZWx2ZXMgaGF2ZSBuYW1lcy4gSW5zdGVhZCwgeW91IGNhbiB1c2UgYSBsZXQgZXhwcmVzc2lvbiB0byBuYW1lIGEgZnVuY3Rpb24uXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJZb3UgYXBwbHkgYSBmdW5jdGlvbiB0byBhbiBhcmd1bWVudCBleHByZXNzaW9uIGJ5IHVzaW5nIHBhcmVudGhlc2VzIGluIHRoZSB1c3VhbCB3YXkuIEZvciBleGFtcGxlLCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwibGV0IGYgPSBmdW4geCAtPiB4ICsgMSBpbiBmKDIpXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBldmFsdWF0ZXMgdG8gXCIpLFxuICAgICAgICAgICAgY29kZShcIjNcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIi4gR28gdGhyb3VnaCB0aGlzIGV4YW1wbGUgaW4gdGhlIHN0ZXBwZXIgdG8gc2VlIGhvdyBzdWJzdGl0dXRpb24gb2YgdGhlIGZ1bmN0aW9uIGZvciB0aGUgdmFyaWFibGUgc3RhbmRpbmcgZm9yIHRoZSBmdW5jdGlvbiB3b3Jrcy5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiVHVwbGVzXCIsIF8pID0+IFNvbWUoc2xpZGUoXCJUdXBsZXNcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJQYXR0ZXJuIE1hdGNoaW5nIG9uIFR1cGxlc1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJQYXR0ZXJuIE1hdGNoaW5nIG9uIFR1cGxlc1wiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlJlY3Vyc2lvblwiLCBfKSA9PiBTb21lKHNsaWRlKFwiUmVjdXJzaW9uXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiTGlzdHNcIiwgXykgPT4gU29tZShzbGlkZShcIkxpc3RzXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUGF0dGVybiBNYXRjaGluZyBvbiBMaXN0c1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJQYXR0ZXJuIE1hdGNoaW5nIG9uIExpc3RzXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBsZW5ndGhcIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBsZW5ndGhcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJSZWN1cnNpb24gb24gTGlzdHM6IHN1bVwiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJSZWN1cnNpb24gb24gTGlzdHM6IHN1bVwiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlJlY3Vyc2lvbiBvbiBMaXN0czogbnVtX3plcm9zXCIsIF8pID0+XG4gICAgU29tZShzbGlkZShcIlJlY3Vyc2lvbiBvbiBMaXN0czogbnVtX3plcm9zXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiSGlnaGVyLU9yZGVyIEZ1bmN0aW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJIaWdoZXItT3JkZXIgRnVuY3Rpb25zXCIsIFtdKSlcbiAgfCBfID0+IE5vbmU7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBpY29uX3NpemUgPSAyMC47XG5cbmxldCBzaW1wbGVfaWNvbiA9ICh+dHJhbnNmb3JtPVwiXCIsIH52aWV3OiBzdHJpbmcsIGRzOiBsaXN0KHN0cmluZykpID0+XG4gIC8qIHRha2VzIGEgbGlzdCBvZiBwYXRocyBhcyBzdHJpbmdzLCBhIHZpZXdwb3J0IGFzIGEgc3RyaW5nLFxuICAgICBhbmQgYW4gb3B0aW9uYWwgKHN0cmluZykgdHJhbnNmb3JtIHRvIGFwcGx5IHRvIGVhY2ggKi9cbiAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgIFwic3ZnXCIsXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoXG4gICAgICAgIEF0dHIuW1xuICAgICAgICAgIGNyZWF0ZShcInZpZXdCb3hcIiwgdmlldyksXG4gICAgICAgICAgY3JlYXRlKFwid2lkdGhcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIGljb25fc2l6ZSkpLFxuICAgICAgICAgIGNyZWF0ZShcImhlaWdodFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgaWNvbl9zaXplKSksXG4gICAgICAgICAgY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIExpc3QubWFwKFxuICAgICAgZCA9PlxuICAgICAgICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgICAgICAgXCJwYXRoXCIsXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLm1hbnkoXG4gICAgICAgICAgICAgIFtBdHRyLmNyZWF0ZShcImRcIiwgZCldXG4gICAgICAgICAgICAgIEAgKFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSA9PSBcIlwiID8gW10gOiBbQXR0ci5jcmVhdGUoXCJ0cmFuc2Zvcm1cIiwgdHJhbnNmb3JtKV1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgW10sXG4gICAgICAgICksXG4gICAgICBkcyxcbiAgICApLFxuICApO1xuXG5sZXQgZ2VhciA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEyMDAgMTIwMFwiLFxuICAgIFtcbiAgICAgIFwibTExOTMuMiA2OTAuOTVjNC40ODgzLTI5LjY2NCA2LjgyODEtNjAuMDQ3IDYuODI4MS05MC45NjEgMC0zMC45MS0yLjMzOTgtNjEuMjczLTYuODI4MS05MC45MzhsLTE1MS4zNy03NC4zMDVjLTMuODM5OC0xMC4yNjItOC4wMTU2LTIwLjM2My0xMi41NjItMzAuMjY2bDU0LjQ2OS0xNTkuNTJjLTM2LjEwOS00OS4xNDgtNzkuNTI3LTkyLjU2Ni0xMjguNjYtMTI4LjY3bC0xNTkuNTMgNTQuNDY5Yy05Ljg5ODQtNC41MjM0LTE5Ljk5Mi04LjcxMDktMzAuMjY2LTEyLjU1MWwtNzQuMzAxLTE1MS4zNmMtMjkuNjY0LTQuNTIzNC02MC4wNTEtNi44NTE2LTkwLjk2MS02Ljg1MTZzLTYxLjI4NSAyLjMyODEtOTAuOTQ5IDYuODUxNmwtNzQuMzA1IDE1MS4zNmMtMTAuMjYyIDMuODM5OC0yMC4zNTIgOC4wMjczLTMwLjI2NiAxMi41NTFsLTE1OS41Mi01NC40NjVjLTQ5LjEyOSAzNi4xMDktOTIuNTQzIDc5LjUzNS0xMjguNjYgMTI4LjY2bDU0LjQ1NyAxNTkuNTJjLTQuNTExNyA5Ljg5ODQtOC42ODc1IDIwLjAwNC0xMi41MzkgMzAuMjY2bC0xNTEuMzYgNzQuMzEyYy00LjUxMTcgMjkuNjY0LTYuODUxNiA2MC4wMjMtNi44NTE2IDkwLjkzOCAwIDMwLjkxIDIuMzM5OCA2MS4yOTcgNi44NTE2IDkwLjk2MWwxNTEuMzYgNzQuMzA1YzMuODUxNiAxMC4yNjIgOC4wMjczIDIwLjM1MiAxMi41MzkgMzAuMjc3bC01NC40NTMgMTU5LjUxYzM2LjEyMSA0OS4xMjkgNzkuNTM1IDkyLjU0MyAxMjguNjYgMTI4LjY4bDE1OS41Mi01NC40NTdjOS45MTAyIDQuNTExNyAyMC4wMDQgOC42ODc1IDMwLjI2NiAxMi41MjdsNzQuMzA1IDE1MS4zN2MyOS42NzIgNC41MDM5IDYwLjA0NyA2Ljg0MzggOTAuOTU3IDYuODQzOHM2MS4yOTctMi4zMzk4IDkwLjk2MS02LjgzOThsNzQuMjkzLTE1MS4zN2MxMC4yNzMtMy44Mzk4IDIwLjM2My04LjAxNTYgMzAuMjg5LTEyLjUyN2wxNTkuNSA1NC40NTdjNDkuMTI5LTM2LjEzMyA5Mi41NDMtNzkuNTQ3IDEyOC42NS0xMjguNjhsLTU0LjQ2MS0xNTkuNTFjNC41NDY5LTkuOTI1OCA4LjcyMjctMjAuMDE2IDEyLjU2Mi0zMC4yNzd6bS01OTMuMTcgNDguNTE2Yy03Ny4wMTYgMC0xMzkuNDQtNjIuNDQ5LTEzOS40NC0xMzkuNDggMC03Ny4wMTYgNjIuNDI2LTEzOS40NSAxMzkuNDQtMTM5LjQ1czEzOS40OCA2Mi40MzggMTM5LjQ4IDEzOS40NWMwIDc3LjAyNy02Mi40NjEgMTM5LjQ4LTEzOS40OCAxMzkuNDh6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGluZm8gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMjAwIDEyMDBcIixcbiAgICBbXG4gICAgICBcIm0xMTIwLjUgNTMxLjc1Yy0xNy4wNjItMTMwLjI0LTgyLjMzMi0yNDkuMzYtMTgyLjkyLTMzMy44My0xMDAuNTktODQuNDc3LTIyOS4xOS0xMjguMTgtMzYwLjQyLTEyMi40OC0xMzEuMjMgNS43MDMxLTI1NS41NiA2MC4zOTUtMzQ4LjQ0IDE1My4yOHMtMTQ3LjU3IDIxNy4yMS0xNTMuMjggMzQ4LjQ0Yy01LjY5OTIgMTMxLjIzIDM4IDI1OS44MyAxMjIuNDggMzYwLjQyIDg0LjQ3NyAxMDAuNTkgMjAzLjU5IDE2NS44NiAzMzMuODMgMTgyLjkyIDEwNi43NSAxMy45ODQgMjE1LjIyLTUuMTg3NSAzMTAuNzEtNTQuOTIyIDk1LjQ4OC00OS43MzQgMTczLjM4LTEyNy42MiAyMjMuMTEtMjIzLjExIDQ5LjczNC05NS40OTIgNjguOTA2LTIwMy45NiA1NC45MjItMzEwLjcxem0tNDQ1LjUgMzE3LjI1YzAgMjYuNzkzLTE0LjI5MyA1MS41NTUtMzcuNSA2NC45NTMtMjMuMjA3IDEzLjM5NS01MS43OTMgMTMuMzk1LTc1IDAtMjMuMjA3LTEzLjM5OC0zNy41LTM4LjE2LTM3LjUtNjQuOTUzdi0yMjVjMC0yNi43OTMgMTQuMjkzLTUxLjU1NSAzNy41LTY0Ljk1MyAyMy4yMDctMTMuMzk1IDUxLjc5My0xMy4zOTUgNzUgMCAyMy4yMDcgMTMuMzk4IDM3LjUgMzguMTYgMzcuNSA2NC45NTN6bS03NS00MjNjLTE5Ljg5MSAwLTM4Ljk2OS03LjkwMjMtNTMuMDMxLTIxLjk2OS0xNC4wNjYtMTQuMDYyLTIxLjk2OS0zMy4xNDEtMjEuOTY5LTUzLjAzMXM3LjkwMjMtMzguOTY5IDIxLjk2OS01My4wMzFjMTQuMDYyLTE0LjA2NiAzMy4xNDEtMjEuOTY5IDUzLjAzMS0yMS45NjlzMzguOTY5IDcuOTAyMyA1My4wMzEgMjEuOTY5YzE0LjA2NiAxNC4wNjIgMjEuOTY5IDMzLjE0MSAyMS45NjkgNTMuMDMxcy03LjkwMjMgMzguOTY5LTIxLjk2OSA1My4wMzFjLTE0LjA2MiAxNC4wNjYtMzMuMTQxIDIxLjk2OS01My4wMzEgMjEuOTY5elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBzdGFyID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTIwMCAxMjAwXCIsXG4gICAgW1xuICAgICAgXCJtMTA0NS4yIDQ1OS42LTI3MC01Ny42MDItMTM2LjgtMjM4LjhjLTE2LjgwMS0yOC44MDEtNTguODAxLTI4LjgwMS03NS42MDIgMGwtMTM4IDIzOC44LTI3MCA1Ny42MDJjLTMyLjM5OCA3LjE5OTItNDUuNjAyIDQ2LjgwMS0yNCA3MmwxODQuOCAyMDUuMi0yOC44MDEgMjczLjZjLTMuNjAxNiAzMy41OTggMzAgNTcuNTk4IDYxLjE5OSA0NC4zOThsMjUyLTExMS42IDI1MiAxMTEuNmMzMS4xOTkgMTMuMTk5IDY0LjgwMS0xMC44MDEgNjEuMTk5LTQ0LjM5OGwtMjguODAxLTI3My42IDE4NC44LTIwNS4yYzIxLjYwMi0yNS4yMDMgOS42MDE2LTY0LjgwMS0yNC03MnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgYm9tYiA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEyMDAgMTIwMFwiLFxuICAgIFtcbiAgICAgIFwibTcwMC44OCAzNjQuODh2LTk0LjMxMmMwLTEwLjUtOC40Mzc1LTE4Ljc1LTE4Ljc1LTE4Ljc1aC05OC44MTJjMS4zMTI1LTIyLjUgOS41NjI1LTk0LjY4OCA2MS41LTEyMy4xOSA1Mi42ODgtMjkuMDYyIDE0MC4yNS02LjE4NzUgMjUzLjMxIDY2LjM3NSA4LjYyNSA1LjYyNSAyMC4yNSAzLjE4NzUgMjUuODc1LTUuNjI1IDUuNjI1LTguNjI1IDMtMjAuMjUtNS42MjUtMjUuODc1LTEyNy4xMi04MS41NjItMjI1LjM4LTEwNC40NC0yOTEuOTQtNjcuNjg4LTcwLjMxMiAzOC44MTItNzkuNSAxMjkuNzUtODAuNjI1IDE1NmgtOTljLTEwLjMxMiAwLTE4Ljc1IDguMjUtMTguNzUgMTguNzV2OTIuNDM4YzAgMC41NjI1IDAgMS4zMTI1IDAuMTg3NSAxLjg3NS0xNTMuMTkgNTUuNjg4LTI2Mi42OSAyMDIuNjktMjYyLjY5IDM3NC44MSAwIDIxOS45NCAxNzguODggMzk4LjgxIDM5OC44MSAzOTguODFzMzk5LTE3OC44OCAzOTktMzk4LjgxYzAtMTcxLjk0LTEwOS41LTMxOC43NS0yNjIuNS0zNzQuODF6bS04Mi42ODggOTAuNzVjLTkuOTM3NS0zLjE4NzUtMTUuMzc1LTEzLjY4OC0xMi4zNzUtMjMuNjI1IDMuMTg3NS05Ljc1IDEzLjY4OC0xNS4zNzUgMjMuNDM4LTEyLjE4OCAyLjgxMjUgMC45Mzc1IDI3OSA5MC43NSAyMzcuNzUgMzg1LjMxLTEuMzEyNSA5LjM3NS05LjM3NSAxNi4xMjUtMTguNTYyIDE2LjEyNS0wLjkzNzUgMC0xLjY4NzUgMC0yLjYyNS0wLjE4NzUtMTAuMzEyLTEuMzEyNS0xNy40MzgtMTAuODc1LTE1LjkzOC0yMSAzNi45MzgtMjYzLjYyLTIwMS41Ni0zNDEuMjUtMjExLjY5LTM0NC40NHpcIixcbiAgICAgIFwibTg5My4yNSAyNDQuODgtMzAuNTYyIDI5LjI1Yy0zLjU2MjUgMy41NjI1LTguMjUgNS4yNS0xMi45MzggNS4yNS00Ljg3NSAwLTkuOTM3NS0xLjg3NS0xMy41LTUuODEyNS03LjMxMjUtNy41LTYuOTM3NS0xOS4zMTIgMC41NjI1LTI2LjQzOGwzMC41NjItMjkuMjVjNy41LTcuMzEyNSAxOS41LTYuOTM3NSAyNi42MjUgMC41NjI1czYuNzUgMTkuMzEyLTAuNzUgMjYuNDM4elwiLFxuICAgICAgXCJtOTU4LjMxIDgzLjI1LTYuNzUgNDEuNjI1Yy0xLjMxMjUgOS4zNzUtOS4zNzUgMTUuNzUtMTguMzc1IDE1Ljc1LTAuOTM3NSAwLTIuMDYyNSAwLTMtMC4xODc1LTEwLjMxMi0xLjY4NzUtMTcuMjUtMTEuMjUtMTUuNTYyLTIxLjM3NWw2Ljc1LTQxLjgxMmMxLjY4NzUtMTAuMzEyIDExLjQzOC0xNy4yNSAyMS41NjItMTUuNTYyczE3LjA2MiAxMS4yNSAxNS4zNzUgMjEuNTYyelwiLFxuICAgICAgXCJtMTAyOC40IDI0OS45NGMtMy41NjI1IDQuNS05IDYuOTM3NS0xNC42MjUgNi45Mzc1LTQuMTI1IDAtOC4yNS0xLjMxMjUtMTEuNjI1LTQuMTI1bC0zMy0yNi40MzhjLTguMDYyNS02LjU2MjUtOS4zNzUtMTguMzc1LTIuODEyNS0yNi40MzggNi4zNzUtOC4wNjI1IDE4LjE4OC05LjM3NSAyNi4yNS0yLjgxMjVsMzMgMjYuNDM4YzguMDYyNSA2LjU2MjUgOS4zNzUgMTguMzc1IDIuODEyNSAyNi40Mzh6XCIsXG4gICAgICBcIm0xMDIzLjYgMTU1LjA2LTM4LjQzOCAxNy44MTJjLTIuNDM3NSAxLjEyNS01LjI1IDEuNjg3NS03Ljg3NSAxLjY4NzUtNi45Mzc1IDAtMTMuODc1LTQuMTI1LTE3LjA2Mi0xMC44NzUtNC4zMTI1LTkuMzc1LTAuMTg3NS0yMC42MjUgOS4xODc1LTI0LjkzOGwzOC40MzgtMTcuODEyYzkuMzc1LTQuMzEyNSAyMC42MjUtMC4xODc1IDI0LjkzOCA5LjE4NzVzMC4xODc1IDIwLjYyNS05LjE4NzUgMjQuOTM4elwiLFxuICAgICAgXCJtOTU2LjYyIDI4NC4wNmMwLjc1IDEwLjMxMi03LjEyNSAxOS4zMTItMTcuNDM4IDE5Ljg3NS0wLjU2MjUgMC4xODc1LTAuOTM3NSAwLjE4NzUtMS4zMTI1IDAuMTg3NS05Ljc1IDAtMTgtNy42ODc1LTE4Ljc1LTE3LjYyNWwtMi44MTI1LTQyLjE4OGMtMC41NjI1LTEwLjMxMiA3LjEyNS0xOS4zMTIgMTcuNjI1LTE5Ljg3NSAxMC4zMTItMC43NSAxOS4xMjUgNy4xMjUgMTkuODc1IDE3LjQzOHpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgZXhwb3J0ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgNjcuNjcxIDY3LjY3MVwiLFxuICAgIFtcbiAgICAgIFwiTTUyLjk0NiwyMy4zNDhINDIuODM0djZoMTAuMTEyYzMuMDA3LDAsNS4zNCwxLjUzNiw1LjM0LDIuODU4djI2LjYwNmMwLDEuMzIyLTIuMzMzLDIuODU4LTUuMzQsMi44NThIMTQuNzI0ICAgYy0zLjAwNywwLTUuMzQtMS41MzYtNS4zNC0yLjg1OFYzMi4yMDdjMC0xLjMyMiwyLjMzMy0yLjg1OCw1LjM0LTIuODU4aDEwLjExdi02aC0xMC4xMWMtNi4zNTksMC0xMS4zNCwzLjg5MS0xMS4zNCw4Ljg1OHYyNi42MDYgICBjMCw0Ljk2OCw0Ljk4MSw4Ljg1OCwxMS4zNCw4Ljg1OGgzOC4yMjNjNi4zNTgsMCwxMS4zNC0zLjg5MSwxMS4zNC04Ljg1OFYzMi4yMDdDNjQuMjg2LDI3LjIzOSw1OS4zMDUsMjMuMzQ4LDUyLjk0NiwyMy4zNDh6XCIsXG4gICAgICBcIk0yNC45NTcsMTQuOTU1YzAuNzY4LDAsMS41MzUtMC4yOTMsMi4xMjEtMC44NzlsMy43NTYtMy43NTZ2MTMuMDI4djZ2MTEuNDk0YzAsMS42NTcsMS4zNDMsMywzLDNzMy0xLjM0MywzLTNWMjkuMzQ4di02ICAgVjEwLjExN2wzLjk1OSwzLjk1OWMwLjU4NiwwLjU4NiwxLjM1NCwwLjg3OSwyLjEyMSwwLjg3OXMxLjUzNS0wLjI5MywyLjEyMS0wLjg3OWMxLjE3Mi0xLjE3MSwxLjE3Mi0zLjA3MSwwLTQuMjQybC04Ljk1Ny04Ljk1NyAgIEMzNS40OTIsMC4yOTEsMzQuNzI1LDAsMzMuOTU4LDBjLTAuMDA4LDAtMC4wMTUsMC0wLjAyMywwcy0wLjAxNSwwLTAuMDIzLDBjLTAuNzY3LDAtMS41MzQsMC4yOTEtMi4xMiwwLjg3N2wtOC45NTcsOC45NTcgICBjLTEuMTcyLDEuMTcxLTEuMTcyLDMuMDcxLDAsNC4yNDJDMjMuNDIyLDE0LjY2MiwyNC4xODksMTQuOTU1LDI0Ljk1NywxNC45NTV6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGltcG9ydCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDYxIDYxXCIsXG4gICAgW1xuICAgICAgXCJNNDkuNTYxLDE2LjQ2NEgzOS40NXY2aDEwLjExMWMzLjAwOCwwLDUuMzQxLDEuNTM1LDUuMzQxLDIuODU3djI2LjYwN2MwLDEuMzIxLTIuMzMzLDIuODU4LTUuMzQxLDIuODU4SDExLjM0ICAgYy0zLjAwNywwLTUuMzQtMS41MzctNS4zNC0yLjg1OFYyNS4zMjRjMC0xLjMyMiwyLjMzMy0yLjg1OCw1LjM0LTIuODU4aDEwLjExdi02SDExLjM0QzQuOTgxLDE2LjQ2NiwwLDIwLjM1NywwLDI1LjMyNHYyNi42MDUgICBjMCw0Ljk2OCw0Ljk4MSw4Ljg1NywxMS4zNCw4Ljg1N2gzOC4yMjNjNi4zNTcsMCwxMS4zNC0zLjg5MSwxMS4zNC04Ljg1N1YyNS4zMjRDNjAuOTAyLDIwLjM1NSw1NS45MjEsMTYuNDY0LDQ5LjU2MSwxNi40NjR6XCIsXG4gICAgICBcIk0zOS41MjksMjkuMDA0Yy0wLjc2OCwwLTEuNTM1LDAuMjk0LTIuMTIxLDAuODhsLTMuNzU2LDMuNzU1VjIwLjYxMnYtNlYzLjExN2MwLTEuNjU2LTEuMzQzLTMtMy0zcy0zLDEuMzQ0LTMsM3YxMS40OTR2NiAgIHYxMy4yM2wtMy45NTktMy45NThjLTAuNTg2LTAuNTg2LTEuMzU0LTAuODgtMi4xMjEtMC44OHMtMS41MzUsMC4yOTQtMi4xMjEsMC44OGMtMS4xNzIsMS4xNy0xLjE3MiwzLjA3LDAsNC4yNDFsOC45NTcsOC45NTcgICBjMC41ODYsMC41ODYsMS4zNTQsMC44NzcsMi4xMiwwLjg3N2MwLjAwOCwwLDAuMDE2LDAsMC4wMjMsMHMwLjAxNSwwLDAuMDIyLDBjMC43NjgsMCwxLjUzNC0wLjI5MSwyLjEyLTAuODc3bDguOTU3LTguOTU3ICAgYzEuMTcyLTEuMTcxLDEuMTcyLTMuMDcxLDAtNC4yNDFDNDEuMDY0LDI5LjI5OCw0MC4yOTgsMjkuMDA0LDM5LjUyOSwyOS4wMDR6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IHVuZG8gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA1MTIgNTEyXCIsXG4gICAgW1xuICAgICAgXCJNMTI5LjcsNDYuNGwzNy4yLDM3LjdsLTY2LjYsNjcuMWgyNTQuNGM4Ni44LDAsMTU3LjIsNzAuNCwxNTcuMiwxNTcuMnMtNzAuNCwxNTcuMi0xNTcuMiwxNTcuMmgtNTIuNHYtNTIuNGg1Mi40IGM1Ny45LDAsMTA0LjgtNDYuOSwxMDQuOC0xMDQuOHMtNDYuOS0xMDQuOC0xMDQuOC0xMDQuOEgxMDAuNGw2Ni42LDY1LjhsLTM3LjIsMzYuOUwwLDE3Ny40TDEyOS43LDQ2LjR6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IHJlZG8gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA1MTIgNTEyXCIsXG4gICAgW1xuICAgICAgXCJNMzgyLjMsNDYuNGwtMzcuMiwzNy43bDY2LjYsNjcuMUgxNTcuMkM3MC40LDE1MS4yLDAsMjIxLjYsMCwzMDguNHM3MC40LDE1Ny4yLDE1Ny4yLDE1Ny4yaDUyLjR2LTUyLjRoLTUyLjQgYy01Ny45LDAtMTA0LjgtNDYuOS0xMDQuOC0xMDQuOHM0Ni45LTEwNC44LDEwNC44LTEwNC44aDI1NC40bC02Ni42LDY1LjhsMzYuOSwzNi45bDEzMC0xMjguOUwzODIuMyw0Ni40elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBjaXJjbGVfcXVlc3Rpb24gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIi0wLjUgLTAuNSAyNSAyNVwiLFxuICAgIFtcbiAgICAgIFwiTTEyIDJjNS41MTQgMCAxMCA0LjQ4NiAxMCAxMHMtNC40ODYgMTAtMTAgMTAtMTAtNC40ODYtMTAtMTAgNC40ODYtMTAgMTAtMTB6bTAtMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnM1LjM3MyAxMiAxMiAxMiAxMi01LjM3MyAxMi0xMi01LjM3My0xMi0xMi0xMnptMS4yNSAxN2MwIC42OS0uNTU5IDEuMjUtMS4yNSAxLjI1LS42ODkgMC0xLjI1LS41Ni0xLjI1LTEuMjVzLjU2MS0xLjI1IDEuMjUtMS4yNWMuNjkxIDAgMS4yNS41NiAxLjI1IDEuMjV6bTEuMzkzLTkuOTk4Yy0uNjA4LS42MTYtMS41MTUtLjk1NS0yLjU1MS0uOTU1LTIuMTggMC0zLjU5IDEuNTUtMy41OSAzLjk1aDIuMDExYzAtMS40ODYuODI5LTIuMDEzIDEuNTM4LTIuMDEzLjYzNCAwIDEuMzA3LjQyMSAxLjM2NCAxLjIyNi4wNjIuODQ3LS4zOSAxLjI3Ny0uOTYyIDEuODIxLTEuNDEyIDEuMzQzLTEuNDM4IDEuOTkzLTEuNDMyIDMuNDY4aDIuMDA1Yy0uMDEzLS42NjQuMDMtMS4yMDMuOTM1LTIuMTc4LjY3Ny0uNzMgMS41MTktMS42MzggMS41MzYtMy4wMjIuMDExLS45MjQtLjI4NC0xLjcxOS0uODU0LTIuMjk3elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBnaXRodWIgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIi0wLjUgLTAuNSAyNSAyNVwiLFxuICAgIFtcbiAgICAgIFwiTTEyIDBjLTYuNjI2IDAtMTIgNS4zNzMtMTIgMTIgMCA1LjMwMiAzLjQzOCA5LjggOC4yMDcgMTEuMzg3LjU5OS4xMTEuNzkzLS4yNjEuNzkzLS41Nzd2LTIuMjM0Yy0zLjMzOC43MjYtNC4wMzMtMS40MTYtNC4wMzMtMS40MTYtLjU0Ni0xLjM4Ny0xLjMzMy0xLjc1Ni0xLjMzMy0xLjc1Ni0xLjA4OS0uNzQ1LjA4My0uNzI5LjA4My0uNzI5IDEuMjA1LjA4NCAxLjgzOSAxLjIzNyAxLjgzOSAxLjIzNyAxLjA3IDEuODM0IDIuODA3IDEuMzA0IDMuNDkyLjk5Ny4xMDctLjc3NS40MTgtMS4zMDUuNzYyLTEuNjA0LTIuNjY1LS4zMDUtNS40NjctMS4zMzQtNS40NjctNS45MzEgMC0xLjMxMS40NjktMi4zODEgMS4yMzYtMy4yMjEtLjEyNC0uMzAzLS41MzUtMS41MjQuMTE3LTMuMTc2IDAgMCAxLjAwOC0uMzIyIDMuMzAxIDEuMjMuOTU3LS4yNjYgMS45ODMtLjM5OSAzLjAwMy0uNDA0IDEuMDIuMDA1IDIuMDQ3LjEzOCAzLjAwNi40MDQgMi4yOTEtMS41NTIgMy4yOTctMS4yMyAzLjI5Ny0xLjIzLjY1MyAxLjY1My4yNDIgMi44NzQuMTE4IDMuMTc2Ljc3Ljg0IDEuMjM1IDEuOTExIDEuMjM1IDMuMjIxIDAgNC42MDktMi44MDcgNS42MjQtNS40NzkgNS45MjEuNDMuMzcyLjgyMyAxLjEwMi44MjMgMi4yMjJ2My4yOTNjMCAuMzE5LjE5Mi42OTQuODAxLjU3NiA0Ljc2NS0xLjU4OSA4LjE5OS02LjA4NiA4LjE5OS0xMS4zODYgMC02LjYyNy01LjM3My0xMi0xMi0xMnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgYmFjayA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDMzMCAzMzBcIixcbiAgICBbXG4gICAgICBcIk0yNTAuNjA2LDE1NC4zODlsLTE1MC0xNDkuOTk2Yy01Ljg1Ny01Ljg1OC0xNS4zNTUtNS44NTgtMjEuMjEzLDAuMDAxICBjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTNsMTM5LjM5MywxMzkuMzlMNzkuMzkzLDMwNC4zOTRjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTMgIEM4Mi4zMjIsMzI4LjUzNiw4Ni4xNjEsMzMwLDkwLDMzMHM3LjY3OC0xLjQ2NCwxMC42MDctNC4zOTRsMTQ5Ljk5OS0xNTAuMDA0YzIuODE0LTIuODEzLDQuMzk0LTYuNjI4LDQuMzk0LTEwLjYwNiAgQzI1NSwxNjEuMDE4LDI1My40MiwxNTcuMjAyLDI1MC42MDYsMTU0LjM4OXpcIixcbiAgICBdLFxuICAgIH50cmFuc2Zvcm09XCJzY2FsZSgtMC43NSwgMC43NSkgdHJhbnNsYXRlKC0zMzAsIDUwKVwiLFxuICApO1xuXG5sZXQgZm9yd2FyZCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDMzMCAzMzBcIixcbiAgICBbXG4gICAgICBcIk0yNTAuNjA2LDE1NC4zODlsLTE1MC0xNDkuOTk2Yy01Ljg1Ny01Ljg1OC0xNS4zNTUtNS44NTgtMjEuMjEzLDAuMDAxICBjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTNsMTM5LjM5MywxMzkuMzlMNzkuMzkzLDMwNC4zOTRjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTMgIEM4Mi4zMjIsMzI4LjUzNiw4Ni4xNjEsMzMwLDkwLDMzMHM3LjY3OC0xLjQ2NCwxMC42MDctNC4zOTRsMTQ5Ljk5OS0xNTAuMDA0YzIuODE0LTIuODEzLDQuMzk0LTYuNjI4LDQuMzk0LTEwLjYwNiAgQzI1NSwxNjEuMDE4LDI1My40MiwxNTcuMjAyLDI1MC42MDYsMTU0LjM4OXpcIixcbiAgICBdLFxuICAgIH50cmFuc2Zvcm09XCJzY2FsZSgwLjc1LCAwLjc1KSB0cmFuc2xhdGUoMCwgNTApXCIsXG4gICk7XG5cbmxldCBleWUgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA0OCA0OFwiLFxuICAgIFtcbiAgICAgIFwiTTI0IDljLTEwIDAtMTguNTQgNi4yMi0yMiAxNSAzLjQ2IDguNzggMTIgMTUgMjIgMTUgMTAuMDEgMCAxOC41NC02LjIyIDIyLTE1LTMuNDYtOC43OC0xMS45OS0xNS0yMi0xNXptMCAyNWMtNS41MiAwLTEwLTQuNDgtMTAtMTBzNC40OC0xMCAxMC0xMCAxMCA0LjQ4IDEwIDEwLTQuNDggMTAtMTAgMTB6bTAtMTZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCB0cmFzaCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDI0IDI0XCIsXG4gICAgW1xuICAgICAgXCJNMyA2djE4aDE4di0xOGgtMTh6bTUgMTRjMCAuNTUyLS40NDggMS0xIDFzLTEtLjQ0OC0xLTF2LTEwYzAtLjU1Mi40NDgtMSAxLTFzMSAuNDQ4IDEgMXYxMHptNSAwYzAgLjU1Mi0uNDQ4IDEtMSAxcy0xLS40NDgtMS0xdi0xMGMwLS41NTIuNDQ4LTEgMS0xczEgLjQ0OCAxIDF2MTB6bTUgMGMwIC41NTItLjQ0OCAxLTEgMXMtMS0uNDQ4LTEtMXYtMTBjMC0uNTUyLjQ0OC0xIDEtMXMxIC40NDggMSAxdjEwem00LTE4djJoLTIwdi0yaDUuNzExYy45IDAgMS42MzEtMS4wOTkgMS42MzEtMmg1LjMxNWMwIC45MDEuNzMgMiAxLjYzMSAyaDUuNzEyelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBoYXplbG51dCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMTAwIDAgNTAwIDUwMFwiLFxuICAgIFtcbiAgICAgIFwibTQ5OS44NCAxMzAuNTFjLTkzLjM2My05My4zNjMtMjA3LjU5LTEyOS4wNi0zMDAuNjUtMzYuMDUxLTk1LjA3IDk1LjExMy0xMTYuMDcgMjEzLjE1LTYyLjU2MiAzNTAuODMgMy4xNDg0IDguMDUwOC0wLjg3NSAyOC40MzggOS41MzkxIDM4Ljg5NSAxMC40MTQgMTAuNDU3IDI5LjgzNiA1LjQ2ODggMzYuNzA3IDguMDA3OCAxMjguODQgNDcuNTEyIDI1NC44IDM3LjE4OCAzNTMuMDItNjEuMjUgOTMuMDA4LTkyLjc5NyA1Ny4zNTItMjA3LjAzLTM2LjA1NS0zMDAuNDN6bS0xMi4zODMgMTIuMzgzYzMyLjI4OSAzMi4yODkgODguNTA4IDk5LjU3NCA4NS4wOTQgMTczLjY0LTc2LjIxMS0zMy4zNC04NS45MjItODUuMTQxLTE0NC43Ny0xNDMuOTgtMzUuNDgtMzUuNDgtMTAzLjgyLTU4LjA1NS0xMTYuMDctMTE0LjYyIDY2LjAyLTQuMTk5MiAxMjkuMjQgMzguMzI0IDE3NS43NCA4NC45NjF6bTM2LjA1MSAyNzUuODljLTg3LjUgODcuNS0xOTkuOTggMTA2LjYyLTMzNC41NSA1Ni44NzUtOS4xODc1LTMuMzY3Mi0yNy4zNDQtMS4wNTA4LTMwLjYyNS0zLjkzNzUtMy44OTQ1LTMuOTM3NS0xLjU3NDItMjIuNDg4LTUuNjAxNi0zMi44NTUtNTEuNTM5LTEzMi40OC0zMi4zNzUtMjQxLjExIDU4LjYyNS0zMzIuMTEgMjUuNDE4LTI1LjM3NSA1My4xMTMtNDAuOTQ5IDgyLjc3My00Ni42OCAxMy40MzQgNjYuMDEyIDg3LjE5NSA5MC43NzcgMTIxLjUgMTI0Ljg2IDU4LjQ0OSA1OC42NzIgNjkuMDgyIDExNC4yMyAxNTQuODggMTQ5LjcxLTUuMDc0MiAyNy45MS0xOS4yNSA1Ni40MzgtNDYuOTg4IDg0LjEyOXpcIixcbiAgICAgIFwibTI3NC4wMSAzNzQuNzIgMTA4LjExLTEwOC4xMWMxLjc2OTUtMS42MTMzIDIuODA0Ny0zLjg3ODkgMi44NTk0LTYuMjczNCAwLjA1NDY4OC0yLjM5NDUtMC44NzUtNC43MDctMi41NzAzLTYuMzk4NC0xLjY5NTMtMS42OTE0LTQuMDExNy0yLjYxMzMtNi40MDYyLTIuNTUwOC0yLjM5NDUgMC4wNjY0MDYtNC42NjAyIDEuMTA1NS02LjI2NTYgMi44ODI4bC0xMDguMTEgMTA4LjA2Yy0zLjQxOCAzLjQyMTktMy40MTggOC45NjQ4IDAgMTIuMzgzczguOTYwOSAzLjQxOCAxMi4zODMgMHpcIixcbiAgICAgIFwibTQ0NS40MiAzOTkuNjFjLTAuNTIzNDQgMC4zOTQ1My01Mi45MzggNDAuNTU1LTExNS41NCA0Ni4yNDItNC44MzIgMC40Mzc1LTguMzk4NCA0LjcwNy03Ljk2MDkgOS41MzkxIDAuNDMzNTkgNC44MzIgNC43MDMxIDguMzk4NCA5LjUzNTIgNy45NjA5IDY3Ljg1NS02LjE2OCAxMjIuNS00OC4xMjUgMTI0LjY5LTQ5LjgzMiAxLjkwNjItMS4zOTQ1IDMuMTY4LTMuNSAzLjQ5NjEtNS44Mzk4IDAuMzI4MTMtMi4zMzk4LTAuMzA0NjktNC43MTA5LTEuNzUtNi41NzgxLTEuNDQ5Mi0xLjg2NzItMy41ODk4LTMuMDcwMy01LjkzNzUtMy4zMzU5LTIuMzQzOC0wLjI2MTcyLTQuNjk5MiAwLjQzMzU5LTYuNTI3MyAxLjkyOTd6XCIsXG4gICAgICBcIm0zNDQuOTMgNDEwLjY0YzIuMjYxNyA0LjI2MTcgNy41NDY5IDUuODgyOCAxMS44MTIgMy42MzI4IDM0Ljc2Mi0xOC40MzQgNjguMDE2LTM5LjU4NiA5OS40NDEtNjMuMjYyIDMuODA4Ni0yLjk4NDQgNC40NzI3LTguNDg4MyAxLjQ4ODMtMTIuMjk3LTIuOTg0NC0zLjgwNDctOC40ODgzLTQuNDY4OC0xMi4yOTMtMS40ODQ0LTMwLjY0OCAyMy4wMDQtNjMuMDMxIDQzLjU5OC05Ni44NjMgNjEuNTk4LTQuMjQyMiAyLjI4MTItNS44NDc3IDcuNTU4Ni0zLjU4NTkgMTEuODEyelwiLFxuICAgICAgXCJtMzUwIDM1Ny42MWMtMi44NDM4LTMuODk4NC04LjMwMDgtNC43NTc4LTEyLjIwNy0xLjkyNTgtMC41MjM0NCAwLjM1MTU2LTUwLjE4IDM2LjQ0NS0xMDUuNjEgNzEuMDk0LTIuMDM5MSAxLjE5NTMtMy41MDc4IDMuMTY0MS00LjA3NDIgNS40NjA5LTAuNTYyNSAyLjI5NjktMC4xNzU3OCA0LjcyMjcgMS4wNzgxIDYuNzMwNSAxLjI1MzkgMi4wMDM5IDMuMjY1NiAzLjQxNDEgNS41NzgxIDMuOTE0MSAyLjMxMjUgMC40OTYwOSA0LjcyNjYgMC4wMzkwNjIgNi42OTUzLTEuMjczNCA1Ni4wNDMtMzQuNzM4IDEwNi03MS40MDIgMTA2LjUzLTcxLjc5MyAzLjkyNTgtMi44MTY0IDQuODI0Mi04LjI4MTIgMi4wMTE3LTEyLjIwN3pcIixcbiAgICBdLFxuICApO1xuXG5sZXQgbWFnbmlmeSA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDI0IDI0IFwiLFxuICAgIFtcbiAgICAgIFwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBjaGVzdCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEwMCAxMjVcIixcbiAgICBbXG4gICAgICBcIk01Niw1NHYtNGMwLTEuMSwwLjktMiwyLTJzMiwwLjksMiwydjRjMCwxLjEtMC45LDItMiwyUzU2LDU1LjEsNTYsNTR6IE05NCwyOHYxMnYzNmMwLDMuMy0yLjcsNi02LDZIMTJjLTMuMywwLTYtMi43LTYtNiAgVjQwVjI4YzAtNS41LDQuNS0xMCwxMC0xMGg2OEM4OS41LDE4LDk0LDIyLjUsOTQsMjh6IE04NCwyMkgyNGMxLjMsMS43LDIsMy43LDIsNnYxMGg2NFYyOEM5MCwyNC43LDg3LjMsMjIsODQsMjJ6IE0xMCwzOGgxMlYyOCAgYzAtMy4zLTIuNy02LTYtNnMtNiwyLjctNiw2VjM4eiBNMTIsNzhoMTBWNDJIMTB2MzRDMTAsNzcuMSwxMC45LDc4LDEyLDc4eiBNOTAsNDJIMjZ2MzZoNjJjMS4xLDAsMi0wLjksMi0yVjQyelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBzcHJvdXQgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMDAgMTI1XCIsXG4gICAgW1xuICAgICAgXCJNNDguOCw2OC4yYy0yLDAuOC0xLjYsMi4yLTIuMSwyLjVjLTAuOCwwLjMtMC4xLTEtMi4xLTEuNmMtNC41LTEuNC00LDQuMy02LjUsNC4yYy0xLjctMC4xLTEuOC0wLjYtMy40LTAuNCAgYy0xLjYsMC4zLTEuMSwyLjEtMi45LDIuM2MtMS4xLDAuMS0wLjcsMS4yLTIuNCwxYy0xLjQtMC4yLTIsMS42LTIuMSwyLjdjLTAuMSwwLjgtMC4zLDEuNi0xLjYsMi4zYy0xLjIsMC43LTMuMywwLjItNC40LDEuNyAgYy0xLjYsMi0xLjcsNS4xLTEuNyw1LjFoNjAuN2MwLDAtMC4xLTIuMy0yLjYtMy45Yy0wLjctMC40LDAuMS0wLjQsMC40LTJjMC4xLTAuNiwwLTEuNS0wLjctMi42Yy0wLjktMS4zLTIuNy0wLjktMy40LTAuNyAgYzAuMi0wLjksMC4yLTItMS4yLTIuOWMtMS0wLjctMS4zLTAuMy0xLjktMC40Yy0wLjctMC4xLTAuMy0wLjgtMS0xLjJjLTEuOC0xLjEtMC41LTIuMS0zLjMtMy4yYy0xLjctMC43LTItMC42LTUuNi0wLjYgIGMtMS40LDAtMS43LTIuMy0zLjYtMS44Yy0xLjksMC42LTEuMS0wLjUtMi4yLTEuNmMtMC4zLTAuMy0wLjktMC41LTEuNS0wLjVjLTAuMS0xMC42LTAuMS0yNC41LDAuMy0yNy4yYzAuNi00LjUsNS43LTkuOCwxMy4xLTEwLjYgIGMtNyw1LjItMTAuMiw2LjctMTAuOCw5LjljLTAuNiwzLjIsNS4xLDIuNSw5LjYsMGM0LjUtMi41LDEyLjEtMTQuNiwxMi40LTE5Yy02LjQtMS42LTIyLDQuMS0yNy4xLDE2LjZDNDkuNiwyNi42LDQ3LjcsMTIsMjAuMywxMiAgYy0wLjEsMi42LDAuNiwyLjksMS45LDYuMWMxLjMsMy4yLDkuOSwxOC4xLDIwLjcsMTcuNWMxLjYtMC4xLTAuMy0zLjgtMi45LTYuOGMwLDAtNi40LTUuOS04LjMtNy41YzYuNCwyLjUsMTYuMiw5LjksMTcsMTUuMyAgYzAuNSwzLjUsMC40LDIwLjIsMC4yLDMxLjdDNDksNjguMiw0OC45LDY4LjIsNDguOCw2OC4yelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCB4ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIyOTUwIDEwMDAgNDUwIDQ1MFwiLFxuICAgIFtcbiAgICAgIFwiTTMzODIuODQgNzg0LjMgMzQ2Mi40MyA4NjIuODI5IDM1NDAuOTYgNzgzLjIzOCAzNjAxLjIzIDg0Mi43MDQgMzUyMi43IDkyMi4yOTUgMzYwMi4yOSAxMDAwLjgyIDM1NDIuODIgMTA2MS4wOSAzNDYzLjIzIDk4Mi41NjYgMzM4NC43IDEwNjIuMTYgMzMyNC40MyAxMDAyLjY5IDM0MDIuOTYgOTIzLjEgMzMyMy4zNyA4NDQuNTdaXCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGJhY2twYWNrID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTAwMCAxMDAwXCIsXG4gICAgW1xuICAgICAgXCJtOTAyLjA5IDc2OS41NWMwLjMzNTk0LTM1LjE0OCAwLjIwMzEyLTExMi4yOS01LjkxNDEtMTg4LjUyIDAuNTM5MDYgMzIuMTI1IDEuMzc4OSA2MS41MjMgMi40NzI3IDc2LjkwNiAwLjYwOTM4IDguODI0MiAxLjk1MzEgNTUuMDIzIDMuNDQxNCAxMTEuNjF6XCIsXG4gICAgICBcIm02MDguMTQgMTA4LjQ1YzEuMDQzLTI0LjY5NS0wLjI4OTA2LTUxLjE0NSAyMC42NDEtNDkuNjMzIDEwLjA0MyAwLjczMDQ3IDI3LjM0OCAzLjI4OTEgNDguNzU4IDcuNTcwMyAyMy43MzQgNC43NTM5IDIwLjM4NyAxMzMuNDUgMjAuMzg3IDEzMy40NWw4Ni4wNTEgMzMuNDU3YzIuODMyLTkzLjEzMy0yMC40NDktMjAxLjI4LTQzLjY4LTIwNy45LTM4LjkzLTExLjEwMi05Ni4wNTktMzQuMjQ2LTE1Mi44My0yMS44MjgtMzcuOTM0IDguMjkzLTQ4LjA4NiAxNDcuNTUtNDguMDg2IDE0Ny41NWw2Ni4zODMgMTcuMzg3YzAuMDAzOTA2IDAgMC42OTkyMi0yMC41NDMgMi4zNzg5LTYwLjA1OXpcIixcbiAgICAgIFwibTIwNy43NiA1NzkuMmMxMy45OCA1LjE3MTkgMzcuMDIgMTIuNzcgNjQuMjk3IDIxLjMyNCAyMC4zODctNTYuNDYxIDU0Ljk2MS05OS41MjcgNTQuOTYxLTk5LjUyN3M3Ljk4MDUtMjAuOTE0IDQ4LjA3LTEyLjQ5MmM0MC4wOTQgOC40MTAyIDQxLjk2NSAyNi43MTEgNDEuOTY1IDI2LjcxMXMtMjUuOTY5IDQyLjA5OC01MS4yMTUgOTguODMyYy0xLjU1ODYgMy41MDM5LTMuNjEzMyA3Ljg1OTQtNS4xNzE5IDEzLjIyMyA2My41NjIgMTguNTI3IDEyNC45OCAzNC45MzQgMTQyLjY0IDM2LjUzOSAzNC43NjYgMy4xNzk3IDEyMi4wOSA2Ljk5NjEgMTM4LjY4LTc3LjAzOSAxNi4zNjctODIuOTM0IDMyLjU2Ni0xMzMuNTIgNDYuMzY3LTE2NS4xMSAyLjc2MTctNi44OTg0IDUuMjQyMi0xMi42MTMgNy4wNjY0LTE2LjczOCAzLjc1NzgtOC40OTYxIDE1LjE5MS0yNS41MzUgMzEuODI0LTQyLjIzOHYtMC4wMjM0MzhjMC4wNDY4NzUtMC4xMjEwOSAwLjEyMTA5LTAuMTc5NjkgMC4yMTQ4NC0wLjIwMzEyIDIyLjIyMy0yMi4xOTkgNTMuNjY0LTQzLjcwMyA4OC43NjYtNDMuNTcgMS44NDc3IDAgNC4xMDU1IDAuMjI2NTYgNi42MTMzIDAuNjEzMjgtMjAuNjUyLTIyLjk2OS00NC4xODQtNDIuNTI3LTY5LjIzOC01Mi4xODgtNS42OTkyLTIuMTk1My0yMTIuNjItODMuOTc3LTI3NC40NC03NS4yMjctMS43NzczIDAuMjUzOTEtMy40MzM2IDAuNDkyMTktNS4wMjczIDAuNzE4NzUgMy0wLjQzMzU5IDUuMDI3My0wLjcxODc1IDUuMDI3My0wLjcxODc1LTAuMDAzOTA3LTAuMDAzOTA2LTE0MS43MyAzLjUxMTctMjM1LjQ1IDk3LjE1Ni00OC45NjEgNDguOTEtOTEuOTQ1IDEzNi42Ni0xMTguOTMgMjIwLjk3LTAuMzQ3NjYgMjEuMzk4IDI2Ljk1MyA0OC4yNzcgODIuOTggNjguOTg4elwiLFxuICAgICAgXCJtNDg0LjM1IDcyNi42NGMtMjcuODYzLTUuMTEzMy03OS42MjEtMTkuMjk3LTEzNC43OS0zNS42MDUtOC4zOTg0IDMzLjIyNy0xLjI2MTcgOTAuMzAxLTEuMjYxNyA5MC4zMDFzLTEwLjg0OCAyNS44OTUtNTMuNjA1IDE2LjQzYy0zNi40MzQtOC4wODk4LTM1LjQ5Ni0zNC4zNzktMzUuNDk2LTM0LjM3OXMtOS4zMTI1LTUzLjM1Mi0xLjEwNTUtMTAwLjMxYy01Mi41MTItMTYuNTM1LTk3LjEyOS0zMS4zNzktMTEzLjU0LTM3LjY4LTE5Ljc1NC03LjU1ODYtMzMuOTk2LTE4LjA5OC00NC4yNTgtMjkuODY3LTAuNzU3ODEgNC42NjgtMS40Mjk3IDIzLjUyLTIuMDYyNSAyOC4wMDgtMzcuMjE5IDI2NS4xIDQwLjAzNSAzNzkuMjcgNDUuNTA4IDQwMy4zOCA3LjM1NTUgMzIuNDEgMTQ4LjU3IDEwMC4zNyAyODQuODkgMTUwLjE2IDc5LjA3OCAyOC44ODMgMTY3LjM2IDIzLjI4MSAyMDIuNDMgMjAuNzYybDIuNTY2NC0wLjE0NDUzYzUuNTc4MS0xMDIuNSAyMC43NzMtMzY5LjMyIDI4LjIyMy01MzIuNjEtMTEuODA1IDU5Ljk1My0xMTAuNzkgNzMuNzc3LTE3Ny41IDYxLjU2MnpcIixcbiAgICAgIFwibTkwMi4wOSA3NjkuNTVjLTEuNDg4My01Ni41OTQtMi44MjAzLTEwMi43Ny0zLjQ0NTMtMTExLjY0LTEuMDkzOC0xNS4zNTktMS45MzM2LTQ0Ljc2Mi0yLjQ3MjctNzYuODk1LTUuNDYwOS02Ny44NzEtMjIuOTU3LTE0MC43Mi0zNy45MjItMTc4LjU5LTI1LjE1Mi02My43NDItOTguMTk1IDE2LjIxMS0xMTguODIgNjYuNTUxLTIxLjM1OSA1Mi4xMjktNDEuNTc4IDY1My4wMy00My41NDcgNzEyLjYgNTEtMTMuMjg1IDEyNC4wNS0zMi4zNTIgMTMzLjAxLTQ2LjQwMiAxOC45NzMtMjkuNzExIDI5LjI1OC01OC40NzcgMzMuOTk2LTgyLjk2OSAzLjE0NDUtMTYuMzA5IDQ1LjMyNC0zMS41NTkgNDUuMzI0LTMxLjU1OXMtMi45ODgzLTEyOS42LTUuNjg3NS0yMzQuMTlsLTAuNzQyMTkgMi43NjE3YzAgMC4wMTk1MzEgMC4yMDMxMi03LjE5MTQgMC4zMTI1LTE5LjY3MnpcIixcbiAgICAgIFwibTEwODkuMSA1MDguMjVzLTEwLjgxMi0xMjguNzktMTMuMjYyLTE1My44MmMtNS45Mjk3LTYwLjQ0NS02MC40NTctMjU0Ljg0LTI0Ni4zMS0xMDUuOWw0OS4yMzQgNTMuNzExczEyNS45NS0xMTMuMTggMTMwLjcgMTU2LjVjMC4zOTQ1MyAyMi44MjQgMS45MDYyIDU0LjcwNyAxNS42MzcgMjQ2LjU5IDE1LjE5MSAyMTIuMTUtNjcuNzc3IDIxMy4zMi02Ny43NzcgMjEzLjMybDMuNzQyMiA5MC4yMTVzMzAuODE2LTguMDYyNSA2Mi42NDEtMjEuNDU3YzQ1LjAzNS0xOC45NzMgODguMTg4LTk4LjM3NSA4OC4xODgtMjE0Ljc3LTAuMDM5MDYyLTQ2LjA1MS0yMi43OTMtMjY0LjQxLTIyLjc5My0yNjQuNDF6XCIsXG4gICAgICBcIm00MzguMjUgMTQ4LjE4IDQxLjA5LTYuMzEyNXYtMzQuNzczbDcuOTA2Mi0yOC40NDFzLTM3Ljk0NSAxNy4zODctNDguOTk2IDM0Ljc2NmMtMTEuMDYyIDE3LjM4Ny0xNS44MTYgMjYuODY3LTE1LjgxNiAzNC43NjYgMCA3LjkwNjIgMTUuODE2LTAuMDAzOTA3IDE1LjgxNi0wLjAwMzkwN3pcIixcbiAgICBdLFxuICApO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+aW5qZWN0OiBTZXR0aW5ncy5VcGRhdGUudCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MuRXZhbHVhdGlvbi50LFxuICAgICkgPT4ge1xuICBsZXQgbW9kYWwgPSBkaXYofmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInNldHRpbmdzLW1vZGFsXCIpXSkpO1xuICBsZXQgc2V0dGluZyA9IChpY29uLCBuYW1lLCBjdXJyZW50LCBhY3Rpb246IFNldHRpbmdzLlVwZGF0ZS50KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzZXR0aW5ncy10b2dnbGVcIildKSxcbiAgICAgIFtcbiAgICAgICAgV2lkZ2V0cy50b2dnbGUofnRvb2x0aXA9bmFtZSwgaWNvbiwgY3VycmVudCwgXyA9PiBpbmplY3QoYWN0aW9uKSksXG4gICAgICAgIHRleHQobmFtZSksXG4gICAgICBdLFxuICAgICk7XG4gIFtcbiAgICBtb2RhbChbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzZXR0aW5ncy1tb2RhbC10b3BcIildKSxcbiAgICAgICAgW1dpZGdldHMuYnV0dG9uKEljb25zLngsIF8gPT4gaW5qZWN0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpXSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcImhcIixcbiAgICAgICAgXCJzaG93IGZ1bGwgc3RlcCB0cmFjZVwiLFxuICAgICAgICBzZXR0aW5ncy5zdGVwcGVyX2hpc3RvcnksXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd1JlY29yZCksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCJ8XCIsXG4gICAgICAgIFwic2hvdyBjYXNlIGNsYXVzZXNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19jYXNlX2NsYXVzZXMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc2VDbGF1c2VzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIs67XCIsXG4gICAgICAgIFwic2hvdyBmdW5jdGlvbiBib2RpZXNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19mbl9ib2RpZXMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0ZuQm9kaWVzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcInhcIixcbiAgICAgICAgXCJzaG93IGZpeHBvaW50c1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2ZpeHBvaW50cyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93Rml4cG9pbnRzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBVbmljb2RlLmNhc3RBcnJvd1N5bSxcbiAgICAgICAgXCJzaG93IGNhc3RzXCIsXG4gICAgICAgIHNldHRpbmdzLnNob3dfY2FzdHMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc3RzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIvCflI1cIixcbiAgICAgICAgXCJzaG93IGxvb2t1cCBzdGVwc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2xvb2t1cF9zdGVwcyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93TG9va3VwcyksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCLij6/vuI9cIixcbiAgICAgICAgXCJzaG93IHN0ZXBwZXIgZmlsdGVyc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X3N0ZXBwZXJfZmlsdGVycyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93RmlsdGVycyksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCLwn6SrXCIsXG4gICAgICAgIFwic2hvdyBoaWRkZW4gc3RlcHNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19oaWRkZW5fc3RlcHMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0hpZGRlblN0ZXBzKSxcbiAgICAgICksXG4gICAgXSksXG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jbGFzc18oXCJtb2RhbC1iYWNrXCIpLFxuICAgICAgICAgIEF0dHIub25fbW91c2Vkb3duKF8gPT4gaW5qZWN0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpLFxuICAgICAgICBdKSxcbiAgICAgIFtdLFxuICAgICksXG4gIF07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IHNlcV9iYXNpY19leHBfZXggPSB7XG4gIHN1Yl9pZDogU2VxQmFzaWMsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxOyAyXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEsIHdoaWNoIGlzIGlnbm9yZWQuIFRoZW4gdGhlIHJpZ2h0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIHRvIDIuXCIsXG59O1xuLy8gVE9ETyBhcmUgdGhlc2UgcmVhbGx5IHRoZSBjb3JyZWN0IG1lc3NhZ2VzL2V4cGxhbmF0aW9uc1xubGV0IHNlcV90ZXN0X2V4cF9leCA9IHtcbiAgc3ViX2lkOiBTZXFUZXN0LFxuICB0ZXJtOiBta19leGFtcGxlKFwidGVzdCB0cnVlIGVuZDsgM1wiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhbmQgcmVjb3JkZWQgYXMgYSBwYXNzaW5nIHRlc3QgYmVjYXVzZSB0aGUgYm9keSBvZiB0aGUgdGVzdCBpcyB0cnVlLiBUaGVuIHRoZSByaWdodCBleHByZXNzaW9uIGlzIGV2YWxhdXRlcyB0byAzLlwiLFxufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgc2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZXhwMV9pZDogSWQudCwgfmV4cDJfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cDEpLCBleHAxX2lkKSxcbiAgKFBpZWNlLmlkKF9leHAyKSwgZXhwMl9pZCksXG5dO1xubGV0IHNlcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFtsZWZ0IGV4cHJlc3Npb25dKCVzKSBpcyBldmFsdWF0ZWQsIHRoZW4gdGhlIFtyaWdodCBleHByZXNzaW9uXSglcykgaXMgZXZhbHVhdGVkLlwiO1xuICB7XG4gICAgaWQ6IFNlcUV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzZXEoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtzZXFfYmFzaWNfZXhwX2V4LCBzZXFfdGVzdF9leHBfZXhdLFxuICB9O1xufTtcblxubGV0IHNlcXM6IGdyb3VwID0ge2lkOiBTZXFFeHAsIGZvcm1zOiBbc2VxX2V4cF19O1xuIiwibGV0IGZpbGxlZF9zbGlkZXMgPSBbXTtcblxubGV0IGVtcHR5OiBTY3JhdGNoU2xpZGUucGVyc2lzdGVudF9zdGF0ZSA9IHtcbiAgemlwcGVyOiBcIigoc2VsZWN0aW9uKChmb2N1cyBMZWZ0KShjb250ZW50KCkpKSkoYmFja3BhY2soKSkocmVsYXRpdmVzKChzaWJsaW5ncygoKSgoR3JvdXQoKGlkIDApKHNoYXBlIENvbnZleCkpKSkpKShhbmNlc3RvcnMoKSkpKShjYXJldCBPdXRlcikpXCIsXG4gIGJhY2t1cF90ZXh0OiBcIlwiLFxufTtcblxubGV0IG51bV9lbXB0eSA9IDg7XG5cbmxldCBpbml0X2RhdGEgPSBmaWxsZWRfc2xpZGVzIEAgTGlzdC5pbml0KG51bV9lbXB0eSwgXyA9PiBlbXB0eSk7XG5cbmFzc2VydChMaXN0Lmxlbmd0aChpbml0X2RhdGEpID4gMCk7XG5cbmxldCBpbml0ID0gKCkgPT4gKDAsIGluaXRfZGF0YSB8PiBMaXN0Lm1hcChTY3JhdGNoU2xpZGUudW5wZXJzaXN0KSk7XG5cbmxldCBpbml0X250aCA9IG4gPT4ge1xuICBsZXQgZGF0YSA9IExpc3QubnRoKGluaXRfZGF0YSwgbik7XG4gIFNjcmF0Y2hTbGlkZS51bnBlcnNpc3QoZGF0YSk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG5sZXQgbmFycmF0aXZlX2NlbGwgPSAoY29udGVudDogTm9kZS50KSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5jbGFzc18oXCJjZWxsXCIpLFxuICAgIFtkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJjZWxsLWNoYXB0ZXJcIiksIFtjb250ZW50XSldLFxuICApO1xuXG5sZXQgc2ltcGxlX2NlbGxfaXRlbSA9IChjb250ZW50OiBsaXN0KE5vZGUudCkpID0+XG4gIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCJdKSwgY29udGVudCk7XG5cbmxldCBjYXB0aW9uID0gKH5yZXN0OiBvcHRpb24oc3RyaW5nKT0/LCBib2xkZWQ6IHN0cmluZykgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc2VzKFtcImNlbGwtY2FwdGlvblwiXSldKSxcbiAgICBbc3Ryb25nKFt0ZXh0KGJvbGRlZCldKV0gQCAocmVzdCB8PiBPcHRpb24ubWFwKHRleHQpIHw+IE9wdGlvbi50b19saXN0KSxcbiAgKTtcblxubGV0IHNpbXBsZV9jZWxsX3ZpZXcgPSAoaXRlbXM6IGxpc3QodCkpID0+XG4gIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImNlbGxcIiksIGl0ZW1zKTtcblxubGV0IHJlcG9ydF9mb290ZXJfdmlldyA9IGNvbnRlbnQgPT4ge1xuICBkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiLCBcImNlbGwtcmVwb3J0XCJdKSwgY29udGVudCk7XG59O1xuXG5sZXQgcGFuZWwgPSAofmNsYXNzZXM9W10sIGNvbnRlbnQsIH5mb290ZXI6IG9wdGlvbih0KSkgPT4ge1xuICBzaW1wbGVfY2VsbF92aWV3KFxuICAgIFtkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiLCBcInBhbmVsXCJdIEAgY2xhc3NlcyksIGNvbnRlbnQpXVxuICAgIEAgT3B0aW9uLnRvX2xpc3QoZm9vdGVyKSxcbiAgKTtcbn07XG5cbmxldCB0aXRsZV9jZWxsID0gdGl0bGUgPT4ge1xuICBzaW1wbGVfY2VsbF92aWV3KFtcbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRpdGxlLWNlbGxcIiksXG4gICAgICBbZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwidGl0bGUtdGV4dFwiKSwgW3RleHQodGl0bGUpXSldLFxuICAgICksXG4gIF0pO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbDtcblxudHlwZSBtb2RlbCA9IE1vZGVsUmVzdWx0LnQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWN0aW9uID1cbiAgfCBTdGVwcGVyRWRpdG9yQWN0aW9uKGludCwgQWN0aW9uLnQpXG4gIHwgU3RlcHBlckFjdGlvbihVcGRhdGVBY3Rpb24uc3RlcHBlcl9hY3Rpb24pXG4gIHwgVG9nZ2xlU3RlcHBlcjtcblxubGV0IHVwZGF0ZSA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCBhY3Rpb24sIG1vZGVsKSA9PlxuICBzd2l0Y2ggKGFjdGlvbikge1xuICB8IFN0ZXBwZXJFZGl0b3JBY3Rpb24oaWR4LCBhY3Rpb24pID0+XG4gICAgTW9kZWxSZXN1bHQucGVyZm9ybSh+c2V0dGluZ3MsIGlkeCwgYWN0aW9uLCBtb2RlbClcbiAgfCBTdGVwcGVyQWN0aW9uKHN0ZXBwZXJfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAoc3RlcHBlcl9hY3Rpb24pIHtcbiAgICB8IFVwZGF0ZUFjdGlvbi5TdGVwRm9yd2FyZChpZHgpID0+IE1vZGVsUmVzdWx0LnN0ZXBfZm9yd2FyZChpZHgsIG1vZGVsKVxuICAgIHwgVXBkYXRlQWN0aW9uLlN0ZXBCYWNrd2FyZCA9PlxuICAgICAgTW9kZWxSZXN1bHQuc3RlcF9iYWNrd2FyZCh+c2V0dGluZ3M9c2V0dGluZ3MuZXZhbHVhdGlvbiwgbW9kZWwpXG4gICAgfCBVcGRhdGVBY3Rpb24uSGlkZVN0ZXBwZXIgPT4gTW9kZWxSZXN1bHQudG9nZ2xlX3N0ZXBwZXIofnNldHRpbmdzLCBtb2RlbClcbiAgICB9XG4gIHwgVG9nZ2xlU3RlcHBlciA9PiBNb2RlbFJlc3VsdC50b2dnbGVfc3RlcHBlcih+c2V0dGluZ3MsIG1vZGVsKVxuICB9O1xuXG5tb2R1bGUgVmlldyA9IHtcbiAgdHlwZSBldmVudCA9XG4gICAgfCBNYWtlQWN0aXZlKEVkaXRvcnMuU2VsZWN0aW9uLmNlbGwpXG4gICAgfCBKdW1wVG8oSGF6M2xjb3JlLklkLnQpO1xuXG4gIGxldCBlcnJvcl9tc2cgPSAoZXJyOiBQcm9ncmFtUmVzdWx0LmVycm9yKSA9PlxuICAgIHN3aXRjaCAoZXJyKSB7XG4gICAgfCBFdmF1bGF0b3JFcnJvcihlcnIpID0+IEV2YWx1YXRvckVycm9yLnNob3coZXJyKVxuICAgIHwgVW5rbm93bkV4Y2VwdGlvbihzdHIpID0+IHN0clxuICAgIHwgVGltZW91dCA9PiBcIkV2YWx1YXRpb24gdGltZWQgb3V0XCJcbiAgICB9O1xuXG4gIGxldCBzdGF0dXNfb2Y6IFByb2dyYW1SZXN1bHQudCA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgUmVzdWx0UGVuZGluZyA9PiBcInBlbmRpbmdcIlxuICAgIHwgUmVzdWx0T2soXykgPT4gXCJva1wiXG4gICAgfCBSZXN1bHRGYWlsKF8pID0+IFwiZmFpbFwiXG4gICAgfCBPZmYoXykgPT4gXCJvZmZcIjtcblxuICBsZXQgc3RlcHBlcl92aWV3ID1cbiAgICAgIChcbiAgICAgICAgfmdsb2JhbHMgYXMge3NldHRpbmdzLCBpbmplY3RfZ2xvYmFsLCBffSBhcyBnbG9iYWxzOiBHbG9iYWxzLnQsXG4gICAgICAgIH5zaWduYWwgYXMgXzogZXZlbnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5pbmplY3Q6IGFjdGlvbiA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfnJlYWRfb25seTogYm9vbCxcbiAgICAgICAgc3RlcHBlcjogU3RlcHBlci50LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGhpc3RvcnkgPVxuICAgICAgU3RlcHBlci5nZXRfaGlzdG9yeSh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLCBzdGVwcGVyKTtcbiAgICBzd2l0Y2ggKGhpc3RvcnkpIHtcbiAgICB8IFtdID0+IFtdXG4gICAgfCBbaGQsIC4uLl9dID0+XG4gICAgICBsZXQgYnV0dG9uX2JhY2sgPVxuICAgICAgICBXaWRnZXRzLmJ1dHRvbl9kKFxuICAgICAgICAgIEljb25zLnVuZG8sXG4gICAgICAgICAgaW5qZWN0KFN0ZXBwZXJBY3Rpb24oU3RlcEJhY2t3YXJkKSksXG4gICAgICAgICAgfmRpc2FibGVkPVxuICAgICAgICAgICAgIVN0ZXBwZXIuY2FuX3VuZG8ofnNldHRpbmdzPXNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbiwgc3RlcHBlciksXG4gICAgICAgICAgfnRvb2x0aXA9XCJTdGVwIEJhY2t3YXJkc1wiLFxuICAgICAgICApO1xuICAgICAgbGV0IGJ1dHRvbl9oaWRlX3N0ZXBwZXIgPVxuICAgICAgICBXaWRnZXRzLnRvZ2dsZSh+dG9vbHRpcD1cIlNob3cgU3RlcHBlclwiLCBcInNcIiwgdHJ1ZSwgXyA9PlxuICAgICAgICAgIGluamVjdChTdGVwcGVyQWN0aW9uKEhpZGVTdGVwcGVyKSlcbiAgICAgICAgKTtcbiAgICAgIGxldCB0b2dnbGVfc2hvd19oaXN0b3J5ID1cbiAgICAgICAgV2lkZ2V0cy50b2dnbGUoXG4gICAgICAgICAgfnRvb2x0aXA9XCJTaG93IEhpc3RvcnlcIixcbiAgICAgICAgICBcImhcIixcbiAgICAgICAgICBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24uc3RlcHBlcl9oaXN0b3J5LFxuICAgICAgICAgIF8gPT5cbiAgICAgICAgICBpbmplY3RfZ2xvYmFsKFNldChFdmFsdWF0aW9uKFNob3dSZWNvcmQpKSlcbiAgICAgICAgKTtcbiAgICAgIGxldCBldmFsX3NldHRpbmdzID1cbiAgICAgICAgV2lkZ2V0cy5idXR0b24oSWNvbnMuZ2VhciwgXyA9PlxuICAgICAgICAgIGluamVjdF9nbG9iYWwoU2V0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpXG4gICAgICAgICk7XG4gICAgICBsZXQgKHN0YXRpY3MsIGVkaXRvciwgXykgPSBoZC5oaWRkZW5faGlzdG9yeSB8PiBBYmEuaGQ7XG4gICAgICBsZXQgY3VycmVudF9tb2RlbDogU3RlcHBlckVkaXRvci5TdGVwcGFibGUubW9kZWwgPSB7XG4gICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBzdGF0aWNzLFxuICAgICAgICB9LFxuICAgICAgICBuZXh0X3N0ZXBzOlxuICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgKG9wdGlvbjogRXZhbHVhdG9yU3RlcC5FdmFsT2JqLnQpID0+IG9wdGlvbi5kX2xvYyB8PiBFeHAucmVwX2lkLFxuICAgICAgICAgICAgc3RlcHBlci5uZXh0X29wdGlvbnMsXG4gICAgICAgICAgKSxcbiAgICAgIH07XG4gICAgICBsZXQgY3VycmVudCA9XG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwiY2VsbC1yZXN1bHRcIl0pLFxuICAgICAgICAgIHJlYWRfb25seVxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwi4omhXCIpXSksXG4gICAgICAgICAgICAgIFN0ZXBwZXJFZGl0b3IuU3RlcHBhYmxlLnZpZXcoXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogTWF5YmUgZ2V0IHJpZCBvZiB0aGlzIHNpZ25hbD9cbiAgICAgICAgICAgICAgICB+Z2xvYmFscyxcbiAgICAgICAgICAgICAgICB+c2lnbmFsPVxuICAgICAgICAgICAgICAgICAgKFRha2VTdGVwKHgpKSA9PiBpbmplY3QoU3RlcHBlckFjdGlvbihTdGVwRm9yd2FyZCh4KSkpLFxuICAgICAgICAgICAgICAgIH5vdmVybGF5cz1bXSxcbiAgICAgICAgICAgICAgICBjdXJyZW50X21vZGVsLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwi4omhXCIpXSksXG4gICAgICAgICAgICAgIFN0ZXBwZXJFZGl0b3IuU3RlcHBhYmxlLnZpZXcoXG4gICAgICAgICAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgICAgICAgICAgfnNpZ25hbD1cbiAgICAgICAgICAgICAgICAgIChUYWtlU3RlcCh4KSkgPT4gaW5qZWN0KFN0ZXBwZXJBY3Rpb24oU3RlcEZvcndhcmQoeCkpKSxcbiAgICAgICAgICAgICAgICB+b3ZlcmxheXM9W10sXG4gICAgICAgICAgICAgICAgY3VycmVudF9tb2RlbCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgYnV0dG9uX2JhY2ssXG4gICAgICAgICAgICAgIGV2YWxfc2V0dGluZ3MsXG4gICAgICAgICAgICAgIHRvZ2dsZV9zaG93X2hpc3RvcnksXG4gICAgICAgICAgICAgIGJ1dHRvbl9oaWRlX3N0ZXBwZXIsXG4gICAgICAgICAgICBdLFxuICAgICAgICApO1xuICAgICAgbGV0IHByZXZpb3VzX3N0ZXAgPVxuICAgICAgICAgICh+aGlkZGVuOiBib29sLCB+aWR4IGFzIF8sIHN0ZXA6IFN0ZXBwZXIuc3RlcF9pbmZvKTogbGlzdChOb2RlLnQpID0+IHtcbiAgICAgICAgbGV0IChzdGF0aWNzLCBlZGl0b3IsIF8pID0gc3RlcC5oaWRkZW5faGlzdG9yeSB8PiBBYmEuaGQ7XG4gICAgICAgIGxldCBtb2RlbDogU3RlcHBlckVkaXRvci5TdGVwcGVkLm1vZGVsID0ge1xuICAgICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgc3RhdGljcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0ZXA6IHN0ZXAuY2hvc2VuX3N0ZXAsIC8vIFRPRE9bTWF0dF06IHJlZmFjdG9yIGF3YXkgT3B0aW9uLmdldFxuICAgICAgICAgIHN0ZXBfaWQ6XG4gICAgICAgICAgICBzdGVwLmNob3Nlbl9zdGVwXG4gICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBFdmFsdWF0b3JTdGVwLnN0ZXApID0+IHguZF9sb2MgfD4gRXhwLnJlcF9pZCksXG4gICAgICAgIH07XG4gICAgICAgIFtcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFxuICAgICAgICAgICAgICAgIFtcImNlbGwtaXRlbVwiLCBcImNlbGwtcmVzdWx0XCJdIEAgKGhpZGRlbiA/IFtcImhpZGRlblwiXSA6IFtdKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwiZXF1aXZcIiksIFtOb2RlLnRleHQoXCLiiaFcIildKSxcbiAgICAgICAgICAgICAgU3RlcHBlckVkaXRvci5TdGVwcGVkLnZpZXcofmdsb2JhbHMsIH5vdmVybGF5cz1bXSwgbW9kZWwpLFxuICAgICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInN0ZXBwZXItanVzdGlmaWNhdGlvblwiXSksXG4gICAgICAgICAgICAgICAgc3RlcC5jaG9zZW5fc3RlcFxuICAgICAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKGNob3Nlbl9zdGVwOiBFdmFsdWF0b3JTdGVwLnN0ZXApID0+XG4gICAgICAgICAgICAgICAgICAgICBjaG9zZW5fc3RlcC5rbmQgfD4gU3RlcHBlci5nZXRfanVzdGlmaWNhdGlvbiB8PiBOb2RlLnRleHRcbiAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfD4gT3B0aW9uLnRvX2xpc3QsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICAgIF07XG4gICAgICB9O1xuICAgICAgKFxuICAgICAgICAoXG4gICAgICAgICAgc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLnN0ZXBwZXJfaGlzdG9yeVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGxldCBzdGVwczogbGlzdCgoYm9vbCwgU3RlcHBlci5zdGVwX2luZm8pKSA9XG4gICAgICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICAgICBzdGVwID0+XG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAoZmFsc2UsIHN0ZXApLFxuICAgICAgICAgICAgICAgICAgICAgIC4uLnNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbi5zaG93X2hpZGRlbl9zdGVwc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTdGVwcGVyLmhpZGRlbl9zdGVwc19vZl9pbmZvKHN0ZXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw+IExpc3QubWFwKHggPT4gKHRydWUsIHgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgICAgICAgICAgIHw+IExpc3QudGw7XG4gICAgICAgICAgICAgIExpc3QubWFwaShcbiAgICAgICAgICAgICAgICAoaWR4LCAoaGlkZGVuLCBzdGVwKSkgPT5cbiAgICAgICAgICAgICAgICAgIHByZXZpb3VzX3N0ZXAofmhpZGRlbiwgfmlkeD1pZHggKyAxLCBzdGVwKSxcbiAgICAgICAgICAgICAgICBzdGVwcyB8PiBMaXN0LnJldixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8PiBMaXN0LmZsYXR0ZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IFtdXG4gICAgICAgIClcbiAgICAgICAgQCBbY3VycmVudF1cbiAgICAgIClcbiAgICAgIEAgKFxuICAgICAgICBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24uc2hvd19zZXR0aW5nc1xuICAgICAgICAgID8gU2V0dGluZ3NNb2RhbC52aWV3KFxuICAgICAgICAgICAgICB+aW5qZWN0PXUgPT4gaW5qZWN0X2dsb2JhbChTZXQodSkpLFxuICAgICAgICAgICAgICBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBbXVxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBsaXZlX2V2YWwgPVxuICAgICAgKFxuICAgICAgICB+Z2xvYmFsczogR2xvYmFscy50LFxuICAgICAgICB+c2lnbmFsOiBldmVudCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfmluamVjdDogYWN0aW9uID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+c2VsZWN0ZWQsXG4gICAgICAgIH5sb2NrZWQsXG4gICAgICAgIHJlc3VsdDogTW9kZWxSZXN1bHQuZXZhbF9yZXN1bHQsXG4gICAgICApID0+IHtcbiAgICBsZXQgZWRpdG9yID1cbiAgICAgIHN3aXRjaCAocmVzdWx0LmV2YWx1YXRpb24sIHJlc3VsdC5wcmV2aW91cykge1xuICAgICAgfCAoUmVzdWx0T2socmVzKSwgXykgPT4gcmVzLmVkaXRvclxuICAgICAgfCAoUmVzdWx0UGVuZGluZywgUmVzdWx0T2socmVzKSkgPT4gcmVzLmVkaXRvclxuICAgICAgfCBfID0+IHJlc3VsdC5lbGFiLmQgfD4gRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IofmlubGluZT1mYWxzZSlcbiAgICAgIH07XG4gICAgbGV0IGNvZGVfdmlldyA9XG4gICAgICBDb2RlRWRpdG9yLnZpZXcoXG4gICAgICAgIH5zaWduYWw9XG4gICAgICAgICAgZnVuXG4gICAgICAgICAgfCBNYWtlQWN0aXZlID0+IHNpZ25hbChNYWtlQWN0aXZlKE1haW5FZGl0b3IpKSxcbiAgICAgICAgfmluamVjdD1hID0+IGluamVjdChTdGVwcGVyRWRpdG9yQWN0aW9uKDAsIGEpKSxcbiAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgIH5zZWxlY3RlZCxcbiAgICAgICAgfmhpZ2hsaWdodHM9Tm9uZSxcbiAgICAgICAgfnNvcnQ9U29ydC5yb290LFxuICAgICAgICB7ZWRpdG9yLCBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLmVtcHR5X3N0YXRpY3N9LFxuICAgICAgKTtcbiAgICBsZXQgZXhuX3ZpZXcgPVxuICAgICAgc3dpdGNoIChyZXN1bHQuZXZhbHVhdGlvbikge1xuICAgICAgfCBSZXN1bHRGYWlsKGVycikgPT4gW1xuICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiZXJyb3ItbXNnXCJdKSwgW3RleHQoZXJyb3JfbXNnKGVycikpXSksXG4gICAgICAgIF1cbiAgICAgIHwgXyA9PiBbXVxuICAgICAgfTtcbiAgICBOb2RlLihcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiLCBcImNlbGwtcmVzdWx0XCJdKSxcbiAgICAgICAgZXhuX3ZpZXdcbiAgICAgICAgQCBbXG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInN0YXR1c1wiLCBzdGF0dXNfb2YocmVzdWx0LmV2YWx1YXRpb24pXSksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wic3Bpbm5lclwiXSksIFtdKSxcbiAgICAgICAgICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJlcVwiXSksIFt0ZXh0KFwi4omhXCIpXSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInJlc3VsdFwiLCBzdGF0dXNfb2YocmVzdWx0LmV2YWx1YXRpb24pXSksXG4gICAgICAgICAgICBbY29kZV92aWV3XSxcbiAgICAgICAgICApLFxuICAgICAgICBdXG4gICAgICAgIEAgKFxuICAgICAgICAgIGxvY2tlZFxuICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIFdpZGdldHMudG9nZ2xlKH50b29sdGlwPVwiU2hvdyBTdGVwcGVyXCIsIFwic1wiLCBmYWxzZSwgXyA9PlxuICAgICAgICAgICAgICAgIGluamVjdChUb2dnbGVTdGVwcGVyKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbGV0IGZvb3RlciA9XG4gICAgICAoXG4gICAgICAgIH5nbG9iYWxzOiBHbG9iYWxzLnQsXG4gICAgICAgIH5zaWduYWwsXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5yZXN1bHQ6IE1vZGVsUmVzdWx0LnQsXG4gICAgICAgIH5zZWxlY3RlZDogb3B0aW9uKGludCksXG4gICAgICAgIH5sb2NrZWQsXG4gICAgICApID0+XG4gICAgc3dpdGNoIChyZXN1bHQpIHtcbiAgICB8IF8gd2hlbiAhZ2xvYmFscy5zZXR0aW5ncy5jb3JlLmR5bmFtaWNzID0+IFtdXG4gICAgfCBOb0VsYWIgPT4gW11cbiAgICB8IEV2YWx1YXRpb24ocmVzdWx0KSA9PiBbXG4gICAgICAgIGxpdmVfZXZhbChcbiAgICAgICAgICB+Z2xvYmFscyxcbiAgICAgICAgICB+c2lnbmFsLFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnNlbGVjdGVkPXNlbGVjdGVkID09IFNvbWUoMCksXG4gICAgICAgICAgfmxvY2tlZCxcbiAgICAgICAgICByZXN1bHQsXG4gICAgICAgICksXG4gICAgICBdXG4gICAgfCBTdGVwcGVyKHMpID0+XG4gICAgICBzdGVwcGVyX3ZpZXcofmdsb2JhbHMsIH5zaWduYWwsIH5pbmplY3QsIH5yZWFkX29ubHk9bG9ja2VkLCBzKVxuICAgIH07XG5cbiAgbGV0IHRlc3Rfc3RhdHVzX2ljb25fdmlldyA9XG4gICAgICAofmZvbnRfbWV0cmljcywgaW5zdHMsIG1zOiBNZWFzdXJlZC5TaGFyZHMudCk6IG9wdGlvbihOb2RlLnQpID0+XG4gICAgc3dpdGNoIChtcykge1xuICAgIHwgWyhfLCB7b3JpZ2luOiBfLCBsYXN0fSksIC4uLl9dID0+XG4gICAgICBsZXQgc3RhdHVzID0gaW5zdHMgfD4gVGVzdE1hcC5qb2ludF9zdGF0dXMgfD4gVGVzdFN0YXR1cy50b19zdHJpbmc7XG4gICAgICBsZXQgcG9zID0gRGVjVXRpbC5hYnNfcG9zaXRpb24ofmZvbnRfbWV0cmljcywgbGFzdCk7XG4gICAgICBTb21lKFxuICAgICAgICBOb2RlLmRpdihcbiAgICAgICAgICB+YXR0cj1BdHRyLm1hbnkoW0F0dHIuY2xhc3NlcyhbXCJ0ZXN0LXJlc3VsdFwiLCBzdGF0dXNdKSwgcG9zXSksXG4gICAgICAgICAgW10sXG4gICAgICAgICksXG4gICAgICApO1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgdGVzdF9yZXN1bHRfbGF5ZXIgPVxuICAgICAgKH5mb250X21ldHJpY3MsIH5tZWFzdXJlZDogTWVhc3VyZWQudCwgdGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KVxuICAgICAgOiBsaXN0KE5vZGUudCkgPT5cbiAgICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAoKGlkLCBpbnN0cykpID0+XG4gICAgICAgIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCBtZWFzdXJlZC50aWxlcykpIHtcbiAgICAgICAgfCBTb21lKG1zKSA9PiB0ZXN0X3N0YXR1c19pY29uX3ZpZXcofmZvbnRfbWV0cmljcywgaW5zdHMsIG1zKVxuICAgICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgICB9LFxuICAgICAgdGVzdF9yZXN1bHRzLnRlc3RfbWFwLFxuICAgICk7XG5cbiAgdHlwZSByZXN1bHRfa2luZCA9XG4gICAgfCBOb1Jlc3VsdHNcbiAgICB8IFRlc3RSZXN1bHRzXG4gICAgfCBFdmFsUmVzdWx0cztcblxuICBsZXQgdmlldyA9XG4gICAgICAoXG4gICAgICAgIH5nbG9iYWxzOiBHbG9iYWxzLnQsXG4gICAgICAgIH5zaWduYWw6IGV2ZW50ID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+aW5qZWN0OiBhY3Rpb24gPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5zZWxlY3RlZDogYm9vbCxcbiAgICAgICAgfnJlc3VsdF9raW5kPUV2YWxSZXN1bHRzLFxuICAgICAgICB+bG9ja2VkOiBib29sLFxuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICApID0+XG4gICAgc3dpdGNoIChyZXN1bHRfa2luZCkge1xuICAgIC8vIE5vcm1hbCBjYXNlOlxuICAgIHwgRXZhbFJlc3VsdHMgd2hlbiBnbG9iYWxzLnNldHRpbmdzLmNvcmUuZHluYW1pY3MgPT5cbiAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICBmb290ZXIoXG4gICAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgICAgfnNpZ25hbCxcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIH5yZXN1bHQ9bW9kZWwsXG4gICAgICAgICAgfnNlbGVjdGVkPXNlbGVjdGVkID8gU29tZSgwKSA6IE5vbmUsXG4gICAgICAgICAgfmxvY2tlZCxcbiAgICAgICAgKTtcbiAgICAgIGxldCB0ZXN0X292ZXJsYXkgPSAoZWRpdG9yOiBFZGl0b3IudCkgPT5cbiAgICAgICAgc3dpdGNoIChNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMobW9kZWwpKSB7XG4gICAgICAgIHwgU29tZShyZXN1bHQpID0+XG4gICAgICAgICAgdGVzdF9yZXN1bHRfbGF5ZXIoXG4gICAgICAgICAgICB+Zm9udF9tZXRyaWNzPWdsb2JhbHMuZm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgfm1lYXN1cmVkPWVkaXRvci5zdGF0ZS5tZXRhLm1lYXN1cmVkLFxuICAgICAgICAgICAgcmVzdWx0LFxuICAgICAgICAgIClcbiAgICAgICAgfCBOb25lID0+IFtdXG4gICAgICAgIH07XG4gICAgICAocmVzdWx0LCB0ZXN0X292ZXJsYXkpO1xuXG4gICAgLy8gSnVzdCBzaG93aW5nIGVsYWJvcmF0aW9uIGJlY2F1c2UgZXZhbHVhdGlvbiBpcyBvZmY6XG4gICAgfCBFdmFsUmVzdWx0cyB3aGVuIGdsb2JhbHMuc2V0dGluZ3MuY29yZS5lbGFib3JhdGUgPT5cbiAgICAgIGxldCByZXN1bHQgPSBbXG4gICAgICAgIHRleHQoXCJFdmFsdWF0aW9uIGRpc2FibGVkLCBzaG93aW5nIGVsYWJvcmF0aW9uOlwiKSxcbiAgICAgICAgc3dpdGNoIChNb2RlbFJlc3VsdC5nZXRfZWxhYm9yYXRpb24obW9kZWwpKSB7XG4gICAgICAgIHwgU29tZShlbGFiKSA9PlxuICAgICAgICAgIFJlYWRPbmx5RWRpdG9yLnZpZXcoXG4gICAgICAgICAgICB+Z2xvYmFscyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZWRpdG9yOiBlbGFiLmQgfD4gRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IofmlubGluZT1mYWxzZSksXG4gICAgICAgICAgICAgIHN0YXRpY3M6IENhY2hlZFN0YXRpY3MuZW1wdHlfc3RhdGljcyxcbiAgICAgICAgICAgIH06IENvZGVFZGl0b3IubW9kZWwsXG4gICAgICAgICAgKVxuICAgICAgICB8IE5vbmUgPT4gdGV4dChcIk5vIGVsYWJvcmF0aW9uIGZvdW5kXCIpXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgICAgKHJlc3VsdCwgKF8gPT4gW10pKTtcblxuICAgIC8vIE5vdCBzaG93aW5nIGFueSByZXN1bHRzOlxuICAgIHwgRXZhbFJlc3VsdHNcbiAgICB8IE5vUmVzdWx0cyA9PiAoW10sIChfID0+IFtdKSlcblxuICAgIC8vIEp1c3Qgc2hvd2luZyB0ZXN0IHJlc3VsdHMgKHNjaG9vbCBtb2RlKVxuICAgIHwgVGVzdFJlc3VsdHMgPT5cbiAgICAgIGxldCB0ZXN0X3Jlc3VsdHMgPSBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMobW9kZWwpO1xuICAgICAgbGV0IHRlc3Rfb3ZlcmxheSA9IChlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgICAgICBzd2l0Y2ggKE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhtb2RlbCkpIHtcbiAgICAgICAgfCBTb21lKHJlc3VsdCkgPT5cbiAgICAgICAgICB0ZXN0X3Jlc3VsdF9sYXllcihcbiAgICAgICAgICAgIH5mb250X21ldHJpY3M9Z2xvYmFscy5mb250X21ldHJpY3MsXG4gICAgICAgICAgICB+bWVhc3VyZWQ9ZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQsXG4gICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgKVxuICAgICAgICB8IE5vbmUgPT4gW11cbiAgICAgICAgfTtcbiAgICAgIChcbiAgICAgICAgW1xuICAgICAgICAgIENlbGwucmVwb3J0X2Zvb3Rlcl92aWV3KFtcbiAgICAgICAgICAgIFRlc3RWaWV3LnRlc3Rfc3VtbWFyeShcbiAgICAgICAgICAgICAgfmluamVjdF9qdW1wPXRpbGUgPT4gc2lnbmFsKEp1bXBUbyh0aWxlKSksXG4gICAgICAgICAgICAgIH50ZXN0X3Jlc3VsdHMsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgICB0ZXN0X292ZXJsYXksXG4gICAgICApO1xuICAgIH07XG59O1xuXG5sZXQgdmlldyA9IFZpZXcudmlldztcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG50eXBlIG1vZGVsID0ge1xuICBlZGl0b3I6IENvZGVFZGl0b3IubW9kZWwsXG4gIHJlc3VsdDogTW9kZWxSZXN1bHQudCxcbn07XG5cbnR5cGUgYWN0aW9uID1cbiAgfCBNYWluRWRpdG9yKENvZGVFZGl0b3IuYWN0aW9uKVxuICB8IFJlc3VsdEFjdGlvbihDZWxsUmVzdWx0LmFjdGlvbik7XG5cbmxldCB1cGRhdGUgPSBSZWFkT25seUVkaXRvci51cGRhdGU7XG5cbmxldCBjYWxjdWxhdGUgPSBSZWFkT25seUVkaXRvci5jYWxjdWxhdGU7XG5cbnR5cGUgZXZlbnQgPSBDb2RlRWRpdG9yLmV2ZW50O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmdsb2JhbHM6IEdsb2JhbHMudCxcbiAgICAgIH5zZWxlY3Q6IEVkaXRvcnMuU2VsZWN0aW9uLmNlbGwgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICB+aW5qZWN0LFxuICAgICAgfmhpZ2hsaWdodHM6IG9wdGlvbihDb2xvclN0ZXBzLmNvbG9yTWFwKSxcbiAgICAgIH5zZWxlY3RlZDogb3B0aW9uKEVkaXRvcnMuU2VsZWN0aW9uLmNlbGwpLFxuICAgICAgfmNhcHRpb246IG9wdGlvbihOb2RlLnQpPT8sXG4gICAgICB+c29ydD0/LFxuICAgICAgfnJlc3VsdF9raW5kPT8sXG4gICAgICB+bG9ja2VkPWZhbHNlLFxuICAgICAgbW9kZWwsXG4gICAgKSA9PiB7XG4gIGxldCAoZm9vdGVyLCBvdmVybGF5cykgPVxuICAgIENlbGxSZXN1bHQudmlldyhcbiAgICAgIH5nbG9iYWxzLFxuICAgICAgfnNpZ25hbD1cbiAgICAgICAgZnVuXG4gICAgICAgIHwgTWFrZUFjdGl2ZShhKSA9PiBzZWxlY3QoYSlcbiAgICAgICAgfCBKdW1wVG8oaWQpID0+XG4gICAgICAgICAgRWZmZWN0Lk1hbnkoW1xuICAgICAgICAgICAgc2VsZWN0KE1haW5FZGl0b3IpLFxuICAgICAgICAgICAgaW5qZWN0KE1haW5FZGl0b3IoSnVtcChUaWxlSWQoaWQpKSkpLFxuICAgICAgICAgIF0pLFxuICAgICAgfmluamVjdD1hID0+IGluamVjdChSZXN1bHRBY3Rpb24oYSkpLFxuICAgICAgfnNlbGVjdGVkPXNlbGVjdGVkID09IFNvbWUoUmVzdWx0KDApKSxcbiAgICAgIH5yZXN1bHRfa2luZD8sXG4gICAgICB+bG9ja2VkLFxuICAgICAgbW9kZWwucmVzdWx0LFxuICAgICk7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgIFwiY2VsbFwiLFxuICAgICAgICBPcHRpb24uaXNfc29tZShzZWxlY3RlZCkgPyBcInNlbGVjdGVkXCIgOiBcImRlc2VsZWN0ZWRcIixcbiAgICAgICAgbG9ja2VkID8gXCJsb2NrZWRcIiA6IFwidW5sb2NrZWRcIixcbiAgICAgIF0pLFxuICAgIE9wdGlvbi50b19saXN0KGNhcHRpb24pXG4gICAgQCBbXG4gICAgICBDb2RlRWRpdG9yLnZpZXcoXG4gICAgICAgIH5nbG9iYWxzLFxuICAgICAgICB+c2lnbmFsPVxuICAgICAgICAgIGxvY2tlZFxuICAgICAgICAgICAgPyBfID0+IFVpX2VmZmVjdC5JZ25vcmVcbiAgICAgICAgICAgIDogZnVuXG4gICAgICAgICAgICAgIHwgTWFrZUFjdGl2ZSA9PiBzZWxlY3QoRWRpdG9ycy5TZWxlY3Rpb24uTWFpbkVkaXRvciksXG4gICAgICAgIH5pbmplY3Q9XG4gICAgICAgICAgbG9ja2VkXG4gICAgICAgICAgICA/IF8gPT4gVWlfZWZmZWN0Lklnbm9yZSA6IChhY3Rpb24gPT4gaW5qZWN0KE1haW5FZGl0b3IoYWN0aW9uKSkpLFxuICAgICAgICB+c2VsZWN0ZWQ9c2VsZWN0ZWQgPT0gU29tZShNYWluRWRpdG9yKSxcbiAgICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICAgIH5vdmVybGF5cz1vdmVybGF5cyhtb2RlbC5lZGl0b3IuZWRpdG9yKSxcbiAgICAgICAgfnNvcnQ/LFxuICAgICAgICBtb2RlbC5lZGl0b3IsXG4gICAgICApLFxuICAgIF1cbiAgICBAIGZvb3RlcixcbiAgKTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5nbG9iYWxzLFxuICAgICAgfnNlbGVjdCxcbiAgICAgIH5pbmplY3Q6IFVwZGF0ZUFjdGlvbi50ID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICB+cmVzdWx0czogTW9kZWxSZXN1bHRzLnQsXG4gICAgICB+cmVzdWx0X2tleSxcbiAgICAgIH5zdGF0aWNzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MsXG4gICAgICB+c2VsZWN0ZWQsXG4gICAgICBlZGl0b3I6IEVkaXRvci50LFxuICAgICkgPT4ge1xuICBsZXQgcmVzdWx0ID0gTW9kZWxSZXN1bHRzLmxvb2t1cChyZXN1bHRzLCByZXN1bHRfa2V5KSB8PiBPcHRpb24uZ2V0O1xuICBbXG4gICAgQ2VsbEVkaXRvci52aWV3KFxuICAgICAgfmdsb2JhbHMsXG4gICAgICB+c2VsZWN0LFxuICAgICAgfmluamVjdD1cbiAgICAgICAgZnVuXG4gICAgICAgIHwgTWFpbkVkaXRvcihhKSA9PiBpbmplY3QoUGVyZm9ybUFjdGlvbihhKSlcbiAgICAgICAgfCBSZXN1bHRBY3Rpb24oU3RlcHBlckFjdGlvbihhKSkgPT5cbiAgICAgICAgICBpbmplY3QoU3RlcHBlckFjdGlvbihyZXN1bHRfa2V5LCBhKSlcbiAgICAgICAgfCBSZXN1bHRBY3Rpb24oVG9nZ2xlU3RlcHBlcikgPT4gaW5qZWN0KFRvZ2dsZVN0ZXBwZXIocmVzdWx0X2tleSkpXG4gICAgICAgIHwgUmVzdWx0QWN0aW9uKFN0ZXBwZXJFZGl0b3JBY3Rpb24oXywgYSkpID0+XG4gICAgICAgICAgaW5qZWN0KFBlcmZvcm1BY3Rpb24oYSkpLFxuICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICB+c2VsZWN0ZWQsXG4gICAgICB+bG9ja2VkPWZhbHNlLFxuICAgICAge1xuICAgICAgICBlZGl0b3I6IHtcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgc3RhdGljcyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0LFxuICAgICAgfSxcbiAgICApLFxuICBdO1xufTtcblxubGV0IGV4cG9ydF9idXR0b24gPSBzdGF0ZSA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy5zdGFyLFxuICAgIF8gPT4ge1xuICAgICAgbGV0IGpzb25fZGF0YSA9IFNjcmF0Y2hTbGlkZS5leHBvcnQoc3RhdGUpO1xuICAgICAgSnNVdGlsLmRvd25sb2FkX2pzb24oXCJoYXplbC1zY3JhdGNocGFkXCIsIGpzb25fZGF0YSk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBTY3JhdGNocGFkXCIsXG4gICk7XG5sZXQgaW1wb3J0X2J1dHRvbiA9IGluamVjdCA9PlxuICBXaWRnZXRzLmZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZChcbiAgICBcImltcG9ydC1zY3JhdGNocGFkXCIsXG4gICAgSWNvbnMuc3RhcixcbiAgICBmaWxlID0+IHtcbiAgICAgIHN3aXRjaCAoZmlsZSkge1xuICAgICAgfCBOb25lID0+IFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZVxuICAgICAgfCBTb21lKGZpbGUpID0+IGluamVjdChVcGRhdGVBY3Rpb24uSW5pdEltcG9ydFNjcmF0Y2hwYWQoZmlsZSkpXG4gICAgICB9XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkltcG9ydCBTY3JhdGNocGFkXCIsXG4gICk7XG5cbmxldCByZXNldF9idXR0b24gPSBpbmplY3QgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMudHJhc2gsXG4gICAgXyA9PiB7XG4gICAgICBsZXQgY29uZmlybWVkID1cbiAgICAgICAgSnNVdGlsLmNvbmZpcm0oXG4gICAgICAgICAgXCJBcmUgeW91IFNVUkUgeW91IHdhbnQgdG8gcmVzZXQgdGhpcyBzY3JhdGNocGFkPyBZb3Ugd2lsbCBsb3NlIGFueSBleGlzdGluZyBjb2RlLlwiLFxuICAgICAgICApO1xuICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlJlc2V0Q3VycmVudEVkaXRvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgICB9O1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJSZXNldCBTY3JhdGNocGFkXCIsXG4gICk7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgX3RwYXQgPSB0cGF0KFwidF92YXJcIik7XG5sZXQgX3R5cF9hcmcgPSB0eXAoXCJ0eV9hcmdcIik7XG5sZXQgcmVjX3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+dHBhdF9pZDogSWQudCwgfnRib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90cGF0KSwgdHBhdF9pZCksXG4gIChQaWVjZS5pZChfdHlwX2FyZyksIHRib2R5X2lkKSxcbl07XG5sZXQgcGVhbm9fZXggPSB7XG4gIHN1Yl9pZDogUmVjVHlwLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHlwZSBQZWFubyA9IFxcbiByZWMgUCAtPiBaICsgUyhQKSBcXG4gaW4gUyhTKFMoWikpKVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdHlwZSBvZiB0aGUgUGVhbm8gbnVtYmVycyBhbmQgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIgMy5cIixcbn07XG5sZXQgcmVjX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHJlY3Vyc2l2ZSB0eXBlIGNsYXNzaWZpZXMgdGhlIGxlYXN0IGZpeGVkIHBvaW50IG9mIHRoZSBwb2x5bW9ycGhpYyB0eXBlIG92ZXIgdGhlIFsqdHlwZSB2YXJpYWJsZSpdKCVzKSBvZiBib2R5IFsqaW5zdGFudGlhdGVkIHR5cGUqXSglcykuXCI7XG4gIHtcbiAgICBpZDogUmVjVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbWtfcmVjKFtbc3BhY2UoKSwgX3RwYXQsIHNwYWNlKCldXSksIF90eXBfYXJnXSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfdHBhdCksIFtfdHlwX2FyZ10pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3BlYW5vX2V4XSxcbiAgfTtcbn07XG5cbmxldCByZWNfOiBncm91cCA9IHtpZDogUmVjVHlwLCBmb3JtczogW3JlY190eXBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbi8qIChBKSBVc2UgdGhpcyBmaWxlIGFzIGFuIGV4YW1wbGUgZm9yIGFkZGluZyBhIG5ldyBmb3JtIHRvIEV4cGxhaW5UaGlzLlxuICogWW91IHNob3VsZCBiZSBhYmxlIHRvIGNvcHktcGFzdGUgdGhpcyBmaWxlIGFuZCBtb2RpZnkgaXQgdG8gYWRkIGEgbmV3IGZvcm0gKi9cblxubGV0IHNpbmdsZSA9ICh+YXJnX2lkOiBJZC50LCB+Zm5faWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIC8qIChCKSBZb3UnbGwgbmVlZCB0byBhZGQgbmV3IGNhc2VzIHRvIEV4cGxhaW5UaGlzRm9ybS5yZSBmb3IgdGhlIG5ldyBmb3JtXG4gICAqIHRvIHJlcHJlc2VudCBhIGdyb3VwX2lkIGFuZCBmb3JtX2lkLiBUaGlzIFNpbXBsZSBzdHlsZSBpcyBzcGVjaWFsaXplZFxuICAgKiB0byBzaW5nbGV0b24gZ3JvdXBzLiBJbiBnZW5lcmFsLCB0aGUgZ3JvdXBfaWQgbmVlZHMgdG8gYmUgdW5pcXVlLCBhbmRcbiAgICogZm9ybV9pZHMgbmVlZCB0byBiZSB1bmlxdWUgd2l0aGluIGEgZ3JvdXAuIFRoZXNlIGlkcyBhcmUgdXNlZCB0byB0cmFja1xuICAgKiBFeHBsYWluVGhpcyBwZXJzaXN0ZW50IHN0YXRlLiAqL1xuICBncm91cF9pZDogUGlwZWxpbmVFeHAsXG4gIGZvcm1faWQ6IFBpcGVsaW5lRXhwLFxuICAvKiAoQykgVGhlIGFic3RyYWN0IGZpZWxkIGRlZmluZXMgYW4gYWJzdHJhY3QgZXhhbXBsZSBpbGx1c3RyYXRpbmcgdGhlXG4gICAqIG5ldyBmb3JtLiBZb3UnbGwgbmVlZCB0byBwcm92aWRlIHBhaXJzIGFzc29jaWF0aW5nIGFueSByZXByZXNlbnRhdGl2ZVxuICAgKiBzdWJ0ZXJtcyBvZiB0aGUgZXhlbXBsYXIgKGUuZy4gXCJlX2FyZ1wiIGFuZCBcImVfZnVuXCIgYmVsb3cpIHdpdGggdGhlXG4gICAqIGNvbmNyZXRlIHN1YnRlcm1zIG9mIHRoZSB0ZXJtIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCAoaGVyZSwgYXJnX2lkXG4gICAqIGFuZCBmbl9pZCkuIFlvdSdsbCB0aGVuIG5lZWQgYSBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgYSBzZWdtZW50XG4gICAqIHJlcHJlc2VudGluZyB5b3VyIGFic3RyYWN0LiBUaGlzIGlzIGRvbmUgaW4gdGhpcyBpbmRpcmVjdCB3YXkgc29cbiAgICogYXMgdG8gYXNzb2NpYXRlIHJlcHJlc2VudGF0aXZlIGFuZCBjb25jcmV0ZSBzdWJ0ZXJtcyBpZHMgZm9yXG4gICAqIHN5bnRheCBoaWdobGlnaHRpbmcgcHVycG9zZXMuICovXG4gIGFic3RyYWN0OlxuICAgIFNpbXBsZS5ta18yKChcImVfYXJnXCIsIGFyZ19pZCksIChcImVfZnVuXCIsIGZuX2lkKSwgKGVfYXJnJywgZV9mbicpID0+XG4gICAgICBbZV9hcmcnLCBzcGFjZSgpLCBwaXBlbGluZSgpLCBzcGFjZSgpLCBlX2ZuJ11cbiAgICApLFxuICAvKiAoRCkgVGhlIGV4cGxhbmF0aW9uIHdoaWNoIHdpbGwgYXBwZWFyIGluIHRoZSBzaWRlYmFyIGJlbG93IHRoZSBhYnN0cmFjdCAqL1xuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiUGFzc2VzIHRoZSBbKmFyZ3VtZW50Kl0oJXMpIHRvIHRoZSBbKmZ1bmN0aW9uKl0oJXMpLlwiLFxuICAgICAgYXJnX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIGZuX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICAvKiAoRSkgQWRkaXRpb25hbCBtb3JlIGNvbmNyZXRlIGV4YW1wbGVzIGFuZCBhc3NvY2lhdGVkIGV4cGxhbmF0aW9ucyAqL1xuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogUGlwZWxpbmUxLFxuICAgICAgdGVybTogbWtfZXhhbXBsZShcIjEgfD4gZnVuIHggLT4geCArIDFcIiksXG4gICAgICBtZXNzYWdlOiB7fFxuICAgICAgICAgICAgICBUaGUgYXJndW1lbnQgMSBpcyBwYXNzZWQgdG8gYW4gaW5jcmVtZW50IGZ1bmN0aW9uLCBhbmQgdGhlIGVudGlyZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlxuICAgICAgICAgICAgICBUaGUgcGlwZWxpbmUgb3BlcmF0b3IgaXMgdXNlZnVsIGZvciBjaGFpbmluZyBmdW5jdGlvbnMgdG9nZXRoZXIuXG4gICAgICAgICAgICAgIHx9LFxuICAgIH0sXG4gIF0sXG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGZ1bmFwcF9leHBfZXggPSB7XG4gIHN1Yl9pZDogRnVuQXAsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIoZnVuIHggLT4geCkoMSlcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGlkZW50aXR5IGZ1bmN0aW9uIGlzIGFwcGxpZWQgdG8gMS4gVGhlIGFyZ3VtZW50IHggaXMgYm91bmQgdG8gMSBpbiB0aGUgZnVuY3Rpb24gYm9keSBhbmQgdGhlIGJvZHkgZXZhbHVhdGVzIHRvIDEuXCIsXG59O1xuLy8gVE9ETyBIYXMgYSByZWQgYm94IGFyb3VuZCBpdCBpbiB0aGUgcmVzdWx0XG5sZXQgY29uYXBwX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBDb25BcCxcbiAgdGVybTogbWtfZXhhbXBsZShcInR5cGUgVCA9IE5vbmUgKyBTb21lKEludClcXG5pbiBTb21lKDEpXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBjb25zdHJ1Y3RvciBTb21lIGlzIGFwcGxpZWQgdG8gMSwgd2hpY2ggZXZhbHVhdGVzIHRvIFNvbWUoMSkuXCIsXG59O1xubGV0IGRlZmVycmVkX2Z1bmFwcF9leHBfZXggPSB7XG4gIHN1Yl9pZDogRGVmZXJyZWRBcCxcbiAgdGVybTpcbiAgICBta19leGFtcGxlKFxuICAgICAgXCJsZXQgcGx1cyA9IGZ1biAoeCwgeSkgLT4geCArIHkgaW5cXG5sZXQgaW5jciA9IHBsdXMoXywgMSkgaW5cXG5pbmNyKDUpXCIsXG4gICAgKSxcbiAgbWVzc2FnZTogXCJUaGUgcGx1cyBmdW5jdGlvbiBpcyBwYXJ0aWFsbHkgYXBwbGllZC4gVGhlIGFyZ3VtZW50IHkgaXMgYm91bmQgdG8gMSBpbiB0aGUgZnVuY3Rpb24gYm9keS4gVGhlIGRlZmVycmVkIGFyZ3VtZW50IHggaXMgbm90IGFwcGxpZWQgdW50aWwgaW4gdGhlIGZ1bGwgZnVuY3Rpb24gYXBwbGljYXRpb24sIGluY3IoNSksIHdoZXJlIGl0J3MgYm91bmQgdG8gNS4gVGhlIHBhcnRpYWwgYXBwbGljYXRpb24gZXZhbHVhdGVzIHRvIGEgbmV3IGZ1bmN0aW9uLCAoZnVuIHggLT4geCArIDEpLlwiLFxufTtcbmxldCBfZXhwX2Z1biA9IGV4cChcImVfZnVuXCIpO1xubGV0IF9leHBfYXJnID0gZXhwKFwiZV9hcmdcIik7XG5sZXQgZnVuYXBwX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+eF9pZDogSWQudCwgfmFyZ19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2Z1biksIHhfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9hcmcpLCBhcmdfaWQpLFxuXTtcbmxldCBmdW5hcHBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFwcGxpZXMgdGhlIFsqZnVuY3Rpb24qXSglcykgdG8gdGhlIFsqYXJndW1lbnQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogRnVuQXBFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwX2Z1biwgbWtfYXBfZXhwKFtbX2V4cF9hcmddXSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmdW5hcHBfZXhwX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cF9jb24gPSBleHAoXCJlX2NvblwiKTtcbmxldCBfZXhwX2FyZyA9IGV4cChcImVfYXJnXCIpO1xubGV0IGNvbmFwcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnhfaWQ6IElkLnQsIH5hcmdfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9jb24pLCB4X2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfYXJnKSwgYXJnX2lkKSxcbl07XG5sZXQgY29uYXBwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBcHBsaWVzIHRoZSBbKmAlc2AgY29uc3RydWN0b3IqXSglcykgdG8gdGhlIFsqYXJndW1lbnQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQ29uQXBFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwX2NvbiwgbWtfYXBfZXhwKFtbX2V4cF9hcmddXSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtjb25hcHBfZXhwX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cF9mdW4gPSBleHAoXCJlX2Z1blwiKTtcbmxldCBfZXhwX2RlZmVycmFsID0gZGVmZXJyYWwoKTtcbmxldCBkZWZlcnJlZF9mdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH54X2lkOiBJZC50LCB+ZGVmZXJyZWRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9mdW4pLCB4X2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZGVmZXJyYWwpLCBkZWZlcnJlZF9pZCksXG5dO1xubGV0IGRlZmVycmVkX2Z1bmFwcF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQXBwbGllcyB0aGUgWypmdW5jdGlvbipdKCVzKSB0byB0aGUgWypzdXBwbGllZCBhcmd1bWVudHMqXSglcykuIFRoZSBbKmRlZmVycmVkIGFyZ3VtZW50cypdKCVzKSBjYW4gYmUgYXBwbGllZCBpbiBmdXR1cmUgYXBwbGljYXRpb25zLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9leHAoKTtcbiAge1xuICAgIGlkOiBEZWZlcnJlZEFwRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfZXhwX2Z1bixcbiAgICAgIG1rX2FwX2V4cChbXG4gICAgICAgIFtcbiAgICAgICAgICBleHAoXCIuLi5cIiksXG4gICAgICAgICAgY29tbWEsXG4gICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICBfZXhwX2RlZmVycmFsLFxuICAgICAgICAgIGNvbW1hLFxuICAgICAgICAgIHNwYWNlKCksXG4gICAgICAgICAgZXhwKFwiLi4uXCIpLFxuICAgICAgICBdLFxuICAgICAgXSksXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZGVmZXJyZWRfZnVuYXBwX2V4cF9leF0sXG4gIH07XG59O1xuXG5sZXQgZnVuYXBzOiBncm91cCA9IHtpZDogRnVuQXBFeHAsIGZvcm1zOiBbZnVuYXBwX2V4cF19O1xuXG5sZXQgY29uYXBzOiBncm91cCA9IHtpZDogQ29uQXBFeHAsIGZvcm1zOiBbY29uYXBwX2V4cF19O1xuXG5sZXQgZGVmZXJyZWRhcHM6IGdyb3VwID0ge2lkOiBEZWZlcnJlZEFwRXhwLCBmb3JtczogW2RlZmVycmVkX2Z1bmFwcF9leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfcGF0X2NvbiA9IHBhdChcInBfY29uXCIpO1xubGV0IF9wYXRfYXJnID0gcGF0KFwicF9hcmdcIik7XG5sZXQgYXBfcGF0X2NvbG9yaW5nX2lkcyA9ICh+Y29uX2lkOiBJZC50LCB+YXJnX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfY29uKSwgY29uX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfYXJnKSwgYXJnX2lkKSxcbl07XG5sZXQgYXBfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBtYXRjaCB0aGUgWypjb25zdHJ1Y3RvcipdKCVzKSB3aXRoIGFuICphcmd1bWVudCogbWF0Y2hpbmcgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBtYXRjaCB0aGlzICpjb25zdHJ1Y3RvciBhcHBsaWNhdGlvbiBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBBcFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXRfY29uLCBta19hcF9wYXQoW1tfcGF0X2FyZ11dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgYXA6IGdyb3VwID0ge2lkOiBBcFBhdCwgZm9ybXM6IFthcF9wYXRdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfdHlwX2FyZyA9IHR5cChcInR5X2FyZ1wiKTtcbmxldCBfdHlwX291dCA9IHR5cChcInR5X291dFwiKTtcbmxldCBhcnJvd190eXBfY29sb3JpbmdfaWRzID1cbiAgICAofmFyZ19pZDogSWQudCwgfnJlc3VsdF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2FyZyksIGFyZ19pZCksXG4gIChQaWVjZS5pZChfdHlwX291dCksIHJlc3VsdF9pZCksXG5dO1xubGV0IGFycm93X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGFycm93IHR5cGUgY2xhc3NpZmllcyBmdW5jdGlvbnMgd2l0aCBbKmFyZ3VtZW50IHR5cGUqXSglcykgYW5kIFsqb3V0cHV0IHR5cGUqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQXJyb3dUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfdHlwX2FyZywgc3BhY2UoKSwgYXJyb3coKSwgc3BhY2UoKSwgX3R5cF9vdXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF90eXBfb3V0KSwgW3R5cChcInR5X291dFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF90eXBfYXJnMSA9IHR5cChcInR5X2FyZzFcIik7XG5sZXQgX3R5cF9hcmcyID0gdHlwKFwidHlfYXJnMlwiKTtcbmxldCBfdHlwX291dCA9IHR5cChcInR5X291dFwiKTtcbmxldCBhcnJvdzNfdHlwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5hcmcxX2lkOiBJZC50LCB+YXJnMl9pZDogSWQudCwgfnJlc3VsdF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHlwX2FyZzEpLCBhcmcxX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfYXJnMiksIGFyZzJfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9vdXQpLCByZXN1bHRfaWQpLFxuXTtcbmxldCBhcnJvdzNfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgYXJyb3cgdHlwZSBjbGFzc2lmaWVzIGZ1bmN0aW9ucyB3aXRoIFsqZmlyc3QgYXJndW1lbnQgdHlwZSpdKCVzKSwgWypzZWNvbmQgYXJndW1lbnQgdHlwZSpdKCVzKSwgYW5kIFsqb3V0cHV0IHR5cGUqXSglcykuXCI7XG4gIGxldCBhcnJvdzIgPSBhcnJvdygpO1xuICB7XG4gICAgaWQ6IEFycm93M1R5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgX3R5cF9hcmcxLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIGFycm93KCksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3R5cF9hcmcyLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIGFycm93MixcbiAgICAgIHNwYWNlKCksXG4gICAgICBfdHlwX291dCxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChhcnJvdzIpLCBbdHlwKFwidHlfYXJnMlwiKSwgYXJyb3coKSwgdHlwKFwidHlfb3V0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBhcnJvdzogZ3JvdXAgPSB7aWQ6IEFycm93VHlwLCBmb3JtczogW2Fycm93X3R5cF19O1xuXG5sZXQgYXJyb3czOiBncm91cCA9IHtpZDogQXJyb3czVHlwLCBmb3JtczogW2Fycm93M190eXAsIGFycm93X3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IGNhc2VfZXhhbXBsZV93aWxkX3NpbXBsZSA9IHtcbiAgc3ViX2lkOiBDYXNlV2lsZFNpbXBsZSxcbiAgdGVybTogbWtfZXhhbXBsZShcImNhc2UgMSBcXG58IDIgPT4gMyBcXG58IF8gPT4gNCBcXG5lbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHNjcnV0aW5lZSBvZiB0aGUgY2FzZSBleHByZXNzaW9uIGlzIDEuIFNpbmNlIHRoZSBzY3J1dGluZWUgZG9lcyBub3QgbWF0Y2ggdGhlIHRoZSBmaXJzdCBwYXR0ZXJuIDIuIFNpbmNlIHRoZSBzY3J1dGluZWUgZG9lcyBtYXRjaCB0aGUgc2Vjb25kIHBhdHRlcm4gd2hpY2ggaXMgYSB3aWxkY2FyZCwgdGhlIHNlY29uZCBicmFuY2ggaXMgdGFrZW4uIFRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0aGUgc2Vjb25kIGNsYXVzZSA0LlwiLFxufTtcbmxldCBjYXNlX2V4YW1wbGVfd2lsZF90dXBsZSA9IHtcbiAgc3ViX2lkOiBDYXNlV2lsZFR1cGxlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSAoMSwgMikgXFxufCAoXywgMikgPT4gMyBcXG58IF8gPT4gNCBcXG5lbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHNjcnV0aW5lZSBvZiB0aGUgY2FzZSBleHByZXNzaW9uIGlzICgxLCAyKS4gU2luY2UgdGhlIHNjcnV0aW5lZSBtYXRjaGVzIHRoZSBmaXJzdCBwYXR0ZXJuIChfLCAyKSwgdGhlIGZpcnN0IGJyYW5jaCBpcyB0YWtlbi4gVGhpcyBwYXR0ZXJuIGlzIG1hdGNoZWQgYmVjYXVzZSB0aGUgZmlyc3QgZWxlbWVudCAxIG1hdGNoZXMgdGhlIGZpcnN0IGVsZW1lbnQgcGF0dGVybiwgd2hpY2ggaXMgYSB3aWxkY2FyZCwgYW5kIHRoZSBzZWNvbmQgZWxlbWVudCAyIG1hdGNoZXMgdGhlIHNlY29uZCBlbGVtZW50IHBhdHRlcm4gMi4gVGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBmaXJzdCBjbGF1c2UgMy5cIixcbn07XG5sZXQgY2FzZV9leGFtcGxlX2ludCA9IHtcbiAgc3ViX2lkOiBDYXNlSW50LFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSAxIFxcbnwgMSA9PiAxLjEgXFxufCAyID0+IDIuMiBcXG58IF8gPT4gMy4zIFxcbmVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgc2NydXRpbmVlIG9mIHRoZSBjYXNlIGV4cHJlc3Npb24gaXMgMS4gU2luY2UgdGhlIHNjcnV0aW5lZSBtYXRjaGVzIHRoZSBmaXJzdCBwYXR0ZXJuLCB0aGUgZmlyc3QgYnJhbmNoIGlzIHRha2VuLCBhbmQgdGhlIGNhc2UgZXZhbHVhdGVzIHRvIHRoZSBmaXJzdCBjbGF1c2UuXCIsXG59O1xubGV0IGNhc2VfZXhhbXBsZV9ib29sID0ge1xuICBzdWJfaWQ6IENhc2VCb29sLFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSBmYWxzZSBcXG58IHRydWUgPT4gMSBcXG58IGZhbHNlID0+IDIgXFxuZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBzY3J1dGluZWUgb2YgdGhlIGNhc2UgZXhwcmVzc2lvbiBpcyBmYWxzZS4gVGhlIHNjcnV0aW5lZSBkb2VzIG5vdCBtYXRjaCB0aGUgZmlyc3QgcGF0dGVybiBidXQgZG9lcyBtYXRjaCB0aGUgc2Vjb25kIHBhdHRlcm4sIHNvIHRoZSBzZWNvbmQgYnJhbmNoIGlzIHRha2VuLlwiLFxufTtcbi8vIFRPRE8gLSBJIGRvbid0IHRoaW5rIGNoYW5naW5nIHNwZWNpZmljaXR5IG9uIHRoZSBudW1iZXIgb2YgY2FzZXMgaXMgcmVhbGx5IHRoZSBtb3N0XG4vLyBiZW5lZmljaWFsIHNwZWNpZmljaXR5IGNoYW5nZSAtIEkgdGhpbmsgaW5zdGVhZCBoYXZlIGdlbmVyaWMgYXQgdG9wIGxldmVsXG4vLyBhbmQgdGhlbiBoYXZlIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHNldHVwIGZvciBzcGVjaWZpYyB0aGF0IGlzIGNyZWF0ZWQgbW9yZVxuLy8gZHluYW1pY2FsbHkgY2FsbGluZyBzZXR1cCBtZXRob2RzIGhlcmUgYnV0IG1vcmVcbi8vIHdvcmsgZG9uZSBpbiB0aGUgRXhwbGFpblRoaXMgY29kZSAtIG1heWJlIGp1c3QgdXAgdG8gMyBvciA0IGJyYW5jaGVzP1xubGV0IF9leHBfc2NydXQgPSBleHAoXCJlX3NjcnV0XCIpO1xubGV0IGNhc2VfZXhwX2NvbG9yaW5nX2lkcyA9ICh+c2NydXRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9zY3J1dCksIHNjcnV0X2lkKSxcbl07XG5sZXQgY2FzZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQ29uc2lkZXIgZWFjaCBicmFuY2ggaW4gb3JkZXIuIEZvciB0aGUgZmlyc3QgYnJhbmNoIHdpdGggYSAqcGF0dGVybiogdGhhdCBtYXRjaGVzIHRoZSBbKnNjcnV0aW5lZSpdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBjb3JyZXNwb25kaW5nICpjbGF1c2UqLlwiO1xuICBsZXQgY2FzZSA9XG4gICAgbWtfY2FzZShbXG4gICAgICBbXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9leHBfc2NydXQsXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBta19ydWxlKFtbc3BhY2UoKSwgcGF0KFwicDFcIiksIHNwYWNlKCldXSksXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIGV4cChcImUxXCIpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgICAgbWtfcnVsZShbW3NwYWNlKCksIHBhdChcIi4uLlwiKSwgc3BhY2UoKV1dKSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgZXhwKFwiLi4uXCIpLFxuICAgICAgICBsaW5lYnJlYWsoKSxcbiAgICAgIF0sXG4gICAgXSk7XG4gIHtcbiAgICBpZDogQ2FzZUV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2Nhc2VdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgIGNhc2VfZXhhbXBsZV9pbnQsXG4gICAgICBjYXNlX2V4YW1wbGVfYm9vbCxcbiAgICAgIGNhc2VfZXhhbXBsZV93aWxkX3NpbXBsZSxcbiAgICAgIGNhc2VfZXhhbXBsZV93aWxkX3R1cGxlLFxuICAgIF0sXG4gIH07XG59O1xuXG5sZXQgY2FzZTogZ3JvdXAgPSB7aWQ6IENhc2VFeHAsIGZvcm1zOiBbY2FzZV9leHBdfTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5cbmxldCB2aWV3ID0gKGtpbmQ6IEhhejNsY29yZS5DdHgua2luZCk6IE5vZGUudCA9PlxuICBzd2l0Y2ggKGtpbmQpIHtcbiAgfCBTaW5nbGV0b24odHkpID0+IGRpdl9jKFwia2luZC12aWV3XCIsIFtUeXBlLnZpZXcodHkpXSlcbiAgfCBBYnN0cmFjdCA9PiBkaXZfYyhcImtpbmQtdmlld1wiLCBbdGV4dChcIlR5cGVcIildKVxuICB9O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcblxubGV0IGp1bXBfdG8gPSBlbnRyeSA9PlxuICBHbG9iYWxzLlVwZGF0ZS5KdW1wVG9UaWxlKEhhejNsY29yZS5DdHguZ2V0X2lkKGVudHJ5KSk7XG5cbmxldCBjb250ZXh0X2VudHJ5X3ZpZXcgPSAofmluamVjdCwgZW50cnk6IEhhejNsY29yZS5DdHguZW50cnkpOiBOb2RlLnQgPT4ge1xuICBsZXQgZGl2X25hbWUgPVxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIGNsc3MoW1wibmFtZVwiXSksXG4gICAgICAgICAgQXR0ci5vbl9jbGljayhfID0+IGluamVjdChqdW1wX3RvKGVudHJ5KSkpLFxuICAgICAgICBdKSxcbiAgICApO1xuICBzd2l0Y2ggKGVudHJ5KSB7XG4gIHwgVmFyRW50cnkoe25hbWUsIHR5cCwgX30pXG4gIHwgQ29uc3RydWN0b3JFbnRyeSh7bmFtZSwgdHlwLCBffSkgPT5cbiAgICBkaXZfYyhcbiAgICAgIFwiY29udGV4dC1lbnRyeVwiLFxuICAgICAgW1xuICAgICAgICBkaXZfbmFtZShbdGV4dChuYW1lKV0pLFxuICAgICAgICBkaXYofmF0dHI9Y2xzcyhbXCJzZXBlcmF0b3JcIl0pLCBbdGV4dChcIjpcIildKSxcbiAgICAgICAgVHlwZS52aWV3KHR5cCksXG4gICAgICBdLFxuICAgIClcbiAgfCBUVmFyRW50cnkoe25hbWUsIGtpbmQsIF99KSA9PlxuICAgIGRpdl9jKFxuICAgICAgXCJjb250ZXh0LWVudHJ5XCIsXG4gICAgICBbXG4gICAgICAgIGRpdl9uYW1lKFtUeXBlLmFsaWFzX3ZpZXcobmFtZSldKSxcbiAgICAgICAgZGl2KH5hdHRyPWNsc3MoW1wic2VwZXJhdG9yXCJdKSwgW3RleHQoXCI6OlwiKV0pLFxuICAgICAgICBLaW5kLnZpZXcoa2luZCksXG4gICAgICBdLFxuICAgIClcbiAgfTtcbn07XG5cbmxldCBjdHhfdmlldyA9ICh+aW5qZWN0LCBjdHg6IEhhejNsY29yZS5DdHgudCk6IE5vZGUudCA9PlxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJjb250ZXh0LWVudHJpZXNcIl0pLFxuICAgIExpc3QubWFwKFxuICAgICAgY29udGV4dF9lbnRyeV92aWV3KH5pbmplY3QpLFxuICAgICAgY3R4IHw+IEhhejNsY29yZS5DdHguZmlsdGVyX2R1cGxpY2F0ZXMgfD4gTGlzdC5yZXYsXG4gICAgKSxcbiAgKTtcblxubGV0IGN0eF9zb3J0c192aWV3ID0gKH5pbmplY3QsIGNpOiBIYXozbGNvcmUuU3RhdGljcy5JbmZvLnQpID0+XG4gIEhhejNsY29yZS5JbmZvLmN0eF9vZihjaSlcbiAgfD4gSGF6M2xjb3JlLkN0eC5maWx0ZXJfZHVwbGljYXRlc1xuICB8PiBMaXN0LnJldlxuICB8PiBMaXN0Lm1hcChjb250ZXh0X2VudHJ5X3ZpZXcofmluamVjdCkpO1xuXG5sZXQgdmlldyA9ICh+Z2xvYmFsczogR2xvYmFscy50LCBjaTogSGF6M2xjb3JlLlN0YXRpY3MuSW5mby50KTogTm9kZS50ID0+IHtcbiAgbGV0IGNsc3MgPVxuICAgIGNsc3MoXG4gICAgICBbXCJjb250ZXh0LWluc3BlY3RvclwiXVxuICAgICAgQCAoZ2xvYmFscy5zZXR0aW5ncy5jb250ZXh0X2luc3BlY3RvciA/IFtcInZpc2libGVcIl0gOiBbXSksXG4gICAgKTtcbiAgZGl2KH5hdHRyPWNsc3MsIGN0eF9zb3J0c192aWV3KH5pbmplY3Q9Z2xvYmFscy5pbmplY3RfZ2xvYmFsLCBjaSkpO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5vcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGVycmMgPSBcImVycm9yXCI7XG5sZXQgb2tjID0gXCJva1wiO1xubGV0IGRpdl9lcnIgPSBkaXYofmF0dHI9Y2xzcyhbZXJyY10pKTtcbmxldCBkaXZfb2sgPSBkaXYofmF0dHI9Y2xzcyhbb2tjXSkpO1xuXG5sZXQgY29kZV9lcnIgPSAoY29kZTogc3RyaW5nKTogTm9kZS50ID0+XG4gIGRpdih+YXR0cj1jbHNzKFtcImNvZGVcIl0pLCBbdGV4dChjb2RlKV0pO1xuXG5sZXQgZXhwbGFpbl90aGlzX3RvZ2dsZSA9ICh+Z2xvYmFsczogR2xvYmFscy50KTogTm9kZS50ID0+IHtcbiAgbGV0IHRvb2x0aXAgPSBcIlRvZ2dsZSBsYW5ndWFnZSBkb2N1bWVudGF0aW9uXCI7XG4gIGxldCB0b2dnbGVfZXhwbGFpbl90aGlzID0gXyA9PlxuICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lk1hbnkoW1xuICAgICAgZ2xvYmFscy5pbmplY3RfZ2xvYmFsKFNldChFeHBsYWluVGhpcyhUb2dnbGVTaG93KSkpLFxuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuU3RvcF9wcm9wYWdhdGlvbixcbiAgICBdKTtcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiZXhwbGFpbi10aGlzLWJ1dHRvblwiXSksXG4gICAgW1xuICAgICAgV2lkZ2V0cy50b2dnbGUoXG4gICAgICAgIH50b29sdGlwLFxuICAgICAgICBcIj9cIixcbiAgICAgICAgZ2xvYmFscy5zZXR0aW5ncy5leHBsYWluVGhpcy5zaG93LFxuICAgICAgICB0b2dnbGVfZXhwbGFpbl90aGlzLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGNsc192aWV3ID0gKGNpOiBJbmZvLnQpOiBOb2RlLnQgPT5cbiAgZGl2KH5hdHRyPWNsc3MoW1wic3ludGF4LWNsYXNzXCJdKSwgW3RleHQoY2kgfD4gSW5mby5jbHNfb2YgfD4gQ2xzLnNob3cpXSk7XG5cbmxldCBjdHhfdG9nZ2xlID0gKH5nbG9iYWxzOiBHbG9iYWxzLnQpOiBOb2RlLnQgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5vbl9jbGljayhfID0+IGdsb2JhbHMuaW5qZWN0X2dsb2JhbChTZXQoQ29udGV4dEluc3BlY3RvcikpKSxcbiAgICAgICAgY2xzcyhcbiAgICAgICAgICBbXCJnYW1tYVwiXSBAIChnbG9iYWxzLnNldHRpbmdzLmNvbnRleHRfaW5zcGVjdG9yID8gW1widmlzaWJsZVwiXSA6IFtdKSxcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgIFt0ZXh0KFwizpNcIildLFxuICApO1xuXG5sZXQgdGVybV92aWV3ID0gKH5nbG9iYWxzOiBHbG9iYWxzLnQsIGNpKSA9PiB7XG4gIGxldCBzb3J0ID0gY2kgfD4gSW5mby5zb3J0X29mIHw+IFNvcnQuc2hvdztcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiY2ktaGVhZGVyXCIsIHNvcnRdIEAgKEluZm8uaXNfZXJyb3IoY2kpID8gW2VycmNdIDogW10pKSxcbiAgICBbXG4gICAgICBjdHhfdG9nZ2xlKH5nbG9iYWxzKSxcbiAgICAgIEN0eEluc3BlY3Rvci52aWV3KH5nbG9iYWxzLCBjaSksXG4gICAgICBkaXYofmF0dHI9Y2xzcyhbXCJ0ZXJtLXRhZ1wiXSksIFt0ZXh0KHNvcnQpXSksXG4gICAgICBleHBsYWluX3RoaXNfdG9nZ2xlKH5nbG9iYWxzKSxcbiAgICAgIGNsc192aWV3KGNpKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGVsZW1lbnRzX25vdW46IENscy50ID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IEV4cChNYXRjaCB8IElmKSA9PiBcIkJyYW5jaGVzXCJcbiAgfCBFeHAoTGlzdExpdClcbiAgfCBQYXQoTGlzdExpdCkgPT4gXCJFbGVtZW50c1wiXG4gIHwgRXhwKExpc3RDb25jYXQpID0+IFwiT3BlcmFuZHNcIlxuICB8IF8gPT4gZmFpbHdpdGgoXCJlbGVtZW50c19ub3VuOiBDbHMgZG9lc24ndCBoYXZlIGVsZW1lbnRzXCIpO1xuXG5sZXQgY29tbW9uX2Vycl92aWV3ID0gKGNsczogQ2xzLnQsIGVycjogSW5mby5lcnJvcl9jb21tb24pID0+XG4gIHN3aXRjaCAoZXJyKSB7XG4gIHwgTm9UeXBlKEJhZFRva2VuKHRva2VuKSkgPT5cbiAgICBzd2l0Y2ggKEZvcm0uYmFkX3Rva2VuX2Nscyh0b2tlbikpIHtcbiAgICB8IEJhZEludCA9PiBbdGV4dChcIkludGVnZXIgaXMgdG9vIGxhcmdlIG9yIHRvbyBzbWFsbFwiKV1cbiAgICB8IE90aGVyID0+IFt0ZXh0KFByaW50Zi5zcHJpbnRmKFwiXFxcIiVzXFxcIiBpc24ndCBhIHZhbGlkIHRva2VuXCIsIHRva2VuKSldXG4gICAgfVxuICB8IE5vVHlwZShCYWRUcml2QXAodHkpKSA9PiBbXG4gICAgICB0ZXh0KFwiRnVuY3Rpb24gYXJndW1lbnQgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyh0eSksXG4gICAgICB0ZXh0KFwiaW5jb25zaXN0ZW50IHdpdGhcIiksXG4gICAgICBUeXBlLnZpZXcoUHJvZChbXSkgfD4gVHlwLmZyZXNoKSxcbiAgICBdXG4gIHwgTm9UeXBlKEZyZWVDb25zdHJ1Y3RvcihuYW1lKSkgPT4gW2NvZGVfZXJyKG5hbWUpLCB0ZXh0KFwibm90IGZvdW5kXCIpXVxuICB8IEluY29uc2lzdGVudChXaXRoQXJyb3codHlwKSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcodHlwKSxcbiAgICAgIHRleHQoXCJpbmNvbnNpc3RlbnQgd2l0aCBhcnJvdyB0eXBlXCIpLFxuICAgIF1cbiAgfCBJbmNvbnNpc3RlbnQoRXhwZWN0YXRpb24oe2FuYSwgc3lufSkpID0+IFtcbiAgICAgIHRleHQoXCI6XCIpLFxuICAgICAgVHlwZS52aWV3KHN5biksXG4gICAgICB0ZXh0KFwiaW5jb25zaXN0ZW50IHdpdGggZXhwZWN0ZWQgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCBJbmNvbnNpc3RlbnQoSW50ZXJuYWwodHlzKSkgPT4gW1xuICAgICAgdGV4dChlbGVtZW50c19ub3VuKGNscykgKysgXCIgaGF2ZSBpbmNvbnNpc3RlbnQgdHlwZXM6XCIpLFxuICAgICAgLi4uTGlzdFV0aWwuam9pbih0ZXh0KFwiLFwiKSwgTGlzdC5tYXAoVHlwZS52aWV3LCB0eXMpKSxcbiAgICBdXG4gIH07XG5cbmxldCBjb21tb25fb2tfdmlldyA9IChjbHM6IENscy50LCBvazogSW5mby5va19wYXQpID0+IHtcbiAgc3dpdGNoIChjbHMsIG9rKSB7XG4gIHwgKEV4cChNdWx0aUhvbGUpIHwgUGF0KE11bHRpSG9sZSksIF8pID0+IFtcbiAgICAgIHRleHQoXCJFeHBlY3Rpbmcgb3BlcmF0b3Igb3IgZGVsaW1pdGVyXCIpLFxuICAgIF1cbiAgfCAoRXhwKEVtcHR5SG9sZSksIFN5bihfKSkgPT4gW3RleHQoXCJGaWxsYWJsZSBieSBhbnkgZXhwcmVzc2lvblwiKV1cbiAgfCAoUGF0KEVtcHR5SG9sZSksIFN5bihfKSkgPT4gW3RleHQoXCJGaWxsYWJsZSBieSBhbnkgcGF0dGVyblwiKV1cbiAgfCAoRXhwKEVtcHR5SG9sZSksIEFuYShDb25zaXN0ZW50KHthbmEsIF99KSkpID0+IFtcbiAgICAgIHRleHQoXCJGaWxsYWJsZSBieSBhbnkgZXhwcmVzc2lvbiBvZiB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KGFuYSksXG4gICAgXVxuICB8IChQYXQoRW1wdHlIb2xlKSwgQW5hKENvbnNpc3RlbnQoe2FuYSwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBwYXR0ZXJuIG9mIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKF8sIFN5bihzeW4pKSA9PiBbdGV4dChcIjpcIiksIFR5cGUudmlldyhzeW4pXVxuICB8IChQYXQoVmFyKSB8IFBhdChXaWxkKSwgQW5hKENvbnNpc3RlbnQoe2FuYSwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKF8sIEFuYShDb25zaXN0ZW50KHthbmEsIHN5biwgX30pKSkgd2hlbiBhbmEgPT0gc3luID0+IFtcbiAgICAgIHRleHQoXCI6XCIpLFxuICAgICAgVHlwZS52aWV3KHN5biksXG4gICAgICB0ZXh0KFwiZXF1YWxzIGV4cGVjdGVkIHR5cGVcIiksXG4gICAgXVxuICB8IChfLCBBbmEoQ29uc2lzdGVudCh7YW5hLCBzeW4sIF99KSkpID0+IFtcbiAgICAgIHRleHQoXCI6XCIpLFxuICAgICAgVHlwZS52aWV3KHN5biksXG4gICAgICB0ZXh0KFwiY29uc2lzdGVudCB3aXRoIGV4cGVjdGVkIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKF8sIEFuYShJbnRlcm5hbGx5SW5jb25zaXN0ZW50KHthbmEsIG5vam9pbjogdHlzfSkpKSA9PlxuICAgIFtcbiAgICAgIHRleHQoZWxlbWVudHNfbm91bihjbHMpICsrIFwiIGhhdmUgaW5jb25zaXN0ZW50IHR5cGVzOlwiKSxcbiAgICAgIC4uLkxpc3RVdGlsLmpvaW4odGV4dChcIixcIiksIExpc3QubWFwKFR5cGUudmlldywgdHlzKSksXG4gICAgXVxuICAgIEAgW3RleHQoXCJidXQgY29uc2lzdGVudCB3aXRoIGV4cGVjdGVkXCIpLCBUeXBlLnZpZXcoYW5hKV1cbiAgfTtcbn07XG5cbmxldCB0eXBfb2tfdmlldyA9IChjbHM6IENscy50LCBvazogSW5mby5va190eXApID0+XG4gIHN3aXRjaCAob2spIHtcbiAgfCBUeXBlKF8pIHdoZW4gY2xzID09IFR5cChFbXB0eUhvbGUpID0+IFt0ZXh0KFwiRmlsbGFibGUgYnkgYW55IHR5cGVcIildXG4gIHwgVHlwZSh0eSkgPT4gW1R5cGUudmlldyh0eSksIHRleHQoXCJpcyBhIHR5cGVcIildXG4gIHwgVHlwZUFsaWFzKG5hbWUsIHR5X2xvb2t1cCkgPT4gW1xuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgICAgdGV4dChcImlzIGFuIGFsaWFzIGZvclwiKSxcbiAgICAgIFR5cGUudmlldyh0eV9sb29rdXApLFxuICAgIF1cbiAgfCBWYXJpYW50KG5hbWUsIHN1bV90eSkgPT4gW1xuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgICAgdGV4dChcImlzIGEgc3VtIHR5cGUgY29uc3R1Y3RvciBvZiB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KHN1bV90eSksXG4gICAgXVxuICB8IFZhcmlhbnRJbmNvbXBsZXRlKHN1bV90eSkgPT4gW1xuICAgICAgdGV4dChcIkFuIGluY29tcGxldGUgc3VtIHR5cGUgY29uc3R1Y3RvciBvZiB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KHN1bV90eSksXG4gICAgXVxuICB9O1xuXG5sZXQgdHlwX2Vycl92aWV3ID0gKG9rOiBJbmZvLmVycm9yX3R5cCkgPT5cbiAgc3dpdGNoIChvaykge1xuICB8IEZyZWVUeXBlVmFyaWFibGUobmFtZSkgPT4gW1xuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgICAgdGV4dChcIm5vdCBmb3VuZFwiKSxcbiAgICBdXG4gIHwgQmFkVG9rZW4odG9rZW4pID0+IFtcbiAgICAgIGNvZGVfZXJyKHRva2VuKSxcbiAgICAgIHRleHQoXCJub3QgYSB0eXBlIG9yIHR5cGUgb3BlcmF0b3JcIiksXG4gICAgXVxuICB8IFdhbnRDb25zdHJ1Y3RvckZvdW5kQXBcbiAgfCBXYW50Q29uc3RydWN0b3JGb3VuZFR5cGUoXykgPT4gW3RleHQoXCJFeHBlY3RlZCBhIGNvbnN0cnVjdG9yXCIpXVxuICB8IFdhbnRUeXBlRm91bmRBcCA9PiBbdGV4dChcIk11c3QgYmUgcGFydCBvZiBhIHN1bSB0eXBlXCIpXVxuICB8IER1cGxpY2F0ZUNvbnN0cnVjdG9yKG5hbWUpID0+IFtcbiAgICAgIFR5cGUudmlldyhWYXIobmFtZSkgfD4gVHlwLmZyZXNoKSxcbiAgICAgIHRleHQoXCJhbHJlYWR5IHVzZWQgaW4gdGhpcyBzdW1cIiksXG4gICAgXVxuICB9O1xuXG5sZXQgZXhwX3ZpZXcgPSAoY2xzOiBDbHMudCwgc3RhdHVzOiBJbmZvLnN0YXR1c19leHApID0+XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gIHwgSW5Ib2xlKEZyZWVWYXJpYWJsZShuYW1lKSkgPT5cbiAgICBkaXZfZXJyKFtjb2RlX2VycihuYW1lKSwgdGV4dChcIm5vdCBmb3VuZFwiKV0pXG4gIHwgSW5Ib2xlKFVudXNlZERlZmVycmFsKSA9PlxuICAgIGRpdl9lcnIoW3RleHQoXCJEZWZlcnJhbCBtdXN0IGFwcGVhciBhcyBhIGZ1bmN0aW9uIGFyZ3VtZW50XCIpXSlcbiAgfCBJbkhvbGUoQmFkUGFydGlhbEFwKE5vRGVmZXJyZWRBcmdzKSkgPT5cbiAgICBkaXZfZXJyKFt0ZXh0KFwiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIG5vbi1kZWZlcnJlZCBhcmd1bWVudFwiKV0pXG4gIHwgSW5Ib2xlKEJhZFBhcnRpYWxBcChBcml0eU1pc21hdGNoKHtleHBlY3RlZCwgYWN0dWFsfSkpKSA9PlxuICAgIGRpdl9lcnIoW1xuICAgICAgdGV4dChcbiAgICAgICAgXCJBcml0eSBtaXNtYXRjaDogZXhwZWN0ZWQgXCJcbiAgICAgICAgKysgc3RyaW5nX29mX2ludChleHBlY3RlZClcbiAgICAgICAgKysgXCIgYXJndW1lbnRcIlxuICAgICAgICArKyAoZXhwZWN0ZWQgPT0gMSA/IFwiXCIgOiBcInNcIilcbiAgICAgICAgKysgXCIsIGdvdCBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KGFjdHVhbClcbiAgICAgICAgKysgXCIgYXJndW1lbnRzXCIsXG4gICAgICApLFxuICAgIF0pXG4gIHwgSW5Ib2xlKENvbW1vbihlcnJvcikpID0+IGRpdl9lcnIoY29tbW9uX2Vycl92aWV3KGNscywgZXJyb3IpKVxuICB8IE5vdEluSG9sZShBbmFEZWZlcnJhbENvbnNpc3RlbnQoYW5hKSkgPT5cbiAgICBkaXZfb2soW3RleHQoXCJFeHBlY3RpbmcgdHlwZVwiKSwgVHlwZS52aWV3KGFuYSldKVxuICB8IE5vdEluSG9sZShDb21tb24ob2spKSA9PiBkaXZfb2soY29tbW9uX29rX3ZpZXcoY2xzLCBvaykpXG4gIH07XG5cbmxldCBwYXRfdmlldyA9IChjbHM6IENscy50LCBzdGF0dXM6IEluZm8uc3RhdHVzX3BhdCkgPT5cbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgfCBJbkhvbGUoRXhwZWN0ZWRDb25zdHJ1Y3RvcikgPT4gZGl2X2VycihbdGV4dChcIkV4cGVjdGVkIGEgY29uc3RydWN0b3JcIildKVxuICB8IEluSG9sZShDb21tb24oZXJyb3IpKSA9PiBkaXZfZXJyKGNvbW1vbl9lcnJfdmlldyhjbHMsIGVycm9yKSlcbiAgfCBOb3RJbkhvbGUob2spID0+IGRpdl9vayhjb21tb25fb2tfdmlldyhjbHMsIG9rKSlcbiAgfTtcblxubGV0IHR5cF92aWV3ID0gKGNsczogQ2xzLnQsIHN0YXR1czogSW5mby5zdGF0dXNfdHlwKSA9PlxuICBzd2l0Y2ggKHN0YXR1cykge1xuICB8IE5vdEluSG9sZShvaykgPT4gZGl2X29rKHR5cF9va192aWV3KGNscywgb2spKVxuICB8IEluSG9sZShlcnIpID0+IGRpdl9lcnIodHlwX2Vycl92aWV3KGVycikpXG4gIH07XG5cbmxldCB0cGF0X3ZpZXcgPSAoXzogQ2xzLnQsIHN0YXR1czogSW5mby5zdGF0dXNfdHBhdCkgPT5cbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgfCBOb3RJbkhvbGUoRW1wdHkpID0+IGRpdl9vayhbdGV4dChcIkZpbGxhYmxlIHdpdGggYSBuZXcgYWxpYXNcIildKVxuICB8IE5vdEluSG9sZShWYXIobmFtZSkpID0+IGRpdl9vayhbVHlwZS5hbGlhc192aWV3KG5hbWUpXSlcbiAgfCBJbkhvbGUoTm90QVZhcihOb3RDYXBpdGFsaXplZCkpID0+XG4gICAgZGl2X2VycihbdGV4dChcIk11c3QgYmVnaW4gd2l0aCBhIGNhcGl0YWwgbGV0dGVyXCIpXSlcbiAgfCBJbkhvbGUoTm90QVZhcihfKSkgPT4gZGl2X2VycihbdGV4dChcIkV4cGVjdGVkIGFuIGFsaWFzXCIpXSlcbiAgfCBJbkhvbGUoU2hhZG93c1R5cGUobmFtZSwgQmFzZVR5cCkpID0+XG4gICAgZGl2X2VycihbXG4gICAgICB0ZXh0KFwiQ2FuJ3Qgc2hhZG93IGJhc2UgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhWYXIobmFtZSkgfD4gVHlwLmZyZXNoKSxcbiAgICBdKVxuICB8IEluSG9sZShTaGFkb3dzVHlwZShuYW1lLCBUeUFsaWFzKSkgPT5cbiAgICBkaXZfZXJyKFtcbiAgICAgIHRleHQoXCJDYW4ndCBzaGFkb3cgZXhpc3RpbmcgYWxpYXNcIiksXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpIHw+IFR5cC5mcmVzaCksXG4gICAgXSlcbiAgfCBJbkhvbGUoU2hhZG93c1R5cGUobmFtZSwgVHlWYXIpKSA9PlxuICAgIGRpdl9lcnIoW1xuICAgICAgdGV4dChcIkNhbid0IHNoYWRvdyBleGlzdGluZyB0eXBlIHZhcmlhYmxlXCIpLFxuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgIF0pXG4gIH07XG5cbmxldCBzZWNvbmRhcnlfdmlldyA9IChjbHM6IENscy50KSA9PiBkaXZfb2soW3RleHQoY2xzIHw+IENscy5zaG93KV0pO1xuXG5sZXQgdmlld19vZl9pbmZvID0gKH5nbG9iYWxzLCBjaSk6IE5vZGUudCA9PiB7XG4gIGxldCB3cmFwcGVyID0gc3RhdHVzX3ZpZXcgPT5cbiAgICBkaXYofmF0dHI9Y2xzcyhbXCJpbmZvXCJdKSwgW3Rlcm1fdmlldyh+Z2xvYmFscywgY2kpLCBzdGF0dXNfdmlld10pO1xuICBzd2l0Y2ggKGNpKSB7XG4gIHwgU2Vjb25kYXJ5KF8pID0+IHdyYXBwZXIoZGl2KFtdKSlcbiAgfCBJbmZvRXhwKHtjbHMsIHN0YXR1cywgX30pID0+IHdyYXBwZXIoZXhwX3ZpZXcoY2xzLCBzdGF0dXMpKVxuICB8IEluZm9QYXQoe2Nscywgc3RhdHVzLCBffSkgPT4gd3JhcHBlcihwYXRfdmlldyhjbHMsIHN0YXR1cykpXG4gIHwgSW5mb1R5cCh7Y2xzLCBzdGF0dXMsIF99KSA9PiB3cmFwcGVyKHR5cF92aWV3KGNscywgc3RhdHVzKSlcbiAgfCBJbmZvVFBhdCh7Y2xzLCBzdGF0dXMsIF99KSA9PiB3cmFwcGVyKHRwYXRfdmlldyhjbHMsIHN0YXR1cykpXG4gIH07XG59O1xuXG5sZXQgaW5zcGVjdG9yX3ZpZXcgPSAofmdsb2JhbHMsIGNpKTogTm9kZS50ID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImN1cnNvci1pbnNwZWN0b3JcIl0gQCBbSW5mby5pc19lcnJvcihjaSkgPyBlcnJjIDogb2tjXSksXG4gICAgW3ZpZXdfb2ZfaW5mbyh+Z2xvYmFscywgY2kpXSxcbiAgKTtcblxubGV0IHZpZXcgPSAofmdsb2JhbHM6IEdsb2JhbHMudCwgY3Vyc29yX2luZm86IG9wdGlvbihJbmZvLnQpKSA9PiB7XG4gIGxldCBiYXJfdmlldyA9IGRpdih+YXR0cj1BdHRyLmlkKFwiYm90dG9tLWJhclwiKSk7XG4gIGxldCBlcnJfdmlldyA9IGVyciA9PlxuICAgIGJhcl92aWV3KFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9Y2xzcyhbXCJjdXJzb3ItaW5zcGVjdG9yXCIsIFwibm8taW5mb1wiXSksXG4gICAgICAgIFtkaXYofmF0dHI9Y2xzcyhbXCJpY29uXCJdKSwgW0ljb25zLm1hZ25pZnldKSwgdGV4dChlcnIpXSxcbiAgICAgICksXG4gICAgXSk7XG4gIHN3aXRjaCAoY3Vyc29yX2luZm8pIHtcbiAgfCBfIHdoZW4gIWdsb2JhbHMuc2V0dGluZ3MuY29yZS5zdGF0aWNzID0+IGRpdl9lbXB0eVxuICB8IE5vbmUgPT4gZXJyX3ZpZXcoXCJXaGl0ZXNwYWNlIG9yIENvbW1lbnRcIilcbiAgfCBTb21lKGNpKSA9PlxuICAgIGJhcl92aWV3KFtcbiAgICAgIGluc3BlY3Rvcl92aWV3KH5nbG9iYWxzLCBjaSksXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPWNsc3MoW1wiaWRcIl0pLFxuICAgICAgICBbdGV4dChTdHJpbmcuc3ViKElkLnRvX3N0cmluZyhJbmZvLmlkX29mKGNpKSksIDAsIDQpKV0sXG4gICAgICApLFxuICAgIF0pXG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBXaWRnZXRzO1xuXG5sZXQgb3B0aW9uX3ZpZXcgPSAobmFtZSwgbikgPT5cbiAgb3B0aW9uKFxuICAgIH5hdHRyPW4gPT0gbmFtZSA/IEF0dHIuY3JlYXRlKFwic2VsZWN0ZWRcIiwgXCJzZWxlY3RlZFwiKSA6IEF0dHIubWFueShbXSksXG4gICAgW3RleHQobildLFxuICApO1xuXG5sZXQgbW9kZV9tZW51ID0gKH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhLCB+bW9kZTogU2V0dGluZ3MuTW9kZWwubW9kZSkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJtb2RlLW5hbWVcIiksIEF0dHIudGl0bGUoXCJUb2dnbGUgTW9kZVwiKV0pLFxuICAgIFtcbiAgICAgIHNlbGVjdChcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5vbl9jaGFuZ2UoKF8sIG5hbWUpID0+XG4gICAgICAgICAgICBpbmplY3QoXG4gICAgICAgICAgICAgIEdsb2JhbHMoU2V0KE1vZGUoU2V0dGluZ3MuTW9kZWwubW9kZV9vZl9zdHJpbmcobmFtZSkpKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgb3B0aW9uX3ZpZXcoU2V0dGluZ3MuTW9kZWwuc2hvd19tb2RlKG1vZGUpKSxcbiAgICAgICAgICBbXCJTY3JhdGNoXCIsIFwiRG9jdW1lbnRhdGlvblwiLCBcIkV4ZXJjaXNlc1wiXSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcblxubGV0IHNsaWRlX3NlbGVjdCA9ICh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+bnVtX3NsaWRlcykgPT4ge1xuICBsZXQgbmV4dF9lZCA9IChjdXJfc2xpZGUgKyAxKSBtb2QgbnVtX3NsaWRlcztcbiAgbGV0IHByZXZfZWQgPSBVdGlsLkludFV0aWwubW9kdWxvKGN1cl9zbGlkZSAtIDEsIG51bV9zbGlkZXMpO1xuICBbXG4gICAgYnV0dG9uKEljb25zLmJhY2ssIF8gPT4gaW5qZWN0KFVwZGF0ZS5Td2l0Y2hTY3JhdGNoU2xpZGUocHJldl9lZCkpKSxcbiAgICB0ZXh0KFByaW50Zi5zcHJpbnRmKFwiJWQgLyAlZFwiLCBjdXJfc2xpZGUgKyAxLCBudW1fc2xpZGVzKSksXG4gICAgYnV0dG9uKEljb25zLmZvcndhcmQsIF8gPT4gaW5qZWN0KFVwZGF0ZS5Td2l0Y2hTY3JhdGNoU2xpZGUobmV4dF9lZCkpKSxcbiAgXTtcbn07XG5cbmxldCBzY3JhdGNoX3ZpZXcgPSAofmluamVjdCwgfmN1cl9zbGlkZSwgfnNsaWRlcykgPT5cbiAgW21vZGVfbWVudSh+aW5qZWN0LCB+bW9kZT1TY3JhdGNoKV1cbiAgQCBzbGlkZV9zZWxlY3QofmluamVjdCwgfmN1cl9zbGlkZSwgfm51bV9zbGlkZXM9TGlzdC5sZW5ndGgoc2xpZGVzKSk7XG5cbmxldCBkb2N1bWVudGF0aW9uX3ZpZXcgPSAofmluamVjdCwgfm5hbWUsIH5lZGl0b3JzKSA9PiB7XG4gIGxldCBlZGl0b3JfbmFtZXMgPSBMaXN0Lm1hcChmc3QsIGVkaXRvcnMpO1xuICBsZXQgcmVjIGZpbmRfcHJldl9uZXh0OiBsaXN0KHN0cmluZykgPT4gKG9wdGlvbihzdHJpbmcpLCBvcHRpb24oc3RyaW5nKSkgPVxuICAgIGZ1blxuICAgIHwgW11cbiAgICB8IFtfXSA9PiAoTm9uZSwgTm9uZSlcbiAgICB8IFt4LCB5XSB3aGVuIG5hbWUgPT0geCA9PiAoTm9uZSwgU29tZSh5KSlcbiAgICB8IFt4LCB5XSB3aGVuIG5hbWUgPT0geSA9PiAoU29tZSh4KSwgTm9uZSlcbiAgICB8IFtfLCBfXSA9PiAoTm9uZSwgTm9uZSlcbiAgICB8IFt4LCB5LCAuLi5fXSB3aGVuIG5hbWUgPT0geCA9PiAoTm9uZSwgU29tZSh5KSlcbiAgICB8IFt4LCB5LCB6LCAuLi5fXSB3aGVuIG5hbWUgPT0geSA9PiAoU29tZSh4KSwgU29tZSh6KSlcbiAgICB8IFtfLCAuLi55c10gPT4gZmluZF9wcmV2X25leHQoeXMpO1xuICBsZXQgKHByZXYsIG5leHQpID0gZmluZF9wcmV2X25leHQoZWRpdG9yX25hbWVzKTtcbiAgbGV0IHByZXYgPVxuICAgIHByZXZcbiAgICB8PiBPcHRpb24ubWFwKHMgPT5cbiAgICAgICAgIGJ1dHRvbihJY29ucy5iYWNrLCBfID0+IGluamVjdChVcGRhdGUuU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKHMpKSlcbiAgICAgICApXG4gICAgfD4gT3B0aW9uLnZhbHVlKFxuICAgICAgICAgfmRlZmF1bHQ9XG4gICAgICAgICAgIGJ1dHRvbl9kKFxuICAgICAgICAgICAgIEljb25zLmJhY2ssXG4gICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZS5Td2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoXCJub25lXCIpKSxcbiAgICAgICAgICAgICB+ZGlzYWJsZWQ9dHJ1ZSxcbiAgICAgICAgICAgKSxcbiAgICAgICApO1xuICBsZXQgbmV4dCA9XG4gICAgbmV4dFxuICAgIHw+IE9wdGlvbi5tYXAocyA9PlxuICAgICAgICAgYnV0dG9uKEljb25zLmZvcndhcmQsIF8gPT5cbiAgICAgICAgICAgaW5qZWN0KFVwZGF0ZS5Td2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUocykpXG4gICAgICAgICApXG4gICAgICAgKVxuICAgIHw+IE9wdGlvbi52YWx1ZShcbiAgICAgICAgIH5kZWZhdWx0PVxuICAgICAgICAgICBidXR0b25fZChcbiAgICAgICAgICAgICBJY29ucy5mb3J3YXJkLFxuICAgICAgICAgICAgIGluamVjdChVcGRhdGUuU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKFwibm9uZVwiKSksXG4gICAgICAgICAgICAgfmRpc2FibGVkPXRydWUsXG4gICAgICAgICAgICksXG4gICAgICAgKTtcbiAgW1xuICAgIG1vZGVfbWVudSh+aW5qZWN0LCB+bW9kZT1Eb2N1bWVudGF0aW9uKSxcbiAgICBwcmV2LFxuICAgIHNlbGVjdChcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm9uX2NoYW5nZSgoXywgbmFtZSkgPT5cbiAgICAgICAgICBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShuYW1lKSlcbiAgICAgICAgKSxcbiAgICAgIExpc3QubWFwKG9wdGlvbl92aWV3KG5hbWUpLCBlZGl0b3JfbmFtZXMpLFxuICAgICksXG4gICAgbmV4dCxcbiAgXTtcbn07XG5cbmxldCBpbnN0cnVjdG9yX3RvZ2dsZSA9ICh+aW5qZWN0LCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PlxuICBFeGVyY2lzZVNldHRpbmdzLnNob3dfaW5zdHJ1Y3RvclxuICAgID8gW1xuICAgICAgdG9nZ2xlKFwi8J+Ok1wiLCB+dG9vbHRpcD1cIlRvZ2dsZSBJbnN0cnVjdG9yIE1vZGVcIiwgaW5zdHJ1Y3Rvcl9tb2RlLCBfID0+XG4gICAgICAgIGluamVjdChHbG9iYWxzLlVwZGF0ZS5TZXQoSW5zdHJ1Y3Rvck1vZGUpKVxuICAgICAgKSxcbiAgICBdXG4gICAgOiBbXTtcblxubGV0IGV4ZXJjaXNlc192aWV3ID0gKH5pbmplY3QsIH5jdXJfc2xpZGUsIH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICBbbW9kZV9tZW51KH5pbmplY3QsIH5tb2RlPUV4ZXJjaXNlcyldXG4gIEAgaW5zdHJ1Y3Rvcl90b2dnbGUofmluamVjdD11ID0+IGluamVjdChHbG9iYWxzKHUpKSwgfmluc3RydWN0b3JfbW9kZSlcbiAgQCBzbGlkZV9zZWxlY3QofmluamVjdCwgfmN1cl9zbGlkZSwgfm51bV9zbGlkZXM9TGlzdC5sZW5ndGgoc3BlY3MpKTtcbn07XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSxcbiAgICAgIH5lZGl0b3JzOiBFZGl0b3JzLnQsXG4gICAgICB+c2V0dGluZ3MgYXMge2luc3RydWN0b3JfbW9kZSwgX306IFNldHRpbmdzLnQsXG4gICAgKVxuICAgIDogTm9kZS50ID0+IHtcbiAgbGV0IGNvbnRlbnRzID1cbiAgICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgICB8IFNjcmF0Y2goY3VyX3NsaWRlLCBzbGlkZXMpID0+XG4gICAgICBzY3JhdGNoX3ZpZXcofmluamVjdCwgfmN1cl9zbGlkZSwgfnNsaWRlcylcbiAgICB8IERvY3VtZW50YXRpb24obmFtZSwgZWRpdG9ycykgPT5cbiAgICAgIGRvY3VtZW50YXRpb25fdmlldyh+aW5qZWN0LCB+bmFtZSwgfmVkaXRvcnMpXG4gICAgfCBFeGVyY2lzZXMoY3VyX3NsaWRlLCBzcGVjcywgXykgPT5cbiAgICAgIGV4ZXJjaXNlc192aWV3KH5jdXJfc2xpZGUsIH5zcGVjcywgfmluamVjdCwgfmluc3RydWN0b3JfbW9kZSlcbiAgICB9O1xuICBkaXYofmF0dHI9QXR0ci5pZChcImVkaXRvci1tb2RlXCIpLCBjb250ZW50cyk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG5pbmNsdWRlIEhhejNsc2Nob29sLkdyYWRpbmcuRihFeGVyY2lzZS5FeGVyY2lzZUVudik7XG5cbmxldCBzY29yZV92aWV3ID0gKChlYXJuZWQ6IHBvaW50cywgbWF4OiBwb2ludHMpKSA9PiB7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgIFwidGVzdC1wZXJjZW50XCIsXG4gICAgICAgIEZsb2F0LmVxdWFsKGVhcm5lZCwgbWF4KSA/IFwiYWxsLXBhc3NcIiA6IFwic29tZS1mYWlsXCIsXG4gICAgICBdKSxcbiAgICBbdGV4dChQcmludGYuc3ByaW50ZihcIiUuMWYgLyAlLjFmIHB0c1wiLCBlYXJuZWQsIG1heCkpXSxcbiAgKTtcbn07XG5cbmxldCBwZXJjZW50YWdlX3ZpZXcgPSAocDogcGVyY2VudGFnZSkgPT4ge1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICBcInRlc3QtcGVyY2VudFwiLFxuICAgICAgICBGbG9hdC5lcXVhbChwLCAxLikgPyBcImFsbC1wYXNzXCIgOiBcInNvbWUtZmFpbFwiLFxuICAgICAgXSksXG4gICAgW3RleHQoUHJpbnRmLnNwcmludGYoXCIlLjBmJSVcIiwgMTAwLiAqLiBwKSldLFxuICApO1xufTtcblxubW9kdWxlIFRlc3RWYWxpZGF0aW9uUmVwb3J0ID0ge1xuICBpbmNsdWRlIFRlc3RWYWxpZGF0aW9uUmVwb3J0O1xuICBsZXQgdGV4dHVhbF9zdW1tYXJ5ID0gKHJlcG9ydDogdCkgPT4ge1xuICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgIHwgTm9uZSA9PiBbTm9kZS50ZXh0KFwiTm8gdGVzdCByZXN1bHRzXCIpXVxuICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+IFtcbiAgICAgICAge1xuICAgICAgICAgIGxldCB0b3RhbF90ZXN0cyA9IHRlc3RfcmVzdWx0cy50b3RhbDtcbiAgICAgICAgICBsZXQgcmVxdWlyZWQgPSByZXBvcnQucmVxdWlyZWQ7XG4gICAgICAgICAgbGV0IG51bV90ZXN0c19tZXNzYWdlID1cbiAgICAgICAgICAgIHRvdGFsX3Rlc3RzID49IHJlcXVpcmVkXG4gICAgICAgICAgICAgID8gXCJhdCBsZWFzdCBcIiArKyBzdHJpbmdfb2ZfaW50KHJlcXVpcmVkKVxuICAgICAgICAgICAgICA6IHN0cmluZ19vZl9pbnQodGVzdF9yZXN1bHRzLnRvdGFsKVxuICAgICAgICAgICAgICAgICsrIFwiIG9mIFwiXG4gICAgICAgICAgICAgICAgKysgc3RyaW5nX29mX2ludChyZXBvcnQucmVxdWlyZWQpO1xuICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICBcIkVudGVyZWQgXCJcbiAgICAgICAgICAgICsrIG51bV90ZXN0c19tZXNzYWdlXG4gICAgICAgICAgICArKyBcIiB0ZXN0cy4gXCJcbiAgICAgICAgICAgICsrIHRlc3Rfc3VtbWFyeV9zdHIodGVzdF9yZXN1bHRzKSxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHZpZXcgPSAofmluamVjdCwgcmVwb3J0OiB0LCBtYXhfcG9pbnRzOiBpbnQpID0+IHtcbiAgICBDZWxsLnJlcG9ydF9mb290ZXJfdmlldyhbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXN1bW1hcnlcIl0pLFxuICAgICAgICBbXG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LXRleHRcIiksXG4gICAgICAgICAgICBbc2NvcmVfdmlldyhzY29yZV9vZl9wZXJjZW50KHBlcmNlbnRhZ2UocmVwb3J0KSwgbWF4X3BvaW50cykpXVxuICAgICAgICAgICAgQCB0ZXh0dWFsX3N1bW1hcnkocmVwb3J0KSxcbiAgICAgICAgICApLFxuICAgICAgICBdXG4gICAgICAgIEAgT3B0aW9uLnRvX2xpc3QoXG4gICAgICAgICAgICByZXBvcnQudGVzdF9yZXN1bHRzXG4gICAgICAgICAgICB8PiBPcHRpb24ubWFwKHRlc3RfcmVzdWx0cyA9PlxuICAgICAgICAgICAgICAgICBUZXN0Vmlldy50ZXN0X2JhcihcbiAgICAgICAgICAgICAgICAgICB+aW5qZWN0X2p1bXA9XG4gICAgICAgICAgICAgICAgICAgICBUZXN0Vmlldy5qdW1wX3RvX3Rlc3QoXG4gICAgICAgICAgICAgICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgICAgICAgICAgICAgIFlvdXJUZXN0c1ZhbGlkYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgIF8sXG4gICAgICAgICAgICAgICAgICAgICAgICgpLFxuICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICB+dGVzdF9yZXN1bHRzLFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICApLFxuICAgIF0pO1xuICB9O1xufTtcblxubW9kdWxlIE11dGF0aW9uVGVzdGluZ1JlcG9ydCA9IHtcbiAgaW5jbHVkZSBNdXRhdGlvblRlc3RpbmdSZXBvcnQ7XG4gIG9wZW4gSGF6M2xjb3JlO1xuXG4gIGxldCBzdW1tYXJ5X21lc3NhZ2UgPSAofnNjb3JlLCB+dG90YWwsIH5mb3VuZCk6IE5vZGUudCA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXRleHRcIl0pLFxuICAgICAgW3Njb3JlX3ZpZXcoc2NvcmUpLCB0ZXh0KHN1bW1hcnlfc3RyKH50b3RhbCwgfmZvdW5kKSldLFxuICAgICk7XG5cbiAgbGV0IGJhciA9ICh+aW5qZWN0LCBpbnN0YW5jZXMpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3QtYmFyXCJdKSxcbiAgICAgIExpc3QubWFwaShcbiAgICAgICAgKGlkLCAoc3RhdHVzLCBfKSkgPT5cbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1wic2VnbWVudFwiLCBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpXSksXG4gICAgICAgICAgICAgICAgQXR0ci5vbl9jbGljayhcbiAgICAgICAgICAgICAgICAgIC8vVE9ETzogd2lyZSB1cCB0ZXN0IGlkc1xuICAgICAgICAgICAgICAgICAgVGVzdFZpZXcuanVtcF90b190ZXN0KH5pbmplY3QsIEhpZGRlbkJ1Z3MoaWQpLCBJZC5pbnZhbGlkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICksXG4gICAgICAgIGluc3RhbmNlcyxcbiAgICAgICksXG4gICAgKTtcblxuICBsZXQgc3VtbWFyeSA9ICh+aW5qZWN0LCB+cmVwb3J0LCB+bWF4X3BvaW50cykgPT4ge1xuICAgIGxldCB0b3RhbCA9IExpc3QubGVuZ3RoKHJlcG9ydC5yZXN1bHRzKTtcbiAgICBsZXQgZm91bmQgPVxuICAgICAgTGlzdC5sZW5ndGgoXG4gICAgICAgIExpc3QuZmlsdGVyKCgoeDogVGVzdFN0YXR1cy50LCBfKSkgPT4geCA9PSBQYXNzLCByZXBvcnQucmVzdWx0cyksXG4gICAgICApO1xuICAgIGxldCBzdGF0dXNfY2xhc3MgPSB0b3RhbCA9PSBmb3VuZCA/IFwiUGFzc1wiIDogXCJGYWlsXCI7XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgXCJjZWxsLWl0ZW1cIixcbiAgICAgICAgICBcInRlc3Qtc3VtbWFyeVwiLFxuICAgICAgICAgIFwiY2VsbC1yZXBvcnRcIixcbiAgICAgICAgICBzdGF0dXNfY2xhc3MsXG4gICAgICAgIF0pLFxuICAgICAgW1xuICAgICAgICBzdW1tYXJ5X21lc3NhZ2UoXG4gICAgICAgICAgfnNjb3JlPXNjb3JlX29mX3BlcmNlbnQocGVyY2VudGFnZShyZXBvcnQpLCBtYXhfcG9pbnRzKSxcbiAgICAgICAgICB+dG90YWwsXG4gICAgICAgICAgfmZvdW5kLFxuICAgICAgICApLFxuICAgICAgICBiYXIofmluamVjdCwgcmVwb3J0LnJlc3VsdHMpLFxuICAgICAgXSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydCA9IChpZCwgfmluamVjdCwgfmhpbnQ6IHN0cmluZywgfnN0YXR1czogVGVzdFN0YXR1cy50KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXJlcG9ydFwiXSksXG4gICAgICAgICAgLy9UT0RPOiB3aXJlIHVwIHRlc3QgaWRzXG4gICAgICAgICAgQXR0ci5vbl9jbGljayhcbiAgICAgICAgICAgIFRlc3RWaWV3Lmp1bXBfdG9fdGVzdCh+aW5qZWN0LCBIaWRkZW5CdWdzKGlkKSwgSWQuaW52YWxpZCksXG4gICAgICAgICAgKSxcbiAgICAgICAgXSksXG4gICAgICBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwidGVzdC1pZFwiLFxuICAgICAgICAgICAgICBcIlRlc3RcIiArKyBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgLyogTk9URTogcHJpbnRzIGxleGljYWwgaW5kZXgsIG5vdCB1bmlxdWUgaWQgKi9cbiAgICAgICAgICBbdGV4dChzdHJpbmdfb2ZfaW50KGlkICsgMSkpXSxcbiAgICAgICAgKSxcbiAgICAgICAgLy8gVGVzdFZpZXcudGVzdF9pbnN0YW5jZV92aWV3KH5mb250X21ldHJpY3MsIGluc3RhbmNlKSxcbiAgICAgIF1cbiAgICAgIEAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAgICAgICAgICAgICBcInRlc3QtaGludFwiLFxuICAgICAgICAgICAgICBcInRlc3QtaW5zdGFuY2VcIixcbiAgICAgICAgICAgICAgVGVzdFN0YXR1cy50b19zdHJpbmcoc3RhdHVzKSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIFt0ZXh0KGhpbnQpXSxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgKTtcblxuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnRzID0gKH5pbmplY3QsIGNvdmVyYWdlX3Jlc3VsdHMpID0+XG4gICAgZGl2KFxuICAgICAgY292ZXJhZ2VfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5tYXBpKChpLCAoc3RhdHVzLCBoaW50KSkgPT5cbiAgICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnQoaSwgfmluamVjdCwgfmhpbnQsIH5zdGF0dXMpXG4gICAgICAgICApLFxuICAgICk7XG5cbiAgLy8gbGV0IHBhc3NpbmdfdGVzdF9pZHMgPSB0ZXN0X21hcCA9PlxuICAvLyAgIHRlc3RfbWFwXG4gIC8vICAgfD4gTGlzdC5maWx0ZXIoKChfaWQsIHJlcG9ydHMpKSA9PlxuICAvLyAgICAgICAgTGlzdC5mb3JfYWxsKFxuICAvLyAgICAgICAgICAoKF8sIHN0YXR1cykpID0+IHN0YXR1cyA9PSBIYXozbGNvcmUuVGVzdFN0YXR1cy5QYXNzLFxuICAvLyAgICAgICAgICByZXBvcnRzLFxuICAvLyAgICAgICAgKVxuICAvLyAgICAgIClcbiAgLy8gICB8PiBMaXN0LnNwbGl0XG4gIC8vICAgfD4gZnN0O1xuXG4gIC8vIGxldCBmYWlsaW5nX3Rlc3RfaWRzID0gdGVzdF9tYXAgPT5cbiAgLy8gICB0ZXN0X21hcFxuICAvLyAgIHw+IExpc3QuZmlsdGVyKCgoX2lkLCByZXBvcnRzKSkgPT5cbiAgLy8gICAgICAgIExpc3QuZm9yX2FsbChcbiAgLy8gICAgICAgICAgKChfLCBzdGF0dXMpKSA9PiBzdGF0dXMgPT0gSGF6M2xjb3JlLlRlc3RTdGF0dXMuRmFpbCxcbiAgLy8gICAgICAgICAgcmVwb3J0cyxcbiAgLy8gICAgICAgIClcbiAgLy8gICAgICApXG4gIC8vICAgfD4gTGlzdC5zcGxpdFxuICAvLyAgIHw+IGZzdDtcblxuICAvLyBsZXQgZ2V0X3Rlc3RfbWFwID0gKGVkaXRvcnM6IGxpc3QoSGF6M2xjb3JlLkVkaXRvci50KSkgPT4ge1xuICAvLyAgIGxldCAocmVmZXJlbmNlX3Rlcm0sIHJlZmVyZW5jZV9tYXApID0gc3BsaWNlZF9zdGF0aWNzKGVkaXRvcnMpO1xuICAvLyAgIGxldCByZXN1bHRfcmVmZXJlbmNlID1cbiAgLy8gICAgIEludGVyZmFjZS50ZXN0X3Jlc3VsdHMocmVmZXJlbmNlX21hcCwgcmVmZXJlbmNlX3Rlcm0pO1xuICAvLyAgIHN3aXRjaCAocmVzdWx0X3JlZmVyZW5jZSkge1xuICAvLyAgIHwgTm9uZSA9PiBbXVxuICAvLyAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+IHRlc3RfcmVzdWx0cy50ZXN0X21hcFxuICAvLyAgIH07XG4gIC8vIH07XG4gIC8vIGxldCBzaG93X3Rlcm0gPSAoZWRpdG9yOiBFZGl0b3IudCwgXykgPT5cbiAgLy8gICBlZGl0b3Iuc3RhdGUuemlwcGVyXG4gIC8vICAgfD4gWmlwcGVyLnppcFxuICAvLyAgIHw+IE1ha2VUZXJtLmdvXG4gIC8vICAgfD4gZnN0XG4gIC8vICAgfD4gVUV4cC5zaG93XG4gIC8vICAgfD4gcHJpbnRfZW5kbGluZVxuICAvLyAgIHw+IChfID0+IFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZSk7XG5cbiAgLy8gbGV0IGdldF9maXJzdF9jb21tb24gPVxuICAvLyAgICAgKHJlZmVyZW5jZV9wYXNzaW5nLCB3cm9uZyk6IChUZXN0U3RhdHVzLnQsIG9wdGlvbignYSkpID0+IHtcbiAgLy8gICBsZXQgd3JvbmdfdGVzdF9tYXAgPSB3cm9uZyB8PiBnZXRfdGVzdF9tYXA7XG4gIC8vICAgbGV0IHdyb25nX2ZhaWxpbmcgPSB3cm9uZ190ZXN0X21hcCB8PiBmYWlsaW5nX3Rlc3RfaWRzO1xuICAvLyAgIGxldCBjb21tb24gPVxuICAvLyAgICAgTGlzdC5maWx0ZXIoeCA9PiBMaXN0Lm1lbSh4LCByZWZlcmVuY2VfcGFzc2luZyksIHdyb25nX2ZhaWxpbmcpO1xuICAvLyAgIGxldCBpbnN0YW5jZTogb3B0aW9uKGxpc3QoJ2EpKSA9XG4gIC8vICAgICBzd2l0Y2ggKGNvbW1vbikge1xuICAvLyAgICAgfCBbXSA9PiBOb25lXG4gIC8vICAgICB8IFt4LCAuLi5fXSA9PiBMaXN0LmFzc29jX29wdCh4LCB3cm9uZ190ZXN0X21hcClcbiAgLy8gICAgIH07XG4gIC8vICAgc3dpdGNoIChpbnN0YW5jZSkge1xuICAvLyAgIHwgU29tZShbaW5zdGFuY2UsIC4uLl9dKSA9PiAoVGVzdFN0YXR1cy5QYXNzLCBTb21lKGluc3RhbmNlKSlcbiAgLy8gICB8IF8gPT4gKFRlc3RTdGF0dXMuRmFpbCwgTm9uZSlcbiAgLy8gICB9O1xuICAvLyB9O1xuXG4gIGxldCB2aWV3ID0gKH5pbmplY3QsIHJlcG9ydDogdCwgbWF4X3BvaW50czogaW50KSA9PlxuICAgIGlmIChtYXhfcG9pbnRzID09IDApIHtcbiAgICAgIE5vZGUuZGl2KFtdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgQ2VsbC5wYW5lbChcbiAgICAgICAgfmNsYXNzZXM9W1widGVzdC1wYW5lbFwiXSxcbiAgICAgICAgW1xuICAgICAgICAgIENlbGwuY2FwdGlvbihcbiAgICAgICAgICAgIFwiTXV0YXRpb24gVGVzdGluZ1wiLFxuICAgICAgICAgICAgfnJlc3Q9XCI6IFlvdXIgVGVzdHMgdnMuIEJ1Z2d5IEltcGxlbWVudGF0aW9ucyAoaGlkZGVuKVwiLFxuICAgICAgICAgICksXG4gICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnRzKH5pbmplY3QsIHJlcG9ydC5yZXN1bHRzKSxcbiAgICAgICAgXSxcbiAgICAgICAgfmZvb3Rlcj1Tb21lKHN1bW1hcnkofmluamVjdCwgfnJlcG9ydCwgfm1heF9wb2ludHMpKSxcbiAgICAgICk7XG4gICAgfTtcbn07XG5cbm1vZHVsZSBTeW50YXhSZXBvcnQgPSB7XG4gIGluY2x1ZGUgU3ludGF4UmVwb3J0O1xuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnQgPSAoaTogaW50LCBoaW50OiBzdHJpbmcsIHN0YXR1czogYm9vbCkgPT4ge1xuICAgIGxldCByZXN1bHRfc3RyaW5nID0gc3RhdHVzID8gXCJQYXNzXCIgOiBcIkluZGV0XCI7XG5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1yZXBvcnRcIl0pLFxuICAgICAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3QtaWRcIiwgXCJUZXN0XCIgKysgcmVzdWx0X3N0cmluZ10pLFxuICAgICAgICAgIFt0ZXh0KHN0cmluZ19vZl9pbnQoaSArIDEpKV0sXG4gICAgICAgICksXG4gICAgICBdXG4gICAgICBAIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LWhpbnRcIiwgXCJ0ZXN0LWluc3RhbmNlXCIsIHJlc3VsdF9zdHJpbmddKSxcbiAgICAgICAgICBbdGV4dChoaW50KV0sXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0cyA9IChoaW50ZWRfcmVzdWx0czogbGlzdCgoYm9vbCwgc3RyaW5nKSkpID0+IHtcbiAgICBkaXYoXG4gICAgICBoaW50ZWRfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5tYXBpKChpLCAoc3RhdHVzLCBoaW50KSkgPT5cbiAgICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnQoaSwgaGludCwgc3RhdHVzKVxuICAgICAgICAgKSxcbiAgICApO1xuICB9O1xuXG4gIGxldCB2aWV3ID0gKHN5bnRheF9yZXBvcnQ6IHQpID0+IHtcbiAgICBDZWxsLnBhbmVsKFxuICAgICAgfmNsYXNzZXM9W1widGVzdC1wYW5lbFwiXSxcbiAgICAgIFtcbiAgICAgICAgQ2VsbC5jYXB0aW9uKFxuICAgICAgICAgIFwiU3ludGF4IFZhbGlkYXRpb25cIixcbiAgICAgICAgICB+cmVzdD1cbiAgICAgICAgICAgIFwiOiBEb2VzIHlvdXIgaW1wbGVtZW50YXRpb24gc2F0aXNmeSB0aGUgc3ludGFjdGljIHJlcXVpcmVtZW50cz9cIixcbiAgICAgICAgKSxcbiAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnRzKHN5bnRheF9yZXBvcnQuaGludGVkX3Jlc3VsdHMpLFxuICAgICAgXSxcbiAgICAgIH5mb290ZXI9XG4gICAgICAgIFNvbWUoXG4gICAgICAgICAgQ2VsbC5yZXBvcnRfZm9vdGVyX3ZpZXcoW1xuICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1zdW1tYXJ5XCJdKSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC10ZXh0XCIpLFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBwZXJjZW50YWdlX3ZpZXcoc3ludGF4X3JlcG9ydC5wZXJjZW50YWdlKSxcbiAgICAgICAgICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgICAgICAgICBcIiBvZiB0aGUgSW1wbGVtZW50YXRpb24gVmFsaWRhdGlvbiBwb2ludHMgd2lsbCBiZSBlYXJuZWRcIixcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBJbXBsR3JhZGluZ1JlcG9ydCA9IHtcbiAgb3BlbiBIYXozbGNvcmU7XG4gIGluY2x1ZGUgSW1wbEdyYWRpbmdSZXBvcnQ7XG4gIGxldCB0ZXh0dWFsX3N1bW1hcnkgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlc3VsdHNcIildXG4gICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT4gW1xuICAgICAgICB7XG4gICAgICAgICAgdGV4dCh0ZXN0X3N1bW1hcnlfc3RyKHRlc3RfcmVzdWx0cykpO1xuICAgICAgICB9LFxuICAgICAgXVxuICAgIH07XG4gIH07XG5cbiAgLy8gbGV0IHN1bW1hcnkgPSAofmluamVjdCwgfnJlcG9ydCwgfm1heF9wb2ludHMpID0+IHtcbiAgLy8gICBsZXQgcGVyY2VudGFnZSA9IHBlcmNlbnRhZ2UocmVwb3J0KTtcbiAgLy8gICBsZXQgc2NvcmUgPSBzY29yZV9vZl9wZXJjZW50KHBlcmNlbnRhZ2UpO1xuICAvLyAgIGxldCB0b3RhbCA9IHRvdGFsKHJlcG9ydCk7XG4gIC8vICAgbGV0IG51bV9wYXNzZWQgPSBudW1fcGFzc2VkKHJlcG9ydCk7XG4gIC8vICAgbGV0IHN0YXR1c19jbGFzcyA9IHRvdGFsID09IG51bV9wYXNzZWQgPyBcIlBhc3NcIiA6IFwiRmFpbFwiO1xuICAvLyAgIGRpdihcbiAgLy8gICAgIH5hdHRyPVxuICAvLyAgICAgICBBdHRyLmNsYXNzZXMoW1xuICAvLyAgICAgICAgIFwiY2VsbC1pdGVtXCIsXG4gIC8vICAgICAgICAgXCJ0ZXN0LXN1bW1hcnlcIixcbiAgLy8gICAgICAgICBcImNlbGwtcmVwb3J0XCIsXG4gIC8vICAgICAgICAgc3RhdHVzX2NsYXNzLFxuICAvLyAgICAgICBdKSxcbiAgLy8gICAgIFtcbiAgLy8gICAgICAgc3VtbWFyeV9tZXNzYWdlKFxuICAvLyAgICAgICAgIH5zY29yZSxcbiAgLy8gICAgICAgICB+dG90YWwsXG4gIC8vICAgICAgICAgfmZvdW5kPW51bV9wYXNzZWQsXG4gIC8vICAgICAgICksXG4gIC8vICAgICAgIGJhcih+aW5qZWN0LCByZXBvcnQucmVzdWx0cyksXG4gIC8vICAgICBdLFxuICAvLyAgICk7XG4gIC8vIH07XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0ID0gKGksIH5pbmplY3QsIH5oaW50OiBzdHJpbmcsIH5zdGF0dXMsIChpZCwgXykpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInRlc3QtcmVwb3J0XCJdKSxcbiAgICAgICAgICBBdHRyLm9uX2NsaWNrKFRlc3RWaWV3Lmp1bXBfdG9fdGVzdCh+aW5qZWN0LCBIaWRkZW5UZXN0cywgaWQpKSxcbiAgICAgICAgXSksXG4gICAgICBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwidGVzdC1pZFwiLFxuICAgICAgICAgICAgICBcIlRlc3RcIiArKyBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgLyogTk9URTogcHJpbnRzIGxleGljYWwgaW5kZXgsIG5vdCB1bmlxdWUgaWQgKi9cbiAgICAgICAgICBbdGV4dChzdHJpbmdfb2ZfaW50KGkgKyAxKSldLFxuICAgICAgICApLFxuICAgICAgICAvLyBUZXN0Vmlldy50ZXN0X2luc3RhbmNlX3ZpZXcofmZvbnRfbWV0cmljcywgaW5zdGFuY2UpLFxuICAgICAgXVxuICAgICAgQCBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwidGVzdC1oaW50XCIsXG4gICAgICAgICAgICAgIFwidGVzdC1pbnN0YW5jZVwiLFxuICAgICAgICAgICAgICBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgW3RleHQoaGludCldLFxuICAgICAgICApLFxuICAgICAgXSxcbiAgICApO1xuXG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydHMgPSAofmluamVjdCwgfnJlcG9ydCkgPT4ge1xuICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBMaXN0Lmxlbmd0aCh0ZXN0X3Jlc3VsdHMudGVzdF9tYXApXG4gICAgICAgICAgPT0gTGlzdC5sZW5ndGgocmVwb3J0LmhpbnRlZF9yZXN1bHRzKSA9PlxuICAgICAgLyogTk9URTogVGhpcyBjb25kaXRpb24gd2lsbCBiZSBmYWxzZSB3aGVuIGV2YWx1YXRpb24gY3Jhc2hlcyxcbiAgICAgICAqIGZvciBleGFtcGxlIGR1ZSB0byBhIHN0YWNrIG92ZXJmbG93LCB3aGljaCBtYXkgb2NjdXIgaW4gbm9ybWFsIG9wZXJhdGlvbiAgKi9cbiAgICAgIGRpdihcbiAgICAgICAgcmVwb3J0LmhpbnRlZF9yZXN1bHRzXG4gICAgICAgIHw+IExpc3QubWFwaSgoaSwgKHN0YXR1cywgaGludCkpID0+XG4gICAgICAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnQoXG4gICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgICAgIH5oaW50LFxuICAgICAgICAgICAgICAgfnN0YXR1cyxcbiAgICAgICAgICAgICAgIExpc3QubnRoKHRlc3RfcmVzdWx0cy50ZXN0X21hcCwgaSksXG4gICAgICAgICAgICAgKVxuICAgICAgICAgICApLFxuICAgICAgKVxuICAgIHwgXyA9PiBkaXYoW10pXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdmlldyA9XG4gICAgICAofmluamVjdCwgfnJlcG9ydDogdCwgfnN5bnRheF9yZXBvcnQ6IFN5bnRheFJlcG9ydC50LCB+bWF4X3BvaW50czogaW50KSA9PiB7XG4gICAgQ2VsbC5wYW5lbChcbiAgICAgIH5jbGFzc2VzPVtcImNlbGwtaXRlbVwiLCBcInBhbmVsXCIsIFwidGVzdC1wYW5lbFwiXSxcbiAgICAgIFtcbiAgICAgICAgQ2VsbC5jYXB0aW9uKFxuICAgICAgICAgIFwiSW1wbGVtZW50YXRpb24gR3JhZGluZ1wiLFxuICAgICAgICAgIH5yZXN0PVwiOiBIaWRkZW4gVGVzdHMgdnMuIFlvdXIgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgKSxcbiAgICAgICAgaW5kaXZpZHVhbF9yZXBvcnRzKH5pbmplY3QsIH5yZXBvcnQpLFxuICAgICAgXSxcbiAgICAgIH5mb290ZXI9XG4gICAgICAgIFNvbWUoXG4gICAgICAgICAgQ2VsbC5yZXBvcnRfZm9vdGVyX3ZpZXcoW1xuICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1zdW1tYXJ5XCJdKSxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC10ZXh0XCIpLFxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBzY29yZV92aWV3KFxuICAgICAgICAgICAgICAgICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJjZW50YWdlKHJlcG9ydCwgc3ludGF4X3JlcG9ydCksXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhfcG9pbnRzLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICBAIHRleHR1YWxfc3VtbWFyeShyZXBvcnQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgQCBPcHRpb24udG9fbGlzdChcbiAgICAgICAgICAgICAgICAgIHJlcG9ydC50ZXN0X3Jlc3VsdHNcbiAgICAgICAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAodGVzdF9yZXN1bHRzID0+XG4gICAgICAgICAgICAgICAgICAgICAgIFRlc3RWaWV3LnRlc3RfYmFyKFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5pbmplY3RfanVtcD1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RWaWV3Lmp1bXBfdG9fdGVzdCh+aW5qZWN0LCBIaWRkZW5UZXN0cywgXywgKCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgIH50ZXN0X3Jlc3VsdHMsXG4gICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBHcmFkaW5nUmVwb3J0ID0ge1xuICBpbmNsdWRlIEdyYWRpbmdSZXBvcnQ7XG5cbiAgbGV0IHZpZXdfb3ZlcmFsbF9zY29yZSA9IChyZXBvcnQ6IHQpID0+IHtcbiAgICBzY29yZV92aWV3KG92ZXJhbGxfc2NvcmUocmVwb3J0KSk7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbnR5cGUgbW9kZWwgPSBFeGVyY2lzZS5zdGl0Y2hlZChDZWxsRWRpdG9yLm1vZGVsKTtcblxudHlwZSB2aXNfbWFya2VkKCdhKSA9XG4gIHwgSW5zdHJ1Y3Rvck9ubHkodW5pdCA9PiAnYSlcbiAgfCBBbHdheXMoJ2EpO1xuXG5sZXQgcmVuZGVyX2NlbGxzID0gKHNldHRpbmdzOiBTZXR0aW5ncy50LCB2OiBsaXN0KHZpc19tYXJrZWQoTm9kZS50KSkpID0+IHtcbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIHZpcyA9PlxuICAgICAgc3dpdGNoICh2aXMpIHtcbiAgICAgIHwgSW5zdHJ1Y3Rvck9ubHkoZikgPT4gc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlID8gU29tZShmKCkpIDogTm9uZVxuICAgICAgfCBBbHdheXMobm9kZSkgPT4gU29tZShub2RlKVxuICAgICAgfSxcbiAgICB2LFxuICApO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5nbG9iYWxzOiBHbG9iYWxzLnQsXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnNlbGVjdCxcbiAgICAgIH5zZWxlY3Rpb246IG9wdGlvbigoRXhlcmNpc2UucG9zLCBFZGl0b3JzLlNlbGVjdGlvbi5jZWxsKSksXG4gICAgICB+ZXhlcmNpc2UsXG4gICAgICB+cmVzdWx0cyxcbiAgICAgIH5oaWdobGlnaHRzLFxuICAgICkgPT4ge1xuICBsZXQgRXhlcmNpc2Uue2Vkc30gPSBleGVyY2lzZTtcbiAgbGV0IHN0aXRjaGVkX2R5bmFtaWNzID1cbiAgICBFeGVyY2lzZS5zdGl0Y2hfZHluYW1pYyhcbiAgICAgIGdsb2JhbHMuc2V0dGluZ3MuY29yZSxcbiAgICAgIGV4ZXJjaXNlLFxuICAgICAgZ2xvYmFscy5zZXR0aW5ncy5jb3JlLmR5bmFtaWNzID8gU29tZShyZXN1bHRzKSA6IE5vbmUsXG4gICAgKTtcbiAgbGV0IHtcbiAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgdXNlcl9pbXBsLFxuICAgIHVzZXJfdGVzdHMsXG4gICAgcHJlbHVkZSxcbiAgICBpbnN0cnVjdG9yLFxuICAgIGhpZGRlbl9idWdzLFxuICAgIGhpZGRlbl90ZXN0czogXyxcbiAgfTpcbiAgICBFeGVyY2lzZS5zdGl0Y2hlZChFeGVyY2lzZS5EeW5hbWljc0l0ZW0udCkgPSBzdGl0Y2hlZF9keW5hbWljcztcblxuICBsZXQgZ3JhZGluZ19yZXBvcnQgPSBHcmFkaW5nLkdyYWRpbmdSZXBvcnQubWsoZWRzLCB+c3RpdGNoZWRfZHluYW1pY3MpO1xuXG4gIGxldCBzY29yZV92aWV3ID0gR3JhZGluZy5HcmFkaW5nUmVwb3J0LnZpZXdfb3ZlcmFsbF9zY29yZShncmFkaW5nX3JlcG9ydCk7XG5cbiAgbGV0IGVkaXRvcl92aWV3ID1cbiAgICAgIChcbiAgICAgICAgfmVkaXRvcjogRWRpdG9yLnQsXG4gICAgICAgIH5jYXB0aW9uOiBzdHJpbmcsXG4gICAgICAgIH5zdWJjYXB0aW9uOiBvcHRpb24oc3RyaW5nKT0/LFxuICAgICAgICB+ZGk6IEV4ZXJjaXNlLkR5bmFtaWNzSXRlbS50LFxuICAgICAgICB+cmVzdWx0X2tpbmQ9Q2VsbFJlc3VsdC5WaWV3Lk5vUmVzdWx0cyxcbiAgICAgICAgdGhpc19wb3M6IEV4ZXJjaXNlLnBvcyxcbiAgICAgICkgPT4ge1xuICAgIENlbGxFZGl0b3IudmlldyhcbiAgICAgIH5nbG9iYWxzLFxuICAgICAgfnNlbGVjdD1zID0+IHNlbGVjdCgodGhpc19wb3MsIHMpKSxcbiAgICAgIH5zZWxlY3RlZD1cbiAgICAgICAgc3dpdGNoIChzZWxlY3Rpb24pIHtcbiAgICAgICAgfCBTb21lKChwb3MsIHMpKSB3aGVuIHBvcyA9PSB0aGlzX3BvcyA9PiBTb21lKHMpXG4gICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgIH0sXG4gICAgICB+aW5qZWN0PVxuICAgICAgICBmdW5cbiAgICAgICAgfCBSZXN1bHRBY3Rpb24oU3RlcHBlckVkaXRvckFjdGlvbihfLCBhKSlcbiAgICAgICAgfCBNYWluRWRpdG9yKGEpID0+IGluamVjdChVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihhKSlcbiAgICAgICAgfCBSZXN1bHRBY3Rpb24oU3RlcHBlckFjdGlvbihhKSkgPT5cbiAgICAgICAgICBpbmplY3QoXG4gICAgICAgICAgICBVcGRhdGVBY3Rpb24uU3RlcHBlckFjdGlvbihcbiAgICAgICAgICAgICAgRXhlcmNpc2Uua2V5X2Zvcl9zdGF0aWNzKHRoaXNfcG9zKSxcbiAgICAgICAgICAgICAgYSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICB8IFJlc3VsdEFjdGlvbihUb2dnbGVTdGVwcGVyKSA9PlxuICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5Ub2dnbGVTdGVwcGVyKEV4ZXJjaXNlLmtleV9mb3Jfc3RhdGljcyh0aGlzX3BvcykpLFxuICAgICAgICAgICksXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgIH5yZXN1bHRfa2luZCxcbiAgICAgIH5jYXB0aW9uPUNlbGwuY2FwdGlvbihjYXB0aW9uLCB+cmVzdD0/c3ViY2FwdGlvbiksXG4gICAgICB7XG4gICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBzdGF0aWNzOiB7XG4gICAgICAgICAgICB0ZXJtOiBkaS50ZXJtLFxuICAgICAgICAgICAgaW5mb19tYXA6IGRpLmluZm9fbWFwLFxuICAgICAgICAgICAgZXJyb3JfaWRzOlxuICAgICAgICAgICAgICBTdGF0aWNzLk1hcC5lcnJvcl9pZHMoXG4gICAgICAgICAgICAgICAgZWRpdG9yLnN0YXRlLm1ldGEudGVybV9yYW5nZXMsXG4gICAgICAgICAgICAgICAgZGkuaW5mb19tYXAsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdWx0OiBkaS5yZXN1bHQsXG4gICAgICB9LFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHRpdGxlX3ZpZXcgPSBDZWxsLnRpdGxlX2NlbGwoZWRzLnRpdGxlKTtcblxuICBsZXQgcHJvbXB0X3ZpZXcgPVxuICAgIENlbGwubmFycmF0aXZlX2NlbGwoXG4gICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJjZWxsLXByb21wdFwiKSwgW2Vkcy5wcm9tcHRdKSxcbiAgICApO1xuXG4gIGxldCBwcmVsdWRlX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBQcmVsdWRlLFxuICAgICAgICB+Y2FwdGlvbj1cIlByZWx1ZGVcIixcbiAgICAgICAgfnN1YmNhcHRpb249Z2xvYmFscy5zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgPyBcIlwiIDogXCIgKFJlYWQtT25seSlcIixcbiAgICAgICAgfmVkaXRvcj1lZHMucHJlbHVkZSxcbiAgICAgICAgfmRpPXByZWx1ZGUsXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IGNvcnJlY3RfaW1wbF92aWV3ID1cbiAgICBJbnN0cnVjdG9yT25seShcbiAgICAgICgpID0+XG4gICAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICAgIENvcnJlY3RJbXBsLFxuICAgICAgICAgIH5jYXB0aW9uPVwiQ29ycmVjdCBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICAgIH5lZGl0b3I9ZWRzLmNvcnJlY3RfaW1wbCxcbiAgICAgICAgICB+ZGk9aW5zdHJ1Y3RvcixcbiAgICAgICAgKSxcbiAgICApO1xuXG4gIC8vIGRldGVybWluZSB0cmFpbGluZyBob2xlXG4gIC8vIFRPRE86IG1vZHVsZVxuICBsZXQgY29ycmVjdF9pbXBsX2N0eF92aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICB7XG4gICAgICAgIGxldCBleHBfY3R4X3ZpZXcgPSB7XG4gICAgICAgICAgbGV0IGNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCA9XG4gICAgICAgICAgICBIYXozbGNvcmUuRWRpdG9yLnRyYWlsaW5nX2hvbGVfY3R4KFxuICAgICAgICAgICAgICBlZHMuY29ycmVjdF9pbXBsLFxuICAgICAgICAgICAgICBpbnN0cnVjdG9yLmluZm9fbWFwLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgcHJlbHVkZV90cmFpbGluZ19ob2xlX2N0eCA9XG4gICAgICAgICAgICBIYXozbGNvcmUuRWRpdG9yLnRyYWlsaW5nX2hvbGVfY3R4KGVkcy5wcmVsdWRlLCBwcmVsdWRlLmluZm9fbWFwKTtcbiAgICAgICAgICBzd2l0Y2ggKGNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCwgcHJlbHVkZV90cmFpbGluZ19ob2xlX2N0eCkge1xuICAgICAgICAgIHwgKE5vbmUsIF8pID0+IE5vZGUuZGl2KFt0ZXh0KFwiTm8gY29udGV4dCBhdmFpbGFibGUgKDEpXCIpXSlcbiAgICAgICAgICB8IChfLCBOb25lKSA9PiBOb2RlLmRpdihbdGV4dChcIk5vIGNvbnRleHQgYXZhaWxhYmxlICgyKVwiKV0pIC8vIFRPRE8gc2hvdyBleGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yXG4gICAgICAgICAgfCAoXG4gICAgICAgICAgICAgIFNvbWUoY29ycmVjdF9pbXBsX3RyYWlsaW5nX2hvbGVfY3R4KSxcbiAgICAgICAgICAgICAgU29tZShwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4KSxcbiAgICAgICAgICAgICkgPT5cbiAgICAgICAgICAgIGxldCBzcGVjaWZpY19jdHggPVxuICAgICAgICAgICAgICBIYXozbGNvcmUuQ3R4LnN1YnRyYWN0X3ByZWZpeChcbiAgICAgICAgICAgICAgICBjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgsXG4gICAgICAgICAgICAgICAgcHJlbHVkZV90cmFpbGluZ19ob2xlX2N0eCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHN3aXRjaCAoc3BlY2lmaWNfY3R4KSB7XG4gICAgICAgICAgICB8IE5vbmUgPT4gTm9kZS5kaXYoW3RleHQoXCJObyBjb250ZXh0IGF2YWlsYWJsZVwiKV0pIC8vIFRPRE8gc2hvdyBleGVyY2lzZSBjb25maWd1cmF0aW9uIGVycm9yXG4gICAgICAgICAgICB8IFNvbWUoc3BlY2lmaWNfY3R4KSA9PlxuICAgICAgICAgICAgICBDdHhJbnNwZWN0b3IuY3R4X3ZpZXcoXG4gICAgICAgICAgICAgICAgfmluamVjdD1nbG9iYWxzLmluamVjdF9nbG9iYWwsXG4gICAgICAgICAgICAgICAgc3BlY2lmaWNfY3R4LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIENlbGwuc2ltcGxlX2NlbGxfdmlldyhbXG4gICAgICAgICAgQ2VsbC5zaW1wbGVfY2VsbF9pdGVtKFtcbiAgICAgICAgICAgIENlbGwuY2FwdGlvbihcbiAgICAgICAgICAgICAgXCJDb3JyZWN0IEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgICAgICAgIH5yZXN0PVwiIChUeXBlIFNpZ25hdHVyZXMgT25seSlcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBleHBfY3R4X3ZpZXcsXG4gICAgICAgICAgXSksXG4gICAgICAgIF0pO1xuICAgICAgfSxcbiAgICApO1xuXG4gIGxldCB5b3VyX3Rlc3RzX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBZb3VyVGVzdHNWYWxpZGF0aW9uLFxuICAgICAgICB+Y2FwdGlvbj1cIlRlc3QgVmFsaWRhdGlvblwiLFxuICAgICAgICB+c3ViY2FwdGlvbj1cIjogWW91ciBUZXN0cyB2cy4gQ29ycmVjdCBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICB+ZWRpdG9yPWVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgICB+ZGk9dGVzdF92YWxpZGF0aW9uLFxuICAgICAgICB+cmVzdWx0X2tpbmQ9VGVzdFJlc3VsdHMsXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IHdyb25nX2ltcGxfdmlld3MgPVxuICAgIExpc3QubWFwaShcbiAgICAgIChpLCAoRXhlcmNpc2Uue2ltcGwsIF99LCBkaSkpID0+IHtcbiAgICAgICAgSW5zdHJ1Y3Rvck9ubHkoXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICAgICAgICBIaWRkZW5CdWdzKGkpLFxuICAgICAgICAgICAgICB+Y2FwdGlvbj1cIldyb25nIEltcGxlbWVudGF0aW9uIFwiICsrIHN0cmluZ19vZl9pbnQoaSArIDEpLFxuICAgICAgICAgICAgICB+ZWRpdG9yPWltcGwsXG4gICAgICAgICAgICAgIH5kaSxcbiAgICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH0sXG4gICAgICBMaXN0LmNvbWJpbmUoZWRzLmhpZGRlbl9idWdzLCBoaWRkZW5fYnVncyksXG4gICAgKTtcblxuICBsZXQgbXV0YXRpb25fdGVzdGluZ192aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICBHcmFkaW5nLk11dGF0aW9uVGVzdGluZ1JlcG9ydC52aWV3KFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICBncmFkaW5nX3JlcG9ydC5tdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCxcbiAgICAgICAgZ3JhZGluZ19yZXBvcnQucG9pbnRfZGlzdHJpYnV0aW9uLm11dGF0aW9uX3Rlc3RpbmcsXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IHlvdXJfaW1wbF92aWV3ID0ge1xuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBZb3VySW1wbCxcbiAgICAgICAgfmNhcHRpb249XCJZb3VyIEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgIH5lZGl0b3I9ZWRzLnlvdXJfaW1wbCxcbiAgICAgICAgfmRpPXVzZXJfaW1wbCxcbiAgICAgICAgfnJlc3VsdF9raW5kPUV2YWxSZXN1bHRzLFxuICAgICAgKSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBzeW50YXhfZ3JhZGluZ192aWV3ID1cbiAgICBBbHdheXMoR3JhZGluZy5TeW50YXhSZXBvcnQudmlldyhncmFkaW5nX3JlcG9ydC5zeW50YXhfcmVwb3J0KSk7XG5cbiAgbGV0IGltcGxfdmFsaWRhdGlvbl92aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgWW91clRlc3RzVGVzdGluZyxcbiAgICAgICAgfmNhcHRpb249XCJJbXBsZW1lbnRhdGlvbiBWYWxpZGF0aW9uXCIsXG4gICAgICAgIH5zdWJjYXB0aW9uPVxuICAgICAgICAgIFwiOiBZb3VyIFRlc3RzIChjb2RlIHN5bmNocm9uaXplZCB3aXRoIFRlc3QgVmFsaWRhdGlvbiBjZWxsIGFib3ZlKSB2cy4gWW91ciBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICB+ZWRpdG9yPWVkcy55b3VyX3Rlc3RzLnRlc3RzLFxuICAgICAgICB+ZGk9dXNlcl90ZXN0cyxcbiAgICAgICAgfnJlc3VsdF9raW5kPVRlc3RSZXN1bHRzLFxuICAgICAgKSxcbiAgICApO1xuXG4gIGxldCBoaWRkZW5fdGVzdHNfdmlldyA9XG4gICAgSW5zdHJ1Y3Rvck9ubHkoXG4gICAgICAoKSA9PlxuICAgICAgICBlZGl0b3JfdmlldyhcbiAgICAgICAgICBIaWRkZW5UZXN0cyxcbiAgICAgICAgICB+Y2FwdGlvbj1cIkhpZGRlbiBUZXN0c1wiLFxuICAgICAgICAgIH5lZGl0b3I9ZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyxcbiAgICAgICAgICB+ZGk9aW5zdHJ1Y3RvcixcbiAgICAgICAgKSxcbiAgICApO1xuXG4gIGxldCBpbXBsX2dyYWRpbmdfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAgR3JhZGluZy5JbXBsR3JhZGluZ1JlcG9ydC52aWV3KFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+cmVwb3J0PWdyYWRpbmdfcmVwb3J0LmltcGxfZ3JhZGluZ19yZXBvcnQsXG4gICAgICAgIH5zeW50YXhfcmVwb3J0PWdyYWRpbmdfcmVwb3J0LnN5bnRheF9yZXBvcnQsXG4gICAgICAgIH5tYXhfcG9pbnRzPWdyYWRpbmdfcmVwb3J0LnBvaW50X2Rpc3RyaWJ1dGlvbi5pbXBsX2dyYWRpbmcsXG4gICAgICApLFxuICAgICk7XG5cbiAgW3Njb3JlX3ZpZXcsIHRpdGxlX3ZpZXcsIHByb21wdF92aWV3XVxuICBAIHJlbmRlcl9jZWxscyhcbiAgICAgIGdsb2JhbHMuc2V0dGluZ3MsXG4gICAgICBbXG4gICAgICAgIHByZWx1ZGVfdmlldyxcbiAgICAgICAgY29ycmVjdF9pbXBsX3ZpZXcsXG4gICAgICAgIGNvcnJlY3RfaW1wbF9jdHhfdmlldyxcbiAgICAgICAgeW91cl90ZXN0c192aWV3LFxuICAgICAgXVxuICAgICAgQCB3cm9uZ19pbXBsX3ZpZXdzXG4gICAgICBAIFtcbiAgICAgICAgbXV0YXRpb25fdGVzdGluZ192aWV3LFxuICAgICAgICB5b3VyX2ltcGxfdmlldyxcbiAgICAgICAgc3ludGF4X2dyYWRpbmdfdmlldyxcbiAgICAgICAgaW1wbF92YWxpZGF0aW9uX3ZpZXcsXG4gICAgICAgIGhpZGRlbl90ZXN0c192aWV3LFxuICAgICAgICBpbXBsX2dyYWRpbmdfdmlldyxcbiAgICAgIF0sXG4gICAgKTtcbn07XG5cbmxldCByZXNldF9idXR0b24gPSBpbmplY3QgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMudHJhc2gsXG4gICAgXyA9PiB7XG4gICAgICBsZXQgY29uZmlybWVkID1cbiAgICAgICAgSnNVdGlsLmNvbmZpcm0oXG4gICAgICAgICAgXCJBcmUgeW91IFNVUkUgeW91IHdhbnQgdG8gcmVzZXQgdGhpcyBleGVyY2lzZT8gWW91IHdpbGwgbG9zZSBhbnkgZXhpc3RpbmcgY29kZSB0aGF0IHlvdSBoYXZlIHdyaXR0ZW4sIGFuZCBjb3Vyc2Ugc3RhZmYgaGF2ZSBubyB3YXkgdG8gcmVzdG9yZSBpdCFcIixcbiAgICAgICAgKTtcbiAgICAgIGlmIChjb25maXJtZWQpIHtcbiAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5SZXNldEN1cnJlbnRFZGl0b3IpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgICAgfTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiUmVzZXQgRXhlcmNpc2VcIixcbiAgKTtcblxubGV0IGluc3RydWN0b3JfZXhwb3J0ID0gKGV4ZXJjaXNlOiBFeGVyY2lzZS5zdGF0ZSkgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3RhcixcbiAgICBfID0+IHtcbiAgICAgIC8vIC5tbCBmaWxlcyBiZWNhdXNlIHNob3cgdXNlcyBPQ2FtbCBzeW50YXggKGR1bmUgaGFuZGxlcyBzZWFtbGVzc2x5KVxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lO1xuICAgICAgbGV0IGZpbGVuYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lICsrIFwiLm1sXCI7XG4gICAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L3BsYWluXCI7XG4gICAgICBsZXQgY29udGVudHMgPSBFeGVyY2lzZS5leHBvcnRfbW9kdWxlKG1vZHVsZV9uYW1lLCBleGVyY2lzZSk7XG4gICAgICBKc1V0aWwuZG93bmxvYWRfc3RyaW5nX2ZpbGUofmZpbGVuYW1lLCB+Y29udGVudF90eXBlLCB+Y29udGVudHMpO1xuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJFeHBvcnQgRXhlcmNpc2UgTW9kdWxlXCIsXG4gICk7XG5cbmxldCBpbnN0cnVjdG9yX3RyYW5zaXRpb25hcnlfZXhwb3J0ID0gKGV4ZXJjaXNlOiBFeGVyY2lzZS5zdGF0ZSkgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3RhcixcbiAgICBfID0+IHtcbiAgICAgIC8vIC5tbCBmaWxlcyBiZWNhdXNlIHNob3cgdXNlcyBPQ2FtbCBzeW50YXggKGR1bmUgaGFuZGxlcyBzZWFtbGVzc2x5KVxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lO1xuICAgICAgbGV0IGZpbGVuYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lICsrIFwiLm1sXCI7XG4gICAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L3BsYWluXCI7XG4gICAgICBsZXQgY29udGVudHMgPVxuICAgICAgICBFeGVyY2lzZS5leHBvcnRfdHJhbnNpdGlvbmFyeV9tb2R1bGUobW9kdWxlX25hbWUsIGV4ZXJjaXNlKTtcbiAgICAgIEpzVXRpbC5kb3dubG9hZF9zdHJpbmdfZmlsZSh+ZmlsZW5hbWUsIH5jb250ZW50X3R5cGUsIH5jb250ZW50cyk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBUcmFuc2l0aW9uYXJ5IEV4ZXJjaXNlIE1vZHVsZVwiLFxuICApO1xuXG5sZXQgaW5zdHJ1Y3Rvcl9ncmFkaW5nX2V4cG9ydCA9IChleGVyY2lzZTogRXhlcmNpc2Uuc3RhdGUpID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICAvLyAubWwgZmlsZXMgYmVjYXVzZSBzaG93IHVzZXMgT0NhbWwgc3ludGF4IChkdW5lIGhhbmRsZXMgc2VhbWxlc3NseSlcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IGV4ZXJjaXNlLmVkcy5tb2R1bGVfbmFtZTtcbiAgICAgIGxldCBmaWxlbmFtZSA9IGV4ZXJjaXNlLmVkcy5tb2R1bGVfbmFtZSArKyBcIl9ncmFkaW5nLm1sXCI7XG4gICAgICBsZXQgY29udGVudF90eXBlID0gXCJ0ZXh0L3BsYWluXCI7XG4gICAgICBsZXQgY29udGVudHMgPSBFeGVyY2lzZS5leHBvcnRfZ3JhZGluZ19tb2R1bGUobW9kdWxlX25hbWUsIGV4ZXJjaXNlKTtcbiAgICAgIEpzVXRpbC5kb3dubG9hZF9zdHJpbmdfZmlsZSh+ZmlsZW5hbWUsIH5jb250ZW50X3R5cGUsIH5jb250ZW50cyk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBHcmFkaW5nIEV4ZXJjaXNlIE1vZHVsZVwiLFxuICApO1xuXG5sZXQgZG93bmxvYWRfZWRpdG9yX3N0YXRlID0gKH5pbnN0cnVjdG9yX21vZGUpID0+XG4gIExvZy5nZXRfYW5kKGxvZyA9PiB7XG4gICAgbGV0IGRhdGEgPSBFeHBvcnQuZXhwb3J0X2FsbCh+aW5zdHJ1Y3Rvcl9tb2RlLCB+bG9nKTtcbiAgICBKc1V0aWwuZG93bmxvYWRfanNvbihFeGVyY2lzZVNldHRpbmdzLmZpbGVuYW1lLCBkYXRhKTtcbiAgfSk7XG5cbmxldCBleHBvcnRfc3VibWlzc2lvbiA9ICh+c2V0dGluZ3M6IFNldHRpbmdzLnQpID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICBkb3dubG9hZF9lZGl0b3Jfc3RhdGUofmluc3RydWN0b3JfbW9kZT1zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJFeHBvcnQgU3VibWlzc2lvblwiLFxuICApO1xuXG5sZXQgaW1wb3J0X3N1Ym1pc3Npb24gPSAofmluamVjdCkgPT5cbiAgV2lkZ2V0cy5maWxlX3NlbGVjdF9idXR0b25fbmFtZWQoXG4gICAgXCJpbXBvcnQtc3VibWlzc2lvblwiLFxuICAgIEljb25zLnN0YXIsXG4gICAgZmlsZSA9PiB7XG4gICAgICBzd2l0Y2ggKGZpbGUpIHtcbiAgICAgIHwgTm9uZSA9PiBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmVcbiAgICAgIHwgU29tZShmaWxlKSA9PiBpbmplY3QoVXBkYXRlQWN0aW9uLkluaXRJbXBvcnRBbGwoZmlsZSkpXG4gICAgICB9XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkltcG9ydCBTdWJtaXNzaW9uXCIsXG4gICk7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZmlsdGVyX3BhdXNlID0gKH5wX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgZ3JvdXBfaWQ6IEZpbHRlclBhdXNlLFxuICBmb3JtX2lkOiBGaWx0ZXJQYXVzZSxcbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwicFwiLCBwX2lkKSwgKFwiZV9ib2R5XCIsIGJvZHlfaWQpLCAocCcsIGVfYm9keScpID0+XG4gICAgICBbbWtfcGF1c2UoW1tzcGFjZSgpLCBwJywgc3BhY2UoKV1dKSwgbGluZWJyZWFrKCksIGVfYm9keSddXG4gICAgKSxcbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIlBhdXNlIGZpbHRlciBmb3Igc3RlcHBlci4gVGhlIGV2YWx1YXRpb24gb2YgYWxsIHN1YmV4cHJlc3Npb25zIHdpdGhpbiBbKmJvZHkqXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIHdpbGwgYmUgcGF1c2VkIGR1cmluZyBldmFsdWF0aW9uXCIsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIHBfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaWx0ZXJTdGVwLFxuICAgICAgdGVybTogbWtfZXhhbXBsZShcImV2YWwgJGUgKyAkZSBpblxcbigxICsgMikgKiAoMyArIDQpXCIpLFxuICAgICAgbWVzc2FnZTogXCJUaGUgZXhwcmVzc2lvbiAoMSAqIDIpICsgKDMgKiA0KSBpcyBndWFyZGVkIGJ5IGEgcGF1c2UgZmlsdGVyIGV4cHJlc3Npb24gcGF1c2UgJHYgKyAkdiwgd2hpY2ggaW5zdHJ1Y3QgdGhlIGV2YWx1YXRvciB0byBwYXVzZSB0aGUgZXZhbHVhdGlvbiB3aGVuIGl0IHNlZXMgYSB2YWx1ZSBpcyBhZGRlZCB0byBhbm90aGVyIHZhbHVlLiBBZnRlciBldmFsdWF0aW5nIHN1YnRlcm1zICgxICogMikgYW5kICgzICogNCksIHRoZSBleHByZXNzaW9uIHR1cm5zIGludG8gMiArIDEyLiAyIG1hdGNoZXMgdGhlIGZpcnN0ICR2IHBhdHRlcm4sIGFuZCAxMiBtYXRjaGVzIHRoZSBzZWNvbmQgJHYgcGF0dGVybi4gVGhlcmVmb3JlLCB0aGUgZXZhbHVhdG9yIHN0b3BzIHdoZW4gdGhlIGV4cHJlc3Npb24gc3RlcHMgdG8gMiArIDEyXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCBmaWx0ZXJfZXZhbCA9ICh+cF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJFdmFsLFxuICBmb3JtX2lkOiBGaWx0ZXJFdmFsLFxuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJwXCIsIHBfaWQpLCAoXCJlX2JvZHlcIiwgYm9keV9pZCksIChwJywgZV9ib2R5JykgPT5cbiAgICAgIFtta19ldmFsKFtbc3BhY2UoKSwgcCcsIHNwYWNlKCldXSksIGxpbmVicmVhaygpLCBlX2JvZHknXVxuICAgICksXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJGdWxsIGV2YWx1YXRpb24gZmlsdGVyIGZvciBzdGVwcGVyLiBBbGwgc3ViZXhwcmVzc2lvbnMgd2l0aGluIFsqYm9keSpdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgd2lsbCBnZXQgZXZhbHVhdGVkIGluIG9uZSBnb1wiLFxuICAgICAgYm9keV9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBwX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogRmlsdGVyRXZhbCxcbiAgICAgIHRlcm06XG4gICAgICAgIG1rX2V4YW1wbGUoXG4gICAgICAgICAgXCJwYXVzZSAkZSBpblxcbmhpZGUgbGV0ID0gaW4gaW5cXG5sZXQgeCA9IDEgaW5cXG5sZXQgeSA9IDIgaW5cXG54ICsgeVwiLFxuICAgICAgICApLFxuICAgICAgbWVzc2FnZTogXCJwYXVzZSAkZSBpbiBpbnN0cnVjdCB0aGUgZXZhbHVhdG9yIHRvIGFjdCBsaWtlIGEgc2luZ2xlLXN0ZXBwZXIsIGUuZy4gc3RvcCBhdCBldmVyeSBzdGVwLiBUaGUgaGlkZSBmaWx0ZXIgZXhwcmVzc2lvbiBpbnN0cnVjdHMgdGhlIGV2YWx1YXRvciB0byBza2lwIG92ZXIgYWxsIGV2YWx1YXRvciBzdGVwcyB0aGF0IGRlc3RydWN0cyBwZXJmb3JtIHN1YnN0aXR1dGlvbiBvbiBhIGxldC1leHByZXNzaW9uLiBIZXJlLCB0aGUgc3Vic3RpdHV0aW9uIG9mIHZhcmlhYmxlIHggYW5kIHkgaXMgc2tpcHBlZCBvdmVyIGFuZCB3ZSBkaXJlY3RseSBnb3QgMSArIDIgaW4gdGhlIHJlc3VsdCBhcmVhLlwiLFxuICAgIH0sXG4gIF0sXG59O1xuXG5sZXQgZmlsdGVyX2hpZGUgPSAofnBfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICBncm91cF9pZDogRmlsdGVySGlkZSxcbiAgZm9ybV9pZDogRmlsdGVySGlkZSxcbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwicFwiLCBwX2lkKSwgKFwiZV9ib2R5XCIsIGJvZHlfaWQpLCAocCcsIGVfYm9keScpID0+XG4gICAgICBbbWtfaGlkZShbW3NwYWNlKCksIHAnLCBzcGFjZSgpXV0pLCBsaW5lYnJlYWsoKSwgZV9ib2R5J11cbiAgICApLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiU3RlcCBoaWRpbmcgZmlsdGVyIGZvciBzdGVwcGVyLiBUaGUgZWxpbWluYXRpb24gb2YgYWxsIGxhbmd1YWdlIGNvbnN0cnVjdHMgKGxpa2UgYmluYXJ5IG9wZXJhdG9yICsgb3IgbGV0IC4uID0gLi4gaW4pIHdpdGhpbiBbKmJvZHkqXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIHdpbGwgZ2V0IHNraXBwZWQuXCIsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIHBfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaWx0ZXJIaWRlLFxuICAgICAgdGVybTpcbiAgICAgICAgbWtfZXhhbXBsZShcbiAgICAgICAgICBcInBhdXNlICRlIGluXFxuaGlkZSBsZXQgPSBpbiBpblxcbmxldCB4ID0gMSBpblxcbmxldCB5ID0gMiBpblxcbnggKyB5XCIsXG4gICAgICAgICksXG4gICAgICBtZXNzYWdlOiBcInBhdXNlICRlIGluIGluc3RydWN0IHRoZSBldmFsdWF0b3IgdG8gYWN0IGxpa2UgYSBzaW5nbGUtc3RlcHBlciwgZS5nLiBzdG9wIGF0IGV2ZXJ5IHN0ZXAuIFRoZSBoaWRlIGZpbHRlciBleHByZXNzaW9uIGluc3RydWN0cyB0aGUgZXZhbHVhdG9yIHRvIHNraXAgb3ZlciBhbGwgZXZhbHVhdG9yIHN0ZXBzIHRoYXQgZGVzdHJ1Y3RzIHBlcmZvcm0gc3Vic3RpdHV0aW9uIG9uIGEgbGV0LWV4cHJlc3Npb24uIEhlcmUsIHRoZSBzdWJzdGl0dXRpb24gb2YgdmFyaWFibGUgeCBhbmQgeSBpcyBza2lwcGVkIG92ZXIgYW5kIHdlIGRpcmVjdGx5IGdvdCAxICsgMiBpbiB0aGUgcmVzdWx0IGFyZWEuXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCBmaWx0ZXJfZGVidWcgPSAofnBfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICBncm91cF9pZDogRmlsdGVyRGVidWcsXG4gIGZvcm1faWQ6IEZpbHRlckRlYnVnLFxuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJwXCIsIHBfaWQpLCAoXCJlX2JvZHlcIiwgYm9keV9pZCksIChwJywgZV9ib2R5JykgPT5cbiAgICAgIFtta19kZWJ1ZyhbW3NwYWNlKCksIHAnLCBzcGFjZSgpXV0pLCBsaW5lYnJlYWsoKSwgZV9ib2R5J11cbiAgICApLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiRGVidWcgZmlsdGVyIGZvciBzdGVwcGVyLiBBbGwgbWF0Y2hlZCBzdWItZXhwcmVzc2lvbiB3aXRoaW4gWypib2R5Kl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSB3aWxsIGJlIHN0ZXBwZWQgdGhyb3VnaC5cIixcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgcF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgKSxcbiAgZXhhbXBsZXM6IFtcbiAgICB7XG4gICAgICBzdWJfaWQ6IEZpbHRlckRlYnVnLFxuICAgICAgdGVybTogbWtfZXhhbXBsZShcImV2YWwgJGUgaW5cXG5kZWJ1ZyAkdiArICR2ICsgJHYgaW5cXG4xICsgMiArIDNcIiksXG4gICAgICBtZXNzYWdlOiBcIlRoZSBkZWJ1ZyBmaWx0ZXIgcGF0dGVybiAkdiArICR2ICsgJHYgbWF0Y2hlcyAxICsgMiArIDMsIHRoZXJlZm9yZSwgdGhlIGV2YWx1YXRvciB3aWxsIHN0ZXAgaW50byB0aGUgZXZhbHVhdGlvbiBvZiB0aGUgbWF0Y2hlZCBzdWItZXhwcmVzc2lvbiAxICsgMiArIDMuXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCB1bnF1b3RlID0gKH5zZWxfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJTZWxlY3RvcixcbiAgZm9ybV9pZDogRmlsdGVyU2VsZWN0b3IsXG4gIGFic3RyYWN0OiBTaW1wbGUubWtfMSgoXCJzZWxcIiwgc2VsX2lkKSwgc2VsJyA9PiBbbWtfdW5xdW90ZShbXSksIHNlbCddKSxcbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIlNlbGVjdG9yIGV4cHJlc3Npb24gZm9yIGEgc3RlcHBlciBmaWx0ZXIgcGF0dGVybi4gV2hlbiBbKnNlbCpdKCVzKSBpcyAnZScsIGl0IG1hdGNoZXMgYW55IGV4cHJlc3Npb24sIHdoZW4gWypzZWwqXSglcykgaXMgJ3YnIGl0IG9ubHkgbWF0Y2hlcyB2YWx1ZXMuXCIsXG4gICAgICBzZWxfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgc2VsX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICBleGFtcGxlczogW10sXG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxuLyogKEEpIFVzZSB0aGlzIGZpbGUgYXMgYW4gZXhhbXBsZSBmb3IgYWRkaW5nIGEgbmV3IGZvcm0gdG8gRXhwbGFpblRoaXMuXG4gKiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gY29weS1wYXN0ZSB0aGlzIGZpbGUgYW5kIG1vZGlmeSBpdCB0byBhZGQgYSBuZXcgZm9ybSAqL1xuXG5sZXQgc2luZ2xlID0gKH5wYXRfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICAvKiAoQikgWW91J2xsIG5lZWQgdG8gYWRkIG5ldyBjYXNlcyB0byBFeHBsYWluVGhpc0Zvcm0ucmUgZm9yIHRoZSBuZXcgZm9ybVxuICAgKiB0byByZXByZXNlbnQgYSBncm91cF9pZCBhbmQgZm9ybV9pZC4gVGhpcyBTaW1wbGUgc3R5bGUgaXMgc3BlY2lhbGl6ZWRcbiAgICogdG8gc2luZ2xldG9uIGdyb3Vwcy4gSW4gZ2VuZXJhbCwgdGhlIGdyb3VwX2lkIG5lZWRzIHRvIGJlIHVuaXF1ZSwgYW5kXG4gICAqIGZvcm1faWRzIG5lZWQgdG8gYmUgdW5pcXVlIHdpdGhpbiBhIGdyb3VwLiBUaGVzZSBpZHMgYXJlIHVzZWQgdG8gdHJhY2tcbiAgICogRXhwbGFpblRoaXMgcGVyc2lzdGVudCBzdGF0ZS4gKi9cbiAgZ3JvdXBfaWQ6IEZpeEV4cChCYXNlKSxcbiAgZm9ybV9pZDogRml4RXhwKEJhc2UpLFxuICAvKiAoQykgVGhlIGFic3RyYWN0IGZpZWxkIGRlZmluZXMgYW4gYWJzdHJhY3QgZXhhbXBsZSBpbGx1c3RyYXRpbmcgdGhlXG4gICAqIG5ldyBmb3JtLiBZb3UnbGwgbmVlZCB0byBwcm92aWRlIHBhaXJzIGFzc29jaWF0aW5nIGFueSByZXByZXNlbnRhdGl2ZVxuICAgKiBzdWJ0ZXJtcyBvZiB0aGUgZXhlbXBsYXIgKGUuZy4gXCJlX2FyZ1wiIGFuZCBcImVfZnVuXCIgYmVsb3cpIHdpdGggdGhlXG4gICAqIGNvbmNyZXRlIHN1YnRlcm1zIG9mIHRoZSB0ZXJtIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCAoaGVyZSwgYXJnX2lkXG4gICAqIGFuZCBmbl9pZCkuIFlvdSdsbCB0aGVuIG5lZWQgYSBmdW5jdGlvbiB0byBjb25zdHJ1Y3QgYSBzZWdtZW50XG4gICAqIHJlcHJlc2VudGluZyB5b3VyIGFic3RyYWN0LiBUaGlzIGlzIGRvbmUgaW4gdGhpcyBpbmRpcmVjdCB3YXkgc29cbiAgICogYXMgdG8gYXNzb2NpYXRlIHJlcHJlc2VudGF0aXZlIGFuZCBjb25jcmV0ZSBzdWJ0ZXJtcyBpZHMgZm9yXG4gICAqIHN5bnRheCBoaWdobGlnaHRpbmcgcHVycG9zZXMuICovXG4gIGFic3RyYWN0OlxuICAgIFNpbXBsZS5ta18yKChcInBcIiwgcGF0X2lkKSwgKFwiZVwiLCBib2R5X2lkKSwgKHAsIGUpID0+XG4gICAgICBbbWtfZml4KFtbc3BhY2UoKSwgcCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgZV1cbiAgICApLFxuICAvKiAoRCkgVGhlIGV4cGxhbmF0aW9uIHdoaWNoIHdpbGwgYXBwZWFyIGluIHRoZSBzaWRlYmFyIGJlbG93IHRoZSBhYnN0cmFjdCAqL1xuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiUmVjdXJzaXZlbHkgcmVwbGFjZXMgYWxsIG9jY3VyZW5jZXMgb2YgdGhlIFsqcGF0dGVybipdKCVzKSBpbnNpZGUgdGhlIFsqYm9keSpdKCVzKSB3aXRoIHRoZSBlbnRpcmUgWypib2R5Kl0oJXMpIGl0c2VsZiwgZWZmZWN0aXZlbHkgY3JlYXRpbmcgYW4gaW5maW5pdGUgZXhwcmVzc2lvbi4gVW5sZXNzIFsqcGF0dGVybipdKCVzKSBpcyBhIGZ1bmN0aW9uLCBpdCBpcyBsaWtlbHkgdG8gZXZhbHVhdGUgZm9yZXZlci5cIixcbiAgICAgIHBhdF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgcGF0X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICAvKiAoRSkgQWRkaXRpb25hbCBtb3JlIGNvbmNyZXRlIGV4YW1wbGVzIGFuZCBhc3NvY2lhdGVkIGV4cGxhbmF0aW9ucyAqL1xuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogRml4MSxcbiAgICAgIHRlcm06IG1rX2V4YW1wbGUoXCJmaXggeCAtPiB4ICsgMVwiKSxcbiAgICAgIG1lc3NhZ2U6IHt8XG4gICAgICAgICAgICAgIFRyaWVzIHRvIGNyZWF0ZSB0aGUgaW5maW5pdGUgZXhwcmVzc2lvbiAoKCguLi4pICsgMSkgKyAxKSArIDEgYnV0IHRpbWVzIG91dFxuICAgICAgICAgICAgICB8fSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHN1Yl9pZDogRml4MixcbiAgICAgIHRlcm06XG4gICAgICAgIG1rX2V4YW1wbGUoXG4gICAgICAgICAgXCIoZml4IGYgLT4gZnVuIHggLT4gXFxuaWYgeCA9PSAwIHRoZW4gXFxuMCBcXG5lbHNlIFxcbmYoeC0xKSArIDJcXG4pICg1KVwiLFxuICAgICAgICApLFxuICAgICAgbWVzc2FnZToge3xcbiAgICAgICAgICAgICBBIHJlY3Vyc2l2ZSBmdW5jdGlvbiB0aGF0IGRvdWJsZXMgYSBnaXZlbiBudW1iZXIuXG4gICAgICAgICAgICAgIHx9LFxuICAgIH0sXG4gIF0sXG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF90cGF0ID0gdHBhdChcInRfdmFyXCIpO1xubGV0IF90eXBfYXJnID0gdHlwKFwidHlfYXJnXCIpO1xubGV0IGZvcmFsbF90eXBfY29sb3JpbmdfaWRzID1cbiAgICAofnRwYXRfaWQ6IElkLnQsIH50Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfdHBhdCksIHRwYXRfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9hcmcpLCB0Ym9keV9pZCksXG5dO1xubGV0IGZvcmFsbF90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBmb3JhbGwgdHlwZSBjbGFzc2lmaWVzIHBvbHltb3JwaGljIHZhbHVlcyB2YXJ5aW5nIG92ZXIgWyp0eXBlIHZhcmlhYmxlKl0oJXMpIHdpdGggWyppbnN0YW50aWF0ZWQgdHlwZSpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBGb3JhbGxUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtta19mb3JhbGwoW1tzcGFjZSgpLCBfdHBhdCwgc3BhY2UoKV1dKSwgX3R5cF9hcmddLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF90cGF0KSwgW190eXBfYXJnXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBmb3JhbGw6IGdyb3VwID0ge2lkOiBGb3JhbGxUeXAsIGZvcm1zOiBbZm9yYWxsX3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGJhc2ljX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQmFzaWMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIHggLT4geFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgaWRlbnRpdHkgZnVuY3Rpb24uIFdoZW4gZ2l2ZW4gYW4gYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhhdCBhcmd1bWVudC5cIixcbn07XG5sZXQgd2lsZF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFdpbGQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIF8gLT4gM1wiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50LCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDMuXCIsXG59O1xubGV0IGludGxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEludExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gMSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB2YWx1ZSAxLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGZsb2F0bGl0X2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oRmxvYXRMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIDEuMSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB2YWx1ZSAxLjEsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgYm9vbGxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEJvb2xMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIHRydWUgLT4gMlwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHdpdGggdmFsdWUgdHJ1ZSwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBzdHJsaXRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihTdHJMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIFxcXCJhYmNcXFwiIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHZhbHVlIFxcXCJhYmNcXFwiLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IHRyaXZfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihUcml2KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAoKSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB0aGUgKCkgdmFsdWUsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGlzdG5pbF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKExpc3ROaWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIFtdIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHRoZSBlbXB0eSBsaXN0IHZhbHVlLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxpc3RsaXRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihMaXN0TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBbeCwgeV0gLT4geFwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHRoYXQgaXMgYSBsaXN0IG9mIHR3byBlbGVtZW50cywgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGF0IGxpc3QuXCIsXG59O1xubGV0IGNvbnNfaGRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihDb25zSGQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIGhkOjp0bCAtPiBoZFwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHRoYXQgaXMgYSBub24tZW1wdHkgbGlzdCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgaGVhZCBvZiB0aGF0IGxpc3QuXCIsXG59O1xubGV0IGNvbnNfc25kX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQ29uc1NuZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gZnN0OjpzbmQ6OnRsIC0+IHNuZFwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHRoYXQgaXMgYSBsaXN0IHdpdGggYXQgbGVhc3QgdHdvIGVsZW1lbnRzLCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBzZWNvbmQgZWxlbWVudCBvZiB0aGF0IGxpc3QuXCIsXG59O1xubGV0IHZhcl9pbmNyX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVmFySW5jciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4geCAtPiB4ICsgMVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGludGVnZXIgYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGFyZ3VtZW50IHBsdXMgMS5cIixcbn07XG5sZXQgdmFyX2FuZF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFZhckFuZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gYiAtPiBiICYmIHRydWVcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhIGJvb2xlYW4gYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGxvZ2ljYWwtYW5kIG9mIHRoZSBhcmd1bWVudCBhbmQgdHJ1ZSwgd2hpY2ggZXZhbHVhdGVzIHRvIHRoZSB0cnV0aCB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuXCIsXG59O1xubGV0IHR1cGxlMl9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFR1cGxlMiksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gKHgsIHkpIC0+IHggKyB5XCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYSAyLXR1cGxlIG9mIGludGVnZXJzLCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBzdW0gb2YgdGhlIHR3byBpbnRlZ2Vycy5cIixcbn07XG5sZXQgdHVwbGUzX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVHVwbGUzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAoYSwgYiwgYykgLT5cXG5hICYmIGIgJiYgY1wiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgMy10dXBsZSBvZiBib29sZWFucywgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgbG9naWNhbC1hbmQgb2YgdGhlIHRocmVlIGJvb2xlYW5zLlwiLFxufTtcbmxldCBjdHJfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihDdHIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIE5vbmUgLT4gMVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgTm9uZSBjb25zdHJ1Y3RvciBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyAxLlwiLFxufTtcbmxldCBhcF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEFwKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBTb21lKGEpIC0+IGFcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhIFNvbWUgY29uc3RydWN0b3IgYXJndW1lbnQsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIGNvbnN0cnVjdG9yJ3MgYXJndW1lbnQuXCIsXG59O1xuLy8gVE9ETyBmb3Igc2hhcmVkIGV4YW1wbGVzLCBzaG91bGQgdGhlIGZlZWRiYWNrIGJlIHN0b3JlZCBzZXBhcmF0ZWx5IGZvciBlYWNoIFwiaW5zdGFuY2VcIj9cbmxldCBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKHNmX3BhdF9pZDogSWQudCwgc2ZfYm9keV9pZDogSWQudCwgfnBhdF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbKHNmX3BhdF9pZCwgcGF0X2lkKSwgKHNmX2JvZHlfaWQsIGJvZHlfaWQpXTtcbn07XG5sZXQgX3BhdCA9IHBhdChcInBcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEJhc2UpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwicFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leF0gLy8gVE9ETyBXaGF0IG90aGVyIGV4YW1wbGVzIHNob3VsZCBiZSBoZXJlXG4gIH07XG59O1xuXG5sZXQgX3BhdCA9IFBpZWNlLkdyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fZW1wdHlfaG9sZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKSwgYWZ0ZXIgdGhlIFtlbXB0eSBob2xlIHBhdHRlcm5dKCVzKSBpcyBmaWxsZWQuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEVtcHR5SG9sZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtiYXNpY19mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSU5WQUxJRFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX211bHRpX2hvbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcyksIGFmdGVyIHRoZSBbaW52YWxpZCBhcmd1bWVudCBwYXR0ZXJuXSglcykgaXMgY29ycmVjdGVkLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChNdWx0aUhvbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSU5WQUxJRFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3dpbGRfZXhwX2NvbG9yaW5nX2lkcyA9ICh+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoUGllY2UuaWQoX2V4cCksIGJvZHlfaWQpXTtcbn07XG5sZXQgZnVuY3Rpb25fd2lsZF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHRoYXQgaXMgaWdub3JlZCwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBfcGF0ID0gcGF0KFwiX1wiKTtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoV2lsZCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJfXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbd2lsZF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSW50TGl0XCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2ludGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9pbnRsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIGAlc2AuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChJbnQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSW50TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50bGl0X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJGbG9hdExpdFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9mbG9hdGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9mbG9hdGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgYCVmYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIC8vIFRPRE8gcHJpbnQgb3V0IHRoZSBmbG9hdCBsaXRlcmFsIG5pY2VyXG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEZsb2F0KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkZsb2F0TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRsaXRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkJvb2xMaXRcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fYm9vbGxpdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9ib29sbGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyBgJWJgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoQm9vbCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJCb29sTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYm9vbGxpdF9mdW5fZXhdLFxuICB9O1xufTtcblxubGV0IF9wYXQgPSBwYXQoXCJTdHJpbmdMaXRcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fc3RybGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX3N0cmxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgYCVzYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG5cbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoU3RyaW5nKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIlN0cmluZ0xpdFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3N0cmxpdF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiKClcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdHJpdl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl90cml2X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyB0aGUgdHJpdmlhbCB2YWx1ZSBgKClgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS4gVGhpcyBpZiBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBhIHplcm8gYXJndW1lbnQgZnVuY3Rpb24uXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFRyaXYpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiKClcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0cml2X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJbXVwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9saXN0bmlsX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2xpc3RuaWxfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIHRoZSBlbXB0eSBsaXN0IGBbXWAuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChMaXN0TmlsKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIltdXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGlzdG5pbF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHNwYWNlKCksIHBhdChcIi4uLlwiKV1dKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2xpc3RsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgYXJlIGxpc3RzIHdpdGggJXMtZWxlbWVudHMsIGVhY2ggbWF0Y2hpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoTGlzdExpdCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChfcGF0KSxcbiAgICAgICAgW21rX2xpc3RfcGF0KFtbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildXSldLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsaXN0bmlsX2Z1bl9leCwgbGlzdGxpdF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0X2hkID0gcGF0KFwicF9oZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9jb25zX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+aGRfaWQ6IElkLnQsIH50bF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXRfaGQpLCBoZF9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXRfdGwpLCB0bF9pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fY29uc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlICphcmd1bWVudCBwYXR0ZXJuKiBhcmUgbm9uLWVtcHR5IGxpc3RzIHRoYXQgbWF0Y2ggdGhlIFsqaGVhZCBwYXR0ZXJuKl0oJXMpIGFuZCBbKnRhaWwgcGF0dGVybipdKCVzKS4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlICphcmd1bWVudCBwYXR0ZXJuKiwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBjb25zID0gY29uc19wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfZnVuKFtbc3BhY2UoKSwgX3BhdF9oZCwgY29ucywgX3BhdF90bCwgc3BhY2UoKV1dKSxcbiAgICBzcGFjZSgpLFxuICAgIF9leHAsXG4gIF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoTGlzdENvbnMpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb25zKSwgW3BhdChcInBfaGRcIiksIGNvbnNfcGF0KCksIHBhdChcInBfdGxcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtjb25zX2hkX2Z1bl9leCwgY29uc19zbmRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcInhcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdmFyX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX3Zhcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIGlzIGJvdW5kIHRvIHRoZSBbKnZhcmlhYmxlKl0oJXMpIGAlc2AsIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChWYXIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwieFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leCwgdmFyX2luY3JfZnVuX2V4LCB2YXJfYW5kX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9jb21tYSA9IGNvbW1hX3BhdCgpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3R1cGxlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfY29tbWEpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fdHVwbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgYXJlICVzLXR1cGxlcyB3aGVyZSBlYWNoIGVsZW1lbnQgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBlbGVtZW50IHBhdHRlcm4uIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19mdW4oW1tzcGFjZSgpLCBwYXQoXCJwMVwiKSwgX2NvbW1hLCBzcGFjZSgpLCBwYXQoXCIuLi5cIiksIHNwYWNlKCldXSksXG4gICAgc3BhY2UoKSxcbiAgICBfZXhwLFxuICBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX2NvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGUyX2Z1bl9leCwgdHVwbGUzX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5wYXQxX2lkOiBJZC50LCB+cGF0Ml9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXQxKSwgcGF0MV9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fdHVwbGUyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSAyLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKS4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlICphcmd1bWVudCBwYXR0ZXJuKiwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19mdW4oW1tzcGFjZSgpLCBfcGF0MSwgY29tbWEsIHNwYWNlKCksIF9wYXQyLCBzcGFjZSgpXV0pLFxuICAgIHNwYWNlKCksXG4gICAgX2V4cCxcbiAgXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChUdXBsZTIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGUyX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfcGF0MyA9IHBhdChcInAzXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3R1cGxlM19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdDFfaWQ6IElkLnQsIH5wYXQyX2lkOiBJZC50LCB+cGF0M19pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXQxKSwgcGF0MV9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gICAgKFBpZWNlLmlkKF9wYXQzKSwgcGF0M19pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fdHVwbGUzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSAzLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSwgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKSwgYW5kIHRoZSB0aGlyZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqdGhpcmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2Z1bihbXG4gICAgICBbXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQxLFxuICAgICAgICBjb21tYV9wYXQoKSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDIsXG4gICAgICAgIGNvbW1hLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MyxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgIF0sXG4gICAgXSksXG4gICAgc3BhY2UoKSxcbiAgICBfZXhwLFxuICBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlMyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZTNfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkNcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fY3RyX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2N0cl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgdGhlICpgJXNgIGNvbnN0cnVjdG9yKi4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEN0ciksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJDXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbY3RyX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXRfY29uID0gcGF0KFwicF9jb25cIik7XG5sZXQgX3BhdF9hcmcgPSBwYXQoXCJwX2FyZ1wiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9hcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmNvbl9pZDogSWQudCwgfmFyZ19pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbXG4gICAgKFBpZWNlLmlkKF9wYXRfY29uKSwgY29uX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdF9hcmcpLCBhcmdfaWQpLFxuICAgIChQaWVjZS5pZChfZXhwKSwgYm9keV9pZCksXG4gIF07XG59O1xubGV0IGZ1bmN0aW9uX2FwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSB0aGUgWypjb25zdHJ1Y3RvcipdKCVzKSB3aGVyZSB0aGUgKmNvbnN0cnVjdG9yIGFyZ3VtZW50KiBtYXRjaGVzIHRoZSBbKmNvbnN0cnVjdG9yIGFyZ3VtZW50IHBhdHRlcm4qXSglcykuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSAqYXJndW1lbnQgcGF0dGVybiosIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgYXAgPSBta19hcF9wYXQoW1tfcGF0X2FyZ11dKTtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdF9jb24sIGFwLCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChBcCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGFwKSwgW3BhdChcInBfY29uXCIpLCBta19hcF9wYXQoW1twYXQoXCJwX2FyZ1wiKV1dKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2FwX2Z1bl9leF0sXG4gIH07XG59O1xuXG5sZXQgZnVuY3Rpb25zOiBncm91cCA9IHtpZDogRnVuY3Rpb25FeHAoQmFzZSksIGZvcm1zOiBbZnVuY3Rpb25fZXhwXX07XG5sZXQgZnVuY3Rpb25zX2VtcHR5X2hvbGUgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChFbXB0eUhvbGUpLFxuICBmb3JtczogW2Z1bmN0aW9uX2VtcHR5X2hvbGVfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcbmxldCBmdW5jdGlvbnNfbXVsdGlfaG9sZSA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKE11bHRpSG9sZSksXG4gIGZvcm1zOiBbZnVuY3Rpb25fbXVsdGlfaG9sZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc193aWxkID0ge1xuICBpZDogRnVuY3Rpb25FeHAoV2lsZCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fd2lsZF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19pbnQgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChJbnQpLFxuICBmb3JtczogW2Z1bmN0aW9uX2ludGxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19mbG9hdCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEZsb2F0KSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9mbG9hdGxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19ib29sID0ge1xuICBpZDogRnVuY3Rpb25FeHAoQm9vbCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fYm9vbGxpdF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3N0ciA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFN0cmluZyksXG4gIGZvcm1zOiBbZnVuY3Rpb25fc3RybGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfdHJpdiA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFRyaXYpLFxuICBmb3JtczogW2Z1bmN0aW9uX3RyaXZfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19saXN0bmlsID0ge1xuICBpZDogRnVuY3Rpb25FeHAoTGlzdE5pbCksXG4gIGZvcm1zOiBbZnVuY3Rpb25fbGlzdG5pbF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX2xpc3RsaXQgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChMaXN0TGl0KSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9saXN0bGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfY29ucyA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKExpc3RDb25zKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9jb25zX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfdmFyID0ge1xuICBpZDogRnVuY3Rpb25FeHAoVmFyKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl92YXJfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc190dXBsZSA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl90dXBsZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3R1cGxlMiA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlMiksXG4gIGZvcm1zOiBbZnVuY3Rpb25fdHVwbGUyX2V4cCwgZnVuY3Rpb25fdHVwbGVfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc190dXBsZTMgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChUdXBsZTMpLFxuICBmb3JtczogW2Z1bmN0aW9uX3R1cGxlM19leHAsIGZ1bmN0aW9uX3R1cGxlX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfY3RyID0ge1xuICBpZDogRnVuY3Rpb25FeHAoQ3RyKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9jdHJfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19hcCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEFwKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9hcF9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGVtcHR5X2hvbGVfdGVtcGxhdGUgPSAoX3NvcnQsIHN0ciwgaWQpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID1cbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiVGhpcyBzaG91bGQgYmUgZmlsbGVkIHdpdGggJXMgdG8gY29tcGxldGUgdGhlIHByb2dyYW0uXCIsXG4gICAgICBzdHIsXG4gICAgKTtcbiAge1xuICAgIGlkLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IG11bHRpX2hvbGVfdGVtcGxhdGUgPSAoc29ydCwgaWQpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGlzIGFuIGludmFsaWQgdGVybS5cIjtcbiAge1xuICAgIGlkLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbc29ydChcIklOVkFMSURcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbiIsIm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZW1wdHlfaG9sZV9leHA6IGZvcm0gPVxuICBIb2xlVGVtcGxhdGUuZW1wdHlfaG9sZV90ZW1wbGF0ZShleHAsIFwiYW4gZXhwcmVzc2lvblwiLCBFbXB0eUhvbGVFeHApO1xubGV0IGVtcHR5X2hvbGVfZXhwcyA9IHtpZDogRW1wdHlIb2xlRXhwLCBmb3JtczogW2VtcHR5X2hvbGVfZXhwXX07XG5cbmxldCBtdWx0aV9ob2xlX2V4cDogZm9ybSA9XG4gIEhvbGVUZW1wbGF0ZS5tdWx0aV9ob2xlX3RlbXBsYXRlKGV4cCwgTXVsdGlIb2xlRXhwKTtcblxubGV0IG11bHRpX2hvbGVfZXhwcyA9IHtpZDogTXVsdGlIb2xlRXhwLCBmb3JtczogW211bHRpX2hvbGVfZXhwXX07XG4iLCJvcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gSGF6M2xjb3JlO1xubGV0IGVtcHR5X2hvbGVfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkV4cHJlc3Npb25zIGFyZSBub3QgbWF0Y2hlZCBhZ2FpbnN0IHRoZSAqZW1wdHkgaG9sZSBwYXR0ZXJuKiB1bnRpbCBpdCBpcyBmaWxsZWQuXCI7XG4gIHtcbiAgICBpZDogRW1wdHlIb2xlUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IG11bHRpX2hvbGVfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkV4cHJlc3Npb25zIGFyZSBub3QgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBpbnZhbGlkIHBhdHRlcm4gdW50aWwgaXQgaXMgY29ycmVjdGVkLlwiO1xuICB7XG4gICAgaWQ6IE11bHRpSG9sZVBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIkludmFsaWRcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGVtcHR5X2hvbGU6IGdyb3VwID0ge2lkOiBFbXB0eUhvbGVQYXQsIGZvcm1zOiBbZW1wdHlfaG9sZV9wYXRdfTtcblxubGV0IG11bHRpX2hvbGU6IGdyb3VwID0ge2lkOiBNdWx0aUhvbGVQYXQsIGZvcm1zOiBbbXVsdGlfaG9sZV9wYXRdfTtcbiIsIm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZW1wdHlfaG9sZV90cGF0OiBmb3JtID1cbiAgSG9sZVRlbXBsYXRlLmVtcHR5X2hvbGVfdGVtcGxhdGUodHBhdCwgXCJhIHR5cGUgcGF0dGVyblwiLCBFbXB0eUhvbGVUUGF0KTtcbmxldCBlbXB0eV9ob2xlX3RwYXRzID0ge2lkOiBFbXB0eUhvbGVUUGF0LCBmb3JtczogW2VtcHR5X2hvbGVfdHBhdF19O1xuXG5sZXQgbXVsdGlfaG9sZV90cGF0OiBmb3JtID1cbiAgSG9sZVRlbXBsYXRlLm11bHRpX2hvbGVfdGVtcGxhdGUodHBhdCwgTXVsdGlIb2xlVFBhdCk7XG5cbmxldCBtdWx0aV9ob2xlX3RwYXRzID0ge2lkOiBNdWx0aUhvbGVUUGF0LCBmb3JtczogW211bHRpX2hvbGVfdHBhdF19O1xuIiwib3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEhhejNsY29yZTtcblxubGV0IGVtcHR5X2hvbGVfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgbWFya3MgYSB0eXBlIHRoYXQgbmVlZHMgdG8gYmUgZmlsbGVkIGluLlwiO1xuICB7XG4gICAgaWQ6IEVtcHR5SG9sZVR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbi8vIFRPRE8gRGlkIGdldCBhIGNhc2Ugd2hlcmUgaW4gdHlwZSBwb3NpdGlvbiBoYWQgc3BhY2UgYmV0d2VlbiB0d28gdmFyaWFibGVzIHdoZXJlIGdvdCBpbnRvIHdlaXJkIHN0YXRlXG5sZXQgbXVsdGlfaG9sZV90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBpcyBhbiBpbnZhbGlkIHR5cGUuXCI7XG4gIHtcbiAgICBpZDogTXVsdGlIb2xlVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiSW52YWxpZFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgZW1wdHlfaG9sZTogZ3JvdXAgPSB7aWQ6IEVtcHR5SG9sZVR5cCwgZm9ybXM6IFtlbXB0eV9ob2xlX3R5cF19O1xuXG5sZXQgbXVsdGlfaG9sZTogZ3JvdXAgPSB7aWQ6IE11bHRpSG9sZVR5cCwgZm9ybXM6IFttdWx0aV9ob2xlX3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGlmX2Jhc2ljMV9leHBfZXggPSB7XG4gIHN1Yl9pZDogSWZUcnVlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiaWYgKHRydWUpIHRoZW4gMSBlbHNlIDJcIiksXG4gIG1lc3NhZ2U6IFwiU2luY2UgdGhlIGNvbmRpdGlvbiBpcyB0cnVlLCB0aGUgaWYgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdGhlIHRoZW4gYnJhbmNoLCAxLlwiLFxufTtcbmxldCBpZl9iYXNpYzJfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IElmRmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJpZiAoMiA8IDEpIHRoZW4gMyBlbHNlIDRcIiksXG4gIG1lc3NhZ2U6IFwiU2luY2UgdGhlIGNvbmRpdGlvbiBpcyAyIDwgMSBpcyBmYWxzZSwgdGhlIGlmIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBlbHNlIGJyYW5jaCwgNC5cIixcbn07XG5sZXQgX2V4cF9jb25kID0gZXhwKFwiZV9jb25kXCIpO1xubGV0IF9leHBfdGhlbiA9IGV4cChcImVfdGhlblwiKTtcbmxldCBfZXhwX2Vsc2UgPSBleHAoXCJlX2Vsc2VcIik7XG5sZXQgaWZfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5jb25kX2lkOiBJZC50LCB+dGhlbl9pZDogSWQudCwgfmVsc2VfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF9jb25kKSwgY29uZF9pZCksXG4gIChQaWVjZS5pZChfZXhwX3RoZW4pLCB0aGVuX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZWxzZSksIGVsc2VfaWQpLFxuXTtcbmxldCBpZl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqY29uZGl0aW9uKl0oJXMpIGV2YWx1YXRlcyB0byBgdHJ1ZWAsIGV2YWx1YXRlIHRoZSBbKnRoZW4gYnJhbmNoKl0oJXMpLiBPdGhlcndpc2UsIGV2YWx1YXRlIHRoZSBbKmVsc2UgYnJhbmNoKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IElmRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBta19pZihbXG4gICAgICAgIFtzcGFjZSgpLCBfZXhwX2NvbmQsIGxpbmVicmVhaygpXSxcbiAgICAgICAgW3NwYWNlKCksIF9leHBfdGhlbiwgbGluZWJyZWFrKCldLFxuICAgICAgXSksXG4gICAgICBzcGFjZSgpLFxuICAgICAgX2V4cF9lbHNlLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2lmX2Jhc2ljMV9leHBfZXgsIGlmX2Jhc2ljMl9leHBfZXhdLFxuICB9O1xufTtcblxubGV0IGlmczogZ3JvdXAgPSB7aWQ6IElmRXhwLCBmb3JtczogW2lmX2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IGxldF9iYXNlX2V4ID0ge1xuICBzdWJfaWQ6IExldChCYXNpYyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgeCA9IDEgaW4gXFxueFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMVwiLFxufTtcbmxldCBsZXRfd2lsZF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoV2lsZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgXyA9IDEgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgMSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9pbnRfZXggPSB7XG4gIHN1Yl9pZDogTGV0KEludExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgMSA9IDEgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgMSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9mbG9hdF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoRmxvYXRMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IDEuMSA9IDEuMSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAxLjEgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfYm9vbF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQm9vbExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgdHJ1ZSA9IHRydWUgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdHJ1ZSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9zdHJfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFN0ckxpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgXFxcImFiY1xcXCIgPSBcXFwiYWJjXFxcIiBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSB0cnVlIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X3RyaXZfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFRyaXYpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0ICgpID0gKCkgaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgKCkgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfbGlzdGxpdF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoTGlzdExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgW3gsIHldID0gWzEsIDJdIGluIFxcbnhcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHZhcmlhYmxlIHggaXMgYm91bmQgdG8gMSBhbmQgdGhlIHkgaXMgYm91bmQgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEuXCIsXG59O1xubGV0IGxldF9saXN0bmlsX2V4ID0ge1xuICBzdWJfaWQ6IExldChMaXN0TmlsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBbXSA9IFtdIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGVtcHR5IGxpc3QgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfY29uc19oZF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQ29uc0hkKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBoZDo6dGwgPSAxOjpbXSBpbiBcXG5oZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgaGQgaXMgYm91bmQgdG8gMSBhbmQgdGhlIHRsIGlzIGJvdW5kIHRvIHRoZSBlbXB0eSBsaXN0LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMS5cIixcbn07XG5sZXQgbGV0X2NvbnNfc25kX2V4ID0ge1xuICBzdWJfaWQ6IExldChDb25zU25kKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBmc3Q6OnNuZDo6dGwgPSB0cnVlOjpmYWxzZTo6W10gaW4gXFxuc25kXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBmc3QgaXMgYm91bmQgdG8gdHJ1ZSwgdGhlIHNuZCBpcyBib3VuZCB0byBmYWxzZSwgYW5kIHRoZSB0bCBpcyBib3VuZCB0byB0aGUgZW1wdHkgbGlzdCwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBsZXRfdmFyX2V4ID0ge1xuICBzdWJfaWQ6IExldChWYXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IHggPSAxIGluIFxcbnggKyAyXCIpLFxuICBtZXNzYWdlOiBcIlRoZSB2YXJpYWJsZSB4IGlzIGJvdW5kIHRvIDEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxICsgMiwgd2hpY2ggaXMgMy5cIixcbn07XG5sZXQgbGV0X3R1cGxlMl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoVHVwbGUyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCAoeCwgeSkgPSAoMSwgMikgaW4gXFxueCArIHlcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHZhcmlhYmxlIHggaXMgYm91bmQgdG8gMSBhbmQgdGhlIHkgaXMgYm91bmQgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEgKyAyLCB3aGljaCBpcyAzLlwiLFxufTtcbmxldCBsZXRfdHVwbGUzX2V4ID0ge1xuICBzdWJfaWQ6IExldChUdXBsZTMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0ICh4LCB5LCB6KSA9ICgxLCAyLCAzKVxcbmluIHggKyB5ICsgelwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxLCB0aGUgeSBpcyBib3VuZCB0byAyLCBhbmQgdGhlIHogaXMgYm91bmQgdG8gMywgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEgKyAyICsgMywgd2hpY2ggaXMgNi5cIixcbn07XG5sZXQgbGV0X2N0cl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQ3RyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcInR5cGUgVCA9IE5vbmUgKyBTb21lKEludClcXG4gaW4gbGV0IE5vbmUgPSBOb25lXFxuaW4gMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgTm9uZSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9hcF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoQXApLFxuICB0ZXJtOlxuICAgIG1rX2V4YW1wbGUoXCJ0eXBlIFQgPSBOb25lICsgU29tZShJbnQpXFxuIGluIGxldCBTb21lKGEpID0gU29tZSgyKVxcbmluIGFcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGEgaXMgYm91bmQgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgIChcbiAgICAgIHNmX3BhdF9pZDogSWQudCxcbiAgICAgIHNmX2RlZl9pZDogSWQudCxcbiAgICAgIHNmX2JvZHlfaWQ6IElkLnQsXG4gICAgICB+cGF0X2lkOiBJZC50LFxuICAgICAgfmRlZl9pZDogSWQudCxcbiAgICAgIH5ib2R5X2lkOiBJZC50LFxuICAgIClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoc2ZfcGF0X2lkLCBwYXRfaWQpLCAoc2ZfZGVmX2lkLCBkZWZfaWQpLCAoc2ZfYm9keV9pZCwgYm9keV9pZCldO1xufTtcbmxldCBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKHNmX3BhdF9pZDogSWQudCwgc2ZfZGVmX2lkOiBJZC50LCB+cGF0X2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KVxuICAgIDogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhzZl9wYXRfaWQsIHBhdF9pZCksIChzZl9kZWZfaWQsIGRlZl9pZCldO1xufTtcbmxldCBfcGF0ID0gcGF0KFwicFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9iYXNlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfYmFzZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBpcyBtYXRjaGVkIGFnYWluc3QgdGhlIFsqcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEJhc2UpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwicFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9iYXNlX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IFBpZWNlLkdyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwX2RlZikpO1xubGV0IGxldF9lbXB0eV9ob2xlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBZnRlciB0aGUgWyplbXB0eSBob2xlIHBhdHRlcm4qXSglcykgaXMgZmlsbGVkLCB0aGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgWypwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoRW1wdHlIb2xlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX3BhdCksIFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9iYXNlX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIklOVkFMSURcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfbXVsdGlfaG9sZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHBfZGVmKSk7XG5sZXQgbGV0X211bHRpX2hvbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFmdGVyIHRoZSBbaW52YWxpZCBwYXR0ZXJuXSglcykgaXMgY29ycmVjdGVkLCB0aGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgWypwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoTXVsdGlIb2xlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIklOVkFMSURcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfYmFzZV9leF0sXG4gIH07XG59O1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF93aWxkX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZGVmX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2RlZiksIGRlZl9pZCksXG4gIChQaWVjZS5pZChfZXhwX2JvZHkpLCBib2R5X2lkKSxcbl07XG5sZXQgbGV0X3dpbGRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBbKmRlZmluaXRpb24qXSglcykgaXMgZXZhbHVhdGVkIGFuZCBpZ25vcmVkLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IHBhdF8gPSBwYXQoXCJfXCIpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBwYXRfLCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoV2lsZCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQocGF0XyksIFtwYXQoXCJfXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3dpbGRfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSW50TGl0XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9pbnRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2ludF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgYCVzYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChJbnQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSW50TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2ludF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJGbG9hdExpdFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfZmxvYXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2Zsb2F0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyBgJWZgLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEZsb2F0KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkZsb2F0TGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Zsb2F0X2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkJvb2xMaXRcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X2Jvb2xfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2Jvb2xfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2hlcyB0aGUgWypwYXR0ZXJuKl0oJXMpIGlzIGAlYmAuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoQm9vbCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJCb29sTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Jvb2xfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiU3RyaW5nTGl0XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9zdHJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X3N0cl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgYCVzYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChTdHJpbmcpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiU3RyaW5nTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3N0cl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCIoKVwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfdHJpdl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfdHJpdl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgdGhlIHRyaXZpYWwgdmFsdWUgYCgpYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChUcml2KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIigpXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3RyaXZfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHNwYWNlKCksIHBhdChcIi4uLlwiKV1dKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfbGlzdGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSBhcmUgbGlzdHMgd2l0aCAlcy1lbGVtZW50cywgd2hlcmUgZWFjaCBlbGVtZW50IG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoTGlzdExpdCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfbGlzdGxpdF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJbXVwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfbGlzdG5pbF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgdGhlIGVtcHR5IGxpc3QgYFtdYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChMaXN0TmlsKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIltdXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2xpc3RuaWxfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0X2hkID0gcGF0KFwicF9oZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9jb25zX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+aGRfaWQ6IElkLnQsIH50bF9pZDogSWQudCwgfmRlZl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0X2hkKSwgaGRfaWQpLFxuICAoUGllY2UuaWQoX3BhdF90bCksIHRsX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfZGVmKSwgZGVmX2lkKSxcbl07XG5sZXQgbGV0X2NvbnNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSAqcGF0dGVybiogYXJlIG5vbi1lbXB0eSBsaXN0cyB0aGF0IG1hdGNoIHRoZSBbKmhlYWQqXSglcykgYW5kIFsqdGFpbCpdKCVzKSBwYXR0ZXJucy5cIjtcbiAgbGV0IGNvbnMgPSBjb25zX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1xuICAgICAgW3NwYWNlKCksIF9wYXRfaGQsIGNvbnMsIF9wYXRfdGwsIHNwYWNlKCldLFxuICAgICAgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXSxcbiAgICBdKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKExpc3RDb25zKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29ucyksIFtwYXQoXCJwX2hkXCIpLCBjb25zX3BhdCgpLCBwYXQoXCJwX3RsXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2NvbnNfaGRfZXgsIGxldF9jb25zX3NuZF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJ4XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF92YXJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X3Zhcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBpcyBib3VuZCB0byB0aGUgWyp2YXJpYWJsZSpdKCVzKSBgJXNgIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChWYXIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwieFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF92YXJfZXhdLFxuICAgIC8vIFRPRE8gRG9lcyB0aGlzIGV4YW1wbGUgYmVpbmcgc2xpZ2h0bHkgZGlmZmVyZW50IGFjdHVhbGx5IGFkZCBhbnl0aGluZz9cbiAgfTtcbn07XG5sZXQgX2NvbW1hID0gY29tbWFfcGF0KCk7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9jb21tYSksIFBpZWNlLmlkKF9leHBfZGVmKSk7XG5sZXQgbGV0X3R1cGxlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIGFyZSAlcy10dXBsZXMgd2hlcmUgZWFjaCBlbGVtZW50IG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1xuICAgICAgW3NwYWNlKCksIHBhdChcInAxXCIpLCBfY29tbWEsIHNwYWNlKCksIHBhdChcIi4uLlwiKSwgc3BhY2UoKV0sXG4gICAgICBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldLFxuICAgIF0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoVHVwbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfdHVwbGUyX2V4LCBsZXRfdHVwbGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X3R1cGxlMl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdDFfaWQ6IElkLnQsIH5wYXQyX2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXQxKSwgcGF0MV9pZCksXG4gIChQaWVjZS5pZChfcGF0MiksIHBhdDJfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfdHVwbGUyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgKnBhdHRlcm4qIGFyZSAyLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSBhbmQgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbc3BhY2UoKSwgX3BhdDEsIGNvbW1hLCBzcGFjZSgpLCBfcGF0Miwgc3BhY2UoKV0sXG4gICAgICBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldLFxuICAgIF0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoVHVwbGUyKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF90dXBsZTJfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgX3BhdDMgPSBwYXQoXCJwM1wiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF90dXBsZTNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5wYXQxX2lkOiBJZC50LCB+cGF0Ml9pZDogSWQudCwgfnBhdDNfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdDEpLCBwYXQxX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gIChQaWVjZS5pZChfcGF0MyksIHBhdDNfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfdHVwbGUzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgKnBhdHRlcm4qIGFyZSAzLXR1cGxlcyB3aGVyZSB0aGUgZmlyc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSwgdGhlIHNlY29uZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKSwgYW5kIHRoZSB0aGlyZCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqdGhpcmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtcbiAgICAgIFtcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDEsXG4gICAgICAgIGNvbW1hX3BhdCgpLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MixcbiAgICAgICAgY29tbWEsXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQzLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChUdXBsZTMpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoY29tbWEpLFxuICAgICAgICBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKSwgY29tbWFfcGF0KCksIHBhdChcInAzXCIpXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3R1cGxlM19leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJDXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9jdHJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX3BhdCksXG4gICAgUGllY2UuaWQoX2V4cF9kZWYpLFxuICAgIFBpZWNlLmlkKF9leHBfYm9keSksXG4gICk7XG5sZXQgbGV0X2N0cl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgdGhlICpgJXNgIGNvbnN0cnVjdG9yKi4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChDdHIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiQ1wiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9jdHJfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0X2NvbiA9IHBhdChcInBfY29uXCIpO1xubGV0IF9wYXRfYXJnID0gcGF0KFwicF9hcmdcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfYXBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5jb25faWQ6IElkLnQsIH5hcmdfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9jb24pLCBjb25faWQpLFxuICAoUGllY2UuaWQoX3BhdF9hcmcpLCBhcmdfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfYXBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSAqcGF0dGVybiogYXJlIHRoZSBbKmNvbnN0cnVjdG9yKl0oJXMpIHdoZXJlIHRoZSAqYXJndW1lbnQqIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKS5cIjtcbiAgbGV0IGFwID0gbWtfYXBfcGF0KFtbX3BhdF9hcmddXSk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbc3BhY2UoKSwgX3BhdF9jb24sIGFwLCBzcGFjZSgpXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChBcCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGFwKSwgW3BhdChcInBfY29uXCIpLCBta19hcF9wYXQoW1twYXQoXCJwX2FyZ1wiKV1dKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9hcF9leF0sXG4gIH07XG59O1xuXG5sZXQgbGV0c19lbXB0eWhvbGU6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKEVtcHR5SG9sZSksXG4gIGZvcm1zOiBbbGV0X2VtcHR5X2hvbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfbXV0bGlob2xlOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChNdWx0aUhvbGUpLFxuICBmb3JtczogW2xldF9tdWx0aV9ob2xlX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX3dpbGQ6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFdpbGQpLFxuICBmb3JtczogW2xldF93aWxkX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX2ludDogZ3JvdXAgPSB7aWQ6IExldEV4cChJbnQpLCBmb3JtczogW2xldF9pbnRfZXhwLCBsZXRfYmFzZV9leHBdfTtcblxubGV0IGxldHNfZmxvYXQ6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKEZsb2F0KSxcbiAgZm9ybXM6IFtsZXRfZmxvYXRfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfYm9vbDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoQm9vbCksXG4gIGZvcm1zOiBbbGV0X2Jvb2xfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfc3RyOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChTdHJpbmcpLFxuICBmb3JtczogW2xldF9zdHJfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdHJpdjogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoVHJpdiksXG4gIGZvcm1zOiBbbGV0X3RyaXZfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfbGlzdGxpdDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoTGlzdExpdCksXG4gIGZvcm1zOiBbbGV0X2xpc3RsaXRfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfbGlzdG5pbDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoTGlzdE5pbCksXG4gIGZvcm1zOiBbbGV0X2xpc3RuaWxfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfY29uczogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoTGlzdENvbnMpLFxuICBmb3JtczogW2xldF9jb25zX2V4cCwgbGV0X2Jhc2VfZXhwXSxcbn07XG5cbmxldCBsZXRzX3ZhcjogZ3JvdXAgPSB7aWQ6IExldEV4cChWYXIpLCBmb3JtczogW2xldF92YXJfZXhwLCBsZXRfYmFzZV9leHBdfTtcblxubGV0IGxldHNfdHVwbGU6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFR1cGxlKSxcbiAgZm9ybXM6IFtsZXRfdHVwbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdHVwbGUyOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChUdXBsZTIpLFxuICBmb3JtczogW2xldF90dXBsZTJfZXhwLCBsZXRfdHVwbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdHVwbGUzOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChUdXBsZTMpLFxuICBmb3JtczogW2xldF90dXBsZTNfZXhwLCBsZXRfdHVwbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfY3RyOiBncm91cCA9IHtpZDogTGV0RXhwKEN0ciksIGZvcm1zOiBbbGV0X2N0cl9leHAsIGxldF9iYXNlX2V4cF19O1xuXG5sZXQgbGV0c19hcDogZ3JvdXAgPSB7aWQ6IExldEV4cChBcCksIGZvcm1zOiBbbGV0X2FwX2V4cCwgbGV0X2Jhc2VfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgbGlzdF9leHA6IGZvcm0gPSB7XG4gIGxldCBpbnRfbGlzdCA9IHtcbiAgICBzdWJfaWQ6IExpc3QoSW50KSxcbiAgICB0ZXJtOiBta19leGFtcGxlKFwiWzEsIDJdXCIpLFxuICAgIG1lc3NhZ2U6IFwiQSBsaXN0IHdpdGggdHdvIGVsZW1lbnRzLCAxIGFuZCAyLlwiLFxuICB9O1xuICBsZXQgdHVwbGVfbGlzdCA9IHtcbiAgICBzdWJfaWQ6IExpc3QoVHVwbGUpLFxuICAgIHRlcm06IG1rX2V4YW1wbGUoXCJbKDEsIHRydWUpLCAoMiwgZmFsc2UpXVwiKSxcbiAgICBtZXNzYWdlOiBcIkEgbGlzdCB3aXRoIHR3byBlbGVtZW50cywgYSB0dXBsZSB3aXRoIDEgYW5kIHRydWUgYW5kIGEgdHVwbGUgd2l0aCAyIGFuZCBmYWxzZS5cIixcbiAgfTtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJMaXN0IGxpdGVyYWwgd2l0aCAlcyBlbGVtZW50KHMpLlwiO1xuICB7XG4gICAgaWQ6IExpc3RFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIG1rX2xpc3RfZXhwKFtbZXhwKFwiZTFcIiksIGNvbW1hX2V4cCgpLCBzcGFjZSgpLCBleHAoXCIuLi5cIildXSksXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2xpc3QsIHR1cGxlX2xpc3RdLFxuICB9O1xufTtcblxubGV0IGNvbnMxX2V4ID0ge1xuICBzdWJfaWQ6IExpc3QoQ29uczEpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMTo6W11cIiksXG4gIG1lc3NhZ2U6IFwiQSBzaW5nbGUgZWxlbWVudCBsaXN0IG9mIDEuXCIsXG59O1xubGV0IGNvbnMyX2V4ID0ge1xuICBzdWJfaWQ6IExpc3QoQ29uczIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHJ1ZTo6ZmFsc2U6OltdXCIpLFxuICBtZXNzYWdlOiBcIkEgbGlzdCB3aXRoIHR3byBlbGVtZW50cywgdHJ1ZSBhbmQgZmFsc2UuXCIsXG59O1xubGV0IF9leHBfaGQgPSBleHAoXCJlX2hkXCIpO1xubGV0IF9leHBfdGwgPSBleHAoXCJlX3RsXCIpO1xubGV0IGNvbnNfZXhwX2NvbG9yaW5nX2lkcyA9ICh+aGRfaWQ6IElkLnQsIH50bF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2hkKSwgaGRfaWQpLFxuICAoUGllY2UuaWQoX2V4cF90bCksIHRsX2lkKSxcbl07XG5sZXQgY29uc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQ3JlYXRlcyBhIGxpc3Qgd2l0aCBbKmhlYWQgZWxlbWVudCpdKCVzKSBhbmQgWyp0YWlsIGVsZW1lbnQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQ29uc0V4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfaGQsIGNvbnNfZXhwKCksIF9leHBfdGxdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtjb25zMV9leCwgY29uczJfZXhdLFxuICB9O1xufTtcblxubGV0IF9leHBfeHMgPSBleHAoXCJ4c1wiKTtcbmxldCBfZXhwX3lzID0gZXhwKFwieXNcIik7XG5sZXQgY29uY2F0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+eHNfaWQ6IElkLnQsIH55c19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX3hzKSwgeHNfaWQpLFxuICAoUGllY2UuaWQoX2V4cF95cyksIHlzX2lkKSxcbl07XG5sZXQgbGlzdF9jb25jYXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkNyZWF0ZXMgYSBsaXN0IGJ5IGNvbWJpbmluZyB0aGUgWypmaXJzdCBvcGVyYW5kKl0oJXMpIGFuZCB0aGUgWypzZWNvbmQgb3BlcmFuZCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBMaXN0Q29uY2F0RXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cF94cywgc3BhY2UoKSwgbGlzdF9jb25jYXRfZXhwKCksIHNwYWNlKCksIF9leHBfeXNdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGxpc3RsaXRzOiBncm91cCA9IHtpZDogTGlzdEV4cCwgZm9ybXM6IFtsaXN0X2V4cF19O1xuXG5sZXQgbGlzdGNvbnM6IGdyb3VwID0ge2lkOiBDb25zRXhwLCBmb3JtczogW2NvbnNfZXhwXX07XG5cbmxldCBsaXN0Y29uY2F0czogZ3JvdXAgPSB7aWQ6IExpc3RDb25jYXRFeHAsIGZvcm1zOiBbbGlzdF9jb25jYXRfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgbGlzdGxpdF9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSBsaXN0cyB3aXRoICVzLWVsZW1lbnRzIHdoZXJlIGVhY2ggZWxlbWVudCBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgcGF0dGVybiBtYXRjaCB0aGlzICpsaXN0IGxpdGVyYWwgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogTGlzdExpdFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHNwYWNlKCksIHBhdChcIi4uLlwiKV1dKSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBsaXN0bmlsX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIGVtcHR5IGxpc3RzIGBbXWAgbWF0Y2ggdGhlICplbXB0eSBsaXN0IGBbXWAgcGF0dGVybiouXCI7XG4gIHtcbiAgICBpZDogTGlzdE5pbFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIltdXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBfcGF0X2hkID0gcGF0KFwicF9oZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBjb25zX2Jhc2VfcGF0X2NvbG9yaW5nX2lkcyA9XG4gICAgKH5oZF9pZDogSWQudCwgfnRsX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfaGQpLCBoZF9pZCksXG4gIChQaWVjZS5pZChfcGF0X3RsKSwgdGxfaWQpLFxuXTtcbmxldCBjb25zX2Jhc2VfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm9uLWVtcHR5IGxpc3RzIHdpdGggKmhlYWQgZWxlbWVudCogbWF0Y2hpbmcgdGhlIFsqaGVhZCBlbGVtZW50IHBhdHRlcm4qXSglcykgYW5kICp0YWlsKiBsaXN0IG1hdGNoaW5nIHRoZSBbKnRhaWwgcGF0dGVybipdKCVzKSBtYXRjaCB0aGlzIG5vbi1lbXB0eSBsaXN0IHBhdHRlcm4uXCI7XG4gIHtcbiAgICBpZDogQ29uc1BhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXRfaGQsIGNvbnNfcGF0KCksIF9wYXRfdGxdLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXRfdGwpLCBbcGF0KFwicF90bFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9wYXRfZnN0ID0gcGF0KFwicF9mc3RcIik7XG5sZXQgX3BhdF9zbmQgPSBwYXQoXCJwX3NuZFwiKTtcbmxldCBfcGF0X3RsID0gcGF0KFwicF90bFwiKTtcbmxldCBjb25zMl9wYXRfY29sb3JpbmdfaWRzID1cbiAgICAofmZzdF9pZDogSWQudCwgfnNuZF9pZDogSWQudCwgfnRsX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfZnN0KSwgZnN0X2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfc25kKSwgc25kX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfdGwpLCB0bF9pZCksXG5dO1xubGV0IGNvbnMyX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vbi1lbXB0eSBsaXN0cyB3aXRoICpmaXJzdCBlbGVtZW50KiBtYXRjaGluZyB0aGUgWypmaXJzdCBlbGVtZW50IHBhdHRlcm4qXSglcyksICpzZWNvbmQgZWxlbWVudCogbWF0Y2hpbmcgdGhlIFsqc2Vjb25kIGVsZW1lbnQgcGF0dGVybipdKCVzKSwgYW5kICp0YWlsKiBsaXN0IG1hdGNoaW5nIHRoZSBbKnRhaWwgcGF0dGVybipdKCVzKSBtYXRjaCB0aGlzIG5vbi1lbXB0eSBsaXN0IHBhdHRlcm4uXCI7XG4gIGxldCBjID0gY29uc19wYXQoKTtcbiAge1xuICAgIGlkOiBDb25zMlBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19wYXRfZnN0LCBjb25zX3BhdCgpLCBfcGF0X3NuZCwgYywgX3BhdF90bF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGMpLCBbcGF0KFwicF9zbmRcIiksIGNvbnNfcGF0KCksIHBhdChcInBfdGxcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGxpc3RsaXQ6IGdyb3VwID0ge2lkOiBMaXN0TGl0UGF0LCBmb3JtczogW2xpc3RsaXRfcGF0XX07XG5cbmxldCBsaXN0bmlsOiBncm91cCA9IHtpZDogTGlzdE5pbFBhdCwgZm9ybXM6IFtsaXN0bmlsX3BhdF19O1xuXG5sZXQgY29uczogZ3JvdXAgPSB7aWQ6IENvbnNQYXQsIGZvcm1zOiBbY29uc19iYXNlX3BhdF19O1xuXG5sZXQgY29uczI6IGdyb3VwID0ge2lkOiBDb25zMlBhdCwgZm9ybXM6IFtjb25zMl9wYXQsIGNvbnNfYmFzZV9wYXRdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfdHlwX2VsZW0gPSB0eXAoXCJ0eV9lbGVtXCIpO1xuLy8gVE9ETyBTeW50YWN0aWMgZm9ybSBjb2xvcmluZyBsb29rcyBvZmYgZm9yIHRoaXMgb25lIGFuZCBvdGhlciB0eXBlcyBvbmVzLi4uXG5sZXQgbGlzdF90eXBfY29sb3JpbmdfaWRzID0gKH5lbGVtX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfZWxlbSksIGVsZW1faWQpLFxuXTtcbmxldCBsaXN0X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgbGlzdCB0eXBlIGNsYXNzaWZpZXMgbGlzdHMgd2l0aCBlbGVtZW50cyB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIFsqZWxlbWVudCB0eXBlKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IExpc3RUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtta19saXN0X3R5cChbW190eXBfZWxlbV1dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbGlzdDogZ3JvdXAgPSB7aWQ6IExpc3RUeXAsIGZvcm1zOiBbbGlzdF90eXBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBpbnRfdW5hcnlfbWludXNfZXggPSB7XG4gIHN1Yl9pZDogSW50VW5hcnlNaW51cyxcbiAgdGVybTogbWtfZXhhbXBsZShcIi0xXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAxIGlzIG5lZ2F0ZWQuXCIsXG59O1xubGV0IGludF9wbHVzX2V4ID0ge1xuICBzdWJfaWQ6IEludChQbHVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgKyAyXCIpLFxuICBtZXNzYWdlOiBcIjEgYWRkZWQgdG8gMiBldmFsdXRlcyB0byAzLlwiLFxufTtcbmxldCBpbnRfbWludXNfZXggPSB7XG4gIHN1Yl9pZDogSW50KE1pbnVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjIgLSAxXCIpLFxuICBtZXNzYWdlOiBcIjIgbWludXMgMSBldmFsdXRlcyB0byAxLlwiLFxufTtcbmxldCBpbnRfdGltZXNfZXggPSB7XG4gIHN1Yl9pZDogSW50KFRpbWVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgKiAyXCIpLFxuICBtZXNzYWdlOiBcIjEgbXVsdGlwbGllZCBiZSAyIGV2YWx1dGVzIHRvIDIuXCIsXG59O1xubGV0IGludF9wb3dlcl9leCA9IHtcbiAgc3ViX2lkOiBJbnQoUG93ZXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMiAqKiA0XCIpLFxuICBtZXNzYWdlOiBcIjIgcmFpc2VkIHRvIDQgZXZhbHVhdGVzIHRvIDE2XCIsXG59O1xubGV0IGludF9kaXZpZGVfZXggPSB7XG4gIHN1Yl9pZDogSW50KERpdmlkZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI2IC8gM1wiKSxcbiAgbWVzc2FnZTogXCI2IGRpdmlkZWQgYnkgMyBldmFsdXRlcyB0byAyLlwiLFxufTtcbmxldCBpbnRfbHQxX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhblRydWUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSA8IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBsZXNzIHRoYW4gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2x0Ml9leCA9IHtcbiAgc3ViX2lkOiBJbnQoTGVzc1RoYW5GYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0IDwgM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGxlc3Mgbm90IGxlc3MgdGhhbiAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9sdGUxX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhbkVxdWFsTGVzcyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxIDw9IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBsZXNzIHRoYW4gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2x0ZTJfZXggPSB7XG4gIHN1Yl9pZDogSW50KExlc3NUaGFuRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0IDw9IDNcIiksXG4gIG1lc3NhZ2U6IFwiNCBpcyBsZXNzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMywgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBpbnRfbHRlM19leCA9IHtcbiAgc3ViX2lkOiBJbnQoTGVzc1RoYW5FcXVhbEVxdWFsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjUgPD0gNVwiKSxcbiAgbWVzc2FnZTogXCI1IGlzIGVxdWFsIHRvIDUsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfZ3QxX2V4ID0ge1xuICBzdWJfaWQ6IEludChHcmVhdGVyVGhhbkZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPiAyXCIpLFxuICBtZXNzYWdlOiBcIjEgaXMgbm90IGdyZWF0ZXIgdGhhbiAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9ndDJfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0ID4gM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGdyZWF0ZXIgdGhhbiAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2d0ZTFfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxID49IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBub3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgaW50X2d0ZTJfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRXF1YWxHcmVhdGVyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQgPj0gM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGdyZWF0ZXIgdGhhbiAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2d0ZTNfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRXF1YWxFcXVhbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI1ID49IDVcIiksXG4gIG1lc3NhZ2U6IFwiNSBpcyBlcXVhbCB0byA1LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgaW50X2VxMV9leCA9IHtcbiAgc3ViX2lkOiBJbnQoRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxID09IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBkb2VzIG5vdCBlcXVhbCAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9lcTJfZXggPSB7XG4gIHN1Yl9pZDogSW50KEVxdWFsVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIzID09IDNcIiksXG4gIG1lc3NhZ2U6IFwiMyBpcyBlcXVhbCB0byAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfcGx1c19leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChQbHVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuICsuIDIuMVwiKSxcbiAgbWVzc2FnZTogXCIxLiBhZGRlZCB0byAyLjEgZXZhbHV0ZXMgdG8gMy4xXCIsXG59O1xubGV0IGZsb2F0X21pbnVzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KE1pbnVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjIuIC0uIDEuMVwiKSxcbiAgbWVzc2FnZTogXCIyLiBtaW51cyAxLjEgZXZhbHV0ZXMgdG8gMC45XCIsXG59O1xubGV0IGZsb2F0X3RpbWVzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KFRpbWVzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuICouIDIuMlwiKSxcbiAgbWVzc2FnZTogXCIxIG11bHRpcGxpZWQgYmUgMi4yIGV2YWx1dGVzIHRvIDIuMi5cIixcbn07XG5sZXQgZmxvYXRfcG93ZXJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoUG93ZXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMi4gKiouIDQuXCIpLFxuICBtZXNzYWdlOiBcIjIuIHJhaXNlZCB0byA0LiBldmFsdWF0ZXMgdG8gMTYuXCIsXG59O1xubGV0IGZsb2F0X2RpdmlkZV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChEaXZpZGUpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4yIC8uIDIuMVwiKSxcbiAgbWVzc2FnZTogXCI0LjIgZGl2aWRlZCBieSAyLjEgZXZhbHV0ZXMgdG8gMi5cIixcbn07XG5sZXQgZmxvYXRfbHQxX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiA8LiAyLjFcIiksXG4gIG1lc3NhZ2U6IFwiMS4gaXMgbGVzcyB0aGFuIDIuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfbHQyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4gPC4gMy4xXCIpLFxuICBtZXNzYWdlOiBcIjQuIGlzIGxlc3Mgbm90IGxlc3MgdGhhbiAzLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfbHRlMV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChMZXNzVGhhbkVxdWFsTGVzcyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiA8PS4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuIGlzIGxlc3MgdGhhbiAyLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1dGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2x0ZTJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTGVzc1RoYW5FcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQuIDw9LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgbGVzcyBub3QgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9sdGUzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuRXF1YWxFcXVhbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI1LjUgPD0uIDUuNVwiKSxcbiAgbWVzc2FnZTogXCI1LjUgaXMgZXF1YWwgdG8gNS41LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfZ3QxX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4xID4uIDIuMVwiKSxcbiAgbWVzc2FnZTogXCIxLjEgaXMgbm90IGdyZWF0ZXIgdGhhbiAyLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfZ3QyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0LiA+LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgZ3JlYXRlciB0aGFuIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2d0ZTFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5FcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuMSA+PS4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuMSBpcyBub3QgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9ndGUyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEdyZWF0ZXJUaGFuRXF1YWxHcmVhdGVyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQuID49LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgZ3JlYXRlciB0aGFuIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2d0ZTNfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5FcXVhbEVxdWFsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjUuNSA+PS4gNS41XCIpLFxuICBtZXNzYWdlOiBcIjUuNSBpcyBlcXVhbCB0byA1LjUsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9lcTFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoRXF1YWxGYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLiA9PS4gMi5cIiksXG4gIG1lc3NhZ2U6IFwiMS4gZG9lcyBub3QgZXF1YWwgMi4sIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgZmxvYXRfZXEyX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KEVxdWFsVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIzLjEgPT0uIDMuMVwiKSxcbiAgbWVzc2FnZTogXCIzLjEgaXMgZXF1YWwgdG8gMy4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgYm9vbF9hbmQxX2V4ID0ge1xuICBzdWJfaWQ6IEFuZEZhbHNlLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHJ1ZSAmJiBmYWxzZVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBvcGVyYW5kIGlzIHRydWUsIHNvIGV2YWx1YXRlIHRoZSByaWdodCBvcGVyYW5kLiBTaW5jZSB0aGUgcmlnaHQgb3BlcmFuZCBpcyBmYWxzZSwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBib29sX2FuZDJfZXggPSB7XG4gIHN1Yl9pZDogQW5kVHJ1ZSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPCAyICYmIDMgPCA0XCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IG9wZXJhbmQgZXZhbHVhdGVzIHRvIHRydWUsIHNvIGV2YWx1YXRlIHRoZSByaWdodCBvcGVyYW5kLiBTaW5jZSB0aGUgcmlnaHQgb3BlcmFuZCBhbHNvIGV2YWx1dGVzIHRvIHRydWUsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBib29sX29yMV9leCA9IHtcbiAgc3ViX2lkOiBPckZhbHNlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZmFsc2UgXFxcXC8gMiA8IDFcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGxlZnQgb3BlcmFuZCBldmFsdWF0ZXMgdG8gZmFsc2UsIHNvIGV2YWx1YXRlIHRoZSByaWdodCBvcGVyYW5kLiBTaW5jZSB0aGUgcmlnaHQgb3BlcmFuZCBhbHNvIGV2YWx1YXRlcyB0byBmYWxzZSwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBib29sX29yMl9leCA9IHtcbiAgc3ViX2lkOiBPclRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIzIDwgNCBcXFxcLyBmYWxzZVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBvcGVyYW5kIGV2YWx1dGVzIHRvIHRydWUsIHNvIHRoZSByaWdodCBvcGVyYW5kIGlzIG5vdCBldmFsdWF0ZWQuIFRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBzdHJfZXExX2V4ID0ge1xuICBzdWJfaWQ6IFN0cmluZ0VxdWFsRmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJcXFwiYWJjXFxcIiAkPT0gXFxcInh5elxcXCJcIiksXG4gIG1lc3NhZ2U6IFwiXFxcImFiY1xcXCIgZG9lcyBub3QgZXF1YWwgXFxcInh5elxcXCIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgc3RyX2VxMl9leCA9IHtcbiAgc3ViX2lkOiBTdHJpbmdFcXVhbFRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJcXFwiYWJjXFxcIiAkPT0gXFxcImFiY1xcXCJcIiksXG4gIG1lc3NhZ2U6IFwiXFxcImFiY1xcXCIgaXMgZXF1YWwgdG8gXFxcImFiY1xcXCIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBfdW5vcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAoc2ZfZXhwX2lkOiBJZC50LCB+ZXhwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKHNmX2V4cF9pZCwgZXhwX2lkKSxcbl07XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgYm9vbF91bmFyeV9ub3RfZXhwX2NvbG9yaW5nX2lkcyA9ICh+ZXhwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF91bm9wX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX2V4cCksIH5leHBfaWQpO1xubGV0IGJvb2xfdW5hcnlfbm90X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJQZXJmb3JtcyBib29sZWFuIG5lZ2F0aW9uIG9mIHRoZSBbKm9wZXJhbmQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogVW5PcEV4cChCb29sKE5vdCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdW5hcnlfbm90KCksIF9leHBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBpbnRfdW5hcnlfbWludXNfZXhwX2NvbG9yaW5nX2lkcyA9ICh+ZXhwX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF91bm9wX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX2V4cCksIH5leHBfaWQpO1xubGV0IGludF91bmFyeV9taW51c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiUGVyZm9ybXMgaW50ZWdlciBuZWdhdGlvbiBvZiB0aGUgWypvcGVyYW5kKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IFVuT3BFeHAoSW50KE1pbnVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFt1bmFyeV9taW51cygpLCBfZXhwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3VuYXJ5X21pbnVzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgIChzZl9sZWZ0X2lkOiBJZC50LCBzZl9yaWdodF9pZDogSWQudCwgfmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoc2ZfbGVmdF9pZCwgbGVmdF9pZCksIChzZl9yaWdodF9pZCwgcmlnaHRfaWQpXTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9wbHVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9wbHVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgc3VtIG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KFBsdXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBwbHVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3BsdXNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X21pbnVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9taW51c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoTWludXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBtaW51cygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9taW51c19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X3RpbWVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcHJvZHVjdCBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChUaW1lcykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHRpbWVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3RpbWVzX2V4XSxcbiAgfTtcbn07XG5sZXQgaW50X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9wb3dlcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHJlc3VsdCBvZiByYWlzaW5nIFsqbGVmdCpdKCVzKSBybyB0aGUgWypyaWdodCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoUG93ZXIpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBwb3dlcigpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9wb3dlcl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9kaXZpZGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBxdW90aWVudCBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChEaXZpZGUpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBkaXZpZGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZGl2aWRlX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9sdF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfbHRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChMZXNzVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGx0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2x0MV9leCwgaW50X2x0Ml9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfbHRlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9sdGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChMZXNzVGhhbk9yRXF1YWwpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBsdGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfbHRlMV9leCwgaW50X2x0ZTJfZXgsIGludF9sdGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9ndF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfZ3RfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChHcmVhdGVyVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGd0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X2d0MV9leCwgaW50X2d0Ml9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfZ3RlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9ndGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChHcmVhdGVyVGhhbk9yRXF1YWwpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBndGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZ3RlMV9leCwgaW50X2d0ZTJfZXgsIGludF9ndGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9lcV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfZXFfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBlcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZXExX2V4LCBpbnRfZXEyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9uZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X25lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIG5vdCBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChOb3RFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBub3RfZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X3BsdXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfcGx1c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHN1bSBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KFBsdXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmcGx1cygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X3BsdXNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfbWludXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfbWludXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoTWludXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmbWludXMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9taW51c19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF90aW1lc19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF90aW1lc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHByb2R1Y3Qgb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChUaW1lcykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZ0aW1lcygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X3RpbWVzX2V4XSxcbiAgfTtcbn07XG5sZXQgZmxvYXRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfcG93ZXJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSByZXN1bHQgb2YgcmFpc2luZyBbKmxlZnQqXSglcykgdG8gdGhlIFsqcmlnaHQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoUG93ZXIpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmcG93ZXIoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9wb3dlcl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfZGl2aWRlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcXVvdGllbnQgb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChEaXZpZGUpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmZGl2aWRlKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfZGl2aWRlX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2x0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2x0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgbGVzcyB0aGFuIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChMZXNzVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZsdCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2x0MV9leCwgZmxvYXRfbHQyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2x0ZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9sdGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KExlc3NUaGFuT3JFcXVhbCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZsdGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9sdGUxX2V4LCBmbG9hdF9sdGUyX2V4LCBmbG9hdF9sdGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2d0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2d0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZ3JlYXRlciB0aGFuIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChHcmVhdGVyVGhhbikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZndCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2d0MV9leCwgZmxvYXRfZ3QyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2d0ZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9ndGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KEdyZWF0ZXJUaGFuT3JFcXVhbCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZndGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9ndGUxX2V4LCBmbG9hdF9ndGUyX2V4LCBmbG9hdF9ndGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2VxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChFcXVhbHMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBmZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfZXExX2V4LCBmbG9hdF9lcTJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfbmVxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X25lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIG5vdCBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KE5vdEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZub3RfZXF1YWxzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGJvb2xfYW5kX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGJvb2xfYW5kX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgZXZhbHVhdGVzIHRvIGB0cnVlYCwgZXZhbHVhdGUgdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKS4gSWYgdGhhdCBhbHNvIGV2YWx1YXRlcyB0byBgdHJ1ZWAsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoQm9vbChBbmQpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzcGFjZSgpLCBsb2dpY2FsX2FuZCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jvb2xfYW5kMV9leCwgYm9vbF9hbmQyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGJvb2xfb3JfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG4vLyBUT0RPIFNvbWUgb2YgdGhlIGV4YW1wbGVzIGFyZSBldmFsdWF0aW5nIHdlaXJkbHkgYW5kIGNhbid0IHR5cGUgdGhlIHx8IGluIHRoZSBlZGl0b3JcbmxldCBib29sX29yX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgZXZhbHVhdGVzIHRvIGB0cnVlYCwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZSB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLiBJZiB0aGF0IGV2YWx1YXRlcyB0byBgdHJ1ZWAsIHRoZSB3aG9sZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoQm9vbChPcikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGxvZ2ljYWxfb3IoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtib29sX29yMV9leCwgYm9vbF9vcjJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgc3RyX2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IHN0cl9lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoU3RyaW5nKEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHNlcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtzdHJfZXExX2V4LCBzdHJfZXEyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IHN0cl9jb25jYXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgc3RyX2NvbmNhdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiUmV0dXJucyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgYW5kIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoU3RyaW5nKENvbmNhdCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHNjb25jYXQoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGJvb2xfdW5fbm90OiBncm91cCA9IHtcbiAgaWQ6IFVuT3BFeHAoQm9vbChOb3QpKSxcbiAgZm9ybXM6IFtib29sX3VuYXJ5X25vdF9leHBdLFxufTtcblxubGV0IGludF91bl9taW51czogZ3JvdXAgPSB7XG4gIGlkOiBVbk9wRXhwKEludChNaW51cykpLFxuICBmb3JtczogW2ludF91bmFyeV9taW51c19leHBdLFxufTtcblxubGV0IGludF9wbHVzOiBncm91cCA9IHtpZDogQmluT3BFeHAoSW50KFBsdXMpKSwgZm9ybXM6IFtpbnRfcGx1c19leHBdfTtcblxubGV0IGludF9taW51czogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChNaW51cykpLCBmb3JtczogW2ludF9taW51c19leHBdfTtcblxubGV0IGludF90aW1lczogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChUaW1lcykpLCBmb3JtczogW2ludF90aW1lc19leHBdfTtcblxubGV0IGludF9wb3dlcjogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChQb3dlcikpLCBmb3JtczogW2ludF9wb3dlcl9leHBdfTtcblxubGV0IGludF9kaXZpZGU6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KERpdmlkZSkpLFxuICBmb3JtczogW2ludF9kaXZpZGVfZXhwXSxcbn07XG5cbmxldCBpbnRfbGVzc190aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChMZXNzVGhhbikpLFxuICBmb3JtczogW2ludF9sdF9leHBdLFxufTtcblxubGV0IGludF9sZXNzX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KExlc3NUaGFuT3JFcXVhbCkpLFxuICBmb3JtczogW2ludF9sdGVfZXhwXSxcbn07XG5cbmxldCBpbnRfZ3JlYXRlcl90aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChHcmVhdGVyVGhhbikpLFxuICBmb3JtczogW2ludF9ndF9leHBdLFxufTtcblxubGV0IGludF9ncmVhdGVyX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KEdyZWF0ZXJUaGFuT3JFcXVhbCkpLFxuICBmb3JtczogW2ludF9ndGVfZXhwXSxcbn07XG5cbmxldCBpbnRfZXF1YWw6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChJbnQoRXF1YWxzKSksIGZvcm1zOiBbaW50X2VxX2V4cF19O1xuXG5sZXQgaW50X25vdF9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoTm90RXF1YWxzKSksXG4gIGZvcm1zOiBbaW50X25lcV9leHBdLFxufTtcblxubGV0IGZsb2F0X3BsdXM6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoUGx1cykpLFxuICBmb3JtczogW2Zsb2F0X3BsdXNfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9taW51czogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChNaW51cykpLFxuICBmb3JtczogW2Zsb2F0X21pbnVzX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfdGltZXM6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoVGltZXMpKSxcbiAgZm9ybXM6IFtmbG9hdF90aW1lc19leHBdLFxufTtcblxubGV0IGZsb2F0X3Bvd2VyOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KFBvd2VyKSksXG4gIGZvcm1zOiBbZmxvYXRfcG93ZXJfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9kaXZpZGU6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoRGl2aWRlKSksXG4gIGZvcm1zOiBbZmxvYXRfZGl2aWRlX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfbGVzc190aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KExlc3NUaGFuKSksXG4gIGZvcm1zOiBbZmxvYXRfbHRfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9sZXNzX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoTGVzc1RoYW5PckVxdWFsKSksXG4gIGZvcm1zOiBbZmxvYXRfbHRlX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfZ3JlYXRlcl90aGFuOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KEdyZWF0ZXJUaGFuKSksXG4gIGZvcm1zOiBbZmxvYXRfZ3RfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9ncmVhdGVyX3RoYW5fZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoR3JlYXRlclRoYW5PckVxdWFsKSksXG4gIGZvcm1zOiBbZmxvYXRfZ3RlX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoRXF1YWxzKSksXG4gIGZvcm1zOiBbZmxvYXRfZXFfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9ub3RfZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoTm90RXF1YWxzKSksXG4gIGZvcm1zOiBbZmxvYXRfbmVxX2V4cF0sXG59O1xuXG5sZXQgYm9vbF9hbmQ6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChCb29sKEFuZCkpLCBmb3JtczogW2Jvb2xfYW5kX2V4cF19O1xuXG5sZXQgYm9vbF9vcjogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEJvb2woT3IpKSwgZm9ybXM6IFtib29sX29yX2V4cF19O1xuXG5sZXQgc3RyaW5nX2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKFN0cmluZyhFcXVhbHMpKSxcbiAgZm9ybXM6IFtzdHJfZXFfZXhwXSxcbn07XG5cbmxldCBzdHJpbmdfY29uY2F0OiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKFN0cmluZyhDb25jYXQpKSxcbiAgZm9ybXM6IFtzdHJfY29uY2F0X2V4cF0sXG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcbm9wZW4gSGF6M2xjb3JlO1xuXG4vKiBJZiB5b3UgYXJlIGFkZGluZyBkb2NzIGhlcmUgZm9yIG5ldyBzeW50YXgsIHNlZSBQaXBlbGluZUV4cC5yZVxuICogd2hpY2ggZG9jdW1lbnRzIHRoZSBzaW1wbGVzdCB3YXkgdG8gYWRkIGEgbmV3IGZvcm0uICovXG5cbmxldCBmZWVkYmFja192aWV3ID0gKG1lc3NhZ2UsIHVwX2FjdGl2ZSwgdXBfYWN0aW9uLCBkb3duX2FjdGl2ZSwgZG93bl9hY3Rpb24pID0+IHtcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiZmVlZGJhY2tcIl0pLFxuICAgIFtcbiAgICAgIGRpdih+YXR0cj1jbHNzKFtcIm1lc3NhZ2VcIl0pLCBbdGV4dChtZXNzYWdlKV0pLFxuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgY2xzcyhbXCJvcHRpb25cIl0gQCAodXBfYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgICAgIEF0dHIub25fY2xpY2sodXBfYWN0aW9uKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgW3RleHQoXCLwn5GNXCIpXSxcbiAgICAgICksXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBjbHNzKFtcIm9wdGlvblwiXSBAIChkb3duX2FjdGl2ZSA/IFtcImFjdGl2ZVwiXSA6IFtdKSksXG4gICAgICAgICAgICBBdHRyLm9uX2NsaWNrKGRvd25fYWN0aW9uKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgW3RleHQoXCLwn5GOXCIpXSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBleHBsYW5hdGlvbl9mZWVkYmFja192aWV3ID0gKH5pbmplY3QsIGdyb3VwX2lkLCBmb3JtX2lkLCBtb2RlbCkgPT4ge1xuICBsZXQgKHVwX2FjdGl2ZSwgZG93bl9hY3RpdmUpID1cbiAgICBzd2l0Y2ggKFxuICAgICAgRXhwbGFpblRoaXNNb2RlbC5nZXRfZXhwbGFuYXRpb25fZmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIG1vZGVsKVxuICAgICkge1xuICAgIHwgU29tZShUaHVtYnNVcCkgPT4gKHRydWUsIGZhbHNlKVxuICAgIHwgU29tZShUaHVtYnNEb3duKSA9PiAoZmFsc2UsIHRydWUpXG4gICAgfCBOb25lID0+IChmYWxzZSwgZmFsc2UpXG4gICAgfTtcbiAgZmVlZGJhY2tfdmlldyhcbiAgICBcIlRoaXMgZXhwbGFuYXRpb24gaXMgaGVscGZ1bFwiLFxuICAgIHVwX2FjdGl2ZSxcbiAgICBfID0+XG4gICAgICBpbmplY3QoXG4gICAgICAgIFVwZGF0ZUFjdGlvbi5VcGRhdGVFeHBsYWluVGhpc01vZGVsKFxuICAgICAgICAgIFRvZ2dsZUV4cGxhbmF0aW9uRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIFRodW1ic1VwKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgZG93bl9hY3RpdmUsXG4gICAgXyA9PlxuICAgICAgaW5qZWN0KFxuICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICBUb2dnbGVFeHBsYW5hdGlvbkZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBUaHVtYnNEb3duKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICk7XG59O1xuXG5sZXQgZXhhbXBsZV9mZWVkYmFja192aWV3ID0gKH5pbmplY3QsIGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBtb2RlbCkgPT4ge1xuICBsZXQgKHVwX2FjdGl2ZSwgZG93bl9hY3RpdmUpID1cbiAgICBzd2l0Y2ggKFxuICAgICAgRXhwbGFpblRoaXNNb2RlbC5nZXRfZXhhbXBsZV9mZWVkYmFjayhcbiAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgIGZvcm1faWQsXG4gICAgICAgIGV4YW1wbGVfaWQsXG4gICAgICAgIG1vZGVsLFxuICAgICAgKVxuICAgICkge1xuICAgIHwgU29tZShUaHVtYnNVcCkgPT4gKHRydWUsIGZhbHNlKVxuICAgIHwgU29tZShUaHVtYnNEb3duKSA9PiAoZmFsc2UsIHRydWUpXG4gICAgfCBOb25lID0+IChmYWxzZSwgZmFsc2UpXG4gICAgfTtcbiAgZmVlZGJhY2tfdmlldyhcbiAgICBcIlRoaXMgZXhhbXBsZSBpcyBoZWxwZnVsXCIsXG4gICAgdXBfYWN0aXZlLFxuICAgIF8gPT5cbiAgICAgIGluamVjdChcbiAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBUaHVtYnNVcCksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIGRvd25fYWN0aXZlLFxuICAgIF8gPT5cbiAgICAgIGluamVjdChcbiAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBUaHVtYnNEb3duKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICk7XG59O1xuXG5sZXQgY29kZV9ub2RlID0gdGV4dCA9PiBOb2RlLnNwYW4ofmF0dHI9Y2xzcyhbXCJjb2RlXCJdKSwgW05vZGUudGV4dCh0ZXh0KV0pO1xuXG5sZXQgaGlnaGxpZ2h0ID1cbiAgICAofmluamVjdCwgbXNnOiBsaXN0KE5vZGUudCksIGlkOiBJZC50LCBtYXBwaW5nOiBDb2xvclN0ZXBzLnQpXG4gICAgOiAoTm9kZS50LCBDb2xvclN0ZXBzLnQpID0+IHtcbiAgbGV0IChjLCBtYXBwaW5nKSA9IENvbG9yU3RlcHMuZ2V0X2NvbG9yKGlkLCBtYXBwaW5nKTtcbiAgbGV0IGNsYXNzZXMgPSBjbHNzKFtcImhpZ2hsaWdodC1cIiArKyBjLCBcImNsaWNrYWJsZVwiXSk7XG4gIGxldCBhdHRyID1cbiAgICBzd2l0Y2ggKGluamVjdCkge1xuICAgIHwgU29tZShpbmplY3QpID0+XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbGFzc2VzLFxuICAgICAgICBBdHRyLm9uX21vdXNlZW50ZXIoXyA9PlxuICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5HbG9iYWxzKFxuICAgICAgICAgICAgICBTZXQoRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KEhvdmVyKGlkKSkpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBBdHRyLm9uX21vdXNlbGVhdmUoXyA9PlxuICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5HbG9iYWxzKFxuICAgICAgICAgICAgICBTZXQoRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KFVuc2V0SG92ZXIpKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgQXR0ci5vbl9jbGljayhfID0+XG4gICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5QZXJmb3JtQWN0aW9uKFNlbGVjdChUZXJtKElkKGlkLCBMZWZ0KSkpKSlcbiAgICAgICAgKSxcbiAgICAgIF0pXG4gICAgfCBOb25lID0+IGNsYXNzZXNcbiAgICB9O1xuICAoTm9kZS5zcGFuKH5hdHRyLCBtc2cpLCBtYXBwaW5nKTtcbn07XG5cbi8qXG4gTWFya2Rvd24gbGlrZSB0aGluZzpcbiBoaWdobGlnaHR5IHRoaW5nIDogW3RoaW5nIHRvIGhpZ2hsaWdodF0oaWQpXG4gYnVsbGV0ZWQgbGlzdDogLSBsaXN0IGl0ZW1cbiAgICAgICAgICAgICAgICAtIGxpc3QgaXRlbVxuIGNvZGU6IGBjb2RlYFxuIGl0YWxpY3M6ICp3b3JkKlxuICovXG5sZXQgbWtfdHJhbnNsYXRpb24gPSAofmluamVjdCwgdGV4dDogc3RyaW5nKTogKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSA9PiB7XG4gIGxldCBvbWQgPSBPbWQub2Zfc3RyaW5nKHRleHQpO1xuICAvL3ByaW50X21hcmtkb3duKG9tZCk7XG4gIGxldCByZWMgdHJhbnNsYXRlID1cbiAgICAgICAgICAoZG9jOiBPbWQudCwgbWFwcGluZzogQ29sb3JTdGVwcy50KTogKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSA9PlxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKChtc2csIG1hcHBpbmcpLCBlbGVtKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZWxlbSkge1xuICAgICAgICB8IE9tZC5QYXJhZ3JhcGgoZCkgPT4gdHJhbnNsYXRlKGQsIG1hcHBpbmcpXG4gICAgICAgIHwgVGV4dCh0KSA9PiAoTGlzdC5hcHBlbmQobXNnLCBbTm9kZS50ZXh0KHQpXSksIG1hcHBpbmcpXG4gICAgICAgIHwgVWwoaXRlbXMpID0+XG4gICAgICAgICAgbGV0IChidWxsZXRzLCBtYXBwaW5nKSA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgICAgKChub2RlcywgbWFwcGluZyksIGQpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgKG4sIG1hcHBpbmcpID0gdHJhbnNsYXRlKGQsIG1hcHBpbmcpO1xuICAgICAgICAgICAgICAgIChMaXN0LmFwcGVuZChub2RlcywgW05vZGUubGkobildKSwgbWFwcGluZyk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIChbXSwgbWFwcGluZyksXG4gICAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAoTGlzdC5hcHBlbmQobXNnLCBbTm9kZS51bChidWxsZXRzKV0pLCBtYXBwaW5nKTsgLyogVE9ETyBIYW5uYWggLSBTaG91bGQgdGhpcyBiZSBhbiBvcmRlcmVkIGxpc3QgaW5zdGVhZCBvZiBhbiB1bm9yZGVyZWQgbGlzdD8gKi9cbiAgICAgICAgfCBDb2RlKF9uYW1lLCB0KSA9PiAoTGlzdC5hcHBlbmQobXNnLCBbY29kZV9ub2RlKHQpXSksIG1hcHBpbmcpXG4gICAgICAgIHwgVXJsKGlkLCBkLCBfdGl0bGUpID0+XG4gICAgICAgICAgbGV0IChkLCBtYXBwaW5nKSA9IHRyYW5zbGF0ZShkLCBtYXBwaW5nKTtcbiAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgc3dpdGNoIChJZC5vZl9zdHJpbmcoaWQpKSB7XG4gICAgICAgICAgICB8IFNvbWUoaWQpID0+IGlkXG4gICAgICAgICAgICB8IE5vbmUgPT4gSWQuaW52YWxpZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICBsZXQgKGlubmVyX21zZywgbWFwcGluZykgPSBoaWdobGlnaHQofmluamVjdCwgZCwgaWQsIG1hcHBpbmcpO1xuICAgICAgICAgIChMaXN0LmFwcGVuZChtc2csIFtpbm5lcl9tc2ddKSwgbWFwcGluZyk7XG4gICAgICAgIHwgRW1waChkKSA9PlxuICAgICAgICAgIGxldCAoZCwgbWFwcGluZykgPSB0cmFuc2xhdGUoZCwgbWFwcGluZyk7XG4gICAgICAgICAgKFxuICAgICAgICAgICAgTGlzdC5hcHBlbmQoXG4gICAgICAgICAgICAgIG1zZyxcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIE5vZGUuc3BhbihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgICAgICAgICBBdHRyLnN0eWxlKFxuICAgICAgICAgICAgICAgICAgICAgIENzc19nZW4uY3JlYXRlKH5maWVsZD1cImZvbnQtc3R5bGVcIiwgfnZhbHVlPVwiaXRhbGljXCIpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcHBpbmcsXG4gICAgICAgICAgKTtcbiAgICAgICAgfCBfID0+IChtc2csIG1hcHBpbmcpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoW10sIG1hcHBpbmcpLFxuICAgICAgZG9jLFxuICAgICk7XG4gIHRyYW5zbGF0ZShvbWQsIENvbG9yU3RlcHMuZW1wdHkpO1xufTtcblxubGV0IG1rX2V4cGxhbmF0aW9uID1cbiAgICAoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfnNldHRpbmdzOiBTZXR0aW5ncy50LFxuICAgICAgZ3JvdXBfaWQsXG4gICAgICBmb3JtX2lkLFxuICAgICAgdGV4dDogc3RyaW5nLFxuICAgICAgbW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICApXG4gICAgOiAoTm9kZS50LCBDb2xvclN0ZXBzLnQpID0+IHtcbiAgbGV0IChtc2csIGNvbG9yX21hcCkgPSBta190cmFuc2xhdGlvbih+aW5qZWN0PVNvbWUoaW5qZWN0KSwgdGV4dCk7XG4gIGxldCBmZWVkYmFjayA9XG4gICAgc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvd19mZWVkYmFja1xuICAgICAgPyBbZXhwbGFuYXRpb25fZmVlZGJhY2tfdmlldyh+aW5qZWN0LCBncm91cF9pZCwgZm9ybV9pZCwgbW9kZWwpXSA6IFtdO1xuICAoXG4gICAgZGl2KFtkaXYofmF0dHI9Y2xzcyhbXCJleHBsYW5hdGlvbi1jb250ZW50c1wiXSksIG1zZyldIEAgZmVlZGJhY2spLFxuICAgIGNvbG9yX21hcCxcbiAgKTtcbn07XG5cbmxldCBleHBhbmRlcl9kZWNvID1cbiAgICAoXG4gICAgICB+Z2xvYmFscyBhcyB7Zm9udF9tZXRyaWNzLCBzZXR0aW5ncywgX30gYXMgZ2xvYmFsczogR2xvYmFscy50LFxuICAgICAgfmRvY3M6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICAgIH5pbmplY3QsXG4gICAgICB+b3B0aW9uczogbGlzdCgoRXhwbGFpblRoaXNGb3JtLmZvcm1faWQsIFNlZ21lbnQudCkpLFxuICAgICAgfmdyb3VwOiBFeHBsYWluVGhpc0Zvcm0uZ3JvdXAsXG4gICAgICB+ZG9jOiBFeHBsYWluVGhpc0Zvcm0uZm9ybSxcbiAgICAgIGVkaXRvcixcbiAgICApID0+IHtcbiAgbW9kdWxlIERlY28gPVxuICAgIERlY28uRGVjbyh7XG4gICAgICBsZXQgZWRpdG9yID0gZWRpdG9yO1xuICAgICAgbGV0IGdsb2JhbHMgPSBnbG9iYWxzO1xuICAgIH0pO1xuICBzd2l0Y2ggKGRvYy5leHBhbmRhYmxlX2lkLCBMaXN0Lmxlbmd0aChvcHRpb25zKSkge1xuICB8IChOb25lLCBfKVxuICB8IChfLCAwIHwgMSkgPT4gZGl2KFtdKVxuICB8IChTb21lKChleHBhbmRhYmxlLCBfKSksIF8pID0+XG4gICAgRGVjby50ZXJtX2RlY29yYXRpb24oXG4gICAgICB+aWQ9ZXhwYW5kYWJsZSxcbiAgICAgICgob3JpZ2luLCBfLCBwYXRoKSkgPT4ge1xuICAgICAgICBsZXQgc3BlY2lmaWNpdHlfcG9zID1cbiAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyB0b3A6ICVmcHg7XCIsXG4gICAgICAgICAgICBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGxldCBzcGVjaWZpY2l0eV9zdHlsZSA9XG4gICAgICAgICAgQXR0ci5jcmVhdGUoXG4gICAgICAgICAgICBcInN0eWxlXCIsXG4gICAgICAgICAgICBzcGVjaWZpY2l0eV9wb3NcbiAgICAgICAgICAgICsrIChkb2NzLnNwZWNpZmljaXR5X29wZW4gPyBcInRyYW5zZm9ybTogc2NhbGVZKDEpO1wiIDogXCJcIiksXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgZ2V0X2Nsc3MgPSBzZWdtZW50ID0+XG4gICAgICAgICAgc3dpdGNoIChMaXN0Lm50aChzZWdtZW50LCAwKSkge1xuICAgICAgICAgIHwgQmFzZS5UaWxlKHttb2xkLCBffSkgPT4gW1xuICAgICAgICAgICAgICBcImNpLWhlYWRlci1cIiArKyBTb3J0LnRvX3N0cmluZyhtb2xkLm91dCkgLy8gVE9ETyB0aGUgYnJvd24gb24gYnJvd24gaXNuJ3QgdGhlIGdyZWF0ZXN0Li4uIGJ1dCBva2F5XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfCBfID0+IFtdXG4gICAgICAgICAgfTtcblxuICAgICAgICBsZXQgc3BlY2lmaWNpdHlfbWVudSA9XG4gICAgICAgICAgTm9kZS5kaXYoXG4gICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICBjbHNzKFtcInNwZWNpZmljaXR5LW9wdGlvbnMtbWVudVwiLCBcImV4cGFuZGFibGVcIl0pLFxuICAgICAgICAgICAgICAgIHNwZWNpZmljaXR5X3N0eWxlLFxuICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgICAoKGlkOiBFeHBsYWluVGhpc0Zvcm0uZm9ybV9pZCwgc2VnbWVudDogU2VnbWVudC50KSk6IE5vZGUudCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG1hcCA9IE1lYXN1cmVkLm9mX3NlZ21lbnQoc2VnbWVudCk7XG4gICAgICAgICAgICAgICAgbGV0IGNvZGVfdmlldyA9XG4gICAgICAgICAgICAgICAgICBDb2RlLnNpbXBsZV92aWV3KFxuICAgICAgICAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgICAgICAgICB+dW5zZWxlY3RlZD1zZWdtZW50LFxuICAgICAgICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBjbGFzc2VzID1cbiAgICAgICAgICAgICAgICAgIGlkID09IGRvYy5pZFxuICAgICAgICAgICAgICAgICAgICA/IFtcInNlbGVjdGVkXCJdIEAgZ2V0X2Nsc3Moc2VnbWVudCkgOiBnZXRfY2xzcyhzZWdtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgdXBkYXRlX2dyb3VwX3NlbGVjdGlvbiA9IF8gPT5cbiAgICAgICAgICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgICAgRXhwbGFpblRoaXNVcGRhdGUuVXBkYXRlR3JvdXBTZWxlY3Rpb24oZ3JvdXAuaWQsIGlkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgTm9kZS5kaXYoXG4gICAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICAgICAgICBjbHNzKGNsYXNzZXMpLFxuICAgICAgICAgICAgICAgICAgICAgIEF0dHIub25fY2xpY2sodXBkYXRlX2dyb3VwX3NlbGVjdGlvbiksXG4gICAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgICAgW2NvZGVfdmlld10sXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgZXhwYW5kX2Fycm93X3N0eWxlID0gQXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBzcGVjaWZpY2l0eV9wb3MpO1xuICAgICAgICBsZXQgZXhwYW5kX2Fycm93ID1cbiAgICAgICAgICBOb2RlLmRpdihcbiAgICAgICAgICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJhcnJvd1wiXSksIGV4cGFuZF9hcnJvd19zdHlsZV0pLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgKTtcblxuICAgICAgICBsZXQgZXhwYW5kYWJsZV9kZWNvID1cbiAgICAgICAgICBEZWNVdGlsLmNvZGVfc3ZnKFxuICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgIH5vcmlnaW4sXG4gICAgICAgICAgICB+YmFzZV9jbHM9W1wiZXhwYW5kYWJsZVwiXSxcbiAgICAgICAgICAgIH5hYnNfcG9zPWZhbHNlLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICApO1xuXG4gICAgICAgIE5vZGUuZGl2KFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgY2xzcyhbXCJleHBhbmRhYmxlLXRhcmdldFwiXSksXG4gICAgICAgICAgICAgIERlY1V0aWwuYWJzX3Bvc2l0aW9uKH5mb250X21ldHJpY3MsIG9yaWdpbiksXG4gICAgICAgICAgICAgIEF0dHIub25fY2xpY2soXyA9PiB7XG4gICAgICAgICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgICAgICAgICAgIEV4cGxhaW5UaGlzVXBkYXRlLlNwZWNpZmljaXR5T3BlbighZG9jcy5zcGVjaWZpY2l0eV9vcGVuKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgIFtleHBhbmRhYmxlX2RlY28sIHNwZWNpZmljaXR5X21lbnVdXG4gICAgICAgICAgQCAoZG9jcy5zcGVjaWZpY2l0eV9vcGVuID8gW10gOiBbZXhwYW5kX2Fycm93XSksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgIClcbiAgfTtcbn07XG5cbmxldCBleGFtcGxlX3ZpZXcgPVxuICAgIChcbiAgICAgIH5nbG9iYWxzOiBHbG9iYWxzLnQsXG4gICAgICB+aW5qZWN0LFxuICAgICAgfmdyb3VwX2lkLFxuICAgICAgfmZvcm1faWQsXG4gICAgICB+ZXhhbXBsZXM6IGxpc3QoRXhwbGFpblRoaXNGb3JtLmV4YW1wbGUpLFxuICAgICAgfm1vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsXG4gICAgKSA9PiB7XG4gIGV4YW1wbGVzID09IFtdXG4gICAgPyBbXVxuICAgIDogW1xuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1BdHRyLmlkKFwiZXhhbXBsZXNcIiksXG4gICAgICAgIExpc3QubWFwaShcbiAgICAgICAgICAoXywge3Rlcm0sIG1lc3NhZ2UsIHN1Yl9pZCwgX306IEV4cGxhaW5UaGlzRm9ybS5leGFtcGxlKSA9PiB7XG4gICAgICAgICAgICBsZXQgZmVlZGJhY2sgPVxuICAgICAgICAgICAgICBnbG9iYWxzLnNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3dfZmVlZGJhY2tcbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIGV4YW1wbGVfZmVlZGJhY2tfdmlldyhcbiAgICAgICAgICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgICAgICAgICAgIGZvcm1faWQsXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9pZCxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICB+YXR0cj1jbHNzKFtcImV4YW1wbGVcIl0pLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgQ2VsbEVkaXRvci52aWV3KFxuICAgICAgICAgICAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgICAgICAgICAgICB+c2VsZWN0PV8gPT4gVWlfZWZmZWN0Lklnbm9yZSxcbiAgICAgICAgICAgICAgICAgIH5pbmplY3Q9XyA9PiBVaV9lZmZlY3QuSWdub3JlLFxuICAgICAgICAgICAgICAgICAgfmhpZ2hsaWdodHM9Tm9uZSxcbiAgICAgICAgICAgICAgICAgIH5zZWxlY3RlZD1Ob25lLFxuICAgICAgICAgICAgICAgICAgfmNhcHRpb249Tm9uZSxcbiAgICAgICAgICAgICAgICAgIH5sb2NrZWQ9dHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVkaXRvciA9XG4gICAgICAgICAgICAgICAgICAgICAgRWRpdG9yLmluaXQofnJlYWRfb25seT10cnVlLCBaaXBwZXIudW56aXAodGVybSkpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgKHRlcm0sIF8pID1cbiAgICAgICAgICAgICAgICAgICAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfc2VtKGVkaXRvci5zdGF0ZS56aXBwZXIpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3RhdGljcyA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2FjaGVkU3RhdGljcy5zdGF0aWNzX29mX3Rlcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2V0dGluZ3M9Z2xvYmFscy5zZXR0aW5ncy5jb3JlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0OiBNb2RlbFJlc3VsdC50ID1cbiAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzLnNldHRpbmdzLmNvcmUuZHluYW1pY3NcbiAgICAgICAgICAgICAgICAgICAgICAgID8gRXZhbHVhdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxhYjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDogdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWx1YXRpb246XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2UuZXZhbHVhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5zZXR0aW5ncz1nbG9iYWxzLnNldHRpbmdzLmNvcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBOb0VsYWI7XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBlZGl0b3I6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY3MsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICAgICAgfmF0dHI9Y2xzcyhbXCJleHBsYW5hdGlvblwiXSksXG4gICAgICAgICAgICAgICAgICBbdGV4dChtZXNzYWdlKV0gQCBmZWVkYmFjayxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGV4YW1wbGVzLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBdO1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQgPSAocGF0OiBQYXQudCkgPT4ge1xuICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gIHwgUGFyZW5zKHApXG4gIHwgQ2FzdChwLCBfLCBfKSA9PiBieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQocClcbiAgfCBfID0+IHBhdFxuICB9O1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX3BhdCA9IChwYXQ6IFBhdC50KSA9PiB7XG4gIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgfCBQYXJlbnMocCkgPT4gYnlwYXNzX3BhcmVuc19wYXQocClcbiAgfCBfID0+IHBhdFxuICB9O1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX2V4cCA9IChleHA6IEV4cC50KSA9PiB7XG4gIHN3aXRjaCAoZXhwLnRlcm0pIHtcbiAgfCBQYXJlbnMoZSkgPT4gYnlwYXNzX3BhcmVuc19leHAoZSlcbiAgfCBfID0+IGV4cFxuICB9O1xufTtcblxubGV0IHJlYyBieXBhc3NfcGFyZW5zX3R5cCA9ICh0eXA6IFR5cC50KSA9PiB7XG4gIHN3aXRjaCAodHlwLnRlcm0pIHtcbiAgfCBQYXJlbnModCkgPT4gYnlwYXNzX3BhcmVuc190eXAodClcbiAgfCBfID0+IHR5cFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtZXNzYWdlX21vZGUgPVxuICB8IE1lc3NhZ2VDb250ZW50KFxuICAgICAgVXBkYXRlQWN0aW9uLnQgPT4gVmlydHVhbF9kb20uVmRvbS5FZmZlY3QudCh1bml0KSxcbiAgICAgIEdsb2JhbHMudCxcbiAgICApXG4gIHwgQ29sb3JpbmdzO1xuXG5sZXQgZ2V0X2RvYyA9XG4gICAgKFxuICAgICAgfmRvY3M6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICAgIGluZm86IG9wdGlvbihTdGF0aWNzLkluZm8udCksXG4gICAgICBtb2RlOiBtZXNzYWdlX21vZGUsXG4gICAgKVxuICAgIDogKGxpc3QoTm9kZS50KSwgKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSwgbGlzdChOb2RlLnQpKSA9PiB7XG4gIGxldCBzaW1wbGUgPSBtc2cgPT4gKFtdLCAoW3RleHQobXNnKV0sIChJZC5NYXAuZW1wdHksIDApKSwgW10pO1xuICBsZXQgZGVmYXVsdCA9IHNpbXBsZShcIk5vIGRvY3MgYXZhaWxhYmxlXCIpO1xuICBsZXQgZ2V0X3NwZWNpZmljaXR5X2xldmVsID0gZ3JvdXBfaWQgPT5cbiAgICBmc3QoRXhwbGFpblRoaXNNb2RlbC5nZXRfZm9ybV9hbmRfb3B0aW9ucyhncm91cF9pZCwgZG9jcykpLmlkO1xuICBsZXQgZ2V0X21lc3NhZ2UgPVxuICAgICAgKFxuICAgICAgICB+Y29sb3JpbmdzPVtdLFxuICAgICAgICB+Zm9ybWF0OiBvcHRpb24oc3RyaW5nID0+IHN0cmluZyk9Tm9uZSxcbiAgICAgICAgfmV4cGxhbmF0aW9uOiBvcHRpb24oc3RyaW5nKT0/LFxuICAgICAgICBncm91cDogRXhwbGFpblRoaXNGb3JtLmdyb3VwLFxuICAgICAgKVxuICAgICAgOiAobGlzdChOb2RlLnQpLCAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpLCBsaXN0KE5vZGUudCkpID0+IHtcbiAgICBsZXQgKGRvYywgb3B0aW9ucykgPSBFeHBsYWluVGhpc01vZGVsLmdldF9mb3JtX2FuZF9vcHRpb25zKGdyb3VwLCBkb2NzKTtcblxuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMxOTk4NDA4L29jYW1sLWNvbnZlcnRpbmctc3RyaW5ncy10by1hLXVuaXQtc3RyaW5nLWZvcm1hdFxuICAgIGxldCBleHBsYW5hdGlvbl9tc2cgPVxuICAgICAgc3dpdGNoIChleHBsYW5hdGlvbiwgZm9ybWF0KSB7XG4gICAgICB8IChTb21lKG1zZyksIF8pID0+IG1zZ1xuICAgICAgfCAoXywgU29tZShmKSkgPT4gZihkb2MuZXhwbGFuYXRpb24pXG4gICAgICB8IChfLCBOb25lKSA9PiBkb2MuZXhwbGFuYXRpb25cbiAgICAgIH07XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgfCBNZXNzYWdlQ29udGVudChpbmplY3QsIGdsb2JhbHMpID0+XG4gICAgICBsZXQgKGV4cGxhbmF0aW9uLCBjb2xvcl9tYXApID1cbiAgICAgICAgbWtfZXhwbGFuYXRpb24oXG4gICAgICAgICAgfnNldHRpbmdzPWdsb2JhbHMuc2V0dGluZ3MsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICBncm91cC5pZCxcbiAgICAgICAgICBkb2MuaWQsXG4gICAgICAgICAgZXhwbGFuYXRpb25fbXNnLFxuICAgICAgICAgIGRvY3MsXG4gICAgICAgICk7XG4gICAgICBsZXQgc29ydCA9XG4gICAgICAgIHN3aXRjaCAoaW5mbykge1xuICAgICAgICB8IE5vbmUgPT4gU29ydC5BbnlcbiAgICAgICAgfCBTb21lKGNpKSA9PiBJbmZvLnNvcnRfb2YoY2kpXG4gICAgICAgIH07XG4gICAgICBsZXQgaGlnaGxpZ2h0cyA9XG4gICAgICAgIGNvbG9yaW5nc1xuICAgICAgICB8PiBMaXN0Lm1hcCgoKHN5bnRhY3RpY19mb3JtX2lkOiBJZC50LCBjb2RlX2lkOiBJZC50KSkgPT4ge1xuICAgICAgICAgICAgIGxldCAoY29sb3IsIF8pID0gQ29sb3JTdGVwcy5nZXRfY29sb3IoY29kZV9pZCwgY29sb3JfbWFwKTtcbiAgICAgICAgICAgICAoc3ludGFjdGljX2Zvcm1faWQsIGNvbG9yKTtcbiAgICAgICAgICAgfSlcbiAgICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgICAgfD4gSWQuTWFwLm9mX3NlcVxuICAgICAgICB8PiBPcHRpb24uc29tZTtcbiAgICAgIGxldCBlZGl0b3IgPVxuICAgICAgICBFZGl0b3IuaW5pdCh+cmVhZF9vbmx5PXRydWUsIGRvYy5zeW50YWN0aWNfZm9ybSB8PiBaaXBwZXIudW56aXApO1xuICAgICAgbGV0IGV4cGFuZGVyX2RlY28gPVxuICAgICAgICBleHBhbmRlcl9kZWNvKFxuICAgICAgICAgIH5nbG9iYWxzLFxuICAgICAgICAgIH5kb2NzLFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfm9wdGlvbnMsXG4gICAgICAgICAgfmdyb3VwLFxuICAgICAgICAgIH5kb2MsXG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICApO1xuICAgICAgbGV0IGhpZ2hsaWdodF9kZWNvID1cbiAgICAgICAgc3dpdGNoIChoaWdobGlnaHRzKSB7XG4gICAgICAgIHwgU29tZShoaWdobGlnaHRzKSA9PlxuICAgICAgICAgIG1vZHVsZSBEZWNvID1cbiAgICAgICAgICAgIERlY28uRGVjbyh7XG4gICAgICAgICAgICAgIGxldCBlZGl0b3IgPSBlZGl0b3I7XG4gICAgICAgICAgICAgIGxldCBnbG9iYWxzID0gZ2xvYmFscztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIERlY28uY29sb3JfaGlnaGxpZ2h0cyhDb2xvclN0ZXBzLnRvX2xpc3QoaGlnaGxpZ2h0cykpO1xuICAgICAgICB8IE5vbmUgPT4gW11cbiAgICAgICAgfTtcbiAgICAgIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5lbXB0eV9zdGF0aWNzO1xuICAgICAgbGV0IHN5bnRhY3RpY19mb3JtX3ZpZXcgPVxuICAgICAgICBSZWFkT25seUVkaXRvci52aWV3KFxuICAgICAgICAgIH5nbG9iYWxzLFxuICAgICAgICAgIH5vdmVybGF5cz1oaWdobGlnaHRfZGVjbyBAIFtleHBhbmRlcl9kZWNvXSxcbiAgICAgICAgICB+c29ydCxcbiAgICAgICAgICB7ZWRpdG9yLCBzdGF0aWNzfSxcbiAgICAgICAgKTtcbiAgICAgIGxldCBleGFtcGxlX3ZpZXcgPVxuICAgICAgICBleGFtcGxlX3ZpZXcoXG4gICAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+Z3JvdXBfaWQ9Z3JvdXAuaWQsXG4gICAgICAgICAgfmZvcm1faWQ9ZG9jLmlkLFxuICAgICAgICAgIH5leGFtcGxlcz1kb2MuZXhhbXBsZXMsXG4gICAgICAgICAgfm1vZGVsPWRvY3MsXG4gICAgICAgICk7XG4gICAgICAoW3N5bnRhY3RpY19mb3JtX3ZpZXddLCAoW2V4cGxhbmF0aW9uXSwgY29sb3JfbWFwKSwgZXhhbXBsZV92aWV3KTtcbiAgICB8IENvbG9yaW5ncyA9PlxuICAgICAgbGV0IChfLCBjb2xvcl9tYXApID0gbWtfdHJhbnNsYXRpb24ofmluamVjdD1Ob25lLCBleHBsYW5hdGlvbl9tc2cpO1xuICAgICAgKFtdLCAoW10sIGNvbG9yX21hcCksIFtdKTtcbiAgICB9O1xuICB9O1xuXG4gIC8qIFVzZSB0aGlzIHdoZW4gYWRkaW5nIG5ldyBlbnRyaWVzICovXG4gIGxldCBtZXNzYWdlX3NpbmdsZSA9IChlOiBFeHBsYWluVGhpc0Zvcm0uU2ltcGxlLnQpID0+IHtcbiAgICBsZXQgKGV4cGxhbmF0aW9uLCBjb2xvcmluZ3MsIGdyb3VwKSA9IEV4cGxhaW5UaGlzRm9ybS5TaW1wbGUudG9fZ3JvdXAoZSk7XG4gICAgZ2V0X21lc3NhZ2UofmNvbG9yaW5ncywgfmZvcm1hdD1Ob25lLCB+ZXhwbGFuYXRpb24sIGdyb3VwKTtcbiAgfTtcblxuICBzd2l0Y2ggKGluZm8pIHtcbiAgfCBTb21lKEluZm9FeHAoe3Rlcm0sIF99KSkgPT5cbiAgICBsZXQgcmVjIGdldF9tZXNzYWdlX2V4cCA9XG4gICAgICAgICAgICAodGVybSlcbiAgICAgICAgICAgIDogKGxpc3QoTm9kZS50KSwgKGxpc3QoTm9kZS50KSwgQ29sb3JTdGVwcy50KSwgbGlzdChOb2RlLnQpKSA9PlxuICAgICAgc3dpdGNoICgodGVybTogRXhwLnRlcm0pKSB7XG4gICAgICB8IEV4cC5JbnZhbGlkKF8pID0+IHNpbXBsZShcIk5vdCBhIHZhbGlkIGV4cHJlc3Npb25cIilcbiAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgICAgfCBGYWlsZWRDYXN0KF8pXG4gICAgICB8IENsb3N1cmUoXylcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBCdWlsdGluRnVuKF8pID0+IHNpbXBsZShcIkludGVybmFsIGV4cHJlc3Npb25cIilcbiAgICAgIHwgRW1wdHlIb2xlID0+IGdldF9tZXNzYWdlKEhvbGVFeHAuZW1wdHlfaG9sZV9leHBzKVxuICAgICAgfCBNdWx0aUhvbGUoX2NoaWxkcmVuKSA9PiBnZXRfbWVzc2FnZShIb2xlRXhwLm11bHRpX2hvbGVfZXhwcylcbiAgICAgIHwgVHlBbGlhcyh0eV9wYXQsIHR5X2RlZiwgX2JvZHkpID0+XG4gICAgICAgIGxldCB0cGF0X2lkID0gTGlzdC5udGgodHlfcGF0LmlkcywgMCk7XG4gICAgICAgIGxldCBkZWZfaWQgPSBMaXN0Lm50aCh0eV9kZWYuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgIFR5QWxpYXNFeHAudHlhbGlhc19iYXNlX2V4cF9jb2xvcmluZ19pZHMofnRwYXRfaWQsIH5kZWZfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRwYXRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIFR5QWxpYXNFeHAudHlhbGlhc19leHBzLFxuICAgICAgICApO1xuICAgICAgfCBEZWZlcnJhbChfKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC5kZWZlcnJhbF9leHBzKVxuICAgICAgfCBCb29sKGIpID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLmJvb2xfZXhwcyhiKSlcbiAgICAgIHwgSW50KGkpID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLmludF9leHBzKGkpKVxuICAgICAgfCBGbG9hdChmKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC5mbG9hdF9leHBzKGYpKVxuICAgICAgfCBTdHJpbmcocykgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAuc3RyaW5nX2V4cHMocykpXG4gICAgICB8IExpc3RMaXQodGVybXMpID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKHRlcm1zKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdEV4cC5saXN0bGl0cyxcbiAgICAgICAgKVxuICAgICAgfCBUeXBGdW4odHBhdCwgYm9keSwgXykgPT5cbiAgICAgICAgbGV0IGJhc2ljID0gZ3JvdXBfaWQgPT4ge1xuICAgICAgICAgIGxldCB0cGF0X2lkID0gTGlzdC5udGgodHBhdC5pZHMsIDApO1xuICAgICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+cGF0X2lkPXRwYXRfaWQsXG4gICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgICAgLyogVE9ETzogTW9yZSBjb3VsZCBiZSBkb25lIGhlcmUgcHJvYmFibHkgZm9yIGRpZmZlcmVudCBwYXR0ZXJucy4gKi9cbiAgICAgICAgYmFzaWMoVHlwRnVuY3Rpb25FeHAudHlwZV9mdW5jdGlvbnNfYmFzaWMpO1xuICAgICAgfCBGdW4ocGF0LCBib2R5LCBfLCBfKSA9PlxuICAgICAgICBsZXQgYmFzaWMgPSBncm91cF9pZCA9PiB7XG4gICAgICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgcGF0ID0gYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0KHBhdCk7XG4gICAgICAgIGxldCBwYXRfaWQgPSBMaXN0Lm50aChwYXQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGUgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fZW1wdHlfaG9sZV9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19lbXB0eV9ob2xlKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fZW1wdHlfaG9sZV9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2VtcHR5X2hvbGUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZW1wdHlfaG9sZSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9tdWx0aV9ob2xlX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX211bHRpX2hvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbXVsdGlfaG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19tdWx0aV9ob2xlKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgV2lsZCA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl93aWxkX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3dpbGQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1GdW5jdGlvbkV4cC5mdW5jdGlvbl93aWxkX2V4cF9jb2xvcmluZ19pZHMofmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3dpbGQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfd2lsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEludChpKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9pbnRsaXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfaW50KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25faW50bGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChpKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2ludCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19pbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBGbG9hdChmKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9mbG9hdGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19mbG9hdCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2Zsb2F0bGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlZiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgZixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Zsb2F0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Zsb2F0KTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQm9vbChiKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9ib29sbGl0X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Jvb2wpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9ib29sbGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlYiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgYixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Jvb2wsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYm9vbCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFN0cmluZyhzKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9zdHJsaXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfc3RyKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fc3RybGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19zdHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUdXBsZShbXSkgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHJpdl9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190cml2KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHJpdl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgLy8gSEFOTkFIIFRPRE8gLSB0aGluayBjb3VsZCBtb3ZlIHRoaXMgZm9ybWF0IHRoaW5nIGxpa2UgaW50byB0aGUgY29sb3JpbmdzXG4gICAgICAgICAgICAgIC8vIGZ1bmN0aW9uc1xuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190cml2LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3RyaXYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBMaXN0TGl0KGVsZW1lbnRzKSA9PlxuICAgICAgICAgIGlmIChMaXN0Lmxlbmd0aChlbGVtZW50cykgPT0gMCkge1xuICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2xpc3RuaWxfZXhwLmlkXG4gICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bmlsKSkge1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bmlsLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RuaWwpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2UgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2xpc3RsaXRfZXhwLmlkXG4gICAgICAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RsaXQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChlbGVtZW50cykpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdGxpdCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bGl0KTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQ29ucyhoZCwgdGwpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2NvbnNfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY29ucykpIHtcbiAgICAgICAgICAgIGxldCBoZF9pZCA9IExpc3QubnRoKGhkLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgdGxfaWQgPSBMaXN0Lm50aCh0bC5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fY29uc19leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfmhkX2lkLFxuICAgICAgICAgICAgICAgICAgfnRsX2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhoZF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRsX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2NvbnMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY29ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFZhcih2YXIpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3Zhcl9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc192YXIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl92YXJfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICB2YXIsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc192YXIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdmFyKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgVHVwbGUoZWxlbWVudHMpID0+XG4gICAgICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgICAgIGxldCBib2R5X2lkID0gTGlzdC5udGgoYm9keS5pZHMsIDApO1xuICAgICAgICAgIGxldCBiYXNpY190dXBsZSA9IGdyb3VwX2lkID0+IHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChlbGVtZW50cykpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHN3aXRjaCAoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSB7XG4gICAgICAgICAgfCAyID0+XG4gICAgICAgICAgICBsZXQgZG9jX2lkID0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTIpO1xuICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlMl9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGxldCBwYXQxX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgICAgIGxldCBwYXQyX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdDFfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQyX2lkLFxuICAgICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0MV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0Ml9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGVfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBiYXNpY190dXBsZShGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB8IDMgPT5cbiAgICAgICAgICAgIGxldCBkb2NfaWQgPSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMyk7XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGUzX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMikuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlM19leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgICB+cGF0MV9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDJfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQzX2lkLFxuICAgICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQzX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUzLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIHwgXyA9PlxuICAgICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlX2V4cC5pZFxuICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUpKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIHwgQXAoY29uLCBhcmcpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2FwX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2FwKSkge1xuICAgICAgICAgICAgbGV0IGNvbl9pZCA9IExpc3QubnRoKGNvbi5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fYXBfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5jb25faWQsXG4gICAgICAgICAgICAgICAgICB+YXJnX2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25faWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYXAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zdHJ1Y3Rvcih2KSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9jdHJfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY3RyKSkge1xuICAgICAgICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9jdHJfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHYsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jdHIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY3RyKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgSW52YWxpZChfKSA9PiBkZWZhdWx0IC8vIFNob3VsZG4ndCBnZXQgaGl0XG4gICAgICAgIHwgUGFyZW5zKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXQ/XG4gICAgICAgIHwgQ2FzdChfKSA9PiBkZWZhdWx0IC8vIFNob3VsZG4ndCBnZXQgaGl0P1xuICAgICAgICB9O1xuICAgICAgfCBUdXBsZSh0ZXJtcykgPT5cbiAgICAgICAgbGV0IGJhc2ljID0gZ3JvdXBfaWQgPT5cbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aCh0ZXJtcykpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgICk7XG4gICAgICAgIHN3aXRjaCAoTGlzdC5sZW5ndGgodGVybXMpKSB7XG4gICAgICAgIHwgMiA9PlxuICAgICAgICAgIGlmIChUdXBsZUV4cC50dXBsZV9leHBfc2l6ZTIuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlRXhwLnR1cGxlczIpKSB7XG4gICAgICAgICAgICBsZXQgZXhwMV9pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGV4cDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aCh0ZXJtcywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplMl9jb2xvcmluZ19pZHMofmV4cDFfaWQsIH5leHAyX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIFR1cGxlRXhwLnR1cGxlczIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhUdXBsZUV4cC50dXBsZXMyKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgMyA9PlxuICAgICAgICAgIGlmIChUdXBsZUV4cC50dXBsZV9leHBfc2l6ZTMuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlRXhwLnR1cGxlczMpKSB7XG4gICAgICAgICAgICBsZXQgZXhwMV9pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGV4cDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aCh0ZXJtcywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCBleHAzX2lkID0gTGlzdC5udGgoTGlzdC5udGgodGVybXMsIDIpLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBUdXBsZUV4cC50dXBsZV9leHBfc2l6ZTNfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfmV4cDFfaWQsXG4gICAgICAgICAgICAgICAgICB+ZXhwMl9pZCxcbiAgICAgICAgICAgICAgICAgIH5leHAzX2lkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAzX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBUdXBsZUV4cC50dXBsZXMzLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoVHVwbGVFeHAudHVwbGVzMyk7XG4gICAgICAgICAgfVxuICAgICAgICB8IF8gPT4gYmFzaWMoVHVwbGVFeHAudHVwbGVzKVxuICAgICAgICB9O1xuICAgICAgfCBWYXIobikgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAudmFyX2V4cHMobikpXG4gICAgICB8IExldChwYXQsIGRlZiwgYm9keSkgPT5cbiAgICAgICAgbGV0IHBhdCA9IGJ5cGFzc19wYXJlbnNfYW5kX2Fubm90X3BhdChwYXQpO1xuICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgIGxldCBkZWZfaWQgPSBMaXN0Lm50aChkZWYuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgIGxldCBiYXNpYyA9IGdyb3VwX2lkID0+IHtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9TGV0RXhwLmxldF9iYXNlX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGUgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9lbXB0eV9ob2xlX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfZW1wdHlob2xlKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9lbXB0eV9ob2xlX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19lbXB0eWhvbGUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c19lbXB0eWhvbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBNdWx0aUhvbGUoXykgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9tdWx0aV9ob2xlX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfbXV0bGlob2xlKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19tdXRsaWhvbGUsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c19tdXRsaWhvbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBXaWxkID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfd2lsZF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3dpbGQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1MZXRFeHAubGV0X3dpbGRfZXhwX2NvbG9yaW5nX2lkcyh+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfd2lsZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX3dpbGQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBJbnQoaSkgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9pbnRfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19pbnQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2ludF9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KGkpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19pbnQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlIGFuZCBzb21lIG90aGVyIHBsYWNlcyB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuIGZvcm1zIGFuZCBzcGVjaWZpY2l0eSBsZXZlbHMuLi4gbWF5YmUgYSBTYWZhcmkgaXNzdWUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19pbnQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBGbG9hdChmKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2Zsb2F0X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfZmxvYXQpKSB7XG4gICAgICAgICAgICAvLyBUT0RPIE1ha2Ugc3VyZSBldmVyeXdoZXJlIHByaW50aW5nIHRoZSBmbG9hdCBsaXRlcmFsIHByaW50IGl0IHByZXR0aWVyXG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2Zsb2F0X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJWYlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIGYsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2Zsb2F0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyogVE9ETyBUaGUgY29sb3JpbmcgZm9yIHRoZSBzeW50YWN0aWMgZm9ybSBpcyBzb21ldGltZXMgd3JvbmcgaGVyZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2Zsb2F0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQm9vbChiKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2Jvb2xfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19ib29sKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9ib29sX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJWIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIGIsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2Jvb2wsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlLi4uICovXG4gICAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfYm9vbCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFN0cmluZyhzKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X3N0cl9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3N0cikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfc3RyX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHMsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19zdHIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUdXBsZShbXSkgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF90cml2X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfdHJpdikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdHJpdl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3RyaXYsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlIGFuZCBvdGhlciBwbGFjZXMgd2hlbiBzd2l0Y2hpbmcgc3ludGFjdGljIHNwZWNpZmljaXRpZXMuLi4gc2VlbXMgbGlrZSBtaWdodCBiZSBTYWZhcmkgaXNzdWUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c190cml2LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgTGlzdExpdChlbGVtZW50cykgPT5cbiAgICAgICAgICBpZiAoTGlzdC5sZW5ndGgoZWxlbWVudHMpID09IDApIHtcbiAgICAgICAgICAgIGlmIChMZXRFeHAubGV0X2xpc3RuaWxfZXhwLmlkXG4gICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2xpc3RuaWwpKSB7XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2xpc3RuaWxfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdF9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmRlZl9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldHNfbGlzdG5pbCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2xpc3RuaWwpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2UgaWYgKExldEV4cC5sZXRfbGlzdGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19saXN0bGl0KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9saXN0bGl0X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfbGlzdGxpdCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2xpc3RsaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9jb25zX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfY29ucykpIHtcbiAgICAgICAgICAgIGxldCBoZF9pZCA9IExpc3QubnRoKGhkLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgdGxfaWQgPSBMaXN0Lm50aCh0bC5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9jb25zX2V4cF9jb2xvcmluZ19pZHMofmhkX2lkLCB+dGxfaWQsIH5kZWZfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGxfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2NvbnMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c19jb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgVmFyKHZhcikgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF92YXJfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c192YXIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X3Zhcl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgdmFyLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c192YXIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c192YXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUdXBsZShlbGVtZW50cykgPT5cbiAgICAgICAgICBsZXQgYmFzaWNfdHVwbGUgPSBncm91cF9pZCA9PiB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1MZXRFeHAubGV0X3R1cGxlX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH07XG5cbiAgICAgICAgICBzd2l0Y2ggKExpc3QubGVuZ3RoKGVsZW1lbnRzKSkge1xuICAgICAgICAgIHwgMiA9PlxuICAgICAgICAgICAgbGV0IGRvY19pZCA9IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c190dXBsZTIpO1xuICAgICAgICAgICAgaWYgKExldEV4cC5sZXRfdHVwbGUyX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdHVwbGUyX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXQxX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0Ml9pZCxcbiAgICAgICAgICAgICAgICAgICAgfmRlZl9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0c190dXBsZTIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKExldEV4cC5sZXRfdHVwbGVfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBiYXNpY190dXBsZShMZXRFeHAubGV0c190dXBsZTIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfdHVwbGUyKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfCAzID0+XG4gICAgICAgICAgICBsZXQgZG9jX2lkID0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3R1cGxlMyk7XG4gICAgICAgICAgICAvLyBUT0RPIFN5bnRhY3RpYyBmb3JtIGNhbiBnbyBvZmYgcGFnZSAtIHNvIGNhbiBleGFtcGxlcyAtIGJ1dCBjYW4gc2Nyb2xsLCBqdXN0IGNhbid0IHNlZSBib3R0b20gc2Nyb2xsIGJhclxuICAgICAgICAgICAgaWYgKExldEV4cC5sZXRfdHVwbGUzX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMikuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXQxX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0Ml9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDNfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5kZWZfaWQsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQzX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0c190dXBsZTMsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKExldEV4cC5sZXRfdHVwbGVfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBiYXNpY190dXBsZShMZXRFeHAubGV0c190dXBsZTMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfdHVwbGUzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICBpZiAoTGV0RXhwLmxldF90dXBsZV9leHAuaWRcbiAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfdHVwbGUpKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKExldEV4cC5sZXRzX3R1cGxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX3R1cGxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB8IEFwKGNvbiwgYXJnKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2FwX2V4cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfYXApKSB7XG4gICAgICAgICAgICBsZXQgY29uX2lkID0gTGlzdC5udGgoY29uLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgYXJnX2lkID0gTGlzdC5udGgoYXJnLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2FwX2V4cF9jb2xvcmluZ19pZHMofmNvbl9pZCwgfmFyZ19pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoY29uX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19hcCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2FwKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgQ29uc3RydWN0b3IodikgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF9jdHJfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19jdHIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2N0cl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICB2LFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19jdHIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c19jdHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBJbnZhbGlkKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXRcbiAgICAgICAgfCBQYXJlbnMoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdD9cbiAgICAgICAgfCBDYXN0KF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXQ/XG4gICAgICAgIH07XG4gICAgICB8IEZpeEYocGF0LCBib2R5LCBfKSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBGaXhGRXhwLnNpbmdsZShcbiAgICAgICAgICAgIH5wYXRfaWQ9VVBhdC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVVFeHAucmVwX2lkKGJvZHkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgQXAoUmV2ZXJzZSwgYXJnLCBmbikgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgUGlwZWxpbmVFeHAuc2luZ2xlKFxuICAgICAgICAgICAgfmFyZ19pZD1VRXhwLnJlcF9pZChhcmcpLFxuICAgICAgICAgICAgfmZuX2lkPVVFeHAucmVwX2lkKGZuKSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB8IFR5cEFwKGYsIHR5cCkgPT5cbiAgICAgICAgbGV0IGZfaWQgPSBMaXN0Lm50aChmLmlkcywgMCk7XG4gICAgICAgIGxldCB0eXBfaWQgPSBMaXN0Lm50aCh0eXAuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJhc2ljID0gKGdyb3VwLCBmb3JtYXQsIGNvbG9yaW5nX2lkcykgPT4ge1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1jb2xvcmluZ19pZHMofmZfaWQsIH50eXBfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1Tb21lKGZvcm1hdCksXG4gICAgICAgICAgICBncm91cCxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICBiYXNpYyhcbiAgICAgICAgICBUeXBBcHBFeHAudHlwZnVuYXBzLFxuICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGZfaWQpLFxuICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHlwX2lkKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgVHlwQXBwRXhwLnR5cGZ1bmFwcF9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICApO1xuXG4gICAgICB8IEFwKEZvcndhcmQsIHgsIGFyZykgPT5cbiAgICAgICAgbGV0IHhfaWQgPSBMaXN0Lm50aCh4LmlkcywgMCk7XG4gICAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJhc2ljID0gKGdyb3VwLCBmb3JtYXQsIGNvbG9yaW5nX2lkcykgPT4ge1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1jb2xvcmluZ19pZHMofnhfaWQsIH5hcmdfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1Tb21lKGZvcm1hdCksXG4gICAgICAgICAgICBncm91cCxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICBzd2l0Y2ggKHgudGVybSkge1xuICAgICAgICB8IENvbnN0cnVjdG9yKHYpID0+XG4gICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICBBcHBFeHAuY29uYXBzLFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgIHYsXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHhfaWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgQXBwRXhwLmNvbmFwcF9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgIClcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICBBcHBFeHAuZnVuYXBzLFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoeF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBBcHBFeHAuZnVuYXBwX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgKVxuICAgICAgICB9O1xuICAgICAgfCBEZWZlcnJlZEFwKHgsIGFyZ3MpID0+XG4gICAgICAgIGxldCB4X2lkID0gTGlzdC5udGgoeC5pZHMsIDApO1xuICAgICAgICBsZXQgc3VwcGxpZWRfaWQgPSBJZC5taygpO1xuICAgICAgICBsZXQgZGVmZXJyZWRfaWQgPSB7XG4gICAgICAgICAgbGV0IGRlZmVycmFsID0gTGlzdC5maW5kKEV4cC5pc19kZWZlcnJhbCwgYXJncyk7XG4gICAgICAgICAgTGlzdC5udGgoZGVmZXJyYWwuaWRzLCAwKTtcbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICAgIHwgTWVzc2FnZUNvbnRlbnQoXykgPT5cbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIEFwcEV4cC5kZWZlcnJlZF9mdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyh+eF9pZCwgfmRlZmVycmVkX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh4X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHN1cHBsaWVkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZmVycmVkX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBBcHBFeHAuZGVmZXJyZWRhcHMsXG4gICAgICAgICAgKVxuICAgICAgICB8IENvbG9yaW5ncyA9PlxuICAgICAgICAgIGxldCBjb2xvcl9mbiA9IExpc3QubnRoKENvbG9yU3RlcHMuY2hpbGRfY29sb3JzLCAwKTtcbiAgICAgICAgICBsZXQgY29sb3Jfc3VwcGxpZWQgPSBMaXN0Lm50aChDb2xvclN0ZXBzLmNoaWxkX2NvbG9ycywgMSk7XG4gICAgICAgICAgbGV0IGNvbG9yX2RlZmVycmVkID0gTGlzdC5udGgoQ29sb3JTdGVwcy5jaGlsZF9jb2xvcnMsIDIpO1xuICAgICAgICAgIGxldCBhZGQgPSAobWFwcGluZywgYXJnOiBFeHAudCkgPT4ge1xuICAgICAgICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgICAgICAgSGF6M2xjb3JlLklkLk1hcC5hZGQoXG4gICAgICAgICAgICAgIGFyZ19pZCxcbiAgICAgICAgICAgICAgRXhwLmlzX2RlZmVycmFsKGFyZykgPyBjb2xvcl9kZWZlcnJlZCA6IGNvbG9yX3N1cHBsaWVkLFxuICAgICAgICAgICAgICBtYXBwaW5nLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIGxldCBtYXBwaW5nID0gSGF6M2xjb3JlLklkLk1hcC5zaW5nbGV0b24oeF9pZCwgY29sb3JfZm4pO1xuICAgICAgICAgIGxldCBtYXBwaW5nID0gTGlzdC5mb2xkX2xlZnQoYWRkLCBtYXBwaW5nLCBhcmdzKTtcbiAgICAgICAgICBsZXQgY29sb3JfbWFwID0gKG1hcHBpbmcsIExpc3QubGVuZ3RoKGFyZ3MpICsgMSk7XG4gICAgICAgICAgKFtdLCAoW10sIGNvbG9yX21hcCksIFtdKTtcbiAgICAgICAgfTtcbiAgICAgIHwgSWYoY29uZCwgdGhlbl8sIGVsc2VfKSA9PlxuICAgICAgICBsZXQgY29uZF9pZCA9IExpc3QubnRoKGNvbmQuaWRzLCAwKTtcbiAgICAgICAgbGV0IHRoZW5faWQgPSBMaXN0Lm50aCh0aGVuXy5pZHMsIDApO1xuICAgICAgICBsZXQgZWxzZV9pZCA9IExpc3QubnRoKGVsc2VfLmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9SWZFeHAuaWZfZXhwX2NvbG9yaW5nX2lkcyh+Y29uZF9pZCwgfnRoZW5faWQsIH5lbHNlX2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25kX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0aGVuX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbHNlX2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBJZkV4cC5pZnMsXG4gICAgICAgICk7XG4gICAgICB8IFNlcShsZWZ0LCByaWdodCkgPT5cbiAgICAgICAgbGV0IGV4cDFfaWQgPSBMaXN0Lm50aChsZWZ0LmlkcywgMCk7XG4gICAgICAgIGxldCBleHAyX2lkID0gTGlzdC5udGgocmlnaHQuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1TZXFFeHAuc2VxX2V4cF9jb2xvcmluZ19pZHMofmV4cDFfaWQsIH5leHAyX2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMV9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMl9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgU2VxRXhwLnNlcXMsXG4gICAgICAgICk7XG4gICAgICB8IEZpbHRlcihGaWx0ZXIoe2FjdDogKFN0ZXAsIE9uZSksIHBhdH0pLCBib2R5KSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBGaWx0ZXJFeHAuZmlsdGVyX3BhdXNlKFxuICAgICAgICAgICAgfnBfaWQ9VUV4cC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVVFeHAucmVwX2lkKGJvZHkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgRmlsdGVyKEZpbHRlcih7YWN0OiAoU3RlcCwgQWxsKSwgcGF0fSksIGJvZHkpID0+XG4gICAgICAgIG1lc3NhZ2Vfc2luZ2xlKFxuICAgICAgICAgIEZpbHRlckV4cC5maWx0ZXJfZGVidWcoXG4gICAgICAgICAgICB+cF9pZD1VRXhwLnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBGaWx0ZXIoRmlsdGVyKHthY3Q6IChFdmFsLCBBbGwpLCBwYXR9KSwgYm9keSkgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgRmlsdGVyRXhwLmZpbHRlcl9ldmFsKFxuICAgICAgICAgICAgfnBfaWQ9VUV4cC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVVFeHAucmVwX2lkKGJvZHkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgRmlsdGVyKEZpbHRlcih7YWN0OiAoRXZhbCwgT25lKSwgcGF0fSksIGJvZHkpID0+XG4gICAgICAgIG1lc3NhZ2Vfc2luZ2xlKFxuICAgICAgICAgIEZpbHRlckV4cC5maWx0ZXJfaGlkZShcbiAgICAgICAgICAgIH5wX2lkPVVFeHAucmVwX2lkKHBhdCksXG4gICAgICAgICAgICB+Ym9keV9pZD1VRXhwLnJlcF9pZChib2R5KSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB8IEZpbHRlcihfKSA9PiBzaW1wbGUoXCJJbnRlcm5hbCBleHByZXNzaW9uXCIpXG4gICAgICB8IFRlc3QoYm9keSkgPT5cbiAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9VGVzdEV4cC50ZXN0X2V4cF9jb2xvcmluZ19pZHMofmJvZHlfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgVGVzdEV4cC50ZXN0cyxcbiAgICAgICAgKTtcbiAgICAgIHwgUGFyZW5zKHRlcm0pID0+IGdldF9tZXNzYWdlX2V4cCh0ZXJtLnRlcm0pIC8vIE5vIFNwZWNpYWwgbWVzc2FnZT9cbiAgICAgIHwgQ29ucyhoZCwgdGwpID0+XG4gICAgICAgIGxldCBoZF9pZCA9IExpc3QubnRoKGhkLmlkcywgMCk7XG4gICAgICAgIGxldCB0bF9pZCA9IExpc3QubnRoKHRsLmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9TGlzdEV4cC5jb25zX2V4cF9jb2xvcmluZ19pZHMofmhkX2lkLCB+dGxfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhoZF9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGxfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIExpc3RFeHAubGlzdGNvbnMsXG4gICAgICAgICk7XG4gICAgICB8IExpc3RDb25jYXQoeHMsIHlzKSA9PlxuICAgICAgICBsZXQgeHNfaWQgPSBMaXN0Lm50aCh4cy5pZHMsIDApO1xuICAgICAgICBsZXQgeXNfaWQgPSBMaXN0Lm50aCh5cy5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUxpc3RFeHAuY29uY2F0X2V4cF9jb2xvcmluZ19pZHMofnhzX2lkLCB+eXNfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh4c19pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoeXNfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIExpc3RFeHAubGlzdGNvbmNhdHMsXG4gICAgICAgICk7XG4gICAgICB8IFVuT3Aob3AsIGV4cCkgPT5cbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICB8IEJvb2woTm90KSA9PlxuICAgICAgICAgIGxldCBleHBfaWQgPSBMaXN0Lm50aChleHAuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9T3BFeHAuYm9vbF91bmFyeV9ub3RfZXhwX2NvbG9yaW5nX2lkcyh+ZXhwX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cF9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgT3BFeHAuYm9vbF91bl9ub3QsXG4gICAgICAgICAgKTtcbiAgICAgICAgfCBJbnQoTWludXMpID0+XG4gICAgICAgICAgbGV0IGV4cF9pZCA9IExpc3QubnRoKGV4cC5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1PcEV4cC5pbnRfdW5hcnlfbWludXNfZXhwX2NvbG9yaW5nX2lkcyh+ZXhwX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cF9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgT3BFeHAuaW50X3VuX21pbnVzLFxuICAgICAgICAgICk7XG4gICAgICAgIHwgTWV0YShVbnF1b3RlKSA9PlxuICAgICAgICAgIG1lc3NhZ2Vfc2luZ2xlKEZpbHRlckV4cC51bnF1b3RlKH5zZWxfaWQ9VUV4cC5yZXBfaWQoZXhwKSkpXG4gICAgICAgIH1cbiAgICAgIHwgQmluT3Aob3AsIGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgICBvcGVuIE9wRXhwO1xuICAgICAgICBsZXQgKGdyb3VwLCBjb2xvcmluZ19pZHMpID1cbiAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgfCBJbnQoUGx1cykgPT4gKGludF9wbHVzLCBpbnRfcGx1c19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KE1pbnVzKSA9PiAoaW50X21pbnVzLCBpbnRfbWludXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChUaW1lcykgPT4gKGludF90aW1lcywgaW50X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoUG93ZXIpID0+IChpbnRfcG93ZXIsIGludF9wb3dlcl9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KERpdmlkZSkgPT4gKGludF9kaXZpZGUsIGludF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChMZXNzVGhhbikgPT4gKGludF9sZXNzX3RoYW4sIGludF9sdF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KExlc3NUaGFuT3JFcXVhbCkgPT4gKFxuICAgICAgICAgICAgICBpbnRfbGVzc190aGFuX2VxdWFsLFxuICAgICAgICAgICAgICBpbnRfbHRlX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnQoR3JlYXRlclRoYW4pID0+IChpbnRfZ3JlYXRlcl90aGFuLCBpbnRfZ3RfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChHcmVhdGVyVGhhbk9yRXF1YWwpID0+IChcbiAgICAgICAgICAgICAgaW50X2dyZWF0ZXJfdGhhbl9lcXVhbCxcbiAgICAgICAgICAgICAgaW50X2d0ZV9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgSW50KEVxdWFscykgPT4gKGludF9lcXVhbCwgaW50X2VxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoTm90RXF1YWxzKSA9PiAoaW50X25vdF9lcXVhbCwgaW50X25lcV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoUGx1cykgPT4gKGZsb2F0X3BsdXMsIGZsb2F0X3BsdXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KE1pbnVzKSA9PiAoZmxvYXRfbWludXMsIGZsb2F0X21pbnVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChUaW1lcykgPT4gKGZsb2F0X3RpbWVzLCBmbG9hdF90aW1lc19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoUG93ZXIpID0+IChmbG9hdF9wb3dlciwgZmxvYXRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KERpdmlkZSkgPT4gKGZsb2F0X2RpdmlkZSwgZmxvYXRfZGl2aWRlX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChMZXNzVGhhbikgPT4gKGZsb2F0X2xlc3NfdGhhbiwgZmxvYXRfbHRfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KExlc3NUaGFuT3JFcXVhbCkgPT4gKFxuICAgICAgICAgICAgICBmbG9hdF9sZXNzX3RoYW5fZXF1YWwsXG4gICAgICAgICAgICAgIGZsb2F0X2x0ZV9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgRmxvYXQoR3JlYXRlclRoYW4pID0+IChcbiAgICAgICAgICAgICAgZmxvYXRfZ3JlYXRlcl90aGFuLFxuICAgICAgICAgICAgICBmbG9hdF9ndF9leHBfY29sb3JpbmdfaWRzLFxuICAgICAgICAgICAgKVxuICAgICAgICAgIHwgRmxvYXQoR3JlYXRlclRoYW5PckVxdWFsKSA9PiAoXG4gICAgICAgICAgICAgIGZsb2F0X2dyZWF0ZXJfdGhhbl9lcXVhbCxcbiAgICAgICAgICAgICAgZmxvYXRfZ3RlX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBGbG9hdChFcXVhbHMpID0+IChmbG9hdF9lcXVhbCwgZmxvYXRfZXFfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KE5vdEVxdWFscykgPT4gKGZsb2F0X25vdF9lcXVhbCwgZmxvYXRfbmVxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBCb29sKEFuZCkgPT4gKGJvb2xfYW5kLCBib29sX2FuZF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgQm9vbChPcikgPT4gKGJvb2xfb3IsIGJvb2xfb3JfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IFN0cmluZyhFcXVhbHMpID0+IChzdHJpbmdfZXF1YWwsIHN0cl9lcV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgU3RyaW5nKENvbmNhdCkgPT4gKHN0cmluZ19jb25jYXQsIHN0cl9jb25jYXRfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB9O1xuICAgICAgICBsZXQgbGVmdF9pZCA9IExpc3QubnRoKGxlZnQuaWRzLCAwKTtcbiAgICAgICAgbGV0IHJpZ2h0X2lkID0gTGlzdC5udGgocmlnaHQuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1jb2xvcmluZ19pZHMofmxlZnRfaWQsIH5yaWdodF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGxlZnRfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHJpZ2h0X2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBncm91cCxcbiAgICAgICAgKTtcbiAgICAgIHwgTWF0Y2goc2NydXQsIF9ydWxlcykgPT5cbiAgICAgICAgbGV0IHNjcnV0X2lkID0gTGlzdC5udGgoc2NydXQuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1DYXNlRXhwLmNhc2VfZXhwX2NvbG9yaW5nX2lkcyh+c2NydXRfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoc2NydXRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIENhc2VFeHAuY2FzZSxcbiAgICAgICAgKTtcbiAgICAgIHwgQ29uc3RydWN0b3IodikgPT5cbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgVGVybWluYWxFeHAuY3RyKHYpLFxuICAgICAgICApXG4gICAgICB9O1xuICAgIGdldF9tZXNzYWdlX2V4cCh0ZXJtLnRlcm0pO1xuICB8IFNvbWUoSW5mb1BhdCh7dGVybSwgX30pKSA9PlxuICAgIHN3aXRjaCAoYnlwYXNzX3BhcmVuc19wYXQodGVybSkudGVybSkge1xuICAgIHwgRW1wdHlIb2xlID0+IGdldF9tZXNzYWdlKEhvbGVQYXQuZW1wdHlfaG9sZSlcbiAgICB8IE11bHRpSG9sZShfKSA9PiBnZXRfbWVzc2FnZShIb2xlUGF0Lm11bHRpX2hvbGUpXG4gICAgfCBXaWxkID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsUGF0LndpbGQpXG4gICAgfCBJbnQoaSkgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlaSVpXCIpLCBpLCBpKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5pbnRsaXQoaSksXG4gICAgICApXG4gICAgfCBGbG9hdChmKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVmJWZcIiksIGYsIGYpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsUGF0LmZsb2F0bGl0KGYpLFxuICAgICAgKVxuICAgIHwgQm9vbChiKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiViJWJcIiksIGIsIGIpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsUGF0LmJvb2xsaXQoYiksXG4gICAgICApXG4gICAgfCBTdHJpbmcocykgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLCBzLCBzKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5zdHJsaXQocyksXG4gICAgICApXG4gICAgfCBUdXBsZShbXSkgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxQYXQudHJpdilcbiAgICB8IExpc3RMaXQoZWxlbWVudHMpID0+XG4gICAgICBpZiAoTGlzdC5sZW5ndGgoZWxlbWVudHMpID09IDApIHtcbiAgICAgICAgZ2V0X21lc3NhZ2UoTGlzdFBhdC5saXN0bmlsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdFBhdC5saXN0bGl0LFxuICAgICAgICApO1xuICAgICAgfVxuICAgIHwgQ29ucyhoZCwgdGwpID0+XG4gICAgICBsZXQgaGRfaWQgPSBMaXN0Lm50aChoZC5pZHMsIDApO1xuICAgICAgbGV0IHRsX2lkID0gTGlzdC5udGgodGwuaWRzLCAwKTtcbiAgICAgIGxldCBiYXNpYyA9IGRvYyA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUxpc3RQYXQuY29uc19iYXNlX3BhdF9jb2xvcmluZ19pZHMofmhkX2lkLCB+dGxfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhoZF9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGxfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGRvYyxcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAodGwudGVybSkge1xuICAgICAgfCBQYXQuQ29ucyhoZDIsIHRsMikgPT5cbiAgICAgICAgaWYgKExpc3RQYXQuY29uczJfcGF0LmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMaXN0UGF0LmNvbnMyKSkge1xuICAgICAgICAgIGxldCBoZDJfaWQgPSBMaXN0Lm50aChoZDIuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgdGwyX2lkID0gTGlzdC5udGgodGwyLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBMaXN0UGF0LmNvbnMyX3BhdF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmZzdF9pZD1oZF9pZCxcbiAgICAgICAgICAgICAgICB+c25kX2lkPWhkMl9pZCxcbiAgICAgICAgICAgICAgICB+dGxfaWQ9dGwyX2lkLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bDJfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIExpc3RQYXQuY29uczIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhMaXN0UGF0LmNvbnMyKTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IGJhc2ljKExpc3RQYXQuY29ucylcbiAgICAgIH07XG4gICAgfCBWYXIodikgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT4gUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSwgdiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQudmFyKHYpLFxuICAgICAgKVxuICAgIHwgVHVwbGUoZWxlbWVudHMpID0+XG4gICAgICBsZXQgYmFzaWMgPSBncm91cCA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludChMaXN0Lmxlbmd0aChlbGVtZW50cykpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGdyb3VwLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoIChMaXN0Lmxlbmd0aChlbGVtZW50cykpIHtcbiAgICAgIHwgMiA9PlxuICAgICAgICBpZiAoVHVwbGVQYXQudHVwbGVfcGF0X3NpemUyLmlkXG4gICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVQYXQudHVwbGUyKSkge1xuICAgICAgICAgIGxldCBlbGVtMV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtMl9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgVHVwbGVQYXQudHVwbGVfcGF0X3NpemUyX2NvbG9yaW5nX2lkcyh+ZWxlbTFfaWQsIH5lbGVtMl9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0xX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW0yX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBUdXBsZVBhdC50dXBsZTIsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhUdXBsZVBhdC50dXBsZTIpO1xuICAgICAgICB9XG4gICAgICB8IDMgPT5cbiAgICAgICAgaWYgKFR1cGxlUGF0LnR1cGxlX3BhdF9zaXplMy5pZFxuICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlUGF0LnR1cGxlMykpIHtcbiAgICAgICAgICBsZXQgZWxlbTFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMikuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIFR1cGxlUGF0LnR1cGxlX3BhdF9zaXplM19jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmVsZW0xX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtMl9pZCxcbiAgICAgICAgICAgICAgICB+ZWxlbTNfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTFfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTJfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTNfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFR1cGxlUGF0LnR1cGxlMyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlUGF0LnR1cGxlMyk7XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiBiYXNpYyhUdXBsZVBhdC50dXBsZSlcbiAgICAgIH07XG4gICAgfCBBcChjb24sIGFyZykgPT5cbiAgICAgIGxldCBjb25faWQgPSBMaXN0Lm50aChjb24uaWRzLCAwKTtcbiAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Y29sb3JpbmdzPUFwcFBhdC5hcF9wYXRfY29sb3JpbmdfaWRzKH5jb25faWQsIH5hcmdfaWQpLFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25faWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIEFwcFBhdC5hcCxcbiAgICAgICk7XG4gICAgfCBDb25zdHJ1Y3Rvcihjb24pID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+IFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksIGNvbiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQuY3RyKGNvbiksXG4gICAgICApXG4gICAgfCBDYXN0KHBhdCwgdHlwLCBfKSA9PlxuICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgbGV0IHR5cF9pZCA9IExpc3QubnRoKHR5cC5pZHMsIDApO1xuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5jb2xvcmluZ3M9VHlwQW5uUGF0LnR5cGFubl9wYXRfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH50eXBfaWQpLFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0eXBfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIFR5cEFublBhdC50eXBhbm4sXG4gICAgICApO1xuICAgIHwgSW52YWxpZChfKSA9PiBzaW1wbGUoXCJOb3QgYSB2YWxpZCBwYXR0ZXJuXCIpXG4gICAgfCBQYXJlbnMoXykgPT5cbiAgICAgIC8vIFNob3VsZG4ndCBiZSBoaXQ/XG4gICAgICBkZWZhdWx0XG4gICAgfVxuICB8IFNvbWUoSW5mb1R5cCh7dGVybSwgX30gYXMgdHlwX2luZm8pKSA9PlxuICAgIHN3aXRjaCAoYnlwYXNzX3BhcmVuc190eXAodGVybSkudGVybSkge1xuICAgIHwgVW5rbm93bihTeW5Td2l0Y2gpXG4gICAgfCBVbmtub3duKEludGVybmFsKVxuICAgIHwgVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpID0+IGdldF9tZXNzYWdlKEhvbGVUeXAuZW1wdHlfaG9sZSlcbiAgICB8IFVua25vd24oSG9sZShNdWx0aUhvbGUoXykpKSA9PiBnZXRfbWVzc2FnZShIb2xlVHlwLm11bHRpX2hvbGUpXG4gICAgfCBJbnQgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxUeXAuaW50KVxuICAgIHwgRmxvYXQgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxUeXAuZmxvYXQpXG4gICAgfCBCb29sID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsVHlwLmJvb2wpXG4gICAgfCBTdHJpbmcgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxUeXAuc3RyKVxuICAgIHwgTGlzdChlbGVtKSA9PlxuICAgICAgbGV0IGVsZW1faWQgPSBMaXN0Lm50aChlbGVtLmlkcywgMCk7XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmNvbG9yaW5ncz1MaXN0VHlwLmxpc3RfdHlwX2NvbG9yaW5nX2lkcyh+ZWxlbV9pZCksXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtX2lkKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBMaXN0VHlwLmxpc3QsXG4gICAgICApO1xuICAgIHwgRm9yYWxsKHRwYXQsIHR5cCkgPT5cbiAgICAgIGxldCB0cGF0X2lkID0gTGlzdC5udGgodHBhdC5pZHMsIDApO1xuICAgICAgbGV0IHRib2R5X2lkID0gTGlzdC5udGgodHlwLmlkcywgMCk7XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmNvbG9yaW5ncz1Gb3JhbGxUeXAuZm9yYWxsX3R5cF9jb2xvcmluZ19pZHMofnRwYXRfaWQsIH50Ym9keV9pZCksXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRwYXRfaWQpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0Ym9keV9pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgRm9yYWxsVHlwLmZvcmFsbCxcbiAgICAgICk7XG4gICAgfCBSZWModHBhdCwgdHlwKSA9PlxuICAgICAgbGV0IHRwYXRfaWQgPSBMaXN0Lm50aCh0cGF0LmlkcywgMCk7XG4gICAgICBsZXQgdGJvZHlfaWQgPSBMaXN0Lm50aCh0eXAuaWRzLCAwKTtcbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Y29sb3JpbmdzPVJlY1R5cC5yZWNfdHlwX2NvbG9yaW5nX2lkcyh+dHBhdF9pZCwgfnRib2R5X2lkKSxcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHBhdF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRib2R5X2lkKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBSZWNUeXAucmVjXyxcbiAgICAgICk7XG4gICAgfCBBcnJvdyhhcmcsIHJlc3VsdCkgPT5cbiAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgIGxldCByZXN1bHRfaWQgPSBMaXN0Lm50aChyZXN1bHQuaWRzLCAwKTtcbiAgICAgIGxldCBiYXNpYyA9IGRvYyA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUFycm93VHlwLmFycm93X3R5cF9jb2xvcmluZ19pZHMofmFyZ19pZCwgfnJlc3VsdF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocmVzdWx0X2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBkb2MsXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKHJlc3VsdC50ZXJtKSB7XG4gICAgICB8IFR5cC5BcnJvdyhhcmcyLCByZXN1bHQyKSA9PlxuICAgICAgICBpZiAoQXJyb3dUeXAuYXJyb3czX3R5cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoQXJyb3dUeXAuYXJyb3czKSkge1xuICAgICAgICAgIGxldCBhcmcyX2lkID0gTGlzdC5udGgoYXJnMi5pZHMsIDApO1xuICAgICAgICAgIGxldCByZXN1bHQyX2lkID0gTGlzdC5udGgocmVzdWx0Mi5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgQXJyb3dUeXAuYXJyb3czX3R5cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmFyZzFfaWQ9YXJnX2lkLFxuICAgICAgICAgICAgICAgIH5hcmcyX2lkLFxuICAgICAgICAgICAgICAgIH5yZXN1bHRfaWQ9cmVzdWx0Ml9pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhyZXN1bHQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBBcnJvd1R5cC5hcnJvdzMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhBcnJvd1R5cC5hcnJvdzMpO1xuICAgICAgICB9XG4gICAgICB8IF8gPT4gYmFzaWMoQXJyb3dUeXAuYXJyb3cpXG4gICAgICB9O1xuICAgIHwgUHJvZChlbGVtZW50cykgPT5cbiAgICAgIGxldCBiYXNpYyA9IGdyb3VwID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZ3JvdXAsXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKExpc3QubGVuZ3RoKGVsZW1lbnRzKSkge1xuICAgICAgfCAwID0+XG4gICAgICAgIGlmIChUdXBsZVR5cC50dXBsZTBfdHlwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZVR5cC50dXBsZTApKSB7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVtdLFxuICAgICAgICAgICAgfmZvcm1hdD1Tb21lKG1zZyA9PiBtc2cpLFxuICAgICAgICAgICAgVHVwbGVUeXAudHVwbGUwLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVUeXAudHVwbGUyKTtcbiAgICAgICAgfVxuICAgICAgfCAyID0+XG4gICAgICAgIGlmIChUdXBsZVR5cC50dXBsZTJfdHlwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZVR5cC50dXBsZTIpKSB7XG4gICAgICAgICAgbGV0IGVsZW0xX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0yX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVR1cGxlVHlwLnR1cGxlMl90eXBfY29sb3JpbmdfaWRzKH5lbGVtMV9pZCwgfmVsZW0yX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTFfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTJfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFR1cGxlVHlwLnR1cGxlMixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlVHlwLnR1cGxlMik7XG4gICAgICAgIH1cbiAgICAgIHwgMyA9PlxuICAgICAgICBpZiAoVHVwbGVUeXAudHVwbGUzX3R5cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVUeXAudHVwbGUzKSkge1xuICAgICAgICAgIGxldCBlbGVtMV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtMl9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtM19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgVHVwbGVUeXAudHVwbGUzX3R5cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgfmVsZW0xX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtMl9pZCxcbiAgICAgICAgICAgICAgICB+ZWxlbTNfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTFfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTJfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTNfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFR1cGxlVHlwLnR1cGxlMyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlVHlwLnR1cGxlMyk7XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiBiYXNpYyhUdXBsZVR5cC50dXBsZSlcbiAgICAgIH07XG4gICAgfCBWYXIoYykgd2hlbiBJbmZvLnR5cF9pc19jb25zdHJ1Y3Rvcl9leHBlY3RlZCh0eXBfaW5mbykgPT5cbiAgICAgIGdldF9tZXNzYWdlKFN1bVR5cC5zdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGVmcyhjKSlcbiAgICB8IFZhcih2KSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFR5cC52YXIodiksXG4gICAgICApXG4gICAgfCBTdW0oXykgPT4gZ2V0X21lc3NhZ2UoU3VtVHlwLmxhYmVsbGVkX3N1bV90eXBzKVxuICAgIHwgQXAoe3Rlcm06IFZhcihjKSwgX30sIF8pID0+XG4gICAgICBnZXRfbWVzc2FnZShTdW1UeXAuc3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWZzKGMpKVxuICAgIHwgVW5rbm93bihIb2xlKEludmFsaWQoXykpKSA9PiBzaW1wbGUoXCJOb3QgYSB0eXBlIG9yIHR5cGUgb3BlcmF0b3JcIilcbiAgICB8IEFwKF8pXG4gICAgfCBQYXJlbnMoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgYmUgaGl0P1xuICAgIH1cbiAgfCBTb21lKEluZm9UUGF0KGluZm8pKSA9PlxuICAgIHN3aXRjaCAoaW5mby50ZXJtLnRlcm0pIHtcbiAgICB8IEludmFsaWQoXykgPT4gc2ltcGxlKFwiVHlwZSBuYW1lcyBtdXN0IGJlZ2luIHdpdGggYSBjYXBpdGFsIGxldHRlclwiKVxuICAgIHwgRW1wdHlIb2xlID0+IGdldF9tZXNzYWdlKEhvbGVUUGF0LmVtcHR5X2hvbGVfdHBhdHMpXG4gICAgfCBNdWx0aUhvbGUoXykgPT4gZ2V0X21lc3NhZ2UoSG9sZVRQYXQubXVsdGlfaG9sZV90cGF0cylcbiAgICB8IFZhcih2KSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICApLFxuICAgICAgICBWYXJUUGF0LnZhcl90eXBfcGF0cyh2KSxcbiAgICAgIClcbiAgICB9XG4gIHwgU29tZShTZWNvbmRhcnkocykpID0+XG4gICAgc3dpdGNoIChzLmNscykge1xuICAgIHwgU2Vjb25kYXJ5KFdoaXRlc3BhY2UpID0+IHNpbXBsZShcIkEgc2VtYW50aWMgdm9pZCwgcGVydmFkaW5nIGJ1dCBpbmVydFwiKVxuICAgIHwgU2Vjb25kYXJ5KENvbW1lbnQpID0+XG4gICAgICBzaW1wbGUoXCJDb21tZW50cyBhcmUgaWdub3JlZCBieSBzeXN0ZW1zIGJ1dCB0cmVhc3VyZWQgYnkgcmVhZGVyc1wiKVxuICAgIHwgXyA9PiBmYWlsd2l0aChcIkV4cGxhaW5UaGlzOiBTZWNvbmRhcnkgSW1wb3NzaWJsZVwiKVxuICAgIH1cbiAgfCBOb25lID0+IGRlZmF1bHRcbiAgfTtcbn07XG5cbmxldCBzZWN0aW9uID0gKH5zZWN0aW9uX2Nsc3M6IHN0cmluZywgfnRpdGxlOiBzdHJpbmcsIGNvbnRlbnRzOiBsaXN0KE5vZGUudCkpID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInNlY3Rpb25cIiwgc2VjdGlvbl9jbHNzXSksXG4gICAgW2Rpdih+YXR0cj1jbHNzKFtcInNlY3Rpb24tdGl0bGVcIl0pLCBbdGV4dCh0aXRsZSldKV0gQCBjb250ZW50cyxcbiAgKTtcblxubGV0IGdldF9jb2xvcl9tYXAgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIH5leHBsYWluVGhpc01vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsIGluZm8pID0+XG4gIHN3aXRjaCAoc2V0dGluZ3MuZXhwbGFpblRoaXMuaGlnaGxpZ2h0KSB7XG4gIHwgQWxsIHdoZW4gc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyA9PlxuICAgIGxldCAoXywgKF8sIChjb2xvcl9tYXAsIF8pKSwgXykgPVxuICAgICAgZ2V0X2RvYyh+ZG9jcz1leHBsYWluVGhpc01vZGVsLCBpbmZvLCBDb2xvcmluZ3MpO1xuICAgIFNvbWUoY29sb3JfbWFwKTtcbiAgfCBPbmUoaWQpIHdoZW4gc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyA9PlxuICAgIGxldCAoXywgKF8sIChjb2xvcl9tYXAsIF8pKSwgXykgPVxuICAgICAgZ2V0X2RvYyh+ZG9jcz1leHBsYWluVGhpc01vZGVsLCBpbmZvLCBDb2xvcmluZ3MpO1xuICAgIFNvbWUoSWQuTWFwLmZpbHRlcigoaWQnLCBfKSA9PiBpZCA9PSBpZCcsIGNvbG9yX21hcCkpO1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmdsb2JhbHM6IEdsb2JhbHMudCxcbiAgICAgIH5pbmplY3QsXG4gICAgICB+ZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LFxuICAgICAgaW5mbzogb3B0aW9uKEluZm8udCksXG4gICAgKSA9PiB7XG4gIGxldCAoc3luX2Zvcm0sIChleHBsYW5hdGlvbiwgXyksIGV4YW1wbGUpID1cbiAgICBnZXRfZG9jKH5kb2NzPWV4cGxhaW5UaGlzTW9kZWwsIGluZm8sIE1lc3NhZ2VDb250ZW50KGluamVjdCwgZ2xvYmFscykpO1xuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5pZChcInNpZGUtYmFyXCIpLFxuICAgIFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9Y2xzcyhbXCJleHBsYWluLXRoaXNcIl0pLFxuICAgICAgICBbXG4gICAgICAgICAgZGl2KFxuICAgICAgICAgICAgfmF0dHI9Y2xzcyhbXCJ0b3AtYmFyXCJdKSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgV2lkZ2V0cy50b2dnbGUoXG4gICAgICAgICAgICAgICAgfnRvb2x0aXA9XCJUb2dnbGUgaGlnaGxpZ2h0aW5nXCIsXG4gICAgICAgICAgICAgICAgXCLwn5SGXCIsXG4gICAgICAgICAgICAgICAgZ2xvYmFscy5zZXR0aW5ncy5leHBsYWluVGhpcy5oaWdobGlnaHQgPT0gQWxsLFxuICAgICAgICAgICAgICAgIF8gPT5cbiAgICAgICAgICAgICAgICBnbG9iYWxzLmluamVjdF9nbG9iYWwoXG4gICAgICAgICAgICAgICAgICBTZXQoRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KFRvZ2dsZSkpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGRpdihcbiAgICAgICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICAgICAgICAgIGNsc3MoW1wiY2xvc2VcIl0pLFxuICAgICAgICAgICAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT5cbiAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzLmluamVjdF9nbG9iYWwoU2V0KEV4cGxhaW5UaGlzKFRvZ2dsZVNob3cpKSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgICAgIFt0ZXh0KFwieFwiKV0sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgQCBbXG4gICAgICAgICAgc2VjdGlvbihcbiAgICAgICAgICAgIH5zZWN0aW9uX2Nsc3M9XCJzeW50YWN0aWMtZm9ybVwiLFxuICAgICAgICAgICAgfnRpdGxlPVxuICAgICAgICAgICAgICBzd2l0Y2ggKGluZm8pIHtcbiAgICAgICAgICAgICAgfCBOb25lID0+IFwiV2hpdGVzcGFjZSBvciBDb21tZW50XCJcbiAgICAgICAgICAgICAgfCBTb21lKGluZm8pID0+IEluZm8uY2xzX29mKGluZm8pIHw+IENscy5zaG93XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzeW5fZm9ybSBAIGV4cGxhbmF0aW9uLFxuICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgQCAoXG4gICAgICAgICAgZXhhbXBsZSA9PSBbXVxuICAgICAgICAgICAgPyBbXVxuICAgICAgICAgICAgOiBbc2VjdGlvbih+c2VjdGlvbl9jbHNzPVwiZXhhbXBsZXNcIiwgfnRpdGxlPVwiRXhhbXBsZXNcIiwgZXhhbXBsZSldXG4gICAgICAgICksXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5sZXQgdmlldyA9IGlkID0+IE5vZGUuc3Bhbih+YXR0cj1BdHRyLmlkKGlkKSwgW05vZGUudGV4dChcIlhcIildKTtcbiIsImxldCBpc19tYWMgPSByZWYoZmFsc2UpO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBkaXIgPVxuICB8IEtleVVwXG4gIHwgS2V5RG93bjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBrZXkgPVxuICB8IEQoc3RyaW5nKVxuICB8IFUoc3RyaW5nKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSBzeXMgPVxuICB8IE1hY1xuICB8IFBDO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIGhlbGQgPVxuICB8IERvd25cbiAgfCBVcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBrZXksXG4gIHN5cyxcbiAgc2hpZnQ6IGhlbGQsXG4gIG1ldGE6IGhlbGQsXG4gIGN0cmw6IGhlbGQsXG4gIGFsdDogaGVsZCxcbn07XG5cbmxldCBrZXlfb2YgPSAoZGlyOiBkaXIsIGV2dCk6IGtleSA9PiB7XG4gIGxldCBrZXkgPSBKc1V0aWwuZ2V0X2tleShldnQpO1xuICBzd2l0Y2ggKGRpcikge1xuICB8IEtleVVwID0+IFUoa2V5KVxuICB8IEtleURvd24gPT4gRChrZXkpXG4gIH07XG59O1xuXG5sZXQgdG9faGVsZDogYm9vbCA9PiBoZWxkID0gYiA9PiBiID8gRG93biA6IFVwO1xuXG5sZXQgbWsgPSAoZGlyLCBldnQpOiB0ID0+IHtcbiAga2V5OiBrZXlfb2YoZGlyLCBldnQpLFxuICBzeXM6IE9zLmlzX21hY14gPyBNYWMgOiBQQyxcbiAgc2hpZnQ6IHRvX2hlbGQoSnNVdGlsLnNoaWZ0X2hlbGQoZXZ0KSksXG4gIG1ldGE6IHRvX2hlbGQoSnNVdGlsLm1ldGFfaGVsZChldnQpKSxcbiAgY3RybDogdG9faGVsZChKc1V0aWwuY3RybF9oZWxkKGV2dCkpLFxuICBhbHQ6IHRvX2hlbGQoSnNVdGlsLmFsdF9oZWxkKGV2dCkpLFxufTtcblxubGV0IG1vZGlmaWVyX3N0cmluZyA9IChoOiBoZWxkLCBtKTogc3RyaW5nID0+IGggPT0gRG93biA/IFwiICsgXCIgKysgbSA6IFwiXCI7XG5cbmxldCBtb2RpZmllcnNfc3RyaW5nID0gKGtleTogdCk6IHN0cmluZyA9PlxuICBtb2RpZmllcl9zdHJpbmcoa2V5LnNoaWZ0LCBcIlNISUZUXCIpXG4gICsrIG1vZGlmaWVyX3N0cmluZyhrZXkubWV0YSwgXCJNRVRBXCIpXG4gICsrIG1vZGlmaWVyX3N0cmluZyhrZXkuY3RybCwgXCJDVFJMXCIpXG4gICsrIG1vZGlmaWVyX3N0cmluZyhrZXkuYWx0LCBcIkFMVFwiKTtcblxubGV0IGtleV9kaXJfc3RyaW5nID0gKGtleTogdCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKGtleS5rZXkpIHtcbiAgfCBVKGtleSkgPT4gXCIoVVApOiBcIiArKyBrZXlcbiAgfCBEKGtleSkgPT4gXCIoRE4pOiBcIiArKyBrZXlcbiAgfTtcblxubGV0IHRvX3N0cmluZyA9IChrZXk6IHQpOiBzdHJpbmcgPT5cbiAgXCJLRVlcIiArKyBrZXlfZGlyX3N0cmluZyhrZXkpICsrIG1vZGlmaWVyc19zdHJpbmcoa2V5KTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgaXNfZGlnaXQgPSBzID0+IFJlLlN0ci4oc3RyaW5nX21hdGNoKHJlZ2V4cChcIl5bMC05XSRcIiksIHMsIDApKTtcbmxldCBpc19mX2tleSA9IHMgPT4gUmUuU3RyLihzdHJpbmdfbWF0Y2gocmVnZXhwKFwiXkZbMC05XVswLTldKiRcIiksIHMsIDApKTtcblxubGV0IGhhbmRsZV9rZXlfZXZlbnQgPSAoazogS2V5LnQpOiBvcHRpb24oVXBkYXRlLnQpID0+IHtcbiAgbGV0IG5vdyA9IChhOiBBY3Rpb24udCk6IG9wdGlvbihVcGRhdGVBY3Rpb24udCkgPT5cbiAgICBTb21lKFBlcmZvcm1BY3Rpb24oYSkpO1xuICBzd2l0Y2ggKGspIHtcbiAgfCB7a2V5OiBVKGtleSksIF99ID0+XG4gICAgLyogS2V1LVVQcEV2ZW50czpcbiAgICAgICBOT1RFOiBSZW1lbWJlciB0aGF0IHNpbmNlIHRoZXJlIGlzIGEga2V5dXAgZm9yIGV2ZXJ5XG4gICAgICAga2V5ZG93biwgbWFraW5nIGFuIHVwZGF0ZSBoZXJlIG1heSB0cmlnZ2VyIGFuIGVudGlyZVxuICAgICAgIGV4dHJhIHJlZHJhdywgY29udGluZ2VudCBvbiBtb2RlbC5jdXRvZmYgKi9cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJBbHRcIiA9PiBTb21lKEdsb2JhbHMoU2V0U2hvd0JhY2twYWNrVGFyZ2V0cyhmYWxzZSkpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBfLCBzaGlmdDogRG93biwgbWV0YTogVXAsIGN0cmw6IFVwLCBhbHQ6IFVwfVxuICAgICAgd2hlbiBpc19mX2tleShrZXkpID0+XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICB8IFwiRjdcIiA9PiBTb21lKEJlbmNobWFyayhTdGFydCkpXG4gICAgfCBfID0+IFNvbWUoRGVidWdDb25zb2xlKGtleSkpXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBfLCBzaGlmdCwgbWV0YTogVXAsIGN0cmw6IFVwLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoc2hpZnQsIGtleSkge1xuICAgIHwgKFVwLCBcIkFycm93TGVmdFwiKSA9PiBub3coTW92ZShMb2NhbChMZWZ0KEJ5Q2hhcikpKSlcbiAgICB8IChVcCwgXCJBcnJvd1JpZ2h0XCIpID0+IG5vdyhNb3ZlKExvY2FsKFJpZ2h0KEJ5Q2hhcikpKSlcbiAgICB8IChVcCwgXCJBcnJvd1VwXCIpID0+IG5vdyhNb3ZlKExvY2FsKFVwKSkpXG4gICAgfCAoVXAsIFwiQXJyb3dEb3duXCIpID0+IG5vdyhNb3ZlKExvY2FsKERvd24pKSlcbiAgICB8IChVcCwgXCJIb21lXCIpID0+IG5vdyhNb3ZlKEV4dHJlbWUoTGVmdChCeVRva2VuKSkpKVxuICAgIHwgKFVwLCBcIkVuZFwiKSA9PiBub3coTW92ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpXG4gICAgfCAoVXAsIFwiQmFja3NwYWNlXCIpID0+IG5vdyhEZXN0cnVjdChMZWZ0KSlcbiAgICB8IChVcCwgXCJEZWxldGVcIikgPT4gbm93KERlc3RydWN0KFJpZ2h0KSlcbiAgICB8IChVcCwgXCJFc2NhcGVcIikgPT4gbm93KFVuc2VsZWN0KE5vbmUpKVxuICAgIHwgKFVwLCBcIlRhYlwiKSA9PiBTb21lKFRBQilcbiAgICB8IChVcCwgXCJGMTJcIikgPT4gbm93KEp1bXAoQmluZGluZ1NpdGVPZkluZGljYXRlZFZhcikpXG4gICAgfCAoRG93biwgXCJUYWJcIikgPT4gU29tZShNb3ZlVG9OZXh0SG9sZShMZWZ0KSlcbiAgICB8IChEb3duLCBcIkFycm93TGVmdFwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgKERvd24sIFwiQXJyb3dSaWdodFwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChSaWdodChCeVRva2VuKSkpKSlcbiAgICB8IChEb3duLCBcIkFycm93VXBcIikgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoVXApKSkpXG4gICAgfCAoRG93biwgXCJBcnJvd0Rvd25cIikgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoRG93bikpKSlcbiAgICB8IChEb3duLCBcIkhvbWVcIikgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgKERvd24sIFwiRW5kXCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSkpXG4gICAgfCAoXywgXCJFbnRlclwiKSA9PiBub3coSW5zZXJ0KEZvcm0ubGluZWJyZWFrKSlcbiAgICB8IF8gd2hlbiBTdHJpbmcubGVuZ3RoKGtleSkgPT0gMSA9PlxuICAgICAgLyogTm90ZTogbGVuZ3RoPT0xIHByZXZlbnQgc3BlY2lhbHMgbGlrZVxuICAgICAgICogU0hJRlQgZnJvbSBiZWluZyBjYXB0dXJlZCBoZXJlICovXG4gICAgICBub3coSW5zZXJ0KGtleSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IE1hYywgc2hpZnQ6IERvd24sIG1ldGE6IERvd24sIGN0cmw6IFVwLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcIlpcIlxuICAgIHwgXCJ6XCIgPT4gU29tZShSZWRvKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSkpXG4gICAgfCBcIkFycm93UmlnaHRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKFJpZ2h0KEJ5VG9rZW4pKSkpKVxuICAgIHwgXCJBcnJvd1VwXCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShVcCkpKSlcbiAgICB8IFwiQXJyb3dEb3duXCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShEb3duKSkpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBQQywgc2hpZnQ6IERvd24sIG1ldGE6IFVwLCBjdHJsOiBEb3duLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcIlpcIlxuICAgIHwgXCJ6XCIgPT4gU29tZShSZWRvKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChMZWZ0KEJ5VG9rZW4pKSkpKVxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoUmlnaHQoQnlUb2tlbikpKSkpXG4gICAgfCBcIkFycm93VXBcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChVcCkpKSlcbiAgICB8IFwiQXJyb3dEb3duXCIgPT4gbm93KFNlbGVjdChSZXNpemUoTG9jYWwoRG93bikpKSlcbiAgICB8IFwiSG9tZVwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoVXApKSkpXG4gICAgfCBcIkVuZFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoRG93bikpKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogTWFjLCBzaGlmdDogVXAsIG1ldGE6IERvd24sIGN0cmw6IFVwLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcInpcIiA9PiBTb21lKFVuZG8pXG4gICAgfCBcImRcIiA9PiBub3coU2VsZWN0KFRlcm0oQ3VycmVudCkpKVxuICAgIHwgXCJwXCIgPT4gU29tZShQZXJmb3JtQWN0aW9uKFBpY2tfdXApKVxuICAgIHwgXCJhXCIgPT4gbm93KFNlbGVjdChBbGwpKVxuICAgIHwgXCJrXCIgPT4gU29tZShSZXBhcnNlQ3VycmVudEVkaXRvcilcbiAgICB8IFwiL1wiID0+IFNvbWUoQXNzaXN0YW50KFByb21wdChUeURpKSkpXG4gICAgfCBfIHdoZW4gaXNfZGlnaXQoa2V5KSA9PiBTb21lKFN3aXRjaFNjcmF0Y2hTbGlkZShpbnRfb2Zfc3RyaW5nKGtleSkpKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coTW92ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSlcbiAgICB8IFwiQXJyb3dSaWdodFwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSlcbiAgICB8IFwiQXJyb3dVcFwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoVXApKSlcbiAgICB8IFwiQXJyb3dEb3duXCIgPT4gbm93KE1vdmUoRXh0cmVtZShEb3duKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IFBDLCBzaGlmdDogVXAsIG1ldGE6IFVwLCBjdHJsOiBEb3duLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcInpcIiA9PiBTb21lKFVuZG8pXG4gICAgfCBcImRcIiA9PiBub3coU2VsZWN0KFRlcm0oQ3VycmVudCkpKVxuICAgIHwgXCJwXCIgPT4gU29tZShQZXJmb3JtQWN0aW9uKFBpY2tfdXApKVxuICAgIHwgXCJhXCIgPT4gbm93KFNlbGVjdChBbGwpKVxuICAgIHwgXCJrXCIgPT4gU29tZShSZXBhcnNlQ3VycmVudEVkaXRvcilcbiAgICB8IFwiL1wiID0+IFNvbWUoQXNzaXN0YW50KFByb21wdChUeURpKSkpXG4gICAgfCBfIHdoZW4gaXNfZGlnaXQoa2V5KSA9PiBTb21lKFN3aXRjaFNjcmF0Y2hTbGlkZShpbnRfb2Zfc3RyaW5nKGtleSkpKVxuICAgIHwgXCJBcnJvd0xlZnRcIiA9PiBub3coTW92ZShMb2NhbChMZWZ0KEJ5VG9rZW4pKSkpXG4gICAgfCBcIkFycm93UmlnaHRcIiA9PiBub3coTW92ZShMb2NhbChSaWdodChCeVRva2VuKSkpKVxuICAgIHwgXCJIb21lXCIgPT4gbm93KE1vdmUoRXh0cmVtZShVcCkpKVxuICAgIHwgXCJFbmRcIiA9PiBub3coTW92ZShFeHRyZW1lKERvd24pKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogTWFjLCBzaGlmdDogVXAsIG1ldGE6IFVwLCBjdHJsOiBEb3duLCBhbHQ6IFVwfSA9PlxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcImFcIiA9PiBub3coTW92ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSlcbiAgICB8IFwiZVwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5cywgc2hpZnQ6IFVwLCBtZXRhOiBVcCwgY3RybDogVXAsIGFsdDogRG93bn0gPT5cbiAgICBzd2l0Y2ggKHN5cywga2V5KSB7XG4gICAgfCAoXywgXCJBcnJvd0xlZnRcIikgPT4gbm93KE1vdmVUb0JhY2twYWNrVGFyZ2V0KExlZnQoQnlUb2tlbikpKVxuICAgIHwgKF8sIFwiQXJyb3dSaWdodFwiKSA9PiBub3coTW92ZVRvQmFja3BhY2tUYXJnZXQoUmlnaHQoQnlUb2tlbikpKVxuICAgIHwgKF8sIFwiQWx0XCIpID0+IFNvbWUoR2xvYmFscyhTZXRTaG93QmFja3BhY2tUYXJnZXRzKHRydWUpKSlcbiAgICB8IChfLCBcIkFycm93VXBcIikgPT4gbm93KE1vdmVUb0JhY2twYWNrVGFyZ2V0KFVwKSlcbiAgICB8IChfLCBcIkFycm93RG93blwiKSA9PiBub3coTW92ZVRvQmFja3BhY2tUYXJnZXQoRG93bikpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbC5XZWI7XG5vcGVuIFdpZGdldHM7XG5cbmxldCBleHBvcnRfcGVyc2lzdGVudF9kYXRhID0gKH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhKSA9PlxuICBidXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3Byb3V0LFxuICAgIF8gPT4gaW5qZWN0KEV4cG9ydFBlcnNpc3RlbnREYXRhKSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBBbGwgUGVyc2lzdGVudCBEYXRhXCIsXG4gICk7XG5cbmxldCByZXNldF9oYXplbCA9XG4gIGJ1dHRvbihcbiAgICBJY29ucy5ib21iLFxuICAgIF8gPT4ge1xuICAgICAgbGV0IGNvbmZpcm1lZCA9XG4gICAgICAgIEpzVXRpbC5jb25maXJtKFxuICAgICAgICAgIFwiQXJlIHlvdSBTVVJFIHlvdSB3YW50IHRvIHJlc2V0IEhhemVsIHRvIGl0cyBpbml0aWFsIHN0YXRlPyBZb3Ugd2lsbCBsb3NlIGFueSBleGlzdGluZyBjb2RlIHRoYXQgeW91IGhhdmUgd3JpdHRlbiwgYW5kIGNvdXJzZSBzdGFmZiBoYXZlIG5vIHdheSB0byByZXN0b3JlIGl0IVwiLFxuICAgICAgICApO1xuICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICBKc1V0aWwuY2xlYXJfbG9jYWxzdG9yZSgpO1xuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhdGlvbiMjcmVsb2FkO1xuICAgICAgfTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiQ2xlYXIgTG9jYWwgU3RvcmFnZSBhbmQgUmVsb2FkIChMT1NFIEFMTCBEQVRBKVwiLFxuICApO1xuXG5sZXQgcmVwYXJzZSA9ICh+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSkgPT5cbiAgYnV0dG9uKFxuICAgIEljb25zLmJhY2twYWNrLFxuICAgIF8gPT4gaW5qZWN0KFJlcGFyc2VDdXJyZW50RWRpdG9yKSxcbiAgICB+dG9vbHRpcD1cIlJlcGFyc2UgQ3VycmVudCBFZGl0b3JcIixcbiAgKTtcblxubGV0IHNldHRpbmdzX21lbnUgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+c2V0dGluZ3MgYXNcbiAgICAgICAge1xuICAgICAgICAgIGNvcmU6IHtldmFsdWF0aW9uLCBffSBhcyBjb3JlLFxuICAgICAgICAgIGJlbmNobWFyayxcbiAgICAgICAgICBzZWNvbmRhcnlfaWNvbnMsXG4gICAgICAgICAgZXhwbGFpblRoaXMsXG4gICAgICAgICAgXyxcbiAgICAgICAgfTogU2V0dGluZ3MudCxcbiAgICApID0+IHtcbiAgbGV0IHRvZ2dsZSA9IChpY29uLCB0b29sdGlwLCBib29sLCBzZXR0aW5nKSA9PlxuICAgIHRvZ2dsZV9uYW1lZChpY29uLCB+dG9vbHRpcCwgYm9vbCwgXyA9PlxuICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5HbG9iYWxzKFNldChzZXR0aW5nKSkpXG4gICAgKTtcbiAgW1xuICAgIHRvZ2dsZShcIs+EXCIsIFwiVG9nZ2xlIFN0YXRpY3NcIiwgY29yZS5zdGF0aWNzLCBTdGF0aWNzKSxcbiAgICB0b2dnbGUoXCLih7JcIiwgXCJUb2dnbGUgQ29tcGxldGlvblwiLCBjb3JlLmFzc2lzdCwgQXNzaXN0KSxcbiAgICB0b2dnbGUoXCLihrVcIiwgXCJTaG93IFdoaXRlc3BhY2VcIiwgc2Vjb25kYXJ5X2ljb25zLCBTZWNvbmRhcnlJY29ucyksXG4gICAgdG9nZ2xlKFwi4pyTXCIsIFwiUHJpbnQgQmVuY2htYXJrc1wiLCBiZW5jaG1hcmssIEJlbmNobWFyayksXG4gICAgdG9nZ2xlKFwi8J2bv1wiLCBcIlRvZ2dsZSBEeW5hbWljc1wiLCBjb3JlLmR5bmFtaWNzLCBEeW5hbWljcyksXG4gICAgdG9nZ2xlKFwi8J2RklwiLCBcIlNob3cgRWxhYm9yYXRpb25cIiwgY29yZS5lbGFib3JhdGUsIEVsYWJvcmF0ZSksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLOu1wiLFxuICAgICAgXCJTaG93IEZ1bmN0aW9uIEJvZGllc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2ZuX2JvZGllcyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0ZuQm9kaWVzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwifFwiLFxuICAgICAgXCJTaG93IENhc2UgQ2xhdXNlc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2Nhc2VfY2xhdXNlcyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc2VDbGF1c2VzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwiZlwiLFxuICAgICAgXCJTaG93IGZpeHBvaW50c1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2ZpeHBvaW50cyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0ZpeHBvaW50cyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBVbmljb2RlLmNhc3RBcnJvd1N5bSxcbiAgICAgIFwiU2hvdyBjYXN0c1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X2Nhc3RzLFxuICAgICAgRXZhbHVhdGlvbihTaG93Q2FzdHMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLwn5SNXCIsXG4gICAgICBcIlNob3cgTG9va3VwIFN0ZXBzXCIsXG4gICAgICBldmFsdWF0aW9uLnNob3dfbG9va3VwX3N0ZXBzLFxuICAgICAgRXZhbHVhdGlvbihTaG93TG9va3VwcyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcIuKPr++4j1wiLFxuICAgICAgXCJTaG93IFN0ZXBwZXIgRmlsdGVyc1wiLFxuICAgICAgZXZhbHVhdGlvbi5zaG93X3N0ZXBwZXJfZmlsdGVycyxcbiAgICAgIEV2YWx1YXRpb24oU2hvd0ZpbHRlcnMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCLwn6SrXCIsXG4gICAgICBcIlNob3cgSGlkZGVuIFN0ZXBzXCIsXG4gICAgICBldmFsdWF0aW9uLnNob3dfaGlkZGVuX3N0ZXBzLFxuICAgICAgRXZhbHVhdGlvbihTaG93SGlkZGVuU3RlcHMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCI/XCIsXG4gICAgICBcIlNob3cgRG9jcyBTaWRlYmFyXCIsXG4gICAgICBleHBsYWluVGhpcy5zaG93LFxuICAgICAgRXhwbGFpblRoaXMoVG9nZ2xlU2hvdyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcIvCfkY1cIixcbiAgICAgIFwiU2hvdyBEb2NzIEZlZWRiYWNrXCIsXG4gICAgICBleHBsYWluVGhpcy5zaG93X2ZlZWRiYWNrLFxuICAgICAgRXhwbGFpblRoaXMoVG9nZ2xlU2hvd0ZlZWRiYWNrKSxcbiAgICApLFxuICBdO1xufTtcblxubGV0IGV4cG9ydF9tZW51ID0gKH5pbmplY3QsIH5zZXR0aW5nczogU2V0dGluZ3MudCwgZWRpdG9yczogRWRpdG9ycy50KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKHNsaWRlX2lkeCwgc2xpZGVzKSA9PlxuICAgIGxldCBzdGF0ZSA9IExpc3QubnRoKHNsaWRlcywgc2xpZGVfaWR4KTtcbiAgICBbU2NyYXRjaE1vZGUuZXhwb3J0X2J1dHRvbihzdGF0ZSldO1xuICB8IERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSA9PlxuICAgIGxldCBzdGF0ZSA9IExpc3QuYXNzb2MobmFtZSwgc2xpZGVzKTtcbiAgICBbU2NyYXRjaE1vZGUuZXhwb3J0X2J1dHRvbihzdGF0ZSldO1xuICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgd2hlbiBzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgPT4gW1xuICAgICAgZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSh+aW5qZWN0KSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5leHBvcnRfc3VibWlzc2lvbih+c2V0dGluZ3MpLFxuICAgICAgRXhlcmNpc2VNb2RlLmluc3RydWN0b3JfZXhwb3J0KGV4ZXJjaXNlKSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5pbnN0cnVjdG9yX3RyYW5zaXRpb25hcnlfZXhwb3J0KGV4ZXJjaXNlKSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5pbnN0cnVjdG9yX2dyYWRpbmdfZXhwb3J0KGV4ZXJjaXNlKSxcbiAgICBdXG4gIHwgRXhlcmNpc2VzKF8pID0+IFtFeGVyY2lzZU1vZGUuZXhwb3J0X3N1Ym1pc3Npb24ofnNldHRpbmdzKV1cbiAgfTtcblxubGV0IGltcG9ydF9tZW51ID0gKH5pbmplY3QsIGVkaXRvcnM6IEVkaXRvcnMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChfKVxuICB8IERvY3VtZW50YXRpb24oXykgPT4gW1xuICAgICAgU2NyYXRjaE1vZGUuaW1wb3J0X2J1dHRvbihpbmplY3QpLFxuICAgICAgU2NyYXRjaE1vZGUucmVzZXRfYnV0dG9uKGluamVjdCksXG4gICAgXVxuICB8IEV4ZXJjaXNlcyhfKSA9PiBbXG4gICAgICBFeGVyY2lzZU1vZGUuaW1wb3J0X3N1Ym1pc3Npb24ofmluamVjdCksXG4gICAgICBFeGVyY2lzZU1vZGUucmVzZXRfYnV0dG9uKGluamVjdCksXG4gICAgXVxuICB9O1xuXG5sZXQgc3VibWVudSA9ICh+dG9vbHRpcCwgfmljb24sIG1lbnUpID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInRvcC1tZW51LWl0ZW1cIl0pLFxuICAgIFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5tYW55KFtjbHNzKFtcInN1Ym1lbnUtaWNvblwiXSksIEF0dHIudGl0bGUodG9vbHRpcCldKSxcbiAgICAgICAgW2Rpdih+YXR0cj1jbHNzKFtcImljb25cIl0pLCBbaWNvbl0pXSxcbiAgICAgICksXG4gICAgICBkaXYofmF0dHI9Y2xzcyhbXCJzdWJtZW51XCJdKSwgbWVudSksXG4gICAgXSxcbiAgKTtcblxubGV0IHZpZXcgPVxuICAgICh+aW5qZWN0OiBVcGRhdGUudCA9PiAnYSwgfnNldHRpbmdzOiBTZXR0aW5ncy50LCB+ZWRpdG9yczogRWRpdG9ycy50KSA9PiBbXG4gIGEofmF0dHI9Y2xzcyhbXCJudXQtaWNvblwiXSksIFtJY29ucy5oYXplbG51dF0pLFxuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJudXQtbWVudVwiXSksXG4gICAgW1xuICAgICAgc3VibWVudShcbiAgICAgICAgfnRvb2x0aXA9XCJTZXR0aW5nc1wiLFxuICAgICAgICB+aWNvbj1JY29ucy5nZWFyLFxuICAgICAgICBzZXR0aW5nc19tZW51KH5pbmplY3QsIH5zZXR0aW5ncyksXG4gICAgICApLFxuICAgICAgc3VibWVudShcbiAgICAgICAgfnRvb2x0aXA9XCJFeHBvcnRcIixcbiAgICAgICAgfmljb249SWNvbnMuZXhwb3J0LFxuICAgICAgICBleHBvcnRfbWVudSh+aW5qZWN0LCB+c2V0dGluZ3MsIGVkaXRvcnMpLFxuICAgICAgKSxcbiAgICAgIHN1Ym1lbnUoXG4gICAgICAgIH50b29sdGlwPVwiSW1wb3J0XCIsXG4gICAgICAgIH5pY29uPUljb25zLmltcG9ydCxcbiAgICAgICAgaW1wb3J0X21lbnUofmluamVjdCwgZWRpdG9ycyksXG4gICAgICApLFxuICAgICAgcmVwYXJzZSh+aW5qZWN0KSxcbiAgICAgIHJlc2V0X2hhemVsLFxuICAgICAgbGluayhcbiAgICAgICAgSWNvbnMuZ2l0aHViLFxuICAgICAgICBcImh0dHBzOi8vZ2l0aHViLmNvbS9oYXplbGdyb3ZlL2hhemVsXCIsXG4gICAgICAgIH50b29sdGlwPVwiSGF6ZWwgb24gR2l0SHViXCIsXG4gICAgICApLFxuICAgICAgbGluayhJY29ucy5pbmZvLCBcImh0dHBzOi8vaGF6ZWwub3JnXCIsIH50b29sdGlwPVwiSGF6ZWwgSG9tZXBhZ2VcIiksXG4gICAgXSxcbiAgKSxcbl07XG4iLCJvcGVuIEpzX29mX29jYW1sO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xub3BlbiBOb2RlO1xuXG5sZXQgaGFuZGxlcnMgPSAofmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksIG1vZGVsKSA9PiB7XG4gIGxldCBnZXRfc2VsZWN0aW9uID0gKG1vZGVsOiBNb2RlbC50KTogb3B0aW9uKHN0cmluZykgPT4ge1xuICAgIGxldCogc2VsZWN0aW9uID0gbW9kZWwuYWN0aXZlX2VkaXRvcjtcbiAgICBFZGl0b3JzLmdldF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgbW9kZWwuZWRpdG9ycywgbW9kZWwucmVzdWx0cylcbiAgICB8PiBPcHRpb24ubWFwKFByaW50ZXIudG9fc3RyaW5nX3NlbGVjdGlvbik7XG4gIH07XG4gIGxldCBrZXlfaGFuZGxlciA9XG4gICAgICAofmluamVjdCwgfmRpcjogS2V5LmRpciwgZXZ0OiBKcy50KERvbV9odG1sLmtleWJvYXJkRXZlbnQpKVxuICAgICAgOiBFZmZlY3QudCh1bml0KSA9PlxuICAgIEVmZmVjdC4oXG4gICAgICBzd2l0Y2ggKEtleWJvYXJkLmhhbmRsZV9rZXlfZXZlbnQoS2V5Lm1rKGRpciwgZXZ0KSkpIHtcbiAgICAgIHwgTm9uZSA9PiBJZ25vcmVcbiAgICAgIHwgU29tZShhY3Rpb24pID0+XG4gICAgICAgIE1hbnkoW1ByZXZlbnRfZGVmYXVsdCwgU3RvcF9wcm9wYWdhdGlvbiwgaW5qZWN0KGFjdGlvbildKVxuICAgICAgfVxuICAgICk7XG4gIFtcbiAgICBBdHRyLm9uX2tleXByZXNzKF8gPT4gRWZmZWN0LlByZXZlbnRfZGVmYXVsdCksXG4gICAgQXR0ci5vbl9rZXl1cChrZXlfaGFuZGxlcih+aW5qZWN0LCB+ZGlyPUtleVVwKSksXG4gICAgQXR0ci5vbl9rZXlkb3duKGtleV9oYW5kbGVyKH5pbmplY3QsIH5kaXI9S2V5RG93bikpLFxuICAgIC8qIHNhZmV0eSBoYW5kbGVyIGluIGNhc2UgbW91c2Vkb3duIG92ZXJsYXkgZG9lc24ndCBjYXRjaCBpdCAqL1xuICAgIEF0dHIub25fbW91c2V1cChfID0+IGluamVjdChHbG9iYWxzKFNldE1vdXNlZG93bihmYWxzZSkpKSksXG4gICAgQXR0ci5vbl9ibHVyKF8gPT4ge1xuICAgICAgSnNVdGlsLmZvY3VzX2NsaXBib2FyZF9zaGltKCk7XG4gICAgICBFZmZlY3QuSWdub3JlO1xuICAgIH0pLFxuICAgIEF0dHIub25fZm9jdXMoXyA9PiB7XG4gICAgICBKc1V0aWwuZm9jdXNfY2xpcGJvYXJkX3NoaW0oKTtcbiAgICAgIEVmZmVjdC5JZ25vcmU7XG4gICAgfSksXG4gICAgQXR0ci5vbl9wYXN0ZShldnQgPT4ge1xuICAgICAgbGV0IHBhc3RlZF90ZXh0ID1cbiAgICAgICAgSnMudG9fc3RyaW5nKGV2dCMjLmNsaXBib2FyZERhdGEjI2dldERhdGEoSnMuc3RyaW5nKFwidGV4dFwiKSkpXG4gICAgICAgIHw+IFN0ci5nbG9iYWxfcmVwbGFjZShTdHIucmVnZXhwKFwiXFxuWyBdKlwiKSwgXCJcXG5cIik7XG4gICAgICBEb20ucHJldmVudERlZmF1bHQoZXZ0KTtcbiAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihQYXN0ZShwYXN0ZWRfdGV4dCkpKTtcbiAgICB9KSxcbiAgXVxuICBAIChcbiAgICBzd2l0Y2ggKGdldF9zZWxlY3Rpb24obW9kZWwpKSB7XG4gICAgfCBOb25lID0+IFtdXG4gICAgfCBTb21lKHNlbGVjdGlvbikgPT4gW1xuICAgICAgICBBdHRyLm9uX2NvcHkoXyA9PiB7XG4gICAgICAgICAgSnNVdGlsLmNvcHkoc2VsZWN0aW9uKTtcbiAgICAgICAgICBFZmZlY3QuSWdub3JlO1xuICAgICAgICB9KSxcbiAgICAgICAgQXR0ci5vbl9jdXQoXyA9PiB7XG4gICAgICAgICAgSnNVdGlsLmNvcHkoc2VsZWN0aW9uKTtcbiAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlBlcmZvcm1BY3Rpb24oRGVzdHJ1Y3QoTGVmdCkpKTtcbiAgICAgICAgfSksXG4gICAgICBdXG4gICAgfVxuICApO1xufTtcblxubGV0IG1haW5fdmlldyA9XG4gICAgKFxuICAgICAgfmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICB7Z2xvYmFscywgZWRpdG9ycywgZXhwbGFpblRoaXNNb2RlbCwgcmVzdWx0cywgc3RhdGljcywgYWN0aXZlX2VkaXRvciwgX306IE1vZGVsLnQsXG4gICAgKSA9PiB7XG4gIGxldCBnbG9iYWxzID0gey4uLmdsb2JhbHMsIGluamVjdF9nbG9iYWw6IHggPT4gaW5qZWN0KEdsb2JhbHMoeCkpfTtcbiAgbGV0IHNldHRpbmdzID0gZ2xvYmFscy5zZXR0aW5ncztcbiAgbGV0IF8gPVxuICAgIHN3aXRjaCAoYWN0aXZlX2VkaXRvcikge1xuICAgIHwgU29tZShhZSkgPT4gcHJpbnRfZW5kbGluZShcIlNFTEVDVEVEOiBcIiArKyBFZGl0b3JzLlNlbGVjdGlvbi5zaG93KGFlKSlcbiAgICB8IE5vbmUgPT4gcHJpbnRfZW5kbGluZShcIk5PIEFDVElWRSBFRElUT1JcIilcbiAgICB9O1xuICBsZXQgY3Vyc29yX2luZm8gPVxuICAgIEVkaXRvcnMuZ2V0X2N1cnNvcl9pbmZvKFxuICAgICAgfnNlbGVjdGlvbj1hY3RpdmVfZWRpdG9yLFxuICAgICAgfnNldHRpbmdzLFxuICAgICAgZWRpdG9ycyxcbiAgICAgIHJlc3VsdHMsXG4gICAgICBzdGF0aWNzLFxuICAgICk7XG4gIGxldCB0b3BfYmFyID1cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmlkKFwidG9wLWJhclwiKSxcbiAgICAgIE51dE1lbnUudmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIH5lZGl0b3JzKVxuICAgICAgQCBbZGl2KH5hdHRyPUF0dHIuaWQoXCJ0aXRsZVwiKSwgW3RleHQoXCJoYXplbFwiKV0pXVxuICAgICAgQCBbRWRpdG9yTW9kZVZpZXcudmlldyh+aW5qZWN0LCB+c2V0dGluZ3MsIH5lZGl0b3JzKV0sXG4gICAgKTtcbiAgbGV0IGJvdHRvbV9iYXIgPSBDdXJzb3JJbnNwZWN0b3Iudmlldyh+Z2xvYmFscywgY3Vyc29yX2luZm8pO1xuICBsZXQgc2lkZWJhciA9XG4gICAgc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvdyAmJiBzZXR0aW5ncy5jb3JlLnN0YXRpY3NcbiAgICAgID8gRXhwbGFpblRoaXMudmlldyh+Z2xvYmFscywgfmluamVjdCwgfmV4cGxhaW5UaGlzTW9kZWwsIGN1cnNvcl9pbmZvKVxuICAgICAgOiBkaXYoW10pO1xuICBsZXQgaGlnaGxpZ2h0cyA9XG4gICAgRXhwbGFpblRoaXMuZ2V0X2NvbG9yX21hcCh+c2V0dGluZ3MsIH5leHBsYWluVGhpc01vZGVsLCBjdXJzb3JfaW5mbyk7XG4gIGxldCBlZGl0b3JzX3ZpZXcgPVxuICAgIHN3aXRjaCAoZWRpdG9ycykge1xuICAgIHwgU2NyYXRjaChpZHgsIHNzKSA9PlxuICAgICAgbGV0IGVkaXRvciA9IExpc3QubnRoKHNzLCBpZHgpO1xuICAgICAgbGV0IHJlc3VsdF9rZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoc3RyaW5nX29mX2ludChpZHgpKTtcbiAgICAgIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5sb29rdXAoc3RhdGljcywgcmVzdWx0X2tleSk7XG4gICAgICBsZXQgc2VsZWN0ZWQgPVxuICAgICAgICBzd2l0Y2ggKGFjdGl2ZV9lZGl0b3IpIHtcbiAgICAgICAgfCBTb21lKEVkaXRvcnMuU2VsZWN0aW9uLlNjcmF0Y2goaSkpID0+IFNvbWUoaSlcbiAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgfTtcbiAgICAgIFNjcmF0Y2hNb2RlLnZpZXcoXG4gICAgICAgIH5zZWxlY3Q9XG4gICAgICAgICAgcyA9PlxuICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5NYWtlQWN0aXZlKEVkaXRvcnMuU2VsZWN0aW9uLlNjcmF0Y2gocykpKSxcbiAgICAgICAgfmluamVjdCxcbiAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgICB+cmVzdWx0cyxcbiAgICAgICAgfnJlc3VsdF9rZXksXG4gICAgICAgIH5zdGF0aWNzLFxuICAgICAgICB+c2VsZWN0ZWQsXG4gICAgICAgIGVkaXRvcixcbiAgICAgICk7XG4gICAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIHNzKSA9PlxuICAgICAgbGV0IGVkaXRvciA9IExpc3QuYXNzb2MobmFtZSwgc3MpO1xuICAgICAgbGV0IHJlc3VsdF9rZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkobmFtZSk7XG4gICAgICBsZXQgaW5mbyA9XG4gICAgICAgIFNsaWRlQ29udGVudC5nZXRfY29udGVudChlZGl0b3JzKVxuICAgICAgICB8PiBPcHRpb24ubWFwKGkgPT4gZGl2KH5hdHRyPUF0dHIuaWQoXCJzbGlkZVwiKSwgW2ldKSlcbiAgICAgICAgfD4gT3B0aW9uLnRvX2xpc3Q7XG4gICAgICBsZXQgc3RhdGljcyA9IENhY2hlZFN0YXRpY3MubG9va3VwKHN0YXRpY3MsIHJlc3VsdF9rZXkpO1xuICAgICAgbGV0IHNlbGVjdGVkID1cbiAgICAgICAgc3dpdGNoIChhY3RpdmVfZWRpdG9yKSB7XG4gICAgICAgIHwgU29tZShFZGl0b3JzLlNlbGVjdGlvbi5TY3JhdGNoKGkpKSA9PiBTb21lKGkpXG4gICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgIH07XG4gICAgICBpbmZvXG4gICAgICBAIFNjcmF0Y2hNb2RlLnZpZXcoXG4gICAgICAgICAgfnNlbGVjdD1cbiAgICAgICAgICAgIHMgPT5cbiAgICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5NYWtlQWN0aXZlKEVkaXRvcnMuU2VsZWN0aW9uLlNjcmF0Y2gocykpKSxcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIH5nbG9iYWxzLFxuICAgICAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgICAgIH5yZXN1bHRzLFxuICAgICAgICAgIH5yZXN1bHRfa2V5LFxuICAgICAgICAgIH5zdGF0aWNzLFxuICAgICAgICAgIH5zZWxlY3RlZCxcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICk7XG4gICAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpID0+XG4gICAgICBsZXQgc2VsZWN0aW9uID1cbiAgICAgICAgc3dpdGNoIChhY3RpdmVfZWRpdG9yKSB7XG4gICAgICAgIHwgU29tZShFZGl0b3JzLlNlbGVjdGlvbi5FeGVyY2lzZXMocG9zLCBzZWwpKSA9PiBTb21lKChwb3MsIHNlbCkpXG4gICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgIH07XG4gICAgICBFeGVyY2lzZU1vZGUudmlldyhcbiAgICAgICAgfnNlbGVjdD1cbiAgICAgICAgICAoKHBvcywgc2VsKSkgPT5cbiAgICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgICAgVXBkYXRlQWN0aW9uLk1ha2VBY3RpdmUoRWRpdG9ycy5TZWxlY3Rpb24uRXhlcmNpc2VzKHBvcywgc2VsKSksXG4gICAgICAgICAgICApLFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+Z2xvYmFscyxcbiAgICAgICAgfnNlbGVjdGlvbixcbiAgICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICAgIH5yZXN1bHRzLFxuICAgICAgICB+ZXhlcmNpc2UsXG4gICAgICApO1xuICAgIH07XG4gIFtcbiAgICB0b3BfYmFyLFxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuaWQoXCJtYWluXCIpLFxuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbU2V0dGluZ3MuTW9kZWwuc2hvd19tb2RlKHNldHRpbmdzLm1vZGUpXSksXG4gICAgICAgIF0pLFxuICAgICAgZWRpdG9yc192aWV3LFxuICAgICksXG4gICAgc2lkZWJhcixcbiAgICBib3R0b21fYmFyLFxuICBdO1xufTtcblxubGV0IHZpZXcgPSAofmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksIG1vZGVsOiBNb2RlbC50KSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KEF0dHIuW2lkKFwicGFnZVwiKSwgLi4uaGFuZGxlcnMofmluamVjdCwgbW9kZWwpXSksXG4gICAgW1xuICAgICAgRm9udFNwZWNpbWVuLnZpZXcoXCJmb250LXNwZWNpbWVuXCIpLFxuICAgICAgRGVjVXRpbC5maWx0ZXJzLFxuICAgICAgSnNVdGlsLmNsaXBib2FyZF9zaGltLFxuICAgIF1cbiAgICBAIG1haW5fdmlldyh+aW5qZWN0LCBtb2RlbCksXG4gICk7XG4iLCJsZXQgbWVtb2l6ZSA9IChmOiAnayA9PiAndik6ICgnayA9PiAndikgPT4ge1xuICBsZXQgdGFibGU6IFdlYWtNYXAudCgnaywgJ3YpID0gV2Vha01hcC5taygpO1xuICBrID0+XG4gICAgc3dpdGNoIChXZWFrTWFwLmdldCh0YWJsZSwgaykpIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCB2ID0gZihrKTtcbiAgICAgIGxldCBfID0gV2Vha01hcC5zZXQodGFibGUsIGssIHYpO1xuICAgICAgdjtcbiAgICB8IFNvbWUodikgPT4gdlxuICAgIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxudHlwZSB0ID0gKGZsb2F0LCBVcGRhdGVBY3Rpb24udCk7XG5cbmxldCBtayA9ICh1cGRhdGUpOiB0ID0+IHtcbiAgKEpzVXRpbC50aW1lc3RhbXAoKSwgdXBkYXRlKTtcbn07XG5cbmxldCB0b19zdHJpbmcgPSAoKHRpbWVzdGFtcCwgdXBkYXRlKTogdCkgPT4ge1xuICAvKmxldCBzdGF0dXMgPVxuICAgIHN3aXRjaCAoZW50cnkuZXJyb3IpIHtcbiAgICB8IE5vbmUgPT4gXCJTVUNDRVNTXCJcbiAgICB8IFNvbWUoZmFpbHVyZSkgPT4gXCJGQUlMVVJFKFwiICsrIFVwZGF0ZUFjdGlvbi5GYWlsdXJlLnNob3coZmFpbHVyZSkgKysgXCIpXCJcbiAgICB9OyovXG4gIFByaW50Zi5zcHJpbnRmKFxuICAgIFwiJS4wZjogJXNcIixcbiAgICB0aW1lc3RhbXAsXG4gICAgVXBkYXRlQWN0aW9uLnNob3codXBkYXRlKSxcbiAgICAvL3N0YXR1cyxcbiAgKTtcbn07XG5cbmxldCBzZXJpYWxpemUgPSAoZW50cnk6IHQpOiBzdHJpbmcgPT4ge1xuICBlbnRyeSB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbn07XG5cbmxldCBkZXNlcmlhbGl6ZSA9IChzOiBzdHJpbmcpOiB0ID0+IHtcbiAgcyB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHRfb2Zfc2V4cDtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcmVhc29uID1cbiAgfCBVbnJlY29nbml6ZWRcbiAgfCBGYWlsdXJlKEFjdGlvbi5GYWlsdXJlLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHJlYXNvbixcbiAgcHJpb3JfYXR0ZW1wdHM6IGludCxcbn07XG5cbmxldCBtayA9ICh+cHJpb3JfYXR0ZW1wdHM9MCwgcmVhc29uKSA9PiB7cmVhc29uLCBwcmlvcl9hdHRlbXB0c307XG5cbmxldCByZXBsYWNlX29yX2luY3JlbWVudF9hdHRlbXB0cyA9IChyZWFzb24sIGZhaWxlZF9pbnB1dDogdCkgPT5cbiAgcmVhc29uID09IGZhaWxlZF9pbnB1dC5yZWFzb25cbiAgICA/IHsuLi5mYWlsZWRfaW5wdXQsIHByaW9yX2F0dGVtcHRzOiBmYWlsZWRfaW5wdXQucHJpb3JfYXR0ZW1wdHMgKyAxfVxuICAgIDogbWsocmVhc29uKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhY3Rpb24gPVxuICB8IFR1cm5PZmZEeW5hbWljc1xuICB8IENsZWFyU3RvcmU7XG5cbmxldCBwZXJmb3JtID0gKGFjdGlvbjogYWN0aW9uKTogdW5pdCA9PiB7XG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gIHwgVHVybk9mZkR5bmFtaWNzID0+XG4gICAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MubG9hZCgpO1xuICAgIFN0b3JlLlNldHRpbmdzLnNhdmUoe1xuICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICBjb3JlOiB7XG4gICAgICAgIC4uLnNldHRpbmdzLmNvcmUsXG4gICAgICAgIGR5bmFtaWNzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIHwgQ2xlYXJTdG9yZSA9PiBKc1V0aWwuY2xlYXJfbG9jYWxzdG9yZSgpXG4gIH07XG4gIEpzX29mX29jYW1sLkRvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uIyNyZXBsYWNlKFxuICAgIEpzX29mX29jYW1sLkpzLnN0cmluZyhcIiNcIiksXG4gICk7XG4gIEpzX29mX29jYW1sLkRvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uIyNyZWxvYWQ7XG59O1xuXG5sZXQgYnRuID0gKGNhcHRpb24sIGFjdGlvbikgPT4ge1xuICBOb2RlLihcbiAgICBidXR0b24oXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT4ge1xuICAgICAgICAgICAgcGVyZm9ybShhY3Rpb24pO1xuICAgICAgICAgICAgVWlfZWZmZWN0Lklnbm9yZTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSksXG4gICAgICBbdGV4dChjYXB0aW9uKV0sXG4gICAgKVxuICApO1xufTtcblxubGV0IHZpZXcgPSB7XG4gIE5vZGUuKFxuICAgIGRpdihbXG4gICAgICBidG4oXCJ0dXJuIG9mZiBkeW5hbWljc1wiLCBUdXJuT2ZmRHluYW1pY3MpLFxuICAgICAgYnRuKFwiY2xlYXIgbG9jYWwgc3RvcmFnZSAoTE9TRSBBTEwgREFUQSEpXCIsIENsZWFyU3RvcmUpLFxuICAgIF0pXG4gICk7XG59O1xuXG5tb2R1bGUgQXBwID0ge1xuICBtb2R1bGUgTW9kZWwgPSB7XG4gICAgdHlwZSB0ID0gdW5pdDtcbiAgICBsZXQgY3V0b2ZmID0gKF8sIF8pID0+IGZhbHNlO1xuICB9O1xuICBtb2R1bGUgQWN0aW9uID0ge1xuICAgIHR5cGUgdCA9IHVuaXQ7XG4gICAgbGV0IHNleHBfb2ZfdCA9IF8gPT4gU2V4cGxpYi5TZXhwLnVuaXQ7XG4gIH07XG4gIG1vZHVsZSBTdGF0ZSA9IHtcbiAgICB0eXBlIHQgPSB1bml0O1xuICB9O1xuICBsZXQgb25fc3RhcnR1cCA9ICh+c2NoZWR1bGVfYWN0aW9uIGFzIF8sIF8pID0+XG4gICAgQXN5bmNfa2VybmVsLkRlZmVycmVkLnJldHVybigpO1xuICBsZXQgY3JlYXRlID0gKF8sIH5vbGRfbW9kZWwgYXMgXywgfmluamVjdCBhcyBfKSA9PlxuICAgIEluY3JfZG9tLkluY3IucmV0dXJuKClcbiAgICB8PiBJbmNyX2RvbS5JbmNyLm1hcCh+Zj1fID0+XG4gICAgICAgICBJbmNyX2RvbS5Db21wb25lbnQuY3JlYXRlKFxuICAgICAgICAgICB+YXBwbHlfYWN0aW9uPShfLCBfLCB+c2NoZWR1bGVfYWN0aW9uIGFzIF8pID0+ICgpLFxuICAgICAgICAgICAoKSxcbiAgICAgICAgICAgdmlldyxcbiAgICAgICAgIClcbiAgICAgICApO1xufTtcblxubGV0IGdvID0gKCkgPT5cbiAgSW5jcl9kb20uU3RhcnRfYXBwLnN0YXJ0KFxuICAgIChtb2R1bGUgQXBwKSxcbiAgICB+ZGVidWc9ZmFsc2UsXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkPVwiY29udGFpbmVyXCIsXG4gICAgfmluaXRpYWxfbW9kZWw9KCksXG4gICk7XG4iLCIoKiBjb3B5IHRoaXMgZmlsZSwgZmlsbGluZyBpbiB0aGUgZGV0YWlscyBiZWxvdywgdG8gY3JlYXRlIGEgYmxhbmsgZXhlcmNpc2UgdGhhdCB5b3UgY2FuIHRoZW4gZWRpdCBpbiBIYXplbFxuICAgYW5kIGV4cG9ydCwgb3ZlcndyaXRpbmcgeW91ciBjb3B5IG9mIHRoZSBiZWxvd1xuXG4gICBmb3IgcHJvbXB0cywgeW91IG5lZWQgdG8gZGVmaW5lIGEgc2VwYXJhdGUgZmlsZSB7bW9kdWxlX25hbWV9X3Byb21wdC5yZSAoc2VlIGV4YW1wbGVzKVxuKilcblxubGV0IGV4ZXJjaXNlID1cbiAgRXhlcmNpc2UuYmxhbmtfc3BlYyB+dGl0bGU6XCJSZWN1cnNpdmUgRmlib25hY2NpXCJcbiAgICB+bW9kdWxlX25hbWU6XCJFeF9SZWN1cnNpdmVGaWJvbmFjY2lcIlxuICAgICAgKCogbWFrZSBzdXJlIHlvdXIgZmlsZSBpcyBuYW1lZCA8bW9kdWxlX25hbWU+Lm1sICopXG4gICAgfnBvaW50X2Rpc3RyaWJ1dGlvbjpcbiAgICAgIHsgdGVzdF92YWxpZGF0aW9uID0gMTA7IG11dGF0aW9uX3Rlc3RpbmcgPSA0MDsgaW1wbF9ncmFkaW5nID0gNTAgfVxuICAgICAgKCogaWYgbXV0YXRpb25fdGVzdGluZyA9IDAsIHRoZW4gbm8gbXV0YXRpb24gdGVzdGluZyBib3ggd2lsbCBzaG93IHVwICopXG4gICAgfnJlcXVpcmVkX3Rlc3RzOjUgfnByb3ZpZGVkX3Rlc3RzOjAgfm51bV93cm9uZ19pbXBsczoyXG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb20uQXR0cjtcblxubGV0IGZzdHIgPSBmID0+IFByaW50Zi5zcHJpbnRmKFwiJWZcIiwgZik7XG5cbmxldCBjeCA9IGYgPT4gY3JlYXRlKFwiY3hcIiwgZnN0cihmKSk7XG5sZXQgY3kgPSBmID0+IGNyZWF0ZShcImN5XCIsIGZzdHIoZikpO1xubGV0IHJ4ID0gZiA9PiBjcmVhdGUoXCJyeFwiLCBmc3RyKGYpKTtcbmxldCByeSA9IGYgPT4gY3JlYXRlKFwicnlcIiwgZnN0cihmKSk7XG5cbmxldCB4ID0gZiA9PiBjcmVhdGUoXCJ4XCIsIGZzdHIoZikpO1xubGV0IHkgPSBmID0+IGNyZWF0ZShcInlcIiwgZnN0cihmKSk7XG5sZXQgd2lkdGggPSBmID0+IGNyZWF0ZShcIndpZHRoXCIsIGZzdHIoZikpO1xubGV0IGhlaWdodCA9IGYgPT4gY3JlYXRlKFwiaGVpZ2h0XCIsIGZzdHIoZikpO1xuXG5sZXQgc3Ryb2tlX3dpZHRoID0gZiA9PiBjcmVhdGUoXCJzdHJva2Utd2lkdGhcIiwgZnN0cihmKSk7XG5sZXQgdmVjdG9yX2VmZmVjdCA9IHMgPT4gY3JlYXRlKFwidmVjdG9yLWVmZmVjdFwiLCBzKTtcbmxldCBmaWx0ZXIgPSBzID0+IGNyZWF0ZShcImZpbHRlclwiLCBzKTtcblxubGV0IG9mZnNldCA9IGYgPT4gY3JlYXRlKFwib2Zmc2V0XCIsIFByaW50Zi5zcHJpbnRmKFwiJWYlJVwiLCAxMDAuICouIGYpKTtcbmxldCBzdG9wX2NvbG9yID0gcyA9PiBjcmVhdGUoXCJzdG9wLWNvbG9yXCIsIHMpO1xubGV0IHN0b3Bfb3BhY2l0eSA9IGYgPT4gY3JlYXRlKFwic3RvcC1vcGFjaXR5XCIsIFByaW50Zi5zcHJpbnRmKFwiJWZcIiwgZikpO1xuIiwib3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gSW5jcl9kb207XG5vcGVuIEhhejNsd2ViO1xuXG5sZXQgc2Nyb2xsX3RvX2NhcmV0ID0gcmVmKHRydWUpO1xubGV0IGVkaXRfYWN0aW9uX2FwcGxpZWQgPSByZWYodHJ1ZSk7XG5sZXQgbGFzdF9lZGl0X2FjdGlvbiA9IHJlZihKc1V0aWwudGltZXN0YW1wKCkpO1xuXG5sZXQgb2JzZXJ2ZV9mb250X3NwZWNpbWVuID0gKGlkLCB1cGRhdGUpID0+XG4gIFJlc2l6ZU9ic2VydmVyLm9ic2VydmUoXG4gICAgfm5vZGU9SnNVdGlsLmdldF9lbGVtX2J5X2lkKGlkKSxcbiAgICB+Zj1cbiAgICAgIChlbnRyaWVzLCBfKSA9PiB7XG4gICAgICAgIGxldCBzcGVjaW1lbiA9IEpzLnRvX2FycmF5KGVudHJpZXMpWzBdO1xuICAgICAgICBsZXQgcmVjdCA9IHNwZWNpbWVuIyMuY29udGVudFJlY3Q7XG4gICAgICAgIHVwZGF0ZShcbiAgICAgICAgICBIYXozbHdlYi5Gb250TWV0cmljcy57XG4gICAgICAgICAgICByb3dfaGVpZ2h0OiByZWN0IyMuYm90dG9tIC0uIHJlY3QjIy50b3AsXG4gICAgICAgICAgICBjb2xfd2lkdGg6IHJlY3QjIy5yaWdodCAtLiByZWN0IyMubGVmdCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAoKSxcbiAgKTtcblxubGV0IHJlc3RhcnRfY2FyZXRfYW5pbWF0aW9uID0gKCkgPT5cbiAgLy8gbmVjZXNzYXJ5IHRvIHRyaWdnZXIgcmVmbG93XG4gIC8vIDxodHRwczovL2Nzcy10cmlja3MuY29tL3Jlc3RhcnQtY3NzLWFuaW1hdGlvbi8+XG4gIHRyeSh7XG4gICAgbGV0IGNhcmV0X2VsZW0gPSBKc1V0aWwuZ2V0X2VsZW1fYnlfaWQoXCJjYXJldFwiKTtcbiAgICBjYXJldF9lbGVtIyMuY2xhc3NMaXN0IyNyZW1vdmUoSnMuc3RyaW5nKFwiYmxpbmtcIikpO1xuICAgIGxldCBfID0gY2FyZXRfZWxlbSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0O1xuICAgIGNhcmV0X2VsZW0jIy5jbGFzc0xpc3QjI2FkZChKcy5zdHJpbmcoXCJibGlua1wiKSk7XG4gIH0pIHtcbiAgfCBfID0+ICgpXG4gIH07XG5cbmxldCBhcHBseSA9IChtb2RlbCwgYWN0aW9uLCBzdGF0ZSwgfnNjaGVkdWxlX2FjdGlvbik6IE1vZGVsLnQgPT4ge1xuICByZXN0YXJ0X2NhcmV0X2FuaW1hdGlvbigpO1xuICBpZiAoVXBkYXRlQWN0aW9uLmlzX2VkaXQoYWN0aW9uKSkge1xuICAgIGxhc3RfZWRpdF9hY3Rpb24gOj0gSnNVdGlsLnRpbWVzdGFtcCgpO1xuICAgIGVkaXRfYWN0aW9uX2FwcGxpZWQgOj0gdHJ1ZTtcbiAgfTtcbiAgaWYgKFVwZGF0ZS5zaG91bGRfc2Nyb2xsX3RvX2NhcmV0KGFjdGlvbikpIHtcbiAgICBzY3JvbGxfdG9fY2FyZXQgOj0gdHJ1ZTtcbiAgfTtcbiAgbGFzdF9lZGl0X2FjdGlvbiA6PSBKc1V0aWwudGltZXN0YW1wKCk7XG4gIHN3aXRjaCAoXG4gICAgdHJ5KHtcbiAgICAgIGxldCBuZXdfbW9kZWwgPSBVcGRhdGUuYXBwbHkobW9kZWwsIGFjdGlvbiwgc3RhdGUsIH5zY2hlZHVsZV9hY3Rpb24pO1xuICAgICAgTG9nLnVwZGF0ZShhY3Rpb24pO1xuICAgICAgbmV3X21vZGVsO1xuICAgIH0pIHtcbiAgICB8IGV4YyA9PlxuICAgICAgUHJpbnRmLnByaW50ZihcbiAgICAgICAgXCJFUlJPUjogRXhjZXB0aW9uIGR1cmluZyBhcHBseTogJXNcXG5cIixcbiAgICAgICAgUHJpbnRleGMudG9fc3RyaW5nKGV4YyksXG4gICAgICApO1xuICAgICAgRXJyb3IoRXhjZXB0aW9uKFByaW50ZXhjLnRvX3N0cmluZyhleGMpKSk7XG4gICAgfVxuICApIHtcbiAgfCBPayhtb2RlbCkgPT4gbW9kZWxcbiAgfCBFcnJvcihGYWlsZWRUb1BlcmZvcm0oZXJyKSkgPT5cbiAgICAvLyBUT0RPKGFuZHJldyk6IHJlaW5zdGF0ZSB0aGlzIGhpc3RvcnkgZnVuY3Rpb25hbGl0eVxuICAgIHByaW50X2VuZGxpbmUoVXBkYXRlLkZhaWx1cmUuc2hvdyhGYWlsZWRUb1BlcmZvcm0oZXJyKSkpO1xuICAgIC8vey4uLm1vZGVsLCBoaXN0b3J5OiBBY3Rpb25IaXN0b3J5LmZhaWx1cmUoZXJyLCBtb2RlbC5oaXN0b3J5KX07XG4gICAgbW9kZWw7XG4gIHwgRXJyb3IoZXJyKSA9PlxuICAgIHByaW50X2VuZGxpbmUoVXBkYXRlLkZhaWx1cmUuc2hvdyhlcnIpKTtcbiAgICBtb2RlbDtcbiAgfTtcbn07XG5cbm1vZHVsZSBBcHAgPSB7XG4gIG1vZHVsZSBNb2RlbCA9IE1vZGVsO1xuICBtb2R1bGUgQWN0aW9uID0gVXBkYXRlO1xuICBtb2R1bGUgU3RhdGUgPSBTdGF0ZTtcblxuICBsZXQgb25fc3RhcnR1cCA9ICh+c2NoZWR1bGVfYWN0aW9uLCBtOiBNb2RlbC50KSA9PiB7XG4gICAgbGV0IF8gPVxuICAgICAgb2JzZXJ2ZV9mb250X3NwZWNpbWVuKFwiZm9udC1zcGVjaW1lblwiLCBmbSA9PlxuICAgICAgICBzY2hlZHVsZV9hY3Rpb24oSGF6M2x3ZWIuVXBkYXRlLkdsb2JhbHMoU2V0Rm9udE1ldHJpY3MoZm0pKSlcbiAgICAgICk7XG5cbiAgICBKc1V0aWwuZm9jdXNfY2xpcGJvYXJkX3NoaW0oKTtcblxuICAgIC8qIGluaXRpYWxpemUgc3RhdGUuICovXG4gICAgbGV0IHN0YXRlID0gU3RhdGUuaW5pdCgpO1xuXG4gICAgLyogSW5pdGlhbCBldmFsdWF0aW9uIG9uIGEgd29ya2VyICovXG4gICAgVXBkYXRlLnNjaGVkdWxlX2V2YWx1YXRpb24ofnNjaGVkdWxlX2FjdGlvbiwgbSk7XG5cbiAgICBPcy5pc19tYWMgOj1cbiAgICAgIERvbV9odG1sLndpbmRvdyMjLm5hdmlnYXRvciMjLnBsYXRmb3JtIyN0b1VwcGVyQ2FzZSMjaW5kZXhPZihcbiAgICAgICAgSnMuc3RyaW5nKFwiTUFDXCIpLFxuICAgICAgKVxuICAgICAgPj0gMDtcbiAgICBBc3luY19rZXJuZWwuRGVmZXJyZWQucmV0dXJuKHN0YXRlKTtcbiAgfTtcblxuICBsZXQgY3JlYXRlID1cbiAgICAgIChcbiAgICAgICAgbW9kZWw6IEluY3IudChIYXozbHdlYi5Nb2RlbC50KSxcbiAgICAgICAgfm9sZF9tb2RlbCBhcyBfOiBJbmNyLnQoSGF6M2x3ZWIuTW9kZWwudCksXG4gICAgICAgIH5pbmplY3QsXG4gICAgICApID0+IHtcbiAgICBvcGVuIEluY3IuTGV0X3N5bnRheDtcbiAgICBsZXQlbWFwIG1vZGVsID0gbW9kZWw7XG4gICAgLyogTm90ZTogbWFwcGluZyBvdmVyIHRoZSBvbGRfbW9kZWwgaGVyZSBtYXlcbiAgICAgICB0cmlnZ2VyIGFuIGFkZGl0aW9uYWwgcmVkcmF3ICovXG4gICAgQ29tcG9uZW50LmNyZWF0ZShcbiAgICAgIH5hcHBseV9hY3Rpb249YXBwbHkobW9kZWwpLFxuICAgICAgbW9kZWwsXG4gICAgICBIYXozbHdlYi5QYWdlLnZpZXcofmluamVjdCwgbW9kZWwpLFxuICAgICAgfm9uX2Rpc3BsYXk9KF8sIH5zY2hlZHVsZV9hY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKGVkaXRfYWN0aW9uX2FwcGxpZWReXG4gICAgICAgICAgICAmJiBKc1V0aWwudGltZXN0YW1wKClcbiAgICAgICAgICAgIC0uIGxhc3RfZWRpdF9hY3Rpb25eID4gMTAwMC4wKSB7XG4gICAgICAgICAgLyogSWYgYW4gZWRpdCBhY3Rpb24gaGFzIGJlZW4gYXBwbGllZCwgYnV0IG5vIG90aGVyIGVkaXQgYWN0aW9uXG4gICAgICAgICAgICAgaGFzIGJlZW4gYXBwbGllZCBmb3IgMSBzZWNvbmQsIHNhdmUgdGhlIG1vZGVsLiAqL1xuICAgICAgICAgIGVkaXRfYWN0aW9uX2FwcGxpZWQgOj0gZmFsc2U7XG4gICAgICAgICAgcHJpbnRfZW5kbGluZShcIlNhdmluZy4uLlwiKTtcbiAgICAgICAgICBzY2hlZHVsZV9hY3Rpb24oVXBkYXRlLlNhdmUpO1xuICAgICAgICB9O1xuICAgICAgICBpZiAoc2Nyb2xsX3RvX2NhcmV0LmNvbnRlbnRzKSB7XG4gICAgICAgICAgc2Nyb2xsX3RvX2NhcmV0IDo9IGZhbHNlO1xuICAgICAgICAgIEpzVXRpbC5zY3JvbGxfY3Vyc29yX2ludG9fdmlld19pZl9uZWVkZWQoKTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgKTtcbiAgfTtcbn07XG5cbnN3aXRjaCAoSnNVdGlsLkZyYWdtZW50LmdldF9jdXJyZW50KCkpIHtcbnwgU29tZShcImRlYnVnXCIpID0+IERlYnVnTW9kZS5nbygpXG58IF8gPT5cbiAgSW5jcl9kb20uU3RhcnRfYXBwLnN0YXJ0KFxuICAgIChtb2R1bGUgQXBwKSxcbiAgICB+ZGVidWc9ZmFsc2UsXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkPVwiY29udGFpbmVyXCIsXG4gICAgfmluaXRpYWxfbW9kZWw9TW9kZWwubG9hZCgpLFxuICApXG59O1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJtYWluLmJjLmpzIiwic291cmNlUm9vdCI6IiIsIm5hbWVzIjpbIkRlZmF1bHRMb2NhbGUiLCJkZWZhdWx0U3RyZnRpbWUiLCJTdHJmdGltZSIsImlzQ29tbW9uSlMiLCJtb2R1bGUiLCJuYW1lc3BhY2UiLCJhZGFwdGVkU3RyZnRpbWUiLCJkZXByZWNhdGVkU3RyZnRpbWUiLCJqb29fZ2xvYmFsX29iamVjdCIsInRoaXMiLCJldmFsIiwiX3JlcXVpcmUiLCJfZGVwcmVjYXRpb25XYXJuaW5ncyIsImRlcHJlY2F0aW9uV2FybmluZyIsIm5hbWUiLCJpbnN0ZWFkIiwiY29uc29sZSIsImRlcHJlY2F0ZWRTdHJmdGltZVRaIiwiZGVwcmVjYXRlZFN0cmZ0aW1lVVRDIiwiZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkIiwiYWRhcHRGb3J3YXJkcyIsImZuIiwiZm10IiwiZCIsImxvY2FsZSIsInVuZGVmaW5lZCIsInN0cmZ0aW1lIiwidGltZXpvbmUiLCJudWxsIiwidXRjU3RyZnRpbWUiLCJEYXRlIiwiY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJ1c2VVdGNUaW1lem9uZSIsIl9sb2NhbGUiLCJfY3VzdG9tVGltZXpvbmVPZmZzZXQiLCJfdXNlVXRjQmFzZWREYXRlIiwiX2NhY2hlZERhdGVUaW1lc3RhbXAiLCJfY2FjaGVkRGF0ZSIsIl9zdHJmdGltZSIsImZvcm1hdCIsImRhdGUiLCJ0aW1lc3RhbXAiLCJjdXJyZW50VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IiLCJfcHJvY2Vzc0Zvcm1hdCIsInJlc3VsdFN0cmluZyIsInBhZGRpbmciLCJpc0luU2NvcGUiLCJsZW5ndGgiLCJleHRlbmRlZFRaIiwiaSIsImN1cnJlbnRDaGFyQ29kZSIsInBhZFRpbGwyIiwiTWF0aCIsImhvdXJzMTIiLCJwYWRUaWxsMyIsIndlZWtOdW1iZXIiLCJ0elN0cmluZyIsInkiLCJkYXkiLCJTdHJpbmciLCJvcmRpbmFsIiwib2ZmIiwic2lnbiIsInNlcCIsImhvdXJzIiwibWlucyIsInVzZVV0Y0Jhc2VkRGF0ZSIsInRpbWV6b25lVHlwZSIsInBhcnNlSW50IiwibWludXRlcyIsIm51bWJlclRvUGFkIiwicGFkZGluZ0NoYXIiLCJob3VyIiwiZmlyc3RXZWVrZGF5Iiwid2Vla2RheSIsImZpcnN0RGF5T2ZZZWFyVXRjIiwiZGF0ZVV0YyIsInlkYXkiLCJ3ZWVrTnVtIiwibnVtYmVyIiwiaWkiLCJmIiwiZXhwb3J0cyIsImRlZmluZSIsImciLCJ3aW5kb3ciLCJnbG9iYWwiLCJzZWxmIiwiZSIsInQiLCJuIiwiciIsInMiLCJvIiwidSIsImEiLCJyZXF1aXJlIiwiRXJyb3IiLCJsIiwiY3JlYXRlRWxlbWVudCIsImRpZmYiLCJ1bmRlZiIsIm5hdGl2ZVNwbGl0IiwiY29tcGxpYW50RXhlY05wY2ciLCJzdHIiLCJzZXBhcmF0b3IiLCJsaW1pdCIsIk9iamVjdCIsIm91dHB1dCIsImZsYWdzIiwibGFzdExhc3RJbmRleCIsIlJlZ0V4cCIsInNlcGFyYXRvcjIiLCJtYXRjaCIsImxhc3RJbmRleCIsImxhc3RMZW5ndGgiLCJhcmd1bWVudHMiLCJBcnJheSIsIk9uZVZlcnNpb25Db25zdHJhaW50IiwiTVlfVkVSU0lPTiIsImhhc2hLZXkiLCJFdlN0b3JlIiwiZWxlbSIsImhhc2giLCJyb290IiwiSW5kaXZpZHVhbCIsImtleSIsInZhbHVlIiwiT25lVmVyc2lvbiIsIm1vZHVsZU5hbWUiLCJ2ZXJzaW9uIiwiZGVmYXVsdFZhbHVlIiwiZW5mb3JjZUtleSIsInZlcnNpb25WYWx1ZSIsInRvcExldmVsIiwibWluRG9jIiwiZG9jdW1lbnQiLCJkb2NjeSIsImRvbVdhbGsiLCJDb21tZW50IiwiRE9NVGV4dCIsIkRPTUVsZW1lbnQiLCJEb2N1bWVudEZyYWdtZW50IiwiRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJEb2N1bWVudCIsInByb3RvIiwidGFnTmFtZSIsIm5zIiwiZmFtaWx5IiwiZGF0YSIsImlkIiwicmVzdWx0Iiwibm9kZSIsIm93bmVyIiwic2VyaWFsaXplTm9kZSIsImh0bWxucyIsImNoaWxkIiwibmVlZGxlIiwiaW5kZXgiLCJwcmVmaXgiLCJsb2NhbE5hbWUiLCJjb2xvblBvc2l0aW9uIiwiYXR0cmlidXRlcyIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiZWxlbXMiLCJub2RlQ2xhc3NOYW1lIiwibm9kZUNsYXNzZXMiLCJpdGVtIiwiZWxlbWVudCIsImN1cnJlbnQiLCJsZWZ0IiwicmlnaHQiLCJ0eXBlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJsaXN0ZW5lciIsImV2IiwibGlzdGVuZXJzIiwibGlzdCIsInNsaWNlIiwiaXRlcmF0aXZlbHlXYWxrIiwibm9kZXMiLCJjYiIsInJldCIsInZvaWRFbGVtZW50cyIsImVzY2FwZVRleHQiLCJzZXJpYWxpemVFbGVtZW50Iiwic3RyaW5ncyIsInRhZ25hbWUiLCJwcm9wZXJ0aWVzIiwiZGF0YXNldGlmeSIsImlzUHJvcGVydHkiLCJzdHlsaWZ5Iiwic3R5bGVzIiwiYXR0ciIsImMiLCJkcyIsInByb3BzIiwic3RyaW5naWZ5IiwidHVwbGUiLCJlc2NhcGVBdHRyaWJ1dGVWYWx1ZSIsImF0dHJpYnV0ZSIsInByb3AiLCJ4IiwibmF0aXZlSXNBcnJheSIsInRvU3RyaW5nIiwiaXNBcnJheSIsIm9iaiIsInBhdGNoIiwiaXNPYmplY3QiLCJpc0hvb2siLCJhcHBseVByb3BlcnRpZXMiLCJwcmV2aW91cyIsInByb3BOYW1lIiwicHJvcFZhbHVlIiwicmVtb3ZlUHJvcGVydHkiLCJwYXRjaE9iamVjdCIsInByZXZpb3VzVmFsdWUiLCJhdHRyTmFtZSIsImF0dHJWYWx1ZSIsImdldFByb3RvdHlwZSIsInJlcGxhY2VyIiwiayIsImlzVk5vZGUiLCJpc1ZUZXh0IiwiaXNXaWRnZXQiLCJoYW5kbGVUaHVuayIsInZub2RlIiwib3B0cyIsImRvYyIsIndhcm4iLCJjaGlsZHJlbiIsImNoaWxkTm9kZSIsIm5vQ2hpbGQiLCJkb21JbmRleCIsInJvb3ROb2RlIiwidHJlZSIsImluZGljZXMiLCJhc2NlbmRpbmciLCJyZWN1cnNlIiwicm9vdEluZGV4IiwiaW5kZXhJblJhbmdlIiwidkNoaWxkcmVuIiwiY2hpbGROb2RlcyIsInZDaGlsZCIsIm5leHRJbmRleCIsIm1pbkluZGV4IiwibWF4SW5kZXgiLCJjdXJyZW50SW5kZXgiLCJjdXJyZW50SXRlbSIsImIiLCJWUGF0Y2giLCJ1cGRhdGVXaWRnZXQiLCJhcHBseVBhdGNoIiwidnBhdGNoIiwiZG9tTm9kZSIsInJlbmRlck9wdGlvbnMiLCJ2Tm9kZSIsInJlbW92ZU5vZGUiLCJpbnNlcnROb2RlIiwic3RyaW5nUGF0Y2giLCJ3aWRnZXRQYXRjaCIsInZOb2RlUGF0Y2giLCJyZW9yZGVyQ2hpbGRyZW4iLCJyZXBsYWNlUm9vdCIsInBhcmVudE5vZGUiLCJkZXN0cm95V2lkZ2V0IiwibmV3Tm9kZSIsImxlZnRWTm9kZSIsInZUZXh0Iiwid2lkZ2V0IiwidXBkYXRpbmciLCJ3IiwibW92ZXMiLCJrZXlNYXAiLCJyZW1vdmUiLCJpbnNlcnQiLCJqIiwib2xkUm9vdCIsIm5ld1Jvb3QiLCJyZW5kZXIiLCJwYXRjaE9wIiwicGF0Y2hlcyIsInBhdGNoUmVjdXJzaXZlIiwicGF0Y2hJbmRpY2VzIiwib3duZXJEb2N1bWVudCIsIm5vZGVJbmRleCIsInBhdGNoTGlzdCIsIk51bWJlciIsIkF0dHJpYnV0ZUhvb2siLCJwcmV2IiwibmV4dCIsIkV2SG9vayIsInByb3BlcnR5TmFtZSIsImVzIiwiU29mdFNldEhvb2siLCJWTm9kZSIsIlZUZXh0IiwiaXNWVGh1bmsiLCJwYXJzZVRhZyIsInNvZnRTZXRIb29rIiwiZXZIb29rIiwiaCIsInRhZyIsImlzQ2hpbGRyZW4iLCJ0cmFuc2Zvcm1Qcm9wZXJ0aWVzIiwiYWRkQ2hpbGQiLCJpc0NoaWxkIiwiVW5leHBlY3RlZFZpcnR1YWxFbGVtZW50IiwiZXJyIiwiZXJyb3JTdHJpbmciLCJKU09OIiwic3BsaXQiLCJjbGFzc0lkU3BsaXQiLCJub3RDbGFzc0lkIiwibm9JZCIsInRhZ1BhcnRzIiwicGFydCIsIkRFRkFVTFRfTkFNRVNQQUNFIiwiRVZfTkFNRVNQQUNFIiwiWExJTktfTkFNRVNQQUNFIiwiWE1MX05BTUVTUEFDRSIsIlNWR19QUk9QRVJUSUVTIiwiU1ZHQXR0cmlidXRlTmFtZXNwYWNlIiwiYXR0cmlidXRlSG9vayIsIlNWR19OQU1FU1BBQ0UiLCJzdmciLCJpc1RodW5rIiwicmVuZGVyZWRBIiwicmVuZGVyZWRCIiwicmVuZGVyVGh1bmsiLCJ0aHVuayIsInJlbmRlcmVkVGh1bmsiLCJob29rIiwiaXNWaXJ0dWFsTm9kZSIsImlzVmlydHVhbFRleHQiLCJpc1ZIb29rIiwiVmlydHVhbE5vZGUiLCJub1Byb3BlcnRpZXMiLCJub0NoaWxkcmVuIiwiY291bnQiLCJkZXNjZW5kYW50cyIsImhhc1dpZGdldHMiLCJoYXNUaHVua3MiLCJkZXNjZW5kYW50SG9va3MiLCJob29rcyIsInByb3BlcnR5IiwiVmlydHVhbFBhdGNoIiwiVmlydHVhbFRleHQiLCJ0ZXh0IiwiZGlmZlByb3BzIiwiYUtleSIsImFWYWx1ZSIsImJWYWx1ZSIsIm9iamVjdERpZmYiLCJiS2V5Iiwid2FsayIsImFwcGx5IiwiYXBwbHlDbGVhciIsInRodW5rcyIsImNsZWFyU3RhdGUiLCJhcHBlbmRQYXRjaCIsInByb3BzUGF0Y2giLCJkaWZmQ2hpbGRyZW4iLCJhQ2hpbGRyZW4iLCJvcmRlcmVkU2V0IiwicmVvcmRlciIsImJDaGlsZHJlbiIsImFMZW4iLCJiTGVuIiwibGVuIiwibGVmdE5vZGUiLCJyaWdodE5vZGUiLCJ1bmhvb2siLCJkZXN0cm95V2lkZ2V0cyIsInRodW5rUGF0Y2giLCJoYXNQYXRjaGVzIiwidW5kZWZpbmVkS2V5cyIsImJDaGlsZEluZGV4Iiwia2V5SW5kZXgiLCJiS2V5cyIsImJGcmVlIiwiYUNoaWxkSW5kZXgiLCJhS2V5cyIsImFGcmVlIiwibmV3Q2hpbGRyZW4iLCJmcmVlSW5kZXgiLCJmcmVlQ291bnQiLCJkZWxldGVkSXRlbXMiLCJhSXRlbSIsIml0ZW1JbmRleCIsImxhc3RGcmVlSW5kZXgiLCJuZXdJdGVtIiwic2ltdWxhdGUiLCJzaW11bGF0ZUluZGV4IiwicmVtb3ZlcyIsImluc2VydHMiLCJzaW11bGF0ZUl0ZW0iLCJ3YW50ZWRJdGVtIiwiYXJyIiwia2V5cyIsImZyZWUiLCJ2ZG9tIiwiR2VuZXJpY0hvb2siLCJpbml0IiwidXBkYXRlIiwiZGVzdHJveSIsImV4dHJhIiwiaG9va19zdGF0ZV9rZXkiLCJTeW1ib2wiLCJzdGF0ZSIsImZyb20iLCJ0byIsImNhbWxfaW50NjRfaXNfemVybyIsImNhbWxfc3RyX3JlcGVhdCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiY2FtbF9yYWlzZV9jb25zdGFudCIsImNhbWxfZ2xvYmFsX2RhdGEiLCJjYW1sX3JhaXNlX3plcm9fZGl2aWRlIiwiTWxJbnQ2NCIsImxvIiwibWkiLCJoaSIsInhoaSIsIm9mZnNldCIsIm1vZHVsdXMiLCJkaXZpc29yIiwicXVvdGllbnQiLCJxIiwiY2FtbF9pbnQ2NF9vZl9pbnQzMiIsImNhbWxfaW50NjRfdG9faW50MzIiLCJjYW1sX2ludDY0X2lzX25lZ2F0aXZlIiwiY2FtbF9pbnQ2NF9uZWciLCJjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIiwianNvb19zeXNfZ2V0ZW52IiwicHJvY2VzcyIsImdsb2JhbFRoaXMiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImNhbWxfZmluaXNoX2Zvcm1hdHRpbmciLCJyYXdidWZmZXIiLCJidWZmZXIiLCJjYW1sX2ludDY0X2Zvcm1hdCIsIndiYXNlIiwiY3Z0YmwiLCJwIiwiY2FtbF9leHBtMV9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJjMSIsImMyIiwidiIsImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIiwiZnNfbm9kZV9zdXBwb3J0ZWQiLCJtYWtlX3BhdGhfaXNfYWJzb2x1dGUiLCJwb3NpeCIsInBhdGgiLCJ3aW4zMiIsInNwbGl0RGV2aWNlUmUiLCJkZXZpY2UiLCJpc1VuYyIsIkJvb2xlYW4iLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsImNhbWxfY3VycmVudF9kaXIiLCJjYW1sX21ha2VfcGF0aCIsImNvbXAwIiwiY29tcCIsIm5jb21wIiwiY2FtbF91dGY4X29mX3V0ZjE2IiwiY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmciLCJ1bml4X2Vycm9yIiwibWFrZV91bml4X2Vycl9hcmdzIiwiY29kZSIsInN5c2NhbGwiLCJlcnJubyIsInZhcmlhbnQiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMiLCJNbEJ5dGVzIiwiY29udGVudHMiLCJjb250ZW50IiwiY2FtbF9pc19tbF9ieXRlcyIsImNhbWxfaXNfbWxfc3RyaW5nIiwiY2FtbF9ieXRlc19vZl9hcnJheSIsIlVpbnQ4QXJyYXkiLCJjYW1sX2J5dGVzX29mX2pzYnl0ZXMiLCJjYW1sX2J5dGVzX29mX3N0cmluZyIsImNhbWxfcmFpc2Vfc3lzX2Vycm9yIiwiY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUiLCJjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkiLCJjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzIiwiY2FtbF9jcmVhdGVfYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2xlbmd0aCIsImNhbWxfYmxpdF9ieXRlcyIsInMxIiwiaTEiLCJzMiIsImkyIiwiTWxGaWxlIiwiTWxGYWtlRmlsZSIsIm9sZCIsImJ1ZiIsInBvcyIsImNsZW4iLCJuZXdfc3RyIiwib2xkX2RhdGEiLCJNbEZha2VGZCIsImZpbGUiLCJNbEZha2VEZXZpY2UiLCJyZXMiLCJuYW1lX3NsYXNoIiwibW9kZSIsInJhaXNlX3VuaXgiLCJwYXJlbnQiLCJzZWVuIiwibSIsImVudHJ5Iiwib2siLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJidWZfb2Zmc2V0IiwicmVhZCIsIk1sTm9kZURldmljZSIsImNvbnN0cyIsImlzQ2hhcmFjdGVyRGV2aWNlIiwianNfc3RhdHMiLCJ0b19kaXIiLCJ0YXJnZXQiLCJsaW5rIiwiZmlsZV9raW5kIiwiY2FtbF9nZXRfcm9vdCIsImNhbWxfZmFpbHdpdGgiLCJjYW1sX3Jvb3QiLCJqc29vX21vdW50X3BvaW50IiwicmVzb2x2ZV9mc19kZXZpY2UiLCJjYW1sX3N5c19pc19kaXJlY3RvcnkiLCJjYW1sX3JhaXNlX25vdF9mb3VuZCIsImNhbWxfc3lzX2dldGVudiIsInNoaWZ0X3JpZ2h0X25hdCIsIm5hdDEiLCJvZnMxIiwibGVuMSIsIm5hdDIiLCJvZnMyIiwibmJpdHMiLCJ3cmFwIiwiY2FtbF9ncl9zdGF0ZSIsImNhbWxfZ3Jfc3RhdGVfZ2V0IiwiY2FtbF9ncl9wb2ludF9jb2xvciIsImltIiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmUiLCJNbE9iamVjdFRhYmxlIiwiTmFpdmVMb29rdXAiLCJvYmpzIiwiY2FtbF9zeXNfcmVuYW1lIiwib19yb290Iiwibl9yb290IiwiY2FtbF9sb2cxMF9mbG9hdCIsImNhbWxfcnVudGltZV93YXJuaW5ncyIsImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3MiLCJib29sIiwiY2FtbF9jbGFzc2lmeV9mbG9hdCIsImlzRmluaXRlIiwiaXNOYU4iLCJjYW1sX21sX2NoYW5uZWxzIiwiY2FtbF9yZWZpbGwiLCJjaGFuIiwic3RyX2EiLCJucmVhZCIsImNhbWxfYXJyYXlfYm91bmRfZXJyb3IiLCJjYW1sX21sX2lucHV0X3NjYW5fbGluZSIsImNoYW5pZCIsInByZXZfbWF4IiwiY2FtbF9nY19taW5vciIsInVuaXQiLCJjb3JlX2djX2hlYXBfY2h1bmtzIiwiY2FtbF9tbF9jb25kaXRpb25fbmV3IiwiY2FtbF9iYV90b190eXBlZF9hcnJheSIsImJhIiwiY2FtbF9tbF9pbnB1dF9ibG9jayIsImF2YWlsIiwiY2FtbF9tbF9pbnB1dF9iaWdhcnJheSIsImNhbWxfaW50NjRfb2ZfYnl0ZXMiLCJjYW1sX2JhX3VpbnQ4X2dldDY0IiwiaTAiLCJvZnMiLCJiMSIsImIyIiwiYjMiLCJiNCIsImI1IiwiYjYiLCJiNyIsImI4IiwiY2FtbF9pbnQ2NF90b19ieXRlcyIsImNhbWxfaW50NjRfbWFyc2hhbCIsIndyaXRlciIsInNpemVzIiwiY2FtbF9iYV9udW1fZGltcyIsImNhbWxfYmFfZ2V0XzEiLCJjYW1sX2ludF9jb21wYXJlIiwiYmlnc3RyaW5nYWZfbWVtY21wX2JpZ3N0cmluZyIsImJhMSIsImJhMV9vZmYiLCJiYTIiLCJiYTJfb2ZmIiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsInBvczEiLCJieXRlczIiLCJwb3MyIiwiYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWIiLCJzcmMiLCJzcmNfcG9zIiwiZHN0IiwiZHN0X3BvcyIsImNhbWxfd3JhcF9leGNlcHRpb24iLCJjYW1sX2NyZWF0ZV9maWxlIiwianNvb19jcmVhdGVfZmlsZSIsImNhbWxfZnNfaW5pdCIsInRtcCIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfc3RyaW5nIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsIm51bV9kaWdpdHNfbmF0IiwibmF0IiwiY2FtbF9oYXNoX25hdCIsImNhbWxfY2FsbF9nZW4iLCJhcmdzTGVuIiwibmFyZ3MiLCJleHRyYV9hcmdzIiwiY2FtbF9jYWxsYmFjayIsImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHMiLCJjYW1sX3N5c19jaGRpciIsImRpciIsImNhbWxfb2JqX3VwZGF0ZV90YWciLCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmciLCJjYW1sX2djX2NvdW50ZXJzIiwiY2FtbF9ncl9zeW5jaHJvbml6ZSIsImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhIiwic3RyMSIsImJpZ3N0cmluZ2FmX2JsaXRfZnJvbV9ieXRlcyIsInNyY19vZmYiLCJkc3Rfb2ZmIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwicjMiLCJyMiIsInIxIiwiY2FtbF9iYV9zZXJpYWxpemUiLCJzeiIsImNvbXBsZXgiLCJjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50Iiwia2luZCIsImNhbWxfYmFfY3JlYXRlX2J1ZmZlciIsInNpemUiLCJ2aWV3IiwiRmxvYXQ2NEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIiwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIiwiTmFOIiwiY2FtbF9iYV9nZXRfc2l6ZSIsImRpbXMiLCJuX2RpbXMiLCJjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSIsImNhbWxfaW50NjRfaGkzMiIsImNhbWxfaW50NjRfbG8zMiIsImNhbWxfYmFfY3VzdG9tX25hbWUiLCJNbF9CaWdhcnJheSIsImxheW91dCIsInJlIiwidG90YWwiLCJrMSIsImsyIiwiTWxfQmlnYXJyYXlfY18xXzEiLCJjYW1sX2JhX2NyZWF0ZV91bnNhZmUiLCJzaXplX3Blcl9lbGVtZW50IiwiY2FtbF9iYV9kZXNlcmlhbGl6ZSIsInJlYWRlciIsIm51bV9kaW1zIiwic2l6ZV9kaW0iLCJzaXplX2RpbV9oaSIsInNpemVfZGltX2xvIiwic2l4dHkiLCJpbnQ2NCIsImNhbWxfYmFfY29tcGFyZSIsImNhbWxfaGFzaF9taXhfaW50NjQiLCJjYW1sX2hhc2hfbWl4X2Zsb2F0IiwidjAiLCJjYW1sX2JhX2hhc2giLCJudW1fZWx0cyIsImNhbWxfaW50MzJfdW5tYXJzaGFsIiwiY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsIiwiY2FtbF9pbnQ2NF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X2NvbXBhcmUiLCJjYW1sX2ludDY0X2hhc2giLCJjYW1sX2N1c3RvbV9vcHMiLCJjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20iLCJjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b20iLCJudW0iLCJjdXN0b20iLCJzd2FwIiwiY2FtbF9jb21wYXJlX3ZhbF90YWciLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImJpZ3N0cmluZ19maW5kIiwiYnMiLCJjaHIiLCJjYW1sX2pzX2h0bWxfZW50aXRpZXMiLCJlbnRpdHkiLCJ0ZW1wIiwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldCIsImNhbWxfaW50NjRfb2ZfZmxvYXQiLCJjYW1sX21sX2NoYW5uZWxfc2l6ZV82NCIsImNhbWxfYmFfc2V0XzIiLCJjYW1sX2FyZ3YiLCJtYWluIiwiYXJndiIsImFyZ3MyIiwiY2FtbF9leGVjdXRhYmxlX25hbWUiLCJjYW1sX2pzX2V2YWxfc3RyaW5nIiwic2VyaWFsaXplX25hdCIsImNhbWxfbWVtcHJvZl9zZXQiLCJfY29udHJvbCIsImNhbWxfc3lzX2V4aXQiLCJjYW1sX2NoYW5uZWxfZGVzY3JpcHRvciIsImNhbWxfanNfZnJvbV9hcnJheSIsImNhbWxfYmFfcmVzaGFwZSIsInZpbmQiLCJuZXdfZGltIiwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyciIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQiLCJleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3QiLCJ2b3V0cHV0IiwidnN0ZG91dCIsInZzdGRlcnIiLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlIiwianNuYW1lIiwiY2FtbF9nZXRfZ2xvYmFsX2RhdGEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIiwiY2FtbF9iYV91aW50OF9nZXQxNiIsImJpZ3N0cmluZ19pc19tbWFwcGVkX3N0dWIiLCJjYW1sX2NoZWNrX2JvdW5kIiwiYXJyYXkiLCJjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZyIsImJpZ3N0cmluZyIsImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWIiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiY2FtbF9NRDVVcGRhdGUiLCJjdHgiLCJpbnB1dCIsImlucHV0X2xlbiIsImluX2J1ZiIsImlucHV0X3BvcyIsIm1pc3NpbmciLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbCIsImN1cnNvciIsImNhbGxiYWNrcyIsImNhbWxfZnJlc2hfb29faWQiLCJjYW1sX2ludDY0X3RvX2Zsb2F0IiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQiLCJfdW5pdCIsImx4b3JfZGlnaXRfbmF0IiwiY2FtbF9vYmpfYWRkX29mZnNldCIsImNhbWxfZmluYWxfcmVsZWFzZSIsImNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSIsImNhbWxfanNfdG9fYXJyYXkiLCJjYW1sX3N5c19pc19yZWd1bGFyX2ZpbGUiLCJjYW1sX2dyX3Bsb3QiLCJjb2xvciIsImNhbWxfYnl0ZXNfc2V0NjQiLCJpNjQiLCJjYW1sX3N0cmluZ19zZXQxNiIsImkxNiIsImNhbWxfaW50NjRfYnN3YXAiLCJjYW1sX2djX21ham9yIiwiY2FtbF9sZXhfYXJyYXkiLCJjYW1sX2xleF9lbmdpbmUiLCJ0YmwiLCJzdGFydF9zdGF0ZSIsImxleGJ1ZiIsImxleF9idWZmZXIiLCJsZXhfYnVmZmVyX2xlbiIsImxleF9zdGFydF9wb3MiLCJsZXhfY3Vycl9wb3MiLCJsZXhfbGFzdF9wb3MiLCJsZXhfbGFzdF9hY3Rpb24iLCJsZXhfZW9mX3JlYWNoZWQiLCJsZXhfYmFzZSIsImxleF9iYWNrdHJrIiwibGV4X2RlZmF1bHQiLCJsZXhfdHJhbnMiLCJsZXhfY2hlY2siLCJiYXNlIiwiYmFja3RyayIsImNhbWxfc3lzX2ZpbGVfZXhpc3RzIiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfYXJyYXlfc3ViIiwiY2FtbF9ieXRlc19lcXVhbCIsImNhbWxfZ3Jfc2l6ZV94IiwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHoiLCJjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIiwiY2FtbF9hdG9taWNfZmV0Y2hfYWRkIiwicmVmIiwib3NfdHlwZSIsImNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4iLCJjYW1sX2Nvc2hfZmxvYXQiLCJNbE11dGV4IiwiY2FtbF9tbF9tdXRleF9uZXciLCJjYW1sX2VwaGVfa2V5X29mZnNldCIsImNhbWxfZXBoZV9jaGVja19rZXkiLCJ3ZWFrIiwiY2FtbF9oYXNoX21peF9maW5hbCIsImNhbWxfZ3JfdGV4dF9zaXplIiwidHh0IiwiY2FtbF9sZXhfcnVuX21lbSIsIm1lbSIsImN1cnJfcG9zIiwiY2FtbF9sZXhfcnVuX3RhZyIsImNhbWxfbmV3X2xleF9lbmdpbmUiLCJsZXhfbWVtIiwibGV4X2Jhc2VfY29kZSIsImxleF9iYWNrdHJrX2NvZGUiLCJsZXhfZGVmYXVsdF9jb2RlIiwibGV4X3RyYW5zX2NvZGUiLCJsZXhfY2hlY2tfY29kZSIsImxleF9jb2RlIiwicGNfb2ZmIiwicHN0YXRlIiwiYmFzZV9jb2RlIiwiY2FtbF9iYV91aW50OF9zZXQ2NCIsImNhbWxfc3lzX2V4ZWN1dGFibGVfbmFtZSIsImNhbWxfbGVzc2VxdWFsIiwiY2FtbF9hY29zaF9mbG9hdCIsImNhbWxfTUQ1SW5pdCIsIkFycmF5QnVmZmVyIiwiYjMyIiwiVWludDMyQXJyYXkiLCJjYW1sX21sX2ZsdXNoIiwiY2FtbF9zZWVrX291dCIsImNhbWxfbWxfc2Vla19vdXRfNjQiLCJjb21wYXJlX25hdF9yZWFsIiwiY2FtbF9nY19zZXQiLCJjYW1sX2pzX2dldCIsImpzX3BlcmZvcm1hbmNlIiwiX2UiLCJqc19wcm9mX21hcmsiLCJjYW1sX3VuaXhfaXNhdHR5IiwiZmlsZURlc2NyaXB0b3IiLCJ0dHkiLCJjYW1sX21sX3NldF9idWZmZXJlZCIsImNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyIiwiY2FtbF9tbF9ieXRlc19jb250ZW50IiwiY2FtbF9oYXNoX21peF9ieXRlcyIsImNhbWxfaGFzaCIsInNlZWQiLCJxdWV1ZSIsInJkIiwid3IiLCJCYXNlX2hhc2hfc3RyaW5nIiwiY2FtbF9nY19jb21wYWN0aW9uIiwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YiIsImZsb2F0NjQiLCJmbG9hdDY0X3VpbnQ4IiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiY2FtbF9zeXNfZmRzIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9zeXNfY2xvc2UiLCJjYW1sX21sX2Nsb3NlX2NoYW5uZWwiLCJjb3JlX21kNV9mZCIsImljIiwiY2FtbF9lcGhlX2dldF9rZXkiLCJjYW1sX3VuaXhfbG9jYWx0aW1lIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YiIsImV4cG9uZW50Iiwib25lIiwibXVsIiwiY2FtbF9hdG9taWNfZXhjaGFuZ2UiLCJjYW1sX3N5c19pc2F0dHkiLCJfY2hhbiIsImlzX2RpZ2l0X3plcm8iLCJjYW1sX3VuaXhfbHN0YXQiLCJjYW1sX3VuaXhfbHN0YXRfNjQiLCJjYW1sX2pzX3NldCIsImNhbWxfYXJyYXlfZ2V0IiwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjIiwiY29udCIsImNhbWxfdW5peF9ybWRpciIsImNhbWxfbG9nMl9mbG9hdCIsImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCIsImNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lIiwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YiIsImNhbWxfc3BhY2V0aW1lX29ubHlfd29ya3NfZm9yX25hdGl2ZV9jb2RlIiwiY2FtbF9pbnQ2NF9zdWIiLCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhIiwiYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IiwidGEiLCJiaW5fcHJvdF9ibGl0X2J1Zl9zdHViIiwiY2FtbF9zZWVrX2luIiwiY2FtbF9tbF9zZWVrX2luXzY0IiwiY2FtbF9kb21haW5faWQiLCJjYW1sX21sX211dGV4X3VubG9jayIsImNhbWxfZG9tYWluX2xhdGVzdF9pZHgiLCJjYW1sX2RvbWFpbl9zcGF3biIsIm11dGV4IiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdCIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZCIsImNhbWxfYmFfZGltIiwiY2FtbF9iYV9kaW1fMSIsImNhbWxfanNfbWV0aF9jYWxsIiwiY2FtbF9lcGhlX2RhdGFfb2Zmc2V0IiwiY2FtbF93ZWFrX2NyZWF0ZSIsImNhbWxfZXBoZV9jcmVhdGUiLCJiaWdzdHJpbmdfZGVzdHJveV9zdHViIiwidl9ic3RyIiwiYmlnc3RyaW5nX3JlYWxsb2MiLCJuZXdfZGF0YSIsIm5ld19iaWdzdHJpbmciLCJjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIiwiY2FtbF90cmFtcG9saW5lIiwiY2FtbF9tYXliZV9wcmludF9zdGF0cyIsImNhbWxfYnl0ZXNfdW5zYWZlX2dldCIsImNhbWxfYnl0ZXNfZ2V0NjQiLCJjYW1sX2N1c3RvbV9ldmVudF9pbmRleCIsImNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlciIsImV2ZW50X25hbWUiLCJldmVudF90YWciLCJldmVudF90eXBlIiwiY2FtbF91bml4X2hhc19zeW1saW5rIiwiY2FtbF9lcGhlX3NldF9rZXkiLCJjYW1sX2VwaGVfdW5zZXRfa2V5IiwiY2FtbF93ZWFrX3NldCIsImNhbWxfc3lzX3JlbW92ZSIsImNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yIiwiY2FtbF9zdHJpbmdfZ2V0MzIiLCJjYW1sX2J5dGVzX2dldCIsImNhbWxfaHlwb3RfZmxvYXQiLCJjYW1sX2pzX2NhbGwiLCJjYW1sX3N5c19jb25zdF9tYXhfd29zaXplIiwiY2FtbF91bml4X2luZXRfYWRkcl9vZl9zdHJpbmciLCJCYXNlX2FtX3Rlc3RpbmciLCJjYW1sX2J5dGVzX2xlc3N0aGFuIiwiYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsImNhbWxfc3lzX2dldGN3ZCIsImNhbWxfaW50NjRfYWRkIiwiY2FtbF9pbnQ2NF9tdWwiLCJjYW1sX2ludDY0X3VsdCIsImNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSIsImNhbWxfcGFyc2VfZGlnaXQiLCJjYW1sX2ludDY0X29mX3N0cmluZyIsImJhc2U2NCIsInRocmVzaG9sZCIsImNhbWxfYmFfc2V0XzEiLCJjYW1sX2ludDY0X3hvciIsImNhbWxfaW50NjRfb3IiLCJjYW1sX2x4bV9uZXh0Iiwic2hpZnRfbCIsInNoaWZ0X3IiLCJvciIsInhvciIsInJvdGwiLCJnZXQiLCJzZXQiLCJNIiwiZGFiYSIsInEwIiwicTEiLCJzdCIsIngwIiwiY2FtbF9zeXNfY29uc3RfYmlnX2VuZGlhbiIsImNhbWxfbGlzdF90b19qc19hcnJheSIsImNhbWxfb3V0cHV0X3ZhbCIsIldyaXRlciIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImludGVybl9vYmpfdGFibGUiLCJtZW1vIiwiZXhpc3Rpbmdfb2Zmc2V0IiwiZXh0ZXJuX3JlYyIsIm9wcyIsInN6XzMyXzY0IiwiaGVhZGVyX3BvcyIsIm9sZF9wb3MiLCJ0eXBlX29mX3YiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImJpZ3N0cmluZ19tZW1jbXBfc3R1YiIsInZfczEiLCJ2X3MxX3BvcyIsInZfczIiLCJ2X3MyX3BvcyIsInZfbGVuIiwiY2FtbF9ncl9vcGVuX3N1YndpbmRvdyIsIlVJbnQ4QXJyYXlSZWFkZXIiLCJjYW1sX21hcnNoYWxfZGF0YV9zaXplIiwicmVhZHZscSIsIm92ZXJmbG93IiwibjciLCJoZWFkZXJfbGVuIiwiZGF0YV9sZW4iLCJNbFN0cmluZ1JlYWRlciIsImNhbWxfZGVjb21wcmVzc19pbnB1dCIsImNhbWxfZmxvYXRfb2ZfYnl0ZXMiLCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIiwibWFnaWMiLCJjb21wcmVzc2VkIiwidW5jb21wcmVzc2VkX2RhdGFfbGVuIiwibnVtX29iamVjdHMiLCJfc2l6ZV8zMiIsIl9zaXplXzY0Iiwib2JqX2NvdW50ZXIiLCJpbnRlcm5fcmVjIiwiaGVhZGVyIiwiZXhwZWN0ZWRfc2l6ZSIsImNhbWxfc3RyaW5nX29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZSIsImJsb2NrIiwiY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAiLCJjYW1sX2F0b21pY19jYXMiLCJjYW1sX2NvcHlzaWduX2Zsb2F0IiwiY2FtbF9ncl9zZXRfdGV4dF9zaXplIiwiY2FtbF9hdG9taWNfbG9hZCIsImNhbWxfbWQ1X2J5dGVzIiwiY2FtbF9iYV9zZXRfZ2VuZXJpYyIsImNhbWxfbWxfY29uZGl0aW9uX3dhaXQiLCJtdXRleHQiLCJjYW1sX3N0cmluZ19sZXNzZXF1YWwiLCJjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwiLCJjYW1sX25leHRhZnRlcl9mbG9hdCIsImJpdHMiLCJjYW1sX2dyX3NpemVfeSIsImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnMiLCJjYW1sX3Bvc19pbiIsImNhbWxfbWxfcG9zX2luIiwiY2FtbF9pbnQ2NF9hbmQiLCJCYXNlX2ludF9tYXRoX2ludDY0X3Bvd19zdHViIiwiY2FtbF9zeXNfY29uc3Rfd29yZF9zaXplIiwiY2FtbF9ydW50aW1lX2V2ZW50c19wYXVzZSIsImNhbWxfdW5peF91bmxpbmsiLCJjYW1sX2JhX2NyZWF0ZSIsImRpbXNfbWwiLCJiaWdzdHJpbmdfYWxsb2MiLCJfIiwiY2FtbF9zdHJpbmdfZ2V0IiwicmVfbWF0Y2giLCJyZV93b3JkX2xldHRlcnMiLCJvcGNvZGVzIiwiaXNfd29yZF9sZXR0ZXIiLCJpbl9iaXRzZXQiLCJyZV9tYXRjaF9pbXBsIiwicGFydGlhbCIsInByb2ciLCJjcG9vbCIsIm5vcm10YWJsZSIsIm51bWdyb3VwcyIsIm51bXJlZ2lzdGVycyIsInN0YXJ0Y2hhcnMiLCJwYyIsInF1aXQiLCJncm91cHMiLCJyZV9yZWdpc3RlciIsImJhY2t0cmFjayIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJyZV9zZWFyY2hfYmFja3dhcmQiLCJjYW1sX2pzX2Zyb21fc3RyaW5nIiwiY2FtbF9tbF9vdXRwdXRfdGEiLCJjYW1sX2JhX3N1YiIsImNoYW5nZWRfZGltIiwibmV3X2RpbXMiLCJjb3JlX2djX2NvbXBhY3Rpb25zIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiY2FtbF9iYV9mcm9tX3R5cGVkX2FycmF5IiwiY2FtbF9tbF9zZWVrX291dCIsImNhbWxfanNfdHlwZW9mIiwiY2FtbF9zdHJpbmdfaGFzaCIsImNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlIiwiYnQiLCJCYXNlX2ludF9tYXRoX2ludDMyX2N0eiIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0eiIsImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIiLCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludCIsImNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCIsImNhbWxfY3JlYXRlX3N0cmluZyIsIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2NseiIsImJpZ3N0cmluZ19tZW1zZXRfc3R1YiIsInZfcG9zIiwidl9jaGFyIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyIsImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZyIsIkJhc2VfaW50X21hdGhfaW50NjRfY2x6IiwiY2FtbF9hcnJheV9hcHBlbmQiLCJsMSIsImwyIiwiY2FtbF91bml4X2dldHRpbWVvZmRheSIsImNhbWxfdW5peF90aW1lIiwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwiLCJqc19wcm9mX2NsZWFyX21hcmtzIiwiY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yIiwiY2FtbF9maWxsX2J5dGVzIiwiY2FtbF9qc19leHByIiwiY2FtbF9qc190b19zdHJpbmciLCJjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXMiLCJjYW1sX21sX3J1bnRpbWVfd2FybmluZ3NfZW5hYmxlZCIsImNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY29yZV9nY190b3BfaGVhcF93b3JkcyIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJjYW1sX21sX3NlZWtfaW4iLCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeSIsImNhbWxfbWxfb3V0cHV0X2NoYXIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfd2luMzIiLCJjYW1sX29ial9pc19ibG9jayIsImNhbWxfb2JqX3NldF9yYXdfZmllbGQiLCJjYW1sX2pzX3ZhciIsImNhbWxfdHJ1bmNfZmxvYXQiLCJjYW1sX2VwaGVfdW5zZXRfZGF0YSIsImNhbWxfZXBoZV9zZXRfZGF0YSIsImNhbWxfZXBoZV9ibGl0X2RhdGEiLCJsZW5ndGhfbmF0IiwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNhbWxfYmFfZ2V0XzIiLCJjYW1sX2JhX3VpbnQ4X3NldDE2IiwiY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkiLCJjYW1sX2pzX2RlbGV0ZSIsImNhbWxfaW50X29mX3N0cmluZyIsImNhbWxfbGlzdF9tb3VudF9wb2ludCIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmQiLCJpbmZvIiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb3JlX2FycmF5X3Vuc2FmZV9pbnRfYmxpdCIsImNvbXBhcmVfZGlnaXRzX25hdCIsImNhbWxfbWxfaW5wdXQiLCJjYW1sX2dyX3dhaXRfZXZlbnQiLCJfZXZsIiwiY2FtbF9ncl9zaWdpb19oYW5kbGVyIiwiY2FtbF9tZW1wcm9mX2Rpc2NhcmQiLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9jayIsImNhbWxfb2JqX2lzX3NoYXJlZCIsImNvcmVfZ2NfcHJvbW90ZWRfd29yZHMiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6IiwianNfcHJvZl9jbGVhcl9tZWFzdXJlcyIsImNhbWxfc3RyaW5nX2xlc3N0aGFuIiwiY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW4iLCJjYW1sX2RpdiIsImNhbWxfb2JqX2R1cCIsImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5IiwiY2FtbF9tZW1wcm9mX3N0YXJ0IiwicmF0ZSIsInN0YWNrX3NpemUiLCJ0cmFja2VyIiwiY2FtbF9zeXNfZ2V0X2FyZ3YiLCJjYW1sX21sX2RvbWFpbl9zZXRfbmFtZSIsIl9uYW1lIiwiY2FtbF9qc190b19ib29sIiwiY2FtbF9ncl9jcmVhdGVfaW1hZ2UiLCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5IiwiY2FtbF9sZXNzdGhhbiIsImNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QiLCJiaWdzdHJpbmdhZl9tZW1jbXBfc3RyaW5nIiwiYmFfb2ZmIiwic3RyX29mZiIsImNhbWxfYnVpbGRfc3ltYm9scyIsInRvYyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmciLCJyZXMyIiwiY2FtbF9qc19mcm9tX2Zsb2F0IiwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZSIsImNhbWxfZ2Nfc3RhdCIsImNhbWxfZ2V0X21ham9yX2NyZWRpdCIsImJpZ3N0cmluZ2FmX21lbWNociIsImNhbWxfc3lzX21vZGlmeV9hcmd2IiwiY2FtbF9tZXRob2RfY2FjaGUiLCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kIiwiY2FjaGVpZCIsIm1ldGhzIiwibGkiLCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX3JvdW5kX2Zsb2F0IiwianNfcHJvZl9tZWFzdXJlIiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNvcmVfZ2NfbWFqb3JfcGx1c19taW5vcl93b3JkcyIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiQmFzZV9pbnRfbWF0aF9pbnRfY3R6IiwiYmlnc3RyaW5nX2JsaXRfc3RyaW5nX2JpZ3N0cmluZ19zdHViIiwiY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCIsImNhbWxfZ3JfZHJhd19zdHIiLCJkeCIsImNhbWxfZ3JfZHJhd19zdHJpbmciLCJjYW1sX2dyX2RyYXdfY2hhciIsImNhbWxfdW5tb3VudCIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHoiLCJpc196ZXJvIiwibGFuZCIsInNtYWxsX2ludDY0IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdCIsIkJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuIiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWUiLCJjYW1sX2ZtYV9mbG9hdCIsIlNQTElUIiwiTUlOX1ZBTFVFIiwiRVBTSUxPTiIsIkMiLCJBIiwiQiIsIm11bHRpcGx5IiwiYXQiLCJhaGkiLCJhbG8iLCJiaGkiLCJibG8iLCJhZGp1c3QiLCJzY2FsZSIsInhzIiwieXMiLCJ6cyIsInh5IiwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJjYW1sX2Jzd2FwMTYiLCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSIsImNhbWxfZmluYWxfcmVnaXN0ZXIiLCJjYW1sX2dyX2RyYXdfcmVjdCIsImNhbWxfc3RyaW5nX2dldDE2IiwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9ucyIsImNhbWxfanNfdG9faW50MzIiLCJjYW1sX291dHB1dF92YWx1ZSIsImNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5IiwiY2FtbF9iYV9nZXRfMyIsImNhbWxfZXBoZV9ibGl0X2tleSIsImNhbWxfaW5pdGlhbF90aW1lIiwiY2FtbF9zeXNfdGltZSIsImNhbWxfc3lzX3RpbWVfaW5jbHVkZV9jaGlsZHJlbiIsIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zIiwiY2FtbF91bml4X2dldHB3dWlkIiwiY2FtbF9kb21haW5fZGxzX2dldCIsImNhbWxfYnl0ZXNfZ2V0MzIiLCJjYW1sX2ZyZXhwX2Zsb2F0IiwibmVnIiwiYmlnc3RyaW5nX2JsaXRfYnl0ZXNfYmlnc3RyaW5nX3N0dWIiLCJjb3JlX3RpbWVfbnNfZm9ybWF0IiwidGltZSIsImZvcm1hdGpzIiwianN0cmluZyIsImNhbWxfb2pzX3dyYXBfZnVuX2FyZ3VtZW50cyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsIkJhc2VfaGFzaF9kb3VibGUiLCJjYW1sX2pzX25ldyIsImNhbWxfZ3JfY3VycmVudF95IiwiY2FtbF9mb3JtYXRfaW50IiwiY29yZV9nY19oZWFwX3dvcmRzIiwianNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl8iLCJjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4iLCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjIiwiaHZhbCIsImhleG4iLCJoZWZmIiwiY2FtbF9vYmpfdHJ1bmNhdGUiLCJjb3JlX2djX21pbm9yX3dvcmRzIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwic3BlY3MiLCJzdGF0dXMiLCJ3aW4iLCJ0aXRsZSIsImJvZHkiLCJjYW1sX21ha2VfZmxvYXRfdmVjdCIsImNhbWxfY2JydF9mbG9hdCIsImNhbWxfZXZlbnRsb2dfcGF1c2UiLCJjYW1sX21lbXByb2Zfc3RvcCIsImNhbWxfZ3JlYXRlcmVxdWFsIiwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UiLCJjYW1sX2xvZzFwX2Zsb2F0IiwiYmlnc3RyaW5nYWZfYmxpdF90b19iaWdzdHJpbmciLCJtc190b19uYW5vIiwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvIiwibXMiLCJtc19pNjMiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yIiwiY2FtbF9sYXp5X21ha2VfZm9yd2FyZCIsImxvcl9kaWdpdF9uYXQiLCJjYW1sX2dyX2JsaXRfaW1hZ2UiLCJpbTIiLCJjYW1sX2dyX3dpbmRvd19pZCIsImNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkIiwiY2FtbF9qc19vbl9pZSIsInVhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCIsImNhbWxfYmFfbGF5b3V0IiwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJjYW1sX2FycmF5X3NldCIsIm5ld3ZhbCIsImNhbWxfYWxsb2Nfc3RhY2siLCJodiIsImh4IiwiaGYiLCJjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbCIsInNldF9kaWdpdF9uYXQiLCJjYW1sX2J5dGVzX3NldDE2IiwiY2FtbF9ncl9kb2Nfb2Zfc3RhdGUiLCJjYW1sX21sX291dHB1dF9pbnQiLCJjYW1sX29ial93aXRoX3RhZyIsImNhbWxfbWxfY2hhbm5lbF9zaXplIiwiYmluX3Byb3RfYmxpdF9zdHJpbmdfYnVmX3N0dWIiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfanNvb19mbGFnc19lZmZlY3RzIiwiY29yZV9nY19tYWpvcl93b3JkcyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJiaWdzdHJpbmdfYmxpdF9zdHViIiwiY2FtbF9zdHJpbmdfbm90ZXF1YWwiLCJjYW1sX2J5dGVzX2dyZWF0ZXJ0aGFuIiwiY2FtbF9ncl9tYWtlX2ltYWdlIiwiQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsImZhaWx3aXRoIiwicyIsImludmFsaWRfYXJnIiwibWluIiwieCIsInkiLCJtYXgiLCJhYnMiLCJsbm90IiwiaW5maW5pdHkiLCJuZWdfaW5maW5pdHkiLCJuYW4iLCJtYXhfZmxvYXQiLCJtaW5fZmxvYXQiLCJlcHNpbG9uX2Zsb2F0IiwibWF4X2ludCIsIm1pbl9pbnQiLCJzeW1ib2wiLCJzMSIsInMyIiwibDEiLCJsMiIsImNoYXJfb2ZfaW50IiwibiIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJsIiwiaSIsImkkMCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzeW1ib2wkMCIsInRsIiwiaGQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsInYiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJvcGVuX2luX2dlbiIsIm9wZW5faW4iLCJvcGVuX2luX2JpbiIsImlucHV0IiwiaWMiLCJ1bnNhZmVfcmVhbGx5X2lucHV0Iiwib2ZzJDAiLCJsZW4kMCIsInIiLCJsZW4kMSIsIm9mcyQxIiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2xpbmUiLCJidWlsZF9yZXN1bHQiLCJidWYiLCJwb3MkMCIsImFjY3UiLCJiZWciLCJhY2N1JDAiLCJyZXMiLCJjbG9zZV9pbl9ub2VyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnQiLCJyZWFkX2ludF9vcHQiLCJyZWFkX2Zsb2F0IiwicmVhZF9mbG9hdF9vcHQiLCJzdHJpbmdfb2ZfZm9ybWF0Iiwic3ltYm9sJDEiLCJzdHIyIiwic3RyMSIsImV4aXRfZnVuY3Rpb24iLCJhdF9leGl0IiwiZl95ZXRfdG9fcnVuIiwib2xkX2V4aXQiLCJuZXdfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQiLCJkb19hdF9leGl0IiwiZXhpdCIsInJldGNvZGUiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwibWFwIiwidiQwIiwiZm9sZCIsImVxdWFsIiwiZTEiLCJlMiIsInYxIiwidjIiLCJ2MSQwIiwidjIkMCIsImNvbXBhcmUiLCJvY2FtbF92ZXJzaW9uIiwib2NhbWxfcmVsZWFzZSIsImV4ZWN1dGFibGVfbmFtZSIsIm9zX3R5cGUiLCJiYWNrZW5kX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJtYXhfYXJyYXlfbGVuZ3RoIiwibWF4X2Zsb2F0YXJyYXlfbGVuZ3RoIiwibWF4X3N0cmluZ19sZW5ndGgiLCJiaWdfZW5kaWFuIiwid29yZF9zaXplIiwiaW50X3NpemUiLCJnZXRlbnZfb3B0IiwiaW50ZXJhY3RpdmUiLCJzZXRfc2lnbmFsIiwic2lnX251bSIsInNpZ19iZWgiLCJzaWdhYnJ0Iiwic2lnYWxybSIsInNpZ2ZwZSIsInNpZ2h1cCIsInNpZ2lsbCIsInNpZ2ludCIsInNpZ2tpbGwiLCJzaWdwaXBlIiwic2lncXVpdCIsInNpZ3NlZ3YiLCJzaWd0ZXJtIiwic2lndXNyMSIsInNpZ3VzcjIiLCJzaWdjaGxkIiwic2lnY29udCIsInNpZ3N0b3AiLCJzaWd0c3RwIiwic2lndHRpbiIsInNpZ3R0b3UiLCJzaWd2dGFscm0iLCJzaWdwcm9mIiwic2lnYnVzIiwic2lncG9sbCIsInNpZ3N5cyIsInNpZ3RyYXAiLCJzaWd1cmciLCJzaWd4Y3B1Iiwic2lneGZzeiIsImNhdGNoX2JyZWFrIiwib24iLCJkZXZlbG9wbWVudF92ZXJzaW9uIiwiaXNfYmxvY2siLCJkb3VibGVfZmllbGQiLCJzZXRfZG91YmxlX2ZpZWxkIiwiZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yIiwibGFzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfIiwiZm9yY2luZ190YWciLCJjb250X3RhZyIsImxhenlfdGFnIiwiY2xvc3VyZV90YWciLCJvYmplY3RfdGFnIiwiaW5maXhfdGFnIiwiZm9yd2FyZF90YWciLCJub19zY2FuX3RhZyIsImFic3RyYWN0X3RhZyIsInN0cmluZ190YWciLCJkb3VibGVfdGFnIiwiZG91YmxlX2FycmF5X3RhZyIsImN1c3RvbV90YWciLCJpbnRfdGFnIiwib3V0X29mX2hlYXBfdGFnIiwidW5hbGlnbmVkX3RhZyIsImluZm8iLCJvYmoiLCJzdGFydF9lbnYiLCJvZl92YWwiLCJzbG90IiwiaWQiLCJtYXhfZXBoZV9sZW5ndGgiLCJjcmVhdGUiLCJsZW5ndGgiLCJyYWlzZV9pZl9pbnZhbGlkX29mZnNldCIsIm8iLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzEiLCJvMiIsInNldCIsImluY3IiLCJkZWNyIiwiZm9yY2VfZ2VuX2xhenlfYmxvY2siLCJvbmx5X3ZhbCIsImJsayIsImNsb3N1cmUkMCIsInJlc3VsdCQwIiwiY2xvc3VyZSIsInJlc3VsdCIsImUkMCIsImZvcmNlX2xhenlfYmxvY2siLCJmb3JjZV9nZW4iLCJsenYiLCJ0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsIm1hcF92YWwiLCJlbXB0eSIsInJldHVybiQwIiwiY29ucyIsIm5leHQiLCJhcHBlbmQiLCJzZXExIiwic2VxMiIsInNlcSIsImZpbHRlcl9tYXAiLCJzZXEkMCIsImZpbHRlciIsImNvbmNhdCIsImZsYXRfbWFwIiwiZm9sZF9sZWZ0IiwiYWNjIiwiYWNjJDAiLCJhY2MkMSIsIml0ZXIiLCJ1bmZvbGQiLCJ1IiwidSQwIiwiaXNfZW1wdHkiLCJ4cyIsInVuY29ucyIsInhzJDAiLCJ4cyQxIiwiaXRlcmkiLCJmb2xkX2xlZnRpIiwiYWNjdSQxIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmaW5kIiwiZmluZF9tYXAiLCJpdGVyMiIsInlzIiwieXMkMCIsInlzJDEiLCJmb2xkX2xlZnQyIiwiZm9yX2FsbDIiLCJleGlzdHMyIiwiZXEiLCJjbXAiLCJpbml0X2F1eCIsImoiLCJpbml0IiwicmVwZWF0IiwiZm9yZXZlciIsImN5Y2xlX25vbmVtcHR5IiwiY3ljbGUiLCJpdGVyYXRlMSIsIml0ZXJhdGUiLCJtYXBpX2F1eCIsIm1hcGkiLCJ0YWlsX3NjYW4iLCJzJDAiLCJzY2FuIiwidGFrZV9hdXgiLCJ0YWtlIiwiZHJvcCIsIm4kMCIsIm4kMSIsInRha2Vfd2hpbGUiLCJkcm9wX3doaWxlIiwibm9kZSIsImdyb3VwIiwidG9fbGF6eSIsImZhaWx1cmUiLCJtZW1vaXplIiwib25jZSIsImFjdGlvbiIsInppcCIsIm1hcDIiLCJpbnRlcmxlYXZlIiwic29ydGVkX21lcmdlMSIsInNvcnRlZF9tZXJnZSIsIm1hcF9mc3QiLCJ4eXMiLCJ4eXMkMCIsIm1hcF9zbmQiLCJ1bnppcCIsImZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCIsImZpbHRlcl9tYXBfZmluZF9yaWdodF9tYXAiLCJ6IiwicGFydGl0aW9uX21hcCIsInBhcnRpdGlvbiIsInBlZWwiLCJ4c3MiLCJ0cmFuc3Bvc2UiLCJ0YWlscyIsImhlYWRzIiwicmVtYWluZGVycyIsInhzcyQwIiwidGFpbHMkMCIsImhlYWRzJDAiLCJtYXBfcHJvZHVjdCIsInByb2R1Y3QiLCJvZl9kaXNwZW5zZXIiLCJpdCIsInRvX2Rpc3BlbnNlciIsImludHMiLCJub25lIiwic29tZSIsInZhbHVlIiwiZGVmYXVsdCQwIiwiZ2V0IiwiYmluZCIsImpvaW4iLCJpc19ub25lIiwiaXNfc29tZSIsIm8wIiwidjAiLCJ0b19yZXN1bHQiLCJ0b19saXN0IiwidG9fc2VxIiwib2siLCJlcnJvciIsImdldF9vayIsImdldF9lcnJvciIsIm1hcF9lcnJvciIsIml0ZXJfZXJyb3IiLCJpc19vayIsImlzX2Vycm9yIiwicjAiLCJyMSIsImUwIiwidG9fb3B0aW9uIiwidG9fZmxvYXQiLCJ0b19zdHJpbmciLCJlc2NhcGVkIiwibG93ZXJjYXNlX2FzY2lpIiwidXBwZXJjYXNlX2FzY2lpIiwiYzEiLCJjMiIsImVycl9ub19wcmVkIiwiZXJyX25vX3N1Y2MiLCJsb19ib3VuZCIsImhpX2JvdW5kIiwiYm9tIiwicmVwIiwic3VjYyIsInByZWQiLCJpc192YWxpZCIsIm9mX2ludCIsImlzX2NoYXIiLCJvZl9jaGFyIiwidG9fY2hhciIsInVuc2FmZV90b19jaGFyIiwiaGFzaCIsInV0Zl9kZWNvZGVfaXNfdmFsaWQiLCJkIiwidXRmX2RlY29kZV9sZW5ndGgiLCJ1dGZfZGVjb2RlX3VjaGFyIiwidXRmX2RlY29kZSIsInV0Zl9kZWNvZGVfaW52YWxpZCIsInV0Zl84X2J5dGVfbGVuZ3RoIiwidXRmXzE2X2J5dGVfbGVuZ3RoIiwibCQwIiwibnRoIiwibCQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwicmV2X2luaXRfdGhyZXNob2xkIiwiZmxhdHRlbiIsInJldl9tYXAiLCJmb2xkX3JpZ2h0IiwiYTIiLCJhMSIsInJldl9tYXAyIiwiZm9sZF9yaWdodDIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmRfb3B0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsImZvbGRfbGVmdF9tYXAiLCJsX2FjY3UiLCJ4JDAiLCJ5ZXMiLCJubyIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibG9nbm90IiwibWFrZSIsImNvcHkiLCJvZl9zdHJpbmciLCJzdWIiLCJzdWJfc3RyaW5nIiwiZXh0ZW5kIiwiZHN0b2ZmIiwic3Jjb2ZmIiwiY3B5bGVuIiwiZmlsbCIsImJsaXQiLCJvZnMxIiwib2ZzMiIsImJsaXRfc3RyaW5nIiwic2VwIiwic2VwbGVuIiwiZHN0IiwicG9zIiwiaGQkMCIsImNhdCIsImlzX3NwYWNlIiwidHJpbSIsInVuc2FmZV9lc2NhcGUiLCJiJDAiLCJhcHBseTEiLCJjYXBpdGFsaXplX2FzY2lpIiwidW5jYXBpdGFsaXplX2FzY2lpIiwic3RhcnRzX3dpdGgiLCJwcmVmaXgiLCJsZW5fcyIsImxlbl9wcmUiLCJlbmRzX3dpdGgiLCJzdWZmaXgiLCJsZW5fc3VmIiwiZGlmZiIsImluZGV4X3JlYyIsImxpbSIsImkkMSIsImluZGV4IiwiaW5kZXhfcmVjX29wdCIsImluZGV4X29wdCIsImluZGV4X2Zyb20iLCJpbmRleF9mcm9tX29wdCIsInJpbmRleF9yZWMiLCJyaW5kZXgiLCJyaW5kZXhfZnJvbSIsInJpbmRleF9yZWNfb3B0IiwicmluZGV4X29wdCIsInJpbmRleF9mcm9tX29wdCIsImNvbnRhaW5zX2Zyb20iLCJjb250YWlucyIsInJjb250YWluc19mcm9tIiwic3BsaXRfb25fY2hhciIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsInVuc2FmZV9nZXRfdWludDE2X2xlIiwidW5zYWZlX2dldF91aW50MTZfYmUiLCJnZXRfaW50OCIsImdldF91aW50MTZfbGUiLCJnZXRfdWludDE2X2JlIiwiZ2V0X2ludDE2X25lIiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwiZ2V0X2ludDMyX2xlIiwiZ2V0X2ludDMyX2JlIiwiZ2V0X2ludDY0X2xlIiwiZ2V0X2ludDY0X2JlIiwidW5zYWZlX3NldF91aW50MTZfbGUiLCJ1bnNhZmVfc2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQ2NF9sZSIsInNldF9pbnQ2NF9iZSIsInNldF91aW50OCIsInNldF91aW50MTZfbmUiLCJkZWNfaW52YWxpZCIsImRlY19yZXQiLCJub3RfaW5feDgwX3RvX3hCRiIsIm5vdF9pbl94QTBfdG9feEJGIiwibm90X2luX3g4MF90b194OUYiLCJub3RfaW5feDkwX3RvX3hCRiIsIm5vdF9pbl94ODBfdG9feDhGIiwidXRmXzhfdWNoYXJfMyIsImIwIiwiYjEiLCJiMiIsInV0Zl84X3VjaGFyXzQiLCJiMyIsImdldF91dGZfOF91Y2hhciIsImkkNCIsImIxJDEiLCJpJDUiLCJiMiQxIiwiaSQ2IiwiaSQxMCIsImIxJDMiLCJpJDExIiwiYjIkMyIsImkkMTIiLCJiMyQxIiwiaSQ3IiwiYjEkMiIsImkkOCIsImIyJDIiLCJpJDkiLCJiMyQwIiwiaSQxMyIsImIxJDQiLCJpJDE0IiwiYjIkNCIsImkkMiIsImIxJDAiLCJpJDMiLCJiMiQwIiwiaSQxNSIsImIxJDUiLCJzZXRfdXRmXzhfdWNoYXIiLCJsYXN0JDEiLCJsYXN0JDAiLCJsYXN0IiwiaXNfdmFsaWRfdXRmXzgiLCJsYXN0JDMiLCJsYXN0JDIiLCJsYXN0JDQiLCJsYXN0JDUiLCJnZXRfdXRmXzE2YmVfdWNoYXIiLCJoaSIsImxvIiwic2V0X3V0Zl8xNmJlX3VjaGFyIiwidSQxIiwiaXNfdmFsaWRfdXRmXzE2YmUiLCJnZXRfdXRmXzE2bGVfdWNoYXIiLCJzZXRfdXRmXzE2bGVfdWNoYXIiLCJpc192YWxpZF91dGZfMTZsZSIsImJ0cyIsImJvcyIsIm9mX2J5dGVzIiwidG9fYnl0ZXMiLCJnIiwidG9fYnVmZmVyIiwiYnVmZiIsImZsYWdzIiwiaGVhZGVyX3NpemUiLCJkYXRhX3NpemUiLCJ0b3RhbF9zaXplIiwiZnJvbV9ieXRlcyIsImZyb21fc3RyaW5nIiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJvZl9saXN0IiwiaW5wdXRfYXJyYXkiLCJlbHQiLCJvdXRwdXRfYXJyYXkiLCJlbHQkMCIsImFjYyQyIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsImUkMSIsImokMCIsImZhdGhlciIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImkyJDAiLCJkJDAiLCJzMiQwIiwiaTEkMCIsImQkMSIsInMxJDAiLCJpc29ydHRvIiwic3Jjb2ZzIiwic29ydHRvIiwiaXNfZmluaXRlIiwiaXNfaW5maW5pdGUiLCJpc19uYW4iLCJlcHNpbG9uIiwib2Zfc3RyaW5nX29wdCIsInBpIiwiaXNfaW50ZWdlciIsIm1pbl9tYXgiLCJtaW5fbnVtIiwibWF4X251bSIsIm1pbl9tYXhfbnVtIiwidW5zYWZlX2ZpbGwiLCJjaGVjayIsImhsZW4iLCJzcmMiLCJzb2ZzIiwiZG9mcyIsImgiLCJtZW1faWVlZSIsIm1hcF90b19hcnJheSIsIm1hcF9mcm9tX2FycmF5IiwibWF4X2ludCQwIiwidW5zaWduZWRfdG9faW50IiwidW5zaWduZWRfY29tcGFyZSIsIm0iLCJ1bnNpZ25lZF9kaXYiLCJxIiwidW5zaWduZWRfcmVtIiwic2l6ZSIsImR1bW15X3BvcyIsInplcm9fcG9zIiwiZW5naW5lIiwidGJsIiwic3RhdGUiLCJuZXdfZW5naW5lIiwiZnJvbV9mdW5jdGlvbiIsIm9wdCIsInJlYWRfZnVuIiwic3RoIiwid2l0aF9wb3NpdGlvbnMiLCJhdXhfYnVmZmVyIiwibGV4YnVmIiwicmVhZCIsIm5ld2xlbiIsIm5ld2J1ZiIsImZyb21fY2hhbm5lbCIsInNldF9wb3NpdGlvbiIsInBvc2l0aW9uIiwic2V0X2ZpbGVuYW1lIiwiZm5hbWUiLCJsZXhlbWUiLCJzdWJfbGV4ZW1lIiwic3ViX2xleGVtZV9vcHQiLCJzdWJfbGV4ZW1lX2NoYXIiLCJzdWJfbGV4ZW1lX2NoYXJfb3B0IiwibGV4ZW1lX2NoYXIiLCJsZXhlbWVfc3RhcnQiLCJsZXhlbWVfZW5kIiwibGV4ZW1lX3N0YXJ0X3AiLCJsZXhlbWVfZW5kX3AiLCJuZXdfbGluZSIsImxjcCIsImZsdXNoX2lucHV0IiwiZW52IiwiZ3Jvd19zdGFja3MiLCJvbGRzaXplIiwibmV3c2l6ZSIsIm5ld19zIiwibmV3X3YiLCJuZXdfc3RhcnQiLCJuZXdfZW5kIiwiY2xlYXJfcGFyc2VyIiwiY3VycmVudF9sb29rYWhlYWRfZnVuIiwieXlwYXJzZSIsInRhYmxlcyIsInN0YXJ0IiwibGV4ZXIiLCJpbml0X2FzcCIsImluaXRfc3AiLCJpbml0X3N0YWNrYmFzZSIsImluaXRfc3RhdGUiLCJpbml0X2N1cnJfY2hhciIsImluaXRfbHZhbCIsImluaXRfZXJyZmxhZyIsImNtZCIsImFyZyIsImFyZyQwIiwiZXhuJDAiLCJleG4iLCJjdXJyX2NoYXIiLCJ0b2siLCJwZWVrX3ZhbCIsInN5bWJvbF9zdGFydF9wb3MiLCJzdCIsImVuIiwic3ltYm9sX2VuZF9wb3MiLCJyaHNfc3RhcnRfcG9zIiwicmhzX2VuZF9wb3MiLCJzeW1ib2xfc3RhcnQiLCJzeW1ib2xfZW5kIiwicmhzX3N0YXJ0IiwicmhzX2VuZCIsImlzX2N1cnJlbnRfbG9va2FoZWFkIiwicGFyc2VfZXJyb3IiLCJoZWlnaHQiLCJobCIsImgkMCIsImhyIiwiYmFsIiwibHIiLCJsdiIsImxsIiwibHJyIiwibHJ2IiwibHJsIiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2IiwicmxsIiwiYWRkIiwic2luZ2xldG9uIiwiYWRkX21pbl9lbGVtZW50IiwiYWRkX21heF9lbGVtZW50IiwicmgiLCJsaCIsIm1pbl9lbHQiLCJtaW5fZWx0X29wdCIsIm1heF9lbHQiLCJtYXhfZWx0X29wdCIsInJlbW92ZV9taW5fZWx0IiwiciQwIiwicHJlcyIsInByZXMkMCIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlX29wdCIsImNlbGwkMCIsInFfcmVzIiwicHJldiIsInByZXYkMCIsInRyYW5zZmVyIiwicTEiLCJxMiIsImNvbnRlbnRzIiwiYnVmZmVyIiwicmVzZXQiLCJpbm5lciIsInJlc2l6ZSIsIm1vcmUiLCJvbGRfcG9zIiwib2xkX2xlbiIsIm5ld19idWZmZXIiLCJhZGRfY2hhciIsInVjaGFyX3V0Zl84X2J5dGVfbGVuZ3RoX21heCIsInVjaGFyX3V0Zl8xNl9ieXRlX2xlbmd0aF9tYXgiLCJhZGRfdXRmXzhfdWNoYXIiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJhZGRfdXRmXzE2bGVfdWNoYXIiLCJhZGRfc3Vic3RyaW5nIiwib2Zmc2V0IiwibmV3X3Bvc2l0aW9uIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9idWZmZXIiLCJicyIsImFkZF9jaGFubmVsIiwidG9fcmVhZCQxIiwiYWxyZWFkeV9yZWFkIiwidG9fcmVhZCIsImFscmVhZHlfcmVhZCQwIiwidG9fcmVhZCQwIiwib3V0cHV0X2J1ZmZlciIsImFkZF9zdWJzdGl0dXRlIiwibGltJDEiLCJwcmV2aW91cyIsInByZXZpb3VzJDAiLCJzdGFydCQwIiwib3BlbmluZyIsImxpbSQwIiwic3RvcCQwIiwiayQyIiwiY2xvc2luZyIsInN0b3AiLCJrJDAiLCJrJDEiLCJuZXh0X2kiLCJpZGVudCIsInRydW5jYXRlIiwiYWRkX2ludDgiLCJhZGRfaW50MTZfbmUiLCJhZGRfaW50MzJfbmUiLCJhZGRfaW50NjRfbmUiLCJhZGRfaW50MTZfbGUiLCJhZGRfaW50MTZfYmUiLCJhZGRfaW50MzJfbGUiLCJhZGRfaW50MzJfYmUiLCJhZGRfaW50NjRfbGUiLCJhZGRfaW50NjRfYmUiLCJyZWxlYXNlIiwiYWNxdWlyZSIsInRyeV9hY3F1aXJlIiwicmV0IiwiZ2V0X3ZhbHVlIiwibWFrZSQwIiwicmVsZWFzZSQwIiwiYWNxdWlyZSQwIiwidHJ5X2FjcXVpcmUkMCIsImNwdV9yZWxheCIsInVuaXF1ZV92YWx1ZSIsImNyZWF0ZV9kbHMiLCJrZXlfY291bnRlciIsInBhcmVudF9rZXlzIiwibmV3X2tleSIsInNwbGl0X2Zyb21fcGFyZW50IiwiaW5pdF9vcnBoYW4iLCJpZHgiLCJraSIsIm1heWJlX2dyb3ciLCJzeiIsIm5ld19zeiIsIm5ld19zdCIsImdldF9pZCIsImRvbWFpbiIsInNlbGYiLCJpc19tYWluX2RvbWFpbiIsImZpcnN0X2RvbWFpbl9zcGF3bmVkIiwiZmlyc3Rfc3Bhd25fZnVuY3Rpb24iLCJiZWZvcmVfZmlyc3Rfc3Bhd24iLCJvbGRfZiIsIm5ld19mIiwiYXRfZXhpdF9rZXkiLCJzcGF3biIsInBrIiwidGVybV9tdXRleCIsInRlcm1fY29uZGl0aW9uIiwidGVybV9zdGF0ZSIsImJvZHkiLCJleCQwIiwiZXgiLCJyZWNvbW1lbmRlZF9kb21haW5fY291bnQiLCJzdWJfZm9ybWF0IiwiZm9ybWF0dGluZ19saXQiLCJjcmVhdGVfY2hhcl9zZXQiLCJhZGRfaW5fY2hhcl9zZXQiLCJzdHJfaW5kIiwibWFzayIsImZyZWV6ZV9jaGFyX3NldCIsInJldl9jaGFyX3NldCIsImNoYXJfc2V0JDAiLCJpc19pbl9jaGFyX3NldCIsInBhZF9vZl9wYWRfb3B0IiwicGFkX29wdCIsIndpZHRoIiwicGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IiwiZm10IiwicGFkX29wdCQwIiwicGFkX29wdCQxIiwicGFkX29wdCQyIiwicGFkX29wdCQzIiwicGFkX29wdCQ0IiwicHJlY19vcHQiLCJwYWRfb3B0JDUiLCJuZGVjIiwicGFkX29wdCQ2IiwicGFkX29wdCQ3IiwicGFkX29wdCQ4IiwiZGVmYXVsdF9mbG9hdF9wcmVjaXNpb24iLCJidWZmZXJfY3JlYXRlIiwiaW5pdF9zaXplIiwiYnVmZmVyX2NoZWNrX3NpemUiLCJvdmVyaGVhZCIsIm1pbl9sZW4iLCJuZXdfc3RyIiwiYnVmZmVyX2FkZF9jaGFyIiwiYnVmZmVyX2FkZF9zdHJpbmciLCJzdHJfbGVuIiwiYnVmZmVyX2NvbnRlbnRzIiwiY2hhcl9vZl9pY29udiIsImNoYXJfb2ZfZmNvbnYiLCJjRiIsImJwcmludF9wYWR0eSIsInBhZHR5IiwiYnByaW50X2lnbm9yZWRfZmxhZyIsImlnbl9mbGFnIiwiYnByaW50X3BhZF9vcHQiLCJicHJpbnRfcGFkZGluZyIsInBhZHR5JDAiLCJicHJpbnRfcHJlY2lzaW9uIiwiYnByaW50X2ljb252X2ZsYWciLCJicHJpbnRfYWx0aW50X2ZtdCIsImJwcmludF9mY29udl9mbGFnIiwic3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0Iiwic3RyJDAiLCJicHJpbnRfY2hhcl9saXRlcmFsIiwiYnByaW50X3N0cmluZ19saXRlcmFsIiwiYnByaW50X2ZtdHR5IiwiZm10dHkkMSIsImZtdHR5JDIiLCJmbXR0eSQzIiwiZm10dHkkNCIsImZtdHR5JDUiLCJmbXR0eSQ2IiwiZm10dHkkNyIsImZtdHR5JDgiLCJmbXR0eSQ5Iiwic3ViX2ZtdHR5IiwiZm10dHkkMTAiLCJzdWJfZm10dHkkMCIsImZtdHR5JDExIiwiZm10dHkkMTIiLCJmbXR0eSQxMyIsImZtdHR5JDE0IiwiZm10dHkkMTUiLCJpbnRfb2ZfY3VzdG9tX2FyaXR5Iiwic3RyaW5nX29mX2ZtdCIsImZtdGl0ZXIiLCJmbXQkMCIsImlnbl9mbGFnJDAiLCJzdHIkMSIsImlzX2Fsb25lJDAiLCJpc19hbG9uZSIsImFmdGVyIiwiYmVmb3JlIiwiaiQxIiwiZm10JDEiLCJzeW1tIiwiZm10dHlfcmVsX2RldCIsImRlIiwiZWQiLCJhZiIsImZhIiwiZGUkMCIsImVkJDAiLCJhZiQwIiwiZmEkMCIsImRlJDEiLCJlZCQxIiwiYWYkMSIsImZhJDEiLCJkZSQyIiwiZWQkMiIsImFmJDIiLCJmYSQyIiwiZGUkMyIsImVkJDMiLCJhZiQzIiwiZmEkMyIsImRlJDQiLCJlZCQ0IiwiYWYkNCIsImZhJDQiLCJkZSQ1IiwiZWQkNSIsImFmJDUiLCJmYSQ1IiwiZGUkNiIsImVkJDYiLCJhZiQ2IiwiZmEkNiIsImRlJDciLCJlZCQ3IiwiYWYkNyIsImZhJDciLCJkZSQ4IiwiZWQkOCIsImFmJDgiLCJmYSQ4IiwidHJhbnMiLCJqZCIsImRqIiwiZ2EiLCJhZyIsImRlJDkiLCJlZCQ5IiwiYWYkOSIsImZhJDkiLCJkZSQxMCIsImVkJDEwIiwiYWYkMTAiLCJmYSQxMCIsImRlJDExIiwiZWQkMTEiLCJhZiQxMSIsImZhJDExIiwiZGUkMTIiLCJlZCQxMiIsImFmJDEyIiwiZmEkMTIiLCJkZSQxMyIsImVkJDEzIiwiYWYkMTMiLCJmYSQxMyIsInJlc3QxIiwicmVzdDIiLCJyZXN0MSQwIiwicmVzdDIkMCIsInJlc3QxJDEiLCJyZXN0MiQxIiwicmVzdDEkMiIsInJlc3QyJDIiLCJyZXN0MSQzIiwicmVzdDIkMyIsInJlc3QxJDQiLCJyZXN0MiQ0IiwicmVzdDEkNSIsInJlc3QyJDUiLCJyZXN0MSQ2IiwicmVzdDIkNiIsInJlc3QxJDciLCJ0eTEkMCIsInJlc3QyJDciLCJ0eTIkMCIsInJlc3QxJDgiLCJ0eTEyIiwidHkxMSIsInJlc3QyJDgiLCJ0eTIyIiwidHkyMSIsImY0IiwiZjIiLCJyZXN0MSQ5IiwicmVzdDIkOSIsInJlc3QxJDEwIiwicmVzdDIkMTAiLCJyZXN0MSQxMSIsInJlc3QyJDExIiwicmVzdDEkMTIiLCJyZXN0MiQxMiIsInJlc3QxJDEzIiwicmVzdDIkMTMiLCJmbXR0eV9vZl9mbXQiLCJmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IiwidHlfcmVzdCIsInByZWNfdHkiLCJmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkiLCJ0eV9yZXN0JDAiLCJwcmVjX3R5JDAiLCJ0eV9yZXN0JDEiLCJwcmVjX3R5JDEiLCJ0eV9yZXN0JDIiLCJwcmVjX3R5JDIiLCJ0eV9yZXN0JDMiLCJwcmVjX3R5JDMiLCJ0eSQwIiwiZm9ybWF0dGluZ19nZW4iLCJmbXR0eV9vZl9jdXN0b20iLCJhcml0eSQwIiwidHlwZV9wYWRkaW5nIiwidyIsInR5cGVfcGFkcHJlYyIsInR5cGVfZm9ybWF0IiwidHlwZV9mb3JtYXRfZ2VuIiwiZm10dHkwIiwiZm10dHlfcmVzdCIsImZtdF9yZXN0IiwiZm10dHlfcmVzdCQwIiwiZm10X3Jlc3QkMCIsImZtdF9yZXN0JDEiLCJmbXR0eV9yZXN0JDEiLCJmbXQkMiIsImZtdF9yZXN0JDIiLCJmbXR0eV9yZXN0JDIiLCJmbXQkMyIsImZtdF9yZXN0JDMiLCJmbXR0eV9yZXN0JDMiLCJmbXQkNCIsImZtdF9yZXN0JDQiLCJmbXR0eV9yZXN0JDQiLCJmbXQkNSIsImZtdF9yZXN0JDUiLCJmbXR0eV9yZXN0JDUiLCJwcmVjJDQiLCJmbXQkNiIsImZtdF9yZXN0JDYiLCJwcmVjJDUiLCJwYWQkOSIsInBhZCQxMCIsImZtdHR5X3Jlc3QkNiIsInByZWMkNiIsImZtdCQ3IiwiZm10X3Jlc3QkNyIsInByZWMkNyIsInBhZCQxMSIsInBhZCQxMiIsImZtdHR5X3Jlc3QkNyIsInByZWMkOCIsImZtdCQ4IiwiZm10X3Jlc3QkOCIsInBhZCQxMyIsInBhZCQxNCIsImZtdHR5X3Jlc3QkOCIsImZtdCQ5IiwiZm10X3Jlc3QkOSIsImZtdCQxMCIsImZtdF9yZXN0JDEwIiwiZm10JDExIiwiZm10X3Jlc3QkMTEiLCJmbXQkMTIiLCJmbXR0eV9yZXN0JDkiLCJmbXRfcmVzdCQxMiIsImZtdCQxMyIsImZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHkxIiwiZm10X3Jlc3QkMTMiLCJzdWJfZm10dHkkMSIsImZtdCQxNCIsImZtdHR5X3Jlc3QkMTEiLCJmbXRfcmVzdCQxNCIsImZtdCQxNSIsImZtdHR5X3Jlc3QkMTIiLCJmbXRfcmVzdCQxNSIsImZtdCQxNiIsImZtdF9yZXN0JDE2IiwiZm10dHkkMTYiLCJmbXQkMTciLCJmbXRfcmVzdCQxNyIsImZtdHR5MyIsImZtdDMiLCJmbXQxJDAiLCJmbXR0eTIkMCIsImZtdDIkMCIsImZtdHR5MyQwIiwiZm10MyQwIiwiZm10dHlfcmVzdCQxMyIsImZtdF9yZXN0JDE4IiwiZm10dHkkMTciLCJmbXQkMTgiLCJmbXR0eV9yZXN0JDE0IiwiZm10X3Jlc3QkMTkiLCJmbXR0eSQxOCIsImZtdCQxOSIsImZtdHR5X3Jlc3QkMTUiLCJmbXRfcmVzdCQyMCIsImZtdHR5JDE5IiwiZm10JDIwIiwidHlwZV9pZ25vcmVkX3BhcmFtX29uZSIsInN1Yl9mbXR0eSQyIiwic3ViX2ZtdHR5JDMiLCJ0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGkiLCJmbXR0eSQyMSIsImZtdCQyMiIsInN1Yl9mbXR0eSQ0IiwiZm10dHlfcmVzdCQxNiIsImZtdHR5JDIwIiwiZm10JDIxIiwic3ViX2ZtdHR5X3Jlc3QiLCJzdWJfZm10dHlfcmVzdCQwIiwic3ViX2ZtdHR5X3Jlc3QkMSIsInN1Yl9mbXR0eV9yZXN0JDIiLCJzdWJfZm10dHlfcmVzdCQzIiwic3ViX2ZtdHR5X3Jlc3QkNCIsInN1Yl9mbXR0eV9yZXN0JDUiLCJzdWJfZm10dHlfcmVzdCQ2Iiwic3ViX2ZtdHR5X3Jlc3QkNyIsInN1Yl9mbXR0eV9yZXN0JDgiLCJzdWJfZm10dHlfcmVzdCQ5Iiwic3ViX2ZtdHR5X3Jlc3QkMTAiLCJzdWJfZm10dHlfcmVzdCQxMSIsInN1Yl9mbXR0eV9yZXN0JDEyIiwic3ViX2ZtdHR5X3Jlc3QkMTMiLCJzdWJfZm10dHlfcmVzdCQxNCIsInN1YjJfZm10dHkiLCJzdWJfZm10dHlfcmVzdCQxNSIsInN1YjJfZm10dHkkMCIsInN1Yl9mbXR0eV9yZXN0JDE2Iiwic3ViMl9mbXR0eSQxIiwic3ViMV9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE3Iiwic3ViMl9mbXR0eSQyIiwic3ViMV9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTgiLCJzdWJfZm10dHlfcmVzdCQxOSIsInN1Yl9mbXR0eV9yZXN0JDIwIiwic3ViX2ZtdHR5X3Jlc3QkMjEiLCJzdWJfZm10dHlfcmVzdCQyMiIsInN1Yl9mbXR0eV9yZXN0JDIzIiwic3ViX2ZtdHR5X3Jlc3QkMjQiLCJzdWJfZm10dHlfcmVzdCQyNSIsInN1Yl9mbXR0eV9yZXN0JDI2IiwicmVjYXN0IiwiZml4X3BhZGRpbmciLCJ3aWR0aCQwIiwiZml4X2ludF9wcmVjaXNpb24iLCJyZXMkMSIsInN0cmluZ190b19jYW1sX3N0cmluZyIsImZvcm1hdF9vZl9mY29udiIsInN5bWIiLCJ0cmFuc2Zvcm1faW50X2FsdCIsImRpZ2l0cyIsInB1dCIsImNvbnZlcnRfaW50IiwiY29udmVydF9pbnQzMiIsImNvbnZlcnRfbmF0aXZlaW50IiwiY29udmVydF9pbnQ2NCIsImNvbnZlcnRfZmxvYXQiLCJoZXgiLCJzaWduIiwiY2FtbF9zcGVjaWFsX3ZhbCIsInN0cmluZ19vZl9mbXR0eSIsIm1ha2VfcHJpbnRmJDAiLCJuZXdfYWNjIiwibWFrZV9wcmludGYiLCJtYWtlX3BhZGRpbmciLCJtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiIsInAkMCIsInAkMSIsImFjYyQzIiwiYWNjJDQiLCJrJDMiLCJrYWNjIiwiayQ0IiwibWFrZV9pZ25vcmVkX3BhcmFtJDAiLCJtYWtlX2N1c3RvbSQwIiwibWFrZV9pbnZhbGlkX2FyZyIsIm1ha2VfZnJvbV9mbXR0eSQwIiwibWFrZV9mcm9tX2ZtdHR5IiwibWFrZV9jdXN0b20iLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2lwcmludGYkMCIsIm1ha2VfaXByaW50ZiIsImZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIiwia29jIiwicmVzdCQyNCIsInJlc3QkMjUiLCJyZXN0JDI2IiwicmVzdCQyNyIsInJlc3QkMjgiLCJyZXN0JDI5IiwiZm5fb2ZfY3VzdG9tX2FyaXR5JDAiLCJmbl9vZl9jdXN0b21fYXJpdHkiLCJvdXRwdXRfYWNjIiwicCQzIiwicCQ0IiwicCQ1IiwicCQyIiwiYnVmcHV0X2FjYyIsInN0cnB1dF9hY2MiLCJmYWlsd2l0aF9tZXNzYWdlIiwib3Blbl9ib3hfb2Zfc3RyaW5nIiwiaW52YWxpZF9ib3giLCJwYXJzZV9zcGFjZXMiLCJ3c3RhcnQiLCJ3ZW5kIiwiYm94X25hbWUiLCJuc3RhcnQiLCJuZW5kIiwiaW5kZW50IiwiZXhwX2VuZCIsImJveF90eXBlIiwibWFrZV9wYWRkaW5nX2ZtdF9lYmIiLCJtYWtlX3BhZHByZWNfZm10X2ViYiIsImZtdF9lYmJfb2Zfc3RyaW5nIiwibGVnYWN5X2JlaGF2aW9yIiwiZmxhZyIsImxlZ2FjeV9iZWhhdmlvciQwIiwiaW52YWxpZF9mb3JtYXRfbWVzc2FnZSIsInVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCIsImVuZF9pbmQiLCJpbnZhbGlkX2Zvcm1hdF93aXRob3V0IiwiZXhwZWN0ZWRfY2hhcmFjdGVyIiwiZXhwZWN0ZWQiLCJwYXJzZSIsImxpdF9zdGFydCIsImFkZF9saXRlcmFsIiwic3RyX2luZCQxIiwic3RyX2luZCQyIiwicGFyc2VfZmxhZ3MiLCJzdHJfaW5kJDAiLCJwYXJzZV90YWciLCJzdHJfaW5kJDMiLCJzdHJfaW5kXzEiLCJwYXJzZV9pbnRlZ2VyIiwic3RyX2luZF8yIiwic3RyX2luZF8zIiwiZm9ybWF0dGluZ19saXQkMCIsIm5leHRfaW5kIiwic3RyX2luZF80Iiwic3RyX2luZF81Iiwic3RyX2luZCQ0Iiwic3RyX2luZF8xJDAiLCJzdHJfaW5kXzIkMCIsInN0cl9pbmRfMyQwIiwicyQxIiwiZm9ybWF0dGluZ19saXQkMSIsIm5leHRfaW5kJDAiLCJwY3RfaW5kIiwibWludXMiLCJwbHVzIiwic3BhY2UiLCJzZXRfZmxhZyIsInN0cl9pbmQkNSIsInNwYWNlJDAiLCJoYXNoJDAiLCJwbHVzJDAiLCJtaW51cyQwIiwiemVybyQwIiwiaW5jb21wYXRpYmxlX2ZsYWciLCJwYXJzZV9wb3NpdGl2ZSIsIm5ld19pbmQiLCJwYXJzZV9hZnRlcl9wYWRkaW5nIiwicGFyc2VfY29udmVyc2lvbiIsInBhcnNlX2xpdGVyYWwiLCJwYXJzZV9hZnRlcl9wcmVjaXNpb24iLCJzeW1iJDAiLCJwYXJzZV9jb252IiwicGFkcHJlYyIsInBsdXNfdXNlZCIsImhhc2hfdXNlZCIsInNwYWNlX3VzZWQiLCJpZ25fdXNlZCIsInBhZF91c2VkIiwicHJlY191c2VkIiwiZ2V0X3BsdXMiLCJnZXRfaGFzaCIsImdldF9zcGFjZSIsImdldF9pZ24iLCJnZXRfcGFkIiwiZ2V0X3ByZWMiLCJnZXRfcGFkcHJlYyIsImdldF9pbnRfcGFkIiwiY2hlY2tfbm9fMCIsIm9wdF9vZl9wYWQiLCJ3aWR0aCQxIiwiZ2V0X3BhZF9vcHQiLCJnZXRfcGFkcHJlY19vcHQiLCJmbXRfcmVzdWx0Iiwic3ViX2VuZCIsInNlYXJjaF9zdWJmb3JtYXRfZW5kIiwic3ViX2ZtdCIsImlnbm9yZWQkMiIsImNvdW50ZXIkMCIsImlnbm9yZWQkNiIsImlnbm9yZWQkNyIsImFkZF9yYW5nZSIsImZhaWxfc2luZ2xlX3BlcmNlbnQiLCJwYXJzZV9jaGFyX3NldF9jb250ZW50IiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciQwIiwicGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciIsInJldmVyc2UiLCJjaGFyX3NldCQxIiwiaWdub3JlZCQ5IiwiY2hhcl9mb3JtYXQiLCJmbXRfcmVzdCQyMSIsImZtdF9yZXN0JDIyIiwiZm10X3Jlc3QkMjMiLCJpZ25vcmVkJDEwIiwiZm10X3Jlc3QkMjQiLCJmbXRfcmVzdCQyNSIsInN1Yl9lbmQkMCIsInN1Yl9mbXQkMCIsImZtdF9yZXN0JDI2IiwiaWdub3JlZCQxMSIsImlnbm9yZWQkMyIsImlnbm9yZWQkNSIsImNvbXB1dGVfaW50X2NvbnYiLCJpZ25vcmVkJDgiLCJzcGFjZSQxIiwiaGFzaCQxIiwicGx1cyQyIiwia2luZCIsImlnbm9yZWQkNCIsImlnbm9yZWQiLCJpZ25vcmVkJDAiLCJpZ25vcmVkJDEiLCJwbHVzJDEiLCJpZ24kMCIsImlzX29wZW5fdGFnIiwiaW5kIiwic3ViX3N0ciIsInN1Yl9mb3JtYXQkMCIsImZvcm1hdHRpbmckMCIsImZvcm1hdHRpbmciLCJzdWJfZW5kJDEiLCJzdWJfZW5kJDIiLCJzdHJfaW5kJDYiLCJzdHJfaW5kJDciLCJvcHRpb24iLCJzdWJmbXQiLCJmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IiwiZm9ybWF0X29mX3N0cmluZ19mb3JtYXQiLCJrZnByaW50ZiIsImticHJpbnRmIiwiaWtmcHJpbnRmIiwiZnByaW50ZiIsImJwcmludGYiLCJpZnByaW50ZiIsImlicHJpbnRmIiwicHJpbnRmIiwiZXByaW50ZiIsImtzcHJpbnRmIiwic3ByaW50ZiIsImFzc29jMyIsInkyIiwieTEiLCJtYWtlX3N5bWxpc3QiLCJoZWxwX2FjdGlvbiIsImFkZF9oZWxwIiwic3BlY2xpc3QiLCJhZGQxIiwiYWRkMiIsInVzYWdlX2IiLCJlcnJtc2ciLCJkb2MiLCJzcGVjIiwia2V5IiwidXNhZ2Vfc3RyaW5nIiwidXNhZ2UiLCJjdXJyZW50IiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfIiwiYWxsb3dfZXhwYW5kIiwiYXJndiIsImFub25mdW4iLCJpbml0cG9zIiwiY29udmVydF9lcnJvciIsInByb2duYW1lIiwiZm9sbG93JDAiLCJrZXl3b3JkIiwibm9fYXJnJDAiLCJmb2xsb3ciLCJub19hcmciLCJnZXRfYXJnJDAiLCJnZXRfYXJnIiwiY29uc3VtZV9hcmckMCIsImNvbnN1bWVfYXJnIiwidHJlYXRfYWN0aW9uJDAiLCJ0cmVhdF9hY3Rpb24iLCJmJDAiLCJmJDEiLCJyJDEiLCJmJDIiLCJhcmckMSIsInIkMiIsImFyZyQyIiwiZiQzIiwiYXJnJDMiLCJ4JDEiLCJyJDMiLCJhcmckNCIsIngkMiIsInNwZWNzIiwiZiQ0IiwiYXJnJDUiLCJmJDUiLCJmJDYiLCJmJDciLCJhcmckNiIsIm5ld2FyZyIsInBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIiwicGFyc2VfYXJndl9keW5hbWljIiwiY3VycmVudCQwIiwicGFyc2VfYXJndiIsIm1zZyQwIiwibXNnJDEiLCJwYXJzZV9keW5hbWljIiwicGFyc2VfZXhwYW5kIiwic2Vjb25kX3dvcmQiLCJsb29wIiwibWF4X2FyZ19sZW4iLCJjdXIiLCJrd2QiLCJyZXBsYWNlX2xlYWRpbmdfdGFiIiwic2VlbiIsImFsaWduIiwibGltaXQiLCJjb21wbGV0ZWQiLCJrc2QiLCJjdXRjb2wkMCIsInNwYWNlcyQwIiwic3BlYyQwIiwiY3V0Y29sIiwia3dkX2xlbiIsInNwYWNlcyIsInJlYWRfYXV4IiwiZmlsZSIsIndvcmRzIiwic3Rhc2giLCJ3b3JkIiwid29yZCQwIiwicmVhZF9hcmciLCJyZWFkX2FyZzAiLCJ3cml0ZV9hdXgiLCJhcmdzIiwid3JpdGVfYXJnIiwid3JpdGVfYXJnMCIsImxvY2ZtdCIsInByaW50ZXJzIiwiZmllbGQiLCJvdGhlcl9maWVsZHMiLCJ1c2VfcHJpbnRlcnMiLCJzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG8iLCJjb25zdHJ1Y3RvciIsImZpZWxkc19vcHQiLCJjb25zdHJ1Y3RvciQwIiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyJDAiLCJsaW5lIiwiY2hhciQxIiwibGluZSQwIiwiZmlsZSQwIiwiY2hhciQyIiwibGluZSQxIiwiZmlsZSQxIiwicHJpbnQiLCJmY3QiLCJjYXRjaCQwIiwicmF3X2JhY2t0cmFjZV9lbnRyaWVzIiwiYnQiLCJjb252ZXJ0X3Jhd19iYWNrdHJhY2UiLCJmb3JtYXRfYmFja3RyYWNlX3Nsb3QiLCJpc19yYWlzZSIsInByaW50X3Jhd19iYWNrdHJhY2UiLCJvdXRjaGFuIiwicmF3X2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInByaW50X2JhY2t0cmFjZSIsInJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIiwiYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2UiLCJwYXJhbSIsImJhY2t0cmFjZV9zbG90X2lzX2lubGluZSIsImJhY2t0cmFjZV9zbG90X2xvY2F0aW9uIiwiYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSIsImJhY2t0cmFjZV9zbG90cyIsImJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkiLCJlbnRyeSIsInJhd19iYWNrdHJhY2VfbGVuZ3RoIiwiZ2V0X2JhY2t0cmFjZSIsInJlZ2lzdGVyX3ByaW50ZXIiLCJmbiIsIm9sZF9wcmludGVycyIsIm5ld19wcmludGVycyIsImV4bl9zbG90IiwiZXhuX3Nsb3RfaWQiLCJleG5fc2xvdF9uYW1lIiwiZXJyb3JzIiwiZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuIiwic3RhdHVzIiwidW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIiLCJlbXB0eV9iYWNrdHJhY2UiLCJoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZGVidWdnZXJfaW5fdXNlIiwiZXhuJDEiLCJyYXdfYmFja3RyYWNlJDAiLCJjb25zdCQwIiwiZmxpcCIsIm5lZ2F0ZSIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJ3b3JrIiwiZmluYWxseV9ub19leG4iLCJ3b3JrX2V4biQwIiwid29ya19leG4iLCJ3b3JrX2J0IiwiZXZlbnRsb2dfcGF1c2UiLCJldmVudGxvZ19yZXN1bWUiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJkaWdlc3QiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJmbG9hdDMyIiwiZmxvYXQ2NCIsImludDhfc2lnbmVkIiwiaW50OF91bnNpZ25lZCIsImludDE2X3NpZ25lZCIsImludDE2X3Vuc2lnbmVkIiwiaW50MzIiLCJpbnQ2NCIsImludCQwIiwibmF0aXZlaW50IiwiY29tcGxleDMyIiwiY29tcGxleDY0Iiwia2luZF9zaXplX2luX2J5dGVzIiwiY19sYXlvdXQiLCJmb3J0cmFuX2xheW91dCIsImNsb29wIiwiYXJyIiwiY29sIiwiZmxvb3AiLCJsYXlvdXQiLCJkaW1zIiwiZGxlbiIsInNpemVfaW5fYnl0ZXMiLCJzaXplX2luX2J5dGVzJDAiLCJvZl92YWx1ZSIsImNyZWF0ZSQwIiwiZGltIiwic2l6ZV9pbl9ieXRlcyQxIiwic2xpY2UiLCJpbml0JDAiLCJvZl9hcnJheSIsImJhIiwiY3JlYXRlJDEiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkMSIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMiIsImRpbTMiLCJzaXplX2luX2J5dGVzJDMiLCJzbGljZV9sZWZ0XzEiLCJzbGljZV9yaWdodF8xIiwic2xpY2VfbGVmdF8yIiwic2xpY2VfcmlnaHRfMiIsImluaXQkMiIsIm9mX2FycmF5JDEiLCJhcnJheTBfb2ZfZ2VuYXJyYXkiLCJhcnJheTFfb2ZfZ2VuYXJyYXkiLCJhcnJheTJfb2ZfZ2VuYXJyYXkiLCJhcnJheTNfb2ZfZ2VuYXJyYXkiLCJyZXNoYXBlXzAiLCJyZXNoYXBlXzEiLCJyZXNoYXBlXzIiLCJyZXNoYXBlXzMiLCJpMyIsImk0IiwiaTMkMCIsImk0JDAiLCJtayIsInJlaW5pdCIsInNlZWQiLCJtYWtlX3NlbGZfaW5pdCIsImJpdHMiLCJpbnRhdXgiLCJib3VuZCIsImZ1bGxfaW50IiwiYml0czMyIiwiYml0czY0IiwibmF0aXZlYml0cyIsImZsb2F0JDAiLCJib29sIiwibWtfZGVmYXVsdCIsInJhbmRvbV9rZXkiLCJiaXRzJDAiLCJpbnQkMSIsImZ1bGxfaW50JDAiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsInNjYWxlIiwiYm9vbCQwIiwiYml0czMyJDAiLCJiaXRzNjQkMCIsIm5hdGl2ZWJpdHMkMCIsImZ1bGxfaW5pdCIsInNlbGZfaW5pdCIsInNwbGl0JDAiLCJnZXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJvbmdvaW5nX3RyYXZlcnNhbCIsImZsaXBfb25nb2luZ190cmF2ZXJzYWwiLCJwYXJhbXMiLCJyYW5kb21pemVkX2RlZmF1bHQiLCJyYW5kb21pemVkIiwicmFuZG9taXplIiwiaXNfcmFuZG9taXplZCIsInBybmdfa2V5IiwicG93ZXJfMl9hYm92ZSIsImluaXRpYWxfc2l6ZSIsInJhbmRvbSIsImNvcHlfYnVja2V0bGlzdCIsImtleSQwIiwibmV4dCQwIiwiaW5zZXJ0X2FsbF9idWNrZXRzIiwiaW5kZXhmdW4iLCJpbnBsYWNlIiwib2RhdGEiLCJuZGF0YSIsIm5zaXplIiwibmRhdGFfdGFpbCIsIm5pZHgiLCJtYXRjaCQwIiwib3NpemUiLCJvbGRfdHJhdiIsImZpbHRlcl9tYXBfaW5wbGFjZSIsImJ1Y2tldF9sZW5ndGgiLCJzdGF0cyIsIm1ibCIsImhpc3RvIiwidGJsX2RhdGEiLCJidWNrIiwiYnVjayQwIiwiYnVjayQxIiwidG9fc2VxX2tleXMiLCJ0b19zZXFfdmFsdWVzIiwia2V5X2luZGV4IiwiYnVja2V0IiwiazEiLCJuZXh0MSIsImsyIiwibmV4dDIiLCJrMyIsImQzIiwibmV4dDMiLCJmaW5kX2luX2J1Y2tldCIsInJlcGxhY2UiLCJyZXBsYWNlX3NlcSIsInNlZWRlZF9oYXNoIiwiaGFzaF9wYXJhbSIsInJlYnVpbGQiLCJnZXRfY29weSIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJzeiQwIiwic3okMSIsImNvdW50X2J1Y2tldCIsImNvdW50IiwiYWRkX2F1eCIsInNldHRlciIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJvbGRsZW4iLCJuZXd0Iiwib2IiLCJvaSIsIm9oIiwic2V0dGVyJDAiLCJuaSIsImZpbmRfb3IiLCJpZm5vdGZvdW5kIiwiZmluZF9zaGFkb3ciLCJpZmZvdW5kIiwibGVucyIsInRvdGxlbiIsInVua25vd24iLCJwcF9lbnF1ZXVlIiwidG9rZW4iLCJwcF9pbmZpbml0eSIsInBwX291dHB1dF9zdHJpbmciLCJwcF9vdXRwdXRfbmV3bGluZSIsImZvcm1hdF9wcF90ZXh0IiwidGV4dCIsImZvcm1hdF9zdHJpbmciLCJicmVha19uZXdfbGluZSIsInJlYWxfaW5kZW50IiwiYnJlYWtfbGluZSIsImJyZWFrX3NhbWVfbGluZSIsImZvcm1hdF9wcF90b2tlbiIsInNpemUkMCIsInRhYnMiLCJhZGRfdGFiIiwibHMiLCJ0YWdfbmFtZSIsIm1hcmtlciIsImJyZWFrcyIsImZpdHMiLCJvZmYiLCJib3hfdHlwZSQwIiwib2ZmJDAiLCJpbnNlcnRpb25fcG9pbnQiLCJ0YWJzJDAiLCJmaXJzdCIsImhlYWQiLCJ0YWIiLCJvZmYkMSIsImluc2VydGlvbl9wb2ludCQwIiwid2lkdGgkMiIsImJveF90eXBlJDEiLCJ0Ym94IiwidGFnX25hbWUkMCIsIm1hcmtlciQwIiwiYWR2YW5jZV9sZWZ0IiwicGVuZGluZ19jb3VudCIsImVucXVldWVfYWR2YW5jZSIsImVucXVldWVfc3RyaW5nX2FzIiwiaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIiwic3RhY2siLCJxdWV1ZV9lbGVtIiwic2V0X3NpemUiLCJsZWZ0X3RvdGFsIiwic2Nhbl9wdXNoIiwiZWxlbSIsInBwX29wZW5fYm94X2dlbiIsImJyX3R5IiwicHBfY2xvc2VfYm94IiwicHBfb3Blbl9zdGFnIiwicHBfY2xvc2Vfc3RhZyIsInBwX3NldF9wcmludF90YWdzIiwicHBfc2V0X21hcmtfdGFncyIsInBwX2dldF9wcmludF90YWdzIiwicHBfZ2V0X21hcmtfdGFncyIsInBwX3NldF90YWdzIiwicHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9uIiwicGN0IiwicG90IiwibWN0IiwibW90IiwicHBfcmluaXQiLCJwcF9mbHVzaF9xdWV1ZSIsInBwX3ByaW50X2FzX3NpemUiLCJwcF9wcmludF9hcyIsImlzaXplIiwicHBfcHJpbnRfc3RyaW5nIiwicHBfcHJpbnRfYnl0ZXMiLCJwcF9wcmludF9pbnQiLCJwcF9wcmludF9mbG9hdCIsInBwX3ByaW50X2Jvb2wiLCJwcF9wcmludF9jaGFyIiwicHBfb3Blbl9oYm94IiwicHBfb3Blbl92Ym94IiwicHBfb3Blbl9odmJveCIsInBwX29wZW5faG92Ym94IiwicHBfb3Blbl9ib3giLCJwcF9wcmludF9uZXdsaW5lIiwicHBfcHJpbnRfZmx1c2giLCJwcF9mb3JjZV9uZXdsaW5lIiwicHBfcHJpbnRfaWZfbmV3bGluZSIsInBwX3ByaW50X2N1c3RvbV9icmVhayIsInBwX3ByaW50X2JyZWFrIiwicHBfcHJpbnRfc3BhY2UiLCJwcF9wcmludF9jdXQiLCJwcF9vcGVuX3Rib3giLCJwcF9jbG9zZV90Ym94IiwicHBfcHJpbnRfdGJyZWFrIiwicHBfcHJpbnRfdGFiIiwicHBfc2V0X3RhYiIsInBwX3NldF9tYXhfYm94ZXMiLCJwcF9nZXRfbWF4X2JveGVzIiwicHBfb3Zlcl9tYXhfYm94ZXMiLCJwcF9zZXRfZWxsaXBzaXNfdGV4dCIsInBwX2dldF9lbGxpcHNpc190ZXh0IiwicHBfbGltaXQiLCJwcF9zZXRfbWF4X2luZGVudCIsInBwX2dldF9tYXhfaW5kZW50IiwicHBfc2V0X21hcmdpbiIsIm5ld19tYXhfaW5kZW50IiwidmFsaWRhdGVfZ2VvbWV0cnkiLCJtYXJnaW4iLCJtYXhfaW5kZW50IiwiY2hlY2tfZ2VvbWV0cnkiLCJnZW9tZXRyeSIsInBwX2dldF9tYXJnaW4iLCJwcF9zZXRfZnVsbF9nZW9tZXRyeSIsInBwX3NldF9nZW9tZXRyeSIsInBwX3NhZmVfc2V0X2dlb21ldHJ5IiwicHBfZ2V0X2dlb21ldHJ5IiwicHBfdXBkYXRlX2dlb21ldHJ5IiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwicHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3RpIiwiZGlzcGxheV9uZXdsaW5lIiwiYmxhbmtfbGluZSIsImRpc3BsYXlfYmxhbmtzIiwicHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsImRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyIsImRlZmF1bHRfcHBfbWFya19jbG9zZV90YWciLCJkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnIiwiZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWciLCJwcF9tYWtlX2Zvcm1hdHRlciIsInBwX3F1ZXVlIiwic3lzX3RvayIsInNjYW5fc3RhY2siLCJmb3JtYXR0ZXJfb2Zfb3V0X2Z1bmN0aW9ucyIsIm91dF9mdW5zIiwibWFrZV9mb3JtYXR0ZXIiLCJmbHVzaCIsInBwZiIsImZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCIsImZvcm1hdHRlcl9vZl9idWZmZXIiLCJwcF9idWZmZXJfc2l6ZSIsInBwX21ha2VfYnVmZmVyIiwic3RkYnVmIiwic3RkX2Zvcm1hdHRlciIsImVycl9mb3JtYXR0ZXIiLCJzdHJfZm9ybWF0dGVyIiwic3RkYnVmX2tleSIsInN0cl9mb3JtYXR0ZXJfa2V5IiwiYnVmZmVyZWRfb3V0X3N0cmluZyIsImJ1ZmZlcmVkX291dF9mbHVzaCIsInN0ZF9idWZfa2V5IiwiZXJyX2J1Zl9rZXkiLCJzdGRfZm9ybWF0dGVyX2tleSIsImVycl9mb3JtYXR0ZXJfa2V5IiwiZ2V0X3N0ZF9mb3JtYXR0ZXIiLCJnZXRfZXJyX2Zvcm1hdHRlciIsImdldF9zdHJfZm9ybWF0dGVyIiwiZ2V0X3N0ZGJ1ZiIsImZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIiLCJmbHVzaF9zdHJfZm9ybWF0dGVyIiwibWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIiwib3V0cHV0JDAiLCJmbHVzaCQwIiwic3luY2hyb25pemVkX2Zvcm1hdHRlcl9vZl9vdXRfIiwibWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsInNvYiIsImdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIiwiZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsIml0ZW1zIiwiYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIiwiaXRlbSIsImZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYiIsIm9wZW5faGJveCIsIm9wZW5fdmJveCIsIm9wZW5faHZib3giLCJvcGVuX2hvdmJveCIsIm9wZW5fYm94IiwiY2xvc2VfYm94Iiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwib3B0JDEiLCJwcF9wcmludF9zZXEiLCJzZXEkMSIsInNlcSQyIiwicHBfcHJpbnRfdGV4dCIsInBwX3ByaW50X29wdGlvbiIsInBwX3ByaW50X3Jlc3VsdCIsInBwX3ByaW50X2VpdGhlciIsImNvbXB1dGVfdGFnIiwidGFnX2FjYyIsIm91dHB1dF9mb3JtYXR0aW5nX2xpdCIsImJ0eSIsInAkNiIsInAkNyIsInNpemUkMSIsInAkOCIsImtkcHJpbnRmIiwiZHByaW50ZiIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsImZzIiwiZnMkMCIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsImludmFsaWRhdGVfY3VycmVudF9jaGFyIiwidG9rZW5fc3RyaW5nIiwidG9rZW5fYnVmZmVyIiwic2tpcF9jaGFyIiwiaWdub3JlX2NoYXIiLCJzdG9yZV9jaGFyIiwiZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSIsImluYW1lIiwic2Nhbl9jbG9zZV9hdF9lbmQiLCJzY2FuX3JhaXNlX2F0X2VuZCIsImZyb21faWMiLCJzY2FuX2Nsb3NlX2ljIiwiZW9mIiwib3Blbl9pbl9maWxlIiwiY2xvc2VfaW4iLCJpYyQwIiwiYmFkX2lucHV0IiwiYmFkX2lucHV0X2VzY2FwZSIsImJhZF90b2tlbl9sZW5ndGgiLCJtZXNzYWdlIiwiYmFkX2Zsb2F0IiwiYmFkX2hleF9mbG9hdCIsImNoYXJhY3Rlcl9taXNtYXRjaCIsImNpIiwiY2hlY2tfY2hhciIsImNoZWNrX3RoaXNfY2hhciIsInRva2VuX2NoYXIiLCJ0b2tlbl9ib29sIiwiaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIiLCJ0b2tlbl9pbnRfbGl0ZXJhbCIsImNvbnYiLCJ0b2tlbl9mbG9hdCIsInNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIiwic2Nhbl9kZWNpbWFsX2RpZ2l0X3BsdXMiLCJzY2FuX2RpZ2l0X3BsdXMiLCJiYXNpcyIsImRpZ2l0cCIsIndpZHRoJDMiLCJpc19iaW5hcnlfZGlnaXQiLCJzY2FuX2JpbmFyeV9pbnQiLCJpc19vY3RhbF9kaWdpdCIsInNjYW5fb2N0YWxfaW50IiwiaXNfaGV4YV9kaWdpdCIsInNjYW5faGV4YWRlY2ltYWxfaW50Iiwic2Nhbl9zaWduIiwic2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsIiwic2Nhbl9pbnRfY29udmVyc2lvbiIsInNjYW5fZnJhY3Rpb25hbF9wYXJ0Iiwic2Nhbl9leHBvbmVudF9wYXJ0Iiwic2Nhbl9mbG9hdCIsInByZWNpc2lvbiIsInByZWNpc2lvbiQwIiwiY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmciLCJsb3dlcmNhc2UiLCJzY2FuX2hleF9mbG9hdCIsIndpZHRoJDQiLCJ3aWR0aCQ1Iiwid2lkdGgkNiIsIndpZHRoJDEwIiwid2lkdGgkNyIsIndpZHRoJDgiLCJ3aWR0aCQ5Iiwic2Nhbl9jYW1sX2Zsb2F0X3Jlc3QiLCJ3aWR0aF9wcmVjaXNpb24iLCJmcmFjX3dpZHRoIiwic2Nhbl9jYW1sX2Zsb2F0Iiwic2Nhbl9zdHJpbmciLCJzdHAiLCJoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIiwiY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmciLCJzY2FuX2JhY2tzbGFzaF9jaGFyIiwiYzAiLCJnZXRfZGlnaXQkMCIsImMxJDAiLCJjMiQwIiwiZ2V0X2RpZ2l0Iiwic2Nhbl9jYW1sX3N0cmluZyIsImZpbmRfc3RvcCQwIiwic2tpcF9zcGFjZXMiLCJmaW5kX3N0b3AiLCJzY2FuX2NoYXJzX2luX2NoYXJfc2V0Iiwic2Nhbl9pbmRpYyIsInNjYW5fY2hhcnMiLCJzY2FuZl9iYWRfaW5wdXQiLCJ3aWR0aF9vZl9wYWRfb3B0Iiwic3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCIsImZtdGluZyIsInRha2VfZm9ybWF0X3JlYWRlcnMkMCIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMkMCIsInJlYWRlciIsIm5ld19rIiwicmVhZGVyc19yZXN0IiwidGFrZV9mb3JtYXRfcmVhZGVycyIsInRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMiLCJtYWtlX3NjYW5mIiwicmVhZGVycyIsInNjYW4kMCIsInN0cl9yZXN0IiwicGFkX3ByZWNfc2NhbmYiLCJzY2FuJDEiLCJzY2FuJDIiLCJzY2FuJDMiLCJzY2FuJDQiLCJjb252JDAiLCJzY2FuJDUiLCJjb252JDEiLCJzY2FuJDYiLCJjb252JDIiLCJzY2FuJDciLCJzY2FuJDgiLCJmbXRpbmdfbGl0JDAiLCJzdHAkMCIsInMkMiIsInN0cl9yZXN0JDAiLCJhcmdfcmVzdCIsImtzY2FuZl9nZW4iLCJlZiIsImFyZ3MkMSIsImV4YyQwIiwiZXhjIiwiYXJncyQwIiwia3NjYW5mIiwia3NjYW5mX29wdCIsImJzY2FuZiIsImJzY2FuZl9vcHQiLCJrc3NjYW5mIiwic3NjYW5mIiwic3NjYW5mX29wdCIsInNjYW5mIiwic2NhbmZfb3B0IiwiYnNjYW5mX2Zvcm1hdCIsImZvcm1hdCIsInNzY2FuZl9mb3JtYXQiLCJmb3JtYXRfZnJvbV9zdHJpbmciLCJ1bmVzY2FwZWQiLCJyZWdpc3RlciIsInJlZ2lzdGVyX2V4Y2VwdGlvbiIsIm8kMCIsImluaXRpYWxfb2JqZWN0X3NpemUiLCJkdW1teV9pdGVtIiwicHVibGljX21ldGhvZF9sYWJlbCIsInRhZyIsImNvbXBhcmUkMCIsImNvbXBhcmUkMSIsImR1bW15X3RhYmxlIiwidGFibGVfY291bnQiLCJkdW1teV9tZXQiLCJmaXRfc2l6ZSIsIm5ld190YWJsZSIsInB1Yl9sYWJlbHMiLCJtZXRob2RzIiwiYXJyYXkiLCJuZXdfc2l6ZSIsIm9sZF9zaXplIiwibmV3X2J1Y2siLCJtZXRob2RfY291bnQiLCJpbnN0X3Zhcl9jb3VudCIsIm5ld19tZXRob2QiLCJ0YWJsZSIsImdldF9tZXRob2RfbGFiZWwiLCJsYWJlbCIsImdldF9tZXRob2RfbGFiZWxzIiwibmFtZXMiLCJzZXRfbWV0aG9kIiwiZWxlbWVudCIsImdldF9tZXRob2QiLCJuYXJyb3ciLCJ2YXJzIiwidmlydF9tZXRocyIsImNvbmNyX21ldGhzIiwidmFycyQwIiwidmlydF9tZXRocyQwIiwiY29uY3JfbWV0aHMkMCIsInZpcnRfbWV0aF9sYWJzIiwiY29uY3JfbWV0aF9sYWJzIiwibGFiIiwidHZhcnMiLCJieV9uYW1lIiwiYnlfbGFiZWwiLCJtZXQiLCJobSIsIndpZGVuIiwic2F2ZWRfdmFycyIsInNhdmVkX2hpZGRlbl9tZXRocyIsIm5ld192YXJpYWJsZSIsInRvX2FycmF5IiwibmV3X21ldGhvZHNfdmFyaWFibGVzIiwibWV0aHMiLCJ2YWxzIiwibWV0aHMkMCIsIm5tZXRocyIsIm52YWxzIiwiZ2V0X3ZhcmlhYmxlIiwiZ2V0X3ZhcmlhYmxlcyIsImFkZF9pbml0aWFsaXplciIsImNyZWF0ZV90YWJsZSIsInB1YmxpY19tZXRob2RzIiwidGFncyIsImluaXRfY2xhc3MiLCJpbmhlcml0cyIsImNsYSIsInN1cGVyJDAiLCJubSIsIm1ha2VfY2xhc3MiLCJwdWJfbWV0aHMiLCJjbGFzc19pbml0IiwiZW52X2luaXQiLCJtYWtlX2NsYXNzX3N0b3JlIiwiaW5pdF90YWJsZSIsImR1bW15X2NsYXNzIiwibG9jIiwidW5kZWYiLCJjcmVhdGVfb2JqZWN0IiwiY3JlYXRlX29iamVjdF9vcHQiLCJvYmpfMCIsIml0ZXJfZiIsInJ1bl9pbml0aWFsaXplcnMiLCJpbml0cyIsInJ1bl9pbml0aWFsaXplcnNfb3B0IiwiY3JlYXRlX29iamVjdF9hbmRfcnVuX2luaXRpYWxpIiwiZ2V0X2RhdGEiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290Iiwicm9vdF9kYXRhIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsInRhYmxlc19kYXRhIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJjbG8kMCIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIngkMyIsIm4kNyIsIngkNCIsIm4kOCIsIm4kOSIsIngkNSIsImYkOCIsImUkMiIsIm4kMTAiLCJ4JDYiLCJmJDkiLCJuJDExIiwieCQ3IiwibiQxMiIsIngkOCIsIm4kMTMiLCJuJDE0IiwiZSQzIiwibiQxNSIsIm0kMSIsIm0kMiIsIngkOSIsIm0kMyIsIm4kMTYiLCJtJDQiLCJlJDQiLCJuJDE3IiwibSQ1IiwibiQxOCIsImluaXRfbW9kX2Jsb2NrIiwiY29tcHMkMCIsIm1vZHUiLCJzaGFwZSIsImZuJDAiLCJjb21wcyIsImluaXRfbW9kIiwidXBkYXRlX21vZF9ibG9jayIsImNsIiwidXBkYXRlX21vZCIsInBybmciLCJoa2V5IiwiY2xlYW4iLCJkb19idWNrZXQiLCJpbnNlcnRfYnVja2V0IiwiY29udGFpbmVyIiwicmVtb3ZlX2J1Y2tldCIsImhrIiwiYnVja2V0X2xlbmd0aF9hbGl2ZSIsInN0YXRzX2FsaXZlIiwic2V0X2RhdGEiLCJlcGgiLCJxdWVyeSIsInNldF9rZXlfZGF0YSIsInRlc3Rfa2V5IiwidCQwIiwiZ2V0X2tleTEiLCJzZXRfa2V5MSIsImdldF9rZXkyIiwic2V0X2tleTIiLCJnZXRfZGF0YSQwIiwic2V0X2RhdGEkMCIsIm1ha2UkMSIsImtleTEiLCJrZXkyIiwicXVlcnkkMCIsImsyJDAiLCJrMSQwIiwiZXF1YWwkMCIsInNlZWRlZF9oYXNoJDAiLCJtYWtlJDIiLCJhZGQkMCIsInRlc3Rfa2V5cyIsInJlbW92ZSQwIiwiZmluZCQwIiwibGVuZ3RoJDAiLCJjbGVhciQwIiwibGVuZ3RoJDEiLCJnZXRfa2V5JDAiLCJzZXRfa2V5JDAiLCJnZXRfZGF0YSQxIiwic2V0X2RhdGEkMSIsIm1ha2UkMyIsInF1ZXJ5JDEiLCJtYWtlJDQiLCJhZGQkMSIsInRlc3Rfa2V5cyQwIiwicmVtb3ZlJDEiLCJmaW5kJDEiLCJsZW5ndGgkMiIsImNsZWFyJDEiLCJudWxsJDAiLCJjdXJyZW50X2Rpcl9uYW1lIiwicGFyZW50X2Rpcl9uYW1lIiwiZGlyX3NlcCIsInF1b3RlcXVvdGUiLCJudWxsJDEiLCJjdXJyZW50X2Rpcl9uYW1lJDAiLCJwYXJlbnRfZGlyX25hbWUkMCIsImRpcl9zZXAkMCIsIm51bGwkMiIsImN1cnJlbnRfZGlyX25hbWUkMSIsInBhcmVudF9kaXJfbmFtZSQxIiwiZGlyX3NlcCQxIiwiZ2VuZXJpY19iYXNlbmFtZSIsImlzX2Rpcl9zZXAiLCJnZW5lcmljX2Rpcm5hbWUiLCJpc19yZWxhdGl2ZSIsImlzX2ltcGxpY2l0IiwiY2hlY2tfc3VmZml4Iiwic3VmZiIsImNob3Bfc3VmZml4X29wdCIsImxlbl9mIiwidGVtcF9kaXJfbmFtZSIsInF1b3RlIiwicXVvdGVfY29tbWFuZCIsImJhc2VuYW1lIiwiZGlybmFtZSIsImlzX2Rpcl9zZXAkMCIsImlzX3JlbGF0aXZlJDAiLCJpc19pbXBsaWNpdCQwIiwiY2hlY2tfc3VmZml4JDAiLCJjaG9wX3N1ZmZpeF9vcHQkMCIsInRlbXBfZGlyX25hbWUkMCIsInF1b3RlJDAiLCJsb29wJDAiLCJsb29wX2JzIiwiYWRkX2JzIiwicXVvdGVfY21kX2ZpbGVuYW1lIiwicXVvdGVfY29tbWFuZCQwIiwiZHJpdmVfYW5kX3BhdGgiLCJkaXJuYW1lJDAiLCJwYXRoIiwiZHJpdmUiLCJkaXIiLCJiYXNlbmFtZSQwIiwiYmFzZW5hbWUkMSIsImRpcm5hbWUkMSIsIm51bGwkMyIsImN1cnJlbnRfZGlyX25hbWUkMiIsInBhcmVudF9kaXJfbmFtZSQyIiwiZGlyX3NlcCQyIiwiaXNfZGlyX3NlcCQxIiwiaXNfcmVsYXRpdmUkMSIsImlzX2ltcGxpY2l0JDEiLCJjaGVja19zdWZmaXgkMSIsImNob3Bfc3VmZml4X29wdCQxIiwidGVtcF9kaXJfbmFtZSQxIiwicXVvdGUkMSIsInF1b3RlX2NvbW1hbmQkMSIsImJhc2VuYW1lJDIiLCJkaXJuYW1lJDIiLCJjaG9wX3N1ZmZpeCIsImV4dGVuc2lvbl9sZW4iLCJpMCIsImV4dGVuc2lvbiIsImNob3BfZXh0ZW5zaW9uIiwicmVtb3ZlX2V4dGVuc2lvbiIsInRlbXBfZmlsZV9uYW1lIiwidGVtcF9kaXIiLCJyYW5kb21fc3RhdGUiLCJybmQiLCJjdXJyZW50X3RlbXBfZGlyX25hbWUiLCJzZXRfdGVtcF9kaXJfbmFtZSIsImdldF90ZW1wX2Rpcl9uYW1lIiwidGVtcF9maWxlIiwib3Blbl90ZW1wX2ZpbGUiLCJzdGgkMCIsInBlcm1zIiwic3RoJDEiLCJuZWciLCJjb25qIiwibXVsIiwiZGl2IiwiaW52Iiwibm9ybTIiLCJub3JtIiwicG9sYXIiLCJzcXJ0IiwicSQwIiwidyQwIiwiZXhwIiwibG9nIiwicG93Iiwib3Blbl9iaW4iLCJvcGVuX3RleHQiLCJvcGVuX2dlbiIsIndpdGhfb3BlbiIsIm9wZW5mdW4iLCJ3aXRoX29wZW5fYmluIiwid2l0aF9vcGVuX3RleHQiLCJ3aXRoX29wZW5fZ2VuIiwic2VlayIsImNsb3NlIiwiY2xvc2Vfbm9lcnIiLCJpbnB1dF9jaGFyIiwiaW5wdXRfYnl0ZSIsInJlYWRfdXB0byIsImVuc3VyZSIsIm5ld19sZW4kMCIsIm5ld19sZW4kMSIsImlucHV0X2FsbCIsImNodW5rX3NpemUiLCJpbml0aWFsX3NpemUkMCIsImluaXRpYWxfc2l6ZSQxIiwibnJlYWQiLCJidWYkMiIsImJ1ZiQwIiwiYnVmJDEiLCJyZW0iLCJzZXRfYmluYXJ5X21vZGUiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwicHJpbnRlciIsImNvbnRpbnVlJDAiLCJkaXNjb250aW51ZSIsImRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIiwibWF0Y2hfd2l0aCIsImNvbXAiLCJoYW5kbGVyIiwiZWZmYyIsImVmZiIsImxhc3RfZmliZXIiLCJ0cnlfd2l0aCIsImZpYmVyIiwiY29udGludWVfZ2VuIiwicmVzdW1lX2Z1biIsImNvbnRpbnVlX3dpdGgiLCJkaXNjb250aW51ZV93aXRoIiwiZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UkMCIsInNleHBfb2ZfdCIsInQiLCJ0X29mX3NleHAiLCJjb21wYXJlIiwiYSQwIiwiYiQwIiwiYSQxIiwiYiQxIiwiYSQyIiwiYiQyIiwiYSIsImIiLCJ5cyIsInkiLCJ4cyIsIngiLCJyZXMiLCJlcXVhbCIsImRlZmF1bHRfaW5kZW50IiwibXVzdF9lc2NhcGUiLCJzdHIiLCJsZW4iLCJpeCQxIiwiaXgiLCJuZXh0IiwibmV4dCQwIiwiaXgkMCIsImVzY2FwZWQiLCJzIiwibiIsImkkMCIsInMkMCIsImkiLCJjIiwiZXNjX3N0ciIsImVzdHIiLCJlbGVuIiwiaW5kZXhfb2ZfbmV3bGluZSIsInN0YXJ0IiwibWFjaF9tYXliZV9lc2Nfc3RyIiwicHBfaHVtX2luZGVudCIsImluZGVudCIsInBwZiIsImluZGV4IiwiaW5kZXgkMCIsIm5leHRfbmV3bGluZSIsImVuZF9wb3MiLCJlbmRfcG9zJDAiLCJuZXh0X2xpbmUiLCJuZXdsaW5lX2luZGV4IiwiaW5kZXgkMSIsImgiLCJ0JDAiLCJoJDAiLCJwcF9tYWNoX2ludGVybmFsIiwibWF5X25lZWRfc3BhY2UiLCJzdHIkMCIsIm5ld19tYXlfbmVlZF9zcGFjZSIsIm5ld19tYXlfbmVlZF9zcGFjZSQwIiwibWF5X25lZWRfc3BhY2UkMCIsIm1heV9uZWVkX3NwYWNlJDEiLCJtYXlfbmVlZF9zcGFjZSQyIiwicHBfaHVtIiwic2V4cCIsInBwX21hY2giLCJzaXplX2xvb3AiLCJhY2MiLCJ2IiwibHN0Iiwic2l6ZSIsInRvX2J1ZmZlcl9odW0iLCJidWYiLCJvcHQiLCJzdGgiLCJ0b19idWZmZXJfbWFjaCIsImxvb3AiLCJ0b19idWZmZXJfZ2VuIiwiYWRkX2NoYXIiLCJhZGRfc3RyaW5nIiwiYnVmZmVyIiwidG9fc3RyaW5nX2h1bSIsInRvX3N0cmluZ19tYWNoIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJtZXNzYWdlIiwibmFtZSIsImZpZWxkcyIsImNvbnZfZmllbGRzIiwicmVzdCIsImZzZXhwIiwiZm5hbWUiLCJkb2NfY29tbWVudF90YWciLCJjb2VyY2UiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfdF9zZXhwX2dyYW1tYXIiLCJlbXB0eV9zZXhwX2dyYW1tYXIiLCJib29sX3NleHBfZ3JhbW1hciIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsImludF9zZXhwX2dyYW1tYXIiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJpbnQ2NF9zZXhwX2dyYW1tYXIiLCJuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIiwicmVmX3NleHBfZ3JhbW1hciIsImdyYW1tYXIiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInBhcmFtIiwibGlzdF9zZXhwX2dyYW1tYXIiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJkZWZhdWx0X3N0cmluZ19vZl9mbG9hdCIsInJlYWRfb2xkX29wdGlvbl9mb3JtYXQiLCJ3cml0ZV9vbGRfb3B0aW9uX2Zvcm1hdCIsImxpc3RfbWFwIiwiZiIsImwiLCJzZXhwX29mX3VuaXQiLCJzZXhwX29mX2Jvb2wiLCJzZXhwX29mX3N0cmluZyIsInNleHBfb2ZfYnl0ZXMiLCJieXRlcyIsInNleHBfb2ZfY2hhciIsInNleHBfb2ZfaW50Iiwic2V4cF9vZl9mbG9hdCIsInNleHBfb2ZfaW50MzIiLCJzZXhwX29mX2ludDY0Iiwic2V4cF9vZl9uYXRpdmVpbnQiLCJzZXhwX29mX3JlZiIsInNleHBfb2ZfYSIsInJmIiwic2V4cF9vZl9sYXp5X3QiLCJsdiIsInNleHBfb2Zfb3B0aW9uIiwic2V4cF9vZl9wYWlyIiwic2V4cF9vZl9iIiwic2V4cF9vZl90cmlwbGUiLCJzZXhwX29mX2MiLCJzZXhwX29mX2xpc3QiLCJzZXhwX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwic2V4cF9vZl9oYXNodGJsIiwic2V4cF9vZl9rZXkiLCJzZXhwX29mX3ZhbCIsImh0YmwiLCJjb2xsIiwiayIsInNleHBfb2Zfb3BhcXVlIiwic2V4cF9vZl9mdW4iLCJoYXNoIiwidGhlX2V4bl90YWJsZSIsImFkZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsInNleHBfb2ZfZXhuIiwicHJpbnRleGMiLCJmaW5kX2F1dG8iLCJmb3JfcHJpbnRleGMiLCJleG4iLCJzZXhwX29mX2V4bl9vcHQiLCJleG5fdG9fc3RyaW5nIiwiZSIsInByaW50ZXhjX3ByZWZlcl9zZXhwIiwicmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZXhjIiwib2Zfc2V4cF9lcnJvciIsIndoYXQiLCJ1bml0X29mX3NleHAiLCJib29sX29mX3NleHAiLCJzdHJpbmdfb2Zfc2V4cCIsImJ5dGVzX29mX3NleHAiLCJjaGFyX29mX3NleHAiLCJpbnRfb2Zfc2V4cCIsImV4YyQwIiwiZmxvYXRfb2Zfc2V4cCIsImludDMyX29mX3NleHAiLCJpbnQ2NF9vZl9zZXhwIiwibmF0aXZlaW50X29mX3NleHAiLCJyZWZfb2Zfc2V4cCIsImFfb2Zfc2V4cCIsImxhenlfdF9vZl9zZXhwIiwib3B0aW9uX29mX3NleHAiLCJlbCQwIiwiZWwiLCJwYWlyX29mX3NleHAiLCJiX29mX3NleHAiLCJiX3NleHAiLCJhX3NleHAiLCJ0cmlwbGVfb2Zfc2V4cCIsImNfb2Zfc2V4cCIsImNfc2V4cCIsImxpc3Rfb2Zfc2V4cCIsInJldl9sc3QiLCJhcnJheV9vZl9zZXhwIiwiaGFzaHRibF9vZl9zZXhwIiwia2V5X29mX3NleHAiLCJ2YWxfb2Zfc2V4cCIsImFjdCIsInZfc2V4cCIsImtfc2V4cCIsIm9wYXF1ZV9vZl9zZXhwIiwiZnVuX29mX3NleHAiLCJnZXRfZmxjX2Vycm9yIiwiY2hyIiwibGluZSIsImZpbGUiLCJhcmciLCJoYW5kbGVyIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3NleHBfYm9vbF93aXRoX3BheWxvYWQiLCJyZWNvcmRfb25seV9wYWlyc19leHBlY3RlZCIsInJlY29yZF9zdXBlcmZsdW91c19maWVsZHMiLCJyZXZfZmxkX25hbWVzIiwiZmxkX25hbWVzX3N0ciIsInJlY29yZF9kdXBsaWNhdGVfZmllbGRzIiwicmVjb3JkX2V4dHJhX2ZpZWxkcyIsInJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AiLCJmaWVsZHMkMCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJkZXNjZW5kaW5nIiwieCIsInkiLCJtYXgiLCJtaW4iLCJtYXhfaW50IiwibWluX2ludCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsImNoYXJfb2ZfaW50Iiwic3RyaW5nX29mX2Jvb2wiLCJib29sX29mX3N0cmluZ19vcHQiLCJib29sX29mX3N0cmluZyIsInN0cmluZ19vZl9pbnQiLCJpbnRfb2Zfc3RyaW5nX29wdCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsInByaW50X2NoYXIiLCJwcmludF9zdHJpbmciLCJwcmludF9ieXRlcyIsInByaW50X2ludCIsInByaW50X2Zsb2F0IiwicHJpbnRfZW5kbGluZSIsInByaW50X25ld2xpbmUiLCJwcmVycl9jaGFyIiwicHJlcnJfc3RyaW5nIiwicHJlcnJfYnl0ZXMiLCJwcmVycl9pbnQiLCJwcmVycl9mbG9hdCIsInByZXJyX2VuZGxpbmUiLCJwcmVycl9uZXdsaW5lIiwicmVhZF9saW5lIiwicmVhZF9pbnRfb3B0IiwicmVhZF9pbnQiLCJyZWFkX2Zsb2F0X29wdCIsInJlYWRfZmxvYXQiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsIm9wZW5fb3V0X2dlbiIsImZsdXNoIiwiZmx1c2hfYWxsIiwib3V0cHV0X2NoYXIiLCJvdXRwdXRfc3RyaW5nIiwib3V0cHV0X2J5dGVzIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfdmFsdWUiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9vdXQiLCJjbG9zZV9vdXRfbm9lcnIiLCJzZXRfYmluYXJ5X21vZGVfb3V0Iiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwib3Blbl9pbl9nZW4iLCJpbnB1dF9jaGFyIiwiaW5wdXRfbGluZSIsImlucHV0IiwicmVhbGx5X2lucHV0IiwicmVhbGx5X2lucHV0X3N0cmluZyIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsImNsb3NlX2luX25vZXJyIiwic2V0X2JpbmFyeV9tb2RlX2luIiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCIsImV4aXQiLCJhdF9leGl0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJ1bnNhZmVfcmVhbGx5X2lucHV0IiwiZG9fYXRfZXhpdCIsImRvX2RvbWFpbl9sb2NhbF9hdF9leGl0IiwiYm9vbF90b19pbnQiLCJzeW1ib2wkMyIsInN5bWJvbCQ0Iiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsImFzY2VuZGluZyIsIm1heCQwIiwibWluJDAiLCJhc2NlbmRpbmckMCIsImRlc2NlbmRpbmckMCIsIm1heCQxIiwibWluJDEiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMTgiLCJhc2NlbmRpbmckMSIsImRlc2NlbmRpbmckMSIsImNvbXBhcmUiLCJlcXVhbCIsIm1heCQyIiwibWluJDIiLCJhc2NlbmRpbmckMiIsImRlc2NlbmRpbmckMiIsIm1heCQzIiwibWluJDMiLCJzeW1ib2wkMTkiLCJzeW1ib2wkMjAiLCJzeW1ib2wkMjEiLCJzeW1ib2wkMjIiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJhc2NlbmRpbmckMyIsImRlc2NlbmRpbmckMyIsImNvbXBhcmUkMCIsImVxdWFsJDAiLCJtYXgkNCIsIm1pbiQ0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiYXNjZW5kaW5nJDQiLCJkZXNjZW5kaW5nJDQiLCJjb21wYXJlJDEiLCJlcXVhbCQxIiwibWF4JDUiLCJtaW4kNSIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsInN5bWJvbCQzNSIsInN5bWJvbCQzNiIsImFzY2VuZGluZyQ1IiwiZGVzY2VuZGluZyQ1IiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQ2IiwibWluJDYiLCJpIiwic3ltYm9sJDM3Iiwic3ltYm9sJDM4Iiwic3ltYm9sJDM5Iiwic3ltYm9sJDQwIiwic3ltYm9sJDQxIiwic3ltYm9sJDQyIiwiYXNjZW5kaW5nJDYiLCJkZXNjZW5kaW5nJDYiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwibWF4JDciLCJtaW4kNyIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsImFzY2VuZGluZyQ3IiwiZGVzY2VuZGluZyQ3IiwiY29tcGFyZSQ0IiwiZXF1YWwkNCIsIm1heCQ4IiwibWluJDgiLCJzeW1ib2wkNDkiLCJzeW1ib2wkNTAiLCJzeW1ib2wkNTEiLCJzeW1ib2wkNTIiLCJzeW1ib2wkNTMiLCJzeW1ib2wkNTQiLCJhc2NlbmRpbmckOCIsImRlc2NlbmRpbmckOCIsImNvbXBhcmUkNSIsImVxdWFsJDUiLCJtYXgkOSIsIm1pbiQ5Iiwic3ltYm9sJDU1Iiwic3ltYm9sJDU2Iiwic3ltYm9sJDU3Iiwic3ltYm9sJDU4Iiwic3ltYm9sJDU5Iiwic3ltYm9sJDYwIiwiYXNjZW5kaW5nJDkiLCJkZXNjZW5kaW5nJDkiLCJjb21wYXJlJDYiLCJlcXVhbCQ2IiwibWF4JDEwIiwibWluJDEwIiwic3ltYm9sJDYxIiwic3ltYm9sJDYyIiwic3ltYm9sJDYzIiwic3ltYm9sJDY0IiwiYXNyIiwibGFuZCIsImxub3QkMCIsImxvciIsImxzbCIsImxzciIsImx4b3IiLCJtb2QiLCJhYnMkMCIsImZhaWx3aXRoJDAiLCJmc3QiLCJpbnZhbGlkX2FyZyQwIiwic25kIiwicGh5c19lcXVhbCIsImRlY3IiLCJpbmNyIiwiZmxvYXRfb2Zfc3RyaW5nIiwiYW1fdGVzdGluZyIsImZhaWx3aXRoZiIsImZtdCIsInMiLCJpbnZhbGlkX2FyZ2YiLCJiYWNrZW5kX3R5cGUiLCJpbnRlcmFjdGl2ZSIsIm9zX3R5cGUiLCJ1bml4Iiwid2luMzIiLCJjeWd3aW4iLCJ3b3JkX3NpemVfaW5fYml0cyIsImludF9zaXplX2luX2JpdHMiLCJiaWdfZW5kaWFuIiwibWF4X3N0cmluZ19sZW5ndGgiLCJtYXhfYXJyYXlfbGVuZ3RoIiwicnVudGltZV92YXJpYW50IiwicnVudGltZV9wYXJhbWV0ZXJzIiwiYXJndiIsImdldF9hcmd2Iiwib2NhbWxfdmVyc2lvbiIsImVuYWJsZV9ydW50aW1lX3dhcm5pbmdzIiwicnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiZ2V0ZW52X2V4biIsInZhciQwIiwiZ2V0ZW52IiwibWF4X2xlbmd0aCIsImNyZWF0ZSIsImxlbiIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiYXBwZW5kIiwiYmxpdCIsImNvbmNhdCIsImNvcHkiLCJmaWxsIiwiaW5pdCIsIm1ha2VfbWF0cml4Iiwib2ZfbGlzdCIsInN1YiIsInRvX2xpc3QiLCJmb2xkIiwidCIsImYiLCJmb2xkX3JpZ2h0IiwiaXRlciIsIml0ZXJpIiwibWFwIiwibWFwaSIsInN0YWJsZV9zb3J0Iiwic3dhcCIsImoiLCJlbHRfaSIsImVsdF9qIiwiZXNjYXBlZCIsImxvd2VyY2FzZSIsInRvX2ludCIsInVuc2FmZV9vZl9pbnQiLCJ1cHBlcmNhc2UiLCJpbnRfaXNfb2siLCJtaW5fdmFsdWUiLCJtYXhfdmFsdWUiLCJvZl9pbnQiLCJvZl9pbnRfZXhuIiwidDEiLCJ0MiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInRvX2Zsb2F0Iiwib2ZfZmxvYXQiLCJzdWNjIiwiaGRfZXhuIiwibGVuZ3RoIiwicmV2X2FwcGVuZCIsInRsX2V4biIsInVuemlwIiwiZXhpc3RzIiwiZXhpc3RzMl9vayIsImwxIiwibDIiLCJmb2xkMl9vayIsImZvcl9hbGwiLCJmb3JfYWxsMl9vayIsIml0ZXIyX29rIiwibm9udGFpbF9tYXAiLCJub250YWlsX21hcGkiLCJwYXJ0aXRpb24iLCJyZXZfbWFwIiwicmV2X21hcDJfb2siLCJzb3J0IiwibCIsInJldiIsInJlcyIsInJlc3QiLCJhIiwiYiIsImhhc2hfZm9sZF91bml0IiwiaGFzaF9mb2xkX2ludCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfZm9sZF9mbG9hdCIsImhhc2hfZm9sZF9zdHJpbmciLCJhc19pbnQiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9mb2xkX25hdGl2ZWludCIsImhhc2hfZm9sZF9vcHRpb24iLCJoYXNoX2ZvbGRfZWxlbSIsImhhc2hfZm9sZF9saXN0IiwicyQxIiwibGlzdCQxIiwicyQyIiwibGlzdCIsImxpc3QkMCIsInMkMCIsImhhc2hfZm9sZF9sYXp5X3QiLCJoYXNoX2ZvbGRfcmVmX2Zyb3plbiIsImhhc2hfZm9sZF9hcnJheV9mcm96ZW4iLCJhcnJheSIsImUiLCJpJDAiLCJoYXNoX25hdGl2ZWludCIsImhhc2hfaW50NjQiLCJoYXNoX2ludDMyIiwiaGFzaF9jaGFyIiwiaGFzaF9pbnQiLCJoYXNoX2Jvb2wiLCJoYXNoX3N0cmluZyIsImhhc2hfZmxvYXQiLCJoYXNoX3VuaXQiLCJzZWVkIiwib2ZfZm9sZCIsImhhc2hfZm9sZF90IiwicnVuIiwiZm9sZGVyIiwib3B0Iiwic3RoIiwiY29tcGFyZV9zdGF0ZSIsInN0YXRlX3RvX3N0cmluZyIsInN0YXRlIiwidCQwIiwidCQxIiwidCQyIiwidCQzIiwidCQ0IiwidCQ1IiwiY29tcGFyZV9hYnN0cmFjdCIsInR5cGVfbmFtZSIsImVxdWFsX2Fic3RyYWN0IiwiY29tcGFyZV9ib29sIiwiY29tcGFyZV9jaGFyIiwiY29tcGFyZV9mbG9hdCIsImNvbXBhcmVfaW50IiwiY29tcGFyZV9pbnQzMiIsImNvbXBhcmVfaW50NjQiLCJjb21wYXJlX25hdGl2ZWludCIsImNvbXBhcmVfc3RyaW5nIiwiY29tcGFyZV91bml0IiwiY29tcGFyZV9hcnJheSIsImNvbXBhcmVfZWx0IiwibGVuX2EiLCJsZW5fYiIsInJldCIsInIiLCJjb21wYXJlX2xpc3QiLCJhJDAiLCJiJDAiLCJ5cyIsInhzIiwiY29tcGFyZV9vcHRpb24iLCJjb21wYXJlX3JlZiIsImVxdWFsX2Jvb2wiLCJlcXVhbF9jaGFyIiwiZXF1YWxfaW50IiwiZXF1YWxfaW50MzIiLCJlcXVhbF9pbnQ2NCIsImVxdWFsX25hdGl2ZWludCIsImVxdWFsX3N0cmluZyIsImVxdWFsX3VuaXQiLCJlcXVhbF9mbG9hdCIsImVxdWFsX2FycmF5IiwiZXF1YWxfZWx0IiwiZXF1YWxfbGlzdCIsImVxdWFsX29wdGlvbiIsImVxdWFsX3JlZiIsImFfMDAxIiwiYl8wMDIiLCJhXzAwMyIsImJfMDA0IiwiYV8wMDUiLCJiXzAwNiIsImhhc2giLCJoc3YiLCJhcmciLCJhMCIsImhzdiQwIiwiYTAkMCIsImhzdiQxIiwidF9zZXhwX2dyYW1tYXIiLCJpbnZhcmlhbnQiLCJzZXhwX29mX3QiLCJudW1fYml0cyIsIndvcmRfc2l6ZSIsImFsbCIsInJlZ2lzdGVyIiwicCIsInBwIiwibW9kdWxlX25hbWUiLCJmb3JtYXR0ZXIiLCJhcmcxXzAwMiIsImFyZzBfMDAxIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImFyZzFfMDA2IiwiYXJnMF8wMDUiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwiY3JlYXRlX3MiLCJzZXhwIiwicmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UiLCJiYWNrdHJhY2UiLCJyZXJhaXNlIiwiZXhuIiwic3RyIiwiZXhuJDAiLCJidCIsInJlcmFpc2VmIiwiZXhjIiwiZm9ybWF0IiwidG9fc3RyaW5nX21hY2giLCJzZXhwX29mX3QkMCIsInByb3RlY3R4IiwiZmluYWxseSQwIiwiZmluYWxfZXhuJDAiLCJmaW5hbF9leG4iLCJwcm90ZWN0IiwiZG9lc19yYWlzZSIsInBwZiIsInByaW50X3dpdGhfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9hdXgiLCJleGMkMCIsImhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCIsImhhbmRsZV91bmNhdWdodCIsIm11c3RfZXhpdCIsImV4aXQkMCIsInJlcmFpc2VfdW5jYXVnaHQiLCJmdW5jIiwicmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UiLCJpbml0aWFsaXplX21vZHVsZSIsImNsZWFyX2JhY2t0cmFjZSIsIndpdGhfcmV0dXJuIiwiaXNfYWxpdmUiLCJyZXR1cm4kMCIsIndpdGhfcmV0dXJuX29wdGlvbiIsInByZXBlbmQiLCJwYXJhbSIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCIsImJpbmQiLCJqb2luIiwiaWdub3JlX20iLCJhbGxfdW5pdCIsIm1hcF92aWFfYmluZCIsIm1hIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbF9iaW5kJDEiLCJzeW1ib2xfbWFwJDEiLCJib3RoIiwibG9vcCIsInZzIiwidHMiLCJ2IiwiYmluZCQwIiwicmV0dXJuJDEiLCJtYXAkMCIsInRvX21vbmFkIiwib2ZfbW9uYWQiLCJkZXJpdmVkX21hcCIsIm1hcDIiLCJ0YSIsInRiIiwibWFwMyIsInRjIiwic3ltYm9sJDAiLCJ1Iiwic3ltYm9sJDEiLCJ0ZiIsImZhYiIsImMiLCJhcHBseSIsIm1mIiwibXgiLCJ0eCIsImN1c3RvbV9tYXAiLCJhcHBseSQwIiwiYmxpdF9zdHJpbmciLCJtYWtlIiwidW5zYWZlX2JsaXQiLCJ1bnNhZmVfdG9fc3RyaW5nIiwidW5zYWZlX29mX3N0cmluZ19wcm9taXNlX25vX211IiwiY29tcGFyYXRvciIsImVycm9yX3NvdXJjZV8wMTEiLCJjbXBfZiIsImNtcF9zIiwiaGFzaF9mb2xkX2YiLCJoYXNoX2ZvbGRfcyIsInRfb2Zfc2V4cCIsIm9mX2ZfMDA3Iiwib2Zfc18wMDgiLCJzZXhwXzAxMyIsInRhZ18wMTQiLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsInNleHBfYXJnc18wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3Iiwib2ZfZl8wMjUiLCJvZl9zXzAyNiIsImFyZzBfMDI3IiwicmVzMF8wMjgiLCJhcmcwXzAyOSIsInJlczBfMDMwIiwiZl9zZXhwX2dyYW1tYXIiLCJzX3NleHBfZ3JhbW1hciIsIm9wYXF1ZV9pZGVudGl0eSIsIm5hbWUiLCJnZXQiLCJmc2V0Iiwic2V0dGVyIiwidXBkYXRlciIsImZpZWxkIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInNlcCIsIm4iLCJuJDAiLCJuJDEiLCJoc3YkMiIsInBvc19jbnVtXzAxMCIsInBvc19ib2xfMDA4IiwicG9zX2xudW1fMDA2IiwicG9zX2ZuYW1lXzAwNCIsImFyZ18wMTEiLCJibmRzXzAwMyIsImFyZ18wMDkiLCJibmRzXzAwMyQwIiwiYXJnXzAwNyIsImJuZHNfMDAzJDEiLCJhcmdfMDA1IiwiYm5kc18wMDMkMiIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJtYWtlX2xvY2F0aW9uX3N0cmluZyIsInBvc19mbmFtZSIsInBvc19sbnVtIiwicG9zX2NudW0iLCJwb3NfYm9sIiwiaXNfZW1wdHkiLCJwYXJ0aXRpb25fbWFwIiwiZnN0JDAiLCJ5JDAiLCJzbmQkMCIsImVycm9yX3NvdXJjZV8wMDUiLCJvZl9hXzAwMSIsIm9mX2JfMDAyIiwic2V4cF8wMDciLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsIm9mX2FfMDE5Iiwib2ZfYl8wMjAiLCJhcmcwXzAyMyIsInJlczBfMDI0IiwiYV9zZXhwX2dyYW1tYXIiLCJiX3NleHBfZ3JhbW1hciIsImNtcF9hIiwiY21wX2IiLCJhXzAyNyIsImJfMDI4IiwiYV8wMjkiLCJiXzAzMCIsImFfMDMxIiwiYl8wMzIiLCJhXzAzMyIsImJfMDM0IiwiYV8wMzUiLCJiXzAzNiIsImFfMDM3IiwiYl8wMzgiLCJoYXNoX2ZvbGRfYSIsImhhc2hfZm9sZF9iIiwieCQwIiwiY2hlY2tfb2siLCJjaGVja19lcnJvciIsIm9rIiwiZXJyb3IiLCJmYWlsIiwiZmFpbGYiLCJtYXBfZXJyb3IiLCJiaW5kJDEiLCJtYXAkMSIsInJldHVybiQyIiwiaXNfb2siLCJpc19lcnJvciIsIm9mX29wdGlvbiIsIml0ZXJfZXJyb3IiLCJ0b19laXRoZXIiLCJvZl9laXRoZXIiLCJva19pZl90cnVlIiwiYm9vbCIsInRyeV93aXRoIiwib2tfZXhuIiwib2tfb3JfZmFpbHdpdGgiLCJjb21iaW5lIiwiZXJyIiwib2sxIiwib2syIiwiZXJyMSIsImVycjIiLCJjb21iaW5lX2Vycm9ycyIsImVycnMiLCJjb21iaW5lX2Vycm9yc191bml0IiwiY291bnQiLCJzdW0iLCJNIiwiZm9sZF9yZXN1bHQiLCJhY2MiLCJpdGVtIiwiZm9sZF91bnRpbCIsImZpbmlzaCIsIm1pbl9lbHQiLCJlbHQiLCJtYXhfZWx0IiwiZmluZF9tYXAiLCJmaW5kIiwidG9fYXJyYXkiLCJpdGVyJDAiLCJpdGVyJDEiLCJsZW5ndGgkMCIsImxlbmd0aCQxIiwiaXNfZW1wdHkkMCIsInN1bSQwIiwibSIsImNvdW50JDAiLCJleGlzdHMkMCIsImZvcl9hbGwkMCIsImZpbmRfbWFwJDAiLCJmaW5kJDAiLCJ0b19saXN0JDAiLCJ0b19hcnJheSQwIiwibWluX2VsdCQwIiwibWF4X2VsdCQwIiwiZm9sZF9yZXN1bHQkMCIsImZvbGRfdW50aWwkMCIsImZvbGQkMCIsIm1lbSIsImNvbXBhcmVfYSIsImVxdWFsX2EiLCJzZXhwX29mX2EiLCJzbG93X2NoZWNrX3Bvc19sZW5fZXhuIiwicG9zIiwidG90YWxfbGVuZ3RoIiwiY2hlY2tfcG9zX2xlbl9leG4iLCJzdG9wIiwiZ2V0X3Bvc19sZW5fZXhuIiwibGVuJDAiLCJvZl9zdGF0ZSIsImFzc2lnbiIsImRzdCIsInNyYyIsImRzdCQwIiwic3JjJDAiLCJtYWtlX2RlZmF1bHQiLCJkZWZhdWx0JDAiLCJzcGxpdF9mcm9tX3BhcmVudCIsImdldF9zdGF0ZSIsInJhbmRvbV9rZXkiLCJmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMiLCJhbGxvd19pbl90ZXN0cyIsImJpdHMiLCJpbnQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJjaGFyJDAiLCJhc2NpaSIsIm1ha2Vfc2VsZl9pbml0IiwiaW50X29uXzY0Yml0cyIsImJvdW5kIiwiaW50X29uXzMyYml0cyIsImludCQxIiwiYml0cyQwIiwiZnVsbF9yYW5nZV9pbnQ2NCIsImJpdHMkMSIsImZ1bGxfcmFuZ2VfaW50MzIiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHMiLCJmdWxsX3JhbmdlX2ludF9vbl82NGJpdHMkMCIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0cyIsImZ1bGxfcmFuZ2VfbmF0aXZlaW50IiwicmFpc2VfY3Jvc3NlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCIsInVwcGVyX2JvdW5kIiwic3RyaW5nX29mX2JvdW5kIiwiaW50X2luY2wiLCJsbyIsImhpIiwiZGlmZiIsImludDMyX2luY2wiLCJuYXRpdmVpbnRfaW5jbCIsImludDY0X2luY2wiLCJmbG9hdCQwIiwicjEiLCJyMiIsInJlc3VsdCIsImZsb2F0X3JhbmdlIiwiZGVmYXVsdCQxIiwiYml0cyQyIiwiaW50JDIiLCJpbnQzMiQwIiwibmF0aXZlaW50JDAiLCJpbnQ2NCQwIiwiZmxvYXQkMSIsImludF9pbmNsJDAiLCJpbnQzMl9pbmNsJDAiLCJuYXRpdmVpbnRfaW5jbCQwIiwiaW50NjRfaW5jbCQwIiwiZmxvYXRfcmFuZ2UkMCIsImJvb2wkMCIsImNoYXIkMSIsImFzY2lpJDAiLCJmdWxsX2luaXQiLCJzZWxmX2luaXQiLCJzZXRfc3RhdGUiLCJwZXJtdXRlIiwicmFuZG9tX3N0YXRlIiwic3RoJDAiLCJudW1fc3dhcHMiLCJ0aGlzX2kiLCJyYW5kb21faSIsImNvbnN0JDAiLCJub24iLCJmb3JldmVyIiwiZSQwIiwiY29tcG9zZSIsImciLCJmbGlwIiwiYXBwbHlfbl90aW1lcyIsIngkMSIsInNleHBfMDA2IiwiZXJyb3Jfc291cmNlXzAyMiIsImZvbGRfbGVmdCIsImFfMDA2IiwiYl8wMDciLCJhXzAwOCIsImJfMDA5Iiwib2ZfYV8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwicmFuZ2UiLCJzdHJpZGUiLCJzdGFydF9pIiwic3RvcF9pIiwic3RhcnQiLCJuZXh0X2kiLCJvcmRlciIsInJhaXNlX3N0cmlkZV9jYW5ub3RfcmV0dXJuX3NhbSIsImluaXRpYWxfc3RyaWRlX29yZGVyIiwic3RhcnRfaSQwIiwiYWNjdW0iLCJpX3RvX3N0b3Bfb3JkZXIiLCJuZXh0X2kkMCIsImFjY3VtJDAiLCJyYW5nZSQwIiwic3RoJDEiLCJoZCIsInRsIiwibnRoIiwibnRoX2V4biIsInVub3JkZXJlZF9hcHBlbmQiLCJvZl9saXN0cyIsInNoYXJlZF9sZW5ndGgiLCJzaGFyZWRfbGVuZ3RoJDAiLCJjaGVja19sZW5ndGgyX2V4biIsInRhaWxfb2ZfYiIsInRhaWxfb2ZfYSIsImNoZWNrX2xlbmd0aDIiLCJvZl9saXN0cyQwIiwibDMiLCJjJDAiLCJjaGVja19sZW5ndGgzX2V4biIsInRhaWxfb2ZfYyIsIm4xIiwibjIiLCJuMyIsImNoZWNrX2xlbmd0aDMiLCJpdGVyMiIsIml0ZXIyX2V4biIsInJldl9tYXAyIiwicmV2X21hcDJfZXhuIiwiZm9sZDIiLCJmb2xkMl9leG4iLCJmb3JfYWxsMiIsImZvcl9hbGwyX2V4biIsImV4aXN0czIiLCJleGlzdHMyX2V4biIsImJzIiwicmV2X2ZpbHRlciIsImFjY3UiLCJmaWx0ZXIiLCJub3RfZm91bmQiLCJmaW5kX21hcF9leG4iLCJub3RfZm91bmQkMCIsImZpbmRfZXhuIiwiZmluZGkiLCJub3RfZm91bmQkMSIsImZpbmRpX2V4biIsImZpbmRfbWFwaSIsIm5vdF9mb3VuZCQyIiwiZmluZF9tYXBpX2V4biIsImZvcl9hbGxpIiwiZXhpc3RzaSIsIm1heF9ub25fdGFpbGNhbGwiLCJjb3VudF9hcHBlbmQiLCJ4MSIsIngyIiwieDMiLCJ4NCIsIng1IiwiY291bnRfbWFwIiwiY3RyIiwieDEkMCIsImYxJDMiLCJ4MiQwIiwiZjEkMiIsImYyJDIiLCJ4MyQwIiwiZjEkMSIsImYyJDEiLCJmMyQxIiwieDQkMCIsImYxJDAiLCJmMiQwIiwiZjMkMCIsImY0JDAiLCJ4NSQwIiwiZjEiLCJmMiIsImYzIiwiZjQiLCJmNSIsImJzJDAiLCJ4cyQwIiwieDgiLCJ4NyIsIng2IiwieDAiLCJ5MCQwIiwieTEkMCIsInkyJDAiLCJ5MyQwIiwieTQkMCIsInk1JDAiLCJ5NiQwIiwieTckMCIsInk4JDAiLCJ5OCIsInk3IiwieTYiLCJ5NSIsInk0IiwieTMiLCJ5MiIsInkxIiwieTAiLCJmb2xkaW5nX21hcCIsIm5ld19hY2MiLCJmb2xkX21hcCIsIm1hcDJfb2siLCJtYXAyX2V4biIsInJldl9tYXAzX29rIiwibDEkMCIsImwyJDAiLCJsMyQwIiwiYWMiLCJsMyQxIiwibDIkMSIsImwxJDEiLCJhYyQwIiwicmV2X21hcDMiLCJyZXZfbWFwM19leG4iLCJtYXAzX29rIiwibWFwM19leG4iLCJyZXZfbWFwX2FwcGVuZCIsImgiLCJsaXN0JDIiLCJ1bnppcDMiLCJ6IiwiemlwX2V4biIsInppcCIsInJldl9tYXBpIiwiZm9sZGluZ19tYXBpIiwiZm9sZF9tYXBpIiwiZm9sZGkiLCJmaWx0ZXJpIiwicmVkdWNlIiwicmVkdWNlX2V4biIsInJlZHVjZV9iYWxhbmNlZCIsInN0ZXBfYWNjdW0iLCJudW0iLCJudW0kMCIsImFjYyQwIiwiYWNjJDEiLCJudW0kMSIsInJlZHVjZV9iYWxhbmNlZF9leG4iLCJncm91cGkiLCJicmVhayQwIiwiZ3JvdXBzIiwiY3VycmVudF9ncm91cCIsImdyb3VwIiwic29ydF9hbmRfZ3JvdXAiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJjb250IiwibWVyZ2UiLCJoMiIsImgxIiwibWFwMiQwIiwibWFwMyQwIiwic3ltYm9sJDIiLCJsYXN0X2V4biIsImxhc3QiLCJpc19wcmVmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsInByZWZpeCQxIiwiaGQkMCIsImZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIiwiYTEiLCJhMSQwIiwiYTIiLCJyZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyIsIndoaWNoX3RvX2tlZXAiLCJ0bCQwIiwidG9fa2VlcCQyIiwidG9fa2VlcCIsInRvX2tlZXAkMCIsInRvX2tlZXAkMSIsImRlZHVwX2FuZF9zb3J0Iiwic29ydGVkIiwiZmluZF9hX2R1cCIsImwkMCIsImhkMiIsImhkMSIsImNvbnRhaW5zX2R1cCIsImxzdCIsImZpbmRfYWxsX2R1cHMiLCJzb3J0ZWQkMiIsInByZXYkMSIsInNvcnRlZCQwIiwicHJldiIsImFscmVhZHlfcmVjb3JkZWQiLCJzb3J0ZWQkMSIsInByZXYkMCIsImFsbF9lcXVhbCIsImNvdW50aSIsImlkeCIsInJldl9maWx0ZXJfbWFwIiwiZmlsdGVyX21hcCIsInJldl9maWx0ZXJfbWFwaSIsImkkMSIsImZpbHRlcl9tYXBpIiwiZmlsdGVyX29wdCIsInBhcnRpdGlvbjNfbWFwIiwidHJkIiwidHJkJDAiLCJ5JDEiLCJwYXJ0aXRpb25fdGYiLCJmJDAiLCJwYXJ0aXRpb25fcmVzdWx0IiwidF9vZl9zZXhwJDAiLCJvZl9hXzAxNCIsIm9mX2JfMDE1IiwieF8wMjMiLCJzZXhwXzAyMSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAxOSIsInJlczFfMDIwIiwic2V4cF9vZl90JDEiLCJvZl9hXzAyNCIsIm9mX2JfMDI1IiwieF8wMzAiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMV8wMjkiLCJ0X3NleHBfZ3JhbW1hciQwIiwicGFpcl9vZl9ncm91cCIsImsiLCJncm91cCQwIiwiYWxpc3QiLCJzb3J0X2FuZF9ncm91cCQwIiwia2V5Iiwia2V5JDAiLCJub3RfZm91bmQkMyIsImZpbmRfZXhuJDAiLCJ2YWx1ZSIsIm1lbSQwIiwicmVtb3ZlIiwiYWRkIiwiaW52ZXJzZSIsIm1hcCQyIiwiZWwiLCJzcGxpdF9uIiwidF9vcmlnIiwidGFrZSIsImRyb3AiLCJjaHVua3Nfb2YiLCJsJDEiLCJzdWJsaXN0Iiwic3BsaXRfd2hpbGUiLCJ0YWtlX3doaWxlIiwiZHJvcF93aGlsZSIsImRyb3BfbGFzdCIsImRyb3BfbGFzdF9leG4iLCJjYXJ0ZXNpYW5fcHJvZHVjdCIsImxpc3QxIiwibGlzdDIiLCJjb25jYXRfbm9fb3JkZXIiLCJjb25zIiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwiYXJyIiwicmFuZG9tX2VsZW1lbnRfZXhuIiwicmFuZG9tX2VsZW1lbnQiLCJjbXAiLCJ0MSQwIiwidDIkMCIsInQyJDEiLCJ0MSQxIiwidHJhbnNwb3NlIiwicm93cyQwIiwicm93cyIsImNvbHVtbnMiLCJkb19yZXYiLCJjb2x1bW5fYWNjIiwidHJpbW1lZF9yb3dzIiwiZm91bmRfZW1wdHkiLCJ0cmltbWVkIiwiY29sdW1uX2FjYyQwIiwiY29sdW1uIiwiZG9fcmV2JDAiLCJjb2x1bW5zJDAiLCJhcmcwXzAzMSIsInJlczBfMDMyIiwidHJhbnNwb3NlX2V4biIsImludGVyc3BlcnNlIiwiaXNfc3VmZml4Iiwic3VmZml4IiwibGlzdF9sZW4iLCJzdWZmaXhfbGVuIiwicmVzMF8wMDIiLCJhcmcwXzAwMyIsInJlczBfMDA0IiwicmVzMF8wMDYiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYXJnMl8wMTEiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMV8wMTMiLCJyZXMyXzAxNCIsImFyZzFfMDE2IiwicmVzMV8wMTgiLCJhcmcyXzAyMSIsImFyZzFfMDIwIiwiYXJnMF8wMTkiLCJyZXMxXzAyMyIsInJlczJfMDI0IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmcxXzAzMCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJ0b19zdHJpbmdzX2h1bSIsInN0cmluZyIsInNleHAkMCIsInNleHAkMSIsInRhZyIsInRhZyQwIiwic2V4cCQyIiwidGFnJDEiLCJib2R5IiwidHJ1bmNfYWZ0ZXIiLCJ0cyQwIiwidHMkMSIsImFjJDEiLCJ0b19zZXhwc19odW0iLCJoZXJlIiwiaGVyZSQwIiwidG9fc2V4cF9odW0iLCJzZXhwcyIsInRvX21lc3NhZ2UiLCJpbmZvIiwib2ZfbWVzc2FnZSIsInRvX3N0cmluZ19odW0iLCJtZXNzYWdlIiwidG9fc3RyaW5nX2h1bV9kZXByZWNhdGVkIiwib2ZfbGF6eSIsIm9mX2xhenlfc2V4cCIsIm9mX2xhenlfdCIsImxhenlfdCIsImNyZWF0ZWYiLCJvZl90aHVuayIsInN0cmljdCIsInNleHBfb2ZfeCIsInRhZ19zX2xhenkiLCJ0YWdfcyIsInRhZ19hcmciLCJ0b19leG4iLCJvZl9leG4iLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwiYmFja3RyYWNlJDIiLCJyYWlzZSIsInJhaXNlX3MiLCJ0b19pbmZvIiwib2ZfaW5mbyIsImNoZWNrX2ZpZWxkIiwiYV8wMDciLCJiXzAwOCIsIm9mX2FfMDEzIiwieF8wMTUiLCJvZl9hXzAxNiIsInhfMDE3IiwiaW52YXJpYW50X2EiLCJlMSIsImUyIiwidHJ5X3dpdGhfam9pbiIsIm9mX2V4bl9yZXN1bHQiLCJlcnJvcl9zIiwiZXJyb3Jfc3RyaW5nIiwiZXJyb3JmIiwidW5pbXBsZW1lbnRlZCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX29rIiwiZmluZF9tYXBfb2siLCJlcnJvcl9zb3VyY2VfMDAzIiwic2V4cF8wMDQiLCJnZXEiLCJsZXEiLCJiZXR3ZWVuIiwibG93IiwiaGlnaCIsImNsYW1wX3VuY2hlY2tlZCIsImNsYW1wX2V4biIsImNsYW1wIiwibGV4aWNvZ3JhcGhpYyIsImNtcHMiLCJjbXBzJDAiLCJsaWZ0IiwicmV2ZXJzZSIsImlzX3Bvc2l0aXZlIiwiaXNfbm9uX25lZ2F0aXZlIiwiaXNfbmVnYXRpdmUiLCJpc19ub25fcG9zaXRpdmUiLCJzaWduIiwiaGFzaF9wYXJhbSIsInBvbHkiLCJvZl9rZXkiLCJLZXkiLCJ0b19rZXkiLCJoYXNoX3BhcmFtJDAiLCJwb2x5JDAiLCJvZl9rZXkkMCIsInRvX2tleSQwIiwiaGFzaGFibGUiLCJnZXRfcG9zX2xlbiIsImZpbmRfZmlyc3Rfc2F0aXNmeWluZyIsInByZWQiLCJwb3MkMCIsImhpJDAiLCJsbyQxIiwibWlkIiwibG8kMiIsImxvJDAiLCJmaW5kX2xhc3Rfc2F0aXNmeWluZyIsImJpbmFyeV9zZWFyY2giLCJob3ciLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsInNlZ21lbnRfb2YiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJhbGwkMCIsInNyY19wb3MiLCJkc3RfcG9zIiwiYmxpdG8iLCJzcmNfbGVuIiwic3VibyIsImNyZWF0ZV9saWtlIiwidW5zYWZlX2JsaXQkMCIsImlzX25vbmUiLCJpc19zb21lIiwidmFsdWVfbWFwIiwibyIsImNhbGwiLCJ2YWx1ZV9leG4iLCJlcnJvciQwIiwibSQwIiwibSQxIiwidmFsdWVfb3JfdGh1bmsiLCJzb21lIiwiZmlyc3Rfc29tZSIsInNvbWVfaWYiLCJjb25kIiwiYV9vZl9zZXhwIiwiYl9vZl9zZXhwIiwic2V4cF9vZl9iIiwiY19vZl9zZXhwIiwic2V4cF9vZl9jIiwiaXNfZmlyc3QiLCJpc19zZWNvbmQiLCJmaXJzdCIsInNlY29uZCIsImVxMSIsImVxMiIsIm90aGVyIiwiZWl0aGVyIiwib3RoZXJfbG9vcCIsInJldHVybl9sb29wIiwiY29tYmluZV9hbGwiLCJvdGhlcl9sb29wJDAiLCJyZXR1cm5fbG9vcCQwIiwiY29tYmluZV9hbGxfdW5pdCIsInRvX29wdGlvbiIsImVpdGhlciQwIiwiY29tYmluZSQwIiwiaXRlcmkkMCIsIml0ZXJpJDEiLCJmb2xkaSQwIiwiZm9sZGkkMSIsImNvdW50aSQwIiwiZXhpc3RzaSQwIiwiZm9yX2FsbGkkMCIsImZpbmRfbWFwaSQwIiwiZmluZGkkMCIsImVycm9yX3NvdXJjZV8wMjUiLCJvZl9zXzAwMiIsIm5leHRfc3RlcCIsImRlbGF5ZWRfZm9sZF9zdGVwIiwibmV4dCIsInVuZm9sZF9zdGVwIiwidW5mb2xkIiwidW5mb2xkX3dpdGgiLCJzZWVkJDAiLCJzZWVkJDEiLCJ1bmZvbGRfd2l0aF9hbmRfZmluaXNoIiwicnVubmluZ19zdGVwIiwiaW5uZXJfZmluaXNoZWQiLCJmaW5pc2hpbmdfc3RlcCIsInN0YXRlJDAiLCJzdGF0ZSQxIiwic3RhdGUkMiIsImlubmVyX3N0YXRlIiwic3RhdGUkMyIsImlubmVyX3N0YXRlJDAiLCJpbm5lcl9zdGF0ZSQxIiwic3RhdGUkNCIsInN0YXRlJDUiLCJzZWVkJDIiLCJ2JDAiLCJ0b19saXN0X3JldiIsInN0YXJ0X3YiLCJzdG9wX3YiLCJzdGVwIiwidF9sYXp5IiwibCQyIiwic29tZV9iIiwiZW1wdHkiLCJuZXh0JDAiLCJzJDMiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxOSIsImFfMDE3IiwiYl8wMjAiLCJiXzAxOCIsImEwJDEiLCJoc3YkMyIsIm9mX2FfMDIxIiwib2ZfYl8wMjIiLCJzZXhwXzAyNyIsInRhZ18wMjgiLCJzZXhwX2FyZ3NfMDM0IiwiYXJnMF8wMzUiLCJyZXMwXzAzNiIsInNleHBfYXJnc18wMjkiLCJhcmcwXzAzMCIsInNleHBfYXJnc18wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsIm9mX2FfMDQ2Iiwib2ZfYl8wNDciLCJhcmcwXzA0OCIsInJlczBfMDQ5IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1IiwibWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIiwibmV4dDIiLCJzMiIsIm5leHQxIiwiczEiLCJzMiQwIiwiczIkMSIsInMxJDAiLCJzMiQyIiwiczEkMSIsInMyJDMiLCJjb21wYXJpc29uIiwibWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIiwibWVyZ2Vfc29ydGVkIiwidGxfZWFnZXJseV9leG4iLCJsaWZ0X2lkZW50aXR5IiwiY2h1bmtzX2V4biIsInppcF9mdWxsIiwiYm91bmRlZF9sZW5ndGgiLCJhdF9tb3N0IiwibGVuZ3RoX2lzX2JvdW5kZWRfYnkiLCJjdXIiLCJjdXIkMCIsImxhc3RfZWx0IiwibGFzdF9lbHQkMCIsInNoaWZ0X3JpZ2h0Iiwic2hpZnRfcmlnaHRfd2l0aF9saXN0IiwicyQ1IiwiYSQxIiwicyQ0IiwicmVwZWF0IiwiY3ljbGVfbGlzdF9leG4iLCJzYSIsInNiIiwic2luZ2xldG9uIiwiZGVsYXllZF9mb2xkIiwib3B0aW9uIiwiZm9sZF9tIiwiaXRlcl9tIiwiZm9yY2VfZWFnZXJseSIsIm1lbW9pemUiLCJkcm9wX2VhZ2VybHkiLCJkcm9wX3doaWxlX29wdGlvbiIsInYyIiwidjEiLCJyb3VuZF9yb2JpbiIsImRvbmVfc3RhY2siLCJ0b2RvX3N0YWNrIiwidG9kb19zdGFjayQwIiwiaW50ZXJsZWF2ZSIsImludGVybGVhdmVkX2NhcnRlc2lhbl9wcm9kdWN0Iiwib2Zfc2VxIiwic2VxIiwidG9fc2VxIiwieWllbGQkMCIsIm9mX3NlcXVlbmNlIiwic2VxdWVuY2UiLCJ0aHVuayIsInNldCIsInN3YXAkMCIsInRtcCIsImxlZnQiLCJyaWdodCIsImZpbmFsX3BvcyIsImlfbmV4dCIsImhlYXBpZnkiLCJyb290Iiwicm9vdCQwIiwicmVsYXRpdmVfcm9vdCIsImxlZnRfY2hpbGQiLCJyaWdodF9jaGlsZCIsImxhcmdlc3QiLCJsYXJnZXN0JDAiLCJzb3J0JDAiLCJmaXZlX2VsZW1lbnRfc29ydCIsIm0xIiwibTIiLCJtMyIsIm00IiwibTUiLCJjb21wYXJlX2FuZF9zd2FwIiwiaW50cm9fc29ydCIsIm1heF9kZXB0aCIsIm1heF9kZXB0aCQwIiwibGVmdCQwIiwibWF4X2RlcHRoJDEiLCJzaXh0aCIsIm0yX3ZhbCIsIm0zX3ZhbCIsIm00X3ZhbCIsIm1pZGRsZV9zb3J0ZWQiLCJwaXZvdDIiLCJwaXZvdDEiLCJwJDEiLCJyJDIiLCJwdiIsInIkMCIsInIkMSIsInAkMCIsImxlZnQkMSIsInNvcnQkMSIsInNvcnQkMiIsImVsdF9pX21pbnVzXzEiLCJtZXJnZWQiLCJhMV9pbmRleCIsImEyX2luZGV4IiwidXNlX2ExIiwiY29weV9tYXRyaXgiLCJyZXZfaW5wbGFjZSIsIm9mX2xpc3RfcmV2Iiwib2ZfbGlzdF9tYXAiLCJvZl9saXN0X21hcGkiLCJvZl9saXN0X3Jldl9tYXAiLCJvZl9saXN0X3Jldl9tYXBpIiwibWFwX2lucGxhY2UiLCJmaW5kaV9pbnRlcm5hbCIsImlmX2ZvdW5kIiwiaWZfbm90X2ZvdW5kIiwiZm91bmQiLCJ2YWx1ZV9mb3VuZCIsInJlczEiLCJyZXMyIiwic29ydGVkX2NvcHkiLCJwYXJ0aXRpb25pX3RmIiwidHJ1ZXMiLCJmYWxzZXMiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwidG9fc2VxdWVuY2UiLCJpMSIsImkyIiwidHQiLCJ3aWR0aCIsImRlcHRoIiwiZCIsInciLCJ0dCQwIiwiZ2V0JDAiLCJ6ZXJvX29iaiIsImNyZWF0ZV96ZXJvIiwidW5zYWZlX2dldCIsInVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSIsIm9iaiIsInNldF93aXRoX2NhbWxfbW9kaWZ5IiwidW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVuIiwib2xkX29iaiIsInVuc2FmZV9zZXQiLCJ1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGUiLCJ1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV8iLCJ1bnNhZmVfc2V0X2ludCIsInVuc2FmZV9jbGVhcl9pZl9wb2ludGVyIiwidW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIiwiY3JlYXRlX29ial9hcnJheSIsIm9mX2FycmF5IiwiZ3JhbW1hciIsImNlaWwiLCJmbG9vciIsIm1vZF9mbG9hdCIsIm1vZGYiLCJtYXhfZmluaXRlX3ZhbHVlIiwiY2xhc3NpZnlfZmxvYXQiLCJhYnNfZmxvYXQiLCJpc19pbnRlZ2VyIiwiZnJleHAiLCJsZGV4cCIsImlzX25hbiIsInRvX2ludDY0X3ByZXNlcnZlX29yZGVyIiwidG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIiwib2ZfaW50NjRfcHJlc2VydmVfb3JkZXIiLCJvbmVfdWxwIiwiZGlyIiwidXBwZXJfYm91bmRfZm9yX2ludCIsImV4cCIsImlzX3hfbWludXNfb25lX2V4YWN0IiwibG93ZXJfYm91bmRfZm9yX2ludCIsIm1pbl9pbnRfYXNfZmxvYXQiLCJib3giLCJpc19sb3dlcmNhc2UiLCJpc191cHBlcmNhc2UiLCJpc19wcmludCIsImlzX3doaXRlc3BhY2UiLCJpc19kaWdpdCIsImlzX2FscGhhIiwiaXNfYWxwaGFudW0iLCJnZXRfZGlnaXRfdW5zYWZlIiwiZ2V0X2RpZ2l0X2V4biIsImdldF9kaWdpdCIsImlzX2hleF9kaWdpdCIsImlzX2hleF9kaWdpdF9sb3dlciIsImlzX2hleF9kaWdpdF91cHBlciIsImdldF9oZXhfZGlnaXRfZXhuIiwiZ2V0X2hleF9kaWdpdCIsInRfb2Zfc2V4cCQxIiwiYzEiLCJjMiIsImhhc2hfZm9sZF90JDEiLCJoYXNoJDEiLCJ0cl9jcmVhdGVfbWFwIiwidGFyZ2V0IiwicmVwbGFjZW1lbnQiLCJ0cl9tYXAiLCJpJDMiLCJpJDIiLCJpbmRleCQwIiwibGFzdF9yZXBsYWNlbWVudCIsImluZGV4IiwiZmlyc3RfdGFyZ2V0Iiwic3RhZ2UiLCJ1bnN0YWdlIiwiY29udGFpbnMiLCJwb3MkMSIsImVuZCIsImluZGV4X2Zyb21fZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuX2ludGVybmFsIiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbV9leG4iLCJyaW5kZXhfZnJvbV9leG5faW50ZXJuYWwiLCJyaW5kZXhfZXhuX2ludGVybmFsIiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tX2V4biIsInJpbmRleCIsImluZGV4X2Zyb20iLCJyaW5kZXhfZnJvbSIsImNhc2Vfc2Vuc2l0aXZlIiwicGF0dGVybiIsImttcF9pbnRlcm5hbF9sb29wIiwibWF0Y2hlZF9jaGFycyIsIm5leHRfdGV4dF9jaGFyIiwia21wX2FycmF5IiwiY2hhcl9lcXVhbCIsIm1hdGNoZWRfY2hhcnMkMCIsImdldF9jaGFyX2VxdWFsIiwiaW5kZXhfaW50ZXJuYWwiLCJ0ZXh0IiwibWF0Y2hlcyIsImluJDAiLCJpbmRleF9leG4kMCIsImluZGV4X2FsbCIsIm1heV9vdmVybGFwIiwicmVwbGFjZV9maXJzdCIsIndpdGgkMCIsImxlbl9zIiwibGVuX3QiLCJsZW5fd2l0aCIsInJlcGxhY2VfYWxsIiwibnVtX21hdGNoZXMiLCJuZXh0X2RzdF9wb3MiLCJuZXh0X3NyY19wb3MiLCJzcGxpdF9vbiIsInBhdHRlcm5fbGVuIiwiYV8wMDIiLCJiXzAwMyIsImttcF9hcnJheV8wMTEiLCJjYXNlX3NlbnNpdGl2ZV8wMDkiLCJwYXR0ZXJuXzAwNyIsImFyZ18wMTIiLCJibmRzXzAwNiIsImFyZ18wMTAiLCJibmRzXzAwNiQwIiwiYXJnXzAwOCIsImJuZHNfMDA2JDEiLCJyZXByZXNlbnRhdGlvbiIsInN1YnN0cl9pbmRleF9nZW4iLCJzdWJzdHJfaW5kZXhfZXhuX2dlbiIsInN1YnN0cl9pbmRleF9hbGxfZ2VuIiwic3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIiwic3Vic3RyX3JlcGxhY2VfYWxsX2dlbiIsImlzX3N1YnN0cmluZ19nZW4iLCJzdWJzdHJpbmciLCJzdWJzdHJfaW5kZXgiLCJzdWJzdHJfaW5kZXhfZXhuIiwic3Vic3RyX2luZGV4X2FsbCIsInN1YnN0cl9yZXBsYWNlX2ZpcnN0Iiwic3Vic3RyX3JlcGxhY2VfYWxsIiwiaXNfc3Vic3RyaW5nIiwiaXNfc3Vic3RyaW5nX2F0X2dlbiIsInN0cl9wb3MkMSIsInN0cl9sZW4iLCJzdWJfbGVuIiwic3RyX3BvcyIsInN1Yl9wb3MiLCJzdWJfcG9zJDAiLCJzdHJfcG9zJDAiLCJpc19zdWZmaXhfZ2VuIiwic3RyaW5nX2xlbiIsImlzX3ByZWZpeF9nZW4iLCJwcmVmaXhfbGVuIiwic2V4cF9vZl90JDIiLCJzdHJpbmcxIiwic3RyaW5nMiIsImxlbjIiLCJsZW4xIiwic3Vic3RyX2luZGV4JDAiLCJzdWJzdHJfaW5kZXhfZXhuJDAiLCJzdWJzdHJfaW5kZXhfYWxsJDAiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCQwIiwic3Vic3RyX3JlcGxhY2VfYWxsJDAiLCJpc19zdWJzdHJpbmckMCIsImlzX3N1YnN0cmluZ19hdCIsImxzcGxpdDJfZXhuIiwibGluZSIsImRlbGltIiwibm90X2ZvdW5kJDQiLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJvbiIsInJzcGxpdDIiLCJjaGFyX2xpc3RfbWVtIiwic3BsaXRfZ2VuIiwiaXNfZGVsaW0iLCJsYXN0X3BvcyIsImxhc3RfcG9zJDEiLCJsYXN0X3BvcyQwIiwicG9zMSIsInN1Yl9zdHIiLCJzcGxpdCIsInNwbGl0X29uX2NoYXJzIiwiY2hhcnMiLCJiYWNrX3VwX2F0X25ld2xpbmUiLCJlb2wiLCJzcGxpdF9saW5lcyIsImlzX3N1ZmZpeCQwIiwiaXNfcHJlZml4JDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsIndyYXBfc3ViX24iLCJvbl9lcnJvciIsImRyb3BfcHJlZml4IiwiZHJvcF9zdWZmaXgiLCJsZmluZGkiLCJyZmluZGkiLCJsYXN0X25vbl9kcm9wIiwicnN0cmlwIiwiZmlyc3Rfbm9uX2Ryb3AiLCJsc3RyaXAiLCJzdHJpcCIsInRyIiwidHJfbXVsdGkiLCJjb25jYXRfYXJyYXkiLCJhciIsIm91dCIsIm91dF9wb3MiLCJvdXQkMCIsImNob3BfcHJlZml4IiwiY2hvcF9wcmVmaXhfaWZfZXhpc3RzIiwiY2hvcF9wcmVmaXhfZXhuIiwiY2hvcF9zdWZmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3N1ZmZpeF9leG4iLCJzaG9ydGVyIiwic2hvcnRlc3QiLCJwb3NfZnJvbV9sZWZ0IiwicG9zX2Zyb21fcmlnaHQiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AiLCJnZXRfcG9zIiwibWF4X2xlbiIsImxlbl9zb19mYXIiLCJsZW5fc29fZmFyJDAiLCJsZW5fc29fZmFyJDEiLCJjb21tb25fZ2VuZXJpYzJfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AiLCJmaXJzdCQwIiwibWF4X2xlbiQwIiwibWF4X2xlbiQxIiwiY29tbW9uX2dlbmVyaWNfbGVuZ3RoIiwiY29tbW9uX2dlbmVyaWMyIiwiY29tbW9uX2dlbmVyaWMiLCJjb21tb25fcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgyIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4X2xlbmd0aCIsImNvbW1vbl9zdWZmaXhfbGVuZ3RoIiwiY29tbW9uX3ByZWZpeDJfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIiwib2ZfY2hhciIsIm9mX2NoYXJfbGlzdCIsImJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aCIsImVzY2FwZXdvcnRoeV9tYXAiLCJlc2NhcGVfY2hhciIsImVzY2FwZXdvcnRoeV9tYXAkMCIsInZhbHMiLCJjX3RvIiwiY19mcm9tIiwiayQwIiwiZXNjYXBlX2dlbiIsImVzY2FwZXdvcnRoeSIsInRvX2VzY2FwZV9sZW4iLCJ0b19lc2NhcGUiLCJsYXN0X2lkeCIsImxhc3RfZHN0X3BvcyIsImxhc3RfaWR4JDAiLCJsYXN0X2RzdF9wb3MkMCIsInRvX2VzY2FwZSQwIiwiZXNjYXBlZF9jaGFyIiwibGFzdF9pZHgkMSIsImxhc3RfZHN0X3BvcyQxIiwiZXNjYXBlX2dlbl9leG4iLCJlc2NhcGUiLCJ1bmVzY2FwZV9nZW4iLCJzdGF0dXMiLCJ0b191bmVzY2FwZSIsInN0YXR1cyQwIiwidG9fdW5lc2NhcGUkMCIsInVuZXNjYXBlX2dlbl9leG4iLCJ1bmVzY2FwZSIsInByZWNlZGluZ19lc2NhcGVfY2hhcnMiLCJjbnQiLCJjbnQkMCIsInVwZGF0ZV9lc2NhcGVfc3RhdHVzIiwiZXNjYXBlX3N0YXR1cyIsIm9kZCIsImNoZWNrX2JvdW5kIiwiZnVuY3Rpb25fbmFtZSIsImlzX2NoYXJfZXNjYXBpbmciLCJpc19jaGFyX2VzY2FwZWQiLCJpc19jaGFyX2xpdGVyYWwiLCJpbmRleF9mcm9tJDAiLCJzdGF0dXMkMSIsImluZGV4X2Zyb21fZXhuJDAiLCJpbmRleCQxIiwiaW5kZXhfZXhuJDEiLCJyaW5kZXhfZnJvbSQwIiwiZXNjYXBlX2NoYXJzIiwicmluZGV4X2Zyb21fZXhuJDAiLCJyaW5kZXgkMCIsInJpbmRleF9leG4kMCIsInNwbGl0X2dlbiQwIiwic3BsaXQkMCIsInNwbGl0X29uX2NoYXJzJDAiLCJzcGxpdF9hdCIsImxzcGxpdDIkMCIsInJzcGxpdDIkMCIsImxzcGxpdDJfZXhuJDAiLCJyc3BsaXQyX2V4biQwIiwibGFzdF9ub25fZHJvcF9saXRlcmFsIiwiZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCIsInJzdHJpcF9saXRlcmFsIiwibHN0cmlwX2xpdGVyYWwiLCJzdHJpcF9saXRlcmFsIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsInVuc2FmZV9ibGl0JDEiLCJtYXBpJDAiLCJvY2FtbF9sZXhfdGFibGVzIiwicGFyc2VfaGV4IiwibGV4YnVmIiwib2NhbWxfbGV4X3N0YXRlIiwib2NhbWxfbGV4X3N0YXRlJDAiLCJjb252ZXJ0X2ZhaWx1cmUiLCJudW1fYml0c19pbnQiLCJudW1fYml0c19uYXRpdmVpbnQiLCJudW1fYml0c19pbnQzMiIsIm51bV9iaXRzX2ludDY0IiwibWluX2ludDMyIiwibWF4X2ludDMyIiwibWluX2ludDY0IiwibWF4X2ludDY0IiwibWluX25hdGl2ZWludCIsIm1heF9uYXRpdmVpbnQiLCJpbnQ2NF90b19zdHJpbmciLCJuYXRpdmVpbnRfdG9fc3RyaW5nIiwiaW50MzJfdG9faW50X3RydW5jIiwiaW50X3RvX2ludDMyX3RydW5jIiwiaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIiLCJpbnRfdG9faW50MzIiLCJpbnQzMl90b19pbnQiLCJpbnRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9faW50X2V4biIsImludF90b19pbnQ2NCIsImludDY0X3RvX2ludF90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IiwiaW50NjRfdG9faW50IiwiaW50NjRfdG9faW50X2V4biIsImludF90b19uYXRpdmVpbnQiLCJuYXRpdmVpbnRfdG9faW50X3RydW5jIiwibmF0aXZlaW50X3RvX2ludCIsIm5hdGl2ZWludF90b19pbnRfZXhuIiwiaW50MzJfdG9faW50NjQiLCJpbnQ2NF90b19pbnQzMl90cnVuYyIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MyIsImludDY0X3RvX2ludDMyIiwiaW50NjRfdG9faW50MzJfZXhuIiwiaW50MzJfdG9fbmF0aXZlaW50IiwibmF0aXZlaW50X3RvX2ludDMyX3RydW5jIiwibmF0aXZlaW50X3RvX2ludDMyIiwibmF0aXZlaW50X3RvX2ludDMyX2V4biIsImludDY0X3RvX25hdGl2ZWludF90cnVuYyIsIm5hdGl2ZWludF90b19pbnQ2NCIsImludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aSIsImludDY0X3RvX25hdGl2ZWludCIsImludDY0X3RvX25hdGl2ZWludF9leG4iLCJpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYiLCJpbnQ2NF9maXRfb25faW50NjNfZXhuIiwiaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSIsImRlbGltaXRlciIsImNoYXJzX3Blcl9kZWxpbWl0ZXIiLCJpbnB1dF9sZW5ndGgiLCJoYXNfc2lnbiIsIm51bV9kaWdpdHMiLCJudW1fZGVsaW1pdGVycyIsIm91dHB1dF9sZW5ndGgiLCJpbnB1dF9wb3MiLCJvdXRwdXRfcG9zIiwibnVtX2NoYXJzX3VudGlsX2RlbGltaXRlciIsImZpcnN0X2RpZ2l0X3BvcyIsImluc2VydF9kZWxpbWl0ZXIiLCJpbnNlcnRfdW5kZXJzY29yZXMiLCJzZXhwX29mX2ludF9zdHlsZSIsImRlbGltaXRlciQwIiwibWFrZV9zdWZmaXgiLCJ0b19zdHJpbmckMCIsImludmFsaWQiLCJvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIiLCJsZXgiLCJib2R5JDAiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjNfb25faW4iLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50NjRfdmFsdWUiLCJpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMiLCJvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIiwib3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIiwiaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbCIsImludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyIsImludDY0X25lZ2F0aXZlX292ZXJmbG93X2JvdW5kcyIsIm5lZ2F0aXZlX2V4cG9uZW50Iiwib3ZlcmZsb3ciLCJpbnRfcG93IiwiYmFzZSIsImV4cG9uZW50IiwiaW50NjRfcG93IiwiaW50NjNfcG93X29uX2ludDY0IiwicnZhbCIsIm9uZSIsInJvdW5kX2Rvd24iLCJtb2R1bHVzIiwicm91bmRfdXAiLCJyZW1haW5kZXIiLCJyb3VuZF90b3dhcmRzX3plcm8iLCJ0b19tdWx0aXBsZV9vZiIsInJvdW5kX25lYXJlc3QiLCJtb2R1bHVzX21pbnVzX3JlbWFpbmRlciIsInJvdW5kIiwiaDAxIiwibWFzayIsImludDY0X3BvcGNvdW50IiwieCQyIiwiaW50MzJfcG9wY291bnQiLCJuYXRpdmVpbnRfcG9wY291bnQiLCJtb2R1bGVfbmFtZSQwIiwib2Zfc3RyaW5nJDAiLCJmbG9hdF9sb3dlcl9ib3VuZCIsImZsb2F0X3VwcGVyX2JvdW5kIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwiZnVuYyQwIiwiemVybyIsIm1pbnVzX29uZSIsIm5lZyIsIm9mX3N0cmluZyQxIiwib2ZfaW50MzIiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMiIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0Iiwib2ZfaW50NjRfZXhuIiwidG9faW50NjQiLCJvZl9uYXRpdmVpbnQiLCJvZl9uYXRpdmVpbnRfZXhuIiwidG9fbmF0aXZlaW50IiwibWF4X3ZhbHVlXzMwX2JpdHMiLCJhYnMiLCJyZW0iLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwic2hpZnRfbGVmdCIsImJpdF9ub3QiLCJiaXRfb3IiLCJiaXRfYW5kIiwiYml0X3hvciIsInBvdyIsIm5vbl9wb3NpdGl2ZV9hcmd1bWVudCIsImNlaWxfcG93MiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsImZsb29yX3BvdzIiLCJpc19wb3cyIiwiZmxvb3JfbG9nMiIsImNlaWxfbG9nMiIsInBvcGNvdW50IiwibG5vdCIsInN1Y2NfZXhuIiwibXNnIiwicHJlZF9leG4iLCJvZl9zY2FsYXIiLCJvZl9zY2FsYXJfZXhuIiwidG9fc2NhbGFyIiwidG9fY2hhciIsInRvX2NoYXJfZXhuIiwidXRmOF9ieXRlX2xlbmd0aCIsInVjaGFyIiwiY29kZXBvaW50Iiwic29tZV90IiwicmVmbCIsInN5bSIsInRyYW5zIiwiY29udiIsImRldHVwbGUyIiwidHVwbGUyIiwid2l0bmVzcyIsInZfMDA1IiwidG9fc2V4cCIsInVpZCIsInNhbWVfd2l0bmVzcyIsInNhbWUiLCJzYW1lX3dpdG5lc3NfZXhuIiwibm9uZV9zdWJzdGl0dXRlIiwibm9uZSIsInZhbHVlX3Vuc2FmZSIsIm9mX3NleHBhYmxlIiwidG9fc2V4cGFibGUiLCJ4XzAwMyIsIm9mX2FfMDA0IiwieF8wMDUiLCJpbml0X3NvbWUiLCJnZXRfc29tZV9leG4iLCJpc19ub25lJDAiLCJpc19zb21lJDAiLCJzZXRfc29tZSIsInNldF9ub25lIiwidW5zYWZlX2dldF9zb21lX2V4biIsInVuc2FmZV9nZXRfc29tZV9hc3N1bWluZ19zb21lIiwidW5zYWZlX2lzX3NvbWUiLCJ1bnNhZmVfc2V0X3NvbWUiLCJ1bnNhZmVfc2V0X25vbmUiLCJjbGVhciIsImVsZW0iLCJtYXBfc29tZSIsIm9mX2FycmF5X3NvbWUiLCJjYXBhY2l0eSIsImVsdHMiLCJsZW5ndGhfMDAzIiwiZWx0c18wMDUiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInJlc2l6ZSIsInNpemUiLCJzZXRfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkiLCJuZXdfY2FwYWNpdHkkMCIsInB1c2giLCJwb3Bfbm9uZW1wdHkiLCJwb3BfZXJyb3IiLCJwb3AiLCJwb3BfZXhuIiwidG9wX25vbmVtcHR5IiwidG9wX2Vycm9yIiwidG9wIiwidG9wX2V4biIsInVudGlsX2VtcHR5IiwiaGFzaF9vdmVycmlkZSIsIm9mX3BvcyIsIm9mX3NpZ24iLCJ0b19zaWduX2V4biIsInRvX2ludF9leG4iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAyNyIsImludGVydmFsX2NvbXBhcmlzb25fc2V4cF9ncmFtbSIsImFsbF9vZl9hIiwiZW51bWVyYXRlXzAwMiIsImVudW1lcmF0ZV8wMDEiLCJhY2MkMiIsIm9mX2FfMDAzIiwic2V4cF8wMDgiLCJ0YWdfMDA5Iiwic2V4cF9hcmdzXzAxMCIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJhcmcwXzAyMiIsInJlczBfMDIzIiwiaW50ZXJ2YWxfY29tcGFyaXNvbl9vZl9zZXhwIiwic2V4cF8wMjgiLCJzZXhwX29mX2ludGVydmFsX2NvbXBhcmlzb24iLCJjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24iLCJoYXNoX2ZvbGRfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImhhc2hfaW50ZXJ2YWxfY29tcGFyaXNvbiIsImluY2wiLCJleGNsIiwiaXNfbG93ZXJfYm91bmQiLCJpc191cHBlcl9ib3VuZCIsImJvdW5kc19jcm9zc2VkIiwibG93ZXIiLCJ1cHBlciIsImxvd2VyJDAiLCJ1cHBlciQwIiwiY29tcGFyZV90b19pbnRlcnZhbF9leG4iLCJpbnRlcnZhbF9jb250YWluc19leG4iLCJlcnJvcl9zb3VyY2VfMDU3IiwicmlnaHRfMDA0IiwibGVmdF8wMDMiLCJyaWdodF8wMDgiLCJsZWZ0XzAwNyIsIm9mX2FfMDA5Iiwidl8wMTAiLCJjbXBfayIsImNtcF92IiwidF8wMTQiLCJ0XzAxMyIsInRfMDE2IiwidF8wMTUiLCJyaWdodF8wMTgiLCJsZWZ0XzAxNyIsInJpZ2h0XzAyMiIsImxlZnRfMDIxIiwidF8wMjQiLCJ0XzAyMyIsInRfMDI2IiwidF8wMjUiLCJyaWdodF8wMjAiLCJsZWZ0XzAxOSIsInRfMDMwIiwidF8wMjkiLCJ0XzAzMiIsInRfMDMxIiwicmlnaHRfMDM0IiwibGVmdF8wMzMiLCJyaWdodF8wMzgiLCJsZWZ0XzAzNyIsInRfMDQwIiwidF8wMzkiLCJ0XzA0MiIsInRfMDQxIiwicmlnaHRfMDM2IiwibGVmdF8wMzUiLCJvZl9rXzA0MyIsIm9mX3ZfMDQ0Iiwic2V4cF8wNzEiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJhdG9tXzA0NyIsInNleHBfYXJnc18wNTAiLCJhdG9tXzA0NyQwIiwiYXJnMF8wNTgiLCJyZXMwXzA1OSIsImFyZzBfMDYxIiwicmVzMF8wNjIiLCJhcmcwXzA2NCIsInJlczBfMDY1IiwicmVzMV8wNzAiLCJvZl9rXzA3MiIsIm9mX3ZfMDczIiwiYXJnMV8wODIiLCJhcmcwXzA4MSIsInJlczBfMDgzIiwidl8wNzQiLCJyZXMxXzA4NCIsInZfMDc2IiwiYXJnMV8wNzgiLCJhcmcwXzA3NyIsInJlczBfMDc5IiwicmVzMV8wODAiLCJ2XzA3NSIsImtfc2V4cF9ncmFtbWFyIiwidl9zZXhwX2dyYW1tYXIiLCJjbXBfbGVmdCIsImNtcF9yaWdodCIsImFfMDg1IiwiYl8wODYiLCJyaWdodF8wOTIiLCJsZWZ0XzA5MSIsInRfMDk0IiwidF8wOTMiLCJ0XzA5NiIsInRfMDk1IiwicmlnaHRfMDg4IiwibGVmdF8wODciLCJyaWdodF8wOTAiLCJsZWZ0XzA4OSIsImFfMDk3IiwiYl8wOTgiLCJyaWdodF8xMDQiLCJsZWZ0XzEwMyIsInRfMTA2IiwidF8xMDUiLCJ0XzEwOCIsInRfMTA3IiwicmlnaHRfMTAwIiwibGVmdF8wOTkiLCJyaWdodF8xMDIiLCJsZWZ0XzEwMSIsIm9mX2xlZnRfMTA5Iiwib2ZfcmlnaHRfMTEwIiwidl8xMTMiLCJhcmcxXzExNSIsImFyZzBfMTE0IiwicmVzMF8xMTYiLCJyZXMxXzExNyIsInZfMTExIiwidl8xMTIiLCJzZXhwX29mX3QkMyIsImhlaWdodCIsImluX3JhbmdlIiwiaGwiLCJociIsImxvd2VyJDEiLCJpbnZhcmlhbnRzIiwiaCQxIiwiaCQwIiwic2wiLCJzciIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayIsImtsIiwiayQxIiwia2wkMCIsImskMiIsImtyIiwibGVmdF9sZW5ndGgiLCJyaWdodF9sZW5ndGgiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwiYXJyYXlfbGVuZ3RoIiwib2Zfc29ydGVkX2FycmF5IiwiaW5jcmVhc2luZyIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiQwIiwibHJsIiwibHJ2IiwicnIiLCJydiIsInJsIiwicmxyIiwicmx2JDAiLCJybGwiLCJybHYiLCJhdXgiLCJsaCIsImx2JDAiLCJyaCIsInJ2JDAiLCJtaW5fZWx0X2V4biIsImZvbGRfdW50aWxfaGVscGVyIiwidmFsdWUkMCIsIm1heF9lbHRfZXhuIiwicmVtb3ZlX21pbl9lbHQiLCJtYXliZV9lbHQiLCJtYXliZV9lbHQkMCIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInJlbW92ZV9pbmRleCIsImxfc2l6ZSIsInVuaW9uIiwidjEkMCIsInYyJDAiLCJyMiQwIiwicjEkMCIsInVuaW9uX2xpc3QiLCJ0b190cmVlIiwiaW50ZXIiLCJvdGhlcl9zZXQiLCJlJDEiLCJjb25zX3JpZ2h0Iiwib2Zfc2V0IiwiZW51bSQwIiwidHJlZSIsInN5bW1ldHJpY19kaWZmIiwiZWx0JDAiLCJlbnVtMSIsInRyZWUxIiwiZW51bTIiLCJ0cmVlMiIsImNvbXBhcmVfcmVzdWx0IiwibmV4dF9zdGF0ZSIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwiaW5jbHVzaXZlX2JvdW5kIiwic2lkZSIsIm1heWJlIiwidiQxIiwiaW5pdCQwIiwidiQyIiwidiQzIiwidiQ0IiwiZSQyIiwibWVyZ2VfdG9fc2VxdWVuY2UiLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJ0MiQyIiwidDEkMiIsImlzX3N1YnNldCIsImFyZV9kaXNqb2ludCIsImFjY3UkMCIsImFjY3UkMSIsImZpbHQiLCJwYXJ0IiwiZWxlbWVudHNfYXV4IiwiZWxlbWVudHMiLCJjaG9vc2UiLCJjaG9vc2VfZXhuIiwicG9zX3JlZiIsImdyb3VwX2J5IiwiZXF1aXYiLCJzZXQkMCIsImVxdWl2X2NsYXNzZXMiLCJub3RfZXF1aXZfeCIsImVxdWl2X3giLCJlcXVpdl9jbGFzc2VzJDAiLCJzdGFibGVfZGVkdXBfbGlzdCIsImxlZnRvdmVycyIsImFscmVhZHlfc2VlbiIsImFscmVhZHlfc2VlbiQwIiwibGVmdG92ZXJzJDAiLCJ0X29mX3NleHBfZGlyZWN0IiwiZWx0X2xzdCIsImVsX3NleHAiLCJpc19zdWJzZXQkMCIsInN1YnNldCIsInN1cGVyc2V0Iiwic2V4cF9vZl9lbHQiLCJpbnZhbGlkX2VsZW1lbnRzIiwiaW52YWxpZF9lbGVtZW50c19zZXhwIiwibGlrZSIsImludmFyaWFudHMkMCIsImVsZW1lbnRzJDAiLCJtaW5fZWx0X2V4biQwIiwibWF4X2VsdF9leG4kMCIsImNob29zZSQwIiwiY2hvb3NlX2V4biQwIiwiZm9sZF9yaWdodCQwIiwiaXRlcjIkMCIsImZpbHRlciQwIiwiYWRkJDAiLCJyZW1vdmUkMCIsInVuaW9uJDAiLCJpbnRlciQwIiwiZGlmZiQwIiwic3ltbWV0cmljX2RpZmYkMCIsImNvbXBhcmVfZGlyZWN0IiwiaXNfc3Vic2V0JDEiLCJvZiIsImFyZV9kaXNqb2ludCQwIiwidG9fbmFtZWRfdHJlZSIsImlzX3N1YnNldCQyIiwicGFydGl0aW9uX3RmJDAiLCJ0cmVlX2YiLCJ0cmVlX3QiLCJncm91cF9ieSQwIiwibnRoJDAiLCJyZW1vdmVfaW5kZXgkMCIsInRvX3NlcXVlbmNlJDAiLCJiaW5hcnlfc2VhcmNoJDAiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQwIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsImhhc2hfZm9sZF9kaXJlY3QiLCJ0X29mX3NleHBfZGlyZWN0JDAiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwiZWxlbWVudHMkMSIsIm1pbl9lbHQkMSIsIm1pbl9lbHRfZXhuJDEiLCJtYXhfZWx0JDEiLCJtYXhfZWx0X2V4biQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwiaXRlciQyIiwiZXhpc3RzJDEiLCJmb3JfYWxsJDEiLCJjb3VudCQxIiwic3VtJDEiLCJmaW5kJDEiLCJmaW5kX2V4biQxIiwiZmluZF9tYXAkMSIsImZvbGQkMSIsImZvbGRfdW50aWwkMSIsImZvbGRfcmlnaHQkMSIsImZpbHRlciQxIiwiZmlsdGVyX21hcCQwIiwicGFydGl0aW9uX3RmJDEiLCJpdGVyMiQxIiwibWVtJDEiLCJhZGQkMSIsInJlbW92ZSQxIiwidW5pb24kMSIsImludGVyJDEiLCJkaWZmJDEiLCJzeW1tZXRyaWNfZGlmZiQxIiwiY29tcGFyZV9kaXJlY3QkMCIsImlzX3N1YnNldCQzIiwiYXJlX2Rpc2pvaW50JDEiLCJvZl9saXN0JDAiLCJvZl9zZXF1ZW5jZSQwIiwib2ZfYXJyYXkkMCIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMCIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQwIiwib2Zfc29ydGVkX2FycmF5JDAiLCJ1bmlvbl9saXN0JDAiLCJzdGFibGVfZGVkdXBfbGlzdCQwIiwiZ3JvdXBfYnkkMSIsInNwbGl0JDEiLCJudGgkMSIsInJlbW92ZV9pbmRleCQxIiwib2ZfdHJlZSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsImlzX3N1YnNldCQ0IiwidG9fdHJlZSQwIiwib2ZfdHJlZSQwIiwidF9vZl9zZXhwX2RpcmVjdCQxIiwiZW1wdHkkMCIsInNpbmdsZXRvbiQwIiwidW5pb25fbGlzdCQxIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQxIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDEiLCJvZl9zb3J0ZWRfYXJyYXkkMSIsIm9mX2xpc3QkMSIsIm9mX3NlcXVlbmNlJDEiLCJvZl9hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMSIsImZpbHRlcl9tYXAkMSIsImNvbXBhcmF0b3JfcyIsImVtcHR5JDEiLCJzaW5nbGV0b24kMSIsInVuaW9uX2xpc3QkMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVjayQyIiwib2Zfc29ydGVkX2FycmF5JDIiLCJvZl9saXN0JDIiLCJvZl9zZXF1ZW5jZSQyIiwib2ZfYXJyYXkkMiIsInN0YWJsZV9kZWR1cF9saXN0JDIiLCJmaWx0ZXJfbWFwJDIiLCJzZXhwX29mX21fdCIsIkVsdCIsIm1fdF9vZl9zZXhwIiwibV90X3NleHBfZ3JhbW1hciIsImNvbXBhcmVfbV90IiwiZXF1YWxfbV90IiwiaGFzaF9mb2xkX21fdCIsImhhc2hfbV90IiwiY29tcGFyYXRvciQwIiwiZW1wdHkkMiIsInNpbmdsZXRvbiQyIiwidW5pb25fbGlzdCQzIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQzIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDMiLCJvZl9zb3J0ZWRfYXJyYXkkMyIsIm9mX2xpc3QkMyIsIm9mX3NlcXVlbmNlJDMiLCJvZl9hcnJheSQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsIm1hcCQzIiwiZmlsdGVyX21hcCQzIiwib2ZfdHJlZSQxIiwidG9fdHJlZSQxIiwicmVwbGFjZSIsInNldF90ZW1wb3JhcmlseSIsInJlc3RvcmVfdG8iLCJzZXRzIiwic25hcHNob3QiLCJzZXRzX3RlbXBvcmFyaWx5IiwiYW5kX3ZhbHVlcyIsImluY19udW1fbXV0YXRpb25zIiwiZWx0c19pbmRleCIsImNoZWNrX2luZGV4X2V4biIsImVuc3VyZV9ub19tdXRhdGlvbiIsIm51bV9tdXRhdGlvbnMiLCJudW1fbXV0YXRpb25zXzAwMyIsImZyb250XzAwNSIsIm1hc2tfMDA3IiwibGVuZ3RoXzAwOSIsImVsdHNfMDExIiwiYm5kc18wMDIkMSIsImJuZHNfMDAyJDIiLCJibmRzXzAwMiQzIiwibXV0MiIsIm11dDEiLCJmcm9udCIsImNhcGFjaXR5JDAiLCJjYXBhY2l0eSQxIiwiYmxpdF90b19hcnJheSIsImZyb250X2xlbiIsInJlc3RfbGVuIiwiZGVzaXJlZF9jYXBhY2l0eSIsImVucXVldWUiLCJkZXF1ZXVlX25vbmVtcHR5IiwiZGVxdWV1ZV9leG4iLCJkZXF1ZXVlIiwiZnJvbnRfbm9uZW1wdHkiLCJsYXN0X25vbmVtcHR5IiwicGVlayIsInBlZWtfZXhuIiwiYmxpdF90cmFuc2ZlciIsImxlbiQxIiwiZHN0X3N0YXJ0Iiwic3JjX2kiLCJkc3RfaSIsImVucXVldWVfYWxsIiwidF9yZXN1bHQiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcmlfaW5wbGFjZSIsInVucmVhY2hhYmxlX2NvZGUiLCJ6ZXJvJDAiLCJ6ZXJvJDEiLCJ0b19pbnRfdHJ1bmMiLCJ0b19pbnQzMl90cnVuYyIsIm9mX2ludDY0X3RydW5jIiwibmFtZSQwIiwib2ZfY29udGludWVfb3Jfc3RvcCIsInRvX2NvbnRpbnVlX29yX3N0b3AiLCJsZWZ0X3ZhbHVlIiwicmlnaHRfdmFsdWUiLCJ2YWx1ZXMiLCJsZWZ0X2RlZmF1bHQiLCJyaWdodF9kZWZhdWx0IiwicmlnaHQkMCIsImNvbXBhcmVfa2V5IiwidmwiLCJ2bCQwIiwidnIiLCJrMCIsImsxIiwibGQiLCJscmQiLCJscmQkMCIsInJkIiwicmxkIiwicmxkJDAiLCJyYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50Iiwic2V4cF9vZl9rZXkiLCJmaW5kX2FuZF9hZGRfb3Jfc2V0IiwiZGF0YSIsImFkZF9vcl9zZXQiLCJkJDAiLCJhZGRfZXhuIiwiYWRkX2V4bl9pbnRlcm5hbCIsInNpbmdsZXRvbl90b190cmVlX2V4biIsImNvbGxhcHNlIiwiZ28iLCJhZGRfdW5jaGVja2VkIiwiZ28kMCIsInRvX3RyZWVfdW5jaGVja2VkIiwibWF4X2tleSIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UiLCJidWlsZGVyIiwicHJldl9rZXkiLCJqb2luJDAiLCJsZCQwIiwibGskMCIsInJrIiwicmQkMCIsInJrJDAiLCJsayIsImNtcCQwIiwibWF5YmUkMCIsInNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSIsImludG8iLCJib3VuZGFyeV9vcHQiLCJpbnNlcnRfaW50byIsInNwbGl0X3JhbmdlIiwibWlkX2FuZF9yaWdodCIsImxiJDEiLCJsYiQyIiwibWlkX2FuZF9yaWdodCQwIiwibGIiLCJsYiQwIiwibWlkJDAiLCJhZGRfbXVsdGkiLCJkYXRhJDAiLCJmaW5kX211bHRpIiwibG93ZXJfcGFydCIsInVwcGVyX3BhcnQiLCJtaW5fdXBwZXIiLCJtYXhfbG93ZXIiLCJ1cHBlcl9wYXJ0X3dpdGhvdXRfbWluIiwiZ28kMSIsImNfbWluIiwiaW5pdCQxIiwiY19tYXgiLCJpbml0JDIiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSIsInJhbmdlX3RvX2FsaXN0IiwiY29uY2F0X3VuY2hlY2tlZCIsInJlbW92ZV9sb29wIiwiY2hhbmdlIiwiY2hhbmdlX2NvcmUiLCJkJDEiLCJsZW5ndGgkMiIsImxlbmd0aCQzIiwidXBkYXRlIiwidXBkYXRlX2NvcmUiLCJyZW1vdmVfbXVsdGkiLCJub25fZW1wdHlfdGFpbCIsIml0ZXJfa2V5cyIsIml0ZXJpX3VudGlsX2xvb3AiLCJpdGVyaV91bnRpbCIsImZvbGRfdW50aWxfbG9vcCIsImZpbmFsJDEiLCJmaW5hbCQwIiwiZmlsdGVyX2tleXMiLCJwYXJ0aXRpb25fbWFwaSIsInBhaXIyIiwicGFpcjEiLCJjdXJyIiwiazIiLCJuZXh0JDEiLCJkYXRhX2VxdWFsIiwia2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIiwia2V5c19sZXNzX29yX2VxdWFsX3RvIiwiZCQyIiwiY29tcGFyZV9kYXRhIiwiZDIiLCJkMSIsImZvbGQyJDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwiZGVsdGEiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwicmlnaHQkMiIsImxlZnQkMiIsInJpZ2h0JDEiLCJrZXlzIiwib2ZfZm9sZGFibGVfZm9sZCIsImZvbGRhYmxlIiwicHJldl9kYXRhIiwib2ZfZm9sZGFibGVfcmVkdWNlIiwibmV3X2RhdGEiLCJvZl9mb2xkYWJsZSIsIm9mX2ZvbGRhYmxlX29yX2Vycm9yIiwib2ZfZm9sZGFibGVfZXhuIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2FsaXN0Iiwib2ZfYWxpc3Rfb3JfZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJvZl9mb2xkYWJsZV9tdWx0aSIsIm9mX2FsaXN0X211bHRpIiwiZm9sZCQyIiwib2Zfc2VxdWVuY2VfZm9sZCIsIm9mX3NlcXVlbmNlX3JlZHVjZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJ0b19hbGlzdCIsImtleV9vcmRlciIsIm1lcmdlX2xhcmdlX2ZpcnN0IiwibGVuZ3RoX2xhcmdlIiwidF9sYXJnZSIsInRfc21hbGwiLCJtZXJnZV9za2V3ZWQiLCJsZW5ndGgxIiwibGVuZ3RoMiIsInJlcGFja2FnZSIsIm1hcmtlciIsImNsb3Nlc3Rfa2V5IiwiZm91bmRfbWFya2VyIiwiZm91bmRfa2V5IiwiZm91bmRfdmFsdWUiLCJmb3VuZF92YWx1ZSQwIiwiZm91bmRfa2V5JDAiLCJyYW5rIiwibnVtX3RvX3NlYXJjaCIsInBhaXIiLCJwYWlyJDAiLCJiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZCIsIm1heWJlX2JvdW5kIiwiaWZfZXhjbHVzaXZlIiwiaWZfaW5jbHVzaXZlIiwiZmluZF9ib3VuZCIsImJvdW5kJDAiLCJiaW5hcnlfc2VhcmNoX3R3b19zaWRlZF9ib3VuZHMiLCJsb3dlcl9ib3VuZCQwIiwidXBwZXJfYm91bmQkMCIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwia2V5X29mX3NleHAiLCJ2YWx1ZV9vZl9zZXhwIiwiYWxpc3Rfc2V4cHMiLCJmb3VuZF9maXJzdF9rIiwiazJfc2V4cCIsInNleHBfb2ZfdmFsdWUiLCJlcnJvcl90cmVlIiwib2tzIiwibWFwX2tleXMiLCJtYXBfa2V5c19leG4iLCJsaWtlMiIsImxpa2VfbWF5YmVfbm9fb3AiLCJvbGRfdCIsIm9sZF90cmVlIiwid2l0aF9zYW1lX2xlbmd0aCIsInNldCQxIiwiYWRkX2V4biQwIiwiYWRkX211bHRpJDAiLCJyZW1vdmVfbXVsdGkkMCIsImZpbmRfbXVsdGkkMCIsImNoYW5nZSQwIiwidXBkYXRlJDAiLCJpdGVyX2tleXMkMCIsIml0ZXJpX3VudGlsJDAiLCJmb2xkJDMiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlcmkkMCIsImZpbHRlcl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwaSQwIiwicGFydGl0aW9uX21hcCQwIiwicGFydGl0aW9uaV90ZiQwIiwiY29tYmluZV9lcnJvcnMkMCIsImtleXMkMCIsInRvX2FsaXN0JDAiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDAiLCJtZXJnZSQwIiwibWVyZ2Vfc2tld2VkJDAiLCJib3RoX2xlbiIsInN1YnJhbmdlIiwiaF9sIiwiaF9yIiwib3V0ZXJfam9pbmVkX2hlaWdodCIsIm1pZF9sZW5ndGgiLCJhcHBlbmQkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsInJhbmskMCIsInNleHBfb2ZfayIsInNleHBfb2ZfdiIsImhhc2hfZm9sZF9rZXkiLCJoYXNoX2ZvbGRfZGF0YSIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UiLCJvZl9hbGlzdCQwIiwib2ZfYWxpc3Rfb3JfZXJyb3IkMCIsIm9mX2FsaXN0X2V4biQwIiwib2ZfYWxpc3RfbXVsdGkkMCIsIm9mX2FsaXN0X2ZvbGQkMCIsIm9mX2FsaXN0X3JlZHVjZSQwIiwib2ZfaXRlcmkkMCIsIm9mX2l0ZXJpX2V4biQwIiwicmVxdWlyZWRfYnlfaW50ZiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMCIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDAiLCJvZl9zZXF1ZW5jZV9leG4kMCIsIm9mX3NlcXVlbmNlX211bHRpJDAiLCJvZl9zZXF1ZW5jZV9mb2xkJDAiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMCIsInNldCQyIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJpdGVyX2tleXMkMSIsIml0ZXJpX3VudGlsJDEiLCJtYXBpJDEiLCJmb2xkJDQiLCJmb2xkMiQyIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlcmkkMSIsImZpbHRlcl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwaSQxIiwicGFydGl0aW9uX21hcCQxIiwicGFydGl0aW9uaV90ZiQxIiwiY29tYmluZV9lcnJvcnMkMSIsImtleXMkMSIsImRhdGEkMSIsInRvX2FsaXN0JDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJmb3JfYWxsaSQxIiwiZXhpc3RzaSQxIiwiY291bnRpJDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDAiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMiIsIm50aF9leG4kMCIsInJhbmskMSIsImtfb2Zfc2V4cCIsInZfb2Zfc2V4cCIsImJpbmFyeV9zZWFyY2hfc3VicmFuZ2UkMCIsIm1hcF9rZXlzJDAiLCJkdXAiLCJtYXBfa2V5c19leG4kMCIsImFkZF9leG4kMiIsIm9mX3RyZWUwIiwib2ZfdHJlZSQyIiwib2ZfYWxpc3QkMSIsIm9mX2FsaXN0X29yX2Vycm9yJDEiLCJvZl9hbGlzdF9leG4kMSIsIm9mX2FsaXN0X211bHRpJDEiLCJvZl9hbGlzdF9mb2xkJDEiLCJvZl9hbGlzdF9yZWR1Y2UkMSIsIm9mX2l0ZXJpJDEiLCJ0cmVlX2xlbmd0aCIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2ZfdHJlZSQzIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2FsaXN0X211bHRpJDIiLCJvZl9hbGlzdF9mb2xkJDIiLCJvZl9hbGlzdF9yZWR1Y2UkMiIsIm9mX2l0ZXJpJDIiLCJvZl9pdGVyaV9leG4kMiIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMiIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDIiLCJvZl9zZXF1ZW5jZV9leG4kMiIsIm9mX3NlcXVlbmNlX211bHRpJDIiLCJvZl9zZXF1ZW5jZV9mb2xkJDIiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMiIsIm1hcF9rZXlzJDIiLCJtYXBfa2V5c19leG4kMiIsIksiLCJ2X2dyYW1tYXIiLCJjb21wYXJlX3YiLCJlcXVhbF92IiwiaGFzaF9mb2xkX3YiLCJvZl90cmVlJDQiLCJlbXB0eSQzIiwib2ZfYWxpc3QkMyIsIm9mX2FsaXN0X29yX2Vycm9yJDMiLCJvZl9hbGlzdF9leG4kMyIsIm9mX2FsaXN0X211bHRpJDMiLCJvZl9hbGlzdF9mb2xkJDMiLCJvZl9hbGlzdF9yZWR1Y2UkMyIsIm9mX2l0ZXJpJDMiLCJvZl9pdGVyaV9leG4kMyIsIm9mX2luY3JlYXNpbmdfc2VxdWVuY2UkMyIsIm9mX3NlcXVlbmNlX29yX2Vycm9yJDMiLCJvZl9zZXF1ZW5jZV9leG4kMyIsIm9mX3NlcXVlbmNlX211bHRpJDMiLCJvZl9zZXF1ZW5jZV9mb2xkJDMiLCJvZl9zZXF1ZW5jZV9yZWR1Y2UkMyIsIm1hcF9rZXlzJDMiLCJtYXBfa2V5c19leG4kMyIsInRyYW5zZmVyIiwicSIsInEkMCIsImZsb2F0X29mX2JpdHMiLCJiaXRzX29mX2Zsb2F0IiwiYnN3YXAxNiIsImJzd2FwMzIiLCJic3dhcDQ4IiwidG9fbmF0aXZlaW50X2V4biIsIndyYXBfZXhuIiwid3JhcF9tb2R1bG8iLCJ1bndyYXAiLCJjbHoiLCJjdHoiLCJpbnZhbGlkX3N0ciIsInNpZ25lZG5lc3MiLCJwb3Nfc3RyIiwiaW50NjMiLCJpbnQ2MyQwIiwib25lJDAiLCJvZl9uYXRpdmVpbnRfdHJ1bmMiLCJ0b19uYXRpdmVpbnRfdHJ1bmMiLCJ0b19zdHJpbmckMSIsInJlcHIiLCJvZl9pbnRfdHJ1bmMiLCJyZXByJDAiLCJpbmNsdWRlIiwib2ZfZmxvYXQkMCIsInRvX2Zsb2F0JDAiLCJvZl9pbnRfZXhuJDAiLCJ0b19pbnRfZXhuJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwibWludXNfb25lJDAiLCJyZW0kMCIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJzdWNjJDAiLCJwcmVkJDAiLCJwb3ckMCIsImJpdF9hbmQkMCIsImJpdF9vciQwIiwiYml0X3hvciQwIiwiYml0X25vdCQwIiwicG9wY291bnQkMCIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJkZWNyJDAiLCJpbmNyJDAiLCJvZl9pbnQzMl9leG4kMCIsInRvX2ludDMyX2V4biQwIiwib2ZfaW50NjRfZXhuJDAiLCJ0b19pbnQ2NCQwIiwib2ZfbmF0aXZlaW50X2V4biQwIiwidG9fbmF0aXZlaW50X2V4biQwIiwibnVtX2JpdHMkMCIsIm1heF92YWx1ZSQwIiwibWluX3ZhbHVlJDAiLCJzaGlmdF9yaWdodF9sb2dpY2FsJDAiLCJjZWlsX3BvdzIkMCIsImZsb29yX3BvdzIkMCIsImNlaWxfbG9nMiQwIiwiaXNfcG93MiQwIiwiY2x6JDAiLCJjdHokMCIsIm9mX2ludCQwIiwidG9faW50JDAiLCJ0b19pbnRfdHJ1bmMkMCIsInRvX2ludDMyJDAiLCJvZl9pbnQ2NCQwIiwib2ZfbmF0aXZlaW50JDAiLCJ0b19uYXRpdmVpbnQkMCIsInRvX25hdGl2ZWludF90cnVuYyQwIiwib2ZfZmxvYXRfdW5jaGVja2VkJDAiLCJyZXByJDEiLCJic3dhcDMyJDAiLCJic3dhcDQ4JDAiLCJwb3NfZGlmZiIsIm5lZ2F0aXZlX29uZSIsImRpdl93b3VsZF9vdmVyZmxvdyIsInByb2R1Y3QiLCJhYnMkMSIsIm5lZyQwIiwicmFuZG9tX29mX2ludCIsInJhbmRvbV9vZl9pbnQ2NCIsInJhbmRvbV9vZl9pbnQkMCIsInJhbmRvbV9pbmNsX29mX2ludCIsInJhbmRvbV9pbmNsX29mX2ludDY0IiwicmFuZG9tX2luY2wiLCJpbnYiLCJsZWZ0X2tleSIsInJpZ2h0X2tleSIsInVwZGF0ZV9oZWlnaHQiLCJvbGRfaGVpZ2h0IiwibmV3X2hlaWdodCIsImJhbGFuY2UiLCJyb290X25vZGUiLCJsZWZ0X25vZGUiLCJyaWdodF9ub2RlIiwibGVmdF9ub2RlX2xlZnQiLCJsZWZ0X25vZGVfcmlnaHQiLCJscl9sZWZ0IiwibHJfcmlnaHQiLCJyaWdodF9ub2RlX2xlZnQiLCJyaWdodF9ub2RlX3JpZ2h0IiwicmxfbGVmdCIsInJsX3JpZ2h0Iiwic2V0X2xlZnQiLCJub2RlIiwidHJlZSQwIiwic2V0X3JpZ2h0IiwiYWRkZWQiLCJmaW5kaV9hbmRfY2FsbF9pbXBsIiwiYXJnMSIsImFyZzIiLCJjYWxsX2lmX2ZvdW5kIiwiY2FsbF9pZl9ub3RfZm91bmQiLCJmaW5kX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQwIiwiY2FsbF9pZl9ub3RfZm91bmQkMCIsImZpbmRpX2FuZF9jYWxsIiwiY2FsbF9pZl9mb3VuZCQxIiwiY2FsbF9pZl9ub3RfZm91bmQkMSIsImZpbmRfYW5kX2NhbGwxIiwiY2FsbF9pZl9mb3VuZCQyIiwiY2FsbF9pZl9ub3RfZm91bmQkMiIsImZpbmRpX2FuZF9jYWxsMSIsImNhbGxfaWZfZm91bmQkMyIsImNhbGxfaWZfbm90X2ZvdW5kJDMiLCJmaW5kX2FuZF9jYWxsMiIsImNhbGxfaWZfZm91bmQkNCIsImNhbGxfaWZfbm90X2ZvdW5kJDQiLCJmaW5kaV9hbmRfY2FsbDIiLCJpZl9mb3VuZCQwIiwiaWZfbm90X2ZvdW5kJDAiLCJyZW1vdmVkIiwia2V5JDQiLCJkYXRhJDQiLCJya2V5IiwicmRhdGEiLCJrZXkkMSIsInJrZXkkMCIsInJkYXRhJDAiLCJsa2V5JDAiLCJsZGF0YSQwIiwia2V5JDMiLCJkYXRhJDMiLCJya2V5JDEiLCJyZGF0YSQxIiwibGtleSIsImxkYXRhIiwia2V5JDIiLCJkYXRhJDIiLCJtYXBpX2lucGxhY2UiLCJlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCIsIndpdGhvdXRfbXV0YXRpbmciLCJtYXhfdGFibGVfbGVuZ3RoIiwiZ3Jvd3RoX2FsbG93ZWQiLCJzaXplJDAiLCJzaXplJDEiLCJzbG90IiwiYWRkX3dvcmtlciIsIm5ld19yb290IiwibWF5YmVfcmVzaXplX3RhYmxlIiwic2hvdWxkX2dyb3ciLCJuZXdfYXJyYXlfbGVuZ3RoIiwibmV3X3RhYmxlIiwib2xkX3RhYmxlIiwic2V4cF9vZl9rZXkkMCIsImFkZGVkX29yX3JlbW92ZWQiLCJidWNrZXQiLCJjaG9vc2Vfbm9uZW1wdHkiLCJ0YWJsZSIsImF2bHRyZWUiLCJpbnZhcmlhbnRfa2V5IiwiaW52YXJpYW50X2RhdGEiLCJyZWFsX2xlbiIsIm5ld190IiwidDAiLCJuZXdfZGF0YSQwIiwiZmluZF9vcl9hZGQiLCJpZCIsImZpbmRpX29yX2FkZCIsImZpbmRfYW5kX3JlbW92ZSIsInVwZGF0ZV9hbmRfcmV0dXJuIiwiaW5jcl9ieSIsInJlbW92ZV9pZl96ZXJvIiwiYnkiLCJjcmVhdGVfbWFwcGVkIiwiZ2V0X2tleSIsImdldF9kYXRhIiwiZHVwZXMiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMiLCJzZXhwX29mX2RhdGEiLCJkX29mX3NleHAiLCJrX2dyYW1tYXIiLCJyb3ciLCJvbGQiLCJjcmVhdGVfd2l0aF9rZXkiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IiLCJjcmVhdGVfd2l0aF9rZXlfZXhuIiwibWF5YmVfc2V0IiwidF9sZWZ0IiwidF9yaWdodCIsIm1lcmdlX2ludG8iLCJkc3RfZGF0YSIsImFjdGlvbiIsImRzdF9kYXRhJDAiLCJ0b19yZW1vdmUiLCJmaWx0ZXJfa2V5c19pbnBsYWNlIiwiZmlsdGVyX21hcGlfaW5wbGFjZSIsIm1hcF9yZXN1bHRzIiwiZmlsdGVyX21hcF9pbnBsYWNlIiwic2ltaWxhciIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQwIiwiY3JlYXRlX21hcHBlZCQwIiwiY3JlYXRlX3dpdGhfa2V5JDAiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMCIsImNyZWF0ZV93aXRoX2tleV9leG4kMCIsIm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyQxIiwiY3JlYXRlX21hcHBlZCQxIiwiY3JlYXRlX3dpdGhfa2V5JDEiLCJjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IkMSIsImNyZWF0ZV93aXRoX2tleV9leG4kMSIsImdyb3VwJDEiLCJoYXNoYWJsZV9zIiwicG9seV9oYXNoYWJsZSIsInN0cmljdF9hZGQiLCJzdHJpY3RfYWRkX2V4biIsInN0cmljdF9yZW1vdmUiLCJzdHJpY3RfcmVtb3ZlX2V4biIsInNleHBfb2ZfZSIsImxhcmdlciIsInNtYWxsZXIiLCJvZl9oYXNodGJsX2tleXMiLCJoYXNodGJsIiwidG9faGFzaHRibCIsImVfb2Zfc2V4cCIsIm1pbl9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWUiLCJtaW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlIiwicGkiLCJzcXJ0X3BpIiwic3FydF8ycGkiLCJldWxlciIsIm9mX2ludDYzIiwiaXJvdW5kX2xib3VuZCIsImlyb3VuZF91Ym91bmQiLCJpcm91bmRfdXAiLCJpcm91bmRfdXBfZXhuIiwiaXJvdW5kX2Rvd24iLCJpcm91bmRfZG93bl9leG4iLCJpcm91bmRfdG93YXJkc196ZXJvIiwiaXJvdW5kX3Rvd2FyZHNfemVyb19leG4iLCJyb3VuZF9uZWFyZXN0X2xiIiwicm91bmRfbmVhcmVzdF91YiIsIm9uZV91bHBfbGVzc190aGFuX2hhbGYiLCJhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCIsImlyb3VuZF9uZWFyZXN0XzMyIiwiaXJvdW5kX25lYXJlc3RfNjQiLCJpcm91bmRfbmVhcmVzdF82NCQwIiwiaXJvdW5kX25lYXJlc3RfZXhuXzMyIiwiaXJvdW5kX25lYXJlc3RfZXhuXzY0IiwiaXJvdW5kX25lYXJlc3RfZXhuIiwiaXJvdW5kX2V4biIsImlyb3VuZCIsImlzX2luZiIsImlzX2Zpbml0ZSIsIm1pbl9pbmFuIiwibWF4X2luYW4iLCJzY2FsZSIsInNxdWFyZSIsImZyYWN0aW9uYWwiLCJpbnRlZ3JhbCIsInJvdW5kX25lYXJlc3RfaW5saW5lIiwicm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4iLCJjZWlsX29yX3N1Y2MiLCJkaWZmX2Zsb29yIiwiZGlmZl9jZWlsIiwiaW50NjNfcm91bmRfbGJvdW5kIiwiaW50NjNfcm91bmRfdWJvdW5kIiwiaW50NjNfcm91bmRfdXBfZXhuIiwiaW50NjNfcm91bmRfZG93bl9leG4iLCJpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2EiLCJpbnQ2M19yb3VuZF9uZWFyZXN0X2V4biIsImNsYXNzaWZ5Iiwic3RyaXBfemVybyIsImRlY2ltYWxzIiwiZXhwbGljaXRfcGx1cyIsInRvX3BhZGRlZF9jb21wYWN0X3N0cmluZ19jdXN0byIsImtpbG8iLCJtZWdhIiwiZ2lnYSIsInRlcmEiLCJwZXRhIiwibWFnIiwibnVtZXJhdG9yIiwiZGVub21pbmF0b3IiLCJoaWdoZXIiLCJkaWZmX3JpZ2h0IiwiZGlmZl9sZWZ0IiwicGV0YSQwIiwidG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIiwicm91bmRfZ2VuIiwic2QiLCJkZCIsImRkJDAiLCJzZCQwIiwiZGQkMSIsInNkJDEiLCJhYnNfZGQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWwiLCJkZWNpbWFsX2RpZ2l0cyIsInNpZ25fZXhuIiwic2lnbl9vcl9uYW4iLCJpZWVlX25lZ2F0aXZlIiwiZXhwb25lbnRfbWFzazY0IiwiZXhwb25lbnRfbWFzayIsIm1hbnRpc3NhX21hc2siLCJtYW50aXNzYV9tYXNrNjQiLCJtYW50aXNzYV9iaXRzIiwiaWVlZV9leHBvbmVudCIsImllZWVfbWFudGlzc2EiLCJjcmVhdGVfaWVlZV9leG4iLCJuZWdhdGl2ZSIsIm1hbnRpc3NhIiwic2lnbl9iaXRzIiwiZXhwdF9iaXRzIiwibWFudF9iaXRzIiwiY3JlYXRlX2llZWUiLCJzcGVjaWFsaXplZF9oYXNoIiwiYWRkX3N1YnN0cmluZyIsImFkZF9zdWJieXRlcyIsImVsaWRlZF9tZXNzYWdlIiwiZWxpZGUiLCJhdF9tb3N0X251bV9mcmFtZXMiLCJ0b19zdHJpbmdfbGlzdCIsInNldF9yZWNvcmRpbmciLCJhbV9yZWNvcmRpbmciLCJtb3N0X3JlY2VudCIsIm1vc3RfcmVjZW50X2Zvcl9leG4iLCJ3aXRoX3JlY29yZGluZyIsInNhdmVkIiwib2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhIiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJib29sX29mX3NleHAiLCJzZXhwX29mX2Jvb2wiLCJib29sX3NleHBfZ3JhbW1hciIsImNoYXJfb2Zfc2V4cCIsInNleHBfb2ZfY2hhciIsImNoYXJfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJmdW5jJDEiLCJmbG9hdF9vZl9zZXhwIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X3NleHBfZ3JhbW1hciIsImZ1bmMkMiIsImludF9vZl9zZXhwIiwic2V4cF9vZl9pbnQiLCJpbnRfc2V4cF9ncmFtbWFyIiwiZnVuYyQzIiwiaW50MzJfb2Zfc2V4cCIsInNleHBfb2ZfaW50MzIiLCJpbnQzMl9zZXhwX2dyYW1tYXIiLCJmdW5jJDQiLCJpbnQ2NF9vZl9zZXhwIiwic2V4cF9vZl9pbnQ2NCIsImludDY0X3NleHBfZ3JhbW1hciIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwiZnVuYyQ1IiwibmF0aXZlaW50X29mX3NleHAiLCJzZXhwX29mX25hdGl2ZWludCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJvcHRpb25fb2Zfc2V4cCIsInNleHBfb2Zfb3B0aW9uIiwib3B0aW9uX3NleHBfZ3JhbW1hciIsInJlZl9vZl9zZXhwIiwic2V4cF9vZl9yZWYiLCJyZWZfc2V4cF9ncmFtbWFyIiwic3RyaW5nX29mX3NleHAiLCJzZXhwX29mX3N0cmluZyIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJjb21wYXJlX2J5dGVzIiwiZXF1YWxfYnl0ZXMiLCJieXRlc19vZl9zZXhwIiwic2V4cF9vZl9ieXRlcyIsImJ5dGVzX3NleHBfZ3JhbW1hciIsImZ1bmMkNiIsInVuaXRfb2Zfc2V4cCIsInNleHBfb2ZfdW5pdCIsInVuaXRfc2V4cF9ncmFtbWFyIiwiZmFpbHdpdGgiLCJpbnZhbGlkX2FyZyIsImNvbXBhcmVfYXJyYXkkMCIsImVxdWFsX2FycmF5JDAiLCJhcnJheV9vZl9zZXhwJDAiLCJzZXhwX29mX2FycmF5JDAiLCJhcnJheV9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYm9vbCQwIiwiZXF1YWxfYm9vbCQwIiwiaGFzaF9mb2xkX2Jvb2wkMCIsImhhc2hfYm9vbCQwIiwiYm9vbF9vZl9zZXhwJDAiLCJzZXhwX29mX2Jvb2wkMCIsImJvb2xfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2NoYXIkMCIsImVxdWFsX2NoYXIkMCIsImhhc2hfZm9sZF9jaGFyJDAiLCJoYXNoX2NoYXIkMCIsImNoYXJfb2Zfc2V4cCQwIiwic2V4cF9vZl9jaGFyJDAiLCJjaGFyX3NleHBfZ3JhbW1hciQwIiwic2V4cF9vZl9leG4kMCIsImNvbXBhcmVfZmxvYXQkMCIsImVxdWFsX2Zsb2F0JDAiLCJoYXNoX2ZvbGRfZmxvYXQkMCIsImhhc2hfZmxvYXQkMCIsImZsb2F0X29mX3NleHAkMCIsInNleHBfb2ZfZmxvYXQkMCIsImZsb2F0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQkMCIsImVxdWFsX2ludCQwIiwiaGFzaF9mb2xkX2ludCQwIiwiaGFzaF9pbnQkMCIsImludF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludCQwIiwiaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9pbnQzMiQwIiwiZXF1YWxfaW50MzIkMCIsImhhc2hfZm9sZF9pbnQzMiQwIiwiaGFzaF9pbnQzMiQwIiwiaW50MzJfb2Zfc2V4cCQwIiwic2V4cF9vZl9pbnQzMiQwIiwiaW50MzJfc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX2ludDY0JDAiLCJlcXVhbF9pbnQ2NCQwIiwiaGFzaF9mb2xkX2ludDY0JDAiLCJoYXNoX2ludDY0JDAiLCJpbnQ2NF9vZl9zZXhwJDAiLCJzZXhwX29mX2ludDY0JDAiLCJpbnQ2NF9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfbGlzdCQwIiwiZXF1YWxfbGlzdCQwIiwiaGFzaF9mb2xkX2xpc3QkMCIsImxpc3Rfb2Zfc2V4cCQwIiwic2V4cF9vZl9saXN0JDAiLCJsaXN0X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9uYXRpdmVpbnQkMCIsImVxdWFsX25hdGl2ZWludCQwIiwiaGFzaF9mb2xkX25hdGl2ZWludCQwIiwiaGFzaF9uYXRpdmVpbnQkMCIsIm5hdGl2ZWludF9vZl9zZXhwJDAiLCJzZXhwX29mX25hdGl2ZWludCQwIiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciQwIiwiY29tcGFyZV9vcHRpb24kMCIsImVxdWFsX29wdGlvbiQwIiwiaGFzaF9mb2xkX29wdGlvbiQwIiwib3B0aW9uX29mX3NleHAkMCIsInNleHBfb2Zfb3B0aW9uJDAiLCJvcHRpb25fc2V4cF9ncmFtbWFyJDAiLCJjb21wYXJlX3JlZiQwIiwiZXF1YWxfcmVmJDAiLCJyZWZfb2Zfc2V4cCQwIiwic2V4cF9vZl9yZWYkMCIsInJlZl9zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfc3RyaW5nJDAiLCJlcXVhbF9zdHJpbmckMCIsImhhc2hfZm9sZF9zdHJpbmckMCIsImhhc2hfc3RyaW5nJDAiLCJzdHJpbmdfb2Zfc2V4cCQwIiwic2V4cF9vZl9zdHJpbmckMCIsInN0cmluZ19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfYnl0ZXMkMCIsImVxdWFsX2J5dGVzJDAiLCJieXRlc19vZl9zZXhwJDAiLCJzZXhwX29mX2J5dGVzJDAiLCJieXRlc19zZXhwX2dyYW1tYXIkMCIsImNvbXBhcmVfdW5pdCQwIiwiZXF1YWxfdW5pdCQwIiwiaGFzaF9mb2xkX3VuaXQkMCIsImhhc2hfdW5pdCQwIiwidW5pdF9vZl9zZXhwJDAiLCJzZXhwX29mX3VuaXQkMCIsInVuaXRfc2V4cF9ncmFtbWFyJDAiLCJyYWlzZV9zJDAiLCJwaHlzX2VxdWFsJDAiLCJ0b19zdHJpbmciLCJtYXAiLCJmIiwibyIsInYiLCJzZXRfaW5wdXRfbmFtZSIsIm5hbWUiLCJ2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCIsIngiLCJpc193ZWxsX2Zvcm1lZCIsImVycm9yIiwic3RyaW5nX29mX2xvY2F0aW9uX21zZyIsIm1zZyIsIm1haW5fbXNnIiwibWFpbiIsImxvYyIsInN1Yl9tc2dzIiwic3ViIiwiZXJyIiwic3ViJDAiLCJhY2MiLCJ0YWlsIiwic3ViJDEiLCJvZl9leG4iLCJleG4iLCJlIiwic2V0X21haW5fbXNnIiwidHh0IiwicHBmIiwibWFrZSIsIm1rIiwic2V0X21haW5fbG9jIiwicmFpc2VfZXJyb3JmJDAiLCJwYXJzZSIsInMiLCJhc3RfaW1wbF9tYWdpY19udW1iZXIiLCJhc3RfaW50Zl9tYWdpY19udW1iZXIiLCJyaWdodCIsImZtdCIsImZtdCQwIiwiZm10JDEiLCJvcHQiLCJwcmVmaXhfc3ltYm9scyIsImluZml4X3N5bWJvbHMiLCJzcGVjaWFsX2luZml4X3N0cmluZ3MiLCJyZXNldF9jdHh0IiwidmFsdWUiLCJ0IiwiZGVmYXVsdCQwIiwiZml4aXR5X29mX3N0cmluZyIsImZpcnN0X2lzIiwiYyIsInN0ciIsImxhc3RfaXMiLCJuZWVkc19wYXJlbnMiLCJmaXgiLCJuZWVkc19zcGFjZXMiLCJzdHJpbmdfbG9jIiwicHJvdGVjdF9pZGVudCIsImZvcm1hdCIsIm92ZXJyaWRlIiwidmlld19leHByIiwiZXhwIiwiZXhwJDAiLCJleHAkMSIsImUxIiwiYWNjJDAiLCJiIiwibHMiLCJpc19zaW1wbGVfY29uc3RydWN0IiwicHAiLCJ1bmRlcl9zZW1pIiwiY3R4dCIsImxpc3QiLCJzZXAiLCJmaXJzdCIsImxhc3QiLCJmdSIsInhzIiwiZmlyc3QkMCIsIngkMCIsImxhc3QkMCIsIngkMSIsInNlcCQwIiwieCQzIiwieCQyIiwieHMkMCIsIm9wdGlvbiIsImEiLCJwYXJlbiIsInN0aCIsInN0aCQwIiwicHJpbnRfbG9uZ2lkZW50IiwibG9uZ3ByZWZpeCIsInMkMCIsInkiLCJsb25naWRlbnRfbG9jIiwiY29uc3RhbnQiLCJpIiwibSIsImkkMCIsImkkMSIsImRlbGltIiwiaSQyIiwibSQwIiwibXV0YWJsZV9mbGFnIiwidmlydHVhbF9mbGFnIiwicmVjX2ZsYWciLCJyZiIsIm5vbnJlY19mbGFnIiwiZGlyZWN0aW9uX2ZsYWciLCJwcml2YXRlX2ZsYWciLCJjb25zdGFudF9zdHJpbmciLCJ0eXZhciIsInR5dmFyX2xvYyIsInN0cmluZ19xdW90IiwiY2xhc3NfcGFyYW1zX2RlZiIsImwiLCJ0eXBlX3BhcmFtIiwidHlwZV93aXRoX2xhYmVsIiwibGFiZWwiLCJjb3JlX3R5cGUxIiwiY29yZV90eXBlIiwiYXR0cmlidXRlcyIsImN0MiIsImN0MSIsImN0Iiwic2wiLCJjdCQwIiwiY3QkMSIsImwkMCIsImxpIiwibCQxIiwiY29yZV9maWVsZF90eXBlIiwiZmllbGRfdmFyIiwibCQyIiwibGkkMCIsImxvdyIsImNsb3NlZCIsImwkMyIsImZpcnN0X2lzX2luaGVyaXQiLCJ0eXBlX3ZhcmlhbnRfaGVscGVyIiwiY3RsIiwiY3N0cnMiLCJsaWQiLCJhdXgiLCJleHRlbnNpb24iLCJwYXR0ZXJuJDEiLCJwYXR0ZXJuIiwicCIsInAyIiwicDEiLCJvcnBhdHMiLCJwYXR0ZXJuMSIsInBhdHRlcm4xJDAiLCJwYXR0ZXJuX2xpc3RfaGVscGVyIiwicGF0MiIsInBhdDEiLCJzaW1wbGVfcGF0dGVybiIsInNpbXBsZV9wYXR0ZXJuJDAiLCJwbyIsInZsIiwiYzIiLCJjMSIsImxvbmdpZGVudF94X3BhdHRlcm4iLCJwJDAiLCJwJDEiLCJwJDIiLCJ3aXRoX3BhcmVuIiwibGFiZWxfZXhwIiwicmVzdCIsInR4dCQwIiwibyQwIiwic3VnYXJfZXhwciIsImFyZ3MiLCJpZCIsImxhYiIsInByaW50X2luZGV4b3AiLCJwYXRoX3ByZWZpeCIsImFzc2lnbiIsImxlZnQiLCJwcmludF9pbmRleCIsImluZGljZXMiLCJyZW1fYXJncyIsInByaW50X3BhdGgiLCJzaW1wbGVfZXhwciIsImUkMCIsInBhdGgiLCJmdW5jIiwib3RoZXJfYXJncyIsImEkMCIsImFzc2lnbiQwIiwicHJpbnQiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJpbmRleGVzIiwicmVzdCQzIiwiaTMiLCJpMiIsImkxIiwicmVzdCQ0IiwiaTIkMCIsImkxJDAiLCJyZXN0JDUiLCJpMSQxIiwibXVsdGlfaW5kaWNlcyIsIm4iLCJraW5kIiwicmlnaHQkMCIsImxlZnQkMCIsImwkNSIsImUkNyIsImFyZzEiLCJhcmcyIiwibGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIiwicyQxIiwicyQyIiwiZXhwcmVzc2lvbjIiLCJlbyQwIiwiZW8kMSIsImwkNiIsImUyJDEiLCJlMSQxIiwibGkkMSIsImUkOCIsInMkMyIsImwkNyIsInN0cmluZ194X2V4cHJlc3Npb24iLCJlJDkiLCJlJDEwIiwiZSQxMSIsImUkMTIiLCJjYXNlX2xpc3QiLCJlMCIsImUkMSIsImwkNCIsImUkMiIsImUkMyIsIm1lIiwibW9kdWxlX2V4cHIiLCJlJDQiLCJjZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImUkNSIsImUkNiIsImJvZHkiLCJhbmRzIiwibGV0JDAiLCJiaW5kaW5nX29wIiwiZW8iLCJlMiIsImV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSIsImUyJDAiLCJlMSQwIiwibHN0IiwiYmluZGluZ3MiLCJjcyIsImNsYXNzX3N0cnVjdHVyZSIsImV4cHJlc3Npb24yJDAiLCJzaW1wbGVfZXhwciQwIiwibG9uZ2lkZW50X3hfZXhwcmVzc2lvbiIsImUzIiwiZGYiLCJleHByZXNzaW9uIiwiY3RvMSIsInBheWxvYWQiLCJpdGVtX2F0dHJpYnV0ZXMiLCJmbG9hdGluZ19hdHRyaWJ1dGUiLCJ2YWx1ZV9kZXNjcmlwdGlvbiIsIml0ZW1fZXh0ZW5zaW9uIiwiZXhjZXB0aW9uX2RlY2xhcmF0aW9uIiwiY2xhc3NfdHlwZV9maWVsZCIsImNsYXNzX3R5cGUiLCJ2ZiIsIm1mIiwidmYkMCIsInBmIiwiY2xhc3Nfc2lnbmF0dXJlIiwiY2wiLCJjbyIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCIsImNsYXNzX3R5cGVfZGVjbGFyYXRpb24iLCJrd2QiLCJjbGFzc19maWVsZCIsInNvIiwiY2UiLCJvdmYiLCJjbGFzc19leHByIiwib3ZmJDAiLCJvdmYkMSIsImJpbmQiLCJiaW5kaW5nIiwiY2UkMCIsImNlJDEiLCJtb2R1bGVfdHlwZSQxIiwibW9kdWxlX3R5cGUiLCJtdDIkMCIsIm10MiIsIm10MSIsIm1vZHVsZV90eXBlMSIsIm10IiwidGQiLCJscyQwIiwidHlwZV9kZWNsYXJhdGlvbiIsImxpMiIsIm10eSIsIm10eSQwIiwibGkkMiIsInRkJDAiLCJscyQxIiwibGkkMyIsImxzJDIiLCJsaTIkMCIsImxpJDQiLCJtb2R1bGVfdHlwZTEkMCIsInNpZ25hdHVyZV9pdGVtIiwic2lnbmF0dXJlIiwidmQiLCJpbnRybyIsInR5cGVfZGVmX2xpc3QiLCJ0ZSIsInR5cGVfZXh0ZW5zaW9uIiwiZWQiLCJwbWQiLCJhbGlhcyIsInBtcyIsImRlY2xzIiwib3B0JDAiLCJ0bCIsInBtZCQwIiwiYXR0cnMiLCJtZCIsImF0dHJzJDAiLCJtZCQwIiwib2QiLCJpbmNsIiwiY2xhc3NfZGVzY3JpcHRpb24iLCJzdHJ1Y3R1cmVfaXRlbSIsIm1lJDAiLCJtZTIiLCJtZTEiLCJtdCQwIiwibWUkMSIsInN0cnVjdHVyZSIsInBwX3ByaW50X3BleHBfZnVuY3Rpb24iLCJ0eXZhcnNfc3RyIiwidHl2YXJzIiwicGF0JDAiLCJ0eXAiLCJwYXQiLCJydCIsImFyZ3NfdHl2YXJzIiwiZ2FkdF9wYXR0ZXJuIiwidHl2YXJzJDAiLCJnYWR0X2V4cCIsImVfY3QiLCJ2YXJfbmFtZXMkMCIsInB0X2N0IiwicHRfdHl2YXJzIiwiY2hlY2tfdmFyaWFibGUiLCJ2YXJfbmFtZXMiLCJsb29wIiwiZGVzYyIsImNvcmVfdHlwZSQwIiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsInN0cmluZyIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJhcmciLCJmaWVsZCIsInByZl9kZXNjIiwicG9mX2Rlc2MiLCJ0JDAiLCJldHkiLCJ0eXZhcnMkMSIsInR5IiwiYmluZGluZyQwIiwibWF0Y2giLCJwdmFyIiwiZXZhciIsInJmJDAiLCJmJDAiLCJhcmdfb3B0IiwibWUkMiIsInBtYiIsImV4cHIiLCJsMiQwIiwibDIiLCJjbGFzc19jb25zdHJhaW50IiwiY2xhc3NfZGVjbGFyYXRpb24iLCJjbCQzIiwiY2wkMCIsImNsJDIiLCJjbCQxIiwiY29uc3RyIiwiZXhwb3J0ZWQiLCJ0eXBlX2RlY2wiLCJlcSIsInJlY29yZF9kZWNsYXJhdGlvbiIsImxibHMiLCJ0eXBlX3JlY29yZF9maWVsZCIsInBsZCIsInByaXYiLCJtYW5pZmVzdCIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uJDAiLCJwY2QiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiIsInJlcHIiLCJ2YXJpYW50cyIsImNvbnN0cmFpbnRzIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yJDAiLCJyZXMiLCJ2YXJzIiwibmFtZSQwIiwicHBfdmFycyIsInZzIiwiciIsInBjX3JocyIsInBjX2d1YXJkIiwicGNfbGhzIiwic2ltcGxlX25hbWUiLCJsYmwiLCJkaXJlY3RpdmVfYXJndW1lbnQiLCJ0b3BsZXZlbF9waHJhc2UiLCJwZGlyX25hbWUiLCJwZGlyX2FyZyIsInN0cmluZ19vZl9leHByZXNzaW9uIiwic3RyaW5nX29mX3N0cnVjdHVyZSIsInRvcF9waHJhc2UiLCJwYXR0ZXJuJDAiLCJzaWduYXR1cmUkMCIsInN0cnVjdHVyZSQwIiwiY2xhc3NfZXhwciQwIiwiY2xhc3NfZmllbGQkMCIsImNsYXNzX3R5cGUkMCIsImNsYXNzX3NpZ25hdHVyZSQwIiwiY2xhc3NfdHlwZV9maWVsZCQwIiwibW9kdWxlX2V4cHIkMCIsIm1vZHVsZV90eXBlJDAiLCJzaWduYXR1cmVfaXRlbSQwIiwic3RydWN0dXJlX2l0ZW0kMCIsInR5cGVfZGVjbGFyYXRpb24kMCIsImNvcHlfdG9wbGV2ZWxfcGhyYXNlIiwieDAiLCJjb3B5X3N0cnVjdHVyZSIsIngwJDAiLCJjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSIsInBkaXJfbG9jIiwiY29weV9sb2NhdGlvbiIsImNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IiwiY29weV9sb2MiLCJwZGlyYV9sb2MiLCJwZGlyYV9kZXNjIiwiY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyIsIngxIiwieDAkMSIsImNvcHlfTG9uZ2lkZW50X3QiLCJ4MCQyIiwiY29weV9leHByZXNzaW9uIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsImNvcHlfYXR0cmlidXRlcyIsImNvcHlfbG9jYXRpb25fc3RhY2siLCJjb3B5X2V4cHJlc3Npb25fZGVzYyIsImNvcHlfY29uc3RhbnQiLCJ4MiIsImNvcHlfdmFsdWVfYmluZGluZyIsImNvcHlfcmVjX2ZsYWciLCJjb3B5X2Nhc2UiLCJ4MyIsIngyJDAiLCJ4MSQwIiwieDAkMyIsImNvcHlfcGF0dGVybiIsImNvcHlfYXJnX2xhYmVsIiwieDEkMSIsIngwJDQiLCJ4MSQyIiwieDAkNSIsIngxJDMiLCJ4MCQ2IiwieDAkNyIsIngxJDQiLCJ4MCQ4IiwieDEkNSIsIngwJDkiLCJ4MSQ2IiwieDAkMTAiLCJ4MSQ3IiwieDAkMTEiLCJ4MiQxIiwieDEkOCIsIngwJDEyIiwieDAkMTMiLCJ4MiQyIiwieDEkOSIsIngwJDE0IiwieDEkMTAiLCJ4MCQxNSIsIngxJDExIiwieDAkMTYiLCJ4NCIsIngzJDAiLCJ4MiQzIiwieDEkMTIiLCJ4MCQxNyIsImNvcHlfZGlyZWN0aW9uX2ZsYWciLCJ4MSQxMyIsIngwJDE4IiwiY29weV9jb3JlX3R5cGUiLCJ4MiQ0IiwieDEkMTQiLCJ4MCQxOSIsIngxJDE1IiwieDAkMjAiLCJjb3B5X2xhYmVsIiwieDAkMjEiLCJ4MSQxNiIsIngwJDIyIiwieDAkMjMiLCJ4MiQ1IiwieDEkMTciLCJ4MCQyNCIsImNvcHlfbW9kdWxlX2V4cHIiLCJ4MSQxOCIsIngwJDI1IiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJ4MCQyNiIsIngwJDI3IiwieDEkMTkiLCJ4MCQyOCIsIngwJDI5IiwiY29weV9jbGFzc19zdHJ1Y3R1cmUiLCJ4MSQyMCIsIngwJDMwIiwieDAkMzEiLCJ4MSQyMSIsIngwJDMyIiwiY29weV9vcGVuX2RlY2xhcmF0aW9uIiwieDAkMzMiLCJjb3B5X2xldG9wIiwieDAkMzQiLCJjb3B5X2V4dGVuc2lvbiIsImNvcHlfYmluZGluZ19vcCIsInBib3BfbG9jIiwicGJvcF9leHAiLCJwYm9wX3BhdCIsInBib3Bfb3AiLCJwdmJfbG9jIiwicHZiX2F0dHJpYnV0ZXMiLCJwdmJfY29uc3RyYWludCIsInB2Yl9leHByIiwicHZiX3BhdCIsIm1lcmdlX2xvYyIsImdob3N0X2xvYyIsImdob3N0X2NvbnN0cmFpbnQiLCJwcGF0X2xvYyIsInB2Yl9wYXQkMCIsInB2Yl9leHByJDAiLCJjb25zdHJhaW5fcGF0IiwidHlwJDAiLCJjb2VyY2lvbiIsImdyb3VuZCIsImNvZXJjaW9uJDAiLCJwdHlwX2xvYyQwIiwidHlwJDMiLCJwdmJfcGF0JDMiLCJncm91bmQkMCIsInBleHBfbG9jJDAiLCJwdmJfZXhwciQzIiwicHZiX2V4cHIkMSIsInB2Yl9wYXQkMSIsImxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyIsInR5cCQyIiwidHlwJDEiLCJwdHlwX2xvYyIsInR5cF9wb2x5IiwicHZiX3BhdCQyIiwidmFyJDAiLCJwdmJfZXhwciQyIiwicHBhdF9hdHRyaWJ1dGVzIiwicHBhdF9sb2Nfc3RhY2siLCJwcGF0X2Rlc2MiLCJjb3B5X3BhdHRlcm5fZGVzYyIsImNvcHlfY2xvc2VkX2ZsYWciLCJwdHlwX2F0dHJpYnV0ZXMiLCJwdHlwX2xvY19zdGFjayIsInB0eXBfZGVzYyIsImNvcHlfY29yZV90eXBlX2Rlc2MiLCJjb3B5X29iamVjdF9maWVsZCIsImNvcHlfcm93X2ZpZWxkIiwiY29weV9wYWNrYWdlX3R5cGUiLCJwcmZfYXR0cmlidXRlcyIsInByZl9sb2MiLCJjb3B5X3Jvd19maWVsZF9kZXNjIiwicG9mX2F0dHJpYnV0ZXMiLCJwb2ZfbG9jIiwiY29weV9vYmplY3RfZmllbGRfZGVzYyIsImNvcHlfYXR0cmlidXRlIiwiYXR0cl9sb2MiLCJhdHRyX3BheWxvYWQiLCJhdHRyX25hbWUiLCJjb3B5X3BheWxvYWQiLCJjb3B5X3NpZ25hdHVyZSIsImNvcHlfc3RydWN0dXJlX2l0ZW0iLCJwc3RyX2xvYyIsInBzdHJfZGVzYyIsImNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyIsImNvcHlfdmFsdWVfZGVzY3JpcHRpb24iLCJjb3B5X3R5cGVfZGVjbGFyYXRpb24iLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2V4Y2VwdGlvbiIsImNvcHlfbW9kdWxlX2JpbmRpbmciLCJjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jbGFzc19kZWNsYXJhdGlvbiIsImNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiIsImNvcHlfaW5jbHVkZV9pbmZvcyIsImNvcHlfY2xhc3NfaW5mb3MiLCJjb3B5X2NsYXNzX2V4cHIiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsImNvcHlfY2xhc3NfZXhwcl9kZXNjIiwiY29weV9jbGFzc190eXBlIiwiY29weV9vcGVuX2Rlc2NyaXB0aW9uIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImNvcHlfY2xhc3NfZmllbGQiLCJwY2ZfYXR0cmlidXRlcyIsInBjZl9sb2MiLCJwY2ZfZGVzYyIsImNvcHlfY2xhc3NfZmllbGRfZGVzYyIsImNvcHlfb3ZlcnJpZGVfZmxhZyIsImNvcHlfY2xhc3NfZmllbGRfa2luZCIsImNvcHlfbXV0YWJsZV9mbGFnIiwiY29weV9wcml2YXRlX2ZsYWciLCJjb3B5X29wZW5faW5mb3MiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1vZF9hdHRyaWJ1dGVzIiwicG1vZF9sb2MiLCJwbW9kX2Rlc2MiLCJjb3B5X21vZHVsZV9leHByX2Rlc2MiLCJjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIiwibG9jJDAiLCJlbXB0eV9zdHJ1Y3QiLCJjb3B5X21vZHVsZV90eXBlIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJjb3B5X21vZHVsZV90eXBlX2Rlc2MiLCJjb3B5X3dpdGhfY29uc3RyYWludCIsImNvcHlfc2lnbmF0dXJlX2l0ZW0iLCJwc2lnX2xvYyIsInBzaWdfZGVzYyIsImNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyIsImNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIiwiY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIiwiY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIiwiY29weV9jbGFzc19kZXNjcmlwdGlvbiIsInBjdHlfYXR0cmlidXRlcyIsInBjdHlfbG9jIiwicGN0eV9kZXNjIiwiY29weV9jbGFzc190eXBlX2Rlc2MiLCJjb3B5X2NsYXNzX3NpZ25hdHVyZSIsInBjc2lnX2ZpZWxkcyIsInBjc2lnX3NlbGYiLCJjb3B5X2NsYXNzX3R5cGVfZmllbGQiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsImNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIiwiY29weV92aXJ0dWFsX2ZsYWciLCJmMCIsInBjaV9hdHRyaWJ1dGVzIiwicGNpX2xvYyIsInBjaV9leHByIiwicGNpX25hbWUiLCJwY2lfcGFyYW1zIiwicGNpX3ZpcnQiLCJjb3B5X2luamVjdGl2aXR5IiwiY29weV92YXJpYW5jZSIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwb3Blbl9hdHRyaWJ1dGVzIiwicG9wZW5fbG9jIiwicG9wZW5fb3ZlcnJpZGUiLCJwb3Blbl9leHByIiwicG10ZF9sb2MiLCJwbXRkX2F0dHJpYnV0ZXMiLCJwbXRkX3R5cGUiLCJwbXRkX25hbWUiLCJwbXNfbG9jIiwicG1zX2F0dHJpYnV0ZXMiLCJwbXNfbWFuaWZlc3QiLCJwbXNfbmFtZSIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwdHlleG5fYXR0cmlidXRlcyIsInB0eWV4bl9sb2MiLCJwdHlleG5fY29uc3RydWN0b3IiLCJwdHlleHRfYXR0cmlidXRlcyIsInB0eWV4dF9sb2MiLCJwdHlleHRfcHJpdmF0ZSIsInB0eWV4dF9jb25zdHJ1Y3RvcnMiLCJwdHlleHRfcGFyYW1zIiwicHR5ZXh0X3BhdGgiLCJwZXh0X2F0dHJpYnV0ZXMiLCJwZXh0X2xvYyIsInBleHRfa2luZCIsInBleHRfbmFtZSIsImNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbiIsImNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIiwicHR5cGVfbG9jIiwicHR5cGVfYXR0cmlidXRlcyIsInB0eXBlX21hbmlmZXN0IiwicHR5cGVfcHJpdmF0ZSIsInB0eXBlX2tpbmQiLCJwdHlwZV9jc3RycyIsInB0eXBlX3BhcmFtcyIsInB0eXBlX25hbWUiLCJjb3B5X3R5cGVfa2luZCIsImNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24iLCJjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIiwicGNkX2F0dHJpYnV0ZXMiLCJwY2RfbG9jIiwicGNkX3JlcyIsInBjZF9hcmdzIiwicGNkX3ZhcnMiLCJwY2RfbmFtZSIsInBsZF9hdHRyaWJ1dGVzIiwicGxkX2xvYyIsInBsZF90eXBlIiwicGxkX211dGFibGUiLCJwbGRfbmFtZSIsInB2YWxfbG9jIiwicHZhbF9hdHRyaWJ1dGVzIiwicHZhbF9wcmltIiwicHZhbF90eXBlIiwicHZhbF9uYW1lIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImNvcHlfcG9zaXRpb24iLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmciLCJ0eV9leHQiLCJydCQwIiwidmFsdWVfcGF0dGVybiIsInZhbHVlX2V4cCIsImlubmVyX2UiLCJleHRlcm5fY3QiLCJleHRlcm5fY3QkMCIsInB0X3R5dmFycyQwIiwid2l0aF9jb25zdHJhaW50IiwidHlfdmFycyIsInB2Yl9jb25zdHJhaW50JDAiLCJleHByJDAiLCJjb2VyY2UiLCJnciIsImV4cHIkMSIsInB2Yl9jb25zdHJhaW50JDEiLCJoZCIsInEiLCJpc191bml0IiwibWlncmF0aW9uX2Vycm9yIiwibWlzc2luZ19mZWF0dXJlIiwiY29weV9leHByIiwiY29weV9jYXNlcyIsImNvcHlfcGF0IiwiY29weV90eXAiLCJtYXBfb3B0aW9uIiwiY29weV9vcHRpb24iLCJjb3B5X2Jvb2wiLCJjb3B5X2xvbmdpZGVudCIsIngwX2xvYyIsIndyYXAiLCJ4MiQ2IiwiYXQiLCJhdGF0IiwicG9wZW5fbGlkIiwiZmllbGRzIiwiY3R5IiwibG9jJDEiLCJub2xvYyIsImZyb21fbG9jIiwicG9zIiwiaW5qZWN0X3ByZWRlZl9vcHRpb24iLCJkIiwiaWRlbnQiLCJ0eXBlX2RlY2xhcmF0aW9ucyIsInJlY2ZsYWciLCJ0eXBlcyIsImV4dHJhY3RfcHJlZGVmX29wdGlvbiIsImlzX25vbnJlYyIsImF0dHIiLCJ0eXBlcyQwIiwiaXNfa2V5d29yZCIsImluaXRfZXJyb3JfcmVwb3J0aW5nX3N0eWxlX3VzaSIsInRvX3N0cmluZyIsIm1hcCIsImYiLCJvIiwidiIsImRlZmF1bHRfbG9jIiwic2V0X3JlZiIsInIiLCJ3aXRoX2RlZmF1bHRfbG9jIiwibCIsInJlZiIsImJhY2t1cCIsIngiLCJlJDAiLCJlIiwiaW50ZWdlciIsInN1ZmZpeCIsImkiLCJpbnQkMCIsImludDMyIiwib3B0Iiwic3RoIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiY2hhciQwIiwiYyIsInN0cmluZyIsInF1b3RhdGlvbl9kZWxpbWl0ZXIiLCJzIiwibG9jIiwibWsiLCJuYW1lIiwicGF5bG9hZCIsIm1rJDAiLCJkIiwic3RoJDAiLCJhdHRycyIsImF0dHIiLCJhIiwiYW55IiwidmFyJDAiLCJhcnJvdyIsImIiLCJ0dXBsZSIsImNvbnN0ciIsIm9iamVjdCIsImNsYXNzJDAiLCJhbGlhcyIsInZhcmlhbnQiLCJwb2x5IiwicGFja2FnZSQwIiwiZXh0ZW5zaW9uIiwiZm9yY2VfcG9seSIsInQiLCJ2YXJpZnlfY29uc3RydWN0b3JzIiwidmFyX25hbWVzIiwiY2hlY2tfdmFyaWFibGUiLCJ2bCIsInZhcl9uYW1lcyQwIiwibG9vcCIsImRlc2MiLCJjb3JlX3R5cGUiLCJjb3JlX3R5cGUkMCIsImxhYmVsIiwibHN0IiwibG9uZ2lkZW50IiwibHN0JDAiLCJsc3QkMSIsImxvb3Bfb2JqZWN0X2ZpZWxkIiwibHN0JDIiLCJsb25naWRlbnQkMCIsImNvcmVfdHlwZSQxIiwibGJsX2xzdF9vcHRpb24iLCJmbGFnIiwicm93X2ZpZWxkX2xpc3QiLCJsb29wX3Jvd19maWVsZCIsImNvcmVfdHlwZSQyIiwic3RyaW5nX2xzdCIsImxzdCQzIiwibG9uZ2lkZW50JDEiLCJ0eXAiLCJuIiwiYXJnIiwicyQwIiwiZmllbGQiLCJwcmZfZGVzYyIsInBvZl9kZXNjIiwidCQwIiwibWskMSIsImF0dHIkMCIsImFueSQwIiwidmFyJDEiLCJhbGlhcyQwIiwiY29uc3RhbnQiLCJpbnRlcnZhbCIsInR1cGxlJDAiLCJjb25zdHJ1Y3QiLCJ2YXJpYW50JDAiLCJyZWNvcmQiLCJhcnJheSIsIm9yIiwiY29uc3RyYWludCIsInR5cGUiLCJsYXp5IiwidW5wYWNrIiwib3BlbiIsImV4Y2VwdGlvbiIsImV4dGVuc2lvbiQwIiwibWskMiIsImF0dHIkMSIsImlkZW50IiwiY29uc3RhbnQkMCIsImxldCQwIiwiZnVuIiwiZnVuY3Rpb24kMCIsImFwcGx5IiwibWF0Y2giLCJ0cnkkMCIsInR1cGxlJDEiLCJjb25zdHJ1Y3QkMCIsInZhcmlhbnQkMSIsInJlY29yZCQwIiwic2V0ZmllbGQiLCJhcnJheSQwIiwiaWZ0aGVuZWxzZSIsInNlcXVlbmNlIiwid2hpbGUkMCIsImZvciQwIiwiY29uc3RyYWludCQwIiwiY29lcmNlIiwic2VuZCIsIm5ldyQwIiwic2V0aW5zdHZhciIsIm92ZXJyaWRlIiwibGV0bW9kdWxlIiwibGV0ZXhjZXB0aW9uIiwiYXNzZXJ0IiwibGF6eSQwIiwicG9seSQwIiwib2JqZWN0JDAiLCJuZXd0eXBlIiwicGFjayIsIm9wZW4kMCIsImxldG9wIiwiYW5kcyIsImJvZHkiLCJleHRlbnNpb24kMSIsInVucmVhY2hhYmxlIiwiY2FzZSQwIiwibGhzIiwiZ3VhcmQiLCJyaHMiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJtayQzIiwiYXR0ciQyIiwiaWRlbnQkMCIsImFsaWFzJDEiLCJzaWduYXR1cmUiLCJmdW5jdG9yIiwid2l0aCQwIiwidHlwZW9mJDAiLCJleHRlbnNpb24kMiIsIm1rJDQiLCJhdHRyJDMiLCJpZGVudCQxIiwic3RydWN0dXJlIiwiZnVuY3RvciQwIiwiYXBwbHkkMCIsIm0xIiwibTIiLCJjb25zdHJhaW50JDEiLCJtIiwibXR5IiwidW5wYWNrJDAiLCJleHRlbnNpb24kMyIsIm1rJDUiLCJ2YWx1ZSIsInR5cGUkMCIsInJlY19mbGFnIiwidHlwZV9zdWJzdCIsInR5cGVfZXh0ZW5zaW9uIiwiZXhjZXB0aW9uJDAiLCJtb2R1bGUiLCJtb2Rfc3Vic3QiLCJyZWNfbW9kdWxlIiwibW9kdHlwZSIsIm9wZW4kMSIsImluY2x1ZGUiLCJjbGFzcyQxIiwiY2xhc3NfdHlwZSIsImV4dGVuc2lvbiQ0IiwiYXR0cmlidXRlIiwibWskNiIsImV2YWwkMCIsInZhbHVlJDAiLCJwcmltaXRpdmUiLCJ0eXBlJDEiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiZXhjZXB0aW9uJDEiLCJtb2R1bGUkMCIsInJlY19tb2R1bGUkMCIsIm1vZHR5cGUkMCIsIm9wZW4kMiIsImNsYXNzJDIiLCJjbGFzc190eXBlJDAiLCJpbmNsdWRlJDAiLCJleHRlbnNpb24kNSIsImF0dHJpYnV0ZSQwIiwibWskNyIsImF0dHIkNCIsImNvbnN0ciQwIiwic3RydWN0dXJlJDAiLCJmdW4kMCIsImFwcGx5JDEiLCJsZXQkMSIsImNvbnN0cmFpbnQkMiIsImV4dGVuc2lvbiQ2Iiwib3BlbiQzIiwibWskOCIsImF0dHIkNSIsImNvbnN0ciQxIiwic2lnbmF0dXJlJDAiLCJhcnJvdyQwIiwiZXh0ZW5zaW9uJDciLCJvcGVuJDQiLCJtayQ5IiwiaW5oZXJpdCIsInZhbCIsIm1ldGhvZCIsImNvbnN0cmFpbnQkMyIsImV4dGVuc2lvbiQ4IiwiYXR0cmlidXRlJDEiLCJhdHRyJDYiLCJtayQxMCIsImluaGVyaXQkMCIsInZhbCQwIiwibWV0aG9kJDAiLCJjb25zdHJhaW50JDQiLCJpbml0aWFsaXplciIsImV4dGVuc2lvbiQ5IiwiYXR0cmlidXRlJDIiLCJ2aXJ0dWFsIiwiY3QiLCJjb25jcmV0ZSIsImF0dHIkNyIsIm1rJDExIiwic3RoJDEiLCJwcmltIiwibWskMTIiLCJtayQxMyIsInN5biIsIm1rJDE0IiwibWskMTUiLCJleHByIiwibWskMTYiLCJtayQxNyIsIm1leHByIiwibWskMTgiLCJtayQxOSIsInZpcnQiLCJzdGgkMiIsInBhcmFtcyIsIm1rJDIwIiwibWFuaWZlc3QiLCJjc3RycyIsInN0aCQzIiwia2luZCIsInN0aCQ0IiwicHJpdiIsImNvbnN0cnVjdG9yIiwicmVzIiwidmFycyIsImFyZ3MiLCJmaWVsZCQwIiwibXV0IiwibWskMjEiLCJwYXRoIiwiY29uc3RydWN0b3JzIiwibWtfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IkMCIsImRlY2wiLCJyZWJpbmQiLCJsaWQiLCJtayQyMiIsInNlbGYiLCJmaWVsZHMiLCJtayQyMyIsIm1rJDI0IiwidGFnIiwiY29uc3QkMCIsInR5cyIsImluaGVyaXQkMSIsInR5IiwibWskMjUiLCJ0YWckMCIsImluaGVyaXQkMiIsInN0cmluZ192ZXJzaW9uIiwic3RyaW5nX3ZlcnNpb24kMCIsInN0cmluZ192ZXJzaW9uJDEiLCJzdHJpbmdfdmVyc2lvbiQyIiwic3RyaW5nX3ZlcnNpb24kMyIsInN0cmluZ192ZXJzaW9uJDQiLCJzdHJpbmdfdmVyc2lvbiQ1Iiwic3RyaW5nX3ZlcnNpb24kNiIsInN0cmluZ192ZXJzaW9uJDciLCJzdHJpbmdfdmVyc2lvbiQ4Iiwic3RyaW5nX3ZlcnNpb24kOSIsInN0cmluZ192ZXJzaW9uJDEwIiwic3RyaW5nX3ZlcnNpb24kMTEiLCJzdHJpbmdfdmVyc2lvbiQxMiIsInN0cmluZ192ZXJzaW9uJDEzIiwibWlncmF0aW9uX2luZm8iLCJpZCIsIm1pZ3JhdGlvbl9pZGVudGl0eSIsImNvbXBvc2UiLCJnIiwibWlncmF0aW9uX2Z1bmN0aW9ucyIsImlzX3VuZGVmaW5lZCIsImltbWVkaWF0ZV9taWdyYXRpb24iLCJBIiwiZGlyZWN0aW9uIiwidmVyc2lvbiIsInRvIiwiZnVucyIsIkIiLCJtJDEiLCJUbyIsImFiIiwidG8yIiwiYmMiLCJtJDAiLCJjb3B5X3N0cnVjdHVyZV9pdGVtIiwiY29weV9zaWduYXR1cmVfaXRlbSIsImNvcHlfbW9kdWxlX3R5cGUiLCJjb3B5X21vZHVsZV9leHByIiwiY29weV9jbGFzc190eXBlX2ZpZWxkIiwiY29weV9jbGFzc19zaWduYXR1cmUiLCJjb3B5X2NsYXNzX3R5cGUiLCJjb3B5X2NsYXNzX2ZpZWxkIiwiY29weV9jbGFzc19leHByIiwiY29weV9leHRlbnNpb25fY29uc3RydWN0b3IiLCJjb3B5X3R5cGVfZXh0ZW5zaW9uIiwiY29weV90eXBlX2RlY2xhcmF0aW9uIiwiY29weV9jYXNlIiwiY29weV9wYXR0ZXJuIiwiY29weV9leHByZXNzaW9uIiwiY29weV9jb3JlX3R5cGUiLCJjb3B5X3RvcGxldmVsX3BocmFzZSIsImNvcHlfc2lnbmF0dXJlIiwiY29weV9zdHJ1Y3R1cmUiLCJtaWdyYXRpb25faW5mbyQwIiwibWlncmF0aW9uX2luZm8kMSIsIm1pZ3JhdGlvbl9pbmZvJDIiLCJtaWdyYXRpb25faW5mbyQzIiwibWlncmF0aW9uX2luZm8kNCIsIm1pZ3JhdGlvbl9pbmZvJDUiLCJtaWdyYXRpb25faW5mbyQ2IiwibWlncmF0aW9uX2luZm8kNyIsIm1pZ3JhdGlvbl9pbmZvJDgiLCJtaWdyYXRpb25faW5mbyQ5IiwibWlncmF0aW9uX2luZm8kMTAiLCJtaWdyYXRpb25faW5mbyQxMSIsIm1pZ3JhdGlvbl9pbmZvJDEyIiwibWlncmF0aW9uX2luZm8kMTMiLCJhbGxfdmVyc2lvbnMiLCJ2ZXJzaW9uJDAiLCJ2ZXJzaW9uJDEiLCJ2ZXJzaW9uJDIiLCJ2ZXJzaW9uJDMiLCJ2ZXJzaW9uJDQiLCJ2ZXJzaW9uJDUiLCJ2ZXJzaW9uJDYiLCJ2ZXJzaW9uJDciLCJ2ZXJzaW9uJDgiLCJ2ZXJzaW9uJDkiLCJ2ZXJzaW9uJDEwIiwidmVyc2lvbiQxMSIsInZlcnNpb24kMTIiLCJ2ZXJzaW9uJDEzIiwiZnJvbV9tYWdpYyIsIm1hZ2ljIiwiYWxsX3ZlcnNpb25zX3RvcF9kb3duIiwidGFpbCIsIlZlcnNpb24iLCJvZl9vY2FtbCIsIm5vZGUiLCJ5IiwidG9fb2NhbWwiLCJvZl9vY2FtbF9tYXBwZXIiLCJpdGVtIiwiY3R4dCIsInRvX29jYW1sX21hcHBlciIsImltcGxlbWVudGF0aW9uIiwibGV4YnVmIiwiaW50ZXJmYWNlJDAiLCJ0b3BsZXZlbF9waHJhc2UiLCJ1c2VfZmlsZSIsImV4cHJlc3Npb24iLCJwYXR0ZXJuIiwiZGVmYXVsdF9wcmludF93YXJuaW5nIiwiYWJvdXRfaXRlX2JyYW5jaF9yZWYiLCJjYXJlX2Fib3V0X2l0ZV9icmFuY2giLCJhYm91dF9pdGVfYnJhbmNoIiwic2VsZl8xIiwiYSQwIiwiYSQxIiwiYSQyIiwiYiQwIiwiYSQzIiwiYSQ0IiwiYSQ1IiwiYSQ2IiwicGRpcmFfbG9jIiwicGRpcmFfZGVzYyIsInBkaXJhX2Rlc2MkMCIsInBkaXJhX2xvYyQwIiwicGRpcl9sb2MiLCJwZGlyX2FyZyIsInBkaXJfbmFtZSIsInBkaXJfbmFtZSQwIiwicGRpcl9hcmckMCIsInBkaXJfbG9jJDAiLCJwbWJfbG9jIiwicG1iX2F0dHJpYnV0ZXMiLCJwbWJfZXhwciIsInBtYl9uYW1lIiwicG1iX25hbWUkMCIsInBtYl9leHByJDAiLCJwbWJfYXR0cmlidXRlcyQwIiwicG1iX2xvYyQwIiwicHZiX2xvYyIsInB2Yl9hdHRyaWJ1dGVzIiwicHZiX2V4cHIiLCJwdmJfcGF0IiwicHZiX3BhdCQwIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJwdmJfbG9jJDAiLCJiJDEiLCJiJDIiLCJiJDMiLCJiJDQiLCJhJDciLCJhJDgiLCJhJDkiLCJhJDEwIiwiYSQxMSIsImEkMTIiLCJhJDEzIiwiYSQxNCIsImEkMTUiLCJhJDE2IiwiYSQxNyIsImEkMTgiLCJhJDE5IiwiYSQyMCIsImEkMjEiLCJhJDIyIiwiYSQyMyIsImEkMjQiLCJhJDI1IiwiYSQyNiIsImIkNSIsImEkMjciLCJhJDI4IiwiYiQ2IiwicHN0cl9sb2MiLCJwc3RyX2Rlc2MiLCJwc3RyX2Rlc2MkMCIsInBzdHJfbG9jJDAiLCJwbW9kX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfZGVzYyIsInBtb2RfZGVzYyQwIiwicG1vZF9sb2MkMCIsInBtb2RfYXR0cmlidXRlcyQwIiwiYiQ3IiwiYiQ4IiwiYiQ5IiwiYiQxMCIsInBpbmNsX2F0dHJpYnV0ZXMiLCJwaW5jbF9sb2MiLCJwaW5jbF9tb2QiLCJwaW5jbF9tb2QkMCIsInBpbmNsX2xvYyQwIiwicGluY2xfYXR0cmlidXRlcyQwIiwicG9wZW5fYXR0cmlidXRlcyIsInBvcGVuX2xvYyIsInBvcGVuX292ZXJyaWRlIiwicG9wZW5fZXhwciIsInBvcGVuX2V4cHIkMCIsInBvcGVuX292ZXJyaWRlJDAiLCJwb3Blbl9sb2MkMCIsInBvcGVuX2F0dHJpYnV0ZXMkMCIsInBtdGRfbG9jIiwicG10ZF9hdHRyaWJ1dGVzIiwicG10ZF90eXBlIiwicG10ZF9uYW1lIiwicG10ZF9uYW1lJDAiLCJwbXRkX3R5cGUkMCIsInBtdGRfYXR0cmlidXRlcyQwIiwicG10ZF9sb2MkMCIsInBtc19sb2MiLCJwbXNfYXR0cmlidXRlcyIsInBtc19tYW5pZmVzdCIsInBtc19uYW1lIiwicG1zX25hbWUkMCIsInBtc19tYW5pZmVzdCQwIiwicG1zX2F0dHJpYnV0ZXMkMCIsInBtc19sb2MkMCIsInBtZF9sb2MiLCJwbWRfYXR0cmlidXRlcyIsInBtZF90eXBlIiwicG1kX25hbWUiLCJwbWRfbmFtZSQwIiwicG1kX3R5cGUkMCIsInBtZF9hdHRyaWJ1dGVzJDAiLCJwbWRfbG9jJDAiLCJhJDI5IiwiYSQzMCIsInBzaWdfbG9jIiwicHNpZ19kZXNjIiwicHNpZ19kZXNjJDAiLCJwc2lnX2xvYyQwIiwicG10eV9hdHRyaWJ1dGVzIiwicG10eV9sb2MiLCJwbXR5X2Rlc2MiLCJwbXR5X2Rlc2MkMCIsInBtdHlfbG9jJDAiLCJwbXR5X2F0dHJpYnV0ZXMkMCIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsInBjZl9hdHRyaWJ1dGVzIiwicGNmX2xvYyIsInBjZl9kZXNjIiwicGNmX2Rlc2MkMCIsInBjZl9sb2MkMCIsInBjZl9hdHRyaWJ1dGVzJDAiLCJwY3N0cl9maWVsZHMiLCJwY3N0cl9zZWxmIiwicGNzdHJfc2VsZiQwIiwicGNzdHJfZmllbGRzJDAiLCJkJDAiLCJwY2xfYXR0cmlidXRlcyIsInBjbF9sb2MiLCJwY2xfZGVzYyIsInBjbF9kZXNjJDAiLCJwY2xfbG9jJDAiLCJwY2xfYXR0cmlidXRlcyQwIiwicGNpX2F0dHJpYnV0ZXMiLCJwY2lfbG9jIiwicGNpX2V4cHIiLCJwY2lfbmFtZSIsInBjaV9wYXJhbXMiLCJwY2lfdmlydCIsInBjaV92aXJ0JDAiLCJwY2lfcGFyYW1zJDAiLCJwY2lfbmFtZSQwIiwicGNpX2V4cHIkMCIsInBjaV9sb2MkMCIsInBjaV9hdHRyaWJ1dGVzJDAiLCJkJDEiLCJkJDIiLCJwY3RmX2F0dHJpYnV0ZXMiLCJwY3RmX2xvYyIsInBjdGZfZGVzYyIsInBjdGZfZGVzYyQwIiwicGN0Zl9sb2MkMCIsInBjdGZfYXR0cmlidXRlcyQwIiwicGNzaWdfZmllbGRzIiwicGNzaWdfc2VsZiIsInBjc2lnX3NlbGYkMCIsInBjc2lnX2ZpZWxkcyQwIiwicGN0eV9hdHRyaWJ1dGVzIiwicGN0eV9sb2MiLCJwY3R5X2Rlc2MiLCJwY3R5X2Rlc2MkMCIsInBjdHlfbG9jJDAiLCJwY3R5X2F0dHJpYnV0ZXMkMCIsInB0eWV4bl9hdHRyaWJ1dGVzIiwicHR5ZXhuX2xvYyIsInB0eWV4bl9jb25zdHJ1Y3RvciIsInB0eWV4bl9jb25zdHJ1Y3RvciQwIiwicHR5ZXhuX2xvYyQwIiwicHR5ZXhuX2F0dHJpYnV0ZXMkMCIsInBleHRfYXR0cmlidXRlcyIsInBleHRfbG9jIiwicGV4dF9raW5kIiwicGV4dF9uYW1lIiwicGV4dF9uYW1lJDAiLCJwZXh0X2tpbmQkMCIsInBleHRfbG9jJDAiLCJwZXh0X2F0dHJpYnV0ZXMkMCIsInB0eWV4dF9hdHRyaWJ1dGVzIiwicHR5ZXh0X2xvYyIsInB0eWV4dF9wcml2YXRlIiwicHR5ZXh0X2NvbnN0cnVjdG9ycyIsInB0eWV4dF9wYXJhbXMiLCJwdHlleHRfcGF0aCIsInB0eWV4dF9wYXRoJDAiLCJwdHlleHRfcGFyYW1zJDAiLCJwdHlleHRfY29uc3RydWN0b3JzJDAiLCJwdHlleHRfcHJpdmF0ZSQwIiwicHR5ZXh0X2xvYyQwIiwicHR5ZXh0X2F0dHJpYnV0ZXMkMCIsInBjZF9hdHRyaWJ1dGVzIiwicGNkX2xvYyIsInBjZF9yZXMiLCJwY2RfYXJncyIsInBjZF92YXJzIiwicGNkX25hbWUiLCJwY2RfbmFtZSQwIiwicGNkX3ZhcnMkMCIsInBjZF9hcmdzJDAiLCJwY2RfcmVzJDAiLCJwY2RfbG9jJDAiLCJwY2RfYXR0cmlidXRlcyQwIiwicGxkX2F0dHJpYnV0ZXMiLCJwbGRfbG9jIiwicGxkX3R5cGUiLCJwbGRfbXV0YWJsZSIsInBsZF9uYW1lIiwicGxkX25hbWUkMCIsInBsZF9tdXRhYmxlJDAiLCJwbGRfdHlwZSQwIiwicGxkX2xvYyQwIiwicGxkX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyIsInB0eXBlX2F0dHJpYnV0ZXMiLCJwdHlwZV9tYW5pZmVzdCIsInB0eXBlX3ByaXZhdGUiLCJwdHlwZV9raW5kIiwicHR5cGVfY3N0cnMiLCJwdHlwZV9wYXJhbXMiLCJwdHlwZV9uYW1lIiwicHR5cGVfbmFtZSQwIiwicHR5cGVfcGFyYW1zJDAiLCJwdHlwZV9jc3RycyQwIiwicHR5cGVfa2luZCQwIiwicHR5cGVfcHJpdmF0ZSQwIiwicHR5cGVfbWFuaWZlc3QkMCIsInB0eXBlX2F0dHJpYnV0ZXMkMCIsInB0eXBlX2xvYyQwIiwicHZhbF9sb2MiLCJwdmFsX2F0dHJpYnV0ZXMiLCJwdmFsX3ByaW0iLCJwdmFsX3R5cGUiLCJwdmFsX25hbWUiLCJwdmFsX25hbWUkMCIsInB2YWxfdHlwZSQwIiwicHZhbF9wcmltJDAiLCJwdmFsX2F0dHJpYnV0ZXMkMCIsInB2YWxfbG9jJDAiLCJwYm9wX2xvYyIsInBib3BfZXhwIiwicGJvcF9wYXQiLCJwYm9wX29wIiwicGJvcF9vcCQwIiwicGJvcF9wYXQkMCIsInBib3BfZXhwJDAiLCJwYm9wX2xvYyQwIiwiYW5kcyQwIiwiYm9keSQwIiwicGNfcmhzIiwicGNfZ3VhcmQiLCJwY19saHMiLCJwY19saHMkMCIsInBjX2d1YXJkJDAiLCJwY19yaHMkMCIsImIkMTEiLCJiJDEyIiwiYiQxMyIsImIkMTQiLCJiJDE1IiwiYiQxNiIsImIkMTciLCJiJDE4IiwiYyQ1IiwiYiQxOSIsImIkMjAiLCJjJDYiLCJiJDIxIiwiYSQzMSIsImEkMzIiLCJiJDIyIiwiYiQyMyIsImEkMzMiLCJhJDM0IiwiYiQyNCIsImMkNyIsImIkMjUiLCJhJDM1IiwiYSQzNiIsImIkMjYiLCJjJDgiLCJiJDI3IiwiYSQzNyIsImEkMzgiLCJiJDI4IiwiYyQ5IiwiYiQyOSIsImEkMzkiLCJhJDQwIiwiYiQzMCIsImMkMTAiLCJiJDMxIiwiYSQ0MSIsImEkNDIiLCJiJDMyIiwiYSQ0MyIsImEkNDQiLCJiJDMzIiwiYSQ0NSIsImEkNDYiLCJiJDM0IiwiYSQ0NyIsImEkNDgiLCJjJDExIiwiYiQzNSIsImEkNDkiLCJhJDUwIiwiYiQzNiIsImMkMTIiLCJiJDM3IiwiYSQ1MSIsImEkNTIiLCJiJDM4IiwiYSQ1MyIsImEkNTQiLCJhJDU1IiwiYSQ1NiIsImIkMzkiLCJhJDU3IiwiYSQ1OCIsImIkNDAiLCJhJDU5IiwiYSQ2MCIsImIkNDEiLCJhJDYxIiwiYSQ2MiIsImIkNDIiLCJhJDYzIiwiYSQ2NCIsImIkNDMiLCJhJDY1IiwiYSQ2NiIsImIkNDQiLCJhJDY3IiwiYSQ2OCIsImEkNjkiLCJhJDcwIiwicGV4cF9hdHRyaWJ1dGVzIiwicGV4cF9sb2Nfc3RhY2siLCJwZXhwX2xvYyIsInBleHBfZGVzYyIsInBleHBfZGVzYyQwIiwicGV4cF9sb2MkMCIsInBleHBfbG9jX3N0YWNrJDAiLCJwZXhwX2F0dHJpYnV0ZXMkMCIsInBwYXRfYXR0cmlidXRlcyIsInBwYXRfbG9jX3N0YWNrIiwicHBhdF9sb2MiLCJwcGF0X2Rlc2MiLCJwcGF0X2Rlc2MkMCIsInBwYXRfbG9jJDAiLCJwcGF0X2xvY19zdGFjayQwIiwicHBhdF9hdHRyaWJ1dGVzJDAiLCJwb2ZfYXR0cmlidXRlcyIsInBvZl9sb2MiLCJwb2ZfZGVzYyQwIiwicG9mX2xvYyQwIiwicG9mX2F0dHJpYnV0ZXMkMCIsInByZl9hdHRyaWJ1dGVzIiwicHJmX2xvYyIsInByZl9kZXNjJDAiLCJwcmZfbG9jJDAiLCJwcmZfYXR0cmlidXRlcyQwIiwicHR5cF9hdHRyaWJ1dGVzIiwicHR5cF9sb2Nfc3RhY2siLCJwdHlwX2xvYyIsInB0eXBfZGVzYyIsInB0eXBfZGVzYyQwIiwicHR5cF9sb2MkMCIsInB0eXBfbG9jX3N0YWNrJDAiLCJwdHlwX2F0dHJpYnV0ZXMkMCIsImF0dHJfbG9jIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwiYXR0cl9uYW1lJDAiLCJhdHRyX3BheWxvYWQkMCIsImF0dHJfbG9jJDAiLCJ0eHQiLCJ0eHQkMCIsImxvYyQwIiwibG9jX2dob3N0IiwibG9jX2VuZCIsImxvY19zdGFydCIsImxvY19zdGFydCQwIiwibG9jX2VuZCQwIiwibG9jX2dob3N0JDAiLCJwb3NfY251bSIsInBvc19ib2wiLCJwb3NfbG51bSIsInBvc19mbmFtZSIsInBvc19mbmFtZSQwIiwicG9zX2xudW0kMCIsInBvc19ib2wkMCIsInBvc19jbnVtJDAiLCJzZWxmXzIiLCJzZWxmXzMiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiYWNjJDUiLCJhY2MkNiIsImFjYyQ3IiwiYWNjJDgiLCJhY2MkOSIsImFjYyQxMCIsImFjYyQxMSIsImFjYyQxMiIsImFjYyQxMyIsImFjYyQxNCIsImFjYyQxNSIsImFjYyQxNiIsImFjYyQxNyIsImFjYyQxOCIsImFjYyQxOSIsImFjYyQyMCIsImFjYyQyMSIsImFjYyQyMiIsImFjYyQyMyIsImFjYyQyNCIsImFjYyQyNSIsImFjYyQyNiIsImFjYyQyNyIsImFjYyQyOCIsImFjYyQyOSIsImFjYyQzMCIsImFjYyQzMSIsImFjYyQzMiIsImFjYyQzMyIsImFjYyQzNCIsImFjYyQzNSIsImFjYyQzNiIsImFjYyQzNyIsImFjYyQzOCIsImFjYyQzOSIsImFjYyQ0MCIsImFjYyQ0MSIsImFjYyQ0MiIsImFjYyQ0MyIsImFjYyQ0NCIsImFjYyQ0NSIsImFjYyQ0NiIsImFjYyQ0NyIsImFjYyQ0OCIsImFjYyQ0OSIsImFjYyQ1MCIsImFjYyQ1MSIsImFjYyQ1MiIsImFjYyQ1MyIsImFjYyQ1NCIsImFjYyQ1NSIsInNlbGZfNCIsImFjYyQ1NiIsImFjYyQ1NyIsImFjYyQ1OCIsImFjYyQ1OSIsImFjYyQ2MCIsImFjYyQ2MSIsImFjYyQ2MiIsImFjYyQ2MyIsImFjYyQ2NCIsImFjYyQ2NSIsImFjYyQ2NiIsImFjYyQ2NyIsImFjYyQ2OCIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInRvX2V4dGVuc2lvbiIsImVycm9yIiwic3ViX21zZ3MiLCJtYWluX21zZyIsImVycl9leHRlbnNpb25fbmFtZSIsIm1rX3N0cmluZ19jb25zdGFudCIsImV4dGVuc2lvbl9vZl9zdWJfbXNnIiwic3ViX21zZyIsInJlZ2lzdGVyX2Vycm9yX29mX2V4biIsIm1lc3NhZ2UiLCJzZXRfbWVzc2FnZSIsIm1ha2UiLCJzdWIiLCJzdWIkMCIsInVwZGF0ZV9sb2MiLCJnZXRfbG9jYXRpb24iLCJvZl9leG4iLCJyYWlzZSIsInByaW50IiwiZGlmZl9jb21tYW5kIiwib3B0IiwiZmlsZTEiLCJmaWxlMiIsInN0aCIsImV4dHJhX3BhdGRpZmZfYXJncyIsInN0aCQwIiwidXNlX2NvbG9yIiwiZXhlYyIsImNtZCIsImNtZCQwIiwibiIsInMiLCJhcmdzIiwiZXJyX2NvZGUiLCJhbGwiLCJyZWdpc3RlciIsIm5hbWUiLCJkZXJpdmVyIiwibG9va3VwIiwiZHJ2IiwiZGVyaXZlcnMiLCJhY2MiLCJ4Iiwic2VsZl8xIiwiZiIsIngkMCIsInNlbGZfMiIsImFjYyIsInNlbGZfMyIsImEiLCJyIiwiaSIsImxvb3AiLCJsIiwibCQwIiwiYWNjJDAiLCJsJDEiLCJhY2MkMSIsInNlbGZfNCIsImxlbiIsImEkMCIsIngkMSIsInNlbGZfNSIsImN0eCIsInNlbGZfNiIsInNlbGZfNyIsInJlc19oZWFkIiwicmVzX3RhaWwiLCJyZXMiLCJmbGFncyQwIiwiZmxhZ3MiLCJjb21wYXJlIiwiZXF1YWwiLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwibWluIiwibWF4IiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJtaW4kMCIsIm1heCQwIiwidG9fc3RyaW5nIiwiY29tcGFyZSQxIiwiZXF1YWwkMSIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsInN5bWJvbCQxNSIsInN5bWJvbCQxNiIsIm1pbiQxIiwibWF4JDEiLCJzdWJfc3RyaW5nIiwidCIsInBvcyIsImxlbiIsImJsaXRfc3RyaW5nIiwic3JjIiwic3JjX3BvcyIsImRzdCIsImRzdF9wb3MiLCJjb21wYXJlJDMiLCJlcXVhbCQzIiwic3ltYm9sJDE3Iiwic3ltYm9sJDE4Iiwic3ltYm9sJDE5Iiwic3ltYm9sJDIwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwibWluJDIiLCJtYXgkMiIsInByb3RlY3R4IiwieCIsImYiLCJmaW5hbGx5JDAiLCJ5IiwiZXhuJDAiLCJleG4iLCJ0b19zdHJpbmckMSIsImNvbXBhcmUkNCIsImVxdWFsJDQiLCJzeW1ib2wkMjMiLCJzeW1ib2wkMjQiLCJzeW1ib2wkMjUiLCJzeW1ib2wkMjYiLCJzeW1ib2wkMjciLCJzeW1ib2wkMjgiLCJtaW4kMyIsIm1heCQzIiwiaWQiLCJzZXQiLCJrZXkiLCJkYXRhIiwiYWRkIiwiYWRkX2V4biIsImZpbmRfb3B0IiwiZmluZF9vcl9hZGQiLCJkZWZhdWx0JDAiLCJkYXRhJDAiLCJhZGRfYWxpc3QiLCJhbGlzdCIsImFsaXN0JDAiLCJhbGlzdCQxIiwib2ZfYWxpc3QiLCJzaXplIiwic2l6ZSQwIiwic2l6ZSQxIiwiZXJyb3IiLCJvZl9hbGlzdF9leG4iLCJjcmVhdGUkMCIsIm9wdCIsImZpbGUiLCJzdGgiLCJiaW5hcnkiLCJ3aXRoX2ZpbGUiLCJmaWxlbmFtZSIsImlucHV0X2FsbCIsImJ1ZiIsImNoYXIkMCIsInJlYWRfYWxsIiwibWF4X2ludCIsInRvX3N0cmluZyQyIiwiY29tcGFyZSQ1IiwiZXF1YWwkNSIsInN5bWJvbCQyOSIsInN5bWJvbCQzMCIsInN5bWJvbCQzMSIsInN5bWJvbCQzMiIsInN5bWJvbCQzMyIsInN5bWJvbCQzNCIsIm1pbiQ0IiwibWF4JDQiLCJtZXJnZSIsInJlbW92ZV9hc3NvYyIsInJlbW92ZV9hc3NxIiwicmV2X21hcGkiLCJsaXN0IiwibGlzdCQwIiwiaSIsImFjYyIsInRhaWwiLCJoZWFkIiwiYWNjJDAiLCJpJDAiLCJmb2xkX3JpZ2h0MiIsImxpc3QxIiwibGlzdDIiLCJpbml0IiwibWFwJDAiLCJtYXBpJDAiLCJmb2xkX3JpZ2h0JDAiLCJhcHBlbmQiLCJjb25jYXQkMCIsInJldl9jb21iaW5lIiwiY29tYmluZSIsInNwbGl0IiwieXMiLCJ4cyIsIm1hcDIiLCJwYXJ0aXRpb25fbWFwIiwicCIsImwiLCJsZWZ0IiwicmlnaHQiLCJsJDAiLCJ2IiwidiQwIiwiaW5pdCQwIiwicG9zJDAiLCJpc19lbXB0eSIsInJldl9maWx0ZXJfb3B0Iiwib3B0aW9uIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJjb25jYXRfbWFwIiwiZmluZF9tYXAiLCJzb21lIiwiZmluZF9tYXBfZXhuIiwibGFzdCIsInJlc3QiLCJzcGxpdF93aGlsZSIsImZpbmRfYV9kdXAiLCJzZXQkMSIsInNldCQwIiwiYXNzb2Nfb3B0IiwiaXRlciQyIiwiaXNfc29tZSIsIml0ZXIkMyIsIm1hcCQxIiwidmFsdWUiLCJ0b19saXN0IiwiYmluZCIsImEiLCJlIiwibWFwJDIiLCJtYXBfZXJyb3IiLCJzeW1ib2xfYmluZCIsInN5bWJvbF9tYXAiLCJoYW5kbGVfZXJyb3IiLCJzeW1ib2wkMzUiLCJxMiIsInQyIiwicTEiLCJ0MSIsImhkJDAiLCJ0b19saXN0JDAiLCJxIiwibWFwJDMiLCJjcmVhdGUkMSIsInN0aCQwIiwic3RoJDEiLCJmYWlsX2lmX2V4aXN0cyIsInN0aCQyIiwicGVybSIsImZsYWdzJDEiLCJmbGFncyQyIiwid2l0aF9maWxlJDAiLCJ3cml0ZV9hbGwiLCJpc19lbXB0eSQwIiwicHJlZml4Iiwic3VmZml4IiwiZHJvcF9wcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImlzX3ByZWZpeCIsImlzX3N1ZmZpeCIsInN1ZmZpeF9vZmZzZXQiLCJwb3MkMSIsImV4aXN0cyQxIiwiZm9yX2FsbCQxIiwiaW5kZXhfb3B0JDAiLCJyaW5kZXhfb3B0JDAiLCJpbmRleF9mcm9tX29wdCQwIiwicmluZGV4X2Zyb21fb3B0JDAiLCJsc3BsaXQyIiwib24iLCJjYXBpdGFsaXplX2FzY2lpJDAiLCJsb3dlcmNhc2VfYXNjaWkkMSIsInVuY2FwaXRhbGl6ZV9hc2NpaSQwIiwic3BsaXRfb25fY2hhciQwIiwic2VwIiwiY29tcGFyZSQ3IiwiZXF1YWwkNyIsInN5bWJvbCQzNiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsIm1pbiQ1IiwibWF4JDUiLCJmaW5kX29wdCQxIiwic3ltYm9sJDQyIiwib3V0cHV0Iiwib2MiLCJieXRlcyIsIm91dHB1dF9zdWJzdHJpbmciLCJzdHJpbmciLCJpbl9maWxlIiwibmFtZSIsImxvYyIsInNldF9maWxlbmFtZSIsImZuIiwibG9jX3N0YXJ0IiwibG9jX2VuZCIsIm5vbmUiLCJpbml0IiwibGV4YnVmIiwiZm5hbWUiLCJyYWlzZV9lcnJvcmYiLCJmbXQiLCJyZXBvcnRfZXhjZXB0aW9uIiwib2ZfbGV4YnVmIiwicHJpbnQiLCJwcGYiLCJ0IiwiY29tcGFyZV9wb3MiLCJwMSIsInAyIiwiY29sdW1uIiwicCIsIm4iLCJtaW5fcG9zIiwibWF4X3BvcyIsImNvbXBhcmUiLCJsb2MxIiwibG9jMiIsImNyZWF0ZWYiLCJzdHIiLCJlcnJvcl9leHRlbnNpb25mIiwiZSIsImZhaWwiLCJleHBlY3RlZCIsImF0dHJpYnV0ZSIsInBheWxvYWQiLCJiaW5kaW5nX29wIiwib3AiLCJwYXQiLCJleHAiLCJjYXNlJDAiLCJsaHMiLCJndWFyZCIsInJocyIsInBjbF9jb25zdHIiLCJ4MCIsIngxIiwicGNsX3N0cnVjdHVyZSIsInBjbF9mdW4iLCJ4MiIsIngzIiwicGNsX2FwcGx5IiwicGNsX2xldCIsInBjbF9jb25zdHJhaW50IiwicGNsX2V4dGVuc2lvbiIsInBjbF9vcGVuIiwicGNmX2luaGVyaXQiLCJwY2ZfdmFsIiwicGNmX21ldGhvZCIsInBjZl9jb25zdHJhaW50IiwicGNmX2luaXRpYWxpemVyIiwicGNmX2F0dHJpYnV0ZSIsInBjZl9leHRlbnNpb24iLCJjbGFzc19pbmZvcyIsInZpcnQiLCJwYXJhbXMiLCJleHByIiwiY2xhc3Nfc2lnbmF0dXJlIiwic2VsZiIsImZpZWxkcyIsImNsYXNzX3N0cnVjdHVyZSIsInBjdHlfY29uc3RyIiwicGN0eV9zaWduYXR1cmUiLCJwY3R5X2Fycm93IiwicGN0eV9leHRlbnNpb24iLCJwY3R5X29wZW4iLCJwY3RmX2luaGVyaXQiLCJwY3RmX3ZhbCIsInBjdGZfbWV0aG9kIiwicGN0Zl9jb25zdHJhaW50IiwicGN0Zl9hdHRyaWJ1dGUiLCJwY3RmX2V4dGVuc2lvbiIsImNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidmFycyIsImFyZ3MiLCJyZXMiLCJwdHlwX2FueSIsInB0eXBfdmFyIiwicHR5cF9hcnJvdyIsInB0eXBfdHVwbGUiLCJwdHlwX2NvbnN0ciIsInB0eXBfb2JqZWN0IiwicHR5cF9jbGFzcyIsInB0eXBfYWxpYXMiLCJwdHlwX3ZhcmlhbnQiLCJwdHlwX3BvbHkiLCJwdHlwX3BhY2thZ2UiLCJwdHlwX2V4dGVuc2lvbiIsInBkaXJfc3RyaW5nIiwicGRpcl9pbnQiLCJwZGlyX2lkZW50IiwicGRpcl9ib29sIiwicGV4cF9pZGVudCIsInBleHBfY29uc3RhbnQiLCJwZXhwX2xldCIsInBleHBfZnVuY3Rpb24iLCJwZXhwX2Z1biIsInBleHBfYXBwbHkiLCJwZXhwX21hdGNoIiwicGV4cF90cnkiLCJwZXhwX3R1cGxlIiwicGV4cF9jb25zdHJ1Y3QiLCJwZXhwX3ZhcmlhbnQiLCJwZXhwX3JlY29yZCIsInBleHBfZmllbGQiLCJwZXhwX3NldGZpZWxkIiwicGV4cF9hcnJheSIsInBleHBfaWZ0aGVuZWxzZSIsInBleHBfc2VxdWVuY2UiLCJwZXhwX3doaWxlIiwicGV4cF9mb3IiLCJ4NCIsInBleHBfY29uc3RyYWludCIsInBleHBfY29lcmNlIiwicGV4cF9zZW5kIiwicGV4cF9uZXciLCJwZXhwX3NldGluc3R2YXIiLCJwZXhwX292ZXJyaWRlIiwicGV4cF9sZXRtb2R1bGUiLCJwZXhwX2xldGV4Y2VwdGlvbiIsInBleHBfYXNzZXJ0IiwicGV4cF9sYXp5IiwicGV4cF9wb2x5IiwicGV4cF9vYmplY3QiLCJwZXhwX25ld3R5cGUiLCJwZXhwX3BhY2siLCJwZXhwX29wZW4iLCJwZXhwX2xldG9wIiwicGV4cF9leHRlbnNpb24iLCJwZXhwX3VucmVhY2hhYmxlIiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIiwia2luZCIsImluY2x1ZGVfaW5mb3MiLCJtb2QiLCJsYWJlbF9kZWNsYXJhdGlvbiIsIm11dGFibGUiLCJ0eXBlIiwibGV0b3AiLCJsZXQkMCIsImFuZHMiLCJib2R5IiwibG9jYXRpb24iLCJzdGFydCIsImVuZCIsImdob3N0IiwibW9kdWxlX2JpbmRpbmciLCJtb2R1bGVfZGVjbGFyYXRpb24iLCJwbW9kX2lkZW50IiwicG1vZF9zdHJ1Y3R1cmUiLCJwbW9kX2Z1bmN0b3IiLCJwbW9kX2FwcGx5IiwicG1vZF9jb25zdHJhaW50IiwicG1vZF91bnBhY2siLCJwbW9kX2V4dGVuc2lvbiIsIm1vZHVsZV9zdWJzdGl0dXRpb24iLCJtYW5pZmVzdCIsInBtdHlfaWRlbnQiLCJwbXR5X3NpZ25hdHVyZSIsInBtdHlfZnVuY3RvciIsInBtdHlfd2l0aCIsInBtdHlfdHlwZW9mIiwicG10eV9leHRlbnNpb24iLCJwbXR5X2FsaWFzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb24iLCJvdGFnIiwib2luaGVyaXQiLCJvcGVuX2luZm9zIiwib3ZlcnJpZGUiLCJwcGF0X2FueSIsInBwYXRfdmFyIiwicHBhdF9hbGlhcyIsInBwYXRfY29uc3RhbnQiLCJwcGF0X2ludGVydmFsIiwicHBhdF90dXBsZSIsInBwYXRfY29uc3RydWN0IiwicHBhdF92YXJpYW50IiwicHBhdF9yZWNvcmQiLCJwcGF0X2FycmF5IiwicHBhdF9vciIsInBwYXRfY29uc3RyYWludCIsInBwYXRfdHlwZSIsInBwYXRfbGF6eSIsInBwYXRfdW5wYWNrIiwicHBhdF9leGNlcHRpb24iLCJwcGF0X2V4dGVuc2lvbiIsInBwYXRfb3BlbiIsInBvc2l0aW9uIiwibG51bSIsImJvbCIsImNudW0iLCJydGFnIiwicmluaGVyaXQiLCJwc2lnX3ZhbHVlIiwicHNpZ190eXBlIiwicHNpZ190eXBlc3Vic3QiLCJwc2lnX3R5cGV4dCIsInBzaWdfZXhjZXB0aW9uIiwicHNpZ19tb2R1bGUiLCJwc2lnX21vZHN1YnN0IiwicHNpZ19yZWNtb2R1bGUiLCJwc2lnX21vZHR5cGUiLCJwc2lnX21vZHR5cGVzdWJzdCIsInBzaWdfb3BlbiIsInBzaWdfaW5jbHVkZSIsInBzaWdfY2xhc3MiLCJwc2lnX2NsYXNzX3R5cGUiLCJwc2lnX2F0dHJpYnV0ZSIsInBzaWdfZXh0ZW5zaW9uIiwicHN0cl9ldmFsIiwicHN0cl92YWx1ZSIsInBzdHJfcHJpbWl0aXZlIiwicHN0cl90eXBlIiwicHN0cl90eXBleHQiLCJwc3RyX2V4Y2VwdGlvbiIsInBzdHJfbW9kdWxlIiwicHN0cl9yZWNtb2R1bGUiLCJwc3RyX21vZHR5cGUiLCJwc3RyX29wZW4iLCJwc3RyX2NsYXNzIiwicHN0cl9jbGFzc190eXBlIiwicHN0cl9pbmNsdWRlIiwicHN0cl9hdHRyaWJ1dGUiLCJwc3RyX2V4dGVuc2lvbiIsInRvcGxldmVsX2RpcmVjdGl2ZSIsImFyZyIsInR5cGVfZGVjbGFyYXRpb24iLCJjc3RycyIsInByaXZhdGUkMCIsInR5cGVfZXhjZXB0aW9uIiwiY29uc3RydWN0b3IiLCJ0eXBlX2V4dGVuc2lvbiIsInBhdGgiLCJjb25zdHJ1Y3RvcnMiLCJ2YWx1ZV9iaW5kaW5nIiwidmFsdWVfZGVzY3JpcHRpb24iLCJwcmltIiwidHh0IiwibWFrZSIsIm1hcCIsImYiLCJpc19ub3JtYWxfaWRlbnRfY2hhciIsInNob3J0X25hbWUiLCJzdHJpbmciLCJzIiwiYiIsImEiLCJiJDAiLCJhJDAiLCJzZXhwX29mX3QiLCJmbGF0dGVuX2V4biIsImxpZCQwIiwiYWNjdSIsInMkMCIsImxpZCIsImxhc3RfZXhuIiwidW5mbGF0dGVuIiwibCIsImFjYyIsInBhcnNlIiwiaW52YWxpZCIsIm9wZW5fcGFyIiwiY2xvc2VfcGFyIiwiciIsImwkMCIsImdyb3VwIiwiYmVmb3JlIiwibCQxIiwicyQxIiwieCIsIm1rIiwibWFwX2xpZGVudCIsImxpZGVudCIsInBwYXRfY29uc3RydWN0JDAiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiQwIiwicHN0cl92YWx1ZV9saXN0IiwicmVjX2ZsYWciLCJ2YnMiLCJub25yZWNfdHlwZV9kZWNsYXJhdGlvbiIsImVpbnQiLCJlY2hhciIsImVzdHJpbmciLCJlZmxvYXQiLCJlaW50MzIiLCJlaW50NjQiLCJlbmF0aXZlaW50IiwicGludCIsInBjaGFyIiwicHN0cmluZyIsInBmbG9hdCIsInBpbnQzMiIsInBpbnQ2NCIsInBuYXRpdmVpbnQiLCJlYm9vbCIsInBib29sIiwiZXZhciIsInYiLCJwdmFyIiwiZXVuaXQiLCJwdW5pdCIsInBleHBfdHVwbGUkMCIsInBwYXRfdHVwbGUkMCIsInB0eXBfdHVwbGUkMCIsInBleHBfdHVwbGVfb3B0IiwicHBhdF90dXBsZV9vcHQiLCJwdHlwX3BvbHkkMCIsInR5IiwicGV4cF9hcHBseSQwIiwiZWwiLCJlJDAiLCJlYXBwbHkiLCJlYWJzdHJhY3QiLCJwcyIsImVzZXF1ZW5jZSIsInRsIiwiaGQiLCJwY29uc3RydWN0IiwiY2QiLCJlY29uc3RydWN0IiwiZWxpc3QiLCJwbGlzdCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdCIsImlkZW50IiwibiQwIiwidHlwZV9jb25zdHJfY29udiIsImFwcGx5X2xvYyIsImxvbmdpZGVudCIsImxvYyQwIiwibW9kdWxlX3BhdGgiLCJzdWZmaXhfbiIsImZ1bmN0b3IiLCJmdW5jdG9yX2FyZ3MiLCJmdW5jdG9yJDAiLCJmdW5jdG9yX3BhdGgiLCJyZXN0IiwiaWRlbnQkMCIsInVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IiwiZ2F0aGVyX2FyZ3MiLCJhcmdzJDAiLCJib2R5JDAiLCJldGFfcmVkdWNlIiwiZXhwciQwIiwic3VicGF0IiwibGFiZWwiLCJhY2MkMCIsIm5hbWUkMCIsImFjYyQxIiwiZl9pZGVudCIsInBhcmFtX2xhYmVsIiwiYXJnX2xhYmVsIiwicGFyYW0kMCIsInR5X29wdCIsInR5JDAiLCJldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIiwiZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9uIiwibm9ucmVjX3R5cGVfZGVjbGFyYXRpb24kMCIsInBleHBfdHVwbGVfb3B0JDAiLCJwcGF0X3R1cGxlX29wdCQwIiwiZWludCQwIiwiZWNoYXIkMCIsImVzdHJpbmckMCIsImVmbG9hdCQwIiwiZWludDMyJDAiLCJlaW50NjQkMCIsImVuYXRpdmVpbnQkMCIsImVib29sJDAiLCJldmFyJDAiLCJwaW50JDAiLCJwY2hhciQwIiwicHN0cmluZyQwIiwicGZsb2F0JDAiLCJwaW50MzIkMCIsInBpbnQ2NCQwIiwicG5hdGl2ZWludCQwIiwicGJvb2wkMCIsInB2YXIkMCIsImV1bml0JDAiLCJwdW5pdCQwIiwiZWFwcGx5JDAiLCJlYWJzdHJhY3QkMCIsImVzZXF1ZW5jZSQwIiwiZWxpc3QkMCIsInBsaXN0JDAiLCJ0eXBlX2NvbnN0cl9jb252JDAiLCJ1bmFwcGxpZWRfdHlwZV9jb25zdHJfY29udiQwIiwiZ2V0Iiwic2tpcCIsInNraXAkMCIsInN0YWNrIiwibGVuIiwicG9zIiwicG9zJDAiLCJsZXZlbnNodGVpbl9kaXN0YW5jZSIsImN1dG9mZiIsIm0iLCJkIiwiaSQwIiwiaiQwIiwibGluZV9taW4iLCJqIiwiaSIsInZhbHVlIiwiZGlzdGFuY2UiLCJzcGVsbGNoZWNrIiwibmFtZXMiLCJyZWdpc3RlcmVkX25hbWUiLCJuYW1lc19hdF9iZXN0X2Rpc3RhbmNlIiwiYmVzdF9kaXN0YW5jZSIsImRpc3QiLCJzdWdnZXN0aW9ucyIsInJldl9yZXN0IiwibGFzdCIsImZvbGRfZG90X3N1ZmZpeGVzIiwiY29sbGFwc2VfYWZ0ZXJfYXQiLCJwYXJ0cyIsInBhcnQiLCJwYXJ0cyQxIiwicGFydHMkMCIsImRvdF9zdWZmaXhlcyIsInNwbGl0X3BhdGgiLCJpJDIiLCJpJDQiLCJpJDMiLCJpJDEiLCJtYXRjaGVzIiwibWF0Y2hlZCIsInNwbGl0X291dGVyX25hbWVzcGFjZSIsImJlZm9yZV9kb3QiLCJhZnRlcl9kb3QiLCJjcmVhdGVfc2V0IiwiZnVsbHlfcXVhbGlmaWVkX25hbWVzIiwiYXR0cmlidXRlcyIsImV4dGVuc2lvbnMiLCJpc19hbGxvd2xpc3RlZCIsImdldF9hdHRyaWJ1dGVfbGlzdCIsImdldF9leHRlbnNpb25fbGlzdCIsImNyZWF0ZV9yZXNlcnZlZCIsInRibCIsInJlc2VydmUiLCJucyQwIiwibnMiLCJ0YmwkMCIsInJlc3RfbnMiLCJvdXRlcl9ucyIsInJlc3RfdGJsIiwiaXNfaW5fcmVzZXJ2ZWRfbmFtZXNwYWNlcyIsImlnbm9yZV9jaGVja3MiLCJjcmVhdGUiLCJjdXJyZW50X2ZpbGUiLCJzdHJpbmdfb2ZfY29udGV4dCIsImdldF9hbGxfZm9yX2NvbnRleHQiLCJjb250ZXh0IiwiY2hlY2tfY29sbGlzaW9uc19sb2NhbCIsImNhbGxlciIsImFsbF9mb3JfY29udGV4dCIsImRlY2xhcmVkX2F0IiwiY29udGV4dCQwIiwiY2hlY2tfY29sbGlzaW9ucyIsInJlZ2lzdGVyIiwia2luZCQxIiwibGlzdCIsImtpbmQkMCIsImFsbCIsInQkMCIsIm9wdCIsInN0aCIsImFsbG93bGlzdCIsImtleSIsImN0eCIsImFsbF9mcm9tX2NvbnRleHQiLCJvdGhlcl9jb250ZXh0cyIsInBwX3RleHQiLCJjdXJyZW50X2NvbnRleHQiLCJhX29yX2FuIiwieSIsImMiLCJyZXZfb3RoZXJzIiwib3RoZXJzIiwibXNnIiwicmFpc2VfZXJyb3JmJDAiLCJjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiIsInRkIiwiY2hvcCIsIm9yX21vcmUiLCJ0YXJnZXQiLCJjbnQiLCJnZW5fc3ltYm9sIiwicHJlZml4IiwicHJlZml4JDAiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyIsIm5hbWVfcGFyYW0iLCJ2YXJpYW5jZSIsInRwIiwicHR5cF9kZXNjIiwibyIsImVycm9ycyIsInB0eXBlX3BhcmFtcyIsInEiLCJuYW1lX3R5cGVfcGFyYW1zX2luX3RkIiwiZXJyIiwiY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyIiwidGQkMCIsInJlc3VsdF90eXBlIiwic3RyaW5nX29mX2NvcmVfdHlwZSIsImN0IiwiYnVmIiwiZ2V0X3R5cGVfcGFyYW1fbmFtZV9yZXMiLCJnZXRfdHlwZV9wYXJhbV9uYW1lIiwic2VsZl8xIiwiY3R5cGUiLCJpZCIsInRkcyIsInJlYWxseV9yZWN1cnNpdmUiLCJ4JDAiLCJ4JDEiLCJsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCIsImxvY19vZl9wYXlsb2FkIiwiYXR0cl9wYXlsb2FkIiwiYXR0cl9uYW1lIiwibG9jX29mX2F0dHJpYnV0ZSIsImxvY19vZl9leHRlbnNpb24iLCJjdXJyeV9hcHBsaWNhdGlvbnMiLCJvcmlnX2ZvcndhcmRfYXJncyIsImxvb3AiLCJyZXZfZnJvbnRfYXJncyIsImxhc3RfYXJnIiwiYXR0ciIsImF0dHJpYnV0ZXNfZXJyb3JzIiwic2VsZl8yIiwiY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyIsImFzc2VydF9ub19hdHRyaWJ1dGVzIiwic2VsZl8zIiwiYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4iLCJhdHRyaWJ1dGVfb2Zfd2FybmluZyIsImlzX3BvbHltb3JwaGljX3ZhcmlhbnQiLCJzaWciLCJ0eXAkMCIsInR5cCIsIm1rX25hbWVkX3NpZyIsInNnX25hbWUiLCJoYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudCIsImFyaXR5IiwibXR5IiwiZm9yX3N1YnN0IiwiZXhuX3RvX2xvY19lcnJvciIsImV4biIsImVycm9yIiwicmV0dXJuJDAiLCJzeW1ib2xfYmluZCIsImVycm9yczEiLCJlcnJvcnMyIiwic3ltYm9sX21hcCIsIm9mX3Jlc3VsdCIsInJlc3VsdCIsImRlZmF1bHQkMCIsImNvbWJpbmVfZXJyb3JzIiwibm9sYWJlbCIsImsiLCJsYWJlbGxlZCIsImYwIiwiayQwIiwib3B0aW9uYWwiLCJrJDEiLCJrJDIiLCJwY2xfbG9jIiwiZjIiLCJmMSIsInBjbF9hdHRyaWJ1dGVzIiwiZjMiLCJrJDMiLCJwY2ZfbG9jIiwicGNmX2F0dHJpYnV0ZXMiLCJjZmtfdmlydHVhbCIsImNma19jb25jcmV0ZSIsImNsYXNzX2luZm9zX2F0dHJpYnV0ZXMiLCJwY3R5X2xvYyIsInBjdHlfYXR0cmlidXRlcyIsInBjdGZfbG9jIiwicGN0Zl9hdHRyaWJ1dGVzIiwiY2xvc2VkIiwib3BlbiIsInBjb25zdF9pbnRlZ2VyIiwicGNvbnN0X2NoYXIiLCJwY29uc3Rfc3RyaW5nIiwicGNvbnN0X2Zsb2F0IiwicGNzdHJfdHVwbGUiLCJwY3N0cl9yZWNvcmQiLCJjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9hdHRyaWIiLCJwdHlwX2xvYyIsInB0eXBfYXR0cmlidXRlcyIsInVwdG8iLCJkb3dudG8iLCJwZGlyYV9sb2MiLCJwZXhwX2xvYyIsInBleHBfYXR0cmlidXRlcyIsImY0IiwiayQ0IiwiZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2F0dHJpYnV0IiwicGV4dF9kZWNsIiwicGV4dF9yZWJpbmQiLCJ1bml0IiwibmFtZWQiLCJpbmNsdWRlX2luZm9zX2F0dHJpYnV0ZXMiLCJpbmplY3RpdmUiLCJub2luamVjdGl2aXR5IiwibGFiZWxfZGVjbGFyYXRpb25fYXR0cmlidXRlcyIsImxkb3QiLCJsYXBwbHkiLCJtb2R1bGVfYmluZGluZ19hdHRyaWJ1dGVzIiwibW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMiLCJwbW9kX2xvYyIsInBtb2RfYXR0cmlidXRlcyIsIm1vZHVsZV9zdWJzdGl0dXRpb25fYXR0cmlidXRlcyIsInBtdHlfbG9jIiwicG10eV9hdHRyaWJ1dGVzIiwibW9kdWxlX3R5cGVfZGVjbGFyYXRpb25fYXR0cmliIiwiaW1tdXRhYmxlIiwicG9mX2xvYyIsInBvZl9hdHRyaWJ1dGVzIiwib3Blbl9pbmZvc19hdHRyaWJ1dGVzIiwiZnJlc2giLCJwcGF0X2xvYyIsInBwYXRfYXR0cmlidXRlcyIsInBzdHIiLCJwc2lnIiwicHR5cCIsInBwYXQiLCJwdWJsaWMkMCIsIm5vbnJlY3Vyc2l2ZSIsInJlY3Vyc2l2ZSIsInByZl9sb2MiLCJwcmZfYXR0cmlidXRlcyIsInBzaWdfbG9jIiwicHN0cl9sb2MiLCJwdG9wX2RlZiIsInB0b3BfZGlyIiwidHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIiwiayQ1IiwidHlwZV9leGNlcHRpb25fYXR0cmlidXRlcyIsInR5cGVfZXh0ZW5zaW9uX2F0dHJpYnV0ZXMiLCJwdHlwZV9hYnN0cmFjdCIsInB0eXBlX3ZhcmlhbnQiLCJwdHlwZV9yZWNvcmQiLCJwdHlwZV9vcGVuIiwidmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIiwidmFsdWVfZGVzY3JpcHRpb25fYXR0cmlidXRlcyIsImNvdmFyaWFudCIsImNvbnRyYXZhcmlhbnQiLCJub3ZhcmlhbmNlIiwidmlydHVhbCIsImNvbmNyZXRlIiwicHdpdGhfdHlwZSIsInB3aXRoX21vZHVsZSIsInB3aXRoX21vZHR5cGUiLCJwd2l0aF9tb2R0eXBlc3Vic3QiLCJwd2l0aF90eXBlc3Vic3QiLCJwd2l0aF9tb2RzdWJzdCIsInJlc3RvcmVfY29udGV4dCIsImJhY2t1cCIsImluY3JfbWF0Y2hlZCIsInBhcnNlX3JlcyIsIm9uX2Vycm9yIiwiZiQwIiwiciQwIiwicGFyc2VfcmVzJDAiLCJwYXJzZSQwIiwic3ltYm9sIiwic3ltYm9sJDAiLCJkcm9wIiwiYXMiLCJjc3QiLCJ0b19zdHJpbmciLCJlcXVhbCIsImludCQwIiwiY2hhciQwIiwiZmxvYXQkMCIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJib29sIiwiYm9vbCQwIiwiZnVuYyIsImZhbHNlJDAiLCJ0cnVlJDAiLCJuaWwiLCJzeW1ib2wkMSIsInNvbWUiLCJwYWlyIiwidHJpcGxlIiwiYWx0IiwiZTEkMCIsImUxIiwibTEiLCJlMiQwIiwiZTIiLCJtMiIsIm1hcCQwIiwibWFwX3Jlc3VsdCIsIm1hcDAiLCJtYXAxIiwibWFwMiIsIm1hcDAkMCIsIm1hcDEkMCIsIm1hcDIkMCIsIm1hcF92YWx1ZSIsIm1hcF92YWx1ZSQwIiwiYWx0X29wdGlvbiIsIm1hbnkiLCJhdXgiLCJ4cyIsInBhY2swIiwicGFjazIiLCJwYWNrMyIsInoiLCJjb25zdF9pbnQiLCJjb25zdF9pbnQzMiIsImNvbnN0X2ludDY0IiwiY29uc3RfbmF0aXZlaW50Iiwic2luZ2xlX2V4cHJfcGF5bG9hZCIsIm5vX2xhYmVsIiwiZXh0ZW5zaW9uIiwibmV4dCIsImV4cHIkMSIsIm9mX2Z1bmMiLCJ0b19mdW5jIiwicG9seV9lcXVhbCIsInBhdHRlcm4iLCJjb3JlX3R5cGUiLCJleHByZXNzaW9uIiwiY2xhc3NfdHlwZSIsImNsYXNzX3R5cGVfZmllbGQiLCJjbGFzc19leHByIiwiY2xhc3NfZmllbGQiLCJtb2R1bGVfdHlwZSIsIm9wZW5fZGVzY3JpcHRpb24iLCJtb2R1bGVfZXhwciIsIm9iamVjdF90eXBlX2ZpZWxkIiwiZ2V0X3BzdHJfZXZhbCIsInN0IiwiZ2V0X3BzdHJfZXh0ZW5zaW9uIiwiZ2V0X3BzaWdfZXh0ZW5zaW9uIiwiZ2V0X2F0dHJpYnV0ZXMiLCJzZXRfYXR0cmlidXRlcyIsImF0dHJzIiwic3RydWN0dXJlX2l0ZW0iLCJzaWduYXR1cmVfaXRlbSIsImNsYXNzX2ZpZWxkJDAiLCJjbGFzc190eXBlX2ZpZWxkJDAiLCJnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX24iLCJhJDEiLCJhJDIiLCJkdW1teV9leHQiLCJyZWdpc3RyYXIiLCJkZWNsYXJlX3dpdGhfYWxsX2FyZ3MiLCJkZWNsYXJlIiwiZGVjbGFyZV93aXRoX25hbWVfbG9jIiwibmFtZV9sb2MiLCJkZWNsYXJlX3dpdGhfYXR0cl9sb2MiLCJhdHRyX2xvYyIsImRlY2xhcmVfZmxhZyIsInBheWxvYWRfcGF0dGVybiIsImNvbnRpbnVhdGlvbiIsIm5vcm1hbGl6ZSIsImhhc2giLCJub3Rfc2VlbiIsIm1hcmtfYXNfc2VlbiIsImV4cGxpY2l0bHlfZHJvcCIsImdldF9pbnRlcm5hbCIsImF0dHJpYnV0ZXMkMSIsImxvbmdlc3RfbWF0Y2giLCJhdHRyaWJ1dGVzJDAiLCJsZW4kMCIsImxvbmdlc3RfbWF0Y2gkMCIsImxvbmdlc3RfbWF0Y2gkMSIsImNvbnZlcnQiLCJkb19tYXJrX2FzX3NlZW4iLCJwYXR0ZXJuJDAiLCJnZXRfcmVzIiwiaGFzX2ZsYWdfcmVzIiwiaGFzX2ZsYWciLCJjb25zdW1lX3JlcyIsImF0dHIkMCIsImF0dHJzJDAiLCJjb25zdW1lIiwicmVtb3ZlX3NlZW5fcmVzIiwicGFja2VkcyIsInJlbW92ZV9zZWVuIiwicGF0dGVybl9yZXMiLCJkZWNsYXJlJDAiLCJjb252ZXJ0X3JlcyIsInRzIiwiY29udmVydCQwIiwiY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIiwiaXRlbSIsIml0ZW0kMCIsImVycm9yczIkMCIsIml0ZW0kMiIsIml0ZW0kMSIsImNsb3NlZF9mbGFnIiwiZXJyb3JzJDAiLCJmaWVsZHMkMCIsIm5vZGUiLCJjb2xsZWN0ZWRfZXJyb3JzIiwiY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvIiwicmFpc2VfaWZfbm9uX2VtcHR5IiwiY2hlY2tfdW51c2VkIiwicmVzZXRfY2hlY2tzIiwic2VsZl80IiwiY29sbGVjdCIsImNvbGxlY3RfdW5zZWVuX2Vycm9ycyIsImNoZWNrX2FsbF9zZWVuIiwicmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiIsInRhYmxlIiwic2VsZl81IiwiY29weV9vZl9ub3Rfc2VlbiIsImNvcHkiLCJkcm9wcGVkX3NvX2Zhcl9zdHJ1Y3R1cmUiLCJkcm9wcGVkX3NvX2Zhcl9zaWduYXR1cmUiLCJzZyIsInRvcF9sZXZlbCIsImZpbGVfcGF0aCIsIm1haW5fbW9kdWxlX25hbWUiLCJlbmNsb3NpbmdfbW9kdWxlIiwiZW5jbG9zaW5nX3ZhbHVlIiwic3VibW9kdWxlX3BhdGgiLCJsb2NhdGVkIiwiZnVsbHlfcXVhbGlmaWVkX3BhdGgiLCJ2YWx1ZSQwIiwiZW50ZXJfZXhwciIsImVudGVyX21vZHVsZSIsIm1vZHVsZV9uYW1lIiwiZW50ZXJfdmFsdWUiLCJ2YWx1ZV9uYW1lIiwidG9fc3RyaW5nX3BhdGgiLCJ3aXRoX3N0cmluZ19wYXRoIiwidG9vbF9uYW1lIiwiaW5wdXRfbmFtZSIsImNvZGVfcGF0aCIsImV4dGVuc2lvbl9wb2ludF9sb2MiLCJiYXNlIiwiY29kZV9wYXRoJDAiLCJpbnB1dF9uYW1lJDAiLCJ0b29sX25hbWUkMCIsIndpdGhfbG9jX2FuZF9wYXRoIiwiY3R4dCIsIm1ha2UkMCIsImRlcml2ZWRfaXRlbV9sb2MiLCJpbmxpbmUiLCJjb2RlX3BhdGgkMSIsImlucHV0X25hbWUkMSIsInRvb2xfbmFtZSQxIiwid2l0aF9sb2NfYW5kX3BhdGgkMCIsImVudGVyIiwiZW50ZXJfb3B0IiwibmFtZV9vcHQiLCJtdGQiLCJtZCIsIm1iIiwidmFyX25hbWVzX29mIiwiZWNfZW50ZXJfbW9kdWxlX29wdCIsImRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIiwiZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIiwiZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvIiwiZG9fbm90X2VudGVyX21vZHVsZV90eXBlX2RlY2xhIiwiZG9fbm90X2VudGVyX2xldF9tb2R1bGUiLCJ2YiIsInB2Yl9sb2MiLCJwdmJfYXR0cmlidXRlcyIsInB2Yl9leHByIiwicHZiX3BhdCIsInZhcl9uYW1lIiwiaW5fYmluZGluZ19jdHh0IiwicGF0X2Vycm9ycyIsInB2Yl9wYXQkMCIsImV4cHJfZXJyb3JzIiwicHZiX2V4cHIkMCIsInB2Yl9hdHRyaWJ1dGVzJDAiLCJsb2NfZXJyb3JzIiwicHZiX2xvYyQwIiwidmQiLCJ3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uIiwid2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiIsIndpdGhfbW9kdWxlX2RlY2xhcmF0aW9uIiwid2l0aF9tb2R1bGVfYmluZGluZyIsIm1lIiwid2l0aF9tb2R1bGVfZXhwciIsInBleHBfbG9jX3N0YWNrIiwicGV4cF9kZXNjIiwid2l0aF92YWx1ZSIsImN0eHQkMCIsIm5hbWVfZXJyb3JzIiwid2l0aF9sZXRfbW9kdWxlIiwibW9kdWxlX2V4cHJfZXJyb3JzIiwibW9kdWxlX2V4cHIkMCIsImJvZHlfZXJyb3JzIiwiZGVzY19lcnJvcnMkMCIsInBleHBfZGVzYyQxIiwiZGVzY19lcnJvcnMiLCJwZXhwX2Rlc2MkMCIsInBleHBfbG9jJDAiLCJsb2Nfc3RhY2tfZXJyb3JzIiwicGV4cF9sb2Nfc3RhY2skMCIsInBleHBfYXR0cmlidXRlcyQwIiwidGFnIiwic2V4cCIsInNleHBfb2YiLCJvY2FtbF9sZXhfdGFibGVzIiwic2tpcF9oYXNoX2JhbmciLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIndpdGhfb3V0cHV0IiwiYmluYXJ5IiwiZm4kMCIsIm9mX2ZpbGVuYW1lIiwiZGVzY3JpYmUiLCJtYXBfd2l0aF9jb250ZXh0IiwiZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24iLCJtYWdpY19sZW5ndGgiLCJmcm9tX2NoYW5uZWwiLCJjaCIsImlucHV0X2tpbmQiLCJoYW5kbGVfbm9uX2JpbmFyeSIsInByZWZpeF9yZWFkX2Zyb21fc291cmNlIiwiaW5wdXRfdmVyc2lvbiIsImFzdCIsImV4biQwIiwiSW5wdXRfdmVyc2lvbiIsImFzdCQwIiwiSW5wdXRfdmVyc2lvbiQwIiwiYXN0JDEiLCJhc3QkMiIsInJlYWQiLCJpbnB1dF9zb3VyY2UiLCJ3cml0ZSIsIm9jIiwiYWRkX3BweF9jb250ZXh0Iiwic2ckMCIsInN0JDAiLCJyZWFkX2JpbmFyeSIsInNpZ25hdHVyZSIsInN0cnVjdHVyZSIsImdldF9hc3QiLCJnZXRfaW5wdXRfbmFtZSIsInJ1bl9wcmVwcm9jZXNzb3IiLCJwcCIsImlucHV0Iiwib3V0cHV0IiwiY29tbWFuZCIsImVuZF9tYXJrZXJfc2lnIiwiZW5kX21hcmtlcl9zdHIiLCJleHRyYWN0X3ByZWZpeCIsInJlbW92ZV9sb2MiLCJyZW1vdmVfbG9jJDAiLCJwcmV2JDAiLCJwcmV2JDEiLCJkaWZmX2FzdHMiLCJnZW5lcmF0ZWQiLCJyb3VuZF90cmlwIiwid2l0aF90ZW1wX2ZpbGUiLCJmbjEiLCJmbjIiLCJvdXQiLCJkdW1wIiwiY21kIiwib2siLCJjbWQkMCIsInBhcnNlX3N0cmluZyIsIm1hdGNoX2xvb3AiLCJlbmRfcG9zIiwibWlzbWF0Y2hfaGFuZGxlciIsInNvdXJjZSIsImV4cGVjdGVkJDAiLCJzb3VyY2UkMCIsImxvYyQxIiwic291cmNlJDEiLCJleHBlY3RlZCQxIiwieSQwIiwiZG9fbWF0Y2giLCJnZXRfbG9jIiwiYXBwbHkiLCJ0b19zZXhwIiwiZ2V0X2xvYyQwIiwicHAkMCIsInRvX3NleHAkMCIsIm1hdGNoX3N0cnVjdHVyZV9yZXMiLCJtYXRjaF9zdHJ1Y3R1cmUiLCJtYXRjaF9zaWduYXR1cmVfcmVzIiwibWF0Y2hfc2lnbmF0dXJlIiwiZGVzYyIsImVxIiwiZ2V0X2V4dGVuc2lvbiIsInR5cGVfZGVjbCIsImUkMSIsImUkMiIsImEkMyIsImUkMyIsImEkNCIsImUkNCIsImEkNSIsImUkNSIsImEkNiIsImUkNiIsImEkNyIsImUkNyIsImEkOCIsImUkOCIsImEkOSIsImUkOSIsInZpcnR1YWxfcGF5bG9hZCIsIm1lcmdlX2F0dHJpYnV0ZXNfcmVzIiwicSQwIiwidCQxIiwicSQxIiwidCQyIiwibWVyZ2VfYXR0cmlidXRlcyIsIndpdGhfYXJnIiwiZmluZCIsImV4dCIsInNoaWZ0IiwiYXJnJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmciLCJwYXR0IiwiY29udmVydF9yZXMkMCIsImZvdW5kIiwiY29udmVydF9pbmxpbmVfcmVzIiwiY29udmVydF9pbmxpbmUiLCJjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUiLCJmaWx0ZXJfYnlfY29udGV4dCIsImV4cGFuZGVycyIsImV4cGFuZGVycyQwIiwiZXhwYW5kZXJzJDEiLCJ1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIiwiY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2VyIiwiZXJyb3JfbGlzdF90b19leGNlcHRpb24iLCJkZWNsYXJlX2lubGluZSIsImRlY2xhcmVfd2l0aF9wYXRoX2FyZyQwIiwiZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyIsImRlY2xhcmUkMSIsImRlY2xhcmVfaW5saW5lJDAiLCJkZWNsYXJlX3dpdGhfcGF0aF9hcmckMSIsImRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmckMCIsImRlY2xhcmVfcHB4X2ltcG9ydCIsImV4cGFuZCIsInNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IiwiYXR0cl9uYW1lJDAiLCJzcGxpdF9ub3JtYWxfYW5kX2V4cGVjdCQwIiwiZmlsdGVyIiwiZmllbGQiLCJmaWVsZCQwIiwic3BlY2lhbF9mdW5jdGlvbiIsImNvbnN0YW50Iiwic3VmZml4IiwiYXR0cl9zdHJfdHlwZV9kZWNsIiwiYXR0cl9zaWdfdHlwZV9kZWNsIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCIsImF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJhdHRyX3N0cl90eXBlX2V4dCIsImF0dHJfc2lnX3R5cGVfZXh0IiwiYXR0cl9zdHJfZXhjZXB0aW9uIiwiYXR0cl9zaWdfZXhjZXB0aW9uIiwiYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCIsImF0dHJfc2lnX3R5cGVfZGVjbF9leHBlY3QiLCJhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGUiLCJhdHRyX3N0cl90eXBlX2V4dF9leHBlY3QiLCJhdHRyX3NpZ190eXBlX2V4dF9leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25fZXhwZWN0IiwiYXR0cl9zaWdfZXhjZXB0aW9uX2V4cGVjdCIsIm5vcCIsInJlcGxhY2UiLCJpbnNlcnRfYWZ0ZXIiLCJtYXBfbm9kZV9yZWMiLCJzdXBlcl9jYWxsIiwiYmFzZV9jdHh0IiwiZW1iZWRfZXJyb3JzIiwiY29udmVydGVkIiwibWFwX25vZGVzIiwiaG9vayIsImluX2dlbmVyYXRlZF9jb2RlIiwiZ2VuZXJhdGVkX2NvZGUiLCJjb2RlIiwiZ2V0X2dyb3VwIiwiYXR0cjIiLCJ2YWxzJDAiLCJ2YWxzIiwicmV2X2NvbmNhdCIsInNvcnRfYXR0cl9ncm91cF9pbmxpbmUiLCJzb3J0X2F0dHJfaW5saW5lIiwiY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljIiwibm9wJDAiLCJ3aXRoX2V4dHJhX2l0ZW1zIiwiZXh0cmFfaXRlbXMiLCJleHBlY3RfaXRlbXMiLCJyZXN0JDAiLCJyZXBsIiwiaXRlbXMiLCJleHBhbmRlZF9pdGVtIiwiZXhwX3RkcyIsImV4cF9yZiIsInJmIiwiZXhwX3RlIiwidGUiLCJleHBfZWMiLCJlYyIsImV4cF9tdGQiLCJwY3NpZ19maWVsZHMiLCJwY3NpZ19zZWxmIiwicGNzdHJfZmllbGRzIiwicGNzdHJfc2VsZiIsImZ1bmMkMCIsImxhYiIsIm9wdGlvbiIsIndpdGhfY29udGV4dCIsImV4cGFuZGVkIiwiZXhwYW5kX2NvbnN0YW50IiwidGV4dCIsImMkMCIsImV4biQxIiwiaWQkMCIsImdlbmVyYXRlZF9jb2RlJDAiLCJleG4kMiIsInN0aCQwIiwicnVsZXMiLCJzcGVjaWFsX2Z1bmN0aW9ucyIsInNwZWNpYWxfZnVuY3Rpb25zJDAiLCJjb25zdGFudHMiLCJwcHhfaW1wb3J0IiwiYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2RlY2xzIiwiYXR0cl9zaWdfdHlwZV9kZWNsc19leHBlY3QiLCJhdHRyX3NpZ190eXBlX2RlY2xzIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHNfZXhwIiwiYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbHMiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHAiLCJhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNscyIsImF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3QiLCJhdHRyX3N0cl90eXBlX2V4dHMiLCJhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0IiwiYXR0cl9zaWdfdHlwZV9leHRzIiwiYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3N0cl9leGNlcHRpb25zIiwiYXR0cl9zaWdfZXhjZXB0aW9uc19leHBlY3QiLCJhdHRyX3NpZ19leGNlcHRpb25zIiwibWFwX25vZGUiLCJtYXBfbm9kZXMkMCIsImhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSIsImV4cGFuZGVkX2l0ZW1zIiwiZzEiLCJnMiIsInZhbHVlcyIsImdlbmVyYXRlZF9jb2RlX2JlZ2luIiwiZ2VuZXJhdGVkX2NvZGVfZW5kIiwicGFyZW4iLCJzdG9wIiwibWFrZV90ZXh0IiwiYmxvY2siLCJwcmludGVyIiwiaWR4IiwiY291bnRfbmV3bGluZXMiLCJza2lwX2JsYW5rX2VvbCIsImNvbnRlbnRzIiwiY251bSQxIiwiY251bSQwIiwicmVjb25jaWxlIiwic3R5bGVyIiwicmVwbHMkMyIsImlucHV0X2ZpbGVuYW1lIiwicmVwbHMiLCJyZXBscyQyIiwicmVwbCQwIiwicHJldiIsInJlcGxzJDAiLCJyZXBscyQxIiwicmVwbHMkNCIsIm91dHB1dF9uYW1lIiwiY29weV9pbnB1dCIsInVwX3RvIiwibGluZSIsImxhc3RfaXNfdGV4dCIsImlzX3RleHQiLCJsaW5lJDAiLCJsaW5lJDEiLCJsb29wJDAiLCJsaW5lJDIiLCJsb29wX2NvbnNlY3V0aXZlX3JlcGxzJDAiLCJsYXN0X2lzX3RleHQkMCIsImVuZF9jb25zZWN1dGl2ZV9yZXBscyIsInBvcyQxIiwibGFzdF9pc190ZXh0JDEiLCJwb3MkMiIsImxvb3BfY29uc2VjdXRpdmVfcmVwbHMiLCJ0bXBfZm4iLCJzYW5pdGl6ZSIsImJpbmRpbmdzIiwiQXN0IiwicXVvdGUiLCJxdW90ZWRfZXhwciQwIiwiYmluZGluZ19leHByJDAiLCJiaW5kaW5nX2V4cHIiLCJxdW90ZWRfZXhwciIsImJpbmRpbmciLCJta19hdHRyX25vbG9jIiwiaGlkZV9hdHRyaWJ1dGUiLCJmb2N1c19hdHRyaWJ1dGUiLCJoaWRlX3BhdHRlcm4iLCJmb2N1c19wYXR0ZXJuIiwiaGlkZV9leHByZXNzaW9uIiwiZm9jdXNfZXhwcmVzc2lvbiIsImVtcHR5IiwicmFuZ2VzIiwibm9kZV9sb2MiLCJub2RlX25hbWUiLCJ4X2xvYyIsInhfbmFtZSIsInAyJDAiLCJwMSQwIiwiaW5zZXJ0IiwiYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQiLCJmaWxlIiwic2FtZV9maWxlX3NvX2ZhciIsInNob3VsZF9pZ25vcmUiLCJvcmlnX2ZuYW1lIiwiZXh0cmFjdF9jb25zdHJhaW50IiwiZG9fY2hlY2siLCJjaGlsZHJlbnNfbG9jcyIsInNpYmxpbmdzX2xvY3MiLCJtYXhfcG9zJDAiLCJtaW5fcG9zJDAiLCJjaGlsZF9sb2MiLCJjaGlsZF9uYW1lIiwibDIiLCJsMSIsInlzIiwieXMkMCIsInhzJDAiLCJlbmZvcmNlX2ludmFyaWFudHMiLCJvZCIsImFjYyQyIiwiYWNjJDMiLCJhY2MkNCIsImNlIiwibGFiZWxzIiwiZXhwcl9vIiwiY3RlIiwib3BuIiwiZV9sb2MiLCJzaWJsaW5nc19sb2MiLCJ0ZGVjbCIsImNoaWxkc19sb2NzIiwiYXR0cnNfbG9jcyIsIm91dG1vc3RfbG9jIiwiaW5pdGlhbF9yZXMkMCIsInJlcyQxIiwiaW5pdGlhbF9yZXMiLCJyZXMkMCIsImN0cCIsInNpYmxpbmdzIiwiZXhlX25hbWUiLCJhZGRfYXJnIiwic3BlYyIsImRvYyIsImxvY19mbmFtZSIsInBlcmZvcm1fY2hlY2tzIiwicGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyIsInBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIiwiZGVidWdfYXR0cmlidXRlX2Ryb3AiLCJhcHBseV9saXN0IiwicHJlcHJvY2Vzc29yIiwibm9fbWVyZ2UiLCJyZXF1ZXN0X3ByaW50X3Bhc3NlcyIsInJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zIiwidXNlX2NvbG9yIiwiZGlmZl9jb21tYW5kIiwicHJldHR5Iiwib3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIiwiY29ycmVjdGVkX3N1ZmZpeCIsImdldF9kZWZhdWx0X3BhdGgiLCJmbmFtZSQwIiwiZ2V0X2RlZmF1bHRfcGF0aF9zdHIiLCJnZXRfZGVmYXVsdF9wYXRoX3NpZyIsIm9mX3N0cmluZyIsImdpdmVuX3Rocm91Z2hfY2xpIiwic2V0IiwiaGFuZGxlcnMiLCJhZGRfaGFuZGxlciIsImFkZF9zaW1wbGVfaGFuZGxlciIsImFja25vd2xlZGdlX2Nvb2tpZXMiLCJwb3N0X2hhbmRsZXJzIiwiYWRkX3Bvc3RfaGFuZGxlciIsImNhbGxfcG9zdF9oYW5kbGVycyIsInRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtYXRpb24kMCIsImhhc19uYW1lIiwicHJpbnRfY2FsbGVyX2lkIiwiY2FsbGVyX2lkIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24iLCJlbmNsb3NlX2ltcGwiLCJlbmNsb3NlX2ludGYiLCJpbXBsIiwiaW50ZiIsImxpbnRfaW1wbCIsImxpbnRfaW50ZiIsInByZXByb2Nlc3NfaW1wbCIsInByZXByb2Nlc3NfaW50ZiIsImluc3RydW1lbnQiLCJzdGgkMSIsImFsaWFzZXMiLCJydWxlcyQwIiwiaW1wbCQwIiwiaW50ZiQwIiwicHJlcHJvY2Vzc19pbXBsJDAiLCJwcmVwcm9jZXNzX2ludGYkMCIsImN0JDAiLCJsb2Nfb2ZfbGlzdCIsImwkMiIsImZpcnN0IiwibWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMiLCJleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciIsImdlbl9oZWFkZXJfYW5kX2Zvb3RlciIsIndob2xlX2xvYyIsImZvb3RlciIsImhlYWRlciIsImxvY19oZWFkZXIiLCJsb2NfZm9vdGVyIiwibWFwX2ltcGwiLCJzdF93aXRoX2F0dHJzIiwibWFwX2ludGYiLCJzZ193aXRoX2F0dHJzIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfIiwiYWRkX2N0eHRfYXJnIiwicmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24kMCIsImxpbnRfaW1wbCQwIiwibGludF9pbnRmJDAiLCJlbmNsb3NlX2ltcGwkMCIsImVuY2xvc2VfaW50ZiQwIiwicmVnaXN0ZXJfY29kZV90cmFuc2Zvcm1hdGlvbiIsInJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nXyQwIiwiZ2V0X3dob2xlX2FzdF9wYXNzZXMiLCJjdHMiLCJhZnRfaSIsImJlZl9pIiwicmVkdWNlZF90IiwiaW5zdHIiLCJ0cmFuc2YiLCJ0cmFuc2YkMCIsInRyYW5zZm9ybXMiLCJhZnRlcl9pbnN0cnMiLCJiZWZvcmVfaW5zdHJzIiwicHJlcHJvY2VzcyIsImxpbnRlcnMiLCJnZXRfZW5jbG9zZXJzIiwiaW1wbF9lbmNsb3NlcnMiLCJpbnRmX2VuY2xvc2VycyIsIm1lcmdlX2VuY2xvc2VyIiwiZW5jbG9zZXJzIiwiZm9vdGVycyIsImhlYWRlcnMiLCJoZWFkZXJzJDAiLCJmb290ZXJzJDAiLCJhcHBseV90cmFuc2Zvcm1zIiwibGludF9maWVsZCIsImRyb3BwZWRfc29fZmFyIiwibGludF9lcnJvcnMiLCJvbGRfZHJvcHBlZCIsImxpbnRfZXJyb3JzJDAiLCJlcnJvcnMkMSIsIm1vcmVfZXJyb3JzIiwibmV3X2Ryb3BwZWQiLCJwcmludF9kaWZmIiwid2hhdCIsImRpZmYiLCJkcm9wcGVkIiwiZXJyb3JfdG9fZXh0ZW5zaW9uIiwiZXh0JDAiLCJleG5fdG9fZXh0ZW5zaW9uIiwic29ydF9lcnJvcnNfYnlfbG9jIiwiZXJyb3IkMCIsIm1hcF9zdHJ1Y3R1cmVfZ2VuIiwid2l0aF9lcnJvcnMiLCJzb3J0ZWQiLCJzdCQxIiwidW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzIiwidW51c2VkX2V4dGVuc2lvbl9lcnJvcnMiLCJub3Rfc2Vlbl9lcnJvcnMiLCJtYXBfc2lnbmF0dXJlX2dlbiIsInNnJDEiLCJtYXBfc2lnbmF0dXJlIiwidmVyc2lvbmVkX2Vycm9yZiIsImlucHV0X2ZpbGVfbmFtZSIsInJlbW92ZV9ub19lcnJvciIsIm5ld19mbiIsIm9sZF9mbiIsInJlbG9jYXRlX21hcHBlciIsInNldF9pbnB1dF9uYW1lIiwiZXh0cmFjdF9jb29raWVzIiwicHJlZml4JDEiLCJwcmVmaXgkMiIsImNvcnJlY3Rpb25zIiwiYWRkX3RvX2xpc3QiLCJyZWdpc3Rlcl9jb3JyZWN0aW9uIiwicHJvY2Vzc19maWxlX2hvb2tzIiwicmVnaXN0ZXJfcHJvY2Vzc19maWxlX2hvb2siLCJhbGwkMCIsInByb2Nlc3NfYXN0Iiwib3V0cHV0X21vZGUiLCJzZXRfaW5wdXQiLCJzZXRfa2luZCIsInNldF9vdXRwdXRfbW9kZSIsIm1vZGUiLCJtYXRjaCIsImFyZ19vZl9vdXRwdXRfbW9kZSIsInBhcnNlX2FwcGx5X2xpc3QiLCJtYXNrIiwiaGFuZGxlX2FwcGx5IiwiaGFuZGxlX2RvbnRfYXBwbHkiLCJpbnRlcnByZXRfbWFzayIsInNlbGVjdGVkX3RyYW5zZm9ybV9uYW1lIiwiaXNfY2FuZGlkYXRlIiwibmFtZXMkMCIsImlzX3NlbGVjdGVkIiwic2V0X2Nvb2tpZSIsInNoYXJlZF9hcmdzIiwiYXNfcHAiLCJzdGFuZGFsb25lX2FyZ3MiLCJnZXRfYXJncyIsInN0YW5kYWxvbmVfYXJncyQwIiwic3RhbmRhbG9uZV9tYWluIiwidXNhZ2UiLCJyZWxvY2F0ZSIsIm91dHB1dCQwIiwiZW1iZWRfZXJyb3JzJDAiLCJvdXRwdXRfbW9kZSQwIiwicmVwbGFjZW1lbnRzIiwiaG9vayQwIiwiZXhwZWN0X21pc21hdGNoX2hhbmRsZXIkMCIsImFzdF9pbnB1dF9uYW1lIiwiYXN0X2tpbmQiLCJmYWxsX2JhY2tfdmVyc2lvbiIsInVua25vd25fbWFnaWMiLCJmYWxsX2JhY2tfdmVyc2lvbiQwIiwidG1wZmlsZSIsImZhaWxlZF9jb21tYW5kIiwicHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQiLCJpbnB1dF9mbmFtZSIsImlucHV0X3ZlcnNpb24kMCIsImlucHV0X3ZlcnNpb24kMSIsImlucHV0X3ZlcnNpb24kMiIsIm1ldGFkYXRhIiwiaW5wdXRfY29udGVudHMiLCJ0ZXN0IiwibWFnaWNfbnVtYmVyIiwiY29ycmVjdGVkIiwiY29ycmVjdGlvbnMkMCIsIm1pc21hdGNoZXNfZm91bmQiLCJudWxsX2FzdCIsInBhcnNlX2lucHV0IiwicGFzc2VkX2luX2FyZ3MiLCJ2YWxpZF9hcmdzIiwiaW5jb3JyZWN0X2lucHV0X21zZyIsIm1zZyQwIiwicnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIiwiZmxhZ3NfYW5kX3Byb2dfbmFtZSIsImlucHV0X2ZuIiwib3V0cHV0X2ZuIiwicHJvZ19uYW1lX2FuZF9mbGFncyIsImFzdCQ0IiwiYXN0JDMiLCJzdGFuZGFsb25lIiwiYXJndiIsInJ1bl9hc19wcHhfcmV3cml0ZXIiLCJwcmV0dHkkMCIsImVuYWJsZV9jaGVja3MiLCJlbmFibGVfbG9jYXRpb25fY2hlY2siLCJkaXNhYmxlX2xvY2F0aW9uX2NoZWNrIiwibWFwX3N0cnVjdHVyZSIsInZhciQwIiwidmFyc19vZiIsImlnbiIsImFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMiLCJmcCIsIm1zIiwiYmluZHNfbW9kdWxlX25hbWVzIiwid2FybmluZ3MiLCJkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmkiLCJrZWVwX3czMl9pbXBsIiwia2VlcF93MzJfaW50ZiIsImtlZXBfdzMyX3NwZWMiLCJjb252X3czMl9zcGVjIiwia2VlcF93MzJfaW1wbCQwIiwia2VlcF93NjBfaW1wbCIsImtlZXBfdzYwX2ludGYiLCJrZWVwX3c2MF9zcGVjIiwiYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MiLCJhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyQwIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsImZsYWciLCJzeW1ib2wkNCIsImlnbm9yZSIsImdlbiIsImRlcHMiLCJ1bnVzZWRfY29kZV93YXJuaW5ncyIsImFyZ19uYW1lcyIsIm1ha2Vfbm9hcmciLCJtYWtlX25vYXJnJDAiLCJhcHBseSQwIiwicGFyYW0iLCJhcHBseV9hbGwiLCJlbnRyeSIsImdlbmVyYXRvcnMiLCJleHRfdG9faXRlbSIsImVtcHR5X2xhYmVsX2Vycm9yIiwiZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yIiwiYWNjZXB0ZWRfYXJncyIsInNwZWxsY2hlY2tfbXNnIiwidW5hY2NlcHRlZF9hcmd1bWVudCIsImxlcnIiLCJsZXJyJDAiLCJzdHJfdHlwZV9kZWNsIiwic3RyX3R5cGVfZXh0Iiwic3RyX2V4Y2VwdGlvbiIsInN0cl9tb2R1bGVfdHlwZV9kZWNsIiwic2lnX3R5cGVfZGVjbCIsInNpZ190eXBlX2V4dCIsInNpZ19leGNlcHRpb24iLCJzaWdfbW9kdWxlX3R5cGVfZGVjbCIsInJlc29sdmVfYWN0dWFsX2Rlcml2ZXJzIiwiY29sbGVjdGVkIiwiZHJ2IiwiYWxpYXMiLCJyZXNvbHZlX2ludGVybmFsIiwiZyIsIm5vdF9zdXBwb3J0ZWQiLCJyZXNvbHZlX2FsbCIsImRlcml2ZXJzIiwiZGVyaXZlcnNfYW5kX2FyZ3NfZXJyb3JzIiwiZGVyaXZlcnNfYW5kX2FyZ3MiLCJzZWVuIiwibmFtZWRfZ2VuZXJhdG9ycyIsImFjdHVhbF9kZXJpdmVyX25hbWUiLCJkdXBfZXJyb3IiLCJkZXAiLCJkZXBfbmFtZSIsImxfZXJyIiwiZGVwX2Vycm9ycyIsImFkZCIsImFjdHVhbF9kZXJpdmVyIiwiZXh0ZW5zaW9uJDAiLCJhZGRfYWxpYXMiLCJzZXQkMCIsInBhcnNlX2FyZ3VtZW50cyIsIm1rX2Rlcml2aW5nX2F0dHIiLCJnZW5lcmF0b3JfbmFtZSIsImdlbmVyYXRvciIsImRpc2FibGVfd2FybmluZ3NfYXR0cmlidXRlIiwid2FybmluZyIsImlubGluZV9kb2NfYXR0ciIsIndyYXBfc3RyIiwiaGlkZSIsInVudXNlZF9jb2RlX3dhcm5pbmdzJDAiLCJ3YXJuaW5ncyQwIiwid2FybmluZ3MkMiIsIndhcm5pbmdzJDEiLCJ3cmFwIiwicGluY2xfYXR0cmlidXRlcyIsIndyYXBfc2lnIiwibWVyZ2VfZ2VuZXJhdG9ycyIsIm1lcmdlX2Rlcml2ZWQiLCJsaXN0cyIsImRlcml2ZWQiLCJvdGhlciIsImV4cGFuZF9zdHJfdHlwZV9kZWNscyIsImxfZXJyJDAiLCJleHBhbmRfc2lnX3R5cGVfZGVjbHMiLCJleHBhbmRfc3RyX21vZHVsZV90eXBlX2RlY2wiLCJnZW5lcmF0b3JzJDAiLCJleHBhbmRfc2lnX21vZHVsZV90eXBlX2RlY2wiLCJleHBhbmRfc3RyX2V4Y2VwdGlvbiIsImV4cGFuZF9zaWdfZXhjZXB0aW9uIiwiZXhwYW5kX3N0cl90eXBlX2V4dCIsImV4cGFuZF9zaWdfdHlwZV9leHQiLCJleHBhbmRfc2lnIiwiZXhwYW5kX3N0ciIsInJ1bGVfc3RyIiwicnVsZV9zaWciLCJydWxlX3N0cl9leHBlY3QiLCJydWxlX3NpZ19leHBlY3QiLCJkZXJpdmluZ19hdHRyIiwiZGVyaXZpbmdfYXR0cl9leHBlY3QiLCJydWxlc190eXBlX2RlY2wiLCJydWxlc190eXBlX2V4dCIsInJ1bGVzX2V4Y2VwdGlvbiIsInJ1bGVzX21vZHVsZV90eXBlX2RlY2wiLCJtYW5nbGUiLCJhZmZpeCIsImZpeHBvaW50IiwicCQwIiwibWFuZ2xlX3R5cGVfZGVjbCIsIm1hbmdsZV9saWQiLCJ4IiwiZGVmYXVsdCQwIiwiZHJvcF9kZWZhdWx0IiwiZHJvcF9kZWZhdWx0X2VxdWFsIiwiZHJvcF9kZWZhdWx0X2NvbXBhcmUiLCJkcm9wX2RlZmF1bHRfeW9qc29uIiwiZHJvcF9pZiIsIm9wYXF1ZSIsIm9wdGlvbiIsImFsbG93X2V4dHJhX2ZpZWxkc190ZCIsImFsbG93X2V4dHJhX2ZpZWxkc19jZCIsInlvanNvbl9rZXkiLCJ5b2pzb25fdmFyaWFudF9uYW1lIiwieW9qc29uX3BvbHltb3JwaGljX3ZhcmlhbnRfbmFtIiwiaW52YWxpZF9hdHRyaWJ1dGUiLCJsb2MiLCJhdHRyIiwiZGVzY3JpcHRpb24iLCJmYWlsX2lmX2FsbG93X2V4dHJhX2ZpZWxkX2NkIiwiZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCIsImNkcyIsImNkIiwiZ2V0X2F0dHJpYnV0ZSIsImxkIiwiZiIsImNyZWF0ZSIsImdldHRlcnMiLCJjb21tb25fZ2V0dGVycyIsInR5IiwiYXR0cmlidXRlcyIsInYiLCJjcmVhdGUkMCIsImNyZWF0ZSQxIiwiZSIsImxhYmVsIiwibmFtZV9vdmVycmlkZSIsIm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIiwidCIsIm5hbWUiLCJwcmVmaXgiLCJzeW1ib2wiLCJsaHMiLCJyaHMiLCJwZXhwX21hdGNoIiwiZXhwciIsImNhc2VzIiwicGNfcmhzIiwicGNfbGhzIiwiaWRlbnQiLCJpZGVudCQwIiwidW5yb2xsIiwibWFwX3RtcF92YXJzIiwidHMiLCJpIiwidmFycyIsInZhciQwIiwiYmluZGluZ3MiLCJpZGVudGl0eSIsImFkZF91bml2ZXJzYWxseV9ib3VuZCIsIm5hbWUkMCIsIm1hcCIsInNlbGZfMSIsImVycm9yIiwiYWRkX3R5cGV2YXJzIiwiYXV4IiwidHBfbmFtZSIsInRwX2luX3JldHVybl90eXBlIiwiZGF0YSIsInNlbGZfMiIsInJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvciIsInJpZ2lkX3R5cGVfdmFyIiwidHlwZV9uYW1lIiwic2VsZl80IiwiYWNjIiwieCQwIiwidHZhcnMiLCJjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIiwidGQiLCJ0eXAiLCJ0cHMiLCJmdW5jX25hbWUiLCJib2R5IiwiaGFzX3ZhcnMiLCJwYXQiLCJ0eHQiLCJ2YXJzJDAiLCJwYXQkMCIsInVzZV9yaWdpZF92YXJpYWJsZXMiLCJzZWxmXzMiLCJkZXNjIiwicyIsInB0eXBfZGVzYyIsInRwIiwiYm9keSQwIiwicmVhbGx5X3JlY3Vyc2l2ZSIsInJlY19mbGFnIiwidGRzIiwic2VsZl81IiwiY3R5cGUiLCJ0eXBlX29mX3lvanNvbl9vZiIsIm1rX3R5cGUiLCJzaWdfdHlwZV9kZWNsIiwidHlwZV9vZl9vZl95b2pzb24iLCJta190eXBlJDAiLCJzaWdfdHlwZV9kZWNsJDAiLCJ3aXRoX3BvbHkiLCJvZl95b2pzb25fdHlwZSIsIm9mX3lvanNvbl9pdGVtIiwieW9qc29uX29mX3R5cGVfY29uc3RyIiwiaWQiLCJhcmdzIiwieW9qc29uX29mX3R5cGUiLCJ0eXBldmFyX2hhbmRsaW5nIiwidHlwJDAiLCJsb2MkMCIsInBhcm0iLCJyZW5hbWluZyIsInZhbHVlIiwicGFybSQwIiwidHlwJDEiLCJmcHMiLCJldmFycyIsInB2YXJzIiwiaW5fZXhwciIsImV4cHIkMCIsInJvd19maWVsZHMiLCJpdGVtIiwicm93IiwiY2FsbCIsImNuc3RyIiwibGFiZWwkMCIsImNuc3RyX2V4cHIiLCJ5b2pzb25fb2ZfYXJncyIsInBhdHRzIiwicGF0dCQwIiwicGF0dCIsInBvbHlfdHAiLCJwYXJtcyIsImxvYyQxIiwicmVuYW1pbmckMCIsIm1rX2JpbmRpbmciLCJiaW5kaW5ncyQwIiwicmVuYW1pbmckMSIsImZ1bl9leHByIiwibWF0Y2hpbmdzIiwibWtfcmVjX3BhdHQiLCJwIiwieW9qc29uX29mX3JlY29yZF9maWVsZCIsInlvanNvbl9vZiIsImlzX2VtcHR5X2V4cHIiLCJrZXkiLCJleHAiLCJjbnZfZXhwciIsInlvanNvbl9vZiQwIiwiY252X2V4cHIkMCIsInZfbmFtZSIsImlzX2VtcHR5X2V4cHIkMCIsImlzX2VtcHR5X2V4cHIkMSIsImRpc2FsbG93X3R5cGVfdmFyaWFibGVzX2FuZF9yZSIsInR5cGVzX2JlaW5nX2RlZmluZWQiLCJ3aHkiLCJzZWxmXzYiLCJpdGVyIiwiZGlzYWxsb3dfdmFyaWFibGVzIiwiZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzIiwidHlwZXNfYmVpbmdfZGVmaW5lZCQwIiwic2VsZl83IiwiaXRlciQwIiwieW9qc29uX29mX2xhYmVsX2RlY2xhcmF0aW9uX2xpIiwiZmxkcyIsIndyYXBfZXhwciIsImNvbGwiLCJ0ZXN0Iiwidm5hbWUiLCJibmRzIiwidGVzdCQwIiwidHAkMCIsInRwJDIiLCJwYXR0JDEiLCJ2bmFtZSQwIiwiaG93IiwidHAkMSIsImlzX2VtcHR5IiwieW9qc29uX2V4cHIiLCJpbml0X2V4cHIiLCJ5b2pzb25fb2ZfdGRzIiwicmVjX2ZsYWckMCIsInRkJDAiLCJ0cHMkMCIsInBhcmFtcyIsImNvbnN0cl9saWQiLCJjb25zdHJfbmFtZSIsImxkcyIsImNuc3RyX2V4cHIkMCIsInBjZF9hcmdzIiwiaXNfcHJpdmF0ZV9hbGlhcyIsInR5X3NyYyIsIm1hbmlmZXN0IiwibWFuaWZlc3QkMCIsInR5X2RzdCIsImNvZXJjaW9uIiwiZnVuX2V4cHIkMCIsIm1hdGNoaW5ncyQwIiwiYm9keSQxIiwieW9qc29uX2ZpZWxkc19vZl90ZCIsInlvanNvbl9maWVsZHNfb2ZfdGRzIiwiaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IiwibWF0Y2hfbGFzdCIsIm1hdGNoZXMiLCJta192YXJpYW50X290aGVyX21hdGNoZXMiLCJyZXZfZWxzIiwiY29sbF9zdHJ1Y3RzIiwiZXhjX25vX3ZhcmlhbnRfbWF0Y2giLCJmdWxsX3R5cGUiLCJvcHQiLCJzdGgiLCJpbnRlcm5hbCIsIm4iLCJhcmciLCJhcmdzJDAiLCJzJDAiLCJmdWxsX3R5cGUkMCIsImZ1bGxfdHlwZSQxIiwiaXNfY29udGFpbmVkIiwiZnVsbF90eXBlJDIiLCJ0b3BfbWF0Y2giLCJoYW5kbGVfdmFyaWFudF90YWciLCJyZXN0IiwiaW5oIiwibG9vcCIsImgiLCJyZnRhZ19tYXRjaGVzIiwiaW5oJDAiLCJoYW5kbGVfdmFyaWFudF9pbmgiLCJvdGhlcl9tYXRjaGVzIiwiZnVuY19leHByIiwiYXBwIiwibWF0Y2hfZXhjIiwibmV3X290aGVyX21hdGNoZXMiLCJta19jbnN0cl9hcmdzX21hdGNoIiwiaXNfdmFyaWFudCIsImNuc3RyX2xhYmVsIiwidmFyX2V4cHIiLCJ2YXJzX2V4cHIiLCJnb29kX2FyZ19tYXRjaCIsInJvd19maWVsZF9saXN0Iiwicm93X2ZpZWxkIiwic2luaHMiLCJhaW5ocyIsInN0cnVjdHMiLCJhdG9tcyIsImlpbmgiLCJ0cGwiLCJyZXZfc3RydWN0c19pbmhzIiwicmV2X2F0b21zX2luaHMiLCJyZXZfc3RydWN0cyIsInJldl9hdG9tcyIsImhhc19zdHJ1Y3RzX3JlZiIsImNvbGwkMCIsIm5ld19tYXRjaCIsIm90aGVyX21hdGNoZXMkMCIsIm1hdGNoX2xhc3QkMCIsIm1hdGNoX3N0cnVjdHNfaW5ocyIsImhhc19zdHJ1Y3RzIiwibWF0Y2hfc3RydWN0IiwibWF5YmVfeW9qc29uX2FyZ3NfcGF0dCIsIm1hdGNoX2F0b21zX2luaHMiLCJta19leHRyYWN0X2ZpZWxkcyIsImFsbG93X2V4dHJhX2ZpZWxkcyIsImhhbmRsZV9leHRyYSIsImluaXRzIiwibW9yZV9mbGRzIiwibm0iLCJpbml0cyQwIiwidW5yb2xsZWQiLCJta19jbnZfZmllbGRzIiwiaGFzX3BvbHkiLCJtY19maWVsZHNfd2l0aF9hcmdzIiwiZXhwcl9yZWZfaW5pdHMiLCJpbml0IiwiZmllbGRfcmVmcyIsImhhc19ub25vcHRfZmllbGRzIiwiYWNjJDAiLCJnb29kX3BhdHRzIiwiYmlfbHN0IiwicmVzX3RwbHMiLCJmbGQiLCJuZXdfZ29vZF9wYXR0cyIsIm5ld19iaV9sc3QiLCJuZXdfZ29vZF9wYXR0cyQwIiwibmV3X2JpX2xzdCQwIiwiYWNjJDEiLCJnb29kX3BhdHRzJDAiLCJiaV9sc3QkMCIsInJlc190cGxzJDAiLCJjbnZ0IiwibWF0Y2hfZ29vZF9leHBycyIsIm1hdGNoX2dvb2RfZXhwciQwIiwibWF0Y2hfZ29vZF9leHByIiwiY252dCQwIiwicmVzX3BhdHQiLCJyZXNfZXhwciIsImxhYmVsX2RlY2xhcmF0aW9uX2xpc3Rfb2ZfeW9qcyIsImNudl9maWVsZHMiLCJwYXRzIiwicmVjb3JkX2RlZiIsInRkX29mX3lvanNvbiIsInBvbHkiLCJwYXRoIiwiaXNfcHJpdmF0ZSIsImNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvbiIsImFsdHMkMCIsImFsdHMiLCJjbnN0cl9uYW1lIiwiZmllbGRzIiwibGJscyIsImV4dGVybmFsX25hbWUiLCJpbnRlcm5hbF9uYW1lIiwiYXJnX2V4cHJzIiwiYXJnX3BhdHRzIiwiZnVsbF90eXBlX25hbWUiLCJiaW5kX3RwX2xvY19pbiIsImludGVybmFsX2Z1bl9ib2R5Iiwibm9fdmFyaWFudF9tYXRjaF9tYyIsImludGVybmFsX2V4cHIiLCJpbnRlcm5hbF9jYWxsIiwidHJ5X3dpdGgiLCJib2R5X2JlbG93X2xhbWJkYXMiLCJuZWVkX3RwX2xvYyIsImJvZHlfd2l0aF9sYW1iZGFzIiwiZXh0ZXJuYWxfZnVuX2JvZHkiLCJpbnRlcm5hbF9iaW5kaW5ncyIsImV4dGVybmFsX2JpbmRpbmciLCJ0ZHNfb2ZfeW9qc29uIiwic2luZ2xldG9uIiwiZXh0ZXJuYWxzIiwiaW50ZXJuYWxzIiwidHlwZV9leHRlbnNpb24iLCJjb3JlX3R5cGUiLCJ0eXBlX2V4dGVuc2lvbiQwIiwiY29yZV90eXBlJDAiLCJjdHlwIiwiZnAiLCJzaWdfdHlwZV9kZWNsJDEiLCJkZWNscyIsImluY2x1ZGVfaW5mb3MiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9jb25zdHJ1Y3RvciIsIm9iamVjdF9rZXlzIiwibyIsImFycmF5X2NvbnN0cnVjdG9yIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJkYXRlX2NvbnN0ciIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJleG5fd2l0aF9qc19iYWNrdHJhY2UiLCJuYW1lIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwiZSIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5cyIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidDEzIiwiY2FzdCIsInQxNCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsIm5vX2hhbmRsZXIiLCJoYW5kbGVyIiwicmVzIiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwibWFrZSIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsInQyOCIsInR5cCIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImgiLCJiIiwiZXYiLCJjYWxsYmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJjb25zdHIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheSIsInVpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJ2IiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiYmxvYl9jb25zdHIiLCJmaWx0ZXJfbWFwIiwicSIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwYXJhbSIsInByZSIsInNjcmlwdCIsInNlbGVjdCQwIiwic3R5bGUiLCJ0YWJsZSIsInRib2R5IiwidGQiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpdGxlIiwidHIiLCJ1bCIsImF1ZGlvIiwidmlkZW8iLCJ1bnNhZmVDb2VyY2VFdmVudCIsIm1vdXNlRXZlbnQiLCJrZXlib2FyZEV2ZW50Iiwid2hlZWxFdmVudCIsIm1vdXNlU2Nyb2xsRXZlbnQiLCJwb3BTdGF0ZUV2ZW50IiwibWVzc2FnZUV2ZW50IiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfY29kZSIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wiLCJvZl9ldmVudCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInJlbWFpbiIsInN0ZXAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsImZpbGUiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ0aW1lb3V0Iiwid29ya2VyIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJtc2ciLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsImF0dHJpYnMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJzZWFyY2giLCJyZXNfcHJlIiwibWF0Y2hlZF9zdHJpbmciLCJyIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGxfcmUiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGVfcmUiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiaW5kZXgiLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX3JlIiwiZmlsZV9yZSIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJub2RlIiwiYm94Iiwib2JzIiwicGVyZm9ybWFuY2VPYnNlcnZlciIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiayIsInJlbW92ZSIsImZpbmQiLCJqc29uIiwicmV2aXZlciIsImlucHV0X3Jldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dF9yZXZpdmVyIiwib3V0cHV0Iiwic3RyaW5nX29mX25hbWUiLCJuYW1lX29mX3N0cmluZyIsInJnYl9vZl9uYW1lIiwicmdiIiwiaHNsIiwic3RyaW5nX29mX3QiLCJiJDAiLCJnJDAiLCJyJDAiLCJiJDEiLCJnJDEiLCJyJDEiLCJiJDIiLCJnJDIiLCJyJDIiLCJhJDEiLCJoJDAiLCJoZXhfb2ZfcmdiIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwiaW5fcmFuZ2UiLCJqc190X29mX2pzX3N0cmluZyIsInJnYl9yZSIsInJnYl9wY3RfcmUiLCJyZ2JhX3JlIiwicmdiYV9wY3RfcmUiLCJoc2xfcmUiLCJoc2xhX3JlIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwieG1sbnMiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNldCIsImNyZWF0ZVN0b3AiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJ0OCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInN3aXRjaCQwIiwidGV4dEVsZW1lbnQiLCJ0ZXh0cGF0aCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3AiLCJpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwidG9fYXJyYXlmIiwiZiIsImEiLCJvZl9hcnJheWYiLCJ0b19saXN0Iiwib2ZfbGlzdCIsImwiLCJ0b19saXN0ZiIsIm9mX2xpc3RmIiwib3B0ZGVmIiwieCIsInRvX29wdGRlZiIsIngkMCIsInVub3B0ZGVmX2YiLCJkZWYiLCJ1bm9wdGRlZiIsImNvbnZkZWYiLCJ0b19vcHQiLCJvcHQiLCJjb252b3B0IiwianNfbG9nIiwibyIsImxvZ19zdHIiLCJzIiwibG9nIiwiZm10IiwiZXJyb3Jfb2Zfc3RyaW5nIiwiY2F0Y2hfZXhuIiwiZXhuIiwiZSIsIm51bGwkMSIsInVuZGVmaW5lZCQxIiwiaXNfbm9uZSIsIm1hcCIsInN0aCIsIm5vbmUiLCJiaW5kIiwidGVzdCIsIml0ZXIiLCJjYXNlJDAiLCJnIiwiZ2V0Iiwib3B0aW9uIiwidG9fb3B0aW9uIiwiYW9wdCIsInRvX2FvcHQiLCJjaG9vc2VfY2FzZV9vcHQiLCJ0IiwiaCIsImNob29zZV9jYXNlIiwib2JqZWN0X2NzIiwiYXNzaWduIiwibzEiLCJvMiIsImFzc2lnbl9saXN0IiwicmVtb3ZlX3VuZGVmaW5lZCIsImtleXMiLCJrIiwib2JqIiwiY3JlYXRlIiwiYWRkIiwidiIsImFkZF9saXN0IiwiYWRkX2xpc3RmIiwibWFrZSIsIm1ha2VmIiwicmVtb3ZlIiwiZmluZCIsIml0ZW1zIiwiaXRlbXNmIiwibGVuZ3RoIiwibWVyZ2UiLCJwcm9taXNlIiwiY3MiLCJqdGhlbjAiLCJlcnJvciIsInByb20iLCJwIiwiZXhuJDAiLCJlZiIsImVycm9yJDAiLCJqdGhlbiIsImp0aGVuMF9vcHQiLCJqdGhlbl9vcHQiLCJydGhlbiIsImxvZzIiLCJsb2czIiwibzMiLCJsb2dfc3RyMiIsInMxIiwiczIiLCJsb2dfc3RyMyIsInMzIiwiZGVidWciLCJkZWJ1ZzIiLCJkZWJ1ZzMiLCJkZWJ1Z19zdHIiLCJkZWJ1Z19zdHIyIiwiZGVidWdfc3RyMyIsIndhcm4iLCJ3YXJuMiIsIndhcm4zIiwid2Fybl9zdHIiLCJ3YXJuX3N0cjIiLCJ3YXJuX3N0cjMiLCJlcnJvcjIiLCJlcnJvcjMiLCJlcnJvcl9zdHIiLCJlcnJvcl9zdHIyIiwiZXJyb3Jfc3RyMyIsImJpZ0ludCIsIm9mX3N0cmluZyIsIm9mX2ludCIsImkiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZSIsIm9mX2Zsb2F0IiwidG9fbG9jYWxlX3N0cmluZyIsIm9wdGlvbnMiLCJuIiwidG9fc3RyaW5nIiwic2V0SW5uZXJIdG1sIiwic2V0VGV4dCIsImFkZENsYXNzIiwiYWRkQ2xhc3NlcyIsImVsdCIsInJlbW92ZUNsYXNzIiwiY29udGFpbnNDbGFzcyIsInNldEF0dHJpYnV0ZSIsImtleSIsInZhbHVlIiwicmVtb3ZlQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlIiwic2V0Q1NTIiwic3R5bGVzIiwic3R5bGVzJDAiLCJhZGRDU1MiLCJvbGRfc3R5bGVzIiwic3R5bGVzJDEiLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGRyZW4iLCJwYXJlbnQiLCJjaGlsZHJlbiIsInJlbW92ZUNoaWxkaSIsImNoaWxkIiwicmVtb3ZlQ2hpbGRyZW4iLCJyZXBsYWNlQ2hpbGRyZW4iLCJieV9pZCIsImFkZExpc3RlbmVyIiwiY2FwdHVyZSIsIm9uY2UiLCJwYXNzaXZlIiwiZXYiLCJjYXB0dXJlJDAiLCJvbmNlJDAiLCJwYXNzaXZlJDAiLCJ0ZXh0IiwiY2xhc3NlcyIsInN0aCQwIiwic3RoJDEiLCJsaXN0ZW4iLCJzdGgkMiIsImF0dHIiLCJidXR0b24iLCJkaXYiLCJzcGFuIiwiZm9ybSIsInNlbGVjdCIsImlucHV0IiwiaWZyYW1lIiwibGFiZWwiLCJ1bCIsImxpIiwiaW1nIiwic2NyaXB0IiwidGFibGUiLCJ0ciIsInRoIiwidGQiLCJlbmNhcHNlIiwic3RyaW5nc190b19hcnJheSIsInN0cmluZ3NfdG9fb2JqZWN0Iiwic3RyX29mX21vZGUiLCJzdHJfb2ZfZGlyZWN0aW9uIiwiaURCS2V5UmFuZ2UiLCJpbmRleGVkREIiLCJyZXN1bHQiLCJ3cmFwIiwiZXJyb3IiLCJjYWxsYmFjayIsInIiLCJmIiwiZSIsImV4biQwIiwiZXhuIiwid3JhcGYiLCJnIiwiZGJfdXBncmFkZV9ldmVudCIsIm9wZW5EQiIsInVwZ3JhZGUiLCJ2ZXJzaW9uIiwibmFtZSIsInUiLCJ2IiwiZGIiLCJ0cmFuc2FjdGlvbiIsImNyZWF0ZV9kYl9vcHRpb25zIiwiYXV0b19pbmNyZW1lbnQiLCJrZXlfcGF0aCIsImNyZWF0ZV9zdG9yZSIsIm9wdGlvbnMiLCJnZXRfc3RvcmUiLCJtb2RlIiwidHIiLCJjcmVhdGUiLCJzdG9yZSIsImFkZCIsImtleSIsInN0IiwieCIsInB1dCIsInJhbmdlIiwib2xvd2VyIiwib3VwcGVyIiwibG93ZXIiLCJ1cHBlciIsInVwcGVyJDEiLCJsb3dlciQwIiwidXBwZXIkMCIsImNvdW50IiwiayIsImdldCIsIm9mX2pzIiwianMiLCJqcyQwIiwiZ2V0X2FsbCIsImdldF9rZXkiLCJnZXRfYWxsX2tleXMiLCJkZWxldGUkMCIsIml0ZXIiLCJkaXJlY3Rpb24iLCJjIiwidDgwIiwiZm9sZCIsInN0YXJ0IiwiYWNjIiwiY2FsbGJhY2skMCIsInQ5NSIsIml0ZXJfa2V5cyIsInQxMTAiLCJmb2xkX2tleXMiLCJ0MTI0IiwiY2xlYXIiLCJjcmVhdGVfaW5kZXhfb3B0aW9ucyIsImxvY2FsZSIsIm11bHRpX2VudHJ5IiwidW5pcXVlIiwiY3JlYXRlX2luZGV4Iiwib3B0aW9ucyQwIiwiZGVsZXRlX2luZGV4IiwiZ2V0X2luZGV4IiwidG9fanMiLCJ0b19qcyQwIiwib2ZfanMkMCIsInRvX2pzJDEiLCJvZl9qcyQxIiwidF9zZXhwX2dyYW1tYXIiLCJleG5fc2V4cF9zdHlsZSIsIm1lc3NhZ2UiLCJwb3MiLCJ4XzAwNSIsInRhZyIsImJvZHkiLCJzIiwibWVzc2FnZSQwIiwic2V4cCIsInRlc3RfcHJlZCIsInNleHBpZmllciIsImhlcmUiLCJwcmVkaWNhdGUiLCJ0Iiwicl9kaWZmIiwic2V0X2RpZmZfZnVuY3Rpb24iLCJmIiwidGVzdF9yZXN1bHRfb3JfZXEiLCJjb21wYXJhdG9yIiwiZXF1YWwiLCJleHBlY3QkMCIsImdvdCQwIiwicGFzcyIsImdvdCIsImV4cGVjdCIsImRpZmYiLCJmcm9tIiwidG8iLCJ0ZXN0X2VxIiwidDEiLCJ0MiIsInQyJDAiLCJ0MSQwIiwidGVzdF9yZXN1bHQiLCJudWxsJDAiLCJyIiwibGlibmFtZV9yZWYiLCJzZXQiLCJzdHIiLCJ1bnNldCIsInQiLCJwb3BfZXhuIiwiY29tcGFyZSIsInQxIiwidDIiLCJnZXRfbW9kdWxlX25hbWVfb3B0IiwibGVuIiwiaSIsImkkMCIsIndpdGhfdGVzdF9zcGVjIiwidGVzdF9zcGVjIiwidiIsImFkZF9lbnZpcm9ubWVudF92YXIiLCJsaWJzX3RvX2VudHJpZXMiLCJsb29rdXBfcmV2X2xpYiIsImxpYm5hbWUiLCJsb29rdXBfbGliIiwiZm9yY2VfZHJvcCIsImdldF9tb2RlIiwiYWRkX2JlbmNoIiwibmFtZSIsImNvZGUiLCJmaWxlbmFtZSIsInR5cGVfY29udl9wYXRoIiwibGluZSIsInN0YXJ0cG9zIiwiZW5kcG9zIiwibXMiLCJlbnRyeSIsImFkZF9iZW5jaF9tb2R1bGUiLCJmIiwiZXgkMCIsImV4IiwiZW1wdHkiLCJtYWtlIiwicyIsImNvbXBhcmUiLCJsZW5ndGgiLCJ0b19iaW5hcnkiLCJvZl9iaW5hcnlfZXhuIiwidG9faGV4Iiwib2ZfaGV4X2V4biIsInN0cmluZyIsImJ5dGVzIiwic3ViYnl0ZXMiLCJwb3MiLCJsZW4iLCJlcnJvcl9zb3VyY2VfMDI2IiwiZXJyb3Jfc291cmNlXzA0MiIsImVycm9yX3NvdXJjZV8yMDYiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJ0X29mX3NleHAiLCJzZXhwX29mX3QkMCIsIm9mX3N0cmluZyQwIiwidG9fc3RyaW5nJDAiLCJjb21wYXJlIiwiZXZhbF9mYWlsIiwibG9jIiwiZm10IiwicyIsImN1c3RvbV9wcmludGZfMDAxIiwiZXF1YWxfb3B0aW9uIiwiZXF1YWwiLCJhIiwiYiIsInkiLCJ4IiwiY3JlYXRlIiwiZXEiLCJ4cyQxIiwiczIiLCJzMSIsInNvcnRlZCIsInhzJDAiLCJsYXN0X3ZhbHVlJDEiLCJsYXN0X2tleSQxIiwiYWNjIiwibGFzdF9rZXkiLCJsYXN0X3ZhbHVlIiwieHMiLCJsYXN0X3ZhbHVlJDAiLCJsYXN0X2tleSQwIiwic29ydGVkJDAiLCJtYXAiLCJ0IiwiZiIsInYiLCJrIiwidG9fbWQ1Iiwib2ZfbWQ1Iiwic2V4cF9vZl90JDEiLCJ0X29mX3NleHAkMCIsInV1aWQiLCJ1IiwiaW50JDAiLCJwYWlyIiwibGlzdCIsImwiLCJjb25zdHJ1Y3RvciIsInRfb2Zfc2V4cCQxIiwib2ZfYV8wMzkiLCJzZXhwXzA0NCIsInRhZ18wNDUiLCJzZXhwX2FyZ3NfMDQ2IiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJzZXhwX2FyZ3NfMDkwIiwiYXJnMV8wOTIiLCJhcmcwXzA5MSIsInJlczBfMDkzIiwicmVzMV8wOTQiLCJzZXhwX2FyZ3NfMDUzIiwiYXJnMV8wNTUiLCJhcmcwXzA1NCIsInJlczBfMDU2IiwicmVzMV8wNTciLCJzZXhwX2FyZ3NfMDg1IiwiYXJnMF8wODYiLCJvZl9hXzAxMCIsInJlczBfMDg3IiwiZmllbGRfc2V4cHNfMDEzIiwic29ydGVkXzAxNCIsImR1cGxpY2F0ZXNfMDE2IiwiZXh0cmFfMDE3Iiwic2V4cF8wMTIiLCJmaWVsZF9zZXhwc18wMjAiLCJmaWVsZF9uYW1lXzAxOCIsInRhaWxfMDI5IiwieF8wMzAiLCJmaWVsZF9zZXhwXzAxOSIsInNleHBfMDI1IiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczBfMDIzIiwicmVzMV8wMjQiLCJmdmFsdWVfMDI3Iiwic29ydGVkXzAxNSIsInNleHBfYXJnc18wOTciLCJhcmcxXzA5OSIsImFyZzBfMDk4IiwicmVzMF8xMDAiLCJyZXMxXzEwMSIsInNleHBfYXJnc18wNjUiLCJhcmcwXzA3MSIsInNleHBfMDcwIiwiYXJnMV8wNjciLCJhcmcwXzA2NiIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMwXzA3MiIsInNleHBfYXJnc18wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwic2V4cF9hcmdzXzEwNCIsImFyZzBfMTA1IiwicmVzMF8xMDYiLCJzZXhwX2FyZ3NfMDc1IiwiYXJnMF8wODEiLCJzZXhwXzA4MCIsImFyZzFfMDc3IiwiYXJnMF8wNzYiLCJyZXMwXzA3OCIsInJlczFfMDc5IiwicmVzMF8wODIiLCJzZXhwX29mX3QkMiIsIm9mX2FfMTA4IiwiYXJnMV8xMTAiLCJhcmcwXzEwOSIsInJlczBfMTExIiwicmVzMV8xMTIiLCJhcmcxXzExNCIsImFyZzBfMTEzIiwicmVzMF8xMTUiLCJyZXMxXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzEyMyIsImFyZzFfMTIwIiwiYXJnMF8xMTkiLCJyZXMwXzEyMSIsInJlczFfMTIyIiwicmVzMF8xMjQiLCJhcmcwXzEyOSIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4IiwicmVzMF8xMzAiLCJhcmcwXzEzMSIsIm9mX2FfMDMxIiwic29ydGVkXzAzMyIsImJuZHNfMDMyIiwiYXJnMV8wMzYiLCJhcmcwXzAzNSIsInJlczBfMDM3IiwicmVzMV8wMzgiLCJhcmdfMDM0IiwiYm5kc18wMzIkMCIsInJlczBfMTMyIiwiYXJnMV8xMzQiLCJhcmcwXzEzMyIsInJlczBfMTM1IiwicmVzMV8xMzYiLCJhcmcxXzEzOCIsImFyZzBfMTM3IiwicmVzMF8xMzkiLCJyZXMxXzE0MCIsImFyZzBfMTQxIiwicmVzMF8xNDIiLCJtYXAkMCIsIngkMCIsImwkMCIsImwkMSIsIngkMSIsImwkMiIsInQkMCIsInRvX3N0cmluZyQxIiwiZGlnZXN0X2xheWVyIiwidSQwIiwidGFibGUiLCJsJDMiLCJsJDQiLCJuIiwibiQwIiwidG9fZGlnZXN0IiwidG9fZGlnZXN0JDAiLCJ4JDIiLCJvcGFxdWUiLCJjcmVhdGUkMCIsImRlc2MiLCJ2YXIkMCIsImFwcGx5IiwiZGVmIiwicmVjdXJzZSIsInRpZCIsImdldF9wb2x5X3ZhcmlhbnQiLCJhbm5vdGF0ZSIsImJhc2V0eXBlIiwidHVwbGUiLCJwb2x5X3ZhcmlhbnQiLCJ2YXIkMSIsImFwcGx5JDAiLCJyZWN1cnNlJDAiLCJkZWZpbmUiLCJyZWNvcmQiLCJ2YXJpYW50IiwiY3JlYXRlJDEiLCJlIiwiY29tcGFyZV90MCIsImFfMTk4IiwiYl8xOTkiLCJiXzIwMSIsImFfMjAwIiwiY21wX2EiLCJhXzIwMiIsImJfMjAzIiwiYV8xNDYiLCJiXzE0OSIsImJfMTQ3IiwiYV8xNDgiLCJhXzE1MiIsImFfMTUwIiwiYl8xNTMiLCJiXzE1MSIsImFfMTU0IiwiYl8xNTUiLCJhXzE1NiIsImJfMTU3IiwiYV8xNTgiLCJiXzE1OSIsImFfMTYwIiwiYl8xNjEiLCJhXzE2MiIsImJfMTYzIiwidF8xNjUiLCJ0XzE2NCIsInRfMTY3IiwidF8xNjYiLCJhXzE2OCIsImJfMTY5IiwiYV8xNzAiLCJiXzE3MSIsInRfMTczIiwidF8xNzIiLCJ0XzE3NSIsInRfMTc0IiwiYV8xNzYiLCJiXzE3NyIsImFfMDAyIiwiYl8xNzkiLCJhXzAwNCIsImJfMDA1IiwidF8wMDciLCJ0XzAwNiIsInRfMDA5IiwidF8wMDgiLCJhXzE4MiIsImJfMTgzIiwiYV8xODYiLCJhXzE4NCIsImJfMTg3IiwiYl8xODUiLCJuJDEiLCJhXzE4OCIsImJfMTg5IiwiYV8xOTIiLCJhXzE5MCIsImJfMTkzIiwiYl8xOTEiLCJuJDIiLCJhXzE5NCIsImJfMTk1IiwiYV8xOTYiLCJiXzE5NyIsInQwX29mX3NleHAiLCJzZXhwXzIwOCIsInRhZ18yMDkiLCJzZXhwX2FyZ3NfMjEwIiwiYXJnMF8yMTEiLCJyZXMwXzIxMiIsInNleHBfb2ZfdDAiLCJhcmcwXzIxMyIsInJlczBfMjE0IiwiZXF1YWxfdDAiLCJ2YXIkMiIsImFwcGx5JDEiLCJkIiwicmVjdXJzZSQxIiwiciIsImdldF9wb2x5X3ZhcmlhbnQkMCIsImNjIiwidGFiIiwib3BhcXVlJDAiLCJ0b19kaWdlc3QkMSIsInRvX2RpZ2VzdCQyIiwiYW5ub3RhdGUkMCIsImJhc2V0eXBlJDAiLCJ0dXBsZSQwIiwicG9seV92YXJpYW50JDAiLCJ2YXIkMyIsInJlY3Vyc2UkMiIsImFwcGx5JDIiLCJkZWZpbmUkMCIsInJlY29yZCQwIiwidmFyaWFudCQwIiwiY3JlYXRlJDIiLCJleHAiLCJ0b19zdHJpbmdfaHVtIiwic2V4cF9vZl90JDMiLCJvZl9zdHJpbmckMSIsInRvX3N0cmluZyQyIiwic3ltYm9sIiwiY29tcGFyZSQxIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQ0Iiwib2Zfc3RyaW5nJDIiLCJ0b19zdHJpbmckMyIsImNvbXBhcmF0b3IiLCJjb21wYXJlJDIiLCJzZXhwX29mX3QkNSIsImNyZWF0ZSQzIiwidHJpcHMiLCJnaWQiLCJ2cyIsIm1lbWJlcnMiLCJsb29rdXAiLCJnIiwic2NoZW1lIiwiY3VzdG9tX3ByaW50Zl8yODUiLCJhbm5vdGF0ZSQxIiwidjAiLCJ2MSIsImJhc2V0eXBlJDEiLCJyZWNvcmQkMSIsInZhcmlhbnQkMSIsInR1cGxlJDEiLCJyZWNfYXBwIiwidG9wX2FwcCIsInYyIiwic2V4cF9vZl90JDYiLCJhcmcxXzI4NyIsImFyZzBfMjg2IiwicmVzMF8yODgiLCJyZXMxXzI4OSIsImFyZzFfMjkxIiwiYXJnMF8yOTAiLCJyZXMwXzI5MiIsInJlczFfMjkzIiwiYXJnMF8yOTgiLCJhcmcxXzI5NSIsImFyZzBfMjk0IiwicmVzMF8yOTYiLCJyZXMxXzI5NyIsInJlczBfMjk5IiwiYXJnMF8zMDQiLCJhcmcxXzMwMSIsImFyZzBfMzAwIiwicmVzMF8zMDIiLCJyZXMxXzMwMyIsInJlczBfMzA1IiwiYXJnMF8zMDYiLCJyZXMwXzMwNyIsImFyZzBfMzEyIiwiYXJnMV8zMDkiLCJhcmcwXzMwOCIsInJlczBfMzEwIiwidl8yNDUiLCJhcmcxXzI0NyIsImFyZzBfMjQ2IiwicmVzMF8yNDgiLCJyZXMxXzI0OSIsInZfMjUwIiwiYXJnMV8yNTIiLCJhcmcwXzI1MSIsInJlczBfMjUzIiwicmVzMV8yNTQiLCJyZXMxXzMxMSIsInJlczBfMzEzIiwiYXJnMF8zMTgiLCJhcmcxXzMxNSIsImFyZzBfMzE0IiwicmVzMF8zMTYiLCJyZXMxXzMxNyIsInJlczBfMzE5IiwiYXJnMV8zMjEiLCJhcmcwXzMyMCIsInJlczBfMzIyIiwicmVzMV8zMjMiLCJhcmcyXzMyNiIsImFyZzFfMzI1IiwiYXJnMF8zMjQiLCJtZW1iZXJzXzI3NSIsImxvY18yNzMiLCJnaWRfMjcxIiwiYm5kc18yNzAiLCJhcmcxXzI4MiIsImFyZzBfMjgxIiwicmVzMF8yODMiLCJhcmcxXzI3OCIsImFyZzBfMjc3IiwicmVzMF8yNzkiLCJyZXMxXzI4MCIsInJlczFfMjg0IiwiYXJnXzI3NiIsImJuZHNfMjcwJDAiLCJhcmdfMjc0IiwiYm5kc18yNzAkMSIsImFyZ18yNzIiLCJibmRzXzI3MCQyIiwicmVzMF8zMjciLCJyZXMxXzMyOCIsInJlczJfMzI5IiwiY29uc3RyIiwiaW5oZXJpdCIsInZhciQ0IiwicG9seV92YXJpYW50JDEiLCJpc19jeWNsaWNfMCIsInZpYV9WUiIsImdyb3VwIiwic2V0IiwidmlzaXRlZCIsInRyYXYiLCJ0cyIsImNzIiwidHMkMCIsInRyYXZfdGlkIiwiYm9keSIsInJlcyIsImxvb2t1cCQwIiwiYV8zMzAiLCJiXzMzMSIsInRfMzMzIiwidF8zMzIiLCJ0XzMzNSIsInRfMzM0IiwiYXJnMV8zMzciLCJhcmcwXzMzNiIsInJlczBfMzM4IiwicmVzMV8zMzkiLCJmaW5kIiwiZW1wdHkiLCJleHRlbmQiLCJyZXR1cm4kMCIsInRlbnYiLCJiaW5kIiwiZGVwdGgiLCJsb29rX2VudiIsImtleSIsInJlc3VsdCIsImV4dGVuZF9uZXdfdGlkIiwiZGVmX3QiLCJ2YWx1ZSIsInRlbnYkMCIsImV4ZWMiLCJzeW1ib2xfYmluZCIsInJldHVybiQxIiwic2VxdWVuY2VfZGVmaW5pbmciLCJsb29wIiwiYWNjX3lzIiwidmVudiIsInMkMCIsImV2YWxfbGlzdCIsImJpbmRzIiwiYWx0cyIsInlzIiwieHNzIiwiZXZhbF9wb2x5X2NvbnN0ciIsInZpZCIsImxvYyQwIiwiY3VzdG9tX3ByaW50Zl8zNDAiLCJhcmdzIiwiZXZhbF9hcHAiLCJhcmdzJDAiLCJ0aWQkMCIsImluX2dyb3VwIiwiYyIsImV2YWxfZGVmaW5pdGlvbiIsImZvcm1hbHMiLCJpIiwicmVjb3JkX29yX25vcm1hbF92YXJpYW50IiwiY3ljbGljIiwiY3ljbGljX25vX1ZSIiwiZXZhbCQwIiwiZXZhbF90b19kaWdlc3QiLCJldmFsX3RvX2RpZ2VzdF9zdHJpbmciLCJkZWNvbnN0cnVjdF90dXBsZV9leG4iLCJsb2MkMiIsImxvYyQxIiwibG9jJDAiLCJsb2MiLCJzZXhwX29mX3BvcyIsInRvX3N0cmluZyIsIm1heF9sZW4iLCJsZW4iLCJsb2MkMyIsImxvYyQ0IiwiYXJnMF8wMDEiLCJyYWlzZV9yZWFkX2Vycm9yIiwiZXJyIiwicG9zIiwicmFpc2VfdmFyaWFudF93cm9uZ190eXBlIiwibmFtZSIsInJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIiwiYXJyYXlfYm91bmRfZXJyb3IiLCJjcmVhdGVfYnVmIiwibiIsImJ1Zl9sZW4iLCJhc3NlcnRfcG9zIiwiY2hlY2tfcG9zIiwiYnVmIiwic2FmZV9nZXRfcG9zIiwicG9zX3JlZiIsImNoZWNrX25leHQiLCJuZXh0IiwiZ2V0X29wdF9wb3MiLCJ2YXIkMCIsImJsaXRfYnVmIiwic3JjX3BvcyIsInNyYyIsImRzdF9wb3MiLCJkc3QiLCJzcmNfcG9zJDAiLCJkc3RfcG9zJDAiLCJibGl0X3N0cmluZ19idWYiLCJzdHIiLCJibGl0X2J5dGVzX2J1ZiIsImJsaXRfYnVmX2J5dGVzIiwiY29weV9odGJsX2xpc3QiLCJodGJsIiwicmVzdCIsInYiLCJrIiwic3ltYm9sIiwib2ZfaW50IiwiYXJjaF9zaXh0eWZvdXIiLCJhcmNoX2JpZ19lbmRpYW4iLCJ1bnNhZmVfc2V0MTZiZSIsIngiLCJ1bnNhZmVfc2V0MzJiZSIsInVuc2FmZV9zZXQ2NGJlIiwidW5zYWZlX3NldDE2bGUiLCJ1bnNhZmVfc2V0MzJsZSIsInVuc2FmZV9zZXQ2NGxlIiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVfYm9vbCIsImIiLCJhbGxfYmluX3dyaXRlX3NtYWxsX2ludCIsImFsbF9iaW5fd3JpdGVfaW50MTYiLCJhbGxfYmluX3dyaXRlX2ludDMyIiwiYWxsX2Jpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9jaGFyIiwiYyIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVfbmF0MCIsIm5hdDAiLCJiaW5fd3JpdGVfc3RyaW5nIiwibmV3X3BvcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZV9mbG9hdCIsImJpbl93cml0ZV9pbnQzMiIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVfcmVmIiwiYmluX3dyaXRlX2VsIiwiciIsImJpbl93cml0ZV9sYXp5IiwibHYiLCJiaW5fd3JpdGVfb3B0aW9uIiwiYmluX3dyaXRlX3BhaXIiLCJiaW5fd3JpdGVfYSIsImJpbl93cml0ZV9iIiwiYSIsImJpbl93cml0ZV90cmlwbGUiLCJiaW5fd3JpdGVfYyIsIm5leHQxIiwibmV4dDIiLCJiaW5fd3JpdGVfbGlzdCIsImxzdCQxIiwiZWxzX3BvcyQwIiwiZWxzX3BvcyIsImxzdCIsImxzdCQwIiwiaGQiLCJuZXdfZWxzX3BvcyIsImJpbl93cml0ZV9mbG9hdF9hcnJheV9nZW4iLCJsZW5ndGgiLCJibGl0IiwicG9zJDAiLCJzaXplIiwiYmluX3dyaXRlX2Zsb2F0YXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfYXJyYXlfbG9vcCIsImFyIiwiZWxzX3Bvc19yZWYiLCJpIiwiYmluX3dyaXRlX2FycmF5IiwiYmluX3dyaXRlX2hhc2h0YmwiLCJiaW5fd3JpdGVfa2V5IiwiYmluX3dyaXRlX3ZhbCIsInBsZW4iLCJjbnRfcmVmIiwiY29sbF9odGJsIiwicmVzX3BvcyIsImJpbl93cml0ZV9mbG9hdDMyX3ZlYyIsImJpbl93cml0ZV9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZV9mbG9hdDMyX21hdCIsIm0iLCJsZW4xIiwibGVuMiIsInBvcyQxIiwiYmluX3dyaXRlX2Zsb2F0NjRfbWF0IiwiYmluX3dyaXRlX2JpZ3N0cmluZyIsInMiLCJiaW5fd3JpdGVfdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVfaW50XzhiaXQiLCJiaW5fd3JpdGVfaW50XzE2Yml0IiwiYmluX3dyaXRlX2ludF8zMmJpdCIsImJpbl93cml0ZV9pbnRfNjRiaXQiLCJiaW5fd3JpdGVfaW50NjRfYml0cyIsImJpbl93cml0ZV9uZXR3b3JrMTZfaW50IiwiYmluX3dyaXRlX25ldHdvcmszMl9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVfbmV0d29yazY0X2ludDY0IiwiYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCIsImJpbl93cml0ZV9tZDUiLCJ4JDAiLCJhJDAiLCJiJDAiLCJkIiwibWF4X2ludF9pbnQzMiIsIm1pbl9pbnRfaW50MzIiLCJtYXhfaW50X2ludDY0IiwibWluX2ludF9pbnQ2NCIsInNhZmVfaW50X29mX2ludDMyIiwic2FmZV9pbnRfb2ZfaW50NjQiLCJzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCIsInVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMyYmUiLCJ1bnNhZmVfZ2V0NjRiZSIsInVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIiwidW5zYWZlX2dldDMybGUiLCJ1bnNhZmVfZ2V0NjRsZSIsImJpbl9yZWFkX3VuaXQiLCJiaW5fcmVhZF9ib29sIiwic2FmZV9iaW5fcmVhZF9uZWdfaW50OCIsInNhZmVfYmluX3JlYWRfaW50MTYiLCJtYXNrXzMyYml0Iiwic2FmZV9iaW5fcmVhZF9uYXQwXzMyIiwiYmluX3JlYWRfbmF0MCIsImNoIiwibmV4dCQwIiwibiQwIiwiYmluX3JlYWRfYnl0ZXMiLCJzdGFydF9wb3MiLCJiaW5fcmVhZF9zdHJpbmciLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfaW50IiwibiQxIiwibiQyIiwiYmluX3JlYWRfZmxvYXQiLCJiaW5fcmVhZF9pbnQzMiIsImJpbl9yZWFkX2ludDY0IiwiYmluX3JlYWRfbmF0aXZlaW50IiwiYmluX3JlYWRfcmVmIiwiYmluX3JlYWRfZWwiLCJlbCIsImJpbl9yZWFkX2xhenkiLCJiaW5fcmVhZF9vcHRpb24iLCJiaW5fcmVhZF9wYWlyIiwiYmluX3JlYWRfYSIsImJpbl9yZWFkX2IiLCJiaW5fcmVhZF90cmlwbGUiLCJiaW5fcmVhZF9jIiwiYmluX3JlYWRfbl9yZXZfbGlzdCIsImFjYyIsImFjYyQwIiwiYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4iLCJyZXZfbHN0IiwiYmluX3JlYWRfbGlzdCIsImR1bW15X2Zsb2F0X2J1ZiIsIm1heF9mbG9hdF9hcnJheV9sZW5ndGgiLCJiaW5fcmVhZF9mbG9hdF9hcnJheV9nZW4iLCJjcmVhdGUiLCJhcnIiLCJiaW5fcmVhZF9mbG9hdGFycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImVsJDEiLCJtYXliZV9mbG9hdCIsImVsJDAiLCJmaXJzdCIsInJlcyIsImJpbl9yZWFkX2hhc2h0YmwiLCJiaW5fcmVhZF9rZXkiLCJiaW5fcmVhZF92YWwiLCJyZWFkX2t2X3BhaXIiLCJlbHMiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyIsInZlYyIsImJpbl9yZWFkX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQiLCJtYXQiLCJiaW5fcmVhZF9mbG9hdDY0X21hdCIsImJpbl9yZWFkX2JpZ3N0cmluZyIsImJpbl9yZWFkX3ZhcmlhbnRfaW50IiwiYmluX3JlYWRfaW50XzhiaXQiLCJiaW5fcmVhZF9pbnRfMTZiaXQiLCJiaW5fcmVhZF9pbnRfMzJiaXQiLCJiaW5fcmVhZF9pbnRfNjRiaXQiLCJiaW5fcmVhZF9pbnQ2NF9iaXRzIiwiYmluX3JlYWRfbmV0d29yazE2X2ludCIsImJpbl9yZWFkX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZF9uZXR3b3JrMzJfaW50MzIiLCJiaW5fcmVhZF9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRfbmV0d29yazY0X2ludDY0IiwiYmluX3JlYWRfbWQ1IiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaGFwZV9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2hhcGVfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaGFwZV9pbnQiLCJiaW5fc2hhcGVfaW50MzIiLCJiaW5fc2hhcGVfaW50NjMiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2hhcGVfbmF0aXZlaW50IiwiYmluX3NoYXBlX25hdDAiLCJiaW5fc2hhcGVfZGlnZXN0IiwiYmluX3NoYXBlX2Zsb2F0MzJfdmVjIiwiYmluX3NoYXBlX2Zsb2F0NjRfdmVjIiwiYmluX3NoYXBlX3ZlYyIsImJpbl9zaGFwZV9mbG9hdDMyX21hdCIsImJpbl9zaGFwZV9mbG9hdDY0X21hdCIsImJpbl9zaGFwZV9tYXQiLCJiaW5fc2hhcGVfYmlnc3RyaW5nIiwiYmluX3NoYXBlX2Zsb2F0YXJyYXkiLCJiaW5fc2hhcGVfdmFyaWFudF9pbnQiLCJiaW5fc2hhcGVfaW50XzhiaXQiLCJiaW5fc2hhcGVfaW50XzE2Yml0IiwiYmluX3NoYXBlX2ludF8zMmJpdCIsImJpbl9zaGFwZV9pbnRfNjRiaXQiLCJiaW5fc2hhcGVfaW50NjRfYml0cyIsImJpbl9zaGFwZV9uZXR3b3JrMTZfaW50IiwiYmluX3NoYXBlX25ldHdvcmszMl9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyIiwiYmluX3NoYXBlX25ldHdvcms2NF9pbnQiLCJiaW5fc2hhcGVfbmV0d29yazY0X2ludDY0IiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaGFwZV9vcHRpb24iLCJiaW5fc2hhcGVfbGlzdCIsImJpbl9zaGFwZV9hcnJheSIsImJpbl9zaGFwZV9oYXNodGJsIiwieSIsImJpbl9zaGFwZV9mbG9hdF9hcnJheSIsImJpbl9zaGFwZV9sYXp5IiwiYmluX3NoYXBlX3BhaXIiLCJiaW5fc2hhcGVfdHJpcGxlIiwieiIsImJpbl9zaXplX3VuaXQiLCJiaW5fc2l6ZV9ib29sIiwiYmluX3NpemVfY2hhciIsImJpbl9zaXplX21kNSIsImJpbl9zaXplX2ludF9uYXQwIiwiYmluX3NpemVfaW50X25lZ2F0aXZlIiwiYmluX3NpemVfaW50IiwiYmluX3NpemVfaW50JDAiLCJiaW5fc2l6ZV9wYWlyIiwiYmluX3NpemVfdHJpcGxlIiwiYmluX3NpemVfbWF0IiwiYmluX3NpemVfZmxvYXQiLCJiaW5fc2l6ZV9pbnQzMiIsImJpbl9zaXplX2ludDY0IiwiYmluX3NpemVfdmFyaWFudF9pbnQiLCJiaW5fc2l6ZV9pbnRfOGJpdCIsImJpbl9zaXplX2ludF8xNmJpdCIsImJpbl9zaXplX2ludF8zMmJpdCIsImJpbl9zaXplX2ludF82NGJpdCIsImJpbl9zaXplX2ludDY0X2JpdHMiLCJiaW5fc2l6ZV9uZXR3b3JrMTZfaW50IiwiYmluX3NpemVfbmV0d29yazMyX2ludCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiIsImJpbl9zaXplX25ldHdvcms2NF9pbnQiLCJiaW5fc2l6ZV9uZXR3b3JrNjRfaW50NjQiLCJiaW5fc2l6ZV9tZDUkMCIsImJpbl9zaXplX25hdDAiLCJiaW5fc2l6ZV9yZWYiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fc2l6ZV9vcHRpb24iLCJiaW5fc2l6ZV91bml0JDAiLCJiaW5fc2l6ZV9ib29sJDAiLCJiaW5fc2l6ZV9jaGFyJDAiLCJiaW5fc2l6ZV9pbnQkMSIsImJpbl9zaXplX25hdDAkMCIsImJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyIsInNpemVfbGVuIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3NpemVfYnl0ZXMiLCJiaW5fc2l6ZV9tZDUkMSIsImJpbl9zaXplX2Zsb2F0JDAiLCJmIiwiYmluX3NpemVfaW50MzIkMCIsImJpbl9zaXplX2ludDY0JDAiLCJiaW5fc2l6ZV9uYXRpdmVpbnQiLCJiaW5fc2l6ZV9yZWYkMCIsImJpbl9zaXplX2VsIiwiYmluX3NpemVfbGF6eV90JDAiLCJiaW5fc2l6ZV9vcHRpb24kMCIsImJpbl9zaXplX3BhaXIkMCIsImJpbl9zaXplX2EiLCJiaW5fc2l6ZV9iIiwiYmluX3NpemVfdHJpcGxlJDAiLCJiaW5fc2l6ZV9jIiwiYmluX3NpemVfbGlzdCIsInNpemVfYWNjIiwibGVuX2FjYyIsImxlbl9hY2MkMCIsInNpemVfYWNjJDAiLCJiaW5fc2l6ZV9sZW4iLCJiaW5fc2l6ZV9mbG9hdGFycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheV9sb29wIiwidG90YWxfbGVuIiwidG90YWxfbGVuX3JlZiIsImJpbl9zaXplX2FycmF5IiwiYmluX3NpemVfaGFzaHRibCIsImJpbl9zaXplX2tleSIsImJpbl9zaXplX3ZhbCIsImJpbl9zaXplX2dlbl92ZWMiLCJtdWx0aXBsaWVyIiwiYmluX3NpemVfZmxvYXQzMl92ZWMiLCJiaW5fc2l6ZV9mbG9hdDY0X3ZlYyIsImJpbl9zaXplX2dlbl9tYXQiLCJkaW0xIiwiZGltMiIsImJpbl9zaXplX2Zsb2F0MzJfbWF0IiwiYmluX3NpemVfZmxvYXQ2NF9tYXQiLCJiaW5fc2l6ZV9iaWdzdHJpbmciLCJiaW5fc2l6ZV92YXJpYW50X2ludCQwIiwiYmluX3NpemVfaW50XzhiaXQkMCIsImJpbl9zaXplX2ludF8xNmJpdCQwIiwiYmluX3NpemVfaW50XzMyYml0JDAiLCJiaW5fc2l6ZV9pbnRfNjRiaXQkMCIsImJpbl9zaXplX2ludDY0X2JpdHMkMCIsImJpbl9zaXplX25ldHdvcmsxNl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQkMCIsImJpbl9zaXplX25ldHdvcmszMl9pbnQzMiQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludCQwIiwiYmluX3NpemVfbmV0d29yazY0X2ludDY0JDAiLCJiaW5fc2l6ZV9hcnJheV9ub19sZW5ndGgiLCJ2YXJpYW50X3dyb25nX3R5cGUiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZGVyX3VuaXQiLCJiaW5fdW5pdCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkZXJfYm9vbCIsImJpbl9ib29sIiwiYmluX3dyaXRlcl9zdHJpbmciLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJiaW5fd3JpdGVyX2J5dGVzIiwiYmluX3JlYWRlcl9ieXRlcyIsImJpbl9ieXRlcyIsImJpbl93cml0ZXJfY2hhciIsImJpbl9yZWFkZXJfY2hhciIsImJpbl9jaGFyIiwiYmluX3dyaXRlcl9pbnQiLCJiaW5fcmVhZGVyX2ludCIsImJpbl9pbnQiLCJiaW5fd3JpdGVyX2Zsb2F0IiwiYmluX3JlYWRlcl9mbG9hdCIsImJpbl9mbG9hdCIsImJpbl93cml0ZXJfaW50MzIiLCJiaW5fcmVhZGVyX2ludDMyIiwiYmluX2ludDMyIiwiYmluX3dyaXRlcl9pbnQ2NCIsImJpbl9yZWFkZXJfaW50NjQiLCJiaW5faW50NjQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkZXJfbmF0aXZlaW50IiwiYmluX25hdGl2ZWludCIsImJpbl93cml0ZXJfbmF0MCIsImJpbl9yZWFkZXJfbmF0MCIsImJpbl9uYXQwIiwiYmluX3dyaXRlcl9yZWYiLCJiaW5fd3JpdGVyX2VsIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVhZGVyX2VsIiwieDEiLCJiaW5fcmVmIiwiYmluX2VsIiwiYmluX3dyaXRlcl9sYXp5IiwiYmluX3JlYWRlcl9sYXp5IiwiYmluX2xhenkiLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkZXJfb3B0aW9uIiwiYmluX29wdGlvbiIsImJpbl93cml0ZXJfcGFpciIsImJpbl93cml0ZXJfZWwxIiwiYmluX3dyaXRlcl9lbDIiLCJiaW5fcmVhZGVyX3BhaXIiLCJiaW5fcmVhZGVyX2VsMSIsImJpbl9yZWFkZXJfZWwyIiwiYmluX3BhaXIiLCJiaW5fZWwxIiwiYmluX2VsMiIsIngyIiwiYmluX3dyaXRlcl90cmlwbGUiLCJiaW5fd3JpdGVyX2VsMyIsImJpbl9yZWFkZXJfdHJpcGxlIiwiYmluX3JlYWRlcl9lbDMiLCJiaW5fdHJpcGxlIiwiYmluX2VsMyIsIngzIiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRlcl9saXN0IiwiYmluX2xpc3QiLCJiaW5fd3JpdGVyX2FycmF5IiwiYmluX3JlYWRlcl9hcnJheSIsImJpbl9hcnJheSIsImJpbl93cml0ZXJfaGFzaHRibCIsImJpbl9yZWFkZXJfaGFzaHRibCIsImJpbl9oYXNodGJsIiwiYmluX3dyaXRlcl9mbG9hdDMyX3ZlYyIsImJpbl9yZWFkZXJfZmxvYXQzMl92ZWMiLCJiaW5fZmxvYXQzMl92ZWMiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjIiwiYmluX3JlYWRlcl9mbG9hdDY0X3ZlYyIsImJpbl9mbG9hdDY0X3ZlYyIsImJpbl93cml0ZXJfdmVjIiwiYmluX3JlYWRlcl92ZWMiLCJiaW5fdmVjIiwiYmluX3dyaXRlcl9mbG9hdDMyX21hdCIsImJpbl9yZWFkZXJfZmxvYXQzMl9tYXQiLCJiaW5fZmxvYXQzMl9tYXQiLCJiaW5fd3JpdGVyX2Zsb2F0NjRfbWF0IiwiYmluX3JlYWRlcl9mbG9hdDY0X21hdCIsImJpbl9mbG9hdDY0X21hdCIsImJpbl93cml0ZXJfbWF0IiwiYmluX3JlYWRlcl9tYXQiLCJiaW5fbWF0IiwiYmluX3dyaXRlcl9iaWdzdHJpbmciLCJiaW5fcmVhZGVyX2JpZ3N0cmluZyIsImJpbl9iaWdzdHJpbmciLCJiaW5fd3JpdGVyX2Zsb2F0YXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0YXJyYXkiLCJiaW5fZmxvYXRhcnJheSIsImJpbl93cml0ZXJfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZGVyX2Zsb2F0X2FycmF5IiwiYmluX2Zsb2F0X2FycmF5IiwiYmluX3dyaXRlcl92YXJpYW50X2ludCIsImJpbl9yZWFkZXJfdmFyaWFudF9pbnQiLCJiaW5fdmFyaWFudF9pbnQiLCJiaW5fd3JpdGVyX2ludF84Yml0IiwiYmluX3JlYWRlcl9pbnRfOGJpdCIsImJpbl9pbnRfOGJpdCIsImJpbl93cml0ZXJfaW50XzE2Yml0IiwiYmluX3JlYWRlcl9pbnRfMTZiaXQiLCJiaW5faW50XzE2Yml0IiwiYmluX3dyaXRlcl9pbnRfMzJiaXQiLCJiaW5fcmVhZGVyX2ludF8zMmJpdCIsImJpbl9pbnRfMzJiaXQiLCJiaW5fd3JpdGVyX2ludF82NGJpdCIsImJpbl9yZWFkZXJfaW50XzY0Yml0IiwiYmluX2ludF82NGJpdCIsImJpbl93cml0ZXJfaW50NjRfYml0cyIsImJpbl9yZWFkZXJfaW50NjRfYml0cyIsImJpbl9pbnQ2NF9iaXRzIiwiYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50IiwiYmluX25ldHdvcmsxNl9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcmszMl9pbnQiLCJiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQiLCJiaW5fbmV0d29yazMyX2ludCIsImJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyIiwiYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzIiLCJiaW5fbmV0d29yazMyX2ludDMyIiwiYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50IiwiYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50IiwiYmluX25ldHdvcms2NF9pbnQiLCJiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NCIsImJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0IiwiYmluX25ldHdvcms2NF9pbnQ2NCIsImJpbl93cml0ZXJfYXJyYXlfbm9fbGVuZ3RoIiwiY252X3dyaXRlciIsImNudiIsInRwX2NsYXNzIiwiY252X3JlYWRlciIsInZ0YWciLCJmb3Jfc2hhcGUiLCJmb3Jfd3JpdGVyIiwiZm9yX3JlYWRlciIsImJpbl93cml0ZV9zaXplX2hlYWRlciIsImJpbl9yZWFkX3NpemVfaGVhZGVyIiwic2l6ZV9oZWFkZXJfbGVuZ3RoIiwiYmluX2R1bXAiLCJvcHQiLCJ3cml0ZXIiLCJzdGgiLCJoZWFkZXIiLCJwb3NfbGVuIiwidG90X2xlbiIsInBvc19sZW4kMCIsImJ1ZiQwIiwiYnVmJDEiLCJiaW5fcmVhZF9zdHJlYW0iLCJtYXhfc2l6ZSIsInJlYWQiLCJyZWFkZXIiLCJtYXhfc2l6ZSQwIiwibXNnIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJtYXliZV9hbm5vdGF0ZV9zaGFwZSIsIm1heWJlX3V1aWQiLCJzaGFwZSIsInV1aWQiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ0IiwiYmluX3dyaXRlX3QiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2hhcGVfZWwiLCJiaW5fd3JpdGVyIiwiYmluX3JlYWRlciIsInR5cGVfY2xhc3MiLCJiaW5fc2hhcGVfZWwxIiwiYmluX3NoYXBlX2VsMiIsImJpbl9zaXplX2VsMSIsImJpbl9zaXplX2VsMiIsImJpbl93cml0ZV9lbDEiLCJiaW5fd3JpdGVfZWwyIiwiYmluX3JlYWRfZWwxIiwiYmluX3JlYWRfZWwyIiwiYmluX3dyaXRlcjEiLCJiaW5fd3JpdGVyMiIsImJpbl9yZWFkZXIxIiwiYmluX3JlYWRlcjIiLCJ0eXBlX2NsYXNzMSIsInR5cGVfY2xhc3MyIiwiYmluX3NoYXBlX2VsMyIsImJpbl9zaXplX2VsMyIsImJpbl93cml0ZV9lbDMiLCJiaW5fcmVhZF9lbDMiLCJiaW5fd3JpdGVyMyIsImJpbl9yZWFkZXIzIiwidHlwZV9jbGFzczMiLCJtYXliZV9jYWxsZXJfaWRlbnRpdHkiLCJ3aXRoX21vZHVsZV9uYW1lIiwibW9kdWxlX25hbWUiLCJmdW5jdGlvbl9uYW1lIiwibW9kdWxlX25hbWUkMCIsInJhaXNlX3JlYWRfdG9vX211Y2giLCJyYWlzZV9yZWFkX25vdF9lbm91Z2giLCJzaXplX3JlZiIsImlkeCIsInJlc3VsdCIsInQxIiwidDIiLCJ0MyIsImJpbl9yZWFkX3VuaXQkMCIsInZpbnQiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZF9zdHJpbmckMCIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZF9jaGFyJDAiLCJiaW5fcmVhZF9pbnQkMCIsImJpbl9yZWFkX2Zsb2F0JDAiLCJiaW5fcmVhZF9mbG9hdGFycmF5JDAiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRfaW50MzIkMCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZF9uYXRpdmVpbnQkMCIsImJpbl9yZWFkX3JlZiQwIiwiYmluX2xhenlfdCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fd3JpdGVyX2xhenlfdCIsImJpbl93cml0ZV9sYXp5X3QiLCJiaW5fcmVhZGVyX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCIsImJpbl9yZWFkX2xhenlfdCQwIiwiYmluX3JlYWRfbGF6eSQwIiwiYmluX3JlYWRfb3B0aW9uJDAiLCJiaW5fcmVhZF9saXN0JDAiLCJiaW5fcmVhZF9hcnJheSQwIiwiYmluX3JlYWRfaGFzaHRibCQwIiwiZyIsImJpbl9yZWFkX2JpZ3N0cmluZyQwIiwiYmluX3dyaXRlX21hdCIsImJpbl9yZWFkX21hdCIsImJpbl9yZWFkX21hdCQwIiwiYmluX3JlYWRfZmxvYXQzMl9tYXQkMCIsImJpbl9yZWFkX2Zsb2F0NjRfbWF0JDAiLCJiaW5fd3JpdGVfdmVjIiwiYmluX3JlYWRfdmVjIiwiYmluX3JlYWRfdmVjJDAiLCJiaW5fcmVhZF9mbG9hdDMyX3ZlYyQwIiwiYmluX3JlYWRfZmxvYXQ2NF92ZWMkMCIsInZkaWdlc3QiLCJjb21wYXJlIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwic2V4cF9vZl90Iiwib2ZfYV8wMDMiLCJzdGFydF9hIiwiZW5kX2EiLCJ3cml0dGVuIiwiZXhwZWN0ZWRfc2l6ZSIsIm9mX2JpbmFibGUiLCJ0b19iaW5hYmxlIiwiYmluX3NoYXBlX3QkMSIsImJpbl9zaXplX3QkMSIsImJpbl93cml0ZV90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJ0b19vcGFxdWUiLCJibG9iIiwib2Zfb3BhcXVlX2V4biIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQwIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsInN0cmluZ19vZl9iaWdzdHJpbmciLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJ0b19vcGFxdWUkMCIsImJpbl93cml0ZXJfdiIsIm9mX29wYXF1ZV9leG4kMCIsImJpbl9yZWFkZXJfdiIsImVycm9yIiwiY29tcGFyZSQxIiwic2V4cF9vZl90JDEiLCJiaW5fc2l6ZV90JDUiLCJiaW5fcmVhZF90JDExIiwiYmluX3JlYWRfdCQxMiIsImJpbl9yZWFkZXJfdCQyIiwicHJlX3Rlc3RfaG9vayIsIm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2giLCJ0IiwiZW5hYmxlX2V2ZXJ5dGhpbmciLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0X2Vudl92YXIiLCJ0b19zdHJpbmciLCJjb21iaW5lIiwidDEiLCJ0MiIsImNvbWJpbmVfYWxsIiwidHMiLCJ0ZXN0X21vZHVsZXNfcmFuIiwidGVzdF9tb2R1bGVzX2ZhaWxlZCIsInRlc3RzX3JhbiIsInRlc3RzX2ZhaWxlZCIsImR5bmFtaWNfbGliIiwiYWN0aW9uIiwiZm9yY2VfZHJvcCIsImdldCIsImN1cnJlbnQiLCJmb3VuZF90ZXN0IiwiaXNfY3VycmVudCIsInAiLCJjdXJyZW50JDAiLCJjdXJyZW50X3RhZ3MiLCJ0IiwibSIsInZlcmJvc2UiLCJzdHJpY3QiLCJzaG93X2NvdW50cyIsImxpc3RfdGVzdF9uYW1lcyIsImRlbGF5ZWRfZXJyb3JzIiwic3RvcF9vbl9lcnJvciIsImxvZyIsInRpbWVfc2VjIiwidXNlX2NvbG9yIiwiaW5fcGxhY2UiLCJkaWZmX2NvbW1hbmQiLCJzb3VyY2VfdHJlZV9yb290IiwiYWxsb3dfb3V0cHV0X3BhdHRlcm5zIiwiZGlzcGxheWVkX2Rlc2NyIiwiZGVzY3IiLCJmaWxlbmFtZSIsImxpbmUiLCJzdGFydF9wb3MiLCJlbmRfcG9zIiwibmFtZSIsInJlc3QiLCJsaWIiLCJ0ZXN0cyIsImxpc3RfcGFydGl0aW9ucyIsInBhcnRpdGlvbiIsInRhZ19wcmVkaWNhdGUiLCJuYW1lX2ZpbHRlciIsIm1zZyQxIiwiZiIsImFub24iLCJzIiwic3RyIiwiZmlsZSIsImluZGV4IiwiaW5kZXgkMCIsImkiLCJmaWxlbmFtZSQwIiwiaW5kZXhfc3RyaW5nIiwiaW5kZXgkMSIsInRhZyIsImwiLCJhcmd2IiwibXNnIiwibXNnJDAiLCJ2IiwiYW1fdGVzdF9ydW5uZXIiLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwidGVzdGluZyIsIndhbGxfdGltZV9jbG9ja19ucyIsIndoZXJlX3RvX2N1dF9iYWNrdHJhY2UiLCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV8iLCJiZWZvcmVfbnMiLCJyZXMiLCJleG4kMCIsImV4biIsInNhdmVkX2NhbWxfcmFuZG9tX3N0YXRlIiwic2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUiLCJzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyIiwicHJpbnRfZGVsYXllZF9lcnJvcnMiLCJkZWxheWVkX2Vycm9ycyQwIiwibWVzc2FnZSIsImVwcmludGZfb3JfZGVsYXkiLCJmbXQiLCJhZGRfaG9va3MiLCJDIiwiaHVtX2JhY2t0cmFjZSIsImJhY2t0cmFjZSIsInRlc3RfaW5uZXIiLCJjb25maWciLCJ0YWdzIiwiZGVmX2ZpbGVuYW1lIiwiZGVmX2xpbmVfbnVtYmVyIiwiYm9vbF9vZl9mIiwid2hhdF90b19kbyIsIndoaWNoX3RhZ3MiLCJvbmx5X3Rlc3RfbG9jYXRpb24iLCJsaWJuYW1lIiwiZiQwIiwiZGVzY3IkMCIsImNvbXBsZXRlX3RhZ3MiLCJ1c2VkIiwibGluZV9udW1iZXJfb3B0IiwicG9zaXRpb25fc3RhcnQiLCJlbmRfb2ZfZGVmX2ZpbGVuYW1lIiwibGluZV9udW1iZXIiLCJmb3VuZCIsInJlcSIsImRyb3BwZWQiLCJkZXNjciQxIiwic3Vic3RyaW5nIiwic2hvdWxkX3J1biIsImRlc2NyJDIiLCJjaCIsInJlc3VsdCQwIiwiY2FtbF9yYW5kb21fc3RhdGUiLCJiYXNlX3JhbmRvbV9zdGF0ZSIsInJlc3VsdCIsImJhY2t0cmFjZSQwIiwiZXhuX3N0ciIsInNlcCIsInNldF9saWJfYW5kX3BhcnRpdGlvbiIsInN0YXRpY19saWIiLCJ3aGljaF90ZXN0cyIsInJlcXVpcmVzX3BhcnRpdGlvbiIsInVuc2V0X2xpYiIsInRlc3QiLCJiIiwidGVzdF91bml0IiwidGVzdF9tb2R1bGUiLCJwYXJ0aWFsX3RhZ3MiLCJwcmV2IiwieCIsImUkMCIsImUiLCJzdW1tYXJpemUiLCJrIiwiYWNjIiwiY291bnQiLCJjb3VudF90ZXN0X21vZHVsZXMiLCJ1bnVzZWRfdGVzdHMiLCJlcnJvcnMiLCJ1c2VfY29sb3IkMCIsImluX3BsYWNlJDAiLCJkaWZmX2NvbW1hbmQkMCIsInNvdXJjZV90cmVlX3Jvb3QkMCIsImFsbG93X291dHB1dF9wYXR0ZXJucyQwIiwiZXZhbHVhdG9ycyIsImFkZF9ldmFsdWF0b3IiLCJleGl0IiwiZmxhZ3MiLCJlcXVhbCIsInQxIiwidDIiLCJzZWVrIiwicG9zIiwibGVuZ3RoIiwic3RkaW4iLCJjcmVhdGUiLCJvcHQiLCJmaWxlIiwic3RoIiwiYmluYXJ5IiwiZmxhZ3MkMCIsImNsb3NlIiwid2l0aF9maWxlIiwiZiIsIm1heV9lb2YiLCJpbnB1dCIsInQiLCJidWYiLCJsZW4iLCJyZWFsbHlfaW5wdXQiLCJyZWFsbHlfaW5wdXRfZXhuIiwiaW5wdXRfYnl0ZSIsImlucHV0X2NoYXIiLCJpbnB1dF9iaW5hcnlfaW50IiwidW5zYWZlX2lucHV0X3ZhbHVlIiwiaW5wdXRfYnVmZmVyIiwic2V0X2JpbmFyeV9tb2RlIiwiaW5wdXRfYWxsIiwiYnVmZmVyIiwiY2h1bmtfc2l6ZSIsInRyaW0iLCJmaXhfd2luX2VvbCIsImxpbmUiLCJpbnB1dF9saW5lIiwiaW5wdXRfbGluZV9leG4iLCJmb2xkX2xpbmVzIiwiaW5pdCIsImFjIiwiYWMkMCIsImlucHV0X2xpbmVzIiwibGluZXMiLCJpdGVyX2xpbmVzIiwicmVhZF9saW5lcyIsImZuYW1lIiwicmVhZF9hbGwiLCJzdGRvdXQiLCJzdGRlcnIiLCJzZXhwX29mX3QiLCJzdGgkMCIsImFwcGVuZCIsInN0aCQxIiwiZmFpbF9pZl9leGlzdHMiLCJzdGgkMiIsInBlcm0iLCJmbGFncyQxIiwiZmxhZ3MkMiIsImZsdXNoIiwiY2xvc2Vfbm9fZXJyIiwib3V0cHV0Iiwib3V0cHV0X3N1YnN0cmluZyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXRfYnl0ZXMiLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJvdXRwdXRfYnVmZmVyIiwib3V0cHV0X3ZhbHVlIiwibmV3bGluZSIsIm91dHB1dF9saW5lcyIsInByaW50ZiIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludF9zdHJpbmciLCJwcmludF9lbmRsaW5lIiwicHJlcnJfZW5kbGluZSIsInByaW50X3MiLCJtYWNoIiwic2V4cCIsImVwcmludF9zIiwid3JpdGVfbGluZXMiLCJ3cml0ZV9hbGwiLCJkYXRhIiwiYW1fcmVjb3JkaW5nX2Vudmlyb25tZW50X3ZhcmlhIiwidmFsdWUiLCJhbV9yZWNvcmRpbmdfdmFsdWUiLCJhbV9yZWNvcmRpbmciLCJ0b19uYW5vc2Vjb25kcyIsInQiLCJvZl9uYW5vc2Vjb25kcyIsIm9mX3N0cmluZyIsInN0cmluZyIsInRvX3N0cmluZyIsIm5hbm9zIiwidG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IiwibGlzdCIsImZvcm1hdCIsImNyZWF0ZSIsIm5lc3RlZF90aW1lciIsInJlY29yZF9zdGFydCIsImRlc2NyaXB0aW9uIiwicmVjb3JkX3VudGlsIiwidW50aWwiLCJzdGFydCIsImdjX3N0YXRzX2FmdGVyIiwiZ2Nfc3RhdHNfYmVmb3JlIiwicnVudGltZSIsImdjX2V2ZW50cyIsIm5lc3RlZCQwIiwibmVzdGVkX3RpbWluZ19ldmVudHMiLCJ0aW1pbmdfZXZlbnQiLCJuZXN0ZWQiLCJkZWZpbml0aW9uX3RpbWVyIiwibW9kdWxlX3RpbWVyIiwicmVjb3JkX3N0YXJ0JDAiLCJtb2R1bGVfbmFtZSIsInJlY29yZF91bnRpbCQwIiwicmVjb3JkX2RlZmluaXRpb25fc3RhcnQiLCJsb2MiLCJyZWNvcmRfZGVmaW5pdGlvbl91bnRpbCIsInRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyIsImluZGVudCIsIkZvcm1hdCIsImR1cmF0aW9uX3N0cmluZ3MiLCJwcmVmaXgiLCJkdXJhdGlvbl9zdHJpbmciLCJsaW5lIiwiY29tcGFjdGlvbnMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwidG9fbGlzdCIsImNvdW50Iiwic3RyaW5ncyIsImxpc3QkMCIsIndpZHRoIiwibGVmdCIsImxlZnRfY29sdW1uX3dpZHRoIiwicmlnaHQiLCJpIiwiZmFrZV90aW1pbmdfZXZlbnRzIiwiaiIsInRpbWluZ19ldmVudHMkMCIsIm5vdGlmeV9vZl9vdmVycmlkaW5nIiwib3ZlcnJpZGUiLCJ0aW1pbmdfZXZlbnRzIiwiaW5kZXgiLCJuZXN0ZWRfdGltaW5nX2V2ZW50IiwicmVmbCIsImNvbnYiLCJ4IiwibGlmdCIsImNvbXBhcmUiLCJhIiwiYiIsImVxdWFsIiwidWlkIiwibmV4dCIsIm5hbWUiLCJjb2RlIiwiaGFzaCIsInN0YXRpYyQwIiwiY29tcGFyZSQwIiwiazEiLCJrMiIsImNtcCIsImIkMCIsImEkMCIsInlzIiwieSIsInhzIiwibiIsImVxdWFsJDAiLCJoYXNoJDAiLCJzdGF0aWMkMSIsImtleSIsInQiLCJ1aWQkMCIsIm5hbWUkMCIsImNyZWF0ZSIsIm9wdCIsInN0aCIsInNhbWUiLCJubTEiLCJubTIiLCJzYW1lX3dpdG5lc3MiLCJzYW1lX3dpdG5lc3NfZXhuIiwiaW50JDAiLCJtZW0iLCJ0YWJsZSIsInNldCIsImRhdGEiLCJmaW5kIiwiZGF0YSQwIiwiZmFpbCIsInVpZF9hIiwidWlkX2IiLCJtc2ciLCJ3aXRuZXNzIiwidHlwZW5hbWVfb2ZfdCIsImMiLCJkIiwiZSIsImxhYmVsIiwiYXJpdHkiLCJhcmdzX2xhYmVscyIsImluZGV4Iiwib2NhbWxfcmVwciIsInR5aWQiLCJ0cmF2ZXJzZSIsImludGVybmFsX3VzZV9vbmx5IiwibGVuZ3RoIiwidGFnIiwiaXNfcG9seW1vcnBoaWMiLCJ2YWx1ZSIsImZvbGQiLCJpbml0IiwiZiIsImludGVybmFsX3VzZV9vbmx5JDAiLCJsYWJlbCQwIiwiaW5kZXgkMCIsImdldCIsImlzX211dGFibGUiLCJ0eWlkJDAiLCJ0cmF2ZXJzZSQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMSIsInR5cGVuYW1lX29mX3QkMCIsImxlbmd0aCQwIiwiZmllbGQiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImNyZWF0ZSQwIiwiZm9sZCQwIiwiaW50ZXJuYWxfdXNlX29ubHkkMiIsIm5hbWUkMSIsIm5hbWUkMiIsIm5hbWUkMyIsIm5hbWUkNCIsIm5hbWUkNSIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwibmFtZSQxNSIsIm5hbWUkMTYiLCJuYW1lJDE3IiwibmFtZSQxOCIsIm5hbWUkMTkiLCJ0eXBlbmFtZV9vZl9pbnQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludDY0IiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2Zfc3RyaW5nIiwidHlwZW5hbWVfb2ZfYnl0ZXMiLCJ0eXBlbmFtZV9vZl9ib29sIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX29wdGlvbiIsInR5cGVuYW1lX29mX2xpc3QiLCJ0eXBlbmFtZV9vZl9hcnJheSIsInR5cGVuYW1lX29mX2xhenlfdCIsInR5cGVuYW1lX29mX3JlZiIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfdHVwbGUwIiwidHlwZW5hbWVfb2ZfdHVwbGUyIiwidHlwZW5hbWVfb2ZfdHVwbGUzIiwidHlwZW5hbWVfb2ZfdHVwbGU0IiwidHlwZW5hbWVfb2ZfdHVwbGU1IiwicmVwIiwicmVwJDAiLCJyZXAkMSIsInJlcCQyIiwicmVwJDMiLCJyZXAkNCIsIm5hbWUkMjAiLCJhcml0eSQwIiwiYyQwIiwiYiQxIiwiYSQxIiwiZCQwIiwiYyQxIiwiYiQyIiwiYSQyIiwidHlwZW5hbWVfb2ZfdCQxIiwicm5nIiwiZG9tIiwicmVwJDUiLCJyZXAkNiIsInQxIiwidDIiLCJ0MSQwIiwidDIkMCIsInIxIiwicjIkMCIsInIxJDAiLCJyMiQxIiwieCQwIiwicjEkMSIsInIyJDIiLCJ4JDEiLCJyMSQyIiwicjIkMyIsIngkMiIsInIxJDMiLCJyMiQ0IiwieCQzIiwicm5nMSIsImRvbTEiLCJybmcyIiwiZG9tMiIsInQxJDEiLCJ0MiQyIiwiYjIiLCJhMiIsImIxIiwiYTEiLCJjMiIsImIyJDAiLCJhMiQwIiwiYzEiLCJiMSQwIiwiYTEkMCIsImQyIiwiYzIkMCIsImIyJDEiLCJhMiQxIiwiZDEiLCJjMSQwIiwiYjEkMSIsImExJDEiLCJlMiIsImQyJDAiLCJjMiQxIiwiYjIkMiIsImEyJDIiLCJlMSIsImQxJDAiLCJjMSQxIiwiYjEkMiIsImExJDIiLCJyMSQ0IiwicjIkNSIsInIxJDUiLCJyMiQ2IiwibmFtZTEiLCJyMiQ3IiwibmFtZTIiLCJyMSQ3IiwieCQ0IiwidDEkMyIsInQyJDMiLCJ0MiQ0IiwicjEkNiIsInQxJDIiLCJyMiIsInQyJDEiLCJwcm9vZiIsImhlYWQiLCJ0JDAiLCJ0JDEiLCJ0eXBlcmVwX29mX2ludCIsInR5cGVyZXBfb2ZfaW50MzIiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2Zsb2F0IiwidHlwZXJlcF9vZl9zdHJpbmciLCJ0eXBlcmVwX29mX2J5dGVzIiwidHlwZXJlcF9vZl9ib29sIiwidHlwZXJlcF9vZl91bml0IiwidHlwZXJlcF9vZl9vcHRpb24iLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX2FycmF5IiwidHlwZXJlcF9vZl9sYXp5X3QiLCJ0eXBlcmVwX29mX3JlZiIsInR5cGVyZXBfb2ZfZnVuY3Rpb24iLCJ0eXBlcmVwX29mX3R1cGxlMCIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTMiLCJ0eXBlcmVwX29mX3R1cGxlNCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidmFsdWVfdHVwbGUwIiwidHlwZW5hbWVfb2ZfaW50NjMiLCJ0eXBlcmVwX29mX2ludDYzIiwicmVwcl9vZl9wb2x5X3ZhcmlhbnQiLCJ2YXJpYW50Iiwic2l6ZSIsInJlcHIiLCJoYXNoX3ZhcmlhbnQiLCJzIiwiYWNjdSIsImkiLCJkb3VibGVfYXJyYXlfdmFsdWUiLCJkb3VibGUkMCIsInNpbXBsZSIsIm1hcF92YXJpYW50IiwibWFwIiwidHlwZW5hbWUiLCJwb2x5bW9ycGhpYyIsInRhZyQwIiwiZmN0IiwiayIsInRhZ3MiLCJhdGFnIiwiYnRhZyIsIm1hcF9yZWNvcmQiLCJyZWNvcmQiLCJmaWVsZCQwIiwiZmllbGRzIiwiZ2V0JDAiLCJhZmllbGQiLCJiZmllbGQiLCJyZXF1aXJlZCIsInRhYmxlJDAiLCJjaGVja19kZXBlbmRlbmNpZXMiLCJpbXBsZW1lbnRzJDAiLCJtZXNzYWdlIiwicmVwbGFjZSQwIiwibWVtJDAiLCJ0YWJsZTAiLCJ0YWJsZTEiLCJ0YWJsZTIiLCJ0YWJsZTMiLCJ0YWJsZTQiLCJ0YWJsZTUiLCJpc19yZWdpc3RlcmVkIiwiaWRlbnQiLCJ1bml0IiwicmVnaXN0ZXIwIiwiY29tcHV0ZSIsInJlZ2lzdGVyMSIsInJlZ2lzdGVyMiIsInJlZ2lzdGVyMyIsInJlZ2lzdGVyNCIsInJlZ2lzdGVyNSIsInJlZ2lzdGVyIiwidHlwZXJlcF9vZl9hIiwib2ZfdHlwZXJlcCIsImNvbnRleHQiLCJtZW1vX3RhYmxlIiwicmVwJDExIiwicmVwJDEyIiwicmVwJDEzIiwicmVwJDE0IiwicmVwJDE1IiwidHVwbGUiLCJyYSIsInJiIiwicmEkMCIsInJiJDAiLCJyYyIsInJhJDEiLCJyYiQxIiwicmMkMCIsInJkIiwicmEkMiIsInJiJDIiLCJyYyQxIiwicmQkMCIsInJlIiwiY29udGVudCIsIm5hbWVkIiwic2hhcmVkIiwiY3VzdG9tIiwiY3VzdG9tJDAiLCJjdXN0b20kMSIsInJlcCQ3IiwiY3VzdG9tJDIiLCJjdXN0b20kMyIsInJlcCQ4IiwiY3VzdG9tJDQiLCJjdXN0b20kNSIsInJlcCQ5IiwidHlwZW5hbWVfb2ZfdCQyIiwiY3VzdG9tJDYiLCJjdXN0b20kNyIsInJlcCQxMCIsInR5cGVuYW1lX29mX3QkMyIsImN1c3RvbSQ4IiwiY3VzdG9tJDkiLCJjb21wdXRhdGlvbiIsInN0cmluZyIsImNvbnRlbnQkMCIsInNoYXJlZCQwIiwiY29tcHV0YXRpb24kMCIsInBhdGgiLCJyIiwiaW5wdXQiLCJnZXRfd2lwX2NvbXB1dGF0aW9uIiwiY2xvcyIsInNldF9maW5hbF9jb21wdXRhdGlvbiIsImNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIiwic2hhcmUiLCJvZl9wMSIsIm9mX3AyIiwib2ZfcDMiLCJvZl9wNCIsIm9mX3A1IiwidHlwZW5hbWVfb2ZfbmFtZWQiLCJ0eXBlcmVwX29mX3QiLCJlcnJvcl9zb3VyY2VfMDI0IiwiaGFzaF9mb2xkX3QiLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJzeW1ib2wiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsIm1pbiIsIm1heCIsImFzY2VuZGluZyIsImRlc2NlbmRpbmciLCJiZXR3ZWVuIiwiY2xhbXBfZXhuIiwiY2xhbXAiLCJjb21wYXJhdG9yIiwicHAiLCJoYXNoYWJsZSIsImVxdWFsIiwicmVsYXRpdmVfdG8iLCJkaXIiLCJ0IiwidiIsImV4biQwIiwiZXhuIiwiZGlyX29yX2Vycm9yIiwiaW5pdGlhbF9kaXIiLCJ0X29mX3NleHAkMCIsInNleHBfMDAyIiwiZmllbGRfc2V4cHNfMDAzIiwiZmlsZW5hbWVfMDA0IiwibGluZV9udW1iZXJfMDA2IiwibGluZV9zdGFydF8wMDgiLCJzdGFydF9wb3NfMDEwIiwiZW5kX3Bvc18wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI2IiwiZmllbGRfc2V4cF8wMTckNSIsImZpZWxkX3NleHBfMDE3IiwieF8wMjciLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMjIiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDE3JDQiLCJmdmFsdWVfMDE5IiwiZW5kX3Bvc18wMTMiLCJzdGFydF9wb3NfMDExIiwibGluZV9zdGFydF8wMDkiLCJsaW5lX251bWJlcl8wMDciLCJmaWxlbmFtZV8wMDUiLCJzZXhwX29mX3QkMCIsImVuZF9wb3NfMDM3Iiwic3RhcnRfcG9zXzAzNSIsImxpbmVfc3RhcnRfMDMzIiwibGluZV9udW1iZXJfMDMxIiwiZmlsZW5hbWVfMDI5IiwiYXJnXzAzOCIsImJuZHNfMDI4IiwiYXJnXzAzNiIsImJuZHNfMDI4JDAiLCJhcmdfMDM0IiwiYm5kc18wMjgkMSIsImFyZ18wMzIiLCJibmRzXzAyOCQyIiwiYXJnXzAzMCIsImJuZHNfMDI4JDMiLCJjb21wYXJlJDAiLCJhXzAzOSIsImJfMDQwIiwibiIsIm4kMCIsIm4kMSIsIm4kMiIsImJlZ2lubmluZ19vZl9maWxlIiwiZmlsZW5hbWUiLCJvZl9zb3VyY2VfY29kZV9wb3NpdGlvbiIsInBvcyIsInNleHBfb2ZfdCQxIiwiY29tcGFyZSQyIiwidG9fc3RyaW5nJDAiLCJvZl9zdHJpbmckMCIsInMiLCJpIiwib2ZfYV8wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImNtcF9hIiwiYV8wMDciLCJiXzAwOCIsImFfMDA5IiwiYl8wMTAiLCJhXzAxMSIsImJfMDEyIiwiYV8wMTMiLCJiXzAxNCIsImFfMDE1IiwiYl8wMTYiLCJhXzAxNyIsImJfMDE4IiwibWFwX3ByZXR0eSIsImYiLCJ4Iiwib2ZfYV8wMTkiLCJib2R5X2xvY2F0aW9uXzAyNyIsImV4dGlkX2xvY2F0aW9uXzAyNSIsImJvZHlfMDIzIiwidGFnXzAyMSIsImFyZ18wMjgiLCJibmRzXzAyMCIsImFyZ18wMjYiLCJibmRzXzAyMCQwIiwiYXJnXzAyNCIsImJuZHNfMDIwJDEiLCJhcmdfMDIyIiwiYm5kc18wMjAkMiIsImFfMDI5IiwiYl8wMzAiLCJlcXVhbCQwIiwiYV8wMzUiLCJiXzAzNiIsInhfMDQxIiwiY29tcGFyZSQxIiwiYV8wNDIiLCJiXzA0MyIsIm1hcF9wcmV0dHkkMCIsImVxdWFsIiwiY29tbWVudF9wcmVmaXgiLCJtZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGEiLCJ0Iiwib2NhbWxfbGV4X3RhYmxlcyIsImxleGJ1ZiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsInRlc3RzX3J1biIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmIiwieCIsImUkMCIsImUiLCJjdXJyZW50Iiwic2V0IiwiYWJzb2x1dGVfZmlsZW5hbWUiLCJ1bnNldCIsImdldF9wb3NpdGlvbiIsInJlbGF0aXZlX2ZpbGVuYW1lIiwidCIsIndpdGhfaWMiLCJmbmFtZSIsImljIiwiY3VycmVudF90ZXN0IiwiZ2V0X2N1cnJlbnQiLCJzYXZlX2FuZF9yZXR1cm5fb3V0cHV0X3dpdGhvdXQiLCJsb2NhdGlvbiIsInBvcyIsInByZXZfcG9zIiwicHJldl9wb3MkMCIsImxlbiIsImJhc2ljX2ZsdXNoIiwic2F2ZV9hbmRfcmV0dXJuX291dHB1dCIsImluc3RhbmNlIiwidGVzdHNfcnVuJDAiLCJzeW1ib2xfYmluZCIsInJldHVybiQwIiwiZmx1c2giLCJleHRyYWN0X291dHB1dF9hbmRfc2FuaXRpemUiLCJzIiwiZ2V0X291dHB1dHNfYW5kX2NsZWFudXAiLCJsYXN0X29mcyIsIm5leHRfb2ZzIiwibG9jIiwiYWNjIiwib2ZzIiwib3V0cHV0cyIsInRyYWlsaW5nX291dHB1dCIsInNhdmVfb3V0cHV0IiwidHJhaWxpbmciLCJibG9ja3MiLCJmaW5hbF9mbHVzaCIsIm9wdCIsImsiLCJzdGgiLCJjb3VudCIsIm1heF9hdHRlbXB0cyIsInJ1biQwIiwiZmlsZV9kaWdlc3QiLCJkZWZpbmVkX2luIiwiZGVzY3JpcHRpb24iLCJ0YWdzIiwiZXhwZWN0YXRpb25zIiwidW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIiwiaW5saW5lX3Rlc3RfY29uZmlnIiwiZm4iLCJyZWdpc3RlcmluZ190ZXN0c19mb3IiLCJmaWxlbmFtZSIsImNoYW4iLCJ1bmNhdWdodF9leG4iLCJhcHBlbmQiLCJzYXZlZF9vdXRwdXQiLCJleG4kMCIsImV4biIsImJ0IiwicmV0dXJuJDAiLCJ4IiwiYmluZCIsInQiLCJmIiwidG9fcnVuIiwic2FuaXRpemUiLCJzIiwicnVuIiwiZmx1c2hlZCIsImJlZ2lubmluZ19vZl9maWxlIiwic2V4cF9vZl9wb3MiLCJvZmZzZXRfMDA2IiwiY29sXzAwNCIsImxpbmVfMDAyIiwiYXJnXzAwNyIsImJuZHNfMDAxIiwiYXJnXzAwNSIsImJuZHNfMDAxJDAiLCJhcmdfMDAzIiwiYm5kc18wMDEkMSIsImNvbXBhcmVfcG9zIiwic2hpZnRfcG9zIiwicG9zIiwiY29scyIsInNleHBfb2ZfcmFuZ2UiLCJlbmRfcG9zXzAxMSIsInN0YXJ0X3Bvc18wMDkiLCJhcmdfMDEyIiwiYm5kc18wMDgiLCJhcmdfMDEwIiwiYm5kc18wMDgkMCIsImNvbXBhcmVfcmFuZ2UiLCJtYWtlX3JhbmdlX2luY2wiLCJzdGFydF9wb3MiLCJsYXN0X3BvcyIsIm1lbW9yeV9mb290cHJpbnRfaW5fYnl0ZXMiLCJ0Iiwid29yZF9ieXRlcyIsIm4iLCJjaHVua193b3JkcyIsImNyZWF0ZSIsIm9wdCIsInN0aCIsImluaXRpYWxfcG9zIiwicmVzZXQiLCJhZGRfdWludDE2IiwiYWRkX2JpdHMiLCJudW1fYml0cyIsImludF9idWYiLCJudW1fYml0cyQwIiwibnVtX2JpdHMkMSIsImNvbnRlbnRzIiwicmV2X2NodW5rcyIsImNodW5rX3BvcyIsImV4dHJhX2JpdHMiLCJhZGRfZ2VuIiwib2Zmc2V0IiwiaW5zdHIiLCJpbnN0cl9iaXRzIiwibiQwIiwiYWRkIiwiYWRkX3R3aWNlIiwiYWRkX25ld2xpbmUiLCJjcmVhdGUkMCIsInAiLCJjaHVua3MiLCJjaHVuayIsIm5vX21vcmUiLCJuZXh0X2luc3RydWN0aW9uX2JpdHMiLCJ2IiwiYWRkZWRfYml0cyIsImFkdmFuY2UiLCJza2lwIiwib2Zmc2V0X3NoaWZ0Iiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzIiwic2tpcCQwIiwib2Zmc2V0X3NoaWZ0JDAiLCJvZmZzZXRfc2hpZnRfbnVtX2JpdHMkMCIsInNraXAkMSIsIm9mZnNldF9zaGlmdCQxIiwib2Zmc2V0X3NoaWZ0X251bV9iaXRzJDEiLCJvZmZzZXRfc2hpZnQkMiIsIm9mZnNldCQwIiwic2tpcCQyIiwiYWR2YW5jZV9leG4iLCJmaW5kIiwiYSIsImIiLCJpdGVyIiwic3ViX3NleHBfY291bnQiLCJzZXhwIiwibCIsImFjYyIsIngiLCJsb29wIiwic3ViIiwiaW5kZXgiLCJpbmRleCQwIiwibG9vcF9saXN0Iiwic2V4cHMiLCJmaW5hbGl6ZSIsImZpbmRfc3ViX3NleHBfcGh5cyIsImZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzIiwidG9fbGlzdCIsImFjYyQwIiwidG9fYXJyYXkiLCJjb21wYXJlIiwidDEiLCJ0MiIsInNleHBfb2ZfdCIsInVuZXNjYXBlZF8wMDYiLCJhdG9tXzAwNCIsImxvY18wMDIiLCJlbGVtZW50c18wMTEiLCJsb2NfMDA5Iiwic2V4cF9vZl90X29yX2NvbW1lbnQiLCJhcmcwXzAxMyIsInJlczBfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfY29tbWVudCIsImNvbW1lbnRfMDIwIiwibG9jXzAxOCIsImFyZ18wMjEiLCJibmRzXzAxNyIsImFyZ18wMTkiLCJibmRzXzAxNyQwIiwic2V4cF8wMjciLCJjb21tZW50c18wMjUiLCJoYXNoX3NlbWlfcG9zXzAyMyIsImFyZ18wMjgiLCJibmRzXzAyMiIsImFyZ18wMjYiLCJibmRzXzAyMiQwIiwiYXJnXzAyNCIsImJuZHNfMDIyJDEiLCJjb21wYXJlX3Rfb3JfY29tbWVudCIsImNvbXBhcmVfY29tbWVudCIsImZvcmdldF90JDAiLCJrIiwiYXRvbSIsImVsZW1lbnRzIiwieHMiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyIsInRvY3MkMCIsInRvYyIsImZvcmdldF90b2NzIiwiZm9yZ2V0X3RvYyQwIiwiZm9yZ2V0X3QiLCJmb3JnZXRfdG9jIiwieSIsInRfb3JfY29tbWVudCIsInRfb3JfY29tbWVudHMiLCJlbXB0eSIsImdldF9tYW55Iiwic3RhY2skMCIsInN0YWNrIiwiZW1wdHkkMCIsImdldF9zaW5nbGUiLCJnZXRfbWFueSQwIiwiaW5pdGlhbF9zdGF0ZSIsImVycm9yX3N0YXRlIiwibW9kZSIsImtpbmQiLCJwb3NpdGlvbnMiLCJhdG9tX2J1ZmZlciIsInN0YXRlIiwibGluZSIsImNvbHVtbiIsInBvc2l0aW9uIiwiY29udGV4dCIsImhhc191bmNsb3NlZF9wYXJlbiIsInNldF9lcnJvcl9zdGF0ZSIsImF1dG9tYXRvbl9zdGF0ZSIsIm1lc3NhZ2UiLCJvbGRfcGFyc2VyX2V4biIsInJlcG9ydCIsInBwZiIsImZpbGVuYW1lIiwibXNnIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInJhaXNlIiwicmVhc29uIiwiYXRfZW9mIiwicmFpc2VfZXJyb3IiLCJjdXJyZW50X3BvcyIsImRlbHRhIiwic2V0X2F1dG9tYXRvbl9zdGF0ZSIsImFkdmFuY2VfZW9sIiwibmV3bGluZV9vZmZzZXQiLCJibG9ja19jb21tZW50X2RlcHRoIiwiYWRkX3Rva2VuX2NoYXIiLCJjaGFyJDAiLCJhZGRfYXRvbV9jaGFyIiwiYyIsImFkZF9xdW90ZWRfYXRvbV9jaGFyIiwiaXNfaWdub3JpbmciLCJpc19ub3RfaWdub3JpbmciLCJjaGVja19uZXdfc2V4cF9hbGxvd2VkIiwiaXNfc2luZ2xlIiwiYWRkX3BvcyIsImFkZF9maXJzdF9jaGFyIiwiZXBzX2FkZF9maXJzdF9jaGFyX2hhc2giLCJzdGFydF9xdW90ZWRfc3RyaW5nIiwiYWRkX2VzY2FwZWQiLCJjJDAiLCJlcHNfYWRkX2VzY2FwZWRfY3IiLCJoZXhfdmFsIiwiYWRkX2RlY19lc2NhcGVfY2hhciIsImFkZF9sYXN0X2RlY19lc2NhcGVfY2hhciIsInZhbHVlIiwiY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoIiwiYWRkX2hleF9lc2NhcGVfY2hhciIsImFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciIsIm9wZW5pbmciLCJkb19yZXNldF9wb3NpdGlvbnMiLCJ0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQiLCJmIiwic2F2ZWRfb2Zmc2V0Iiwic2F2ZWRfZnVsbF9zZXhwcyIsImUkMCIsImUiLCJpc190b3BfbGV2ZWwiLCJjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCIsInNleHBfYWRkZWQiLCJpbm5lcl9jb21tZW50X2RlcHRoIiwiaXNfY29tbWVudCIsInRsIiwibWFrZV9saXN0IiwiYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IiwiY29tbWVudCIsImFkZF9zZXhwX3RvX3N0YWNrX2NzdCIsInJldl9jb21tZW50cyIsImhhc2hfc2VtaV9wb3MiLCJjbG9zaW5nIiwic3RhY2skMSIsInN0YWNrJDIiLCJlbmRfcG9zIiwibWFrZV9sb2MiLCJhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyIsImxlbiIsImVwc19wdXNoX2F0b20iLCJzdHIiLCJsb2MiLCJwdXNoX3F1b3RlZF9hdG9tIiwiYnVmIiwicyIsInN0YXJ0X3NleHBfY29tbWVudCIsInN0YXJ0X2Jsb2NrX2NvbW1lbnQiLCJlbmRfYmxvY2tfY29tbWVudCIsInN0YXJ0X2xpbmVfY29tbWVudCIsImVuZF9saW5lX2NvbW1lbnQiLCJlcHNfZW9pX2NoZWNrIiwidG9fc3RyaW5nIiwidHJfMDBfZiIsInRyXzAxX2YiLCJ0cl8wMl9mIiwidHJfMDNfZiIsInRyXzA0X2YiLCJ0cl8wNV9mIiwidHJfMDZfZiIsInRyXzA3X2YiLCJ0cl8wOF9mIiwidHJfMDlfZiIsInRyXzEwX2YiLCJ0cl8xMV9mIiwidHJfMTJfZiIsInRyXzEzX2YiLCJ0cl8xNF9mIiwidHJfMTVfZiIsInRyXzE2X2YiLCJ0cl8xN19mIiwidHJfMThfZiIsInRyXzE5X2YiLCJ0cl8yMF9mIiwidHJfMjFfZiIsInRyXzIyX2YiLCJ0cl8yM19mIiwidHJfMjRfZiIsInRyXzI1X2YiLCJ0cl8yNl9mIiwidHJfMjdfZiIsInRyXzI4X2YiLCJ0cl8yOV9mIiwidHJfMzBfZiIsInRyXzMxX2YiLCJ0cl8zMl9mIiwidHJfMzNfZiIsInRyXzM0X2YiLCJ0cl8zNV9mIiwidHJfMzZfZiIsInRyXzM3X2YiLCJ0cl8zOF9mIiwidHJfMzlfZiIsInRyXzQwX2YiLCJ0cl80MV9mIiwidHJfNDJfZiIsInRyXzQzX2YiLCJ0cl80NF9mIiwidHJfNDVfZiIsInRyXzQ2X2YiLCJ0cl80N19mIiwidHJfNDhfZiIsInRyXzQ5X2YiLCJ0cl81MF9mIiwidHJfNTFfZiIsInRyXzUyX2YiLCJ0cl81M19mIiwidHJfNTRfZiIsInRyXzU1X2YiLCJ0cl81Nl9mIiwidHJfNTdfZiIsInRyXzU4X2YiLCJ0cl81OV9mIiwidHJfNjBfZiIsInRyXzYxX2YiLCJ0cl82Ml9mIiwidHJfNjNfZiIsInRyXzY0X2YiLCJ0cl82NV9mIiwidHJfNjZfZiIsInRyXzY3X2YiLCJ0cl82OF9mIiwidHJfNjlfZiIsInRyXzcwX2YiLCJ0cl83MV9mIiwidHJfNzJfZiIsInRyXzczX2YiLCJ0cl83NF9mIiwidHJfNzVfZiIsInRyXzc2X2YiLCJ0cl83N19mIiwidHJfNzhfZiIsInRyX2VvaV8wMF9mIiwidHJfZW9pXzAxX2YiLCJ0cl9lb2lfMDJfZiIsInRyX2VvaV8wM19mIiwidHJfZW9pXzA0X2YiLCJ0cl9lb2lfMDVfZiIsInRyX2VvaV8wNl9mIiwidHJfZW9pXzA3X2YiLCJ0cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zX2VvaSIsIm9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIiwiZmVlZCIsImlkeCIsImZlZWRfZW9pIiwib2xkX3BhcnNlcl9jb250X3N0YXRlIiwiZmVlZF9zdWJzdHJpbmdfdW5zYWZlIiwiaSIsInN0b3AiLCJpJDAiLCJpJDEiLCJmZWVkX3N1YmJ5dGVzX3Vuc2FmZSIsImZlZWRfc3Vic3RyaW5nIiwic3RyX2xlbiIsImZlZWRfc3ViYnl0ZXMiLCJmZWVkX3N0cmluZyIsImZlZWRfYnl0ZXMiLCJvZl9zdWJzdHJpbmciLCJsb2NhdGlvbl8wMDYiLCJzdWJfc2V4cF8wMDQiLCJ1c2VyX2V4bl8wMDIiLCJ1c2VyX2V4biIsInN1Yl9zZXhwIiwibG9jYXRpb24iLCJzdGFydCIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJhcmcwXzAwMyIsInJlczBfMDA0Iiwia2luZF90b19zdGFjayIsIm1ha2UiLCJtYWtlX3ZhbHVlIiwicGFyc2Vfc3RyaW5nX2V4biIsInBhcnNlX3N0cmluZyIsIm1ha2VfZWFnZXIiLCJsaW5lJDAiLCJjb2x1bW4kMCIsInBvc2l0aW9uJDAiLCJub19zZXhwX2lzX2Vycm9yIiwiZ290X3NleHAiLCJwYXJzZWRfdmFsdWUiLCJ1cGRhdGVfbGV4YnVmIiwibGV4YnVmIiwicGFyc2VfZ2VuIiwiZXhuJDAiLCJleG4iLCJzZXRfbm9fc2V4cF9pc19lcnJvciIsIm1hdGNoIiwicGFyc2UiLCJwYXJzZV9vcHQiLCJyZXJhaXNlIiwiY29udl9leG4iLCJjb252IiwieCQwIiwiY29udl9jb21iaW5lIiwicmVzdWx0IiwiciIsImFuZF9nZXRfcG9zaXRpb25zIiwiZ2V0X3NleHAiLCJhbmRfcG9zaXRpb25zIiwianVzdF9nZXRfcG9zaXRpb25zIiwianVzdF9wb3NpdGlvbnMiLCJhcHBseV9mIiwiYXBwbHlfZiQwIiwiZmluZCQwIiwiYXBwbHlfZiQxIiwiZmluZCQxIiwiemVybyIsIm9yaWdpbiIsInNleHBfb2ZfdCIsImNvbCIsInJvdyIsImFkZCIsInQxIiwidDIiLCJzdWIiLCJnZXEiLCJjMiIsInIyIiwiYzEiLCJyMSIsIm9mX2xleGluZyIsInBvc19jbnVtIiwicG9zX2JvbCIsInBvc19sbnVtIiwibWFwIiwidCIsImYiLCJvZl9wb3MiLCJvZl9saXN0Iiwib2ZfYSIsInhzIiwib2ZfdCIsInYzJDAiLCJ2MiQwIiwidjEkMCIsIm9mX3Rfb3JfY29tbWVudCIsInYzIiwidjIiLCJ2MSIsIngiLCJjIiwib2ZfY29tbWVudCIsInNleHBfb2ZfY29tbWVudCIsInNleHBfb2ZfdF9vcl9jb21tZW50IiwicmVsIiwib3V0ZXJfcCIsInAiLCJhdXhfdCIsInNvcHQiLCJzIiwicG9zIiwiZW5kX3BvcyIsInRvY3MiLCJzdGFydF9wb3MiLCJ0b2MiLCJhdXhfdG9jIiwiYXV4X2MiLCJ0eHQiLCJjcyIsInBvcyQwIiwicmVsYXRpdml6ZSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5dGFibGVzaXplIiwiY2FtbF9wYXJzZXJfZW52IiwiXzEiLCJfMiIsInl5YWN0IiwieXl0YWJsZXMiLCJzZXhwIiwibGV4ZnVuIiwibGV4YnVmIiwic2V4cF9vcHQiLCJzZXhwcyIsInJldl9zZXhwcyIsInNleHBzX2FicyIsIm9jYW1sX2xleF90YWJsZXMiLCJidWYiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsInNjYW5fc3RyaW5nIiwibG9jcyIsImxvY3MkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJsb2NzJDEiLCJsb2NzJDIiLCJzdGFydCIsImdlbl9sb2FkX3NleHBfbG9jIiwidW5pdCIsIm9mX2ludF9zdHlsZSIsIm9mX2Zsb2F0X3N0eWxlIiwidG9fc3RyaW5nIiwidG9fc3RyaW5nX21hY2giLCJ0b19zdHJpbmdfaHVtIiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsImRlZmF1bHRfaW5kZW50IiwibWVzc2FnZSIsImNvbXBhcmUiLCJlcXVhbCIsInRfc2V4cF9ncmFtbWFyIiwid2l0aF9uZXdfYnVmZmVyIiwib2MiLCJvdXRwdXRfaHVtIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJpbmRlbnQiLCJvdXRwdXRfbWFjaCIsInBybmciLCJ0ZW1wX2ZpbGVfbmFtZSIsInByZWZpeCIsInN1ZmZpeCIsInYiLCJyYW5kX3N0YXRlIiwicmV0Iiwicm5kIiwib3Blbl90ZW1wX2ZpbGUiLCJvcHQiLCJzdGgiLCJwZXJtIiwiY291bnRlciIsIm5hbWUiLCJlJDAiLCJlIiwiY291bnRlciQwIiwic2F2ZV9vZl9vdXRwdXQiLCJvdXRwdXRfZnVuY3Rpb24iLCJmaWxlIiwidG1wX25hbWUiLCJvdXRwdXRfc2V4cF9ubCIsImRvX291dHB1dCIsInNhdmVfaHVtIiwic2F2ZV9tYWNoIiwib3V0cHV0X3NleHBzX25sIiwic2F2ZV9zZXhwc19odW0iLCJzYXZlX3NleHBzX21hY2giLCJzY2FuX3NleHAiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9zZXhwcyIsInNjYW5fcmV2X3NleHBzIiwiZ2V0X21haW5fYnVmIiwiYnVmJDAiLCJidWYkMSIsInNjYW5fZm9sZF9zZXhwcyIsImluaXQiLCJtYWluIiwiYWNjIiwiYWNjJDAiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBzX2NvbnYiLCJjb2xsIiwic2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UiLCJjb250YWluaW5nX3NleHAiLCJsb2NhdGlvbiIsImludmFsaWRfc2V4cCIsImV4biIsIngkMCIsIngkMSIsIngkMiIsImdldF9zZXhwIiwiZ2V0X3JhbmdlIiwicmFuZ2UiLCJzZXhwX29mX2NvbnYiLCJzZXhwX29mX2EiLCJhIiwiZmluZF9zZXhwIiwiYW5ub3Rfc2V4cCIsImxvb3AiLCJzdWJfc2V4cCIsImFubm90cyIsInJlcyIsImV4biQwIiwiaW52YWxpZF9zZXhwJDAiLCJjcmVhdGUiLCJ0ZXh0X2xpbmUiLCJzdGgkMCIsInRleHRfY2hhciIsInN0aCQxIiwiYnVmX3BvcyIsInN0aCQyIiwiZ2xvYmFsX29mZnNldCIsImZhaWwiLCJtc2ciLCJ3aXRoX2J1Zl9wb3MiLCJwZSIsInBwb3MiLCJhbm5vdGF0ZV9zZXhwIiwiaXRlciIsInN0YXJ0X3BvcyQwIiwiYW5ub3QiLCJlbmRfcG9zJDAiLCJyYWlzZV9mb3VuZCIsInN0YXRlIiwicmFpc2VfZm91bmQkMCIsInBvc2l0aW9ucyIsInBhcnNlX3Bvc19vZl9zdGF0ZSIsInJ1bl9mZWVkX2xvb3AiLCJzdGFjayIsImxlbiIsInN0ciIsInN0cl9sZW4iLCJwb3NfbGVuIiwibWF4X3BvcyIsInByZXZpb3VzX29mZnNldCIsInN0YWNrJDAiLCJyZXN1bHQiLCJvZmZzZXQiLCJuZXh0X3BvcyIsImVyciIsInBhcnNlX3N0YXRlIiwicGFyc2VfZXJyb3IiLCJ1c2VkX3JlZiIsInBhcnNlX2Z1biIsImNvbnRfc3RhdGUiLCJwYXJzZSIsInBhcnNlX3BvcyIsImxlbiQwIiwicmFpc2VfZm91bmQkMSIsImxlbmd0aCIsInVuc2FmZV9mZWVkX2xvb3AiLCJzdGFjayQxIiwicG9zJDEiLCJwYXJzZV9zdHIiLCJyYWlzZV9mb3VuZCQyIiwibGVuZ3RoJDAiLCJ1bnNhZmVfZmVlZF9sb29wJDAiLCJwYXJzZV9zdHJfYW5ub3QiLCJyYWlzZV9mb3VuZCQzIiwibGVuZ3RoJDEiLCJ1bnNhZmVfZmVlZF9sb29wJDEiLCJwYXJzZV9iaWdzdHJpbmciLCJyYWlzZV9mb3VuZCQ0IiwibGVuZ3RoJDIiLCJ1bnNhZmVfZmVlZF9sb29wJDIiLCJwYXJzZV9iaWdzdHJpbmdfYW5ub3QiLCJta190aGlzX3BhcnNlIiwibXlfcGFyc2UiLCJwYXJzZV9wb3MkMCIsInBhcnNlX3BvcyQxIiwiZmVlZF9lbmRfb2ZfaW5wdXQiLCJ0aGlzX3BhcnNlIiwid3NfYnVmIiwiZ2VuX2lucHV0X3NleHAiLCJpYyIsInRoaXNfcGFyc2UkMSIsInNleHAkMCIsInRoaXNfcGFyc2UkMCIsImlucHV0X3NleHAiLCJnZW5faW5wdXRfcmV2X3NleHBzIiwicmV2X3NleHBzX3JlZiIsImJ1Zl9sZW4iLCJsZW4kMiIsInRoaXNfcGFyc2UkMiIsIm5fcGFyc2VkIiwibmV3X2xlbiIsImxlbiQxIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJvZl9zdHJpbmdfYmlnc3RyaW5nIiwibG9jIiwiZ2V0X2xlbiIsImdldF9zdWIiLCJjb250X3N0YXRlX3N0ciIsIm9mX3N0cmluZyIsIm9mX3N0cmluZ19tYW55IiwiZ2V0X2JzdHJfc3ViX3N0ciIsImJzdHIiLCJpIiwiYnN0cl93c19idWYiLCJvZl9iaWdzdHJpbmciLCJnZW5fbG9hZF9yZXZfc2V4cHMiLCJleGMkMCIsImV4YyIsImxvYWRfcmV2X3NleHBzIiwibG9hZF9zZXhwcyIsImdlbl9sb2FkX3NleHAiLCJzdHJpY3QiLCJ0aGlzX3BhcnNlJDQiLCJzZXhwJDEiLCJ0aGlzX3BhcnNlJDMiLCJjb250X3N0YXRlJDAiLCJsb2FkX3NleHAiLCJnZXRfc2V4cCQwIiwiZ2V0X3JhbmdlJDAiLCJzZXhwX29mX2NvbnYkMCIsImZpbmRfc2V4cCQwIiwiaW5wdXRfcmV2X3NleHBzJDAiLCJpbnB1dF9zZXhwJDAiLCJpbnB1dF9zZXhwcyQwIiwib2Zfc3RyaW5nJDAiLCJvZl9iaWdzdHJpbmckMCIsImxvYWRfcmV2X3NleHBzJDAiLCJsb2FkX3NleHBzJDAiLCJsb2FkX3NleHAkMCIsImNvbnYiLCJiYWRfc2V4cCIsImJhZF9hbm5vdF9zZXhwIiwiZ2V0X2NvbnZfZXhuIiwibGluZSIsImxvYWRfc2V4cF9jb252IiwicmFpc2VfY29udl9leG4iLCJsb2FkX3NleHBfY29udl9leG4iLCJsb2FkX3NleHBzX2NvbnYiLCJyZXZfYW5ub3Rfc2V4cHMiLCJsb2FkX3NleHBzX2NvbnZfZXhuIiwiZ2VuX29mX3N0cmluZ19jb252IiwiYW5ub3Rfb2Zfc3RyaW5nIiwib2Zfc3RyaW5nX2NvbnYiLCJvZl9iaWdzdHJpbmdfY29udiIsIm9zY2UiLCJnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2ZfYmlnc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJpc191bml0Iiwic2VhcmNoX3BoeXNpY2FsIiwiY29udGFpbmVkIiwibHN0IiwiaCIsInN1YnN0X2ZvdW5kIiwic3Vic3QiLCJmb3VuZCIsInQkMCIsInNleHBfb2ZfcG9zIiwicmV0dXJuJDAiLCJwdXRjIiwic3QiLCJiaW5kIiwibSIsInJ1biIsImVtaXRfY2hhciIsImVtaXRfc3RyaW5nIiwibiIsImVtaXRfY2hhcnMiLCJhZHZhbmNlIiwiYW5jaG9yIiwiZGVsdGEiLCJ1bmVzY2FwZWRfYXRvbSIsImxpbmVfY29tbWVudCIsIm5ld19wb3MiLCJwcmV2X3VuZXNjYXBlZCIsImltbWVkX2FmdGVyIiwicHJldl91bmVzY2FwZWQkMCIsInByZXZfdW5lc2NhcGVkJDEiLCJuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d28iLCJuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudCIsIm5lZWRfdG9fcmVwb3NpdGlvbiIsIm5ld19yb3ciLCJyb3dfZGVsdGEiLCJuZXdfcG9zJDAiLCJyb3dfZGVsdGEkMCIsIm4kMCIsInJlbmRlcl90IiwiZW5kX2RlbHRhIiwic3RhcnRfZGVsdGEiLCJjaGlsZF9hbmNob3IiLCJyZW5kZXJfdG9jIiwiZm10X3RleHQiLCJ0ZXh0IiwidGV4dCQwIiwiZm10X3RleHQkMCIsInVuZXNjYXBlZCIsInJlbmRlcl9jIiwiZGVsdGEkMCIsInJlbmRlciIsImFzZXhwIiwiZm9yZ2V0X3QkMCIsImsiLCJmb3JnZXRfdG9jcyQwIiwidG9jcyQwIiwiZm9yZ2V0X3RvY3MiLCJmb3JnZXRfdG9jJDAiLCJmb3JnZXRfdCIsImZvcmdldF90b2MiLCJ5IiwidF9vcl9jb21tZW50IiwidF9vcl9jb21tZW50cyIsIm91dHB1dCIsInNhdmUiLCJzYXZlX3NleHBzIiwidmVjX3NleHBfZ3JhbW1hciIsIm1hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2Zsb2F0X3ZlYyIsInZlYyIsImxzdF9yZWYiLCJzZXhwX29mX2JpZ3N0cmluZyIsInNleHBfb2ZfZmxvYXQzMl92ZWMiLCJzZXhwX29mX2Zsb2F0NjRfdmVjIiwic2V4cF9vZl92ZWMiLCJzZXhwX29mX2Zsb2F0X21hdCIsIm1hdCIsInNleHBfb2ZfZmxvYXQzMl9tYXQiLCJzZXhwX29mX2Zsb2F0NjRfbWF0Iiwic2V4cF9vZl9tYXQiLCJiaWdzdHJpbmdfc2V4cF9ncmFtbWFyIiwiYmlnc3RyaW5nX29mX3NleHAiLCJmbG9hdF92ZWNfb2Zfc2V4cCIsImVtcHR5X2Zsb2F0X3ZlYyIsImNyZWF0ZV9mbG9hdF92ZWMiLCJjcmVhdGVfZmxvYXQzMl92ZWMiLCJjcmVhdGVfZmxvYXQ2NF92ZWMiLCJlbXB0eV9mbG9hdDMyX3ZlYyIsImVtcHR5X2Zsb2F0NjRfdmVjIiwiZmxvYXQzMl92ZWNfb2Zfc2V4cCIsImZsb2F0NjRfdmVjX29mX3NleHAiLCJ2ZWNfb2Zfc2V4cCIsImNoZWNrX3Rvb19tdWNoX2RhdGEiLCJkYXRhIiwiZmxvYXRfbWF0X29mX3NleHAiLCJjcmVhdGVfZmxvYXRfbWF0Iiwic24iLCJzbSIsImRhdGEkMCIsImRhdGEkMSIsImNvbCQwIiwiY3JlYXRlX2Zsb2F0MzJfbWF0IiwiY3JlYXRlX2Zsb2F0NjRfbWF0IiwiZmxvYXQzMl9tYXRfb2Zfc2V4cCIsImZsb2F0NjRfbWF0X29mX3NleHAiLCJtYXRfb2Zfc2V4cCIsInN0cmluZ19vZl9vZl9zZXhwX29mIiwidG9fc2V4cCIsIm9mX3N0cmluZ19vZl9vZl9zZXhwIiwib2Zfc2V4cCIsInRfb2Zfc2V4cCIsInRfb2Zfc2V4cCQwIiwic2V4cF9vZl90JDAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X29mX3NleHAiLCJ1bml0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYm9vbCIsImJvb2xfb2Zfc2V4cCIsImJvb2xfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfb2Zfc2V4cCIsInN0cmluZ19zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2NoYXIiLCJjaGFyX29mX3NleHAiLCJjaGFyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50IiwiaW50X29mX3NleHAiLCJpbnRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9mbG9hdCIsImZsb2F0X29mX3NleHAiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2ludDMyIiwiaW50MzJfb2Zfc2V4cCIsImludDMyX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfaW50NjQiLCJpbnQ2NF9vZl9zZXhwIiwiaW50NjRfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsIm5hdGl2ZWludF9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX3JlZiIsInJlZl9vZl9zZXhwIiwicmVmX3NleHBfZ3JhbW1hciIsInNleHBfb2ZfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJsYXp5X3Rfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fb2Zfc2V4cCIsIm9wdGlvbl9zZXhwX2dyYW1tYXIiLCJzZXhwX29mX2xpc3QiLCJsaXN0X29mX3NleHAiLCJsaXN0X3NleHBfZ3JhbW1hciIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9vZl9zZXhwIiwiYXJyYXlfc2V4cF9ncmFtbWFyIiwic2V4cF9vZl9leG4iLCJleG5fc2V4cF9ncmFtbWFyIiwiY29lcmNlIiwiZG9jX2NvbW1lbnRfdGFnIiwicmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0IiwiaWxsZWdhbF9hdG9tIiwiZXh0cmFjdF9wb3NfbHN0IiwiaXgiLCJzZXhwX3N0ciIsImV4dHJhY3RfcG9zIiwiZWwiLCJleHRyYWN0X21hdGNoIiwidGFnIiwiYXJnX2l4IiwiYXJncyIsIm1heWJlX3giLCJleHRyYWN0X3JlYyIsImtleSIsInJlc3QiLCJpZCIsInN1YnN0X29wdGlvbiIsInN1cF9zdWJzdCIsInN1YnN0X3BhdGgiLCJzdWJfZWwiLCJzdWJfc3Vic3QiLCJyZWNfc3Vic3QiLCJpbXBsb2RlIiwiZmFpbF9wYXJzZSIsImRvdF9peCIsImRvdF9peDEiLCJzdHJfYWNjIiwiYyQwIiwicGF0aF9lbCIsIml4JDAiLCJhY2MkMSIsIml4JDEiLCJzdHJfYWNjJDAiLCJpeDEiLCJpeCQyIiwic3RyX2FjYyQxIiwiaXgkNiIsImluZGV4X2FjYyIsIml4JDMiLCJtYXRjaCIsImluZGV4X2FjYyQxIiwibmV3X2luZGV4X2FjYyIsIml4JDQiLCJpeCQ1IiwiaW5kZXhfYWNjJDIiLCJpbmRleF9hY2MkMCIsInBhdGhfZWwkMCIsImRvdF9peCQwIiwiYWNjJDIiLCJnZXRfc3Vic3QiLCJwYXRoIiwicGF0aCQwIiwicGF0aCQxIiwic3RyJDAiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RfZnVuIiwicmVwbGFjZV9ub19wYXRoIiwicmVnaXN0ZXIiLCJleGNfbmFtZSIsInJlZ2lzdGVyMSIsIm1ha2VfZXhjIiwic2V4cF9vZl9hcmcxIiwic2V4cDEiLCJyZWdpc3RlcjIiLCJzZXhwX29mX2FyZzIiLCJzZXhwMiIsInJlZ2lzdGVyMyIsInNleHBfb2ZfYXJnMyIsInNleHAzIiwicmVnaXN0ZXI0Iiwic2V4cF9vZl9hcmc0Iiwic2V4cDQiLCJyZWdpc3RlcjUiLCJzZXhwX29mX2FyZzUiLCJzZXhwNSIsInJlZ2lzdGVyNiIsInNleHBfb2ZfYXJnNiIsInNleHA2IiwicmVnaXN0ZXI3Iiwic2V4cF9vZl9hcmc3Iiwic2V4cDciLCJyZWdpc3RlcjgiLCJzZXhwX29mX2FyZzgiLCJzZXhwOCIsInJlZ2lzdGVyOSIsInNleHBfb2ZfYXJnOSIsInNleHA5IiwicmVnaXN0ZXIxMCIsInNleHBfb2ZfYXJnMTAiLCJzZXhwMTAiLCJpbnQ2NCQwIiwiZ29sZGVuX2dhbW1hIiwicG9wY291bnQiLCJvZl9pbnQiLCJzZWVkIiwiY29weSIsIm9kZF9nYW1tYSIsIm1peF9iaXRzIiwieiIsIm4iLCJtaXg2NCIsInokMCIsInokMSIsIm5leHRfc2VlZCIsInQiLCJuZXh0Iiwib2Zfc2VlZF9hbmRfZ2FtbWEiLCJnYW1tYSIsInNlZWQkMCIsInJhbmRvbV9pbnQ2NCIsInJhbmRvbV9zdGF0ZSIsImNyZWF0ZSIsInNwbGl0IiwibmV4dF9pbnQ2NCIsInBlcnR1cmIiLCJzYWx0IiwiYm9vbCIsInN0YXRlIiwieCIsImludDY0IiwibG8iLCJoaSIsInJlbWFpbmRlcl9tYXhpbXVtIiwiZHJhdyQwIiwicmVtYWluZGVyIiwiZHJhd19tYXhpbXVtIiwiZHJhdyIsImludCQwIiwibG8kMCIsImhpJDAiLCJpbnQzMiIsIm5hdGl2ZWludCIsImludDYzIiwiZG91YmxlX3VscCIsInVuaXRfZmxvYXRfZnJvbV9pbnQ2NCIsInVuaXRfZmxvYXQiLCJmbG9hdCQwIiwicmFuZ2UiLCJtaWQiLCJmIiwiYml0c190b19yZXByZXNlbnQiLCJ0JDAiLCJsb2dfdW5pZm9ybSIsIm1pbl9iaXRzIiwibWF4X2JpdHMiLCJiaXRzIiwidF9zZXhwX2dyYW1tYXIiLCJvZl9mbG9hdCIsInRvX2Zsb2F0Iiwib2ZfaW50X2V4biIsInRvX2ludF9leG4iLCJoYXNoX2ZvbGRfdCIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJvZl9zdHJpbmciLCJ0b19zdHJpbmciLCJlcXVhbCIsImNvbXBhcmUiLCJtaW4iLCJtYXgiLCJhc2NlbmRpbmciLCJkZXNjZW5kaW5nIiwiYmV0d2VlbiIsImNsYW1wX2V4biIsImNsYW1wIiwiY29tcGFyYXRvciIsInBwIiwiaGFzaGFibGUiLCJpc19wb3NpdGl2ZSIsImlzX25vbl9uZWdhdGl2ZSIsImlzX25lZ2F0aXZlIiwiaXNfbm9uX3Bvc2l0aXZlIiwic2lnbiIsImludmFyaWFudCIsInRvX3N0cmluZ19odW0iLCJvbmUiLCJtaW51c19vbmUiLCJyZW0iLCJyb3VuZCIsInJvdW5kX3Rvd2FyZHNfemVybyIsInJvdW5kX2Rvd24iLCJyb3VuZF91cCIsInJvdW5kX25lYXJlc3QiLCJzdWNjIiwicHJlZCIsInBvdyIsImJpdF9hbmQiLCJiaXRfb3IiLCJiaXRfeG9yIiwiYml0X25vdCIsInBvcGNvdW50JDAiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJkZWNyIiwiaW5jciIsIm9mX2ludDMyX2V4biIsInRvX2ludDMyX2V4biIsIm9mX2ludDY0X2V4biIsInRvX2ludDY0Iiwib2ZfbmF0aXZlaW50X2V4biIsInRvX25hdGl2ZWludF9leG4iLCJvZl9mbG9hdF91bmNoZWNrZWQiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsIm1pbl92YWx1ZSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwiLCJjZWlsX3BvdzIiLCJmbG9vcl9wb3cyIiwiY2VpbF9sb2cyIiwiZmxvb3JfbG9nMiIsImlzX3BvdzIiLCJjbHoiLCJjdHoiLCJzeW1ib2wiLCJsbm90IiwiYWJzIiwiemVybyIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInRfc2V4cF9ncmFtbWFyJDAiLCJvZl9mbG9hdCQwIiwidG9fZmxvYXQkMCIsIm9mX2ludF9leG4kMCIsInRvX2ludF9leG4kMCIsImhhc2hfZm9sZF90JDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsImVxdWFsJDAiLCJjb21wYXJlJDAiLCJtaW4kMCIsIm1heCQwIiwiYXNjZW5kaW5nJDAiLCJkZXNjZW5kaW5nJDAiLCJiZXR3ZWVuJDAiLCJjbGFtcF9leG4kMCIsImNsYW1wJDAiLCJjb21wYXJhdG9yJDAiLCJwcCQwIiwiaGFzaGFibGUkMCIsImlzX3Bvc2l0aXZlJDAiLCJpc19ub25fbmVnYXRpdmUkMCIsImlzX25lZ2F0aXZlJDAiLCJpc19ub25fcG9zaXRpdmUkMCIsInNpZ24kMCIsImludmFyaWFudCQwIiwidG9fc3RyaW5nX2h1bSQwIiwiemVybyQwIiwib25lJDAiLCJtaW51c19vbmUkMCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwic3ltYm9sJDEyIiwibmVnIiwic3ltYm9sJDEzIiwic3ltYm9sJDE0Iiwic3ltYm9sJDE1Iiwic3ltYm9sJDE2IiwicmVtJDAiLCJzeW1ib2wkMTciLCJsYW5kIiwibG9yIiwibHhvciIsImxub3QkMCIsImxzbCIsImFzciIsInJvdW5kJDAiLCJyb3VuZF90b3dhcmRzX3plcm8kMCIsInJvdW5kX2Rvd24kMCIsInJvdW5kX3VwJDAiLCJyb3VuZF9uZWFyZXN0JDAiLCJhYnMkMCIsInN1Y2MkMCIsInByZWQkMCIsInBvdyQwIiwiYml0X2FuZCQwIiwiYml0X29yJDAiLCJiaXRfeG9yJDAiLCJiaXRfbm90JDAiLCJwb3Bjb3VudCQxIiwic2hpZnRfbGVmdCQwIiwic2hpZnRfcmlnaHQkMCIsImRlY3IkMCIsImluY3IkMCIsIm9mX2ludDMyX2V4biQwIiwidG9faW50MzJfZXhuJDAiLCJvZl9pbnQ2NF9leG4kMCIsInRvX2ludDY0JDAiLCJvZl9uYXRpdmVpbnRfZXhuJDAiLCJ0b19uYXRpdmVpbnRfZXhuJDAiLCJvZl9mbG9hdF91bmNoZWNrZWQkMCIsIm51bV9iaXRzJDAiLCJtYXhfdmFsdWUkMCIsIm1pbl92YWx1ZSQwIiwibHNyIiwic2hpZnRfcmlnaHRfbG9naWNhbCQwIiwiY2VpbF9wb3cyJDAiLCJmbG9vcl9wb3cyJDAiLCJjZWlsX2xvZzIkMCIsImZsb29yX2xvZzIkMCIsImlzX3BvdzIkMCIsImNseiQwIiwiY3R6JDAiLCJ0X3NleHBfZ3JhbW1hciQyIiwib2ZfZmxvYXQkMiIsInRvX2Zsb2F0JDIiLCJvZl9pbnRfZXhuJDIiLCJ0b19pbnRfZXhuJDIiLCJoYXNoX2ZvbGRfdCQyIiwiaGFzaCQyIiwidF9vZl9zZXhwJDIiLCJzZXhwX29mX3QkMiIsIm9mX3N0cmluZyQyIiwidG9fc3RyaW5nJDIiLCJlcXVhbCQyIiwiY29tcGFyZSQyIiwibWluJDIiLCJtYXgkMiIsImFzY2VuZGluZyQyIiwiZGVzY2VuZGluZyQyIiwiYmV0d2VlbiQyIiwiY2xhbXBfZXhuJDIiLCJjbGFtcCQyIiwiY29tcGFyYXRvciQyIiwicHAkMiIsImhhc2hhYmxlJDIiLCJpc19wb3NpdGl2ZSQyIiwiaXNfbm9uX25lZ2F0aXZlJDIiLCJpc19uZWdhdGl2ZSQyIiwiaXNfbm9uX3Bvc2l0aXZlJDIiLCJzaWduJDIiLCJpbnZhcmlhbnQkMiIsInRvX3N0cmluZ19odW0kMiIsIm9uZSQyIiwibWludXNfb25lJDIiLCJyZW0kMiIsInJvdW5kJDIiLCJyb3VuZF90b3dhcmRzX3plcm8kMiIsInJvdW5kX2Rvd24kMiIsInJvdW5kX3VwJDIiLCJyb3VuZF9uZWFyZXN0JDIiLCJzdWNjJDIiLCJwcmVkJDIiLCJwb3ckMiIsImJpdF9hbmQkMiIsImJpdF9vciQyIiwiYml0X3hvciQyIiwiYml0X25vdCQyIiwicG9wY291bnQkMyIsInNoaWZ0X2xlZnQkMiIsInNoaWZ0X3JpZ2h0JDIiLCJkZWNyJDIiLCJpbmNyJDIiLCJvZl9pbnQzMl9leG4kMiIsInRvX2ludDMyX2V4biQyIiwib2ZfaW50NjRfZXhuJDIiLCJ0b19pbnQ2NCQyIiwib2ZfbmF0aXZlaW50X2V4biQyIiwidG9fbmF0aXZlaW50X2V4biQyIiwib2ZfZmxvYXRfdW5jaGVja2VkJDIiLCJudW1fYml0cyQyIiwibWF4X3ZhbHVlJDIiLCJtaW5fdmFsdWUkMiIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMiIsImNlaWxfcG93MiQyIiwiZmxvb3JfcG93MiQyIiwiY2VpbF9sb2cyJDIiLCJmbG9vcl9sb2cyJDIiLCJpc19wb3cyJDIiLCJjbHokMiIsImN0eiQyIiwic3ltYm9sJDMzIiwibG5vdCQyIiwiYWJzJDIiLCJ6ZXJvJDIiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJ0X3NleHBfZ3JhbW1hciQzIiwib2ZfZmxvYXQkMyIsInRvX2Zsb2F0JDMiLCJvZl9pbnRfZXhuJDMiLCJ0b19pbnRfZXhuJDMiLCJoYXNoX2ZvbGRfdCQzIiwiaGFzaCQzIiwidF9vZl9zZXhwJDMiLCJzZXhwX29mX3QkMyIsIm9mX3N0cmluZyQzIiwidG9fc3RyaW5nJDMiLCJzeW1ib2wkMzciLCJzeW1ib2wkMzgiLCJzeW1ib2wkMzkiLCJzeW1ib2wkNDAiLCJzeW1ib2wkNDEiLCJzeW1ib2wkNDIiLCJlcXVhbCQzIiwiY29tcGFyZSQzIiwibWluJDMiLCJtYXgkMyIsImFzY2VuZGluZyQzIiwiZGVzY2VuZGluZyQzIiwiYmV0d2VlbiQzIiwiY2xhbXBfZXhuJDMiLCJjbGFtcCQzIiwiY29tcGFyYXRvciQzIiwicHAkMyIsImhhc2hhYmxlJDMiLCJpc19wb3NpdGl2ZSQzIiwiaXNfbm9uX25lZ2F0aXZlJDMiLCJpc19uZWdhdGl2ZSQzIiwiaXNfbm9uX3Bvc2l0aXZlJDMiLCJzaWduJDMiLCJpbnZhcmlhbnQkMyIsInRvX3N0cmluZ19odW0kMyIsInplcm8kMyIsIm9uZSQzIiwibWludXNfb25lJDMiLCJzeW1ib2wkNDMiLCJzeW1ib2wkNDQiLCJzeW1ib2wkNDUiLCJzeW1ib2wkNDYiLCJuZWckMSIsInN5bWJvbCQ0NyIsInN5bWJvbCQ0OCIsInN5bWJvbCQ0OSIsInN5bWJvbCQ1MCIsInJlbSQzIiwic3ltYm9sJDUxIiwibGFuZCQxIiwibG9yJDEiLCJseG9yJDEiLCJsbm90JDMiLCJsc2wkMSIsImFzciQxIiwicm91bmQkMyIsInJvdW5kX3Rvd2FyZHNfemVybyQzIiwicm91bmRfZG93biQzIiwicm91bmRfdXAkMyIsInJvdW5kX25lYXJlc3QkMyIsImFicyQzIiwic3VjYyQzIiwicHJlZCQzIiwicG93JDMiLCJiaXRfYW5kJDMiLCJiaXRfb3IkMyIsImJpdF94b3IkMyIsImJpdF9ub3QkMyIsInBvcGNvdW50JDQiLCJzaGlmdF9sZWZ0JDMiLCJzaGlmdF9yaWdodCQzIiwiZGVjciQzIiwiaW5jciQzIiwib2ZfaW50MzJfZXhuJDMiLCJ0b19pbnQzMl9leG4kMyIsIm9mX2ludDY0X2V4biQzIiwidG9faW50NjQkMyIsIm9mX25hdGl2ZWludF9leG4kMyIsInRvX25hdGl2ZWludF9leG4kMyIsIm9mX2Zsb2F0X3VuY2hlY2tlZCQzIiwibnVtX2JpdHMkMyIsIm1heF92YWx1ZSQzIiwibWluX3ZhbHVlJDMiLCJsc3IkMSIsInNoaWZ0X3JpZ2h0X2xvZ2ljYWwkMyIsImNlaWxfcG93MiQzIiwiZmxvb3JfcG93MiQzIiwiY2VpbF9sb2cyJDMiLCJmbG9vcl9sb2cyJDMiLCJpc19wb3cyJDMiLCJjbHokMyIsImN0eiQzIiwiaW50JDEiLCJpbnQzMiQwIiwiaW50NjMkMCIsImludDY0JDEiLCJuYXRpdmVpbnQkMCIsIm9mZnNldCIsIml0ZXJpIiwidCIsImYiLCJpIiwiaW5pdCIsImtpbmQiLCJsYXlvdXQiLCJkaW0iLCJmb2xkIiwiaW5pdCQwIiwidG9fYXJyYXkiLCJzZXhwX29mX3QiLCJzZXhwX29mX2VsdCIsInNleHBfb2ZfcGFjayIsInNleHBfb2ZfbGF5b3V0IiwieF8wMDEiLCJoYXNoX2ZvbGQiLCJoYXNoX2ZvbGRfZWx0Iiwic3RhdGUiLCJzdGF0ZSQwIiwiaXRlcmkkMCIsImoiLCJkaW0xIiwiZGltMiIsImZvbGQkMCIsImVsdCIsInRvX2FycmF5JDAiLCJzZXhwX29mX3QkMCIsInhfMDAyIiwiaGFzaF9mb2xkJDAiLCJzdGF0ZSQxIiwiY3JlYXRlIiwib2JzZXJ2ZSIsIngiLCJzaXplIiwiaGFzaCIsIm9wYXF1ZSIsImdlbmVyYXRlIiwicmFuZG9tIiwiZm4iLCJkb20iLCJybmciLCJyYW5kb20kMCIsIndpdGhfc2l6ZSIsInBlcnR1cmIiLCJzYWx0IiwiZmlsdGVyX21hcCIsImxvb3AiLCJzaXplJDAiLCJ5Iiwic2l6ZSQxIiwiZmlsdGVyIiwicmV0dXJuJDAiLCJtYXAiLCJhcHBseSIsInRmIiwidHgiLCJiaW5kIiwiYWxsIiwibGlzdCIsImFsbF91bml0IiwibWFwJDAiLCJib3RoIiwibWFwMiIsIm1hcDMiLCJtYXAkMSIsImlnbm9yZV9tIiwiam9pbiIsIm9mX2xpc3QiLCJhcnJheSIsImhpIiwibG8iLCJpbmRleCIsInVuaW9uIiwib2Zfd2VpZ2h0ZWRfbGlzdCIsImFsaXN0IiwidmFsdWVzIiwid2VpZ2h0cyIsInZhbHVlX2FycmF5IiwiYWNjIiwid2VpZ2h0IiwiY3VtdWxhdGl2ZSIsInN1bSIsImNob2ljZSIsIndlaWdodGVkX3VuaW9uIiwib2ZfbGF6eSIsImxhenlfdCIsImZpeGVkX3BvaW50Iiwib2ZfZ2VuZXJhdG9yIiwid2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIiwibm9ucmVjX2xpc3QiLCJzZWxmIiwidyIsIm4iLCJyZWNfbGlzdCIsIm5vbnJlY19nZW4iLCJyZWNfZ2VuIiwicmVjdXJzaXZlX3VuaW9uIiwid2VpZ2h0ZWQiLCJzaXplcyIsIm9wdCIsInN0aCIsIm1pbl9sZW5ndGgiLCJzdGgkMCIsIm1heF9sZW5ndGgiLCJ1cHBlcl9ib3VuZCIsIm1heF9sZW5ndGgkMCIsImxlbiIsInJlbWFpbmluZyIsIm1heF9pbmRleCIsInVuaXQiLCJib29sIiwib3B0aW9uIiwidmFsdWVfdCIsImVpdGhlciIsImZzdF90Iiwic25kX3QiLCJyZXN1bHQiLCJva190IiwiZXJyX3QiLCJvayIsImVyciIsImxpc3RfZ2VuZXJpYyIsImVsdF9nZW4iLCJsaXN0X25vbl9lbXB0eSIsImxpc3Rfd2l0aF9sZW5ndGgiLCJsZW5ndGgiLCJsaXN0X2ZpbHRlcmVkIiwiZWx0cyIsImVsdHMkMCIsImxlbmd0aF9vZl9pbnB1dCIsImxlbmd0aF9vZl9vdXRwdXQiLCJpbmRpY2VzIiwibGlzdF9wZXJtdXRhdGlvbnMiLCJyZWYiLCJjaGFyX3VuaWZvcm1faW5jbHVzaXZlIiwiY2hhcl91cHBlcmNhc2UiLCJjaGFyX2xvd2VyY2FzZSIsImNoYXJfZGlnaXQiLCJjaGFyX3ByaW50X3VuaWZvcm0iLCJjaGFyX3VuaWZvcm0iLCJjaGFyX2FscGhhIiwiY2hhcl9hbHBoYW51bSIsImNoYXJfd2hpdGVzcGFjZSIsImNoYXJfcHJpbnQiLCJjaGFyJDAiLCJzbWFsbF9pbnQiLCJhbGxvd196ZXJvIiwibG93ZXJfYm91bmQiLCJ3ZWlnaHRlZF9sb3ciLCJ3ZWlnaHRlZF9oaWdoIiwic21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQiLCJzbWFsbF9zdHJpY3RseV9wb3NpdGl2ZV9pbnQiLCJ1bmlmb3JtX2luY2x1c2l2ZSIsImxvZ191bmlmb3JtX2luY2x1c2l2ZSIsIm5vbl91bmlmb3JtIiwiaW5jbHVzaXZlIiwibG9nX2luY2x1c2l2ZSIsInVuaWZvcm1fYWxsIiwibGV0X3N5bnRheF8wMDQiLCJtYWduaXR1ZGUiLCJuZWdhdGl2ZSIsInVuaWZvcm0iLCJsb2dfdW5pZm9ybSIsImludCQwIiwiaW50X3VuaWZvcm0iLCJpbnRfaW5jbHVzaXZlIiwiaW50X3VuaWZvcm1faW5jbHVzaXZlIiwiaW50X2xvZ19pbmNsdXNpdmUiLCJpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIiwidW5pZm9ybSQwIiwibG9nX3VuaWZvcm0kMCIsImludDMyIiwiaW50MzJfdW5pZm9ybSIsImludDMyX2luY2x1c2l2ZSIsImludDMyX3VuaWZvcm1faW5jbHVzaXZlIiwiaW50MzJfbG9nX2luY2x1c2l2ZSIsImludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZSIsInVuaWZvcm0kMSIsImxvZ191bmlmb3JtJDEiLCJpbnQ2MyIsImludDYzX3VuaWZvcm0iLCJpbnQ2M19pbmNsdXNpdmUiLCJpbnQ2M191bmlmb3JtX2luY2x1c2l2ZSIsImludDYzX2xvZ19pbmNsdXNpdmUiLCJpbnQ2M19sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJzeW1ib2wkMzYiLCJsbm90JDIiLCJhYnMkMiIsInplcm8kMiIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInVuaWZvcm0kMiIsImxvZ191bmlmb3JtJDIiLCJpbnQ2NCIsImludDY0X3VuaWZvcm0iLCJpbnQ2NF9pbmNsdXNpdmUiLCJpbnQ2NF91bmlmb3JtX2luY2x1c2l2ZSIsImludDY0X2xvZ19pbmNsdXNpdmUiLCJpbnQ2NF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUiLCJ1bmlmb3JtJDMiLCJsb2dfdW5pZm9ybSQzIiwibmF0aXZlaW50IiwibmF0aXZlaW50X3VuaWZvcm0iLCJuYXRpdmVpbnRfaW5jbHVzaXZlIiwibmF0aXZlaW50X3VuaWZvcm1faW5jbHVzaXZlIiwibmF0aXZlaW50X2xvZ19pbmNsdXNpdmUiLCJuYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXYiLCJmbG9hdF96ZXJvX2V4cG9uZW50IiwiZmxvYXRfemVyb19tYW50aXNzYSIsImZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdiIsImZsb2F0X3N1Ym5vcm1hbF9leHBvbmVudCIsImZsb2F0X21pbl9zdWJub3JtYWxfbWFudGlzc2EiLCJmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1IiwiZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCIsImZsb2F0X21heF9ub3JtYWxfZXhwb25lbnQiLCJmbG9hdF9tYXhfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfaW5mX2V4cG9uZW50IiwiZmxvYXRfaW5mX21hbnRpc3NhIiwiZmxvYXRfbmFuX2V4cG9uZW50IiwiZmxvYXRfbWluX25hbl9tYW50aXNzYSIsImZsb2F0X251bV9tYW50aXNzYV9iaXRzIiwibnVtX2JpdHMiLCJiaXRzIiwiZmxvYXRfbm9ybWFsX21hbnRpc3NhIiwiZmxvYXRfZXhwb25lbnQiLCJmbG9hdF96ZXJvIiwibGV0X3N5bnRheF8wMTIiLCJsZXRfc3ludGF4XzAxMyIsIm1hbnRpc3NhIiwiZXhwb25lbnQiLCJmbG9hdF9zdWJub3JtYWwiLCJmbG9hdF9ub3JtYWwiLCJmbG9hdF9pbmZpbml0ZSIsImxldF9zeW50YXhfMDIxIiwibGV0X3N5bnRheF8wMjIiLCJmbG9hdF9uYW4iLCJmbG9hdF9vZl9jbGFzcyIsImMiLCJmbG9hdF9tYXRjaGluZ19jbGFzc2VzIiwiZmxvYXRfZmluaXRlIiwiZmxvYXRfd2l0aG91dF9uYW4iLCJmbG9hdCQwIiwiZmxvYXRfZmluaXRlX25vbl96ZXJvIiwiZmxvYXRfc3RyaWN0bHlfcG9zaXRpdmUiLCJmbG9hdF9zdHJpY3RseV9uZWdhdGl2ZSIsImZsb2F0X3Bvc2l0aXZlX29yX3plcm8iLCJmbG9hdF9uZWdhdGl2ZV9vcl96ZXJvIiwiZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUiLCJsb3dlcl9pbmNsdXNpdmUiLCJ1cHBlcl9pbmNsdXNpdmUiLCJmbG9hdF9pbmNsdXNpdmUiLCJzdHJpbmdfd2l0aF9sZW5ndGhfb2YiLCJjaGFyX2dlbiIsInN0cmluZ19vZiIsInN0cmluZ19ub25fZW1wdHlfb2YiLCJzdHJpbmciLCJzdHJpbmdfbm9uX2VtcHR5Iiwic3RyaW5nX3dpdGhfbGVuZ3RoIiwiYnl0ZXMiLCJzZXhwX29mIiwiYXRvbSIsInNleHAiLCJtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIiwiY29tcGFyYXRvciIsImtleV9nZW4iLCJkYXRhX2dlbiIsImtleXMiLCJrZXlzJDAiLCJkYXRhIiwic2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciIsIm1hcF90X20iLCJtIiwic2V0X3RfbSIsImJpZ2FycmF5MSIsImJpZ3N0cmluZyIsImZsb2F0MzJfdmVjIiwiZmxvYXQ2NF92ZWMiLCJtYXhfdG90YWxfc2l6ZSIsImEiLCJiIiwibWF4X2IiLCJiX3dlaWdodGVkX2xvdyIsImJpZ2FycmF5Ml9kaW0iLCJiaWdhcnJheTIiLCJmbG9hdDMyX21hdCIsImZsb2F0NjRfbWF0IiwiY292ZXJhZ2UiLCJDbXAiLCJzYW1wbGUiLCJjb3VudHMiLCJ2YWx1ZSIsInByZXYiLCJtb25pdG9yIiwiYXRvbWljIiwic2hyaW5rIiwiZl9pbnZlcnNlIiwib2Zfc2hyaW5rZXIiLCJzbmQiLCJmc3QiLCJzcmMiLCJ0b19za2lwIiwidG9fc2tpcCQwIiwiaSQwIiwiciIsInYiLCJkaW0yJDAiLCJkaW0xJDAiLCJzaHJpbmskMCIsImZpZWxkIiwiZGltcyIsInNraXAiLCJlbHRfdCIsImxpc3RfdCIsInRhaWwiLCJoZWFkIiwic2hyaW5rZXIiLCJsIiwic2hyaW5rX2xpc3QiLCJzaHJpbmtfdHJlZSIsImtleV90IiwiZGF0YV90IiwidHJlZSIsImsiLCJkcm9wX2tleXMiLCJrZXkiLCJ0cmVlJDAiLCJzbWFsbGVyX2tleSIsInNocmlua19rZXlzIiwic21hbGxlcl9kYXRhIiwic2hyaW5rX2RhdGEiLCJkcm9wX2VsdHMiLCJzbWFsbGVyX2VsdCIsInNocmlua19lbHRzIiwibWFwX3QiLCJzZXRfdCIsIm5hbWVzIiwiYXJnMF8wMDEiLCJyZXMwXzAwMiIsInNocmlua19jb3VudCIsInRlc3RfY291bnQiLCJzZWVkIiwic2l6ZXMkMCIsInNocmlua19jb3VudCQwIiwidGVzdF9jb3VudCQwIiwic2VlZCQwIiwibWFrZV9jcmVhdG9yIiwic2VlZF9mdW4iLCJ0ZXN0X2NvdW50X2Z1biIsInNocmlua19jb3VudF9mdW4iLCJzaXplc19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJzZWVkX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJ0ZXN0X2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJzaHJpbmtfY291bnRfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInNpemVzX2dlbiIsIml0ZXIiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwic2l6ZXNfMDEwIiwic2hyaW5rX2NvdW50XzAwOCIsInRlc3RfY291bnRfMDA2Iiwic2VlZF8wMDQiLCJzdWZmaXgiLCJwcmVmaXgiLCJwcmVmaXgkMCIsImJuZHNfMDAzIiwic3VmZml4JDAiLCJhcmdfMDExIiwiYm5kc18wMDMkMCIsImFyZ18wMDkiLCJibmRzXzAwMyQxIiwiYXJnXzAwNyIsImJuZHNfMDAzJDIiLCJhcmdfMDA1IiwiYm5kc18wMDMkMyIsImRlZmF1bHRfY29uZmlnIiwibGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlIiwid2l0aF9zYW1wbGUiLCJnZW5lcmF0b3IiLCJjb25maWciLCJleGFtcGxlcyIsIm51bWJlcl9vZl9zaXplX3ZhbHVlcyIsInJlbWFpbmluZ19zaXplcyIsInNlcXVlbmNlIiwiaW5wdXQiLCJlcnJvciIsImVycm9yJDEiLCJpbnB1dCQwIiwic2hyaW5rX2NvdW50JDEiLCJhbHRlcm5hdGVzJDIiLCJhbHRlcm5hdGVzIiwiYWx0ZXJuYXRlcyQwIiwiYWx0ZXJuYXRlIiwiZXJyb3IkMCIsImFsdGVybmF0ZXMkMSIsInJ1biIsIk0iLCJmJDAiLCJ3aXRoX3NhbXBsZV9leG4iLCJydW5fZXhuIiwidGVzdGFibGUiLCJ1bm1hcCIsIm9mX2hhc2hfZm9sZCIsIndyYXAiLCJoYXNoJDAiLCJoYXNoJDEiLCJtYXBfdHJlZSIsImtleV9vYnMiLCJkYXRhX29icyIsInNldF90cmVlIiwiZWx0X29icyIsIm1vZF9uYW1lIiwibW9kX25hbWUkMCIsIm1vZF9uYW1lJDEiLCJtb2RfbmFtZSQyIiwibW9kX25hbWUkMyIsIm1vZF9uYW1lJDQiLCJtb2RfbmFtZSQ1IiwibW9kX25hbWUkNiIsIm1vZF9uYW1lJDciLCJtb2RfbmFtZSQ4IiwibW9kX25hbWUkOSIsIm1heF92YWx1ZSQxMiIsIm1vZF9uYW1lJDEwIiwicmFpc2VfY2Fubm90X3JlcHIiLCJ0b19zdHJpbmciLCJ4IiwidHJ1bmNfdW5zaWduZWQiLCJjb252IiwibG9nYW5kIiwibWFzayIsImV4bl91bnNpZ25lZCIsImVxdWFsIiwieSIsInRydW5jX3NpZ25lZCIsInNoaWZ0X2xlZnQiLCJzaGlmdF9yaWdodCIsInNoaWZ0IiwiZXhuX3NpZ25lZCIsImlkZW50aXR5X2lmX3Bvc2l0aXZlIiwiZ3JlYXRlcl9lcXVhbCIsInplcm8iLCJvZl9zZXhwX2Vycm9yIiwid2hhdCIsInNleHAiLCJ0b19pbnQzMiIsInRvX2ludDY0IiwiY29tcGFyZSIsImhhc2hfZm9sZF90IiwiZnVuYyIsImhhc2giLCJ0X29mX3NleHAiLCJzZXhwX29mX3QiLCJ0eXBlcmVwX29mX3QiLCJ0eXBlbmFtZV9vZl90IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwic2lnbmVkIiwibnVtX2JpdHMiLCJudW1fYnl0ZXMiLCJ0cnVuYyIsImV4biIsIm9mX2Jhc2VfaW50X3RydW5jIiwib2ZfYmFzZV9pbnRfZXhuIiwidG9fYmFzZV9pbnQiLCJvZl9pbnQxNl90cnVuYyIsIm9mX2ludDE2X2V4biIsIm9mX2ludDMyX3RydW5jIiwib2ZfaW50MzJfZXhuIiwib2ZfaW50NjNfdHJ1bmMiLCJvZl9pbnQ2M19leG4iLCJvZl9pbnQ2NF90cnVuYyIsIm9mX2ludDY0X2V4biIsIm9mX3VpbnQ4X3dyYXAiLCJvZl91aW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic3ltYm9sJDUiLCJzeW1ib2wkNiIsInN5bWJvbCQ3Iiwic3ltYm9sJDgiLCJzeW1ib2wkOSIsInN5bWJvbCQxMCIsInN5bWJvbCQxMSIsInN5bWJvbCQxMiIsInN5bWJvbCQxMyIsInN5bWJvbCQxNCIsImNvbXBhcmUkMSIsImhhc2hfZm9sZF90JDAiLCJmdW5jJDAiLCJoYXNoJDAiLCJ0X29mX3NleHAkMCIsInNleHBfb2ZfdCQwIiwidHlwZXJlcF9vZl90JDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJ6ZXJvJDAiLCJtaW5fdmFsdWUkMCIsIm1heF92YWx1ZSQwIiwic2lnbmVkJDAiLCJudW1fYml0cyQwIiwibnVtX2J5dGVzJDAiLCJsb2dhbmQ2NCIsIm1hc2s2NCIsImVxdWFsJDAiLCJlcXVhbDY0IiwidG9fc3RyaW5nJDAiLCJ0b19zdHJpbmc2NCIsInRydW5jJDAiLCJleG4kMCIsInRydW5jNjQiLCJleG42NCIsIm9mX2Jhc2VfaW50X3RydW5jJDAiLCJvZl9iYXNlX2ludF9leG4kMCIsInRvX2Jhc2VfaW50JDAiLCJvZl91aW50MTZfdHJ1bmMiLCJvZl91aW50MTZfZXhuIiwib2ZfdWludDMyX3RydW5jIiwib2ZfdWludDMyX2V4biIsIm9mX3VpbnQ2M190cnVuYyIsIm9mX3VpbnQ2M19leG4iLCJvZl91aW50NjRfdHJ1bmMiLCJvZl91aW50NjRfZXhuIiwib2ZfaW50OF93cmFwIiwib2ZfaW50OF9leG4iLCJxdWlja2NoZWNrX2dlbmVyYXRvciQwIiwicXVpY2tjaGVja19vYnNlcnZlciQwIiwicXVpY2tjaGVja19zaHJpbmtlciQwIiwic3ltYm9sJDIxIiwic3ltYm9sJDIyIiwic3ltYm9sJDIzIiwic3ltYm9sJDI0Iiwic3ltYm9sJDI1Iiwic3ltYm9sJDI2Iiwic3ltYm9sJDI3Iiwic3ltYm9sJDI4Iiwic3ltYm9sJDI5Iiwic3ltYm9sJDMwIiwiY29tcGFyZSQzIiwiaGFzaF9mb2xkX3QkMSIsImZ1bmMkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF9vZl90JDEiLCJ0eXBlcmVwX29mX3QkMSIsInR5cGVuYW1lX29mX3QkMSIsInplcm8kMSIsInNoaWZ0X2xlZnQkMCIsInNoaWZ0X3JpZ2h0JDAiLCJzaGlmdCQwIiwidG9fc3RyaW5nJDEiLCJtaW5fdmFsdWUkMSIsIm1heF92YWx1ZSQxIiwic2lnbmVkJDEiLCJudW1fYml0cyQxIiwibnVtX2J5dGVzJDEiLCJ0cnVuYyQxIiwiZXhuJDEiLCJvZl9iYXNlX2ludF90cnVuYyQxIiwib2ZfYmFzZV9pbnRfZXhuJDEiLCJ0b19iYXNlX2ludCQxIiwib2ZfaW50OCIsIm9mX2ludDMyX3RydW5jJDAiLCJvZl9pbnQzMl9leG4kMCIsIm9mX2ludDYzX3RydW5jJDAiLCJvZl9pbnQ2M19leG4kMCIsIm9mX2ludDY0X3RydW5jJDAiLCJvZl9pbnQ2NF9leG4kMCIsIm9mX3VpbnQxNl93cmFwIiwib2ZfdWludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInN5bWJvbCQzNyIsInN5bWJvbCQzOCIsInN5bWJvbCQzOSIsInN5bWJvbCQ0MCIsInN5bWJvbCQ0MSIsInN5bWJvbCQ0MiIsInN5bWJvbCQ0MyIsInN5bWJvbCQ0NCIsInN5bWJvbCQ0NSIsInN5bWJvbCQ0NiIsImNvbXBhcmUkNSIsImhhc2hfZm9sZF90JDIiLCJmdW5jJDIiLCJoYXNoJDIiLCJ0X29mX3NleHAkMiIsInNleHBfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJ0eXBlbmFtZV9vZl90JDIiLCJ6ZXJvJDIiLCJtaW5fdmFsdWUkMiIsImNvbnYkMCIsIm1heF92YWx1ZSQyIiwic2lnbmVkJDIiLCJudW1fYml0cyQyIiwibnVtX2J5dGVzJDIiLCJsb2dhbmQkMCIsImxvZ2FuZDY0JDAiLCJtYXNrNjQkMCIsImVxdWFsJDIiLCJlcXVhbDY0JDAiLCJ0b19zdHJpbmckMiIsInRvX3N0cmluZzY0JDAiLCJtYXNrJDAiLCJ0cnVuYyQyIiwiZXhuJDIiLCJ0cnVuYzY0JDAiLCJleG42NCQwIiwib2ZfYmFzZV9pbnRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50X2V4biQyIiwidG9fYmFzZV9pbnQkMiIsIm9mX3VpbnQ4Iiwib2ZfdWludDMyX3RydW5jJDAiLCJvZl91aW50MzJfZXhuJDAiLCJvZl91aW50NjNfdHJ1bmMkMCIsIm9mX3VpbnQ2M19leG4kMCIsIm9mX3VpbnQ2NF90cnVuYyQwIiwib2ZfdWludDY0X2V4biQwIiwib2ZfaW50MTZfd3JhcCIsIm9mX2ludDE2X2V4biQwIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMiIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMiIsInN5bWJvbCQ1MyIsInN5bWJvbCQ1NCIsInN5bWJvbCQ1NSIsInN5bWJvbCQ1NiIsInN5bWJvbCQ1NyIsInN5bWJvbCQ1OCIsInN5bWJvbCQ1OSIsInN5bWJvbCQ2MCIsInN5bWJvbCQ2MSIsInN5bWJvbCQ2MiIsImNvbXBhcmUkNyIsImhhc2hfZm9sZF90JDMiLCJmdW5jJDMiLCJoYXNoJDMiLCJ0X29mX3NleHAkMyIsInNleHBfb2ZfdCQzIiwidHlwZXJlcF9vZl90JDMiLCJ0eXBlbmFtZV9vZl90JDMiLCJ6ZXJvJDMiLCJtaW5fdmFsdWUkMyIsIm1heF92YWx1ZSQzIiwic2hpZnRfbGVmdCQxIiwic2hpZnRfcmlnaHQkMSIsInNoaWZ0JDEiLCJ0b19zdHJpbmckMyIsInNpZ25lZCQzIiwibnVtX2JpdHMkMyIsIm51bV9ieXRlcyQzIiwidHJ1bmMkMyIsImV4biQzIiwib2ZfYmFzZV9pbnQzMiIsInRvX2Jhc2VfaW50MzIiLCJvZl9pbnQ4JDAiLCJvZl9pbnQxNiIsIm9mX2ludDYzX3RydW5jJDEiLCJvZl9pbnQ2M19leG4kMSIsIm9mX2ludDY0X3RydW5jJDEiLCJvZl9pbnQ2NF9leG4kMSIsIm9mX3VpbnQzMl93cmFwIiwib2ZfdWludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMyIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMyIsInN5bWJvbCQ2OSIsInN5bWJvbCQ3MCIsInN5bWJvbCQ3MSIsInN5bWJvbCQ3MiIsInN5bWJvbCQ3MyIsInN5bWJvbCQ3NCIsInN5bWJvbCQ3NSIsInN5bWJvbCQ3NiIsInN5bWJvbCQ3NyIsInN5bWJvbCQ3OCIsImNvbXBhcmUkOSIsImhhc2hfZm9sZF90JDQiLCJmdW5jJDQiLCJoYXNoJDQiLCJ0X29mX3NleHAkNCIsInNleHBfb2ZfdCQ0IiwidHlwZXJlcF9vZl90JDQiLCJ0eXBlbmFtZV9vZl90JDQiLCJ6ZXJvJDQiLCJtaW5fdmFsdWUkNCIsIm1heF92YWx1ZSQ0IiwiY29udiQxIiwic2lnbmVkJDQiLCJudW1fYml0cyQ0IiwibnVtX2J5dGVzJDQiLCJsb2dhbmQkMSIsImxvZ2FuZDY0JDEiLCJtYXNrJDEiLCJtYXNrNjQkMSIsImVxdWFsJDQiLCJlcXVhbDY0JDEiLCJ0b19zdHJpbmckNCIsInRvX3N0cmluZzY0JDEiLCJ0cnVuYyQ0IiwiZXhuJDQiLCJ0cnVuYzY0JDEiLCJleG42NCQxIiwib2ZfYmFzZV9pbnQzMl90cnVuYyIsIm9mX2Jhc2VfaW50MzJfZXhuIiwidG9fYmFzZV9pbnQzMl90cnVuYyIsInRvX2Jhc2VfaW50MzJfZXhuIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyIsIm9mX2Jhc2VfaW50NjRfZXhuIiwidG9fYmFzZV9pbnQ2NCIsInRvX2Jhc2VfaW50X2V4biIsIm9mX3VpbnQ4JDAiLCJvZl91aW50MTYiLCJvZl91aW50NjNfdHJ1bmMkMSIsIm9mX3VpbnQ2M19leG4kMSIsIm9mX3VpbnQ2NF90cnVuYyQxIiwib2ZfdWludDY0X2V4biQxIiwib2ZfaW50MzJfd3JhcCIsIm9mX2ludDMyX2V4biQxIiwicXVpY2tjaGVja19nZW5lcmF0b3IkNCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkNCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkNCIsInN5bWJvbCQ4NSIsInN5bWJvbCQ4NiIsInN5bWJvbCQ4NyIsInN5bWJvbCQ4OCIsInN5bWJvbCQ4OSIsInN5bWJvbCQ5MCIsInN5bWJvbCQ5MSIsInN5bWJvbCQ5MiIsInN5bWJvbCQ5MyIsInN5bWJvbCQ5NCIsImNvbXBhcmUkMTEiLCJoYXNoX2ZvbGRfdCQ1IiwiZnVuYyQ1IiwiaGFzaCQ1IiwidF9vZl9zZXhwJDUiLCJzZXhwX29mX3QkNSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDUiLCJxdWlja2NoZWNrX29ic2VydmVyJDUiLCJxdWlja2NoZWNrX3Nocmlua2VyJDUiLCJ0eXBlcmVwX29mX3QkNSIsInR5cGVuYW1lX29mX3QkNSIsInplcm8kNSIsIm1pbl92YWx1ZSQ1IiwibWF4X3ZhbHVlJDUiLCJ0b19zdHJpbmckNSIsInNpZ25lZCQ1IiwibnVtX2JpdHMkNSIsIm51bV9ieXRlcyQ1Iiwib2ZfYmFzZV9pbnQzMiQwIiwidG9fYmFzZV9pbnQzMiQwIiwib2ZfaW50OCQxIiwib2ZfaW50MTYkMCIsIm9mX2ludDYzX3RydW5jJDIiLCJvZl9pbnQ2M19leG4kMiIsIm9mX2ludDY0X3RydW5jJDIiLCJvZl9pbnQ2NF9leG4kMiIsIm9mX3VpbnQzMl93cmFwJDAiLCJvZl91aW50MzJfZXhuJDIiLCJzeW1ib2wkMTAxIiwic3ltYm9sJDEwMiIsInN5bWJvbCQxMDMiLCJzeW1ib2wkMTA0Iiwic3ltYm9sJDEwNSIsInN5bWJvbCQxMDYiLCJzeW1ib2wkMTA3Iiwic3ltYm9sJDEwOCIsInN5bWJvbCQxMDkiLCJzeW1ib2wkMTEwIiwiaGFzaF9mb2xkX3QkNiIsImZ1bmMkNiIsImhhc2gkNiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDYiLCJxdWlja2NoZWNrX29ic2VydmVyJDYiLCJxdWlja2NoZWNrX3Nocmlua2VyJDYiLCJjb21wYXJlJDEzIiwidHlwZXJlcF9vZl90JDYiLCJ0eXBlbmFtZV9vZl90JDYiLCJ6ZXJvJDYiLCJtaW5fdmFsdWUkNiIsImdyZWF0ZXJfZXF1YWwkMCIsInRvX3N0cmluZyQ2IiwibWF4X3ZhbHVlJDYiLCJzaWduZWQkNiIsIm51bV9iaXRzJDYiLCJudW1fYnl0ZXMkNiIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMCIsIm9mX2Jhc2VfaW50MzJfZXhuJDAiLCJ0b19iYXNlX2ludDMyX3RydW5jJDAiLCJ0b19iYXNlX2ludDMyX2V4biQwIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQwIiwib2ZfYmFzZV9pbnQ2NF9leG4kMCIsInRvX2Jhc2VfaW50NjQkMCIsInRvX2Jhc2VfaW50X2V4biQwIiwib2ZfdWludDgkMSIsIm9mX3VpbnQxNiQwIiwib2ZfdWludDYzX3RydW5jJDIiLCJvZl91aW50NjNfZXhuJDIiLCJvZl91aW50NjRfdHJ1bmMkMiIsIm9mX3VpbnQ2NF9leG4kMiIsIm9mX2ludDMyX3dyYXAkMCIsIm9mX2ludDMyX2V4biQyIiwic2V4cF9vZl90JDYiLCJ0X29mX3NleHAkNiIsInMiLCJzeW1ib2wkMTExIiwic3ltYm9sJDExMiIsInN5bWJvbCQxMTMiLCJzeW1ib2wkMTE0Iiwic3ltYm9sJDExNSIsInN5bWJvbCQxMTYiLCJzeW1ib2wkMTE3Iiwic3ltYm9sJDExOCIsInN5bWJvbCQxMTkiLCJzeW1ib2wkMTIwIiwiaW1wbCIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDciLCJxdWlja2NoZWNrX29ic2VydmVyJDciLCJxdWlja2NoZWNrX3Nocmlua2VyJDciLCJ0X29mX3NleHAkNyIsInNleHBfb2ZfdCQ3IiwidHlwZXJlcF9vZl90JDciLCJ0eXBlbmFtZV9vZl90JDciLCJzaWduZWQkNyIsIm51bV9iaXRzJDciLCJudW1fYnl0ZXMkNyIsInplcm8kNyIsIm1pbl92YWx1ZSQ3IiwibWF4X3ZhbHVlJDciLCJoYXNoX2ZvbGRfdCQ3IiwiaGFzaCQ3Iiwic3ltYm9sJDEyNyIsInN5bWJvbCQxMjgiLCJzeW1ib2wkMTI5Iiwic3ltYm9sJDEzMCIsInN5bWJvbCQxMzEiLCJzeW1ib2wkMTMyIiwiZXF1YWwkNyIsImNvbXBhcmUkMTUiLCJtaW4kNyIsIm1heCQ3Iiwib2ZfYmFzZV9pbnQzMiQxIiwidG9fYmFzZV9pbnQzMiQxIiwib2ZfaW50OCQyIiwib2ZfaW50MTYkMSIsIm9mX2ludDYzX3RydW5jJDMiLCJvZl9pbnQ2M19leG4kMyIsIm9mX2ludDY0X3RydW5jJDMiLCJvZl9pbnQ2NF9leG4kMyIsIm9mX3VpbnQzMl93cmFwJDEiLCJvZl91aW50MzJfZXhuJDMiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQ4IiwicXVpY2tjaGVja19vYnNlcnZlciQ4IiwicXVpY2tjaGVja19zaHJpbmtlciQ4IiwidF9vZl9zZXhwJDgiLCJzZXhwX29mX3QkOCIsInR5cGVyZXBfb2ZfdCQ4IiwidHlwZW5hbWVfb2ZfdCQ4Iiwic2lnbmVkJDgiLCJudW1fYml0cyQ4IiwibnVtX2J5dGVzJDgiLCJ6ZXJvJDgiLCJtaW5fdmFsdWUkOCIsIm1heF92YWx1ZSQ4IiwiaGFzaF9mb2xkX3QkOCIsImhhc2gkOCIsInN5bWJvbCQxMzMiLCJzeW1ib2wkMTM0Iiwic3ltYm9sJDEzNSIsInN5bWJvbCQxMzYiLCJzeW1ib2wkMTM3Iiwic3ltYm9sJDEzOCIsImVxdWFsJDgiLCJjb21wYXJlJDE2IiwibWluJDgiLCJtYXgkOCIsIm9mX2Jhc2VfaW50MzJfdHJ1bmMkMSIsIm9mX2Jhc2VfaW50MzJfZXhuJDEiLCJ0b19iYXNlX2ludDMyX3RydW5jJDEiLCJ0b19iYXNlX2ludDMyX2V4biQxIiwib2ZfYmFzZV9pbnQ2NF90cnVuYyQxIiwib2ZfYmFzZV9pbnQ2NF9leG4kMSIsInRvX2Jhc2VfaW50NjQkMSIsInRvX2Jhc2VfaW50X2V4biQxIiwib2ZfdWludDgkMiIsIm9mX3VpbnQxNiQxIiwib2ZfdWludDYzX3RydW5jJDMiLCJvZl91aW50NjNfZXhuJDMiLCJvZl91aW50NjRfdHJ1bmMkMyIsIm9mX3VpbnQ2NF9leG4kMyIsIm9mX2ludDMyX3dyYXAkMSIsIm9mX2ludDMyX2V4biQzIiwiY29tcGFyZSQxNyIsImhhc2hfZm9sZF90JDkiLCJmdW5jJDciLCJoYXNoJDkiLCJ0X29mX3NleHAkOSIsInNleHBfb2ZfdCQ5IiwicXVpY2tjaGVja19nZW5lcmF0b3IkOSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkOSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkOSIsInR5cGVyZXBfb2ZfdCQ5IiwidHlwZW5hbWVfb2ZfdCQ5IiwiemVybyQ5IiwibWluX3ZhbHVlJDkiLCJtYXhfdmFsdWUkOSIsImdyZWF0ZXJfZXF1YWwkMSIsInRvX3N0cmluZyQ3Iiwic2lnbmVkJDkiLCJudW1fYml0cyQ5IiwibnVtX2J5dGVzJDkiLCJvZl9pbnQ4JDMiLCJvZl9pbnQxNiQyIiwib2ZfaW50MzIiLCJvZl9pbnQ2NF90cnVuYyQ0Iiwib2ZfaW50NjRfZXhuJDQiLCJvZl91aW50NjNfd3JhcCIsIm9mX3VpbnQ2M19leG4kNCIsInN5bWJvbCQxNDUiLCJzeW1ib2wkMTQ2Iiwic3ltYm9sJDE0NyIsInN5bWJvbCQxNDgiLCJzeW1ib2wkMTQ5Iiwic3ltYm9sJDE1MCIsInN5bWJvbCQxNTEiLCJzeW1ib2wkMTUyIiwic3ltYm9sJDE1MyIsInN5bWJvbCQxNTQiLCJoYXNoX2ZvbGRfdCQxMCIsImZ1bmMkOCIsImhhc2gkMTAiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQxMCIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMTAiLCJxdWlja2NoZWNrX3Nocmlua2VyJDEwIiwiY29tcGFyZSQxOSIsInR5cGVyZXBfb2ZfdCQxMCIsInR5cGVuYW1lX29mX3QkMTAiLCJ6ZXJvJDEwIiwibWluX3ZhbHVlJDEwIiwibWF4X3ZhbHVlJDEwIiwiZ3JlYXRlcl9lcXVhbCQyIiwidG9fc3RyaW5nJDgiLCJzaWduZWQkMTAiLCJudW1fYml0cyQxMCIsIm51bV9ieXRlcyQxMCIsIm9mX2Jhc2VfaW50NjRfdHJ1bmMkMiIsIm9mX2Jhc2VfaW50NjRfZXhuJDIiLCJ0b19iYXNlX2ludDY0JDIiLCJvZl91aW50OCQzIiwib2ZfdWludDE2JDIiLCJvZl91aW50MzIiLCJvZl91aW50NjRfdHJ1bmMkNCIsIm9mX3VpbnQ2NF9leG4kNCIsIm9mX2ludDYzX3dyYXAiLCJvZl9pbnQ2M19leG4kNCIsInNleHBfb2ZfdCQxMCIsInRfb2Zfc2V4cCQxMCIsInN5bWJvbCQxNTUiLCJzeW1ib2wkMTU2Iiwic3ltYm9sJDE1NyIsInN5bWJvbCQxNTgiLCJzeW1ib2wkMTU5Iiwic3ltYm9sJDE2MCIsInN5bWJvbCQxNjEiLCJzeW1ib2wkMTYyIiwic3ltYm9sJDE2MyIsInN5bWJvbCQxNjQiLCJjb21wYXJlJDIxIiwiaGFzaF9mb2xkX3QkMTEiLCJmdW5jJDkiLCJoYXNoJDExIiwidF9vZl9zZXhwJDExIiwic2V4cF9vZl90JDExIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTEiLCJxdWlja2NoZWNrX29ic2VydmVyJDExIiwicXVpY2tjaGVja19zaHJpbmtlciQxMSIsInR5cGVyZXBfb2ZfdCQxMSIsInR5cGVuYW1lX29mX3QkMTEiLCJ6ZXJvJDExIiwibWluX3ZhbHVlJDExIiwibWF4X3ZhbHVlJDExIiwiZ3JlYXRlcl9lcXVhbCQzIiwidG9fc3RyaW5nJDkiLCJvZl9pbnQ4JDQiLCJvZl9pbnQxNiQzIiwic2lnbmVkJDExIiwibnVtX2JpdHMkMTEiLCJudW1fYnl0ZXMkMTEiLCJvZl9pbnQzMiQwIiwib2ZfaW50NjMiLCJvZl91aW50NjRfd3JhcCIsIm9mX3VpbnQ2NF9leG4kNSIsInN5bWJvbCQxNzciLCJzeW1ib2wkMTc4Iiwic3ltYm9sJDE3OSIsInN5bWJvbCQxODAiLCJzeW1ib2wkMTgxIiwic3ltYm9sJDE4MiIsInN5bWJvbCQxODMiLCJzeW1ib2wkMTg0Iiwic3ltYm9sJDE4NSIsInN5bWJvbCQxODYiLCJoYXNoX2ZvbGRfdCQxMiIsImZ1bmMkMTAiLCJoYXNoJDEyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMTIiLCJxdWlja2NoZWNrX29ic2VydmVyJDEyIiwicXVpY2tjaGVja19zaHJpbmtlciQxMiIsImNvbXBhcmUkMjMiLCJ0eXBlcmVwX29mX3QkMTIiLCJ0eXBlbmFtZV9vZl90JDEyIiwiemVybyQxMiIsIm1pbl92YWx1ZSQxMiIsImdyZWF0ZXJfZXF1YWwkNCIsInRvX3N0cmluZyQxMCIsInNpZ25lZCQxMiIsIm51bV9iaXRzJDEyIiwibnVtX2J5dGVzJDEyIiwiZXhuJDUiLCJvZl9iYXNlX2ludDY0X3RydW5jJDMiLCJvZl9iYXNlX2ludDY0X2V4biQzIiwidG9fYmFzZV9pbnQ2NF90cnVuYyIsInRvX2Jhc2VfaW50NjRfZXhuIiwib2ZfdWludDgkNCIsIm9mX3VpbnQxNiQzIiwib2ZfdWludDMyJDAiLCJvZl91aW50NjMiLCJvZl9pbnQ2NF93cmFwIiwib2ZfaW50NjRfZXhuJDUiLCJzZXhwX29mX3QkMTIiLCJ0X29mX3NleHAkMTIiLCJzeW1ib2wkMTg3Iiwic3ltYm9sJDE4OCIsInN5bWJvbCQxODkiLCJzeW1ib2wkMTkwIiwic3ltYm9sJDE5MSIsInN5bWJvbCQxOTIiLCJzeW1ib2wkMTkzIiwic3ltYm9sJDE5NCIsInN5bWJvbCQxOTUiLCJzeW1ib2wkMTk2IiwiZ2V0X2ludDgiLCJ0IiwicG9zIiwiZ2V0X3VpbnQ4IiwiZ2V0X2ludDE2X2xlIiwiZ2V0X2ludDE2X2JlIiwieCQwIiwiZ2V0X3VpbnQxNl9sZSIsImdldF91aW50MTZfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfdWludDMyX2xlIiwiZ2V0X3VpbnQzMl9iZSIsImdldF9pbnQ2NF9sZSIsImdldF9pbnQ2NF9iZSIsImdldF91aW50NjRfbGUiLCJnZXRfdWludDY0X2JlIiwic2V0X3VpbnQ4Iiwic2V0X2ludDgiLCJzZXRfdWludDE2X2xlIiwic2V0X3VpbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQxNl9iZSIsInNldF9pbnQzMl9sZSIsIngkMSIsInNldF9pbnQzMl9iZSIsInNldF91aW50MzJfbGUiLCJzZXRfdWludDMyX2JlIiwic2V0X2ludDY0X2xlIiwic2V0X2ludDY0X2JlIiwic2V0X3VpbnQ2NF9sZSIsInNldF91aW50NjRfYmUiLCJnZXRfaW50OCQwIiwiZ2V0X3VpbnQ4JDAiLCJnZXRfaW50MTZfbGUkMCIsImdldF9pbnQxNl9iZSQwIiwiZ2V0X3VpbnQxNl9sZSQwIiwiZ2V0X3VpbnQxNl9iZSQwIiwiZ2V0X2ludDMyX2xlJDAiLCJnZXRfaW50MzJfYmUkMCIsImdldF91aW50MzJfbGUkMCIsImdldF91aW50MzJfYmUkMCIsImdldF9pbnQ2NF9sZSQwIiwiZ2V0X2ludDY0X2JlJDAiLCJnZXRfdWludDY0X2xlJDAiLCJnZXRfdWludDY0X2JlJDAiLCJzZXRfaW50OCQwIiwic2V0X3VpbnQ4JDAiLCJzZXRfaW50MTZfbGUkMCIsInNldF9pbnQxNl9iZSQwIiwic2V0X3VpbnQxNl9sZSQwIiwic2V0X3VpbnQxNl9iZSQwIiwic2V0X2ludDMyX2xlJDAiLCJzZXRfaW50MzJfYmUkMCIsInNldF91aW50MzJfbGUkMCIsInNldF91aW50MzJfYmUkMCIsInNldF9pbnQ2NF9sZSQwIiwic2V0X2ludDY0X2JlJDAiLCJzZXRfdWludDY0X2xlJDAiLCJzZXRfdWludDY0X2JlJDAiLCJnZXRfaW50OCQxIiwiZ2V0X3VpbnQ4JDEiLCJnZXRfaW50MTZfbGUkMSIsImdldF9pbnQxNl9iZSQxIiwiZ2V0X3VpbnQxNl9sZSQxIiwiZ2V0X3VpbnQxNl9iZSQxIiwiZ2V0X2ludDMyX2xlJDEiLCJnZXRfaW50MzJfYmUkMSIsImdldF91aW50MzJfbGUkMSIsImdldF91aW50MzJfYmUkMSIsImdldF9pbnQ2NF9sZSQxIiwiZ2V0X2ludDY0X2JlJDEiLCJnZXRfdWludDY0X2xlJDEiLCJnZXRfdWludDY0X2JlJDEiLCJnZXRfaW50OCQyIiwiZ2V0X3VpbnQ4JDIiLCJnZXRfaW50MTZfbGUkMiIsImdldF9pbnQxNl9iZSQyIiwiZ2V0X3VpbnQxNl9sZSQyIiwiZ2V0X3VpbnQxNl9iZSQyIiwiZ2V0X2ludDMyX2xlJDIiLCJnZXRfaW50MzJfYmUkMiIsImdldF91aW50MzJfbGUkMiIsImdldF91aW50MzJfYmUkMiIsImdldF9pbnQ2NF9sZSQyIiwiZ2V0X2ludDY0X2JlJDIiLCJnZXRfdWludDY0X2xlJDIiLCJnZXRfdWludDY0X2JlJDIiLCJsb2MkMCIsImxvYyIsInNwcmludGYiLCJhcmNoX3NpeHR5Zm91ciIsImFyY2hfYmlnX2VuZGlhbiIsIm5vdF9vbl8zMmJpdCIsImNyZWF0ZSIsIm1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyIsInNpemUiLCJtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMkMCIsImxlbmd0aCIsImluaXQiLCJuIiwiZiIsInQiLCJpIiwiY2hlY2tfYXJncyIsInBvcyIsImxlbiIsImJzdHIiLCJic3RyX2xlbiIsImdldF9vcHRfbGVuIiwiY3JlYXRlJDAiLCJjcmVhdGUkMSIsImxlbmd0aCQwIiwidW5zYWZlX2JsaXQiLCJsZW5ndGgkMSIsIm9mX3N0cmluZyIsIm9mX2J5dGVzIiwidG9fc3RyaW5nIiwidG9fYnl0ZXMiLCJzZXhwX29mX3RfZnJvemVuIiwidF9mcm96ZW5fb2Zfc2V4cCIsInNleHAiLCJzdHIiLCJjb3B5IiwiYXBwZW5kIiwic3JjIiwiZHN0IiwiZHN0X3Bvc19yZWYiLCJkc3RfcG9zIiwiY29uY2F0Iiwic2VwIiwibGlzdCIsInRhaWwiLCJoZWFkIiwiaGVhZF9sZW4iLCJzZXBfbGVuIiwidGFpbF9jb3VudCIsInNlcCQwIiwibWVtc2V0IiwiYyIsIm1lbWNtcCIsInQxIiwicG9zMSIsInQyIiwicG9zMiIsIm1lbWNtcF9ieXRlcyIsImJ5dGVzIiwiY29tcGFyZV90X2Zyb3plbiIsImxlbjEiLCJsZW4yIiwiaGFzaF9mb2xkX3RfZnJvemVuIiwiaGFzaCIsImhhc2hfdF9mcm96ZW4iLCJ4IiwiZXF1YWwiLCJmaW5kIiwib3B0IiwiY2hyIiwic3RoIiwibGVuJDAiLCJyZXMiLCJnZXRfMTYiLCJnZXRfMzIiLCJnZXRfNjQiLCJzZXRfMTZfdHJ1bmMiLCJ2Iiwic2V0XzMyIiwic2V0XzY0Iiwic2lnbl9leHRlbmRfMTYiLCJ1IiwiY2hlY2tfdmFsaWRfdWludDE2IiwiY2hlY2tfdmFsaWRfaW50MTYiLCJjaGVja192YWxpZF9pbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQzMiIsImNoZWNrX3ZhbGlkX3VpbnQ2NCIsInVuc2FmZV9yZWFkX2ludDE2IiwidW5zYWZlX3JlYWRfaW50MTZfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQxNiIsInVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIiwicmVhZF9pbnQxNiIsInJlYWRfaW50MTZfc3dhcCIsIndyaXRlX2ludDE2X2V4biIsIndyaXRlX2ludDE2X3N3YXBfZXhuIiwidW5zYWZlX3JlYWRfdWludDE2IiwidW5zYWZlX3JlYWRfdWludDE2X3N3YXAiLCJ1bnNhZmVfd3JpdGVfdWludDE2IiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwIiwicmVhZF91aW50MTYiLCJyZWFkX3VpbnQxNl9zd2FwIiwid3JpdGVfdWludDE2X2V4biIsIndyaXRlX3VpbnQxNl9zd2FwX2V4biIsInVuc2FmZV9yZWFkX2ludDMyX2ludCIsInVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIiwidW5zYWZlX3JlYWRfaW50MzIiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDMyIiwidW5zYWZlX3dyaXRlX2ludDMyX3N3YXAiLCJ1bnNhZmVfd3JpdGVfaW50MzJfaW50IiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMl9pbnQiLCJyZWFkX2ludDMyX2ludF9zd2FwIiwicmVhZF9pbnQzMiIsInJlYWRfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfc3dhcCIsIndyaXRlX2ludDMyX2ludF9leG4iLCJ3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG4iLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnQiLCJ1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9yZWFkX2ludDY0IiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCIsInVuc2FmZV93cml0ZV9pbnQ2NCIsInVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIiwidW5zYWZlX3dyaXRlX2ludDY0X2ludCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjRfaW50IiwicmVhZF9pbnQ2NF9pbnRfc3dhcCIsInJlYWRfaW50NjQiLCJyZWFkX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NCIsIndyaXRlX2ludDY0X3N3YXAiLCJ3cml0ZV9pbnQ2NF9pbnQiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfcmVhZF9pbnQxNl9zd2FwJDAiLCJ1bnNhZmVfZ2V0X3VpbnQxNl9iZSIsInVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwJDAiLCJnZXRfaW50MTZfYmUiLCJyZWFkX2ludDE2X3N3YXAkMCIsImdldF91aW50MTZfYmUiLCJyZWFkX3VpbnQxNl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3dyaXRlX2ludDE2X3N3YXAkMCIsInVuc2FmZV9zZXRfdWludDE2X2JlIiwidW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwJDAiLCJzZXRfaW50MTZfYmVfZXhuIiwid3JpdGVfaW50MTZfc3dhcF9leG4kMCIsInNldF91aW50MTZfYmVfZXhuIiwid3JpdGVfdWludDE2X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfcmVhZF9pbnQzMl9zd2FwJDAiLCJ1bnNhZmVfc2V0X2ludDMyX3RfYmUiLCJ1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCQwIiwiZ2V0X2ludDMyX3RfYmUiLCJyZWFkX2ludDMyX3N3YXAkMCIsInNldF9pbnQzMl90X2JlIiwid3JpdGVfaW50MzJfc3dhcCQwIiwidW5zYWZlX3JlYWRfaW50MzJfaW50JDAiLCJ1bnNhZmVfcmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludCQwIiwidW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwJDAiLCJyZWFkX2ludDMyX2ludCQwIiwicmVhZF9pbnQzMl9pbnRfc3dhcCQwIiwid3JpdGVfaW50MzJfaW50X2V4biQwIiwid3JpdGVfaW50MzJfaW50X3N3YXBfZXhuJDAiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlX3RydW5jIiwidW5zYWZlX3JlYWRfaW50NjRfaW50X3N3YXAkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnQkMCIsInVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwiZ2V0X2ludDY0X2JlX3RydW5jIiwicmVhZF9pbnQ2NF9pbnRfc3dhcCQwIiwid3JpdGVfaW50NjRfaW50JDAiLCJ3cml0ZV9pbnQ2NF9pbnRfc3dhcCQwIiwidW5zYWZlX2dldF9pbnQ2NF90X2JlIiwidW5zYWZlX3JlYWRfaW50NjRfc3dhcCQwIiwidW5zYWZlX3NldF9pbnQ2NF90X2JlIiwidW5zYWZlX3dyaXRlX2ludDY0X3N3YXAkMCIsImdldF9pbnQ2NF90X2JlIiwicmVhZF9pbnQ2NF9zd2FwJDAiLCJzZXRfaW50NjRfdF9iZSIsInNldF9pbnQ2NF90X2xlIiwiaW50NjRfY29udl9lcnJvciIsInVpbnQ2NF9jb252X2Vycm9yIiwiaW50NjRfdG9faW50X2V4biIsInVpbnQ2NF90b19pbnRfZXhuIiwidW5zYWZlX2dldF9pbnQ2NF9iZV9leG4iLCJ1bnNhZmVfZ2V0X2ludDY0X2xlX2V4biIsImdldF9pbnQ2NF9iZV9leG4iLCJnZXRfaW50NjRfbGVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfYmVfZXhuIiwidW5zYWZlX2dldF91aW50NjRfbGVfZXhuIiwiZ2V0X3VpbnQ2NF9iZV9leG4iLCJnZXRfdWludDY0X2xlX2V4biIsInNldF91aW50NjRfYmVfZXhuIiwic2V0X3VpbnQ2NF9sZV9leG4iLCJ1bnNhZmVfc2V0X3VpbnQ4IiwidW5zYWZlX3NldF9pbnQ4IiwibiQwIiwidW5zYWZlX2dldF91aW50OCIsInVuc2FmZV9nZXRfaW50OCIsInNldF91aW50OF9leG4iLCJzZXRfaW50OF9leG4iLCJnZXRfdWludDgiLCJnZXRfaW50OCIsInVpbnQzMl9vZl9pbnQzMl90IiwidW5zYWZlX3NldF91aW50MzJfbGUiLCJ1bnNhZmVfc2V0X3VpbnQzMl9iZSIsInVuc2FmZV9nZXRfdWludDMyX2xlIiwidW5zYWZlX2dldF91aW50MzJfYmUiLCJzZXRfdWludDMyX2xlX2V4biIsInNldF91aW50MzJfYmVfZXhuIiwiZ2V0X3VpbnQzMl9sZSIsImdldF91aW50MzJfYmUiLCJnZXRfdWludDgkMCIsInNldF91aW50OCIsImdldF91aW50MTZfbmUiLCJzZXRfdWludDE2X25lIiwiZ2V0X2ludDMyX25lIiwic2V0X2ludDMyX25lIiwiZ2V0X2ludDY0X25lIiwic2V0X2ludDY0X25lIiwiZ2V0X3VpbnQ4JDIiLCJzZXRfdWludDgkMSIsImdldF91aW50MTZfbmUkMCIsInNldF91aW50MTZfbmUkMCIsImdldF9pbnQzMl9uZSQwIiwic2V0X2ludDMyX25lJDAiLCJnZXRfaW50NjRfbmUkMCIsInNldF9pbnQ2NF9uZSQwIiwiZWx0MSIsImVsdDIiLCJlcXVhbCIsIm9mX2Jvb2wiLCJsZW5ndGgiLCJjcmVhdGVfYm9vbCIsImdldCIsInNldCIsIm92ZXJsYXBwaW5nX3NyY19kc3QiLCJsZW5ndGgkMCIsImdldCQwIiwic2V0JDAiLCJjcmVhdGVfYm9vbCQwIiwicGFzcyIsImZhaWxzIiwibWVzc2FnZSIsImEiLCJzZXhwX29mX2EiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJmYWlsX3MiLCJzZXhwIiwiY29tYmluZSIsInQxIiwidDIiLCJvZl9saXN0IiwibmFtZSIsInQiLCJlcnJvciIsInBhdGgiLCJuYW1lX2xpc3QiLCJuIiwibCIsImZhaWxfZm4iLCJwYXNzX2Jvb2wiLCJwYXNzX3VuaXQiLCJwcm90ZWN0IiwiZiIsInYiLCJleG4kMCIsImV4biIsInRyeV93aXRoIiwicGF0aF9zdHJpbmciLCJlcnJvcnMiLCJyZXN1bHQiLCJ4XzAwNSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwMyIsInJlczFfMDA0IiwibWF5YmVfcmFpc2UiLCJ2YWxpZF9vcl9lcnJvciIsImNoZWNrIiwieCIsImZpZWxkX2RpcmVjdCIsImZsZCIsInJlY29yZCIsImZpZWxkIiwiZmllbGRfZm9sZGVyIiwiYWNjIiwiZmllbGRfZGlyZWN0X2ZvbGRlciIsImFsbCIsImNoZWNrcyIsImNoZWNrcyQwIiwiZXJycyIsImNoZWNrcyQxIiwiZXJyIiwiZXJycyQwIiwib2ZfcmVzdWx0Iiwib2ZfZXJyb3IiLCJib29sdGVzdCIsImlmX2ZhbHNlIiwicGFpciIsImZzdCIsInNuZCIsInNuZF92YWx1ZSIsImZzdF92YWx1ZSIsImxpc3RfaW5kZXhlZCIsImxpc3QiLCJpIiwiZWwiLCJleHRyYWN0X25hbWUiLCJhbGlzdCIsImxpc3QkMCIsImtleSIsImZpcnN0X2ZhaWx1cmUiLCJvZl9lcnJvcl9vcHQiLCJib3VuZGVkIiwibG93ZXIiLCJ1cHBlciIsImNvbXBhcmUiLCJpbmNsIiwiZXhjbCIsImluY2wkMCIsImV4Y2wkMCIsInN5bWJvbCIsIm5hbWUiLCJzZXhwX29mX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9tYXQiLCJtYXRfb2Zfc2V4cCIsInNleHBfb2ZfdmVjIiwidmVjX29mX3NleHAiLCJzZXhwX29mX29wYXF1ZSIsIm9wYXF1ZV9vZl9zZXhwIiwic2V4cF9vZl9wYWlyIiwicGFpcl9vZl9zZXhwIiwib2Zfc2V4cF9lcnJvciIsIm9mX3NleHBfZXJyb3JfZXhuIiwiZ3JvdXAiLCJiaW5fc2hhcGVfc2V4cF9vcGFxdWUiLCJhIiwiYmluX3NpemVfc2V4cF9vcGFxdWUiLCJzaXplX29mX2EiLCJiaW5fd3JpdGVfc2V4cF9vcGFxdWUiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl9zZXhwX29wYXF1ZSIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF9zZXhwX29wYXF1ZSIsIm9mX2EiLCJidWYiLCJwb3NfcmVmIiwidmludCIsImJpbl9yZWFkX3NleHBfb3BhcXVlJDAiLCJiaW5fcmVhZGVyX3NleHBfb3BhcXVlIiwiYmluX3JlYWRlcl9hIiwidnRhZyIsImJpbl9zZXhwX29wYXF1ZSIsImJpbl9hIiwiY29tcGFyZV9zZXhwX29wYXF1ZSIsImNtcF9hIiwiYV8wMDEiLCJiXzAwMiIsImhhc2hfZm9sZF9zZXhwX29wYXF1ZSIsImhhc2hfZm9sZF9hIiwiaHN2IiwiYXJnIiwidHlwZW5hbWVfb2Zfc2V4cF9vcGFxdWUiLCJ0eXBlcmVwX29mX3NleHBfb3BhcXVlIiwibmFtZV9vZl9zZXhwX29wYXF1ZSIsInR5cGVuYW1lX29mX3R1cGxlNSIsInR5cGVuYW1lX29mX3R1cGxlNCIsInR5cGVuYW1lX29mX3R1cGxlMyIsInR5cGVuYW1lX29mX3R1cGxlMiIsInR5cGVuYW1lX29mX3R1cGxlMCIsInR5cGVuYW1lX29mX2Z1bmN0aW9uIiwidHlwZW5hbWVfb2ZfcmVmIiwidHlwZW5hbWVfb2ZfbGF6eV90IiwidHlwZW5hbWVfb2ZfYXJyYXkiLCJ0eXBlbmFtZV9vZl9saXN0IiwidHlwZW5hbWVfb2Zfb3B0aW9uIiwidHlwZW5hbWVfb2ZfdW5pdCIsInR5cGVuYW1lX29mX2Jvb2wiLCJ0eXBlbmFtZV9vZl9ieXRlcyIsInR5cGVuYW1lX29mX3N0cmluZyIsInR5cGVuYW1lX29mX2Zsb2F0IiwidHlwZW5hbWVfb2ZfY2hhciIsInR5cGVuYW1lX29mX2ludDYzIiwidHlwZW5hbWVfb2ZfbmF0aXZlaW50IiwidHlwZW5hbWVfb2ZfaW50NjQiLCJ0eXBlbmFtZV9vZl9pbnQzMiIsInR5cGVuYW1lX29mX2ludCIsInR5cGVyZXBfb2ZfdHVwbGU1IiwidHlwZXJlcF9vZl90dXBsZTQiLCJ0eXBlcmVwX29mX3R1cGxlMyIsInR5cGVyZXBfb2ZfdHVwbGUyIiwidHlwZXJlcF9vZl90dXBsZTAiLCJ0eXBlcmVwX29mX2Z1bmN0aW9uIiwidHlwZXJlcF9vZl9yZWYiLCJ0eXBlcmVwX29mX2xhenlfdCIsInR5cGVyZXBfb2ZfYXJyYXkiLCJ0eXBlcmVwX29mX2xpc3QiLCJ0eXBlcmVwX29mX29wdGlvbiIsInZhbHVlX3R1cGxlMCIsInR5cGVyZXBfb2ZfdW5pdCIsInR5cGVyZXBfb2ZfYm9vbCIsInR5cGVyZXBfb2ZfYnl0ZXMiLCJ0eXBlcmVwX29mX3N0cmluZyIsInR5cGVyZXBfb2ZfZmxvYXQiLCJ0eXBlcmVwX29mX2NoYXIiLCJ0eXBlcmVwX29mX2ludDYzIiwidHlwZXJlcF9vZl9uYXRpdmVpbnQiLCJ0eXBlcmVwX29mX2ludDY0IiwidHlwZXJlcF9vZl9pbnQzMiIsInR5cGVyZXBfb2ZfaW50Iiwid2l0aF9yZXR1cm4iLCJhbV9ydW5uaW5nX2lubGluZV90ZXN0IiwiYW1fcnVubmluZ190ZXN0IiwidF9vZl9zZXhwIiwic2V4cCIsInMiLCJleG4kMCIsImV4biIsInNleHBfb2ZfdCIsInQiLCJhX29mX3NleHAiLCJzZXhwX29mX2EiLCJiX29mX3NleHAiLCJzZXhwX29mX2IiLCJjX29mX3NleHAiLCJzZXhwX29mX2MiLCJvZl9zdHJpbmciLCJ4IiwidG9fc3RyaW5nIiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJjYWxsZXJfaWRlbnRpdHkiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJ2MSIsInYxJDAiLCJiaW5fd3JpdGVfdCIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJiaW5fcmVhZF90IiwiYmluX3JlYWRfdCQwIiwiYXJnXzEiLCJhcmdfMSQwIiwieCQwIiwib2ZfYmlnc3RyaW5nIiwibSIsImJpZ3N0cmluZyIsImJpZ3N0cmluZ19sZW5ndGgiLCJ0b19iaWdzdHJpbmciLCJvcHQiLCJzdGgiLCJwcmVmaXhfd2l0aF9sZW5ndGgiLCJ0X2xlbmd0aCIsImVwcmludGYiLCJmcHJpbnRmIiwia2ZwcmludGYiLCJwcmludGYiLCJleGl0ZiIsImZtdCIsImNvbGxlY3RfdG9fc3RyaW5nIiwiZiIsImRvbmUiLCJvdXRwdXQiLCJlcnIkMyIsImVyciQyIiwiZXJyJDEiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDQiLCJlcnJvcl9zb3VyY2VfMDA5IiwibmFtZSQwIiwiZXJyb3Jfc291cmNlXzAxOCIsImVycm9yX3NvdXJjZV8wMjAiLCJuYW1lJDEiLCJlcnJvcl9zb3VyY2VfMDMzIiwiZXJyb3Jfc291cmNlXzAzNSIsIm5hbWUkMiIsImVycm9yX3NvdXJjZV8wNTEiLCJlcnJvcl9zb3VyY2VfMDUzIiwibmFtZSQzIiwiZXJyb3Jfc291cmNlXzA2NCIsIm5hbWUkNCIsImVycm9yX3NvdXJjZV8wODIiLCJlcnJvcl9zb3VyY2VfMDg0IiwibmFtZSQ1IiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjb21wYXJlIiwiaGFzaF9mb2xkX3QiLCJoYXNoIiwieF8wMDUiLCJncm91cCQwIiwiYmluX3NoYXBlX3QkMCIsImJpbl9zaXplX3QkMCIsImJpbl93cml0ZV90JDAiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDA2IiwiYl8wMDciLCJoYXNoX2ZvbGRfdCQwIiwiaGFzaCQwIiwidF9vZl9zZXhwJDAiLCJ4XzAxMCIsInNleHBfb2ZfdCQwIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJiaW5fd3JpdGVfdCQxIiwiYmluX3dyaXRlcl90JDEiLCJiaW5fcmVhZF90JDMiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl90JDEiLCJjb21wYXJlJDEiLCJhXzAxMSIsImJfMDEyIiwiaGFzaF9mb2xkX3QkMSIsImhhc2gkMSIsInRfb2Zfc2V4cCQxIiwic2V4cF8wMTYiLCJhdG9tXzAxNCIsImF0b21fMDE0JDAiLCJ0X29mX3NleHAkMiIsInNleHBfMDE5Iiwic2V4cF9vZl90JDEiLCJncm91cCQyIiwiYmluX3NoYXBlX3QkMiIsImJpbl9zaXplX3QkMiIsImFyZ3MiLCJzaXplX2FyZ3MiLCJiaW5fd3JpdGVfdCQyIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImJpbl90JDIiLCJjb21wYXJlJDIiLCJhXzAyMSIsImJfMDIyIiwicmlnaHRfMDI0IiwibGVmdF8wMjMiLCJoYXNoX2ZvbGRfdCQyIiwiaHN2JDAiLCJoYXNoJDIiLCJ0X29mX3NleHAkMyIsInNleHBfMDI4IiwiYXRvbV8wMjYiLCJzZXhwX2FyZ3NfMDI5IiwiYXRvbV8wMjYkMCIsImFyZzBfMDMxIiwicmVzMF8wMzIiLCJ0X29mX3NleHAkNCIsInNleHBfMDM0Iiwic2V4cF9vZl90JDIiLCJ2XzAzNiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQzIiwiYmluX3NpemVfdCQzIiwiYmluX3dyaXRlX3QkMyIsImJpbl93cml0ZXJfdCQzIiwiYmluX3JlYWRfdCQ3IiwiYmluX3JlYWRfdCQ4IiwiYmluX3JlYWRlcl90JDMiLCJiaW5fdCQzIiwiY29tcGFyZSQzIiwiYV8wMzciLCJiXzAzOCIsInJpZ2h0XzA0MiIsImxlZnRfMDQxIiwiaGFzaF9mb2xkX3QkMyIsImhhc2gkMyIsInRfb2Zfc2V4cCQ1Iiwic2V4cF8wNTIiLCJhdG9tXzA0NCIsInNleHBfYXJnc18wNDciLCJhdG9tXzA0NCQwIiwiYXJnMF8wNDkiLCJyZXMwXzA1MCIsInNleHBfb2ZfdCQzIiwidl8wNTQiLCJ2XzA1NSIsImdyb3VwJDQiLCJiaW5fc2hhcGVfdCQ0IiwiYmluX3NpemVfdCQ0IiwiYmluX3dyaXRlX3QkNCIsImJpbl93cml0ZXJfdCQ0IiwiYmluX3JlYWRfdCQ5IiwiYmluX3JlYWRfdCQxMCIsImJpbl9yZWFkZXJfdCQ0IiwiYmluX3QkNCIsImNvbXBhcmUkNCIsImFfMDU2IiwiYl8wNTciLCJoYXNoX2ZvbGRfdCQ0IiwiaGFzaCQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzA2MyIsInNleHBfb2ZfdCQ0Iiwidl8wNjUiLCJncm91cCQ1IiwiYmluX3JlYWRfdCQxMSIsImZhaWx3aXRoZiIsImFfMDg4IiwiYl8wODkiLCJhXzA5MCIsImJfMDkxIiwieF8wOTMiLCJ4XzA5NCIsImdyb3VwJDYiLCJiaW5fc2hhcGVfbm9ib2R5IiwiYmluX3NpemVfbm9ib2R5IiwiYmluX3dyaXRlX25vYm9keSIsImJpbl93cml0ZXJfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5IiwiYmluX3JlYWRfbm9ib2R5JDAiLCJiaW5fcmVhZGVyX25vYm9keSIsImJpbl9ub2JvZHkiLCJjb21wYXJlX25vYm9keSIsImhhc2hfZm9sZF9ub2JvZHkiLCJmdW5jIiwiaGFzaF9ub2JvZHkiLCJub2JvZHlfb2Zfc2V4cCIsInNleHBfb2Zfbm9ib2R5IiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9tZSIsImJpbl9zaXplX21lIiwiYmluX3dyaXRlX21lIiwiYmluX3dyaXRlcl9tZSIsImJpbl9yZWFkX21lIiwiYmluX3JlYWRfbWUkMCIsImJpbl9yZWFkZXJfbWUiLCJiaW5fbWUiLCJjb21wYXJlX21lIiwiaGFzaF9mb2xkX21lIiwiZnVuYyQwIiwiaGFzaF9tZSIsIm1lX29mX3NleHAiLCJzZXhwX29mX21lIiwiZ3JvdXAkOCIsImJpbl9zaGFwZV90JDUiLCJiaW5fc2l6ZV90JDUiLCJiaW5fd3JpdGVfdCQ1IiwiYmluX3dyaXRlcl90JDUiLCJiaW5fcmVhZF90JDEyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkZXJfdCQ1IiwiYmluX3QkNSIsImNvbXBhcmUkNSIsImFfMTAxIiwiYl8xMDIiLCJhXzEwMyIsImJfMTA0IiwicmlnaHRfMDcyIiwibGVmdF8wNzEiLCJoYXNoX2ZvbGRfcGVybXMiLCJwZXJtc19vZl9zZXhwIiwib2ZfYV8xMDciLCJ4XzEwOSIsInNleHBfMDc0IiwiYXRvbV8wNzUiLCJzZXhwX2FyZ3NfMDc4IiwiYXRvbV8wNzUkMCIsImFyZzBfMDgwIiwicmVzMF8wODEiLCJzZXhwX29mX3Blcm1zIiwib2ZfYV8xMTAiLCJ4XzExMSIsInZfMDg2Iiwidl8wODciLCJncm91cCQ5IiwiYmluX3NoYXBlX3JlYWQiLCJiaW5fc2l6ZV9yZWFkIiwiYmluX3dyaXRlX3JlYWQiLCJiaW5fd3JpdGVyX3JlYWQiLCJiaW5fcmVhZF9yZWFkIiwiYmluX3JlYWRfcmVhZCQwIiwiYmluX3JlYWRlcl9yZWFkIiwiYmluX3JlYWQiLCJjb21wYXJlX3JlYWQiLCJoYXNoX2ZvbGRfcmVhZCIsImZ1bmMkMSIsImhhc2hfcmVhZCIsInJlYWRfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZCIsImNvbXBhcmVfd3JpdGUiLCJoYXNoX2ZvbGRfd3JpdGUiLCJmdW5jJDIiLCJoYXNoX3dyaXRlIiwid3JpdGVfb2Zfc2V4cCIsInNleHBfb2Zfd3JpdGUiLCJncm91cCQxMCIsImJpbl9zaGFwZV9pbW11dGFibGUiLCJiaW5fc2l6ZV9pbW11dGFibGUiLCJiaW5fd3JpdGVfaW1tdXRhYmxlIiwiYmluX3dyaXRlcl9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUiLCJiaW5fcmVhZF9pbW11dGFibGUkMCIsImJpbl9yZWFkZXJfaW1tdXRhYmxlIiwiYmluX2ltbXV0YWJsZSIsImNvbXBhcmVfaW1tdXRhYmxlIiwiaGFzaF9mb2xkX2ltbXV0YWJsZSIsImZ1bmMkMyIsImhhc2hfaW1tdXRhYmxlIiwiaW1tdXRhYmxlX29mX3NleHAiLCJzZXhwX29mX2ltbXV0YWJsZSIsImdyb3VwJDExIiwiYmluX3NoYXBlX3JlYWRfd3JpdGUiLCJiaW5fc2l6ZV9yZWFkX3dyaXRlIiwiYmluX3dyaXRlX3JlYWRfd3JpdGUiLCJiaW5fd3JpdGVyX3JlYWRfd3JpdGUiLCJiaW5fcmVhZF9yZWFkX3dyaXRlIiwiYmluX3JlYWRfcmVhZF93cml0ZSQwIiwiYmluX3JlYWRlcl9yZWFkX3dyaXRlIiwiYmluX3JlYWRfd3JpdGUiLCJjb21wYXJlX3JlYWRfd3JpdGUiLCJoYXNoX2ZvbGRfcmVhZF93cml0ZSIsImZ1bmMkNCIsImhhc2hfcmVhZF93cml0ZSIsInJlYWRfd3JpdGVfb2Zfc2V4cCIsInNleHBfb2ZfcmVhZF93cml0ZSIsImdyb3VwJDEyIiwiYmluX3NoYXBlX3Blcm1zIiwiYmluX3NpemVfcGVybXMiLCJiaW5fd3JpdGVfcGVybXMiLCJiaW5fd3JpdGVyX3Blcm1zIiwiYmluX3JlYWRfcGVybXMiLCJiaW5fcmVhZF9wZXJtcyQwIiwiYmluX3JlYWRlcl9wZXJtcyIsImJpbl9wZXJtcyIsImNvbXBhcmVfcGVybXMiLCJhXzEyNCIsImJfMTI1IiwiYV8xMjYiLCJiXzEyNyIsIm1ha2UiLCJlcnJvcl9zb3VyY2VfMDExIiwidGVzdHMiLCJiIiwic2l6ZV9vZl9iIiwid3JpdGVfYiIsImJpbl93cml0ZXJfYiIsIm9mX2IiLCJiaW5fcmVhZGVyX2IiLCJiaW5fYiIsImNtcF9iIiwiYV8wMDMiLCJiXzAwNCIsImFfMDA1IiwiYl8wMDYiLCJvZl9hXzAwNyIsIm9mX2JfMDA4Iiwic2V4cF8wMTMiLCJ0YWdfMDE0Iiwic2V4cF9hcmdzXzAxNSIsImFyZzBfMDE2IiwicmVzMF8wMTciLCJzZXhwX2FyZ3NfMDIwIiwiYXJnMF8wMjEiLCJyZXMwXzAyMiIsIm9mX2FfMDI1Iiwib2ZfYl8wMjYiLCJhcmcwXzAyNyIsInJlczBfMDI4IiwiYXJnMF8wMjkiLCJyZXMwXzAzMCIsIm1hcCIsImYxIiwiZjIiLCJ4XzA0MCIsInhfMDQxIiwiZXF1YWwiLCJ4XzA0MiIsInhfMDQzIiwiYV8wMzUiLCJiXzAzNiIsInN5bWJvbCIsInkiLCJub3JtYWxpemUiLCJsZW5ndGhfZnVuIiwiaSIsInNsaWNlIiwic3ViX2Z1biIsInN0YXJ0Iiwic3RvcCIsInN0b3AkMCIsImxlbiIsInNpemVfb2ZfcyIsInYyIiwic2l6ZSIsIndyaXRlX3MiLCJwb3MkMiIsImJpbl93cml0ZXJfcyIsIm9mX3MiLCJhcmdfMiIsImJpbl9yZWFkZXJfcyIsImJpbl9zIiwidjEkMSIsInBvcyQzIiwiYXJnXzEkMSIsIm1lcmdlX2FsbCIsIkhlYXAiLCJzZXFzIiwibm90X3lldF9pbl9oZWFwIiwiaGVhcCIsImhlYXAkMCIsInNlcSQyIiwiZWx0JDAiLCJub3RfeWV0X2luX2hlYXAkMCIsInNlcSIsInNlcSQwIiwic2VxJDEiLCJlbHQiLCJ0X3NleHBfZ3JhbW1hciIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yIiwiZ2VuZXJhdG9yXzAwMyIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIiLCJvYnNlcnZlcl8wMDIiLCJxdWlja2NoZWNrX3Nocmlua2VyIiwic2hyaW5rZXJfMDAxIiwidHlwZW5hbWVfb2ZfdCIsInR5cGVyZXBfb2ZfdCIsIm5hbWVfb2ZfdCIsImJpbmFyeV9zZWFyY2giLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCIsIm1lbSIsImlzX2VtcHR5IiwiaXRlciIsImZvbGQiLCJmb2xkX3Jlc3VsdCIsImZvbGRfdW50aWwiLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImNyZWF0ZSIsImNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIiwiaW5pdCIsIm1ha2VfbWF0cml4IiwiY29weV9tYXRyaXgiLCJhcHBlbmQiLCJjb25jYXQiLCJjb3B5IiwiZmlsbCIsImJsaXQiLCJibGl0byIsInVuc2FmZV9ibGl0Iiwic3ViIiwic3VibyIsIm9mX2xpc3QiLCJmb2xkaW5nX21hcCIsImZvbGRpbmdfbWFwaSIsImZvbGRfbWFwIiwiZm9sZF9tYXBpIiwiaXRlcmkiLCJtYXBpIiwiZm9sZGkiLCJmb2xkX3JpZ2h0Iiwic29ydCIsInN0YWJsZV9zb3J0IiwiaXNfc29ydGVkIiwiaXNfc29ydGVkX3N0cmljdGx5IiwibWVyZ2UiLCJjb25jYXRfbWFwIiwiY29uY2F0X21hcGkiLCJwYXJ0aXRpb25fdGYiLCJwYXJ0aXRpb25pX3RmIiwiY2FydGVzaWFuX3Byb2R1Y3QiLCJ0cmFuc3Bvc2UiLCJ0cmFuc3Bvc2VfZXhuIiwiZmlsdGVyX29wdCIsImZpbHRlcl9tYXAiLCJmaWx0ZXJfbWFwaSIsImZvcl9hbGxpIiwiZXhpc3RzaSIsImNvdW50aSIsIml0ZXIyX2V4biIsIm1hcDJfZXhuIiwiZm9sZDJfZXhuIiwiZm9yX2FsbDJfZXhuIiwiZXhpc3RzMl9leG4iLCJmaWx0ZXIiLCJmaWx0ZXJpIiwic3dhcCIsInJldl9pbnBsYWNlIiwicmV2Iiwib2ZfbGlzdF9yZXYiLCJvZl9saXN0X21hcCIsIm9mX2xpc3RfbWFwaSIsIm9mX2xpc3RfcmV2X21hcCIsIm9mX2xpc3RfcmV2X21hcGkiLCJtYXBfaW5wbGFjZSIsImZpbmRfZXhuIiwiZmluZF9tYXBfZXhuIiwiZmluZGkiLCJmaW5kaV9leG4iLCJmaW5kX21hcGkiLCJmaW5kX21hcGlfZXhuIiwiZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGUiLCJyZWR1Y2UiLCJyZWR1Y2VfZXhuIiwicGVybXV0ZSIsInJhbmRvbV9lbGVtZW50IiwicmFuZG9tX2VsZW1lbnRfZXhuIiwiemlwIiwiemlwX2V4biIsInVuemlwIiwic29ydGVkX2NvcHkiLCJsYXN0IiwidG9fc2VxdWVuY2UiLCJ0b19zZXF1ZW5jZV9tdXRhYmxlIiwibmdldCIsIm5zZXQiLCJsZW5ndGgiLCJnZXQiLCJzZXQiLCJjb21wYXJlX3QiLCJhXzAwNCIsImJfMDA1IiwieF8wMDkiLCJjcmVhdGUkMCIsImVxdWFsJDAiLCJvZl9ib29sIiwiY29tcGFyZV90JDAiLCJhXzAxMyIsImJfMDE0IiwieF8wMTYiLCJ4XzAxNyIsImNyZWF0ZSQxIiwiZXF1YWwkMSIsIm9mX2Jvb2wkMCIsInBlcm1zIiwic2l6ZV9vZl9wZXJtcyIsIndyaXRlX3Blcm1zIiwib2ZfcGVybXMiLCJjbXBfcGVybXMiLCJhXzAxOCIsImJfMDE5IiwiYV8wMjAiLCJiXzAyMSIsIm9mX2FfMDIyIiwib2ZfcGVybXNfMDIzIiwieF8wMjUiLCJvZl9hXzAyNiIsIm9mX3Blcm1zXzAyNyIsInhfMDI4IiwiYV8wMjkiLCJiXzAzMCIsIm9mX3Blcm1zXzAzMSIsIm9mX3Blcm1zXzAzMyIsImFfMDM0IiwiYl8wMzUiLCJvZl9wZXJtc18wMzYiLCJvZl9wZXJtc18wMzgiLCJ0b19hcnJheV9pZCIsIm9mX2FycmF5X2lkIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJtYXhfbGVuZ3RoIiwiYmluX3NoYXBlX3QkNiIsInNpemVfb2ZfZiIsIndyaXRlX2YiLCJiaW5fd3JpdGVyX2YiLCJvZl9mIiwiYmluX3JlYWRlcl9mIiwiYmluX2YiLCJjbXBfZiIsImNtcF9zIiwib2ZfZl8wMDciLCJvZl9zXzAwOCIsIm9mX2ZfMDI1Iiwib2Zfc18wMjYiLCJ2MCIsInRhZzAiLCJ0YWcxIiwidHlwZW5hbWUiLCJ0YWdzIiwicG9seW1vcnBoaWMiLCJ2YWx1ZSIsInYwJDAiLCJ4MSIsIngyIiwiYV8wMzYiLCJiXzAzNyIsImFfMDQwIiwiYl8wNDEiLCJhXzAzOCIsImJfMDM5IiwibmFtZXMiLCJlcnJvcl9zb3VyY2VfMDIzIiwidjQiLCJ2MyIsInNpemUkMCIsInNpemUkMSIsInZfcG9zX2ZuYW1lIiwidl9wb3NfbG51bSIsInZfcG9zX2JvbCIsInZfcG9zX2NudW0iLCJuIiwibiQwIiwibiQxIiwicG9zX2NudW0iLCJyIiwicG9zX2JvbCIsInBvc19sbnVtIiwicG9zX2ZuYW1lIiwicG9zX2NudW0kMCIsInBvc19ib2wkMCIsInBvc19sbnVtJDAiLCJwb3NfZm5hbWUkMCIsIm1ha2VfY3JlYXRvciIsInBvc19mbmFtZV9mdW4iLCJwb3NfbG51bV9mdW4iLCJwb3NfYm9sX2Z1biIsInBvc19jbnVtX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsInBvc19mbmFtZV9nZW4iLCJjb21waWxlX2FjYyQxIiwicG9zX2xudW1fZ2VuIiwiY29tcGlsZV9hY2MkMiIsInBvc19ib2xfZ2VuIiwiY29tcGlsZV9hY2MkMyIsInBvc19jbnVtX2dlbiIsImFjYyIsIm1hcF9wb2x5IiwicmVjb3JkIiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJoc3YkMSIsImhzdiQyIiwic2V4cF8wMDQiLCJmaWVsZF9zZXhwc18wMDUiLCJwb3NfZm5hbWVfMDA2IiwicG9zX2xudW1fMDA4IiwicG9zX2JvbF8wMTAiLCJwb3NfY251bV8wMTIiLCJkdXBsaWNhdGVzXzAxNCIsImV4dHJhXzAxNSIsInNleHBfMDA0JDAiLCJmaWVsZF9zZXhwc18wMTgiLCJmaWVsZF9uYW1lXzAxNiIsInRhaWxfMDI1IiwiZmllbGRfc2V4cF8wMTckNCIsImZpZWxkX3NleHBfMDE3IiwieF8wMjYiLCJmaWVsZF9zZXhwXzAxNyQwIiwiZnZhbHVlXzAyMSIsImZpZWxkX3NleHBfMDE3JDEiLCJmdmFsdWVfMDIyIiwiZmllbGRfc2V4cF8wMTckMiIsImZ2YWx1ZV8wMTkiLCJmaWVsZF9zZXhwXzAxNyQzIiwiZnZhbHVlXzAyMCIsInBvc19jbnVtXzAxMyIsInBvc19ib2xfMDExIiwicG9zX2xudW1fMDA5IiwicG9zX2ZuYW1lXzAwNyIsInBvc19jbnVtXzAzNCIsInBvc19ib2xfMDMyIiwicG9zX2xudW1fMDMwIiwicG9zX2ZuYW1lXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImEwIiwiYTAkMCIsInYxJDIiLCJ2MSQzIiwidjIkMCIsInYxJDQiLCJ2MyQwIiwidjIkMSIsInYxJDUiLCJzaXplJDIiLCJzaXplJDMiLCJ2MiQyIiwidjEkNiIsInNpemUkNCIsInYyJDMiLCJ2MSQ3Iiwic2l6ZSQ1IiwicG9zJDQiLCJwb3MkNSIsInBvcyQ2IiwicG9zJDciLCJwb3MkOCIsInBvcyQ5IiwicG9zJDEwIiwicG9zJDExIiwicG9zJDEyIiwicG9zJDEzIiwicG9zJDE0IiwicG9zJDE1IiwicG9zJDE2IiwiYXJnXzEkMiIsImFyZ18xJDMiLCJhcmdfMyIsImFyZ18xJDQiLCJhcmdfMiQwIiwiYXJnXzEkNSIsImFyZ18yJDEiLCJhcmdfMyQwIiwiYXJnXzEkNiIsImFyZ18yJDIiLCJhcmdfMSQ3IiwiYXJnXzIkMyIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJhcmcwXzAxMSIsInJlczBfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsImFyZzBfMDE1IiwicmVzMF8wMTYiLCJhcmcyXzAxOSIsImFyZzFfMDE4IiwiYXJnMF8wMTciLCJyZXMwXzAyMCIsInJlczFfMDIxIiwicmVzMl8wMjIiLCJhcmcxXzAyNCIsImFyZzBfMDIzIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsImFyZzJfMDI5IiwiYXJnMV8wMjgiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwiYXJnMV8wMzQiLCJhcmcwXzAzMyIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJhcmcxXzAzOCIsImFyZzBfMDM3IiwicmVzMF8wMzkiLCJyZXMxXzA0MCIsInRvX2luZm8iLCJvZl9pbmZvIiwic2V4cF9vZl90JDUiLCJzZXhwX29mX3QkNiIsInRvX3NleHBhYmxlIiwib2Zfc2V4cGFibGUiLCJiaW5fc2l6ZV90JDYiLCJiaW5fd3JpdGVfdCQ2IiwiZmFpbHdpdGhzIiwic3RyaWN0IiwiaGVyZSIsIm1lc3NhZ2UiLCJmYWlsd2l0aHAiLCJ0b19ydW4iLCJydW4iLCJzYW5pdGl6ZSIsImZsdXNoZWQiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSIsInRvX3J1biQwIiwicnVuJDAiLCJmbHVzaGVkJDAiLCJ1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSQwIiwic2FuaXRpemUkMCIsIm9mX2FfMDEwIiwieF8wMTEiLCJhXzAxMiIsImJfMDEzIiwiYV8wMTYiLCJiXzAxNyIsImFfMDE0IiwiYl8wMTUiLCJvZl9hXzAxOCIsInhfMDIwIiwib2ZfYV8wMjEiLCJ4XzAyMiIsIm1hcCQxIiwiZGVmYXVsdF9zZWVkIiwiZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50MiIsImdlbmVyYXRvcl8wMTIiLCJnZW5lcmF0b3JfMDEzIiwic2l6ZV8wMTYiLCJyYW5kb21fMDE3Iiwic2l6ZV8wMTQiLCJyYW5kb21fMDE1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MiIsIm9ic2VydmVyXzAwNSIsIm9ic2VydmVyXzAwNiIsInhfMDA3Iiwic2l6ZV8wMDgiLCJoYXNoXzAwOSIsImhhc2hfMDA5JDAiLCJoYXNoXzAwOSQxIiwiaGFzaF8wMDkkMiIsImhhc2hfMDA5JDMiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQyIiwic2hyaW5rZXJfMDAyIiwieF8wMDQiLCJ4XzAwMyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQzIiwiZ2VuZXJhdG9yXzAzMyIsImdlbmVyYXRvcl8wMzQiLCJnZW5lcmF0b3JfMDM1Iiwic2l6ZV8wNDAiLCJyYW5kb21fMDQxIiwic2l6ZV8wMzgiLCJyYW5kb21fMDM5Iiwic2l6ZV8wMzYiLCJyYW5kb21fMDM3IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MyIsIm9ic2VydmVyXzAyNCIsIm9ic2VydmVyXzAyNSIsIm9ic2VydmVyXzAyNiIsInhfMDI3Iiwic2l6ZV8wMjgiLCJoYXNoXzAyOSIsInhfMDMwIiwiaGFzaF8wMjkkMCIsImhhc2hfMDI5JDEiLCJ4XzAzMSIsImhhc2hfMDI5JDIiLCJoYXNoXzAyOSQzIiwieF8wMzIiLCJoYXNoXzAyOSQ0IiwiaGFzaF8wMjkkNSIsInF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDMiLCJzaHJpbmtlcl8wMTgiLCJzaHJpbmtlcl8wMTkiLCJzaHJpbmtlcl8wMjAiLCJ4XzAyMSIsInhfMDIzIiwicXVpY2tjaGVja19nZW5lcmF0b3JfdmFyaWFudDQiLCJnZW5lcmF0b3JfMDYxIiwiZ2VuZXJhdG9yXzA2MiIsImdlbmVyYXRvcl8wNjMiLCJnZW5lcmF0b3JfMDY0Iiwic2l6ZV8wNzEiLCJyYW5kb21fMDcyIiwic2l6ZV8wNjkiLCJyYW5kb21fMDcwIiwic2l6ZV8wNjciLCJyYW5kb21fMDY4Iiwic2l6ZV8wNjUiLCJyYW5kb21fMDY2IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NCIsIm9ic2VydmVyXzA1MCIsIm9ic2VydmVyXzA1MSIsIm9ic2VydmVyXzA1MiIsIm9ic2VydmVyXzA1MyIsInhfMDU0Iiwic2l6ZV8wNTUiLCJoYXNoXzA1NiIsInhfMDU3IiwiaGFzaF8wNTYkMCIsImhhc2hfMDU2JDEiLCJ4XzA1OCIsImhhc2hfMDU2JDIiLCJoYXNoXzA1NiQzIiwieF8wNTkiLCJoYXNoXzA1NiQ0IiwiaGFzaF8wNTYkNSIsInhfMDYwIiwiaGFzaF8wNTYkNiIsImhhc2hfMDU2JDciLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ0Iiwic2hyaW5rZXJfMDQyIiwic2hyaW5rZXJfMDQzIiwic2hyaW5rZXJfMDQ0Iiwic2hyaW5rZXJfMDQ1IiwieF8wNDYiLCJ4XzA0NyIsInhfMDQ4IiwieF8wNDkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl92YXJpYW50NSIsImdlbmVyYXRvcl8wOTYiLCJnZW5lcmF0b3JfMDk3IiwiZ2VuZXJhdG9yXzA5OCIsImdlbmVyYXRvcl8wOTkiLCJnZW5lcmF0b3JfMTAwIiwic2l6ZV8xMDkiLCJyYW5kb21fMTEwIiwic2l6ZV8xMDciLCJyYW5kb21fMTA4Iiwic2l6ZV8xMDUiLCJyYW5kb21fMTA2Iiwic2l6ZV8xMDMiLCJyYW5kb21fMTA0Iiwic2l6ZV8xMDEiLCJyYW5kb21fMTAyIiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NSIsIm9ic2VydmVyXzA4MyIsIm9ic2VydmVyXzA4NCIsIm9ic2VydmVyXzA4NSIsIm9ic2VydmVyXzA4NiIsIm9ic2VydmVyXzA4NyIsInhfMDg4Iiwic2l6ZV8wODkiLCJoYXNoXzA5MCIsInhfMDkxIiwiaGFzaF8wOTAkMCIsImhhc2hfMDkwJDEiLCJ4XzA5MiIsImhhc2hfMDkwJDIiLCJoYXNoXzA5MCQzIiwiaGFzaF8wOTAkNCIsImhhc2hfMDkwJDUiLCJoYXNoXzA5MCQ2IiwiaGFzaF8wOTAkNyIsInhfMDk1IiwiaGFzaF8wOTAkOCIsImhhc2hfMDkwJDkiLCJxdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ1Iiwic2hyaW5rZXJfMDczIiwic2hyaW5rZXJfMDc0Iiwic2hyaW5rZXJfMDc1Iiwic2hyaW5rZXJfMDc2Iiwic2hyaW5rZXJfMDc3IiwieF8wNzgiLCJ4XzA3OSIsInhfMDgwIiwieF8wODEiLCJ4XzA4MiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ2IiwiZ2VuZXJhdG9yXzEzOCIsImdlbmVyYXRvcl8xMzkiLCJnZW5lcmF0b3JfMTQwIiwiZ2VuZXJhdG9yXzE0MSIsImdlbmVyYXRvcl8xNDIiLCJnZW5lcmF0b3JfMTQzIiwic2l6ZV8xNTQiLCJyYW5kb21fMTU1Iiwic2l6ZV8xNTIiLCJyYW5kb21fMTUzIiwic2l6ZV8xNTAiLCJyYW5kb21fMTUxIiwic2l6ZV8xNDgiLCJyYW5kb21fMTQ5Iiwic2l6ZV8xNDYiLCJyYW5kb21fMTQ3Iiwic2l6ZV8xNDQiLCJyYW5kb21fMTQ1IiwicXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NiIsIm9ic2VydmVyXzEyMyIsIm9ic2VydmVyXzEyNCIsIm9ic2VydmVyXzEyNSIsIm9ic2VydmVyXzEyNiIsIm9ic2VydmVyXzEyNyIsIm9ic2VydmVyXzEyOCIsInhfMTI5Iiwic2l6ZV8xMzAiLCJoYXNoXzEzMSIsInhfMTMyIiwiaGFzaF8xMzEkMCIsImhhc2hfMTMxJDEiLCJ4XzEzMyIsImhhc2hfMTMxJDIiLCJoYXNoXzEzMSQzIiwieF8xMzQiLCJoYXNoXzEzMSQ0IiwiaGFzaF8xMzEkNSIsInhfMTM1IiwiaGFzaF8xMzEkNiIsImhhc2hfMTMxJDciLCJ4XzEzNiIsImhhc2hfMTMxJDgiLCJoYXNoXzEzMSQ5IiwieF8xMzciLCJoYXNoXzEzMSQxMCIsImhhc2hfMTMxJDExIiwicXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NiIsInNocmlua2VyXzExMSIsInNocmlua2VyXzExMiIsInNocmlua2VyXzExMyIsInNocmlua2VyXzExNCIsInNocmlua2VyXzExNSIsInNocmlua2VyXzExNiIsInhfMTE3IiwieF8xMTgiLCJ4XzExOSIsInhfMTIwIiwieF8xMjEiLCJ4XzEyMiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlMiIsImdlbmVyYXRvcl8xNjYiLCJnZW5lcmF0b3JfMTY3Iiwic2l6ZV8xNjgiLCJyYW5kb21fMTY5IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTIiLCJvYnNlcnZlcl8xNjAiLCJvYnNlcnZlcl8xNjEiLCJzaXplXzE2NCIsImhhc2hfMTY1IiwieF8xNjMiLCJ4XzE2MiIsImhhc2hfMTY1JDAiLCJoYXNoXzE2NSQxIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTIiLCJzaHJpbmtlcl8xNTYiLCJzaHJpbmtlcl8xNTciLCJ4XzE1OSIsInhfMTU4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGUzIiwiZ2VuZXJhdG9yXzE4NCIsImdlbmVyYXRvcl8xODUiLCJnZW5lcmF0b3JfMTg2Iiwic2l6ZV8xODciLCJyYW5kb21fMTg4IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTMiLCJvYnNlcnZlcl8xNzYiLCJvYnNlcnZlcl8xNzciLCJvYnNlcnZlcl8xNzgiLCJzaXplXzE4MiIsImhhc2hfMTgzIiwieF8xODEiLCJ4XzE4MCIsInhfMTc5IiwiaGFzaF8xODMkMCIsImhhc2hfMTgzJDEiLCJoYXNoXzE4MyQyIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTMiLCJzaHJpbmtlcl8xNzAiLCJzaHJpbmtlcl8xNzEiLCJzaHJpbmtlcl8xNzIiLCJ4XzE3NSIsInhfMTc0IiwieF8xNzMiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTQiLCJnZW5lcmF0b3JfMjA3IiwiZ2VuZXJhdG9yXzIwOCIsImdlbmVyYXRvcl8yMDkiLCJnZW5lcmF0b3JfMjEwIiwic2l6ZV8yMTEiLCJyYW5kb21fMjEyIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTQiLCJvYnNlcnZlcl8xOTciLCJvYnNlcnZlcl8xOTgiLCJvYnNlcnZlcl8xOTkiLCJvYnNlcnZlcl8yMDAiLCJzaXplXzIwNSIsImhhc2hfMjA2IiwieF8yMDQiLCJ4XzIwMyIsInhfMjAyIiwieF8yMDEiLCJoYXNoXzIwNiQwIiwiaGFzaF8yMDYkMSIsImhhc2hfMjA2JDIiLCJoYXNoXzIwNiQzIiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTQiLCJzaHJpbmtlcl8xODkiLCJzaHJpbmtlcl8xOTAiLCJzaHJpbmtlcl8xOTEiLCJzaHJpbmtlcl8xOTIiLCJ4XzE5NiIsInhfMTk1IiwieF8xOTQiLCJ4XzE5MyIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNSIsImdlbmVyYXRvcl8yMzUiLCJnZW5lcmF0b3JfMjM2IiwiZ2VuZXJhdG9yXzIzNyIsImdlbmVyYXRvcl8yMzgiLCJnZW5lcmF0b3JfMjM5Iiwic2l6ZV8yNDAiLCJyYW5kb21fMjQxIiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTUiLCJvYnNlcnZlcl8yMjMiLCJvYnNlcnZlcl8yMjQiLCJvYnNlcnZlcl8yMjUiLCJvYnNlcnZlcl8yMjYiLCJvYnNlcnZlcl8yMjciLCJzaXplXzIzMyIsImhhc2hfMjM0IiwieF8yMzIiLCJ4XzIzMSIsInhfMjMwIiwieF8yMjkiLCJ4XzIyOCIsImhhc2hfMjM0JDAiLCJoYXNoXzIzNCQxIiwiaGFzaF8yMzQkMiIsImhhc2hfMjM0JDMiLCJoYXNoXzIzNCQ0IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTUiLCJzaHJpbmtlcl8yMTMiLCJzaHJpbmtlcl8yMTQiLCJzaHJpbmtlcl8yMTUiLCJzaHJpbmtlcl8yMTYiLCJzaHJpbmtlcl8yMTciLCJ4XzIyMiIsInhfMjIxIiwieF8yMjAiLCJ4XzIxOSIsInhfMjE4IiwicXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU2IiwiZ2VuZXJhdG9yXzI2OCIsImdlbmVyYXRvcl8yNjkiLCJnZW5lcmF0b3JfMjcwIiwiZ2VuZXJhdG9yXzI3MSIsImdlbmVyYXRvcl8yNzIiLCJnZW5lcmF0b3JfMjczIiwic2l6ZV8yNzQiLCJyYW5kb21fMjc1IiwicXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTYiLCJvYnNlcnZlcl8yNTQiLCJvYnNlcnZlcl8yNTUiLCJvYnNlcnZlcl8yNTYiLCJvYnNlcnZlcl8yNTciLCJvYnNlcnZlcl8yNTgiLCJvYnNlcnZlcl8yNTkiLCJzaXplXzI2NiIsImhhc2hfMjY3IiwieF8yNjUiLCJ4XzI2NCIsInhfMjYzIiwieF8yNjIiLCJ4XzI2MSIsInhfMjYwIiwiaGFzaF8yNjckMCIsImhhc2hfMjY3JDEiLCJoYXNoXzI2NyQyIiwiaGFzaF8yNjckMyIsImhhc2hfMjY3JDQiLCJoYXNoXzI2NyQ1IiwicXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTYiLCJzaHJpbmtlcl8yNDIiLCJzaHJpbmtlcl8yNDMiLCJzaHJpbmtlcl8yNDQiLCJzaHJpbmtlcl8yNDUiLCJzaHJpbmtlcl8yNDYiLCJzaHJpbmtlcl8yNDciLCJ4XzI1MyIsInhfMjUyIiwieF8yNTEiLCJ4XzI1MCIsInhfMjQ5IiwieF8yNDgiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjIiLCJvYnNlcnZlcl8yODIiLCJvYnNlcnZlcl8yODMiLCJnZW5lcmF0b3JfMjg0IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm4zIiwib2JzZXJ2ZXJfMjkzIiwib2JzZXJ2ZXJfMjk0Iiwib2JzZXJ2ZXJfMjk1IiwiZ2VuZXJhdG9yXzI5NiIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNCIsIm9ic2VydmVyXzMwNyIsIm9ic2VydmVyXzMwOCIsIm9ic2VydmVyXzMwOSIsIm9ic2VydmVyXzMxMCIsImdlbmVyYXRvcl8zMTEiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9mbjUiLCJvYnNlcnZlcl8zMjQiLCJvYnNlcnZlcl8zMjUiLCJvYnNlcnZlcl8zMjYiLCJvYnNlcnZlcl8zMjciLCJvYnNlcnZlcl8zMjgiLCJnZW5lcmF0b3JfMzI5IiwicXVpY2tjaGVja19nZW5lcmF0b3JfZm42Iiwib2JzZXJ2ZXJfMzQ0Iiwib2JzZXJ2ZXJfMzQ1Iiwib2JzZXJ2ZXJfMzQ2Iiwib2JzZXJ2ZXJfMzQ3Iiwib2JzZXJ2ZXJfMzQ4Iiwib2JzZXJ2ZXJfMzQ5IiwiZ2VuZXJhdG9yXzM1MCIsIm9mX2hhc2giLCJNIiwib2ZfcHJlZGljYXRlIiwic2luZ2xldG9uIiwiZG91YmxldG9uIiwiZW51bSQwIiwibGlzdCIsIm9mX2Z1biIsImNvbXBhcmlzb24iLCJlcSIsImx0IiwiZ3QiLCJjIiwicmV0dXJuJDAiLCJzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCIsInNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCIsInNpbmdsZXRvbiQwIiwiZG91YmxldG9uJDAiLCJyYW5kb20iLCJvZl9mdW4kMCIsIm9mX3NlcXVlbmNlIiwicCIsImsiLCJib3VuZGVkX2dlb21ldHJpYyIsIm1heGltdW0iLCJnZW9tZXRyaWMiLCJsaXN0X3dpdGhfbGVuZ3RoIiwiY29tcGFyZV9mbiIsImRvbSIsImdldF9pbmRleCIsImJfMzUyIiwiYV8zNTEiLCJlcXVhbF9mbiIsImNtcCIsImVtcHR5Iiwibm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSIsInJhbmRvbV9zdGF0ZV9vZl9zZWVkIiwic2VlZCIsInN0ciIsIm1ha2Vfc2VlZCIsInN0cmluZyIsIm1ha2Vfc2hyaW5rX2NvdW50IiwibWFrZV9jb25maWciLCJzaXplcyIsInRyaWFscyIsInNocmlua19hdHRlbXB0cyIsIm1ha2VfdGVzdF9tIiwiZ2VuIiwic2hyaW5rZXIiLCJzZXhwX29mIiwicmFuZG9tX3ZhbHVlIiwic3RoJDAiLCJyYW5kb21fc2VxdWVuY2UiLCJjb25maWciLCJzZXF1ZW5jZSIsInRlc3QiLCJleGFtcGxlcyIsInRlc3RfbSIsInRlc3Rfb3JfZXJyb3IiLCJ0ZXN0X2Rpc3RpbmN0X3ZhbHVlcyIsImRpc3RpbmN0X3ZhbHVlcyIsInNldCQwIiwiYWN0dWFsX2NvdW50Iiwic2V4cF9vZl9lbHQiLCJ4XzM1MyIsInZhbHVlcyIsIm1hdGNoIiwicmVzIiwiaCIsInRlc3RfY2FuX2dlbmVyYXRlIiwic2V4cF9vZl92YWx1ZSIsInhfMzU0IiwiZGVmYXVsdF90cmlhbF9jb3VudCIsImRlZmF1bHRfc2l6ZXMiLCJjb21wYXJlX2EiLCJjb21wYXJlX2IiLCJ0XzAwNiIsInRfMDA1IiwidF8wMDgiLCJ0XzAwNyIsImdlbl9ub25fZW1wdHkiLCJnZW5fd2l0aF9sZW5ndGgiLCJnZW5fZmlsdGVyZWQiLCJnZW5fcGVybXV0YXRpb25zIiwiZ2VuZXJhdGVfYSIsIm9ic2VydmVfYSIsInNocmlua19hIiwibW9kdWxlX25hbWUkMCIsIm1vZHVsZV9uYW1lIiwiaGFzaGFibGVfcyIsImZpbmRfbXVsdGkiLCJyZW1vdmVfbXVsdGkiLCJhZGRfbXVsdGkiLCJkZWNyIiwiaW5jciIsInRvX2FsaXN0Iiwic2ltaWxhciIsImZpbHRlcl9tYXBpX2lucGxhY2UiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJtYXBpX2lucGxhY2UiLCJmaWx0ZXJpX2lucGxhY2UiLCJmaWx0ZXJfaW5wbGFjZSIsImZpbHRlcl9rZXlzX2lucGxhY2UiLCJkYXRhIiwia2V5cyIsIm1lcmdlX2ludG8iLCJmaW5kX2FuZF9yZW1vdmUiLCJmaW5kaV9hbmRfY2FsbDIiLCJmaW5kaV9hbmRfY2FsbDEiLCJmaW5kaV9hbmRfY2FsbCIsImZpbmRfYW5kX2NhbGwyIiwiZmluZF9hbmRfY2FsbDEiLCJmaW5kX2FuZF9jYWxsIiwiZmluZGlfb3JfYWRkIiwiZmluZF9vcl9hZGQiLCJwYXJ0aXRpb25fbWFwaSIsInBhcnRpdGlvbl9tYXAiLCJmaWx0ZXJfa2V5cyIsInVwZGF0ZV9hbmRfcmV0dXJuIiwidXBkYXRlIiwiY2hhbmdlIiwiYWRkX2V4biIsImFkZCIsImNob29zZV9leG4iLCJjaG9vc2UiLCJyZW1vdmUiLCJpdGVyX2tleXMiLCJjbGVhciIsInNleHBfb2Zfa2V5IiwiY3JlYXRlX3dpdGhfa2V5X2V4biIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciIsImNyZWF0ZV93aXRoX2tleSIsImNyZWF0ZV9tYXBwZWQiLCJvZl9hbGlzdF9tdWx0aSIsIm9mX2FsaXN0X2V4biIsIm9mX2FsaXN0X29yX2Vycm9yIiwib2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzIiwib2ZfYWxpc3QiLCJoYXNoX3BhcmFtIiwidmFsaWRhdGUiLCJncm93dGhfYWxsb3dlZCIsImhhc2hhYmxlIiwib2ZfYWxpc3QkMCIsImwiLCJvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMkMCIsIm9mX2FsaXN0X29yX2Vycm9yJDAiLCJvZl9hbGlzdF9leG4kMCIsIm9mX2FsaXN0X211bHRpJDAiLCJjcmVhdGVfbWFwcGVkJDAiLCJnZXRfa2V5IiwiZ2V0X2RhdGEiLCJjcmVhdGVfd2l0aF9rZXkkMCIsImNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciQwIiwiY3JlYXRlX3dpdGhfa2V5X2V4biQwIiwiY29tYmluZSIsImJpbl9zaGFwZV9lbCIsImJpbl9zaXplX2VsIiwiYmluX3dyaXRlX2VsIiwiYmluX3JlYWRfZWwiLCJpdGVyJDEiLCJrZXkiLCJuZXh0IiwiaW52YXJpYW50X2tleSIsInNleHBfb2ZfdiIsInZfb2Zfc2V4cCIsImVxdWFsX21fdCIsIm1fdF9zZXhwX2dyYW1tYXIiLCJtX3Rfb2Zfc2V4cCIsInNleHBfb2ZfbV90Iiwib2ZfYWxpc3Rfb3B0aW9uIiwiYWxpc3QiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9tX3QiLCJLZXkiLCJxdWlja2NoZWNrX2dlbmVyYXRvcl9kYXRhIiwic2l6ZV8wMDQiLCJyYW5kb21fMDA1IiwicXVpY2tjaGVja19vYnNlcnZlcl9tX3QiLCJxdWlja2NoZWNrX29ic2VydmVyX2RhdGEiLCJ4XzAwNiIsInF1aWNrY2hlY2tfc2hyaW5rZXJfbV90IiwicXVpY2tjaGVja19zaHJpbmtlcl9kYXRhIiwiaGFzaGFibGUkMCIsIm9mX2xpc3QkMCIsImVycm9yX3NvdXJjZV8wMzEiLCJzaXplX29mX2siLCJzaXplX29mX3YiLCJhcmdzJDAiLCJzaXplX2FyZ3MkMCIsImFyZ3MkMSIsInNpemVfYXJncyQxIiwid3JpdGVfayIsIndyaXRlX3YiLCJiaW5fd3JpdGVyX2siLCJiaW5fd3JpdGVyX3YiLCJvZl9rIiwib2ZfdiIsImJpbl9yZWFkZXJfayIsImJpbl9yZWFkZXJfdiIsImJpbl9rIiwiYmluX3YiLCJjbXBfayIsImNtcF92IiwidF8wMDQiLCJ0XzAwMyIsInJpZ2h0XzAwOCIsImxlZnRfMDA3IiwicmlnaHRfMDEyIiwibGVmdF8wMTEiLCJ0XzAxNCIsInRfMDEzIiwidF8wMTYiLCJ0XzAxNSIsInJpZ2h0XzAxMCIsImxlZnRfMDA5Iiwib2Zfa18wMTciLCJvZl92XzAxOCIsInNleHBfMDQ1IiwiYXJnMV8wNDIiLCJhcmcwXzA0MSIsInJlczBfMDQzIiwiYXRvbV8wMjEiLCJzZXhwX2FyZ3NfMDI0IiwiYXRvbV8wMjEkMCIsImFyZzBfMDMyIiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczFfMDI5IiwicmVzMF8wMzMiLCJhcmcwXzAzNSIsInJlczBfMDM2IiwiYXJnMF8wMzgiLCJyZXMxXzA0NCIsIm9mX2tfMDQ2Iiwib2Zfdl8wNDciLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJ2XzA0OCIsInJlczFfMDU4Iiwidl8wNTAiLCJhcmcxXzA1MiIsImFyZzBfMDUxIiwicmVzMF8wNTMiLCJyZXMxXzA1NCIsInZfMDQ5IiwiZGlmZiIsImskMCIsImRpZmYkMCIsInYkMCIsIm1hcF9kYXRhIiwibGVmdCIsInJpZ2h0IiwiZ2VuX3RyZWUiLCJjb21wYXJhdG9yIiwia19nZW4iLCJ2X2dlbiIsIm9ic190cmVlIiwia19vYnMiLCJ2X29icyIsInNocl90cmVlIiwia19zaHIiLCJ2X3NociIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDAiLCJoYXNoX2ZvbGRfZGlyZWN0Iiwib2ZfaGFzaHRibF9leG4iLCJoYXNodGJsIiwidHJlZV9vZl9oYXNodGJsX2V4biIsImtleV9zZXQiLCJrZXlfc2V0X29mX3RyZWUiLCJvZl9rZXlfc2V0IiwidHJlZV9vZl9rZXlfc2V0IiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSIsInRvX3RyZWUkMCIsInJhbmsiLCJudGhfZXhuIiwibnRoIiwiY2xvc2VzdF9rZXkiLCJyYW5nZV90b19hbGlzdCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlIiwic3VicmFuZ2UiLCJzcGxpdCIsIm1heF9lbHRfZXhuIiwibWluX2VsdF9leG4iLCJmb2xkX3N5bW1ldHJpY19kaWZmIiwic3ltbWV0cmljX2RpZmYiLCJtZXJnZV9za2V3ZWQiLCJrZXlzJDAiLCJjb21wYXJlX2RpcmVjdCIsImNvbWJpbmVfZXJyb3JzIiwiZm9sZDIiLCJpdGVyMiIsIml0ZXJpX3VudGlsIiwiaW52YXJpYW50cyIsInZhbGlkYXRlaSIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMCIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMCIsImtleV9zZXQkMCIsImtleV9zZXQkMSIsImNvbXBhcmF0b3JfcyIsImludmFyaWFudHMkMCIsImVtcHR5JDAiLCJvZl9hbGlzdF9mb2xkJDAiLCJvZl9hbGlzdF9yZWR1Y2UkMCIsIm9mX2l0ZXJpJDAiLCJvZl9pdGVyaV9leG4kMCIsIm9mX3NvcnRlZF9hcnJheSQwIiwib2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCQwIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDAiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDAiLCJvZl9zZXF1ZW5jZSQwIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMCIsIm9mX3NlcXVlbmNlX2V4biQwIiwib2Zfc2VxdWVuY2VfbXVsdGkkMCIsIm9mX3NlcXVlbmNlX2ZvbGQkMCIsIm9mX3NlcXVlbmNlX3JlZHVjZSQwIiwiaXNfZW1wdHkkMCIsImxlbmd0aCQwIiwiYWRkJDAiLCJhZGRfZXhuJDAiLCJhZGRfbXVsdGkkMCIsInJlbW92ZV9tdWx0aSQwIiwiZmluZF9tdWx0aSQwIiwiY2hhbmdlJDAiLCJ1cGRhdGUkMCIsImZpbmQkMCIsImZpbmRfZXhuJDAiLCJyZW1vdmUkMCIsIm1lbSQwIiwiaXRlcl9rZXlzJDAiLCJpdGVyaSQwIiwiaXRlcmlfdW50aWwkMCIsIml0ZXIyJDAiLCJtYXBpJDAiLCJtYXBfa2V5cyQwIiwibWFwX2tleXNfZXhuJDAiLCJmb2xkX3VudGlsJDAiLCJmb2xkX3JpZ2h0JDAiLCJmb2xkMiQwIiwiZmlsdGVyX2tleXMkMCIsImZpbHRlciQwIiwiZmlsdGVyaSQwIiwiZmlsdGVyX21hcCQwIiwiZmlsdGVyX21hcGkkMCIsInBhcnRpdGlvbl9tYXBpJDAiLCJwYXJ0aXRpb25fbWFwJDAiLCJwYXJ0aXRpb25pX3RmJDAiLCJwYXJ0aXRpb25fdGYkMCIsImNvbWJpbmVfZXJyb3JzJDAiLCJjb21wYXJlX2RpcmVjdCQwIiwia2V5cyQxIiwiZGF0YSQwIiwidG9fYWxpc3QkMCIsIm1lcmdlJDAiLCJzeW1tZXRyaWNfZGlmZiQwIiwiZm9sZF9zeW1tZXRyaWNfZGlmZiQwIiwibWluX2VsdCQwIiwibWluX2VsdF9leG4kMCIsIm1heF9lbHQkMCIsIm1heF9lbHRfZXhuJDAiLCJmb3JfYWxsaSQwIiwiZXhpc3RzaSQwIiwiY291bnQkMCIsImNvdW50aSQwIiwic3BsaXQkMCIsImFwcGVuZCQwIiwic3VicmFuZ2UkMCIsImZvbGRfcmFuZ2VfaW5jbHVzaXZlJDAiLCJyYW5nZV90b19hbGlzdCQwIiwiY2xvc2VzdF9rZXkkMCIsIm50aCQwIiwibnRoX2V4biQwIiwicmFuayQwIiwidG9fc2VxdWVuY2UkMCIsImJpbmFyeV9zZWFyY2gkMCIsImJpbmFyeV9zZWFyY2hfc2VnbWVudGVkJDAiLCJiaW5hcnlfc2VhcmNoX3N1YnJhbmdlJDAiLCJ2YWxpZGF0ZSQwIiwidmFsaWRhdGVpJDAiLCJvZl90cmVlJDAiLCJ0b190cmVlJDEiLCJmaW5kX29yX2Vycm9yIiwiY29tcGFyYXRvciQwIiwibWVyZ2Vfc2tld2VkJDAiLCJvZl9oYXNodGJsX2V4biQwIiwidHJlZSIsImFycmF5Iiwia19vZl9zZXhwIiwib2Zfa2V5X3NldCQwIiwiZ2VuX2siLCJnZW5fdiIsIm9mX3RyZWUiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIiwib2Zfc29ydGVkX2FycmF5Iiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrIiwib2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSIsIm9mX3NlcXVlbmNlX29yX2Vycm9yIiwib2Zfc2VxdWVuY2VfZXhuIiwib2Zfc2VxdWVuY2VfbXVsdGkiLCJvZl9zZXF1ZW5jZV9mb2xkIiwib2Zfc2VxdWVuY2VfcmVkdWNlIiwib2ZfYWxpc3RfZm9sZCIsIm9mX2FsaXN0X3JlZHVjZSIsIm9mX2l0ZXJpIiwib2ZfaXRlcmlfZXhuIiwidG9fdHJlZSIsImRhdGFfZXF1YWwiLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQiLCJtaW4iLCJtYXgiLCJvcmRlciIsImtleXNfZ3JlYXRlcl9vcl9lcXVhbF90byIsImtleXNfbGVzc19vcl9lcXVhbF90byIsImhvdyIsInNlZ21lbnRfb2YiLCJtYXBfa2V5cyIsIm1hcF9rZXlzX2V4biIsImluaXRfZm9yX2Jpbl9wcm90IiwiZW1wdHkkMSIsInNpbmdsZXRvbiQxIiwibWFwX2tleXMkMSIsIm1hcF9rZXlzX2V4biQxIiwib2Zfc29ydGVkX2FycmF5JDEiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDEiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMSIsIm9mX2FsaXN0JDEiLCJvZl9hbGlzdF9vcl9lcnJvciQxIiwib2ZfYWxpc3RfZXhuJDEiLCJvZl9hbGlzdF9tdWx0aSQxIiwib2ZfYWxpc3RfZm9sZCQxIiwib2ZfYWxpc3RfcmVkdWNlJDEiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDEiLCJvZl9zZXF1ZW5jZSQxIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMSIsIm9mX3NlcXVlbmNlX2V4biQxIiwib2Zfc2VxdWVuY2VfbXVsdGkkMSIsIm9mX3NlcXVlbmNlX2ZvbGQkMSIsIm9mX3NlcXVlbmNlX3JlZHVjZSQxIiwib2ZfaXRlcmkkMSIsIm9mX2l0ZXJpX2V4biQxIiwib2ZfdHJlZSQxIiwib2ZfaGFzaHRibF9leG4kMSIsInF1aWNrY2hlY2tfZ2VuZXJhdG9yJDEiLCJjbXB2IiwidDEiLCJ0MiIsInNleHBfb2ZfayIsImtfZ3JhbW1hciIsInZfZ3JhbW1hciIsImVtcHR5JDIiLCJvZl90cmVlJDIiLCJzaW5nbGV0b24kMiIsIm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQkMiIsIm9mX3NvcnRlZF9hcnJheSQyIiwib2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrJDIiLCJvZl9pbmNyZWFzaW5nX3NlcXVlbmNlJDIiLCJvZl9zZXF1ZW5jZSQyIiwib2Zfc2VxdWVuY2Vfb3JfZXJyb3IkMiIsIm9mX3NlcXVlbmNlX2V4biQyIiwib2Zfc2VxdWVuY2VfbXVsdGkkMiIsIm9mX3NlcXVlbmNlX2ZvbGQkMiIsIm9mX3NlcXVlbmNlX3JlZHVjZSQyIiwib2ZfYWxpc3QkMiIsIm9mX2FsaXN0X29yX2Vycm9yJDIiLCJvZl9hbGlzdF9leG4kMiIsIm9mX2hhc2h0YmxfZXhuJDIiLCJvZl9hbGlzdF9tdWx0aSQyIiwib2ZfYWxpc3RfZm9sZCQyIiwib2ZfYWxpc3RfcmVkdWNlJDIiLCJvZl9pdGVyaSQyIiwib2ZfaXRlcmlfZXhuJDIiLCJvZl9rZXlfc2V0JDEiLCJ0b190cmVlJDIiLCJpbnZhcmlhbnRzJDEiLCJpc19lbXB0eSQxIiwibGVuZ3RoJDEiLCJzZXQkMSIsImFkZCQxIiwiYWRkX2V4biQxIiwiYWRkX211bHRpJDEiLCJyZW1vdmVfbXVsdGkkMSIsImZpbmRfbXVsdGkkMSIsImNoYW5nZSQxIiwidXBkYXRlJDEiLCJmaW5kX2V4biQxIiwiZmluZCQxIiwicmVtb3ZlJDEiLCJtZW0kMSIsIml0ZXJfa2V5cyQxIiwiaXRlciQyIiwiaXRlcmkkMSIsIml0ZXJpX3VudGlsJDEiLCJpdGVyMiQxIiwibWFwJDIiLCJtYXBpJDEiLCJmb2xkJDEiLCJmb2xkX3VudGlsJDEiLCJmb2xkX3JpZ2h0JDEiLCJmb2xkMiQxIiwiZmlsdGVyX2tleXMkMSIsImZpbHRlciQxIiwiZmlsdGVyaSQxIiwiZmlsdGVyX21hcCQxIiwiZmlsdGVyX21hcGkkMSIsInBhcnRpdGlvbl9tYXBpJDEiLCJwYXJ0aXRpb25fbWFwJDEiLCJwYXJ0aXRpb25pX3RmJDEiLCJwYXJ0aXRpb25fdGYkMSIsImNvbWJpbmVfZXJyb3JzJDEiLCJjb21wYXJlX2RpcmVjdCQxIiwia2V5cyQyIiwiZGF0YSQxIiwidG9fYWxpc3QkMSIsInZhbGlkYXRlJDEiLCJ2YWxpZGF0ZWkkMSIsInN5bW1ldHJpY19kaWZmJDEiLCJmb2xkX3N5bW1ldHJpY19kaWZmJDEiLCJtZXJnZSQxIiwibWVyZ2Vfc2tld2VkJDEiLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2V4biQxIiwibWF4X2VsdCQxIiwibWF4X2VsdF9leG4kMSIsImZvcl9hbGwkMSIsImZvcl9hbGxpJDEiLCJleGlzdHMkMSIsImV4aXN0c2kkMSIsImNvdW50JDEiLCJjb3VudGkkMSIsInNwbGl0JDEiLCJhcHBlbmQkMSIsInN1YnJhbmdlJDEiLCJmb2xkX3JhbmdlX2luY2x1c2l2ZSQxIiwicmFuZ2VfdG9fYWxpc3QkMSIsImNsb3Nlc3Rfa2V5JDEiLCJudGgkMSIsIm50aF9leG4kMSIsInJhbmskMSIsInRvX3NlcXVlbmNlJDEiLCJiaW5hcnlfc2VhcmNoJDEiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQxIiwiYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSQxIiwia2V5X3NldCQyIiwibWFwX2tleXMkMiIsIm1hcF9rZXlzX2V4biQyIiwicXVpY2tjaGVja19nZW5lcmF0b3IkMiIsInF1aWNrY2hlY2tfb2JzZXJ2ZXIkMSIsInF1aWNrY2hlY2tfc2hyaW5rZXIkMSIsInRfc2V4cF9ncmFtbWFyJDAiLCJoYXNoX2ZvbGRfZGF0YSIsInN0YXRlIiwiYmluX3NoYXBlX21fdCIsImJpbl9zaXplX21fdCIsImJpbl93cml0ZV9tX3QiLCJiaW5fcmVhZF9tX3QiLCJiaW5fcmVhZF9tX3QkMCIsInZfZ2VuZXJhdG9yIiwidl9vYnNlcnZlciIsInZfc2hyaW5rZXIiLCJoYXNoX2ZvbGRfbV90IiwiY29tcGFyZV9tX3QiLCJ2YWxpZGF0ZSQyIiwidmFsaWRhdGVpJDIiLCJxdWlja2NoZWNrX2dlbmVyYXRvciQzIiwicXVpY2tjaGVja19vYnNlcnZlciQyIiwicXVpY2tjaGVja19zaHJpbmtlciQyIiwiZXJyb3Jfc291cmNlXzAxMCIsImVycm9yX3NvdXJjZV8wNTQiLCJzZXhwXzAxMiIsInRhZ18wMTMiLCJzZXhwX2FyZ3NfMDE0Iiwic2V4cF9hcmdzXzAxOSIsImFyZzBfMDIwIiwicmVzMF8wMjEiLCJvZl9hXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjciLCJ4JDEiLCJnZW5lcmF0b3JfMDQ0Iiwic2l6ZV8wNDkiLCJyYW5kb21fMDUwIiwic2l6ZV8wNDciLCJyYW5kb21fMDQ4Iiwic2l6ZV8wNDUiLCJyYW5kb21fMDQ2Iiwib2JzZXJ2ZXJfMDM4IiwieF8wMzkiLCJoYXNoXzA0MSIsImhhc2hfMDQxJDAiLCJoYXNoXzA0MSQxIiwiaGFzaF8wNDEkMiIsImhhc2hfMDQxJDMiLCJoYXNoXzA0MSQ0Iiwic2hyaW5rZXJfMDM1IiwieF8wMzYiLCJ4XzAzNyIsIm9mX2FfMDUxIiwic2V4cF8wNTYiLCJ0YWdfMDU3Iiwic2V4cF9hcmdzXzA1OCIsImFyZzBfMDU5IiwicmVzMF8wNjAiLCJzZXhwX2FyZ3NfMDYzIiwiYXJnMF8wNjQiLCJyZXMwXzA2NSIsIm9mX2FfMDY3IiwiYXJnMF8wNjgiLCJyZXMwXzA2OSIsImFyZzBfMDcwIiwicmVzMF8wNzEiLCJjb21wYXJlX29uZV9zaWRlZCIsInNpZGUiLCJhMSIsImEyIiwiYTIkMCIsImExJDAiLCJhMiQxIiwiYyQwIiwiYTIkMiIsImVsdF9nZW4iLCJlbHRfb2JzIiwiZWx0X3NociIsImVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3RpbyIsInRvX21hcCIsIm9mX21hcF9rZXlzIiwib2ZfaGFzaF9zZXQiLCJoc2V0Iiwib2ZfaGFzaHRibF9rZXlzIiwibWVyZ2VfdG9fc2VxdWVuY2UkMCIsInJlbW92ZV9pbmRleCQwIiwiZ3JvdXBfYnkkMCIsImNob29zZV9leG4kMCIsImNob29zZSQwIiwiZWxlbWVudHMkMCIsImFyZV9kaXNqb2ludCQwIiwiaXNfc3Vic2V0JDAiLCJpbnRlciQwIiwidW5pb24kMCIsInRvX2FycmF5JDAiLCJmaW5kX21hcCQwIiwic3VtJDAiLCJmb2xkX3Jlc3VsdCQwIiwidG9fbWFwJDAiLCJ1bmlvbiQxIiwidW5pb25fbGlzdCQwIiwiaW50ZXIkMSIsImRpZmYkMSIsInN1bSQxIiwiZmluZF9tYXAkMSIsInJlbW92ZV9pbmRleCQxIiwiaXNfc3Vic2V0JDEiLCJhcmVfZGlzam9pbnQkMSIsIm9mX2FycmF5JDAiLCJ0b19saXN0JDEiLCJ0b19hcnJheSQxIiwic3RhYmxlX2RlZHVwX2xpc3QkMCIsImZvbGRfcmVzdWx0JDEiLCJlbGVtZW50cyQxIiwiY2hvb3NlJDEiLCJjaG9vc2VfZXhuJDEiLCJncm91cF9ieSQxIiwibWVyZ2VfdG9fc2VxdWVuY2UkMSIsInN0YWJsZV9kZWR1cF9saXN0JDEiLCJvZl9hcnJheSQxIiwib2ZfbGlzdCQxIiwidW5pb25fbGlzdCQxIiwib2ZfbWFwX2tleXMkMCIsIm9mX2hhc2hfc2V0JDAiLCJvZl9oYXNodGJsX2tleXMkMCIsInRvX21hcCQxIiwib2ZfbWFwX2tleXMkMSIsIm9mX2hhc2hfc2V0JDEiLCJvZl9oYXNodGJsX2tleXMkMSIsImUiLCJ1bmlvbl9saXN0Iiwib2ZfYXJyYXkiLCJzdGFibGVfZGVkdXBfbGlzdCIsInhzIiwib2YiLCJlcXVpdiIsImdyZWF0ZXJfb3JfZXF1YWxfdG8iLCJsZXNzX29yX2VxdWFsX3RvIiwidCQwIiwiZWxlbWVudHMiLCJ1bmlvbiIsImludGVyIiwiaXNfc3Vic2V0IiwiYXJlX2Rpc2pvaW50IiwiZ3JvdXBfYnkiLCJyZW1vdmVfaW5kZXgiLCJtZXJnZV90b19zZXF1ZW5jZSIsInVuaW9uX2xpc3QkMiIsIm9mX2xpc3QkMiIsIm9mX2FycmF5JDIiLCJzdGFibGVfZGVkdXBfbGlzdCQyIiwiZmlsdGVyX21hcCQyIiwib2ZfaGFzaF9zZXQkMiIsIm9mX2hhc2h0Ymxfa2V5cyQyIiwib2ZfbWFwX2tleXMkMiIsImVsdF9ncmFtbWFyIiwiZW1wdHkkMyIsInNpbmdsZXRvbiQzIiwiaW52YXJpYW50cyQyIiwibGVuZ3RoJDIiLCJpc19lbXB0eSQyIiwiZWxlbWVudHMkMiIsIm1pbl9lbHQkMiIsIm1pbl9lbHRfZXhuJDIiLCJtYXhfZWx0JDIiLCJtYXhfZWx0X2V4biQyIiwiY2hvb3NlJDIiLCJjaG9vc2VfZXhuJDIiLCJ0b19saXN0JDIiLCJ0b19hcnJheSQyIiwiaXRlciQzIiwiaXRlcjIkMiIsImV4aXN0cyQyIiwiZm9yX2FsbCQyIiwiY291bnQkMiIsInN1bSQyIiwiZmluZCQyIiwiZmluZF9leG4kMiIsImZpbmRfbWFwJDIiLCJmb2xkJDIiLCJmb2xkX3VudGlsJDIiLCJmb2xkX3JpZ2h0JDIiLCJmb2xkX3Jlc3VsdCQyIiwibWFwJDMiLCJmaWx0ZXIkMiIsImZpbHRlcl9tYXAkMyIsInBhcnRpdGlvbl90ZiQyIiwibWVtJDIiLCJhZGQkMiIsInJlbW92ZSQyIiwidW5pb24kMiIsImludGVyJDIiLCJkaWZmJDIiLCJzeW1tZXRyaWNfZGlmZiQyIiwiY29tcGFyZV9kaXJlY3QkMiIsImVxdWFsJDIiLCJpc19zdWJzZXQkMiIsImFyZV9kaXNqb2ludCQyIiwib2ZfbGlzdCQzIiwib2Zfc2VxdWVuY2UkMyIsIm9mX2hhc2hfc2V0JDMiLCJvZl9oYXNodGJsX2tleXMkMyIsIm9mX2FycmF5JDMiLCJvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkJDMiLCJvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2skMyIsIm9mX3NvcnRlZF9hcnJheSQzIiwidW5pb25fbGlzdCQzIiwic3RhYmxlX2RlZHVwX2xpc3QkMyIsImdyb3VwX2J5JDIiLCJzcGxpdCQyIiwibnRoJDIiLCJyZW1vdmVfaW5kZXgkMiIsIm9mX3RyZWUkMyIsInRvX3NlcXVlbmNlJDIiLCJiaW5hcnlfc2VhcmNoJDIiLCJiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCQyIiwibWVyZ2VfdG9fc2VxdWVuY2UkMiIsIm9mX21hcF9rZXlzJDMiLCJ0b19tYXAkMiIsImVsdF9vZl9zZXhwIiwiZ3JhbW1hciIsIkVsdCIsImhhc2hfbV90IiwidmFsaWRhdGVfYm91bmQiLCJ2YWxpZGF0ZV9sYm91bmQiLCJ2YWxpZGF0ZV91Ym91bmQiLCJleGNsX3plcm8iLCJpbmNsX3plcm8iLCJ2YWxpZGF0ZV9wb3NpdGl2ZSIsInZhbGlkYXRlX25vbl9uZWdhdGl2ZSIsInZhbGlkYXRlX25lZ2F0aXZlIiwidmFsaWRhdGVfbm9uX3Bvc2l0aXZlIiwic3RhYmxlX2RlZHVwIiwic3RhYmxlX2RlZHVwX3N0YWdlZCIsInppcF93aXRoX3JlbWFpbmRlciIsInhzJDEiLCJ5cyQxIiwieXMiLCJ5cyQwIiwieHMkMCIsImFjYyQwIiwiYXJnMF8wMDEiLCJleG5faWZfZHVwIiwidG9fc2V4cCIsImNvbnRleHQiLCJkdXAiLCJhXzAxMCIsImJfMDExIiwibm9uZSIsInNvbWUiLCJhXzAwNyIsImJfMDA4IiwiYV8wMDkiLCJiXzAxMCIsInVuc2FmZV92YWx1ZSIsImRlcHRoIiwidCQxIiwiZGVwdGgkMCIsInJlcHJlc2VudGF0aXZlIiwiaW5uZXIkMSIsImlubmVyX25vZGUkMSIsInIkMCIsImlubmVyJDAiLCJpbm5lcl9ub2RlIiwiaW5uZXIiLCJkZXNjZW5kYW50cyIsImlubmVyX25vZGUkMCIsImRlc2NlbmRhbnRzJDAiLCJyb290Iiwic2FtZV9jbGFzcyIsInIxIiwidDEkMCIsInIyIiwidDIkMCIsIm4xIiwibjIiLCJpc19jb21wcmVzc2VkIiwicGh5c19lcXVhbCIsInVuaW9uX2ZpbmRfZ2V0X2NoZWNrX25vX3BlbmRpbiIsImNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyIsImluY3JfbGVuZ3RoIiwiaW5jcl9wZW5kaW5nX2l0ZXJzIiwiZGVjcl9wZW5kaW5nX2l0ZXJzIiwid2l0aF9pdGVyYXRpb25fMiIsIndpdGhfaXRlcmF0aW9uXzMiLCJ3aXRoX2l0ZXJhdGlvbl80IiwiZCIsInByZXYiLCJjcmVhdGVfYXV4IiwiaGVhZGVyIiwiaXNfc2luZ2xldG9uIiwidW5zYWZlX3NwbGl0X29yX3NwbGljZSIsInVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYWZ0ZXIiLCJ1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSIsImNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZSIsInNwbGl0X29yX3NwbGljZV9iZWZvcmUiLCJpbnNlcnRfYmVmb3JlIiwibm9kZSIsImluc2VydF9hZnRlciIsImR1bW15X2hlYWRlciIsInVubGluayIsImhlYWQiLCJuZXh0X2VsdCIsInByZXZfZWx0IiwiZmlyc3QiLCJhcnIiLCJpJDAiLCJuZXdfZmlyc3QiLCJuZXh0JDAiLCJmb2xkX2VsdCIsImZvbGRpX2VsdCIsImZvbGRfZWx0XzEiLCJmb2xkaV9lbHRfMSIsIml0ZXJfZWx0IiwiaXRlcmlfZWx0IiwiZmluZF9lbHQiLCJmaW5kaV9lbHQiLCJ1bmNoZWNrZWRfaXRlciIsImZpcnN0JDAiLCJmb2xkX3JpZ2h0X2VsdCIsInRsIiwiY29tcGFyZV9lbHQiLCJlbHQxIiwiZWx0MiIsImVsdDEkMCIsImVsdDIkMCIsImNvbXBhcmVfcmVzdWx0IiwibmV4dDEiLCJuZXh0MiIsInRyYW5zZmVyIiwic3JjIiwiZHN0Iiwic3JjX2hlYWQiLCJkc3RfaGVhZCIsInJlbW92ZV9saXN0IiwidG9fcmVtb3ZlIiwiZWx0cyIsImZpcnN0X2VsdCIsImxhc3RfZWx0IiwiaXNfZmlyc3QiLCJpc19sYXN0IiwibWVtX2VsdCIsInByZXYkMCIsImluc2VydF9hZnRlciQwIiwiaW5zZXJ0X2JlZm9yZSQwIiwibmV3X2VsdCIsImluc2VydF9lbXB0eSIsImluc2VydF9sYXN0IiwiaW5zZXJ0X2ZpcnN0IiwicmVtb3ZlX2xhc3QiLCJyZW1vdmVfZmlyc3QiLCJzZWNvbmQiLCJuZXdfdCIsInZhbHVlJDAiLCJtb3ZlX2JlZm9yZSIsImFuY2hvciIsImFmdGVyX2VsdCIsIm1vdmVfdG9fZnJvbnQiLCJtb3ZlX2FmdGVyIiwibW92ZV90b19iYWNrIiwib2ZfZmxvYXRfc3R5bGUiLCJvZl9pbnRfc3R5bGUiLCJzdWJzdF9mb3VuZCIsInNlYXJjaF9waHlzaWNhbCIsImlzX3VuaXQiLCJ1bml0IiwidG9fYnVmZmVyX2dlbiIsInRvX2J1ZmZlciIsInRvX2J1ZmZlcl9tYWNoIiwidG9fYnVmZmVyX2h1bSIsInRvX3N0cmluZ19tYWNoIiwidG9fc3RyaW5nX2h1bSIsIm9mX2JpZ3N0cmluZ19jb252X2V4biIsIm9mX2JpZ3N0cmluZ19jb252Iiwib2Zfc3RyaW5nX2NvbnZfZXhuIiwib2Zfc3RyaW5nX21hbnlfY29udl9leG4iLCJvZl9zdHJpbmdfY29udiIsIm9mX3N0cmluZ19tYW55IiwicHAiLCJwcF9tYWNoIiwicHBfaHVtX2luZGVudCIsInBwX2h1bSIsInNhdmVfc2V4cHMiLCJzYXZlX3NleHBzX21hY2giLCJzYXZlX3NleHBzX2h1bSIsInNhdmUiLCJzYXZlX21hY2giLCJzYXZlX2h1bSIsIm91dHB1dF9tYWNoIiwib3V0cHV0X2h1bV9pbmRlbnQiLCJvdXRwdXRfaHVtIiwibG9hZF9zZXhwc19jb252X2V4biIsImxvYWRfc2V4cHNfY29udiIsImxvYWRfc2V4cF9jb252X2V4biIsImxvYWRfc2V4cF9jb252IiwibG9hZF9yZXZfc2V4cHMiLCJsb2FkX3NleHBzIiwibG9hZF9zZXhwIiwiaW5wdXRfcmV2X3NleHBzIiwiaW5wdXRfc2V4cHMiLCJpbnB1dF9zZXhwIiwicGFyc2VfYmlnc3RyaW5nIiwicGFyc2UiLCJzY2FuX3NleHBzX2NvbnYiLCJzY2FuX2ZvbGRfc2V4cHMiLCJzY2FuX2l0ZXJfc2V4cHMiLCJzY2FuX3NleHBfb3B0Iiwic2Nhbl9yZXZfc2V4cHMiLCJzY2FuX3NleHBzIiwic2Nhbl9zZXhwIiwiZGVmYXVsdF9pbmRlbnQiLCJ0XzAxOCIsInRfMDE3IiwiZTEiLCJlMCIsInNleHAkMCIsInZfdmFsdWUiLCJ2X3RleHQiLCJvZl90ZXh0IiwidmFsdWVfb2Zfc2V4cCIsInRleHQiLCJmaWxlbmFtZSIsImFubm90YXRlZCIsInRfc2V4cF9ncmFtbWFyJDEiLCJvZl92YWx1ZSIsImJpbl9zaGFwZV9ub19yYWlzZSIsImJpbl9zaXplX25vX3JhaXNlIiwiYmluX3dyaXRlX25vX3JhaXNlIiwiYmluX3dyaXRlcl9ub19yYWlzZSIsImJpbl9yZWFkX25vX3JhaXNlIiwiYmluX3JlYWRfbm9fcmFpc2UkMCIsImJpbl9yZWFkZXJfbm9fcmFpc2UiLCJiaW5fbm9fcmFpc2UiLCJub19yYWlzZV9vZl9zZXhwIiwib2ZfYV8wMTkiLCJzZXhwX29mX25vX3JhaXNlIiwib2Zfc2V4cF9hbGxvd19leHRyYV9maWVsZHNfcmVjIiwib2Zfc2V4cCIsInNleHBfb2ZfZGF0YSIsImFyZzFfMDAyIiwicmVzMF8wMDMiLCJyZXMxXzAwNCIsImt2IiwicmVhZCIsImVuc3VyZV9jYW5fbW9kaWZ5IiwibG9va3VwIiwibG9va3VwX2V4biIsImVucXVldWUiLCJiYWNrX29yX2Zyb250IiwiY29udGVudHMiLCJlbnF1ZXVlX2JhY2siLCJlbnF1ZXVlX2Zyb250IiwiZW5xdWV1ZV9leG4iLCJlbnF1ZXVlX2JhY2tfZXhuIiwiZW5xdWV1ZV9mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFja19leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fYmFjayIsImxvb2t1cF9hbmRfbW92ZV90b19mcm9udF9leG4iLCJsb29rdXBfYW5kX21vdmVfdG9fZnJvbnQiLCJkZXF1ZXVlX3dpdGhfa2V5IiwibWF5YmVfa3YiLCJkZXF1ZXVlX3dpdGhfa2V5X2V4biIsImRlcXVldWVfYmFja193aXRoX2tleSIsImRlcXVldWVfYmFja193aXRoX2tleV9leG4iLCJkZXF1ZXVlX2Zyb250X3dpdGhfa2V5IiwiZGVxdWV1ZV9mcm9udF93aXRoX2tleV9leG4iLCJkZXF1ZXVlIiwiZGVxdWV1ZV9iYWNrIiwiZGVxdWV1ZV9mcm9udCIsImxhc3Rfd2l0aF9rZXkiLCJmaXJzdF93aXRoX2tleSIsImRlcXVldWVfZXhuIiwiZGVxdWV1ZV9iYWNrX2V4biIsImRlcXVldWVfZnJvbnRfZXhuIiwiYWMiLCJkZXF1ZXVlX2FsbCIsInJlbW92ZV9leG4iLCJsb29rdXBfYW5kX3JlbW92ZSIsInJlcGxhY2UiLCJyZXBsYWNlX2V4biIsImRyb3AiLCJkcm9wX2JhY2siLCJkcm9wX2Zyb250IiwiY29waWVkIiwib2ZfZGF0YV8wMDgiLCJkZWZhdWx0X21heF9saW5lcyIsImJ5dGVzX3Blcl9saW5lIiwiaGV4X29mX3BvcyIsImhleF9vZl9jaGFyIiwidW50aWwiLCJvZmZzZXQiLCJoZXhfb2ZfbGluZSIsInByaW50YWJsZV9zdHJpbmciLCJjaGFyJDAiLCJsaW5lIiwibGluZV9pbmRleCIsIm1heF9saW5lcyIsImxlbiQwIiwibWF4X2xpbmVzJDAiLCJtYXhfbGluZXMkMSIsIm1heF9saW5lcyQyIiwidW5hYnJpZGdlZF9saW5lcyIsInNraXBfZnJvbSIsInNraXBfdG8iLCJ4XzAwMSIsInByaW50YWJsZSIsInhfMDAyIiwiZXNjYXBlZCIsImNvbnRhaW5zIiwidXBwZXJjYXNlIiwibG93ZXJjYXNlIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsImluZGV4IiwiaW5kZXhfZXhuIiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fZXhuIiwicmluZGV4IiwicmluZGV4X2V4biIsInJpbmRleF9mcm9tIiwicmluZGV4X2Zyb21fZXhuIiwic3Vic3RyX2luZGV4Iiwic3Vic3RyX2luZGV4X2V4biIsInN1YnN0cl9pbmRleF9hbGwiLCJzdWJzdHJfcmVwbGFjZV9maXJzdCIsInN1YnN0cl9yZXBsYWNlX2FsbCIsImlzX3N1YnN0cmluZyIsImlzX3N1YnN0cmluZ19hdCIsInRvX2xpc3RfcmV2IiwiaXNfc3VmZml4IiwiaXNfcHJlZml4IiwibHNwbGl0Ml9leG4iLCJyc3BsaXQyX2V4biIsImxzcGxpdDIiLCJyc3BsaXQyIiwic3BsaXRfb25fY2hhcnMiLCJzcGxpdF9saW5lcyIsImxmaW5kaSIsInJmaW5kaSIsImxzdHJpcCIsInJzdHJpcCIsInN0cmlwIiwidHIiLCJ0cl9tdWx0aSIsImNob3Bfc3VmZml4X2V4biIsImNob3BfcHJlZml4X2V4biIsImNob3Bfc3VmZml4IiwiY2hvcF9wcmVmaXgiLCJjaG9wX3N1ZmZpeF9pZl9leGlzdHMiLCJjaG9wX3ByZWZpeF9pZl9leGlzdHMiLCJzdWZmaXgiLCJwcmVmaXgiLCJkcm9wX3N1ZmZpeCIsImRyb3BfcHJlZml4IiwiY29tbW9uX3N1ZmZpeCIsImNvbW1vbl9wcmVmaXgiLCJjb21tb25fc3VmZml4X2xlbmd0aCIsImNvbW1vbl9wcmVmaXhfbGVuZ3RoIiwiY29tbW9uX3N1ZmZpeDIiLCJjb21tb25fcHJlZml4MiIsImNvbW1vbl9zdWZmaXgyX2xlbmd0aCIsImNvbW1vbl9wcmVmaXgyX2xlbmd0aCIsImNvbmNhdF9hcnJheSIsIm9mX2NoYXIiLCJvZl9jaGFyX2xpc3QiLCJpc19zdWZmaXgkMCIsImlzX3ByZWZpeCQwIiwiaXNfc3Vic3RyaW5nJDAiLCJpc19zdWJzdHJpbmdfYXQkMCIsInN1YnN0cl9pbmRleCQwIiwic3Vic3RyX2luZGV4X2V4biQwIiwic3Vic3RyX2luZGV4X2FsbCQwIiwic3Vic3RyX3JlcGxhY2VfZmlyc3QkMCIsInN1YnN0cl9yZXBsYWNlX2FsbCQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwic3ltYm9sJDExIiwibWluJDAiLCJtYXgkMCIsImFzY2VuZGluZyQwIiwiZGVzY2VuZGluZyQwIiwiYmV0d2VlbiQwIiwiY2xhbXBfZXhuJDAiLCJjbGFtcCQwIiwiY29tcGFyYXRvciQyIiwiZ2VuX25vbmVtcHR5IiwiZ2VuX25vbmVtcHR5JDAiLCJjaGFycyIsInRha2Vfd2hpbGUiLCJydGFrZV93aGlsZSIsInRvX2ludCIsImNsYW1wIiwiY2xhbXBfZXhuIiwiYmV0d2VlbiIsImRlc2NlbmRpbmciLCJhc2NlbmRpbmciLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiYWxsIiwidGFibGUiLCJzdHJpbmdzIiwiYm9vbCIsInJhaXNlX2ludmFsaWQiLCJpbnB1dCIsImV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUiLCJvZl9zdHJpbmdfaHVtIiwiY2hhcl9nZW4iLCJtYXhfdmFsdWUiLCJtaW5fdmFsdWUiLCJnZXRfaGV4X2RpZ2l0X2V4biIsImdldF9oZXhfZGlnaXQiLCJpc19oZXhfZGlnaXRfdXBwZXIiLCJpc19oZXhfZGlnaXRfbG93ZXIiLCJpc19oZXhfZGlnaXQiLCJnZXRfZGlnaXRfZXhuIiwiZ2V0X2RpZ2l0IiwiaXNfd2hpdGVzcGFjZSIsImlzX3ByaW50IiwiaXNfYWxwaGFudW0iLCJpc19hbHBoYSIsImlzX3VwcGVyY2FzZSIsImlzX2xvd2VyY2FzZSIsImlzX2RpZ2l0IiwidW5zYWZlX29mX2ludCIsIm9mX2ludF9leG4iLCJvZl9pbnQiLCJnZW5fZGlnaXQiLCJnZW5fbG93ZXJjYXNlIiwiZ2VuX3VwcGVyY2FzZSIsImdlbl9hbHBoYSIsImdlbl9hbHBoYW51bSIsImdlbl9wcmludCIsImdlbl93aGl0ZXNwYWNlIiwiZ2VuX3VuaWZvcm1faW5jbHVzaXZlIiwiZXJyb3Jfc291cmNlXzAwMyIsInRhZzIiLCJ2YWxpZGF0ZV9vcmRpbmFyeSIsInJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSIsInJvYnVzdGx5X2NvbXBhcmUiLCJzeW1ib2wkMTIiLCJzeW1ib2wkMTMiLCJzeW1ib2wkMTQiLCJzeW1ib2wkMTUiLCJzeW1ib2wkMTYiLCJzeW1ib2wkMTciLCJzeW1ib2wkMzEiLCJzeW1ib2wkMzIiLCJzeW1ib2wkMzMiLCJzeW1ib2wkMzQiLCJzeW1ib2wkMzUiLCJzeW1ib2wkMzYiLCJyb2J1c3RseV9jb21wYXJlJDAiLCJyb2J1c3Rfc2lnbiIsInRvX3N0cmluZ18xMiIsImdlbl91bmlmb3JtX2V4Y2wiLCJnZW5faW5jbCIsImdlbl93aXRob3V0X25hbiIsImdlbl9maW5pdGUiLCJnZW5fcG9zaXRpdmUiLCJnZW5fbmVnYXRpdmUiLCJnZW5femVybyIsImdlbl9uYW4iLCJnZW5fc3Vibm9ybWFsIiwiZ2VuX25vcm1hbCIsImdlbl9pbmZpbml0ZSIsIm9mX2Zsb2F0IiwidG9fZmxvYXQiLCJ0b19pbnRfZXhuIiwiaXNfcG9zaXRpdmUiLCJpc19ub25fbmVnYXRpdmUiLCJpc19uZWdhdGl2ZSIsImlzX25vbl9wb3NpdGl2ZSIsIm9uZSIsIm1pbnVzX29uZSIsInJlbSIsInJvdW5kIiwicm91bmRfdG93YXJkc196ZXJvIiwicm91bmRfZG93biIsInJvdW5kX3VwIiwicm91bmRfbmVhcmVzdCIsInN1Y2MiLCJwcmVkIiwicG93IiwiYml0X2FuZCIsImJpdF9vciIsImJpdF94b3IiLCJiaXRfbm90IiwicG9wY291bnQiLCJzaGlmdF9sZWZ0Iiwic2hpZnRfcmlnaHQiLCJvZl9pbnQzMl9leG4iLCJ0b19pbnQzMl9leG4iLCJvZl9pbnQ2NF9leG4iLCJ0b19pbnQ2NCIsIm9mX25hdGl2ZWludF9leG4iLCJ0b19uYXRpdmVpbnRfZXhuIiwib2ZfZmxvYXRfdW5jaGVja2VkIiwibnVtX2JpdHMiLCJzaGlmdF9yaWdodF9sb2dpY2FsIiwiY2VpbF9wb3cyIiwiZmxvb3JfcG93MiIsImNlaWxfbG9nMiIsImZsb29yX2xvZzIiLCJpc19wb3cyIiwiY2x6IiwiY3R6IiwibG5vdCIsImFicyIsInplcm8iLCJtYXhfdmFsdWVfMzBfYml0cyIsIm9mX2ludDMyIiwidG9faW50MzIiLCJvZl9pbnQ2NCIsIm9mX25hdGl2ZWludCIsInRvX25hdGl2ZWludCIsInNpZ24iLCJ0b19zdHJpbmdfaHVtJDAiLCJ0eXBlbmFtZV9vZl90JDAiLCJuYW1lX29mX3QkMCIsInR5cGVyZXBfb2ZfdCQwIiwiZ2VuX3VuaWZvcm1faW5jbCIsImdlbl9sb2dfaW5jbCIsImdlbl9sb2dfdW5pZm9ybV9pbmNsIiwiYml0c19vZl9mbG9hdCIsImZsb2F0X29mX2JpdHMiLCJic3dhcDE2IiwiYnN3YXAzMiIsImJzd2FwNDgiLCJiaW5hYmxlIiwic3ltYm9sX2JpbmQiLCJzeW1ib2xfbWFwIiwiYmluZCIsImpvaW4iLCJpZ25vcmVfbSIsImFsbF91bml0IiwiZm9yY2VfdmFsIiwiZnJvbV9mdW4iLCJmcm9tX3ZhbCIsImlzX3ZhbCIsInVucmVhY2hhYmxlX2NvZGUiLCJ0cF9sb2MiLCJzZXhwX29mX25ldmVyX3JldHVybnMiLCJuZXZlcl9yZXR1cm5zIiwib2ZfYV8wMDQiLCJvZl9wZXJtc18wMDUiLCJvZl9hXzAwOCIsIm9mX3Blcm1zXzAwOSIsInJlYWRfb25seSIsIm9mX3JlZiIsInRvX3JlZiIsIm5hbWUkNiIsIm5hbWUkNyIsIm5hbWUkOCIsIm5hbWUkOSIsIm5hbWUkMTAiLCJuYW1lJDExIiwibmFtZSQxMiIsIm5hbWUkMTMiLCJuYW1lJDE0IiwiZnN0MyIsInNuZDMiLCJ0cmQzIiwieiIsInV3IiwicGh5c19zYW1lIiwiYnByaW50ZiIsImNvbnN0JDAiLCJlcnJvciIsImVycm9yX3MiLCJmb3JjZSIsImlkZW50IiwiaW52YWxpZF9hcmdmIiwiaWZwcmludGYiLCJpc19ub25lIiwiaXNfc29tZSIsImtzcHJpbnRmIiwib2tfZXhuIiwicHJpbnRfcyIsImVwcmludF9zIiwicHJvdGVjdCIsInByb3RlY3R4IiwicmFpc2VfcyIsInNwcmludGYiLCJzdGFnZSIsInVuc3RhZ2UiLCJ3aXRoX3JldHVybl9vcHRpb24iLCJiaW5fc2hhcGVfYXJyYXkiLCJiaW5fc2l6ZV9hcnJheSIsImJpbl93cml0ZV9hcnJheSIsImJpbl93cml0ZXJfYXJyYXkiLCJiaW5fcmVhZF9hcnJheSIsImJpbl9yZWFkX2FycmF5JDAiLCJiaW5fcmVhZGVyX2FycmF5IiwiYmluX2FycmF5IiwiY29tcGFyZV9hcnJheSIsImVxdWFsX2FycmF5IiwiYXJyYXlfb2Zfc2V4cCIsInNleHBfb2ZfYXJyYXkiLCJhcnJheV9zZXhwX2dyYW1tYXIiLCJhX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfYXJyYXkiLCJiaW5fc2hhcGVfYm9vbCIsImJpbl9zaXplX2Jvb2wiLCJiaW5fd3JpdGVfYm9vbCIsImJpbl93cml0ZXJfYm9vbCIsImJpbl9yZWFkX2Jvb2wiLCJiaW5fcmVhZF9ib29sJDAiLCJiaW5fcmVhZGVyX2Jvb2wiLCJiaW5fYm9vbCIsImNvbXBhcmVfYm9vbCIsImhhc2hfZm9sZF9ib29sIiwiaGFzaF9ib29sIiwiZXF1YWxfYm9vbCIsImJvb2xfb2Zfc2V4cCIsInNleHBfb2ZfYm9vbCIsImJvb2xfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9ib29sIiwiYmluX3NoYXBlX2NoYXIiLCJiaW5fc2l6ZV9jaGFyIiwiYmluX3dyaXRlX2NoYXIiLCJiaW5fd3JpdGVyX2NoYXIiLCJiaW5fcmVhZF9jaGFyIiwiYmluX3JlYWRfY2hhciQwIiwiYmluX3JlYWRlcl9jaGFyIiwiYmluX2NoYXIiLCJjb21wYXJlX2NoYXIiLCJoYXNoX2ZvbGRfY2hhciIsImhhc2hfY2hhciIsImVxdWFsX2NoYXIiLCJjaGFyX29mX3NleHAiLCJzZXhwX29mX2NoYXIiLCJjaGFyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfY2hhciIsImJpbl9zaGFwZV9mbG9hdCIsImJpbl9zaXplX2Zsb2F0IiwiYmluX3dyaXRlX2Zsb2F0IiwiYmluX3dyaXRlcl9mbG9hdCIsImJpbl9yZWFkX2Zsb2F0IiwiYmluX3JlYWRfZmxvYXQkMCIsImJpbl9yZWFkZXJfZmxvYXQiLCJiaW5fZmxvYXQiLCJjb21wYXJlX2Zsb2F0IiwiaGFzaF9mb2xkX2Zsb2F0IiwiaGFzaF9mbG9hdCIsImVxdWFsX2Zsb2F0IiwiZmxvYXRfb2Zfc2V4cCIsInNleHBfb2ZfZmxvYXQiLCJmbG9hdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2Zsb2F0IiwiYmluX3NoYXBlX2ludCIsImJpbl9zaXplX2ludCIsImJpbl93cml0ZV9pbnQiLCJiaW5fd3JpdGVyX2ludCIsImJpbl9yZWFkX2ludCIsImJpbl9yZWFkX2ludCQwIiwiYmluX3JlYWRlcl9pbnQiLCJiaW5faW50IiwiY29tcGFyZV9pbnQiLCJoYXNoX2ZvbGRfaW50IiwiaGFzaF9pbnQiLCJlcXVhbF9pbnQiLCJpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaW50IiwiaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50IiwiYmluX3NoYXBlX2ludDMyIiwiYmluX3NpemVfaW50MzIiLCJiaW5fd3JpdGVfaW50MzIiLCJiaW5fd3JpdGVyX2ludDMyIiwiYmluX3JlYWRfaW50MzIiLCJiaW5fcmVhZF9pbnQzMiQwIiwiYmluX3JlYWRlcl9pbnQzMiIsImJpbl9pbnQzMiIsImNvbXBhcmVfaW50MzIiLCJoYXNoX2ZvbGRfaW50MzIiLCJoYXNoX2ludDMyIiwiZXF1YWxfaW50MzIiLCJpbnQzMl9vZl9zZXhwIiwic2V4cF9vZl9pbnQzMiIsImludDMyX3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfaW50MzIiLCJiaW5fc2hhcGVfaW50NjQiLCJiaW5fc2l6ZV9pbnQ2NCIsImJpbl93cml0ZV9pbnQ2NCIsImJpbl93cml0ZXJfaW50NjQiLCJiaW5fcmVhZF9pbnQ2NCIsImJpbl9yZWFkX2ludDY0JDAiLCJiaW5fcmVhZGVyX2ludDY0IiwiYmluX2ludDY0IiwiY29tcGFyZV9pbnQ2NCIsImhhc2hfZm9sZF9pbnQ2NCIsImhhc2hfaW50NjQiLCJlcXVhbF9pbnQ2NCIsImludDY0X29mX3NleHAiLCJzZXhwX29mX2ludDY0IiwiaW50NjRfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9pbnQ2NCIsImJpbl9zaGFwZV9sYXp5X3QiLCJiaW5fc2l6ZV9sYXp5X3QiLCJiaW5fd3JpdGVfbGF6eV90IiwiYmluX3dyaXRlcl9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QiLCJiaW5fcmVhZF9sYXp5X3QkMCIsImJpbl9yZWFkZXJfbGF6eV90IiwiYmluX2xhenlfdCIsImNvbXBhcmVfbGF6eV90IiwiYV8wNDYiLCJiXzA0NyIsImFfMDQ4IiwiYl8wNDkiLCJoYXNoX2ZvbGRfbGF6eV90IiwibGF6eV90X29mX3NleHAiLCJzZXhwX29mX2xhenlfdCIsImxhenlfdF9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2xhenlfdCIsImJpbl9zaGFwZV9saXN0IiwiYmluX3NpemVfbGlzdCIsImJpbl93cml0ZV9saXN0IiwiYmluX3dyaXRlcl9saXN0IiwiYmluX3JlYWRfbGlzdCIsImJpbl9yZWFkX2xpc3QkMCIsImJpbl9yZWFkZXJfbGlzdCIsImJpbl9saXN0IiwiY29tcGFyZV9saXN0IiwiYV8wNTUiLCJiXzA1NiIsImFfMDU3IiwiYl8wNTgiLCJoYXNoX2ZvbGRfbGlzdCIsImVxdWFsX2xpc3QiLCJhXzA1OSIsImJfMDYwIiwiYV8wNjEiLCJiXzA2MiIsImxpc3Rfb2Zfc2V4cCIsInNleHBfb2ZfbGlzdCIsImxpc3Rfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9saXN0IiwiYmluX3NoYXBlX25hdGl2ZWludCIsImJpbl9zaXplX25hdGl2ZWludCIsImJpbl93cml0ZV9uYXRpdmVpbnQiLCJiaW5fd3JpdGVyX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCIsImJpbl9yZWFkX25hdGl2ZWludCQwIiwiYmluX3JlYWRlcl9uYXRpdmVpbnQiLCJiaW5fbmF0aXZlaW50IiwiY29tcGFyZV9uYXRpdmVpbnQiLCJlcXVhbF9uYXRpdmVpbnQiLCJoYXNoX2ZvbGRfbmF0aXZlaW50IiwiZnVuYyQ1IiwiaGFzaF9uYXRpdmVpbnQiLCJuYXRpdmVpbnRfb2Zfc2V4cCIsInNleHBfb2ZfbmF0aXZlaW50IiwibmF0aXZlaW50X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfbmF0aXZlaW50IiwiYmluX3NoYXBlX29wdGlvbiIsImJpbl9zaXplX29wdGlvbiIsImJpbl93cml0ZV9vcHRpb24iLCJiaW5fd3JpdGVyX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiIsImJpbl9yZWFkX29wdGlvbiQwIiwiYmluX3JlYWRlcl9vcHRpb24iLCJiaW5fb3B0aW9uIiwiY29tcGFyZV9vcHRpb24iLCJhXzA3MyIsImJfMDc0IiwiYV8wNzUiLCJiXzA3NiIsImVxdWFsX29wdGlvbiIsImFfMDc3IiwiYl8wNzgiLCJhXzA3OSIsImJfMDgwIiwiaGFzaF9mb2xkX29wdGlvbiIsIm9wdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9vcHRpb24iLCJvcHRpb25fc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9vcHRpb24iLCJiaW5fc2hhcGVfc3RyaW5nIiwiYmluX3NpemVfc3RyaW5nIiwiYmluX3dyaXRlX3N0cmluZyIsImJpbl93cml0ZXJfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nIiwiYmluX3JlYWRfc3RyaW5nJDAiLCJiaW5fcmVhZGVyX3N0cmluZyIsImJpbl9zdHJpbmciLCJjb21wYXJlX3N0cmluZyIsImVxdWFsX3N0cmluZyIsImhhc2hfZm9sZF9zdHJpbmciLCJmdW5jJDYiLCJoYXNoX3N0cmluZyIsInN0cmluZ19vZl9zZXhwIiwic2V4cF9vZl9zdHJpbmciLCJzdHJpbmdfc2V4cF9ncmFtbWFyIiwibmFtZV9vZl9zdHJpbmciLCJiaW5fc2hhcGVfYnl0ZXMiLCJiaW5fc2l6ZV9ieXRlcyIsImJpbl93cml0ZV9ieXRlcyIsImJpbl93cml0ZXJfYnl0ZXMiLCJiaW5fcmVhZF9ieXRlcyIsImJpbl9yZWFkX2J5dGVzJDAiLCJiaW5fcmVhZGVyX2J5dGVzIiwiYmluX2J5dGVzIiwiY29tcGFyZV9ieXRlcyIsImVxdWFsX2J5dGVzIiwiYnl0ZXNfb2Zfc2V4cCIsInNleHBfb2ZfYnl0ZXMiLCJieXRlc19zZXhwX2dyYW1tYXIiLCJuYW1lX29mX2J5dGVzIiwiYmluX3NoYXBlX3JlZiIsImJpbl9zaXplX3JlZiIsImJpbl93cml0ZV9yZWYiLCJiaW5fd3JpdGVyX3JlZiIsImJpbl9yZWFkX3JlZiIsImJpbl9yZWFkX3JlZiQwIiwiYmluX3JlYWRlcl9yZWYiLCJiaW5fcmVmIiwiY29tcGFyZV9yZWYiLCJhXzA5NiIsImJfMDk3IiwiYV8wOTgiLCJiXzA5OSIsImVxdWFsX3JlZiIsImFfMTAwIiwiYl8xMDEiLCJhXzEwMiIsImJfMTAzIiwicmVmX29mX3NleHAiLCJzZXhwX29mX3JlZiIsInJlZl9zZXhwX2dyYW1tYXIiLCJuYW1lX29mX3JlZiIsImdyb3VwJDEzIiwiYmluX3NoYXBlX3VuaXQiLCJiaW5fc2l6ZV91bml0IiwiYmluX3dyaXRlX3VuaXQiLCJiaW5fd3JpdGVyX3VuaXQiLCJiaW5fcmVhZF91bml0IiwiYmluX3JlYWRfdW5pdCQwIiwiYmluX3JlYWRlcl91bml0IiwiYmluX3VuaXQiLCJjb21wYXJlX3VuaXQiLCJlcXVhbF91bml0IiwiaGFzaF9mb2xkX3VuaXQiLCJmdW5jJDciLCJoYXNoX3VuaXQiLCJ1bml0X29mX3NleHAiLCJzZXhwX29mX3VuaXQiLCJ1bml0X3NleHBfZ3JhbW1hciIsIm5hbWVfb2ZfdW5pdCIsImdyb3VwJDE0IiwiYmluX3NoYXBlX2Zsb2F0X2FycmF5IiwiYmluX3NpemVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVfZmxvYXRfYXJyYXkiLCJiaW5fd3JpdGVyX2Zsb2F0X2FycmF5IiwiYmluX3JlYWRfZmxvYXRfYXJyYXkiLCJiaW5fcmVhZF9mbG9hdF9hcnJheSQwIiwiYmluX3JlYWRlcl9mbG9hdF9hcnJheSIsImJpbl9mbG9hdF9hcnJheSIsImNvbXBhcmVfZmxvYXRfYXJyYXkiLCJhXzExNCIsImJfMTE1IiwiYV8xMTYiLCJiXzExNyIsImZsb2F0X2FycmF5X29mX3NleHAiLCJzZXhwX29mX2Zsb2F0X2FycmF5IiwiZmxvYXRfYXJyYXlfc2V4cF9ncmFtbWFyIiwidHlwZW5hbWVfb2ZfZmxvYXRfYXJyYXkiLCJuYW1lX29mX2Zsb2F0X2FycmF5IiwidHlwZXJlcF9vZl9mbG9hdF9hcnJheSIsInNleHBfb2ZfZXhuIiwib2ZfcmVwciIsInRvX3JlcHIiLCJraWIiLCJtaWIiLCJnaWIiLCJuX2FicyIsImJ5dGVzX2ludF9leG4iLCJiaW5fc2l6ZV90X2Zyb3plbiIsImJpbl93cml0ZV90X2Zyb3plbiIsImJpbl9yZWFkX3RfZnJvemVuIiwiYmluX3JlYWRfdF9mcm96ZW4kMCIsImJpbl9zaGFwZV90X2Zyb3plbiIsImJpbl93cml0ZXJfdF9mcm96ZW4iLCJiaW5fcmVhZGVyX3RfZnJvemVuIiwiYmluX3RfZnJvemVuIiwibWF4X21lbV93YWl0aW5nX2djIiwibWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIiwic3ViX3NoYXJlZCIsInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMiLCJyZWFkZXIiLCJsaW1pdCIsImludmFsaWRfZGF0YSIsImJpbl9yZWFkZXIiLCJyZXN1bHQiLCJleHBlY3RlZF9wb3MiLCJlbGVtZW50X2xlbmd0aCIsInJlYWRfYmluX3Byb3QiLCJ3cml0ZV9iaW5fcHJvdCIsIndyaXRlciIsImRhdGFfbGVuIiwidG90YWxfbGVuIiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4Iiwidl8wMDUiLCJyZXMwXzAxMSIsInZfMDA2IiwicmVzMV8wMTIiLCJ2XzAwNyIsInJlczJfMDEzIiwicG9zX2FmdGVyX3NpemVfaGVhZGVyIiwicG9zX2FmdGVyX2RhdGEiLCJhcmc0XzAyMyIsImFyZzNfMDIyIiwiYXJnMl8wMjEiLCJhcmcxXzAyMCIsImFyZzBfMDE5Iiwidl8wMTQiLCJyZXMwXzAyNCIsInZfMDE1IiwicmVzMV8wMjUiLCJ2XzAxNiIsInJlczJfMDI2Iiwidl8wMTciLCJyZXMzXzAyNyIsInZfMDE4IiwicmVzNF8wMjgiLCJnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIiwicGFkZGluZyIsIm1pbl9wb3MiLCJkYXRhX2VuZCIsInNldF90YWlsX3BhZGRlZF9maXhlZF9zdHJpbmciLCJzbGVuIiwic2V0X2hlYWRfcGFkZGVkX2ZpeGVkX3N0cmluZyIsImdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmciLCJtYXhfcG9zIiwiZGF0YV9iZWdpbiIsInRvX2J5dGVzIiwib2ZfYnl0ZXMiLCJieXRlcyIsInRvX2hleCIsIm9mX2hleF9leG4iLCJvZl9iaW5hcnlfZXhuIiwiYWNjdW0iLCJ0b19iaW5hYmxlJDAiLCJkaWdlc3Rfc3RyaW5nIiwiZGlnZXN0X2J5dGVzIiwiZGlnZXN0X251bV9ieXRlcyIsImRpZ2VzdF9maWxlX2Jsb2NraW5nIiwicGF0aCIsImRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdSIsImNoYW5uZWwiLCJvdXRwdXRfYmxvY2tpbmciLCJvYyIsImlucHV0X2Jsb2NraW5nIiwiaWMiLCJkaWdlc3Rfc3ViYnl0ZXMiLCJzdWJieXRlcyIsImRpZ2VzdF9iaW5fcHJvdCIsInVuc2FmZV9kaWdlc3Rfc3ViYmlnc3RyaW5nIiwiZGlnZXN0X3N1YmJpZ3N0cmluZyIsImRpZ2VzdF9iaWdzdHJpbmciLCJlcnJvcl9zb3VyY2VfMDQ1IiwiZXJyb3Jfc291cmNlXzA2OCIsImVycm9yX3NvdXJjZV8xMDYiLCJiZWZvcmVfZmlyc3RfdHJhbnNpdGlvbiIsInRvX2V4dGVybmFsIiwib2ZfZXh0ZXJuYWwiLCJ2X3V0Y19vZmZzZXRfaW5fc2Vjb25kcyIsInZfaXNfZHN0Iiwidl9hYmJydiIsInV0Y19vZmZzZXRfaW5fc2Vjb25kc18wMDYiLCJpc19kc3RfMDA4IiwiYWJicnZfMDEwIiwiZHVwbGljYXRlc18wMTIiLCJleHRyYV8wMTMiLCJmaWVsZF9zZXhwc18wMTYiLCJmaWVsZF9uYW1lXzAxNCIsInRhaWxfMDIyIiwiZmllbGRfc2V4cF8wMTUkMyIsImZpZWxkX3NleHBfMDE1IiwiZmllbGRfc2V4cF8wMTUkMCIsImZpZWxkX3NleHBfMDE1JDEiLCJmdmFsdWVfMDE4IiwiZmllbGRfc2V4cF8wMTUkMiIsImZ2YWx1ZV8wMTciLCJhYmJydl8wMTEiLCJpc19kc3RfMDA5IiwidXRjX29mZnNldF9pbl9zZWNvbmRzXzAwNyIsImFiYnJ2XzAyOSIsImlzX2RzdF8wMjciLCJ1dGNfb2Zmc2V0X2luX3NlY29uZHNfMDI1IiwiYXJnXzAzMCIsImJuZHNfMDI0IiwiYXJnXzAyOCIsImJuZHNfMDI0JDAiLCJhcmdfMDI2IiwiYm5kc18wMjQkMSIsInZfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoIiwidl9zZWNvbmRzIiwic2V4cF8wMzIiLCJmaWVsZF9zZXhwc18wMzMiLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMiLCJzZWNvbmRzXzAzNiIsImR1cGxpY2F0ZXNfMDM4IiwiZXh0cmFfMDM5Iiwic2V4cF8wMzIkMCIsImZpZWxkX3NleHBzXzA0MiIsImZpZWxkX25hbWVfMDQwIiwidGFpbF8wNDciLCJmaWVsZF9zZXhwXzA0MSQyIiwiZmllbGRfc2V4cF8wNDEiLCJmaWVsZF9zZXhwXzA0MSQwIiwiZnZhbHVlXzA0NCIsImZpZWxkX3NleHBfMDQxJDEiLCJmdmFsdWVfMDQzIiwic2Vjb25kc18wMzciLCJ0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2hfMDMkMCIsInNlY29uZHNfMDUyIiwidGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXzA1IiwiYXJnXzA1MyIsImJuZHNfMDQ5IiwiYXJnXzA1MSIsImJuZHNfMDQ5JDAiLCJ2X3N0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV8iLCJ2X25ld19yZWdpbWUiLCJzZXhwXzA1NSIsImZpZWxkX3NleHBzXzA1NiIsInN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcCIsIm5ld19yZWdpbWVfMDU5IiwiZHVwbGljYXRlc18wNjEiLCJleHRyYV8wNjIiLCJzZXhwXzA1NSQwIiwiZmllbGRfc2V4cHNfMDY1IiwiZmllbGRfbmFtZV8wNjMiLCJ0YWlsXzA3MCIsImZpZWxkX3NleHBfMDY0JDIiLCJmaWVsZF9zZXhwXzA2NCIsInhfMDcxIiwiZmllbGRfc2V4cF8wNjQkMCIsImZ2YWx1ZV8wNjciLCJmaWVsZF9zZXhwXzA2NCQxIiwiZnZhbHVlXzA2NiIsIm5ld19yZWdpbWVfMDYwIiwic3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2VwJDAiLCJuZXdfcmVnaW1lXzA3NSIsImFyZ18wNzYiLCJibmRzXzA3MiIsImFyZ18wNzQiLCJibmRzXzA3MiQwIiwidjUiLCJ2NyIsInY2Iiwidl9uYW1lIiwidl9vcmlnaW5hbF9maWxlbmFtZSIsInZfZGlnZXN0Iiwidl90cmFuc2l0aW9ucyIsInZfbGFzdF9yZWdpbWVfaW5kZXgiLCJ2X2RlZmF1bHRfbG9jYWxfdGltZV90eXBlIiwidl9sZWFwX3NlY29uZHMiLCJzZXhwXzA3OCIsImZpZWxkX3NleHBzXzA3OSIsIm5hbWVfMDgwIiwib3JpZ2luYWxfZmlsZW5hbWVfMDgyIiwiZGlnZXN0XzA4NCIsInRyYW5zaXRpb25zXzA4NiIsImxhc3RfcmVnaW1lX2luZGV4XzA4OCIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzA5MCIsImxlYXBfc2Vjb25kc18wOTIiLCJkdXBsaWNhdGVzXzA5NCIsImV4dHJhXzA5NSIsInNleHBfMDc4JDAiLCJmaWVsZF9zZXhwc18wOTgiLCJmaWVsZF9uYW1lXzA5NiIsInRhaWxfMTA4IiwiZmllbGRfc2V4cF8wOTckNyIsImZpZWxkX3NleHBfMDk3IiwiZmllbGRfc2V4cF8wOTckMCIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5NyQxIiwiZnZhbHVlXzEwNCIsImZpZWxkX3NleHBfMDk3JDIiLCJmdmFsdWVfMTA1IiwiZmllbGRfc2V4cF8wOTckMyIsImZ2YWx1ZV8wOTkiLCJmaWVsZF9zZXhwXzA5NyQ0IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDk3JDUiLCJmdmFsdWVfMTAzIiwiZmllbGRfc2V4cF8wOTckNiIsImZ2YWx1ZV8xMDAiLCJsZWFwX3NlY29uZHNfMDkzIiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVfMDkxIiwibGFzdF9yZWdpbWVfaW5kZXhfMDg5IiwidHJhbnNpdGlvbnNfMDg3IiwiZGlnZXN0XzA4NSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzA4MyIsIm5hbWVfMDgxIiwidHJhbnNpdGlvbnNfMTE3IiwiZGlnZXN0XzExNSIsIm9yaWdpbmFsX2ZpbGVuYW1lXzExMyIsIm5hbWVfMTExIiwibGFzdF9yZWdpbWVfaW5kZXhfMTE5IiwibGVhcF9zZWNvbmRzXzEyMyIsImRlZmF1bHRfbG9jYWxfdGltZV90eXBlXzEyMSIsImFyZ18xMjQiLCJibmRzXzExMCIsImFyZ18xMjIiLCJibmRzXzExMCQwIiwiYXJnXzEyMCIsImJuZHNfMTEwJDEiLCJhcmdfMTE4IiwiYm5kc18xMTAkMiIsImFyZ18xMTYiLCJibmRzXzExMCQzIiwiYXJnXzExNCIsImJuZHNfMTEwJDQiLCJhcmdfMTEyIiwiYm5kc18xMTAkNSIsIm9yaWdpbmFsX2ZpbGVuYW1lIiwiem9uZSIsImRpZ2VzdCIsImJvb2xfb2ZfaW50IiwibG9uZyQwIiwiaW50MzJfb2ZfY2hhciIsImNociIsImlucHV0X2xvbmdfYXNfaW50MzIiLCJzYjEiLCJzYjIiLCJzYjMiLCJzYjQiLCJpbnB1dF9sb25nX2FzX2ludCIsImlucHV0X2xvbmdfYXNfaW50NjMiLCJpbnB1dF9sb25nX2xvbmdfYXNfaW50NjMiLCJpbnQ2M19vZl9jaGFyIiwic2hpZnQiLCJiaXRzIiwibG9uZ19sb25nIiwicmVzdWx0JDAiLCJyZXN1bHQkMSIsInJlc3VsdCQyIiwicmVzdWx0JDMiLCJyZXN1bHQkNCIsInJlc3VsdCQ1IiwicmVzdWx0JDYiLCJpbnB1dF9saXN0IiwibHN0IiwibHN0JDAiLCJpbnB1dF9hcnJheSIsImlucHV0X3JlZ2ltZSIsInV0Y19vZmZzZXRfaW5fc2Vjb25kcyIsImlzX2RzdCIsImFiYnJ2X2luZGV4IiwiYWJicnYiLCJpbnB1dF90el9maWxlX2dlbiIsImlucHV0X3RyYW5zaXRpb24iLCJpbnB1dF9sZWFwX3NlY29uZCIsInV0Y19sb2NhbF9jb3VudCIsInN0ZF93YWxsX2NvdW50IiwibGVhcF9jb3VudCIsInRyYW5zaXRpb25fY291bnQiLCJ0eXBlX2NvdW50IiwiYWJicnZfY2hhcl9jb3VudCIsInRyYW5zaXRpb25fdGltZXMiLCJ0cmFuc2l0aW9uX2luZGljZXMiLCJyZWdpbWVzIiwicmF3X2FiYnJ2cyIsImFiYnJ2cyIsIm5leHRfaW5kZXgiLCJhYmJydnMkMCIsImluZGV4ZWRfYWJicnZzIiwibGVhcF9zZWNvbmRzIiwicmVnaW1lcyQwIiwidGltZSIsInJlZ2ltZSIsInJhd190cmFuc2l0aW9ucyIsInRyYW5zaXRpb25zIiwibHR0IiwiZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUiLCJyZXN0IiwibmV3X3JlZ2ltZSIsImlucHV0X2xlYXBfc2Vjb25kX2dlbiIsInRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCIsInNlY29uZHMiLCJyZWFkX2hlYWRlciIsIm1hZ2ljIiwiYmFkX3ZlcnNpb24iLCJ2ZXJzaW9uIiwiaW5wdXRfdHpfZmlsZV92MSIsImlucHV0X3R6X2ZpbGUiLCJ6b25lbmFtZSIsInhfMTI1IiwibWFrZV96b25lIiwicmVhc29uIiwib2ZfdXRjX29mZnNldF9leHBsaWNpdF9uYW1lIiwib2ZfdXRjX29mZnNldCIsImxpa2VseV9tYWNoaW5lX3pvbmVzIiwidXRjIiwicmVzZXRfdHJhbnNpdGlvbl9jYWNoZSIsImdldF9yZWdpbWVfZXhuIiwiZWZmZWN0aXZlX3N0YXJ0X3RpbWUiLCJtb2RlIiwiaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2VjIiwiaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2VjIiwiYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzIiwidHJhbnNpdGlvbiIsImluZGV4X29mX3NlY29uZHNfc2luY2VfZXBvY2giLCJpbmRleCQwIiwiaW5kZXgkMSIsImluZGV4JDIiLCJpbmRleCQzIiwiaW5kZXgkNCIsIm9mX2ludDYzX3NlY29uZHMiLCJ0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXgiLCJvZl9zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3Bhbl9zaW5jZV9lcG9jaCIsIm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIiwidG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2giLCJpbmRleF9vZl9kYXRlX2FuZF9vZmRheSIsImluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IiwiaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXgiLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF8iLCJhZnRlciIsImJlZm9yZSIsImluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50XyIsImluZGV4X2FiYnJldmlhdGlvbl9leG4iLCJpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIiwicmF3IiwidmFsaWRhdGlvbl9mYWlsZWQiLCJhcmcyXzAwMyIsInJlczBfMDA0IiwicmVzMV8wMDUiLCJyZXMyXzAwNiIsImNyZWF0ZV9leG4iLCJzZXhwX29mX3R5cGVfaWQiLCJ0eXBlX2lkIiwidHlwZV9pZDEiLCJ0eXBlX2lkMiIsIm5hbWVfb2Zfa2V5IiwidWlkX29mX2tleSIsInR5cGVfaWRfbmFtZSIsInR5cGVfaWRfdWlkIiwicGFja2VkIiwieF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsIm1lbV9ieV9pZCIsImlkIiwicmVtb3ZlX2J5X2lkIiwia2V5JDAiLCJjaGFuZ2VfZXhuIiwib3JpZyIsIm9mX2FfMDExIiwib2ZfYV8wMTIiLCJ4XzAxMyIsInhfMDE0Iiwib2ZfYV8wMTciLCJkZWZhdWx0JDAiLCJpZCQwIiwiaWQkMSIsImYkMCIsIm1lcmdlX3Jlc3VsdCIsInJpZ2h0X2RhdGEiLCJyaWdodF9rZXkiLCJsZWZ0X2RhdGEiLCJsZWZ0X2tleSIsInJhY2VfZnJlZV9jcmVhdGVfbG9vcCIsImNlbGwiLCJuZXdfeCIsImN1cnJlbnQiLCJpbW1lZGlhY3kiLCJhbGxvd2VkX2ludHMiLCJuZXZlcl93aXRoX25hbWUiLCJuZXZlciIsInVua25vd24iLCJvcHRpb24iLCJpbnQzMiIsImludDY0IiwibmF0aXZlaW50IiwiZmxvYXQkMCIsInJlZiIsInR1cGxlMiIsInR1cGxlMyIsInR1cGxlNCIsInR1cGxlNSIsImZ1bmN0aW9uJDAiLCJpbnQkMCIsInJlZiQwIiwiYXJyYXkkMCIsInR1cGxlMiQwIiwidHVwbGUzJDAiLCJ0dXBsZTQkMCIsInR1cGxlNSQwIiwiZnVuY3Rpb24kMSIsIm9wdGlvbiQwIiwibGlzdCQwIiwibGF6eV90IiwicG9zc2libHlfdW5ib3hlZCIsImNoaWxkX3R5cGUiLCJ0aGVfb25seV9maWVsZCIsInZhcmlhbnQiLCJ0YWciLCJtb3JlIiwibm8iLCJtb3JlX2FyZ19saXN0Iiwib25lX2FyZ19saXN0Iiwibm9fYXJnX2xpc3QiLCJub19hcmdfY291bnQiLCJoYXNoX3NldCIsInJlcXVpcmVkIiwiZ2V0X3dpcF9jb21wdXRhdGlvbiIsImNvbXAiLCJzZXRfZmluYWxfY29tcHV0YXRpb24iLCJzaGFyZSIsIm9mX3R5cGVyZXAiLCJ0eXBlcmVwIiwid2l0bmVzcyIsInR5cGVyZXAxIiwidHlwZXJlcDIiLCJpMSIsImkyIiwicmEiLCJybiIsIndpdG5lc3MkMCIsImludF9pc192YWx1ZSIsImludF9hc192YWx1ZSIsImludF9hc192YWx1ZV9leG4iLCJ2YWx1ZV9hc19pbnRfZXhuIiwidmFsdWVfYXNfaW50IiwidmFsdWVfaXNfaW50Iiwib2ZfdHlwZXJlcCQwIiwib2ZfdHlwZXJlcF9leG4iLCJ2YWx1ZV9hc19pbnQkMCIsIm9mX3R5cGVyZXAkMSIsIm9mX3R5cGVyZXBfZXhuJDAiLCJvZl90eXBlcmVwJDIiLCJvZl90eXBlcmVwX2V4biQxIiwiZGVzdCIsImVycm9yX3NvdXJjZV8wNjMiLCJlcnJvcl9zb3VyY2VfMDQ2IiwiZXJyb3Jfc291cmNlXzAzMCIsIm9mX2FfMDAxIiwib2ZfYl8wMDIiLCJzZXhwXzAwOCIsIm9mX2JfMDExIiwiYXJnMV8wMTMiLCJhcmcwXzAxMiIsInJlczFfMDE1IiwiY3VycnkiLCJ1bmN1cnJ5IiwibWFwX2ZzdCIsIm1hcF9zbmQiLCJtYXAyIiwieTIiLCJ5MSIsImNtcDEiLCJjbXAyIiwieSQwIiwiZXExIiwiZXEyIiwib2ZfYl8wMjAiLCJvZl9jXzAyMSIsInNleHBfMDI5IiwiYXJnMl8wMjUiLCJyZXMwXzAyNiIsInJlczFfMDI3IiwicmVzMl8wMjgiLCJvZl9hXzAzMSIsIm9mX2JfMDMyIiwib2ZfY18wMzMiLCJhcmcyXzAzNiIsImFyZzFfMDM1IiwiYXJnMF8wMzQiLCJyZXMwXzAzNyIsInJlczFfMDM4IiwicmVzMl8wMzkiLCJvZl9jIiwiY3VycnkkMCIsInVuY3VycnkkMCIsIm1hcF9mc3QkMCIsIm1hcF9zbmQkMCIsIm1hcF90cmQiLCJtYXAyJDAiLCJ6MiIsInoxIiwiZ2V0MyIsImNtcDMiLCJ6JDAiLCJjMSIsImMyIiwiZXEzIiwiYXJnMV8wNDgiLCJhcmcwXzA0NyIsInJlczBfMDQ5IiwicmVzMV8wNTAiLCJhXzA1MSIsImJfMDUyIiwidF8wNTQiLCJ0XzA1MyIsInRfMDU2IiwidF8wNTUiLCJzZXhwXzA2MiIsImFyZzFfMDU5IiwiYXJnMF8wNTgiLCJyZXMxXzA2MSIsImFyZzFfMDY1IiwicmVzMF8wNjYiLCJyZXMxXzA2NyIsInMyIiwiczEiLCJzMiQwIiwiczEkMCIsIndlZWtkYXlzIiwid2Vla2VuZHMiLCJzaXplXzAxOCIsInJhbmRvbV8wMTkiLCJzaXplXzAxMiIsInJhbmRvbV8wMTMiLCJzaXplXzAxMCIsInJhbmRvbV8wMTEiLCJyYW5kb21fMDA5Iiwic2l6ZV8wMDYiLCJyYW5kb21fMDA3IiwiaGFzaF8wMDUiLCJoYXNoXzAwNSQwIiwiaGFzaF8wMDUkMSIsImhhc2hfMDA1JDIiLCJoYXNoXzAwNSQzIiwiaGFzaF8wMDUkNCIsImhhc2hfMDA1JDUiLCJoYXNoXzAwNSQ2IiwidG9fc3RyaW5nX2xvbmciLCJpc29fODYwMV93ZWVrZGF5X251bWJlciIsIm51bV9kYXlzX2luX3dlZWsiLCJudW1fZGF5cyIsImZyb20iLCJ0byIsImlzX3N1bl9vcl9zYXQiLCJpbnQ2M190d28iLCJpbnQ2M190ZW4iLCJpbnQ2M190d2VudHkiLCJpbnQ2M19iaWxsaW9uIiwibWF4X2JpbGxpb25zIiwiZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIiwiZGlnaXRzX29mX2ludDYzX21heF92YWx1ZSIsIm1heF9pbnQ2M193aXRoIiwiZGlnaXRzIiwiYmlsbGlvbnMiLCJkaWdpdF9vZl9jaGFyIiwid3JpdGVfMV9kaWdpdF9pbnQiLCJyZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyIsInRlbnMiLCJvbmVzIiwid3JpdGVfMl9kaWdpdF9pbnQiLCJ3cml0ZV8zX2RpZ2l0X2ludCIsIndyaXRlXzRfZGlnaXRfaW50Iiwid3JpdGVfNV9kaWdpdF9pbnQiLCJ3cml0ZV82X2RpZ2l0X2ludCIsIndyaXRlXzdfZGlnaXRfaW50Iiwid3JpdGVfOF9kaWdpdF9pbnQiLCJ3cml0ZV85X2RpZ2l0X2ludCIsInJlYWRfMV9kaWdpdF9pbnQiLCJyZWFkXzJfZGlnaXRfaW50IiwicmVhZF8zX2RpZ2l0X2ludCIsInJlYWRfNF9kaWdpdF9pbnQiLCJyZWFkXzVfZGlnaXRfaW50IiwicmVhZF82X2RpZ2l0X2ludCIsInJlYWRfN19kaWdpdF9pbnQiLCJyZWFkXzhfZGlnaXRfaW50IiwicmVhZF85X2RpZ2l0X2ludCIsInJhaXNlX2ludDYzX292ZXJmbG93IiwicmVhZF9pbnQ2MyIsImRpZ2l0c19vZl9iaWxsaW9ucyIsInJlbWFpbmRlciIsImRpdmlkZV9hbmRfcm91bmRfdXAiLCJudW1lcmF0b3IiLCJkZW5vbWluYXRvciIsIm1pbl9zY2FsZSIsIm1heF9zY2FsZSIsImNoZWNrX2RpZ2l0cyIsImNoZWNrX3BvcyIsImNoZWNrX3dyaXRlIiwid3JpdGVfMV9kaWdpdF9pbnQkMCIsIndyaXRlXzJfZGlnaXRfaW50JDAiLCJ3cml0ZV8zX2RpZ2l0X2ludCQwIiwid3JpdGVfNF9kaWdpdF9pbnQkMCIsIndyaXRlXzVfZGlnaXRfaW50JDAiLCJ3cml0ZV82X2RpZ2l0X2ludCQwIiwid3JpdGVfN19kaWdpdF9pbnQkMCIsIndyaXRlXzhfZGlnaXRfaW50JDAiLCJ3cml0ZV85X2RpZ2l0X2ludCQwIiwid3JpdGVfaW50NjMiLCJkaWdpdHMkMCIsImludDYzJDAiLCJjdXN0b21fcHJpbnRmXzAwMyIsImN1c3RvbV9wcmludGZfMDA0IiwiaW50NjMiLCJjaGVja19yZWFkIiwicmVhZF8xX2RpZ2l0X2ludCQwIiwicmVhZF8yX2RpZ2l0X2ludCQwIiwicmVhZF8zX2RpZ2l0X2ludCQwIiwicmVhZF80X2RpZ2l0X2ludCQwIiwicmVhZF81X2RpZ2l0X2ludCQwIiwicmVhZF82X2RpZ2l0X2ludCQwIiwicmVhZF83X2RpZ2l0X2ludCQwIiwicmVhZF84X2RpZ2l0X2ludCQwIiwicmVhZF85X2RpZ2l0X2ludCQwIiwicmVhZF9pbnQ2MyQwIiwicmVhZF9pbnQ2M19kZWNpbWFsIiwiZGVjaW1hbHMiLCJzY2FsZSQwIiwicm91bmRfZXhhY3QiLCJhbGxvd191bmRlcnNjb3JlIiwicm91bmRfYXQkMCIsInNjYWxlIiwiZGl2aXNvciIsInJvdW5kX2F0IiwiZGlnaXQiLCJpbmNyZW1lbnQiLCJkZXNjcmlwdGlvbnMiLCJzaXplXzAzNCIsInJhbmRvbV8wMzUiLCJzaXplXzAzMiIsInJhbmRvbV8wMzMiLCJzaXplXzAzMCIsInJhbmRvbV8wMzEiLCJyYW5kb21fMDI5Iiwic2l6ZV8wMjYiLCJyYW5kb21fMDI3Iiwic2l6ZV8wMjQiLCJyYW5kb21fMDI1Iiwic2l6ZV8wMjIiLCJyYW5kb21fMDIzIiwic2l6ZV8wMjAiLCJyYW5kb21fMDIxIiwiaGFzaF8wMTEiLCJoYXNoXzAxMSQwIiwiaGFzaF8wMTEkMSIsImhhc2hfMDExJDIiLCJoYXNoXzAxMSQzIiwiaGFzaF8wMTEkNCIsImhhc2hfMDExJDUiLCJoYXNoXzAxMSQ2IiwiaGFzaF8wMTEkNyIsImhhc2hfMDExJDgiLCJoYXNoXzAxMSQ5IiwiaGFzaF8wMTEkMTAiLCJoYXNoXzAxMSQxMSIsImphbiIsImZlYiIsIm1hciIsImFwciIsIm1heSIsImp1biIsImp1bCIsImF1ZyIsInNlcCIsIm9jdCIsIm5vdiIsImRlYyIsImlzX2phbiIsImlzX2ZlYiIsImlzX21hciIsImlzX2FwciIsImlzX21heSIsImlzX2p1biIsImlzX2p1bCIsImlzX2F1ZyIsImlzX3NlcCIsImlzX29jdCIsImlzX25vdiIsImlzX2RlYyIsImphbl92YWwiLCJmZWJfdmFsIiwibWFyX3ZhbCIsImFwcl92YWwiLCJtYXlfdmFsIiwianVuX3ZhbCIsImp1bF92YWwiLCJhdWdfdmFsIiwic2VwX3ZhbCIsIm9jdF92YWwiLCJub3ZfdmFsIiwiZGVjX3ZhbCIsImphbiQwIiwiZmViJDAiLCJtYXIkMCIsImFwciQwIiwibWF5JDAiLCJqdW4kMCIsImp1bCQwIiwiYXVnJDAiLCJzZXAkMCIsIm9jdCQwIiwibm92JDAiLCJkZWMkMCIsImphbl9mdW4iLCJmZWJfZnVuIiwibWFyX2Z1biIsImFwcl9mdW4iLCJtYXlfZnVuIiwianVuX2Z1biIsImp1bF9mdW4iLCJhdWdfZnVuIiwic2VwX2Z1biIsIm9jdF9mdW4iLCJub3ZfZnVuIiwiZGVjX2Z1biIsIm1ha2VfbWF0Y2hlciIsImphbl9nZW4iLCJmZWJfZ2VuIiwibWFyX2dlbiIsImFwcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwibWF5X2dlbiIsImNvbXBpbGVfYWNjJDUiLCJqdW5fZ2VuIiwiY29tcGlsZV9hY2MkNiIsImp1bF9nZW4iLCJjb21waWxlX2FjYyQ3IiwiYXVnX2dlbiIsImNvbXBpbGVfYWNjJDgiLCJzZXBfZ2VuIiwiY29tcGlsZV9hY2MkOSIsIm9jdF9nZW4iLCJjb21waWxlX2FjYyQxMCIsIm5vdl9nZW4iLCJjb21waWxlX2FjYyQxMSIsImRlY19nZW4iLCJ0b19yYW5rIiwidG9fbmFtZSIsIm51bV9tb250aHMiLCJhbGxfc3RyaW5ncyIsImFsbF9zdHJpbmdzJDAiLCJlcnJvcl9zb3VyY2VfMDIxIiwiaXNfbGVhcF95ZWFyIiwieWVhciIsImNyZWF0ZTAiLCJtb250aCIsImRheSIsImRheXNfaW5fbW9udGgiLCJpbnZhbGlkIiwibXNnIiwiZGF5c19pbl9tb250aCQwIiwidW5jaGVja2VkX3ZhbHVlIiwiaW52YWxpZF92YWx1ZV9mb3JfaW50ZXJuYWxfdXNlIiwidG9fc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQiLCJ0b19zdHJpbmdfaXNvODYwMV9iYXNpYyIsInRvX3N0cmluZ19hbWVyaWNhbiIsInBhcnNlX3llYXI0IiwicGFyc2VfbW9udGgiLCJwYXJzZV9kYXkiLCJvZl9zdHJpbmdfaXNvODYwMV9iYXNpYyIsImVuc3VyZSIsIm1vbnRoX251bSIsIm1vbnRoX2FicnYiLCJkJDAiLCJtJDAiLCJ5ZWFyJDAiLCJzZXhwXzAwNSQwIiwiZmllbGRfc2V4cHNfMDA2IiwieV8wMDciLCJtXzAwOSIsImRfMDExIiwiZHVwbGljYXRlc18wMTMiLCJleHRyYV8wMTQiLCJzZXhwXzAwNSIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjMiLCJmaWVsZF9zZXhwXzAxNiQzIiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNCIsImZpZWxkX3NleHBfMDE2JDAiLCJmaWVsZF9zZXhwXzAxNiQxIiwiZmllbGRfc2V4cF8wMTYkMiIsImRfMDEyIiwibV8wMTAiLCJ5XzAwOCIsInNvbWVfaXNfcmVwcmVzZW50YWJsZSIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsInZhbHVlX2V4biIsInN5bWJvbCQ1IiwidW5peF9lcG9jaCIsIm9mX3llYXIiLCJvZl9kYXRlIiwiZGF0ZSIsImNfMTBfMDAwIiwiY18xNF83ODAiLCJjXzNfNjUyXzQyNSIsInRvX2RhdGUiLCJkYXlzIiwiZGRkIiwiZGRkJDAiLCJ5JDEiLCJtaSIsInkkMiIsInVuaXhfZXBvY2gkMCIsImFkZF9kYXlzIiwiYWRkX2RheXMkMCIsImFkZF9tb250aHMiLCJ0b3RhbF9tb250aHMiLCJtJDEiLCJkJDEiLCJhZGRfeWVhcnMiLCJkYXlfb2Zfd2VlayIsIm5vbl9sZWFwX3llYXJfdGFibGUiLCJsZWFwX3llYXJfdGFibGUiLCJvcmRpbmFsX2RhdGUiLCJsYXN0X3dlZWtfb2ZfeWVhciIsImZpcnN0X29mX3llYXIiLCJpcyIsImNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIiwib3JkaW5hbCIsIndlZWtkYXkiLCJ3ZWVrIiwid2Vla19udW1iZXJfYW5kX3llYXIiLCJ3ZWVrX251bWJlciIsImlzX3dlZWtlbmQiLCJpc193ZWVrZGF5IiwiaXNfYnVzaW5lc3NfZGF5IiwiaXNfaG9saWRheSIsImRpZmZfd2Vla2VuZF9kYXlzIiwiZDEiLCJkMiIsIm51bV9zYXRzdW5fY3Jvc3NpbmdzIiwiZGlmZl93ZWVrZGF5cyIsImFkZF9kYXlzX3NraXBwaW5nIiwic2tpcCIsInN0ZXAiLCJrJDEiLCJ0X25leHQiLCJmaXJzdF9kYXlfc2F0aXNmeWluZyIsImNvbmRpdGlvbiIsIm5leHRfZGF5X3NhdGlzZnlpbmciLCJuZXh0X2RheSIsImZvbGxvd2luZ193ZWVrZGF5IiwicHJldmlvdXNfd2Vla2RheSIsImFkZF93ZWVrZGF5cyIsImFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIiwiYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIiwiYWRkX2J1c2luZXNzX2RheXMiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3IiLCJhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19iYWMiLCJkYXRlc19iZXR3ZWVuIiwibCQwIiwid2Vla2RheXNfYmV0d2VlbiIsImFsbF9kYXRlcyIsImZpcnN0X2RhdGUiLCJmaXJzdF93ZWVrZGF5IiwiZGF0ZV9hbmRfd2Vla2RheXMiLCJidXNpbmVzc19kYXRlc19iZXR3ZWVuIiwiZmlyc3Rfc3RyaWN0bHlfYWZ0ZXIiLCJkb3ciLCJkb3ckMCIsInRwbHVzMSIsImN1ciIsInN1ZmZpeGVzIiwiYW1fc3VmZml4ZXMiLCJwbV9zdWZmaXhlcyIsImZpbmRfc3VmZml4Iiwic3VmZml4ZXMkMCIsInN1ZmZpeGVzJDEiLCJoYXNfY29sb24iLCJkZWNyZW1lbnRfbGVuZ3RoX2lmX2VuZHNfaW5fc3AiLCJpbnZhbGlkX3N0cmluZyIsImFtIiwiYW1fb3JfcG0iLCJleHBlY3RfbWludXRlc19hbmRfc2Vjb25kcyIsImhyIiwiaHIkMSIsImV4cGVjdF9zZWNvbmRzIiwic3Vic2VjX25vbnplcm8iLCJzdWJzZWNfbGVuIiwic3Vic2VjX3BvcyIsInNlYyIsInNlYyQxIiwibm9uemVybyIsInN1YnNlY19ub256ZXJvJDAiLCJzdWJzZWNfbGVuJDEiLCJzdWJzZWNfcG9zJDAiLCJzZWMkMiIsImhyJDAiLCJzZWMkMCIsInN1YnNlY19sZW4kMCIsInBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQiLCJtYXRjaCQxIiwidmVyaWZ5IiwiZSQwIiwib2ZfbXVsdCIsInRvX211bHQiLCJvZl9wZXJjZW50YWdlIiwidG9fcGVyY2VudGFnZSIsIm9mX2JwIiwidG9fYnAiLCJvZl9icF9pbnQiLCJ0b19icF9pbnQiLCJyb3VuZF9zaWduaWZpY2FudCIsInNpZ25pZmljYW50X2RpZ2l0cyIsInJvdW5kX2RlY2ltYWxfbXVsdCIsImRlY2ltYWxfZGlnaXRzIiwicm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIiwicm91bmRfZGVjaW1hbF9icCIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiZXhwb25lbnQiLCJwcmVjaXNpb24iLCJleHBvbmVudF9FIiwiZGVjaW1hbCIsIm9jYW1sIiwiY29tcGFjdCIsImNvbXBhY3RfRSIsImhleCIsImhleF9FIiwiZm9ybWF0X2Zsb2F0IiwicHJlY2lzaW9uJDAiLCJwcmVjaXNpb24kMSIsInByZWNpc2lvbiQyIiwicHJlY2lzaW9uJDMiLCJwcmVjaXNpb24kNCIsInByZWNpc2lvbiQ1IiwiZm9ybWF0IiwieF9hYnMiLCJyZWFsbHlfb2Zfc3RyaW5nIiwiZmxvYXRfb2Zfc3RyaW5nIiwic3RyJDAiLCJzdHIkMSIsInN0ciQyIiwiYXBwbHlfd2l0aF9ub25lX2FzX25hbiIsIm9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSIsInRvX211bHRfd2l0aF9ub25lX2FzX25hbiIsImlzX3plcm8iLCJhcHBseSIsImlzX25hbiIsImlzX2luZiIsIm5lZyIsInNpZ25fZXhuIiwib2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIiwidF9vZl9zZXhwX2FsbG93X25hbl9hbmRfaW5mIiwiZm9ybWF0JDAiLCJyYW5kb21pemUiLCJzcGFuIiwicGVyY2VudCIsIm11bHQiLCJmYWN0b3IiLCJmb3JtYXRfZGVjaW1hbCIsInRlbnRocyIsInVuaXRzIiwic2hvcnRfc3RyaW5nIiwibXMiLCJ1cyIsIm5zIiwic3VmZml4JDYiLCJlcnJvcl9zb3VyY2VfMDMyIiwibiQyIiwibiQzIiwibiQ0Iiwic2lnbl8wMDYiLCJocl8wMDgiLCJtaW5fMDEwIiwic2VjXzAxMiIsIm1zXzAxNCIsInVzXzAxNiIsIm5zXzAxOCIsImR1cGxpY2F0ZXNfMDIwIiwiZXh0cmFfMDIxIiwiZmllbGRfc2V4cHNfMDI0IiwiZmllbGRfbmFtZV8wMjIiLCJ0YWlsXzAzNCIsImZpZWxkX3NleHBfMDIzJDciLCJmaWVsZF9zZXhwXzAyMyIsInhfMDM1IiwiZmllbGRfc2V4cF8wMjMkMCIsImZ2YWx1ZV8wMjYiLCJmaWVsZF9zZXhwXzAyMyQxIiwiZnZhbHVlXzAzMSIsImZpZWxkX3NleHBfMDIzJDIiLCJmdmFsdWVfMDI4IiwiZmllbGRfc2V4cF8wMjMkMyIsImZ2YWx1ZV8wMjUiLCJmaWVsZF9zZXhwXzAyMyQ0IiwiZnZhbHVlXzAyNyIsImZpZWxkX3NleHBfMDIzJDUiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjMkNiIsImZ2YWx1ZV8wMzAiLCJuc18wMTkiLCJ1c18wMTciLCJtc18wMTUiLCJzZWNfMDEzIiwibWluXzAxMSIsImhyXzAwOSIsInNpZ25fMDA3IiwibnNfMDQ5IiwidXNfMDQ3IiwibXNfMDQ1Iiwic2VjXzA0MyIsIm1pbl8wNDEiLCJocl8wMzkiLCJzaWduXzAzNyIsImFyZ18wNTAiLCJibmRzXzAzNiIsImFyZ18wNDgiLCJibmRzXzAzNiQwIiwiYXJnXzA0NiIsImJuZHNfMDM2JDEiLCJhcmdfMDQ0IiwiYm5kc18wMzYkMiIsImFyZ18wNDIiLCJibmRzXzAzNiQzIiwiYXJnXzA0MCIsImJuZHNfMDM2JDQiLCJhcmdfMDM4IiwiYm5kc18wMzYkNSIsIm1hZ25pdHVkZSIsIm5hbm9zZWNvbmQiLCJtaWNyb3NlY29uZCIsIm1pbGxpc2Vjb25kIiwibWludXRlIiwiaG91ciIsInRvX3BhcnRzIiwiaW50ZWdyYWwiLCJmcmFjdGlvbmFsIiwibmFub3NlY29uZHMiLCJuYW5vc2Vjb25kcyQwIiwic2Vjb25kcyQwIiwibWludXRlcyIsIm1pY3Jvc2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsInRvX25zIiwidG9fdXMiLCJ0b19tcyIsInRvX3NlYyIsInRvX21pbiIsInRvX2hyIiwidG9fZGF5Iiwib2ZfbnMiLCJvZl91cyIsIm9mX21zIiwib2Zfc2VjIiwib2ZfaW50X3NlYyIsIm9mX2ludDMyX3NlY29uZHMiLCJvZl9taW4iLCJvZl9ociIsIm9mX2RheSIsImRpdmlkZV9ieV91bml0X29mX3RpbWUiLCJ1bml0X29mX3RpbWUiLCJzY2FsZV9ieV91bml0X29mX3RpbWUiLCJzdGgkMSIsInN0aCQyIiwic3RoJDMiLCJzdGgkNCIsInN0aCQ1Iiwic3RoJDYiLCJ0b19zaG9ydF9zdHJpbmciLCJ0X29mX3NleHBfdjFfdjIiLCJpc192MiIsInNleHBfb2ZfdF92MV92MiIsImFic190IiwidG9fdW5pdF9vZl90aW1lIiwib2ZfdW5pdF9vZl90aW1lIiwic3VmZml4X29mX3VuaXRfb2ZfdGltZSIsInBhcnNlX3N1ZmZpeCIsInVuaXRfb2ZfdGltZV9saXN0JDEiLCJ1bml0X29mX3RpbWVfbGlzdCIsInVuaXRfb2ZfdGltZV9saXN0JDAiLCJzdGF0ZV9pc19maW5hbCIsImludmFsaWRfc3RyaW5nJDAiLCJuZWdhdGl2ZSIsIm1hZ25pdHVkZSQwIiwidG9rZW4iLCJzdGF0ZSQwIiwic3VmZml4X2luZGV4IiwidW50aWxfaW5kZXgiLCJmbG9hdF9zdHJpbmciLCJtYWduaXR1ZGUkMSIsInN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaSIsInN1bV90IiwidG9fZmxvYXRfc3RyaW5nIiwiZml4dXBfdW5pdF9vZl90aW1lIiwic3VtX3QkMCIsInJlbV90IiwiZml4dXBfbWFnbml0dWRlIiwidG9faW50X3N0cmluZ19hbmRfc3VtIiwidW5pdF9zcGFuIiwibmV3X3N1bV90IiwibmV3X3JlbV90IiwibmV4dF9tYWduaXR1ZGUiLCJuZXh0X3N1bV90IiwibmV4dF9yZW1fdCIsIm1hZ25pdHVkZSQyIiwibmV3X3N1bV90JDAiLCJ1bml0X29mX3RpbWUkMCIsIm1hZ25pdHVkZV9zdHJpbmciLCJkYXlfc3RyaW5nIiwiaG91cl9zdHJpbmciLCJzdW1fdCQxIiwibWludXRlX3N0cmluZyIsIm9yZGVyX29mX21hZ25pdHVkZV9vZl9maXJzdF9kaSIsImhhbGZfdWxwIiwib3JkZXJfb2ZfbWFnbml0dWRlX29mX2ZpbmFsX2RpIiwibnVtYmVyX29mX2RpZ2l0cyIsImRlbGltaXRlciIsImFsaWduX2RlY2ltYWwiLCJmbG9hdCQxIiwic3VmZml4JDciLCJsbyIsImhpIiwibWlsbGVuaXVtIiwidG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJpc192YWxpZCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuYyIsInNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbCIsIm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biIsImN1c3RvbV9wcmludGZfMDAxIiwic3RhcnRfb2ZfbmV4dF9kYXkiLCJzdGFydF9vZl9kYXkiLCJjYW5kaWRhdGUiLCJhcHByb3hpbWF0ZV9lbmRfb2ZfZGF5IiwibnMkMCIsInVzJDAiLCJtcyQwIiwidG9fc3RyaW5nX2dlbiIsImRyb3BfbXMiLCJkcm9wX3VzIiwidHJpbSIsIm1vZCIsImRyb3BfdXMkMCIsImZsb2F0X3NlYyIsImRvbnRfcHJpbnRfdXMiLCJkb250X3ByaW50X21zIiwiZG9udF9wcmludF9zIiwidG9fc3RyaW5nX3RyaW1tZWQiLCJ0b19zZWNfc3RyaW5nIiwidG9fbWlsbGlzZWNvbmRfc3RyaW5nIiwic21hbGxfZGlmZiIsIm9mZGF5MSIsIm9mZGF5MiIsIm9mZGF5MSQwIiwib2ZkYXkyJDAiLCJjcmVhdGVfZnJvbV9wYXJzZWQiLCJzdWJzZWMiLCJzJDAiLCJvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCIsImVwb2NoIiwiaXNfZWFybGllciIsImlzX2xhdGVyIiwib2Zfc3Bhbl9pbl9zZWNvbmRzIiwic3Bhbl9pbl9zZWNvbmRzIiwib2ZfdGltZV9pbl9zZWNvbmRzIiwidGltZV9pbl9zZWNvbmRzIiwicmVsYXRpdmUiLCJhYmJyZXZpYXRpb24iLCJpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IiwicHJldl9jbG9ja19zaGlmdCIsIm5leHRfY2xvY2tfc2hpZnQiLCJkYXRlX2FuZF9vZmRheV9vZl9hYnNvbHV0ZV90aW0iLCJvZmZzZXRfZnJvbV91dGMiLCJhYnNvbHV0ZV90aW1lX29mX2RhdGVfYW5kX29mZGEiLCJhYnNfZGlmZiIsIm9mX2RhdGVfb2ZkYXkiLCJvZmRheSIsIm9mX2RhdGVfb2ZkYXlfcHJlY2lzZSIsInByb3Bvc2VkX3RpbWUiLCJzaGlmdF9hbW91bnQiLCJzaGlmdF9zdGFydCIsInNoaWZ0X2JhY2t3YXJkcyIsImRhdGVfY2FjaGUiLCJyZXNldF9kYXRlX2NhY2hlIiwic2V0X2RhdGVfY2FjaGUiLCJyZWwiLCJlZmZlY3RpdmVfZGF5X3N0YXJ0IiwiZWZmZWN0aXZlX2RheV91bnRpbCIsImNhY2hlX3N0YXJ0X2luY2wiLCJjYWNoZV91bnRpbF9leGNsIiwiZW5kX29mX2RheSIsInRvX29mZGF5IiwidG9fZGF0ZV9vZmRheSIsInRvX2RhdGVfb2ZkYXlfcHJlY2lzZSIsImNsb2NrX3NoaWZ0X2FmdGVyIiwiY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0IiwiYW1vdW50Iiwib2ZkYXkkMCIsImFtYmlndWl0eSIsImFtb3VudCQwIiwic3RhcnQkMCIsImNvbnZlcnQiLCJmcm9tX3R6IiwidG9fdHoiLCJzdGFydF90aW1lIiwidXRjX29mZnNldCQwIiwidXRjX2Vwb2NoIiwib2Zmc2V0X3N0cmluZyIsInV0Y19vZmZzZXQiLCJpc191dGMiLCJ0b19zdHJpbmdfYWJzX3BhcnRzIiwib2Zmc2V0X3N0cmluZyQwIiwidG9fc3RyaW5nX2Fic190cmltbWVkIiwidG9fc3RyaW5nX2FicyIsInRvX3N0cmluZ191dGMiLCJ0b19zZWNfc3RyaW5nX3dpdGhfem9uZSIsInRvX2ZpbGVuYW1lX3N0cmluZyIsIm9mX2ZpbGVuYW1lX3N0cmluZyIsImRhdGUkMCIsIm9mZGF5JDEiLCJvZl9sb2NhbGl6ZWRfc3RyaW5nIiwib2NjdXJyZW5jZSIsImJlZm9yZV9vcl9hZnRlciIsImZpcnN0X2d1ZXNzX2RhdGUiLCJmaXJzdF9ndWVzcyIsImVuc3VyZV9jb2xvbl9pbl9vZmZzZXQiLCJvZmZzZXRfbGVuZ3RoIiwib2Zfc3RyaW5nX2dlbiIsImRlZmF1bHRfem9uZSIsImZpbmRfem9uZSIsIm9mZGF5JDMiLCJkYXRlJDEiLCJ0eiIsIm9mZGF5JDIiLCJvZmRheV90b19zZWMiLCJvZCIsInR6JDAiLCJ1dGNfb2Zmc2V0JDEiLCJ1dGNfdCIsIm9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQiLCJ6b25lX25hbWUiLCJ0b19hYnNvbHV0ZSIsIm9mX2Fic29sdXRlIiwiYWJzb2x1dGUiLCJzZWNfcGVyX2RheSIsInRvX2RheXNfZnJvbV9lcG9jaCIsInNlY19zaW5jZV9lcG9jaCIsImdtdGltZV9sb3dlcl9ib3VuZCIsImRheXNfZnJvbV9lcG9jaF9hcHByb3giLCJvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2giLCJkYXlzX2Zyb21fZXBvY2hfaW5fc2VjIiwiZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2giLCJuZXh0X211bHRpcGxlX2ludGVybmFsIiwiY2FuX2VxdWFsX2FmdGVyIiwiYmFzZSIsImludGVydmFsIiwiYmFzZV90b19hZnRlciIsIm5leHRfbXVsdGlwbGUiLCJwcmV2X211bHRpcGxlIiwiY2FuX2VxdWFsX2JlZm9yZSIsIm5vdyIsImZsb2F0X25zIiwib2ZkYXlfYW5kX3Bvc3NpYmx5X3pvbmUiLCJvZl90aW1lIiwidG9kYXkiLCJzdWZmaXgkNSIsImFyY2hfc2l4dHlmb3VyIiwibWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmciLCJtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyIsIm1hZyIsIm9mX3BhcnRzIiwib2ZfaW50NjNfbnMiLCJvZl9pbnRfdXMiLCJvZl9pbnRfbXMiLCJvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXMiLCJ0b19pbnQ2M19ucyIsInRvX2ludF91cyIsInRvX2ludF9tcyIsInRvX2ludF9zZWMiLCJvZl9pbnRfbnMiLCJ0b19pbnRfbnMiLCJ1Iiwic2NhbGVfaW50NjMiLCJzY2FsZV9pbnQiLCJkaXYiLCJ0b19wcm9wb3J0aW9uYWxfZmxvYXQiLCJvZl9pbnQ2M19leG4iLCJ0b19pbnQ2MyIsIm51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUiLCJzcGFuX3BhcnRfbWFnbml0dWRlIiwid3JpdGVfY2hhciIsIndyaXRlXzJfY2hhcnMiLCJjaGFyMSIsImNoYXIyIiwid3JpdGVfZGlnaXRzIiwid3JpdGVfaWZfbm9uX2VtcHR5IiwibmFub3Nfb2ZfbWlsbGlzZWNvbmQiLCJuYW5vc19vZl9taWNyb3NlY29uZCIsImludDYzXzYwIiwiaW50NjNfMjQiLCJob3VycyIsImRpZ2l0c19vZl9kIiwiZGlnaXRzX29mX2giLCJkaWdpdHNfb2ZfbSIsImRlY2ltYWxfdW5pdCIsImRlY2ltYWxfdW5pdF9pbnRlZ2VyIiwiZGVjaW1hbF91bml0X2JpbGxpb250aHMiLCJkaWdpdHNfb2ZfZGVjaW1hbF91bml0IiwiZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0Iiwic2lnbl9sZW4iLCJkX2xlbiIsImhfbGVuIiwibV9sZW4iLCJkaWdpdHNfbGVuIiwiZGVjaW1hbHNfbGVuIiwiZGVjaW1hbF91bml0X2xlbiIsInN0cmluZ19sZW5ndGgiLCJpbnQ2M18xMCIsIm1pbl9tdWx0MTBfd2l0aG91dF91bmRlcmZsb3ciLCJhZGRfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fZmFjdG9yX29mIiwibWluX2RheXNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5faG91cnNfd2l0aG91dF91bmRlcmZsb3ciLCJtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvdyIsIm1pbl9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93IiwibWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX21pY3Jvc2Vjb25kc193aXRob3V0X3VuZGVyIiwibWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmIiwibmVnX25zIiwicm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmciLCJoYXNfZGlnaXQiLCJlbmRfb2ZfZGlnaXRzIiwibmVnX2ludGVnZXIiLCJkZWNpbWFsX3BvcyIsImVuZF9vZl9kZWNpbWFscyIsImVuZF9wb3MiLCJtaW5fd2l0aG91dF91bmRlcmZsb3ciLCJuZWdfaW50ZWdlcl9ucyIsImZyYWN0aW9uX3BvcyIsIm5lZ19uYW5vc19vZl9wYXJ0IiwiZGVjaW1hbF9ucyIsInNpbmNlX3VuaXhfZXBvY2giLCJ0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJoYWxmX21pY3Jvc2Vjb25kIiwidG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwibWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yIiwib2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pIiwibWluX3ZhbHVlX3JlcHJlc2VudGFibGUiLCJtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSIsImlzX2ludmFsaWQiLCJvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQiLCJzdWJfZXhuIiwidG9fc3RyaW5nX3dpdGhfdW5pdCIsInNpeHR5IiwidGhvdXNhbmQiLCJ1bml0JDAiLCJudW1fZGlnaXRzIiwidG9fbWljcm9zZWNvbmRfc3RyaW5nIiwiZXZlcnkiLCJzdGFydCQxIiwidG9faW50NjNfbnNfc2luY2VfZXBvY2giLCJvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCIsIm92ZXJmbG93IiwiYWRkX292ZXJmbG93ZWQiLCJzdWJfb3ZlcmZsb3dlZCIsImFkZF9zYXR1cmF0aW5nIiwic3ViX3NhdHVyYXRpbmciLCJ0b19pbnRfbnNfc2luY2VfZXBvY2giLCJvZl9pbnRfbnNfc2luY2VfZXBvY2giLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJ0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW4iLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QiLCJvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWkiLCJ0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJuc19zaW5jZV9lcG9jaCIsIm5zX3Blcl9kYXkiLCJhcHByb3hfZGF5c19mcm9tX2Vwb2NoIiwibnNfc2luY2Vfc3RhcnRfb2ZfZGF5Iiwic3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkiLCJvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X28iLCJzcGFuX2luX2RheXNfc2luY2VfZXBvY2giLCJzcGFuX3NpbmNlX2Vwb2NoIiwidHdvX2RpZ2l0X29mX3N0cmluZyIsIm5zX29mXzEwMF9tcyIsIm5zX29mXzEwX21zIiwibnNfb2ZfMV9tcyIsIm5zX29mXzEwMF91cyIsIm5zX29mXzEwX3VzIiwibnNfb2ZfMV91cyIsIm5zX29mXzEwMF9ucyIsIm5zX29mXzEwX25zIiwibnNfb2ZfMV9ucyIsInNlY29uZHNfc3BhbiIsInN1Yl9zZWNvbmRfc3BhbiIsIm9mZGF5X3N0cmluZ193aXRoX3pvbmUiLCJkYXRlX3N0cmluZyIsIm9mZGF5X3N0cmluZyIsInN1ZmZpeF9sZW4iLCJzZWNvbmRzX3N0cmluZyIsInN1Yl9zZWNvbmRfc3RyaW5nIiwic19zdHJpbmciLCJtX3N0cmluZyIsImhfc3RyaW5nIiwibXVsdGlwbGllciIsImRheXNfZnJvbV9lcG9jaCQwIiwiZGF5c19mcm9tX2Vwb2NoX2luX25zIiwiYXR0ZW1wdCIsInNwYW5fb2ZfZHVyYXRpb24iLCJ0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQiLCJkdXJhdGlvbnMiLCJzcGFucyIsInN0cmluZ19ieXRlcyIsInNyY19wb3MiLCJzcmNfbGVuIiwiZHN0X3BvcyIsInNyY19wb3MkMCIsImJ5dGVzX2J5dGVzIiwic3RyaW5nX2JpZ3N0cmluZyIsImJ5dGVzX2JpZ3N0cmluZyIsImJpZ3N0cmluZ19iaWdzdHJpbmciLCJiaWdzdHJpbmdfc3RyaW5nIiwiYmlnc3RyaW5nX2J5dGVzIiwic2l6ZV8wMDkiLCJyYW5kb21fMDEwIiwic2l6ZV8wMDciLCJoYXNoXzAwOCIsImhhc2hfMDA4JDAiLCJoYXNoXzAwOCQxIiwiaGFzaF8wMDgkMiIsImJhc2VfbGVuIiwiZ2V0X25vX2JvdW5kc19jaGVjayIsImZvbGRpJDAiLCJ3cmFwX3N1Yl9uIiwib25fZXJyb3IiLCJibGl0X3RvIiwiYmxpdF90b19zdHJpbmciLCJibGl0X3RvX2J5dGVzIiwiYmxpdF90b19iaWdzdHJpbmciLCJibGl0X2Jhc2UiLCJibGl0X2Zyb20iLCJibGl0X2Zyb21fc3RyaW5nIiwiYmxpdF9mcm9tX2JpZ3N0cmluZyIsIm9mX2Jhc2UiLCJjb25jYXRfZ2VuIiwiY3JlYXRlX2RzdCIsImJsaXRfZHN0IiwidHMiLCJjb25jYXRfc3RyaW5nIiwiY29uY2F0X2JpZ3N0cmluZyIsInNvcnRfYW5kX2FsaWduIiwiY2hlY2tfc3VmZml4IiwiY2hvcF9leHRlbnNpb24iLCJjaG9wX3N1ZmZpeF9vcHQiLCJjdXJyZW50X2Rpcl9uYW1lIiwiaXNfaW1wbGljaXQiLCJpc19yZWxhdGl2ZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZSIsInRlbXBfZGlyX25hbWUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJpc19hYnNvbHV0ZSIsInAxIiwicDIiLCJzJDEiLCJzJDIiLCJ0b19hYnNvbHV0ZV9leG4iLCJyZWxhdGl2ZV90byIsIm1heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZSIsImlzX3Bvc2l4X3BhdGhuYW1lX2NvbXBvbmVudCIsInNwbGl0X2V4dGVuc2lvbiIsImZuIiwiZm4kMCIsImZuJDEiLCJkaXIiLCJleHQiLCJiYXNlX2ZuIiwiZXh0JDAiLCJmbiQyIiwiZGlyJDAiLCJmbiQzIiwicGFydHMiLCJmaWxlbmFtZSQwIiwiZmlsZW5hbWUkMSIsIm9mX2Fic29sdXRlX2V4biIsImFfcGFydHMiLCJiX3BhcnRzIiwiYV9zdWZmaXgiLCJiX3N1ZmZpeCIsImgyIiwiaDEiLCJnb191cCIsInJlbHBhdGgiLCJmbGFnX25hbWUiLCJlcnJvcl9zb3VyY2VfMDE3IiwiZXJyb3Jfc291cmNlXzA2MiIsImVycm9yX3NvdXJjZV8wOTkiLCJlcnJvcl9zb3VyY2VfMTM2IiwiZXJyb3Jfc291cmNlXzE3MSIsImVycm9yX3NvdXJjZV8yMTgiLCJlcnJvcl9zb3VyY2VfMjY5IiwiZXJyb3Jfc291cmNlXzMxOSIsImVycm9yX3NvdXJjZV8zNTYiLCJlcnJvcl9zb3VyY2VfMzg4IiwiZXJyb3Jfc291cmNlXzQxNSIsImVycm9yX3NvdXJjZV80NDQiLCJlcnJvcl9zb3VyY2VfNDc2IiwiZXJyb3Jfc291cmNlXzUwMSIsImVycm9yX3NvdXJjZV81MjYiLCJlcnJvcl9zb3VyY2VfNTY1IiwiZXJyb3Jfc291cmNlXzYxMCIsImVudW1lcmF0ZV82MjgiLCJlbnVtZXJhdGVfNjI5IiwibWF5YmVfbWlzc2luZ19wcmVmaXgiLCJtYXliZV9taXNzaW5nX3N1ZmZpeCIsIm1heWJlX21vcmVfc3VmZml4IiwibmFtZXMkMCIsImVycm9yX3NvdXJjZV82NjkiLCJpbmRlbnRhdGlvbiIsInNwYWNpbmdfZG90IiwibmFtZXMkMSIsImVycm9yX3NvdXJjZV83MDgiLCJuYW1lcyQyIiwiZXJyb3Jfc291cmNlXzc1NyIsIm5hbWVzJDMiLCJlcnJvcl9zb3VyY2VfODA3IiwiZXJyb3Jfc291cmNlXzgzOCIsImFfMDAxJDAiLCJiXzAwMiQwIiwidGFnXzAyMCIsInNleHBfYXJnc18wNDEiLCJhcmcwXzA0MiIsInNleHBfYXJnc18wMzYiLCJyZXMwXzAzOCIsInNleHBfYXJnc18wMjYiLCJzZXhwX2FyZ3NfMDMxIiwic2V4cF9hcmdzXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzA0NCIsInJlczBfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsImFyZzBfMDQ4IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzBfMDUyIiwidXNhZ2UiLCJ1c2FnZSQwIiwidXNhZ2UkMSIsImFfMDU0IiwiYl8wNTUiLCJhXzA1OCIsImJfMDU5Iiwic2V4cF8wNjQiLCJ0YWdfMDY1Iiwic2V4cF9hcmdzXzA2NiIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJzZXhwX2FyZ3NfMDcxIiwiYXJnMF8wNzIiLCJyZXMwXzA3MyIsImFyZzBfMDc0IiwicmVzMF8wNzUiLCJhcmcwXzA3NiIsInJlczBfMDc3Iiwidl9kb2MiLCJ2X2FsaWFzZXMiLCJhXzA3OCIsImJfMDc5IiwiYV8wODAiLCJiXzA4MSIsInNleHBfMDgzIiwiZmllbGRfc2V4cHNfMDg0IiwibmFtZV8wODUiLCJkb2NfMDg3IiwiYWxpYXNlc18wODkiLCJkdXBsaWNhdGVzXzA5MSIsImV4dHJhXzA5MiIsInNleHBfMDgzJDAiLCJmaWVsZF9zZXhwc18wOTUiLCJmaWVsZF9uYW1lXzA5MyIsInRhaWxfMTAxIiwiZmllbGRfc2V4cF8wOTQkMyIsImZpZWxkX3NleHBfMDk0IiwieF8xMDIiLCJmaWVsZF9zZXhwXzA5NCQwIiwiZnZhbHVlXzA5OCIsImZpZWxkX3NleHBfMDk0JDEiLCJmdmFsdWVfMDk3IiwiZmllbGRfc2V4cF8wOTQkMiIsImZ2YWx1ZV8wOTYiLCJhbGlhc2VzXzA5MCIsImRvY18wODgiLCJuYW1lXzA4NiIsImFsaWFzZXNfMTA4IiwiZG9jXzEwNiIsIm5hbWVfMTA0IiwiYXJnXzEwOSIsImJuZHNfMTAzIiwiYXJnXzEwNyIsImJuZHNfMTAzJDAiLCJhcmdfMTA1IiwiYm5kc18xMDMkMSIsInZfc3VtbWFyeSIsInZfcmVhZG1lIiwidl9hbm9ucyIsInZfZmxhZ3MiLCJhXzExMCIsImJfMTExIiwiYV8xMTIiLCJiXzExMyIsInNleHBfMTE3IiwiZmllbGRfc2V4cHNfMTE4Iiwic3VtbWFyeV8xMTkiLCJyZWFkbWVfMTIxIiwiYW5vbnNfMTIzIiwiZmxhZ3NfMTI1IiwiZHVwbGljYXRlc18xMjciLCJleHRyYV8xMjgiLCJzZXhwXzExNyQwIiwiZmllbGRfc2V4cHNfMTMxIiwiZmllbGRfbmFtZV8xMjkiLCJ0YWlsXzEzOCIsImZpZWxkX3NleHBfMTMwJDQiLCJmaWVsZF9zZXhwXzEzMCIsInhfMTM5IiwiZmllbGRfc2V4cF8xMzAkMCIsImZ2YWx1ZV8xMzUiLCJmaWVsZF9zZXhwXzEzMCQxIiwiZnZhbHVlXzEzNCIsImZpZWxkX3NleHBfMTMwJDIiLCJmdmFsdWVfMTMyIiwiZmllbGRfc2V4cF8xMzAkMyIsImZ2YWx1ZV8xMzMiLCJyZWFkbWVfMTIyIiwiZmxhZ3NfMTI2IiwiYW5vbnNfMTI0Iiwic3VtbWFyeV8xMjAiLCJmbGFnc18xNDkiLCJhbm9uc18xNDciLCJyZWFkbWVfMTQzIiwic3VtbWFyeV8xNDEiLCJhcmdfMTUwIiwiYm5kc18xNDAiLCJhcmdfMTQ4IiwiYm5kc18xNDAkMCIsInZfMTQ0IiwiYXJnXzE0NiIsImJuZF8xNDUiLCJibmRzXzE0MCQxIiwiYXJnXzE0MiIsImJuZHNfMTQwJDIiLCJiaW5fc2hhcGVfYSIsInZfc3ViY29tbWFuZHMiLCJhXzE4NiIsImJfMTg3IiwiYV8xODgiLCJiXzE4OSIsImFfMTkwIiwiYl8xOTEiLCJhXzE5MiIsImJfMTkzIiwidF8xOTUiLCJ0XzE5NCIsInRfMTk3IiwidF8xOTYiLCJvZl9hXzE5OCIsInNleHBfMjAwIiwiZmllbGRfc2V4cHNfMjAxIiwic3VtbWFyeV8yMDIiLCJyZWFkbWVfMjA0Iiwic3ViY29tbWFuZHNfMjA2IiwiZHVwbGljYXRlc18yMDgiLCJleHRyYV8yMDkiLCJzZXhwXzIwMCQwIiwiZmllbGRfc2V4cHNfMjEyIiwiZmllbGRfbmFtZV8yMTAiLCJ0YWlsXzIyMyIsImZpZWxkX3NleHBfMjExJDMiLCJmaWVsZF9zZXhwXzIxMSIsInhfMjI0IiwiZmllbGRfc2V4cF8yMTEkMCIsImZ2YWx1ZV8yMjEiLCJmaWVsZF9zZXhwXzIxMSQxIiwic2V4cF8yMTciLCJhcmcxXzIxNCIsImFyZzBfMjEzIiwicmVzMF8yMTUiLCJyZXMxXzIxNiIsImZ2YWx1ZV8yMTkiLCJmaWVsZF9zZXhwXzIxMSQyIiwiZnZhbHVlXzIyMCIsInJlYWRtZV8yMDUiLCJzdWJjb21tYW5kc18yMDciLCJzdW1tYXJ5XzIwMyIsIm9mX2FfMjI1Iiwic3ViY29tbWFuZHNfMjMzIiwicmVhZG1lXzIyOSIsInN1bW1hcnlfMjI3IiwiYm5kc18yMjYiLCJhcmcxXzIzNiIsImFyZzBfMjM1IiwicmVzMF8yMzciLCJyZXMxXzIzOCIsImFyZ18yMzQiLCJibmRzXzIyNiQwIiwidl8yMzAiLCJhcmdfMjMyIiwiYm5kXzIzMSIsImJuZHNfMjI2JDEiLCJhcmdfMjI4IiwiYm5kc18yMjYkMiIsIm9mX2FfMjQ5Iiwic2V4cF8yNTEiLCJmaWVsZF9zZXhwc18yNTIiLCJzdW1tYXJ5XzI1MyIsInJlYWRtZV8yNTUiLCJzdWJjb21tYW5kc18yNTciLCJkdXBsaWNhdGVzXzI1OSIsImV4dHJhXzI2MCIsInNleHBfMjUxJDAiLCJmaWVsZF9zZXhwc18yNjMiLCJmaWVsZF9uYW1lXzI2MSIsInRhaWxfMjc0IiwiZmllbGRfc2V4cF8yNjIkMyIsImZpZWxkX3NleHBfMjYyIiwieF8yNzUiLCJmaWVsZF9zZXhwXzI2MiQwIiwiZnZhbHVlXzI3MiIsImZpZWxkX3NleHBfMjYyJDEiLCJzZXhwXzI2OCIsImFyZzFfMjY1IiwiYXJnMF8yNjQiLCJyZXMwXzI2NiIsInJlczFfMjY3IiwiZnZhbHVlXzI3MCIsImZpZWxkX3NleHBfMjYyJDIiLCJmdmFsdWVfMjcxIiwicmVhZG1lXzI1NiIsInN1YmNvbW1hbmRzXzI1OCIsInN1bW1hcnlfMjU0Iiwib2ZfYV8yNzYiLCJzdWJjb21tYW5kc18yODQiLCJyZWFkbWVfMjgwIiwic3VtbWFyeV8yNzgiLCJibmRzXzI3NyIsImFyZzFfMjg3IiwiYXJnMF8yODYiLCJyZXMwXzI4OCIsInJlczFfMjg5IiwiYXJnXzI4NSIsImJuZHNfMjc3JDAiLCJ2XzI4MSIsImFyZ18yODMiLCJibmRfMjgyIiwiYm5kc18yNzckMSIsImFyZ18yNzkiLCJibmRzXzI3NyQyIiwidG9fbGF0ZXN0Iiwic3ViY29tbWFuZHMiLCJyZWFkbWUiLCJzdW1tYXJ5Iiwib2ZfbGF0ZXN0IiwiYWJzX3BhdGgiLCJ2X3dvcmtpbmdfZGlyIiwidl9wYXRoX3RvX2V4ZSIsInZfY2hpbGRfc3ViY29tbWFuZCIsImFfMjkwIiwiYl8yOTEiLCJhXzI5MiIsImJfMjkzIiwiYV8yOTQiLCJiXzI5NSIsInNleHBfMjk3IiwiZmllbGRfc2V4cHNfMjk4Iiwic3VtbWFyeV8yOTkiLCJyZWFkbWVfMzAxIiwid29ya2luZ19kaXJfMzAzIiwicGF0aF90b19leGVfMzA1IiwiY2hpbGRfc3ViY29tbWFuZF8zMDciLCJkdXBsaWNhdGVzXzMwOSIsImV4dHJhXzMxMCIsInNleHBfMjk3JDAiLCJmaWVsZF9zZXhwc18zMTMiLCJmaWVsZF9uYW1lXzMxMSIsInRhaWxfMzIxIiwiZmllbGRfc2V4cF8zMTIkNSIsImZpZWxkX3NleHBfMzEyIiwieF8zMjIiLCJmaWVsZF9zZXhwXzMxMiQwIiwiZnZhbHVlXzMxNiIsImZpZWxkX3NleHBfMzEyJDEiLCJmdmFsdWVfMzE4IiwiZmllbGRfc2V4cF8zMTIkMiIsImZ2YWx1ZV8zMTciLCJmaWVsZF9zZXhwXzMxMiQzIiwiZnZhbHVlXzMxNSIsImZpZWxkX3NleHBfMzEyJDQiLCJmdmFsdWVfMzE0IiwicmVhZG1lXzMwMiIsImNoaWxkX3N1YmNvbW1hbmRfMzA4IiwicGF0aF90b19leGVfMzA2Iiwid29ya2luZ19kaXJfMzA0Iiwic3VtbWFyeV8zMDAiLCJjaGlsZF9zdWJjb21tYW5kXzMzNCIsInBhdGhfdG9fZXhlXzMzMiIsIndvcmtpbmdfZGlyXzMzMCIsInJlYWRtZV8zMjYiLCJzdW1tYXJ5XzMyNCIsImFyZ18zMzUiLCJibmRzXzMyMyIsImFyZ18zMzMiLCJibmRzXzMyMyQwIiwiYXJnXzMzMSIsImJuZHNfMzIzJDEiLCJ2XzMyNyIsImFyZ18zMjkiLCJibmRfMzI4IiwiYm5kc18zMjMkMiIsImFyZ18zMjUiLCJibmRzXzMyMyQzIiwidG9fbGF0ZXN0JDAiLCJvZl9sYXRlc3QkMCIsImJpbl9zaGFwZV90JDciLCJ0b192MyIsIm9mX3YzIiwidG9fbGF0ZXN0JDEiLCJvZl9sYXRlc3QkMSIsImJpbl9zaGFwZV90JDgiLCJ0b192MiIsIm9mX3YyIiwidG9fbGF0ZXN0JDIiLCJvZl9sYXRlc3QkMiIsImJpbl9zaGFwZV90JDkiLCJhXzQwMSIsImJfNDAyIiwiYV80MDEkMCIsImJfNDAyJDAiLCJhXzQwMyIsImJfNDA0IiwiYV80MDUiLCJiXzQwNiIsImFfNDA3IiwiYl80MDgiLCJhXzQxMSIsImFfNDA5IiwiYl80MTIiLCJiXzQxMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF80MTciLCJ0YWdfNDE4Iiwic2V4cF9hcmdzXzQyNCIsImFyZzBfNDI1IiwicmVzMF80MjYiLCJzZXhwX2FyZ3NfNDI5IiwiYXJnMV80MzEiLCJhcmcwXzQzMCIsInJlczBfNDMyIiwicmVzMV80MzMiLCJzZXhwX2FyZ3NfNDE5IiwiYXJnMF80MjAiLCJyZXMwXzQyMSIsImFyZzBfNDM0IiwicmVzMF80MzUiLCJhcmcwXzQzNiIsInJlczBfNDM3IiwiYXJnMV80MzkiLCJhcmcwXzQzOCIsInJlczBfNDQwIiwicmVzMV80NDEiLCJiaW5fc2hhcGVfdCQxMCIsInRfb2Zfc2V4cCQ4Iiwic2V4cF80NDYiLCJ0YWdfNDQ3Iiwic2V4cF9hcmdzXzQ2MyIsImFyZzBfNDY0IiwicmVzMF80NjUiLCJzZXhwX2FyZ3NfNDUzIiwiYXJnMF80NTQiLCJyZXMwXzQ1NSIsInNleHBfYXJnc180NTgiLCJhcmcwXzQ1OSIsInJlczBfNDYwIiwic2V4cF9hcmdzXzQ0OCIsImFyZzBfNDQ5IiwicmVzMF80NTAiLCJzZXhwX29mX3QkNyIsImFyZzBfNDY2IiwicmVzMF80NjciLCJhcmcwXzQ2OCIsInJlczBfNDY5IiwiYXJnMF80NzAiLCJyZXMwXzQ3MSIsImFyZzBfNDcyIiwicmVzMF80NzMiLCJiaW5fc2hhcGVfdCQxMSIsInRfb2Zfc2V4cCQ5Iiwic2V4cF80NzgiLCJ0YWdfNDc5Iiwic2V4cF9hcmdzXzQ4NSIsImFyZzBfNDg2IiwicmVzMF80ODciLCJzZXhwX2FyZ3NfNDkwIiwiYXJnMF80OTEiLCJyZXMwXzQ5MiIsImZpZWxkX3NleHBzXzMzOCIsInN1bW1hcnlfMzM5IiwicmVhZG1lXzM0MSIsIndvcmtpbmdfZGlyXzM0MyIsInBhdGhfdG9fZXhlXzM0NSIsImR1cGxpY2F0ZXNfMzQ3IiwiZXh0cmFfMzQ4Iiwic2V4cF8zMzciLCJmaWVsZF9zZXhwc18zNTEiLCJmaWVsZF9uYW1lXzM0OSIsInRhaWxfMzU4IiwiZmllbGRfc2V4cF8zNTAkNCIsImZpZWxkX3NleHBfMzUwIiwieF8zNTkiLCJmaWVsZF9zZXhwXzM1MCQwIiwiZnZhbHVlXzM1MyIsImZpZWxkX3NleHBfMzUwJDEiLCJmdmFsdWVfMzU1IiwiZmllbGRfc2V4cF8zNTAkMiIsImZ2YWx1ZV8zNTQiLCJmaWVsZF9zZXhwXzM1MCQzIiwiZnZhbHVlXzM1MiIsInJlYWRtZV8zNDIiLCJwYXRoX3RvX2V4ZV8zNDYiLCJ3b3JraW5nX2Rpcl8zNDQiLCJzdW1tYXJ5XzM0MCIsInNleHBfYXJnc180ODAiLCJhcmcwXzQ4MSIsInJlczBfNDgyIiwic2V4cF9vZl90JDgiLCJhcmcwXzQ5MyIsInJlczBfNDk0IiwiYXJnMF80OTUiLCJyZXMwXzQ5NiIsImFyZzBfNDk3IiwicGF0aF90b19leGVfMzY5Iiwid29ya2luZ19kaXJfMzY3IiwicmVhZG1lXzM2MyIsInN1bW1hcnlfMzYxIiwiYXJnXzM3MCIsImJuZHNfMzYwIiwiYXJnXzM2OCIsImJuZHNfMzYwJDAiLCJ2XzM2NCIsImFyZ18zNjYiLCJibmRfMzY1IiwiYm5kc18zNjAkMSIsImFyZ18zNjIiLCJibmRzXzM2MCQyIiwicmVzMF80OTgiLCJ0b19sYXRlc3QkMyIsImciLCJvZl9sYXRlc3QkMyIsInRodW5rIiwiYmluX3NoYXBlX3QkMTIiLCJ0X29mX3NleHAkMTAiLCJzZXhwXzUwMyIsInRhZ181MDQiLCJzZXhwX2FyZ3NfNTEwIiwiYXJnMF81MTEiLCJyZXMwXzUxMiIsInNleHBfYXJnc181MTUiLCJhcmcwXzUxNiIsInJlczBfNTE3IiwiZmllbGRfc2V4cHNfMzczIiwic3VtbWFyeV8zNzQiLCJyZWFkbWVfMzc2IiwicGF0aF90b19leGVfMzc4IiwiZHVwbGljYXRlc18zODAiLCJleHRyYV8zODEiLCJzZXhwXzM3MiIsImZpZWxkX3NleHBzXzM4NCIsImZpZWxkX25hbWVfMzgyIiwidGFpbF8zOTAiLCJmaWVsZF9zZXhwXzM4MyQzIiwiZmllbGRfc2V4cF8zODMiLCJ4XzM5MSIsImZpZWxkX3NleHBfMzgzJDAiLCJmdmFsdWVfMzg3IiwiZmllbGRfc2V4cF8zODMkMSIsImZ2YWx1ZV8zODYiLCJmaWVsZF9zZXhwXzM4MyQyIiwiZnZhbHVlXzM4NSIsInJlYWRtZV8zNzciLCJwYXRoX3RvX2V4ZV8zNzkiLCJzdW1tYXJ5XzM3NSIsInNleHBfYXJnc181MDUiLCJhcmcwXzUwNiIsInJlczBfNTA3IiwiZmllbGRfc2V4cHNfMTUzIiwic3VtbWFyeV8xNTQiLCJyZWFkbWVfMTU2IiwidXNhZ2VfMTU4IiwiZmxhZ3NfMTYwIiwiZHVwbGljYXRlc18xNjIiLCJleHRyYV8xNjMiLCJzZXhwXzE1MiIsImZpZWxkX3NleHBzXzE2NiIsImZpZWxkX25hbWVfMTY0IiwidGFpbF8xNzMiLCJmaWVsZF9zZXhwXzE2NSQ0IiwiZmllbGRfc2V4cF8xNjUiLCJmaWVsZF9zZXhwXzE2NSQwIiwiZnZhbHVlXzE2OCIsImZpZWxkX3NleHBfMTY1JDEiLCJmdmFsdWVfMTcwIiwiZmllbGRfc2V4cF8xNjUkMiIsImZ2YWx1ZV8xNjkiLCJmaWVsZF9zZXhwXzE2NSQzIiwiZnZhbHVlXzE2NyIsInJlYWRtZV8xNTciLCJmbGFnc18xNjEiLCJ1c2FnZV8xNTkiLCJzdW1tYXJ5XzE1NSIsInNleHBfb2ZfdCQ5IiwiYXJnMF81MTgiLCJmbGFnc18xODQiLCJ1c2FnZV8xODIiLCJyZWFkbWVfMTc4Iiwic3VtbWFyeV8xNzYiLCJhcmdfMTg1IiwiYm5kc18xNzUiLCJhcmdfMTgzIiwiYm5kc18xNzUkMCIsInZfMTc5IiwiYXJnXzE4MSIsImJuZF8xODAiLCJibmRzXzE3NSQxIiwiYXJnXzE3NyIsImJuZHNfMTc1JDIiLCJyZXMwXzUxOSIsImFyZzBfNTIwIiwicmVzMF81MjEiLCJhcmcwXzUyMiIsInBhdGhfdG9fZXhlXzM5OSIsInJlYWRtZV8zOTUiLCJzdW1tYXJ5XzM5MyIsImFyZ180MDAiLCJibmRzXzM5MiIsInZfMzk2IiwiYXJnXzM5OCIsImJuZF8zOTciLCJibmRzXzM5MiQwIiwiYXJnXzM5NCIsImJuZHNfMzkyJDEiLCJyZXMwXzUyMyIsInRvX2xhdGVzdCQ0IiwiZmxhZ3MiLCJvZl9sYXRlc3QkNCIsImFub25zIiwiYmluX3NoYXBlX3QkMTMiLCJ0X29mX3NleHAkMTEiLCJzZXhwXzUyOCIsInRhZ181MjkiLCJzZXhwX2FyZ3NfNTQwIiwiYXJnMF81NDEiLCJyZXMwXzU0MiIsInNleHBfYXJnc181MzUiLCJhcmcwXzUzNiIsInJlczBfNTM3Iiwic2V4cF9hcmdzXzUzMCIsImFyZzBfNTMxIiwicmVzMF81MzIiLCJzZXhwX29mX3QkMTAiLCJhcmcwXzU0MyIsInJlczBfNTQ0IiwiYXJnMF81NDUiLCJyZXMwXzU0NiIsImFyZzBfNTQ3IiwicmVzMF81NDgiLCJvZl92ZXJzaW9uZWQiLCJncm91cCQxNSIsImJpbl9zaGFwZV90JDE0IiwiY29tcGFyZSQ2IiwiYV81NDkiLCJiXzU1MCIsImFfNTQ5JDAiLCJiXzU1MCQwIiwiYV81NTEiLCJiXzU1MiIsImFfNTUzIiwiYl81NTQiLCJhXzU1NSIsImJfNTU2IiwiYV81NTciLCJiXzU1OCIsImFfNTU5IiwiYl81NjAiLCJhXzU2MSIsImJfNTYyIiwidF9vZl9zZXhwJDEyIiwic2V4cF81NjciLCJ0YWdfNTY4Iiwic2V4cF9hcmdzXzU4OSIsImFyZzBfNTkwIiwicmVzMF81OTEiLCJzZXhwX2FyZ3NfNTg0IiwiYXJnMF81ODUiLCJyZXMwXzU4NiIsInNleHBfYXJnc181NzQiLCJhcmcwXzU3NSIsInJlczBfNTc2Iiwic2V4cF9hcmdzXzU3OSIsImFyZzBfNTgwIiwicmVzMF81ODEiLCJzZXhwX2FyZ3NfNTY5IiwiYXJnMF81NzAiLCJyZXMwXzU3MSIsInNleHBfb2ZfdCQxMSIsImFyZzBfNTkyIiwicmVzMF81OTMiLCJhcmcwXzU5NCIsInJlczBfNTk1IiwiYXJnMF81OTYiLCJyZXMwXzU5NyIsImFyZzBfNTk4IiwicmVzMF81OTkiLCJhcmcwXzYwMCIsInJlczBfNjAxIiwiZ3JvdXAkMTYiLCJiaW5fc2hhcGVfdCQxNSIsImNvbXBhcmUkNyIsImFfNjAyIiwiYl82MDMiLCJhXzYwNCIsImJfNjA1IiwiYV82MDYiLCJiXzYwNyIsInNleHBfb2ZfdCQxMiIsImFyZzBfNjIyIiwicmVzMF82MjMiLCJhcmcwXzYyNCIsInJlczBfNjI1IiwiY29tcGFyZSQ4IiwiYV82MjYiLCJiXzYyNyIsImVudW1lcmF0ZV82MzIiLCJlbnVtZXJhdGVfNjMzIiwiZW51bWVyYXRlXzYzMSIsImVudW1lcmF0ZV82MzQiLCJlbnVtZXJhdGVfNjMwIiwiZW51bWVyYXRlXzYzNCQwIiwiYXRfbW9zdF9vbmNlIiwiYXRfbGVhc3Rfb25jZSIsImF0X21vc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZSQwIiwiYXRfbGVhc3Rfb25jZV9mdW4iLCJhdF9tb3N0X29uY2VfZnVuIiwiYXRfbGVhc3Rfb25jZV9nZW4iLCJhdF9tb3N0X29uY2VfZ2VuIiwic2V4cF9vZl90JDEzIiwiYXRfbW9zdF9vbmNlXzYzOCIsImF0X2xlYXN0X29uY2VfNjM2IiwiYXJnXzYzOSIsImJuZHNfNjM1IiwiYXJnXzYzNyIsImJuZHNfNjM1JDAiLCJ0b19oZWxwX3N0cmluZyIsImRlc2NyaXB0aW9uIiwib2ZfaGVscF9zdHJpbmciLCJ4XzY0MCIsImZsYWdfbmFtZSQwIiwieF82NDEiLCJncm91cCQxNyIsImJpbl9zaGFwZV90JDE2IiwiYmluX3NpemVfdCQ3IiwiYmluX3dyaXRlX3QkNyIsImJpbl93cml0ZXJfdCQ2IiwiYmluX3JlYWRfdCQxNCIsImJpbl9yZWFkX3QkMTUiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl90JDYiLCJjb21wYXJlJDkiLCJhXzY0OCIsImJfNjQ5IiwiYV82NTAiLCJiXzY1MSIsImFsaWFzZXMiLCJkb2MiLCJhbGlhc2VzJDAiLCJkb2MkMCIsIm1ha2VfY3JlYXRvciQwIiwibmFtZV9mdW4iLCJkb2NfZnVuIiwiYWxpYXNlc19mdW4iLCJuYW1lX2dlbiIsImRvY19nZW4iLCJhbGlhc2VzX2dlbiIsIm1hcF9wb2x5JDAiLCJtYXAkNCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInRfb2Zfc2V4cCQxMyIsInNleHBfNjUzIiwiZmllbGRfc2V4cHNfNjU0IiwibmFtZV82NTUiLCJkb2NfNjU3IiwiYWxpYXNlc182NTkiLCJkdXBsaWNhdGVzXzY2MSIsImV4dHJhXzY2MiIsInNleHBfNjUzJDAiLCJmaWVsZF9zZXhwc182NjUiLCJmaWVsZF9uYW1lXzY2MyIsInRhaWxfNjcxIiwiZmllbGRfc2V4cF82NjQkMyIsImZpZWxkX3NleHBfNjY0IiwieF82NzIiLCJmaWVsZF9zZXhwXzY2NCQwIiwiZnZhbHVlXzY2OCIsImZpZWxkX3NleHBfNjY0JDEiLCJmdmFsdWVfNjY3IiwiZmllbGRfc2V4cF82NjQkMiIsImZ2YWx1ZV82NjYiLCJhbGlhc2VzXzY2MCIsImRvY182NTgiLCJuYW1lXzY1NiIsInNleHBfb2ZfdCQxNCIsImFsaWFzZXNfNjc4IiwiZG9jXzY3NiIsIm5hbWVfNjc0IiwiYXJnXzY3OSIsImJuZHNfNjczIiwiYXJnXzY3NyIsImJuZHNfNjczJDAiLCJhcmdfNjc1IiwiYm5kc182NzMkMSIsInBhcnNlX25hbWUiLCJudW1fb2NjdXJyZW5jZXMiLCJyZXF1aXJlc19hcmciLCJoZWxwX3NjcmVlbl9jb21wYXJlIiwid29yZF93cmFwX2FuZF9zdHJpcCIsIndpZHRoIiwiY2h1bmtzIiwid29yZCIsIndvcmRzIiwibGluZXMiLCJsaW5lX2FuZF93b3JkIiwic3BhY2VzX3N0cmluZyIsInBhZF9zcGFjZXNfdG9fc3VmZml4Iiwic2xhY2siLCJpbmRlbnRfYW5kX25ld2xpbmUiLCJsaHNfcGFkIiwiZG90X2luZGVudGF0aW9uX29mZnNldCIsImZsYWciLCJmbGFnX25hbWVfd2l0aF9hbGlhc2VzIiwiZG9jdW1lbnRhdGlvbiIsImZsYWdfd2lkdGgiLCJmbGFnX29uX2l0c19vd25fbGluZSIsIndyYXBwZWRfZG9jdW1lbnRhdGlvbiIsImRvY193cmFwcGVkX3Jlc3RfbGluZXMiLCJkb2Nfd3JhcHBlZF9maXJzdF9saW5lIiwid3JhcHBlZF9kb2NfbGluZXMiLCJwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV8iLCJsb29rdXBfZXhwYW5kIiwia2V5X3R5cGUiLCJpc19kYXNoIiwiYWxpc3QkMCIsIm1hdGNoZXMiLCJjdXN0b21fcHJpbnRmXzY4MCIsIm1hdGNoaW5nX2tleXMiLCJjdXN0b21fcHJpbnRmXzY4MSIsImdyb3VwJDE4IiwiYmluX3NoYXBlX3QkMTciLCJiaW5fc2l6ZV90JDgiLCJiaW5fd3JpdGVfdCQ4IiwiYmluX3dyaXRlcl90JDciLCJiaW5fcmVhZF90JDE2IiwiYmluX3JlYWRfdCQxNyIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3QkNyIsImNvbXBhcmUkMTAiLCJhXzY4MiIsImJfNjgzIiwiYV82ODQiLCJiXzY4NSIsImFfNjg2IiwiYl82ODciLCJmbGFncyQwIiwiYW5vbnMkMCIsInJlYWRtZSQwIiwic3VtbWFyeSQwIiwibWFrZV9jcmVhdG9yJDEiLCJzdW1tYXJ5X2Z1biIsInJlYWRtZV9mdW4iLCJhbm9uc19mdW4iLCJmbGFnc19mdW4iLCJzdW1tYXJ5X2dlbiIsInJlYWRtZV9nZW4iLCJhbm9uc19nZW4iLCJmbGFnc19nZW4iLCJtYXAkNSIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDYiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJ0X29mX3NleHAkMTQiLCJzZXhwXzY4OSIsImZpZWxkX3NleHBzXzY5MCIsInN1bW1hcnlfNjkxIiwicmVhZG1lXzY5MyIsImFub25zXzY5NSIsImZsYWdzXzY5NyIsImR1cGxpY2F0ZXNfNjk5IiwiZXh0cmFfNzAwIiwic2V4cF82ODkkMCIsImZpZWxkX3NleHBzXzcwMyIsImZpZWxkX25hbWVfNzAxIiwidGFpbF83MTAiLCJmaWVsZF9zZXhwXzcwMiQ0IiwiZmllbGRfc2V4cF83MDIiLCJ4XzcxMSIsImZpZWxkX3NleHBfNzAyJDAiLCJmdmFsdWVfNzA3IiwiZmllbGRfc2V4cF83MDIkMSIsImZ2YWx1ZV83MDYiLCJmaWVsZF9zZXhwXzcwMiQyIiwiZnZhbHVlXzcwNCIsImZpZWxkX3NleHBfNzAyJDMiLCJmdmFsdWVfNzA1IiwidGFnXzYxMyIsInNleHBfYXJnc182MTQiLCJhcmcwXzYxNSIsInJlczBfNjE2Iiwic2V4cF9hcmdzXzYxOSIsImFyZzBfNjIwIiwicmVzMF82MjEiLCJyZWFkbWVfNjk0IiwiZmxhZ3NfNjk4IiwiYW5vbnNfNjk2Iiwic3VtbWFyeV82OTIiLCJzZXhwX29mX3QkMTUiLCJmbGFnc183MjEiLCJhbm9uc183MTkiLCJyZWFkbWVfNzE1Iiwic3VtbWFyeV83MTMiLCJhcmdfNzIyIiwiYm5kc183MTIiLCJhcmdfNzIwIiwiYm5kc183MTIkMCIsInZfNzE2IiwiYXJnXzcxOCIsImJuZF83MTciLCJibmRzXzcxMiQxIiwiYXJnXzcxNCIsImJuZHNfNzEyJDIiLCJmaW5kX2ZsYWciLCJjaG9pY2VzIiwiZmxhZ19pbmZvIiwiZ2V0X3VzYWdlIiwiZ3JvdXAkMTkiLCJiaW5fc2hhcGVfdCQxOCIsImJpbl9zaXplX3QkOSIsImJpbl93cml0ZV90JDkiLCJiaW5fd3JpdGVyX3QkOCIsImJpbl9yZWFkX3QkMTgiLCJiaW5fcmVhZF90JDE5IiwiYmluX3JlYWRlcl90JDgiLCJiaW5fdCQ4IiwiY29tcGFyZSQxMSIsImFfNzI1IiwiYl83MjYiLCJhXzcyNyIsImJfNzI4IiwiYV83MjkiLCJiXzczMCIsImFfNzMxIiwiYl83MzIiLCJ0XzczNCIsInRfNzMzIiwidF83MzYiLCJ0XzczNSIsInJlYWRtZSQxIiwic3VtbWFyeSQxIiwic3ViY29tbWFuZHMkMCIsInJlYWRtZSQyIiwic3VtbWFyeSQyIiwibWFrZV9jcmVhdG9yJDIiLCJzdWJjb21tYW5kc19mdW4iLCJzdWJjb21tYW5kc19nZW4iLCJjcmVhdGUkMiIsIm1hcCQ3IiwiaXRlciQ1IiwiZm9sZCQ1IiwibWFwX3BvbHkkMiIsImZvcl9hbGwkNSIsImV4aXN0cyQ1IiwidG9fbGlzdCQ1IiwiaXRlciQ2IiwiZm9sZCQ2IiwiZm9yX2FsbCQ2IiwiZXhpc3RzJDYiLCJ0b19saXN0JDYiLCJtYXAkOCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMiIsInRfb2Zfc2V4cCQxNSIsIm9mX2FfNzM3Iiwic2V4cF83MzkiLCJmaWVsZF9zZXhwc183NDAiLCJzdW1tYXJ5Xzc0MSIsInJlYWRtZV83NDMiLCJzdWJjb21tYW5kc183NDUiLCJkdXBsaWNhdGVzXzc0NyIsImV4dHJhXzc0OCIsInNleHBfNzM5JDAiLCJmaWVsZF9zZXhwc183NTEiLCJmaWVsZF9uYW1lXzc0OSIsInRhaWxfNzYyIiwiZmllbGRfc2V4cF83NTAkMyIsImZpZWxkX3NleHBfNzUwIiwieF83NjMiLCJmaWVsZF9zZXhwXzc1MCQwIiwiZnZhbHVlXzc2MCIsImZpZWxkX3NleHBfNzUwJDEiLCJzZXhwXzc1NiIsImFyZzFfNzUzIiwiYXJnMF83NTIiLCJyZXMwXzc1NCIsInJlczFfNzU1IiwiZnZhbHVlXzc1OCIsImZpZWxkX3NleHBfNzUwJDIiLCJmdmFsdWVfNzU5IiwicmVhZG1lXzc0NCIsInN1YmNvbW1hbmRzXzc0NiIsInN1bW1hcnlfNzQyIiwic2V4cF9vZl90JDE2Iiwib2ZfYV83NjQiLCJzdWJjb21tYW5kc183NzIiLCJyZWFkbWVfNzY4Iiwic3VtbWFyeV83NjYiLCJibmRzXzc2NSIsImFyZzFfNzc1IiwiYXJnMF83NzQiLCJyZXMwXzc3NiIsInJlczFfNzc3IiwiYXJnXzc3MyIsImJuZHNfNzY1JDAiLCJ2Xzc2OSIsImFyZ183NzEiLCJibmRfNzcwIiwiYm5kc183NjUkMSIsImFyZ183NjciLCJibmRzXzc2NSQyIiwiZmluZF9zdWJjb21tYW5kIiwiZ3JvdXAkMjAiLCJiaW5fc2hhcGVfdCQxOSIsImJpbl9zaXplX3QkMTAiLCJiaW5fd3JpdGVfdCQxMCIsImJpbl93cml0ZXJfdCQ5IiwiYmluX3JlYWRfdCQyMCIsImJpbl9yZWFkX3QkMjEiLCJiaW5fcmVhZGVyX3QkOSIsImJpbl90JDkiLCJjb21wYXJlJDEyIiwiYV83NzgiLCJiXzc3OSIsImFfNzgwIiwiYl83ODEiLCJhXzc4MiIsImJfNzgzIiwiY2hpbGRfc3ViY29tbWFuZCIsInBhdGhfdG9fZXhlIiwid29ya2luZ19kaXIiLCJyZWFkbWUkMyIsInN1bW1hcnkkMyIsImNoaWxkX3N1YmNvbW1hbmQkMCIsInBhdGhfdG9fZXhlJDAiLCJ3b3JraW5nX2RpciQwIiwicmVhZG1lJDQiLCJzdW1tYXJ5JDQiLCJtYWtlX2NyZWF0b3IkMyIsIndvcmtpbmdfZGlyX2Z1biIsInBhdGhfdG9fZXhlX2Z1biIsImNoaWxkX3N1YmNvbW1hbmRfZnVuIiwid29ya2luZ19kaXJfZ2VuIiwicGF0aF90b19leGVfZ2VuIiwiY2hpbGRfc3ViY29tbWFuZF9nZW4iLCJjcmVhdGUkMyIsIm1hcCQ5IiwiaXRlciQ3IiwiZm9sZCQ3IiwibWFwX3BvbHkkMyIsImZvcl9hbGwkNyIsImV4aXN0cyQ3IiwidG9fbGlzdCQ3IiwiaXRlciQ4IiwiZm9sZCQ4IiwiZm9yX2FsbCQ4IiwiZXhpc3RzJDgiLCJ0b19saXN0JDgiLCJtYXAkMTAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDMiLCJ0X29mX3NleHAkMTYiLCJzZXhwXzc4NSIsImZpZWxkX3NleHBzXzc4NiIsInN1bW1hcnlfNzg3IiwicmVhZG1lXzc4OSIsIndvcmtpbmdfZGlyXzc5MSIsInBhdGhfdG9fZXhlXzc5MyIsImNoaWxkX3N1YmNvbW1hbmRfNzk1IiwiZHVwbGljYXRlc183OTciLCJleHRyYV83OTgiLCJzZXhwXzc4NSQwIiwiZmllbGRfc2V4cHNfODAxIiwiZmllbGRfbmFtZV83OTkiLCJ0YWlsXzgwOSIsImZpZWxkX3NleHBfODAwJDUiLCJmaWVsZF9zZXhwXzgwMCIsInhfODEwIiwiZmllbGRfc2V4cF84MDAkMCIsImZ2YWx1ZV84MDQiLCJmaWVsZF9zZXhwXzgwMCQxIiwiZnZhbHVlXzgwNiIsImZpZWxkX3NleHBfODAwJDIiLCJmdmFsdWVfODA1IiwiZmllbGRfc2V4cF84MDAkMyIsImZ2YWx1ZV84MDMiLCJmaWVsZF9zZXhwXzgwMCQ0IiwiZnZhbHVlXzgwMiIsInJlYWRtZV83OTAiLCJjaGlsZF9zdWJjb21tYW5kXzc5NiIsInBhdGhfdG9fZXhlXzc5NCIsIndvcmtpbmdfZGlyXzc5MiIsInN1bW1hcnlfNzg4Iiwic2V4cF9vZl90JDE3IiwiY2hpbGRfc3ViY29tbWFuZF84MjIiLCJwYXRoX3RvX2V4ZV84MjAiLCJ3b3JraW5nX2Rpcl84MTgiLCJyZWFkbWVfODE0Iiwic3VtbWFyeV84MTIiLCJhcmdfODIzIiwiYm5kc184MTEiLCJhcmdfODIxIiwiYm5kc184MTEkMCIsImFyZ184MTkiLCJibmRzXzgxMSQxIiwidl84MTUiLCJhcmdfODE3IiwiYm5kXzgxNiIsImJuZHNfODExJDIiLCJhcmdfODEzIiwiYm5kc184MTEkMyIsImdyb3VwJDIxIiwiYmluX3NoYXBlX3QkMjAiLCJiaW5fc2l6ZV90JDExIiwiYmluX3dyaXRlX3QkMTEiLCJiaW5fd3JpdGVyX3QkMTAiLCJiaW5fcmVhZF90JDIyIiwiYmluX3JlYWRfdCQyMyIsImJpbl9yZWFkZXJfdCQxMCIsImJpbl90JDEwIiwiY29tcGFyZSQxMyIsImFfODI0IiwiYl84MjUiLCJhXzgyNCQwIiwiYl84MjUkMCIsImFfODI2IiwiYl84MjciLCJhXzgyOCIsImJfODI5IiwiYV84MzAiLCJiXzgzMSIsImFfODM0IiwiYV84MzIiLCJiXzgzNSIsImJfODMzIiwidF9vZl9zZXhwJDE3Iiwic2V4cF84NDAiLCJ0YWdfODQxIiwic2V4cF9hcmdzXzg0NyIsImFyZzBfODQ4IiwicmVzMF84NDkiLCJzZXhwX2FyZ3NfODUyIiwiYXJnMV84NTQiLCJhcmcwXzg1MyIsInJlczBfODU1IiwicmVzMV84NTYiLCJzZXhwX2FyZ3NfODQyIiwiYXJnMF84NDMiLCJyZXMwXzg0NCIsInNleHBfb2ZfdCQxOCIsImFyZzBfODU3IiwicmVzMF84NTgiLCJhcmcwXzg1OSIsInJlczBfODYwIiwiYXJnMV84NjIiLCJhcmcwXzg2MSIsInJlczBfODYzIiwicmVzMV84NjQiLCJleHBhbmRlZF9zdWJjb21tYW5kcyIsImV4cGFuZCIsInNleHBfb2ZfdCQxOSIsImFyZzBfODY1IiwicmVzMF84NjYiLCJhcmcwXzg2NyIsInJlczBfODY4IiwiYXJnMF84NjkiLCJyZXMwXzg3MCIsImFyZzBfODcxIiwicmVzMF84NzIiLCJleHRyYWN0aW9uX3ZhciIsInN1cHBvcnRlZCIsInN1cHBvcnRlZF92ZXJzaW9ucyIsInRvX3ZlcnNpb25lZCIsImxhdGVzdCIsInZlcnNpb25fdG9fdXNlIiwiZnVsbHlfZm9yY2VkIiwiZ2V0X3N1bW1hcnkiLCJleHBlY3QiLCJleHBlY3QkMCIsImVycm9yX3NvdXJjZV8wMDciLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMxXzAxMSIsImhhc2hfMDIxIiwieF8wMTkiLCJ4XzAxOCIsImhhc2hfMDIxJDAiLCJoYXNoXzAyMSQxIiwidG9fc2VyaWFsaXphYmxlIiwicG9ydCIsImhvc3QiLCJvZl9zZXJpYWxpemFibGUiLCJwb3J0JDAiLCJnb3QiLCJhXzAyNCIsImJfMDI1IiwiZ290JDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJhXzAyNiIsImJfMDI3IiwiYV8wMjgiLCJiXzAyOSIsInR1cGxlIiwibl9mcm9udCIsIm5fYmFjayIsImZyb250IiwiYmFjayIsInJldl9iYWNrIiwiZnJvbnQkMCIsInJldl9mcm9udCIsImJhY2skMCIsInJhaXNlX2Zyb250X2ludmFyaWFudCIsInJhaXNlX2JhY2tfaW52YXJpYW50IiwicGVla19mcm9udF9leG4iLCJwZWVrX2JhY2tfZXhuIiwiZHJvcF9mcm9udF9leG4iLCJkcm9wX2JhY2tfZXhuIiwib3B0aW9uYWwiLCJwZWVrX2Zyb250IiwicGVla19iYWNrIiwicGVlayIsInBlZWtfZXhuIiwiZHJvcF9leG4iLCJpbml0JDAiLCJzb21lX3giLCJzb21lX3kiLCJidWlsZCIsIm9mX2Zvcm1hdCIsInRvX2Zvcm1hdCIsInNldF9hdCIsInNldF9pbnRlcm5hbCIsInNldF9pZl9ub25lIiwic2V0X2V4biIsImdldF9leG4iLCJ2ZXJzaW9uX2xpc3QiLCJlbnVtZXJhdGVfMDA4IiwiZW51bWVyYXRlXzAwOSIsImFueSIsImV4YWN0bHlfb25jZSIsInJhaXNlX2luc3RlYWRfb2ZfZXhpdCIsInN0YXR1c18wMDIiLCJhcmdfMDAzIiwiZXhpdCIsInN0YXR1cyIsInVucGFyYWdyYXBocyIsImRpZSIsImtleV9jcmVhdGUiLCJtdWx0aV9hZGQiLCJzZXRfd2l0aF9kZWZhdWx0IiwicnVuX2FuZF9leGl0IiwiZW52IiwicGFydCIsImNvbXBsZXRpb25zIiwiZXh0cmFfZG9jIiwiY29tcGxldGUiLCJvZl9sYXp5IiwiZXh0cmFfZG9jJDAiLCJob3N0X2FuZF9wb3J0Iiwic2V4cF9jb252IiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyQwIiwibGlzdF92YWx1ZXNfaW5faGVscCQwIiwiYXV0b19jb21wbGV0ZSIsImNhc2Vfc2Vuc2l0aXZlIiwiYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyIsImxpc3RfdmFsdWVzX2luX2hlbHAiLCJkdXBsaWNhdGVfa2V5cyIsIlMiLCJ1bml2X21hcCIsInZhbGlkX2FyZ3VtZW50c19leHRyYSIsIm9mX21hcCIsImVudW1lcmF0ZWQiLCJFIiwiZW51bWVyYXRlZF9zZXhwYWJsZSIsImNvbW1hX3NlcGFyYXRlZCIsImFsbG93X2VtcHR5Iiwic3RyaXBfd2hpdGVzcGFjZSIsInVuaXF1ZV92YWx1ZXMiLCJjb21wbGV0ZV9lbHQiLCJoZCIsInByZWZpeGVzIiwic2Vlbl9hbHJlYWR5IiwiaXNfYWxsb3dlZCIsImNob2ljZSIsImNob2ljZXMkMCIsInN0cmluZyQwIiwicGFyc2UkMCIsImVudW1lcmF0ZV8wMTIiLCJlbnVtZXJhdGVfMDEzIiwiZW51bWVyYXRlXzAxMSIsImVudW1lcmF0ZV8wMTQiLCJlbnVtZXJhdGVfMDEwIiwiZW51bWVyYXRlXzAxNCQwIiwicGFyc2UkMSIsImFjdGlvbiIsImFyZ19kb2MiLCJkb2MkMSIsImFyZ19kb2MkMCIsIndyYXBfaWZfb3B0aW9uYWwiLCJoZWxwIiwiYWxpZ24iLCJhcmdfZmxhZyIsImFyZ190eXBlIiwid3JpdGUiLCJhcmckMCIsImVudiQwIiwibWFwX2ZsYWciLCJ3cml0ZV9vcHRpb24iLCJyZXF1aXJlZF92YWx1ZSIsIm9wdGlvbmFsX3dpdGhfZGVmYXVsdCIsIm5vX2FyZ19nZW5lcmFsIiwia2V5X3ZhbHVlIiwiZGVwcmVjYXRlZF9ob29rIiwiYWN0aW9uJDAiLCJub19hcmciLCJub19hcmdfcmVnaXN0ZXIiLCJub19hcmdfc29tZSIsImxpc3RlZCIsIm9uZV9vcl9tb3JlX2FzX3BhaXIiLCJxIiwib25lX29yX21vcmVfYXNfbGlzdCIsImVzY2FwZV9nZW5lcmFsIiwiY21kX2xpbmUiLCJub19hcmdfYWJvcnQiLCJlc2NhcGUiLCJub19hcmckMCIsImhvb2siLCJlc2NhcGUkMCIsInN1YmNvbW1hbmQiLCJwYXJ0c19leGVfYmFzZW5hbWUiLCJyZXBsYWNlX2ZpcnN0IiwicGFydHMkMiIsInBhcnRzJDAiLCJwYXJ0cyQxIiwidG9fc3RyaW5nX2RvdHMiLCJpc19maXhlZF9hcml0eSIsIm90aGVycyIsImNvbmNhdCQwIiwiY2RyIiwiY2FyIiwiY2RyJDAiLCJjYXIkMCIsInBhY2tfZm9yX2NvbXBsZXRpb24iLCJwcyIsInBhcnNlX21vcmUiLCJmb3JfY29tcGxldGlvbiIsInVwZGF0ZV9lbnYiLCJwYXJzZXIiLCJ0X2xlZnQiLCJ0X3JpZ2h0IiwibW9yZSQwIiwidGVzdCQwIiwiYW5vbiIsImxvb3AiLCJjb25zdW1lIiwidCQyIiwidXBkYXRlX2VudiQwIiwicGFyc2VfZmxhZ3MiLCJwYXJzZXIkMCIsInQkMyIsInQzIiwiYTMiLCJ0NCIsImE0Iiwic3RybGVuIiwic3BlY2lhbF9jaGFycyIsImhhc19zcGVjaWFsX2NoYXJzIiwibWFwX2Fub25zIiwibWF5YmUiLCJtYXliZV93aXRoX2RlZmF1bHQiLCJzZXF1ZW5jZSQwIiwibm9uX2VtcHR5X3NlcXVlbmNlX2FzX3BhaXIiLCJub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCIsImFkX2hvYyIsInVzYWdlX2FyZyIsImFfMDI1IiwiYl8wMjYiLCJhXzAyNSQwIiwiYl8wMjYkMCIsImFfMDI3IiwiYl8wMjgiLCJhXzAzMSIsImJfMDMyIiwiZW5kc19pbl9jb21wbGV0ZSIsImV4dGVuZCIsInBhdGhfbGlzdCIsIm5vcm1hbGl6ZSQwIiwiZmxhZ19vcl9zdWJjb21tYW5kIiwiY3VzdG9tX3ByaW50Zl8wMzMiLCJjdXN0b21fcHJpbnRmXzAzNCIsInN1YmNvbW1hbmRfY21wX2ZzdCIsInNoYXBlIiwicGF0aF9rZXkiLCJhcmdzX2tleSIsImhlbHBfa2V5IiwiYXBwIiwicGYiLCJweCIsIm1mIiwibXgiLCJyZXR1cm4kMSIsIndyYXAiLCJtYWluIiwib2ZfcGFyYW0iLCJ0b19wYXJhbSIsImhlbHAkMCIsImludCQxIiwiY2hhciQxIiwiYm9vbCQwIiwicGVyY2VudCQwIiwiaG9zdF9hbmRfcG9ydCQwIiwic2V4cF9jb252JDAiLCJzcGVjIiwiZXNjYXBlX2Fub24iLCJmaW5hbF9hbm9uIiwiZnVsbF9mbGFnX3JlcXVpcmVkIiwiYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAiLCJjaGVja19hdmFpbGFibGUiLCJuYW1lX21hdGNoaW5nIiwiZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jIiwic2V4cF9vZl9kZWZhdWx0IiwiZGVmYXVsdF9zZXhwIiwiY3VzdG9tX3ByaW50Zl8wMzUiLCJib3RoIiwiZmxhZ3Nfb2ZfYXJnc19leG4iLCJmbGFnX3R5cGUiLCJjYWxsIiwic2V0X2Jvb2wiLCJwYXNzZWQiLCJmJDEiLCJyJDEiLCJmJDIiLCJyJDIiLCJmJDMiLCJyJDMiLCJmJDQiLCJzeW1zIiwic3ltIiwiZiQ1IiwiYXJnX25hbWVzIiwicGFyYW0iLCJmbGFnX25hbWVzIiwiYW5vbl9uYW1lcyIsIm5hbWVzX3dpdGhfY29tbWFzIiwidG9fc3RyaW5nJDEiLCJsaXN0X3RvX3N0cmluZyIsImNob29zZV9vbmUiLCJpZl9ub3RoaW5nX2Nob3NlbiIsInRzJDAiLCJjdXN0b21fcHJpbnRmXzA0MiIsImN1c3RvbV9wcmludGZfMDQzIiwiYW5kX2FyZ19uYW1lcyIsImFuZF9hcmdfbmFtZSIsInNoYXBlJDAiLCJzdWJjb21tYW5kX3RvX3NoYXBlIiwiY29tcF9jd29yZCIsInNoYXBlJDEiLCJzZXhwYWJsZV9zaGFwZSIsImV4ZWMiLCJleHRlbmRfZXhuIiwiZXh0ZW5kX2FsaXN0X2V4biIsInRleHRfc3VtbWFyeSIsImJhc2ljX3NwZWMiLCJmbGFncyQxIiwiYmFzZSQwIiwic3Vic19rZXkiLCJsYXp5X2dyb3VwIiwicHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciIsImJvZHkiLCJwJDAiLCJwJDEiLCJwJDIiLCJvZl9sYXp5JDAiLCJwcm94eV9vZl9zZXhwYWJsZSIsInNleHBhYmxlIiwicGF0aF90b19zdWJjb21tYW5kIiwia2luZCIsImtpbmRfb2Zfc2V4cGFibGUiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMCIsInByb3h5IiwicHJpbnRfdmVyc2lvbiIsInByaW50X2J1aWxkX2luZm8iLCJidWlsZF9pbmZvIiwiY29tbWFuZCIsInZlcnNpb25fZmxhZyIsImJ1aWxkX2luZm9fZmxhZyIsInVudmVyc2lvbmVkIiwiYmFzZSQxIiwibm9ybWFsaXplX3ZlcnNpb25fbGluZXMiLCJkZWZhdWx0X3ZlcnNpb24iLCJkZWZhdWx0X2J1aWxkX2luZm8iLCJyZXByaW50X2J1aWxkX2luZm8iLCJwYXRoJDAiLCJnZXRfZmxhZ19uYW1lcyIsImhlbHBfcmVjdXJzaXZlIiwiY21kIiwid2l0aF9mbGFncyIsImV4cGFuZF9kb3RzIiwiaGVscF9yZWN1cnNpdmVfcmVjIiwiY21kJDAiLCJuZXdfcyIsImJhc2VfaGVscCIsImRpc3BsYXlfaGVscF9mbGFncyIsInN0cmluZyQxIiwiaW50JDIiLCJjaGFyJDIiLCJmbG9hdCQyIiwiYm9vbCQxIiwicGVyY2VudCQxIiwiaG9zdF9hbmRfcG9ydCQxIiwic2V4cCQxIiwic2V4cF9jb252JDEiLCJiYXNpYyIsInBhcmFtcyIsIndvcmRfd3JhcCIsInRvX3N0cmluZ19mb3JfY2hvb3NlX29uZSIsInNoYXBlJDIiLCJnZXRwaWQiLCJjbG9zZSIsImluX2NoYW5uZWxfb2ZfZGVzY3IiLCJ3YWl0IiwiZ2V0ZW52X2FuZF9jbGVhciIsInZhciQwIiwiaGVscF9zZXhwIiwicHJvZyIsImFyZ3YwIiwicHJvZ19zZWFyY2hfcGF0aCIsImNvbnZlcnRfY29tbWFuZF9lbnZfdmFyX3RvX3N0ciIsImVudl92YXIiLCJsaXN0JDEiLCJwcm9jZXNzX2luZm8iLCJzdGFydF9yZWFkaW5nIiwiZGVzY3IiLCJpbmZvIiwidGhyZWFkIiwib3V0cHV0JDAiLCJmaW5pc2hfc3Rkb3V0IiwiZmluaXNoX3N0ZGVyciIsInN0ZGVyciIsInN0ZG91dCIsInNoYXBlX29mX3Byb3h5Iiwic2hhcGVfb2ZfcHJveHlfa2luZCIsInNoYXBlX29mX2V4ZSIsImdyb3VwX29yX2V4ZWNfaGVscF90ZXh0IiwiZm9ybWF0X2xpc3QiLCJoZWxwX2Zvcl9zaGFwZSIsInJlY3Vyc2l2ZSIsInN0cmluZ19vZl9wYXRoIiwiZm10JDAiLCJmaWx0ZXJlZF9zdWJjb21tYW5kcyIsImFkZF9oZWxwX3N1YmNvbW1hbmRzIiwiY21kX29wdCIsInN1YnMiLCJwYXRoJDEiLCJwb3NzaWJseV9leHBhbmRlZF9uYW1lIiwicGF0aCQyIiwicGF0aCQzIiwibWF5YmVfYXBwbHlfZXh0ZW5kIiwiZXh0ZW5kJDAiLCJkaXNwYXRjaCIsImVudiQxIiwibWF5YmVfbmV3X2NvbXBfY3dvcmQiLCJ2ZXJib3NlX29uX3BhcnNlX2Vycm9yIiwid2hlbl9wYXJzaW5nX3N1Y2NlZWRzIiwiY29tcGxldGVfc3ViY29tbWFuZHMiLCJjbWRsaW5lIiwiaGVscF90ZXh0IiwicGFyc2VyJDEiLCJjbWRsaW5lJDAiLCJhcmckMSIsImFyZ19pc19mbGFnIiwiY21kbGluZSQxIiwiYWxpYXMiLCJmbGFnJDAiLCJmbGFnJDEiLCJjb21wbGV0aW5nIiwiY21kbGluZSQyIiwiZW52JDIiLCJwYXJzZV9mbGFnczIiLCJlbnYkMyIsInBhcnNlX2ZsYWdzJDAiLCJwYXJ0JDAiLCJ0JDQiLCJ0JDUiLCJ0JDYiLCJleG5fc3RyIiwidmVyYm9zZSIsImVycm9yX21zZyIsImRpZV9zaG93aW5nX2hlbHAiLCJwYXJzZV9ncm91cCIsIm1heWJlX25ld19jb21wX2N3b3JkJDAiLCJyZXNvbHZlIiwic3VicyQwIiwic3ViJDAiLCJib2R5JDAiLCJ0b19vdXRwdXQiLCJyZXN0X29mX3Jlc3QiLCJmaXJzdF9vZl9yZXN0IiwibmV3X3ZhbHVlJDAiLCJuZXdfdmFsdWUiLCJ0aHVuayQwIiwiYXJndiIsImJ1aWxkX2luZm8kMCIsInZlcnNpb24kMCIsInN1cHBvcnRlZF92ZXJzaW9ucyQwIiwicGF0aF90b19zdWJjb21tYW5kJDEiLCJwYXRoX3RvX3N1YmNvbW1hbmQkMiIsImZuYW1lIiwiYXJndl8wIiwiY29tcF9jd29yZCQwIiwiZGVwcmVjYXRlZF9ydW4iLCJpc19oZWxwIiwiaXNfaGVscF9yZWMiLCJpc19oZWxwX3JlY19mbGFncyIsImlzX2V4cGFuZF9kb3RzIiwicGF0aF9zdHJpbmdzIiwiYXJncyQyIiwiYXJncyQzIiwiYXJncyQ0IiwiY2hlY2tfZm9yX3doaXRlc3BhY2UiLCJjaGVjayIsImNoZWNrX2Zvcl93aGl0ZXNwYWNlJDAiLCJjaGVjayQwIiwicHAkMCIsInR5cGVuYW1lX29mX3QkMSIsInR5cGVyZXBfb2ZfdCQxIiwiY2hlY2tfZm9yX3doaXRlc3BhY2UkMSIsImNoZWNrJDEiLCJwcCQxIiwib2Zfc3RyaW5nJDEiLCJ0X3NleHBfZ3JhbW1hciQyIiwidHlwZW5hbWVfb2ZfdCQyIiwidHlwZXJlcF9vZl90JDIiLCJjaGVjayQyIiwidG9fc3RyaW5nJDIiLCJwcCQyIiwib2Zfc3RyaW5nJDIiLCJhcmdfdHlwZSQwIiwic2V4cF9hc19zdHJpbmciLCJ2XzAwMSIsInNlcmlhbGl6ZWRfc2V4cCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJ2XzAxMiIsInZfMDEzIiwicmVzMV8wMTciLCJleHBlY3RlZF9iaW5faW8iLCJiaW5hYmxlX20iLCJzZXJpYWxpemVkX2Jpbl9pbyIsImFyZzJfMDIyIiwiYXJnMV8wMjEiLCJyZXMxXzAyNCIsInZfMDE5IiwicmVzMl8wMjUiLCJhcmcxXzAyOSIsImFyZzBfMDI4Iiwidl8wMjYiLCJ2XzAyNyIsInNleHBzIiwic2V4cHMkMCIsInNlcmlhbGl6ZWRfZWxlbWVudHMiLCJzZXhwcyQxIiwic29ydGVkX3NleHBzIiwic29ydGVkX3NlcmlhbGl6ZWQiLCJ2XzAzMiIsInZfMDMzIiwicmVzMV8wMzciLCJzZXhwX3Blcm11dGF0aW9ucyIsImFyZzFfMDQxIiwiYXJnMF8wNDAiLCJ2XzAzOCIsInJlczBfMDQyIiwidl8wMzkiLCJyZXMxXzA0MyIsImlzX2NvbmNhdGVuYXRpb24iLCJyZXZfc2tpcHBlZCIsInN0cmluZ3MkMCIsImNvbnRpbnVlJDAiLCJiaW5faW9fZWxlbWVudHMiLCJiaW5faW9faGVhZGVyIiwic2VyaWFsaXplZCIsImVsZW1lbnRzX3N0cmluZyIsInNlcmlhbGl6YXRpb25fbWF0Y2hlcyIsImFyZzFfMDUxIiwidl8wNDQiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMV8wNDgiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwicGVybXV0YXRhdGlvbnMiLCJhcmcxXzA1NyIsImFyZzBfMDU2IiwicmVzMF8wNTgiLCJyZXMxXzA1OSIsImJsYW5nIiwiY21wX2EkMCIsImNtcF9hJDUiLCJjbXBfYSQxIiwiYV8wMTUiLCJiXzAxNiIsImNtcF9hJDYiLCJhXzAxNyIsImJfMDE4IiwiY21wX2EkMiIsImFfMDE5IiwiYl8wMjAiLCJjbXBfYSQ3IiwiY21wX2EkMyIsImFfMDIzIiwiYl8wMjQiLCJjbXBfYSQ4IiwiYV8wMzMiLCJiXzAzNCIsImNtcF9hJDQiLCJhXzAzNyQwIiwiYl8wMzgkMCIsImFfMDQxIiwiYV8wMzkiLCJiXzA0MiIsImJfMDQwIiwiYV8wNDMiLCJiXzA0NCIsImFfMDQ1IiwiYl8wNDYiLCJhXzA0OSIsImFfMDQ3IiwiYl8wNTAiLCJiXzA0OCIsImFfMDUzIiwiYl8wNTQiLCJhXzA2MyIsImJfMDY0IiwiYV8wNjUiLCJiXzA2NiIsImFfMDY3IiwiYl8wNjgiLCJhXzA2OSIsImJfMDcwIiwiYV8wNzEiLCJiXzA3MiIsImFyZyQyIiwiaHN2JDMiLCJoc3YkNCIsImFyZyQzIiwiaHN2JDUiLCJhcmckNCIsImEwJDEiLCJoc3YkNiIsImhzdiQ3IiwiaHN2JDgiLCJhMCQyIiwiaHN2JDkiLCJ0YWczIiwidGFnNCIsInRhZzUiLCJ0YWc2IiwidjAkMSIsInYwJDIiLCJ2MCQzIiwic3VidGVybXMiLCJ0MSQxIiwiY29udGFpbnNfbm9fY29uc3RhbnRzIiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5vdCIsImFuZGFsc28iLCJvdGhlciIsInQxYiIsInQxYSIsIm9yZWxzZSIsImlmJDAiLCJvZl9hXzA3MyIsImFyZzFfMDc1IiwicmVzMF8wNzYiLCJyZXMxXzA3NyIsImFyZzFfMDc5IiwiYXJnMF8wNzgiLCJyZXMwXzA4MCIsInJlczFfMDgxIiwiYXJnMF8wODIiLCJyZXMwXzA4MyIsImFyZzJfMDg2IiwiYXJnMV8wODUiLCJhcmcwXzA4NCIsInJlczBfMDg3IiwicmVzMV8wODgiLCJyZXMyXzA4OSIsImFyZzBfMDkwIiwicmVzMF8wOTEiLCJnYXRoZXJfY29uanVuY3RzIiwidHMkMSIsImdhdGhlcl9kaXNqdW5jdHMiLCJhbmQiLCJvciIsImF1eCIsImJhc2Vfb2Zfc2V4cCIsImt3Iiwia3ckMCIsImRlZm5zIiwiYmFzZV9ncmFtbWFyIiwiY29uc3RhbnQiLCJjb25zdGFudF92YWx1ZSIsInRzJDIiLCJ0cyQzIiwidHMkNCIsInQyJDEiLCJ0MSQyIiwidHMkNSIsImxvb3AkMCIsInBlbmRpbmciLCJwZW5kaW5nJDAiLCJwZW5kaW5nJDIiLCJwZW5kaW5nJDEiLCJvdGhlciQwIiwib3RoZXIkMSIsImV2YWwkMCIsImJhc2VfZXZhbCIsInNwZWNpYWxpemUiLCJldmFsX3NldCIsInNldF9vZl9iYXNlIiwiYiQwIiwiYiQxIiwiYSQwIiwiYSQxIiwiYiQyIiwiYSQyIiwiY29uZCIsImNvbmQkMCIsImEkMyIsImV2YWwkMSIsImFfZ2VuZXJhdG9yIiwic2VsZiIsImFfc2hyaW5rZXIiLCJiaW5vcCIsIm9wZXJhdG9yIiwicmlnaHQkMCIsImxlZnQkMCIsImVsc2UkMCIsInRoZW4iLCJpZiQxIiwiYV9vYnNlcnZlciIsIm9mX2J5dGVzX2ludDYzIiwiYnl0ZXNfaW50NjMiLCJpc2NhbGUiLCJieXRlc19pbnQ2NCIsImJ5dGVzX2Zsb2F0Iiwib2ZfYnl0ZXNfaW50Iiwib2ZfYnl0ZXNfaW50NjRfZXhuIiwib2ZfYnl0ZXNfZmxvYXRfZXhuIiwia2lsb2J5dGUiLCJtZWdhYnl0ZSIsImdpZ2FieXRlIiwidGVyYWJ5dGUiLCJwZXRhYnl0ZSIsImV4YWJ5dGUiLCJraWxvYnl0ZXMiLCJtZWdhYnl0ZXMiLCJnaWdhYnl0ZXMiLCJ0ZXJhYnl0ZXMiLCJwZXRhYnl0ZXMiLCJleGFieXRlcyIsIndvcmRzX2ludF9leG4iLCJ3b3Jkc19mbG9hdCIsIm9mX2tpbG9ieXRlcyIsIm9mX21lZ2FieXRlcyIsIm9mX2dpZ2FieXRlcyIsIm9mX3RlcmFieXRlcyIsIm9mX3BldGFieXRlcyIsIm9mX2V4YWJ5dGVzIiwib2Zfd29yZHNfaW50Iiwib2Zfd29yZHNfZmxvYXRfZXhuIiwiYmFzZV9zdHIiLCJleHRfY2hhciIsImxhcmdlc3RfbWVhc3VyZSIsInRfYWJzIiwibm9fbWF0Y2giLCJ2YWxfc2V4cCIsInVuaXRfbmFtZSIsImN1c3RvbV9wcmludGZfMDA1IiwiY3VzdG9tX3ByaW50Zl8wMDYiLCJjdXN0b21fcHJpbnRmXzAwNyIsImN1c3RvbV9wcmludGZfMDA4IiwiY3VzdG9tX3ByaW50Zl8wMDkiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDExIiwidG9fc3RyaW5nX3Nob3J0IiwidG9fdW5pdHNfc3RyIiwidG9fdW5pdCIsImZfYWJzIiwiY3VzdG9tX3ByaW50Zl8wMTQiLCJjdXN0b21fcHJpbnRmXzAxNSIsImN1c3RvbV9wcmludGZfMDE2IiwiY3VzdG9tX3ByaW50Zl8wMTciLCJjdXN0b21fcHJpbnRmXzAxOCIsImN1c3RvbV9wcmludGZfMDE5IiwiY3VzdG9tX3ByaW50Zl8wMjAiLCJjdXN0b21fcHJpbnRmXzAyMSIsImN1c3RvbV9wcmludGZfMDIyIiwiY3VzdG9tX3ByaW50Zl8wMjMiLCJjdXN0b21fcHJpbnRmXzAyNCIsImN1c3RvbV9wcmludGZfMDI1IiwiY3VzdG9tX3ByaW50Zl8wMjYiLCJieXRlc19wZXJfd29yZCIsImVycm9yX3NvdXJjZV8wNjkiLCJlcnJvcl9zb3VyY2VfMTY5IiwiZXJyb3Jfc291cmNlXzI1MyIsInYxNiIsInYxNSIsInYxNCIsInYxMyIsInYxMiIsInYxMSIsInYxMCIsInY5IiwidjgiLCJzaXplJDYiLCJzaXplJDciLCJzaXplJDgiLCJzaXplJDkiLCJzaXplJDEwIiwic2l6ZSQxMSIsInNpemUkMTIiLCJzaXplJDEzIiwidl9taW5vcl93b3JkcyIsInZfcHJvbW90ZWRfd29yZHMiLCJ2X21ham9yX3dvcmRzIiwidl9taW5vcl9jb2xsZWN0aW9ucyIsInZfbWFqb3JfY29sbGVjdGlvbnMiLCJ2X2hlYXBfd29yZHMiLCJ2X2hlYXBfY2h1bmtzIiwidl9saXZlX3dvcmRzIiwidl9saXZlX2Jsb2NrcyIsInZfZnJlZV93b3JkcyIsInZfZnJlZV9ibG9ja3MiLCJ2X2xhcmdlc3RfZnJlZSIsInZfZnJhZ21lbnRzIiwidl9jb21wYWN0aW9ucyIsInZfdG9wX2hlYXBfd29yZHMiLCJ2X3N0YWNrX3NpemUiLCJuJDUiLCJuJDYiLCJuJDciLCJuJDgiLCJuJDkiLCJuJDEwIiwibiQxMSIsIm4kMTIiLCJuJDEzIiwiaHN2JDEwIiwiaHN2JDExIiwiaHN2JDEyIiwiaHN2JDEzIiwiaHN2JDE0Iiwic2V4cF8wMTQiLCJmaWVsZF9zZXhwc18wMTUiLCJtaW5vcl93b3Jkc18wMTYiLCJwcm9tb3RlZF93b3Jkc18wMTgiLCJtYWpvcl93b3Jkc18wMjAiLCJtaW5vcl9jb2xsZWN0aW9uc18wMjIiLCJtYWpvcl9jb2xsZWN0aW9uc18wMjQiLCJoZWFwX3dvcmRzXzAyNiIsImhlYXBfY2h1bmtzXzAyOCIsImxpdmVfd29yZHNfMDMwIiwibGl2ZV9ibG9ja3NfMDMyIiwiZnJlZV93b3Jkc18wMzQiLCJmcmVlX2Jsb2Nrc18wMzYiLCJsYXJnZXN0X2ZyZWVfMDM4IiwiZnJhZ21lbnRzXzA0MCIsImNvbXBhY3Rpb25zXzA0MiIsInRvcF9oZWFwX3dvcmRzXzA0NCIsInN0YWNrX3NpemVfMDQ2IiwiZHVwbGljYXRlc18wNDgiLCJleHRyYV8wNDkiLCJpdGVyXzA3MCIsInNleHBfMDE0JDAiLCJmaWVsZF9zZXhwc18wNTIiLCJmaWVsZF9uYW1lXzA1MCIsInRhaWxfMDcxIiwiZmllbGRfc2V4cF8wNTEkMTYiLCJmaWVsZF9zZXhwXzA1MSIsInhfMDcyIiwiZmllbGRfc2V4cF8wNTEkMCIsImZ2YWx1ZV8wNTQiLCJmaWVsZF9zZXhwXzA1MSQxIiwiZnZhbHVlXzA1MyIsImZpZWxkX3NleHBfMDUxJDIiLCJmaWVsZF9zZXhwXzA1MSQzIiwiZnZhbHVlXzA2OCIsImZpZWxkX3NleHBfMDUxJDQiLCJmdmFsdWVfMDY1IiwiZmllbGRfc2V4cF8wNTEkNSIsImZpZWxkX3NleHBfMDUxJDYiLCJmdmFsdWVfMDY0IiwiZmllbGRfc2V4cF8wNTEkNyIsImZ2YWx1ZV8wNjEiLCJmaWVsZF9zZXhwXzA1MSQ4IiwiZnZhbHVlXzA2MCIsImZpZWxkX3NleHBfMDUxJDkiLCJmdmFsdWVfMDU3IiwiZmllbGRfc2V4cF8wNTEkMTAiLCJmdmFsdWVfMDYzIiwiZmllbGRfc2V4cF8wNTEkMTEiLCJmdmFsdWVfMDYyIiwiZmllbGRfc2V4cF8wNTEkMTIiLCJmdmFsdWVfMDU5IiwiZmllbGRfc2V4cF8wNTEkMTMiLCJmdmFsdWVfMDU4IiwiZmllbGRfc2V4cF8wNTEkMTQiLCJmdmFsdWVfMDU2IiwiZmllbGRfc2V4cF8wNTEkMTUiLCJmdmFsdWVfMDU1Iiwic3RhY2tfc2l6ZV8wNDciLCJ0b3BfaGVhcF93b3Jkc18wNDUiLCJjb21wYWN0aW9uc18wNDMiLCJmcmFnbWVudHNfMDQxIiwibGFyZ2VzdF9mcmVlXzAzOSIsImZyZWVfYmxvY2tzXzAzNyIsImZyZWVfd29yZHNfMDM1IiwibGl2ZV9ibG9ja3NfMDMzIiwibGl2ZV93b3Jkc18wMzEiLCJoZWFwX2NodW5rc18wMjkiLCJoZWFwX3dvcmRzXzAyNyIsIm1ham9yX2NvbGxlY3Rpb25zXzAyNSIsIm1pbm9yX2NvbGxlY3Rpb25zXzAyMyIsIm1ham9yX3dvcmRzXzAyMSIsInByb21vdGVkX3dvcmRzXzAxOSIsIm1pbm9yX3dvcmRzXzAxNyIsInN0YWNrX3NpemVfMTA0IiwidG9wX2hlYXBfd29yZHNfMTAyIiwiY29tcGFjdGlvbnNfMTAwIiwiZnJhZ21lbnRzXzA5OCIsImxhcmdlc3RfZnJlZV8wOTYiLCJmcmVlX2Jsb2Nrc18wOTQiLCJmcmVlX3dvcmRzXzA5MiIsImxpdmVfYmxvY2tzXzA5MCIsImxpdmVfd29yZHNfMDg4IiwiaGVhcF9jaHVua3NfMDg2IiwiaGVhcF93b3Jkc18wODQiLCJtYWpvcl9jb2xsZWN0aW9uc18wODIiLCJtaW5vcl9jb2xsZWN0aW9uc18wODAiLCJtYWpvcl93b3Jkc18wNzgiLCJwcm9tb3RlZF93b3Jkc18wNzYiLCJtaW5vcl93b3Jkc18wNzQiLCJibmRzXzA3MyIsImFyZ18xMDMiLCJibmRzXzA3MyQwIiwiYXJnXzEwMSIsImJuZHNfMDczJDEiLCJhcmdfMDk5IiwiYm5kc18wNzMkMiIsImFyZ18wOTciLCJibmRzXzA3MyQzIiwiYXJnXzA5NSIsImJuZHNfMDczJDQiLCJhcmdfMDkzIiwiYm5kc18wNzMkNSIsImFyZ18wOTEiLCJibmRzXzA3MyQ2IiwiYXJnXzA4OSIsImJuZHNfMDczJDciLCJhcmdfMDg3IiwiYm5kc18wNzMkOCIsImFyZ18wODUiLCJibmRzXzA3MyQ5IiwiYXJnXzA4MyIsImJuZHNfMDczJDEwIiwiYXJnXzA4MSIsImJuZHNfMDczJDExIiwiYXJnXzA3OSIsImJuZHNfMDczJDEyIiwiYXJnXzA3NyIsImJuZHNfMDczJDEzIiwiYXJnXzA3NSIsImJuZHNfMDczJDE0IiwidjE3Iiwic2l6ZSQxNCIsInZfZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwiYV8xMDYiLCJiXzEwNyIsIm4kMTQiLCJhXzEwOCIsImJfMTA5IiwiaHN2JDE1Iiwic2V4cF8xMTEiLCJmaWVsZF9zZXhwc18xMTIiLCJtaW5vcl93b3Jkc18xMTMiLCJwcm9tb3RlZF93b3Jkc18xMTUiLCJtYWpvcl93b3Jkc18xMTciLCJtaW5vcl9jb2xsZWN0aW9uc18xMTkiLCJtYWpvcl9jb2xsZWN0aW9uc18xMjEiLCJoZWFwX3dvcmRzXzEyMyIsImhlYXBfY2h1bmtzXzEyNSIsImxpdmVfd29yZHNfMTI3IiwibGl2ZV9ibG9ja3NfMTI5IiwiZnJlZV93b3Jkc18xMzEiLCJmcmVlX2Jsb2Nrc18xMzMiLCJsYXJnZXN0X2ZyZWVfMTM1IiwiZnJhZ21lbnRzXzEzNyIsImNvbXBhY3Rpb25zXzEzOSIsInRvcF9oZWFwX3dvcmRzXzE0MSIsInN0YWNrX3NpemVfMTQzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzE0NSIsImR1cGxpY2F0ZXNfMTQ3IiwiZXh0cmFfMTQ4IiwiaXRlcl8xNzAiLCJzZXhwXzExMSQwIiwiZmllbGRfc2V4cHNfMTUxIiwiZmllbGRfbmFtZV8xNDkiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTUwJDE3IiwiZmllbGRfc2V4cF8xNTAiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTUwJDAiLCJmdmFsdWVfMTU0IiwiZmllbGRfc2V4cF8xNTAkMSIsImZ2YWx1ZV8xNTMiLCJmaWVsZF9zZXhwXzE1MCQyIiwiZmllbGRfc2V4cF8xNTAkMyIsImZpZWxkX3NleHBfMTUwJDQiLCJmdmFsdWVfMTY1IiwiZmllbGRfc2V4cF8xNTAkNSIsImZ2YWx1ZV8xNjYiLCJmaWVsZF9zZXhwXzE1MCQ2IiwiZnZhbHVlXzE2NCIsImZpZWxkX3NleHBfMTUwJDciLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTAkOCIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1MCQ5IiwiZnZhbHVlXzE1NyIsImZpZWxkX3NleHBfMTUwJDEwIiwiZnZhbHVlXzE2MyIsImZpZWxkX3NleHBfMTUwJDExIiwiZnZhbHVlXzE2MiIsImZpZWxkX3NleHBfMTUwJDEyIiwiZnZhbHVlXzE1OSIsImZpZWxkX3NleHBfMTUwJDEzIiwiZnZhbHVlXzE1OCIsImZpZWxkX3NleHBfMTUwJDE0IiwiZnZhbHVlXzE1NiIsImZpZWxkX3NleHBfMTUwJDE1IiwiZnZhbHVlXzE1MiIsImZpZWxkX3NleHBfMTUwJDE2IiwiZnZhbHVlXzE1NSIsImZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uc18xNDYiLCJzdGFja19zaXplXzE0NCIsInRvcF9oZWFwX3dvcmRzXzE0MiIsImNvbXBhY3Rpb25zXzE0MCIsImZyYWdtZW50c18xMzgiLCJsYXJnZXN0X2ZyZWVfMTM2IiwiZnJlZV9ibG9ja3NfMTM0IiwiZnJlZV93b3Jkc18xMzIiLCJsaXZlX2Jsb2Nrc18xMzAiLCJsaXZlX3dvcmRzXzEyOCIsImhlYXBfY2h1bmtzXzEyNiIsImhlYXBfd29yZHNfMTI0IiwibWFqb3JfY29sbGVjdGlvbnNfMTIyIiwibWlub3JfY29sbGVjdGlvbnNfMTIwIiwibWFqb3Jfd29yZHNfMTE4IiwicHJvbW90ZWRfd29yZHNfMTE2IiwibWlub3Jfd29yZHNfMTE0IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXzIwNiIsInN0YWNrX3NpemVfMjA0IiwidG9wX2hlYXBfd29yZHNfMjAyIiwiY29tcGFjdGlvbnNfMjAwIiwiZnJhZ21lbnRzXzE5OCIsImxhcmdlc3RfZnJlZV8xOTYiLCJmcmVlX2Jsb2Nrc18xOTQiLCJmcmVlX3dvcmRzXzE5MiIsImxpdmVfYmxvY2tzXzE5MCIsImxpdmVfd29yZHNfMTg4IiwiaGVhcF9jaHVua3NfMTg2IiwiaGVhcF93b3Jkc18xODQiLCJtYWpvcl9jb2xsZWN0aW9uc18xODIiLCJtaW5vcl9jb2xsZWN0aW9uc18xODAiLCJtYWpvcl93b3Jkc18xNzgiLCJwcm9tb3RlZF93b3Jkc18xNzYiLCJtaW5vcl93b3Jkc18xNzQiLCJhcmdfMjA3IiwiYm5kc18xNzMiLCJhcmdfMjA1IiwiYm5kc18xNzMkMCIsImFyZ18yMDMiLCJibmRzXzE3MyQxIiwiYXJnXzIwMSIsImJuZHNfMTczJDIiLCJhcmdfMTk5IiwiYm5kc18xNzMkMyIsImFyZ18xOTciLCJibmRzXzE3MyQ0IiwiYXJnXzE5NSIsImJuZHNfMTczJDUiLCJhcmdfMTkzIiwiYm5kc18xNzMkNiIsImFyZ18xOTEiLCJibmRzXzE3MyQ3IiwiYXJnXzE4OSIsImJuZHNfMTczJDgiLCJhcmdfMTg3IiwiYm5kc18xNzMkOSIsImJuZHNfMTczJDEwIiwiYm5kc18xNzMkMTEiLCJibmRzXzE3MyQxMiIsImFyZ18xNzkiLCJibmRzXzE3MyQxMyIsImJuZHNfMTczJDE0IiwiYXJnXzE3NSIsImJuZHNfMTczJDE1Iiwidl9taW5vcl9oZWFwX3NpemUiLCJ2X21ham9yX2hlYXBfaW5jcmVtZW50Iiwidl9zcGFjZV9vdmVyaGVhZCIsInZfdmVyYm9zZSIsInZfbWF4X292ZXJoZWFkIiwidl9zdGFja19saW1pdCIsInZfYWxsb2NhdGlvbl9wb2xpY3kiLCJ2X3dpbmRvd19zaXplIiwidl9jdXN0b21fbWFqb3JfcmF0aW8iLCJ2X2N1c3RvbV9taW5vcl9yYXRpbyIsInZfY3VzdG9tX21pbm9yX21heF9zaXplIiwiYV8yMDgiLCJiXzIwOSIsImFfMjEwIiwiYl8yMTEiLCJzZXhwXzIxMyIsImZpZWxkX3NleHBzXzIxNCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTUiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yMTciLCJzcGFjZV9vdmVyaGVhZF8yMTkiLCJ2ZXJib3NlXzIyMSIsIm1heF9vdmVyaGVhZF8yMjMiLCJzdGFja19saW1pdF8yMjUiLCJhbGxvY2F0aW9uX3BvbGljeV8yMjciLCJ3aW5kb3dfc2l6ZV8yMjkiLCJjdXN0b21fbWFqb3JfcmF0aW9fMjMxIiwiY3VzdG9tX21pbm9yX3JhdGlvXzIzMyIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzUiLCJkdXBsaWNhdGVzXzIzNyIsImV4dHJhXzIzOCIsIml0ZXJfMjU0Iiwic2V4cF8yMTMkMCIsImZpZWxkX3NleHBzXzI0MSIsImZpZWxkX25hbWVfMjM5IiwidGFpbF8yNTUiLCJmaWVsZF9zZXhwXzI0MCQxMSIsImZpZWxkX3NleHBfMjQwIiwieF8yNTYiLCJmaWVsZF9zZXhwXzI0MCQwIiwiZnZhbHVlXzI0NSIsImZpZWxkX3NleHBfMjQwJDEiLCJmdmFsdWVfMjQ5IiwiZmllbGRfc2V4cF8yNDAkMiIsImZ2YWx1ZV8yNDciLCJmaWVsZF9zZXhwXzI0MCQzIiwiZnZhbHVlXzI1MCIsImZpZWxkX3NleHBfMjQwJDQiLCJmdmFsdWVfMjUyIiwiZmllbGRfc2V4cF8yNDAkNSIsImZ2YWx1ZV8yNDgiLCJmaWVsZF9zZXhwXzI0MCQ2IiwiZnZhbHVlXzI1MSIsImZpZWxkX3NleHBfMjQwJDciLCJmdmFsdWVfMjQzIiwiZmllbGRfc2V4cF8yNDAkOCIsImZ2YWx1ZV8yNDIiLCJmaWVsZF9zZXhwXzI0MCQ5IiwiZnZhbHVlXzI0NCIsImZpZWxkX3NleHBfMjQwJDEwIiwiZnZhbHVlXzI0NiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8yMzYiLCJjdXN0b21fbWlub3JfcmF0aW9fMjM0IiwiY3VzdG9tX21ham9yX3JhdGlvXzIzMiIsIndpbmRvd19zaXplXzIzMCIsImFsbG9jYXRpb25fcG9saWN5XzIyOCIsInN0YWNrX2xpbWl0XzIyNiIsIm1heF9vdmVyaGVhZF8yMjQiLCJ2ZXJib3NlXzIyMiIsInNwYWNlX292ZXJoZWFkXzIyMCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzIxOCIsIm1pbm9yX2hlYXBfc2l6ZV8yMTYiLCJjdXN0b21fbWlub3JfbWF4X3NpemVfMjc4IiwiY3VzdG9tX21pbm9yX3JhdGlvXzI3NiIsImN1c3RvbV9tYWpvcl9yYXRpb18yNzQiLCJ3aW5kb3dfc2l6ZV8yNzIiLCJhbGxvY2F0aW9uX3BvbGljeV8yNzAiLCJzdGFja19saW1pdF8yNjgiLCJtYXhfb3ZlcmhlYWRfMjY2IiwidmVyYm9zZV8yNjQiLCJzcGFjZV9vdmVyaGVhZF8yNjIiLCJtYWpvcl9oZWFwX2luY3JlbWVudF8yNjAiLCJtaW5vcl9oZWFwX3NpemVfMjU4IiwiYm5kc18yNTciLCJhcmdfMjc3IiwiYm5kc18yNTckMCIsImFyZ18yNzUiLCJibmRzXzI1NyQxIiwiYXJnXzI3MyIsImJuZHNfMjU3JDIiLCJhcmdfMjcxIiwiYm5kc18yNTckMyIsImFyZ18yNjkiLCJibmRzXzI1NyQ0IiwiYXJnXzI2NyIsImJuZHNfMjU3JDUiLCJhcmdfMjY1IiwiYm5kc18yNTckNiIsImFyZ18yNjMiLCJibmRzXzI1NyQ3IiwiYXJnXzI2MSIsImJuZHNfMjU3JDgiLCJhcmdfMjU5IiwiYm5kc18yNTckOSIsImFfMjgwIiwiYl8yODEiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfMzE1Iiwic3RhY2tfc2l6ZV8zMTMiLCJ0b3BfaGVhcF93b3Jkc18zMTEiLCJjb21wYWN0aW9uc18zMDkiLCJmcmFnbWVudHNfMzA3IiwibGFyZ2VzdF9mcmVlXzMwNSIsImZyZWVfYmxvY2tzXzMwMyIsImZyZWVfd29yZHNfMzAxIiwibGl2ZV9ibG9ja3NfMjk5IiwibGl2ZV93b3Jkc18yOTciLCJoZWFwX2NodW5rc18yOTUiLCJoZWFwX3dvcmRzXzI5MyIsIm1ham9yX2NvbGxlY3Rpb25zXzI5MSIsIm1pbm9yX2NvbGxlY3Rpb25zXzI4OSIsIm1ham9yX3dvcmRzXzI4NyIsInByb21vdGVkX3dvcmRzXzI4NSIsIm1pbm9yX3dvcmRzXzI4MyIsImFyZ18zMTYiLCJibmRzXzI4MiIsImFyZ18zMTQiLCJibmRzXzI4MiQwIiwiYXJnXzMxMiIsImJuZHNfMjgyJDEiLCJhcmdfMzEwIiwiYm5kc18yODIkMiIsImFyZ18zMDgiLCJibmRzXzI4MiQzIiwiYXJnXzMwNiIsImJuZHNfMjgyJDQiLCJhcmdfMzA0IiwiYm5kc18yODIkNSIsImFyZ18zMDIiLCJibmRzXzI4MiQ2IiwiYXJnXzMwMCIsImJuZHNfMjgyJDciLCJhcmdfMjk4IiwiYm5kc18yODIkOCIsImFyZ18yOTYiLCJibmRzXzI4MiQ5IiwiYXJnXzI5NCIsImJuZHNfMjgyJDEwIiwiYXJnXzI5MiIsImJuZHNfMjgyJDExIiwiYXJnXzI5MCIsImJuZHNfMjgyJDEyIiwiYXJnXzI4OCIsImJuZHNfMjgyJDEzIiwiYXJnXzI4NiIsImJuZHNfMjgyJDE0IiwiYXJnXzI4NCIsImJuZHNfMjgyJDE1IiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIiwic3RhY2tfc2l6ZSIsInRvcF9oZWFwX3dvcmRzIiwiY29tcGFjdGlvbnMiLCJmcmFnbWVudHMiLCJsYXJnZXN0X2ZyZWUiLCJmcmVlX2Jsb2NrcyIsImZyZWVfd29yZHMiLCJsaXZlX2Jsb2NrcyIsImxpdmVfd29yZHMiLCJoZWFwX2NodW5rcyIsImhlYXBfd29yZHMiLCJtYWpvcl9jb2xsZWN0aW9ucyIsIm1pbm9yX2NvbGxlY3Rpb25zIiwibWFqb3Jfd29yZHMiLCJwcm9tb3RlZF93b3JkcyIsIm1pbm9yX3dvcmRzIiwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zJDAiLCJzdGFja19zaXplJDAiLCJ0b3BfaGVhcF93b3JkcyQwIiwiY29tcGFjdGlvbnMkMCIsImZyYWdtZW50cyQwIiwibGFyZ2VzdF9mcmVlJDAiLCJmcmVlX2Jsb2NrcyQwIiwiZnJlZV93b3JkcyQwIiwibGl2ZV9ibG9ja3MkMCIsImxpdmVfd29yZHMkMCIsImhlYXBfY2h1bmtzJDAiLCJoZWFwX3dvcmRzJDAiLCJtYWpvcl9jb2xsZWN0aW9ucyQwIiwibWlub3JfY29sbGVjdGlvbnMkMCIsIm1ham9yX3dvcmRzJDAiLCJwcm9tb3RlZF93b3JkcyQwIiwibWlub3Jfd29yZHMkMCIsIm1pbm9yX3dvcmRzX2Z1biIsInByb21vdGVkX3dvcmRzX2Z1biIsIm1ham9yX3dvcmRzX2Z1biIsIm1pbm9yX2NvbGxlY3Rpb25zX2Z1biIsIm1ham9yX2NvbGxlY3Rpb25zX2Z1biIsImhlYXBfd29yZHNfZnVuIiwiaGVhcF9jaHVua3NfZnVuIiwibGl2ZV93b3Jkc19mdW4iLCJsaXZlX2Jsb2Nrc19mdW4iLCJmcmVlX3dvcmRzX2Z1biIsImZyZWVfYmxvY2tzX2Z1biIsImxhcmdlc3RfZnJlZV9mdW4iLCJmcmFnbWVudHNfZnVuIiwiY29tcGFjdGlvbnNfZnVuIiwidG9wX2hlYXBfd29yZHNfZnVuIiwic3RhY2tfc2l6ZV9mdW4iLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZnVuIiwibWlub3Jfd29yZHNfZ2VuIiwicHJvbW90ZWRfd29yZHNfZ2VuIiwibWFqb3Jfd29yZHNfZ2VuIiwibWlub3JfY29sbGVjdGlvbnNfZ2VuIiwibWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiaGVhcF93b3Jkc19nZW4iLCJoZWFwX2NodW5rc19nZW4iLCJsaXZlX3dvcmRzX2dlbiIsImxpdmVfYmxvY2tzX2dlbiIsImZyZWVfd29yZHNfZ2VuIiwiZnJlZV9ibG9ja3NfZ2VuIiwibGFyZ2VzdF9mcmVlX2dlbiIsImNvbXBpbGVfYWNjJDEyIiwiZnJhZ21lbnRzX2dlbiIsImNvbXBpbGVfYWNjJDEzIiwiY29tcGFjdGlvbnNfZ2VuIiwiY29tcGlsZV9hY2MkMTQiLCJ0b3BfaGVhcF93b3Jkc19nZW4iLCJjb21waWxlX2FjYyQxNSIsInN0YWNrX3NpemVfZ2VuIiwiY29tcGlsZV9hY2MkMTYiLCJmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnNfZ2VuIiwiYV8zMTciLCJiXzMxOCIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV8zNDAiLCJjdXN0b21fbWlub3JfcmF0aW9fMzM4IiwiY3VzdG9tX21ham9yX3JhdGlvXzMzNiIsIndpbmRvd19zaXplXzMzNCIsImFsbG9jYXRpb25fcG9saWN5XzMzMiIsInN0YWNrX2xpbWl0XzMzMCIsIm1heF9vdmVyaGVhZF8zMjgiLCJ2ZXJib3NlXzMyNiIsInNwYWNlX292ZXJoZWFkXzMyNCIsIm1ham9yX2hlYXBfaW5jcmVtZW50XzMyMiIsIm1pbm9yX2hlYXBfc2l6ZV8zMjAiLCJhcmdfMzQxIiwiYm5kc18zMTkiLCJhcmdfMzM5IiwiYm5kc18zMTkkMCIsImFyZ18zMzciLCJibmRzXzMxOSQxIiwiYm5kc18zMTkkMiIsImJuZHNfMzE5JDMiLCJibmRzXzMxOSQ0IiwiYm5kc18zMTkkNSIsImFyZ18zMjciLCJibmRzXzMxOSQ2IiwiYm5kc18zMTkkNyIsImFyZ18zMjMiLCJibmRzXzMxOSQ4IiwiYXJnXzMyMSIsImJuZHNfMzE5JDkiLCJjdXN0b21fbWlub3JfbWF4X3NpemUiLCJjdXN0b21fbWlub3JfcmF0aW8iLCJjdXN0b21fbWFqb3JfcmF0aW8iLCJ3aW5kb3dfc2l6ZSIsImFsbG9jYXRpb25fcG9saWN5Iiwic3RhY2tfbGltaXQiLCJtYXhfb3ZlcmhlYWQiLCJzcGFjZV9vdmVyaGVhZCIsIm1ham9yX2hlYXBfaW5jcmVtZW50IiwibWlub3JfaGVhcF9zaXplIiwiY3VzdG9tX21pbm9yX21heF9zaXplJDAiLCJjdXN0b21fbWlub3JfcmF0aW8kMCIsImN1c3RvbV9tYWpvcl9yYXRpbyQwIiwid2luZG93X3NpemUkMCIsImFsbG9jYXRpb25fcG9saWN5JDAiLCJzdGFja19saW1pdCQwIiwibWF4X292ZXJoZWFkJDAiLCJ2ZXJib3NlJDAiLCJzcGFjZV9vdmVyaGVhZCQwIiwibWFqb3JfaGVhcF9pbmNyZW1lbnQkMCIsIm1pbm9yX2hlYXBfc2l6ZSQwIiwibWlub3JfaGVhcF9zaXplX2Z1biIsIm1ham9yX2hlYXBfaW5jcmVtZW50X2Z1biIsInNwYWNlX292ZXJoZWFkX2Z1biIsInZlcmJvc2VfZnVuIiwibWF4X292ZXJoZWFkX2Z1biIsInN0YWNrX2xpbWl0X2Z1biIsImFsbG9jYXRpb25fcG9saWN5X2Z1biIsIndpbmRvd19zaXplX2Z1biIsImN1c3RvbV9tYWpvcl9yYXRpb19mdW4iLCJjdXN0b21fbWlub3JfcmF0aW9fZnVuIiwiY3VzdG9tX21pbm9yX21heF9zaXplX2Z1biIsIm1pbm9yX2hlYXBfc2l6ZV9nZW4iLCJtYWpvcl9oZWFwX2luY3JlbWVudF9nZW4iLCJzcGFjZV9vdmVyaGVhZF9nZW4iLCJ2ZXJib3NlX2dlbiIsIm1heF9vdmVyaGVhZF9nZW4iLCJzdGFja19saW1pdF9nZW4iLCJhbGxvY2F0aW9uX3BvbGljeV9nZW4iLCJ3aW5kb3dfc2l6ZV9nZW4iLCJjdXN0b21fbWFqb3JfcmF0aW9fZ2VuIiwiY3VzdG9tX21pbm9yX3JhdGlvX2dlbiIsImN1c3RvbV9taW5vcl9tYXhfc2l6ZV9nZW4iLCJlcXVhbCQ1IiwidHVuZSIsImxvZ2dlciIsIm9sZF9jb250cm9sX3BhcmFtcyIsImZpZWxkIiwib2xkX3ZhbHVlIiwibmV3X2NvbnRyb2xfcGFyYW1zIiwiZGlzYWJsZV9jb21wYWN0aW9uIiwicG9saWN5Iiwia2VlcF9hbGl2ZSIsIm8iLCJwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWwiLCJtZWFzdXJlX2ludGVybmFsIiwib25fcmVzdWx0IiwibWlub3Jfd29yZHNfYmVmb3JlIiwibWFqb3Jfd29yZHNfYmVmb3JlIiwibWlub3Jfd29yZHNfYWZ0ZXIiLCJtYWpvcl93b3Jkc19hZnRlciIsIm1ham9yX3dvcmRzX2FsbG9jYXRlZCIsIm1pbm9yX3dvcmRzX2FsbG9jYXRlZCIsImlzX3plcm9fYWxsb2MiLCJtaW5vcl93b3Jkc19hbGxvY2F0ZWRfMzQ5IiwibWFqb3Jfd29yZHNfYWxsb2NhdGVkXzM0NyIsImFyZ18zNTAiLCJibmRzXzM0NiIsImFyZ18zNDgiLCJibmRzXzM0NiQwIiwibWVhc3VyZV9hbGxvY2F0aW9uIiwiYmFja3RyYWNlXzM1NiIsImlzX21ham9yXzM1NCIsInNpemVfaW5fd29yZHNfMzUyIiwiYXJnXzM1NyIsImJuZHNfMzUxIiwiYXJnXzM1NSIsImJuZHNfMzUxJDAiLCJhcmdfMzUzIiwiYm5kc18zNTEkMSIsIm1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIiwibG9nIiwibWFqb3JfYWxsb2NzIiwibWlub3JfYWxsb2NzIiwib25fYWxsb2MiLCJpc19tYWpvciIsImJhY2t0cmFjZSIsImJhY2t0cmFjZSQwIiwiaW5mbyQwIiwidHJhY2tlciIsImFkZF9maW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmaW5hbGl6ZV9yZWxlYXNlIiwidG9fc3RhYmxlX2Zvcm1hdCIsIm9mX3N0YWJsZV9mb3JtYXQiLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAwOCIsIm9mX2NhbWxfaW50IiwidG9fY2FtbF9pbnQiLCJzeXNfYmVoYXZpb3Jfb2Zfc2V4cCIsImF0b21fMDAyIiwiYXRvbV8wMDIkMCIsInN5c19iZWhhdmlvcl9vZl9zZXhwJDAiLCJzZXhwXzAwNyIsInNleHBfb2Zfc3lzX2JlaGF2aW9yIiwiYWJydCIsImFscm0iLCJidXMiLCJjaGxkIiwiY29udCIsImZwZSIsImh1cCIsImlsbCIsImtpbGwiLCJwaXBlIiwicG9sbCIsInByb2YiLCJxdWl0Iiwic2VndiIsInN5cyIsInRlcm0iLCJ0cmFwIiwidHN0cCIsInR0aW4iLCJ0dG91IiwidXJnIiwidXNyMSIsInVzcjIiLCJ2dGFscm0iLCJ4Y3B1IiwieGZzeiIsImtub3duIiwibmFtZV9hbmRfdmVyc2lvbl9ieV90IiwidF9ieV9uYW1lIiwiYmVoYXZpb3JfYnlfdCIsInN0YWJsZV92ZXJzaW9uIiwiYmVoYXZpb3IiLCJ0b19zdHJpbmdfd2l0aF92ZXJzaW9uIiwicmVxdWVzdGVkX3ZlcnNpb24iLCJuZWVkZWRfdmVyc2lvbiIsInNuIiwiZGVmYXVsdF9zeXNfYmVoYXZpb3IiLCJzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIiwiY2FuX3NlbmRfdG8iLCJvZl9zeXN0ZW1faW50Iiwic2VuZCIsInNlbmRfZXhuIiwic2VuZF9pIiwic2V4cF9vZl9waWRfc3BlYyIsInNpZ3BlbmRpbmciLCJzaWdwcm9jbWFzayIsInNpZ3N1c3BlbmQiLCJ0b19zeXN0ZW1faW50Iiwic2lnbmFsIiwiaGFuZGxlIiwiaGFuZGxlX2RlZmF1bHQiLCJpZ25vcmUiLCJwcmludCIsImNhdGNoJDAiLCJwcmludF9iYWNrdHJhY2UiLCJnZXRfYmFja3RyYWNlIiwicmVjb3JkX2JhY2t0cmFjZSIsImJhY2t0cmFjZV9zdGF0dXMiLCJjYXB0dXJlIiwiZ2VuZXJhbCIsImhhc2hhYmxlJDEiLCJjYWNoZV9zaXplX2JvdW5kIiwibWF4X2NhY2hlX3NpemUiLCJjYWNoZSQwIiwiY2FjaGUiLCJyZWFsbHlfY2FsbF9mIiwiZl9vbmVzdGVwIiwibWVtb2l6ZWQiLCJvZl9jb21wYXJhYmxlIiwidiQxIiwiaW5pdGlhbF9sZW5ndGgiLCJuZXZlcl9zaHJpbmsiLCJuZXZlcl9zaHJpbmskMCIsImluaXRpYWxfbGVuZ3RoJDAiLCJhcnJfbGVuZ3RoIiwiYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfIiwiYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lIiwiYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtIiwiYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wIiwiY2hlY2tlZCIsImFwcGFyZW50X2Zyb250X2luZGV4IiwiYXBwYXJlbnRfYmFja19pbmRleCIsImFwcGFyZW50X2Zyb250IiwiYXBwYXJlbnRfYmFjayIsImFjdHVhbF9mcm9udCIsImFjdHVhbF9iYWNrIiwiYXBwYXJlbnRfaSIsInJlYWxfaSIsInN0b3BfcG9zIiwiYXBwYXJlbnRfaSQwIiwicmVhbF9pJDAiLCJyZWFsX2kkMSIsImFwcGFyZW50X2kkMSIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsImFjYyQ0IiwiaXRlcmlfaW50ZXJuYWwiLCJuZXdfYXJyIiwib2xkX2FyciIsImJyZWFrX3BvcyIsIm1heWJlX3Nocmlua191bmRlcmx5aW5nIiwiZ3Jvd191bmRlcmx5aW5nIiwicGVla19mcm9udF9ub25lbXB0eSIsInBlZWtfYmFja19ub25lbXB0eSIsImRlcXVldWVfZnJvbnRfbm9uZW1wdHkiLCJkZXF1ZXVlX2JhY2tfbm9uZW1wdHkiLCJkcm9wX2dlbiIsImFzc2VydF9ub3RfZW1wdHkiLCJ0cnVlX2luZGV4X2V4biIsImlfZnJvbV96ZXJvIiwidHJ1ZV9pIiwiZ2V0X29wdCIsImJhY2tfaW5kZXhfZXhuIiwiZnJvbnRfaW5kZXhfZXhuIiwiZ2V0JDAiLCJ1bnRyYW5zbGF0ZWRfaSIsImVwcmludCIsImVwcmludHMiLCJjaGVja19pbnZhcmlhbnQiLCJzaG93X21lc3NhZ2VzIiwiZGVidWciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwiYXJnMV8wMDYiLCJyZXMwXzAwNyIsInJlczFfMDA4IiwicmVzdWx0X29yX2V4biIsImFyZzFfMDEwIiwic2hvdWxkX3ByaW50X2JhY2t0cmFjZSIsImFtX2ludGVybmFsIiwiYW1mIiwiYW1zIiwidW5peF9xdW90ZSIsImNvbmNhdF9xdW90ZWQiLCJzcGxpdF9jb21tYW5kIiwiYWRkX3VuaXQiLCJ1bnRpbF9lbXB0eSIsImJzdHJfMDAyIiwicG9zXzAwNCIsImxlbl8wMDYiLCJpbml0XzAwOCIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwicmVzaXplIiwibWluX2xlbiIsIm5ld19sZW4iLCJuZXdfYnVmIiwiaW50ZXJuYWwiLCJic3RyIiwiY29udGVudHNfYnl0ZXMiLCJiaWdfY29udGVudHMiLCJ2b2xhdGlsZV9jb250ZW50cyIsImFkZF9jaGFyIiwicmVzZXQiLCJhZGRfc3Vic3RyaW5nIiwibmV3X3BvcyIsImFkZF9zdWJieXRlcyIsImFkZF9iaWdzdHJpbmciLCJhZGRfc3RyaW5nIiwiYWRkX2J5dGVzIiwiYWRkX2J1ZmZlciIsImJ1Zl9kc3QiLCJidWZfc3JjIiwiYWRkX2Jpbl9wcm90IiwiYWRkX3N1YnN0aXR1dGUiLCJsaW0kMSIsInByZXZpb3VzIiwiaSQ0IiwicHJldmlvdXMkMCIsImkkNSIsIm9wZW5pbmciLCJsaW0kMCIsImkkMiIsImkkMyIsIm5ld19zdGFydCIsImskMiIsImNsb3NpbmciLCJsaW0iLCJpJDEiLCJuZXh0X2kiLCJpJDYiLCJpJDciLCJpJDgiLCJmb3JtYXR0ZXJfb2ZfYnVmZmVyIiwiYnByaW50ZiQwIiwidl9pbmRleCIsInZfbWluX2luZGV4Iiwidl9tYXhfaW5kZXgiLCJhcmc1XzAwOSIsImFyZzRfMDA4IiwiYXJnM18wMDciLCJhcmcyXzAwNiIsInJlczJfMDEyIiwicmVzM18wMTMiLCJyZXM0XzAxNCIsInJlczVfMDE1IiwiYXJnNV8wMjMiLCJhcmc0XzAyMiIsImFyZzNfMDIxIiwiYXJnMl8wMjAiLCJhcmcxXzAxOSIsImFyZzBfMDE4IiwicmVzNV8wMjkiLCJsYWJlbCIsImNyZWF0ZV9hbGwiLCJtYXhfaW5kZXgiLCJtaW5faW5kZXgiLCJkb2VzX3JhaXNlIiwic3ltYm9sJDE4IiwiaGFuZGxlcnMiLCJrZXkiLCJpbnAiLCJjYWxsYmFjayIsInZhbHVlIiwiaW5qZWN0IiwidiIsImNhbGxlZCIsImNhbGxiYWNrJDAiLCJhIiwiaGFuZGxlIiwicyIsInByaW50X3MiLCJOZXZlciIsInJldHVybiQwIiwiYmluZCIsInQiLCJmIiwib2ZfZnVuIiwibGF6eSIsIm1hcCIsImV2YWwkMCIsInQkMCIsInQkMSIsImwiLCJmJDAiLCJ0JDIiLCJjYWxsYmFjayQzIiwiY2FsbGJhY2skMSIsImYkMSIsInQkMyIsImNhbGxiYWNrJDQiLCJjYWxsYmFjayQyIiwiaGFuZGxlJDAiLCJoYW5kbGUkMSIsIm9uX3Jlc3BvbnNlIiwib2Zfc3luY19mdW4iLCJtYWtlIiwicmVxdWVzdCIsInJlc3BvbmRfdG8iLCJyZXNwb25zZSIsIm1ha2UkMCIsImV2YWx1YXRvciIsImNyZWF0ZSIsInVwb24iLCJoYW5kbGVyIiwieCIsImZpbGxfaWZfZW1wdHkiLCJwZWVrIiwiaGFuZGxlJDIiLCJvZl9zdmFyX2Z1biIsImNyZWF0ZSQwIiwicXVlcmllc19wZW5kaW5nX3Jlc3BvbnNlIiwicXVlcnkiLCJtYXliZV9yZXNwb25kIiwicmVzcCIsIm9mX3F1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIiLCJxcnQiLCJlcnJvcl9zb3VyY2VfMDAzIiwidF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX3QiLCJlcXVhbCIsInhfMDA3IiwieF8wMDgiLCJzb3VyY2UiLCJ0IiwibmV4dF9wb3MiLCJpc19uZXh0X2VvZiIsIm5leHRfY2hhciIsInJlc2V0IiwicGFyYW0iLCJjb25zdW1lXzEiLCJvbmVfY2hhcl90b2tlbiIsInRvayIsImVycm9yIiwiYWNjZXB0IiwiZiIsImFjY2VwdF9jaGFyIiwiY2giLCJhY2NlcHRfc3RyaW5nIiwic3RyIiwicG9zIiwic3RyX2xlbiIsImV4cGVjdCIsImV4cGVjdF9jaGFyIiwibWFueSIsIm1hbnkxIiwicGx1c19vcl9taW51cyIsIm5tc3RhcnQiLCJubWNoYXIiLCJpZGVudCIsImlkZW50X29yX2Z1bmN0aW9uIiwiaXNfd2hpdGVzcGFjZSIsInN0YXJ0X2lkZW50IiwicHJlZml4IiwiY3VyIiwiYiIsIm5ld19vZmYiLCJxdW90ZSIsIm0iLCJjIiwibWFyayIsIm5leHQiLCJjcmVhdGUiLCJzIiwic2xpY2UiLCJjdXJyZW50IiwiY3VycmVudF90ZXh0IiwibGVuIiwidGVzdCIsImFjYyIsInN0YXJ0IiwiYWNjJDAiLCJ4XzAxNyIsImFyZzJfMDEzIiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJyZXMyXzAxNiIsInZhbHVlIiwiY3QiLCJza2lwX3doaXRlX3NwYWNlIiwiZXhwZWN0ZWQiLCJnb3QiLCJhbnkiLCJyZXMiLCJleHBlY3RfYW55IiwidmFsdWUwIiwiZXhwZWN0X3ZhbHVlIiwiZGVjbGFyYXRpb24iLCJpZGVudF9sZW4iLCJpZGVudF9zdGFydCIsInZhbHVlX3N0YXJ0IiwibmV4dF90b2tlbl9zdGFydCIsImV4cGVjdF9kZWNsYXJhdGlvbiIsImZpZWxkIiwiZXhwZWN0X2RlY2xhcmF0aW9uX2xpc3QiLCJhZGQiLCJrdiIsInYiLCJrIiwicGFyc2UiLCJwYXJzZXJfZiIsInZhbGlkYXRlX3ZhbHVlIiwicGFyc2VfZGVjbGFyYXRpb25fbGlzdCIsInRlc3RfcGFyc2VyIiwicCIsInNleHBfb2ZfYXJnIiwiciIsImN1c3RvbV9wcmludGZfMDAyIiwieF8wMDMiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMCIsInJlczFfMDExIiwieF8wMTYiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwiZXJyIiwiZXJyb3Jfc291cmNlXzAwNyIsImVycm9yX3NvdXJjZV8wMjciLCJlcnJvcl9zb3VyY2VfMDI5IiwiZXJyb3Jfc291cmNlXzA1MiIsImVycm9yX3NvdXJjZV8wODkiLCJlcnJvcl9zb3VyY2VfMTE0IiwiZXJyb3Jfc291cmNlXzEyOCIsImVycm9yX3NvdXJjZV8xNjEiLCJlcnJvcl9zb3VyY2VfMTkzIiwiZXJyb3Jfc291cmNlXzI0MSIsImVycm9yX3NvdXJjZV8yNDMiLCJzZXhwXzAwNiIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwieF8wMTMiLCJhcmcxXzAxMCIsImFyZzBfMDA5IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsImNvbXBhcmUiLCJhXzAxNCIsImJfMDE1IiwiYV8wMTYiLCJiXzAxNyIsInRfMDE5IiwidF8wMTgiLCJ0XzAyMSIsInRfMDIwIiwibiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJiaW5fc2l6ZV90IiwidjIiLCJ2MSIsInNpemUiLCJiaW5fd3JpdGVfdCIsImJ1ZiIsInBvcyQwIiwiYmluX3dyaXRlcl90IiwiYmluX3JlYWRfdCIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwiYmluX3JlYWRlcl90IiwiYmluX3QiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwIiwic2V4cF8wMjUiLCJhdG9tXzAyMyIsImF0b21fMDIzJDAiLCJjc3NfZ2xvYmFsX3ZhbHVlc19vZl9zZXhwJDAiLCJzZXhwXzAyOCIsInNleHBfb2ZfY3NzX2dsb2JhbF92YWx1ZXMiLCJncm91cCQwIiwiYmluX3NoYXBlX2Nzc19nbG9iYWxfdmFsdWVzIiwiY29tcGFyZV9jc3NfZ2xvYmFsX3ZhbHVlcyIsImFfMDMwIiwiYl8wMzEiLCJmbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCIsImRpZ2l0cyIsImYycyIsInRfb2Zfc2V4cCQwIiwic2V4cF8wMzMiLCJmaWVsZF9zZXhwc18wMzQiLCJyXzAzNSIsImdfMDM3IiwiYl8wMzkiLCJhXzA0MSIsImR1cGxpY2F0ZXNfMDQzIiwiZXh0cmFfMDQ0Iiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0NyIsImZpZWxkX25hbWVfMDQ1IiwidGFpbF8wNTQiLCJmaWVsZF9zZXhwXzA0NiQ0IiwiZmllbGRfc2V4cF8wNDYiLCJ4XzA1NSIsImZpZWxkX3NleHBfMDQ2JDAiLCJmdmFsdWVfMDUxIiwiZmllbGRfc2V4cF8wNDYkMSIsImZ2YWx1ZV8wNTAiLCJmaWVsZF9zZXhwXzA0NiQyIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDQ4IiwiYV8wNDIiLCJiXzA0MCIsImdfMDM4Iiwicl8wMzYiLCJzZXhwX29mX3QkMCIsImFfMDYzIiwiYl8wNjEiLCJnXzA1OSIsInJfMDU3IiwiYXJnXzA2NCIsImJuZHNfMDU2IiwiYXJnXzA2MiIsImJuZHNfMDU2JDAiLCJhcmdfMDYwIiwiYm5kc18wNTYkMSIsImFyZ18wNTgiLCJibmRzXzA1NiQyIiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2NCIsInYzIiwic2l6ZSQwIiwic2l6ZSQxIiwiYmluX3dyaXRlX3QkMCIsInBvcyQxIiwicG9zJDIiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsInZfciIsInZfZyIsInZfYiIsInZfYSIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsImNvbXBhcmUkMCIsImFfMDY1IiwiYl8wNjYiLCJuJDAiLCJuJDEiLCJhXzA2NyIsImJfMDY4IiwiZyIsImEiLCJ0X29mX3NleHAkMSIsInNleHBfMDcwIiwiZmllbGRfc2V4cHNfMDcxIiwiaF8wNzIiLCJzXzA3NCIsImxfMDc2IiwiYV8wNzgiLCJkdXBsaWNhdGVzXzA4MCIsImV4dHJhXzA4MSIsInNleHBfMDcwJDAiLCJmaWVsZF9zZXhwc18wODQiLCJmaWVsZF9uYW1lXzA4MiIsInRhaWxfMDkxIiwiZmllbGRfc2V4cF8wODMkNCIsImZpZWxkX3NleHBfMDgzIiwieF8wOTIiLCJmaWVsZF9zZXhwXzA4MyQwIiwiZnZhbHVlXzA4NyIsImZpZWxkX3NleHBfMDgzJDEiLCJmdmFsdWVfMDg2IiwiZmllbGRfc2V4cF8wODMkMiIsImZ2YWx1ZV8wODgiLCJmaWVsZF9zZXhwXzA4MyQzIiwiZnZhbHVlXzA4NSIsImFfMDc5IiwibF8wNzciLCJzXzA3NSIsImhfMDczIiwic2V4cF9vZl90JDEiLCJhXzEwMCIsImxfMDk4Iiwic18wOTYiLCJoXzA5NCIsImFyZ18xMDEiLCJibmRzXzA5MyIsImFyZ18wOTkiLCJibmRzXzA5MyQwIiwiYXJnXzA5NyIsImJuZHNfMDkzJDEiLCJhcmdfMDk1IiwiYm5kc18wOTMkMiIsImdyb3VwJDIiLCJiaW5fc2hhcGVfdCQxIiwiYmluX3NpemVfdCQxIiwiYmluX3dyaXRlX3QkMSIsImJpbl93cml0ZXJfdCQxIiwiYmluX3JlYWRfdCQzIiwiYmluX3JlYWRfdCQ0Iiwidl9oIiwidl9zIiwidl9sIiwiYmluX3JlYWRlcl90JDEiLCJiaW5fdCQxIiwiY29tcGFyZSQxIiwiYV8xMDIiLCJiXzEwMyIsImFfMTA0IiwiYl8xMDUiLCJjcmVhdGUkMCIsImgiLCJsIiwidF9vZl9zZXhwJDIiLCJzZXhwXzEwOSIsImF0b21fMTA3Iiwic2V4cF9hcmdzXzExMCIsImF0b21fMTA3JDAiLCJhcmcwXzEyMiIsInJlczBfMTIzIiwiYXJnMF8xMTYiLCJyZXMwXzExNyIsImFyZzBfMTE5IiwicmVzMF8xMjAiLCJhcmcwXzExMiIsInJlczBfMTEzIiwiYXJnMF8xMjUiLCJyZXMwXzEyNiIsInRfb2Zfc2V4cCQzIiwic2V4cF8xMjciLCJzZXhwX29mX3QkMiIsInZfMTM0Iiwidl8xMzMiLCJ2XzEyOSIsInZfMTMxIiwidl8xMzAiLCJ2XzEzMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfdCQyIiwiYmluX3NpemVfdCQyIiwiYXJncyIsInNpemVfYXJncyIsImFyZ3MkMCIsInNpemVfYXJncyQwIiwiYXJncyQxIiwic2l6ZV9hcmdzJDEiLCJhcmdzJDIiLCJzaXplX2FyZ3MkMiIsImFyZ3MkMyIsInNpemVfYXJncyQzIiwiYmluX3dyaXRlX3QkMiIsInBvcyQzIiwicG9zJDQiLCJiaW5fd3JpdGVyX3QkMiIsImJpbl9yZWFkX3QkNSIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImJpbl9yZWFkX3QkNiIsImJpbl9yZWFkZXJfdCQyIiwiYmluX3QkMiIsImNvbXBhcmUkMiIsImFfMTM1IiwiYl8xMzYiLCJyaWdodF8xNDYiLCJsZWZ0XzE0NSIsInJpZ2h0XzEzOCIsImxlZnRfMTM3IiwicmlnaHRfMTQyIiwibGVmdF8xNDEiLCJyaWdodF8xNDAiLCJsZWZ0XzEzOSIsInJpZ2h0XzE0NCIsImxlZnRfMTQzIiwidG9fc3RyaW5nX2NzcyIsInZhciQwIiwibmFtZSIsImhleCIsImEkMCIsInAkMCIsImdyb3VwJDQiLCJ0X29mX3NleHAkNCIsInNleHBfMTU2IiwiYXRvbV8xNTQiLCJzZXhwX2FyZ3NfMTU3IiwiYXRvbV8xNTQkMCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJhcmcwXzE2NiIsInJlczBfMTY3IiwiYXJnMF8xOTAiLCJyZXMwXzE5MSIsImFyZzBfMTg0IiwicmVzMF8xODUiLCJhcmcwXzE2MyIsInJlczBfMTY0IiwiYXJnMF8xNTkiLCJyZXMwXzE2MCIsImFyZzBfMTg3IiwicmVzMF8xODgiLCJhcmcwXzE4MSIsInJlczBfMTgyIiwiYXJnMF8xNzgiLCJyZXMwXzE3OSIsImFyZzBfMTc1IiwicmVzMF8xNzYiLCJhcmcwXzE3MiIsInJlczBfMTczIiwidF9vZl9zZXhwJDUiLCJzZXhwXzE5MiIsInNleHBfb2ZfdCQzIiwidl8yMDUiLCJ2XzIwMyIsInZfMjAxIiwidl8xOTgiLCJ2XzE5NiIsInZfMTk0Iiwidl8yMDQiLCJ2XzIwMiIsInZfMjAwIiwidl8xOTciLCJ2XzE5NSIsInZfMTk5IiwiZ3JvdXAkNSIsImJpbl9zaGFwZV90JDMiLCJjb21wYXJlJDMiLCJhXzIwNiIsImJfMjA3IiwicmlnaHRfMjE3IiwibGVmdF8yMTYiLCJyaWdodF8yMTMiLCJsZWZ0XzIxMiIsInJpZ2h0XzIwOSIsImxlZnRfMjA4IiwicmlnaHRfMjI5IiwibGVmdF8yMjgiLCJyaWdodF8yMjciLCJsZWZ0XzIyNiIsInJpZ2h0XzIyMyIsImxlZnRfMjIyIiwicmlnaHRfMjI1IiwibGVmdF8yMjQiLCJyaWdodF8yMjEiLCJsZWZ0XzIyMCIsInJpZ2h0XzIxNSIsImxlZnRfMjE0IiwicmlnaHRfMjExIiwibGVmdF8yMTAiLCJyaWdodF8yMTkiLCJsZWZ0XzIxOCIsInRvX3N0cmluZ19jc3MkMCIsImkiLCJmJDAiLCJmJDEiLCJwJDEiLCJpJDAiLCJwJDIiLCJwZXJjZW50MTAwIiwiZ3JvdXAkNiIsImNvbXBhcmUkNCIsImFfMjMyIiwiYl8yMzMiLCJ0X29mX3NleHAkNiIsInNleHBfMjM5IiwiYXRvbV8yMzciLCJhdG9tXzIzNyQwIiwidF9vZl9zZXhwJDciLCJzZXhwXzI0MiIsInNleHBfb2ZfdCQ0Iiwidl8yNDQiLCJ0b19zdHJpbmdfY3NzJDEiLCJ2YWx1ZV9tYXAiLCJvIiwiY29tYmluZSIsInQxIiwidDIiLCJjb25jYXQiLCJ0b19zdHJpbmdfbGlzdCIsInRvX3N0cmluZ19jc3MkMiIsIm9mX3N0cmluZ19jc3NfZXhuIiwiY3JlYXRlX3JhdyIsInNob3VsZF92YWxpZGF0ZSIsImNyZWF0ZSQxIiwiaXNfZW1wdHkiLCJlbXB0eSIsImNyZWF0ZV9wbGFjZW1lbnQiLCJsZW5ndGgiLCJsZWZ0IiwidG9wIiwiYm90dG9tIiwicmlnaHQiLCJwb3NpdGlvbiIsInRwIiwiYnQiLCJsdCIsInJ0IiwiY29udmVydCIsIm9wdF9sIiwiYm94X3NpemluZyIsImRpc3BsYXkiLCJ2aXNpYmlsaXR5IiwibWFrZV9vdmVyZmxvdyIsIm92ZXJmbG93Iiwib3ZlcmZsb3dfeCIsIm92ZXJmbG93X3kiLCJ6X2luZGV4Iiwib3BhY2l0eSIsImNyZWF0ZV9sZW5ndGhfZmllbGQiLCJ3aGl0ZV9zcGFjZSIsImZvbnRfc2l6ZSIsImZvbnRfZmFtaWx5IiwiZm9udF9zdHlsZSIsImZvbnRfd2VpZ2h0IiwiYm9sZCIsImZvbnRfdmFyaWFudCIsImZvbnQiLCJmYW1pbHkiLCJzdHlsZSIsIndlaWdodCIsInZhcmlhbnQiLCJjcmVhdGVfd2l0aF9jb2xvciIsImNvbG9yIiwiYmFja2dyb3VuZF9jb2xvciIsImZpbGwiLCJzdG9wc190b19zdHJpbmciLCJzdG9wcyIsInBjdCIsImJhY2tncm91bmRfaW1hZ2UiLCJzcGVjIiwidXJsIiwic3RvcHMkMCIsImRpcmVjdGlvbiIsImNyZWF0ZV9hbGlnbm1lbnQiLCJ0ZXh0X2FsaWduIiwiaG9yaXpvbnRhbF9hbGlnbiIsInZlcnRpY2FsX2FsaWduIiwiZmxvYXQkMCIsIndpZHRoIiwibWluX3dpZHRoIiwibWF4X3dpZHRoIiwiaGVpZ2h0IiwibWluX2hlaWdodCIsIm1heF9oZWlnaHQiLCJwYWRkaW5nX3RvcCIsInBhZGRpbmdfYm90dG9tIiwicGFkZGluZ19sZWZ0IiwicGFkZGluZ19yaWdodCIsInBhZGRpbmciLCJ1bmlmb3JtX3BhZGRpbmciLCJtYXJnaW5fdG9wIiwibWFyZ2luX2JvdHRvbSIsIm1hcmdpbl9sZWZ0IiwibWFyZ2luX3JpZ2h0IiwibWFyZ2luIiwidW5pZm9ybV9tYXJnaW4iLCJjb25jYXQydiIsImNvbmNhdDN2IiwiYm9yZGVyX3ZhbHVlIiwic3R5bGUkMCIsIndpZHRoJDAiLCJjb2xvciQwIiwiY3JlYXRlX2JvcmRlciIsInNpZGUiLCJib3JkZXJfdG9wIiwiYm9yZGVyX2JvdHRvbSIsImJvcmRlcl9sZWZ0IiwiYm9yZGVyX3JpZ2h0IiwiYm9yZGVyIiwib3V0bGluZSIsImJvcmRlcl9jb2xsYXBzZSIsImJvcmRlcl9zcGFjaW5nIiwiYm9yZGVyX3JhZGl1cyIsInRleHRfZGVjb3JhdGlvbiIsImxpbmUiLCJsaW5lJDAiLCJpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIiwiZmxleF9jb250YWluZXIiLCJvcHQiLCJhbGlnbl9pdGVtcyIsImp1c3RpZnlfY29udGVudCIsInN0aCIsImlubGluZSIsInN0aCQwIiwic3RoJDEiLCJ3cmFwIiwiZGlyZWN0aW9uJDAiLCJ3cmFwJDAiLCJhbGlnbl9pdGVtcyQwIiwianVzdGlmeV9jb250ZW50JDAiLCJmbGV4X2l0ZW0iLCJvcmRlciIsImdyb3ciLCJiYXNpcyIsInNocmluayIsIm9yZGVyJDAiLCJiYXNpcyQwIiwiZmxleCIsImFsaWduX3NlbGYiLCJyZXNpemUiLCJ2YWx1ZSQwIiwiYW5pbWF0aW9uIiwiZHVyYXRpb24iLCJkZWxheSIsImZpbGxfbW9kZSIsIml0ZXJfY291bnQiLCJ0aW1pbmdfZnVuY3Rpb24iLCJzcGFuX3RvX3N0cmluZyIsImQiLCJmaWxsX21vZGUkMCIsInVzZXJfc2VsZWN0IiwiY3NzIiwiczIiLCJ4IiwidHlwZV9vZiIsIngiLCJpbnN0YW5jZV9vZiIsImNvbnN0ciIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwiZ2xvYmFsIiwiYXJyYXlfbWFrZSIsIm4iLCJhcnJheV9nZXQiLCJhcnJheV9zZXQiLCJhcnJheV9vZl9qc19mcm9tIiwiZiIsIm9ianMiLCJzdGFydCIsImkiLCJhcnJheV9vZl9qcyIsImFycmF5X3RvX2pzIiwiYXJyIiwiYSIsImxpc3Rfb2ZfanNfZnJvbSIsImxpc3Rfb2ZfanMiLCJsaXN0X3RvX2pzIiwibCIsIm9wdGlvbl9vZl9qcyIsIm9wdGlvbl90b19qcyIsInVuaXRfdG9fanMiLCJ1bml0X29mX2pzIiwic2VsZl8xIiwiaGFzX3Byb3BlcnR5IiwibyIsImVtcHR5X29iaiIsIml0ZXJfcHJvcGVydGllcyIsImFwcGx5X2FyciIsImNhbGxfYXJyIiwicyIsImlzX251bGwiLCJvYmpfdHlwZSIsInRfdG9fanMiLCJ0X29mX2pzIiwidF90b19qcyQwIiwidF9vZl9qcyQwIiwidF90b19qcyQxIiwidF9vZl9qcyQxIiwidF90b19qcyQyIiwidF9vZl9qcyQyIiwibmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInRvX3N0cmluZyIsInRvX2pzX3N0cmluZyIsInZhbHVlIiwidG9fanNfc3RyaW5nX2ZpeGVkIiwiZGlnaXRzIiwidG9fanNfc3RyaW5nX3ByZWNpc2lvbiIsInRvX2pzX3N0cmluZ19leHBvbmVudGlhbCIsInRvX3N0cmluZyIsInRvX3N0cmluZ19maXhlZCIsInRvX3N0cmluZ19wcmVjaXNpb24iLCJ0b19zdHJpbmdfZXhwb25lbnRpYWwiLCJwcmludCIsImYiLCJ2aXNpYmlsaXR5X2hhbmRsZXJzIiwic2VxdWVuY2VfYXNfc2libGluZyIsImxlZnQiLCJ1bmxlc3Nfc3RvcHBlZCIsImNvbnRhaW5zX3N0b3AiLCJlcyIsImN1cnJlbnRfZG9tX2V2ZW50IiwiaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIiwiaGFuZGxlIiwiZG9tX2V2ZW50IiwiZXZlbnQiLCJvbGQiLCJzZXhwX29mX3QiLCJ0eXBlX2lkIiwiZ2VuZXJpY19ob29rIiwicGFjayIsImlkIiwiZGVzdHJveSIsInVwZGF0ZSIsImluaXQiLCJpbnB1dF9pZCIsImlucHV0IiwiaW5pdCQwIiwidXBkYXRlJDAiLCJkZXN0cm95JDAiLCJnZW5lcmljX2hvb2skMCIsImV4dHJhIiwiY29tYmluZSIsInJpZ2h0IiwiYXJnMV8wMDIiLCJhcmcwXzAwMSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJpbnB1dF9hbmRfc3RhdGVfaWQiLCJlbGVtZW50Iiwic3RhdGUiLCJhbmltYXRpb25faWQiLCJvbGRfaW5wdXQiLCJjcmVhdGUiLCJjb21iaW5lX2lucHV0cyIsInNldCIsIng3IiwieDUiLCJ4NiIsImdldCIsIngxMSIsIngxMCIsImRlbGV0ZSQwIiwieDE2IiwieDE1IiwidF9vZl9qcyIsIngiLCJ0X3RvX2pzIiwidF9vZl9qcyQwIiwidF90b19qcyQwIiwic2V0X3Byb3BlcnR5IiwiaGFzX3Byb3BlcnR5IiwiaGFzX2F0dHJpYnV0ZSIsInQiLCJuYW1lIiwic2V0X2F0dHJpYnV0ZSIsInRfb2ZfanMkMSIsInRfdG9fanMkMSIsImlzX2VtcHR5IiwiZl9pZCIsImlkX3NleHAiLCJjcmVhdGUkMSIsImluZm8iLCJvcHQiLCJzdGgiLCJzdGgkMCIsInMiLCJlbHQiLCJkb21fbm9kZSIsInMwIiwicHJldl9zdGF0ZSIsImRvbV9ub2RlJDAiLCJlbXB0eSIsInJoYW5kbGVyIiwieF8wMDIiLCJsaGFuZGxlciIsInhfMDAxIiwiY3JlYXRlX2Zsb2F0IiwicHJvcGVydHkiLCJzdHJpbmdfcHJvcGVydHkiLCJib29sX3Byb3BlcnR5Iiwic3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MiLCJjcmVhdGVfaG9vayIsImhvb2siLCJtYW55IiwiYXR0cnMiLCJtYW55X3dpdGhvdXRfbWVyZ2UiLCJjb21iaW5lJDAiLCJ3YXJuaW5nX2NvdW50IiwiY3VycmVudCIsIndhcm5fcyIsInF1b3RhIiwid2FybmluZ19jb3VudCQwIiwicmVzZXRfd2FybmluZ19jb3VudCIsImNvbWJpbmluZ19tYXBfYWRkIiwibWFwIiwia2V5IiwiZXhpc3RpbmdfdmFsdWUiLCJlbXB0eV9tZXJnZSIsInN0eWxlIiwiY3NzIiwidmFsaWRfY2xhc3NfbmFtZSIsImludmFsaWQiLCJjbGFzcyQwIiwiY2xhc3NuYW1lIiwiY2xhc3NlcyIsImNsYXNzZXMkMCIsImNsYXNzbmFtZXMiLCJocmVmIiwiciIsInRhcmdldCIsImNoZWNrZWQiLCJzZWxlY3RlZCIsImhpZGRlbiIsInJlYWRvbmx5IiwiZGlzYWJsZWQiLCJwbGFjZWhvbGRlciIsImF1dG9mb2N1cyIsImZvciQwIiwidHlwZSIsInZhbHVlX3Byb3AiLCJ0YWJpbmRleCIsInRpdGxlIiwic3JjIiwibWluIiwibWF4IiwiY29sc3BhbiIsInJvd3NwYW4iLCJkcmFnZ2FibGUiLCJiIiwiY3JlYXRlJDAiLCJmb2N1cyIsIm1vdXNlIiwia2V5Ym9hcmQiLCJzdWJtaXQiLCJtb3VzZXdoZWVsIiwiY2xpcGJvYXJkIiwiZHJhZyIsInBvaW50ZXIiLCJhbmltYXRpb24iLCJvbiIsImhhbmRsZXIiLCJvbl9mb2N1cyIsIm9uX2JsdXIiLCJvbl9jbGljayIsIm9uX2NvbnRleHRtZW51Iiwib25fZG91YmxlX2NsaWNrIiwib25fZHJhZyIsIm9uX2RyYWdzdGFydCIsIm9uX2RyYWdlbmQiLCJvbl9kcmFnZW50ZXIiLCJvbl9kcmFnbGVhdmUiLCJvbl9kcmFnb3ZlciIsIm9uX2Ryb3AiLCJvbl9tb3VzZW1vdmUiLCJvbl9tb3VzZXVwIiwib25fbW91c2Vkb3duIiwib25fbW91c2VlbnRlciIsIm9uX21vdXNlbGVhdmUiLCJvbl9tb3VzZW92ZXIiLCJvbl9tb3VzZW91dCIsIm9uX2tleXVwIiwib25fa2V5cHJlc3MiLCJvbl9rZXlkb3duIiwib25fc2Nyb2xsIiwib25fc3VibWl0Iiwib25fcG9pbnRlcmRvd24iLCJvbl9wb2ludGVydXAiLCJvbl9tb3VzZXdoZWVsIiwib25fY29weSIsIm9uX2N1dCIsIm9uX3Bhc3RlIiwib25fcmVzZXQiLCJvbl9hbmltYXRpb25lbmQiLCJjb25zdF9pZ25vcmUiLCJydW5fY29lcmNpb24iLCJjb2VyY2lvbiIsInByZXYiLCJvbl9pbnB1dF9ldmVudCIsInRleHQiLCJvbl9jaGFuZ2UiLCJvbl9pbnB1dCIsInRvX3JhdyIsImF0dHIiLCJhdHRyc19vYmoiLCJ0YWtlX3NlY29uZF9zdHlsZXMiLCJmaXJzdCIsInNlY29uZCIsInRha2Vfc2Vjb25kX2NsYXNzZXMiLCJ0YWtlX3NlY29uZF9oYW5kbGVyIiwidGFrZV9zZWNvbmRfaG9vayIsIm1lcmdlIiwiY29tYmluZV9ob29rIiwiY29tYmluZV9oYW5kbGVyIiwiY29tYmluZV9zdHlsZXMiLCJjb21iaW5lX2NsYXNzZXMiLCJhY2MiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm5hbWUkMCIsInN1cHByZXNzX21lcmdlX3dhcm5pbmdzJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJuZXdfc3R5bGVzIiwibmV3X2NsYXNzZXMiLCJzdWJfbWVyZ2UiLCJtYXBfY2xhc3NlcyIsIm1hcF9zdHlsZXMiLCJhdHRycyQwIiwic3ViX21lcmdlJDAiLCJhdHRycyQxIiwic3ViX21lcmdlJDEiLCJtZXJnZSQwIiwiZSIsInByb3BzIiwib2JqIiwidiIsImsiLCJvbl9maWxlX2lucHV0IiwiZmlsZXMiLCJjb21iaW5lJDEiLCJvbl9tb3VudCIsIm1hcF9zdHlsZSIsImFkZF9jbGFzcyIsImMiLCJjcyIsImFkZF9zdHlsZSIsInNzIiwibWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIiwiZmlsdGVyX2J5X2tpbmQiLCJhIiwiY29udGFpbnNfbmFtZSIsImxvb2tpbmdfZm9yIiwiaGFzX2JlZW5fdXNlZCIsImFmdGVyIiwiZyIsImV2IiwibmV3X3N0YXRlIiwiZXZlbnRfa2luZCIsImV2ZW50X2tpbmQkMCIsIm1vdXNldXAiLCJtb3VzZW1vdmUiLCJtb3VzZV91cF90eXBlX2lkIiwibW91c2VfbW92ZV90eXBlX2lkIiwicmVzMV8wMDkiLCJ0YWciLCJ3aXRoX2tleSIsIm1hcF9hdHRycyIsInJhd19hdHRycyIsImFkZF9jbGFzc2VzIiwiY2hpbGRyZW4iLCJ3Iiwia2luZCIsImNoaWxkcmVuX3JhdyIsIm90aGVyIiwiZWxlbWVudF9leHBlcnQiLCJ3aWRnZXQiLCJjcmVhdGVfY2hpbGRsZXNzIiwiY3JlYXRlX3N2ZyIsIm5vbmUiLCJ0ZXh0ZiIsImZvcm1hdCIsIndpZGdldF9vZl9tb2R1bGUiLCJtIiwiYXJnMF8wMDYiLCJzdGF0ZV8wMDQiLCJpbnB1dF8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsInJlczBfMDA4IiwicHJldl9pbnB1dCIsImVsZW1lbnQkMCIsInN0YXRlJDAiLCJpIiwidG9fZG9tIiwiaW5uZXJfaHRtbCIsImNvbnRlbnQiLCJidWlsZF9zZXhwIiwiZGVidWciLCJpbm5lcl9odG1sX3N2ZyIsImlubmVyX2h0bWwkMCIsImJvZHkiLCJidXR0b24iLCJjb2RlIiwiZGl2IiwibWFpbiIsImZpZWxkc2V0IiwiZm9vdGVyIiwiaDEiLCJoMiIsImgzIiwiaDQiLCJoNSIsImg2IiwiaGVhZGVyIiwiaHRtbCIsInRleHRhcmVhIiwic2VsZWN0Iiwib3B0aW9uIiwibGFiZWwiLCJsaSIsInAiLCJwcmUiLCJzZWN0aW9uIiwic3BhbiIsInN0cm9uZyIsInRhYmxlIiwidGJvZHkiLCJ0ZCIsInRoIiwidGhlYWQiLCJ0ciIsInVsIiwib2wiLCJiciIsImhyIiwic2V4cF9mb3JfZGVidWdnaW5nIiwiaW5kZW50Iiwic2V4cCIsInByZXZpb3VzIiwiYXBwbHkiLCJjcmVhdGUkMiIsImNyZWF0ZV9zdmckMCIsImhlcmUiLCJlcnJvcl9zb3VyY2VfMDA0IiwidF9vZl9zZXhwIiwic2V4cF9vZl90IiwidmFsaWRhdGUiLCJ0IiwiZXF1YWwiLCJ0MSIsInQyIiwidF9vZl9zZXhwJDEiLCJzZXhwXzAwNiIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsInNleHBfb2ZfdCQxIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsInQxIiwidDIiLCJ0MyIsInQ0IiwidDUiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsInQxMCIsInQxMSIsInQxMiIsInQxMyIsInQxNCIsInNleHBfb2ZfdCIsInZfMDA2Iiwic2xvdHNfcGVyX3R1cGxlXzAwMiIsImFyZ18wMDMiLCJibmRzXzAwMSIsInNleHBfb2ZfdCQwIiwib2ZfdHVwbGVfMDA3Iiwib2ZfdmFyaWFudF8wMDgiLCJzbG90c19wZXJfdHVwbGUiLCJuIiwic2V4cF9vZl90MSIsIm9mX2EwXzAwOSIsInNleHBfb2ZfdDIiLCJvZl9hMF8wMTAiLCJvZl9hMV8wMTEiLCJzZXhwX29mX3QzIiwib2ZfYTBfMDEyIiwib2ZfYTFfMDEzIiwib2ZfYTJfMDE0Iiwic2V4cF9vZl90NCIsIm9mX2EwXzAxNSIsIm9mX2ExXzAxNiIsIm9mX2EyXzAxNyIsIm9mX2EzXzAxOCIsInNleHBfb2ZfdDUiLCJvZl9hMF8wMTkiLCJvZl9hMV8wMjAiLCJvZl9hMl8wMjEiLCJvZl9hM18wMjIiLCJvZl9hNF8wMjMiLCJzZXhwX29mX3Q2Iiwib2ZfYTBfMDI0Iiwib2ZfYTFfMDI1Iiwib2ZfYTJfMDI2Iiwib2ZfYTNfMDI3Iiwib2ZfYTRfMDI4Iiwib2ZfYTVfMDI5Iiwic2V4cF9vZl90NyIsIm9mX2EwXzAzMCIsIm9mX2ExXzAzMSIsIm9mX2EyXzAzMiIsIm9mX2EzXzAzMyIsIm9mX2E0XzAzNCIsIm9mX2E1XzAzNSIsIm9mX2E2XzAzNiIsInNleHBfb2ZfdDgiLCJvZl9hMF8wMzciLCJvZl9hMV8wMzgiLCJvZl9hMl8wMzkiLCJvZl9hM18wNDAiLCJvZl9hNF8wNDEiLCJvZl9hNV8wNDIiLCJvZl9hNl8wNDMiLCJvZl9hN18wNDQiLCJzZXhwX29mX3Q5Iiwib2ZfYTBfMDQ1Iiwib2ZfYTFfMDQ2Iiwib2ZfYTJfMDQ3Iiwib2ZfYTNfMDQ4Iiwib2ZfYTRfMDQ5Iiwib2ZfYTVfMDUwIiwib2ZfYTZfMDUxIiwib2ZfYTdfMDUyIiwib2ZfYThfMDUzIiwic2V4cF9vZl90MTAiLCJvZl9hMF8wNTQiLCJvZl9hMV8wNTUiLCJvZl9hMl8wNTYiLCJvZl9hM18wNTciLCJvZl9hNF8wNTgiLCJvZl9hNV8wNTkiLCJvZl9hNl8wNjAiLCJvZl9hN18wNjEiLCJvZl9hOF8wNjIiLCJvZl9hOV8wNjMiLCJzZXhwX29mX3QxMSIsIm9mX2EwXzA2NCIsIm9mX2ExXzA2NSIsIm9mX2EyXzA2NiIsIm9mX2EzXzA2NyIsIm9mX2E0XzA2OCIsIm9mX2E1XzA2OSIsIm9mX2E2XzA3MCIsIm9mX2E3XzA3MSIsIm9mX2E4XzA3MiIsIm9mX2E5XzA3MyIsIm9mX2ExMF8wNzQiLCJzZXhwX29mX3QxMiIsIm9mX2EwXzA3NSIsIm9mX2ExXzA3NiIsIm9mX2EyXzA3NyIsIm9mX2EzXzA3OCIsIm9mX2E0XzA3OSIsIm9mX2E1XzA4MCIsIm9mX2E2XzA4MSIsIm9mX2E3XzA4MiIsIm9mX2E4XzA4MyIsIm9mX2E5XzA4NCIsIm9mX2ExMF8wODUiLCJvZl9hMTFfMDg2Iiwic2V4cF9vZl90MTMiLCJvZl9hMF8wODciLCJvZl9hMV8wODgiLCJvZl9hMl8wODkiLCJvZl9hM18wOTAiLCJvZl9hNF8wOTEiLCJvZl9hNV8wOTIiLCJvZl9hNl8wOTMiLCJvZl9hN18wOTQiLCJvZl9hOF8wOTUiLCJvZl9hOV8wOTYiLCJvZl9hMTBfMDk3Iiwib2ZfYTExXzA5OCIsIm9mX2ExMl8wOTkiLCJzZXhwX29mX3QxNCIsIm9mX2EwXzEwMCIsIm9mX2ExXzEwMSIsIm9mX2EyXzEwMiIsIm9mX2EzXzEwMyIsIm9mX2E0XzEwNCIsIm9mX2E1XzEwNSIsIm9mX2E2XzEwNiIsIm9mX2E3XzEwNyIsIm9mX2E4XzEwOCIsIm9mX2E5XzEwOSIsIm9mX2ExMF8xMTAiLCJvZl9hMTFfMTExIiwib2ZfYTEyXzExMiIsIm9mX2ExM18xMTMiLCJuYW1lJDEiLCJwcmVmaXgiLCJuYW1lJDAiLCJuYW1lIiwiZmFpbHdpdGhzIiwiYXJjaF9zaXh0eWZvdXIiLCJudW1fYml0cyIsIm1heF92YWx1ZSIsInRvX3N0cmluZyIsInNwcmludGYiLCJjb25jYXQiLCJsIiwibWF4X3Nsb3QiLCJvZl9zbG90c18wMDciLCJvZl9hXzAwOCIsImVxdWFsIiwidDAiLCJhcnJheV9pbmRleF9udW1fYml0cyIsIm1hc2tlZF90dXBsZV9pZF9udW1fYml0cyIsIm1heF9hcnJheV9sZW5ndGgiLCJpbnZhcmlhbnQiLCJ0IiwiaW5pdCIsIm9mX2ludCIsImkiLCJleGFtcGxlcyIsInR1cGxlX2lkX21hc2siLCJ0eXBlbmFtZV9vZl90IiwidHlwZXJlcF9vZl90Iiwib2Zfc2xvdHMiLCJuYW1lX29mX3QiLCJzZXhwX29mX3QkMSIsInBoeXNfZXF1YWwiLCJwaHlzX2NvbXBhcmUiLCJudWxsJDAiLCJpc19udWxsIiwiY3JlYXRlIiwiaGVhZGVyX2luZGV4IiwidHVwbGVfaWQiLCJoZWFkZXJfaW5kZXhfbWFzayIsIm1hc2tlZF90dXBsZV9pZCIsImludmFyaWFudCQwIiwic2xvdF9pbmRleCIsInNsb3QiLCJmaXJzdF9zbG90X2luZGV4IiwidG9faW50NjMiLCJvZl9pbnQ2MyIsIm51bGwkMSIsImlzX251bGwkMCIsImlzX2ZyZWUiLCJpc191c2VkIiwiaWQiLCJtZXRhZGF0YV9pbmRleCIsInN0YXJ0X29mX3R1cGxlc19pbmRleCIsIm1heF9jYXBhY2l0eSIsImR1bW15IiwiciIsImZpcnN0X2ZyZWUiLCJzZXRfZmlyc3RfZnJlZSIsInYiLCJuZXh0X2lkIiwic2V0X25leHRfaWQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiY2FwYWNpdHkiLCJkdW1teSQwIiwiZmlyc3RfZnJlZSQwIiwibmV4dF9pZCQwIiwibGVuZ3RoJDAiLCJjYXBhY2l0eSQwIiwic2xvdHNfcGVyX3R1cGxlJDAiLCJhcnJheV9pbmRpY2VzX3Blcl90dXBsZSIsImFycmF5X2xlbmd0aCIsInR1cGxlX251bV90b19oZWFkZXJfaW5kZXgiLCJ0dXBsZV9udW0iLCJ0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCIsIm1ldGFkYXRhIiwibGVuZ3RoJDEiLCJzZXhwX29mX3QkMyIsInNleHBfb2ZfdHkiLCJjYXBhY2l0eV8wMTgiLCJzbG90c19wZXJfdHVwbGVfMDE2IiwibGVuZ3RoXzAyMCIsIm5leHRfaWRfMDIyIiwiZmlyc3RfZnJlZV8wMjQiLCJkdW1teV8wMjYiLCJhcmdfMDI3IiwiYm5kc18wMTUiLCJhcmdfMDI1IiwiYm5kc18wMTUkMCIsImFyZ18wMjMiLCJibmRzXzAxNSQxIiwiYXJnXzAyMSIsImJuZHNfMDE1JDIiLCJhcmdfMDE5IiwiYm5kc18wMTUkMyIsImFyZ18wMTciLCJibmRzXzAxNSQ0IiwidW5zYWZlX2hlYWRlciIsInVuc2FmZV9zZXRfaGVhZGVyIiwiaGVhZGVyIiwiaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyIsInVuc2FmZV9wb2ludGVyX2lzX2xpdmUiLCJwb2ludGVyIiwiaGVhZGVyX2luZGV4JDAiLCJwb2ludGVyX2lzX3ZhbGlkIiwiaWRfb2ZfcG9pbnRlciIsImlzX3ZhbGlkX2hlYWRlcl9pbmRleCIsIm1ldGFkYXRhJDAiLCJwb2ludGVyX29mX2lkX2V4biIsInQkMiIsInQkMCIsInNob3VsZF9lcXVhbCIsInQkMSIsInhfMDA5IiwiZXhuJDAiLCJleG4iLCJhcmcxXzAxMSIsImFyZzBfMDEwIiwicmVzMF8wMTIiLCJyZXMxXzAxMyIsImFyZzJfMDMwIiwiYXJnMV8wMjkiLCJhcmcwXzAyOCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJyZXMyXzAzMyIsImludmFyaWFudCQxIiwiaW52YXJpYW50X2EiLCJjaGVjayIsImYiLCJmaWVsZCIsImZpcnN0X3Nsb3QiLCJmcmVlIiwiYXJnMV8wMzUiLCJhcmcwXzAzNCIsInJlczBfMDM2IiwicmVzMV8wMzciLCJjYXBhY2l0eSQxIiwiaXNfZnVsbCIsInVuc2FmZV9hZGRfdG9fZnJlZV9saXN0Iiwic2V0X21ldGFkYXRhIiwiY3JlYXRlX2FycmF5IiwidW5zYWZlX2luaXRfcmFuZ2UiLCJsbyIsImhpIiwidHVwbGVfbnVtJDAiLCJjcmVhdGVfd2l0aF9kdW1teSIsInNsb3RzIiwibWF4X2NhcGFjaXR5JDAiLCJhcmcxXzA0MCIsImFyZzBfMDM5IiwicmVzMF8wNDEiLCJ2XzAzOCIsInJlczFfMDQyIiwiY3JlYXRlJDAiLCJncm93Iiwib2xkX2NhcGFjaXR5IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInZfMDAxIiwicmVzMF8wMDUiLCJ2XzAwMiIsInJlczFfMDA2IiwibWV0YWRhdGEkMiIsIm1ldGFkYXRhJDEiLCJtYWxsb2MiLCJ4XzA0MyIsInVuc2FmZV9mcmVlIiwicG9zIiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJuZXcxIiwiYTAiLCJvZmZzZXQiLCJuZXcyIiwiYTEiLCJuZXczIiwiYTIiLCJuZXc0IiwiYTMiLCJuZXc1IiwiYTQiLCJuZXc2IiwiYTUiLCJuZXc3IiwiYTYiLCJuZXc4IiwiYTciLCJuZXc5IiwiYTgiLCJuZXcxMCIsImE5IiwibmV3MTEiLCJhMTAiLCJuZXcxMiIsImExMSIsIm5ldzEzIiwiYTEyIiwibmV3MTQiLCJhMTMiLCJnZXQiLCJwIiwidW5zYWZlX2dldCIsInNldCIsIngiLCJ1bnNhZmVfc2V0IiwiZ2V0X3R1cGxlIiwibGVuIiwiY3JlYXRlJDEiLCJvZl9zbG90c18wNzciLCJpc192YWxpZF8wNzkiLCJwb2ludGVyXzA4MSIsImFyZ18wODIiLCJibmRzXzA3OCIsImFyZ18wODAiLCJibmRzXzA3OCQwIiwiZmllbGQwIiwiZmllbGQxIiwidHlwZW5hbWUiLCJoYXNfZG91YmxlX2FycmF5X3RhZyIsImZpZWxkcyIsImlzX3ZhbGlkIiwiZm9sbG93IiwieF8wODMiLCJpbnZhbGlkYXRlIiwiY2hlY2tfaW52YXJpYW50Iiwic2hvd19tZXNzYWdlcyIsImRlYnVnIiwidHMiLCJhcmciLCJzZXhwX29mX2FyZyIsInNleHBfb2ZfcmVzdWx0IiwicmVzdWx0X29yX2V4biIsInhfMDQ4IiwiYXJnMV8wNTIiLCJhcmcwXzA1MSIsInJlczBfMDUzIiwicmVzMV8wNTQiLCJhcmcxXzA1NiIsImFyZzBfMDU1IiwicmVzMF8wNTciLCJyZXMxXzA1OCIsInhfMDU5IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImJpbl9zaXplX3QiLCJiaW5fd3JpdGVfdCIsImJpbl93cml0ZXJfdCIsImJpbl9yZWFkX3QiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fdCIsInRfb2Zfc2V4cCIsInhfMDYzIiwieF8wNjQiLCJ4XzA2NSIsInhfMDY2IiwieF8wNjciLCJ4XzA2OSIsInZfMDY4IiwieF8wNzAiLCJ4XzA3MSIsInhfMDcyIiwiZGVidWdfbmV3IiwieF8wNzMiLCJ4XzA3NCIsImRlYnVnX2dldCIsInhfMDc1IiwiZGVidWdfc2V0IiwiYSIsInhfMDc2IiwicG9zJDkiLCJwb3MkOCIsInBvcyQ3IiwicG9zJDYiLCJhcmdfMTA4IiwicG9zJDUiLCJwb3MkNCIsInBvcyQzIiwicG9zJDIiLCJwb3MkMSIsInBvcyQwIiwicG9zIiwiZXJyb3Jfc291cmNlXzAzOSIsIm1heF90aW1lIiwibWluX3RpbWUiLCJtYXhfbnVtX2JpdHMiLCJtaW5fdmFsdWUiLCJpbnZhcmlhbnQiLCJ0Iiwib2ZfaW50IiwiaSIsInN5bWJvbCQyIiwidDEiLCJ0MiIsInN5bWJvbCQzIiwicG93MiIsInNleHBfb2ZfdCQwIiwieF8wMDciLCJudW1fYml0c19pbnRlcm5hbCIsIm51bV9iaXRzIiwiaW52YXJpYW50JDAiLCJudW1fa2V5X2JpdHMiLCJ0X29mX3NleHAkMCIsInhfMDA2IiwiY3JlYXRlX2V4biIsIm9wdCIsInhfMDA4Iiwic3RoIiwiZXh0ZW5kX3RvX21heF9udW1fYml0cyIsImJpdHMiLCJpbnRzIiwibGV2ZWxfYml0c19kZWZhdWx0IiwiY29tcGFyZSIsImVxdWFsJDAiLCJ4XzAxMiIsInhfMDEzIiwidG9fc2V4cGFibGUiLCJzZXhwX29mX3QkMSIsIm9uZV9uYW5vc2Vjb25kIiwiYWJvdXRfb25lX21pY3Jvc2Vjb25kIiwiYWJvdXRfb25lX21pbGxpc2Vjb25kIiwiYWJvdXRfb25lX3NlY29uZCIsImFib3V0X29uZV9kYXkiLCJtdWwiLCJkaXYiLCJvZl9zcGFuX2Zsb29yX3BvdzJfbnMiLCJzcGFuIiwibGV2ZWxfYml0cyIsInIiLCJ2IiwibGV2ZWxfYml0cyQwIiwidF9vZl9zZXhwJDIiLCJzZXhwXzAxOSIsImZpZWxkX3NleHBzXzAyMCIsImFsYXJtX3ByZWNpc2lvbl8wMjEiLCJsZXZlbF9iaXRzXzAyMyIsImNhcGFjaXR5XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4Iiwic2V4cF8wMTkkMCIsImZpZWxkX3NleHBzXzAzMSIsImZpZWxkX25hbWVfMDI5IiwidGFpbF8wNDEiLCJmaWVsZF9zZXhwXzAzMCQzIiwiZmllbGRfc2V4cF8wMzAiLCJ4XzA0MiIsImZpZWxkX3NleHBfMDMwJDAiLCJmdmFsdWVfMDM0IiwiZmllbGRfc2V4cF8wMzAkMSIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAzMCQyIiwiZnZhbHVlXzAzNSIsImxldmVsX2JpdHNfMDI0IiwibWF0Y2giLCJhbGFybV9wcmVjaXNpb25fMDIyIiwidl8wMzgiLCJ2XzAzOCQwIiwic2V4cF9vZl90JDMiLCJjYXBhY2l0eV8wNDgiLCJsZXZlbF9iaXRzXzA0NiIsImFsYXJtX3ByZWNpc2lvbl8wNDQiLCJibmRzXzA0MyIsInZfMDQ5IiwiYXJnXzA1MSIsImJuZF8wNTAiLCJibmRzXzA0MyQwIiwiYXJnXzA0NyIsImJuZHNfMDQzJDEiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMiIsImFsYXJtX3ByZWNpc2lvbiIsIm1heF9udW1fbGV2ZWxfYml0cyIsImludmFyaWFudCQxIiwibGV2ZWxfYml0c19mdW4iLCJjcmVhdGUiLCJjYXBhY2l0eSIsImxvb3AiLCJyZW1haW5pbmciLCJ0JDAiLCJiIiwibWljcm9zZWNvbmRfcHJlY2lzaW9uIiwiZHVyYXRpb25zIiwibnVtX2JpdHNfYWNjdW0iLCJsZXZlbF9udW1fYml0cyIsIm51bV9iaXRzX2FjY3VtJDAiLCJkdXJhdGlvbiIsImNvbXBhcmUkMCIsInNleHBfb2ZfdCQ0IiwiY3JlYXRlJDAiLCJudW1fa2V5cyIsImNyZWF0ZSQxIiwiYml0c19wZXJfc2xvdCIsInRvX2ludDYzIiwib2ZfaW50NjMiLCJzY2FsZV9pbnQiLCJzZXhwX29mX3QkNyIsIm9mX2ludDYzJDAiLCJ0b19pbnQ2MyQwIiwiYWRkIiwiYWRkX2NsYW1wX3RvX21heCIsInN1YiIsImRpZmYiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2siLCJzZXhwX29mX3Bvb2xfc2xvdHMiLCJvZl9hXzA1NCIsInhfMDU1Iiwic2V4cF9vZl90JDgiLCJvZl9hXzA1NiIsInhfMDU3IiwibnVsbCQwIiwibnVsbCQxIiwiaXNfbnVsbCIsImZyZWUiLCJrZXkiLCJwIiwiYXQiLCJ2YWx1ZSIsImxldmVsX2luZGV4IiwicHJldiIsInNldF9wcmV2IiwieCIsIm5leHQiLCJzZXRfbmV4dCIsImlzX3ZhbGlkIiwiZ3JvdyIsImlzX2Z1bGwiLCJvZl9leHRlcm5hbF9leG4iLCJwb29sIiwibGluayIsIml0ZXIiLCJmaXJzdCIsImYiLCJjdXJyZW50IiwiY29udGludWUkMCIsIm5leHQkMCIsInNsb3RzIiwibWF4X2FsbG93ZWRfa2V5Iiwic2V0X21heF9hbGxvd2VkX2tleSIsIm1pbl9hbGxvd2VkX2tleSIsInNldF9taW5fYWxsb3dlZF9rZXkiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5Iiwia2V5c19wZXJfc2xvdCIsInNsb3RzX21hc2siLCJpbmRleCIsInNsb3RzJDAiLCJtYXhfYWxsb3dlZF9rZXkkMCIsIm1pbl9hbGxvd2VkX2tleSQwIiwibGVuZ3RoJDAiLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXkkMCIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2skMCIsImtleXNfcGVyX3Nsb3QkMCIsImJpdHNfcGVyX3Nsb3QkMCIsInNsb3RzX21hc2skMCIsImJpdHMkMCIsImluZGV4JDAiLCJzZXhwX29mX3QkOSIsIm9mX2FfMDY1IiwiZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XzA3OSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfMDc3Iiwia2V5c19wZXJfc2xvdF8wNzUiLCJiaXRzX3Blcl9zbG90XzA3MyIsInNsb3RzX21hc2tfMDcxIiwiYml0c18wNjkiLCJpbmRleF8wNjciLCJsZW5ndGhfMDgxIiwibWluX2FsbG93ZWRfa2V5XzA4MyIsIm1heF9hbGxvd2VkX2tleV8wODUiLCJzbG90c18wODciLCJhcmdfMDg4IiwiYm5kc18wNjYiLCJhcmdfMDg2IiwiYm5kc18wNjYkMCIsImFyZ18wODQiLCJibmRzXzA2NiQxIiwiYXJnXzA4MiIsImJuZHNfMDY2JDIiLCJhcmdfMDgwIiwiYm5kc18wNjYkMyIsImFyZ18wNzgiLCJibmRzXzA2NiQ0IiwiYXJnXzA3NiIsImJuZHNfMDY2JDUiLCJhcmdfMDc0IiwiYm5kc18wNjYkNiIsImFyZ18wNzIiLCJibmRzXzA2NiQ3IiwiYXJnXzA3MCIsImJuZHNfMDY2JDgiLCJhcmdfMDY4IiwiYm5kc18wNjYkOSIsInNsb3QiLCJuZXh0X3Nsb3QiLCJtaW5fa2V5X2luX3NhbWVfc2xvdCQwIiwiY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkiLCJwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSIsImxldmVscyIsImVsdF9rZXlfbG93ZXJfYm91bmQiLCJzZXRfZWx0X2tleV9sb3dlcl9ib3VuZCIsIm1pbl9lbHQiLCJzZXRfbWluX2VsdCIsInNldF9wb29sIiwibGVuZ3RoJDEiLCJzZXRfbGVuZ3RoJDAiLCJsZXZlbHMkMCIsImVsdF9rZXlfbG93ZXJfYm91bmQkMCIsIm1pbl9lbHQkMCIsInBvb2wkMCIsImxlbmd0aCQyIiwiaXNfZW1wdHkiLCJudW1fbGV2ZWxzIiwibWluX2FsbG93ZWRfa2V5JDEiLCJtYXhfYWxsb3dlZF9rZXkkMSIsImludGVybmFsX2l0ZXIiLCJsZXZlbCIsInNsb3RfaW5kZXgiLCJlbHQiLCJjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2siLCJtaW5fZWx0JDEiLCJtaW5fZWx0X2FscmVhZHlfZm91bmQiLCJtaW5fa2V5X2FscmVhZHlfZm91bmQiLCJudW1fbGV2ZWxzJDAiLCJzbG90X21pbl9rZXkiLCJzbG90JDAiLCJjdXJyZW50X2tleSIsImFkZF9lbHQiLCJ4XzEzNSIsInRvX2FkZCIsImtleSQwIiwiZWx0c18xMTUiLCJtYXhfYWxsb3dlZF9rZXlfMTEzIiwibWluX2FsbG93ZWRfa2V5XzExMSIsImJuZHNfMTEwIiwia2V5XzEwNSIsImJuZHNfMTA0IiwiYXJnXzEwNiIsImJuZHNfMTA0JDAiLCJhcmdfMTE2IiwiYm5kc18xMTAkMCIsImFyZ18xMTQiLCJibmRzXzExMCQxIiwiYXJnXzExMiIsImJuZHNfMTEwJDIiLCJsZXZlbF9pbmRleCQwIiwicHJldiQwIiwiaW50ZXJuYWxfYWRkX2VsdCIsImVuc3VyZV92YWxpZF9rZXkiLCJpbnRlcm5hbF9hZGQiLCJpbnRlcm5hbF9yZW1vdmUiLCJtaW5faW50ZXJ2YWxfbnVtIiwicHJpb3JpdHlfcXVldWUiLCJtYXhfYWxsb3dlZF9hbGFybV90aW1lIiwic2V0X21heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0Iiwic2V0X25vd19pbnRlcnZhbF9udW1fc3RhcnQiLCJub3ciLCJzZXRfbm93IiwibWF4X2ludGVydmFsX251bSIsInN0YXJ0IiwiY29uZmlnIiwicHJpb3JpdHlfcXVldWUkMCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUkMCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnQkMCIsIm5vdyQwIiwibWF4X2ludGVydmFsX251bSQwIiwic3RhcnQkMCIsImNvbmZpZyQwIiwic2V4cF9vZl90X25vdyIsImFsYXJtX3ByZWNpc2lvbiQwIiwiYXQkMCIsInR3IiwidmFsdWUkMCIsImludGVydmFsX251bSIsIml0ZXIkMCIsImNvbXBhcmUkMyIsInNleHBfb2ZfdCQxMCIsInNleHBfb2ZfYSIsIm1heF9pbnRlcnZhbF9udW1fMTY3Iiwic3RhcnRfMTY1IiwiY29uZmlnXzE2MyIsIm5vd18xNjkiLCJhbGFybSIsImFsYXJtc18xNzEiLCJibmRzXzE2MiIsInZhbHVlXzE1OSIsImF0XzE1NyIsImFyZ18xNjAiLCJibmRzXzE1NiIsImFyZ18xNTgiLCJibmRzXzE1NiQwIiwiYXJnXzE3MiIsImJuZHNfMTYyJDAiLCJhcmdfMTcwIiwiYm5kc18xNjIkMSIsImFyZ18xNjgiLCJibmRzXzE2MiQyIiwiYXJnXzE2NiIsImJuZHNfMTYyJDMiLCJhcmdfMTY0IiwiYm5kc18xNjIkNCIsImxlbmd0aCQzIiwiaXNfZW1wdHkkMCIsInBvb2wkMSIsImludGVydmFsX251bV9pbnRlcm5hbCIsInRpbWUiLCJpbnRlcnZhbF9udW1fdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtJDAiLCJpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIiwiaW50ZXJ2YWxfbnVtX3N0YXJ0IiwibmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX2ZpcmVzX2F0X2V4biIsInhfMTc0IiwiY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIiwibm93X2ludGVydmFsX251bSIsIm1heF9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bSIsImludGVydmFsX3N0YXJ0IiwiaW52YXJpYW50JDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwicHJpb3JpdHlfcXVldWVfZnVuIiwibGV2ZWxzX2Z1biIsInNsb3RzX2Z1biIsIm4iLCJ4XzA2MiIsIm1heF9hbGxvd2VkX2tleV9mdW4iLCJleHBlY3QiLCJlcXVhbCIsIm1lc3NhZ2UiLCJoZXJlIiwiY29tcGFyYXRvciIsImFfMTI4IiwiYl8xMjkiLCJtaW5fYWxsb3dlZF9rZXlfZnVuIiwiZ290Iiwic2V4cGlmaWVyIiwiYV8xMjYiLCJiXzEyNyIsImxlbmd0aF9mdW4iLCJkaWZmX21heF9taW5fYWxsb3dlZF9rZXlfZnVuIiwiZXRhIiwiYV8xMjQiLCJiXzEyNSIsIm1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tfZnVuIiwia2V5c19wZXJfc2xvdF9mdW4iLCJhXzEyMiIsImJfMTIzIiwiYml0c19wZXJfc2xvdF9mdW4iLCJleHBlY3QkMCIsInNsb3RzX21hc2tfZnVuIiwiYV8xMjAiLCJiXzEyMSIsImJpdHNfZnVuIiwiaW5kZXhfZnVuIiwieF8xMTkiLCJwcmV2X2xldmVsIiwiYV8xMzEiLCJiXzEzMiIsImdvdCQwIiwibWVzc2FnZSQwIiwiaGVyZSQwIiwiY29tcGFyYXRvciQwIiwiYV8xMzMiLCJiXzEzNCIsImVsdF9rZXlfbG93ZXJfYm91bmRfZnVuIiwibWluX2VsdF9mdW4iLCJwb29sX2Z1biIsInhfMTMwIiwib2ZfYV8wODkiLCJsZW5ndGhfMDkxIiwicG9vbF8wOTMiLCJtaW5fZWx0XzA5NSIsImVsdF9rZXlfbG93ZXJfYm91bmRfMDk3IiwibGV2ZWxzXzA5OSIsImJuZHNfMDkwIiwiYXJnXzEwMCIsImJuZHNfMDkwJDAiLCJhcmdfMDk4IiwiYm5kc18wOTAkMSIsImFyZ18wOTYiLCJibmRzXzA5MCQyIiwiYXJnXzA5NCIsImJuZHNfMDkwJDMiLCJhcmdfMDkyIiwiYm5kc18wOTAkNCIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWVfZnVuIiwiYV8xODMiLCJiXzE4NCIsIm5vd19pbnRlcnZhbF9udW1fc3RhcnRfZnVuIiwiYV8xODEiLCJiXzE4MiIsIm5vd19mdW4iLCJtYXhfaW50ZXJ2YWxfbnVtX2Z1biIsImFfMTc3IiwiYl8xNzgiLCJzZXhwaWZpZXIkMCIsImFfMTc5IiwiYl8xODAiLCJzdGFydF9mdW4iLCJjb25maWdfZnVuIiwieF8xNzYiLCJkZWJ1ZyIsImFkdmFuY2VfY2xvY2siLCJ0byIsImhhbmRsZV9yZW1vdmVkIiwidF9taW5fYWxsb3dlZF9rZXkiLCJyZXN1bHQiLCJtaW5fYWxsb3dlZF9rZXlfYmVmb3JlIiwicHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkkMCIsImRlc2lyZWRfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwibGV2ZWxfbWluX2FsbG93ZWRfa2V5JDAiLCJjcmVhdGUkMiIsImNhcGFjaXR5JDAiLCJtYXhfbGV2ZWxfbWluX2FsbG93ZWRfa2V5IiwiYWRkX2F0X2ludGVydmFsX251bSIsImVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0iLCJhZGQkMCIsInJlbW92ZSIsImNsZWFyIiwiZnJlZV9lbHQiLCJtZW0iLCJyZXNjaGVkdWxlX2dlbiIsInJlc2NoZWR1bGUiLCJyZXNjaGVkdWxlX2F0X2ludGVydmFsX251bSIsIm1pbl9hbGFybV9pbnRlcnZhbF9udW0iLCJtaW5fYWxhcm1faW50ZXJ2YWxfbnVtX2V4biIsInhfMTg1IiwibWF4X2FsYXJtX3RpbWVfaW5fbGlzdCIsIndpdGhfa2V5IiwibWF4X2FsYXJtX3RpbWUiLCJtaW5fYWxhcm1fdGltZV9pbl9saXN0IiwibWluX2FsYXJtX3RpbWUiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwkMCIsInhfMTg2IiwibWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsJDAiLCJ4XzE4NyIsImZpcmVfcGFzdF9hbGFybXMiLCJoYW5kbGVfZmlyZWQiLCJsZXZlbF9iaXRzJDAiLCJoZXJlIiwiaGVyZSQwIiwiaGVyZSQxIiwiaGVyZSQyIiwiaGVyZSQzIiwiaGVyZSQ0IiwiZXJyb3Jfc291cmNlXzAwMyIsImVycm9yX3NvdXJjZV8wMTkiLCJlcnJvcl9zb3VyY2VfMDMwIiwiZXJyb3Jfc291cmNlXzA0MyIsImxpc3QiLCJlcnJvcl9zb3VyY2VfMDUxIiwibGlzdCQwIiwiZXJyb3Jfc291cmNlXzExMiIsImVtcHR5IiwiZW52aXJvbm1lbnRfdmFyaWFibGUiLCJzZWMiLCJjb25jYXQiLCJ2YWxpZGF0ZSIsInZhbGlkYXRlJDAiLCJ2YWxpZGF0ZSQxIiwidmFsaWRhdGUkMiIsImRlZmF1bHQkMCIsImVxdWFsIiwidDEiLCJ0MiIsInZhbGlkYXRlJDMiLCJ2YWxpZGF0ZSQ0IiwidF9vZl9zZXhwJDYiLCJzZXhwXzAwNCIsInNleHBfb2ZfdCQ2Iiwid2F0Y2hfb2Zfc2V4cCIsInNleHBfMDA2IiwiZmllbGRfc2V4cHNfMDA3IiwiZHVtcF9pZl9kZWxheWVkX2J5XzAwOCIsImhvd190b19kdW1wXzAxMCIsImR1cGxpY2F0ZXNfMDEyIiwiZXh0cmFfMDEzIiwic2V4cF8wMDYkMCIsImZpZWxkX3NleHBzXzAxNiIsImZpZWxkX25hbWVfMDE0IiwidGFpbF8wMjEiLCJmaWVsZF9zZXhwXzAxNSQyIiwiZmllbGRfc2V4cF8wMTUiLCJ4XzAyMiIsImZpZWxkX3NleHBfMDE1JDAiLCJmdmFsdWVfMDE3IiwiZmllbGRfc2V4cF8wMTUkMSIsImZ2YWx1ZV8wMTgiLCJob3dfdG9fZHVtcF8wMTEiLCJkdW1wX2lmX2RlbGF5ZWRfYnlfMDA5Iiwic2V4cF9vZl93YXRjaCIsImhvd190b19kdW1wXzAyNiIsImR1bXBfaWZfZGVsYXllZF9ieV8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsInRfb2Zfc2V4cCQ3Iiwic2V4cF8wMzIiLCJ0YWdfMDMzIiwic2V4cF9hcmdzXzAzNCIsImFyZzBfMDM1IiwicmVzMF8wMzYiLCJzZXhwX29mX3QkNyIsImFyZzBfMDM3IiwicmVzMF8wMzgiLCJ0X29mX3NleHAkOCIsInNleHBfMDQ0Iiwic2V4cF9vZl90JDgiLCJlcXVhbCQwIiwieF8wNDUiLCJ4XzA0NiIsInRfb2Zfc2V4cCQ5Iiwic2V4cF8wNTIiLCJzZXhwX29mX3QkOSIsInRfb2Zfc2V4cCQxMCIsInNleHBfb2ZfdCQxMCIsInRpbWluZ193aGVlbF9jb25maWciLCJyIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5IiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciIsInJlY29yZF9iYWNrdHJhY2VzIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIiwibWluX2ludGVyX2N5Y2xlX3RpbWVvdXQiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8iLCJtYXhfbnVtX3RocmVhZHMiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCIsImZpbGVfZGVzY3Jfd2F0Y2hlciIsImVwb2xsX21heF9yZWFkeV9ldmVudHMiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5IiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyIiwiY2hlY2tfaW52YXJpYW50cyIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyIsInYiLCJ0aW1pbmdfd2hlZWxfY29uZmlnJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMCIsInJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IkMCIsInJlY29yZF9iYWNrdHJhY2VzJDAiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IkMCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDAiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMCIsIm1heF9udW1fdGhyZWFkcyQwIiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzJDAiLCJtYXhfaW50ZXJfY3ljbGVfdGltZW91dCQwIiwiZmlsZV9kZXNjcl93YXRjaGVyJDAiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDAiLCJkdW1wX2NvcmVfb25fam9iX2RlbGF5JDAiLCJkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHIkMCIsImNoZWNrX2ludmFyaWFudHMkMCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQwIiwic2V4cF9vZl90JDExIiwidGltaW5nX3doZWVsX2NvbmZpZ18xNzQiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMTcwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8xIiwicmVjb3JkX2JhY2t0cmFjZXNfMTYyIiwicHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXzE1OCIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0XzE1NCIsIm1heF9udW1fdGhyZWFkc18xNDYiLCJtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNfMTQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMTM4IiwiZmlsZV9kZXNjcl93YXRjaGVyXzEzNCIsImVwb2xsX21heF9yZWFkeV9ldmVudHNfMTMwIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheV8xMjYiLCJjaGVja19pbnZhcmlhbnRzXzExOCIsImJuZHNfMTEzIiwidl8xNzUiLCJhcmdfMTc3IiwiYm5kXzE3NiIsImJuZHNfMTEzJDAiLCJ2XzE3MSIsImFyZ18xNzMiLCJibmRfMTcyIiwiYm5kc18xMTMkMSIsInZfMTY3IiwiYXJnXzE2OSIsImJuZF8xNjgiLCJibmRzXzExMyQyIiwidl8xNjMiLCJhcmdfMTY1IiwiYm5kXzE2NCIsImJuZHNfMTEzJDMiLCJ2XzE1OSIsImFyZ18xNjEiLCJibmRfMTYwIiwiYm5kc18xMTMkNCIsInZfMTU1IiwiYXJnXzE1NyIsImJuZF8xNTYiLCJibmRzXzExMyQ1Iiwidl8xNTEiLCJhcmdfMTUzIiwiYm5kXzE1MiIsImJuZHNfMTEzJDYiLCJ2XzE0NyIsImFyZ18xNDkiLCJibmRfMTQ4IiwiYm5kc18xMTMkNyIsInZfMTQzIiwiYXJnXzE0NSIsImJuZF8xNDQiLCJibmRzXzExMyQ4Iiwidl8xMzkiLCJhcmdfMTQxIiwiYm5kXzE0MCIsImJuZHNfMTEzJDkiLCJ2XzEzNSIsImFyZ18xMzciLCJibmRfMTM2IiwiYm5kc18xMTMkMTAiLCJ2XzEzMSIsImFyZ18xMzMiLCJibmRfMTMyIiwiYm5kc18xMTMkMTEiLCJ2XzEyNyIsImFyZ18xMjkiLCJibmRfMTI4IiwiYm5kc18xMTMkMTIiLCJ2XzEyMyIsImFyZ18xMjUiLCJibmRfMTI0IiwiYm5kc18xMTMkMTMiLCJ2XzExOSIsImFyZ18xMjEiLCJibmRfMTIwIiwiYm5kc18xMTMkMTQiLCJ2XzExNSIsImFyZ18xMTciLCJibmRfMTE2IiwiYm5kc18xMTMkMTUiLCJjcmVhdGUkMCIsImRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mbyIsIndvcmRfc2l6ZSIsImxldmVsX2JpdHMkMSIsImFsYXJtX3ByZWNpc2lvbiIsImFsYXJtX3ByZWNpc2lvbiQwIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiZGVmYXVsdCQxIiwiZXhhbXBsZSIsInVzYWdlIiwiZmllbGQiLCJ0b19zZXhwIiwiZGVzY3JpcHRpb24iLCJhYyIsImQiLCJ4XzE3OCIsImZpZWxkcyIsIm5hbWUiLCJuYW1lMiIsIm5hbWUxIiwic3RyaW5nIiwic2V4cF8wNTQiLCJmaWVsZF9zZXhwc18wNTUiLCJjaGVja19pbnZhcmlhbnRzXzA1OCIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYyIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjQiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY2IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY4IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MCIsIm1heF9udW1fdGhyZWFkc18wNzIiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzYiLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc4IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgwIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wIiwidGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XzA4NCIsInRpbWluZ193aGVlbF9jb25maWdfMDg2IiwiZHVwbGljYXRlc18wODgiLCJleHRyYV8wODkiLCJpdGVyXzEwOSIsInNleHBfMDU0JDAiLCJmaWVsZF9zZXhwc18wOTIiLCJmaWVsZF9uYW1lXzA5MCIsInRhaWxfMTEwIiwiZmllbGRfc2V4cF8wOTEkMTYiLCJmaWVsZF9zZXhwXzA5MSIsInhfMTExIiwiZmllbGRfc2V4cF8wOTEkMCIsImZ2YWx1ZV8wOTMiLCJmaWVsZF9zZXhwXzA5MSQxIiwiZnZhbHVlXzA5NCIsImZpZWxkX3NleHBfMDkxJDIiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTEkMyIsImZ2YWx1ZV8wOTYiLCJmaWVsZF9zZXhwXzA5MSQ0IiwiZnZhbHVlXzA5NyIsImZpZWxkX3NleHBfMDkxJDUiLCJmdmFsdWVfMDk4IiwiZmllbGRfc2V4cF8wOTEkNiIsImZ2YWx1ZV8xMDAiLCJmaWVsZF9zZXhwXzA5MSQ3IiwiZnZhbHVlXzEwMSIsImZpZWxkX3NleHBfMDkxJDgiLCJmdmFsdWVfMDk5IiwiZmllbGRfc2V4cF8wOTEkOSIsImZ2YWx1ZV8xMDIiLCJmaWVsZF9zZXhwXzA5MSQxMCIsImZ2YWx1ZV8xMDMiLCJmaWVsZF9zZXhwXzA5MSQxMSIsImZ2YWx1ZV8xMDQiLCJmaWVsZF9zZXhwXzA5MSQxMiIsImZ2YWx1ZV8xMDUiLCJmaWVsZF9zZXhwXzA5MSQxMyIsImZ2YWx1ZV8xMDYiLCJmaWVsZF9zZXhwXzA5MSQxNCIsImZ2YWx1ZV8xMDciLCJmaWVsZF9zZXhwXzA5MSQxNSIsImZ2YWx1ZV8xMDgiLCJjaGVja19pbnZhcmlhbnRzXzA1OSIsImR1bXBfY29yZV9vbl9qb2JfZGVsYXlfMDYzIiwiZXBvbGxfbWF4X3JlYWR5X2V2ZW50c18wNjUiLCJmaWxlX2Rlc2NyX3dhdGNoZXJfMDY3IiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRfMDY5IiwibWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXzA3MSIsIm1heF9udW1fdGhyZWFkc18wNzMiLCJtaW5faW50ZXJfY3ljbGVfdGltZW91dF8wNzciLCJwcmludF9kZWJ1Z19tZXNzYWdlc19mb3JfMDc5IiwicmVjb3JkX2JhY2t0cmFjZXNfMDgxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2Zvcl8wJDAiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlfMDg1IiwidCIsInQkMCIsImV4biIsInQkMSIsInQkMiIsInByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciQxIiwidGFnIiwibCIsImFsbCIsImRlYnVnIiwiY2xvY2siLCJmZCIsImZpbGVfZGVzY3Jfd2F0Y2hlciQxIiwiZmluYWxpemVycyIsImludGVycnVwdG9yIiwibW9uaXRvciIsIm1vbml0b3Jfc2VuZF9leG4iLCJwYXJhbGxlbCIsInJlYWRlciIsInNjaGVkdWxlciIsInNodXRkb3duIiwidGhyZWFkX3Bvb2wiLCJ0aHJlYWRfc2FmZSIsIndyaXRlciIsInN5bWJvbCIsImFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrXyQxIiwiY2hlY2tfaW52YXJpYW50cyQxIiwiZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyJDEiLCJlcG9sbF9tYXhfcmVhZHlfZXZlbnRzJDEiLCJ0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkkMSIsImZpbGVfZGVzY3Jfd2F0Y2hlciQyIiwibWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQkMSIsIm1heF9udW1fb3Blbl9maWxlX2Rlc2NycyQxIiwibWF4X251bV90aHJlYWRzJDEiLCJtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl8kMSIsIm1pbl9pbnRlcl9jeWNsZV90aW1lb3V0JDEiLCJyZWNvcmRfYmFja3RyYWNlcyQxIiwicmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciQxIiwidGltaW5nX3doZWVsX2NvbmZpZyQxIiwiZHVtcF9jb3JlX29uX2pvYl9kZWxheSQxIiwidCQzIiwidGFza19pZCIsIm5vbmUiLCJjcmVhdGUiLCJpc19ub25lIiwieCIsImlzX3NvbWUiLCJnZXRfc29tZV9leG4iLCJnZXQiLCJ0IiwidW5zYWZlX2dldCIsInNldF9zb21lIiwidiIsInNldF9ub25lIiwic2V0IiwidiQwIiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInhfMDAyIiwiZW1wdHkiLCJpc19lbXB0eSIsImVxdWFsIiwiZHVtbXlfaWQiLCJjaGlsZCIsInQiLCJwb29sIiwic2libGluZyIsInByZXYiLCJpZCIsInNldF9jaGlsZCIsInYiLCJzZXRfc2libGluZyIsInNldF9wcmV2IiwidmFsdWVfZXhuIiwiYWxsb2NhdGUiLCJ2YWx1ZSIsImZyZWUiLCJkaXNjb25uZWN0X3NpYmxpbmciLCJzaWJsaW5nJDAiLCJkaXNjb25uZWN0X2NoaWxkIiwiY2hpbGQkMCIsImRldGFjaCIsInByZXYkMCIsInJlbGF0aW9uX3RvX3ByZXYiLCJjcmVhdGUiLCJjYXBhY2l0eSIsImludmFyaWFudCIsInRvX3Zpc2l0JDIiLCJ0b192aXNpdCIsInRvX3Zpc2l0JDAiLCJtYXliZV9wYXJlbnRfdmFsdWUiLCJleHBlY3RlZF9wcmV2Iiwibm9kZSIsInRoaXNfdmFsdWUiLCJwYXJlbnRfdmFsdWUiLCJ0b192aXNpdCQxIiwiY3JlYXRlJDAiLCJvcHQiLCJjbXAiLCJzdGgiLCJtaW5fc2l6ZSIsImNvcHkiLCJwb29sJDAiLCJzdGFydCIsIm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMiLCJjb3B5X25vZGUiLCJuZXdfbm9kZSIsIm5ld19zdGFydCIsInJlc3QiLCJub2RlX3RvX2NvcHkiLCJzbG90Iiwibm9kZV90b191cGRhdGUiLCJtZXJnZSIsInJvb3QxIiwicm9vdDIiLCJhZGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJjdXJyZW50X2NoaWxkIiwidjEiLCJ2MiIsInRvcF9leG4iLCJ0b3AiLCJhZGRfbm9kZSIsInQkMSIsInQkMCIsImFkZCIsIm1heF9zdGFja19kZXB0aCIsImxvb3AiLCJkZXB0aCIsImhlYWQkMCIsIm5leHQxJDAiLCJuZXh0MiQwIiwiYWNjIiwiaGVhZCIsIm5leHQxIiwibmV4dDIiLCJhY2MkMCIsImgiLCJ4cyIsImhlYXAiLCJyZW1vdmVfbm9uX2VtcHR5IiwibWVyZ2VkX2NoaWxkcmVuIiwibmV3X3Jvb3QiLCJyZW1vdmVfdG9wIiwiY2xlYXIiLCJub2RlJDAiLCJwb3BfZXhuIiwiciIsInBvcCIsInBvcF9pZiIsImYiLCJmb2xkIiwiaW5pdCIsIml0ZXIiLCJsZW5ndGgiLCJpdGVyJDAiLCJsZW5ndGgkMCIsImlzX2VtcHR5JDAiLCJtZW0iLCJleGlzdHMiLCJmb3JfYWxsIiwiY291bnQiLCJzdW0iLCJmaW5kIiwiZmluZF9tYXAiLCJ0b19saXN0IiwidG9fYXJyYXkiLCJtaW5fZWx0IiwibWF4X2VsdCIsImZvbGRfcmVzdWx0IiwiZm9sZF91bnRpbCIsIm9mX2FycmF5IiwiYXJyIiwib2ZfbGlzdCIsImwiLCJzZXhwX29mX3QiLCJpc19ub2RlX3ZhbGlkIiwidmFsdWVfZXhuJDAiLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfYSIsInhfMDAxIiwicmVtb3ZlIiwidG9rZW4iLCJhZGRfcmVtb3ZhYmxlIiwidXBkYXRlIiwiZmluZF9lbHQiLCJub2RlcyQyIiwibm9kZXMiLCJub2RlcyQwIiwibm9kZXMkMSIsInVwZGF0ZSQwIiwiZWx0IiwiZ3JvdXAiLCJiaW5fc2hhcGVfdCIsImEiLCJiaW5fc2l6ZV90Iiwic2l6ZV9vZl9hIiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwiYnVmIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJ0X29mX3NleHAiLCJvZl9hXzAwMyIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsImdyb3VwJDAiLCJiaW5fc2hhcGVfdCQwIiwiYmluX3NpemVfdCQwIiwiYmluX3dyaXRlX3QkMCIsInBvcyIsImJpbl93cml0ZXJfdCQwIiwiYmluX3JlYWRfdCQxIiwiYmluX3JlYWRfdCQyIiwiYmluX3JlYWRlcl90JDAiLCJiaW5fdCQwIiwiY29tcGFyZSQwIiwiYV8wMDYiLCJiXzAwNyIsImFfMDA4IiwiYl8wMDkiLCJhbV9ydW5uaW5nX3Rlc3QiLCJub25lIiwic29tZSIsIngiLCJ1bnNhZmVfdmFsdWUiLCJpc19ub25lIiwidCIsImlzX3NvbWUiLCJpbnZhcmlhbnQiLCJpbnZhcmlhbnRfYSIsInNleHBfb2ZfdCIsInNleHBfb2ZfYSIsInZhbHVlX2V4biIsInRvX29wdGlvbiIsIm9mX29wdGlvbiIsImEiLCJzZXhwX29mX3QiLCJvZl9hXzAwMSIsInZhbHVlXzAwMyIsIm5leHRfMDA1IiwiYXJnXzAwNiIsImJuZHNfMDAyIiwiYXJnXzAwNCIsImJuZHNfMDAyJDAiLCJjcmVhdGUiLCJ1bnVzZWRfZWx0cyIsInIiLCJzZXRfdW51c2VkX2VsdHMiLCJ2IiwiYmFjayIsInNldF9iYWNrIiwiZnJvbnQiLCJzZXRfZnJvbnQiLCJsZW5ndGgiLCJzZXRfbGVuZ3RoIiwidW51c2VkX2VsdHMkMCIsImJhY2skMCIsImZyb250JDAiLCJsZW5ndGgkMCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDciLCJsZW5ndGhfMDA5IiwiZnJvbnRfMDExIiwiYmFja18wMTMiLCJ1bnVzZWRfZWx0c18wMTUiLCJibmRzXzAwOCIsImFyZ18wMTYiLCJibmRzXzAwOCQwIiwiYXJnXzAxNCIsImJuZHNfMDA4JDEiLCJhcmdfMDEyIiwiYm5kc18wMDgkMiIsImFyZ18wMTAiLCJibmRzXzAwOCQzIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ0IiwiY2hlY2siLCJmIiwidW51c2VkX2VsdHNfZnVuIiwiZWx0IiwiYmFja19mdW4iLCJmcm9udF9mdW4iLCJpIiwibGVuZ3RoX2Z1biIsInhfMDE3IiwiY3JlYXRlJDAiLCJlbnF1ZXVlIiwiYSIsIm5ld19iYWNrIiwiZGVxdWV1ZV9leG4iLCJ4XzAxOCIsImNsZWFyX2ludGVybmFsX3Bvb2wiLCJhZnRlciIsInQiLCJzcGFuIiwicmVzdWx0IiwibG9nIiwiYXJnMl8wMDMiLCJhcmczXzAwNCIsInNleHBfb2ZfYSIsImFyZzFfMDAyIiwiYXJnMF8wMDEiLCJyZXMwXzAwNSIsInJlczFfMDA2IiwicmVzMl8wMDciLCJyZXMzXzAwOCIsImxvZ19zdHJpbmciLCJtZXNzYWdlIiwiY29uY2F0IiwiZXByaW50IiwiZXByaW50X3MiLCJlcHJpbnRzIiwicHJpbnRfcyIsInNleHAiLCJzZWMiLCJzZXhwX29mX3QiLCJ0b19yZXByIiwib2ZfcmVwciIsIm5hbWVzIiwiZGVidWciLCJmb3J3YXJkaW5nIiwiciIsInNldF9mb3J3YXJkaW5nIiwidiIsImhhc19zZWVuX2Vycm9yIiwic2V0X2hhc19zZWVuX2Vycm9yIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJzZXRfdGFpbHNfZm9yX2FsbF9lcnJvcnMiLCJoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsInNldF9oYW5kbGVyc19mb3JfYWxsX2Vycm9ycyIsIm5leHRfZXJyb3IiLCJzZXRfbmV4dF9lcnJvciIsImlkIiwiaGVyZSIsIm5hbWUiLCJmb3J3YXJkaW5nJDAiLCJoYXNfc2Vlbl9lcnJvciQwIiwidGFpbHNfZm9yX2FsbF9lcnJvcnMkMCIsImhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzJDAiLCJuZXh0X2Vycm9yJDAiLCJpZCQwIiwiaGVyZSQwIiwibmFtZSQwIiwibWFrZV9jcmVhdG9yIiwibmFtZV9mdW4iLCJoZXJlX2Z1biIsImlkX2Z1biIsIm5leHRfZXJyb3JfZnVuIiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZnVuIiwidGFpbHNfZm9yX2FsbF9lcnJvcnNfZnVuIiwiaGFzX3NlZW5fZXJyb3JfZnVuIiwiZm9yd2FyZGluZ19mdW4iLCJjb21waWxlX2FjYyIsImNvbXBpbGVfYWNjJDAiLCJuYW1lX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJoZXJlX2dlbiIsImNvbXBpbGVfYWNjJDIiLCJpZF9nZW4iLCJjb21waWxlX2FjYyQzIiwibmV4dF9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ0IiwiaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNfZ2VuIiwiY29tcGlsZV9hY2MkNSIsInRhaWxzX2Zvcl9hbGxfZXJyb3JzX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJoYXNfc2Vlbl9lcnJvcl9nZW4iLCJjb21waWxlX2FjYyQ3IiwiZm9yd2FyZGluZ19nZW4iLCJhY2MiLCJjcmVhdGUiLCJtYXAiLCJpdGVyIiwiZm9sZCIsImluaXQiLCJtYXBfcG9seSIsInJlY29yZCIsImZvcl9hbGwiLCJleGlzdHMiLCJ0b19saXN0IiwiaXRlciQwIiwiZm9sZCQwIiwiZm9yX2FsbCQwIiwiZXhpc3RzJDAiLCJ0b19saXN0JDAiLCJtYXAkMCIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMiLCJyZWNvcmQkMCIsImRlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb25zIiwidCQxIiwiYWMiLCJhYyQwIiwidCQwIiwieF8wMDEiLCJuZXh0X2lkIiwiY3JlYXRlX3dpdGhfcGFyZW50IiwiaW5mbyIsInBhcmVudCIsImkiLCJzIiwicyQwIiwieF8wMDIiLCJwYXJlbnQkMCIsIm1haW4iLCJiYWNrdHJhY2VfaGlzdG9yeSIsImxvY2FsX3N0b3JhZ2UiLCJwcmlvcml0eSIsIm1vbml0b3IiLCJiYWNrdHJhY2VfaGlzdG9yeSQwIiwibG9jYWxfc3RvcmFnZSQwIiwicHJpb3JpdHkkMCIsIm1vbml0b3IkMCIsIm1vbml0b3JfZnVuIiwicHJpb3JpdHlfZnVuIiwibG9jYWxfc3RvcmFnZV9mdW4iLCJiYWNrdHJhY2VfaGlzdG9yeV9mdW4iLCJtb25pdG9yX2dlbiIsInByaW9yaXR5X2dlbiIsImxvY2FsX3N0b3JhZ2VfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfZ2VuIiwiYmFja3RyYWNlX2hpc3RvcnlfMDA4IiwibG9jYWxfc3RvcmFnZV8wMDYiLCJwcmlvcml0eV8wMDQiLCJtb25pdG9yXzAwMiIsImFyZ18wMDkiLCJibmRzXzAwMSIsImFyZ18wMDciLCJibmRzXzAwMSQwIiwiYXJnXzAwNSIsImJuZHNfMDAxJDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMiIsImludmFyaWFudCIsImNyZWF0ZV9saWtlIiwiZmluZF9sb2NhbCIsImtleSIsIndpdGhfbG9jYWwiLCJkYXRhIiwicmVjb3JkX2JhY2t0cmFjZSIsImR1bW15X2UiLCJkdW1teV9mIiwiZHVtbXlfYSIsInNleHBfb2Zfc2xvdHMiLCJvZl9ldmVudCIsImV2ZW50Iiwib2Zfam9iIiwiam9iIiwiaXNfZXZlbnQiLCJpc19qb2IiLCJraW5kIiwicHJvamVjdCIsImpvYl9vcl9ldmVudCIsImV2ZW50cyIsInNldF9leGVjdXRpb25fY29udGV4dCIsImV4ZWN1dGlvbl9jb250ZXh0IiwibGVuZ3RoIiwic2V0X2xlbmd0aCIsImZyb250Iiwic2V0X2Zyb250IiwibWFzayIsInNldF9tYXNrIiwiam9icyIsInNldF9qb2JzIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJzZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUiLCJudW1fam9ic19ydW4iLCJzZXRfbnVtX2pvYnNfcnVuIiwibGVuZ3RoJDAiLCJmcm9udCQwIiwibWFzayQwIiwiam9icyQwIiwiam9ic19sZWZ0X3RoaXNfY3ljbGUkMCIsIm51bV9qb2JzX3J1biQwIiwibnVtX2pvYnNfcnVuXzAwMiIsImpvYnNfbGVmdF90aGlzX2N5Y2xlXzAwNCIsImpvYnNfMDA2IiwibWFza18wMDgiLCJmcm9udF8wMTAiLCJsZW5ndGhfMDEyIiwiYXJnXzAxMyIsImFyZ18wMTEiLCJibmRzXzAwMSQzIiwiYm5kc18wMDEkNCIsIm9mZnNldCIsImNhcGFjaXR5IiwiY2hlY2siLCJmIiwibGVuZ3RoX2Z1biIsImZyb250X2Z1biIsIm1hc2tfZnVuIiwiam9ic19mdW4iLCJqb2JzX2xlZnRfdGhpc19jeWNsZV9mdW4iLCJudW1fam9ic19ydW5fZnVuIiwiY3JlYXRlX2FycmF5IiwiY2xlYXIiLCJzZXQiLCJhIiwib2Zmc2V0JDAiLCJlbnF1ZXVlIiwib2xkX2NhcGFjaXR5IiwibmV3X2NhcGFjaXR5Iiwib2xkX2pvYnMiLCJvbGRfZnJvbnQiLCJsZW4xIiwibGVuMiIsIm5ld19qb2JzIiwic2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlJDAiLCJuIiwiY2FuX3J1bl9hX2pvYiIsInJ1bl9qb2IiLCJzY2hlZHVsZXIiLCJydW5fZXh0ZXJuYWxfam9icyIsImV4dGVybmFsX2pvYnMiLCJydW5fam9icyIsInRoaXNfam9iIiwiZXhuJDAiLCJleG4iLCJiYWNrdHJhY2UiLCJwb3MkMyIsInBvcyQyIiwicG9zJDEiLCJwb3MkMCIsInBvcyIsIm5hbWVzJDAiLCJpc19udWxsIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwiY29tcGFyZSQwIiwiZXF1YWwkMCIsInNleHBfb2ZfdCQxIiwidHJhbnNpdGlvbl9pc19hbGxvd2VkIiwiZnJvbSIsInRvIiwic2V4cF9vZl9ldmVudCIsImF0IiwiaW50ZXJ2YWwiLCJzdGF0dXMiLCJtYXRjaCIsIm5vbmUiLCJzb21lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJmaXJzdF9zb21lIiwidDEiLCJ0MiIsInVuc2FmZV92YWx1ZSIsInNleHBfb2ZfdCQyIiwicHB4X29wdGlvbmFsX2VfMCIsInZhbHVlJDAiLCJkZWZhdWx0JDAiLCJ2YWx1ZV9leG4iLCJ0b19vcHRpb24iLCJvZl9vcHRpb24iLCJzZXRfc3RhdHVzIiwicHJldl9maXJlZCIsInNldF9wcmV2X2ZpcmVkIiwibmV4dF9maXJlZCIsInNldF9uZXh0X2ZpcmVkIiwic2V0X2ludGVydmFsIiwiY2FsbGJhY2siLCJhdCQwIiwic2V0X2F0IiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJzdGF0dXMkMCIsInByZXZfZmlyZWQkMCIsIm5leHRfZmlyZWQkMCIsImludGVydmFsJDAiLCJleGVjdXRpb25fY29udGV4dCQwIiwiY2FsbGJhY2skMCIsImF0JDEiLCJhbGFybSQwIiwiYWxhcm1fZnVuIiwiYXRfZnVuIiwiY2FsbGJhY2tfZnVuIiwiZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiaW50ZXJ2YWxfZnVuIiwibmV4dF9maXJlZF9mdW4iLCJwcmV2X2ZpcmVkX2Z1biIsInN0YXR1c19mdW4iLCJhbGFybV9nZW4iLCJhdF9nZW4iLCJjYWxsYmFja19nZW4iLCJleGVjdXRpb25fY29udGV4dF9nZW4iLCJpbnRlcnZhbF9nZW4iLCJuZXh0X2ZpcmVkX2dlbiIsInByZXZfZmlyZWRfZ2VuIiwic3RhdHVzX2dlbiIsImdvdCIsInNleHBpZmllciIsImV4cGVjdCIsImVxdWFsIiwiY29tcGFyYXRvciIsImFfMDEzIiwiYl8wMTQiLCJhXzAwOSIsImJfMDEwIiwiYV8wMDUiLCJiXzAwNiIsInNldF9zdGF0dXMkMCIsInNldF9zdGF0dXNfaWYiLCJpcyIsInNleHBfb2ZfdCQzIiwiayIsImlzX3dhbGxfY2xvY2siLCJoYW5kbGVfZmlyZWQiLCJtb3N0X3JlY2VudGx5X2ZpcmVkIiwic2V0X21vc3RfcmVjZW50bHlfZmlyZWQiLCJmaXJlZF9ldmVudHMiLCJzZXRfZmlyZWRfZXZlbnRzIiwiYW1fYWR2YW5jaW5nIiwic2V0X2FtX2FkdmFuY2luZyIsImFkdmFuY2VfZXJyb3JzIiwic2V0X2FkdmFuY2VfZXJyb3JzIiwic2NoZWR1bGVyJDAiLCJpc193YWxsX2Nsb2NrJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm1vc3RfcmVjZW50bHlfZmlyZWQkMCIsImZpcmVkX2V2ZW50cyQwIiwiZXZlbnRzJDAiLCJhbV9hZHZhbmNpbmckMCIsImFkdmFuY2VfZXJyb3JzJDAiLCJtYWtlX2NyZWF0b3IkMCIsImFkdmFuY2VfZXJyb3JzX2Z1biIsImFtX2FkdmFuY2luZ19mdW4iLCJldmVudHNfZnVuIiwiZmlyZWRfZXZlbnRzX2Z1biIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImlzX3dhbGxfY2xvY2tfZnVuIiwic2NoZWR1bGVyX2Z1biIsImFkdmFuY2VfZXJyb3JzX2dlbiIsImFtX2FkdmFuY2luZ19nZW4iLCJldmVudHNfZ2VuIiwiZmlyZWRfZXZlbnRzX2dlbiIsIm1vc3RfcmVjZW50bHlfZmlyZWRfZ2VuIiwiaGFuZGxlX2ZpcmVkX2dlbiIsImlzX3dhbGxfY2xvY2tfZ2VuIiwiY29tcGlsZV9hY2MkOCIsInNjaGVkdWxlcl9nZW4iLCJjcmVhdGUkMCIsIm1hcCQxIiwiaXRlciQxIiwiZm9sZCQxIiwibWFwX3BvbHkkMCIsImZvcl9hbGwkMSIsImV4aXN0cyQxIiwidG9fbGlzdCQxIiwiaXRlciQyIiwiZm9sZCQyIiwiZm9yX2FsbCQyIiwiZXhpc3RzJDIiLCJ0b19saXN0JDIiLCJtYXAkMiIsInNldF9hbGxfbXV0YWJsZV9maWVsZHMkMCIsInNleHBfb2ZfdCQ0Iiwibm93IiwiYWxsX2V2ZW50cyIsImF0MiIsImF0MSIsInRpbWluZ193aGVlbF9ub3ciLCJpc19pbl9maXJlZF9ldmVudHMiLCJ0YXJnZXRfZXZlbnQiLCJjdXJyZW50JDEiLCJjdXJyZW50IiwiY3VycmVudCQwIiwiaW52YXJpYW50X3dpdGhfam9icyIsImpvYl9pbnZhcmlhbnQiLCJwcHhfb3B0aW9uYWxfZV8wJDAiLCJhXzAxNyIsImJfMDE4IiwiZ290JDAiLCJzZXhwaWZpZXIkMCIsImV4cGVjdCQwIiwibWVzc2FnZSQwIiwiY29tcGFyYXRvciQwIiwiYV8wMTkiLCJiXzAyMCIsInhfMDE2IiwiaW52YXJpYW50JDAiLCJzZXhwX29mX3QkNSIsInhfMDIxIiwiaW52YXJpYW50JDEiLCJpbnZhcmlhbnRfd2l0aF9qb2JzJDAiLCJzZXhwX29mX3QkNiIsInhfMDIyIiwiaWQkMSIsImlzX3dhbGxfY2xvY2skMSIsIm1heF9hbGxvd2VkX2FsYXJtX3RpbWUiLCJyZWFkX29ubHkiLCJmaXJlIiwiY29udGludWUkMCIsIm5leHQkMCIsImNvbnRpbnVlJDEiLCJwcHhfb3B0aW9uYWxfZV8wJDEiLCJuZXh0IiwicHB4X29wdGlvbmFsX2VfMCQyIiwicHJldiIsImFsYXJtX3ByZWNpc2lvbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQiLCJuZXh0X2FsYXJtX3J1bnNfYXQiLCJub3ckMCIsInRpbWluZ193aGVlbF9ub3ckMCIsInNjaGVkdWxlIiwicmVtb3ZlX2Zyb21fZmlyZWQiLCJuZXdfc3RhdHVzIiwic2V4cF9vZl9ldmVudCQwIiwic3RhdHVzJDEiLCJwcmV2X2ZpcmVkJDEiLCJzZXRfcHJldl9maXJlZCQwIiwibmV4dF9maXJlZCQxIiwic2V0X25leHRfZmlyZWQkMCIsImludGVydmFsJDEiLCJzZXRfaW50ZXJ2YWwkMCIsImV4ZWN1dGlvbl9jb250ZXh0JDEiLCJjYWxsYmFjayQxIiwic2V0X2F0JDAiLCJhbGFybSQxIiwic2V0X2FsYXJtJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQyIiwic2V0X3N0YXR1cyQxIiwic2V0X3N0YXR1c19pZiQwIiwic2NoZWR1bGVkX2F0IiwiY3JlYXRlX2ludGVybmFsIiwiYWRkJDAiLCJjcmVhdGVfYW5kX2FkZCIsImF0JDIiLCJhZnRlciQwIiwicmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByIiwiYWxhcm1fcHJlY2lzaW9uJDAiLCJhdF9pbnRlcnZhbHMiLCJzZXhwX29mX3QkOCIsImFib3J0IiwiYWJvcnRfaWZfcG9zc2libGUiLCJhYm9ydF9leG4iLCJyZWFzb24iLCJjcmVhdGUkMSIsInNjaGVkdWxlX2F0X2ludGVybmFsIiwic2NoZWR1bGVfYXQiLCJzY2hlZHVsZV9hZnRlciIsInNjaGVkdWxlX2F0X2ludGVydmFscyIsInJlc2NoZWR1bGVfYXQiLCJyZXNjaGVkdWxlX2FmdGVyIiwicnVuX2FmdGVyIiwicnVuX2F0IiwicnVuX2F0X2ludGVydmFscyIsInJ1bl9maXJlZF9ldmVudHMiLCJzZW5kX2V4biIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQiLCJzZW5kX2V4biQwIiwiYWR2YW5jZV9jbG9jayIsImZpcmVfcGFzdF9hbGFybXMiLCJhZHZhbmNlX2ludGVybmFsIiwicHJlcGFyZV90b19hZHZhbmNlIiwiZmluaXNoX2FkdmFuY2luZyIsImVycm9ycyIsImFkdmFuY2VfYnlfYWxhcm1zIiwibWluX2FsYXJtX3RpbWUiLCJhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF8iLCJhZHZhbmNlX2RpcmVjdGx5IiwiZHVyYXRpb25fb2YiLCJzdGFydCIsImR1cmF0aW9uIiwibWF4X2FsYXJtX3RpbWVfaW5fbWluX3RpbWluZ193IiwiaGFzX2V2ZW50c190b19ydW4iLCJjcmVhdGVfd2l0aF9jZWxsIiwiY2VsbCIsImNyZWF0ZV9mdWxsIiwiZXhlYyIsImV4ZWMkMCIsImV4ZWNfZnVuIiwiZXhlY19nZW4iLCJzZXhwX29mX3QkMCIsImV4ZWN1dGlvbl9jb250ZXh0XzAwMiIsInJlY29yZF9iYWNrdHJhY2VzIiwic2V0X3JlY29yZF9iYWNrdHJhY2VzIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfIiwic2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfIiwiY2hlY2tfaW52YXJpYW50cyIsInNldF9jaGVja19pbnZhcmlhbnRzIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJzZXRfeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4iLCJ5aWVsZCQwIiwic2V0X3lpZWxkIiwiZXZlbnRfYWRkZWRfaG9vayIsInNldF9ldmVudF9hZGRlZF9ob29rIiwiam9iX3F1ZXVlZF9ob29rIiwic2V0X2pvYl9xdWV1ZWRfaG9vayIsInRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIiwic2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9oIiwidGltZV9zb3VyY2UiLCJzZXRfdGltZV9zb3VyY2UiLCJ0b3RhbF9jeWNsZV90aW1lIiwic2V0X3RvdGFsX2N5Y2xlX3RpbWUiLCJsYXN0X2N5Y2xlX251bV9qb2JzIiwic2V0X2xhc3RfY3ljbGVfbnVtX2pvYnMiLCJsYXN0X2N5Y2xlX3RpbWUiLCJzZXRfbGFzdF9jeWNsZV90aW1lIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9lbmQiLCJzZXRfcnVuX2V2ZXJ5X2N5Y2xlX2VuZCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydCIsInNldF9ydW5fZXZlcnlfY3ljbGVfc3RhcnQiLCJpbl9jeWNsZSIsInNldF9pbl9jeWNsZSIsImN5Y2xlX3N0YXJ0Iiwic2V0X2N5Y2xlX3N0YXJ0IiwiY3ljbGVfY291bnQiLCJzZXRfY3ljbGVfY291bnQiLCJ1bmNhdWdodF9leG5fdW53cmFwcGVkIiwic2V0X3VuY2F1Z2h0X2V4biIsInNldF9jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IiwibWFpbl9leGVjdXRpb25fY29udGV4dCIsInNldF9tYWluX2V4ZWN1dGlvbl9jb250ZXh0IiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyIsImxvd19wcmlvcml0eV9qb2JzIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMiLCJqb2JfcG9vbCIsInNldF9qb2JfcG9vbCIsImNoZWNrX2FjY2VzcyIsInNldF9jaGVja19hY2Nlc3MiLCJyZWNvcmRfYmFja3RyYWNlcyQwIiwibWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfJDAiLCJjaGVja19pbnZhcmlhbnRzJDAiLCJ5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiQwIiwieWllbGQkMSIsImV2ZW50X2FkZGVkX2hvb2skMCIsImpvYl9xdWV1ZWRfaG9vayQwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2skMCIsImV4dGVybmFsX2pvYnMkMCIsInRpbWVfc291cmNlJDAiLCJ0b3RhbF9jeWNsZV90aW1lJDAiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDAiLCJsYXN0X2N5Y2xlX3RpbWUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUkMCIsInJ1bl9ldmVyeV9jeWNsZV9lbmQkMCIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSQwIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0JDAiLCJpbl9jeWNsZSQwIiwiY3ljbGVfc3RhcnQkMCIsImN5Y2xlX2NvdW50JDAiLCJ1bmNhdWdodF9leG4iLCJjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzJDAiLCJsb3dfcHJpb3JpdHlfam9icyQwIiwibm9ybWFsX3ByaW9yaXR5X2pvYnMkMCIsImpvYl9wb29sJDAiLCJjaGVja19hY2Nlc3MkMCIsImNoZWNrX2FjY2Vzc19mdW4iLCJqb2JfcG9vbF9mdW4iLCJub3JtYWxfcHJpb3JpdHlfam9ic19mdW4iLCJsb3dfcHJpb3JpdHlfam9ic19mdW4iLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzX2Z1biIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfZnVuIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF9mdW4iLCJ1bmNhdWdodF9leG5fZnVuIiwiY3ljbGVfY291bnRfZnVuIiwiY3ljbGVfc3RhcnRfZnVuIiwiaW5fY3ljbGVfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2Z1biIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV9mdSIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfZnVuIiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9mdW4iLCJsYXN0X2N5Y2xlX3RpbWVfZnVuIiwibGFzdF9jeWNsZV9udW1fam9ic19mdW4iLCJ0b3RhbF9jeWNsZV90aW1lX2Z1biIsInRpbWVfc291cmNlX2Z1biIsImV4dGVybmFsX2pvYnNfZnVuIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfIiwiam9iX3F1ZXVlZF9ob29rX2Z1biIsImV2ZW50X2FkZGVkX2hvb2tfZnVuIiwieWllbGRfZnVuIiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fZnVuIiwiY2hlY2tfaW52YXJpYW50c19mdW4iLCJyZWNvcmRfYmFja3RyYWNlc19mdW4iLCJjaGVja19hY2Nlc3NfZ2VuIiwiam9iX3Bvb2xfZ2VuIiwibm9ybWFsX3ByaW9yaXR5X2pvYnNfZ2VuIiwibG93X3ByaW9yaXR5X2pvYnNfZ2VuIiwidmVyeV9sb3dfcHJpb3JpdHlfd29ya2Vyc19nZW4iLCJtYWluX2V4ZWN1dGlvbl9jb250ZXh0X2dlbiIsImN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHRfZ2VuIiwidW5jYXVnaHRfZXhuX2dlbiIsImN5Y2xlX2NvdW50X2dlbiIsImNvbXBpbGVfYWNjJDkiLCJjeWNsZV9zdGFydF9nZW4iLCJjb21waWxlX2FjYyQxMCIsImluX2N5Y2xlX2dlbiIsImNvbXBpbGVfYWNjJDExIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2dlbiIsImNvbXBpbGVfYWNjJDEyIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlX2dlIiwiY29tcGlsZV9hY2MkMTMiLCJydW5fZXZlcnlfY3ljbGVfZW5kX2dlbiIsImNvbXBpbGVfYWNjJDE0IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV9nZW4iLCJjb21waWxlX2FjYyQxNSIsImxhc3RfY3ljbGVfdGltZV9nZW4iLCJjb21waWxlX2FjYyQxNiIsImxhc3RfY3ljbGVfbnVtX2pvYnNfZ2VuIiwiY29tcGlsZV9hY2MkMTciLCJ0b3RhbF9jeWNsZV90aW1lX2dlbiIsImNvbXBpbGVfYWNjJDE4IiwidGltZV9zb3VyY2VfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJleHRlcm5hbF9qb2JzX2dlbiIsImNvbXBpbGVfYWNjJDIwIiwidGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2tfJDAiLCJjb21waWxlX2FjYyQyMSIsImpvYl9xdWV1ZWRfaG9va19nZW4iLCJjb21waWxlX2FjYyQyMiIsImV2ZW50X2FkZGVkX2hvb2tfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJ5aWVsZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsInlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluX2dlbiIsImNvbXBpbGVfYWNjJDI1IiwiY2hlY2tfaW52YXJpYW50c19nZW4iLCJjb21waWxlX2FjYyQyNiIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyXyQxIiwiY29tcGlsZV9hY2MkMjciLCJyZWNvcmRfYmFja3RyYWNlc19nZW4iLCJjcmVhdGUkMiIsImNoZWNrX2FjY2Vzc18wMDciLCJqb2JfcG9vbF8wMDkiLCJ2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzXzAxNSIsImxvd19wcmlvcml0eV9qb2JzXzAxMyIsIm5vcm1hbF9wcmlvcml0eV9qb2JzXzAxMSIsIm1haW5fZXhlY3V0aW9uX2NvbnRleHRfMDE3IiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dF8wMTkiLCJ1bmNhdWdodF9leG5fMDIxIiwiY3ljbGVfY291bnRfMDI3IiwiY3ljbGVfc3RhcnRfMDI5IiwiaW5fY3ljbGVfMDMxIiwicnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0XzAzMyIsInJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZV8wMyIsInJ1bl9ldmVyeV9jeWNsZV9lbmRfMDM3IiwicnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZV8wMzkiLCJsYXN0X2N5Y2xlX3RpbWVfMDQxIiwibGFzdF9jeWNsZV9udW1fam9ic18wNDMiLCJ0b3RhbF9jeWNsZV90aW1lXzA0NSIsInRpbWVfc291cmNlXzA0NyIsImV4dGVybmFsX2pvYnNfMDQ5Iiwiam9iX3F1ZXVlZF9ob29rXzA1MyIsImV2ZW50X2FkZGVkX2hvb2tfMDU1IiwieWllbGRfMDU3IiwieWllbGRfdW50aWxfbm9fam9ic19yZW1haW5fMDU5IiwiY2hlY2tfaW52YXJpYW50c18wNjEiLCJyZWNvcmRfYmFja3RyYWNlc18wNjUiLCJhcmdfMDY2IiwiYm5kc18wMDYiLCJhcmdfMDY0IiwiYm5kc18wMDYkMCIsImFyZ18wNjIiLCJibmRzXzAwNiQxIiwiYXJnXzA2MCIsImJuZHNfMDA2JDIiLCJhcmdfMDU4IiwiYm5kc18wMDYkMyIsImFyZ18wNTYiLCJibmRzXzAwNiQ0IiwiYXJnXzA1NCIsImJuZHNfMDA2JDUiLCJhcmdfMDUyIiwiYm5kc18wMDYkNiIsImFyZ18wNTAiLCJibmRzXzAwNiQ3IiwiYXJnXzA0OCIsImJuZHNfMDA2JDgiLCJhcmdfMDQ2IiwiYm5kc18wMDYkOSIsImFyZ18wNDQiLCJibmRzXzAwNiQxMCIsImFyZ18wNDIiLCJibmRzXzAwNiQxMSIsImFyZ18wNDAiLCJibmRzXzAwNiQxMiIsImFyZ18wMzgiLCJibmRzXzAwNiQxMyIsImFyZ18wMzYiLCJibmRzXzAwNiQxNCIsImFyZ18wMzQiLCJibmRzXzAwNiQxNSIsImFyZ18wMzIiLCJibmRzXzAwNiQxNiIsImFyZ18wMzAiLCJibmRzXzAwNiQxNyIsImFyZ18wMjgiLCJibmRzXzAwNiQxOCIsImFyZzFfMDI0IiwiYXJnMF8wMjMiLCJyZXMwXzAyNSIsInJlczFfMDI2IiwiYXJnXzAyMiIsImJuZHNfMDA2JDE5IiwiYXJnXzAyMCIsImJuZHNfMDA2JDIwIiwiYXJnXzAxOCIsImJuZHNfMDA2JDIxIiwiYXJnXzAxNiIsImJuZHNfMDA2JDIyIiwiYXJnXzAxNCIsImJuZHNfMDA2JDIzIiwiYXJnXzAxMiIsImJuZHNfMDA2JDI0IiwiYXJnXzAxMCIsImJuZHNfMDA2JDI1IiwiYXJnXzAwOCIsImJuZHNfMDA2JDI2IiwidW5jYXVnaHRfZXhuJDAiLCJhcmcxXzA2OCIsImFyZzBfMDY3IiwicmVzMF8wNjkiLCJyZXMxXzA3MCIsIm51bV9wZW5kaW5nX2pvYnMiLCJsYXN0X2N5Y2xlX251bV9qb2JzJDEiLCJ1bm9yZGVyZWRfaXNfc3VibGlzdCIsInNtYWxsIiwibGFyZ2UiLCJ4IiwibCQwIiwieSIsImwiLCJjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCIsInRhYmxlIiwibGlzdCIsImZpZWxkIiwicSIsImZyZWVfam9iIiwiam9iX3F1ZXVlIiwiZiQwIiwiZW5xdWV1ZV9qb2IiLCJjcmVhdGUkMyIsImlzX2RlYWQiLCJzZXRfY2hlY2tfYWNjZXNzJDAiLCJ0X3JlZiIsImNoZWNrX2FjY2VzcyQxIiwiY3VycmVudF9leGVjdXRpb25fY29udGV4dCQxIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEiLCJ0bXBfY29udGV4dCIsIm9sZF9jb250ZXh0Iiwid2l0aF9leGVjdXRpb25fY29udGV4dCIsImNyZWF0ZV9qb2IiLCJnb3RfdW5jYXVnaHRfZXhuIiwiYXJnMV8wNzIiLCJhcmcwXzA3MSIsInJlczBfMDczIiwicmVzMV8wNzQiLCJzdGFydF9jeWNsZSIsIm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkiLCJlIiwiZSQwIiwic3RhYmlsaXplIiwiY3JlYXRlX3RpbWVfc291cmNlIiwib3B0Iiwic3RoIiwidGltaW5nX3doZWVsX2NvbmZpZyIsIndhbGxfY2xvY2siLCJzZXRfcHJldiIsInBhcmFtIiwic2V0X25leHQiLCJydW4iLCJjcmVhdGUyIiwicnVuMSIsImV4ZWN1dGlvbl9jb250ZXh0MSIsInJ1bjIiLCJleGVjdXRpb25fY29udGV4dDIiLCJzY2hlZHVsZV9qb2JzIiwiYWRkIiwib2ZfbGlzdCIsImZpcnN0IiwibCQxIiwibCQyIiwicnVuJDAiLCJwcmV2JDAiLCJhY2MkMCIsImNlbGxfb2ZfaGFuZGxlciIsImluZGlyIiwic3F1YXNoIiwidCQzIiwidCQ0IiwiaW5kaXIkMSIsInQkNSIsImluZGlyJDAiLCJ0JDIiLCJhX2ludmFyaWFudCIsImhhbmRsZXIiLCJwZWVrIiwidmFsdWUiLCJpZl9lbXB0eV90aGVuX2ZhaWx3aXRoIiwiaXNfZW1wdHkiLCJpc19mdWxsIiwiZmlsbCIsInJlbW92ZV9oYW5kbGVyIiwiYWRkX2hhbmRsZXIiLCJoYW5kbGVyJDEiLCJoYW5kbGVyJDIiLCJydW4kMSIsImhhbmRsZXIkMCIsImhhc19oYW5kbGVycyIsInVwb24iLCJ1cG9uJDAiLCJjb25uZWN0IiwiYmluZF9yZXN1bHQiLCJiaW5kX3JocyIsImJpbmRfcmVzdWx0JDAiLCJpdmFyIiwiYmluZF9yaHNfY29udGVudHMiLCJpdmFyJDAiLCJsYXN0MSIsImxhc3QyIiwiaGFuZGxlcjEiLCJleGVjdXRpb25fY29udGV4dDIkMCIsInJ1bjIkMCIsImhhbmRsZXIxJDAiLCJ2JDAiLCJvZl9pdmFyIiwiaW52YXJpYW50X2EiLCJyZXR1cm4kMCIsImlzX2RldGVybWluZWQiLCJiaW5kIiwiaCIsInJlYWQiLCJmaWxsX2lmX2VtcHR5IiwidG9fYmluYWJsZSIsIm9mX2JpbmFibGUiLCJzZXhwX29mX2hvdyIsInZfMDAxIiwibmV2ZXIiLCJyZXR1cm4kMSIsInJldHVybiQyIiwicmV0dXJuJDMiLCJ1bml0IiwiYm90aCQwIiwiYTEiLCJhMiIsImRvbl90X3dhaXRfZm9yIiwiZjIiLCJmMSIsInByb2Nlc3MiLCJyZXN0IiwiY2hvaWNlIiwiZW5hYmxlZCIsImNob2ljZXMiLCJ1bnJlZ2lzdGVycyIsInJlYWR5IiwiY2hvb3NlX3Jlc3VsdCIsImNob2ljZXMkMCIsImNob2ljZXMkMSIsImNob29zZSIsImFueV9mIiwidHMiLCJhbnkiLCJhbnlfdW5pdCIsImZvciQwIiwiZG8kMCIsImxvb3AiLCJyZXBlYXRfdW50aWxfZmluaXNoZWQiLCJzdGF0ZSIsImZpbmlzaGVkIiwiZm9yZXZlciIsImIiLCJ4cyIsInNlcW1hcCIsImJzIiwiYWxsIiwiZHMiLCJhbGxfdW5pdCIsImQiLCJvayIsIm9mX2FfMDA1IiwieF8wMDYiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwieF8wMDciLCJjb2xsZWN0IiwiaXNfY2xvc2VkIiwiZmlsbF9leG4iLCJjbG9zZV9leG4iLCJjbG9zZV9pZl9vcGVuIiwiZXh0ZW5kIiwiZGVmZXJyZWQwIiwiZGVmZXJyZWQxIiwiaW1wb3J0MCIsImVycm9yIiwiZGV0YWNoIiwiZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyIsImhhbmRsZXJfc3RhdGVfcmVmIiwicnVuX2YiLCJiYWdfZWx0IiwiaW5uZXJfZXhuJDAiLCJpbm5lcl9leG4iLCJkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0iLCJ0YWlsIiwiZ2V0X25leHRfZXJyb3IiLCJkZXRhY2hfYW5kX2dldF9uZXh0X2Vycm9yIiwiZXh0cmFjdF9leG4iLCJjb2x1bW4iLCJtb25pdG9yJDEiLCJuYW1lJDEiLCJiYWNrdHJhY2UkMCIsImJhY2t0cmFjZSQxIiwicmVzdCQwIiwicmVzdCQxIiwidDMiLCJyZXN0JDIiLCJyZXN0JDMiLCJ0cmFjZXMiLCJyZXN0JDQiLCJ0MSQwIiwicmVzdCQ1IiwidDIkMCIsInJlc3QkNiIsInQyJDEiLCJiYWNrdHJhY2UkMiIsImxpc3RfaWZfbm90X2VtcHR5IiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJleHRyYWN0X2V4biQwIiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsImFyZzFfMDA4IiwiYXJnMF8wMDciLCJyZXMwXzAwOSIsInJlczFfMDEwIiwid2l0aGluX2NvbnRleHQiLCJjb250ZXh0Iiwid2l0aGluX2dlbiIsIndpdGhpbiIsIndpdGhpbl92Iiwid2l0aGluJDAiLCJzY2hlZHVsZV93aXRoX2RhdGEiLCJ3b3JrIiwidXBvbl93b3JrX2ZpbGxfaSIsInNjaGVkdWxlJDAiLCJwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCIsInByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JDAiLCJjYWxsX2FuZF9maWxsIiwic3RyZWFtX2l0ZXIiLCJzdHJlYW0iLCJleG5zIiwiZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvIiwicmVzdWx0X2ZpbGxlciIsImhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCIsInRyeV93aXRoX2xvZ19leG4iLCJ0cnlfd2l0aCIsInN0aCQwIiwiZG9fZXh0cmFjdF9leG4iLCJzdGgkMSIsInN0aCQyIiwiaGFuZGxlX2V4biIsInJlcyIsInRyeV93aXRoX29yX2Vycm9yIiwidHJ5X3dpdGhfam9pbl9vcl9lcnJvciIsInByb3RlY3QiLCJmaW5hbGx5JDAiLCJmciIsInIkMCIsImZpbmFsbHlfZXhuIiwiaGFuZGxlX2Vycm9ycyIsImNhdGNoX3N0cmVhbSIsImNhdGNoJDAiLCJjYXRjaF9lcnJvciIsImRlcHRoIiwibiQwIiwiZmlyc3RfZXhuIiwibG9vcCQwIiwibG9vcF9uZXh0IiwibG9vcF9uZXh0JDAiLCJjbG9zZWQiLCJ1bmZvbGQiLCJjb3B5X3RvX3RhaWwiLCJhcHBlbmQiLCJmaWx0ZXJfZGVwcmVjYXRlZCIsImZpbHRlcl9tYXBfZGVwcmVjYXRlZCIsImZpcnN0X24iLCJhdmFpbGFibGVfbm93Iiwic3BsaXQiLCJzdG9wIiwicmVhc29uX2Zvcl9zdG9wcGluZyIsInByZWZpeCIsImZpbmlzaCIsIm8iLCJmaW5kIiwiZm91bmQiLCJ1bmdyb3VwIiwiaW50ZXJsZWF2ZSIsIm51bV9vcGVuIiwiY2xvc2UiLCJvdXRlcl9jbG9zZWQiLCJ0YWtlX3VudGlsIiwieiIsIml0ZXJfZHVyYWJseSIsIml0ZXJfZHVyYWJseV9yZXBvcnRfZW5kIiwiaXRlcl9kdXJhYmx5JDAiLCJvZl9mdW4iLCJzZXRfaXZhciIsImhhc19hbnlfd2FpdGVycyIsInNldF9oYXNfYW55X3dhaXRlcnMiLCJoYXNfYW55X3dhaXRlcnMkMCIsInJlcHIiLCJpdmFyX2Z1biIsImhhc19hbnlfd2FpdGVyc19mdW4iLCJvZl9hXzAwMSIsImhhc19hbnlfd2FpdGVyc18wMDMiLCJpdmFyXzAwNSIsImFyZ18wMDYiLCJibmRzXzAwMiIsImFyZ18wMDQiLCJibmRzXzAwMiQwIiwiYnJvYWRjYXN0Iiwid2FpdCIsImhhc19hbnlfd2FpdGVycyQxIiwieF8wMDMiLCJhZHZhbmNlX2RpcmVjdGx5X2J5IiwiYnkiLCJ3YWl0X2ZvciIsInJ1bl9xdWV1ZWRfYWxhcm1zIiwid2Fsa19hbGFybXMiLCJtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwiLCJxdWV1ZWRfYWxhcm1zX3JhbiIsIm5leHRfYWxhcm1fZmlyZXNfYXQkMCIsImFkdmFuY2VfYnlfYWxhcm1zX2J5Iiwic3Bhbl90b190aW1lIiwicnVuX2F0X2ludGVybmFsIiwidGltZSIsInJlbW92ZV9hbGFybSIsIm9mX2FfMDA4Iiwib2ZfaF8wMDkiLCJhcmcwXzAxMCIsInJlczBfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNldF9zY2hlZHVsZWRfYXQiLCJudW1fZmlyZXNfdG9fc2tpcCIsInNldF9udW1fZmlyZXNfdG9fc2tpcCIsImZpcmVkIiwic2NoZWR1bGVkX2F0JDAiLCJudW1fZmlyZXNfdG9fc2tpcCQwIiwiZmlyZWQkMCIsIm9mX2FfMDE2Iiwib2ZfaF8wMTciLCJhbGFybV8wMTkiLCJmaXJlZF8wMjMiLCJudW1fZmlyZXNfdG9fc2tpcF8wMjUiLCJzY2hlZHVsZWRfYXRfMDI3IiwidGltZV9zb3VyY2VfMDI5IiwiYm5kc18wMTgiLCJibmRzXzAxOCQwIiwiYXJnXzAyNiIsImJuZHNfMDE4JDEiLCJhcmdfMDI0IiwiYm5kc18wMTgkMiIsImJuZHNfMDE4JDMiLCJibmRzXzAxOCQ0Iiwic2V4cF9vZl90X3VuaXQiLCJ4XzAzMSIsImZpcmVkJDEiLCJpbnZhcmlhbnRfaCIsInNjaGVkdWxlZF9hdF9mdW4iLCJhXzAzMyIsImJfMDM0IiwibnVtX2ZpcmVzX3RvX3NraXBfZnVuIiwiZmlyZWRfZnVuIiwieF8wMzIiLCJvZl9hXzAzNSIsIm9mX2hfMDM2IiwiYXJnMF8wMzciLCJyZXMwXzAzOCIsImFyZzBfMDM5IiwicmVzMF8wNDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwib2ZfYV8wNDUiLCJvZl9oXzA0NiIsImFyZzBfMDQ3IiwicmVzMF8wNDgiLCJhcmcwXzA0OSIsInJlczBfMDUwIiwieF8wNTMiLCJhJDAiLCJvZl9hXzA1NCIsIm9mX2hfMDU1IiwiYXJnMF8wNTYiLCJyZXMwXzA1NyIsImFyZzBfMDU4IiwicmVzMF8wNTkiLCJhcmcxXzA2MyIsImFyZzBfMDYyIiwicmVzMF8wNjQiLCJyZXMxXzA2NSIsImlzX2luX3RpbWluZ193aGVlbCIsImFtX3RyeWluZ190b19yZXNjaGVkdWxlX2luX3RoZSIsInJ1bl9hdCQwIiwicnVuX2FmdGVyJDAiLCJhdF90aW1lcyIsIm5leHRfdGltZSIsImF0X3ZhcnlpbmdfaW50ZXJ2YWxzIiwiY29tcHV0ZV9zcGFuIiwic3RhcnQkMCIsImltbWVkaWF0ZWx5IiwicnVuX3JlcGVhdGVkbHkiLCJjb250aW51ZV9vbl9lcnJvciIsInN0b3AkMCIsInN0b3AkMSIsImNvbnRpbnVlX3RyeV93aXRoIiwiY29udGludWVfZiIsImJhc2UiLCJvcl9lcnJvciIsImV2ZXJ5IiwiZXZlcnkkMCIsInN0YXJ0JDEiLCJydW5fYXRfaW50ZXJ2YWxzJDAiLCJ3aXRoX3RpbWVvdXQiLCJ0aW1lb3V0Iiwib2Zfc3luY2hyb25vdXMiLCJ0b19zeW5jaHJvbm91cyIsIm9mX2FfMDAyIiwicmVzMF8wMDQiLCJsZW5ndGhfMDA2IiwiYm5kc18wMDUiLCJjcmVhdGVfY291bnRlciIsInB1c2giLCJwb3BfZXhuIiwic2V4cF9vZl9vdXRjb21lIiwidl8wMDIiLCJ2XzAwMyIsImNsZWFuZWQiLCJudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkIiwic2V0X251bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQiLCJjYXBhY2l0eV9hdmFpbGFibGUiLCJzZXRfY2FwYWNpdHlfYXZhaWxhYmxlIiwibnVtX2pvYnNfcnVubmluZyIsInNldF9udW1fam9ic19ydW5uaW5nIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0Iiwiam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIiwibWF4X2NvbmN1cnJlbnRfam9icyIsImNsZWFuZWQkMCIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQkMCIsImNhcGFjaXR5X2F2YWlsYWJsZSQwIiwibnVtX2pvYnNfcnVubmluZyQwIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0JDAiLCJqb2JfcmVzb3VyY2VzX25vdF9pbl91c2UkMCIsIm1heF9jb25jdXJyZW50X2pvYnMkMCIsIm9mX2FfMDExIiwiam9ic193YWl0aW5nX3RvX3N0YXJ0XzAxOSIsImpvYl9yZXNvdXJjZXNfbm90X2luX3VzZV8wMTciLCJtYXhfY29uY3VycmVudF9qb2JzXzAxNSIsImNvbnRpbnVlX29uX2Vycm9yXzAxMyIsIm51bV9qb2JzX3J1bm5pbmdfMDIxIiwiY2FwYWNpdHlfYXZhaWxhYmxlXzAyMyIsImlzX2RlYWRfMDI1IiwiY2xlYW5zXzAyNyIsIm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWRfMDI5IiwiY2xlYW5lZF8wMzEiLCJibmRzXzAxMiIsImJuZHNfMDEyJDAiLCJibmRzXzAxMiQxIiwiYm5kc18wMTIkMiIsImJuZHNfMDEyJDMiLCJibmRzXzAxMiQ0Iiwib3V0Y29tZV8wMDkiLCJzdGFydF8wMDYiLCJibmRzXzAwNSQwIiwidl8wMDgiLCJibmRzXzAwNSQxIiwiYm5kc18wMTIkNSIsImJuZHNfMDEyJDYiLCJibmRzXzAxMiQ3IiwiYm5kc18wMTIkOCIsInhfMDMzIiwib2ZfYV8wMzQiLCJvZl9raW5kXzAzNSIsInhfMDM2IiwibnVtX2pvYnNfd2FpdGluZ190b19zdGFydCIsImNsZWFuX3Jlc291cmNlIiwia2lsbCIsImF0X2tpbGwiLCJjbGVhbmVkJDEiLCJzdGFydF9qb2IiLCJqb2JfcmVzb3VyY2UiLCJqb2JfcmVzb3VyY2VzIiwiY3JlYXRlX3dpdGgiLCJvdXRjb21lIiwiaW50ZXJuYWxfam9iIiwiaGFuZGxlX2VucXVldWVfcmVzdWx0IiwiZW5xdWV1ZSQwIiwiZW5xdWV1ZV9leGNsdXNpdmUiLCJkb25lIiwiZl9wbGFjZWhvbGRlciIsInNsb3QiLCJtb25hZF9zZXF1ZW5jZV9ob3ciLCJob3ciLCJtb25hZF9zZXF1ZW5jZV9ob3cyIiwicHJpb3Jfam9ic19kb25lIiwiYWxsX2R1bW15X2pvYnNfcnVubmluZyIsImR1bW15X2pvYnNfcnVubmluZyIsImNhcGFjaXR5X2F2YWlsYWJsZSQxIiwiaGFzX3VwY29taW5nX2V2ZW50IiwibmV4dF91cGNvbWluZ19ldmVudCIsIm5leHRfdXBjb21pbmdfZXZlbnRfZXhuIiwiZXZlbnRfcHJlY2lzaW9uIiwiYWRkX2V2ZXJ5X2N5Y2xlX3N0YXJ0X2hvb2siLCJoYW5kbGUiLCJhZGRfZXZlcnlfY3ljbGVfZW5kX2hvb2siLCJyZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2siLCJsc3QiLCJsc3QkMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rXyIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCIsIm1hcF9jeWNsZV90aW1lcyIsImxvbmdfY3ljbGVzIiwiYXRfbGVhc3QiLCJjeWNsZV9udW1fam9icyIsImludCQwIiwidGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qIiwiY3JlYXRlX2FsYXJtIiwiYWRkX2ZpbmFsaXplciIsImhlYXBfYmxvY2siLCJmaW5hbGl6ZXIiLCJhZGRfZmluYWxpemVyX2V4biIsImFkZF9maW5hbGl6ZXJfbGFzdCIsImFkZF9maW5hbGl6ZXJfbGFzdF9leG4iLCJmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCIsInJ1bl9jeWNsZSIsIm51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZSIsImN5Y2xlX3RpbWUiLCJyZXMxXzAwNCIsInJ1bl9jeWNsZXNfdW50aWxfbm9fam9ic19yZW1haSIsIm1ha2VfYXN5bmNfdW51c2FibGUiLCJyZXNldF9pbl9mb3JrZWRfcHJvY2VzcyIsIm1heV9yZXR1cm5faW1tZWRpYXRlbHkiLCJ5aWVsZF9ldmVyeSIsImNvdW50X3VudGlsX3lpZWxkIiwidGhpc19jeWNsZV90aW1lIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyIsInlpZWxkX3RoZW5fcnVuIiwid29ya2VyIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQwIiwibnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyQxIiwiYnQiLCJxdWV1ZSIsInJ1bm5pbmciLCJ0aHJlYWRfc2FmZV9lbnF1ZXVlX2pvYiIsImN5Y2xlX3N0YXJ0X25zIiwiY3ljbGVfdGltZXNfbnMiLCJjeWNsZV90aW1lcyIsImV2ZW50X3ByZWNpc2lvbl9ucyIsImJvb2wiLCJhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayQwIiwiYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rJDAiLCJyZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va18kMCIsInJlbW92ZV9ldmVyeV9jeWNsZV9lbmRfaG9va19leCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dCQwIiwid2l0aF9leGVjdXRpb25fY29udGV4dDEkMCIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDAxIiwiYl8wMDIiLCJyaWdodF8wMDQiLCJsZWZ0XzAwMyIsInZfMDA2IiwiZm9sZGkiLCJzZXFtYXBpIiwiaXRlcmkiLCJtYXBpIiwiZmlsdGVyaSIsImJvb2xzIiwiZmlsdGVyX21hcGkiLCJjb25jYXRfbWFwaSIsImZpbmRfbWFwaSIsImF1eCIsImZpbmRpIiwiZWx0IiwiZXhpc3RzaSIsImZvcl9hbGxpIiwiZmlsdGVyX21hcCIsImZpbHRlciIsImNvbmNhdF9tYXAiLCJmaW5kX21hcCIsInRsIiwiaGQiLCJjaGFuZ2UiLCJ1cGRhdGUiLCJpdGVyX2tleXMiLCJhbGlzdCIsImFsaXN0X2luX2luY3JlYXNpbmdfa2V5X29yZGVyIiwiZm9sZF9yaWdodCIsImFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIiwic2VxdWVuY2UiLCJqb2JfbWFwIiwiZmlsdGVyX2tleXMiLCJtZXJnZSIsInRodW5rIiwicmVyYWlzZSIsImdlbmVyYWwiLCJoYXNoYWJsZSIsImNvbWJpbmUiLCJlcnIiLCJmYWlsIiwiZmFpbGYiLCJmb3JtYXQiLCJtYXBfZXJyb3IiLCJpZ25vcmVfbSIsImpvaW4iLCJzeW1ib2xfYmluZCIsImFwcGx5IiwiZTEiLCJlMiIsInN5bWJvbF9iaW5kJDAiLCJzeW1ib2xfbWFwJDAiLCJva19leG4iLCJvZl9leG4iLCJvZl9leG5fcmVzdWx0IiwibXNnIiwic2V4cF9vZiIsImVycm9yX3MiLCJlcnJvcl9zdHJpbmciLCJlcnJvcmYiLCJ0YWciLCJ0YWdfcyIsInRhZ19zX2xhenkiLCJ0YWdfYXJnIiwidW5pbXBsZW1lbnRlZCIsImNvbWJpbmVfZXJyb3JzIiwiY29tYmluZV9lcnJvcnNfdW5pdCIsImZpbHRlcl9va19hdF9sZWFzdF9vbmUiLCJmaW5kX21hcF9vayIsImN1cnJlbnRfZXJyb3IiLCJlcnJvcnMkMCIsIm9rX3VuaXQiLCJ0cnlfd2l0aCQwIiwidHJ5X3dpdGhfam9pbiIsInN0YXRlJDAiLCJmb2xkX21hcGkiLCJtYXBpX2YiLCJmb2xkX2YiLCJ0aHJvdHRsZSIsImMiLCJjJDEiLCJjJDAiLCJpJDAiLCJhY2N1bSIsIm1heWJlX3YiLCJzaG93X2RlYnVnX21lc3NhZ2VzIiwiY2hlY2tfaW52YXJpYW50IiwieF8wMDQiLCJ2YWx1ZXNfcmVhZCIsInNldF92YWx1ZXNfcmVhZCIsInZhbHVlc19yZWFkJDAiLCJwaXBlX2lkXzAwOSIsInZhbHVlc19yZWFkXzAxMSIsImJuZHNfMDA4IiwiYXJnXzAxNSIsImJuZHNfMDA4JDAiLCJ2XzAxMyIsImJuZHNfMDA4JDEiLCJibmRzXzAwOCQyIiwidmFsdWVzX3NlbnRfZG93bnN0cmVhbSIsInZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdSIsIndoZW5fc2VudF9kb3duc3RyZWFtIiwiY29uc3VtZXIiLCJ3YW50cyIsImNvbnN1bWVyJDAiLCJ3YW50cyQwIiwib2ZfYV8wMjkiLCJjb25zdW1lcl8wMzMiLCJ3YW50c18wMzEiLCJibmRzXzAzMCIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMSIsInZfMDIwIiwicmVzMF8wMjIiLCJhcmcxXzAyNSIsImFyZzBfMDI0IiwicmVzMF8wMjYiLCJ2XzAyMyIsInJlczFfMDI3IiwiYm5kc18wMzAkMCIsImZpbGxfd2l0aF9lb2YiLCJpJDEiLCJmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIiwicmVhZHlfMDM5IiwiZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZF8wMzciLCJibmRzXzAzNiIsImJuZHNfMDM2JDAiLCJibmRzXzAzNiQxIiwiY29uc3VtZXJzIiwic2V0X2NvbnN1bWVycyIsImJsb2NrZWRfcmVhZHMiLCJibG9ja2VkX2ZsdXNoZXMiLCJwdXNoYmFjayIsInNldF9wdXNoYmFjayIsInNpemVfYnVkZ2V0Iiwic2V0X3NpemVfYnVkZ2V0IiwiY29uc3VtZXJzJDAiLCJibG9ja2VkX3JlYWRzJDAiLCJibG9ja2VkX2ZsdXNoZXMkMCIsInB1c2hiYWNrJDAiLCJzaXplX2J1ZGdldCQwIiwic2V4cF9vZl9waXBlIiwib2ZfYV8wNDEiLCJvZl9waGFudG9tXzA0MiIsImlkXzA0NCIsImluZm9fMDQ2IiwiYnVmZmVyXzA1MCIsInNpemVfYnVkZ2V0XzA1MiIsInB1c2hiYWNrXzA1NCIsIm51bV92YWx1ZXNfcmVhZF8wNTYiLCJyZWFkX2Nsb3NlZF8wNjQiLCJjbG9zZWRfMDYyIiwiYmxvY2tlZF9yZWFkc18wNjAiLCJibG9ja2VkX2ZsdXNoZXNfMDU4IiwiY29uc3VtZXJzXzA2NiIsInVwc3RyZWFtX2ZsdXNoZWRzXzA2OCIsImJuZHNfMDQzIiwiYXJnXzA2OSIsImJuZHNfMDQzJDAiLCJhcmdfMDY3IiwiYm5kc18wNDMkMSIsImFyZ18wNjUiLCJibmRzXzA0MyQyIiwiYXJnXzA2MyIsImJuZHNfMDQzJDMiLCJhcmdfMDYxIiwiYm5kc18wNDMkNCIsImFyZ18wNTkiLCJibmRzXzA0MyQ1IiwiYXJnXzA1NyIsImJuZHNfMDQzJDYiLCJhcmdfMDU1IiwiYm5kc18wNDMkNyIsImFyZ18wNTMiLCJibmRzXzA0MyQ4IiwiYXJnXzA1MSIsImJuZHNfMDQzJDkiLCJ2XzA0NyIsImFyZ18wNDkiLCJibmRfMDQ4IiwiYm5kc18wNDMkMTAiLCJhcmdfMDQ1IiwiYm5kc18wNDMkMTEiLCJoYXNoIiwiaXNfcmVhZF9jbG9zZWQiLCJwdXNoYmFjayQxIiwieF8wNzMiLCJ4XzAzNSIsInNleHBfb2ZfcGhhbnRvbSIsIm9mX2FfMDc0IiwieF8wNzUiLCJzZXhwX29mX3BoYW50b20kMCIsIm9mX2FfMDc2IiwieF8wNzciLCJpZF9yZWYiLCJpbml0aWFsX2J1ZmZlciIsInZhbGlkYXRlX3NpemVfYnVkZ2V0IiwidXBkYXRlX3B1c2hiYWNrIiwieF8wNzgiLCJjbG9zZV9yZWFkIiwieF8wNzkiLCJmbHVzaCIsImNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4YyIsInciLCJjcmVhdGVfcmVhZGVyIiwiY2xvc2Vfb25fZXhjZXB0aW9uIiwiY3JlYXRlX3dyaXRlciIsInZhbHVlc193ZXJlX3JlYWQiLCJmbHVzaF9yZXN1bHQiLCJjb25zdW1lX29uZSIsImNvbnN1bWUiLCJtYXhfcXVldWVfbGVuZ3RoIiwicmVzdWx0JDAiLCJzZXRfc2l6ZV9idWRnZXQkMCIsInN0YXJ0X3dyaXRlIiwieF8wODEiLCJ4XzA4MCIsImZpbmlzaF93cml0ZSIsImJsb2NrZWRfcmVhZCIsIml2YXIkMSIsInRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2siLCJ0cmFuc2Zlcl9pbiIsIndyaXRlIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayIsIndyaXRlJDAiLCJ3cml0ZV93aGVuX3JlYWR5Iiwid3JpdGVfaWZfb3BlbiIsIndyaXRlX3dpdGhvdXRfcHVzaGJhY2tfaWZfb3BlbiIsImVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIiwieF8wODMiLCJzdGFydF9yZWFkIiwibGFiZWwiLCJ4XzA4NCIsImdlbl9yZWFkX25vdyIsImdldF9tYXhfcXVldWVfbGVuZ3RoIiwibWF4X3F1ZXVlX2xlbmd0aCQwIiwicmVhZF9ub3ciLCJyZWFkX25vdyQwIiwicmVhZCQwIiwicmVhZF9leG4iLCJ2YWx1ZXNfYXZhaWxhYmxlIiwicmVhZF9jaG9pY2UiLCJyZWFkX2Nob2ljZV9zaW5nbGVfY29uc3VtZXJfZXgiLCJyZWFkX2V4YWN0bHkiLCJudW1fdmFsdWVzIiwiYWxyZWFkeV9yZWFkIiwiZG93bnN0cmVhbV9mbHVzaGVkIiwidXBzdHJlYW1fZmx1c2hlZCIsImFkZF9jb25zdW1lciIsInBpcGVfaWQiLCJjb25zdW1lciQxIiwidXBzdHJlYW0iLCJkb3duc3RyZWFtIiwidXBzdHJlYW1fZmx1c2hlZCQwIiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsImZvbGRfZ2VuIiwiZmx1c2hlZCIsImZvbGRfd2l0aG91dF9wdXNoYmFjayIsIndpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yIiwiaXRlcl93aXRob3V0X3B1c2hiYWNrIiwibWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMCIsIm1heF9pdGVyYXRpb25zX3Blcl9qb2IkMSIsInJlbWFpbmluZyIsInJlbWFpbmluZyQwIiwiZHJhaW4iLCJkcmFpbl9hbmRfY291bnQiLCJzdW0iLCJyZWFkX2FsbCIsImlucHV0IiwidG9fc3RyZWFtX2RlcHJlY2F0ZWQiLCJvZl9zdHJlYW1fZGVwcmVjYXRlZCIsInRyYW5zZmVyIiwibmV4dF9kZWZlcnJlZCIsImNoZWNrX2Nsb3NlZF9sb29wX25leHQiLCJ0cmFuc2Zlcl9nZW4iLCJvdXRwdXQiLCJsaW5rIiwidW5saW5rIiwib3V0cHV0X2Nsb3NlZCIsInRyYW5zZmVyJDAiLCJ0cmFuc2Zlcl9pZCIsIm1hcF9nZW4iLCJjb25jYXRfbWFwX2xpc3QiLCJmaWx0ZXJfbWFwJDAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAiLCJmb2xkaW5nX2ZpbHRlcl9tYXAkMCIsIngkMCIsImZvbGRpbmdfbWFwIiwiYWNjdW0kMCIsImVtcHR5Iiwic2luZ2xldG9uIiwid3JpdGVyIiwicmVhZGVyIiwic3ltYm9sIiwib2Zfc2VxdWVuY2UiLCJzZXF1ZW5jZSQxIiwic2VxdWVuY2UkMCIsInRvX3NlcXVlbmNlIiwiaW50ZXJsZWF2ZV9waXBlIiwiaW5wdXRzIiwib3V0cHV0X3dyaXRlciIsIm51bV9waXBlc19yZW1haW5pbmciLCJkZWNyX251bV9waXBlc19yZW1haW5pbmciLCJoZWFwIiwiaGFuZGxlX3JlYWQiLCJlb2Zfb3Jfb2siLCJwb3BfaGVhcF9hbmRfbG9vcCIsImluaXRpYWxfcHVzaCIsImNvbmNhdF9waXBlIiwiZm9yayIsInB1c2hiYWNrX3VzZXMiLCJ3cml0ZXIwIiwicmVhZGVyMCIsIndyaXRlcjEiLCJyZWFkZXIxIiwic29tZV9yZWFkZXJfd2FzX2Nsb3NlZCIsInNvbWVfcmVhZGVyX3dhc19jbG9zZWQkMCIsInN0aWxsX29wZW4iLCJmaWx0ZXJfb3BlbiIsInN0aWxsX29wZW4kMCIsInNldF9pbmZvIiwidmFsdWVfYXZhaWxhYmxlIiwic2V0X3ZhbHVlX2F2YWlsYWJsZSIsInRha2VuIiwiY3VycmVudF92YWx1ZSIsInZhbHVlX2F2YWlsYWJsZSQwIiwidGFrZW4kMCIsImN1cnJlbnRfdmFsdWUkMCIsInZhbHVlX2F2YWlsYWJsZSQxIiwidmFsdWVfYXZhaWxhYmxlX2Z1biIsImFfMDExIiwiYl8wMTIiLCJ0YWtlbl9mdW4iLCJjdXJyZW50X3ZhbHVlX2Z1biIsInhfMDEwIiwidGFrZW5fMDA2IiwiY3VycmVudF92YWx1ZV8wMDQiLCJ2YWx1ZV9hdmFpbGFibGVfMDA4IiwiYm5kc18wMDMiLCJibmRzXzAwMyQwIiwiYm5kc18wMDMkMSIsInBlZWtfZXhuIiwieF8wMTMiLCJvZl9hXzAxNCIsInhfMDE1IiwieF8wMTciLCJ3cml0ZV9vbmx5IiwidGFrZV9ub25lbXB0eSIsInRha2Vfbm93X2V4biIsInRha2Vfbm93IiwidGFrZSIsInVwZGF0ZV9leG4iLCJ0YWtlbiQxIiwicHV0IiwicGlwZV93aGVuX3JlYWR5IiwiY3JlYXRlX29yX2Vycm9yIiwid2FpdF9leG4iLCJmb3JjZSIsImZvcmNlX2V4biIsImJpbmQkMSIsImlzX2ZvcmNlZCIsIndhaXRzXzAwMyIsInNpZ25hbCIsImRlbGV0ZSQwIiwiY2hlY2tfZmllbGQkMCIsIndhaXRfZm9yX3ByZXZpb3VzIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInNleHBfb2ZfdCIsInNleHBfb2ZfdCQwIiwib2ZfYWRkcmVzc18wMDEiLCJhcmcwXzAwMiIsInJlczBfMDAzIiwiYXJnMF8wMDQiLCJyZXMwXzAwNSIsImFyZzBfMDA2IiwicmVzMF8wMDciLCJsb2dfbGV2ZWwiLCJoYW5kbGVfZXZlbnQiLCJ0IiwiZXZlbnQiLCJvbl9ldmVudCIsImFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdCIsImN1cnJlbnRfY29ubmVjdGlvbiIsImNvbm4iLCJjbG9zZV9maW5pc2hlZCQwIiwiaXNfY2xvc2VkJDAiLCJjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QiLCJzZXhwX29mX3QkMSIsInBhcmFtIiwiY29ubl8wMjMiLCJuZXh0X2Nvbm5lY3RfcmVzdWx0XzAyNiIsImRvbl90X3JlY29ubmVjdF8wMzQiLCJjbG9zZV9maW5pc2hlZF8wMzIiLCJjbG9zZV9zdGFydGVkXzAzMCIsImV2ZW50X2hhbmRsZXJfMDI4IiwiYm5kc18wMTYiLCJhcmdfMDM5IiwiYm5kc18wMTYkMCIsImFyZ18wMzciLCJibmRzXzAxNiQxIiwiYXJnXzAzNSIsImJuZHNfMDE2JDIiLCJhcmdfMDMzIiwiYm5kc18wMTYkMyIsImFyZ18wMzEiLCJibmRzXzAxNiQ0Iiwic2VydmVyX25hbWVfMDExIiwiYm5kc18wMTAiLCJhcmdfMDE0IiwiYm5kc18wMTAkMCIsImFyZ18wMTIiLCJibmRzXzAxMCQxIiwiYXJnXzAyOSIsImJuZHNfMDE2JDUiLCJhcmdfMDI3IiwiYm5kc18wMTYkNiIsInZfMDI1IiwiYXJnXzAyNCIsImJuZHNfMDE2JDciLCJhcmdfMDIyIiwiYm5kc18wMTYkOCIsImFyZ18wMjAiLCJibmRzXzAxNiQ5IiwiYXJnXzAxOCIsImJuZHNfMDE2JDEwIiwiY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25fIiwiY2xvc2VfZmluaXNoZWQkMSIsImlzX2Nsb3NlZCQxIiwiY2xvc2UkMCIsImNvbm5fb3B0Iiwic2VydmVyX25hbWUiLCJjdXJyZW50X2Nvbm5lY3Rpb24kMCIsImNvbm5lY3RlZF9vcl9mYWlsZWRfdG9fY29ubmVjdCQwIiwieCIsImNvbm5lY3RlZCIsImxvb3AiLCJkIiwiY3JlYXRlIiwib25fZXZlbnQkMCIsInJldHJ5X2RlbGF5JDAiLCJyYW5kb21fc3RhdGUkMSIsInRpbWVfc291cmNlJDAiLCJjb25uZWN0IiwiYWRkcmVzcyIsImdldF9hZGRyZXNzIiwic3RoIiwic3RoJDAiLCJyYW5kb21fc3RhdGUiLCJzdGgkMSIsInRpbWVfc291cmNlIiwiZXZlbnRfaGFuZGxlciIsImRlZmF1bHRfcmV0cnlfZGVsYXkiLCJub25fcmFuZG9taXplZF9kZWxheSIsInJldHJ5X2RlbGF5X3NwYW4iLCJyYW5kb21fc3RhdGUkMCIsInNwYW4iLCJzcGFuJDAiLCJkaXN0YW5jZSIsIndhaXQiLCJyZXRyeV9kZWxheSIsInByZXZpb3VzX2FkZHJlc3MiLCJwcmV2aW91c19lcnJvciIsInJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmciLCJjb25uZWN0X3Jlc3VsdCIsImVyciIsInByZXZpb3VzX2VyciIsInRvX3NleHAiLCJlIiwic2FtZV9hc19wcmV2aW91c19lcnJvciIsImFkZHIiLCJwcmV2aW91c19hZGRyZXNzJDAiLCJzYW1lX2FzX3ByZXZpb3VzX2FkZHJlc3MiLCJwb3MiLCJhbGwiLCJlcnJvcl9zb3VyY2VfMDA1IiwicmV0aXJlZF9rcmJfd29yZCIsImNvbXBhcmUiLCJ0X29mX3NleHAiLCJzZXhwXzAwNiIsInNleHBfb2ZfdCIsImdyb3VwIiwibWFnaWNfd29yZCIsIm1hZ2ljX251bWJlcl9iaW5fc2l6ZSIsImdlbl9tYWdpY19udW1iZXIiLCJ3b3JkIiwiYWNjIiwiYyIsIm1hZ2ljX251bWJlciIsInQiLCJwIiwiYnlfbWFnaWNfbnVtYmVyIiwibWFnaWNfd29yZHMiLCJtYWdpY19udW1iZXJzIiwibiIsIm1hZ2ljX251bWJlciQwIiwic2l6ZSIsInNleHBpZmllciIsImVxdWFsIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMDciLCJiXzAwOCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QiLCJ3cml0ZV9hIiwiYnVmIiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJpbl9yZWFkX2VsIiwicG9zX3JlZiIsImV4biQwIiwiZXhuIiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRlcl9hIiwiYmluX3QiLCJiaW5fYSIsIm9mX2xpc3RfZXhuIiwibCIsImxlbiIsInRfb2ZfYSIsInNleHAiLCJjb250ZXh0IiwidmludCIsInhfMDAyIiwieF8wMDMiLCJjcmVhdGVfZXhuIiwicHJvdG9jb2wiLCJzdXBwb3J0ZWRfdmVyc2lvbnMiLCJnZXRfcHJvdG9jb2wiLCJ2ZXJzaW9ucyIsInByb3RvY29scyIsIm5lZ290aWF0ZSIsImFsbG93X2xlZ2FjeV9wZWVyIiwidXMiLCJwZWVyIiwidXNfdmVyc2lvbnMiLCJ1c19wcm90b2NvbCIsInBlZXJfdmVyc2lvbnMiLCJwZWVyX3Byb3RvY29sIiwidmVyc2lvbiIsIngiLCJtYXRjaGVzX21hZ2ljX3ByZWZpeCIsImNvbnRhaW5zX21hZ2ljX3ByZWZpeCIsImYiLCJhbnlfbWFnaWNfcHJlZml4IiwiZ3JvdXAkMCIsImJpbl9zaXplX3QkMCIsImFueV9tYWdpY19wcmVmaXhfZnJvbV9zaXhfYnl0ZSIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkZXJfdCQwIiwiYW55X21hZ2ljX3ByZWZpeF9mcm9tX3NpeF9ieXRlJDAiLCJib3VuZGVkX2xpc3RfYmluX3NpemUiLCJiaW5fc2hhcGVfdCIsImJpbl90IiwiYmluX3NpemVfdCIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZV90IiwiYmluX3JlYWRlcl90IiwiYmluX3JlYWRfdCIsImJpbl9yZWFkX3QkMCIsImJ1ZiIsInBvc19yZWYiLCJ2bmF0MCIsIm9mX2ludF9leG4iLCJvZl93cml0ZXIiLCJ3cml0ZSIsInNpemUiLCJ3cml0ZSQwIiwicG9zIiwiYSIsImxlbiIsInBvcyQwIiwic2l6ZSQwIiwib2ZfdHlwZV9jbGFzcyIsImJpbl9hIiwidGVzdCIsInMiLCJiaWdzdHJpbmciLCJiaWdzdHJpbmdfdmVyc2lvbiIsIndyaXRlcl93aXRoX2xlbmd0aCIsIndpdGhfbGVuZ3RoX3ZlcnNpb24iLCJwb3ciLCJ4IiwiZGVzY3JpcHRpb25zIiwiZXJyb3Jfc291cmNlXzAxNyIsImdyb3VwIiwidjIiLCJ2MSIsInZpbnQiLCJ2X25hbWUiLCJ2X3ZlcnNpb24iLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsIm4iLCJoYXNoX2ZvbGRfdCIsImhzdiIsImFyZyIsImhzdiQwIiwiaGFzaCIsInRfb2Zfc2V4cCIsInNleHBfMDA0IiwiZmllbGRfc2V4cHNfMDA1IiwibmFtZV8wMDYiLCJ2ZXJzaW9uXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwic2V4cF8wMDQkMCIsImZpZWxkX3NleHBzXzAxNCIsImZpZWxkX25hbWVfMDEyIiwidGFpbF8wMTkiLCJmaWVsZF9zZXhwXzAxMyQyIiwiZmllbGRfc2V4cF8wMTMiLCJ4XzAyMCIsImZpZWxkX3NleHBfMDEzJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMSIsImZ2YWx1ZV8wMTYiLCJ2ZXJzaW9uXzAwOSIsIm5hbWVfMDA3Iiwic2V4cF9vZl90IiwidmVyc2lvbl8wMjQiLCJuYW1lXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImFyZ18wMjMiLCJibmRzXzAyMSQwIiwic3VtbWFyaXplIiwidHMiLCJ2ZXJzaW9uIiwibmFtZSIsInN1bW1hcnkiLCJlcnIkMCIsImVyciIsImVycm9yX3NvdXJjZV8wMDMiLCJ0IiwiZ3JvdXAkMCIsImJpbl9zaGFwZV90JDAiLCJiaW5fc2l6ZV90JDAiLCJ2MSQwIiwidjEkMSIsInYxJDIiLCJhcmdzIiwic2l6ZV9hcmdzIiwidjEkMyIsImJpbl93cml0ZV90JDAiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsInBvcyQ1IiwicG9zJDYiLCJiaW5fd3JpdGVyX3QkMCIsImJpbl9yZWFkX3QkMSIsImJpbl9yZWFkX3QkMiIsImFyZ18xIiwiYXJnXzEkMCIsImFyZ18xJDEiLCJhcmdfMSQyIiwiYXJnXzEkMyIsImFyZ18yIiwiYXJnXzEkNCIsImJpbl9yZWFkZXJfdCQwIiwiYmluX3QkMCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJhcmcwXzAwOCIsInJlczBfMDA5Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJzZXhwX2FyZ3NfMDIyIiwiYXJnMV8wMzMiLCJhcmcwXzAzMiIsInJlczBfMDM0IiwiYXRvbV8wMjQiLCJzZXhwX2FyZ3NfMDI3IiwiYXRvbV8wMjQkMCIsImFyZzBfMDI5IiwicmVzMF8wMzAiLCJyZXMxXzAzNSIsInNleHBfYXJnc18wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwic2V4cF9hcmdzXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJzZXhwX29mX3QkMCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJhcmcwXzA0MyIsInJlczBfMDQ0IiwiYXJnMF8wNDUiLCJyZXMwXzA0NiIsImFyZzFfMDQ5IiwiYXJnMF8wNDgiLCJyZXMwXzA1MCIsInZfMDQ3IiwicmVzMV8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYV8wNTQiLCJiXzA1NSIsImFfMDU2IiwiYl8wNTciLCJhXzA1OCIsImJfMDU5IiwiYV8wNjAiLCJiXzA2MSIsImFfMDY0IiwiYV8wNjIiLCJiXzA2NSIsImJfMDYzIiwicmlnaHRfMDY3IiwibGVmdF8wNjYiLCJhXzA2OCIsImJfMDY5IiwiZ3JvdXAkMSIsImJpbl9zaGFwZV90JDEiLCJiaW5fc2l6ZV90JDEiLCJzaXplX29mX2EiLCJ2IiwiYmluX3dyaXRlX3QkMSIsIndyaXRlX2EiLCJiaW5fd3JpdGVyX3QkMSIsImJpbl93cml0ZXJfYSIsImJpbl9yZWFkX3QkMyIsIm9mX2EiLCJiaW5fcmVhZF90JDQiLCJiaW5fcmVhZGVyX3QkMSIsImJpbl9yZWFkZXJfYSIsInZ0YWciLCJiaW5fdCQxIiwic2V4cF9vZl90JDEiLCJvZl9hXzA3MCIsInhfMDcxIiwiZ3JvdXAkMiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgiLCJ2NCIsInYzIiwic2l6ZSQxIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoIiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDAiLCJ2X3RhZyIsInZfaWQiLCJ2X2RhdGEiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCIsImJpbl9uZWVkc19sZW5ndGgiLCJzZXhwX29mX25lZWRzX2xlbmd0aCIsIm9mX2FfMDcyIiwiZGF0YV8wODAiLCJpZF8wNzgiLCJ2ZXJzaW9uXzA3NiIsInRhZ18wNzQiLCJhcmdfMDgxIiwiYm5kc18wNzMiLCJhcmdfMDc5IiwiYm5kc18wNzMkMCIsImFyZ18wNzciLCJibmRzXzA3MyQxIiwiYXJnXzA3NSIsImJuZHNfMDczJDIiLCJiaW5fcmVhZF90JDUiLCJiaW5fcmVhZF90JDYiLCJiaW5fcmVhZGVyX3QkMiIsImdyb3VwJDMiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMCIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDAiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMCIsImJpbl9uZWVkc19sZW5ndGgkMCIsInNleHBfb2ZfbmVlZHNfbGVuZ3RoJDAiLCJvZl9hXzA4MiIsImRhdGFfMDg2IiwiaWRfMDg0IiwiYXJnXzA4NyIsImJuZHNfMDgzIiwiYXJnXzA4NSIsImJuZHNfMDgzJDAiLCJiaW5fcmVhZF90JDciLCJiaW5fcmVhZF90JDgiLCJiaW5fcmVhZGVyX3QkMyIsImdyb3VwJDQiLCJiaW5fc2hhcGVfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fc2l6ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZV9uZWVkc19sZW5ndGgkMSIsImJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoJDEiLCJiaW5fcmVhZF9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ0IiwiYmluX3JlYWRlcl9uZWVkc19sZW5ndGgkMSIsImJpbl9uZWVkc19sZW5ndGgkMSIsImJpbl9yZWFkX3QkOSIsImJpbl9yZWFkX3QkMTAiLCJiaW5fcmVhZGVyX3QkNCIsImJpbl9yZWFkX25hdDBfdCIsImJpbl9yZWFkX25hdDBfdCQwIiwiYmluX3JlYWRlcl9uYXQwX3QiLCJiaW5fc2l6ZV9uYXQwX3QiLCJiaW5fd3JpdGVfbmF0MF90IiwiYmluX3dyaXRlcl9uYXQwX3QiLCJncm91cCQ1IiwiYmluX3NoYXBlX3QkMiIsInJlc3BvbnNlIiwiZXJyb3IiLCJiaW5fc2l6ZV90JDIiLCJzaXplX29mX3Jlc3BvbnNlIiwic2l6ZV9vZl9lcnJvciIsImJpbl93cml0ZV90JDIiLCJ3cml0ZV9yZXNwb25zZSIsIndyaXRlX2Vycm9yIiwiYmluX3dyaXRlcl90JDIiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlIiwiYmluX3dyaXRlcl9lcnJvciIsImJpbl9yZWFkX3QkMTEiLCJvZl9yZXNwb25zZSIsIm9mX2Vycm9yIiwiYmluX3JlYWRfdCQxMiIsInZfdW51c2VkX3F1ZXJ5X2lkIiwidl9pbml0aWFsIiwiYmluX3JlYWRlcl90JDUiLCJiaW5fcmVhZGVyX3Jlc3BvbnNlIiwiYmluX3JlYWRlcl9lcnJvciIsImJpbl90JDIiLCJiaW5fcmVzcG9uc2UiLCJiaW5fZXJyb3IiLCJzZXhwX29mX3QkMiIsIm9mX3Jlc3BvbnNlXzA4OCIsIm9mX2Vycm9yXzA4OSIsImluaXRpYWxfMDkzIiwidW51c2VkX3F1ZXJ5X2lkXzA5MSIsImFyZ18wOTQiLCJibmRzXzA5MCIsImFyZ18wOTIiLCJibmRzXzA5MCQwIiwiZ3JvdXAkNiIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMiIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQyIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMiIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ1IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDYiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQyIiwiYmluX25lZWRzX2xlbmd0aCQyIiwiYmluX3JlYWRfdCQxMyIsImJpbl9yZWFkX3QkMTQiLCJiaW5fcmVhZGVyX3QkNiIsImJpbl9yZWFkX25hdDBfdCQxIiwiYmluX3JlYWRfbmF0MF90JDIiLCJiaW5fcmVhZGVyX25hdDBfdCQwIiwiYmluX3NpemVfbmF0MF90JDAiLCJiaW5fd3JpdGVfbmF0MF90JDAiLCJiaW5fd3JpdGVyX25hdDBfdCQwIiwiZ3JvdXAkNyIsImJpbl9zaGFwZV9uZWVkc19sZW5ndGgkMyIsImJpbl9zaXplX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlX25lZWRzX2xlbmd0aCQzIiwiYmluX3dyaXRlcl9uZWVkc19sZW5ndGgkMyIsImJpbl9yZWFkX25lZWRzX2xlbmd0aCQ3IiwiYmluX3JlYWRfbmVlZHNfbGVuZ3RoJDgiLCJiaW5fcmVhZGVyX25lZWRzX2xlbmd0aCQzIiwiYmluX25lZWRzX2xlbmd0aCQzIiwic2V4cF9vZl9uZWVkc19sZW5ndGgkMSIsIm9mX2FfMDk1IiwiYXJnMF8wOTYiLCJyZXMwXzA5NyIsImFyZzBfMDk4IiwicmVzMF8wOTkiLCJiaW5fcmVhZF90JDE1IiwiYmluX3JlYWRfdCQxNiIsImJpbl9yZWFkZXJfdCQ3IiwiYmluX3JlYWRfbmF0MF90JDMiLCJiaW5fcmVhZF9uYXQwX3QkNCIsImJpbl9yZWFkZXJfbmF0MF90JDEiLCJiaW5fc2l6ZV9uYXQwX3QkMSIsImJpbl93cml0ZV9uYXQwX3QkMSIsImJpbl93cml0ZXJfbmF0MF90JDEiLCJzZXhwX29mX21lc3NhZ2VfdG9vX2JpZyIsIm1heF9tZXNzYWdlX3NpemVfMDA0Iiwic2l6ZV8wMDIiLCJhcmdfMDA1IiwiYm5kc18wMDEiLCJhcmdfMDAzIiwiYm5kc18wMDEkMCIsIm9mX2FfMDA2IiwiYXJnMF8wMDciLCJyZXMwXzAwOCIsImFyZzBfMDA5IiwicmVzMF8wMTAiLCJsZW5ndGgiLCJ1bnNhZmVfZ2V0X3BheWxvYWRfbGVuZ3RoIiwidW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCIsInBheWxvYWRfbGVuIiwicGFjayIsIm0iLCJNIiwiY2xvc2UiLCJpc19jbG9zZWQiLCJyZWFkX2ZvcmV2ZXIiLCJvbl9tZXNzYWdlIiwib25fZW5kX29mX2JhdGNoIiwicmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCIsImJpbl9yZWFkZXIiLCJwYWNrJDAiLCJjbG9zZSQwIiwiaXNfY2xvc2VkJDAiLCJtb25pdG9yIiwiYnl0ZXNfdG9fd3JpdGUiLCJmbHVzaGVkIiwicmVhZHlfdG9fd3JpdGUiLCJzZW5kX2Jpbl9wcm90IiwiYmluX3dyaXRlciIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyIsInNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ19ubyIsInN0b3BwZWQiLCJjYW5fc2VuZCIsInRyYW5zZmVyIiwib3B0IiwicGlwZSIsImYiLCJzdGgiLCJtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCIsImNvbnN1bWVyIiwiaXZhciIsIml0ZXIiLCJxIiwiZW5kX29mX3BpcGUiLCJ3cml0ZXJfMDA2IiwicmVhZGVyXzAwNCIsImFyZ18wMDciLCJibmRzXzAwMyIsImJuZHNfMDAzJDAiLCJjbG9zZSQxIiwiY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fIiwiY2FsbGJhY2tfMDAyIiwiY2xvc2VfY29ubmVjdGlvbiIsImNvbnRpbnVlJDAiLCJoYW5kbGVfZXhuIiwiY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIiwiZXhuIiwiY2FsbGJhY2siLCJ3cml0ZXJfMDA0IiwicXVlcnlfaWRfMDAyIiwicmVzcG9uZGVkXzAwNiIsImJuZHNfMDAxJDEiLCJjcmVhdGUiLCJxdWVyeV9pZCIsIndyaXRlciIsImxpZnQiLCJpbXBsIiwiYmluX21zZyIsInN0YXRlIiwic3RyIiwiaW1wbCQwIiwicmVzdWx0X21vZGUiLCJpbXBsJDEiLCJiaW5fcXVlcnkiLCJyZXN1bHRfbW9kZSQwIiwiaW1wbCQyIiwicmVzcCIsImltcGwkMyIsImJpbl91IiwiYmluX2kiLCJiaW5fcSIsImltcGwkNCIsImltcGwkNSIsImltcGwkNiIsInciLCJvZl9jb25uZWN0aW9uX3N0YXRlXzAwOCIsIm9uX2V4Y2VwdGlvbl8wMTgiLCJzaGFwZXNfMDE2IiwiZl8wMTQiLCJ2ZXJzaW9uXzAxMiIsInRhZ18wMTAiLCJhcmdfMDE5IiwiYm5kc18wMDkiLCJhcmdfMDE3IiwiYm5kc18wMDkkMCIsImFyZ18wMTUiLCJibmRzXzAwOSQxIiwiYXJnXzAxMyIsImJuZHNfMDA5JDIiLCJhcmdfMDExIiwiYm5kc18wMDkkMyIsImRlc2NyaXB0aW9uIiwibGlmdCQwIiwidXBkYXRlX29uX2V4Y2VwdGlvbiIsInJhaXNlIiwiY29ubmVjdGlvbl9kZXNjcmlwdGlvbiIsImdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbiIsInRvX2Vycm9yIiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkIiwicnBjX3ZlcnNpb24iLCJycGNfbmFtZSIsInJwY19lcnJvciIsImNsb3NlX3JlYXNvbiIsInNleHBfb2ZfbG9jYXRlZF9lcnJvciIsImV4bl8wMDQiLCJsb2NhdGlvbl8wMDIiLCJ1bmNhdWdodF9leG4iLCJsb2NhdGlvbiIsImJpbl9pb19leG4iLCJ0cnlfd2l0aCIsIm9uX2JhY2tncm91bmRfZXhjZXB0aW9uIiwicnVuIiwicmVzdCIsImpvaW4iLCJ4JDAiLCJvcl9lcnJvciIsInJwY19kZXNjcmlwdGlvbiIsImJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nIiwiYWRkX2xlbiIsImluaXRfcG9zIiwiZGF0YSIsImFkZF9sZW4kMCIsImFkZF9sZW4kMSIsImUkMCIsImUiLCJhcmdfMDE4Iiwic3ltYm9sIiwiZGVmZXJfcmVzdWx0IiwiZCIsImQkMCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInNleHBfb2Zfc3RyZWFtaW5nX3Jlc3BvbnNlIiwiYXJnMF8wMDIiLCJyZXMwXzAwMyIsImFyZzBfMDA0IiwicmVzMF8wMDUiLCJ4XzAzMyIsIm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlc18wMTMiLCJ3cml0ZXJfMDExIiwiaW1wbGVtZW50YXRpb25zXzAwOSIsInN0b3BwZWRfMDE1IiwiY29ubmVjdGlvbl9jbG9zZV9zdGFydGVkXzAyMSIsImNvbm5lY3Rpb25fZGVzY3JpcHRpb25fMDE5IiwibGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIiwicGFja2VkX3NlbGZfMDI5IiwiYXJnXzAzMCIsImJuZHNfMDA4IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI3IiwicmVzMV8wMjgiLCJhcmdfMDI0IiwiYm5kc18wMDgkMCIsImFyZ18wMjIiLCJibmRzXzAwOCQxIiwiYXJnXzAyMCIsImJuZHNfMDA4JDIiLCJibmRzXzAwOCQzIiwiYXJnXzAxNiIsImJuZHNfMDA4JDQiLCJhcmdfMDE0IiwiYm5kc18wMDgkNSIsImFyZ18wMTIiLCJibmRzXzAwOCQ2IiwiYXJnXzAxMCIsImJuZHNfMDA4JDciLCJoYW5kbGVfc2VuZF9yZXN1bHQiLCJpZCIsInJlc3VsdCIsInNleHAiLCJ4XzAzNCIsIndyaXRlX21lc3NhZ2UiLCJiaW5fd3JpdGVyX2RhdGEiLCJiaW5fd3JpdGVfdm9pZCIsImJ1ZmZlciIsInN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hcyIsImJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIiwic3RyX2xlbiIsIm5leHQiLCJiaW5fc2l6ZV9uYXQwX2hlYWRlciIsImhlYWRlcl9wcmVmaXgiLCJkYXRhX2xlbiIsInN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuIiwic3RyZWFtX3Jlc3BvbnNlX2RhdGFfbGVuIiwiYmluX3dyaXRlX25hdDBfaGVhZGVyIiwiYmluX3dyaXRlcl9uYXQwX2hlYWRlciIsImJpbl9zaXplX21lc3NhZ2UiLCJiaW5fd3JpdGVfbWVzc2FnZSIsImJpbl93cml0ZXJfbWVzc2FnZSIsImJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIiwiYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyIsImluc3RhbmNlIiwiY2xvc2VkIiwid3JpdGVfZW9mIiwid3JpdGVfbWVzc2FnZSQwIiwic3RyZWFtX3dyaXRlciIsImNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbiIsImdyb3VwcyIsImVsZW1lbnRfaW5fZ3JvdXAiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrIiwid3JpdGVfd2l0aG91dF9wdXNoYmFjayQwIiwiaW5zdGFuY2UkMCIsIndyaXRlJDEiLCJtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24iLCJvbl9leGNlcHRpb24iLCJhcHBseV9pbXBsZW1lbnRhdGlvbiIsImltcGxlbWVudGF0aW9uIiwicXVlcnkiLCJyZWFkX2J1ZmZlciIsInJlYWRfYnVmZmVyX3Bvc19yZWYiLCJiaW5fcXVlcnlfcmVhZGVyIiwicXVlcnlfY29udGVudHMiLCJleG4kMCIsImYkMCIsImxlbiQwIiwiZiQxIiwiYmluX3Jlc3BvbnNlX3dyaXRlciIsImJpbl9xdWVyeV9yZWFkZXIkMCIsInF1ZXJ5X2NvbnRlbnRzJDAiLCJkYXRhJDAiLCJleG4kMSIsImJhY2t0cmFjZSIsImYkMiIsInJlc3BvbmRlciIsImlzX3VuY2F1Z2h0X2V4biIsInJlc3VsdCQwIiwiY2hlY2tfcmVzcG9uZGVkIiwiciIsImJpbl91cGRhdGVfd3JpdGVyIiwiYmluX2luaXRfd3JpdGVyIiwiYmluX3F1ZXJ5X3JlYWRlciQxIiwic3RyZWFtX3F1ZXJ5IiwibGVuJDEiLCJkYXRhJDEiLCJmJDMiLCJpbXBsX3dpdGhfc3RhdGUiLCJmJDYiLCJ3cml0ZXIkMCIsInJ1bl9pbXBsIiwic3BsaXRfb2siLCJoYW5kbGVfb2siLCJvayIsImluaXRpYWwiLCJmJDQiLCJwaXBlX3IiLCJmJDUiLCJmbHVzaCIsImFjYyIsInByb2R1Y2Vyc19mbHVzaGVkIiwic3RvcCIsImhhbmRsZV9xdWVyeSIsIm9uX3Vua25vd25fcnBjIiwiaW1wbGVtZW50YXRpb25zIiwibGFzdF9kZXNjIiwiaW1wbGVtZW50YXRpb24kMCIsInRhZyIsImlfcyIsImR1cHMiLCJpIiwiaW5zdGFudGlhdGUiLCJjb25uZWN0aW9uX3N0YXRlIiwidW5wYWNrZWQiLCJjcmVhdGVfZXhuIiwibnVsbCQwIiwiYWRkX2V4biIsImRlc2MiLCJhZGQiLCJpbXBsZW1lbnRhdGlvbnMkMCIsIm9uX3Vua25vd25fcnBjJDAiLCJjYWxsIiwiZXhwZXJ0IiwiY2Fubm90X3NlbmQiLCJ4XzAzOSIsIm1hcmtfcmVzcG9uZGVkIiwic2NoZWR1bGUiLCJoZWFkZXIiLCJoYW5kbGVfc2VuZF9yZXN1bHQkMCIsIndyaXRlX2JpZ3N0cmluZyIsIndyaXRlX2Jpbl9wcm90IiwibXNnIiwiZXJyb3Jfc291cmNlXzA0NiIsIm5lZ290aWF0ZSQwIiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsImFyZzBfMDIyIiwicmVzMF8wMjMiLCJhcmcwXzAyNCIsInJlczBfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJ0X29mX3NleHAkMCIsInNleHBfMDMzIiwiZmllbGRfc2V4cHNfMDM0IiwidGltZW91dF8wMzUiLCJzZW5kX2V2ZXJ5XzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwic2V4cF8wMzMkMCIsImZpZWxkX3NleHBzXzA0MyIsImZpZWxkX25hbWVfMDQxIiwidGFpbF8wNDgiLCJmaWVsZF9zZXhwXzA0MiQyIiwiZmllbGRfc2V4cF8wNDIiLCJ4XzA0OSIsImZpZWxkX3NleHBfMDQyJDAiLCJmdmFsdWVfMDQ1IiwiZmllbGRfc2V4cF8wNDIkMSIsImZ2YWx1ZV8wNDQiLCJzZW5kX2V2ZXJ5XzAzOCIsInRpbWVvdXRfMDM2Iiwic2VuZF9ldmVyeV8wNTMiLCJ0aW1lb3V0XzA1MSIsImFyZ18wNTQiLCJibmRzXzA1MCIsImFyZ18wNTIiLCJibmRzXzA1MCQwIiwidl90aW1lb3V0Iiwidl9zZW5kX2V2ZXJ5Iiwic2VuZF9ldmVyeSIsInRpbWVvdXQiLCJzdGgkMCIsImhlYXJ0YmVhdF9jb25maWdfMDYzIiwiZGVzY3JpcHRpb25fMDYxIiwiaGVhcnRiZWF0X2NhbGxiYWNrc18wNjUiLCJsYXN0X3NlZW5fYWxpdmVfMDY3IiwiaGVhcnRiZWF0X2V2ZW50XzA4MyIsInRpbWVfc291cmNlXzA4MSIsImltcGxlbWVudGF0aW9uc19pbnN0YW5jZV8wNzkiLCJjbG9zZV9maW5pc2hlZF8wNzciLCJjbG9zZV9zdGFydGVkXzA3NSIsIm9wZW5fcXVlcmllc18wNzMiLCJ3cml0ZXJfMDcxIiwicmVhZGVyXzA2OSIsImFyZ18wODQiLCJibmRzXzA2MCIsImFyZ18wODIiLCJibmRzXzA2MCQwIiwiYXJnXzA4MCIsImJuZHNfMDYwJDEiLCJhcmdfMDc4IiwiYm5kc18wNjAkMiIsImFyZ18wNzYiLCJibmRzXzA2MCQzIiwiYXJnXzA3NCIsImJuZHNfMDYwJDQiLCJhcmdfMDcyIiwiYm5kc18wNjAkNSIsImFyZ18wNzAiLCJibmRzXzA2MCQ2IiwiYXJnXzA2OCIsImJuZHNfMDYwJDciLCJhcmdfMDY2IiwiYm5kc18wNjAkOCIsInRpbWVvdXRfMDU2Iiwic2VuZF9ldmVyeV8wNTgiLCJhcmdfMDU5IiwiYm5kc18wNTUiLCJhcmdfMDU3IiwiYm5kc18wNTUkMCIsImFyZ18wNjQiLCJibmRzXzA2MCQ5IiwiYXJnXzA2MiIsImJuZHNfMDYwJDEwIiwic2V4cF9vZl90X2h1bV93cml0ZXIiLCJ4XzA4NSIsImRpc3BhdGNoIiwicmVzcG9uc2VfaGFuZGxlciIsImJpbl93cml0ZXJfcXVlcnkiLCJtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyIsImRvX3NlbmQiLCJkaXNwYXRjaF9iaWdzdHJpbmciLCJzY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmciLCJvbl9jbG9zZSIsInJlYXNvbiIsImNsb3NlX2ZpbmlzaGVkIiwiYWRkX2hlYXJ0YmVhdF9jYWxsYmFjayIsInJlc2V0X2hlYXJ0YmVhdF90aW1lb3V0IiwibGFzdF9zZWVuX2FsaXZlIiwic3RyZWFtaW5nX3Jlc3BvbnNlc19mbHVzaF90aW1lIiwiZXZlbnQiLCJmbHVzaGVkJDAiLCJmbHVzaGVkJDEiLCJkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0IiwiY2xlYW51cCIsImVycm9yJDAiLCJkdW1teV9idWZmZXIiLCJkdW1teV9yZWYiLCJjb250YWluc19tYWdpY19wcmVmaXgiLCJjcmVhdGUkMCIsImhhbmRzaGFrZV90aW1lb3V0IiwiaGVhcnRiZWF0X2NvbmZpZyIsInN0aCQxIiwic3RoJDIiLCJ0aW1lX3NvdXJjZSIsIndyaXRlciQxIiwicmVhZGVyIiwid3JpdGVyX21vbml0b3JfZXhucyIsInNpbmNlX2xhc3RfaGVhcnRiZWF0IiwiY3VzdG9tX3ByaW50Zl8wODgiLCJoZWFydGJlYXRfZnJvbV9ub3dfb24iLCJuYXQwX21zZyIsInJlcyIsIndhaXQiLCJyZW1vdmFsX2NpcmN1bXN0YW5jZXMiLCJ3YWl0JDAiLCJwZWVyIiwid2l0aF9jbG9zZSIsInRyYW5zcG9ydCIsImRpc3BhdGNoX3F1ZXJpZXMiLCJvbl9oYW5kc2hha2VfZXJyb3IiLCJoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIiwidCQwIiwic2VydmVyX3dpdGhfY2xvc2UiLCJvbl9oYW5kc2hha2VfZXJyb3IkMCIsImVycm9yX3NvdXJjZV8wMDkiLCJlcnJvcl9zb3VyY2VfMDI0Iiwic3ltYm9sJDAiLCJkaXNwYXRjaF9yYXciLCJjb25uIiwicXVlcnkkMCIsImRpc3BhdGNoX3JhdyQwIiwicmVzcG9uc2VfaXZhciIsInNoYXBlcyIsImxzdCIsInNoYXBlIiwicXVlcnlfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQiLCJzaGFwZXMkMCIsImltcGxlbWVudCIsImltcGxlbWVudCQwIiwicmVzcG9uc2UkMCIsInJwY19yZXN1bHRfdG9fb3JfZXJyb3IiLCJkaXNwYXRjaCQwIiwiZGlzcGF0Y2hfZXhuIiwibWFrZV9kaXNwYXRjaCIsImRvX2Rpc3BhdGNoIiwicnBjX3RhZyIsImhhbmRsZV9yZXNwb25zZSIsImhhbmRsZV9lcnJvciIsInhfMDAyIiwiZGlzcGF0Y2gkMSIsInNjaGVkdWxlX2Rpc3BhdGNoIiwiaW1wbGVtZW50JDEiLCJpbXBsZW1lbnQkMiIsImltcGxlbWVudF9mb3JfdGFnX2FuZF92ZXJzaW9uIiwiaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb24kMCIsInZlcnNpb24kMCIsIm5hbWUkMCIsIm1zZ190eXBlX2lkIiwic2hhcGVzJDEiLCJkZXNjcmlwdGlvbiQwIiwiaW1wbGVtZW50JDMiLCJkaXNwYXRjaCQyIiwicnBjX3Jlc3VsdF90b19vcl9lcnJvciQwIiwiZGlzcGF0Y2gkMyIsImRpc3BhdGNoX2V4biQwIiwiaW1wbGVtZW50JDQiLCJkaXNwYXRjaCQ0Iiwic2NoZWR1bGVfZGlzcGF0Y2gkMCIsImFfMDAzIiwiYl8wMDQiLCJhXzAwNSIsImJfMDA2Iiwic2V4cF8wMTEiLCJ0YWdfMDEyIiwic2V4cF9hcmdzXzAxMyIsImFyZzBfMDE0IiwicmVzMF8wMTUiLCJhcmcwXzAxNiIsInJlczBfMDE3IiwiY29tcGFyZSQwIiwiYV8wMTgiLCJiXzAxOSIsImFfMDIwIiwiYl8wMjEiLCJzZXhwXzAyNiIsInRhZ18wMjciLCJzZXhwX2FyZ3NfMDI4IiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsImNyZWF0ZSQxIiwiY2xpZW50X3B1c2hlc19iYWNrIiwiYmluX2luaXRpYWxfcmVzcG9uc2UiLCJiaW5fdXBkYXRlX3Jlc3BvbnNlIiwiYWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2UiLCJhbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlIiwiY2xpZW50X3B1c2hlc19iYWNrJDAiLCJpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQiLCJ1cGRhdGVfcmVzcG9uc2VfdHlwZV9pZCIsImVycm9yX3Jlc3BvbnNlX3R5cGVfaWQiLCJtYWtlX2luaXRpYWxfbWVzc2FnZSIsImltcGxlbWVudF9nZW4iLCJpbXBsZW1lbnQkNSIsImMiLCJhYm9ydCIsInJlYWRfZXJyb3IiLCJoYW5kbGVyIiwiY29yZV9lcnIiLCJkaXNwYXRjaF9nZW4iLCJtYWtlX3VwZGF0ZV9oYW5kbGVyIiwiaW5pdGlhbF9zdGF0ZSIsImluaXRpYWxfaGFuZGxlciIsImVyciQxIiwiaW5pdGlhbF9tc2ciLCJpbml0aWFsJDAiLCJleHRyYSIsImhhbmRsZXIkMCIsImJpbl9yZWFkZXJfdXBkYXRlIiwiZXJyJDQiLCJlcnIkMyIsImVyciQyIiwiZGlzcGF0Y2gkNSIsImluaXQiLCJwaXBlX21ldGFkYXRhIiwicGlwZV93IiwiY3JlYXRlJDIiLCJiaW5fcXVlcnkkMCIsImJpbl9yZXNwb25zZSQwIiwiaW1wbGVtZW50JDYiLCJjcmVhdGUkMyIsImluaXRpYWxfc2l6ZSIsImNyZWF0ZSQ0IiwiYiIsImJ1ZmZlciQwIiwib25lIiwib25lJDAiLCJ3cml0ZXJfZWxlbWVudF9pbl9ncm91cCIsImdyb3VwX2VsZW1lbnRfaW5fd3JpdGVyIiwicmVtb3ZlIiwidG9fbGlzdCIsImZsdXNoZWRfb3JfY2xvc2VkIiwiZGlyZWN0X3N0cmVhbV93cml0ZXIiLCJ3cml0ZV93aXRob3V0X3B1c2hiYWNrJDEiLCJpbXBsZW1lbnRfZGlyZWN0IiwiZGlzcGF0Y2gkNiIsIm1ldGFkYXRhIiwiZGlzcGF0Y2hfZXhuJDEiLCJwaXBlX2FuZF9pZCIsImRpc3BhdGNoX2l0ZXIiLCJuYW1lJDEiLCJ2ZXJzaW9uJDEiLCJkZXNjcmlwdGlvbiQxIiwicXVlcnlfdHlwZV9pZCQwIiwiZXJyb3JfdHlwZV9pZCIsInJlc3BvbnNlX3R5cGVfaWQkMCIsImNyZWF0ZSQ1IiwiYmluX3N0YXRlIiwiYmluX3VwZGF0ZSIsImJpbl9xdWVyeSQxIiwiYmluX2Vycm9yJDAiLCJkaXNwYXRjaCQ3IiwidXBkYXRlX3IiLCJuYW1lJDIiLCJ2ZXJzaW9uJDIiLCJkZXNjcmlwdGlvbiQyIiwicXVlcnlfdHlwZV9pZCQxIiwic3RhdGVfdHlwZV9pZCIsInVwZGF0ZV90eXBlX2lkIiwiZXJyb3JfdHlwZV9pZCQwIiwiZGVzY3JpcHRpb24kMyIsInJwYyIsInJwYyQwIiwicnBjJDEiLCJycGMkMiIsInRoZV9ycGMiLCJub3RfdGhlX3JwYyIsInJwY19uYW1lJDAiLCJpbnB1dCIsImNvbnZlcnQiLCJmYWlsZWRfY29udmVyc2lvbiIsImFyZzNfMDA2IiwiYXJnMl8wMDUiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwicmVzMF8wMDciLCJ2XzAwMSIsInJlczFfMDA4Iiwidl8wMDIiLCJyZXMyXzAwOSIsInJlczNfMDEwIiwibXVsdGlwbGVfcmVnaXN0cmF0aW9ucyIsImFyZzFfMDE0Iiwidl8wMTEiLCJ2XzAxMiIsInJlczFfMDE2IiwiYWRhcHRlciIsImFkYXB0ZXJzIiwiYXJnMV8wMjIiLCJhcmcwXzAyMSIsInJlczFfMDI0IiwiYWRhcHRlcnMkMCIsImFkZF9ycGNfdmVyc2lvbiIsIm9sZF9ycGMiLCJ1cGdyYWRlIiwiZG93bmdyYWRlIiwiYWRhcHQiLCJmbiIsImFkYXB0ZWQiLCJvbGRfcXVlcnkiLCJhZGRfcnBjX3ZlcnNpb25fd2l0aF9mYWlsdXJlIiwidXBncmFkZV9vcl9lcnJvciIsImRvd25ncmFkZV9vcl9lcnJvciIsInZhbHVlIiwiYWRkX3ZlcnNpb24iLCJhZGRfdmVyc2lvbl93aXRoX2ZhaWx1cmUiLCJyZWdpc3RyeSIsImltcGxlbWVudF9tdWx0aSIsImxvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpbyIsImxvZ192ZXJzaW9uIiwicnBjcyIsInZlcnNpb25zIiwicSQwIiwiciQwIiwiaW1wbGVtZW50X211bHRpX2dlbiIsImltcGxlbWVudF9kaXJlY3RfbXVsdGkiLCJ3cmFwcGVkX21vZGVsX29mX3F1ZXJ5Iiwid3JhcHBlZF9lcnJvcl9vZl9tb2RlbCIsImNvbnZlcnRfZWx0IiwiZHN3IiwiY29udmVydF9waXBlIiwibW9kZWxfc3RhdGUiLCJzdGF0ZSQwIiwiYmluX3NoYXBlX3F1ZXJ5IiwiYmluX3NpemVfcXVlcnkiLCJiaW5fd3JpdGVfcXVlcnkiLCJiaW5fcmVhZF9xdWVyeSIsImJpbl9yZWFkX3F1ZXJ5JDAiLCJiaW5fcmVhZGVyX3F1ZXJ5IiwiYmluX3NoYXBlX3N0YXRlIiwiYmluX3NpemVfc3RhdGUiLCJiaW5fd3JpdGVfc3RhdGUiLCJiaW5fd3JpdGVyX3N0YXRlIiwiYmluX3JlYWRfc3RhdGUiLCJiaW5fcmVhZF9zdGF0ZSQwIiwiYmluX3JlYWRlcl9zdGF0ZSIsImJpbl9zaGFwZV91cGRhdGUiLCJiaW5fc2l6ZV91cGRhdGUiLCJiaW5fd3JpdGVfdXBkYXRlIiwiYmluX3dyaXRlcl91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUiLCJiaW5fcmVhZF91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciIsImJpbl9zaXplX2Vycm9yIiwiYmluX3dyaXRlX2Vycm9yIiwiYmluX3JlYWRfZXJyb3IiLCJiaW5fcmVhZF9lcnJvciQwIiwibW9kZWxfb2ZfcXVlcnkiLCJzdGF0ZV9vZl9tb2RlbCIsImVycm9yX29mX21vZGVsIiwidXBkYXRlX29mX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlIiwiYmluX3NpemVfcmVzcG9uc2UiLCJiaW5fd3JpdGVfcmVzcG9uc2UiLCJiaW5fcmVhZF9yZXNwb25zZSIsImJpbl9yZWFkX3Jlc3BvbnNlJDAiLCJyZXNwb25zZV9vZl9tb2RlbCIsImFkZCQwIiwiaW1wbHMiLCJtZW51IiwibWVudV9pbXBscyIsInN1cHBvcnRlZF9ycGNzIiwic3VwcG9ydGVkX3ZlcnNpb25zIiwib2ZfZW50cmllcyIsImVudHJpZXMiLCJyZXF1ZXN0IiwiY29ubmVjdGlvbiIsImNyZWF0ZV9kaXJlY3RseSIsIm1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uIiwiY2FsbGVyX3ZlcnNpb25zIiwiY2FsbGVlX3ZlcnNpb25zIiwiY2FsbGVlX21lbnUiLCJ3aXRoX3NwZWNpZmljX3ZlcnNpb24iLCJkaXNwYXRjaGVyIiwiYXJnMV8wMTgiLCJhcmcwXzAxNyIsInJlczFfMDIwIiwid2l0aF92ZXJzaW9uX21lbnUiLCJkaXNwYXRjaF9tdWx0aSIsImNvbm5fd2l0aF9tZW51IiwibXEiLCJxdWVyeV9vZl9tb2RlbCIsIm1vZGVsX29mX3Jlc3BvbnNlIiwiZGlzcGF0Y2hfaXRlcl9tdWx0aSIsImFib3J0X211bHRpIiwid3JhcHBlZF9xdWVyeV9vZl9tb2RlbCIsImNvbnZlcnRfcmVzdWx0IiwiY29udmVydF9vayIsIm1lc3NhZ2UiLCJ1IiwicnMiLCJtb2RlbF9vZl9zdGF0ZSIsIm1vZGVsX29mX2Vycm9yIiwibW9kZWxfb2ZfdXBkYXRlIiwiYmluX3NoYXBlX21zZyIsImJpbl9zaXplX21zZyIsImJpbl93cml0ZV9tc2ciLCJiaW5fd3JpdGVyX21zZyIsImJpbl9yZWFkX21zZyIsImJpbl9yZWFkX21zZyQwIiwiYmluX3JlYWRlcl9tc2ciLCJjYWxsZWVfbW9kZWxfb2ZfbXNnIiwiYmluX3NoYXBlX21zZyQwIiwiYmluX3NpemVfbXNnJDAiLCJiaW5fd3JpdGVfbXNnJDAiLCJiaW5fd3JpdGVyX21zZyQwIiwiYmluX3JlYWRfbXNnJDEiLCJiaW5fcmVhZF9tc2ckMiIsImJpbl9yZWFkZXJfbXNnJDAiLCJiaW5fbXNnJDAiLCJtc2dfb2ZfY2FsbGVyX21vZGVsIiwiY2FsbGVlX21vZGVsX29mX3F1ZXJ5Iiwic3RhdGVfb2ZfY2FsbGVlX21vZGVsIiwiZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIiwidXBkYXRlX29mX2NhbGxlZV9tb2RlbCIsImJpbl9zaGFwZV9xdWVyeSQwIiwiYmluX3NpemVfcXVlcnkkMCIsImJpbl93cml0ZV9xdWVyeSQwIiwiYmluX3dyaXRlcl9xdWVyeSQwIiwiYmluX3JlYWRfcXVlcnkkMSIsImJpbl9yZWFkX3F1ZXJ5JDIiLCJiaW5fcmVhZGVyX3F1ZXJ5JDAiLCJiaW5fc2hhcGVfc3RhdGUkMCIsImJpbl9zaXplX3N0YXRlJDAiLCJiaW5fd3JpdGVfc3RhdGUkMCIsImJpbl93cml0ZXJfc3RhdGUkMCIsImJpbl9yZWFkX3N0YXRlJDEiLCJiaW5fcmVhZF9zdGF0ZSQyIiwiYmluX3JlYWRlcl9zdGF0ZSQwIiwiYmluX3N0YXRlJDAiLCJiaW5fc2hhcGVfdXBkYXRlJDAiLCJiaW5fc2l6ZV91cGRhdGUkMCIsImJpbl93cml0ZV91cGRhdGUkMCIsImJpbl93cml0ZXJfdXBkYXRlJDAiLCJiaW5fcmVhZF91cGRhdGUkMSIsImJpbl9yZWFkX3VwZGF0ZSQyIiwiYmluX3JlYWRlcl91cGRhdGUkMCIsImJpbl91cGRhdGUkMCIsImJpbl9zaGFwZV9lcnJvciQwIiwiYmluX3NpemVfZXJyb3IkMCIsImJpbl93cml0ZV9lcnJvciQwIiwiYmluX3dyaXRlcl9lcnJvciQwIiwiYmluX3JlYWRfZXJyb3IkMSIsImJpbl9yZWFkX2Vycm9yJDIiLCJiaW5fcmVhZGVyX2Vycm9yJDAiLCJxdWVyeV9vZl9jYWxsZXJfbW9kZWwiLCJjYWxsZXJfbW9kZWxfb2Zfc3RhdGUiLCJjYWxsZXJfbW9kZWxfb2ZfZXJyb3IiLCJjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlIiwicmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIiwiYmluX3NoYXBlX3Jlc3BvbnNlJDAiLCJiaW5fc2l6ZV9yZXNwb25zZSQwIiwiYmluX3dyaXRlX3Jlc3BvbnNlJDAiLCJiaW5fd3JpdGVyX3Jlc3BvbnNlJDAiLCJiaW5fcmVhZF9yZXNwb25zZSQxIiwiYmluX3JlYWRfcmVzcG9uc2UkMiIsImJpbl9yZWFkZXJfcmVzcG9uc2UkMCIsImNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSIsInBpcGVfcmVhZCIsInhfMDA3Iiwib2ZfYV8wMDEiLCJidWZmZXJfMDA1IiwicGlwZV8wMDMiLCJhcmdfMDA2IiwiYm5kc18wMDIiLCJhcmdfMDA0IiwiYm5kc18wMDIkMCIsInByb2Nlc3NfcXVldWUkMCIsIm5lZWQiLCJxdWV1ZSIsImJ1ZmZfbGVuIiwicHJvY2Vzc19kYXRhJDAiLCJzZXRfYnVmZmVyX2FuZF9wcm9jZXNzX3F1ZXVlJDAiLCJ0b3RhbF9sZW4iLCJjb250aW51ZV9vcl93YWl0IiwibGVuZ3RoJDAiLCJzZXRfYnVmZmVyIiwicHJvY2Vzc19kYXRhIiwic2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSIsInByb2Nlc3NfcXVldWUiLCJ3YWl0X2Zvcl9yZWFkIiwiZW5kX29mX2JhdGNoX2FuZF9jb250aW51ZSIsIm9mX2JpZ3N0cmluZyIsInhfMDE1Iiwib2ZfYV8wMDkiLCJtb25pdG9yXzAxMyIsInBpcGVfMDExIiwiYm5kc18wMTAiLCJibmRzXzAxMCQwIiwiY2hlY2tfY2xvc2VkIiwicGF5bG9hZF9zaXplIiwiZGF0YV9zaXplIiwiZHN0X3BvcyIsImFkZF90b19iaWdidWZmZXIiLCJ0b19iaWdzdHJpbmciLCJhZGRfdG9fYmlnYnVmZmVyJDAiLCJ0b19iaWdzdHJpbmckMCIsIm9mX2JpZ3N0cmluZyQwIiwia2luZCIsInJlYWRlciQwIiwiZGVmYXVsdF9tZXNzYWdlIiwiY3JlYXRlX21lc3NhZ2VfYnVmIiwibWVzc2FnZV9sZW4iLCJjcmVhdGVfbWVzc2FnZSIsIm9uX21lc3NhZ2VfY291bnQiLCJnb3QiLCJzZXhwaWZpZXIiLCJlcXVhbCIsIm1lc3NhZ2UkMCIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMTYiLCJiXzAxNyIsIm9uX2VuZF9vZl9iYXRjaF9jb3VudCIsInJ1bl90ZXN0IiwidmVyaWZ5Iiwib25fbWVzc2FnZSQwIiwib25fZW5kX29mX2JhdGNoJDAiLCJtZXNzYWdlX2NvdW50IiwiYmF0Y2hfY291bnQiLCJnb3QkMCIsInNleHBpZmllciQwIiwiZXF1YWwkMCIsImhlcmUkMCIsImNvbXBhcmF0b3IkMCIsIndyaXRlXzFfbXNnXzFfY2h1bmsiLCJ3cml0ZV8xX21zZ18zX2NodW5rIiwibXNnX2xlbiIsInNwbGl0X2F0IiwicGFydDEiLCJwYXJ0MiIsIndyaXRlXzJfbXNnXzFfY2h1bmsiLCJvbmVfbXNnIiwidHdvX21zZyIsIndyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZSIsIm51bSIsInN0b3BfYWZ0ZXJfb25fbWVzc2FnZSIsImFfMDIyIiwiYl8wMjMiLCJleHBlY3QiLCJhXzAyNiIsImJfMDI3Iiwib25lX21lc3NhZ2UiLCJ0d29fbWVzc2FnZXMiLCJvbmVfbWVzc2FnZV9wMSIsIm9uZV9tZXNzYWdlX3AyIiwicnBjX2Nvbm5lY3Rpb24iLCJjbG9zZV9maW5pc2hlZCQwIiwic3RyaW5nX2FmdGVyIiwicyIsIm4iLCJxdW90ZSIsImxlbiIsImJ1ZiIsImkiLCJjIiwib2ZfY2hhciIsImZ1bGxfc3BsaXQiLCJzdHIiLCJvbiIsInNlcCIsImxvb3AiLCJhY2MiLCJvZmZzZXQiLCJpbmRleCIsInRva2VuIiwic3BsaXQiLCJtYXgiLCJtYXgkMCIsInRva2VucyIsImxvb3AkMCIsInRyaW1fbGVmdF9zdWIiLCJsYXN0X2NoYXIiLCJjaGFycyIsImZpbmFsJDAiLCJsYXN0X2NoYXIkMCIsImkkMCIsImxhc3RfY2hhciQxIiwibmV3X2xlbiIsInNwbGl0X3RyaW1fbGVmdCIsInRyaW0iLCJ0cmltX2xlZnQiLCJub25fc3BhY2UiLCJmaW5kX2Zyb20iLCJvcHQiLCJwYXR0ZXJuIiwic3RoIiwic3RhcnQiLCJzdGFydCQwIiwicmVwbGFjZV9hbGwiLCJ3aXRoJDAiLCJwbGVuIiwic2xlbiIsImoiLCJyZXBsYWNlX2FsbF9hc3NvYyIsInRibCIsImZvdW5kIiwiZiQwIiwiZiIsInhzJDAiLCJ4JDEiLCJ4IiwiZngiLCJ4cyIsIngkMCIsImZ4JDAiLCJlIiwiaiQxIiwid2l0aCQyIiwicGF0dGVybiQxIiwiciIsIndpdGgkMSIsInBhdHRlcm4kMCIsImokMCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCIsImkkMSIsImFjYyQwIiwib2ZfYXJyYXkiLCJhIiwiYnl0ZXMiLCJ0b19hcnJheSIsImN1dCIsInNlcF9tYXgiLCJzX21heCIsImsiLCJsZWZ0X2VuZCIsInJpZ2h0X3N0YXJ0IiwicmN1dCIsInNlcF9zdGFydCIsImNob3BfcHJlZml4IiwicHJlZml4IiwicHJlZml4X2wiLCJzdHJpbmdfbCIsImRyb3AiLCJ0YWtlIiwiY3JlYXRlIiwic2l6ZSIsImVtcHR5IiwibGVuZ3RoIiwic3ViIiwiaW52YWxpZF9ib3VuZHMiLCJvcCIsImJ1ZmZlcl9sZW4iLCJvZmYiLCJsZW4iLCJtZXNzYWdlIiwiaW52YWxpZF9ib3VuZHNfYmxpdCIsInNyY19sZW4iLCJzcmNfb2ZmIiwiZHN0X2xlbiIsImRzdF9vZmYiLCJpbnZhbGlkX2JvdW5kc19tZW1jbXAiLCJidWYxX2xlbiIsImJ1ZjFfb2ZmIiwiYnVmMl9sZW4iLCJidWYyX29mZiIsImNvcHkiLCJ0IiwiZHN0Iiwic3Vic3RyaW5nIiwiYiIsInRvX3N0cmluZyIsIm9mX3N0cmluZyIsInMiLCJibGl0Iiwic3JjIiwiYmxpdF9mcm9tX3N0cmluZyIsImJsaXRfZnJvbV9ieXRlcyIsImJsaXRfdG9fYnl0ZXMiLCJtZW1jbXAiLCJidWYxIiwiYnVmMiIsIm1lbWNtcF9zdHJpbmciLCJtZW1jaHIiLCJidWYiLCJidWZfb2ZmIiwiY2hyIiwiYnVmX2xlbiIsImNhbWxfYmlnc3RyaW5nX3NldF8xNiIsImJzIiwiaSIsImNhbWxfYmlnc3RyaW5nX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3NldF82NCIsImNhbWxfYmlnc3RyaW5nX2dldF8xNiIsImNhbWxfYmlnc3RyaW5nX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX2dldF82NCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkIiwieCIsInNldF9pbnQxNl9iZSIsInNldF9pbnQxNl9sZSIsInNldF9pbnQzMl9iZSIsInNldF9pbnQzMl9sZSIsInNldF9pbnQ2NF9iZSIsInNldF9pbnQ2NF9sZSIsImdldF9pbnQxNl9iZSIsImdldF9pbnQxNl9sZSIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCIsImdldF9pbnQxNl9zaWduX2V4dGVuZGVkX25vc3dhcCQwIiwiZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50NjRfYmUiLCJnZXRfaW50NjRfbGUiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQiLCJjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IiwiY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiIsImNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfNjQiLCJ1bnNhZmVfc2V0X2ludDE2X2JlIiwidW5zYWZlX3NldF9pbnQxNl9sZSIsInVuc2FmZV9zZXRfaW50MzJfYmUiLCJ1bnNhZmVfc2V0X2ludDMyX2xlIiwidW5zYWZlX3NldF9pbnQ2NF9iZSIsInVuc2FmZV9zZXRfaW50NjRfbGUiLCJ1bnNhZmVfZ2V0X2ludDE2X2JlIiwidW5zYWZlX2dldF9pbnQxNl9sZSIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCIsInVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZCQwIiwidW5zYWZlX2dldF9pbnQzMl9iZSIsInVuc2FmZV9nZXRfaW50MzJfbGUiLCJ1bnNhZmVfZ2V0X2ludDY0X2JlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInN0YXRlX3RvX29wdGlvbiIsIngiLCJ2IiwiZmFpbF90b19zdHJpbmciLCJtYXJrcyIsImVyciIsInN0YXRlX3RvX3Jlc3VsdCIsImNyZWF0ZSIsImJ1ZmZlciIsIm9mZiIsImxlbiIsImNvbW1pdHRlZF9ieXRlcyIsImxlbmd0aCIsInQiLCJjbGllbnRfY29tbWl0dGVkX2J5dGVzIiwicGFyc2VyX2NvbW1pdHRlZF9ieXRlcyIsImJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IiwicGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIiwiaW52YXJpYW50Iiwib2Zmc2V0X2luX2J1ZmZlciIsInBvcyIsImFwcGx5IiwiZiIsInVuc2FmZV9nZXRfY2hhciIsInVuc2FmZV9nZXRfaW50MTZfbGUiLCJ1bnNhZmVfZ2V0X2ludDMyX2xlIiwidW5zYWZlX2dldF9pbnQ2NF9sZSIsInVuc2FmZV9nZXRfaW50MTZfYmUiLCJ1bnNhZmVfZ2V0X2ludDMyX2JlIiwidW5zYWZlX2dldF9pbnQ2NF9iZSIsImNvdW50X3doaWxlIiwiaSIsImxpbWl0IiwiY29tbWl0IiwiZmFpbF9rIiwiaW5wdXQiLCJtc2ciLCJzdWNjZWVkX2siLCJ0b19leHBvcnRlZF9zdGF0ZSIsImNvbnRpbnVlJDAiLCJjb21taXR0ZWQiLCJicyIsIm1vcmUiLCJ4JDAiLCJzIiwic2wiLCJpJDAiLCJwYXJzZSIsInAiLCJwYXJzZV9iaWdzdHJpbmciLCJpbnB1dCQwIiwicmV0dXJuJDAiLCJmYWlsIiwic3VjYyIsInN5bWJvbF9iaW5kIiwic3VjYyQwIiwic3ltYm9sX21hcCIsInN5bWJvbCIsIm0iLCJzeW1ib2wkMCIsInN1Y2MwIiwiaW5wdXQwIiwicG9zMCIsIm1vcmUwIiwic3VjYzEiLCJpbnB1dDEiLCJwb3MxIiwibW9yZTEiLCJsaWZ0IiwibGlmdDIiLCJtMSIsIm0yIiwic3VjYzIiLCJpbnB1dDIiLCJwb3MyIiwibW9yZTIiLCJsaWZ0MyIsIm0zIiwic3VjYzMiLCJpbnB1dDMiLCJwb3MzIiwibW9yZTMiLCJsaWZ0NCIsIm00Iiwic3VjYzQiLCJpbnB1dDQiLCJwb3M0IiwibW9yZTQiLCJzeW1ib2wkMSIsImEiLCJiIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsIm1hcmsiLCJmYWlsJDAiLCJzeW1ib2wkNCIsInEiLCJwb3MkMCIsIm1vcmUkMCIsInJldHVybiQxIiwic3ltYm9sX2JpbmQkMCIsInN5bWJvbF9tYXAkMCIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJsaWZ0MiQwIiwibGlmdDMkMCIsImxpZnQ0JDAiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwib2ZfYmlnc3RyaW5nIiwiYnVmIiwid3JpdGFibGVfc3BhY2UiLCJlbnN1cmUiLCJ0b19jb3B5Iiwib2xkX2xlbiIsIm5ld19sZW4iLCJzcGFjZSIsIm5ld19idWYiLCJ3cml0ZV9wb3MiLCJmZWVkX3N0cmluZyIsInN0ciIsImZlZWRfYmlnc3RyaW5nIiwiZmVlZF9pbnB1dCIsInNoaWZ0IiwibiIsImZvcl9yZWFkaW5nIiwidW5jb25zdW1lZCIsIm9wdCIsInN0aCIsIm9mX3VuY29uc3VtZWQiLCJmcm9tX3VuYnVmZmVyZWRfc3RhdGUiLCJidWZmZXJpbmciLCJjb25zdW1lZCIsImNvbnN1bWVkJDAiLCJ1bmNvbnN1bWVkJDAiLCJwYXJzZSQwIiwiaW5pdGlhbF9idWZmZXJfc2l6ZSIsImZlZWQiLCJzdGF0ZSIsImsiLCJidWZmZXJpbmckMCIsInN0YXRlX3RvX29wdGlvbiQwIiwic3RhdGVfdG9fcmVzdWx0JDAiLCJzdGF0ZV90b191bmNvbnN1bWVkIiwicHJvbXB0IiwiZGVtYW5kX2lucHV0IiwiZW5zdXJlX3N1c3BlbmRlZCIsImdvIiwidW5zYWZlX2FwcGx5IiwiYXRfZW5kX29mX2lucHV0IiwiZW5kX29mX2lucHV0IiwiYWR2YW5jZSIsImF2YWlsYWJsZSIsInVuc2FmZV9sb29rYWhlYWQiLCJwZWVrX2NoYXIiLCJwZWVrX2NoYXJfZmFpbCIsInNhdGlzZnkiLCJjIiwiY2hhciQwIiwibm90X2NoYXIiLCJjJDAiLCJhbnlfY2hhciIsImludDgiLCJwJDAiLCJhbnlfdWludDgiLCJwJDEiLCJhbnlfaW50OCIsInNraXAiLCJpbml0Iiwid2l0aF9idWZmZXIiLCJpbnB1dF9sZW4iLCJpbml0JDAiLCJjb3VudF93aGlsZTEiLCJzdWNjJDEiLCJmYWlsJDEiLCJzdHJpbmciLCJmJDAiLCJlIiwic3RyaW5nJDAiLCJzdHJpbmdfY2kiLCJza2lwX3doaWxlIiwidGFrZSIsIm4kMCIsInRha2VfYmlnc3RyaW5nIiwidGFrZV9iaWdzdHJpbmdfd2hpbGUiLCJ0YWtlX2JpZ3N0cmluZ193aGlsZTEiLCJ0YWtlX2JpZ3N0cmluZ190aWxsIiwicGVla19zdHJpbmciLCJ0YWtlX3doaWxlIiwidGFrZV93aGlsZTEiLCJ0YWtlX3RpbGwiLCJjaG9pY2UiLCJwcyIsImZhaWx1cmVfbXNnIiwiZml4X2RpcmVjdCIsInIiLCJmaXhfbGF6eSIsIm1heF9zdGVwcyIsInN0ZXBzIiwiZml4Iiwib3B0aW9uIiwiY29ucyIsInhzIiwibGlzdCIsInBzJDAiLCJjb3VudCIsImxvb3AiLCJtYW55IiwibWFueTEiLCJtYW55X3RpbGwiLCJzZXBfYnkxIiwic2VwX2J5Iiwic2tpcF9tYW55Iiwic2tpcF9tYW55MSIsImVuZF9vZl9saW5lIiwic2NhbiIsInN0YXRlJDAiLCJwYXJzZXIiLCJzY2FuJDAiLCJzY2FuX3N0YXRlIiwic2Nhbl9zdHJpbmciLCJjb25zdW1lX3dpdGgiLCJjb25zdW1lZF9iaWdzdHJpbmciLCJib3RoIiwibWFwIiwiYmluZCIsIm1hcDIiLCJtYXAzIiwibWFwNCIsImQiLCJpbnQxNiIsImJ5dGVzIiwiaW50MzIiLCJpbnQ2NCIsImFueV91aW50MTYiLCJhbnlfaW50MTYiLCJhbnlfaW50MzIiLCJhbnlfaW50NjQiLCJhbnlfZmxvYXQiLCJhbnlfZG91YmxlIiwiaW50MTYkMCIsImludDMyJDAiLCJpbnQ2NCQwIiwiYW55X3VpbnQxNiQwIiwiYW55X2ludDE2JDAiLCJhbnlfaW50MzIkMCIsImFueV9pbnQ2NCQwIiwiYW55X2Zsb2F0JDAiLCJhbnlfZG91YmxlJDAiLCJ0YWtlJDAiLCJwZWVrIiwidGFrZV93aGlsZSQwIiwiY2hlY2siLCJ0YWtlX3doaWxlMSQwIiwidGFrZV90aWxsJDAiLCJwYXJzZV9iaWdzdHJpbmckMCIsImNvbnN1bWUiLCJwYXJzZV9zdHJpbmciLCJjc3QkMCIsIml0ZXJfY29uY2F0IiwiZm4iLCJzZXAiLCJidWYiLCJsYXN0IiwicmVzdCIsImNvbXBhcmVfb3B0IiwiYyIsInQkMCIsInQiLCJhIiwiYiIsImNvbXBhcmVfbGlzdCIsImYiLCJ0JDIiLCJ0JDEiLCJ4cyIsIngiLCJ5cyIsInkiLCJzdWJfZGVsaW1zIiwiaSIsInNhZmVfY2hhcnMiLCJwY2hhciIsInNhZmVfY2hhcnNfZm9yX3NjaGVtZSIsInNhZmVfY2hhcnNfZm9yX3BhdGgiLCJzYWZlX2NoYXJzX2Zvcl9xdWVyeSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X2tleSIsInNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIiwic2FmZV9jaGFyc19mb3JfdXNlcmluZm8iLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQiLCJ1bnNhZmUiLCJzYWZlIiwiY29tcG9uZW50Iiwic2FmZV9jaGFycyQwIiwiaSQwIiwiYyQwIiwibm9ybWFsaXplX2hvc3QiLCJoc28iLCJjYW5vbmljYWxpemVfcG9ydCIsInBvcnQiLCJjYW5vbmljYWxpemVfcGF0aCIsInBhdGgiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMCIsIm5vcm1hbGl6ZV9ob3N0JDAiLCJocyIsImNhbm9uaWNhbGl6ZV9wb3J0JDAiLCJjYW5vbmljYWxpemVfcGF0aCQwIiwic2FmZV9jaGFyc19mb3JfY29tcG9uZW50JDEiLCJub3JtYWxpemVfaG9zdCQxIiwiY2Fub25pY2FsaXplX3BhdGgkMSIsImNhbm9uaWNhbGl6ZV9wb3J0JDEiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMiIsImNhbm9uaWNhbGl6ZV9wb3J0JDIiLCJjYW5vbmljYWxpemVfcGF0aCQyIiwibm9ybWFsaXplX2hvc3QkMiIsImhzJDAiLCJzYWZlX2NoYXJzX2Zvcl9jb21wb25lbnQkMyIsIm5vcm1hbGl6ZV9ob3N0JDMiLCJjYW5vbmljYWxpemVfcG9ydCQzIiwiY2Fub25pY2FsaXplX3BhdGgkMyIsIm1vZHVsZV9vZl9zY2hlbWUiLCJzIiwiZW5jb2RlIiwic2NoZW1lIiwib3B0Iiwic3RoIiwibGVuIiwic3RhcnQiLCJjdXIiLCJjdXIkMCIsImN1ciQxIiwic3RhcnQkMCIsImludF9vZl9oZXhfY2hhciIsImRlY29kZSIsImhpZ2hiaXRzIiwibG93Yml0cyIsInN0YXJ0X2F0IiwicGN0X2VuY29kZSIsInBjdF9lbmNvZGVyIiwic3RoJDAiLCJ1c2VyaW5mbyIsInN0aCQxIiwiaG9zdCIsInN0aCQyIiwic3RoJDMiLCJxdWVyeV9rZXkiLCJzdGgkNCIsInF1ZXJ5X3ZhbHVlIiwic3RoJDUiLCJmcmFnbWVudCIsInBjdF9kZWNvZGUiLCJjb21wYXJlIiwicCIsInUiLCJwJDAiLCJ1JDAiLCJ1c2VyaW5mb19vZl9lbmNvZGVkIiwidXMiLCJlbmNvZGVkX29mX3VzZXJpbmZvIiwicG8iLCJwYXRoX29mX2VuY29kZWQiLCJwcyIsInRva2wiLCJyZW1vdmVfZG90X3NlZ21lbnRzIiwicmV2cCIsImFzY2Vuc2lvbiIsIm91dHAiLCJyJDMiLCJyJDEiLCJyJDAiLCJyJDIiLCJyIiwibHN0IiwiaCIsImFjYyIsImVuY29kZWRfb2ZfcGF0aCIsInRvayIsInNlZyIsInF1ZXJ5X29mX2VuY29kZWQiLCJxcyIsImVscyIsInBsdXNfdG9fc3BhY2UiLCJzJDAiLCJlbCIsImsiLCJ0bCIsInYiLCJsIiwibCQwIiwibiIsInRsJDAiLCJuJDAiLCJ0bCQxIiwiZW5jb2RlZF9vZl9xdWVyeSIsInBjdF9lbmNvZGVyJDAiLCJvZl9yYXciLCJsYXp5X3F1ZXJ5Iiwia3YiLCJlbmNvZGVkX29mX3F1ZXJ5JDAiLCJlbXB0eSIsImNvbXBhcmVfZGVjb2RlZCIsImNvbXBhcmVfZGVjb2RlZF9vcHQiLCJjb21wYXJlX2hvc3QiLCJoMSIsImgyIiwiaXAyIiwiaXAxIiwiaXAyJDAiLCJpcDEkMCIsImgyJDAiLCJoMSQwIiwiY29tcGFyZSQwIiwiYyQzIiwiYyQxIiwiYyQ0Iiwia3ZsJDAiLCJrdmwiLCJyYXciLCJyYXckMCIsImMkMiIsInZsIiwidmwkMCIsImskMCIsImVxdWFsIiwidW5jYXN0X29wdCIsIm5vcm1hbGl6ZSIsInNjaGVtIiwiaW5pdCIsImhvc3QkMCIsImhvc3QkMSIsInRvX3N0cmluZyIsInVyaSIsImFkZF9wY3Rfc3RyaW5nIiwiZmlyc3Rfc2VnbWVudCIsInEiLCJnZXRfZGVjb2RlZF9vcHQiLCJ3aXRoX3NjaGVtZSIsImgkMCIsImhvc3Rfd2l0aF9kZWZhdWx0IiwiZGVmYXVsdCQwIiwid2l0aF91c2VyaW5mbyIsInVzZXJpbmZvJDAiLCJ1c2VyIiwicGFzc3dvcmQiLCJwYXNzIiwid2l0aF9wYXNzd29yZCIsInJlc3VsdCIsIndpdGhfcG9ydCIsIndpdGhfcGF0aCIsInBhdGgkMCIsIndpdGhfZnJhZ21lbnQiLCJmcmFnIiwicXVlcnkiLCJ2ZXJiYXRpbV9xdWVyeSIsImdldF9xdWVyeV9wYXJhbSIsImdldF9xdWVyeV9wYXJhbSQwIiwid2l0aF9xdWVyeSIsInFfcyIsIndpdGhfcXVlcnkkMCIsImFkZF9xdWVyeV9wYXJhbSIsImFkZF9xdWVyeV9wYXJhbSQwIiwiYWRkX3F1ZXJ5X3BhcmFtcyIsImFkZF9xdWVyeV9wYXJhbXMkMCIsInJlbW92ZV9xdWVyeV9wYXJhbSIsInBhdGhfYW5kX3F1ZXJ5IiwibWF0Y2giLCJzY2hlbWUkMCIsInJlc29sdmUiLCJiYXNlIiwic2NoZW1lJDEiLCJzY2hlbSQwIiwicGF0aF9zdHIiLCJyZWxwYXRoIiwiYnBhdGgiLCJiaG9zdCIsInJicGF0aCIsImNhbm9uaWNhbGl6ZSIsInVyaSQwIiwicHAiLCJwcGYiLCJwcF9odW0iLCJzdHJpbmdfb2ZfY2hhciIsInN0cmluZ19vZl9jaGFyX2xpc3QiLCJjaGFycyIsImlzX2RpZ2l0IiwiaGV4X2RpZ2l0IiwiaGV4YWRlY2ltYWwiLCJjX2RvdCIsImNfYXQiLCJjX2NvbG9uIiwibnVtIiwiZGVjX29jdGV0IiwidGhyZWUiLCJvbmUiLCJpcHY0X2FkZHJlc3MiLCJhZnRlcl9kb3VibGVfY29sb24iLCJkb3VibGVfY29sb24iLCJjb3VudCIsImZpbGxlcl9sZW5ndGgiLCJwYXJ0IiwiaGV4X3BhcnQiLCJzcGxpdF93aXRoIiwidHMiLCJ6cyIsImZvcm1hdF9hZGRyIiwic2VnbWVudHMiLCJzZWdtZW50IiwiYmVmb3JlX2RvdWJsZV9jb2xvbiIsImJlZm9yZSIsInJlcyIsImlwdjYiLCJpcHY2X2FkZHJlc3MiLCJwY3QiLCJkaWdpdHMiLCJwY3RfZW5jb2RlZCIsInN1Yl9kZWxpbXMkMCIsInVucmVzZXJ2ZWQiLCJyZWdfbmFtZSIsImRlY29kZWQiLCJwb3J0JDAiLCJhdXRob3JpdHkiLCJxdWVyeSQwIiwiZnJhZ21lbnQkMCIsInVyaV9yZWZlcmVuY2UiLCJ1cmlfcmVmZXJlbmNlJDAiLCJkZWNvZGVfaG9zdCIsInBhcnNlZCIsInBhcnNlZCQwIiwibWFrZSIsInBhdGgkMSIsIndpdGhfaG9zdCIsIndpdGhfdXJpIiwid2l0aF9wYXRoX29wdCIsIm8iLCJ3aXRoX3F1ZXJ5X29wdCIsIndpdGgkMCIsIm9mX3N0cmluZyIsImxldCQwIiwidG9fdXJpIiwib2ZfdXJpIiwidW5zdXBwb3J0ZWRfc2NoZW1lIiwib2Zfc3RyaW5nJDAiLCJlcnJvciIsInRvX3N0cmluZyQwIiwibWFrZSQwIiwiaG9zdCQyIiwiZXJyb3Jfc291cmNlXzAwNiIsImVycm9yX3NvdXJjZV8wMTgiLCJkZWZhdWx0XzA4MSIsImVycm9yX3NvdXJjZV8wNTUiLCJkZWZhdWx0XzExMSIsImNvbXBvbmVudF9vZl9zZXhwIiwiY29tcG9uZW50X29mX3NleHAkMCIsInNleHBfMDA0IiwiYXRvbV8wMDIiLCJzZXhwX2FyZ3NfMDA1IiwiYXRvbV8wMDIkMCIsImFyZzBfMDE1IiwiYXJnMl8wMTAiLCJhcmcxXzAwOSIsImFyZzBfMDA4IiwicmVzMF8wMTEiLCJyZXMxXzAxMiIsInJlczJfMDEzIiwicmVzMF8wMTYiLCJzZXhwXzAxNyIsInNleHBfb2ZfY29tcG9uZW50Iiwidl8wMTkiLCJhcmcyXzAyMiIsImFyZzFfMDIxIiwiYXJnMF8wMjAiLCJyZXMwXzAyMyIsInJlczFfMDI0IiwicmVzMl8wMjUiLCJkZWZhdWx0XzA3MyIsImRlZmF1bHRfMDc1IiwiZGVmYXVsdF8wNzciLCJkZWZhdWx0XzA3OSIsImRlZmF1bHRfMDg0IiwidF9vZl9zZXhwIiwic2V4cF8wMjciLCJmaWVsZF9zZXhwc18wMjgiLCJzY2hlbWVfMDI5IiwidXNlcmluZm9fMDMxIiwiaG9zdF8wMzMiLCJwb3J0XzAzNSIsInBhdGhfMDM3IiwicXVlcnlfMDM5IiwiZnJhZ21lbnRfMDQxIiwiZHVwbGljYXRlc18wNDMiLCJleHRyYV8wNDQiLCJzZXhwXzAyNyQwIiwiZmllbGRfc2V4cHNfMDQ3IiwiZmllbGRfbmFtZV8wNDUiLCJ0YWlsXzA4NyIsImZpZWxkX3NleHBfMDQ2JDciLCJmaWVsZF9zZXhwXzA0NiIsInhfMDg4IiwiZmllbGRfc2V4cF8wNDYkMCIsImZ2YWx1ZV8wNjQiLCJmaWVsZF9zZXhwXzA0NiQxIiwiZnZhbHVlXzA2NiIsImZpZWxkX3NleHBfMDQ2JDIiLCJzZXhwXzA1NCIsImFyZzFfMDUxIiwiYXJnMF8wNTAiLCJyZXMwXzA1MiIsInJlczFfMDUzIiwiZnZhbHVlXzA1NiIsImZpZWxkX3NleHBfMDQ2JDMiLCJmdmFsdWVfMDYwIiwiZmllbGRfc2V4cF8wNDYkNCIsImZ2YWx1ZV8wNTgiLCJmaWVsZF9zZXhwXzA0NiQ1IiwiZnZhbHVlXzA2MiIsImZpZWxkX3NleHBfMDQ2JDYiLCJmdmFsdWVfMDQ5Iiwic2NoZW1lXzAzMCIsInVzZXJpbmZvXzAzMiIsImhvc3RfMDM0IiwicG9ydF8wMzYiLCJwYXRoXzAzOCIsInF1ZXJ5XzA0MCIsImZyYWdtZW50XzA0MiIsInZfMDg1Iiwidl8wODUkMCIsInZfMDgzIiwidl8wODMkMCIsInZfMDgyIiwidl8wODIkMCIsInZfMDgwIiwidl8wODAkMCIsInZfMDc4Iiwidl8wNzgkMCIsInZfMDc2Iiwidl8wNzYkMCIsInZfMDc0Iiwidl8wNzQkMCIsImRlZmF1bHRfMDkxIiwiZGVmYXVsdF8wOTYiLCJkZWZhdWx0XzEwMSIsImRlZmF1bHRfMTA2IiwiZGVmYXVsdF8xMjQiLCJ0X29mX3NleHAkMCIsInNleHAiLCJ0Iiwic2V4cF9vZl90IiwiZnJhZ21lbnRfMTI1IiwicXVlcnlfMTE2IiwicGF0aF8xMTIiLCJwb3J0XzEwNyIsImhvc3RfMTAyIiwidXNlcmluZm9fMDk3Iiwic2NoZW1lXzA5MiIsImFyZ18xMjciLCJibmRzXzA4OSIsImJuZHNfMDg5JDAiLCJibmRfMTI2IiwiYm5kc18wODkkMSIsImFyZzFfMTE4IiwiYXJnMF8xMTciLCJyZXMwXzExOSIsInJlczFfMTIwIiwiYXJnXzEyMiIsImJuZF8xMjEiLCJhcmdfMTE0IiwiYm5kc18wODkkMiIsImJuZF8xMTMiLCJhcmdfMTA5IiwiYm5kc18wODkkMyIsImJuZF8xMDgiLCJhcmdfMTA0IiwiYm5kc18wODkkNCIsImJuZF8xMDMiLCJhcmdfMDk5IiwiYm5kc18wODkkNSIsImJuZF8wOTgiLCJhcmdfMDk0IiwiYm5kc18wODkkNiIsImJuZF8wOTMiLCJjb21wYXJlIiwiYSIsImIiLCJlcXVhbCIsImlzX3ZhbGlkX2ZpZWxkX25hbWUiLCJzZWVuIiwibmFtZSIsImFueV9vZl9zZXhwIiwicyIsImxpc3QkMCIsInYkMCIsIm5hbWUkMSIsInNlZW4kMiIsInJldl9hY2MiLCJsaXN0IiwicmVzdCIsInJldl9hY2MkMCIsInNlZW4kMCIsInJlc3QkMCIsInYiLCJuYW1lJDAiLCJyZXZfYWNjJDEiLCJzZWVuJDEiLCJsIiwibG9nX3MiLCJzZXhwIiwibG9nX3NfYXNfc3RyaW5nIiwic2V4cF9vZl90IiwiZmllbGQyXzA0MyIsImZpZWxkMV8wNDEiLCJhcmdfMDQ0IiwiYm5kc18wNDAiLCJzb21lX25hbWVfMDE3IiwiYXJnXzAxOCIsImJuZHNfMDE2IiwiYXJnXzA0MiIsImJuZHNfMDQwJDAiLCJ0b19zdHJpbmciLCJhbnkiLCJzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMiLCJpIiwieF8wNDkiLCJhcmcxXzA0NiIsImFyZzBfMDQ1IiwicmVzMF8wNDciLCJyZXMxXzA0OCIsImNvbXBhcmVfY2xvc2VfZXZlbnRfY29kZSIsInNleHBfb2ZfY2xvc2VfZXZlbnRfY29kZSIsImFsbF9vZl9jbG9zZV9ldmVudF9jb2RlIiwiY29tcGFyZSIsImFfMDA0IiwiYl8wMDUiLCJhXzAwNiIsImJfMDA3IiwiYV8wMDgiLCJiXzAwOSIsImFjYyIsImwkMCIsImVudW1lcmF0ZV8wMTEiLCJhY2MkMCIsImwkMSIsImFjYyQxIiwibCQyIiwiZW51bWVyYXRlXzAxMCIsImFjYyQyIiwiYWxsIiwibm9ybWFsX2Nsb3N1cmUiLCJvZl9pbnQiLCJjb2RlIiwidG9faW50IiwiY29kZSQwIiwieF8wMzEiLCJ4XzAzMCIsImNsaWVudCIsIm9wdCIsImhlYXJ0YmVhdF9jb25maWciLCJkZXNjcmlwdGlvbiIsImltcGxlbWVudGF0aW9ucyIsInN0aCIsInVyaSIsInNjaGVtZSIsInBvcnQiLCJwb3J0JDAiLCJob3N0IiwibWF0Y2gkMSIsInJlcyIsImgiLCJkZXNjcmlwdGlvbiQwIiwiZnJvbV9zZXJ2ZXJfdyIsImZyb21fc2VydmVyX3IiLCJ0b19zZXJ2ZXJfdyIsInRvX3NlcnZlcl9yIiwiZXJyb3IiLCJ0cmFuc3BvcnQiLCJjb25uZWN0aW9uIiwiZXhuIiwiY3JlYXRlIiwiY29ubmVjdGlvbl9zdGF0ZSIsImltcGxlbWVudGF0aW9ucyQwIiwiZXhuJDEiLCJjb25uZWN0ZWRfaXZhciIsImNsZWFudXAiLCJyZWFzb24iLCJyZWFzb24kMCIsImNsb3NlIiwib25jbG9zZSIsImNsb3NlX2V2ZW50Iiwid2hhdF9oYXBwZW5lZCIsImN1c3RvbV9wcmludGZfMDM0IiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJvbm1lc3NhZ2UiLCJkYXRhIiwiY29ubmVjdGVkIiwiY29ubmVjdGVkX2RlZmVycmVkIiwiYnVmZmVyIiwiZXhuJDAiLCJjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCIsImNsaWVudF9leG4iLCJjcmVhdGVfZnJvbV91cmkiLCJlcXVhbCQwIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJzZXhwX29mX3QkMSIsInhfMDA3IiwiY3JlYXRlX2Zyb21fdXJpX29wdGlvbiIsIm1ldGhvZF9zdHJpbmckMCIsInJlcXVlc3QiLCJvbl9wcm9ncmVzcyIsIm9uX3VwbG9hZF9wcm9ncmVzcyIsInVybCIsImhlYWRlcnMiLCJtZXRob2Rfd2l0aF9hcmdzIiwiYXJncyIsIm1ldGhvZF9zdHJpbmckMSIsInVybCQwIiwidmFsdWUiLCJyZXNwb25zZSIsImNvbnRlbnQiLCJnZXRfaGVhZGVyIiwiZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IiLCJib2R5IiwiYm9keSQwIiwiYiIsImQiLCJmZCIsImdldCIsImFyZ3VtZW50cyQwIiwicmVzcCIsInBvc3QiLCJyZWFkeV9zdGF0ZV9jaGFuZ2UiLCJjb21wbGV0ZSIsInNsZWVwIiwieWllbGQkMCIsImV4dHJhY3RfanNfZXJyb3IiLCJzdGF0ZSIsInRpbWVvdXRzIiwicnVuX2FmdGVyIiwiZiIsIm1zIiwibG9vcCIsInQiLCJuZXh0X3dha2V1cCIsIm5leHQiLCJub3ciLCJkX21zJDAiLCJlcnIiLCJlcnIkMCIsImRfbXMiLCJhdCIsInJ1bl90aW1lb3V0IiwicnVuIiwibG9nIiwiZXJyJDIiLCJleG4kMiIsImV4biQzIiwiZXJyJDEiLCJpbml0aWFsaXplZF9yZWYiLCJpbml0aWFsaXphdGlvbiIsImluaXQiLCJpbml0aWFsaXplZCIsImpzX3N0cmluZ19jb21wYXJlIiwiY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsIiwicmVhZHlzdGF0ZWNoYW5nZV9ldiIsImFkZF9ldmVudCIsInRhcmdldCIsImV2dCIsImhhbmRsZXIiLCJkb2N1bWVudF9sb2FkZWQiLCJsb2FkZWQiLCJsZWZ0X2NoaWxkX2luZGV4IiwicGFyZW50X2luZGV4IiwibnVtX2JyYW5jaGVzIiwidCIsImluZGV4X2lzX2xlYWYiLCJpIiwibGVhZl9pbmRleCIsIm9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbiIsInJvdGF0ZWRfaW5kZXgiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsImludmFyaWFudCIsImludmFyaWFudF9hIiwiZGF0YSIsImkkMCIsImEiLCJsZWZ0IiwicmlnaHQiLCJsZWZ0X2lzX25vbmUiLCJyaWdodF9pc19ub25lIiwiY3JlYXRlX2V4biIsIm9wdCIsIm51bV9sZWF2ZXMiLCJyZWR1Y2UiLCJzdGgiLCJudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwiLCJ2YWxpZGF0ZV9pbmRleCIsImxlbmd0aCIsInNldF9leG4iLCJjaGlsZF9pbmRleCIsInBhcmVudCIsImdldF9leG4iLCJ4XzAwMiIsImNvbXB1dGVfZXhuIiwic2V4cF9vZl90Iiwic3RlcHMiLCJyIiwiaW5pdCIsInNleHBfb2ZfdCQwIiwib2ZfYV8wMDEiLCJzdGVwc18wMDUiLCJpbml0XzAwMyIsImJuZHNfMDAyIiwiYXJnMV8wMDgiLCJhcmcwXzAwNyIsInJlczBfMDA5IiwicmVzMV8wMTAiLCJhcmdfMDA2IiwiYm5kc18wMDIkMCIsImFyZ18wMDQiLCJibmRzXzAwMiQxIiwiaW52YXJpYW50IiwiaW52YXJpYW50X2EiLCJ2YWx1ZSIsInQkMCIsImF0Iiwic3RlcHMkMSIsImluaXQkMSIsInN0ZXBzJDAiLCJpbml0JDAiLCJ0IiwiY29uc3RhbnQiLCJjcmVhdGVfZXhuIiwidGltZTIiLCJ0aW1lMSIsInhfMDExIiwiY3JlYXRlX2Zyb21fc2VxdWVuY2UiLCJjcmVhdGUiLCJsZW4iLCJsZW5ndGgiLCJ0Iiwic2V0Iiwic2V0X2V4biIsImkiLCJ4IiwiZ2V0IiwiaXNfc29tZSIsImlzX25vbmUiLCJzZXhwX29mX3QiLCJzZXhwX29mX2EiLCJ4XzAwMSIsIml0ZXIiLCJmIiwidiIsIml0ZXJpIiwiYmxpdCIsInNyYyIsInNyY19wb3MiLCJkc3QiLCJkc3RfcG9zIiwiY3JlYXRlIiwiaW5kZXgiLCJnZXQiLCJ0Iiwic2V4cF9vZl90Iiwic2V4cF9vZl9hIiwieF8wMDEiLCJpc19ub25lIiwiaXNfc29tZSIsInNldCIsImJsb2NrIiwic2V4cF9vZl90Iiwib2ZfYV8wMDEiLCJvZl9iXzAwMiIsImtleXNfd2l0aF91bnVzZWRfZGF0YV8wMDYiLCJlbnRyeV9ieV9rZXlfMDA0IiwiYm5kc18wMDMiLCJhcmdfMDA5IiwiYm5kc18wMDMkMCIsImFyZ18wMDciLCJibmRzXzAwMyQxIiwiYXJnXzAwNSIsImJuZHNfMDAzJDIiLCJjcmVhdGUiLCJncm93dGhfYWxsb3dlZCIsInNpemUiLCJoYXNoYWJsZSIsImNyZWF0ZSQwIiwibSIsInNldF9ydW5fd2hlbl91bnVzZWRfZGF0YSIsInQiLCJ0aHJlYWRfc2FmZV9mIiwicmVtb3ZlIiwia2V5IiwicmVjbGFpbV9zcGFjZV9mb3Jfa2V5c193aXRoX3VuIiwiZW50cnkiLCJnZXRfZW50cnkiLCJtZW0iLCJrZXlfaXNfdXNpbmdfc3BhY2UiLCJzZXRfZGF0YSIsImRhdGEiLCJyZXBsYWNlIiwiYWRkX2V4biIsInhfMDEwIiwiZmluZCIsImZpbmRfb3JfYWRkIiwiZGVmYXVsdCQwIiwidiIsInNleHBfb2ZfdCIsImNvbmNhdCIsImRlYnVnIiwidGFnIiwiYXJnMF8wMDEiLCJhcmcxXzAwMiIsInNleHBfb2ZfYSIsInJlczBfMDAzIiwicmVzMV8wMDQiLCJyZWFsbG9jIiwidCIsImxlbiIsImEiLCJuZXdfdCIsInJlYWxsb2MkMCIsInJlczBfMDA1IiwicmVzMF8wMDciLCJpbnZhcmlhbnQiLCJ4XzAwOSIsImNyZWF0ZSIsImYiLCJvZl9jb21wYXJlIiwib2ZfZXF1YWwiLCJwb2x5X2VxdWFsIiwibmV2ZXIiLCJhbHdheXMiLCJzaG91bGRfY3V0b2ZmIiwib2xkX3ZhbHVlIiwibmV3X3ZhbHVlIiwiZiQwIiwiZiQxIiwiZXF1YWwiLCJ0MSIsInQyIiwiZjEiLCJmMiIsImYxJDAiLCJmMiQwIiwiZjEkMSIsImYyJDEiLCJjb21wYXJlIiwiYV8wMDEiLCJiXzAwMiIsImFfMDAzIiwiYl8wMDQiLCJ4XzAwNSIsInNleHBfb2ZfZG90IiwiYXR0cmlidXRlc18wMDkiLCJsYWJlbF8wMDciLCJhcmdfMDEwIiwiYm5kc18wMDYiLCJhcmdfMDA4IiwiYm5kc18wMDYkMCIsInNleHBfb2ZfdCQwIiwiYXJnMF8wMTEiLCJyZXMwXzAxMiIsImFyZzBfMDEzIiwicmVzMF8wMTQiLCJuZXdfMDE4IiwicHJpb3JfMDE2IiwiYXJnXzAxOSIsImJuZHNfMDE1IiwiYXJnXzAxNyIsImJuZHNfMDE1JDAiLCJpbmZvIiwiYXBwZW5kIiwicHJpb3IiLCJuZXckMCIsImRvdCIsImxhYmVsIiwiYXR0cmlidXRlcyIsImxhYmVsJDAiLCJ0b19kb3QiLCJpIiwicHJpb3IkMCIsIm5ldyQxIiwibGVmdCIsInJpZ2h0IiwiZXNjYXBlX2RvdF9zdHJpbmciLCJzIiwiZXNjYXBlX3JlY29yZF9sYWJlbCIsImMiLCJ0b19zdHJpbmciLCJuYW1lIiwiY29scyIsInYiLCJrIiwiYXR0cmlidXRlcyQwIiwiciIsIm5leHQiLCJub25lIiwiaXNfbm9uZSIsImlzX3NvbWUiLCJhZGQxIiwiY21wX2EiLCJhXzAwNyIsImFfMDA1IiwiYl8wMDgiLCJiXzAwNiIsIm4iLCJvZl9hXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJhcmcxXzAxMyIsImFyZzBfMDEyIiwicmVzMV8wMTUiLCJvZl9hXzAxNyIsInByZXZpb3VzX3VwZGF0ZV9raW5kXzAyMSIsImNyZWF0ZWRfYXRfMDIzIiwiYXJnXzAyNCIsImJuZHNfMDE4IiwiYXJnXzAyMiIsImJuZHNfMDE4JDAiLCJhcmdfMDIwIiwiYm5kc18wMTgkMSIsImNyZWF0ZWRfYXQiLCJyZWFsbHlfcnVuIiwibm9kZV91cGRhdGUiLCJydW4iLCJub3ciLCJiYWNrdHJhY2VfMDA0IiwiZXhuXzAwMiIsImFyZ18wMDUiLCJibmRzXzAwMSIsImFyZ18wMDMiLCJibmRzXzAwMSQwIiwiZXhuIiwic2V4cF9vZl9ub2RlIiwieF8wMDMiLCJpc192YWxpZCIsImlzX25lY2Vzc2FyeSIsInR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIiwiYmluZCIsInhfMDA0Iiwid2F0Y2giLCJzZXRfYXQiLCJzZXRfc2V0X2F0IiwidmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIiwic2V0X3ZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphIiwidmFsdWUiLCJzZXRfdmFsdWUiLCJ3YXRjaCQwIiwic2V0X2F0JDAiLCJ2YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsInZhbHVlJDAiLCJzZXhwX29mX3ZhciIsIm9mX2FfMDAxIiwidmFsdWVfMDAzIiwic2V0X2F0XzAwNyIsIndhdGNoXzAwOSIsImJuZHNfMDAyIiwiYm5kc18wMDIkMCIsImFyZ18wMDYiLCJibmRzXzAwMiQxIiwiYXJnXzAwNCIsImJuZHNfMDAyJDIiLCJpbnZhcmlhbnRfYSIsImNoZWNrIiwid2F0Y2hfZnVuIiwidCQwIiwic2V0X2F0X2Z1biIsInZhbHVlX2Z1biIsInhfMDExIiwiaW5jcl9zdGF0ZSIsInBhcmFtIiwicmVzMF8wMTUiLCJsYXRlc3RfdmFsdWUiLCJwb3MiLCJyZXMwXzAwNCIsInJlczBfMDA2IiwibnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvIiwic2V0X251bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsIiwiZm9sZF92YWx1ZSIsInNldF9mb2xkX3ZhbHVlIiwiY2hpbGRyZW4iLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIiwiaW5pdCIsIm1haW4iLCJudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY28kMCIsImZvbGRfdmFsdWUkMCIsImNoaWxkcmVuJDAiLCJmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzJDAiLCJpbml0JDAiLCJtYWluJDAiLCJvZl9hY2NfMDEwIiwiY2hpbGRyZW5fMDIyIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc18wIiwiaW5pdF8wMTQiLCJtYWluXzAxMiIsImZvbGRfdmFsdWVfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDExIiwiYXJnXzAyNSIsImJuZHNfMDExJDAiLCJhcmdfMDIzIiwiYm5kc18wMTEkMSIsImFyZ18wMjEiLCJibmRzXzAxMSQyIiwiYm5kc18wMTEkMyIsImJuZHNfMDExJDQiLCJhcmdfMDE1IiwiYm5kc18wMTEkNSIsImFyZ18wMTMiLCJibmRzXzAxMSQ2IiwiaW52YXJpYW50X2FjYyIsImZvbGRfdmFsdWVfZnVuIiwiZ290IiwiZXhwZWN0Iiwic2V4cGlmaWVyIiwibWVzc2FnZSIsImhlcmUiLCJjb21wYXJhdG9yIiwiYV8wMjkiLCJiXzAzMCIsImNoaWxkcmVuX2Z1biIsImNoaWxkIiwiZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc19mIiwiaW5pdF9mdW4iLCJtYWluX2Z1biIsInhfMDI4IiwidXBkYXRlJDAiLCJmX2ludmVyc2UiLCJ1cGRhdGUiLCJjb21wdXRlIiwicmVzdWx0IiwiZm9yY2VfZnVsbF9jb21wdXRlIiwiY2hpbGRfY2hhbmdlZCIsInhfMDMxIiwiY2hpbGRfaW5kZXgiLCJvbGRfdmFsdWVfb3B0IiwiY2hpbGRfYXRfaW5kZXgiLCJ4XzAwMSIsIm51bGwkMCIsImFsYXJtX3ZhbHVlIiwic2V0X2FsYXJtX3ZhbHVlIiwiYWxhcm0iLCJzZXRfYWxhcm0iLCJhbGFybV92YWx1ZSQwIiwiYWxhcm0kMCIsIm1haW5fMDAzIiwiY2hpbGRfMDA1IiwiZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jIiwidmFsdWVfMDA5IiwidXBjb21pbmdfc3RlcHNfMDExIiwiYWxhcm1fMDE3IiwiYWxhcm1fdmFsdWVfMDE5IiwiY2xvY2tfMDIxIiwiYXJnXzAxOCIsImFyZzFfMDE0IiwicmVzMV8wMTYiLCJhcmdfMDEyIiwiYm5kc18wMDIkMyIsImJuZHNfMDAyJDQiLCJibmRzXzAwMiQ1IiwiYm5kc18wMDIkNiIsImFsYXJtX3ZhbHVlX2Z1biIsImFsYXJtX2Z1biIsInhfMDIzIiwiYWR2YW5jZSIsInRvIiwic3RlcHMkMCIsImExJDAiLCJhMSIsInN0ZXBzIiwic3RlcHMyIiwiYTIiLCJzdGVwX2F0Iiwib2ZfYWNjXzAwMiIsImNoaWxkcmVuXzAwOCIsImluaXRfMDA0IiwiYXJnXzAwOSIsImJuZHNfMDAzIiwiYXJnXzAwNyIsImJuZHNfMDAzJDAiLCJibmRzXzAwMyQxIiwieF8wMTAiLCJhdF8wMDQiLCJtYWluXzAwMiIsImFsYXJtXzAwNiIsImNsb2NrXzAwOCIsImJuZHNfMDAxJDEiLCJibmRzXzAwMSQyIiwiaW50ZXJ2YWwiLCJpbnRlcnZhbCQwIiwiaW50ZXJ2YWxfMDA2IiwiYmFzZV8wMDQiLCJhbGFybV8wMDgiLCJjbG9ja18wMTAiLCJhcmdfMDExIiwiYm5kc18wMDEkMyIsImludGVydmFsX2Z1biIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyIsInNldF9hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJyaHNfc2NvcGUiLCJzZXRfcmhzX3Njb3BlIiwibGhzX2NoYW5nZSIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyQwIiwicmhzX3Njb3BlJDAiLCJsaHNfY2hhbmdlJDAiLCJvZl9iXzAwMiIsIm1haW5fMDA0IiwibGhzX2NoYW5nZV8wMTAiLCJsaHNfMDA4IiwicmhzXzAxMiIsInJoc19zY29wZV8wMTQiLCJhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNfMDE2IiwiYm5kc18wMDMkMiIsImJuZHNfMDAzJDMiLCJibmRzXzAwMyQ0IiwiYm5kc18wMDMkNSIsInNhbWUiLCJpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwibWF0Y2giLCJpbnZhcmlhbnRfYiIsImFsbF9ub2Rlc19jcmVhdGVkX29uX3Joc19mdW4iLCJub2RlIiwicmhzX3Njb3BlX2Z1biIsImxoc19jaGFuZ2VfZnVuIiwieF8wMTgiLCJwb3MkMCIsInBvcyQxIiwic2V4cF9vZl9lZGdlIiwiY2hpbGRfMDAzIiwiaW5kZXhfMDA3Iiwic2V4cF9vZl9wYWNrZWRfZWRnZSIsInJlczBfMDEwIiwib2ZfYV8wMTEiLCJjaGlsZHJlbl8wMTciLCJudW1fY2hpbGRyZW5fMDE5IiwiZm9yY2Vfc3RhbGVfMDIxIiwibnVtX2ludmFsaWRfY2hpbGRyZW5fMDIzIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3NfMDI1IiwiYXJnXzAyNiIsImJuZHNfMDEyIiwiYm5kc18wMTIkMCIsImJuZHNfMDEyJDEiLCJibmRzXzAxMiQyIiwiYm5kc18wMTIkMyIsImFyZ18wMTYiLCJibmRzXzAxMiQ0IiwiYXJnXzAxNCIsImJuZHNfMDEyJDUiLCJudW1fY2hpbGRyZW4iLCJ1b3B0IiwiYV8wMjciLCJiXzAyOCIsImludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaCIsIm51bV9pbnZhbGlkX2NoaWxkcmVuIiwic2V4cGlmaWVyJDAiLCJleHBlY3QkMCIsImVxdWFsJDAiLCJtZXNzYWdlJDAiLCJoZXJlJDAiLCJjb21wYXJhdG9yJDAiLCJjb3VudF9pbnZhbGlkX2NoaWxkcmVuIiwiYV8wMzEiLCJiXzAzMiIsIm9uX29ic2VydmFiaWxpdHlfY2hhbmdlIiwibWFrZV9zdGFsZSIsImluY3JfaW52YWxpZF9jaGlsZHJlbiIsImRlY3JfaW52YWxpZF9jaGlsZHJlbiIsImFkZF9jaGlsZF9lZGdlIiwicGFja2VkX2VkZ2UiLCJuZXdfbWF4IiwibmV3X2NoaWxkX2luZGV4Iiwic3dhcF9jaGlsZHJlbiIsImNoaWxkX2luZGV4MSIsImNoaWxkX2luZGV4MiIsImVkZ2UxIiwibGFzdF9jaGlsZF9lZGdlX2V4biIsImxhc3RfaW5kZXgiLCJyZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biIsInBhY2tlZF9lZGdlX29wdCIsImJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIiwid2lsbF9maXJlX2FsbF9jYWxsYmFja3MiLCJvYnNlcnZhYmlsaXR5X2NoYW5nZSIsImlzX25vd19vYnNlcnZhYmxlIiwicnVuX2VkZ2VfY2FsbGJhY2siLCJ0b3AiLCJpc190b3AiLCJoZWlnaHQiLCJhZGRfbm9kZSIsImN1cnJlbnRfYnJhbmNoIiwic2V0X2N1cnJlbnRfYnJhbmNoIiwidGVzdF9jaGFuZ2UiLCJjdXJyZW50X2JyYW5jaCQwIiwidGVzdF9jaGFuZ2UkMCIsInRlc3RfY2hhbmdlXzAwNyIsInRlc3RfMDA1IiwiY3VycmVudF9icmFuY2hfMDA5IiwiZWxzZV8wMTMiLCJ0aGVuXzAxMSIsImN1cnJlbnRfYnJhbmNoX2Z1biIsInRlc3RfY2hhbmdlX2Z1biIsInhfMDE1IiwibGhzX2NoYW5nZV8wMDciLCJsaHNfMDA1IiwicmhzXzAwOSIsImJlZm9yZSIsImJlZm9yZSQwIiwiY2xvY2tfMDExIiwidmFsdWVfYXRfMDA5IiwiYmVmb3JlXzAwNyIsImF0XzAwNSIsImJlZm9yZV9mdW4iLCJ4XzAxMyIsImFyZzBfMDAyIiwiYXJnMF8wMDQiLCJhcmcwXzAwNiIsImFyZzBfMDA4IiwicmVzMF8wMDkiLCJyZXMwXzAxMyIsImFyZzBfMDE0IiwiYXJnMF8wMTYiLCJyZXMwXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJhcmcwXzAyMCIsInJlczBfMDIxIiwiYXJnMF8wMjIiLCJyZXMwXzAyMyIsImFyZzBfMDI0IiwicmVzMF8wMjUiLCJhcmcxXzAyNyIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMF8wMzIiLCJyZXMwXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3IiwiYXJnMl8wNDAiLCJhcmcxXzAzOSIsInJlczBfMDQxIiwicmVzMV8wNDIiLCJyZXMyXzA0MyIsImFyZzNfMDQ3IiwiYXJnMl8wNDYiLCJhcmcxXzA0NSIsInJlczBfMDQ4IiwicmVzMV8wNDkiLCJyZXMyXzA1MCIsInJlczNfMDUxIiwiYXJnNF8wNTYiLCJhcmczXzA1NSIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJyZXMwXzA1NyIsInJlczFfMDU4IiwicmVzMl8wNTkiLCJyZXMzXzA2MCIsInJlczRfMDYxIiwiYXJnNV8wNjciLCJhcmc0XzA2NiIsImFyZzNfMDY1IiwiYXJnMl8wNjQiLCJhcmcxXzA2MyIsInJlczBfMDY4IiwicmVzMV8wNjkiLCJyZXMyXzA3MCIsInJlczNfMDcxIiwicmVzNF8wNzIiLCJyZXM1XzA3MyIsImFyZzZfMDgwIiwiYXJnNV8wNzkiLCJhcmc0XzA3OCIsImFyZzNfMDc3IiwiYXJnMl8wNzYiLCJhcmcxXzA3NSIsInJlczBfMDgxIiwicmVzMV8wODIiLCJyZXMyXzA4MyIsInJlczNfMDg0IiwicmVzNF8wODUiLCJyZXM1XzA4NiIsInJlczZfMDg3IiwiYXJnN18wOTUiLCJhcmc2XzA5NCIsImFyZzVfMDkzIiwiYXJnNF8wOTIiLCJhcmczXzA5MSIsImFyZzJfMDkwIiwiYXJnMV8wODkiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwicmVzMl8wOTgiLCJyZXMzXzA5OSIsInJlczRfMTAwIiwicmVzNV8xMDEiLCJyZXM2XzEwMiIsInJlczdfMTAzIiwiYXJnOF8xMTIiLCJhcmc3XzExMSIsImFyZzZfMTEwIiwiYXJnNV8xMDkiLCJhcmc0XzEwOCIsImFyZzNfMTA3IiwiYXJnMl8xMDYiLCJhcmcxXzEwNSIsInJlczBfMTEzIiwicmVzMV8xMTQiLCJyZXMyXzExNSIsInJlczNfMTE2IiwicmVzNF8xMTciLCJyZXM1XzExOCIsInJlczZfMTE5IiwicmVzN18xMjAiLCJyZXM4XzEyMSIsImFyZzlfMTMxIiwiYXJnOF8xMzAiLCJhcmc3XzEyOSIsImFyZzZfMTI4IiwiYXJnNV8xMjciLCJhcmc0XzEyNiIsImFyZzNfMTI1IiwiYXJnMl8xMjQiLCJhcmcxXzEyMyIsInJlczBfMTMyIiwicmVzMV8xMzMiLCJyZXMyXzEzNCIsInJlczNfMTM1IiwicmVzNF8xMzYiLCJyZXM1XzEzNyIsInJlczZfMTM4IiwicmVzN18xMzkiLCJyZXM4XzE0MCIsInJlczlfMTQxIiwiYXJnMTBfMTUyIiwiYXJnOV8xNTEiLCJhcmc4XzE1MCIsImFyZzdfMTQ5IiwiYXJnNl8xNDgiLCJhcmc1XzE0NyIsImFyZzRfMTQ2IiwiYXJnM18xNDUiLCJhcmcyXzE0NCIsImFyZzFfMTQzIiwicmVzMF8xNTMiLCJyZXMxXzE1NCIsInJlczJfMTU1IiwicmVzM18xNTYiLCJyZXM0XzE1NyIsInJlczVfMTU4IiwicmVzNl8xNTkiLCJyZXM3XzE2MCIsInJlczhfMTYxIiwicmVzOV8xNjIiLCJyZXMxMF8xNjMiLCJhcmcxMV8xNzUiLCJhcmcxMF8xNzQiLCJhcmc5XzE3MyIsImFyZzhfMTcyIiwiYXJnN18xNzEiLCJhcmc2XzE3MCIsImFyZzVfMTY5IiwiYXJnNF8xNjgiLCJhcmczXzE2NyIsImFyZzJfMTY2IiwiYXJnMV8xNjUiLCJyZXMwXzE3NiIsInJlczFfMTc3IiwicmVzMl8xNzgiLCJyZXMzXzE3OSIsInJlczRfMTgwIiwicmVzNV8xODEiLCJyZXM2XzE4MiIsInJlczdfMTgzIiwicmVzOF8xODQiLCJyZXM5XzE4NSIsInJlczEwXzE4NiIsInJlczExXzE4NyIsImFyZzEyXzIwMCIsImFyZzExXzE5OSIsImFyZzEwXzE5OCIsImFyZzlfMTk3IiwiYXJnOF8xOTYiLCJhcmc3XzE5NSIsImFyZzZfMTk0IiwiYXJnNV8xOTMiLCJhcmc0XzE5MiIsImFyZzNfMTkxIiwiYXJnMl8xOTAiLCJhcmcxXzE4OSIsInJlczBfMjAxIiwicmVzMV8yMDIiLCJyZXMyXzIwMyIsInJlczNfMjA0IiwicmVzNF8yMDUiLCJyZXM1XzIwNiIsInJlczZfMjA3IiwicmVzN18yMDgiLCJyZXM4XzIwOSIsInJlczlfMjEwIiwicmVzMTBfMjExIiwicmVzMTFfMjEyIiwicmVzMTJfMjEzIiwiYXJnMTNfMjI3IiwiYXJnMTJfMjI2IiwiYXJnMTFfMjI1IiwiYXJnMTBfMjI0IiwiYXJnOV8yMjMiLCJhcmc4XzIyMiIsImFyZzdfMjIxIiwiYXJnNl8yMjAiLCJhcmc1XzIxOSIsImFyZzRfMjE4IiwiYXJnM18yMTciLCJhcmcyXzIxNiIsImFyZzFfMjE1IiwicmVzMF8yMjgiLCJyZXMxXzIyOSIsInJlczJfMjMwIiwicmVzM18yMzEiLCJyZXM0XzIzMiIsInJlczVfMjMzIiwicmVzNl8yMzQiLCJyZXM3XzIzNSIsInJlczhfMjM2IiwicmVzOV8yMzciLCJyZXMxMF8yMzgiLCJyZXMxMV8yMzkiLCJyZXMxMl8yNDAiLCJyZXMxM18yNDEiLCJhcmcxNF8yNTYiLCJhcmcxM18yNTUiLCJhcmcxMl8yNTQiLCJhcmcxMV8yNTMiLCJhcmcxMF8yNTIiLCJhcmc5XzI1MSIsImFyZzhfMjUwIiwiYXJnN18yNDkiLCJhcmc2XzI0OCIsImFyZzVfMjQ3IiwiYXJnNF8yNDYiLCJhcmczXzI0NSIsImFyZzJfMjQ0IiwiYXJnMV8yNDMiLCJyZXMwXzI1NyIsInJlczFfMjU4IiwicmVzMl8yNTkiLCJyZXMzXzI2MCIsInJlczRfMjYxIiwicmVzNV8yNjIiLCJyZXM2XzI2MyIsInJlczdfMjY0IiwicmVzOF8yNjUiLCJyZXM5XzI2NiIsInJlczEwXzI2NyIsInJlczExXzI2OCIsInJlczEyXzI2OSIsInJlczEzXzI3MCIsInJlczE0XzI3MSIsImFyZzE1XzI4NyIsImFyZzE0XzI4NiIsImFyZzEzXzI4NSIsImFyZzEyXzI4NCIsImFyZzExXzI4MyIsImFyZzEwXzI4MiIsImFyZzlfMjgxIiwiYXJnOF8yODAiLCJhcmc3XzI3OSIsImFyZzZfMjc4IiwiYXJnNV8yNzciLCJhcmc0XzI3NiIsImFyZzNfMjc1IiwiYXJnMl8yNzQiLCJhcmcxXzI3MyIsInJlczBfMjg4IiwicmVzMV8yODkiLCJyZXMyXzI5MCIsInJlczNfMjkxIiwicmVzNF8yOTIiLCJyZXM1XzI5MyIsInJlczZfMjk0IiwicmVzN18yOTUiLCJyZXM4XzI5NiIsInJlczlfMjk3IiwicmVzMTBfMjk4IiwicmVzMTFfMjk5IiwicmVzMTJfMzAwIiwicmVzMTNfMzAxIiwicmVzMTRfMzAyIiwicmVzMTVfMzAzIiwiYXJyYXlfZm9sZCIsImF0IiwiYXRfaW50ZXJ2YWxzIiwiYmluZCQwIiwiZSIsImZyZWV6ZSIsImlmX3RoZW5fZWxzZSIsImlmX3RoZW5fZWxzZSQwIiwiam9pbiIsImpvaW4kMCIsInNuYXBzaG90Iiwic3RlcF9mdW5jdGlvbl9ub2RlIiwidW5vcmRlcmVkX2FycmF5X2ZvbGQiLCJ2YXIkMCIsImluaXRpYWxfbnVtX2NoaWxkcmVuIiwiYmluZF9yaHNfY2hpbGRfaW5kZXgiLCJmcmVlemVfY2hpbGRfaW5kZXgiLCJpZl9icmFuY2hfY2hpbGRfaW5kZXgiLCJqb2luX3Joc19jaGlsZF9pbmRleCIsIml0ZXJpX2NoaWxkcmVuIiwicmhzIiwiaSQwIiwidGVzdCIsImxocyIsInJocyQwIiwibm9kZTAiLCJjaGlsZCQwIiwiY2hpbGRyZW4kMSIsImkkMSIsIm5vZGUxIiwibm9kZTAkMCIsIm5vZGUyIiwibm9kZTEkMCIsIm5vZGUwJDEiLCJub2RlMyIsIm5vZGUyJDAiLCJub2RlMSQxIiwibm9kZTAkMiIsIm5vZGU0Iiwibm9kZTMkMCIsIm5vZGUyJDEiLCJub2RlMSQyIiwibm9kZTAkMyIsIm5vZGU1Iiwibm9kZTQkMCIsIm5vZGUzJDEiLCJub2RlMiQyIiwibm9kZTEkMyIsIm5vZGUwJDQiLCJub2RlNiIsIm5vZGU1JDAiLCJub2RlNCQxIiwibm9kZTMkMiIsIm5vZGUyJDMiLCJub2RlMSQ0Iiwibm9kZTAkNSIsIm5vZGU3Iiwibm9kZTYkMCIsIm5vZGU1JDEiLCJub2RlNCQyIiwibm9kZTMkMyIsIm5vZGUyJDQiLCJub2RlMSQ1Iiwibm9kZTAkNiIsIm5vZGU4Iiwibm9kZTckMCIsIm5vZGU2JDEiLCJub2RlNSQyIiwibm9kZTQkMyIsIm5vZGUzJDQiLCJub2RlMiQ1Iiwibm9kZTEkNiIsIm5vZGUwJDciLCJub2RlOSIsIm5vZGU4JDAiLCJub2RlNyQxIiwibm9kZTYkMiIsIm5vZGU1JDMiLCJub2RlNCQ0Iiwibm9kZTMkNSIsIm5vZGUyJDYiLCJub2RlMSQ3Iiwibm9kZTAkOCIsIm5vZGUxMCIsIm5vZGU5JDAiLCJub2RlOCQxIiwibm9kZTckMiIsIm5vZGU2JDMiLCJub2RlNSQ0Iiwibm9kZTQkNSIsIm5vZGUzJDYiLCJub2RlMiQ3Iiwibm9kZTEkOCIsIm5vZGUwJDkiLCJub2RlMTEiLCJub2RlMTAkMCIsIm5vZGU5JDEiLCJub2RlOCQyIiwibm9kZTckMyIsIm5vZGU2JDQiLCJub2RlNSQ1Iiwibm9kZTQkNiIsIm5vZGUzJDciLCJub2RlMiQ4Iiwibm9kZTEkOSIsIm5vZGUwJDEwIiwibm9kZTEyIiwibm9kZTExJDAiLCJub2RlMTAkMSIsIm5vZGU5JDIiLCJub2RlOCQzIiwibm9kZTckNCIsIm5vZGU2JDUiLCJub2RlNSQ2Iiwibm9kZTQkNyIsIm5vZGUzJDgiLCJub2RlMiQ5Iiwibm9kZTEkMTAiLCJub2RlMCQxMSIsIm5vZGUxMyIsIm5vZGUxMiQwIiwibm9kZTExJDEiLCJub2RlMTAkMiIsIm5vZGU5JDMiLCJub2RlOCQ0Iiwibm9kZTckNSIsIm5vZGU2JDYiLCJub2RlNSQ3Iiwibm9kZTQkOCIsIm5vZGUzJDkiLCJub2RlMiQxMCIsIm5vZGUxJDExIiwibm9kZTAkMTIiLCJub2RlMTQiLCJub2RlMTMkMCIsIm5vZGUxMiQxIiwibm9kZTExJDIiLCJub2RlMTAkMyIsIm5vZGU5JDQiLCJub2RlOCQ1Iiwibm9kZTckNiIsIm5vZGU2JDciLCJub2RlNSQ4Iiwibm9kZTQkOSIsIm5vZGUzJDEwIiwibm9kZTIkMTEiLCJub2RlMSQxMiIsIm5vZGUwJDEzIiwic2xvd19nZXRfY2hpbGQiLCJpbmRleCIsImFyZzFfMzA2IiwiYXJnMF8zMDUiLCJyZXMwXzMwNyIsInJlczFfMzA4IiwicG9zJDQiLCJwb3MkMyIsInBvcyQyIiwibXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luIiwic2V0X215X2NoaWxkX2luZGV4X2luX3BhcmVudF9hIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luIiwic2V0X215X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hIiwib2JzZXJ2ZXJzIiwic2V0X29ic2VydmVycyIsInNldF9vbGRfdmFsdWVfb3B0IiwibmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwic2V0X25leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAiLCJzZXRfaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2giLCJuZXh0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X25leHRfaW5fcmVjb21wdXRlX2hlYXAiLCJwcmV2X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X3ByZXZfaW5fcmVjb21wdXRlX2hlYXAiLCJoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAiLCJzZXRfaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIiwic2V0X2hlaWdodCIsIm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwic2V0X25leHRfbm9kZV9pbl9zYW1lX3Njb3BlIiwiY3JlYXRlZF9pbiIsInNldF9jcmVhdGVkX2luIiwicGFyZW50MCIsInNldF9wYXJlbnQwIiwicGFyZW50MV9hbmRfYmV5b25kIiwic2V0X3BhcmVudDFfYW5kX2JleW9uZCIsIm51bV9wYXJlbnRzIiwic2V0X251bV9wYXJlbnRzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyIsInNldF9udW1fb25fdXBkYXRlX2hhbmRsZXJzIiwiY2hhbmdlZF9hdCIsInNldF9jaGFuZ2VkX2F0IiwiY3V0b2ZmIiwic2V0X2N1dG9mZiIsImtpbmQiLCJzZXRfa2luZCIsInZhbHVlX29wdCIsInNldF92YWx1ZV9vcHQiLCJyZWNvbXB1dGVkX2F0Iiwic2V0X3JlY29tcHV0ZWRfYXQiLCJpZCIsIm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbiQwIiwibXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luJDAiLCJvYnNlcnZlcnMkMCIsIm9sZF92YWx1ZV9vcHQkMCIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCQwIiwiaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAkMCIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXAkMCIsInByZXZfaW5fcmVjb21wdXRlX2hlYXAkMCIsImhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCQwIiwiaGVpZ2h0JDAiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZSQwIiwiY3JlYXRlZF9pbiQwIiwicGFyZW50MCQwIiwicGFyZW50MV9hbmRfYmV5b25kJDAiLCJudW1fcGFyZW50cyQwIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVycyQwIiwiY2hhbmdlZF9hdCQwIiwiY3V0b2ZmJDAiLCJraW5kJDAiLCJ2YWx1ZV9vcHQkMCIsInJlY29tcHV0ZWRfYXQkMCIsImlkJDAiLCJzdGF0ZV8wMDUiLCJpZF8wMDMiLCJyZWNvbXB1dGVkX2F0XzAwNyIsInZhbHVlX29wdF8wMDkiLCJraW5kXzAxMSIsImN1dG9mZl8wMTMiLCJjaGFuZ2VkX2F0XzAxNSIsIm51bV9vbl91cGRhdGVfaGFuZGxlcnNfMDE3IiwibnVtX3BhcmVudHNfMDE5IiwicGFyZW50MV9hbmRfYmV5b25kXzAyMSIsInBhcmVudDBfMDIzIiwiY3JlYXRlZF9pbl8wMjUiLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV8wMjciLCJoZWlnaHRfMDI5IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXzAzMSIsInByZXZfaW5fcmVjb21wdXRlX2hlYXBfMDMzIiwibmV4dF9pbl9yZWNvbXB1dGVfaGVhcF8wMzUiLCJoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF8iLCJuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBfMDMiLCJvbGRfdmFsdWVfb3B0XzA0MSIsIm9ic2VydmVyc18wNDMiLCJpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGkiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDQ3IiwiZm9yY2VfbmVjZXNzYXJ5XzA1MyIsInVzZXJfaW5mb18wNTUiLCJjcmVhdGlvbl9iYWNrdHJhY2VfMDU3IiwiYXJnXzA1OCIsImFyZ18wNTYiLCJhcmdfMDU0IiwiYXJnXzA1MiIsImFyZ18wNTAiLCJhcmdfMDQ4IiwiYXJnXzA0NiIsImFyZ18wNDQiLCJhcmdfMDQyIiwiYm5kc18wMDIkNyIsImFyZ18wNDAiLCJibmRzXzAwMiQ4IiwiYXJnXzAzOCIsImJuZHNfMDAyJDkiLCJhcmdfMDM2IiwiYm5kc18wMDIkMTAiLCJhcmdfMDM0IiwiYm5kc18wMDIkMTEiLCJhcmdfMDMyIiwiYm5kc18wMDIkMTIiLCJhcmdfMDMwIiwiYm5kc18wMDIkMTMiLCJhcmdfMDI4IiwiYm5kc18wMDIkMTQiLCJibmRzXzAwMiQxNSIsImJuZHNfMDAyJDE2IiwiYm5kc18wMDIkMTciLCJibmRzXzAwMiQxOCIsImJuZHNfMDAyJDE5IiwiYm5kc18wMDIkMjAiLCJibmRzXzAwMiQyMSIsImJuZHNfMDAyJDIyIiwiYm5kc18wMDIkMjMiLCJibmRzXzAwMiQyNCIsImJuZHNfMDAyJDI1IiwiYm5kc18wMDIkMjYiLCJwYWNrZWRfc2FtZSIsInVzZXJfaW5mbyIsIm90aGVyIiwic2V0X3VzZXJfaW5mbyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXoiLCJhdHRycyIsImVkZ2VfaXNfc3RhbGUiLCJwYXJlbnQiLCJpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGkiLCJpc19zdGFsZSIsImZvcmNlX3N0YWxlIiwiZm9yY2Vfc3RhbGUkMCIsIm5lZWRzX3RvX2JlX2NvbXB1dGVkIiwiaXNfaW5fcmVjb21wdXRlX2hlYXAiLCJpc19pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIiwiZ2V0X3BhcmVudCIsIml0ZXJpX3BhcmVudHMiLCJoYXNfY2hpbGQiLCJoYXMiLCJoYXNfcGFyZW50IiwicGFyZW50JDAiLCJzaG91bGRfYmVfaW52YWxpZGF0ZWQiLCJsaHMkMCIsImZvbGRfb2JzZXJ2ZXJzIiwiYWMiLCJvYnNlcnZlciIsImFfMDYwIiwiYl8wNjEiLCJhXzA3MCIsImJfMDcxIiwicGFyZW50X2luZGV4IiwieCIsImFfMDY4IiwiYl8wNjkiLCJvYnNlcnZlcnNfZnVuIiwic3RhdGUiLCJvYnNlcnZpbmciLCJvbGRfdmFsdWVfb3B0X2Z1biIsIm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcF9mdSIsIm5leHRfaW5fcmVjb21wdXRlX2hlYXBfZnVuIiwicHJldl9pbl9yZWNvbXB1dGVfaGVhcF9mdW4iLCJwcmV2IiwiaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwX2Z1biIsImhlaWdodF9mdW4iLCJuZXh0X25vZGVfaW5fc2FtZV9zY29wZV9mdW4iLCJjcmVhdGVkX2luX2Z1biIsInBhcmVudDBfZnVuIiwiYV8wNjYiLCJiXzA2NyIsInBhcmVudDFfYW5kX2JleW9uZF9mdW4iLCJhXzA2NCIsImJfMDY1IiwibnVtX3BhcmVudHNfZnVuIiwib25fdXBkYXRlX2hhbmRsZXJzIiwibnVtX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJldGEiLCJhXzA2MiIsImJfMDYzIiwiY2hhbmdlZF9hdF9mdW4iLCJjdXRvZmZfZnVuIiwia2luZF9mdW4iLCJ2YWx1ZV9vcHRfZnVuIiwicmVjb21wdXRlZF9hdF9mdW4iLCJpZF9mdW4iLCJ4XzA1OSIsInVuc2FmZV92YWx1ZSIsInZhbHVlX2V4biIsInhfMDcyIiwiZ2V0X2N1dG9mZiIsInNldF9jdXRvZmYkMCIsImlzX2NvbnN0Iiwib25fdXBkYXRlIiwib25fdXBkYXRlX2hhbmRsZXIiLCJydW5fb25fdXBkYXRlX2hhbmRsZXJzIiwicmVzdCQwIiwib25fdXBkYXRlX2hhbmRsZXIkMCIsInIkMCIsInIkMSIsInJlc3QiLCJzZXRfa2luZCQwIiwibWF4X251bV9wYXJlbnRzIiwic2V0X3BhcmVudCIsImxpbmsiLCJhZGRfcGFyZW50IiwibmV3X21heF9udW1fcGFyZW50cyIsIm1heF9udW1fY2hpbGRyZW4iLCJuZXdfbWF4X251bV9jaGlsZHJlbiIsInJlbW92ZV9wYXJlbnQiLCJsYXN0X3BhcmVudF9pbmRleCIsInN3YXBfY2hpbGRyZW5fZXhjZXB0X2luX2tpbmQiLCJjaGlsZDEiLCJjaGlsZDIiLCJpbmRleF9vZl9wYXJlbnRfaW5fY2hpbGQxIiwiaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMiIsInhfMDczIiwiaW52YXJpYW50JDAiLCJpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIiwidHMiLCJzZWVuIiwiaXRlcl9kZXNjZW5kYW50cyIsImFwcGVuZF91c2VyX2luZm9fZ3JhcGh2aXokMCIsInNhdmVfZG90Iiwib3V0Iiwibm9kZV9uYW1lIiwiYmluZF9lZGdlcyIsImRlZmF1bHQkMCIsImZyb20iLCJzYXZlX2RvdF90b19maWxlIiwiZmlsZSIsImZvbGQiLCJwYWNrZWRfbm9kZSIsIml0ZXIiLCJsZW5ndGgiLCJ4XzA3NCIsIm5vZGVzX2J5X2hlaWdodCIsInNldF9ub2Rlc19ieV9oZWlnaHQiLCJoZWlnaHRfbG93ZXJfYm91bmQiLCJzZXRfaGVpZ2h0X2xvd2VyX2JvdW5kIiwic2V0X2xlbmd0aCIsIm5vZGVzX2J5X2hlaWdodCQwIiwiaGVpZ2h0X2xvd2VyX2JvdW5kJDAiLCJsZW5ndGgkMCIsImxlbmd0aF8wMDMiLCJoZWlnaHRfbG93ZXJfYm91bmRfMDA1Iiwibm9kZXNfYnlfaGVpZ2h0XzAwNyIsIm1heF9ub25lbXB0eV9pbmRleCIsImwiLCJtYXhfaGVpZ2h0X2FsbG93ZWQiLCJub2Rlc19ieV9oZWlnaHRfZnVuIiwiaGVpZ2h0X2xvd2VyX2JvdW5kX2Z1biIsImxlbmd0aF9mdW4iLCJhY3R1YWxfbGVuZ3RoIiwiYV8wMDkiLCJiXzAxMCIsImNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQiLCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkIiwic3JjIiwiZHN0Iiwic2V0X3ByZXYiLCJ1bmxpbmsiLCJhZGQiLCJyZW1vdmUiLCJ4XzAxMiIsImluY3JlYXNlX2hlaWdodCIsIm1pbl9oZWlnaHQiLCJyZW1vdmVfbWluIiwibm9kZSQwIiwibm9kZXMiLCJtYXhfaGVpZ2h0X3NlZW4iLCJzZXRfbWF4X2hlaWdodF9zZWVuIiwibWF4X2hlaWdodF9zZWVuJDAiLCJtYXhfaGVpZ2h0X3NlZW5fMDA3Iiwibm9kZXNfYnlfaGVpZ2h0XzAwOSIsImlzX2VtcHR5IiwibWF4X2hlaWdodF9zZWVuX2Z1biIsImNyZWF0ZSQwIiwidl8wMTEiLCJhcmcxXzAxOSIsInZfMDE2IiwicmVzMF8wMjAiLCJ2XzAxNyIsInJlczFfMDIxIiwiZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCIsIm9yaWdpbmFsX2NoaWxkIiwib3JpZ2luYWxfcGFyZW50IiwiYXJnMV8wMjUiLCJ2XzAyMiIsInJlczBfMDI2Iiwidl8wMjMiLCJyZXMxXzAyNyIsImFkanVzdF9oZWlnaHRzIiwicmVjb21wdXRlX2hlYXAiLCJub2RlX29uX3JocyIsImFjdGlvbiIsImFjdGlvbiQwIiwiYWN0aW9uXzAxMCIsIm5leHRfZmlyZWRfMDEyIiwiYm5kc18wMDkiLCJyZXMwXzAwMiIsImFyZzBfMDAzIiwiYXJnMF8wMDUiLCJhcmcwXzAwNyIsInJlczBfMDA4IiwiYm5kc18wMDkkMCIsImFjdGlvbl9mdW4iLCJuZXh0X2luX2FsbCIsInNldF9wcmV2X2luX2FsbCIsIm5leHRfaW5fb2JzZXJ2aW5nIiwic2V0X25leHRfaW5fb2JzZXJ2aW5nIiwicHJldl9pbl9vYnNlcnZpbmciLCJzZXRfcHJldl9pbl9vYnNlcnZpbmciLCJuZXh0X2luX2FsbCQwIiwic2V0X25leHRfaW5fYWxsIiwicHJldl9pbl9hbGwiLCJzZXRfcHJldl9pbl9hbGwkMCIsInNldF9vbl91cGRhdGVfaGFuZGxlcnMiLCJuZXh0X2luX29ic2VydmluZyQwIiwicHJldl9pbl9vYnNlcnZpbmckMCIsIm5leHRfaW5fYWxsJDEiLCJwcmV2X2luX2FsbCQwIiwib25fdXBkYXRlX2hhbmRsZXJzJDAiLCJvYnNlcnZpbmckMCIsInNleHBfb2ZfaW50ZXJuYWxfb2JzZXJ2ZXIiLCJvZl9hXzAwMiIsInN0YXRlXzAwNCIsIm9ic2VydmluZ18wMDYiLCJvbl91cGRhdGVfaGFuZGxlcnNfMDA4IiwicHJldl9pbl9hbGxfMDEwIiwibmV4dF9pbl9hbGxfMDEyIiwicHJldl9pbl9vYnNlcnZpbmdfMDE0IiwibmV4dF9pbl9vYnNlcnZpbmdfMDE2IiwidXNlX2lzX2FsbG93ZWQiLCJzYW1lX2FzX3BhY2tlZCIsIm5leHRfaW5fb2JzZXJ2aW5nX2Z1biIsInByZXZfaW5fb2JzZXJ2aW5nX2Z1biIsIm5leHRfaW5fYWxsX2Z1biIsInByZXZfaW5fYWxsX2Z1biIsIm9uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvYnNlcnZpbmdfZnVuIiwieF8wMjAiLCJ4XzAyMiIsInhfMDIxIiwib25fdXBkYXRlX2V4biIsInhfMDI0IiwicHJldiQwIiwibmV4dCQwIiwieF8wMjUiLCJ4XzAwMiIsIm5hbWVzIiwibmFtZXMkMCIsIm5hbWVzJDEiLCJlcnJvcl9zb3VyY2VfMDk1Iiwic2V4cF9vZl9zdGF0dXMiLCJhcmcxXzAwNCIsInJlczFfMDA2IiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuIiwic2V0X2V4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1IiwiY3VycmVudGx5X3J1bm5pbmdfbm9kZSIsInNldF9jdXJyZW50bHlfcnVubmluZ19ub2RlIiwiZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVuJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlJDAiLCJtYWtlX2NyZWF0b3IiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlX2Z1biIsImNvbXBpbGVfYWNjIiwiY29tcGlsZV9hY2MkMCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZ2VuIiwiY29tcGlsZV9hY2MkMSIsImV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbiQxIiwiYWNjIiwibWFwIiwibWFwX3BvbHkiLCJyZWNvcmQiLCJmb3JfYWxsIiwiZXhpc3RzIiwidG9fbGlzdCIsIml0ZXIkMCIsImZvbGQkMCIsImZvcl9hbGwkMCIsImV4aXN0cyQwIiwidG9fbGlzdCQwIiwibWFwJDAiLCJzZXRfYWxsX211dGFibGVfZmllbGRzIiwicmVjb3JkJDAiLCJjdXJyZW50bHlfcnVubmluZ19ub2RlXzAwOCIsImJuZHNfMDA3IiwiYm5kc18wMDckMCIsInNleHBfb2ZfdCQxIiwibnVtX3Zhcl9zZXRzIiwic2V0X251bV92YXJfc2V0cyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlYyIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQwIiwic2V0X251bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjJDAiLCJudW1fbm9kZXNfcmVjb21wdXRlZCIsInNldF9udW1fbm9kZXNfcmVjb21wdXRlZCIsIm51bV9ub2Rlc19pbnZhbGlkYXRlZCIsInNldF9udW1fbm9kZXNfaW52YWxpZGF0ZWQiLCJudW1fbm9kZXNfY3JlYXRlZCIsInNldF9udW1fbm9kZXNfY3JlYXRlZCIsIm51bV9ub2Rlc19jaGFuZ2VkIiwic2V0X251bV9ub2Rlc19jaGFuZ2VkIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSIsInNldF9udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYSIsIm51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwic2V0X251bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5Iiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSIsInNldF9rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYSIsIndlYWtfaGFzaHRibHMiLCJvbmx5X2luX2RlYnVnIiwic2V0X29ubHlfaW5fZGVidWciLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiIsInNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzIiwibmV3X29ic2VydmVycyIsImZpbmFsaXplZF9vYnNlcnZlcnMiLCJhbGxfb2JzZXJ2ZXJzIiwic2V0X2FsbF9vYnNlcnZlcnMiLCJudW1fYWN0aXZlX29ic2VydmVycyIsInNldF9udW1fYWN0aXZlX29ic2VydmVycyIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5IiwiYWRqdXN0X2hlaWdodHNfaGVhcCIsImN1cnJlbnRfc2NvcGUiLCJzZXRfY3VycmVudF9zY29wZSIsInN0YWJpbGl6YXRpb25fbnVtIiwic2V0X3N0YWJpbGl6YXRpb25fbnVtIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkIiwic3RhdHVzIiwic2V0X3N0YXR1cyIsIm51bV92YXJfc2V0cyQwIiwibnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfJDEiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kMiIsIm51bV9ub2Rlc19yZWNvbXB1dGVkJDAiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWQkMCIsIm51bV9ub2Rlc19jcmVhdGVkJDAiLCJudW1fbm9kZXNfY2hhbmdlZCQwIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSQwIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkkMCIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UkMCIsIndlYWtfaGFzaHRibHMkMCIsIm9ubHlfaW5fZGVidWckMCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnMkMCIsImhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uJDAiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24kMCIsImRpc2FsbG93ZWRfb2JzZXJ2ZXJzJDAiLCJuZXdfb2JzZXJ2ZXJzJDAiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzJDAiLCJhbGxfb2JzZXJ2ZXJzJDAiLCJudW1fYWN0aXZlX29ic2VydmVycyQwIiwicHJvcGFnYXRlX2ludmFsaWRpdHkkMCIsImFkanVzdF9oZWlnaHRzX2hlYXAkMCIsInJlY29tcHV0ZV9oZWFwJDAiLCJjdXJyZW50X3Njb3BlJDAiLCJzdGFiaWxpemF0aW9uX251bSQwIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDAiLCJzdGF0dXMkMCIsIm1ha2VfY3JlYXRvciQwIiwic3RhdHVzX2Z1biIsInN0YWJpbGl6YXRpb25fbnVtX2Z1biIsImN1cnJlbnRfc2NvcGVfZnVuIiwicmVjb21wdXRlX2hlYXBfZnVuIiwiYWRqdXN0X2hlaWdodHNfaGVhcF9mdW4iLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9mdW4iLCJudW1fYWN0aXZlX29ic2VydmVyc19mdW4iLCJhbGxfb2JzZXJ2ZXJzX2Z1biIsImZpbmFsaXplZF9vYnNlcnZlcnNfZnVuIiwibmV3X29ic2VydmVyc19mdW4iLCJkaXNhbGxvd2VkX29ic2VydmVyc19mdW4iLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZnVuIiwiaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25fZnVuIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc19mdW4iLCJvbmx5X2luX2RlYnVnX2Z1biIsIndlYWtfaGFzaHRibHNfZnVuIiwia2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZV9mIiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZnVuIiwibnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeV9mIiwibnVtX25vZGVzX2NoYW5nZWRfZnVuIiwibnVtX25vZGVzX2NyZWF0ZWRfZnVuIiwibnVtX25vZGVzX2ludmFsaWRhdGVkX2Z1biIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2Z1biIsIm51bV92YXJfc2V0c19mdW4iLCJzdGF0dXNfZ2VuIiwiYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkJDEiLCJjb21waWxlX2FjYyQyIiwic3RhYmlsaXphdGlvbl9udW1fZ2VuIiwiY29tcGlsZV9hY2MkMyIsImN1cnJlbnRfc2NvcGVfZ2VuIiwiY29tcGlsZV9hY2MkNCIsInJlY29tcHV0ZV9oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDUiLCJhZGp1c3RfaGVpZ2h0c19oZWFwX2dlbiIsImNvbXBpbGVfYWNjJDYiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV9nZW4iLCJjb21waWxlX2FjYyQ3IiwibnVtX2FjdGl2ZV9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOCIsImFsbF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkOSIsImZpbmFsaXplZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTAiLCJuZXdfb2JzZXJ2ZXJzX2dlbiIsImNvbXBpbGVfYWNjJDExIiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTIiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fZ2VuIiwiY29tcGlsZV9hY2MkMTMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl9nZW4iLCJjb21waWxlX2FjYyQxNCIsInJ1bl9vbl91cGRhdGVfaGFuZGxlcnNfZ2VuIiwiY29tcGlsZV9hY2MkMTUiLCJvbmx5X2luX2RlYnVnX2dlbiIsImNvbXBpbGVfYWNjJDE2Iiwid2Vha19oYXNodGJsc19nZW4iLCJjb21waWxlX2FjYyQxNyIsImtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2VfZyIsImNvbXBpbGVfYWNjJDE4IiwibnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnlfZ2VuIiwiY29tcGlsZV9hY2MkMTkiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5X2ciLCJjb21waWxlX2FjYyQyMCIsIm51bV9ub2Rlc19jaGFuZ2VkX2dlbiIsImNvbXBpbGVfYWNjJDIxIiwibnVtX25vZGVzX2NyZWF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjIiLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfZ2VuIiwiY29tcGlsZV9hY2MkMjMiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9nZW4iLCJjb21waWxlX2FjYyQyNCIsIm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5XyQzIiwiY29tcGlsZV9hY2MkMjUiLCJudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV8kNCIsImNvbXBpbGVfYWNjJDI2IiwibnVtX3Zhcl9zZXRzX2dlbiIsImNyZWF0ZSQxIiwibWFwJDEiLCJpdGVyJDEiLCJmb2xkJDEiLCJtYXBfcG9seSQwIiwiZm9yX2FsbCQxIiwiZXhpc3RzJDEiLCJ0b19saXN0JDEiLCJpdGVyJDIiLCJmb2xkJDIiLCJmb3JfYWxsJDIiLCJleGlzdHMkMiIsInRvX2xpc3QkMiIsIm1hcCQyIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyQwIiwic2V4cF9vZl90JDIiLCJzdGF0dXNfMDE1Iiwic3RhYmlsaXphdGlvbl9udW1fMDE5IiwiY3VycmVudF9zY29wZV8wMjEiLCJwcm9wYWdhdGVfaW52YWxpZGl0eV8wMjciLCJhZGp1c3RfaGVpZ2h0c19oZWFwXzAyNSIsInJlY29tcHV0ZV9oZWFwXzAyMyIsIm51bV9hY3RpdmVfb2JzZXJ2ZXJzXzAyOSIsImFsbF9vYnNlcnZlcnNfMDMxIiwicnVuX29uX3VwZGF0ZV9oYW5kbGVyc18wNDMiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl8wNDEiLCJzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25fMDM5IiwiZGlzYWxsb3dlZF9vYnNlcnZlcnNfMDM3IiwibmV3X29ic2VydmVyc18wMzUiLCJmaW5hbGl6ZWRfb2JzZXJ2ZXJzXzAzMyIsIm9ubHlfaW5fZGVidWdfMDQ1Iiwid2Vha19oYXNodGJsc18wNDciLCJrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlXzAiLCJudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeV8wNTEiLCJudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5XzAiLCJudW1fbm9kZXNfY2hhbmdlZF8wNTUiLCJudW1fbm9kZXNfY3JlYXRlZF8wNTciLCJudW1fbm9kZXNfaW52YWxpZGF0ZWRfMDU5IiwibnVtX25vZGVzX3JlY29tcHV0ZWRfMDYxIiwibnVtX3Zhcl9zZXRzXzA2NyIsImFyZ18wNjgiLCJibmRzXzAxNCIsImFyZ18wNjYiLCJibmRzXzAxNCQwIiwiYXJnXzA2NCIsImJuZHNfMDE0JDEiLCJhcmdfMDYyIiwiYm5kc18wMTQkMiIsImFyZ18wNjAiLCJibmRzXzAxNCQzIiwiYm5kc18wMTQkNCIsImJuZHNfMDE0JDUiLCJibmRzXzAxNCQ2IiwiYm5kc18wMTQkNyIsImJuZHNfMDE0JDgiLCJibmRzXzAxNCQ5IiwiYm5kc18wMTQkMTAiLCJibmRzXzAxNCQxMSIsImJuZHNfMDE0JDEyIiwiYm5kc18wMTQkMTMiLCJibmRzXzAxNCQxNCIsImJuZHNfMDE0JDE1IiwiYm5kc18wMTQkMTYiLCJibmRzXzAxNCQxNyIsImJuZHNfMDE0JDE4IiwiYm5kc18wMTQkMTkiLCJibmRzXzAxNCQyMCIsImJuZHNfMDE0JDIxIiwiYm5kc18wMTQkMjIiLCJibmRzXzAxNCQyMyIsImJuZHNfMDE0JDI0IiwiYm5kc18wMTQkMjUiLCJmaXJlZF9hbGFybV92YWx1ZXMiLCJzZXRfZmlyZWRfYWxhcm1fdmFsdWVzIiwiaGFuZGxlX2ZpcmVkIiwidGltaW5nX3doZWVsIiwiZmlyZWRfYWxhcm1fdmFsdWVzJDAiLCJoYW5kbGVfZmlyZWQkMCIsIm5vdyQwIiwidGltaW5nX3doZWVsJDAiLCJtYWtlX2NyZWF0b3IkMSIsInRpbWluZ193aGVlbF9mdW4iLCJub3dfZnVuIiwiaGFuZGxlX2ZpcmVkX2Z1biIsImZpcmVkX2FsYXJtX3ZhbHVlc19mdW4iLCJ0aW1pbmdfd2hlZWxfZ2VuIiwibm93X2dlbiIsImhhbmRsZV9maXJlZF9nZW4iLCJmaXJlZF9hbGFybV92YWx1ZXNfZ2VuIiwiY3JlYXRlJDIiLCJtYXAkMyIsIml0ZXIkMyIsImZvbGQkMyIsIm1hcF9wb2x5JDEiLCJmb3JfYWxsJDMiLCJleGlzdHMkMyIsInRvX2xpc3QkMyIsIml0ZXIkNCIsImZvbGQkNCIsImZvcl9hbGwkNCIsImV4aXN0cyQ0IiwidG9fbGlzdCQ0IiwibWFwJDQiLCJzZXRfYWxsX211dGFibGVfZmllbGRzJDEiLCJzZXhwX29mX3QkMyIsIm5vd18wNzIiLCJ0aW1pbmdfd2hlZWxfMDcwIiwiZmlyZWRfYWxhcm1fdmFsdWVzXzA3NiIsImFyZ18wNzciLCJibmRzXzA2OSIsImFyZ18wNzUiLCJibmRzXzA2OSQwIiwiYXJnXzA3MyIsImJuZHNfMDY5JDEiLCJhcmdfMDcxIiwiYm5kc18wNjkkMiIsImludmFyaWFudCQxIiwibm93JDEiLCJjbG9jayIsInRpbWluZ193aGVlbF9sZW5ndGgiLCJudW1fc3RhYmlsaXplcyIsIml0ZXJfb2JzZXJ2ZXJzIiwiZGlyZWN0bHlfb2JzZXJ2ZWQiLCJpdGVyX29ic2VydmVyX2Rlc2NlbmRhbnRzIiwidF9vZl9zZXhwIiwic2V4cF8wNzkiLCJmaWVsZF9zZXhwc18wODAiLCJtYXhfbnVtX3BhcmVudHNfMDgxIiwicGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyIiwiZHVwbGljYXRlc18wODUiLCJleHRyYV8wODYiLCJzZXhwXzA3OSQwIiwiZmllbGRfc2V4cHNfMDg5IiwiZmllbGRfbmFtZV8wODciLCJ0YWlsXzA5OSIsImZpZWxkX3NleHBfMDg4JDIiLCJmaWVsZF9zZXhwXzA4OCIsInhfMTAwIiwiZmllbGRfc2V4cF8wODgkMCIsInNleHBfMDk0IiwiYXJnMV8wOTEiLCJhcmcwXzA5MCIsInJlczBfMDkyIiwicmVzMV8wOTMiLCJmdmFsdWVfMDk2IiwiZmllbGRfc2V4cF8wODgkMSIsImZ2YWx1ZV8wOTciLCJwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXIkMCIsIm1heF9udW1fcGFyZW50c18wODIiLCJzZXhwX29mX3QkNCIsIm1heF9udW1fcGFyZW50c18xMDIiLCJibmRzXzEwMSIsImFyZzFfMTA3IiwiYXJnMF8xMDYiLCJyZXMwXzEwOCIsInJlczFfMTA5IiwiYXJnXzEwNSIsImJuZHNfMTAxJDAiLCJhcmdfMTAzIiwiYm5kc18xMDEkMSIsInN0YXRzIiwibnVtX25lY2Vzc2FyeV9ub2RlcyIsIm1heF9udW1fcGFyZW50cyQwIiwibnVtX25vZGVzX2J5X251bV9wYXJlbnRzIiwibnVtX25vZGVzIiwiYW1fc3RhYmlsaXppbmciLCJyYWlzZWRfZXhuIiwiaW52YXJpYW50JDIiLCJpbnRlcm5hbF9vYnNlcnZlciIsInhfMTEwIiwicGFja2VkIiwiZW5zdXJlX25vdF9zdGFiaWxpemluZyIsImFsbG93X2luX3VwZGF0ZV9oYW5kbGVyIiwiYmFja3RyYWNlIiwiYmFja3RyYWNlJDAiLCJiYWNrdHJhY2UkMSIsImFyZzFfMTEyIiwiYXJnMF8xMTEiLCJoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiQxIiwicmVtb3ZlX2NoaWxkcmVuIiwicmVtb3ZlX2NoaWxkIiwiY2hlY2tfaWZfdW5uZWNlc3NhcnkiLCJiZWNhbWVfdW5uZWNlc3NhcnkiLCJwIiwidSIsInJlbW92ZV9hbGFybSIsImludmFsaWRhdGVfbm9kZSIsImludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaCIsInJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMiLCJmaXJzdF9ub2RlX29uX3JocyIsIm5ld19zY29wZSIsInByb3BhZ2F0ZV9pbnZhbGlkaXR5JDEiLCJleHBlcnQiLCJhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2giLCJ3YXNfbmVjZXNzYXJ5IiwieF8xMTUiLCJiZWNhbWVfbmVjZXNzYXJ5IiwicnVuX3dpdGhfc2NvcGUiLCJzY29wZSIsInNhdmVkIiwiZXhuJDAiLCJ3aXRoaW5fc2NvcGUiLCJjaGFuZ2VfY2hpbGQiLCJvbGRfY2hpbGQiLCJuZXdfY2hpbGQiLCJvbGRfY2hpbGQkMCIsImFkZF9hbGFybSIsInJlY29tcHV0ZSIsIm1heWJlX2NoYW5nZV92YWx1ZSIsIm9sZF9yaHMiLCJvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIiwiY29weV9jaGlsZCIsIm9ubHlfZnJlZXplX3doZW4iLCJlbHNlJDAiLCJ0aGVuIiwiZGVzaXJlZF9icmFuY2giLCJtYWluJDEiLCJvbGRfcmhzJDAiLCJyaHMkMSIsInJocyQyIiwibjEiLCJjbG9jayQwIiwiYXQkMCIsImNsb2NrJDEiLCJjaGlsZCQxIiwic3RlcF9mdW5jdGlvbiIsInN0ZXBfZnVuY3Rpb25fdmFsdWUiLCJhdCQxIiwibjIiLCJuMSQwIiwibjMiLCJuMiQwIiwibjEkMSIsImYkMiIsIm40IiwibjMkMCIsIm4yJDEiLCJuMSQyIiwiZiQzIiwibjUiLCJuNCQwIiwibjMkMSIsIm4yJDIiLCJuMSQzIiwiZiQ0IiwibjYiLCJuNSQwIiwibjQkMSIsIm4zJDIiLCJuMiQzIiwibjEkNCIsImYkNSIsIm43IiwibjYkMCIsIm41JDEiLCJuNCQyIiwibjMkMyIsIm4yJDQiLCJuMSQ1IiwiZiQ2IiwibjgiLCJuNyQwIiwibjYkMSIsIm41JDIiLCJuNCQzIiwibjMkNCIsIm4yJDUiLCJuMSQ2IiwiZiQ3IiwibjkiLCJuOCQwIiwibjckMSIsIm42JDIiLCJuNSQzIiwibjQkNCIsIm4zJDUiLCJuMiQ2IiwibjEkNyIsImYkOCIsIm4xMCIsIm45JDAiLCJuOCQxIiwibjckMiIsIm42JDMiLCJuNSQ0IiwibjQkNSIsIm4zJDYiLCJuMiQ3IiwibjEkOCIsImYkOSIsIm4xMSIsIm4xMCQwIiwibjkkMSIsIm44JDIiLCJuNyQzIiwibjYkNCIsIm41JDUiLCJuNCQ2IiwibjMkNyIsIm4yJDgiLCJuMSQ5IiwiZiQxMCIsIm4xMiIsIm4xMSQwIiwibjEwJDEiLCJuOSQyIiwibjgkMyIsIm43JDQiLCJuNiQ1IiwibjUkNiIsIm40JDciLCJuMyQ4IiwibjIkOSIsIm4xJDEwIiwiZiQxMSIsIm4xMyIsIm4xMiQwIiwibjExJDEiLCJuMTAkMiIsIm45JDMiLCJuOCQ0IiwibjckNSIsIm42JDYiLCJuNSQ3IiwibjQkOCIsIm4zJDkiLCJuMiQxMCIsIm4xJDExIiwiZiQxMiIsIm4xNCIsIm4xMyQwIiwibjEyJDEiLCJuMTEkMiIsIm4xMCQzIiwibjkkNCIsIm44JDUiLCJuNyQ2IiwibjYkNyIsIm41JDgiLCJuNCQ5IiwibjMkMTAiLCJuMiQxMSIsIm4xJDEyIiwiZiQxMyIsIm4xNSIsIm4xNCQwIiwibjEzJDEiLCJuMTIkMiIsIm4xMSQzIiwibjEwJDQiLCJuOSQ1IiwibjgkNiIsIm43JDciLCJuNiQ4IiwibjUkOSIsIm40JDEwIiwibjMkMTEiLCJuMiQxMiIsIm4xJDEzIiwiZiQxNCIsImNoaWxkX2luZGV4JDAiLCJ1JDAiLCJjYW5fcmVjb21wdXRlX25vdyIsImIiLCJqIiwicmVjb21wdXRlX2ZpcnN0X25vZGVfdGhhdF9pc19uIiwieF8xMTYiLCJ1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMiLCJkaXNhbGxvd19mdXR1cmVfdXNlIiwiZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyIsIm9ic2VydmVyX2ZpbmFsaXplciIsImNyZWF0ZV9vYnNlcnZlciIsIm9wdCIsInN0aCIsInNob3VsZF9maW5hbGl6ZSIsImFkZF9uZXdfb2JzZXJ2ZXJzIiwib2xkX2FsbF9vYnNlcnZlcnMiLCJvbGRfb2JzZXJ2ZXJzIiwib2JzZXJ2ZXJfdmFsdWVfZXhuIiwieF8xMTciLCJvYnNlcnZlcl92YWx1ZSIsIm5vZGVfb25fdXBkYXRlIiwib2JzZXJ2ZXJfb25fdXBkYXRlX2V4biIsInNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIiwic2V0X3ZhciIsInJlY2xhaW1fc3BhY2VfaW5fd2Vha19oYXNodGJscyIsIndlYWtfaGFzaHRibCIsInN0YWJpbGl6ZV9zdGFydCIsInN0YWJpbGl6ZV9lbmQiLCJtYXRjaCQwIiwibm9kZV91cGRhdGUkMCIsInJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIiwic3RhYmlsaXplIiwic2V4cF9vZl90JDUiLCJkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUiLCJjcmVhdGVfbm9kZV9pbiIsImNyZWF0ZV9ub2RlIiwiY3JlYXRlX25vZGVfdG9wIiwiY3JlYXRlX3ZhciIsInVzZV9jdXJyZW50X3Njb3BlIiwiY29uc3QkMCIsIm1hcCQ1IiwibWFwMiIsImJvdGgiLCJtYXAzIiwibWFwNCIsIm1hcDUiLCJtYXA2IiwibWFwNyIsIm1hcDgiLCJtYXA5IiwibWFwMTAiLCJtYXAxMSIsIm1hcDEyIiwibWFwMTMiLCJtYXAxNCIsIm1hcDE1IiwicHJlc2VydmVfY3V0b2ZmIiwiaW5wdXQiLCJvdXRwdXQiLCJkZXBlbmRfb24iLCJuZWNlc3NhcnlfaWZfYWxpdmUiLCJiaW5kMiIsInYyIiwidjEiLCJiaW5kMyIsInYzIiwiYmluZDQiLCJ2NCIsImlmJDAiLCJsYXp5X2Zyb21fZnVuIiwiZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6IiwibWVtb2l6ZV9mdW5fYnlfa2V5IiwiaGFzaGFibGUiLCJwcm9qZWN0X2tleSIsImluaXRpYWxfc2l6ZSIsInRhYmxlIiwia2V5IiwiYiQwIiwiYWxsIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkIiwibnVtX2ludmFsaWQiLCJhY2N1bSIsIngkMCIsImZfaW52ZXJzZSQwIiwiYXRfbGVhc3Rfa19vZiIsImJvb2xfdG9faW50IiwibnVtX3RydWUiLCJleGlzdHMkNSIsImZvcl9hbGwkNSIsInN1bSIsInplcm8iLCJzdWIiLCJvcHRfc3VtIiwic3VtX2ludCIsInN1bV9mbG9hdCIsInNldF9mcmVlemUiLCJ0aW1lIiwiYWZ0ZXIiLCJzcGFuIiwibmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QiLCJiYXNlIiwidmFsdWVfYXQiLCJpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uIiwiYWR2YW5jZV9jbG9jayIsIm1haW4kMiIsImNyZWF0ZV9jbG9jayIsInRpbWluZ193aGVlbF9jb25maWciLCJzdGFydCIsImNyZWF0ZSQzIiwiQ29uZmlnIiwid2Vha19tZW1vaXplX2Z1bl9ieV9rZXkiLCJleHBlcnRfa2luZF9vZl9ub2RlIiwieF8xMTgiLCJjcmVhdGUkNCIsImN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIiwiY3VycmVudCIsImFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlXyIsInhfMTIwIiwieF8xMTkiLCJhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV8kMCIsInhfMTIyIiwieF8xMjEiLCJtYWtlX3N0YWxlJDAiLCJlX29wdCIsImludmFsaWRhdGUiLCJhZGRfZGVwZW5kZW5jeSIsImRlcCIsInJlbW92ZV9kZXBlbmRlbmN5IiwiZWRnZSIsImVkZ2VfaW5kZXgiLCJsYXN0X2VkZ2UiLCJsYXN0X2VkZ2VfaW5kZXgiLCJvbl9jaGFuZ2UiLCJyZWR1Y2UiLCJyZWR1Y2VyIiwibGV2ZWxfYml0cyIsImNyZWF0ZV9pbnRlcm5hbCIsImRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkIiwic2V4cF9vZl9zdGF0ZV93aXRuZXNzIiwid2l0aGluIiwicGFjayIsInJldHVybiQwIiwibWFwMiQwIiwibWFwMyQwIiwibWFwNCQwIiwibWFwNSQwIiwibWFwNiQwIiwibWFwNyQwIiwibWFwOCQwIiwibWFwOSQwIiwibWFwMTAkMCIsIm1hcDExJDAiLCJtYXAxMiQwIiwibWFwMTMkMCIsIm1hcDE0JDAiLCJtYXAxNSQwIiwiYmluZDIkMCIsImJpbmQzJDAiLCJiaW5kNCQwIiwic3ltYm9sX21hcCIsInN5bWJvbF9iaW5kIiwic3ltYm9sX21hcCQwIiwic3ltYm9sX2JpbmQkMCIsImxhenlfZnJvbV9mdW4kMCIsIm1lbW9pemVfZnVuIiwiYXJyYXlfZm9sZCQwIiwicmVkdWNlX2JhbGFuY2VkIiwicmVwbGFjZSIsInhfMDE3IiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQwIiwiaW5jcl9zdGF0ZSQxIiwiYWxhcm1fcHJlY2lzaW9uIiwiZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnIiwic3RhcnQkMCIsImFsYXJtX3ByZWNpc2lvbiQwIiwid2F0Y2hfbm93IiwiYWR2YW5jZV9jbG9ja19ieSIsImZyZWV6ZSQwIiwid2hlbiIsImRlcGVuZF9vbiQwIiwic3RhYmlsaXplJDAiLCJhbV9zdGFiaWxpemluZyQwIiwib2ZfYV8wMTgiLCJhcmcwXzAxOSIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJub2RlX3ZhbHVlIiwic2V4cF9vZl90JDYiLCJib3RoJDAiLCJ4MSIsIngyIiwibWFwMiQxIiwibWFwMyQxIiwibWFwNCQxIiwibWFwNSQxIiwibWFwNiQxIiwibWFwNyQxIiwibWFwOCQxIiwibWFwOSQxIiwibWFwMTAkMSIsIm1hcDExJDEiLCJtYXAxMiQxIiwibWFwMTMkMSIsIm1hcDE0JDEiLCJtYXAxNSQxIiwiYmluZDIkMSIsImJpbmQzJDEiLCJiaW5kNCQxIiwid2Vha19tZW1vaXplX2Z1biIsImRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSQwIiwicmV0dXJuJDEiLCJ3aXRoaW4kMCIsImNvbnN0JDEiLCJyZXR1cm4kMiIsImFsbCQwIiwibWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJtZW1vaXplX2Z1biQwIiwiYXJyYXlfZm9sZCQxIiwicmVkdWNlX2JhbGFuY2VkJDAiLCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCQwIiwib3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkJDAiLCJzdW0kMCIsIm9wdF9zdW0kMCIsInN1bV9pbnQkMCIsInN1bV9mbG9hdCQwIiwic3RhYmlsaXplJDEiLCJhbV9zdGFiaWxpemluZyQxIiwic2F2ZV9kb3QkMCIsInNhdmVfZG90X3RvX2ZpbGUkMCIsIndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5JDAiLCJ3ZWFrX21lbW9pemVfZnVuJDAiLCJzZXhwX29mX3QkNyIsImludmFyaWFudCQ1Iiwic2V4cF9vZl90JDkiLCJpbnZhcmlhbnQkNiIsInNleHBfb2ZfdCQxMSIsInNleHBfb2ZfdCQxMiIsImludmFyaWFudCQ3Iiwib25fdXBkYXRlX2V4biQwIiwiZGlzYWxsb3dfZnV0dXJlX3VzZSQxIiwidmFsdWUkMSIsInNleHBfb2ZfdCQxMyIsImludmFyaWFudCQ4Iiwic2V4cF9vZl90JDE0Iiwic2V4cF9vZl90JDE1Iiwid2l0aF9vbGQiLCJpIiwiZiIsIm9sZCIsImEiLCJiIiwidW5vcmRlcmVkX2ZvbGQiLCJvcHQiLCJ1cGRhdGUiLCJzcGVjaWFsaXplZF9pbml0aWFsIiwibWFwIiwiaW5pdCIsImFkZCIsInJlbW92ZSIsInN0aCIsImRhdGFfZXF1YWwiLCJzdGgkMCIsInJldmVydF90b19pbml0X3doZW5fZW1wdHkiLCJkZWZhdWx0JDAiLCJrZXkiLCJvbGRfZGF0YSIsIm5ld19kYXRhIiwiYWNjIiwidXBkYXRlJDAiLCJuZXdfaW4iLCJpbml0aWFsIiwib2xkX291dCIsIm9sZF9pbiIsImNoYW5nZSIsIm5ldyQwIiwib2xkJDAiLCJuZXckMSIsInVub3JkZXJlZF9mb2xkX25lc3RlZF9tYXBzIiwiaW5jcl9tYXAiLCJ1cGRhdGUkMSIsIm91dGVyX2tleSIsImlubmVyX2tleSIsImlubmVyX21hcCIsImRhdGEiLCJvbGRfaW5uZXJfbWFwIiwibmV3X2lubmVyX21hcCIsImRpZmYiLCJkYXRhX3JlbW92ZWQiLCJkYXRhX2FkZGVkIiwid2l0aF9jb21wYXJhdG9yIiwiZ2V0X2NvbXBhcmF0b3IiLCJ4Iiwid2l0aF9jb21wYXJhdG9yJDAiLCJvZl9zZXQiLCJzZXQiLCJjb21wYXJhdG9yIiwib2xkX2lucHV0Iiwib2xkX291dHB1dCIsIm5ld19pbnB1dCIsIm91dHB1dCIsImsiLCJrJDAiLCJuZXdfb3V0cHV0IiwiZ2VuZXJpY19tYXBpIiwid2l0bmVzcyIsImlucHV0IiwicmVzIiwib3V0cHV0X2RhdGEiLCJtYXBpIiwiZmlsdGVyX21hcGkiLCJmaWx0ZXJfbWFwIiwid2l0aF9vbGQyIiwiaTEiLCJpMiIsImExIiwiYTIiLCJtYXBpX2NvdW50IiwibmV3X2tleSIsIm4iLCJwcmV2X2tleSIsIm1hcF9jb3VudCIsIm1pbl9oZWxwZXIiLCJtaW4iLCJtYXhfaGVscGVyIiwibWF4IiwiYm91bmRzX2hlbHBlciIsIm1hcGlfbWluIiwibWFwaV9tYXgiLCJtYXBpX2JvdW5kcyIsIm1hcGlfbW4iLCJtYXBfbWF4IiwibWluX3ZhbHVlIiwibWF4X3ZhbHVlIiwibWFwX2JvdW5kcyIsInZhbHVlX2JvdW5kcyIsIm1lcmdlIiwibGVmdF9tYXAiLCJyaWdodF9tYXAiLCJkYXRhX2VxdWFsX2xlZnQiLCJkYXRhX2VxdWFsX3JpZ2h0IiwibmV3X2xlZnRfbWFwIiwibmV3X3JpZ2h0X21hcCIsIm9sZF9yaWdodF9tYXAiLCJvbGRfbGVmdF9tYXAiLCJvbGRfbGVmdF9tYXAkMCIsImxlZnRfZGlmZiIsInJpZ2h0X2RpZmYiLCJkaWZmX2VsZW1lbnQiLCJyaWdodF9rZXkiLCJsZWZ0X2tleSIsImtleSQwIiwicmlnaHRfZGF0YV9vcHQkMCIsImxlZnRfZGF0YV9vcHQiLCJyaWdodF9kaWZmJDAiLCJsZWZ0X2RpZmYkMCIsInJpZ2h0X2RhdGFfb3B0JDIiLCJsZWZ0X2RhdGFfb3B0JDAiLCJ5Iiwib3V0cHV0X2RhdGFfb3B0IiwieSQwIiwiZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvciIsImN1dG9mZiIsImluY3JlbWVudGFsX3N0YXRlIiwiZW1wdHlfbWFwIiwicHJldl9tYXAiLCJwcmV2X25vZGVzIiwicmVzdWx0Iiwib25faW5uZXJfY2hhbmdlIiwibGhzX2NoYW5nZSIsIm5vZGVzIiwiY2hhbmdlZCIsImRlcCIsIm5vZGUiLCJub2RlcyQwIiwibm9kZSQwIiwibm9kZSQxIiwiYyIsInVzZXJfZnVuY3Rpb25fZGVwIiwibmV3X25vZGVzIiwiZmlsdGVyX21hcGkkMCIsIm1hcGkkMCIsIm1hcCQwIiwiZmlsdGVyX21hcCQwIiwibWVyZ2UkMCIsIm1hcDEiLCJtYXAyIiwidW56aXBfbWFwaSIsImxlZnRfcmVzdWx0X2VxdWFsIiwicmlnaHRfcmVzdWx0X2VxdWFsIiwicGFpciIsImRhdGFfZXF1YWwkMCIsImxlZnRfcmVzdWx0X2VxdWFsJDAiLCJzdGgkMSIsInJpZ2h0X3Jlc3VsdF9lcXVhbCQwIiwibGVmdF9hY2MiLCJsZWZ0X3Jlc3VsdCIsInJpZ2h0X2FjYyIsInJpZ2h0X3Jlc3VsdCIsImwiLCJsZWZ0JDAiLCJyIiwicmlnaHQkMCIsInJpZ2h0IiwibGVmdCIsInByZXYiLCJwcmV2X2IiLCJwcmV2X2EiLCJuZXdfYiIsIm5ld19hIiwiZWxlbWVudCIsImlucHV0X2NoYW5nZSIsInVuemlwIiwidW56aXBfbWFwaSQwIiwicmlnaHRfZGVwIiwibGVmdF9kZXAiLCJyaWdodF9pbmNyIiwibGVmdF9pbmNyIiwibGVmdF91c2VyX2Z1bmN0aW9uX2RlcCIsInJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwIiwia2V5cyIsInBhcnRpdGlvbl9tYXBpIiwiZW1wdHkiLCJzZWNvbmQiLCJmaXJzdCIsImRhdGEkMCIsImRhdGEkMSIsImZsYXR0ZW4iLCJzdGF0ZSIsImluY3IiLCJqb2luIiwibWFwX2luY3IiLCJyZXN1bHRfbWFwIiwib2xkX21hcF9vZl9pbmNycyIsImN1cnJlbnRfZGVwZW5kZW5jaWVzIiwiYWRkX3N1Ym5vZGUiLCJkYXRhX25vZGUiLCJuZXdfZGVwIiwicmVtb3ZlX3N1Ym5vZGUiLCJtYXBfb2ZfaW5jcnMiLCJkYXRhX25vZGUkMCIsIm5ld19kZXBlbmRlbmN5X21hcCIsInNlcGFyYXRlIiwiaW5wdXRfbWFwIiwib3V0cHV0X21hcF9ub2RlIiwibWFrZV9ub2RlX2RlcGVuZF9vbl9pbnB1dF9tYXBfIiwiaW5wdXRfbWFwX2NoYW5nZWQiLCJkZXBlbmRlbmN5IiwicHJldl9pbnB1dF9tYXAiLCJvdXRwdXRfbWFwIiwiZXhwZXJ0X25vZGVzIiwib2xkX25vZGUiLCJzdWJyYW5nZSIsInJhbmdlIiwiY29tcGFyZSIsImVxdWFsIiwibWF5YmVfYm91bmRfZXF1YWwiLCJhXzAwMiIsImJfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJyYW5nZV9pc19lbXB0eSIsIm1pbiQwIiwibWF4JDAiLCJtYXgkMSIsIm1pbiQxIiwicmFuZ2VfaW5jbHVkZXMiLCJyYW5nZSQwIiwiZnJvbV9zY3JhdGNoIiwib2xkX3JhbmdlIiwib2xkX21pbiIsIm9sZF9tYXAiLCJvbGRfbWF4Iiwib2xkX3JlcyIsIm9sZF9tYXgkMCIsInBhcmFtIiwiYXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb24iLCJvdXRzaWRlIiwib3V0c2lkZSQwIiwib3V0c2lkZV9jdXRvZmYiLCJ3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2UiLCJ3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIiwibWFwX2FwcGVuZF9leG4iLCJsb3dlcl9wYXJ0IiwidXBwZXJfcGFydCIsIm9sZF9taW4kMCIsIm9sZF9taW4kMSIsIm9sZF9tYXgkMSIsIndpdGhfbmV3X2tleXNfbm93X2luX3JhbmdlIiwicmVrZXkiLCJvdXRlcl9jb21wYXJhdG9yIiwiaW5kZXhfYnlpIiwiaW5kZXgiLCJpbm5lcl9jb21wYXJhdG9yIiwib3V0ZXJfbWFwIiwiaW5uZXJfbWFwJDAiLCJpbmRleF9ieSIsImlzX2tub3duIiwidG9fb3B0aW9uIiwiZmluZF9rZXlfcmFuZ2VfbGluZWFyIiwiZnJvbSIsInRvIiwibGVuIiwiYmVnaW5fa2V5IiwiZW5kX2tleSIsImZpbmRfa2V5cyIsImZvbGQiLCJzdGFydF9wb3MiLCJhZHZhbmNlX3BvcyIsInBvcyIsImJlZ2luX2tleSQwIiwiZW5kX2tleSQwIiwicmFuayIsImNvbXBhcmVfa2V5Iiwic2FtZV9rZXkiLCJwcm9jZXNzIiwibmV3X21hcCIsIm9sZF9yYW5rIiwib2xkX2tleSIsIm9sZF9yYW5rJDAiLCJ1cHBlcl9ib3VuZCIsImxvd2VyX2JvdW5kIiwidXBwZXJfYm91bmQkMCIsImxvd2VyX2JvdW5kJDAiLCJzdWJyYW5nZSQwIiwiZGlmZl9rZXkiLCJvbGRfcmFuayQxIiwib2xkJDEiLCJzdWJyYW5nZV9ieV9yYW5rIiwiZmluZF9rZXlfcmFuZ2UiLCJlbmRfa2V5X29wdCQwIiwib2xkX3RvIiwib2xkX2Zyb20iLCJmaW5kX29mZnNldCIsImNoYW5nZWRfa2V5IiwicmFuZ2Vfb2Zmc2V0X2JlZ2luIiwicmFuZ2Vfb2Zmc2V0X2VuZCIsImFkanVzdF9hbmRfb2Zmc2V0IiwiYnkkMSIsImtleSQxIiwiYnkkMiIsImJ5IiwiY2xvc2VzdF9kaXIiLCJieSQwIiwib2Zmc2V0X2VuZCIsIm9mZnNldF9iZWdpbiIsIm1hcF9vZmZzZXRfZW5kIiwibWFwX29mZnNldF9iZWdpbiIsImVuZF9rZXlfb3B0JDIiLCJiZWdpbl9rZXlfb3B0IiwibWFwX29mZnNldF9iZWdpbiQwIiwiZW5kX2tleV9vcHQiLCJiZWdpbl9rZXlfb3B0JDAiLCJzeW1ib2wiLCJib3VuZCIsInJldHVybiQwIiwicGF0dGVybl9zeW50YXhfMDA4IiwicGF0dGVybl9zeW50YXhfMDA5IiwibGIiLCJwYXR0ZXJuX3N5bnRheF8wMTAiLCJ1IiwicGF0dGVybl9zeW50YXhfMDExIiwidWIiLCJsZXRfc3ludGF4XzAxNiIsImtleV9yYW5nZSIsInBhdHRlcm5fc3ludGF4XzAxMiIsImwkMCIsInBhdHRlcm5fc3ludGF4XzAxMyIsImxiJDAiLCJsZXRfc3ludGF4XzAyMCIsInBhdHRlcm5fc3ludGF4XzAxNCIsInUkMCIsInBhdHRlcm5fc3ludGF4XzAxNSIsInViJDAiLCJsZXRfc3ludGF4XzAyMyIsInRyYW5zcG9zZSIsImsyX2NvbXBhcmF0b3IiLCJtIiwiazFfY29tcGFyYXRvciIsImsxIiwiazIiLCJ2YWx1ZSIsImFjY19pbm5lciIsImFjY19pbm5lciQwIiwiY29sbGFwc2VfYnkiLCJtZXJnZV9rZXlzIiwiY29sbGFwc2UiLCJpbm5lcl9jb21wYXJhdG9yJDAiLCJleHBhbmQiLCJjb3VudGkiLCJjb3VudCIsImV4aXN0c2kiLCJleGlzdHMiLCJzdW0iLCJHcm91cCIsInYiLCJmb3JfYWxsaSIsImZvcl9hbGwiLCJjcmVhdGUiLCJzZWxmIiwic2VsZiQwIiwiY2hhbmdlZF92YWx1ZSIsImVudHJpZXMiLCJlbnRyeSIsIm5ld192YWx1ZSIsInVwZGF0ZXJfbm9kZSIsImZpbmQiLCJ0IiwiaXNfbm93X29ic2VydmFibGUiLCJlbnRyeSQwIiwiY3VycmVudF9lbnRyaWVzIiwiaXNfbGlua2VkIiwib3RoZXJfZW50cmllcyIsIm90aGVyX2VudHJ5IiwibmV3X2VudHJpZXMiLCJzZXhwX29mX3QiLCJzZXhwX29mX2tleSIsInNleHBfb2ZfdmFsdWUiLCJhY3R1YWxfdmFsdWUiLCJlbnRyaWVzJDAiLCJhY3R1YWxfdmFsdWUkMCIsIngkMCIsInNhdmVkX3ZhbHVlIiwibWF0Y2gkMiIsIm1hdGNoJDMiLCJ2JDAiLCJtYXRjaCQ0IiwidiQxIiwibWF0Y2gkNSIsInYkMiIsIm1hdGNoJDAiLCJpbmZvX3Blcl9rZXkiLCJmbGF0dGVuJDAiLCJoYXNodGJsX3NpemUiLCJzZXR1cF9nZW5lcmF0b3IiLCJoYXNoYWJsZSIsImNvbXB1dGVfb3V0cHV0IiwibWFrZV9pbnB1dF9ub2RlIiwibmVjZXNzYXJ5X2RlcGVuZGVuY2llcyIsIm1ha2Vfa2V5X3N0YWxlIiwia2V5IiwiaW5wdXRfbm9kZSIsImlucHV0X2RlcCIsIm91dHB1dF9ub2RlIiwiaXNfbm93X29ic2VydmFibGUiLCJsIiwibCQwIiwib3V0cHV0X25vZGUkMCIsInVwZGF0ZV9vbmUiLCJpbnB1dCIsInNlbGVjdGVkIiwibWFrZV9zdGFsZSIsImlucCIsInNlbGVjdF9vbmUiLCJIIiwia2V5JDAiLCJzZWxlY3Rfb25lJDAiLCJoIiwic2VsZWN0X29uZV92YWx1ZSIsImRlZmF1bHQkMCIsImRhdGEiLCJzZWxlY3Rfb25lX3ZhbHVlJDAiLCJzZWxlY3RfbWFueV92YWx1ZXMiLCJzZWxlY3RfbWFueSIsIm9sZF9zZXQiLCJtYXJrIiwibmFtZSIsIm1lYXN1cmUiLCJzdGFydCIsImVuZCIsInJlY29yZCIsImYiLCJiZWZvcmVfbmFtZSIsImFmdGVyX25hbWUiLCJyZXMiLCJjbGVhcl9tYXJrcyIsImNsZWFyX21lYXN1cmVzIiwiY3JlYXRlIiwiZmlsZW5hbWUiLCJtaW1ldHlwZSIsImNvbnRlbnRzIiwic2V4cF9vZl90IiwidCIsInRyaWdnZXIiLCJhIiwiY29udGVudHNfYmlnc3RyIiwiYmxvYiIsInVybCIsImNyZWF0ZSQwIiwib3B0IiwiZ2V0X2Rvd25sb2FkIiwiYnV0dG9uX3RleHQiLCJzdGgiLCJlbmFibGVkIiwic3RoJDAiLCJvbl9jbGljayIsInN0aCQxIiwiZXh0cmFfYXR0cnMiLCJ0cmlnZ2VyX2Nzdl9kb3dubG9hZCIsImV2IiwiZW5hYmxlZF9kaXNhYmxlZCIsImF0dHJzIiwiY2xvY2siLCJleHRyYSIsInIiLCJvbl9kaXNwbGF5IiwidmlldyIsInVwZGF0ZV92aXNpYmlsaXR5IiwiYXBwbHlfYWN0aW9uIiwiY3JlYXRlX3dpdGhfZXh0cmEiLCJtb2RlbCIsImFwcGx5X2FjdGlvbiQwIiwidXBkYXRlX3Zpc2liaWxpdHkkMCIsIm9uX2Rpc3BsYXkkMCIsImNyZWF0ZSIsImVycm9yX3NvdXJjZV8wMjIiLCJuYW1lcyIsImVycm9yX3NvdXJjZV8wNDAiLCJkZXNjcmlwdGlvbnMiLCJ0X29mX3NleHAiLCJvZl9hXzAwMSIsInNleHBfMDAzIiwiZmllbGRfc2V4cHNfMDA0IiwidG9wXzAwNSIsImxlZnRfMDA3IiwiYm90dG9tXzAwOSIsInJpZ2h0XzAxMSIsImR1cGxpY2F0ZXNfMDEzIiwiZXh0cmFfMDE0Iiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxNyIsImZpZWxkX25hbWVfMDE1IiwidGFpbF8wMjQiLCJmaWVsZF9zZXhwXzAxNiQ0IiwiZmllbGRfc2V4cF8wMTYiLCJ4XzAyNSIsImZpZWxkX3NleHBfMDE2JDAiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTYkMSIsImZ2YWx1ZV8wMTgiLCJmaWVsZF9zZXhwXzAxNiQyIiwiZnZhbHVlXzAyMCIsImZpZWxkX3NleHBfMDE2JDMiLCJmdmFsdWVfMDE5IiwicmlnaHRfMDEyIiwiYm90dG9tXzAxMCIsImxlZnRfMDA4IiwidG9wXzAwNiIsInNleHBfb2ZfdCIsIm9mX2FfMDI2IiwicmlnaHRfMDM0IiwiYm90dG9tXzAzMiIsImxlZnRfMDMwIiwidG9wXzAyOCIsImFyZ18wMzUiLCJibmRzXzAyNyIsImFyZ18wMzMiLCJibmRzXzAyNyQwIiwiYXJnXzAzMSIsImJuZHNfMDI3JDEiLCJhcmdfMDI5IiwiYm5kc18wMjckMiIsImdyb3VwIiwiYmluX3NoYXBlX3QiLCJhIiwiYmluX3NpemVfdCIsInNpemVfb2ZfYSIsInY0IiwidjMiLCJ2MiIsInYxIiwic2l6ZSIsInNpemUkMCIsInNpemUkMSIsImJpbl93cml0ZV90Iiwid3JpdGVfYSIsImJ1ZiIsInBvcyIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsImJpbl93cml0ZXJfdCIsImJpbl93cml0ZXJfYSIsInYiLCJiaW5fcmVhZF90Iiwib2ZfYSIsInBvc19yZWYiLCJ2aW50IiwiYmluX3JlYWRfdCQwIiwidl90b3AiLCJ2X2xlZnQiLCJ2X2JvdHRvbSIsInZfcmlnaHQiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJjbXBfYSIsImFfMDM2IiwiYl8wMzciLCJuIiwibiQwIiwibiQxIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwidG9wIiwicmlnaHQkMCIsImJvdHRvbSQwIiwibGVmdCQwIiwidG9wJDAiLCJtYWtlX2NyZWF0b3IiLCJ0b3BfZnVuIiwibGVmdF9mdW4iLCJib3R0b21fZnVuIiwicmlnaHRfZnVuIiwiY29tcGlsZV9hY2MiLCJjb21waWxlX2FjYyQwIiwidG9wX2dlbiIsImNvbXBpbGVfYWNjJDEiLCJsZWZ0X2dlbiIsImNvbXBpbGVfYWNjJDIiLCJib3R0b21fZ2VuIiwiY29tcGlsZV9hY2MkMyIsInJpZ2h0X2dlbiIsImFjYyIsIm1hcCIsIml0ZXIiLCJmb2xkIiwiaW5pdCIsIm1hcF9wb2x5IiwicmVjb3JkIiwiZm9yX2FsbCIsImV4aXN0cyIsInRvX2xpc3QiLCJpdGVyJDAiLCJmb2xkJDAiLCJmb3JfYWxsJDAiLCJleGlzdHMkMCIsInRvX2xpc3QkMCIsIm1hcCQwIiwic2V0X2FsbF9tdXRhYmxlX2ZpZWxkcyIsIm1hcCQxIiwidCIsImYiLCJpbnRfaGVpZ2h0IiwiaW50X3dpZHRoIiwiZmxvYXRfaGVpZ2h0IiwiZmxvYXRfd2lkdGgiLCJyb3VuZF9mbG9hdF9yZWN0Iiwib3B0Iiwic3RoIiwicm91bmQiLCJyb3dzX29yX2NvbHVtbnNfb2Zfc2V4cCIsInNleHBfMDQxIiwic2V4cF9vZl9yb3dzX29yX2NvbHVtbnMiLCJncm91cCQwIiwiYmluX3NoYXBlX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9zaXplX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl93cml0ZV9yb3dzX29yX2NvbHVtbnMiLCJiaW5fd3JpdGVyX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyIsImJpbl9yZWFkX3Jvd3Nfb3JfY29sdW1ucyQwIiwiYmluX3JlYWRlcl9yb3dzX29yX2NvbHVtbnMiLCJiaW5fcm93c19vcl9jb2x1bW5zIiwicm93cyIsImNvbHVtbnMiLCJpc19yb3dzIiwiaXNfY29sdW1ucyIsInJvd3NfdmFsIiwiY29sdW1uc192YWwiLCJyb3dzJDAiLCJjb2x1bW5zJDAiLCJmb2xkJDEiLCJyb3dzX2Z1biIsImNvbHVtbnNfZnVuIiwiaXRlciQxIiwibWFwJDIiLCJtYWtlX21hdGNoZXIiLCJyb3dzX2dlbiIsImNvbHVtbnNfZ2VuIiwidG9fcmFuayIsInRvX25hbWUiLCJjb21wYXJlX3Jvd3Nfb3JfY29sdW1ucyIsImlubmVySGVpZ2h0IiwiaW5uZXJXaWR0aCIsImVsZW1lbnRfaXNfaW5fdmlld3BvcnQiLCJlbHQiLCJzY3JvbGwiLCJpZCIsInZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCIsInZpZXdwb3J0X3JlY3QiLCJjbGllbnRfcmVjdF9vZl9lbGVtZW50IiwiYm91bmRpbmdfcmVjdCIsImNsaWVudF9yZWN0IiwiZmluZF92aXNpYmxlX3JhbmdlIiwibGVuZ3RoIiwibnRoX2VsZW1lbnRfaWQiLCJsYXlvdXQiLCJlbGVtZW50X3NlYXJjaCIsInNlYXJjaF9ieSIsIm1vZGUiLCJ4IiwibnRoX2VsZW1lbnQiLCJmaXJzdCIsImxhc3QiLCJnZXQiLCJpc19hc2NlbmRpbmciLCJsZW5ndGgkMCIsInZpZXdwb3J0X3JlY3QkMCIsInRhcmdldCIsInRhcmdldCQwIiwic2VhcmNoX2J5JDAiLCJnZXRfc2Nyb2xsX2NvbnRhaW5lcl9qc19leHByIiwiZ2V0X3Njcm9sbF9jb250YWluZXIiLCJlbCIsImZpbGVuYW1lIiwicHJpbnRfZXJyb3JmIiwiZm10IiwicyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwiY2FsbGJhY2siLCJjdXJyZW50X2NvbnRleHQiLCJyZXF1ZXN0X2lkcyIsImNhbGxiYWNrJDAiLCJzZXRfdGltZW91dF9pZCIsImFuaW1hdGlvbl9mcmFtZV9pZCIsImFuaW1hdGlvbl9jYWxsYmFjayIsInRpbWVvdXRfY2FsbGJhY2siLCJhc19mb2N1c2FibGUiLCJtYXJrX2RpcnR5IiwiaXNfZGlydHkiLCJ4XzAwMiIsInhfMDAzIiwiYV8wMDQiLCJiXzAwNSIsImFfMDA2IiwiYl8wMDciLCJzZXRfbG9nZ2luZ19maWx0ZXIiLCJsb2dnaW5nX2ZpbHRlciIsImdsb2JhbF9pc19pbml0aWFsaXplZCIsImFwcF9zdGF0ZXMiLCJzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCIsInN0cmluZ3MiLCJzdHIiLCJtdWx0aV9saW5lX3N0cmluZ19saXN0IiwiZ2V0X3RhZ19uYW1lIiwibm9kZSIsImUiLCJzdGFydF9ib25zYWkiLCJiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCIsImluaXRpYWxfbW9kZWwiLCJkZWJ1ZyIsInN0aCQwIiwic3RvcCIsInN0aCQxIiwibmFtZWRfbG9nZ2luZ19maWx0ZXJzIiwibW9kZWxfdiIsIm1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YiLCJtb2RlbF9mcm9tX2xhc3RfZGlzcGxheSIsIm9sZF92YWx1ZSIsIm5ld192YWx1ZSIsImN1dG9mZiIsImFjdGlvbl9xdWV1ZSIsImhhbmRsZSIsImFjdGlvbiIsInZpc2liaWxpdHkiLCJ2aWV3cG9ydF9jaGFuZ2VkIiwib2JzIiwiZmV0Y2giLCJnZXRfdmlldyIsIm5hbWVkX2xvZ2dpbmdfZmlsdGVycyQwIiwiZmlsdGVyX25hbWVzIiwid2l0aF9hcHBfaWRfb3B0IiwidXBkYXRlX3N0YXRlIiwiYXBwX2lkX29wdCIsImFwcF9pZF9vcHQkMCIsImFwcF9pZCIsInN0YXRlIiwidXBkYXRlX2xvZ2dpbmdfZmlsdGVyIiwidXBkYXRlX3Nob3VsZF9wcm9maWxlIiwic2hvdWxkX3Byb2ZpbGUiLCJ1cGRhdGVfc2hvdWxkX2RlYnVnIiwic2hvdWxkX2RlYnVnIiwiYmxhbmdfc3RyIiwiYmxhbmdfc3RyJDAiLCJhcHBfc3RhdGUiLCJibGFuZyIsImludmFsaWRfbmFtZXMiLCJuYW1lIiwiZmlsdGVyIiwiZmlsdGVyJDAiLCJhY3Rpb25fc2V4cCIsImNvbnRlbnRzIiwiYXBwX2luaXRfbWVzc2FnZSIsInNob3VsZF9kZWJ1ZyQwIiwic2hvdWxkX3Byb2ZpbGUkMCIsImh0bWwiLCJodG1sX2RvbSIsInBhcmVudCIsImNhbGxfdmlld3BvcnRfY2hhbmdlZF9vbl9ldmVudCIsImV2ZW50X25hbWUiLCJ3aGVyZSIsInByZXZfaHRtbCIsInByZXZfZWx0IiwicmVmb2N1c19yb290X2VsZW1lbnQiLCJlbGVtZW50IiwidGltZXJfc3RhcnQiLCJwcm9maWxlIiwidGltZXJfc3RvcCIsImJlZm9yZSIsImFmdGVyIiwicmVsYXRlZF90YXJnZXQiLCJzYWZlX2ZpbHRlciIsInNob3VsZF9sb2ciLCJlcnIiLCJjdXN0b21fcHJpbnRmXzAxMCIsImN1c3RvbV9wcmludGZfMDEyIiwibmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIiwicGVyZm9ybV91cGRhdGUiLCJkYXRlIiwibm93IiwibmV3X21vZGVsIiwic2hvdWxkX2xvZ19hY3Rpb24iLCJuZXdfbW9kZWwkMCIsImFkZF9uZXdfYXR0cnMiLCJhdHRycyIsImh0bWwkMCIsInBhdGNoIiwib2xkX3RhZ19uYW1lIiwibmV3X3RhZ19uYW1lIiwidGFnc190aGVfc2FtZSIsInN0YXJ0IiwiYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24iLCJvbGRfbW9kZWwiLCJpbmplY3QiLCJjb21wb25lbnQiLCJzY2hlZHVsZV9ldmVudCIsInNjaGVkdWxlX2FjdGlvbiIsImVycm9yX3NvdXJjZV8wMTQiLCJpbnZhcmlhbnQiLCJ0Iiwib2Zfc3RyaW5nIiwicyIsInRvX3N0cmluZyIsImVxdWFsIiwiY21wX2EiLCJhXzAwMSIsImJfMDAyIiwiYV8wMDUiLCJiXzAwNiIsImFfMDA5IiwiYl8wMTAiLCJ1cGRhdGVfb2Zfc2V4cCIsIm9mX2FfMDExIiwic2V4cF8wMTciLCJmaWVsZF9zZXhwc18wMTYiLCJpbnB1dF8wMTkiLCJ2YWx1ZV8wMjEiLCJkdXBsaWNhdGVzXzAyMyIsImV4dHJhXzAyNCIsInNleHBfMDE3JDAiLCJmaWVsZF9zZXhwc18wMjciLCJmaWVsZF9uYW1lXzAyNSIsInRhaWxfMDMxIiwiZmllbGRfc2V4cF8wMjYkMiIsImZpZWxkX3NleHBfMDI2IiwieF8wMzIiLCJmaWVsZF9zZXhwXzAyNiQwIiwiZnZhbHVlXzAyOCIsImZpZWxkX3NleHBfMDI2JDEiLCJmdmFsdWVfMDI5IiwidmFsdWVfMDIyIiwiaW5wdXRfMDIwIiwiZmllbGRfc2V4cHNfMDMzIiwiaW5wdXRfMDM2IiwibGFzdF92YWxpZF8wMzgiLCJlcnJvcl8wNDAiLCJkdXBsaWNhdGVzXzA0MiIsImV4dHJhXzA0MyIsInNleHBfMDM0IiwiZmllbGRfc2V4cHNfMDQ2IiwiZmllbGRfbmFtZV8wNDQiLCJ0YWlsXzA1MSIsImZpZWxkX3NleHBfMDQ1JDMiLCJmaWVsZF9zZXhwXzA0NSIsInhfMDUyIiwiZmllbGRfc2V4cF8wNDUkMCIsImZ2YWx1ZV8wNDgiLCJmaWVsZF9zZXhwXzA0NSQxIiwiZnZhbHVlXzA0OSIsImZpZWxkX3NleHBfMDQ1JDIiLCJmdmFsdWVfMDQ3IiwiZXJyb3JfMDQxIiwibGFzdF92YWxpZF8wMzkiLCJpbnB1dF8wMzciLCJzZXhwX29mX3VwZGF0ZSIsIm9mX2FfMDU0IiwidmFsdWVfMDU4IiwiaW5wdXRfMDU2IiwiYXJnXzA1OSIsImJuZHNfMDU1IiwiYXJnXzA1NyIsImJuZHNfMDU1JDAiLCJlcnJvcl8wNjUiLCJsYXN0X3ZhbGlkXzA2MyIsImlucHV0XzA2MSIsImFyZ18wNjYiLCJibmRzXzA2MCIsImFyZ18wNjQiLCJibmRzXzA2MCQwIiwiYXJnXzA2MiIsImJuZHNfMDYwJDEiLCJncm91cCIsImJpbl9zaGFwZV90IiwiYSIsImJpbl9zaXplX3QiLCJzaXplX29mX2EiLCJ2MiIsInYxIiwic2l6ZSIsInYzIiwidjIkMCIsInYxJDAiLCJzaXplJDAiLCJzaXplJDEiLCJiaW5fd3JpdGVfdCIsIndyaXRlX2EiLCJidWYiLCJwb3MiLCJwb3MkMCIsInBvcyQxIiwicG9zJDIiLCJwb3MkMyIsInBvcyQ0IiwiYmluX3dyaXRlcl90IiwiYmluX3dyaXRlcl9hIiwidiIsImJpbl9yZWFkX3QiLCJvZl9hIiwicG9zX3JlZiIsInZpbnQiLCJiaW5fcmVhZF90JDAiLCJ2X2lucHV0Iiwidl92YWx1ZSIsInZfaW5wdXQkMCIsInZfbGFzdF92YWxpZCIsInZfZXJyb3IiLCJiaW5fcmVhZGVyX3QiLCJiaW5fcmVhZGVyX2EiLCJ2dGFnIiwiYmluX3QiLCJiaW5fYSIsImNvbXBhcmUiLCJhXzA2OCIsImJfMDY5IiwiYV8wNzIiLCJiXzA3MyIsIm4iLCJuJDAiLCJhXzA3NiIsImJfMDc3IiwibiQxIiwiZXF1YWxfdXBkYXRlIiwiYV8wNzgiLCJiXzA3OSIsImFfMDgwIiwiYl8wODEiLCJncm91cCQwIiwiYmluX3NoYXBlX3VwZGF0ZSIsImJpbl9zaXplX3VwZGF0ZSIsImJpbl93cml0ZV91cGRhdGUiLCJiaW5fd3JpdGVyX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSIsImJpbl9yZWFkX3VwZGF0ZSQwIiwiYmluX3JlYWRlcl91cGRhdGUiLCJiaW5fdXBkYXRlIiwiY29tcGFyZV91cGRhdGUiLCJhXzA4NyIsImJfMDg4IiwiYV8wODkiLCJiXzA5MCIsImxpZnQiLCJNIiwiaW5wdXQkMSIsInZhbHVlIiwiaW5wdXQiLCJpbnB1dCQwIiwiZXhuJDAiLCJleG4iLCJpbml0aWFsX2VtcHR5IiwicmV0dXJuJDAiLCJnZXRfY3VycmVudCIsImdldF9sYXN0IiwibGFzdF92YWxpZCIsImdldF9lcnJvciIsImVycm9yIiwiaXNfaW5pdGlhbF9lbXB0eSIsInVwZGF0ZSIsIm9sZCIsIm5ldyQwIiwib2xkJDAiLCJlcnJvciQwIiwib2Zfc3RyaW5nJDAiLCJ0b19zdHJpbmckMCIsIm1heWJlX2Rpc2FibGVkIiwiZGlzYWJsZWQiLCJhdHRycyIsImFkZF9hdHRycyIsImF0dHJzJDAiLCJzdHJ1Y3R1cmFsX2xpc3QiLCJvcHQiLCJjaGlsZHJlbiIsInN0aCIsIm9yaWVudGF0aW9uIiwibGF5b3V0X3N0eWxlIiwiY2hpbGQiLCJzZXhwX29mX3QiLCJjb21iaW5lIiwibGVmdCIsInJpZ2h0IiwiaW5pdCIsImVsZW1lbnQiLCJmIiwiZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnQiLCJjaGFuZ2VfaGFuZGxlciIsIm5vcm1hbGl6ZWQiLCJjaGFuZ2VfaGFuZGxlciQwIiwiZXZlbnRfaWQiLCJvbl9tb3VudCIsInN0YXRlIiwiZGVzdHJveSIsInVwZGF0ZSQwIiwib2xkX2lucHV0IiwibmV3X2lucHV0IiwiY3JlYXRlIiwiaW1wbCIsInZhbHVlcyIsInNlbGVjdGVkIiwib25fY2hhbmdlIiwiZXh0cmFfYXR0cnMiLCJzdGgkMCIsImluZGV4Iiwib2ZfdmFsdWVzIiwib2ZfdmFsdWVzX29wdCIsInZhbHVlcyQwIiwiYV8wOTEiLCJiXzA5MiIsImFfMDkzIiwiYl8wOTQiLCJvZl9lbnVtIiwib2ZfZW51bV9vcHQiLCJhXzA5NSIsImJfMDk2IiwiYV8wOTciLCJiXzA5OCIsImltcGwkMCIsImlzX2NoZWNrZWQiLCJsYWJlbCIsIm9uX3RvZ2dsZSIsImV2Iiwic2ltcGxlIiwiaW1wbCQxIiwiaXRlbSIsIm9mX3ZhbHVlcyQwIiwib2ZfZW51bSQwIiwiaW1wbCQyIiwicmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IiLCJzdGgkMSIsInRhcmdldCIsImkiLCJvcHRpb25zIiwic2VsZWN0ZWRfdmFsdWVzIiwiaXNfc2VsZWN0ZWQiLCJ3YXNfcmVwZWF0ZWRfY2xpY2siLCJvZl92YWx1ZXMkMSIsIm9mX2VudW0kMSIsImxpc3RlbmVyIiwibm9ybWFsaXplIiwibWF5YmVfb25fcmV0dXJuIiwib25fcmV0dXJuIiwib25fcmV0dXJuJDAiLCJpbnB1dF9ub2RlIiwicGxhY2Vob2xkZXIiLCJyYXciLCJvbl9pbnB1dCIsInN0cmluZ2FibGVfaW5wdXRfb3B0IiwiY2FsbF9vbl9pbnB1dF93aGVuIiwic2hvdWxkX25vcm1hbGl6ZSIsInR5cGVfYXR0cnMiLCJ2YWx1ZSQwIiwidmFsdWUkMSIsIm9mX3N0cmluZ2FibGUiLCJ2YWxpZGF0ZWQiLCJWIiwidmFsdWVfYXR0ciIsInRleHQiLCJudW1iZXIiLCJzdGVwIiwicmFuZ2UiLCJ0aW1lIiwiZGF0ZSIsImRhdGV0aW1lX2xvY2FsIiwidXRjX29mZnNldCIsImhvdXJzIiwiem9uZSIsInBhcnRzIiwiaHIiLCJtaW4iLCJvZmRheSIsIlpvbmVkX3RpbWUiLCJ0ZXh0X2FyZWEiLCJzdGgkMiIsImNvbG9yX3BpY2tlciIsImV4dHJhX2F0dHIiLCJ3aXRoX3ZhbGlkYXRpb24iLCJ2YWxpZGF0aW9uIiwib25fY2xpY2siLCJyZXN1bHQiLCJyZWFzb24iLCJzaW1wbGUkMCIsImJhcmVib25lc19idXR0b25fbGlrZSIsImNoZWNrZWQiLCJoaWRlX25hdGl2ZV9pbnB1dHMiLCJpbXBsJDMiLCJuYW1lIiwic3R5bGUiLCJleHRyYV9hdHRycyQwIiwibGFiZWxfYXR0cnMiLCJpbnB1dF9hdHRycyIsImxhYmVsX2F0dHJzJDAiLCJvZl92YWx1ZXMkMiIsIkUiLCJvZl92YWx1ZXNfaG9yaXpvbnRhbCIsImFjY2VwdF9hdHRycyIsImFjY2VwdHMiLCJzJDAiLCJsaXN0IiwiYWNjZXB0IiwiZmlsZXMiLCJzaW5nbGUiLCJmaWxlX2xpc3QiLCJmaWxlIiwiZW1wdHkiLCJpc19lbXB0eSIsInQiLCJ6ZXJvX2JpdCIsImsiLCJtIiwibWVtIiwiaiIsInIiLCJsIiwibCQwIiwiZmluZCIsIngiLCJmaW5kX29wdCIsImZpbmRfZmlyc3Rfb3B0IiwiZiIsInJ2IiwicmsiLCJsdiIsImxrIiwidiQwIiwiZmluZF9maXJzdCIsImZpbmRfbGFzdF9vcHQiLCJmaW5kX2xhc3QiLCJtYXNrIiwicCIsImpvaW4iLCJ0MSIsInAxIiwidDAiLCJwMCIsIm1hdGNoX3ByZWZpeCIsImFkZCIsImlucyIsInNpbmdsZXRvbiIsInYiLCJicmFuY2giLCJ0JDAiLCJyZW1vdmUiLCJybXYiLCJjYXJkaW5hbCIsIml0ZXIiLCJtYXAiLCJtYXBpIiwiZm9sZCIsInMiLCJhY2N1IiwicyQwIiwiYWNjdSQwIiwiYWNjdSQxIiwiZm9yX2FsbCIsImV4aXN0cyIsImZpbHRlciIsInByIiwiZmlsdGVyX21hcCIsInBhcnRpdGlvbiIsInBhcnQiLCJhY2MkMCIsImNob29zZSIsImNob29zZV9vcHQiLCJzcGxpdCIsImNvbGwiLCJiIiwibWluX2JpbmRpbmciLCJicyIsImtzIiwiYnQiLCJrdCIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwiYmluZGluZ3MiLCJhY2MiLCJjb21wYXJlIiwiY21wIiwidDIiLCJjb21wYXJlX2F1eCIsInQxJDAiLCJ0MiQwIiwieDEiLCJrMSIsIngyIiwiazIiLCJjIiwicjEiLCJsMSIsIm0xIiwicjIiLCJsMiIsIm0yIiwicDIiLCJjJDAiLCJjJDEiLCJjJDIiLCJlcXVhbCIsImVxIiwiZXF1YWxfYXV4IiwibWVyZ2UiLCJhZGQkMCIsInYxIiwidjIiLCJ1cGRhdGUiLCJ6IiwidW5zaWduZWRfbHQiLCJuIiwidCQyIiwiczEiLCJzMCIsImskMCIsInEiLCJ0JDEiLCJ1bmlvbiIsInRvX3NlcSIsInByZXBlbmRfc2VxIiwibSQwIiwicyQxIiwidG9fc2VxX2Zyb20iLCJrZXkiLCJhZGRfc2VxIiwib2Zfc2VxIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJ2ZXJzaW9uIiwianNvbl9lcnJvciIsInMiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsIm9jYW1sX2xleF90YWJsZXMiLCJyZWFkX2p1bmskMCIsImxleGJ1ZiIsIm9jYW1sX2xleF9yZWFkX2p1bmtfcmVjJDAiLCJvY2FtbF9sZXhfc3RhdGUiLCJvY2FtbF9sZXhfc3RhdGUkMCIsIm9jYW1sX2xleF9zdGF0ZSQxIiwicmVhZF9qdW5rIiwib2NhbWxfbGV4X3JlYWRfanVua19yZWMiLCJ5b2pzb25fb2ZfdW5pdCIsInlvanNvbl9vZl9ib29sIiwiYiIsInlvanNvbl9vZl9zdHJpbmciLCJzdHIiLCJ5b2pzb25fb2ZfYnl0ZXMiLCJieXRlcyIsInlvanNvbl9vZl9jaGFyIiwiYyIsInlvanNvbl9vZl9pbnQiLCJuIiwieW9qc29uX29mX2Zsb2F0IiwieW9qc29uX29mX2ludDMyIiwieW9qc29uX29mX2ludDY0IiwieW9qc29uX29mX25hdGl2ZWludCIsInlvanNvbl9vZl9yZWYiLCJ5b2pzb25fb2ZfYSIsInJmIiwieW9qc29uX29mX2xhenlfdCIsImx2IiwieW9qc29uX29mX29wdGlvbiIsIngiLCJ5b2pzb25fb2ZfcGFpciIsInlvanNvbl9vZl9iIiwiYSIsInlvanNvbl9vZl90cmlwbGUiLCJ5b2pzb25fb2ZfYyIsInlvanNvbl9vZl9saXN0IiwibHN0IiwieW9qc29uX29mX2FycmF5IiwiYXIiLCJsc3RfcmVmIiwiaSIsInlvanNvbl9vZl9oYXNodGJsIiwieW9qc29uX29mX2tleSIsInlvanNvbl9vZl92YWwiLCJodGJsIiwiY29sbCIsImsiLCJ2IiwiYWNjIiwieW9qc29uX29mX29wYXF1ZSIsInlvanNvbl9vZl9mdW4iLCJyZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIiwib2ZfeW9qc29uX2Vycm9yX2V4biIsImV4YyIsInlvanNvbiIsIm9mX3lvanNvbl9lcnJvciIsIndoYXQiLCJ1bml0X29mX3lvanNvbiIsImJvb2xfb2ZfeW9qc29uIiwic3RyaW5nX29mX3lvanNvbiIsImJ5dGVzX29mX3lvanNvbiIsImNoYXJfb2ZfeW9qc29uIiwiaW50X29mX3lvanNvbiIsImZsb2F0X29mX3lvanNvbiIsImludDMyX29mX3lvanNvbiIsImludDY0X29mX3lvanNvbiIsIm5hdGl2ZWludF9vZl95b2pzb24iLCJyZWZfb2ZfeW9qc29uIiwiYV9vZl95b2pzb24iLCJsYXp5X3Rfb2ZfeW9qc29uIiwib3B0aW9uX29mX3lvanNvbiIsInBhaXJfb2ZfeW9qc29uIiwiYl9vZl95b2pzb24iLCJiX3lvanNvbiIsImFfeW9qc29uIiwidHJpcGxlX29mX3lvanNvbiIsImNfb2ZfeW9qc29uIiwiY195b2pzb24iLCJsaXN0X29mX3lvanNvbiIsInJldl9sc3QiLCJhcnJheV9vZl95b2pzb24iLCJ0IiwiaCIsImxlbiIsInJlcyIsInQkMCIsImgkMCIsImhhc2h0Ymxfb2ZfeW9qc29uIiwia2V5X29mX3lvanNvbiIsInZhbF9vZl95b2pzb24iLCJhY3QiLCJ2X3lvanNvbiIsImtfeW9qc29uIiwib3BhcXVlX29mX3lvanNvbiIsImZ1bl9vZl95b2pzb24iLCJzcHJpbnRmIiwidHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIiwibG9jIiwic3RhZ19ub19hcmdzIiwic3RhZ19pbmNvcnJlY3Rfbl9hcmdzIiwidGFnIiwibXNnIiwic3RhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9zdW0iLCJlbXB0eV9saXN0X2ludmFsaWRfc3VtIiwidW5leHBlY3RlZF9zdGFnIiwicmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyIsInJldl9mbGRfbmFtZXMiLCJmbGRfbmFtZXNfc3RyIiwicmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMiLCJyZWNvcmRfZXh0cmFfZmllbGRzIiwicmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCIsImZpZWxkcyQwIiwicmVzdCIsImZpZWxkIiwicmVzdCQwIiwicmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50cyIsInVuZGVmaW5lZCQwIiwicmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIiwicmVjb3JkX3BvbHlfZmllbGRfdmFsdWUiLCJub192YXJpYW50X21hdGNoIiwibm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCIsInB0YWdfbm9fYXJncyIsInB0YWdfaW5jb3JyZWN0X25fYXJncyIsImNuc3RyIiwicHRhZ190YWtlc19hcmdzIiwibmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhciIsImVtcHR5X3R5cGUiLCJzeW1ib2wiLCJjbHNzIiwiZGl2X2MiLCJjbHMiLCJzcGFuX2MiLCJkaXZfZW1wdHkiLCJkaXZfaWYiLCJwIiwiYXRzIiwibnMiLCJzcGFuX2lmIiwidW5sZXNzIiwiYSIsInN3YXAiLCJiIiwibWFwMiIsImYiLCJtYXAzIiwiYyIsInByaW50X3RpbWVfcHJlZml4IiwibmFtZSIsInN0YXJ0X3RpbWUiLCJlbmRfdGltZSIsInByaW50X3RpbWUiLCJwcmludF90aW1lcyIsInRpbWVzIiwibGFzdCIsImdvIiwicHJldmlvdXNfdGltZSIsInByZXZpb3VzX3RpbWUkMCIsInRpbWVzJDAiLCJ0aW1lcyQxIiwicHJldmlvdXNfdGltZSQxIiwibWVhc3VyZV90aW1lIiwibWVhc3VyZSIsIngiLCJjYXQiLCJyZW1vdmVfbnRoIiwibiIsInQiLCJyZW1vdmVfZmlyc3QiLCJyZW1vdmVfbGFzdCIsImluc2VydF9udGgiLCJzIiwic3BsaXRfbnRoIiwidG9fbGlzdCIsImkiLCJyZXBlYXQiLCJhYmJyZXZpYXRlIiwibWF4X2xlbiIsInRfb2Zfc2V4cCIsInNleHBfb2ZfdCIsInJldHVybiQwIiwiYmluZCIsIm1hcCIsInppcCIsInkiLCJzZXF1ZW5jZSIsIm1zIiwiYWNjIiwibXMkMCIsIm0iLCJvZl9hXzAwMSIsIm9mX2FfMDAzIiwieGYiLCJtYXRjaCIsImV4biQwIiwiZXhuIiwicyQwIiwiZ2V0IiwicHV0IiwibW9kaWZ5IiwibW9kaWZ5JDAiLCJnZXQkMCIsInB1dCQwIiwibW9kaWZ5JDEiLCJtb2RpZnkkMiIsImVycm9yX3NvdXJjZV8wMDUiLCJ0cF9sb2MiLCJsZXQkMCIsInJlc3VsdCIsImxldCQxIiwicHBfcGVyc2lzdGVudCIsInBvbHlfYSIsInBvbHlfYiIsImZtdCIsImEwIiwiYTAkMCIsInNob3dfcGVyc2lzdGVudCIsInBlcnNpc3RlbnRfb2Zfc2V4cCIsIm9mX2JfMDAyIiwic2V4cF8wMDciLCJ0YWdfMDA4Iiwic2V4cF9hcmdzXzAwOSIsImFyZzBfMDEwIiwicmVzMF8wMTEiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMF8wMTUiLCJyZXMwXzAxNiIsInNleHBfb2ZfcGVyc2lzdGVudCIsIm9mX2FfMDE5Iiwib2ZfYl8wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwiYXJnMF8wMjMiLCJyZXMwXzAyNCIsInBlcnNpc3RlbnRfb2ZfeW9qc29uIiwib2ZfYSIsIm9mX2IiLCJ5b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wZXJzaXN0ZW50IiwidG9fcGVyc2lzdGVudCIsIm9mX3BlcnNpc3RlbnQiLCJwcCIsInRfb2ZfeW9qc29uIiwieW9qc29uX29mX3QiLCJtYXBfZnN0IiwibWFwX3NuZCIsImlmX25vbmUiLCJvIiwiZ2V0X29yX2ZhaWwiLCJnZXRfb3JfcmFpc2UiLCJlIiwibzEiLCJvMiIsInYyIiwidjEiLCJzb21lX2lmIiwiY29uZCIsInVuemlwIiwibCIsInhzIiwiYW5kX3RoZW4iLCJlcnJvcl9zb3VyY2VfMDA4IiwicHBfdiIsImsiLCJ2IiwiYmluZGluZ19vZl9zZXhwIiwib2Zfdl8wMDEiLCJhcmcxXzAwNCIsImFyZzBfMDAzIiwicmVzMF8wMDUiLCJyZXMxXzAwNiIsInNleHBfb2ZfYmluZGluZyIsIm9mX3ZfMDA5IiwiYXJnMV8wMTEiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwic2V4cF9vZl92Iiwidl9vZl9zZXhwIiwic2V4cCIsImJpbmRpbmdfb2ZfeW9qc29uIiwib2ZfdiIsInYxJDAiLCJ5b2pzb25fb2ZfYmluZGluZyIsInlvanNvbl9vZl92Iiwidl9vZl95b2pzb24iLCJyZXZfaWYiLCJkZWR1cCIsImRlZHVwZWQiLCJkZWR1cF9mIiwiYXJlX2R1cGxpY2F0ZXMiLCJncm91cF9ieSIsImtleSIsImdyb3VwZWQiLCJrX2dyb3VwIiwicmFuZ2UiLCJvcHQiLCJoaSIsInN0aCIsImxvIiwibWtfZnJhbWUiLCJpbnZhbGlkX2FyZyIsInhzJDAiLCJzdWZmaXgiLCJwcmVmaXgiLCJzcGxpdCIsInBvc3QiLCJ4JDAiLCJwcmUiLCJzcGxpdF9mcmFtZSIsInhzJDEiLCJzdWJqIiwib2ZfZnJhbWUiLCJzdWJqZWN0IiwiY29tYmluZV9vcHQiLCJ5cyIsInh5cyIsImlzX2VtcHR5IiwiZmxhdF9tYXAiLCJqb2luIiwic2VwIiwiaGRfb3B0IiwiaGQiLCJudGhfb3B0IiwibiQwIiwidGwiLCJuJDEiLCJzcGxpdF9uX29wdCIsInNwbGl0X24iLCJyIiwic3BsaXRfc3VibGlzdF9vcHQiLCJqIiwicmlnaHQiLCJsZWZ0IiwibWlkIiwibGVmdCQwIiwic3BsaXRfc3VibGlzdCIsInN1Ymxpc3QiLCJzcGxpdF9udGhfb3B0IiwicHV0X250aCIsInRsJDAiLCJ0bCQxIiwibWFwX250aCIsImhkJDAiLCJzcGxpdF9sYXN0X29wdCIsImxlYWRpbmciLCJzcGxpdF9sYXN0IiwibGFzdF9vcHQiLCJsZW5ndGgiLCJzcGxpdF9maXJzdF9vcHQiLCJ0cmFpbGluZyIsImZpcnN0Iiwic3BsaXRfZmlyc3QiLCJmb2xkX2xlZnRfbWFwIiwic3RhcnQiLCJuZXdfYWNjIiwiZmluYWwkMCIsInRha2Vfd2hpbGUiLCJyZXN0IiwidGFrZW4iLCJwcm9kdWN0Iiwib3JkZXJlZF9wYWlycyIsIm5laWdoYm9ycyIsIngyIiwieDEiLCJtYXBfYWx0IiwiZngiLCJmeSIsImludGVybGVhdmUiLCJwX2luZGljZXMiLCJpZHhzIiwic3BsaXRzIiwiZWxlbV9zcGxpdHMiLCJyb3RhdGUiLCJzaW5nbGVfZWxlbSIsImNvdW50X3ByZWQiLCJmb3JfYWxsMl9vcHQiLCJtYXAyX29wdCIsInJlcGxpY2F0ZSIsImMkMCIsImMkMSIsIm9wdF96aXAiLCJ5cyQwIiwiemlwX2RlZmF1bHRzIiwiZGVmYXVsdF94IiwiZGVmYXVsdF95IiwieXMkMSIsInkkMCIsInVwZGF0ZV9udGgiLCJkaXNqb2ludF9wYWlycyIsImZpbmRpX29wdCIsInBhaXIiLCJpbml0X2ZvbGQiLCJlbHQiLCJhY2MkMCIsInJldl94cyIsImFzc29jX2VyciIsImVyciIsInVwZGF0ZV9hc3NvYyIsInYkMCIsImskMCIsInNwbGl0X2F0X25vbmVzIiwiYWNjcyIsImFjYyQxIiwiYWNjJDIiLCJhY2MkMyIsInhzJDIiLCJhY2MkNCIsImZpcnN0X2FuZF9sYXN0IiwieHNzIiwicmV2X2NvbmNhdCIsImxzIiwicnMiLCJscyQwIiwicnMkMCIsInJzJDEiLCJ6cyIsInpzJDAiLCJ6IiwibHN0IiwidGFpbCIsImJzIiwiYXMiLCJjcm9zcyIsImludGVyc3BlcnNlIiwiZmxhdF9pbnRlcnNwZXJzZSIsInhzcyQwIiwibWFwX2xhc3Rfb25seSIsInNwbGl0X2xhc3QkMCIsIm1pbmltdW0iLCJsb29wIiwiYmVzdCIsImJlc3RfZiIsImJlc3QkMCIsImJlc3RfZiQwIiwiYmVzdCQxIiwiYmVzdF9mJDEiLCJlcnJvcl9zb3VyY2VfMDAzIiwic2hvdyIsInNleHBfMDA0IiwidG9nZ2xlIiwic2lnbiIsImNob29zZSIsImQiLCJta19vcHQiLCJtayIsImZpbmRfbWsiLCJvcmllbnQiLCJwcmVmaXgkMCIsImFwcGVuZCIsInN1ZmZpeCQwIiwibnVtX2RpZ2l0cyIsIm1vZHVsbyIsImlwb3ciLCJiYXNlIiwiZXhwb25lbnQiLCJpcG93X2l0ZXIiLCJiJDAiLCJlJDAiLCJyJDAiLCJlJDEiLCJiJDEiLCJyJDEiLCJlJDIiLCJiJDIiLCJzaW5nbGV0b24iLCJkaXNqX3VuaW9uIiwibSQwIiwicG9seV9sIiwicG9seV9yIiwib2ZfbF8wMDEiLCJvZl9yXzAwMiIsIm9mX2xfMDE5Iiwib2Zfcl8wMjAiLCJvZl9sIiwib2ZfciIsImlzX0wiLCJpc19SIiwiZ2V0X0wiLCJnZXRfUiIsImVycm9yX3NvdXJjZV8wMDkiLCJhMSIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJvZl9hXzAxMCIsIm9mX2JfMDExIiwiYXJnMV8wMTMiLCJhcmcwXzAxMiIsInJlczBfMDE0IiwicmVzMV8wMTUiLCJmaXJzdF9hIiwibGFzdF9hIiwicmV2IiwicmV2X2EiLCJyZXZfYiIsImNvbnMiLCJzbm9jIiwiZ2V0X2FzIiwiZ2V0X2JzIiwiYWJhX3RyaXBsZXMiLCJhYmEiLCJhMiIsImJhYl90cmlwbGVzIiwiYjEiLCJiMiIsImJhYl90cmlwbGVzJDAiLCJtYXBfYSIsImZfYSIsIm1hcF9iIiwiZl9iIiwibWFwX2FiYXMiLCJmX2FiYSIsIm1hcF9oZCIsInRyaW0iLCJhcyQwIiwiYXMkMSIsImNzIiwiZm9sZF9sZWZ0IiwiZl9iYSIsIm1hcHBlZCIsImZvbGRfcmlnaHQiLCJmX2FiIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImR1bW15IiwiaW5leGlzdGFudCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJuZXdsaW5lIiwibGFzdG5ld2xpbmUiLCJzZWFyY2hfYm91bmRhcnkiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwiZW1wdHkiLCJtZW0iLCJzJDAiLCJyZW0iLCJoYXNoX3JlYyIsImoiLCJoYXNoIiwicHJpbnRfb25lIiwiY2giLCJpdGVyIiwidCIsImYiLCJ0JDAiLCJ4cyIsIm9uZV9jaGFyIiwidiIsInUiLCJmb2xkX3JpZ2h0IiwiaW5pdCIsImNzaW5nbGUiLCJpc19lbXB0eSIsInByZXBlbmQiLCJ4JDAiLCJkIiwiZCQwIiwicGljayIsImdlbiIsImVwc19leHByIiwiaGFzaF9jb21iaW5lIiwiaCIsImFjY3UiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJtayIsImNhdCIsImRlc2MiLCJjcmVhdGUiLCJlcXVhbCQwIiwiaGFzaCQxIiwiY3JlYXRlX3dvcmtpbmdfYXJlYSIsImluZGV4X2NvdW50IiwidyIsIm1hcmtfdXNlZF9pbmRpY2VzIiwidGJsIiwiZnJlZV9pbmRleCIsInRibF9yZWYiLCJsZW4iLCJpZHgkMCIsInJlbW92ZV9tYXRjaGVzIiwic3BsaXRfYXRfbWF0Y2giLCJyZW1vdmVfZHVwbGljYXRlcyIsInByZXYiLCJwcmV2JDAiLCJwcmV2JDEiLCJwcmV2JDIiLCJyJDIiLCJyJDMiLCJ4JDEiLCJwcmV2JDMiLCJyJDQiLCJzZXRfaWR4IiwiZmlsdGVyX21hcmtzIiwiZGVsdGFfMSQwIiwibmV4dF9jYXQiLCJwcmV2X2NhdCIsImRlbHRhXzIkMCIsImRlbHRhXzEiLCJkZWx0YV9zZXEkMCIsInkkMSIsImtpbmQkMCIsInJlcF9raW5kIiwieSQyIiwibWFya3MkMSIsInkkMyIsIm1hcmtzJDIiLCJjYXQkMCIsIm1hcmtzJDMiLCJkZWx0YV8yIiwiZGVsdGFfc2VxIiwiZGVsdGFfNCIsInJlbSQwIiwiZGVsdGEiLCJjaGFyJDAiLCJzdCIsImV4cHIkMCIsInJlZF90ciIsInRyMiIsInN0MiIsInMyIiwidHIxIiwic3QxIiwiczEiLCJwcmVwZW5kX2Rlcml2IiwicmVzdHJpY3QiLCJzJDEiLCJwcmVwZW5kX21hcmtzX2V4cHJfbHN0IiwibSQxIiwiZGVyaXZfMSQwIiwiYWxsX2NoYXJzIiwiY2F0ZWdvcmllcyIsInJlbSQxIiwiZGVyaXZfMiQwIiwiZGVyaXZfMSIsImRlcml2X3NlcSIsInokMCIsInJlbSQyIiwiY2F0JDEiLCJkZXJpdl8yIiwieGwiLCJ6JDEiLCJkZXJpdl80IiwiZGVyaXYiLCJkZXIiLCJleHByJDEiLCJzdGF0dXMiLCJtYSIsInN0JDAiLCJtYWtlIiwiZmxhdHRlbiIsImNtIiwiY29sb3JfcmVwciIsInNwbGl0IiwiZHVtbXlfb2Zmc2V0IiwibTEiLCJwMSIsInAyIiwiZ2V0Iiwic3RhcnQiLCJzdWJzIiwic3RvcCIsInRlc3QiLCJnZXRfb3B0IiwiYWxsX29mZnNldCIsImFsbCIsIm9mZnNldHMiLCJzdHJzIiwibWF0Y2hlcyIsInBwX21hdGNoIiwic3RyIiwibmJfZ3JvdXBzIiwibiIsIm4kMCIsInYkMCIsInYkMSIsIm4kMSIsInVua25vd24iLCJicmVhayQwIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJmaW5kX3N0YXRlIiwibmNvbCIsImJyZWFrX3N0YXRlIiwiaW5mbyIsInBvcyIsInZhbGlkYXRlIiwiZ2V0X2NvbG9yIiwic2xlbiIsInNjYW5fc3RyIiwiaW5pdGlhbF9zdGF0ZSIsImdyb3VwcyIsInBvcyQzIiwibGFzdCIsImluZm8kMCIsInN0JDUiLCJwb3MkNCIsInN0JDMiLCJyZWFsX2MiLCJzdCQ0IiwicG9zJDAiLCJwb3MkMSIsInN0JDEiLCJzdCQyIiwicG9zJDIiLCJmaW5hbF9ib3VuZGFyeV9jaGVjayIsImZpbmFsX2NhdCIsInJlcyQwIiwibWF0Y2hfc3RyIiwicGFydGlhbCIsImluaXRpYWxfY2F0Iiwic3RhdHVzJDAiLCJwbWFya3MiLCJub19tYXRjaF9zdGFydHNfYmVmb3JlIiwiY3NlcSIsImNhZGQiLCJ2aWV3IiwidmFyJDAiLCJyZWwiLCJzcSIsInJlJDAiLCJyZSQxIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiaXNfY2hhcnNldCIsImN1cHBlciIsImNsb3dlciIsImNhbHBoYSIsImNkaWdpdCIsImNhbG51bSIsImN3b3JkIiwieDEiLCJ4MiIsIngxJDAiLCJ4MiQwIiwiZXFfbGlzdCIsImoyIiwiaTIiLCJ4MiQxIiwiajEiLCJpMSIsIngxJDEiLCJ4MiQyIiwic2VtMiIsIngxJDIiLCJzZW0xIiwieDIkMyIsImsyIiwieDEkMyIsImsxIiwieDIkNCIsIngxJDQiLCJ4MiQ1IiwieDEkNSIsIngyJDYiLCJ4MSQ2IiwieDIkNyIsIngxJDciLCJsMiQyIiwibDEkMiIsIngyJDgiLCJ4MiQ5IiwieDEkOCIsIngxJDkiLCJtMiIsInNlcXVlbmNlIiwibWVyZ2Vfc2VxdWVuY2VzIiwiZW5mb3JjZV9raW5kIiwiY3IiLCJ0cmFuc2xhdGUiLCJpZ25fY2FzZSIsIm5hbWVzIiwiY2FjaGUiLCJpZ25fZ3JvdXAkMCIsImdyZWVkeSQwIiwidHJhbnNfc2VxIiwibWVyZ2VkX3NlcXVlbmNlcyIsImtpbmQkMSIsImNyJDAiLCJqJDAiLCJraW5kJDIiLCJraW5kJDMiLCJjciQxIiwiZ3JlZWR5JDEiLCJwIiwibmFtZSIsImtpbmQkNCIsImNyJDIiLCJyJDUiLCJraW5kJDUiLCJjciQzIiwiciQ2IiwiaSQxIiwia2luZCQ2IiwiY3IkNCIsImlnbl9ncm91cCIsImdyZWVkeSIsImFzX3NldCIsImhhbmRsZV9jYXNlIiwiaWduX2Nhc2UkMCIsInIkNyIsInIkOCIsInIkOSIsInIkMTAiLCJyJDExIiwiciQxMiIsImwkNSIsInIkMTMiLCJyJDE0IiwiciQxNSIsImFuY2hvcmVkIiwiZXBzaWxvbiIsInJlcG4iLCJyZXAxIiwib3B0IiwiYm9sIiwiZW9sIiwiYm93IiwiZW93Iiwid29yZCIsIm5vdF9ib3VuZGFyeSIsImJvcyIsImVvcyIsIndob2xlX3N0cmluZyIsImxlb2wiLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsInN0aCIsInN0aCQwIiwiZXhlYyIsInN1YnN0ciIsImV4ZWNfb3B0IiwiZXhlY3AiLCJleGVjX3BhcnRpYWwiLCJleGVjX3BhcnRpYWxfZGV0YWlsZWQiLCJtYXJrZWQiLCJtYXJrX3NldCIsImFsbF9zZXEiLCJsaW1pdCIsImF1eCIsIm1hdGNoZXNfc2VxIiwic3ViIiwic3BsaXRfZnVsbF9zZXEiLCJzdGF0ZSIsIm9sZF9pIiwidGV4dCIsInRleHQkMCIsInN0YXRlJDAiLCJzcGxpdF9zZXEiLCJmaWx0ZXIiLCJzZXEkMCIsInRsIiwic2VxJDEiLCJsaXN0X29mX3NlcSIsInNwbGl0X2Z1bGwiLCJnZW5fb2Zfc2VxIiwic3BsaXRfZ2VuIiwic3BsaXRfZnVsbF9nZW4iLCJhbGxfZ2VuIiwibWF0Y2hlc19nZW4iLCJyZXBsYWNlIiwiYnVmIiwicmVwbGFjaW5nIiwicmVwbGFjZV9zdHJpbmciLCJieSIsIndpdG5lc3MiLCJmcm9tIiwiZ2V0X29mcyIsImdldF9hbGwiLCJnZXRfYWxsX29mcyIsInRlc3QyIiwiYWNjZXB0IiwiYWNjZXB0MiIsImxlZnQiLCJicmFuY2giLCJsZWZ0JDAiLCJsZWZ0JDEiLCJicmFja2V0IiwicyQyIiwiY29tcGlsZV9wYXQiLCJjb21waWxlX3JlZ2V4cCIsInN0cmluZ19tYXRjaCIsInN0cmluZ19wYXJ0aWFsX21hdGNoIiwic2VhcmNoX2ZvcndhcmQiLCJzZWFyY2hfYmFja3dhcmQiLCJwJDAiLCJwJDEiLCJ2YWxpZF9ncm91cCIsIm9mZnNldF9ncm91cCIsInJlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsInEiLCJxJDAiLCJxJDEiLCJwJDIiLCJsZW4kMCIsInAkMyIsInEkMiIsInEkMyIsInAkNCIsImIkMCIsInEkNSIsInAkNiIsInEkNCIsInAkNSIsInEkNiIsInAkNyIsInN0cmluZ19iZWZvcmUiLCJzdHJpbmdfYWZ0ZXIiLCJmaXJzdF9jaGFycyIsImxhc3RfY2hhcnMiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiZ3JvdXBfYmVnaW5uaW5nIiwiZ3JvdXBfZW5kIiwibWF0Y2hlZF9ncm91cCIsInR4dCIsInJlcGxhY2VfbWF0Y2hlZCIsIm1hdGNoZWQiLCJtYXRjaF9iZWdpbm5pbmciLCJtYXRjaF9lbmQiLCJtYXRjaGVkX3N0cmluZyIsInN1YnN0aXR1dGVfZmlyc3QiLCJyZXBsX2Z1biIsImdsb2JhbF9zdWJzdGl0dXRlIiwibGFzdF93YXNfZW1wdHkiLCJzdGFydHBvcyIsImVuZF9wb3MiLCJyZXBsX3RleHQiLCJsYXN0X3dhc19lbXB0eSQwIiwiZ2xvYmFsX3JlcGxhY2UiLCJyZXBsYWNlX2ZpcnN0Iiwic2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MiLCJib3VuZGVkX3NwbGl0IiwibnVtIiwiYm91bmRlZF9zcGxpdF9kZWxpbSIsInNwbGl0X2RlbGltIiwiYm91bmRlZF9mdWxsX3NwbGl0IiwiZnVsbF9zcGxpdCIsImJlZyIsIm11bCIsImV4cGxpY2l0X3BlcmlvZCIsInNsYXNoZXMiLCJhcHBlbmQiLCJwaWVjZSIsImFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCIsIm5leHQiLCJyZW1haW5pbmciLCJvbmUiLCJleHBsaWNpdF9zbGFzaCIsImVuY2xvc2VkIiwiaGlnaCIsImxvdyIsImVuY2xvc2VkX3NldCIsInNldCQwIiwiZW5jbG9zdXJlIiwiZXhhY3RseSIsInNsYXNoZXMkMCIsImNoYXJzIiwibWFueV9tYW55IiwiZXhwbGljaXRfcGVyaW9kJDAiLCJmaXJzdF9leHBsaWNpdF9wZXJpb2QiLCJtYXRjaF9jb21wb25lbnQiLCJnbG9iIiwicGF0aG5hbWUiLCJzdGgkMSIsIm1hdGNoX2JhY2tzbGFzaGVzIiwic3RoJDIiLCJwZXJpb2QiLCJzdGgkMyIsImV4cGFuZF9icmFjZXMiLCJzdGgkNCIsImRvdWJsZV9hc3RlcmlzayIsInRvX3JlIiwicmVhZCIsInBpZWNlcyIsImZvdW5kIiwicGllY2VzJDAiLCJzdGF0ZSQ4Iiwic3RhdGUkOSIsImV4cGxpY2l0X3NsYXNoJDAiLCJleHBsaWNpdF9wZXJpb2QkMSIsInNsYXNoZXMkMSIsInN0YXRlJDEwIiwibm90X2VtcHR5IiwibWF5YmVfZW1wdHkiLCJlbmNsb3NlZF9zZXQkMSIsImVuY2xvc2VkX3NldCQwIiwic3RhdGUkMiIsInN0YXRlJDQiLCJub3RfZW1wdHkkMCIsInN0YXRlJDUiLCJzdGF0ZSQ2IiwiZW5jbG9zZWQkMCIsInN0YXRlJDciLCJlbmNsb3NlZCQxIiwic3RhdGUkMyIsInN0YXRlJDEiLCJlbmNsb3NlZCQyIiwiZW5jbG9zZWQkMyIsImV4cGwiLCJpbm5lciIsImFjYyIsImJlZyQwIiwiYWNjJDAiLCJiZWckMSIsImFjYyQxIiwiaSQzIiwiYmVnJDIiLCJpJDQiLCJpJDIiLCJnbG9iJDAiLCJnbG9ieCIsImdsb2J4JDAiLCJwb3NpeF9jbGFzc19zdHJpbmdzIiwib3B0cyIsInVuZ3JlZWR5IiwiZG90YWxsIiwiZG9sbGFyX2VuZG9ubHkiLCJtdWx0aWxpbmUiLCJhY2NlcHRfcyIsInVuZ2V0IiwiZ3JlZWR5X21vZCIsImdyIiwiZ3IkMCIsImF0b20iLCJpbnRlZ2VyIiwiaGV4ZGlnaXQiLCJjb2RlIiwicyQzIiwicyQ0IiwiY2xhc3MkMCIsInBvc2l4X2NsYXNzIiwicGF0IiwiZmxhZ3MiLCJleHRyYWN0IiwicmV4IiwiZ2V0X3N1YnN0cmluZyIsImdldF9uYW1lZF9zdWJzdHJpbmciLCJnZXRfc3Vic3RyaW5nX29mcyIsInBtYXRjaCIsInN1YnN0aXR1dGUiLCJzdWJzdCIsInNzIiwiZmluIiwibWF4IiwicmVzdWx0cyIsImRlbGltIiwibmV3X3N0b3JlIiwiY29weSIsIm1ha2UiLCJzIiwidiIsImZpbmQiLCJ4IiwieSIsInoiLCJsaW5rX3RvX3oiLCJpc19yZXByZXNlbnRhdGl2ZSIsImVxIiwiZ2V0IiwieCQwIiwidiQxIiwidiQwIiwic2V0IiwiciQxIiwiciQwIiwiciIsInVuaW9uIiwieSQwIiwidngiLCJyeCIsInJ5IiwibWVyZ2UiLCJmIiwidnkiLCJsaW5rIiwibWF0Y2giLCJyb290eCIsInJvb3R5IiwiY2hlY2siLCJjb21wYXJlIiwiY3VycmVudCIsInN0YWNrIiwiY29tbWl0Iiwicm9sbGJhY2siLCJ0ZW50YXRpdmVseSIsImIkMCIsImUkMCIsImUiLCJiIiwiZGVmYXVsdF9pbml0aWFsX2xlbmd0aCIsImNvbnRlbnQiLCJsZW5ndGgiLCJsZW5ndGgkMCIsImNvbnRlbnQkMCIsImVycm9yX3NvdXJjZV8wMDgiLCJ0cF9sb2MiLCJzZXhwX29mX3QiLCJ0IiwidF9vZl9zZXhwIiwicyIsInlvanNvbl9vZl90IiwidF9vZl95b2pzb24iLCJtayIsImNvbXBhcmUiLCJ0b19zdHJpbmciLCJvZl9zdHJpbmciLCJwcCIsImYiLCJpZCIsInNob3ciLCJiaW5kaW5nX29mX3NleHAiLCJvZl92XzAwMSIsInNleHBfMDA3IiwiYXJnMV8wMDQiLCJhcmcwXzAwMyIsInJlczBfMDA1IiwicmVzMV8wMDYiLCJzZXhwX29mX2JpbmRpbmciLCJvZl92XzAwOSIsImFyZzFfMDExIiwiYXJnMF8wMTAiLCJyZXMwXzAxMiIsInJlczFfMDEzIiwiYmluZGluZ19vZl95b2pzb24iLCJvZl92IiwieW9qc29uIiwidjEiLCJ2MCIsInYwJDAiLCJ2MSQwIiwieW9qc29uX29mX2JpbmRpbmciLCJzZXhwX29mX3QkMCIsInNleHBfb2ZfdiIsIm1hcCIsInRfb2Zfc2V4cCQwIiwidl9vZl9zZXhwIiwic2V4cCIsInlvanNvbl9vZl90JDAiLCJ5b2pzb25fb2ZfdiIsInRfb2ZfeW9qc29uJDAiLCJ2X29mX3lvanNvbiIsImpzb24iLCJwcCQwIiwicHBfdiIsImZtdCIsInYiLCJrIiwiaW52YWxpZCIsIm51bGxhcnlfYXBfZmxhZyIsImlzX251bGxhcnlfYXBfZmxhZyIsImlkcyIsImluaXQiLCJycmVmIiwiYWRkJDAiLCJhIiwiciIsImdldCIsImdldF9vcHQiLCJzZXQiLCJtZXJnZSQwIiwiaWQkMCIsImVycm9yX3NvdXJjZV8wMDMiLCJlcnJvcl9zb3VyY2VfMDA3IiwidHBfbG9jJDAiLCJlcnJvcl9zb3VyY2VfMDExIiwidHBfbG9jJDEiLCJlcnJvcl9zb3VyY2VfMDE1IiwidHBfbG9jJDIiLCJlcnJvcl9zb3VyY2VfMDE5IiwidHBfbG9jJDMiLCJlcnJvcl9zb3VyY2VfMDIzIiwidHBfbG9jJDQiLCJlcnJvcl9zb3VyY2VfMDI3IiwidHBfbG9jJDUiLCJlcnJvcl9zb3VyY2VfMDMxIiwidHBfbG9jJDYiLCJlcnJvcl9zb3VyY2VfMDU2IiwidHBfbG9jJDciLCJlcnJvcl9zb3VyY2VfMDg4IiwidHBfbG9jJDgiLCJwcF9vcF91bl9ib29sIiwib3BfdW5fYm9vbF9vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX29wX3VuX2Jvb2wiLCJvcF91bl9ib29sX29mX3lvanNvbiIsInlvanNvbl9vZl9vcF91bl9ib29sIiwicHBfb3BfdW5fbWV0YSIsIm9wX3VuX21ldGFfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl9vcF91bl9tZXRhIiwib3BfdW5fbWV0YV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfdW5fbWV0YSIsInBwX29wX3VuX2ludCIsIm9wX3VuX2ludF9vZl9zZXhwIiwic2V4cF8wMTIiLCJzZXhwX29mX29wX3VuX2ludCIsIm9wX3VuX2ludF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfdW5faW50IiwicHBfb3BfYmluX2Jvb2wiLCJvcF9iaW5fYm9vbF9vZl9zZXhwIiwic2V4cF8wMTYiLCJzZXhwX29mX29wX2Jpbl9ib29sIiwib3BfYmluX2Jvb2xfb2ZfeW9qc29uIiwieW9qc29uX29mX29wX2Jpbl9ib29sIiwicHBfb3BfYmluX2ludCIsIm9wX2Jpbl9pbnRfb2Zfc2V4cCIsInNleHBfMDIwIiwic2V4cF9vZl9vcF9iaW5faW50Iiwib3BfYmluX2ludF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX2ludCIsInBwX29wX2Jpbl9mbG9hdCIsIm9wX2Jpbl9mbG9hdF9vZl9zZXhwIiwic2V4cF8wMjQiLCJzZXhwX29mX29wX2Jpbl9mbG9hdCIsIm9wX2Jpbl9mbG9hdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX2Zsb2F0IiwicHBfb3BfYmluX3N0cmluZyIsIm9wX2Jpbl9zdHJpbmdfb2Zfc2V4cCIsInNleHBfMDI4Iiwic2V4cF9vZl9vcF9iaW5fc3RyaW5nIiwib3BfYmluX3N0cmluZ19vZl95b2pzb24iLCJ5b2pzb25fb2Zfb3BfYmluX3N0cmluZyIsInBwX29wX3VuIiwic2hvd19vcF91biIsIl8yIiwiXzEiLCJfMCIsImEwIiwiYTAkMCIsImEwJDEiLCJ4Iiwib3BfdW5fb2Zfc2V4cCIsInNleHBfMDMzIiwidGFnXzAzNCIsInNleHBfYXJnc18wMzUiLCJhcmcwXzAzNiIsInJlczBfMDM3Iiwic2V4cF9hcmdzXzA0MCIsImFyZzBfMDQxIiwicmVzMF8wNDIiLCJzZXhwX2FyZ3NfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsInNleHBfb2Zfb3BfdW4iLCJhcmcwXzA0OCIsInJlczBfMDQ5IiwiYXJnMF8wNTAiLCJyZXMwXzA1MSIsImFyZzBfMDUyIiwicmVzMF8wNTMiLCJvcF91bl9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInlvanNvbl9vZl9vcF91biIsInBwX29wX2JpbiIsInNob3dfb3BfYmluIiwiXzMiLCJfMiQwIiwiXzEkMCIsIl8wJDAiLCJhMCQyIiwib3BfYmluX29mX3NleHAiLCJzZXhwXzA1OCIsInRhZ18wNTkiLCJzZXhwX2FyZ3NfMDc1IiwiYXJnMF8wNzYiLCJyZXMwXzA3NyIsInNleHBfYXJnc18wNjAiLCJhcmcwXzA2MSIsInJlczBfMDYyIiwic2V4cF9hcmdzXzA2NSIsImFyZzBfMDY2IiwicmVzMF8wNjciLCJzZXhwX2FyZ3NfMDcwIiwiYXJnMF8wNzEiLCJyZXMwXzA3MiIsInNleHBfb2Zfb3BfYmluIiwiYXJnMF8wNzgiLCJyZXMwXzA3OSIsImFyZzBfMDgwIiwicmVzMF8wODEiLCJhcmcwXzA4MiIsInJlczBfMDgzIiwiYXJnMF8wODQiLCJyZXMwXzA4NSIsIm9wX2Jpbl9vZl95b2pzb24iLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fb2Zfb3BfYmluIiwicHBfYXBfZGlyZWN0aW9uIiwic2hvd19hcF9kaXJlY3Rpb24iLCJhcF9kaXJlY3Rpb25fb2Zfc2V4cCIsInNleHBfMDg5Iiwic2V4cF9vZl9hcF9kaXJlY3Rpb24iLCJhcF9kaXJlY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2FwX2RpcmVjdGlvbiIsInNob3dfb3BfdW5fbWV0YSIsInNob3dfb3BfdW5fYm9vbCIsInNob3dfb3BfdW5faW50Iiwic2hvd191bm9wIiwib3AiLCJvcCQwIiwib3AkMSIsInNob3dfb3BfYmluX2Jvb2wiLCJzaG93X29wX2Jpbl9pbnQiLCJzaG93X29wX2Jpbl9mbG9hdCIsInNob3dfb3BfYmluX3N0cmluZyIsInNob3dfYmlub3AiLCJvcCQyIiwiYm9vbF9vcF90b19zdHJpbmciLCJpbnRfb3BfdG9fc3RyaW5nIiwiZmxvYXRfb3BfdG9fc3RyaW5nIiwic3RyaW5nX29wX3RvX3N0cmluZyIsImJpbl9vcF90b19zdHJpbmciLCJvcCQzIiwibWF4IiwidW5xdW90ZSIsImNhc3QiLCJhcCIsIm5lZyIsInBvd2VyIiwibXVsdCIsIm5vdCIsInBsdXMiLCJjb25zIiwiY29uY2F0IiwiZXFzIiwiYW5kIiwib3IiLCJhbm4iLCJpZiQwIiwiZnVuIiwicHJvZCIsInNlbWkiLCJsZXQkMCIsInJ1bGVfYXJyIiwicnVsZV9wcmUiLCJydWxlX3NlcCIsImNhc2UkMCIsIm1pbiIsInAxIiwicDIiLCJhc3NvY2lhdGl2aXR5X21hcCIsImFzc29jaWF0aXZpdHkiLCJwIiwib2ZfYmluX29wIiwiYWxsIiwicm9vdCIsImNvbnNpc3RlbnQiLCJzJDAiLCJ0b19zdHJpbmdfdmVyYm9zZSIsImVycm9yX3NvdXJjZV8wMjYiLCJzZXhwXzAwNSIsInRhZ18wMDYiLCJzZXhwX2FyZ3NfMDA3IiwiYXJnMF8wMDgiLCJyZXMwXzAwOSIsInJlczBfMDExIiwiY29uY2F2ZSIsInAkMCIsInAkMSIsImZpdHMiLCJsIiwiZml0dGluZyIsImZsaXAiLCJhYnNvbHV0ZSIsImQiLCJyZWxhdGl2ZSIsIm5pYiIsInNpZGUiLCJzaG93JDAiLCJzZXhwXzAxMyIsImZpZWxkX3NleHBzXzAxNCIsInNoYXBlXzAxNSIsInNvcnRfMDE3IiwiZHVwbGljYXRlc18wMTkiLCJleHRyYV8wMjAiLCJpdGVyXzAyNyIsInNleHBfMDEzJDAiLCJmaWVsZF9zZXhwc18wMjMiLCJmaWVsZF9uYW1lXzAyMSIsInRhaWxfMDI4IiwiZmllbGRfc2V4cF8wMjIkMiIsImZpZWxkX3NleHBfMDIyIiwieF8wMjkiLCJmaWVsZF9zZXhwXzAyMiQwIiwiZnZhbHVlXzAyNCIsImZpZWxkX3NleHBfMDIyJDEiLCJmdmFsdWVfMDI1Iiwic29ydF8wMTgiLCJzaGFwZV8wMTYiLCJzb3J0XzAzMyIsInNoYXBlXzAzMSIsImFyZ18wMzQiLCJibmRzXzAzMCIsImFyZ18wMzIiLCJibmRzXzAzMCQwIiwiZmllbGRfeW9qc29ucyIsInNoYXBlX2ZpZWxkIiwic29ydF9maWVsZCIsImR1cGxpY2F0ZXMiLCJleHRyYSIsIml0ZXIiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwic29ydF92YWx1ZSIsInNoYXBlX3ZhbHVlIiwidl9zb3J0Iiwidl9zaGFwZSIsImFyZyIsImJuZHMiLCJhcmckMCIsImJuZHMkMCIsInNoYXBlIiwibiIsImZpdHMkMCIsImZpdHRpbmckMCIsImZsaXAkMCIsInBwX3NoYXBlIiwic2hvd19zaGFwZSIsInNoYXBlX29mX3NleHAiLCJzZXhwX29mX3NoYXBlIiwic2hhcGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3NoYXBlIiwic2V4cF8wMDYiLCJmaWVsZF9zZXhwc18wMDciLCJpZF8wMDgiLCJzaGFwZV8wMTAiLCJkdXBsaWNhdGVzXzAxMiIsImV4dHJhXzAxMyIsIml0ZXJfMDIwIiwic2V4cF8wMDYkMCIsImZpZWxkX3NleHBzXzAxNiIsImZpZWxkX25hbWVfMDE0IiwidGFpbF8wMjEiLCJmaWVsZF9zZXhwXzAxNSQyIiwiZmllbGRfc2V4cF8wMTUiLCJ4XzAyMiIsImZpZWxkX3NleHBfMDE1JDAiLCJmdmFsdWVfMDE3IiwiZmllbGRfc2V4cF8wMTUkMSIsImZ2YWx1ZV8wMTgiLCJzaGFwZV8wMTEiLCJpZF8wMDkiLCJzaGFwZV8wMjYiLCJpZF8wMjQiLCJhcmdfMDI3IiwiYm5kc18wMjMiLCJhcmdfMDI1IiwiYm5kc18wMjMkMCIsImlkX2ZpZWxkIiwiaWRfdmFsdWUiLCJ2X2lkIiwiZyIsInNoYXBlcyIsIm1rX2ZpdHNfc2hhcGUiLCJmaXRzX3NoYXBlIiwiZyQwIiwibWVyZ2UiLCJncyIsInRsIiwiaGQiLCJmdCIsImxlbmd0aCIsInJtX250aCIsInJtX2xhc3QiLCJybV9maXJzdCIsInNwbGl0X250aCIsImluc2VydF9udGgiLCJzZXAiLCJ4XzAwMiIsInhfMDAzIiwicmV2IiwiaGRfdGwiLCJsYmwiLCJhMSIsImFyZzFfMDAzIiwiYXJnMF8wMDIiLCJyZXMwXzAwNCIsInJlczFfMDA1IiwiYXJnMV8wMDkiLCJyZXMwXzAxMCIsInJlczFfMDExIiwicHBfc2hhcGVzIiwic2hvd19zaGFwZXMiLCJvZl9ob2xlIiwic29ydCIsImVycm9yX3NvdXJjZV8wMTgiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsIm91dF8wMDQiLCJpbl8wMDYiLCJuaWJzXzAwOCIsImR1cGxpY2F0ZXNfMDEwIiwiZXh0cmFfMDExIiwiaXRlcl8wMTkiLCJzZXhwXzAwMiQwIiwiZmllbGRfbmFtZV8wMTIiLCJ0YWlsXzAyMCIsImZpZWxkX3NleHBfMDEzJDMiLCJmaWVsZF9zZXhwXzAxMyIsInhfMDIxIiwiZmllbGRfc2V4cF8wMTMkMCIsImZpZWxkX3NleHBfMDEzJDEiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTMkMiIsImZ2YWx1ZV8wMTYiLCJuaWJzXzAwOSIsImluXzAwNyIsIm91dF8wMDUiLCJuaWJzXzAyNyIsImluXzAyNSIsIm91dF8wMjMiLCJhcmdfMDI4IiwiYm5kc18wMjIiLCJhcmdfMDI2IiwiYm5kc18wMjIkMCIsImFyZ18wMjQiLCJibmRzXzAyMiQxIiwib3V0X2ZpZWxkIiwiaW5fZmllbGQiLCJuaWJzX2ZpZWxkIiwiZnZhbHVlJDEiLCJuaWJzX3ZhbHVlIiwiaW5fdmFsdWUiLCJvdXRfdmFsdWUiLCJ2X25pYnMiLCJ2X2luIiwidl9vdXQiLCJhcmckMSIsImJuZHMkMSIsImZsaXBfbmlicyIsIm0iLCJta19vcCIsIm91dCIsImluJDAiLCJta19wcmUiLCJta19wb3N0IiwibWtfYmluIiwibCQwIiwiciQwIiwibWtfcHJlJDAiLCJzb3J0X2wiLCJzb3J0X3IiLCJta19wb3N0JDAiLCJta19iaW4kMCIsIm5pYnMiLCJpbmRleCIsIm1vbGQiLCJpIiwibmliX3NoYXBlcyIsIm5pYl9yIiwibmliX2wiLCJvZl9ncm91dCIsIm4kMCIsIm9mX3NlY29uZGFyeSIsImNvbnNpc3RlbnRfc2hhcGVzIiwibXMiLCJpc19pbmZpeF9vcCIsImNoZXZyb24iLCJlcnJvcl9zb3VyY2VfMDA2IiwiZXJyb3Jfc291cmNlXzAxNCIsImVycm9yX3NvdXJjZV8wMzYiLCJlcnJvcl9zb3VyY2VfMDQ5Iiwic3MiLCJpaSIsImlzIiwiZHMiLCJzcGFjZSIsImxpbmVicmVhayIsImNvbW1lbnRfcmVnZXhwIiwic3RyaW5nX2RlbGltIiwia2V5d29yZHMiLCJyZXNlcnZlZF9rZXl3b3JkcyIsImJvb2xzIiwiYmFzZV90eXBzIiwid2lsZCIsImxpc3Rfc3RhcnQiLCJsaXN0X2VuZCIsInR1cGxlX3N0YXJ0IiwidHVwbGVfZW5kIiwiZXhwbGljaXRfaG9sZSIsInJlZ2V4cCIsInBwX2xhYmVsIiwic2hvd19sYWJlbCIsImxhYmVsX29mX3NleHAiLCJzZXhwX29mX2xhYmVsIiwibGFiZWxfb2ZfeW9qc29uIiwieW9qc29uX29mX2xhYmVsIiwicHBfZXhwYW5zaW9uX3RpbWUiLCJzaG93X2V4cGFuc2lvbl90aW1lIiwiZXhwYW5zaW9uX3RpbWVfb2Zfc2V4cCIsInNleHBfb2ZfZXhwYW5zaW9uX3RpbWUiLCJleHBhbnNpb25fdGltZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXhwYW5zaW9uX3RpbWUiLCJwcF9leHBhbnNpb24iLCJzaG93X2V4cGFuc2lvbiIsImV4cGFuc2lvbl9vZl9zZXhwIiwiYXJnMV8wMTAiLCJhcmcwXzAwOSIsInJlczFfMDEyIiwic2V4cF9vZl9leHBhbnNpb24iLCJhcmcxXzAxNiIsImFyZzBfMDE1IiwicmVzMF8wMTciLCJyZXMxXzAxOCIsImV4cGFuc2lvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXhwYW5zaW9uIiwiXzAkMSIsImZpZWxkX3NleHBzXzAyMSIsImxhYmVsXzAyMiIsImV4cGFuc2lvbl8wMjQiLCJtb2xkXzAyNiIsImR1cGxpY2F0ZXNfMDI4IiwiZXh0cmFfMDI5IiwiaXRlcl8wMzciLCJzZXhwXzAyMCQwIiwiZmllbGRfc2V4cHNfMDMyIiwiZmllbGRfbmFtZV8wMzAiLCJ0YWlsXzAzOCIsImZpZWxkX3NleHBfMDMxJDMiLCJmaWVsZF9zZXhwXzAzMSIsInhfMDM5IiwiZmllbGRfc2V4cF8wMzEkMCIsImZ2YWx1ZV8wMzMiLCJmaWVsZF9zZXhwXzAzMSQxIiwiZnZhbHVlXzAzNSIsImZpZWxkX3NleHBfMDMxJDIiLCJmdmFsdWVfMDM0IiwibW9sZF8wMjciLCJleHBhbnNpb25fMDI1IiwibGFiZWxfMDIzIiwibW9sZF8wNDUiLCJleHBhbnNpb25fMDQzIiwibGFiZWxfMDQxIiwiYXJnXzA0NiIsImJuZHNfMDQwIiwiYXJnXzA0NCIsImJuZHNfMDQwJDAiLCJhcmdfMDQyIiwiYm5kc18wNDAkMSIsImxhYmVsX2ZpZWxkIiwiZXhwYW5zaW9uX2ZpZWxkIiwibW9sZF9maWVsZCIsIm1vbGRfdmFsdWUiLCJleHBhbnNpb25fdmFsdWUiLCJsYWJlbF92YWx1ZSIsInZfbW9sZCIsInZfZXhwYW5zaW9uIiwidl9sYWJlbCIsInBwX2JhZF90b2tlbl9jbHMiLCJzaG93X2JhZF90b2tlbl9jbHMiLCJiYWRfdG9rZW5fY2xzX29mX3NleHAiLCJzZXhwXzA1MCIsInNleHBfb2ZfYmFkX3Rva2VuX2NscyIsImJhZF90b2tlbl9jbHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2JhZF90b2tlbl9jbHMiLCJleHBhbnNpb24iLCJsYWJlbCIsIm1rX2luZml4IiwicHJlYyIsIm1rX251bF9pbmZpeCIsImlzX2NvbW1lbnQiLCJpc19jb21tZW50X2RlbGltIiwiaXNfc2Vjb25kYXJ5IiwiaXNfc3RyaW5nIiwiZW1wdHlfc3RyaW5nIiwiaXNfc3RyaW5nX2RlbGltIiwic3RyaXBfcXVvdGVzIiwic3RyaW5nX3F1b3RlIiwiaXNfa2V5d29yZCIsImlzX3Jlc2VydmVkX2tleXdvcmQiLCJpc19wb3RlbnRpYWxfb3BlcmFuZCIsImlzX3BvdGVudGlhbF9vcGVyYXRvciIsImlzX3BvdGVudGlhbF90b2tlbiIsImlzX2FyYml0YXJ5X2ludCIsImlzX2FyYml0YXJ5X2Zsb2F0IiwiaXNfaW50Iiwic3RyIiwiaXNfYmFkX2ludCIsImlzX2Zsb2F0IiwiaXNfYmFkX2Zsb2F0IiwiaXNfYm9vbCIsImlzX3ZhciIsImlzX2NhcGl0YWxpemVkX25hbWUiLCJpc19iYXNlX3R5cCIsImlzX3R5cF92YXIiLCJpc193aWxkIiwibGlzdGxpdF9sYmwiLCJlbXB0eV9saXN0IiwiaXNfZW1wdHlfbGlzdCIsInR1cGxlX2xibCIsImVtcHR5X3R1cGxlIiwiaXNfZW1wdHlfdHVwbGUiLCJkdW9zcGxpdHMiLCJkdW9tZXJnZXMiLCJjb25zdF9tb25vX2RlbGltcyIsImlzX2V4cGxpY2l0X2hvbGUiLCJiYWRfdG9rZW5fY2xzIiwiYXRvbWljX2Zvcm1zIiwiZm9ybXMiLCJuYW1lIiwiYWNjIiwiZGVsaW1zIiwiYXRvbWljX21vbGRzIiwibW9sZHMiLCJ0ZXN0IiwiaXNfYXRvbWljIiwiaXNfZGVsaW0iLCJpc192YWxpZF90b2tlbiIsIm1rX2F0b21pYyIsImVycm9yX3NvdXJjZV8wMzciLCJwcF9jbHMiLCJzaG93X2NscyIsImNsc19vZl9zZXhwIiwic2V4cF9vZl9jbHMiLCJjbHNfb2ZfeW9qc29uIiwieW9qc29uX29mX2NscyIsInBwX3NlY29uZGFyeV9jb250ZW50Iiwic2hvd19zZWNvbmRhcnlfY29udGVudCIsInNlY29uZGFyeV9jb250ZW50X29mX3NleHAiLCJzZXhwXzAwOSIsInRhZ18wMTAiLCJzZXhwX2FyZ3NfMDExIiwiYXJnMF8wMTIiLCJyZXMwXzAxMyIsInNleHBfYXJnc18wMTYiLCJhcmcwXzAxNyIsInJlczBfMDE4Iiwic2V4cF9vZl9zZWNvbmRhcnlfY29udGVudCIsImFyZzBfMDE5IiwicmVzMF8wMjAiLCJhcmcwXzAyMSIsInJlczBfMDIyIiwic2Vjb25kYXJ5X2NvbnRlbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlY29uZGFyeV9jb250ZW50IiwiZmllbGRfc2V4cHNfMDI1IiwiaWRfMDI2IiwiY29udGVudF8wMjgiLCJkdXBsaWNhdGVzXzAzMCIsImV4dHJhXzAzMSIsIml0ZXJfMDM4Iiwic2V4cF8wMjQkMCIsImZpZWxkX3NleHBzXzAzNCIsImZpZWxkX25hbWVfMDMyIiwidGFpbF8wMzkiLCJmaWVsZF9zZXhwXzAzMyQyIiwiZmllbGRfc2V4cF8wMzMiLCJ4XzA0MCIsImZpZWxkX3NleHBfMDMzJDAiLCJmdmFsdWVfMDM2IiwiZmllbGRfc2V4cF8wMzMkMSIsImNvbnRlbnRfMDI5IiwiaWRfMDI3IiwiY29udGVudF8wNDQiLCJpZF8wNDIiLCJhcmdfMDQ1IiwiYm5kc18wNDEiLCJhcmdfMDQzIiwiYm5kc18wNDEkMCIsImNvbnRlbnRfZmllbGQiLCJjb250ZW50X3ZhbHVlIiwidl9jb250ZW50IiwiY2xzX29mIiwibWtfc3BhY2UiLCJta19uZXdsaW5lIiwiY29uc3RydWN0X2NvbW1lbnQiLCJjb250ZW50IiwiaXNfc3BhY2UiLCJ3IiwiaXNfbGluZWJyZWFrIiwiY29udGVudF9pc19jb21tZW50IiwiZ2V0X3N0cmluZyIsImVycm9yX3NvdXJjZV8wMDUiLCJlcnJvcl9zb3VyY2VfMDQ1IiwicHBfc2VnbWVudCIsInNob3dfc2VnbWVudCIsInBwX3BpZWNlIiwic2hvd19waWVjZSIsInBwX3RpbGUiLCJzaG93X3RpbGUiLCJzZWdtZW50X29mX3NleHAiLCJwaWVjZV9vZl9zZXhwIiwidGlsZV9vZl9zZXhwIiwidGFnXzAwOCIsInNleHBfYXJnc18wMDkiLCJzZXhwX2FyZ3NfMDE5IiwiYXJnMF8wMjAiLCJyZXMwXzAyMSIsInNleHBfYXJnc18wMTQiLCJyZXMwXzAxNiIsInNleHBfMDIzIiwiZmllbGRfc2V4cHNfMDI0IiwiaWRfMDI1IiwibGFiZWxfMDI3IiwibW9sZF8wMjkiLCJzaGFyZHNfMDMxIiwiY2hpbGRyZW5fMDMzIiwiZHVwbGljYXRlc18wMzUiLCJleHRyYV8wMzYiLCJpdGVyXzA0NiIsInNleHBfMDIzJDAiLCJmaWVsZF9zZXhwc18wMzkiLCJmaWVsZF9uYW1lXzAzNyIsInRhaWxfMDQ3IiwiZmllbGRfc2V4cF8wMzgkNSIsImZpZWxkX3NleHBfMDM4IiwieF8wNDgiLCJmaWVsZF9zZXhwXzAzOCQwIiwiZnZhbHVlXzA0MSIsImZpZWxkX3NleHBfMDM4JDEiLCJmdmFsdWVfMDQyIiwiZmllbGRfc2V4cF8wMzgkMiIsImZ2YWx1ZV8wNDMiLCJmaWVsZF9zZXhwXzAzOCQzIiwiZnZhbHVlXzA0NCIsImZpZWxkX3NleHBfMDM4JDQiLCJmdmFsdWVfMDQwIiwiY2hpbGRyZW5fMDM0Iiwic2hhcmRzXzAzMiIsIm1vbGRfMDMwIiwibGFiZWxfMDI4Iiwic2V4cF9vZl9zZWdtZW50IiwieF8wNDkiLCJzZXhwX29mX3BpZWNlIiwic2V4cF9vZl90aWxlIiwiYXJnMF8wNTQiLCJyZXMwXzA1NSIsImNoaWxkcmVuXzA2NSIsInNoYXJkc18wNjMiLCJtb2xkXzA2MSIsImxhYmVsXzA1OSIsImlkXzA1NyIsImFyZ18wNjYiLCJibmRzXzA1NiIsImFyZ18wNjQiLCJibmRzXzA1NiQwIiwiYXJnXzA2MiIsImJuZHNfMDU2JDEiLCJhcmdfMDYwIiwiYm5kc18wNTYkMiIsImFyZ18wNTgiLCJibmRzXzA1NiQzIiwic2VnbWVudF9vZl95b2pzb24iLCJwaWVjZV9vZl95b2pzb24iLCJ0aWxlX29mX3lvanNvbiIsInNoYXJkc19maWVsZCIsImNoaWxkcmVuX2ZpZWxkIiwiZnZhbHVlJDIiLCJmdmFsdWUkMyIsImNoaWxkcmVuX3ZhbHVlIiwic2hhcmRzX3ZhbHVlIiwieW9qc29uX29mX3NlZ21lbnQiLCJ5b2pzb25fb2ZfcGllY2UiLCJ5b2pzb25fb2ZfdGlsZSIsInZfY2hpbGRyZW4iLCJ2X3NoYXJkcyIsImFyZyQyIiwiYm5kcyQyIiwiYXJnJDMiLCJibmRzJDMiLCJta19zZWNvbmRhcnkiLCJzZXhwX2FyZ3NfMDEyIiwiYXJnMF8wMTMiLCJyZXMwXzAxNCIsInNfY2xlYXIiLCJzX3RvdWNoIiwic190b3VjaGVkIiwicHBfZXhwYW5zaW9ucyIsInNob3dfZXhwYW5zaW9ucyIsImV4cGFuc2lvbnNfb2Zfc2V4cCIsInhfMDEzIiwic2V4cF9vZl9leHBhbnNpb25zIiwiYXJnMV8wMTkiLCJhcmcwXzAxOCIsImFyZzFfMDE1IiwiYXJnMF8wMTQiLCJyZXMxXzAxNyIsInJlczFfMDIxIiwiZXhwYW5zaW9uc19vZl95b2pzb24iLCJ2MSQxIiwidjEkMiIsInlvanNvbl9vZl9leHBhbnNpb25zIiwib2xkX21vbGRzIiwiZm9ybXNfYXNzb2MiLCJtb2xkcyQwIiwiaGQkMCIsImRlbGF5ZWRfZXhwYW5zaW9ucyIsImluc3RhbnRfZXhwYW5zaW9ucyIsImRlbGF5ZWRfZXhwYW5zaW9uIiwiaW5zdGFudF9leHBhbnNpb24iLCJpc19kZWxheWVkIiwia3ciLCJhbGxvd19tZXJnZSIsImFsbG93X2FwcGVuZF9yaWdodCIsImNoYXIkMCIsImFsbG93X2FwcGVuZF9sZWZ0IiwiYWxsb3dfaW5zZXJ0aW9uIiwibmV3X3QiLCJpc19jb21wbGV0ZSIsImxfc2hhcmQiLCJyX3NoYXJkIiwiaGFzX2VuZCIsImhhc19lbmRzIiwidG9fcGllY2UiLCJzb3J0ZWRfY2hpbGRyZW4iLCJjaGlsZHJlbiIsInNoYXJkcyIsImNoaWxkIiwiY29udGFpbmVkX2NoaWxkcmVuIiwic3BsaXRfc2hhcmRzIiwiZGlzYXNzZW1ibGUiLCJzaGFyZHMkMCIsImRpc2ludGVncmF0ZSIsInJlYXNzZW1ibGUiLCJtYXRjaCIsInBvcF9sIiwidGlsZSIsInBvcF9yIiwic2Vjb25kYXJ5IiwiZ3JvdXQiLCJmX3ciLCJmX2ciLCJmX3QiLCJuaWJfc29ydHMiLCJpc19ncm91dCIsImlzX3RpbGUiLCJtb25vdGlsZSIsImdldF9vdXRzaWRlX3NvcnRzIiwib3B0Iiwic3RoIiwiZGVmYXVsdF9zb3J0IiwibW9sZF9vZiIsImVtcHR5IiwicHBfcm9vdCIsInNob3dfcm9vdCIsIl83IiwiXzYiLCJfNSIsIl80IiwiYTEkMCIsImEyIiwiYTEkMSIsInJvb3Rfb2Zfc2V4cCIsImFyZzFfMDE0IiwicmVzMF8wMTUiLCJyZXMxXzAxNiIsImFyZzFfMDIxIiwicmVzMV8wMjMiLCJzZXhwX2FyZ3NfMDI2IiwiYXJnMl8wMjkiLCJhcmcxXzAyOCIsImFyZzBfMDI3IiwicmVzMF8wMzAiLCJyZXMxXzAzMSIsInJlczJfMDMyIiwieF8wMzQiLCJhcmcwXzAzNSIsInJlczBfMDM2Iiwic2V4cF9vZl9yb290IiwiYXJnMV8wMzgiLCJhcmcwXzAzNyIsInJlczBfMDM5IiwicmVzMV8wNDAiLCJhcmcxXzA0MiIsInJlczBfMDQzIiwicmVzMV8wNDQiLCJhcmcyXzA0NyIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0OCIsInJlczFfMDQ5IiwicmVzMl8wNTAiLCJ4XzA1MSIsInJvb3Rfb2ZfeW9qc29uIiwidjIiLCJ2MSQzIiwidjEkNCIsInYyJDAiLCJ5b2pzb25fb2Zfcm9vdCIsInBwX2lwIiwic2hvd19pcCIsInJlbCIsInQxIiwidDIiLCJsYmwxIiwibGJsMiIsImVxIiwicjEiLCJsMiIsInNoYXBlJDAiLCJwcF9za2VsIiwic2hvd19za2VsIiwiXzAkMiIsIl8xJDEiLCJfMCQzIiwicG9wX2NoYWluIiwib3B0JDAiLCJwb3BwZWQiLCJvcHQkMSIsIm9wdCQyIiwic2hhcGVzX29mX2NoYWluIiwiY2hhaW4iLCJsYXN0IiwiZmlyc3QiLCJwdXNoX291dHB1dCIsInN0YWNrcyIsInN0YWNrcyQwIiwic2h1bnRlZCIsInByZWMkMCIsInByZWMkMSIsInNwbGl0X2tpZHMkMCIsInNwbGl0X2tpZHMiLCJvdXRwdXQiLCJraWRzIiwia2lkcyQwIiwia2lkcyQxIiwib3V0cHV0JDAiLCJvdXRwdXQkMSIsImtpZHMkMiIsImtpZHMkMyIsImwkMSIsIm91dHB1dCQyIiwia2lkcyQ0IiwiciQxIiwia2lkcyQ1Iiwib3V0cHV0JDMiLCJraWRzJDYiLCJzdGFja3MkMSIsInB1c2hfc2h1bnRlZCIsImlwIiwiZmluaXNoIiwic2VnIiwiZm9sZF9yaWdodCIsIm9mX3RpbGUiLCJ0aWxlcyIsImluY29tcGxldGVfdGlsZXMiLCJjb252ZXhfZ3JvdXQiLCJjb250YWluc19tYXRjaGluZyIsInQkMCIsInJlbW92ZV9tYXRjaGluZyIsInNub2MiLCJzaGFwZV9hZmZpeCIsImFmZml4IiwiZW1wdHlfd2d3IiwiZ28iLCJ0bCQwIiwid2d3Iiwid3NzIiwid3NzJDAiLCJ3cyIsImNvbnZleCIsInNwbGl0X2J5X2dyb3V0IiwicmVtb2xkIiwicmVtb2xkX3BhdCIsInJlbW9sZF90eXAiLCJyZW1vbGRfdHBhdCIsInJlbW9sZF9ydWwiLCJyZW1vbGRfZXhwIiwicmVtb2xkX3RpbGUiLCJyZW1vbGRlZCIsImNoaWxkJDAiLCJ0cyIsInJlbW9sZF90eXBfdW5pIiwicmVzdCQwIiwic2hhcGUkMiIsInJlbW9sZGVkJDEiLCJyZW1vbGRlZCQwIiwic2hhcGUkMSIsInJlc3QiLCJyZW1vbGRfcGF0X3VuaSIsInJlc3QkMiIsInNoYXBlJDUiLCJzaGFwZSQ0IiwicmVtb2xkZWRfdHlwIiwicmVtb2xkZWRfcGF0IiwicmVzdCQxIiwic2hhcGUkMyIsInJlbW9sZF90cGF0X3VuaSIsInJlbW9sZF9leHBfdW5pIiwicmVzdCQ2Iiwic2hhcGUkOSIsInJlbW9sZGVkX2V4cCIsInJlc3QkMyIsInJlbW9sZGVkX2V4cCQwIiwicmVzdCQ0Iiwic2hhcGUkNiIsInJlbW9sZGVkX3RwYXQiLCJyZXN0JDUiLCJzaGFwZSQ3IiwicmVtb2xkZWRfZXhwJDEiLCJzaGFwZSQ4Iiwic2tlbCIsImVtcHR5JDAiLCJyZXYkMCIsImNvbnNfdyIsImNvbnNfZyIsInJtX3VwX3RvX29uZV9zcGFjZSIsIndzJDAiLCJ3c3MkMSIsImFkZF9ncm91dCIsInJlZ3JvdXQiLCJ0cmltIiwibmV3X3NwYWNlcyIsIm1lcmdlZCIsImdzJDAiLCJ0b19zZWciLCJyZWdyb3V0JDAiLCJyZWdyb3V0X2FmZml4IiwidHJpbSQwIiwiYWZmaXgkMCIsInNwbGl0X2J5X21hdGNoaW5nIiwic2VnX3IiLCJzZWdfbCIsInRyaW1fZiIsInRyaW1fbCIsInBzIiwidHJpbV9zZWNvbmRhcnkiLCJ4cyIsInhzJDAiLCJ4cyQxIiwidHJpbV9ncm91dCIsInRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dCIsInRyaW1fZ3JvdXRfYXJvdW5kX3NlY29uZGFyeSIsInhzJDIiLCJlZGdlX3NoYXBlX29mIiwidHJpbW1lZCIsImVkZ2VfZGlyZWN0aW9uX29mIiwic2VyaWFsaXplIiwic2FtZWxpbmVfc2Vjb25kYXJ5IiwiZXhwZWN0ZWRfc29ydHMiLCJuX3IiLCJraWQiLCJuX2wiLCJzX2wiLCJzX3IiLCJpbnNpZGVfc29ydHMiLCJucyIsImxfc29ydCIsInJfc29ydCIsIm91dHNpZGVfc29ydHMiLCJob2xlcyIsInNlZ21lbnQiLCJnZXRfY2hpbGRyZW5zIiwiZ2V0X2luY29tcGxldGVfaWRzIiwiaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkIiwiZmlyc3Rfc3RyaW5nIiwibGFzdF9zdHJpbmciLCJub19zaWJsaW5ncyIsInVuemlwIiwiemlwIiwic3VmIiwicHJlIiwic2VsIiwicHJlcGVuZCIsInNpYnNzIiwic2licyIsImlzX21pc21hdGNoIiwiczEiLCJwdXNoIiwib250byIsInBvcCIsImZyb20iLCJzdWYkMCIsInByZSQwIiwibGVmdF9uZWlnaGJvciIsInJpZ2h0X25laWdoYm9yIiwibmVpZ2hib3JzIiwicl9zaWJzIiwibF9zaWJzIiwiZGlyZWN0aW9uX2JldHdlZW4iLCJtb2xkX2ZpdHRpbmdfYmV0d2VlbiIsImVycm9yX3NvdXJjZV8wMjUiLCJwcF9zdGVwIiwic2hvd19zdGVwIiwic3RlcF9vZl9zZXhwIiwic2V4cF9vZl9zdGVwIiwic3RlcF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcCIsInNleHBfMDAzIiwiZmllbGRfc2V4cHNfMDA0IiwiaWRfMDA1IiwibGFiZWxfMDA3IiwibW9sZF8wMDkiLCJzaGFyZHNfMDExIiwiY2hpbGRyZW5fMDEzIiwiZHVwbGljYXRlc18wMTUiLCJleHRyYV8wMTYiLCJpdGVyXzAzNiIsInNleHBfMDAzJDAiLCJmaWVsZF9zZXhwc18wMTkiLCJmaWVsZF9uYW1lXzAxNyIsInRhaWxfMDM3IiwiZmllbGRfc2V4cF8wMTgkNSIsImZpZWxkX3NleHBfMDE4IiwieF8wMzgiLCJmaWVsZF9zZXhwXzAxOCQwIiwicmVzMF8wMjkiLCJyZXMxXzAzMCIsImZ2YWx1ZV8wMzIiLCJmaWVsZF9zZXhwXzAxOCQxIiwiZmllbGRfc2V4cF8wMTgkMiIsImZpZWxkX3NleHBfMDE4JDMiLCJmaWVsZF9zZXhwXzAxOCQ0IiwiZnZhbHVlXzAyNiIsImNoaWxkcmVuXzAxNCIsInNoYXJkc18wMTIiLCJtb2xkXzAxMCIsImxhYmVsXzAwOCIsImlkXzAwNiIsImNoaWxkcmVuXzA1MiIsInNoYXJkc18wNDYiLCJtb2xkXzA0NCIsImxhYmVsXzA0MiIsImlkXzA0MCIsImFyZzFfMDU1IiwicmVzMF8wNTYiLCJyZXMxXzA1NyIsImFyZ18wNTMiLCJibmRzXzAzOSIsImFyZzFfMDQ5IiwicmVzMF8wNTAiLCJyZXMxXzA1MSIsImFyZ18wNDciLCJibmRzXzAzOSQwIiwiYm5kc18wMzkkMSIsImJuZHNfMDM5JDIiLCJhcmdfMDQxIiwiYm5kc18wMzkkMyIsImoiLCJraWRzX3IiLCJraWRzX2wiLCJzaGFyZHNfciIsInNoYXJkc19sIiwiZmxhdHRlbiIsImNvbnRhaW5lcl9zaGFyZHMiLCJtYXRjaF9sIiwibWF0Y2hfciIsInRfciIsInRfbCIsInBwX2dlbmVyYXRpb24iLCJzaG93X2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3NleHAiLCJzZXhwX29mX2dlbmVyYXRpb24iLCJnZW5lcmF0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9nZW5lcmF0aW9uIiwieF8wMTQiLCJwYXJlbnQiLCJ6aXBfZ2VuIiwiYW5jcyIsImEkMCIsInJlZ3JvdXRlZCIsInRyaW1fciIsInRyaW1fbCQwIiwidHJpbV9yJDAiLCJwYXJlbnRfbWF0Y2hlcyIsInRpY2siLCJ0aW1lIiwibHQiLCJtYXhfdGltZSIsInVwZGF0ZSIsImVzIiwidGQiLCJlIiwibGFtIiwidXBfYXJyb3ciLCJkb3duX2Fycm93IiwibGVmdF9hcnJvdyIsInJpZ2h0X2Fycm93IiwibmJzcCIsInp3c3AiLCJ0eXBlQXJyb3dTeW0iLCJjYXN0QXJyb3dTeW0iLCJjYXN0QmFja0Fycm93U3ltIiwiZWxsaXBzaXMiLCJzdG9wIiwiZGlzdGFuY2VfYXV4Iiwic3RhcnQiLCJjb3VudCIsInN0YXJ0JDAiLCJjb3VudCQwIiwiY291bnQkMSIsInN0YXJ0JDEiLCJjb3VudCQyIiwic3RhcnQkMiIsImNvdW50JDMiLCJzdGFydCQzIiwic3RhcnQkNCIsImVycm9yX3NvdXJjZV8wMTciLCJ6ZXJvIiwiZXJyb3Jfc291cmNlXzA0MCIsImVycm9yX3NvdXJjZV8wNTUiLCJwcF9yb3ciLCJzaG93X3JvdyIsInJvd19vZl9zZXhwIiwic2V4cF9vZl9yb3ciLCJyb3dfb2ZfeW9qc29uIiwieW9qc29uX29mX3JvdyIsInBwX2NvbCIsInNob3dfY29sIiwiY29sX29mX3NleHAiLCJzZXhwX29mX2NvbCIsImNvbF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY29sIiwiZmllbGRfc2V4cHNfMDA1Iiwicm93XzAwNiIsImNvbF8wMDgiLCJpdGVyXzAxOCIsInNleHBfMDA0JDAiLCJ0YWlsXzAxOSIsInhfMDIwIiwiY29sXzAwOSIsInJvd18wMDciLCJjb2xfMDI0Iiwicm93XzAyMiIsImJuZHNfMDIxIiwiYXJnXzAyMyIsImJuZHNfMDIxJDAiLCJyb3dfZmllbGQiLCJjb2xfZmllbGQiLCJjb2xfdmFsdWUiLCJyb3dfdmFsdWUiLCJ2X2NvbCIsInZfcm93IiwiZXF1YWxzIiwicSIsImNvbXAiLCJjdXJyZW50IiwidGFyZ2V0IiwiZGNvbXAiLCJkaXJlY3Rpb24iLCJiIiwicHBfbWVhc3VyZW1lbnQiLCJzaG93X21lYXN1cmVtZW50IiwibWVhc3VyZW1lbnRfb2Zfc2V4cCIsInNleHBfMDI3IiwiZmllbGRfc2V4cHNfMDI4Iiwib3JpZ2luXzAyOSIsImxhc3RfMDMxIiwiZHVwbGljYXRlc18wMzMiLCJleHRyYV8wMzQiLCJpdGVyXzA0MSIsInNleHBfMDI3JDAiLCJmaWVsZF9zZXhwc18wMzciLCJmaWVsZF9uYW1lXzAzNSIsInRhaWxfMDQyIiwiZmllbGRfc2V4cF8wMzYkMiIsImZpZWxkX3NleHBfMDM2IiwieF8wNDMiLCJmaWVsZF9zZXhwXzAzNiQwIiwiZnZhbHVlXzAzOSIsImZpZWxkX3NleHBfMDM2JDEiLCJmdmFsdWVfMDM4IiwibGFzdF8wMzIiLCJvcmlnaW5fMDMwIiwic2V4cF9vZl9tZWFzdXJlbWVudCIsImxhc3RfMDQ3Iiwib3JpZ2luXzA0NSIsImFyZ18wNDgiLCJibmRzXzA0NCIsImJuZHNfMDQ0JDAiLCJtZWFzdXJlbWVudF9vZl95b2pzb24iLCJvcmlnaW5fZmllbGQiLCJsYXN0X2ZpZWxkIiwibGFzdF92YWx1ZSIsIm9yaWdpbl92YWx1ZSIsInlvanNvbl9vZl9tZWFzdXJlbWVudCIsInZfbGFzdCIsInZfb3JpZ2luIiwibWF4X2NvbCIsInJzIiwibWluX2NvbCIsInBwX3NoYXJkIiwic2hvd19zaGFyZCIsInNoYXJkX29mX3NleHAiLCJzZXhwXzA1NCIsImFyZzFfMDUxIiwicmVzMF8wNTIiLCJyZXMxXzA1MyIsInNleHBfb2Zfc2hhcmQiLCJhcmcxXzA1NyIsImFyZzBfMDU2IiwicmVzMF8wNTgiLCJyZXMxXzA1OSIsInNoYXJkX29mX3lvanNvbiIsInlvanNvbl9vZl9zaGFyZCIsInBwJDEiLCJ0X29mX3NleHAkMSIsInhfMDYxIiwic2V4cF9vZl90JDEiLCJ4XzA2MiIsInRfb2ZfeW9qc29uJDEiLCJ5b2pzb25fb2ZfdCQxIiwic3BsaXRfYnlfcm93Iiwicm93cyIsInJvdyIsImFkZF9zIiwiYWRkX3QiLCJhZGRfZyIsImFkZF93IiwiYWRkX3AiLCJhZGRfcm93IiwiYWRkX2xiIiwiaW5kZW50Iiwic2luZ2xldG9uX3ciLCJzaW5nbGV0b25fZyIsInNpbmdsZXRvbl9zIiwic2hhcmQiLCJmaW5kX29wdF9zaGFyZHMiLCJmaW5kX3NoYXJkcyIsImZpbmRfb3B0X2xiIiwiZmluZF9zaGFyZHMkMCIsImZpbmRfdyIsImZpbmRfZyIsImZpbmRfdCIsImZpbmRfcCIsImZpbmRfYnlfaWQiLCJtJDAiLCJwb3N0X3RpbGVfaW5kZW50IiwiY29tcGxldGVfZnVuIiwibWlzc2luZ19yaWdodF9leHRyZW1lIiwiY29tcGxldGVfZnVuJDAiLCJtaXNzaW5nX2xlZnRfZXh0cmVtZSIsImlzX2luZGVudGVkX21hcCIsImlzX2luZGVudGVkIiwic3RoJDAiLCJpc19pbmRlbnRlZCQwIiwibWFwJDAiLCJvZl9zZWdtZW50Iiwib2xkIiwidG91Y2hlZCIsImdvX25lc3RlZCIsImNvbnRhaW5lcl9pbmRlbnQiLCJvcmlnaW4iLCJ0aW1lJDAiLCJ0aW1lJDEiLCJmaXJzdF90b3VjaGVkX2luY29tcGxldGUiLCJnb19zZXEiLCJjb250YWluZWRfaW5kZW50IiwibWFwJDYiLCJ0b2tlbiIsImFkZF9zaGFyZCIsImNoaWxkX21hcCIsImNoaWxkX2xhc3QiLCJtYXAkMSIsIm9yaWdpbiQwIiwiY29udGFpbmVkX2luZGVudCQwIiwibGFzdCQwIiwibWFwJDMiLCJyb3dfaW5kZW50IiwiaW5kZW50JDAiLCJ0b3VjaGVkJDAiLCJ0b3VjaGVkJDEiLCJpbmRlbnQkMSIsImxhc3QkMSIsIm1hcCQ0Iiwid3NwYWNlX2xlbmd0aCIsIm9yaWdpbiQxIiwibWFwJDUiLCJtYXAkMiIsInRsX2xhc3QiLCJzZWdtZW50X29yaWdpbiIsInNlZ21lbnRfbGFzdCIsInNlZ21lbnRfaGVpZ2h0Iiwic2VnbWVudF93aWR0aCIsIndpZHRoX2Nvc3QiLCJtYXhfd2lkdGgiLCJvdmVyZmxvdyIsImVycm9yX3NvdXJjZV8wMzMiLCJwcF9idWZmZXIiLCJzaG93X2J1ZmZlciIsImJ1ZmZlcl9vZl9zZXhwIiwic2V4cF9vZl9idWZmZXIiLCJidWZmZXJfb2ZfeW9qc29uIiwieW9qc29uX29mX2J1ZmZlciIsInBwX21vZGUiLCJzaG93X21vZGUiLCJtb2RlX29mX3NleHAiLCJzZXhwX29mX21vZGUiLCJtb2RlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb2RlIiwic2V4cF8wMTciLCJmaWVsZF9zZXhwc18wMTgiLCJmb2N1c18wMTkiLCJjb250ZW50XzAyMSIsIm1vZGVfMDIzIiwiZHVwbGljYXRlc18wMjUiLCJleHRyYV8wMjYiLCJpdGVyXzAzNCIsInNleHBfMDE3JDAiLCJmaWVsZF9zZXhwc18wMjkiLCJmaWVsZF9uYW1lXzAyNyIsInRhaWxfMDM1IiwiZmllbGRfc2V4cF8wMjgkMyIsImZpZWxkX3NleHBfMDI4IiwieF8wMzYiLCJmaWVsZF9zZXhwXzAyOCQwIiwiZnZhbHVlXzAzMCIsImZpZWxkX3NleHBfMDI4JDEiLCJmaWVsZF9zZXhwXzAyOCQyIiwiZnZhbHVlXzAzMSIsIm1vZGVfMDI0IiwiY29udGVudF8wMjIiLCJmb2N1c18wMjAiLCJtb2RlXzA0MiIsImNvbnRlbnRfMDQwIiwiZm9jdXNfMDM4IiwiYm5kc18wMzciLCJibmRzXzAzNyQwIiwiYXJnXzAzOSIsImJuZHNfMDM3JDEiLCJmb2N1c19maWVsZCIsIm1vZGVfZmllbGQiLCJtb2RlX3ZhbHVlIiwiZm9jdXNfdmFsdWUiLCJ2X21vZGUiLCJ2X2ZvY3VzIiwibW9kZSIsImZvY3VzIiwibWtfYnVmZmVyIiwiYnVmZmVyIiwiaXNfYnVmZmVyIiwiYnVmZmVyX2lkcyIsInRvZ2dsZV9mb2N1cyIsInNlbGVjdGlvbiIsImlzX2VtcHR5IiwiY29udGVudCQwIiwicCQyIiwic3BsaXRfcGllY2UiLCJvcmQiLCJpX3IiLCJpX2wiLCJndCIsInVuIiwiZGlzb3JkZXJlZCIsImx0X29yX3VuIiwibHMiLCJhZGRfdGlsZSIsInRyYW5fY2xvc2UiLCJrZXlzIiwibWVtIiwiZXhpc3RzX21lbSIsIm1lcmdlJDEiLCJhZGRfdGlsZSQwIiwiY3MiLCJjIiwiYyQwIiwiaW5pdCQxIiwiYWRkX3NlbCIsImNvdW50cyIsIm9yZGVyIiwicHJldiIsImN1cnIiLCJwcmV2JDAiLCJzaGFyZF9pbmZvIiwiYnAiLCJpbmZvIiwic2hhcmRfaW5mbyQwIiwicHVzaF9zIiwiZmlyc3QkMCIsInJlc3RyaWN0ZWQiLCJ3aWxsX2JhcmYiLCJyZW1vdmVfdW5pX3RpbGVzX3dpdGhfZGVlcF9tYXQiLCJzaWJsaW5nc18wMDQiLCJhbmNlc3RvcnNfMDA2IiwiZHVwbGljYXRlc18wMDgiLCJleHRyYV8wMDkiLCJpdGVyXzAxNiIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJhbmNlc3RvcnNfMDA3Iiwic2libGluZ3NfMDA1IiwiYW5jZXN0b3JzXzAyMiIsInNpYmxpbmdzXzAyMCIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJzaWJsaW5nc19maWVsZCIsImFuY2VzdG9yc19maWVsZCIsImFuY2VzdG9yc192YWx1ZSIsInNpYmxpbmdzX3ZhbHVlIiwidl9hbmNlc3RvcnMiLCJ2X3NpYmxpbmdzIiwic2libGluZ3MiLCJhbmNlc3RvcnMiLCJzaWJsaW5ncyQwIiwiYW5jZXN0b3IiLCJzaWJsaW5ncyQxIiwibG9jYWxfaW5jb21wbGV0ZV90aWxlcyIsImRlbGV0ZV9wYXJlbnQiLCJhbmNlc3RvcnMkMCIsInBfc2licyIsImdzX2wiLCJnc19yIiwiZ19sIiwiZ19yIiwidHJpbV9yJDEiLCJwcmVwZW5kX2dlbmVyYXRpb24iLCJwcmVwZW5kX3NpYmxpbmdzIiwicnNzIiwiY2F0IiwicmVhc3NlbWJsZV9wYXJlbnQiLCJmbGF0dGVuX21hdGNoIiwiaW5uZXJfbCIsIm91dGVyX2wiLCJhJDEiLCJvdXRlcl9yIiwiaW5uZXJfciIsImEkMiIsImEkMyIsInJlYXNzZW1ibGVfc2libGluZ3MiLCJycyQwIiwib3V0ZXJfciQwIiwibWF0Y2hfciQwIiwiaW5uZXJfciQwIiwiZXJyb3Jfc291cmNlXzA1MSIsImFyZzFfMDEzIiwicmVzMV8wMTUiLCJkZWNyZW1lbnQiLCJvZmZzZXQiLCJzZWxlY3Rpb25fMDE5IiwiYmFja3BhY2tfMDIxIiwicmVsYXRpdmVzXzAyMyIsImNhcmV0XzAyNSIsImR1cGxpY2F0ZXNfMDI3IiwiZXh0cmFfMDI4IiwiZmllbGRfc2V4cHNfMDMxIiwiZmllbGRfbmFtZV8wMjkiLCJmaWVsZF9zZXhwXzAzMCQ0IiwiZmllbGRfc2V4cF8wMzAiLCJmaWVsZF9zZXhwXzAzMCQwIiwiZmllbGRfc2V4cF8wMzAkMSIsImZpZWxkX3NleHBfMDMwJDIiLCJmaWVsZF9zZXhwXzAzMCQzIiwiY2FyZXRfMDI2IiwicmVsYXRpdmVzXzAyNCIsImJhY2twYWNrXzAyMiIsInNlbGVjdGlvbl8wMjAiLCJjYXJldF8wNDciLCJyZWxhdGl2ZXNfMDQ1IiwiYmFja3BhY2tfMDQzIiwic2VsZWN0aW9uXzA0MSIsImJuZHNfMDQwJDIiLCJzZWxlY3Rpb25fZmllbGQiLCJiYWNrcGFja19maWVsZCIsInJlbGF0aXZlc19maWVsZCIsImNhcmV0X2ZpZWxkIiwiY2FyZXRfdmFsdWUiLCJyZWxhdGl2ZXNfdmFsdWUiLCJiYWNrcGFja192YWx1ZSIsInNlbGVjdGlvbl92YWx1ZSIsInZfY2FyZXQiLCJ2X3JlbGF0aXZlcyIsInZfYmFja3BhY2siLCJ2X3NlbGVjdGlvbiIsIm5leHRfYmxhbmsiLCJwcF9jaHVua2luZXNzIiwic2hvd19jaHVua2luZXNzIiwiY2h1bmtpbmVzc19vZl9zZXhwIiwic2V4cF8wNTIiLCJzZXhwX29mX2NodW5raW5lc3MiLCJjaHVua2luZXNzX29mX3lvanNvbiIsInlvanNvbl9vZl9jaHVua2luZXNzIiwicHBfcGxhbmFyIiwic2hvd19wbGFuYXIiLCJwbGFuYXJfb2Zfc2V4cCIsInNleHBfMDU3IiwidGFnXzA1OCIsInNleHBfYXJnc18wNjQiLCJhcmcwXzA2NSIsInJlczBfMDY2Iiwic2V4cF9hcmdzXzA1OSIsImFyZzBfMDYwIiwicmVzMF8wNjEiLCJzZXhwX29mX3BsYW5hciIsImFyZzBfMDY3IiwicmVzMF8wNjgiLCJhcmcwXzA2OSIsInJlczBfMDcwIiwicGxhbmFyX29mX3lvanNvbiIsInlvanNvbl9vZl9wbGFuYXIiLCJmcm9tX3BsYW5lIiwidXBkYXRlX2NhcmV0IiwieiIsInNldF9jYXJldCIsImNhcmV0IiwidXBkYXRlX3JlbGF0aXZlcyIsInVwZGF0ZV9zaWJsaW5ncyIsInNpYnNfd2l0aF9zZWwiLCJwb3BfYmFja3BhY2siLCJsZWZ0X25laWdoYm9yX21vbm90aWxlIiwicmlnaHRfbmVpZ2hib3JfbW9ub3RpbGUiLCJuZWlnaGJvcl9tb25vdGlsZXMiLCJyZWxhdGl2ZXMiLCJyZW1vbGRfcmVncm91dCIsImNsZWFyX3VucGFyc2VkX2J1ZmZlciIsInVuc2VsZWN0IiwiZXJhc2VfYnVmZmVyIiwieiQwIiwidW5zZWxlY3RfYW5kX3ppcCIsInVwZGF0ZV9zZWxlY3Rpb24iLCJwdXRfc2VsZWN0aW9uIiwiZ3Jvd19zZWxlY3Rpb24iLCJzaHJpbmtfc2VsZWN0aW9uIiwic2VsZWN0aW9uJDAiLCJkaXJlY3Rpb25hbF91bnNlbGVjdCIsIm1vdmUiLCJyZWxhdGl2ZXMkMCIsInNlbGVjdCIsInBpY2tfdXAiLCJzZWxlY3RlZCIsImJhY2twYWNrIiwiZGVzdHJ1Y3QiLCJkZXN0cm95X2tpZHMiLCJ0b19yZW1vdmUiLCJ0b19waWNrX3VwIiwidG9fcGlja191cCQwIiwiYmFja3BhY2skMCIsImRlbGV0ZSQwIiwicHV0X2Rvd24iLCJjb25zdHJ1Y3QiLCJsYWJlbCQwIiwibGFiZWwkMSIsInokMSIsInNlbGVjdGlvbnMkMCIsImJhY2twYWNrJDEiLCJjb250ZW50JDEiLCJpZCQxIiwic2VsZWN0aW9ucyIsImNvbnN0cnVjdF9tb25vIiwicmVwbGFjZSIsInJlcGxhY2VfbW9ubyIsInJlcHJlc2VudGF0aXZlX3BpZWNlIiwiY2FyZXRfZGlyZWN0aW9uIiwiYmFzZV9wb2ludCIsIm1lYXN1cmVkIiwiY2FyZXRfcG9pbnQiLCJjb2wiLCJkZXNlcmlhbGl6ZSIsImRhdGEiLCJjYW5fcHV0X2Rvd24iLCJzZXRfYnVmZmVyIiwiaXNfbGluZWJyZWFrX3RvX3JpZ2h0X29mX2NhcmV0IiwidHJ5X3RvX2R1bXBfYmFja3BhY2siLCJ6aXBwZXIiLCJ6aXBwZXIkMCIsIm1vdmVfdW50aWxfY2FudF9wdXRfZG93biIsInpfbGFzdCIsInpfbGFzdCQxIiwiel9sYXN0JDAiLCJ6X25ldyIsIm1vdmVfdW50aWxfY2FuX3B1dF9kb3duIiwiel9jYW4iLCJ6JDIiLCJ6X2NhbiQwIiwiel9jYW4kMSIsInokMyIsInokNCIsInNtYXJ0X3NlZyIsImR1bXBfYmFja3BhY2siLCJzZWdfZm9yX3ZpZXciLCJzZWdfZm9yX3NlbSIsInNlZ193aXRob3V0X2J1ZmZlciIsInBwX3QiLCJzaG93X3QiLCJwb2x5X2EiLCJvZl9hXzAwMSIsInhfMDA5Iiwib2ZfYV8wMTAiLCJ4XzAxNSIsImFyZzFfMDEyIiwiYXJnMF8wMTEiLCJyZXMxXzAxNCIsIm9mX2EiLCJleHRlbmQiLCJjdHgiLCJ4YSIsIm5ld19jdHgiLCJsb29rdXAiLCJjb250YWlucyIsImZpbHRlciIsInRvX2xpc3QiLCJmaW5kX21hcCIsImN0eCQwIiwiYXJnMV8wMTciLCJhcmcwXzAxNiIsInJlczFfMDE5IiwiZXF1YWwiLCJlcnJvcl9zb3VyY2VfMDA0IiwicHBfdmFyaWFudCIsInNob3dfdmFyaWFudCIsInZhcmlhbnRfb2Zfc2V4cCIsInRhZ18wMDciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMl8wMTEiLCJyZXMyXzAxNCIsInNleHBfYXJnc18wMTciLCJyZXMwXzAxOSIsInNleHBfb2ZfdmFyaWFudCIsIm9mX2FfMDIxIiwiYXJnMl8wMjQiLCJhcmcxXzAyMyIsImFyZzBfMDIyIiwicmVzMF8wMjUiLCJyZXMxXzAyNiIsInJlczJfMDI3IiwiYXJnMF8wMjgiLCJ2YXJpYW50X29mX3lvanNvbiIsInlvanNvbl9vZl92YXJpYW50Iiwib2ZfYV8wMzEiLCJ4XzAzMyIsIm9mX2FfMDM0IiwieF8wMzUiLCJlcXVhbF9jb25zdHJ1Y3RvciIsInkiLCJjdHIxIiwieDEiLCJ5MSIsImN0cjIiLCJjdHIyJDAiLCJ4JDAiLCJ5JDAiLCJzYW1lX2NvbnN0cnVjdG9yIiwiaGFzX2JhZF9lbnRyeSIsImhhc19nb29kX2VudHJ5IiwiZnJlZV92YXJpYWJsZXMiLCJ2YWx1ZSIsImlzX2dyb3VuZCIsImlzX2hvbGUiLCJ2ZW5uX3JlZ2lvbnMiLCJ5cyIsImxlZnQiLCJyaWdodCIsInlzJDAiLCJhY2MkMCIsImxlZnQkMCIsInlzJDEiLCJhY2MkMSIsImxlZnQkMSIsImpvaW5fZW50cnkiLCJqb2luIiwiaWRzMSIsInZhbHVlMSIsInZhbHVlMiIsIm0xIiwibTIiLCJpbnRlciIsImpvaW5fZW50cmllcyIsIm1hdGNoX3N5bnN3aXRjaCIsImN0ciIsImFyZ3MiLCJ2YWx1ZSQwIiwiZ2V0X2VudHJ5IiwiY3RyJDAiLCJoYXNfY29uc3RydWN0b3Jfbm9fYXJncyIsInBwX2FjdGlvbiIsInNob3dfYWN0aW9uIiwiYWN0aW9uX29mX3NleHAiLCJzZXhwX29mX2FjdGlvbiIsImFjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYWN0aW9uIiwicHBfY291bnQiLCJzaG93X2NvdW50IiwiY291bnRfb2Zfc2V4cCIsInNleHBfb2ZfY291bnQiLCJjb3VudF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY291bnQiLCJzZXhwXzAxNCIsInN0cmluZ19vZl90IiwiaWRzXzAwNSIsImNvcGllZF8wMDciLCJ0ZXJtXzAwOSIsImR1cGxpY2F0ZXNfMDExIiwiZXh0cmFfMDEyIiwiZmllbGRfc2V4cHNfMDE1IiwiZmllbGRfbmFtZV8wMTMiLCJmaWVsZF9zZXhwXzAxNCQzIiwiZmllbGRfc2V4cF8wMTQiLCJmaWVsZF9zZXhwXzAxNCQwIiwiZmllbGRfc2V4cF8wMTQkMSIsImZpZWxkX3NleHBfMDE0JDIiLCJ0ZXJtXzAxMCIsImNvcGllZF8wMDgiLCJpZHNfMDA2Iiwib2ZfYV8wMjMiLCJ0ZXJtXzAyOSIsImNvcGllZF8wMjciLCJpZHNfMDI1IiwiYXJnXzAzMCIsImJuZHNfMDI0IiwiYm5kc18wMjQkMCIsImJuZHNfMDI0JDEiLCJpZHNfZmllbGQiLCJjb3BpZWRfZmllbGQiLCJ0ZXJtX2ZpZWxkIiwidGVybV92YWx1ZSIsImNvcGllZF92YWx1ZSIsImlkc192YWx1ZSIsInZfdGVybSIsInZfY29waWVkIiwidl9pZHMiLCJmcmVzaCIsInRlcm0iLCJ0ZXJtX29mIiwidW53cmFwIiwicmVwX2lkIiwiZmFzdF9jb3B5IiwibmV3X2lkcyIsImNvcGllZCIsImVycl9tc2ciLCJlcnIiLCJzdHJ1Y3R1cmVfc2hhcmVfbWFwIiwic3RydWN0dXJlX3NoYXJlZF9vZl9zZXhwIiwic2V4cF9vZl9zdHJ1Y3R1cmVfc2hhcmVkIiwic3RydWN0dXJlX3NoYXJlX2hlcmUiLCJrZXlfZiIsInRoaW5nIiwia2V5IiwidGhpbmdfcyIsInN0cnVjdHVyZV9zaGFyZV9pbiIsInJlc3VsdCIsInNleHAkMCIsInZhbGlkX3JlZ2V4IiwiaXNfdmFsaWQiLCJjaGVja192YWxpZCIsImlzX3RydWUiLCJpc19mYWxzZSIsImlzX2xldCIsImlzX2Z1biIsImlzX2Nhc2UiLCJzcGxpdCIsInBvcyIsImxlZnRfdmFyIiwicmlnaHRfdmFyIiwiY2FyZGluYWwiLCJzaW5nbGV0b24kMCIsInVwZGF0ZSQwIiwidW5pb24kMCIsImN0eDEiLCJjdHgyIiwiZmlsdGVyJDAiLCJmb2xkJDAiLCJvZl9saXN0IiwiYmluZGluZ3MiLCJwcF90JDAiLCJzaG93X3QkMCIsIm9mX2FfMDE5Iiwic2V4cF8wMjEiLCJmaWVsZF9zZXhwc18wMjIiLCJtYXBfMDIzIiwicmV2X29yZGVyXzAyNSIsIml0ZXJfMDQwIiwic2V4cF8wMjEkMCIsInRhaWxfMDQxIiwieF8wNDIiLCJzZXhwXzAzNiIsImFyZzFfMDMzIiwiYXJnMF8wMzIiLCJyZXMwXzAzNCIsInJlczFfMDM1IiwicmV2X29yZGVyXzAyNiIsIm1hcF8wMjQiLCJvZl9hXzA0MyIsInJldl9vcmRlcl8wNDciLCJtYXBfMDQ1IiwiYXJnMV8wNTAiLCJhcmcwXzA0OSIsInJlczFfMDUyIiwiYm5kc18wNDQkMSIsIm1hcF9maWVsZCIsInJldl9vcmRlcl9maWVsZCIsInJldl9vcmRlcl92YWx1ZSIsIm1hcF92YWx1ZSIsInZfcmV2X29yZGVyIiwidl9tYXAiLCJmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50IiwiaXNfZW1wdHkkMCIsInNpbmdsZXRvbiQxIiwiZXh0ZW5kJDAiLCJyZXZfb3JkZXIiLCJ1bmlvbiQxIiwicmV2X29yZGVyMiIsIm1hcDIiLCJyZXZfb3JkZXIxIiwibWFwMSIsInVuaW9uX29yZGVyIiwib3JkZXIxIiwib3JkZXIxJDAiLCJyZXZfb3JkZXIyJDAiLCJyZXZfb3JkZXIyJDEiLCJsb29rdXAkMCIsImNvbnRhaW5zJDAiLCJtYXBrIiwibWFwbyIsImZpbHRlcmsiLCJyZXZfb3JkZXIkMCIsImZpbHRlcm8iLCJmb2xkayIsImZvbGRvIiwidG9fbGlzdGsiLCJ0b19saXN0byIsIm9mX2xpc3QkMCIsIndpdGhvdXRfa2V5cyIsImVycm9yX3NvdXJjZV83NTciLCJlcnJvcl9zb3VyY2VfMDYwIiwiZXJyb3Jfc291cmNlXzQzOCIsImVycm9yX3NvdXJjZV81NTkiLCJlcnJvcl9zb3VyY2VfNTc3IiwiZXJyb3Jfc291cmNlXzU4OCIsImVycm9yX3NvdXJjZV82ODEiLCJlcnJvcl9zb3VyY2VfNzA5IiwiZXJyb3Jfc291cmNlXzc3NiIsInRwX2xvYyQ5IiwiZXJyb3Jfc291cmNlXzc4NyIsInRwX2xvYyQxMCIsImNvbnRpbnVlJDAiLCJ4Xzc0OSIsInhfNzUwIiwic2V4cF83NTYiLCJhcmcxXzc1MyIsImFyZzBfNzUyIiwicmVzMF83NTQiLCJyZXMxXzc1NSIsImFyZzFfNzU5IiwiYXJnMF83NTgiLCJyZXMwXzc2MCIsInJlczFfNzYxIiwid3JhcCIsImVpIiwiaWRfb2YiLCJtYXBfb2YiLCJ0X29mX3NleHAkMiIsInNleHBfb2ZfdCQyIiwiZW52Iiwib2ZfZW52aXJvbm1lbnQiLCJpZF9lcXVhbCIsImVudjEiLCJlbnYyIiwibGVuZ3RoJDAiLCJ1cGRhdGVfa2VlcF9pZCIsInhyIiwiZXh0ZW5kX2tlZXBfaWQiLCJ1bmlvbl9rZWVwX2lkIiwibWFwX2tlZXBfaWQiLCJmaWx0ZXJfa2VlcF9pZCIsImZvbGQiLCJwbGFjZWhvbGRlciIsIndpdGhvdXRfa2V5cyQwIiwic2hvdyQxIiwiYTAkMyIsImEwJDQiLCJhMCQ1IiwidF9vZl9zZXhwJDMiLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMF8wMzgiLCJzZXhwX2FyZ3NfMDMyIiwiYXJnMF8wMzMiLCJzZXhwX2FyZ3NfMDI3Iiwic2V4cF9hcmdzXzAyMiIsImFyZzBfMDIzIiwicmVzMF8wMjQiLCJzZXhwX29mX3QkMyIsImFyZzBfMDQwIiwicmVzMF8wNDEiLCJhcmcwXzA0MiIsImFyZzBfMDQ0IiwicmVzMF8wNDUiLCJ0X29mX3lvanNvbiQyIiwieW9qc29uX2FyZ3MkNSIsInYwJDExIiwidjAkMTIiLCJ5b2pzb25fYXJncyQ0IiwidjAkOSIsInYwJDEwIiwieW9qc29uX2FyZ3MkMyIsInYwJDciLCJ2MCQ4IiwieW9qc29uX29mX3QkMiIsIm1hcF90ZXJtIiwiZl9leHAiLCJmX3BhdCIsInN0aCQxIiwiZl90eXAiLCJzdGgkMiIsImZfdHBhdCIsInN0aCQzIiwiZl9ydWwiLCJzdGgkNCIsImZfYW55IiwicmVjX2NhbGwiLCJ4JDEiLCJ4JDIiLCJ4JDMiLCJmYXN0X2VxdWFsIiwieSQxIiwieSQyIiwieSQzIiwieCQ0IiwieSQ0IiwicHBfZGVmZXJyYWxfcG9zaXRpb24iLCJzaG93X2RlZmVycmFsX3Bvc2l0aW9uIiwiZGVmZXJyYWxfcG9zaXRpb25fb2Zfc2V4cCIsInNleHBfb2ZfZGVmZXJyYWxfcG9zaXRpb24iLCJkZWZlcnJhbF9wb3NpdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZGVmZXJyYWxfcG9zaXRpb24iLCJwcF90ZXJtIiwic2hvd190ZXJtIiwicHAkMiIsInNob3ckMiIsIl81NCIsIl81MyIsIl81MiIsIl81MSIsIl81MCIsIl80OSIsIl80OCIsIl80NyIsIl80NiIsIl80NSIsIl80NCIsIl80MyIsIl80MiIsIl80MSIsIl80MCIsIl8zOSIsIl8zOCIsIl8zNyIsIl8zNiIsIl8zNSIsIl8zNCIsIl8zMyIsIl8zMiIsIl8zMSIsIl8zMCIsIl8yOSIsIl8yOCIsIl8yNyIsIl8yNiIsIl8yNSIsIl8yNCIsIl8yMyIsIl8yMiIsIl8yMSIsIl8yMCIsIl8xOSIsIl8xOCIsIl8xNyIsIl8xNiIsIl8xNSIsIl8xNCIsIl8xMyIsIl8xMiIsIl8xMSIsIl8xMCIsIl85IiwiXzgiLCJfNCQwIiwiXzMkMCIsIl8xJDIiLCJhMCQ2IiwiYTAkNyIsImEwJDgiLCJhMCQ5IiwiYTMiLCJhMiQwIiwiYTAkMTAiLCJhMiQxIiwiYTEkMiIsImEwJDExIiwiYTAkMTIiLCJhMCQxMyIsImEyJDIiLCJhMSQzIiwiYTAkMTQiLCJhMiQzIiwiYTEkNCIsImEwJDE1IiwiYTIkNCIsImExJDUiLCJhMCQxNiIsImEyJDUiLCJhMSQ2IiwiYTAkMTciLCJhMSQ3IiwiYTAkMTgiLCJhMSQ4IiwiYTAkMTkiLCJhMiQ2IiwiYTEkOSIsImEwJDIwIiwiYTEkMTAiLCJhMCQyMSIsImEwJDIyIiwiYTEkMTEiLCJhMCQyMyIsImExJDEyIiwiYTAkMjQiLCJhMCQyNSIsImExJDEzIiwiYTAkMjYiLCJhMSQxNCIsImEwJDI3IiwiYTEkMTUiLCJhMCQyOCIsImEyJDciLCJhMSQxNiIsImEwJDI5IiwiYTAkMzAiLCJhMSQxNyIsImEwJDMxIiwiYTIkOCIsImExJDE4IiwiYTAkMzIiLCJfMSQzIiwidGVybV9vZl9zZXhwIiwidF9vZl9zZXhwJDQiLCJzZXhwXzA2MiIsInRhZ18wNjMiLCJzZXhwX2FyZ3NfMjA1IiwiYXJnMl8yMDgiLCJhcmcxXzIwNyIsImFyZzBfMjA2IiwicmVzMF8yMDkiLCJyZXMxXzIxMCIsInJlczJfMjExIiwic2V4cF9hcmdzXzIxNCIsImFyZzFfMjE2IiwiYXJnMF8yMTUiLCJyZXMwXzIxNyIsInJlczFfMjE4Iiwic2V4cF9hcmdzXzExMCIsImFyZzBfMTExIiwicmVzMF8xMTIiLCJzZXhwX2FyZ3NfMjIxIiwiYXJnMF8yMjIiLCJyZXMwXzIyMyIsInNleHBfYXJnc18xNDUiLCJhcmcwXzE0NiIsInJlczBfMTQ3Iiwic2V4cF9hcmdzXzE3MyIsImFyZzJfMTc2IiwiYXJnMV8xNzUiLCJhcmcwXzE3NCIsInJlczBfMTc3IiwicmVzMV8xNzgiLCJyZXMyXzE3OSIsInNleHBfYXJnc18xOTEiLCJhcmcxXzE5MyIsImFyZzBfMTkyIiwicmVzMF8xOTQiLCJyZXMxXzE5NSIsInNleHBfYXJnc18xMzYiLCJhcmcyXzEzOSIsImFyZzFfMTM4IiwiYXJnMF8xMzciLCJyZXMwXzE0MCIsInJlczFfMTQxIiwicmVzMl8xNDIiLCJzZXhwX2FyZ3NfMjU5IiwiYXJnMV8yNjEiLCJhcmcwXzI2MCIsInJlczBfMjYyIiwicmVzMV8yNjMiLCJzZXhwX2FyZ3NfMTUwIiwiYXJnMF8xNTEiLCJyZXMwXzE1MiIsInNleHBfYXJnc18xMDAiLCJhcmcwXzEwMSIsInJlczBfMTAyIiwic2V4cF9hcmdzXzE1NSIsImFyZzJfMTU4IiwiYXJnMV8xNTciLCJhcmcwXzE1NiIsInJlczBfMTU5IiwicmVzMV8xNjAiLCJyZXMyXzE2MSIsInNleHBfYXJnc18yNTIiLCJhcmcxXzI1NCIsImFyZzBfMjUzIiwicmVzMF8yNTUiLCJyZXMxXzI1NiIsInNleHBfYXJnc18xMTUiLCJhcmcwXzExNiIsInJlczBfMTE3Iiwic2V4cF9hcmdzXzI4MCIsImFyZzFfMjg3IiwiYXJnMF8yODYiLCJyZXMwXzI4OCIsInNleHBfMjg1IiwiYXJnMV8yODIiLCJhcmcwXzI4MSIsInJlczBfMjgzIiwicmVzMV8yODQiLCJyZXMxXzI4OSIsInNleHBfYXJnc18wNjkiLCJhcmcwXzA3MCIsInJlczBfMDcxIiwic2V4cF9hcmdzXzI0MCIsImFyZzBfMjQxIiwicmVzMF8yNDIiLCJzZXhwX2FyZ3NfMDkwIiwiYXJnMF8wOTEiLCJyZXMwXzA5MiIsInNleHBfYXJnc18xOTgiLCJhcmcxXzIwMCIsImFyZzBfMTk5IiwicmVzMF8yMDEiLCJyZXMxXzIwMiIsInNleHBfYXJnc18wNzQiLCJhcmcxXzA3NiIsImFyZzBfMDc1IiwicmVzMV8wNzgiLCJzZXhwX2FyZ3NfMDgxIiwiYXJnMl8wODQiLCJhcmcxXzA4MyIsInJlczFfMDg2IiwicmVzMl8wODciLCJzZXhwX2FyZ3NfMjI2IiwiYXJnMV8yMjgiLCJhcmcwXzIyNyIsInJlczBfMjI5IiwicmVzMV8yMzAiLCJzZXhwX2FyZ3NfMTY0IiwiYXJnMl8xNjciLCJhcmcxXzE2NiIsImFyZzBfMTY1IiwicmVzMF8xNjgiLCJyZXMxXzE2OSIsInJlczJfMTcwIiwic2V4cF9hcmdzXzEwNSIsImFyZzBfMTA2IiwicmVzMF8xMDciLCJzZXhwX2FyZ3NfMTI1IiwiYXJnM18xMjkiLCJhcmcyXzEyOCIsImFyZzFfMTI3IiwiYXJnMF8xMjYiLCJyZXMwXzEzMCIsInJlczFfMTMxIiwicmVzMl8xMzIiLCJyZXMzXzEzMyIsInNleHBfYXJnc18xODIiLCJhcmcyXzE4NSIsImFyZzFfMTg0IiwiYXJnMF8xODMiLCJyZXMwXzE4NiIsInJlczFfMTg3IiwicmVzMl8xODgiLCJzZXhwX2FyZ3NfMjY2IiwiYXJnMl8yNjkiLCJhcmcxXzI2OCIsImFyZzBfMjY3IiwicmVzMF8yNzAiLCJyZXMxXzI3MSIsInJlczJfMjcyIiwic2V4cF9hcmdzXzA5NSIsImFyZzBfMDk2IiwicmVzMF8wOTciLCJzZXhwX2FyZ3NfMjc1IiwiYXJnMF8yNzYiLCJyZXMwXzI3NyIsInNleHBfYXJnc18yOTIiLCJhcmcyXzI5NSIsImFyZzFfMjk0IiwiYXJnMF8yOTMiLCJyZXMwXzI5NiIsInJlczFfMjk3IiwicmVzMl8yOTgiLCJzZXhwX2FyZ3NfMjMzIiwiYXJnMV8yMzUiLCJhcmcwXzIzNCIsInJlczBfMjM2IiwicmVzMV8yMzciLCJzZXhwX2FyZ3NfMjQ1IiwiYXJnMV8yNDciLCJhcmcwXzI0NiIsInJlczBfMjQ4IiwicmVzMV8yNDkiLCJzZXhwX2FyZ3NfMTIwIiwiYXJnMF8xMjEiLCJyZXMwXzEyMiIsInhfMzAwIiwic2V4cF9vZl90ZXJtIiwiYXJnMF8zMDEiLCJyZXMwXzMwMiIsImFyZzBfMzAzIiwicmVzMF8zMDQiLCJhcmcxXzMwNiIsImFyZzBfMzA1IiwicmVzMF8zMDciLCJzZXhwX29mX3QkNCIsInJlczFfMzA4IiwiYXJnMl8zMTEiLCJhcmcxXzMxMCIsImFyZzBfMzA5IiwicmVzMF8zMTIiLCJyZXMxXzMxMyIsInJlczJfMzE0IiwiYXJnMF8zMTUiLCJyZXMwXzMxNiIsImFyZzBfMzE3IiwicmVzMF8zMTgiLCJhcmcwXzMxOSIsInJlczBfMzIwIiwiYXJnMF8zMjEiLCJyZXMwXzMyMiIsImFyZzBfMzIzIiwicmVzMF8zMjQiLCJhcmcwXzMyNSIsInJlczBfMzI2IiwiYXJnMF8zMjciLCJyZXMwXzMyOCIsImFyZzNfMzMyIiwiYXJnMl8zMzEiLCJhcmcxXzMzMCIsImFyZzBfMzI5IiwicmVzMF8zMzMiLCJyZXMxXzMzNCIsInJlczJfMzM1IiwicmVzM18zMzYiLCJhcmcyXzMzOSIsImFyZzFfMzM4IiwiYXJnMF8zMzciLCJyZXMwXzM0MCIsInJlczFfMzQxIiwicmVzMl8zNDIiLCJhcmcwXzM0MyIsInJlczBfMzQ0IiwiYXJnMF8zNDUiLCJyZXMwXzM0NiIsImFyZzJfMzQ5IiwiYXJnMV8zNDgiLCJhcmcwXzM0NyIsInJlczBfMzUwIiwicmVzMV8zNTEiLCJyZXMyXzM1MiIsImFyZzJfMzU1IiwiYXJnMV8zNTQiLCJhcmcwXzM1MyIsInJlczBfMzU2IiwicmVzMV8zNTciLCJyZXMyXzM1OCIsImFyZzJfMzYxIiwiYXJnMV8zNjAiLCJhcmcwXzM1OSIsInJlczBfMzYyIiwicmVzMV8zNjMiLCJyZXMyXzM2NCIsImFyZzJfMzY3IiwiYXJnMV8zNjYiLCJhcmcwXzM2NSIsInJlczBfMzY4IiwicmVzMV8zNjkiLCJyZXMyXzM3MCIsImFyZzFfMzcyIiwiYXJnMF8zNzEiLCJyZXMwXzM3MyIsInJlczFfMzc0IiwiYXJnMV8zNzYiLCJhcmcwXzM3NSIsInJlczBfMzc3IiwicmVzMV8zNzgiLCJhcmcyXzM4MSIsImFyZzFfMzgwIiwiYXJnMF8zNzkiLCJyZXMwXzM4MiIsInJlczFfMzgzIiwicmVzMl8zODQiLCJhcmcxXzM4NiIsImFyZzBfMzg1IiwicmVzMF8zODciLCJyZXMxXzM4OCIsImFyZzBfMzg5IiwicmVzMF8zOTAiLCJhcmcxXzM5MiIsImFyZzBfMzkxIiwicmVzMF8zOTMiLCJyZXMxXzM5NCIsImFyZzFfMzk2IiwiYXJnMF8zOTUiLCJyZXMwXzM5NyIsInJlczFfMzk4IiwiYXJnMF8zOTkiLCJyZXMwXzQwMCIsImFyZzFfNDAyIiwiYXJnMF80MDEiLCJyZXMwXzQwMyIsInJlczFfNDA0IiwiYXJnMV80MDYiLCJhcmcwXzQwNSIsInJlczBfNDA3IiwicmVzMV80MDgiLCJhcmcxXzQxMCIsImFyZzBfNDA5IiwicmVzMF80MTEiLCJyZXMxXzQxMiIsImFyZzJfNDE1IiwiYXJnMV80MTQiLCJhcmcwXzQxMyIsInJlczBfNDE2IiwicmVzMV80MTciLCJyZXMyXzQxOCIsImFyZzBfNDE5IiwicmVzMF80MjAiLCJhcmcxXzQyNiIsImFyZzBfNDI1IiwicmVzMF80MjciLCJhcmcxXzQyMiIsImFyZzBfNDIxIiwicmVzMF80MjMiLCJyZXMxXzQyNCIsInJlczFfNDI4IiwiYXJnMl80MzEiLCJhcmcxXzQzMCIsImFyZzBfNDI5IiwicmVzMF80MzIiLCJyZXMxXzQzMyIsInJlczJfNDM0IiwieF80MzUiLCJ0ZXJtX29mX3lvanNvbiIsInRfb2ZfeW9qc29uJDMiLCJ5b2pzb25fYXJncyQxNiIsInYyJDUiLCJ2MSQxNSIsInYwJDMzIiwidjAkMzQiLCJ2MSQxNiIsInYyJDYiLCJ5b2pzb25fYXJncyQ3IiwidjEkNyIsInYwJDE1IiwidjAkMTYiLCJ2MSQ4IiwieW9qc29uX2FyZ3MkNiIsInYwJDEzIiwidjAkMTQiLCJ2MiQxIiwidjEkNSIsInYxJDYiLCJ2MiQyIiwieW9qc29uX2FyZ3MkMTUiLCJ2MCQzMSIsInYwJDMyIiwieW9qc29uX2FyZ3MkMTQiLCJ2MCQyOSIsInYwJDMwIiwieW9qc29uX2FyZ3MkMTMiLCJ2MiQzIiwidjEkMTMiLCJ2MCQyNyIsInYwJDI4IiwidjEkMTQiLCJ2MiQ0IiwieW9qc29uX2FyZ3MkMTIiLCJ2MSQxMSIsInYwJDI1IiwidjAkMjYiLCJ2MSQxMiIsInlvanNvbl9hcmdzJDExIiwidjAkMjMiLCJ2MCQyNCIsInlvanNvbl9hcmdzJDEwIiwidjEkOSIsInYwJDIxIiwidjAkMjIiLCJ2MSQxMCIsInlvanNvbl9hcmdzJDkiLCJ2MCQxOSIsInYwJDIwIiwieW9qc29uX2FyZ3MkOCIsInYwJDE3IiwidjAkMTgiLCJ5b2pzb25fYXJncyQyNCIsInYwJDQ5IiwidjAkNTAiLCJ5b2pzb25fYXJncyQyMyIsInYxJDI3IiwidjAkNDciLCJ2MCQ0OCIsInYxJDI4IiwieW9qc29uX2FyZ3MkMjIiLCJ2MSQyNSIsInYwJDQ1IiwidjAkNDYiLCJ2MSQyNiIsInlvanNvbl9hcmdzJDIxIiwidjIkMTEiLCJ2MSQyMyIsInYwJDQzIiwidjAkNDQiLCJ2MSQyNCIsInYyJDEyIiwieW9qc29uX2FyZ3MkMjAiLCJ2MSQyMSIsInYwJDQxIiwidjAkNDIiLCJ2MSQyMiIsInlvanNvbl9hcmdzJDE5IiwidjIkOSIsInYxJDE5IiwidjAkMzkiLCJ2MCQ0MCIsInYxJDIwIiwidjIkMTAiLCJ5b2pzb25fYXJncyQxOCIsInYwJDM3IiwidjAkMzgiLCJ5b2pzb25fYXJncyQxNyIsInYzIiwidjIkNyIsInYxJDE3IiwidjAkMzUiLCJ2MCQzNiIsInYxJDE4IiwidjIkOCIsInYzJDAiLCJ5b2pzb25fYXJncyQzMiIsInYyJDE3IiwidjEkMzciLCJ2MCQ2NSIsInYwJDY2IiwidjEkMzgiLCJ2MiQxOCIsInlvanNvbl9hcmdzJDMxIiwidjIkMTUiLCJ2MSQzNSIsInYwJDYzIiwidjAkNjQiLCJ2MSQzNiIsInYyJDE2IiwieW9qc29uX2FyZ3MkMzAiLCJ2MCQ2MSIsInYwJDYyIiwieW9qc29uX2FyZ3MkMjkiLCJ2MCQ1OSIsInYwJDYwIiwieW9qc29uX2FyZ3MkMjgiLCJ2MiQxMyIsInYxJDMzIiwidjAkNTciLCJ2MCQ1OCIsInYxJDM0IiwidjIkMTQiLCJ5b2pzb25fYXJncyQyNyIsInYxJDMxIiwidjAkNTUiLCJ2MCQ1NiIsInYxJDMyIiwieW9qc29uX2FyZ3MkMjYiLCJ2MSQyOSIsInYwJDUzIiwidjAkNTQiLCJ2MSQzMCIsInlvanNvbl9hcmdzJDI1IiwidjAkNTEiLCJ2MCQ1MiIsInlvanNvbl9vZl90ZXJtIiwieW9qc29uX29mX3QkMyIsIm1hcF90ZXJtJDAiLCJleHBfbWFwX3Rlcm0iLCJwYXRfbWFwX3Rlcm0iLCJ0eXBfbWFwX3Rlcm0iLCJ0cGF0X21hcF90ZXJtIiwiYW55X21hcF90ZXJtIiwiZmx0X21hcF90ZXJtIiwidGhpbmdzIiwidGVybSQwIiwiZSQwIiwiZSQxIiwiZiQwIiwiZSQyIiwidHAiLCJlMiIsImUxIiwiZW52JDAiLCJlJDMiLCJlJDQiLCJ0cCQwIiwiZTIkMCIsImUxJDAiLCJlJDUiLCJlJDYiLCJlMyIsImUyJDEiLCJlMSQxIiwiZTIkMiIsImUxJDIiLCJlJDciLCJlJDgiLCJmJDEiLCJlJDkiLCJlbnYkMSIsImUkMTAiLCJlMiQzIiwiZTEkMyIsImUyJDQiLCJlMSQ0IiwiZSQxMSIsImUyJDUiLCJlMSQ1IiwicmxzIiwiZSQxMiIsInQyJDAiLCJ0MSQwIiwiZSQxMyIsImZhc3RfZXF1YWwkMCIsInMyIiwidDQiLCJ0MyIsImQyIiwiZDEiLCJiMiIsImIxIiwiaTIiLCJpMSIsImYyIiwiZjEiLCJzMiQwIiwiczEkMCIsImMyIiwiYzEiLCJ0cDIiLCJ0cDEiLCJlNCIsInAyJDAiLCJwMSQwIiwiYzIkMCIsImUyJDYiLCJwMiQxIiwiYzEkMCIsImUxJDYiLCJwMSQxIiwiZTIkNyIsInRwMiQwIiwiZTEkNyIsInRwMSQwIiwiZTQkMCIsImUzJDAiLCJkMiQwIiwiZTIkOCIsImUxJDgiLCJkMSQwIiwidDIkMSIsImUyJDkiLCJ0MSQxIiwiZTEkOSIsImVzMiIsImUyJDEwIiwiZXMxIiwiZTEkMTAiLCJlNiIsImU1IiwiZTQkMSIsImUzJDEiLCJlMiQxMSIsImUxJDExIiwiZTQkMiIsImUzJDIiLCJlMiQxMiIsImUxJDEyIiwiZTIkMTMiLCJlMSQxMyIsImUyJDE0IiwiZjIkMCIsImUxJDE0IiwiZjEkMCIsImUyJDE1IiwiYzIkMSIsImUxJDE1IiwiYzEkMSIsImU0JDMiLCJlMyQzIiwiZTIkMTYiLCJlMSQxNiIsImU0JDQiLCJlMyQ0IiwiZTIkMTciLCJlMSQxNyIsImUyJDE4IiwibzIiLCJlMSQxOCIsIm8xIiwiZTQkNSIsImUzJDUiLCJvMiQwIiwiZTIkMTkiLCJlMSQxOSIsIm8xJDAiLCJmMiQxIiwiZjEkMSIsInJsczIiLCJlMiQyMCIsInJsczEiLCJlMSQyMCIsInQ0JDAiLCJ0MyQwIiwiZTIkMjEiLCJ0MiQyIiwidDEkMiIsImUxJDIxIiwicHBfdGVybSQwIiwic2hvd190ZXJtJDAiLCJwcCQzIiwic2hvdyQzIiwiXzExJDAiLCJfMTAkMCIsIl85JDAiLCJfOCQwIiwiXzckMCIsIl82JDAiLCJfNSQwIiwiXzQkMSIsIl8zJDEiLCJfMiQxIiwiXzEkNCIsIl8wJDQiLCJfMSQ1IiwiXzAkNSIsInRlcm1fb2Zfc2V4cCQwIiwidF9vZl9zZXhwJDUiLCJzZXhwXzQ0MCIsInRhZ180NDEiLCJzZXhwX2FyZ3NfNDQyIiwiYXJnMF80NDMiLCJyZXMwXzQ0NCIsInNleHBfYXJnc180NzIiLCJhcmcwXzQ3MyIsInJlczBfNDc0Iiwic2V4cF9hcmdzXzQ0NyIsImFyZzBfNDQ4IiwicmVzMF80NDkiLCJzZXhwX2FyZ3NfNDk5IiwiYXJnMF81MDAiLCJyZXMwXzUwMSIsInNleHBfYXJnc180NjciLCJhcmcwXzQ2OCIsInJlczBfNDY5Iiwic2V4cF9hcmdzXzQ5NCIsImFyZzBfNDk1IiwicmVzMF80OTYiLCJzZXhwX2FyZ3NfNDg5IiwiYXJnMF80OTAiLCJyZXMwXzQ5MSIsInNleHBfYXJnc181MDQiLCJhcmcxXzUwNiIsImFyZzBfNTA1IiwicmVzMF81MDciLCJyZXMxXzUwOCIsInNleHBfYXJnc180NjIiLCJhcmcwXzQ2MyIsInJlczBfNDY0Iiwic2V4cF9hcmdzXzUxMSIsImFyZzJfNTE0IiwiYXJnMV81MTMiLCJhcmcwXzUxMiIsInJlczBfNTE1IiwicmVzMV81MTYiLCJyZXMyXzUxNyIsInNleHBfYXJnc180ODIiLCJhcmcxXzQ4NCIsImFyZzBfNDgzIiwicmVzMF80ODUiLCJyZXMxXzQ4NiIsInNleHBfYXJnc180NzciLCJhcmcwXzQ3OCIsInJlczBfNDc5Iiwic2V4cF9hcmdzXzQ1NyIsImFyZzBfNDU4IiwicmVzMF80NTkiLCJzZXhwX2FyZ3NfNDUyIiwiYXJnMF80NTMiLCJyZXMwXzQ1NCIsInhfNTE5Iiwic2V4cF9vZl90ZXJtJDAiLCJhcmcwXzUyMCIsInJlczBfNTIxIiwiYXJnMF81MjIiLCJyZXMwXzUyMyIsImFyZzBfNTI0IiwicmVzMF81MjUiLCJhcmcwXzUyNiIsInJlczBfNTI3IiwiYXJnMF81MjgiLCJyZXMwXzUyOSIsImFyZzBfNTMwIiwicmVzMF81MzEiLCJhcmcwXzUzMiIsInJlczBfNTMzIiwic2V4cF9vZl90JDUiLCJhcmcwXzUzNCIsInJlczBfNTM1IiwiYXJnMV81MzciLCJhcmcwXzUzNiIsInJlczBfNTM4IiwicmVzMV81MzkiLCJhcmcwXzU0MCIsInJlczBfNTQxIiwiYXJnMF81NDIiLCJyZXMwXzU0MyIsImFyZzBfNTQ0IiwicmVzMF81NDUiLCJhcmcxXzU0NyIsImFyZzBfNTQ2IiwicmVzMF81NDgiLCJyZXMxXzU0OSIsImFyZzJfNTUyIiwiYXJnMV81NTEiLCJhcmcwXzU1MCIsInJlczBfNTUzIiwicmVzMV81NTQiLCJyZXMyXzU1NSIsInhfNTU2IiwidGVybV9vZl95b2pzb24kMCIsInRfb2ZfeW9qc29uJDQiLCJ5b2pzb25fb2ZfdGVybSQwIiwieW9qc29uX29mX3QkNCIsIm1hcF90ZXJtJDEiLCJmYXN0X2VxdWFsJDEiLCJ5MiIsIngyIiwieTEkMCIsIngxJDAiLCJ5MiQwIiwieDIkMCIsIngxJDEiLCJ1MiIsInUxIiwieDIkMSIsInBwX3R5cGVfaG9sZSIsInNob3dfdHlwZV9ob2xlIiwiXzAkNiIsInR5cGVfaG9sZV9vZl9zZXhwIiwic2V4cF81NjEiLCJ0YWdfNTYyIiwic2V4cF9hcmdzXzU2OCIsImFyZzBfNTY5IiwicmVzMF81NzAiLCJzZXhwX2FyZ3NfNTYzIiwiYXJnMF81NjQiLCJyZXMwXzU2NSIsInNleHBfb2ZfdHlwZV9ob2xlIiwiYXJnMF81NzEiLCJyZXMwXzU3MiIsImFyZzBfNTczIiwicmVzMF81NzQiLCJ0eXBlX2hvbGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGVfaG9sZSIsInBwX3R5cGVfcHJvdmVuYW5jZSIsInNob3dfdHlwZV9wcm92ZW5hbmNlIiwiXzAkNyIsInR5cGVfcHJvdmVuYW5jZV9vZl9zZXhwIiwic2V4cF81NzkiLCJ0YWdfNTgwIiwic2V4cF9hcmdzXzU4MSIsImFyZzBfNTgyIiwicmVzMF81ODMiLCJzZXhwX29mX3R5cGVfcHJvdmVuYW5jZSIsImFyZzBfNTg0IiwicmVzMF81ODUiLCJ0eXBlX3Byb3ZlbmFuY2Vfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGVfcHJvdmVuYW5jZSIsInBwX3Rlcm0kMSIsInNob3dfdGVybSQxIiwicHAkNCIsInNob3ckNCIsIl8xMyQwIiwiXzEyJDAiLCJfMTEkMSIsIl8xMCQxIiwiXzkkMSIsIl84JDEiLCJfNyQxIiwiXzYkMSIsIl81JDEiLCJfNCQyIiwiXzMkMiIsIl8yJDIiLCJfMSQ2IiwiXzAkOCIsIl8xJDciLCJfMCQ5IiwidGVybV9vZl9zZXhwJDEiLCJ0X29mX3NleHAkNiIsInNleHBfNTkwIiwidGFnXzU5MSIsInNleHBfYXJnc182MjQiLCJhcmcwXzYyNSIsInJlczBfNjI2Iiwic2V4cF9hcmdzXzYxOSIsImFyZzBfNjIwIiwicmVzMF82MjEiLCJzZXhwX2FyZ3NfNjM2IiwiYXJnMV82MzgiLCJhcmcwXzYzNyIsInJlczBfNjM5IiwicmVzMV82NDAiLCJzZXhwX2FyZ3NfNjE0IiwiYXJnMF82MTUiLCJyZXMwXzYxNiIsInNleHBfYXJnc181OTIiLCJhcmcwXzU5MyIsInJlczBfNTk0Iiwic2V4cF9hcmdzXzU5NyIsImFyZzBfNTk4IiwicmVzMF81OTkiLCJzZXhwX2FyZ3NfNjI5IiwiYXJnMV82MzEiLCJhcmcwXzYzMCIsInJlczBfNjMyIiwicmVzMV82MzMiLCJzZXhwX2FyZ3NfNjA3IiwiYXJnMV82MDkiLCJhcmcwXzYwOCIsInJlczBfNjEwIiwicmVzMV82MTEiLCJzZXhwX2FyZ3NfNjQzIiwiYXJnMV82NDUiLCJhcmcwXzY0NCIsInJlczBfNjQ2IiwicmVzMV82NDciLCJzZXhwX2FyZ3NfNjAyIiwiYXJnMF82MDMiLCJyZXMwXzYwNCIsInhfNjQ5Iiwic2V4cF9vZl90ZXJtJDEiLCJhcmcwXzY1MCIsInJlczBfNjUxIiwiYXJnMF82NTIiLCJyZXMwXzY1MyIsImFyZzBfNjU0IiwicmVzMF82NTUiLCJzZXhwX29mX3QkNiIsImFyZzFfNjU3IiwiYXJnMF82NTYiLCJyZXMwXzY1OCIsInJlczFfNjU5IiwiYXJnMF82NjAiLCJyZXMwXzY2MSIsImFyZzBfNjYyIiwicmVzMF82NjMiLCJhcmcwXzY2NCIsInJlczBfNjY1IiwiYXJnMV82NjciLCJhcmcwXzY2NiIsInJlczBfNjY4IiwicmVzMV82NjkiLCJhcmcxXzY3MSIsImFyZzBfNjcwIiwicmVzMF82NzIiLCJyZXMxXzY3MyIsImFyZzFfNjc1IiwiYXJnMF82NzQiLCJyZXMwXzY3NiIsInJlczFfNjc3IiwieF82NzgiLCJ0ZXJtX29mX3lvanNvbiQxIiwidF9vZl95b2pzb24kNSIsInlvanNvbl9vZl90ZXJtJDEiLCJ5b2pzb25fb2ZfdCQ1IiwibWFwX3Rlcm0kMiIsInZhcmlhbnRzIiwidCQxIiwic3Vic3QiLCJ0eSIsInJld3JhcCIsInByb3YiLCJ0eSQwIiwidHkyIiwidHkxIiwic20iLCJ0eXMiLCJ0eSQxIiwidHkkMiIsInR5JDMiLCJ0eSQ0IiwidHkkNSIsImVxX2ludGVybmFsIiwibjEiLCJuMiIsInQyJDMiLCJ0MiQ0IiwidDEkMyIsInNtMSIsInNtMiIsInR5czEiLCJ0eXMyIiwidDEkNCIsInQyJDUiLCJ0MSQ1IiwidDIkNiIsInQxJDYiLCJ0MiQ3IiwidDEkNyIsImFscGhhX3N1YnN0JDAiLCJhbHBoYV9zdWJzdCIsInQyJDgiLCJ0MSQ4IiwibiQxIiwiZmFzdF9lcXVhbCQyIiwicHBfdGVybSQyIiwic2hvd190ZXJtJDIiLCJwcCQ1Iiwic2hvdyQ1IiwiXzAkMTAiLCJfMSQ4IiwiXzAkMTEiLCJ0ZXJtX29mX3NleHAkMiIsInRfb2Zfc2V4cCQ3Iiwic2V4cF82ODMiLCJ0YWdfNjg0Iiwic2V4cF9hcmdzXzY5NSIsImFyZzBfNjk2IiwicmVzMF82OTciLCJzZXhwX2FyZ3NfNjkwIiwiYXJnMF82OTEiLCJyZXMwXzY5MiIsInNleHBfYXJnc182ODUiLCJhcmcwXzY4NiIsInJlczBfNjg3IiwieF82OTkiLCJzZXhwX29mX3Rlcm0kMiIsImFyZzBfNzAwIiwicmVzMF83MDEiLCJhcmcwXzcwMiIsInJlczBfNzAzIiwiYXJnMF83MDQiLCJyZXMwXzcwNSIsInNleHBfb2ZfdCQ3IiwieF83MDYiLCJ0ZXJtX29mX3lvanNvbiQyIiwidF9vZl95b2pzb24kNiIsInlvanNvbl9vZl90ZXJtJDIiLCJ5b2pzb25fb2ZfdCQ2IiwibWFwX3Rlcm0kMyIsInR5dmFyX29mX3V0cGF0IiwiZmFzdF9lcXVhbCQzIiwicHBfdGVybSQzIiwic2hvd190ZXJtJDMiLCJwcCQ2Iiwic2hvdyQ2IiwiXzMkMyIsIl8yJDMiLCJfMSQ5IiwiXzAkMTIiLCJfMSQxMCIsIl8wJDEzIiwidGVybV9vZl9zZXhwJDMiLCJ0X29mX3NleHAkOCIsInNleHBfNzExIiwidGFnXzcxMiIsInNleHBfYXJnc183MjMiLCJhcmcxXzczMCIsImFyZzBfNzI5IiwicmVzMF83MzEiLCJzZXhwXzcyOCIsImFyZzFfNzI1IiwiYXJnMF83MjQiLCJyZXMwXzcyNiIsInJlczFfNzI3IiwicmVzMV83MzIiLCJzZXhwX2FyZ3NfNzEzIiwiYXJnMF83MTQiLCJyZXMwXzcxNSIsInNleHBfYXJnc183MTgiLCJhcmcwXzcxOSIsInJlczBfNzIwIiwieF83MzQiLCJzZXhwX29mX3Rlcm0kMyIsImFyZzBfNzM1IiwicmVzMF83MzYiLCJhcmcwXzczNyIsInJlczBfNzM4IiwiYXJnMV83NDQiLCJhcmcwXzc0MyIsInJlczBfNzQ1IiwiYXJnMV83NDAiLCJhcmcwXzczOSIsInJlczBfNzQxIiwicmVzMV83NDIiLCJyZXMxXzc0NiIsInNleHBfb2ZfdCQ4IiwieF83NDciLCJ0ZXJtX29mX3lvanNvbiQzIiwidF9vZl95b2pzb24kNyIsInlvanNvbl9vZl90ZXJtJDMiLCJ5b2pzb25fb2ZfdCQ3IiwibWFwX3Rlcm0kNCIsImZhc3RfZXF1YWwkNCIsInIyIiwicHBfZmlsdGVyIiwic2hvd19maWx0ZXIiLCJfMSQxMSIsIl8wJDE0IiwiZmlsdGVyX29mX3NleHAiLCJzZXhwXzc2MyIsImZpZWxkX3NleHBzXzc2NCIsInBhdF83NjUiLCJhY3RfNzY3IiwiZHVwbGljYXRlc183NjkiLCJleHRyYV83NzAiLCJpdGVyXzc3NyIsInNleHBfNzYzJDAiLCJmaWVsZF9zZXhwc183NzMiLCJmaWVsZF9uYW1lXzc3MSIsInRhaWxfNzc4IiwiZmllbGRfc2V4cF83NzIkMiIsImZpZWxkX3NleHBfNzcyIiwieF83NzkiLCJmaWVsZF9zZXhwXzc3MiQwIiwiZnZhbHVlXzc3NSIsImZpZWxkX3NleHBfNzcyJDEiLCJmdmFsdWVfNzc0IiwiYWN0Xzc2OCIsInBhdF83NjYiLCJzZXhwX29mX2ZpbHRlciIsImFjdF83ODMiLCJwYXRfNzgxIiwiYXJnXzc4NCIsImJuZHNfNzgwIiwiYXJnXzc4MiIsImJuZHNfNzgwJDAiLCJmaWx0ZXJfb2ZfeW9qc29uIiwicGF0X2ZpZWxkIiwiYWN0X2ZpZWxkIiwiYWN0X3ZhbHVlIiwicGF0X3ZhbHVlIiwieW9qc29uX29mX2ZpbHRlciIsInZfYWN0Iiwidl9wYXQiLCJwcCQ3Iiwic2hvdyQ3IiwiXzEkMTIiLCJfMCQxNSIsInRfb2Zfc2V4cCQ5Iiwic2V4cF83ODkiLCJ0YWdfNzkwIiwic2V4cF9hcmdzXzc5NiIsImFyZzFfNzk4IiwiYXJnMF83OTciLCJyZXMwXzc5OSIsInJlczFfODAwIiwic2V4cF9hcmdzXzc5MSIsImFyZzBfNzkyIiwicmVzMF83OTMiLCJzZXhwX29mX3QkOSIsImFyZzBfODAxIiwicmVzMF84MDIiLCJhcmcxXzgwNCIsImFyZzBfODAzIiwicmVzMF84MDUiLCJyZXMxXzgwNiIsInRfb2ZfeW9qc29uJDgiLCJ5b2pzb25fb2ZfdCQ4IiwibWFwcGVyIiwiYWN0IiwicGF0IiwiYWN0JDAiLCJpZHgiLCJtYXBfdGVybSQ1IiwiZmFzdF9lcXVhbCQ1IiwiaG9sZSIsInRtcyIsImNsc19vZl90ZXJtIiwiZXJyb3Jfc291cmNlXzAyOSIsImVycm9yX3NvdXJjZV8wNTciLCJlcnJvcl9zb3VyY2VfMDcwIiwicHBfa2luZCIsInNob3dfa2luZCIsImtpbmRfb2Zfc2V4cCIsInNleHBfb2Zfa2luZCIsImtpbmRfb2ZfeW9qc29uIiwieW9qc29uX29mX2tpbmQiLCJwcF92YXJfZW50cnkiLCJzaG93X3Zhcl9lbnRyeSIsInZhcl9lbnRyeV9vZl9zZXhwIiwibmFtZV8wMTUiLCJpZF8wMTciLCJ0eXBfMDE5IiwiZHVwbGljYXRlc18wMjEiLCJleHRyYV8wMjIiLCJpdGVyXzAzMCIsImZpZWxkX25hbWVfMDIzIiwidGFpbF8wMzEiLCJmaWVsZF9zZXhwXzAyNCQzIiwiZmllbGRfc2V4cF8wMjQiLCJ4XzAzMiIsImZpZWxkX3NleHBfMDI0JDAiLCJmaWVsZF9zZXhwXzAyNCQxIiwiZnZhbHVlXzAyOCIsImZpZWxkX3NleHBfMDI0JDIiLCJmdmFsdWVfMDI3IiwidHlwXzAyMCIsImlkXzAxOCIsIm5hbWVfMDE2Iiwic2V4cF9vZl92YXJfZW50cnkiLCJ0eXBfMDM4IiwiaWRfMDM2IiwibmFtZV8wMzQiLCJibmRzXzAzMyIsImFyZ18wMzciLCJibmRzXzAzMyQwIiwiYXJnXzAzNSIsImJuZHNfMDMzJDEiLCJ2YXJfZW50cnlfb2ZfeW9qc29uIiwibmFtZV9maWVsZCIsInR5cF9maWVsZCIsInR5cF92YWx1ZSIsIm5hbWVfdmFsdWUiLCJ5b2pzb25fb2ZfdmFyX2VudHJ5Iiwidl90eXAiLCJ2X25hbWUiLCJwcF90dmFyX2VudHJ5Iiwic2hvd190dmFyX2VudHJ5IiwidHZhcl9lbnRyeV9vZl9zZXhwIiwic2V4cF8wNDEiLCJmaWVsZF9zZXhwc18wNDIiLCJuYW1lXzA0MyIsImlkXzA0NSIsImtpbmRfMDQ3IiwiZHVwbGljYXRlc18wNDkiLCJleHRyYV8wNTAiLCJpdGVyXzA1OCIsInNleHBfMDQxJDAiLCJmaWVsZF9zZXhwc18wNTMiLCJmaWVsZF9uYW1lXzA1MSIsInRhaWxfMDU5IiwiZmllbGRfc2V4cF8wNTIkMyIsImZpZWxkX3NleHBfMDUyIiwieF8wNjAiLCJmaWVsZF9zZXhwXzA1MiQwIiwiZnZhbHVlXzA1NiIsImZpZWxkX3NleHBfMDUyJDEiLCJmdmFsdWVfMDU0IiwiZmllbGRfc2V4cF8wNTIkMiIsImZ2YWx1ZV8wNTUiLCJraW5kXzA0OCIsImlkXzA0NiIsIm5hbWVfMDQ0Iiwic2V4cF9vZl90dmFyX2VudHJ5Iiwia2luZF8wNjYiLCJpZF8wNjQiLCJuYW1lXzA2MiIsImFyZ18wNjciLCJibmRzXzA2MSIsImFyZ18wNjUiLCJibmRzXzA2MSQwIiwiYXJnXzA2MyIsImJuZHNfMDYxJDEiLCJ0dmFyX2VudHJ5X29mX3lvanNvbiIsImtpbmRfZmllbGQiLCJraW5kX3ZhbHVlIiwieW9qc29uX29mX3R2YXJfZW50cnkiLCJ2X2tpbmQiLCJwcF9lbnRyeSIsInNob3dfZW50cnkiLCJlbnRyeV9vZl9zZXhwIiwic2V4cF8wNzIiLCJ0YWdfMDczIiwicmVzMF8wNzYiLCJzZXhwX2FyZ3NfMDg0IiwiYXJnMF8wODUiLCJyZXMwXzA4NiIsInNleHBfYXJnc18wNzkiLCJzZXhwX29mX2VudHJ5IiwiYXJnMF8wODciLCJyZXMwXzA4OCIsImFyZzBfMDg5IiwicmVzMF8wOTAiLCJlbnRyeV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZW50cnkiLCJ4XzA5NCIsInhfMDk1IiwiZW50cnkiLCJleHRlbmRfdHZhciIsInR2YXJfZW50cnkiLCJleHRlbmRfYWxpYXMiLCJleHRlbmRfZHVtbXlfdHZhciIsInR2YXIiLCJsb29rdXBfdHZhciIsImxvb2t1cF9hbGlhcyIsImdldF9pZCIsImxvb2t1cF92YXIiLCJsb29rdXBfY3RyIiwiaXNfYWxpYXMiLCJpc19hYnN0cmFjdCIsImFkZF9jdHJzIiwiY3RycyIsInR5cCIsInR5cCQwIiwic3VidHJhY3RfcHJlZml4IiwicHJlZml4X2N0eCIsInByZWZpeF9sZW5ndGgiLCJjdHhfbGVuZ3RoIiwiYWRkZWRfYmluZGluZ3MiLCJjdHhfYWZ0ZXIiLCJjdHhfYmVmb3JlIiwibmV3X2NvdW50IiwiZmlsdGVyX2R1cGxpY2F0ZXMiLCJ0eXBfc2V0IiwidGVybV9zZXQiLCJuYW1lJDAiLCJzaGFkb3dzX3R5cCIsIm1rX2Zhc3QiLCJpc19hcnJvdyIsInR5cCQxIiwiaXNfZm9yYWxsIiwidG9fdHlwIiwidXR5cCIsInV0eXAkMCIsInUiLCJ1dHMiLCJ0b19jdHJfbWFwIiwidXMiLCJ1dHlwJDEiLCJ1dHBhdCIsInRib2R5JDAiLCJ0Ym9keSIsInV0cGF0JDAiLCJ0Ym9keSQyIiwibmFtZSQxIiwiY3R4JDEiLCJ0Ym9keSQxIiwidG9fdmFyaWFudCIsInUkMCIsInBwX3NvdXJjZSIsInNob3dfc291cmNlIiwic291cmNlX29mX3NleHAiLCJ0eV8wMTAiLCJ0eV8wMTEiLCJzZXhwX29mX3NvdXJjZSIsInR5XzAyNiIsInNvdXJjZV9vZl95b2pzb24iLCJ0eV9maWVsZCIsInR5X3ZhbHVlIiwieW9qc29uX29mX3NvdXJjZSIsInZfdHkiLCJzb3VyY2UiLCJvZl9zb3VyY2UiLCJqb2luX3R5cGVfcHJvdmVuYW5jZSIsImgxIiwiaDIiLCJmcmVlX3ZhcnMiLCJib3VuZCIsIm9wdCQzIiwidmFyX2NvdW50IiwiZnJlc2hfdmFyIiwidmFyX25hbWUiLCJ1bnJvbGwiLCJ0eV9ib2R5IiwiZml4IiwicmVzb2x2ZSIsImpvaW4kMCIsInR5MiQ1IiwidHlfam9pbiIsInR5MSQwIiwidHkyJDAiLCJ0eTIkMSIsInR5MSQxIiwidHkyJDIiLCJ0eTEkMiIsInR5MSQzIiwidHkxJDQiLCJ0eTIkMyIsInR5MSQ1IiwidHkxJDYiLCJ0eTIkNCIsInR5MSQ3IiwidHlfbmFtZSIsInJld3JhcDEiLCJ0ZXJtMSIsImpvaW5fZml4Iiwiam9pbl9hbGwiLCJpc19jb25zaXN0ZW50Iiwid2Vha19oZWFkX25vcm1hbGl6ZSIsIm5vcm1hbGl6ZSIsInRzJDAiLCJ0cGF0IiwibWF0Y2hlZF9hcnJvdyIsInR5X291dCIsInR5X2luIiwibWF0Y2hlZF9mb3JhbGwiLCJtYXRjaGVkX3Byb2QiLCJtYXRjaGVkX2xpc3QiLCJtYXRjaGVkX2FyZ3MiLCJkZWZhdWx0X2FyaXR5IiwiZ2V0X3N1bV9jb25zdHJ1Y3RvcnMiLCJ0eV9ib2R5JDAiLCJzbSQwIiwiaXNfdW5rbm93biIsIm5lZWRzX3BhcmVucyIsInByZXR0eV9wcmludF90dmFyIiwidHYiLCJwcmV0dHlfcHJpbnQiLCJwYXJlbl9wcmV0dHlfcHJpbnQiLCJ0MCIsImN0cl9wcmV0dHlfcHJpbnQiLCJ0MCQwIiwidHYkMCIsInBhdCQwIiwicGF0JDEiLCJpc19mdW5fdmFyIiwicGF0JDIiLCJpc190dXBsZV9vZl9hcnJvd3MiLCJwYXRzIiwiaXNfdHVwbGVfb2ZfdmFycyIsImdldF92YXIiLCJnZXRfZnVuX3ZhciIsInZhciQwIiwiZ2V0X251bV9vZl92YXJzIiwiY3RyX25hbWUiLCJwcF9jbHMkMCIsInNob3dfY2xzJDAiLCJjbHNfb2Zfc2V4cCQwIiwic2V4cF9vZl9jbHMkMCIsImNsc19vZl95b2pzb24kMCIsInlvanNvbl9vZl9jbHMkMCIsImhvbGUkMCIsInJlcF9pZCQwIiwiZnJlc2gkMCIsInRlcm1fb2YkMCIsInVud3JhcCQwIiwiY2xzX29mX3Rlcm0kMCIsInNob3dfY2xzJDEiLCJpc190dXBsZV9vZl9mdW5jdGlvbnMiLCJjdHJfbmFtZSQwIiwiaXNfZGVmZXJyYWwiLCJnZXRfbnVtX29mX2Z1bmN0aW9ucyIsInBwX2NscyQxIiwic2hvd19jbHMkMiIsImNsc19vZl9zZXhwJDEiLCJzZXhwXzAyNiIsInNleHBfb2ZfY2xzJDEiLCJjbHNfb2ZfeW9qc29uJDEiLCJ5b2pzb25fb2ZfY2xzJDEiLCJhbnlfaWRzIiwidG0iLCJzY3J1dCIsInJlcF9pZCQxIiwiaXNfZXhwIiwiaXNfcGF0IiwiaXNfdHlwIiwiaWRzJDAiLCJ0bSQwIiwidG0kMSIsInRtJDIiLCJ0bSQzIiwicmVwX2lkJDIiLCJleHAiLCJyZXBsYWNlX2FsbF9pZHMiLCJyZXBhaXJfaWRzIiwic3RyaXBfY2FzdHMiLCJhc3NpZ25fbmFtZV9pZl9ub25lIiwiYm9keSIsImJvZHkkMCIsInR5X3N1YnN0Iiwic2V4cF9hcmdzXzA0MiIsImFyZzBfMDQzIiwicmVzMF8wNDQiLCJzZXhwX2FyZ3NfMDQ3Iiwic2V4cF9hcmdzXzA1MiIsImFyZzBfMDUzIiwicmVzMF8wNTQiLCJzZXhwX2FyZ3NfMDU3IiwiYXJnMF8wNTgiLCJyZXMwXzA1OSIsInNleHBfYXJnc18wNjIiLCJhcmcxXzA2NCIsImFyZzBfMDYzIiwicmVzMF8wNjUiLCJyZXMxXzA2NiIsImFyZzBfMDcyIiwicmVzMF8wNzMiLCJhcmcwXzA3NCIsInJlczBfMDc1IiwiYXJnMF8wODYiLCJyZXMwXzA4NyIsImFyZzBfMDg4IiwicmVzMF8wODkiLCJhcmcwXzA5MCIsInJlczBfMDkxIiwiYXJnMF8wOTIiLCJyZXMwXzA5MyIsImFyZzFfMDk1IiwiYXJnMF8wOTQiLCJyZXMwXzA5NiIsInJlczFfMDk3IiwiYXJnMF8wOTgiLCJyZXMwXzA5OSIsInBwX2J1aWx0aW4iLCJzaG93X2J1aWx0aW4iLCJidWlsdGluX29mX3NleHAiLCJhcmcyXzAxNyIsInJlczJfMDIwIiwic2V4cF9vZl9idWlsdGluIiwiYXJnMV8wMjIiLCJyZXMwXzAyMyIsInJlczFfMDI0IiwiYXJnMV8wMjYiLCJhcmcwXzAyNSIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJyZXMyXzAzMCIsImJ1aWx0aW5fb2ZfeW9qc29uIiwieW9qc29uX29mX2J1aWx0aW4iLCJwcF9mb3JtcyIsInNob3dfZm9ybXMiLCJmb3Jtc19vZl9zZXhwIiwic2V4cF9vZl9mb3JtcyIsImZvcm1zX29mX3lvanNvbiIsInlvanNvbl9vZl9mb3JtcyIsImNvbnN0JDAiLCJidWlsdGlucyIsImZuIiwiaW1wbCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwiZXBzaWxvbl9mbG9hdCIsInBpIiwibWF4X2ludCIsIm1pbl9pbnQiLCJ1bmFyeSIsImJpbmFyeSIsInRlcm5hcnkiLCJkMyIsImlzX2Zpbml0ZSIsImlzX2luZmluaXRlIiwiaXNfbmFuIiwic3RyaW5nX29mX2ludCIsInN0cmluZ19vZl9mbG9hdCIsInN0cmluZ19vZl9ib29sIiwiaW50X29mX2Zsb2F0IiwiZmxvYXRfb2ZfaW50IiwiYWJzIiwiZmxvYXRfb3AiLCJhYnNfZmxvYXQiLCJjZWlsIiwiZmxvb3IiLCJzcXJ0IiwibG9nIiwibG9nMTAiLCJzaW4iLCJjb3MiLCJ0YW4iLCJhc2luIiwiYWNvcyIsImF0YW4iLCJjb252ZXJ0IiwiZCQwIiwiZCQxIiwiZCQyIiwiaW50X29mX3N0cmluZyIsImZsb2F0X29mX3N0cmluZyIsImJvb2xfb2Zfc3RyaW5nIiwiaW50X21vZCIsInN0cmluZ19sZW5ndGgiLCJzdHJpbmdfY29tcGFyZSIsInN0cmluZ190cmltIiwic3RyaW5nX29mIiwic3RyaW5nX2NvbmNhdCIsInN0cmluZ19zdWIiLCJsZW4iLCJtZXRhX2NvbnNfbWFwIiwibWV0YSIsImN0eF9pbml0IiwiZm9ybXNfaW5pdCIsImVudl9pbml0IiwicmVzMF8wMzgiLCJhcmcwXzAzOSIsInJlczBfMDQwIiwicmVzMF8wNDYiLCJjbHMiLCJjbHMkMCIsImNscyQxIiwiY2xzJDIiLCJjbHMkMyIsImNscyQ0IiwiY2xzJDUiLCJpZF8wMDQiLCJleHBlY3RlZF90eV8wMDYiLCJleHBlY3RlZF90eV8wMDciLCJleHBlY3RlZF90eV8wMjIiLCJpZF8wMjAiLCJleHBlY3RlZF90eV9maWVsZCIsImV4cGVjdGVkX3R5X3ZhbHVlIiwidl9leHBlY3RlZF90eSIsInhfMDI1IiwieF8wMjYiLCJjb19jdHgiLCJjb19jdHgxIiwiY29fY3R4MiIsInVuaW9uIiwic2luZ2xldG9uIiwiZXhwZWN0ZWRfdHkiLCJlbnRyaWVzIiwiZXhwZWN0ZWRfdHlzIiwiYW5hIiwidHlfb2YiLCJvZl9hcnJvdyIsIm9mX2ZvcmFsbCIsIm5hbWVfb3B0IiwiaXRlbSIsIm5hbWVfZXhwZWN0ZWRfb3B0IiwibmFtZV9leHBlY3RlZCIsIm9mX3Byb2QiLCJvZl9jb25zX2hkIiwib2ZfY29uc190bCIsImhkX3R5Iiwib2ZfbGlzdF9jb25jYXQiLCJvZl9saXN0X2xpdCIsImN0cl9hbmFfdHlwIiwidHlfYW5hIiwidHlfZW50cnkiLCJvZl9jdHJfaW5fYXAiLCJvZl9hcCIsIm1vZGUkMCIsInR5cGFwX21vZGUiLCJvZl9kZWZlcnJlZF9hcF9hcmdzIiwidHlfaW5zIiwidHlfaW5zJDAiLCJlcnJvcl9zb3VyY2VfMDY1IiwiZXJyb3Jfc291cmNlXzA5MSIsImVycm9yX3NvdXJjZV8xMjMiLCJwcF9qb2luX3R5cGUiLCJzaG93X2pvaW5fdHlwZSIsImpvaW5fdHlwZV9vZl9zZXhwIiwic2V4cF9vZl9qb2luX3R5cGUiLCJqb2luX3R5cGVfb2ZfeW9qc29uIiwieW9qc29uX29mX2pvaW5fdHlwZSIsImFzeW5fdHkiLCJhbmFtZSIsInNleHBfYXJnc18wMjMiLCJhcmcwXzAyNCIsInNleHBfYXJnc18wMjgiLCJhcmcwXzAyOSIsInN5bl90eV8wMzYiLCJkdXBsaWNhdGVzXzAzOCIsImV4dHJhXzAzOSIsIml0ZXJfMDQ1Iiwic2V4cF8wMzIiLCJmaWVsZF9uYW1lXzA0MCIsInRhaWxfMDQ2IiwiZmllbGRfc2V4cF8wNDEkMiIsImZpZWxkX3NleHBfMDQxIiwieF8wNDciLCJmaWVsZF9zZXhwXzA0MSQwIiwiZmllbGRfc2V4cF8wNDEkMSIsInN5bl90eV8wMzciLCJuYW1lXzAzNSIsImFyZzFfMDE4IiwicmVzMV8wMjAiLCJyZXMwXzA1NyIsInN5bl90eV8wNjEiLCJuYW1lXzA1OSIsImJuZHNfMDU4IiwiYm5kc18wNTgkMCIsInN5bl90eV9maWVsZCIsInN5bl90eV92YWx1ZSIsInZfc3luX3R5IiwicHBfZXJyb3JfcGFydGlhbF9hcCIsImFhY3R1YWwiLCJhZXhwZWN0ZWQiLCJzaG93X2Vycm9yX3BhcnRpYWxfYXAiLCJlcnJvcl9wYXJ0aWFsX2FwX29mX3NleHAiLCJzZXhwXzA2OCIsImZpZWxkX3NleHBzXzA2NyIsImV4cGVjdGVkXzA3MCIsImFjdHVhbF8wNzIiLCJkdXBsaWNhdGVzXzA3NCIsImV4dHJhXzA3NSIsIml0ZXJfMDgxIiwic2V4cF8wNjgkMCIsImZpZWxkX3NleHBzXzA3OCIsImZpZWxkX25hbWVfMDc2IiwidGFpbF8wODIiLCJmaWVsZF9zZXhwXzA3NyQyIiwiZmllbGRfc2V4cF8wNzciLCJ4XzA4MyIsImZpZWxkX3NleHBfMDc3JDAiLCJmdmFsdWVfMDgwIiwiZmllbGRfc2V4cF8wNzckMSIsImZ2YWx1ZV8wNzkiLCJhY3R1YWxfMDczIiwiZXhwZWN0ZWRfMDcxIiwic2V4cF9vZl9lcnJvcl9wYXJ0aWFsX2FwIiwiYWN0dWFsXzA4NyIsImV4cGVjdGVkXzA4NSIsImFyZ18wODgiLCJibmRzXzA4NCIsImFyZ18wODYiLCJibmRzXzA4NCQwIiwiZXJyb3JfcGFydGlhbF9hcF9vZl95b2pzb24iLCJleHBlY3RlZF9maWVsZCIsImFjdHVhbF9maWVsZCIsImFjdHVhbF92YWx1ZSIsImV4cGVjdGVkX3ZhbHVlIiwieW9qc29uX29mX2Vycm9yX3BhcnRpYWxfYXAiLCJ2X2FjdHVhbCIsInZfZXhwZWN0ZWQiLCJwcF9leHAiLCJzaG93X2V4cCIsImV4cF9vZl9zZXhwIiwic2V4cF8wOTMiLCJ0YWdfMDk0Iiwic2V4cF9vZl9leHAiLCJhcmcwXzExMyIsInJlczBfMTE0IiwiYXJnMF8xMTUiLCJyZXMwXzExNiIsImFyZzBfMTE3IiwicmVzMF8xMTgiLCJhcmcwXzExOSIsInJlczBfMTIwIiwiZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9leHAiLCJwcF9wYXQiLCJzaG93X3BhdCIsInBhdF9vZl9zZXhwIiwic2V4cF8xMjUiLCJ0YWdfMTI2Iiwic2V4cF9hcmdzXzEyNyIsImFyZzBfMTI4IiwicmVzMF8xMjkiLCJzZXhwX29mX3BhdCIsImFyZzBfMTMwIiwicmVzMF8xMzEiLCJwYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX3BhdCIsImpvaW5fb2YiLCJ0eXBfb2YiLCJzeW5fdHkiLCJ0eXBfb2ZfZXhwIiwic2VsZiIsInR5cF9vZl9wYXQiLCJvZl9leHBfdmFyIiwib2ZfY3RyIiwib2ZfZGVmZXJyZWRfYXAiLCJleHBlY3RlZCIsImFjdHVhbCIsImFkZF9zb3VyY2UiLCJsaXN0bGl0IiwibGlzdF9jb25jYXQiLCJlcnJvcl9zb3VyY2VfMDQ2IiwiZXJyb3Jfc291cmNlXzA3MSIsImVycm9yX3NvdXJjZV8wODkiLCJlcnJvcl9zb3VyY2VfMTE0IiwiZXJyb3Jfc291cmNlXzEyNSIsImVycm9yX3NvdXJjZV8xNzgiLCJlcnJvcl9zb3VyY2VfMTk2IiwiZXJyb3Jfc291cmNlXzIxNSIsImVycm9yX3NvdXJjZV8yMzMiLCJlcnJvcl9zb3VyY2VfMjUxIiwiZXJyb3Jfc291cmNlXzI2OSIsImVycm9yX3NvdXJjZV8yNzMiLCJ0cF9sb2MkMTEiLCJlcnJvcl9zb3VyY2VfMjk5IiwidHBfbG9jJDEyIiwiZXJyb3Jfc291cmNlXzMzMSIsInRwX2xvYyQxMyIsImVycm9yX3NvdXJjZV8zNzEiLCJ0cF9sb2MkMTQiLCJlcnJvcl9zb3VyY2VfMzg5IiwidHBfbG9jJDE1IiwiZXJyb3Jfc291cmNlXzM5MyIsInRwX2xvYyQxNiIsImVycm9yX3NvdXJjZV8zOTciLCJ0cF9sb2MkMTciLCJlcnJvcl9zb3VyY2VfNDE5IiwidHBfbG9jJDE4IiwiZXJyb3Jfc291cmNlXzQzMCIsInRwX2xvYyQxOSIsImVycm9yX3NvdXJjZV80ODEiLCJ0cF9sb2MkMjAiLCJlcnJvcl9zb3VyY2VfNTQyIiwidHBfbG9jJDIxIiwiZXJyb3Jfc291cmNlXzU5NiIsInRwX2xvYyQyMiIsImVycm9yX3NvdXJjZV82MzgiLCJ0cF9sb2MkMjMiLCJlcnJvcl9zb3VyY2VfNjczIiwidHBfbG9jJDI0IiwiZXJyb3Jfc291cmNlXzY4OCIsInRwX2xvYyQyNSIsImVycm9yX3NvdXJjZV83MjciLCJ0cF9sb2MkMjYiLCJwcF9hbmNlc3RvcnMiLCJzaG93X2FuY2VzdG9ycyIsImFuY2VzdG9yc19vZl9zZXhwIiwic2V4cF9vZl9hbmNlc3RvcnMiLCJhbmNlc3RvcnNfb2ZfeW9qc29uIiwieW9qc29uX29mX2FuY2VzdG9ycyIsInBwX2Vycm9yX2luY29uc2lzdGVudCIsInNob3dfZXJyb3JfaW5jb25zaXN0ZW50IiwiYXN5biIsImFhbmEiLCJlcnJvcl9pbmNvbnNpc3RlbnRfb2Zfc2V4cCIsImZpZWxkX3NleHBzXzAwOCIsImFuYV8wMTEiLCJzeW5fMDEzIiwiaXRlcl8wMjIiLCJzZXhwXzAwOSQwIiwidGFpbF8wMjMiLCJ4XzAyNCIsImZ2YWx1ZV8wMjAiLCJmdmFsdWVfMDIxIiwic3luXzAxNCIsImFuYV8wMTIiLCJzZXhwX29mX2Vycm9yX2luY29uc2lzdGVudCIsInN5bl8wMzgiLCJhbmFfMDM2IiwiYm5kc18wMzUiLCJibmRzXzAzNSQwIiwiZXJyb3JfaW5jb25zaXN0ZW50X29mX3lvanNvbiIsImFuYV9maWVsZCIsInN5bl9maWVsZCIsInN5bl92YWx1ZSIsImFuYV92YWx1ZSIsInlvanNvbl9vZl9lcnJvcl9pbmNvbnNpc3RlbnQiLCJ2X3N5biIsInZfYW5hIiwicHBfZXJyb3Jfbm9fdHlwZSIsInNob3dfZXJyb3Jfbm9fdHlwZSIsImVycm9yX25vX3R5cGVfb2Zfc2V4cCIsInNleHBfMDQ4IiwidGFnXzA0OSIsInNleHBfYXJnc18wNTUiLCJzZXhwX2FyZ3NfMDUwIiwiYXJnMF8wNTEiLCJzZXhwX29mX2Vycm9yX25vX3R5cGUiLCJyZXMwXzA2NCIsImVycm9yX25vX3R5cGVfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX25vX3R5cGUiLCJwcF9lcnJvcl9jb21tb24iLCJzaG93X2Vycm9yX2NvbW1vbiIsImVycm9yX2NvbW1vbl9vZl9zZXhwIiwic2V4cF8wNzMiLCJ0YWdfMDc0Iiwic2V4cF9hcmdzXzA4MCIsImFyZzBfMDgxIiwicmVzMF8wODIiLCJzZXhwX29mX2Vycm9yX2NvbW1vbiIsImFyZzBfMDgzIiwicmVzMF8wODQiLCJlcnJvcl9jb21tb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yX2NvbW1vbiIsInBwX2Vycm9yX2V4cCIsInNob3dfZXJyb3JfZXhwIiwiZXJyb3JfZXhwX29mX3NleHAiLCJzZXhwXzA5MSIsInRhZ18wOTIiLCJzZXhwX2FyZ3NfMDkzIiwicmVzMF8wOTUiLCJzZXhwX2FyZ3NfMTAzIiwiYXJnMF8xMDQiLCJyZXMwXzEwNSIsInNleHBfYXJnc18wOTgiLCJhcmcwXzA5OSIsInJlczBfMTAwIiwic2V4cF9vZl9lcnJvcl9leHAiLCJhcmcwXzEwOCIsInJlczBfMTA5IiwiYXJnMF8xMTAiLCJyZXMwXzExMSIsImVycm9yX2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfZXhwIiwicHBfZXJyb3JfcGF0Iiwic2hvd19lcnJvcl9wYXQiLCJlcnJvcl9wYXRfb2Zfc2V4cCIsInNleHBfMTE2IiwidGFnXzExNyIsInNleHBfYXJnc18xMTgiLCJzZXhwX29mX2Vycm9yX3BhdCIsImVycm9yX3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfcGF0IiwicHBfb2tfYW5hIiwic2hvd19va19hbmEiLCJham9pbiIsImFub2pvaW4iLCJhYW5hJDAiLCJva19hbmFfb2Zfc2V4cCIsInNleHBfMTI4IiwiZmllbGRfc2V4cHNfMTQ3IiwiYW5hXzE1MCIsIm5vam9pbl8xNTIiLCJkdXBsaWNhdGVzXzE1NCIsImV4dHJhXzE1NSIsIml0ZXJfMTYxIiwic2V4cF8xNDgiLCJmaWVsZF9zZXhwc18xNTgiLCJmaWVsZF9uYW1lXzE1NiIsInRhaWxfMTYyIiwiZmllbGRfc2V4cF8xNTckMiIsImZpZWxkX3NleHBfMTU3IiwieF8xNjMiLCJmaWVsZF9zZXhwXzE1NyQwIiwiZnZhbHVlXzE1OSIsImZpZWxkX3NleHBfMTU3JDEiLCJmdmFsdWVfMTYwIiwibm9qb2luXzE1MyIsImFuYV8xNTEiLCJmaWVsZF9zZXhwc18xMjciLCJhbmFfMTMwIiwic3luXzEzMiIsImpvaW5fMTM0IiwiZHVwbGljYXRlc18xMzYiLCJleHRyYV8xMzciLCJpdGVyXzE0NCIsInNleHBfMTI4JDAiLCJmaWVsZF9zZXhwc18xNDAiLCJmaWVsZF9uYW1lXzEzOCIsInRhaWxfMTQ1IiwiZmllbGRfc2V4cF8xMzkkMyIsImZpZWxkX3NleHBfMTM5IiwieF8xNDYiLCJmaWVsZF9zZXhwXzEzOSQwIiwiZnZhbHVlXzE0MiIsImZpZWxkX3NleHBfMTM5JDEiLCJmdmFsdWVfMTQxIiwiZmllbGRfc2V4cF8xMzkkMiIsImZ2YWx1ZV8xNDMiLCJqb2luXzEzNSIsInN5bl8xMzMiLCJhbmFfMTMxIiwic2V4cF9vZl9va19hbmEiLCJqb2luXzE2OSIsInN5bl8xNjciLCJhbmFfMTY1IiwiYXJnXzE3MCIsImJuZHNfMTY0IiwiYXJnXzE2OCIsImJuZHNfMTY0JDAiLCJhcmdfMTY2IiwiYm5kc18xNjQkMSIsIm5vam9pbl8xNzQiLCJhbmFfMTcyIiwiYXJnXzE3NSIsImJuZHNfMTcxIiwiYXJnXzE3MyIsImJuZHNfMTcxJDAiLCJva19hbmFfb2ZfeW9qc29uIiwibm9qb2luX2ZpZWxkIiwibm9qb2luX3ZhbHVlIiwiZmllbGRfeW9qc29ucyQwIiwiYW5hX2ZpZWxkJDAiLCJqb2luX2ZpZWxkIiwiZHVwbGljYXRlcyQwIiwiZXh0cmEkMCIsIml0ZXIkMCIsImpvaW5fdmFsdWUiLCJhbmFfdmFsdWUkMCIsInlvanNvbl9vZl9va19hbmEiLCJ2X2pvaW4iLCJ2X25vam9pbiIsInZfYW5hJDAiLCJwcF9va19jb21tb24iLCJzaG93X29rX2NvbW1vbiIsIm9rX2NvbW1vbl9vZl9zZXhwIiwic2V4cF8xODAiLCJ0YWdfMTgxIiwicmVzMF8xODQiLCJzZXhwX2FyZ3NfMTg3IiwiYXJnMF8xODgiLCJyZXMwXzE4OSIsInNleHBfb2Zfb2tfY29tbW9uIiwiYXJnMF8xOTAiLCJyZXMwXzE5MSIsInJlczBfMTkzIiwib2tfY29tbW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9va19jb21tb24iLCJwcF9va19leHAiLCJzaG93X29rX2V4cCIsIm9rX2V4cF9vZl9zZXhwIiwic2V4cF8xOTgiLCJ0YWdfMTk5IiwicmVzMF8yMDciLCJzZXhwX2FyZ3NfMjAwIiwiYXJnMF8yMDEiLCJyZXMwXzIwMiIsInNleHBfb2Zfb2tfZXhwIiwiYXJnMF8yMDgiLCJhcmcwXzIxMCIsInJlczBfMjExIiwib2tfZXhwX29mX3lvanNvbiIsInlvanNvbl9vZl9va19leHAiLCJwcF9va19wYXQiLCJzaG93X29rX3BhdCIsInBwX3N0YXR1c19jb21tb24iLCJzaG93X3N0YXR1c19jb21tb24iLCJzdGF0dXNfY29tbW9uX29mX3NleHAiLCJzZXhwXzIxNyIsInRhZ18yMTgiLCJzZXhwX2FyZ3NfMjI0IiwiYXJnMF8yMjUiLCJyZXMwXzIyNiIsInNleHBfYXJnc18yMTkiLCJhcmcwXzIyMCIsInJlczBfMjIxIiwic2V4cF9vZl9zdGF0dXNfY29tbW9uIiwicmVzMF8yMjgiLCJhcmcwXzIyOSIsInJlczBfMjMwIiwic3RhdHVzX2NvbW1vbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX2NvbW1vbiIsInBwX3N0YXR1c19leHAiLCJzaG93X3N0YXR1c19leHAiLCJzdGF0dXNfZXhwX29mX3NleHAiLCJzZXhwXzIzNSIsInRhZ18yMzYiLCJzZXhwX2FyZ3NfMjQyIiwiYXJnMF8yNDMiLCJyZXMwXzI0NCIsInNleHBfYXJnc18yMzciLCJhcmcwXzIzOCIsInJlczBfMjM5Iiwic2V4cF9vZl9zdGF0dXNfZXhwIiwiYXJnMF8yNDUiLCJyZXMwXzI0NiIsImFyZzBfMjQ3Iiwic3RhdHVzX2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX2V4cCIsInBwX3N0YXR1c19wYXQiLCJzaG93X3N0YXR1c19wYXQiLCJzdGF0dXNfcGF0X29mX3NleHAiLCJzZXhwXzI1MyIsInRhZ18yNTQiLCJzZXhwX2FyZ3NfMjYwIiwiYXJnMF8yNjEiLCJzZXhwX2FyZ3NfMjU1IiwiYXJnMF8yNTYiLCJyZXMwXzI1NyIsInNleHBfb2Zfc3RhdHVzX3BhdCIsImFyZzBfMjYzIiwicmVzMF8yNjQiLCJhcmcwXzI2NSIsInJlczBfMjY2Iiwic3RhdHVzX3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3BhdCIsInBwX3N0YXR1c192YXJpYW50Iiwic2hvd19zdGF0dXNfdmFyaWFudCIsInN0YXR1c192YXJpYW50X29mX3NleHAiLCJzZXhwXzI3MCIsInNleHBfb2Zfc3RhdHVzX3ZhcmlhbnQiLCJzdGF0dXNfdmFyaWFudF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3ZhcmlhbnQiLCJwcF90eXBfZXhwZWN0cyIsInNob3dfdHlwX2V4cGVjdHMiLCJ0eXBfZXhwZWN0c19vZl9zZXhwIiwic2V4cF8yNzUiLCJ0YWdfMjc2Iiwic2V4cF9hcmdzXzI4NCIsImFyZzFfMjg2IiwiYXJnMF8yODUiLCJyZXMwXzI4NyIsInJlczFfMjg4Iiwic2V4cF9hcmdzXzI3NyIsImFyZzFfMjc5IiwiYXJnMF8yNzgiLCJyZXMwXzI4MCIsInJlczFfMjgxIiwic2V4cF9vZl90eXBfZXhwZWN0cyIsImFyZzFfMjkwIiwiYXJnMF8yODkiLCJyZXMwXzI5MSIsInJlczFfMjkyIiwicmVzMF8yOTUiLCJyZXMxXzI5NiIsInR5cF9leHBlY3RzX29mX3lvanNvbiIsInlvanNvbl9vZl90eXBfZXhwZWN0cyIsInBwX2Vycm9yX3R5cCIsInNob3dfZXJyb3JfdHlwIiwiXzIkNCIsImVycm9yX3R5cF9vZl9zZXhwIiwic2V4cF8zMDEiLCJ0YWdfMzAyIiwic2V4cF9hcmdzXzMwMyIsImFyZzBfMzA0IiwicmVzMF8zMDUiLCJzZXhwX2FyZ3NfMzEzIiwiYXJnMF8zMTQiLCJyZXMwXzMxNSIsInNleHBfYXJnc18zMDgiLCJyZXMwXzMxMCIsInNleHBfYXJnc18zMTgiLCJzZXhwX29mX2Vycm9yX3R5cCIsImVycm9yX3R5cF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfdHlwIiwicHBfb2tfdHlwIiwic2hvd19va190eXAiLCJfMiQ1Iiwib2tfdHlwX29mX3NleHAiLCJzZXhwXzMzMyIsInRhZ18zMzQiLCJzZXhwX2FyZ3NfMzQyIiwic2V4cF9hcmdzXzMzNSIsImFyZzFfMzM3IiwiYXJnMF8zMzYiLCJyZXMwXzMzOCIsInJlczFfMzM5Iiwic2V4cF9hcmdzXzM0NyIsImFyZzFfMzQ5IiwiYXJnMF8zNDgiLCJzZXhwX2FyZ3NfMzU0IiwiYXJnMF8zNTUiLCJzZXhwX29mX29rX3R5cCIsImFyZzFfMzU4IiwiYXJnMF8zNTciLCJyZXMwXzM1OSIsInJlczFfMzYwIiwiYXJnMF8zNjEiLCJhcmcxXzM2NCIsImFyZzBfMzYzIiwicmVzMF8zNjUiLCJyZXMxXzM2NiIsImFyZzBfMzY3Iiwib2tfdHlwX29mX3lvanNvbiIsInlvanNvbl9vZl9va190eXAiLCJwcF9zdGF0dXNfdHlwIiwic2hvd19zdGF0dXNfdHlwIiwic3RhdHVzX3R5cF9vZl9zZXhwIiwic2V4cF8zNzMiLCJ0YWdfMzc0Iiwic2V4cF9hcmdzXzM4MCIsImFyZzBfMzgxIiwic2V4cF9hcmdzXzM3NSIsImFyZzBfMzc2Iiwic2V4cF9vZl9zdGF0dXNfdHlwIiwiYXJnMF8zODMiLCJyZXMwXzM4NCIsInJlczBfMzg2Iiwic3RhdHVzX3R5cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RhdHVzX3R5cCIsInBwX3R5cGVfdmFyX2VyciIsInNob3dfdHlwZV92YXJfZXJyIiwidHlwZV92YXJfZXJyX29mX3NleHAiLCJzZXhwXzM5MCIsInNleHBfb2ZfdHlwZV92YXJfZXJyIiwidHlwZV92YXJfZXJyX29mX3lvanNvbiIsInlvanNvbl9vZl90eXBlX3Zhcl9lcnIiLCJwcF9zaGFkb3dfc3JjIiwic2hvd19zaGFkb3dfc3JjIiwic2hhZG93X3NyY19vZl9zZXhwIiwic2V4cF8zOTQiLCJzZXhwX29mX3NoYWRvd19zcmMiLCJzaGFkb3dfc3JjX29mX3lvanNvbiIsInlvanNvbl9vZl9zaGFkb3dfc3JjIiwicHBfZXJyb3JfdHBhdCIsInNob3dfZXJyb3JfdHBhdCIsIl8xJDEzIiwiXzAkMTYiLCJlcnJvcl90cGF0X29mX3NleHAiLCJzZXhwXzM5OSIsInRhZ180MDAiLCJzZXhwX2FyZ3NfNDAxIiwiYXJnMV80MDMiLCJhcmcwXzQwMiIsInJlczBfNDA0IiwicmVzMV80MDUiLCJzZXhwX2FyZ3NfNDA4IiwicmVzMF80MTAiLCJzZXhwX29mX2Vycm9yX3RwYXQiLCJhcmcxXzQxMiIsImFyZzBfNDExIiwicmVzMF80MTMiLCJyZXMxXzQxNCIsImFyZzBfNDE1IiwiZXJyb3JfdHBhdF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXJyb3JfdHBhdCIsInBwX29rX3RwYXQiLCJzaG93X29rX3RwYXQiLCJva190cGF0X29mX3NleHAiLCJzZXhwXzQyMSIsInRhZ180MjIiLCJzZXhwX2FyZ3NfNDIzIiwiYXJnMF80MjQiLCJyZXMwXzQyNSIsInNleHBfb2Zfb2tfdHBhdCIsImFyZzBfNDI2Iiwib2tfdHBhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfb2tfdHBhdCIsInBwX3N0YXR1c190cGF0Iiwic2hvd19zdGF0dXNfdHBhdCIsIl8xJDE0IiwiXzAkMTciLCJzdGF0dXNfdHBhdF9vZl9zZXhwIiwic2V4cF80MzIiLCJ0YWdfNDMzIiwic2V4cF9hcmdzXzQzNCIsImFyZzBfNDM1IiwicmVzMF80MzYiLCJzZXhwX2FyZ3NfNDM5IiwiYXJnMF80NDAiLCJyZXMwXzQ0MSIsInNleHBfb2Zfc3RhdHVzX3RwYXQiLCJhcmcwXzQ0MiIsInJlczBfNDQzIiwiYXJnMF80NDQiLCJyZXMwXzQ0NSIsInN0YXR1c190cGF0X29mX3lvanNvbiIsInlvanNvbl9vZl9zdGF0dXNfdHBhdCIsIl8yJDYiLCJfMSQxNSIsIl8wJDE4Iiwic2V4cF80NDciLCJmaWVsZF9zZXhwc180NDgiLCJ0ZXJtXzQ0OSIsImFuY2VzdG9yc180NTEiLCJjdHhfNDUzIiwibW9kZV80NTUiLCJzZWxmXzQ1NyIsImNvX2N0eF80NTkiLCJjbHNfNDYxIiwic3RhdHVzXzQ2MyIsInR5XzQ2NSIsImR1cGxpY2F0ZXNfNDY3IiwiZXh0cmFfNDY4IiwiaXRlcl80ODIiLCJzZXhwXzQ0NyQwIiwiZmllbGRfc2V4cHNfNDcxIiwiZmllbGRfbmFtZV80NjkiLCJ0YWlsXzQ4MyIsImZpZWxkX3NleHBfNDcwJDkiLCJmaWVsZF9zZXhwXzQ3MCIsInhfNDg0IiwiZmllbGRfc2V4cF80NzAkMCIsImZ2YWx1ZV80NzIiLCJmaWVsZF9zZXhwXzQ3MCQxIiwiZnZhbHVlXzQ4MCIsImZpZWxkX3NleHBfNDcwJDIiLCJmdmFsdWVfNDczIiwiZmllbGRfc2V4cF80NzAkMyIsImZ2YWx1ZV80NzYiLCJmaWVsZF9zZXhwXzQ3MCQ0IiwiZnZhbHVlXzQ3NyIsImZpZWxkX3NleHBfNDcwJDUiLCJmdmFsdWVfNDc4IiwiZmllbGRfc2V4cF80NzAkNiIsImZ2YWx1ZV80NzUiLCJmaWVsZF9zZXhwXzQ3MCQ3IiwiZnZhbHVlXzQ3NCIsImZpZWxkX3NleHBfNDcwJDgiLCJmdmFsdWVfNDc5IiwidHlfNDY2Iiwic3RhdHVzXzQ2NCIsImNsc180NjIiLCJjb19jdHhfNDYwIiwic2VsZl80NTgiLCJtb2RlXzQ1NiIsImN0eF80NTQiLCJhbmNlc3RvcnNfNDUyIiwidGVybV80NTAiLCJ0eV81MDIiLCJzdGF0dXNfNTAwIiwiY2xzXzQ5OCIsImNvX2N0eF80OTYiLCJzZWxmXzQ5NCIsIm1vZGVfNDkyIiwiY3R4XzQ5MCIsImFuY2VzdG9yc180ODgiLCJ0ZXJtXzQ4NiIsImFyZ181MDMiLCJibmRzXzQ4NSIsImFyZ181MDEiLCJibmRzXzQ4NSQwIiwiYXJnXzQ5OSIsImJuZHNfNDg1JDEiLCJhcmdfNDk3IiwiYm5kc180ODUkMiIsImFyZ180OTUiLCJibmRzXzQ4NSQzIiwiYXJnXzQ5MyIsImJuZHNfNDg1JDQiLCJhcmdfNDkxIiwiYm5kc180ODUkNSIsImFyZ180ODkiLCJibmRzXzQ4NSQ2IiwiYXJnXzQ4NyIsImJuZHNfNDg1JDciLCJjdHhfZmllbGQiLCJzZWxmX2ZpZWxkIiwiY29fY3R4X2ZpZWxkIiwiY2xzX2ZpZWxkIiwic3RhdHVzX2ZpZWxkIiwiZnZhbHVlJDQiLCJmdmFsdWUkNSIsImZ2YWx1ZSQ2IiwiZnZhbHVlJDciLCJzdGF0dXNfdmFsdWUiLCJjbHNfdmFsdWUiLCJjb19jdHhfdmFsdWUiLCJzZWxmX3ZhbHVlIiwiY3R4X3ZhbHVlIiwidl9zdGF0dXMiLCJ2X2NscyIsInZfY29fY3R4Iiwidl9zZWxmIiwidl9jdHgiLCJhcmckNCIsImJuZHMkNCIsImFyZyQ1IiwiYm5kcyQ1IiwiYXJnJDYiLCJibmRzJDYiLCJhcmckNyIsImJuZHMkNyIsIl8zJDQiLCJfMiQ3IiwiXzEkMTYiLCJfMCQxOSIsInNleHBfNTA1IiwiZmllbGRfc2V4cHNfNTA2IiwidGVybV81MDciLCJhbmNlc3RvcnNfNTA5IiwiY3R4XzUxMSIsImNvX2N0eF81MTMiLCJwcmV2X3N5bnN3aXRjaF81MTUiLCJtb2RlXzUxNyIsInNlbGZfNTE5IiwiY2xzXzUyMSIsInN0YXR1c181MjMiLCJ0eV81MjUiLCJkdXBsaWNhdGVzXzUyNyIsImV4dHJhXzUyOCIsIml0ZXJfNTQzIiwic2V4cF81MDUkMCIsImZpZWxkX3NleHBzXzUzMSIsImZpZWxkX25hbWVfNTI5IiwidGFpbF81NDQiLCJmaWVsZF9zZXhwXzUzMCQxMCIsImZpZWxkX3NleHBfNTMwIiwieF81NDUiLCJmaWVsZF9zZXhwXzUzMCQwIiwiZnZhbHVlXzUzMiIsImZpZWxkX3NleHBfNTMwJDEiLCJmdmFsdWVfNTQxIiwiZmllbGRfc2V4cF81MzAkMiIsImZ2YWx1ZV81MzMiLCJmaWVsZF9zZXhwXzUzMCQzIiwiZnZhbHVlXzUzNSIsImZpZWxkX3NleHBfNTMwJDQiLCJmdmFsdWVfNTM3IiwiZmllbGRfc2V4cF81MzAkNSIsImZ2YWx1ZV81MzYiLCJmaWVsZF9zZXhwXzUzMCQ2IiwiZnZhbHVlXzUzOSIsImZpZWxkX3NleHBfNTMwJDciLCJmdmFsdWVfNTM4IiwiZmllbGRfc2V4cF81MzAkOCIsImZ2YWx1ZV81MzQiLCJmaWVsZF9zZXhwXzUzMCQ5IiwiZnZhbHVlXzU0MCIsInR5XzUyNiIsInN0YXR1c181MjQiLCJjbHNfNTIyIiwic2VsZl81MjAiLCJtb2RlXzUxOCIsInByZXZfc3luc3dpdGNoXzUxNiIsImNvX2N0eF81MTQiLCJjdHhfNTEyIiwiYW5jZXN0b3JzXzUxMCIsInRlcm1fNTA4IiwidHlfNTY1Iiwic3RhdHVzXzU2MyIsImNsc181NjEiLCJzZWxmXzU1OSIsIm1vZGVfNTU3IiwicHJldl9zeW5zd2l0Y2hfNTU1IiwiY29fY3R4XzU1MyIsImN0eF81NTEiLCJhbmNlc3RvcnNfNTQ5IiwidGVybV81NDciLCJhcmdfNTY2IiwiYm5kc181NDYiLCJhcmdfNTY0IiwiYm5kc181NDYkMCIsImFyZ181NjIiLCJibmRzXzU0NiQxIiwiYXJnXzU2MCIsImJuZHNfNTQ2JDIiLCJhcmdfNTU4IiwiYm5kc181NDYkMyIsImFyZ181NTYiLCJibmRzXzU0NiQ0IiwiYXJnXzU1NCIsImJuZHNfNTQ2JDUiLCJhcmdfNTUyIiwiYm5kc181NDYkNiIsImFyZ181NTAiLCJibmRzXzU0NiQ3IiwiYXJnXzU0OCIsImJuZHNfNTQ2JDgiLCJwcmV2X3N5bnN3aXRjaF9maWVsZCIsImZ2YWx1ZSQ4IiwicHJldl9zeW5zd2l0Y2hfdmFsdWUiLCJ2X3ByZXZfc3luc3dpdGNoIiwiYXJnJDgiLCJibmRzJDgiLCJwcF90eXAiLCJzaG93X3R5cCIsIl80JDMiLCJfMyQ1IiwiXzIkOCIsIl8xJDE3IiwiXzAkMjAiLCJ0eXBfb2Zfc2V4cCIsInNleHBfNTY4IiwiZmllbGRfc2V4cHNfNTY5IiwidGVybV81NzAiLCJhbmNlc3RvcnNfNTcyIiwiY3R4XzU3NCIsImV4cGVjdHNfNTc2IiwiY2xzXzU3OCIsInN0YXR1c181ODAiLCJ0eV81ODIiLCJkdXBsaWNhdGVzXzU4NCIsImV4dHJhXzU4NSIsIml0ZXJfNTk3Iiwic2V4cF81NjgkMCIsImZpZWxkX3NleHBzXzU4OCIsImZpZWxkX25hbWVfNTg2IiwidGFpbF81OTgiLCJmaWVsZF9zZXhwXzU4NyQ3IiwiZmllbGRfc2V4cF81ODciLCJ4XzU5OSIsImZpZWxkX3NleHBfNTg3JDAiLCJmdmFsdWVfNTg5IiwiZmllbGRfc2V4cF81ODckMSIsImZ2YWx1ZV81OTUiLCJmaWVsZF9zZXhwXzU4NyQyIiwiZnZhbHVlXzU5MCIsImZpZWxkX3NleHBfNTg3JDMiLCJmdmFsdWVfNTkyIiwiZmllbGRfc2V4cF81ODckNCIsImZ2YWx1ZV81OTMiLCJmaWVsZF9zZXhwXzU4NyQ1IiwiZnZhbHVlXzU5MSIsImZpZWxkX3NleHBfNTg3JDYiLCJmdmFsdWVfNTk0IiwidHlfNTgzIiwic3RhdHVzXzU4MSIsImNsc181NzkiLCJleHBlY3RzXzU3NyIsImN0eF81NzUiLCJhbmNlc3RvcnNfNTczIiwidGVybV81NzEiLCJzZXhwX29mX3R5cCIsInR5XzYxMyIsInN0YXR1c182MTEiLCJjbHNfNjA5IiwiZXhwZWN0c182MDciLCJjdHhfNjA1IiwiYW5jZXN0b3JzXzYwMyIsInRlcm1fNjAxIiwiYXJnXzYxNCIsImJuZHNfNjAwIiwiYXJnXzYxMiIsImJuZHNfNjAwJDAiLCJhcmdfNjEwIiwiYm5kc182MDAkMSIsImFyZ182MDgiLCJibmRzXzYwMCQyIiwiYXJnXzYwNiIsImJuZHNfNjAwJDMiLCJhcmdfNjA0IiwiYm5kc182MDAkNCIsImFyZ182MDIiLCJibmRzXzYwMCQ1IiwidHlwX29mX3lvanNvbiIsImV4cGVjdHNfZmllbGQiLCJleHBlY3RzX3ZhbHVlIiwieW9qc29uX29mX3R5cCIsInZfZXhwZWN0cyIsInBwX3RwYXQiLCJzaG93X3RwYXQiLCJfNCQ0IiwiXzMkNiIsIl8yJDkiLCJfMSQxOCIsIl8wJDIxIiwidHBhdF9vZl9zZXhwIiwic2V4cF82MTYiLCJmaWVsZF9zZXhwc182MTciLCJ0ZXJtXzYxOCIsImFuY2VzdG9yc182MjAiLCJjdHhfNjIyIiwiY2xzXzYyNCIsInN0YXR1c182MjYiLCJkdXBsaWNhdGVzXzYyOCIsImV4dHJhXzYyOSIsIml0ZXJfNjM5Iiwic2V4cF82MTYkMCIsImZpZWxkX3NleHBzXzYzMiIsImZpZWxkX25hbWVfNjMwIiwidGFpbF82NDAiLCJmaWVsZF9zZXhwXzYzMSQ1IiwiZmllbGRfc2V4cF82MzEiLCJ4XzY0MSIsImZpZWxkX3NleHBfNjMxJDAiLCJmdmFsdWVfNjM3IiwiZmllbGRfc2V4cF82MzEkMSIsImZ2YWx1ZV82MzMiLCJmaWVsZF9zZXhwXzYzMSQyIiwiZnZhbHVlXzYzNSIsImZpZWxkX3NleHBfNjMxJDMiLCJmdmFsdWVfNjM0IiwiZmllbGRfc2V4cF82MzEkNCIsImZ2YWx1ZV82MzYiLCJzdGF0dXNfNjI3IiwiY2xzXzYyNSIsImN0eF82MjMiLCJhbmNlc3RvcnNfNjIxIiwidGVybV82MTkiLCJzZXhwX29mX3RwYXQiLCJzdGF0dXNfNjUxIiwiY2xzXzY0OSIsImN0eF82NDciLCJhbmNlc3RvcnNfNjQ1IiwidGVybV82NDMiLCJhcmdfNjUyIiwiYm5kc182NDIiLCJhcmdfNjUwIiwiYm5kc182NDIkMCIsImFyZ182NDgiLCJibmRzXzY0MiQxIiwiYXJnXzY0NiIsImJuZHNfNjQyJDIiLCJhcmdfNjQ0IiwiYm5kc182NDIkMyIsInRwYXRfb2ZfeW9qc29uIiwieW9qc29uX29mX3RwYXQiLCJwcF9zZWNvbmRhcnkiLCJzaG93X3NlY29uZGFyeSIsIl8zJDciLCJfMiQxMCIsIl8xJDE5IiwiXzAkMjIiLCJzZWNvbmRhcnlfb2Zfc2V4cCIsInNleHBfNjU0IiwiZmllbGRfc2V4cHNfNjU1IiwiaWRfNjU2IiwiY2xzXzY1OCIsInNvcnRfNjYwIiwiY3R4XzY2MiIsImR1cGxpY2F0ZXNfNjY0IiwiZXh0cmFfNjY1IiwiaXRlcl82NzQiLCJzZXhwXzY1NCQwIiwiZmllbGRfc2V4cHNfNjY4IiwiZmllbGRfbmFtZV82NjYiLCJ0YWlsXzY3NSIsImZpZWxkX3NleHBfNjY3JDQiLCJmaWVsZF9zZXhwXzY2NyIsInhfNjc2IiwiZmllbGRfc2V4cF82NjckMCIsImZ2YWx1ZV82NzAiLCJmaWVsZF9zZXhwXzY2NyQxIiwiZnZhbHVlXzY3MiIsImZpZWxkX3NleHBfNjY3JDIiLCJmdmFsdWVfNjY5IiwiZmllbGRfc2V4cF82NjckMyIsImZ2YWx1ZV82NzEiLCJjdHhfNjYzIiwic29ydF82NjEiLCJjbHNfNjU5IiwiaWRfNjU3Iiwic2V4cF9vZl9zZWNvbmRhcnkiLCJjdHhfNjg0Iiwic29ydF82ODIiLCJjbHNfNjgwIiwiaWRfNjc4IiwiYXJnXzY4NSIsImJuZHNfNjc3IiwiYXJnXzY4MyIsImJuZHNfNjc3JDAiLCJhcmdfNjgxIiwiYm5kc182NzckMSIsImFyZ182NzkiLCJibmRzXzY3NyQyIiwic2Vjb25kYXJ5X29mX3lvanNvbiIsInlvanNvbl9vZl9zZWNvbmRhcnkiLCJfNCQ1IiwiXzMkOCIsIl8yJDExIiwiXzEkMjAiLCJfMCQyMyIsInNleHBfNjkwIiwidGFnXzY5MSIsInNleHBfYXJnc182OTIiLCJhcmcwXzY5MyIsInJlczBfNjk0Iiwic2V4cF9hcmdzXzY5NyIsImFyZzBfNjk4IiwicmVzMF82OTkiLCJzZXhwX2FyZ3NfNzA3IiwiYXJnMF83MDgiLCJyZXMwXzcwOSIsInNleHBfYXJnc183MDIiLCJhcmcwXzcwMyIsInJlczBfNzA0Iiwic2V4cF9hcmdzXzcxMiIsImFyZzBfNzEzIiwicmVzMF83MTQiLCJhcmcwXzcxNSIsInJlczBfNzE2IiwiYXJnMF83MTciLCJyZXMwXzcxOCIsImFyZzBfNzIxIiwicmVzMF83MjIiLCJhcmcwXzcyMyIsInJlczBfNzI0IiwicHBfZXJyb3IiLCJzaG93X2Vycm9yIiwiXzMkOSIsIl8yJDEyIiwiXzEkMjEiLCJfMCQyNCIsImVycm9yX29mX3NleHAiLCJzZXhwXzcyOSIsInRhZ183MzAiLCJzZXhwX2FyZ3NfNzQxIiwiYXJnMF83NDIiLCJyZXMwXzc0MyIsInNleHBfYXJnc183NDYiLCJhcmcwXzc0NyIsInJlczBfNzQ4Iiwic2V4cF9hcmdzXzczNiIsInNleHBfYXJnc183MzEiLCJhcmcwXzczMiIsInJlczBfNzMzIiwic2V4cF9vZl9lcnJvciIsImFyZzBfNzQ5IiwicmVzMF83NTAiLCJhcmcwXzc1MSIsInJlczBfNzUyIiwiYXJnMF83NTMiLCJhcmcwXzc1NSIsInJlczBfNzU2IiwiZXJyb3Jfb2ZfeW9qc29uIiwieW9qc29uX29mX2Vycm9yIiwic29ydF9vZiIsImN0eF9vZiIsImFuY2VzdG9yc19vZiIsImkkMCIsImkkMSIsImkkMiIsImVycm9yX29mIiwiZXJyJDAiLCJlcnIkMSIsImVyciQyIiwiZXhwX2NvX2N0eCIsImV4cF90eSIsInBhdF9jdHgiLCJwYXRfdHkiLCJzdGF0dXNfY29tbW9uIiwic2VsZiQwIiwic3luIiwiYW5hJDAiLCJzeW4kMCIsImFuYV90eSIsInNlbGYkMSIsInN5bl90eSQwIiwic2VsZiQyIiwic3RhdHVzX3BhdCIsInNlbGZfcGF0IiwiZXJyX3BhdCIsIm9rX2V4cCIsInN0YXR1c19leHAiLCJzdGF0dXNfdHlwIiwiZXhwZWN0cyIsInN1bV90eSIsInR5X3ZhcmlhbnQiLCJzdGF0dXNfdmFyaWFudCIsInN0YXR1c190cGF0Iiwic3JjIiwiaXNfZXJyb3IiLCJjaSIsImN0eCQyIiwiZml4ZWRfdHlwX29rIiwiZml4ZWRfdHlwX2Vycl9jb21tb24iLCJmaXhlZF90eXBfZXJyIiwiZml4ZWRfdHlwX2Vycl9wYXQiLCJmaXhlZF90eXBfcGF0Iiwib2siLCJmaXhlZF90eXBfZXhwIiwiZGVyaXZlZF9leHAiLCJ1ZXhwIiwic3RhdHVzIiwiZGVyaXZlZF9wYXQiLCJ1cGF0IiwicHJldl9zeW5zd2l0Y2giLCJkZXJpdmVkX3R5cCIsImRlcml2ZWRfdHBhdCIsImdldF9iaW5kaW5nX3NpdGUiLCJ0eXBfaXNfY29uc3RydWN0b3JfZXhwZWN0ZWQiLCJyYW5nZSIsInJhbmdlX2hhc2giLCJyb290X2wiLCJyb290X3IiLCJ1bmljaGlsZF9tYXAiLCJtYXBfbCIsImwkMiIsIm1hcF9yIiwiciQyIiwidW5pY2hpbGRfbWFwJDAiLCJyYW5nZSQwIiwiYmV0d2Vlbl9jaGlsZF9tYXAiLCJtayQwIiwicmVzIiwiZXJyb3JfaWRzIiwidGVybV9yYW5nZXMiLCJpbmZvX21hcCIsIm1hcF9tIiwiYWRkX2luZm8iLCJpc19hcnJvd19saWtlIiwiaXNfcmVjdXJzaXZlIiwiZGVmIiwibnVtX2ZucyIsIm51bV92YXJzIiwibm9ybSIsInN5bnMiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQiLCJ0eXBfZXhwX2Jpbm9wX2Jpbl9mbG9hdCIsInR5cF9leHBfYmlub3BfYmluX3N0cmluZyIsInR5cF9leHBfYmlub3AiLCJ0eXBfZXhwX3Vub3AiLCJhbnlfdG9faW5mb19tYXAiLCJhbnkiLCJ1ZXhwX3RvX2luZm9fbWFwIiwibSQxIiwidXBhdF90b19pbmZvX21hcCIsInV0eXBfdG9faW5mb19tYXAiLCJ1dHBhdF90b19pbmZvX21hcCIsIm11bHRpIiwiY29fY3R4cyIsImN0eF9kZWYiLCJpc19pbl9maWx0ZXIiLCJhZGQiLCJ1ZXhwX3RvX2luZm9fbWFwJDAiLCJpc19pbl9maWx0ZXIkMCIsImdvJDAiLCJtYXBfbV9nbyIsImdvX3BhdCIsImF0b21pYyIsInBvc2l0aW9uIiwibW9kZXMiLCJtJDMiLCJlcyQwIiwibW9kZV9ib2R5IiwibW9kZV9wYXQiLCJtJDQiLCJtJDUiLCJib2R5JDEiLCJtb2RlX2JvZHkkMSIsIm0kOCIsImN0eF9ib2R5IiwibSQ5IiwiYm9keSQyIiwibW9kZV9ib2R5JDAiLCJtJDYiLCJtJDciLCJlcyQxIiwibW9kZXMkMCIsIm0kMTAiLCJlcyQyIiwiYm9keSQzIiwicF9zeW4iLCJkZWZfYmFzZSIsInR5X3BfYW5hIiwicF9hbmEiLCJwX2FuYV9jdHgiLCJkZWZfYmFzZTIiLCJhbmFfdHlfZm4iLCJ0eV9wIiwidHlfZm4yIiwidHlfZm4xIiwidHlfcHMiLCJ0eV9mbnMyIiwidHlfZm5zMSIsInR5cyQwIiwibSQxMSIsImRlZiQwIiwidHlfcF9hbmEkMCIsIm0kMTIiLCJwX2FuYV9jdHgkMCIsImRlZiQxIiwibSQxNSIsImRlZiQyIiwidHlfcF9hbmEkMSIsInBfYW5hJDEiLCJtJDEzIiwiYm9keSQ0IiwibSQxNCIsInBfYW5hJDAiLCJwJDMiLCJwJDQiLCJtJDE2IiwibSQxNyIsInAkNSIsImJvZHkkNSIsInR5cGF0IiwibSQxOCIsInR5X3ByZSIsInR5X3JlYyIsImN0eF9kZWYkMSIsImN0eF9ib2R5JDEiLCJjdHhfZGVmJDAiLCJ0eV9kZWYkMCIsInR5X2RlZiIsImN0eF9ib2R5JDAiLCJjdHhfYm9keSQyIiwibSQyMSIsImNvX2N0eCQwIiwidHlfZXNjYXBlIiwibSQyMiIsIm0kMTkiLCJtJDIwIiwiZm5fbW9kZSIsIm0kMjMiLCJmbiQwIiwibSQyNCIsImZuJDEiLCJ0eXBmbl9tb2RlIiwibSQyNSIsImZuJDIiLCJtJDI2IiwidHlfYm9keSQxIiwib3B0aW9uX25hbWUiLCJuYW1lJDIiLCJmbiQzIiwiZm5fbW9kZSQwIiwibSQyNyIsImZuJDQiLCJ0eV9vdXQkMCIsInR5X2luJDAiLCJudW1fYXJncyIsIm1vZGVzJDEiLCJtJDI4IiwiYXJncyQwIiwiYXJnX2NvX2N0eCIsImUwIiwiYnJhbmNoX2lkcyIsIm0kMjkiLCJjb25kIiwibSQzMCIsIm0kMzEiLCJhbHQiLCJtJDMyIiwibSQzMyIsIm0kMzQiLCJib2R5JDYiLCJjb25kJDAiLCJtJDM1IiwiY29uZCQxIiwibSQzNiIsImJvZHkkNyIsImJvZHkkOCIsIm0kMzciLCJib2R5JDkiLCJtJDM4IiwibSQzOSIsIm0kNDAiLCJtb2RlJDEiLCJpZHMkMSIsIm0kNDEiLCJtJDQyIiwidHlfaW4kMSIsInR5X291dCQxIiwibSQ0MyIsImUkMTQiLCJ0eV9vdXQkMiIsInR5X2luJDIiLCJtJDQ0IiwiZSQxNSIsInR5X291dCQzIiwibSQ0NSIsIm0kNDYiLCJzdHJpbmciLCJydWxlcyIsIm0kNDciLCJzY3J1dCQwIiwiZXMkMyIsImJyYW5jaF9pZHMkMCIsInBzJDAiLCJwX2N0eHMiLCJtJDQ4IiwiZXMkNCIsImVfdHlzIiwiZV9jb19jdHhzIiwibSQ0OSIsIm0kMiIsImlzX3N5bnN3aXRjaCIsInByZXZfc3luc3dpdGNoJDAiLCJ1bmtub3duIiwiY3R4X2ZvbGQiLCJjdHhfdHlwIiwiYW5uJDAiLCJ0eV9zdW0iLCJ2YXJpYW50X3RvX2luZm9fbWFwIiwidDFfbW9kZSIsImJvZHlfY3R4IiwiYm9keV9jdHgkMCIsInV0eSIsInV0eSQwIiwicGFyYW0kMCIsInBhcmFtX3R5IiwiZ2V0X2Vycm9yX2F0IiwiZXJyX2luZm8iLCJnZXRfcGF0X2Vycm9yX2F0IiwiY29sbGVjdF9lcnJvcnMiLCJiaW5kc192YXIiLCJkcCIsImRwJDAiLCJkX2xpc3QiLCJuZXdfbGlzdCIsImRwMiIsImRwMSIsImRwcyIsImRwJDEiLCJib3VuZF92YXJzIiwiZHBzJDAiLCJkcDEkMCIsImdyb3VuZF9jYXNlc19vZl9zZXhwIiwic2V4cF9vZl9ncm91bmRfY2FzZXMiLCJncm91bmRlZF9BcnJvdyIsImdyb3VuZGVkX0ZvcmFsbCIsImdyb3VuZGVkX1Byb2QiLCJncm91bmRlZF9TdW0iLCJncm91bmRlZF9MaXN0IiwiZ3JvdW5kX2Nhc2VzX29mIiwidHJhbnNpdGlvbiIsInJlY3Vyc2l2ZSIsInQxX2dyb3VuZGVkIiwidDJfZ3JvdW5kZWQiLCJpbm5lcl9jYXN0IiwiZDEkMSIsImlubmVyX2Nhc3QkMCIsInRyYW5zaXRpb25fbXVsdGlwbGUiLCJwYXR0ZXJuX2ZpeHVwIiwidW53cmFwX2Nhc3RzIiwicmV3cmFwX2Nhc3RzIiwiZXJyb3Jfc291cmNlXzA4MiIsInNob3dfY2FzZV9jbGF1c2VzXzAwNCIsInNob3dfZm5fYm9kaWVzXzAwNiIsInNob3dfZml4cG9pbnRzXzAwOCIsInNob3dfY2FzdHNfMDEwIiwic2hvd19sb29rdXBfc3RlcHNfMDEyIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfMDE0Iiwic3RlcHBlcl9oaXN0b3J5XzAxNiIsInNob3dfc2V0dGluZ3NfMDE4Iiwic2hvd19oaWRkZW5fc3RlcHNfMDIwIiwiZHVwbGljYXRlc18wMjIiLCJleHRyYV8wMjMiLCJmaWVsZF9zZXhwc18wMjYiLCJmaWVsZF9uYW1lXzAyNCIsImZpZWxkX3NleHBfMDI1JDkiLCJmaWVsZF9zZXhwXzAyNSIsImZpZWxkX3NleHBfMDI1JDAiLCJmdmFsdWVfMDI5IiwiZmllbGRfc2V4cF8wMjUkMSIsImZpZWxkX3NleHBfMDI1JDIiLCJmaWVsZF9zZXhwXzAyNSQzIiwiZmllbGRfc2V4cF8wMjUkNCIsImZpZWxkX3NleHBfMDI1JDUiLCJmaWVsZF9zZXhwXzAyNSQ2IiwiZmllbGRfc2V4cF8wMjUkNyIsImZpZWxkX3NleHBfMDI1JDgiLCJzaG93X2hpZGRlbl9zdGVwc18wMjEiLCJzaG93X3NldHRpbmdzXzAxOSIsInN0ZXBwZXJfaGlzdG9yeV8wMTciLCJzaG93X3N0ZXBwZXJfZmlsdGVyc18wMTUiLCJzaG93X2xvb2t1cF9zdGVwc18wMTMiLCJzaG93X2Nhc3RzXzAxMSIsInNob3dfZml4cG9pbnRzXzAwOSIsInNob3dfZm5fYm9kaWVzXzAwNyIsInNob3dfY2FzZV9jbGF1c2VzXzAwNSIsInNob3dfaGlkZGVuX3N0ZXBzXzA1NyIsInNob3dfc2V0dGluZ3NfMDU1Iiwic3RlcHBlcl9oaXN0b3J5XzA1MyIsInNob3dfc3RlcHBlcl9maWx0ZXJzXzA1MSIsInNob3dfbG9va3VwX3N0ZXBzXzA0OSIsInNob3dfY2FzdHNfMDQ3Iiwic2hvd19maXhwb2ludHNfMDQ1Iiwic2hvd19mbl9ib2RpZXNfMDQzIiwic2hvd19jYXNlX2NsYXVzZXNfMDQxIiwiYXJnXzA1NiIsImFyZ18wNTQiLCJhcmdfMDUyIiwiYXJnXzA1MCIsImJuZHNfMDQwJDMiLCJibmRzXzA0MCQ0IiwiYm5kc18wNDAkNSIsImJuZHNfMDQwJDYiLCJibmRzXzA0MCQ3Iiwic2hvd19jYXNlX2NsYXVzZXNfZmllbGQiLCJzaG93X2ZuX2JvZGllc19maWVsZCIsInNob3dfZml4cG9pbnRzX2ZpZWxkIiwic2hvd19jYXN0c19maWVsZCIsInNob3dfbG9va3VwX3N0ZXBzX2ZpZWxkIiwic2hvd19zdGVwcGVyX2ZpbHRlcnNfZmllbGQiLCJzdGVwcGVyX2hpc3RvcnlfZmllbGQiLCJzaG93X3NldHRpbmdzX2ZpZWxkIiwic2hvd19oaWRkZW5fc3RlcHNfZmllbGQiLCJzaG93X2hpZGRlbl9zdGVwc192YWx1ZSIsInNob3dfc2V0dGluZ3NfdmFsdWUiLCJzdGVwcGVyX2hpc3RvcnlfdmFsdWUiLCJzaG93X3N0ZXBwZXJfZmlsdGVyc192YWx1ZSIsInNob3dfbG9va3VwX3N0ZXBzX3ZhbHVlIiwic2hvd19jYXN0c192YWx1ZSIsInNob3dfZml4cG9pbnRzX3ZhbHVlIiwic2hvd19mbl9ib2RpZXNfdmFsdWUiLCJzaG93X2Nhc2VfY2xhdXNlc192YWx1ZSIsInZfc2hvd19oaWRkZW5fc3RlcHMiLCJ2X3Nob3dfc2V0dGluZ3MiLCJ2X3N0ZXBwZXJfaGlzdG9yeSIsInZfc2hvd19zdGVwcGVyX2ZpbHRlcnMiLCJ2X3Nob3dfbG9va3VwX3N0ZXBzIiwidl9zaG93X2Nhc3RzIiwidl9zaG93X2ZpeHBvaW50cyIsInZfc2hvd19mbl9ib2RpZXMiLCJ2X3Nob3dfY2FzZV9jbGF1c2VzIiwic2V4cF8wNjAiLCJmaWVsZF9zZXhwc18wNjEiLCJzdGF0aWNzXzA2MiIsImVsYWJvcmF0ZV8wNjQiLCJhc3Npc3RfMDY2IiwiZHluYW1pY3NfMDY4IiwiZXZhbHVhdGlvbl8wNzAiLCJkdXBsaWNhdGVzXzA3MiIsImV4dHJhXzA3MyIsIml0ZXJfMDgzIiwic2V4cF8wNjAkMCIsImZpZWxkX3NleHBzXzA3NiIsImZpZWxkX25hbWVfMDc0IiwidGFpbF8wODQiLCJmaWVsZF9zZXhwXzA3NSQ1IiwiZmllbGRfc2V4cF8wNzUiLCJ4XzA4NSIsImZpZWxkX3NleHBfMDc1JDAiLCJmdmFsdWVfMDgxIiwiZmllbGRfc2V4cF8wNzUkMSIsImZ2YWx1ZV8wNzciLCJmaWVsZF9zZXhwXzA3NSQyIiwiZmllbGRfc2V4cF8wNzUkMyIsImZ2YWx1ZV8wNzgiLCJmaWVsZF9zZXhwXzA3NSQ0IiwiZXZhbHVhdGlvbl8wNzEiLCJkeW5hbWljc18wNjkiLCJhc3Npc3RfMDY3IiwiZWxhYm9yYXRlXzA2NSIsInN0YXRpY3NfMDYzIiwiZXZhbHVhdGlvbl8wOTUiLCJkeW5hbWljc18wOTMiLCJhc3Npc3RfMDkxIiwiZWxhYm9yYXRlXzA4OSIsInN0YXRpY3NfMDg3IiwiYXJnXzA5NiIsImJuZHNfMDg2IiwiYXJnXzA5NCIsImJuZHNfMDg2JDAiLCJhcmdfMDkyIiwiYm5kc18wODYkMSIsImFyZ18wOTAiLCJibmRzXzA4NiQyIiwiYm5kc18wODYkMyIsInN0YXRpY3NfZmllbGQiLCJlbGFib3JhdGVfZmllbGQiLCJhc3Npc3RfZmllbGQiLCJkeW5hbWljc19maWVsZCIsImV2YWx1YXRpb25fZmllbGQiLCJldmFsdWF0aW9uX3ZhbHVlIiwiZHluYW1pY3NfdmFsdWUiLCJhc3Npc3RfdmFsdWUiLCJlbGFib3JhdGVfdmFsdWUiLCJzdGF0aWNzX3ZhbHVlIiwidl9ldmFsdWF0aW9uIiwidl9keW5hbWljcyIsInZfYXNzaXN0Iiwidl9lbGFib3JhdGUiLCJ2X3N0YXRpY3MiLCJvZmYiLCJvbiIsImVycm9yX3NvdXJjZV8zMDMiLCJfODYiLCJfODUiLCJfODQiLCJfODMiLCJfODIiLCJfODEiLCJfODAiLCJfNzkiLCJfNzgiLCJfNzciLCJfNzYiLCJfNzUiLCJfNzQiLCJfNzMiLCJfNzIiLCJfNzEiLCJfNzAiLCJfNjkiLCJfNjgiLCJfNjciLCJfNjYiLCJfNjUiLCJfNjQiLCJfNjMiLCJfNjIiLCJfNjEiLCJfNjAiLCJfNTkiLCJfNTgiLCJfNTciLCJfNTYiLCJfNTUiLCJhMiQ5IiwiYTIkMTAiLCJhMSQxOSIsImExJDIwIiwiYTEkMjEiLCJhMSQyMiIsImExJDIzIiwiYTEkMjQiLCJhMiQxMSIsImExJDI1IiwiYTIkMTIiLCJhMSQyNiIsImExJDI3IiwiYTEkMjgiLCJhMyQwIiwiYTIkMTMiLCJhMSQyOSIsImFpZHMiLCJhdGVybSIsInNleHBfYXJnc18xMjgiLCJhcmcyXzEzMSIsImFyZzFfMTMwIiwiYXJnMF8xMjkiLCJyZXMwXzEzMiIsInJlczFfMTMzIiwicmVzMl8xMzQiLCJzZXhwX2FyZ3NfMjY1IiwiYXJnMV8yNzIiLCJhcmcwXzI3MSIsInJlczBfMjczIiwiYXJnMV8yNjciLCJhcmcwXzI2NiIsInJlczBfMjY4IiwicmVzMV8yNjkiLCJyZXMxXzI3NCIsInJlczBfMjA4IiwiYXJnMV8yMDIiLCJyZXMwXzIwMyIsInJlczFfMjA0IiwicmVzMV8yMDkiLCJzZXhwX2FyZ3NfMDIxIiwicmVzMV8wMjUiLCJhcmcxXzAzMCIsInJlczBfMDMxIiwicmVzMV8wMzIiLCJzZXhwX2FyZ3NfMTgzIiwiYXJnMF8xODQiLCJyZXMwXzE4NSIsInNleHBfYXJnc18xNzEiLCJhcmcxXzE3OCIsImFyZzBfMTc3IiwicmVzMF8xNzkiLCJhcmcxXzE3MyIsImFyZzBfMTcyIiwicmVzMF8xNzQiLCJyZXMxXzE3NSIsInJlczFfMTgwIiwic2V4cF9hcmdzXzA3MyIsImFyZzFfMDc1IiwicmVzMV8wNzciLCJzZXhwX2FyZ3NfMTQ2IiwiYXJnMV8xNDgiLCJhcmcwXzE0NyIsInJlczBfMTQ5IiwicmVzMV8xNTAiLCJzZXhwX2FyZ3NfMTM3IiwiYXJnMl8xNDAiLCJhcmcxXzEzOSIsImFyZzBfMTM4IiwicmVzMF8xNDEiLCJyZXMxXzE0MiIsInJlczJfMTQzIiwiYXJnMl8wMzgiLCJhcmcxXzAzNyIsInJlczJfMDQxIiwic2V4cF9hcmdzXzA0NCIsInNleHBfYXJnc18xODgiLCJhcmcxXzE5NSIsImFyZzBfMTk0IiwicmVzMF8xOTYiLCJhcmcxXzE5MCIsImFyZzBfMTg5IiwicmVzMV8xOTIiLCJyZXMxXzE5NyIsImFyZzNfMjk2IiwicmVzMF8yOTciLCJyZXMxXzI5OCIsInJlczJfMjk5IiwiYXJnMV8yODkiLCJhcmcwXzI4OCIsInNleHBfMjgyIiwicmVzMF8yOTAiLCJzZXhwXzI4NyIsImFyZzFfMjg0IiwiYXJnMF8yODMiLCJyZXMwXzI4NSIsInJlczFfMjg2IiwicmVzMV8yOTEiLCJyZXMzXzMwMCIsImFyZzFfMTAwIiwicmVzMF8xMDEiLCJyZXMxXzEwMiIsImFyZzJfMTEzIiwiYXJnMV8xMTIiLCJyZXMxXzExNSIsImFyZzFfMTA3IiwicmVzMF8xMDgiLCJyZXMxXzEwOSIsInJlczJfMTE2Iiwic2V4cF9hcmdzXzI1OCIsImFyZzFfMjYwIiwiYXJnMF8yNTkiLCJyZXMwXzI2MSIsInJlczFfMjYyIiwic2V4cF9hcmdzXzI0OSIsImFyZzJfMjUyIiwiYXJnMV8yNTEiLCJhcmcwXzI1MCIsInJlczBfMjUzIiwicmVzMV8yNTQiLCJyZXMyXzI1NSIsImFyZzJfMDY3IiwiYXJnMV8wNjYiLCJyZXMxXzA2OSIsInJlczJfMDcwIiwic2V4cF9hcmdzXzA1MyIsImFyZzNfMDU3IiwiYXJnMl8wNTYiLCJyZXMyXzA2MCIsInJlczNfMDYxIiwic2V4cF9hcmdzXzExOSIsImFyZzJfMTIyIiwiYXJnMV8xMjEiLCJhcmcwXzEyMCIsInJlczBfMTIzIiwicmVzMV8xMjQiLCJyZXMyXzEyNSIsImFyZzJfMDgzIiwiYXJnMV8wODIiLCJyZXMxXzA4NSIsInJlczJfMDg2Iiwic2V4cF9hcmdzXzA4OSIsImFyZzJfMDkyIiwiYXJnMV8wOTEiLCJyZXMxXzA5NCIsInJlczJfMDk1Iiwic2V4cF9hcmdzXzE1MyIsImFyZzJfMTU2IiwiYXJnMV8xNTUiLCJhcmcwXzE1NCIsInJlczBfMTU3IiwicmVzMV8xNTgiLCJyZXMyXzE1OSIsInNleHBfYXJnc18xNjIiLCJhcmcyXzE2NSIsImFyZzFfMTY0IiwiYXJnMF8xNjMiLCJyZXMwXzE2NiIsInJlczFfMTY3IiwicmVzMl8xNjgiLCJhcmcyXzI0MyIsImFyZzFfMjQyIiwicmVzMV8yNDUiLCJyZXMyXzI0NiIsInNleHBfYXJnc18yMTIiLCJhcmcxXzIxNCIsImFyZzBfMjEzIiwicmVzMF8yMTUiLCJyZXMxXzIxNiIsImFyZzFfMjIxIiwicmVzMF8yMjIiLCJyZXMxXzIyMyIsInNleHBfMzA2IiwiZmllbGRfc2V4cHNfMzA1IiwidGVybV8zMDgiLCJpZHNfMzEwIiwiZHVwbGljYXRlc18zMTIiLCJleHRyYV8zMTMiLCJpdGVyXzMxOSIsInNleHBfMzA2JDAiLCJmaWVsZF9zZXhwc18zMTYiLCJmaWVsZF9uYW1lXzMxNCIsInRhaWxfMzIwIiwiZmllbGRfc2V4cF8zMTUkMiIsImZpZWxkX3NleHBfMzE1IiwieF8zMjEiLCJmaWVsZF9zZXhwXzMxNSQwIiwiZnZhbHVlXzMxOCIsImZpZWxkX3NleHBfMzE1JDEiLCJmdmFsdWVfMzE3IiwiaWRzXzMxMSIsInRlcm1fMzA5IiwiYXJnMV8zMjMiLCJhcmcwXzMyMiIsInJlczFfMzI1IiwiYXJnMV8zMjciLCJhcmcwXzMyNiIsInJlczFfMzI5IiwiYXJnMV8zMzEiLCJhcmcwXzMzMCIsInJlczBfMzMyIiwicmVzMV8zMzMiLCJhcmcxXzMzNSIsImFyZzBfMzM0IiwicmVzMF8zMzYiLCJyZXMxXzMzNyIsImFyZzJfMzQwIiwiYXJnMV8zMzkiLCJhcmcwXzMzOCIsInJlczBfMzQxIiwicmVzMV8zNDIiLCJyZXMyXzM0MyIsImFyZzJfMzQ2IiwiYXJnMV8zNDUiLCJhcmcwXzM0NCIsInJlczBfMzQ3IiwicmVzMV8zNDgiLCJyZXMyXzM0OSIsImFyZzNfMzUzIiwiYXJnMl8zNTIiLCJhcmcxXzM1MSIsImFyZzBfMzUwIiwicmVzMF8zNTQiLCJyZXMxXzM1NSIsInJlczJfMzU2IiwicmVzM18zNTciLCJhcmcyXzM2MCIsImFyZzFfMzU5IiwiYXJnMF8zNTgiLCJyZXMwXzM2MSIsInJlczFfMzYyIiwicmVzMl8zNjMiLCJhcmcxXzM2NSIsImFyZzBfMzY0IiwicmVzMF8zNjYiLCJyZXMxXzM2NyIsImFyZzJfMzcwIiwiYXJnMV8zNjkiLCJhcmcwXzM2OCIsInJlczBfMzcxIiwicmVzMV8zNzIiLCJyZXMyXzM3MyIsImFyZzJfMzc2IiwiYXJnMV8zNzUiLCJhcmcwXzM3NCIsInJlczJfMzc5IiwiYXJnMV8zODEiLCJhcmcwXzM4MCIsImFyZzJfMzkwIiwiYXJnMV8zODkiLCJhcmcwXzM4OCIsInJlczBfMzkxIiwicmVzMV8zOTIiLCJhcmcxXzM4NSIsImFyZzBfMzg0IiwicmVzMV8zODciLCJyZXMyXzM5MyIsImFyZzJfMzk2IiwiYXJnMV8zOTUiLCJhcmcwXzM5NCIsInJlczJfMzk5IiwiYXJnMl80MDIiLCJhcmcxXzQwMSIsImFyZzBfNDAwIiwicmVzMl80MDUiLCJhcmcyXzQwOCIsImFyZzFfNDA3IiwiYXJnMF80MDYiLCJyZXMwXzQwOSIsInJlczFfNDEwIiwicmVzMl80MTEiLCJhcmcxXzQxMyIsImFyZzBfNDEyIiwicmVzMF80MTQiLCJyZXMxXzQxNSIsImFyZzJfNDE4IiwiYXJnMV80MTciLCJhcmcwXzQxNiIsInJlczBfNDE5IiwicmVzMV80MjAiLCJyZXMyXzQyMSIsImFyZzJfNDI0IiwiYXJnMV80MjMiLCJhcmcwXzQyMiIsInJlczFfNDI2IiwicmVzMl80MjciLCJhcmcxXzQzMyIsImFyZzBfNDMyIiwicmVzMF80MzQiLCJhcmcxXzQyOSIsImFyZzBfNDI4IiwicmVzMF80MzAiLCJyZXMxXzQzMSIsInJlczFfNDM1IiwiYXJnMF80MzYiLCJyZXMwXzQzNyIsImFyZzFfNDQzIiwiYXJnMV80MzkiLCJhcmcwXzQzOCIsInJlczBfNDQwIiwicmVzMV80NDEiLCJyZXMxXzQ0NSIsImFyZzFfNDUxIiwiYXJnMF80NTAiLCJyZXMwXzQ1MiIsImFyZzFfNDQ3IiwiYXJnMF80NDYiLCJyZXMwXzQ0OCIsInJlczFfNDQ5IiwicmVzMV80NTMiLCJhcmcxXzQ1NSIsImFyZzBfNDU0IiwicmVzMF80NTYiLCJyZXMxXzQ1NyIsImFyZzFfNDU5IiwicmVzMF80NjAiLCJyZXMxXzQ2MSIsImFyZzFfNDYzIiwiYXJnMF80NjIiLCJyZXMxXzQ2NSIsImFyZzFfNDY3IiwiYXJnMF80NjYiLCJyZXMwXzQ2OCIsInJlczFfNDY5IiwiYXJnMl80NzIiLCJhcmcxXzQ3MSIsImFyZzBfNDcwIiwicmVzMF80NzMiLCJyZXMxXzQ3NCIsInJlczJfNDc1IiwiYXJnMl80NzgiLCJhcmcxXzQ3NyIsImFyZzBfNDc2IiwicmVzMV80ODAiLCJyZXMyXzQ4MSIsImFyZzFfNDgzIiwiYXJnMF80ODIiLCJyZXMwXzQ4NCIsInJlczFfNDg1IiwiYXJnMV80OTEiLCJyZXMwXzQ5MiIsImFyZzFfNDg3IiwiYXJnMF80ODYiLCJyZXMwXzQ4OCIsInJlczFfNDg5IiwicmVzMV80OTMiLCJhcmczXzUwOSIsImFyZzJfNTA4IiwiYXJnMV81MDciLCJhcmcwXzUwNiIsInJlczBfNTEwIiwicmVzMV81MTEiLCJyZXMyXzUxMiIsImFyZzFfNTAzIiwiYXJnMF81MDIiLCJhcmcxXzQ5NSIsImFyZzBfNDk0IiwicmVzMV80OTciLCJyZXMwXzUwNCIsImFyZzFfNDk5IiwiYXJnMF80OTgiLCJyZXMwXzUwMCIsInJlczFfNTAxIiwicmVzMV81MDUiLCJyZXMzXzUxMyIsImlkc181MTciLCJ0ZXJtXzUxNSIsImFyZ181MTgiLCJibmRzXzUxNCIsImFyZ181MTYiLCJibmRzXzUxNCQwIiwidjEkNTMiLCJ2MSQ1NCIsInYxJDQ5IiwidjEkNTAiLCJ2MSQ1MSIsInYxJDUyIiwidjEkNDciLCJ2MSQ0OCIsInYxJDQ1IiwidjEkNDYiLCJ2MSQ0MyIsInYxJDQ0IiwidjEkNDEiLCJ2MSQ0MiIsInYzJDEiLCJ2MSQzOSIsInYxJDQwIiwidjMkMiIsInYyJDI3IiwidjEkNjkiLCJ2MCQ3MSIsInYwJDcyIiwidjEkNzAiLCJ2MiQyOCIsInYyJDI1IiwidjEkNjciLCJ2MCQ2OSIsInYwJDcwIiwidjEkNjgiLCJ2MiQyNiIsInYyJDIzIiwidjEkNjUiLCJ2MCQ2NyIsInYwJDY4IiwidjEkNjYiLCJ2MiQyNCIsInYyJDIxIiwidjEkNjMiLCJ2MSQ2NCIsInYyJDIyIiwidjIkMTkiLCJ2MSQ2MSIsInYxJDYyIiwidjIkMjAiLCJ2MSQ1OSIsInYxJDYwIiwidjEkNTciLCJ2MSQ1OCIsInYxJDU1IiwidjEkNTYiLCJjb21wb3NlIiwiZmx0IiwiY3R4JDMiLCJkMiQxIiwiY3R4JDQiLCJjdHgkNSIsImQkMyIsImN0eCQ2IiwiZCQ0IiwiY3R4JDciLCJ2JDAiLCJkJDUiLCJjdHgkOCIsImQkNiIsImQyJDIiLCJjdHgkOSIsImRpciIsImQxJDIiLCJjdHgkMTAiLCJkMSQzIiwiZGlyJDAiLCJkMiQzIiwiZDJzIiwiY3R4JDExIiwiZDEkNCIsInJkIiwibGQiLCJjdHgkMTIiLCJkMSQ1IiwiZDIkNCIsImQyJDUiLCJjdHgkMTMiLCJkJDciLCJkMyQwIiwiY3R4JDE0IiwiZDEkNiIsImQkOCIsImN0eCQxNSIsImQyJDYiLCJkMSQ3IiwiZCQ5IiwiY3R4JDE2IiwiZDEkOCIsImQyJDciLCJjdHgkMTciLCJkMSQ5IiwiY3R4JDE4IiwiZDEkMTAiLCJkMiQ4IiwicmQkMCIsImxkJDAiLCJjdHgkMTkiLCJkJDEwIiwiY3R4JDIwIiwiZDEkMTEiLCJyZCQxIiwibGQkMSIsImN0eCQyMSIsImQkMTEiLCJyZCQyIiwibGQkMiIsImN0eCQyMiIsImQkMTIiLCJkMiQ5IiwiY3R4JDIzIiwiZDEkMTIiLCJjdHgkMjQiLCJkMSQxMyIsImQyJDEwIiwiZDIkMTEiLCJjdHgkMjUiLCJkMSQxNCIsImN0eCQyNiIsImQxJDE1IiwiZDIkMTIiLCJjdHgkMjciLCJkJDEzIiwiY3R4JDI4IiwiZCQxNCIsImN0eCQyOSIsImQkMTUiLCJjdHgkMzAiLCJkJDE2IiwicnIiLCJsciIsImN0eCQzMSIsInNjciIsImQkMTciLCJmaXh1cF9jYXN0IiwidW5ib3giLCJyZXF1ZXN0IiwiZXhwciIsImV4cHIkMCIsImN0MSIsImN0MiIsInQycyIsInQxcyIsIm5hbWUxIiwibmFtZTIiLCJuYW1lMSQwIiwibmFtZTIkMCIsImV4cHIkMSIsImNvbWJpbmVfcmVzdWx0IiwibWF0Y2hlcyIsImIkMCIsIm1feCIsIm1feHMiLCJkcCQyIiwicHBfaW5zdGFuY2VfcmVwb3J0Iiwic2hvd19pbnN0YW5jZV9yZXBvcnQiLCJpbnN0YW5jZV9yZXBvcnRfb2Zfc2V4cCIsInNleHBfb2ZfaW5zdGFuY2VfcmVwb3J0IiwiaW5zdGFuY2VfcmVwb3J0X29mX3lvanNvbiIsInlvanNvbl9vZl9pbnN0YW5jZV9yZXBvcnQiLCJqb2ludF9zdGF0dXMiLCJyZXBvcnRzIiwicHBfcmVwb3J0Iiwic2hvd19yZXBvcnQiLCJyZXBvcnRfb2Zfc2V4cCIsInNleHBfb2ZfcmVwb3J0IiwiYXJnMV8wMjAiLCJyZXMxXzAyMiIsInJlcG9ydF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcmVwb3J0IiwibG9va3VwX2FuZF9qb2luIiwidGVzdF9tYXAiLCJyZXBvcnQiLCJjb3VudF9zdGF0dXMiLCJpbnN0YW5jZXMiLCJwcF9zdGVwX2tpbmQiLCJzaG93X3N0ZXBfa2luZCIsInN0ZXBfa2luZF9vZl9zZXhwIiwic2V4cF9vZl9zdGVwX2tpbmQiLCJzdGVwX2tpbmRfb2ZfeW9qc29uIiwieW9qc29uX29mX3N0ZXBfa2luZCIsImV2YWx1YXRlX2V4dGVuZF9lbnYiLCJuZXdfYmluZGluZ3MiLCJ0b19leHRlbmQiLCJsZXRfdW5ib3giLCJzdGF0ZV91cGRhdGUiLCJsZXRfbWF0Y2giLCJtYXRjaF9yZXN1bHQiLCJyZXEiLCJzdGF0ZSIsIndyYXBfY3R4IiwiZHMkMCIsImJpbmRpbmciLCJzdWJzdGl0dXRpb25zIiwiZDJfaXNfdmFsdWUiLCJkNHMiLCJuX2FyZ3MiLCJkZWZlcnJlZCIsImRlZmVycmVkJDEiLCJkZWZlcnJlZCQwIiwibmV3X2FyZ3MiLCJpZGVudCIsImJ1aWx0aW4iLCJkMyQxIiwidGF1IiwidGZib2R5IiwiZHMkMSIsImlzX3ZhbHVlIiwiZHMxIiwiZHMyIiwiZDEkMTYiLCJkMSQxNyIsIm5leHRfcnVsZSIsInNob3VsZF9oaWRlX3N0ZXAiLCJzZXR0aW5ncyIsImNvbWJpbmUiLCJiMiQwIiwicmVxX3ZhbHVlIiwidmMiLCJyZXFfYWxsX3ZhbHVlIiwicmVxX2ZpbmFsIiwicmVxX2FsbF9maW5hbCIsInJlcV9maW5hbF9vcl92YWx1ZSIsIm90aGVyd2lzZSIsInJ1bGUiLCJ1cGRhdGVfdGVzdCIsImNoZWNrX3ZhbHVlIiwiY2hlY2tfdmFsdWVfbW9kX2N0eCIsImVycm9yX3NvdXJjZV8wNTQiLCJlcnJvcl9zb3VyY2VfMDgwIiwiZXJyb3Jfc291cmNlXzEwNSIsImVycm9yX3NvdXJjZV8xNzkiLCJwcF9waWVjZV9nb2FsIiwic2hvd19waWVjZV9nb2FsIiwicGllY2VfZ29hbF9vZl9zZXhwIiwic2V4cF9vZl9waWVjZV9nb2FsIiwicGllY2VfZ29hbF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGllY2VfZ29hbCIsIm9mX3BpZWNlX2dvYWwiLCJwcF9nb2FsIiwic2hvd19nb2FsIiwiZ29hbF9vZl9zZXhwIiwic2V4cF9vZl9nb2FsIiwiYXJnMV8wMjQiLCJnb2FsX29mX3lvanNvbiIsInlvanNvbl9vZl9nb2FsIiwicHBfbW92ZSIsInNob3dfbW92ZSIsIm1vdmVfb2Zfc2V4cCIsInNleHBfMDMxIiwidGFnXzAzMiIsInNleHBfYXJnc18wMzgiLCJzZXhwX2FyZ3NfMDQzIiwic2V4cF9hcmdzXzAzMyIsImFyZzBfMDM0IiwicmVzMF8wMzUiLCJzZXhwX29mX21vdmUiLCJtb3ZlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZlIiwicHBfanVtcF90YXJnZXQiLCJzaG93X2p1bXBfdGFyZ2V0IiwianVtcF90YXJnZXRfb2Zfc2V4cCIsInNleHBfMDU2IiwidGFnXzA1NyIsInNleHBfYXJnc18wNTgiLCJhcmcwXzA1OSIsInJlczBfMDYwIiwic2V4cF9vZl9qdW1wX3RhcmdldCIsImp1bXBfdGFyZ2V0X29mX3lvanNvbiIsInlvanNvbl9vZl9qdW1wX3RhcmdldCIsInBwX3JlbCIsInNob3dfcmVsIiwicmVsX29mX3NleHAiLCJzZXhwXzA2NyIsInRhZ18wNjgiLCJhcmcxXzA3MSIsInJlczFfMDczIiwic2V4cF9vZl9yZWwiLCJyZWxfb2ZfeW9qc29uIiwieW9qc29uX29mX3JlbCIsInBwX3NlbGVjdCIsInNob3dfc2VsZWN0Iiwic2VsZWN0X29mX3NleHAiLCJzZXhwXzA4MiIsInRhZ18wODMiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMF8wOTUiLCJzZXhwX29mX3NlbGVjdCIsImFyZzBfMDk3IiwicmVzMF8wOTgiLCJzZWxlY3Rfb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdCIsInNleHBfMTA3IiwidGFnXzEwOCIsInNleHBfYXJnc18xMjQiLCJhcmcwXzEyNSIsInJlczBfMTI2Iiwic2V4cF9hcmdzXzE1NCIsImFyZzBfMTU1IiwicmVzMF8xNTYiLCJzZXhwX2FyZ3NfMTI5Iiwic2V4cF9hcmdzXzEzNCIsImFyZzBfMTM1IiwicmVzMF8xMzYiLCJzZXhwX2FyZ3NfMTM5IiwiYXJnMF8xNDAiLCJyZXMwXzEyMSIsInNleHBfYXJnc18xMDkiLCJzZXhwX2FyZ3NfMTQ0IiwiYXJnMF8xNDUiLCJyZXMwXzE0NiIsInNleHBfYXJnc18xMTQiLCJzZXhwX2FyZ3NfMTQ5IiwiYXJnMF8xNTAiLCJyZXMwXzE1MSIsImFyZzBfMTU3IiwicmVzMF8xNTgiLCJhcmcwXzE1OSIsInJlczBfMTYwIiwiYXJnMF8xNjEiLCJyZXMwXzE2MiIsInJlczBfMTY0IiwiYXJnMF8xNjciLCJhcmcwXzE2OSIsInJlczBfMTcwIiwiYXJnMF8xNzEiLCJyZXMwXzE3MiIsImFyZzBfMTczIiwiYXJnMF8xNzUiLCJyZXMwXzE3NiIsImlzX2VkaXQiLCJpc19leHBhbmRlcl90b2siLCJ0cmltX2xhc3QiLCJpc19leHBhbmRlciIsIm1hcmsiLCJjb21wbGV0aW9uIiwiZXJyb3Jfc291cmNlXzAzMiIsImVycm9yX3NvdXJjZV8wNDMiLCJlcnJvcl9zb3VyY2VfMDYxIiwiZXJyb3Jfc291cmNlXzEwOSIsInBwX3N0cmF0ZWd5X2FsbCIsInNob3dfc3RyYXRlZ3lfYWxsIiwic3RyYXRlZ3lfYWxsX29mX3NleHAiLCJzZXhwX29mX3N0cmF0ZWd5X2FsbCIsInN0cmF0ZWd5X2FsbF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfYWxsIiwicHBfc3RyYXRlZ3lfY29tbW9uIiwic2hvd19zdHJhdGVneV9jb21tb24iLCJzdHJhdGVneV9jb21tb25fb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3lfY29tbW9uIiwiYXJnMF8wMjYiLCJyZXMwXzAyNyIsInN0cmF0ZWd5X2NvbW1vbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfY29tbW9uIiwicHBfc3RyYXRlZ3lfZXhwIiwic2hvd19zdHJhdGVneV9leHAiLCJzdHJhdGVneV9leHBfb2Zfc2V4cCIsInNleHBfMDM0IiwidGFnXzAzNSIsInNleHBfYXJnc18wMzYiLCJzZXhwX29mX3N0cmF0ZWd5X2V4cCIsInN0cmF0ZWd5X2V4cF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfZXhwIiwicHBfc3RyYXRlZ3lfcGF0Iiwic2hvd19zdHJhdGVneV9wYXQiLCJzdHJhdGVneV9wYXRfb2Zfc2V4cCIsInNleHBfMDQ1IiwidGFnXzA0NiIsInNleHBfb2Zfc3RyYXRlZ3lfcGF0IiwiYXJnMF8wNTUiLCJhcmcwXzA1NyIsInN0cmF0ZWd5X3BhdF9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3lfcGF0IiwicHBfc3RyYXRlZ3lfdHlwIiwic2hvd19zdHJhdGVneV90eXAiLCJzdHJhdGVneV90eXBfb2Zfc2V4cCIsInNleHBfb2Zfc3RyYXRlZ3lfdHlwIiwic3RyYXRlZ3lfdHlwX29mX3lvanNvbiIsInlvanNvbl9vZl9zdHJhdGVneV90eXAiLCJwcF9zdHJhdGVneSIsInNob3dfc3RyYXRlZ3kiLCJzdHJhdGVneV9vZl9zZXhwIiwic2V4cF9vZl9zdHJhdGVneSIsImFyZzBfMDkzIiwicmVzMF8wOTQiLCJzdHJhdGVneV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RyYXRlZ3kiLCJzZXhwXzA5NiIsImZpZWxkX3NleHBzXzA5NyIsImNvbnRlbnRfMDk4Iiwic3RyYXRlZ3lfMTAwIiwiZHVwbGljYXRlc18xMDIiLCJleHRyYV8xMDMiLCJpdGVyXzExMCIsInNleHBfMDk2JDAiLCJmaWVsZF9zZXhwc18xMDYiLCJmaWVsZF9uYW1lXzEwNCIsInRhaWxfMTExIiwiZmllbGRfc2V4cF8xMDUkMiIsImZpZWxkX3NleHBfMTA1IiwieF8xMTIiLCJmaWVsZF9zZXhwXzEwNSQwIiwiZnZhbHVlXzEwNyIsImZpZWxkX3NleHBfMTA1JDEiLCJmdmFsdWVfMTA4Iiwic3RyYXRlZ3lfMTAxIiwiY29udGVudF8wOTkiLCJzdHJhdGVneV8xMTYiLCJjb250ZW50XzExNCIsImFyZ18xMTciLCJibmRzXzExMyIsImFyZ18xMTUiLCJibmRzXzExMyQwIiwic3RyYXRlZ3lfZmllbGQiLCJzdHJhdGVneV92YWx1ZSIsInZfc3RyYXRlZ3kiLCJleHBhbmRlciIsImpvaW50X3VzZV90eXAiLCJib3VuZF92YXJpYWJsZXMiLCJ0eV9leHBlY3QiLCJib3VuZF9jb25zdHJ1Y3RvcnMiLCJib3VuZF9hcHMiLCJ0eV9hcnIiLCJib3VuZF9jb25zdHJ1Y3Rvcl9hcHMiLCJ0eXBfY29udGV4dF9lbnRyaWVzIiwic3VnZ2VzdF92YXJpYWJsZSIsInN1Z2dlc3RfbG9va2FoZWFkX3ZhcmlhYmxlIiwicmVzdHJhdGVnaXplIiwic3VmZml4Iiwic3RyYXRlZ3kiLCJleHBfcmVmcyIsImV4cF9hcHMiLCJjb21tYXMiLCJwYXRfcmVmcyIsInBhdF9hcHMiLCJjb21tYXMkMCIsImxlYWRpbmdfZXhwYW5kZXIiLCJ1bmsiLCJvZl9jb25zdF9tb25vX2RlbGltIiwib2ZfbGVhZGluZ19kZWxpbSIsIm9mX2luZml4X2RlbGltIiwiZmlsdGVyX2J5Iiwic2VsZl90eXMiLCJkZWxpbSIsInNlbGZfdHkiLCJkZWxheWVkX2xlYWRpbmciLCJkZWxhdGVkX2xlYWRpbmdfZXhwIiwiZGVsYXRlZF9sZWFkaW5nX3BhdCIsImRlbGF0ZWRfbGVhZGluZ190eXAiLCJkZWxheWVkX2xlYWRpbmckMCIsImluZml4IiwiaW5maXhfZXhwIiwiaW5maXhfcGF0IiwiaW5maXhfdHlwIiwiaW5maXgkMCIsImNvbnN0X21vbm8iLCJjb25zdF9tb25vX2V4cCIsImNvbnN0X21vbm9fcGF0IiwiY29uc3RfbW9ub190eXAiLCJjb25zdF9tb25vJDAiLCJzdWdnZXN0X2Zvcm0iLCJ0eV9tYXAiLCJkZWxpbXNfb2Zfc29ydCIsImZpbHRlcmVkIiwic3VnZ2VzdF9vcGVyYXRvciIsInN1Z2dlc3Rfb3BlcmFuZCIsInN1Z2dlc3RfbGVhZGluZyIsImVycm9yX3NvdXJjZV8wMTMiLCJob2xlX3NvcnRfb2Zfc2V4cCIsInNleHBfb2ZfaG9sZV9zb3J0IiwiYXJnMl8wMDgiLCJhcmcxXzAwNyIsImFyZzBfMDA2IiwicmVzMV8wMTAiLCJyZXMyXzAxMSIsImFkZF9hbGwiLCJ0b2tlbnMiLCJwcF90aWxlcyIsInNob3dfdGlsZXMiLCJ0aWxlc19vZl9zZXhwIiwic2V4cF9vZl90aWxlcyIsInRpbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl90aWxlcyIsInNpbmdsZSIsInBwX3Vuc29ydGVkIiwic2hvd191bnNvcnRlZCIsInVuc29ydGVkX29mX3NleHAiLCJzZXhwXzAxOSIsInRhZ18wMjAiLCJhcmcxXzAzNSIsInJlczFfMDM3IiwiYXJnMl8wNDMiLCJyZXMxXzA0NSIsInJlczJfMDQ2Iiwic2V4cF9vZl91bnNvcnRlZCIsImFyZzBfMDQ3IiwiYXJnMV8wNTQiLCJyZXMxXzA1NiIsImFyZzJfMDU5IiwiYXJnMV8wNTgiLCJyZXMxXzA2MSIsInJlczJfMDYyIiwidW5zb3J0ZWRfb2ZfeW9qc29uIiwieW9qc29uX29mX3Vuc29ydGVkIiwiaXNfbmFyeSIsImlzX3NvcnQiLCJpc190dXBsZV9leHAiLCJpc190dXBsZV9wYXQiLCJpc190dXBsZV90eXAiLCJpc190eXBfYnN1bSIsImlzX3J1bGVzIiwiY2xhdXNlcyIsImNsYXVzZSIsImlkc19vZl90aWxlcyIsImtpZHNfb2ZfdGlsZSIsImtpZHNfb2ZfdGlsZXMiLCJraWRzX29mX3Vuc29ydGVkIiwidGlsZXMkMCIsInRpbGVzJDEiLCJ0aWxlcyQyIiwicmV0dXJuJDAiLCJwYXJzZV9zdW1fdGVybSIsImlkc19jdHIiLCJnb19zIiwiZXhwX3Rlcm0iLCJwYXRfdGVybSIsInR5cF90ZXJtIiwidHBhdF90ZXJtIiwicnVsIiwidW5zb3J0ZWQiLCJpbm5lcl9pZHMiLCJyZXQiLCJ0cGF0JDAiLCJjb25zZXEiLCJmaWx0ZXIkMSIsImZpbHRlciQyIiwidCQyIiwidXNlX2RlZmVycmFsIiwiYmV0d2Vlbl9raWRzIiwidCQzIiwicmV0JDAiLCJyZXQkMSIsImhvbGUkMSIsImJldHdlZW5fa2lkcyQwIiwicmV0JDIiLCJob2xlJDIiLCJsYXN0X2NsYXVzZSIsImxlYWRpbmdfY2xhdXNlcyIsInRpbGVfa2lkcyIsInBfciIsInBfbCIsImZyb21femlwIiwiZnJvbV96aXBfZm9yX3ZpZXciLCJmcm9tX3ppcF9mb3Jfc2VtIiwiZXJyb3Jfc291cmNlXzAzMCIsInVuc2VsZWN0ZWQiLCJ0ZXJtcyIsInZpZXdfdGVybSIsIm1vZHVsZV9vZl90IiwiY29sX3RhcmdldCIsIm5leHQiLCJlZmZlY3RzIiwibWVhc3VyZWQkMCIsImNvbF90YXJnZXQkMCIsInRlcm1zJDAiLCJ2aWV3X3Rlcm0kMCIsInppcHBlcl8wMDQiLCJtZXRhXzAwNiIsIm1ldGFfMDA3IiwiemlwcGVyXzAwNSIsIm1ldGFfMDIyIiwiemlwcGVyXzAyMCIsInppcHBlcl9maWVsZCIsIm1ldGFfZmllbGQiLCJtZXRhX3ZhbHVlIiwiemlwcGVyX3ZhbHVlIiwidl9tZXRhIiwidl96aXBwZXIiLCJpbml0JDAiLCJuZXh0JDAiLCJwcF9hZmZpeCIsInNob3dfYWZmaXgiLCJhZmZpeF9vZl9zZXhwIiwieF8wMzEiLCJzZXhwXzAyOSIsInJlczFfMDI4Iiwic2V4cF9vZl9hZmZpeCIsImFmZml4X29mX3lvanNvbiIsInlvanNvbl9vZl9hZmZpeCIsInNleHBfMDQyIiwiYXJnMV8wMzkiLCJyZXMxXzA0MSIsImFyZzFfMDQ1IiwicmVzMV8wNDciLCJzZXhwXzA0OSIsImZpZWxkX3NleHBzXzA1MCIsInN0YXRlXzA1MSIsImhpc3RvcnlfMDUzIiwicmVhZF9vbmx5XzA1NSIsImR1cGxpY2F0ZXNfMDU3IiwiZXh0cmFfMDU4IiwiaXRlcl8wNjYiLCJzZXhwXzA0OSQwIiwiZmllbGRfbmFtZV8wNTkiLCJ0YWlsXzA2NyIsImZpZWxkX3NleHBfMDYwJDMiLCJmaWVsZF9zZXhwXzA2MCIsInhfMDY4IiwiZmllbGRfc2V4cF8wNjAkMCIsImZ2YWx1ZV8wNjQiLCJmaWVsZF9zZXhwXzA2MCQxIiwiZnZhbHVlXzA2MiIsImZpZWxkX3NleHBfMDYwJDIiLCJmdmFsdWVfMDYzIiwicmVhZF9vbmx5XzA1NiIsImhpc3RvcnlfMDU0Iiwic3RhdGVfMDUyIiwicmVhZF9vbmx5XzA3NCIsImhpc3RvcnlfMDcyIiwic3RhdGVfMDcwIiwiYXJnXzA3NSIsImJuZHNfMDY5IiwiYXJnXzA3MyIsImJuZHNfMDY5JDAiLCJhcmdfMDcxIiwiYm5kc18wNjkkMSIsInN0YXRlX2ZpZWxkIiwiaGlzdG9yeV9maWVsZCIsInJlYWRfb25seV9maWVsZCIsInJlYWRfb25seV92YWx1ZSIsImhpc3RvcnlfdmFsdWUiLCJzdGF0ZV92YWx1ZSIsInZfcmVhZF9vbmx5Iiwidl9oaXN0b3J5Iiwidl9zdGF0ZSIsInJlYWRfb25seSIsInVwZGF0ZV96IiwiZWQiLCJwdXRfeiIsInVwZGF0ZV96X29wdCIsIm5ld19zdGF0ZSIsImhpc3RvcnkiLCJ1bmRvIiwiYWZ0ZXIiLCJiZWZvcmUiLCJyZWRvIiwiY2FuX3VuZG8iLCJjYW5fcmVkbyIsInNldF9yZWFkX29ubHkiLCJ0cmFpbGluZ19ob2xlX2N0eCIsImluZm8kMCIsImVycm9yX3NvdXJjZV8wMTIiLCJlcnJvcl9zb3VyY2VfMDIxIiwiZF8wMDQiLCJkdXBsaWNhdGVzXzAwNiIsImV4dHJhXzAwNyIsIml0ZXJfMDEzIiwiZmllbGRfc2V4cHNfMDEwIiwiZmllbGRfbmFtZV8wMDgiLCJ0YWlsXzAxNCIsImZpZWxkX3NleHBfMDA5JDEiLCJmaWVsZF9zZXhwXzAwOSIsImZpZWxkX3NleHBfMDA5JDAiLCJmdmFsdWVfMDExIiwiZF8wMDUiLCJkXzAxNyIsImFyZ18wMTgiLCJibmRzXzAxNiIsImRfZmllbGQiLCJkX3ZhbHVlIiwidl9kIiwidGFnXzAyNCIsInNleHBfYXJnc18wMjUiLCJhcmcyXzAyOCIsImFyZzFfMDI3IiwicmVzMl8wMzEiLCJhcmcyXzAzNCIsInJlczFfMDM2IiwicmVzMl8wMzciLCJmcmVzaF9jYXN0IiwiZnJlc2hfcGF0X2Nhc3QiLCJlbGFib3JhdGVkX3R5cGUiLCJlbGFiX3R5IiwiZWxhYm9yYXRlZF9wYXRfdHlwZSIsImVsYWJvcmF0ZV9wYXR0ZXJuIiwiY2FzdF9mcm9tIiwiZHBhdCIsImlubmVyX3R5cGUiLCJ0eTJfaW5uZXIiLCJ0eV9pbm5lciIsInBzJDEiLCJwcyQyIiwicDIkMiIsInAxJDIiLCJwMSQzIiwicDIkMyIsInR5MXIiLCJ0eTFsIiwicDEkNCIsInAyJDQiLCJlbGFib3JhdGUiLCJlbGFib3JhdGVkX3R5cGUkMCIsInN0dWZmIiwiZGhleHAiLCJ0eWUiLCJ0eWUkMCIsImFkZF9uYW1lIiwiZml4ZiIsImRlZiQzIiwidHllJDEiLCJ0eWUkMiIsInR5ZiIsInR5YSIsInR5ZjIiLCJ0eWYxIiwidXQiLCJ0eWUkMyIsInR5ZSQ0IiwidXQkMCIsInR5ZSQ1IiwiZiQyIiwidHlmJDAiLCJmJDMiLCJ0eXMkMSIsInR5ZjIkMCIsInR5ZjEkMCIsInR5X2ZhcmdzIiwiZiQ0IiwiYXJncyQxIiwicmVtYWluaW5nX2FyZ3MiLCJyZW1haW5pbmdfYXJnX3R5IiwiZiQ1IiwidHljIiwiYyQxIiwidHl0IiwidHlmJDEiLCJmJDYiLCJjJDIiLCJmJDciLCJraW5kIiwiZSQxNiIsImtpbmQkMCIsImUkMTciLCJ0JDQiLCJlJDE4IiwidHlfaW5uZXIxIiwidHlfaW5uZXIyIiwidHlfaW5uZXIkMCIsImUkMTkiLCJlJDIwIiwidCQ1IiwiZSQyMSIsImUkMjIiLCJ0JDYiLCJlJDIzIiwiY2FzZXMiLCJlJDI0IiwidCQ3IiwiZSQyNSIsInB0eXMiLCJqb2luZWRfcHR5IiwiZSQyNiIsImV0eXMiLCJqb2luZWRfZXR5IiwiY29udCIsImZpeF90eXBfaWRzIiwidWV4cF9lbGFiIiwiaW5pdGlhbCIsInN0ZXBfMDA0Iiwic3RlcF8wMDUiLCJzdGVwXzAxNyIsInN0ZXBfZmllbGQiLCJzdGVwX3ZhbHVlIiwidl9zdGVwIiwidGFrZV9zdGVwIiwic3RlcCIsImdldF9zdGVwIiwicHV0X3N0ZXAiLCJzdGF0c18wMDQiLCJ0ZXN0c18wMDYiLCJ0ZXN0c18wMDciLCJzdGF0c18wMDUiLCJ0ZXN0c18wMjIiLCJzdGF0c18wMjAiLCJzdGF0c19maWVsZCIsInRlc3RzX2ZpZWxkIiwidGVzdHNfdmFsdWUiLCJzdGF0c192YWx1ZSIsInZfdGVzdHMiLCJ2X3N0YXRzIiwic3RhdHMiLCJhZGRfdGVzdCIsInRlc3RzIiwidGVzdHMkMCIsImdldF90ZXN0cyIsInB1dF90ZXN0cyIsInN5bWJvbCIsInN0YXRlX3VwZGF0ZSQwIiwic3RhdGVfdXBkYXRlJDEiLCJldmFsdWF0ZSIsInJlc3VsdCQwIiwicHJldHR5MiIsInByZXR0eTEiLCJwaWVjZTEiLCJwaWVjZTIiLCJwX29yIiwicF9vcmlmIiwicF9qdXN0IiwicF9jb25jYXQiLCJwcmV0dGllcyIsInByZXR0eSIsImxldCQxIiwiYW5kJDAiLCJzaG91bGRfYWRkX3NwYWNlIiwidGV4dF90b19wcmV0dHkiLCJta19mb3JtIiwiZm9ybV9uYW1lIiwiZm9ybSIsImxzcGFjZSIsInJzcGFjZSIsImNoaWxkcmVuJDAiLCJwYWRfaWRzIiwic2VnMSIsInNlZzIiLCJleHBfdG9fcHJldHR5IiwiaW5saW5lIiwiaW5saW5lJDAiLCJhbnlfdG9fcHJldHR5IiwicGF0X3RvX3ByZXR0eSIsImlkJDIiLCJ0cGF0X3RvX3ByZXR0eSIsImlkJDMiLCJpZCQ0IiwiaWQkNSIsInR5cF90b19wcmV0dHkiLCJpZCQ2IiwiaWQkNyIsImlkJDgiLCJpZCQ5IiwiaWQkMTAiLCJpZCQxMSIsImlkJDEyIiwiaWQkMTMiLCJpZCQxNCIsImlkJDE1IiwiaWQkMTYiLCJpZCQxNyIsImlkJDE4IiwiZ29fY29uc3RydWN0b3IiLCJjb25zdHJ1Y3RvciIsImV4dGVybmFsX3ByZWNlZGVuY2UiLCJleHAkMCIsImV4cCQxIiwiZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQiLCJleHRlcmFsX3ByZWNlZGVuY2VfdHlwIiwicGFyZW5fYXQiLCJpbnRlcm5hbF9wcmVjZWRlbmNlIiwicGFyZW5fYXNzb2NfYXQiLCJwYXJlbl9wYXRfYXQiLCJwYXJlbl9wYXRfYXNzb2NfYXQiLCJwYXJlbl90eXBfYXQiLCJwYXJlbl90eXBfYXNzb2NfYXQiLCJwYXJlbnRoZXNpemUiLCJwYXJlbnRoZXNpemVfcGF0IiwidHAkMSIsInBhcmVudGhlc2l6ZV90eXAiLCJleHBfdG9fZWRpdG9yIiwicGllY2UiLCJub193cyIsImlnbiIsInBhcmVudCQwIiwicGFyZW50JDEiLCJwaWVjZSQwIiwic2hhcmRfaW5kZXgiLCJyZWxhdGlvbiIsImJlZm9yZSQwIiwiY2lfb2YiLCJwcm94eV9pZCIsInNsIiwic3IiLCJwcF9pbm5lciIsInNob3dfaW5uZXIiLCJpbm5lcl9vZl9zZXhwIiwicmVzdWx0XzAwNCIsImVkaXRvcl8wMDYiLCJzdGF0ZV8wMDgiLCJzdGF0ZV8wMDkiLCJlZGl0b3JfMDA3IiwicmVzdWx0XzAwNSIsInNleHBfb2ZfaW5uZXIiLCJzdGF0ZV8wMjciLCJlZGl0b3JfMDI1IiwicmVzdWx0XzAyMyIsImlubmVyX29mX3lvanNvbiIsInJlc3VsdF9maWVsZCIsImVkaXRvcl9maWVsZCIsImVkaXRvcl92YWx1ZSIsInJlc3VsdF92YWx1ZSIsInlvanNvbl9vZl9pbm5lciIsInZfZWRpdG9yIiwidl9yZXN1bHQiLCJzZXhwXzA1MSIsInRhZ18wNTIiLCJzZXhwX2FyZ3NfMDYzIiwiYXJnMF8wNjQiLCJhcmcwXzA2OCIsInJlczBfMDY5IiwiZ2V0X2RoZXhwIiwiZ2V0X3N0YXRlIiwibWtfbWFwIiwibWtfbWFwJDAiLCJjb3JlIiwibWtfbWFwX2FuZF9pbmZvX2N0eCIsIm1rX21hcF9jdHgiLCJkaF9lcnIiLCJlcnJvciIsImV4biQwIiwiZXhuIiwicmVhc29uIiwiZXZhbF96Iiwic3VnZ2VzdF9iYWNrcGFjayIsInRva2VuX3RvX2xlZnQiLCJ0b2tfdG9fbGVmdCIsIm1rX3VucGFyc2VkX2J1ZmZlciIsInN1ZmZpeF9vZiIsImNhbmRpZGF0ZSIsImNhbmRpZGF0ZV9zdWZmaXgiLCJ6X3RvX2NpIiwiZ2V0X2J1ZmZlciIsInN1Z2dlc3QiLCJzdWdnZXN0aW9ucyIsInN1Z2dlc3Rpb25zJDAiLCJ0b3Bfc3VnZ2VzdGlvbiIsInN1Z2dlc3Rpb25fc3VmZml4IiwidGVzdF9tYXBfMDA0Iiwic3RhdHVzZXNfMDA2IiwiZGVzY3JpcHRpb25zXzAwOCIsInRvdGFsXzAxMCIsInBhc3NpbmdfMDEyIiwiZmFpbGluZ18wMTQiLCJ1bmZpbmlzaGVkXzAxNiIsImR1cGxpY2F0ZXNfMDE4IiwiZXh0cmFfMDE5IiwiaXRlcl8wMzEiLCJmaWVsZF9uYW1lXzAyMCIsInRhaWxfMDMyIiwiZmllbGRfc2V4cF8wMjEkNyIsImZpZWxkX3NleHBfMDIxIiwiZmllbGRfc2V4cF8wMjEkMCIsImZ2YWx1ZV8wMjMiLCJmaWVsZF9zZXhwXzAyMSQxIiwiZmllbGRfc2V4cF8wMjEkMiIsImZpZWxkX3NleHBfMDIxJDMiLCJmaWVsZF9zZXhwXzAyMSQ0IiwiZmllbGRfc2V4cF8wMjEkNSIsImZpZWxkX3NleHBfMDIxJDYiLCJ1bmZpbmlzaGVkXzAxNyIsImZhaWxpbmdfMDE1IiwicGFzc2luZ18wMTMiLCJ0b3RhbF8wMTEiLCJkZXNjcmlwdGlvbnNfMDA5Iiwic3RhdHVzZXNfMDA3IiwidGVzdF9tYXBfMDA1IiwidW5maW5pc2hlZF8wNDciLCJmYWlsaW5nXzA0NSIsInBhc3NpbmdfMDQzIiwidG90YWxfMDQxIiwiZGVzY3JpcHRpb25zXzAzOSIsInN0YXR1c2VzXzAzNyIsInRlc3RfbWFwXzAzNSIsImJuZHNfMDM0IiwiYm5kc18wMzQkMCIsImJuZHNfMDM0JDEiLCJibmRzXzAzNCQyIiwiYXJnXzA0MCIsImJuZHNfMDM0JDMiLCJhcmdfMDM4IiwiYm5kc18wMzQkNCIsImFyZ18wMzYiLCJibmRzXzAzNCQ1IiwidGVzdF9tYXBfZmllbGQiLCJzdGF0dXNlc19maWVsZCIsImRlc2NyaXB0aW9uc19maWVsZCIsInRvdGFsX2ZpZWxkIiwicGFzc2luZ19maWVsZCIsImZhaWxpbmdfZmllbGQiLCJ1bmZpbmlzaGVkX2ZpZWxkIiwidW5maW5pc2hlZF92YWx1ZSIsImZhaWxpbmdfdmFsdWUiLCJwYXNzaW5nX3ZhbHVlIiwidG90YWxfdmFsdWUiLCJkZXNjcmlwdGlvbnNfdmFsdWUiLCJzdGF0dXNlc192YWx1ZSIsInRlc3RfbWFwX3ZhbHVlIiwidl91bmZpbmlzaGVkIiwidl9mYWlsaW5nIiwidl9wYXNzaW5nIiwidl90b3RhbCIsInZfZGVzY3JpcHRpb25zIiwidl9zdGF0dXNlcyIsInZfdGVzdF9tYXAiLCJta19yZXN1bHRzIiwiZGVzY3JpcHRpb25zIiwicmVzdWx0X3N1bW1hcnlfc3RyIiwibl9zdHIiLCJuc19zdHIiLCJwX3N0ciIsInFfc3RyIiwicl9zdHIiLCJvbmVfcCIsIm9uZV9xIiwibW55X3AiLCJtbnlfcSIsIm9mX24iLCJ0ZXN0X3N1bW1hcnlfc3RyIiwidGVzdF9yZXN1bHRzIiwic3Vic3RfdmFyIiwic3Vic3RfdmFyX2VudiIsImQ0IiwiZDMkMiIsImQzJDMiLCJkNCQwIiwiZDMkNCIsImVudiQyIiwiZDMkNSIsImQ0JDEiLCJkNCQyIiwiZDQkMyIsImQzJDYiLCJkMyQ3IiwiZDQkNCIsImQzJDgiLCJkMyQ5IiwiZDMkMTAiLCJkMyQxMSIsImQ0cyQwIiwiZDYiLCJkNSIsImQ0JDUiLCJkNCQ2IiwiZDUkMCIsImQ2JDAiLCJkNCQ3IiwiZDMkMTIiLCJkMyQxMyIsImQ0JDgiLCJkMyQxNCIsImRib2R5IiwiZGJvZHkkMCIsInN1YnN0X3Zhcl9maWx0ZXIiLCJkMyQxNSIsImVudiQzIiwiZW52JDQiLCJkMyQxNiIsImQ0JDkiLCJkNCQxMCIsImQ0JDExIiwiZDMkMTciLCJkMyQxOCIsImQ0JDEyIiwiZDQkMTMiLCJkMyQxOSIsImQzJDIwIiwiZDQkMTQiLCJkMyQyMSIsImQzJDIyIiwiZDQkMTUiLCJkMyQyMyIsImQzJDI0IiwiZDQkMTYiLCJkcyQyIiwicnVsZXMkMCIsInhkIiwicHBfc3RhdGljcyIsInNob3dfc3RhdGljcyIsInN0YXRpY3Nfb2Zfc2V4cCIsInRlcm1fMDA0IiwiaW5mb19tYXBfMDA2IiwiZXJyb3JfaWRzXzAwOCIsImVycm9yX2lkc18wMDkiLCJpbmZvX21hcF8wMDciLCJ0ZXJtXzAwNSIsInNleHBfb2Zfc3RhdGljcyIsImVycm9yX2lkc18wMjciLCJpbmZvX21hcF8wMjUiLCJ0ZXJtXzAyMyIsInN0YXRpY3Nfb2ZfeW9qc29uIiwiaW5mb19tYXBfZmllbGQiLCJlcnJvcl9pZHNfZmllbGQiLCJlcnJvcl9pZHNfdmFsdWUiLCJpbmZvX21hcF92YWx1ZSIsInlvanNvbl9vZl9zdGF0aWNzIiwidl9lcnJvcl9pZHMiLCJ2X2luZm9fbWFwIiwic3RhdGljc19vZl90ZXJtIiwiZWRpdG9yIiwiZW1wdHlfc3RhdGljcyIsInJlc3VsdHMiLCJzdGF0aWNzIiwiZXJyb3Jfc291cmNlXzA2NCIsInN0YXRlXzAwNiIsImRfbG9jXzAwOCIsImRfbG9jXzAxMCIsImN0eF8wMTIiLCJrbmRfMDE0IiwiZHVwbGljYXRlc18wMTYiLCJleHRyYV8wMTciLCJpdGVyXzAyOCIsImZpZWxkX3NleHBzXzAyMCIsImZpZWxkX25hbWVfMDE4IiwidGFpbF8wMjkiLCJmaWVsZF9zZXhwXzAxOSQ2IiwiZmllbGRfc2V4cF8wMTkiLCJ4XzAzMCIsImZpZWxkX3NleHBfMDE5JDAiLCJmaWVsZF9zZXhwXzAxOSQxIiwiZmllbGRfc2V4cF8wMTkkMiIsImZpZWxkX3NleHBfMDE5JDMiLCJmaWVsZF9zZXhwXzAxOSQ0IiwiZmllbGRfc2V4cF8wMTkkNSIsImZ2YWx1ZV8wMjIiLCJrbmRfMDE1IiwiY3R4XzAxMyIsImRfbG9jXzAxMSIsImRfbG9jXzAwOSIsInN0YXRlXzAwNyIsImtuZF8wNDIiLCJjdHhfMDQwIiwiZF9sb2NfMDM4IiwiZF9sb2NfMDM2Iiwic3RhdGVfMDM0IiwiZF8wMzIiLCJibmRzXzAzMSIsImJuZHNfMDMxJDAiLCJibmRzXzAzMSQxIiwiYm5kc18wMzEkMiIsImJuZHNfMDMxJDMiLCJhcmdfMDMzIiwiYm5kc18wMzEkNCIsImRfbG9jX2ZpZWxkIiwiZF9sb2NfZmllbGQkMCIsImtuZF9maWVsZCIsImtuZF92YWx1ZSIsImRfbG9jX3ZhbHVlIiwiZF9sb2NfdmFsdWUkMCIsInZfa25kIiwidl9kX2xvYyIsInZfZF9sb2MkMCIsImZpZWxkX3NleHBzXzA0NiIsImVudl8wNDciLCJkX2xvY18wNDkiLCJjdHhfMDUxIiwia25kXzA1MyIsImR1cGxpY2F0ZXNfMDU1IiwiZXh0cmFfMDU2IiwiaXRlcl8wNjUiLCJzZXhwXzA0NSQwIiwiZmllbGRfc2V4cHNfMDU5IiwiZmllbGRfbmFtZV8wNTciLCJ0YWlsXzA2NiIsImZpZWxkX3NleHBfMDU4JDQiLCJmaWVsZF9zZXhwXzA1OCIsInhfMDY3IiwiZmllbGRfc2V4cF8wNTgkMCIsImZ2YWx1ZV8wNjAiLCJmaWVsZF9zZXhwXzA1OCQxIiwiZmllbGRfc2V4cF8wNTgkMiIsImZpZWxkX3NleHBfMDU4JDMiLCJmdmFsdWVfMDYxIiwia25kXzA1NCIsImN0eF8wNTIiLCJkX2xvY18wNTAiLCJlbnZfMDQ4Iiwia25kXzA3NSIsImN0eF8wNzMiLCJkX2xvY18wNzEiLCJlbnZfMDY5IiwiYXJnXzA3NiIsImJuZHNfMDY4IiwiYXJnXzA3NCIsImJuZHNfMDY4JDAiLCJhcmdfMDcyIiwiYm5kc18wNjgkMSIsImFyZ18wNzAiLCJibmRzXzA2OCQyIiwiZW52X2ZpZWxkIiwiZW52X3ZhbHVlIiwidl9lbnYiLCJkX2xvYyIsImtuZCIsImdldF9jdHgiLCJvYmoiLCJnZXRfa2luZCIsIm9ianMiLCJ3ciIsInNzMSIsInNzMiIsInZzIiwicmVxX2FsbF92YWx1ZSQwIiwicmVxX2FsbF9maW5hbCQwIiwicnEiLCJybCIsInZhbCIsIm8iLCJkZWNvbXBvc2UiLCJyZXFfdmFsdWUkMCIsInJlcV9hbGxfdmFsdWUkMSIsInJlcV9maW5hbCQwIiwicmVxX2FsbF9maW5hbCQxIiwicmVxX2ZpbmFsX29yX3ZhbHVlJDAiLCJvdGhlcndpc2UkMCIsInVwZGF0ZV90ZXN0JDAiLCJ0YWtlX3N0ZXAkMCIsImRlY29tcG9zZSQwIiwiZXZhbHVhdGVfd2l0aF9oaXN0b3J5IiwiZXh0ZW5kcyQwIiwibWF0Y2hlc19leHAiLCJmdiIsImR2IiwiZnYkMCIsImR2JDAiLCJmdiQxIiwiZHYkMSIsImZ2JDIiLCJkdiQyIiwiZnYkMyIsImR2JDMiLCJmbmFtZTEiLCJmcDEiLCJkbmFtZTEiLCJtYXRjaGVzX3BhdCIsInBhdDIiLCJwYXQxIiwibWF0Y2hlc191dHBhdCIsImZ2JDQiLCJkdiQ0IiwiZngkMCIsImR4JDAiLCJmcCIsImZwJDAiLCJmZCIsImZ1dCIsImZ0cCIsImRkIiwiZHV0IiwiZHRwIiwiZjEkMiIsIm1hdGNoZXNfdHlwIiwiZjEkMyIsImYzIiwiZjIkMiIsImYxJDQiLCJmMiQzIiwiZjEkNSIsImYyJDQiLCJmZCQwIiwiZmYiLCJkZCQwIiwiZGYiLCJmMiQ1IiwiZjEkNiIsImYyJDYiLCJmMSQ3IiwiZjEkOCIsImZfb3AiLCJkX29wIiwiZjIkNyIsImYxJDkiLCJmX29wJDAiLCJkX29wJDAiLCJkbiIsImZydWxlIiwiZnNjcnV0IiwiZHJ1bGUiLCJkc2NydXQiLCJmayIsImRrIiwicmVzJDAiLCJkdCIsImR4IiwiZngiLCJkbCIsImZsIiwiZGwkMCIsImZsJDAiLCJtYXRjaGVzX3J1bCIsImwxIiwiZmx0X2VudiIsImZsdF9lbnYkMCIsImlkeCQwIiwiZmx0X2VudiQxIiwiaWR4JDEiLCJwcF9zdGVwcGVyX3N0YXRlIiwic2hvd19zdGVwcGVyX3N0YXRlIiwic3RlcHBlcl9zdGF0ZV9vZl9zZXhwIiwic2V4cF9vZl9zdGVwcGVyX3N0YXRlIiwic3RlcHBlcl9zdGF0ZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcHBlcl9zdGF0ZSIsInBwX2EiLCJzaG93X2EiLCJhX29mX3NleHAiLCJhcmcyXzAyMiIsInJlczJfMDI1Iiwic2V4cF9vZl9hIiwiYXJnMl8wMzAiLCJhcmcxXzAyOSIsInJlczJfMDMzIiwiYV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYSIsInBwX2hpc3RvcnkiLCJzaG93X2hpc3RvcnkiLCJoaXN0b3J5X29mX3NleHAiLCJzZXhwX29mX2hpc3RvcnkiLCJoaXN0b3J5X29mX3lvanNvbiIsInlvanNvbl9vZl9oaXN0b3J5Iiwic2V4cF8wMzgiLCJoaXN0b3J5XzA0MCIsIm5leHRfb3B0aW9uc18wNDIiLCJzdGVwcGVyX3N0YXRlXzA0NCIsImR1cGxpY2F0ZXNfMDQ2IiwiZXh0cmFfMDQ3IiwiaXRlcl8wNTUiLCJzZXhwXzAzOCQwIiwiZmllbGRfbmFtZV8wNDgiLCJ0YWlsXzA1NiIsImZpZWxkX3NleHBfMDQ5JDMiLCJmaWVsZF9zZXhwXzA0OSIsInhfMDU3IiwiZmllbGRfc2V4cF8wNDkkMCIsImZ2YWx1ZV8wNTEiLCJmaWVsZF9zZXhwXzA0OSQxIiwiZnZhbHVlXzA1MiIsImZpZWxkX3NleHBfMDQ5JDIiLCJmdmFsdWVfMDUzIiwic3RlcHBlcl9zdGF0ZV8wNDUiLCJuZXh0X29wdGlvbnNfMDQzIiwiaGlzdG9yeV8wNDEiLCJzdGVwcGVyX3N0YXRlXzA2MyIsIm5leHRfb3B0aW9uc18wNjEiLCJoaXN0b3J5XzA1OSIsImJuZHNfMDU4JDEiLCJuZXh0X29wdGlvbnNfZmllbGQiLCJzdGVwcGVyX3N0YXRlX2ZpZWxkIiwic3RlcHBlcl9zdGF0ZV92YWx1ZSIsIm5leHRfb3B0aW9uc192YWx1ZSIsInZfc3RlcHBlcl9zdGF0ZSIsInZfbmV4dF9vcHRpb25zIiwicGFjdCIsInBpZHgiLCJjb21wb3NlZCIsIm1pZHgiLCJtYWN0IiwicmN0eCIsInJpZHgiLCJyYWN0IiwiZmx0JDAiLCJmbHQkMSIsInJjdHgkMCIsInJpZHgkMCIsInJhY3QkMCIsImRyIiwiY3R4JDMyIiwic2hvdWxkX2hpZGVfZXZhbF9vYmoiLCJnZXRfZWxhYiIsImdldF9uZXh0X3N0ZXBzIiwiY3VycmVudF9leHByIiwiY3VycmVudF9zdGF0ZSIsInN0ZXBfcGVuZGluZyIsInN0ZXBwZXIiLCJldmFsdWF0ZV9wZW5kaW5nIiwiZW8iLCJzdGF0ZV9yZWYiLCJuZXdfc3RlcCIsImV2YWx1YXRlX2Z1bGwiLCJ0aW1lb3V0IiwidHJ1bmNhdGVfaGlzdG9yeSIsImFzIiwiYnMiLCJicyQwIiwic3RlcF9iYWNrd2FyZCIsImgiLCJzdCIsImdldF9qdXN0aWZpY2F0aW9uIiwiZ2V0X2hpc3RvcnkiLCJzaG91bGRfc2tpcF9zdGVwIiwiZ3JvdXBlZF9zdGVwcyIsInJlcGxhY2VfaWQiLCJ0cmFja19pZHMiLCJwcmV2aW91c19zdGVwIiwiaGlkZGVuX2hpc3RvcnkiLCJjaG9zZW5fc3RlcCIsImhzIiwiaGgiLCJyZXBsYWNlbWVudCIsImhpZGRlbl9oaXN0b3J5JDAiLCJwcmV2aW91c19zdGVwJDAiLCJwYWRkZWQiLCJoaWRkZW5fc3RlcHNfb2ZfaW5mbyIsInBwX3BlcnNpc3RlbnRfaGlzdG9yeSIsInNob3dfcGVyc2lzdGVudF9oaXN0b3J5IiwicGVyc2lzdGVudF9oaXN0b3J5X29mX3NleHAiLCJ4XzA3MiIsInNleHBfMDcwIiwiYXJnMV8wNjciLCJzZXhwX29mX3BlcnNpc3RlbnRfaGlzdG9yeSIsInhfMDc3IiwiYXJnMV8wNzQiLCJhcmcwXzA3MyIsInJlczFfMDc2IiwicGVyc2lzdGVudF9oaXN0b3J5X29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50X2hpc3RvcnkiLCJwcF9wZXJzaXN0ZW50Iiwic2hvd19wZXJzaXN0ZW50IiwicGVyc2lzdGVudF9vZl9zZXhwIiwic2V4cF8wNzkiLCJmaWVsZF9zZXhwc18wODAiLCJwZXJzaXN0ZW50X2hpc3RvcnlfMDgxIiwiZHVwbGljYXRlc18wODMiLCJleHRyYV8wODQiLCJpdGVyXzA5MCIsInNleHBfMDc5JDAiLCJmaWVsZF9zZXhwc18wODciLCJmaWVsZF9uYW1lXzA4NSIsInRhaWxfMDkxIiwiZmllbGRfc2V4cF8wODYkMSIsImZpZWxkX3NleHBfMDg2IiwieF8wOTIiLCJmaWVsZF9zZXhwXzA4NiQwIiwiZnZhbHVlXzA4OCIsInBlcnNpc3RlbnRfaGlzdG9yeV8wODIiLCJzZXhwX29mX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X2hpc3RvcnlfMDk0IiwiYXJnXzA5NSIsImJuZHNfMDkzIiwicGVyc2lzdGVudF9vZl95b2pzb24iLCJwZXJzaXN0ZW50X2hpc3RvcnlfZmllbGQiLCJwZXJzaXN0ZW50X2hpc3RvcnlfdmFsdWUiLCJ5b2pzb25fb2ZfcGVyc2lzdGVudCIsInZfcGVyc2lzdGVudF9oaXN0b3J5IiwicGVyc2lzdGVudF9vZl9zZXhwJDAiLCJzZXhwX29mX3BlcnNpc3RlbnQkMCIsInBlcnNpc3RlbnRfb2Zfc2V4cCQxIiwic2V4cF9vZl9wZXJzaXN0ZW50JDEiLCJ0b19wZXJzaXN0ZW50X2hpc3RvcnkiLCJ0b19wZXJzaXN0ZW50IiwiZnJvbV9wZXJzaXN0ZW50X2hpc3RvcnkiLCJmcm9tX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X2hpc3RvcnkiLCJnZXRfc2VsZWN0ZWRfZWRpdG9yIiwicHV0X3NlbGVjdGVkX2VkaXRvciIsInBwX21vdmFiaWxpdHkiLCJzaG93X21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3NleHAiLCJzZXhwX29mX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5X29mX3lvanNvbiIsInlvanNvbl9vZl9tb3ZhYmlsaXR5IiwibW92YWJpbGl0eSIsImNodW5raW5lc3MiLCJkZWxpbV9pZHgiLCJjaGFyX21heCIsIm5laWdoYm9yX21vdmFiaWxpdHkiLCJtb3ZhYmlsaXR5JDAiLCJsX2tpZHMiLCJzdXBlcm5oYnJfciQwIiwic3VwZXJuaGJyX2wiLCJyX25oYnIiLCJsX25oYnIiLCJ3JDAiLCJjb250ZW50X3N0cmluZyQwIiwiY29udGVudF9zdHJpbmciLCJwb3Bfb3V0IiwicG9wX21vdmUiLCJpbm5lcl9pbmNyIiwiaW5uZXJfZGVjciIsImlubmVyX3N0YXJ0IiwiZF9pbml0IiwiaW5uZXJfZW5kIiwiY19tYXgiLCJwcmltYXJ5IiwiY19tYXgkMCIsImRsbSIsImlzX2F0X3NpZGVfb2Zfcm93IiwiY29scCIsInJvd3AiLCJkb190b3dhcmRzIiwiYW5jaG9yIiwiZ29hbCIsImN1cnIkMCIsImN1cnJfcCIsImRfY3VyciIsImRfcHJldiIsImFuY2hvciQwIiwiYW5jaG9yX2QiLCJkb192ZXJ0aWNhbCIsImN1cl9wIiwiZG9fZXh0cmVtZSIsInRvX3N0YXJ0IiwidG9fZW5kIiwidG9fZWRnZSIsImRvX3VudGlsIiwibW92ZV9maXJzdCIsInBpZWNlX3AiLCJkb191bnRpbF93cmFwIiwianVtcF90b19pZCIsInZlcnRpY2FsIiwidGFyZ2V0c193aXRoaW5fcm93IiwidG9fYmFja3BhY2tfdGFyZ2V0IiwiZG9uZV9vcl90cnlfYWdhaW4iLCJ6MSIsInoyIiwiZGlzdDEiLCJkaXN0MiIsInpzIiwiY2h1bmsiLCJjaHVuayQwIiwiYmFyZiIsImRlbGF5ZWRfZXhwYW5kIiwibmV3X2xhYmVsIiwiZXhwYW5kX29yX2JhcmZfbGVmdF9uZWlnaGJvciIsImV4cGFuZF9vcl9iYXJmX3JpZ2h0X25laWdoYm9yIiwiZ2V0X2R1b19zaGFyZCIsIm5laWdoYm9yX2Nhbl9kdW9tZXJnZSIsIm1vbm9fbGJsIiwidGlsZSQwIiwibWFrZV9uZXdfdGlsZSIsImxibCQwIiwiZXhwYW5kX25laWdoYm9yc19hbmRfbWFrZV9uZXdfIiwicmVwbGFjZV90aWxlIiwicHBfYXBwZW5kYWJpbGl0eSIsInNob3dfYXBwZW5kYWJpbGl0eSIsImFwcGVuZGFiaWxpdHlfb2Zfc2V4cCIsInNleHBfb2ZfYXBwZW5kYWJpbGl0eSIsImFwcGVuZGFiaWxpdHlfb2ZfeW9qc29uIiwieW9qc29uX29mX2FwcGVuZGFiaWxpdHkiLCJzaWJsaW5nX2FwcGVuZGFiaWxpdHkiLCJpbnNlcnRfb3V0ZXIiLCJpbnNlcnRfZHVvIiwiaW5zZXJ0X21vbm9zIiwib3B0X3JlZ3JvbGQiLCJtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW0iLCJjbG9zaW5nX3N0cmluZ2xpdF9vcl9jb21tZW50IiwiZF9pZHgiLCJjYXJldCQwIiwiY2FyZXRfc3RyIiwiY29kZV9maWVsZCIsImNvZGVfdmFsdWUiLCJ2X2NvZGUiLCJzZWdfb2ZfemlwIiwib2ZfcGllY2UiLCJvZl9kZWxpbSIsInRvX3N0cmluZ19iYXNpYyIsImxpbmVzX3RvX2xpc3QiLCJ0b19yb3dzIiwiaW5kZW50X29mIiwibWtfaW5kZW50IiwiY2FyZXRfcm93IiwiY2FyZXRfcm93JDAiLCJ0b19zdHJpbmdfZWRpdG9yIiwidG9fc3RyaW5nX3NlbGVjdGlvbiIsInRvX2xvZyIsInRvX2xvZ19mbGF0IiwiY29kZSIsInppcHBlcl9vZl9zdHJpbmciLCJ6aXBwZXJfaW5pdCIsImluc2VydCIsImJhY2t1cF90ZXh0XzAwNiIsImJhY2t1cF90ZXh0XzAwNyIsImJhY2t1cF90ZXh0XzAyMiIsImJhY2t1cF90ZXh0X2ZpZWxkIiwiYmFja3VwX3RleHRfdmFsdWUiLCJ2X2JhY2t1cF90ZXh0IiwicGVyc2lzdCIsInVucGVyc2lzdCIsInBlcnNpc3RlZCIsImxhc3RfaW5uZXJfcG9zIiwiZGVsZXRlX3JpZ2h0IiwiZGVsZXRlX2xlZnQiLCJjb25zdHJ1Y3RfcmlnaHQiLCJjb25zdHJ1Y3RfbGVmdCIsImNfaWR4IiwiY19pZHgkMCIsInBhcmVudF9kdW9tZXJnZXMiLCJpc193cml0ZV9hY3Rpb24iLCJnb196IiwibWV0YSQwIiwibWV0YSQxIiwic2VsZWN0X3Rlcm1fY3VycmVudCQwIiwic2VsZWN0X3Rlcm1fY3VycmVudCIsImp1bXBfdGFyZ2V0IiwiYmluZGluZ19pZCIsInokNyIsInokOCIsInokOSIsInokMTAiLCJ6JDExIiwieiQ1IiwidGlsZV9pc190ZXJtIiwic3RhdGljcyQwIiwieiQ2IiwieiQxMiIsImNsaXBib2FyZCIsInokMTMiLCJvcmllbnQiLCJvcmllbnQkMCIsImVycm9yX3NvdXJjZV8wNzMiLCJwcF9ldmFsX3Jlc3VsdCIsInNob3dfZXZhbF9yZXN1bHQiLCJldmFsX3Jlc3VsdF9vZl9zZXhwIiwiZWxhYl8wMDQiLCJldmFsdWF0aW9uXzAwNiIsInByZXZpb3VzXzAwOCIsInByZXZpb3VzXzAwOSIsImV2YWx1YXRpb25fMDA3IiwiZWxhYl8wMDUiLCJzZXhwX29mX2V2YWxfcmVzdWx0IiwicHJldmlvdXNfMDI3IiwiZXZhbHVhdGlvbl8wMjUiLCJlbGFiXzAyMyIsImV2YWxfcmVzdWx0X29mX3lvanNvbiIsImVsYWJfZmllbGQiLCJwcmV2aW91c19maWVsZCIsInByZXZpb3VzX3ZhbHVlIiwiZWxhYl92YWx1ZSIsInlvanNvbl9vZl9ldmFsX3Jlc3VsdCIsInZfcHJldmlvdXMiLCJ2X2VsYWIiLCJpbml0X2V2YWwiLCJlbGFiIiwidXBkYXRlX2VsYWIiLCJldmFsdWF0aW9uIiwidXBkYXRlX3N0ZXBwZXIiLCJwYXJhbSIsInN0ZXBfZm9yd2FyZCIsIm1yIiwicnVuX3BlbmRpbmciLCJwcmV2aW91cyIsInVwZGF0ZV9ldmFsdWF0aW9uIiwiZXZhbCQwIiwidG9nZ2xlX3N0ZXBwZXIiLCJwciIsIm9mX3BlcnNpc3RlbnQiLCJwcF9zZWxlY3Rpb24iLCJzaG93X3NlbGVjdGlvbiIsInNlbGVjdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9zZWxlY3Rpb24iLCJzZWxlY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX3NlbGVjdGlvbiIsInNlbGVjdGlvbl8wNjIiLCJhY3Rpb25fMDY0IiwiZHVwbGljYXRlc18wNjYiLCJleHRyYV8wNjciLCJpdGVyXzA3NCIsImZpZWxkX3NleHBzXzA3MCIsImZpZWxkX25hbWVfMDY4IiwidGFpbF8wNzUiLCJmaWVsZF9zZXhwXzA2OSQyIiwiZmllbGRfc2V4cF8wNjkiLCJ4XzA3NiIsImZpZWxkX3NleHBfMDY5JDAiLCJmdmFsdWVfMDcyIiwiZmllbGRfc2V4cF8wNjkkMSIsImZ2YWx1ZV8wNzEiLCJhY3Rpb25fMDY1Iiwic2VsZWN0aW9uXzA2MyIsImFjdGlvbl8wODAiLCJzZWxlY3Rpb25fMDc4IiwiYXJnXzA4MSIsImJuZHNfMDc3IiwiYXJnXzA3OSIsImJuZHNfMDc3JDAiLCJhY3Rpb25fZmllbGQiLCJhY3Rpb25fdmFsdWUiLCJ2X2FjdGlvbiIsImVkaXRvciQwIiwicHIkMCIsImdldF9lbGFib3JhdGlvbiIsInBlcmZvcm0iLCJhY3Rpb24iLCJ4XzAwNCIsInVwZGF0ZV9lbGFicyIsInRpbWVvdXRfYWxsIiwiYWR2YW5jZV9ldmFsdWF0b3JfcmVzdWx0Iiwic3RlcHBlcl9yZXN1bHRfb3B0IiwidG9fZXZhbHVhdGUiLCJlbGFicyIsInRvX3N0ZXAiLCJwdXRfcmVzdWx0IiwiY2xlYXIiLCJlZGl0b3Jfb2ZfY29kZSIsImVkaXRvcnNfZm9yIiwiYWNjX3pzIiwic3oiLCJlZGl0b3JzX29mX3N0cmluZ3MiLCJhZXMiLCJvZSIsImFwcGVuZF9leHAiLCJlYm9keSIsImVkZWYiLCJlYm9keSQwIiwiZWJvZHkkMSIsInRkZWYiLCJlYm9keSQyIiwiZTEyIiwiZTExIiwiZTEyJDAiLCJlYm9keSQzIiwiZWJvZHkkNCIsIm5ic3AiLCJsZW5ndGgiLCJzIiwic3RvcCIsInN0YXJ0IiwiY291bnQiLCJuIiwiY291bnQkMCIsInN0YXJ0JDAiLCJjb3VudCQxIiwic3RhcnQkMSIsImNvdW50JDIiLCJzdGFydCQyIiwic3RhcnQkMyIsImVtcHR5Iiwic2luZ2xldG9uIiwicG9zIiwieCIsInVuaW9uIiwiZiIsInQxIiwidDIiLCJ4czIiLCJ4MiIsInAyIiwieHMxIiwieDEiLCJwMSIsIm1hcCIsInJlc3QiLCJtYXBpIiwibWFwayIsImZvbGRfbGVmdCIsInokMCIsImVycm9yX3NvdXJjZV8wMTUiLCJ6ZXJvIiwidF9vZl9zZXhwIiwic2V4cF8wMDIiLCJmaWVsZF9zZXhwc18wMDMiLCJyb3dfMDA0IiwiY29sXzAwNiIsImR1cGxpY2F0ZXNfMDA4IiwiZXh0cmFfMDA5Iiwic2V4cF8wMDIkMCIsImZpZWxkX3NleHBzXzAxMiIsImZpZWxkX25hbWVfMDEwIiwidGFpbF8wMTciLCJmaWVsZF9zZXhwXzAxMSQyIiwiZmllbGRfc2V4cF8wMTEiLCJ4XzAxOCIsImZpZWxkX3NleHBfMDExJDAiLCJmdmFsdWVfMDE0IiwiZmllbGRfc2V4cF8wMTEkMSIsImZ2YWx1ZV8wMTMiLCJjb2xfMDA3Iiwicm93XzAwNSIsInNleHBfb2ZfdCIsImNvbF8wMjIiLCJyb3dfMDIwIiwiYXJnXzAyMyIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJjb21wYXJlIiwicG9zMSIsInBvczIiLCJlcnJvcl9zb3VyY2VfMDA0Iiwib2ZfYW5ub3RfMDAxIiwic2V4cF8wMDYiLCJ0YWdfMDA3Iiwic2V4cF9hcmdzXzAyMCIsImFyZzBfMDIxIiwicmVzMF8wMjIiLCJzZXhwX2FyZ3NfMDI1IiwiYXJnMV8wMjciLCJhcmcwXzAyNiIsInJlczBfMDI4IiwicmVzMV8wMjkiLCJzZXhwX2FyZ3NfMDEzIiwiYXJnMV8wMTUiLCJhcmcwXzAxNCIsInJlczBfMDE2IiwicmVzMV8wMTciLCJzZXhwX2FyZ3NfMDA4IiwiYXJnMF8wMDkiLCJyZXMwXzAxMCIsIm9mX2Fubm90XzAzMSIsImFyZzBfMDMyIiwicmVzMF8wMzMiLCJhcmcxXzAzNSIsImFyZzBfMDM0IiwicmVzMF8wMzYiLCJyZXMxXzAzNyIsImFyZzBfMDM4IiwicmVzMF8wMzkiLCJhcmcxXzA0MSIsImFyZzBfMDQwIiwicmVzMF8wNDIiLCJyZXMxXzA0MyIsImFsaWduIiwibCIsImFubm90IiwicmVtb3ZlX2Fubm90cyIsImxheW91dCIsImxheW91dCQwIiwic3RyaW5nIiwibDIiLCJsMSIsImxheW91dCQxIiwibWtfb2ZfbGF5b3V0IiwidGV4dCIsImNvbHVtbiIsImdvIiwiaW5kZW50IiwiaW5kZW50JDAiLCJpbXAxIiwiaW1wMiIsImluZGVudCQxIiwic3RyaW5nX29mX2xheW91dCIsImltcCIsInMxIiwiczIiLCJyZWNvcmQiLCJzdHJpbmdzX29mX2xheW91dCIsInJlc3QyIiwiZmlyc3Rfc3RyaW5nXzIiLCJmaXJzdF9pbmRlbnRfMiIsInJlc3QxIiwibGFzdF9zdHJpbmdfMSIsImxhc3RfaW5kZW50XzEiLCJzcGxpdF9maXJzdCIsInhzIiwidHJhaWxpbmciLCJmaXJzdCIsInNwbGl0X2xhc3Rfb3B0IiwieXMiLCJ5Iiwic3BsaXRfbGFzdCIsInIiLCJib3giLCJlcnJvcl9zb3VyY2VfMDM5IiwiZXJyb3Jfc291cmNlXzA0NiIsImJveF9vZl9zZXhwIiwiaGVpZ2h0XzAwNCIsIndpZHRoXzAwNiIsIndpZHRoXzAwNyIsImhlaWdodF8wMDUiLCJzZXhwX29mX2JveCIsIndpZHRoXzAyMiIsImhlaWdodF8wMjAiLCJ0X29mX3NleHAkMCIsIm9mX2Fubm90XzAyNCIsInNleHBfMDI2IiwiZmllbGRfc2V4cHNfMDI3IiwibGF5b3V0XzAyOCIsIm1ldHJpY3NfMDMwIiwiZHVwbGljYXRlc18wMzIiLCJleHRyYV8wMzMiLCJzZXhwXzAyNiQwIiwiZmllbGRfc2V4cHNfMDM2IiwiZmllbGRfbmFtZV8wMzQiLCJ0YWlsXzA0MSIsImZpZWxkX3NleHBfMDM1JDIiLCJmaWVsZF9zZXhwXzAzNSIsInhfMDQyIiwiZmllbGRfc2V4cF8wMzUkMCIsImZ2YWx1ZV8wMzciLCJmaWVsZF9zZXhwXzAzNSQxIiwiZnZhbHVlXzAzOCIsIm1ldHJpY3NfMDMxIiwibGF5b3V0XzAyOSIsIm9mX2Fubm90XzA0MyIsInNleHBfMDQ4IiwidGFnXzA0OSIsInNleHBfYXJnc18wNTUiLCJhcmcwXzA1NiIsInJlczBfMDU3Iiwic2V4cF9hcmdzXzA2NyIsImFyZzFfMDY5IiwiYXJnMF8wNjgiLCJyZXMwXzA3MCIsInJlczFfMDcxIiwic2V4cF9hcmdzXzA2MCIsImFyZzFfMDYyIiwiYXJnMF8wNjEiLCJyZXMwXzA2MyIsInJlczFfMDY0Iiwic2V4cF9hcmdzXzA1MCIsImFyZzBfMDUxIiwicmVzMF8wNTIiLCJvZl9hbm5vdF8wNzMiLCJtZXRyaWNzXzA3NyIsImxheW91dF8wNzUiLCJhcmdfMDc4IiwiYm5kc18wNzQiLCJhcmdfMDc2Iiwic2V4cF9vZl90JDAiLCJibmRzXzA3NCQwIiwib2ZfYW5ub3RfMDc5IiwiYXJnMF8wODAiLCJyZXMwXzA4MSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJhcmcxXzA4NSIsImFyZzBfMDg0IiwicmVzMF8wODYiLCJyZXMxXzA4NyIsImFyZzFfMDg5IiwiYXJnMF8wODgiLCJyZXMwXzA5MCIsInJlczFfMDkxIiwiaGVpZ2h0IiwibSIsIndpZHRoIiwib3B0Iiwic3RoIiwib2Zmc2V0IiwiZm9sZCIsImxpbmVicmVhayIsImNhdCIsIm0kMCIsIm0yIiwibTEiLCJhY2MxIiwiYWNjMiIsIm0kMSIsImFubiIsIm5leHRfcG9zaXRpb24iLCJjb2wiLCJyb3ciLCJ1cGRhdGVkX3JvdyIsImxhc3QiLCJsZWFkaW5nIiwidXBkYXRlZF9jb2wiLCJwb3NfZm9sZCIsInN0aCQwIiwibWlkIiwidGFibGUiLCJtayIsIm1pZF9ib3giLCJsJDAiLCJidyIsImJoIiwiYm91bmRpbmdfYm94IiwibCQxIiwibSQyIiwib3ZlcmZsb3dfY29zdCIsImhlaWdodF9jb3N0IiwibWtfaGVpZ2h0IiwibWtfb3ZlcmZsb3ciLCJpbmYiLCJhZGQiLCJjMSIsImMyIiwiZXEiLCJsdCIsImxlcSIsImVycm9yX3NvdXJjZV8wMTYiLCJlcnJvcl9zb3VyY2VfMDIzIiwiZXJyb3Jfc291cmNlXzA5NiIsImVycm9yX3NvdXJjZV8xMDMiLCJoYXNoIiwiZXF1YWwiLCJ3MiIsIncxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJtZW1fMDA1IiwiZG9jXzAwNyIsImR1cGxpY2F0ZXNfMDA5IiwiZXh0cmFfMDEwIiwic2V4cF8wMDMkMCIsImZpZWxkX3NleHBzXzAxMyIsImZpZWxkX25hbWVfMDExIiwidGFpbF8wMTgiLCJmaWVsZF9zZXhwXzAxMiQyIiwiZmllbGRfc2V4cF8wMTIiLCJ4XzAxOSIsImZpZWxkX3NleHBfMDEyJDAiLCJmdmFsdWVfMDE1IiwiZmllbGRfc2V4cF8wMTIkMSIsImRvY18wMDgiLCJtZW1fMDA2Iiwib2ZfYW5ub3RfMDIwIiwic2V4cF8wMjUiLCJ0YWdfMDI2Iiwic2V4cF9hcmdzXzAzOSIsInJlczBfMDQxIiwic2V4cF9hcmdzXzA0NCIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMwXzA0NyIsInJlczFfMDQ4Iiwic2V4cF9hcmdzXzAzMiIsImFyZzFfMDM0IiwiYXJnMF8wMzMiLCJyZXMwXzAzNSIsInJlczFfMDM2Iiwic2V4cF9hcmdzXzA1MSIsImFyZzFfMDUzIiwiYXJnMF8wNTIiLCJyZXMwXzA1NCIsInJlczFfMDU1Iiwic2V4cF9hcmdzXzAyNyIsImFyZzBfMDI4IiwicmVzMF8wMjkiLCJ0X29mX3NleHAkMSIsInRfb2Zfc2V4cCQyIiwib2ZfYW5ub3RfMDgxIiwic2V4cF8wODMiLCJmaWVsZF9zZXhwc18wODQiLCJtZW1fMDg1IiwiZG9jXzA4NyIsImR1cGxpY2F0ZXNfMDg5IiwiZXh0cmFfMDkwIiwic2V4cF8wODMkMCIsImZpZWxkX3NleHBzXzA5MyIsImZpZWxkX25hbWVfMDkxIiwidGFpbF8wOTgiLCJmaWVsZF9zZXhwXzA5MiQyIiwiZmllbGRfc2V4cF8wOTIiLCJ4XzA5OSIsImZpZWxkX3NleHBfMDkyJDAiLCJmdmFsdWVfMDk1IiwiZmllbGRfc2V4cF8wOTIkMSIsImZ2YWx1ZV8wOTQiLCJkb2NfMDg4IiwibWVtXzA4NiIsIm9mX2Fubm90XzEwMCIsInNleHBfMTA1IiwidGFnXzEwNiIsInNleHBfYXJnc18xMTkiLCJhcmcwXzEyMCIsInJlczBfMTIxIiwic2V4cF9hcmdzXzEyNCIsImFyZzFfMTI2IiwiYXJnMF8xMjUiLCJyZXMwXzEyNyIsInJlczFfMTI4Iiwic2V4cF9hcmdzXzExMiIsImFyZzFfMTE0IiwiYXJnMF8xMTMiLCJyZXMwXzExNSIsInJlczFfMTE2Iiwic2V4cF9hcmdzXzEzMSIsImFyZzFfMTMzIiwiYXJnMF8xMzIiLCJyZXMwXzEzNCIsInJlczFfMTM1Iiwic2V4cF9hcmdzXzEwNyIsImFyZzBfMTA4IiwicmVzMF8xMDkiLCJvZl9hbm5vdF8xMzciLCJkb2NfMTQxIiwibWVtXzEzOSIsImFyZ18xNDIiLCJibmRzXzEzOCIsImFyZ18xNDAiLCJibmRzXzEzOCQwIiwib2ZfYW5ub3RfMTQzIiwiYXJnMF8xNDQiLCJyZXMwXzE0NSIsImFyZzFfMTQ3IiwiYXJnMF8xNDYiLCJyZXMwXzE0OCIsInJlczFfMTQ5IiwiYXJnMF8xNTAiLCJyZXMwXzE1MSIsImFyZzFfMTUzIiwiYXJnMF8xNTIiLCJyZXMwXzE1NCIsInJlczFfMTU1IiwiYXJnMV8xNTciLCJhcmcwXzE1NiIsInJlczBfMTU4IiwicmVzMV8xNTkiLCJ0X29mX3QiLCJ0IiwiZG9jIiwiZmFpbCIsInNwYWNlIiwiaW5kZW50X2FuZF9hbGlnbiIsImhjYXQiLCJoY2F0cyIsImRvY3MiLCJoc2VwIiwiaHNlcHMiLCJ2c2VwIiwidnNlcHMiLCJjaG9pY2UiLCJjaG9pY2VzIiwibWFwX3QiLCJkIiwibWFwX2Fubm90IiwiZDIiLCJkMSIsImQkMCIsImQkMSIsImQyJDAiLCJkMSQwIiwiYWxsIiwibHMxIiwibHMyIiwibV91bmlvbiIsImNvc3RfdW5pb24iLCJjb3N0MiIsImNvc3QxIiwibGF5b3V0X29mX2RvYyIsImgiLCJwb3MkMCIsImtleSIsInZhbHVlIiwidmFsdWUkMCIsImNvc3QiLCJvdmVyZmxvdyIsInoiLCJsYXlvdXQxIiwibGF5b3V0MiIsImxheW91dHMiLCJwIiwiYyIsImwxJDAiLCJsYXlvdXRfb2ZfZG9jJDAiLCJ4X2Nvc3QiLCJ4X3BvcyIsInNleHBfYXJnc18wMTgiLCJhcmcwXzAxOSIsInJlczBfMDIwIiwicmVzMF8wMTUiLCJzZXhwX2FyZ3NfMDIzIiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJvZl9hbm5vdF8wMjkiLCJhcmcwXzAzMCIsInJlczBfMDMxIiwiYXJnMV8wMzciLCJhcmcwXzAzNiIsInJlczBfMDM4IiwicmVzMV8wMzkiLCJoZWlnaHRfdGJsIiwiaCQwIiwiYnMiLCJicyQwIiwiYiIsImFubm90cyIsImFubm90cyQwIiwiYm94JDAiLCJhbm5vdHMkMSIsImJveCQxIiwiYXBwZW5kX2JveCIsImJveDIiLCJhcHBlbmRfbGFzdCIsImJzMSIsImIxIiwiYnMxJDAiLCJhbm5vdCQwIiwiYm94ZXMiLCJib3hlczEiLCJsZWFkaW5nJDAiLCJib3hlczIiLCJlcnJvcl9zb3VyY2VfMDE1IiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAyNiIsInRwX2xvYyQwIiwicHBfc3ludGF4X3Jlc3VsdCIsImZtdCIsIngiLCJ4JDAiLCJzZXAiLCJzaG93X3N5bnRheF9yZXN1bHQiLCJzeW50YXhfcmVzdWx0X29mX3NleHAiLCJzZXhwXzAwMiIsImZpZWxkX3NleHBzXzAwMyIsInJlc3VsdHNfMDA0IiwicGVyY2VudGFnZV8wMDYiLCJkdXBsaWNhdGVzXzAwOCIsImV4dHJhXzAwOSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTIiLCJmaWVsZF9uYW1lXzAxMCIsInRhaWxfMDE3IiwiZmllbGRfc2V4cF8wMTEkMiIsImZpZWxkX3NleHBfMDExIiwieF8wMTgiLCJmaWVsZF9zZXhwXzAxMSQwIiwiZnZhbHVlXzAxNCIsImZpZWxkX3NleHBfMDExJDEiLCJmdmFsdWVfMDEzIiwicGVyY2VudGFnZV8wMDciLCJyZXN1bHRzXzAwNSIsInNleHBfb2Zfc3ludGF4X3Jlc3VsdCIsInBlcmNlbnRhZ2VfMDIyIiwicmVzdWx0c18wMjAiLCJhcmdfMDIzIiwiYm5kc18wMTkiLCJhcmdfMDIxIiwiYm5kc18wMTkkMCIsInN5bnRheF9yZXN1bHRfb2ZfeW9qc29uIiwieW9qc29uIiwiZmllbGRfeW9qc29ucyIsInJlc3VsdHNfZmllbGQiLCJwZXJjZW50YWdlX2ZpZWxkIiwiZHVwbGljYXRlcyIsImV4dHJhIiwidGFpbCIsImZpZWxkX3lvanNvbiIsImZpZWxkX25hbWUiLCJmdmFsdWUiLCJmdmFsdWUkMCIsInBlcmNlbnRhZ2VfdmFsdWUiLCJyZXN1bHRzX3ZhbHVlIiwieW9qc29uX29mX3N5bnRheF9yZXN1bHQiLCJ2X3BlcmNlbnRhZ2UiLCJ2X3Jlc3VsdHMiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJmaW5kX3Zhcl91cGF0IiwibmFtZSIsInVwYXQiLCJ1cGF0JDAiLCJ1cGF0JDEiLCJ1cDEiLCJ1cGF0JDIiLCJ1cGF0JDMiLCJ1cDEkMCIsInVwYXQkNCIsImwiLCJhY2MiLCJ1cCIsImZpbmRfaW5fbGV0IiwiZGVmIiwiZGVmJDAiLCJ1bCIsInBsIiwidWUiLCJkZWYkMiIsImRlZiQxIiwiZmluZF9mbiIsInVleHAiLCJ1ZXhwJDAiLCJsJDAiLCJib2R5JDAiLCJsJDEiLCJ1ZXhwJDEiLCJhcmdzIiwiZm4iLCJ1IiwidWV4cCQzIiwidTIiLCJ1MSQwIiwibCQyIiwidWwkMCIsInUxJDEiLCJ1MSIsInVleHAkMiIsImJvZHkiLCJsJDMiLCJ2YXJfbWVudGlvbl91cGF0IiwidmFyX21lbnRpb24iLCJwIiwiYm9keSQxIiwiYXJncyQwIiwidXMiLCJ1ZXhwJDUiLCJ1ZXhwJDYiLCJnIiwicGUiLCJlIiwidWV4cCQ3IiwidWV4cCQ0IiwidmFyX2FwcGxpZWQiLCJ4JDEiLCJ1MSQyIiwiaXNfcmVjdXJzaXZlIiwiZm5fYm9kaWVzIiwidGFpbF9jaGVjayIsInUyJDAiLCJ1MiQxIiwiaXNfdGFpbF9yZWN1cnNpdmUiLCJjaGVjayIsInByZWRpY2F0ZXMiLCJwcmVkIiwicmVzdWx0cyIsImxlbmd0aCIsInJlcyIsInBhc3NpbmciLCJwcF9wcmVkaWNhdGUiLCJhMCIsImEwJDAiLCJhMCQxIiwiYTAkMiIsInNob3dfcHJlZGljYXRlIiwicHJlZGljYXRlX29mX3NleHAiLCJzZXhwXzAyOCIsInRhZ18wMjkiLCJzZXhwX2FyZ3NfMDMwIiwiYXJnMF8wMzEiLCJyZXMwXzAzMiIsInNleHBfYXJnc18wNDUiLCJhcmcwXzA0NiIsInJlczBfMDQ3Iiwic2V4cF9hcmdzXzAzNSIsImFyZzBfMDM2IiwicmVzMF8wMzciLCJzZXhwX2FyZ3NfMDQwIiwiYXJnMF8wNDEiLCJyZXMwXzA0MiIsInNleHBfb2ZfcHJlZGljYXRlIiwiYXJnMF8wNDgiLCJyZXMwXzA0OSIsImFyZzBfMDUwIiwicmVzMF8wNTEiLCJhcmcwXzA1MiIsInJlczBfMDUzIiwiYXJnMF8wNTQiLCJyZXMwXzA1NSIsInByZWRpY2F0ZV9vZl95b2pzb24iLCJ0YWciLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyIsInYwIiwidjAkMCIsInlvanNvbl9vZl9wcmVkaWNhdGUiLCJwcmVkaWNhdGVfZm4iLCJwcmVkaWNhdGUiLCJuYW1lJDAiLCJuYW1lJDEiLCJuYW1lJDIiLCJwcmVmaXgiLCJlcnJvcl9zb3VyY2VfMDE2IiwiZXJyb3Jfc291cmNlXzA0MSIsImVycm9yX3NvdXJjZV8wNTgiLCJ0cF9sb2MkMSIsImVycm9yX3NvdXJjZV8wODQiLCJ0cF9sb2MkMiIsImVycm9yX3NvdXJjZV8xMTMiLCJ0cF9sb2MkMyIsImVycm9yX3NvdXJjZV8xNjkiLCJ0cF9sb2MkNCIsImVycm9yX3NvdXJjZV8yMDUiLCJ0cF9sb2MkNSIsImVycm9yX3NvdXJjZV8yMTIiLCJ0cF9sb2MkNiIsImVycm9yX3NvdXJjZV8yNDEiLCJ0cF9sb2MkNyIsImVycm9yX3NvdXJjZV8yNTQiLCJ0cF9sb2MkOCIsInByZWx1ZGVfa2V5IiwidGVzdF92YWxpZGF0aW9uX2tleSIsInVzZXJfaW1wbF9rZXkiLCJ1c2VyX3Rlc3RzX2tleSIsImluc3RydWN0b3Jfa2V5IiwiaGlkZGVuX3Rlc3RzX2tleSIsImVycm9yX3NvdXJjZV8yNzgiLCJ0cF9sb2MkOSIsIm91dHB1dF9oZWFkZXJfZ3JhZGluZyIsIm1vZHVsZV9uYW1lIiwicHBfd3JvbmdfaW1wbCIsInBvbHlfY29kZSIsInNob3dfd3JvbmdfaW1wbCIsIndyb25nX2ltcGxfb2Zfc2V4cCIsIm9mX2NvZGVfMDAxIiwic2V4cF8wMDMiLCJmaWVsZF9zZXhwc18wMDQiLCJpbXBsXzAwNSIsImhpbnRfMDA3IiwiZHVwbGljYXRlc18wMDkiLCJleHRyYV8wMTAiLCJzZXhwXzAwMyQwIiwiZmllbGRfc2V4cHNfMDEzIiwiZmllbGRfbmFtZV8wMTEiLCJ0YWlsXzAxOCIsImZpZWxkX3NleHBfMDEyJDIiLCJmaWVsZF9zZXhwXzAxMiIsInhfMDE5IiwiZmllbGRfc2V4cF8wMTIkMCIsImZ2YWx1ZV8wMTUiLCJmaWVsZF9zZXhwXzAxMiQxIiwiaGludF8wMDgiLCJpbXBsXzAwNiIsInNleHBfb2Zfd3JvbmdfaW1wbCIsIm9mX2NvZGVfMDIwIiwiaGludF8wMjQiLCJpbXBsXzAyMiIsImFyZ18wMjUiLCJibmRzXzAyMSIsImJuZHNfMDIxJDAiLCJ3cm9uZ19pbXBsX29mX3lvanNvbiIsIm9mX2NvZGUiLCJpbXBsX2ZpZWxkIiwiaGludF9maWVsZCIsImhpbnRfdmFsdWUiLCJpbXBsX3ZhbHVlIiwieW9qc29uX29mX3dyb25nX2ltcGwiLCJ2X2hpbnQiLCJ2X2ltcGwiLCJwcF9oaWRkZW5fdGVzdHMiLCJzaG93X2hpZGRlbl90ZXN0cyIsImhpZGRlbl90ZXN0c19vZl9zZXhwIiwib2ZfY29kZV8wMjYiLCJmaWVsZF9zZXhwc18wMjkiLCJ0ZXN0c18wMzAiLCJoaW50c18wMzIiLCJkdXBsaWNhdGVzXzAzNCIsImV4dHJhXzAzNSIsInNleHBfMDI4JDAiLCJmaWVsZF9zZXhwc18wMzgiLCJmaWVsZF9uYW1lXzAzNiIsInRhaWxfMDQzIiwiZmllbGRfc2V4cF8wMzckMiIsImZpZWxkX3NleHBfMDM3IiwieF8wNDQiLCJmaWVsZF9zZXhwXzAzNyQwIiwiZnZhbHVlXzA0MCIsImZpZWxkX3NleHBfMDM3JDEiLCJmdmFsdWVfMDM5IiwiaGludHNfMDMzIiwidGVzdHNfMDMxIiwic2V4cF9vZl9oaWRkZW5fdGVzdHMiLCJvZl9jb2RlXzA0NSIsImhpbnRzXzA0OSIsInRlc3RzXzA0NyIsImFyZ18wNTAiLCJibmRzXzA0NiIsImFyZ18wNDgiLCJibmRzXzA0NiQwIiwiaGlkZGVuX3Rlc3RzX29mX3lvanNvbiIsInRlc3RzX2ZpZWxkIiwiaGludHNfZmllbGQiLCJoaW50c192YWx1ZSIsInRlc3RzX3ZhbHVlIiwieW9qc29uX29mX2hpZGRlbl90ZXN0cyIsInZfaGludHMiLCJ2X3Rlc3RzIiwicHBfaGludCIsInNob3dfaGludCIsImhpbnRfb2Zfc2V4cCIsInNleHBfb2ZfaGludCIsImhpbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hpbnQiLCJwcF9zeW50YXhfdGVzdCIsInNob3dfc3ludGF4X3Rlc3QiLCJhMSIsInN5bnRheF90ZXN0X29mX3NleHAiLCJzZXhwXzA1NyIsImFyZzFfMDU0IiwiYXJnMF8wNTMiLCJyZXMxXzA1NiIsInNleHBfb2Zfc3ludGF4X3Rlc3QiLCJhcmcxXzA2MCIsImFyZzBfMDU5IiwicmVzMF8wNjEiLCJyZXMxXzA2MiIsInN5bnRheF90ZXN0X29mX3lvanNvbiIsInYxIiwidjEkMCIsInlvanNvbl9vZl9zeW50YXhfdGVzdCIsInBwX3N5bnRheF90ZXN0cyIsInNob3dfc3ludGF4X3Rlc3RzIiwic3ludGF4X3Rlc3RzX29mX3NleHAiLCJ4XzA2NCIsInNleHBfb2Zfc3ludGF4X3Rlc3RzIiwieF8wNjUiLCJzeW50YXhfdGVzdHNfb2ZfeW9qc29uIiwidCIsInlvanNvbl9vZl9zeW50YXhfdGVzdHMiLCJ2IiwicHBfeW91cl90ZXN0cyIsInNob3dfeW91cl90ZXN0cyIsInlvdXJfdGVzdHNfb2Zfc2V4cCIsIm9mX2NvZGVfMDY2Iiwic2V4cF8wNjgiLCJmaWVsZF9zZXhwc18wNjkiLCJ0ZXN0c18wNzAiLCJyZXF1aXJlZF8wNzIiLCJwcm92aWRlZF8wNzQiLCJkdXBsaWNhdGVzXzA3NiIsImV4dHJhXzA3NyIsInNleHBfMDY4JDAiLCJmaWVsZF9zZXhwc18wODAiLCJmaWVsZF9uYW1lXzA3OCIsInRhaWxfMDg2IiwiZmllbGRfc2V4cF8wNzkkMyIsImZpZWxkX3NleHBfMDc5IiwieF8wODciLCJmaWVsZF9zZXhwXzA3OSQwIiwiZnZhbHVlXzA4MyIsImZpZWxkX3NleHBfMDc5JDEiLCJmdmFsdWVfMDgyIiwiZmllbGRfc2V4cF8wNzkkMiIsImZ2YWx1ZV8wODEiLCJwcm92aWRlZF8wNzUiLCJyZXF1aXJlZF8wNzMiLCJ0ZXN0c18wNzEiLCJzZXhwX29mX3lvdXJfdGVzdHMiLCJvZl9jb2RlXzA4OCIsInByb3ZpZGVkXzA5NCIsInJlcXVpcmVkXzA5MiIsInRlc3RzXzA5MCIsImFyZ18wOTUiLCJibmRzXzA4OSIsImFyZ18wOTMiLCJibmRzXzA4OSQwIiwiYXJnXzA5MSIsImJuZHNfMDg5JDEiLCJ5b3VyX3Rlc3RzX29mX3lvanNvbiIsInJlcXVpcmVkX2ZpZWxkIiwicHJvdmlkZWRfZmllbGQiLCJmdmFsdWUkMSIsInByb3ZpZGVkX3ZhbHVlIiwicmVxdWlyZWRfdmFsdWUiLCJ5b2pzb25fb2ZfeW91cl90ZXN0cyIsInZfcHJvdmlkZWQiLCJ2X3JlcXVpcmVkIiwiYXJnJDEiLCJibmRzJDEiLCJwcF9wb2ludF9kaXN0cmlidXRpb24iLCJzaG93X3BvaW50X2Rpc3RyaWJ1dGlvbiIsInBvaW50X2Rpc3RyaWJ1dGlvbl9vZl9zZXhwIiwic2V4cF8wOTciLCJmaWVsZF9zZXhwc18wOTgiLCJ0ZXN0X3ZhbGlkYXRpb25fMDk5IiwibXV0YXRpb25fdGVzdGluZ18xMDEiLCJpbXBsX2dyYWRpbmdfMTAzIiwiZHVwbGljYXRlc18xMDUiLCJleHRyYV8xMDYiLCJzZXhwXzA5NyQwIiwiZmllbGRfc2V4cHNfMTA5IiwiZmllbGRfbmFtZV8xMDciLCJ0YWlsXzExNSIsImZpZWxkX3NleHBfMTA4JDMiLCJmaWVsZF9zZXhwXzEwOCIsInhfMTE2IiwiZmllbGRfc2V4cF8xMDgkMCIsImZ2YWx1ZV8xMTIiLCJmaWVsZF9zZXhwXzEwOCQxIiwiZnZhbHVlXzExMSIsImZpZWxkX3NleHBfMTA4JDIiLCJmdmFsdWVfMTEwIiwiaW1wbF9ncmFkaW5nXzEwNCIsIm11dGF0aW9uX3Rlc3RpbmdfMTAyIiwidGVzdF92YWxpZGF0aW9uXzEwMCIsInNleHBfb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwiaW1wbF9ncmFkaW5nXzEyMiIsIm11dGF0aW9uX3Rlc3RpbmdfMTIwIiwidGVzdF92YWxpZGF0aW9uXzExOCIsImFyZ18xMjMiLCJibmRzXzExNyIsImFyZ18xMjEiLCJibmRzXzExNyQwIiwiYXJnXzExOSIsImJuZHNfMTE3JDEiLCJwb2ludF9kaXN0cmlidXRpb25fb2ZfeW9qc29uIiwidGVzdF92YWxpZGF0aW9uX2ZpZWxkIiwibXV0YXRpb25fdGVzdGluZ19maWVsZCIsImltcGxfZ3JhZGluZ19maWVsZCIsImltcGxfZ3JhZGluZ192YWx1ZSIsIm11dGF0aW9uX3Rlc3RpbmdfdmFsdWUiLCJ0ZXN0X3ZhbGlkYXRpb25fdmFsdWUiLCJ5b2pzb25fb2ZfcG9pbnRfZGlzdHJpYnV0aW9uIiwidl9pbXBsX2dyYWRpbmciLCJ2X211dGF0aW9uX3Rlc3RpbmciLCJ2X3Rlc3RfdmFsaWRhdGlvbiIsInZhbGlkYXRlX3BvaW50X2Rpc3RyaWJ1dGlvbiIsImltcGxfZ3JhZGluZyIsIm11dGF0aW9uX3Rlc3RpbmciLCJ0ZXN0X3ZhbGlkYXRpb24iLCJwcF9wIiwic2hvd19wIiwicF9vZl9zZXhwIiwib2ZfY29kZV8xMjQiLCJzZXhwXzEyNiIsImZpZWxkX3NleHBzXzEyNyIsInRpdGxlXzEyOCIsInZlcnNpb25fMTMwIiwibW9kdWxlX25hbWVfMTMyIiwicHJvbXB0XzEzNCIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xMzYiLCJwcmVsdWRlXzEzOCIsImNvcnJlY3RfaW1wbF8xNDAiLCJ5b3VyX3Rlc3RzXzE0MiIsInlvdXJfaW1wbF8xNDQiLCJoaWRkZW5fYnVnc18xNDYiLCJoaWRkZW5fdGVzdHNfMTQ4Iiwic3ludGF4X3Rlc3RzXzE1MCIsImR1cGxpY2F0ZXNfMTUyIiwiZXh0cmFfMTUzIiwiaXRlcl8xNzAiLCJzZXhwXzEyNiQwIiwiZmllbGRfc2V4cHNfMTU2IiwiZmllbGRfbmFtZV8xNTQiLCJ0YWlsXzE3MSIsImZpZWxkX3NleHBfMTU1JDEyIiwiZmllbGRfc2V4cF8xNTUiLCJ4XzE3MiIsImZpZWxkX3NleHBfMTU1JDAiLCJmdmFsdWVfMTYxIiwiZmllbGRfc2V4cF8xNTUkMSIsImZ2YWx1ZV8xNjAiLCJmaWVsZF9zZXhwXzE1NSQyIiwiZnZhbHVlXzE2NyIsImZpZWxkX3NleHBfMTU1JDMiLCJmdmFsdWVfMTY4IiwiZmllbGRfc2V4cF8xNTUkNCIsImZ2YWx1ZV8xNTciLCJmaWVsZF9zZXhwXzE1NSQ1IiwiZnZhbHVlXzE2NSIsImZpZWxkX3NleHBfMTU1JDYiLCJmdmFsdWVfMTYzIiwiZmllbGRfc2V4cF8xNTUkNyIsImZ2YWx1ZV8xNjQiLCJmaWVsZF9zZXhwXzE1NSQ4IiwiZnZhbHVlXzE2NiIsImZpZWxkX3NleHBfMTU1JDkiLCJmdmFsdWVfMTU4IiwiZmllbGRfc2V4cF8xNTUkMTAiLCJmdmFsdWVfMTU5IiwiZmllbGRfc2V4cF8xNTUkMTEiLCJmdmFsdWVfMTYyIiwic3ludGF4X3Rlc3RzXzE1MSIsImhpZGRlbl90ZXN0c18xNDkiLCJoaWRkZW5fYnVnc18xNDciLCJ5b3VyX2ltcGxfMTQ1IiwieW91cl90ZXN0c18xNDMiLCJjb3JyZWN0X2ltcGxfMTQxIiwicHJlbHVkZV8xMzkiLCJwb2ludF9kaXN0cmlidXRpb25fMTM3IiwicHJvbXB0XzEzNSIsIm1vZHVsZV9uYW1lXzEzMyIsInZlcnNpb25fMTMxIiwidGl0bGVfMTI5Iiwic2V4cF9vZl9wIiwib2ZfY29kZV8xNzMiLCJzeW50YXhfdGVzdHNfMTk3IiwiaGlkZGVuX3Rlc3RzXzE5NSIsImhpZGRlbl9idWdzXzE5MyIsInlvdXJfaW1wbF8xOTEiLCJ5b3VyX3Rlc3RzXzE4OSIsImNvcnJlY3RfaW1wbF8xODciLCJwcmVsdWRlXzE4NSIsInBvaW50X2Rpc3RyaWJ1dGlvbl8xODMiLCJwcm9tcHRfMTgxIiwibW9kdWxlX25hbWVfMTc5IiwidmVyc2lvbl8xNzciLCJ0aXRsZV8xNzUiLCJhcmdfMTk4IiwiYm5kc18xNzQiLCJhcmdfMTk2IiwiYm5kc18xNzQkMCIsImFyZ18xOTQiLCJibmRzXzE3NCQxIiwiYXJnXzE5MiIsImJuZHNfMTc0JDIiLCJhcmdfMTkwIiwiYm5kc18xNzQkMyIsImFyZ18xODgiLCJibmRzXzE3NCQ0IiwiYXJnXzE4NiIsImJuZHNfMTc0JDUiLCJhcmdfMTg0IiwiYm5kc18xNzQkNiIsImFyZ18xODIiLCJibmRzXzE3NCQ3IiwiYXJnXzE4MCIsImJuZHNfMTc0JDgiLCJhcmdfMTc4IiwiYm5kc18xNzQkOSIsImFyZ18xNzYiLCJibmRzXzE3NCQxMCIsInBfb2ZfeW9qc29uIiwidGl0bGVfZmllbGQiLCJ2ZXJzaW9uX2ZpZWxkIiwibW9kdWxlX25hbWVfZmllbGQiLCJwcm9tcHRfZmllbGQiLCJwb2ludF9kaXN0cmlidXRpb25fZmllbGQiLCJwcmVsdWRlX2ZpZWxkIiwiY29ycmVjdF9pbXBsX2ZpZWxkIiwieW91cl90ZXN0c19maWVsZCIsInlvdXJfaW1wbF9maWVsZCIsImhpZGRlbl9idWdzX2ZpZWxkIiwiaGlkZGVuX3Rlc3RzX2ZpZWxkIiwic3ludGF4X3Rlc3RzX2ZpZWxkIiwiZnZhbHVlJDIiLCJmdmFsdWUkMyIsImZ2YWx1ZSQ0IiwiZnZhbHVlJDUiLCJmdmFsdWUkNiIsImZ2YWx1ZSQ3IiwiZnZhbHVlJDgiLCJmdmFsdWUkOSIsImZ2YWx1ZSQxMCIsInN5bnRheF90ZXN0c192YWx1ZSIsImhpZGRlbl90ZXN0c192YWx1ZSIsImhpZGRlbl9idWdzX3ZhbHVlIiwieW91cl9pbXBsX3ZhbHVlIiwieW91cl90ZXN0c192YWx1ZSIsImNvcnJlY3RfaW1wbF92YWx1ZSIsInByZWx1ZGVfdmFsdWUiLCJwb2ludF9kaXN0cmlidXRpb25fdmFsdWUiLCJwcm9tcHRfdmFsdWUiLCJtb2R1bGVfbmFtZV92YWx1ZSIsInZlcnNpb25fdmFsdWUiLCJ0aXRsZV92YWx1ZSIsInlvanNvbl9vZl9wIiwidl9zeW50YXhfdGVzdHMiLCJ2X2hpZGRlbl90ZXN0cyIsInZfaGlkZGVuX2J1Z3MiLCJ2X3lvdXJfaW1wbCIsInZfeW91cl90ZXN0cyIsInZfY29ycmVjdF9pbXBsIiwidl9wcmVsdWRlIiwidl9wb2ludF9kaXN0cmlidXRpb24iLCJ2X3Byb21wdCIsInZfbW9kdWxlX25hbWUiLCJ2X3ZlcnNpb24iLCJ2X3RpdGxlIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsImFyZyQ0IiwiYm5kcyQ0IiwiYXJnJDUiLCJibmRzJDUiLCJhcmckNiIsImJuZHMkNiIsImFyZyQ3IiwiYm5kcyQ3IiwiYXJnJDgiLCJibmRzJDgiLCJhcmckOSIsImJuZHMkOSIsImFyZyQxMCIsImJuZHMkMTAiLCJwcF9rZXkiLCJzaG93X2tleSIsImtleV9vZl9zZXhwIiwic2V4cF8yMDQiLCJhcmcxXzIwMSIsImFyZzBfMjAwIiwicmVzMF8yMDIiLCJyZXMxXzIwMyIsInNleHBfb2Zfa2V5IiwiYXJnMV8yMDciLCJhcmcwXzIwNiIsInJlczBfMjA4IiwicmVzMV8yMDkiLCJrZXlfb2ZfeW9qc29uIiwieW9qc29uX29mX2tleSIsImtleV9vZiIsImZpbmRfa2V5X29wdCIsImtleSIsInNwZWNzIiwic3BlYyIsInBwX3BvcyIsInNob3dfcG9zIiwicG9zX29mX3NleHAiLCJzZXhwXzIxNCIsInRhZ18yMTUiLCJzZXhwX2FyZ3NfMjE2IiwiYXJnMF8yMTciLCJyZXMwXzIxOCIsInNleHBfb2ZfcG9zIiwiYXJnMF8yMTkiLCJyZXMwXzIyMCIsInBvc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9zIiwicHBfc3BlYyIsInNob3dfc3BlYyIsInNwZWNfb2Zfc2V4cCIsInhfMjIyIiwic2V4cF9vZl9zcGVjIiwieF8yMjMiLCJzcGVjX29mX3lvanNvbiIsInlvanNvbl9vZl9zcGVjIiwicHBfdHJhbnNpdGlvbmFyeV9zcGVjIiwic2hvd190cmFuc2l0aW9uYXJ5X3NwZWMiLCJ0cmFuc2l0aW9uYXJ5X3NwZWNfb2Zfc2V4cCIsInhfMjI1Iiwic2V4cF9vZl90cmFuc2l0aW9uYXJ5X3NwZWMiLCJ4XzIyNiIsInRyYW5zaXRpb25hcnlfc3BlY19vZl95b2pzb24iLCJ5b2pzb25fb2ZfdHJhbnNpdGlvbmFyeV9zcGVjIiwibWFwIiwiZiIsIndyb25nX2ltcGwiLCJwcF9lZHMiLCJzaG93X2VkcyIsImVkc19vZl9zZXhwIiwieF8yMjgiLCJzZXhwX29mX2VkcyIsInhfMjI5IiwiZWRzX29mX3lvanNvbiIsInlvanNvbl9vZl9lZHMiLCJwcF9zdGF0ZSIsInNob3dfc3RhdGUiLCJzdGF0ZV9vZl9zZXhwIiwic2V4cF8yMzEiLCJmaWVsZF9zZXhwc18yMzIiLCJlZHNfMjMzIiwiZHVwbGljYXRlc18yMzUiLCJleHRyYV8yMzYiLCJzZXhwXzIzMSQwIiwiZmllbGRfc2V4cHNfMjM5IiwiZmllbGRfbmFtZV8yMzciLCJ0YWlsXzI0MyIsInhfMjQ0IiwiZmllbGRfc2V4cF8yMzgiLCJmdmFsdWVfMjQwIiwiZWRzXzIzNCIsInNleHBfb2Zfc3RhdGUiLCJlZHNfMjQ2IiwiYXJnXzI0NyIsImJuZHNfMjQ1Iiwic3RhdGVfb2ZfeW9qc29uIiwiZWRzX2ZpZWxkIiwiZWRzX3ZhbHVlIiwieW9qc29uX29mX3N0YXRlIiwidl9lZHMiLCJrZXlfb2Zfc3RhdGUiLCJlZHMiLCJwcF9wZXJzaXN0ZW50X3N0YXRlIiwic2hvd19wZXJzaXN0ZW50X3N0YXRlIiwicGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwIiwieF8yNTUiLCJzZXhwXzI1MyIsImFyZzFfMjUwIiwiYXJnMF8yNDkiLCJyZXMwXzI1MSIsInJlczFfMjUyIiwic2V4cF9vZl9wZXJzaXN0ZW50X3N0YXRlIiwieF8yNjAiLCJhcmcxXzI1NyIsImFyZzBfMjU2IiwicmVzMF8yNTgiLCJyZXMxXzI1OSIsInBlcnNpc3RlbnRfc3RhdGVfb2ZfeW9qc29uIiwieW9qc29uX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJtYWluX2VkaXRvcl9vZl9zdGF0ZSIsInNlbGVjdGlvbiIsImkiLCJwdXRfbWFpbl9lZGl0b3IiLCJlZGl0b3IiLCJuIiwiZWRpdG9ycyIsImVkaXRvcl9wb3NpdGlvbnMiLCJwb3NpdGlvbmVkX2VkaXRvcnMiLCJzdGF0ZSIsImlkeF9vZl9wb3MiLCJwb3MiLCJwb3Nfb2ZfaWR4IiwiaWR4IiwiemlwcGVyX29mX2NvZGUiLCJjb2RlIiwiemlwcGVyIiwidHJhbnNpdGlvbiIsInN5bnRheF90ZXN0cyIsImhpZGRlbl90ZXN0cyIsImhpZGRlbl9idWdzIiwieW91cl9pbXBsIiwieW91cl90ZXN0cyIsImNvcnJlY3RfaW1wbCIsInByZWx1ZGUiLCJwb2ludF9kaXN0cmlidXRpb24iLCJwcm9tcHQiLCJ2ZXJzaW9uIiwidGl0bGUiLCJwcmVsdWRlJDAiLCJjb3JyZWN0X2ltcGwkMCIsInRlc3RzIiwieW91cl90ZXN0cyQwIiwieW91cl9pbXBsJDAiLCJoaW50IiwiaW1wbCIsImltcGwkMCIsImhpZGRlbl9idWdzJDAiLCJoaW50cyIsInRlc3RzJDAiLCJ0ZXN0cyQxIiwiaGlkZGVuX3Rlc3RzJDAiLCJlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiIsImVkc19vZl9zcGVjIiwic2V0X2luc3RydWN0b3JfbW9kZSIsIm5ld19tb2RlIiwidmlzaWJsZV9pbiIsImluc3RydWN0b3JfbW9kZSIsInN0YXRlX29mX3NwZWMiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlIiwiemlwcGVycyIsInVucGVyc2lzdF9zdGF0ZSIsInBvc2l0aW9uZWRfemlwcGVycyIsImxvb2t1cCIsImRlZmF1bHQkMCIsInBlcnNpc3RlZF96aXBwZXIiLCJ5b3VyX3Rlc3RzX3Rlc3RzIiwiaGlkZGVuX3Rlc3RzX3Rlc3RzIiwid3JhcF9maWx0ZXIiLCJhY3QiLCJ0ZXJtIiwid3JhcCIsInRlcm1fb2YiLCJzdGl0Y2gzIiwiZWQxIiwiZWQyIiwiZWQzIiwic3RpdGNoX3Rlcm0iLCJpbnN0cnVjdG9yIiwieW91cl9pbXBsX3Rlcm0iLCJwcmVsdWRlX3Rlcm0iLCJ1c2VyX2ltcGxfdGVybSIsInRlc3RfdmFsaWRhdGlvbl90ZXJtIiwidXNlcl90ZXN0c190ZXJtIiwiaGlkZGVuX3Rlc3RzX3Rlcm0iLCJzdGl0Y2hfdGVybSQwIiwic3RpdGNoX3N0YXRpYyIsInNldHRpbmdzIiwibWsiLCJ0ZXJtX3JhbmdlcyIsImluZm9fbWFwIiwic3RpdGNoX3N0YXRpYyQwIiwiaGlkZGVuX2J1Z3Nfa2V5Iiwia2V5X2Zvcl9zdGF0aWNzIiwic3BsaWNlZF9lbGFicyIsInVzZXJfdGVzdHMiLCJ1c2VyX2ltcGwiLCJlbGFiIiwicyIsImhpZGRlbl9idWciLCJta19zdGF0aWNzIiwic3RpdGNoZWQiLCJlbXB0eSIsInN0YXRpY3Nfb25seSIsInN0aXRjaF9keW5hbWljIiwicmVzdWx0X29mIiwicmVzdWx0cyQwIiwidGVzdF92YWxpZGF0aW9uJDAiLCJ1c2VyX2ltcGwkMCIsInVzZXJfdGVzdHMkMCIsImluc3RydWN0b3IkMCIsInN0YXRpY3NfaXRlbSIsInN0aXRjaF9keW5hbWljJDAiLCJlZGl0b3JfcHAiLCJzZXJpYWxpemF0aW9uIiwiZXhwb3J0X21vZHVsZSIsInJlY29yZCIsImRhdGEiLCJ0cmFuc2l0aW9uYXJ5X2VkaXRvcl9wcCIsImV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSIsImV4cG9ydF9ncmFkaW5nX21vZHVsZSIsImhlYWRlciIsImJsYW5rX3NwZWMiLCJyZXF1aXJlZF90ZXN0cyIsInByb3ZpZGVkX3Rlc3RzIiwibnVtX3dyb25nX2ltcGxzIiwicHBfZXhlcmNpc2VfZXhwb3J0Iiwic2hvd19leGVyY2lzZV9leHBvcnQiLCJleGVyY2lzZV9leHBvcnRfb2Zfc2V4cCIsInNleHBfMjYyIiwiZmllbGRfc2V4cHNfMjYzIiwiY3VyX2V4ZXJjaXNlXzI2NCIsImV4ZXJjaXNlX2RhdGFfMjY2IiwiZHVwbGljYXRlc18yNjgiLCJleHRyYV8yNjkiLCJzZXhwXzI2MiQwIiwiZmllbGRfc2V4cHNfMjcyIiwiZmllbGRfbmFtZV8yNzAiLCJ0YWlsXzI4MiIsImZpZWxkX3NleHBfMjcxJDIiLCJmaWVsZF9zZXhwXzI3MSIsInhfMjgzIiwiZmllbGRfc2V4cF8yNzEkMCIsInNleHBfMjc3IiwiYXJnMV8yNzQiLCJhcmcwXzI3MyIsInJlczBfMjc1IiwicmVzMV8yNzYiLCJmdmFsdWVfMjc5IiwiZmllbGRfc2V4cF8yNzEkMSIsImZ2YWx1ZV8yODAiLCJleGVyY2lzZV9kYXRhXzI2NyIsImN1cl9leGVyY2lzZV8yNjUiLCJzZXhwX29mX2V4ZXJjaXNlX2V4cG9ydCIsImV4ZXJjaXNlX2RhdGFfMjg3IiwiY3VyX2V4ZXJjaXNlXzI4NSIsImJuZHNfMjg0IiwiYXJnMV8yOTAiLCJhcmcwXzI4OSIsInJlczBfMjkxIiwicmVzMV8yOTIiLCJhcmdfMjg4IiwiYm5kc18yODQkMCIsImFyZ18yODYiLCJibmRzXzI4NCQxIiwiZXhlcmNpc2VfZXhwb3J0X29mX3lvanNvbiIsImN1cl9leGVyY2lzZV9maWVsZCIsImV4ZXJjaXNlX2RhdGFfZmllbGQiLCJleGVyY2lzZV9kYXRhX3ZhbHVlIiwiY3VyX2V4ZXJjaXNlX3ZhbHVlIiwieW9qc29uX29mX2V4ZXJjaXNlX2V4cG9ydCIsInZfZXhlcmNpc2VfZGF0YSIsInZfY3VyX2V4ZXJjaXNlIiwic2VyaWFsaXplX2V4ZXJjaXNlIiwiZXhlcmNpc2UiLCJkZXNlcmlhbGl6ZV9leGVyY2lzZSIsImRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImVycm9yX3NvdXJjZV8wMDkiLCJwcF9wZXJjZW50YWdlIiwic2hvd19wZXJjZW50YWdlIiwicGVyY2VudGFnZV9vZl9zZXhwIiwic2V4cF9vZl9wZXJjZW50YWdlIiwicGVyY2VudGFnZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcGVyY2VudGFnZSIsInBwX3BvaW50cyIsInNob3dfcG9pbnRzIiwicG9pbnRzX29mX3NleHAiLCJzZXhwX29mX3BvaW50cyIsInBvaW50c19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcG9pbnRzIiwicHBfc2NvcmUiLCJzaG93X3Njb3JlIiwic2NvcmVfb2Zfc2V4cCIsInNleHBfMDA4IiwiYXJnMV8wMDUiLCJhcmcwXzAwNCIsInJlczBfMDA2IiwicmVzMV8wMDciLCJzZXhwX29mX3Njb3JlIiwiYXJnMV8wMTEiLCJhcmcwXzAxMCIsInJlczBfMDEyIiwicmVzMV8wMTMiLCJzY29yZV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc2NvcmUiLCJzY29yZV9vZl9wZXJjZW50IiwicGVyY2VudCIsIm1heF9wb2ludHMiLCJ0ZXN0X3Jlc3VsdHMiLCJwZXJjZW50YWdlIiwicmVwb3J0IiwibnVtX3Rlc3RzIiwicmVxdWlyZWQiLCJwcm92aWRlZCIsIm51bV9wYXNzaW5nIiwidGVzdF9zdW1tYXJ5X3N0ciIsImhpZGRlbl9idWdfc3RhdHVzIiwidGVzdF92YWxpZGF0aW9uX2RhdGEiLCJoaWRkZW5fYnVnX2RhdGEiLCJoaWRkZW5fYnVnX2RhdGEkMCIsInRlc3RfdmFsaWRhdGlvbl9kYXRhJDAiLCJ2YWxpZGF0aW9uX3Rlc3RfbWFwIiwiaGlkZGVuX2J1Z190ZXN0X21hcCIsImluc3RhbmNlX3JlcG9ydHMiLCJpZCIsInN0YXR1cyIsInZhbGlkYXRpb25fdGVzdF9yZXBvcnRzIiwicmVwb3J0cyIsInN0YXR1cyQwIiwiZm91bmQiLCJtayQwIiwiaGlkZGVuX2J1Z3Nfc3RhdGUiLCJwZXJjZW50YWdlJDAiLCJudW1fcGFzc2VkIiwic3VtbWFyeV9zdHIiLCJ0b3RhbCIsIm1rJDEiLCJoIiwic3ludGF4X3Jlc3VsdHMiLCJyIiwibWskMiIsInRlc3RfcmVzdWx0cyQwIiwic3RhdHVzZXMiLCJoaW50ZWRfcmVzdWx0cyIsInBlcmNlbnRhZ2UkMSIsInN5bnRheF9yZXBvcnQiLCJ0ZXN0X3N1bW1hcnlfc3RyJDAiLCJtayQzIiwic3RpdGNoZWRfZHluYW1pY3MiLCJvdmVyYWxsX3Njb3JlIiwiaW1wbF9ncmFkaW5nX3JlcG9ydCIsIm11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0IiwidGVzdF92YWxpZGF0aW9uX3JlcG9ydCIsInR2X21heCIsInR2X3BvaW50cyIsIm10X21heCIsIm10X3BvaW50cyIsImlnX21heCIsImlnX3BvaW50cyIsInRvdGFsX3BvaW50cyIsIm91dHB1dF9oZWFkZXIiLCJERUJVRyIsIk9NRF9ERUJVRyIsImRlYnVnIiwid2FybiIsIm9wdCIsIm1zZyIsInN0aCIsIndlIiwidHJhY2tmaXgiLCJyYWlzZSIsImUiLCJvZl9saXN0IiwibCIsInIiLCJmc3BsaXRfcmV2IiwiZXhjbCIsImFjY3UiLCJsJDAiLCJ0bCIsInJpZ2h0IiwibGVmdCQwIiwidGwkMCIsImxlZnQiLCJyaWdodCQwIiwibGVmdCQyIiwidGwkMSIsImxlZnQkMSIsImZzcGxpdCIsImYiLCJyZXYiLCJpZF9vZl9zdHJpbmciLCJpZHMiLCJzIiwibiIsIm91dCIsInN0YXJ0ZWQiLCJpIiwiYyIsImkkMiIsImkkMCIsImkkMSIsInMkMCIsImkkNCIsImxhc3RfdHJhaWxpbmciLCJpJDMiLCJodG1sZW50aXRpZXMiLCJtZCIsImIiLCJqJDEiLCJqIiwiaiQwIiwiaiQ0IiwiaiQyIiwiaiQzIiwibWluaW1hbGl6ZV9ibGFua3MiLCJmJDAiLCJlYXQiLCJleHRyYWN0X2h0bWxfYXR0cmlidXRlcyIsImh0bWwiLCJodG1sJDAiLCJjdXRfb25fY2hhcl9mcm9tIiwicmVtb3ZlX3ByZWZpeF9zcGFjZXMiLCJodG1sJDIiLCJyZXMiLCJhZnRlcl9lcSIsIm5hbWUiLCJuYW1lJDAiLCJhZnRlcl9lcSQwIiwicmVzdCIsInZhbHVlIiwibmV3X3MiLCJhIiwicmVzJDAiLCJodG1sJDEiLCJleHRyYWN0X2lubmVyX2h0bWwiLCJwIiwiaHRtbF92b2lkX2VsZW1lbnRzIiwic3ltYm9sIiwibDEiLCJsMiIsInNlbGZfMSIsImxuIiwidGl0bGUiLCJ1cmwiLCJsb29zZV9jb21wYXJlIiwidDEiLCJ0MiIsInQxJDAiLCJ0MiQwIiwiZTEiLCJ0bDIkMCIsImUyJDAiLCJ0bDEkMCIsImUxJDAiLCJ0bDIiLCJlMiIsInRsMSIsInRsMiQxIiwiZTIkMSIsInRsMSQxIiwiZTEkMSIsInRsMSQyIiwiYzEiLCJ0bDIkMiIsImMyIiwiaSQ1IiwidGwxJDMiLCJ0aXRsZTEiLCJ0MSQxIiwiaHJlZjEiLCJ0bDIkMyIsInRpdGxlMiIsInQyJDEiLCJocmVmMiIsImkkNiIsImkkNyIsImkkOCIsInRsMiQ0IiwiZmFsbGJhY2syIiwieDIiLCJuYW1lMiIsInJlZl9jb250YWluZXIyIiwidGwxJDQiLCJmYWxsYmFjazEiLCJ4MSIsIm5hbWUxIiwicmVmX2NvbnRhaW5lcjEiLCJlMSQyIiwidGwyJDUiLCJlMiQyIiwidGwxJDUiLCJpJDExIiwiaSQxMiIsImkkOSIsImNmZiIsImkkMTAiLCJsMSQwIiwibDIkMCIsInRsMiQ2IiwiZTIkMyIsInRsMSQ2IiwiZTEkMyIsImkkMTMiLCJzZWxmXzIiLCJlbXB0eV9leHRlbnNpb24iLCJub3JtYWxpc2VfbWQiLCJsb29wIiwidiIsInRsJDIiLCJ2JDAiLCJ0bCQzIiwidiQxIiwidGwkNCIsInYkMiIsInRsJDUiLCJ2JDMiLCJ0bCQ2IiwidiQ0IiwidGwkNyIsInYkNSIsInRsJDEwIiwidGwkOSIsInRsJDgiLCJ0bCQxMSIsInRsJDEyIiwidiQ2IiwidGwkMTMiLCJ2JDciLCJ0bCQxNCIsInYkOCIsInRsJDE1IiwidiQ5IiwidGwkMTYiLCJ2JDEwIiwidGwkMTciLCJ2JDExIiwidGwkMTgiLCJ2JDEyIiwiaHJlZiIsInRsJDE5IiwidiQxMyIsInNlbGZfMyIsInZpc2l0IiwibCQxIiwibCQyIiwibCQzIiwibCQ0IiwibCQ1IiwibCQ2IiwibCQ3IiwibCQ4IiwibCQ5IiwibCQxMCIsImwkMTEiLCJsJDEyIiwibCQxMyIsImwkMTQiLCJsJDE1IiwibCQxNiIsImwkMTciLCJsJDE4IiwibCQxOSIsInRsJDIwIiwibCQyMCIsInRsJDIxIiwibCQyMSIsInRsJDIyIiwibCQyMiIsInRsJDIzIiwibCQyMyIsInRsJDI0IiwibCQyNCIsInRsJDI1IiwibCQyNSIsInRsJDI2IiwibCQyNiIsInRsJDI3IiwibCQyNyIsInRsJDI4IiwibCQyOCIsImRlZmF1bHRfbGFuZ3VhZ2UiLCJ0ZXh0X29mX21kIiwibWQkMCIsInQiLCJtZCQxIiwibWQkMiIsImMkMCIsImJvZHkiLCJib2R5JDAiLCJ0JDAiLCJ0JDEiLCJxIiwiYWx0IiwiaXRlbSIsImRlZmF1bHRfY29kZV9zdHlsaXN0IiwibGFuZyIsImNvZGUiLCJmaWx0ZXJfdGV4dF9vbWRfcmV2IiwicmVtb3ZlX2xpbmtzIiwiaHRtbF9hbmRfaGVhZGVyc19vZl9tZCIsInN0cmluZ19vZl9hdHRycyIsImh0bWxfb2ZfbWQiLCJoZWFkZXJzX29mX21kIiwicmVtb3ZlX2hlYWRlcl9saW5rcyIsInN0aCQwIiwib3ZlcnJpZGUiLCJzdGgkMSIsInBpbmRlbnQiLCJzdGgkMiIsIm5sMmJyIiwic3RoJDMiLCJjb2RlX3N0eWxlIiwiaWQiLCJpZHgiLCJoZWFkZXJzIiwiaW5kZW50IiwicyQxIiwiZSQwIiwiZSQxIiwicyQyIiwiaWgiLCJtZCQzIiwibWQkNCIsImUkMiIsIm1kJDUiLCJlJDMiLCJzJDMiLCJpaCQwIiwiaWQkMCIsIm1kJDYiLCJtZCQ3IiwiZSQ0IiwibWQkOCIsImUkNSIsInMkNCIsImloJDEiLCJpZCQxIiwibWQkOSIsIm1kJDEwIiwiZSQ2IiwibWQkMTEiLCJlJDciLCJzJDUiLCJpaCQyIiwiaWQkMiIsIm1kJDEyIiwibWQkMTMiLCJlJDgiLCJtZCQxNCIsImUkOSIsInMkNiIsImloJDMiLCJpZCQzIiwibWQkMTUiLCJtZCQxNiIsImUkMTAiLCJtZCQxNyIsImUkMTEiLCJzJDciLCJpaCQ0IiwiaWQkNCIsIm1kJDE4IiwicyQ4IiwicyQ5IiwicyQxMCIsIm1kJDE5IiwicyQxMSIsIm1kJDIwIiwicyQxMiIsInMkMTQiLCJuZXdfYyIsImxhbmckMCIsInMkMTUiLCJuZXdfYyQwIiwicyQxNiIsInMkMTciLCJzJDE4IiwiZmFsbGJhY2siLCJ0ZXh0IiwicmMiLCJzJDE5IiwidGl0bGUkMCIsImhyZWYkMCIsImZhbGxiYWNrJDAiLCJyYyQwIiwicyQyMCIsInRpdGxlJDEiLCJzcmMiLCJ0YWduYW1lIiwiYXR0cnMkMSIsImF0dHJzJDIiLCJzJDIyIiwiYXR0cnMiLCJhdHRycyQwIiwicyQyMSIsImF0dHJzJDMiLCJ0YWduYW1lJDAiLCJhdHRycyQ0IiwicyQyMyIsInMkMjQiLCJzJDI1IiwicyQyNiIsInMkMjciLCJzJDI4IiwicyQyOSIsInMkMzAiLCJ0aXRsZSQyIiwic3JjJDAiLCJhbHQkMCIsInMkMzEiLCJ4IiwicyQzMiIsInMkMzMiLCJzJDEzIiwibGkiLCJjcyIsInNleHByX29mX21kIiwidGwkMjkiLCJ0bCQzMCIsImVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIiwibWFya2Rvd25fb2ZfbWQiLCJhZGRfc3BhY2VzIiwicmVmZXJlbmNlcyIsImxpc3RfaW5kZW50IiwiZnN0X3BfaW5fbGkiLCJpc19pbl9saXN0IiwibG9vcCQwIiwiZnN0X3BfaW5fbGkkMCIsImlzX2luX2xpc3QkMCIsImMkMSIsImMkMiIsImZpbHRlciIsImIkMSIsImIkMiIsIngkMCIsImhkIiwiYyQzIiwiZmlsdGVyJDAiLCJiJDMiLCJiJDQiLCJoZCQwIiwibiQwIiwib3V0cHV0X2luZGVudGVkX2Jsb2NrIiwicCQwIiwicCQxIiwibmVlZHNfbmV3bGluZXMiLCJhJDAiLCJiJDAiLCJubCIsIngkMSIsInN0cmluZ19vZl90b2tlbiIsIm4kMSIsIm4kMiIsIm4kMyIsIm4kNCIsIm4kNSIsIm4kNiIsIm4kNyIsIm4kOCIsIm4kOSIsIm4kMTAiLCJuJDExIiwibiQxMiIsIm4kMTMiLCJuJDE0IiwibiQxNSIsIm4kMTYiLCJuJDE3IiwibiQxOCIsIm4kMTkiLCJuJDIwIiwibiQyMSIsIm4kMjIiLCJuJDIzIiwibiQyNCIsIm4kMjUiLCJuJDI2IiwibiQyNyIsIm4kMjgiLCJuJDI5IiwibiQzMCIsIm4kMzEiLCJuJDMyIiwibiQzMyIsIm8iLCJsZW5ndGgiLCJzcGxpdF9maXJzdCIsImxleCIsInJlc3VsdCIsIndvcmQiLCJzdGFydCIsIm5fb2NjIiwiciQwIiwicm4iLCJ3IiwiZ2V0IiwibGVuZ3RoJDAiLCJzdWIiLCJhcnIiLCJwb3MiLCJsZW4iLCJsZXhfYmlnYXJyYXkiLCJtYWtlX3NwYWNlIiwic3RyaW5nX29mX3Rva2VucyIsImRlc3RyaW5nX29mX3Rva2VucyIsInRsaXN0IiwibGltaXQiLCJ0bGlzdCQwIiwidGxpc3QkMSIsInByZXZpb3VzIiwicHJldmlvdXMkMTEiLCJwcmV2aW91cyQxMCIsInByZXZpb3VzJDEzIiwicHJldmlvdXMkMTIiLCJwcmV2aW91cyQxNSIsInByZXZpb3VzJDE0IiwicHJldmlvdXMkMTciLCJwcmV2aW91cyQxNiIsInByZXZpb3VzJDE5IiwicHJldmlvdXMkMTgiLCJwcmV2aW91cyQyMSIsInByZXZpb3VzJDIwIiwicHJldmlvdXMkMjMiLCJwcmV2aW91cyQyMiIsInByZXZpb3VzJDI1IiwicHJldmlvdXMkMjQiLCJwcmV2aW91cyQyNyIsInByZXZpb3VzJDI2IiwicHJldmlvdXMkMjkiLCJwcmV2aW91cyQyOCIsInByZXZpb3VzJDMxIiwicHJldmlvdXMkMzAiLCJwcmV2aW91cyQzMyIsInByZXZpb3VzJDMyIiwicHJldmlvdXMkMzUiLCJwcmV2aW91cyQzNCIsInByZXZpb3VzJDM3IiwicHJldmlvdXMkMzYiLCJwcmV2aW91cyQzOSIsInByZXZpb3VzJDM4IiwicHJldmlvdXMkNDEiLCJwcmV2aW91cyQ0MCIsInByZXZpb3VzJDQzIiwicHJldmlvdXMkNDIiLCJwcmV2aW91cyQ5IiwicHJldmlvdXMkNDQiLCJwcmV2aW91cyQ0OCIsInByZXZpb3VzJDQ5IiwicHJldmlvdXMkNyIsInByZXZpb3VzJDYiLCJwcmV2aW91cyQ4IiwicHJldmlvdXMkNSIsInByZXZpb3VzJDQiLCJwcmV2aW91cyQzIiwicHJldmlvdXMkMiIsInByZXZpb3VzJDAiLCJwcmV2aW91cyQxIiwicHJldmlvdXMkNDciLCJwcmV2aW91cyQ0NiIsInByZXZpb3VzJDQ1IiwiaW5kZW50cyQxIiwiaW5kZW50cyQwIiwiaW5kZW50cyQyIiwiaW5kZW50cyIsImRlZmF1bHRfbGFuZyIsImV4dGVuc2lvbnMiLCJnaF91ZW1waF9vcl9ib2xkX3N0eWxlIiwiYmxpbmRfaHRtbCIsInN0cmljdF9odG1sIiwid2Fybl9lcnJvciIsImh0bWxjb2Rlc19zZXQiLCJpbmxpbmVfaHRtbHRhZ3Nfc2V0Iiwibm90aW5ib2R5dGFncyIsImh0bWx0YWdzX3NldCIsImZpeCIsImFjY3UkMCIsInRsJDMxIiwidGwkMzIiLCJ0bCQzMyIsInRsJDM0IiwidGwkMzUiLCJ0bCQzNiIsInRsJDM3IiwidGwkMzgiLCJ0bCQzOSIsInRsJDQwIiwidGwkNDEiLCJ0bCQ0MiIsInRsJDQzIiwidGwkNDQiLCJ0bCQ0NSIsInRsJDQ2IiwidGwkNDciLCJ0bCQ0OCIsInRsJDQ5IiwidGwkNTAiLCJ0bCQ1MSIsInRsJDUyIiwidGwkNTMiLCJ0bCQ1NCIsInRsJDU1IiwidGwkNTYiLCJ0bCQ1NyIsInRsJDU4IiwidGwkNTkiLCJ0bCQ2MCIsInRsJDYxIiwidGwkNjIiLCJ0bCQ2MyIsInRsJDY0IiwidGwkNjUiLCJ0bCQ2NiIsInRsJDY3IiwidGwkNjgiLCJ0bCQ2OSIsIm4kMzQiLCJ0bCQ3MCIsInRsJDcxIiwibiQzNSIsInRsJDcyIiwidGwkNzMiLCJuJDM2IiwidGwkNzQiLCJ0bCQ3NSIsIm4kMzciLCJ0bCQ3NiIsInRsJDc3IiwibiQzOCIsInRsJDc4IiwidGwkNzkiLCJuJDM5IiwidGwkODAiLCJ0bCQ4MSIsIm4kNDAiLCJ0bCQ4MiIsInRsJDgzIiwiYiQ1IiwibiQ0MSIsInRsJDg0IiwidGwkODUiLCJiJDYiLCJuJDQyIiwidGwkODYiLCJ0bCQ4NyIsImIkNyIsIm4kNDMiLCJ0bCQ4OCIsInRsJDg5IiwiYiQ4IiwibiQ0NCIsInRsJDkwIiwidGwkOTEiLCJiJDkiLCJuJDQ1IiwidGwkOTIiLCJ0bCQ5MyIsImIkMTAiLCJuJDQ2IiwidGwkOTQiLCJ0bCQ5NSIsImIkMTEiLCJuJDQ3IiwidGwkOTYiLCJ0bCQ5NyIsImIkMTIiLCJuJDQ4IiwidGwkOTgiLCJ0bCQ5OSIsImIkMTMiLCJuJDQ5IiwidGwkMTAwIiwidGwkMTAxIiwiYiQxNCIsIm4kNTAiLCJ0bCQxMDIiLCJ0bCQxMDMiLCJiJDE1IiwibiQ1MSIsInRsJDEwNCIsInRsJDEwNSIsImIkMTYiLCJuJDUyIiwidGwkMTA2IiwidGwkMTA3IiwiYiQxNyIsIm4kNTMiLCJ0bCQxMDgiLCJ0bCQxMDkiLCJiJDE4IiwibiQ1NCIsInRsJDExMCIsInRsJDExMSIsImIkMTkiLCJuJDU1IiwidGwkMTEyIiwidGwkMTEzIiwiYiQyMCIsIm4kNTYiLCJ0bCQxMTQiLCJ0bCQxMTUiLCJiJDIxIiwibiQ1NyIsInRsJDExNiIsInRsJDExNyIsImIkMjIiLCJuJDU4IiwidGwkMTE4IiwidGwkMTE5IiwiYiQyMyIsIm4kNTkiLCJ0bCQxMjAiLCJ0bCQxMjEiLCJiJDI0IiwibiQ2MCIsInRsJDEyMiIsInRsJDEyMyIsImIkMjUiLCJuJDYxIiwidGwkMTI0IiwidGwkMTI1IiwiYiQyNiIsIm4kNjIiLCJ0bCQxMjYiLCJ0bCQxMjciLCJiJDI3IiwibiQ2MyIsInRsJDEyOCIsInRsJDEyOSIsImIkMjgiLCJuJDY0IiwidGwkMTMwIiwidGwkMTMxIiwiYiQyOSIsIm4kNjUiLCJ0bCQxMzIiLCJ0bCQxMzMiLCJiJDMwIiwibiQ2NiIsInRsJDEzNCIsInRsJDEzNSIsImIkMzEiLCJuJDY3IiwidGwkMTM2IiwidGwkMTM3IiwiYiQzMiIsIm4kNjgiLCJ0bCQxMzgiLCJ0bCQxMzkiLCJiJDMzIiwicmVtb3ZlX2luaXRpYWxfbmV3bGluZXMiLCJtYWtlX3BhcmFncmFwaHMiLCJjcCQwIiwiY3AkNSIsImFjY3UkMTciLCJiMSIsImIyIiwiY2xlYW5fcGFyYWdyYXBocyIsImFzc2VydF93ZWxsX2Zvcm1lZCIsImV4dHJhY3RfZmFsbGJhY2siLCJtYWluX2xvb3AiLCJyZW1haW5zIiwiciQxIiwiYWNjdSQyIiwiciQyIiwibSIsImFjY3UkMyIsInVuaW5kZW50X3JldiIsImxleGVtZXMiLCJjbCQwIiwieSIsInVuaW5kZW50Iiwic25kIiwiZnN0IiwiaXNfYmxhbmsiLCJzZW1waF9vcl9ib2xkIiwic21fdWVtcGhfb3JfYm9sZCIsImdoX3VlbXBoX29yX2JvbGQiLCJ1ZW1waF9vcl9ib2xkIiwiZWF0X2JsYW5rIiwic2V0ZXh0X3RpdGxlIiwiZGV0ZWN0X2JhbGFuY2VkX2JxcyIsInIkMyIsInIkNCIsInIkNSIsInIkNiIsInIkNyIsImJsIiwiYmwkMCIsInRhZ19tYXliZV9oMSIsInRhZ19tYXliZV9oMiIsInRhZ19tZCIsInNlbGZfNCIsInRhZ19zZXRleHQiLCJwbCQwIiwicmxlZnQkMCIsInJpZ2h0JDEiLCJyaWdodCQyIiwicmxlZnQiLCJocl9tIiwiaHJfcyIsImhyIiwiYmNvZGUiLCJkZWZhdWx0X2xhbmckMCIsImFjY3UkMSIsImNiIiwiY29kZSQwIiwiY29kZSQyIiwiY29kZSQzIiwiY29kZSQxIiwiY2xlYW5fYmNvZGUiLCJjb2RlJDQiLCJyZWFkX3VudGlsX2d0IiwiYnEiLCJub19ubCIsImFjY3UkMTkiLCJhY2N1JDIwIiwieCQyIiwicmVhZF91bnRpbF9sdCIsImFjY3UkMTYiLCJyZWFkX3VudGlsX2NwYXJlbnRoIiwicmVhZF91bnRpbF9vcGFyZW50aCIsInJlYWRfdW50aWxfZHEiLCJyZWFkX3VudGlsX3EiLCJyZWFkX3VudGlsX29icmFja2V0IiwicmVhZF91bnRpbF9jYnJhY2tldCIsInJlYWRfdW50aWxfc3BhY2UiLCJyZWFkX3VudGlsX25ld2xpbmUiLCJyZWFkX3RpdGxlIiwiaCIsImgkMCIsIm1heWJlX2V4dGVuc2lvbiIsIm5wIiwibnIiLCJrIiwiZW1haWxzdHlsZV9xdW90aW5nIiwiYmxvY2skMCIsImNsJDIiLCJibG9jayIsIm1heWJlX3JlZmVyZW5jZSIsIm1heWJlX2RlZiIsInJlbWFpbnMkMCIsInJlbWFpbnMkMSIsInJlbWFpbnMkMiIsInVybCQwIiwidXJsJDEiLCJibGFuayIsImZsYWciLCJyZW1haW5zJDMiLCJ0ZXh0JDAiLCJmYWxsYmFjayQxIiwibWF5YmVfbGluayIsInJlYWRfdXJsIiwicl9jcCIsImxfY3AiLCJyX2RxIiwibF9kcSIsInJlc3QkMCIsImhhc19wYXJhZ3JhcGhzIiwicGFyc2VfbGlzdCIsImVuZF9vZl9pdGVtIiwic2VsZl82Iiwic2VsZl81IiwiYmxvY2skNSIsInJlc3QkNiIsImJsb2NrJDYiLCJyZXN0JDciLCJibG9jayQ3IiwicmVzdCQ1IiwiYmxvY2skOCIsInJlc3QkOSIsImJsb2NrJDkiLCJyZXN0JDEwIiwiYmxvY2skMTAiLCJyZXN0JDgiLCJyZXN0JDEiLCJibG9jayQxIiwiYmxvY2skMiIsInJlc3QkMyIsImJsb2NrJDMiLCJyZXN0JDQiLCJibG9jayQ0IiwicmVzdCQyIiwicmV2X3RvX3QiLCJhZGQiLCJzdWJsaXN0IiwiaXRlbXMiLCJpdGVtJDAiLCJtYWtlX3VwIiwiaXRlbXMkMCIsImxpc3RfaXRlbXMiLCJpbmRlbnRzJDMiLCJpbmRlbnRzJDQiLCJuZXdfaXRlbSQwIiwicCQyIiwiaXRlbXMkNSIsIml0ZW1zJDMiLCJpdGVtcyQ0IiwibmV3X2l0ZW0kMSIsInAkMyIsIml0ZW1zJDgiLCJpdGVtcyQ2Iiwic3VibGlzdCQwIiwiaXRlbXMkNyIsIm5ld19pdGVtIiwiaXRlbXMkMSIsIml0ZW1zJDIiLCJuZXdfaXRlbSQyIiwicCQ0IiwiaXRlbXMkOSIsIml0ZW1zJDEwIiwibmV3X2l0ZW0kMyIsInAkNSIsIml0ZW1zJDExIiwic3VibGlzdCQxIiwiaXRlbXMkMTIiLCJpdGVtcyQxMyIsImluZGVudHMkNSIsIm5ld19pdGVtJDQiLCJwJDYiLCJpdGVtcyQxNCIsInN1Ymxpc3QkMiIsIml0ZW1zJDE1IiwiaXRlbXMkMTYiLCJpbmRlbnRzJDYiLCJzdHJpbmdfb2ZfaXRlbXMiLCJpbmRlbnQkMCIsInJwIiwiaWNvZGUiLCJzZWxmXzciLCJkdW1teV90YWciLCJzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUiLCJzcGFjZXNfbm90X2F0X2JlZ2lubmluZ19vZl9saW4iLCJuZXdsaW5lcyIsIm1heWJlX2F1dG9lbWFpbCIsImRvbWFpbiIsImVtYWlsIiwiaXNfaGV4IiwibWVkaWF0eXBldGV4dG9tZCIsIm1haW5faW1wbF9yZXYiLCJwcmV2aW91cyQ1MCIsInByZXZpb3VzJDUxIiwibGV4ZW1lcyQwIiwibGV4ZW1lcyQxIiwibGV4ZW1lcyQyIiwicHJldmlvdXMkNTIiLCJsZXhlbWVzJDMiLCJwcmV2aW91cyQ1MyIsImxleGVtZXMkNCIsInByZXZpb3VzJDU0IiwidyQwIiwibGV4ZW1lcyQ1IiwicHJldmlvdXMkNTUiLCJsZXhlbWVzJDYiLCJwcmV2aW91cyQ1NiIsInIkOCIsImxleGVtZXMkNyIsInByZXZpb3VzJDU3IiwiciQ5IiwidyQxIiwibGV4ZW1lcyQ4IiwiciQxMyIsInByZXZpb3VzJDU4IiwiciQxMCIsImxleGVtZXMkOSIsInByZXZpb3VzJDU5IiwiciQxMSIsImxleGVtZXMkMTAiLCJwcmV2aW91cyQ2MCIsInIkMTIiLCJsZXhlbWVzJDYxIiwiciQxMTYiLCJ0JDMiLCJsZXhlbWVzJDYyIiwicHJldmlvdXMkMTA3IiwiciQ2NSIsImxleGVtZXMkNjMiLCJwcmV2aW91cyQxMDgiLCJyJDY2IiwibGV4ZW1lcyQ2NCIsInByZXZpb3VzJDEwOSIsInIkNjciLCJsZXhlbWVzJDY1IiwicHJldmlvdXMkMTEwIiwiciQ2OCIsImxleGVtZXMkNjYiLCJwcmV2aW91cyQxMTEiLCJyJDY5IiwibGV4ZW1lcyQ2NyIsInByZXZpb3VzJDExMiIsInIkNzAiLCJsZXhlbWVzJDY4IiwicHJldmlvdXMkMTEzIiwiciQ3MSIsImxleGVtZXMkNjkiLCJwcmV2aW91cyQxMTQiLCJyJDcyIiwibGV4ZW1lcyQ3MCIsInByZXZpb3VzJDExNSIsInIkNzMiLCJsZXhlbWVzJDcxIiwicHJldmlvdXMkMTE2IiwiciQ3NCIsImxleGVtZXMkNzIiLCJwcmV2aW91cyQxMTciLCJyJDc1IiwibGV4ZW1lcyQ3MyIsInByZXZpb3VzJDExOCIsInIkNzYiLCJsZXhlbWVzJDc0IiwicHJldmlvdXMkMTE5IiwiciQ3NyIsImxleGVtZXMkNzUiLCJwcmV2aW91cyQxMjAiLCJyJDc4IiwibGV4ZW1lcyQ3NiIsInByZXZpb3VzJDEyMSIsInIkNzkiLCJsZXhlbWVzJDc3IiwicHJldmlvdXMkMTIyIiwiciQ4MCIsImxleGVtZXMkNzgiLCJwcmV2aW91cyQxMjMiLCJyJDgxIiwibGV4ZW1lcyQ3OSIsInIkODIiLCJsZXhlbWVzJDgwIiwiciQ4MyIsImxleGVtZXMkODEiLCJyJDg0IiwibGV4ZW1lcyQ4MiIsInIkODUiLCJsZXhlbWVzJDgzIiwiciQ4NiIsImxleGVtZXMkODQiLCJyJDg3IiwibGV4ZW1lcyQ4NSIsInIkODgiLCJsZXhlbWVzJDg2IiwiciQ4OSIsImxleGVtZXMkODciLCJyJDkwIiwibGV4ZW1lcyQ4OCIsInIkOTEiLCJsZXhlbWVzJDg5IiwiciQ5MiIsImxleGVtZXMkOTAiLCJyJDkzIiwibGV4ZW1lcyQ5MSIsInIkOTQiLCJsZXhlbWVzJDkyIiwiciQ5NSIsImxleGVtZXMkOTMiLCJyJDk2IiwibGV4ZW1lcyQ5NCIsInIkOTciLCJsZXhlbWVzJDk1IiwiciQ5OCIsImxleGVtZXMkOTYiLCJyJDk5IiwibGV4ZW1lcyQ5NyIsInIkMTAwIiwibGV4ZW1lcyQ5OCIsInIkMTAxIiwibGV4ZW1lcyQ5OSIsInIkMTAyIiwibGV4ZW1lcyQxMDAiLCJyJDEwMyIsImxleGVtZXMkMTAxIiwiciQxMDQiLCJsZXhlbWVzJDEwMiIsInIkMTA1IiwibGV4ZW1lcyQxMDMiLCJyJDEwNiIsImxleGVtZXMkMTA0IiwiciQxMDciLCJsZXhlbWVzJDEwNSIsInIkMTA4IiwibGV4ZW1lcyQxMDYiLCJyJDEwOSIsImxleGVtZXMkMTA3IiwiciQxMTAiLCJsZXhlbWVzJDEwOCIsInIkMTExIiwibGV4ZW1lcyQxMDkiLCJyJDExMiIsImxleGVtZXMkMTEwIiwiciQxMTMiLCJsZXhlbWVzJDExMSIsInIkMTE0IiwibGV4ZW1lcyQxMTIiLCJyJDExNSIsInIkNjQiLCJsZXhlbWVzJDExMyIsImxleGVtZXMkMTE0IiwicHJldmlvdXMkMTI0IiwiciQxMTciLCJwcmV2aW91cyQxMjUiLCJyJDExOCIsImxleGVtZXMkMTE5IiwiZyIsImxleGVtZXMkMTIzIiwiY29tbWVudHMiLCJyJDEzMiIsImxleGVtZXMkMTI0IiwicHJldmlvdXMkMTMyIiwiciQxMzMiLCJwcmV2aW91cyQxMzMiLCJyJDEzNCIsInckNSIsInckNiIsImxleGVtZXMkMTI1IiwiZyQwIiwibGV4ZW1lcyQxMjYiLCJyJDEzNiIsImxleGVtZXMkMTI3IiwiciQxMzciLCJyJDEzNSIsImxleGVtZXMkMTI4IiwiciQxMzgiLCJsZXhlbWVzJDEyOSIsImxleGVtZXMkMTMwIiwicHJldmlvdXMkMTM0IiwiciQxMzkiLCJsZXhlbWVzJDEzMSIsInByZXZpb3VzJDEzNSIsInIkMTQwIiwibGV4ZW1lcyQxMzIiLCJwcmV2aW91cyQxMzYiLCJyJDE0MSIsInByZXZpb3VzJDEzNyIsInIkMTQyIiwibGV4ZW1lcyQxMzMiLCJsZXhlbWVzJDEzNCIsIngkMyIsInByZXZpb3VzJDEzOCIsInIkMTQzIiwibWFpbl9pbXBsIiwibGV4ZW1lcyQxMzUiLCJwcmV2aW91cyQxMzkiLCJyJDE0NCIsInByZXZpb3VzJDE0MCIsInIkMTQ1IiwibGV4ZW1lcyQxMzYiLCJyJDE0NiIsImxleGVtZXMkMTM3IiwiciQxNDciLCJsZXhlbWVzJDEzOCIsInByZXZpb3VzJDE0MSIsInIkMTQ4IiwibGV4ZW1lcyQxMzkiLCJwcmV2aW91cyQxNDIiLCJyJDE0OSIsImxleGVtZXMkMTQwIiwicHJldmlvdXMkMTQzIiwiciQxNTAiLCJsZXhlbWVzJDE0MSIsInIkMTUxIiwibGV4ZW1lcyQxNDIiLCJsZXhlbWVzJDE0MyIsIngkNCIsInByZXZpb3VzJDE0NCIsInIkMTUyIiwicHJldmlvdXMkMTQ1IiwiciQxNTMiLCJsZXhlbWVzJDE0NCIsInByZXZpb3VzJDE0NiIsInIkMTU0IiwicHJldmlvdXMkMTQ3IiwiciQxNTUiLCJsZXhlbWVzJDE0NSIsInckNyIsInByZXZpb3VzJDE0OCIsInIkMTU2IiwibGV4ZW1lcyQxNDYiLCJsZXhlbWVzJDE0NyIsInByZXZpb3VzJDE0OSIsInIkMTU3IiwibGV4ZW1lcyQ1OCIsImxleGVtZXMkNTkiLCJwcmV2aW91cyQxMDQiLCJyJDYxIiwibGV4ZW1lcyQ2MCIsInByZXZpb3VzJDEwNSIsInIkNjIiLCJwcmV2aW91cyQxMDYiLCJyJDYzIiwidyQ0IiwibGV4ZW1lcyQxMjAiLCJ1cmwkMiIsImxleGVtZXMkMTIyIiwicHJldmlvdXMkMTMwIiwiciQxMzAiLCJwcmV2aW91cyQxMzEiLCJyJDEzMSIsImxleGVtZXMkMTIxIiwidXJsJDMiLCJyJDEyOCIsInIkMTI5IiwibGV4ZW1lcyQxMTUiLCJsZXhlbWVzJDExNiIsInIkMTIxIiwidGxzIiwibGV4ZW1lcyQxMTciLCJwcmV2aW91cyQxMjYiLCJyJDExOSIsInByZXZpb3VzJDEyNyIsInIkMTIwIiwibnRsJDAiLCJudGwkMSIsImFsdCQyIiwiYWx0JDEiLCJyJDEyNyIsIm50bCIsInBhdGhfdGl0bGUiLCJwYXRoIiwibm90aGluZyIsInIkMTI1IiwicGF0aCQwIiwidGl0bGUkMyIsInIkMTI0IiwiciQxMjYiLCJsZXhlbWVzJDExOCIsInByZXZpb3VzJDEyOCIsInIkMTIyIiwicHJldmlvdXMkMTI5IiwiciQxMjMiLCJzcCIsImxleGVtZXMkMzciLCJwcmV2aW91cyQ4OCIsInIkNDMiLCJsZXhlbWVzJDM4IiwicHJldmlvdXMkODkiLCJyJDQ0IiwibGV4ZW1lcyQ0NSIsInByZXZpb3VzJDk1IiwibGV4ZW1lcyQ0NyIsImxleGVtZXMkNTEiLCJyJDU2IiwibGV4ZW1lcyQ1MiIsInByZXZpb3VzJDk5IiwibGV4ZW1lcyQ0OCIsInIkNTIiLCJsZXhlbWVzJDQ5IiwicHJldmlvdXMkOTYiLCJyJDUzIiwibGV4ZW1lcyQ1MCIsInByZXZpb3VzJDk3IiwiciQ1NCIsInByZXZpb3VzJDk4IiwiciQ1NSIsImxleGVtZXMkNTMiLCJ0dGwiLCJsZXhlbWVzJDU0IiwicHJldmlvdXMkMTAwIiwiciQ1NyIsInByZXZpb3VzJDEwMSIsInIkNTgiLCJsZXhlbWVzJDU1IiwicHJldmlvdXMkMTAyIiwiciQ1OSIsImxleGVtZXMkNTYiLCJwcmV2aW91cyQxMDMiLCJsZXhlbWVzJDU3IiwiciQ2MCIsImxleGVtZXMkMzkiLCJsZXhlbWVzJDQyIiwiciQ0OCIsImxleGVtZXMkNDMiLCJwcmV2aW91cyQ5MiIsImxleGVtZXMkNDQiLCJwcmV2aW91cyQ5MyIsInIkNDkiLCJwcmV2aW91cyQ5NCIsInIkNTAiLCJsZXhlbWVzJDQwIiwiciQ0NSIsImxleGVtZXMkNDEiLCJwcmV2aW91cyQ5MCIsInIkNDYiLCJwcmV2aW91cyQ5MSIsInIkNDciLCJmb28kMSIsImxleGVtZXMkNDYiLCJmb28kMCIsImZvbyIsIm5ld19yIiwiciQ1MSIsImxleGVtZXMkMzUiLCJyJDQxIiwibGV4ZW1lcyQzNiIsInByZXZpb3VzJDg3IiwiciQ0MiIsInRrIiwibGV4ZW1lcyQzMCIsImxleGVtZXMkMzEiLCJwcmV2aW91cyQ4MSIsInIkMzUiLCJwcmV2aW91cyQ4MiIsInIkMzYiLCJsZXhlbWVzJDMyIiwibGV4ZW1lcyQzMyIsInByZXZpb3VzJDgzIiwiciQzNyIsInByZXZpb3VzJDg0IiwiciQzOCIsImxleGVtZXMkMzQiLCJwcmV2aW91cyQ4NSIsInIkMzkiLCJwcmV2aW91cyQ4NiIsInIkNDAiLCJsZXhlbWVzJDI4IiwicHJldmlvdXMkNzkiLCJyJDMzIiwidGtzIiwidGswIiwidGV4dCQxIiwibGV4ZW1lcyQyOSIsInByZXZpb3VzJDgwIiwiciQzNCIsImxleGVtZXMkMjUiLCJsZXhlbWVzJDI2IiwicHJldmlvdXMkNzYiLCJyJDMwIiwibGV4ZW1lcyQyNyIsInByZXZpb3VzJDc3IiwiciQzMSIsInByZXZpb3VzJDc4IiwiciQzMiIsImxleGVtZXMkMjAiLCJsZXhlbWVzJDIxIiwicHJldmlvdXMkNzEiLCJyJDI1IiwicHJldmlvdXMkNzIiLCJyJDI2IiwibGV4ZW1lcyQyMiIsImxleGVtZXMkMjMiLCJwcmV2aW91cyQ3MyIsInIkMjciLCJwcmV2aW91cyQ3NCIsInIkMjgiLCJsZXhlbWVzJDI0IiwicHJldmlvdXMkNzUiLCJyJDI5IiwibGV4ZW1lcyQxMSIsInckMiIsImh0bWxfc3R1ZmYiLCJ0YWduYW1ldG9wIiwibWRfb2ZfaW50ZXJtX2xpc3QiLCJzdHJpbmdfb2ZfdGFnc3RhdHVzIiwidGFnc3RhdHVzIiwibG9vcCQyIiwidG9rZW5zIiwiYm9keSQxIiwidGFnc3RhdHVzJDAiLCJ0b2tlbnMkMCIsInQkNSIsInRva2VucyQ1IiwiYm9keSQ1IiwidG9rZW5zJDE5IiwiYm9keSQ3IiwidGFnc3RhdHVzJDEiLCJ0b2tlbnMkMjAiLCJib2R5JDYiLCJ0b2tlbnMkMjEiLCJ0JDIiLCJib2R5JDgiLCJ0b2tlbnMkMjIiLCJ0b2tlbnMkMjMiLCJ0JDQiLCJ0b2tlbnMkMjQiLCJib2R5JDkiLCJ0b2tlbnMkMjUiLCJ0YWdzdGF0dXMkMiIsInRhZ25hbWUkMSIsImJvZHkkMTAiLCJib2R5JDExIiwidG9rZW5zJDI2IiwiYm9keSQxMiIsInRva2VucyQyNyIsInRva2VucyQyOCIsInRva2VucyQ2IiwidG9rZW5zJDciLCJ0b2tlbnMkOCIsInRva2VucyQxMCIsInRva2VucyQ5IiwidG9rZW5zJDExIiwiYXR0cmlidXRlbmFtZSIsInRva2VucyQxMiIsImF0dHJpYnV0ZW5hbWUkMCIsInRva2VucyQxMyIsInRva2VucyQxNCIsImF0X3ZhbCIsInRva2VucyQxNSIsInRva2VucyQxNiIsImF0X3ZhbCQwIiwidG9rZW5zJDE3IiwidG9rZW5zJDE4IiwiYXR0cnMkNSIsInRva2VucyQzIiwidG9rZW5zJDQiLCJib2R5JDQiLCJib2R5JDMiLCJ0b2tlbnMkMSIsInRva2VucyQyIiwidGFnIiwidGFnJDAiLCJib2R5JDIiLCJsZXhlbWVzJDE1IiwiciQxNyIsInByZXZpb3VzJDY0IiwiciQxOCIsImxleGVtZXMkMTYiLCJwcmV2aW91cyQ2NSIsInIkMTkiLCJwcmV2aW91cyQ2NiIsInIkMjAiLCJsZXhlbWVzJDE3IiwidyQzIiwiaHRtbF9zdHVmZiQwIiwidGFnbmFtZXRvcCQwIiwibGV4ZW1lcyQxOSIsInByZXZpb3VzJDY5IiwiciQyMyIsInByZXZpb3VzJDcwIiwiciQyNCIsImZfYSIsIm1kX29mX2ludGVybV9saXN0JDEiLCJtZF9vZl9pbnRlcm1fbGlzdCQwIiwic3RyaW5nX29mX3RhZ3N0YXR1cyQwIiwiYWRkX3Rva2VuX3RvX2JvZHkiLCJsb29wJDEiLCJ0JDYiLCJkZWxpbWl0ZXIiLCJiZWZvcmUiLCJ0YWduYW1lJDIiLCJsZXhlbWVzJDE4IiwiaCQxIiwicHJldmlvdXMkNjciLCJyJDIxIiwicHJldmlvdXMkNjgiLCJyJDIyIiwibGV4ZW1lcyQxMiIsImxleGVtZXMkMTMiLCJwcmV2aW91cyQ2MSIsInIkMTQiLCJsZXhlbWVzJDE0IiwicHJldmlvdXMkNjIiLCJyJDE1IiwicHJldmlvdXMkNjMiLCJyJDE2IiwibWFpbl9sb29wX3JldiIsIm1haW5fcGFyc2UiLCJwYXJzZSIsImRlZmF1bHRfcGFyc2UiLCJkIiwid2FybmluZyIsImxleF9mcm9tX2luY2hhbm5lbCIsImljIiwiaWNfY29udGVudCIsInRvX3N0cmluZyIsInBwIiwiYXR0cmlidXRlcyIsIm5vZGVuYW1lIiwib2ZfaW5wdXQiLCJvZl9zdHJpbmciLCJvZl9iaWdhcnJheSIsInNldF9kZWZhdWx0X2xhbmciLCJ0JDciLCJ0JDgiLCJ0JDkiLCJ0JDEwIiwidCQxMSIsInQkMTIiLCJ0JDEzIiwiZmluZF9zdGFydCQwIiwibGV2ZWwiLCJudW1iZXIiLCJzdWJzZWN0aW9ucyIsImRlYWxfd2l0aF9oZWFkZXIiLCJoX2xldmVsIiwic3Vic2VjdGlvbnMkMCIsInN1YnNlY3Rpb25zJDEiLCJmaW5kX3N0YXJ0IiwibWFrZV90b2MkMCIsIm1pbl9sZXZlbCIsIm1heF9sZXZlbCIsInRvY19lbnRyeSIsIm1ha2VfdG9jIiwic3ViX3RvYyIsInRvYyIsInN1Yl90b2MkMCIsInRvYyQwIiwiZGVwdGgiLCJoZWFkZXJzJDAiLCJlcnJvcl9zb3VyY2VfMDA5IiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAyMiIsInRwX2xvYyQwIiwiZXJyb3Jfc291cmNlXzAzNSIsInRwX2xvYyQxIiwia2V5X29mX3NleHAiLCJzZXhwX29mX2tleSIsImtleV9vZl95b2pzb24iLCJ5b2pzb25fb2Zfa2V5IiwicHBfdmFsdWUiLCJzaG93X3ZhbHVlIiwiZm10IiwieCIsInZhbHVlX29mX3NleHAiLCJzZXhwX29mX3ZhbHVlIiwidmFsdWVfb2ZfeW9qc29uIiwieW9qc29uX29mX3ZhbHVlIiwicHAiLCJzaG93Iiwic2VwIiwiYTEiLCJhMCIsInRfb2Zfc2V4cCIsInhfMDEwIiwic2V4cF8wMDgiLCJhcmcxXzAwNSIsImFyZzBfMDA0IiwicmVzMF8wMDYiLCJyZXMxXzAwNyIsInNleHBfb2ZfdCIsInhfMDE1IiwiYXJnMV8wMTIiLCJhcmcwXzAxMSIsInJlczBfMDEzIiwicmVzMV8wMTQiLCJ0X29mX3lvanNvbiIsInQiLCJ5b2pzb24iLCJ2MSIsInYwIiwidjAkMCIsInYxJDAiLCJ5b2pzb25fb2ZfdCIsInYiLCJzZXJpYWxpemUiLCJwcm9ncmFtIiwiZGVzZXJpYWxpemUiLCJzZXhwIiwicHBfdmFsdWUkMCIsInNob3dfdmFsdWUkMCIsInZhbHVlX29mX3NleHAkMCIsInhfMDIzIiwic2V4cF8wMjEiLCJhcmcxXzAxOCIsImFyZzBfMDE3IiwicmVzMF8wMTkiLCJyZXMxXzAyMCIsInNleHBfb2ZfdmFsdWUkMCIsInhfMDI4IiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJ2YWx1ZV9vZl95b2pzb24kMCIsInlvanNvbl9vZl92YWx1ZSQwIiwicHAkMCIsInNob3ckMCIsInRfb2Zfc2V4cCQwIiwieF8wMzYiLCJzZXhwXzAzNCIsImFyZzFfMDMxIiwiYXJnMF8wMzAiLCJyZXMwXzAzMiIsInJlczFfMDMzIiwic2V4cF9vZl90JDAiLCJ4XzA0MSIsImFyZzFfMDM4IiwiYXJnMF8wMzciLCJyZXMwXzAzOSIsInJlczFfMDQwIiwidF9vZl95b2pzb24kMCIsInlvanNvbl9vZl90JDAiLCJzZXJpYWxpemUkMCIsInIiLCJkZXNlcmlhbGl6ZSQwIiwid29yayIsInJlcyIsImV4biQwIiwiZXhuIiwicmVhc29uIiwicmVzdWx0Iiwic3RhdGUiLCJvbl9yZXF1ZXN0IiwicmVxIiwiayIsInN0YXJ0IiwibmFtZSIsInRpbWVvdXREdXJhdGlvbiIsImluaXRXb3JrZXIiLCJ3b3JrZXJSZWYiLCJ0aW1lb3V0SWQiLCJyZXN0YXJ0X3dvcmtlciIsInJlcXVlc3QiLCJyZXEiLCJoYW5kbGVyIiwidGltZW91dCIsInNldHVwV29ya2VyTWVzc2FnZUhhbmRsZXIiLCJldnQiLCJpZCIsIm9uVGltZW91dCIsImJ1dHRvbiIsIm9wdCIsImljb24iLCJhY3Rpb24iLCJzdGgiLCJ0b29sdGlwIiwiYnV0dG9uX25hbWVkIiwiYnV0dG9uX2QiLCJsaW5rIiwidXJsIiwidG9nZ2xlIiwibGFiZWwiLCJhY3RpdmUiLCJ0b2dnbGVfbmFtZWQiLCJmaWxlX3NlbGVjdF9idXR0b24iLCJvbl9pbnB1dCIsImZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZCIsIm1rIiwiYyIsIm1rJDAiLCJpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW0iLCJpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb24iLCJ4IiwibWskMSIsImdldCIsInQiLCJrIiwibWFwIiwic2V0IiwidiIsIm1rX3NlY29uZGFyeSIsImNvbnRlbnQiLCJta190aWxlIiwiZm9ybSIsImNoaWxkcmVuIiwiaSIsIm1rX2FuY2VzdG9yIiwibCIsIm1rX21vbm90aWxlIiwiaW50JDAiLCJuIiwiZXhwIiwicGF0IiwibWtfZnVuIiwibWtfZnVuX2FuY2VzdG9yIiwibWtfcGFyZW5zX2FuY2VzdG9yIiwibWtfbGV0X2FuY2VzdG9yIiwicGx1cyIsImxfc2libGluZyIsInJfc2libGluZyIsImFuY2VzdG9ycyIsImJhY2twYWNrIiwiemlwcGVyIiwiY29uc19leHAiLCJsaXN0X2NvbmNhdF9leHAiLCJjb25zX3BhdCIsInNlcSIsImV4cCQwIiwicGF0JDAiLCJ0eXAiLCJ0cGF0IiwidHlwX3BhdF92YXIiLCJta19wYXJlbnNfZXhwIiwibWtfcGFyZW5zX3BhdCIsIm1rX3BhcmVuc190eXAiLCJta19saXN0X2V4cCIsIm1rX2xpc3RfcGF0IiwibWtfbGlzdF90eXAiLCJta19mb3JhbGwiLCJta19yZWMiLCJhcnJvdyIsInVuYXJ5X21pbnVzIiwidW5hcnlfbm90IiwicGx1cyQwIiwibWludXMiLCJ0aW1lcyIsInBvd2VyIiwiZGl2aWRlIiwiZXF1YWxzIiwibm90X2VxdWFscyIsImx0IiwibHRlIiwiZ3QiLCJndGUiLCJmcGx1cyIsImZtaW51cyIsImZ0aW1lcyIsImZwb3dlciIsImZkaXZpZGUiLCJmZXF1YWxzIiwiZm5vdF9lcXVhbHMiLCJmbHQiLCJmbHRlIiwiZmd0IiwiZmd0ZSIsInNlcXVhbHMiLCJzY29uY2F0IiwibG9naWNhbF9hbmQiLCJsb2dpY2FsX29yIiwiY29tbWFfZXhwIiwiY29tbWFfcGF0IiwiY29tbWFfdHlwIiwicGlwZWxpbmUiLCJuaWwiLCJkZWZlcnJhbCIsInR5cGVhbm4iLCJta190eXBmdW4iLCJta19mdW4kMCIsIm1rX2FwX2V4cF90eXAiLCJta19maXgiLCJta19hcF9leHAiLCJta19hcF9wYXQiLCJta19sZXQiLCJta190eWFsaWFzIiwibWtfaWYiLCJta190ZXN0IiwibWtfY2FzZSIsIm1rX3J1bGUiLCJta19oaWRlIiwibWtfZXZhbCIsIm1rX3BhdXNlIiwibWtfZGVidWciLCJta191bnF1b3RlIiwibGluZWJyZWFrIiwic3BhY2UiLCJta19leGFtcGxlIiwic3RyIiwieiIsImFiYnJldmlhdGUiLCJlcnJvcl9zb3VyY2VfMDAzIiwidHBfbG9jIiwiZXJyb3Jfc291cmNlXzAwNyIsInRwX2xvYyQwIiwiZXJyb3Jfc291cmNlXzAxMSIsInRwX2xvYyQxIiwiZXJyb3Jfc291cmNlXzAxNSIsInRwX2xvYyQyIiwiZXJyb3Jfc291cmNlXzAxOSIsInRwX2xvYyQzIiwiZXJyb3Jfc291cmNlXzAyMyIsInRwX2xvYyQ0IiwiZXJyb3Jfc291cmNlXzA4NCIsInRwX2xvYyQ1IiwiZXJyb3Jfc291cmNlXzA5NyIsInRwX2xvYyQ2IiwiZXJyb3Jfc291cmNlXzEwMSIsInRwX2xvYyQ3IiwiZXJyb3Jfc291cmNlXzE2MyIsInRwX2xvYyQ4IiwiZXJyb3Jfc291cmNlXzE4NyIsInRwX2xvYyQ5IiwiZXJyb3Jfc291cmNlXzIzOCIsInRwX2xvYyQxMCIsImVycm9yX3NvdXJjZV8yNzIiLCJ0cF9sb2MkMTEiLCJwcF9saXN0X2V4YW1wbGVzIiwiZm10Iiwic2hvd19saXN0X2V4YW1wbGVzIiwibGlzdF9leGFtcGxlc19vZl9zZXhwIiwic2V4cF8wMDQiLCJzZXhwX29mX2xpc3RfZXhhbXBsZXMiLCJsaXN0X2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbiIsInlvanNvbl9vZl9saXN0X2V4YW1wbGVzIiwicHBfdHlwZnVuX2V4YW1wbGVzIiwic2hvd190eXBmdW5fZXhhbXBsZXMiLCJ0eXBmdW5fZXhhbXBsZXNfb2Zfc2V4cCIsInNleHBfMDA4Iiwic2V4cF9vZl90eXBmdW5fZXhhbXBsZXMiLCJ0eXBmdW5fZXhhbXBsZXNfb2ZfeW9qc29uIiwieW9qc29uX29mX3R5cGZ1bl9leGFtcGxlcyIsInBwX2Z1bl9leGFtcGxlcyIsInNob3dfZnVuX2V4YW1wbGVzIiwiZnVuX2V4YW1wbGVzX29mX3NleHAiLCJzZXhwXzAxMiIsInNleHBfb2ZfZnVuX2V4YW1wbGVzIiwiZnVuX2V4YW1wbGVzX29mX3lvanNvbiIsInlvanNvbl9vZl9mdW5fZXhhbXBsZXMiLCJwcF9sZXRfZXhhbXBsZXMiLCJzaG93X2xldF9leGFtcGxlcyIsImxldF9leGFtcGxlc19vZl9zZXhwIiwic2V4cF8wMTYiLCJzZXhwX29mX2xldF9leGFtcGxlcyIsImxldF9leGFtcGxlc19vZl95b2pzb24iLCJ5b2pzb25fb2ZfbGV0X2V4YW1wbGVzIiwicHBfbnVtZXJpY19iaW5fb3BfZXhhbXBsZXMiLCJzaG93X251bWVyaWNfYmluX29wX2V4YW1wbGVzIiwibnVtZXJpY19iaW5fb3BfZXhhbXBsZXNfb2Zfc2V4Iiwic2V4cF8wMjAiLCJzZXhwX29mX251bWVyaWNfYmluX29wX2V4YW1wbGUiLCJudW1lcmljX2Jpbl9vcF9leGFtcGxlc19vZl95b2oiLCJ5b2pzb25fb2ZfbnVtZXJpY19iaW5fb3BfZXhhbXAiLCJwcF9leGFtcGxlX2lkIiwic2hvd19leGFtcGxlX2lkIiwiYTAiLCJhMCQwIiwiYTAkMSIsImEwJDIiLCJhMCQzIiwiYTAkNCIsImV4YW1wbGVfaWRfb2Zfc2V4cCIsInNleHBfMDI1IiwidGFnXzAyNiIsInNleHBfYXJnc18wMzIiLCJhcmcwXzAzMyIsInJlczBfMDM0Iiwic2V4cF9hcmdzXzA0NyIsImFyZzBfMDQ4IiwicmVzMF8wNDkiLCJzZXhwX2FyZ3NfMDQyIiwiYXJnMF8wNDMiLCJyZXMwXzA0NCIsInNleHBfYXJnc18wMjciLCJhcmcwXzAyOCIsInJlczBfMDI5Iiwic2V4cF9hcmdzXzA1MiIsImFyZzBfMDUzIiwicmVzMF8wNTQiLCJzZXhwX2FyZ3NfMDM3IiwiYXJnMF8wMzgiLCJyZXMwXzAzOSIsInNleHBfb2ZfZXhhbXBsZV9pZCIsImFyZzBfMDU1IiwicmVzMF8wNTYiLCJhcmcwXzA1NyIsInJlczBfMDU4IiwiYXJnMF8wNTkiLCJyZXMwXzA2MCIsImFyZzBfMDYxIiwicmVzMF8wNjIiLCJhcmcwXzA2MyIsInJlczBfMDY0IiwiYXJnMF8wNjUiLCJyZXMwXzA2NiIsImV4YW1wbGVfaWRfb2ZfeW9qc29uIiwidGFnIiwieW9qc29uX2FyZ3MiLCJ2MCIsInYwJDAiLCJ5b2pzb25fYXJncyQyIiwidjAkNSIsInYwJDYiLCJ5b2pzb25fYXJncyQxIiwidjAkMyIsInYwJDQiLCJ5b2pzb25fYXJncyQwIiwidjAkMSIsInYwJDIiLCJ5b2pzb25fYXJncyQ0IiwidjAkOSIsInYwJDEwIiwieW9qc29uX2FyZ3MkMyIsInYwJDciLCJ2MCQ4IiwieW9qc29uX29mX2V4YW1wbGVfaWQiLCJwcF9leGFtcGxlIiwic2hvd19leGFtcGxlIiwiZXhhbXBsZV9vZl9zZXhwIiwic2V4cF8wNjgiLCJmaWVsZF9zZXhwc18wNjkiLCJzdWJfaWRfMDcwIiwidGVybV8wNzIiLCJtZXNzYWdlXzA3NCIsImR1cGxpY2F0ZXNfMDc2IiwiZXh0cmFfMDc3Iiwic2V4cF8wNjgkMCIsImZpZWxkX3NleHBzXzA4MCIsImZpZWxkX25hbWVfMDc4IiwidGFpbF8wODYiLCJmaWVsZF9zZXhwXzA3OSQzIiwiZmllbGRfc2V4cF8wNzkiLCJ4XzA4NyIsImZpZWxkX3NleHBfMDc5JDAiLCJmdmFsdWVfMDgyIiwiZmllbGRfc2V4cF8wNzkkMSIsImZ2YWx1ZV8wODMiLCJmaWVsZF9zZXhwXzA3OSQyIiwiZnZhbHVlXzA4MSIsIm1lc3NhZ2VfMDc1IiwidGVybV8wNzMiLCJzdWJfaWRfMDcxIiwic2V4cF9vZl9leGFtcGxlIiwibWVzc2FnZV8wOTMiLCJ0ZXJtXzA5MSIsInN1Yl9pZF8wODkiLCJhcmdfMDk0IiwiYm5kc18wODgiLCJhcmdfMDkyIiwiYm5kc18wODgkMCIsImFyZ18wOTAiLCJibmRzXzA4OCQxIiwiZXhhbXBsZV9vZl95b2pzb24iLCJmaWVsZF95b2pzb25zIiwic3ViX2lkX2ZpZWxkIiwidGVybV9maWVsZCIsIm1lc3NhZ2VfZmllbGQiLCJkdXBsaWNhdGVzIiwiZXh0cmEiLCJ0YWlsIiwiZmllbGRfeW9qc29uIiwiZmllbGRfbmFtZSIsImZ2YWx1ZSIsImZ2YWx1ZSQwIiwiZnZhbHVlJDEiLCJtZXNzYWdlX3ZhbHVlIiwidGVybV92YWx1ZSIsInN1Yl9pZF92YWx1ZSIsInlvanNvbl9vZl9leGFtcGxlIiwidl9tZXNzYWdlIiwidl90ZXJtIiwidl9zdWJfaWQiLCJhcmciLCJibmRzIiwiYXJnJDAiLCJibmRzJDAiLCJhcmckMSIsImJuZHMkMSIsInBwX3BhdF9zdWJfZm9ybV9pZCIsInNob3dfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3NleHAiLCJzZXhwXzA5OCIsInNleHBfb2ZfcGF0X3N1Yl9mb3JtX2lkIiwicGF0X3N1Yl9mb3JtX2lkX29mX3lvanNvbiIsInlvanNvbl9vZl9wYXRfc3ViX2Zvcm1faWQiLCJwcF9mb3JtX2lkIiwic2hvd19mb3JtX2lkIiwiZm9ybV9pZF9vZl9zZXhwIiwic2V4cF8xMDMiLCJ0YWdfMTA0Iiwic2V4cF9hcmdzXzEyMCIsImFyZzBfMTIxIiwicmVzMF8xMjIiLCJzZXhwX2FyZ3NfMTA1IiwiYXJnMF8xMDYiLCJyZXMwXzEwNyIsInNleHBfYXJnc18xMTAiLCJhcmcwXzExMSIsInJlczBfMTEyIiwic2V4cF9hcmdzXzExNSIsImFyZzBfMTE2IiwicmVzMF8xMTciLCJzZXhwX2FyZ3NfMTI1IiwiYXJnMF8xMjYiLCJyZXMwXzEyNyIsInNleHBfb2ZfZm9ybV9pZCIsImFyZzBfMTI4IiwicmVzMF8xMjkiLCJhcmcwXzEzMCIsInJlczBfMTMxIiwiYXJnMF8xMzIiLCJyZXMwXzEzMyIsImFyZzBfMTM0IiwicmVzMF8xMzUiLCJhcmcwXzEzNiIsInJlczBfMTM3IiwiZm9ybV9pZF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZm9ybV9pZCIsInBwX2Zvcm0iLCJzaG93X2Zvcm0iLCJ4JDAiLCJhMSIsIngkMSIsInNlcCIsImZvcm1fb2Zfc2V4cCIsInNleHBfMTM5IiwiZmllbGRfc2V4cHNfMTQwIiwiaWRfMTQxIiwic3ludGFjdGljX2Zvcm1fMTQzIiwiZXhwYW5kYWJsZV9pZF8xNDUiLCJleHBsYW5hdGlvbl8xNDciLCJleGFtcGxlc18xNDkiLCJkdXBsaWNhdGVzXzE1MSIsImV4dHJhXzE1MiIsInNleHBfMTM5JDAiLCJmaWVsZF9zZXhwc18xNTUiLCJmaWVsZF9uYW1lXzE1MyIsInRhaWxfMTY4IiwiZmllbGRfc2V4cF8xNTQkNSIsImZpZWxkX3NleHBfMTU0IiwieF8xNjkiLCJmaWVsZF9zZXhwXzE1NCQwIiwiZnZhbHVlXzE2NSIsImZpZWxkX3NleHBfMTU0JDEiLCJmdmFsdWVfMTY2IiwiZmllbGRfc2V4cF8xNTQkMiIsImZ2YWx1ZV8xNTciLCJmaWVsZF9zZXhwXzE1NCQzIiwic2V4cF8xNjIiLCJhcmcxXzE1OSIsImFyZzBfMTU4IiwicmVzMF8xNjAiLCJyZXMxXzE2MSIsImZ2YWx1ZV8xNjQiLCJmaWVsZF9zZXhwXzE1NCQ0IiwiZnZhbHVlXzE1NiIsImV4YW1wbGVzXzE1MCIsImV4cGxhbmF0aW9uXzE0OCIsImV4cGFuZGFibGVfaWRfMTQ2Iiwic3ludGFjdGljX2Zvcm1fMTQ0IiwiaWRfMTQyIiwic2V4cF9vZl9mb3JtIiwiZXhhbXBsZXNfMTgzIiwiZXhwbGFuYXRpb25fMTgxIiwiZXhwYW5kYWJsZV9pZF8xNzUiLCJzeW50YWN0aWNfZm9ybV8xNzMiLCJpZF8xNzEiLCJhcmdfMTg0IiwiYm5kc18xNzAiLCJhcmdfMTgyIiwiYm5kc18xNzAkMCIsImFyZzFfMTc4IiwiYXJnMF8xNzciLCJyZXMwXzE3OSIsInJlczFfMTgwIiwiYXJnXzE3NiIsImJuZHNfMTcwJDEiLCJhcmdfMTc0IiwiYm5kc18xNzAkMiIsImFyZ18xNzIiLCJibmRzXzE3MCQzIiwiZm9ybV9vZl95b2pzb24iLCJpZF9maWVsZCIsInN5bnRhY3RpY19mb3JtX2ZpZWxkIiwiZXhwYW5kYWJsZV9pZF9maWVsZCIsImV4cGxhbmF0aW9uX2ZpZWxkIiwiZXhhbXBsZXNfZmllbGQiLCJ2MSIsInYxJDAiLCJmdmFsdWUkMiIsImZ2YWx1ZSQzIiwiZXhhbXBsZXNfdmFsdWUiLCJleHBsYW5hdGlvbl92YWx1ZSIsImV4cGFuZGFibGVfaWRfdmFsdWUiLCJzeW50YWN0aWNfZm9ybV92YWx1ZSIsImlkX3ZhbHVlIiwieW9qc29uX29mX2Zvcm0iLCJ2X2V4YW1wbGVzIiwidl9leHBsYW5hdGlvbiIsInZfZXhwYW5kYWJsZV9pZCIsInZfc3ludGFjdGljX2Zvcm0iLCJ2X2lkIiwiYXJnJDIiLCJibmRzJDIiLCJhcmckMyIsImJuZHMkMyIsInBwX2dyb3VwX2lkIiwic2hvd19ncm91cF9pZCIsImdyb3VwX2lkX29mX3NleHAiLCJzZXhwXzE4OSIsInRhZ18xOTAiLCJzZXhwX2FyZ3NfMjA2IiwiYXJnMF8yMDciLCJyZXMwXzIwOCIsInNleHBfYXJnc18xOTEiLCJhcmcwXzE5MiIsInJlczBfMTkzIiwic2V4cF9hcmdzXzE5NiIsImFyZzBfMTk3IiwicmVzMF8xOTgiLCJzZXhwX2FyZ3NfMjAxIiwiYXJnMF8yMDIiLCJyZXMwXzIwMyIsInNleHBfYXJnc18yMTEiLCJhcmcwXzIxMiIsInJlczBfMjEzIiwic2V4cF9vZl9ncm91cF9pZCIsImFyZzBfMjE0IiwicmVzMF8yMTUiLCJhcmcwXzIxNiIsInJlczBfMjE3IiwiYXJnMF8yMTgiLCJyZXMwXzIxOSIsImFyZzBfMjIwIiwicmVzMF8yMjEiLCJhcmcwXzIyMiIsInJlczBfMjIzIiwiZ3JvdXBfaWRfb2ZfeW9qc29uIiwieW9qc29uX29mX2dyb3VwX2lkIiwicHBfZ3JvdXAiLCJzaG93X2dyb3VwIiwiZ3JvdXBfb2Zfc2V4cCIsInNleHBfMjI1IiwiZmllbGRfc2V4cHNfMjI2IiwiaWRfMjI3IiwiZm9ybXNfMjI5IiwiZHVwbGljYXRlc18yMzEiLCJleHRyYV8yMzIiLCJzZXhwXzIyNSQwIiwiZmllbGRfc2V4cHNfMjM1IiwiZmllbGRfbmFtZV8yMzMiLCJ0YWlsXzI0MCIsImZpZWxkX3NleHBfMjM0JDIiLCJmaWVsZF9zZXhwXzIzNCIsInhfMjQxIiwiZmllbGRfc2V4cF8yMzQkMCIsImZ2YWx1ZV8yMzciLCJmaWVsZF9zZXhwXzIzNCQxIiwiZnZhbHVlXzIzNiIsImZvcm1zXzIzMCIsImlkXzIyOCIsInNleHBfb2ZfZ3JvdXAiLCJmb3Jtc18yNDUiLCJpZF8yNDMiLCJhcmdfMjQ2IiwiYm5kc18yNDIiLCJhcmdfMjQ0IiwiYm5kc18yNDIkMCIsImdyb3VwX29mX3lvanNvbiIsImZvcm1zX2ZpZWxkIiwiZm9ybXNfdmFsdWUiLCJ5b2pzb25fb2ZfZ3JvdXAiLCJ2X2Zvcm1zIiwicHAiLCJzaG93IiwidF9vZl9zZXhwIiwic2V4cF8yNDgiLCJmaWVsZF9zZXhwc18yNDkiLCJncm91cF9pZF8yNTAiLCJmb3JtX2lkXzI1MiIsImFic3RyYWN0XzI1NCIsImV4cGxhbmF0aW9uXzI1NiIsImV4YW1wbGVzXzI1OCIsImR1cGxpY2F0ZXNfMjYwIiwiZXh0cmFfMjYxIiwic2V4cF8yNDgkMCIsImZpZWxkX3NleHBzXzI2NCIsImZpZWxkX25hbWVfMjYyIiwidGFpbF8yODIiLCJmaWVsZF9zZXhwXzI2MyQ1IiwiZmllbGRfc2V4cF8yNjMiLCJ4XzI4MyIsImZpZWxkX3NleHBfMjYzJDAiLCJmdmFsdWVfMjgwIiwiZmllbGRfc2V4cF8yNjMkMSIsImZ2YWx1ZV8yNzkiLCJmaWVsZF9zZXhwXzI2MyQyIiwiZnZhbHVlXzI2NiIsImZpZWxkX3NleHBfMjYzJDMiLCJmdmFsdWVfMjY1IiwiZmllbGRfc2V4cF8yNjMkNCIsImFyZzFfMjc0IiwiYXJnMF8yNzMiLCJyZXMwXzI3NSIsInNleHBfMjcxIiwiYXJnMV8yNjgiLCJhcmcwXzI2NyIsInJlczBfMjY5IiwicmVzMV8yNzAiLCJyZXMxXzI3NiIsImZ2YWx1ZV8yNzgiLCJleGFtcGxlc18yNTkiLCJleHBsYW5hdGlvbl8yNTciLCJhYnN0cmFjdF8yNTUiLCJmb3JtX2lkXzI1MyIsImdyb3VwX2lkXzI1MSIsInNleHBfb2ZfdCIsImV4YW1wbGVzXzMwMSIsImV4cGxhbmF0aW9uXzI5OSIsImFic3RyYWN0XzI4OSIsImZvcm1faWRfMjg3IiwiZ3JvdXBfaWRfMjg1IiwiYXJnXzMwMiIsImJuZHNfMjg0IiwiYXJnXzMwMCIsImJuZHNfMjg0JDAiLCJhcmcxXzI5NiIsImFyZzBfMjk1IiwicmVzMF8yOTciLCJhcmcxXzI5MiIsImFyZzBfMjkxIiwicmVzMF8yOTMiLCJyZXMxXzI5NCIsInJlczFfMjk4IiwiYXJnXzI5MCIsImJuZHNfMjg0JDEiLCJhcmdfMjg4IiwiYm5kc18yODQkMiIsImFyZ18yODYiLCJibmRzXzI4NCQzIiwidF9vZl95b2pzb24iLCJncm91cF9pZF9maWVsZCIsImZvcm1faWRfZmllbGQiLCJhYnN0cmFjdF9maWVsZCIsImFic3RyYWN0X3ZhbHVlIiwiZm9ybV9pZF92YWx1ZSIsImdyb3VwX2lkX3ZhbHVlIiwieW9qc29uX29mX3QiLCJ2X2Fic3RyYWN0Iiwidl9mb3JtX2lkIiwidl9ncm91cF9pZCIsInRvX2dyb3VwIiwiZXhhbXBsZXMiLCJleHBsYW5hdGlvbiIsImNvbG9yaW5ncyIsInN5bnRhY3RpY19mb3JtIiwiZm9ybV9pZCIsImdyb3VwX2lkIiwibWtfMSIsIm1rX2Zvcm0iLCJwIiwibWtfMiIsImlkXzIiLCJuMiIsImlkXzEiLCJuMSIsInAyIiwicDEiLCJta18zIiwiaWRfMyIsIm4zIiwicDMiLCJ2YXJfdHlwX3BhdCIsInZhcl90eXBfcGF0cyIsImNoaWxkX2NvbG9ycyIsInBwX2NvbG9yTWFwIiwic2hvd19jb2xvck1hcCIsImNvbG9yTWFwX29mX3NleHAiLCJ4XzAwMiIsInNleHBfb2ZfY29sb3JNYXAiLCJ4XzAwMyIsImNvbG9yTWFwX29mX3lvanNvbiIsInlvanNvbl9vZl9jb2xvck1hcCIsImVtcHR5IiwiZ2V0X2NvbG9yIiwiaW5kZXgiLCJtYXBwaW5nIiwiY29sb3IiLCJjb2xvciQwIiwibWFwcGluZyQwIiwidG9fbGlzdCIsImNvZGUiLCJlcXVpdiIsInByb21wdCIsImRlZmF1bHQkMCIsIm91dHB1dF9oZWFkZXIiLCJtb2R1bGVfbmFtZSIsImV4ZXJjaXNlIiwiZmlsZW5hbWUiLCJleGVyY2lzZXMiLCJlcnJvcl9zb3VyY2VfMDQ4IiwiZXJyb3Jfc291cmNlXzA3NSIsImVycm9yX3NvdXJjZV8xMTQiLCJlcnJvcl9zb3VyY2VfMTQwIiwiZXJyb3Jfc291cmNlXzE1MyIsImVycm9yX3NvdXJjZV8xNjQiLCJpbml0IiwiaW5pdCQwIiwicHBfZmVlZGJhY2tfb3B0aW9uIiwic2hvd19mZWVkYmFja19vcHRpb24iLCJmZWVkYmFja19vcHRpb25fb2Zfc2V4cCIsInNleHBfb2ZfZmVlZGJhY2tfb3B0aW9uIiwiZmVlZGJhY2tfb3B0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9mZWVkYmFja19vcHRpb24iLCJwcF9leGFtcGxlX21vZGVsIiwic2hvd19leGFtcGxlX21vZGVsIiwiZXhhbXBsZV9tb2RlbF9vZl9zZXhwIiwic2V4cF8wMDYiLCJmaWVsZF9zZXhwc18wMDciLCJzdWJfaWRfMDA4IiwiZmVlZGJhY2tfMDEwIiwiZHVwbGljYXRlc18wMTIiLCJleHRyYV8wMTMiLCJzZXhwXzAwNiQwIiwiZmllbGRfc2V4cHNfMDE2IiwiZmllbGRfbmFtZV8wMTQiLCJ0YWlsXzAyMSIsImZpZWxkX3NleHBfMDE1JDIiLCJmaWVsZF9zZXhwXzAxNSIsInhfMDIyIiwiZmllbGRfc2V4cF8wMTUkMCIsImZ2YWx1ZV8wMTgiLCJmaWVsZF9zZXhwXzAxNSQxIiwiZnZhbHVlXzAxNyIsImZlZWRiYWNrXzAxMSIsInN1Yl9pZF8wMDkiLCJzZXhwX29mX2V4YW1wbGVfbW9kZWwiLCJmZWVkYmFja18wMjYiLCJzdWJfaWRfMDI0IiwiYXJnXzAyNyIsImJuZHNfMDIzIiwiYXJnXzAyNSIsImJuZHNfMDIzJDAiLCJleGFtcGxlX21vZGVsX29mX3lvanNvbiIsImZlZWRiYWNrX2ZpZWxkIiwiZmVlZGJhY2tfdmFsdWUiLCJ5b2pzb25fb2ZfZXhhbXBsZV9tb2RlbCIsInZfZmVlZGJhY2siLCJwcF9mb3JtX21vZGVsIiwic2hvd19mb3JtX21vZGVsIiwiZm9ybV9tb2RlbF9vZl9zZXhwIiwic2V4cF8wMjkiLCJmaWVsZF9zZXhwc18wMzAiLCJncm91cF8wMzEiLCJmb3JtXzAzMyIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrXzAzNSIsImV4YW1wbGVzXzAzNyIsImR1cGxpY2F0ZXNfMDM5IiwiZXh0cmFfMDQwIiwic2V4cF8wMjkkMCIsImZpZWxkX3NleHBzXzA0MyIsImZpZWxkX25hbWVfMDQxIiwidGFpbF8wNTAiLCJmaWVsZF9zZXhwXzA0MiQ0IiwiZmllbGRfc2V4cF8wNDIiLCJ4XzA1MSIsImZpZWxkX3NleHBfMDQyJDAiLCJmdmFsdWVfMDQ3IiwiZmllbGRfc2V4cF8wNDIkMSIsImZ2YWx1ZV8wNDYiLCJmaWVsZF9zZXhwXzA0MiQyIiwiZnZhbHVlXzA0NSIsImZpZWxkX3NleHBfMDQyJDMiLCJmdmFsdWVfMDQ0IiwiZXhhbXBsZXNfMDM4IiwiZXhwbGFuYXRpb25fZmVlZGJhY2tfMDM2IiwiZm9ybV8wMzQiLCJncm91cF8wMzIiLCJzZXhwX29mX2Zvcm1fbW9kZWwiLCJleGFtcGxlc18wNTkiLCJleHBsYW5hdGlvbl9mZWVkYmFja18wNTciLCJmb3JtXzA1NSIsImdyb3VwXzA1MyIsImFyZ18wNjAiLCJibmRzXzA1MiIsImFyZ18wNTgiLCJibmRzXzA1MiQwIiwiYXJnXzA1NiIsImJuZHNfMDUyJDEiLCJhcmdfMDU0IiwiYm5kc18wNTIkMiIsImZvcm1fbW9kZWxfb2ZfeW9qc29uIiwiZ3JvdXBfZmllbGQiLCJmb3JtX2ZpZWxkIiwiZXhwbGFuYXRpb25fZmVlZGJhY2tfZmllbGQiLCJleHBsYW5hdGlvbl9mZWVkYmFja192YWx1ZSIsImZvcm1fdmFsdWUiLCJncm91cF92YWx1ZSIsInlvanNvbl9vZl9mb3JtX21vZGVsIiwidl9leHBsYW5hdGlvbl9mZWVkYmFjayIsInZfZm9ybSIsInZfZ3JvdXAiLCJwcF9ncm91cF9tb2RlbCIsInNob3dfZ3JvdXBfbW9kZWwiLCJncm91cF9tb2RlbF9vZl9zZXhwIiwic2V4cF8wNjIiLCJmaWVsZF9zZXhwc18wNjMiLCJncm91cF8wNjQiLCJzZWxlY3RlZF8wNjYiLCJkdXBsaWNhdGVzXzA2OCIsImV4dHJhXzA2OSIsInNleHBfMDYyJDAiLCJmaWVsZF9zZXhwc18wNzIiLCJmaWVsZF9uYW1lXzA3MCIsInRhaWxfMDc3IiwiZmllbGRfc2V4cF8wNzEkMiIsImZpZWxkX3NleHBfMDcxIiwieF8wNzgiLCJmaWVsZF9zZXhwXzA3MSQwIiwiZnZhbHVlXzA3MyIsImZpZWxkX3NleHBfMDcxJDEiLCJmdmFsdWVfMDc0Iiwic2VsZWN0ZWRfMDY3IiwiZ3JvdXBfMDY1Iiwic2V4cF9vZl9ncm91cF9tb2RlbCIsInNlbGVjdGVkXzA4MiIsImdyb3VwXzA4MCIsImFyZ18wODMiLCJibmRzXzA3OSIsImFyZ18wODEiLCJibmRzXzA3OSQwIiwiZ3JvdXBfbW9kZWxfb2ZfeW9qc29uIiwic2VsZWN0ZWRfZmllbGQiLCJzZWxlY3RlZF92YWx1ZSIsInlvanNvbl9vZl9ncm91cF9tb2RlbCIsInZfc2VsZWN0ZWQiLCJzZXhwXzA4NSIsImZpZWxkX3NleHBzXzA4NiIsInNwZWNpZmljaXR5X29wZW5fMDg3IiwiZm9ybXNfMDg5IiwiZ3JvdXBzXzA5MSIsImR1cGxpY2F0ZXNfMDkzIiwiZXh0cmFfMDk0Iiwic2V4cF8wODUkMCIsImZpZWxkX3NleHBzXzA5NyIsImZpZWxkX25hbWVfMDk1IiwidGFpbF8xMDMiLCJmaWVsZF9zZXhwXzA5NiQzIiwiZmllbGRfc2V4cF8wOTYiLCJ4XzEwNCIsImZpZWxkX3NleHBfMDk2JDAiLCJmdmFsdWVfMTAwIiwiZmllbGRfc2V4cF8wOTYkMSIsImZ2YWx1ZV8wOTgiLCJmaWVsZF9zZXhwXzA5NiQyIiwiZnZhbHVlXzA5OSIsImdyb3Vwc18wOTIiLCJmb3Jtc18wOTAiLCJzcGVjaWZpY2l0eV9vcGVuXzA4OCIsImdyb3Vwc18xMTAiLCJmb3Jtc18xMDgiLCJzcGVjaWZpY2l0eV9vcGVuXzEwNiIsImFyZ18xMTEiLCJibmRzXzEwNSIsImFyZ18xMDkiLCJibmRzXzEwNSQwIiwiYXJnXzEwNyIsImJuZHNfMTA1JDEiLCJzcGVjaWZpY2l0eV9vcGVuX2ZpZWxkIiwiZ3JvdXBzX2ZpZWxkIiwiZ3JvdXBzX3ZhbHVlIiwic3BlY2lmaWNpdHlfb3Blbl92YWx1ZSIsInZfZ3JvdXBzIiwidl9zcGVjaWZpY2l0eV9vcGVuIiwicHBfaGlnaGxpZ2h0Iiwic2hvd19oaWdobGlnaHQiLCJoaWdobGlnaHRfb2Zfc2V4cCIsInNleHBfMTE2IiwidGFnXzExNyIsInNleHBfYXJnc18xMTgiLCJhcmcwXzExOSIsInJlczBfMTIwIiwic2V4cF9vZl9oaWdobGlnaHQiLCJoaWdobGlnaHRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hpZ2hsaWdodCIsInBwJDAiLCJzaG93JDAiLCJ0X29mX3NleHAkMCIsInNleHBfMTI0IiwiZmllbGRfc2V4cHNfMTI1Iiwic2hvd18xMjYiLCJzaG93X2ZlZWRiYWNrXzEyOCIsImhpZ2hsaWdodF8xMzAiLCJkdXBsaWNhdGVzXzEzMiIsImV4dHJhXzEzMyIsInNleHBfMTI0JDAiLCJmaWVsZF9zZXhwc18xMzYiLCJmaWVsZF9uYW1lXzEzNCIsInRhaWxfMTQyIiwiZmllbGRfc2V4cF8xMzUkMyIsImZpZWxkX3NleHBfMTM1IiwieF8xNDMiLCJmaWVsZF9zZXhwXzEzNSQwIiwiZnZhbHVlXzEzOCIsImZpZWxkX3NleHBfMTM1JDEiLCJmdmFsdWVfMTM5IiwiZmllbGRfc2V4cF8xMzUkMiIsImZ2YWx1ZV8xMzciLCJoaWdobGlnaHRfMTMxIiwic2hvd19mZWVkYmFja18xMjkiLCJzaG93XzEyNyIsInNleHBfb2ZfdCQwIiwiaGlnaGxpZ2h0XzE0OSIsInNob3dfZmVlZGJhY2tfMTQ3Iiwic2hvd18xNDUiLCJhcmdfMTUwIiwiYm5kc18xNDQiLCJhcmdfMTQ4IiwiYm5kc18xNDQkMCIsImFyZ18xNDYiLCJibmRzXzE0NCQxIiwidF9vZl95b2pzb24kMCIsInNob3dfZmllbGQiLCJzaG93X2ZlZWRiYWNrX2ZpZWxkIiwiaGlnaGxpZ2h0X2ZpZWxkIiwiaGlnaGxpZ2h0X3ZhbHVlIiwic2hvd19mZWVkYmFja192YWx1ZSIsInNob3dfdmFsdWUiLCJ5b2pzb25fb2ZfdCQwIiwidl9oaWdobGlnaHQiLCJ2X3Nob3dfZmVlZGJhY2siLCJ2X3Nob3ciLCJwcF9oaWdobGlnaHRfYWN0aW9uIiwic2hvd19oaWdobGlnaHRfYWN0aW9uIiwiaGlnaGxpZ2h0X2FjdGlvbl9vZl9zZXhwIiwic2V4cF8xNTUiLCJ0YWdfMTU2Iiwic2V4cF9hcmdzXzE1NyIsInJlczBfMTU5Iiwic2V4cF9vZl9oaWdobGlnaHRfYWN0aW9uIiwiYXJnMF8xNjAiLCJyZXMwXzE2MSIsImhpZ2hsaWdodF9hY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2hpZ2hsaWdodF9hY3Rpb24iLCJwcF9hY3Rpb24iLCJzaG93X2FjdGlvbiIsImFjdGlvbl9vZl9zZXhwIiwic2V4cF8xNjYiLCJ0YWdfMTY3Iiwic2V4cF9hcmdzXzE2OCIsImFyZzBfMTY5IiwicmVzMF8xNzAiLCJzZXhwX29mX2FjdGlvbiIsImFyZzBfMTcxIiwicmVzMF8xNzIiLCJhY3Rpb25fb2ZfeW9qc29uIiwieW9qc29uX29mX2FjdGlvbiIsImdldF9leHBsYW5hdGlvbl9mZWVkYmFjayIsIm1vZGVsIiwiZm9ybXMiLCJnZXRfZXhhbXBsZV9mZWVkYmFjayIsImV4YW1wbGVfaWQiLCJleGFtcGxlIiwiZ2V0X2Zvcm1faW5fZ3JvdXAiLCJncm91cCIsImdldF9zZWxlY3RlZF9vcHRpb24iLCJncm91cCQwIiwic2VsZWN0ZWQiLCJzZWxlY3RlZCQwIiwiZ2V0X29wdGlvbnMiLCJnZXRfZm9ybV9hbmRfb3B0aW9ucyIsImVycm9yX3NvdXJjZV8wNDAiLCJlcnJvcl9zb3VyY2VfMDY1IiwiZXJyb3Jfc291cmNlXzA2OSIsInBwX21vZGUiLCJzaG93X21vZGUiLCJtb2RlX29mX3NleHAiLCJzZXhwX29mX21vZGUiLCJtb2RlX29mX3lvanNvbiIsInlvanNvbl9vZl9tb2RlIiwibW9kZV9vZl9zdHJpbmciLCJzIiwiY2FwdGlvbnNfMDA4Iiwic2Vjb25kYXJ5X2ljb25zXzAxMCIsImNvcmVfMDEyIiwiYXN5bmNfZXZhbHVhdGlvbl8wMTQiLCJjb250ZXh0X2luc3BlY3Rvcl8wMTYiLCJpbnN0cnVjdG9yX21vZGVfMDE4IiwiYmVuY2htYXJrXzAyMCIsImV4cGxhaW5UaGlzXzAyMiIsIm1vZGVfMDI0IiwiZHVwbGljYXRlc18wMjYiLCJleHRyYV8wMjciLCJmaWVsZF9uYW1lXzAyOCIsInRhaWxfMDQyIiwiZmllbGRfc2V4cF8wMjkkOSIsImZpZWxkX3NleHBfMDI5IiwieF8wNDMiLCJmaWVsZF9zZXhwXzAyOSQwIiwiZnZhbHVlXzAzOCIsImZpZWxkX3NleHBfMDI5JDEiLCJmdmFsdWVfMDMxIiwiZmllbGRfc2V4cF8wMjkkMiIsImZ2YWx1ZV8wMzQiLCJmaWVsZF9zZXhwXzAyOSQzIiwiZnZhbHVlXzAzMiIsImZpZWxkX3NleHBfMDI5JDQiLCJmdmFsdWVfMDM3IiwiZmllbGRfc2V4cF8wMjkkNSIsImZ2YWx1ZV8wMzUiLCJmaWVsZF9zZXhwXzAyOSQ2IiwiZnZhbHVlXzAzOSIsImZpZWxkX3NleHBfMDI5JDciLCJmdmFsdWVfMDMzIiwiZmllbGRfc2V4cF8wMjkkOCIsImZ2YWx1ZV8wMzYiLCJtb2RlXzAyNSIsImV4cGxhaW5UaGlzXzAyMyIsImJlbmNobWFya18wMjEiLCJpbnN0cnVjdG9yX21vZGVfMDE5IiwiY29udGV4dF9pbnNwZWN0b3JfMDE3IiwiYXN5bmNfZXZhbHVhdGlvbl8wMTUiLCJjb3JlXzAxMyIsInNlY29uZGFyeV9pY29uc18wMTEiLCJjYXB0aW9uc18wMDkiLCJtb2RlXzA2MSIsImV4cGxhaW5UaGlzXzA1OSIsImJlbmNobWFya18wNTciLCJpbnN0cnVjdG9yX21vZGVfMDU1IiwiY29udGV4dF9pbnNwZWN0b3JfMDUzIiwiYXN5bmNfZXZhbHVhdGlvbl8wNTEiLCJjb3JlXzA0OSIsInNlY29uZGFyeV9pY29uc18wNDciLCJjYXB0aW9uc18wNDUiLCJhcmdfMDYyIiwiYm5kc18wNDQiLCJibmRzXzA0NCQwIiwiYm5kc18wNDQkMSIsImJuZHNfMDQ0JDIiLCJibmRzXzA0NCQzIiwiYXJnXzA1MiIsImJuZHNfMDQ0JDQiLCJhcmdfMDUwIiwiYm5kc18wNDQkNSIsImFyZ18wNDgiLCJibmRzXzA0NCQ2IiwiYXJnXzA0NiIsImJuZHNfMDQ0JDciLCJjYXB0aW9uc19maWVsZCIsInNlY29uZGFyeV9pY29uc19maWVsZCIsImNvcmVfZmllbGQiLCJhc3luY19ldmFsdWF0aW9uX2ZpZWxkIiwiY29udGV4dF9pbnNwZWN0b3JfZmllbGQiLCJpbnN0cnVjdG9yX21vZGVfZmllbGQiLCJiZW5jaG1hcmtfZmllbGQiLCJleHBsYWluVGhpc19maWVsZCIsIm1vZGVfZmllbGQiLCJmdmFsdWUkNCIsImZ2YWx1ZSQ1IiwiZnZhbHVlJDYiLCJmdmFsdWUkNyIsIm1vZGVfdmFsdWUiLCJleHBsYWluVGhpc192YWx1ZSIsImJlbmNobWFya192YWx1ZSIsImluc3RydWN0b3JfbW9kZV92YWx1ZSIsImNvbnRleHRfaW5zcGVjdG9yX3ZhbHVlIiwiYXN5bmNfZXZhbHVhdGlvbl92YWx1ZSIsImNvcmVfdmFsdWUiLCJzZWNvbmRhcnlfaWNvbnNfdmFsdWUiLCJjYXB0aW9uc192YWx1ZSIsInZfbW9kZSIsInZfZXhwbGFpblRoaXMiLCJ2X2JlbmNobWFyayIsInZfaW5zdHJ1Y3Rvcl9tb2RlIiwidl9jb250ZXh0X2luc3BlY3RvciIsInZfYXN5bmNfZXZhbHVhdGlvbiIsInZfY29yZSIsInZfc2Vjb25kYXJ5X2ljb25zIiwidl9jYXB0aW9ucyIsImFyZyQ0IiwiYm5kcyQ0IiwiYXJnJDUiLCJibmRzJDUiLCJhcmckNiIsImJuZHMkNiIsImFyZyQ3IiwiYm5kcyQ3IiwiZml4X2luc3RydWN0b3JfbW9kZSIsInNldHRpbmdzIiwicHBfZXZhbHVhdGlvbiIsInNob3dfZXZhbHVhdGlvbiIsImV2YWx1YXRpb25fb2Zfc2V4cCIsInNleHBfMDY2Iiwic2V4cF9vZl9ldmFsdWF0aW9uIiwiZXZhbHVhdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZXZhbHVhdGlvbiIsInNleHBfMDcxIiwidGFnXzA3MiIsInNleHBfYXJnc18wNzMiLCJhcmcwXzA3NCIsInJlczBfMDc1Iiwic2V4cF9hcmdzXzA3OCIsImFyZzBfMDc5IiwicmVzMF8wODAiLCJzZXhwX2FyZ3NfMDgzIiwiYXJnMF8wODQiLCJyZXMwXzA4NSIsImFyZzBfMDg2IiwicmVzMF8wODciLCJhcmcwXzA4OCIsInJlczBfMDg5IiwiYXJnMF8wOTAiLCJyZXMwXzA5MSIsInVwZGF0ZSIsInUiLCJldmFsdWF0aW9uIiwiZXZhbHVhdGlvbiQwIiwiYSIsImhpZ2hsaWdodCIsImV4cGxhaW5UaGlzIiwibW9kZSIsInBwJDEiLCJzaG93JDEiLCJ0X29mX3NleHAkMSIsInNleHBfb2ZfdCQxIiwidF9vZl95b2pzb24kMSIsInlvanNvbl9vZl90JDEiLCJwcF9zdGF0ZSIsInNob3dfc3RhdGUiLCJzdGF0ZV9vZl9zZXhwIiwic2V4cF9vZl9zdGF0ZSIsInN0YXRlX29mX3lvanNvbiIsInlvanNvbl9vZl9zdGF0ZSIsInBwX3BlcnNpc3RlbnRfc3RhdGUiLCJzaG93X3BlcnNpc3RlbnRfc3RhdGUiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3NleHAiLCJzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUiLCJwZXJzaXN0ZW50X3N0YXRlX29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50X3N0YXRlIiwic2NyYXRjaF9rZXkiLCJwZXJzaXN0IiwiZWRpdG9yIiwidW5wZXJzaXN0IiwiemlwcGVyJDAiLCJzZXJpYWxpemUiLCJzdGF0ZSIsImRlc2VyaWFsaXplIiwiZGF0YSIsImRlc2VyaWFsaXplX29wdCIsInNleHAiLCJleHBvcnQkMCIsImltcG9ydCQwIiwiZXhwb3J0X2luaXQiLCJta19zdGF0aWNzIiwiY3R4X2luaXQiLCJ0ZXJtIiwiaW5mb19tYXAiLCJlcnJvcl9pZHMiLCJlcnJvcl9zb3VyY2VfMDMxIiwicHBfc2NyYXRjaCIsInNob3dfc2NyYXRjaCIsImEyIiwic2NyYXRjaF9vZl9zZXhwIiwic2V4cF8wMTQiLCJhcmcyXzAxMCIsImFyZzFfMDA5IiwiYXJnMF8wMDgiLCJyZXMwXzAxMSIsInJlczFfMDEyIiwiYXJnMV8wMDMiLCJhcmcwXzAwMiIsInJlczBfMDA0IiwicmVzMV8wMDUiLCJyZXMyXzAxMyIsInNleHBfb2Zfc2NyYXRjaCIsImFyZzJfMDIxIiwiYXJnMV8wMjAiLCJhcmcwXzAxOSIsInJlczBfMDIyIiwicmVzMV8wMjMiLCJhcmcxXzAxNiIsImFyZzBfMDE1IiwicmVzMF8wMTciLCJyZXMxXzAxOCIsInJlczJfMDI0Iiwic2NyYXRjaF9vZl95b2pzb24iLCJ2MiIsInYyJDAiLCJ5b2pzb25fb2Zfc2NyYXRjaCIsInBwX2RvY3VtZW50YXRpb24iLCJzaG93X2RvY3VtZW50YXRpb24iLCJkb2N1bWVudGF0aW9uX29mX3NleHAiLCJzZXhwXzA0MyIsImFyZzJfMDM5IiwiYXJnMV8wMzgiLCJhcmcwXzAzNyIsInJlczBfMDQwIiwic2V4cF8wMzAiLCJhcmcxXzAyNyIsImFyZzBfMDI2IiwicmVzMF8wMjgiLCJyZXMxXzAyOSIsInJlczFfMDQxIiwic2V4cF8wMzYiLCJhcmcxXzAzMyIsImFyZzBfMDMyIiwicmVzMV8wMzUiLCJyZXMyXzA0MiIsInNleHBfb2ZfZG9jdW1lbnRhdGlvbiIsImFyZzJfMDU0IiwiYXJnMV8wNTMiLCJhcmcwXzA1MiIsInJlczBfMDU1IiwiYXJnMV8wNDUiLCJhcmcwXzA0NCIsInJlczBfMDQ2IiwicmVzMV8wNDciLCJyZXMxXzA1NiIsImFyZzFfMDQ5IiwicmVzMF8wNTAiLCJyZXMxXzA1MSIsInJlczJfMDU3IiwiZG9jdW1lbnRhdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZG9jdW1lbnRhdGlvbiIsInNleHBfMDU5IiwiZmllbGRfc2V4cHNfMDYwIiwic2V0dGluZ3NfMDYxIiwic2NyYXRjaF8wNjMiLCJkb2N1bWVudGF0aW9uXzA2NSIsImR1cGxpY2F0ZXNfMDY3IiwiZXh0cmFfMDY4Iiwic2V4cF8wNTkkMCIsImZpZWxkX3NleHBzXzA3MSIsImZpZWxkX25hbWVfMDY5IiwiZmllbGRfc2V4cF8wNzAkMyIsImZpZWxkX3NleHBfMDcwIiwiZmllbGRfc2V4cF8wNzAkMCIsImZpZWxkX3NleHBfMDcwJDEiLCJmaWVsZF9zZXhwXzA3MCQyIiwiZnZhbHVlXzA3MiIsImRvY3VtZW50YXRpb25fMDY2Iiwic2NyYXRjaF8wNjQiLCJzZXR0aW5nc18wNjIiLCJkb2N1bWVudGF0aW9uXzA4NCIsInNjcmF0Y2hfMDgyIiwic2V0dGluZ3NfMDgwIiwiYXJnXzA4NSIsImJuZHNfMDc5JDEiLCJzZXR0aW5nc19maWVsZCIsInNjcmF0Y2hfZmllbGQiLCJkb2N1bWVudGF0aW9uX2ZpZWxkIiwiZG9jdW1lbnRhdGlvbl92YWx1ZSIsInNjcmF0Y2hfdmFsdWUiLCJzZXR0aW5nc192YWx1ZSIsInZfZG9jdW1lbnRhdGlvbiIsInZfc2NyYXRjaCIsInZfc2V0dGluZ3MiLCJlcnJvcl9zb3VyY2VfMDE0IiwiZXJyb3Jfc291cmNlXzAzNiIsImVycm9yX3NvdXJjZV8wNTQiLCJlcnJvcl9zb3VyY2VfMDgzIiwicHBfY2VsbCIsInNob3dfY2VsbCIsImNlbGxfb2Zfc2V4cCIsInNleHBfMDA1IiwidGFnXzAwNiIsInNleHBfYXJnc18wMDciLCJyZXMwXzAwOSIsInNleHBfb2ZfY2VsbCIsImFyZzBfMDEwIiwiY2VsbF9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY2VsbCIsInRhZ18wMTciLCJzZXhwX2FyZ3NfMDE4IiwicmVzMF8wMjAiLCJzZXhwX2FyZ3NfMDIzIiwiYXJnMV8wMjUiLCJhcmcwXzAyNCIsInJlczBfMDI2IiwicmVzMV8wMjciLCJhcmcxXzAzMSIsImFyZzBfMDMwIiwicmVzMF8wMzIiLCJyZXMxXzAzMyIsInBwX2NlbGwkMCIsInNob3dfY2VsbCQwIiwiY2VsbF9vZl9zZXhwJDAiLCJzZXhwXzAzOCIsInRhZ18wMzkiLCJzZXhwX2FyZ3NfMDQ1IiwiYXJnMF8wNDYiLCJyZXMwXzA0NyIsInNleHBfYXJnc18wNDAiLCJhcmcwXzA0MSIsInJlczBfMDQyIiwic2V4cF9vZl9jZWxsJDAiLCJhcmcwXzA1MCIsInJlczBfMDUxIiwiY2VsbF9vZl95b2pzb24kMCIsInlvanNvbl9vZl9jZWxsJDAiLCJzZXhwXzA1NiIsInRhZ18wNTciLCJzZXhwX2FyZ3NfMDU4Iiwic2V4cF9hcmdzXzA2OCIsImFyZzFfMDcwIiwiYXJnMF8wNjkiLCJyZXMwXzA3MSIsInJlczFfMDcyIiwic2V4cF9hcmdzXzA2MyIsImFyZzBfMDY0IiwicmVzMF8wNjUiLCJhcmcwXzA3MyIsInJlczBfMDc0IiwiYXJnMF8wNzUiLCJyZXMwXzA3NiIsImFyZzFfMDc4IiwiYXJnMF8wNzciLCJyZXMwXzA3OSIsInJlczFfMDgwIiwiYTEkMCIsImExJDEiLCJ0YWdfMDg2Iiwic2V4cF9hcmdzXzA4NyIsImFyZzFfMDg5IiwicmVzMF8wOTAiLCJyZXMxXzA5MSIsInNleHBfYXJnc18xMDYiLCJhcmcyXzEwOSIsImFyZzFfMTA4IiwiYXJnMF8xMDciLCJyZXMwXzExMCIsInJlczFfMTExIiwicmVzMl8xMTIiLCJzZXhwX2FyZ3NfMDk0IiwiYXJnMV8xMDEiLCJhcmcwXzEwMCIsInJlczBfMTAyIiwic2V4cF8wOTkiLCJhcmcxXzA5NiIsImFyZzBfMDk1IiwicmVzMF8wOTciLCJyZXMxXzA5OCIsInJlczFfMTAzIiwiYXJnMV8xMTQiLCJhcmcwXzExMyIsInJlczBfMTE1IiwicmVzMV8xMTYiLCJhcmcxXzEyMiIsInJlczBfMTIzIiwiYXJnMV8xMTgiLCJhcmcwXzExNyIsInJlczBfMTE5IiwicmVzMV8xMjAiLCJyZXMxXzEyNCIsImFyZzJfMTI3IiwiYXJnMV8xMjYiLCJhcmcwXzEyNSIsInJlczBfMTI4IiwicmVzMV8xMjkiLCJyZXMyXzEzMCIsInYxJDMiLCJ2MSQ0IiwidjEkMSIsInYxJDIiLCJ1cGRhdGVfc2NyYXRjaF9zdGF0ZSIsImYiLCJlZGl0b3JzIiwic2xpZGVzIiwic2xpZGVzJDAiLCJnZXRfY3R4X2luaXQiLCJnZXRfZW52X2luaXQiLCJpZHgiLCJrZXkiLCJrZXkkMCIsImVkaXRvciQwIiwibG9va3VwX3N0YXRpY3MiLCJzZWxlY3Rpb24iLCJzdGF0aWNzIiwicG9zIiwia2V5JDEiLCJnZXRfc3BsaWNlZF9lbGFicyIsImQiLCJpbmZvX21hcCQwIiwidGVybSQwIiwiZCQwIiwic2V0X2luc3RydWN0b3JfbW9kZSIsImluc3RydWN0b3JfbW9kZSIsInNwZWNzIiwicmVzZXRfbnRoX3NsaWRlIiwiaW5pdF9lZGl0b3JzIiwiaW5pdF9udGgiLCJyZXNldF9uYW1lZF9zbGlkZSIsImluaXRfbmFtZSIsInJlc2V0X2N1cnJlbnQiLCJuJDAiLCJpbXBvcnRfY3VycmVudCIsImRhdGEkMCIsInN3aXRjaF9leGFtcGxlX3NsaWRlIiwiY3VyIiwiZ2V0X3NlbGVjdGVkX2VkaXRvciIsIm1vZGVsX3Jlc3VsdHMiLCJzZWxlY3Rpb24kMCIsInJlc3VsdCIsInNlbGVjdGlvbiQxIiwic2VsZWN0aW9uJDIiLCJzZWxlY3Rpb24kMyIsInB1dF9zZWxlY3RlZF9lZGl0b3IiLCJyZXN1bHQkMCIsInJlc3VsdHMiLCJyZXN1bHRzJDAiLCJzbGlkZXMkMSIsInNsaWRlcyQyIiwicmVzdWx0cyQxIiwicmVzdWx0cyQyIiwic3BlYyIsImV4ZXJjaXNlJDAiLCJyZXN1bHRzJDMiLCJyZXN1bHRzJDQiLCJ1cGRhdGVfc2VsZWN0ZWRfZWRpdG9yIiwiZWRpdG9ycyQwIiwiZSIsImdldF9jdXJzb3JfaW5mbyIsInN0YXRpY3MkMCIsInBwX3VwZGF0ZSIsInNob3dfdXBkYXRlIiwiYTMiLCJhMiQwIiwidXBkYXRlX29mX3NleHAiLCJhcmcxXzAzNCIsInJlczBfMDM1IiwicmVzMV8wMzYiLCJzZXhwX2FyZ3NfMDEyIiwiYXJnMl8wMTUiLCJhcmcxXzAxNCIsImFyZzBfMDEzIiwicmVzMF8wMTYiLCJyZXMxXzAxNyIsInJlczJfMDE4Iiwic2V4cF9hcmdzXzAyMSIsImFyZzNfMDI1IiwiYXJnMl8wMjQiLCJhcmcxXzAyMyIsImFyZzBfMDIyIiwicmVzMl8wMjgiLCJyZXMzXzAyOSIsInNleHBfb2ZfdXBkYXRlIiwicmVzMF8wMzgiLCJhcmcyXzA0MSIsImFyZzFfMDQwIiwiYXJnMF8wMzkiLCJyZXMxXzA0MyIsInJlczJfMDQ0IiwiYXJnM18wNDgiLCJhcmcyXzA0NyIsImFyZzFfMDQ2IiwiYXJnMF8wNDUiLCJyZXMxXzA1MCIsInJlczJfMDUxIiwicmVzM18wNTIiLCJhcmcxXzA1NCIsInVwZGF0ZV9vZl95b2pzb24iLCJ2MyIsInYyJDEiLCJ2MiQyIiwidjMkMCIsInlvanNvbl9vZl91cGRhdGUiLCJzZXRfdXBkYXRlIiwiZXhwbGFpblRoaXNNb2RlbCIsImIiLCJmZWVkYmFja19vcHRpb24iLCJwb3N0IiwicHJlIiwiZm9ybSQwIiwiZmVlZGJhY2siLCJmb3JtJDEiLCJmZWVkYmFja19vcHRpb24kMCIsImZvcm1faWQkMCIsImdyb3VwX2lkJDAiLCJwb3N0X2Zvcm0iLCJmb3JtJDIiLCJwcmVfZm9ybSIsImZvcm0kMyIsInBvc3RfZXhhbXBsZSIsInByZV9leGFtcGxlIiwiZXhhbXBsZSQwIiwiZm9ybSQ0IiwiZm9ybV9pZCQxIiwiZ3JvdXBfaWQkMSIsImciLCJwb3N0X2dyb3VwIiwicHJlX2dyb3VwIiwic2V4cF8wMDIiLCJmaWVsZF9zZXhwc18wMDMiLCJyb3dfaGVpZ2h0XzAwNCIsImNvbF93aWR0aF8wMDYiLCJkdXBsaWNhdGVzXzAwOCIsImV4dHJhXzAwOSIsInNleHBfMDAyJDAiLCJmaWVsZF9zZXhwc18wMTIiLCJmaWVsZF9uYW1lXzAxMCIsInRhaWxfMDE3IiwiZmllbGRfc2V4cF8wMTEkMiIsImZpZWxkX3NleHBfMDExIiwieF8wMTgiLCJmaWVsZF9zZXhwXzAxMSQwIiwiZnZhbHVlXzAxNCIsImZpZWxkX3NleHBfMDExJDEiLCJmdmFsdWVfMDEzIiwiY29sX3dpZHRoXzAwNyIsInJvd19oZWlnaHRfMDA1IiwiY29sX3dpZHRoXzAyMiIsInJvd19oZWlnaHRfMDIwIiwiYXJnXzAyMyIsImJuZHNfMDE5IiwiYXJnXzAyMSIsImJuZHNfMDE5JDAiLCJyb3dfaGVpZ2h0X2ZpZWxkIiwiY29sX3dpZHRoX2ZpZWxkIiwiY29sX3dpZHRoX3ZhbHVlIiwicm93X2hlaWdodF92YWx1ZSIsInZfY29sX3dpZHRoIiwidl9yb3dfaGVpZ2h0IiwiY2xpcGJvYXJkX3NoaW1faWQiLCJnZXRfZWxlbV9ieV9pZCIsImRvYyIsImdldF9jaGlsZF93aXRoX2NsYXNzIiwiY2xhc3NOYW1lIiwic2libGluZyQxIiwic2libGluZyQwIiwiZGF0ZV9ub3ciLCJ0aW1lc3RhbXAiLCJnZXRfa2V5IiwiY3RybF9oZWxkIiwic2hpZnRfaGVsZCIsImFsdF9oZWxkIiwibWV0YV9oZWxkIiwibnVtX2NsaWNrcyIsImlzX2RvdWJsZV9jbGljayIsImRvd25sb2FkX3N0cmluZ19maWxlIiwiY29udGVudF90eXBlIiwiY29udGVudHMiLCJibG9iIiwiZG93bmxvYWRfanNvbiIsInJlYWRfZmlsZSIsImZpbGUiLCJvcHRpb24iLCJzZXRfbG9jYWxzdG9yZSIsImxvY2FsX3N0b3JlIiwiZ2V0X2xvY2Fsc3RvcmUiLCJjbGVhcl9sb2NhbHN0b3JlIiwiY29uZmlybSIsIm1lc3NhZ2UiLCJsb2ciLCJmb2N1c19jbGlwYm9hcmRfc2hpbSIsImNsaXBib2FyZF9zaGltIiwiY29weSIsInNjcm9sbF9jdXJzb3JfaW50b192aWV3X2lmX25lZSIsImNhcmV0X2VsZW0iLCJtYWluIiwic2V0X2N1cnJlbnQiLCJmcmFnIiwiZnJhZyQwIiwiaGlzdG9yeSIsImdldF9jdXJyZW50IiwiZnJhZ21lbnRfb2ZfdXJsIiwicHJlZml4Iiwic2F2ZV9zZXR0aW5nc19rZXkiLCJzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5Iiwic2F2ZV9zY3JhdGNoX2tleSIsInNhdmVfZG9jdW1lbnRhdGlvbl9rZXkiLCJjdXJfZXhlcmNpc2Vfa2V5IiwiZnVsbF9rZXkiLCJzYXZlIiwidmFsdWUiLCJsb2FkIiwic2F2ZSQwIiwibG9hZCQwIiwic2VyaWFsaXplJDAiLCJkZXNlcmlhbGl6ZSQwIiwic2F2ZSQxIiwibG9hZCQxIiwiZXhwb3J0JDEiLCJpbXBvcnQkMSIsInBwX3BlcnNpc3RlbnQiLCJzaG93X3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X29mX3NleHAiLCJzZXhwX29mX3BlcnNpc3RlbnQiLCJwZXJzaXN0ZW50X29mX3lvanNvbiIsInlvanNvbl9vZl9wZXJzaXN0ZW50IiwidG9fcGVyc2lzdGVudCIsIm9mX3BlcnNpc3RlbnQiLCJzZXJpYWxpemUkMSIsInNjcmF0Y2giLCJkZXNlcmlhbGl6ZSQxIiwic2F2ZSQyIiwiaW5pdCQxIiwibG9hZCQyIiwiZXhwb3J0JDIiLCJpbXBvcnQkMiIsInBwX3BlcnNpc3RlbnQkMCIsInNob3dfcGVyc2lzdGVudCQwIiwicGVyc2lzdGVudF9vZl9zZXhwJDAiLCJzZXhwX29mX3BlcnNpc3RlbnQkMCIsInBlcnNpc3RlbnRfb2ZfeW9qc29uJDAiLCJ5b2pzb25fb2ZfcGVyc2lzdGVudCQwIiwidG9fcGVyc2lzdGVudCQwIiwic3RyaW5nIiwib2ZfcGVyc2lzdGVudCQwIiwic2VyaWFsaXplJDIiLCJkZXNlcmlhbGl6ZSQyIiwic2F2ZSQzIiwiaW5pdCQyIiwiZG9jdW1lbnRhdGlvbiIsImxvYWQkMyIsImV4cG9ydCQzIiwiaW1wb3J0JDMiLCJrZXlzdHJpbmdfb2Zfa2V5Iiwia2V5c3RyaW5nX29mIiwia2V5X29mX2tleXN0cmluZyIsImtleXN0cmluZyIsInNhdmVfZXhlcmNpc2Vfa2V5Iiwic2F2ZV9leGVyY2lzZSIsImluaXRfZXhlcmNpc2UiLCJsb2FkX2V4ZXJjaXNlIiwic2F2ZSQ0IiwiaW5pdCQzIiwibG9hZCQ0IiwiZmlyc3Rfc3BlYyIsImZpcnN0X2tleSIsInByZXBfZXhlcmNpc2VfZXhwb3J0Iiwic2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydCIsImV4cG9ydCQ0IiwiaW1wb3J0JDQiLCJleGVyY2lzZV9leHBvcnQiLCJwZXJzaXN0ZW50X3N0YXRlIiwic3BlYyQwIiwiZXJyb3Jfc291cmNlXzA2NiIsInNleHBfYXJnc18wMjIiLCJhcmcwXzAyMyIsInJlczBfMDI0Iiwic2V4cF9hcmdzXzAxNyIsImFyZzBfMDE4IiwicmVzMF8wMTkiLCJyZXMwXzAxNCIsInJlczBfMDMxIiwicmVzMF8wMzMiLCJhcmcwXzAzNCIsImFyZzBfMDM2IiwicmVzMF8wMzciLCJzZXhwXzA0MSIsImZpZWxkX3NleHBzXzA0MiIsInNldHRpbmdzXzA0MyIsImZvbnRfbWV0cmljc18wNDUiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfMDQ3IiwibW91c2Vkb3duXzA0OSIsImNvbG9yX2hpZ2hsaWdodHNfMDUxIiwiaW5qZWN0X2dsb2JhbF8wNTMiLCJkdXBsaWNhdGVzXzA1NSIsImV4dHJhXzA1NiIsInNleHBfMDQxJDAiLCJmaWVsZF9zZXhwc18wNTkiLCJmaWVsZF9uYW1lXzA1NyIsInRhaWxfMDY4IiwiZmllbGRfc2V4cF8wNTgkNiIsImZpZWxkX3NleHBfMDU4IiwieF8wNjkiLCJmaWVsZF9zZXhwXzA1OCQwIiwiZnZhbHVlXzA2MyIsImZpZWxkX3NleHBfMDU4JDEiLCJmdmFsdWVfMDY1IiwiZmllbGRfc2V4cF8wNTgkMiIsImZ2YWx1ZV8wNjIiLCJmaWVsZF9zZXhwXzA1OCQzIiwiZnZhbHVlXzA2MCIsImZpZWxkX3NleHBfMDU4JDQiLCJmdmFsdWVfMDY0IiwiZmllbGRfc2V4cF8wNTgkNSIsImZ2YWx1ZV8wNjEiLCJpbmplY3RfZ2xvYmFsXzA1NCIsImNvbG9yX2hpZ2hsaWdodHNfMDUyIiwibW91c2Vkb3duXzA1MCIsInNob3dfYmFja3BhY2tfdGFyZ2V0c18wNDgiLCJmb250X21ldHJpY3NfMDQ2Iiwic2V0dGluZ3NfMDQ0IiwiY29sb3JfaGlnaGxpZ2h0c18wNzkiLCJtb3VzZWRvd25fMDc3Iiwic2hvd19iYWNrcGFja190YXJnZXRzXzA3NSIsImZvbnRfbWV0cmljc18wNzMiLCJzZXR0aW5nc18wNzEiLCJibmRzXzA3MCIsImFyZ18wODIiLCJibmRzXzA3MCQwIiwiYXJnXzA4MCIsImJuZHNfMDcwJDEiLCJhcmdfMDc4IiwiYm5kc18wNzAkMiIsImFyZ18wNzYiLCJibmRzXzA3MCQzIiwiYXJnXzA3NCIsImJuZHNfMDcwJDQiLCJhcmdfMDcyIiwiYm5kc18wNzAkNSIsImZvbnRfbWV0cmljc19maWVsZCIsInNob3dfYmFja3BhY2tfdGFyZ2V0c19maWVsZCIsIm1vdXNlZG93bl9maWVsZCIsImNvbG9yX2hpZ2hsaWdodHNfZmllbGQiLCJpbmplY3RfZ2xvYmFsX2ZpZWxkIiwiaW5qZWN0X2dsb2JhbF92YWx1ZSIsImNvbG9yX2hpZ2hsaWdodHNfdmFsdWUiLCJtb3VzZWRvd25fdmFsdWUiLCJzaG93X2JhY2twYWNrX3RhcmdldHNfdmFsdWUiLCJmb250X21ldHJpY3NfdmFsdWUiLCJ2X2NvbG9yX2hpZ2hsaWdodHMiLCJ2X21vdXNlZG93biIsInZfc2hvd19iYWNrcGFja190YXJnZXRzIiwidl9mb250X21ldHJpY3MiLCJjYWxjdWxhdGUiLCJjb2xvcl9oaWdobGlnaHRzIiwicHAkMiIsInNob3ckMiIsInRfb2Zfc2V4cCQyIiwic2V4cF9vZl90JDIiLCJ0X29mX3lvanNvbiQyIiwieW9qc29uX29mX3QkMiIsInBwX3RpbWVzdGFtcCIsInNob3dfdGltZXN0YW1wIiwidGltZXN0YW1wX29mX3lvanNvbiIsInlvanNvbl9vZl90aW1lc3RhbXAiLCJ0aW1lc3RhbXBfb2Zfc2V4cCIsInNleHBfb2ZfdGltZXN0YW1wIiwiY3V0b2ZmIiwibG9hZF9lZGl0b3JzIiwic2F2ZV9lZGl0b3JzIiwiZ2xvYmFscyIsInNhdmVfYW5kX3JldHVybiIsInJlc2V0IiwibmV3X21vZGVsIiwiZXJyb3Jfc291cmNlXzAxOCIsImVycm9yX3NvdXJjZV8wMjkiLCJlcnJvcl9zb3VyY2VfMDMzIiwiZXJyb3Jfc291cmNlXzA0NCIsImVycm9yX3NvdXJjZV8wNjIiLCJlcnJvcl9zb3VyY2VfMTk2IiwicHBfc3RlcHBlcl9hY3Rpb24iLCJzaG93X3N0ZXBwZXJfYWN0aW9uIiwic3RlcHBlcl9hY3Rpb25fb2Zfc2V4cCIsInNleHBfb2Zfc3RlcHBlcl9hY3Rpb24iLCJzdGVwcGVyX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3RlcHBlcl9hY3Rpb24iLCJwcF9hZ2VudCIsInNob3dfYWdlbnQiLCJhZ2VudF9vZl9zZXhwIiwic2V4cF8wMTUiLCJzZXhwX29mX2FnZW50IiwiYWdlbnRfb2ZfeW9qc29uIiwieW9qc29uX29mX2FnZW50IiwicHBfYWdlbnRfYWN0aW9uIiwic2hvd19hZ2VudF9hY3Rpb24iLCJhZ2VudF9hY3Rpb25fb2Zfc2V4cCIsInRhZ18wMjEiLCJzZXhwX29mX2FnZW50X2FjdGlvbiIsImFyZzBfMDI1IiwiYWdlbnRfYWN0aW9uX29mX3lvanNvbiIsInlvanNvbl9vZl9hZ2VudF9hY3Rpb24iLCJwcF9iZW5jaG1hcmtfYWN0aW9uIiwic2hvd19iZW5jaG1hcmtfYWN0aW9uIiwiYmVuY2htYXJrX2FjdGlvbl9vZl9zZXhwIiwic2V4cF9vZl9iZW5jaG1hcmtfYWN0aW9uIiwiYmVuY2htYXJrX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYmVuY2htYXJrX2FjdGlvbiIsInBwX2VkaXRvcl9hY3Rpb24iLCJzaG93X2VkaXRvcl9hY3Rpb24iLCJlZGl0b3JfYWN0aW9uX29mX3NleHAiLCJzZXhwXzAzNSIsInRhZ18wMzYiLCJzZXhwX29mX2VkaXRvcl9hY3Rpb24iLCJhcmcwXzA0MCIsInJlczBfMDQxIiwiZWRpdG9yX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfZWRpdG9yX2FjdGlvbiIsInBwX2NlbGxfYWN0aW9uIiwic2hvd19jZWxsX2FjdGlvbiIsImNlbGxfYWN0aW9uX29mX3NleHAiLCJzZXhwXzA0NiIsInRhZ18wNDciLCJzZXhwX2FyZ3NfMDQ4IiwiYXJnMF8wNDkiLCJzZXhwX2FyZ3NfMDUzIiwiYXJnMF8wNTQiLCJzZXhwX29mX2NlbGxfYWN0aW9uIiwiYXJnMF8wNTYiLCJyZXMwXzA1NyIsImFyZzBfMDU4IiwicmVzMF8wNTkiLCJjZWxsX2FjdGlvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfY2VsbF9hY3Rpb24iLCJhMCQ1IiwiYTAkNiIsImEwJDciLCJhMCQ4IiwiYTAkOSIsImEwJDEwIiwiYTAkMTEiLCJhMCQxMiIsImEwJDEzIiwiYTAkMTQiLCJzZXhwXzA2NCIsInRhZ18wNjUiLCJzZXhwX2FyZ3NfMTExIiwiYXJnMF8xMTIiLCJyZXMwXzExMyIsInNleHBfYXJnc18xMzYiLCJhcmcwXzEzNyIsInJlczBfMTM4Iiwic2V4cF9hcmdzXzE0OCIsImFyZzBfMTQ5IiwicmVzMF8xNTAiLCJzZXhwX2FyZ3NfMDcxIiwiYXJnMF8wNzIiLCJyZXMwXzA3MyIsInNleHBfYXJnc18xNTMiLCJhcmcwXzE1NCIsInJlczBfMTU1Iiwic2V4cF9hcmdzXzE0MSIsImFyZzFfMTQzIiwiYXJnMF8xNDIiLCJyZXMwXzE0NCIsInJlczFfMTQ1Iiwic2V4cF9hcmdzXzA5NiIsImFyZzBfMDk3IiwicmVzMF8wOTgiLCJyZXMwXzEwOCIsInNleHBfYXJnc18wNjYiLCJhcmcwXzA2NyIsInJlczBfMDY4Iiwic2V4cF9hcmdzXzA4MSIsImFyZzBfMDgyIiwicmVzMF8wODMiLCJzZXhwX2FyZ3NfMTAxIiwiYXJnMF8xMDIiLCJyZXMwXzEwMyIsInNleHBfYXJnc18wOTEiLCJhcmcwXzA5MiIsInJlczBfMDkzIiwic2V4cF9hcmdzXzEyMSIsImFyZzBfMTIyIiwic2V4cF9hcmdzXzExNiIsInJlczBfMTE4Iiwic2V4cF9hcmdzXzEzMSIsInNleHBfYXJnc18xMjYiLCJhcmcwXzEyNyIsInNleHBfYXJnc18wNzYiLCJyZXMwXzA3OCIsInNleHBfYXJnc18wODYiLCJhcmcwXzA4NyIsInJlczBfMDg4IiwiYXJnMF8xNTYiLCJyZXMwXzE1NyIsImFyZzBfMTYyIiwicmVzMF8xNjMiLCJhcmcwXzE2NCIsInJlczBfMTY1IiwiYXJnMF8xNjYiLCJyZXMwXzE2NyIsImFyZzBfMTY4IiwicmVzMF8xNjkiLCJhcmcwXzE3MCIsInJlczBfMTcxIiwiYXJnMF8xNzIiLCJyZXMwXzE3MyIsImFyZzBfMTc0IiwicmVzMF8xNzUiLCJhcmcwXzE3NiIsInJlczBfMTc3IiwiYXJnMF8xNzgiLCJhcmcwXzE4MCIsInJlczBfMTgxIiwiYXJnMF8xODIiLCJyZXMwXzE4MyIsImFyZzBfMTg0IiwicmVzMF8xODUiLCJhcmcxXzE4NyIsImFyZzBfMTg2IiwicmVzMF8xODgiLCJyZXMxXzE4OSIsImFyZzBfMTkwIiwicmVzMF8xOTEiLCJ5b2pzb25fYXJncyQ1IiwidjAkMTEiLCJ2MCQxMiIsInlvanNvbl9hcmdzJDEyIiwidjAkMjUiLCJ2MCQyNiIsInlvanNvbl9hcmdzJDExIiwidjAkMjMiLCJ2MCQyNCIsInlvanNvbl9hcmdzJDEwIiwidjAkMjEiLCJ2MCQyMiIsInlvanNvbl9hcmdzJDkiLCJ2MCQxOSIsInYwJDIwIiwieW9qc29uX2FyZ3MkOCIsInYwJDE3IiwidjAkMTgiLCJ5b2pzb25fYXJncyQ3IiwidjAkMTUiLCJ2MCQxNiIsInlvanNvbl9hcmdzJDYiLCJ2MCQxMyIsInYwJDE0IiwieW9qc29uX2FyZ3MkMTYiLCJ2MCQzMyIsInYwJDM0IiwieW9qc29uX2FyZ3MkMTUiLCJ2MCQzMSIsInYwJDMyIiwieW9qc29uX2FyZ3MkMTQiLCJ2MCQyOSIsInYwJDMwIiwieW9qc29uX2FyZ3MkMTMiLCJ2MCQyNyIsInYwJDI4Iiwic2V4cF8xOTgiLCJ0YWdfMTk5Iiwic2V4cF9hcmdzXzIwNSIsImFyZzBfMjA2IiwicmVzMF8yMDciLCJzZXhwX2FyZ3NfMjAwIiwiYXJnMF8yMDEiLCJyZXMwXzIwMiIsImFyZzBfMjA4IiwicmVzMF8yMDkiLCJhcmcwXzIxMCIsInJlczBfMjExIiwiaXNfZWRpdCIsInNfYWN0aW9uIiwicmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSIsInNob3VsZF9zY3JvbGxfdG9fY2FyZXQiLCJhc3Npc3RhbnRfYWN0aW9uX3RvX2VkaXRvcl9hY3QiLCJhZ2VudF9hY3Rpb24iLCJzdWdnZXN0aW9uIiwiY29tcGxldGlvbiIsInN0YXJ0Iiwic2FtcGxlXzEiLCJzdHJfdG9faW5zZXJ0cyIsImMkMCIsImFjdGlvbnNfMSIsInRpbWUiLCJmaW5pc2giLCJlbGFwc2VkIiwicHJpbnQiLCJhY3RpdmVfZWRpdG9yIiwiYWN0aXZlX2VkaXRvciQwIiwiZW52X2luaXQiLCJpbmRleCQwIiwiY2kiLCJkYl9uYW1lIiwidGFibGVfbmFtZSIsImlzX2FjdGlvbl9sb2dnZWQiLCJrdl9zdG9yZSIsImRiIiwid2l0aF9kYiIsImVycm9yIiwidXBncmFkZSIsImFkZCIsImdldF9hbGwiLCJjbGVhcl9hbmQiLCJjYWxsYmFjayIsInJlczBfMDEwIiwicmVzMV8wMTEiLCJwcF9zIiwic2hvd19zIiwic19vZl95b2pzb24iLCJ5b2pzb25fb2ZfcyIsInNfb2Zfc2V4cCIsInhfMDEzIiwic2V4cF9vZl9zIiwieF8wMTQiLCJ0cyIsImdldF9hbmQiLCJlbnRyaWVzIiwiZXJyb3Jfc291cmNlXzAyNyIsImVycm9yX3NvdXJjZV8wNjQiLCJwcF9hbGwiLCJzaG93X2FsbCIsImFsbF9vZl9zZXhwIiwic2V0dGluZ3NfMDA0IiwiZXhwbGFpblRoaXNNb2RlbF8wMDYiLCJzY3JhdGNoXzAwOCIsImV4ZXJjaXNlXzAxMCIsImRvY3VtZW50YXRpb25fMDEyIiwibG9nXzAxNCIsImR1cGxpY2F0ZXNfMDE2IiwiZXh0cmFfMDE3IiwiZmllbGRfc2V4cHNfMDIwIiwiZmllbGRfbmFtZV8wMTgiLCJ0YWlsXzAyOSIsImZpZWxkX3NleHBfMDE5JDYiLCJmaWVsZF9zZXhwXzAxOSIsInhfMDMwIiwiZmllbGRfc2V4cF8wMTkkMCIsImZ2YWx1ZV8wMjYiLCJmaWVsZF9zZXhwXzAxOSQxIiwiZnZhbHVlXzAyNCIsImZpZWxkX3NleHBfMDE5JDIiLCJmdmFsdWVfMDIxIiwiZmllbGRfc2V4cF8wMTkkMyIsImZ2YWx1ZV8wMjUiLCJmaWVsZF9zZXhwXzAxOSQ0IiwiZnZhbHVlXzAyMyIsImZpZWxkX3NleHBfMDE5JDUiLCJmdmFsdWVfMDIyIiwibG9nXzAxNSIsImRvY3VtZW50YXRpb25fMDEzIiwiZXhlcmNpc2VfMDExIiwic2NyYXRjaF8wMDkiLCJleHBsYWluVGhpc01vZGVsXzAwNyIsInNldHRpbmdzXzAwNSIsInNleHBfb2ZfYWxsIiwibG9nXzA0MiIsImRvY3VtZW50YXRpb25fMDQwIiwiZXhlcmNpc2VfMDM4Iiwic2NyYXRjaF8wMzYiLCJleHBsYWluVGhpc01vZGVsXzAzNCIsInNldHRpbmdzXzAzMiIsImFyZ18wNDMiLCJibmRzXzAzMSIsImFyZ18wNDEiLCJibmRzXzAzMSQwIiwiYXJnXzAzOSIsImJuZHNfMDMxJDEiLCJhcmdfMDM3IiwiYm5kc18wMzEkMiIsImFyZ18wMzUiLCJibmRzXzAzMSQzIiwiYXJnXzAzMyIsImJuZHNfMDMxJDQiLCJhbGxfb2ZfeW9qc29uIiwiZXhwbGFpblRoaXNNb2RlbF9maWVsZCIsImV4ZXJjaXNlX2ZpZWxkIiwibG9nX2ZpZWxkIiwibG9nX3ZhbHVlIiwiZXhlcmNpc2VfdmFsdWUiLCJleHBsYWluVGhpc01vZGVsX3ZhbHVlIiwieW9qc29uX29mX2FsbCIsInZfbG9nIiwidl9leGVyY2lzZSIsInZfZXhwbGFpblRoaXNNb2RlbCIsInBwX2FsbF9mMjIiLCJzaG93X2FsbF9mMjIiLCJhbGxfZjIyX29mX3NleHAiLCJzZXhwXzA0NSIsImZpZWxkX3NleHBzXzA0NiIsInNldHRpbmdzXzA0NyIsInNjcmF0Y2hfMDQ5IiwiZXhlcmNpc2VfMDUxIiwibG9nXzA1MyIsInNleHBfMDQ1JDAiLCJ0YWlsXzA2NiIsInhfMDY3IiwibG9nXzA1NCIsImV4ZXJjaXNlXzA1MiIsInNjcmF0Y2hfMDUwIiwic2V0dGluZ3NfMDQ4Iiwic2V4cF9vZl9hbGxfZjIyIiwibG9nXzA3NSIsImV4ZXJjaXNlXzA3MyIsInNjcmF0Y2hfMDcxIiwic2V0dGluZ3NfMDY5IiwiYm5kc18wNjgiLCJibmRzXzA2OCQwIiwiYm5kc18wNjgkMSIsImFyZ18wNzAiLCJibmRzXzA2OCQyIiwiYWxsX2YyMl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfYWxsX2YyMiIsIm1rX2FsbCIsImV4cG9ydF9hbGwiLCJpbXBvcnRfYWxsIiwiYWxsIiwiYWxsX2YyMiIsInNjaGVkdWxlX2V2YWx1YXRpb24iLCJzY2hlZHVsZV9hY3Rpb24iLCJlbGFicyIsImV2YWxfcnMiLCJycXMiLCJycyIsIm5ld19ycyIsInN0ZXBfcnMiLCJuZXdfcnMkMCIsInVwZGF0ZV9jYWNoZWRfZGF0YSIsIm0iLCJ1cGRhdGVfc3RhdGljcyIsInVwZGF0ZV9keW5hbWljcyIsInVwZGF0ZV9zdGF0aWNzJDAiLCJtJDAiLCJwZXJmb3JtX2FjdGlvbiIsImVkIiwibW9kZWwkMCIsImVyciIsInBlcmZvcm1fYWN0aW9ucyIsImFzIiwibW9kZWwkMSIsInN3aXRjaF9zY3JhdGNoX3NsaWRlIiwic3BlY3MkMCIsImV4cG9ydF9wZXJzaXN0ZW50X2RhdGEiLCJhcHBseSIsImVkJDAiLCJ6aXBwZXJfaW5pdCIsImVkX3N0ciIsInokMCIsImVkaXRvcnMkMSIsImVkaXRvcnMkMiIsImUkMCIsImIkMCIsImZtIiwidGlsZSIsImVkaXRvcnMkMyIsImZpbGUkMCIsImRhdGEkMSIsImVkaXRvcnMkNCIsImluc3RydWN0b3JfbW9kZSQwIiwiZWRpdG9ycyQ1IiwiYSQwIiwiciIsInIkMCIsImV2YWxzIiwiZXZhbCQwIiwibGFtIiwidXBfYXJyb3ciLCJkb3duX2Fycm93IiwibGVmdF9hcnJvdyIsInJpZ2h0X2Fycm93IiwibmJzcCIsInp3c3AiLCJ0eXBlQXJyb3dTeW0iLCJjYXN0QXJyb3dTeW0iLCJlbGxpcHNpcyIsImxlbmd0aCIsInN0b3AiLCJjb3VudCIsImNvdW50JDAiLCJzdGFydCQwIiwiY291bnQkMSIsInN0YXJ0JDEiLCJjb3VudCQyIiwic3RhcnQkMiIsInN0YXJ0JDMiLCJ0cGF0X3ZpZXciLCJ0eV92aWV3IiwiY2xzIiwiYWxpYXNfdmlldyIsInZpZXdfdHkiLCJvcHQkMCIsInN0cmlwX291dGVyX3BhcmVucyIsInByb3YiLCJ0MiIsInQxIiwicGFyZW5fdmlldyIsInQwIiwidHMkMCIsImN0cl92aWV3IiwidHNfdmlld3MiLCJ0MCQwIiwidHMkMSIsInQkMCIsIm5hbWUkMCIsInQkMSIsIm5hbWUkMSIsInR5cCQwIiwiY3RyIiwidmlldyIsInR5IiwicG9seV9pZF9leCIsInRwIiwidHlwZnVuX3ZhciIsInR5cGVfZnVuY3Rpb25zX2Jhc2ljIiwidHlwZnVuYXBwX2V4cF9leCIsImV4cF90ZnVuIiwidHlwZnVuYXBwX2V4cF9jb2xvcmluZ19pZHMiLCJmX2lkIiwidHlwX2lkIiwidHlwZnVuYXBwX2V4cCIsInR5cGZ1bmFwcyIsInR5cGFubl9wYXRfY29sb3JpbmdfaWRzIiwicGF0X2lkIiwidHlwYW5uX3BhdCIsInR5cGFubiIsInR5cF9kZWYiLCJ0eWFsaWFzX2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyIsInRwYXRfaWQiLCJkZWZfaWQiLCJ0eWFsaWFzX2V4cCIsInR5YWxpYXNfZXhwcyIsImV4cGxhbmF0aW9uJDAiLCJleHBsYW5hdGlvbiQxIiwiZXhwbGFuYXRpb24kMiIsImNvbW1hIiwidHVwbGVfdHlwIiwidHVwbGUwX3R5cCIsInR5cF9lbGVtMSIsInR5cF9lbGVtMiIsInR1cGxlMl90eXBfY29sb3JpbmdfaWRzIiwiZWxlbTFfaWQiLCJlbGVtMl9pZCIsImNvbW1hJDAiLCJ0dXBsZTJfdHlwIiwidHlwX2VsZW0xJDAiLCJ0eXBfZWxlbTIkMCIsInR5cF9lbGVtMyIsInR1cGxlM190eXBfY29sb3JpbmdfaWRzIiwiZWxlbTNfaWQiLCJjb21tYSQxIiwidHVwbGUzX3R5cCIsInR1cGxlIiwidHVwbGUwIiwidHVwbGUyIiwidHVwbGUzIiwidHVwbGVfcGF0IiwicGF0MSIsInBhdDIiLCJ0dXBsZV9wYXRfc2l6ZTJfY29sb3JpbmdfaWRzIiwidHVwbGVfcGF0X3NpemUyIiwicGF0MSQwIiwicGF0MiQwIiwicGF0MyIsInR1cGxlX3BhdF9zaXplM19jb2xvcmluZ19pZHMiLCJ0dXBsZV9wYXRfc2l6ZTMiLCJ0dXBsZV9leGFtcGxlXzEiLCJ0dXBsZV9leGFtcGxlXzIiLCJ0dXBsZV9leHAiLCJleHAxIiwiZXhwMiIsInR1cGxlX2V4cF9zaXplMl9jb2xvcmluZ19pZHMiLCJleHAxX2lkIiwiZXhwMl9pZCIsInR1cGxlX2V4cF9zaXplMiIsImV4cDEkMCIsImV4cDIkMCIsImV4cDMiLCJ0dXBsZV9leHBfc2l6ZTNfY29sb3JpbmdfaWRzIiwiZXhwM19pZCIsInR1cGxlX2V4cF9zaXplMyIsInR1cGxlcyIsInR1cGxlczIiLCJ0dXBsZXMzIiwianVtcF90b190ZXN0IiwiaW5qZWN0IiwiZWZmZWN0MSIsImVmZmVjdDIiLCJyZXN1bHQxIiwidGVzdF9iYXJfc2VnbWVudCIsImluamVjdF9qdW1wIiwicmVwb3J0cyIsInN0YXR1cyIsInRlc3RfYmFyIiwidGVzdF9yZXN1bHRzIiwicGVyY2VudF92aWV3IiwicGVyY2VudGFnZSIsInRlc3RfcGVyY2VudGFnZSIsInRlc3RfdGV4dCIsInRlc3Rfc3VtbWFyeSIsInRlc3RfcmVzdWx0cyQwIiwidmlld19vZl9tYWluX3RpdGxlX2JhciIsInRpdGxlX3RleHQiLCJ0ZXN0X3RydWVfZXgiLCJ0ZXN0X2ZhbHNlX2V4IiwiZXhwX2JvZHkiLCJ0ZXN0X2V4cF9jb2xvcmluZ19pZHMiLCJib2R5X2lkIiwidGVzdF9leHAiLCJ0ZXN0cyIsImV4cGxhbmF0aW9uJDMiLCJpbnRfdHlwIiwiZmxvYXRfdHlwIiwiYm9vbF90eXAiLCJzdHJfdHlwIiwidmFyX3R5cCIsImZsb2F0JDAiLCJib29sIiwidmFyJDAiLCJleHBsYW5hdGlvbiQ2IiwiZXhwbGFuYXRpb24kNSIsImV4cGxhbmF0aW9uJDQiLCJ3aWxkX3BhdCIsImludGxpdF9wYXQiLCJmbG9hdGxpdF9wYXQiLCJib29sbGl0X3BhdCIsInN0cmxpdF9wYXQiLCJ0cml2X3BhdCIsInZhcl9wYXQiLCJjdHJfcGF0Iiwid2lsZCIsImludGxpdCIsImZsb2F0bGl0IiwiYm9vbGxpdCIsInN0cmxpdCIsInRyaXYiLCJ0cml2X2V4cCIsInRyaXZfZXhwcyIsImRlZmVycmFsX2V4cF9leCIsImRlZmVycmFsX2V4cCIsImRlZmVycmFsX2V4cHMiLCJib29sX2V4cCIsImJvb2xfZXhwcyIsImludF9leHAiLCJpbnRfZXhwcyIsImZsb2F0X2V4cCIsImZsb2F0X2V4cHMiLCJzdHJpbmdfZXhwIiwic3RyaW5nX2V4cHMiLCJ2YXJfZXhwIiwidmFyX2V4cHMiLCJjdHJfZXhwIiwidmFsdWVzIiwic29ydGVkX3ZhbHVlcyIsInkiLCJvcmRpbmFscyIsInZhbHVlcyQwIiwibWtfbm9kZSIsInNoYXBlIiwibWlkIiwicGVyZm9ybSIsIm9wIiwidHJlZSIsImdvIiwiaW50ZXJ2YWwiLCJub2RlIiwibm9kZSQwIiwibCQwIiwibCQxIiwiciQxIiwibmV3X3Jvb3QiLCJtc2ciLCJpbnNlcnQiLCJkZWxldGUkMCIsImNvbXBsZW1lbnRfaW50ZXJzZWN0aW9uIiwic3RhY2siLCJyZXN0IiwiYiQxIiwiYSQxIiwic3RhY2skMCIsIm9yZGluYWwyIiwib3JkaW5hbDEiLCJvMiIsIm8xIiwiY21kZnVkZ2UiLCJzdGgkMCIsInkkMCIsInkkMSIsIngkMiIsInkkMiIsImR4IiwiZHkiLCJoIiwiaCQwIiwidiQwIiwic2NhbGVfY21kIiwic2NhbGVfeCIsInNjYWxlX3kiLCJkeSQwIiwiZHgkMCIsImR4JDEiLCJkeSQxIiwic2NhbGUiLCJyZXZlcnNlIiwidHJhbnNsYXRlX2NtZCIsImNtZCIsInRyYW5zbGF0ZSIsInN0cmluZ19vZl9mbGFnIiwic3RyaW5nX29mX2NvbW1hbmQiLCJkeSQyIiwiZHgkMiIsInN3ZWVwX2ZsYWciLCJsYXJnZV9hcmNfZmxhZyIsInhfYXhpc19yb3RhdGlvbiIsInJ5IiwicngiLCJhdHRycyIsInBhdGgiLCJidWZmZXIiLCJsaW5rZWRfZWRnZV9lcSIsImUxIiwiZTIiLCJjbWRfb2ZfbGlua2VkX2VkZ2UiLCJlZGdlIiwic3JjIiwiZHN0Iiwicm91bmRfY29ybmVycyIsIm1heF9yYWRpaSIsInJ4X21pbiIsInJ5X21pbiIsImNtZDIiLCJjbWQxIiwicnkkMCIsInJ4JDAiLCJjbG9ja3dpc2UiLCJyeSQxIiwicngkMSIsImNsb2Nrd2lzZSQwIiwiaXNfbGVmdF9zaWRlIiwibWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlIiwiZWRnZXMiLCJyaWdodF9lZGdlcyIsImxlZnRfZWRnZXMiLCJ0bCIsImhkIiwibWVyZ2VkX2xlZnRfZWRnZXMiLCJtZXJnZWRfcmlnaHRfZWRnZXMiLCJ2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzIiwicmVjdHMiLCJoZWlnaHQiLCJ3aWR0aCIsIm1pbiIsIm1heF94IiwibWF4X3kiLCJtYXgiLCJtaW5fbWF4IiwibWF4X21pbiIsImlzX2xlZnQxIiwiaXNfbGVmdDIiLCJzb3J0ZWRfdmVydGljYWxfc2lkZXMiLCJzZWdtZW50X3RyZWUiLCJ5cyIsIm1rX2NvbnRvdXJfZWRnZSIsInlfZHN0IiwieV9zcmMiLCJuZXdfY29udG91cl9lZGdlcyIsInVwZGF0ZWRfdHJlZSIsInVwZGF0ZWRfdHJlZSQwIiwibmV3X2NvbnRvdXJfZWRnZXMkMCIsImNvcm5lcl9yYWRpaSIsInZlcnRpY2FsX2NvbnRvdXJfZWRnZXMkMCIsImlzX3NyYzIiLCJpc19zcmMxIiwicHQxIiwicHQyIiwibmV4dCIsInByZXYiLCJ4X2RzdCIsInhfc3JjIiwieF9kc3QkMCIsInhfc3JjJDAiLCJidWlsZF9wYXRoIiwiZGl2aWRlciIsImxhYmVsbGVkX3N1bV90eXAiLCJzdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZiIsInN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZSIsImxhYmVsbGVkX3N1bV90eXBzIiwic3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWZzIiwic3VtX3R5cF9udWxsYXJ5X2NvbnN0cnVjdG9yX2RlJDAiLCJzdmciLCJyYWlzZWRfc2hhZG93X2R4IiwicmFpc2VkX3NoYWRvd19keSIsImZ6ZXJvIiwidGlwX3dpZHRoIiwiY29uY2F2ZV9hZGoiLCJjb252ZXhfYWRqIiwic2hhZG93X2FkaiIsImNhcmV0X2FkanVzdCIsInNpZGUiLCJjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIiwic2hvcnRfdGlwX2hlaWdodCIsInN0cmV0Y2hfZHgiLCJleHRyYV90YWlsIiwiamFnZ2VkX2VkZ2VfaCIsImphZ2dlZF9lZGdlX3ciLCJzaG9ydF90aXBfd2lkdGgiLCJwb3Nfc3RyIiwiZnVkZ2UiLCJjb2RlX3N2Z19zaXplZCIsImZvbnRfbWV0cmljcyIsImxhc3QiLCJvcmlnaW4iLCJiYXNlX2NscyIsInBhdGhfY2xzIiwic3RoJDEiLCJhdHRyIiwic3RoJDIiLCJ0b3AiLCJsZWZ0Iiwic3R5bGUiLCJwb3NpdGlvbiIsImxlZnRfZnVkZ2UiLCJ0b3BfZnVkZ2UiLCJ3aWR0aF9mdWRnZSIsInN0aCQzIiwiaGVpZ2h0X2Z1ZGdlIiwic3RoJDQiLCJhYnNfcG9zaXRpb24iLCJjb2RlX3N2ZyIsInN0aCQ1Iiwic3RoJDYiLCJzdGgkNyIsImFic19wb3MiLCJyYWlzZWRfc2hhZG93X2ZpbHRlciIsInNvcnQiLCJzaGFkb3dfZmlsdGVyIiwiZmlsdGVycyIsInBwX3RpcF9zaGFwZSIsInNob3dfdGlwX3NoYXBlIiwidGlwX3NoYXBlX29mX3NleHAiLCJzZXhwX29mX3RpcF9zaGFwZSIsInRpcF9zaGFwZV9vZl95b2pzb24iLCJ5b2pzb25fb2ZfdGlwX3NoYXBlIiwidHJfYmwiLCJ3aXRoX2NoaWxkX2JvcmRlciIsInN0cmV0Y2hfeCIsInN0cmV0Y2hfeSIsImp1bmN0aW9uJDAiLCJkaWFnIiwianVuY3Rpb24kMSIsImRpYWckMCIsImJsX3RyIiwiaGVtaSIsInRsX2JyIiwianVuY3Rpb24iLCJicl90bCIsImxlZnRfdGlwX3BhdGgiLCJzX3giLCJzX3kiLCJqYWciLCJib3R0b21faGFsZiIsInRvcF9oYWxmIiwicmlnaHRfdGlwX3BhdGgiLCJ0aXBfbCIsInRpcF9yIiwib2Zmc2V0IiwibW9sZCIsIm1lYXN1cmVtZW50IiwiY19jbHMiLCJ0aXBfciQwIiwidGlwX2wkMCIsImlzX2NvbXBsZXRlIiwiaXNfY29uc2lzdGVudCIsImlzX2luX2J1ZmZlciIsInBsdXJhbGl0eSIsImxhYmVsJDAiLCJvZl9kZWxpbSIsIm9mX2RlbGltJDAiLCJvZl9ncm91dCIsImluZGVudCIsInNlY29uZGFyeV9pY29ucyIsInN0ciQwIiwib2Zfc2Vjb25kYXJ5Iiwib2Zfc2VnbWVudCIsImJ1ZmZlcl9pZHMiLCJub19zb3J0cyIsInNlZyIsImV4cGVjdGVkX3NvcnRzIiwib2ZfcGllY2UiLCJleHBlY3RlZF9zb3J0Iiwib2ZfdGlsZSIsImNoaWxkIiwiY2hpbGRyZW5fYW5kX3NvcnRzIiwiaG9sZXMiLCJzaW1wbGVfdmlldyIsInVuc2VsZWN0ZWQiLCJob2xlcyQwIiwib2ZfaG9sZSIsIm1lYXN1cmVkIiwiYmFja3BhY2tfc2VsX3ZpZXciLCJ4X29mZiIsInlfb2ZmIiwib3BhY2l0eSIsImhlaWdodF9oZWFkIiwiY2FuX3B1dF9kb3duIiwic2lkZSQwIiwiY2FyZXRfYWRqIiwiY2FyZXRfYWRqX3B4IiwibWF4X2Rpc3AiLCJ2ZXJ0aWNhbF9kaXNwIiwic2VsZWN0aW9uc19zdHlsZSIsInNjYWxlX2ZuIiwiaW5pdF9vcGFjaXR5IiwiaW5pdF9pZHgiLCJkeV9mbiIsImJhc2VfaGVpZ2h0IiwiaW5pdF95X29mZnNldCIsInZzIiwieV9vZmZzZXQiLCJ4X29mZnNldCIsIm5ld195X29mZnNldCIsIm5ld19pZHgiLCJuZXdfb3BhY2l0eSIsInNlbGVjdGlvbnMiLCJzZWxlY3Rpb25zX3ZpZXciLCJoZCQwIiwiam9pbmVyX3N0eWxlIiwiam9pbmVyIiwiZ2VuaWVfdmlldyIsImdlbmllX3N0eWxlIiwiY2FyZXRfYmVuZCIsImNhcmV0X3dpZHRoX3N0cmFpZ2h0IiwiY2FyZXRfd2lkdGhfYmVudCIsImNhcmV0X3BhdGgiLCJjYXJldF9iZW5kX3BhcmFtIiwiY2FyZXRfd2lkdGhfcGFyYW0iLCJsX2FkaiIsImNhcmV0X3Bvc2l0aW9uX3JhZGlpIiwicl95Iiwicl94IiwiYmFzZV9jbHMkMiIsImJhc2VfY2xzJDEiLCJiYXNlX2NscyQwIiwicnVuIiwiYWRqIiwibF9ob29rIiwicl9ob29rIiwic2ltcGxlX3NoYXJkX3BhdGgiLCJzaW1wbGVfc2hhcmQiLCJzaGFwZXMiLCJzaW1wbGVfc2hhcmRfc2VsZWN0ZWQiLCJzaW1wbGVfc2hhcmRfaW5kaWNhdGVkIiwiaGFzX2NhcmV0Iiwic2ltcGxlX3NoYXJkc19pbmRpY2F0ZWQiLCJjYXJldCIsInNoYXJkcyIsIm5leHRfc3RlcF9pbmRpY2F0ZWQiLCJuZXh0X3N0ZXBfc2hhcmRzX2luZGljYXRlZCIsInRha2VuX3N0ZXBfaW5kaWNhdGVkIiwidGFrZW5fc3RlcF9zaGFyZHNfaW5kaWNhdGVkIiwic2hhZG93ZnVkZ2UiLCJzaGFyZHNfb2ZfdGlsZXMiLCJ0aWxlcyIsIm0yIiwibTEiLCJiaV9saW5lcyIsInJvd3MiLCJzaGFyZF9yb3dzIiwiaW50cmFfbGluZXMiLCJyb3dfc2hhcmRzIiwicm93X3NoYXJkcyQwIiwib3JpZ2luJDAiLCJ2X2RlbHRhIiwiaW50ZXJfbGluZXMiLCJjbHNzIiwidW5pX2xpbmVzIiwibV9maXJzdCIsInJvdyIsIm1fbGFzdF9vZl9maXJzdCIsImxfbGluZSIsIm1heF9jb2wiLCJtX2xhc3QiLCJob29rIiwicl9saW5lIiwibWluX2NvbCIsInNoYXJkX3Jvd3MkMCIsInJvdyQwIiwibV9mbGFzdCIsImluZGljYXRlZCIsInJhbmdlIiwic2hvd19iYWNrcGFja190YXJnZXRzIiwidGVybXMiLCJ0ZXJtX3JhbmdlcyIsInNlbF9zaGFyZF9zdmciLCJzdGFydF9zaGFwZSIsInNlbF9vZl9waWVjZSIsInNoYXJkX2RhdGEiLCJzZWxfb2ZfdGlsZSIsInciLCJzdGFydF9zaGFwZSQwIiwidGlsZV9zaGFyZHMiLCJzZWxfb2Zfc2VnbWVudCIsImNoaWxkcmVuX3NoYXJkcyIsInNlbGVjdGVkX3BpZWNlcyIsInIyIiwibDEiLCJpbmRpY2F0ZWRfcGllY2VfZGVjbyIsIm5pYiIsInBfciIsInBfbCIsInJhbmdlJDAiLCJ0YXJnZXRzIiwiY29udGFpbmVyX3NoYXJkcyIsImJwIiwic2licyIsInN1ZiIsInNpYnMkMCIsInAkMCIsInByb2ZpbGUiLCJyb290X3RhcmdldHMiLCJ0YXJnZXRzJDAiLCJ0ZXJtX2RlY29yYXRpb24iLCJkZWNvIiwicl9lZGdlIiwibF9lZGdlIiwidGVybV9oaWdobGlnaHQiLCJlcnJfaG9sZXMiLCJuZXh0X3N0ZXBzIiwidGlsZXMkMCIsInRha2VuX3N0ZXAiLCJlaCIsInNlbF9zZWciLCJzdGl0Y2giLCJvdmVybGF5cyIsImNvZGVfdGV4dF92aWV3Iiwic3RhdGljc19kZWNvcyIsImdldF9nb2FsIiwidGV4dF9ib3giLCJnb2FsX3giLCJnb2FsX3kiLCJtb3VzZWRvd25fb3ZlcmxheSIsImdvYWwiLCJtb3VzZWRvd25faGFuZGxlciIsInNpZ25hbCIsImhpZ2hsaWdodHMiLCJjb2xvck1hcCIsImVkaXRfZGVjb3MiLCJvdmVybGF5cyQwIiwiY29kZV92aWV3IiwibW91c2Vkb3duX292ZXJsYXkkMCIsIm9uX21vdXNlZG93biIsInZpZXckMCIsImltZyIsInNsaWRlIiwiaGVhZGVyIiwiZW0iLCJnZXRfY29udGVudCIsImljb25fc2l6ZSIsInNpbXBsZV9pY29uIiwidHJhbnNmb3JtIiwiZHMiLCJnZWFyIiwiaW5mbyIsInN0YXIiLCJib21iIiwidW5kbyIsInJlZG8iLCJjaXJjbGVfcXVlc3Rpb24iLCJnaXRodWIiLCJiYWNrIiwiZm9yd2FyZCIsImV5ZSIsInRyYXNoIiwiaGF6ZWxudXQiLCJtYWduaWZ5IiwiY2hlc3QiLCJzcHJvdXQiLCJzZXR0aW5nIiwiY3VycmVudCIsInNlcV9iYXNpY19leHBfZXgiLCJzZXFfdGVzdF9leHBfZXgiLCJzZXFfZXhwX2NvbG9yaW5nX2lkcyIsInNlcV9leHAiLCJzZXFzIiwiZmlsbGVkX3NsaWRlcyIsIm51bV9lbXB0eSIsImluaXRfZGF0YSIsIm5hcnJhdGl2ZV9jZWxsIiwic2ltcGxlX2NlbGxfaXRlbSIsImNhcHRpb24iLCJib2xkZWQiLCJzaW1wbGVfY2VsbF92aWV3IiwiaXRlbXMiLCJyZXBvcnRfZm9vdGVyX3ZpZXciLCJwYW5lbCIsImNsYXNzZXMiLCJ0aXRsZV9jZWxsIiwidGl0bGUiLCJzZXhwX2FyZ3NfMDE0IiwiYXJnMV8wMTgiLCJhcmcwXzAxNyIsInJlczFfMDIwIiwiYXJnMF8wMjEiLCJhY3Rpb24kMCIsInN0ZXBwZXJfYWN0aW9uIiwiaWR4JDAiLCJlcnJvcl9tc2ciLCJlcnIkMCIsInN0YXR1c19vZiIsInN0ZXBwZXJfdmlldyIsInJlYWRfb25seSIsInN0ZXBwZXIiLCJpbmplY3RfZ2xvYmFsIiwiYnV0dG9uX2JhY2siLCJidXR0b25faGlkZV9zdGVwcGVyIiwidG9nZ2xlX3Nob3dfaGlzdG9yeSIsImV2YWxfc2V0dGluZ3MiLCJjdXJyZW50X21vZGVsIiwic3RlcCIsInN0ZXBzIiwiaGlkZGVuIiwiY2hvc2VuX3N0ZXAiLCJsaXZlX2V2YWwiLCJsb2NrZWQiLCJyZXMiLCJyZXMkMCIsImV4bl92aWV3IiwiZm9vdGVyIiwidGVzdF9zdGF0dXNfaWNvbl92aWV3IiwiaW5zdHMiLCJtcyIsInRlc3RfcmVzdWx0X2xheWVyIiwicmVzdWx0X2tpbmQiLCJ0ZXN0X292ZXJsYXkiLCJ0ZXN0X292ZXJsYXkkMCIsImVsYWIiLCJzZWxlY3QiLCJyZXN1bHRfa2V5IiwiZXhwb3J0X2J1dHRvbiIsImpzb25fZGF0YSIsImltcG9ydF9idXR0b24iLCJyZXNldF9idXR0b24iLCJjb25maXJtZWQiLCJ0eXBfYXJnIiwicmVjX3R5cF9jb2xvcmluZ19pZHMiLCJ0Ym9keV9pZCIsInBlYW5vX2V4IiwicmVjX3R5cCIsInJlYyIsInNpbmdsZSIsImFyZ19pZCIsImZuX2lkIiwiZV9hcmciLCJlX2ZuIiwiZnVuYXBwX2V4cF9leCIsImNvbmFwcF9leHBfZXgiLCJkZWZlcnJlZF9mdW5hcHBfZXhwX2V4IiwiZXhwX2Z1biIsImV4cF9hcmciLCJmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyIsInhfaWQiLCJmdW5hcHBfZXhwIiwiZXhwX2NvbiIsImV4cF9hcmckMCIsImNvbmFwcF9leHBfY29sb3JpbmdfaWRzIiwiY29uYXBwX2V4cCIsImV4cF9mdW4kMCIsImV4cF9kZWZlcnJhbCIsImRlZmVycmVkX2Z1bmFwcF9leHBfY29sb3JpbmdfaSIsImRlZmVycmVkX2lkIiwiZGVmZXJyZWRfZnVuYXBwX2V4cCIsImZ1bmFwcyIsImNvbmFwcyIsImRlZmVycmVkYXBzIiwicGF0X2NvbiIsInBhdF9hcmciLCJhcF9wYXRfY29sb3JpbmdfaWRzIiwiY29uX2lkIiwiYXBfcGF0IiwiYXAiLCJ0eXBfb3V0IiwiYXJyb3dfdHlwX2NvbG9yaW5nX2lkcyIsInJlc3VsdF9pZCIsImFycm93X3R5cCIsInR5cF9hcmcxIiwidHlwX2FyZzIiLCJ0eXBfb3V0JDAiLCJhcnJvdzNfdHlwX2NvbG9yaW5nX2lkcyIsImFyZzFfaWQiLCJhcmcyX2lkIiwiYXJyb3cyIiwiYXJyb3czX3R5cCIsImFycm93MyIsImNhc2VfZXhhbXBsZV93aWxkX3NpbXBsZSIsImNhc2VfZXhhbXBsZV93aWxkX3R1cGxlIiwiY2FzZV9leGFtcGxlX2ludCIsImNhc2VfZXhhbXBsZV9ib29sIiwiZXhwX3NjcnV0IiwiY2FzZV9leHBfY29sb3JpbmdfaWRzIiwic2NydXRfaWQiLCJjYXNlJDAiLCJjYXNlX2V4cCIsImNhc2UkMSIsImtpbmQiLCJqdW1wX3RvIiwiZW50cnkiLCJjb250ZXh0X2VudHJ5X3ZpZXciLCJkaXZfbmFtZSIsImN0eF92aWV3IiwiY3R4IiwiY3R4X3NvcnRzX3ZpZXciLCJlcnJjIiwib2tjIiwiZGl2X2VyciIsImRpdl9vayIsImNvZGVfZXJyIiwiZXhwbGFpbl90aGlzX3RvZ2dsZSIsInRvZ2dsZV9leHBsYWluX3RoaXMiLCJjbHNfdmlldyIsImN0eF90b2dnbGUiLCJ0ZXJtX3ZpZXciLCJlbGVtZW50c19ub3VuIiwiY29tbW9uX2Vycl92aWV3Iiwic3luIiwiYW5hIiwidHlzIiwidG9rZW4iLCJjb21tb25fb2tfdmlldyIsIm9rIiwiYW5hJDIiLCJhbmEkMyIsImFuYSQxIiwic3luJDAiLCJzeW4kMSIsImFuYSQwIiwidHlwX29rX3ZpZXciLCJzdW1fdHkiLCJzdW1fdHkkMCIsInR5X2xvb2t1cCIsInR5cF9lcnJfdmlldyIsImV4cF92aWV3IiwiYWN0dWFsIiwiZXhwZWN0ZWQiLCJwYXRfdmlldyIsInR5cF92aWV3Iiwic2Vjb25kYXJ5X3ZpZXciLCJ2aWV3X29mX2luZm8iLCJ3cmFwcGVyIiwic3RhdHVzX3ZpZXciLCJzdGF0dXMkMCIsImNscyQwIiwic3RhdHVzJDEiLCJjbHMkMSIsInN0YXR1cyQyIiwiY2xzJDIiLCJpbnNwZWN0b3JfdmlldyIsImVycmMkMCIsImN1cnNvcl9pbmZvIiwiYmFyX3ZpZXciLCJvcHRpb25fdmlldyIsIm1vZGVfbWVudSIsInNsaWRlX3NlbGVjdCIsImN1cl9zbGlkZSIsIm51bV9zbGlkZXMiLCJuZXh0X2VkIiwicHJldl9lZCIsInNjcmF0Y2hfdmlldyIsImRvY3VtZW50YXRpb25fdmlldyIsImVkaXRvcl9uYW1lcyIsInByZXYkMCIsIm5leHQkMCIsImluc3RydWN0b3JfdG9nZ2xlIiwiZXhlcmNpc2VzX3ZpZXciLCJjdXJfc2xpZGUkMCIsInNjb3JlX3ZpZXciLCJlYXJuZWQiLCJwZXJjZW50YWdlX3ZpZXciLCJ0ZXh0dWFsX3N1bW1hcnkiLCJyZXBvcnQiLCJ0b3RhbF90ZXN0cyIsInJlcXVpcmVkIiwibnVtX3Rlc3RzX21lc3NhZ2UiLCJtYXhfcG9pbnRzIiwic3VtbWFyeV9tZXNzYWdlIiwic2NvcmUiLCJ0b3RhbCIsImZvdW5kIiwiYmFyIiwiaW5zdGFuY2VzIiwic3VtbWFyeSIsInN0YXR1c19jbGFzcyIsImluZGl2aWR1YWxfcmVwb3J0IiwiaGludCIsImluZGl2aWR1YWxfcmVwb3J0cyIsImNvdmVyYWdlX3Jlc3VsdHMiLCJpbmRpdmlkdWFsX3JlcG9ydCQwIiwicmVzdWx0X3N0cmluZyIsImluZGl2aWR1YWxfcmVwb3J0cyQwIiwiaGludGVkX3Jlc3VsdHMiLCJ2aWV3JDEiLCJzeW50YXhfcmVwb3J0IiwidGV4dHVhbF9zdW1tYXJ5JDAiLCJpbmRpdmlkdWFsX3JlcG9ydCQxIiwiaW5kaXZpZHVhbF9yZXBvcnRzJDEiLCJ2aWV3JDIiLCJ2aWV3X292ZXJhbGxfc2NvcmUiLCJjb250ZW50X3R5cGUkMSIsImNvbnRlbnRfdHlwZSQwIiwicmVuZGVyX2NlbGxzIiwidmlzIiwiZWRzIiwic3RpdGNoZWRfZHluYW1pY3MiLCJoaWRkZW5fYnVncyIsImluc3RydWN0b3IiLCJwcmVsdWRlIiwidXNlcl90ZXN0cyIsInVzZXJfaW1wbCIsInRlc3RfdmFsaWRhdGlvbiIsImdyYWRpbmdfcmVwb3J0IiwiZWRpdG9yX3ZpZXciLCJzdWJjYXB0aW9uIiwiZGkiLCJ0aXRsZV92aWV3IiwicHJvbXB0X3ZpZXciLCJwcmVsdWRlX3ZpZXciLCJjb3JyZWN0X2ltcGxfdmlldyIsImNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCIsInByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgiLCJwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4JDAiLCJjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgkMCIsInNwZWNpZmljX2N0eCIsInNwZWNpZmljX2N0eCQwIiwiZXhwX2N0eF92aWV3IiwiY29ycmVjdF9pbXBsX2N0eF92aWV3IiwieW91cl90ZXN0c192aWV3IiwiaW1wbCIsIndyb25nX2ltcGxfdmlld3MiLCJtdXRhdGlvbl90ZXN0aW5nX3ZpZXciLCJ5b3VyX2ltcGxfdmlldyIsInN5bnRheF9ncmFkaW5nX3ZpZXciLCJpbXBsX3ZhbGlkYXRpb25fdmlldyIsImhpZGRlbl90ZXN0c192aWV3IiwiaW1wbF9ncmFkaW5nX3ZpZXciLCJpbnN0cnVjdG9yX2V4cG9ydCIsImluc3RydWN0b3JfdHJhbnNpdGlvbmFyeV9leHBvciIsImluc3RydWN0b3JfZ3JhZGluZ19leHBvcnQiLCJkb3dubG9hZF9lZGl0b3Jfc3RhdGUiLCJleHBvcnRfc3VibWlzc2lvbiIsImltcG9ydF9zdWJtaXNzaW9uIiwiZmlsdGVyX3BhdXNlIiwicF9pZCIsImVfYm9keSIsImZpbHRlcl9ldmFsIiwiZmlsdGVyX2hpZGUiLCJmaWx0ZXJfZGVidWciLCJ1bnF1b3RlIiwic2VsX2lkIiwic2VsIiwiZm9yYWxsX3R5cF9jb2xvcmluZ19pZHMiLCJmb3JhbGxfdHlwIiwiZm9yYWxsIiwiZXhwbGFuYXRpb24kNyIsImV4cGxhbmF0aW9uJDgiLCJleHBsYW5hdGlvbiQ5IiwiZXhwbGFuYXRpb24kMTAiLCJleHBsYW5hdGlvbiQxMSIsImV4cGxhbmF0aW9uJDEyIiwiZXhwbGFuYXRpb24kMTMiLCJleHBsYW5hdGlvbiQxNCIsImV4cGxhbmF0aW9uJDE1IiwiZXhwbGFuYXRpb24kMTYiLCJiYXNpY19mdW5fZXgiLCJ3aWxkX2Z1bl9leCIsImludGxpdF9mdW5fZXgiLCJmbG9hdGxpdF9mdW5fZXgiLCJib29sbGl0X2Z1bl9leCIsInN0cmxpdF9mdW5fZXgiLCJ0cml2X2Z1bl9leCIsImxpc3RuaWxfZnVuX2V4IiwibGlzdGxpdF9mdW5fZXgiLCJjb25zX2hkX2Z1bl9leCIsImNvbnNfc25kX2Z1bl9leCIsInZhcl9pbmNyX2Z1bl9leCIsInZhcl9hbmRfZnVuX2V4IiwidHVwbGUyX2Z1bl9leCIsInR1cGxlM19mdW5fZXgiLCJjdHJfZnVuX2V4IiwiYXBfZnVuX2V4IiwicGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nIiwic2ZfcGF0X2lkIiwic2ZfYm9keV9pZCIsImZ1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMiLCJmdW5jdGlvbl9leHAiLCJmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cF9jb2xvcmkiLCJmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cCIsInBhdCQxIiwiZXhwJDEiLCJmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cF9jb2xvcmkiLCJmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cCIsImV4cCQyIiwiZnVuY3Rpb25fd2lsZF9leHBfY29sb3JpbmdfaWRzIiwicGF0JDIiLCJmdW5jdGlvbl93aWxkX2V4cCIsInBhdCQzIiwiZXhwJDMiLCJmdW5jdGlvbl9pbnRsaXRfZXhwX2NvbG9yaW5nX2kiLCJmdW5jdGlvbl9pbnRsaXRfZXhwIiwicGF0JDQiLCJleHAkNCIsImZ1bmN0aW9uX2Zsb2F0bGl0X2V4cF9jb2xvcmluZyIsImZ1bmN0aW9uX2Zsb2F0bGl0X2V4cCIsInBhdCQ1IiwiZXhwJDUiLCJmdW5jdGlvbl9ib29sbGl0X2V4cF9jb2xvcmluZ18iLCJmb3JtJDUiLCJmdW5jdGlvbl9ib29sbGl0X2V4cCIsInBhdCQ2IiwiZXhwJDYiLCJmdW5jdGlvbl9zdHJsaXRfZXhwX2NvbG9yaW5nX2kiLCJmb3JtJDYiLCJmdW5jdGlvbl9zdHJsaXRfZXhwIiwicGF0JDciLCJleHAkNyIsImZ1bmN0aW9uX3RyaXZfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kNyIsImZ1bmN0aW9uX3RyaXZfZXhwIiwicGF0JDgiLCJleHAkOCIsImZ1bmN0aW9uX2xpc3RuaWxfZXhwX2NvbG9yaW5nXyIsImZvcm0kOCIsImZ1bmN0aW9uX2xpc3RuaWxfZXhwIiwicGF0JDkiLCJleHAkOSIsImZ1bmN0aW9uX2xpc3RsaXRfZXhwX2NvbG9yaW5nXyIsImZvcm0kOSIsImZ1bmN0aW9uX2xpc3RsaXRfZXhwIiwicGF0X2hkIiwicGF0X3RsIiwiZXhwJDEwIiwiZnVuY3Rpb25fY29uc19leHBfY29sb3JpbmdfaWRzIiwiaGRfaWQiLCJ0bF9pZCIsImNvbnMiLCJmb3JtJDEwIiwiZnVuY3Rpb25fY29uc19leHAiLCJwYXQkMTAiLCJleHAkMTEiLCJmdW5jdGlvbl92YXJfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTEiLCJmdW5jdGlvbl92YXJfZXhwIiwiZXhwJDEyIiwiZnVuY3Rpb25fdHVwbGVfZXhwX2NvbG9yaW5nX2lkIiwiZm9ybSQxMiIsImZ1bmN0aW9uX3R1cGxlX2V4cCIsImV4cCQxMyIsImZ1bmN0aW9uX3R1cGxlMl9leHBfY29sb3JpbmdfaSIsInBhdDFfaWQiLCJwYXQyX2lkIiwiZm9ybSQxMyIsImZ1bmN0aW9uX3R1cGxlMl9leHAiLCJleHAkMTQiLCJmdW5jdGlvbl90dXBsZTNfZXhwX2NvbG9yaW5nX2kiLCJwYXQzX2lkIiwiZm9ybSQxNCIsImZ1bmN0aW9uX3R1cGxlM19leHAiLCJwYXQkMTEiLCJleHAkMTUiLCJmdW5jdGlvbl9jdHJfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTUiLCJmdW5jdGlvbl9jdHJfZXhwIiwiZXhwJDE2IiwiZnVuY3Rpb25fYXBfZXhwX2NvbG9yaW5nX2lkcyIsImZvcm0kMTYiLCJmdW5jdGlvbl9hcF9leHAiLCJmdW5jdGlvbnMiLCJmdW5jdGlvbnNfZW1wdHlfaG9sZSIsImZ1bmN0aW9uc19tdWx0aV9ob2xlIiwiZnVuY3Rpb25zX3dpbGQiLCJmdW5jdGlvbnNfaW50IiwiZnVuY3Rpb25zX2Zsb2F0IiwiZnVuY3Rpb25zX2Jvb2wiLCJmdW5jdGlvbnNfc3RyIiwiZnVuY3Rpb25zX3RyaXYiLCJmdW5jdGlvbnNfbGlzdG5pbCIsImZ1bmN0aW9uc19saXN0bGl0IiwiZnVuY3Rpb25zX2NvbnMiLCJmdW5jdGlvbnNfdmFyIiwiZnVuY3Rpb25zX3R1cGxlIiwiZnVuY3Rpb25zX3R1cGxlMiIsImZ1bmN0aW9uc190dXBsZTMiLCJmdW5jdGlvbnNfY3RyIiwiZnVuY3Rpb25zX2FwIiwiZW1wdHlfaG9sZV90ZW1wbGF0ZSIsIm11bHRpX2hvbGVfdGVtcGxhdGUiLCJlbXB0eV9ob2xlX2V4cCIsImVtcHR5X2hvbGVfZXhwcyIsIm11bHRpX2hvbGVfZXhwIiwibXVsdGlfaG9sZV9leHBzIiwiZW1wdHlfaG9sZV9wYXQiLCJtdWx0aV9ob2xlX3BhdCIsImVtcHR5X2hvbGUiLCJtdWx0aV9ob2xlIiwiZW1wdHlfaG9sZV90cGF0IiwiZW1wdHlfaG9sZV90cGF0cyIsIm11bHRpX2hvbGVfdHBhdCIsIm11bHRpX2hvbGVfdHBhdHMiLCJlbXB0eV9ob2xlX3R5cCIsIm11bHRpX2hvbGVfdHlwIiwiaWZfYmFzaWMxX2V4cF9leCIsImlmX2Jhc2ljMl9leHBfZXgiLCJleHBfY29uZCIsImV4cF90aGVuIiwiZXhwX2Vsc2UiLCJpZl9leHBfY29sb3JpbmdfaWRzIiwiY29uZF9pZCIsInRoZW5faWQiLCJlbHNlX2lkIiwiaWZfZXhwIiwiaWZzIiwibGV0X2Jhc2VfZXgiLCJsZXRfd2lsZF9leCIsImxldF9pbnRfZXgiLCJsZXRfZmxvYXRfZXgiLCJsZXRfYm9vbF9leCIsImxldF9zdHJfZXgiLCJsZXRfdHJpdl9leCIsImxldF9saXN0bGl0X2V4IiwibGV0X2xpc3RuaWxfZXgiLCJsZXRfY29uc19oZF9leCIsImxldF9jb25zX3NuZF9leCIsImxldF92YXJfZXgiLCJsZXRfdHVwbGUyX2V4IiwibGV0X3R1cGxlM19leCIsImxldF9jdHJfZXgiLCJsZXRfYXBfZXgiLCJwYXRfZGVmX2JvZHlfbGV0X2V4cF9jb2xvcmluZ18iLCJzZl9kZWZfaWQiLCJwYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzIiwiZXhwX2RlZiIsImxldF9iYXNlX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfYmFzZV9leHAiLCJleHBfZGVmJDAiLCJsZXRfZW1wdHlfaG9sZV9leHBfY29sb3JpbmdfaWQiLCJsZXRfZW1wdHlfaG9sZV9leHAiLCJleHBfZGVmJDEiLCJsZXRfbXVsdGlfaG9sZV9leHBfY29sb3JpbmdfaWQiLCJsZXRfbXVsdGlfaG9sZV9leHAiLCJleHBfZGVmJDIiLCJsZXRfd2lsZF9leHBfY29sb3JpbmdfaWRzIiwibGV0X3dpbGRfZXhwIiwiZXhwX2RlZiQzIiwiZXhwX2JvZHkkMCIsImxldF9pbnRfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9pbnRfZXhwIiwiZXhwX2RlZiQ0IiwiZXhwX2JvZHkkMSIsImxldF9mbG9hdF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2Zsb2F0X2V4cCIsImV4cF9kZWYkNSIsImV4cF9ib2R5JDIiLCJsZXRfYm9vbF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2Jvb2xfZXhwIiwiZXhwX2RlZiQ2IiwiZXhwX2JvZHkkMyIsImxldF9zdHJfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9zdHJfZXhwIiwiZXhwX2RlZiQ3IiwiZXhwX2JvZHkkNCIsImxldF90cml2X2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfdHJpdl9leHAiLCJleHBfZGVmJDgiLCJsZXRfbGlzdGxpdF9leHBfY29sb3JpbmdfaWRzIiwibGV0X2xpc3RsaXRfZXhwIiwiZXhwX2RlZiQ5IiwiZXhwX2JvZHkkNSIsImxldF9saXN0bmlsX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfbGlzdG5pbF9leHAiLCJleHBfZGVmJDEwIiwibGV0X2NvbnNfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9jb25zX2V4cCIsImV4cF9kZWYkMTEiLCJleHBfYm9keSQ2IiwibGV0X3Zhcl9leHBfY29sb3JpbmdfaWRzIiwibGV0X3Zhcl9leHAiLCJleHBfZGVmJDEyIiwibGV0X3R1cGxlX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfdHVwbGVfZXhwIiwiZXhwX2RlZiQxMyIsImxldF90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyIsImxldF90dXBsZTJfZXhwIiwiZXhwX2RlZiQxNCIsImxldF90dXBsZTNfZXhwX2NvbG9yaW5nX2lkcyIsImxldF90dXBsZTNfZXhwIiwiZXhwX2RlZiQxNSIsImV4cF9ib2R5JDciLCJsZXRfY3RyX2V4cF9jb2xvcmluZ19pZHMiLCJsZXRfY3RyX2V4cCIsImV4cF9kZWYkMTYiLCJsZXRfYXBfZXhwX2NvbG9yaW5nX2lkcyIsImxldF9hcF9leHAiLCJsZXRzX2VtcHR5aG9sZSIsImxldHNfbXV0bGlob2xlIiwibGV0c193aWxkIiwibGV0c19pbnQiLCJsZXRzX2Zsb2F0IiwibGV0c19ib29sIiwibGV0c19zdHIiLCJsZXRzX3RyaXYiLCJsZXRzX2xpc3RsaXQiLCJsZXRzX2xpc3RuaWwiLCJsZXRzX2NvbnMiLCJsZXRzX3ZhciIsImxldHNfdHVwbGUiLCJsZXRzX3R1cGxlMiIsImxldHNfdHVwbGUzIiwibGV0c19jdHIiLCJsZXRzX2FwIiwiaW50X2xpc3QiLCJ0dXBsZV9saXN0IiwibGlzdF9leHAiLCJjb25zMV9leCIsImNvbnMyX2V4IiwiZXhwX2hkIiwiZXhwX3RsIiwiY29uc19leHBfY29sb3JpbmdfaWRzIiwiZXhwX3hzIiwiZXhwX3lzIiwiY29uY2F0X2V4cF9jb2xvcmluZ19pZHMiLCJ4c19pZCIsInlzX2lkIiwibGlzdGxpdHMiLCJsaXN0Y29ucyIsImxpc3Rjb25jYXRzIiwibGlzdGxpdF9wYXQiLCJsaXN0bmlsX3BhdCIsImNvbnNfYmFzZV9wYXRfY29sb3JpbmdfaWRzIiwiY29uc19iYXNlX3BhdCIsInBhdF9mc3QiLCJwYXRfc25kIiwicGF0X3RsJDAiLCJjb25zMl9wYXRfY29sb3JpbmdfaWRzIiwiZnN0X2lkIiwic25kX2lkIiwiY29uczJfcGF0IiwibGlzdGxpdCIsImxpc3RuaWwiLCJjb25zMiIsInR5cF9lbGVtIiwibGlzdF90eXBfY29sb3JpbmdfaWRzIiwiZWxlbV9pZCIsImxpc3RfdHlwIiwibGlzdCIsImV4cGxhbmF0aW9uJDE3IiwiZXhwbGFuYXRpb24kMTgiLCJleHBsYW5hdGlvbiQxOSIsImV4cGxhbmF0aW9uJDIwIiwiZXhwbGFuYXRpb24kMjEiLCJleHBsYW5hdGlvbiQyMiIsImV4cGxhbmF0aW9uJDIzIiwiZXhwbGFuYXRpb24kMjQiLCJleHBsYW5hdGlvbiQyNSIsImV4cGxhbmF0aW9uJDI2IiwiaW50X3VuYXJ5X21pbnVzX2V4IiwiaW50X3BsdXNfZXgiLCJpbnRfbWludXNfZXgiLCJpbnRfdGltZXNfZXgiLCJpbnRfcG93ZXJfZXgiLCJpbnRfZGl2aWRlX2V4IiwiaW50X2x0MV9leCIsImludF9sdDJfZXgiLCJpbnRfbHRlMV9leCIsImludF9sdGUyX2V4IiwiaW50X2x0ZTNfZXgiLCJpbnRfZ3QxX2V4IiwiaW50X2d0Ml9leCIsImludF9ndGUxX2V4IiwiaW50X2d0ZTJfZXgiLCJpbnRfZ3RlM19leCIsImludF9lcTFfZXgiLCJpbnRfZXEyX2V4IiwiZmxvYXRfcGx1c19leCIsImZsb2F0X21pbnVzX2V4IiwiZmxvYXRfdGltZXNfZXgiLCJmbG9hdF9wb3dlcl9leCIsImZsb2F0X2RpdmlkZV9leCIsImZsb2F0X2x0MV9leCIsImZsb2F0X2x0Ml9leCIsImZsb2F0X2x0ZTFfZXgiLCJmbG9hdF9sdGUyX2V4IiwiZmxvYXRfbHRlM19leCIsImZsb2F0X2d0MV9leCIsImZsb2F0X2d0Ml9leCIsImZsb2F0X2d0ZTFfZXgiLCJmbG9hdF9ndGUyX2V4IiwiZmxvYXRfZ3RlM19leCIsImZsb2F0X2VxMV9leCIsImZsb2F0X2VxMl9leCIsImJvb2xfYW5kMV9leCIsImJvb2xfYW5kMl9leCIsImJvb2xfb3IxX2V4IiwiYm9vbF9vcjJfZXgiLCJzdHJfZXExX2V4Iiwic3RyX2VxMl9leCIsInVub3BfZXhwX2NvbG9yaW5nX2lkcyIsInNmX2V4cF9pZCIsImV4cF9pZCIsImJvb2xfdW5hcnlfbm90X2V4cF9jb2xvcmluZ19pZCIsImJvb2xfdW5hcnlfbm90X2V4cCIsImludF91bmFyeV9taW51c19leHBfY29sb3JpbmdfaSIsImludF91bmFyeV9taW51c19leHAiLCJiaW5vcF9leHBfY29sb3JpbmdfaWRzIiwic2ZfbGVmdF9pZCIsInNmX3JpZ2h0X2lkIiwibGVmdF9pZCIsInJpZ2h0X2lkIiwiaW50X3BsdXNfZXhwX2NvbG9yaW5nX2lkcyIsImludF9wbHVzX2V4cCIsImludF9taW51c19leHBfY29sb3JpbmdfaWRzIiwiaW50X21pbnVzX2V4cCIsImV4cDEkMSIsImV4cDIkMSIsImludF90aW1lc19leHBfY29sb3JpbmdfaWRzIiwiaW50X3RpbWVzX2V4cCIsImludF9wb3dlcl9leHBfY29sb3JpbmdfaWRzIiwiaW50X3Bvd2VyX2V4cCIsImV4cDEkMiIsImV4cDIkMiIsImludF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcyIsImludF9kaXZpZGVfZXhwIiwiZXhwMSQzIiwiZXhwMiQzIiwiaW50X2x0X2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfbHRfZXhwIiwiZXhwMSQ0IiwiZXhwMiQ0IiwiaW50X2x0ZV9leHBfY29sb3JpbmdfaWRzIiwiaW50X2x0ZV9leHAiLCJleHAxJDUiLCJleHAyJDUiLCJpbnRfZ3RfZXhwX2NvbG9yaW5nX2lkcyIsImludF9ndF9leHAiLCJleHAxJDYiLCJleHAyJDYiLCJpbnRfZ3RlX2V4cF9jb2xvcmluZ19pZHMiLCJpbnRfZ3RlX2V4cCIsImV4cDEkNyIsImV4cDIkNyIsImludF9lcV9leHBfY29sb3JpbmdfaWRzIiwiaW50X2VxX2V4cCIsImV4cDEkOCIsImV4cDIkOCIsImludF9uZXFfZXhwX2NvbG9yaW5nX2lkcyIsImludF9uZXFfZXhwIiwiZXhwMSQ5IiwiZXhwMiQ5IiwiZmxvYXRfcGx1c19leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfcGx1c19leHAiLCJleHAxJDEwIiwiZXhwMiQxMCIsImZsb2F0X21pbnVzX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9taW51c19leHAiLCJleHAxJDExIiwiZXhwMiQxMSIsImZsb2F0X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF90aW1lc19leHAiLCJmbG9hdF9wb3dlcl9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfcG93ZXJfZXhwIiwiZXhwMSQxMiIsImV4cDIkMTIiLCJmbG9hdF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2RpdmlkZV9leHAiLCJleHAxJDEzIiwiZXhwMiQxMyIsImZsb2F0X2x0X2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9sdF9leHAiLCJleHAxJDE0IiwiZXhwMiQxNCIsImZsb2F0X2x0ZV9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfbHRlX2V4cCIsImV4cDEkMTUiLCJleHAyJDE1IiwiZmxvYXRfZ3RfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X2d0X2V4cCIsImV4cDEkMTYiLCJleHAyJDE2IiwiZmxvYXRfZ3RlX2V4cF9jb2xvcmluZ19pZHMiLCJmbG9hdF9ndGVfZXhwIiwiZXhwMSQxNyIsImV4cDIkMTciLCJmbG9hdF9lcV9leHBfY29sb3JpbmdfaWRzIiwiZmxvYXRfZXFfZXhwIiwiZXhwMSQxOCIsImV4cDIkMTgiLCJmbG9hdF9uZXFfZXhwX2NvbG9yaW5nX2lkcyIsImZsb2F0X25lcV9leHAiLCJleHAxJDE5IiwiZXhwMiQxOSIsImJvb2xfYW5kX2V4cF9jb2xvcmluZ19pZHMiLCJib29sX2FuZF9leHAiLCJleHAxJDIwIiwiZXhwMiQyMCIsImJvb2xfb3JfZXhwX2NvbG9yaW5nX2lkcyIsImJvb2xfb3JfZXhwIiwiZXhwMSQyMSIsImV4cDIkMjEiLCJzdHJfZXFfZXhwX2NvbG9yaW5nX2lkcyIsInN0cl9lcV9leHAiLCJleHAxJDIyIiwiZXhwMiQyMiIsInN0cl9jb25jYXRfZXhwX2NvbG9yaW5nX2lkcyIsInN0cl9jb25jYXRfZXhwIiwiYm9vbF91bl9ub3QiLCJpbnRfdW5fbWludXMiLCJpbnRfcGx1cyIsImludF9taW51cyIsImludF90aW1lcyIsImludF9wb3dlciIsImludF9kaXZpZGUiLCJpbnRfbGVzc190aGFuIiwiaW50X2xlc3NfdGhhbl9lcXVhbCIsImludF9ncmVhdGVyX3RoYW4iLCJpbnRfZ3JlYXRlcl90aGFuX2VxdWFsIiwiaW50X2VxdWFsIiwiaW50X25vdF9lcXVhbCIsImZsb2F0X3BsdXMiLCJmbG9hdF9taW51cyIsImZsb2F0X3RpbWVzIiwiZmxvYXRfcG93ZXIiLCJmbG9hdF9kaXZpZGUiLCJmbG9hdF9sZXNzX3RoYW4iLCJmbG9hdF9sZXNzX3RoYW5fZXF1YWwiLCJmbG9hdF9ncmVhdGVyX3RoYW4iLCJmbG9hdF9ncmVhdGVyX3RoYW5fZXF1YWwiLCJmbG9hdF9lcXVhbCIsImZsb2F0X25vdF9lcXVhbCIsImJvb2xfYW5kIiwiYm9vbF9vciIsInN0cmluZ19lcXVhbCIsInN0cmluZ19jb25jYXQiLCJmZWVkYmFja192aWV3IiwidXBfYWN0aXZlIiwidXBfYWN0aW9uIiwiZG93bl9hY3RpdmUiLCJkb3duX2FjdGlvbiIsImV4cGxhbmF0aW9uX2ZlZWRiYWNrX3ZpZXciLCJleGFtcGxlX2ZlZWRiYWNrX3ZpZXciLCJjb2RlX25vZGUiLCJ0ZXh0IiwiaW5qZWN0JDAiLCJta190cmFuc2xhdGlvbiIsIm9tZCIsImVsZW0iLCJkJDEiLCJub2RlcyIsIm1hcHBpbmckMSIsImJ1bGxldHMiLCJkJDIiLCJtYXBwaW5nJDIiLCJkJDMiLCJpZCQwIiwiaWQkMSIsIm1hcHBpbmckMyIsImlubmVyX21zZyIsIm1rX2V4cGxhbmF0aW9uIiwiY29sb3JfbWFwIiwiZXhwYW5kZXJfZGVjbyIsImRvY3MiLCJvcHRpb25zIiwiZXhwYW5kYWJsZSIsInNwZWNpZmljaXR5X3BvcyIsInNwZWNpZmljaXR5X3N0eWxlIiwiZ2V0X2Nsc3MiLCJzZWdtZW50IiwidXBkYXRlX2dyb3VwX3NlbGVjdGlvbiIsInNwZWNpZmljaXR5X21lbnUiLCJleHBhbmRfYXJyb3dfc3R5bGUiLCJleHBhbmRfYXJyb3ciLCJleHBhbmRhYmxlX2RlY28iLCJleGFtcGxlX3ZpZXciLCJzdWJfaWQiLCJieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQiLCJieXBhc3NfcGFyZW5zX3BhdCIsImJ5cGFzc19wYXJlbnNfZXhwIiwiYnlwYXNzX3BhcmVuc190eXAiLCJ0eXAkMSIsInBwX21lc3NhZ2VfbW9kZSIsInNob3dfbWVzc2FnZV9tb2RlIiwibWVzc2FnZV9tb2RlX29mX3NleHAiLCJzZXhwX29mX21lc3NhZ2VfbW9kZSIsImFyZzFfMDEzIiwicmVzMV8wMTUiLCJtZXNzYWdlX21vZGVfb2ZfeW9qc29uIiwieW9qc29uX29mX21lc3NhZ2VfbW9kZSIsImdldF9kb2MiLCJzaW1wbGUiLCJnZXRfc3BlY2lmaWNpdHlfbGV2ZWwiLCJnZXRfbWVzc2FnZSIsImZvcm1hdCIsImV4cGxhbmF0aW9uX21zZyIsImNvbG9yX21hcCQwIiwiY29kZV9pZCIsInN5bnRhY3RpY19mb3JtX2lkIiwiZXhwYW5kZXJfZGVjbyQwIiwiaGlnaGxpZ2h0cyQwIiwiaGlnaGxpZ2h0X2RlY28iLCJzeW50YWN0aWNfZm9ybV92aWV3IiwiZXhhbXBsZV92aWV3JDAiLCJtZXNzYWdlX3NpbmdsZSIsImdldF9tZXNzYWdlX2V4cCIsImJvZHkiLCJiYXNpYyIsImkkMCIsImYkMCIsInMkMCIsImVsZW1lbnRzIiwicGF0X2lkJDAiLCJib2R5X2lkJDAiLCJlbGVtZW50cyQwIiwicGF0X2lkJDEiLCJib2R5X2lkJDEiLCJiYXNpY190dXBsZSIsImRvY19pZCIsImRvY19pZCQwIiwicGF0MV9pZCQwIiwicGF0Ml9pZCQwIiwiY29uIiwiYm9keSQwIiwiYm9keV9pZCQyIiwidGVybXMkMCIsImJhc2ljJDAiLCJleHAxX2lkJDAiLCJleHAyX2lkJDAiLCJib2R5JDEiLCJkZWYiLCJwYXRfaWQkMiIsImJvZHlfaWQkMyIsImJhc2ljJDEiLCJpJDEiLCJmJDEiLCJzJDEiLCJlbGVtZW50cyQxIiwidiQxIiwidGwkMCIsImhkX2lkJDAiLCJ0bF9pZCQwIiwidmFyJDEiLCJlbGVtZW50cyQyIiwiYmFzaWNfdHVwbGUkMCIsImRvY19pZCQxIiwicGF0MV9pZCQxIiwicGF0Ml9pZCQxIiwiZG9jX2lkJDIiLCJwYXQxX2lkJDIiLCJwYXQyX2lkJDIiLCJwYXQzX2lkJDAiLCJjb24kMCIsImNvbl9pZCQwIiwiYXJnX2lkJDAiLCJib2R5JDIiLCJ0eV9kZWYiLCJ0eV9wYXQiLCJ0cGF0X2lkJDAiLCJkZWZfaWQkMCIsImZuIiwiYXJnX2lkJDEiLCJiYXNpYyQyIiwiY29sb3JpbmdfaWRzIiwidiQyIiwiZiQyIiwiYXJncyIsInhfaWQkMCIsInN1cHBsaWVkX2lkIiwiY29sb3JfZm4iLCJjb2xvcl9zdXBwbGllZCIsImNvbG9yX2RlZmVycmVkIiwiY29sb3JfZGVmZXJyZWQkMCIsImVsc2UkMCIsInRoZW4iLCJjb25kIiwicmlnaHQiLCJleHAxX2lkJDEiLCJleHAyX2lkJDEiLCJib2R5JDMiLCJib2R5X2lkJDQiLCJib2R5JDQiLCJib2R5JDUiLCJib2R5JDYiLCJib2R5JDciLCJ0ZXJtJDEiLCJ0ZXJtJDIiLCJ0bCQxIiwiaGQkMSIsImhkX2lkJDEiLCJ0bF9pZCQxIiwieHMiLCJleHBfaWQkMCIsInJpZ2h0JDAiLCJsZWZ0JDAiLCJvcCQwIiwiY29sb3JpbmdfaWRzJDAiLCJjb2xvcmluZ19pZHMkMSIsImdyb3VwJDEiLCJzY3J1dCIsInRsMiIsImhkMiIsImhkMl9pZCIsInRsMl9pZCIsImVsZW0xX2lkJDAiLCJlbGVtMl9pZCQwIiwidHlwX2luZm8iLCJyZXN1bHQyIiwiYXJnMiIsInJlc3VsdDJfaWQiLCJlbGVtMV9pZCQxIiwiZWxlbTJfaWQkMSIsImVsZW0xX2lkJDIiLCJlbGVtMl9pZCQyIiwiZWxlbTNfaWQkMCIsInRwYXQkMCIsInRib2R5X2lkJDAiLCJpbmZvJDAiLCJzZWN0aW9uIiwic2VjdGlvbl9jbHNzIiwiZ2V0X2NvbG9yX21hcCIsInN5bl9mb3JtIiwiaXNfbWFjIiwicHBfZGlyIiwic2hvd19kaXIiLCJkaXJfb2ZfeW9qc29uIiwieW9qc29uX29mX2RpciIsInBwX2tleSIsInNob3dfa2V5Iiwia2V5X29mX3lvanNvbiIsInlvanNvbl9vZl9rZXkiLCJwcF9zeXMiLCJzaG93X3N5cyIsInN5c19vZl95b2pzb24iLCJ5b2pzb25fb2Zfc3lzIiwicHBfaGVsZCIsInNob3dfaGVsZCIsImhlbGRfb2ZfeW9qc29uIiwieW9qc29uX29mX2hlbGQiLCJrZXlfZmllbGQiLCJzeXNfZmllbGQiLCJzaGlmdF9maWVsZCIsIm1ldGFfZmllbGQiLCJjdHJsX2ZpZWxkIiwiYWx0X2ZpZWxkIiwiYWx0X3ZhbHVlIiwiY3RybF92YWx1ZSIsIm1ldGFfdmFsdWUiLCJzaGlmdF92YWx1ZSIsInN5c192YWx1ZSIsImtleV92YWx1ZSIsInZfYWx0Iiwidl9jdHJsIiwidl9tZXRhIiwidl9zaGlmdCIsInZfc3lzIiwidl9rZXkiLCJrZXlfb2YiLCJkaXIiLCJ0b19oZWxkIiwibW9kaWZpZXJfc3RyaW5nIiwibW9kaWZpZXJzX3N0cmluZyIsImtleV9kaXJfc3RyaW5nIiwidG9fc3RyaW5nIiwiaXNfZGlnaXQiLCJpc19mX2tleSIsImhhbmRsZV9rZXlfZXZlbnQiLCJub3ciLCJzaGlmdCIsInJlc2V0X2hhemVsIiwicmVwYXJzZSIsInNldHRpbmdzX21lbnUiLCJiZW5jaG1hcmsiLCJjb3JlIiwiZXhwb3J0X21lbnUiLCJzbGlkZV9pZHgiLCJzdGF0ZSQwIiwiaW1wb3J0X21lbnUiLCJzdWJtZW51IiwibWVudSIsImhhbmRsZXJzIiwia2V5X2hhbmRsZXIiLCJwYXN0ZWRfdGV4dCIsIm1haW5fdmlldyIsImdsb2JhbHMkMCIsImFlIiwidG9wX2JhciIsImJvdHRvbV9iYXIiLCJzaWRlYmFyIiwic3MiLCJlZGl0b3JzX3ZpZXciLCJzcyQwIiwicmVzdWx0X2tleSQwIiwic3RhdGljcyQxIiwibWVtb2l6ZSIsInRhYmxlIiwiZXJyb3Jfc291cmNlXzAyNiIsInBwX3JlYXNvbiIsInNob3dfcmVhc29uIiwicmVhc29uX29mX3NleHAiLCJzZXhwX29mX3JlYXNvbiIsInJlYXNvbl9vZl95b2pzb24iLCJ5b2pzb25fb2ZfcmVhc29uIiwic2V4cF8wMTMiLCJmaWVsZF9zZXhwc18wMTQiLCJyZWFzb25fMDE1IiwicHJpb3JfYXR0ZW1wdHNfMDE3IiwiZHVwbGljYXRlc18wMTkiLCJleHRyYV8wMjAiLCJzZXhwXzAxMyQwIiwiZmllbGRfc2V4cHNfMDIzIiwiZmllbGRfbmFtZV8wMjEiLCJ0YWlsXzAyOCIsImZpZWxkX3NleHBfMDIyJDIiLCJmaWVsZF9zZXhwXzAyMiIsInhfMDI5IiwiZmllbGRfc2V4cF8wMjIkMCIsImZpZWxkX3NleHBfMDIyJDEiLCJwcmlvcl9hdHRlbXB0c18wMTgiLCJyZWFzb25fMDE2IiwicHJpb3JfYXR0ZW1wdHNfMDMzIiwicmVhc29uXzAzMSIsImFyZ18wMzQiLCJibmRzXzAzMCIsImFyZ18wMzIiLCJibmRzXzAzMCQwIiwicmVhc29uX2ZpZWxkIiwicHJpb3JfYXR0ZW1wdHNfZmllbGQiLCJwcmlvcl9hdHRlbXB0c192YWx1ZSIsInJlYXNvbl92YWx1ZSIsInZfcHJpb3JfYXR0ZW1wdHMiLCJ2X3JlYXNvbiIsInJlYXNvbiIsInByaW9yX2F0dGVtcHRzIiwicmVwbGFjZV9vcl9pbmNyZW1lbnRfYXR0ZW1wdHMiLCJmYWlsZWRfaW5wdXQiLCJidG4iLCJvbl9zdGFydHVwIiwiY3JlYXRlIiwiZnN0ciIsImN4IiwiY3kiLCJzdHJva2Vfd2lkdGgiLCJ2ZWN0b3JfZWZmZWN0IiwiZmlsdGVyIiwic3RvcF9jb2xvciIsInN0b3Bfb3BhY2l0eSIsImlkIiwic2Nyb2xsX3RvX2NhcmV0IiwiZWRpdF9hY3Rpb25fYXBwbGllZCIsImxhc3RfZWRpdF9hY3Rpb24iLCJvbl9zdGFydHVwIiwic2NoZWR1bGVfYWN0aW9uIiwibSIsImVudHJpZXMiLCJmbSIsInN0YXRlIiwiY3JlYXRlIiwibW9kZWwiLCJpbmplY3QiLCJhY3Rpb24iLCJuZXdfbW9kZWwiLCJleGMkMCIsImV4YyIsIm1vZGVsJDAiLCJlcnIiLCJlcnIkMCJdLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0cmZ0aW1lLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3ZpcnR1YWxkb20uY29tcGlsZWQuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vaG9va3MuanMiLCIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytmYWlsLmpzIiwiL2J1aWx0aW4vK3N0ZGxpYi5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytlZmZlY3QuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK2ZzX2Zha2UuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2dyYXBoaWNzLmpzIiwiL2J1aWx0aW4vK3J1bnRpbWVfZXZlbnRzLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rZ2MuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK2JpZ2FycmF5LmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmlnc3RyaW5nYWYvcnVudGltZS5qcyIsIi9idWlsdGluLytiaWdzdHJpbmcuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9iaWdzdHJpbmcvcnVudGltZS5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9iYXNlX2ludGVybmFsaGFzaF90eXBlcy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BhcnNpbmcuanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2pzbGliX2pzX29mX29jYW1sLmpzIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rYXJyYXkuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvcnVudGltZS5qcyIsIi9idWlsdGluLyttZDUuanMiLCIvYnVpbHRpbi8rc3RyLmpzIiwiL2J1aWx0aW4vK2xleGluZy5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3J1bnRpbWUuanMiLCIvYnVpbHRpbi8rZG9tYWluLmpzIiwiL2J1aWx0aW4vK3N5bmMuanMiLCIvYnVpbHRpbi8rd2Vhay5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9qYXZhc2NyaXB0X3Byb2ZpbGluZy9ydW50aW1lLmpzIiwiL2J1aWx0aW4vK3BybmcuanMiLCIvYnVpbHRpbi8renN0ZC5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vanMvb2pzX3J1bnRpbWUuanMiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdGltZV9ub3cvcnVudGltZS5qcyIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2VpdGhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zeXMubWwuaW4iLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2F0b21pYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxMYXp5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2xhenkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc2VxLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYm9vbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3VjaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL21hcnNoYWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW50NjQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvbmF0aXZlaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2xleGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9wYXJzaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9tYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvYnVmZmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3NlbWFwaG9yZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9kb21haW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3ByaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9hcmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZnVuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2RpZ2VzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9iaWdhcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9yYW5kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaGFzaHRibC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2Zvcm1hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zY2FuZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxPTy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxNb2QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvZXBoZW1lcm9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2NvbXBsZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvaW5fY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9vdXRfY2hhbm5lbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9lZmZlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYjAvc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliMC9zZXhwX2dyYW1tYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252X2dyYW1tYXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYjAvc2V4cF9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIwL3NleHBfY29udl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BvbHkwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW1wb3J0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3ByaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N5czAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9hcnJheTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9jaGFyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9saXN0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hhc2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wcHhfY29tcGFyZV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9wcHhfaGFzaF9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvd29yZF9zaXplLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcHJldHR5X3ByaW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9leG4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS93aXRoX3JldHVybi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21vbmFkX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9tb25hZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2FwcGxpY2F0aXZlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYnl0ZXMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY29tcGFyYXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2VpdGhlcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9maWVsZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N0cmluZzAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zb3VyY2VfY29kZV9wb3NpdGlvbjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9saXN0MS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2NvbnRhaW5lcl9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY29udGFpbmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvcmFuZG9tX3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9yYW5kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9hcnJheV9wZXJtdXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZm4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcmRlcmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbmZvLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnZhcmlhbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vcl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NpZ24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY29tcGFyYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hhc2hhYmxlX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pZGVudGlmaWFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JpbmFyeV9zZWFyY2gubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYmluYXJ5X3NlYXJjaGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ibGl0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2V4cGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9laXRoZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbmRleGVkX2NvbnRhaW5lci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9vYmpfYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS91bmlmb3JtX2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvZmxvYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvY2hhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BweF9lbnVtZXJhdGVfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvYnl0ZXNfdHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zdGFnZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ieXRlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hleF9sZXhlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludF9jb252ZXJzaW9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3Bvd19vdmVyZmxvd19ib3VuZHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnRfbWF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3BvcGNvdW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc2lnbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3VjaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvdHlwZV9lcXVhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL29wdGlvbl9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3N0YWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvc291cmNlX2NvZGVfcG9zaXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zaWduX29yX25hbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21heWJlX2JvdW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvbWFwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9zZXRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3JlZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2Uvbm90aGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL25hdGl2ZWludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2xpbmtlZF9xdWV1ZTAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9saW5rZWRfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnQ2NC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2ludDYzX2VtdWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaW50MzIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9pbnQ2My5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2hhc2h0YmxfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2F2bHRyZWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2UvaGFzaF9zZXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9mbG9hdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2JhY2t0cmFjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlL2Jhc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9zdGRsaWIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbG9jYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9sb25naWRlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDE0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvcHByaW50YXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzUwMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzUwMV81MDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzUwMF81MDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzUwMF80MTQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxNF81MDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTRfNDEzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTNfNDE0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEzXzQxMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEyXzQxMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMl80MTEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQxMV80MTIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTFfNDEwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MTBfNDExLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDEwXzQwOS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA5XzQxMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOV80MDgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwOF80MDkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDhfNDA3Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDdfNDA4Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA3XzQwNi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA2XzQwNy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNl80MDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwNV80MDYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9hc3RfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDVfNDA0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvbWlncmF0ZV80MDRfNDA1Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0XzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDA0XzQwMy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL21pZ3JhdGVfNDAzXzQwNC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0bGliL2FzdF80MDIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwM180MDIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9taWdyYXRlXzQwMl80MDMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdGxpYi9rZXl3b3JkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RsaWIvYXN0bGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3Qvc3RkbGliMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L2FzdF9oZWxwZXJfbGl0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L3ZlcnNpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3QvaW1wb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3Qvd2Fybi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L2FzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0L2xvY2F0aW9uX2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sLWNvbXBpbGVyLWxpYnMvc2hhZG93L29jYW1sX3NoYWRvdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvcHJpbnRfZGlmZi9wcHhsaWJfcHJpbnRfZGlmZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZGVyaXZlcnMvcHB4X2Rlcml2ZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi90cmF2ZXJzZV9idWlsdGlucy9wcHhsaWJfdHJhdmVyc2VfYnVpbHRpbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3N0ZHBweC9zdGRwcHgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9idWlsZGVyX2dlbmVyYXRlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvbG9jLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9sb25naWRlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2FzdF9idWlsZGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9jYWxsZXJfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3NwZWxsY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL25hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXN0X3BhdHRlcm5fZ2VuZXJhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfcGF0dGVybi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvYXR0cmlidXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9jb2RlX3BhdGgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2V4cGFuc2lvbl9jb250ZXh0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9hc3RfdHJhdmVyc2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL3NraXBfaGFzaF9iYW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvY29kZV9tYXRjaGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9leHRlbnNpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2NvbnRleHRfZnJlZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvcmVjb25jaWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9xdW90ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL21lcmxpbl9oZWxwZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9sb2NhdGlvbl9jaGVjay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvZHJpdmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9pZ25vcmVfdW51c2VkX3dhcm5pbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4bGliL2Rlcml2aW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweGxpYi9leHBhbnNpb25faGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhsaWIvcHB4bGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9hdHRycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfeW9qc29uX2NvbnYvZXhwYW5kZXIvbGFiZWxfd2l0aF9uYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udi9leHBhbmRlci9wcHhfeW9qc29uX2NvbnZfZXhwYW5kZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWVfXy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC1jb21waWxlci9ydW50aW1lL2pzb29fcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9qc19vZl9vY2FtbF9fLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9kb20ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvdHlwZWRfYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZmlsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9kb21faHRtbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9mb3JtLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3htbEh0dHBSZXF1ZXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3dvcmtlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC93ZWJTb2NrZXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3dlYkdMLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3JlZ2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC91cmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvc3lzX2pzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3Jlc2l6ZU9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL3BlcmZvcm1hbmNlT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvbXV0YXRpb25PYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9qc3RhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvY1NTLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2RvbV9ldmVudHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvanNfb2Zfb2NhbWwvZG9tX3N2Zy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9ldmVudFNvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9qc19vZl9vY2FtbC9maXJlYnVnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2dlb2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2ludGVyc2VjdGlvbk9ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2pzX29mX29jYW1sL2ludGwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vanMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vcHJvbWlzZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX21pbi9sb2cubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvZXpqc19taW4vYmlnSW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2V6anNfbWluL2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9lempzX2lkYi9lempzX2lkYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfc2V4cF9jb252L3J1bnRpbWUtbGliL3BweF9zZXhwX2NvbnZfbGliLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9lbnVtZXJhdGUvcnVudGltZS1saWIvcHB4X2VudW1lcmF0ZV9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2Fzc2VydC9ydW50aW1lLWxpYi9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9iZW5jaC9ydW50aW1lLWxpYi9iZW5jaG1hcmtfYWNjdW11bGF0b3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZS9tZDUvbWQ1X2xpYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9zaGFwZS9iaW5fc2hhcGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2NhbWwvc3RyaW5nLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvbmF0MC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC93cml0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9yZWFkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3NoYXBlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3NpemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvdHlwZV9jbGFzcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9iaW5hYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jpbl9wcm90L3N0ZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaW5fcHJvdC9tZDUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmluX3Byb3QvYmxvYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfaW5saW5lX3Rlc3QvY29uZmlnL2lubGluZV90ZXN0X2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90aW1lX25vdy90aW1lX25vdy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfaW5saW5lX3Rlc3QvcnVudGltZS1saWIvcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zdGRpby9pbl9jaGFubmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3N0ZGlvL291dF9jaGFubmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9tb2R1bGVfdGltZXIvcnVudGltZS9wcHhfbW9kdWxlX3RpbWVyX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlX2VxdWFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZW5hbWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC92YXJpYW50X2FuZF9yZWNvcmRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi90eXBlcmVwL3R5cGVyZXBfb2JqLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZV9nZW5lcmljX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC90eXBlX2dlbmVyaWMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdHlwZXJlcC9tYWtlX3R5cGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3R5cGVyZXAvdHlwZV9hYnN0cmFjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbW1vbi9maWxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0YXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2V4cGVjdC9jb21tb24vZXhwZWN0X3Rlc3RfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29uZmlnX3R5cGVzL2V4cGVjdF90ZXN0X2NvbmZpZ190eXBlcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF9leHBlY3QvY29sbGVjdG9yL2V4cGVjdF90ZXN0X2NvbGxlY3Rvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfZXhwZWN0L2NvbmZpZy9leHBlY3RfdGVzdF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9wb3NpdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9jc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fc3RhdGVfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL3BhcnNlX2Vycm9yX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9wYXJzZV9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2F1dG9tYXRvbl9hY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9vbGRfcGFyc2VyX2NvbnRfc3RhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9hdXRvbWF0b25fdGFibGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvYXV0b21hdG9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvb2Zfc2V4cF9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wYXJzZXhwL2NvbnZfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcGFyc2V4cC9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BhcnNleHAvcGFyc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3NyY19wb3MubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi90eXBlX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvbGV4ZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9wcmVfc2V4cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL3NleHBfd2l0aF9sYXlvdXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc2V4cGxpYi9jb252Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvc2V4cF9ncmFtbWFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3NleHBsaWIvcGF0aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zZXhwbGliL2V4bl9tYWdpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9zcGxpdHRhYmxlX3JhbmRvbS9zcGxpdHRhYmxlX3JhbmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9pbnQ2NC5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL2JpZ2FycmF5X2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svZ2VuZXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29jYW1sL2ludDY0Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iYXNlX3F1aWNrY2hlY2svc2hyaW5rZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL3Rlc3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9xdWlja2NoZWNrL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Jhc2VfcXVpY2tjaGVjay9iYXNlX3F1aWNrY2hlY2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW50X3JlcHIvaW50X3JlcHIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYmFzZV9iaWdzdHJpbmcvYmFzZV9iaWdzdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JsaXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9iYXNlX2Zvcl90ZXN0cy90ZXN0X2JpbmFyeV9zZWFyY2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdmFsaWRhdGUvdmFsaWRhdGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXhwYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpbmFibGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcHJpbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcGVybXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb21wYXJhdG9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcmVzdWx0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc3RhYmxlX3VuaXRfdGVzdF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGVwcmVjYXRlX3BpcGVfYmFuZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL29yZGVyZWRfY29sbGVjdGlvbl9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2FycmF5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc291cmNlX2NvZGVfcG9zaXRpb24wLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Vycm9yLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9xdWlja2NoZWNrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbGlzdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9xdWlja2NoZWNrYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9oYXNoX3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21hcF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWF5YmVfYm91bmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXRfaW50Zi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NldC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvbXBhcmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9saXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdW5pb25fZmluZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RvdWJseV9saW5rZWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXhwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGFzaF9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hhc2hhYmxlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGV4ZHVtcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2lkZW50aWZpYWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0cmluZy5tbGkiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ib29sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYnl0ZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jaGFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvc2lnbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ludDY0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50NjQubWxpIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaW50NjMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS91bml0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbGF6eS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL25hdGl2ZWludC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL25vdGhpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9uZXZlcl9yZXR1cm5zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb3JkZXJpbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9yZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zb3VyY2VfY29kZV9wb3NpdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0ZF9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2J5dGVfdW5pdHMwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmlnc3RyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29yZV9iaW5fcHJvdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL21kNS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpbmFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS96b25lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdmFsaWRhdGVkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdHlwZV9lcXVhbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3VuaXZfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdW5pdF9vZl90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdW5pcXVlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdHlwZV9pbW1lZGlhY3kubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90dXBsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RheV9vZl93ZWVrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGlnaXRfc3RyaW5nX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tb250aC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RhdGUwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb2ZkYXlfaGVscGVycy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0YWJsZV9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2Zsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3BlcmNlbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zcGFuX2hlbHBlcnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zcGFuX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvb2ZkYXlfZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90aW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvdGltZV9mbG9hdDAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS90aW1lX2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NwYW5fbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vZmRheV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3RpbWVfbnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tYWtlX3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2FyZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvbW1hbmRfZW52X3Zhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2ZpbGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvY29tbWFuZF9zaGFwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2hvc3RfYW5kX3BvcnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9waWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9mZGVxdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9mcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zZXRfb25jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2NvbW1hbmQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdHJpbmdfaWQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9zdGFibGVfdW5pdF90ZXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvYmxhbmcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9ieXRlX3VuaXRzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvaGVhcF9ibG9jay5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2djLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbWFrZV9zdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3N0YWJsZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NpZ25hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL3NpZ25fb3JfbmFuLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9vcHRpb25fYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9sYXp5Lm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL25vX3BvbHltb3JwaGljX2NvbXBhcmUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvbGlua2VkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGVyaXZpbmdfaGFzaC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2RlcXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmUvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb3JlX3N5cy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JhZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpZ2J1ZmZlcl9pbnRlcm5hbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2J5dGVzLm1saSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JpZ3N1YnN0cmluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlL2JvdW5kZWRfaW5kZXgubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL3VpX2VmZmVjdC91aV9lZmZlY3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vY3NzX2dlbi9jc3NfdG9rZW5pemVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2Nzc19nZW4vY3NzX3BhcnNlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9jc3NfZ2VuL2Nzc19nZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb2pzL29qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vanMvb2pzX2V4bi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9kb21fZmxvYXQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vZWZmZWN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2hvb2tzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL2pzX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9yYXcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vYXR0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS9nbG9iYWxfbGlzdGVuZXJzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3ZpcnR1YWxfZG9tL25vZGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vdmRvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi92aXJ0dWFsX2RvbS92aXJ0dWFsX2RvbS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC90aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkvdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3R1cGxlX3Bvb2wvdHVwbGVfdHlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC90dXBsZV9wb29sL3R1cGxlX3Bvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvdGltaW5nX3doZWVsL3RpbWluZ193aGVlbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvY29uZmlnL2FzeW5jX2tlcm5lbF9jb25maWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvbW9wdGlvbi9tb3B0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3BhaXJpbmdfaGVhcC9wYWlyaW5nX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvY29yZV9rZXJuZWwvc2V4cF9oaWRkZW5faW5fdGVzdC9zZXhwX2hpZGRlbl9pbl90ZXN0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3VvcHQvdW9wdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC90aHJlYWRfc2FmZV9xdWV1ZS90aHJlYWRfc2FmZV9xdWV1ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvdGltZV9ucy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvcHJpb3JpdHkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3R5cGVzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9tb25pdG9yMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZXhlY3V0aW9uX2NvbnRleHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2V4dGVybmFsX2pvYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvam9iX3Bvb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2pvYi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvam9iX29yX2V2ZW50Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zY2hlZHVsZXIwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9qb2JfcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3N5bmNocm9ub3VzX3RpbWVfc291cmNlMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc2NoZWR1bGVyMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvaXZhcjAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvaXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvbW9uYWRfc2VxdWVuY2UubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkMS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfc3RkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9pdmFyX2ZpbGxlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvdGFpbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvbW9uaXRvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9idmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvc3RhY2tfb3JfY291bnRlci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvdGhyb3R0bGUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL3N5bmNocm9ub3VzX3RpbWVfc291cmNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2N5Y2xlX2hvb2subWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2tlcm5lbF9zY2hlZHVsZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2Nsb2NrX25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbGlzdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfbWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9tZW1vLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9vcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvZGVmZXJyZWRfb3JfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2RlZmVycmVkX3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9kZWZlcnJlZF9zZXF1ZW5jZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvcGlwZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvbXZhci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvbGF6eV9kZWZlcnJlZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9hc3luY19nYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfaW52YXJpYW50X2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfa2VybmVsL2FzeW5jX2ludmFyaWFudC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19rZXJuZWwvYXN5bmNfa2VybmVsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2tlcm5lbC9wZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbl9rZXJuZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIva25vd25fcHJvdG9jb2wubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIvbGlzdF93aXRoX21heF9sZW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIvcHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9uYXQwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvd3JpdGVyX3dpdGhfbGVuZ3RoLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvZGVzY3JpcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9wcm90b2NvbC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3RyYW5zcG9ydF9pbnRmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvdHJhbnNwb3J0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvaW1wbGVtZW50YXRpb25fdHlwZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9vbl9leGNlcHRpb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9pbXBsZW1lbnRhdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3JwY19lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3JwY19yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC91dGlsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvaW1wbGVtZW50YXRpb25zLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX3JwY19rZXJuZWwvY29ubmVjdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3JwYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3ZlcnNpb25lZF9ycGMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfcnBjX2tlcm5lbC9waXBlX3RyYW5zcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL3BlcnNpc3RlbnRfY29ubmVjdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19ycGNfa2VybmVsL2FzeW5jX3JwY19rZXJuZWwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvc3RyaW5nZXh0L3N0cmluZ2V4dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9iaWdzdHJpbmdhZi9iaWdzdHJpbmdhZi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hbmdzdHJvbS9leHBvcnRlZF9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hbmdzdHJvbS9pbnB1dC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hbmdzdHJvbS9wYXJzZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYW5nc3Ryb20vYnVmZmVyaW5nLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FuZ3N0cm9tL2FuZ3N0cm9tLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VyaS91cmkubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdXJpLXNleHAvdXJpX3NleHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvZGVidWcubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvYXN5bmNfanMvcnBjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL3BlcnNpc3RlbnRfY29ubmVjdGlvbi5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9odHRwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2FzeW5jX2pzL2FzeW5jX2pzMC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9hc3luY19qcy9hc3luY19qcy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC9iYWxhbmNlZF9yZWR1Y2VyL2JhbGFuY2VkX3JlZHVjZXIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbi9pbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfYXJyYXkvd2Vha19hcnJheS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9jb3JlX2tlcm5lbC93ZWFrX3BvaW50ZXIvd2Vha19wb2ludGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2NvcmVfa2VybmVsL3dlYWtfaGFzaHRibC93ZWFrX2hhc2h0YmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYmVmb3JlX29yX2FmdGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9jdXRvZmYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvZG90X3VzZXJfaW5mby5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9ub2RlX2lkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3N0YWJpbGl6YXRpb25fbnVtLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL29uX3VwZGF0ZV9oYW5kbGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3JhaXNlZF9leG4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvdHlwZXMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvdmFyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3Vub3JkZXJlZF9hcnJheV9mb2xkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2FsYXJtLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3N0ZXBfZnVuY3Rpb25fbm9kZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9hcnJheV9mb2xkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2F0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2F0X2ludGVydmFscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9iaW5kLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2V4cGVydC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9zY29wZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9mcmVlemUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvaWZfdGhlbl9lbHNlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2pvaW4ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvc25hcHNob3QubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwva2luZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyZW1lbnRhbC9ub2RlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3JlY29tcHV0ZV9oZWFwLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2FkanVzdF9oZWlnaHRzX2hlYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvYWxhcm1fdmFsdWUubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvY29uZmlnLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2ludGVybmFsX29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL29ic2VydmVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL3N0YXRlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2V4cGVydDEubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcmVtZW50YWwvcmVkdWNlX2JhbGFuY2VkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JlbWVudGFsL2luY3JlbWVudGFsLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2Fic3RyYWN0X2FsZ2VicmEvYWJzdHJhY3RfYWxnZWJyYS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX21hcC9pbmNyX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX3NlbGVjdC9pbmNyX3NlbGVjdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9qYXZhc2NyaXB0X3Byb2ZpbGluZy9qYXZhc2NyaXB0X3Byb2ZpbGluZy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS92ZG9tX2ZpbGVfZG93bmxvYWQvdmRvbV9maWxlX2Rvd25sb2FkLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL2luY3JfZG9tL3VpX2luY3IvdWlfaW5jci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9jb21wb25lbnQubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vYXBwX2ludGYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvaW5jcl9kb20vanNfbWlzYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9pbmNyX2RvbS9zdGFydF9hcHAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdmlydHVhbF9kb20vaW5wdXRfd2lkZ2V0cy92ZG9tX2lucHV0X3dpZGdldHMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHRtYXAvcHRtYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIveW9qc29uL2NvZGVjLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3lvanNvbi9jb21tb24ubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIveW9qc29uL2xleGVyX3V0aWxzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3BweF95b2pzb25fY29udl9saWIveW9qc29uX2NvbnYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X3lvanNvbl9jb252X2xpYi95b2pzb25fY29udl9lcnJvci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9wcHhfeW9qc29uX2NvbnZfbGliL3BweF95b2pzb25fY29udl9saWIubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcHB4X2Rlcml2aW5nL3J1bnRpbWUvcHB4X2Rlcml2aW5nX3J1bnRpbWUubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvV2ViLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1R1cGxlVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9UaW1lVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9TdHJpbmdVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL01vbmFkcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9TdGF0ZU1vbmFkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL1Jlc3VsdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9QYWlyVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9PcHRVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL01hcFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvTGlzdFV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvRGlyZWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0xpc3RGcmFtZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9JbnRVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy91dGlsL0ludE1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvdXRpbC9FaXRoZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3V0aWwvQWJhLnJlIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2NhdGVnb3J5Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9jc2V0Lm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL3BtYXJrLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2NvbG9yX21hcC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9ncm91cC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL2VtYWNzLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL3N0ci5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3JlL3BlcmwubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvcmUvcGNyZS5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvVW5pb25GaW5kT3ZlclN0b3JlLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9VbmlvbkZpbmRCYXNpYy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi91bmlvbkZpbmQvU3RvcmVNYXAubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1N0b3JlUmVmLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL3VuaW9uRmluZC9TdG9yZVRyYW5zYWN0aW9uYWxSZWYubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvdW5pb25GaW5kL1N0b3JlVmVjdG9yLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvSWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL09wZXJhdG9ycy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvUHJlY2VkZW5jZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvU29ydC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL05pYi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL0dyb3V0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvVG9rZW4ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9MYWJlbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL05pYnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9Nb2xkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9Gb3JtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvU2Vjb25kYXJ5LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvdGlsZXMvQmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vRWZmZWN0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy9Nb2xkcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1RpbGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9QaWVjZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3RpbGVzL1NrZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS90aWxlcy9TZWdtZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1NpYmxpbmdzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0FuY2VzdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0FuY2VzdG9ycy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9UaW1lLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1RvdWNoZWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9Vbmljb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvTWVhc3VyZWQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvU2VsZWN0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0JhY2twYWNrLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1JlbGF0aXZlcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9aaXBwZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9WYXJNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9WYXJFcnJTdGF0dXMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0NvbnN0cnVjdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9Db25zdHJ1Y3Rvck1hcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0ZpbHRlckFjdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvdGVybS9JZFRhZ2dlZC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0ludmFsaWRPcGVyYXRpb25FcnJvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1N0cnVjdHVyZVNoYXJlU2V4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvVmFyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVmFyQnN0TWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9UZXJtQmFzZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2xhbmcvdGVybS9UUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9DdHgucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9sYW5nL3Rlcm0vVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVmFyQ3R4LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9UZXJtLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvREhFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FdmFsdWF0b3JFcnJvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0J1aWx0aW5zLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvbGFuZy90ZXJtL0Nscy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3N0YXRpY3MvQ29DdHgucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL01vZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL1NlbGYucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9zdGF0aWNzL0luZm8ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9UZXJtUmFuZ2VzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9TdGF0aWNzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvREhQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9DYXN0cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3Byb2cvQ29yZVNldHRpbmdzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbEN0eC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1VuYm94aW5nLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvUGF0dGVybk1hdGNoLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVGVzdFN0YXR1cy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1Rlc3RNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9UcmFuc2l0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvVmFsdWVDaGVja2VyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL2FjdGlvbi9BY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvQXNzaXN0YW50RXhwYW5kZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvU3VnZ2VzdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2Fzc2lzdGFudC9Bc3Npc3RhbnRDdHgucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvQXNzaXN0YW50Rm9ybXMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9EZWx0YS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL1Rlcm1NYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9UaWxlTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvc3RhdGljcy9NYWtlVGVybS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9FZGl0b3IucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FbGFib3JhdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yU3RhdHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9keW5hbWljcy9FdmFsdWF0b3JTdGF0ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0V2YWx1YXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ByZXR0eS9QcmV0dHlTZWdtZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJldHR5L0V4cFRvU2VnbWVudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vSW5kaWNhdGVkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJvZy9Qcm9ncmFtUmVzdWx0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJvZy9JbnRlcmZhY2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9hc3Npc3RhbnQvVHlEaS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1Rlc3RSZXN1bHRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvU3Vic3RpdHV0aW9uLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJvZy9DYWNoZWRTdGF0aWNzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRXZhbHVhdG9yU3RlcC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL0ZpbHRlckVudmlyb25tZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvZHluYW1pY3MvRmlsdGVyTWF0Y2hlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL2R5bmFtaWNzL1N0ZXBwZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL01vdmUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL1NlbGVjdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vSW5zZXJ0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL1ByaW50ZXIucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvUGVyc2lzdGVudFppcHBlci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2xjb3JlL3ppcHBlci9hY3Rpb24vRGVzdHJ1Y3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvYWN0aW9uL1BlcmZvcm0ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvT3JpZW50YXRpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9wcm9nL01vZGVsUmVzdWx0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvcHJvZy9Nb2RlbFJlc3VsdHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS96aXBwZXIvSW5jb21wbGV0ZUJpZGVsaW0ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsY29yZS9Db2RlU3RyaW5nLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbGNvcmUvemlwcGVyL0VkaXRvclV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Vbmljb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvUG9zTWFwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTWVhc3VyZWRQb3NpdGlvbi5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xheW91dC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvcHJldHR5L0xpc3RVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTWVhc3VyZWRMYXlvdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Db3N0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvRG9jLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9wcmV0dHkvTGF5b3V0T2ZEb2MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL3ByZXR0eS9Cb3gucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsc2Nob29sL1N5bnRheFRlc3QucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsc2Nob29sL0V4ZXJjaXNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9HcmFkaW5nLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHNjaG9vbC9HcmFkZVByZWx1ZGUucmUiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF91dGlscy5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX3JlcHJlc2VudGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfYmFja2VuZC5tbCIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vbWQvb21kX2xleGVyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfcGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWRfbGV4ZXJfZnMubWwiLCIvaG9tZS9ydW5uZXIvLm9wYW0vb2NhbWwtYmFzZS1jb21waWxlci41LjAuMC9saWIvb21kL29tZF9odG1sLm1sIiwiL2hvbWUvcnVubmVyLy5vcGFtL29jYW1sLWJhc2UtY29tcGlsZXIuNS4wLjAvbGliL29tZC9vbWQubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3V0aWwvV29ya2VyU2VydmVyLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1dvcmtlckNsaWVudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9XaWRnZXRzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1dlYWtNYXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4YW1wbGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4cGxhaW5UaGlzRm9ybS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9WYXJUUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Db2xvclN0ZXBzLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9FeGVyY2lzZVV0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9FeF9PZGRseVJlY3Vyc2l2ZV9wcm9tcHQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0V4ZXJjaXNlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leGVyY2lzZXMvRXhfT2RkbHlSZWN1cnNpdmUubWwiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4ZXJjaXNlcy9FeF9SZWN1cnNpdmVGaWJvbmFjY2lfcHJvbXB0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leGVyY2lzZXMvRXhfUmVjdXJzaXZlRmlib25hY2NpLm1sIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9FeGVyY2lzZVNldHRpbmdzX2Jhc2UucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4cGxhaW5UaGlzTW9kZWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2dsb2JhbHMvU2V0dGluZ3MucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1NjcmF0Y2hTbGlkZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvUGVyc2lzdGVudERhdGEucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0VkaXRvcnMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL0V4cGxhaW5UaGlzVXBkYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Gb250TWV0cmljcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Kc1V0aWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL1N0b3JlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9nbG9iYWxzL0dsb2JhbHMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL01vZGVsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9VcGRhdGVBY3Rpb24ucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvYXNzaXN0YW50L1VwZGF0ZUFzc2lzdGFudC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvQmVuY2htYXJrLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9EZWJ1Z0NvbnNvbGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0xvZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRXhwb3J0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TdGF0ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvVXBkYXRlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi91dGlsL1VuaWNvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvVHlwZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UeXBGdW5jdGlvbkV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UeXBBcHBFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHlwQW5uUGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1R5QWxpYXNFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVHVwbGVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvVGVzdFZpZXcucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvVGVzdEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbFR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9UZXJtaW5hbEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9TZWdtZW50VHJlZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9TdmdVdGlsLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL1N1bVR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9Ob2RlVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvRGVjVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvRGlhZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvRW1wdHlIb2xlRGVjLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0NvZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL0JhY2twYWNrVmlldy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9kZWMvQ2FyZXREZWMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvZGVjL0NhcmV0UG9zRGVjLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2RlYy9QaWVjZURlYy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9EZWNvLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L2VkaXRvci9SZWFkT25seUVkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvQ29kZUVkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvU3RlcHBlckVkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvU2xpZGVDb250ZW50LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0ljb25zLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L1NldHRpbmdzTW9kYWwucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvU2VxRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9TY3JhdGNoU2xpZGVzSW5pdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvQ2VsbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvQ2VsbFJlc3VsdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9lZGl0b3IvQ2VsbEVkaXRvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9TY3JhdGNoTW9kZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9SZWNUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvUGlwZWxpbmVFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvQXBwRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0FwcFBhdC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9BcnJvd1R5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9DYXNlRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0tpbmQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvQ3R4SW5zcGVjdG9yLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L0N1cnNvckluc3BlY3Rvci5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9FZGl0b3JNb2RlVmlldy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvR3JhZGluZy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdmlldy9FeGVyY2lzZU1vZGUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvRmlsdGVyRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0ZpeEZFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvRm9yYWxsVHlwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0Z1bmN0aW9uRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0hvbGVUZW1wbGF0ZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9Ib2xlRXhwLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0hvbGVQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZVRQYXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvSG9sZVR5cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9JZkV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9MZXRFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvTGlzdEV4cC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvZXhwbGFpbnRoaXMvZGF0YS9MaXN0UGF0LnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leHBsYWludGhpcy9kYXRhL0xpc3RUeXAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL2V4cGxhaW50aGlzL2RhdGEvT3BFeHAucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRXhwbGFpblRoaXMucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRm9udFNwZWNpbWVuLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Pcy5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9LZXkucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL0tleWJvYXJkLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi92aWV3L051dE1lbnUucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvUGFnZS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9NZW1vLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9Mb2dFbnRyeS5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvRmFpbGVkSW5wdXQucmUiLCIvd29ya3NwYWNlX3Jvb3Qvc3JjL2hhejNsd2ViL3ZpZXcvRGVidWdNb2RlLnJlIiwiL3dvcmtzcGFjZV9yb290L3NyYy9oYXozbHdlYi9leGVyY2lzZXMvQmxhbmtUZW1wbGF0ZS5tbCIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvdXRpbC9BdHRyVXRpbC5yZSIsIi93b3Jrc3BhY2Vfcm9vdC9zcmMvaGF6M2x3ZWIvTWFpbi5yZSIsIi9ob21lL3J1bm5lci8ub3BhbS9vY2FtbC1iYXNlLWNvbXBpbGVyLjUuMC4wL2xpYi9vY2FtbC9zdGRfZXhpdC5tbCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0EsQzs7Rzs7O1E7Uzs7O0c7STtJO0k7RztFOzs7O0dBV0MsQ0FBQztNQUVFO09BQUlBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCQUMsc0JBQXNCQyxTQUFTRjtPQUMvQkcsb0JBQW9CQztPQUNwQkM7TUFHSixHQUFJRixXQUFZO09BQ1pFLFlBQVlELGlCQUFpQkU7T0FDN0JELHFCQUFxQkU7T0FDckIsR0FBR0MsbUJBQW1CQSw2QkFBNkJGOztVQUdsRDtPQUVERDtRQUFZRyxxQkFBc0IsV0FBYSxPQUFPQyxRQUFRLElBQUdDLGNBQS9CO09BQ2xDTCxxQkFBcUJDOztNQUl6QjtPQUFJSyxXQUFXUjtPQUNYUztNQUNKLFNBQVNDLG1CQUFtQkMsTUFBTUM7T0FDOUIsS0FBS0gscUJBQXFCRSxNQUFPO1FBQzdCO2lCQUFXRSxr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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lLcEVFaUYsVUFBVUMsR0FBSSxPQUFKQSxFQUFLO1lBQ2ZDLFVBQVVELEdBQUksT0FBSkEsRUFBSztZQVdmRSxRQUFRQyxLQUFFQztJQUNaLEdBRFVELFFBQUVDLEtBRVA7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QUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQztPQUFBQzs7OztPQTBKRWlrRztPQUNBQztPQUVBQztPQUlBQztPQUlDQztPQVVEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQU1BQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUdBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVBQztPQVVBQztPQUlBQztPQUlDQztPQVNEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUVDQztPQVNEQztPQUlBQztPQUlBQztPQVVBQztPQUlBQztPQUlDQztPQVVEQztPQUNBQztPQUVBQztPQUlBQztPQUlDQztPQVFEQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUNBQztPQUNBQztPQUNDQztPQU1EQztPQUNBQztPQUVDQztPQUtBQztPQUtEQztPQUNBQztPQUNDQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0EwQ0RobUc7T0FZQTJiO09BQ0FFO09BT0FuWDtPQUNBRTtPQUNBcWhHO09BSUFDOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTtJLE07SSxNO0ksc0I7SSxNO0ksTTtJLE07SSxvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE07SyxXO0s7O1EsUTtzQztRO087SztPOztLLE07SyxNO0ssWTtLLE07SyxNO0ssUTtLLE07OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJLE87Ozs7O0k7SyxJLE87Ozs7Ozs7OztHLEk7OztJOzs7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLHNCO0cscUIsc0I7RyxzQixzQjtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJOzt5QixPOzt5QixPOzt5QixPOzs7Ozs7SyxPOztJO0ksTztHOztJLFk7Z0I7O0k7Ozs7MkI7bUM7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQixnQjtJLE87Rzs7SSxVO0k7SztlOzs7aUI7OzttQjttQjtJO0k7SSxPO0c7O0ksVTs7SztLOztPLFc7TSxJLEksMkI7Ozs7OztZO1k7Vzs2QjtTLE87UTtTLE07Uzs7OztZOztZOztZOztRLE87OztzQyxPO007TSxJOztJO0k7Rzs7STs7OztLO0ksTzs7O0ksSSxnQjs7OzJCLE87OztJO0ssaUI7SztPOzs7OztLO0s7Ozs7O007Ozs7OztJO0c7OztLLFk7O0s7STtJLFU7SSxPLFc7Rzs7STs7SyxnRDtLOzRDOztLLE07STtJLFk7SSxJLFU7Ozs7O0s7O0k7Rzs7O0ssWTs7Ozt5Qzs7Szs7UTtLLE87STtJO0s7TSxNO00sTTs7OzsyQjs7O2M7STs7OztLO087Ozs7dUM7SSxXO0c7O0k7Z0I7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SyxPO0s7eUIsTSw0QztJLE87Rzs2QixPLG1DOztJOzs7a0MsTztJOzs7eUMsTztJLEksYTs7Szs7TSxVO0ssSTs7TTs7TyxZO007O00sTTs7Szs7SyxNOztJLEksdUI7O0s7O00sYztLOztLLE07O0c7O0ksUztJOztJLE07Rzs7eUIsbUQ7SSxPO0c7Rzt5QixrQixvQjtJLGE7STt5Qix3QjtJLE87Rzs7SSxTO0ksNEI7SSxXO0c7O0ksWTtJLGtDLE07STs7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7Rzs7SSxZOztJLE87OztJO0ssTTs7bUI7STs7Szs7O0k7Rzs7STtJOzs7Z0I7SyxnQyxJO0ssWTs7O0c7O0k7STs7O087Ozs7O1EsTztPLFc7Ozs7O3FCO0s7O0c7O0k7STtnQixXOzs7TSxNO0s7OztNLEk7TTs7Ozs7Rzs7STtJO2UsVzs7aUI7Syw4Qjs7Rzs7STtJO21CLFc7O00sTTtLOzs7TTtNOzs7OztHOztJO0k7OztnQjtLLGtDLE87SyxXOzs7Rzs7STtJOzs7TSxHO087UTs7Ozs7OztLLFc7O0c7O0ksUSxPOztJLE87RztHOztJOztLOztJO2lCO0ssRyxxQztLLEk7O0c7O0k7STtpQjtLLEssNEI7SyxJOztHOztJO0s7OztTLFk7O1M7UTtNLFc7Szs7Ozs0Qjs7O0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7Ozs7TSxXLGM7TTs7Ozs7Rzs0QixPLHNDOztJLEs7SyxHLDRCO0ssTTs7O0k7aUIsTTtLOzs7TSxXO0ssRyxnQzs7O0c7O0k7SztLO007TyxPO08sTTtNLEcsNkI7TSxLO087TyxPOzs7O0k7O0k7aUIsTTtLOzs7TSxvQjtLLEcsZ0M7OztHOztJLEksUTtJO2lCLE07Szs7O00sVztNLFk7SyxHLGlDO0ssRyxnQzs7O0c7O0k7SztNLE87TSxjO0s7Ozs7Z0M7OztHOztJLDBDO0s7O1E7SyxPOztJO0c7Ozs7STs7Yzs7Rzs7SSxVOztLO0ssTztJO0k7STtHOztJLFc7STtLLFE7SyxZO0s7O0c7O0ksSSxPO0k7Z0I7SztNLE87TSxJO0ssWSxNO0s7OztHOztJO0ssSTtLLE87STtLLFE7SyxZLE87Szs7Rzs7STtJO0ssTztLLFc7SztPOzs7SSxJLFU7OztLO0s7SyxNOztJO0ksSSxrRDs7O0s7SyxNOztHOztJLGM7eUIsTyx1QjtJLCtCLDZCO0k7aUMsTyxnQzs7O0c7b0Isd0M7O0k7Rzs7SSxvQjtHOztJLFk7Rzs7STs7Ozs7Ozs7Rzs7STs7Ozs7Ozs7Ozs7OztHOztJLDhDO0ssTzttQixzQjtJLE87Rzs7STtJLHFDO0c7O0k7SSxxQztHOztJOztHOztJO0kscUM7Rzs7STtLLFU7SyxXO0k7SztNLE07TSxhOzs7TTtRO1c7dUI7O0s7Ozs7NEI7OztHOztJO0k7eUM7O00sTTtLLFc7UTtNLEk7Ozs7Rzs7STtJO0ssSTs7OztNO087Uzs7Ozs7TyxPO00sTzs7SztNLFM7c0I7TTs7OztHOztJO0k7dUM7SyxXOzs7Ozs7O007Ozs7O087O1MsVztRLFc7Ozs7O1EsSTs7OztNO087TyxZOzs7OztLLEk7O0c7dUIsd0IsUzs7SSxZO2dCOzs7O0c7MEM7MEM7MEM7MEM7MEM7MEM7MEM7O0k7O0ssTTtLO0s7Ozs7TSxXO007TTs7Ozs7STtLO0ssTztJO0k7Rzs7STs7SztLLE87O0c7O0k7OztJLE87Rzs7STs7O0ksTztHOztJLHdCOzs7O007TTs7Ozs7O0c7O0ksd0I7Ozs7TSx5QjtNOzs7Ozs7Rzs7STs7OztNO007TTs7Ozs7O0c7O0k7O0s7YztLOzs7STtJLE87Rzs7STtJO0k7RztHOzs7Ozs7Ozs7Ozs7O0k7OztLLE87SyxXO2tCLHFDO0k7UztJO0k7Ozs7TTtNOzs7OztJOzs7O007TTs7Ozs7STs7OztNO08sTztPLE87Ozs7UTtTLE87Z0I7UztTO1M7Uzs7Ozs7UztTOztTOztvQjtTLE87Ozs7VSxXO2E7VyxXO1csRztZO2E7YTthOzs7OztzQjs7Ozs7OztRO1E7Ozs7O007Ozs7O0k7OztHOztJOzs7OzswQixPLHFDO0k7SyxRO0s7STtLO2lCO0sscUI7Ozs7O0ksTztHOztJO0ksYztrQjtJO0s7Ozs7SyxPO0ksTztHOztJO0ssTTtLO087Ozs7O0ksVztHOztJOzs7Ozs7USxXOztRLFc7Z0IsVzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O0ssa0I7SyxPOztJLG9CO0ksTztHOztJOztNO08sTztjOzs7Ozs7O0ksVztJLE87RztHO0k7STs4QixxQjswQiw0Qjs7STs7Ozs7O3VCLE07O0k7RztHOztJO0ssWTs7OztJO0s7TTs7TTs7Ozs2QixPOzs7O0k7O0s7OztTO1U7Vzs7VTs7OztpQyxPOzs7Ozs7O0k7STtJO0c7RztJO0k7Ozs7O0c7STs7TyxJLEksTzs7Ozs7O08sVztPO1E7UyxPO1MsYzs7O087O087ZTs7Rzs7STs7SztLOzs7Ozs7O0k7RztHOztJO0ssSTs7Szs7OztnQjtPLFc7Tzs7TTs7Ozs7SSxPO0c7O0k7O0ssTTs7O0k7OztNLFE7O087TztROzs7Ozs7Ozs7O087O1EsZTs7Ozs7Ozs7Ozs7TztPO1E7Ozs7OztNOzs7O1E7OztVO1E7Ozs7Ozs7Ozs7OztLLE87O0c7O0k7STs7SztLLE8sZ0M7STtJO0ssbUI7SyxXOzs7Ozs7TztROzs7Ozs7Ozs7O0k7O0s7OEI7bUQ7SyxPOzs7Ozs7OztJO0k7SSxPOzs7STtJLE87Rzs7SSxZO2dCLE87O0k7SSxPO0c7RyxJLGlCOztJOzs7SyxJLGtCOzs7Ozs7SyxZOzs7Ozs4Qjs7O0c7O0ksZ0I7STtnQjs7O0ssZTtLOzs7O00sTztNLE87SyxXO0k7SSxPO0c7O0ksWTtJO0c7RztzQixpQjtHO0ksTTtJLE07c0IsaUI7RztJLE07SSxNO0ksWTs7STs7Ozs7O3lCOzBEOzBEOzBEOzBEOzs7Ozs7OzBEOzsyRDsyRDsyRDsyRDs7Ozs7TTs7Szs7STtHOztJOzs7UTs7UTs7UTs7UTs7UTs7UTs7UTtnQjs7Ozs7Ozs7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7OztHOztJO0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7OztLLHVCO0ssTzs7SSx5QjtJLE87RztHLEk7O0k7Ozs7Ozs7OztJOztPOztJLE87Rzs7STtLO007UTs7O1M7VTtVLE87UyxPO2tCO1E7SyxPOzs7O0k7SyxhO0s7TztLO2dCOztJLEksYztnQjtJO0c7O0ksYTtJLEk7Ozs7O0ksYTtHOztJLHlDO0ksTzs7O0k7OztROztROztROztROztROztROztRO2dCOzs7O0ssRyx1QztLO007TSxNO007UTs7Ozs7SyxPOzs7SSxHLHlDO0k7SztLLFE7SztPOzs7OztJLE87Rzs7STtJO0s7O1E7VTtLOztlLE07O0c7O0k7Szs7OztNO007TTtNO0ssTzs7STs7Ozs7O0s7SztJLE87Rzs7O0ksRztLO0k7Ozs7STs2QztJOztLLE87Szt5Qjs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztNLEk7SyxpQjs7OztLLE87OztLOzs7TSxNO00sVTtLLE87OztLOzs7OztNLE07Szs7OztLLE87O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TSxPO0s7SyxPO0k7O0ssTzs7O2U7dUM7OztlLE87Ozs7O21COzs7Ozs7Ozs7OzBCO2UsTztjOzs7STs7SyxPOzs7ZTs7NEI7ZTtjOzs7STtnQywyQjs7O007OztRLFc7Ozs7OztNO0s7SyxPO0k7O0ssSSxVLHdCOzs7NEI7OztJOztLLFU7O007TSxXO0s7SyxlO0k7OztNLE87OztnQixPOztlOztLO0ssTztJOzs7SztLLE87O3NDLE8sNkI7OztJOztLLFU7dUI7SyxPO0k7OzBCLE8sbUIsdUI7SyxPO0k7O0ssTzs7Z0MsTyx5Qjs7O0k7O0ssTzs7O2U7O2dCLEksWTs7Ozs7MkI7OzswQjs7ZSxPO2M7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTOzt1QixPLCtDOztTLE87UTs7O1UsTzs7O29CLE87bUI7O1M7UyxPO1E7O1MsTztROztTOztvQixPO1MsYyxNOzhCLE8sd0I7UyxPO1E7O1MsVTtTLGU7UTtRO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztTLE87OzttQjtrQjs7O1E7O1MsUTs7VTtVLE87UztTO1M7UTsyQixpRDs7UyxRLG1COzRCLE8sMkI7UztTO1E7O1MsSSxVLDRCOzs7O1UsUTtVO1U7O1E7O1M7UyxjO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixpQjswQixPLHlDO29CLFM7d0IsdUI7Ozs7Ozs7Ozs7Ozs7OztJO0k7SSxPO0c7eUIsTyw4QjtHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SSwwQjtJLE87RztzQixTO0c7O0ksOEI7SSxPO0c7RztJO00sdUI7STtNO1E7O0k7VztjOztJLE87Rzt3QixTOzs0QixPLHlDO3NCLE8sa0M7MEIsc0I7Rzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzhCLHlDOztTO1E7O1M7OztVLE07UztROztTO1E7O1M7UTs7UyxVO1M7UTtROzs7O1MsVTtTLGtCO1M7VSxTLFc7OztVLEksYTs7OztXLEksWTs7O1ksTTs7Vzs7VSxhOzs7WSxNOzs7OztXLFU7VyxJLFk7OztZLE07O1c7O2M7Ozs7O1csSSxjOzs7WSxNOztXOztVLE07UztTLGE7OztROztTLEk7Ozs7O1U7O1csTTtXLE07VTtVLE87O1M7UTs7UyxJOzs7Ozs7VTs7UztROztTO1UsYztVOzs7Ozs7MEM7VTtXLGM7Vzs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7STs7Ozs7NEIsMEI7O0k7SyxNOzs7Szs7ZTs7Ozs7O0k7SSxPO0c7O3lCLE8seUI7STtJO0ssTTs7STtHOztJO0k7SyxNOztJO0c7O0k7O0s7O00sZ0I7OztLO0k7SSxZOztJO0c7O0k7SyxNOzs7Szs7O0k7STs7eUIsaUM7Szs7O0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7SSxRO0ksYzs7Ozs7Ozs7b0IsWTt1QixZOztJLE87a0I7O0c7O0ksVzs7SyxPLGtCO21COztJO0ksTztHOztJO0s7TSxNO00sTTs7Ozs7Ozs7SSxpQjtHO0csVzs7SSxNO0c7Rzs7SSxtQjtLLE07STtJOzs7O0c7dUIsMkM7O0k7Rzs7STs7SyxTO0s7SyxVO0ssTztJO0ksTztHOztJO2M7STs7O0c7O0ksbUI7SyxNOztvQixPLHdDO0k7SyxXO2lCOzs7OztVOzs7OztHOztJLG1CO0ssTTs7O0ssUztZO007SztNLFE7TSxVOztlOztJO0k7OztHO3lCLHdCOztJLG1CO0ssTTtJO2M7O0c7O0ksTyxrQjtHO0csYTs7STs7OztjO3VCLG1COztHO0csZ0I7Rzs7Ozs7Ozs7OztLLFc7O007TTtLO0s7Szs7SSxZO2dCLE07O0k7OztJLG1CO0ssTTtJOzs7O2lCOzs7TSxJLDBCOztLOzs7OztNLE87OztHOztJLG1CO0ssTTtJOzs7O087USxNO2M7OztNLEksMEI7O0s7Ozs7O0ssZTtLLE87O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLHNCO0ksVTtJLE87Rzs7STtHO0c7STtJOztJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7O0k7RztHOztJO0k7VTtJO1U7SSx1QjtJLHdCO0ksdUI7SSx5QjtJLDJCO0ksMkI7SSw2QjtJLHdCO0ksdUI7STtJO0k7STtJOzs7Ozs7Ozs7O0k7O0k7Szs7OztLOztlOzs7SyxVO2M7OztJO0s7Ozs7Szs7ZTs7O0ssVTtjOzs7STtJO0k7STtJO0k7STtJO0k7STtJOzs7O0c7RztJO0k7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7OztJO0k7O0ksRzs7SSxNO0c7O0ksVTtJO0s7O00sb0I7TSxtQjtNOzs7Ozs7O0c7RyxJLHlCLG1COztJOztPOztPO2U7O0c7RztJOzs7UTs7Ozs7O087Ozs7STt1QiwwQztHO0k7OztROzs7Tzs7OztJO3lCLE8sc0M7O0k7O087O087O087ZTs7Rzs7STs7Ozs7Ozs7O0c7O0k7O087O087O087ZTs7Rzt1QyxTO3FDLDJCOztJO0s7O007TTtLOztJO0ssTSxXO0ssTSxXO0ksTyxXO0c7O0k7SSxPO0c7O0ksWSxPO0k7SSxPO0c7O0k7SyxNO0ssVTtJO0s7OztTO1U7VSxROzs7O2U7bUI7O1M7UTtNLEs7SztNOztPO08sUTs7Ozs7Vzs7Ozs7OztHO0c7O0k7eUM7O2dCO0kscUI7STtHO0c7O0k7Rzs7STtJLGtCO0k7SyxlO0s7OztHO0csSSxtQjs7STs7O0c7OztLO0s7TSxXO007TTtNLFU7TTs7Ozs7b0I7O087OztJO0ksTztHOztJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLE87SztLO0ksVztHO0c7MEIsUSw0Qjs7STs7Ozs7Rzs0QixPLG9DO0csSSw4Qjs7STs7O0c7O0k7SSxJLCtCOzs7O0ssSSxVOzs7O007TyxhOzs7Ozs7Szs7OztLO00sZTtNOzs7O0k7O0s7OztTO1M7VTtVOztTLE87Ozs7O1E7SSxPO0c7O0k7K0MsTyxpQjtHOztJO0ssTztJOztLO0ssTztJOztLLE87STtJO0c7a0MsdUM7RztJO0s7SyxZO0ssUTtLLGU7O0ssa0I7SSxPO0c7Rzs7SSxJLCtCOztnQztLLG9CO0ssVzs7Rzs7O0s7TTs7O3dCO007SyxPO0k7O0s7O007UTs7Ozs7TyxxQjtPLE87Ozs7Ozs7SztJO0k7Rzs7STswQix5QjtJLFE7O0s7O0k7SSxXOzs7O0s7TTtNO007OztTLG1COzs7UTtLOzs7UTs7STs7Szs7Ozs7O007Ozs7a0I7TSxROzs7TTs7SztJO0ksTztHOztJLGM7Ozs7OztJO0s7Szs7O0s7OztLLHdCLGtCLHNCOztNOzsrQjs7OzsrQjs7O007TTs7NkI7SztLLFc7STtJOzs7OzswQzs7O0ksVztJOzs7TTtNLE87OztlLDZCO0s7SztLLE87O0k7STtLOztNLGUsaUI7TTs7VyxpQjtXO0s7O0ksYTs7OztNOztPO007TyxnQztNO0s7SztLLE87O0k7Ozs7TTtLO0s7TSxNLFc7TSxROzs7cUIsUztLLEc7TSxVO007O0ssVTt1QjtLLE87O3NCO0ksTztHO3FCO0c7SSxlO0ksTTtJLGM7cUI7RztJLGM7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJLEksSSxNOzs7Ozs7STtNO1Msc0M7SztJO0c7O0ksVztJO0c7O0k7aUI7Rzs7STtpQjtHOztJO0k7SSxPO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SztLO0s7O0ksVTs7SyxNO0k7RztpQyxrQixTOztvQixPLGdDO0k7SyxRO0ssUztLLEk7O2U7Szs7VTs7Szs7STtLLFE7OztvQixPLHlDO0k7STt3QixPLG1DO0k7SSxPO0c7O29CLE8sZ0M7SSxZO29CLE8sOEI7SSxZO0k7Rzs7SSxZOztJLE87Rzs7STs7O1E7TTtPO1E7VTs7O087TztRLE07USxNOzs7Ozs7Ozs7Ozs7TTs4Qjs7Ozs7O0k7SyxNO0ssTTtLLE07SyxNO0ssOEI7SyxNO0ssTTs7O0sscUI7Ozs7OEI7Ozs7Ozs7OztROzs7O0k7OztTOzs7Ozs7Ozs7Ozs7O0ksRztLLFE7SztNLFk7TSxHLDRCO087TTtPLFU7Tzs7O2dCLDJCOztJO0c7O0k7SSxxQjtJLG9COztLO0ssZTs7O0ssTTtJO0k7YTs7Rzs7O0s7Ozs7Ozs7VyxLLDZDO1c7WTtZO2M7Ozs7O1ksTTtZLFU7VyxJLFUsbUM7OztrQzs7O1U7bUIsVzs7TTs7O1U7OzthO3VCO1c7WTtjOzs7Ozs4Qix5QjtXLE87O1U7UztPO3FCLFc7TywrQjtPLE07O1M7OztNO087TyxNO08sTTtPLDhCO08sTTs7Ozs7Ozs7Ozs7OztVLE07Ozs7Uzs7O0s7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHO2dDLG9DO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLEk7O0k7O0ssTztJO0ksTztHO0c7OEIsTyxvQzs7STs7SyxNOzs7Tyx1Qiw2QztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7RztJOzs7UTtROzs7STs7SSxPO0c7MEIsa0I7dUIseUI7O0k7O0s7TTs7OztJO0c7O0k7O0s7TTs7OztJO0c7O0k7STtJLEksUSxrQixlOzs7SztLLE07O0c7O0k7SSw0QjtHOztJO0s7TTs7OztnQjs7O0k7Ozs7Ozs7O0c7O0k7O0ssWTs7TSxNOztLO00sUTtNLFU7OztPO1E7MkIsb0IsMEI7TyxrQixPOztPOzs7Ozs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOzs7O1U7Vzs7O1csc0I7VTtXLE87O1U7O1M7VTs7O1Usc0I7UyxrQixPOztTOztLLE07O0k7O0s7Szs7TyxZOzs7Ozs7VTs7Ozs7Ozs7Ozs7Ozs7OztPLFMsSTs7O08sTTs7TSxTO007TSxrQixPOztNOztJO3FCO0k7Rzs7SSxJLHlCO0k7Rzs7STtLLFE7SyxTOzs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O0s7TSxnQyxLO007Ozs7TTtPO08sc0I7TSxPOztLOzs7O00sTzs7OztPO087Ozs7OztJOztLO00sTTs7SztLO007TTsyQztjLG9DO087UTtnQzs7OztLOztNO007O1EsTztPLFk7Ozs7Ozs7O1M7VTtVLG1COzs7Ozs7O1UsSTtVO1csTzs7O1U7Ozs7OztZLEk7WTthLE87OztZOzs7WSxJO1k7YSxPOzs7WTs7O087O0s7O00sb0M7TSxXOzs7USxJOzs7Uzt5Qjs7bUI7c0I7VTtXOzs7c0I7Ozs7OztROzs7UztRO1MsTzs7UTs7OztPO1E7USxlO087USxPOztPOztNO0s7OEI7SztLO0s7TTs7UyxPOztTLE87aUIsTzs7O0s7TSxzQixXO007O0s7Ozs7Tzs7TTs7SztNO1E7OztNO0ssMEI7Szs7TTtLO007O08sVztPLE87TTtNOztTO00sMEI7Szs7TTtPOzs7a0I7O2tCOzs7Ozs7USxPOztPO1EsWTs7TyxPOztNLE87SztLOztNLDJCLHNCLFc7TSxPO007UTs7SztJO0k7Ozs7Szs7O1k7OztLO007UTtNLFU7TTs7OztPOzs7Ozs7Ozs7O1U7Ozs7Ozs7OztVOzs7Ozs7O0k7O0k7RztHO0c7O0csb0I7Rzs7SSxPO0c7O0k7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztRO08sVztPLE87Ozs7USxNOztRO1MsTztTLE87USxPOztPOztRLE87TyxPOzs7O1EsTTs7OztRLE87Ozs7Ozs7TyxXO08sTzs7OztpQjs7O087O1EsTztPLE87Ozs7USxNOzs7O1EsTzs7Ozs7OztPLFc7TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7MkI7O087O1EsTztPLE87OztPLE87OztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87O08sb0IsTztPLE87Ozs7O1UsVztVLE87O1U7a0I7VSxPOztVOzthO1UsTzs7O087Ozs7UTtRLE87USxPO087O1UsTzs7VSxPOzs7VSxPOzs7Ozs7UTs7UyxPO1MsTztRLE87OztRLE07TztRLE87USxPO1EsTztRLE87TyxPOzs7O1E7Ozs7UztXOztTLE87UyxPO1MsTztRLE87Ozs7USxNO087O1E7VTtRLE87USxPO08sTzs7Tzs7USxPO08sTzs7Tzs7USxPO08sTzs7O08sTzs7O08sTzs7O08sTzs7O08sTzs7Tzs7USxPO1EsYTtPLE87Ozs7USxPOztPLE87OztPOzs7O08sa0I7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOztPOztRLFM7TztRLE07OztRO1MsUztTLE87UyxPOzRCOztRO1MsTztTLE87NEI7TyxPOzs7Ozs7O08sTzs7TyxxQixPO08sTzs7eUIsTzs7Tzs7USxPO08sTzs7O08sTzs7TyxxQixPO08sTzs7TyxxQixPO08sTzs7Ozs7VSxXO1UsTzs7VTtrQjtVLE87O1UsVztVLE87OztPLGtCLE87TyxPOztHO0c7O0ksbUI7STtJLEksb0IsbUIsZTt5QixtRDtJLFk7Ozs7OztrQzs7OztnQjs7STtHOztJOzs7Ozs7Z0I7OztrQjs7Ozs7Ozs7UTs7O0k7SSxjOzs7Ozs7Ozs7Ozs7O0k7RztHOytCLHlCOztJOzs7SSxNO0c7OztLOzs7OztLO007O08sTztjOzs7O007Ozs7O00sTztLO0ssTzs7STtJO0k7OztLLEksSSwrQjs7O087USxPO1EsTztRLE87Tzs7O08sYyxPO087O0s7bUIsTzs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7K0IsTyxrQztROztTOztTOzs7UztVLFE7OztVLE07UztVLE07O1M7UTs7UyxJLHlDOzs7O1csTzs7O1E7O1MsSSx5Qzs7OztXLE07OztROztTLE87UTs7UyxPO1E7O1MsSSxNLGdEOztVO1c7a0I7WTtXOzs7O2lDOzs7UztTLE87UTs7Uzs7VTtXO2tCO1ksTTtXOzs7OztZLE87OztTO1MsTztROztTOztVO1csVTs7O1M7Uzs7O1U7VyxLO1c7O1M7UyxPO1E7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7VSxTO1UsVztVLEk7MkI7UztVLFE7VTtVO1U7Ozs7VyxtQjtxQjtXOzs7Ozs7O1U7O1csSSxJLE07Ozs7b0I7O1c7VTtVLE87UztTO1UsZ0I7O1UsUztVLFE7VTs7VTtvQjtVO1U7VTs7VTs7O1M7UywwQjs7OztXO1c7Ozs7O1M7OztVLGE7OztXOztXO1U7VSxPO1M7UztTO1UsVztVLGE7VTs7VTtvQjtVOztVO1U7VSxPO1M7Uzs7OztXOztZOzs7Vzs7Ozs7Uzs7VSw4QjtVLGtCOztVOzs7OztVO1c7Vzs7VztXLE87VTtVO1c7VTtTO1M7Uzs7WTs7VTtXLE07OztXO1k7OzZCLCtDO1csZTs7VTtXO1c7VzthOzs7VTtTO1MsTztROztTOzJCO1MsTztROzs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQzs7O0ssTTs7OztRLGtEO1EsTztPOzt3QixTO3dCLFM7O29CLGM7MEIsTyw0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLFM7MEIsUztzQixjOztJLE87Rzs7Ozt5Qjt5Qjt5Qjt5Qjs4Qjs4Qjs4Qjs4Qjs4Qjs4Qjs7Ozs4Qjs4Qjs7Ozs7O3NCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7OzZCOytCOytCOytCOytCOytCOzs7Ozs7OztFOzs7Ozs7O0c7Ozs7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSw4Qjs7O087Ozs7VyxRO1csTztVO1E7VTs7USxNO08sTzs7O08sTzs7MkIsTzs7RztHOztJOzs7O0ssTTs0Qjs7Ozs7UTs7OztJO0ssMEIsMEIsSTtLLE87O0c7O0k7STsyQjtLLFE7VztLLEk7O0c7O0k7eUIsTyw4QjtHOztJLFU7STtJO0c7O0ksTyx1QjtHOzZCLHdCOzs7STtjO2M7Ozs7STtjO2M7OztJLEksNkIsUTs7SyxNOytCOztJO0c7OztJO2M7Yzs7O0k7OztHOztJLFk7Z0IsTTs7STtHOztJO0k7Rzs7O0k7Ozs7Ozs7O2tCO0s7O0k7Rzs7O0s7aUM7STtJO0c7Ozs7OzBCLDRCO3lCLE8sdUM7Ozs7Ozs7a0I7Szs7STtHOzs7STs7YztjLE87YTs7Rzs7STtJO0ssVTtLLFU7SyxVO0ssVTtLLFc7Ozs7Ozs7Ozs7Ozs7O007TTtPO08sVTs7Ozs7Ozs7Ozs7TyxNOzhCOztNLEk7Ozs7Ozs7MEM7Uzs7Ozs7OztNO087TztPO087Tzt5QjtPOzs7VTtXO1c7Ozs7VztZO1k7WTtZOzs7VTtTO08sZ0I7Tzs7O1ksWTs7WTtXOzs7Tzs7Ozs7O1E7O1E7UTs7O1c7O1k7O1ksUztZO1c7VTtvQjs7O007Tzs7VTtXO1c7c0I7O1U7O087O1U7VztXO1UsTzs7TTs7OztPO087UTtRLDRCO087TztRO1EsVTtPLEc7USxNO08sVTs7Ozs7Ozs7Ozs7USxNO2dEOztPOztRO1E7UTtPOztRLE07TztROzs7WSx5Qjs7UTs7UTtTOzs7O1MsTTs7O2lEOzs7O087UTs7O1k7d0I7Ozs7Vzs7WTtZOztZOztZOztZOztXOzs7Ozs7VTtRLGE7UTs7UTs7Ozs7UztTO1M7OztZO2E7OzthOzs7YTtlOzBCO2E7O1k7VztxQjs7O087Ozs7Ozs7O1k7Ozs7a0I7a0IsTztpQjs7d0I7O1k7b0I7O3NCO2lDO1c7OzhCO087Ozs7WTtZLE87VztXLE87O087Ozs7O007TTtPO08sSTs7Ozs7Ozs7OztPLFU7Ozs7Ozs7Ozs7UTtTO1M7UztTO1M7UztTO1EsRzs7O1M7VTtnQztVO1M7Ozs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7OztTO1U7VTs7O2E7O2M7Yzs7O2M7Yzs7Yzs7Ozs7Yzs7Ozs7YTs7Ozs7Ozs7WTtVLFc7Uzs7O1U7Vzs7Ozs7YztjOzs7Ozs7OzthO3dCOztROzs7O1UsTTtTOztVOztXO1c7Vzs7O2M7O2U7O2U7O2U7YzthOztxQjs7Ozs7O1E7Uzs7WTt3QjtZOzs7O2E7ZTs7O1ksVzs7Uzs7WTtZLE87O1E7O08sTTsyQzs7TSxNOzJDOzs7SSxNO0c7O0k7SztNLEs7NEIsYTs0QixPLDJCO00sSTs7Ozs0Qjs7O0s7O0k7Rzs7O0ksTzs7OztJLE87Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7OztJOzs7MkI7O3lCLE07OztPLEksUTs7OztRLE07OztPOztHOztJO3VCOztJO0c7O0k7Ozt5Qjs7eUIsTTtpQzs7RztzQixtQjs2QixtQjs2QixtQjt1QixjOztJOzs7MkI7O3lCLE07OztPLEksVTs7OztRLE07Ozs7OztHOztJO0k7aUI7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O087O087O087ZTs7Rzs7SSxrQztJO0k7SSxPOzs7d0IsTyxtQzt3QixPLG1DOztJOztPOztPOztPO2U7O0c7Ozs7Ozs7OytCLDRDOzsyQix5QjtTLE87Ozs7UTs7MkIseUI7UyxPOzs7O1E7O1M7UTs7UztROztTO1E7MEIsdUI7O1M7UztTO1M7UTs7UztVO1U7UztTOzs7O1E7O1M7VTtVOztVOzs7O1csdUI7Ozs7YTs7Ozs7Ozs7O2E7Yzs7Ozs7ZTs7Ozs7OzthOzs7OztXOzs7Ozs7O1UsTTs7OztxQztVOztXLE07O1U7Ozs7Ozs7VSxJOztROzs7OztZO2E7YSxNO2E7WTs7Ozs7cUI7O1c7VztVO1U7Uzs7OztZO2E7YSxNO2E7WTs7Ozs7cUI7O1c7VztVO1U7Uzs7O1csTzs7Ozs7c0I7c0I7OEI7O3FCO3FCO29CO1U7VSxnQixjO1U7VztXO1UsZ0IsYztVO1c7Vzs7OzthLFk7OztjOzs7YTtZO1ksTztXO1csTztVO1U7VyxTO1c7Vzs7Vzs7Ozs7WSxRO1c7VTtVO1c7O2E7Ozs7Ozs7YztnQjs7O2E7Ozs7OztXO1U7VTttQjs7Uzs7VSx3Qjs7Ozs7c0I7VTtTOztVOzs7VzthOztXO2E7Ozs7O1c7O2M7Ozs7OztVOztVO1c7WTtZO1k7O1k7Ozs7YSxrQjs7Ozs7OztvQjtxQjs7Ozs7Z0M7OztlO2U7Ozs7O2E7Ozs7OztnRTtXOzs7Ozs7a0I7bUI7OztpQjtpQixPO2dCO2dCLE87ZTs7OztZO1k7WTtZOzs7O2E7Ozs7ZTtlOzs7OzthOzs7Ozs7O1M7Uzs7OztzQjs7Ozs7VTtXLFE7OztXO1U7Uzs7O1U7VTtTOzs7Ozs7VTtXLFE7Ozs7VTtTOzs7VTtVO1M7Ozs7Ozs7a0IsVTtrQjtpQjs7O2tCO2tCO2lCOzs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBCLDRCO0ksTztHOztJOzs7Ozs7O0k7SyxVO0s7dUIsTyxzQztLLE87STtJOzs7OztPLE87OztPLE87OztJLE87Rzs7SSxPO0c7Ozs7Ozs7OztRLEk7Ozs7a0IsUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0I7OzttQjs7a0I7aUI7O2tCOzBDOzswQztrQixZOzs7Ozs7OztpQzs7Ozs7a0I7aUI7O2tCO21CO21COzttQixNO21CLE07bUIsVTs7Ozs7OzttQjs7c0I7O3VCO3VCLE07dUIsb0I7O29DOzs7c0I7O3VCLE07dUI7dUIsb0I7O29DOzs7OztzQjs7O3VCLEs7dUIsSzt1Qjt5Qjs7O3VCO3VCLG9CO2lDOzttQixXOzs7O3FCOzs7Ozs7Ozs7bUI7Ozs7O3NCLG9COzs7c0I7O3NCOzs7O3VCLEs7dUIsSzt1Qjt1QixROzs7Ozs7eUI7Ozs7Ozs7OzBCLFU7MEIsVTs7Ozs7Ozs7Ozs7b0M7Ozs7Ozs7Ozs7Ozs7a0I7a0IsTztpQjs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QixPLG9CO3lCLHNDO2dDLDJDOztJLFc7SSxXO0c7O0ksVztJLFc7Rzs7SSxXO0ksVztHOztJLFc7SSxXO0c7O0k7Rzs0QixxQjt5QixzQjtHO0k7STtJO0k7STt5QiwrQjs7STs7O0c7O0k7Rzs7SSxZO2dCOztJLE87Rzs7SSxHO0s7TSxPO2tDOzs7STtLO0s7TTtPLE87TyxNO00sRyw2QjtNLEs7TyxHO1E7USxPOztPO08sTzs7OztJO0k7Rzs7STtHOztJO0ksTztHOztJO0k7SyxPOzs7OztLO0k7SyxpQztJOztLLGE7SyxPO0k7STs7Ozs7Ozs7Ozs7O0k7SztLOztJO0k7SztLOztLO0s7OztLO0s7Ozs7O0k7SztLO0s7O0ksTztHOztJOzs7NkIsTyx5QztJLE87Rzs7O0s7OztNLE87TSxjO0s7STtJLE87Rzs7STtLOztrQixNO0ssSTs7OztpQjtPOzs7OztLLFc7MEIsTTtLO0s7SztLO0ssdUM7Ozs7a0I7Ozs7WSxxQixpQzs7O08sRztROzs7O1kscUIsaUM7OztPLEc7UTtPLFE7Tzs7Tzs7Ozs7SztLO0ssVztLOzs7OzRCOzs7Rzs7STtJO0s7SztLO0ssSTs7SztNLFc7TTs7Ozs7STtJOztNLFk7OztPO29COztPOzs7TTs7OztHOztJO3VCLHFCO0ksTztHOztJOzs7Szs7SztNLE87TSxjOzs7STtHOztJOzs7Ozs7Ozs7Ozs7Szs7Ozs7aUI7SztLLFc7SyxJLG9COztNOztPO007SztLLGdCOztNOzs7Ozs7O00sTzs7O0s7SztNLE87TSxPOztNO00sbUIsMkI7TTtNLE87SztLLFUsVzs7TTtNOztROztPOzs7TyxNOzt3Qjs7TTtLO0s7TSxROzs7SztNLE07SyxXOzs7O007TyxPO08sTzt5QjttQjs7O007Ozs7Ozs7Ozs7TSxXOztNO087USxNO1E7O1csSSxlLDhCOzs7b0M7OztVO1E7O2tDO087Tzs7OztrQzs7O0s7SyxJOzs7Ozs7O1E7UztTLHFCLHVCOzs7WSxXO2lDO1ksUTtZO1k7VztTOzs7Ozs7OzJDLHFCO087UTtTOzRCLDRCOzs7WSxzQjtZLFE7WTtZO1c7Ozs7Ozs7Ozs7TTs7OzhCOztPOzs7Ozs7O08sRyxnQztRO08sRyxnQztRO087TTtNLFk7Ozs7O007SztLLFksVzs7TTs7Ozs7TSxXOzttQjtNOztPO007SztLO00sVTs7Ozs7Ozs7OztXO1c7VTtlOzs7Ozs7TTs7Ozs7TTs7Yzs7SztLLGMsVztLOzs7Ozs7OztRO1E7Ozs7O1k7O2E7YSxPO1k7cUI7YTtZO2E7OztjOztjOzthO2EsTztZOzZCOzBCO1c7UTtROzs7OztNOzs7VTs7VztVO1UsYTtVO1M7TyxPO00sVzs7O0ssTztJO0ksTzs7RztHO0ksTztHOztJO0ksb0I7O0s7Szs7O08sTzs7TSxVO08sSTs7OztJO0k7Ozs7Ozs7OztJOzs7SyxPOztLLE87OztLLE87O0ssTztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87RztHO0k7SyxPOzs7d0IsTzs7O08sTzs7O08sTzs7O08sTzs7O0csNkM7RztHLDRDLHdCO0c7O0ssVztLLE87STtJLE87RztHO0k7OztLLE87SyxPO0ksTzs7RztJOztHO0csOEMsd0I7Rzs7Ozs7Ozs7Ozs7OztLOzswQixvQixXO0s7TSxXO007TTtRO0s7SyxPO0k7SSw4QyxTO0k7Szs7ZTs7STtJOzs7Ozs7Ozs7Rzs7SSxnQzs7OztLOztJO0c7O0ksTzs7O0c7Rzs7SSxjO0ksTztHO21DLGtDOztJOztJLG9CO0ksTzs7O0k7STtJOzs7O2MsTzthO0c7O0k7STtJLHVDLE8sdUI7Rzs7STtpQjtHOztJLFk7a0M7Ozs7Ozs7STtLLE87STtJO0ssTztLLHlCOztLO0sseUI7STtJLFU7STtHOzhCLG9DO0c7RztJOztHOztJLE87RztHOztJO2dCOztJO0c7O0k7Rzs4QixvQztHO0c7STs7Rzs7SSxPO0c7O0k7Z0I7O0k7Rzs7STtHOztJO0k7STtHOztJO0c7O0k7SyxVO0s7OztROzs7STtHOztJO0s7TztLOzs7UTs7O0k7RztHO3FDLGtDOzs7SSxvQzs7STtpQjtLLG1DLFE7cUM7OztHO0c7O00sNEI7O007YzsyQjtLOztJO0k7SyxJOzs7TTs7OztlLE07O21DOztLOztHO0c7Rzs7TSx1Qjs7TTtLOztJOzs7SyxNO0k7SSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7MEI7O1E7OztTOzs7O2dCLE87O0c7O0k7O3lCOzsyQjtlLE87O0c7O0k7SztNLE07TTtNLFU7Szs7Ozs7TTtjOzs7Ozs7OztHOztJLFE7SSwwQjt1QixpQjtJLFc7Rzs7STtnQjs7STtHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7OztJOzs7Ozs7O0ksVztJLFc7SSxXOztLOztRLE87O1E7b0M7O0k7SSxPO0c7aUMsK0IsVTt5QixpRDsrQixhOzhCLGE7Rzs7STs7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7STs7Ozs7O087UTtrQjs7Ozs7O0k7Rzs7O0k7OztNO00sTzs7O0k7RztHO0k7Ozs7STs7SztLO0s7STtHOzt3QixtRDtJO0ssTztLLE07SSxPO0c7O0k7STtpQjs7MEQ7OztHOztJOztpQixPOzs7Ozs7O00sSTs7O0c7O3FCLCtDO0ksTztHO0csZ0I7O0k7aUI7Rzs7STtLLFU7SztLO0s7Ozs7MkI7OztHOztJO0ssVTtLO0s7Ozs7MkI7OztHO0csaUI7O0k7aUI7Rzs7STtLLFU7SztLO0s7Ozs7MkI7OztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHFCOztJO2lCO0c7O0k7SztNLE07TTtLOzs7OzJCOzs7Rzs7STtLO00sTTtNO0s7Ozs7MkI7OztHO0csc0I7O0k7O2M7O0c7O0k7SztNLE07TTtLOzs7OzJCOzs7RztHLHVCOztJOztjOztHOztJO0s7TSxNO007Szs7OzsyQjs7O0c7O0ksd0I7SSx3QjtHOztJO0ssSztLLEs7STs7YTthOztHOztJLHdCO0ksd0I7Rzs7STtLLEs7SyxLO0k7O2E7YTs7Rzs7SSxjO0ksc0I7Rzs7SSxjO0ksc0I7Rzs7SSxnQjtHOztJLGdCO0c7O0ksZ0I7Rzs7SSxVO0ksMkI7Rzs7SSxnQjtHOztJLHFCO0c7O0ksWTtJLDJCO0c7O0ksMEI7Rzs7SSwyQjtHOztJLDBCO0c7O0ksMkI7Rzs7SSw0QztJOzs7O0k7O2E7YTs7OztJO0k7Rzs7STs7YTthOztHOzs7STtJO0k7OztJO0k7STtHO2tDLHdCOytCLHdCO29DLDBCOztJLDJCO0c7NEIscUI7aUMsMEI7O0ksMkI7Rzs4QztHOzZDO0c7c0MsK0I7dUMsZ0M7O0k7STtJO0k7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7OztHOzs7O0k7STtxQyxrQixTOztJLE07Rzs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJOzs7O0ksTztHOytCLHNCOztJLFc7Rzs7STtJLFc7Rzs7STtJLFc7Rzs7STtJLFc7RzsrQixzQjtzQixjOztJO0k7Rzs7STtJO0c7Rzs7STtJO0k7Rzs7SSxXO0k7RzttQywyQjtpQyxnQzt1QyxzQztpQyxnQztxQyxtQztxQyxtQztzQyxtQztvQyxtQzs7STtHO21DLG1DOztJO0c7cUMsaUM7O0k7a0Q7STtHOztJO0ssVztLO00sTTtLO0k7cUIsWTtJLGtCOztLOzs7Ozs7O1M7Ozs7Uzs7OztVOzs7Ozs7cUI7Ozs7Ozs7O1csRzs7OztpQzs7Ozs7Ozs7cUI7Ozs7OztrQzs7OztTOzs7Ozs7Ozs7O2E7Ozs7Ozs7OzZCLCtDO1M7Ozs7Ozs7Ozs7YTthO1k7O2lDOzs7Ozs7Ozs7SztJOztLOzs7Ozs7bUM7OztLO0k7O0s7Ozs7O0s7STtJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7RztxQywyQjtpQyxnQztzQyxtQztvQyxnQzt1QyxtQzttQyxnQzt3QyxtQzt3QyxtQztxQyxtQztpQyxnQztpQyxtQzt5QyxvQztnQyxpQztnQyxpQztrQyxpQzttQyxvQztxQyxpQzt1QyxpQztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7RztpQyxnQztzQyxnQzt1QyxzQzs7STtHO3NDLGdDO29DLG1DO29DLG1DO29DLG1DO21DLGdDOzBDLG1DO3dDLG9DO3VDLG9DO29DLG9DOztJO0c7bUMsaUM7NEM7Rzt1QyxvQztzQyxvQzs7STtHOzJDO0c7O0k7RzttQyxvQztpQyxpQzt5QyxvQztvQyxpQzs7STtHOzJDO0c7a0MsaUM7a0MsaUM7cUMsb0M7b0MsaUM7c0Msb0M7Z0MsaUM7cUMsb0M7O0k7Rzt1QyxpQzsyQywyQjtvQyw0QjswQyw4Qjs7STtJO0k7Rzs7SSxXO0k7RzttQyxnQzttQyxnQztxQyxnQztzQyxtQztxQyxtQztvQyxnQzt1QyxnQztHOzs7Ozs7Ozs7Ozs7O0k7STtJO0c7O0ksVztJO0c7bUMsZ0M7cUMsZ0M7NkM7Rzt3QyxxQzs2QztHO29DLGdDO3VDLGdDO0c7Ozs7Ozs7Ozs7Ozs7STtJO0c7MEIseUI7cUMsbUM7K0IseUI7bUMseUI7Z0MseUI7MkIseUI7OEIseUI7K0IseUI7NEIseUI7a0MseUI7MkIsMEI7NEIsMEI7NEIsMEI7K0IsMEI7O0k7STtHOzhCLDBCOzs7SyxPLHFCO0k7SSxZOztLLFc7SyxxQjtJO0ksTztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O0k7STtHOytCLDRCOzhCLHlCO3FDLG1DO3FDLHlCO2dDLHlCOzZCLHlCO2lDLHlCOzhCLHlCOzJCLHlCOzRCLDBCO2lDLDBCOzhCLDBCOztJO0k7RztnQywwQjs7O0ssTyxxQjtJO0ksWTs7SyxXO0ssdUI7STtJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7Rzt1QyxtQzt1QyxnQzs7STtHO3NDLG1DO3VDLHNDOzJDO0c7dUMsZ0M7cUMsbUM7Rzs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Rzs7SSxXO0k7Rzt1QyxtQzt1QyxnQzs7STtHO3VDLGdDO3FDLG1DO0c7Ozs7STtJO0k7Ozs7SSxtQjtHO21DLG1DOztJO0c7O0k7Rzs7STtHO3VDLG1DO2dDLCtCOzs7SyxPLHFCO0k7SSxZOztLLFc7Syx1QjtJO0ksTztHOztJLFc7STtHOztJO0k7STs7OztJLG1CO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzt1QyxvQzt1QyxvQztnQyxnQzs7O0ssTyxxQjtJO0ksWTs7SyxXO0ssdUI7STtJLE87Rzt3QixlOzJCLGlCOztJLFc7STtHOztJO0k7STs7OztJO0ksNEI7RztHOztJO0k7STs7OztJO0ksVztJLHNCO0c7Rzs7STtJO0k7Ozs7STtJLFc7SSxzQjtHO0c7O0k7STtJOzs7O0k7SSxXO0ksc0I7RztHOztJO0k7STs7OztJO0ksVztJLHVCO0c7Rzs7STtJO0k7STtJLGdDO0c7Rzs7STtJO0k7SSx1QjtHO0c7O0k7STtJO0k7SSxVO0ksc0I7RztHOztJO0k7STtJO0k7STtJLFU7STs7Ozs7O1k7RztHOztJO0k7STtJO0k7STtJO0k7SSxVO0k7Ozs7Ozs7WTs7Rzs7STtJO0k7STtJO0k7Ozs7OztZO0c7O0k7STtJO0k7SSxnQztHO0c7O0k7STtJO0k7STtJOzs7Ozs7WTtHOztJO0k7STtJLDZCO0c7O0k7STtJO0k7SSxVO0ksNEI7Rzs7STtJO0k7STtJO0k7SSxVO0k7Ozs7WTtHOztJO0k7STtJO0ksVTtJLGdDO0c7RztnQyx5QjtHO2dDLHlCO0c7O0k7STtJO0c7O0k7RzsrQiw4QjtHOztJO0k7STtHOztJO0c7K0IsOEI7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7OztHOzs7Ozs7Rzs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNDO0ksRztLO0ksVztJLEc7SztJLFc7SSxHO0s7SSxVLHVCOzs7Ozt5Qjs7MEI7OzJCOztTO1UsTztpQjs7Ozs7Ozs7Ozs7Ozs7O0ksUzs7Ozs7d0I7OzBCOzsyQjs7UztVLE87Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJO0ssTztLLGM7STtHOztJO0ssTztLOztVOzs7Ozs7STtHOztJOzs7Ozs7STs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7TTtPLFc7TyxXO08sVztPLE87Ozs7O0k7Rzs7STtJO0c7O0k7Rzs7STtJLE87Rzs0QiwyQjs7STs7Ozs7K0M7O2dEOzs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7WTs7O2E7Ozs7Ozs7Ozs7MEI7Ozs7d0I7OztPOzs7bUI7O0k7Rzs7STs7Ozs7O0s7O0k7RztHOzZCLGdDOztJOzs7YTtpQyxPO0k7Ozs7TSxNOztvQix3QixPOztLO0s7OztHOztJOztJLFE7O0k7STtJLE87Rzs7STtJO0k7ZTs7YztjO2M7YztjO0c7O0k7O3lCOztPOzs7UTtPLE87Ozs7Ozs7OztPLE87Ozs7O0ksTztHOztJOzs7O1E7O1M7OztZO1ksTztXO1E7OzhCLE8sdUI7Tzs7MkIsTzs7O3FCLE87O08sTzs7OztROztTOzs7WTtZLE87VztROzs4QixPLHVCO087OzttQyxlO21DLG1COzRCLFksMkI7K0IsZ0IsdUI7O0ksZSx5Qjs7bUMsbUI7a0MsTywwQjs7SSwyQztLLE87SSxPO0c7OEIsd0I7OEIsTywwQjs7SSxRO0ksMEI7SSxJO0ksTzs7Ozs7Yzs7Ozs7O0ksOEI7STs7SyxPOzs7OzttQzs7OztJLE87Ozs7O2tDOzs7O0k7STs7TTs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7Ozs7O1M7Ozs7VSw0QjtVO1MsTzs7Ozs7bUI7Ozs7Ozs7UyxPOzs7O3VDOzs7Ozs7O1U7O1csNEI7VSxPOzs7OztvQixPOzs7Ozs4QixROzs4QixPOzs7Ozt3Qzs7OzZCOzttQjs7Ozs7Ozs7SyxPOzs7O21DOzs7Rzs7SSxlOztrQyxPOzs7eUI7O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7TyxPOzs7OztpQixROztrQjs7OztnRDs7OztpQixPOzs7OytDOztnQjs7Ozs7Ozs7OztXOztZOzs7YTthLDRCO2EsNEI7WSxPOzs7VyxPOzs7O3lDOztVOzs7VzsyQiwwQjs7Ozs7TyxPOzs7OztpQjs7Ozs7O087OztRLDRCO08sTzs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7OztXOztZOzs7YTthLDRCOzs7Z0IsUTtnQiwwQjtnQixJO2dCLE87Ozs7OzBCOzs7ZTtZLE87Ozs7OztzQjs7Ozs7Ozs7O1c7VTs7O1c7Ozs7YSxPOzs7Ozt1Qjs7Ozs7VztVO08sTzs7Ozs7aUIsd0I7O2lCO2tCOzs7Ozs7OztpQixPO2dCOzs7Ozs7Ozs7Ozs7VyxPOzs7Ozs7eUM7OztPLFksTzs7TyxPOzs7Ozs7O2lCOzs7O3lCOztPOzs7O3FDOzs7O0c7O0k7Szs7TSw0QjtNO0ssTzs7OzttQzs7Ozs7OztLLGdDO0ssTzs7OzttQzs7Ozs7O0k7Ozs7O007OztPOzs7OztLOztNO08sNEI7Tzs7TSxPOzs7OztnQjs7Ozs7SztNLE87O0s7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7O3FDOzs7Ozs7O0s7OztLO00sTzs7Szs7Ozs7Ozs7Ozs7Ozs7UztVLE87O1M7OztRLEc7UyxPO2lCLE87OztTOztVO2lDOzs7UyxPOzs7Ozs7O21COzs7Ozs7O1EsTzs7Ozs7OztrQjs7Ozs7OztTLE87Ozs7OzttQjs7Ozs7O0k7SyxPOztJO0c7O0k7SztNLE87O0s7OztrQyxPOzs7OEI7O3lCLE87OztPLE87O087O1EsNEI7UTs7TyxPOzs7OztpQjs7Ozs7Ozs7Ozs7dUIsTzs7Ozs7O1EsTzs7Ozs7Ozs7O1csaUM7Ozs7Ozs7YSxHO2MsTzs7OztXLE87Ozs7Ozt5Qzs7O087O1EsTzs7Ozs7a0I7Ozs7OztPLE87Ozs7O2lCOzs7OztPOztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7Tzs7O1EsNEI7TyxPOzs7O3FDOzs7OzswQixPOzs7TyxPOzs7O3FDOzs7O3FCLE87O08sTzs7O08sTzs7OztxQzs7O3lCOztPLG9DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087USw0Qjs7O08sTzs7Ozs7OztpQjs7OztJOzs7O2tDOzs7Rzs7STs7O0k7OztJOzs7O0k7SyxPOzs7O21DOztJO0ssZ0I7Ozs7O00sRyw2QixPOzs7SyxPOzs7OzttQzs7O0ksaUI7Ozs7O0ssSztlLE87O0ssTzs7Ozs7bUM7Ozs7SyxPOzs7OzttQzs7O0ksMEI7SSxPOzs7OztrQzs7Ozs7O0ksZTs7Ozs7Ozs7Ozs4Qiw2QztNLEs7TTs7Ozs7Ozs7Ozs7OztXLFk7O1csTzs7VTs7WTs7YTtvQzs7O2E7YTs7Z0I7O1k7Ozs7bUM7Ozs7Ozs7Ozs7WTs7OztXOzs7WTtZOztlOztXOzs7O2tDOzs7Ozs7OztXOztVOzs2QjtPLFE7Ozs7Ozs7O1c7Ozs7a0M7O1c7Ozs7Ozs7Ozs7Ozs7WTs7O2EsVzthO2E7O2dCOzs7WTs7Ozs7aUI7OztrQjtpQjs7OzsrQzs7Ozs7O2dCOzs7aUI7Z0I7Ozs7OEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OzttRDs7Ozs7Ozs7Ozs7cUI7Ozs7O3NCO3FCOzs7O21EOzs7Ozs7Ozs7O21COzs7O29CO21COzs7O2lEOzs7Ozs7O2lCOzs7a0I7aUI7Ozs7K0M7Ozs7Ozs7WTs7Ozs7Ozs7Ozs7UztVO1csZ0I7Vzs7Ozs7WTs7OztVO1c7VyxJO1c7O2dCO2dCOzs7Ozs7O1ksTTs7Ozs7OztVO3NCO1csUzs7O3FDO3FDO1U7Ozs7Ozs7Ozs7Ozs7O007OztJOzs7STs7TTs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7O21DLE87Ozs7O1M7OztVO29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7OztlOzs7bUI7O2UsTzs7Ozs7eUI7Ozs7Ozs7Ozs7VztZOztlOztZOzs7WTs7ZTs7VyxPOzs7O3lDOzs7Ozs7Ozs7WSxHOzs7Ozs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7O1c7Ozs7YSxPOzs7OzsyQzs7OztXO1k7O2U7O1k7OztZOztlOztXLE87Ozs7eUM7Ozs7OztTO1MsTzs7Ozs7bUI7bUI7b0I7O21CLEk7bUI7b0I7O21CLE87Ozs7aUQ7Ozs7a0I7Ozs7OztTO1M7OztXLE87Ozs7Ozt5Qzs7Ozs7VTs7Ozt3Qzs7OztTLE07Ozs7O1MsTzs7Ozs7dUM7OztTOzs7O1UsNEI7UyxPOzs7O3VDOzs7Ozs7OztTLE87O1M7OztVLDRCO1MsTzs7Ozs7OzthLDBCO2EsTzs7OztTLE87Ozs7O21COzs7Ozs7UyxPOzs7O3VDOzs7O1MsTzs7Ozt1Qzs7Ozs7VSxPOzs7O3dDOztTOztVLDRCO1MsTzs7Ozt1Qzs7Ozs7OEI7Ozs7Ozs7O1U7Ozs7d0M7Ozs7Ozs7Ozs7O1M7Ozs7dUM7Ozs7Ozs7OztVLE87Ozs7d0M7OztVOzs7OztXLDRCO1c7VSxPOzs7O3dDOzs7OztVOzs7Vyw0QjtVLE87Ozs7d0M7Ozs7O1U7OztXLDRCO1UsTzs7Ozt3Qzs7Ozs7VTs7OztXLDRCO1c7a0M7VSxPOzs7O21COzs7Ozs7VTs7O1csNEI7VSxPOzs7OztvQjs7Ozs7O1U7OztXLDRCO1UsTzs7VTs7O1csNEI7O1csNEI7VSxPOzs7VTs7Ozs7Vyw0QjtXLDRCO1c7O1c7O2M7O1UsTzs7Ozt3Qzs7Ozs7Ozs7O1c7Ozs7eUM7Ozs7OzthOzs7O2M7YztxQzthLE87Ozs7Ozs7Ozt1QixTO3VCLGU7dUIsTzs7OztxRDs7c0I7Ozs7Ozs7OztlOzs7Z0I7Ozs7O2M7ZSxNO2U7ZSw0QjtlOztjLE87Ozs7O3dCOzs7Ozs7O007Ozs7Tyw0QjtPO00sTzs7OztvQzs7Ozs7Ozs7O08sTzs7Ozs7aUI7Ozs7TTtPLE87O007OztHOztJOzs7Ozs7UyxPOzs7O3VDOzs7OztTLGtDO1MsTzs7Ozt1Qzs7OztLO00sTzs7Szs7SSxrQixPOztJO0c7O0k7SyxrQixPOztLOzs7Ozs7MkI7OzBCOztROztTLDRCO1M7O1EsTzs7Ozs7a0I7Ozs7UTtTOztrQyxPO29DLE87Ozs7O1c7O1k7WSw0QjtZOztXLE87Ozs7O3FCOzs7Ozs7Vzs7O1MsTTs7Ozs7O1MsTzs7OztROzs7OztZLGlDOzs7OzthLEc7YyxPOzs7WSxPOzs7Ozs7MEM7Ozs7O1M7O1k7O1MsNEI7O1EsTzs7Ozs7a0I7Ozs7OztROztTO1MsNEI7Uzs7USxPOzs7OztrQjs7OztROzs7Uyw0QjtRLE87Ozs7c0M7Ozs7O1E7Ozs7OztTLGtDO1EsTzs7OztzQzs7Ozs7Ozs7Ozs7UTs7O1MsNEI7USxPOzs7O3NDOzs7OztROzs7O1MsNEI7Uyw0QjtTO2dDO1EsTzs7OztzQzs7Ozs7Ozs7USxPOzs7O3NDOzs7STs7OztrQzs7O0c7NEI7O0k7OztJOzs7STs7SywwQjtLLE87O0ksTztHOztJOztLLDBCO0ssTzs7SSxPO0c7O0k7SSwwQjtJLE87Rzs7O0s7OztLLE87Ozs7O2U7OztJOztJLE87Ozs7a0M7Ozs7Rzs7O0ksMEI7SSxPOzs7O0ksMEI7SSxPOzs7STtJLDBCOztJLE87Ozs7O2M7Ozs7O0c7O0k7OztPOztRO1EsNEI7TyxPOzs7O3FDOzs7OztPOzs7Ozs7UTtRLDRCO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7Ozs7UTtRLDRCO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7OztPOzs7O1E7USw0QjtRLDRCO08sTzs7OztxQzs7Ozs7Ozt5Qjs7O087OztHOztJOzs7Tzs7O1E7USw0QjtPLE87Ozs7O2lCLFE7aUI7a0I7O2lCLEk7aUIsTzs7Ozs7MkI7OztnQjs7Ozs7OztPOzs7O1E7K0I7UTs7UTs7Vzs7Tzs7Ozs7VSx5QztVLE87Ozs7d0M7O1M7Ozs7OztPOzs7O1EsNEI7UTtPLE87Ozs7O2lCOzs7Ozs7O087OztPOzs7USw0Qjs7TyxPOzs7Rzs7O0ssOEI7SywwQjs7SywwQjtLLDBCO0ssTzs7Ozs7Ozs7Ozs7Ozs7STtJLFE7O2U7O0k7Szs7SSxJO0k7Szs7SSxPOzs7OztjOzs7OztHOztJOzs7Tzs7OztRO1EsNEI7OztXLFM7O1csTztVO1EsNEI7TyxPOzs7OztROztTO1M7Z0M7Uyw0QjtRLE87OztPOzs7UTtRLDRCO1EsNEI7O08sTzs7Ozs7Ozs7Ozs7Ozs7O1E7O1M7UztnQztTLDRCO1EsTzs7Ozs7Ozs7Ozs7O087Ozs7O1c7Ozs7VTtRO1EsNEI7OztXOzs7Ozs7YTs7Yyw0QjtjLDRCO2EsTzs7O1k7OztVO08sTzs7Ozs7Ozs7Ozs7O087Ozs7UTtRLDRCO1EsNEI7TyxPOzs7O3FDOzs7Ozs7O087O1E7USw0QjtPLE87Ozs7cUM7Ozs7O3lCOzs7Tzs7O0c7OztJLDBCO0ksSTtJO0s7O0ksTzs7Ozs7Yzs7Ozs7MEI7Ozs7Z0Q7OzBCOzs7O2dEOzthOzs7Ozs7STs7Ozs7USxPOzs7OztrQjs7a0I7bUI7O2tCLEk7a0IsTzs7Ozs7NEI7OztpQjs7Ozs7MkI7O1E7Ozs7O1MsNEI7UztRLE87Ozs7c0M7Ozs7O1E7OztTOztZOztTOzs7Uzs7WTs7USxPOzs7O3NDOzs7OztROzs7O1MsNEI7UztRLE87Ozs7c0M7Ozs7O1E7OztTLDRCO1EsTzs7OztzQzs7Ozs7NEI7O1E7OztTLDRCOztRLE87Ozs7O0ksMEI7STtJLE87Ozs7a0M7Ozs7Rzs7STtJOztNOztPLDRCO087TSxPOzs7O29DOzs7Ozs7Ozs7OztTLE87Ozs7dUM7OztRLGlEOztTOztVLDRCO1MsTzs7Ozs7dUM7Ozs7O1E7cUM7USxPOzs7O3NDOzs7Ozs7O1M7O1U7O2E7O2dCOzs7O2lCOztvQjs7Z0IsTzs7Ozs4Qzs7Ozs7Ozs7Z0IsTzs7OztnQixPOzs7Ozs7OEM7Ozs7Z0IsTzs7Ozs7OzhDOzs7Z0I7Ozs7aUI7O29COztnQixPOzs7OzhDOzs7Ozs7OztnQixPOzs7O1U7O1U7O2E7O1MsTzs7Ozt1Qzs7Ozs7Ozs7UTtTLE87O1E7OztHOztJOzs7OzJCLE87O1E7O1MsNEI7Uzs7O1EsTzs7Ozs7a0I7Ozs7O1EsTzs7OztzQzs7OzBCOzs7USxPOztROzs7O3NDOzs7OztJO0ssTzs7STtHOztJOzs7STs7O0k7Ozs7a0M7OztHOztJOzs7Tzs7O1E7USw0QjtROytCO08sTzs7Ozs7Ozs7Ozs7OztPOzsyQjs7MEI7OzBCOzs7O1E7O1M7UztnQztRLE87Ozs7aUI7Ozs7OztPO1E7USw0Qjs7USw0QjtPLE87Ozs7Z0I7Ozs7OztPOztRO1EsNEI7TyxPOzs7O087O1EsVTs7UTtTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7OztTOztVO2lDOztVLDRCO1M7Ozs7Vzs7Ozs7Ozs7OztPOzs7OztRLDRCOzs7VyxTOztXO1csTzs7Ozt5Qzs7VTtPLE87Ozs7Ozs7TztRLE07Tzs7USw0QjtRLDRCO08sTzs7Tzs7UTtRLDRCOztPLE87OztPOztRO1EsNEI7O08sTzs7OztxQzs7Ozs7Ozs7O1csOEI7VztZOzs7VywwQjtXO1k7O1csTzs7Ozs7Ozs7Ozs7Ozs7O08sVTs7b0I7Tzs7UTs7Vzs7UTs7UTs7Vzs7TyxPOzs7OztpQjs7Ozs7OzJCOzt5Qjs7O087Tzs7Rzs7STtLOztNLDRCO007SyxPOzs7O21DOzs7Ozs7OzswQixPOztPOztRLDRCO1E7O08sTzs7Ozs7aUI7Ozs7OztROzs7O1MsNEI7Uyw0QjtRLE87Ozs7aUI7Ozs7Ozs7TyxPOzs7O3FDOzs7Tzs7O1EsNEI7TyxPOzs7O3FDOzs7OztPOzs7USw0QjtPLE87Ozs7cUM7Ozs7OztPLE87Ozs7cUM7O21DOztHOztJOzs7O2tDOzs7Rzs7STs7Ozs7O1M7OztVO2lDO1MsTzs7Ozt1Qzs7Ozs7O087OztPO087OztPO087Ozs7O1E7UTtRO1E7O087Tzs7Ozs7O0s7TSxPOzs7O29DOzs7Ozs7O1M7VSxPOzs7OztvQjs7Ozs7UztTLE87Ozs7dUM7Ozs7OztTLE87O0ssTzs7OzttQzs7STtJO3NCLFk7SyxPO0k7Ozs7Ozs7Ozs7UTtTLDRCO1MsNEI7USxPOzs7OztrQjs7Ozs7Ozs7Ozs7O0ssZ0M7SyxPOzs7O21DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7O1c7OztZOzs7Ozs7Ozs7Ozs7OzBCOzs7Ozs7OztNOzs7Ozs7Ozs7TztNLEc7TyxVO08sRzs7Ozs7Ozs7Ozs7OztNOzs7O08sNEI7Tyw0QjtPOzs7O087O1U7O00sTzs7OztvQzs7Ozs7Ozs7O0s7OztNLDRCO00sNEI7SyxPOzs7O21DOzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7a0I7Ozs7Ozs7USxpQzs7OztTO1UsNEI7VSw0QjtTLE87Ozs7O21COzs7Ozs7OztRO1MsNEI7Uyw0QjtRLE87Ozs7O2tCOzs7Ozs7OztJLDBCO0ksTzs7OztrQzs7Ozs7Ozs7SztLLDBCO0ssTzs7Ozs7OzttQzs7OztJO0ksUTs7ZTs7SSwwQjtJLEk7STtLOztJLE87Ozs7a0M7Ozs7OztJOzs7Ozs7Ozs7O00sRztPLE87Ozs7O0ksMEI7SSwwQjtJLE87Rzs7STs7O087OztRLDRCO08sTzs7OztxQzs7Ozs7TyxpQztPLE87Ozs7cUM7OztPOztRO1EsNEI7UTsrQjtPLE87Ozs7O1EsTTs7Tzs7MEI7OzBCOztPOzs7USw0Qjs7OztXO1c7Ozs7YTtjOzs7ZTtzQztjOzs7O2dCOzs7OztjOzs7O1k7Ozs7Yzs7c0M7YyxPOzs7OzRDOzs7Ozs7WSxPOzs7OzBDOzs7VTtPLE87Ozs7Z0I7Ozs7Ozs7Ozs7OztZOzs7YTthO29DO2E7b0M7YTtvQztZLE87Ozs7cUI7Ozs7Ozs7O1c7VztZOzs7VywwQjtXLE87Ozs7b0I7Ozs7OztPO1EsTTs7O1E7Ozs7OztZLG9CO1ksTztXOztTO2dDO1MsNEI7Uyw0QjtRLE87Ozs7aUI7Ozs7Ozs7Ozs7Tzs7OztXLG9CO1csTztVOztRLDRCOztRLDRCO08sTzs7OztnQjs7Ozs7Ozs7Tzs7Ozs7USw0Qjs7O1csUzs7VztXLE87Ozs7eUM7O1U7TyxPOztPOztRO1EsNEI7O1EsNEI7TyxPOzs7Ozs7VyxPOzs7O3lDOztVOzs7Vyw4Qjs7Ozs7Ozs7O2E7Ozs7O2M7Ozs7OztXLEksTzs7Ozs7Ozs7O1c7VztZOztXLDBCOztXO1k7O1csMEI7VyxJO1c7WTs7VztZOztXLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxVOztvQjtPOztROztXOztROztROztXOztPLE87Ozs7O2lCOzs7Ozs7MkI7O087O1E7USw0Qjs7TyxPOzs7O3FDOzs7Ozt5Qjs7O087Tzs7Rzs7O0ksMEI7Ozs7Ozs7OztJLE87OztJLFE7SSwwQjtJLE87Ozs7O2M7Ozs7Ozs7Szs7Ozs7SztLLDBCO0ssMEI7O0ssTzs7Ozs7OzttQzs7Ozs7Ozs7STtJLFEsTTs7ZTs7SSwwQjtJLEk7STtLOztJLE87Ozs7a0M7Ozs7Ozs7SztLLDBCOztLLDBCO0ssTzs7Ozs7Ozs7Ozs7STs7SSxPOzs7OztjOzs7Rzs7cUIsa0Isd0I7O0s7aUI7OztlOzs7OztxQzs7ZTs7OztxQzs7STs7SztLOztJOzt1Qix3Qix3QjtLOzsrQjs7Ozs7O1UsYSxPOztVLE87Ozs7O29COzs7O1M7TSxPOzs7SyxPOzs7Ozs7O2U7OztJOztLOztNO00sMEI7TSxPOzs7O29DOzs7O0s7SyxPO0k7SSxPO0c7OztLLE87Ozs7O2U7OztJO0k7SSwwQjs7STtLOzs7SSxPOzs7OztjLFE7YywwQjtjLE87Ozs7O3dCOzs7YTs7Ozs7Ozs7OztHOzs7Ozs7Ozs7O0ssUzs7SyxPOzs7OztlOzs7STtJO0s7O00sNEI7SyxPOzs7Ozs7OztlO2dCOztpQjt3QztnQixPOzs7OzswQjs7Ozs7Ozs7ZSwwQjtlLDBCO2UsSTtlLE87Ozs7O3lCOzs7OztjOzs7OztJLDBCO0ksTzs7Ozs7O2M7O2UsTzs7Ozs7eUI7Ozs7O3NCO2MsMEI7YyxJO2MsTzs7Ozs7d0I7OzthOzs7Ozs7STs7O0s7O0ksbUI7SSwwQjtJLE87Rzs7O0s7Ozs7TTtLLDBCO0ssMEI7SztLLDBCO0ssTzs7OzttQzs7Ozs7OztJO0c7O0ksZ0M7Ozs7Ozs7Ozs7Ozs7SSwwQjtJOztLLE87ZTtlOzs7OztxQzs7OztJLE87YztjOzs7OztvQzs7OztJOzs7eUIsTzs7O3FCLE87O08sTzs7MEIsTzs7O08sTyx3Qjs7Rzs7STtLOztNOzZCO007OztLLE87Ozs7O2U7Ozs7O2dCLE87O0ksTztHOztJLE87Ozs7a0M7O0c7O0k7STtJO0ksTztHOztJO0k7STtJLE87Rzs7STtJO0k7SSxPO0c7RyxpQztHLCtCO0csaUM7RyxpQztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RztJOztHO0k7O0c7STs7RywrQjtHLCtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssaUM7OztJO0c7O0k7STttQjtnQjtLLG9COztHOztJO0k7Z0I7O0ssUyx1Qjs7O0c7O0ksUzs7STtHOztJLGlCO0c7O0k7Ozs7Ozs7O2dCOzs7Rzs7STs7Ozs7Ozs7Z0I7O0ksTztHOzs7SSxhOztLLFk7a0I7a0I7SyxPO0k7SSxPO0c7OztLLFk7SyxPO0k7SSxPO0c7O3lCLHFCLFk7eUIsdUIsYzt5QixzQixhO0k7SztHOzt1QyxnQztJO0s7RztHO0k7STtJO0k7O0k7Ozs7Ozs7Rzs7STs7SyxNOztLLHdCLE87SyxPOztJOzs7SyxPO0ssTztJLE87Rzs7STs7SyxNOztJO0c7O0k7STs7O2EsWTthO2E7WTtHOztJO0k7OzthO2MsUzs7O2E7YTtZO0c7O0k7OztLOzs7STtLLFc7Szs7OzsrQjs7Ozs7cUIsd0I7SSxPO0c7O0k7SyxJO0ssSTs7OztJO2dCLE87SyxJLGlCLEksOEI7Ozs7Ozs7TTtNLEk7OztLO00sc0I7Ozs7O0c7O0k7bUM7STtLLE87SyxPO0ssTztJLE87RztHOzs7STs7SyxJOztJO2dCLE87SyxJLGlCLEk7SzttQixNO007OztPO1EsTTs7O087Ozt1QixNO007TztTO1c7TyxPO007Ozs7OztNOzs7OztHOztJO0k7Rzs7STtLLEk7SyxPO0ssTztJO0ksYTtJO0c7O0k7OztHOzs7Ozs7Ozs7SSxTLE87STs7Szs7O0ksTzs7b0IsYyw2Qjs7SSxVLE07SSxrQjs7O0s7O08sYztPOzs7Ozs7OztHO3NCLGMsbUI7O0k7STs7O0c7c0IsWTtzQixrRDs7SSxzQjs7Szs7TTs7Ozs7Ozs7Ozs7SyxPO0k7SSxRO0k7O00sTTtLOzs7TSxJO007TTs7OztPLEksd0M7Ozs7Uzs7O1c7O1M7Ozs7O087Ozs7O0ssYzs7O0ssTTtJOzs7O0ssTTtLO0s7Ozs7O00sSSxZOzs7Ozs7OztTOzs7OztROzs7OztNLHVCO007Ozs7O0ksYztHOztJO0ssSTtrQjs7STtHOztJLGdDOzs7O1E7O1E7UyxJOzJCOztROztRO1MsTTs2Qjs7UTs7USxPOzs7Z0I7aUI7Ozs7SyxNOztnQjthOzs7YTs7O2E7Ozs7Ozs7O0k7OztHOztJO0ssTTtJLHNCOzs7OztPLE07TTs7Ozs7O0ssSTtLO2dCO007TSxHOzs7TztROzs7Ozs7O0k7SSxXOztLOztJO0k7SSxJLGUsc0I7O0s7OztNO087Ozs7Ozs7O1U7Ozs7WSxNOztXO1csSyxrQzs7Ozs7Ozs7Ozs7O087TyxJOzs7Ozs7Ozs7Ozs7OztPO087Ozs7Ozs7TTs7O0k7STtJO0c7Ozs7Szs7O007O0ssTTs7SSxNOzs7STs7O0ssVzs7OztJLHNCOztLOztLO0k7SSxJLFEsOEM7O0ssTTtJLEksWTs7SztNLGlCOztPOzs7UTs7OztPOzs7OztJO0ksVztJO0c7a0Q7O0k7O0s7SztJOzs7SSxXO0ksTztHOzs7O0s7Szs7SSxNOzs7STtLLE8scUI7SSxNO0c7Ozs7SztLO0s7O0ksTTs7O0ksWTtJO0ksVztHOztJLFc7SSxtQztHOzs7SSxvQjtJOzRCOzs7O0csSSxtQjt1QixXO0c7STs7OzsyQixTOzs7Ozs7O1M7UztzQjtVO1csUzs7Ozs7UTs7UztTLE07UTtxQyx5QixTO29DLHlCLFM7O1M7UzttQjttQjtRO2dDLDJCOztTO1E7O1M7O1U7Vzs7O1UsZSxPOztVLE87OztxQixPO1MsTTtROztTO1M7UTs7UztROztTO1M7UyxNO1E7OztTO1M7UTs7Uzs7VTtVOztvQixTOzt5QyxTOztxQjtvQjs7Ozs7cUUsUzs7OzttQjs7UztTOzswQywrQjs7O1E7OztTO21COztROztTO29CO1M7O1U7UyxPO1E7O1M7b0I7Uzs7VTtTLE87UTs7UztvQjtTOztVOztVO1MsTzs7UTs7UyxlO1E7O1MsZTtROztTO21COztRO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UyxvQjtTO2lDOzs7UztVLE07O1M7bUI7bUI7UTs7UztTLEcsVztVO1MsTTtROztTLEcsVztVO1MsTTtROztTO1M7UTs7UztTO1E7O1M7Ozs2Qjs7VTs7OzhCOztTO1E7bUQseUI7O1M7Ozs7O1U7Uzs7O1M7VTtVO1U7UztROztTO1MsTztROztTO1MsTztROzZCLHVDOztTO1U7VTtTLE87UTs7UztVLE07O1E7O1M7UztROztTLEksZTtTO1E7O1M7Ozs7OztTO1E7O1M7Uzt3QjtVO1csUzs7Ozs7UTs7UztTOzs7O21CLE8sYztrQjs7UTs7UztTOzs7O21COzs2QixjO2tCOztROztTLE87UTttQyx1QjsrQix1Qjs7UztVOztXOzs7O2M7YzthO1UsTzs7Ozs7Ozs7OztTOztVOztVLFE7cUI7Uzs7VTtTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTO1M7O1c7Vzs7OzsyQjs7VztXOzs7UTs7UyxvQixXO1MsTztROzs7Ozs7O1MsSSxRLHdCLFU7OztVO1U7VSxPOztTO1E7O1M7O1E7O1MsbUMsTztTO1M7UyxpQjs7OzBDLGtDO3dDLGlDOztTO1MsWTs7VTs7VyxPO1csTztVO1U7VSxXO1UsTzs7Uzs7UTs7UztTOztROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVLFE7O1M7O1UsTzs7Uzs7VTtXOztZLE87WSxPO1csTzs7Ozs7Ozs7OztrQjtVO1M7O1UsUTtVOzs7O1c7VztVO1M7O1UsSyx5QjtrQjs7VTtTOztVLFE7VSxJLFk7Ozs4Qjs7O1U7VyxVO1c7VTtTOztVLFE7VTtVO1M7O1U7OztVO1U7Uzs7VTs7VztZO2E7Ozs7YyxPO2E7O1k7WTs7VSxPO1M7O1U7Ozs7VTtXOzs7Yzs7O2M7Ozs7ZSxNO2M7ZTs7a0IsMkI7a0IscUI7b0M7a0I7a0I7O2U7O2tCLFE7Ozs7O2U7O2tCLEcsOEI7MkI7Ozs7bUI7O2tCLE07OztjLE87OztVLE87Uzs7VTtXLFE7Vzs7VTtTOztVO1U7Ozs7O1c7WSxNO1c7O2M7ZSxTO2UsZTtlOzs7Ozt1Qzs7YztlO2U7Ozs7O1M7O1UsMEI7VTs7O29COzs7Uzs7VTtVOzs7O2U7Z0IsUztnQixlOzs7O3dDLE87OztlO2dCOzs7O1csTzs7Uzs7VTs7Ozs7O1csTTs7OztXO1k7O2U7Z0IsUztnQixhOzs7O3VDLE87OztlO2dCOzs7O1csTzs7Uzs7VTtVOzs7OzBDOztlO2dCOzs7O2U7O1csTTs7Uzs7VTtXO1csZTs7Uzs7VTs7O3FDO21CO21COztTOzZCLDJCOztVLG1COzs7O1M7O1U7O1c7WSxNO2tCOzs7VTtTOztVO1M7OztVOzs7VTs0QixTO2tDLFM7VSxPO1M7O1U7Uzs7VSxtQjs7Uzs7VSxLO1csTztVLEc7VyxNO1U7VyxRO1csVTtVO1M7b0MsZ0I7O1U7VTt5QjtXO3VCO1csc0I7O1M7O1U7c0I7O1U7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7O0k7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7STs7OztJOzs7O0k7Ozs7STs7O0k7SSxPO0c7O0k7SSxPO0c7NEIsTyxzQzs0QixPLHVDOzZCLGdDOztJLGlCLDZCO0k7Rzs7STtHO2dDLHlDOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzBCLDhCOztJO0ksTztHOztJO0c7O0ksMEM7OztJLE87Rzs7STtHOztJO0s7TTs7O087OztPO087TTs7SztLLGdDO0c7O0k7SztNOzs7Tzs7O087TztNOztLO0ssZ0M7RzsrQixnQzs7O0k7K0I7OztLLE07O0k7OztJLFk7O0k7OztJLFk7O0k7OztJLE07Rzs7STtLO0s7SSxNO0c7O0k7SSxNO0c7O0k7SSxNO0c7O0k7Ozt3QjtJOzs7Ozs7Ozs7Ozs7Ozs7OztRO1EsTTs7OztJO0c7O0kscUI7Ozs7Ozs7Ozs7OztnQjs7Z0I7OztNOzs7STtHO0c7Ozs7SSxzQixtQixvQjs7Rzs7STs7O0s7SztLOzs7SztPOzs7Ozs7STs7OztJOzs7STs7Szs7STtHO0c7O0k7Ozs7OztLO0ssUTs7O0ssSztJOzs7O0ksVztJOzs7SSxJO0k7Rzs7STtJLFc7Rzs7STtJO0c7eUIsaUM7O0k7OzRCLFcsOEI7SSxPO0c7O0ksbUMsYztJLE87Rzs7STtJLE87Rzs7Z0Msc0M7SSxPO0c7O0k7OztJOzs7Ozs7ZTtHOztJO0s7OztLLE87SztJLFU7OztHOztJO0s7OztLLE87SztJLFU7O0k7Rzs7SSxxQztjOztJOzs7SSxxQztjO0k7O0s7SztJLE87OztJOzs7Ozs7SyxTO0s7STs7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0ssTztLLE87dUIsd0I7SSxPO0c7O0k7SztNLGE7TSxjO00sTztNLE87TSxPO0ssTzs7STtLLE87SyxnQjtLLE87SyxPO0ksTztHOztJO0c7O0k7Rzs7STtHOztJOzs7O2MsVztpQyx3QjtjLE87YTs7Rzs7STtLLE87SyxPO0k7Rzs7STs7OztLO3FDO0k7Ozs7O1k7Ozs7O0k7YTtJO0c7O0k7STtHOztJO0ssTTtJOztLLG1CO0sscUM7dUI7dUI7dUI7O00sTTs7TSxNOzs7TSxNOztLO0k7STs7OzJCOzs7O1EsMEM7USxrQjs7OztJO0c7cUMsNkI7O0k7Rzs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztRO2dCOzs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7RztHOztJOzs7d0I7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzswQjs7MEI7OzBCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjs7MkI7OzJCOzsyQjttQzs7Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7OztROzs7Ozs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0s7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0ssSztLLE87SztJOzs7STs7Szs7Ozs7OztLLEs7SyxLO0s7STtHOztJOztLOzs7OztLO0s7Tzs7VTs7OztJO0c7O0k7O0s7Ozs7O0s7SztPOztVOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SyxNO0s7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJLE07Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLLE87SztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLOztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0ssTztLLFE7SztLLEk7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SyxPO0ssUTtLO0ssSTtJOzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7SztLLFE7SztLLE87SztPO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Szs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLLFE7SyxPO0s7Tzs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLE87SztLLFE7SztPOztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztJO0k7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7Szs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0ssTztLLGdCO0s7SztJO0c7O0k7O0s7Ozs7O0s7OztLOzs7Ozs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7O0k7STtLLFc7SyxPO0s7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7O0ssSztLO0s7SyxLO0k7STtLLE87SztJOzs7STs7Szs7Ozs7SyxLO0ssSztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLOzs7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssTztLLFc7SztPO0ssUTtJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SztLOzs7O0s7STtJO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7OztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztLO0ssSztLLEs7SztLOzs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLOztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0s7SztLLEs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0ssSztLLEs7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLOztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0ssSztLLEs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLO0s7SyxLO0ssSztLO0s7SztJOzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0k7STtLO0s7SztLO0s7O0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7OztLLEs7SztLLEs7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztLLFc7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLLGlCOztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7OztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLOztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7O0s7O0s7STtHOztJOztLOzs7Ozs7Szs7SztJO0c7O0k7O0s7Ozs7OztLOztLLFE7STtHOztJOztLOzs7Ozs7Szs7SyxRO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLO087Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7TztLO0s7SztJOzs7STs7Szs7Ozs7Szs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztLO0k7OztJOztLOzs7OztLOztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0ssTztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztJO0k7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssSztLO0s7SztLLE87SyxRO0s7O1E7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Szs7Szs7O0k7SyxNO0k7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7O0s7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLE87Syx5QjtJO0c7O0k7O0s7Ozs7O0ssUTtLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SztLLE87SyxXO0s7Tzs7Ozs7Ozs7OztLLFE7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7Szs7Ozs7Ozs7SztNOzs7O0k7SztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7Ozs7SyxJO0ksSSx1QjtJOzs7STs7Szs7Ozs7Ozs7O0s7Szs7OztLLEk7SSxJLHVCO0k7Rzs7STs7Szs7Ozs7Ozs7SztLOzs7O0ssSTtJLEksdUI7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7SztLLEk7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLOzs7OztLO0k7Rzs7STs7Szs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7OztLOzs7Ozs7O0s7Tzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7O0s7Ozs7Ozs7SztPOzs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7Szs7Ozs7OztLO087Ozs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7O0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLOztROzs7Ozs7Ozs7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SyxJO0k7Rzs7STs7Ozs7Ozs7O0ssTztLO0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0ssSztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Szs7OztLO0s7STtHOztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0ssVztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0ssVztLO0s7STtHOztJOzs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLLEk7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7O0s7SztLO0s7Ozs7SztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7Szs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLO0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7OztLLE87SyxPO0ssTztLLEk7STs7O0k7O0s7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7OztJOztLOzs7Ozs7OztLLE87SyxPO0ssTztLLEk7STtHOztJOzs7Ozs7Ozs7O0ssTztLLE87SyxPO0ssSTtJOzs7STs7Szs7Ozs7Ozs7SyxPO0ssTztLLE87SyxJO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7O0s7STtHOztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7STtHOztJOztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0s7O1E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7OztLLEs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SyxlO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0k7STtLLE87SyxPO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Ozs7Ozs7Ozs7O0s7STtJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLFE7SztLLE87Szs7UTs7O0k7OztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7SztLO0k7STtLLE87SyxPO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7O0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7OztLO0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOzs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7OztLOztLO0s7O0k7SSxNO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOzs7Ozs7OztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLOzs7Ozs7Ozs7SztLO0s7OztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7Ozs7SztLO0s7OztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7O0s7SztLLE87SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SyxPO0ssUTtLO0ssTztLO0k7OztJOztLOzs7Ozs7O0s7SztLLE87SztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLG1COzsyQjtLLE87SyxRO0s7SyxPO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0ssTztLOztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLG1COzsyQjtLLE87SyxRO0s7SyxPO0s7O0s7STs7O0k7Ozs7Ozs7OztLO0s7SyxPO0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7O0ssSTtJOzs7STs7Ozs7Ozs7O0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7Szs7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOzs7Ozs7OztLO007Ozs7STtLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7Ozs7Ozs7O0s7TTs7OztJO0s7SztJOzs7STs7Szs7Ozs7Ozs7STtJO0s7SyxJO0s7STtHOztJOztLOzs7Ozs7O0s7SztLLEk7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0ssSTtLO0k7OztJOztLOzs7Ozs7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxPO0ssTztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxPO0ssTztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SyxLO0k7STtLO0ssSTtLO0k7OztJOztLOzs7Ozs7SztLLEk7SztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLEk7SztJO0c7O0k7O0s7Ozs7OztLO0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxRO0s7SztLO0s7OztLLE87SyxRO0s7SyxPO0s7Tzs7Ozs7Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLLE87SztPOzs7Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0ssTztLO0ssTztLO087Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SyxRO0ssTztLLE87SztPOzs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7SyxPO0ssTztLO087Ozs7Ozs7Ozs7SztJOzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0ssUTtLO0ssTztLLE87SztPOzs7Ozs7Ozs7O0s7STs7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SyxPO0s7Tzs7Ozs7Ozs7OztLO0k7OztJOztLO0s7STtHOztJOztLOzs7Ozs7Ozs7OztLO0s7SztLOzs7Szs7SztLO0s7STs7O0k7O0s7Ozs7O0s7O0s7STtHOztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7OztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SyxRO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0k7OztJOzs7Ozs7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0ssTztLO0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLOzs7Ozs7TSxNOzs7STtLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7OztLOztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7O0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0s7Szs7Ozs7STs7O0k7O0s7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztLOztLO0s7STs7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7OztLO0ssbUI7OzJCO0ssVztLO0s7Tzs7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7O0s7Szs7O0s7SyxPO0s7SztPOzs7Ozs7OztJOzs7STs7Szs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7O0s7STtHOztJOztLOzs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7OztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7Szs7O0ssTztLLFE7SztLOzs7UTs7Ozs7Ozs7Ozs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLFE7SztLO0s7SztLO0s7OztLLE87SyxRO0s7Szs7O1E7Ozs7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SyxRO0s7SztLO0s7OztLLE87SyxRO0s7Szs7O1E7Ozs7Ozs7Ozs7OztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLOzs7SyxPO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SztLO0s7OztLLE87SztLO0k7OztJOzs7Ozs7Ozs7O0ssSztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7Ozs7SyxLO0s7STs7O0k7Ozs7Ozs7Ozs7SztJO0c7O0k7O0s7Ozs7OztLO0k7Rzs7STs7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7O0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7Ozs7SztLO0k7OztJOztLOzs7Ozs7O0s7Szs7O0s7STtHOztJOzs7Ozs7Ozs7O0s7SztLO0k7OztJOztLOzs7Ozs7STtHOztJOzs7Ozs7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0k7STtLO0ssSTtJO0c7O0k7O0s7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxPO0s7SztPOztJOzs7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssTztLO0s7Tzs7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0k7Rzs7STs7Szs7Ozs7O0s7STtHOztJOztLO0s7STtHOztJOztLOzs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7Ozs7SztLO0s7Szs7O0ssTztLO0s7SztJOzs7STs7Ozs7Ozs7O0s7OztLOztJO0k7SyxXO0s7SyxPO0s7STtHOztJOztLOzs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7SSxJLGtDO0k7Rzs7STs7Szs7Ozs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCOzs7SSxJLGtDO0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLLEs7SztLO0s7STtHOztJOztLOzs7Ozs7O0ssSztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0k7OztJOzs7Ozs7O0s7SztLOztLO0k7OztJOzs7Ozs7Ozs7Ozs7OztLLEs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7Szs7O0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7O0ssSztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SyxLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SyxLO0s7SztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Szs7O0s7SztPOzs7Ozs7Ozs7O0s7SztLO0s7STs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7OztJO0c7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztLLEk7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7O0s7SyxNO0s7STtHOztJOztLOzs7OztLO0ssTTtLO0k7Rzs7STs7Ozs7Ozs7O0s7STtHOztJOztLOzs7OztLO0k7Rzs7STs7Ozs7OztLO0k7Rzs7STs7Ozs7Ozs7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7Ozs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7STtHOztJOztLOzs7O0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7O0s7O0s7STtHOztJOztLOzs7OztLOzs7SztJO0c7O0k7O0s7Ozs7O0s7STtHOztJOztLOzs7OztLOztLO0k7Rzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLLFE7SztLLE87SztPOzs7Ozs7Ozs7O0s7STs7O0k7Ozs7Ozs7OztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Ozs7Ozs7Ozs7SztLO0s7SztJOzs7STs7Szs7Ozs7STtHOztJOztLOzs7Ozs7Ozs7Ozs7O0ssSztLO0ssSztLO0s7STs7O0k7Ozs7Ozs7OztLO0s7SztLO0s7STs7O0k7O0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7Ozs7Ozs7OztLLEs7SztJO0k7SztLO0s7SztLO0k7OztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7Ozs7STtHOztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLEs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7OztLO0s7SztLO0s7SyxLO0s7STs7O0k7O0s7Ozs7Ozs7SyxJO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7OztLLEs7SztJO0k7SztLO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7SyxLO0s7SyxLO0s7SztJOzs7STs7Szs7Ozs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7OztLO0s7SztLO0s7STtHOztJOztLOzs7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7SztLLE87SztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLOztLO0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7SztLO0s7SztLO0k7Rzs7STs7Szs7Ozs7OztJO0c7O0k7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7STtHOztJOztLOzs7OztJO0c7O0k7O0s7Ozs7Ozs7Szs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7O0s7OztLO0s7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7O0s7SztLO0k7Rzs7STs7Ozs7Ozs7OztLO0s7SztJOzs7STs7Szs7Ozs7O0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SyxPO0s7STs7O0k7O0s7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7Ozs7OztLO0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7OztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7OztLO0s7O0ssTztLOzs7YTs7O0k7OztJOztLOzs7Ozs7Ozs7Ozs7SztLLE87Szs7O2E7OztJOzs7STs7Szs7Ozs7Ozs7Ozs7O0s7SyxPO0s7OzthOzs7STs7O0k7O0s7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7OztLLEs7SztLO0s7STtHOztJOztLOzs7Ozs7O0ssSTtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7SztLO0ssSztLO0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0s7SztLO0s7SztLLEs7SztJOzs7STs7Ozs7Ozs7O0s7OztLOztJO0ksZTs7SyxNO0k7SyxPO0s7STtHOztJOztLOzs7Ozs7OztLLE87SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7O0s7SztLLEk7STtHOztJOzs7Ozs7Ozs7SyxPO0ssTztLO0ssSTtJO0c7O0k7O0s7Ozs7O0s7SyxJO0k7Rzs7STs7Szs7Ozs7SztLO0s7STtHOztJOztLOzs7Ozs7Ozs7SyxLO0ssSztLO0s7SztJOzs7STs7Szs7Ozs7OztLLEs7SztLO0s7STs7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7Ozs7SyxLO0s7SztLO0k7OztJOztLOzs7Ozs7O0ssSztLO0s7SztJOzs7STs7Szs7Ozs7OztLO0s7SztJO0c7O0k7Ozs7Ozs7Ozs7O0s7SztLLE07SztLO0s7STs7O0k7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7STtHOztJOztLOzs7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztJO0c7O0k7O0s7Ozs7Ozs7Szs7SztLO0s7STtHOztJOzs7Ozs7Ozs7OztLO0s7SyxNO0s7SztLO0k7OztJOztLOzs7Ozs7OztLO0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7O0s7SztLO0s7SztJO0c7O0k7O0s7Ozs7SztLO0k7Rzs7STs7Szs7Ozs7O0s7SztLO0k7Rzs7STs7Szs7Ozs7Ozs7Ozs7OztLO0s7Ozs7SztLO0s7O0s7Szs7Syw0QjtJOzs7O0k7OztJOztLOzs7Ozs7O0k7Rzs7STs7Szs7Ozs7SztJO0c7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7Ozs7Ozs7OztLO0ssUTtLO0k7OztJOzs7Ozs7Ozs7SztLO0s7STs7O0k7O0s7Ozs7O0k7Rzs7STs7Szs7OztJO0c7RztJOzs7UTs7Uzs7OztRO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHO3dELE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO007Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7STtHOztJLE87Rzs7SSxPO0c7O0ksb0I7RztHLEkscUM7OEIsMEM7Rzs2Qix1QjtHOztJO0c7O0k7OztLO0s7Ozs7OztJOzs7STtJOzs7MEI7SSxjOzs7STtJO0c7O0ksZ0I7O0k7SSxJLFUsNkI7STtJO0c7O0ksTTswQjtHOztJLE07Rzs7STs7OztNLFU7Ozs7Ozs7Ozs7TyxNOzs7TyxNOztNOzs7Ozs7Rzs7STs7OztTOztTOztTOzs7c0I7STtHOztJLGdCO0ksTTs4QjtHOztJOzJCLE87STs7cUM7Rzs7STsyQixPO0k7O3FDO0c7O0k7SSxPO0c7O0ksVztJO0c7O0k7STs7Ozs7OztHO0csSSx1Qjs7SSxXO0ksTzs7RztHLEksNEI7O0k7O0c7O0k7Rzs7SSx1Qjs7OztpQjs7TTtPLFU7Yzs7OztROztTLE87Z0I7OztROzs7Uzs7WSxrQjs7WSxPO1c7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7OzttQjs7UTs7UyxlO2dCOzs7OztnQjs7Ozs7Z0I7OztROzs7Uzs7WSxvQjs7WSxPO1c7Z0I7O0k7RztHOztJLGE7STtJO0ssTzs7STtHOztJO0k7Szs7UTs7Ozs7OztVOztVOzthOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVOztVO2tCO1U7O1U7a0I7VTs7VTtrQjtVOztVO2tCO1U7O1U7O1UsbUI7VTs7OztTLFM7cUM7UztTO1UsTzs7Uzs7UyxnQzs7UztVLE87O1M7O1M7O1M7O1M7O1M7O1k7O1M7Uzs7Uzs7WTs7UztTOztTOztTOztZOztTO1M7O1M7O1k7O1M7Uzs7UzttQjtTO1UsVztVOzs7O2lDOzs7O1M7bUI7UztTOztTO21CO1M7O1M7bUI7UztTOztTO2dCO1M7O1M7VTtZOztVLFE7Uzs7UztrQjtTOztTO1U7WTs7VSxVO1M7O1M7O1k7Uzs7UztVOzs7Uzs7UztVO1k7O1U7OzZCOzs7Uzs7UztVO1k7O1UsVztVOzs2Qjs7O1U7Uzs7UztVO1U7WTs7VTtVLFU7VSxhO1U7OzZCOzs7VTtTOztTO1U7WTs7VSxhO1U7OzZCOzs7VTtTOztTO1U7VTtZOztVO1UsVTtVLGE7VTs7NkI7OztVO1M7O1MsZ0M7O1MsUTtTOztTLFU7Uzs7Uzs7Uzs7Uzs7Uzs7WTs7Uzs7Uzs7UztVOzs7Uzs7UztVOzs7O3dCOzRCOztTO1U7WTs7VTs7O2UsYTtlO2M7Ozs7Uzs7O1UsVztVOztTO1U7OztTOztTOztZOztTLDJCO1UsVztVLFk7O1MseUI7O1MsWTtTOzs7O1M7O1M7UyxzQjtTO3VCOztVOztVO1c7O2M7Ozs7OztXOzs7VTtXO1c7VyxNO1c7VztXLFM7VztXLFk7OztXLEksZTs7Ozs7OztrQjs7OztXOzs7VTs7OztvQzs7OztTOztTOztTOztTOztTOztTOztTOztTOztTO2lCOzs7Szs7O0c7MEI7O0k7a0I7O0s7TTs7Uzs7O007Ozs7OzttQztROzs7OztTLE07OztTLE87Ozs7UTs7OzhCO1E7OztZOzs7Ozs7Vyx3Qjs7WSxNO1c7O1ksTztZLFE7O1c7Ozs7Ozs7UTs7O1E7O1M7UyxROzhCO1E7OztZOzs7Ozs7Vyw0Qjs7WSxNO1c7O1ksTztZLFU7O1c7Ozs7Ozs7UTtRO1E7OztROztRLGdDOztROztROztROztROztROzs7O1MsTTtROztTLE87UyxVOztROztRLGdDOztRO2dCOzs7Rzs7STtrQjs7SztNOztTOzs7TTs7Ozs7OztROztTO1MsUTtRO1Esa0I7OztRLFE7UTs7O1E7O1E7O1E7OztRO1MsTTtTLE07Uzs7Ozs7O1M7VTtVO1k7ZTtzQztRO1M7O1M7Ozs7UyxVO1M7O1E7Ozs7UyxVO1M7O1E7UTs7OzZCOztRLFU7UTs7O0c7O0k7O0s7TTs7Uzs7O007Ozs7O1EsZ0M7OzZCOztROztXOztRLEc7UTs7O1EsUTtROzs7Rzs7STtJO0s7O1E7Ozs7O1M7O1M7aUI7O0s7OztHOztJO2M7O0ksTztHOztJLGU7O0s7SztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7VTtVO1csTTtXLE07VyxVO1U7VSxHLGtCOzs7Ozs7Ozs7OytCOzs7Ozs7Ozs7Ozs7Ozs7OzBCOzs7Ozs7O1U7Ozs7Ozs7Ozs7O00sYzs7Ozs7UyxVO1M7UyxVO1M7OztTLFU7UztTOzs7Ozs7UyxVO1M7UztVLE07VSxNO1M7UztVLE07VSxNO1M7UyxVO1M7OztTLFU7UztTO1UsTTtVLE07UztTLFU7UztTLFU7UztTOzs7TTs7STtJO0c7O0k7Ozs7Yzs7SSxPO0c7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxZOztJO0c7O0k7SyxJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7O0c7O0k7O3NFO0k7Rzs7STtLO0s7SyxVO0s7Szs7Szs7Ozs7Ozs7TyxLO087TyxNOzs7Ozs7TyxVO08sRztRO08sTTs7TSxHO087TyxNOzs7OztHOztHLDZCO0c7RywwQjtHO0csOEI7RztHLHVCO0c7Ryx3QjtHO0cseUI7RztHLHNCO0c7RywwQjtHO0csMEI7RztHLHdCO0c7Ryx3QjtHO0csMkI7RztHLG1DO0c7RyxpQztHO0cseUI7O0ksOEI7Ozs7Tzs7Ozs7UTs7ZTtjOzs7Ozs7Yzs7Ozs7O2M7OztpQzs7Ozs7OztVOzs7O2lDOzs7Ozs7Yzs7Ozs7O2M7OztpQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O0c7O0kscUI7STtLLGE7O0ksMEI7O0ksMEI7STs7a0I7Rzs7STs7cUIsTzs7O08sTzs7OztPLE87Ozs7Ozs7OztHOztJLE87Rzs7STs7Ozs7Ozs7Rzs7STtHOztJLGlCLE87O0c7O0ksWSxPOztJLE87OztJOzs7TyxPOztxQixPOzs7O1EsTzs7TyxPOzs7O08sTzs7O0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0k7YztjO0c7O0ksVztJO0ksTztHOztJLFE7STtJLFc7STtJO0c7O0ksUTs7STtJLE87Rzs7SSxPO0c7OEIsTyxpQzs7SSxPO0c7O0ksTztHOztJLDhCOzs7SyxPOzs7SSxPOzs7O0s7STtJLE87Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7OztRO1E7OztRO1E7OztRO1E7Uzs7O1k7OzthO2E7YTs7O1k7WTtXO1EsTzs7O1E7UTs7O1E7Ozs7O1E7UTtROzs7a0I7bUI7aUI7Ozs7O1E7Ozs7O1E7UTs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7O1EsTzs7O1E7Ozs7O1EsTzs7O1EsTzs7OztRO1E7OztRO1E7OztrQjtrQjtrQjtpQjs7Ozs7UTtROzs7UTtROzs7UTtROzs7UTtROzs7OztRO1E7UTtTLE87O1E7OztRO1E7OztROzs7OztRLE87OztROzs7Ozs7Ozs7UTtRO1MsTzs7UTs7O1E7Ozs7Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7O1EsTzs7O1EsTzs7O1E7UTs7Ozs7UTtROzs7UTtRO1E7UTs7Ozs7UTtRO1E7OztRO1E7UTs7O1E7UTtROzs7UTtROzs7UTtROzs7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTtROzs7OztRO1E7OztRO1E7UTtROzs7UTtROzs7OztRO1E7Ozs7Ozs7Ozs7UTtRO1E7UTs7Ozs7UTtRO1E7UyxPOztROzs7UTtRO1E7UTtTLE87O1E7OztROzs7OztRLE87OztROzs7OztRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7UTs7Ozs7UTs7Ozs7UTtRO1E7OztRO1E7OztROzs7OztRO1E7UyxPOztROzs7UTtROzs7Ozs7Ozs7UTtRO1E7Ozs7Ozs7OztRO1E7UyxPOztROzs7Rzs7STs7eUI7OzJCOzs7TztRLE87O087Ozs7O1E7UTs7UTtTLE87O1E7O087USxPOztPOzs7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OzBCLHNCOzs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OzBCLHNCOzs7OztTO1M7Ozs7O1M7Ozs7OztRO1E7Ozs7O1E7UTtRO1MsTzs7UTs7O1E7UTtTLE87O1E7Ozs7Ozs7UTtRO1MsTzs7UTs7O0c7O0k7OztJOzs7STs7O0k7OztJOzs7STs7OztJO0k7OztJO0k7STtJOztHOzs7STs7O0k7STtJO0k7STtJO0k7STtJO0ksZ0I7O21CLDJCOzs7SztLOzs7O0s7Szs7O0k7STs7Rzs7STtJOztHOztJOztLO0s7SztJO0ksTztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7UTtROzs7O1E7UTtROzs7OztRO1E7OztROzs7Ozs7Ozs7Rzs7STtJO0k7STs7Ozs7TztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOzs7Ozs7O087Tzs7Rzs7STtJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTtROzs7OztRO1E7UTs7O1E7UTs7Ozs7UTtRO1E7OztRO1E7OztROzs7Ozs7Ozs7Rzs7O0k7STtJOzs7STtJO0k7STs7Ozs7TztPO087Ozs7Ozs7TztPO087Ozs7Ozs7TztPO087OztPO087Tzs7O087Tzs7eUI7Ozs7Ozs7TztPOztHOztJOztLO0s7OztJO0k7OztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPOzs7TztPO087OztPOztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087Ozs7OztPOzs7TztPO087OztPO087OztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7SSxZOztJOzs7STs7O087Tzs7O08sTzs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TyxPOzs7Ozs7O0c7aUMsdUM7O0k7STtJLEksaUI7Ozs7TztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087OztPO087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087O3lCOzs7Ozs7OztPO087Tzs7Rzs7STtJOztHOztJO0k7O0c7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7OztJO0k7OztLO0s7O0k7OztJO0k7STs7Rzs7STtJO0k7O0c7OztJO0k7Ozs7STtJOzs7O0k7STtJOzs7STs7Szs7OztNLE87O0s7SztLOzs7STtJO0c7Z0MsdUM7bUMsdUM7O0k7OztLO0s7Ozs7Ozs7STttQjs7Ozs2QixPOzs7cUIsTzs7TyxPOzs7TyxPOztPLG9CLE87TyxPOztHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXOzs7O0ksYzs7O0ksZ0MsTztJLFc7OztJLFk7O0ksVzs7OztJLGdCOzs7SSxlO0k7Ozs7SyxRO0ksTztHOztJOzs7O0ssUTtLLFU7STtLLE87STs7O08sTzs7Tzs7OztRLE87USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7USxPO1EsTztRO08sTzs7O087OztROztXOzs7O1ksTTtZLFE7VztZOzs7YSxPOzs7OEM7VyxPOztRLE87TyxPOztPOzs7USxPO1EsTztRO08sTzs7O08sZ0MsTztPLE87OztPOzs7O1E7O1c7Ozs7WSxNO1ksUTtXO1k7Ozs7YSxPO2EsTzs7OzRDO1csTzs7USxPO08sTzs7O087OztRLE87USxzQjtRLE87TyxPOzs7Tzs7OztRLE87USxzQjtRLHNCO1EsTztRO08sTzs7O08saUIsTztPLE87Ozs7STs7Ozs7Ozs7O0ssTTtLLFE7SztLLGU7SyxXO0ssSztLLEs7SyxLO0s7STtLOzs7O00sTztNLE87SyxXOztJO0ssVztLLE87SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7Ozs7OztJOztLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STs7Ozs7OztLLE07SyxRO0ssTztLLE87SztLO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7O0k7Ozs7SyxNO0ssUTtLLE87SSxPOzs7STs7Ozs7SyxNO0ssUTs7Szs7OztNLGU7TTtNLHNCO2lCOzs7STtJLE87Ozs7STs7OztLLFE7SyxVO0k7O087OztRLE87USxPO1E7TyxPOzs7TyxpQixPO08sTzs7Tzs7OztRLE87USxPO08sTzs7O08sbUIsTztPLE87O087OztRLE87USxPO08sTzs7Ozs7STs7OztLLFE7SyxVO0k7O08sa0IsTztPLE87O087Ozs7OztRLE87UTtPLE87OztPOzs7Ozs7USxPO1E7TyxPOzs7Ozs7Ozs7Tzs7OztRLE87USxPO08sTzs7O08saUIsTztPLE87O08sbUIsTztPLE87Ozs7STs7O0ssTztLLE87SyxPO0ksTzs7O0ksWTtJLGlDLE87STs7O0k7Ozs7SyxRO0ssVTtJOztPLGlCO08sTzs7TyxrQixPO08sTzs7Tzs7O1EsTztRO08sTzs7O087OztRLE87USxPO1EsTztPLE87OztPLGtCLE87TyxPOztPLGlCLE87TyxPOztPLG1CO08sTzs7OztJOztPLGtDLE87Tzs7Tyx1QztPOztPOzs7USxPO087O087OztRLE87Tzs7Tzs7O1EsTztPOztPLG9DO087Ozs7STs7O0ssUTtJOztPLGtCLE87TyxPOztPOzs7USxPO1EsTztPLE87O087O1EsTztRLE87TyxPOztPLGtCLE87TyxPOztPLGtCLE87TyxPOztPLGlCLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7TyxtQixPO08sTzs7Tzs7USxPO1EsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPOzs7USxVO1EsTztPLE87Ozs7STs7OztLLFE7SyxVO0k7O08saUI7TyxPOztPLG1CLE87TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7TyxpQixPO08sTzs7TyxtQixPO08sTzs7OztJOzs7SyxRO0k7O087OztRLFU7USxPO08sTzs7Tzs7O1EsTztRLE87TyxPOztPLGtCLE87TyxPOztPOzs7USxPO1EsTztPLE87O08sa0IsTztPLE87O08sa0IsTztPLE87O08sbUIsTztPLE87O087O1EsTztRLE87TyxPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOztPOztRLE87USxPO08sTzs7Tzs7USxPO1EsTztPLE87O08sbUIsTztPLE87O08sbUIsTztPLE87O087OztRLFU7USxPO08sTzs7OztJOzs7O0ssUTtLLFU7STtLLE87STs7TyxpQjtPLE87O08sbUIsTztPLE87O087Ozs7USxPO1EsTztRLE87TyxPOzs7TyxtQixPO08sTzs7Tzs7Ozs7USxPO1EsTztRLGU7TyxPOzs7Ozs7Ozs7Tzs7O1EsTztRLHNCO1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLGU7UTtPLE87OztPOzs7USxlO08sTzs7O087OztRLGU7USxPO1Esc0I7USxzQjtRLE87TyxPOzs7Tzs7O1E7USxPO08sTzs7O087Ozs7USxPO1E7USxPO08sTzs7O087O1EsTztRLE87TyxPOztPOzs7O1EsZTtRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O087Ozs7OztRLE87USxPO1EsTztRLE87TyxPOzs7Ozs7Ozs7O087OztRLE87USxPO08sTzs7O087Ozs7USxPO1EsZTtRLE87TyxPOzs7Tzs7O1E7USxPO08sTzs7O08scUI7TyxPOztPOzs7USxPO1E7TyxPOzs7Tzs7USxPO1Esc0I7USxzQjtRLE87TyxPOztPOzs7O1EsTztRLE87UTtPLE87OztPOzs7USxPO1EsTztPLE87OztPLG9CLE87TyxPOztPLG9CLE87TyxPOztPOzs7USxlO1EsTztPLE87OztPLG1CLE87TyxPOztPOzs7USxPO1E7TyxPOzs7TyxvQixPO08sTzs7Tzs7O1EsTztRLE87TyxPOzs7Tzs7Ozs7USxPO1EsTztRLE87USxPO08sTzs7O08sbUIsTztPLE87Ozs7STs7Ozs7SztLLE07SyxNO0ssTTtJLE87OztJOzs7O0ssUTtLLFU7STtLLE87STs7TyxpQjtPLE87O087OztRO1EsTztPLE87OztPLGlCLE87TyxPOztPOzs7USxPO1EsTztPLE87OztPOztRLE87USxPO08sTzs7Tzs7O1E7OzthOzs7YyxPO2Esb0I7YSxXO1k7O1E7TyxPOzs7Tzs7O1EsZTtPLE87OztPOzs7USxPO1Esc0I7USxzQjtRLE87TyxPOzs7Tzs7USxPO1EsTztPLE87O087OztRLE87USxPO08sTzs7O087OztRLE87USxPO08sTzs7O08sbUI7TyxPOztPLG1CLE87TyxPOztPLG1CO08sTzs7TyxtQixPO08sTzs7TyxpQixPO08sTzs7Tzs7O1EsTztRO08sTzs7Ozs7STs7OztLLFE7SyxVO0k7O087OztRLE87USxPO1E7TyxPOzs7TyxpQixPO08sTzs7Tzs7Ozs7USxPO1EsTztRLGU7TyxPOzs7Ozs7Ozs7Tzs7O1EsTztRLHNCO1EsTztRLE87TyxPOzs7Tzs7OztRLE87USxPO1EsTztPLE87OztPOzs7USxPO1EsTztPLE87OztPLGlCLE87TyxPOztPOzs7USxPO1EsTztPLE87Ozs7O0k7O0ssVzs7O0ksYzs7O0k7Ozs7SyxRO0ssVTtJOztPOzs7O1EsOEI7USxPO08sTzs7O087Ozs7O1E7UTtPLE87OztPOzs7OztRO1E7TyxPOzs7Tzs7OztRLE87USxPO08sTzs7O08saUIsTztPLE87O08saUIsTztPLE87O08sbUIsTztPLE87Ozs7STs7O0ssTztLLE87SSxXOzs7STs7Ozs7OztLLE07SyxRO0ssTztLO0ssTztJLG9CO0ksZTtJLE87Ozs7Ozs7Ozs7OztJOzs7Ozs7SyxPO0s7SyxXO0ssVztJLE87O0c7O0k7Ozs7O0ssTztLLE87SyxXO0ssVztJLE87Rzs7SSxXO0ksTztHOztJLFc7SSxPO0c7O0k7O3lCLFc7OzJCLFc7OzJCLFc7O087OztRLGU7TyxXOztHOztJOzs7OztLO0ssVztLLFc7SSxPOztHOztJOzs7OztLLE87SyxXO0ssVztJLE87O0c7O0k7Ozs7O0s7SyxlO0ssVztLLFc7SSxPO0c7O0k7Ozs7O0s7SztLLFc7SyxXO0ksTztHOztJOzs7OztLLE87SztLLFc7SyxXO0ksTztHOztJOzs7OztLLE87SztLLFc7SyxXO0ksTztHOzJCLFM7O0k7Ozs7OztLLE87SztLLFc7SyxXO0ksTzs7Rzs7STs7OztLLE87SyxXO0ssVztJLE87Rzs7STs7OztLLE87SyxXO0ssVztJLE87Rzs7SSxnQyxPO0k7Rzs7STs7Ozs7OztLO0ssZTtLO0ksb0I7STtLLFc7SyxXO0ssVztJLE87Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxXO0ksTztHOztJOzs7O0ssTztLLGU7SSxXO0c7O0ksVztJLE87RztHOzs7O1E7UyxPO1MsTztRO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE07O0k7SyxPO0k7O0s7O007TSxPO00sZTtLLE87Ozs7O0k7STtLLE87O0s7SyxPO0ssZTtJOzs7STtLLE87SyxlO0ksTzs7RztHOztJO0ssZTtLOzs7OzRCOzs7Rzs7SSxhOztHO0c7NkIsd0I7c0IsbUM7O0ksVztJLE87Rzs7STtLO0ssTzs7STtJLE87Rzs7STtLOzs7O00sVztNLFc7TTtLLE87O0k7SSxPO0c7O0k7SyxPO0s7OztVOzs7VztVLE87OztJO0c7O0k7SztLLE87SyxlO0k7Rzs7STs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7Szs7OztLOztNO007YTs7SztNO2E7STs7Szs7Syw4Qjs7Szs7SztLO0k7Rzs7STs7Ozs7Ozs7Ozs7O1E7Ozs7O0ksTztHOzs7SzswQjs7O007Ozs7Ozs7Tzs7TSxPO0s7O007Ozs7Ozs7OztROzs7Tzs7TSxPO0s7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7O1EsbUM7USxXOzs7O00sTzs7Ozs7Tzs7Ozs7Tzs7Ozs7Ozs7O087Ozs7O087Ozs7O087Ozs7O087TyxjOzs7OztPO1E7Ozs7Ozs7Ozs7OztjOzthLE87Ozs7OztXO1csTztVO29COzs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7O087Ozs7O087UTs7VyxtQixNO1c7VyxPO1U7UTtPLE87OztPOzs7OztLO0k7SSxPO0c7OztLOztNO0s7STtJO0ssVztLO0ksTztHOztJLFk7Z0IsTTs7O0s7O0k7Rzs7O0s7Ozs7Ozs7Ozs7Ozs7O0s7SztNO08sVztPLE87Ozs7TTs7Tzs7O0ssSSxtQztLLFc7STs7Szs7Ozs7Ozs7Ozs7Ozs7SztLO007TyxXO08sTTs7OztNOztPOzs7SyxJLG1DO0ssVztJO0k7SyxLO0s7TywyQjs7SyxVOztLLFU7SztLO00sUTtNLEs7SztLO0s7SyxPO0k7SSxPOztjOzs7aUI7O2dCO0c7O0k7Ozs7OztPLGM7Tzs7OztJOzs7STs7Ozs7O08sYztPOzs7O0k7OztJO0ksVztHOztJO0ksVztHOztJLGtELGM7Rzs7STtLLGtDO0s7TTs7O1U7VztZLE07WSxNLG1CO1c7OztXOztZO21DLE0sb0M7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087TztPOzs7TTtnQjs7Szs7O0s7O00sTTtLO0ssTzs7RztHLDhDLG1COztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztpRCxPO2lELE87OztJO0ksTzs7O0ksWTs7SSxPOzs7O0ksTzs7OztJO0k7O0ssc0IsTztLLE87OztJLE87Ozs7STtJOzs7SyxPOzs7SSxPOzs7O0k7STs7Ozs7UTtRLE87O1EsbUIsTztRLE87OztRO1EsVztRLE87O1E7O1Msc0I7USxPOzs7UTtRLFc7USxPOzt5QixPOztRLGtCLHNCO1EsTzs7MkIsTzs7O1E7UTtTLE87UyxzQjtTLHNCO1EsTzs7eUIsTzs7STs7Ozs7Ozs7Ozs7STtJLFc7SSxvQjtJO0k7SyxLO0ssSztLLEs7STs7SztLO0ssTzs7STtJO0ksUztJO0ksTzs7O0k7O0ssa0IsTztLLE87O0ksb0IsTztJLE87OztJO0ssa0IsTztLLE87O0ksb0IsTztJLE87Ozs7Ozs7OztJO0ksVztJO0ksVztJLG9CO0k7STtJLE87Ozs7Ozs7STtJO0ksTzs7Ozs7Ozs7STs7Szs7OztNLHNCO0s7SztLLFM7O2dDO0k7SSxPOzs7O0k7STs7OztPO08sVztPLE87O3dCLE87OztPO08sTzs7MEIsTzs7O087TyxPOzs7OztJO0k7Ozt5QixPOzsyQixPOzs2QixPOzs7TztPLE87O3dCLE87a0MsTzs7Ozs7STtJLFc7SSxPOzs7SSxZOztJO0ksTzs7OztJO0k7Ozt3Qjs7eUIsTzs7O087TyxPOzs7TztPLFc7TyxPOzt5QixPOzt3QixPO2tDOzs7O0k7OztPO08sTzs7O087Tzs7O087TyxPOzs7TztPLE87OztPO08sTzs7O087Tzs7Ozs7STs7O3lCLE87Ozs7Ozt5QixPOzt5QixPOzt3QixPOzswQixPOztPLG1CLE87TyxPOzswQixPOzswQixPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOzswQixPOzs7TztPLE87a0MsTzs7SSxXO0ksTzs7OztJO0k7Ozt3Qjs7MEIsTzs7O087TyxPOzs7TztPLE87OztPO08sTzs7d0IsTztrQyxPOzs7OztJOzs7O087TyxPOztPLG1CLE87TyxPOzt5QixPOztPLGlCLE87TyxPOzt5QixPOzt5QixPOzswQixPOztPLG1CLE87TyxPOzswQixPOzswQixPOztPLG1CLE87TyxPOztPLG1CLE87TyxPOzswQixPOzswQixPOzs7TztPLE87Ozs7O0k7STtpQzs7O3dCOztPOztPLGdDLE07TztPLE87OzBCLE87OztPLFM7TztPLE87OztPO087USxPO1Esc0I7TyxPOzs7TztPLE87OztPO08sTzs7TyxrQixPO08sTzs7O087TyxnQjs7eUIsZ0I7O087OztRLE87USxzQjtRLHNCO087TyxnQjs7O087Tzs7O087TztPLE87O08sb0IsTztPLE87OztPO087TyxnQjs7O087TyxPOzs7TztPLE87OztPO087TztPLE87OztPO08sTzs7O087TyxTO08sTzs7MEIsTzs7NEI7OztPO08sTzs7Tzs7USxPO1Esc0I7USxzQjtPLE87OztPO087TyxPOzs7TztPLE87OzJCLE87OzJCLE87OztPO08sZ0I7OzBCLE87OzJCLE87OzJCLE87OztPO08sTzs7Ozs7OztPO08sVztPO08sTztrQyxPOzs7Ozs7Ozs7STtJO0k7SSxPOzs7O0k7STtpQzs7O3dCOzs7TztPOztPOztPOztPLGtCLE07TyxPOzs7TztPOztpQjtpQixrQjtpQjtpQixPO2dCOzs7MEIsZ0I7O087O1EsTTtRLG9CO1Esb0I7TyxPOztPLG9CLE07TyxPOzs7TztPLE87OztPO08sTzs7MEI7OzBCLE87OzBCOzswQixPOzt3QixPOzs7TztPLE87Ozs7O0k7STs7OztPO08sVTtPLE87O3dCLE87OztPLFM7TztPLE87OztPO087USxNO1Esb0I7TyxPOztPLG1DLE07TztPLE87OztPO08sTzs7d0IsTzs7O087TyxPOzs7O0kscUMsTzs7SSxPOzs7O0k7STs7O3lCLE87OztPO087OztPO087OztPO08sTzs7d0IsTzs7d0IsTztrQyxPOzs7OztJO0ksVTtJLE87OztJOzs7Ozs7SyxNO0ksa0I7STtJO0k7STtJLE87OztJOzs7OztJO0k7STtJLE87Rzs7STs7Ozs7STtJO0k7SSxPO0c7O0ksVTtJLE87Rzs7SSxVO0ksTztHOztJOzt5QixPOzsyQixPOzsyQixPOzs7TztPLGdCOztHOztJOzs7O0k7STtJLE87Rzs7STs7OztJO0k7SSxPO0c7O0k7Ozs7O0k7SSxTO0k7SSxPO0c7O0k7Ozs7O0k7STtJO0ksTztHOztJOzs7OztJO0k7STtJLE87Rzs7STs7Ozs7STtJO0k7SSxPO0c7MkIsUzs7STs7Ozs7STtJO0k7SSxPO0c7O0k7Ozs7STtJO0ksTztHOztJOzs7O0k7STtJLE87Rzs7STtJO0ksTztHOztJOzs7Ozs7O0k7SSxrQjtJO0k7SSxTO0k7SSxPO0c7O0ksVTtJLHFCO0c7O0ksVTtJLHFCO0c7O0ksVTtJLHFCO0c7O0ksVTtJLE87Rzs7STtJO0ksUztJLE87Rzs7SSxVO0ksTztHO0c7STs7O1E7UTs7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7Ozs7Ozs7Ozs7b0IsdUQ7SSxZO2dCOzsrQzs7O0ssTTs7SSxNOztHOztJO0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7O3VCOztROzs7OztJO0c7O0k7Z0I7O0k7Rzs7SSxJOzs7OztLLE87Ozs7OztnQixNOzs7Ozs7O087OztROzs7O1k7O3FCLE87b0I7Ozs7Ozs7WTs7cUIsTztvQjs7Ozs7Ozs7Ozs7Ozs7OztlOzt3QixPO3VCOzs7Ozs7Vzs7b0IsTzttQjs7O1EsTTtPLE87Ozs7Ozs7OztJLE87Rzs7STs7Ozs7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7O0k7Rzs7SSxHLHNDO0ksVztJLE87Rzs7STs7Ozs7eUQ7O0s7O0k7Z0I7O0k7RzsyQixPLDJDOztJLEk7O0s7O007OzBDOztNO0s7SyxPO0k7SSxPO0c7O0k7O0s7SyxPO0k7SSxPO0c7O0ksSSw4Qjs7SyxjO2U7SztLLE87STtJLE87Rzs7STtJO21COzs7Ozs7Szs7Rzs7STtnQjtJOztLO0ssTTtJLE87Rzs7STtLO0s7STtLOztNO00sTTtLLE87O0k7Rzs7STs7OztNOzs7STtHOzhCLHlDOztJOzs7O007OztJO0c7K0IsMEM7O0k7O0s7SyxPO0k7SSxPO0c7O0ksTztHOztJOztLOztNOztLO007TyxNO08sTTtPLE07TTs7Ozs7O007O0k7STtLOzs7Ozs7Ozs7Ozs7Ozs7O1M7OztROzs7Ozs7Ozs7Ozs7OztXLGMsTzs7Ozs7OztNOzs7Ozs7Ozs7Ozs7Ozs7UyxJLFUsNEI7Ozs7OztVOzs7Ozs7Szs7Ozs7O2tFOzs7SSxXO0k7SztNLE07TTtLO0ssVTtLO0s7Ozs7SztLLE07O0c7O0k7Ozs7SztJO0c7Ryw4Qjs7STs7OztLO0k7RztHLHFCOztJOzs7O0s7STtHO0csZ0I7O0k7Ozs7SztJO0c7RyxrQjt3QixPLHdDOztJLGtCO0ksTztHOztJLGtCO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7STtJOzs7Ozs7OztLO2U7O0ssTzs7Rzs7O0k7SSxpQjs7SztJO0c7O0k7SSxpQjs7OzttRDs7Ozs7MkIsbUIsNEI7USxPOztJO0c7O0k7Ozs7Ozs7OztRLEs7UTs7Ozs7Szs7SSxrQjs7Ozs7O1E7OzJCOzs7cUI7OzsyQixtQiw0QjtRLE87O0k7Rzs7STs7Ozs7Ozs7O1EsSztROzs7OztLOztJLGtCOzs7Ozs0Qjs7NEI7Ozs7UTs7O3FCOzs7MkIsbUIsNEI7USxPOzs7Ozs7Ozs7O0s7O0k7Rzs7STs7dUI7O0k7Rzs7STtJLGlCOzs7MEI7O3NCOztJO0c7O0k7O3VCOztJO0c7RztJLE87Rzs7STtrQjs7STtHOztJOzt1Qjs7STtHOztJO0ksaUI7OztvQjs7b0I7O0k7Rzs7STtJLGlCOzs7b0I7OztRLE87OztJO0c7O0k7Ozs7Ozs7Z0I7Rzs7STs7Ozs7OztnQjtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MEIsTyx1QzswQixPLHVDOzs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJO0k7O0k7SSxXO0c7eUIsa0M7OztJLG9CO0ksVztJLFc7Ozs7O0s7SyxPO0k7SSxPOzs7SSxRLE07STs7O0ssUTs7O0ksSSxrQzs7OzRCOzs7Rzs7STs7dUIsTzs7Tyw4QjtPLE87ZSxNOztHO0c7O0k7Szs7Rzs7OztLO0s7OztRLEksSTs7OztvQjs7UTs7UTs7O1M7Ozs7OztROzs7Ozs7SSxJOzs7O0s7Szs7O0k7SSxPO0c7O0k7dUI7O0k7RztxQywrQjs7STs7OztLO0ksVztJLE07Rzs7STtJOzttQzs7O1E7OztROzs7O1EsbUIsc0I7USxPOzs7UTtRLDBCO1EsTzs7Ozs7O1k7WTs7YTs7O1k7VztRLE87OztRO1EsMEI7USxPOzs7Ozs7OztZO1k7YTs7YyxzQjthLE87OztZO1c7USxPOzs7OztRO1E7Z0Msa0IsUztTLE87UyxzQjtRLE87a0M7OztHOztJLFk7O0ksTzs7O0k7SyxrQixzQjtLLE87OztxQiwwQjtJLE87OztJOztLO0s7SztJO0k7STtJOzs7Szs7TTs7Uzs7UyxvQjtTLE87O0ssTzs7O3VCLDRCO0ksTztHOztJOzs7SztLLDBCO0ssTzs7O0k7Rzs7STs7SSxvQjtJLE87Rzs7STtHO0c7O0k7STs7bUM7OztROzs7O1EsbUIsc0I7USxPOzs7UTtRO3FDLGtCLGtCOzs7OzJCOzs7Ozs7WTtZO1k7VztRLE87O1EscUIsc0I7USxPOzs7UTs7Ozs7UTtROzsyQjs7OztROztTOzs7WTthOztXO1EsTzs7OzswQjs7UTs7O1M7Ozs7Z0I7OztHOztJO0k7O0c7O0k7STs7bUM7OzswQjs7UTs7UTs7OztTOzs7Ozs4Qjs7O1E7USxJOzs7O1E7OytCLGtCLHlCO1EsTzs7O1E7UTs7O1E7UTs7UTs7UyxxQjtRLE87OztRO1E7OytCOzs7Ozs7O1k7WTtZO1c7UTtROzs7UTtROzs7UTtROzs7O1E7O1MscUI7USxPOzs7UTtRO1E7OztROzs7OztROzs7OztRO1E7Ozs7O1E7UTs7O1E7UTtROzs7OzJCOzs7Ozs7K0Isa0IseUI7USxPOztROzs7O1M7Uzs7OztpQjs7Ozs7Ozs7Ozs7OztRO1E7O1E7Ozs7UztTLHFCO1EsTzs7Ozs7UTtTLE87O1E7O1E7OztTOzs7OztROzs7OztTO1M7O2E7Yzs7O1MsTzs7Ozs7Ozs7Ozs7Ozs7OztXLG1COzs7Ozs7O2E7OztXOzs7O1E7OztHOztJO0k7Ozs7MEI7OzBCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7O1E7Ozs7WTs7a0M7O21DOzttQzs7cUM7O29DOztxQzs7VztRLE87OztRO1MsTzs7UTs7MEI7b0M7OztHOztJO0k7Ozs7MEI7OzBCLHdCOzs7UTs7Uzs7Ozs7aUI7Ozs7Ozs7Ozs7O1E7Ozs7O1E7UTtTLE87O1E7OztRO1MsTzs7UTtvQzs7O0c7OEI7O0k7OztJOzs7STtLOzs7O007SztLOztJLE87Rzs7d0IsNkI7STtLLE87SztvQiw0QjtJO0k7Rzs7STs7Rzs7STtJO0ksSSxnQzs7Ozs7MEM7SztLOztHOztJOzs7eUI7OzRCOzt5QjtlLHNCOztHO2tDLCtCLFM7O0ksTzs7O0c7O0ksaUM7OzswQixxQjs7Ozs7OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7UTtRLFE7USxNO08sVzs7Tzs7OztXO3VCOztXLE87VTtRLFE7USxPO1EsTTs0QixpQztPO087OzBCOztPOztROzs7TztPO1EsUTtRLE07TyxXOztPOztRLG9CO087Tzs7Tzs7USxvQjtPO087O087O3lCLHFCOztPLGtCO3lDO087O0ksa0I7STtJOzs7SSxJO0k7SSxPO0c7O0ksSTtJO0ksTztHOztJOzs7eUI7O3lCO2UsMkI7O0c7O0k7STs7Ozs7UTtRLHdCO1EsTzs7O1E7UTs7Ozs7O21DOztxQzs7dUM7OztlO2U7O2U7eUM7OztRLE87OztROzs7OzBCOztROzs7Uzs7Ozs7Rzs2QztHO2tEO0c7O0k7Szs7O0k7STtHOztJLE87Ozs7O0c7O0ksaUM7Ozt5QixpQjs7TyxtQztPOzswQixxQjs7Tzs7USxvQjtPO087OzBCLDRCOzs0Qiw4Qjs7Tzs7UTs7O1c7dUI7O1csTztVO1E7Tzs7Tzs7OztXO3VCOztXLE87VTtRLFE7USxPO1EsTTswQixtQztPO087O08sb0I7eUM7Tzs7MEI7O087O1EscUI7TztPOztPOztRLG9CO087Tzs7Tzs7UTs7OzBCLG1CO087USxRO1EsTTtPLFc7O087bUMsdUI7Ozs7STtJO0c7c0MsOEIsUzs4QztHOztJLG1COztJOzs7STtJOzs7OztRO1Esd0I7USxPOztROzs7O1M7UyxvQjtRLE87OztRO1EsSTs7OztROzsrQixrQix5QjtRLE87O1E7Ozs7Uzs7Ozs7O1E7UTs7MEI7O1E7OztTOzs7OztHOztJOzs7OzsyQjs7Ozs7Ozs7Ozs7OztRO1E7OzRCOztRO29DOztLOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxlO0ksYzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJO0k7Rzs2QixrQiw4QjtpQyxjO3dCLHFCLFk7O0ksYyxPOztJO0k7Rzs7STs7OEIsTzs7OEI7O087OztRLE07USxNO08sTzs7Rzs7SSx3QztJOzs7SyxNO0ssTTtJLE87Rzs4Qiw4Qjs7STs7Ozs7Ozs7Ozs7O0s7O0ksTztHOztJOzs7Ozs7Ozs7O1MsTzs7Ozs7Szs7O0c7O0k7O087OzZCOzs7RztHOztJOzs7RzswQiw0Qjs2Qiw4Qjs7STtLOzs7OztnQztRLE87O1E7Ozs7UyxtQjs7NEI7USxPOzs7USxPOzs7Ozs7NEI7USxPO007RztzQyx1QjsyQix1Qjs7O0k7OztJO0c7O0k7Ozs7O007O3FCOztPLDJDO087OztLLE07OzJCOzs7Szs7b0I7O007Ozs7OztPO007OztJLE07Rzs7SSxZO0k7Ozs7O0ssSTtJOzs7Ozs7OztJLFksTzs7OztLOzs7STtHOztJLFE7STs7Ozs7SyxJO0k7O007OztLOzs7O2tDO2E7YTs7STtpQixNOzsrQjs7Ozs7OzttQixNO0s7Ozs7TSxJO0s7TTs7O21CLE07O087Ozs7Ozs7Ozs7O21CLE07Szs7OztNLEk7SyxZOzs7OztJLFk7SSxrQjtJO0c7Ozs7bUI7Szs7OztNLEk7SyxZLHlCOzs7Ozs7OztNOzs7O08sUztPOzs7OztvQjs7Ozs7Ozs7O0k7STt5QixpQztHOztJLFE7SSxjO0ksTztHOztJO0k7O2M7YyxxQjthOzs7O0c7Ozs7bUI7O0s7Szs7Ozs7STtJO0sscUIsTzs7SztLLDRCO0c7O0k7Ozs7dUI7O1EsaUI7Ozs7O1csbUI7OzttQjs7Ozs7Ozs7OzJCLE87bUI7Ozs7Ozs7Ozs7Vzs7OztLOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJOzs7Ozs7Ozs7O1UsTzs7Ozs7O1U7OztXLE07VSxVOzs7Ozs7OztVLG9DO1UsVTs7Ozs7Ozs7O0c7O0k7STt1Qjs7Ozs7Ozs7VSxPOzs7Ozs7VSxrQztVLGlCOzs7Ozs7UyxvQztTLGM7Ozs7d0I7O0s7O0c7Ozs7OztRLHFCLE07USxPOzs7O1Esc0M7Z0I7Ozs7Z0MscUM7O0k7STs7OzZCLE87Ozs7UTs7O1M7UztRLE87O0c7MEIsUzs7STtJOzswQixPOzs7TyxHO1E7UyxNO2U7O2tCO087TyxPOztPOzs7UTtRLE07USxNO1E7TyxPOzs7O0k7OzBCLE87OztPLE87OztPLE87Ozs7STtJOzs7NkI7Ozs7USxNOztHOztJOzs7OzJCOztROzs7Uzs7OztnQjs7Rzs7STtLO0s7OzswQjs7OztTOzs7VTs7OztJO0k7Rzs7STtJOzs7NkIsTzs7NEI7OztHOztJLEc7aUI7SSxNO0c7O0k7OztPLGEsNEI7Ozs7TztROzs7STtHOztJO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0kseUM7STtHOztJLDZDO0k7Rzs7SSw0QztJO0c7O0k7Rzs7STtHOztJOztZOzs7OztHOztJO0ssUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksd0I7STtLO00sTTtNOzs7O1ksTTs7Ozs7SyxNO0k7STtLOzs7Szs7SSxVO0k7SztNLE07TTs7OztZLE07STs7Ozs7Ozs7O0k7Ozs7Ozs7Rzs7STs7OztNOzs7Ozs7TztNOzs7O007Ozs7K0M7OztvQix1QjtJLEcseUM7SSxNO0c7O0k7O087OztJO0ssVTtLLGE7STtJO0s7Szs7Szs7Ozs7Szs7O1M7Ozs7O0k7STtLO0ssTTtLLGE7SztJO0c7O0ksTztHO3lCLFk7O0k7Ozs7Ozs7OztLOztJO0c7O0k7Ozs2QyxVOztpRCxVO3dELFU7OztnQzs7STtHOztJO0s7SyxNO0ssbUI7O0c7O0k7O08sTzs7TyxPO2UsTzs7Rzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7STs7Ozs7STs7Ozs7OzRCOzs7Ozs7Z0I7O0k7Rzs7STtLLFE7SyxVOztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQixPLGtDOztJO0ssTzs7O3lCLE87OztPLE87OztPLE87Ozs7SSxVO0k7RztHOzs7Ozs7Ozs7Ozs7STswQixxQjs2QixTLGdDOztJLE87SyxXO0s7O0ksVztHOztJLE87SyxXO0s7O0ksVztHOzs7SSxnRDtJO0c7O0k7O087O087O087O087O087O087ZTs7Rzs7SSx5QjtJO0c7RztJOzswQixvQjtzQixXLDhCO3FCLFcsOEI7dUIsVyw4Qjs0QixXLDhCOztJLFc7Rzt3QixXLDhCOzJCLFcsOEI7O0k7OztLLE87SSxPOzs7OztLO0k7SSxvQjs7O0s7TSxXO00sTzs7Szs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7Ozs7Ozs7YSxPOztZO1ksTztXO1EsTzs7Ozs7Ozs7OztRO1MsTzs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7O0ksTztHOztJO0ksWTtJO0c7RyxnQzsyQiw4QjtrQyxrQzswQiwwQjtzQix3Qjs7STtrQzt1Qjs7SSxJLFcsa0M7Ozs0Qjs7O0c7NkIsNkI7O0k7OztLOztJO0c7O2tDLG9DOztLO00sWTtNOzs7OztNLFU7TTtNOztJOztLOzs7TSxPO0s7STs7SztLLG1CO0s7STs7O0ssMEIsc0I7Syw4QixzQjs7O007O0ssd0IsdUI7cUI7O21DOzs7O1EsSSxVOzs7O1MsSSxVOzs7Z0M7OztTLE87Ozs7a0I7O1E7O1E7OztTO1E7O1E7OztTO1M7O1M7Ozs7VTtVOzs7OztVOzs7UTtROztROztTLG9CO1MsTTtROztROzs7UztpQyxrQztTOzs7UyxJLFM7OztnQzs7O1M7OztROztRLDBCLFU7c0I7O1E7Ozs7SyxrQjtLO0k7O0s7SztJOzs4QiwwQjs7O007OztLLDZCO0s7O3lCOztRLGtDO1E7O3VDOzs7USxXOzs7UTs7eUI7aUM7O0k7O0s7TTtNLG9CO00sdUI7TTtNOzs7Ozs7OztJO0k7O0c7bUMsUzs7SSxNO0c7O2dDLDRDO0c7OztLOzsyQixPOzs7UTs7USxrQztROztJO0kscUI7Rzs7SSxzQztHO29DLHNDOztnQyxPLHFDOztJLEksaUI7SSxPO0c7O0ksSSxrQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksaUI7SSxPO0c7O0k7SSxPO0c7O0ksSSxtQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksd0I7SSxPO0c7O0ksSSxpQjtJLE87Rzs7SSxJLGtDO0ksTztHOztJLEksaUI7SSxPO0c7O0ksSSxvQjtJLE87Rzs7SSxJLGlCO0ksTztHOztJLEksdUI7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7cUI7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0Qix5QjtvQixZOzBCLHlCOztJOztPOztPOztPOztPOztPOztPO2U7O0c7MEIsZTswQixlOzJCLGdDO3VCLHlCOztJO0k7ZTtHOztJO0kscUI7RztHO0k7STs7Ozs7O0k7STtHO3lCLGlDO3lCLHFCLDJCOztJLEksaUIsaUI7STtHOztJO0ksTztHO3lCLHlCOztJLHNCLGlCLGtCOztHOztJO0ksTztHO3dCLHFEOztJOztPLE87O08sTztlLE87Ozs7STtLLE87STtJLFU7SSxPO0c7O0k7SSxPO0c7O0k7Z0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1UsTTtVOzs7O0k7Rzs7STs7Ozs7O0s7STtHOztJOzs7Ozs7OztJO0c7O0k7STttQjs7Ozs7O1M7Ozs7O1E7Ozs7Uzs7Ozs7UTs7OztHO3FDLG1CLFU7RztxQjtHLFk7O0k7Ozs7Rzs7STtJOzs7Ozs7OztLOztHOztJOztHOztpQyxjOztJO0k7Ozs7Rzs7NkIsYzs7Ozs7Ozs7OztTOzs7Ozs7Szs7Szs7Ozs7Ozs7OztRLHNDOzs7d0I7O0k7OztJOzs7OztRLHNDOzs7NEI7O0k7Rzt3QixrQjt5QixrQjt5QixrQjtzQixrQjtnRDtHOzRCLG9COztJLEs7SyxNOzs7Rzs4QixxQjs4QixxQjt1QixVOzBCLFU7O0k7Ozs7SyxJOztHOztJO0ksTztHOzBEO0c7O0k7O0ssc0I7SyxPOzs7Rzs7STtJO0s7OztLOztHOzBCLGtDOzRCLGtDOzJCLGtDOzBCLGtDOztJO0k7O0s7OztNLEcsdUM7OztLOztLOztHOztJLEksZ0M7STtHOztJLEksMEI7STtHOztJOzs7Ozs7OztPOzs7USxNOzs7O00sSSxPOzs7MEI7Ozs7O2tDO3lDOztJO0c7O0k7STs7O3VDOzs7O0ssTzs7Rzs0QixnQjs7O0k7Ozs7STtHOztJLFk7O0k7Rzs7STtJO0c7O0ksVztJO29CLDBCO0ksTztHOztJLDBCLE87aUMsTztJOzs7OztLOzs7SSxPO0c7RyxhOztJOztHO2dDLHNDOztJOzsyQzs7K0M7OzhDOzs4Qzs7Ozs7Ozs7Ozs7RztHLG9COztJOztHOztJLEksbUI7c0I7STs7STs7Ozs7O0s7Ozs7O0s7Szs7STtHOztJLEk7O0c7O0ksSTs7b0M7STtHOztJLEk7O29DO0k7Rzs7STs7O0c7NEIsZ0Q7O0k7STs7O21EOzs7O0ssTzs7Rzs7STtJOztNLE87OztNO087Ozs7Ozs7Rzs7STtJOztNLE87Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztHOzRCLHdCOztJOztJO0c7O0ksNEM7OztlOztJOzs7OztPLE07TTs7Ozs7O0ssb0M7O0ssSTs7OztJLHdCO2tDOztJOzs7O3VDOztJOzs7Ozs7VTs7Ozs7NEI7OztVO1M7TSxPOzs7TSxxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE8sYztHOztJLE8sYztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0cscUI7RyxxQjtHLDJCOztJLG9CO0ksTztHOztJLFc7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0IsMEI7dUIsMEI7NEIsMEI7O0ksb0I7SSxPO0c7RztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxXO0ksc0I7Rzs7SSxXO0ksc0I7Rzs7SSxvQjtJLE87RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3QixXLHlDOztJOztHOztJLGtDLE87SSxXOzs7STtJLE87O2U7Ozs7Rzs7STtJLE87Rzs7SSxXOztLLGtDLE87SyxPLGtCO0k7SSxPLFc7RztHO0k7OztRLE07TztJOzs7MkIsTywyQzttQywyQjs7SSxPO0c7O0ksWTtvRDtJO0c7O0ksWTtvRDtJO0c7O0ksWTtvRDtJO0c7O0k7Ozs7Ozt1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Tzs7TTs7Szs7STtHOztJLFE7VTtJLEksSyw0QixROzs7OzBCOztROzs7USxNOztJO0c7MEIsTyxtQzs7STtHOztJLFc7SSxXO0ksVzs7SyxrQixRO3FEO0s7STtJLE87Rzs7SSxJLHdEOzs7O00sVzs7TTs7Ozs7OztHOztJLFk7Ozs7O1E7UyxjO3lDOzs7Ozs7O1k7O1ksTTs7Ozs7O1Esc0IsTzs7O0k7Rzs7SSxZOzs7OztRO1MsYzs7Uzs7OzRCLE87O0k7Rzs7STs7Rzs7STs7Ozs7VTtXOztJO0c7O0ksWTs7Ozs7O1EsZ0IsbUI7Ozs0Qjs7O0k7Rzs7STtnQjtJLG1CLFU7OztLO00sWTtNLE87OztJO0c7O0ksVzs7SyxtQixROzs7O08sTzs7O3VDLE87O0s7STtJO0ssUztLLE87SyxROzs7Ozs7OztRLE07O0ksVzs7SztLLE87STtJLGM7a0I7O0k7Rzs7STtJLG1DLE8saUI7Rzs7SSxZO2tDOzs7Tzs7TyxvQyxTO08sTzs7eUIsTzs7MkIsTzs7O2tCLE87TyxvQixXO08sTzs7Tzs7O1EsVztPLE87O08sb0I7TyxPLHdCOztPOztPOzs7USxXO08sTzs7Ozs7O1c7VyxPO1U7TyxPO2UsTTs7Rzs7STtJO2dDLE8saUI7Rzs7OztxQzs7O007TTs7Ozs7Ozs7STs7SyxPOzs7cUIsTyxvQjtJLE87OztJOztLLFc7Ozs7SywyQyxPO0s7STtJLFc7OztJOzs2QyxPLG9CO0ssTzs7OztLO0ssTztJO0ksTzs7O0ksVztJLE87Rzs7STs7MEIsTzs7MEIsTzs7NEIsTzs7MEIsTzs7MkIsTzs7MEIsTzttQyxPOzs7O0k7Rzs7SSxrQixPO0k7SSxrQixPO0k7O0c7O0k7SSxrQixPO0k7O0kseUI7SSxrQixPO0ksTztHOzBDO0c7O0ksbUIsTztJLE87Rzs7SSxrQixPO0k7STtJLGtCLE87STs7Rzs7SSxtQixPO0k7STs7Rzs7SSxZOztJLE87OztJOzswQixPOzs7TztPLE87aUMsTzs7OztJOzs7TztPLFc7TztPLE87OztPO087Ozs7O1c7VyxPO1U7Tzs7Ozs7VztXLE87VTtPLE87OztPO08sTzs7OztJLDJCO0c7O0ksZTtJLFk7Ozs7Ozs7UTs7UyxPOzsyQixrQixPLHNCO1EsTzs7Ozs7O0ssTzs7STtHO3VCLFM7O0k7SyxROzs7Ozs7SyxpQyxROzs7O007O08sTztjOztNOzs7O087TztPLE87YztLO0k7SSxhO0k7Ozs7OzJCOzs7STtJLE87Rzs7STtJOztLLDZCO0s7Ozs7UTs7Ozs7UyxPLHFDO1MsTztRLGM7O3lCLFc7OztRLGdCOzs7bUIsVztROzs7O1Msd0I7USxXOztROzs7OztTLE87UyxPO1EsZ0I7O1E7O1MsTzs7Ozs7USxNOztRLE07O1E7O1E7OztTLFE7USxZOzs7Ozs7O1k7WSxjO1c7USxpQjs7O0c7O0ksVzs7SSxPO0c7O0ksSSxnQixNOztLO0ssTztJO0k7STtHO0c7Ozs7cUM7Ozs7O00sVyw2Qjs7Ozs7OztHLFc7O0k7d0Isc0I7STs7O0c7O0k7OztHOztJLDRCOzs7O0ssTTs7O0ksRyxtQzs7STtHOztJOzs7NEI7OztHO0c7O0ksWTs7SSxnRDtJO0c7O0ksOEI7O0k7Rzs7SSw4Qjs7O0ssTzs7O0ksTztHOztJOztpQjs7SyxHO007MEM7SyxJOztHOztJO0k7Ozs7OytCOzs7Rzs7STtJOzs7UTs7UTs7O0c7O0k7STt3Qjs7O0c7O0k7STs7Ozs7UTs7OztHOztJLGlCOztJO0c7MkIsdUM7K0IsdUM7O0ksSTtrQyxvQjtJLE87Rzs7SSxJOztLO0s7STtJLE87Rzs7STs7SztLLFk7STtJLE87Rzs7SSxJOztLO0s7STtJLE87Rzs7SSxJO2lDLG9CO0ksTztHOztJLEk7O0s7SztJO0ksTztHOztJOztLO0ssWTtJO0ksTztHOztJLEksVTs7OztNLE07Ozs7STtHOztJLEksVTs7OztNLE07Ozs7STtHOztJLHVCO0c7O0ksVztJLE87Rzs7SSx3Qjs7Rzs7SSxJLDJCO0k7Rzs7STtLO0s7STtHOztJO0k7RztpQyxxQzs7STtJLGE7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFU7O0c7bUMsdUI7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7STs7Rzs7STtJOzsyQixrQixzQjtJOzsyQixrQixzQjtJLE87Rzs7SSxPO0c7O0ksWTtzRTtJLE07Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxJLFcseUI7OzsyQixPOzs7Rzs7STtjO2M7OztJOzs7TyxPOzs7Ozs7Ozs7O087TztPO21DOzs7Rzs7SSxXO0k7Ozs7Szs7TyxROzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sUyxJOzs7Ozs7Ozs7STtHOztJO2M7YztHOztJLGM7O3FCO0ksUztZOzs7SztNLEs7O2E7O1c7OztJO2dCLE87SyxZOzs7O007O0ssSTs7Rzs7SSxVO0k7bUI7Rzs7O0s7Ozs7Ozs7VyxPOzs7Ozs7OztVOzs7Yzs7VSxPOzs7Ozs7Ozs7Ozs7OztVLE87Ozs7Ozs7Ozs7Szs7O0s7Ozs7Ozs7Ozs7Ozs7UywwQzs7O1MsMEM7OztTLDBDOzs7VTtVO1UsTzs7OztLOzs7SztNLE07OztROztTOztZOztRLE87OztRLE87OzBDOzs7USxtQjtRLE87OztRLE87OztRLE87OztRLE87OztRLE87O1E7O1M7O1k7O1EsTzs7MkIsTzs7UTs7UztTOzs7O3lCOzs7Ozs7NkI7YTs7O2lCOzthOzs7OztTLDRCO1EsTzs7O1E7Uzs7VSxXOzs7ZTs7UztVOztVLGM7O1csb0IsVTs7Ozs7O1U7VztZOztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7Ozs7Ozs7O1ksUTs7WSwrQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZSxXOzs7ZTs7a0I7OztlLFc7Ozs7Yzs7Ozs7dUI7O1c7OztXOzs7O3dCO1M7Ozs7O1UsTzs7OzsyQixPOztROztTOztZOztRLE87Ozs7UyxPOzs7SywwQjtLLE87OztLO0s7Ozs7NEI7O2dDO2dCOzs7Ozs7STtJO0c7Rzs7OzttQjs7c0IsTzs7SztLOzs7O3FCLE8seUM7d0IsTyw0QztHLGdDO0c7cUIsTyx5QztHLDZCOztJOzs7O1EsTzs7Ozs7Ozs7OztRLE87Ozs7Ozs7OztJOzs7STs7SztLLEc7TTtNOztLO0s7SztLO0ssTzs7STs7O0k7Szs7TTs7Uzs7SyxPOztJOzs7STs7OztRLE87Ozs7Ozs7Ozs7O1E7UTtRO1EsTzs7UTs7O1MsNEI7USxPOzswQjs7dUIsTzs7UTs7O1MsYztRLE87O1E7Ozs7O1M7O1k7OztjLE87O1k7Ozs7WTs7YTs7O3VCLE87c0I7Ozs7O1k7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7UTtRO1M7OztZOzs7O1ksTzs7VztRO1EsTzs7O1EsTzs7Ozs7UTtRO1E7UTtRLE87O0k7OztJOzs7a0I7O007TTs7OztJLE87Rzs7Ozs7aUI7TSx1QjtNLE87Ozs7TTs7O08sNEI7TSxPOzs7O0s7Yzs7Ozs7OztLO2U7OztpQjtpQjtJO0k7Szs7SSxPOzs7OzttQjs7c0IsTzs7SztLO0s7Ozs7O0ksVTs7SztLO0s7SztLO0ssTzs7O0k7SSxPOzs7Ozs7OztJLE87OztHLEksa0M7O0ksTztjO2M7Rzs7Ozs7Ozs7Ozs7Ozs7O0ksTzs7Ozs7Ozs7OztJLFU7dUIsTywwQztJO0s7O0ksTzs7O0k7Ozs7Ozs7VyxVOztXO1k7O1csTzs7TyxPOzs7Tzs7OztRO1U7YTs7TyxPOzs7Ozs7Ozs7O087OztROztXLFk7O1csTzs7O3dCLE8sMEM7UTs7Vzs7TyxPOzs7OztJOzs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7O08sTzs7OztHO0k7STs7O1EsTztPO0k7O3VCLE8sK0M7STs7O1EsTztPO0k7OztRLE87TztJOzs7USxPO087Z0Q7Rzs7STs7O007O087Ozs7O0ssYTtLLE87Ozs7Ozs7OztHOzs7SyxZLE87Szs7O00sTztLLE87Ozs7Syw0Qjs7Ozs7O08sTzs7Ozs7Ozs7OztLO00sUTs7O0s7Ozs7OztTOzs7VTs7Ozs7OztNO08sTztPO1M7O00sTzs7OztJO0c7O0ksbUM7OztPLE87Ozs7Ozs7O08sTzs7O087aUI7O2lCOzs7TyxPOzs7O0ksWTs7bUIsTzs7OztLOzs7TTs7O0s7Ozs7OztROzs7Uzs7Ozs7O007TyxPO087TSxPOzs7Ozs7Ozs7OztJLE87Ozs7Ozs7Ozs7STtLLE87Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87Ozs7Ozs7Ozs7Ozs7O1E7USxPOzs7Tzs7O1c7Ozs7WTs7Ozs7Z0IsTztlO2E7O2dCOzs7OztXLE87Ozs7Ozs7VTtROztPLE87Ozs7Ozs7Ozs7O1EsTzs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1c7O1k7WSxPOzs7Ozs7OztXO1csTztVOzs7Vzs7O1ksTzs7Ozs7Ozs7O1ksTztXO1c7WTs7O1U7UTs7Vzs7WSxPOztXOzs7O1c7Ozs7Ozs7O1U7UTs7Ozs7O087UTs7VyxtQjs7UTs7Vzs7Yzs7YyxPO3NCLE87O1U7UTs7VyxlO1U7OztXOzs7Ozs7OztjLE87Ozs7Ozs7Ozs7Ozs7a0I7bUIsTzs7bUIsTztrQjtrQjttQjs7a0IsTzs7aUI7YyxPOzs7Ozs7Ozs7YyxPOzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7Ozs7Tzs7O1E7O1csWTs7Vzs7WSxPO1c7VyxPOztROzs7O1ksTztXO1csTztVO08sTzs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztJOztLO00sTzs7Ozs7OztLOzs7Uzs7SyxPOzs7Ozs7Ozs7O2MsTztJO0s7O0ksTztHOzs7Szs7O00sTzs7Ozs7Ozs7d0IsTywwQztLO007OztJO0k7dUIsTywwQztJO0s7OztJLE87Ozs7Ozs7O0c7Rzs7Ozs7OztJLFk7OztLOzs7TTs7O0s7Ozs7Ozs7UTs7O1M7Ozs7OztNO08sTztPO007OztnQjs7Ozs7O0k7O0s7Ozs7Szs7O2M7Ozs7STs7O08sTzs7Ozs7Ozs7Ozs7aUI7Ozs7O1EsTzs2QixPOztRLE87TyxZOztRLE87O08sTzs7O0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7STtJO1k7Ozs7O0c7K0Isb0M7O0k7STtZOzs7OztHOztJOzs7O0ssTztJO0c7aUMsc0M7O0ksOEIsTztJO0c7bUMsd0M7MEIsc0M7Z0MsNkM7O0k7Z0M7a0M7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCLG1CO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7OztHOztJOzs7Z0I7Ozs7OztLLE87STtHOztJLEksVyxzQzs7Ozs7O1M7O3VDOztTLGdDO1M7Ozs7Rzs7SSxJLFU7Ozs7OztTOzt1QztpQixPOzs7O3FCLE87O0k7Rzs7SSxJLFU7Ozs7OztTOzt1QztpQixPOzs7OztLLE07O0k7Rzs7SSxZOzs7MkI7OztPOztPOzs7Tzs7Rzs7SSxJLFU7Ozs0Qjs7OztHO0csYTtvQyx5Qjs7STs7Rzs7STs7Ozs7OztJO0c7Rzs7OztRLE07Tzs7SSxXO0k7Szs7O1E7Ozs7VztvQjs7WSxrQzs7Ozs0Qjs7O1Esa0IsMkI7Ozs7UztVLE87aUI7UTtROztJO0ssSztLLFc7NEI7Ozs7SyxJLE8sa0M7STs7OztNLFk7Ozs7UTs7OztTO1c7Ozs7YTs7Ozs7TSxNOzs7OztTOzs7VSxzQjtVLFM7OztVLEksVTs7Ozs7Ozs7Ozs7Ozs7a0I7Ozs7OztTOzs7VTtVOzs7VTs7O1c7WSxzQjtZLE87Ozs7Ozs7Ozs7UyxTOzs7Ozs7Uzs7VSxPO1UsUTs7O1U7Ozs7WTs7Ozs7Ozs7O1c7O1ksTztXOzs7WTthLE87YSxjOzs7Ozs7WTs7Ozs7Ozs7O2UsVTs2Qjs7Ozs7O1ksTTs7OztVO1U7OztXLHNCO1csUTtXLFU7O1c7Ozs7WTs7Ozt1Qjs7Ozs7Ozs7Uzs7Ozs7YTthO1k7VSxPOzs7O0s7TSxzQjtlOztJO0k7Rzs7OEIsaUM7SSxPO0c7O0k7O0s7SztLO0k7Rzs7STtLOztNLHNCO0ssVzs7O0ksb0I7SSxXOzs7STs7OztLO0s7O0s7Ozs7Ozs7Ozs7OztLOzs7TSxzQjtpQjs7Szs7O007O1M7O1U7VTs7UyxvQjtTO1UsTztVO1M7O2lCOztJLG9CO0k7WTs7Ozs7Ozs7Ozs7Ozs7Rzs7OEIsNkM7SSxPO0c7O0k7O087Ozs7UTtRLHNCO1EsUTtRO087O087Ozs7O1c7VztVO1EsTzs7OztXO1c7VTtRLE87UTtPOztPOzs7O1E7Tzs7OztJOztLO0s7Ozs7Ozs7STtLO0s7O0ksb0I7STtZOzs7Ozs7OztHOzs4Qiw4QztJLE87Rzs7STs7SztLOztLO0s7O0ksb0I7STtZOzs7Ozs7O0c7OzhCLCtDO0ksTztHOzs4QiwrQjtJLE87Rzs7STs7SztLOztJO0c7OzhCLCtDO0ksTztHOztJOztLOzs7O0ksb0I7STtLLE87Szs7SSxvQjtJLFc7STtHOzs7SztJO0ksTztHOzs7SyxXO0ssTztJO0ksTztHOztJO0k7Rzs7STtLO0s7SztJO0c7O0k7STtHOztJOzt5Qjs7MEIsVzs7OztROzs7O1M7UTs7O087bUM7O0c7O0k7OztPLEksVTs7Ozs7O1k7O3NDO29CLE87Ozs7Tzs7MEI7Ozs7O1E7Ozs7UTs7OztTLE87UztROztPOzs7UTtPO21DOzs7O0k7O3lCOzswQjs7O087Ozs7Ozs7TzttQzs7Rzs7SSxnQjtJO0c7O0k7O0s7Szs7SSxvQjtJLFc7Rzs7SSxlO0k7Rzs7SSxZOzs7SyxPOzs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtJLE87Rzs7STthO0c7O0k7O0ssTzs7O0k7Rzs7STs7OztLOzs7Ozs7OztXO1ksTztZLE87VyxPO1U7Ozs7OztTLFc7UyxPO1E7Ozs7Ozs7VTtXOztVLFc7UztNLE87Ozs7O1E7Ozs7O1MsTztTOzs7OztROzs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLE87Uzs7Ozs7UTs7Ozs7OztTLE87UztTOzs7Ozs7UTs7Ozs7UyxPO1M7Uzs7Ozs7O1E7Ozs7OztTLFE7UztTOzs7Ozs7UTs7Ozs7O1MsUTtTO1M7Ozs7Ozs7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087OztPOzs7Tzs7O087O0c7O0k7OztPOzs7Tzs7O087Ozs7Ozs7O087Ozs7Ozs7O087OztPOzs7Tzs7Rzs7STs7O087OztPOzs7Tzs7Ozs7Ozs7Tzs7O087OztPOzs7Tzs7Rzs7STtHOztJLG9CO3dCO0k7Ozs7Ozs7OztLOzt3Qjs7O0s7O3dCOzs7STs7O2U7O2dCOzs7O2dCLG1CO2dCO2lCLFc7aUI7Z0I7ZTtlLE87Ozs7Ozs7O0c7OztLO0k7SSxPO0c7NkIsTyx1Qzs7SSxPO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxNO0ssTSxXO0ksTztHOztJO0ssTTtLLE0sVztJLE87Rzs7STtLLE07SyxNLFc7SSxPO0c7O0k7SyxNO0ssTSxXO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7SSxTOztJOztHO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7SSxXO0ksWTtJLGE7SSxhO0ksWTtJLFk7SSxXOztJLE87Rzs7SSxPO0c7O0ksTztHO0c7SSxpQjtJLGE7SSxhOztJLE87RztHO0ksYztJO007SSxrQjtJO0k7STtJO0k7STtJO0k7STtJO0k7STs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJOztJLFU7STtHO0c7STtJO0k7STtJO0k7STs7STtLO0s7SztNLE07TTs7Ozs7Ozs7Ozs7Ozs7OztLLE87OztLOzs7aUMsUztLO00sUTtNLE07OztNOzs7O1M7Ozs7Ozs7Ozs7OztLLE87STs7SztNLE07TSxNO00sVTtLLE87Ozs7STtJLDBCLHVCO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Uzs7UztROzs7Ozs7OztLOzs7UztTO1E7Ozs7Ozs7Ozs7Ozs7Ozs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SztPO0s7Tzs7SztPOzs7O1k7Ozs7O0ssTTtLLE07SyxNO0ssTTtLO087SSxPOzs7O2dCOzs7Ozs7b0IsVywrQjtHO0ksaUI7SSxtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STs7SztLO00sVTtNLFU7TSxZOzs7O21COzs7VTtVLGM7b0I7VTtXLE07VyxVO2dGO1UsSSxPOzs7TSxPOztJO0k7STs7Rzs7SSxPO0c7O0k7Ozs7O3dCLFk7WTtJO0s7O00sNEI7TTtNLE07cUI7OztJO0c7O0k7Szs7O0kseUM7STs7Syw4QjtLLGM7SyxRO0ssTTs7O0ssTTtLOzs7Ozs7O1E7Ozs7Ozs7OztJOzs7O0c7O0k7Ozs7O0k7Szs7Ozs7O0s7Ozs7O0ssTTtJO1k7Ozs7Ozs7Ozs7Ozs7O0c7RztJLE87STs7STs7O0k7O2lCLE07Ozs7TSxHLGlDOzs7Ozs7OztVOzs7Ozs7O0s7O0c7O0k7O0s7OztNO007TTs7O1M7UyxPOzs7UTtLOzs7O1MsWTs7Ozs7Ozs7OztTOzs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtXOztXOzs7O1M7VSxZO1U7VTs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O2E7Ozs7Ozs7Ozs7Uzs7Szs7STtHOztJOztLOzs7TTtNO007UTtVOzs7UyxZO1M7OztVOzs7OztVOzthOzs7Ozs7Ozs7OztTO1M7Uzs7Szs7STtHOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssUTs7O0ssTztLLFE7STtHOztJLFM7STtLO2U7SyxLO007TTtNOztLO0s7O00sTTtLOztPO1M7TSxNO0s7O1E7OztLLE07Ozs7Ozs7TTtNLE07O0s7SyxNOztHOztJO0k7STtJO0ssTTtLO0k7STtJO0c7O0k7OztPLE87OztPLE87Ozs7Ozs7OztPLE87Ozs7O0ksdUI7O0ksVztHO0c7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7dUIsTSxnRDtHO0k7OztRO1M7VSxNO1UsVzs7OzsrQjs7O1EseUI7TztJOztJO0ssTTtLO0s7SSxXO0c7O0k7Ozs7OztJOzs7STs7STtHOzs7K0Isc0M7STtLO087SyxNO0ksTzs7Ozt3Qjs7Ozs7O0s7Ozs7O0ksSSxVOzs7MkI7OztjOztJOzs7STs7O0ssVzs7SztLLE87O0ksTztHO2dDLGtCOzZDLCtCOztJLFU7d0IsTyxpQjtJLFU7STtJO0c7Ozs7SyxVOztLLE87STtJLE87OztJOzs7SztLO0s7SztJLEc7Szs7O0ssOEI7Ozs7STtJOztLLEk7Ozs7OztNOzs7STtJO0c7O0k7SSxHO0ssTTtJLEksVTs7Ozs2QixNO0ssWTs7O007TTtPLEs7TztNOztLO0ssTTs7YyxNOztJO0c7O0k7STtLLE07SztLLEs7STtJO0c7Z0MsNkM7O0k7O0ssVTs7SztLLFU7Szs7OztVLEksb0MsYTs7OztZO1ksTzs7O1k7O2EsTTthO1ksTzs7OztXOzs7Ozs7O2lCOzs7Ozs7Ozs7YyxNOzs7O3VCOztXO1csTzs7UztNLE87Ozs7OztJO0c7O0k7SSxJLFc7Ozs7TSxNOzs7SSxXLE07O0k7Rzs7STs7O0ssTTtJLE87Ozs7SSxPOzs7O0ksTzs7OztJLE87OztJOzs7OztLLFE7SztJO0c7O0k7O0s7SztNLE87SztLO00sTTtNOzs7O007Szs7OztNOzs7SztLO0s7SztJO0ksOEIsTywrQjtJLE87Rzs7STtLOzs7USxPOzs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7USxPOzs7Ozs7TTtHOztJLHVCOztJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7USxNO087SSxxQjtJLG9CO0ksc0I7SSxhOztJLE87RztzQyxxQjs7STs7Ozs7Ozs7O0c7c0Msb0I7O0k7Ozs7c0M7STtHO0c7SSxvQjtJLGM7O0ksOEI7Ozs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzs7TyxXOzt5QyxXOzsyQixZOzs7TyxZOzs7TyxZOzs7TyxZOzs7Rzs7STtJLFc7Rzs7STtJO0ssSSxXLHFDOzs7OztpQixNOzs7RzsyQixTOztJOztLOzs7OztNO007OztNLEksYTs7Ozs7OztNOzs7VTs7Ozs7ZSxXLE87O2UsTztjOzs7VTtTO08sTztnQjs7Ozs7O0ksVzt5QixxQiwwQjtJLFc7SSxPO0c7Rzs7STtJLFc7Rzs7STtJO0ssSSxXLHFDOzs7OztvQyxNOzs7TyxPOzs7O0c7Ozs7SztNO08sVTs7O087TTs7Ozs7O29DLE07O087OztROzs7TyxjOzs7Ozs7O007TztRO1UsaUI7UTs7Ozs7UyxJOzs7O1U7Ozs7Uzs7O087Ozs7Ozs7Ozs7STs7Ozs7SztNO087UyxpQjtPOzs7Ozs7Ozs7OztLOzs7TTs7O1M7UyxjO1E7YTtJLFc7O0s7SztJO0ksVztJLE87Rzs7STtJO0s7Ozs7VTtXLE8sYyw0Qzs7O00sUTtNO21DOztNOzs7Ozs7VztZLE87bUQseUI7OztPO1MsVzs7Ozs7Ozs7OztXO1csTyw4QjtVOzs7Ozs7OztHOztJO0k7Ozs7O1U7VyxPLHNDOzs7Szs7bUM7Ozs7Ozs7O1c7WTthLGE7YSx5QjtZLE8sYyw0Qzs7O007Ozs7Ozs7Ozs7VztXLE8sNEI7VTs7Ozs7OztHOztJO0k7Szs7c0Msb0I7TSxRO007Ozs7O1UsSSx1QixjOzs7a0M7OztTO00sTzs7OztHO0c7STs7Ozs7Ozs7Ozs7STs7dUIsTSxnRDt3QyxpQztHO0k7OztRLE07TztJOzs7USxNO087STs7Ozs7Ozs7Ozs7Ozs7O0k7OztLO00sTzs7STs7Ozs7Ozs7Ozs7OztHO2lDLG1DOztJLFc7Rzs7STtrRDtJO0c7O0k7SztLO0ssTzs7Ozs7STtLOztzQyxvQjtNLFE7TTs7TTs7O1UsSTs7Ozs7Ozs7Ozs7VSxXO2MscUIsYzs7O2tDOzs7UztPLE87TyxPO087TSxPOzs7O0c7NkIsUzs0QixnQjs2QixnQjtHO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07Tzt3QixpRDs7STtLLG1CLE87SyxPOzs7SSxPOztHO2lDLHVCO2dDLGlDO3FCLE8seUM7O0ksVztJLGlCO0c7O0ksTztLO0ksaUI7Ozs7O007Tzs7USxnQzs7Ozs7Ozs7Ozs7STs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7O1k7O0c7O0k7O0s7SztLO0ssSztLOzs7Syw4Qjs7SztJO0k7SyxTO0ssTztLO0ssYztLLE87SyxrQjtLLFk7SyxNO0k7Szs7TSxXO2M7OztJOzs7Ozs7Ozs7OztJOzs7RyxnQztHO0ksaUI7STs7SSxPO0c7O0k7Rzs7SSxPO0c7O0ksTzs7Rzs7SSxPOztHOztJLE87Rzs7SSxPO0c7O0k7STtJO0k7STtJO0k7Rzs7STtJO0k7STtHOztJO0k7STtHOztJLFk7Ozs7SSxPOztHOztJO3VCOztJO0c7O0k7cUI7SSxJLFcsNkM7Ozs7SyxJLFEsa0M7Ozs7OztvQjs7Ozs7O0ssWTtLO0s7O0c7O0k7O1EsSTs7O0ssd0I7Ozs7SyxxQjt1QixNOztJO0c7O0k7O3lCOztPLDhCO08sTzs7Tzs7O1E7USxNO08sTzs7O0c7O0k7dUIsTTs7STtHOztJO3VCLE07O0k7Rzs7STs7TyxrQixtQzs7Tzs7O1E7USxTO087O087OztRO1E7TyxPOztHOztJO0s7SyxNO0ksTztHOztJOztPLGtCOzBCLE07O087O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STtJLE87Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7Rzs7STs7eUI7O08sOEI7TyxPO2UsTTs7RztrQyxxQztrQyxxQzs0QyxnQztzQyw2Qjs7OztLLE07SSxxQixPO3dCO0ksSSxTLHlDOzs7SztLOztJLE07OztJLFk7Ozs7TyxJLFc7OzsrQjs7O087Tzs7O08sSTs7OztTLE07OztPLEksWTs7OztTLE07OztPLFc7OztROztPLE07OztPLEk7Ozs7UyxNOzs7Tzs7O08sSTs7OztTLE07OztPOzs7UTtTO2dDLE8sZ0M7VSxTOzs7OztVLE07OztROztPLE07O0c7OEIsaUM7cUMsaUM7O0k7O3lCOztPLDhCO08sbUI7ZSxNOztHOztJOztLOzs7STtHOztJLE87Rzs7STtHOztJO0c7O0k7O08sa0IsK0I7cUIsTTs7Tzs7Tzs7O1E7Z0I7TztvQixNO1EscUM7b0M7Ozs7ZSxNOztHOztJOztPOztRLE87USxPOztPOztPOzs7UTtRLFM7USxRO087ZSxNOztHOztJO0s7O1E7MkIsTTs7UTs7UTs7USxJOzs7Uyx3QjtVLFc7VSxPOzs7OztTLFc7UyxPOzs7UyxNOztROztROztROztRO2dCOzs7SSxPO0c7O0ksWSxPOztJOztHLHVCOzBDLGtDO3dDLDJCOztJLFc7STs7O007O08sTztrQjs7Ozs7Ozs7OztHOztJOzs7TyxVLDJCO087O08sOEI7Ozs7O087OztRO1E7O1E7Tzs7OztJOzs7TSxzQjs7O087USxPO1EsTztPO1E7UyxPO29COzs7Z0I7Ozs7Ozs7Szs7Ozs7O007O3FDOzs7OztNOzs7O0c7O0ksSSwrQzs7Ozs7TSxNOztLOztHOztJOztPOztPLDhCOztlLE07O0c7O0k7O087Ozs7O1EsRztTLFc7UyxLOzs7Ozs7OztlLE07O0c7O0k7STtLOzs7TSxJOzs7Ozs7Ozs7OztLOztHOztJOztPLGtCO08sTzs7Tzs7O1E7USxTO08sTzs7TyxnQztPOztHOztJO0c7O0ksSSw2Qjs7OztLLHVDOztLOztJLE07Rzs7SSxJLDZCO2dCLE07O0k7Rzs7STtnQixNOztJO0c7O0k7SSxPO0c7O0k7STs7OztRLEksbUMsYzs7O2dDOzs7OztnQjs7Rzs7SSxXO0k7SyxtQjtLOztNOzs7Ozs7SztNO08sTztPLE87Ozs7OztNO08sSztPLE87TTs7O0s7SztJO0ksSSxnQjtJO0s7Ozs7Ozs7Ozs7OztzQjtHO0c7O0ksaUI7O0k7O0ssRztNLFc7TSxLLHlEOzs7STtLO0s7Ozs7NEI7OztHOztJO3FCLE8saUI7STtJLFc7O0k7Rzs7O0s7SyxPO0k7STtLO0ssb0MsdUI7OztPLFk7Ozs7O08sWTtPOzRCO08sd0I7MkIsaUQ7Tzs7O1E7TztPLE87TTs7O0s7O0s7OztlO2U7Z0I7aUIsVTtpQjttQjs0Qjs7Z0I7O2UsbUI7O2U7Yzs7Rzs7STs7OztHOztJOzJCLE8scUM7SSxPO0c7O0ksa0M7dUI7O0k7SztNLE87TSxJO00sMEI7Szs7Ozs0Qjs7Ozs7STs7Tzs7UTtRLCtCOzs7VztXLCtEO1c7VTtPLE87O087OztROytCLGdCO1E7eUI7USxNO08sTztlOztHOzswQixnQjs7O087O1E7eUM7OztPOzs7UTtROztXOztRLE07ZTs7Ozt3QjtJLE87Rzs7STs7O087UTtROzs7OytCOzs7OztPO1E7UTs7OzsrQjs7OztrQjs7TyxPOztHOztJLEksSSxPOzs7Ozs7SSxPO0c7O0k7O0ssTztJLE87RzsyRCxPO0c7dUQsTztHOztJLGUsTzs7O0ssTTs7SSxPO0c7O0k7Ozs7Ozs7Szs7O087O087O1E7Ozs7Ozs7Ozs7USxLOzs7Ozs7UztVLG9CO1U7VTs7O2E7YTthLE87WTs7O2E7YTs7Z0I7OztpQixTO2lCOzs7OzZCOzs7OztnQjtpQixPO2lCLFk7aUI7aUI7aUIsTzt1Qjs7O2dCOzs7aUIsYTtpQixPO2dCOzs7OztpQjs7a0IsTzt3QztrQixPOzs7cUI7O29CO2lCOzs7O2lCOztrQjtrQixPO3dDO2tCLFE7OztxQjtzQixZO3NCOzs7b0I7aUI7OztnQjtpQixPO2lCLFk7aUI7aUI7aUIsTzt1QjtnQjs7aUI7OztpQjs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7OztnQjs7O2lCLFE7aUI7aUIsUTtpQjtpQixPO2lCLFk7aUI7aUI7a0M7OztnQjs7OztpQixXO2lCLE87Z0I7OztrQixNOzs7OzJCOzs7O2dCO2lCLFM7aUIsTztpQixRO2lCOzs7Ozs7Ozs7O2lCO2lCO2lCLE87dUI7Ozs7O2dCOzs7aUIsVztpQjttQjtpQixPO2lCLFU7aUI7aUI7aUIsTzt1Qjs7OztnQjs7O2lCLFM7aUI7aUIsTztpQixVO2lCO2lCO2lCLE87dUI7OztnQjs7O2lCLFM7aUIsTztpQixVO2lCO2lCO2lCLE87dUI7OztZO1M7Uzs7Ozs7Vzs7O1ksaUI7WTs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7OztXOzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7O1ksbUI7WTtjO1k7Ozs7Ozs7Vzs7Ozs7O1ksbUI7WSxrQjtZOzs7Ozs7O1c7Ozs7OztZLG1CO1ksa0I7WTs7Ozs7Ozs7O087OztRLGM7USxPO1EsTztRLE87USxPOztROzs7UyxPOzZCOzs7TzttQzs7OztJOztLLFc7SztNO08sTztjOzs7Ozs7STtLLFc7SyxHLHdDO0ssSSxlLHVCLHNCO0s7SyxXO0s7Ozs7cUI7OEI7Ozs7OztVOztVLFc7VSxPO1M7TSxPOzs7Ozs7O0c7O0k7O0ssUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ssZ0Q7Ozs7aUIsMEI7Tzs7Ozs7Ozs7OztHOztJO0ksaUI7O0s7STtJO0k7Szs7O0s7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7O0c7O0k7STt5RCxlO0s7O0ksSSxxQjs7Ozs7OztLOztNLFM7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO1c7aUI7VztZO1k7O2U7Ozs7Ozs7Ozs7OztXO1csVztXOzs7OzJCO29DOzs7OztnQjs7Ozs7Ozs7Ozs7Ozs7OztpQjs7MkI7O2dCO2dCLE87ZTtZOzs7O1M7Ozs7Ozs7Ozs7VTtTOzs7Ozs7Ozs7Ozs7O1E7TSxROzRCOzttQjs7Szs7TTtNLGU7OztTOzs7O3lCOzs7UztVO1csVTtXO1c7VztXO2lCO1c7WTtZLHNCO1c7VztZLE87WSx1Qjs7Ozs7Z0I7O2lCOzsyQjs7Z0I7Z0IsTztlO1k7Ozs7UztVLFk7Ozs7Ozs7Ozs7O1U7Uzs7Ozs7Ozs7Ozs7OztRO00sUTs0QjtNLGU7OztJO0s7OztLOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7O0s7SyxPO0s7STswQzs7O0k7Szs7TSxlO007TTtZO007TztPLHNCO007Ozs7VTs7Vzs7cUI7OztVO1UsTztTO007OztJOzs7Szs7Ozs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7Ozs7STs7SztJO0k7STtLLFM7Szs7O0s7STtLO00sTzs7OztJOzs7Ozs7O0s7STs7Ozs7Ozs7Ozs7OztHOztJOzs7O0k7STtLO00sTzs7OztJOzs7Ozs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0k7Szs7O0s7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLOzs7Szs7SztJOzs7Ozs7Ozs7Ozs7O0c7O0ksSSxRLCtDOzs7O0ssSSxzQjs7Ozs7O2tCOzs7Ozs7SztNO00sVztNLE07TSxPO00sTztNLE87SztLO00sWTtNLFE7TSxPO007Ozs7Ozs7Ozs7SztLOztHOzs7O0k7OztLO0ssTztJOzs7Ozs7Ozs7Ozs7O0c7O0k7SztLO0k7Rzs7STtJO0c7O0k7SztLO0k7Rzs7STs7O0s7b0MsZTs7O21DLGU7Ozs7STtLLE87SztLO0s7STtHOztJO0s7SyxRO0s7OztJO0c7O0k7SSw0QjtHOztJLFk7STtHOztJO0s7SztJO0c7O0k7STtHOztJO0c7O0k7STtHOztJLG9CLE87STs7Ozs7Ozs7Ozs7OztHOztJLEksUSwrQjtJLE87Rzs7STtLLEs7SztLOzBDO0k7Rzs7STtLLEs7SyxnQztJO0c7O0k7SyxLO0s7SyxRO0s7STtHOztJLFM7STs7O0c7O0k7SyxLO0ssUTtLLDZCO0k7Rzs7STtLLEs7SztLLG9DO0k7Rzs7STtLLEs7SywrQjtJO0c7O0k7Rzs7Ozs7SyxXOzs7Ozs7O1UsZ0I7VTs7VyxRO1UsVztTOzs7O0s7O1E7OztTLG1COzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7O1E7Ozs7UyxxQjs7Ozs7Ozs7O1E7OztTLHFCOzs7Ozs7UTs7O1MscUI7Ozs7OztROzs7UyxxQjs7Ozs7Ozs7Ozs7Ozs7STtLLE87Szs7O0k7Rzs7STtLOzs7STtHOytFO0c7Ozs7Szs7OztJO0s7Ozs7STtLOztHO0c7STs7RztHO0k7O0c7RztJOzs7STtJO0c7O0k7SyxLOzs7Szs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Rzs7STtLLEs7OztLOzs7OztLO0k7Ozs7Ozs7Ozs7Ozs7Rzs7SSxJOzs7NEI7OztxQjs7dUI7OztLOzs7OzRCLE8saUIscUI7OztLO0k7O0s7Ozs7NEIsTyxpQixxQjs7O0s7STtJO0s7O0ssNEIseUI7Szs7SywyQix3QjtLOztLLHlCLDBCO0s7O0ssd0IseUI7Szs7SywyQix5QjtLOztLLDBCLDBCO0s7O0ssMEIseUI7Szs7SywwQiwwQjtJOzs7Ozs7Ozs7Ozs7OztHOzs7SztNLE07MEI7O0ssRyw4QjtLLE07STtJLEk7Ozs0Qjs7OztLOzs7TSxHOztPLFc7OztLLE07STs7Szs7O00sRzs7TyxXOzs7SyxNO0k7STs7OztLO0s7SztLO0s7SztLO0k7Ozs7Ozs7Ozs7Ozs7O0c7O0ksc0I7O0ssTTtJO0c7O0k7STtJO0k7Szs7ZTtlO0ssYztLLGlCO0ssaUI7Ozs7Szs7OztVOzt1Qzs7UztNOztLO007OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLEc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YSxHOzs7Ozs7Ozs7Ozs7O1U7O2lCOzs7Ozs7Ozs7Vzs7Ozs7O1E7Szs7STtHOztJO0s7Tzs7Ozs7O0ssSztLOztLLE07O0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJLHdCO0s7STtLLE87SyxPO0ksTzs7O0c7O0k7SyxPO0ssTztLO08sVztJLE87Rzs7O0k7STtJO0ssTztLLE87SztPOztTOzs7STtJO0c7O0k7MkIsVztHOzs7K0IsNEM7STs7RztHLGM7Rzs7OztHO0k7SSxVOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEk7Ozs0Qjs7O0k7Rzs7SSxJLFc7Ozs0Qjs7O0ksTztHOztJLEksVzs7OzRCOzs7SSxPO0c7O0ksSSxXOzs7NEI7OztJLE87Rzs7SSxPO0c7O0ksVztJLFc7STtLO00sTzs7Ozs7OzhCOzt5QixPLDBCO0ksTztHOztJLGtCO0ksTTtHOztJLFU7O0k7OztLO007UTs7VztNLE87TSxPO0ssTztJO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7O0k7SSxXO0ksTztHOztJLFU7SSxXO0ksTztHOztJLFU7SSxvQjs7O0ssSSxXOzs7Ozs7Szs7SSxXO0ksTztHOztJLFU7Ozs7SyxJLFc7Ozs7OztLOztJLFc7SSxPO0c7O0k7OztNLFk7OztPOzs7USxJLFc7Ozs7OztROztPOztPOzs7OztNLE07Ozs7STtHOztJLFU7SSxjO0k7OztLO00sVzs7Ozs7OztLOzs7Rzs7STtHOztJOzs7UyxJOzs7TTtPLEksVzs7Ozs7Ozs7Ozs7OztJO0ssa0I7O0s7Ozs7Szs7Szs7SSxJOzs7O007OztJO0k7Rzs7STtnQjs7Szs7TTtNLE87SztLO0k7SSxPO0c7O0k7O087O1E7OztPOztPOzs7UTs7O087O087UTs7OztRO1U7O087O0c7O0k7Szs7O0s7Ozs7TTs7Szs7O2tCOztJO0c7O0k7OztLOzs7TTs7O007Ozs7O0s7SztJO0k7SyxrQjtLOzs7OztLOzs7Ozs7Tyx1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7WTtNOzs7Ozs7Ozs7OztLO0k7OztpQixPOzs7TTs7O087Ozs7O007O0s7Ozs7TTs7Ozs7TTtROzs7Ozs7O007Ozs7O0c7O0k7O087O1E7OztRLE87Tzs7Tzs7O1E7OztRLE87Tzs7TztROzs7O1E7Tzs7Rzs7STtLOzs7SSxJLFU7Ozs7TTs7O0k7STtJO0c7O0k7OztPLEk7Ozs7Uzs7Ozs7O1E7UTs7Tyx1Qjs7OztXOztXO21COztPOzs7O1E7Tzs7Tzs7O1E7OztPLEksWTs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7Ozs7Ozs7Tzs7OztPOzs7UTs7O08sSSxVOzs7Ozs7O087Tzs7OztPLE07OztJO0c7O0k7OztPLEk7Ozs7Uzs7OztPO087O087OztROzs7TyxJLFU7Ozs7Uzs7O087TztPOztPLE07O0c7O0k7Szs7O0ksaUI7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksYTs7OztTOzs7TztPO087O08sTTs7Rzs7STs7O08sSTs7OztTOzs7O087Tzs7Tzs7O1E7OztPLEksYzs7OztTOzs7TztPO087O08sTTs7Rzs7STs7TyxnQjtrQjs7OztXOztZO1ksTztXO1c7VTtPLE87Ozs7Ozs7O1EsSSxhOzs7Ozs7Ozs7OztjO2E7YTtZO1MsTzs7O087O08sTTs7Rzs7STs7SyxNOztJO0k7Rzs7STs7O087Ozs7UTs7Ozs7USxJLFk7Ozs7Ozs7Ozs7O2M7YTthO1k7UyxPOzs7Tzs7TyxNOztHOztJOztLLE07O0k7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJLFU7STtHOztJOzs7Ozs7UTtPOzs7Tzs7TztROzs7Tzs7Rzs7STtJO0c7O0k7SSxpQjtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJLEk7Ozs7Ozs7Tzs7Ozs7STtHOztJOztJLHNCO0c7O0k7SSxJOzs7NEI7Ozs7Ozs7OztVO1M7UztRO0ssTzs7STtHOztJO0ksSTs7Ozs7OztPOzs7OztJO0c7O0k7O0ksc0I7Rzs7STtJLEk7Ozs0Qjs7Ozs7Ozs7aUMsNEM7UztRO0ssTzs7STtHOztJO0ksSTs7OzRCOzs7Ozs7Ozs7Uzs7UztpQjs7Szs7SSxvQixlOzs7SztLOztJO0c7O0ksSTs7OztLLGE7SyxJOzs7NkI7OztLOztJO0c7O0ksSSx5Qjs7OzRCOzs7STtHOztJLHVDLGM7Rzs7SSwwQyxjO0c7O0ksMEMsYztHOztJLDBDLGM7Rzs7SSwwQyxjO0c7O0k7SyxXO0s7OztlO2UsTztjOzs7O0k7O0s7OztLO3lCO0ksb0IsTzs7SyxPLDRCO0k7SSxPO0c7O0k7Szs7O007MEI7Szs7TSxPOzs7UyxZOztTLE87UTtLLE87O0ksWTs0QixPLHlCOztJO0s7OzZCLHNCLHNCO00sUTtNO2dCO0s7Ozs7NEIsd0M7TTtRLFc7Ozs7Rzs7STs7Szs7O2U7ZTtnQjs7bUI7NEI7Z0Isb0IsSztnQixPOztlLG1CO2U7O2dCLE87ZSxPO2M7Ozs7STs7Szs7O0s7eUI7OztLLFM7SyxPO0k7SSxPO0c7OztLLGdCOztLLE87STtzQixhO3VCLGM7STtLO0c7OzRCLE8sMkI7c0IsYTt1QixjO0k7SztHOztzQixhO3VCLGM7STtLO0c7O2tDLE8saUM7c0IsYTt1QixjO0k7SztHOztJO0s7SyxPLHVCO0k7c0IsYTt1QixjO0k7SztHOzttQyxPLGtDO3NCLGE7dUIsYztJO0s7Rzs7O0ssTztJO3NCLGE7dUIsYztJO0s7Rzs7STs7O0s7Ozs7VTtVO29COzs7c0I7MkI7O3dCOztTOzs7STtLO0s7TSxHLHVDOztPOzs7USxPO08sRztRO1MsTztTLFE7Ozs7OztNOzJCLGdDOztJO0k7OztLOzs7Ozs7O0ssSSxLO0ssVztJO0ksVztJOzs7Ozs7Ozs7Ozs7O0c7O0ksTztHO0c7SSxXO0ksbUI7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJLGM7STs7Ozs7Ozs7Ozs7OztHO0c7STs7O1EsTTtPO0k7OztRLE07Tzs7O0ssVztLLE87STtJOzs4QyxxQjtPLE87Ozs7OytCLDRCO08sTztlOztHOzs7SyxXO0ssTztJO0ksTztHOztJO0k7K0Msc0I7O0c7O0k7STsrQyxzQjs7Rzs7STtJOzhDLHNCOzs7O0c7O0k7SSw2Qyx5Qjs7Rzs7STtJLHVDLHlCOztHOztJO0k7K0Msc0I7O0c7O0k7STsrQyxzQjs7Rzs7STtJOytDLHNCOztHOztJLEk7STs7ZTs7Z0I7ZTtjOztHOztJO0ssTzs7OztPO087a0I7cUM7TyxPOzs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TztPLEk7Ozs7Uzs7O08sTzs7Ozs7Ozs7OztPO08sSTs7OztTOzs7TyxPOzs7Ozs7Ozs7O087TyxJOzs7O1M7OztPLE87Ozs7Ozs7Ozs7TztPOzs7TztPOzs7TztPOzs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7OztPLE87Ozs7TyxPOzs7O08sTzs7Ozs7TztPLE87Ozs7Ozs7Ozs7OztJOzs7TztPLEc7USxXO1E7OztRO1MsTztTLE87UTs7TztRLE87USxPO08sTzs7Ozs7Ozs7O08sTzs7O087Ozs7SSx1QjtJOztLO0s7Tzs7VTtJLFc7RztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7aUMscUI7O0k7YztjOztrQyxtQjs7SSxJLE0scUIsVztJO0c7eUIsdUI7O0k7Ozs7OytCOzs7OztJO0c7O0ksWTtJO2lCOztlLE87SyxtQixJO1c7OztHOztJO0s7O3dCOzs7OztTLG1COzs7O0s7O0ksTztHO3FEO0c7O0k7O3VCOzs7Ozs7O1c7OztXOzs7Ozs7OztTOzs7UTs7OztxQzs7STtHOzBCLE8seUM7O0k7SyxNO0k7Rzs7STtLLE07STtHOztJO0ssTTtJO0c7MEM7O0k7SyxNO0k7Rzs7SSxzQztJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJO0c7O0ksOEI7OztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPOztPLGtDO087OztHO2tDLHFDOztJOzs7MEIsTzs7NkIsTzs7O1EsTzs7NEIsTzs7Ozs7MkIsb0IsTyxzQjtRLE87OztRLE87OzRCLE87OzRCLE87OzRCLE87OztRO1EsTzs7STtHOztJOzs7O1EsVzs7eUIsVzs7O1EsbUI7Ozs7O1MsbUI7Ozs7Ozs7OztZO1ksbUI7VztRLFc7OztRLFc7O3lCLFc7O3NCLFc7O3dCLFk7O1EseUMsTTtRLFk7O0k7Rzs7STs7STs2QixrQztHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7O0s7OztTLEcscUIsTTtTO1E7Ozs7O3VCOzs7STtHOztJOzt1QixpQyxpQjtJLHFCO0c7O0k7STs7Ozs7a0MsTzs7O1M7UyxPOzs7O0s7OEIsK0I7O0c7O0k7STtLOztJO0k7O0c7O3dCLG1CLFU7SSxPO0c7O0k7SSxPO0c7O0k7Rzs7STtJO0s7O0k7cUIscUM7STs7Rzs7STtJLE87Rzs7STtHOytCLE8scUM7O0k7Ozs7Ozs7Ozs7OztZLEk7Ozs7OztROztRLHdDO1E7Uzs7Ozs7O1U7Ozs7Ozs7O1M7Ozs7K0I7Ozs7STs7O3lCLHlCO0k7Rzs7O0k7Szs7K0IsVzs7O21CO0s7STtJO0s7STs7Szs7Ozs2Qjs7Uzs7O1U7OztVOzs7VTs7aUM7Uzs7c0M7Ozs7OztLO0k7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7O3VCLHVCOztJLHFDOztJO0c7O0ksWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxNOzs7Ozs7Ozs7Ozs7OztPLE07OztJO0c7O0k7Ozs7Ozs7O2U7O0k7Rzs7STtLLGtCO0ssbUI7STs7OztLO007O3FCO08sTTs7TTs7OztPOztNOzs7O08sTTtNLEs7TSxJOzs7TSxJO007TztxQjtPOzs7O1E7O1EsSTs7O087Ozs7SSxpQjtJO0c7bUIsTyxvQzs7STtJLE87Rzs7STtJLE87Rzs7STs7STtLO2lCO0s7Ozs7TTs7OztLOzs7OztXLFU7VyxPO1U7Ozs7TTtNOzs7TyxVOztNO087Uzs7OztLO007Ozs7STs7Ozs7O0ssTTtLLFE7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztJLFM7STtHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7OztHOztJLHFCO0k7OztrQjtHOztJOztxQixPOzs7TyxPOzs7O08sTzs7Ozs7Ozs7O0c7O0k7Rzs7O0ksWSxPOztJLE87OztJOzs7TyxPOzs7TyxPOzs7TyxPOzs7Ozs7Ozs7Rzs7SSxPO0c7O0k7O3FCLE87O3FCLE87Ozs7USxPOztPLE87Ozt1QixPOzt1QixPOzt1QixPOzt1QixPOztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJO2M7YztHOztJLFc7STtJLE87Rzs7SSxRO0k7SSxXO0k7STtHOztJLFE7O0k7SSxPO0c7O0ksTztHOzhCLE8saUM7O0ksOEI7OztLLE87OztJLE87Ozs7SztJO0ksTztHOztJO0k7O0c7O0k7O0s7SztLLE87STtJLE87Rzs7STtJOztLO0s7SyxJLG1CO21DOzs7MEIsTzs7O1E7UTtROzs7OztRO1E7OztRO1E7OztRO1E7Uzs7O1k7WTs7YTthO2E7OztZO1k7VztRLE87OztRO1E7OztROzs7OztRO1E7UTs7O2tCO21CO2lCOzs7Ozs7Ozs7O2EsTztZO1ksTztXO1E7Ozs7O1E7UTs7O0c7OztJO0k7OztJO0k7O0s7SztLLEksbUI7O007TTtPO087O1c7O1k7YTs7O2dCO2dCO2dCOzs7Z0I7Z0I7OztnQjtnQjs7WTtZOzs7TTs7O21DOzs7O1EsTzs7O1E7Ozs7O1EsTzs7O1E7UTs7O1E7UTtROzs7a0I7O21COztvQixPO29CLE87bUIsTztrQjtrQjttQixRO21CLE87a0I7a0I7aUI7Ozs7O1E7UTs7O1E7UTs7O1E7UTs7O1E7Ozs7O1E7Ozs7O1E7Ozs7O1E7UTs7OztHOztJO0k7O0s7SztLLEksbUI7O007TTtPO087O1c7O1k7OztlO2U7ZTs7O2U7ZTtlO2U7OztlO2U7ZTs7O2U7ZTs7OztNOzs7bUM7Ozs7USxPOzs7USxPOzs7UTtROzs7OztRO1E7UTs7O1E7UTtROzs7UTtRO1E7OztRO1E7UTs7O1E7UTs7O1E7UTs7O1E7UTs7Ozs7O1E7UTtRO1E7O1M7O1M7Uzs7VTs7O2dDOzthO2E7O1M7Uzs7UTtROzs7VTs7VTs7Ozs7WTs7OztZOzs7O1k7O1E7UTs7O1E7UTtROzs7UTtRO1E7Ozs7O1E7UTs7O1E7UTtRO1E7OztRO1E7Ozs7O1E7UTs7Ozs7Ozs7OztRO1E7UTs7Ozs7Ozs7Vzs7Ozs7Vzs7Ozs7Vzs7Ozs7O1EsTzs7O1EsTzs7O1E7Ozs7O1E7UTs7O1E7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7OztRO1E7UyxPOztROzs7UTtRO1E7UTtTLE87O1E7OztRLE87OztRO1E7UTs7OztHOztJO0k7O0s7SztLLEksbUI7Ozs7USxPOzs7UTs7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7O1E7UTtROzs7UTtRO1MsTzs7UTs7O1EsTzs7O0c7O0k7STs7SztLO0ssSSxtQjs7OztRLE87OztROzs7Ozs7UztTOzs7OztTOzs7Ozs7UTtROzs7Ozs7O1M7UztTO1UsTzs7Uzs7Ozs7O1E7UTtTLE87O1E7OztHOztJO0k7STs7O0s7Szs7O0k7SyxPOztJO0c7O0k7OztJOzs7STs7O0k7OztJO0k7STtJOztHOztJO0k7O0c7OztJOzs7STtJO0k7STtJO0k7STtJO0k7SSxnQjs7bUIsMkI7OztLO0s7Ozs7SztLOzs7STtJOztHOztJO0k7SSxJO0k7STtJO0k7STs7O0c7O0k7STtJO0k7STtJO0c7O0k7STtJO0ksSTtJO0k7SSxnQjs7O0s7SyxPOzs7STtnQjtJO0k7Rzs7STtJOztLO0s7SyxJLG1COzs7O1E7UTs7O1E7O1E7UTtROzs7UTtRO1E7Ozs7O1E7Ozs7O0c7O0k7STtJO0k7Ozs7O087Tzs7Ozs7Ozs7Tzs7Tzs7Ozs7Ozs7Tzs7Ozs7OztPOzs7TztPO087O3lCOztHOztJO0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STtJLEk7STtJO0k7O0k7STtJO0c7O0k7STs7SztLO0ssSSxtQjs7OztRO1E7OztRO1E7OztRO1E7UTs7Ozs7UTtRO1E7OztRO1E7UTs7Ozs7OztTO1M7Uzs7Ozs7O1E7Ozs7O0c7OztJO0k7STs7O0k7STtJO0k7Ozs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087O3lCOztHOztJOztLO0s7OztJO0k7OztJO0k7SSxJO0k7STtJOztJO0k7STtHOztJO0k7SSxJLGlCOzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPOzs7TztPOzs7TztPO087OztPO087Tzs7O087O087OztPO087Tzs7O087Tzs7O087Tzs7eUI7O0c7O0k7STtJOztHOztJO0k7STs7Rzs7SSxZOztJOzs7STtJO0ksSSxpQjs7OztPO087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087Tzs7O087TztPOzs7TztPO087OztPO2tDLG1CLFU7Tzs7OztnQjs7O087a0MsbUIsVTtPOzs7O2dCOzs7TztPO087O3lCOztHOzs7STs7Ozs7TztPOzt1QixPOzs7TztPOzs7TztPOzs7TyxPOzs7TztPOzs7OztJO0k7STs7Ozs7Ozs7OztJO0k7O0s7STtJO0k7OztJLHFDOztJOzs7Ozs7Ozs7STtJO0k7STtJOzs7O0k7STs7O0k7STtJOztHOzs7STtJOzs7O0k7STtZOztJOzs7O0k7STs7O0k7O0s7Ozs7TSxPOztLO0s7Szs7O0k7STtHO2dDLDBDO21DLDBDOzs7STs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7TyxNOztPLE07ZSxNOztHOzBDLGtDO2lDLDBDO0c7Ozt5QixvQjs2QixpQzs7SSxNO0c7O0ksTTtHO0c7O0ksc0I7STs7O0ssVztJLFc7RztHO0c7STtJO0k7STs7STtJO0ksZ0I7SSxlO0ksZTtJLGM7O0k7Ozs7O0c7O0k7Ozs7O0c7cUMsd0I7O0k7OztHOztJOzs7OztHOztJOzs7O0c7O0k7Ozs7Rzs7STtLLFE7OztxQjs7OztHOztJOztHOztJOztHOztJOztJO0c7cUMsK0I7O0k7O2dDOzs7ZSxNOztrQjtHO0c7O0k7O0s7TSxPO007O3lDOzs7O0k7Rzs7STs7Rzs7SSxJLHFDLEk7STtJO0c7Rzs7STs7OztLO0k7Rzt3QixPLDhDOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7MkIsa0M7aUMscUM7RztJO0k7STtJO0k7O0k7Rzs7SSxPOzs7Ozs7Ozs7O0c7cUMsOEI7O0k7MkM7STtHOztJLFk7MkU7SSxNO0c7O0k7STtLLFk7O007Ozs7O087Ozs7Ozs7O1M7UyxPO1E7SyxXOztHOzs7SztLLE87STtJLE87Rzs7STs7OztNO08sTztPLE87TyxPO00sVzs7O007O08sTztPLE87TyxPO00sVzs7Ozs7Ozs7Ozs7Ozs7SyxHO007Tzs7O2E7TSxJOztNOzs7O087Ozs7Rzs7STtJO0ssWTs7Ozs7Ozs7Szs7Rzs7SSxJLHVCLFE7OzRDO0k7Rzs7SSxJLHVCLFE7b0Q7STtHOztJLGM7Ozs7UTs7O1E7UyxZOzs7O2EsTzs7Ozs7UyxNOzs7SSxPO0c7O0ksWTs7OztROzsyQixPOztJLE87Rzs7STtJLE87RztHLHNCOztJOzs7TSxLO087Ozs7TSxLO087O0s7TSxRO00sUTs7Ozs7O0s7O08sVztPLFc7OztPLFc7TyxXOzs7Ozs7Ozs7OztNLEc7TztROzs7O2M7TyxJOztPLEk7OztJO0c7O0ksWTtJOzs7O0s7SyxRO2tDOztLO0s7O0k7O0c7STtJO0k7O0k7STtLLFc7SyxXO0ssSSxPOzs7Ozs7OztVO3NCO2M7Ozs7Ozs7VTs7VyxzQjtVLE87Ozs7Ozs7Uzs7OztTOztVO1U7O2Msc0I7OztTO1MsZTtvQjtTLEksTzs7O0ssYyxzQjtLLE87O0c7O0k7O0k7Ozs7STtHOztJO3dCO0ksUztJO0k7Rzs7STtnQjs7SSxNO0c7O0k7Szs7Ozs7MkMseUI7TTs7Ozs7OztVO1UsVzs7O1csTzs7OzJCLHlCO1UsTztTO007Ozt3QztLO0s7Szs7Ozs7O0s7Szs7Rzs7STtLO2tCO0s7SztLOzs7Ozs7SztLOztHO0c7O0k7STtJOzs7OztTOztTLEksNEI7Ozs7O1UsTTs7O1E7SztLO0s7SztLOzs7Ozs7SztLO0s7O0c7K0IsTyxvQzs7STtLLFE7Ozs7STtJLFk7Ozs7Szs7O0ksTztHOzZCLHVCLHNCOztJLEksUTs7UTs7OztNLFk7Ozs7UTs7O1M7Ozs7Ozs7Ozs7OztNO00sTzs7Ozs7O0k7Rzs7STtJO0c7O0k7STtLLFk7O00sWTs7Ozs7VTtVOzs7OztVO1UsTzs7O1U7Vzs7VyxPOzs7OztVOzs7OztVOzs7NkIsbUIsNEI7VSxPOztNOztLOztHO0c7Ozs7USxNO087O0k7STtLLEksSSxPOzs7Ozs7Szs7OztzQjtLLDZCLE87SyxHLCtCO0ssSTs7Rzs7STtJO0s7TSxhO00sTztLLFc7Z0IsNkI7SyxZOzs7OztvQjtVLEksVzs7O3NDOzs7Ozs7Ozs7b0I7VTtVLEcsK0I7VTtXLE87Ozs7OztLLDBCO0ssTzs7Rzs7SSxXO0k7SztLLFc7Szs7Ozs7O0s7SyxNOztHOztJLFc7O1EsbUM7Szs7O00sMEI7TSxPOzs7Ozs7O0c7O0ksSSxvQzs7Ozs7Szs7Rzs7STtLLG1CO2dCO2dCLDJCO0ssWTs7Ozs7b0I7VTtXLFc7VztXO1c7Ozs7c0M7Ozs7VSxJLEksTzs7Ozs7bUMsb0I7dUI7O1U7Ozs7OztlO2dCLE87Z0Isc0I7ZTtjOzJCO1U7O1ksTTtXLFc7VztXO1c7Ozs7OztXO1csMEI7VyxPOzs7Ozs7OztxQjtXOzs7Ozs7OztXO3NCO1U7OztTLG9CLFU7Ozs7cUI7VyxlO1c7Ozs7UztTLDBCO1MsTzs7O29CO1U7VSxHLCtCO1U7Ozs7O0s7SywwQjtLLE87O0c7O0ksbUI7ZTtJLFc7SSxJLHdCOzs7O0s7Szs7Rzs7SSxJLDhCOzs7OztLOztHOztJLHVCOzs7O007TyxPO08sYzs7Ozs7Ozs7SyxJOzs7O0ksaUI7SSxXO0k7STtLOztJLFk7Ozs7d0I7OztRO1E7Ozt1Qjs7O1M7VSxNOzs7Ozs7Ozs7UztVO2lDLG9COztxQjs7UTs7UyxzQjtRLEcsNkM7Ozs7O2EsTzs7dUI7Ozs7WTtZLE87VztRLHFCO1EsSSxXOzs7b0M7OztROzs7O2dDLG1CLHdCO1EsTzs7SSxvQjtJLE87Rzs7STtJLHVCO0c7O0k7SSxXO0k7Rzs7Ozs7OztROzs7OztRO1E7Ozs7O1k7WSxPO1c7UTs7Ozs7WTtZLE87VztRLE87OztROzs7OztJO0c7O0k7RzsrQiwwQjs7STtLLFE7SztLOztLLFk7Ozs7cUI7b0I7Ozs7Ozs7O0s7OztxQjtLO0s7SztLLG9CO0ssTztJOztLLEksTTs7TTtpQjtNO00sWTs7Tzs7USxPO1EsSzs7OztxQjs7Ozs7O0s7STtJO0k7TztLLGMsc0I7Szs7STs7Szs7O00sTzs7STtJLE87Rzs7STs0QjtHOztJO0ssWTtnQjs7Ozs7OztLO0s7SztNO00sc0I7SyxPOztHOztJLGU7STtJLG1CO0k7SyxZOztNOztPLE87TyxPO00sRyx5Qzs7SztNO08sUTtPLFc7O2tCO087O1Esc0I7ZTs7OztNOzs7OztNLGU7TTtNOztPLHNCO00sTzs7STs7SyxXO0s7STtJO0k7SztNLFc7TTs7Ozs7O007Rzs7STtLLFc7SyxXO0s7UTtNLE07SztLLE87STtJLEksUyxJOzs7Ozs7STtJO0c7Rzs7SSxzQjtJLFc7c0U7SSxZOzRDOzs7OztNLE07Szs7OztNLE87TTtROzs7Ozs0QixPO0ksZ0I7STs7Ozs7O1M7OztVOzs7Ozs7Ozs7OztjLEc7Ozs7Ozs7Ozs7Ozs7Ozs7VyxLOzs7Ozs7Ozs7O3FCOzs7Ozs7Uzs7O1M7O1UsTztVLFE7OztVOzs7O1k7Ozs7O1U7VztXLE87Ozs7OztZOzs7Ozs7Ozs7Ozs7WSxNOzs7O1UsYzs7Ozs7WSxLO2E7YyxVOzs7Ozs7Z0I7Ozs7Ozs7Ozs7OzthOztjO2dCO2M7O2lCLGtCLFE7aUU7aUI7O2MsUzthO2Usa0M7YyxXO2M7Z0I7cUI7ZTtnQixPO3dCOzs7Ozs7Ozs7OztVOztzQjs7Ozs7a0I7O0k7STs7O0k7Ozs7eUIsc0M7SSxPO0c7O0k7O0k7O0k7Rzs7O3NCLDRCO0ssTztJO0ksTztHO0c7O0k7O0c7O0k7SztNLE87Ozs7Ozs7OztLO0k7OztPO2lCO0s7SSxPO0c7O0k7Ozs7Ozs7OztLO007OztJLFc7STs7Ozs7Ozs7Ozs7Ozs7WTtHOztJLFk7Ozs7TTs7TyxPO08sTztNLE87Ozs7Rzs7O0s7Ozs7OztVO1c7Vzs7VztXLFE7Ozs7VTtXO1c7VSxLO1csTTtVO1U7Uzs7Ozs7O3dCO0s7TSxRO007TTs7O0ssb0I7SyxjO0s7STtJLE87Rzs7O3NCLHFDO0s7TSxVO007SztJO0ksTztHOzs7SztLLG9CO0s7TSxVOzs7SyxvQjtLO00sUztNO0s7STtJLE87Rzs7STs7Ozs7OztTOzs7O1UsTztTO1E7SyxXOzs7O0s7Ozs7TSxPO00sTztLO0k7SSxXOzs7O0s7Ozs7Ozs7Ozs7Ozs7SyxvQjtLO00sTzs7Ozs7TTtnQzs7Ozs7SyxvQjtLO2E7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7O0k7O0k7Rzs7O0s7O1E7Ozs7OztTLHNCO1MsUTtTO1E7O1E7O1M7OztZO1k7VztTLE87Ozs7WTtZO1c7UyxPO1M7UTs7UTs7OztTO1E7Ozs7SztLLG9CO0s7TSxXO007SztJO0ksTztHOztJLGM7YSxPOztJO0c7Rzs7O0ksYzs7UztLLGdCO0s7TTtPLE87TyxROzs7TyxVOzs7TztRLFE7OztXLFc7VyxPO1U7ZTs7O00sUyxNO007Ozs7O007TyxjO08sTzs7O087UTs7O1csTTs7Ozs7Ozs7c0I7Ozs7Ozs7O1U7Vzs7Ozs7TztROztXOzs7OztZO1k7NEI7OztXOztZLE87WSxPO1c7OztvQjs7O1c7VztZO2EsTzthLGtCOzs7VztZO1ksUTs7OztXOzs7K0IsYSx5QjtZLE87WSxVOzs7ZSxXO2M7WSxPO1ksWTtZOzs7OztPLEksNkI7O007TTs7O0k7TyxvQztJLEksWSw0Qjs7Ozs7UTtRLE87OztJOzs7O0ssWTs7O007O0ssTTtJO0ksVzt3QixXLHFDO0ksWTs7STtLOztLOzs7Ozs7O0k7O0k7Rzs7STs7SztJO0ksTztHOzs7SyxZOzs7Ozs7Ozs7Ozs7TSxJOztLO0s7STtJLE87RztHOzs7O1EsTTtPOztJLFc7TztLLE07OztJOzs7SztNLGlCLFE7O087OztRO087OzswQixPLHNDOzs7TSxNOzt1QyxPOzs7STtLOzs7O0k7SztLLFc7Szs7Szs7Ozs7O0s7SyxNOztHOztJO0s7Szs7Ozs7TSxNOzs7Rzs7RywrQjs7Rzs7STtLOzs7SSxZOztLOzs7O00sUTtNLFE7TTtNLFU7O00sSSxVOzs7O08sYTtPLEc7USxNO08sTzs7O007TztROzs7Ozs7OztNO08sTztPLFU7TTtNO007Ozs7TSxJOzs7OztLLEk7Ozs7O0s7O0ksTTs7O0k7Rzs7SSxJLG1DOzs7OztLLE07O0c7O0ksVztJLEksd0IsYzs7O2dDLDZCOztLO0s7Szs7Rzs7SSxZOztLO0ksTTtHOztJLFc7SSxJLHFDOzs7O0s7SztLLE07O0c7O0ksVztJLEksaUQ7OztnQzs7O0c7O0ksSSxzRDs7OytCOzs7Szs7Rzs7SSxJLHNEOzs7Z0M7OztHOzs7STtJO0ssWTs7Ozs7UyxJLFc7OztpQzs7OzJCO1MsSTs7O3FDOzs7Uzs7O1M7Ozs7O1M7OztTLE07O0s7O0c7O0k7Rzs7SSxZOztLO0ksTTtHOztJLFc7SSxJLHlDOzs7O0s7SyxNOztHOztJLEksMEQ7Ozs7Z0M7OztHOztJO0ssSSxJOzs7O007TSxTO007TztROzs7Ozs7OztNOzs7OztJLFk7Ozs7Ozs7TyxHO1EsVztRLE87Ozs7O0k7Rzs7STtLO2E7O00sTztLOzs7OzRCOzs7Rzs7STtLLEksTyw2QjtLO1UsZ0MsSTs7Ozs7Ozs7SztNOzs7Ozs7NEI7OztHO0c7O0ksRztLLE07SSxZOzs7OztRLDhDO1E7UyxHO1UsTTtTO1UsWTtVOzthOztVLE87Uzs7Ozs7UztVO1c7VztVOzs7OztXLE07Ozs7OztROztJLDBCO0s7TSxZO007O1M7O0ssTzs7STtHO0c7d0IsdUI7O0k7Ozs7Ozs7STtJOzs7YTtPOzRCLDBCOzs7OztLO0ssTTs7Rzs7SSxJLG9COzs7d0I7OztHOztJLEksb0IsYzs7O3dCOzs7Rzs7STtLLE87SyxXOztLLFk7Ozs7O1MsRztVLE07UyxzRDtTLG9CO1M7VTs7Ozs7Ozs7O1U7Ozs7OztVLEksSSxPOzs7Ozs7Ozs7Yyw2QjtjO2E7VSxPOzs7O1MsYTs7Szs7TTtPLGdCOztPO3dCO00sTzs7Ozs7O0k7Rzs7Ozs7TSxNO0s7Ozs7O007O1M7VTs7O2M7YyxPO2E7ZTtXO1U7Ozs7aUM7OztRO007TTs7Ozs7O1EsRyxnQzs7Ozs7O1E7USxPOzs7OztLLE07Ozs7SSxJLCtDOzs7O007OztHOztJO0k7O0ssVztLLFc7SyxHO007TTtPLE87O007O0s7TTtPLFU7TyxXOztPLHVCLE87b0I7Ozs7O007Ozs7O21CO007TyxPOztNOztJOztLLFk7Ozs7O3dCOztTO1U7VyxLO1c7OztjOzs7b0I7d0I7O2E7VyxPO1U7Ozs7Ozs7VSwwQjtVLE87OztTLGU7OztTOzs7VSxVO1M7VSxPOztTOztLLG9CO0ssTztJOztLOzs7Szs7eUIsa0M7STtLO0ssMkIsaUM7SSxPO0c7O0ksSSw0QixjOzs7NEI7OztHOztJLEksNEIsYzs7OzRCOzs7Rzs7SSxJLDBCOzs7OztLOztHOztJO0ksTztHO0csa0I7O0k7OztLOzs7O21COzs7VTtVLE87UztTLE87bUI7OztNLEk7ZTtJOztLO0s7TSxHLDJDO21CO00sWTs7Ozs7eUI7O1U7VztZLEs7WTs7O2UsZTs7YztZLE87Vzs7Ozs7WSxPOzs7O1UsVztVOzs7Ozs4QixPLG9DO1UsRyx5Qzs7OztNLE87O0k7STtHOztJOztLO0ssTztJO0ksb0I7cUIsTywyQztJLEc7SztxQixPLDJDO0ksRztLO3FCLHNCO0ksVTtxQixzQjtJLFU7O3lCLE8sc0I7STtLO0ssMkIsd0M7SSxPO0c7O0k7SztLOzs7Ozs7Szs7RztHOztJLG9CO0ksYTtJLG9CO0ksYTs7SztNLFk7OztVO1E7UTtROzs7TTs7SztNLE87TTtNLE87TSxPO00sTztNLFc7SztJO0ksTztHOztJLEk7STtHOztJO0k7c0M7O007OztPLE87TSxTOzs7O00sdUI7O0c7aUMsd0M7O0ksTztpQztHOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SSxvQjtJLFc7Rzs7SSxXO0c7OztLO00sTztNLGU7b0I7SyxXO0ssRztNLE07SyxPO0k7SSxJLGUsMkIsYzs7OztLO0s7O0c7Rzs7STs7SyxNOztJO0c7O0k7O0s7Z0M7OztLO007O007TSxROzs7TTtNLEk7O0s7STtJOztLLEcsMEM7a0I7SyxZOzs7O1M7O1UsUTtVOzs7Uzs7Ozs7UztVO1UsTzs7Ozs7O2dCO1UsSztXO1ksSTtZLFU7O1k7O2EsVTthOzs7YTthLE87YSxPO2EsTTthLE87WTs7YTs7O1csTTs7VSxTOztTLE87O0ssTztJO0k7Rzs7STtLO00sTzs7Ozs7Ozs7Ozs7OzRCOzs7Rzs7SSxJLDZCOztHOztJO0ssSSxPOzs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OzRCOzs7Rzs7SSxZOzs7SztNO08sbUI7TztNOzs7Ozs7TTs7O0k7Rzs7OztLLEcsbUM7SztNLFE7TSxVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsRyxpQzs7Ozs7Ozs7Ozs7TTs7SyxJLG1DO0ssRyxtQztLLGU7Z0I7SztLO00sVTtNLFU7Ozs7Ozs7Ozs7OzsyQzs7Ozs7Ozs7Ozs7Ozs7Ozt1QjttQjt1QiwrQjs7OztrQjs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7O2tCO21CO29CLFM7b0IsUztvQixPOzs7b0I7OztxQjtzQixPO3NCLGM7cUI7OztzQixXO3NCOzs7Ozs7Ozs7bUI7b0I7cUI7c0IsTztzQixPO3NCLE87Ozs7Ozs7OzZDLFM7NEI7O29CO3FCLE87Ozt3Qjt3Qjt1Qjs0Qjs7O29CO3FCLE07Ozs7Ozs7Ozs7Ozs7OzBCLEs7MEI7Ozs7Ozs7Ozs7Ozt5Qjs7eUI7Ozs7Ozs7Ozs7Ozs7OzsrQjs7Ozs7NkIsTTs7Ozs7Ozs7OytCOzs7Ozs7OzsrQjs7Ozs2QixNOzs0QixXOzRCLEssa0I7NkIsTTs7Ozs7OzBCLE07Ozs7Ozs7d0I7Ozs7Ozs7Ozs7c0I7Ozs7cUIsTTs7OzttQjs7OzswQzs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Ozs7O2tCOzttQixPO21CO3NDOzs7O21COztzQixrQixRO3NFO3NCOzttQixPO21COzRCO2tCOzs7bUI7b0IsTztvQjs2QjtrQixTLE07Ozs7c0I7Ozt1QixRO3VCLFU7Ozs7Ozs7Ozs7Ozs7Ozs7OzZCOzs7NEI7OzZCOzhDOzRCLE87Ozs7Ozs7Ozs7Ozs7NEI7OzZCOzhDOzRCLE87Ozs7Ozs7Ozs7Ozs7Ozt1QixNOztzQjtxQjtrQixPOzs7Ozs7O2lCO2tCO2tCOzs7OzttQixNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21COzs7Ozs7Ozs7O3lCOzttQjs7Ozs7b0IsTTs7Ozs7Ozs7O2lCOzs7Ozs7Ozs7Ozs7Uzs7Ozs7USxxQzs7Tzs7OztROzs7Ozs7Ozs7TTtPO1EsTztRO1E7TyxTLE07Tzs7Ozs4Qjs7OztLLE07Ozs7SSxXO087SyxNO0ksMEI7SSxPO0c7O0k7SztLOztLLE07STtLOzs7Szs7O0s7Ozs7STtLO2tCO0k7SSxrQjtJO0ksVztJO0s7TTttQjs7Ozs7O0ssVztLO007TztvQjs7OzthLE07O0s7Ozs7O00sTztNLE87OztNOzs7Ozs7O00sTTs7SztJO0ksTztHOzs7SztLOzs7O1E7USxXOztVLGtCOzs7OztRLE07OztxQjtNLE07O0k7STtHOztJLFc7Rzs7SSxJLG9COzs7K0I7OztHOztJO0k7SyxXO0ssVztLLFk7O0s7SyxPO0k7STtJOztHOztJLE87Rzs7STtLOzs7Ozs7OztJOztLOztzQjs7SyxJOzs7Ozs7O0ksVztJO0s7SztLLE87SyxrQjtLO2E7SSxPO0c7RyxtQjs7SSxXO1c7Rzs7SSxXO0ksUztJO0s7SztJLE87RztHO0k7OztRLE07TztJOzs7USxNO087STs7O0k7Szs7MEI7OztROzs7UTtNO0c7O0k7STtLLE07SyxROztLO0s7a0I7Ozs7TyxHO1EsVztROzs7TSxzQjtNLEksVTs7Ozs7Ozs7Ozs7OztTO1UsUzs7Ozs7O1c7Ozs7Ozs7Ozs2QixNOzs7O1M7Ozs7O00sTTs7STtJLEksOEI7Ozs0QixNOzs7Rzs7STtLO0s7d0I7SSxXO3dCO0ksdUI7OztLO087VTs7SyxNOztJO0c7Rzs7SSxXO0k7Ozs7TTtNLE87Ozs7STtHOztJLEs7SyxNO0k7SSxJOzs7a0Q7OztJO0ssa0I7SyxhOzs7Ozs7Szs7STtJO0c7O0k7O0ssTTs7SSxPO0c7O0k7SSxJOzs7O007TTtNO007Ozs7OztJLE87Rzs7SSxxQjtJO0k7O0ssSSxRLDBCLFU7Ozs7Ozs7OztXOzt3RDtXO1c7Ozs7Ozs7Ozs7Z0Isa0M7Ozs7Ozs7aUI7bUI7Ozs7O2tCLFc7a0I7a0Isb0I7a0I7OztpQjttQjs7a0I7bUI7O29COztvQjs7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7OztjO2MsVztjO2Msb0I7Yzs7Ozs7Ozs7UTtROzs7O007O0s7Szs7Ozs7O0s7Szs7Rzs7STtJO0k7SztLO0ssTztLLE87SyxLO0ssTztLLE87SyxRO0k7STtJO0k7SSx5Qjs7Ozs7OztNLFk7Ozs7OztNLGM7Ozs7Ozs7Ozs7O0k7SyxJLHFDOzs7OztNLDBCOztJO0c7O0k7SyxNO0s7SyxLO0ssVzs7OztLO007O1M7Ozs7O1k7Ozs7Ozs7OztZO1ksTzs7Ozs7OztNOzs7SztLOztTLGdDO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7OztrQjtzQiwrQjs7Ozs7Z0I7Z0I7Z0I7aUIsVTtpQixVOzsrQjs7O2lCOztpQjs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7O2MsRzs7Ozs7OztxQyxxQztrQjs7Ozs7OztpQjtrQjttQjs7bUI7b0M7a0IsSzttQjtvQjtxQixPO3FCLE87cUIsTzs7Ozs7Ozs7NEMsUzsyQjs7bUI7b0IsTzs7O3VCO3VCLE07O3dCLFc7d0IsSSw2Qjs7Ozs7eUI7eUI7eUI7O3VCO3VCOztzQjttQjs7OztpQjs7O2dCOzs7Ozs7OztjOzs7O2UsVzt5Qjs7OztlO2U7Ozs7YTtjO2M7Yzs7Ozs7Ozs7Ozs7Ozs7Z0I7Z0IsYzs7Ozs7OzttQixxQixVOzs7Ozs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztpQixXO2lCLEk7Ozs7O2tCO2tCO2tCO2tCO21CO21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQjs7Ozs7Ozs7OztpQjs7O2tCLDRCO2lCOzs7Ozs7Ozs7Ozs7Ozs7Z0I7aUI7a0IsTztrQixPO2tCO3lDO2lCOzs7Ozs7b0M7aUI7a0IsTzs7b0MsbUIsc0I7aUI7Ozs7Ozs7Ozs7VTs7OztXO1c7Vzs7Ozs7Ozs7O1E7UTtRO1E7UTs7Ozs7USxLLDhCO1M7c0I7UyxTOzs7USxHO1M7O1M7O1M7Ozs7O2lEOztxRDtNOzs7O00sWTs7OztPO087TztPLEksbUIsSTs7Ozs7O087TztrQjs7OztLOzs7Ozs7SztLOzs7O0ksVztPLDBDO0ksMEI7SSxPO0c7O0k7Szs7O0s7OztLOzs7O0ssSztLLEs7OztLLFE7STtLLFk7O00sTztLO0k7STtLLFE7SyxVOzs7Ozs7Ozs7OztVO1csTztxQjs7Ozs7USxTOzs7Ozs7Ozs7O2dCOzs7Ozs7O0k7SztxQztLLE07SyxNO0s7O0k7SyxTO0ssZ0I7Ozs7Uzs7Ozs7O1M7Uzs7VyxXO1c7VyxvQjs7VTtVOzs7Ozs7O1U7MEI7O1E7SztLOzs7O0s7SztLLE07Ozs7SSxJLFEsMEIsVTs7O3VCLE87Ozs7VSxPOztVOzs7O0ksTTtHOztJO0ssUTs7Ozs7SyxVOzs7OztJLHVCO0k7Szs7Ozs7OztLO00sTztNLEs7OztTLGtCLE87UyxPO1E7Szs7OztTO1M7VSxXO1UsTTsrQjs7OztpQzs7O1E7Szs7STtLLFM7SyxTO0k7O007TyxPO2M7Ozs7OztLO00sTztNLE87TSxPO2E7STtLLFE7SztJOztNOzs7TyxROzs7b0I7NkI7O0s7SyxPO0k7STs7TTttQjtLO0ssTztJO0k7SyxJLGtCOztNLEksa0I7Ozs7O1c7Ozt5QjtrQzs7VTtlOzs7Ozs7Ozs7SSxTOzs7OztNO007O29DLG1COzs7Ozs7O007TTs7b0MsbUI7Ozs7Ozs7O0s7O21DO00sUTs7Ozs7TyxlO1E7Ozs7UTsrQjtTLGE7UTs7Ozs7OztxQjtNLFM7O0ssUzs7TTtPLE87TyxPO007O0ssSztNO08sVztPLEs7TyxPO007TSxvQjtNLE87O0ssRyxpQztLLE87ZTs7STtJO0ssTTtLLE07Szs7STtLO0s7Ozs7UztTO1U7O1U7Ozs7Ozs7VTs7UTtLO0ssRztNLFM7TSxHO087USxPO1EsTztPOzs7Szs7OztLO0s7SyxNOzs7O0k7Szs7OztTLFksTztTLG9CO1M7O007TTs7Ozs7O21CO0s7TSxRO00sVTs7c0M7O087O2dDLE8sOEI7Ozs7Ozs7OzswQzs7OztTOzs7bUIsUTttQjttQixXO21CO21CLG9CO21CO29CO3FCLHNCO3FCLE87b0I7Ozs7b0I7b0IsTTs7a0I7Ozs7OzswQjs7O1M7O2tDLE8sOEI7Ozs7OztROztpQyxPLDhCOzs7OztRLEcsK0I7USxJO1E7UyxXO1k7VSxRO1U7VTtVLGdDO1UsTzs7O1E7Ozs7Ozs7Ozs7d0I7aUM7Ozs7O1MsYzs7O1UsVzs7OztlO2dCLG9CO2dCLE8sc0M7OztrQjs7Ozs7Ozs7UTtRO1M7OzthLFc7YSxXO1k7WSxPO1c7UyxRO1MsUTs7UyxzQjtTLFU7Ozs7UyxzQjtTLFU7Ozs7O1M7OztXOztZLE87WSxzQjtXOzs7Ozs7Uzs7Ozs7O2EsVzthO2EsMkI7WTtZLE87VztRO1E7UTtTLE87UyxPO1E7USxPOzs7O1M7O2tDLE8sOEI7Ozs7OztTOzs7bUIsUTttQjttQixXO21CO21CLG9CO21CO29CO3lDLDBCO3FCLE87b0I7Ozs7b0I7b0IsTTs7a0I7Ozs7O0s7Ozs7SSxXO0ksSSwrQjs7Ozs7SztLLE07OztHOztJOzs7SyxvQjtLOzs7O3VCLDBCOztLO0s7Ozs7O0s7SyxNOztHOztJLEcsK0I7SSxJLFEsMEIsVTs7SztNO0s7SztNO00seUI7TSxvQjtNO007TTs7Ozs7O007TSxNOzs7Ozs7O0k7Rzs7O0k7STtHO2lDLDBDOztJO0s7SztJO0k7RztHOzs7OztLO007TTtNLEk7SztJO0ksSTs7Ozs2QztLLE07Ozs7Ozs7SSxZOzs7O1E7Uyx3Qjs7OztRO1E7Ozs7YTtTLGtDOztTLE07OztROztJLE07RztHOzs7O0k7STs7OztTO1U7VTtVLEs7UztRO0ssSTs7OztNOztPLFE7O00sTTs7Ozs7Ozs7SyxZOzs7O1M7VSxVO1U7OztTO1M7OztTLEc7VTtVOzs7OztLLE07O0c7OztLO007TSxLO007SztJO0ksSTs7OztLOztNLFE7TSxROztLLE07Ozs7Ozs7O0ksWTs7OztRO1MsVTtTLFU7Uzs7O1E7UTs7MEI7O0ksTTtHO0c7Ozs7SSxJLDZCLFE7O0ssRztNLE07YyxNO0ssSSxRLDZCO0s7Ozs7TztRLFU7UTtROzs7O1E7UyxTO1M7OztPO2U7TztPOzs7TyxHOztROztPO1EsVTtROzs7O1EsUTtPO2UsTTs7Rzs7SSxJLG9CO0k7Rzs7STtLOzs7STs7O0c7Rzs7Ozs7OztTLFk7Ozs7TSxJOzs7O1EsTTs7OztNLEk7Ozs7O08sTTs7Ozs7Ozs7Szs7TTtjOztVOzs7VSxNOzs7Ozs7Ozs7O0s7SyxJOzs7OztNLE07Ozs7STtlOzs7O0c7Ozs7STs7O0ssSSxVOzs7Ozs7O0s7Ozs7TTtLOzs7O08sTTs7O00sSTs7Ozs7TyxNOzs7Ozs7SSxhOzs7RztHOzs7O0ksMkI7SSxJOzs7Ozs7Ozs7O1E7OztTLFE7UztRLE07Ozs7O0ssTTs7Ozs7SztLOztNLFM7TyxNOzs7OztLLEk7Ozs7O00sc0I7TSxNOzs7SztJO0k7OztLO0ssSTs7Ozs7TSxzQjtNLE07OztLO0k7SSxPO0c7O0k7SztLOzs7Szs7Szs7Ozs7OztLLEc7TTtLLEksVTs7OzthOztTO1UsVTtVOzs7OztTO1UsVTtVOzs7Ozs7O007O0s7Ozs7TSxROztNO08sVTtPOzs7OztLO0k7STtLLFU7Ozs7OztJO0c7O0k7Szs7O0s7WSw4QjtJO0ksTztHOztJO0s7Szs7STtLLEksNkIsUTttQzs7O1E7UyxRO1MsTztRO1E7OztRLEcsbUM7Ozs7USxNOzs7Rzs7STsrQixrQiw0QjtJOztLO0s7STtJLGdCOztLO0s7STtJOzs7Rzs7O0ssUztxQjtRO00sTTtLLFc7SyxjO0k7SSxJLFc7Ozs7SztLOztJO0k7Rzs7SSxZO0k7OztHOztJLEcsK0I7STtLLEksUSwwQixVOzs7Ozs7VTtXLG1CO1csb0I7VztzQjs7Ozs7Ozs7VyxLOzs7Ozs7TSxJLDZCO00sRzs7O08sZTs7UTtRO1MsVTtTLFU7Ozs7Ozs7Ozs7YTtjLG1CO2Msb0I7eUI7Ozs7Ozs7Ozs7Ozs7O21CO2U7O3NCLCtCOzs7O2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjLEs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOzs7ZSxVOzs7O2UsVTs7Ozs7YyxHOzs7ZTtnQixPO2dCO2dCLDBCO2dCOzs7OztnQjtpQjs7Ozs7OEI7OzswQjs7O2lCO2U7Z0IsTTtnQixVOzs7Ozs7OztrQjs7OztpQixHOztrQjttQjs7c0I7bUIsTTtrQixtQjtrQixvQjtrQjs7Ozs7Ozs7a0I7OztpQjs7O2dCOztlO2dCOzs7b0I7a0M7b0I7cUIsUTtxQixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7MEI7MEI7Ozs7Ozs7MEI7Ozs7OztxRTs7dUI7O3NCOzs7Ozs7O3lCLE87Ozs7Ozt5QjswQjsyQjsyQjs7OytCOzhCOzRCLE87MkI7Ozs7Ozs7MkI7Ozs7dUI7OztzQjt1QixlOzs7aUM7d0IsVzt3Qjt3QixXOzJCO3lCOzBCOzs2Qjs7aUM7Ozs7Ozs2Qjs0QjtpQzs7Ozs7Ozs7O3VCOzs7Ozs7O3VCOzs7a0MsTzs7b0I7bUI7aUIsTzs7Ozs7Z0I7Z0IsTTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FCOzs7Ozs7Ozs7Ozs7Ozs7YztlO2dCLE87Z0IsTztnQjs7OztxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJO0s7O0ksTztHOztJO0s7OztLOzs7Szs7OztJLCtCO0k7Ozs7O00sd0I7O0s7Ozs7OztNLFE7TSxVOzs7Ozt5Qjs7OztZLE07Ozs7Ozs7TSxNOztLLEksdUQ7Ozs7O007c0I7O0k7SSxPO0c7O0k7STtHOztJOztJLEksbUM7O0k7O0s7TTs7OEI7TTs7Ozs7OztNO00sTTs7O0k7STtLO0ssMkIsdUM7SSxPO0c7O0ksSTs7OzZCOzs7STtHOztJO0k7SyxXO0ssVztLLFk7Ozs7UztVLFc7OzswQjs7OztTOztVLFU7Ozs7VSxPO1Usa0I7O1U7VyxPO1csTztXLFM7VyxRO1csTztXLE87VTs7UywwQjtTO1MsZTtvQjtTLEksTzs7O0ssMEI7SyxPOztHOztJO0k7STs7Rzs7STs7SztLLE87Ozs7aUI7ZTtJO0ksTztHOztJLEksTywwQjtJO0ksSTs7Ozs7SztLLE07OztLLE87STs7Ozs7O0ksTTs7OzthOztHOztJLEk7OztxQzs7O0k7Rzs7STs7STs7STtHOztJOztLOzs7TSxTO00sUzswQjs4QjtLO0k7SSxPOzs7OztjO0c7O0ksRywrQjtJO0ssSSxRLDBCLFU7Ozs7Ozs7Ozs7Ozs7VyxLOzs7Ozs7TTtPO087TSxHOzs7TyxlOztRO1E7UyxVO1MsVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjtlOztzQiwrQjs7OztjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YyxLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Z0I7aUIsOEI7aUIsVTs7Ozs7O2M7ZSxPO2UsMkI7Ozs7ZSxPO2lCO2UsVztlOztxQjs7Z0I7MkI7Yzt1QjtjO3VCO3FCO2UsVztlOzs7OztpQjs7Ozs7OztnQztrQjttQixRO21CLFU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1Qjt3Qjt3Qjs7Ozs7Ozt3Qjs7Ozs7O21FOztxQjs7Ozs7Ozs7Ozs7Ozt5QjswQjswQixXOzZCOzJCOzRCOzsrQjs7bUM7OzJCOzs7K0I7OzJCOzs7OytCOzhCO21DOzswQjs7Ozs7OzswQjs7Ozs7Ozs7O3VDOzs7O3FCOzs7O21COztrQjs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztxQjs7Ozs7Ozs7Ozs7Ozs7O2M7ZTtnQixPO2dCLE87Z0I7Ozs7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozs7Szs7OztJLFc7TywwQztJO0s7O0ksTztHOzs7O0s7TTs7O007OztNLE87TTtnQjtLLGE7SztNO00sVTs7SztNOzs7O0s7b0M7c0M7Ozs7Uzs7Ozs7O1UsTztVLE87Ozs7VTs7YTs7OztVOzs7UztVO1U7Ozs7Ozs7VTswQjs7UTtLLE87Ozs7STtJLFc7O0s7STtJO0s7SywyQixPLDRCO0ksTztHOztJO0c7O0k7STtLOzs7a0I7Szs7Ozs7O0ssTTs7O0c7O0ksSTs7OzhCOzs7STtHOztJO0k7SztNLFc7TSxjOzs7OztNLEk7OztrQyxNOzs7Ozs7Szs7RztHOztJLEk7O0s7SyxJLFU7Ozs2Qjs7OztLOzJCOzttQjtzQjtLO0k7SSxJLFM7O0s7SyxHLHlDOztLO0k7STtLLFc7OztLO0ssSSxVOzs7NkI7Ozs7d0I7c0I7SztJO0k7SyxXOzs7SztLLGlCO007SztJO0ksTztHOztJOzs7Ozs7OztVOzs7Ozs7OzthOztjOzs7aUI7aUIsSSxVOzs7O21CLE07Ozs7O2lCLEk7Ozs7OztrQixNOzs7Ozs7OztpQjtnQjthOzs7OztpQjtpQixJLFU7Ozs7bUIsTTs7Ozs7aUIsSTs7Ozs7O2tCLE07Ozs7Ozs7O2lCO2dCO2E7Ozs7Ozs7Ozs7OzthLEc7YyxJOzs7Ozs7ZSxNOzs7Ozs7Yzs7Ozs7TyxNOzs7TTs7Szs7Ozs7Ozs7TSxNOzs7Ozs7O0k7STtLLFE7SyxRO0s7SSxXOzs7STs7SyxPOztJOztLLGE7SyxVO0ssVTtLO0s7SztLO0k7STs7O0ssSTs7Ozs7O007Ozs7Ozs7STs7OztJO0ssUTtLLFE7SztJLFc7STtLO007TSxhO007TTtNO007SztLO0s7TSxLO00sSzs7TSxNOzs7O1MsSSxvRDs7Ozs7O1UsTTs7Ozs7Ozs7UTtLO0s7Ozs7O1U7VSxJLFU7Ozs7WSxNOzs7O1UsSTs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtTO007Ozs7O1U7VSxJLFU7Ozs7WSxNOzs7O1UsSTs7Ozs7O1csTTs7Ozs7Ozs7Ozs7VTtTO007Ozs7Ozs7SztNLHlCLDBCO00sYztNLE87TTs7cUI7Szs7Ozs7O0s7OztHOzRCLHlDOztJOztpQzs7Szs7STtHOztJOzZCLG1CLDBCO0ksTztHOztJO0k7ZTs7aUU7OztHOztJLE87Rzs7SSxJLFUsNkI7O0ssTTtJLG1CLFU7Ozs7O00sRyw2Qjs7O0ksTTtHOztJO0ksTztHOztJLFk7O2Msc0I7O0s7Ozs7a0I7TztRO1MsTztTLE07O1E7UTs7OzsrQjs7OztPOzs7O1EsSztPLDJCO087UTtROzs7UTs7O1E7Tzs7TyxzQixPO08sNkI7TztRO1E7O1c7O1EsVTtRO08sYTtpQztPLHFCOzs7Tzs7Ozs7UTs7Ozs7OztRO1MsYztTOzs7VTtXOzs7VTtXOzs7Ozs7O1ksTTs7O1UsYzs7Ozs7WSxHO2EsMEI7YSxHO2MsTTthO2E7YztjLGtCO2M7Yzs7O3NCOzs7Ozs7O2EsSztjLE07OztjOzs7YTthLEk7Ozs7ZSxNOzs7YTthOzs7O1UsTTs7UyxNOzs7OztTO1U7OztTOzs7TyxxQixPO08sNkI7TztPO1EsSSxPOztTO1M7VTtXO1c7Ozs7Ozs7UTs7OztZO2EsUTs7O1k7Ozs7Ozs7VztTLE87UztROztnQzs7NkI7OztROzs7OytCOzs7O08scUIsTztPO1E7Uzs7UztTOzs7UTs7Tzs7Tzs7OztROzs7UTs7O1E7Tzs7OztPLG9CLE87TyxpQztRO1M7O1M7Uyw4Qjs7O1ksOEIsUTs7Ozs7bUM7O2E7O2M7Ozs7Ozt5Qjs7O3dCOzthOztZLE07VztTLFc7Uzs4QjtTO1M7K0I7UyxPO1MsUTtROztPOztPOzs7UTs7O087OztPLE07ZTs7OztJOztJO0c7RyxlOztJO0ssVTtLO0ksTTs7O2E7O0c7Ozs7SyxHLG1DO0ssRyxvRDtLO0s7TSxVO00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NCO2tCOzs7dUIsK0I7Ozs7aUI7a0I7Ozs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCOztrQixPO29CO2tCOzs7O3FCOztvQjtpQixPOzs7Ozs7Ozs7Ozs7Ozs7O2tCLEcsaUM7Ozs7Ozs7Ozs7Ozs7OztpQixzQjtpQixHO2tCO2tCLEc7bUI7Ozs7aUI7a0I7OztrQjs7O2tCOzs7O2lCLFM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QjtzQzs7OztpQjs7O2tCOzttQjs7Ozs7O3VCO3NDOzs7Ozs7cUI7cUI7O29CO2lCLE87Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUIsVTs7OzttQixVOzs7O21COzs7O21CO21CO21CLFU7bUIsVzs7Ozs7Ozs7Ozs7eUIsRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3Qjt5Qjs7Ozs7Ozs7OzRCOzs7NkIsUTs2QixVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCOzs7Ozs2Qjs7NEIsTTsyQjtnQzs7Ozs7Ozs7Ozs7eUI7OzswQixROzBCLFU7dUQ7Ozs7Ozs7Ozs7OzZCOzs7Ozs7Ozs7Ozs7Ozs0Qjs7Ozs7Ozs7MkI7O3lCLE07d0I7NkI7Ozs7bUIsTTs7a0I7Ozs7O21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCO2tCOzs7Ozs7Ozs7O3dCO3VCO2tCOzs7OzttQjs7Ozs7Ozs7Ozs7Ozs7Ozs7aUI7a0I7bUI7O29DO21COzs7Ozt1Qjs7Ozs7c0Isa0M7c0I7OzhCOzs7cUI7bUIsVTs7O21CO29CLGE7OztxQjs7OzswQjswQjt5QjtzQjs7Ozs7OztxQjt1QjtzQjtpQzs7OztvQjtvQixNOzs4Qjs7a0I7Ozs7O21COzs7Ozs7Ozs7Ozs7UTs7OztRO1MsSTs7Ozs7OztPO1EsSTs7Ozs7Ozs7USxHO1M7VTtXLE87VyxPOzs7O2M7OztlLFE7OztjOzs7Ozs7ZTs7Yzs7ZSxPO2UsTztlLE87Yzs7O3VCOzs7O2E7VyxPO1U7Ozs7O1c7Ozs7TztRLEksUTs7Ozs7Ozs7O21COzs7Ozs7Ozs7Ozs7O087USxXO1EsSSw4QixJOzs7OztTOzs7UTtTLEk7Ozs7OztLOzs7O0k7O0k7STtJO0ssVzs7TTtNLEksaUQ7Ozs7USxrQzs7O0s7SyxPLHdDO0c7O0ksSSxRLDJCLE87Ozs7UTs7UTs7Ozs7UztRLE87O1E7OztRLE07O0ksTztHOztJLEksUSwyQixPOzs7O1E7OztTO1EsTzs7UTs7UyxROzs7Ozs7UyxPO1MsTztTLE87UyxXO1EsTzs7O1E7O0ksTztHOztJLFk7O0k7RztHO0k7STs7STtJO0ssRyw0QztrQjtLLFk7Ozs7UztZO1UsTTs7OztTO1U7VyxzQjtXLE87VTs7Ozs7VTs7Vzs7OztXOzs7OztZLE07Ozs7OztrQiw0Qjs7OztTOztVLHNCO1M7UyxlO29CO1MsSSxPOzs7SywwQjtLLE87O0c7O0k7STtLOztLO0s7Ozs7OztLOztHOztJO0ksb0I7SSxXO0ksUzs7STs7O1E7O1M7UyxzQjtRLE87O1EscUI7UTs7O1M7Uzs7O1U7Ozs7YztjO2E7VyxPO1U7Ozs7O2U7ZTtjO1csTzs7Ozs7UTs7USxtQztRLFM7OztHOztJLGU7ZTtpQjtJLFM7OztLLEssNkI7TSxjOzs7O1E7Ozs7UztXO3NDO1E7Ozs7TSxNOztLLFk7Ozs7O1Msa0M7Ozs7O1csa0I7WTs7WSxjOzthOzs7Ozt3Qjs7Ozs7Vzs7UyxZOztVO1c7OztXLE87VyxPO1U7Ozs7Uzs7VSxVOzs7Ozs7OzthLGdDLFE7Ozs7Ozs7O2lCOzs7O2tCOzs7O3NCO3FCO3FCLE87OztvQjtrQixRO2tCLE87b0I7a0I7bUIsTzswQjs7Ozs7Ozs7OzthO1k7VSxXOzs7YTswQjtZO1UsTzs7O2E7YSxPO1k7VSxXO1U7Z0I7Uzs7OztJLG9CO0ksTztHOztJO0c7RztJLGM7SSxrQjs7STtJLE87Rzs7STs7OztJLFk7a0U7SSxJLFcsMkM7Ozs7SyxJLE8sMkIsTztLO0ssVzs7Ozs7OztVO1csYzs7O1ksTTs7VztZOztZOzZCO1ksYzs7Ozs7OztXO1k7YSxPO2EsSTs7Ozs7YTs7Ozs7O2EsTTs7Ozs7OztVLGtDOzs7VyxHOzs7WTs7YTs4QjtpQzs7Ozs7Ozs7VSxtQixPO1U7VyxVO1c7VyxJOzs7OztXO1c7WSxXO1k7O2lCOzs7OztZOzZCO1ksUTtZLFU7Ozs7O2EsRzs2Qjs7Ozs7Ozs7Ozs7O1UsRztXO1k7WSxVOzs7WSxNOzs7Ozs7O2U7Ozt3Qjs7Ozs7TTs7TyxzQjtnQjs7SztLOztHOztJO0s7SztLOzs7Ozs7SztLLE07O0c7OztJO0s7OztNLHNCO00sUzs7O007OztPOzswQjs7Ozs7Ozs7Ozs7OztNO087O1E7Ozs7Ozs7UTtRO1M7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7OztLOzs7OztPLEc7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O0s7SyxNOzs7O0k7SyxZOzs7O087O1EsSztRO1EsVTs7Ozs7TyxNOztNOzs7TyxzQjtPLGdCOzs7O0s7OztNLHNCO00sTztNOztNLHNCO00sVztLO0s7Ozs7Ozs7Ozs7O0s7Ozs7OztLO0ssTTs7Rzs7Ozs7OztRLEs7Uzs7O1U7O1Usc0I7UyxjOzs7OztROzs7OztZO1k7VztTLE87Ozs7WTtZO1c7UyxPO1M7UTs7O1E7Ozs7UztROzs7O0ksRztLLE07Ozs7Ozs7Ozs7O0k7O0s7OztJLG9CO0k7OztROzs7Ozs7OztJO0k7Rzs7SSxHO0ssTTtJOzs7Ozs7Szs7O0ksb0I7STs7O1E7Ozs7Ozs7STtJO0c7O0ksUztJLEcsMEM7SSxJLDhCLFE7O0s7O00sTzs7O1MsbUIsUTs7Ozs7O1k7O2Esc0I7WSxPOzs7O1M7UTtLO0ssMEI7SyxPOztJLG9CO0ksTztHOztJO0ksb0I7SSxPO0c7O0k7SztLO0ssUTtLLFU7Ozs7O0ssTzs7STtHOzs7SSxZOzs7OztRO1MsSSxZLDZCO1M7Ozs7Z0M7Ozs7O1EsRztTO1UsTzs7O2Esa0IsUTs7Ozs7OztjOzthO1k7UyxLLHlDOztROztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzt5QixPOzs7TyxPOzs7TyxPOzs7OztzQixjO3FCLFk7NkIsd0I7Rzs7STtHOztJLFc7SSxPO0c7O0k7O087O087O087O087O087ZTs7Rzs7O0k7O087O087O087O087O087ZTs7Rzs7STtJLE87Rzs7SSx1QjtHOztJO0k7OzttQzs7bUM7O21DOzttQzs7bUM7OztLO0s7Ozs7NEI7OztHO0c7O0k7SztLLFk7SyxXOztLOztNOztPOztPOzs7Ozs7O0k7Rzs7SSxpQjs7O0c7O0ksVztJLE87Rzt5QiwrQzs7STtJO0ksVzt3QjtJLFcsVztJLE8sVztHOztJO0ssTztJO0k7SztLLFE7OztJO0s7STtLLE87STtJO0ssTztJO3FCLHVCO0k7SyxhO0ssb0I7SyxVOztLOztNO007TTtLO0s7STtJO0k7SyxZOzs7TSxPOzt5QjtLO00sTztNLE87SyxPOzs7Ozs7Ozs7OztJLE87Rzs7SSxXO0c7RztzQix5Qjs7O3lCLHNCO3FCO0ksbUI7Rzs7SSxJLGUseUM7Ozs0Qjs7O0c7NkIsTyx5QztHLFU7O0k7STtHOztJO0k7STtHO0csSSx1Qzs7STtLLFc7SyxPO0k7STs7Ozs7Uzs7SSxPO0c7O0k7OztNOztPLE87Yzs7O0s7TSxXO007TztRO1EsTTs7Ozs7TyxJLGU7O29CO087Ozs7Uzs7VTs7O1M7UzswQjtTOzs7UyxHLGlDO1M7O1U7OztVOzs7UztTO1U7OzthO2E7WTtTO1M7O3NCO1M7OztTLFM7UztVOzs7VTs7c0I7Uzs7OztJLFc7Rzs7SSxXOztPOzs7Szs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7O1M7VTtnQzs7Ozs7NEIsTSwwQzs7TTs7Ozs7Ozs7OzttQztJO0c7OztLO0s7SztJOztHOztJO0ksTztHO0csbUI7O0k7STs0QjtLLFUsZ0M7TTtLLEk7O0c7O0k7O087O1EsTztRO3FCO087O1E7VTs7Ozs7USxPO1EscUI7TyxJLFk7OzsrQjs7OztPOzs7UyxJLFU7Ozs7Ozs7OztVLHVCLE87VTs7Ozs7O1E7Ozs2Qzs7TyxzQztPOztHO21EO0c7O0k7OzZCOzs7Ozs7OztVOzs7VyxPO1U7Yyw0Qjs7Ozs7OztzQzs7Ozs7O087OztTO1U7VztXLE07Ozs7O1UsSSxlOzJCOzs7Ozs7OztZOzs7YTs7O1k7WTtZOzt5Qjs7Ozs7Ozs7UTs7OztRO1MsVztTLEs7VTs7OztPOztPLG9DO087Ozs7STtHOztJO0ksTztHOztJLE87Rzs7STtJLG9CO0k7SyxRO0ssTztJLE87Rzs7O0ksc0IsaUIsa0I7O0c7O0ksWSxPOzs7c0IsTyxnRDtLLE87STtJLE87O0c7O0k7STtxQzs7O007Ozs7Rzs7SSxZLE87O0ksTzs7O0ksOEI7eUM7O0ksTztHO0c7O0k7STtLLEksSzs7OztNLEc7TSxJOzs7SyxPOzs7Ozs7Ozs7Ozs7Ozs7Rzs7SSxzQjtHOztJO0ssTzs7OztPLE87O087Ozs7O1EsTztRO08sTzs7Ozs7Ozs7Ozs7O08sTzs7Tzs7OztRO1EsNEI7TyxPOzs7Ozs7Ozs7Ozs7Ozs7O1c7c0IsTzs7VyxPOztVO08sTzs7O2M7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O1EsTzs7TyxPOzs7Tzs7USxVOzs7Ozs7OztXLGEsTzs7VyxPOztVOzs7VztXLE87VTtRLDRCO08sTzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE87OztPLE87Ozs7Ozs7OztPOzs7OEI7USxPO08sTzs7Ozs7SSxZLE87Ozs7ZTtlOzs7SyxPOzs7SSxPOzs7OztNLFEsTzs7TSxPO0s7SyxPOztJO3lCLE8seUM7O0ssWSxPOztLLE87STtJLE87Rzs7STs7STs7OztHOzs7SSxnRDtJO0c7O0ksYzsrQjs7O0ssVzs7SSxnQixPO0ksTztHO0c7STtJO0k7STtJOztJLFEsTTs7SSxPO0c7O0k7STtLO00sUTs7O00sVTs7OztPOzs7USxPOzs7UTtVO2E7Ozs7UTtTLFc7UyxHOzs7Ozt3QjtZOzthOzs7YyxXOzs7Ozs7Ozs7VTtXO1ksc0I7WSxLO1k7Ozs7OztzQzs7WTs7YSxPO3dCOzs7Ozs7Ozs7Ozs7O0s7Ozs7NEIsVzs7O0c7O0k7O087O1EsUztRLEk7OztRLEcseUM7OztPOztPLGtCO087O087OztROzs7Tzs7Rzs7STtLLFk7SyxPO0k7Yzs7Rzs7STtJOzs7Ozt3Qjs7O0s7OztTOztVOzs7OztTO1U7VyxJO1c7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztRO00sTzs7OztJO0c7O0k7STtJOztLLDJCLGdDO0ksTztHOztJLFk7SSxvQjtJLE87Rzs7STs7MEIsVzs7d0M7O08sb0M7Tzs7Rzs7SSwrQjt1QjtJO0s7Ozs7SyxRO0s7OzJDOztjLE07Ozs7O1U7O1csb0I7VyxHLGtEOztVOztXLEk7VyxPO1csTzs7O1c7Ozs7YTs7Ozs0QiwyQztjOzs7aUI7aUIsTztnQjtjLE87YTs7O2M7ZTtrQyxPLCtCO2UsTztjO2U7Z0IsTzt1Qjs7Ozs7Ozs7Ozs7O1U7O1M7TTs7STs7Ozs7Ozs7Ozs7Ozs7TTtPO1EsTzs4QjswQjs7Ozs7SyxJLEk7Ozs7OztLOztHOztJLFc7SSxPO0c7O0ksVztJLFc7STtpQzs7O0k7Rzs7SSxpQjs7SSxXOztLLGtCLFE7O00sZ0MsTztNOzt3Qjs7Ozs7O0s7STtJLE87Rzs7SSxZOzs7O1E7Ozs7UztRLE87O1Esa0M7O1Msb0IsTztTLE87OztrQjs7O1k7OzswQjswQjtXO1EsTzs7O2lCLDRCO1EsTzs7USxvQixVOzs7UyxzQixPOztRLE87O0ksTztHO0c7STtJO0k7STtJO0k7STtJOztJO0ssTTtLO0ssVztlOzs7Ozs7Ozs7Ozs7Ozs7YSxPOzs7Ozs7UTs7STtHOztJO0k7SyxJLFc7Ozs2Qjs7Ozs7Rzs7SSxXO0k7OztLOzs7O1M7UyxPO1E7TSxPO0s7Ozs7STtHOztJOztNO08sTztPLE87TyxPO2M7O007TyxPO2M7SztLLGlDOztHOztJO0s7TSxPO00sTztLO0s7O087d0I7TTs7O0c7O0k7SSxJLFcsNEM7Ozs7SztNLFc7TTs7Ozs7Ozs7Ozs7Ozs7WSx1Qiw0Qjs7Ozs7O2lCO2lCLE87Z0I7YSxLO2EsVzsrQjs7Ozs7O2tCOztNLEc7O007OztHOztJLEksUSw4Qzs7SztLLFc7STtlOztHOztJLDBCOzs7STs7Szs7O1M7OztRO0ksTztHOztJO0k7RztHO0k7STtJO0k7O0k7SyxXOzs7Rzs7STtHOztJO0s7OztHOzBCLGtDOztJOzs7RztrQywwQzs7SSxZOzs7OzBCOzs7O1E7O0k7Rzs7STtJO0s7SyxHO007SztNLE07TTtNOzs7OztTOzs7OztTLEc7VTtTLFk7Ozs7Ozt5Qjs7NkM7Ozs7O1M7UztpQzs7O0s7NkI7O0c7MkIsNkI7NkIsbUIsc0I7O0k7Ozs7O0c7O0k7Ozs7O0k7Rzs7STtJO0k7Rzs7STtJLE87RztHOztJO0k7TTtXO0s7TTttQztNO0s7OztLLEksTSw4Qjs7OztTO1U7VTs7OEI7O1M7Ozs7O1UsMEI7OztTLEc7VSxjOzs7Ozs7O2EsRzs7Ozs7Ozs7Ozs7O1M7OzZCOztTOzs7VTs7O1U7O1UsNEI7UztTOzs7Uzs7UyxPOztTOztTOztVLFU7Ozs7Uzs7OztjOzJCO2E7c0I7OztTOzs7YSxrQixROzZEO2E7WTtVLFU7VSxPO1UsYztTOztVO1c7WTs7O1k7WTtZOzRCO3FDO1csaUM7Vzs7OzttQzt3QjtXOzs7Uzs7OztvQztVOzthLGdDLFE7MkM7Ozs7Ozs7ZTs7Ozs7OztlOzs7YTs7VSxXO1M7Ozs7aUM7d0I7Uzs7Uzs7O3dCOztTLGdCO1M7VSxRO1U7UztTO1Usc0I7VSxLO1U7Uzs7Uzs7Uzs7Ozs7YTs7O2M7YyxPO2EsVztZO1UsTztTOztLO0k7SSxHO0s7O00sc0I7a0I7O0k7SztLO0s7O0k7Rzs7SSxvQjtJLE87Rzs7STtLO00sVTs7Ozs7O1M7c0I7UTtNLGlCOzs7UztTLE87UTtNLGdCO007OztLOzs7Z0IsTztJOzs7O0s7SztLOzs7SSxZO0ksTTtHOztJO0s7Ozs7O007TTs7O0s7O0ksYzs7Ozs7Ozs7Ozs2Qjs7STs7O0k7SSxPO0c7d0MsMEI7O0k7STtHOztJO0k7STtHOztJO0k7Rzs7STtJO0c7O0k7Szs7O0s7SztJLE87Rzs7STtJO0c7O0k7O0ssSSxPLDRCOzRCO0s7SztJO0ksTztHOztJOztLLFc7SyxPO21COztJO0ksYTtJLE87Rzs7STs7SyxPOzs7cUIsMEI7SSxPO0c7O0kscUM7O0ksZTtHOztJLFc7d0IsNEM7STtnQjs7STs7YyxJLDhCO2M7YTtHOztJLEk7SSxXO0c7O0k7STtJO0k7SSxPO0c7O0k7STtJO0ksTztHOztJO0k7SSxJLGlDOztLOztNLE87OztTLFcsVztTO1U7VyxPO2tCOzs7UyxjO1E7Szs7STtJO0k7OztLLHVCLFU7Ozs7TyxzQixVOzs7Ozs7O1UsRztXO1ksVzttQjs7Ozs7Ozs7Ozs7O0s7Ozs7O0k7Ozs7NEMsMEI7Szs7Ozs7OztTOztRO0s7OztLLGtCOztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7OzJCLDJCO2M7OztJLEk7O0ssYTtLLHNCOzs7TSxXO007Ozs7O1M7VSxPO2lCOzs7Ozs7Ozs7Ozs7OztLO00sVTs7O007O0s7STtJLFc7O0s7Ozs7OztLO0k7STtLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Ozs7Ozs7OztjOzs7Szs7Ozs7TTs7Yzs7OztJOzs7Ozs7YTs7OztHOztJO0ksTztHOztJO0ksTztHOztJLG1COztJOztjO2U7ZTtjO2E7Rzs7STtJO0ssVTtLO0k7STtJO0k7STs7Szt5RTtLO0k7STtLLGM7SyxPO0s7OztLO0k7Ozs7Ozs7STtHOztJO0ksTztHOztJO0k7STtJO0ssTztLOzs7SSxPOzs7Ozs7Rzs7STtLLE87SztLO0s7Ozs7K0I7Ozs7O0k7Rzs7STtJLE87Rzs7SSxZOzs7Szs7STtHOzs7STs7Ozs7OztROzs7UyxNO1M7UztROztVO2E7UyxXO1MsSztVLE87Ozs7O1EsdUI7USxHO1M7Ozs7OztpQyxrQix3QjtROzs7O1E7Ozs7Ozs7OztROzs7O1MsTTtTO1M7UTs7VTthOzs7OztTO1M7Ozs7O1E7O1M7Uzs7O1M7OztZO1k7VztTLFM7Uzs7OztZO1k7VztTLFc7UyxhOzs7WTtZOzs7Ozs7O1c7UyxTO1M7Ozs7WTtZO1c7UyxZO1MsYzs7O1k7Ozs7O2E7OzthO1ksYTs7WTtXO1MsUztRLG9COzs7OztTLDBCOzs7USxHO1MsWTs7Ozs7OztZLEc7Ozs7Ozs7Ozs7OztROzs7O0k7STtJO0ksTztHOztJO0ssTztLOzs7Ozs7STtHOztJO0s7SztPO1U7O0k7RztHLHFCOztJO0k7STtJO0ksZTtJO0k7SSx5QjtJOztLO0s7SyxPO0ssTztJLHFCO0c7O0k7SSxPO0c7O0k7STtJO0k7SSxlO0k7STtJLHlCO0ksSSxPLDhCOztLOztJO0k7SyxtQjtLOzs7Szs7STtJO0ssb0I7SztLO0ssTztLLE87SyxPO0s7STtHOztJO0ksTztHOztJOztLO0s7SztLO0ksaUI7SSxXOzs7Ozs7Ozs7O0k7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLG1CO0ksb0I7STs7O2UsYztnQixXO2dCLE87O2U7YztjLE87Ozs7Rzs7SSxXO0ksTztHOztJO0k7O3lCOztPLG1CO087Ozs7OztTOztVLFE7O3FCOztTLEksc0IsVzs7Ozt1QyxTO087OztRO1E7O2dDO087bUM7Ozs7O0s7O007MEI7TSxPO0s7SyxPO0k7SSw4QixXO0c7O0k7SyxPO0ssYTs7Szs7O087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7Ozs7Vzs7O2M7OzhDOztjO2E7VyxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPO007TTtPLFE7Tzs7TyxrQjtPOzs7O087a0Q7O087TTtNO08sTTtPOzs7O1ksTztXO00sVztLO0s7TSxNO007TTs7O1U7UztNLFE7OztLO0s7STtJO0ksTztHOztJOzs7OztJLFc7Rzs7SSxJLHdCO0ksVztHOztJLFksc0I7OztLOzs7TTtNLE87SyxPOztJOztLO0ssTztJLE87OztJLFM7O3NCLGtEO0k7O0ssTztLLHNCO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7O0ssdUI7SyxXO0ssVzs7STtLO087Ozs7Ozs7OztJO0k7STs7Szs7TSxvQjs7SyxPOztJO0ksTyxXO0c7O0ksTztHOztJO0ksTztHOztJO0k7STtLO0ssTztLO0k7SztNLFk7TSxPO0s7Szs7SSxPO0c7O0ksVztJOzs7SyxJLFEsMkIsVTs7OztNOzs7OztPOzs7Tzs7Ozs7Tzs7Ozt1Qjs7Ozs7O08sRztRO1M7UztTLE87UyxPOztrQjs7OztNOzs7O0k7Rzs7O0k7STtJO0s7Szs7STtJO0s7aUM7SztLO0ksTzs7O0k7O0ssTzs7O0ksTzs7Ozs7Ozs7OztJLG9CO0ksVztJLE87Rzs7O0ksRywrQjtJO0k7OztJOztLLE87OztJLE87Ozs7Ozs7Ozs7SSxZOztnQjs7SSwwQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksSyxrQyw4QiwrQyxVO0k7OztJOzt5Qjs7OzRDOzs7STtHOzs7SyxPOztROztvQjs7SztJO0ksUzs7SSxnQjtHOztJOzhCO0c7Ozs7bUI7Ozs7TTs7O007Ozs7O0c7STs7NEIsTyx5QztJLGlCOztJLFk7O0s7O00sVTs7Ozs7O0ssZTtLO00sTztNLE87TSxXO00sTztLLE87O0k7Rzs7STs7O0s7STtzQztJOzsyQixPLDBDOztJLE87RztHLGlCOztJO0ssTztLLFE7OztLLE87O0k7Rzs7SSxXO0ksSSxzQyxJOzs7Ozs7STtJO0c7O0ksWSxPOztJLE87Ozs7Szs7UTs7OztTOztTLFE7UyxVOzs7UztVOzttQixPO2tCOzs7O1M7VTs7bUIsTztrQjs7UTs7OztTLFc7Ozt5QixXOztXOzs7a0M7WSxPO1c7bUI7Ozs7Ozs7OztnRDs7Ozs7a0I7aUM7OztZOzs7ZTs7Ozs7Ozs7O1k7O2E7YSxPOztlOztXO21COzs7Vzs7OztZLE87VzttQjs7Ozs7Ozs7O1csa0IsTztXO21COzs7Ozs7Ozs7OztTLFc7OztTO2lCOzs7USxXOzs7Ozs7Uzs7O1k7Ozs7Ozs7Ozs7OztXO1c7OztjOzs7Ozs7Ozs7OztrQzs7Ozt1Qjs7Ozs7VyxXOzs7VztXO21COzs7Ozs7OztXLFc7OztXO1c7bUI7Ozs7Ozs7Ozs7USxXOzs7UTtRO1EsYzs7Ozs7WTs7cUI7cUI7cUI7cUIsTzs7Ozs7Ozs7b0I7O1EsMEI7O0k7SSxPO0c7O0ksVTs7SSxPO0c7O0ksWTs7O0ssSSw2Qjs7OztPLE87Ozs7STtHOzs7STtJOzs7cUQsUztJOzs7O2M7O2U7ZTtjO2M7ZSxVOzs7ZTs7O2dCLE87ZSxXO2M7YyxXOzhCO2M7ZTs7O29CO29CO21COztlO2M7ZSxNOztjOztlO2dCOzs7Z0I7O2lCOztvQjs7O3FCLFE7Ozs7O3FDLG1COztvQjs7NEI7OztlO2dCLE87Z0IsTzs7Z0I7O2lCO2tDO2lCLE07O21COzs7Ozs7Ozs7O2dEO2U7Z0IsTztnQixzQjs7Ozs7Ozs7ZTtnQjtnQjt1QztlOzs7Ozs7Ozs7a0I7O2dCO2dCOztlOzs7Ozs7OztlLE07O2E7Rzs7O0k7Szs7O0k7Ozs7Szs7STtLOzs7SSxjO0k7Szs7O0k7O0s7OztJOzs7STtJO0c7O0k7STs7TTs7O08sYTtPLE87TyxPO08sTyxXO08sTzs7Ozs7Ozs7O007Ozs7Ozs7Ozs7O0ssTTs7Rzs7Ryw4Qzs7O0ksWTs7STs7O0k7OztJLG1CO0kscUI7SSxvQjtJLFc7Rzs7SSxxQjtJLG9CO0ksVztHOzs7STs7OztjO2M7ZTs7O21CO2U7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7ZTs7Ozs7Ozs7O2M7O2UsTztjOzs7bUI7YyxvQjs7YztlOzs7Ozs7Ozs7YyxPOzs7Ozs7OzthOzs7STs7OztjO2M7YztlLE07O2U7O2tCOztlLE87Ozs7Ozs7Ozs7O2MsaUI7YyxPOzs7Ozs7Ozs7O2E7Rzs7Ryw4QjtHLGlDOztJO0c7O0k7OzZCLCtDO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0ksVTtJOzs7Rzs7STt5Qjs7Rzs7STtLLE87OztPLE87O087OztRLG9CLE8seUM7NEIsTyx5QztPLE87Ozs7Ozs7O1csTzs7Ozs7Ozs7O1U7TyxPOztPOzs7USxvQixPLHlDOzRCLE8seUM7TyxPOztPOzs7O1Esb0IsTyx5Qzs7d0IsTyw4QztPLE87O087Ozs7USxvQixPLHlDOzs7VyxPO1U7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O0ksWTs7OztNLHVCO00sTztLO0ssTztJO0ksdUI7SSxPOzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGlCOztJLEksNEIsOEI7Ozs7NEI7OztHOztJLGlCO0ksZ0I7SSxPO0c7O0ksTztHOztJOzs7Tzs7USxPO1E7TyxXOzs7Ozs7OztVLFk7VTs7Ozs7Ozs7VTtXLE87VyxVO1U7Ozs7Ozs7O0k7Rzs7OztnQjs7Ozs7UTs7OztTLHFCLE87UyxHOzs7Ozs7Ozs7OztTOztVLGtCO1UsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7UTs7UTs7Ozs7OztTOzt3QztTLFE7UTs7Ozs7Ozs7Ozs7Uzs7Ozs7Ozs0Qjs7Ozs7USxZO1E7Ozs7O1E7OztROzs7OztJO3FCO2tCOztJO0c7OztJOzZDO0ksTztHOztJOzs0QztJLE87Rzs7STs7Tzs7d0I7OztPO2U7O0c7O0ksUzs7O0s7Ozs7Ozs7TTs7O007Szs7Ozs7STtHOztJO0k7OztRLGtCLFE7b0I7O1EsSSxnQjs7OztVLE07Ozs7OztROztTLFE7UyxVOzs7UyxzQjtTLFk7UTs7Ozs7Uzs7Ozs7OztTO1U7b0I7VTtVO1M7OztROztRLG9CLFU7c0I7O1EsSSxrQjs7OztVLE07OztRLEk7O0c7O0k7Rzs7STs7Ozs7Ozs7OztPOzs7Z0I7Ozs7Ozs7O087O2U7Ozs7O08saUI7O087Ozs7OztROzs7Tzs7O087UTs7Ozs7O1Msc0I7Uzs7O2dCOztROzs7OztlLE07UTs7OztPLGlCOzs7TyxpQjs7OztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTtJLEksZ0I7Ozs0Qjs7O2lDO0k7SyxPO0ssVTtLLE87SyxTO0ssUTtJLEk7Ozs0Qjs7O0ksZ0I7STs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksaUI7O0k7Szs7O1E7Ozs4Qjs7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7K0I7Ozs7OztnQjs7O0ksVztHOztJOzs7Tzs7MEI7O087ZTs7Rzs7STtJO2dCOzs7O1E7OztTO1Esa0I7O1E7Ozs7O1M7O2E7O1MsK0I7USxPOztROzs7O1MsUTs7Ozs7OztHOztJLFM7STs7O087OzBCOztPO2U7O0c7O0k7STtnQjs7OztRLG9DOztROztROzs7OztTO1EsVTtRO1MsUTs7Ozs7O1E7Ozs7RztxQyx1Qzs7Ozs7OztRO1MsWTtxQixNO1Msb0I7Uzs7Ozs7VSxNOzs7O1E7O1M7O1k7Ozs7Ozs7Ozs7O3VDOzs7O2EsTTs7WTs7USxPLFc7OztnQjs7OztJLEksZSxhOzs7MkI7OztHOztJO0ksa0I7SSxPO0c7O0k7STs7Ozs7OztROzs7UztTO1MsTTtTO1MsTTtRLE87O0c7O0k7STtLLEksYyx1Qzs7Ozt1QjtNLDZCO00sRywrQjtNLEk7O0c7O0k7OztJO0s7TSxtQzs7Ozs7Ozs7SSxPO0c7O0k7SztLLFE7Ozs7Ozs7O087USxRO1E7VTs7Ozs7Ozs7Rzs7SSxTOzs7Ozs7Ozs7Ozs7Ozs7O1MsRzs7Ozs7Ozs7Ozs7O087OztZO087Ozs7O087OztpQjs7d0I7O0c7OztLLEksNkIsYTs7OzRCOzs7STs7STtHOztJO0s7TTtNO007OztTLG9CO29COztROzs7Uzs7Ozs7Ozs7O2lCLG1CO2lCOztrQjtrQixtQjs0Qjs7Z0I7YSxPOzs7MkI7Ozs7UztROztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLO0s7Ozs7O1M7UyxPO1E7TSxPO00sMEIsTyxrQztNLDhCLFc7O0s7Ozs7Szs7TTtPO1EsSztRO087Ozs7NkI7Ozs7Z0I7O0s7STs7STtHOzs7SyxZOztNO08sUTs7O21COztLLE87STtJOztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STtJLFk7Ozs7Ozs7Ozs7O0k7SSxPO0c7O0k7SyxVO0s7Ozs7Ozs7Ozs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7Ozs7VTtVLE07Z0I7OztTOzs7O1U7VSxNO2dCOzs7Uzs7OztVO1UsTTtnQjs7O1M7Ozs7VTtVLE07Z0I7OztTOzs7VTtVLFM7VSxROzs7VyxNO1UsTTs7Ozs7Ozs7Ozs7OztVLEc7VztZO1ksTTtrQjs7OztTLE07O1M7OztVOzs7YTtjLE07YyxNO2EsTztZO2dCOzs7Uzs7VTtnQjs7O1M7OztVO2dCOzs7Uzs7OztVO2dCOzs7Uzs7OztVO2dCOztLO0s7O0c7O0ksTztHOzs7SSxPOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztJLEk7Ozs7O0ssTTs7SSxJOzs7Ozs7UztPLEc7OztRLEc7UyxHOzs7Ozs7O1U7OzthLE07Ozs7OztZLE07O1csSztXLEk7Ozs7Ozs7Ozs7OztvQjs7TSxNOztLO0s7OztLLE07STtHOztJLFk7O0s7TSxPO00sVTs7d0M7Szs7STtHO3VDLDRCOztJO0c7O3VCLE8seUM7STtnQzs7Szs7TSxxQixPLHlDOzJCLE8seUM7SyxPOzs7cUIsTyx5QztJO0s7O1E7O1E7O1E7Z0I7O0k7Szs7TTtNO00sTztLLE87O0ksa0IsTztJLE87Rzs7SSxtQixPLHlDO3VCLE8seUM7SSxPO0c7O0k7Ozs7USxPOztPOzs7O1E7O1c7O1k7O1c7O1k7WTtZLE87VyxPOztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7TyxXO08sTzs7O08sVztPLE87OztHOztJLHdCLE8seUM7SSwrQixTOztLOztNLE87SyxPOztJO0s7TztLLE87SSxPO0c7O3FCLE8seUM7SSw0QjtJOzsyQjs7O087OztPOztRO1E7USxPO08sTzs7Tzs7UTtRO1EsTztPLE87O0c7O0k7Ozs7USxPOztPOzs7O1E7O1c7OztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOzs7Ozs7Ozs7O08sVztPLE87OztPLFc7TyxPOzs7Rzs7cUIsTyx5QztJLFU7O0k7Szs7STtLLE87SyxPO0ksTztHOzt1QixPLHlDO0k7Ozs7UTs7UTtnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7TztPOzs2Qjs7OzsyQixPLHlDO087UTs7Vzs7O1k7VyxPOzs7VyxPOztrQyxPOzs7Vzs7TyxXO08sTzs7O087O1EsTyxXOzs7Tzs7O087O1E7OztPLG9CO08sTztnQjs7Ozs7O087OztPLHNCO08sTzs7O087O1EsVTtPO2lCO2lCOztHOztJOztLOztJO0ssTTtLLE07SSxJOzs7OztLOztJO0c7O0k7Ozs7O0k7OztPOzs7OztRLE87TyxHLHFCLHNDO08sVztPOzsrRDtPO1E7UTs7Ozs7Ozs7MEI7Szs7RztHLEk7OztJLGU7O0k7OztJOztPOztPOztPOzs7O0c7bUIsbUM7O0k7Szs7Ozs7O00sUTtNLFE7SyxHOzs7TTs7SztpQjs7Szs7SSxPOzs7OztHOzs7STs7dUI7SyxzQixPO1EsNkM7SztNO08sTztPLE87TTs7Ozs7O007O0s7OztzQjtJOztLOzs7OzJCLG9CO0ksTztHOzs7STs7Ozs7O2U7O0ksSTs7Ozs7Szs7STs7RztHLEk7Z0MsVTs7STs7Tzs7Tzs7Tzs7OztHOztJO0ssUTtLLFE7SyxVO0ssVTs7Ozs7O1Msa0I7VTtXLFU7OztxQjtVOztZOztXLE07VTtXLFU7OztVOzs7Ozs7Vzs7O2U7ZTtjO1ksTztZLFU7OztXO1k7YSxPO2EsTztZOzs7Ozs7Ozs7Ozs7O3lCOztVOzs7Ozs7O1Msa0I7VSxlO1UsSztXLE07VTtXLE87VyxPO1csUTs7OztXLGM7VyxjOzs7VztXLGM7Ozs7Ozs7Ozs7Ozs7Vzs7O2Usa0IsUTsrRDtlO2M7WSxVO1c7Ozs7Vzs7WTs7YTs7Ozs7O2MsVTtjLFU7Ozs7Ozs7Ozs7O2dCLFc7bUI7aUI7a0IsUTtrQixROzs7Ozs7Ozs7Ozs7Ozs7OztlOztpQjs7O2tCO2tCOzs7Ozs7Ozs7Ozs7Yzs7Z0I7OztpQjtpQjs7Ozs7Ozs7Ozs7Ozs7WSxJOzs7Ozs7Ozs7Ozs7Ozs7eUI7O1U7Ozs7Ozs7O00sYzs7Ozs7Ozs7c0M7Ozs7O3NDOzs7Ozs7Ozs7O0k7O007O007TyxPO08sTztNOzs7Ozs7O0s7O0k7Rzs7STtJOzs7Ozs7Ozs4Qjs7Ozs7Ozs7UTs7dUI7OztTOztVLFE7VSxVOzs7O2EscUIsTzthLEc7OzthLHNCLE87YSxHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOzs7Ozs7Ozs7Ozs7TTs7TyxROzs7TyxJOzs7Ozs7Ozs7USxJOzs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7Ozs7Ozs7SSxnQjs7Ozs7Ozs7Ozs7O087UTtTOztZLFc7WSxPO1c7O1E7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VyxNOzs7Ozs7Ozs7OztRO1M7Ozs7Ozs7Ozs7TztRO1M7O1ksVztZLE87Vzs7UTtxQjs7Tzs7O1EsTztRLE87Ozs7O1k7YSxPO2E7ZSwwQjtZO2EsVzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7WTtXO2dCOzs7Tzs7O1E7UyxrQixtQztTOztZOzs7Ozs7YSxRO2EsUTtZLEc7Ozs7Ozs7YTs7WTs7Ozt3Qjs7WTs7OztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxnQjs7OztJO0ssYzs7Ozs7Ozs7O0ksZ0I7STs7Ozs7O0ksb0I7STtLOzs7SyxPOzs7SztLLG1CLGdEO0s7TSxROzs7TSxVOzs7OztNLEksc0I7O00sbUI7Ozs7O2dCO0s7TSxVOzs7OztNLFU7Ozs7O007SztNO007TyxJLG9COzs7Ozs7SztJO0ksTzs7O0k7O0s7O0k7SyxNO0ssTTtLO0s7SSxJOzs7OztLOztJOzs7O0ksc0I7OzBCO0k7Rzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7STs7O0ssTztJO0ksTzs7O0k7O0s7SyxPO0k7STs7Rzs7SSx5QixPO0ksTzs7OztJLE87OzZDLFM7OztJLE87OztJLHdCO0c7O0ksd0I7Rzs7O0k7Ozs4QixPOzs7TyxPOzs0QixPOzs7TyxPOzs2QixPOzs4QixPOzs2QixPOztPLDBCLE87TyxPOzs0QixPOzs2QixPOzs7Ozs7VztXLE87VTtPLE87Ozs7OztXO1csTztVO08sTzs7O08scUI7ZTs7O3NDLHNDOzs7SSxPOzs7STtLLGtCLE87SyxPOzs7SSxvQjtJLE87OztJOztLOztNOzs7UztTLFc7UyxPOztLLE87OztJLG9CO0ksTzs7Ozs7Ozs7O0s7SztLLE87STtJO0k7SSxXO0k7O0s7SyxPO0k7SSxPOzs7SSxxQixNO0ksTzs7Ozt3QixrQixPLDRCO0k7SSxVO0ksTzs7OztJLE87Ozs7SSxzQjs7STtJLFU7SSxPOzs7STtJO0k7O0ssMEI7Szs7dUIsTzs7UTtnQyxPOzs7STtxQzs7O087OzRCLE87O087O08scUIsTTtPLE87O087OztRLE07Tzs7OztXO1csTztVO08sTzs7TyxzQixNO08sTzs7Ozs7O1c7VyxPO1U7TyxPOztPLHVCLE07TyxPOzs4QixPOzs4QixPOzs4QixPOzs7TztPLE87O0c7Ozs7Szs7O3dCLE87O1EsOEIsTTtRO1EsTzs7USxnQixNO1EsTztnQjs7STtJO0k7cUM7OztPOztPOzs7TztPLE87O08seUIsTTtPLE87OztPOzs7O1csa0IsTTtXLE87VTtPLE87OztPO08sVTtPLE87OztPO08sVTtPLE87O08sMEIsTTtPLE87O08sd0IsTTtPLE87O08sd0IsTTtPLE87Ozs7Ozs7Vzs4Qjs7VyxPO1U7TztPLFU7TyxPOztnQyxPOzs7TztPLE87O08sMEIsTTtPLE87OztPO087TyxVO08sTzs7O087TyxPOzs7TztPLE87OztPO087TyxPOztnQyxPOztPOztPOztnQyxPOzs7Ozs7VztXLE87VTtPLE87OztPO08sTzs7O087TyxPOztnQyxPOztnQyxPOzs2QixPOztrQyxPOzs7TztPLFU7TztPLE87O087OztPO08sTzs7Ozs7d0Isa0IsTyw0QjtJLE87Ozs7SSxPOzs7O0k7SSxVO0ksTzs7OztJOzs7NEIsTzs7O08sTzs7K0IsTzs7NkIsTzs7OEIsTzs7NEIsTzs7OEIsTzs7TywwQixNO08sTzs7OEIsTzs7OEIsTzs7NkIsTzs7O08scUI7O08sMEIsTTtPLE87O08sMEIsTTtPLE87ZTs7OztJLHdCO0c7O0ksWTs7SSxPOzs7O0k7OztPOzs2QixPOzs7TztPLE87OztPOzs7O1c7VyxPO1U7TyxPOztnQyxPO2U7Ozs7STs7NEIsTzs7Tzs7Tzs7OEIsTzs7TztlOzs7OztJLE87Ozs7STtJLE87OztJLDhCOzs7Ozs7OztXO1csTztVO087Ozs7VztXLE87VTtPLE87OztPO08sTzs7aUMsTzs7O087TyxPOzs7OztJOzs7Tzs7NkIsTzs7O087TyxPOzs7TztPO08sTzs7Ozs7UTtRO1EsTzs7O087TyxPO3NDLE87Ozs7O0ksTzs7OztJOzs7TyxzQixNO08sTzs7K0IsTzs7O087Ozs7VztXLE87VTtPO08sTzs7O087Ozs7VyxrQixNO1csTztVO08sTzs7Ozs7OztPOzs7O1c7VyxPO1U7TztPLE87OztPO08sVTtPLE87OztPO08sTzs7Ozs7STs7O08sMEIsTTtPLE87O2dDLE87OztPO08sTzs7O087TyxPOzs7OztJO0ksVTtJLE87Ozs7STs7NkIsTzs7a0MsTzs7a0MsTzs7O087TyxPO2U7Ozs7O0k7c0M7OztPOzs7TztPLE87O08seUIsTTtPLE87O08sMkIsTTtPLE87O08sMkIsTTtPLE87O08sMkIsTTtPLE87OzhCLE87O08sMkIsTTtPLE87O2dDLE87d0MsTzs7Ozs7STtJLFU7SSxPOzs7O0k7Syx1QixNO0ssTzs7O0ksTzs7OztJOztLLE87OztJLE87OztJOztLLE87OztJLE87Ozs7STs7NEIsTzs7MkI7OzZCOzs7TztPLE87OzZCLE87ZTs7OztJLHFCLE07SSxPOzs7O0k7SSxVO0k7SSxPOzs7O0k7SSxPOzs0QixTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7OztrQixTOztJLGdDLE87SSxXOzs7STs7OztLLE87SyxPO0ksVzs7O0k7Ozs7SyxPO0ssTztJLFc7OztJOzs7OztLLE87Ozs7Ozs7SyxPO0ksb0I7SSxXO0k7Ozs7Ozs7Ozs7Ozs7Rzs7STs7SyxPO0ssVztJO0c7O0ksYztJO0c7MEMsUzs7STtJLFc7Rzs7SSx3QjtHOztJLHdCO0c7O0k7Ozs7SyxZO0k7Ozs7O3lCOzs7Tzs7O1EsUTs7Ozs7OzZDOzs7Tzs7O1EsVTs7Ozs7OzhDOzs7K0M7Ozs4Qzs7O087O1EsTzt5Qjs7OzZDOzs7OEM7OztPOztRLE87USxzQjswQjs7O087O1EsTztRLHNCOzBCOzs7Ozt3Qzs7OztJOzs7SSxlO0k7Rzs7SSxjO0k7Rzs7STtLLGtCLE87SyxXOzs7SSxvQjtJLFc7OztJOztLOztNOztTO1U7VTtVLE87VSxTO1M7O0ssVzs7O0ksb0I7SSxXOzs7STs7SyxPO0ssTztJLG9CO0k7SyxZO0ssVztLO0ssTztLLGU7SztLLE87SSxvQjtJLGlCO0k7Ozs7Ozs7Ozs7O0c7O0ksMEMsTztJLHFCOzs7SSxpQixPO0ksb0I7STtLLGU7SztLLE87SyxxQjtJO0c7O0ksd0I7STtHOztJOztLOzs7O00sTztNLE87Ozs7STtHOztJLEksVSxnQztJO0s7Ozt3QixXOzs7UyxzQjs7Szs7SSxvQjtJLEksWSx5Qzs7Ozs7Ozs7Ozt5Qjs7O1M7O1UsTzt5Qjs7O1M7Ozs7Ozs7YTthLGU7WTtVLFE7VSxPOzt5Qjs7O1M7Ozs7VSxPOzhCOzs7Uzs7O1UsTztVLHNCO3lCOzs7Uzs7VSxPO3lCOzs7NEM7OztTOztVLE87cUI7Ozs2Qzs7O1M7Ozs7VSxPOzBCOzs7OztJO0c7OztLOzt3QixXOztROzs7UyxPO1MsTztRLFc7O1EsZ0IsTztRLFc7Z0I7O0k7STtJLG9CO0k7SyxZO0ssVTtLOzs7Ozs7UTs7OztTLFE7Ozs0Qzs7O1E7Ozs7O1MsTztTLFU7Ozs7UTs7O1MsTztTLE87UyxzQjtTLE87d0I7OztROzs7O1MsTztTLE87d0I7OztROzs7UyxPO1MsTzt3Qjs7O1E7O1MsTzt3Qjs7O1E7Ozs7UyxPO2lDOzs7UTs7O1MsTzsyQjs7O1E7Ozs7OztZOzs7YTs7O1ksMkI7VztTLFc7UyxPOzs7OztZOzs7Ozs7O3lCOzs7UTs7Ozs7UyxPO3lCOzs7UTs7UyxPO3lCOzs7UTs7OztTLE87UyxPO1MsTzt5Qjs7O1E7OztTLE87eUI7OztROzs7UyxPO3lCOzs7UTs7Ozs7OztTLE87UyxPOzsyQjs7Ozs7O3lCOzs7Ozs7Ozs2Qzs7O1E7OztTLE87UyxzQjsrQjs7O1E7Ozs7OztTLE87d0M7OztROzs7UyxPO3lCOzs7MEM7OzswQzs7Ozs7O3lCOzs7Ozt5Qjs7O1E7Ozs7OztTLE87UyxPO1MsTzs7O1k7Ozs7Ozs7OztROzs7UyxPO3lCOzs7Ozs7O0k7Rzs7SSxpQixPO0ksb0I7SSxrQjtJO0c7O0ksaUIsTztJO0c7O0k7SyxnQjtLO0ssTztLLFk7STtHOztJLEksVSxnQzs7O29DOztPOzs7USxROzs7Ozs7OztpQjs7OztxQzs7c0M7O3NDOztzQzs7Tzs7USxPO3VCOzs7c0M7O3NDOztzQzs7OztzQzs7O087O1EsTzt3Qjs7O087O1EsTzt3Qjs7OztJO0c7O0ksd0I7Rzs7SSxZOztJLGtCOzs7SSxJLFUsZ0M7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1Esc0I7USxPO3VCOzs7d0M7Ozs7STtHOztJOzt3QixXOzt1QixXOzswQixXOzt5QixXO2U7Ozs7SSxnQyxPO0k7Rzs7STs7O0ssTTs7O0ksVztHOztJLDhCOzs7Tzs7Ozs7VztXLGM7VTtRLE87OztXO1csa0I7VTtRLE87Tzs7TyxrQyxNO08sVzs7TyxnQyxNO087O087Ozs7USxNO08sVzs7OztJLEksVSxnQzs7Ozs7cUM7O087OztRLE07Ozs7Tzs7OztRLE07USxNO3VCOzs7OztROzs7UyxNO1MsVTttQjs7UTs7UyxNO21COzs7Ozs7O3VCOztJO0c7O0ksYztJO0c7O0ksSSxTLGdDOzs7Tzs7OztRLE07aUM7OzsyQzs7O087Ozs7OztRLE07USxNO1Esb0I7USxNOzZCOzs7Tzs7O1EsTTtRLE07USxvQjtRLE07c0I7OztPOzs7OztRLFU7OztRLE07USxNO1Esb0I7Ozs7O1c7Ozs7Tzs7Ozs7O1EsTTtRLE07c0I7OztPOzs7USxNO3NCOztJO0c7O0ksSSxZLGdDOzs7Tzs7OztRLE07b0M7Ozs0Qzs7O087Ozs7USxNO2dDOzs7Tzs7O1EsTTt5Qjs7STtHOztJO0ssWTtLO0ssTTtLLGM7STtHOztJOzs7cUM7Ozs7Ozs7O3lDOzs7Ozs7Ozs7OEM7OztPOzs7O1EsTTsyQjs7OztJO0c7O0ksSSxXLGdDOzs7Ozs7Uzs7OztVLE07aUM7OztTOztVLE07MEI7OztTOzs7O1UsTTtxQzs7O1M7OztVLE07MEI7OztTOzs7O1UsTTs7K0I7Ozs7OzswQjs7O1M7Ozs7VSxNOztnQjs7Ozs7OzhCOzs7MEM7Ozs7O0k7Rzs7STtLLFk7SztLLE07SyxjO0k7Rzs7STs7Szs7OztNLE07OEI7O3NDO0k7Rzs7STs7Ozs7MkI7O3dDO0k7Rzs7STs7SyxXOzs7SSxnQjs7O0k7Ozs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7USxNO3NCOzs7cUM7OztJO0c7O0ksMEMsTTtJLHFCOzs7STs7OztLLE07SyxNO0ssTTtJLFc7Rzs7STtLLFM7SyxVO0k7Rzt3QixTO0c7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksTztHOztJOztzQjs7c0I7O3NCOztzQjs7c0I7Z0M7O0c7RyxJLHNCOztJOzs7OztHOztJOzs7O0c7O0k7O0c7O0k7STtHOztJLEc7SyxPO0k7SSxVO0k7STtJO0k7STtJOztHOztJO0k7O0c7O0k7WTs7STtHOztJOztLLEk7d0IsaUM7SztNLEs7Ozs7O0s7OztPOztROztXOzs7Ozs7Ozs7YyxHO2U7ZTs7Yzs7Ozs7Ozs7YztjO2M7OztjLEc7ZTtlOztjOztlO2U7ZTs7OztlO2U7ZTtlO2U7Ozs7ZTtlO2U7ZTtlOztjO2M7c0I7O1csRztZO1k7O1c7Vzs7Ozs7Yzs7Ozs7WTs7OztnQixPO2U7WTtZO1ksUTtZO1k7WTs7O087Tzs7OztNLEk7O0k7STs7Szs7O0s7OztHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJLE87Rzs7STtJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQixPLG1DO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzt5QixXOzsyQixXOzt5QixXOzs7TyxxQjs7MEIsVzs7MkIsVzs7MkIsVzs7MkIsVzs7RztHOzBCLE8sMkI7O0ksUzs7SztLLEc7OztNLEs7TyxNO00sWTtNO087TyxHO1EsSTs7Ozs7Ozs7SztJO0k7SztLLDBCLE8sMkI7SSxPO0c7O0k7O0ssTTs7STtHOztJOztLLE07O0k7RztHLEksc0I7eUIsZ0Q7O0k7O0c7bUMsc0I7K0IsNkI7O0k7SyxNO0s7O0c7OztJOzs7OztTOzs7O2lCOzs7UztVO1k7VSxNO1UsTTtVLE07OztlOztVLE07VSxNO1UsTTs7VSxNOzs7Ozs7Ozs7d0I7Ozs7O3dCOzs7Ozt3Qjs7Ozs7d0I7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7UyxPO1E7Szs7STtHOzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Szs7Ozs7Ozs7Ozs7TSxVO007OztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksbUIsTyw4QjtHOztJO29CLGU7SSxPO0c7OztLO0s7TSxvQjs7O0s7STtJLE87Rzs7SSxVO0ksTztHOztJO0k7SztLLE87STs7SztLO0ssTztJOztLOzs7Ozs7Uzs7VSxZO1Usb0I7UztVO1csTztXOzs7Ozs7Ozs7Uzs7Ozs7VTs7OztVOzs7Ozs7NEI7Ozs7Uzs7O1U7VSxNO1M7Ozs7TTs7O0s7SyxPO0k7O0ssYztLO0ssTztJOztLLGtCOzs7Ozs7OztZO1c7UTtTOzJDLHFCOzs7O1E7OztROztTO1Msb0I7UTs7O0s7SyxPO0k7SSxnQyxxQztJO0s7SztrQjs7TTs7O0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzs7dUIsTzsrQixPOztHOztJO29DOzs7STtJOzs7TztPLE87O087O1Esb0I7TztPLE87ZTs7Rzs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7O1U7Vzs7STtHOztJOzswQixXOzt1Qzs7TyxrQztPOztHOzs7SSxnQjs7O0ksWTs7Ozs7OztPOzs7UTs7O087Ozs7O0ssWTtLO0s7STtJO0k7Rzs7STs7eUIsVzs7eUI7O3VEOzt5Qjs7MkIsVzs7MkIsVzs7O08sVzs7Rzs7STtJO0c7O0ksVztJLE87Rzs7SSxtQixPO0ksTztHOztJO0ssTTtLLFE7OztHOztJO0ssTTtLLFE7SyxPO0ksTzs7Rzs7SSxJLE0sbUM7Ozs7OzttQjs7O087OztRLE87NkI7OztxQzs7Tzs7O1EsTzsrQjs7O3dDOzs7c0M7O3FDOztPOztRLE87bUI7OztzQzs7cUM7Ozs7OztXO1csTztVO29COzs7Ozs7O1c7VyxPO1U7b0I7Ozt3Qzs7OztJLE87Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7STtLLE07SyxRO0ssTztLO0ksTzs7Rzs7O0ksVzs7O0k7SyxNO0ssUTtLOztLLE87SyxPO0s7SyxXOzs7Szs7OztNLE87TSxPO0ssVztJO0ksSSxXO0ksb0I7SSxlO0ksTzs7Ozs7Ozs7Ozs7O0c7O0k7O0ssa0IsTztLLFc7O0ksb0IsTztJLFc7Rzs7STtLLGtCLE87SyxXOztJLG9CLE87SSxXOzs7STtLLE07SyxRO0s7O0ssTztLLE87SztJLE87Ozs7Ozs7OztHOztJO0ssTTtLLFE7SyxPO0s7SSxPOzs7Ozs7OztHOztJO0ssUTtLO0ssTztLLE87SztLOztJLG9CO0ksZTtJLE87O0c7O0k7SyxRO0ssTztJLE87Rzs7STtLLE07SyxRO0s7O0s7Ozs7TSxPO00sTzs7OztJO0ksTzs7Rzs7STtLLE07SyxRO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7OztZLE87OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yyx3Qjs7Ozs7Ozs7Ozs7VyxHOzs7O3NCOzs7Ozs7O1M7O1UsTztxQjs7OztTO1U7Ozs7OztjO2MsVzthO1csTzsrQjs7O1M7O1c7WSxPO1ksTzt1Qjs7MkM7Ozs7Ozs7VTs7Ozs7Ozs7Ozs7aUI7Ozs7Ozs7Ozs7Ozs7Uzs7O1UsTzs0Qjs7Ozs7Ozs7YTs7O2MsTzthO1k7cUI7OztTOztVLE87cUI7Ozt1Qzs7b0M7O3lDOzs7Uzs7O1UsTztxQjs7OztJLE87Rzs7STs7OztLLE87SyxPO0ssTztJLFc7Rzs7STtLLE07SyxRO0ssTztLLE87SSxPOztHOztJO0ssTTtLLFE7Szs7Ozs7Ozs7OztROzs7O1MsTztTLE87OEI7Ozs7Ozs7OztXOzs7WSxPO3FDOzs7OztVOztXLE87c0I7O1UsMEM7VTtXO1ksTztZLE87VyxLO1csSTs7VTtXLE87VyxPO1c7YTtXLE87Ozs7O2M7Ozs7Ozs7UTs7Ozs7O1k7WSxXOztZLHNCO1c7UyxPO29COzs7UTs7O1MsTztTLE87b0I7OztROzs7UyxPO1MsTztvQjs7O1E7O1MsTztvQjs7OztROztVO1csTztXLE87c0I7O3dDOzs7Ozs7OztROzs7UyxPOzRCOzs7UTs7O1M7OztZOytCOztZLG9CO1c7UyxTO1MsTzs7OztZOzs7UTs7O1M7cUI7OztROzs7O1MsTztTO3FCOzs7UTs7UyxPO3FCOzs7UTs7OztTLE87UyxPO1MsTztxQjs7O1E7OztTLE87cUI7OztROzs7UyxPO3FCOzs7UTs7Ozs7O1MsTztTLE87O3dCOzs7O1E7Ozs7bUI7OztXOztZLE87bUI7OztXOztZLE87bUI7O3dCOzs7OztROzs7UyxPOzs7O1E7OztTLE87Ozs7Ozs7O1k7OzthLE87WTtXO3FCOzs7UTs7OztTLE87NkI7OztROzs7UyxPO3FCOzs7MEM7OzsyQzs7O3VDOzs7O3FCOzs7UTs7OztTO1M7a0M7OztTLFE7UyxPO1MsUztTLFM7Ozs7UTs7UztTLE87Ozs7O3FCOzs7UTs7O1MsTztxQjs7STtLLE87O0k7Szs7OztNLFE7TSxVO0s7OzhDOzs7UTs7O1MsTztTLE87MkI7OztROztTLE87MkI7Ozs7O3FCOztLLE87O0ksTztHOztJOztLLFc7SyxXO0s7STtHOztJOztLO0ssYztJO0ksVztJO0c7O0k7SyxNO0ssUTtLOztLLE87SyxPO0ksTzs7Rzs7SSxrQixPO0ksTztHOztJLEksTSxtQzs7O29DOztPOzs7USxPOzZCOzs7Tzs7USxPO21COzs7d0M7OztzQzs7cUM7O3FDOztPOztRLE87bUI7OztzQzs7d0M7OztzQzs7d0M7OztPOztRLE87b0I7OztPOztRLE87b0I7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLLE87SztJLE87O0c7O0k7SyxNO0ssUTtLO0s7SSxPOztHOztJO0ssTTtLLFE7SyxPO0ksTztHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0k7SyxNO0ssUTtLLE87Szs7SSxvQjtJLGU7SSxPOzs7Ozs7Ozs7O0c7O0k7SSxzQjtHOztJO0ksc0I7Rzs7STtJLHNCO0c7O0ksWTs7SSxpQjs7O0k7SyxNO0ssUTtLOzs7OztxQzs7Tzs7O1EsTzs7OztPOzs7USxPO1EsTzttQjs7O3dDOzs7O0ksTztHOzs7STs7TyxvQixPO087O08sb0I7Tzs7TyxtQixRO087O08sc0IsTztPOztPLHNCO087O08scUIsUTtPOzs7O0k7SyxNO0ssUTtLOzs7SyxPOzs7Ozs7O3FDOztPOzs7USxNOzs7O087OztRLE07bUI7Ozs7O1EsTTtPOztRLE07bUI7OzhDOztJLE87Rzs7STtLLE07SyxRO0s7OztPLE07O3dDOzs7Tzs7OztRLE07NkI7OztPOzs7Ozs7VztXLFc7O1csc0I7VTtRLE07bUI7OztPOzs7O1EsTTtRLE07NkI7Ozs7Ozs7Uzs7O1UsTTtVLE07Ozs7OztTLE07UTs7UyxNO21COzs7OztPOzs7USxNO21COztJLE87Rzs7STtLLE07SyxRO0s7OztPOzs7USxNO1EsTTs7OztzQzs7Tzs7OztRLE07MEI7OztPOzs7USxNO21COztJLE87Rzs7STs7SyxNO0ssTTtJLFc7Rzs7STtLLE07SyxRO0s7OztxQzs7Tzs7Ozs7O1EsTTt1Qjs7O087Ozs7OztRLE07O2tCOzs7Tzs7OztRLE07dUI7Ozs7SSxPO0c7O0k7SyxNO0ssUTtLOzs7Ozs7OztROzs7O1MsTTsyQjs7O1E7O1MsTTtvQjs7O1E7OztTLE07UyxNOzs7O1E7OztTLE07b0I7OztROzs7UyxNO1MsTTs7Ozs7OztvQjs7O1E7Ozs7UyxNO29COzs7UTs7OzJCLE8sa0M7UyxTOzRCOzs7d0M7O0ksTztHOztJOztLLE07SyxNOzs7STs7Ozs7TSxtQzs7OztLLFc7O0c7O0k7Ozs7SyxNO0ssUTtJO0s7Ozs7TSxNOzhCOztxQztJLE87OztJOzs7O0ssTTtLLFE7STs7Ozt3Qjs7dUM7SSxPOzs7STs7O0ssa0M7O0k7Rzs7STtLLE07SyxRO0s7OztPOzs7OzBCLE8sa0M7USxNO3dCOzs7Ozs7O3FDOzs7Ozt3Qzs7Ozs7Ozs7d0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUM7Ozs7O087OztRLE07dUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQjs7OztJLE87Rzs2QixTO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOztJO0ksTztHOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCLG9COztJOztPOztPOztPO2U7O0c7aUMsMEI7O0k7SSxXO0k7SyxVO0ssTztLO087O2dCOztJO0c7O0ksSSxROzs7NEI7OztJO0c7O0k7Ozs7VztXOzs7OzRCOzs7STtHOztJOztPOztPOztPOztPOztPOztPOztPO2U7O0c7aUMsVyxpQzs7Ozs7STs7TyxpQztPOztPLHFDO087O087OztRLE87UTtPOztPLHFDO087O08scUM7Tzs7TyxxQztPOztPLHFDO087O0c7O0k7Ozs7Ozs7Ozs7Ozs7Szs7STtHOztJOzs7a0I7O3FCLE87O007TTs7OztJLE87Rzs7cUIsTyx5QztJLDBCO0k7O087OztROztXOztROztXOztPLE87OztPLE87O087Ozs7UTs7TyxPOzs7TyxPOztHOzs7SSxPOzs7STs7OztLLE87SSxPOzs7O0ksVztJLFM7STtLLE87SyxPO0ssTztJLE87Rzs7STs7OztRLGdCO29CLFc7Ozs7USxXOztROzs7Uzs7Ozs7USxrQjs7UyxXOzs7Rzs7eUIscUI7SSxPO0c7OztJO29CO0ksb0IsUztJO0c7Ozs7Ozs7Ozs7VTtXLE87Vzt3Qjs7OztTOztVLE87VSxPO1UsTztTLEcsaUM7UztVO1U7Ozs7Ozs7OztTOzs7OztZOzthOzs7NEI7O1k7O1k7Ozs7Ozs7O1k7OzthOzs7Ozs7YSxVOzs7Ozs7Ozs7YTtjLFc7OztjLGM7OztZOzs7Ozs7Ozs7Ozs7Ozs7O3FCO2U7Ozs7Ozs7Ozs7O29CO2M7Ozs7Ozs7O2U7O2dCOzs7Z0I7OztnQjs7OztlOzs7Ozs7YTs7WTthOzs7YTs7O2E7Ozs7WTs7Ozs7Ozs7VSxHLGdDO1UsVztVOzs7VztZLE87WSxPO1ksTzttQjtVOztTLEksVzs7Ozs7OztZOzs7OztTO3NEO1M7O1U7Ozs7Ozs7Ozs7Ozt3Qjs7Uzs7O087O1EsTztRLE87UTs7MkI7TztRO1E7Tzs7O0s7TTtNO007Szs7OztJOztNOzs7OztPLFM7Tzs7Ozs7Ozs7O1E7O1MsVTs7aUI7Ozs7aUI7OztPOztRLFE7USxVOztnQjs7O007OztzQjtJOzs7O0k7O0ssNEM7O0ksYTtJO0c7O0k7SyxPO0ssVTs7Szs7O007O0s7SztJOzttQjs7Ozs7Ozs7O0s7Ozs7UTs7O007Tzs7O08sTTs7Ozs7Ozs7Szs7O2E7TTtLO0k7STtLLFU7Ozs7Ozs7OztLOzs7TTs7Ozs7OztPLEc7Ozs7O1k7Ozs7Ozs7Ozs7O0ssSSxVOzs7Ozs7Ozs7OztLOzt3Qjs7d0I7O3dCOzs7O0s7TTs7Ozs7STtLLE87Szs7Ozs7Ozs7Ozs7Szs7Ozs7OztrQjs7O007Ozs7Ozs7Ozs7OztpQixJOzs7Ozs7Ozs7TTtNOzs7STs7Ozs7SSxhO0k7Ozs7OztLOzs7Ozs7O1M7UywwQjtTLFU7UztVO1csTztXO2lCOzs7Ozs7Ozs7UztpQyxxQjtVLE87VTs7Ozs7O1M7VSxjOzs7Ozs7Ozs7O1M7Ozs7VTs7O1U7VSxjOzs7Ozs7Ozs7O1M7Ozs7VTtVLE87VTtZOzs7Ozs7O1M7VTtVO1k7Ozs7Ozs7Ozs7Uzs7Ozs7O1UsTztVLGU7VSxPO1M7Ozs7Ozs7O1M7UywwQjtTOzs7Ozs7Ozs7Ozs7Ozs7O1U7VyxZO3lCOzs7O1U7O1c7YTtXOzs7Ozs7Ozs7YSxNOzs7Z0MsdUI7c0I7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7OztTOzs7O1UsTztTOzs7Ozs7OztTO1UsVTtVOzs7Ozs7Ozs7Ozs7OztVOztXOzs7O1M7Ozs7UztVO1k7VTs7Ozs7Ozs7OztTOzs7O1UsVTtVLFc7OztVO1k7VTs7Ozs7Ozs7OztTOzs7O1UsUTtVLFM7O1U7VTtZOzs7Ozs7OztLLE07OztJO0s7O007Ozs7STs7OztJO0s7Ozs7Ozs7Ozs7Ozs7SyxPO0ssTzs7O0k7WTs7Ozs7OztJO0k7OztLO007O0k7Ozs7OztPOzs7Szs7Ozs7Ozs7O0s7Ozs7MEM7O0k7Rzs7STtJOzs7Ozs7OztLLHNCO0s7O0c7RztJO0k7O0k7SztLOzs7d0I7SSxPLFc7Rzs7STt1Qjs7STtHOzs7Ozs7Ozs7OztJOzs7O0s7aUIsTTs7Szs7O007TSxNO0s7O0k7SyxRO0ssUztLO0ksTTs7Rzs7OztJOztLOzs7Uzs7Ozs7Ozt5QztJLHdCO0ksTTtHO0csSTs7SSxZOztJO0c7O0k7O087O087O087OztRO1E7OztTOzs7VSxPO1UsTztTLE87OzswQjtPO2U7O0c7O0ksOEIseUI7O0c7O0k7STtLOztNOzs7TTs7TyxPOzs7Ozs7O2tCOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxZO007bUI7Tzs7USxRO087Ozs7Tzs7USxRO1EsUTtPOztNLFk7TTs7Szs7STtLLFE7SyxNO0k7Rzs7O0k7SztNOztLO0k7STs7SyxTO0ssUztLO0s7SSxPOztHLEk7O0k7O087O087O087OztRO1E7cUMsWTs7OztTOzs7VSxNO1UsTTtTLEcsd0M7O2tCOztPO2U7O0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO007O087OztVO1csUTtXLFE7VSxPO1M7TyxRO08sUTtNOztzQjtLOztNLFE7TSxNO007TSxNO00sTTtLOztJO0c7O0k7Szs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7Szs7STs7SyxTO0ssVztLO0s7SSxPO0c7O0k7OztLOzs7SSxNO0c7O0k7NkM7O0ksTTtHOztJOzs7NkM7O0ksTTtHOztJOzt1Qjs7O0ssTTs7SSxNOztHOzs7STs7Ozs7TTs7O0s7TSxNOzs7Z0Q7O0ksTTtHOztJOztLLE07OztJO0c7O0k7dUI7O0ksTTs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztNOzs7Tzs7OztxQjs7O1EsTTtPOzs7USxtQjs7Ozs7O0ksTTtHOztJLFksTzs7Ozs7TyxPOzs7O08sTzs7Ozs7Ozs7O08sb0M7TyxPOzs7TyxzQztPLE87Ozs7O0k7SyxPO0k7OztJOzs7O1EsZ0M7USxPOzs7USxvQztRLE87OztJLE87OztJLFk7O2dCOztJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxjO3lCLDhCO0ksSztLLE87STtJLE87Rzs7SSxRO21CO0c7O0ksOEI7OztPOztRO1Esc0I7O087Ozs7OEI7OzttQixlOzs7Ozs7OztPOzs7UTtRLHNCO1E7TzsrQjs7OztlLE07O0c7Ozs7bUI7OztNOzs7TztPLHNCO087TTs4Qjs7Ozs7SyxvQjs7Ozs7O21CLE07O0ssRztvQjs7Ozs7Ozs7STtJLE87Rzs7STs7O0ssTztLLE87SSxPOzs7O0k7SztpQixNOzs7Ozs7Ozs7Szs7Ozs7VTtXLFE7VztXO1c7YTs7Ozs7Ozs7OztVOzs7O1U7OztXOztXLE07VTs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7Ozs7Vzs7O1k7Ozs7Ozs7OztTLGUsVTt1QixNOzs7O00sTTs7Ozs7NEIsTzs7OztHOztJO0ksTzs7YztHOzs7STtJOzs7SSxXO0ksTztHOztJLE87RztpQyxtQjs7STs7Ozs7Szs7STtHOztJO2dCOztJO0c7O0kscUMsTzs7SSxPOzs7STtnQixPOztJLCtDO0k7Ozs7SztJLE87Rzs7STtnQixPOztJO0c7O0k7Z0IsTzs7O0s7OztNO00sTztLLE87Ozs7OztNLE87O0k7Rzs7STs7Szs7TTs7TTtLLE87O1ksTztJO0ksaUQ7STs7OztLO0ksTztHOztJOzs7SyxxQixPLGdDOztZLE87STtJO0c7O0k7d0M7STtHOzs7Szs7O00sTztNLE07TTtNLE87SyxPOzs7Ozs7Ozs7d0I7STtLLE87SyxTLFc7SSxPO0c7OztLOztROzs7OztLO0k7STtHOztJO0ssSSxTO0s7Ozs7O2M7Ozs7Ozs7Szs7bUI7O21COzs7SztJOztLO0s7Ozs7Ozs7OztROzs7O1M7Ozs7UTs7OztTOzs7SztJO0ksTztHOztJO0ksTztHOztJO0ssTztJLE87Rzs7SSwrQzt5QixtRDtJO0ssTzs7SyxnQjtJLE87Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Szs7Ozs7d0IsTyw0QztNLE87SzthOzs7OztpQjs7O007O087K0IseUM7TSxPOztLOztNOzs7O0c7O0ksVztJLE87Rzs7SSxXO0ksTztHOztJO0s7Ozs7Ozs7bUI7TTtPO08sSTs7Ozs7Ozs7O0k7YztzQztHOztJLFE7SSxXOzBCLE8sc0I7SSxXO0ksTztHOztJOztPOztRO1E7O1EsTztRLE87O1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPOztRO1E7O1E7VTs7Ozs7O1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7O087O1E7UTs7UTtVOzs7Ozs7USxPOztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Tzs7UTs7USxPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7Tzs7Ozs7USxLO1EsSztRO1EsTztPLE87Ozs7Ozs7Ozs7O0c7O0k7SyxROzs7O0k7Szs7SSx3QixPO0ksTzs7Rzs7STs7O0ssTzs7SyxPO0ksTzs7OztJOzs7SyxPOztLLE87SSxPOzs7O0k7Rzs7STtLLE87O0ksVztHOzs7STs7Ozs7O1E7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7SztLO0k7SyxPOzs7O0k7O0c7OztJOztPLHFCO21COztPLFc7OztPOzs7OztROzs7TztRLE87Ozs7Tzs7O087O1EsVTtPOzs7TztRLE87Ozs7Tzs7Ozs7STs7Ozs7STs7Ozs7Ozs7OztlOztLLGU7O0s7STtJO0s7SztLLE87SztLOztJLE87Ozs7Szs7O007TTtPLE87TyxPO087TSxPOzs7TSxNOztLOzs7UTs7UTs7Uzs7Ozs7Yzs7O2UsTzs7ZSxPO2MsTzs7OztTO1M7Ozs7O1ksTTtXLHNCO1c7Ozs7MEM7Ozs7Vzs7WSxlO1c7Ozs7Ozs7O1c7O1ksZTtXOzs7Ozs7OztXOzs7Ozs7Ozs7O1E7OztJO0ksTztHOztJOztPLG9CO08sTzs7NkI7O08sZ0MsaUI7TyxPOzs7Ozs7a0I7a0I7O087O1E7UTtRO1Esc0I7TyxPOztHOztJOztPLHNCO08sTzs7NkI7O08sZ0M7Ozs7OztVOztXOzBCOzs7OzBDOztPO08sTzs7O2dEO087O1E7UTtRO1Esc0I7TyxPOztHOzs7STs7Szs7UTs7UyxROzs7Ozs7Ozs7Ozs7Vzs7WTtZO1k7Ozs7cUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTO29COzs7USxtQjs7UyxNOzs7b0I7O0ssYTtrQixzQjs7NEIsTyxzQjtNLE87SztLO0k7SSxPOzs7O0s7TTs7TztPLFc7TSxXOztxQzs7Ozs7Ozs7TTtPLGM7O08sTztNOzs7NkI7TTs7Ozs7O1UsaUI7VSxPOzs7O1MsdUM7Ozs7a0I7UztVO1Usc0I7VTtVLE87UyxPOzs7O007TyxlOztPO007TTtPO087TztPLE07TSxPOzs7Ozs7OztLO0ssVztJO0ksTztHOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7O1EsTTtPO0k7OztRLE07Tzs7OztLO0ssRztNLE07SyxPO0k7STtLLE07SyxPOztLOzs7TTs7O00sTztNOztTOzs7Ozs7OztLLE87Ozs7O0k7SSxnQjs7RztJO0k7STtJOztJO0k7OztHOztJO0ksVztHOzs7STs7Ozs7SSxROztJLEc7SyxJLEk7Ozs7Ozs7Ozs7SyxTOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7SyxXO0s7Ozs7O0ssZTtLLE07O0c7O0k7SyxPO0sscUI7O0c7OztLLG1COztNO007OztNLE07O0s7O08sZ0I7TyxNOztNO00sTTs7Ozs7TTs7TztNOztJO0ksTztHOztJOztJO0c7O3dCLHVDO0ksTztHOzt5QixrQixPLHlCO0ksVzs7Szs7O00sSTtNLFE7OztTO087Tzs7O0ssTTtJO0ksTyxXO0c7O0k7O0ssWTs7O00sTzs7SyxNO0k7SSxXO0k7Rzs7eUIsMEM7SSxPO0c7Ozs7SztJO0k7Ozs7OztPLE07OztLOzs7Ozs7USxnQjtRLE07O087UTtTLE87UyxPOzs7Ozs7UTtTO1UsTztVLE87Ozs7Ozs7Ozs7VTs7Ozs7O087O087Ozs7UTtRO1E7UTtVO2E7O1EsTztPOzs7TyxPO1EsTTtPO1Esc0I7USxPOzhCLGU7USxXO1EsTztPOztPOzs7USxVOzs7OztROzs7OztrQyxTO21COzs7Ozs7TztVO1EsVztRLE07OztPO1Esc0I7USxPO1EsUztROzs7OztnQjs7OztPO1EsTzs7O1c7VztZLFc7WTs7Ozs7WSxrQixRO1ksTTs7O1U7TztPOzhCLGU7USxPO1EsUztPOztPOzs7USxZOzs7VztZLFc7WSxLO2EsSTs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTs7Ozs7Ozs7O1k7YTs7YztjLFE7Ozs7OzthO2MsSTtjLFU7Ozs7OztrQixNOzs7OztpQixxQixVOzs7Ozs7O2tCLEc7bUIsTTs7O2tCO21CLGM7Ozs7OztvQixNOzs7bUI7Ozs7OzthLE07OztZOzs7OztnQjtzQztlO2E7ZTthO1k7OztXOztRLGdCO1E7a0MsMEI7USxXO1E7OzthOzs7VztXLE87VTtRLFE7TyxtQzs7Ozs7UTtTLFU7Ozs7Ozs7Uzs7d0IsTTtVLHVCLFU7Ozs7YTs7YyxTOzs7Ozs7Ozs7UyxHO1U7O1U7Ozs7O1EsTTs7Ozs7UTs7OzsyQzs7Ozs7OzJCOzsrQjs7UztVLFU7OztTOzs7Ozs7UztTLE07Ozs7VTtRLFc7USxNOzs7TztRLHNCO1EsUztRLFc7USxPOzs7VztXLEksVyx3Qzs7Ozs7WSxrQixRO1ksTTs7O1U7TztPOzhCLGU7USxVO1EsTztRLE87USxVOzs7OztxQzs7Ozs7Vzs7WSxPOzs7ZTs7O2dCLFE7Ozs7MkM7Ozs7O2U7YztZLFc7WTtZO2M7O21COzs7O1E7O08sTTs7O087O1M7VSxPOzs7Ozs7UztVLE87Z0I7O1E7USxJOzs7OztTLHNCLFE7UyxNOzs7Ozs7OzsyQjtROztTOztRO1EsSTs7OztTLGtCLFE7UyxNOzs7O1M7Uzs7UTtTLE07UyxLO1MsVTs7Ozs7O2E7Ozs7OzthOzs7Ozs7O087O087Ozs7UTtROztXO1k7WTtrQjtXLE87VTtRLFU7OztXLFE7VztZO2EsUTs7O1ksRzthLE07O1ksSSxvQjtZLEc7OzthLEksSSxPOzs7OztlLE07Ozs7WTs7Ozs7YSxPOzs7VTs7O1csdUIsMEI7Ozs7YTs7YztjO2MsVTs7Ozs7Ozs7Ozs7O2E7MkI7O2E7YyxPO2MsVTs7Ozs7O2tCLE07Ozs7OztpQixHO2tCO21CLEs7OztzQjs7O3VCOzt3QixLO3lCLFk7O29EOzs7eUIsTTs7Ozs7O3NCO3FCO2tCOzs7Ozs7YSxNOzs7OztZOzs7Z0Isb0I7Z0IsTztlO2EsSzs7O2E7O2MsSztlO3FDLGM7Z0IsUTtvQjs7Ozs7eUI7OztjLE07OztrQzs7c0I7O1k7OztXO1U7USxVO1E7cUMsaUI7USxPO1EsVztPOzs7OztZLGU7O2EsTTs7WTtXO1E7O087Ozs7VyxPOztVO1E7UTtVO2E7O1E7USxPO087O087OzsyQixZO1EsUztPO08sSSx5QztvQjtPLEksd0M7O087TztPO1E7MkIsTyxnQztRLFk7USxRO1E7TztPOztPOzs7O1E7OztRO1EsUTtPO087OztXO1c7VTtRLE87USxTOzs7VztXO1U7USxvQjtRLFE7Tzs7O08sTTtrQzs7OztJLFc7SSxXO0ksWTs7Szs7TSxVOzs7OztNLE87SyxXO0s7OztTLHdCLFE7OztVLGM7O1M7UTtNLFc7TTs7UztLO0ssTzs7SSxPO0c7O0k7SSxPO0c7O0c7STs7O0ksSSxZOztLOzs7TTtNLE87SyxJLG1DLEk7aUI7Z0I7Szs7OztvQjs7Ozs7Ozs7eUI7TTtPLE07d0M7O007OztPOzs7STtJOztJO0s7O007TSxJLFcsb0M7Ozs7O08sTTs7SztLLE8sd0M7Rzs7STs7O0ksMEI7STtJO0k7Rzs7STs7O0k7SSxJLGlDOzs7SztNLE87TTs7OzthOzs7O0k7STtJO0k7STs7O0ssWTs7O1M7TztPOzs7SztJO0ksWTtJO0k7Ozs7SyxPO0ssTztJO0c7O0k7O0k7STtJO0k7STtJO0ksZ0I7Rzs7STs7OztLO0s7eUIsWTtNLFM7TTtNO0s7SztLO0s7O0k7STtJO0k7STtHOztJO0ssTzs7O087O1E7O1csTzs7eUI7VTtRO1U7OEIsTyxrQztPLE87OztPLE87OztPLE87Ozs7Ozs7Ozs7TyxPOzs7TyxPOztPOztRLG9CLE8seUM7NEIsTyx5QztPLE87O087O1Esb0IsTyx5Qzs0QixPLHlDO08sTzs7eUIsTzs7O08sTzs7Ozs7OztXO1c7WSxNOztZLE87VyxPOzs7Ozs7Ozs7O1U7TyxPOzs7TztPLFk7Ozs7Uzs7VTs0QixXLHFDO1MsTzs7O087OztPLE87Ozs7Ozs7OztPLE87OztPO08sRztRO2U7UTs7UTtPLE87OztPLE87Ozs7Ozs7O1csTzs7Ozs7Ozs7O1U7TyxPOzs7Ozs7VyxZLE87O1csTztVO08sTzs7O08sTzs7OztJO0s7Ozs7TSx5QjtLLFc7O21DOztJO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STs7cUIsTzs7dUIsTzs7cUIsTzs7cUIsTzs7dUIsTzs7dUIsTzsrQixPOztHOztJOztLOzs7TTs7SztNLE87Szs7USxPOztRLE87O1EsTzs7Ozs7SyxPOzs7TyxvQixPO08sTzs7O08sTzs7O08sb0I7TyxPOztPOztRLDRCO08sTzs7Ozs7O1EsTzs7O087Ozs7UTs7Ozs7UyxPOzs7Ozs7Ozs7OztRO3FDO1EsTzs7OztROzRCLG1DO1MsTztTLDRCO1MsTztRLE87OztPO29DO08sTzs7O3FCLE87O08sTzs7Tzs7OzBCLCtDO1EsZTtPLG1CLE87Ozs7OztXLGU7O3FCOztVO08sTzs7Ozs7Ozs7Tzs7USw0QjtPLE87OztPLE87OztPLE87OztPLE87ZSxPOztHOztJOzs7Ozs7O087USxPOzs7O0k7Rzs7STs7Ozs7OztPO1EsTzs7Ozs7STtHOztJOzs7Ozs7Ozs7O0ssTzs7STtHOztJOzs7SyxPOzs7STtHOztJLFk7O21COztJLHVCO0ksTzs7OztJLFk7Ozs7SyxPOzs7Ozs7Ozs7OztJLE87Ozs7SSxPO0c7O0k7SSxVO0ksTztHOzs7SztLO0ssTztJO0ksTztHOztJOztLO0ssTztJO0k7SSxPO0c7Ozs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7OztJOzs7O3NCLGlEOzt3QixhO0ksTztHOztJO0ssTTs7STtHOzs7SSxXOztHO0k7STtJO0k7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtJOzs7OztPOztPLHdCOzs7O0s7O0c7O0k7Ozs7Ozs7Ozs7MkI7Ozs7Tzs7OEIsb0IsVztRLE87OEIsb0IsVztRLE87Ozs7OzBCOzs7Ozs7Ozs7Ozs7Ozs7O1U7VyxNO1csUTttRjtVLE07Uzs7Ozs7Ozs7Ozs7STtHOztJOzs7O3lCOztPOzt5QixPOzsrQjtpQzs7Rzs7c0IseUM7STs7Ozs7O1E7O1M7Ozs7Ozs7O1E7Ozs7WTtZO1c7UyxNOzs7O1E7Ozs7Uzs7Ozs7STtHO0c7STtJOzs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7Rzs7Ozs7O0ksTTtJLHlCOztJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7Ozs7Ozs7WTs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7SztJO0k7Szs7O1M7Z0Q7UztRO00sWTs7Ozs0Qjs7O0ksb0I7SSxPO0c7O3lCLHdCLFk7SSxPO0c7O0ksVztpQjtHOztJOzs7Szs7STtHOztJOzs7OztRLE87Ozs7OztRLGUsTztRLE8sMkI7Ozs7SSxPO0c7O0k7STs7Ozs7O1E7UztTOzs7OztRO1M7Uzs7Ozs7UTtTO1M7Ozs7Ozs7TztRO1E7Ozs7Ozs7O08sVztPLFc7O007OztPO087Ozs7OztHOzs7SztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0M7Ozs7Ozs7Ozs7Ozs7O2lCOzs7a0IsTztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7OztrQixPO2lCLFc7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQjs7a0I7OztpQjs7Ozs7Ozs7Ozs7Ozs7aUI7O2tCLE87a0IsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7O1MsZ0M7UyxTOzs7Ozs7USxrQztRLFM7Ozs7O007O0k7O0s7OztPLGtCLE87O087OzttQjtLO0k7MEI7O0s7Szs7O1E7Ozs7O1M7USxXOzs7OztzQjtNOztJO0k7OzBCLDJDO0c7Ozs7STs7STtXOztjO0c7O0k7SztLLE87SyxRO3lFO0ksTTtHOztJOzs7Ozs7Ozs7Ozs7VyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7NkI7Ozs7Ozs7VyxPOzs7Ozs7Ozs7Ozs7O2lCOzs7OEM7O0k7Rzs7STtrRDtpRDtJLE87Rzs7STs7Ozs7Ozs7OztrQyxPOztrQyxPOzs7O3lDLE87O087O007Ozs7OztROztROztTLE07Uzs7O1k7WTthOzs7aUI7O2dCO2MsTTs7Ozs7Ozs7WTtXO1EsTzs7STtHOztJLFksa0M7Ozs7Ozs7a0I7TSw0Qzs7Ozs7OztVOztXOzs7K0IsK0I7YyxPO2E7VyxTO1c7Ozs7OztrQjs7TTs7O0k7Rzs7SSxTO1ksTztJOzs7O0s7OztJO0c7O0k7Ozs7UTs7Uzs7O1E7O1E7Ozs7Uzs7O1E7Ozs7O1UsTTs7Ozs7UTs7UTs7O1M7Ozs7Ozs7WTtZOztzQjs7WTtXO1E7OzttQjs7Ozs7O1E7O1M7OztROztnQixPOztROztnQixPOztJO0c7MkIsNEI7eUMsNEI7OztLO0s7TTtPLE87TyxPOztPOzs7O1E7Ozs7O00sTzs7ZTs7Ozs7O0k7STtHOztJLFk7OztLLE07O0ksOEIsMEI7STtHOzs7SztLO29COzs7Ozs7OztNO087TztlOzs7Ozs7STtJO0c7OztLLFU7SztJOztLLFk7O0s7Ozs7OztNO007SztLLE87STs7Ozs7Ozs7Ozs7Ozs7Ozs7TTtPLFk7TztTOzs7VTtVLGtCO1M7TyxVLFc7TTs7Szs7Ozs7OztNO0s7TTtPOzs7OztLO007Ozs7RztHOztJLG1CO0ksdUM7O0s7TSxNOztvQixXOztLO0k7O2dCLFc7O0k7RztHLG1COztJLFU7SSx1Qjs7Ozs7Ozt1RDs7UyxPOzs7eUI7OztTOzs7O2Esa0I7aUY7YSxNO1k7VSxTO1UsTTtTLGdCO1U7VyxPOzs7Yzs7O2UsUTs7OztlLE87O2M7YTtVLE87O1MsVztTLFc7UztVLE87OzthOzs7MkI7a0M7WTtTLE87Ozs7TTs7O00sTTs7STtHOztJOzs7Ozs7SyxPO0k7Z0I7Ozs7OztHOztJO0ssTTs7bUI7SSxtQjtJO0c7O0ksWTs7O0s7TTtPLFU7TyxVOzs7OztRO1M7O3lDOzttQjs7O007Ozs7O08sTzs7OztJLE87Rzs7STtHOzs7STs7SztLLGlCOztLLFc7STtJLGE7eUIsOEI7STtLLFE7OztJLE87Rzs7STs7O21EO0s7TTs7Ozs7Ozs7OztTOzJFO1MsTztRO00sZTtNO00sUztLLGdCLE07SywwQjtLLGtCOztJO0c7O3lCLGtCLE8sdUI7SSxJLE07STtLLEs7O00sZ0I7O0ssSSxNOztHOztJO0k7Ozs7Ozs7Ozs7Ozs7VSxvQjs7Ozs7OztrQyxrQixTO1UscUI7Ozs7VSxrQztVLFM7Ozs7Ozs7O087Ozs7O0s7O0c7O0k7STttQjtLLHNDO0ssVzs7O0c7O0k7STtpQjtnQjtLOzs7TSxPO00sTzs7TTtNLHdDO007TztPOzs7TTs7OztXLGtDO3NCO1c7Vyx3QjtVO08sTzs7Ozs7OztPOzs7O1E7TyxTO08sSTs7Ozs7USxvQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTs7Ozs7O0c7O0ksVTthO0k7OztLLE87SyxPOztLO0ssd0M7SztNOzs7UzsyQixrQjtTLE87UTtNOzs7Ozs7Ozs7VTtVLHFCO1U7VztXOzBDO1csTTtVLG9CO1UsTztTO1MsVztTLE87UTtLLDJCOzs7TTtPO087TSxPOztLOzs7O0s7Ozs7TTtNO0ssTzs7OztLLG9COztJO0s7SyxVOzs7SztJLGlEO0k7SztLO0ssTztLOzs7SyxPO0ksb0I7SSxPO0c7O0k7STt3QyxVO0s7OztNLE87TSxPOztNO087O1U7Ozs7WTs7O1U7UztPOzs7O007Ozs7TztNLFM7TSxJOzs7TTtPO08sVTs7O087TyxPO087Ozs7Rzs7STtLLFc7SyxPOzs7ZTtlO0k7OztLLE87O0s7TTs7Tzs0QixxQjtNLE87O0s7O00sVztNLE87SztLLE87STtJLE8sVztHOztJO0ksd0M7STtLO0s7OztLOztrQyx1QjtNLE87TSxPO00sTzs7O1M7Ozs7O1UsdUI7VTtXO1c7NEI7VyxNO1csc0I7VSxPOztTOzs7O1c7WSxNO1csdUI7OzthLE07Ozs7O1k7YTtvQjs7Ozs7OztVLFc7O1M7Uzs7O1csdUI7Ozs7OztnQjtpQjs7aUI7Ozt5Qjs7Ozs7O2U7O2dCO2UsRzs7Ozs7O2tCO3lDO21CO3NDLG1COzs7O3dCOzs4RDs7d0IsTTs7dUI7Ozs7Ozs7O2tCOzs7c0Isa0I7Ozs0RDs7c0IsTTs7cUI7bUIsWTttQixPOzs7Ozs7Ozt5QztrQjs7Ozs7OztvQjs7cUI7O3VCLE07c0IsUztzQixLO3VCLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO3lDO21COzs7c0I7c0I7a0M7cUI7Ozs7d0I7Ozs7MEIsTzs7O3dCLE07O3VCOzs7Ozs7OztrQjtzQyxjO21COztpQyxlLDRCOzs7O3dCOzs7OzBCLE87Ozt3QixNOzt1Qjs7Ozs7Ozs7Ozs7c0MsbUI7Ozs7d0I7OzhEOzt3QixNOzt1Qjs7Ozs7Ozs7OztzQyxtQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCOzs7Ozs7Ozs7OztzQyxtQjs7Ozt3Qjs7OEQ7O3dCLE07O3VCOzs7Ozs7Ozs7ZTs7Ozs7bUIsa0I7dUY7bUIsTTs7a0I7Z0IsTzs7O21CO21CO2tCO2dCLE07Z0IsTztnQjs7O21CO21CLEcsd0M7bUIsWTtpRDs7O29COzs7bUI7a0I7Z0IsVTs7Ozs7OztvQjttQjt1Qjs7O2UsRzs7OztnQjtpQixLO2lCO2tCLFE7Ozs7Ozs7ZTs7O21CLGtCO3VGO21CLE07O2tCO2dCLGM7O2U7Z0IsSzs7OztxQzs7O2dCLEk7Ozs7Ozs7Ozs7OzZCLE87Ozs2QixzQjtTLE87UTtLLE8sVzs7STtLO0ssTzt1QixzQjtJLE87Rzs7STs7SywwQztLLE07STtJLE8sVztHOzs7O2lCO29CO0s7Syx3QztLO007TTs7Ozs7Ozs7VyxZO1c7OztZO1k7WTtXO1U7Ozs7TTtPOztPO087OztRO1MsTzs7Ozs7O1EseUM7OztTLDJCLE07O2M7VTtXLFE7Ozs7OztXOzs7Yzs7OztlLFE7Ozs7MEI7YzthO1csVTs7O1c7Vzs7Vzs7eUIsMEI7WSxXO1ksTztXOzs7Ozs7OztPOzs7Ozs7Ozt5QixxQjs7STs7SyxNOztJO0c7O0k7O0ssTTs7STtHOztJOztLLE07O0k7Rzs7SSxPO0c7O0ksWTtJLHFDOztLLE07O0k7SztJO0k7O0c7MkIsd0M7OztLLFk7Szs7O007O00sTztLLGU7OztHOztJO0k7Ozs7TztPO2lCOzs7O00sSSxVOztPLFc7O1EsTTtPOzs7MkIsaUI7USxJOzhCLGlCO1EsTztlOzs7OzsrQixTO2U7Ozs7VSxpQzs7Ozs7Vzs7Ozs7Ozs7O1ksTTs7Vzs7O1k7WTtZO1k7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7eUI7Ozs7MEI7Ozs7Ozs7OztjLFc7O3lCOzs7WTs7Vzs7VSxNO1M7TSxPOztLOzs7TSxPO00sTzs7Ozs7VTs7VyxNO1U7O1csTztXLE87MkQ7VTtTO00sRztPO1E7USxNOzs7O087UTtROzs7Ozs7Ozs7UTtTO1M7Ozs7O087UTtRLFE7Ozs7Ozs7USxzQjs7TztRO1E7USxVOzs7TyxpRDtPO1E7UTtRLE87UTtROzs7YSxXO2E7WTs7Ozs7Ozs7Rzs7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUM7Ozs7Ozs7Ozs7Yzs7O2UsTztjOzs7Ozs7Ozs7Ozs7Ozs7O2dCOzs7aUIsTztnQixXOzs7Ozs7Ozs7Ozs7O2UsTzs7OztVOzs7Ozs7OztjOztlOzs7Yzs7Ozs7Ozs7OztjOztlLE87ZSxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0c7O0k7STs7TTs7Ozs7TztNLFc7Ozs7Szs7Rzs7Ozs7b0I7Ozs7O3FCLG9CLE8sc0I7TSxHOzs7TyxJOzs7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0IsZ0M7Ozs7Ozs7Ozs7Ozs7OztnQixtQjtnQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEs7Z0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUIsSztpQjtpQjs7Ozs7Ozs7Ozs7Ozs7O2dCLEcsNkI7Ozs7Ozs7Ozs7Ozs7OztnQjs7OztvQixTOzZCOzs7Ozs7Ozs7Ozs7O3FCOztxQjtvQjtvQjttQjtpQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0IscUIsTzttQjtnQjtnQjs7Ozs7Ozs7Ozs7Ozs7Z0Isb0I7Z0I7Ozs7Ozs7OztROzs7Ozs7UTtTLE87O1E7O087Ozs7TztRLE87O087OztLLE07O0c7O0k7SztLO007Ozs7OztPOzs7Ozs7OztLOzs7OztLLGtCLE87O0s7O0c7c0I7O0k7Szs7Ozs7TTtLOztJO0c7O3FCLDZCO0ksZ0I7STtHOztJO0ssWTs7SztJOztLOzs7TSxROzs7TTtLO0k7STtLLFE7OztJO0k7Rzs7STtJO21COzs7O007Ozs7Rzs7STtJO21COzs7O007Ozs7Rzt3QixPLHlDO0c7O0k7O0k7SyxPO0ssTztJLE87Rzs7STtLLFU7SyxTOztLO0s7Ozs7Ozs7Vzs7Ozs7NEIsaUI7OztVLGlCOztVOzs7O1c7VztVO1UsWTs7Ozs7Ozs7OztVOztVOzs7VyxRO1U7O1U7Ozs7YyxrQztjO2M7YyxXO2E7VyxTO1U7OztVLGlCOzs4Qjs7VSxrQztVOztNOztJO0k7STtHOztJO0ssSztLLFE7Ozs7Ozs7Ozs7O21CLG1COzs7Ozs7O1MsSSxVOzs7Ozs7Ozs7O1c7Ozs7ZSxXO2M7WSxTOzs7OztVLE87bUMsYTtXLEs7O1U7VztXLHNCO2tCOzs7Ozs7OztlOztpRDs7SztNOzs7O0s7O0k7Szs7OztJO0c7O0ksWTs7SSxPOzs7STtJOzs7Ozs7Ozs7Ozs7VTs7VztXLE87VTs7O1csVztXOzs7WTthLE87YSxlOztVO1UsTzs7Ozs7Ozs7O2M7YzthO1UsTzs7OztVOzs7Vzs7Ozs7Ozs7O08sTzs7Ozs7Szs7Rzs7SSxXO0k7Ozs7eUIsNkI7YTtJLFc7OztpQjtLOzs7Ozs7TTtLO007TyxPO087O1c7Ozs7O29CLFc7TztPOzRCOzs7Ozs7Ozs7Ozs7OzsrQjs7O087OztRO1E7OztTOzs7YSwwQzthLE07WTtVLFE7VTtVOzs7O1U7OztVO2Msa0U7Ozs7Ozs7O2dCOzs7Ozs0QixPLGtDO1E7Ozs7Ozs7O00sTTs7O00sSTs7OztHOzZCLDBCOztJLGM7STtLO0s7Ozs7Ozs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7O2U7O2M7VyxPOztXLG9DO1csVzs7Ozs7Vzs7OytCLGU7USxPOzs7OztNOztJO0k7Rzs7SSxJLDZCOztLOztNLHlCO007O1M7VTs7OztTLE87O00sbUIsVztNLFE7OztNLEc7TztRO1MsTTtTLE07UTtRO1M7Ozs7WTs7OzthOztZO1c7USxHO1M7USxJLE87OztPOzs7Ozs7OztLLFk7TTs7Ozs7bUI7STtLOzs0Qix1QztNLE87Ozs7OztVOztzQzthLDBCO1UsZTtVLE87UztNOzs7STtHOztJLFk7Ozs7O007Ozs7O087Ozs7VTtVO1csVzs7OzthOzs7O2M7Ozs7OzthOzs7YztnQjs7Ozs7O2E7Ozs7YztnQjs7Ozs7O1c7WTtZO2M7OztXOztTO007Ozs7OztNOzs7O08sZ0MsK0I7TTs7OztJLE07Rzs7STs7O00sVzs7Ozs7O0k7Rzs7SSxpQjs7Ozs7SztNLG1EOzs7Uzs7O1UsTTs7O1MsWSxNO1MsTTtRO0s7TSxtQjs7OztzQzs7O0ssUTs7Ozs7NEI7OytCO0s7YTs7O0ksNEIsOEI7SSxHLHNEO0k7SSxvQztJO0s7O00sZTs7O0ssVzs7STtLO0s7Ozt3QjtJO0ssYztLOztLO087SSxPO0c7O0ksVTtJOzs7O1M7dUI7UyxzQjs7VTs7OztZOzthLE87OztnQixTOztlO1k7OztXOzs7O1csTztVO1UsVztVLFc7Ozs7Ozs7Ozs7O2EsSztjLE07OztjLEs7d0I7Ozs7YTs7OztVLE07UztTOztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1M7Uzs7VSxPO1UsTztVLE07Z0I7VTtXO2lDLHNCO1c7Z0M7O1c7O1ksWTtrQjtZO2EsTzthLE0sVzthO1k7Ozs7UztRO0s7Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7SztLLE87STtJLEksUTtJO0s7OztTO1MsZTtRO00sWTs7O1M7O1UsTztTO1MsTztRO00sVTtNLE07OztVO1c7Ozs7WSxXO1csTyx3Qzs7O00sWTtLLEc7Ozs7VTtVLE87UztNO007Ozs7Rzs7d0IsUztJLFU7STtHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJOzs7Ozs7OztJLEksVywwQzs7Ozs7O0c7OztLO0ssRyx3QztLLGE7a0I7Syw0QjtLLFk7Ozs7Uzs7O1UsSTs7O1U7O1k7aUI7bUI7O1M7Uzs7O1MsTzs7O1MsZTtTO1U7VyxPO1csb0IsTyxxQztXOzs7NkIsTyxnQztjLEksaUI7Yzs7O2U7Z0I7Z0I7Z0I7YyxXO2M7ZSxLO2UsTztlLEs7ZSxPO2UsTztlLE87ZSxPO2UsTztlLE87ZSxPO2UsSztlO2M7ZSxJLGM7OztjOzs7ZTtnQjtnQjtnQjtjLFM7YzthO1csTztVOzs7OztVOztXLHNCO1UsTzs7OzhCOzs7UztTOztTLE07O1M7O1UsTzs7O2Esa0IsUTs7O2U7Ozs7aUMsTyxrQztnQixRO2dCLEk7Z0Isc0I7ZSxPOzs7K0M7O2E7WTtTO1Msb0I7OzhCOzs7OztVOztZO2lCOzs7Ozs7YTthO1k7UyxPOztLO0k7STtHOztJO0ssTztLLE87SyxPO0ksTztHO0csZ0I7Ozs7Ozs7Szs7OztNO29CO0s7STtJO0ssYTtLO0s7O0s7Ozs7SztJO0k7Ozs7O1MsSztVO1UsSztXO1k7OztlO2U7Z0IsRyw0Qzs2QjtnQjtnQixHLG9DO2dCLFk7Ozs7b0IsTTs7O29CO3FCLFc7cUI7Ozs7Ozs7cUIsVztxQixHO3NCLE07Ozs7O2dCLE87O2M7VztZO1k7WTs7OzttQzs7Ozs7UztRO0s7OztLO007OztTO1M7UztVO1UsUTs7O1UsSztVLE87Uzs7Ozs7Ozs7O1UsTTs7Ozs7OztRO0s7SztNLE87TSxNOzs7UyxXO1MsVztRO00sUTtLO007Tzs7O1U7VSxHLDJCOzs7OztnQjtVO1M7TTtNO087OztVLEcsMEM7VSxnQjs7VTtXO1csTztXOzs7VyxPO3FCOztVO1UsUztVO1U7VyxROzs7VyxVOzs7O1c7OztVLFc7VSxLO1csTzs7Ozs7Ozs7VSxNOzs7Uzs4QixtQixtQjtNOzs7O0s7Ozs7TTtNOzs7O00sZTs7O0s7O007TSxNOzs7TTtRLHFDO00sRzs7Ozs7OzthO2M7Ozs7bUM7SyxXO0ssTztJO0ksTzs7b0Isa0I7RyxnQjs7SSxxQyxPOzs7SztLO0k7SSxPO0c7Ozs7Ozs7STtLO0s7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLGdDLFE7O0s7O00sTTtNLE07TTs7O1M7UztVLE07UyxpQzs7VTtXLE87VyxROzs7O1k7YSxNO2EsTTttQjs7Ozs7Ozs7O1MsUSxNO1M7UTtLO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksTTs7Ozs7Ozs7Ozs7VTs7Ozs7OztTO00sTzs7Ozs7STs7Szs7Szs7OztTO1M7UTtNLE07SztzQzs7O29CLDBCO0ksRztLO3dCLHdCO00sTTtNLE07SztzQzs7d0IsbUIsK0I7SSxXO29CLHVCO0k7SyxNO0ssUTtJO0s7O0ksYzs7SyxNO0k7OztLLE07SyxPOztLLEcsbUM7O0s7STtJLE87OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Rzs7STtHOztJO0ssVTtLOztlO0c7RztJLE87RztHO0k7d0Isb0I7SSxPO0c7RyxpQyx1QztHO0k7Ozs7Ozs7Ozs7Ozs7OztHOztJO0ssSTtlO3dCO0k7OztHO0c7Ozs7Ozs7Ozs7O0k7OztzQjtJLFU7SSxPO0c7cUMsb0M7O0ksZTtJLE87Rzs7O0s7Ozs7OztLOzs7STtJO0ssUTs7O0s7Tzs7Szs7Ozs7TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7OztJO0k7a0I7SztNLE87TSxROzs7TSxJLFU7Ozs2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O08sYzs7Ozs7O087UTtRLE87Ozs7O007O0s7O0c7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7O0k7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkIsTyxpQztPLE87O00sYztvQjs7TSxPOzs7OztNLE87OztJO0c7O0csZ0MsZ0I7Ryx5QixTO0csbUMsK0I7RztJOzs7Ozs7Ozs7Ozs7Ozs7RztHO0k7SyxrQjtLLFE7dUI7O0ksTTtHO0c7O0ksTztHOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7OzRCLDhDOzsrQixXLDhCO0csSSxTOztJO0k7SyxZO21DO3dCO0s7OztNOzs7O0c7O0ksVzs7SyxZOzs7TSxpQjs7SyxNO0k7SSxPLFc7RztHOztJOztJOztJO0c7OztLLEksbUI7SyxXO0k7SSxPO0c7Ozs7Ozs7STs7O0ksSSxVLG1DOzs7Ozs7Rzs7O0s7SztNLEksNkIsVTs7Tzs7USxNO3FCOzs7TTs7Ozs7OztXO1csTztVOzs7O00sRztPOzs4QixPLHFDO1E7TyxPOztNO08sTTtPLFE7O087TztPLFU7Ozs7Ozs7Ozs7Ozs7O1ksTTs7WSxNOzs7Ozs7Ozs7O1k7O2EsaUI7WSxPOztZOzs7YSxPOzs7O2dCOzs7Ozs7bUI7Ozs7b0I7Ozs7Ozs7Ozs7Z0IsTzs7O2EsTTtZLE87Ozs7Ozs7O08sWTs7Ozs7Ozs7Ozs7OztZLHlDOzs7Ozs7Ozs7WTthOzs7aUIsbUIsUTs7OzttQixPOzs7bUQ7O2lCOztjLE07YyxRO2MsUTtjLFU7Ozs7Ozs7Ozs7O3VDOzs7OztZLE07Ozs7Ozs7O1csTztVO08sTzs7OztJO0k7Rzs7STt3QixTO0ksTztHOzs7O0s7TSxJLFUseUM7Ozs2Qjs7O0s7SztNLE87SztLLFk7O007O08sa0I7TztNOztLO0ssb0I7SyxPOzs7O2U7O0k7SztPOzs7O0ssaUI7O0s7TSxNO00sWTs7TSxNO0s7STtJO0k7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007Ozs7Ozs7O1UsdUIsVTs7VSxNOzs7Ozs7Ozs7Ozs7dUI7a0I7OEMsUztLLE87OztLLDhCOzs7SSw4Qjs7Rzs7SSxlO0ksSSxnQzs7OzBCOzs7Rzs7STtLLE07SyxNOztHO0csa0MsZ0I7Ryx5Qix1QjtHLG1DLCtCO0c7STs7Ozs7Ozs7Ozs7Ozs7O0c7RyxxQyxTO0c7O0ksTztHOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLE8sMEM7SSxPO0c7O0k7a0I7Ozs7OztNOzs7Ozs7Ozs7Ozs7OztROztPOzs7Ozs7OztHOztJOztLLE07STs7SyxLO0ssVTs7Ozs7USxxQixJO2U7UyxNOzs7O1E7O1MsVTs7Ozs7UyxXO1E7USxHO1MsTTs7Ozs7SyxPOztJLE07Rzs7OztLLEksZSx3Qzs7OztPLE07Ozs7SSxPO0c7O0k7SyxNO0k7O0s7SyxHO00sTTtxQjs7STtJOzs7Ozs7Ozs7TTtPLFE7TyxNO00sVztLO0ssTzs7SSxhOztLLG1CLFE7Ozs7OztLLEksTyx5QixPO0s7STtJLGE7STtHOztJO0s7O00sTztNLE07TTt5QixZO0ssZTs7STs7Szs7O0k7Ozs7STtLO007OztLOztJLGdDLEk7STs7SztLO007eUIsWTtNLE87O29COzs7O0k7Szs7O0ssWTtLO0ssVTs7O0ssRzs7O087TztPO087Tzs7O1csVztXLE87VTtPO087O007TTs7O0k7SyxPO0ssWTtLLGdCO0ksTTtHOzs7STtJO0k7eUIsb0IsYztJLEksUyw0Qzs7Szs7OztNLE87SyxXO0k7STtLLFE7SyxVO0ssUTtJOztNLE07Ozs7Ozs7Szs7O1MsTTtRO007OztPOztPOzs7TTs7O1E7Ozs7OztzQjs7O1U7Ozs7Ozs7VzsyQjs7O1U7Ozs7O087Ozs7TTs7O1E7d0I7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNO08sb0I7TyxVOzs7Ozs7Ozs7Ozs7OzRCLDZCO1E7O007O0s7TTs7O1M7UyxHO1UsTTs7MEI7O1E7SztLO007MEIsTyxrQztNLE87ZTtNLE07SztNOzs7VTtXLE87Vzs7Ozs7OztXOzs7Ozs7Ozs7VyxPO1csTztXO1U7UztTLE87UTtNO00sTztNLFU7Ozs7Ozs7Szs7TTs7O0s7OztNOzs7VSxpQixRO3NCO1UsbUIsVTs7O1csTzs7VTtTO08sUTtLO007TTs7Ozs7O0s7O007TSxNOzs7OztJO0ssUTs7OztLLE87SyxPO0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7TTtNO0ssSSxXLHNDOzs7OztNLE07O0k7STtJO0k7SztNO08sTztPLFc7TyxVOzs7OztPLE07Ozs7Szs7STs7Ozs7Ozs7Ozs7OztJO0k7O2dCOztJLE87Rzs7STtJO0ssRyw0QztrQjtLLFk7Ozs7O1MsSSxXOzs7O1csTTs7O1M7VSxPO1UsTztTLEk7Ozs7O1UsTTs7O1M7OzthOztTLE87Ozs7O2lCOzs7O0s7O3VCO0ssTzs7Rzs7O0s7OztNLFM7Ozs7TyxNOztNLEc7Tzs7O0k7SSxPO0c7Ozs7Ozs7O00sbUIsVTs7O087UTtTLFM7UyxPOztXOzs7UyxJOzs7Ozs7O1M7VSxPO1UsTztVLE87O1k7Ozs7O1MsTTs7Ozs7OztTLE07Ozs7TSxNOzs7STs7O0k7O0ssRztNLFk7Ozs7aUM7Ozs7OztPLE07bUM7TSxNO2tDOzs7TSxXO00sRzs7O087USxPO1E7Ozs7Ozs7OztjO0ssYzs7Ozs7O1U7O1c7eUI7Ozs7Ozs7OztLLGdCO0s7O007O2dDO08sc0I7TTtNLEk7Ozs7Ozs7SyxjOzs7O00sc0I7TSxHO2lDO087OztPOztRLHNCO087O007TztRLE87USxRO1Esb0I7Tzs7Ozs7aUM7TyxPOzs7eUI7SyxPO0k7SSxXO0k7Szs7TSxzQjtNLE87Szs7Ozs4QixPOzs7Rzs7SSxJOztLO007STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLE87SSxPO0c7O0ksa0I7STs7SztLO00sZTtpQjttQjtNLFk7Ozs7O1UsRztrQjtZLFc7WSxNOzs7O3FDOzs7OztXO1ksTztZO3lCOztZO2E7YyxVOzs7YyxVOzs7YTtjLFc7Yzs7Ozs7OztjLE07OzthOzs7Ozs7Ozs7Ozs7O1U7OztjOzs7VSxPOzs7OztrQjs7OztNOzs7VTs7TSxPOztJOzs7SztNLFE7Ozs7O0ssb0I7SztLO0k7SSxPO0c7O0k7Ozs7O007TztRLE87USxPO1EsTztPLEssaUM7TztRO1EsTztRLE87TztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOztJOzs7Ozs7OztLLEc7TSxPOzs7STtHOzs7SztLO0k7SSxPO0c7O0k7SSxrQjs7Szs7TTtNLE87TSxhO007TTtLOzs7Ozs7Ozs7STtJO0ssTztLLGU7SyxROztLLEksTyx5QixPO0ssVztJO0ksZTtJO0k7O0s7Ozs7Ozs7Ozs7Vzs7WSxNOztVO087OztNO08sTztnQjs7SyxZO0ssYTtLOzs7O00sTztNLE87Ozs7NEI7Ozs7MEIsTywyQjtLOzs7Uzs7Ozs7Ozs7Ozs7Ozs7Szs7STtLO087SztLLGM7Ozs7TTtPO08sSzs7O1U7Ozs7OztVLFc7VTtVLE87UztNO007O0s7Ozs7OztNO0s7SyxPOztJO0ssTztLO087eUIsK0I7SSxZOztJO0ssUztLLFU7O0s7Ozs7Ozs7VTtXO1ksTztZO2M7Ozs7Vzs7Ozs7WSxPOzs7O1M7TSxPOzs7O007TTtPO1EsTztRO1U7O087Ozs7O1EsTzs7O0s7SyxPO0k7STtJO0k7Ozs7Uzs7VTtVO1UsTztVO3FCO1MsbUI7OEIsTyw0QjtTLGE7UztVO1csTztXLE87VTs7Ozs7O1UsTTs7O1E7Szs7STt5QixxQiw2QjtJO2dDLG1CLHlCO0k7bUI7O0s7OztNO00sTTt1Qjs7MEIsTyw0QjtLO00sTztNLE87SztrQztJO0k7O0ssbUI7O0ssTztJOztLO0s7O2M7Ozs7STtJO0k7SyxxQjtLOzs7Yzs7Ozs7STs7SyxxQixRO2lCOztLLE07STtJO0k7Szs7TTtNOzs7TTtNO0s7Szs7Ozs7O1Esa0I7OztTOzs7USxNOztPLG9COztROztTOztZLE87VztTO1c7OztZO1k7YTtjLE87YyxROzs7OztjLE07Ozs7OzthOzs7Ozs7O21CO2tCO2U7Ozs7Ozs7O2U7Ozs7YSxNOzs7O2E7O1k7VztROzs7TyxNOzs7OzttQjtLLHFCOztNLE07O0s7O0k7STtLOzs7UztTO1E7TSxPO007UTtVO00sTyxXO007USxXOzs7Ozs7TSxNOzs7O00sTTs7Ozs7SyxNOztJO0k7O0s7O0k7O0s7Szs7Ozs7Ozs7Ozs7STtJLGtCO0k7Rzs7SSxJLEs7Ozs7TTs7TztPLFM7TyxVOzs7O087USxTO1EsTTtRLGlCOzs7O087USxROzs7TSxJOzs7OztPLE07Ozs7TztRLE87USxPOzs7VyxXLG1CO1c7WTthLE87b0I7OztXLGM7VTtPOztNO08saUI7TyxtQjtPOztVOztPOztVOzthO08sTTs7O08sTTs7O08sdUI7Ozs7Uzs7VSxVOzs7Ozs7Vzs7WSxTO1ksTztjO1ksTTtXLHNCLE87Vzs7Ozs7Ozs7O1csTTs7O1MsTTs7OztPO1E7Ozs7OztNLE07O0s7Ozs7TTs7Ozs7Ozs7Ozs7STtLLE87SyxPO0s7Ozs7Ozs7Ozs7STs7Ozs7SztJO0ksTztHOzJCLCtCOzs7SyxZO0s7SztLOztNLFE7OztNOzs7O087UTs7Z0MsaUM7UyxNOzs7Ozs7OztPLE07OztNOzs7O1U7VyxROzs7VTtTO08sZ0I7TyxPOzs7O087USxPOzs7Vzs7Ozs7WTtZOzs7Ozs7VTtRLE07TTs7TyxNOzs7TTtPOzhCLG9CLGM7TyxjO08sTztPLE87TTtNOzs7O087O1U7OztPLGU7TTtNOzs7O1U7O1M7TTs7OztVLFk7c0I7O1UsTTs7UztNOzs7O1U7Vzs7Yzs7Ozs7O1c7Ozs7Ozs7VyxNOztTO007TTs7O1U7VSxPO1M7TyxTO087Ozs7Ozs7OztNOztLLE07STtJLE87Rzs7SSxZO0k7STtJOztJO0k7STtJLFk7OztLLE07OztJO0s7SyxTO0k7Rzs7STt5QixtQztJO0ssUTs7O0k7Rzs7STtLLFE7SyxVOzs7b0M7Ozs7O3dCOztNOzt1Qjs7O0ksTTtHOztJO0s7Ozs7Ozs7Ozs7O0s7aUIsTzs7SyxNOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtJO2tCO0k7O0ssTztLLFE7Ozs7OztPLEc7Ozs7O00sRztNLEc7TSxHO00sRzs7Ozs7SyxNOzs7STtHOztJO0k7Szs7TSxVO007Ozs7Ozs7Ozs7OztXLE07OztVOzs7VztXOzs7VTs7Ozs7Ozs7Ozs7TTs7SyxNOztHOzs7SyxJLE0sMEM7O007Ozs7O007Tzs7OztPO1M7OztPO1EsTztRLHVCOzs7O08sTTs7Ozs7c0I7OztNO08sTTtNOzs7VSxXO1U7VyxZOzs7O2E7O2MsUztrQzs7Ozs7O1c7Ozs7a0M7OztTO087UztPOzs7VSxnQjtVLE87UztNO007TyxPO08sTzs7OztNLEs7TyxNO007TyxPO08sTzs7O0s7O00sdUIsZTtNLFU7OztNO0s7STtJLE87Rzs7O0k7STtJO0ksSSxnQjt5QixvQixjO0k7SyxTO0ssUTtLOztLOzs7O00sTTtNLFE7SztJO0k7SyxjO0s7OztLOztNLE07Ozs7O0k7SyxhOztJOzs7OztTO1M7VSxXO1U7Ozs7OztVLE07OztRO0s7OztLO0s7TSxXO007Ozs7OztNLE07O0k7STs7Ozs7Ozs7STs7Ozs7O2E7Ozs7Ozs7OztJO0ssTztLLE87OztLOzs7Ozs7OztROzs7Ozs7Ozs7SztJO0k7SSxjOzs7SyxNOzs7STtLO0ssVztJO0s7O1E7Ozs7Ozs7SyxNOztJOztPO0k7Szs7UTs7Ozs7OztLLE07O0k7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7STtJOzs7Ozs7Ozs7Ozs7O0k7SyxXO0s7SyxXO0k7STtJOzs7O0ssTztLLE87Szs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtHOztJLFk7O0s7O007c0M7SyxXO0k7SSxPO0c7OzRCLE8sc0M7STtJO0k7Rzs7STtLOzs7UyxXO1MsTztRO00sSztNLE07TSxXO0s7SztLOzs7OzRCOzs7Rzs7STs7Ozs7OztjO2UsTztlO2UsTztjLE87O2E7Rzs7SSxzQzs7cUIsWTtJLE87Rzs7STs7O1EsTzs7USxPOzs7Ozs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPO2dCLE87Ozs7eUIsTzs7O08sTzs7O08sTzs7O08sTzs7OztRLE87Ozs7Ozs7O087O1E7VTs7TyxPOzs7Ozs7Ozs7Ozs7Tzs7O3dCLE8sMEM7O3dCLE8sMEM7TztPLE87OztPOzs7d0IsTywwQzs7d0IsTywwQztPO08sTzs7Tzs7O1E7d0IsTywwQzs7d0IsTywwQztPLE87O087Ozs7O1E7OztXLE87Ozs7Ozs7OztROztXLE87VTs7O1csTztvQjs7O1U7TztPOztRO1MsTzs7UyxPOztTLE87USxPOzs7Ozs7Ozs7Ozs7TztRLE87O1EsTzs7USxPO08sTzs7OztPOzs7OztTOzs7O2EscUIsVzthOzs7O2tDLFM7OztZO1UsUTs7Ozs7O2M7O2UsVTs7O2MsRyxpQztjOzs7a0I7a0IsTztpQjtjOzs7O2dDLGtCLFM7Ozs7O2Msb0IsTztjLEcsbUM7YztlOztrQjs7bUIsTztrQixPO2lCOzs7a0Isa0IsUTs7Ozs2RDs7b0IsTzs7O21EOztrQixPO2lCO2M7MkI7OztVOzs7Ozs7Ozs7O1ksVztZLE87VztRO3VDLFk7Ozs7Ozs7WTs7Ozs7Ozs7VztROzs7OztXO1csTztVOzs7O08sTzs7O08sTzs7Ozs7Ozs7O08sTzs7Ozs7Ozs7O087Ozs7UTtVOzs7Ozs7USxPO08sTzs7Ozs7Ozs7OztPOzs7O1E7d0IsTywwQzs7O1csTztVO08sTzs7Tzs7OztRLE87USxPO08sTzs7Ozs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7OztRLE87Ozs7Ozs7Tzs7OztROztXOzs7O1k7Vzs7dUI7dUI7O3VCO3VCOzs7OztXOzs7Ozs7OztXOzs7Ozs7OztXOzs7Ozs7OztRLGdCLE87UTs7Ozs7Ozs7O3dDO08sSSxxQjtPLE87OztPLE87OztPO087UTsrQixhO087c0MsUztPLE87OztpQjtpQjs7TyxxQjtPLE87O087O1E7Ozs7TyxPOzs7Tzs7UTs7VyxZLE87O1csTzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7O0s7TSxNO00sTztNLFU7OztNLEksVTs7OzZCOzs7Ozs7Ozs7Ozs7Ozs7TyxjO3FCOztPOztNOztLOztJO0c7O0k7SSxPO0c7O0k7OztLOztJO0c7O0k7OztLLE87O0k7Rzs7STs7Tzs7Tzs7Ozs7OztHOztJO0ksb0I7RzsrQiwwQzs7STtJLHdDO0ksWTs7Ozs7USxHLG9DO1EsRyxvQztROztVOzs7Vzs7O1k7OzthOzs7YzttQjtTO1UsVTs7O1c7OztVOzs7O2dDOzs7UTs7O1E7Ozs7O1EsTTs7STtHOztJLEksMkIsSTs7OzsrQjs7Ozs7Ozs7OztPLEc7OztXOzs7OzttQjs7OzthLG9DOztJO0c7NEIsdUM7b0MsdUM7O0k7Ozs7Ozs7TztTO1c7USxJLFUsNkM7Ozs7K0I7Ozs7OztJO0c7O0k7Ozs7Ozs7O1E7OztTO1E7Ozs7O0k7Rzs7STtJLGdCLG9DO0ksWTs7O0ssRyxvQztLLEcsb0M7SyxHLG9DO0ssRyxvQzs7STtHOztJO2dCOztJO0c7O0k7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7O0s7O0k7Rzs7SSxPO0c7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7STs7O0k7Ozs7O3VCOzs7STtHO3FDLHdCOztJO0k7Ozs7Ozs7MkI7O1MsSSxXLGlDOzs7aUM7Ozs7Uzs7Ozs7O2M7O2UsbUI7ZSxPOztjO2E7Ozs7VTtZOzs7Ozs7a0YsZTs7UyxPOzs7Ozs7Uzs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Uzs7Ozs7O0s7O0c7Rzs4Qjs7STs7Tzs7Tzs7Tzs7TztlOztHOztJOztHOztJOzs7O29CLGdCOztvQixnQjs7Ozs7O0k7RztHOztJLFU7O0ksSSxXLDRCOzs7NEI7OztHOzs7O0ssSSxxQjtLLE87STtJLE87Rzs7SSxPO0c7O0ksb0I7SSxPO0c7OztLO0s7STtJLE87Rzs7OzJCLE8sMEI7SSxPO0c7O0ksbUI7Rzs7SSxPO0c7O0k7O0ksTztHOzs2QixtQix3QjtJLE87Rzs7cUIsd0I7SSxpQjtHOzJCLGE7O0ksTztHOztJLE8seUI7Rzs7STtrQzs7OzJCOztPOztPOzs7O1E7UTs7Vzs7TyxzQjs7Tzs7USwwQix1Qjs7USxzQjtPLHNCOzs7Ozs7Ozs7OztRO1EsSSxVO1Esc0I7O087Ozs7O1csc0I7O1E7VTtRO2tDO1E7USxzQjtPLHNCOzs7Tzt5Qix1QjtRO1MsTztTLFE7OztTLE87UztRLHVDOztPOzs7USw0Qix1Qjs7OzZCO1E7TyxzQjs7Tzs7O1Esc0I7TyxzQjs7Tyx5Qzs7OztTOzs7VTs7MkI7Ozs7O087OztRLHNCO1E7Ozs4QjtPLHNCOztPOzs7USxzQjtPLHNCOzs7OztRO1M7Ozs7O087O1E7USxzQjtrQztROzs7WTtZOzs7O1k7VztXLE87O1E7NkI7TyxzQjs7Tyw4QjtPLHNCOztPOzs7O1E7UTtrQzs7UTtRLDBCO08sc0I7O087O1EsVTs7USxzQjtPLHNCOztPOzs7Ozs7NkI7OztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRLDBCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7Ozs7UTtRO2tDOztRO2tDOztRO1EsMEI7TyxzQjs7Tzs7O1E7UTtRLDBCO08sc0I7O08sZ0M7TyxzQjs7Tzs7Ozs7UTtRLDBCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Tzs7O1EsNEM7O1E7USxzQjtrQzs7UTtRLDBCO08sc0I7O087Ozs7UTtRO1EsNEI7TyxzQjs7TywwQztPLG1CLE87O08sOEI7TyxzQjs7TyxvQixVOzs7Ozs7TztPLHNCOztnQzs7O08sa0IsTzs7Tzs7Tzs7Ozs7UTtRLG1CO2tDOztRO1Esc0I7USwwQjtPLHNCOztPLGdDO08sc0I7O087OztRO1EsNEI7TyxzQjs7Rzs7STs7OzJCOzs7Tzs7O1M7Ozs4Qjs7O1k7O1k7O1k7O1k7O29DLG1CLFU7YSxVO2E7WTs7WSx1QixPO1k7OztZOztZOzs7O2dCO2dCO2U7YSxhO21DO2EsTzs7OztnQjtpQjs7a0I7a0I7a0I7MEM7O2lCO2tCO2tCOzBDO2dCOzthO1k7OytCOztZOzthLGlEO2EsWTs7OztnQjs7YTtZOztZOzs7O2EsZTthO1k7b0I7O1E7USxPOztPLDRCO08sc0I7O087Ozs7UTtRO2tDOztRO1EsMEI7TyxzQjs7Ozs7OztXO1csc0I7VTs7O087c0M7OztXOzs7Ozs7OztnQjtnQixzQjtlOzs7Ozs7O21COzs7Ozs7TztRLE87O087O0c7NEI7eUI7O0ksdUM7SSxzQjtHOztJO0ksc0I7Rzs7STs7O08sNkI7TyxzQjs7MkI7OzZCOztPOztPLDRCO08sc0I7ZTs7Rzs7SSxpQjtJLDBCO0ksc0I7Rzs7STs7O08sc0I7O08seUI7TyxzQjs7Tzs7OztRO1E7a0M7O1E7USwwQjtPLHNCOztHOztJOztLOztNLE07TTtNO007TSx1Qjs7OztLOztNO00seUI7OztJO0c7O0k7OztLO0ssWTtLO0k7Rzs7STtJOzs7O1EsNkI7USxxQjs7MkI7O1E7Ozs2QjtTLE07UztTO1EsbUI7O1E7Ozs7OztZLHFCOzs7UztTLG9CO2lDOztTO1Msd0I7USxxQjs7UTs7OztTO1M7O1k7O1EscUI7Ozs7OztHOztJO3VCOztJO0c7O3FCLGE7STtLLGlCO0s7STtLOzs7Uzs7O1U7VTtVOzs7VTs7UztVLGU7VTtTOztNLE07TSxROzs7O0s7TTs7OztXOzs7c0I7VTs7OztPLFE7TSxHOzs7Ozs7OztTOzs7VTtTOzs7STtHOztJOzs7Ozs7SSxrQjtJLDRCO0k7SywwQjtLLHdDO0c7O0k7SztLLE07cUIscUI7STtLLE0sVztLLFEsVztJO0c7O0k7STs7bUM7OztROzs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Ozs7UTs7USxvQztRLFE7Ozs7Rzs7STtnRDs7Szs7O0ksSTs7Ozs7UztTO1E7a0I7Ozs7Rzs7O0s7Szs7Ozs7Ozs7Ozs7OztTOzs7Ozs7O0k7O0c7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qix3Qzs4QiwyQztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7RztJO0k7STs7O1EsTTtPO0k7OztRLE07TztJOzs7USxNO087STs7O1EsTTtPO0k7OztRLE07TztxQixzQyxZO3FCLHlDLFk7eUMsNEI7NkIsd0I7O0k7O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87ZSxPOztHOztJOzs7O1EsSSxtQiw4Qjs7O21DOzs7Ozs7OztZLEksbUIsOEI7Ozt1Qzs7Ozs7WSxJLG1CLDhCOzs7dUM7Ozs7OztRLEksbUIsOEI7OzttQzs7O087OzJCOzs7Tzs7O21COztPOztHOztJO3lDOztJLE07Rzs7SSxPO0c7O0k7Rzs7SSxZO0ksaUI7Rzs7STtLLFE7Szs7SztJO2lCOzs7O0c7O0k7SyxPO0ssUTs7Ozs7TSxHLHVDOzs7SSxNO0c7O0ksTywyQjtHOztJO0ksTztHOztJOzRDOzs7OztNOzs7STtHOztJOzRDOzs7O3dCOzs7O007OztJO0c7O0k7Ozs7aUM7O0c7O0ksSSxXLDZDOzs7OztNLE07Ozs7O0ssTTs7O0c7Rzs7STs7SyxNOztJO0c7RyxzQjs7STtJOztNOztPO2M7VTs7Szs7Ozs7O00sTTs7Ozs7SyxNOzs7Rzs7STtJO0c7O0k7SztLOzs7Ozs7Ozs7O08sTTs7Ozs7O0c7O0k7Ozs7Uzt1RDtTO1E7SSxPO0c7O0k7Ozs7Uzs7VTs7OztXLE87VyxROzs7O1c7WSxJO1ksVTsyQzs7OzthLHFCO2MsVztjLE87Ozs7Ozs7YyxLO2UsVztlOztnQixNO2U7O2dCO2dCOztnQixzQjtlLE87Ozs7WSxtQjthLFc7YSxPOzs7Vzs7VSxNOztTO1E7SSxPO0c7RztJO0k7STtJOztJOzs7OztHOztJO0k7Ozs7STs7SyxzQjtLLE8sa0I7STtJLEc7SyxNOztJLFM7Ozs7O00sTTs7O0k7Rzs7O0ssK0IsTztLLE8sNEI7STtJLE87Rzs7STtLOztJOzs7Ozs7OztTOztVLHNCO1UsTTtrQjs7Ozs7Ozs7Ozs7Ozs7UztTO1Usc0I7VSxRO1UsVTs7O1UsTzs7O2E7OztjO2M7YSxzQjtZO1M7Ozs7Uzs7O1Usc0I7VSxLO1Usb0I7VSxPO1UsVztrQjs7O1M7O1UsTztVLE07O1M7VSxPOzs7YTthO1k7VSxNOzs7YTtjLFE7OzthOzs7Ozs7O2MsVztjO2UsYzs7Ozs7Ozs7Ozs7OzthO2M7ZSxNOzs7ZTtjOzs7Ozs7YTtjLFU7OzthO2E7WTtTOzs7OztTO1U7O1csVTs7OztXLE87VyxXO21COzs7UyxJLGtDO1M7Ozs7Ozs7STs7SztLOztNO00sUztNO007TTtPLE87TyxPO007TTs7SztJO0ksTztHOztJO0k7SyxJLEksVzs7Ozs7O0s7OztPLG1CLFU7O08sTTs7O0ssVTtLLEcsK0I7OztHOztJLEksaUM7SSxPO0c7Rzs7OztJLFk7c0U7SSxNO0c7OztLLDRCO0k7O0s7TSxTO007d0IsTTs7SztNOzs7VTtVLE8sa0I7UztPLE07Ozs7O007O3lCLG1CLE8sd0I7TyxjO00sTTs7Ozs7Ozs7SztLO0k7Ozs7b0IsTztNLHNDLE87TSxHOzs7TyxJOzs7O0s7MEIsb0IsMEI7SztNLFc7TTtNOzsrQjs7OytCOztNO00sTztLO0ssTztJOztLLGtCLE07OztNLG9CO007O0ssTztJOztLLEc7TTtNO087TyxZOztPOzttQjtPLE87Ozs7STs7SztNLE87TSxPO00sVztLLE87STs7SyxXO0ssVzswQixPLCtCO0s7TSxTO00sd0I7SyxPO0k7O0s7O3VEOztLLGdCO0ssTztJOztLLHdDOztLLE87STs7O0s7Szs7OztLOzs7Ozs7OztPLEk7Ozs7USxJOzs7O1M7aUI7VTs7O2E7O2M7YzthO1k7VSxNO1MsTTs7O1EsRywwQjswQjs7Ozs7Tzs7O1M7O1UsVTs7OztXLE07VTs7O1c7VTtXOztXOzs7VTs7O1M7Ozs7OztNLGM7Ozs7Ozs7Ozs7O1M7Uzs7Ozs7Ozs7O08sTTs7OztLLEc7TTtLOztJOzs7SSxJLFcsa0I7Ozs7OztLLE07OztHOzswQixjOzBCLGM7O0ksTztHOztJOzs7O0s7O0k7Rzs7Ozs7STtzQixPLGMsZ0M7O0ssTyw2QixPLDBCO0k7SSxPO0c7OztJOzs7Ozs7TyxHOzs7O1ksa0M7O2EsTTs7WSxnQjtXO3dCOzs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7Ozs7VSxrQzs2Qjs7VTtTO3NCOzs7Szs7O1M7UyxPO1E7TSxNO007TTtNO007OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsTztROzs7Uzs7O1UsUTtTOztXOztZLE87WTs7WSxPO1c7VztXLFc7VyxPOzs7VyxvQjtXOzs7OztvQjtXOztVLGE7dUI7VSxlOzs7Uzs7Ozs7Ozs7Ozs7O1E7TSxhOztNOztNLFU7O087Ozs7OztXO1c7VTtRLFE7USxPO1EseUM7USxPO1Esc0I7TyxHO1EsZ0I7UTs7Ozs7O1k7WSxPO1c7UTs7Ozs7TSxXO007Ozs7O0s7O0k7SSxtQjtJO0c7OzZCLGU7NkIsZTs7SSxRO1U7SSxXOztLOzs7UzsrQzs7UTtLLE87O0k7Rzs0QixTOzs7Ozs7STtJOzs7Ozs7Ozs7Ozs7OzRCLGtCLDhCO1MsTzs7UyxrQztTLFM7Ozs7Ozs7O1MsTzs7O1M7Ozs7Ozs7Ozs7O0s7O0c7O0ksSSxXLHVDOzs7O0s7O00sZ0I7SyxNO3NDOzs7RztHO0k7STs7SSxtQixPO0ksVztHOztJO0k7OztHOztJO0k7Ozs7TSxJLDBDOzs7Ozs7Ozs7SyxPOztHOztJLFk7O0k7Rzs7SSxrQjtHOztJLHdCO0c7OztLOztJO0ksTztHOzs7O0s7O0s7TTs7SSxJLGE7O0ssK0I7SztJOztLOztrQjs7O0k7SSxvQixPLHVCO3VCLE8sdUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7OztTO1M7Ozs7OzttQjs7O1E7SyxXOztLLHdCO0ssZTs7bUI7TSxNOzs7Ozs7O0s7O08sTTs7Ozs7SztLOzs7O087O1EsTztRO1U7YTs7Tzs7O087USxNOzs7O1c7VztXO1c7VztXOzs7VTtPOztPOztRO1E7Ozs7Ozs7Ozs7O1M7OztVO1U7O2E7YyxPO2E7YyxZO2MsTzthLE87WTs7VTtTOzs7O08sTTs7O08sTztRLE07TzsrQixPLDJCO1EsZTtRLE87USxjO087TztRLFU7OztXOzRCLFk7VyxlO1c7Ozs7OztxQjs7O1U7Tzs7aUIsZ0M7aUI7OztnQjs7OztPOzs7UTs7O1M7VTtVO1MsTTs7Ozs7Ozs7O087Ozs7O1MsSztVLE07c0I7OztRO1MsYTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE07OztROztTLE87UyxNO1M7USxNOzs7Ozs7Ozs7Ozs7Ozs7UyxNOzs7Ozs7Ozs7Ozs7Ozs7WTs7Ozs7dUI7Ozs7OztXLHVCOzs7Ozs7Ozs7Ozs7OztPLEc7UTtvQjs7O1M7Ozs7VTtRLFc7USxNOzs7O1E7UyxPO1MsTztTLE87UyxPO1MsSztROztPO087USxnQjs7O1c7Ozs7O1c7O1U7UTs7UTs7OztTOztTLFU7Ozs7UztTOzs7WTthLE87YTtlOzs7O1k7VztTLE07UTtRO1MsVTs7OztRO1E7O1E7UyxNO1MsTTtRO1MsTTs7OztVLFc7VTtVO1csTztXLFU7O1UsTTs7O1M7Ozs7Uzs2QixZO1UsUTs7O2EsWTs7Ozs7ZSxHO2dCLE87OzthLE07O1k7VSxNOztVLE07OztRO1M7Ozs7Ozs7UTtTLFU7OztTOzs7Ozs7UTtPO087TztPOzs7UTs7Ozs7YTthO2E7YTtjLE87YyxjO2M7d0I7YTs7Z0I7O2E7YSxNO1k7Uzs7Ozs7Ozs7Ozs7VztXOzs7Ozs7OztnQjs7OztnQixNOzs7WTs7VTs7UTs7OztZO1k7VztROztPOzs7VztXOzs7Ozs7cUI7OztVO1EsTztPOztpQixnQztpQjs7O2dCOzs7OztPLEc7OztTLE07O087O3NDO1E7dUI7UTt5QixPLDZDO1EsZTtRLGdCO08sRztROzs7O1U7O087USxXO1EsaUI7OztXOzs7Ozs7Ozs7VTs7UTs7O1MsbUIsbUI7UTs7Tzs7O087USxNO087OztTO1MsTTs7O3dCOzs7UTs7O1MsYztTOzs7Ozs7O1c7VztZLFE7OztXO1k7Ozs7O2M7Ozs7Ozs7O2MsTTs7Ozs7OztXO1c7Vzs7WSxPO1c7Vzs7OztXOztZOzthO2EsVTs7O2dCLHNCO2dCO2lCLE07OztnQjtnQjs7WTs7OzJCO1k7YTtjOztjOzs7Ozs7OztlOzs7Ozs7YztlLE87ZSxJO2M7Ozs7OztXOzs7O21COzs7VTs0QixtQztPOzs7O2tDLDBDO1E7Ozs7Ozs7Ozs7OztPOzs7OzttQjs7Ozs7Ozs7Ozs7OztPOztRLFM7USxnQjtPO2dDOzs7O1c7Vzs7Ozs7O3FCOzs7VTtPOztpQjtpQjs7O2dCOzs7OztPO1E7O1M7UztTLGE7UTtRLFU7O1E7OztZLGlCLFM7WTtXO1M7UztTO1M7OztRLEksb0I7UTs7Ozs7O1k7WTtXO1E7Ozs7WTtZO1c7UTtROztTO1M7OztZO1k7YTs7O3NDLHNCLGE7aUIsTztnQjthOzs7Ozs7Ozs7O2UsSztnQjtpQixPO2lCO21CO3NCOzs7Z0IsTTs7Ozs7OztlO2dCLFc7Z0I7Z0I7Ozs7Ozs7Z0IsTTs7O2U7Ozs7Z0M7YSxNOzs7VztTO1MsTzs7OztROzs7Ozs7a0I7Ozs7Tzs7UTtROzs7Vzs7cUI7cUI7b0I7O1U7TyxlO087OztXOzs7YSxNOzs7OztXO1k7Z0MsUzthOzs7Ozs7d0M7c0M7OztXO1U7UTtROzs7UTs7Ozs7WSxNOzs7Ozs7Ozs7OztTO1UsTTtTOzs7O1Msa0I7Uzs7Ozs7O21COzs7Ozs7Tzs7Ozs7Ozs7UztVLE07UztVLFE7Ozs7Uzs7Ozs7Vzs7UyxjOzs7VTtVO3FCO1U7VTtVOzs7Ozs7Ozs7O1MsTTs7Ozs7TztRLE07TztPO1EsVTs7OztPOztPO08sVztPO3NDOzs7O1c7OztZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1csTztVO087OztPO1EsTTtPOztRLFU7OztROytCLE8sNEI7USxRO1EsTztRLE87USxVOzs7USxHO1M7VSxPOzs7YTs7Ozs7YyxROzs7O2U7O2dCLE07ZTs7OztjLFU7Yzs7YTtZO1UsVTs7O1UsVztVOzs7YSxPO1k7VSxzQjtVLE87VTtVLHVCOzs7YTthO1k7VSxTO1M7VSxNOztTOzs7OzthO1k7VSxJO1U7UyxPOzs7Ozs7Ozs7Ozs7OztPLE07OztPOztRLEs7USxPO087Z0M7Ozs7VztXOzs7Ozs7cUI7OztVO087OztPO1EsTTtPLEksSSx5Qzs7UTs7O087O1E7UTtPOzs7Ozs7Ozs7O087Ozs7Vzt3QixPO1csTTtVO1E7Tzs7O08sTTtrQzs7O087USxNO087USxXOzs7Ozs7O1csc0IsUTs7WSxNOzs7VyxPOzs7Ozs7Ozs7VTtPOzs7OztJO0k7OztlOztLOzs7Ozs7OzBCLFM7STtJLE87O0c7OztJO0k7SztLO0s7STtLO0s7SztLO0s7Ozs7OztLO0s7O0c7O0k7OztlOzs7STtJO0s7OztJLE87Rzs7STs7O2U7O0s7Ozs7TTtPLE07OztLO0k7SSxPO0c7OztLO0ssTztJO0ksTztHOzs7Szs7Ozs7O007TSxPO007K0M7SyxPO0k7SSxPO0c7O0k7STtLLEs7SztJO0s7Szs7SSxXO3FCLE8saUI7STtJLEc7Syw0QztJLEk7O0s7Ozs7Ozs7OztLLGtCLHFDO0s7TSxLO00sTztNLFU7TTtROzs7Ozs7TTtROzs7Ozs7SztJO0k7SyxROzs7O0k7Rzs7STtLLGlCO0ssUztJO0k7SyxLO0s7SyxPO3FCLE8saUI7STs7O0k7RztHO3dDLGdDOztJO21DOztHOztJO0ssTztLLFE7SyxPOztLO0s7SyxPO0k7STtJO0k7SSxPO0c7O0k7STs7Ozs7Ozs7VTs7OytCLDhCO1csTztVLFc7Ozs7Ozs7O1ksa0I7WSxXO1k7bUM7YSxPO1ksTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1Usc0M7VSxXOzs7O2M7Ozs7ZTtjO2U7ZTtnQjtpQjs7O3FCO29FO3FCO29COzRCOzs7Ozs7YzthO1UsTzs7O1UsTzs7O1UsTzs7O1U7VyxPOztVOztVOzs7OztjO2Msd0I7OzthO1csTztVLFc7Ozs7Ozs7Ozs7O1UsdUM7VSxXOzs7Ozs7Ozs7cUI7Ozs7Ozs7O1U7Ozs7Vzs7O2M7OztpQjs7O2tEOztpQjtpQjs7aUI7O2lCOztxQzt5Qjs7YTtXLE87VTtXOzs7O2U7ZTs7O2M7WSxPO1k7Ozs7OztVO1csTzs7VTs7Ozs7Ozs7O087TyxXOzs7O007O0s7O0c7O0k7STs7OztROztTOzs7WTs7Ozs7b0MsOEI7ZSxPOztlOztnQjt1QyxpQztlLE87Ozs7Ozs7Ozs7bUI7bUI7a0I7ZSxPOztlOztlOzs7O3VCOztZO1c7USxPOztROzs7OztRO1MsTzs7UTtnQjs7O0c7O0ksWTs7STtLLE87O0k7Rzs7STs7O0k7OztJOzsrQiw4Qjs7SSxVOztLOztNLFc7O00sTTtLO0k7SSxPO0c7OztLLGU7O00sTTtLO0k7SSxPO0c7O0k7Ozs7O00sTzs7O0k7Rzs7STtJOzs7OztTOzs7VTtZOzJCO2U7VTtVO1MsTzs7Uzs7VSxzQjtVLFc7UyxPOztTOzs7VSxVOzs7VTtZO1UsTztTO1Usc0I7VSxNO1MsTzs7OztLLE87O0c7O0k7STs7Ozs7Ozs7O1U7OztXO1csYztVLE87Ozs7Uzs7O1U7WTsyQjtlO1U7VTtTLE87Ozs7Ozs7O1M7O1Usc0I7VSxXO1MsTzs7Ozs7O1M7OztVO1U7UyxJLHVDOzs7OztVLE07Ozs7Uzs7OztVOzs7O3NCO1M7UyxJLHlDOzs7Ozs7VSxNOzs7O0ssTzs7Rzs7STtJOztLO00sUztNLEc7TyxXO00sWTs7Tzs7O1E7USxZOzs7Ozs7TSxXO00sVzs7O0ksTztHOzs7STtJO0k7SSxVO0k7SSxZOztLOzs7VztNLFU7OztLO0s7SztLO0s7TSxVOzs7TTtnQjtLO00sYztNLFc7TSxrQjtLLE07O0ksTTtHOzs7SztLO00sTztNLEs7SztNOztTOzs7UyxHLG9DOzs7Ozs7OztPOzs7Ozs7Ozs7Ozs7O007OEIsaUM7TyxROztNLE87O0k7O0s7TSxPO00sSztLOzs7Ozs7Ozs7O21DLGlDO1csRztZOzs7Ozs7Ozs7O2tDLHNCLG9CO2UsTzs7O2U7OztrQyxzQixvQjtlLE87Ozs7O2U7Ozs7Ozs7Ozs7Ozs7ZSxPOzs7Ozs7Vzs7O007O0s7STtJO0ssTztLLEs7SSwwQztJO0c7OztLLFc7SyxXO1E7TSxNO0s7SyxPO0k7SSxJLFcsMkIsYzs7OztLO0s7O0c7Rzs7STs7SyxHLG9CLE07Ozs7Ozs2QixPOzs7OzZCLE87Ozs7aUMsa0IsZTtTLE87OzhCLE87OztTO1Msa0IsTzs7Uzs7Ozs7Ozs7OztNLGtCLE87O007O0s7STtxQjtJLEk7Ozt3Qjs7O0k7Rzs7STs7Yzs7K0M7YzthOztHOztJOztjOzREO2M7YTs7Rzs7OzttQixPO0ssc0M7Ozs7NEI7OzhCOzs7Ozs7cUIsWTtJLCtCO0c7O0k7STs7Ozs7Ozs7SztNO007Ozs7Ozs7Ozs7USxNOzs7Ozs7O0c7O0k7STs7Ozs7OztVLHdDO1UsVzs7Ozs7Ozs7Ozs7Ozs7O1M7O0s7O0c7O0ksWTs7OztLLGdDLFU7Ozs7OztNLGM7Ozs7TyxzQyxPO087USxXO1E7UyxXO1M7VSxXO1U7VyxXO1csUyxPOzs7Ozs7Ozs7Ozs7OztPOztNOztLOztJO0c7O0ksa0IsTzs7SSxJLGtCOzs7Ozs7Ozs7TztPO08sTTs7Ozs7Rzs7STt1QztHOztJLDJCOztLOztJO0ksVTtJO0k7Rzs7STtJO0s7O0s7STtLOzs7Szs7USxXO1E7TztLO0k7STs7O0s7NkI7Ozs7Tzs7UTs7O1E7Ozs7OztZOzthLFc7eUI7YTs7YSxNOzs7Ozs7WTs7YSxXO3NCOzs7Ozs7TztPOzs7OztpQjs7Ozs7O1EsSSwwQztROztPOztRO1E7USxTO1E7O2U7O1EsVTs7Ozs7UyxHOzs7OzttQjs7O21COzs7Ozs7O087O1E7Ozs7O2tCOzs7O087TztROzBDLG1DO29DLHVCOzs7WTtZOzs7Ozs7O1k7VztTLHVCLDRCO1M7dUIsa0IsbUM7bUMsa0M7aUMsd0I7OztZO1k7Vzs7O1k7O2U7O2U7dUI7O1c7OztZOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlOztlO3VCOztXOzs7WTs7ZTs7ZTt1Qjs7Vzs7O1k7YSxrQjthOztZO1k7Vzs7O1k7YTs7OztlOzs7ZTs7O2U7OztlOzs7ZTs7O2U7OztlOzs7ZTs7Ozs7O2U7Ozs7Ozs7OztlOzs7O2U7OztlOzs7ZTs7O2U7OztlOzs7Vzs7O1ksNEI7OzthOzs7WTtXOzs7WTs7Ozs7WTtXOzs7WTthOzs7O2U7OztlOzs7Ozs7ZTs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7OztlOzs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7ZTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7Ozs7O2U7OztlOzs7Ozs7ZTs7Ozs7O2U7Ozs7Ozs7O2U7Ozs7Ozs7OztlOzs7O2U7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZTs7O2U7Ozs7Ozs7O2U7Ozs7Ozs7ZTs7OztlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2U7O2UsTTs7Vzs7O1c7O1M7Ozs7Ozs7USxNOzs7TztPOzs7Ozs7Ozs7O1U7O1c7Ozs7Ozs7MEI7Ozs7Ozs7OztPOzs7UTs7O2lCO1E7Ozs7O1E7MEI7Tzs7Ozs7Ozs7OztPOzs7Ozs7Ozs7OztROzs7UyxXO1E7Ozs7Ozs7Ozs7TyxLO1EsTTtPOztRLE87USxPO21CO1EsTztRLE87USxPO1E7cUI7USxPO1EsTztRLGE7UTtRLE87USxPO1EsUztRLE87USxNO1E7YztRLE87USxlO1E7VTtRLFc7Tzs7Ozs7Ozs7OztPO1EsTTtPOzs7Vzs4QjtXOztZO1k7O1csUztXOztXOztZO2EsUzthLEcsc0M7YSxZOzs7YztlLFc7ZTs7Ozs7Z0IsTTs7OztjO2UsUzs7Ozs7YTs7O1c7VztVO1E7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7VztZOzs7Ozs7Ozs7Ozs7Ozs7VTtXO1k7Ozs7Ozs7Ozs7TztPO1E7OztZO1ksTztXO1csTztVO1E7UTs7O1c7Ozs7O1ksVztZLEs7Ozs7O2U7Z0IsSztnQixLO2dCLE87Z0IsZTs7d0I7ZTtnQix3QjtnQixPO2U7Ozs7OztvQjtnQixvQzs7Ozs7Ozs7Ozs7Z0I7Z0IsRztpQixnQztnQjtlO1k7Ozs7OzRCOzs7OztXO1k7O2dCOzs7OztZLFU7OzthO2M7OztjO2E7YyxNOzs7WSxNOzs7VyxlO1csTTs7O1E7Tzs7O1E7Uzs7O1M7O1M7NkIsVyx5QjtVLFM7VSxPO1UsTzs7VTtrQyx5QztXLE87VTtXOytCLHVCO1ksTztXO1k7YSxzQjthLE87YSxXO1k7Ozs7Ozs7Ozs7Ozs7Ozs7O087OztROzs7VSx1QjtVOztZLFc7WTtZLEk7Ozs7Ozs7Ozs7VTtXO1ksTztZLFc7OztZO1c7Ozs7OztROztTLFk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCO21CO3FCOzs7Ozs7O21CLE87O21COytCOzttQixrQjtrQjtrQjttQixTO21CO21CLFk7a0I7aUI7Ozs7O2E7YTtjLFc7YyxXO2MsTztjLFc7Ozs7Ozs7Ozs7OzthLEs7YTtjLEs7Ozs7a0I7Ozs7Ozs7OzRDOztpQjs7OztjLFM7YyxXOzs7O2tCOzttQixpQjtvQjs7Ozt3Qjt3Qjs7Ozt1Qjs7Ozs7O3VCO3NCOztrQjtpQjs7Ozs7OztrQjs7O2tCOzsyQjsyQix3QjswQjtpQjs7Ozs7Ozs7ZSxNOzs7Ozs7O21CLDBCOzs7Ozs7cUI7c0I7c0IsTyx3QiwwQjs7O2dCLEs7Ozs7cUI7b0I7aUIsRzs7Ozs7Ozs7ZSxNOzs7Ozs7Ozs7YyxlOzs7Ozs7OztlLGE7Ozs4QjtlO2dCLGdCO2dCOzs7Ozs7Ozs7Z0IsZTtnQjs7Ozs7Ozs7YTtjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7TztPLHVCLE87TztPO08sSSxxQjs7Ozs7OztrQyx5QztVLE87Ozs7Ozs7TztPO087Tyx5QjtPO087UTs7Ozs7UTtPOzs7OztpQjs7OztPOzs7UTs7Ozs7Tzs7O08sTztRLE07TzsrQixPLDJCO1EsVztRLFc7Tzs7VTt1QztTO087OzZCLGdEO1EsTztROzJCLFk7USxXO087dUM7OztPOzs7Tzs7O1E7USxlO087UTtTLE87UyxVO1MsTztTLFU7Ozs7Ozs7O1M7Ozs7VSxPO1UsVztVLE87VSxXOzs7Ozs7Ozs7WTs7YTthOzs7WTs7OztTLE07O1EsTTs7Ozs7UTs7UyxzQjtTLFE7OEIsYztTLFc7UyxPO1Msb0I7UyxNO1M7UTs7Ozs7a0I7Ozs7OztPO1EsTTs7OzJCO1E7O1M7Uzs7Ozs7O087OztTO1MsTTs7Ozs7Ozs7O087UTs7Uzs7O1U7VSxNOzs7Ozs7Ozs7Ozs7Ozs7O1E7Ozs7Ozs7OzRDOzs7USw2QixPO1E7UTtTLE87UyxjO1E7UTs7O087OzJCLFM7OztXLE87VTtROztROzs7OzthOzs7Ozs7Ozs7Ozs7Tzs7VSxXO1U7NkI7Uzs7Tzs7Ozs7O1UsTTs7Ozs7TztjO1E7OztZOztXO1csTztVO087UTs7UyxXOzs7WTthLFE7OztZO1ksSTs7Ozs7YTtjLFU7OzthO2E7O2dCO21DO2U7YTs7O1k7VztTLG9COzs7Ozs7UTs7OztZLEk7Ozs7O2E7cUMsb0IsYztjO2dCO2M7O2MsTTthOztpQyxZO2MsYztjOzs7O2dDOztrQixLO21CO2tCLEk7OztjO2EsTTs7OztZO1c7UyxzQjs7OztRLE07Ozs7Ozs7YTs7Z0I7TzttQjs7O29DLHVCO1E7VTtRO087Ozs7O2lCOzs7O087OztROzs7USxXOzs7TztPOzs7Tzs7OztROzs7O1E7a0M7UTs7Ozs7O087O1EsTTs7O087Ozs7O2lCOzs7O087O1EsTztRLGE7Tzs7VTt5QztTO087O3lCLGtEO1EsTztRO087Ozs7O2lCOzs7O087Ozs7UTtPO1E7O1M7UztRO1E7Ozs7Ozs7OztPO087O087OztRO1E7Tzs7Tzs7O1E7UTtRO087Ozs7O2lCOzs7O087Ozs7OztRO1E7OztrQzs7O1MsTTtROztTLE87UyxPO1MsVztTLHVCLGU7Ozs7Ozs7TyxJLG1EO087Ozs7O2lCOzs7OztPO08sSSxNLHlDO087TztPO1EsTztROztxQztPOzs7Ozs7Ozs7Ozs7UTtRO1MsVzs7OztTLFc7Ozs7UTtRO1E7UTtTO1UsTztVLE87VSxVO1M7UztTOzs7Ozs7UyxNOzs7UTtTO1MsTzs7Ozs7O3NDOzs7UTtTLFc7Ozs7UTtRO1E7UTtTLEs7UztTLG9CO1E7UTs7O1MsVzs7Ozs7Ozs7Ozs7Ozs7WSxLOztZOzs7Ozs7UztpQjtvQjtVO1c7WSxPO21CO1c7WTtZO1ksSTs7Ozs7O1k7Ozs7O1U7VyxjO1c7Vzs7b0I7Ozs7Ozs7O1csTTs7OztTO1UsVzs7O1M7UyxJOzs7OztVOztXLFc7VSxNOzs7Ozs7Ozs7OztPOzs7Ozs7Ozs7OzBCO08sSTs7Ozs7Ozs7Ozs7O2MsSSxXOzs7OztlO2dCO2lELHFCO2dCO2tCO2UsTTs7O2M7ZSxROzs7Ozs7YyxJLFc7Ozs7O2U7Z0IsTztnQixROztnQjtlO2U7Ozs7YztlLFE7Ozs7Ozs7Ozs7O2EsSSxXOzs7OztjO2U7Z0QscUI7ZTtpQjtjLE07OzthO2MsUTtjLFc7NEI7Ozs7OztRLEksVTs7Ozs7O1M7VTtXLE87VyxXOzs7O1k7O3dCO2E7OztnQixhOzs7OzttQjs7Ozs7Ozs7Ozs7UyxNOztRLEk7OztRO1E7O08sZTs7Ozs7VztZLFE7WSxPO1ksTztXOzs7Ozs7WSxzQjs7OztxQjs7O3FCO3VCOzs7dUI7Ozs7O1E7O08sTTs7Tzs7USxXOzs7UTs7USxNOztPLHlCO087Ozs7O2lCOzs7O087OztRLFc7Ozs7O087USxNOztPO1E7O3NDO1EsVztvQjtRO087Ozs7O2lCOzs7Ozs7Ozs7Vzs0QixPLGdDO1csRztZLE07O1c7VTtPO087UTtTLFc7UyxPOzs7OztTLE07Ozs7O1E7Ozs7Ozs7O1k7YTtjLEs7YyxLO2M7Ozs7OzJDO2E7Ozs7OzthO2M7Z0Qsc0I7YyxTO2EsTTs7OztTLFM7UTs7O08sTTs7Tzs7OztRLFE7TztPO1EsVTtRLFc7OztRO1EsTztPO087O1EsUTtRLE87USxPO1E7OztROztTO1c7Ozs7Ozs7O087Tzs7TztPO087Ozs7Ozs7OztPOzs7USxXOzs7UTtPOztPOztRO1E7Ozs7OzRGO3VCOztPOztPOztRLFE7USxhO087O1U7eUM7UztPLEksb0Q7Tzs7Ozs7aUI7Ozs7OzBCOztROztTLFE7UyxROzs7O1E7Uzs7OztRO1E7OztROztXLFc7Vzs4QjtVO087USxPO1EsVzs7Ozs7VztZOzs7WSxPO1k7Vzs7Ozs7OztZOytCO1k7YSxXOzs7O2E7YTs7WTtZO1k7O1k7OzthLE87Ozs7WTthOzs7YSxPOzs7Ozs7UTs7Ozs7Ozs7O08sTTs7Tzs7USxXOzs7Tzs7O087OztRO1U7YTthO087TztRLFM7USxVO1EsVzs7O1E7USxPOzs7VyxXO1csRywyQztXLFc7VztXLFk7Ozs7OzZCLE87OztXLE87VTtRLE07TztPO087Ozs7Ozs7OztPOztRLE87USxPO1EsVzs7OztXLE07O1cseUM7O1k7O2E7YSxPO29COzs7b0I7VztZLFc7OztZO1c7Ozs7O3FCOzs7O08sTTs7O087OztRLE87USxXOzs7UTtPO087Ozs7Ozs7MEI7Tzs7UTs7O1EsVTtRLFc7Ozs7O087O1E7OztTLFE7O1M7UztXOzs7OztTLFM7Ozs7O087USxpQjtRO1U7USxZO1EsYztRO1E7Ozs7Vzs7USxRO08sSTs7Ozs7USxNOzs7O1E7UTtRO1E7UTs7Tzs7OztXO1k7Ozs7Ozs7Ozs4QjtXO1k7OztZLFU7WSxTO1ksVTtZLFk7WTtjO1k7YztXLEk7Ozs7O1ksTTs7OztZO1k7WTtZOztXO1k7OztZO1c7WTthLE87YSxPO1k7Ozs7Ozs7WSxNOzs7VztXOztROzRCOzs7USxPO1EsUTtROzs7Ozs7Ozs7Ozs7O1E7O1M7UztTO1M7UyxPO1E7O08sTTs7Ozs7O1EsTTttQzs7Ozs7Ozs7Ozs7O1c7O1ksTztZOztZLDBCO1k7Ozs7O3NCOzs7O1csTTs7Ozs7TyxNOzs7O0k7STtLLFE7OztLLFU7Ozs7c0M7Ozs7O0ksYzs7Ozs7Ozs7Ozs7Ozs7SyxNOztJO0c7O0k7O0ssTTtLOzs7Szs7Ozs7O3NCOzs7Uzs7VSxXO21COzs7Ozs7STtHOzs7Ozs7Ozs7SztNLFc7OztrRDtJLGE7STtLO00sTztNLFE7Ozs7OztLOzs7Ozs7Ozs7Ozs7SyxNOzs7SSxHO0ssUztLLEksNEI7Ozs7O08sTTs7Ozs7OztJO0s7SztLOztJO0s7Ozs7Ozs7Ozs7OztLLE87STtLO007OztNLHNCO00sTztNOzs7O0k7Z0I7Szs7STtLO0ssTztJOzs7OztjOzs7OztJLG1CO0k7O0s7Szs7SSx3Qjs7O007TSxNOzs7Ozs7Ozs7STtLLFM7Ozs7Szs7Ozs7Ozs7O0k7Rzs7O0k7a0Q7SSxhLDBCO0k7SyxROzs7O0k7SztLO0s7O0k7SztNLE87TSxPO0s7Ozs7OztLLE07OztJLGU7SSxhLDBCOzs7TSxNOztLLE07OztJO2lDO0s7O29DO0k7STs7OztNLHlCO007O007OztPLE87Ozs7Ozs7SztLO007TTtNO007TTtNO007OztPLE87TztNLHNCO007TTs7TTs7O08sTztPOzs7Ozs7OztRLE07O00sTTs7O0k7Ozs7O0s7TTs7O007Z0I7O0ssb0I7SyxPO0k7STs7OztTO1UsSztVLFE7Ozs7VSx3QixPO1U7O1M7UTtLLEc7TTtPLE87TztPLDJCLE8sNEI7Yzs7Ozs7OztJO0s7OztLO0s7Ozt1QjtJOztLO0s7Ozs7Ozs7Ozs7OztPO1E7UyxPO1MsVTs7Ozs7OztXLEs7Vzs7WSxzQjtZOzs7Ozs7Ozs7TztRO3NCOzs7d0I7Ozs7O0k7Ozs7OztLLE87Szs7SztLOzs7Ozs7Ozs7O2M7Ozs7STtLLFc7SyxPO0ssVTs7Ozs7Szs7OztzQjtLOzs7UztVLEs7VSxPO1UsTztVO1UsVTs7VTs7MEI7Ozs7Ozs7Uzs7MEI7Ozs7Ozs7UTtNOzs7O3dCLGtCLE8sNEI7TSxZO0s7YztLO007Ozs7Ozs7Ozs7O007Ozs7VTs7Ozs7O007TTtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxNOzs7STs7O0s7OztNO087TztPO00sTTs7Ozs7Ozs7O0k7SyxVOzs7OztLOzs7Ozs7Ozs7STs7Ozs7OztPLHVCOzs7Ozs7Ozs7OztJO087SyxXO0ssTTs7O2tEO0ksYSwwQjtJO0ssVTs7O0s7STtLO0s7Szs7O1E7UyxPOzs7UyxPO1E7O087SztLO0s7O0ksYzs7SyxNO0k7OztLOztLLHVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxNOzs7O0ksVzs7SztLO0k7SSxXOztLOzs7Ozs7Ozs7SyxNOztJLE07OztJO0k7STtJO0ssSztLLEs7SyxPO0k7SztNLE87b0I7Ozs7SyxpQjtLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOzs7OztLLGtCO0s7O3VCLDBDO0s7O0k7STtJO0c7O0k7SztJLEksSyw2Qjs7SztLO0s7TSxVO00sTztNLE87TSxPO00sUTs7O007TSxPO0s7Szs7TSxRO007TTtROzs7O0s7SztJO0k7SyxROzs7SztLO0s7SyxPO0sscUI7O0s7SztLO0s7Ozs7Ozs7O0k7SSxPO0c7Ozs7Ozs7Ozs7O3lCLGtCLFM7STtLLFc7SztPO0k7Szs7O1MsVztTLFc7UyxZOzs7aUI7VztZLE87OztlLGtCLFE7O2dCLE07ZTtjO1c7O1UsTzs7UyxPO1E7SztNO007TSxJOzs7OztNOzs7Ozs7O0k7O087Ozs7Ozs7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7O0ksa0I7SSx3QjtJO0ssTTtLO0k7STs7Szt3QjtLO0ssa0I7SztLO0s7SztNO007TSxNO00sVTtNLFE7OzBCOztNO007TTs7O08sTzs7Ozs7SztLO007TTs7O1U7dUY7VTtTO0s7Ozs7Ozs7YTtJO0ksdUI7eUIsMEIsaUI7SSxXO3lCLDhCLHFCO0k7eUI7Ozs7TTtPLGtCOztrQjs7O0s7TSw4QixXOzs7O0ksZTs7O007TTtLO0ssTztJO0k7SSxHO0s7TSxzQjtNLE87SztLOzs7cUIsTyxpQjtJOztLLFc7O0s7SyxPOzs7aUIsVztpQixPO2dCOztJO0k7STtJOztLO0ssTztJO0k7STtLO2E7SyxXO3VCOztLOzs7Ozs7Ozs7TTt3QjtNLHVCLGU7TTs7MEIsZTs7TSxxQyxPO00sc0I7SztLLGdCOzs7O3lCOzs7OztLOzs7Ozs7OztLOzs7Ozs7OztLOzs7O0k7SSxZO3VCO0k7STtLO00sTztxQjs7OztLO007O1MsWTs7Uzs7OztTOzs7OztVLFE7OztVLE07UyxtQjtTO1E7TSxPOzs7Ozs7OzthLE07Ozs7Ozs7O007OztPO087OztXOztZOzs7O2E7YSxPOzs7Z0I7OztpQixPO2lCLG9COztlOztpQjthOztlO29COzs7MkM7OzthO2M7Ozs7a0I7O2MsTztjLFE7YyxPOzs7YyxPO2E7Ozs7OztZOztXO1U7TSxPLFc7SztLO2lCLDBCO0s7SztpQjtLO0ssTztJO0k7SyxrQyx1Qjs7Szs7SztLLG9DOztJOzs7O0k7Ozs2QixlO0k7OztvQyxlO0k7dUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOztLOzs7O007Ozs7Ozs7Ozs7Ozs7Ozs7OztZOzs7Ozs7Ozs7O0s7STtJLFk7eUIsTyw0QjtJLG1CO0k7SSxJOzs7O007O0s7SyxPOztJO0ssVztLLE07SyxPOztLLHFDLE87SyxzQjtJO0k7SyxVO0s7SyxRO3dCO0k7SyxhOztJOzs7O1MsWTs7OztXOzs7OztZLE87Ozs7OztTO1E7Szs7O0s7SztnQjs7OztJO0k7O0s7Szs7OztTO1M7OztVLE87UztRO21COzs7O3FCLE8saUI7STtJO0sscUI7aUU7Szs7STs7WTs7TSxNOzs7OztTLHNCLE87UyxPOzttQjtRO2dCOzs7O0ksSSx1Qjs7O007TyxPO08sTztNOzs7TztRLE87USxPO087Ozs7Ozs7TTtLO0ssTztJO0k7O087OztNLGlDO007TztPO08sTzs7TztRLEs7USxPO1E7USxPO087Ozs7dUI7Z0M7O1E7O1c7O1c7O1ksTztXLE87VTs7UTs7Ozs7OztRLFc7UTs7OztPO08sTztNO007TTtLO0ssTztJO0k7cUI7O0s7Ozs7O0s7SyxZOzs7eUI7TTtPLFU7Ozs7TztPOztNOzs7VTs7O1M7TyxRO007OztNOzs7SztLLFU7SztJO0k7O087Ozs7SztNLFE7OztNLHVCLE8seUM7Szs7O0s7SztJO0ksVzs7Szs7TTtNO007SztLLE87STtJOztLOzs7O00sTztLO0k7SSxZO0k7O0ssb0I7SztJO0k7STs7SztLOztLLHlCO0s7O0k7STtJLFE7O0s7SztJO0ksVTtJOzs7O1Msb0I7Ozs7YTs7Z0Q7O1MsTTtRO0s7OztLO3FDOzs7TTtvRDtNO0s7SyxlOztJO0k7STs7O0k7STs7O0ssdUIsZTtLOzt5QixlOzs7Ozs7Ozs7STtHOztJO0s7OztJO0c7O0k7STtJO0k7SSx5QjtJOzs7Szs7TTthO0s7O0k7Rzs7O0ssTztJO0ksTztHOzs7STtLLGtCOztLO0k7SSxPO0c7O0ksWTtJLG1CLFE7Ozs7OzRDOzs7Ozt5Qjs7Ozs7eUI7Ozs7O3lCOzs7O0s7O1E7O1c7OzthOzs7ZTs7O00sVzs7Szs7STs7O0ksVzs7O0ssTztJO0k7O087O087O087O087O087O087O087O087O087ZTs7Rzs7O0k7O0s7Ozs7Ozs7O0k7SSxPO0c7O0k7OztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPOztnQjs7O087OztROzs7Ozs7Ozs7Ozs7OztPOzt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixXO2lCLE87Z0I7Ozs7TyxPOzs7Ozs7OztXLFc7VztXLFc7Vyx1QjtVO08sTzs7Tzs7OztROzs7Ozs7Ozs7Ozs7OztPO1E7d0IsTywwQzs7d0IsTywwQztPOzs7Ozs7O2tCOzs7OztPLG9CLFU7O1EsTzs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Tzs7OztROztXO1ksTztXLFc7VyxPOztROzJCO08sTzs7Ozs7Ozs7Ozs7TyxPOztPOztROzs7WSxXO1ksTztXO1csTztVO08sTzs7OztPLE87Ozs7Ozs7Ozs7Ozs7O1k7WSxHO2E7Ozs7Ozs7O2E7OztjLE87Yzs7aUI7O2E7Ozs7Ozs7Ozs7Ozs7WTtXO1csTztVO08sTzs7Tzs7Ozs7USxZO1EsUztROzs7O1ksTzs7Vzs7WSxPOzs7Ozs7OztXOztZLE87Ozs7Ozs7O1c7VyxPOztVO08sTzs7O08sTzs7Ozs7Ozs7VztXO1U7TyxPOzs7Ozs7Ozs7O1k7Z0M7O1k7VztXLE87VTtPLE87Ozs7Ozs7O1c7VztVO08sTzs7O08sTzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7Ozs7Ozs7Ozs7Ozs7VztXO1U7TyxPOzs7TyxPOzs7Ozs7O1csTzs7VTtPLE87OztPLE87Ozs7Ozs7Ozs7WSxPO1c7O1k7YSxXO2EsTztZLE87VztXOztxQjs7Ozs7Ozs7VTtPLE87O087OztROztXOztPLE87OztPOzs7UTs7Vzs7TyxPOzs7Tzs7Ozs7UTs7VywwQjtXO1ksTzs7VyxPOzs7Ozs7O087UTs7UTtROztXOztPLE87Ozs7Ozs7Ozs7Ozs7TyxPOzs7O08sTzs7Tzs7O1E7d0IsTywwQztPOzs7Ozs7O2lCLE87Z0I7Ozs7TyxPOzs7Tzs7Ozs7Ozs7Ozs7Ozs7O087UTs7O1ksTzt5QjtXO1MsVTs7Ozs7UyxPOzs7O08sTzs7O08sTzs7Ozs7Ozs7Ozs7TyxPOzs7TyxPOztPOzs7UTt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO3dCLE8sMEM7Tzs7Ozs7OztpQixPO2dCOzs7Tzs7UTt3QixPLDBDO087Ozs7Ozs7aUIsTztnQjs7O087OztRO1EsTztRLE87TyxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Vzs7TyxPOzs7Ozs7Ozs7Ozs7TyxPOzs7O3lCLDJCO0ksTztHOztJOztLOzttQzs7STtHO0c7Ozs7STtHOytCLDJCOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJLG9COztJO0ssTztLLE87SyxPO0ksVztHO3FCLHNDLFk7OztJO0ssUTs7OztLLE07Ozs7Ozs7a0I7Rzs7STtJLE87Rzs7SSxXO0k7Rzs7SSxXO0k7SyxRO0ssUTtJLHVCO0ksTTs7Rzs7STtJOzs7TTs7OztHOztJO0k7Ozs7O1E7O1E7Ozs7O1M7USxPOztHOztJO0ssTTs7O0ksTTs7Rzs7STs7SyxNOzs7O0ksTTs7Rzs7SSxJLDBEOzs7OztLOztHOzs7STtLO0s7Ozs7OztLOztHOztJLFk7O0ssTTs7SSxJLG1EOzs7Ozs7OztRLE07Ozs7UTs7O1E7OztHOztJO0ssTTtLO0ssUTtLO0ksSTs7Ozs7SyxNOztJO0c7O3FCLE8sa0M7STtLLFk7SztLLE87SyxPO0ksTztHO0c7OzsrQiw2QztLOzs7UTs7O1MsVTs7O1EsRztTLE07O1E7UyxVOzs7UyxPO1E7USxXO1c7UztVLE87VSxPO1MsTTs7O1E7OztZLEksTSx5QztZLEksc0M7Ozs7OzthLE07OztXO1MsTztTO1E7UTs7UTs7Ozs7UyxPO1E7UTtTLFc7UztRLEk7Ozs7VSxNOzs7O1E7OztZOztrQyw4Qjs7bUMsYSxrQjtjLE87YTthOzs7O2dCOzswQjswQjswQjswQjt5Qjs7Ozs7Ozs7Z0I7OzBCOzJCLE07MkI7MEI7MEI7eUI7Ozs7Ozs7O2dCOzswQjsyQixNOzJCOzs7OzJCOzs0QixjOzJCOzJCOzRCLE07NEI7NEI7OzsrQixJLE0scUM7K0IsSTs7Ozs7O2dDLE07Ozs7Ozs4Qjs7Z0M7MkI7OzBCOzJCLE07MkI7MEI7MEI7eUI7Ozs7OztnQjs7MEI7MkI7OzswQjt5Qjs7O2dCO2dCOzs7Z0IsTTsyQzs7OztZLE87VztTLFM7UTtRLEkscUM7UTs7UTs7OztTLE07UztTO1c7Yzs7UztTO1E7OztRLE07bUM7O1E7OztTLFU7OztTO1E7O0k7SSxPO0c7O0k7STtLO0ssTzs7Ozs7OztJOztJO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksSSxVOzs7O00sTTs7O0k7OztLO0ssTztLLGlDO0ksTztHOzs7STs7O0s7SztLLE87SSxZO0k7SyxROzs7Szs7Szs7OztNLE87TTtNO0s7STtJO0ssVTs7O0ksSTs7OztNLE07Ozs7STtLO0s7SztLO0s7Szs7Ozs7Ozs7Ozs7SztNOzs7Ozs7Ozs7TztPO007TyxPO007TTs7OztTOzttQjs7O21CO21CO21CO29CLGM7b0IscUI7b0Isb0I7b0I7c0I7b0I7c0I7bUI7OzsrQzs7OzJCO3FCOzt1QztxQjs7MkI7cUI7NEM7cUI7Ozs7b0I7cUIsTztxQixjO29CO3FCLE07OzttQjtvQjtzQjtvQjtzQjtvQjs7O29COzs7OztxQjtxQjtxQixLO3FCO3FCLFM7b0I7bUI7bUI7b0IsVTs7Ozs7OztvQixzQjttQjttQjs7c0I7O29COztxQjtxQjs7Ozs7Ozs7O21CO29COzs7Ozs7Ozs7b0I7bUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztVOztvQixtQjtvQjtxQixNO3FCOztxQjtxQjs7b0I7Ozs7eUIsVzs7Ozs7c0I7O3VCO3VCO3VCLEs7dUIsUzs7Ozs7Ozs7Ozs7Ozs7O29CO3FCOzs7Ozs7Ozs7cUI7b0I7Ozs7Ozs7OzttQjs7O1M7O21CLEc7b0IsTTs7Ozs7OzttQixHOztxQjs7O29CLE07Ozs7Ozs7c0M7bUI7aUM7O29CO29COzttQjs7Ozt3QixXOzs7OztxQjs7c0I7c0I7c0IsSztzQixTOzs7Ozs7Ozs7Ozs7Ozs7bUI7b0I7Ozs7Ozs7Ozs7b0I7b0I7c0I7b0I7c0I7bUI7Ozs7Ozs7OztrQjs7Ozs7Ozs7O1U7O29CO3FCLFE7cUIsTTtxQjtvQjtvQjtxQjtxQjtvQjs7Ozs7Ozs7O21COzs7Uzs7bUIsRztvQixNOzs7bUIsRzs7cUI7OztvQixNOzs7Ozs7Ozs7dUI7O21COzs7b0I7cUI7O3NCLFE7c0IsTTs7OzhCO29COzs7cUIsYzs7Ozs7eUI7MEIsTzswQixPO3lCO3lCLFc7eUI7Ozt5Qjs7O2tDOzBCLE07eUI7Ozs7OztxQixNOzs7Ozs7OztxQixNOzs7Ozs7OztvQjtxQjtxQixnQjtxQjs7Ozs7Ozs7O3FCO3FCO3VCO3FCO3VCO29COzs7Ozs7Ozs7O21CLE07O2tCOzs7Uzs7bUI7b0I7OztvQjtvQjttQjs7Ozs7Ozs7O2tCOzs7Uzs7bUI7b0I7b0IsZ0I7b0I7b0I7bUI7Ozs7Ozs7OztrQjs7O1M7UztVO1U7Uzs7Ozs7Ozs7Ozs7UyxNO29DOzs7O0ssTztJO0k7SyxNO0s7SyxTOztJO0k7OztLLFc7SyxPO0k7SSxZO3dCO0ssTTs7STs7O0s7Ozs7Ozs7O3VCLGU7dUIsZTtNO00sTztNOzs7Ozs7UztLLE87STtJO0ssWTtLOztLO0s7O1E7Ozs7Ozs7Ozs7WTtZOztXO1M7VztRO1M7Ozs7O2E7YSxPO1k7VSxRO1UsSztVO1Usb0IsZTtVO1UsTztVLGlDO3NCOzs7O1E7Uzs7OztROzs7Ozs7OztTOzs7OztTO1M7Ozs7UTs7Ozs7Ozs7O1M7Ozs7O1M7Uzs7OztROzs7Ozs7UztTOzs7Ozs7Ozs7Ozs7OztZO2EsSzthO2EsTzthLFk7WTtZOztlO1k7WTthO2E7WTtXO2lCOzs7UTs7Ozs7Uzs7Ozs7Ozs7Ozs7WTtZO2EsWTthO2E7ZTthLFk7YSxPO1k7WTtZO1c7aUI7OztROzs7O1M7Ozs7SztJO0k7ZTtLLFc7STs7Ozs7STs7OztLO0k7SSxPO0c7Ozs7O087OztRLFU7OztPLEc7USxNOztPOzt3QixPLDRDO1EsTTtRLFU7OztRLFM7USxPO087TyxXO1U7UTtTLE87UyxPO1EsTTs7Ozs7O1c7VztZLFc7WTs7Ozs7O1ksTTs7O1U7TztPO087UTtROzs7O087Ozs7Ozs7O087O1E7OztPOzs7O1E7Ozs7UztTLE87UyxPO29CO1MsTztTLE87UyxPO1Msa0I7UyxPO1MsTztTLGE7UyxPO1MsTztTLFM7UztlO1MsTztTLE87UyxPO1M7VztROzs7MEI7TztRLFU7Ozs7OztRO1E7Ozs7WSxPOztROztPOzs7Vzs7O1k7WSxLO1ksTzs7WSxXO1c7Ozs4Qjs7Ozs7O1U7USxPO1EsTztRLFE7UTtVOzs7Ozs7O087Tzs7O087TyxXO087Ozs7OztVOzs7Ozs7Ozs7Ozs7OztPLFM7Tzs7O1EsYztPOzs7Ozs7Ozs7TztRLE07MEI7Tzs7O1E7UTs7Ozs7OztROzs7UyxHOzs7VSxJOztRO1MsTztTLE87O1M7aUMseUM7VSxPO1M7VTs4Qix1QjtXLE87VTtXO1ksc0I7WSxPO1ksVztXOzs7Ozs7Ozs7Ozs7OztvQjs7Ozs7Ozs7Ozs7UTs7Ozs7UztTO1UsTztVLFc7Ozs7Yzs7ZSxpQjtnQjtpQixPO2lCLFE7aUIsTTt3Qjs7OzBCOztjO2E7Ozs7Ozs7YyxXO2E7Ozs7Ozs7VyxNOzs7Ozs7O2Usd0I7Ozs7OztpQjtrQjtrQixPLHdCLDBCOzs7WSxLOzs7OztXLE07Ozs7OztVLGM7O1c7Ozs7O1k7MEI7VztZLGdCO1k7Ozs7Ozs7OztZO2M7aUI7Ozs7Ozs7OztTOztVOzs7Ozs7Ozs7O1E7OztZO1k7VztTLFE7UyxTO1E7OztPO1EsTTs7TyxNOzs7Tzs7OztRLFU7OztRO1EsTzs7O1c7Ozs7WTtZLEs7VztXO1ksTzs7WSxXO1k7O3lCOzs7Ozs7VztXO1c7WTtZLE87WSxPO1c7O21CO1U7USxXOzs7UTs7MEI7Tzs7Ozs7Ozs7O087TztRLFU7UTtPO087TztRLFk7UTtPO087TztPLG9CLE87TztPLHNCLE87TztPLFk7O1EsTTs7TztROzs7O1EsTztRLE87TztPOzs7Ozs7Ozs7TyxNO2tDOztPOzs7UTtRO1U7Ozs7VTtROztPOzs7RztJLE07SSxhOztJO0k7Ozs7UTs7O1M7VztjO2M7UztTO1EsTzs7Ozs7Z0IsTzs7O0c7O0k7dUIsTztJOzs7SztPO1U7VTtLO0s7SSxPO0c7O0ksSSxpQjs7Ozs7c0I7TTs7Ozs7STtLLE87SyxLOztLLE87SyxPO0s7Tzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7O0k7STs7O0ssSSxlLHdDOzs7O08sTTs7OztJLGdCO3lCLG9CLGM7STtLLFM7SztJOztLO00sUTtNLE87Ozs7OztLLE07O0kscUMsTztJO0ksVztJO0k7STtLLFE7OztLLFM7SyxNO0ssTztJO0k7SyxXO0s7Ozs7O0s7OzZCO0ssTTs7SSxTO0ksSTs7OztLLDJCO0ssTTs7SSxXO0k7STtLLFU7OztLLE87STtLLFc7Szs7Ozs7SztNLE87TSxtQjtLLE07O0ksSTs7OztLLGU7SyxNOzs7STtLO00sTztNO0s7Ozs7OztLLE07OztJO0ssTztLLGU7Szs7O0s7OztROzs7Ozs7Ozs7O0s7OztJOzJCO0ssUTtLLFE7SyxZO0ssVTs7O0s7OztLOzs7UTs7Ozs7Ozs7O3dCO0s7O0ssVTtLOzs7SyxPO0s7Ozs7Ozs7UTs7Ozs7Ozs7O0ssTztLLFU7OztJO0k7SyxVO0s7OztLLE87Szs7Ozs7OztROzs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7OztJLFk7O0s7TSxPO00sTztNLE87TSxPO00sTztNLE87Szs7YTs7Ozs7STtJLFk7STtJO0k7Szs7Ozs7Ozs7O00sUTtNOzs7O007Ozs7d0I7SyxrQjs7TTtNOztLO00sZ0I7TTs7OztNOztNO3VCO007UTs7Ozs7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLLFE7OztLO0k7Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Ozs7Ozs7Ozs7Ozs7OztLO0ssTzs7STtLLFU7OztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7SyxJOzs7OztNLE07OztLO0s7SztLO0s7SztLO0ssRztNLE07O0s7TSxPO00sUTs7TTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7TTs7eUIsTyx3Qzt5QixPLDJDO0ssTTs7O0k7SyxRO0ssUTtJLEksYzs7Ozs7O0ssTTs7SSxZO0k7Ozs7Ozs7Ozs7O007TyxPO2M7OztLO00sTztNLE87TSxPO00sTztNLE87SyxPOztJLFk7STs7Ozs7Ozs7Ozs7Ozs7Ozs7TSxrQjs7Tzs7O1EsVTs7O1EsVTs7O1EsTztPO08sSTs7Ozs7USxNOzs7YztRLE07Ozs7TSxNOztLOzs7Ozs7Ozs7Ozs7OztJLFk7STtHO0c7O0k7STtLLGE7Szs7Uzs7Ozs7O0k7STtHOztJO0ssYTtLO0k7STtHOztJO0s7OztzQiw2QjtJO0ssTztLLFU7OztJO0k7Rzs7STtHOztJO0s7Ozs7Szs7Ozs7Ozs7O0k7SSxXO0c7O0k7STs7Szs7Uzs7Ozs7Ozs7STtJLFk7STtHOzs7STtLLE87SyxPO0ssTztJO0c7O0k7bUI7O0c7O0k7O087O087ZTs7Rzs7STtLLE87Ozs7Tzs7NkIsTyx5Qzs2QixPLHlDO087TyxPOztPOzs7O1EscUIsTyx5Qzs7O1csTztVO08sTzs7O08sTzs7O08sTzs7TyxPOzs7Ozs7UTtTLE87Z0I7TyxPOzs7TyxPOzs7Ozs7Ozs7TyxPOzs7TyxPOzs7TztPO1EsTzs7USxPOztRLE87TyxPOzs7Ozs7Ozs7OztPOzs7USxxQixPLHlDOzt3QixPLDRDO08sTzs7Tzs7OztRO1E7Ozs7USxPO1E7VTs7TyxPOzs7Ozs7Ozs7O087OztRO1E7VTs7TyxPOzs7TyxPOzs7Ozs7Ozs7Tzs7USxxQixPLHlDOzZCLE8seUM7TyxPOzs7TztPO1EsTzs7USxPO08sTzs7Ozs7Ozs7Ozs7O08sTzs7O08sTzs7Tzs7O1E7O1c7Ozs7O1ksbUI7VztXO1c7WSxPOztZLE87VyxPOzs7Ozs7Ozs7O08sTzs7O087OztRLE87TyxPOzs7TyxPOztPOzs7Ozs7VztZLE87Vzs7WSxPO1c7VyxPO1U7USxPO08sTzs7Tzs7USxxQixPLHlDOzZCLE8seUM7TyxPOzs7Ozs7O08sTzs7OztRLE87OztPLE87OztPLE87OztPLE87Ozs7eUIsMEI7SSxPO0c7O0k7Szs7OztNLDRCO0ssVzs7bUM7O0k7RztHOzs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHO0c7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7O3dCLHNCOztpQztlLE07O0c7O0ksWTs7OzBCOzs7TyxNO2UsTTs7Rzs7SSxZOzs7MEI7OztPLE07O08sTTs7Rzs7STtLLE87SztPOzZDO0ksUztJO0ksTTtHOztJOztLO00sUztNLE87SztLLFU7SztJO0k7O00sVztNLE87SztLLE87STtJO0ssTztLLFE7OztLOzs7TyxLO1E7Uzs7Ozs7OzsyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFk7SSxPOztHOzs7SztJO0k7SyxROzs7SztJO0c7Rzs7OztRLE07Tzs7d0I7SSxpQjs7Szs7O00sTzs7TSxXO00sTztLO0ssTztJO0ksTztHOztJO0ssVztLO0ssTTs7Szs7TSxtQjtNLFE7Ozs7O0k7SyxZO0ssUztLLE87SyxPO0ssUTtJOzs7Yzs7O0ksWTtJO0ksTzs7O0k7STs7O1E7Ozs7O1E7UTtRLE87O0c7O0k7SyxRO0ssVTs7OztLOzs7Ozs7O00sTztLLFc7O0s7OzttQjtNOzs7TyxPO00sVzs7OztJO0c7O0k7SztLOzs7Ozs7O0ssaUIsTztLLHVDO0s7O007Ozs7Ozs7Ozs7Ozs7O1UsTzs7OztLOzs7STs7Ozs7Ozs7Ozs7STs7OztjOzs7Ozs7Ozs7Ozs7O2lCLE87O2M7OzthOzs7Ozs7Ozs7Ozs7Ozs7O0c7OztLLFk7O007O08sTztPLFU7b0IsTztNOztPLE87Ozs7Ozs7Ozs7TSxNOztLLE87STtJOzs7Ozs7Ozs7Ozs7Ozs7OztHOztJOzs7TTs7OztPOzs7TTs7O0k7Rzs7STtLOzs7OzRCLFM7STs7Ozs7Ozs7Ozs7Ozs7Szs7O1M7O1U7Ozs7Ozs7Ozs7OztjLE87Ozs7c0I7OztXOzs7O1k7OztXOzs7O2E7Ozs7Ozs7O1k7Ozs7Ozs7OzthOzs7Ozs7OztZLE07Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7O0k7STttQjtLLHNDLFE7O00sVztNLFM7Ozs7Szs7Rzs7STs7Ozs7OztJLEksbUI7STtLO00sTzs7OztrQjs7OztPLEcsa0I7UTs7TTs7Tzs7OztJOzs7O007TTtLO0s7Szs7Ozs7Ozs7Ozs7O1k7Ozs7OztnQixrQjttQjthO2MsUTtjLE87YyxPOzs7YyxPO2M7Ozs7Ozs7aUI7Ozs7Ozs7O2lCOzs7O2tCLE87a0IsTztrQixPO2lCLE87Z0I7YyxPO2M7Ozs7cUMsTywyQjtjOztpQjs7Ozs7Ozs7Ozs7Ozs7YyxPO2MsUztjO2dCO2MsWTtjO2dCOzs7Ozs7OztjO2M7Ozs7YTs7Ozs7Ozs7YTtjOzs7Ozs7Ozs7Ozs7Ozs7O2M7YztnQjs7OzthOzs7Ozs7Ozs7OztTLEcsa0I7VTtXLFU7VzthOztXOztXOzs7O1csVztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2EsRyxrQjtjO2UsWTtlO2UsUTtlO2UsVTtjO2M7Ozs7Ozs7O2EsRyxrQjtjO2UsWTtlLGdCO2M7OztjOzs7OztTLEcsa0I7VTtXLFk7VztXOzs7OztXOzs7Ozs7VztZOzs7VTs7Ozs7Ozs7Ozs7OztVLEcsa0I7VztZLFk7WTs7O1k7OztXO1k7YSxPO2EsTzthO1k7Ozs7O1c7Ozs7Vzs7Ozs7O0s7OztLO007O0ssWTs7TSxNOzs7SztJO0k7SztNLFE7TTs7O0s7Ozs7O087UTs7O1EsVTs7USxNO087OztROztRLE07Ozs7O1k7Ozs7dUI7c0I7c0IsVzs7O3VCOzs7Ozs7Ozs7d0I7eUIsYzt5QixVO3lCLFE7Ozs7MEI7OzJCOzZCOzs7OzJCLE07Ozs7Ozs7Ozs7Ozt3QixNOzs7OztzQjtxQjtXOzs7Ozs7Ozs7Ozs7Ozs7O1k7Ozs7Ozs7O2tCO2lCO2MsRztlO2dCOzs7Ozs7Ozs7O2UsTTs7OztZLE87Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087UTs7UyxvQixvQjs7Ozs7TztPLFc7Ozs7Ozs7UTtTLE07Ozs7Ozs7O1c7OztZLE87YztXOzs7OztnQixrQjs7Ozs7O2tCLEcsMkI7Ozs7O2dCLE07ZTtZOzs7Ozs7Ozs7Ozs7Ozs7O1MsSSxjOzs7O1csTTs7Ozs7OzthLE87WTs7O1M7VSxPOztTO1UsTTs7Ozs7YSxPO1k7O1E7UyxNO1M7VztnQjs7O1E7O1MsUTtTOzs2QixPLHlDO1MsUTtnQjs7O1E7O1MscUIsTyxvQztTLFE7UyxRO2dCOzs7O0s7O0s7Szs7Ozs7O0ssTTs7Ozs7SSxZO0k7OztLLE87SyxPO0ksVztHOztJLFk7STs7O0s7SyxPO0ssTztJLFc7Rzs7SSxZO0ksa0MsTztJLEs7SztJO0ksVztHOztJLFc7STs7O0ssTztLLE87SSxXO0c7O0k7OztPOztRLE87Tzs7MkI7Ozs7UTs7O1M7Uzs7Uzs7VSxPO1UsUTtVLFU7Ozs7Ozs7Ozs7TztPOztPOzs7UTs7O1c7OztjO2M7OztjO2M7c0I7O1U7TztPOzs7O2M7Tzs7O08sTTtrQzs7Tzs7USxTO087O0c7O0k7STtHOztJO0k7aUI7SyxzQzs7O1E7OztTLFE7UztROzs7a0I7a0I7aUI7Ozs7Ozs7O1M7VSxRO1U7O1UsTztVLFU7OztTOzs7OztROztTLFU7Z0I7OztXOzs7Ozs7UTs7UyxVOzs7WTs7YTthLFc7WTtZLE87VztTLFU7OztZO1ksTztXO1MsVztTO1E7O2tCO2tCO2lCOzs7O1E7O1M7UyxVO1MsVTs7O1E7O1E7O1M7UyxVO29COzs7Ozs7Ozs7Ozs7UTs7UztTO1MsVTtTO1MsVTs7O1M7USxPOzs7UTs7UyxVO1M7UztTOzs7Yzs7Ozs7YTs7O1EsTzs7OztHOztJO0ksb0I7SSxXO0c7O0k7SztLLE87SyxPO0ssTztLLE87SyxPO0ssTztJOzthOzs7Ozs7OztHOztJOzs7O087Ozs7Ozs7O3lCOzs7Ozt5Qjt5Qjs7OztJOzs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssUTtnQixPOzs7SyxNOzs7STtJLEksdUI7O0s7TTs7Ozs7O0k7SSxPO0c7O0k7Ozs7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJO0k7Rzs7STtJO0c7O0k7STtHOztJOzswQjs7NEI7OzRCOzs0Qjs7NEI7OzRCO29DOztHOztJLFc7STtLO00sTztNLE07eUI7SyxZOztNOzs7OztNO0s7SyxPOztJLE87Rzs7STs7SztLLE87STtJLG9COztLOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7Ozs7SyxHLGdEOzs7O2E7TztRLG9CLGU7USxPOzRCLGU7USxRO1E7OztPO08sVzs7d0I7O0s7TTtPO1EsTzs7Ozs7O087O1EsUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7O0s7STtJLE87Rzs7SSxxQjtJO0c7b0QsTztHOztJO0k7STtHOztJO0k7STtHOzs7SyxtQjs7O1E7O1M7UTs7USxvQjtROzs7O1M7OztVOzs7VTs7VyxRO1csTztXLE87VztXLFU7Ozs7Ozs7Ozs7Ozs7O1E7UTs7UTs7O1M7UztTOztTO1M7Ozs7Ozs7Ozs7OztlOzs7Z0IsVTs7Ozs7OztlOzs7Z0I7Ozs7O2U7OztnQjs7Ozs7Ozs7Ozs7O2U7OztnQixVOzs7Z0I7Ozs7WTthOzs7WTs7UyxVOzs7UyxVO1M7UyxPO1E7MkI7Ozs7OztROztTLFE7UyxVOzs7UTs7O1EsTTttQzs7UTs7UztTLE87UTs7STtJLE87Rzs7STtLOzs7O0ssTztJO0c7O0k7O0ssUztLLGdDLGU7OztROztTLFU7OztRO1E7UTtTOzs7O1M7UTs7UTs7O1MsVTs7Ozs7WTtZO2EsTzthLFc7O1c7UTtRO1M7Ozs7Uzs7OzhCLGdDOzs7UTs7Ozs7UTs7UyxVOzs7OztZOzs7Ozs7OzthLE07O1k7YSxNO1k7O2EsTzthLFE7YTtZOztXO1E7UTtTOzs7O1E7Ozs7O1E7O1MsVTs7O1M7OztZOztXO1E7UTtTOzs7O1M7OytCLGtDOzs7UTs7Ozs7UTs7UyxVOzs7UztRO1E7UTtTOzs7O1M7UTs7UTs7UyxRO2dDLG1DO1MsTzs7UyxPO1MsTztTOzs7Uzs7VSxXOzs7Uzs7Ozs7UTtRO1M7Ozs7Ozs7O1E7Ozs7Ozs7Ozs7UTs7UyxVO1MsVzs7O1MsZ0I7UTtTO1UsTztVLE87Ozs7UTs7UztXOzs7Uyx1QjtRO1E7UTtTOzs7O1E7Ozs7Ozs7Ozs7UTs7Uzs7Ozs7WSxtQzt3Qjs7WTtXO1MsVTs7O1k7WTs7VztRO1E7Uzs7OztTOzs7Yzs7OztlO2M7YTs7O2dDLG1CLFU7UTs7O3VCOzs7OztROztTOzs7O1E7UTtRO1M7Ozs7UztROztROztTOzs7O1M7O1MsTTtROztTO1MsUTtTOzs7O1E7UTtRO1M7Ozs7UTs7Ozs7UTs7Uzs7O1M7Ozs7UTs7UTs7UztnQyxpQztTLFM7UztTLFU7UztTLFc7Ozs7O1M7MEI7UTtRO1M7Uzs7OztTLE87UTs7Ozs7UTs7UyxXOzs7OztZO1k7WTtZO1k7O1c7UTtRO1M7Ozs7UztTOzs7Yzs7Ozs7OzthOzs7UyxPOytCLGdCO1M7O3VCOztROztROztTLFc7Ozs7O1k7WTtZO1k7O1c7UTtRO1M7Ozs7UztTOzs7Yzs7Ozs7YTs7O1MsTzsrQixlO1M7OzttQjs7UTs7O1E7UTtTOzs7O1E7Ozs7OztRLE07bUM7Ozs7SSwyQjs7SztNLG1COzs7O007TTtLO0s7STtJLE87Rzs7O0s7Ozs7O00sTztLLG9CO0s7TSxPO00sTztNLE87c0IsWTtLO007O1M7Ozs7TSxRO00sUTs7O007SztJO0ksTztHOzs7O007O087TyxPO007TSxPO0s7SyxPO0k7OztNOzJCLHFDO007TyxPO087TTtLO0ssTztJO0k7O007MkIsbUIsbUI7TSxPO0s7SyxPO0k7SSxZOztLLG9CLE87SyxPO0k7SSxVOzs7TSxXO00sTztLO0ssTztJO0ksaUI7O0s7TSxPO00sUzs7OzswQiw2QjtLLGE7dUIsZSxrQztLLGU7SztJO0k7SyxPO0s7eUIsOEI7SSxJLE8sK0I7STtJLEksK0I7STs7Szs7Ozs7TTs7O3lCO0s7OztTOzs7Ozs7eUI7SyxXO0s7STtJLGE7STtHO0c7O0k7STs7OzswQjs7OztTO1M7Ozs7OztLLE07O0c7O0ksSSxzQzs7OzZCOzs7Rzs7Ozs7O1E7O1E7O1MsUTtTOztZOzs7ZSxPOztrQzt1Qjs7O1EsTzs7Ozs7Uzs7Ozs7b0I7Ozs7Ozs7O2dCOzs7O0k7Szs7USxzQixPO1E7UyxNOztROztRLHNCO1E7UyxNOztRO2dCOzs7SSxPO0c7b0IsZTtHLHVCOztJOztLLE87O0k7Rzs7SSxrQjtJLFk7Ozs7TyxNOzs7Ozs7Vzs7OztlOzs7O2dCLFc7ZSxHO2dCO2lCLFc7aUIsSztnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7O2U7O2tCO2tCO2lDOzs7Ozs7cUIsRyxxQjtzQjs7Ozs7aUI7Ozs7ZTtlOzs7Ozs7Yzs7VztVO08sVztlLE07O0c7OztLLGdDLE87SyxXO0k7STs7OzJCO0ksTztHOzs7O007bUI7SztLLFc7SztJO1EsSSx1Qjs7Ozs7cUQ7Ozs7Ozs7SyxJLFU7Ozs7OztpQzs7STtHOzs7STtJO0s7O1E7Ozs7OztLLE07OztJOzs7Rzs7STtvQjtnQjs7STtHOztJOztLO0k7SSxPO0c7Ozs7O087O1EsTztRO1EsZ0I7USxROzs7O1MsVztTOzs7Ozs7O2M7Yzs7O1M7O1U7VztZLE87WSxROzs7Ozs7Ozs7Ozs7Ozs7Tzs7Tzs7UTs7Ozs7O1E7UTtRLE87Yzs7Ozs7OztROzs7UztTLFE7OztTOztVLE87VSxTO1U7VSxLO1UsVTtVO1k7Ozs7O1MsSTs7Ozs7Ozs7Ozs7Ozs7OztPO1E7OztRLE87Tzs7Ozs7Ozs7OztPOzs7UTs7O1M7OztTO1M7Ozs7O1k7Ozs7Uzs7OztPOzs7O1k7O1c7d0I7OztPO1E7OztRO1E7O1c7OztZLGM7Ozs7Ozs7Z0IsTTs7Ozs7cUI7O2U7Z0IsTTs7ZSxXO2U7Ozs7Ozs7Ozs7Ozs7YztlOztrQjs7Ozs7Ozs7Ozs7O2U7Z0I7a0I7Z0I7ZSxNOzs7Yzs7ZSx1QixRO2U7Ozt5Qjs7OzsyQjs7OztnQjs7aUI7bUI7Z0I7Ozs7O2dCO2lCO2tCLE87Ozs7Ozs7O2lCO2lCLE07Ozs7Ozs7O2dCO2lCOztvQjs7Ozs7OztpQjs7OztpQjs7OztjOztjLFc7Yzs7Ozs7Ozs7OztjLE07OztjO2UsTztlO2MsTTs7OztPLE87O087OztROzs7UTtROzs7OztPOzs7OzswQjtPLFU7O1E7UTs7TztRLE87USxVOzs7O1csTTs7Ozs7Ozs7ZTs0QjtjO1csRztZLE07Ozs7OztxQjs7b0I7VztZO1ksb0I7VztZLE07Vzs7OztPLE07Ozs7TyxNO2tDOzs7OztLOztNOztPOzs7TztPO007O0s7TTs7O00sUTtNO00sVTs7Ozs7Ozs7SyxvQjtLOztNOzsyQzs7O1M7OztTOzs7Uzs7O1M7OztTOzs7Uzs7SztLO00sTztNO0s7STtJLE87Rzs7STtJOzs7Szs7UTs7OzsyQixPLHVDO1MsTztROztROzs7UyxROzs7MkI7UTtTLE87Uzs7O1k7Ozs7O1k7WSxTO1k7WTs7b0I7VztTLFU7OztROztnQjs7OztROztTLFU7OztRO1E7UTtnQjtROzs7Ozs7UTs7O1MsVTs7OzZCLDBDO1E7UTs7Uzs7O2dDLG9DOzs7OztZO2EsTTtZOzs7YSxPO1ksTzs7dUI7OztXO1MsYzs7Ozs7O2E7OztjLGM7YyxTO2EsTztZO2lCOzs7UTs7UTs7UyxVOzs7Uzs7O1k7WTs7VztTO1c7O1E7OztvQyxrQzs7Ozs7O1E7O1MsVTs7O1M7UTtRO1E7O1c7O1E7Ozs7OztROzs7Ozs7UyxjO1MsVTs7O1k7Ozs7Ozs7Ozs7OztZO1c7UyxVOzs7O1MsTztTLFM7Uzs7Ozs7O1MsYTtRO1E7OztTOztVO1k7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7d0I7OztROzs7Ozs7UTs7OztZOzthLE07Ozs7Ozs7O1k7VztTLFU7OztZOzs7OztZO1c7Uzs7cUI7Ozs7O1ksbUI7WSxvQjtZLE87VztRO1E7OztZOzs7Ozs7Ozs7O2E7Ozs7c0I7OztZO1k7YSxVOzs7YTtZO1c7UyxjOzs7WTs7Ozs7OztZLGE7WSxvQjtZLE87VztTLFc7Uzs7WSxZO1ksUztZLGtCLE87WSxPO1c7UztTLE07Ozs7O1E7UyxZO1M7VTs7O2M7Ozs7Ozs7Ozs7ZSxhO2U7O2M7ZTs7a0I7Ozs7Ozs7Ozs7Ozs7O2UsTTs7O2M7OztlOzs7Ozs7O2U7Yzs7VzthOzs7Yzs7OztlO2dDLCtCO2MsTzthO1csTTs7O2M7Ozs7O2M7YyxPO2E7VyxjOztXOzs7Z0I7Z0I7ZTs7O2tDLG1CLFU7VTtzQjs7Ozs7Uzs7O2M7ZTs7Z0IsVztnQixlO2U7ZSxVO2UsbUM7OztVLFk7OztjO2U7ZSxVO2U7Ozs7Z0I7Ozs7ZSxPOzRFOzs7VSxRO1U7OzthO2EsVTs7YSxPO1k7VSxNOzs7Ozs7Ozs7UTs7Uzs7OztRO1E7UTs7UyxNO1E7O1E7O1M7Ozs7O1E7O1E7O1MsVzs7Ozs7WTtZO1k7WTtZO1k7O2E7WTtZO2E7Ozs7VztTLGM7O1M7OztjOzs7Ozs7O2E7OztTLE87OEIsNkI7UTtxQjs7Ozs7UTs7UyxXOzs7OztZO1k7WTtZO1k7O2E7WTtZO2E7OztXO1MsYzs7Uzs7O2M7Ozs7O2E7OztTLE87NkIsZ0M7UTtxQjs7Ozs7UTs7Uzs7O1k7VztTLFc7OztTLFU7UztTO1c7Ozs7O1Msc0I7UTtRO1E7OztRO1E7OztRLE07bUM7Ozs7STtLLFc7Szs7O00sdUI7TTs7Ozs7TTtLO0s7TTs7Ozs7Szs7YTs7O0k7SSwyQjs7SztNOzs7OztNO0s7Szs7OzthOztJO0ksMkI7Rzs7STtJO0c7O0c7STs7O0c7STs7RyxJO0c7STs7O0ksTztHOztJOzs4QixPOzs7Tzs7OzhCOzs7bUI7OztlOztHOztJO0s7Szs7Szs7TSxVOzs7Ozs7SSxVO0k7SyxNO0k7Rzs7STs7MEI7OztPO2UsTTs7Rzs7STtJO0ssVTs7SyxRO0k7Ozs7Ozs7Ozs7Ozs7OztPO1E7USxVOzs7UTs7O1c7O2M7O2U7O2UsTztlLFU7Yzs7Yzs7ZTs7ZSxPO2U7aUI7YztzQjs7VTtRLFE7OztROztXOzs7YyxXOzs7Yzs7YyxNOztVOzs7O1c7OztjLFc7OztjOztjLE07O1U7OztNO08sMkI7Ozs7SztNOzs7UztTLEk7OztpQzs7O1MsSSxXOzs7aUM7Ozt5QjtTLFE7UztRO00sTzs7Ozs7O0k7Ozs7SztLO007TyxPO08sTztNOzs7OztPLE07Ozs7STtJO0k7SyxPO0ssTzs7SztJO0s7aUI7Ozs7OztLLE07OztJOzs7STtHOztJO0c7O0k7Rzs7Ozs7O0k7Szs7Ozs7Ozs7SSxlO0ksTztHOzs7STs7SztLO3dCO0s7TTs7Ozs7O00sTztNLE87TSxVO007O007TTtPLFU7OztVLFc7VSxPOzs7Ozs7UztNO007TTs7Szs7TSxPO00sYTtLLDZCO00sVztNO007TztTOzs7Ozs7Ozs7OztNO007TTtNLGM7O087USxTO1EsTztRLE07UTtRLE87Tzs7Ozs7Ozs7O087O007Ozs7OztNO087USxPO1EsTzs7Ozs7O087TyxNOzs7Z0I7Ozs7O0s7TSxTO007UTs7Ozs7Ozs7Ozs7SztLO00sVTtNO00sTztLOzs7Ozs7Ozs7SztLOztJOzs7O1M7VSxPO1UsYTtVLE87Uzs7Ozs7Ozs7O1M7UTtJLE87Rzs7O0ksVztJLE87Ozs7Ozs7OztHO3FDLGtDOzs7SztNLE87TSxPO00sVTtNLE87TSxLO00sTztNLGtCOztNLE07O0ssVztLLG9CO0k7SSxZO0k7O0s7OztNLFE7TSxRO0s7STtJO0ssaUI7Szs7SztLLE87STtJLFk7O0s7OztNLE87TSxPO00sTztNO0s7STtJO0ssSztLLFM7SyxPO0ssVzs7O0s7O00sSztNLE87SyxPO0k7STtLLE87SyxRLFc7SyxVO0ksRztZO007TSxNOzs7ZTs7Ozs7SztNLFM7O1E7Ozs7Ozs7Ozs7TSxPO0s7Ozs7Ozs7OztLOzt3QjtJO0ssYTtLLE87O0s7SyxXO0k7SSxjOztLO00sTztNO1E7O007TSxPO0s7Ozs7Ozs7Ozs7STtHOztJOzs7USxPOztRLE87O1EsTzs7Ozs7OztRLE87O1EsTztnQixPOzs7OztPLE87O087O1EsTztPLE87OztPLE87OztPLE87OztPLE87O087OztRLFM7TyxPOzs7Tzs7OztRLFM7USxPO08sTzs7Ozs7Ozs7OztPOzs7O1EsTztRLE87TyxPOzs7Ozs7Ozs7O087OztRLE87TyxPOzs7TyxPOzs7TyxPOzs7TyxPOzs7O08sTzs7OztPLE87OztPLE87OztPLE87Ozs7Ozs7Ozs7O08sTzs7O08sTzs7O08sTzs7Ozs7UTs7Ozs7Ozs7Uyx1QjtTO1MsTztTLE87OztTLE87USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O087Ozs7OztRLHFCO1E7USxPO1EsTztPLE87Ozs7Ozs7Ozs7Ozs7OztPLG9CLE87TyxPOztPOzs7UTtRLE87TyxPOzs7O3lCLDBCO0ksTztHOztJOztLOzttQzs7STtHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLHNCO0c7OztJOzs7SyxZOzs7Ozs7Ozs7OztNO08sTTthOzs7Ozs7O0ksYTtJLHFCLE07SSxPO0c7O0k7STtHOztJLDhCO0c7O0ksOEI7Rzs7SSw4QjtHOztJOzs7OztJO0c7O0ksWTs7STtHOztJLE87Rzs7SSxZOztJO0c7O0ksWTs7STtHOzsyQixxQjs7SSxVOztLO0k7STtLLFE7SyxNO0ssTTtJLE87Rzs7SSxZOztJLEc7SyxNO0k7SyxlO0s7Ozs7OztJOzs7Ozs7Ozs7OztHOztJLFk7STs7SztLO0k7RzsrQixPLG1DOztJO0ssUTtLLFE7OztJOzs7ZTtLOzs7TSxJO0ssRyxxRDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDtLLFU7SyxHLHVEO0ssVTtLLEcsdUQ7SyxVO0ssRyx1RDs7O0c7O0k7O0ssTztJO0ksTztHOztJO0k7Ozs7Uzs7UyxVO1M7OztRO0ssVTs7a0I7O0s7Szs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozt5Qzs7NkM7b0Q7Ozs7OztNLE87OztJO0c7O0k7Ozs7Ozs7Ozs7OztNOzs7OztJO0c7O0k7Ozs7Ozs7OztLOztJO0c7O0k7O2U7O21COzBCOztJO0c7eUIsbUI7Rzs2Qix5Qzs7STtPO0s7SSxNO0c7RztJO0k7Ozs7Ozs7Ozs7STtLO0s7SyxXOztLO0s7O3dCLE07Ozs7O1UsTTtTOztTOzs7OztVO1M7Ozs7Ozs7VyxHOztVOzs7OztXO1csSTtVOzs7Ozt5Qjs7Uzs7OztVO1UsUTs7Ozs7Uzs7Ozs7VTtVLE07Uzs7Ozt3Qjs7c0M7O1M7Ozs7VTs7OzthO2E7WTtVLE87Ozs7O2E7YTtZO1UsTztVO1M7O1M7Ozs7O1U7OzthO2E7WTtVLE87Uzs7d0M7O1MsMkM7Uzs7Uzs7OztVO1M7O1M7Ozs7VTtVO1M7O1Msa0M7Uzs7eUM7O1M7Ozs7O1U7VTtTOzs7Uzs7OztTLEksVyxrQzs7O2lDOzs7aUIsTTs7O0k7O0ssb0I7SyxPO0k7O0ssWTs7Szs7SSxJLHNDOzs7NkI7OztHOztJLGtDLE87SSxXO0ksaUM7Rzs7Ozs7O08sTyxlOzs7Tyx3QixLO087O007O087Ozs7O0k7Rzs7SSxZOztJLE87OztJOzs7TztPLE87OytCLE87Ozs7Ozs7Tzs7K0Isb0IsTyxtQjtPLE87Ozs7Ozs7OztVO1UsTzs7Ozs7TyxPOzs7Tzs7Ozs7VztXLE87VTtPOzs7OztXO1csTztVO087Ozs7Tzs7OzBCLG9CLE8sc0I7TztPOzs4QixPOzs7TztPLE87OztPO08sTzs7O087TztPLE87OztPO08sTzs7O087TyxPOzs7TztPO08sTzs7eUIsTzs7O08sTzs7MkIsTzs7MkIsTztlOztJO0ksTzs7d0MsNkI7O0k7STs7Ozs7O1E7O1E7Ozs7K0I7UyxPO1MsTztTO1EsTzs7Ozs7O1E7OzsrQjtTLE87UzsrQjtTLE87UyxPO1EsTzs7O1E7O1E7OztTOytCO1MsTzs7K0I7UyxPO1M7OztTO3NCO1EsNkI7USxPOztROzs7OytCO1MsTztTO1EsZ0I7USw4QjtRLE87OztROztROzs7O1M7K0I7UyxPO1MsTztTO1MsTztRLE87O1E7Ozs7UztTO1MsTztRLE87O1E7Ozs7UztTO1M7UyxPO1EsTzs7UTs7O1M7UztRLE87O1E7OztTO1M7USxPOztROzs7OztTO1M7UyxRO1M7UyxPO1EsTzs7USx1QztRLE87O1E7Ozs7UztTO1E7aUI7Ozs7O3FDLE87O0s7TTtNLE87TTtLLE87O0c7OztLO0ssTztJO0ksTztHO0c7b0Msd0M7O0k7STs7Ozs7O3lEOzs7OztLOztHOztJOzs7Ozs7OztPOzs7OztROzs7OztPOztJLE87OztJOztLLE87OztJOzs7SSxJLFc7Ozs7SztNLE87TSxPO0ssTzs7STtHOztJO0c7O0k7RztrRDtHOztJO0c7O0k7SyxPO0ssTTtLO0ksSSxVOzs7O0s7TSxPO00sTztLLE87OztJO0c7O0k7O21CLE87SSxvQixNO0k7OztJOzs7O0k7SyxxQztLLGlCO0k7STtLOztNOzs7OztPOzs7TTtLO0ssTztJOztLOzs7USxJLFc7Ozs7UyxJLFUsaUM7OztnQzs7OztROzs7USxJLFc7Ozs7UyxJLFUsbUM7OztnQzs7OztROztROztROzs7Ozs7UztROztROztTOzs7OztTO1E7O1E7Ozs7OztTOzs7UztROztROzs7OztTOzs7UztROztROzs7Uzs7O1M7Uzs7O1k7O1EsVzs7O1E7O1E7Ozs7Uzs7UyxzQjtTLE87OztTLHNCO1MsTztTO1E7O1E7Ozs7O1M7Uzs7O1k7O1MsTztROzs7UTs7UTs7Ozs7O1M7OztTO1E7O1E7Ozs7Uzs7O1M7UTs7UTs7OztTO1M7UTs7USxrQztROztRLGtDO1E7O1E7Ozs7OztTOzs7UztTO1E7OztRLEc7UyxNO1EsSSxJLE87Ozs7OztROztROzs7Ozs7UztTO1E7O1E7OztTO1M7d0IsTyxzQzs7O1k7Ozs7d0IsSTs7O2dEOzs7d0IsTzs7OztZLE87Ozs7dUIsSTs7OytDOzs7dUIsTzs7VztTLGM7MEMsTyx3QjtTLFU7UztROzs7USxJLEksTzs7Ozs7O1E7O0k7O0ssa0I7SyxPO0k7OztLOzs7SyxZOztLOztJO0c7OztLLFk7SyxPO0k7eUIsbUI7SSxRO0k7Rzs7STtJLHVDLFc7Rzs7STs7Tzs7Ozs7Ozs7USxNO087O2dCOzs7Ozs7Ozs7Ozs7Ozs7Tyx1Qzs7Tzs7Ozs7O1EsTTtPLHNCOztPOzs7OztRLE07TyxxQjs7Tzs7O1EsTTs7O1c7VyxjO1U7TyxXOzs7TyxjOztPOzs7O1EsTTs7OztXO1csYztVO1EsTTs7Ozs7VztXLGM7VTtRLE07UTtPLFc7O087Ozs7O1EsTTs7O1c7VyxjO1U7USxNO08sWTs7O08sZTs7Tzs7OztRLE07TyxZOztPOzs7O1EsTTtPLFk7O087Ozs7USxNO1EsTTtPLFk7O08sa0MsTTtPLFk7O08sa0MsTTtPLFk7O087Ozs7OztRLE07USxNO08saUI7O3VDLGlCOztPOzs7Ozs7USxNO1EsTTtPLGlCOztvQyxZOzt1QyxpQjtlOzs7O29CLE8sbUM7STtHOzs7STs7SyxHLHFDOztJOzs7STtHOztJOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087O087O087O087ZTs7Rzs7STs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7Tzs7TztlOztHOztJOztPOztPOztPOztPOztPOztPOztPOztPOztPO2U7O0c7O0k7O087O087ZTs7Rzs7SSw0QztnRDtJLE87RztzQyx1Qjs7STtzQjs7Ozs7Ozs7c0Isd0M7aUMsZ0I7UyxXOzs7Ozs7OzswQjs7Ozs7OztJO0c7eUIsNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Rzs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7O1UsTzs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7Ozs7Ozs7OztxQixPO087OztROzs7WSxPO1c7VyxPO1U7TyxPOzs7TyxPOzs7O0k7O087O087O087ZTs7Rzs7STs7Tzs7TztlOztHOztJOzs7UTs7USxPO2dCLE87O0ksbUI7SSxPOzs7STs7O1E7O1EsTztnQixPOztJLG1CO0ksTzs7O0k7OztROztRO2dCOzs7STtHOztJOztrQjs7a0I7MEI7O0ksTztHOztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3dCO0ksTztHOztJOztlO2U7Ozs7aUI7aUI7O3FCLE87OztPLE87O0c7O0k7OztNOztPLHNCO00sRyxzQzs7O08sYztPOzs7O1c7VyxPO1U7TztPLE87O007TSxPOzs7STtHOztJOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O08sTztlLE87Ozs7STs7O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPOztRLE87O1EsTzs7USxPO2dCLE87Ozs7Ozs2Qjs7Ozs7Ozs7Ozs7OzZCOzs2Qjs7NkI7OzZCOzs4Qjs7OEI7Ozs7O1c7O1c7O1c7O1c7O1c7bUI7Ozs7UTs7O1E7OztRLE87OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztRO2tCO2tCOzs7UTtrQjtrQjs7O1E7a0I7a0I7OztROzs7Ozs7Ozs7Ozs7Ozs7OztRLE87OztROzs7UTtrQjtrQjs7Ozs7TyxPOzs7TyxPOzs7OztRLE87Ozs7TyxPOzs7Tzs7OztRO08sTzs7Tzs7OztRO087Ozs7Ozs7TyxPOztPOzs7UTtPOzs7Ozs7O08sTzs7O08sTzs7O087Ozs7Ozs7TyxPOzs7TyxPOzs7TyxPOztPLGtCLE87TyxPOzs7aUI7aUI7OztpQjtpQjs7MkI7O08sbUI7TyxPOzs7TyxPOzs7TyxPOzs2Qjs7OztRO1EsTzs7TztPLE87Ozs7UTtRLE87O087TyxPOztPLG9CO08sTzs7TyxvQjtPLE87O08sb0I7TyxPOztPLG9CO08sTzs7TyxvQjtPLE87OzRCOzs0Qjs7Tzs7O1E7UTtPLE87OzRCOzs0Qjs7NEI7Ozs7STs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7Z0I7Ozs7OztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROztROzs7UTs7Ozs7O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087O087ZTs7Rzs7SSxTO2E7Ozs7O1E7O1E7O1E7OzJCOzs7Tzs7Tzs7OztPOztPOzthO3NCO0c7O0k7OztnQjtnQjs7OztJOzs7USxPOztRLE87O1EsTztnQjs7O0ksTzs7O0k7O08sTzs7TyxPO2U7Ozs7Ozs7O3lCLE87OztRLE87OzBCOztROztTOzs7YSxPO1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTthO2E7Yzs7O2lCOzs7O2tCO2lCO2lCO2dCO2E7YSxPOzs7YTthLE87Ozs7Ozs7O1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7Ozs7OztROzs7Uzs7WTs7YTs7Yzs7O2EsTzs7WTtZLE87VztRLE87Ozs7Ozs7OztROzs7Uzs7O2EsTztZO1ksTztXO1EsTzs7Ozs7Ozs7O1E7OztTOztZLEksYzs7YTs7Yzs7O2EsTztZO1k7OzthOztjOzs7YSxPO1k7WTs7d0I7OzthOzs7WSxPO1c7O1EsTzs7Ozs7Ozs7O1k7O2E7O2M7OzthLFc7YSxPO1k7WTs0Qjs7O2E7OztZLE87VztRLE87OztROzs7Uzs7O2EsTztZO1ksTztXO1EsTzs7Ozs7Ozs7Ozs7YTthLE87O1k7WSxPO1c7USxPOzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7Ozs7Ozs7Ozs7O1EsTzs7OztRLE87Ozs7Ozs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7Ozs7Uzs7O2EsTztZO1ksTztXO1M7USxPOzs7Ozs7Ozs7Ozs7USxrQzs7Ozs7Ozs7Ozs7Ozs7bUI7UTs7O1MsTztROzs7Ozs7OztTLE87USxPOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7SztNOztTOzs7WTs7ZTs7ZTt1Qjs7O1k7O1ksTTs7UTtNO0s7Ozs7Ozs7Ozs7OztLOzs7Ozs7Ozs7Ozs7Ozs7O2lCLE87O007TTs7Ozs7Ozs7Ozs7Ozs7OztJLGdCOztJLE87OztxRDs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0s7TTs7O007Szs7TSxZO2tCOztNO087USxVOzs7OEI7Tzs7Ozs7TztlO087O0s7O007MkIsb0IsVztNLFc7TSxPO0s7O007O087TztNO007TyxPO08sTztPOztPO087TzswQjs7TztPO007TTtNO0s7O0ssMEI7SztLOzs7a0M7O0k7STs7OztLO0s7STtJOztLO0k7Ozs7Ozs7OztLOzs7Szs7O0k7O0s7O00sTztLLGM7STs7Szs7OztNO1E7O00sSzs7O0s7Ozs7O007O087Ozs7Tzs7OztNLEc7TztRO1U7O1E7UTs7OztTO1M7Uzs7Ozs7O1E7Uzs7Ozs7Ozs7Ozs7OztPO087Tyx5Qjs7OztTOztVO1M7Uzs7Ozs7Ozs7TztRLE07UTtROzs7O1M7UztTOzs7OztPO087Tyx5Qjs7OztTLDJCO1M7Uzs7Ozs7Ozs7TztRLE07UTtROzs7O1M7UztTOzs7OztPO08seUI7Ozs7UywyQjtTO1M7Ozs7Ozs7O2tCOztLOzs7YTs7STtJLEksSSxzQzs7SyxJLGU7Ozs7Ozs7UTtROzs7Ozs7O08sRyx1Qjs7Ozs7TSxPOzs7Szs7TSxVO007Tzs7Ozs7TztPOztNO007SztLOztNOzs7O007TTtLLEksVyx1Qzs7Ozs7TTtPLE07TTs7TztPOzs7Ozs7UTs7UyxJLHVCLE87Uzs7Ozs7Ozs7TTs7Ozs7Tzs7UTs7Ozs7Ozs7USxHO1M7VTs7Ozs7Ozs7Ozs7O1U7O1U7UztTO1M7VTs7VTs7Ozs7OztRO1M7OztPO1E7Ozs7OztNO007O0k7O0s7OztNOzs7TTtNOzs7Ozs7O0s7SztLLHlCLHdCO0s7STs7Szs7TTtNO007TTs7OztPO1E7OztRO1E7Ozs7Ozs7TztPO08seUIsd0I7TztnQjs7OztPOzs7Ozs7O007TztPO087TztPOzs7Ozs7OztVO1c7Ozs7Ozs7Ozs7OztXOztXO1U7VTtVO1c7O1c7VTs7Ozs7VTs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7TTtPO087TztPO087Ozs7UTtTOzs7Ozs7Uzs7Ozs7OztVO1U7UztTO1M7VTs7VTtTOzs7Ozs7UTs7Ozs7Ozs7OztLLEksK0I7SztLOzs7SztNLG9CO00sTztLLE87STs7SyxXO0ssTztJOztLLFc7SyxPO0k7O0ssa0M7SztNLE07O007TSxPOzs7SztNO00sTzs7SztNOzs7Tzs7Ozs7Ozs7TztRO1M7Uzs7O1E7O087UTtROzs7Tzs7TTs7Z0MsdUM7Z0Msc0M7Ozs7USxJLHFCO1EscUI7O087OztXO1k7WTtZO1cscUI7VTtRLE87TyxPOzs7aUMsc0M7aUMsdUM7Ozs7TyxJLHVCO08sc0I7O007OztVO1c7VztXO1Usc0I7UztPLE87TSxPOztLOztNOzs7Ozs7TTtNOzs7Ozs7O1M7VTtVOztVLE87UyxPOzs7TztRO1E7O1EsTztPLE87OztLO007TztPOzs7Ozs7O0s7TTtNOzs7Ozs7OztLOzs7TTtNLE07a0I7O2dDO0s7O00sZTtNLEk7SztNO0s7SyxJOzs7O087Ozs7Ozs7Ozs7Ozs7OzJCOzs7Ozs7VztZOzs7Ozs7WTs7Ozs7Ozs7OzswQjs7Ozs7Ozs7OztVOzs7Ozs7Ozs7UztVO1c7Ozs7O1U7VTtVOztTOzs7OztPOzs7OztLOztNO007TSxJO00sTTtNO007TTtNOzs7SztNOztPO1E7Ozs7TyxjOzs7OztRO1E7Ozs7O2M7ZSwrQzs7O1E7OztPOzs7Tzs7Ozs7USxNO1EsTTtROzs7O1M7VTs7OztTO1UsSSxNOzs7Ozs7VTtVOzs7Ozs7O1c7Vzs7Ozs7Uzs7Ozs7TztRO1EsTzs7O1k7YTthO2EsUzs7O087Ozs7O1k7YSxPOzthLE87WTtZLFU7WSxPO1c7Ozs7O087O087Tzs7O087UTs7VyxNO1U7USxTOzs7VztXO1c7VTtPO087Tzs7TSxJLG1COzs7O0ssK0IsUzs7TTtPOztRLFE7OztRO21DLE8sYyxxQjtPLE87OztNO0s7SyxnQjtLO0k7O0s7TSxNO0s7TSxZO007OztLLE87STs7SztNLE07SztNLFk7TTs7O007O2dDOzhCLFc7SyxtQjtLLE87STs7Ozs7NkIsWTs7OztrQzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLFcsTzs7O0s7SyxXO0k7SSxROztLO0s7SztJO0k7SSxPO0c7O0k7OztnQixPOzs7Ozs7OztLO2lCOzs7Ozs7O0k7Rzs7SSxRO0ksTztHOztJO0c7OztJLFc7OztJLG9CO0ksTztHOzs7STs7Ozs7Ozs7Ozs7OztROzs7Ozs7OztROzs7UztROztROzs7O1M7UztRLE87Ozs7Z0I7O0k7RztHOztvQixPLGlDOztzQiw0QjtJLE87Rzs7SSxXO2EsTTtJOzs7Szs7O0k7RztHOztJLEk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxPO0ssUztLLFE7Ozt3QixPLGtDO0ksbUIsTSx3QztzQiwwQjtJLEk7O29CO3FDO2lCOzs7Ozs7Ozs7UyxhOztROzs7Ozs7NEI7O1E7Ozs7Ozs7O1E7Ozs7O1Msc0IsTztTLGE7O1E7Ozs7O1M7OztVLE87VTs7O1E7Ozs7Ozs7O1E7O0ksTztHOztJLFk7O0ksTztHOztJLFc7STtHOzs7STtLLE07O0k7Ozs7STtLLE07O0k7Ozs7SSxXLE07O0k7Ozs7SSxXLE07O0ksZTs7O3FCLGtCLGdDOzRCLHFCOztJO087SyxPO0ksVztJLE87RzswQixPLHlDOztJO0s7OztNOzs7SyxtQjs7SSxPO0c7MkIsTywwQzs7STtLO2lCLE87O0s7STtJLFk7O0s7SztvQjtNOzs7Ozs7TyxNO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007TSxJOzs7Ozs7O00saUI7TTs7STtJO0c7OztLO0ssWSxPOztLO00sNkI7TTs7OzsrQjs7O0k7SSxPO0c7O0ksVztJLE87Rzs7STtJOzs7Ozs7OzhCOztTOzs7VTs7Ozs7aUIsTzs7SyxXOztHOztJOztLLGlDO0ssTztJO0ksTztHOzs7STtHOzs7SztLO29COzs7O087O007OztPOztVO1csTTs7VTtTO08sUTs7O1U7VTt5QjtXOzs7OztZLE07WTs7Ozs7O2M7O2U7ZSxPOzs7Ozs7Ozs7YSxJLDhCOzs7Ozs7Z0Isb0M7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCLE07OztlLE07Ozs7OzthO2EsTzs7Ozs7Ozs7Ozs7VztXLEksa0I7Ozs7Ozs7VyxXO2M7WTtXLE07O1M7b0Msc0M7Tzs7Ozs7STtJO0c7O0ksMEI7SSxvQjtHOztJLFk7O0k7Rzs7SSxVOztJLEcsa0I7SSxHLHFCO0ksSTtJOzs7SSxZOztJLEcsa0I7O0k7Ozs4QixxQjs4QiwrQzs7SSxXO2U7Ozs7Ozs7Ozs7Ozs7O0k7STtHOztJOzs7TSxxRDtNOzs7STtHOzs7SztLLGM7STtJLE87RztHOztJOzt5QixrQjs7STtJOzs7Ozs7NkM7O0s7O0c7O0k7Z0MsNEIsVztJLFU7STs7O2EsbUI7OztZO0c7O0ksWTs7c0M7STs7O0ssVzttQjs7O0ssTyxXOztJLE87Rzs7OztLOzs7OztNLFE7TSxVOzs7O3NEOzs7OztLOzs7TTtPLFc7a0IsNEI7SztJO0ksTzs7O0ksb0I7Ozs7TTs7Ozs7Ozs7Vzs7OztVOzs7Ozs7O1c7OztVOzs7O087cUM7Ozs7UTs7OztTOzJCOzs7OzttQjtROztTO1E7Ozs7O1E7UyxRLG1DO1M7O1M7UTs7OztROzs7TTs7O0k7Rzs7STtJOztLOzs7TTtNOztLOztHO0csYTs7SSxzQjs7Ozs7Ozs7UTs7O087Ozs7Ozs7OztZLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNOztLOztJO0c7O0k7STs7Ozs7OztTLGtDO1MsUzs7OztpQjs7Szs7Rzs7STtJLHVDO0k7Rzs7SSxXO0k7Rzs7SSxROztJLGtCLHVCO0k7Szs7O0k7RzsyQixXLDZCOztJLG1DLFc7Ozs7O0s7SyxXO0k7SSxXO0ksTztHOzs7Ozs7Ozs7O087USxLO1EsUTtRLE07O1E7Uzs7Ozs7O1MsTztTOzs7OzttQjtPOzs7VyxZO1c7Ozs7Ozs7WTs7WTthLE07YTs7Ozs7Z0IsRyw0QjtpQjtnQixNO2U7YTs7YSxNO1k7Ozs7Z0I7Z0I7ZTthOzs7O2lCOzs7O2E7OztnQixvQixPO2dCLE87ZTthLFE7YSxPOzs7Z0I7Z0IsTztlO2EsTyxXOzs7Z0I7Z0IsZTtlO2E7ZSxXO2EsUzthLFc7bUM7YTtlOzs7Z0I7Z0I7aUI7OztxQixlO29CO2tCOzs7OzttQjs7OzttQjs7OztvQjs7Ozs7Ozs7Ozs7Ozs7OzttQjs7Ozs7Ozs7Ozs7O3VCOzs7Ozs7d0I7MkMsTyxrQzs7Ozs7Ozs7MkI7OzRCOzZDO2tEOzs7Ozs7MEI7Ozs7MkI7Ozs4Qjs7Ozs7a0M7OzBCOzsyQjs0Qzs7NEM7Ozs7eUI7Ozs7OzBCOzJDOzs7Ozs7OEI7Ozt5Qjs7Ozs7MEI7MkM7Ozs7Ozs7OEI7Ozt1Qjt3Qjt3QixPOzJDLGM7d0I7dUM7dUI7OztzQixHOzs7Ozt5QjswQixPOzBCOzBCOzs7Ozt5Qjs7Ozt1Qjt3Qjs7Ozs7dUI7d0IsVzt3Qjt3Qjs7Ozs7O2lCOzs7O2U7YTs7O2dCO2dCO2U7YSxZLFc7YTs7YTs7O1k7b0I7OztXO1k7OztXOzs7Ozs7OztROzs7USxxQjtRLFc7Tzs7Ozs7TTtPOzs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7UztVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1c7Ozs7Ozs7WSxJO1ksTTs7Ozs7OztXO1k7b0I7dUI7O1k7WSxJOzs7VyxJOzs7Ozs7Ozs7UTs7OzthO2M7Ozs7O2UsTTtlOztlO2U7O2MsUzs7O1MsTztROzs7O2M7ZTtlLG1CLHNCOzs7aUI7OztROzs7O2M7Ozs7Ozs7Ozs7Ozs7OztPO1E7Ozs7O0k7Rzs7O0s7Ozs7Ozs7TztRLFE7USxLO087Ozs7O087OztrQztRLEk7Ozs7O007TyxJOzs7Ozs7Ozs7Ozs7TTs7USxNO08sVTtPOztNLEk7O0k7O0s7Ozs7Ozs7OztLLFM7SztNOzs7Ozs7TSxPO0s7Ozs7O0k7STtHOztJLFcsTTs7Ozs7OzBCO007Tzs7O1U7VTtXLE07VSxJOzs7UztPLFU7TywyQyxXO087Ozs7O00sWTtNOzs7VTs7Z0M7O2E7c0M7O1M7OztVOzs7VztVLHNCO1M7TyxPO087OztVO1U7UztPLFM7TTs7O0k7Rzs7STtHOztJO0s7OztJO0c7O0ksWSxPO0k7OztLO0ssTztLO0k7OztJO3lCLGtCLE8sMkI7SSxZOzs7Ozs7O0ssYTs7OztJO0c7OztLOzs7OztNO00sTTtNLFc7TSxPOztLOztlOzs7Ozs7O0ksTztHOzs7Szs7Ozs7TSxNO00sa0I7O0s7Ozs7Szs7O007b0I7O2dCO0ksVztJLGlCO0c7aUMsVzswQyxXOztJOzt5RTtLO0s7SyxNOztJOzs7YyxhO2E7Ozs7O0c7O0k7eUU7SSxNO0c7O0k7OztLLE87O0ksTTtHOztJOztHOztJO2tDOztLLE07O0k7RztHLG1COztJOzthO2MsWTtjLE07YyxROztjO2UsTztlLE87YyxPOzs7YSxJLFU7Ozs7O2M7ZSxPO2UsTztlLE87ZSxPO2MsTzs7O2EsTzs7RztHO0k7O0k7O0k7Ozs7Ozs7Ozs7O0k7O0c7O0k7O007TyxVO087Tzs7TztNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO00sUTtNO00sTTs7O1M7UTtNOztNO0s7Ozs7Ozs7Ozs7Ozs7Ozs7OztLLEksOEI7Ozs7Ozs7O0k7Rzs7SSxXOztLO0s7SztJO0k7SSxPO0c7O0k7OztLLE87O0ksTTtHOztJOzs7SyxPOztJLE07RztHO0k7VTtJO1U7O0ksaUIsTztJLFM7SSwwQjtHOztJLFMsTTs7SSxXO0k7Szs7OztJO0c7O0ksVTs7SztNOzs7Ozs7Szs7O2U7Z0I7Z0I7ZTs7OztjOzs7Ozs7TSxNOzs7STs7OztlO2U7Ozs7Ozs7YztjLE87YTtHOztJO0s7OztlO2M7O0k7Ozs7ZTtjO3dDO2MsVTtjO2E7Rzs7SSx5QixTOztLO007O087OztPOzRCLFMsc0I7TTs7O0s7STtJO0c7O0ksWTtJOytCOzs7O0s7SyxnQjtJO0k7SyxPO0ssTztLOzs7SyxTO0k7Ozs7O0s7SztJO0ksVztJO0c7O0k7STs7Ozs7TyxTO1E7TyxJOzs7O0s7O0c7OztLO0ssTztJO0ksVTtJO0c7O0ksWTs7STs7Ozs7O0ksWSxPOzs7O0s7Ozs7OztJOzs7STtLO0s7Ozs7O0ssUTtNO087O1c7Ozs7TztPO007Ozs7OzRCOzs7OztrQjs7SztJO0ksTztHOytCLHVCOztJO0c7O0k7OztLO00sVzs7O0ksVztJLE87RzswQix3QjsrQix1Qzs4Qiw4Qzs7STtHOzZCLFc7dUMsK0I7O0ksSSxZOzs7O00saUI7O007Ozs7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztLLE8sNkI7STtJLE87Rzs7STtJO0s7O00sUTtNOzJCLFEsOEIsUzs7Ozs7Ozs7Ozs7VTs7Ozs7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0I7VTs7Ozs7VztVO1c7Ozs7OztLO00sTTs7TTs7Ozs7TztPOzs7Ozs7Ozs7b0I7OztLO00sVTs7Ozs7d0I7VTs7Ozs7VyxZOztXOzs7Ozs7ZSxNOzs7Ozs7Ozs7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7ZSxpQztLO00sTTtLO007aUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7Szs7Ozs7SSxPO0c7O0ksWSxPOzttQjs7Ozs7Ozs7STtHOztJLFk7STtnQjs7STtHOztJO0ssWTtLOzs7OztNOzs7SztNO0s7OzZCOzs7UTs7USxNOztJO0k7Szs7O0s7STtHOztJLFE7STs7Ozs7OztHOztJOzs7Ozs7Ozs7UTs7UTs7O1E7UTs7UTtRO1MsTztTLE87USxPOztJO0c7Rzs7STs7aUI7Szs7Ozs7OztNOzs7O1U7Vzs7O1k7OztXLEksWTs7O3FDOzs7VyxlOztVLE87Uzs7OztNLE87TSxNO0ssSSxVOzs7O00sSTs7O0s7OztNLFE7Ozs7O087UTtRLDBCO1EsTztPO2U7Ozs7OztNO087Tzs7O2Esc0I7Ozs7TztPOzs7OztHOztJO0ssVztLOzs7OztPLG1CO087O3FCLEk7Ozs7O1E7Ozs7Ozs7O007TyxJLFU7Ozs7Ozs7Tzs7O1E7Ozs7Tzs7O21COzs7OztJO2lCLE87SSxJO2dCLE07O0k7Rzs7Ozs7OzZCLE87O1E7OztTLHNDO1MsUzs7Ozs7Ozs7OEIsOEI7USxPOzs7OzhCLDhCO1EsTzs7Szs7OztJOzs7O1E7a0I7Ozs7Ozs7OztTO1U7Ozs7VztVOzs7Ozs7Ozs7Ozs7UztVOztXO1U7Ozs7OztPOzs7O1E7UTtRO087OztRLFc7O08sTzs7SSxPO0c7O0k7Z0IsTzs7STtHOzs7STtJOztNLE87SyxJLFk7Ozs7MEIsTTs7Ozs7Ozs7Ozs7Ozs7O2tCO007Ozs7O087OztNOzs7O08sSSxVOzs7O1E7Uzs7Ozs7O087OztRO1E7Ozs7Ozs7Rzs7STs7Ozs7TSxLO087TTtPOzs7TTtpQzs7Ozs7STs7Ozs7O2M7OztHOztJLHFCOzs7SyxNO0k7Ozs7O0s7Ozs7Ozs7OztRLDBDOzs7Ozs7Ozs7OztpQjs7Ozs7O0k7OztLO0s7SSxvQjtJO0ssUTtLO0s7OztJOzs7Ozs7Ozs7OztJOzs7O0s7OztVOzs7Ozs7Ozs7O1U7Ozs7WTtJOzs7STs7Ozs7Ozs7Ozs7OztVOzs7O1c7Vzs7Ozs7Ozs7Ozs7Ozs7O1EsTTs7O087O2lCOzs7Ozs7O087O1E7Ozs7Tzs7TyxpQjs7USxNO087OztRLFM7UTtROzs7Ozs7OztvQjtxQixvQjtxQjs7b0I7NEM7Ozs7Ozs7Ozs7Ozs7O1U7OztXOzs7Ozs7Yzs7ZTs7Yzs7ZTtnQjs7O2dCO2tCO2dCOzttQixZO21COzs7OztvQjs7O21COzs7Ozs7bUIsTTs7a0I7Z0I7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQixNOzs7Ozs7Ozs7O2dCO2lCLE07OztvQjs7O3FCLE07b0I7Ozs7bUI7aUI7bUI7Ozs7O2U7OzttQjs7O29CLE07bUI7Ozs7a0I7Z0I7a0I7ZTs7YztlLFM7Ozs7OztlOzs7bUI7bUI7a0I7Z0I7a0I7O2dCLE07ZTs7Z0IsbUMsbUI7Z0I7O21CLE87Ozs7Ozs7OztrQjtnQixPO2dCLE87Z0IsWTtnQjtrQjtnQjtzQywrQjtpQixZOzs7O2dCO2lCOzs7aUI7Ozs7Ozs7O3NCO3VCOzt3QjswQyxPLGdDO3dCLE87dUI7dUIsTyx5Qzs7O2tCLFU7OztpQjtrQjt5QzttQjs2Qjs7Ozs7OztnQjtpQjs7O29COzs7OztxQjs7cUI7b0I7b0I7cUIsVTtxQjs7cUIsVTs7cUIsTzs7K0I7Ozs7b0I7b0I7b0I7bUI7aUIsVTs7Ozs7O2dCO2lCOzs7Ozs7Ozs7Ozs7YztlO2lCO2U7O21COzs7O2U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQjs7Ozs7O3FCOzs7Ozs7Ozs7Z0I7Ozs7Ozs7Ozs7aUI7OztrQixROzs7O2dDOzs7aUI7OztxQjtxQixjO29CO2tCLFM7OztxQjtxQixjO29CO2tCLFM7a0IsTztrQjs7O2tCLFM7aUI7Ozs7OztpQjs7O3FCO3FCO29CO2tCLE87OztxQjtxQjtvQjtrQjs7O3FCOzs7Ozs7OztrQjttQixJOzs7c0Isa0I7a0M7O3NCO3VCLEksTzs7Ozs7Ozs7c0IsTzs7a0I7a0I7a0I7bUI7bUI7OztzQjs7OztxQjtrQjs7bUI7Ozs7dUIsb0I7bUM7OztzQjtvQixTO29CO29CLE87O29CLE87Ozs7OzRCOzs7Ozs7Yzs7Vzs7O2U7YztjOzt3QixvQjs7Ozs7O2lDOzt3Qjs7OzswQjs7Ozs7eUI7eUI7d0I7MkM7Ozs7Ozs7Ozs7Ozs7OztVOztvQjs7Ozs7Ozs7VTs7Vzs7Yzs7O2U7OztjOztpQjs7O3FCOztzQixNOzs7cUI7b0I7a0I7b0I7Ozs7Ozs7Ozs7O2lCOzs7cUI7O3NCLE07OztxQjtvQjtrQjtvQjs7Ozs7O2lCO2tCOzs7cUI7cUI7c0IsTTs7O3FCO29CO2tCLEs7a0I7Ozs7O29COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjOztVOztvQjs7Ozs7Ozs7VTs7O29CLFk7b0I7OztzQixXO3NCLE87OztzQixNOzs7cUIsTzs7b0I7cUI7O3NCO3NCLFE7O3NCOzs7OztxQjtxQjs7b0I7NEM7Ozs7Ozs7Ozs7Ozs7OztXLE07O1U7OztvQjtxQjs7b0I7OztzQjtzQixPOzs7c0IsTTs7cUI7O3NCO3FCLE87O29CO3FCOztzQjtzQjs7Ozt1Qjs7d0I7OzsyQjsyQjs0Qjs0QixNOzRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQjswQjt1Qjs7O3FCLE07OztvQjs0Qzs7Ozs7Ozs7Ozs7OztVOzs7Vzs7Yzs7O2U7YyxHO2U7Z0IsTzs7O21CLGtCLFE7Ozs7Ozs7bUI7a0I7ZTs7Ozs7ZTtjO2M7ZTtlO2lCO2U7OztlOzs7Ozs7Ozs7Ozs7OztjO2U7Ozs7Ozs7Ozs7Ozs7O2lCOzs7OztpQjs7Ozs7O2tCLE07aUI7Ozs7Ozs7Ozs7aUI7Ozs7aUI7Ozs7Ozs7Ozs7ZTtnQjs7Ozs7Ozs7Z0I7Ozs7OztjOzs7Vzs7OztlLFk7ZTs7Ozs7OztnQjs7Z0I7Ozs7aUI7aUI7aUIsTztnQixTLDZCO2dCLFU7Z0I7aUI7O2tCO2tCOztrQjs7cUIsb0I7cUI7O2lCOzsyQjs7Ozs7OztnQjtpQjtpQjs7Z0I7OzBCOzs7Ozs7O2UsTTs7Yzs7VTs7b0I7Ozs7Ozs7O1U7VyxPO1c7O2M7OztlOzs7ZSxTO2U7OztlO2lCOzs7Ozs7Yzs7Vzs7d0M7Yzs7d0Isb0I7O3lCOzswQjs7OzZCOzs7Ozs7OzRCO3lCOzt3QixNOzs7Ozs7Ozs7VTs7b0I7Ozs7Ozs7OztHOzs7STtLLFE7OztLOzs7STtHOztJO2tEO0k7Rzt3QixPLHlDOztJOzs7OzZCLDBDO0ssTzs7STtHOztJLE87Rzs7SSxZOzs7OztTOzs7VSxPO1M7VSxXO1U7Ozs7O1M7UTtLLEssaUQ7O0k7OztJO0s7Rzs7O0k7SztNO00sVTs7O0ssc0I7SyxNOztJO0ssWTtLO2dCO0s7SSxJLFU7Ozs7TSxNOzs7O0ksd0I7Ozs7SztNLE87TSxPO00sUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtHOzs7STtLO0s7SztPO21DLG1CO0k7Ozs7Ozs7O2M7O2E7Rzs7STs7Rzs7STs7Rzs7STs7Rzs7STs7Ozs7UTs7O1E7O3NDOzs7Ozs7UTs7Ozs7OzthO2E7WTtZLE87Vzs7UyxzQjtTLE87Uzs7UztROztROzs7OztTLHNCO1MsTzs7O1k7WTtXO1E7O2dCOzs7O1Esd0M7UTs7USwyQztROztROzs7O1M7UTs7c0M7O21DOzs7O0s7O0ksTzs7O0k7a0M7O0ssbUIsSTtLOztJO0s7SyxTO0ssWTs7SztLLGU7STtJLHFCO3lCLG1CLFU7STtLLGM7Szs7OztXOzs7Ozs7Ozs7OzswQyxrQztnQixPOzs7Ozs7Ozs7Z0IsTzs7Ozs7VyxjOzZCLGUsMkI7VyxnQjtXOzs7b0I7OztVO1U7VztXLGM7VTs7VyxPOztVOztXLE87O1U7aUI7VSx1QixXLGdDO1U7OzBCOzs7Vzs7VSxPOzs7Ozs7Rzs7STtLLE87OztTOzs7O3NCLHVCO0ksSSxPOzs7Ozs7Ozs7Yzs7Ozs2Qjs7YTtHOztJO2tDLE87dUIsTTs7STtHOztJOztLO0s7STtJLEksTzs7SztpQixPOzs7b0I7Ozs7TSxXO007O007TyxNO2lCOzs7TSxNOztLO0k7SSxXO0c7O0k7O087Ozs7O1E7OztXOztRLE87Tzs7TyxNO2dDOztHOztJO0ssVzs7STtHOzs7SSxTOztJLE87OztJLGU7eUIsa0IsYztJO0ssVztLLE87SztLO0s7SztPLG1DLGlCO0s7Ozs7Ozs7Ozs7O1U7VSxvQjtVO1csZTtXOzs7VyxPOztXLG1CLE87O1c7VTtVLFU7NEIsdUI7VTtXLE87Vzs7VztXO1U7VTtXLGE7VztXOzs7Z0I7aUI7Ozs7a0I7Ozs7aUI7OzJCOzs7Ozs7OztnQjs7Ozs7Ozs7VyxPO1U7a0I7O1M7SSxPO0c7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7SSxVO0ksUzs7Ozs7Ozs7O0k7O0s7TSxJLGMsMkM7Ozs7O08sUztPO087OztJO0c7RztJO0k7STtJOztJO0k7STtHOztJO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthLGtDO2EsVTs7Ozs7Ozs7O007O0s7O0c7O0ksc0I7O0ssbUI7SztNLFE7TTtPLEksZTs7Ozs7Tzs7OztNOzs7OztNOztNOzs7STtHOztJOzs7O0c7cUIsd0I7RyxxQjs7SSxJLFE7OEIsbUM7SSxhO0k7STtHOztJO0ssTTs7SyxNOztJLFc7Ozs7Szs7TTs7Ozs7Ozs7Ozs7TTs7O0k7SztpRCwyQjs7O0k7Rzs7SSxxQjs7SyxNO0ksc0I7O0ksSSxROzs7Ozs7Ozs7Ozs7O0k7NkIseUI7RztHO0k7STtJO0k7O0k7STtHOztJOzs7O1M7OztTLEksUyxrQjs7VTs7Ozs7Ozs7O1M7UyxlO1M7UTtLLE87OzswQixPO3dCLE8saUI7SSxPO0c7O0k7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7SztJO0c7O0k7Ozs7Ozs7Ozs7cUI7O0s7O0k7Rzs7STs7Ozs7OztvQjs7STtHOztJOzs7Ozs7O29COztJO0c7O0k7Ozs7SztJO0c7O0k7Rzs7cUIsMkI7STtLLFE7OztJOzs7O007Ozs7Ozs7OztJO0c7O0k7Szs7Ozs7O1EsTzs7OztLLFc7Rzs7STtLLGlDO0s7SyxPLHFEO0c7O0k7Ozs7OztLOztJO0c7O0k7Ozs7Ozs7SyxJLFE7OztnQzs7O0s7O0k7Rzs7STtLOzs7STs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7OztLLFE7SyxnQixPO0s7TSxNLFc7TSxNLFc7TSxNLFc7Szs7STtJO3VCOztrQjtJLHFCLFU7a0I7O0k7Rzs7SSxXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPLE07Ozs7OztJLFU7STs2QztJO0k7Rzs7SSxXOzs7Ozs7O0k7Rzs7STtJO0c7O0k7STtHOztJO2U7Ozs7Ozs7STtHOztJOzs7O0ssTzs7STtHOztJOzs7O0ssTzs7STtHOztJOzJCLE87STtHOzs7Ozs7OztJLE87OztJO2tEOzs7O007Ozs7Tzs7TTs7O007TTtNOzs7STtJO0c7O0k7d0I7Ozs7c0I7TTs7O007OztJO0k7Rzs7STttQjs7OztzQjtNOzs7TTtNO007OztJO0k7Rzs7STtLOzs7SztJO0c7OztLO007OztNOzs7TTs7Ozs7Tzs7Ozs7Ozs7TTtPOzs7Ozs7Szs7Ozs7Ozs7STtJO0c7O0k7Szs7O0s7STtHOztJO0s7Ozs7TTtLO0k7STtLLFE7OztJOzs7Ozs7OztLOztNOztLOzs7Ozs7O1U7Ozs7O0k7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O00sTzs7O2lEO0ssTzs7STs7Ozs7Ozs7dUQ7O0ssTzs7K0I7OztJO0s7SztLOztLOzs7O007SztJO0ksRzs7O3NCO007O087OztVOzs7Ozs7Ozs7Ozs7OzthOzs7O3NCO007Ozs7Ozs7Ozs7TTtNO007OztNOzs7STtJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxrQjs7SztJO0c7O0k7SztJO0c7RyxzQjs7STtHOztJO29DLHNCO0ksTztHO0c7O0ksZ0I7STtNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0ssVztLOzs7Ozs7OzJCOztNLE07Szs7Rzs7STs7Ozs7O087USxTO1EsTztRLE87UTs7aUI7OztPOzs7O0s7O0k7Rzs7STs7Ozs7Ozs7Ozs7NkI7Ozs7NkI7Ozs7OEM7O0s7O0k7Rzs7SSxZOztLOzs7O00sVTs7Ozs7Ozs7O0k7SztLOzs7Ozs7O1k7Ozs7YSxPO2EsUTtrQyx5QjthLFM7WTs7O1k7Ozs7YSxVOzs7O3VCOzs7WTs7Ozs7Ozs7Ozs7O21COzs7Ozs7WTs7OzthLCtCOzs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7O1k7Ozs7YTttQzs7Ozs7Ozs7WTs7Ozs7YSxVOzs7MkI7WTs7Ozs7WTs7Ozs7YSxVOzs7K0I7WTs7O1ksdUIsVTs7Ozt5Qjs7O1k7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7O1UsUzs7Uzs7Vzs7O1k7cUI7VSxPOztvQjs7O3NCOzs7d0I7OzswQjs7OzRCOzs7O1M7Ozs7STtHO0c7SSxhO0ksb0I7SSxtQjtJLGdCO0k7TTtJO007SSxpQjtJO007STtNO0ksZ0I7STtNO0k7TTtJLG9CO0k7TTtJO007SSxtQjtJO007STtNO0ksZTtJO007STtNOztJOzs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7Ozs7O1U7O1U7O1U7O1U7O1U7O1U7O1U7a0I7OztHOztJO0ssTTtLO0ssUTs7OztLO087O1U7O0k7O087O087O087USxXO1EsTztPLEc7UTtTLE87dUI7OztPOztPO2dCO087O087Ozs7Ozs7OztPLGlCO087O0c7RztJO007SSxVOztJLE87Rzs7SSxPO0c7O0k7Ozs7Ozs7OztTOzs7VSxPOzs7VTs7Ozs7Ozs7Ozs7VyxNOzs7O1M7Ozs7Ozs7Ozs7Ozs7OztTLE87Ozs7Ozs7Uzs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsVzs7Ozs7Uzs7Ozs7Ozs7Ozs7Ozs7O007Ozs7O3FCO1M7Ozs7USxPOzs7MEI7Ozs7Ozs7O1UsbUI7VTs7Ozs7Ozs7Ozs7O1csRzs7Ozs7O1U7Ozs7OztXLE07Ozs7Uzs7Ozs7bUI7O1MscUI7Uzs7OztJLE07dUI7Rzs7STtJO0s7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7Ozs7Ozs7Ozs7OztJO2EsTTtJO0c7O0k7Szs7UztLOztJO0ssVztLO0ssZTtJO0k7eUIsbUIsZTtJO0ssTztLO0k7Yzs7Rzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7O0k7OztTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7OztRLE07TztJOzs7USxNO087STtVOzs7SyxXO0ssTztJO0k7SyxTO0s7Ozs7TTs7TyxPO2M7O2lCOzs7O2dCO0ksSSxNLDZDOzs7Ozt1Qzs7Szs7Ozs7O0ksTztHO0c7O0ksbUIsTTs7STtHOztJOzswQzs7SSxPO0c7OztLOzs7Ozs7Ozs7Ozs7Ozs7SztJO0ksTztHOztJOzs7Ozs7USxPOzs7Ozs7Ozs7Ozs7Ozs7O0s7O0k7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2E7YztjOzs7Ozs7Ozs7Ozs7Ozs7VztXO1c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzthO2M7Yzs7Ozs7Ozs7Ozs7Ozs7O1E7UTs7OztNO087USxRO1E7USxNO1EsTztROzs7VyxXOztRLFU7Ozs7Ozs7O1E7Ozs7NkI7Ozs7Ozs7Ozs7Ozs7UTs7Ozs7O087Ozs0Qjs7Ozs7Ozs7Ozs7Szs7OztJLFc7SSxPO0c7O0ksVztJLE87Rzs7STtLO007TSxROzs7TTtLOzs7O2tCOztJLE87Rzs7STtLLE87SztLLFE7Ozs7SyxRO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOztJLFk7WSxPO0k7OztLOzs7STtHOztJO0k7Ozs7OzRCLE87OztTOzs7O0s7O0c7O0k7Ozs7O1EsTzs7USxPOztRLE07MkI7O0ksTztHOztJO0k7SyxPOztJO0c7O0ksaUIsTztJOzs7Ozs7OztJO0s7NEI7SyxPOztJO0ssTzs7O0k7Rzs7OztLLE07Ozs7TztnQjs7Ozs7OzJCOztPOzs7O1E7Tzs7Tzs7OztRLG1DO1E7Ozs7O2E7OztjLGM7YTs7WTs7Ozs7OztRLFE7UTtVOztPLE87Ozs7Ozs7Uzs7Ozs7VTtvQjs7OzZCLDZDO1UsRztXO1k7Ozs7O2U7O2dCLE07O2U7YztZLFc7WTtZOztZLE87WTtjOzs7Ozs7Ozs7O1cscUI7VztZLFU7OztZLFU7OztZLFU7OztZO1c7Ozs7Ozs7Ozs7c0I7Ozs7Ozs7Tzs7USxVOzs7USxVOzs7USxVOzs7UTtRLE87Tzs7Ozs7Ozs7Ozs7O087Ozs7Ozs7Ozs7Ozs7OEI7VztZLFE7OztXOzthLE07WTs7YTs7WTs7OztZO1k7OztXO1ksTTtXLFU7Vzs4QixlO1ksaUI7VztXLGU7Z0MsbUIsVTtXLFU7O1k7WSxlO1c7VztZLFk7WSxPO1ksTztZLE87Vzs7WTtXO1c7WTtZO2tDLHlDO1ksTTtZO1c7Ozs7O1E7VTs7OztRLGtCO1EsWTtRLFk7OzsrQjtXO1ksTztZLEs7WSxzQjtXOzs7O29COzs7VTtROzs7Ozs7VTs7O2MsVztjLFc7YTtXLFU7a0MsbUIsZTtXLFE7VzthOzs7OztXLE07VTtXOzthOzs7Ozs7UztnQztVLE87VSxTO1UsSTtVO1k7Ozs7OztTO1UsTTtTO1U7O1k7Ozs7Ozs7Vzs7OztXO1U7TyxPOztPOzs7USxLOzJCLDZCO1EsVTtRLHNCO1EsTztRLE87Tzs7Tzs7UTs7O087UTsyQjtROzs7OztTOzs7aUI7Ozs7Tzs7O1E7Ozs7Ozs7O2lDLFc7OztZO2E7OzswQjthOzs7OztjOzs7c0I7Ozs7WTs7OzthLE87YSxRO1k7Ozs7O3NCOzsrQztRLE07OzhDO08sTTs7TyxvQyxNO08sWSxXO08sc0I7TztROztTLHNCO1E7Ozs7O1EsVztROzt3Qjs7OztPOzs7Ozs7O1E7O1E7UyxVOzs7O1ksd0I7Ozs7YTtjOzs7Yzs7aUIsTTs7O2lCO2tCLE87Ozs7YTtjLE87OztZLFc7WTs7Ozs7OztRO1MsTTtROztTO1c7UyxPO1E7Ozs7Ozs7Ozs7TztRLFU7OztXO1c7WTs7YSxlO1k7O1c7OztZLGE7OztZO2E7OzthOztnQixNOzs7O2tDOzs7Z0M7O1c7Ozs7b0I7O1U7USxLO1EsTztRLFc7Ozs7MEIsZ0Q7USxNO087c0IsTTtRLFc7UTtTOzs7O3VCOztTOzs7WSxNOzs7O29CLE07Ozs7Ozs7USxhO1E7Uzs7Ozs7O1M7OztZLE07Ozs7Ozs7WTs7YSxPOzs7Ozs7TywwQjs7Tzs7Tzs7O1E7UTs7O1MsVztTOzs7Ozs7Vzs7VztZLE87O1ksTztXOztPO1EsTzs7USxPO087O087Ozs7UTs7Ozs7Ozs7O1ksTTs7WTthLE87Ozs7UTtTLE87OztPO1EsTzs7Tzs7Tzs7USxPO1E7TztXO1MsTTs7O1MsSSxTOzs7O1c7WTs7OztlOzs7OztlOzs7OztTLFcsTTs7Ozt1Qjs7Ozs7O2E7O1E7Ozs7O1M7OztpQjs7Ozs7O1E7O1M7UztROztPOztRO087O087OztRO087O087OztRO087O087Ozs7OztRO1E7Tzs7Tzs7O1EsUTtPOztVOztXO1csVzs7O1c7Ozs7VTs7Vzs7OztVOzs7VyxPOzs7Tzs7Tzs7O1EsUTtRO087Ozs7cUI7Ozs7Ozs7O087OztRLFE7USxTO1EsUTtPOztPOzs7O1EsUTtRLFM7USxRO087O087OztRLFE7USxTO1EsTTtROzs7VztXOzs7VTtRLE87Tzs7Ozs7O2lCOzs7Ozs7Ozs7OztTOzs7OztVLGE7VTtVOzthOzs7O1U7aUI7Uzs7OztROzs7O1MsUTtTO1E7Ozs7aUI7Ozs7TztRLE87O087O087OztRO1E7Tzs7Ozs7O1E7OzBCO08sSSxpQztPOztPLG9CLFc7OztTO1UsTztVLE87VTtTOzs7OztRO1MsTzs7UTs7O1E7UyxPOztROzs7UTtTLE87UztROztPO1EsTztRO1E7USxlO1EsSztRLE87Tzs7Tzs7O1E7USxPO08sTzs7Ozs7Ozs7TyxPOztPOzs7Ozs7Ozs7O1csWTtXOzs7WSxVO1ksVzs7OztZOztnQjs7Ozs7WTtZOzs7OztnQjs7OztZLE07WTtXLE87Ozs7O1E7O1k7Ozs7O1E7USxjOzs7Vzs7Ozs7Ozs7VTtROzs7Ozs7O1EsUztRO1U7O087Ozs7Ozs7a0I7Ozs7O087OztRLE87TyxPOztPLG1DOztRO1MsTzs7UTs7TztRLE07USxPO1E7OztXO1c7Ozs7Ozs7O3FCOzs7VTtpQjtPOzs7O2U7Ozs7O0k7OztJOzs7STs7O0k7STs7OztROzs7Z0I7OztHOztJLG9CO0ksTztHOzs7SyxZO0s7STtJLFc7SSxPO0c7O0k7SSxZOztJOztHOzs7STs7OztJOztLO0k7STtLO0ssMkIsNEM7SSxPOzs7STtJO0k7Ozs7O0s7O1E7Ozs7O1MsTztROzs7USwyQjs7Ozs7Ozs7O1M7Ozs7aUI7Ozs7O0s7STs7Ozs7aUM7TyxtQjs7OztPOzs7UTtROztXOzs7Yzs7YyxTOztjOztVOytCLG9CLFc7TyxHOzs7Ozs7OzsrQjs2QjtPO1E7OztXO1csb0I7VyxXO1U7USxNO1EsUztROzs7Ozs7O1U7Ozs7OztXLE87YTs7O2M7Ozs7Ozs7Ozs7Ozs7O1c7OztPO1E7OztXO1c7VTtPLE87O007Ozs7Tzs7Ozs7O0ssZ0MsTztLLG9CO0ssVztJO0ksMkI7Rzs7O0ksZ0I7O0s7Ozs7Ozs7Ozs7Ozs7Ozs7USxHO1M7VSxPO1UsYztVOzs7Ozs7Ozs7Ozs7O1M7O2lCOzs7Ozs7Ozs7b0I7UTs7Ozs7Szs7O0k7Rzs7O0k7Ozs7OztPLFU7VTtRO1M7VSxPOzs7YTthLFc7WTtVLGlCO1M7VSxNO1M7Ozs4Qiw4QztVLG1COzs7YTs7YyxVO2MsTzthO2EsTztZO1UsUTs7O2EsVztZO1UsVTs4QjtVLFM7Z0MsNEM7VSxpQjs7O2E7YTtZO1UsTTtVOzs7YTtTOzs7OztVOzs7Ozs7OztJOzs7OztJO0s7OztNLE07OztTLG9CLE07UyxPO1E7YTs7O29CLDZCO0ksWTtJLGtCO0ksVTtJOztZOztHOzRDO0c7O0k7Ozs7OztJLFk7OztLO00seUI7O0k7Rzs7STtJO0s7OztTLG9COzs7O2dDOztzRTs7O1MsTTtRO00sUzs7O1M7Ozs7O1U7VSxRO1M7O007UTtLLHNCLDBCOzs7SyxZLHNCLFk7Szs7Ozs7OztNO00sUTtNO0s7TTtNLE8seUQ7STtJO0c7O0k7SSxlO0c7O0k7YztjOzs7SSx1Qjs7SSxXO0c7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxpQjs7OztNOzs7OztPLE87TyxPO1U7TyxXO08sTzs7OztJLE87Rzs7O0k7OztJLE87Rzt5Qiw0Qzs0QixPLGlDOztJLGMsVzt1QixnQjtJLGtCO0ksTztHOztJOzs7O3lCO0ksZTtHOzs7Szs7O007O0s7Ozs7d0I7O0k7SSxPO0c7Ozs7SztLO0k7STs7Ozs7YTs7O0k7Ozs7MkI7OzZCOztJLE87Rzs7O0k7STs7OztROztTLGE7Uzs7UTs7Ozs7O2tCOzs7Ozs7UTtTLE07UyxXO1E7Ozs7O21COztROztTLE07UyxxQjs7OztZOzs7O2E7OztlOztnQjs7Ozs7OztvQyxrQjs7OztlOzs7OztnQjs7Ozs7OztlOztZO1c7UyxVOzs7Ozs7WTtZOztXO1MsYTtRLEc7UztVOzs7Uzs7NEI7O1E7Ozs7O2dCOzs7UTs7Ozs7Ozs7b0I7Ozs7UTs7Ozs7Uzs7Ozs7YTs7Ozs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7OztROztnQjs7O1E7Ozs7O1M7Ozs7O2E7Ozs7OztROztnQjs7Ozs7Ozs7Rzs7SSxjOzs7O0s7OztpQjs7OztJOzs7Z0I7OztHOztJLFksTTs7SSxPOztxRDs7Ozs7Ozs7O1MsTTtROzs7OztTOztROzs7Ozs7Ozs7O1E7O1M7Uzs7OztZOzs7OzthOzs7ZTs7OztnQjs7Z0I7OzttQjttQjtvQjtxQjs7O2dDO3FCOzs7OztvQzs7b0I7Ozs7MkM7OztrQjtnQjs7Ozs7OztxQjs7Ozs7Ozs7ZTs7ZTs7OztnQjtlOzs7O2dCOztpQixXO2lCO21CO2dDOzs7aUI7OzRCO2tCO21CLE87bUIsTTs7Ozs7Ozt1Qjs7Ozs7OztnQjs7O3dCOztnQjs7O3dCOzs7OztlOztnQjs7O21CO2dDO2U7Ozs7OEI7Ozs7O2U7O1k7VztTLFU7Ozs7O1M7O1M7c0MsNkI7UyxRO1MsTTtTLFE7Ozs7VTtXOztjO2M7Ozs7OzRCOzs7a0I7Ozs7Ozs7UyxJLE0sZ0M7Ozs7VTtXO2lDO1c7OytCOzs7O1M7VSxPOzs7YTthO2E7WTtVLE87O2dDO1U7Ozs7K0I7O1UsTzs7Ozs7O3dCOzs7UTs7UTs7O1M7Ozs7O1MsUztROzs7O1E7OztTOzs7OztTLFM7UTs7UTs7Ozs7OztZLFc7VztTLGE7UyxnQjs7O1M7OztROzs7Ozs7Ozs7O1E7Ozs7Ozs7OztTLEs7VSxNO1M7VSxNO1UsTTs7Ozs7YTthOzs7Ozs7WTtVLFk7OzthO2E7Ozs7OztZO1UsWTtVO1U7O1UsK0I7VSxPO1M7Ozs7Ozs2Qjs7Ozs7O1k7Ozs7Ozs7Ozs7VztRLFM7UTtTOzs7O29COzs7O1E7Ozs7dUI7Ozs7Ozs7STs7Szs7OztNOzs7Szs7O2M7YyxPOzthOztJLGlCLFM7STtHOztJO0k7Ozs7OztTO21CO1csTTs7Ozs7VyxNOzs7UTtTLFM7UyxXO1E7O1EsTTs7UTs7OztTOzs7Ozs7WTthO2EsTzthO2E7ZTs7Ozs7Ozs7WSxPOzs7Ozs7OztXOzs7Uzs7Ozs7Ozs7O1E7O1E7OztTOzs7O1E7OztnQjs7O1E7Ozs7Uzs7OztROzs7Z0I7OztROztTOzs7OztROzs7O1ksRzthOzs7OztTLE07Ozs7O0c7O0k7O0s7Ozs7TTs7O0s7OzthOztJO0s7OztJO0c7O0k7STtLO007OztTO1U7OzthLFc7O2E7Ozs7Yzs7ZSxLO2tDLFcsK0I7YyxPOzs7O1U7O1M7O007Ozs7VSxrQjs7Ozs7Ozs7Ozs7Ozs7aUIsRztrQjs7aUQ7Ozs7Ozs7Ozs7Ozs7aUIsRztrQjs7Ozs7Ozs7O2UsRztnQjs7Ozs7VSxNO1M7Ozs7Szs7Ozs7Ozs7VztZO2E7OzthLE87YSxPO1ksVzs7VztZLEk7WTtvQjs7Ozs7O1UsSTtVLFc7Ozs7Ozs7OztVOzs7Vzs7Ozs7Ozs7O21CLEc7b0I7cUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQjtxQjt3QjtvQjs7Ozs7ZSxNOzs7VTs7O1EsTTs7Ozs7UyxHO1UsSTs7Ozs7Ozs7Ozs7Ozs7OzthLEs7YSxJO2E7cUI7Ozs7Ozs7WSxHO2E7Ozs7O1k7OzthOzs7WTtvQjs7Ozs7Ozs7O2E7OztjOzs7YTtxQjs7Ozs7OztLLEk7SyxXOztHOztJO0s7TSxhO00sUztNOzs7TTs7Ozs7O08sTTs7OztLO007OztNO1E7Szs7O007TyxNO08sVztPLFc7TyxRO08sUzs7O087Ozs7Ozs7Ozs7Ozs7Ozs7OztPOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxHLDJDO0k7SyxXO0ssTTtLLE07SyxTO0ssVTs7O0s7Szs7O0ssb0I7SyxPOzs7Ozs7O007Ozs7Ozs7Ozs7Ozs7Ozs7TTs7Tzs7NkIsbUI7a0I7Ozs7OztLO00sTztNLE87TTs7SztNOzs7Ozs7O2EsUTs7WTtTLE87Ozs7Ozs7Ozs7YTtxQjs7WTtTLE87Ozs7OzthO3FCOztZO1MsTzs7O2lCOzs7K0I7Ozs7OzttQjs7OztTO2lCOztjOztLO0s7SztNLE87TSxPOztLO007UTtNLE87TSxPO29CO0ssSSxxQjs7TTtNO00sTztLO0ssTztJO0k7SSx5QyxXOztLOzs7Ozs7O1M7Ozs7VSxNO1M7OztVO1c7b0I7Uzs7bUIsTTtVO1c7VztXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1csbUI7Vzs7VSxNOzs7OztVO1csTztXO1c7YTs7Ozs7Ozs7VTs7Ozs7O0ssTTs7STtLO0ssTztLLFM7O0s7Ozs7Ozs7O0k7SSxJLFc7STs7O0s7OztNLFc7Ozs7STtLLE87SyxPO0s7SztLOzs7OztLOzs7OztLO007TSxNOztNOzs7STtLO0ssYTtLOzs7Ozs7Ozs7Ozs7O0k7SyxNO0k7SyxVO0ssTTtLLE07SyxhO0ssYTtLLGE7O0ssVztLLE8seUI7STtJO0ssYztLLE87SyxVOztLO00sUztNLE87SztNLE07O0s7STtJOztLO0s7Ozs7d0I7O0k7O0s7Szs7Ozs7Ozs7Ozs7cUI7Ozs7OztLO007O1U7Ozs7Ozs7O00sSzswQixXLGdDO0ssRztNO087eUI7O007O087Ozs7O087Ozs7YTs7Ozs7Ozs7Ozs7O0s7OztLO007Ozs7Uzs7O0s7O0k7SyxTO0ssUzs7Ozs7Ozs7O0s7TTs7MEIsZTtzQjs7OztLO007OzBCLGU7OzJCO0ksVzs7SztLO0k7SSxnQjs7SztLOzs7O3dCOztJOztLLHFCLE87SyxPO0k7SSxnQjs7SztLO0k7SSxlOztLO0k7STtLO007TTs7OztZOzs7Ozs7O0s7TTs7OztNO21COztNOzs7Ozs7Uzs7O0s7O007Ozs7O1U7Ozs7Ozs7Ozs7OztJOzs7Szs7Ozs7Ozs7Ozs7OztJOztLOzs7Ozs7Ozs7O2E7OztJOzs7SSxrQjtJLE87Rzs7STtHOzs7O0ksTzs7OztJLHVCOztJLFc7RztHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QixzQjs7SSxXOztJO0c7O0ksVzs7SSxrQjtHOztJOztLO007TSxNO0s7STtJLE87Rzs7SSw4Qjs7Ozs7Ozs7O1k7OztXO1c7O1k7O1c7O3VCO1c7VTtPLE87O087OztRLFE7UTtRO1E7Ozs7Tzs7Uzs7O1UsVTtVO1U7VTs7Ozs7Ozs7O1k7O2E7YTs7Ozs7Ozs7bUI7Ozs7O2EsTzs7VztRLE87Ozs7Ozs7O08sTzs7Tzs7OztRLE07K0IsdUM7TyxPOztHOztJLEksSyw2Qjs7Szs7Ozs7O0ssSyxpQztLO00sTztNLE87TSxPO0s7Ozs7O3dDOzs7STtJO0ssUTs7O3VDO0c7O0ksMkI7Ozs7Ozs7Ozs7WTs7O2EsSzs7O2dCOzs7O2lCOzs7Z0I7ZTthLFM7YSxPOzs7Z0I7NEQ7Z0I7O2lCOzs7Z0I7ZTtZLFc7Ozs7Ozs7Ozs7WTs7O2E7WTs7Ozs7Z0M7OztNOzs7SSxPO0c7Rzs7STs7O0s7Ozs7STtHO0c7SSxXO0k7Ozs7Szs7Ozs7O1UsWTs7OzthOzthLE07OzthLE07OztTOzs7VTtVO3NCOzs7Ozs7Ozs7O2U7OztnQixPO2dCLFU7Ozs7O2dDOzs7bUIsSztnQzs7OztnQjs7ZTtlLE07Ozs7ZSxNOzs7O2M7Ozs7ZSxROzs7Ozs7YyxNOzs7OztlOzs7Z0I7O29CO2U7O2M7OztlLFE7Ozs7O2M7Ozs7ZSxROzs7OztjLHFCO2MsVzs7OztTO007TztROztRLFE7Ozs7bUI7UTs7Ozs7Ozs7bUI7Ozs7Ozs7Ozs7Ozs7TTtPLFE7Tzs7O0ssVztLO0k7SSxpQjt5QixtQixVO0k7SyxPO0ssSzt5QixvQixXO0k7SyxPO0ssTTt5QixxQixZO0k7SyxPO0ssTzt5QixvQixXO0k7SyxPO0ssTTtLLEs7SztLLFM7Szs7Szs7TTs7OztVOztXLE07VSxrQjs7VyxNOztVO1M7OztNO087Ozs7OztVO1UsTTs7Ozs7OztTLEk7Ozs7TyxNOzs7aUI7Ozs7SztNO00sSSw2Qjs7OztROzs7Uzs7VTtTLEc7VTs7OztROzs7Ozs7Szs7TTtNOzs7Ozs7Ozs7Ozs7O0s7SztJO0ksSSw2Qjs7OztNOztPLE07a0I7TTs7Ozs7OztLO0s7Ozs7OztROzs7Ozs7UztROzs7Ozs7a0I7Ozs7Ozs7Ozs7Ozs7O0k7O0s7Szs7Ozs7O1E7Ozs7O087Ozs7STs7SztLO29COzs7OztROzs7OztTO1E7OztrQjs7Ozs7Ozs7Ozs7Ozs7STtJO0c7O3lCLG1CLGE7SSxVOztLOzs7Ozs7Szs7YTtJO0ksZ0I7Rzs7STtJO0ssc0IsTztLO0s7TSxNO007Ozs7UTs7OztpQjs7O1E7O1E7Uzs7O1k7Ozs7OztZO2E7O2E7OztjLHFCOzs7Ozs7Ozs7Ozs7OzthLFk7Ozs7Ozs7OztlO2dCLE87Ozs7OzRCO2E7O2dCOztjLE07aUM7YTs7Yzs7Ozs7OztZLE87YSxNO1k7Ozs7YTs7Ozs7O2MsVTtjO2M7YzthO1k7WTthO2U7OztZLE87Ozs7Ozs7O1c7USxPOztROzs7O1MsVTs7O1M7Uzs7Ozs7Ozs7OztTOzBCO1EsTzs7UTs7O1M7Ozs7OztRO21DOzs7Rzs7O0k7Ozs7Ozs7OztPO1EsUztRLE87NEIsZTs7MEI7O087OztRLE87USxJO1E7O1c7OztVO1EsUTs7O1c7VztZOzs7OzthLE87WSxPOztXO1U7USxpQjs7O1c7VyxXO1U7USxnQjtRLFU7UTs7Ozs7Ozs7Ozs7Ozs7OztNOztLLHlDOzs7UTs7Uzs7OztRLGdCOztROzs7UztXO1MsTztTLGE7Uzs7Ozs7USxXOzs7UTs7Ozs7O1E7O1M7OEIsYztTLE07Uzs7OzthOzs7Ozs7O1E7Ozs7O1E7OztTO1M7Ozs7O1E7Ozs7O2lCOzs7Ozs7O1M7Ozt1Qjs7O1M7O1Usc0I7VTs7NEI7VTtZOzs7OztTO1U7Ozs7UztVOzs7OztvQjs7O1M7OztVOzs7O2M7Ozs7Uzs7a0I7Ozs7Ozs7USxJLGMsTztRO1EscUIsTztROzs7O1E7OzZCLGE7UyxPO1MsZTtTOzs7OztTOzs7O2MsUztjOztlO2U7O21CO2U7Yzs7O3VCOzs7O2E7OztROztRLG1CLE87O1E7UyxRO1MsTTs7O1k7OztZOzs7YTs7O1k7Ozs7Ozs7O3NCOzs7O1M7OztROzs7O1E7O1M7OztTOzs7O2E7Ozs7Ozs7UTs7UTs7UyxRO1M7UyxROzs7WTs7O1k7OzthOzs7WTs7Ozs7Ozs7c0I7Ozs7Uzs7O1M7UTtvQjs7Ozs7Ozs7STtJO0s7Ozs7O29COzs7O0s7STtJOzs7SyxnQix3QztLLE87STtJO0ssTzs7O0ssa0I7STtJO0ssVztLLE87SyxhO0k7STtJO0c7OztJOztJO0k7SyxZO0ssUzs7SztJO0k7SyxROzs7STs7O0k7OztLO0s7STs7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTOzs4QixjO1MsTztRLE87O1Esb0I7UTs7Ozs7Uzs7Ozs7UTs7Uzs2QixhO1MsTztRLE87Ozs7UTs7UztTLE87USxPOztROztTO2dDLG1CLGE7UyxPO1EsTzs7OztROztTO1MsTztRLE87Ozs7Rzs7STtJO21CO0sseUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1MsSSx5QjtTLE87Ozs7Ozs7OztRLG1COzZCO1Esd0I7USxPOzs7Ozs7Ozs7O1U7O1c7VztVLE87Ozs7Ozs7O0c7O0k7STttQjtLLHlDOzs7OztROztTO1MsTztRLE87Ozs7OztROztTOzs4QixjO1MsTztRLE87O1Esb0I7UTs7Ozs7Ozs7Ozs7Ozs7Ozs7VSxJLHdCO1UsTzs7Uzs7Ozs7UTs7Uzs2QixhO1MsTztRLE87Ozs7USxtQjs7Uzs7VTtVLE87VSxPO1MsTzs7USxXO1EsTzs7UTs7UztnQyxtQixhO1MsTztRLE87Ozs7Ozs7O1U7OztXO1c7VyxPO1csTztVLE87OztRLEksd0IsTztRLE87Ozs7RztHOztJO0ssWTs7Ozs7Ozs7Ozs7OztRLG1DO1E7Ozs7O0ssTTs7Ozs7SztNLE87TSxPO0ssTzs7Rzs7STtLO0ssTTtJO0s7SztNOzs7Ozs7O1MsTzs7Uzs7OztVLE07Uzs7SztvRTtHOzs7STs7STtJO0ssWTtLO0s7STs7O29CO007OztPLFE7Tzs7Ozs7Ozs7O0s7O00sVTs7Ozs7Ozs7Ozs7Ozs7Ozs7VTs7O1c7Ozs7Ozs7VTs7Ozs7Vzs7Ozs7OztNOzs7TztPLFU7TyxRO087Ozs7Ozs7O2lCO0k7Ozs7O0s7Ozs7OztLOzs7O087O1MsTTtRO1MsTzs7OzJDLFc7USxPOzs7O0sseUMsVzs7Ozs7O1EsTzs7Tyx5Qzs7O1U7O1c7VyxPO1U7a0I7OztVOzs7VyxNO1c7VzthOztXOzs7VTtrQjs7OztVOzs7Ozs7VTs7VztnQyxjO1csUTtXO1c7O1c7OztVO2tCOzs7VTs7O1c7VyxNO1csUTtXOzs7VztVOzs7OzttQjs7Ozs7Ozs7OztlOzs7O2dCLE87ZTtlO2dCLFE7OztnQjtnQjs7b0I7Ozs7O2dCO2dCOzs7Z0I7Z0I7b0MsZTtnQjsyQjtlOzs7Ozs7d0I7Ozs7Ozs7aUI7Ozs7O2tCLE87aUI7aUI7a0IsUTs7O2tCO2tCOztzQjs7Ozs7a0I7a0I7a0I7OztrQjtrQjs2QjtpQjs7Ozs7OzBCOzs7Ozs7WTs7O2E7YTs7aUI7YTtlO2E7OzthOzs0Qjs7WTs7OztvQjs7Ozs7Vzs7Ozs7WTtZO2M7WTtZLE87Vzs7OztxQjs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFE7Vzs7O1c7VTs7O29CO3FCOztzQjs7OzBCOzs7b0IsTzttQjs7Ozs7O1c7O1k7O1ksUTtZO1ksUTtZLE87WTs7O2U7OztlOzs7Z0I7Z0I7ZTs7Ozs7OztZO1c7O21COztVLFc7O1U7VyxRO1csTTtXLFE7OztjOzs7Yzs7O2U7Yzs7Ozs7OztXO1c7VTs7OztrQjs7O1U7O1c7OztXO1c7OztVO2tCOzs7Ozs7Ozs7YTs7Ozs7O2MsTzthO2E7YztjO2M7O2tCO2MsUzs7O2lCOzttQjs7Ozs7b0I7b0I7O21DOztvQjttQjs7OzsyQjs7Ozs7Ozs7Ozs7aUIsTTs7Z0I7YTs7OztVO1csUTtXO1csUTtXOzs7Yzs7O2M7OztlO2U7OzhCOztjOzs7Ozs7O3VCOzs7VztXO1U7Ozs7a0I7Ozs7Ozs7TTtPO1EsUTs7O1E7UTs7Ozs7Tzs7Ozs7TztRLE87USxPO08sTzs7Szs7TSxvQjtNLE87Szs7TTtPO1EsUTs7Ozs7O1c7Ozs7Ozs7UyxNOzs7Tzs7Ozs7USxNOzs7Szs7TSwwQjtNLE87Szs7O007Ozs7OztpQjs7Ozs7O007Ozs7O08sVztPO007Ozs7O0s7TSxVOztNO0ssTztJO0ksTzs7O0k7SyxPO0ssUztJO0c7O0ksc0M7O0k7SyxlO0ssUztLOzs7O0k7O0c7SSxnQjtJO0k7OztJLDhCLE87d0I7O0c7O0ksSSxXLDhDOzs7NEIsTzs7O0c7O0k7STs7Ozs7Ozs7Ozs7RztvQyxxQzs7STtJOztJOztNOzs7Tzs7Ozs7Ozs7Ozs7OztVOztXLFM7VyxNOzthOzs7OztVOzs7O1U7O1c7Z0MsYztXLFc7VTtVO1csTzs7Ozs7VTtVO1csTzs7Ozs7Ozs7WTtZO2E7O2lCOzs7Ozs7Ozs7Ozs7VSxrQixPO1U7VSxxQixPO1U7Ozs7VTs7K0IsYTtXLFc7VyxPOzs7OztnQixTOztnQjt5Qjs7OztlOzs7OztVLG1CLE87O1U7VyxNO1csTTs7O2MsWTtjOzs7ZTtjOzs7OztXOzs7O1U7O1c7OztVOzs7OztjOzs7VTs7VyxRO1c7VyxROzs7YyxZO2M7OztlO2M7Ozs7O1c7Ozs7O2tCOztNO0s7SztZO00sTTs7TTtNOzs7Ozs7Ozs7Ozs7Ozs7O0s7SyxPOztJLE87Rzs7SSxZOztJO0c7O0k7Z0I7OztNLE07aUM7O0k7Ozs7Ozs7O2U7O0c7O0k7Ozs7UTs7STs7OztHOztJO0ssVTtLLDhCO0ssWTtJOztLOztNOzs7Vzs7OztVOzs7SyxXOzs7SyxNO0k7O0s7OztROztLLE07SztLOzs7VTs7Ozs7O1M7OztLO0ksVztHOztJO0ssa0IsTTtLLE87O0k7SyxPO0k7STtLLE07SyxNO0ssTTtJLE87O0c7OztJO0ssTTs7O0s7TSxNO00sTTtNLFU7SyxPO0k7STs7Tzs7Tzs7TztlOzs7O0ksWSxPO0k7O0ssVTtJLE87Ozs7SSx1Qjs7STtHO0c7O0k7OztJO0ksTztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STtLO0ssYSxXO0k7RztHOztJO0s7Ozs7SyxrQjtLO0ssWTtJOzs7OztZOztHOzs7Szs7SyxTO0s7TSxPO00sSTtLO0k7STtLLE8sVztLLFE7OztLLE87O0ssYzs7SztJO0ksTztHOzs2Qix3QjtJO0ssTTs7OztJO0c7RyxhLHVDLFM7OEIsTywrQjs7STtJOzthLGMsTzs7Ozs7dUIsVzt1QjtzQjtZOztHO3NCLHdCOztJLEk7eUIsUztJO0k7OztjO2E7Ozs7OztHO3NCLE8sb0I7OEIsNEI7O0k7OztLO0s7OztLLE87O0ssVztLLFc7STs7STs7O2MsVztjLFc7YTs7Ozs7OztHOzs7O0ksbUMsUzs7STt5QixPLGMscUI7O0k7OztjLE8sYzthOzs7Ozs7Rzt3Qix5Qjs7SSxRLHFDLFM7O0kscUIsaUMsa0I7STtHOzs7SztLO0k7SSxPO0c7O0ksdUQ7STtHOztJLHNDO2dCO0k7O0ssUTtLLE87SyxPO0ssUztLO0s7SSxXOzs7STs7Tzs7Ozs7O1E7OztRO087O087OztROzs7Tzs7TywwQjtPLE87Ozs7STtLO0s7STtHOztJLFk7SSxvQjtJLGlCO0k7Rzs7SSxzQztnQjtJOztLLFU7O0s7O0s7O1Esb0I7Ozs7d0IsTTs7Ozs7Uzs4QixNOztTLEksa0I7Ozs7O1csVztXOztVLE07O1M7VTs7VSxVO3VCLE07Uzs7VSwwQixzQjtVO1U7OzthLDBDO2E7O1k7VTs7OztnQjs7O2lCOzs7Z0I7Ozs7Ozs7O2U7Ozs7O1M7Ozs7Ozs7Ozs7O1M7VTs7Ozs7Ozs7VTs7OztpQyw2QjtTOzs7UTs7Ozs7O1M7Ozs4QixxQztROztROzs7OztTOzhCLHFDO1E7O1E7OztTOzs7UyxxQiw2QjtROzs7Ozs7Ozs7Ozs7eUI7O1ksd0IsZ0M7WTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WTthOzs7Z0I7ZTtZOzs7Uzs7OztVO1Usc0I7VSxVO1UsNEIsMEI7VSwwQixZOzs7YTs7O2UsTTs7OztlO2U7Ozt1Qjs7YztlOzs7O1k7NEIsd0I7VSxvQjtTOztXO1k7YztZOzs7Ozs7Ozs7OzRCOzs7O1k7O1k7Ozs7O2E7Ozs7O2dCOzs7O2EsTTtZOzs7Ozs7Z0I7Ozs7NEI7NEI7MkI7O2U7Ozs7O3dDOzthO1k7OztzQixlOzt1QjtxQzs7d0I7Ozs7Ozs7Ozt3QixPO3VCOztzQjs7cUI7Ozs7Ozs7WTs7Ozs4Qiw2QzthOzs7OztZOzs7dUIsaUIsaUI7dUI7Ozs7MkI7dUIsTTs7O2dDOzs7c0I7Ozs7Ozs7UTtROztROzs7O1MsVTs7O1MsVTs7O1M7OztZOzs7OzthLFk7YSxZO2E7WTtXO1M7O1E7O1E7Ozs7O1MsVTs7O1M7OztZOzs7YSxRO1k7VztTO1E7O1EsMEI7UTs7UTs7OztTOztZO1k7VztTO1E7O1E7Ozs7Uzs0Qiw0QjtROztROzs7O1M7Uzs7WTtZO1c7UztROztROzs7UztTLG1CLHNCO1E7O1E7OztTLG9CLHNCO1E7O1EsNEIsb0Isb0I7UTtnQiw0Qjs7STs7SyxrQjtLLFk7STs7SyxrQjtLLFU7ZSxxQyxTOztLLDRCLGM7STs7O0ssVTtLOztJOzs7Ozs7SztLO087SztLLFM7SyxRO0s7OztLOztLO087Ozs7Ozs7O0ssUTtLO0k7OztJLGtCO0ksTztHO3VCLDRCLHdCOztJLHVCOzs7Szs7TTs7UyxPOztRO007O1MsVTtTLE87UTt3QixZO00sTSxXO00sTTsyQixlO00sTSxXO00sUyxXO0s7YTs7O0k7SyxPOztJO0k7SyxVO0ssTztJO29CLFk7STtLLE0sVztLLE07SyxXLFc7STtZOztHO0c7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7OztJOzs7TyxHO1EsTTtPOztPOzs7Ozs7O1Esc0I7USxPO087O08sVztPLEc7USxNO087O087Ozs7OztRO087O087Ozs7O1E7Tzs7Tzs7O1E7OztXO1c7VTtPLFc7Ozs7Ozs7Ozs7OztjLEcsZ0M7Ozs7Ozs7Ozs7Ozs7O2UsRztnQjs7Ozs7Ozs7Ozs7O2EsRztjOzs7OztPOzs7USxzQjtPLGM7O087Ozs7O1Esc0I7USxPOzs7O1c7VztVO1EsTzs7Ozs7VztXO1U7USxPO1E7Tzs7Tzs7Ozs7USxzQjtRLE87OztXO1c7VTtRLE87Tzs7Tzs7O1Esc0I7TyxlOztPOzs7O1E7Tzs7Tzs7OztRO087O087Ozs7UTtRO087O08sa0M7Tzs7TyxrQztPOztPOzs7Ozs7UTtRO087OztPOztPOzs7Ozs7USxzQjtRLE87UTtPOztvQzs7O087ZTs7OztJOzs7SyxRO0ksTzs7OztLO0s7STtJLE87Rzs7STtJOzs7UTs7UTs7UTs7USxzQjs7OztVLFc7VTs7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7WTtZO1c7UTs7Ozs7Ozs7Ozs7OzthOzs7Ozs7Ozs7Ozs7Ozs7USxPOzs7UTs7UTtrRDs7O1E7a0Q7O1E7O1Msc0I7USxPOzs7UTs7OztZO1k7VztRO1EsMEI7USxPOzs7USxPOzs7UTs7Ozs7UTs7Ozs7UTtROzs7OztROzs7OztROzs7OztRO1E7Ozs7Ozs7O1E7UTtRLE87Ozs7O0s7OztHOztxQixnQyxrQjtJLE87Rzs7SSxvQjtJLE87Rzs7OztLOzs7Ozs7Ozs7Ozs7VzthO2U7O2M7bUI7WTthOzs7WTs7Ozs7Ozs7bUIsTTtLLFM7O00sbUIsTztNLFMsTTtNO0s7SztLO00sTztNLE87TSxXO0s7TSxJLFcscUM7Ozs4Qjs7O0s7MEIsa0IseUI7SztNLE87TTt5QjtLO00sTztNLGU7TSxVOzs7TSxPO0s7SztNLFE7TSxTO3VCLGtCO0s7TSxPO00sWTtLOztJO0s7TTs7OztNOzs7O1U7O0s7Ozs7O007OztlOzs7O0c7OEI7RztJOzs7STtLLFE7SyxZO0ssVztLO0k7Szs7SyxXO0ssTztJOztLOzt5QixPOzs7O1M7OztVLFU7Ozs7O1U7Vzs7OztXOzs7Ozs7UyxPOzs7OztRO1EsTzs7OztTOzs7O1U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UztVO1U7VTtVLGM7Ozs7WTs7YSxLOztZO1k7Ozs7VTs7Ozs7O0ssTztJOzJCLDRCOztLOztLOzs7STtJOztLOzs7Ozs7O1UsRztXO1ksSztZLE87WTs7WSxNOzs7MkI7Ozs7Ozs7UyxHOzs7Z0I7O0ssVzs7TSxrQztNO0s7SyxPO0k7SSxhO0c7O0k7OzsrQjs7Ozs7SSxJLG9CLFE7STtLLEksVyx5Qzs7OzZCOzs7STs7SyxZOzs7O2E7OztLO0ssTztJOzs7Ozs7O1M7Uzs7VSxzQjtTLE87Ozs7Ozs7Ozs7Ozs0QixrQiwyQjtTOzs7O1M7O1Usc0I7UyxPOzs7OztVOztXLFU7VyxVOztXO1c7Ozs7VyxNO1U7O1M7Ozs7NEIsa0IsMkI7Uzs7Ozs0QixrQiwyQjtTLE87OztTOzs7NEIsa0IsMkI7UztpQjs7O1U7Ozs7Ozs7O1M7UywwQjtTLE87Ozs7Ozs7VztXO1k7WSxPO1c7Ozs7Uzs7Ozs7OztTOzs7OztTO1M7Ozs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7O1M7Ozs7VTtVLHNCO1MsTzs7Ozs7aUI7O007Ozs7STtJLFk7Ozs7OztTOzs7Ozs7O1Usc0I7VSxPO1M7OztTOzs7Ozs7OztVO1MsTzs7O1M7Ozs7OztVO1M7O1M7Ozs7O1U7Uzs7Uzs7O1U7OzthO2E7WTtTLFc7O1M7Ozs7VSxzQjtVLE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCOzs7Ozs7Ozs7Ozs7a0I7Ozs7Ozs7OztTOztTOzs7O1U7Ozs7YTthO1k7VSxhOzs7O2E7YTtZO1UsYTs7VSxzQjtVLFc7Uzs7Ozs7Uzs7Ozs7VSxzQjtVLE87OzthO2E7WTtVLE87Uzs7OztVOzJCOzs7OztrQzs7O1M7O1Usc0I7VSxPO1M7VTtXLFU7Ozs7O2M7YyxXO2E7VyxLOzs7O2M7YyxPO2E7VyxNO1csTzs7O2M7YzthO1csTztVOzs7O2lDOzs7Ozs7OztXO1c7Ozs7O1M7OztVOzs7Uzs7O1ksTTtXO1c7Ozs7VTtVOzs7OztTOzs7O1U7Uzs7Uzs7OztVO1U7Uzs7UyxrQztTOztTLGtDO1M7O1M7Ozs7OztVO1U7Uzs7O1M7O1M7Ozs7OztVLHNCO1UsTztVO1M7OztTOzs7UztpQjs7O0k7Szs7O0ssTTtJO0ssSSxXLDBDOzs7NkI7OztJOztLO0s7SyxPO0k7O0s7TSxVOzs7Ozs7OztNO08sUTs7Ozs7Ozs4Qjs7OztJOzs7Ozs7NkI7O1M7O1M7Ozs7Ozs7OztjO2Msb0I7YyxPO2E7Ozs7Uzs7VTtXO3lCOzs7Ozs7O1M7Ozs7Ozs7Ozs7OztVO1c7Vzs7OztTOzs7Ozs7Ozs7Uzs7Ozs7Ozs7O2M7ZTtlLHNCOzs7Uzs7OztTOztVLHNCO1MsTzs7Ozs7VTs7VyxVO1csVTs7VztXOzs7O1csTTtVOztTOzs7aUMsa0Isd0I7Uzs7O2lDLGtCLHdCO1MsTzs7O1M7Ozs7YztlO2Usc0I7OztTO2lCOzs2Qjs7OztTOztVLHNCO1MsTzs7O1M7Ozs7O1M7Ozs7O1M7Uzs7Ozs7Uzs7Ozs7Uzs7Ozs7UztTOzs7Ozs7Uzs7OztVO1Usc0I7UyxPOzs7Ozs7Ozs7Ozs7STtJLGM7STtLOztNLGUsNkI7O0s7STtJO0s7O00sZSw2Qjs7SztJOzs7Ozs7O1MsSSxVLDJDOzs7Z0M7Ozs7Ozs7Ozs7O2M7Ozs7O2UsTztjO2E7Ozs7Uzs7VTtXO3VCO1c7O1k7Ozs7O1M7O1M7Ozs7Ozs7O1U7Ozs7Ozs7Ozs7O1k7YSxNO2EsTTtnQjthLFU7YSxPOzs7Ozs7UyxPOzs7OztVO1c7Vzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7YyxJLDJCO2M7Ozs7Ozs7OztpQixNOzs7OztlOzs7ZTs7Ozs7Z0I7Ozs7OztZOzs7OzthO1k7O1k7Ozs7O2E7OztjO2M7Ozs7YTthOzs7Ozs7O2E7YTs7Ozs7O1M7Ozs7O1U7Uzs7Uzs7O1U7OzthO2E7WTtTLFc7OztTLGM7O1M7Ozs7VTs7OzthO2E7WTtVLGE7Ozs7YTthO1k7VSxhO1UsVztTOzs7OztTOzs7OztVLE07OzthO2E7WTtVLE07Uzs7O1MsZTs7Uzs7Ozs7O1U7Uzs7Uzs7OztVO1M7O1M7Ozs7VTtVO1M7Ozs7VSxtQjtVOzs7UztVO1U7Ozs7O1Msa0M7Uzs7Uzs7Ozs7O1U7VTtTOzt5Qzs7Uzs7Ozs7O1UsTTtVO1M7O3dDOzs7Uyx5Qjs7O2lCOzs7STtLO0ssUTtLO0ssYTtJLFE7STtHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0k7STs7O0ksdUI7OztHOztJLFU7Ozs7O0c7O0ksVTs7SztLO0ssTztJO0k7SSxVO0k7STs7O0c7Rzs7OztJLGtCO0k7STtLLGU7SztPLDJCO0ksRztLLE07STs7STs7OztNO08sTztPLE07O007Ozs7OztHO3VCLG9EOztJOztlO21COzs7O2lCLE07O0ssRztNO007Ozs7Rzs7STtJLE87Rzs7STtJLE87Rzs7STsrQiwyQztJO0ssTTtlO2E7Rzs7STs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7OztJOzs7Ozs7O0ksbUI7O0ksTztHO0csSSxzQjs7SSxpQjs7Rzs7STtvQixXLHFDO3FCOztHOztJLEc7SyxPO0k7OztPO1M7Szs7UTs7SyxPOztJO0c7O0k7SyxXO0s7TTtPLGE7TztTO1k7Ozs7Ozs7OztLO2dCOzs7O08sSSxZOzs7O1E7O1MsTTtTLE07ZTs7Ozs7O08sWTs7OztROztTLE07UyxNO1MsTTtlOzs7Ozs7Ozs7OztJLE87Rzs7STs7OztHOztJOztpQjs7OztNLEcsdUM7TSxJOzs7TTs7O08sTztNOzttQztPOztNLEk7OztHO0c7O0k7O0ksaUI7O0ksTTtHOztJO0k7SztNLE07TSxLO0s7OztxQjs7Ozs7O007Ozs7Ozs7O0c7O0ksSSxROzs7MkI7OztJLE87Rzs7STs7SztxQjs7Rzs7STtLO0ssTTtLLE07SztxQjtJO0ssTTtLLE07c0IsZ0I7cUI7Ozs7Rzs7STs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STsyQixxQzs7Szs0QjtLO0k7O0s7O0s7STtJOztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7O0k7Rzs7SSxJLHlEOzs7O00sTTs2Qjs7O0c7O0k7RztHOztJO0k7Rzs7SSxJLHlEOzs7Ozs7Ozs7UTs7TSxZO2tCLE07O29CO00sdUI7TTtNOztLOztHOztJO21COztJO0c7O0k7SyxPOzs7SztLO0k7STtJO0c7O0k7SztLLEk7O0s7Ozs7TTtNO007TTs7Ozs7SSxPO0c7O0k7SSxPO0c7O0ksSSwwRDs7OztNO007TTs7Ozs7STtJO0ksb0M7Ozs7TTtNO007Ozs7O0k7STtJLG9DOzs7O007TTtNOzs7OztJLE87Rzs7STs7SyxJLEksTzs7OztlOztLO007TTs7Ozs7Ozs7STtJOztLLFM7O00sSSxRLGU7OzsrQjs7O0s7SztNO00sMkIsTywyQjtLLE87STs7OztLLE87SSxlOztLOztROztjO00sTTtLO0k7STtLO0ssMkIsTywrQjtJLE87Rzs7STtJO0k7O0c7OztLOzs7UTs7O1M7O1E7OztROzs7UTs7O1E7O0k7SSxPO0c7O0k7Ozs7OzRCOzs0Qjs7NEI7OzRCLE87OzhCOzs4QjtzQzs7O087OztRO1UsNEI7UTs7O1c7Vzs7O1U7TztPOztPOztRO1UsK0I7OztXLE8sK0I7VTtPO087bUM7O0c7O0ksSSxPLHVDOztLLHFDO0s7SztJO0k7O0k7Rzs7STtHO21DLHVCOztJO087SztJLEksTyx5Qjs7SyxxQztLO0s7STtJOzs7Rzs7STtLO007TyxXO08sc0IsTzs7d0IsTyw0QztPOzt5QixPLDRDOzs7Ozs7OztNLFM7TTtNOzZCLE8sMkI7TyxNO2tCOzt1QjtLLFk7O0s7OztNLFE7TTtROzs7SyxJLEksTTs7Ozs7O0s7SyxJLEksTTs7Ozs7O0s7Szs7Ozs7O0ssTzs7RztvQyw4Qjs7STtJLHdCO0c7O0k7SSxpQjtJO0c7O0k7O0s7d0I7O0s7STtJLE87Rzs7STs7Szt3Qjs7SztJO0ksTztHOztJOztLO3dCO0s7O00sVTs7O00sTTs2QjtLO0k7SSxPO0c7aUMsdUI7OEIsK0I7O0k7Szs7O0c7O0ksSSwyQjs7SztNLE07TTs7d0I7OztJO0k7STtHOztJO0c7O0k7Rzs7O0k7O3lCLE87OztPLE87OztPLE87OztPLE87Ozs7SSx1Qjs7SSxXO0c7Rzs7STs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0k7SyxVO0ssTTtLLE87YSw0QjtJO0ksTTtHOztJO2dCOztJLGtCO0ksTztHOztJLHdCO0c7aUMsdUM7O0ksSSxLLDRCO0k7STtJO0ksTztHOztJLFM7O0s7TTtNLFMsMkI7SyxLO00sTTtLLFU7O0ssTztJO0k7SztLOzs7Uzs7UTtJLE87Rzs7SSxTO0k7SSxVO0k7SztNO00sUztNLE07TSxNO00sTztpQjtLOztNO00sTTs7WTtNLE07SyxTO0s7TTtPLE07Ozs7Ozs7O0s7SyxLLDZDO0s7SyxNOztJLFc7STtHOztJO0k7ZTtJOzs7a0IsVztLLFEsVztJO0k7Rzs7STtJO2U7STs7O2tCLFc7SyxRLFc7STtJO0c7O0k7OztHO0c7OztJLFM7STtLO2U7SyxHOzs7TSxVO00sRyxrQjtPLE07Ozs7Ozs7Ozs7Vzs7OztJO0c7O0ksYywrQjtHOztJO0s7Szs7O0k7O00sVTs7O08sVTtPOztNLFU7K0I7Ozs7TTtNLGE7TTs7OzZCLE8sOEI7ZTs7Ozs7SztLLE07O0k7d0Isb0Q7SSxPO0c7O0k7Ozs7MkI7O0c7O0k7O0ssTzs7O0ksTzs7O0ksdUI7O0ksVztHO0c7O0k7STs7O007SztLLE8sVztJO0k7SztLLDBCLHNDO0ksTztHOztJO0ksa0I7STtHOztJO0ksa0I7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJOzs7Ozs7OztJLE87Rzs7STtJO0k7STtJO0k7SSxNO0c7O0k7STtJLE07Rzs7STtJO0ksTTtHOztJO0ksTTtHOztJLFk7O0k7Rzs7SSxZOztJO0c7RztJO0k7STtJO0k7STtJO0k7STs7STtLLEc7TSxNO2E7TSxNO0ssZ0Q7Ozs7TyxZOzs7O1M7Ozs7Ozs7Ozs7O1E7Ozs7O08sTTs7O0s7Szs7Ozs0Qjs7O0c7O0k7ZTtJLFc7SSxPO0c7O0ksZTtJO0s7TSxNO00sTzs7Ozs7Ozs7SSxhO0k7STtHO0c7O0ksTzs7Rzs7STs7O08sTTs7Ozs7Szt5QixPLDhCO00sTztLOzs7OztLLDBCO0ssTzs7Rzs7SSxnQjs7SywwQjtLLE87O0c7O0kscUM7eUM7SSxvQjtJO0k7Rzs7STtLLFM7SyxPO0ssUTtrQyxPO0ksVztJLG9CO0k7STtHO0c7O0k7SyxPO0ssTztJLE8sVztHOzs7SywrQixTO0k7O0ssK0IsYTtJOzs7Ozs7Ozs7O1Esb0I7OztTLDBCO1MsTzs7Ozs7MEI7Ozs7VTs7VTs7VTs7VTs7Uzs7MEI7Ozs7O1U7O1M7O1E7Ozs7OztTOzs7OzthLFU7YSxvQjthO2E7WTtTOzs7O1M7Ozs7Uzs7VTs7O1UsTzs7Ozs7O1E7O3lCOztRO1MseUIsUztTO1M7b0I7USxxQjs7OztRLDBCO1EsTzs7O1E7O1E7O1E7Ozs7Ozs7OztVOztVOztVOztVOztVOztTOzs7Uzs7Uzs7Uzs7Uzs7UTs7eUI7Ozs7Uzs7Uzs7Uzs7Uzs7VSxPO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7OztTOzs7UTs7O007TyxRO087Ozs7Ozt3Qjs7OztRLE87Ozs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7O1MsTzs7Ozs7Ozs7Ozs7O1M7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7UyxPOzs7Ozs7Ozs7OztTOztTOztTOztTOztTLGM7dUI7Uzs7VSxPO1Usc0I7UyxPOzs7UyxPOzs7Ozs7OztTOztTOzs7O1MsYzs7Ozs7O1M7O1Usc0I7UyxPOzs7Ozs7Ozs7Ozs7OzBDO1M7O1UsTztVLE87Ozs7Ozs7O1M7Ozs7Ozs7Ozs7O1M7Ozs7OztVLGM7Ozs7OztVOztXLHNCO1UsTzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzswQjs7UTs7UTs7USxPOztROztROzs7Ozs7Ozs7Ozs7UTtROzs7OztrQjtrQjs7OztRO1E7Ozs7O2tCO2tCO2tCOzs7O1E7O1E7Ozs7SSxlO2U7O0ksb0I7SSxPO0c7O0k7Ozs7STs7Tzs7SSxHO0ssSSxTOztNOztPLE87TyxXO08sTztNLFc7TSxNOztLO00sTTs7OztLO007TztROztXOztXO1U7USxPOzs7TTtPO08sZTtPOzs7Ozs7OztNOztPO21EO087TyxPO00sVztNO00sTTs7Szs7Ozs7Ozs7d0IscUQ7aUI7O0s7O007OztTLGM7Uzs7VSxhO1UsWTtTLE87O2lCOztLO0s7STtJO0k7SyxRO0ssRzs7O087OztRLFE7Ozs7Ozs7OztxQjs7O1M7VSxPO2lCOzs7OztPOzs7Ozs7VSxJLGM7Ozs7WSxNOzs7cUI7Ozs7VTtXLEk7O1c7WTs7Ozs7O1U7VyxNOzs7Ozs7O087USxNOztPO1EsTztRLE87Ozs7Ozs7O087Ozs7Ozs7Ozs7O1U7VTtTO007Ozs7Ozs7SSxXOztJLFc7OztHOztJO0k7SyxNO0ssTTtJLE87RztHOztJO0s7SyxNO0ssTTtJLE87RztHOztJOztHOztJOztLOztPO1k7TSxHO00sRzs7Ozs7O0k7RzsyQiw0QjsyQiw0Qjs7STs7O0s7OzRCLDRCO00sTTtZO007Ozs7Ozs7O1MsbUI7O1MsTztRO1k7OztJLFE7SSxVO0k7Ozs7Ozs7O007TTtNO007O08sVTs7O0s7Szs7OEI7OztRO1E7UTs7O1M7O1UsVTs7Ozs7Ozs7O1E7Ozs7Ozs7aUI7UyxNOzs7OztROztVO2U7O1c7Uzs7VztnQjtVOzs7ZTs7OztVLGM7Ozs7Vzs7VTs7YTtVLE07Ozs7Ozs7OztROztTLE07Ozs7UTs7UyxNOzs7OztJOzs7Ozs7Ozs7Ozs7K0I7Ozs7Ozs7O0c7O0k7STtLO1k7Szs7Ozs7TTs7TyxZO08sTSxXO08sTTtPLFk7TTtNLE07OztLOztNLE0sVztNLFksVztNLFc7SztLLE07O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CLCtDOztJLDhCO0c7O0k7Rzs7STtHOztJO0c7b0Isd0Q7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOzt5QixTO0ksaUI7STs7OztHOztJO0c7b0Isd0Q7O0k7Rzs7STtHOztJO0c7O0k7OztZO0c7O0ksd0M7Rzs7STtHOztJOztLO087O0k7OztZO0c7O0k7Rzs7STtHOztJOzs7WTtHOztJOzs7WTtHOztJO0c7O0ksVztJLFc7Rzs7RztJOztHO0c7STs7RztHO0k7O0c7RztJOztHO0c7STs7O0k7OztZO0c7O0k7OztZO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJOzs7O0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STs7OztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Ozs7Rzs7STtHOztJO0c7O0k7Rzs7STtHO0c7Ozs7MkIsUzs7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7MkIsNkM7O0k7Rzs7STs7O1k7Rzs7STtHOztJO0c7O0k7Rzs7SSxNOztHO0c7Ozs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJLDBCO0c7O0k7OztZO0c7O0k7Rzs7SSxvQztHOztJOzs7WTtHOztJO0c7O0k7Rzs7STs7O1k7Rzs7STtHOztJO0c7O0k7Rzs7STtHO3lCLG1EOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzt5QixvRDs7STtHO3VCLGtEO3VCLGtEOztJO0c7dUIsa0Q7d0IsbUQ7eUIsb0Q7eUIsb0Q7O0k7Rzs7STtHO3lCLG9EOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7a0IsMEQ7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Szs7Ozs7O1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7OztTOzs7Ozs7Ozs7Ozs7Ozs7SyxhOzs7Ozs7Ozs7Ozs7Ozs7O0s7TTs7UyxNOztROztJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SztJOzs7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLO0k7OztJOztLLHNEOztNOzs7aUMsaUM7O21DO007TztrQjs7TTtrQyxXLGM7TTs7O1MsdUIsa0IsaUI7OztTOztrQjtrQix1QjtpQjs7O1MsMkIsWSxpQjs7O1MsMkIsWSxpQjs7O1M7NkIsb0IsMEI7OztTLHVCLFksMEI7OztTOztrQjtrQix1QjtpQjs7O1M7O2tCO2tCLHVCO2lCOzs7Uzs7a0I7a0IsdUI7aUI7OztTOztrQjtrQix1QjtpQjs7O3FCO1M7OztVO1Usc0I7VSxPO1M7OztTOzs2QixvQiwwQjs7O1M7O2tCOzJEO2tCO2lCOzs7Uzs7a0I7a0I7a0IsTztpQjtvQzs7SztLO0k7SSxPO0c7MEIsbUI7NEIsbUI7O0csdUI7RyxJO0csMEI7RztHLHlCO0c7RyxzQjtHO0csNkI7RztHLDRCO0c7Ryw0QjtHO0csMkI7RztHLGlDO0c7RyxrQztHO0csZ0M7RztHLHdCO0c7Ryx3QjtHO0csd0I7RztHLHFCO29CLGtEOztHLHlCO0c7Ryx3QjtHO0csMkI7RztHLDhCO0c7RywrQjtHO0csNkI7O0k7SyxPO0ssTztJLE8sVztHOzttQixvRDtHO0ksUTtJO0csdUI7RztHLDBCO0c7RywwQjtHO0csdUI7RztHLDBCO0c7RyxzQjtHO0csMkI7RztHLDhCO0c7RywwQjtHO0csNkI7RztJLGM7STtHLDRCO21CLGtEOztHLHNCOztJO0ssTztLLE87SSxPLFc7Rzs7RyxpQjtrQyw4QjtvQyw4Qjs7Ryx1QjtHO0csc0I7RztHLHdCO0c7RyxvQjtHO0csK0I7RztHLHdCO0c7RyxvQjtHO0csd0I7RztHLG1DO2dDLHNDOztHLHNDOztJO0k7Rzs7Ryx5QjtHO0csdUI7RztHLHVCO3lCLDZCOztHLHVCO0c7RywyQjtHO0csMkI7RztHLHVCO0c7RywyQjtHO0csb0I7RztHLHNCO0c7RyxzQjtHO0csd0I7NEIsTyxrQzs7SSxPOztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7O0ksTzs7Ozs7Rzs7SSxPOzs7OztHOztJLE87Ozs7O0c7bUMsOEI7O0csMEI7RztHLDZCO0c7Ryx1QjtHO0csbUM7RztHLDhDO0c7Ryx5Qzs7STtJO0ksTztHOztJO0k7STtJLE87Rzs7Ryx1QztzQixtQzs7Ryw4QjtxQyw4Qjs7Ryx1Qjs7RyxpQjtHO0cscUI7RyxJO0csd0I7RztHLGlCO2tCLGtDOztJLGU7SSxPO0c7cUIsa0Q7d0Isa0M7OzRCLHVDOzRCLGlDOztHLDhCO3dCLG1DO3dCLGtDOztHLGlCO0c7RyxpQjtHLEk7MkIsNEI7O0cseUI7RztHLHlCO0c7Ryx1QjtrQyw2Qjs7Ryw0QjtHO0csNEI7RztHLDBCO2lCLGtDOztHLHNCO0c7RyxvQjtzQiw2QjtrQixrQzsrQiw4Qjs7SSxZO2dCO0ksdUI7Ozs7ZTs7Ozs7Rzs7SSxZO2dCOztJLE87Rzs7RyxzQjtHO0cseUI7MkIsTywwQjt3QixPLDBCO3lCLE8sMEI7O0csNEI7RztHLCtCOzBCLFc7MkIsVztvQixrQzs7RywwQjtHO0csc0I7RztHLHdCO0c7Ryw0Qjt5QixTOztJO0ksTTtHOztJO0ksTTtHOzBCLFM7O0csc0I7OEIsOEI7O0csOEI7O0k7SyxNOzs7O0c7O0cseUI7O0k7STtHOztHLDBCOztJLE87RzswQixtRDtxQixPLGlEO3VCLFM7MEIsUzswQixTOzZCLDRCO29CLGtDO3FCLGtEOztHLHdCOztJLE87Rzs7Ryx5QjtHOzJCO0csSTtHLHlCO0c7RyxzQjtHO0csMEI7RztHLHdCOztJLGU7SSxPO0c7O0ksVzs7O0c7O0k7Ozs7Rzs7Ryw4Qjs7STs7OztHOztJOzs7Rzs7STs7O0c7eUIsNkI7MkIsNkI7dUIsTyxxQzs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksbUIsTTtJO0ksTztHOztJOzs7O0k7STs7SyxNO0ssTTtLLFM7SyxNO0ssVztLLE07SyxNOztLLFM7STtJLE87Rzs7STtJO0k7O0ssTTtLLE07SSxPO0c7OztJO0ssWSxrQjs7OztnQjtLOzs7OzJCOzs7OztJO0ksVTtJO0s7TSxNO1k7OztJO0k7STtHOztJLEcsbUM7SSxlO0k7STtHOztJO0ssVTtLOzs7YztjLE87YTtJOzs7Szs7TSxNLFc7SyxlO0s7TSxNO1c7Ozs7OztLO00sTTtvQjs7OztLO00sMEI7TTs7O3dCLE8sd0I7SSxPO0c7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO0k7STtJO0k7STtJO0k7STtJO0k7STtJO0k7STtJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QixnQztHOytCLGdDOztJO0ssWTtLO007TyxPOzs7Ozs7TSxJLEksTzs7Ozs7TztPOzs7Z0I7OztLO0s7Ozs7OztLO0s7O0c7O0ksK0M7SztJO0k7Rzs7O0k7SztNLE87MkIsTyxxQztNLFE7TSxRO00sTzsyQixPLG1DO00sUzs7SztrQixNOzs7Ozs7Ozs7OztROztTO1MsRztTLEc7UyxJOzs7Ozs7Ozs7O0s7O007UTs7VztNLFc7TSxXO00sVztNOzs7UyxPLHFCO1E7TSxhO007OztTLE8scUI7UTtNLFk7Szs7Ozs7Ozs7Ozs7Ozs7VTs7Ozs7O087UTs7d0I7TTs7Ozs7TyxPO2tCOztLOzs7OzRCOzs7OztJO0ssRzs7OzswQix5QjtjOzs7OztJLEs7SyxPOztJOztLLFU7TSxJOztNLEk7O0k7SztPOzs7STs7TSxPO0ssVTtNO007TSxJOzs7TSwwQjtNLEk7OztHOztJOztLLGlCO0s7OztJOztLO0s7OztJOztLOzs7O007SztJOztLO0k7STtJO0k7O0k7SSxPO0c7O0ksTztHOzRCLFEsNEI7OztJOztJO0ssaUI7SztNO087Uzs7TyxPOzs7O1U7VyxTO1csTztVO1UsVTtVLE87UztPLGE7TyxJO007TTs7OztNO00sTTs7Szs7OztLOztNO007OztLLFM7SztNOztNLGE7TTtNO087O1E7UyxZOzs7Ozs7Ozs7Ozs7Ozs7OzthO2MsYzs7Yzs7Ozs7Ozs7Ozs7Ozs7YTs7YyxPOzs7Ozs7Ozs7Ozs7Ozs7O087Ozs7Ozs7TTtNOzs7Szs7Rzs7Ozs7Ozs7SztLOzs7O1M7O1UsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQiw0Qjs7UTtLO0ssTzs7O0s7TSxhOztNLDRCOztRO00sTztLO2tCOztJO0ssVztLLG1COzs7aUI7MkI7OzhCO0k7SyxxQjs7SyxXOzs7SyxPLHFCO0k7SSxHOzs7OztLOztNOzs7O0ksMEI7STtLO087Ozs7SyxXO0s7Tzs7OztLLFc7SztPOzs7TSxXO007ZTs7Ozs7Ozs7O0k7SyxjLGUsd0IsUztLO00sTztNLE87SyxPO0k7Ozs7Ozs7OztHOztJOzs7Ozs7Rzs7STs7STs7SyxPO0ssTztLLE87STs7STtLOztRO1c7O0s7O2lELGU7Rzs7STs7SyxPO0ksRztLO0k7O0ssTztJLE87OztHOzs7Szs7O00sSTtLLEc7TTtPLE87Tyw0QjtNLE87O0ssVztLLE87STtJLE87Rzs7RztJOzs7RztJOzs7STs7O0s7TTs7Ozs7Ozs7O0s7TSxPO00sTztNLFU7SyxHO007YztNOztLLFM7O007TyxPO08sNEI7OztVLFc7VSxPO1M7TTs7SztNLE87TSxPOztNOzs7OztLOzs7O0s7TTs7O1M7OztLO007OztTOztJO0c7O0k7SSxPO0c7O0k7SSxPO0c7O0k7STtLOzJCOztJOztJO0s7Szs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2Qjs7Ozs7OzswQixrQzs7Ozs7OzswQiw2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQzs7Ozs7Ozs2Qjs7Ozs7Ozs2Qjs7O3dCLGM7Ozs7OzZCOzs7eUIsbUI7Ozs7OzZCOzs7eUIsbUI7Ozs7Ozs7OEI7Ozs7Ozs7Ozs7OEI7OztLOzs7Ozs7Ozs7Ozs7Ozs7SztNO00sVTt5QixpQjtNLHNCO0s7SyxlO0s7Szs7TTs7TyxJO087OztVOzs7OztXLE87VyxPO1csVTtXO1c7VTs7VTtTO08sVTs7O1U7Ozs7O1U7Vzs7VTs7VztZLEc7YTtZLFc7WTs7VyxHO1k7VyxXO1c7VTtVOzs7VyxXO1csUzs7Ozs7VTtTO007TTs7Ozs7Ozs7OztXO1ksUTs7O1k7OztZO2EsTzthOztXO1c7Ozs7O3FCO3FCOztVO087OztPO2M7TyxXO087UTs7cUMsd0M7TztPOzs7O1c7VyxPO1U7USxjOzs7VztXOzs7WTs7O2E7WSxPOztXO1c7VztXLE87VTtPO087O007OztNLFc7TTs7SztLOzs7OytDO0s7Szs7Rzs7STtJLE87Rzs7STtNOztLO0s7O0k7OztlO0s7SyxjO0ssTztLO0k7STtJLE87Rzs7OztFOzs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQixPLHNDO21CLE8seUM7bUIsTyxzQztxQixPLHdDOzs7STtJLGtCO0k7STtLLE07SztPOztLLE87Ozs7Ozs7Ozs7STtJLE8sVztHOztJO0ssTTtLO08sVztJLE87YTtHOzs7SztNLE0sVztNO1E7VTtNOzs7OztVLFU7VSxPO21COzs7O1M7TTs7SztLO0s7SztJO0ksTyxXO0c7O0k7SyxTO0ssTTtLLEs7SSxPOztHOzs7SztLLEcsNkI7SyxJOztJO0ksTyxXO0c7O0k7SyxNO0s7TyxXO0ksTzthO0c7O0k7SyxNO0s7TztTLFc7SztPLFc7O0s7SyxPO0k7SSxPLFc7Rzs7OztNOztPLFU7TyxPO007TSxPO0s7O007TSxLO087TyxLLDZCOztNLE87SztLLE87STtJLE8sVztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7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LHFCO0s7a0I7OztHOztJLEksSTs7SyxJLE8sdUIsTztLLHFCO0s7a0I7OztHOztJOzs7TSxXO2dCO08sTTs7bUIsYzs7Ozs7OzRCOzs7Rzs7STs7SyxROzs7OztRLGU7Tzs7Ozs7Szs7OztHOztJO0k7O087Tzs7Ozs7Ozs7Ozs7Ozs7TztNOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCLE87O1E7OztRLE87O1Esc0M7USxROzs7O1E7Ozs7UTs7O2dCOzs7Rzs7STtJOzs7Ozs7Ozs7Ozs0Qjs7O1EsTzs7NEI7OztROzs7USxrQixPOztROztRLHNDO1E7Ozs7Ozs7Ozs7OztHOztJO0k7Ozs7OztTLG1DO1M7O1MsbUM7Uzs7UyxrQixPOztTOzs7O0c7eUI7NkI7O0k7Ozs7Ozs7OztLOztNO0ssTzs7SSxNO0c7RyxJLEk7O0ksc0M7STs7OztHO0ksa0I7Ozs7STtLLFc7SztLO0s7SztLOztLO007OztRLFk7UTs7Ozs7OztLLEk7Szs7O0k7O0s7SztLO0k7O0s7SztLO0k7O0ssSSxVLHdDOzs7OztpQjs7TTs7STs7SyxxQjs7aUI7O0s7STs7Szs7O1M7O1M7aUI7Ozs7O1E7Ozs7USxrQixRO3dCOzs7O2tEO3VDO1E7UyxRO1M7UztTO1M7Ozs7Ozs7Ozt1Qjs7Ozs7UTs7O1M7UztROzJDOzs7UTt1Qjs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7OztTOzs7OztRLGtDO1E7USxJLDZCO1E7O1E7UTs7UTs7UztTO3VCO1E7dUI7UTs7UTs7UTs7UztTO1E7eUI7UTt5QjtROztROztRLG9CO1E7O1E7OztRO1E7UTt1Qjs7OztRO3VCOzs7STs7SyxrQjtLO0s7STtJO0k7SSxJLG1CO0ksRzs7O0ssUTtLLGlCLE8sd0I7aUM7O0ksSSxlLG9DOztLO0s7STtJOzs7OztJO1k7Ozs7Ozs7O0ksUTtJOztvQjs7O3NCOzs7OztHO0c7O0ksb0M7O0ssSTtLO007OztnQjtvQjtPO1E7OztROzs7OztNOztJOztLLEksVTtLOzs7TyxrQztRO1MsTTs7Ozs7TyxVOzs7Ozs7Ozs7YTs7O2MsdUI7ZTtnQjs7Ozs7O2M7ZTs7Ozs7Ozs7Ozs7O2E7Ozs7O2MsVTs7Ozs7Ozs7Z0I7Ozs7Ozs7O2lCO2lCO2tCOzs7aUI7OzsyQjs4Qjs7OzsyQjs7OztlLE07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztROztTLGU7OztVLEksbUI7OztVLEksbUI7O1UsSSxtQjs7Ozs7Ozs7Uzs7O1E7Ozs7OztNO00sZTs7STs7SyxJO0s7cUI7Z0Isd0MscUI7TSxTO007OztnQjttQjtPLFM7Ozs7UyxPO1M7Ozs7O08sSTs7O007TSxJOztJO0ksSTs7O2M7RztzQiw0QjtnQyw0Qjs7STs7SyxNO0s7SztLOzs7O00sSSxJLHVCOzs7Ozs7Uzs7Ozs7O1E7UTs7OztPOzs7TTs7Ozs7SSxPO0c7NkIsMEI7dUMsMEI7dUIsVztHLDZCOztJLFU7STs7Rzs7SSxVO0k7O0c7O0ksVTtJOzZCLE07STtHOztJLFU7STs2QixNO0k7Rzs7STtLO087OztLO0ssZSxNO0s7O0ksTztHOztJO0s7Tzs7O0s7TTtNO0ssZSxNO0s7O0ksTztHOztJO0s7Tzs7O0s7TTtNO007SyxhLE07SyxPOztJLE87RzttQywwQjs2QixvQjtnQyw2Qjs7STs7TztJLE87Rzs7STtLO007O2dCO007TSxNO0s7Ozs7MkI7OztHOztJLEksMkM7OzsyQjs7O0c7O0k7STs7UTs7O007O087O1E7USxZOztROzs7O1k7Ozs7Ozs7OztLLFU7SyxPOztHOztJO2lDO0c7O0k7aUM7Rzs7STtnQjs7Ozs7Ozs7Rzs7STtLOzs7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs4QixvQzs7SSxHLGdDOztJOzs7Ozs7TTs7Tzs7UTtRO1E7O1c7Ozs7Ozs7OztLLE87O0c7O0k7Rzs7STtJOzs7Ozs7TTs7TyxvQjs7UTtTO1M7Uzs7OztpQjs7Ozs7OztPO1E7UTtROzs7Ozs7OztLLE87O0c7bUMseUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUM7T0FUQUQ7T0FpQ0FJO09BU0FDO09BMUNBTDtPQUFBQTtPQUFBQTtPQUFBQTtPQWtEQU07T0FTQUM7T0EzREFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0VBUTtPQXBFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2RUFTO09BN0VBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FFQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F0RUFUO09Bc0VBUztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUdBQztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FTQUM7T0FrQkFFO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQW9DQUk7T0FVQUM7T0E5Q0FMO09BQUFBO09BQUFBO09BQUFBO09BdURBTTtPQVVBQztPQWpFQVA7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyRUFRO09BM0VBUjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXFGQVM7T0FyRkFUO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BU0FDO09BbEJBRjtPQVNBQztPQWtCQUU7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09Bb0NBSTtPQVVBQztPQTlDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOEZBVTtPQTlGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FTQUM7T0FsQkFGO09BU0FDO09Ba0JBRTtPQTNCQUg7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FvQ0FJO09BMERBTTtPQTlGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0F1REFNO09BVUFDO09BakVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJFQVE7T0EzRUFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcUZBUztPQXJGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvR0FXO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVUFDO09BcEJBRjtPQVVBQztPQW9CQUU7T0E5QkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BVUFDO09BVkFEO09Bd0NBSTtPQVdBQztPQW5EQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0E2REFNO09BV0FDO09BeEVBUDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW1GQVE7T0FuRkFSO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNEZBUztPQTVGQVQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FxR0FVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BU0FDO09BVEFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Ba0JBRTtPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EyQkFHO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTJCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E2Q0FLO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BcENBSjtPQW9DQUk7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FVQUM7T0FWQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQkFFO09BcEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FNQUM7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FOQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FlQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FmQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F3QkFHO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTUFDO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BTkFEO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZUFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BZkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0JBRztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVNBQztPQWxCQUY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0EyQkFHO09BM0JBSDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQW9DQUk7T0FwQ0FKO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FTQUM7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bb0NBSTtPQXBDQUo7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BMkJBRztPQTdDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FTQUM7T0EzQkFIO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bck5BeEI7T0FxTkF3QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvQ0FJO09BcENBSjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWxCQUY7T0FrQkFFO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNkNBSztPQTdDQUw7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FzREFNO09BdERBTjtPQUFBQTtPQStEQU87T0EvREFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bd0VBUTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXhFQVI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FpRkFTO09BakZBVDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTBGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FwQ0FKO09Bb0NBSTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQVNBQztPQVRBRDtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQWtCQUU7T0FsQkFGO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bek1BdkI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FvT0EwQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXBPQTFCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BNk9BMkI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E3T0EzQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXdCQUc7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E4TkF5QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQTlOQXpCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOE5BeUI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0E5TkF6QjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQThOQXlCO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BOU5BekI7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F1RkFVO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdkZBVjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXVGQVU7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0F2RkFWO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BdUZBVTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXZGQVY7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FpTEFvQjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQXNEQU07T0FTQUM7T0EvREFQO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09BQUFBO09Bc0RBTTtPQXREQU47T0FTQUM7T0FUQUQ7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FBQUE7T0FrQkFFO09BbEJBRjtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtPQUFBQTtP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dUZ4QixPQUFBLDhCQXZGd0JBLFFBQUFBO1U7Ozs7VTs7Ozs7VSxNO1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7U0FzR3hCLFVBQUEsOEJBdEd3QkEsUUFBQUE7UyxvQkFBVk07UyxvQkFBQUE7UyxvQkFBQUEsS0FBVU47OztTLGNBQUFBO1Msb0JBQVZNO1Msb0JBQUFBLEtBQVVOOzs7bUJBQUFBLG1CQUFBQTtTLG9CQUFWTSxLQUFVTjtTLG9CQUFWTSxLQUFVTjs7O1M7O1k7cUNBRVVnQixVQUFBQSxXQUFBQTtTLE87OztJQURjOztLOztNO2tCOzs7a0I7SyxxQjtJO0k7Ozs7Ozs7bUMsUzt5QixTOzs2QixjOztJLFc7RztrRCxPO0c7NkMsTztHOzs7Ozs7Ozs7Ozs7Ozs7O0ksVTtJLFc7Rzs7SSxxQjtHOzhCLE8sd0M7O0ksTztHOztJLFU7SSxPO0c7O0k7O0c7OytCLHNCOztJOzs7SyxtQjtJLGU7Ozs7SSxlOztnRCx5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7SUNzUDlDQztJQXFNQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFoM0JBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7O0lBQUFDO0lBQUFDOzs7Ozs7Ozs7OztJQU9BQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFJQUMsZ0JBQWdCQyxJQUFHMUY7SUFDWCxJQUFOOEQsTUFBTTtJQUNWLFdBRnFCOUQsR0FDakI4RDtJQUNKLE9BQUEsOEJBRmtCNEIsSUFDZDVCO0dBRXVCO1lBR3pCNkIsV0FBV0QsSUFBR3BDO0lBQU8sT0FOckJtQzthQU1XQztzQkFBa0M1QixLQUFPLE9BQS9CLDBCQUF3QkEsUUFBL0JSLE1BQTZE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U0FHQUM7U0FNQUM7U0FNQUM7O1NBakhFdEY7SUFySEY4RjtJQUlRQztJQUFBQztJQUNBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQzs7SUFJUkM7SUFJQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFHQUM7SUFJQUM7SUFDQUM7SUFzQkFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBR0FDO0lBSVFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBSVJDO0lBSUFDO0lBQ0FDO0lBTUFDO0lBTUFDO0lBRUFDO0lBQ0FDO0lBQ0FDO0lBR0FDO0lBT0FDO0lBR0FDO0lBSUFDO0lBQ0FDO0lBSUFDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBTUFDO0lBbURBQztJQUdBQztJQUdBQztJQUdBQztJQUlBQztJQUlBQztJQUlBQztJQUdBQztJQUdBQztJQUdBQztJQU1BQztJQU1BQzs7Ozs7U0F0T0E1RjtTQUlRQztTQUFBQztTQUNBQztTQUFBQztTQUNBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUNBQztTQUFBQztTQUFBQztTQUFBQztTQUFBQztTQUNBQzs7U0FJUkM7U0FJQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FDQUM7U0FHQUM7U0FJQUM7U0FDQUM7U0FzQkFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBR0FDO1NBSVFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFDO1NBSVJDO1NBSUFDO1NBQ0FDO1NBTUFDO1NBTUFDO1NBRUFDO1NBQ0FDO1NBQ0FDO1NBR0FDO1NBT0FDO1NBR0FDO1NBSUFDO1NBQ0FDO1NBSUFDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBQ0FDO1NBTUFDO1NBbURBQztTQUdBQztTQUdBQztTQUdBQztTQUlBQztTQUlBQztTQUlBQztTQUdBQztTQUdBQztTQUdBQztTQU1BQztTQU1BQzs7U0EzR0V2TDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FZQUU7SUF2SUZzTDtJQUlRQztJQUFBQztJQUNBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUNBQzs7SUFJUkM7SUFLQUM7SUFDQUM7SUFvQ0FDO0lBeUJRQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQVFSQztJQUNBQztJQU1BQztJQU1BQztJQUVBQztJQUNBQztJQUNBQztJQUdBQztJQU9BQztJQUdBQztJQUlBQztJQUNBQztJQUlBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQU1BQztJQW1EQUM7SUFHQUM7SUFHQUM7SUFPQUM7SUFJQUM7SUFJQUM7SUFHQUM7SUFHQUM7SUFHQUM7SUFNQUM7SUFNQUM7O0lDMVJBQztJQVVBQztJQUNBQztJ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QUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQURBRDtTQUNBQztJQUdKQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBS0lDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FEQUQ7U0FDQUM7SUFHSkM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDdFlGQztJQVVBQztJQUNBQztJQUVBQztJQUNBQztJQUNBQztJQUNBQztJRDJYTUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NDL1hOTDs7Ozs7O1NBYkFIOzs7U0FlQUs7U0FEQUQ7OztTQUVBRTs7OztTQU5BTDs7Ozs7Ozs7U0FDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0RnWU1LO1NBQ0FDO0lBR0pDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLSUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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O0lBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTFEakIzRjtPQUFBQztPQUNBQztPQUFBQztPQUNBQztPQUFBQztPQU1BQztPQUNBQztPQUNBQztPQUNBQzs7T0FJQUM7T0FDQUM7T0FjRkU7T0FBQUU7T0FBQUU7T0FBQUU7T0FBQVE7T0FBQUw7T0FBQU07T0FBQUc7T0FBQUU7T0FBQUk7T0FBQUs7T0FBQUQ7T0FPSStDO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BQUFEO09BT0E2QztPQUNBQztPQUVBQzs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2FDakZNQyxVQUFVQztLQUNKLElBQUpDLElBQUksd0JB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QUQ7UUFBQUQ7UUFBQUc7UUFBQUM7UUFBQUM7UUFXRk87UUFBQVU7UUFBQVQ7UUFBQUE7O1FBSktlO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQ0FFO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQ0tHO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQ0tHO1FBQUxDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFFO1FBQUFEO1FBQ1FHO1FBQVJDO1FBQUFDO1FBQUFDO1FBQUFFO1FBQUFEO1FBQUFFO1FBQUFDO1FBQUFDO1FBQUEzRTtRQUFBVTtRQUFBVDs7O1NBakJLOUM7U0FBTEM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUQ7U0FBQUU7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUU7U0FBQUQ7U0FDS0c7U0FBTEM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUQ7U0FBQUU7U0FBQUM7U0FBQUM7U0FBQUM7U0FBQUU7U0FBQUU7U0FBQUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUFLVUc7VUFBUkM7VUFBQUM7VUFBQUc7VUFBQUQ7VUFBQUQ7VUFBQUc7VUFBQUM7VUFBQUM7VUFXRk87VUFBQUM7VUFBQVM7O1NBSktNO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQ0FFO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQ0tHO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFEO1NBQUFFO1NBQUFDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFFO1NBQUFEO1NBQ0tHO1NBQUxDO1NBQUFDO1NBQUFDO1NBQUFFO1NBQUFE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Ozs7Ozs7O09BS0FDOzs7T0FKQTl6Sjs7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHTWdDaUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBO0lBR0o7SUFDQztJQUNGO0lBQ007SUFaUjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBd0ZDO0lBNERDO0lBa0JGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEwQlZ4Z0U7SUFDQUM7SUFDQWk1TjtJQUNB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Ozs7O0k7Ozs7O1E7Ozs7WTtZO1c7UyxPO1Esc0I7O08sZ0IsTztPLHNCOzs7OzRDOzs7bUI7O087Ozs7STtHOztJO0ksTztHOztJO0k7OztHOztJO0ksSSwyRDs7OztNLFE7OztPOzs7Ozs7Ozs7O2E7O2E7O2E7O2E7O2E7O2E7Ozs7Ozs7Ozs7OztPO087TztPO087Tzs7O007Ozs7O0k7Szs7Ozs7Ozs7O0s7Ozs7OztLLE07O0ksTztHOztJLFM7STtJLE87Rzs7SSxPO0c7O0k7SSxPO0c7O0ksWTs7STtJO0ssSTtLLE87SSxPO0c7O0k7Ozs7Z0I7aUI7Rzs7STs7Ozs7TyxZOzs7Ozs7O1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJLFk7OztLLE87O21CLE87STtLLEs7O087O1U7STtJO0ksYztHOztJOzthOzs7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7O2dCOztnQjs7Z0I7d0I7O0k7STtJLGM7Rzs7SSxZOzs7ZTs7O0ksTztHOztJLFk7Ozs7Ozs7SyxPOzs7SyxPO0k7SyxLOztPOztVO0k7STtJLGM7Rzs7SSxZOzs7ZTs7Ozs7OztJLE87Rzs7O0ksYzs7STs7O2lCOztLO0s7Ozs7c0IsTyxzQzs7SSwwQjs7OzBDOzs0Qzs7TTs7eUM7O0s7Ozt5Qzs7Szs7OztLLE87OztJO0c7Ozs7SztLO0s7O0k7STtJLE87Rzs7STtJO0ksTztHOztJO0k7SSxPO0c7O0k7STs7O0s7Szs7SSxPO0c7O0ksMEI7OzswQzs7Ozs7Ozs7VztXO1c7O087TztPLE87OztNO007TSxPOzt5Qzs7Szs7O3lDOztLOzs7O0ssTzs7O0k7Rzs7STtJO0ksTztHOztJLFE7O0k7STtJO0k7SSxPO0c7O0k7STtJLFEsNEI7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxRO0k7STtHOztJO0k7STs7Szs7OztnQjtJO0k7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxXO0k7OztNOzs7SSxPO0c7O0k7SSxTO0k7SztLLFc7Szs7OztLO0ssTTs7Rzs7STtJO0ksb0I7SSxPO0c7O0k7STtJOztLOzs7O2dCO0k7SSxRO0k7STtHOztJO0k7STs7Szs7OztnQjs7SztLO0ssTztJO0ksTztHOztJO0ksUztJO0s7SyxXO0s7Ozs7SztLLE07O0c7O0k7Ozs7TyxjLE87TyxzQjs7O087Ozs7VztXO1U7USxPO1EsTTs7O1c7VyxPO1U7TyxzQjs7Ozs7O08sK0I7Ozs7O00sZ0IsTztNLHNCOzs7STtHOzs7SyxPO0k7SSxPO0c7O0k7Ozs7Ozs7Ozs7OztLOztJO0c7O0k7STs7TSxPOzs7OztRLGtCLE87USxPOzs7TztRLFc7UTtrQjs7O1EsUztRO2tCOztPLE87Ozs7TyxPOztNLGtCO00sTzs7OztNO21CLE87MEI7Tzs7USw0QjtRLDRCO087O3FCOztNLEk7Ozs7OztrQixPOzJCO1E7Uzs7O1ksMEI7WTtZLE87O1M7Z0M7UTs7c0I7OztpQixPOzBCO08sRztROztTLDRCO1M7Z0M7UTs7O1E7O1MsNEI7UztnQztROzs7cUI7Ozs7TyxPOzs7OztPO1E7Uzs7Uyw0QjtRLE87O087UTtROzs7OztRO1EsTzs7TyxJOzs7O0c7O0k7O0ksMEI7SSxPO0c7O0k7SyxPOzs7OztNO007Ozs7O1UsUTtVO1U7UztNO007TSxPOzs7OztPO087Ozs7O1c7VyxRO1c7VztXO1c7VztXO1U7TztPO08sTzs7O007TTs7Ozs7VSxRO1U7VTtTO007TTtNLE87Ozs7TTtNO00sTzs7O0s7SztLO0s7OztNO007TTs7O007SztLLE87Ozs7O007TTtNLE87OztLO0s7SyxPOzs7O0s7SztLLE87OztJO0k7SSxPOztvQixPLDhDOztJO0k7Ozs7Tzs7Ozs7Ozs7OztTOzs7VTs7YTthLE87WTtVLE87VSxPO1M7VTs7O2M7Ozs7O3FCOzs7YTtXLFc7VTs7OztvQzs7Ozs7Ozs7Ozs7Ozs7O1UsTzs7Ozs7Ozs7Ozs7YywwQjs7Ozs7OzswQjtTOzs7Ozs7TztRLGE7UTs7OztrQzs7Ozs7Ozs7UyxPOzs7O2dILE87Ozs7OztTLE87Ozs7Ozs7USxPOzs7Szs7RztzQyx1Qjs7SSwwQjtJLE87Rzs7SSxVO0ksMEI7SSxPO0c7Ozs7Ozs7O0k7Ozs7Ozs7SSxNO0c7O0k7O0s7O0ssTztLOzttQzs7O0k7OztVO1U7SyxNO0ksTztHOztJLFc7STthO0c7O0k7SyxPO0ssTTtJO0ksaUI7STthOzs7RztHOzs7OztJOztJOztLO0s7SztLOzs7O3dCLE07TSxXOztNOzs7Ozs7SSxNO0c7O0k7O0s7SztLO0s7Ozs7d0IsTTtNLFc7O007Ozs7O2lCLE07O0c7O0k7OztHOztJO0ksTztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UTs7UTtTO1M7Ozs7O1UsdUI7Ozs7UTtTO1M7Ozs7O1UsdUI7Ozs7UTs7Z0IscUI7O1E7UTtTO1M7UztTO1M7Uzs7OztVO1U7VTtVO1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UztTOzs7O1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UztTOzs7O1U7VTtVOzs7Ozs7OztVLHNCOzs7OztRO1E7UTtROzs7UTs7UTs7O1E7Z0I7OztHOztJOztLO007O1M7O007Ozs7Ozs7UTs7UTtnQjs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7USxjLE87USxPLGM7O1E7O1E7Z0I7OztHOztJO0k7Szs7UTs7Szs7Ozs7TyxRO08sTzs7TyxPOztPLE87O08sTzs7TyxPOztPLE87O087USxJO1EsSTtRLE07USxJO1E7UTtROzs7O1E7Uzs7WTs7Uzs7Ozs7VztZLE07WSxNO1ksTTtZLE07WTtZO1k7OztZLE87Vzs7Vzs7Vzs7O08sTzs7TztlOztHOztJO0k7Szs7UTs7OztTOztVLEk7UztTO1MsTzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTLG9DOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztROzs7Rzs7STtJO0s7O1E7aUM7aUM7Szs7O0c7O0k7O0s7TTs7Uzs7TTs7Ozs7UTs7UTs7UTs7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7aUM7aUM7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLEkseUM7Ozs7Vzs7OztTLEkseUM7Ozs7Vzs7OztTO1M7UyxJLFcsdUI7O1U7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztVLFcsbUI7VTs7cUI7O1M7UztTLEksVyx1Qjs7VTs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTO1UsVyxxQjtVOztxQjs7UztTO1MsSSxXLHlCOztVOzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O1MsTyxxQjs7UztTO1MsSSxXLHlCOzs7Ozs7Ozs7Ozs7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UyxvQzs7UyxRO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTLG9DOzs7UyxPOztrQjs7OztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7aUI7O1M7UztTO2tCOzs7Ozs7Ozs7O087ZTs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7O3FCOztTO1M7Uzs7c0I7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7Szs7Ozs7TyxJLGM7TztRO1E7aUI7OztTO1M7UztrQjs7Ozs7Ozs7Ozs7TztlOztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztpQjtTLE07O2lCLE07UztpQjs7Szs7O0c7O0k7STtLOztROzs7O1M7O1MsTTs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O2lCO1MsTTs7aUIsTTtTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7O0s7Ozs7O087TztRO1E7USxpQjtRO1E7UTtpQjs7UztTO1M7UyxtQjtTO1M7UztrQjs7Ozs7Ozs7OztPO2U7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7TSxNO2lDO0s7OztHOztJO0k7Szs7UTs7OztTOztTLE07O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7Uzs7Uzs7Uzs7Szs7O0c7O0k7STtLOztROzs7O1M7O1M7O1M7O0s7OztHOztJOztLO007O1M7O007Ozs7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7O1E7UztTO1M7UztTO1M7UztTO1U7VTtVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTO1M7UztVO1U7VTtVOzs7Ozt1Qzs7Ozs7UTtTO1M7UztTO1U7VTtVO1U7Ozs7O3VDOzs7OztRO1E7UTtROzs7UTs7UTs7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztLOzs7Rzs7STtJO0s7O1E7Ozs7UztTO1M7O1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztROztROztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7UztTO1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7VTtVO1U7VTs7Ozs7dUM7Ozs7O1E7UztTOztTO1U7O2E7O1c7VyxNOzs7VTs7O1M7UztVOztVO1c7O2M7O1c7Ozs7O2E7O2E7YSxNOzthO3FCOztVO1U7Ozs7O3VDOzs7OztRO1M7Uzs7UztVOzthOztXO1csTTs7O1U7OztTO1M7VTs7VTtXOztjOztXOzs7OzthOzthO2EsTTs7YTtxQjs7VTtVOzs7Ozt1Qzs7Ozs7UTtRO1E7UTs7UTtTOztZOztTOzs7OztXO1c7Vzs7VztZOztlOzs7O2dCLE87O2dCOztnQjs7WTs7Ozs7VyxPOztXOztXOzs7O1E7O1E7UTs7O1EseUM7O1E7O1E7Z0I7OztHOztJO0k7Szs7UTs7OztTO1M7O1M7O1M7O0s7OztHOztJO0k7Szs7UTs7OztTOztTOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztRLDBCOztRO1E7OztRLHlDOztRO2dCOzs7Rzs7STtJO0s7O1E7Ozs7UyxPOztTOztTOztLOzs7Rzs7STs7SztNOztTOztNOzs7OztRLE87O1E7O1EseUM7Z0I7OztHOztJOzJCLE87STtHOztJO0ksTztHOztJO1k7STs7O0ssTTtLLEk7SztLOzs7O00sVztNO2E7TTs7Ozs7STtHOztJO0s7Rzs7O0k7STtJO0ssTTtJOztLOztNOztJO0c7O0k7SztNLFM7TSxJO007Szs7Ozs7TSxPOzs7Rzs7STtLO00sUztNLEk7TTtLOzs7OztNLE87OztHOztJLFM7STtLO0s7Szs7OztLO0ssTTs7RztHOztJOzs7K0IsTzs7SyxJLG1EOzs7aUMsb0I7TSxJOzs7TyxNOztNLE07O0k7STtHOztJLFE7SSw2QjtHOztJO0ssUztLLEk7STtHOztJLFM7SSxvQixPLDJCO0k7SztLLFM7SyxJO0k7Rzs7STs7OytCLE87STtJLHVCOztLO007TyxPO087TyxzQjtPOzs7O007Ozs7MkIsb0I7TTtNLDJDOztJO0ksc0I7Rzs7SSxTO0ksb0IsTywyQjtJO0k7Rzs7STtHOztJO0c7Rzs7O0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJLE07NEI7RztHOztJOztLLEksVyx3Qzs7OzZCOzs7O0ksVztJLGM7OztJO0k7ZTs7OztNLEksWTs7OzhCOzs7Ozs7Szs7Rzs7STtLOztNLE07TTs7TSxPO0s7TSxPO00sTztLLE07NEI7O0k7SyxPO0ssTztJLGM7OztJOztLLHNCOztJOzs7SSxtRTtJO0c7O0ksNkM7SSxXOzs7SSxpRTtJO0c7O0k7MEI7O2dEO0k7Rzs7STs7eUM7MkM7O0k7Rzs7STswQjs7Ozt5QzsyQzs7STtHOztJLGlFO0k7Rzs7STswQjs7Z0Q7STtHOztJLCtEO0k7Rzs7STswQjs7OEM7STtHOztJLGlFO0k7Rzs7SSxrRTtJO0c7O0k7MEI7O2lEO0k7Rzs7STs7SyxPOztJOzs7STtJO2EsTztLLHlCLFE7O00sa0I7Ozs7Rzs7STtJO2EsTzs7O007O08sUTs7Ozs7OztHOztJOztjOztlO2dCLGU7Z0I7OzJCOztjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjOztlO2dCLGU7Z0I7OzJCOztjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjLDBFO2M7YTs7Rzs7STs7Yyx3RTtjO2E7O0c7O0k7O2MsMEU7YzthOztHOztJOztjOztzRDswRDs7YzthOztHOztJOztjLDJFO2M7YTs7Rzs7STt5QixvQixXO0ksTyxXO0c7O0k7eUIsc0IsYTtJLE8sVztHOztJOzs7Ozs7SyxzQjs7SSxNOztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDckZBQyxzQkFBd0IsaUJBQUs7WUFDN0JDLGVBQWVDLEdBQVEsc0JBQVJBLEdBQWU7WUFDOUJDLGlCQUFpQkMsS0FBVSx1QkFBVkEsS0FBcUI7WUFDdENDLGdCQUFnQkM7SUFBWSx1QkFBUSxrQ0FBcEJBO0dBQTJDO1lBQzNEQyxlQUFlQztJQUFRLHVCQUFRLHNDQUFoQkE7R0FBaUM7WUFDaERDLGNBQWNDLEdBQVEsb0JBQVJBLEdBQWM7WUFDNUJDLGdCQUFnQkQsR0FBUSxzQkFBUkEsR0FBZ0I7WUFDaENFLGdCQUFpQkY7SUFBbUIsdUJBQVEsNkJBQTNCQTtHQUE4QztZQUMvREcsZ0JBQWlCSDtJQUFtQix1QkFBUSw2QkFBM0JBO0dBQThDO1lBQy9ESSxvQkFBb0JKO0lBQVEsdUJBQVEsaUNBQWhCQTtHQUF1QztZQUMzREssY0FBY0MsYUFBYUMsSUFBSyxrQkFBbEJELGFBQWFDO0dBQXFCO1lBQ2hE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Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJO3VCLHVDO0k7Ozs7SztLLEk7STtJO0k7O0s7SztLO0s7O0k7STtJO0k7STtLLEk7SztLO0s7SztLO0s7SztLO0s7Szs7Szs7Ozs7O087O1EsTTtRLE07USxNO1EsTTtPO087Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1E7O1MsTTs7O087O1E7UztTO1M7UztTO1M7UTs7O087UTs7UTs7Ozs7O087Ozs7Ozs7OztNOzs7OztJLFE7O0s7SztLO0s7SztJO0k7STtJO0k7STtJLE87OztJO0ssTSxtQjtLLE07SyxJO2tDOytCO0ksTztHO3NCLCtCO3NCLGlDOztJO0ssSTtlO2dCO0k7STtJLE87RzsyQixPLG9DO0csVTtHLDJCOztJO0ssSztLLEs7SyxLO0ssSztLLEs7SyxJOzs7Ozs7Ozs7Ozs7Ozs7OztJLE87Rzs7SSxxQjtJLHVCLG9DO0c7O0ksOEI7OztLOzs7STtHOzBCLGEsb0M7O3dCLFM7O0k7SSxVOzZCO2dDO0ksVztHOztJO0ssUTtLLHFCO0s7SztJO0ksUTtJO0k7STtJO0ksTztHO3FDLHNCOztJO2dCOztJO0c7K0IsUzsrQixTOztJO0ksVTtJOzs7Yzs7ZTs7Z0I7bUI7SztNO08sSTtPO087Tzs7VSxXLE07c0I7cUIsTTtzQjtxQixNO3NCLE07VTtTO087O1UsZTtzQjtTOzs7TztPOzs7Ozs7O087Tzs7Ozs7OztPO087Ozs7Ozs7TztPOzs7Ozs7O1EsYztROztPO087Ozs7Ozs7NEI7OztJO0c7O0k7STtJLHVCLDRDO0k7SyxJO0s7Szs7Szs7O0k7OztLLFU7Szs7Ozs7OztLLFU7Szs7Ozs7OztLLFU7Szs7Ozs7OztLLFU7Szs7Ozs7O29CLE87SyxVO0s7Ozs7Rzs7STtJLE87Rzs7STtJLE87Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7OztJQ3hCSnFDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFoT0FDO0lBQUFDO1lBQUE5bEg7Z0RBQUE7Z0RBQzJCOztLQUQzQjZsSDtjQUNBL3FILEtBQWlCc0Y7bURBQUEsNkNBQUE7NEJBQWpCdEY7O29CQUFpQitVLEtBQUF6UDtvREFBQSxHQUFBeVA7cURBQUEsNkNBQUE7OEJBQWpCL1U7b0RBQWlCLDZDQUFBO3FEQURqQixXQUFBa0YsT0FDQWxGO1NBQWlCc0Y7b0RBQUE7bURBQVU7bURBQVYsNkNBQUE7cUNBQUFBO21EQUFBLG9EQUFBO21DQUFqQnRGO2tEQUEyQjs7S0FEM0Jnckg7Y0FDQTFsSDtrREFBQSxtREFBQTt3Q0FEQXlsSCxjQUNBemxIO2tEQUEyQjsrQ0FBM0IsU0FBQTJsSDtJQUFBajJHO2dEQUFBLG1EQUFBOytDQUFBQTtnREFBMkI7WUFBM0JrMkcsa0JBQUFqMkc7Z0RBQUEsbURBQUE7K0NBQUFBO2dEQUEyQjsrQ0FBM0IsU0FBQWsyRyxvQkFBQWx1SDtlO3NFQUFBQTs7WUFBQW11SCxvQkFBQW5ySDtlO3NFQUFBQTs7O0lBRUFvckg7O0lBQUFDO1lBQUFoa0g7Z0RBQUE7Z0RBVW9CO1lBVnBCdEM7Z0RBQUE7Z0RBVW9CO1lBVnBCQztnREFBQTtnREFVb0I7WUFWcEJ3QztnREFBQTtnREFVb0I7O0tBVnBCNGpIO2NBQ0Fyckg7a0RBQUE7O2FBREF1ckgsaUJBQUFDO3FEQUNBLDRDQUFBOytCQUFBeHJIO3FEQUFBLDRDQUFBOytCQUFBQTtxREFBQSw0Q0FBQTt1REFEQTthQUFBeUgsU0FDQXpIO1dBREF3ckg7cURBQ0EsNENBQUE7K0JBQUF4ckg7cURBQUEsNENBQUE7K0JBQUFBO3FEQUFBLDRDQUFBOytCQUFBQTtxREFBQSw0Q0FBQTt1REFEQSxXQUFBaUYsT0FDQWpGO1dBREF1ckg7cURBQ0EsNENBQUE7K0JBQUF2ckg7cURBQUEsbURBQUE7c0NBQUFBOzthQURBbUY7cURBQ0EsNENBQUE7K0JBQUFuRjtxREFEQSxVQVFhc0Y7eURBQUEsNkNBQUE7a0NBUGJ0Rjs7MEJBT2ErVSxLQUFBelA7MERBQUEsR0FBQXlQOzJEQUFBLDZDQUFBO29DQVBiL1U7MERBT2EsNkNBQUE7MkRBUmI7aUJBQUFnRixPQUNBaEY7ZUFPYXNGOzBEQUFBO3lEQUFXO3lEQUFYLDZDQUFBOzJDQUFBQTt5REFBQSxvREFBQTt5Q0FQYnRGO3dEQU93QjtZQVJ4Qm1GO3FEQUFBLG1EQUFBO3NDQUNBbkY7O2FBREFvRjtxREFDQSw0Q0FBQTsrQkFBQXBGO3FEQURBLDRDQUFBO3VEQUFBLFdBQUFzSCxPQUNBdEg7V0FEQW9GO3FEQUFBLG1EQUFBO3NDQUNBcEY7O2tEQVNvQjs7S0FWcEJzckg7Y0FDQWhtSDtrREFBQSxtREFBQTt3Q0FEQStsSCx1QkFDQS9sSDtrREFTb0I7K0NBVHBCO0dBQUFtbUg7SUFBQTltRztnREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7O29EQUFBLG1EQUFBOzhDQUFBakssa0JBQUFpSzs7bURBQUEsbURBQUE7NkNBQUFqSyxrQkFBQWlLOztrREFBQSxtREFBQTs0Q0FBQWpLLGtCQUFBaUs7O2dCQUFBQTs7a0RBQUEsbURBQUE7NENBQUFqSyxrQkFBQWlLOzs7a0RBQUEsbURBQUE7NENBQUFqSyxrQkFBQWlLO1NBQUFDOzs2QkFBQUE7OzhCQUFBQTsrQkFBQUE7a0NBQUFBO2tDQUFBQTtnQ0FBQUE7O1dBQUE2ekM7VUFBQUEsbUJBQUFBO29EQUFBO1NBQUFDLFdBQUFEO3FEQUFBakc7dURBQUE7Z0NBQUFrRztvREFBQSxXQUFBbEc7O21EQUFBLG1EQUFBOztnQkFBQTkzQztnQkFBQWtLO2dCQUFBRDs7VUFBQWcwQztTQUFBQSxtQkFBQUE7bURBQUE7UUFBQTNQLFdBQUEyUDtvREFBQXAyQjtzREFBQTtnREFBQXltQjttREFBQSxXQUFBem1COztrREFBQSxtREFBQTs7ZUFBQTduQjtlQUFBa0s7ZUFBQUQ7O2lEQUFBO01BQUErbUc7a0RBR01DO2tEQUNBQztrREFKTmhxRjtrREFBQUM7TUFBQWdxRjs7cURBQUE7cURBQUE7b0VBQUE7Y0FBQUM7bUJBQUFBO3NCQUFBQTs7Ozs7aUJBQUE5cEYsMkJBQUFDO2dCQUFBRCxtQkFBQUE7O2NBQUErcEY7Y0FBQXBwRjt5QkFBQVg7MEJBQUFJOzhEQUFBO3NCQUFBSjsrREFBQSxtREFBQTswREFBQXRuQixrQkFBQWlLO3FCQUFBcWQ7K0RBQUEsa0RBQUE7O3NCQUFBZ3FGLFFBQUFocUY7OERBQUEsT0FBQWdxRjs4REFTb0I7d0JBVHBCNXBGOztjQUFBQSxpQkFBQU8saUJBQUFYO3FDQUFBQztzQ0FBQUE7O2dCQUFBSixtQkFBQUksZ0JBQUFKOztzQkFJTStwRjtlQUpOaHFGLHdCQUFBSyxnQkFBQUw7OzJEQUlNOzREQUpOVSxtQkFBQUY7NERBSU02cEY7OERBQUE7dUNBSk4zcEY7ZUFJTXNwRixpQkFBQUs7O3FCQURBTjtjQUhOL3BGLHdCQUFBSyxnQkFBQUw7OzBEQUdNOzJEQUhOYyxtQkFBQU47MkRBR004cEY7NkRBQUE7c0NBSE54cEY7Y0FHTWlwRixpQkFBQU87OzJCQUhOSDs7Ozs7c0RBQUEsbURBQUE7aURBQUFyeEcsa0JBQUFveEc7O3FEQVNvQjtpREFUcEJELFNBQUFIO1FBQUE5cEY7a0RBQUEsbURBQUE7O2VBQUFsbkI7ZUFBQWtuQjtlQUFBamQ7UUFBQWtkO2tEQUFBLG1EQUFBOztlQUFBbm5CO2VBQUFtbkI7ZUFBQWxkO2dCQUdNZ25HLG9CQUNBQzs7VUFBQU8sb0JBREFDO2tEQUhOLFdBR01BLFNBQ0FEOztpREFKTixtREFBQTs7Y0FBQXp4RztjQUFBaUs7O3lCQUdNZ25HOzZCQUNBQzs7Z0RBSk4sbURBQUE7MENBQUFseEcsa0JBQUFpSztnREFTb0I7WUFUcEIwbkc7Z0RBQUE7O21EQUlNO1FBQUFDO1FBREFDO29EQUNBeDJFO3NEQUFBOytCQUFBdTJFO29EQUZGRTsrQkFFRXoyRTtvREFEQXN3RDtzREFBQTsrQkFBQWttQjtvREFERkU7K0JBQ0VwbUIsZUFERm1tQjttREFBQTt3QkFBQUM7O21EQUtBO1FBQUF6ekQ7b0RBQUFDO3NEQUFBO2dEQUFBRDttREFBQTs0QkFBQUM7O21EQUVBO1FBQUFDO29EQUFBbmxDO3NEQUFBOytCQUFBbWxDO21EQUFBOzRCQUFBbmxDOztnREFBZ0I7K0NBVHBCO0dBQUEyNEY7SUFBQTd0SDtnREFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7Ozs7bURBQUEsbURBQUE7cURBQUE5QixRQUFBOEI7OztpQkFBQUE7O21EQUFBLG1EQUFBO3FEQUFBOUIsUUFBQThCOzs7OztZQUFBOEg7Z0NBQUFBO21DQUFBQTtjQUFBSTthQUFBQSxtQkFBQUE7O1lBQUFDLE9BQUFEO1lBQUFFOzs7O2dCQUFBRDt1REFBQSxXQUFBQzs7c0RBQUEsbURBQUE7d0RBQUFsSyxRQUFBNEosS0FBQTlIOzttQ0FBQThIO2NBQUFPO2FBQUFBLGlCQUFBQTt1REFBQTtZQUFBbkksS0FBQW1JO3dEQUFBbEk7MERBQUE7bUNBQUFEO3VEQUFBLFdBQUFDOztzREFBQSxtREFBQTt3REFBQWpDLFFBQUE0SixLQUFBOUg7Ozs7Ozs7O3VEQUdNO1lBSE51Ujt3REFHTXU4Rzt3REFDQUM7d0RBSk5yOEc7d0RBQUFDO1lBQUFDOzsyREFBQTs7MkRBQUE7OzZEQUFBOztpQkFBQUM7O2lCQUFBQztpQkFBQUM7d0NBQUFBO3lDQUFBQTs4REFBQTtnRUFBQTs7bUJBQUFKOztxQkFBQUk7aUVBQUE7K0NBQUFKOzs7K0RBSU07NkNBQUFvOEc7a0JBSk5yOEc7O29CQUFBSztnRUFJTTs4Q0FKTkw7OzhEQUlNLDRDQUFBO21CQUFBTTtpRUFBQTswQ0FKTkY7a0JBSU1pOEcsbUJBQUEvN0c7Ozs4REFEQTs0Q0FBQTg3RztpQkFITnA4Rzs7bUJBQUFLOytEQUdNOzZDQUhOTDs7NkRBR00sNENBQUE7a0JBQUFPO2dFQUFBO3lDQUhOSDtpQkFHTWc4RyxtQkFBQTc3Rzs7OEJBSE5KOzsyREFTb0I7dURBVHBCRCxLQUFBTDs7eURBQUE7dUNBQUFHO3dEQUFBLDRDQUFBOzsyREFBQTt5Q0FBQUE7d0RBQUEsbURBQUE7MkRBQUF4VCxjQUFBOEI7Ozt5REFBQTt1Q0FBQTJSO3dEQUFBLDRDQUFBOzsyREFBQTt5Q0FBQUE7d0RBQUEsbURBQUE7MkRBQUF6VCxjQUFBOEI7O3VEQUdNO3dEQUFBOzBEQUFBO3dDQUFBOHRIO3dEQUNBOzBEQUFBO3dDQUFBQzs7Z0JBQUFDLHdCQURBQzt3REFITjtvQkFHTUE7b0JBQ0FEOzt1REFKTjt3REFBQTs7Ozs7OERBSU07NENBQUFEOzs7Ozt3REFKTjs7Ozs7OERBR007NENBQUFEOzs7Ozt1REFITixtREFBQTswREFBQTV2SCxRQUFBOEI7Ozs7OztvREFBQSxtREFBQTtzREFBQTlCLFFBQUE4Qjs7OztnREFBQSxtREFBQTtrREFBQTlCLFFBQUE4QjtnREFTb0I7WUFUcEJrdUg7Z0RBQUE7OztRQUlNQztRQURBQztRQUNBOTdHLG9DQUFBNjdHO1FBQUE1N0csMEJBQUFEO1FBREFFLHNDQUFBNDdHO1FBQUEzN0csNEJBQUFELFFBQ0FEO21EQUZGOzsyQ0FDRUU7OztRQUlGdlM7UUFBQUM7O3VFQUFBRDttREFBQTs7NEJBQUFDOzttREFFQTtRQUFBZ0k7b0RBQUFDO3NEQUFBOytCQUFBRDttREFBQTs7NEJBQUFDOztnREFBZ0I7O0lBRXBCaW1IO0lBQUFDO1lBQUE1bEg7Z0RBQUE7O2dEQU9rQztZQVBsQ0M7Z0RBQUE7Z0RBT2tDO1lBUGxDa1c7Z0RBQUE7Z0RBT2tDOztLQVBsQ3d2RztjQUNBbHRIO2tEQUFBOzthQURBbUY7cURBQ0EsNENBQUE7K0JBQUFuRjtxREFEQSw0Q0FBQTt1REFBQTthQUFBMGQsU0FDQTFkO1dBREFtRjtxREFBQSxtREFBQTtzQ0FDQW5GOzthQURBb0Y7cURBQ0EsNENBQUE7K0JBQUFwRjtxREFEQSw0Q0FBQTt1REFBQTthQUFBd0gsU0FDQXhIO1dBREFvRjtxREFBQSxtREFBQTtzQ0FDQXBGOzthQURBcUY7cURBQ0EsNENBQUE7K0JBQUFyRjtxREFEQSw0Q0FBQTt1REFBQTthQUFBdUgsU0FDQXZIO1dBREFxRjtxREFBQSxtREFBQTtzQ0FDQXJGOztrREFNa0M7O0tBUGxDbXRIO2NBQ0E3bkg7a0RBQUEsbURBQUE7d0NBREE0bkgsa0JBQ0E1bkg7a0RBTWtDOytDQU5sQyxTQUFBOG5IO0lBQUFDO2dEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7b0RBQUEsbURBQUE7OENBQUFqRixrQkFBQWlGOzttREFBQSxtREFBQTs2Q0FBQWpGLGtCQUFBaUY7O2tEQUFBLG1EQUFBOzRDQUFBakYsa0JBQUFpRjs7Z0JBQUFBOztrREFBQSxtREFBQTs0Q0FBQWpGLGtCQUFBaUY7OztrREFBQSxtREFBQTs0Q0FBQWpGLGtCQUFBaUY7U0FBQUM7OzZCQUFBQTs7OEJBQUFBOytCQUFBQTtrQ0FBQUE7a0NBQUFBO2dDQUFBQTs7V0FBQXJsSDtVQUFBQSxtQkFBQUE7b0RBQUE7U0FBQUMsV0FBQUQ7cURBQUFFO3VEQUFBO3VDQUFBRDtvREFBQSxXQUFBQzs7bURBQUEsbURBQUE7O2dCQUFBaWdIO2dCQUFBa0Y7Z0JBQUFEOztVQUFBRTtTQUFBQSxtQkFBQUE7bURBQUE7UUFBQXgvRSxXQUFBdy9FO29EQUFBOUs7c0RBQUE7K0JBQUExMEU7bURBQUEsV0FBQTAwRTs7a0RBQUEsbURBQUE7O2VBQUEyRjtlQUFBa0Y7ZUFBQUQ7O1NBQUFHO1FBQUFBLG1CQUFBQTtrREFBQTtPQUFBQyxXQUFBRDttREFBQTcvRTtxREFBQTsrQkFBQTgvRTtrREFBQSxXQUFBOS9FOztpREFBQSxtREFBQTs7Y0FBQXk2RTtjQUFBa0Y7Y0FBQUQ7O2dEQUFBLG1EQUFBOzBDQUFBakYsa0JBQUFpRjtnREFNa0M7WUFObENLO2dEQUFBOzttREFFSTtRQUFBelc7b0RBQUEwVztzREFBQTtnQ0FBQTFXO21EQUFBOzRCQUFBMFc7O21EQUVBO1FBQUFwdEU7b0RBQUFDO3NEQUFBOytCQUFBRDttREFBQTs0QkFBQUM7O21EQUVBO1FBQUFLO29EQUFBQztzREFBQTtzQ0FBQUQ7bURBQUE7NEJBQUFDOztnREFBOEI7K0NBTmxDO0dBQUE4c0U7SUFBQS91SDtnREFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7Ozs7bURBQUEsbURBQUE7cURBQUFzQyxVQUFBdEM7OztpQkFBQUE7O21EQUFBLG1EQUFBO3FEQUFBc0MsVUFBQXRDOzs7OztZQUFBOEg7a0NBQUFBO2FBQUFDO1lBQUFBLG1CQUFBQTtzREFBQTtXQUFBQyxPQUFBRDt1REFBQUU7eURBQUE7bUNBQUFEO3NEQUFBLFdBQUFDOztxREFBQSxtREFBQTt1REFBQTNGLFVBQUF3RixLQUFBOUg7O2tDQUFBOEg7YUFBQUk7WUFBQUEsbUJBQUFBO3NEQUFBO1dBQUFDLE9BQUFEO3VEQUFBRTt5REFBQTtrQ0FBQUQ7c0RBQUEsV0FBQUM7O3FEQUFBLG1EQUFBO3VEQUFBOUYsVUFBQXdGLEtBQUE5SDs7a0NBQUE4SDthQUFBTztZQUFBQSxpQkFBQUE7c0RBQUE7V0FBQW5JLEtBQUFtSTt1REFBQWxJO3lEQUFBO3lDQUFBRDtzREFBQSxXQUFBQzs7cURBQUEsbURBQUE7dURBQUFtQyxVQUFBd0YsS0FBQTlIOzs7O29EQUFBLG1EQUFBO3NEQUFBc0MsVUFBQXRDOzs7O2dEQUFBLG1EQUFBO2tEQUFBc0MsVUFBQXRDO2dEQU1rQztZQU5sQ2d2SDtnREFBQTs7bURBRUk7UUFBQTl1SDtvREFBQUM7c0RBQUE7Z0NBQUFEO21EQUFBOzs0QkFBQUM7O21EQUVBO1FBQUFnSTtvREFBQUM7c0RBQUE7K0JBQUFEO21EQUFBOzs0QkFBQUM7O21EQUVBO1FBQUFKO29EQUFBQztzREFBQTtzQ0FBQUQ7bURBQUE7OzRCQUFBQzs7Z0RBQThCOztJQUdsQ2duSDtJQUFBQztZQUFBbjRGO2dEQUFBLE9BdEJBeTFGO2dEQTJCb0M7WUFMcEMxMUY7Z0RBQUEsT0FWQXUzRjtnREFlb0M7O0tBTHBDWTtjQUNBOXRIO2tEQUFBO1dBREFtRjttREFDQSw0Q0FBQTs2QkFBQW5GO21EQURBLDRDQUFBO3FEQUFBLFdBQUEyMUIsU0FDQTMxQjtTQURBbUY7bURBQUEsbURBQUE7b0NBQ0FuRjs7VUFEQW9GO2tEQUNBLDRDQUFBOzRCQUFBcEY7a0RBREEsNENBQUE7b0RBQUEsV0FBQTQxQixTQUNBNTFCO1FBREFvRjtrREFBQSxtREFBQTttQ0FDQXBGO2tEQUlvQzs7S0FMcEMrdEg7Y0FDQXpvSDtrREFBQSxtREFBQTt3Q0FEQXdvSCxpQkFDQXhvSDtrREFJb0M7WUFKcEMwb0gscUJBQUFDO2dEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7bURBQUEsbURBQUE7NkNBQUE1RixrQkFBQTRGOztrREFBQSxtREFBQTs0Q0FBQTVGLGtCQUFBNEY7O2dCQUFBQTs7a0RBQUEsbURBQUE7NENBQUE1RixrQkFBQTRGOzs7a0RBQUEsbURBQUE7NENBQUE1RixrQkFBQTRGO1NBQUFDOzs2QkFBQUE7OEJBQUFBO2lDQUFBQTsrQkFBQUE7O1VBQUFwbUg7U0FBQUEsbUJBQUFBO21EQUFBO1FBQUFDLFdBQUFEO29EQUFBRTtVQVZBb2xILHNCQVVBcmxIO21EQUFBLFdBQUFDOztrREFBQSxtREFBQTs7ZUFBQXFnSDtlQUFBNkY7ZUFBQUQ7O1NBQUFFO1FBQUFBLG1CQUFBQTtrREFBQTtPQUFBQyxXQUFBRDttREFBQUU7U0F0QkE1QywyQkFzQkEyQztrREFBQSxXQUFBQzs7aURBQUEsbURBQUE7O2NBQUFoRztjQUFBNkY7Y0FBQUQ7O2dEQUFBLG1EQUFBOzBDQUFBNUYsa0JBQUE0RjtnREFJb0M7WUFKcENLO2dEQUFBO2lEQUVJO01BQUFDO2tEQUFBQztRQVpKZCxzQkFZSWE7aURBQUE7MEJBQUFDOztnREFFQTtLQUFBdGtCO2lEQUFBQztPQTFCSmtpQiwyQkEwQkluaUI7Z0RBQUE7eUJBQUFDO2dEQUFnQztZQUpwQ3NrQix1QkFBQTV2SDtnREFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7bURBQUEsbURBQUE7cURBQUF3QyxVQUFBeEM7OztpQkFBQUE7O21EQUFBLG1EQUFBO3FEQUFBd0MsVUFBQXhDOzs7OztZQUFBOEg7a0NBQUFBO2FBQUFJO1lBQUFBLG1CQUFBQTtzREFBQTtXQUFBQyxPQUFBRDt1REFBQUU7YUF0QkF5bEgsNkJBc0JBMWxIO3NEQUFBLFdBQUFDOztxREFBQSxtREFBQTt1REFBQTVGLFVBQUFzRixLQUFBOUg7O2tDQUFBOEg7YUFBQU87WUFBQUEsaUJBQUFBO3NEQUFBO1dBQUFuSSxLQUFBbUk7dURBQUFsSTthQVZBNHVILHdCQVVBN3VIO3NEQUFBLFdBQUFDOztxREFBQSxtREFBQTt1REFBQXFDLFVBQUFzRixLQUFBOUg7Ozs7b0RBQUEsbURBQUE7c0RBQUF3QyxVQUFBeEM7Ozs7Z0RBQUEsbURBQUE7a0RBQUF3QyxVQUFBeEM7Z0RBSW9DO1lBSnBDNnZIO2dEQUFBO2lEQUVJO01BQUEzdkg7a0RBQUFDO1FBWko2dUgsd0JBWUk5dUg7aURBQUE7OzBCQUFBQzs7Z0RBRUE7S0FBQWdJO2lEQUFBQztPQTFCSjhsSCw2QkEwQkkvbEg7Z0RBQUE7O3lCQUFBQztnREFBZ0M7O0lBRXBDMG5IO0lBQUFDO1lBQUE3bUM7Z0RBQUEsT0FQQStsQztnREFZd0I7WUFMeEI5dUQ7Z0RBQUE7Z0RBS3dCO1lBTHhCbnBDO2dEQUFBO2dEQUt3Qjs7S0FMeEI4NEY7Y0FDQTN1SDtrREFBQTs7bURBQUEsbURBQUE7bUNBQUFBOzs7YUFEQW1GO3FEQUNBLDRDQUFBOytCQUFBbkY7cURBREEsNENBQUE7dURBQUE7YUFBQTYxQixTQUNBNzFCO1dBREFtRjtxREFBQSxtREFBQTtzQ0FDQW5GOzthQURBb0Y7cURBQ0EsNENBQUE7K0JBQUFwRjtxREFEQSw0Q0FBQTt1REFBQTthQUFBZy9ELFNBQ0FoL0Q7V0FEQW9GO3FEQUFBLG1EQUFBO3NDQUNBcEY7O2FBREFxRjtxREFDQSw0Q0FBQTsrQkFBQXJGO3FEQURBLDRDQUFBO3VEQUFBO2FBQUErbkYsU0FDQS9uRjtXQURBcUY7cURBQUEsbURBQUE7c0NBQ0FyRjs7a0RBSXdCOztLQUx4QjR1SDtjQUNBdHBIO2tEQUFBLG1EQUFBO3lDQURBcXBILGNBQ0FycEg7a0RBSXdCO1lBSnhCdXBILGtCQUFBQztnREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7Ozs7O3FEQUFBOztvREFBQSxtREFBQTs4Q0FBQXhHLGtCQUFBd0c7O21EQUFBLG1EQUFBOzZDQUFBeEcsa0JBQUF3Rzs7a0RBQUEsbURBQUE7NENBQUF4RyxrQkFBQXdHOztnQkFBQUE7O2tEQUFBLG1EQUFBOzRDQUFBeEcsa0JBQUF3Rzs7O2tEQUFBLG1EQUFBOzRDQUFBeEcsa0JBQUF3RztTQUFBQzs7NkJBQUFBOzs4QkFBQUE7OytCQUFBQTtnQ0FBQUE7bUNBQUFBO21DQUFBQTttQ0FBQUE7aUNBQUFBOztvREFBQSxtREFBQTs4Q0FBQXpHLGtCQUFBd0c7O1dBQUFFO1VBQUFBLG1CQUFBQTtvREFBQTtTQUFBL1csV0FBQStXO3FEQUFBQzt1REFBQTsrQkFBQWhYO29EQUFBLFdBQUFnWDs7bURBQUEsbURBQUE7O2dCQUFBM0c7Z0JBQUF5RztnQkFBQUQ7O1VBQUFJO1NBQUFBLG1CQUFBQTttREFBQTtRQUFBQyxXQUFBRDtvREFBQUU7VUFQQXBCLHFCQU9BbUI7bURBQUEsV0FBQUM7O2tEQUFBLG1EQUFBOztlQUFBOUc7ZUFBQXlHO2VBQUFEOztTQUFBTztRQUFBQSxtQkFBQUE7a0RBQUE7T0FBQUMsV0FBQUQ7bURBQUFFO3FEQUFBOytCQUFBRDtrREFBQSxXQUFBQzs7aURBQUEsbURBQUE7O2NBQUFqSDtjQUFBeUc7Y0FBQUQ7O2dEQUFBLG1EQUFBOzBDQUFBeEcsa0JBQUF3RztnREFJd0I7WUFKeEJVO2dEQUFBO2lEQUVJOzs7bURBREE7UUFBQTVsRDtvREFBQUM7c0RBQUE7OEJBQUFEO21EQUFBOzZCQUFBQzs7bURBRUE7UUFBQTRsRDtvREFBQUM7c0RBQUE7Z0NBQUFEO21EQUFBOzZCQUFBQzs7bURBQ0E7UUFBQUM7b0RBQUFDO1VBWEp0QixxQkFXSXFCO21EQUFBOzZCQUFBQzs7Z0RBQW9CO1lBSnhCQyxvQkFBQWh4SDtnREFBQSxVQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7Ozs7bURBQUEsbURBQUE7cURBQUEwQyxVQUFBMUM7OztpQkFBQUE7O21EQUFBLG1EQUFBO3FEQUFBMEMsVUFBQTFDOzs7OztZQUFBOEg7a0NBQUFBO2FBQUFDO1lBQUFBLG1CQUFBQTtzREFBQTtXQUFBQyxPQUFBRDt1REFBQUU7eURBQUE7bUNBQUFEO3NEQUFBLFdBQUFDOztxREFBQSxtREFBQTt1REFBQXZGLFVBQUFvRixLQUFBOUg7O2tDQUFBOEg7YUFBQUk7WUFBQUEsbUJBQUFBO3NEQUFBO1dBQUFDLE9BQUFEO3VEQUFBRTthQVBBd25ILHVCQU9Bem5IO3NEQUFBLFdBQUFDOztxREFBQSxtREFBQTt1REFBQTFGLFVBQUFvRixLQUFBOUg7O2tDQUFBOEg7YUFBQU87WUFBQUEsaUJBQUFBO3NEQUFBO1dBQUFuSSxLQUFBbUk7dURBQUFsSTt5REFBQTtpQ0FBQUQ7c0RBQUEsV0FBQUM7O3FEQUFBLG1EQUFBO3VEQUFBdUMsVUFBQW9GLEtBQUE5SDs7a0NBQUE4SDs7K0RBQUE7eURBQUFwRixVQUFBMUM7Ozs7b0RBQUEsbURBQUE7c0RBQUEwQyxVQUFBMUM7Ozs7Z0RBQUEsbURBQUE7a0RBQUEwQyxVQUFBMUM7Z0RBSXdCO1lBSnhCaXhIO2dEQUFBO2lEQUVJOzs7bURBREE7UUFBQS93SDtvREFBQUM7c0RBQUE7OEJBQUFEO21EQUFBOzs2QkFBQUM7O21EQUVBO1FBQUFnSTtvREFBQUM7c0RBQUE7Z0NBQUFEO21EQUFBOzs2QkFBQUM7O21EQUNBO1FBQUFKO29EQUFBQztVQVhKNG5ILHVCQVdJN25IO21EQUFBOzs2QkFBQUM7O2dEQUFvQjs7SUFFeEJpcEg7SUFBQUM7WUFBQS9uQztnREFBQSxPQWRBNmxDO2dEQWlCd0I7O0tBSHhCaUM7Y0FDQS92SDtrREFBQTttREFBQSxtREFBQTttQ0FBQUE7VUFEQW1GO2tEQUNBLDRDQUFBOzRCQUFBbkY7a0RBREEsNENBQUE7b0RBQUEsV0FBQWlvRixTQUNBam9GO1FBREFtRjtrREFBQSxtREFBQTttQ0FDQW5GO2tEQUV3Qjs7S0FIeEJnd0g7Y0FDQTFxSDtrREFBQSxtREFBQTt5Q0FEQXlxSCxjQUNBenFIO2tEQUV3QjtZQUZ4QjJxSCxrQkFBQUM7Z0RBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OzttREFBQTs7a0RBQUEsbURBQUE7NENBQUEzSCxrQkFBQTJIOztnQkFBQUE7O2tEQUFBLG1EQUFBOzRDQUFBM0gsa0JBQUEySDs7O2tEQUFBLG1EQUFBOzRDQUFBM0gsa0JBQUEySDtTQUFBQzs7NkJBQUFBOzhCQUFBQTtpQ0FBQUE7K0JBQUFBOztrREFBQSxtREFBQTs0Q0FBQTVILGtCQUFBMkg7O1NBQUFFO1FBQUFBLG1CQUFBQTtrREFBQTtPQUFBL0osV0FBQStKO21EQUFBOUo7U0FkQTBILHFCQWNBM0g7a0RBQUEsV0FBQUM7O2lEQUFBLG1EQUFBOztjQUFBaUM7Y0FBQTRIO2NBQUFEOztnREFBQSxtREFBQTswQ0FBQTNILGtCQUFBMkg7Z0RBRXdCO1lBRnhCRztnREFBQTtpREFDSTtnREFDQTtLQUFBeGpEO2lEQUFBQztPQWhCSndoRCxxQkFnQkl6aEQ7Z0RBQUE7MEJBQUFDO2dEQUFvQjtZQUZ4QndqRCxvQkFBQXp4SDtnREFBQSxVQUFBQTtnQkFBQUE7O2dDQUFBQTttREFBQSxtREFBQTtxREFBQTRDLFVBQUE1Qzs7O2lCQUFBQTs7bURBQUEsbURBQUE7cURBQUE0QyxVQUFBNUM7Ozs7O1lBQUE4SDtrQ0FBQUE7YUFBQU87WUFBQUEsaUJBQUFBO3NEQUFBO1dBQUFuSSxLQUFBbUk7dURBQUFsSTthQWRBeXZILHVCQWNBMXZIO3NEQUFBLFdBQUFDOztxREFBQSxtREFBQTt1REFBQXlDLFVBQUFrRixLQUFBOUg7O2tDQUFBOEg7OytEQUFBO3lEQUFBbEYsVUFBQTVDOzs7O29EQUFBLG1EQUFBO3NEQUFBNEMsVUFBQTVDOzs7O2dEQUFBLG1EQUFBO2tEQUFBNEMsVUFBQTVDO2dEQUV3QjtZQUZ4QjB4SDtnREFBQTtpREFDSTtnREFDQTtLQUFBeHhIO2lEQUFBQztPQWhCSjB2SCx1QkFnQkkzdkg7Z0RBQUE7OzBCQUFBQztnREFBb0I7O0lBRXhCd3hIO0lBQUFDO1lBQUFwK0Y7Z0RBQUE7K0NBZ0JNO1lBaEJOMHNDO2dEQUFBOytDQWdCTTtZQWhCTm16QjtnREFBQTsrQ0FnQk07WUFoQk4zdkI7Z0RBQUE7K0NBZ0JNO1lBaEJONGxCO2dEQUFBOytDQWdCTTs7S0FoQk5xb0M7Y0FDQXh3SDtrREFBQTtXQURBMHdILGtCQUFBbkYsaUJBQUFDO21EQUNBLDRDQUFBOzZCQUFBeHJIO21EQUFBLDRDQUFBOzZCQUFBQTttREFBQSw0Q0FBQTtxREFEQSxXQUFBbW9GLFNBQ0Fub0Y7U0FEQXdySDttREFDQSw0Q0FBQTs2QkFBQXhySDttREFBQSw0Q0FBQTs2QkFBQUE7bURBQUEsNENBQUE7NkJBQUFBO21EQUFBLDRDQUFBO3FEQURBLFdBQUF1aUUsU0FDQXZpRTtTQURBdXJIO21EQUNBLDRDQUFBOzZCQUFBdnJIO21EQUFBLDRDQUFBOzZCQUFBQTttREFBQSw0Q0FBQTs2QkFBQUE7bURBQUEsNENBQUE7cURBREEsV0FBQWt5RixTQUNBbHlGO1NBREEwd0g7bURBQ0EsNENBQUE7NkJBQUExd0g7bURBQUEsbURBQUE7b0NBQUFBOztVQURBMndILG9CQUFBQztrREFDQSw0Q0FBQTs0QkFBQTV3SDtrREFBQSw0Q0FBQTs0QkFBQUE7a0RBQUEsNENBQUE7b0RBREEsV0FBQSsrRCxTQUNBLytEO1FBREE0d0g7a0RBQ0EsNENBQUE7NEJBQUE1d0g7a0RBQUEsNENBQUE7NEJBQUFBO2tEQUFBLDRDQUFBOzRCQUFBQTtrREFBQSxVQWNjc0Y7c0RBQUEsNkNBQUE7K0JBZGR0Rjs7dUJBY2MrVSxLQUFBelA7dURBQUEsR0FBQXlQO3dEQUFBLDZDQUFBO2lDQWRkL1U7dURBY2MsNkNBQUE7d0RBZmQsV0FBQXF5QixPQUNBcnlCO1lBY2NzRjt1REFBQTtzREFBVztzREFBWCw2Q0FBQTt3Q0FBQUE7c0RBQUEsb0RBQUE7c0NBZGR0RjtxREFjeUI7U0FmekIyd0g7a0RBQ0EsNENBQUE7NEJBQUEzd0g7a0RBQUEsbURBQUE7bUNBQUFBO2lEQWVNOztLQWhCTnl3SDtjQUNBbnJIO2tEQUFBLG1EQUFBO3lDQURBa3JILFdBQ0Fsckg7aURBZU07K0NBZk4sU0FBQXVySDtJQUFBQztnREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O21EQUFBLG1EQUFBOzZDQUFBdEksa0JBQUFzSTs7a0RBQUEsbURBQUE7NENBQUF0SSxrQkFBQXNJOztnQkFBQUE7O2tEQUFBLG1EQUFBOzRDQUFBdEksa0JBQUFzSTs7O2tEQUFBLG1EQUFBOzRDQUFBdEksa0JBQUFzSTs7Ozs7Ozs7a0RBQUE7T0FBQUM7bURBYU1DO21EQUNBQzttREFkTkM7bURBQUFDO09BQUFDOztzREFBQTtzREFBQTtxRUFBQTtlQUFBQztvQkFBQUE7dUJBQUFBOzs7OztrQkFBQUMsMkJBQUFDO2lCQUFBRCxtQkFBQUE7O2VBQUFFO2VBQUFDOzBCQUFBSDsyQkFBQUk7K0RBQUE7dUJBQUFKO2dFQUFBLG1EQUFBOzJEQUFBOUksa0JBQUFzSTtzQkFBQVE7Z0VBQUEsa0RBQUE7O3VCQUFBSyxRQUFBTDsrREFBQSxPQUFBSzs4REFlTTt5QkFmTkQ7O2VBQUFBLGlCQUFBRCxpQkFBQUg7c0NBQUFDO3VDQUFBQTs7aUJBQUFKLG1CQUFBSSxnQkFBQUo7O3VCQWNNRjtnQkFkTkMsd0JBQUFLLGdCQUFBTDs7NERBY007NkRBZE5VO29CQUFBRjs2REFjTUc7K0RBQUE7eURBZE5EO2dCQWNNWCxvQkFBQVk7O3NCQURBYjtlQWJORSx3QkFBQUssZ0JBQUFMOzsyREFhTTs0REFiTlksbUJBQUFKOzREQWFNSzs4REFBQTt1Q0FiTkQ7ZUFhTWQsaUJBQUFlOzs0QkFiTlA7Ozs7O3VEQUFBLG1EQUFBO2tEQUFBaEosa0JBQUE2STs7cURBZU07a0RBZk5ELFNBQUFMO1NBQUFHO21EQUFBLG1EQUFBOztnQkFBQTFJO2dCQUFBMEk7Z0JBQUFKO1NBQUFLO21EQUFBLG1EQUFBOztnQkFBQTNJO2dCQUFBMkk7Z0JBQUFMO2lCQWFNRSxvQkFDQUM7O1dBQUFlLHVCQURBQzttREFiTjtlQWFNQTtlQUNBRDs7a0RBZE4sbURBQUE7O2VBQUF4SjtlQUFBc0k7OzBCQWFNRTs4QkFDQUM7O2lEQWROO01BQUFpQjtrREFJTUM7a0RBQ0FDO2tEQUNBQztrREFOTkM7a0RBQUFDO01BQUFDOztxREFBQTtxREFBQTtvRUFBQTtjQUFBQzttQkFBQUE7c0JBQUFBOzs7OztpQkFBQUMsMkJBQUFDO2dCQUFBRCxtQkFBQUE7O2NBQUFFO2NBQUFDO3lCQUFBSDswQkFBQUk7OERBQUE7c0JBQUFKOytEQUFBLG1EQUFBOzBEQUFBbEssa0JBQUFzSTtxQkFBQTRCOytEQUFBLGtEQUFBOztzQkFBQUssUUFBQUw7OERBQUEsT0FBQUs7NkRBZU07d0JBZk5EOztjQUFBQSxpQkFBQUQsaUJBQUFIO3FDQUFBQztzQ0FBQUE7dUNBQUFBOztpQkFBQUosbUJBQUFJLGdCQUFBSjs7dUJBS01IO2dCQUxORSx3QkFBQUssZ0JBQUFMOzs0REFLTTs2REFMTlU7b0JBQUFGOzZEQUtNRzsrREFBQTt3Q0FMTkQ7Z0JBS01aLGlCQUFBYTs7c0JBQ0FaO2VBTk5DLHdCQUFBSyxnQkFBQUw7OzJEQU1NOzREQU5OWSxtQkFBQUo7NERBTU1LOzhEQUFBO3VDQU5ORDtlQU1NYixrQkFBQWM7O3FCQUZBaEI7Y0FKTkcsd0JBQUFLLGdCQUFBTDs7MERBSU07MkRBSk5jLG1CQUFBTjsyREFJTU87NkRBQUE7c0NBSk5EO2NBSU1qQixpQkFBQWtCOzsyQkFKTlQ7Ozs7O3NEQUFBLG1EQUFBO2lEQUFBcEssa0JBQUFpSzs7b0RBZU07aURBZk5ELFNBQUFOO1FBQUFJO2tEQUFBLG1EQUFBOztlQUFBOUo7ZUFBQThKO2VBQUF4QjtRQUFBeUI7a0RBQUEsbURBQUE7O2VBQUEvSjtlQUFBK0o7ZUFBQXpCO2dCQUlNcUIsbUJBQ0FDLHNCQUNBQzs7VUFBQWlCLHVCQURBQyxtQkFEQUM7a0RBSk47Y0FJTUE7Y0FDQUQ7Y0FDQUQ7O2lEQU5OLG1EQUFBOztjQUFBOUs7Y0FBQXNJOzt5QkFJTXFCOzswQkFDQUM7OEJBQ0FDOztnREFOTixtREFBQTswQ0FBQTdKLGtCQUFBc0k7K0NBZU07WUFmTjJDO2dEQUFBO2lEQU1NO01BQUFDO01BREFDO01BREFDO2tEQUVBQztvREFBQTs2QkFBQUg7a0RBSEZJOzhCQUdFRDtrREFEQUU7b0RBQUE7NkJBQUFKO2tEQUZGSzs4QkFFRUQsZUFGRkQ7a0RBQ0VHO29EQUFBOzZCQUFBTDtrREFERk07OEJBQ0VELGVBREZEO2lEQUFBO3VCQUFBRTs7Z0RBV0U7S0FBQUM7S0FEQUM7aURBQ0FDO21EQUFBOzZDQUFBRjtpREFGRkc7NkJBRUVEO2lEQURBRTttREFBQTs0QkFBQUg7aURBREZJOzZCQUNFRCxlQURGRDtnREFBQTtzQkFBQUU7K0NBR0U7K0NBZk4sU0FBQUM7SUFBQTUxSDtlLFVBQUFBO2dCQUFBQTs7aUJBQUFBOzs7OzttREFBQSxtREFBQTtxREFBQThDLFVBQUE5Qzs7O2lCQUFBQTs7bURBQUEsbURBQUE7cURBQUE4QyxVQUFBOUM7Ozs7Ozs7Ozs7Ozt3REFhTTthQWJOdVI7eURBYU11OEc7eURBQ0ErSDt5REFkTm5rSDt5REFBQUM7YUFBQUM7OzREQUFBOzs0REFBQTs7OERBQUE7O2tCQUFBQzs7a0JBQUFDO2tCQUFBQzt5Q0FBQUE7MENBQUFBOytEQUFBO2lFQUFBOztvQkFBQUo7O3NCQUFBSTtrRUFBQTtnREFBQUo7OztnRUFjTTs4Q0FBQWtrSDttQkFkTm5rSDs7cUJBQUFLO2lFQWNNOytDQWROTDs7O29CQWNNTTs7Ozt3QkFkTkY7bUJBY00rakgsc0JBQUE3akg7OzsrREFEQTs2Q0FBQTg3RztrQkFiTnA4Rzs7b0JBQUFLO2dFQWFNOzhDQWJOTDs7OERBYU0sNENBQUE7bUJBQUFPO2lFQUFBOzBDQWJOSDtrQkFhTWc4RyxtQkFBQTc3Rzs7K0JBYk5KOzsyREFlTTt3REFmTkQsS0FBQUw7OzBEQUFBO3dDQUFBRzt5REFBQSw0Q0FBQTs7NERBQUE7MENBQUFBO3lEQUFBLG1EQUFBOztzQkFBQTVPOztzQkFBQTlDOzs7MERBQUE7d0NBQUEyUjt5REFBQSw0Q0FBQTs7NERBQUE7MENBQUFBO3lEQUFBLG1EQUFBOztzQkFBQTdPOztzQkFBQTlDOzt3REFhTTt5REFBQTsyREFBQTt5Q0FBQTh0SDt5REFDQTsyREFBQTt5Q0FBQStIOztpQkFBQUMsMkJBREE3SDt5REFiTjtxQkFhTUE7cUJBQ0E2SDs7d0RBZE47eURBQUE7Ozs7OytEQWNNOzZDQUFBRDs7Ozs7eURBZE47Ozs7OytEQWFNOzZDQUFBL0g7Ozs7O3dEQWJOLG1EQUFBOztxQkFBQWhySDtxQkFBQTlDOzs7Ozs7Ozs7Ozt1REFJTTtZQUpOKzFIO3dEQUlNQzt3REFDQWpJO3dEQUNBa0k7d0RBTk5DO3dEQUFBQztZQUFBQzs7MkRBQUE7OzJEQUFBOzs2REFBQTs7aUJBQUF2a0g7O2lCQUFBQztpQkFBQUM7d0NBQUFBO3lDQUFBQTswQ0FBQUE7K0RBQUE7aUVBQUE7O29CQUFBb2tIOztzQkFBQXBrSDtrRUFBQTtnREFBQW9rSDs7O2dFQUtNOzhDQUFBcEk7bUJBTE5tSTs7cUJBQUFua0g7aUVBS007K0NBTE5ta0g7OytEQUtNLDRDQUFBO29CQUFBbGtIO2tFQUFBOzJDQUxORjttQkFLTWk4RyxtQkFBQS83Rzs7OytEQUNBOzZDQUFBaWtIO2tCQU5OQzs7b0JBQUFua0g7Z0VBTU07OENBTk5ta0g7OzhEQU1NLDRDQUFBO21CQUFBamtIO2lFQUFBOzBDQU5OSDtrQkFNTW1rSCxvQkFBQWhrSDs7OzhEQUZBOzRDQUFBK2pIO2lCQUpORTs7bUJBQUFua0g7K0RBSU07NkNBSk5ta0g7OzZEQUlNLDRDQUFBO2tCQUFBMzhHO2dFQUFBO3lDQUpOekg7aUJBSU1ra0gscUJBQUF6OEc7OzhCQUpOMUg7OzBEQWVNO3VEQWZOdWtILE9BQUFMOzt5REFBQTt1Q0FBQUc7d0RBQUEsNENBQUE7OzJEQUFBO3lDQUFBQTt3REFBQSxtREFBQTs7cUJBQUFwekg7O3FCQUFBOUM7Ozt5REFBQTt1Q0FBQW0ySDt3REFBQSw0Q0FBQTs7MkRBQUE7eUNBQUFBO3dEQUFBLG1EQUFBOztxQkFBQXJ6SDs7cUJBQUE5Qzs7dURBSU07d0RBQUE7MERBQUE7d0NBQUFnMkg7d0RBQ0E7MERBQUE7d0NBQUFqSTt3REFDQTswREFBQTt3Q0FBQWtJOzs7YUFBQUk7YUFEQXJJO2FBREFzSTt3REFKTjtvQkFJTUE7b0JBQ0F0STtvQkFDQXFJOzt1REFOTjt3REFBQTs7Ozs7OERBTU07NENBQUFKOzs7Ozt3REFOTjs7Ozs7OERBS007NENBQUFsSTs7Ozs7d0RBTE47Ozs7OzhEQUlNOzRDQUFBaUk7Ozs7O3VEQUpOLG1EQUFBOztvQkFBQWx6SDtvQkFBQTlDOzs7Ozs7O29EQUFBLG1EQUFBO3NEQUFBOEMsVUFBQTlDOzs7O2dEQUFBLG1EQUFBO2tEQUFBOEMsVUFBQTlDOztZQUFBdTJIO2dEQUFBOztNQU1NQztNQURBckk7TUFEQUM7TUFFQTk3RyxvQ0FBQWtrSDtNQUFBamtILDJCQUFBRDtNQURBRSxzQ0FBQTI3RztNQUFBMTdHLDRCQUFBRCxRQUNBRDtNQUZBdUgsc0NBQUFzMEc7TUFBQXIwRyw0QkFBQUQsUUFDQXJIO2lEQUZGOzswQ0FDRXNIOzs7S0FVQTA4RztLQURBQztLQUNBcG9HOztvRUFBQW1vRztLQUFBbG9HLCtCQUFBRDtLQURBRSxzQ0FBQWtvRztLQUFBam9HLDZCQUFBRCxRQUNBRDtnREFGRjs7eUNBQ0VFOytDQUVBOztJQUVOa29HO0lBQUFDO1lBQUF6dEM7Z0RBQUEsT0FsQkF3b0M7Z0RBcUJlO1lBSGZwaEM7Z0RBQUE7Z0RBR2U7O0tBSGZvbUM7Y0FDQXgxSDtrREFBQTtXQURBbUY7bURBQ0EsNENBQUE7NkJBQUFuRjttREFEQSw0Q0FBQTtxREFBQSxXQUFBb3ZGLFNBQ0FwdkY7U0FEQW1GO21EQUFBLG1EQUFBO29DQUNBbkY7O1VBREFvRjtrREFDQSw0Q0FBQTs0QkFBQXBGO2tEQURBLDRDQUFBO29EQUFBLFdBQUFnb0YsU0FDQWhvRjtRQURBb0Y7a0RBQUEsbURBQUE7bUNBQ0FwRjtrREFFZTs7S0FIZnkxSDtjQUNBbndIO2tEQUFBLG1EQUFBO3lDQURBa3dILGNBQ0Fsd0g7a0RBRWU7WUFRZm93SCxrQkFWQUM7Z0RBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OzttREFBQSxtREFBQTs2Q0FBQWxOLGtCQUFBa047O2tEQUFBLG1EQUFBOzRDQUFBbE4sa0JBQUFrTjs7Z0JBQUFBOztrREFBQSxtREFBQTs0Q0FBQWxOLGtCQUFBa047OztrREFBQSxtREFBQTs0Q0FBQWxOLGtCQUFBa047U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7VUFBQXJyRDtTQUFBQSxtQkFBQUE7bURBQUE7UUFBQUcsV0FBQUg7b0RBQUFzckQ7c0RBQUE7K0JBQUFuckQ7bURBQUEsV0FBQW1yRDs7a0RBQUEsbURBQUE7O2VBQUFwTjtlQUFBbU47ZUFBQUQ7O1NBQUFHO1FBQUFBLG1CQUFBQTtrREFBQTtPQUFBQyxXQUFBRDttREFBQUU7U0FsQkFuRixlQWtCQWtGO2tEQUFBLFdBQUFDOztpREFBQSxtREFBQTs7Y0FBQXZOO2NBQUFtTjtjQUFBRDs7Z0RBQUEsbURBQUE7MENBQUFsTixrQkFBQWtOO2dEQUVlO1lBUWZNO2dEQVZBO2lEQUNJO01BQUFDO2tEQUFBQztvREFBQTs2QkFBQUQ7aURBQUE7MkJBQUFDOztnREFDQTtLQUFBenhEO2lEQUFBMHhEO09BcEJKM0MsZUFvQkkvdUQ7Z0RBQUE7MEJBQUEweEQ7Z0RBQVc7WUFRZkMsb0JBVkF4M0g7Z0RBQUEsVUFBQUE7Z0JBQUFBOztpQkFBQUE7Ozs7O21EQUFBLG1EQUFBO3FEQUFBZ0QsVUFBQWhEOzs7aUJBQUFBOzttREFBQSxtREFBQTtxREFBQWdELFVBQUFoRDs7Ozs7WUFBQThIO2tDQUFBQTthQUFBSTtZQUFBQSxtQkFBQUE7c0RBQUE7V0FBQUMsT0FBQUQ7dURBQUFFO2FBbEJBd3RILGlCQWtCQXp0SDtzREFBQSxXQUFBQzs7cURBQUEsbURBQUE7dURBQUFwRixVQUFBOEUsS0FBQTlIOztrQ0FBQThIO2FBQUFPO1lBQUFBLGlCQUFBQTtzREFBQTtXQUFBbkksS0FBQW1JO3VEQUFBbEk7eURBQUE7a0NBQUFEO3NEQUFBLFdBQUFDOztxREFBQSxtREFBQTt1REFBQTZDLFVBQUE4RSxLQUFBOUg7Ozs7b0RBQUEsbURBQUE7c0RBQUFnRCxVQUFBaEQ7Ozs7Z0RBQUEsbURBQUE7a0RBQUFnRCxVQUFBaEQ7Z0RBRWU7WUFRZnkzSDtnREFWQTtpREFDSTtNQUFBdjNIO2tEQUFBQztvREFBQTs2QkFBQUQ7aURBQUE7OzJCQUFBQzs7Z0RBQ0E7S0FBQWdJO2lEQUFBQyxPQXBCSm11SCxpQkFvQklwdUg7Z0RBQUE7OzBCQUFBQztnREFBVzs7SUFFZnN2SDtJQUFBQztZQUFBdHVDO2lEQUFBLE9BTEFzdEM7aURBUXFCO1lBSHJCamxDO2lEQUFBO2lEQUdxQjs7S0FIckJnbUM7Y0FDQXYySDttREFBQTtXQURBbUY7b0RBQ0EsNkNBQUE7NkJBQUFuRjtvREFEQSw2Q0FBQTtzREFBQSxXQUFBdXdGLFNBQ0F2d0Y7U0FEQW1GO29EQUFBLG9EQUFBO29DQUNBbkY7O1VBREFvRjttREFDQSw2Q0FBQTs0QkFBQXBGO21EQURBLDZDQUFBO3FEQUFBLFdBQUFrb0YsU0FDQWxvRjtRQURBb0Y7bURBQUEsb0RBQUE7bUNBQ0FwRjttREFFcUI7O0tBSHJCdzJIO2NBQ0FseEg7bURBQUEsb0RBQUE7eUNBREFpeEgsV0FDQWp4SDttREFFcUI7WUFGckJteEgsZUFBQUM7aURBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OztvREFBQSxvREFBQTs2Q0FBQWhPLGtCQUFBZ087O21EQUFBLG9EQUFBOzRDQUFBaE8sa0JBQUFnTzs7Z0JBQUFBOzttREFBQSxvREFBQTs0Q0FBQWhPLGtCQUFBZ087OzttREFBQSxvREFBQTs0Q0FBQWhPLGtCQUFBZ087U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7VUFBQS96RDtTQUFBQSxtQkFBQUE7b0RBQUE7UUFBQUcsV0FBQUg7cURBQUFnMEQ7VUFLQWxCLGtCQUxBM3lEO29EQUFBLFdBQUE2ekQ7O21EQUFBLG9EQUFBOztlQUFBbE87ZUFBQWlPO2VBQUFEOztTQUFBRztRQUFBQSxtQkFBQUE7bURBQUE7T0FBQUMsV0FBQUQ7b0RBQUFFO3NEQUFBOzhCQUFBRDttREFBQSxXQUFBQzs7a0RBQUEsb0RBQUE7O2NBQUFyTztjQUFBaU87Y0FBQUQ7O2lEQUFBLG9EQUFBOzBDQUFBaE8sa0JBQUFnTztpREFFcUI7WUFGckJNO2lEQUFBO2tEQUNJO01BQUFDO21EQUFBajBEO3FEQUFBOzZCQUFBaTBEO2tEQUFBOzJCQUFBajBEOztpREFDQTtLQUFBazBEO2tEQUFBQztPQUdKbEIsa0JBSElpQjtpREFBQTswQkFBQUM7aURBQWlCO1lBRnJCQyxpQkFBQXY0SDtpREFBQTthQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7b0RBQUEsb0RBQUE7cURBQUFrRCxVQUFBbEQ7OztpQkFBQUE7O29EQUFBLG9EQUFBO3FEQUFBa0QsVUFBQWxEOzs7OztZQUFBOEg7a0NBQUFBO2FBQUFJO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxPQUFBRDt3REFBQUU7MERBQUE7a0NBQUFEO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQWxGLFVBQUE0RSxLQUFBOUg7O2tDQUFBOEg7YUFBQU87WUFBQUEsaUJBQUFBO3VEQUFBO1dBQUFuSSxLQUFBbUk7d0RBQUFsSTthQUtBcTNILG9CQUxBdDNIO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQStDLFVBQUE0RSxLQUFBOUg7Ozs7cURBQUEsb0RBQUE7c0RBQUFrRCxVQUFBbEQ7Ozs7aURBQUEsb0RBQUE7a0RBQUFrRCxVQUFBbEQ7aURBRXFCO1lBRnJCdzRIO2lEQUFBO2tEQUNJO01BQUF0NEg7bURBQUFDO3FEQUFBOzZCQUFBRDtrREFBQTs7MkJBQUFDOztpREFDQTtLQUFBZ0k7a0RBQUFDO09BR0pxdkgsb0JBSEl0dkg7aURBQUE7OzBCQUFBQztpREFBaUI7O0lBRXJCcXdIO0lBQUFDO1lBQUFubEM7aURBQUEsT0FWQW9qQztpREFXdUI7O0tBRHZCOEI7Y0FDQXQzSDttREFEQSxvREFBQTtlQUFBb3lGLFNBQ0FweUY7bURBQXVCOztLQUR2QnUzSDtjQUNBanlIO21EQUFBLG9EQUFBO3lDQURBZ3lILFdBQ0FoeUg7bURBQXVCOztJQUV2Qmt5SDtJQUFBQztZQUFBdGxDO2lEQUFBLE9BYkFxakM7aURBZ0J3QjtZQUh4QmxqQztpREFBQSxPQWxEQXc3QjtpREFxRHdCOztLQUh4QjBKO2NBQ0F4M0g7bURBQUE7V0FEQW1GO29EQUNBLDZDQUFBOzZCQUFBbkY7b0RBREEsNkNBQUE7c0RBQUEsV0FBQXN5RixTQUNBdHlGO1NBREFtRjtvREFBQSxvREFBQTtvQ0FDQW5GOztVQURBb0Y7bURBQ0EsNkNBQUE7NEJBQUFwRjttREFEQSw2Q0FBQTtxREFBQSxXQUFBbXlGLFNBQ0FueUY7UUFEQW9GO21EQUFBLG9EQUFBO21DQUNBcEY7bURBRXdCOztLQUh4QnkzSDtjQUNBbnlIO21EQUFBLG9EQUFBO3lDQURBa3lILGtCQUNBbHlIO21EQUV3QjtZQUZ4Qm95SCxzQkFBQUM7aURBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OztvREFBQSxvREFBQTs2Q0FBQWhQLGtCQUFBZ1A7O21EQUFBLG9EQUFBOzRDQUFBaFAsa0JBQUFnUDs7Z0JBQUFBOzttREFBQSxvREFBQTs0Q0FBQWhQLGtCQUFBZ1A7OzttREFBQSxvREFBQTs0Q0FBQWhQLGtCQUFBZ1A7U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7VUFBQUM7U0FBQUEsbUJBQUFBO29EQUFBO1FBQUFDLFdBQUFEO3FEQUFBRTtVQUhBckMsa0JBR0FvQztvREFBQSxXQUFBQzs7bURBQUEsb0RBQUE7O2VBQUFwUDtlQUFBaVA7ZUFBQUQ7O1NBQUFLO1FBQUFBLG1CQUFBQTttREFBQTtPQUFBQyxXQUFBRDtvREFBQUU7U0FsREFsSyxxQkFrREFpSzttREFBQSxXQUFBQzs7a0RBQUEsb0RBQUE7O2NBQUF2UDtjQUFBaVA7Y0FBQUQ7O2lEQUFBLG9EQUFBOzBDQUFBaFAsa0JBQUFnUDtpREFFd0I7WUFGeEJRO2lEQUFBO2tEQUNJO01BQUFsdkQ7bURBQUFtdkQ7UUFuREo5SixxQkFtRElybEQ7a0RBQUE7MkJBQUFtdkQ7O2lEQUNBO0tBQUFDO2tEQUFBQztPQUxKckMsa0JBS0lvQztpREFBQTswQkFBQUM7aURBQW9CO1lBRnhCQyx3QkFBQTE1SDtpREFBQTthQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7b0RBQUEsb0RBQUE7cURBQUFvRCxVQUFBcEQ7OztpQkFBQUE7O29EQUFBLG9EQUFBO3FEQUFBb0QsVUFBQXBEOzs7OztZQUFBOEg7a0NBQUFBO2FBQUFJO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxPQUFBRDt3REFBQUU7YUFsREF3bkgsdUJBa0RBem5IO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQWhGLFVBQUEwRSxLQUFBOUg7O2tDQUFBOEg7YUFBQU87WUFBQUEsaUJBQUFBO3VEQUFBO1dBQUFuSSxLQUFBbUk7d0RBQUFsSTthQUhBcTNILG9CQUdBdDNIO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQWlELFVBQUEwRSxLQUFBOUg7Ozs7cURBQUEsb0RBQUE7c0RBQUFvRCxVQUFBcEQ7Ozs7aURBQUEsb0RBQUE7a0RBQUFvRCxVQUFBcEQ7aURBRXdCO1lBRnhCMjVIO2lEQUFBO2tEQUNJO01BQUF6NUg7bURBQUFDO1FBbkRKMHZILHVCQW1ESTN2SDtrREFBQTs7MkJBQUFDOztpREFDQTtLQUFBZ0k7a0RBQUFDO09BTEpxdkgsb0JBS0l0dkg7aURBQUE7OzBCQUFBQztpREFBb0I7O0lBRXhCd3hIO0lBQUFDO1lBQUFybUM7aURBQUEsT0FiQWtrQztpREFnQnFCO1lBSHJCdDhCO2lEQUFBLE9BaERBMDBCO2lEQW1EcUI7O0tBSHJCOEo7Y0FDQXo0SDttREFBQTtXQURBbUY7b0RBQ0EsNkNBQUE7NkJBQUFuRjtvREFEQSw2Q0FBQTtzREFBQTtXQUFBaTZGLFVBQ0FqNkY7U0FEQW1GO29EQUFBLG9EQUFBO29DQUNBbkY7O1VBREFvRjttREFDQSw2Q0FBQTs0QkFBQXBGO21EQURBLDZDQUFBO3FEQUFBLFdBQUFxeUYsU0FDQXJ5RjtRQURBb0Y7bURBQUEsb0RBQUE7bUNBQ0FwRjttREFFcUI7O0tBSHJCMDRIO2NBQ0Fwekg7bURBQUEsb0RBQUE7eUNBREFtekgsZUFDQW56SDttREFFcUI7WUFGckJxekgsbUJBQUFDO2lEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7b0RBQUEsb0RBQUE7NkNBQUFoUSxrQkFBQWdROzttREFBQSxvREFBQTs0Q0FBQWhRLGtCQUFBZ1E7O2dCQUFBQTs7bURBQUEsb0RBQUE7NENBQUFoUSxrQkFBQWdROzs7bURBQUEsb0RBQUE7NENBQUFoUSxrQkFBQWdRO1NBQUFDOzs2QkFBQUE7OEJBQUFBO2lDQUFBQTsrQkFBQUE7O1VBQUFDO1NBQUFBLG1CQUFBQTtvREFBQTtRQUFBQyxXQUFBRDtxREFBQUU7VUFiQXZDLGVBYUFzQztvREFBQSxXQUFBQzs7bURBQUEsb0RBQUE7O2VBQUFwUTtlQUFBaVE7ZUFBQUQ7O1NBQUFLO1FBQUFBLG1CQUFBQTttREFBQTtPQUFBQyxXQUFBRDtvREFBQUU7U0FoREF0SyxrQkFnREFxSzttREFBQSxXQUFBQzs7a0RBQUEsb0RBQUE7O2NBQUF2UTtjQUFBaVE7Y0FBQUQ7O2lEQUFBLG9EQUFBOzBDQUFBaFEsa0JBQUFnUTtpREFFcUI7WUFGckJRO2lEQUFBO2tEQUNJO01BQUFDO21EQUFBQztRQWpESjlKLGtCQWlESTZKO2tEQUFBOzJCQUFBQzs7aURBQ0E7S0FBQUM7a0RBQUE3c0Q7T0FmSnNxRCxlQWVJdUM7aURBQUE7MEJBQUE3c0Q7aURBQWlCO1lBRnJCOHNELHFCQUFBMzZIO2lEQUFBO2FBQUFBO2dCQUFBQTs7aUJBQUFBOzs7OztvREFBQSxvREFBQTtxREFBQXNELFVBQUF0RDs7O2lCQUFBQTs7b0RBQUEsb0RBQUE7cURBQUFzRCxVQUFBdEQ7Ozs7O1lBQUE4SDtrQ0FBQUE7YUFBQUk7WUFBQUEsbUJBQUFBO3VEQUFBO1dBQUFDLE9BQUFEO3dEQUFBRTthQWhEQTRvSCxvQkFnREE3b0g7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBOUUsVUFBQXdFLEtBQUE5SDs7a0NBQUE4SDthQUFBTztZQUFBQSxpQkFBQUE7dURBQUE7V0FBQW5JLEtBQUFtSTt3REFBQWxJO2FBYkFvNEgsaUJBYUFyNEg7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBbUQsVUFBQXdFLEtBQUE5SDs7OztxREFBQSxvREFBQTtzREFBQXNELFVBQUF0RDs7OztpREFBQSxvREFBQTtrREFBQXNELFVBQUF0RDtpREFFcUI7WUFGckI0Nkg7aURBQUE7a0RBQ0k7TUFBQTE2SDttREFBQUM7UUFqREo4d0gsb0JBaURJL3dIO2tEQUFBOzsyQkFBQUM7O2lEQUNBO0tBQUFnSTtrREFBQUM7T0FmSm93SCxpQkFlSXJ3SDtpREFBQTs7MEJBQUFDO2lEQUFpQjs7SUFFckJ5eUg7SUFBQUM7WUFBQXovQjtpREFBQSxPQWJBbzlCO2lEQWdCcUI7WUFIckJuOUI7aURBQUEsT0E5Q0E0MUI7aURBaURxQjs7S0FIckIySjtjQUNBMTVIO21EQUFBO1dBREFtRjtvREFDQSw2Q0FBQTs2QkFBQW5GO29EQURBLDZDQUFBO3NEQUFBO1dBQUFtNkYsVUFDQW42RjtTQURBbUY7b0RBQUEsb0RBQUE7b0NBQ0FuRjs7VUFEQW9GO21EQUNBLDZDQUFBOzRCQUFBcEY7bURBREEsNkNBQUE7cURBQUEsV0FBQWs2RixTQUNBbDZGO1FBREFvRjttREFBQSxvREFBQTttQ0FDQXBGO21EQUVxQjs7S0FIckIyNUg7Y0FDQXIwSDttREFBQSxvREFBQTt5Q0FEQW8wSCxlQUNBcDBIO21EQUVxQjtZQUZyQnMwSCxtQkFBQUM7aURBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OztvREFBQSxvREFBQTs2Q0FBQWhSLGtCQUFBZ1I7O21EQUFBLG9EQUFBOzRDQUFBaFIsa0JBQUFnUjs7Z0JBQUFBOzttREFBQSxvREFBQTs0Q0FBQWhSLGtCQUFBZ1I7OzttREFBQSxvREFBQTs0Q0FBQWhSLGtCQUFBZ1I7U0FBQUM7OzZCQUFBQTs4QkFBQUE7aUNBQUFBOytCQUFBQTs7VUFBQUM7U0FBQUEsbUJBQUFBO29EQUFBO1FBQUFDLFdBQUFEO3FEQUFBeDBEO1VBYkFtd0Qsa0JBYUFzRTtvREFBQSxXQUFBejBEOzttREFBQSxvREFBQTs7ZUFBQXNqRDtlQUFBaVI7ZUFBQUQ7O1NBQUFJO1FBQUFBLG1CQUFBQTttREFBQTtPQUFBQyxXQUFBRDtvREFBQUU7U0E5Q0FsSyxrQkE4Q0FpSzttREFBQSxXQUFBQzs7a0RBQUEsb0RBQUE7O2NBQUF0UjtjQUFBaVI7Y0FBQUQ7O2lEQUFBLG9EQUFBOzBDQUFBaFIsa0JBQUFnUjtpREFFcUI7WUFGckJPO2lEQUFBO2tEQUNJO01BQUFDO21EQUFBQztRQS9DSmpLLGtCQStDSWdLO2tEQUFBOzJCQUFBQzs7aURBQ0E7S0FBQUM7a0RBQUFDO09BZkp2RSxrQkFlSXNFO2lEQUFBOzBCQUFBQztpREFBaUI7WUFGckJDLHFCQUFBNTdIO2lEQUFBO2FBQUFBO2dCQUFBQTs7aUJBQUFBOzs7OztvREFBQSxvREFBQTtxREFBQWkzRCxVQUFBajNEOzs7aUJBQUFBOztvREFBQSxvREFBQTtxREFBQWkzRCxVQUFBajNEOzs7OztZQUFBOEg7a0NBQUFBO2FBQUFJO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxPQUFBRDt3REFBQUU7YUE5Q0FxcEgsb0JBOENBdHBIO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQTZ1RCxVQUFBbnZELEtBQUE5SDs7a0NBQUE4SDthQUFBTztZQUFBQSxpQkFBQUE7dURBQUE7V0FBQW5JLEtBQUFtSTt3REFBQWxJO2FBYkFxM0gsb0JBYUF0M0g7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBODJELFVBQUFudkQsS0FBQTlIOzs7O3FEQUFBLG9EQUFBO3NEQUFBaTNELFVBQUFqM0Q7Ozs7aURBQUEsb0RBQUE7a0RBQUFpM0QsVUFBQWozRDtpREFFcUI7WUFGckI2N0g7aURBQUE7a0RBQ0k7TUFBQTM3SDttREFBQUM7UUEvQ0p1eEgsb0JBK0NJeHhIO2tEQUFBOzsyQkFBQUM7O2lEQUNBO0tBQUFnSTtrREFBQUM7T0FmSnF2SCxvQkFlSXR2SDtpREFBQTs7MEJBQUFDO2lEQUFpQjtZQUVyQjB6SCxrQkFDQTM2SDtpREFBQTsyREFBQTtrQ0FBQUE7MkRBQUE7a0NBQUFBO2lEQUVhO1lBSGI0Nkgsb0JBQ0F0MUg7aURBQUEsb0RBQUE7dUNBREFxMUgsbUJBQ0FyMUg7aURBRWE7Z0RBRmI7R0FBQXUxSDtJQUFBQztpREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O29EQUFBOzttREFBQTs7Z0JBQUFBOzttREFBQSxvREFBQTs0Q0FBQWhTLGtCQUFBZ1M7OzttREFBQSxvREFBQTs0Q0FBQWhTLGtCQUFBZ1M7Ozs7Ozs7O21EQUFBLG9EQUFBOzRDQUFBaFMsa0JBQUFnUzs7a0RBQUEsb0RBQUE7MkNBQUFoUyxrQkFBQWdTOztpREFBQSxvREFBQTswQ0FBQWhTLGtCQUFBZ1M7aURBRWE7WUFGYkM7aURBQUE7aURBRWE7Z0RBRmI7R0FBQUM7SUFBQW44SDtpREFBQTthQUFBQSxxQ0FBQUE7Z0JBQUFBOzttREFBQSxvREFBQTtvREFBQW0zRCxXQUFBbjNEOzs7Ozs7OzsrREFBQTt3REFBQW0zRCxXQUFBbjNEOzs7OytEQUFBO3dEQUFBbTNELFdBQUFuM0Q7Ozs7b0RBQUEsb0RBQUE7cURBQUFtM0QsV0FBQW4zRDs7O2lEQUFBLG9EQUFBO2tEQUFBbTNELFdBQUFuM0Q7aURBRWE7WUFGYm84SDtpREFBQTtpREFFYTs7SUFLYkM7SUFBQUM7WUFBQXJ6QztpREFBQTtpREFJMEM7WUFKMUN5VTtpREFBQSxPQVJBbytCO2lEQVkwQztZQUoxQ24rQjtpREFBQTtpREFJMEM7WUFKMUNDO2lEQUFBLE9BUkFrK0I7aURBWTBDOztLQUoxQ087Y0FDQWw3SDttREFBQTs7b0RBQUEsb0RBQUE7bUNBQUFBOztXQURBcVYsZUFBQWxRO29EQUNBLDZDQUFBOzZCQUFBbkY7b0RBREEsNkNBQUE7ZUFBQXk4RjtvREFBQSw2Q0FBQTtxREFDQXo4RixjQURBbUY7b0RBQ0EsNkNBQUE7NkJBQUFuRjtvREFEQSw2Q0FBQTtzREFBQSxXQUFBdzhGLFNBQ0F4OEY7U0FEQXFWO29EQUFBLG9EQUFBO29DQUNBclY7O1VBREFzeUIsaUJBQUFsdEI7bURBQ0EsNkNBQUE7NEJBQUFwRjttREFEQSw2Q0FBQTtjQUFBdThGO21EQUFBLDZDQUFBO29EQUNBdjhGLGNBREFvRjttREFDQSw2Q0FBQTs0QkFBQXBGO21EQURBLDZDQUFBO3FEQUFBLFdBQUE4bkYsU0FDQTluRjtRQURBc3lCO21EQUFBLG9EQUFBO21DQUNBdHlCO21EQUcwQzs7S0FKMUNtN0g7Y0FDQTcxSDttREFBQSxvREFBQTt5Q0FEQTQxSCxnQkFDQTUxSDttREFHMEM7WUFIMUM4MUgsb0JBQUFDO2lEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7cURBQUEsb0RBQUE7OENBQUF0UyxrQkFBQXNTOztvREFBQTs7bURBQUEsb0RBQUE7NENBQUF0UyxrQkFBQXNTOztnQkFBQUE7O21EQUFBLG9EQUFBOzRDQUFBdFMsa0JBQUFzUzs7O21EQUFBLG9EQUFBOzRDQUFBdFMsa0JBQUFzUztTQUFBQzs7NkJBQUFBOzs4QkFBQUE7K0JBQUFBO2tDQUFBQTtrQ0FBQUE7Z0NBQUFBOztXQUFBQztvREFBQSxHQUFBQTttQkFBQUE7O3NEQUFBO1VBQUFDO1VBQUFDLFdBQUFGO3VEQUFBRztZQVJBYix1QkFRQVk7dURBQUFFO3lEQUFBO2lDQUFBSDtzREFBQTtpQkFBQUU7aUJBQUFDOzs7b0RBQUEsb0RBQUE7O2dCQUFBNVM7Z0JBQUF1UztnQkFBQUQ7O21EQUFBLG9EQUFBOzRDQUFBdFMsa0JBQUFzUzs7U0FBQU87a0RBQUEsR0FBQUE7aUJBQUFBOztvREFBQTtRQUFBQztRQUFBQyxXQUFBRjtxREFBQUc7VUFSQWxCLHVCQVFBaUI7cURBQUFFO3VEQUFBOytCQUFBSDtvREFBQTtlQUFBRTtlQUFBQzs7O2tEQUFBLG9EQUFBOztjQUFBalQ7Y0FBQXVTO2NBQUFEOztpREFBQSxvREFBQTswQ0FBQXRTLGtCQUFBc1M7aURBRzBDO1lBSDFDWTtpREFBQTtrREFDSTs7a0RBQ0E7TUFBQUM7TUFBQUM7bURBQUFDO1FBVkpyQix1QkFVSW9CO21EQUFBRTtxREFBQTs2QkFBQUg7a0RBQUE7MkJBQUFFLGNBQUFDOztpREFDQTtLQUFBeHdEO0tBQUFDO2tEQUFBd3dEO09BWEp2Qix1QkFXSWp2RDtrREFBQXl3RDtvREFBQTs0QkFBQTF3RDtpREFBQTswQkFBQXl3RCxjQUFBQztpREFBc0M7WUFIMUNDLHNCQUFBMzlIO2lEQUFBO2FBQUFBO2dCQUFBQTs7aUJBQUFBOzs7OztvREFBQSxvREFBQTtxREFBQW1xSCxXQUFBbnFIOzs7aUJBQUFBOztvREFBQSxvREFBQTtxREFBQW1xSCxXQUFBbnFIOzs7OztZQUFBOEg7a0NBQUFBO2FBQUFJO3NEQUFBLEdBQUFBO3FCQUFBQTs7d0RBQUE7WUFBQTJuQjtZQUFBMW5CLE9BQUFEO3lEQUFBRTtjQVJBK3pILHlCQVFBaDBIO3lEQUFBMm5COzJEQUFBO21DQUFBRDt3REFBQSxXQUFBem5CLE1BQUEwbkI7OztzREFBQSxvREFBQTt1REFBQXE2RixXQUFBcmlILEtBQUE5SDs7a0NBQUE4SDs7Z0VBQUE7eURBQUFxaUgsV0FBQW5xSDs7a0NBQUE4SDthQUFBTztzREFBQSxHQUFBQTtxQkFBQUE7O3dEQUFBO1lBQUFwSTtZQUFBQyxLQUFBbUk7eURBQUFsSTtjQVJBZzhILHlCQVFBajhIO3lEQUFBRTsyREFBQTttQ0FBQUg7d0RBQUEsV0FBQUUsTUFBQUM7OztzREFBQSxvREFBQTt1REFBQStwSCxXQUFBcmlILEtBQUE5SDs7OztxREFBQSxvREFBQTtzREFBQW1xSCxXQUFBbnFIOzs7O2lEQUFBLG9EQUFBO2tEQUFBbXFILFdBQUFucUg7aURBRzBDO1lBSDFDNDlIO2lEQUFBO2tEQUNJOztrREFDQTtNQUFBMzlIO01BQUFDO21EQUFBQztRQVZKaThILHlCQVVJbDhIO21EQUFBRTtxREFBQTs2QkFBQUg7a0RBQUE7OzJCQUFBRSxVQUFBQzs7aURBQ0E7S0FBQXl2QjtLQUFBMW5CO2tEQUFBQztPQVhKZzBILHlCQVdJajBIO2tEQUFBMm5CO29EQUFBOzRCQUFBRDtpREFBQTs7MEJBQUF6bkIsVUFBQTBuQjtpREFBc0M7O0lBTTFDK3RHO0lBQUFDO1lBQUFDO2lEQUFBO2lEQU8wQjtZQVAxQmxnQztpREFBQTs7aURBTzBCO1lBUDFCQztpREFBQTtpREFPMEI7O0tBUDFCKy9CO2NBQ0ExOEg7bURBQUE7Ozs4REFBQTtxQ0FBQUE7OERBQUE7cUNBQUFBOzs7YUFEQW1GO3NEQUNBLDZDQUFBOytCQUFBbkY7c0RBREEsNkNBQUE7d0RBQUE7YUFBQTI4RixVQUNBMzhGO1dBREFtRjtzREFBQSxvREFBQTtzQ0FDQW5GOzthQURBb0Y7c0RBQ0EsNkNBQUE7K0JBQUFwRjtzREFEQSw2Q0FBQTt5REFHcUI7aUNBRnJCQTtXQURBb0Y7c0RBQUEsb0RBQUE7c0NBQ0FwRjs7YUFEQXFGO3NEQUNBLDZDQUFBOytCQUFBckY7c0RBREEsNkNBQUE7d0RBQUE7YUFBQTA4RixVQUNBMThGO1dBREFxRjtzREFBQSxvREFBQTtzQ0FDQXJGOzthQURBMEg7c0RBQ0EsNkNBQUE7K0JBQUExSDtzREFEQSw2Q0FBQTt3REFBQTthQUFBNDhILFNBQ0E1OEg7V0FEQTBIO3NEQUFBLG9EQUFBO3NDQUNBMUg7O21EQU0wQjs7S0FQMUIyOEg7Y0FDQXIzSDttREFBQSxvREFBQTt5Q0FEQW8zSCxjQUNBcDNIO21EQU0wQjtnREFOMUIsU0FBQXUzSDtJQUFBQztpREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt3REFBQSxvREFBQTtpREFBQTdULGtCQUFBNlQ7O3VEQUFBLG9EQUFBO2dEQUFBN1Qsa0JBQUE2VDs7c0RBQUEsb0RBQUE7K0NBQUE3VCxrQkFBQTZUOztxREFBQTs7b0RBQUEsb0RBQUE7NkNBQUE3VCxrQkFBQTZUOzttREFBQTs7Z0JBQUFBOzttREFBQSxvREFBQTs0Q0FBQTdULGtCQUFBNlQ7OzttREFBQSxvREFBQTs0Q0FBQTdULGtCQUFBNlQ7U0FBQUMsOENBQUFBOzs7Ozs7Ozs7Ozs7O3NDQUFBQTs7c0NBQUFBO3NDQUFBQTs7c0NBQUFBOztvQ0FBQUE7Ozs7dUNBQUFBO3FDQUFBQTs7cUNBQUFBO3FDQUFBQTs7cUNBQUFBOzttQ0FBQUE7OztjQUFBQzthQUFBQSxtQkFBQUE7d0RBQUE7WUFBQUMsV0FBQUQ7eURBQUFFOzJEQUFBO29DQUFBRDt3REFBQSxXQUFBQzs7dURBQUEsb0RBQUE7O21CQUFBalU7bUJBQUE4VDttQkFBQUQ7O2FBQUFLO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxXQUFBRDt3REFBQUU7MERBQUE7eUNBQUFEO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTs7a0JBQUFwVTtrQkFBQThUO2tCQUFBRDs7WUFBQVE7V0FBQUEsbUJBQUFBO3NEQUFBO1VBQUExdkQsV0FBQTB2RDt1REFBQUM7eURBQUE7K0JBQUEzdkQ7c0RBQUEsV0FBQTJ2RDs7cURBQUEsb0RBQUE7O2lCQUFBdFU7aUJBQUE4VDtpQkFBQUQ7O29EQUFBLG9EQUFBOzZDQUFBN1Qsa0JBQUE2VDs7VUFBQVU7U0FBQUEsbUJBQUFBO29EQUFBO1FBQUFwdkQsV0FBQW92RDtxREFBQW52RDt1REFBQTsrQkFBQUQ7b0RBQUEsV0FBQUM7O21EQUFBLG9EQUFBOztlQUFBNDZDO2VBQUE4VDtlQUFBRDs7a0RBQUEsb0RBQUE7MkNBQUE3VCxrQkFBQTZUOztpREFBQSxvREFBQTswQ0FBQTdULGtCQUFBNlQ7aURBTTBCO1lBTjFCVztpREFBQTs7OztvREFDSTtRQUFBbnZEO3FEQUFBQzt1REFBQTtnQ0FBQUQ7b0RBQUE7NkJBQUFDOztvREFDQTtRQUFBQztxREFBQUM7dURBQUE7NEJBQUFEO29EQUFBOzZCQUFBQzs7b0RBQ0E7UUFBQUM7cURBQUFDO3VEQUFBO3NDQUFBRDtvREFBQTs2QkFBQUM7O29EQUVBO1FBQUFDO3FEQUFBQzt1REFBQTsrQkFBQUQ7b0RBQUE7NkJBQUFDOztpREFDc0I7Z0RBTjFCLFNBQUE2dUQ7SUFBQTcrSDtpREFBQTthQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7Ozs7Ozs7b0RBQUEsb0RBQUE7cURBQUFxcUgsV0FBQXJxSDs7O2lCQUFBQTs7b0RBQUEsb0RBQUE7cURBQUFxcUgsV0FBQXJxSDs7Ozs7WUFBQThIO2tDQUFBQTthQUFBeUM7WUFBQUEsbUJBQUFBO3VEQUFBO1dBQUFDLE9BQUFEO3dEQUFBRTswREFBQTttQ0FBQUQ7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBNC9HLFdBQUF2aUgsS0FBQTlIOztrQ0FBQThIO2FBQUFDO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxPQUFBRDt3REFBQUU7MERBQUE7eUNBQUFEO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQW9pSCxXQUFBdmlILEtBQUE5SDs7a0NBQUE4SDthQUFBSTtZQUFBQSxtQkFBQUE7dURBQUE7V0FBQUMsT0FBQUQ7d0RBQUFFOzBEQUFBO3VEQUFBRDt1REFBQSxXQUFBQzs7c0RBQUEsb0RBQUE7dURBQUFpaUgsV0FBQXZpSCxLQUFBOUg7O2tDQUFBOEg7O2dFQUFBO3lEQUFBdWlILFdBQUFycUg7O2tDQUFBOEg7YUFBQU87WUFBQUEsaUJBQUFBO3VEQUFBO1dBQUFuSSxLQUFBbUk7d0RBQUFsSTswREFBQTtrQ0FBQUQ7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBa3FILFdBQUF2aUgsS0FBQTlIOztrQ0FBQThIOztnRUFBQTt5REFBQXVpSCxXQUFBcnFIOzs7O3FEQUFBLG9EQUFBO3NEQUFBcXFILFdBQUFycUg7Ozs7aURBQUEsb0RBQUE7a0RBQUFxcUgsV0FBQXJxSDtpREFNMEI7WUFOMUI4K0g7aURBQUE7Ozs7b0RBQ0k7UUFBQTUrSDtxREFBQUM7dURBQUE7Z0NBQUFEO29EQUFBOzs2QkFBQUM7O29EQUNBO1FBQUFnSTtxREFBQUM7dURBQUE7bURBQUFEO29EQUFBOzs2QkFBQUM7O29EQUNBO1FBQUFKO3FEQUFBQzt1REFBQTtzQ0FBQUQ7b0RBQUE7OzZCQUFBQzs7b0RBRUE7UUFBQXVDO3FEQUFBQzt1REFBQTsrQkFBQUQ7b0RBQUE7OzZCQUFBQzs7aURBQ3NCOztJQUcxQnMwSDtJQUFBQztZQUFBLytEO2lEQUFBO2lEQUtlO1lBTGZtekI7aURBQUE7aURBS2U7WUFMZjZyQztpREFBQTtpREFLZTtZQUxmcitCO2lEQUFBO2lEQUtlO1lBTGZDO2lEQUFBOztpREFLZTs7S0FMZmsrQjtjQUNBNTlIO21EQUFBOzthQURBcVYsZUFBQWxRO3NEQUNBLDZDQUFBOytCQUFBbkY7c0RBREEsNkNBQUE7d0RBQUE7YUFBQTAvRixVQUNBMS9GO1dBREFtRjtzREFDQSw2Q0FBQTsrQkFBQW5GO3NEQURBLDZDQUFBO3dEQUFBO2FBQUF5L0YsVUFDQXovRjtXQURBcVY7c0RBQUEsb0RBQUE7c0NBQ0FyVjs7YUFEQW9GO3NEQUNBLDZDQUFBOytCQUFBcEY7c0RBREEsNkNBQUE7d0RBQUE7YUFBQTg5SCxTQUNBOTlIO1dBREFvRjtzREFBQSxvREFBQTtzQ0FDQXBGOzthQURBc3lCLGlCQUFBanRCO3NEQUNBLDZDQUFBOytCQUFBckY7c0RBREEsNkNBQUE7eURBSWM7aUNBSGRBO1dBREFxRjtzREFDQSw2Q0FBQTsrQkFBQXJGO3NEQURBLDZDQUFBO3dEQUFBO2FBQUFpeUYsU0FDQWp5RjtXQURBc3lCO3NEQUFBLG9EQUFBO3NDQUNBdHlCOzthQURBMEg7c0RBQ0EsNkNBQUE7K0JBQUExSDtzREFEQSw2Q0FBQTt3REFBQTthQUFBOCtELFNBQ0E5K0Q7V0FEQTBIO3NEQUFBLG9EQUFBO3NDQUNBMUg7O21EQUllOztLQUxmNjlIO2NBQ0F2NEg7bURBQUEsb0RBQUE7eUNBREFzNEgsV0FDQXQ0SDttREFJZTtnREFKZixTQUFBeTRIO0lBQUFDO2lEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7Ozs7c0RBQUEsb0RBQUE7K0NBQUE3VSxrQkFBQTZVOztxREFBQSxvREFBQTs4Q0FBQTdVLGtCQUFBNlU7O29EQUFBLG9EQUFBOzZDQUFBN1Usa0JBQUE2VTs7bURBQUEsb0RBQUE7NENBQUE3VSxrQkFBQTZVOztnQkFBQUE7O21EQUFBLG9EQUFBOzRDQUFBN1Usa0JBQUE2VTs7O21EQUFBLG9EQUFBOzRDQUFBN1Usa0JBQUE2VTtTQUFBQzs7NkJBQUFBOzs4QkFBQUE7OytCQUFBQTtnQ0FBQUE7bUNBQUFBO21DQUFBQTttQ0FBQUE7aUNBQUFBOztZQUFBQztXQUFBQSxtQkFBQUE7c0RBQUE7VUFBQXR1RCxXQUFBc3VEO3VEQUFBcnVEO3lEQUFBO2lDQUFBRDtzREFBQSxXQUFBQzs7cURBQUEsb0RBQUE7O2lCQUFBczVDO2lCQUFBOFU7aUJBQUFEOztXQUFBRztvREFBQSxHQUFBQTttQkFBQUE7O3NEQUFBO1VBQUFDO1VBQUFDLFdBQUFGO3VEQUFBRzt5REFBQTt3Q0FBQUQ7dURBQUFFO3lEQUFBO2lDQUFBSDtzREFBQTtpQkFBQUU7aUJBQUFDOzs7b0RBQUEsb0RBQUE7O2dCQUFBcFY7Z0JBQUE4VTtnQkFBQUQ7O1VBQUFRO21EQUFBLEdBQUFBO2tCQUFBQTs7cURBQUE7U0FBQUM7U0FBQUMsV0FBQUY7c0RBQUFydUQ7d0RBQUE7OEJBQUF1dUQ7c0RBQUF0dUQ7d0RBQUE7Z0NBQUFxdUQ7cURBQUE7Z0JBQUF0dUQ7Z0JBQUFDOzs7bURBQUEsb0RBQUE7O2VBQUErNEM7ZUFBQThVO2VBQUFEOztTQUFBVztRQUFBQSxtQkFBQUE7bURBQUE7T0FBQUMsV0FBQUQ7b0RBQUFsdUQ7c0RBQUE7OEJBQUFtdUQ7bURBQUEsV0FBQW51RDs7a0RBQUEsb0RBQUE7O2NBQUEwNEM7Y0FBQThVO2NBQUFEOztpREFBQSxvREFBQTswQ0FBQTdVLGtCQUFBNlU7aURBSWU7WUFKZmE7aURBQUE7O29EQUNJO1FBQUFDO1FBQUFDO3FEQUFBQzt1REFBQTtzQ0FBQUQ7cURBQUFFO3VEQUFBOytCQUFBSDtvREFBQTs2QkFBQUUsY0FBQUM7O29EQUNBO1FBQUFDO3FEQUFBbnVEO3VEQUFBOytCQUFBbXVEO29EQUFBOzZCQUFBbnVEOztvREFDQTtRQUFBb3VEO1FBQUFDO3FEQUFBQzt1REFBQTs0QkFBQUQ7cURBQUFFO3VEQUFBOytCQUFBSDtvREFBQTs2QkFBQUUsY0FBQUM7O29EQUNBO1FBQUFDO3FEQUFBbHVEO3VEQUFBOytCQUFBa3VEO29EQUFBOzZCQUFBbHVEOztpREFBVztnREFKZixTQUFBbXVEO0lBQUEzZ0k7aURBQUE7YUFBQUE7Z0JBQUFBOztpQkFBQUE7Ozs7Ozs7Ozs7O29EQUFBLG9EQUFBO3FEQUFBdXFILFdBQUF2cUg7OztpQkFBQUE7O29EQUFBLG9EQUFBO3FEQUFBdXFILFdBQUF2cUg7Ozs7O1lBQUE4SDtrQ0FBQUE7YUFBQXlDO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxPQUFBRDt3REFBQUU7MERBQUE7a0NBQUFEO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQTgvRyxXQUFBemlILEtBQUE5SDs7a0NBQUE4SDthQUFBQztzREFBQSxHQUFBQTtxQkFBQUE7O3dEQUFBO1lBQUE4bkI7WUFBQTduQixPQUFBRDt5REFBQUU7MkRBQUE7d0RBQUFEO3lEQUFBOG5COzJEQUFBO21DQUFBRDt3REFBQSxXQUFBNW5CLE1BQUE2bkI7OztzREFBQSxvREFBQTt1REFBQXk2RixXQUFBemlILEtBQUE5SDs7a0NBQUE4SDthQUFBSTtzREFBQSxHQUFBQTtxQkFBQUE7O3dEQUFBO1lBQUFqSTtZQUFBa0ksT0FBQUQ7eURBQUFFOzJEQUFBOzBDQUFBRDt5REFBQS9IOzJEQUFBO21DQUFBSDt3REFBQSxXQUFBbUksTUFBQWhJOzs7c0RBQUEsb0RBQUE7dURBQUFtcUgsV0FBQXppSCxLQUFBOUg7O2tDQUFBOEg7YUFBQU87WUFBQUEsaUJBQUFBO3VEQUFBO1dBQUFuSSxLQUFBbUk7d0RBQUFsSTswREFBQTtrQ0FBQUQ7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBb3FILFdBQUF6aUgsS0FBQTlIOzs7O3FEQUFBLG9EQUFBO3NEQUFBdXFILFdBQUF2cUg7Ozs7aURBQUEsb0RBQUE7a0RBQUF1cUgsV0FBQXZxSDtpREFJZTtZQUpmNGdJO2lEQUFBOztvREFDSTtRQUFBM2dJO1FBQUFDO3FEQUFBQzt1REFBQTtzQ0FBQUQ7cURBQUFFO3VEQUFBOytCQUFBSDtvREFBQTs7NkJBQUFFLFVBQUFDOztvREFDQTtRQUFBK0g7cURBQUFDO3VEQUFBOytCQUFBRDtvREFBQTs7NkJBQUFDOztvREFDQTtRQUFBeW5CO1FBQUE3bkI7cURBQUFDO3VEQUFBO21EQUFBRDtxREFBQThuQjt1REFBQTsrQkFBQUQ7b0RBQUE7OzZCQUFBNW5CLFVBQUE2bkI7O29EQUNBO1FBQUF0bEI7cURBQUFDO3VEQUFBOytCQUFBRDtvREFBQTs7NkJBQUFDOztpREFBVzs7SUFFZm8ySDtJQUFBQztZQUFBMTlCO2lEQUFBLE9BUEEyN0I7aURBVXFCO1lBSHJCMTdCO2lEQUFBLE9BakJBdzZCO2lEQW9CcUI7O0tBSHJCZ0Q7Y0FDQTEvSDttREFBQTtXQURBbUY7b0RBQ0EsNkNBQUE7NkJBQUFuRjtvREFEQSw2Q0FBQTtzREFBQTtXQUFBa2lHLFVBQ0FsaUc7U0FEQW1GO29EQUFBLG9EQUFBO29DQUNBbkY7O1VBREFvRjttREFDQSw2Q0FBQTs0QkFBQXBGO21EQURBLDZDQUFBO3FEQUFBLFdBQUFpaUcsVUFDQWppRztRQURBb0Y7bURBQUEsb0RBQUE7bUNBQ0FwRjttREFFcUI7O0tBSHJCMi9IO2NBQ0FyNkg7bURBQUEsb0RBQUE7eUNBREFvNkgsZUFDQXA2SDttREFFcUI7WUFGckJzNkgsbUJBQUFDO2lEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7b0RBQUEsb0RBQUE7NkNBQUF4VyxrQkFBQXdXOzttREFBQSxvREFBQTs0Q0FBQXhXLGtCQUFBd1c7O2dCQUFBQTs7bURBQUEsb0RBQUE7NENBQUF4VyxrQkFBQXdXOzs7bURBQUEsb0RBQUE7NENBQUF4VyxrQkFBQXdXO1NBQUFDOzs2QkFBQUE7OEJBQUFBO2lDQUFBQTsrQkFBQUE7O1VBQUFDO1NBQUFBLG1CQUFBQTtvREFBQTtRQUFBQyxXQUFBRDtxREFBQTV0RDtVQVBBNHJELGVBT0FpQztvREFBQSxXQUFBN3REOzttREFBQSxvREFBQTs7ZUFBQWszQztlQUFBeVc7ZUFBQUQ7O1NBQUFJO1FBQUFBLG1CQUFBQTttREFBQTtPQUFBQyxXQUFBRDtvREFBQW51RDtTQWpCQStxRCxrQkFpQkFxRDttREFBQSxXQUFBcHVEOztrREFBQSxvREFBQTs7Y0FBQXUzQztjQUFBeVc7Y0FBQUQ7O2lEQUFBLG9EQUFBOzBDQUFBeFcsa0JBQUF3VztpREFFcUI7WUFGckJNO2lEQUFBO2tEQUNJO01BQUFDO21EQUFBQztRQWxCSjVDLGtCQWtCSTJDO2tEQUFBOzJCQUFBQzs7aURBQ0E7S0FBQTl0RDtrREFBQSt0RDtPQVRKekIsZUFTSXRzRDtpREFBQTswQkFBQSt0RDtpREFBaUI7WUFGckJDLHFCQUFBMWhJO2lEQUFBO2FBQUFBO2dCQUFBQTs7aUJBQUFBOzs7OztvREFBQSxvREFBQTtxREFBQXlxSCxXQUFBenFIOzs7aUJBQUFBOztvREFBQSxvREFBQTtxREFBQXlxSCxXQUFBenFIOzs7OztZQUFBOEg7a0NBQUFBO2FBQUFJO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxPQUFBRDt3REFBQUU7YUFqQkF5Mkgsb0JBaUJBMTJIO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQXFpSCxXQUFBM2lILEtBQUE5SDs7a0NBQUE4SDthQUFBTztZQUFBQSxpQkFBQUE7dURBQUE7V0FBQW5JLEtBQUFtSTt3REFBQWxJO2FBUEF3Z0ksaUJBT0F6Z0k7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBc3FILFdBQUEzaUgsS0FBQTlIOzs7O3FEQUFBLG9EQUFBO3NEQUFBeXFILFdBQUF6cUg7Ozs7aURBQUEsb0RBQUE7a0RBQUF5cUgsV0FBQXpxSDtpREFFcUI7WUFGckIyaEk7aURBQUE7a0RBQ0k7TUFBQXpoSTttREFBQUM7UUFsQkoyK0gsb0JBa0JJNStIO2tEQUFBOzsyQkFBQUM7O2lEQUNBO0tBQUFnSTtrREFBQUM7T0FUSnc0SCxpQkFTSXo0SDtpREFBQTs7MEJBQUFDO2lEQUFpQjtZQUVyQnc1SCxnQkFDQXpnSTtpREFBQTsyREFBQTtrQ0FBQUE7MkRBQUE7a0NBQUFBO2lEQUVrQjtZQUhsQjBnSSxrQkFDQXA3SDtpREFBQSxvREFBQTt1Q0FEQW03SCxpQkFDQW43SDtpREFFa0I7Z0RBRmxCLFNBQUFxN0g7SUFBQUM7aURBQUE7O2NBQUFBO2lCQUFBQTs7Ozs7OztvREFBQTs7bURBQUE7O2dCQUFBQTs7bURBQUEsb0RBQUE7NENBQUFyWCxrQkFBQXFYOzs7bURBQUEsb0RBQUE7NENBQUFyWCxrQkFBQXFYOzs7Ozs7OzttREFBQSxvREFBQTs0Q0FBQXJYLGtCQUFBcVg7O2tEQUFBLG9EQUFBOzJDQUFBclgsa0JBQUFxWDs7aURBQUEsb0RBQUE7MENBQUFyWCxrQkFBQXFYO2lEQUVrQjtZQUZsQkM7aURBQUE7aURBRWtCO2dEQUZsQjtHQUFBQztJQUFBamlJO2lEQUFBO2FBQUFBLHFDQUFBQTtnQkFBQUE7O21EQUFBLG9EQUFBO29EQUFBMnFILFdBQUEzcUg7Ozs7Ozs7OytEQUFBO3dEQUFBMnFILFdBQUEzcUg7Ozs7K0RBQUE7d0RBQUEycUgsV0FBQTNxSDs7OztvREFBQSxvREFBQTtxREFBQTJxSCxXQUFBM3FIOzs7aURBQUEsb0RBQUE7a0RBQUEycUgsV0FBQTNxSDtpREFFa0I7WUFGbEJraUk7aURBQUE7aURBRWtCO1lBR2xCQyxjQUNBaGhJO2lEQUFBOztvREFBQSxvREFBQTttQ0FBQUE7O29EQUFBLG9EQUFBO21DQUFBQTs7b0RBQUEsb0RBQUE7bUNBQUFBOztnREFHUztZQUpUaWhJLGdCQUNBMzdIO2lEQUFBLG9EQUFBO3VDQURBMDdILGVBQ0ExN0g7Z0RBR1M7Z0RBSFQsU0FBQTQ3SDtJQUFBQztpREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7O3FEQUFBOztvREFBQTs7bURBQUE7O2dCQUFBQTs7bURBQUEsb0RBQUE7NENBQUExWCxrQkFBQTBYOzs7bURBQUEsb0RBQUE7NENBQUExWCxrQkFBQTBYOzs7Ozs7Ozs7OztvREFBQSxvREFBQTs2Q0FBQTFYLGtCQUFBMFg7O21EQUFBLG9EQUFBOzRDQUFBMVgsa0JBQUEwWDs7a0RBQUEsb0RBQUE7MkNBQUExWCxrQkFBQTBYOztpREFBQSxvREFBQTswQ0FBQTFYLGtCQUFBMFg7Z0RBR1M7WUFIVEM7aURBQUE7O29EQUNJOztvREFDQTs0REFDQTs7Z0RBQUs7Z0RBSFQsU0FBQUM7SUFBQXhpSTtpREFBQTthQUFBQSxxQ0FBQUE7Z0JBQUFBOzttREFBQSxvREFBQTtvREFBQTZxSCxXQUFBN3FIOzs7Ozs7OzsrREFBQTt3REFBQTZxSCxXQUFBN3FIOzs7OytEQUFBO3dEQUFBNnFILFdBQUE3cUg7Ozs7K0RBQUE7d0RBQUE2cUgsV0FBQTdxSDs7OztvREFBQSxvREFBQTtxREFBQTZxSCxXQUFBN3FIOzs7aURBQUEsb0RBQUE7a0RBQUE2cUgsV0FBQTdxSDtnREFHUztZQUhUeWlJO2lEQUFBOztvREFDSTs7b0RBQ0E7NERBQ0E7O2dEQUFLOztJQUdUQztJQUFBQztZQUFBQztpREFBQSxPQWJBaEI7aURBZ0J5QjtZQUh6QmlCO2lEQUFBLE9BUEFWO2lEQVV5Qjs7S0FIekJPO2NBQ0F2aEk7bURBQUE7V0FEQXFWLGVBQUFsUTtvREFDQSw2Q0FBQTs2QkFBQW5GO29EQURBLDZDQUFBO3VEQUVnQjsrQkFEaEJBO1NBREFtRjtvREFDQSw2Q0FBQTs2QkFBQW5GO29EQURBLDZDQUFBO2VBQUEwaEk7b0RBQUEsNkNBQUE7cURBQ0ExaEksY0FEQXFWO29EQUFBLG9EQUFBO29DQUNBclY7O1VBREFvRjttREFDQSw2Q0FBQTs0QkFBQXBGO21EQURBLDZDQUFBO2NBQUF5aEk7bURBQUEsNkNBQUE7b0RBQ0F6aEksY0FEQW9GO21EQUFBLG9EQUFBO21DQUNBcEY7bURBRXlCOztLQUh6QndoSTtjQUNBbDhIO21EQUFBLG9EQUFBO3lDQURBaThILGVBQ0FqOEg7bURBRXlCO1lBRnpCcThILG1CQUFBQztpREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O29EQUFBLG9EQUFBOzZDQUFBalksa0JBQUFpWTs7bURBQUEsb0RBQUE7NENBQUFqWSxrQkFBQWlZOztnQkFBQUE7O21EQUFBLG9EQUFBOzRDQUFBalksa0JBQUFpWTs7O21EQUFBLG9EQUFBOzRDQUFBalksa0JBQUFpWTtTQUFBQzs7NkJBQUFBOzhCQUFBQTtpQ0FBQUE7K0JBQUFBOztVQUFBQzttREFBQSxHQUFBQTtrQkFBQUE7O3FEQUFBO1NBQUFDO1NBQUFDLFdBQUFGO3NEQUFBRzt3REFBQTs4QkFBQUQ7c0RBQUFFO1dBUEFoQixtQkFPQWE7cURBQUE7Z0JBQUFFO2dCQUFBQzs7O21EQUFBLG9EQUFBOztlQUFBdlk7ZUFBQWtZO2VBQUFEOztTQUFBTztRQUFBQSxtQkFBQUE7bURBQUE7T0FBQXB1RCxXQUFBb3VEO29EQUFBQztTQWJBekIscUJBYUE1c0Q7bURBQUEsV0FBQXF1RDs7a0RBQUEsb0RBQUE7O2NBQUF6WTtjQUFBa1k7Y0FBQUQ7O2lEQUFBLG9EQUFBOzBDQUFBalksa0JBQUFpWTtpREFFeUI7WUFGekJTO2lEQUFBO2tEQUNJO01BQUFDO01BQUFDO21EQUFBQztxREFBQTswQkFBQUQ7bURBQUFFO1FBUkpyQixtQkFRSWtCO2tEQUFBOzJCQUFBRSxjQUFBQzs7aURBQ0E7S0FBQUM7a0RBQUFydUQ7T0FmSndzRCxxQkFlSTZCO2lEQUFBOzBCQUFBcnVEO2lEQUFxQjtZQUZ6QnN1RCxxQkFBQTlqSTtpREFBQTthQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7b0RBQUEsb0RBQUE7cURBQUErcUgsV0FBQS9xSDs7O2lCQUFBQTs7b0RBQUEsb0RBQUE7cURBQUErcUgsV0FBQS9xSDs7Ozs7WUFBQThIO2tDQUFBQTthQUFBSTtZQUFBQSxtQkFBQUE7dURBQUE7V0FBQUMsT0FBQUQ7d0RBQUFFO2FBYkE2NUgsdUJBYUE5NUg7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBMmlILFdBQUFqakgsS0FBQTlIOztrQ0FBQThIO2FBQUFPO3NEQUFBLEdBQUFBO3FCQUFBQTs7d0RBQUE7WUFBQXBJO1lBQUFDLEtBQUFtSTt5REFBQWxJOzJEQUFBO3dEQUFBRDt5REFBQUU7Y0FQQW9pSSxxQkFPQXZpSTt3REFBQSxXQUFBRSxNQUFBQzs7O3NEQUFBLG9EQUFBO3VEQUFBMnFILFdBQUFqakgsS0FBQTlIOzs7O3FEQUFBLG9EQUFBO3NEQUFBK3FILFdBQUEvcUg7Ozs7aURBQUEsb0RBQUE7a0RBQUErcUgsV0FBQS9xSDtpREFFeUI7WUFGekIrakk7aURBQUE7a0RBQ0k7TUFBQTlqSTtNQUFBQzttREFBQUM7cURBQUE7aURBQUFEO21EQUFBRTtRQVJKcWlJLHFCQVFJeGlJO2tEQUFBOzsyQkFBQUUsVUFBQUM7O2lEQUNBO0tBQUErSDtrREFBQUM7T0FmSjg1SCx1QkFlSS81SDtpREFBQTs7MEJBQUFDO2lEQUFxQjtZQUd6QjQ3SCxXQUNBN2lJO2lEQUFBO2tEQUFBLG9EQUFBO2lDQUFBQTtRQURBbUY7aURBQ0EsNkNBQUE7MEJBQUFuRjtpREFEQSw2Q0FBQTttREFHUTs0QkFGUkE7TUFEQW1GO2lEQUFBLG9EQUFBO2lDQUNBbkY7aURBRWU7WUFIZjhpSSxhQUNBeDlIO2lEQUFBLG9EQUFBO3VDQURBdTlILFlBQ0F2OUg7aURBRWU7Z0RBRmYsU0FBQXk5SDtJQUFBQztpREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O29EQUFBLG9EQUFBOzZDQUFBblosa0JBQUFtWjs7bURBQUE7O2dCQUFBQTs7bURBQUEsb0RBQUE7NENBQUFuWixrQkFBQW1aOzs7bURBQUEsb0RBQUE7NENBQUFuWixrQkFBQW1aO1NBQUFDOzs2QkFBQUE7OEJBQUFBO2lDQUFBQTsrQkFBQUE7O1VBQUFDO1NBQUFBLG1CQUFBQTtvREFBQTtRQUFBQyxXQUFBRDtxREFBQUU7dURBQUE7NkJBQUFEO29EQUFBLFdBQUFDOzttREFBQSxvREFBQTs7ZUFBQXZaO2VBQUFvWjtlQUFBRDs7a0RBQUEsb0RBQUE7MkNBQUFuWixrQkFBQW1aOztpREFBQSxvREFBQTswQ0FBQW5aLGtCQUFBbVo7aURBRWU7WUFGZks7aURBQUE7a0RBQ0k7aURBQ0E7S0FBQUM7a0RBQUExdUQ7b0RBQUE7eUJBQUEwdUQ7aURBQUE7MEJBQUExdUQ7aURBQVc7Z0RBRmYsU0FBQTJ1RDtJQUFBMWtJO2lEQUFBO2FBQUFBO2dCQUFBQTs7Z0NBQUFBO29EQUFBLG9EQUFBO3FEQUFBaXJILFdBQUFqckg7OztpQkFBQUE7O29EQUFBLG9EQUFBO3FEQUFBaXJILFdBQUFqckg7Ozs7O1lBQUE4SDtrQ0FBQUE7O2dFQUFBO3lEQUFBbWpILFdBQUFqckg7O2tDQUFBOEg7YUFBQU87WUFBQUEsaUJBQUFBO3VEQUFBO1dBQUFuSSxLQUFBbUk7d0RBQUFsSTswREFBQTt1REFBQUQ7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBOHFILFdBQUFuakgsS0FBQTlIOzs7O3FEQUFBLG9EQUFBO3NEQUFBaXJILFdBQUFqckg7Ozs7aURBQUEsb0RBQUE7a0RBQUFpckgsV0FBQWpySDtpREFFZTtZQUZmMmtJO2lEQUFBO2tEQUNJO2lEQUNBO0tBQUF6a0k7a0RBQUFDO29EQUFBO2dEQUFBRDtpREFBQTs7MEJBQUFDO2lEQUFXOztJQUVmeWtJO0lBQUFDO1lBQUFDO2lEQUFBLE9BWEFwQztpREFjc0I7WUFIdEJxQztpREFBQSxPQUxBZjtpREFRc0I7O0tBSHRCWTtjQUNBempJO21EQUFBO1dBREFtRjtvREFDQSw2Q0FBQTs2QkFBQW5GO29EQURBLDZDQUFBO2VBQUE0akk7b0RBQUEsNkNBQUE7cURBQ0E1akksY0FEQW1GO29EQUFBLG9EQUFBO29DQUNBbkY7O1VBREFvRjttREFDQSw2Q0FBQTs0QkFBQXBGO21EQURBLDZDQUFBO3FEQUFBLFdBQUEyakksVUFDQTNqSTtRQURBb0Y7bURBQUEsb0RBQUE7bUNBQ0FwRjttREFFc0I7O0tBSHRCMGpJO2NBQ0FwK0g7bURBQUEsb0RBQUE7eUNBREFtK0gsZ0JBQ0FuK0g7bURBRXNCO1lBRnRCdStILG9CQUFBQztpREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7O29EQUFBLG9EQUFBOzZDQUFBL1osa0JBQUErWjs7bURBQUEsb0RBQUE7NENBQUEvWixrQkFBQStaOztnQkFBQUE7O21EQUFBLG9EQUFBOzRDQUFBL1osa0JBQUErWjs7O21EQUFBLG9EQUFBOzRDQUFBL1osa0JBQUErWjtTQUFBQzs7NkJBQUFBOzhCQUFBQTtpQ0FBQUE7K0JBQUFBOztVQUFBQztTQUFBQSxtQkFBQUE7b0RBQUE7UUFBQUMsV0FBQUQ7cURBQUFFO1VBTEFuQixnQkFLQWtCO29EQUFBLFdBQUFDOzttREFBQSxvREFBQTs7ZUFBQW5hO2VBQUFnYTtlQUFBRDs7U0FBQUs7UUFBQUEsbUJBQUFBO21EQUFBO09BQUFDLFdBQUFEO29EQUFBRTtTQVhBMUMsbUJBV0F5QzttREFBQSxXQUFBQzs7a0RBQUEsb0RBQUE7O2NBQUF0YTtjQUFBZ2E7Y0FBQUQ7O2lEQUFBLG9EQUFBOzBDQUFBL1osa0JBQUErWjtpREFFc0I7WUFGdEJRO2lEQUFBO2tEQUNJO01BQUFDO21EQUFBQztRQU5KbkIsZ0JBTUlrQjtrREFBQTsyQkFBQUM7O2lEQUNBO0tBQUFDO2tEQUFBQztPQWJKckMsbUJBYUlvQztpREFBQTswQkFBQUM7aURBQWtCO1lBRnRCQyxzQkFBQTlsSTtpREFBQTthQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7b0RBQUEsb0RBQUE7cURBQUFtckgsV0FBQW5ySDs7O2lCQUFBQTs7b0RBQUEsb0RBQUE7cURBQUFtckgsV0FBQW5ySDs7Ozs7WUFBQThIO2tDQUFBQTthQUFBSTtZQUFBQSxtQkFBQUE7dURBQUE7V0FBQUMsT0FBQUQ7d0RBQUFFO2FBWEEwN0gscUJBV0EzN0g7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBK2lILFdBQUFyakgsS0FBQTlIOztrQ0FBQThIO2FBQUFPO1lBQUFBLGlCQUFBQTt1REFBQTtXQUFBbkksS0FBQW1JO3dEQUFBbEk7YUFMQXVrSSxrQkFLQXhrSTt1REFBQSxXQUFBQzs7c0RBQUEsb0RBQUE7dURBQUFnckgsV0FBQXJqSCxLQUFBOUg7Ozs7cURBQUEsb0RBQUE7c0RBQUFtckgsV0FBQW5ySDs7OztpREFBQSxvREFBQTtrREFBQW1ySCxXQUFBbnJIO2lEQUVzQjtZQUZ0QitsSTtpREFBQTtrREFDSTtNQUFBN2xJO21EQUFBQztRQU5Kd2tJLGtCQU1JemtJO2tEQUFBOzsyQkFBQUM7O2lEQUNBO0tBQUFnSTtrREFBQUM7T0FiSjI3SCxxQkFhSTU3SDtpREFBQTs7MEJBQUFDO2lEQUFrQjs7SUFFdEJ3K0c7SUFBQUM7WUFBQTdtRDtpREFBQTtnREFXQztZQVhEM3NDO2lEQUFBLE9BL0VBdW1HO2dEQTBGQztZQVhEdG1HO2lEQUFBO2dEQVdDO1lBWERDO2lEQUFBO2dEQVdDO1lBWER5MUQ7aURBQUE7Z0RBV0M7WUFYRHlVO2lEQUFBO2dEQVdDO1lBWER1b0M7aURBQUE7Z0RBV0M7WUFYREM7aURBQUEsT0EvSkEvWjtnREEwS0M7WUFYRGdhO2lEQUFBO2dEQVdDOztLQVhEdGY7Y0FDQXpsSCxLQUFBc0Y7bURBQUEsNkNBQUE7NEJBQUF0RjttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBeS9ILFVBQ0Eva0k7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQXcvSCxVQUNBOWtJOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUF1L0gsU0FDQTdrSTs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBZzNGLFNBQ0F0OEY7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQXVpRixTQUNBN25GOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUE4c0IsT0FDQXB5Qjs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBNnNCLE9BQ0FueUI7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQTRzQixPQUNBbHlCOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUF1NUQsT0FDQTcrRDs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLG9EQUFBO21DQUFBQTtrREFVQzs7S0FYRDBsSDtjQUNBcGdIO21EQUFBLG9EQUFBO3lDQURBbWdILFFBQ0FuZ0g7a0RBVUM7WUFWRHFnSCxZQUFBcWY7ZSxTQUFBQTtrREFBQSxvREFBQTs0Q0FBQS9hLGtCQUFBK2E7aURBQUE7S0FBQUMsa0JBQUFEO2tEQUNFRTtrREFDQUM7a0RBQ0FDO2tEQUNBQztrREFDQUM7a0RBQ0FDO2tEQUNBQztrREFDQUM7a0RBQ0FDO2tEQVRGQztrREFBQUM7YUFBQUM7a0RBQUE7a0RBQUE7aUVBQUE7VUFBQUM7ZUFBQUE7a0JBQUFBOzs7OzthQUFBQywyQkFBQUM7WUFBQUQsbUJBQUFBOztVQUFBRTtVQUFBQztxQkFBQUg7c0JBQUFJOzJEQUFBO2tCQUFBSjs0REFBQSxvREFBQTtzREFBQTliLGtCQUFBK2E7aUJBQUFlOzREQUFBLG1EQUFBOztrQkFBQUssUUFBQUw7MkRBQUEsT0FBQUs7MERBVUM7b0JBVkREOztVQUFBQSxpQkFBQUQsaUJBQUFIO2lDQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTtxQ0FBQUE7c0NBQUFBO3VDQUFBQTt3Q0FBQUE7eUNBQUFBOzttQkFBQUosbUJBQUFJLGdCQUFBSjs7eUJBU0VGO2tCQVRGQyx3QkFBQUssZ0JBQUFMOzsrREFTRTtnRUFURlU7c0JBQUFGO2dFQVNFRztrRUFBQTswQ0FURkQ7a0JBU0VYLGdCQUFBWTs7d0JBUkFwQjtpQkFERlMsd0JBQUFLLGdCQUFBTDs7OERBQ0U7K0RBREZZO3FCQUFBSjsrREFDRUs7aUVBQUE7MENBREZEO2lCQUNFckIsa0JBQUFzQjs7dUJBT0FmO2dCQVJGRSx3QkFBQUssZ0JBQUFMOzs2REFRRTs4REFSRmM7b0JBQUFOOzhEQVFFTzttQkF2RkYvTixtQkErRUE4TjtnQkFRRWhCLG9CQUFBaUI7O3NCQUhBcEI7ZUFMRkssd0JBQUFLLGdCQUFBTDs7NERBS0U7NkRBTEZnQjttQkFBQVI7NkRBS0VTOytEQUFBO3dDQUxGRDtlQUtFckIsa0JBQUFzQjs7cUJBREF2QjtjQUpGTSx3QkFBQUssZ0JBQUFMOzsyREFJRTs0REFKRmtCLG1CQUFBVjs0REFJRVc7OERBQUE7c0NBSkZEO2NBSUV4QixrQkFBQXlCOztvQkFEQTFCO2FBSEZPLHdCQUFBSyxnQkFBQUw7OzBEQUdFOzJEQUhGb0IsbUJBQUFaOzJEQUdFYTs2REFBQTtxQ0FIRkQ7YUFHRTNCLGlCQUFBNEI7O21CQUdBekI7WUFORkksd0JBQUFLLGdCQUFBTDs7eURBTUU7MERBTkZzQixtQkFBQWQ7MERBTUVlOzREQUFBO3FDQU5GRDtZQU1FMUIsb0JBQUEyQjs7a0JBQ0ExQjtXQVBGRyx3QkFBQUssZ0JBQUFMOzt3REFPRTt5REFQRndCLG1CQUFBaEI7eURBT0VpQjsyREFBQTtrQ0FQRkQ7V0FPRTNCLGlCQUFBNEI7O2lCQUxBakM7VUFGRlEsd0JBQUFLLGdCQUFBTDs7dURBRUU7d0RBRkYwQixtQkFBQWxCO3dEQUVFbUI7YUFqS0ZyYyxrQkErSkFvYztVQUVFbEMsdUJBQUFtQzs7dUJBRkZyQjs7Ozs7bURBQUEsb0RBQUE7NkNBQUFoYyxrQkFBQTZiOztpREFVQztpREFWREQsU0FBQVo7T0FBQVU7a0RBQUEsb0RBQUE7O2NBQUExYjtjQUFBMGI7Y0FBQVg7T0FBQVk7a0RBQUEsb0RBQUE7O2NBQUEzYjtjQUFBMmI7Y0FBQVo7O1lBQ0VFO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO2FBQ0FDOzs7TUFBQTZCO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO2tEQURGO2FBQ0VBO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEOztpREFURixvREFBQTs7YUFBQXRkO2FBQUErYTs7d0JBQ0VFOzt5QkFDQUM7OzBCQUNBQzs7MkJBQ0FDOzs0QkFDQUM7OzZCQUNBQzs7OEJBQ0FDOzsrQkFDQUM7bUNBQ0FDOztZQVRGNWY7aURBQUE7S0FTRWtpQjtLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztrREFRQUM7b0RBQUE7NEJBQUFUO2tEQVRGVTs2QkFTRUQ7a0RBREFFO09BdkZGdlAsbUJBdUZFNk87a0RBUkZXOzZCQVFFRCxlQVJGRDtrREFPRUc7b0RBQUE7MkJBQUFYO2tEQVBGWTs2QkFPRUQsZUFQRkQ7a0RBTUVHO29EQUFBOzhCQUFBWjtrREFORmE7NkJBTUVELGVBTkZEO2tEQUtFRztvREFBQTs2QkFBQWI7a0RBTEZjOzZCQUtFRCxlQUxGRDtrREFJRUc7b0RBQUE7NEJBQUFkO2tEQUpGZTs2QkFJRUQsZUFKRkQ7a0RBR0VHO29EQUFBOzRCQUFBZjtrREFIRmdCOzZCQUdFRCxlQUhGRDtrREFFRUc7T0FqS0ZyZSxrQkFpS0VxZDtrREFGRmlCOzZCQUVFRCxlQUZGRDtrREFDRUc7b0RBQUE7NkJBQUFqQjtrREFERmtCOzZCQUNFRCxlQURGRDtpREFBQSxXQUFBRTtnREFVQztZQVZEbmpCLGNBQUExbkg7ZSxVQUFBQSxxQ0FBQUE7a0RBQ0U7TUFERnVSLGdCQUFBdlI7bURBQ0UydkQ7bURBQ0E1VDttREFDQSt1RjttREFDQXp6RjttREFDQTB6RjttREFDQUM7bURBQ0FDO21EQUNBQzttREFDQXI3QjttREFURm4rRjttREFBQUM7TUFBQUM7O3NEQUFBO3NEQUFBO3FFQUFBOztXQUFBQzs7V0FBQUM7V0FBQUM7a0NBQUFBO21DQUFBQTtvQ0FBQUE7cUNBQUFBO3NDQUFBQTt1Q0FBQUE7d0NBQUFBO3lDQUFBQTswQ0FBQUE7Z0VBQUE7a0VBQUE7O29CQUFBSjs7c0JBQUFJO21FQUFBO2dEQUFBSjs7O2lFQVNFOzhDQUFBaytGO21CQVRGbitGOztxQkFBQUs7a0VBU0U7K0NBVEZMOztnRUFTRSw2Q0FBQTtvQkFBQU07bUVBQUE7MkNBVEZGO21CQVNFKzlGLGtCQUFBNzlGOzs7Z0VBUkE7NkNBQUEyOUM7a0JBREZqK0M7O29CQUFBSztpRUFDRTs4Q0FERkw7OytEQUNFLDZDQUFBO21CQUFBTztrRUFBQTsyQ0FERkg7a0JBQ0U2OUMsb0JBQUExOUM7OzsrREFPQTs0Q0FBQWk1SDtpQkFSRng1SDs7bUJBQUFLO2dFQVFFOzZDQVJGTDs7OERBUUUsNkNBQUE7a0JBQUE2SCxXQXZGRm9oSCxxQkErRUE3b0g7aUJBUUVvNUgsc0JBQUEzeEg7Ozs4REFIQTsyQ0FBQXd4SDtnQkFMRnI1SDs7a0JBQUFLOytEQUtFOzRDQUxGTDs7NkRBS0UsNkNBQUE7aUJBQUFtYztnRUFBQTt5Q0FMRi9iO2dCQUtFaTVILG9CQUFBbDlHOzs7NkRBREE7MENBQUF3cEI7ZUFKRjNsQzs7aUJBQUFLOzhEQUlFOzJDQUpGTDs7NERBSUUsNkNBQUE7Z0JBQUFvYzsrREFBQTt1Q0FKRmhjO2VBSUV1bEMsb0JBQUF2cEI7Ozs0REFEQTt5Q0FBQWc5RztjQUhGcDVIOztnQkFBQUs7NkRBR0U7MENBSEZMOzsyREFHRSw2Q0FBQTtlQUFBeTVIOzhEQUFBO3NDQUhGcjVIO2NBR0VnNUgsbUJBQUFLOzs7MkRBR0E7d0NBQUFIO2FBTkZ0NUg7O2VBQUFLOzREQU1FO3lDQU5GTDs7MERBTUUsNkNBQUE7Y0FBQTA1SDs2REFBQTt1Q0FORnQ1SDthQU1FazVILHNCQUFBSTs7OzBEQUNBO3VDQUFBSDtZQVBGdjVIOztjQUFBSzsyREFPRTt3Q0FQRkw7O3lEQU9FLDZDQUFBO2FBQUEyNUg7NERBQUE7bUNBUEZ2NUg7WUFPRW01SCxtQkFBQUk7Ozt5REFMQTtzQ0FBQXR2RjtXQUZGcnFDOzthQUFBSzswREFFRTt1Q0FGRkw7O3dEQUVFLDZDQUFBO1lBQUE0NUgsV0FqS0ZoZixvQkErSkF4Nkc7V0FFRWlxQyx5QkFBQXV2Rjs7d0JBRkZ6NUg7O3FEQVVDO2tEQVZERCxLQUFBTDs7b0RBQUE7aUNBQUFHO21EQUFBLDZDQUFBOztzREFBQTttQ0FBQUE7bURBQUEsb0RBQUE7cURBQUEyNUcsaUJBQUFyckg7OztvREFBQTtpQ0FBQTJSO21EQUFBLDZDQUFBOztzREFBQTttQ0FBQUE7bURBQUEsb0RBQUE7cURBQUEwNUcsaUJBQUFyckg7O2tEQUNFO21EQUFBO3FEQUFBO2tDQUFBMnZEO21EQUNBO3FEQUFBO2tDQUFBNVQ7bURBQ0E7cURBQUE7a0NBQUErdUY7bURBQ0E7cURBQUE7a0NBQUF6ekY7bURBQ0E7cURBQUE7a0NBQUEwekY7bURBQ0E7cURBQUE7a0NBQUFDO21EQUNBO3FEQUFBO2tDQUFBQzttREFDQTtxREFBQTtrQ0FBQUM7bURBQ0E7cURBQUE7a0NBQUFyN0I7Ozs7Ozs7OztPQUFBQztPQURBeTdCO09BREFDO09BREFDO09BREFDO09BREFwMEY7T0FEQXEwRjtPQURBM3ZGO09BREE0VDttREFERjtjQUNFQTtjQUNBNVQ7Y0FDQTJ2RjtjQUNBcjBGO2NBQ0FvMEY7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQXo3Qjs7a0RBVEY7bURBQUE7Ozs7O3lEQVNFO3NDQUFBRDs7Ozs7bURBVEY7Ozs7O3lEQVFFO3NDQUFBcTdCOzs7OzttREFSRjs7Ozs7eURBT0U7c0NBQUFEOzs7OzttREFQRjs7Ozs7eURBTUU7c0NBQUFEOzs7OzttREFORjs7Ozs7eURBS0U7c0NBQUFEOzs7OzttREFMRjs7Ozs7eURBSUU7c0NBQUExekY7Ozs7O21EQUpGOzs7Ozt5REFHRTtzQ0FBQXl6Rjs7Ozs7bURBSEY7Ozs7O3lEQUVFO3NDQUFBL3VGOzs7OzttREFGRjs7Ozs7eURBQ0U7c0NBQUE0VDs7Ozs7a0RBREYsb0RBQUE7b0RBQUEwN0QsV0FBQXJySDs7aURBQUEsb0RBQUE7bURBQUFxckgsV0FBQXJySDs7WUFBQTJuSDtpREFBQTtLQVNFM1g7S0FEQTQ3QjtLQURBQztLQURBQztLQURBQztLQURBdjBGO0tBREF3MEY7S0FEQTl2RjtLQURBNlQ7S0FRQXo5QyxvQ0FBQTA5RjtLQUFBejlGLHlCQUFBRDtLQURBRSxRQXZGRm9vSCxxQkF1RkVnUjtLQUFBbjVILCtCQUFBRCxRQUNBRDtLQUZBdUgscUNBQUEreEg7S0FBQTl4SCw0QkFBQUQsUUFDQXJIO0tBRkE2Yix3Q0FBQXc5RztLQUFBdjlHLCtCQUFBRCxRQUNBdlU7S0FGQXlVLHVDQUFBdTlHO0tBQUF0OUcsNkJBQUFELFFBQ0FEO0tBRkEwOUcsc0NBQUF6MEY7S0FBQTAwRiw2QkFBQUQsUUFDQXg5RztLQUZBMDlHLHNDQUFBSDtLQUFBSSw0QkFBQUQsUUFDQUQ7S0FGQUcsUUFqS0Y5ZixvQkFpS0Vyd0U7S0FBQW93RixrQ0FBQUQsUUFDQUQ7S0FGQUcsdUNBQUF4OEU7S0FBQXk4RSw2QkFBQUQsUUFDQUQ7aURBRkYsc0JBQ0VFO2dEQVNEOztJQUVENWtCO0lBQUFDO1lBQUE5bkQ7aURBQUE7Z0RBWUM7WUFaRDZvQjtpREFBQSxPQXZGQWl5QztnREFtR0M7WUFaRGh5QztpREFBQTtnREFZQztZQVpEQztpREFBQTtnREFZQztZQVpEQztpREFBQTtnREFZQztZQVpEb0s7aURBQUE7Z0RBWUM7WUFaRHM1QztpREFBQTtnREFZQztZQVpEQztpREFBQTtnREFZQztZQVpEQztpREFBQSxPQTVLQXpnQjtnREF3TEM7WUFaRDBnQjtpREFBQTtnREFZQzs7S0FaRGhsQjtjQUNBem1ILEtBQUFzRjttREFBQSw2Q0FBQTs0QkFBQXRGO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUFtbUksVUFDQXpySTs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBa21JLFVBQ0F4ckk7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQWltSSxTQUNBdnJJOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUFnbUksU0FDQXRySTs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQTt1REFLa0I7d0RBQUEscURBQUE7c0NBTGxCdEY7YUFLa0JzRjt1REFBQSw4Q0FBQTs4QkFMbEJ0Rjt1REFLa0IsOENBQUE7d0RBTmxCO2FBQUFneUYsU0FDQWh5RjtXQUtrQnNGO3VEQUFBLHFEQUFBO3FDQUxsQnRGO3NEQUsrQjs7bURBTC9CLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQXNpRixTQUNBNW5GOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUFxaUYsU0FDQTNuRjs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBb2lGLFNBQ0ExbkY7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQW1pRixTQUNBem5GOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUFzNUQsT0FDQTUrRDs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLG9EQUFBO21DQUFBQTtrREFXQzs7S0FaRDBtSDtjQUNBcGhIO21EQUFBLG9EQUFBO3lDQURBbWhILFFBQ0FuaEg7a0RBV0M7WUFYRHFoSCxZQUFBK2tCO2UsU0FBQUE7a0RBQUEsb0RBQUE7NENBQUF2aEIsa0JBQUF1aEI7aURBQUE7S0FBQUMsa0JBQUFEO2tEQUNFRTtrREFDQUM7a0RBQ0FDO2tEQUNBQztrREFDQUM7a0RBQ0FDO2tEQUNBQztrREFDQUM7a0RBQ0FDO2tEQUNBQztrREFWRkM7a0RBQUFDO2FBQUFDO2tEQUFBO2tEQUFBO2lFQUFBO1VBQUFDO2VBQUFBO2tCQUFBQTs7Ozs7YUFBQUMsMkJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTsyREFBQTtrQkFBQUo7NERBQUEsb0RBQUE7c0RBQUF2aUIsa0JBQUF1aEI7aUJBQUFnQjs0REFBQSxtREFBQTs7a0JBQUFLLFFBQUFMOzJEQUFBLE9BQUFLOzBEQVdDO29CQVhERDs7VUFBQUEsaUJBQUFELGtCQUFBSDt5Q0FBQUM7Ozs7Ozs7cUNBQUFBO3NDQUFBQTt1Q0FBQUE7d0NBQUFBO21CQVVFTjtpQkFWRkMsd0JBQUFLLGdCQUFBTDs7OERBVUU7K0RBVkZVO3FCQUFBRjsrREFVRUc7aUVBQUE7eUNBVkZEO2lCQVVFWCxnQkFBQVk7Ozt1QkFUQXJCO2dCQURGVSx3QkFBQUssZ0JBQUFMOzs2REFDRTs4REFERlk7b0JBQUFKOzhEQUNFSztnRUFBQTt5Q0FERkQ7Z0JBQ0V0QixrQkFBQXVCOztzQkFRQWY7ZUFURkUsd0JBQUFLLGdCQUFBTDs7NERBU0U7NkRBVEZjO21CQUFBTjs2REFTRU87a0JBaEdGelQsbUJBdUZBd1Q7ZUFTRWhCLG9CQUFBaUI7O3FCQUZBbkI7Y0FQRkksd0JBQUFLLGdCQUFBTDs7MkRBT0U7NERBUEZnQixtQkFBQVI7NERBT0VTOzhEQUFBO3VDQVBGRDtjQU9FcEIsa0JBQUFxQjs7b0JBRkF2QjthQUxGTSx3QkFBQUssZ0JBQUFMOzswREFLRTsyREFMRmtCLG1CQUFBVjsyREFLRVc7NkRBQUE7c0RBTEZEO2FBS0V4Qiw0QkFBQXlCOzt3Q0FMRmQ7b0NBQUFBO3FDQUFBQTtzQ0FBQUE7dUNBQUFBO2tCQU1FVjtnQkFORkssd0JBQUFLLGdCQUFBTDs7NkRBTUU7OERBTkZvQjtvQkFBQVo7OERBTUVhO2dFQUFBO3dDQU5GRDtnQkFNRXpCLGtCQUFBMEI7OztzQkFIQTdCO2VBSEZRLHdCQUFBSyxnQkFBQUw7OzREQUdFOzZEQUhGc0I7bUJBQUFkOzZEQUdFZTsrREFBQTt1Q0FIRkQ7ZUFHRTlCLGlCQUFBK0I7O3FCQUNBOUI7Y0FKRk8sd0JBQUFLLGdCQUFBTDs7MkRBSUU7NERBSkZ3QixtQkFBQWhCOzREQUlFaUI7OERBQUE7dUNBSkZEO2NBSUUvQixvQkFBQWdDOztvQkFJQTVCO2FBUkZHLHdCQUFBSyxnQkFBQUw7OzBEQVFFOzJEQVJGMEIsbUJBQUFsQjsyREFRRW1COzZEQUFBO29DQVJGRDthQVFFN0IsaUJBQUE4Qjs7bUJBTkFwQztZQUZGUyx3QkFBQUssZ0JBQUFMOzt5REFFRTswREFGRjRCLG1CQUFBcEI7MERBRUVxQjtlQTlLRmxqQixrQkE0S0FpakI7WUFFRXJDLHVCQUFBc0M7Ozs7O1dBRkY1QixtQkFBQUksZ0JBQUFKOzt1QkFBQUs7Ozs7O21EQUFBLG9EQUFBOzZDQUFBemlCLGtCQUFBc2lCOztpREFXQztpREFYREQsU0FBQWI7T0FBQVc7a0RBQUEsb0RBQUE7O2NBQUFuaUI7Y0FBQW1pQjtjQUFBWjtPQUFBYTtrREFBQSxvREFBQTs7Y0FBQXBpQjtjQUFBb2lCO2NBQUFiOztZQUNFRTtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQzthQUNBQzs7Ozs7TUFBQStCO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO2tEQURGO2FBQ0VBO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEOztpREFWRixvREFBQTs7YUFBQWprQjthQUFBdWhCOzt3QkFDRUU7O3lCQUNBQzs7MEJBQ0FDOzsyQkFDQUM7Ozt5QkFDQUM7Ozs2QkFDQUM7OzhCQUNBQzs7K0JBQ0FDOztnQ0FDQUM7b0NBQ0FDOztZQVZGcGxCO2lEQUFBO0tBVUU2bkI7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7a0RBU0FDO29EQUFBOzRCQUFBVjtrREFWRlc7NkJBVUVEO2tEQURBRTtPQWhHRnRWLG1CQWdHRTJVO2tEQVRGWTs2QkFTRUQsZUFURkQ7a0RBUUVHO29EQUFBOzJCQUFBWjtrREFSRmE7NkJBUUVELGVBUkZEO2tEQU9FRztvREFBQTs2QkFBQWI7a0RBUEZjOzZCQU9FRCxlQVBGRDtrREFNRUc7b0RBQUE7NEJBQUFkO2tEQU5GZTs2QkFNRUQsZUFORkQ7a0RBS0VHO29EQUFBOzZDQUFBZjtrREFMRmdCOzZCQUtFRCxlQUxGRDtrREFJRUc7b0RBQUE7OEJBQUFoQjtrREFKRmlCOzZCQUlFRCxlQUpGRDtrREFHRUc7b0RBQUE7NEJBQUFqQjtrREFIRmtCOzZCQUdFRCxlQUhGRDtrREFFRUc7T0E5S0Z0bEIsa0JBOEtFb2tCO2tEQUZGbUI7NkJBRUVELGVBRkZEO2tEQUNFRztvREFBQTs2QkFBQW5CO2tEQURGb0I7NkJBQ0VELGVBREZEO2lEQUFBLFdBQUFFO2dEQVdDO1lBWER2cEIsY0FBQXZvSDtlLFVBQUFBLHFDQUFBQTtrREFDRTtNQURGdVIsZ0JBQUF2UjttREFDRTJ2RDttREFDQTVUO21EQUNBK3VGO21EQUNBRTttREFDQStHO21EQUNBMTZGO21EQUNBMHpGO21EQUNBRTttREFDQUM7bURBQ0FyN0I7bURBVkZuK0Y7bURBQUFDO01BQUFDOztzREFBQTtzREFBQTtxRUFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDOzBDQUFBQTs7Ozs7OztzQ0FBQUE7dUNBQUFBO3dDQUFBQTt5Q0FBQUE7O2dFQVVFOzZDQUFBODlGO2tCQVZGbitGOztvQkFBQUs7aUVBVUU7OENBVkZMOzsrREFVRSw2Q0FBQTttQkFBQU07a0VBQUE7MENBVkZGO2tCQVVFKzlGLGtCQUFBNzlGOzs7OytEQVRBOzRDQUFBMjlDO2lCQURGaitDOzttQkFBQUs7Z0VBQ0U7NkNBREZMOzs4REFDRSw2Q0FBQTtrQkFBQU87aUVBQUE7MENBREZIO2lCQUNFNjlDLG9CQUFBMTlDOzs7OERBUUE7MkNBQUFpNUg7Z0JBVEZ4NUg7O2tCQUFBSzsrREFTRTs0Q0FURkw7OzZEQVNFLDZDQUFBO2lCQUFBNkgsV0FoR0ZxaUgscUJBdUZBOXBIO2dCQVNFbzVILHNCQUFBM3hIOzs7NkRBRkE7MENBQUF3eEg7ZUFQRnI1SDs7aUJBQUFLOzhEQU9FOzJDQVBGTDs7NERBT0UsNkNBQUE7Z0JBQUFtYzsrREFBQTt3Q0FQRi9iO2VBT0VpNUgsb0JBQUFsOUc7Ozs0REFGQTt5Q0FBQWtrSDtjQUxGcmdJOztnQkFBQUs7NkRBS0U7MENBTEZMOzs7ZUFLRW9jOzs7O21CQUxGaGM7Y0FLRWlnSSw4QkFBQWprSDs7eUNBTEYvYjtxQ0FBQUE7c0NBQUFBO3VDQUFBQTt3Q0FBQUE7OytEQU1FOzRDQUFBc2xDO2lCQU5GM2xDOzttQkFBQUs7Z0VBTUU7NkNBTkZMOzs4REFNRSw2Q0FBQTtrQkFBQXk1SDtpRUFBQTt5Q0FORnI1SDtpQkFNRXVsQyxvQkFBQTh6Rjs7Ozs4REFIQTsyQ0FBQUw7Z0JBSEZwNUg7O2tCQUFBSzsrREFHRTs0Q0FIRkw7OzZEQUdFLDZDQUFBO2lCQUFBMDVIO2dFQUFBO3dDQUhGdDVIO2dCQUdFZzVILG1CQUFBTTs7OzZEQUNBOzBDQUFBSjtlQUpGdDVIOztpQkFBQUs7OERBSUU7MkNBSkZMOzs0REFJRSw2Q0FBQTtnQkFBQTI1SDsrREFBQTt5Q0FKRnY1SDtlQUlFazVILHNCQUFBSzs7OzREQUlBO3lDQUFBSjtjQVJGdjVIOztnQkFBQUs7NkRBUUU7MENBUkZMOzsyREFRRSw2Q0FBQTtlQUFBNDVIOzhEQUFBO3FDQVJGeDVIO2NBUUVtNUgsbUJBQUFLOzs7MkRBTkE7d0NBQUF2dkY7YUFGRnJxQzs7ZUFBQUs7NERBRUU7eUNBRkZMOzswREFFRSw2Q0FBQTtjQUFBc2dJLFdBOUtGMWxCLG9CQTRLQXg2RzthQUVFaXFDLHlCQUFBaTJGOzs7O3dEQUZGOzBEQUFBOztZQUFBcmdJOztjQUFBSTsyREFBQTt3Q0FBQUo7O3dCQUFBRTs7cURBV0M7a0RBWERELEtBQUFMOztvREFBQTtpQ0FBQUc7bURBQUEsNkNBQUE7O3NEQUFBO21DQUFBQTttREFBQSxvREFBQTtxREFBQTY1RyxpQkFBQXZySDs7O29EQUFBO2lDQUFBMlI7bURBQUEsNkNBQUE7O3NEQUFBO21DQUFBQTttREFBQSxvREFBQTtxREFBQTQ1RyxpQkFBQXZySDs7a0RBQ0U7bURBQUE7cURBQUE7a0NBQUEydkQ7bURBQ0E7cURBQUE7a0NBQUE1VDttREFDQTtxREFBQTtrQ0FBQSt1RjttREFDQTtxREFBQTtrQ0FBQUU7bURBQ0E7cURBQUE7a0NBQUErRzttREFDQTtxREFBQTtrQ0FBQTE2RjttREFDQTtxREFBQTtrQ0FBQTB6RjttREFDQTtxREFBQTtrQ0FBQUU7bURBQ0E7cURBQUE7a0NBQUFDO21EQUNBO3FEQUFBO2tDQUFBcjdCOzs7Ozs7Ozs7OztPQUFBQztPQURBeTdCO09BREFDO09BREFFO09BREFwMEY7T0FEQTI2RjtPQURBeEc7T0FEQUU7T0FEQTN2RjtPQURBNFQ7bURBREY7Y0FDRUE7Y0FDQTVUO2NBQ0EydkY7Y0FDQUY7Y0FDQXdHO2NBQ0EzNkY7Y0FDQW8wRjtjQUNBRjtjQUNBRDtjQUNBejdCOztrREFWRjttREFBQTs7Ozs7eURBVUU7c0NBQUFEOzs7OzttREFWRjs7Ozs7eURBU0U7c0NBQUFxN0I7Ozs7O21EQVRGOzs7Ozt5REFRRTtzQ0FBQUQ7Ozs7O21EQVJGOzs7Ozt5REFPRTtzQ0FBQUY7Ozs7O21EQVBGOzs7Ozt5REFNRTtzQ0FBQTF6Rjs7Ozs7bURBTkY7Ozs7O3lEQUtFO3NDQUFBMDZGOzs7OzttREFMRjs7Ozs7eURBSUU7c0NBQUEvRzs7Ozs7bURBSkY7Ozs7O3lEQUdFO3NDQUFBRjs7Ozs7bURBSEY7Ozs7O3lEQUVFO3NDQUFBL3VGOzs7OzttREFGRjs7Ozs7eURBQ0U7c0NBQUE0VDs7Ozs7a0RBREYsb0RBQUE7b0RBQUE0N0QsV0FBQXZySDs7aURBQUEsb0RBQUE7bURBQUF1ckgsV0FBQXZySDs7WUFBQXdvSDtpREFBQTtLQVVFeFk7S0FEQTQ3QjtLQURBQztLQURBRTtLQURBdjBGO0tBREEwNkY7S0FEQXBHO0tBREFFO0tBREE5dkY7S0FEQTZUO0tBU0F6OUMsb0NBQUEwOUY7S0FBQXo5Rix5QkFBQUQ7S0FEQUUsUUFoR0ZxcEgscUJBZ0dFK1A7S0FBQW41SCwrQkFBQUQsUUFDQUQ7S0FGQXVILHFDQUFBK3hIO0tBQUE5eEgsNEJBQUFELFFBQ0FySDtLQUZBNmIsdUNBQUF5OUc7S0FBQXg5Ryw2QkFBQUQsUUFDQXZVO0tBRkF5VSxzQ0FBQWdwQjtLQUFBL29CLDZCQUFBRCxRQUNBRDtLQUZBMDlHOzs7O1NBQUFpRztLQUFBaEcsdUNBQUFELFFBQ0F4OUc7S0FGQTA5Ryx3Q0FBQUw7S0FBQU0sK0JBQUFELFFBQ0FEO0tBRkFHLHNDQUFBTDtLQUFBTSw0QkFBQUQsUUFDQUQ7S0FGQUcsUUE5S0ZoZ0Isb0JBOEtFcndFO0tBQUFzd0Ysa0NBQUFELFFBQ0FEO0tBRkE2Rix1Q0FBQXBpRjtLQUFBcWlGLDZCQUFBRCxRQUNBM0Y7aURBRkYsc0JBQ0U0RjtnREFVRDs7SUFFREM7SUFBQUM7WUFBQXIvQztpREFBQTtnREFTQztZQVREQztpREFBQSxPQTdEQTJ0QztnREFzRUM7WUFURDBSO2lEQUFBO2dEQVNDO1lBVERDO2lEQUFBLE9BeEZBblc7Z0RBaUdDO1lBVERvVztpREFBQTtnREFTQztZQVREQztpREFBQSxPQTFMQXhtQjtnREFtTUM7WUFURHltQjtpREFBQTtnREFTQzs7S0FURE47Y0FDQWx4SSxLQUFBc0Y7bURBQUEsNkNBQUE7NEJBQUF0RjttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBa3NJLFVBQ0F4eEk7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQWlzSSxVQUNBdnhJOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUFnc0ksU0FDQXR4STs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBK3JJLFNBQ0FyeEk7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQThySSxTQUNBcHhJOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUF5c0YsU0FDQS94Rjs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBd3NGLFNBQ0E5eEY7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSxvREFBQTttQ0FBQUE7a0RBUUM7O0tBVERteEk7Y0FDQTdySTttREFBQSxvREFBQTt5Q0FEQTRySSxRQUNBNXJJO2tEQVFDO1lBUkRtc0ksWUFBQUM7ZSxTQUFBQTtrREFBQSxvREFBQTs0Q0FBQXJuQixrQkFBQXFuQjtpREFBQTtLQUFBQyxrQkFBQUQ7a0RBQ0VFO2tEQUNBQztrREFDQUM7a0RBQ0FDO2tEQUNBQztrREFDQUM7a0RBQ0FDO2tEQVBGQztrREFBQUM7YUFBQUM7a0RBQUE7a0RBQUE7aUVBQUE7VUFBQUM7ZUFBQUE7a0JBQUFBOzs7OzthQUFBQywyQkFBQUM7WUFBQUQsbUJBQUFBOztVQUFBRTtVQUFBQztxQkFBQUg7c0JBQUFJOzJEQUFBO2tCQUFBSjs0REFBQSxvREFBQTtzREFBQWxvQixrQkFBQXFuQjtpQkFBQWE7NERBQUEsbURBQUE7O2tCQUFBSyxRQUFBTDsyREFBQSxPQUFBSzswREFRQztvQkFSREQ7O1VBQUFBLGlCQUFBRCxpQkFBQUg7aUNBQUFDO2tDQUFBQTttQ0FBQUE7b0NBQUFBO3FDQUFBQTtzQ0FBQUE7dUNBQUFBOztpQkFBQUosbUJBQUFJLGdCQUFBSjs7dUJBT0VGO2dCQVBGQyx3QkFBQUssZ0JBQUFMOzs2REFPRTs4REFQRlU7b0JBQUFGOzhEQU9FRztnRUFBQTt3Q0FQRkQ7Z0JBT0VYLGdCQUFBWTs7c0JBTkFsQjtlQURGTyx3QkFBQUssZ0JBQUFMOzs0REFDRTs2REFERlk7bUJBQUFKOzZEQUNFSzsrREFBQTt3Q0FERkQ7ZUFDRW5CLGtCQUFBb0I7O3FCQUtBZjtjQU5GRSx3QkFBQUssZ0JBQUFMOzsyREFNRTs0REFORmMsbUJBQUFOOzREQU1FTztpQkFuRUZ0VCxtQkE2REFxVDtjQU1FaEIsb0JBQUFpQjs7b0JBRkFuQjthQUpGSSx3QkFBQUssZ0JBQUFMOzswREFJRTsyREFKRmdCLG1CQUFBUjsyREFJRVM7Z0JBNUZGaFksb0JBd0ZBK1g7YUFJRXBCLHFCQUFBcUI7O21CQURBdEI7WUFIRkssd0JBQUFLLGdCQUFBTDs7eURBR0U7MERBSEZrQixtQkFBQVY7MERBR0VXOzREQUFBO29DQUhGRDtZQUdFdkIsaUJBQUF3Qjs7a0JBRUF0QjtXQUxGRyx3QkFBQUssZ0JBQUFMOzt3REFLRTt5REFMRm9CLG1CQUFBWjt5REFLRWE7MkRBQUE7a0NBTEZEO1dBS0V2QixpQkFBQXdCOztpQkFIQTNCO1VBRkZNLHdCQUFBSyxnQkFBQUw7O3VEQUVFO3dEQUZGc0IsbUJBQUFkO3dEQUVFZTthQTVMRnpvQixrQkEwTEF3b0I7VUFFRTVCLHVCQUFBNkI7O3VCQUZGakI7Ozs7O21EQUFBLG9EQUFBOzZDQUFBcG9CLGtCQUFBaW9COztpREFRQztpREFSREQsU0FBQVY7T0FBQVE7a0RBQUEsb0RBQUE7O2NBQUE5bkI7Y0FBQThuQjtjQUFBVDtPQUFBVTtrREFBQSxvREFBQTs7Y0FBQS9uQjtjQUFBK25CO2NBQUFWOztZQUNFRTtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQzthQUNBQzs7O01BQUF5QjtNQURBQztNQURBQztNQURBQztNQURBQztNQURBQztNQURBQztrREFERjthQUNFQTthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDthQUNBRDs7aURBUEYsb0RBQUE7O2FBQUF0cEI7YUFBQXFuQjs7d0JBQ0VFOzt5QkFDQUM7OzBCQUNBQzs7MkJBQ0FDOzs0QkFDQUM7OzZCQUNBQztpQ0FDQUM7O1lBUEZnQztpREFBQTtLQU9FQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztLQURBQztrREFNQUM7b0RBQUE7NEJBQUFQO2tEQVBGUTs2QkFPRUQ7a0RBREFFO09BbkVGelUsbUJBbUVFaVU7a0RBTkZTOzZCQU1FRCxlQU5GRDtrREFLRUc7b0RBQUE7MkJBQUFUO2tEQUxGVTs2QkFLRUQsZUFMRkQ7a0RBSUVHO09BNUZGL1ksb0JBNEZFcVk7a0RBSkZXOzZCQUlFRCxlQUpGRDtrREFHRUc7b0RBQUE7NEJBQUFYO2tEQUhGWTs2QkFHRUQsZUFIRkQ7a0RBRUVHO09BNUxGbHFCLGtCQTRMRXNwQjtrREFGRmE7NkJBRUVELGVBRkZEO2tEQUNFRztvREFBQTs2QkFBQWI7a0RBREZjOzZCQUNFRCxlQURGRDtpREFBQSxXQUFBRTtnREFRQztZQVJEQyxjQUFBMzJJO2UsVUFBQUEscUNBQUFBO2tEQUNFO01BREZ1UixnQkFBQXZSO21EQUNFMnZEO21EQUNBNVQ7bURBQ0ErdUY7bURBQ0E4TDttREFDQTNMO21EQUNBQzttREFDQXI3QjttREFQRm4rRjttREFBQUM7TUFBQUM7O3NEQUFBO3NEQUFBO3FFQUFBOztXQUFBQzs7V0FBQUM7V0FBQUM7a0NBQUFBO21DQUFBQTtvQ0FBQUE7cUNBQUFBO3NDQUFBQTt1Q0FBQUE7d0NBQUFBOzhEQUFBO2dFQUFBOztrQkFBQUo7O29CQUFBSTtpRUFBQTs4Q0FBQUo7OzsrREFPRTs0Q0FBQWsrRjtpQkFQRm4rRjs7bUJBQUFLO2dFQU9FOzZDQVBGTDs7OERBT0UsNkNBQUE7a0JBQUFNO2lFQUFBO3lDQVBGRjtpQkFPRSs5RixrQkFBQTc5Rjs7OzhEQU5BOzJDQUFBMjlDO2dCQURGaitDOztrQkFBQUs7K0RBQ0U7NENBREZMOzs2REFDRSw2Q0FBQTtpQkFBQU87Z0VBQUE7eUNBREZIO2dCQUNFNjlDLG9CQUFBMTlDOzs7NkRBS0E7MENBQUFpNUg7ZUFORng1SDs7aUJBQUFLOzhEQU1FOzJDQU5GTDs7NERBTUUsNkNBQUE7Z0JBQUE2SCxXQW5FRm1vSCxxQkE2REE1dkg7ZUFNRW81SCxzQkFBQTN4SDs7OzREQUZBO3lDQUFBcTlIO2NBSkZsbEk7O2dCQUFBSzs2REFJRTswQ0FKRkw7OzJEQUlFLDZDQUFBO2VBQUFtYyxXQTVGRjh2RyxzQkF3RkE3ckg7Y0FJRThrSSx1QkFBQS9vSDs7OzJEQURBO3dDQUFBaTlHO2FBSEZwNUg7O2VBQUFLOzREQUdFO3lDQUhGTDs7MERBR0UsNkNBQUE7Y0FBQW9jOzZEQUFBO3FDQUhGaGM7YUFHRWc1SCxtQkFBQWg5Rzs7OzBEQUVBO3VDQUFBbTlHO1lBTEZ2NUg7O2NBQUFLOzJEQUtFO3dDQUxGTDs7eURBS0UsNkNBQUE7YUFBQXk1SDs0REFBQTttQ0FMRnI1SDtZQUtFbTVILG1CQUFBRTs7O3lEQUhBO3NDQUFBcHZGO1dBRkZycUM7O2FBQUFLOzBEQUVFO3VDQUZGTDs7d0RBRUUsNkNBQUE7WUFBQTA1SCxXQTVMRjllLG9CQTBMQXg2RztXQUVFaXFDLHlCQUFBcXZGOzt3QkFGRnY1SDs7cURBUUM7a0RBUkRELEtBQUFMOztvREFBQTtpQ0FBQUc7bURBQUEsNkNBQUE7O3NEQUFBO21DQUFBQTttREFBQSxvREFBQTtxREFBQSs1RyxpQkFBQXpySDs7O29EQUFBO2lDQUFBMlI7bURBQUEsNkNBQUE7O3NEQUFBO21DQUFBQTttREFBQSxvREFBQTtxREFBQTg1RyxpQkFBQXpySDs7a0RBQ0U7bURBQUE7cURBQUE7a0NBQUEydkQ7bURBQ0E7cURBQUE7a0NBQUE1VDttREFDQTtxREFBQTtrQ0FBQSt1RjttREFDQTtxREFBQTtrQ0FBQThMO21EQUNBO3FEQUFBO2tDQUFBM0w7bURBQ0E7cURBQUE7a0NBQUFDO21EQUNBO3FEQUFBO2tDQUFBcjdCOzs7O09BQUFDO09BREF5N0I7T0FEQUM7T0FEQXFMO09BREFsTDtPQURBM3ZGO09BREE0VDttREFERjtjQUNFQTtjQUNBNVQ7Y0FDQTJ2RjtjQUNBa0w7Y0FDQXJMO2NBQ0FEO2NBQ0F6N0I7O2tEQVBGO21EQUFBOzs7Ozt5REFPRTtzQ0FBQUQ7Ozs7O21EQVBGOzs7Ozt5REFNRTtzQ0FBQXE3Qjs7Ozs7bURBTkY7Ozs7O3lEQUtFO3NDQUFBRDs7Ozs7bURBTEY7Ozs7O3lEQUlFO3NDQUFBMkw7Ozs7O21EQUpGOzs7Ozt5REFHRTtzQ0FBQTlMOzs7OzttREFIRjs7Ozs7eURBRUU7c0NBQUEvdUY7Ozs7O21EQUZGOzs7Ozt5REFDRTtzQ0FBQTRUOzs7OztrREFERixvREFBQTtvREFBQTg3RCxXQUFBenJIOztpREFBQSxvREFBQTttREFBQXlySCxXQUFBenJIOztZQUFBODJJO2lEQUFBO0tBT0U5bUM7S0FEQTQ3QjtLQURBQztLQURBa0w7S0FEQS9LO0tBREE5dkY7S0FEQTZUO0tBTUF6OUMsb0NBQUEwOUY7S0FBQXo5RiwwQkFBQUQ7S0FEQUUsUUFuRUZtdkgscUJBbUVFaUs7S0FBQW41SCxnQ0FBQUQsUUFDQUQ7S0FGQXVILHFDQUFBK3hIO0tBQUE5eEgsNkJBQUFELFFBQ0FySDtLQUZBNmIsUUE1RkZzdkcsc0JBNEZFbVo7S0FBQXhvSCxnQ0FBQUQsUUFDQXZVO0tBRkF5VSxzQ0FBQXc5RztLQUFBdjlHLDZCQUFBRCxRQUNBRDtLQUZBMDlHLFFBNUxGMWYsb0JBNExFcndFO0tBQUFnd0YsbUNBQUFELFFBQ0F4OUc7S0FGQTA5Ryx1Q0FBQXA4RTtLQUFBcThFLDhCQUFBRCxRQUNBRDtpREFGRixzQkFDRUU7Z0RBT0Q7O0lBRUQ0SztJQUFBQztZQUFBQztpREFBQSxPQTNDQXRTO2dEQWtEQztZQVBEdVM7aURBQUE7Z0RBT0M7WUFQREM7aURBQUE7Z0RBT0M7WUFQREM7aURBQUEsT0FyTUFuckI7Z0RBNE1DO1lBUERvckI7aURBQUE7Z0RBT0M7O0tBUEROO2NBQ0E3MUksS0FBQXNGO21EQUFBLDZDQUFBOzRCQUFBdEY7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQTZ3SSxVQUNBbjJJOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUE0d0ksVUFDQWwySTs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBMndJLFNBQ0FqMkk7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQTB3SSxTQUNBaDJJOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUF5d0ksU0FDQS8xSTs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLG9EQUFBO21DQUFBQTtrREFNQzs7S0FQRDgxSTtjQUNBeHdJO21EQUFBLG9EQUFBO3lDQURBdXdJLFNBQ0F2d0k7a0RBTUM7WUFORDh3SSxhQUFBQztpREFBQSxTQUFBQTtrREFBQSxvREFBQTs0Q0FBQTlyQixrQkFBQThyQjtpREFBQTtLQUFBQyxrQkFBQUQ7a0RBQ0VFO2tEQUNBQztrREFDQUM7a0RBQ0FDO2tEQUNBQztrREFMRkM7a0RBQUFDO2FBQUFDO2tEQUFBO2tEQUFBO2lFQUFBO1VBQUFDO2VBQUFBO2tCQUFBQTs7Ozs7YUFBQUMsMkJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTsyREFBQTtrQkFBQUo7NERBQUEsb0RBQUE7c0RBQUF6c0Isa0JBQUE4ckI7aUJBQUFXOzREQUFBLG1EQUFBOztrQkFBQUssUUFBQUw7MkRBQUEsT0FBQUs7MERBTUM7b0JBTkREOztVQUFBQSxpQkFBQUQsaUJBQUFIO2lDQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTtxQ0FBQUE7O2VBQUFKLG1CQUFBSSxnQkFBQUo7O3FCQUNFTjtjQURGSyx3QkFBQUssZ0JBQUFMOzsyREFDRTs0REFERlUsbUJBQUFGOzREQUNFRzs4REFBQTt1Q0FERkQ7Y0FDRWYsa0JBQUFnQjs7b0JBSUFaO2FBTEZDLHdCQUFBSyxnQkFBQUw7OzBEQUtFOzJEQUxGWSxtQkFBQUo7MkRBS0VLO2dCQWhERjVULG9CQTJDQTJUO2FBS0ViLG9CQUFBYzs7bUJBRkFoQjtZQUhGRyx3QkFBQUssZ0JBQUFMOzt5REFHRTswREFIRmMsbUJBQUFOOzBEQUdFTzs0REFBQTtvQ0FIRkQ7WUFHRWpCLGlCQUFBa0I7O2tCQUNBakI7V0FKRkUsd0JBQUFLLGdCQUFBTDs7d0RBSUU7eURBSkZnQixtQkFBQVI7eURBSUVTOzJEQUFBO2tDQUpGRDtXQUlFbEIsaUJBQUFtQjs7aUJBRkFyQjtVQUZGSSx3QkFBQUssZ0JBQUFMOzt1REFFRTt3REFGRmtCLG1CQUFBVjt3REFFRVc7YUF2TUY5c0Isa0JBcU1BNnNCO1VBRUV0Qix1QkFBQXVCOzt1QkFGRmI7Ozs7O21EQUFBLG9EQUFBOzZDQUFBM3NCLGtCQUFBd3NCOztpREFNQztpREFOREQsU0FBQVI7T0FBQU07a0RBQUEsb0RBQUE7O2NBQUFyc0I7Y0FBQXFzQjtjQUFBUDtPQUFBUTtrREFBQSxvREFBQTs7Y0FBQXRzQjtjQUFBc3NCO2NBQUFSOztZQUNFRTtZQUNBQztZQUNBQztZQUNBQzthQUNBQzs7O01BQUFxQjtNQURBQztNQURBQztNQURBQztNQURBQztrREFERjthQUNFQTthQUNBRDthQUNBRDthQUNBRDthQUNBRDs7aURBTEYsb0RBQUE7O2FBQUF6dEI7YUFBQThyQjs7d0JBQ0VFOzt5QkFDQUM7OzBCQUNBQzs7MkJBQ0FDOytCQUNBQztnREFDRDtZQU5EMEI7aURBQUE7S0FLRUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7a0RBSUFDO09BaERGclUsb0JBZ0RFZ1U7a0RBTEZNOzZCQUtFRDtrREFEQUU7b0RBQUE7MkJBQUFOO2tEQUpGTzs2QkFJRUQsZUFKRkQ7a0RBR0VHO29EQUFBOzRCQUFBUDtrREFIRlE7NkJBR0VELGVBSEZEO2tEQUVFRztPQXZNRi90QixrQkF1TUV1dEI7a0RBRkZTOzZCQUVFRCxlQUZGRDtrREFDRUc7b0RBQUE7NkJBQUFUO2tEQURGVTs2QkFDRUQsZUFERkQ7aURBQUEsV0FBQUU7Z0RBTUM7WUFOREMsZUFBQXg2STtlLFVBQUFBLHFDQUFBQTtrREFDRTtNQURGdVIsZ0JBQUF2UjttREFDRTJ2RDttREFDQTVUO21EQUNBK3VGO21EQUNBRzttREFDQUM7bURBTEZ4NUg7bURBQUFDO01BQUFDOztzREFBQTtzREFBQTtxRUFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7b0NBQUFBO3FDQUFBQTtzQ0FBQUE7NERBQUE7OERBQUE7O2dCQUFBSjs7a0JBQUFJOytEQUFBOzRDQUFBSjs7OzZEQUNFOzBDQUFBZytDO2VBREZqK0M7O2lCQUFBSzs4REFDRTsyQ0FERkw7OzREQUNFLDZDQUFBO2dCQUFBTTsrREFBQTt3Q0FERkY7ZUFDRTY5QyxvQkFBQTM5Qzs7OzREQUlBO3lDQUFBazVIO2NBTEZ4NUg7O2dCQUFBSzs2REFLRTswQ0FMRkw7OzJEQUtFLDZDQUFBO2VBQUFPLFdBaERGNnpILHNCQTJDQWgwSDtjQUtFbzVILHNCQUFBajVIOzs7MkRBRkE7d0NBQUE2NEg7YUFIRnA1SDs7ZUFBQUs7NERBR0U7eUNBSEZMOzswREFHRSw2Q0FBQTtjQUFBNkg7NkRBQUE7cUNBSEZ6SDthQUdFZzVILG1CQUFBdnhIOzs7MERBQ0E7dUNBQUEweEg7WUFKRnY1SDs7Y0FBQUs7MkRBSUU7d0NBSkZMOzt5REFJRSw2Q0FBQTthQUFBbWM7NERBQUE7bUNBSkYvYjtZQUlFbTVILG1CQUFBcDlHOzs7eURBRkE7c0NBQUFrdUI7V0FGRnJxQzs7YUFBQUs7MERBRUU7dUNBRkZMOzt3REFFRSw2Q0FBQTtZQUFBb2MsV0F2TUZ3K0Ysb0JBcU1BeDZHO1dBRUVpcUMseUJBQUFqdUI7O3dCQUZGamM7O3FEQU1DO2tEQU5ERCxLQUFBTDs7b0RBQUE7aUNBQUFHO21EQUFBLDZDQUFBOztzREFBQTttQ0FBQUE7bURBQUEsb0RBQUE7cURBQUFpNkcsaUJBQUEzckg7OztvREFBQTtpQ0FBQTJSO21EQUFBLDZDQUFBOztzREFBQTttQ0FBQUE7bURBQUEsb0RBQUE7cURBQUFnNkcsaUJBQUEzckg7O2tEQUNFO21EQUFBO3FEQUFBO2tDQUFBMnZEO21EQUNBO3FEQUFBO2tDQUFBNVQ7bURBQ0E7cURBQUE7a0NBQUErdUY7bURBQ0E7cURBQUE7a0NBQUFHO21EQUNBO3FEQUFBO2tDQUFBQzs7O09BQUFLO09BREFDO09BREFHO09BREEzdkY7T0FEQTRUO21EQURGO2NBQ0VBO2NBQ0E1VDtjQUNBMnZGO2NBQ0FIO2NBQ0FEOztrREFMRjttREFBQTs7Ozs7eURBS0U7c0NBQUFMOzs7OzttREFMRjs7Ozs7eURBSUU7c0NBQUFEOzs7OzttREFKRjs7Ozs7eURBR0U7c0NBQUFIOzs7OzttREFIRjs7Ozs7eURBRUU7c0NBQUEvdUY7Ozs7O21EQUZGOzs7Ozt5REFDRTtzQ0FBQTRUOzs7OztrREFERixvREFBQTtvREFBQWc4RCxXQUFBM3JIOztpREFBQSxvREFBQTttREFBQTJySCxXQUFBM3JIOztZQUFBeTZJO2lEQUFBO0tBS0U3TztLQURBQztLQURBRztLQURBOXZGO0tBREE2VDtLQUlBejlDLE1BaERGeXpILHNCQWdERTZGO0tBQUFyNUgsOEJBQUFEO0tBREFFLHFDQUFBcTVIO0tBQUFwNUgsNkJBQUFELFFBQ0FEO0tBRkF1SCxzQ0FBQWt5SDtLQUFBanlILDZCQUFBRCxRQUNBckg7S0FGQTZiLFFBdk1GaStGLG9CQXVNRXJ3RTtLQUFBM3RCLG1DQUFBRCxRQUNBdlU7S0FGQXlVLHVDQUFBdWhDO0tBQUF0aEMsOEJBQUFELFFBQ0FEO2lEQUZGLHNCQUNFRTtnREFLRDs7SUFFRGlzSDtJQUFBQztZQUFBQztpREFBQTtnREFNQztZQU5EQztpREFBQTtnREFNQztZQU5EQztpREFBQTtnREFNQztZQU5EQztpREFBQTtnREFNQzs7S0FOREw7Y0FDQXY1SSxLQUFBc0Y7bURBQUEsNkNBQUE7NEJBQUF0RjttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBczBJLFVBQ0E1NUk7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO2lCQUFBc0Y7bURBQUEsNkNBQUE7cURBREEsV0FBQXEwSSxVQUNBMzVJOzttREFBQSw2Q0FBQTs0QkFBQUE7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTtpQkFBQXNGO21EQUFBLDZDQUFBO3FEQURBLFdBQUFvMEksVUFDQTE1STs7bURBQUEsNkNBQUE7NEJBQUFBO21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSw2Q0FBQTs0QkFBQUE7aUJBQUFzRjttREFBQSw2Q0FBQTtxREFEQSxXQUFBbTBJLFNBQ0F6NUk7O21EQUFBLDZDQUFBOzRCQUFBQTttREFBQSxvREFBQTttQ0FBQUE7a0RBS0M7O0tBTkR3NUk7Y0FDQWwwSTttREFBQSxvREFBQTt5Q0FEQWkwSSxjQUNBajBJO2tEQUtDO2dEQUxELFNBQUF1MEk7SUFBQUM7aURBQUEsU0FBQUE7a0RBQUEsb0RBQUE7NENBQUFydkIsa0JBQUFxdkI7aURBQUE7S0FBQUMsa0JBQUFEO2tEQUNFRTtrREFDQUM7a0RBQ0FDO2tEQUNBQztrREFKRkM7a0RBQUFDO2FBQUFDO2tEQUFBO2tEQUFBO2lFQUFBO1VBQUFDO2VBQUFBO2tCQUFBQTs7Ozs7YUFBQUMsMkJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTsyREFBQTtrQkFBQUo7NERBQUEsb0RBQUE7c0RBQUEvdkIsa0JBQUFxdkI7aUJBQUFVOzREQUFBLG1EQUFBOztrQkFBQUssUUFBQUw7MkRBQUEsT0FBQUs7MERBS0M7b0JBTEREOztVQUFBQSxpQkFBQUQsaUJBQUFIO2lDQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTs7Y0FBQUosbUJBQUFJLGdCQUFBSjs7b0JBR0VIO2FBSEZFLHdCQUFBSyxnQkFBQUw7OzBEQUdFOzJEQUhGVSxtQkFBQUY7MkRBR0VHOzZEQUFBO3FDQUhGRDthQUdFWixrQkFBQWE7O21CQUZBZjtZQURGSSx3QkFBQUssZ0JBQUFMOzt5REFDRTswREFERlksbUJBQUFKOzBEQUNFSzs0REFBQTtrQ0FERkQ7WUFDRWhCLGdCQUFBaUI7O2tCQUdBZDtXQUpGQyx3QkFBQUssZ0JBQUFMOzt3REFJRTt5REFKRmMsbUJBQUFOO3lEQUlFTzsyREFBQTttQ0FKRkQ7V0FJRWYsaUJBQUFnQjs7aUJBRkFsQjtVQUZGRyx3QkFBQUssZ0JBQUFMOzt1REFFRTt3REFGRmdCLG1CQUFBUjt3REFFRVM7MERBQUE7aUNBRkZEO1VBRUVuQixpQkFBQW9COzt1QkFGRlg7Ozs7O21EQUFBLG9EQUFBOzZDQUFBandCLGtCQUFBOHZCOztpREFLQztpREFMREQsU0FBQVA7T0FBQUs7a0RBQUEsb0RBQUE7O2NBQUEzdkI7Y0FBQTJ2QjtjQUFBTjtPQUFBTztrREFBQSxvREFBQTs7Y0FBQTV2QjtjQUFBNHZCO2NBQUFQOztZQUNFRTtZQUNBQztZQUNBQzthQUNBQzs7O01BQUFtQjtNQURBQztNQURBQztNQURBQztrREFERjthQUNFQTthQUNBRDthQUNBRDthQUNBRDs7aURBSkYsb0RBQUE7O2FBQUE3d0I7YUFBQXF2Qjs7d0JBQ0VFOzt5QkFDQUM7OzBCQUNBQzs4QkFDQUM7Z0RBQ0Q7WUFMRHVCO2lEQUFBO0tBSUVDO0tBREFDO0tBREFDO0tBREFDO2tEQUdBQztvREFBQTs0QkFBQUo7a0RBSkZLOzZCQUlFRDtrREFEQUU7b0RBQUE7NEJBQUFMO2tEQUhGTTs2QkFHRUQsZUFIRkQ7a0RBRUVHO29EQUFBOzJCQUFBTjtrREFGRk87NkJBRUVELGVBRkZEO2tEQUNFRztvREFBQTswQkFBQVA7a0RBREZROzZCQUNFRCxlQURGRDtpREFBQSxXQUFBRTtnREFLQztnREFMRCxTQUFBQztJQUFBMTlJO2lEQUFBO2FBQUFBLHFDQUFBQTtrREFDRTtNQURGdVIsZ0JBQUF2UjttREFDRStVO21EQUNBazJIO21EQUNBeDVIO21EQUNBcTVIO21EQUpGcDVIO21EQUFBQztNQUFBQzs7c0RBQUE7c0RBQUE7cUVBQUE7O1dBQUFDOztXQUFBQztXQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTtxQ0FBQUE7MkRBQUE7NkRBQUE7O2VBQUFKOztpQkFBQUk7OERBQUE7MkNBQUFKOzs7NERBR0U7eUNBQUFGO2NBSEZDOztnQkFBQUs7NkRBR0U7MENBSEZMOzsyREFHRSw2Q0FBQTtlQUFBTTs4REFBQTtzQ0FIRkY7Y0FHRUwsb0JBQUFPOzs7MkRBRkE7d0NBQUErQzthQURGckQ7O2VBQUFLOzREQUNFO3lDQURGTDs7MERBQ0UsNkNBQUE7Y0FBQU87NkRBQUE7bUNBREZIO2FBQ0VpRCxrQkFBQTlDOzs7MERBR0E7dUNBQUE2NEg7WUFKRnA1SDs7Y0FBQUs7MkRBSUU7d0NBSkZMOzt5REFJRSw2Q0FBQTthQUFBNkg7NERBQUE7b0NBSkZ6SDtZQUlFZzVILG1CQUFBdnhIOzs7eURBRkE7c0NBQUEweEg7V0FGRnY1SDs7YUFBQUs7MERBRUU7dUNBRkZMOzt3REFFRSw2Q0FBQTtZQUFBbWM7MkRBQUE7a0NBRkYvYjtXQUVFbTVILG1CQUFBcDlHOzt3QkFGRmhjOztxREFLQztrREFMREQsS0FBQUw7O29EQUFBO2lDQUFBRzttREFBQSw2Q0FBQTs7c0RBQUE7bUNBQUFBO21EQUFBLG9EQUFBO3FEQUFBbTZHLGlCQUFBN3JIOzs7b0RBQUE7aUNBQUEyUjttREFBQSw2Q0FBQTs7c0RBQUE7bUNBQUFBO21EQUFBLG9EQUFBO3FEQUFBazZHLGlCQUFBN3JIOztrREFDRTttREFBQTtxREFBQTtrQ0FBQStVO21EQUNBO3FEQUFBO2tDQUFBazJIO21EQUNBO3FEQUFBO2tDQUFBeDVIO21EQUNBO3FEQUFBO2tDQUFBcTVIOzs7T0FBQWE7T0FEQXo1SDtPQURBczVIO09BREF4Mkg7bURBREY7Y0FDRUE7Y0FDQXcySDtjQUNBdDVIO2NBQ0F5NUg7O2tEQUpGO21EQUFBOzs7Ozt5REFJRTtzQ0FBQWI7Ozs7O21EQUpGOzs7Ozt5REFHRTtzQ0FBQXI1SDs7Ozs7bURBSEY7Ozs7O3lEQUVFO3NDQUFBdzVIOzs7OzttREFGRjs7Ozs7eURBQ0U7c0NBQUFsMkg7Ozs7O2tEQURGLG9EQUFBO29EQUFBODJHLFdBQUE3ckg7O2lEQUFBLG9EQUFBO21EQUFBNnJILFdBQUE3ckg7Z0RBS0M7WUFMRDI5STtpREFBQTtLQUlFM1I7S0FEQTU1SDtLQURBeTVIO0tBREE1Mkg7S0FHQTNDLG9DQUFBMDVIO0tBQUF6NUgsMkJBQUFEO0tBREFFLHNDQUFBSjtLQUFBSyw2QkFBQUQsUUFDQUQ7S0FGQXVILHFDQUFBK3hIO0tBQUE5eEgsNkJBQUFELFFBQ0FySDtLQUZBNmIsb0NBQUFyWjtLQUFBc1osMkJBQUFELFFBQ0F2VTtpREFGRixzQkFDRXdVO2dEQUlEOztJQUdEMXZCO0lBQUFHO1lBQUE0K0k7aURBQUEsT0FUQWxEO2lEQWV3QjtZQU54Qm1EO2lEQUFBLE9BbEJBN0c7aURBd0J3QjtZQU54QjhHO2lEQUFBLE9BN0JBekw7aURBbUN3QjtZQU54QjBMO2lEQUFBLE9BM0NBbjJCO2lEQWlEd0I7WUFOeEJvMkI7aURBQUEsT0F4REFwM0I7aURBOER3Qjs7S0FOeEIvbkg7Y0FDQXNDO21EQUFBOzthQURBbUY7c0RBQ0EsNkNBQUE7K0JBQUFuRjtzREFEQSw2Q0FBQTt3REFBQTthQUFBNjhJLFVBQ0E3OEk7V0FEQW1GO3NEQUFBLG9EQUFBO3NDQUNBbkY7O2FBREFvRjtzREFDQSw2Q0FBQTsrQkFBQXBGO3NEQURBLDZDQUFBO3dEQUFBO2FBQUE0OEksVUFDQTU4STtXQURBb0Y7c0RBQUEsb0RBQUE7c0NBQ0FwRjs7YUFEQXFGO3NEQUNBLDZDQUFBOytCQUFBckY7c0RBREEsNkNBQUE7d0RBQUE7YUFBQTI4SSxVQUNBMzhJO1dBREFxRjtzREFBQSxvREFBQTtzQ0FDQXJGOzthQURBMEg7c0RBQ0EsNkNBQUE7K0JBQUExSDtzREFEQSw2Q0FBQTt3REFBQTthQUFBMDhJLFNBQ0ExOEk7V0FEQTBIO3NEQUFBLG9EQUFBO3NDQUNBMUg7O2FBREFtNEQ7c0RBQ0EsNkNBQUE7K0JBQUFuNEQ7c0RBREEsNkNBQUE7d0RBQUE7YUFBQXk4SSxTQUNBejhJO1dBREFtNEQ7c0RBQUEsb0RBQUE7c0NBQ0FuNEQ7O21EQUt3Qjs7S0FOeEJuQztjQUNBeUg7bURBQUEsb0RBQUE7eUNBREE1SCxJQUNBNEg7bURBS3dCO1lBTHhCcEksVUFBQTQvSTtpREFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3VEQUFBLG9EQUFBO2dEQUFBbnlCLGtCQUFBbXlCOztzREFBQSxvREFBQTsrQ0FBQW55QixrQkFBQW15Qjs7cURBQUEsb0RBQUE7OENBQUFueUIsa0JBQUFteUI7O29EQUFBLG9EQUFBOzZDQUFBbnlCLGtCQUFBbXlCOzttREFBQSxvREFBQTs0Q0FBQW55QixrQkFBQW15Qjs7Z0JBQUFBOzttREFBQSxvREFBQTs0Q0FBQW55QixrQkFBQW15Qjs7O21EQUFBLG9EQUFBOzRDQUFBbnlCLGtCQUFBbXlCO1NBQUFDLDhDQUFBQTs7Ozs7Ozs7Ozs7cUNBQUFBO3FDQUFBQTtxQ0FBQUE7bUNBQUFBOzs7O3NDQUFBQTtvQ0FBQUE7b0NBQUFBO29DQUFBQTtrQ0FBQUE7OzthQUFBQztZQUFBQSxtQkFBQUE7dURBQUE7V0FBQUMsV0FBQUQ7d0RBQUFFO2FBeERBdjNCLFlBd0RBczNCO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTs7a0JBQUF2eUI7a0JBQUFveUI7a0JBQUFEOztZQUFBSztXQUFBQSxtQkFBQUE7c0RBQUE7VUFBQUMsV0FBQUQ7dURBQUFFO1lBM0NBMTJCLFlBMkNBeTJCO3NEQUFBLFdBQUFDOztxREFBQSxvREFBQTs7aUJBQUExeUI7aUJBQUFveUI7aUJBQUFEOztXQUFBUTtVQUFBQSxtQkFBQUE7cURBQUE7U0FBQUMsV0FBQUQ7c0RBQUFFO1dBbEJBcEgsYUFrQkFtSDtxREFBQSxXQUFBQzs7b0RBQUEsb0RBQUE7O2dCQUFBN3lCO2dCQUFBb3lCO2dCQUFBRDs7VUFBQVc7U0FBQUEsbUJBQUFBO29EQUFBO1FBQUFDLFdBQUFEO3FEQUFBRTtVQTdCQWxNLFlBNkJBaU07b0RBQUEsV0FBQUM7O21EQUFBLG9EQUFBOztlQUFBaHpCO2VBQUFveUI7ZUFBQUQ7O1NBQUFjO1FBQUFBLG1CQUFBQTttREFBQTtPQUFBQyxXQUFBRDtvREFBQUU7U0FUQWpFLGtCQVNBZ0U7bURBQUEsV0FBQUM7O2tEQUFBLG9EQUFBOztjQUFBbnpCO2NBQUFveUI7Y0FBQUQ7O2lEQUFBLG9EQUFBOzBDQUFBbnlCLGtCQUFBbXlCO2lEQUt3QjtZQUx4QjkvSTtpREFBQTs7b0RBQ0k7UUFBQStnSjtxREFBQUM7VUF6REpsNEIsWUF5RElpNEI7b0RBQUE7NkJBQUFDOztvREFDQTtRQUFBQztxREFBQUM7VUE3Q0pqM0IsWUE2Q0lnM0I7b0RBQUE7NkJBQUFDOztvREFDQTtRQUFBcGdEO3FEQUFBQztVQWhDSm0yQyxZQWdDSXAyQztvREFBQTs2QkFBQUM7O29EQUNBO1FBQUFvZ0Q7cURBQUFDO1VBdEJKL0YsYUFzQkk4RjtvREFBQTs2QkFBQUM7O29EQUNBO1FBQUFDO3FEQUFBQztVQWRKNUMsa0JBY0kyQztvREFBQTs2QkFBQUM7O2lEQUFvQjtZQUx4QmpoSixZQUFBd0I7aURBQUE7YUFBQUE7Z0JBQUFBOztpQkFBQUE7Ozs7Ozs7Ozs7Ozs7O29EQUFBLG9EQUFBO3FEQUFBK3JILFdBQUEvckg7OztpQkFBQUE7O29EQUFBLG9EQUFBO3FEQUFBK3JILFdBQUEvckg7Ozs7O1lBQUE4SDtrQ0FBQUE7YUFBQWl6RDtZQUFBQSxtQkFBQUE7dURBQUE7V0FBQUMsT0FBQUQ7d0RBQUFFO2FBeERBeXNELGNBd0RBMXNEO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQTh3RCxXQUFBamtILEtBQUE5SDs7a0NBQUE4SDthQUFBeUM7WUFBQUEsbUJBQUFBO3VEQUFBO1dBQUFDLE9BQUFEO3dEQUFBRTthQTNDQTg5RyxjQTJDQS85Rzt1REFBQSxXQUFBQzs7c0RBQUEsb0RBQUE7dURBQUFzaEgsV0FBQWprSCxLQUFBOUg7O2tDQUFBOEg7YUFBQUM7WUFBQUEsbUJBQUFBO3VEQUFBO1dBQUFDLE9BQUFEO3dEQUFBRTthQWxCQXV5SSxlQWtCQXh5STt1REFBQSxXQUFBQzs7c0RBQUEsb0RBQUE7dURBQUE4akgsV0FBQWprSCxLQUFBOUg7O2tDQUFBOEg7YUFBQUk7WUFBQUEsbUJBQUFBO3VEQUFBO1dBQUFDLE9BQUFEO3dEQUFBRTthQTdCQXV1SSxjQTZCQXh1STt1REFBQSxXQUFBQzs7c0RBQUEsb0RBQUE7dURBQUEyakgsV0FBQWprSCxLQUFBOUg7O2tDQUFBOEg7YUFBQU87WUFBQUEsaUJBQUFBO3VEQUFBO1dBQUFuSSxLQUFBbUk7d0RBQUFsSTthQVRBdTlJLG9CQVNBeDlJO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQTRySCxXQUFBamtILEtBQUE5SDs7OztxREFBQSxvREFBQTtzREFBQStySCxXQUFBL3JIOzs7O2lEQUFBLG9EQUFBO2tEQUFBK3JILFdBQUEvckg7aURBS3dCO1lBTHhCekI7aURBQUE7O29EQUNJO1FBQUEyQjtxREFBQUMsT0F6REp3bkgsY0F5REl6bkg7b0RBQUE7OzZCQUFBQzs7b0RBQ0E7UUFBQWdJO3FEQUFBQztVQTdDSm9nSCxjQTZDSXJnSDtvREFBQTs7NkJBQUFDOztvREFDQTtRQUFBSjtxREFBQUM7VUFoQ0o2dUksY0FnQ0k5dUk7b0RBQUE7OzZCQUFBQzs7b0RBQ0E7UUFBQXVDO3FEQUFBQztVQXRCSmd3SSxlQXNCSWp3STtvREFBQTs7NkJBQUFDOztvREFDQTtRQUFBdXdEO3FEQUFBQztVQWRKMGlGLG9CQWNJM2lGO29EQUFBOzs2QkFBQUM7O2lEQUFvQjs7SUFFeEJ5a0Y7SUFBQUM7WUFBQUM7aURBQUEsT0FoRkFsZDtpREFxRm9CO1lBTHBCbWQ7aURBQUEsT0FuSEFoaUI7aURBd0hvQjtZQUxwQmlpQjtpREFBQSxPQXhMQTV1QjtpREE2TG9CO1lBTHBCNnVCO2lEQUFBLE9BL0xBandCO2lEQW9Nb0I7O0tBTHBCNHZCO2NBQ0F2K0k7bURBQUE7O2FBREFtRjtzREFDQSw2Q0FBQTsrQkFBQW5GO3NEQURBLDZDQUFBO3dEQUFBO2FBQUE0K0ksVUFDQTUrSTtXQURBbUY7c0RBQUEsb0RBQUE7c0NBQ0FuRjs7YUFEQW9GO3NEQUNBLDZDQUFBOytCQUFBcEY7c0RBREEsNkNBQUE7d0RBQUE7YUFBQTIrSSxVQUNBMytJO1dBREFvRjtzREFBQSxvREFBQTtzQ0FDQXBGOzthQURBcUY7c0RBQ0EsNkNBQUE7K0JBQUFyRjtzREFEQSw2Q0FBQTt3REFBQTthQUFBMCtJLFVBQ0ExK0k7V0FEQXFGO3NEQUFBLG9EQUFBO3NDQUNBckY7O2FBREEwSDtzREFDQSw2Q0FBQTsrQkFBQTFIO3NEQURBLDZDQUFBO3dEQUFBO2FBQUF5K0ksU0FDQXorSTtXQURBMEg7c0RBQUEsb0RBQUE7c0NBQ0ExSDs7bURBSW9COztLQUxwQncrSTtjQUNBbDVJO21EQUFBLG9EQUFBO3lDQURBaTVJLFVBQ0FqNUk7bURBSW9CO1lBSnBCdTVJLGNBQUFDO2lEQUFBOztjQUFBQTtpQkFBQUE7Ozs7Ozs7Ozs7Ozs7c0RBQUEsb0RBQUE7K0NBQUFqMEIsa0JBQUFpMEI7O3FEQUFBLG9EQUFBOzhDQUFBajBCLGtCQUFBaTBCOztvREFBQSxvREFBQTs2Q0FBQWowQixrQkFBQWkwQjs7bURBQUEsb0RBQUE7NENBQUFqMEIsa0JBQUFpMEI7O2dCQUFBQTs7bURBQUEsb0RBQUE7NENBQUFqMEIsa0JBQUFpMEI7OzttREFBQSxvREFBQTs0Q0FBQWowQixrQkFBQWkwQjtTQUFBQzs7NkJBQUFBOzs4QkFBQUE7OytCQUFBQTtnQ0FBQUE7bUNBQUFBO21DQUFBQTttQ0FBQUE7aUNBQUFBOztZQUFBQztXQUFBQSxtQkFBQUE7c0RBQUE7VUFBQUMsV0FBQUQ7dURBQUFFO1lBbkhBcmlCLGtCQW1IQW9pQjtzREFBQSxXQUFBQzs7cURBQUEsb0RBQUE7O2lCQUFBcjBCO2lCQUFBazBCO2lCQUFBRDs7V0FBQUs7VUFBQUEsbUJBQUFBO3FEQUFBO1NBQUFDLFdBQUFEO3NEQUFBRTtXQWhGQTFkLG1CQWdGQXlkO3FEQUFBLFdBQUFDOztvREFBQSxvREFBQTs7Z0JBQUF4MEI7Z0JBQUFrMEI7Z0JBQUFEOztVQUFBUTtTQUFBQSxtQkFBQUE7b0RBQUE7UUFBQWxoRCxXQUFBa2hEO3FEQUFBamhEO1VBeExBNHhCLGtCQXdMQTd4QjtvREFBQSxXQUFBQzs7bURBQUEsb0RBQUE7O2VBQUF3c0I7ZUFBQWswQjtlQUFBRDs7U0FBQVM7UUFBQUEsbUJBQUFBO21EQUFBO09BQUFDLFdBQUFEO29EQUFBRTtTQS9MQTV3QixrQkErTEEyd0I7bURBQUEsV0FBQUM7O2tEQUFBLG9EQUFBOztjQUFBNTBCO2NBQUFrMEI7Y0FBQUQ7O2lEQUFBLG9EQUFBOzBDQUFBajBCLGtCQUFBaTBCO2lEQUlvQjtZQUpwQlk7aURBQUE7O29EQUNJO1FBQUFDO3FEQUFBQztVQWhNSnB3QixrQkFnTUltd0I7b0RBQUE7NkJBQUFDOztvREFDQTtRQUFBQztxREFBQUM7VUExTEp6dkIsa0JBMExJd3ZCO29EQUFBOzZCQUFBQzs7b0RBQ0E7UUFBQUM7cURBQUF4cEY7VUF0SEprbkUsa0JBc0hJc2lCO29EQUFBOzZCQUFBeHBGOztvREFDQTtRQUFBeXBGO3FEQUFBQztVQXBGSjVkLG1CQW9GSTJkO29EQUFBOzZCQUFBQzs7aURBQWdCO1lBSnBCQyxnQkFBQXJoSjtpREFBQTthQUFBQTtnQkFBQUE7O2lCQUFBQTs7Ozs7Ozs7Ozs7b0RBQUEsb0RBQUE7cURBQUFpc0gsV0FBQWpzSDs7O2lCQUFBQTs7b0RBQUEsb0RBQUE7cURBQUFpc0gsV0FBQWpzSDs7Ozs7WUFBQThIO2tDQUFBQTthQUFBeUM7WUFBQUEsbUJBQUFBO3VEQUFBO1dBQUFDLE9BQUFEO3dEQUFBRTthQS9MQXVtSCxvQkErTEF4bUg7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBd2hILFdBQUFua0gsS0FBQTlIOztrQ0FBQThIO2FBQUFDO1lBQUFBLG1CQUFBQTt1REFBQTtXQUFBQyxPQUFBRDt3REFBQUU7YUF4TEF3cEgsb0JBd0xBenBIO3VEQUFBLFdBQUFDOztzREFBQSxvREFBQTt1REFBQWdrSCxXQUFBbmtILEtBQUE5SDs7a0NBQUE4SDthQUFBSTtZQUFBQSxtQkFBQUE7dURBQUE7V0FBQUMsT0FBQUQ7d0RBQUFFO2FBaEZBMDdILHFCQWdGQTM3SDt1REFBQSxXQUFBQzs7c0RBQUEsb0RBQUE7dURBQUE2akgsV0FBQW5rSCxLQUFBOUg7O2tDQUFBOEg7YUFBQU87WUFBQUEsaUJBQUFBO3VEQUFBO1dBQUFuSSxLQUFBbUk7d0RBQUFsSTthQW5IQTArSCxvQkFtSEEzK0g7dURBQUEsV0FBQUM7O3NEQUFBLG9EQUFBO3VEQUFBOHJILFdBQUFua0gsS0FBQTlIOzs7O3FEQUFBLG9EQUFBO3NEQUFBaXNILFdBQUFqc0g7Ozs7aURBQUEsb0RBQUE7a0RBQUFpc0gsV0FBQWpzSDtpREFJb0I7WUFKcEJzaEo7aURBQUE7O29EQUNJO1FBQUFwaEo7cURBQUFDO1VBaE1KOHdILG9CQWdNSS93SDtvREFBQTs7NkJBQUFDOztvREFDQTtRQUFBZ0k7cURBQUFDO1VBMUxKc3BILG9CQTBMSXZwSDtvREFBQTs7NkJBQUFDOztvREFDQTtRQUFBSjtxREFBQUM7VUF0SEo2Mkgsb0JBc0hJOTJIO29EQUFBOzs2QkFBQUM7O29EQUNBO1FBQUF1QztxREFBQUM7VUFwRkpzNUgscUJBb0ZJdjVIO29EQUFBOzs2QkFBQUM7O2lEQUFnQjtZQUVoQjgySTtpREFDRjs7cURBQ2dCOztxREFDQTs7cURBQ0E7O3FEQUNDOztXQUNMampKO3FEQUFNLE9BQU5BOztpREFBWTtZQUV0QmtxQjtpREFDRjs7V0FDV28yRjs7V0FBQUE7O1dBQUFBOztXQUFBQTttQkFBQUE7O2tEQUljLE9BSmRBO2lEQUlpQjtZQUUxQjRpQztpREFDRjtLQUNXcDVGO2tEQUljLE9BSmRBO2lEQUlpQjtZQUUxQnE1RjtpREFDRjttREFLa0I7UUFKUHBsRztrREFHbUIsT0FIbkJBO2lEQUlTO1lBRWxCNmI7aURBQ0Y7O1dBQ1VoOUM7cURBQU0scURBQUE7bUNBQU5BOztXQUNBd21JO3FEQUFNLHFEQUFBO21DQUFOQTs7V0FDQUM7cURBQU0scURBQUE7bUNBQU5BOztXQUNDQztxREFBTSxxREFBQTtvQ0FBTkE7O1dBQ0N0ako7cURBQU0sT0FBTkE7O2lEQUFVO1lBRXBCdWpKO2lEQUNGOzs7O1lBSzBCbHhGO3NEQUFhLGVBQWJBOzs7Ozs7WUFDQW14RjtzREFBYSxlQUFiQTs7Ozs7O1lBQ0FDO3NEQUFhLGVBQWJBOzs7Ozs7WUFDQ0M7c0RBQWEsZUFBYkE7Ozs2REFDVDs7a0RBTHVCO2lEQUtuQjtZQUVwQkM7a0RBQTZCLElBQUVwaUM7a0RBQWUsT0FBZkE7aURBQXFCO1lBQ3BEcWlDO2tEQUF1QixJQUFFdHBEO2tEQUFXLE9BQVhBO2lEQUFhO1lBQ3RDdXBEO2tEQUF3QixJQUFFLzVGO2tEQUFZLE9BQVpBO2lEQUFlO1lBQ3pDZzZGO2tEQUF1QixJQUFFeHBEO2tEQUFXLE9BQVhBO2lEQUFhO1lBRWxDeXBELGNBQ0NqNkYsS0FBWTFRLE1BQWNteEU7aURBQ2pDLElBRGlDeTVCLFNBQUF6NUI7aURBQ2pDO2VBRGlDeTVCO29EQXFEZjs7NkRBQWM7O1lBckRDQTs7WUE4QnpCQyxNQTlCeUJEO2tCQUFkNXFHO2dCQUFBQTs7MERBU1g7MkRBQUE7NkRBQUE7OzBEQUZGOzs4REFDRTs7OzBEQURGOzREQUFBOztpRUFIRzs0Q0FKRjBRLFdBOEJDbTZGOzhCQUFBQTtrQ0FBQUE7OzBEQVI2QjsyREFBQTs2REFBQTs7MERBQS9COzs4REFBTzs7OzBEQUFQOzREQUFBOztpRUFIRzs0Q0FuQkZuNkYsV0E4QkNtNkY7OEJBQUFBO2tDQUFBQTs7MERBNUJhLGVBNEJiQTs7c0RBQ0M7U0FEU2xpQyxNQTlCQzNvRTt1REErQlY7eURBQUE7bUNBL0JGMFEsS0E4QldpNEQsS0FBVmtpQzs7dURBUUk7eUJBUk1saUMsS0FBVmtpQztZQVNDbDJGO3NEQUFTO3dCQVRBZzBELEtBQVZraUMsS0FTQ2wyRjs7WUFlTzhzQyxNQXREaUJtcEQsV0FzRHZCdHFGLE9BdER1QnNxRjtrQkFBZDVxRztzREFnRWpCOzs7aUVBQTZCO3dDQVZmeWhEO3NEQUNzQjtTQURacXBELFFBdERQOXFHO3VEQXVEbUI7eURBQUE7O3VEQUFoQytxRzt5REFBYTtpQ0FEVHpxRjs2REFFRDt3Q0F4REY1UCxLQXNEbUJvNkYsT0FDcEJDOzs7O29CQURvQkQ7a0VBTXFCO3lDQU4vQnJwRDs4QkFBVXFwRCxPQUNwQkM7O1lBSk0vOUgsT0FuRHFCNDlIO3NEQW1EUjt3QkFBYjU5SDs7WUFDQ2swRSxLQXBEb0IwcEQ7c0RBb0RULG1CQUFYMXBEOztzREFOSDtTQUxjK3ZCLFNBekNTMjVCO1NBeUNmejBDLFNBekNleTBDO3VEQThDdkI7eURBQUE7aUNBOUNIbDZGLEtBQVkxUSxNQXlDRG0yRDs7dURBTWdDO1VBQXhDNjBDO3dEQS9DdUJDLGFBK0N2QkQ7VUEvQ3VCSixTQUFBSzs7Y0F5Q1RoNkI7d0RBUWY7MEJBUlM5YTt1REFPZ0M7VUFBckMrMEMsV0FQV2o2Qjt3REF6Q1NrNkIsYUFnRHBCRDtVQWhEb0JOLFNBQUFPOzs7O2dEQWlFaEM7WUFFQ0MsV0FBYzE2RixLQUFZMVEsTUFBY214RTtpREFDMUM7O2VBRDRCbnhFLHVCQUFBQTtpQkFBY214RTt3REFFTms2QjtvREFZbkI7O1NBWm1CQSxXQUZNbDZCOztrREFVakMsOENBQUE7YUE5RUh3NUIsY0FvRVVqNkYsS0FBWTFRLE1BRVFxckc7O1NBVXpCQzttREFBWSxlQUFaQTs7UUFER0M7a0RBQVcsV0FBWEE7Z0RBSWI7WUFNQ0MsV0FBYzk2RixLQUFZMVEsTUFBY214RTtpREFDMUMsT0FEMENBOztXQUVsQ25rRyxPQUZrQ21rRztxREFFckIsZUFBYm5rRzs7WUFGa0Nta0csa0JBQWRueEU7WUFHSDJvRSxNQUhHM29FO3NEQUdNLGVBQVQyb0U7O3FEQUNEOztXQUNOcG1FLE9BTHdCNHVFO3FEQUtOLGVBQWxCNXVFOztxREFFVDtRQURDOG9HLFdBTmdDbDZCO3NEQU9qQztVQWhHSHc1QixjQXlGVWo2RixLQUFZMVEsTUFNbEJxckc7O1lBR0NDO3NEQUFZLGVBQVpBOztXQURHQztxREFBVyxlQUFYQTs7Z0RBR2I7WUFTQ0UsV0FDQy82RixLQUFZZzdGLFNBQXNCanpGLE1BQWF5b0M7aURBQ2xELFlBRHFDem9DOzs7Ozs7Ozt3REFHUCxlQUhvQnlvQzs7Y0FFM0IvbEQ7d0RBQVksZUFBWkE7Ozs7O1lBRWpCbnVCO2tCQUpTMCtIOzhEQWFKO3NDQWJSaDdGLEtBSUcxakM7OztvQkFBQUE7a0VBZWtDO3lDQW5CckMwakMsS0FBK0N3d0M7aUVBZXJDO3dDQWZWeHdDLEtBSUcxakM7OztvRUFheUI7K0NBYnpCQTs2QkFBQUE7V0FKUzArSDtzREFXWCxlQVBFMStIO1lBRXNCMitILFNBTmJEO3FEQVFYO29CQUpFMStILE1BRXNCMitIOztZQWdCbkJodEgsZUFBSkQ7cURBQ0g7aUJBdkJhZ3RIO3VEQW1DSztxREFabEIsU0F2QmFBO3VEQWtDZTtzREFUZDtTQURvQkUsYUF4QnJCRjtTQXdCS0csaUJBeEJMSDt1REF5QlB4d0M7eURBQVE7aUNBekJieHFELEtBc0JNL3hCO3NEQUlMLFVBSkNEOztZQUVlbXRIO2FBR0QxMUM7c0RBQ2I7O2tCQURhQTtnRUFDVzsyQ0FIdEIrRSxPQUQ0QjB3Qzs7cURBTTlCOzsrREFDb0I7MENBTmxCMXdDLE9BRDRCMHdDOztrQkF4QnJCRiwrQkFBbUN4cUQsZUFBQUE7Z0RBMkNqRDtZQUVDNHFELFlBQWVwN0YsS0FBWXVtRDtpREFDN0IsWUFENkJBOzttREFFZDs7O3FEQVdDOztxREFDRTs7V0FGWmpxRjtxREFUVzs7dURBQUE7OEJBSEEwakMsS0FZWDFqQztzREFBUyxlQUFUQTs7UUFSQTVsQjttQkFBSTJrSjt5REFBTzt1QkFRWC8rSCxNQVJJKytIO3dEQUFxQztvREFDMUMsb0RBQUE7cUNBT0MvK0g7aUJBUkE1bEI7K0RBR007c0NBUEtzcEQsS0FZWDFqQzttQkFSQTVsQjttQkFBQUE7O2dEQVdMO1lBR0M0a0osU0FBWUM7a0RBQWdCLE9BQWhCQTs7bUJBQUFBLE9BRUc5NkIsaUJBQU5ueEUsaUJBQVkwUTtvQkF0RnJCODZGLFdBc0ZxQjk2RixLQUFaMVEsTUFBTW14RTs7O2tCQUZIODZCO1FBT0dyQjtRQUFOOWdDO1FBQVk1NEQ7b0JBaEhyQms2RixXQWdIcUJsNkYsT0FBWjQ0RCxRQUFNOGdDOzs7a0JBUEhxQjtRQVlpQi9xRDtRQUFwQndxRDtRQUFTbjBDO1FBQUs5K0M7b0JBNUV2Qmd6RixXQTRFa0JsMEMsT0FBVG0wQyxTQUFjanpGLE1BQU15b0M7O3FCQVpqQitxRCxPQWlCSUMsb0JBQU43akU7b0JBbkNWeWpFLFlBbUNnQkksT0FBTjdqRTs2REFLTTs7Z0RBRW5CO1lBS0c4akU7aURBQ0Y7U0FDTXRCO21EQUFRLE9BQVJBOzs7O1NBQ1lsMkY7bURBQWMsT0FBZEE7O1FBQ1lnMEQ7a0RBQWEsT0FBYkE7aURBQWdCO1lBRTVDeWpDO2lEQUNGO21EQUNlLHFEQUFBOzs7OztXQUNhempDO3FEQUFhLE9BQWJBOztxREFDRyxxREFBQTs7O29EQUkzQjtxREFBQTt1REFBQTs7cURBRkY7O3dEQUNFOzs7b0RBREYsb0RBQUE7OztpREFJYztZQUVkMGpDO2lEQUNGO21EQUVvQixxREFBQTs7OztxREFEQyxxREFBQTs7O3FEQUVBLHFEQUFBOzs7V0FDWnB6RjtxREFBUSxPQWpCZm16RjtnQkFpQk9uekY7O2lEQUFpQztZQUV4Q3F6RjtpREFDRjttREFDeUIscURBQUE7O1FBQ2hCcnpGO2tEQUFRLE9BdEJmbXpGO2FBc0JPbnpGO2lEQUFpQztZQUV4Q3N6RixjQUFpQjc3RixLQUFLMVEsTUFBY214RTtpREFDdEMsNkNBQU87YUFyS0xpNkIsV0FvS2lCMTZGLEtBQUsxUSxNQUFjbXhFOztTQUU3Qmw0RDttREFBUSxPQVBmcXpGO2NBT09yekY7O1FBQ0d1ekY7a0RBQU8sT0FqQ2pCTCxhQWlDVUs7Z0RBQ1g7WUFFQ0MsY0FBaUIvN0YsS0FBSzFRLE1BQWNteEU7aURBQ3RDLDZDQUFPO2FBdEpMcTZCLFdBcUppQjk2RixLQUFLMVEsTUFBY214RTs7U0FFN0JsNEQ7bURBQVEsT0FwQmZvekYsY0FvQk9wekY7Ozs7U0FDeUIwdkQ7bURBQVMsT0FBVEE7O1FBQ2Y2akM7a0RBQVEsT0F4Q3pCTCxhQXdDaUJLO2dEQUNsQjtZQUdDRSxZQUNFQyxNQUFlajhGLEtBQU0xUSxNQUFPMkUsV0FBWXdzRSxNQUFPaEo7a0RBQWdCO21EQUMvRGpCOztzREFBYzs4QkFEZHlsQzttREFFQUM7T0FoS0ZwQixXQThKaUI5NkYsS0FBTTFRLE1BQW1CbXhFO21EQUd4Q2p3QjtPQVpGdXJELGNBU2lCLzdGLEtBQU0xUSxNQUFtQm14RTtpREFJNUM7WUFKSXc3QjtZQUE0QmhvRztZQUFiK0w7WUFBTTFRO1lBQW1CbXhFO1lBQU9oSjtZQUMvQ2pCO1lBQ0EwbEM7WUFDQTFyRDtnREFFTDtZQUdHMnJEO0lBQ0VDLE1BQWVwOEYsS0FBTXkzRCxRQUFTNGtDLGdCQUFpQi9zRyxNQUFPMkUsV0FBWXdzRTtrREFDM0Q7bURBQ1BqSzs7c0RBQWM7OEJBRmQ0bEM7bURBR0FGO09BL0xGeEIsV0E0TGlCMTZGLEtBQWdDMVEsTUFBbUJteEU7bURBSWxFandCO09BNUJGcXJELGNBd0JpQjc3RixLQUFnQzFRLE1BQW1CbXhFO2lEQUt0RTtZQUxJMjdCO1lBQXNEbm9HO1lBQXZDK0w7WUFBTXkzRDtZQUFTNGtDO1lBQWlCL3NHO1lBQW1CbXhFO1lBRWxFaks7WUFDQTBsQztZQUNBMXJEO2dEQWFMO1lBR0c4ckQsWUFBZ0J0MkMsTUFBZWhtRCxLQUFNL0wsV0FBWSttRztrREFBaUIsOENBR2pEO0tBR1hweEg7cURBSFc7NkJBSERvOEU7OztlQUFpQ2cxQywrQkFNM0NweEgsV0FMSjRzRjtTQUFBQSxVQUtJNXNGOztrREFFQzttREFBTDRtRTtxREFBSzs2QkFSd0J4d0MsS0FBZmdtRDttREFTZGsyQztPQWhMRm5CLFdBdUsrQi82RixLQUFrQmc3RixTQUFqQ2gxQyxNQVFkeFY7aURBRUo7WUFWa0J3VjtZQUFxQi94RDtZQUFOK0w7WUFBa0JnN0Y7WUFDL0N4a0M7WUFRQTBsQztZQURBMXJEO2dEQUdMO1lBR0crckQsYUFBaUJoMkMsT0FBZ0J2bUQsS0FBTS9MO2tEQUFvQjttREFDekR1aUU7O3NEQUFlOzhCQURBalE7bURBRWYyMUM7T0F6SUZkLFlBdUlpQ3A3RixLQUFoQnVtRDtpREFHbkI7WUFIbUJBO1lBQXNCdHlEO1lBQU4rTDtZQUMvQncyRDtZQUNBMGxDO2dEQUVMO1lBSUdNLGlCQUFvQjNxRztrREFBMEI7OztZQUExQkE7O21CQUFBQTs7OztnQkFLeUJtTyxlQUFYMWpDOzt5REFGbEM7YUFEcUNra0M7YUFBWGlsRDswREFDMUI7d0JBQUs1Qjs2REFDTCxPQURLQTs2REFDSTsyREFESTs2REFBQTtvQ0FEd0JyakQsT0FBWGlsRDt5REFFMUIsb0RBQUE7Ozs7O21CQUpvQjV6RDswREFLeUJtTyxlQUFYMWpDOzs7bUJBTGR1MUI7O3NEQVVwQjtVQURxQ2cxRDtVQUFYRDt1REFDMUI7cUJBQUsvQzswREFDTCxPQURLQTswREFDSTt3REFESTswREFBQTtpQ0FEd0JnRCxPQUFYRDtzREFFMUIsb0RBQUE7Ozs7OztrREFKQTttREFBQTtpQkFBSy9DO3NEQUNMLE9BREtBO3NEQUNJO29EQURJO3NEQUFBOzZCQUZnQzdqRCxLQUFYMWpDO2tEQUdsQyxvREFBQTs7O2lEQUlLO2dEQUVSO1lBRUdtZ0ksNEJBQThCem1KO2lEQUNoQyxjQURnQ0E7Ozs7Z0RBSS9COzs7O09BN2xCSDh0SDtPQUFBQztPQUNBQztPQUFBQztPQUFBQztPQUFBQztPQUVBQztPQUFBQztPQUNBRztPQUFBWTtPQUFBSztPQUFBSztPQVdBRztPQUFBQztPQUNBQztPQUFBTTtPQUFBRTtPQUFBQztPQVNBQztPQUFBQztPQUNBQztPQUFBTTtPQUFBRztPQUFBQztPQU1BQztPQUFBQztPQUNBQztPQUFBVztPQUFBSztPQUFBQztPQU1BQztPQUFBQztPQUNBQztPQUFBSTtPQUFBQztPQUFBQztPQUlBQztPQUFBQztPQUNBSTtPQUFBNEM7T0FBQWdCO09BQUFXO09BaUJBSTtPQUFBQztPQVdBQztPQUFBTztPQUFBSTtPQUFBQztPQU5BQztPQUFBQztPQUNBQztPQUFBTztPQUFBSTtPQUFBQztPQUlBQztPQUFBQztPQUNBN0I7T0FBQU87T0FBQUk7T0FBQUM7T0FFQWtCO09BQUFDO09BQ0FDO09BQUFTO09BQUFJO09BQUFDO09BSUFDO09BQUFDO09BQ0FDO09BQUFTO09BQUFJO09BQUFDO09BSUFDO09BQUFDO09BQ0FDO09BQUFRO09BQUFLO09BQUFDO09BSUFDO09BQUFDO09BQ0FDO09BQUFFO09BQUFDO09BQUFDO09BT0FDO09BQUFDO09BQ0FDO09BQUFhO09BQUFPO09BQUFDO09BU0FDO09BQUFDO09BQ0FFO09BQUFZO09BQUFDO09BQUFDO09BU0FDO09BQUFDO09BQ0FFO09BQUFjO09BQUFXO09BQUFDO09BTUFDO09BQUFDO09BQ0FDO09BQUFPO09BQUFJO09BQUFDO09BSUFDO09BQUFDO09BQ0FDO09BQUFFO09BQUFDO09BQUFDO09BS0FDO09BQUFDO09BQ0FDO09BQUFFO09BQUFDO09BQUFDO09BTUFDO09BQUFDO09BQ0FHO09BQUFVO09BQUFNO09BQUFDO09BS0FDO09BQUFDO09BQ0FDO09BQUFNO09BQUFFO09BQUFDO09BSUFDO09BQUFDO09BQ0FHO09BQUFTO09BQUFLO09BQUFDO09BSUFuZjtPQUFBQztPQUNBQztPQUFBRztPQUFBUztPQUFBQztPQVlBQztPQUFBQztPQUNBQztPQUFBTTtPQUFBRztPQUFBQztPQWFBNnBCO09BQUFDO09BQ0FNO09BQUF5QztPQUFBc0I7T0FBQUc7T0FVQUU7T0FBQUM7T0FDQU07T0FBQWlDO09BQUFnQjtPQUFBQztPQVFBQztPQUFBQztPQUNBSztPQUFBNkI7T0FBQWE7T0FBQUM7T0FRQTkrSTtPQUFBRztPQUNBWDtPQUFBRjtPQUFBSztPQUFBRDtPQU9BbWhKO09BQUFDO09BQ0FLO09BQUFhO09BQUFRO09BQUFDO09BTUlDO09BUUEvNEg7T0FRQWc1SDtPQVFBQztPQVFBdnBGO09BUUEycEY7T0FZQUk7T0FDQUM7T0FDQUM7T0FDQUM7T0FFSUM7T0FvRUpTO09BcUJBSTtPQW9CQUM7T0E4Q0FLO09Ba0JBRTtPQTZCQUc7T0FNQUM7T0FZQUM7T0FPQUM7T0FLQUM7T0FNQUU7T0FRQUM7T0FTQUc7T0FxQkFHO09BY0FDO09BUUFDO09BZ0JBQzs7O2E7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7OzZDQ25uQlE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OENBQVJ2eUY7Z0RBQVE7O3dCQUFVd3lGO21EQUFhLFdBQWJBO2tEQUF3Qjs4Q0FPMUNDO2dEQUNGOztZQVdNdG1KLEdBQU80NkI7YUFDTGEsR0FBTStDO2dEQUE2QjtpREFDOUI7bURBQUE7OEJBRENBO2lEQUM0QjttREFBQTswQkFGN0I1RDtpREFFUGhyQjttREFBTztxREFBbUI7OztpREFDMUIyMkk7bURBQVM7dUJBRFQzMkk7aURBRUE0Mkk7bURBQVM7dUJBRlQ1Mkk7WUFEUTR1Qjs7WUFJQWlvSCxzQkFBUEosWUFGREUsUUFDQUM7O21EQUtvQjtTQURibmpKLElBUENtN0I7b0RBUVksTUFSbEIvQyxHQU9LcDRCO1NBQ01rd0M7U0FBSnYzQjtTQUpEeXFJLGVBSUtsekc7U0FKWjh5RyxZQUZERSxRQU1TdnFJOzs7bURBR1c7U0FEZnJMLElBVkc2dEI7b0RBV1ksTUFYbEIvQyxHQVVHOXFCO1NBQ1E2akM7U0FBUHo0QjtTQVBFMHFJLGVBT0tqeUc7U0FQWjZ4RyxZQU9LdHFJLEtBUk55cUk7OzttREFXc0I7U0FEWnBzSCxNQWJGb0U7U0FhSnZFLE1BYkl1RTtvREFjYyxNQWRwQi9DLEdBYUV4QjtTQUNTeXNIO1NBQVBDO29EQUNnQixNQWZwQmxySCxHQWFRckI7U0FFR3dzSDtTQUFKQztvREFYREM7c0RBWUM7YUFwQ2JqekYsU0FrQ2lCNnlGLE9BQ0FFO21EQVhaRyxjQVVLSixLQUNHRTtTQVhESixlQUFBSztTQUFQVCxRQUFBVTs7K0NBZUg7Z0RBQUE7a0RBQUE7d0JBbEJFbjNJO2dEQWtCRjtrREFBQTtvREFDRzs2QkFwQkM2ckI7O2tDOytDQW1CSjtnREFBQTtrREFBQTtvREFFRzs7O2dEQUhEdXJIO2tEQUNGO29EQUdHOzZCQTFDTG56Rjs7Z0RBNENFO2tEQUFBO3dCQXZCRWprRDtnREF1QkY7a0RBQUE7b0RBQ0c7OztpREFHRTttREFBQTtVQWhEUGlrRCxTQXNDSW16RixtQkFkUVA7a0JBdUJKMWtKLEtBQUt6QjtpREFBTyxrREFBQTtvQ0FBUEEsSUF2QlIrbEosT0F1Qkd0a0o7Z0RBQXNDOytDQUg1QywwQ0FBQTtNQURFQTtrREFDRjtvREFFRzs7OytDQUlMLFdBMUJLc2tKLE9BbUJEdGtKOzhDQVFMOzhDQUNEOytDQUFBO2lEQUFBO2dDQWpDYTY0QjsrQ0FvQ1I7aURBQUE7U0F2REhpNUI7O1NBb0JNcDRCO3VEQW1DaUI7cUNBcENaYjs7aUJBbUNQNzRCLEtBQUtpL0I7Z0RBQVEsa0RBQVc7Y0F0RDVCNnlCLFNBc0RJOXhELEtBSUprbEosS0FKU2ptSDsrQ0FBMkI7OENBRnRDLGlEQUFBO3VEQUNHOzs7NkNBSUo7WUFDR2ltSCxLQUFLcnNIOzhDQUNQOytDQUFHLDBDQUFBOztrREFBQTs2QkFwREQwckgsWUFtREsxckg7K0NBQ0o7OztnREFFUywyQ0FBQTtNQUFOc3NILE1BMUNBbG5KLEdBdUNDNDZCOytDQUlMLDBDQUFBOzBCQXZEQTBySCxZQW1ESzFySCxLQUdEc3NIOytDQUNKLE9BRElBOzs2Q0FHTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaEVDcnpGO09BT0F5eUY7T0FZSXRtSjtPQXVDSmluSjs7OzthOzs7Ozs7Ozs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Yzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUMvQkY3bUo7SUFBQUc7WUFBQW9IO21EQUFBO21EQUN5QjtZQUR6QkM7bURBQUE7bURBQ3lCOztLQUR6QnhIO2NBQ0FzQztvQkFBU0E7c0RBRFQsc0RBQUE7Z0JBQUFrRixPQUNTbEY7c0RBQWdCO3FEQUR6QixzREFBQTtlQUFBaUYsYUFDQWpGO3FEQUF5Qjs7S0FEekJuQztjQUNBeUg7cURBQUEsc0RBQUE7d0NBREE1SCxJQUNBNEg7cURBQXlCO2tEQUF6QixTQUFBcEksVUFBQThYO21EQUFBLHNEQUFBO3dEQUFBQTttREFBeUI7WUFBekJoWSxVQUFBaVk7bURBQUEsc0RBQUE7d0RBQUFBO21EQUF5QjtrREFBekIsU0FBQTVYLFlBQUFKO2UsNkRBQUFBOztZQUFBRyxZQUFBNkM7ZSw2REFBQUE7O1lBS0l3a0osVUFBYUMsYUFBMkJDO21EQUMxQywrQ0FBQTs7a0JBQ0cvbUosSUFBSWs3QyxNQUFNdDFCO29EQU9UO3VEQUFPOytCQVBSNWxCLElBRlk4bUo7O3dEQVVJOytCQVJaNXJHO3NEQVFtQyxXQVJ2Q2w3QyxJQUFVNGxCO3FEQVNGLE9BVEVBO21EQVVSO21EQVhMLHNEQUFBO3lDQUQwQ21oSTtrREFlekM7bURBdEJRLGdEQUFBOztVQUNYam5KLElBQUFHLE1BQ0FYLFdBQUFGLFdBQUFLLGFBQUFELGFBS0lxbko7WUFrQkZHLE1BQVNqbkosR0FBRzYvQixJQUFJMWtCO21EQUNsQiwrQ0FFRTttQkFIZ0JBO3lCQUVOeFQ7b0RBQVY7TUFBTXdUO01BQUowa0I7c0RBQWM7d0RBQUEsV0FGUDcvQixHQUVDMkgsR0FBSndUO3FEQUFVOzhEQUFXO2VBQU1BO2VBQUh4VDs4REFBVTtzRUFBQztvQ0FBdkNrNEIsUUFBNEJsNEI7c0JBQUd3VDs2REFBcUI7O29EQUFBO21EQUR4RCxzREFBQTswQ0FEYzBrQjtrREFLYjtZQUVDcW5ILFNBQVl2a0osS0FBaUJ3NEMsTUFBY2hnQztrQkFDdEJBLEdBQUdsYjtxREFBTyx1REFBQTttQ0FBUEEsSUFES2s3QyxNQUNSaGdDO29EQUFpQzttREFBeEQsc0RBQUE7NERBQU87c0NBRHNDQTthQUEvQnhZO21EQUM4QztZQUV0RHdrSixjQUFpQjduSjtvREFBYSxJQUFidzdCLE1BQUF4N0I7b0RBQWE7b0RBQzdCLCtDQUFBOzt1REFBQTs2QkFEZ0J3N0I7Ozs7eURBRVA7O3lEQUNGOzthQUhTOCtELGdCQUFBOStELE1BQUE4K0Q7O29EQUtoQjs7a0RBRVI7WUFFR3d0RCxhQUFnQjk5RixLQUFLbDZDLEdBQUdpNEksS0FBSzVEO29EQUFlO3FEQUN0Qzt1REFBQTs0QkFEZXIwSTtxREFDUzt1REFBQTs0QkFETmk0STs7U0FFRkMsc0JBQWhCQztjQUFBQSxZQUFBQSxhQUFnQkQ7c0RBRVg7dURBQVBFO3lEQUFPOzhCQUpLbCtGLEtBQWFtNkY7dURBS3RCO3lEQUFBOzhCQURIK0Q7O1dBRUdDOzt5REFBVzsyQkFBWEE7YUFKREY7dURBS0osc0RBQUE7aUVBQVE7b0NBaEJOSjtpQkFlR007O3NEQUVFLE9BakJMTjtnQkFhQUs7c0JBRkVEOzs7O21EQVNEO2tEQUVSO1lBRUdHO21EQUNGOzZEQU1FOzs4REFMa0Q7O21EQUsvQjtZQUVuQkM7b0RBQ0Y7OERBTUU7OytEQUxrRDs7b0RBSy9CO1lBRW5CQztvREFDRjsrREFFWTs7K0RBREE7O29EQUNtQjtZQUU3QkM7b0RBQ0Y7O3VEQVNJO1FBSEVyN0k7d0RBR0Y7VUFqQ0ZrN0ksc0JBOEJJbDdJO3dEQUVGOzBEQUFBOzt3REFGUzsrREFDVDs7Ozs7dURBT0E7UUFISUM7d0RBR0o7VUE3QkZrN0ksd0JBMEJNbDdJO3dEQUVKOzBEQUFBOzt3REFGVzsrREFDWDs7Ozs7dURBUkE7d0RBQUE7MERBQUE7O3dEQURBOzBEQUFBOzt3REFGZ0I7K0RBQ2hCOzs7Ozt1REFpQkE7UUFIS0M7d0RBR0w7VUF6QkZrN0kseUJBc0JPbDdJO3dEQUVMOzBEQUFBOzt3REFGWTsrREFDWjs7Ozs7bURBR0Q7WUFFRG83STtvREFDRjs7dURBR0ksZ0RBQUE7OzBEQUFBOzt3REFGZTsrREFDZjs7Ozt3REFJaUMsaURBQUE7OzJEQUFBOzt3REFBckI7Z0VBQUM7Ozs7d0RBRG9CLGlEQUFBOzsyREFBQTs7d0RBQXRCO2dFQUFDOzs7O29EQUN3QztZQUVsREMsZ0JBQ0V6K0YsS0FBYS9MLFdBQVd5cUcsS0FBWTdzSTtvREFDNUMsT0FEZ0M2c0k7O3VEQUk1QjtRQUZFbC9HLElBRjBCay9HO3dEQUk1QjtVQW1DRkMsaUJBdkNNMytGLFdBQWEvTCxXQUVmelUsR0FGc0MzdEI7UUFHZHEzQjtRQUF0QnV1RTt1REFFTixXQUZNQSxRQUFzQnZ1RTs7dURBSzFCO1FBRkVwakMsSUFOMEI0NEk7d0RBTzFCRTtVQStiSkMsb0JBdGNNNytGLDBCQUFhL0wsY0FNZm51QyxHQU5zQytMO3VEQWlCMUM7O2VBVkkrc0k7O3VEQWlCRjtRQUZFcHVELEtBdEIwQmt1RDt3REF3QjVCO1VBaWhCRkksaUJBemlCTTkrRixRQUFhL0wsV0FzQmZ1OEMsSUF0QnNDMytFO3dEQXNCL0I7Ozs7dURBRlQ7UUFGR21tRSxLQWxCeUIwbUU7d0RBb0I1QjtVQTZuQkZLLGtCQWpwQk0vK0YsS0FBYS9MLFdBa0JkK2pDLElBbEJxQ25tRTt3REFrQjlCOzs7O3dEQVVGOztlQTVCZ0NBOzttREE2QjNDO1lBQ0NtdEksTUFBVWgvRixLQUFNL0wsV0FBV3BpQyxHQUFHaXJGO29EQUNoQyxnREFLRTttQkFOMkJqckY7eUJBRVo2c0k7cURBQWY7TUFBVzdzSTtNQUFUb3RJO3VEQUNrQjtRQWxDaEJSLGdCQStCTXorRixLQUFNL0wsV0FFRHlxRyxLQUFKN3NJO01BQ0lxM0I7TUFBUnV1RTtxREFDTDs2REFBQzsyQkFGRHduQyxhQUNLeG5DO2FBQVF2dUU7b0RBRWQ7b0RBSkgsdURBQUE7MENBRGdDNHpEO21EQVEvQjtZQUNDNmhELGlCQUVHTyxTQUNBeDBILFdBRUF1cEI7b0RBQ0QsR0FIQ3ZwQjtTQUFLQyxNQUFMRCxRQUFBNGtCLE9BQUsza0I7O1NBQUwya0I7b0RBR0Q7U0FGYzVGLGlCQUFieTFHLGVBQWF6MUc7O1NBQWJ5MUc7b0RBRUQ7cURBQWlCcDNGO0tBQWhCMXVEO29EQUNELGdCQUFBd1k7Z0I7OztnQkFKQ3k5QjtrQkFBQUE7Ozs7O3lEQVVxQzswREFBQTtTQUZ0QzhwRTs7OztVQUFBQSxTQVJDOXBFOztjQWFEOHZHLElBQVMzK0IsTUFBT2hKLFFBQVE1bEc7dURBQU0sZ0RBRTlCO09BREVnZ0M7eURBQ0Y7OztXQWhCQ3F0RztXQVNEOWxDO1dBTkNubEU7V0FXUXdzRTtXQUFPaEo7c0RBR2xCO2NBRkk1bEU7Y0EzSUorckcsU0FnSUd2a0osU0FXQ3c0QyxPQURzQmhnQztxREFJM0I7cURBQ0QsU0FBSXJZO01BQVFpbkgsTUFBT2hKLFFBQVE1bEc7dURBQU0sT0FMN0J1dEk7bUJBS1EzK0IsT0FBT2hKLFFBQVE1bEc7c0RBQTBDO3NEQUNyRDt1REFBQTs7MERBQUM7Ozt1REFBYjBpQzt5REFBWTs0QkFqQlhOO2NBa0JEb3JHLG1CQUVHci9GLEtBQ0F0MUI7c0RBR0QsR0FIQ0E7V0FBS0MsTUFBTEQsUUFBQTRrQixPQUFLM2tCOztXQUFMMmtCO3NEQUdEO1dBRmM1RixpQkFBYjQxRyxpQkFBYTUxRzs7V0FBYjQxRyxpQkF2QkZIO3NEQXlCQztXQURXanNGLGlCQUFWamYsWUFBVWlmOztXQUFWamYsWUFOSE07c0RBUUUsZ0JBQUExaUM7d0RBQ0csT0EvQlA4c0k7aUJBeUJLMytGLFNBQ0ExUSxXQUNBZ3dHLGlCQUNBcnJHO2dCQUVEcGlDLG1EQUdMO3FEQUFBO3NEQUMyQixpREFBQTtpQkFaeEIwaUM7Y0FZQXppQjs7a0IsT0FYQXV0SDs7dURBV007O3dEQUFrQjttQjs7c0RBQ25CLGlEQUFBO01BQUxFLE9BREF6dEgsR0FoQ0NvdEg7cURBa0NMLFNBQUlNLFNBQVczdEk7c0RBQ2IsZ0RBR0U7cUJBSldBOzJCQUVEeTlCLE1BQU05UDt1REFBaEI7UUFBTTN0QjtRQUFKeXRCO3dEQUNBOzBEQUFBO1lBSkZpZ0gsU0FHVWp3RyxXQUFNOVAsR0FBVjN0Qjt1REFDSjtpRUFBbUI7aUJBQU1BO2lCQUFIMnRCO2lFQUFVO3lFQUFDO3NDQURqQ0YsUUFDc0JFO3dCQUFHM3RCO2dFQUFxQjs7dURBQUE7c0RBQ2hELHVEQUFBOztxREFDRDtjQUNDNHRJOztrQixPQXFYRlo7c0JBN1pHSzs7dURBd0NRO3VEQUFiOzttQixrQkFwQkkzcUc7O2NBcUJBbXJHLE9BQVNqL0I7dURBQVEsT0F0QmpCam5IO2VBc0JTaW5ILDJCQXBDVDV1RztzREFvQ21EO3FEQUN2RDtjQXRDcUJrMkM7dURBbURDLE9BZGxCMjNGOztpRUFjdUI7O3FEQWIzQixPQXRDcUIzM0Y7O1lBa0RYdGQsUUFsRFdzZDt5REFrRE0sT0FidkIyM0Y7cUJBYU1qMUc7O3lEQU5XO1NBRFRxeUQsTUEzQ1MvMEM7MERBNENBO1dBM0RuQmkzRixNQVdHRSxTQW9CRDNxRyxhQWZBMWlDLEdBMENRaXJGO1NBQ0k1ekQ7U0FBVCsxRzt3REFDTCxPQTlCRXpsSjs7a0VBOEJ5Qjt3Q0FEdEJ5bEo7aUJBQVMvMUc7O1lBUUx5MkcsV0FwRFU1M0Y7d0RBcURuQixPQTNDRXEzRjtxQkEwQ09PLGdDQW5EUDl0STs7eURBcURnQixPQWpCaEI2dEk7O21FQWlCcUI7Ozt5REFDTixPQWxCZkE7O21FQWtCb0I7Ozt5REFDSCxPQW5CakJBOzttRUFtQnNCOzs7eURBQ0osT0FwQmxCQTs7bUVBb0J1Qjs7O3lEQUVmO1NBREZwZ0gsS0ExRFd5b0I7MERBMkRmdW1EOzREQUFNO2tEQURGaHZFOzBEQUUwQjs0REFBQTs2QkFGMUJBOzBEQUVKc2dIOzREQUFRO2lDQWhFVFYsZUFTRDlsQzswREF3RFk7NERBQUE7YUEvQlpvbUMsU0E3QkEzdEksSUEyREUrdEksT0FGSXRnSDtTQUdDdWdIO1NBQUpDOzBEQUNEL3VEOzREQUFNO21EQURMK3VEOzBEQUtpQjs0REFBQTttREFMakJBOzBEQUtLOzREQUFBOzswREFEYzs0REFBQTs7d0RBRnhCLE9BaERFdG1KO2lFQWtERTs2Q0FyRUQwbEosU0FrRUNudUQsS0FIQXVkOztpQkFFS3V4Qzs7WUE0RkduN0YsTUF6Sk9xRDt5REF5SlEsT0FwSHpCMjNGO2tFQW9IeUI7dUNBN0p4QlIsU0E2SlN4NkY7O3lEQWtDZ0I7U0FEckIwekIsTUExTFlyd0I7U0EwTGZqaUQsSUExTGVpaUQ7MERBMkxTOzREQUFBO2dDQS9MekJtM0YsU0FTRDlsQztTQXNMYTJtQztTQUFWQzswREFFb0Q7O1NBRHBEbjVJOzJEQUNIO2NBekpBNDRJLHFCQXVKR08sV0FERGw2SSxHQXpMRitMOzswREE2TFc7NERBQUE7YUFsS1hpZ0IsR0FnS0dqckIsWUFEVWs1SSxnQkFEUjNuRSxLQXpMTHZtRTtTQTZMTW91STtTQUFINW5FO2dCQUFBQTt5REFHSDsyREFBQTthQTdKQW9uRSxxQkF1SkdPLFdBRERsNkksR0FJSW02STtTQUVBQztTQUFIcDVJOzBEQUlLOzREQUFBO2tDQXhNUG80SSxTQW9NRXA0SSxRQUZBdXhFO3dEQUlMLE9BbkxFNytFOzttRUFvTFc7MkNBSFJzTixTQUZBdXhFOztpQkFFRzZuRTs7WUFPRDM1QyxRQXZNWXgrQyxtQkF1TVp3K0M7OzthQUErQjQ1QyxTQXZNbkJwNEYsU0F1TUR6ckM7MERBQ1Y7NERBQUE7Z0NBNU1MNGlJLFNBMk1lNWlJOzswREFFRjsyREFBWjhqSTs2REFBWTtrQ0E3TWJsQixhQTJNZTVpSSxPQWxNaEI4OEY7MkRBcU1FaW5DO1lBMFpKdEIsa0JBeG1CR0csU0FvQkQzcUcsYUF1TEtneUQsT0F0TUwxMEY7MkRBMk1xQjs7YUFMTHlLOzhEQUtnQjttQ0FMM0JpcUY7OzBEQUlIKzVDOzREQUNGO2lDQWhOQ3BCOzJEQWlOYTs2REFBQTtjQWpMZHB0SCxHQStLRXd1SCxjQUZBRixrQkFGa0NELFFBR2xDRTtVQUdPRTtVQUFOQztpQkFBQUE7eURBQ0wsT0EvTEVobko7O29FQWdNVzs0Q0FSTitzRyxPQU1GaTZDOztrQkFBTUQ7O3lEQU9LO1NBREZ0eEMsT0FuTktsbkQ7MERBb05mMDRGOzREQUFZO2lDQXhOYnZCLFlBU0Q5bEM7MERBZ05Fc25DO1dBK1lKM0Isa0JBeG1CR0csU0FvQkQzcUcsYUF1TEtneUQsT0F0TUwxMEY7MERBcU5jOzREQUFBO2FBekxkMHRJLFNBdUxFa0Isa0JBRFV4eEMsTUFFVnl4QztTQUNPQztTQUFOenhDO2dCQUFBQTt3REFDTCxPQXhNRTExRzs7bUVBeU1XOzJDQWpCTitzRyxPQWVGMkk7O2lCQUFNeXhDOzt5REF0RnlCO1NBRDlCQyxPQS9IYTc0RjswREFnSWlCOzREQUFBOzZCQUQ5QjY0RjswREFDRkM7NERBQVE7aUNBcElUM0IsU0FTRDlsQzswREE0SFk7NERBQUE7YUFuR1pvbUMsU0E3QkEzdEksSUErSEVndkksU0FERUQ7U0FFR0U7U0FBSkM7MERBR2lCOzREQUFBO21EQUhqQkE7MERBR0s7NERBQUE7OzBEQURHOzs2REFBSztvREFGYkE7d0RBQ0wsT0FuSEV2bko7O21FQW9IVzs7O2lCQUZKc25KOzt5REF2QzBDO1NBSC9DcjdDLFNBdkZlMTlDOzBEQTBGZ0M7NERBQUE7Z0NBckZqRHF4RDswREFxRjhCOzREQUFBOzswREFBdEI7NERBQUE7a0NBSE4zVDt3REFDSixPQTlFRTI1QztrRUErRU07dUNBN0ZMRixTQTJGQ3o1Qzs7aUJBdEZGNXpGOzs7U0EyTlVtdkksU0E1Tk9qNUY7U0E0TlpnMkYsTUE1TlloMkY7U0E0TmYvWCxNQTVOZStYOztTQTZOZGs1RjsyREFDSDtjQTFMQXhCLHNCQXdMRXp2RyxLQTNORm4rQjs7eURBK05LO1VBcFZQaXNJLGFBZ0hHb0IsU0FnT0NsdkcsS0FBRyt0RyxLQUNGa0Q7MERBaUIyQjsyREFBQTtvQkFqQjNCQTtVQWdCSUM7NkRBQ0g7ZUFsTkpwdkgsR0FpTUdtdkgsb0JBREVsRCxLQTNOTGxzSTs7MERBOE9Nc3ZJO1lBRkNEOzJEQVFLOztVQUpMRTs2REFDSDtlQTlNSjNCLHlCQTJNTTBCLFlBbkJKbnhHLEtBM05GbitCOzswREF3UE13dkksWUFSQ0Q7MkRBU3dDO29CQTdCNUNIO1VBNkJJSzs2REFBZ0I7ZUE5TnZCeHZILEdBNk5NdXZILHFCQTdCRHRELEtBM05MbHNJOzswREEwUE0wdkk7NEJBQStCQzs4REFBbkI7Y0FBVUM7Y0FBUkM7K0RBQ2hCO2lFQUFBO21FQUFBO3VDQURpQ0Y7OytEQUNqQzs7OztvRUFDSTt3Q0FGWUUsUUFBUUQ7OzJCQUFSQyxTQUFpQkY7NERBSWxDOzJEQUdnQzs2REFBQTtpQ0FSNUJGOzJEQVFBOzZEQUFBO2lDQXJCQUo7MkRBc0JEOzZEQUFBO2lDQXRDSEQ7Ozs7Ozs7Ozs7NkRBMEMwQjthQUZlVTthQUFoQkM7YUFBZkM7OERBRWdCO2dFQUFBO2tDQUZoQkEsU0FBZUQ7OERBQ2xCRTtnRUFDRjtrQ0FaRlAsaUJBVXNDSTs4REFHdEM7Z0VBQUE7d0NBRklHO2FBTko3cEM7Ozs7O2NBQUFBLE1BTEFzcEMsY0FkQ0wsYUFhQUksZUE3QkpMOzswREE4Q2M7MkRBQUE7NkRBQUE7Y0EvT2pCbnZILEdBNk5NdXZILG1CQU9BcHBDLFdBcENEOGxDLEtBM05MbHNJO1VBOE5tQmt3STtVQUFoQkM7VUFBbUJDLGFBZ0JoQmQ7VUFoQmFlLE9BQUFIO1VBQVhJLGNBMEJGZDtVQTFCSGUsUUFBQUo7OzswREFFYzsyREFBQTs2REFBQTtjQXBNakJ6QyxhQWdNRzBCLGlCQURFbEQsS0EzTkxsc0k7VUFnT1l3d0k7VUFBTEM7MERBQ0RDLGFBRENEOzJEQU1LOztVQUpMRTs2REFDSDtlQWhNSi9DLHlCQThMTThDLGNBTkp2eUcsS0FLVXF5Rzs7VUFGVUosYUFHaEJNO1VBSGFMLE9BRVBHO1VBRkpGLGNBSURLO1VBSkpKLFFBRUlFO3lEQTZDTzswREFBQTs0REFBQTthQWxQZHh3SCxHQW1NUXF3SCxpQkExTlIvb0MsYUF1TlU0bkMsUUFHU2tCO1NBK0NWTztTQUFOQztnQkFBQUE7eURBR0g7MkRBQUE7YUE3T0FqRCx5QkEyTHNCd0MsY0FIcEJqeUcsS0FrRE95eUc7U0FFQ0U7U0FBUEM7Ozs2REFXd0I7bUNBL1IxQjFELFNBb1JFMEQsWUFGQUY7O3lEQWFEOzJEQUFBO3NDQTVEQ047d0RBeURMLE9BelFFNW9KO3FCQStQR2twSixrQkFFT0M7O3lEQWdCd0M7U0FGNUNscUUsTUE5Ulcxd0I7U0E4UmQ4NkYsTUE5UmM5NkY7MERBZ1NpQzs7U0FEL0MrNkY7MkRBQ0g7Y0E1UEFyRCxxQkEvQkFybUMsU0F5Ukd5cEMsS0E3UkhoeEk7OzBEQWdTbUM7bUJBRmhDaXhJOzBEQUVTOzREQUFBO2FBclFaaHhILEdBbVFHZ3hILGtCQURHcnFFLEtBN1JONW1FO1NBZ1NPa3hJO1NBQUpycUU7Z0JBQUFBO3lEQUVIOzJEQUFBO2FBL1BBK21FLHFCQS9CQXJtQyxTQXlSR3lwQyxLQUdJRTtTQUNDQztTQUFMQzswREFJaUI7OzZEQUFDO21DQTFTcEIvRCxTQXNTRStELFFBREF2cUU7OzBEQUtLOzREQUFBOzt3REFGVixPQXJSRWwvRTtxQkFnUkdzcEosZ0JBR0tFOzt5REF5REY7U0FEYUUsU0ExVkZuN0Y7U0EwVkppK0MsT0ExVklqK0M7U0EwVlhvN0YsUUExVldwN0Y7MERBMlZmcTdGO1dBeVFKckUsa0JBeG1CR0csU0FvQkQzcUcsYUEwVU00dUcsT0F6Vk50eEk7eURBMlZGLFdBRlFzeEk7O2FBR0Z2OEM7MERBQVk7OzREQUFBO2dDQWpXZnM0QyxTQWlXR3Q0QzsyREFTdUI7NERBQUE7OERBQUE7a0NBMVcxQnM0QyxTQThWS2lFOzREQVlBRTs4REFBUzt5Q0FaRnI5QzsyREFhWCxPQWJXQTs7Ozs2REFja0IsaURBQUE7O2dFQUFBO3VDQUZ6QnE5Qzs2REFFVTsrREFBQTtpQ0FYWno4Qzs4REFnQkU7K0RBQUE7O2tFQUFROytDQWhCVkE7aUJBU0V5OEM7K0RBTUVDO2lFQUNGOzsrREFFNEI7aUVBQUE7c0NBckI1Qkg7K0RBb0JFSTtpRUFDRjtxQ0FuWExyRSxTQWlXR3Q0QyxjQWVJMDhDO2NBUGNFLGFBU2REO2NBVEtFLFlBU0xGO2NBVEhHLFdBT0dKOzs7OzREQU1LOzZEQWJSSzsrREFhUTtvQ0F0WFp6RSxTQThWWWw1Qzs2REF5QjZCOytEQUFBO29DQXpCcENtOUM7NkRBV2dCUzsrREFjUjttQ0F2WGIxRSxTQWlXR3Q0QyxjQVFDKzhDO1lBQWlCSCxhQUFBSTtZQUFUSCxZQXpXWnZFO1lBeVdJd0UsV0FBQUM7OzJEQStCSSxpREFBQTs7OERBQUE7a0NBeFlSekUsU0F5V0l3RTs7NERBZ0N3QztZQUFwQzV5RDs2REFBb0M7K0RBQUE7b0NBM0NoQ2tWO1lBeUNUNjlDOytEQUVZO21DQWhDTUwsWUFSbEI1OEMsY0F3Q0s5Vjs7ZUFGTCt5RCxhQTlCa0JMOzBEQW9DcEI7MkRBQUE7NkRBQUE7ZUE3V0YxeEgsR0F1V0kreEgsZ0JBOVhKenFDLGFBcVZtQjhwQyxRQUNqQkU7V0E2Q3VDVTs7V0FBdkIvNEM7V0FBWmc1Qzs0REFHRkM7OERBQVk7a0NBdENYTixVQVhDUCxPQThDWXA0Qzs0REFJZGs1QzthQWdITm5GLGlCQXZKZTJFLGNBclZibHZHLGFBMFVheXhELE1BOEM0Qjg5QzswREFLekMsT0E5WEF0cUo7dUJBNFhJd3FKLFlBSEVELFVBSUZFOzs7d0RBT0Y7eURBQUE7MkRBQUE7YUF2WEZueUgsR0FoQ0NvdEgsYUFTRDlsQyxhQXFWbUI4cEMsUUFDakJFO1NBdUR1Q2M7O1NBQXZCejdDO1NBQVpnUDswREFFRjBzQztXQXdHTnJGLGlCQWhnQkdJLFlBb0JEM3FHLGFBMFVheXhELE1Bd0Q0QmsrQzt3REFHekMsT0F0WUExcUo7cUJBbVlrQml2RyxVQUFaZ1AsUUFFRjBzQzs7eURBelA4QjtTQUQxQmo2SSxNQTFKUzY5QztTQTBKYjhxRCxLQTFKYTlxRDswREEySmlCOzREQUFBO2lDQUQ5QjhxRDswREFDRnV4Qzs0REFBVTtpQ0EvSlhsRixTQVNEOWxDOzBEQXVKWTs0REFBQTthQS9IWm1tQyxTQThIRTZFLGNBREV2eEMsSUF6SkpoaEc7U0EySk93eUk7U0FBSkM7MERBQ2lCOzREQUFBO2dDQWpLbkJwRixTQWdLRW9GO1NBQ08vNUM7U0FBUEM7MERBQ1U7NERBQUE7YUFqSWIrMEMsYUFnSUcvMEMsYUFIS3RnRyxLQUVEbTZJO1NBRUNFO1NBQUxuNkk7eURBRUg7MkRBQUE7K0JBRkdBO3dEQUVIOzBEQUNrQzsyREFBQTs2REFBQTs7Ozs7OERBQTlCO2tDQXJLSDgwSSxTQWlLRTEwQzs7O1lBRURpVyxrQkFGQ2pXLGFBQU9EO3dEQU1aLE9BcEpFL3dHO2lCQWdKRWluSDtrRUFJZTs0Q0FQZDZqQyxhQUVBbDZJO2lCQUFLbTZJOzt5REFRSTtTQUZKdCtDLFNBcEtTbCtDO1NBb0tieThGLE9BcEthejhGO1NBcUtmMDhGOzBEQUNVOzREQUFBO2FBeklabEYsU0F3SUVrRixpQkFERUQsTUFuS0ozeUk7U0FxS082eUk7U0FBSkM7U0FDR0MsT0FxVlI5RixpQkFoZ0JHSSxZQW9CRDNxRyxhQW9KUTB4RCxRQUVEeStDOzBEQUVvQjs0REFBQTtnQ0E1SzFCeEYsU0EwS0V5RjtTQUVhRTtTQUFiQzswREFDRHQwRDs0REFBSztnQ0E3S04wdUQsU0F3S09qNUM7d0RBTVYsS0FGSzYrQzswREFLSyxPQTlKUnRySjtzQkF5SmdCcXJKLFlBRmJGLFNBQ0dDO1lBSURHLFNBSEZELHVCQUZBSDt3REFNSCxPQTdKQW5ySjs7bUVBNkplO3VDQUhiZzNGLElBRUd1MEQsUUFIV0Y7O2lCQURWRDs7eURBUzRCO1NBRHJCamdHLE9BL0tJb0Q7U0ErS1JpOUYsT0EvS1FqOUY7MERBZ0xpQjs0REFBQTtpQ0FEekJpOUY7MERBQ1BDOzREQUFVO2lDQXBMWC9GLFNBU0Q5bEM7MERBNEtZOzREQUFBO2FBcEpabW1DLFNBbUpFMEYsZ0JBRE9ELE1BOUtUbnpJO1NBZ0xPcXpJO1NBQUpDOzBEQUNpQjs0REFBQTtnQ0F0TG5CakcsU0FxTEVpRztTQUNPQztTQUFQQzswREFDREM7NERBQVc7NkJBSkEzZ0c7MERBS1g0MEQ7NERBQVM7Z0NBeExWMmxDLFNBdUxDb0csVUFEQ0Q7MERBR0RuTDs0REFBaUI7aUNBTk52MUYsTUFLWDQwRCxRQUZRNnJDOzBEQUlSRzs0REFBUTtpQ0FIUkQsVUFDQS9yQzswREFHWTs0REFBQTthQXpKZGltQyxTQW1KTzBGLE9BS0xLLFNBUFc1Z0c7U0FRSjZnRztTQUFOQzswREFDd0I7NERBQUE7bURBRHhCQTswREFDREM7NERBQWE7O3dEQUNqQixPQS9LRXRHO2lCQTJLRWxGO2tFQUlnQjs0Q0FSZmlMLGFBT0RPO2lCQURPRjs7eURBbUhNO1NBRE52dEUsS0F6U1Fsd0I7U0F5U1ptd0IsS0F6U1lud0I7U0F5U2hCNDlGLEtBelNnQjU5RjswREEwU2Y2OUY7NERBQWE7c0RBRFYxdEUsUUFBSUQ7MERBRUs7NERBQUE7YUE5UWRzbkU7OztrRUE4UTJCOzs7YUFGMUJvRzthQXhTRDl6STtTQTBTU2cwSTtTQUFOQzswREFDVzs0REFBQTthQS9RZHZHLFNBeEJBbm1DLGFBb1NLbGhDLElBRUkydEU7U0FDQUU7U0FBTnJoSjswREFDVTs0REFBQTthQWhSYjY2SSxTQXhCQW5tQyxhQW9TU25oQyxJQUdBOHRFO1NBQ0RDO1NBQUxDOzBEQUdLOzREQUFBO3NDQUxMSCxhQUNBcGhKLGFBQ0F1aEo7d0RBQ0wsT0EvUkV6c0o7a0VBZ1NNOzttQkFuVEwwbEo7dUJBZ1RFeDZJLGFBQ0F1aEo7bUJBSERMOztpQkFHTUk7O3lEQXZKSTtTQUROenRFLE9BckpXeHdCO1NBcUpmeXdCLE9BckplendCOzBEQXNKTDs0REFBQTthQXpIWnczRixjQXdIRS9tRSxNQXBKRjNtRTtTQXFKT3EwSTtTQUFKcnRFOzBEQUNTOzREQUFBO2FBMUhaMG1FLFNBeEJBbm1DLGFBZ0pNN2dDLE1BQ0MydEU7U0FDQUM7U0FBSnZ0RTswREFDMEI7NERBQUE7c0NBRjFCQyxhQUNBRDt3REFDTCxPQXpJRXAvRTtxQkF3SUdvL0UsZ0JBQUl1dEU7O3lEQWZJO1NBRFJudEUsTUF2SWNqeEI7MERBd0lOOzREQUFBO2FBM0dYdzNGOzs7a0VBMkd3Qjs7O2FBRHJCdm1FO2FBdElIbm5FO1NBdUlNdTBJO1NBQUhudEU7Z0JBQUFBO3dEQUNMLE9BMUhFei9FOzttRUEwSGE7OztpQkFEUDRzSjs7bUJBeElXcitGOzswREEySUg7VUFEZXMrRixTQTFJWnQrRjtVQTBJQ3UrRjsyREFDSjs2REFBQTtjQTlHZC9HLFNBeEJBbm1DLGVBcUlrQmt0QyxRQXpJbEJ6MEk7VUEwSVMwMEk7VUFBTkM7MkRBQ1c7NkRBQUE7Y0EvR2RqSCxTQXhCQW5tQyxhQXFJNkJpdEMsUUFDcEJFO1VBQ0FFO1VBQU5DOzJEQUdLOzZEQUFBO3VDQUpMRixlQUNBRTt5REFDTCxPQTlIRWx0SjtzQkE2SEdrdEosa0JBQU1EOzt5REFPSztTQURHRSxTQWxKQTUrRjswREFtSkg7NERBQUE7YUF0SGR3M0YsU0F4QkFubUMsYUE2SWlCdXRDLFFBakpqQjkwSTtTQWtKUyswSTtTQUFOQzswREFDNEI7NERBQUE7c0NBRDVCQTt3REFDTCxPQXJJRXJ0SjtxQkFvSUdxdEosa0JBQU1EOzt5REExR0U7U0FGRnp0RSxNQXZDUXB4QjswREF5Q047NERBQUE7YUFaWHczRixTQXhCQW5tQyxhQWtDU2pnQyxLQXRDVHRuRTtTQXdDTWkxSTtTQUFIenRFO3dEQUNMLE9BM0JFNy9FO3FCQTBCRzYvRSxVQUFBQSxTQUFHeXRFOzt5REE2Qk07U0FETHo1SSxLQXJFVTA2QztTQXFFZHo2QyxLQXJFY3k2QzswREFzRUw7NERBQUE7YUF6Q1p3M0Y7O2lFQXlDcUI7c0NBMUVwQkwsU0FTRDlsQzs7YUFnRUc5ckc7YUFwRUh1RTtTQXFFT2sxSTtTQUFKaC9IOzBEQUNTOzREQUFBO2FBMUNadzNIOztpRUEwQ3FCO3NDQTNFcEJMLFNBU0Q5bEMsUUFpRUdyeEY7O2FBREkxYTthQUNBMDVJO1NBQ0FDO1NBQUpqMUg7MERBR0s7NERBQUE7c0NBSkxoSyxhQUNBZ0s7d0RBQ0wsT0F6REV2NEI7O21FQTBEVzsyQ0FIUnV1Qjs7aUJBQ0lpL0g7O3lEQU9FO1NBRElsdUUsT0E3RUkvd0I7U0E2RVJneEIsT0E3RVFoeEI7MERBOEVmay9GOzREQUFPO2lDQWxGUi9ILFNBU0Q5bEM7MERBMEVFOHRDOzREQUFNO3NEQUZDbnVFLFVBQUlEOzBEQUdEOzREQUFBO2FBbkRaeW1FLFNBaURFMEgsYUFET2x1RSxNQTVFVGxuRTtTQStFT3MxSTtTQUFKNXRFOzBEQUNTOzREQUFBO2FBcERaZ21FLFNBaURFMEgsYUFEV251RSxNQUdOcXVFO1NBQ0FDO1NBQUo5dEU7MERBR0s7NERBQUE7c0NBSkxDLGFBQ0FEO3dEQUNMLE9BbkVFOS9FO2tFQW9FTTs7bUJBdkZMMGxKO3VCQW9GRTNsRSxhQUNBRDttQkFGRDR0RTs7aUJBRUtFOztZQStCSmxrSixLQWhIYzZrRDtpQkFnSGQ3a0Q7YUFmZXcyRSxPQWpHRDN4QjswREFpR1MsR0FuR3pCbzNGO3FCQW1HaUJ6bEU7Ozs7Ozs7Ozs7Ozs7OztzQkFBQUE7OzJEQUNKOzREQUFaSTtpQkFEZ0JKOzREQVdoQjJ0RTs4REFBUTs7NERBQ1JDOzhEQUFTOzs0REFDQTs4REFBQTtlQWpGWC9ILGFBK0VFOEgsZUFWQXZ0RSxNQWpHRmpvRTtXQTZHTTAxSTtXQUFIdHRFOzBEQUNMLE9BaEdFemdGO3VCQThGRTh0SixXQUNDcnRFLFNBQUdzdEU7Ozt5REFHYztTQURiQyxPQWhIVXovRjswREFpSEc7V0F4S3RCeTJGLGFBdUtLdDdJO1NBQ091a0o7U0FBUEM7MERBQ1E7NERBQUE7YUFyRlhuSSxhQW9GR21JLGVBRElGLE1BL0dQMzFJO1NBaUhNODFJO1NBQUhDO3dEQUNMLE9BcEdFcHVKO3FCQWtHVWl1SixXQUNQRyxTQUFHRDs7eURBR2lCO1NBRFhudUUsT0FwSEt6eEI7U0FvSFQweEIsT0FwSFMxeEI7U0FvSGI1a0QsT0FwSGE0a0Q7MERBcUhNO1dBbk16QncyRixjQWtNTXA3STtTQUNTMGtKO1NBQUxqM0Q7U0FBTEM7MERBQ1M7NERBQUE7YUF6RlowdUQsYUF3RkcxdUQsV0FES3BYLE1BbkhSNW5FO1NBcUhPaTJJO1NBQUpsdUU7MERBQ1M7NERBQUE7YUExRloybEUsYUF3RlEzdUQsV0FESXBYLE1BRUxzdUU7U0FDQUM7U0FBSnB1RTt3REFDTCxPQXpHRW5nRjtxQkFzR2FxdUo7a0VBR2lCOzRDQUYzQmp1RSxhQUNBRDtpQkFBSW91RTs7d0RBR1Q7U0FEV0MsU0F6SFFqZ0c7eURBMEhuQjs7d0RBQUEsT0FoSEVxM0Y7a0VBaUhNOytEQUZHNEk7O2lCQXhIVG4ySTs7eURBbVRlO1NBREpvMkksUUFuVE1sZ0c7U0FtVGJrbUQsUUFuVGFsbUQ7MERBb1RGOzREQUFBO2FBdlJmdzNGLGNBc1JJdHhDLE9BbFRKcDhGO1NBbVRVcTJJO1NBQVBDOzBEQUNVOzREQUFBOzhCQUZGRjtTQUVKRztTQUFKL3hIOzBEQUNEZ3lIOzREQUFhO2tEQURSRDswREFPRzttQkFSUEQ7MERBUU87O1NBTFBHO1dBOWJMM0s7OERBZ2NJO2dCQXJSRjhCO2NBaVJHcHBIO2NBRE82eEg7OzBEQWFSSzs0REFBUzttREFWUkQ7eURBZUQsY0FsQlFKOzsyQkFnQkUxb0gsR0FBR3dnQjs0REFBYjthQUFNbnVDO2FBQUp5dEI7OERBQ0E7Z0VBQUE7aUJBelNKeE4sR0F3U2VrdUIsU0EvVGZvNUQsYUErVFk1NUUsR0FBSjN0Qjs2REFDSjs7c0VBQTBCO3NCQUFNQTtzQkFBSDJ0QjtzRUFBVTs4RUFBQzsyQ0FEeENGLFFBQzZCRTs2QkFBRzN0QjtxRUFBcUI7OzREQUFBO3lEQUZ6RDsyREFBQTswQ0FkT3UySSxNQVlMRztTQUNLQztTQUFKQzswREFRREM7NERBQVE7bURBUlBEOzBEQVU4Qjs0REFBQTttREFWOUJBOzBEQVVPOzREQUFBO2tDQWhWVHZKO3lEQStVQ3lKOzJEQUNGO29DQVhFSjt5REFpQkE7MkRBQUE7OEJBN0JDbHlILElBc0JEc3lIO1NBR0lDO1dBcmRSakw7OytEQXVkSTtnQkFBS2xtQztnQkFBSDN4RztpRUFDMkM7MEJBN0I1Q3FpSjtnRUE2QkMsd0RBQUE7d0JBN1NKMUksVUE0U09ob0MsZUFBSDN4RzsrREFDaUU7O2NBZjlEMGlKOzswREFxQmE7NERBQUE7NkJBbkNqQkwsZ0JBdUJEUTswREFZTTs0REFBQTs7d0RBRlYsT0F0VUVudko7a0VBdVVNO3VDQTFWTDBsSixTQThVQ3dKLE9BcEJBTDs7aUJBd0JJTzs7O3lEQS9PSztTQUZJcHBILElBN0ZFdW9COzBEQStGTjs0REFBQTthQWxFWHczRixTQXhCQW5tQyxhQXdGZTU1RSxHQTVGZjN0QjtTQThGTStzSTtTQUFIaG5FO3dEQUNMLE9BakZFcCtFO3FCQWdGR28rRSxTQUFBQSxRQUFHZ25FOzt5REEvQ0s7U0FGRDN3SCxLQTlDTzg1QjtTQThDWC81QixLQTlDVys1QjtTQThDZDh2QixNQTlDYzl2QjswREFnRE47NERBQUE7YUFuQlh3M0YsYUFpQk12eEgsVUFBSDZwRCxLQTdDSGhtRTtTQStDTWczSTtTQUFIOXdFO3dEQUNMLE9BbENFditFO3FCQStCVXkwQixLQUVQOHBELFFBQUc4d0U7O21EQXdXWDtZQUNHaEssaUJBRUdpSyxjQUNBOW9HLEtBQ0F5M0QsUUFDQXhqRSxXQUNBdnBCO29EQUNELEdBRENBO1NBQWFDLE1BQWJELFFBQUE0a0IsT0FBYTNrQjs7U0FBYjJrQjtvREFDRDtxREFBTXlZO0tBQUwxdUQ7b0RBQ0QsZ0JBQUF3WTtjQUdBdXRJLElBQVEzK0IsTUFBT3pnRSxLQUFLbnVDO3VEQUFNO3dEQUVGOzBEQUFBOzt3REFBakI7MERBQUE7dUNBRmFBOzs7Ozs7OzZDQUllazNJOzs7Y0FETXY0RCwwQkFBQUE7OztxQkFDTnU0RDthQUhqQzFNOzs7O1dBQUFBOztzREFRRixnREFBQTtPQURFeHFHO3lEQUNGOzs7V0FUZW1PO1dBUGR5M0Q7V0FRQzRrQztXQU5EL3NHO1dBREEyRTtlQU1Pd3NFO3NEQWtCVjtjQVZJNXVFO2NBNWlCSityRyxTQWdpQkd2a0osU0FZQ3c0QyxPQVJrQmhnQztxREFtQnZCO2NBQ0c2dEksT0FBU2ovQjt1REFBUSxPQXBCakIyK0I7ZUFvQlMzK0IsTUE1QlJ6Z0UsS0FLRG51QztzREF1Qm9DO3NEQUN4Qjt1REFBQTs7MERBQUM7Ozt1REFBYjBpQzt5REFBWTs0QkEzQlhOOztpQixPQUxINHFHO2VBRUdpSzs7Y0ErQkRoM0g7dURBRFk7O2tCLGtCQTVCWDJsRixRQTRCRGxqRTs7cURBRUo7c0RBQUE7UUFoQ0t1MEc7dURBZ0NERTtxREFDSixTQUFJQyxTQUFZanBHLEtBQVludUM7c0RBQzFCLGdEQUlFO2tCQUxZbXVDLFFBQVludUM7MkJBRVIydEIsR0FBRzhQO3VEQUFuQjtRQUFZejlCO1FBQUxrL0U7UUFBTC93Qzt3REFDQTswREFBQTtZQUxGbHVCLEdBSUVrdUIsU0FBaUIxUSxPQUFIOVAsSUFBSjN0Qjt1REFDVjtpRUFDRztpQkFBU0E7aUJBQU5nZ0M7a0VBQXdCO29FQUFBO2lDQUZ6QmsvQyxTQUVDbC9DO2lFQUFhO3dCQUFiQTs7d0JBQU1oZ0M7Z0VBQXNDOzt1REFBQTtzREFDcEQsdURBQUE7O3FEQUNEO3FEQUNIO2NBbkNVazJDO3NEQW1DVixhQW5DVUE7Z0JBd0JOMjNGOzttRUFnQnVCO3VDQWJ2QnNKO2dCQUhBdEo7O21FQW1Da0I7dUNBaENsQnNKO3FEQVFKLE9BbkNVamhHOztZQXVDQXRkLFFBdkNBc2Q7eURBdUNpQixPQWZ2QjIzRjtxQkFlTWoxRzs7WUFIRXF5RCxNQXBDRi8wQyxTQXFDQTdlLE1BcGRSODFHLE1BMmFHaC9GLEtBNkJEekwsYUF4QkExaUMsR0FtQ1FpckY7d0RBRVYsT0FsQ0VzaUQ7b0JBUkNwL0YsS0F5Q0s5Vzs7eURBSVMsT0FqQmZ3Mkc7O21FQWlCb0I7Ozt5REFDSCxPQWxCakJBOzttRUFrQnNCOzs7eURBQ04sT0FuQmhCQTs7bUVBbUJxQjs7O3lEQUNILE9BcEJsQkE7O21FQW9CdUI7Ozt5REFFZjtTQURGcnBILEtBN0NBMHhCOzBEQThDSnVtRDs0REFBTTtrREFERmo0RTswREFFMEI7NERBQUE7NkJBRjFCQTswREFFSnVwSDs0REFBUTtpQ0FuRFQ1L0YsV0FHQTFROzBEQWlEaUI7NERBQUE7YUFwQmxCMjVHLFNBaENDanBHLEtBS0RudUMsSUE0Q013a0IsSUFFSnVwSDtTQUNXaEI7U0FBTDd0RDtTQUFMdndDOzBEQUV1Qjs0REFBQTtnQ0F2QjFCd29HO3dEQXNCRixPQTdDRTVKO2tFQThDTTs2Q0FGSDUrRixPQUFLdXdDLEtBRk51ZDtpQkFFQzl0RDtpQkFBVW8rRjs7WUErQkhsNkYsTUEvRUpxRDt5REErRW1CLE9BdkR6QjIzRjtrRUF1RHlCO3VDQW5GeEIxL0YsS0FtRlMwRTs7eURBeEJpQjtTQURwQnIzQyxLQXRERDA2QztTQXNESHo2QyxLQXRER3k2QzswREF1RHFCOzs2REFBQTtrQ0EzRDFCL0gsS0FHQTFROzBEQXdEVzs0REFBQTthQTdCWnhkLEdBOUJDa3VCLFdBMERFMXlDLEtBckRIdUU7U0FzRE9nM0k7U0FBSjlnSTswREFFbUI7OzZEQUFBO2tDQTdEckJpNEIsS0FHQTFRLE1Bd0RFdm5CO3lEQUVIOzJEQUFBO2FBL0JBK0osR0E2QkcvSixlQURJMWEsS0FDQXc3STtTQUNBaEo7U0FBSjl0SDtnQkFBQUE7d0RBRUwsT0F0REVxdEg7O21FQXNEYTsyQ0FIVnIzSDs7aUJBQ0k4M0g7O3dEQVlMO1NBUkF2akksT0E1REl5ckM7eURBb0VKOzs7OERBQVk7O3lEQUpabWhHOzJEQUNGO2tDQXJFQ2xwRyxLQUdBMVE7MERBdUVDdTBEOzs7YUFWQXZuRjs4REFVZ0M7O2FBTmhDNHNJOzBEQU95Qzs0REFBQTtnQ0EzRTFDbHBHLEtBMEVDNmpEO3dEQUNKLE9BbkVFdTdDOzttRUFtRWE7dUNBNUNiNEo7O2lCQTFCQW4zSTs7eURBd0VrQztTQUQ5QnkySSxPQXhFRXZnRzswREF5RTRCOzREQUFBOzZCQUQ5QnVnRzswREFDRnpIOzREQUFRO2lDQTdFVDdnRyxLQUdBMVE7MERBMkVpQjs0REFBQTthQTlDbEIyNUcsU0FoQ0NqcEcsS0FLRG51QyxJQXVFSXkySSxNQUNGekg7U0FDV1o7U0FBTDZCO1NBQUxqN0M7d0RBQ0wsT0F2RUV1NEM7O21FQXVFYTsyQ0FETDBDO2lCQUFMajdDO2lCQUFVbzVDOzt5REFHRjtTQURObjZJLElBNUVDaWlEOzBEQTZFSzs0REFBQTthQW5EWGoyQixHQTlCQ2t1QixTQUdBMVEsT0E2RUl4cEMsSUEzRUwrTDtTQTRFTXF1STtTQUFIcjVJO3dEQUNMLE9BMUVFdTRJO3FCQXlFR3Y0SSxVQUFBQSxRQUFHcTVJOzt5REFJNEI7U0FEN0JoMkksTUFoRkM2OUM7U0FnRkw4cUQsS0FoRks5cUQ7MERBaUY0Qjs0REFBQTtpQ0FEakM4cUQ7MERBQ0N1eEM7NERBQVU7aUNBckZYcGtHLEtBR0ExUTswREFtRlc7NERBQUE7YUF4RFp4ZCxHQTlCQ2t1QixTQXFGQ29rRyxVQUREdnhDLEtBL0VEaGhHO1NBaUZPNnVJO1NBQUo0RDswREFDaUI7NERBQUE7Z0NBdkZuQnRrRyxLQXNGRXNrRztTQUNPLzVDO1NBQVBDOzBEQUNVOzREQUFBO2FBMURiMTRFLEdBOUJDa3VCLGFBdUZFd3FELFNBSEV0Z0csTUFFRXcySTtTQUVDQztTQUFMdjJJO3dEQUNMLE9BakZFZzFJO3FCQStFVTcwQyxTQUNQbmdHLFVBQUt1Mkk7O3lEQUdLO1NBRFA1N0ksTUF0RkFnakQ7U0FzRkhqaEQsTUF0RkdpaEQ7MERBdUZPO1dBS2YrMkYsaUJBaEdHOStGLFFBNkJEekwsYUE2RE14dkMsS0FyRk44TTtTQXNGUXd1STtTQUFMOEk7MERBQ3VCO21CQUR2QkE7MERBQ1E7NERBQUE7YUE5RFhyM0gsR0E5QkNrdUIsV0EwRkVsNUMsTUFDS3U1STtTQUNGRTtTQUFIdndHO3dEQUNMLE9BckZFb3ZHO3FCQW1GRytKLFdBQ0FuNUcsUUFBR3V3RztzREFHWDttREFBQTtZQUNHekIsaUJBRUc5K0YsS0FDQXQxQixLQUNBdXBCO29EQUNELEdBRkN2cEI7U0FBUUMsTUFBUkQsUUFBQXN3SCxVQUFRcndIOztTQUFScXdIO29EQUVEO3FEQUFNanpGO0tBQUwxdUQ7b0RBQ0QsZ0JBQUF3WTtjQUdBdXRJLElBQU12dEk7dURBQUssaURBQ0Y7T0FBUGdnQzswREFBTztzQ0FSUm1PLEtBRUEvTCxXQURBK21HO3NEQVFIO2NBRElucEc7Y0F0b0JKK3JHLFNBaW9CR3ZrSixTQUtDdzRDLE9BREloZ0M7cURBR1Q7c0RBQ2U7dURBQUE7OzBEQUFDOzs7dURBQWIwaUM7eURBQVk7MkJBVFhOOztpQixPQUpINnFHLGlCQUVHOStGOztjQVlEbHVCO3VEQURZO2tCLGdCQUFaeWlCOztzREFFSyxpREFBQTtNQUFMZ3JHLE9BREF6dEg7cURBR0o7Y0FaVWkyQjtzREFZVixPQVpVQTs7bUJBQUFBOzs7O2VBYWUrMEMsZ0JBQ2Y1ekQsTUE5aEJSODFHLE1BNmdCR2gvRixLQVdEekwsYUFQQTFpQyxHQVlxQmlyRjsyREFFdkIsT0FYRXNpRCxJQVVNbDJHOzs7Ozt5REFTUixPQW5CRWsyRyxJQUhBdnRJOzswREEwQk07VUFERW9jLEtBMUJGODVCO1VBMEJGLzVCLEtBMUJFKzVCOzJEQTJCSjYyRjs2REFBSTtlQWpCTlcsS0FnQkl2eEgsS0F6QkpuYzs7MkRBMkJFZzNJOzZEQUFJO2VBbEJOdEosS0FnQlF0eEgsS0FDTjJ3SDs7eURBRUosT0F6QkVRLElBd0JFeUo7OzBEQXFCUztVQURUeDRELFdBaERJdG9DOzJEQWlESnFoRzs2REFBUztrQ0FwRFZwcEc7MERBd0RDLFVBcERGbnVDOzBEQW1ERTs7d0IsT0FnRUp3M0k7c0JBdkhHcnBHLEtBV0R6TCxhQXlDRTYwRzs7VUFDQ3ZKOzREQUNIOzBDQUhFeHZEOzt5REFRSixPQXBERSt1RCxJQThDR1M7OzBEQW5CRztVQURIOXNILEtBOUJHZzFCOzJEQStCSms0RjtZQXZxQkp0QyxNQWtwQkU0QixNQW9CR3hzSCxJQTdCSGxoQjt5REErQkYsT0E1QkV1dEksSUEyQkVhOzswREFHUTtVQURMbG1FLE9BakNDaHlCO1VBaUNMaXlCLE9BakNLanlCOzJEQWtDSnlpRDs2REFBUTtrQ0FyQ1R4cUQsS0FvQ0krNUI7OzswREFFUDttQkFyQ0dpaEUsOEJBQUFBOztZQXVDb0JDLFNBdkNwQkQ7WUF1Q2lCMkYsTUF2Q2pCM0Y7WUFxQ0NzTzs7ZUFFZ0IzSTtnRUFDTzt3Q0FKdkJuMkMsT0FHbUJ5d0M7OzsyREFLakI7NERBQUE7O2NBUkZ6d0M7K0RBUWU7O1dBUGY4K0M7OzsrREFPRTs7OzBEQUdFOzJEQUFKcEo7NkRBQUk7ZUFwQ05wdUgsT0EwQkV3M0gsVUFGRHR2RSxPQWhDRG5vRTs7MkRBNkNFNnVJOzZEQUFJO2VBckNONXVILFFBd0JLaW9ELE9BWUhtbUU7O3lEQUVKLE9BM0NFZCxJQTBDRXNCOzthQStCQW42QyxRQTdFSXgrQyxtQkE2RUp3K0M7OzJEQUVtQjtXQUZZQyxVQTdFM0J6K0M7V0E2RU96ckM7NERBRVE7O2NBRlJBOytEQUVtQjtvQ0FGOUJpcUY7OzJEQUNBZ2pEOzZEQUNGO2tDQWxGQ3ZwRzsyREFtRkM4Z0c7YUFyRkpoQyxpQkFtRkl5SyxlQXRFRmgxRyxhQXFFaUNpeUQsU0E1RWpDMzBGOzREQXdGRWt3STthQVVKaEQsa0JBdEdHLytGLEtBV0R6TCxhQXFFRWd5RCxPQUdBdTZDOzBEQVVKLE9BdEZFMUIsSUFxRkUyQzs7eURBSUY7VUFGU3Q3QyxRQTNGSDErQzswREE0RkpzNEY7WUFqR0p2QixpQkFFRzkrRixVQVdEekwsYUFtRlNreUQsT0ExRlQ1MEY7MkRBOEZFMHVJO1lBSUp4QixrQkF0R0cvK0YsS0FXRHpMLGFBcUVFZ3lELE9BZUE4NUM7eURBSUosT0E1RkVqQixJQTJGRW1COzthQXRDRzc1QyxVQXpEQzMrQyxtQkF5REQyK0M7OzJEQUVnQjtXQUZlQyxVQXpEOUI1K0M7V0F5RFUwOUM7NERBRUs7O2NBRkxBOytEQUVnQjtvQ0FGM0JpQjs7MkRBQ0g4aUQ7NkRBQ0Y7a0NBOURDeHBHOzJEQStEQzJpRzthQWpFSjdELGlCQStESTBLLGlCQWxERmoxRyxhQWlEb0NveUQsU0F4RHBDOTBGOzREQW9FRXd3STthQThCSnRELGtCQXRHRy8rRixLQVdEekwsYUFpREtteUQsU0FHSGk4QzswREFVSixPQWxFRXZELElBaUVFaUQ7O3lEQUlGO1VBRll2N0MsVUF2RU4vK0M7MERBd0VKbTZGO1lBN0VKcEQsaUJBRUc5K0YsVUFXRHpMLGFBK0RZdXlELFNBdEVaajFGOzJEQTBFRTR3STtZQXdCSjFELGtCQXRHRy8rRixLQVdEekwsYUFpREtteUQsU0FlSHc3Qzt5REFJSixPQXhFRTlDLElBdUVFcUQ7O2FBbkRDenNKLElBeEJHK3hEOzBEQXlCUyxPQXJCZnEzRjttRUFxQmU7cUJBZmZHLEtBY0d2cEosSUF2Qkg2Yjs7O3NEQW1CUSxPQWhCUnV0SSxJQUhBdnRJLG1EQWlHTDttREFBQTtZQUNHa3RJLGtCQUNFLytGLEtBQU0vTCxXQUFXc3lELE9BQWlDMTBGO29EQUFwRDtLQUF5QmsyQyxPQUFOdytDO0tBQUNsdEcsTUFBRGt0RzthQUVqQjY0QyxJQUFNdnRJO3NEQUFLLGlEQUNGO01BQVBnZ0M7eURBQU87K0JBSFEwMEQsT0FBakJ2bUQsS0FBTS9MO3FEQUlSO2FBRElwQzthQXh1QkorckcsU0FxdUJvQnZrSixTQUdoQnc0QyxPQURJaGdDO29EQUdUO3FEQUNlO3NEQUFBOzt5REFBQzs4QkFOSTAwRjs7c0RBTWpCaHlEO3dEQUFZOzBCQU5OTjtvREFPVjthQVAyQjhULDJCQUFBQTtTQVFmKzBDLE1BUmUvMEMsU0FTakI3ZSxNQTduQlI4MUcsTUFvbkJFaC9GLEtBTUF6TCxhQU5rRDFpQyxHQVExQ2lyRjtxREFFVixPQVJFc2lELElBT01sMkc7O3FEQUlFLE9BWFJrMkcsSUFGa0R2dEk7bURBZXZEO1lBQ0d3M0ksb0JBRUdycEcsS0FDQS9MLFdBQ0FtMUcsZUFFREs7b0RBTEY7S0FJTTlrRDtLQUFIOXlGO2FBR0RpZ0IsR0FBS2twSDtzREFBVyxpREFBb0M7Z0JBQS9DQTtxREFERjtpQixPQWhJTDhELGlCQTJIRzkrRixVQUNBL0w7cURBSzJEO29EQUNoRSxTQUhJdzFHO3NEQUtNO01BRENDLFFBSlBEO3VEQUtFWjt5REFBSTtXQUhOLzJILFVBSkNzM0gsU0FNTU0sUUFMTjczSTs7cURBT0gsV0FESWczSSxLQU5FbGtEOztvREFlRjtLQVBjZ2xELFVBUGhCRjtLQU9XcHdKLE1BUFhvd0o7S0FPTS9rRyxNQVBOK2tHO3FEQWNFO1dBUFNwd0osWUFBTHFyRDs7d0RBSUY7MkJBSkVBLEtBUkZpZ0Q7OztxREFTRno3RDt1REFDRjtVQVBBcFgsWUFKQ3MzSCxlQUNBdjNJOztvREFtQkgsR0FYa0I4M0k7O01BYVRDLFdBYlNEO01BV2QvSzt5REFFa0I7V0FsQnBCOXNILE1Ba0JPODNILFdBWkwxZ0g7OztTQVVBMDFHLE1BVkExMUc7b0RBZUo7WUFMSTAxRztnQkFYSWw2RixLQVJGaWdEO21EQTBCVDtZQUVHa2xELGFBQWdCbk0sVUFBaUIvbUo7cURBQWE7cURBQ2hEO2dCQUNtQjBIOzBEQUFBO3dDQUFBQSxHQUZEcS9JO3lEQUVZO1NBRksvbUo7cURBQ25DO2dCQUdLMEg7eURBQUE7MERBQ0E7NERBRU87Y0FER21oQzsyREFBTSxXQUFOQTswREFDQzt5REFGWCx1REFBQTtvQ0FEQW5oQzt5REFHVzs7b0RBTmhCLGdCQVFlQTs4REFBQSxhQUFHbWhDOzhEQUNiO3VCQURhQTs7Z0VBR0s7a0JBRFRzcUg7K0RBQWE7c0JBQWJBOzZEQUVSOzhEQUpZLHdEQUFBO3dDQUFIenJKOzREQUlUOzttREFFUDtZQUVHMHJKLGlCQUFvQnJNLFVBQWlCL21KO3FEQUFhO3FEQUNwRDtnQkFDbUIwSDswREFBQTt3Q0FBQUEsR0FGR3EvSTt5REFFUTtTQUZTL21KO3FEQUN2QztnQkFHSzBIO3lEQUFBOzBEQUNBOzREQUVPO2NBREdtaEM7MkRBQU0sV0FBTkE7MERBQ0M7eURBRlgsdURBQUE7b0NBREFuaEM7eURBR1c7O29EQU5oQixnQkFRZUE7OERBQUEsYUFBR21oQzs4REFDYjt1QkFEYUE7O2dFQUdLO2tCQURUc3FIOytEQUFhO3NCQUFiQTs2REFFUjs4REFKWSx3REFBQTt3Q0FBSHpySjs0REFJVDs7bURBRVA7WUFFRzJySixlQUFrQjV4SjtvREFDcEIsZ0RBQUE7O2lCQUNHekIsSUFBSWs3QyxNQUFjdDFCO3FEQUNqQixpREFBZTs7eURBQUE7K0JBRFpzMUI7a0JBQzhDeHpDO3VEQUFLLFdBRHZEMUgsSUFDa0QwSDtzREFBWTtzREFBOUM7dURBQUE7eURBQUE7MkRBQXVCOzs7c0RBQXRDO3dEQUFBOztxREFBQSx1REFBQTsrQkFEaUJrZTtxREFDb0Q7b0RBRnpFLHVEQUFBO3dDQURvQm5rQjttREFNbkI7Ozs7O09BcjBCQ3VsSjtPQU9BQztPQUdJQztPQVNKQztPQWVBTTtPQVNBQztPQVNBQztPQUtBQztPQXVCQUM7T0FTSUM7T0ErQkpPO09BU0FMO09BK1pBRTtPQW1HQUM7T0F3R0FDO09BaUJBc0s7T0FpQ0FRO09BaUJBRTtPQWlCQUM7OzthOzs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDLzJCSUMsVUFBYXA0SSxHQUFrQnhULEdBQVU2cko7a0RBQy9DLElBRCtDQyxPQUFBRDtrREFDL0M7b0RBQW9DLCtDQUFBOzt1REFBQTtrQkFEV0M7O3FEQUN4QztnQ0FEWXQ0STtxREFFTjtvREFFSiwrQ0FBQTs7dURBQUE7bUJBSnNDczRJOzs7O3dEQW9CbkI7VUFEaEJDO3lEQUNnQjtxQyxPQXBCdEJILFVBQWFwNEksR0FBa0J4VDt5REFvQjdCZ3NKOzJEQUFXO29DQURQRDt3REFFUjs7dURBQUEscURBQUE7NkNBRElDOzt3REFGYztVQWxCeUJDO1VBa0J0Q0M7eURBQWE7WUFsQmhCTixVQUFhcDRJLEdBQWtCeFQsR0FrQjVCa3NKO3dEQUFhO3lEQUFBO2FBbEJ5QkosT0FBQUc7OzthQWdCdkMvbkc7d0RBQU0sc0RBQUE7b0NBaEJ1QmxrRCxHQWdCN0Jra0Q7O3dEQUM2QjtVQUEzQmlvRzt5REFBMkI7cUMsT0FqQi9CUCxVQUFhcDRJLEdBQWtCeFQ7d0RBaUJuQixzREFBQTtpRUFBTzs7a0JBQWZtc0o7O3dEQUtNOzs7YUF0QitCQyxpQkFBQU4sT0FBQU07O29EQWF6Qjs7aURBV3JCO1lBRUtDLFdBQWNSO2tEQUNwQixJQURvQkMsT0FBQUQ7a0RBQ3BCO21EQUFPLDhDQUFBOztzREFBQTttQkFEYUM7Ozs7d0RBZ0JXO1VBQXJCSzt5REFBcUI7MkRBQUE7K0JBaEJ6QkUsWUFnQklGO3dEQUFxQixzREFBQTs7O3dEQURPO1VBQTFCRjtVQUFMQzt5REFBK0IsTUFmaENHLFdBZU1KO3lEQUFRLE1BZmRJLFdBZUNIO3dEQUErQixzREFBQTs7O2FBRmhDaG9HO3dEQUFNLFdBQU5BOzt3REFDdUI7VUFBckJvb0c7eURBQXFCOzJEQUFBOytCQWR2QkQsWUFjRUM7d0RBQXFCLHNEQUFBOzs7YUFkVEMsa0JBQUFULE9BQUFTOzs7YUFBQUgsaUJBQUFOLE9BQUFNOztvREFVQTs7aURBUW5COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTVDS1I7T0EwQkFTOzs7YTs7Ozs7Ozs7Ozs7Ozs7OztjOzs7OztjOzs7OztjOzs7Ozs7O0lDWFIxd0o7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aURBQUEsU0FBQTZ3SjtJQUFBdmtKO2tEQUFBOztjQUFBQTtnQkFBQUE7Ozs7Ozs7Ozs7c0RBQUEscURBQUE7OENBQUF0TSxrQkFBQXNNOztxREFBQTs7b0RBQUE7O2VBQUFBOztvREFBQSxxREFBQTs0Q0FBQXRNLGtCQUFBc007OztvREFBQSxxREFBQTs0Q0FBQXRNLGtCQUFBc007U0FBQUM7OzZCQUFBQTs7OEJBQUFBOytCQUFBQTtrQ0FBQUE7a0NBQUFBO2dDQUFBQTs7V0FBQUM7VUFBQUEsbUJBQUFBO3NEQUFBO1NBQUFDLFdBQUFEO3VEQUFBRTt5REFBQTtnQ0FBQUQ7c0RBQUEsV0FBQUM7O3FEQUFBLHFEQUFBOztnQkFBQTFNO2dCQUFBdU07Z0JBQUFEOztvREFBQSxxREFBQTs0Q0FBQXRNLGtCQUFBc007O21EQUFBLHFEQUFBOzJDQUFBdE0sa0JBQUFzTTs7a0RBQUEscURBQUE7MENBQUF0TSxrQkFBQXNNO2tEQUcwQjtZQUgxQndrSjtrREFBQTs7O2tEQUdJO0tBQUF2eko7bURBQUFvUDtxREFBQTs0QkFBQXBQO2tEQUFBO3lCQUFBb1A7a0RBQXNCO2lEQU1wQjtrREFBQTtvREFBQTs7a0RBRkY7O3FEQUNFOzs7a0RBSEZva0o7O3FEQUVBOzttREFRZ0M7cURBQUE7O2tEQUFoQzs7c0RBQU87OztrREFGUEM7O3FEQUVBOztZQUdBQyxjQUFnQno5STtrREFDbEI7b0RBQ2tDO3NEQUFBOzttREFBaEM7O3NEQUFLOzZCQUZXQTtrREFDbEI7MERBQ0U7O2lEQUVEO1lBQ0MwOUk7a0RBQ0k7OzREQUFVOzs7a0RBQWdDO2tEQUVoQzttREFBQTs7c0RBQUs7O2tEQURuQkM7O3NEQUNjOztZQUVWQyxnQkFBbUI1NkQ7bURBQTRCLElBQTVCRyxPQUFBSDttREFBNEI7b0RBQUE7cURBQ2pEbnRDOzt1REFDRjs7eURBQytCO3dEQUN4Qjt1REFBSztvREFDUDtzREFBQTs2QkFMa0JzdEM7Ozs7d0RBTVQ7Ozs7dURBUmhCLE9BREV3NkQ7Ozs7Ozs7Ozt1REFuQkYsT0FERUo7O2FBbURJajZEOzt5REFDSjs0REFBTTs2Q0E1Qkp6dEM7YUEyQkV5dEM7d0RBRUE7d0RBQXlCLCtDQUFBO29CQW5DN0JvNkQ7d0RBbUNhO2dFQUFnQjs7OztVQWJ4Qm42RDs7OzREQUVDOzs7NkRBQ3dDOzREQUNqQzsyREFBSzt1REFIZixxREFBQTt5Q0FERUE7O21CQTNCTGs2RDtrRUFvQ0U7c0NBVEdsNkQ7O2FBakJrQkMsaUJBQUFMLE9BQUFLOzt3REFrQ2Qsc0RBQUE7Ozs7O3VEQWhEWCxPQURFZzZEOztvREE4QitCOztpREFxQmxDO1lBT09LLFdBQWUzZ0k7bURBQWlCLEdBQWpCQTtTQUFVQyxNQUFWRCxRQUFBNGdJLFlBQVUzZ0k7O1NBQVYyZ0k7a0RBQ2QsOENBQUE7O3FEQUFBOzs7U0FDUXI5SCxlQUFKRCxlQUFKdXNEO21EQUNMLEdBSG1CK3dFO3NEQUtHO3VEQUFBLFVBTEhBO3NEQUtmO2tDLE9BTEFELHVCQUVDOXdFO3NEQUdEO09BRkErQjs7MERBRUEsc0RBQUE7OEJBSEMvQjs7OztVQUNEK0IsT0FEQy9CO3FEQU9HO3NEQUFBO1FBcERKNndFLGdCQTZDS3A5SDtzREFPb0I7UUFwRHpCbzlILGdCQTZDU245SDs7VUEwQ01zOUg7O3NEQXVCZCxzREFBQTtvQ0FqRUl2OUgsSUFBSUM7cUJBQ1RxdUQ7O2lFQTRERjtxREFoQkUsK0NBQUE7OzswREFBVztzQ0E1Q1hBLE1BREt0dUQsSUEwQ1V1OUg7VUFBQUE7VUExQ050OUg7cURBNENYOzZEQUNFOzs7Ozt1REFLSyxnREFBQTs7MERBQUE7aUNBakRMcXVEOztZQWtEU2pDLGlCQUFKQzt3REFDRix1REFBQTtxQ0FETUQsSUFuREFwc0Q7c0JBbURKcXNEOzs7dURBTUE7O3NEQWxEb0I7c0RBUTNCOzs7O3VEQWtCaUI7UUFGTWt4RTt3REFFbkJDOzBEQUFhO3NDQWhDZm52RSxNQURLdHVELElBK0JnQnc5SDt3REFLZDtVQXRDUEgsZUFBZUMsWUFtQ2JHOztZQUlLQyxtQkFGTEMsZUFFS0Q7O1lBRkxDLGVBRkFGO3NEQU9KOytEQUFLOzJDQUxERSxjQUptQkgsYUEvQlp2OUg7Ozt1REFrQkosZ0RBQUE7OzBEQUFBO2lDQWpCTHF1RDs7OzthQWtCU3NELG1CQUFKekQ7eURBRUYsdURBQUE7c0NBRk15RCxNQW5CQTN4RDt1QkFtQkprdUQ7O21FQU9BOzhDQVBBQSxNQUFJeUQsTUFuQkEzeEQ7Ozt1REE0Qko7OztvREFqQlAsV0FWRXF1RDs7bURBdUVDO2tEQUVSO1lBRU9zdkUsb0JBQXVCeGtKO29EQUF3QixJQUF4QjZ0RyxNQUFBN3RHO29EQUF3QjtvREFDOUMsK0NBQUE7Y0EvRURpa0osZ0JBOEV1QnAyQztpRUFHbkIsT0FIbUJBO1NBQUFDLGdCQUFBRCxNQUFBQzs7a0RBSzlCO21EQUdVLGdEQUFBO0lBQVByWTtzREFBTzs7WUFJUGd2RCxjQUFpQi9sSjthQUNYZ21KLGFBQWdCaG1KO3FEQUFtQyxnREFDbEQ7O3dEQUFBOytCQURlQTs7c0RBR0w7T0FERm1vQjtPQUFKRDtPQUFKdG9CO3VEQUNVO1NBSFhvbUosYUFFQ3BtSjtPQUNJNjBFO09BQUplO3FEQUNMO2NBREtBO2NBaEJIc3dFLHdCQWFrQjlsSixNQUFBQSxXQUdYeTBFLElBREF2c0QsSUFBSUM7O3FEQU9SLFdBVGVub0IsR0FMdEIrMkY7bURBZ0JEO21EQUNELFNBQVFrdkQ7O3FEQUFlO01BQWMza0o7TUFBWnRCO3NEQUNoQjt3REFBQTsrQkFENEJzQjs7c0RBRXBCLE9BRlF0Qjs7O3dEQU9aO1NBRFVtb0I7U0FBSkQ7U0FBSnVzRDt5REFDUDcwRTtXQVBBcW1KLGlCQUFpQmptSixHQU1WeTBFO3lEQU1MOzJEQUFBOzt5REFEQTs7WUFKRjcwRTtZQURXc29COzREQUtVOzt5REFEckI7OzREQUNFOzs7WUFMYUM7dURBRW5CO2dCQVJpQzdtQjtnQkFBQUE7Ozt3REFJeEI7U0FESTJ5RTtTQUFKQztTQUFKc0M7eURBQ0RoQjtXQUpBeXdFLGlCQUFpQmptSixHQUdoQncyRTt1REFFTDtnQkFMaUNsMUU7Z0JBQUFBO3FCQUk3QmswRSxNQURLdEIsTUFBSUQ7O3dEQWVSLHVEQUFBOzs7bURBRVI7bURBQ0QsT0FyQlFneUU7YUFaQUQsYUFEV2htSjtrREFtQ3BCOzs7O09BcE1EK2tKO09BQUFDO09BS0lDO09BUUFDO09BS0FDO09BS0FDO09BRUFDO09BR0lDO09BMkNBQztPQThFQU87T0FRSi91RDtPQUlBZ3ZEOzs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7O0lDckxGbDRJO0lBQUE3ZDtJQWFJd0Q7SUFjTjB5SjtJQUFBOXhKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQTVCRXpELEdBQ0FzQyxLQUFBc0Y7b0RBQUEsZ0RBQUE7MEJBQUF0RjtvREFBQSxnREFBQTswQkFBQUE7ZUFBQXNGO29EQUFBLGdEQUFBO3VEQUNxQjs0QkFEckJ0Rjs7b0RBQUEsZ0RBQUE7MEJBQUFBO29EQUFBLGdEQUFBOzBCQUFBQTtvREFBQSxnREFBQTswQkFBQUE7ZUFBQXNGO29EQUFBLGdEQUFBO3VEQUVrQjs0QkFGbEJ0Rjs7b0RBQUEsZ0RBQUE7MEJBQUFBO29EQUFBLGdEQUFBOzBCQUFBQTtvREFBQSxnREFBQTswQkFBQUE7ZUFBQXNGO29EQUFBLGdEQUFBO3VEQUdrQjs0QkFIbEJ0Rjs7b0RBQUEsZ0RBQUE7MEJBQUFBO29EQUFBLGdEQUFBOzBCQUFBQTtvREFBQSxnREFBQTswQkFBQUE7ZUFBQXNGO29EQUFBLGdEQUFBO3VEQUljOzRCQUpkdEY7O29EQUFBLGdEQUFBOzBCQUFBQTtvREFBQSxnREFBQTswQkFBQUE7b0RBQUEsZ0RBQUE7MEJBQUFBO2VBQUFzRjtvREFBQSxnREFBQTt3REFLcUI7NEJBTHJCdEY7O29EQUFBLGdEQUFBOzBCQUFBQTtvREFBQSxnREFBQTswQkFBQUE7b0RBQUEsZ0RBQUE7MEJBQUFBO2VBQUFzRjtvREFBQSxnREFBQTt3REFNd0I7NEJBTnhCdEY7O29EQUFBLGdEQUFBOzBCQUFBQTtvREFBQSxnREFBQTswQkFBQUE7b0RBQUEsZ0RBQUE7MEJBQUFBO2VBQUFzRjtvREFBQSxnREFBQTt3REFRbUI7NEJBUm5CdEY7O29EQUFBLGdEQUFBOzBCQUFBQTtvREFBQSxnREFBQTswQkFBQUE7b0RBQUEsZ0RBQUE7MEJBQUFBO2VBQUFzRjtvREFBQSxnREFBQTt3REFTaUI7NEJBVGpCdEY7O29EQUFBLGdEQUFBOzBCQUFBQTtvREFBQSxnREFBQTswQkFBQUE7b0RBQUEsZ0RBQUE7MEJBQUFBO2VBQUFzRjtvREFBQSxnREFBQTt3REFVcUI7NEJBVnJCdEY7O29EQUFBLGdEQUFBOzBCQUFBQTtvREFBQSx1REFBQTtpQ0FBQUE7b0RBV0M7WUFaRG5DLEtBQ0F5SDtvREFBQSx1REFBQTtzQ0FEQTVILElBQ0E0SDtvREFXQzttREFYRCxTQUFBcEk7SUFBQWdaO2UsU0FBQUE7cURBQUEsdURBQUE7NENBQUEwRSxrQkFBQTFFO29EQUFBO0tBQUFDLGtCQUFBRDtxREFDRWc5STtxREFDQUM7cURBQ0FDO3FEQUNBQztxREFDQUM7cURBQ0FDOztxREFFQUM7cURBQ0FDO3FEQUNBQztxREFWRkM7cURBQUFDO2FBQUEzMUk7cURBQUE7cURBQUE7b0VBQUE7VUFBQXZIO2VBQUFBO2tCQUFBQTs7Ozs7YUFBQW05SSwyQkFBQUM7WUFBQUQsbUJBQUFBOztVQUFBeDFJO1VBQUEwMUk7cUJBQUFGO3NCQUFBRzs4REFBQTtrQkFBQUg7K0RBQUEsdURBQUE7c0RBQUFqNUksa0JBQUExRTtpQkFBQTI5STsrREFBQSxzREFBQTs7a0JBQUFyMUksUUFBQXExSTs4REFBQSxPQUFBcjFJOzhEQVdDO29CQVhEdzFJOztVQUFBQSxpQkFBQUQsaUJBQUFGO2lDQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTtxQ0FBQUE7O3FDQUFBQTt1Q0FBQUE7OztvQkFBQUE7O3dDQUFBQTs7bUJBQUFGLG1CQUFBRSxnQkFBQUY7O3lCQVFFSjtrQkFSRkcsd0JBQUFHLGdCQUFBSDs7bUVBUUU7b0VBUkZNO3NCQUFBRDtvRUFRRUU7O3NFQUFBO3VDQVJGRDtrQkFRRVQsNkJBQUFVOzt3QkFGQVg7aUJBTkZJLHdCQUFBRyxnQkFBQUg7O2tFQU1FO21FQU5GUTtxQkFBQUg7bUVBTUU3K0c7O3FFQUFBO3NDQU5GZy9HO2lCQU1FWixrQ0FBQXArRzs7dUJBR0FzK0c7Z0JBVEZFLHdCQUFBRyxnQkFBQUg7O2lFQVNFO2tFQVRGUztvQkFBQUo7a0VBU0V0dUQ7b0VBQUE7cUNBVEYwdUQ7Z0JBU0VYLDJCQUFBL3REOztzQkFKQTR0RDtlQUxGSyx3QkFBQUcsZ0JBQUFIOztnRUFLRTtpRUFMRlU7bUJBQUFMO2lFQUtFMStHO21FQUFBO29DQUxGKytHO2VBS0VmLCtCQUFBaCtHOztxQkFLQW8rRztjQVZGQyx3QkFBQUcsZ0JBQUFIOzsrREFVRTtnRUFWRlc7a0JBQUFOO2dFQVVFcHVEO2tFQUFBO21DQVZGMHVEO2NBVUVaLCtCQUFBOXREOztvQkFSQXV0RDthQUZGUSx3QkFBQUcsZ0JBQUFIOzs2REFFRTs4REFGRlk7aUJBQUFQOzhEQUVFbDFJO2dFQUFBO2tDQUZGeTFJO2FBRUVwQiw0QkFBQXIwSTs7bUJBQ0FzMEk7WUFIRk8sd0JBQUFHLGdCQUFBSDs7NERBR0U7NkRBSEZhO2dCQUFBUjs2REFHRXQxSTsrREFBQTtpQ0FIRjgxSTtZQUdFcEIsNEJBQUExMEk7O2tCQUNBMjBJO1dBSkZNLHdCQUFBRyxnQkFBQUg7OzJEQUlFOzREQUpGYyxtQkFBQVQ7NERBSUV2eEg7OERBQUE7Z0NBSkZneUg7V0FJRXBCLHdCQUFBNXdIOztpQkFIQXl3SDtVQURGUyx3QkFBQUcsZ0JBQUFIOzswREFDRTsyREFERmUsbUJBQUFWOzJEQUNFcDFJOzZEQUFBOytCQURGODFJO1VBQ0V4QiwrQkFBQXQwSTs7dUJBREZQOzs7OztzREFBQSx1REFBQTs2Q0FBQXpELGtCQUFBbEU7O3FEQVdDO29EQVhEdUgsU0FBQTlIO09BQUF3OUk7cURBQUEsdURBQUE7O2NBQUEvNEk7Y0FBQSs0STtjQUFBejlJO09BQUEwOUk7cURBQUEsdURBQUE7O2NBQUFoNUk7Y0FBQWc1STtjQUFBMTlJOztZQUNFZzlJO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBRUFDO1lBQ0FDO2FBQ0FDOzs7TUFBQWlCO01BREFDO01BREFDO01BRkFDO01BREFDO01BREFDO01BREFDO01BREFDO01BREFDO3FEQURGO2FBQ0VBO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBRUFEO2FBQ0FEO2FBQ0FEOztvREFWRix1REFBQTs7YUFBQS81STthQUFBMUU7OztxQkFDRWc5STs7O3lCQUNBQzs7MEJBQ0FDOzsyQkFDQUM7Ozt5QkFDQUM7Ozs7MEJBQ0FDOzs7OzJCQUVBQzs7OytCQUNBQzs7OzZCQUNBQzs7OztZQVZGMTJKO29EQUFBO0tBVUVvNEo7S0FEQUM7S0FEQUM7S0FGQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7S0FEQUM7c0RBU0F6cEk7d0RBQUE7eUJBQUFpcEk7c0RBVkY5MUk7NEJBVUU2TTtzREFEQTBwSTt3REFBQTt5QkFBQVI7c0RBVEY3MUk7NEJBU0VxMkksZUFURnYySTtzREFRRXcySTt3REFBQTt5QkFBQVI7c0RBUkY1MUk7NEJBUUVvMkksZUFSRnQySTtzREFNRXUySTt3REFBQTt5QkFBQVI7c0RBTkYzMkc7NEJBTUVtM0csZUFORnIySTtzREFLRXMySTt3REFBQTt5QkFBQVI7c0RBTEZTOzRCQUtFRCxlQUxGcDNHO3FEQUlFcFM7dURBQUE7eUJBQUFpcEg7cURBSkZTOzRCQUlFMXBILGVBSkZ5cEg7cURBR0U1Mkk7dURBQUE7eUJBQUFxMkk7cURBSEZTOzRCQUdFOTJJLGVBSEY2Mkk7cURBRUUzMkk7dURBQUE7eUJBQUFvMkk7cURBRkZTOzRCQUVFNzJJLGVBRkY0Mkk7cURBQ0UxMkk7dURBQUE7eUJBQUFtMkk7cURBREZTOzRCQUNFNTJJLGVBREYyMkk7b0RBQUEsV0FBQUM7b0RBV0M7bURBWEQsU0FBQWg1SjtJQUFBd0I7ZSxVQUFBQSxxQ0FBQUE7cURBQ0U7TUFERnVSLGdCQUFBdlI7c0RBQ0V5M0o7O3NEQUNBQztzREFDQUM7c0RBQ0FDO3VEQUNBQzs7dURBQ0FDOzt1REFFQUM7dURBQ0FDO3VEQUNBQzs7c0RBVkZ2bUo7c0RBQUFDO01BQUFDOzt5REFBQTt5REFBQTs7MkRBQUE7O1dBQUFDOztXQUFBQztXQUFBQztrQ0FBQUE7bUNBQUFBO29DQUFBQTtxQ0FBQUE7c0NBQUFBO3VDQUFBQTt3Q0FBQUE7OztxQkFBQUE7MENBQUFBO21FQUFBO3FFQUFBOzs7b0JBQUFKOztzQkFBQUk7c0VBQUE7Z0RBQUFKOzs7cUVBUUU7OENBQUFvbUo7bUJBUkZybUo7O3FCQUFBSztzRUFRRTsrQ0FSRkw7O29FQVFFLGlEQUFBO29CQUFBTTt1RUFBQTtrRUFSRkY7bUJBUUVpbUosK0JBQUEvbEo7OztvRUFGQTs2Q0FBQThsSjtrQkFORnBtSjs7b0JBQUFLO3FFQU1FOzhDQU5GTDs7bUVBTUUsaURBQUE7bUJBQUFPO3NFQUFBO2lFQU5GSDtrQkFNRWdtSixvQ0FBQTdsSjs7O21FQUdBOzRDQUFBK2xKO2lCQVRGdG1KOzttQkFBQUs7b0VBU0U7NkNBVEZMOztrRUFTRSxpREFBQTtrQkFBQTZIO3FFQUFBO2dFQVRGekg7aUJBU0VrbUosNkJBQUF6K0k7OztrRUFKQTsyQ0FBQXMrSTtnQkFMRm5tSjs7a0JBQUFLO21FQUtFOzRDQUxGTDs7aUVBS0UsaURBQUE7aUJBQUFtYztvRUFBQTsrREFMRi9iO2dCQUtFK2xKLGlDQUFBaHFJOzs7aUVBS0E7MENBQUFvcUk7ZUFWRnZtSjs7aUJBQUFLO2tFQVVFOzJDQVZGTDs7Z0VBVUUsaURBQUE7Z0JBQUFvYzttRUFBQTs4REFWRmhjO2VBVUVtbUosaUNBQUFucUk7OzsrREFSQTt5Q0FBQTRwSTtjQUZGaG1KOztnQkFBQUs7Z0VBRUU7MENBRkZMOzs4REFFRSxnREFBQTtlQUFBeTVIO2lFQUFBOzZEQUZGcjVIO2NBRUU0bEosOEJBQUF2c0I7Ozs4REFDQTt3Q0FBQXdzQjthQUhGam1KOztlQUFBSzsrREFHRTt5Q0FIRkw7OzZEQUdFLGdEQUFBO2NBQUEwNUg7Z0VBQUE7NERBSEZ0NUg7YUFHRTZsSiw4QkFBQXZzQjs7OzZEQUNBO3VDQUFBd3NCO1lBSkZsbUo7O2NBQUFLOzhEQUlFO3dDQUpGTDs7NERBSUUsZ0RBQUE7YUFBQTI1SDsrREFBQTsyREFKRnY1SDtZQUlFOGxKLDBCQUFBdnNCOzs7NERBSEE7c0NBQUFvc0I7V0FERi9sSjs7YUFBQUs7NkRBQ0U7dUNBREZMOzsyREFDRSxnREFBQTtZQUFBNDVIOzhEQUFBOzBEQURGeDVIO1dBQ0UybEosaUNBQUFuc0I7O3dCQURGejVIOzt5REFXQztxREFYREQsS0FBQUw7O3VEQUFBO2lDQUFBRztzREFBQSxnREFBQTs7eURBQUE7bUNBQUFBO3NEQUFBLHVEQUFBO21EQUFBeFQsY0FBQThCOzs7dURBQUE7aUNBQUEyUjtzREFBQSxnREFBQTs7eURBQUE7bUNBQUFBO3NEQUFBLHVEQUFBO21EQUFBelQsY0FBQThCOztxREFDRTtzREFBQTt3REFBQTtrQ0FBQXkzSjtzREFDQTt3REFBQTtrQ0FBQUM7c0RBQ0E7d0RBQUE7a0NBQUFDO3NEQUNBO3dEQUFBO2tDQUFBQzt1REFDQTt5REFBQTtrQ0FBQUM7dURBQ0E7eURBQUE7a0NBQUFDO3VEQUVBO3lEQUFBO2tDQUFBQzt1REFDQTt5REFBQTtrQ0FBQUM7dURBQ0E7eURBQUE7a0NBQUFDOzs7Ozs7Ozs7T0FBQUM7T0FEQUM7T0FEQUM7T0FGQUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUM7T0FEQUM7c0RBREY7Y0FDRUE7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FDQUQ7Y0FFQUQ7Y0FDQUQ7Y0FDQUQ7O3FEQVZGO3NEQUFBOzs7Ozs2REFVRTtzQ0FBQUQ7Ozs7O3NEQVZGOzs7Ozs2REFTRTtzQ0FBQUQ7Ozs7O3NEQVRGOzs7Ozs2REFRRTtzQ0FBQUQ7Ozs7O3NEQVJGOzs7Ozs2REFNRTtzQ0FBQUQ7Ozs7O3NEQU5GOzs7Ozs2REFLRTtzQ0FBQUQ7Ozs7O3NEQUxGOzs7Ozs0REFJRTtzQ0FBQUQ7Ozs7O3NEQUpGOzs7Ozs0REFHRTtzQ0FBQUQ7Ozs7O3NEQUhGOzs7Ozs0REFFRTtzQ0FBQUQ7Ozs7O3NEQUZGOzs7Ozs0REFDRTtzQ0FBQUQ7Ozs7O3FEQURGLHVEQUFBO2tEQUFBdjVKLFFBQUE4Qjs7b0RBQUEsdURBQUE7aURBQUE5QixRQUFBOEI7O1lBQUF6QjtvREFBQTtLQVVFbzZKO0tBREFDO0tBREFDO0tBRkFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBREFDO0tBU0E3bUo7O2tEQUFBcW1KO0tBQUFwbUosd0NBQUFEO0tBREFFOzJEQUFBb21KO0tBQUFubUosc0NBQUFELFFBQ0FEO0tBRkF1SDsyREFBQSsrSTtLQUFBOStJLHdDQUFBRCxRQUNBckg7S0FIQTZiOztrREFBQXdxSTtLQUFBdnFJLDZDQUFBRCxRQUVBdlU7S0FIQXlVOztrREFBQXVxSTtLQUFBdHFJLDBDQUFBRCxRQUNBRDtLQUZBMDlHLDREQUFBK3NCO0tBQUE5c0IsbUNBQUFELFFBQ0F4OUc7S0FGQTA5RzsyREFBQThzQjtLQUFBN3NCLHVDQUFBRCxRQUNBRDtLQUZBRzsyREFBQTZzQjtLQUFBNXNCLHVDQUFBRCxRQUNBRDtLQUZBRzs7a0RBQUE0c0I7S0FBQTNzQiwwQ0FBQUQsUUFDQUQ7b0RBRkY7O1lBQ0VFO29EQVVEO29EQWJpQjtxREFBQTtVQUNsQjN0SSxJQUFBRyxNQUNBWCxXQUFBRixXQUFBSyxhQUFBRCxhQWFJbUQ7SUFhTlQ7SUFBQTJPO1lBQUF2SjtxREFBQTtvREFPQzs7S0FQRHBGO2NBQ0FFLEtBQUFzRjt1REFBQSxpREFBQTs0QkFBQXRGO3VEQUFBLGlEQUFBOzRCQUFBQTtpQkFBQXNGO3VEQUFBLGlEQUFBOzBEQUNXOzhCQURYdEY7O3VEQUFBLGlEQUFBOzRCQUFBQTt1REFBQSxpREFBQTs0QkFBQUE7dURBQUEsaURBQUE7NEJBQUFBO2lCQUFBc0Y7dURBQUEsaURBQUE7MERBRWE7OEJBRmJ0Rjs7dURBQUEsaURBQUE7NEJBQUFBO3VEQUFBLGlEQUFBOzRCQUFBQTt1REFBQSxpREFBQTs0QkFBQUE7aUJBQUFzRjt1REFBQSxpREFBQTswREFHVTs4QkFIVnRGOzt1REFBQSxpREFBQTs0QkFBQUE7dURBQUEsaURBQUE7NEJBQUFBO3VEQUFBLGlEQUFBOzRCQUFBQTtpQkFBQXNGO3VEQUFBLGlEQUFBOzBEQUlZOzhCQUpadEY7O3VEQUFBLGlEQUFBOzRCQUFBQTt1REFBQSxpREFBQTs0QkFBQUE7dURBQUEsaURBQUE7NEJBQUFBO2lCQUFBc0Y7dURBQUEsaURBQUE7eURBREE7VUFBQUosT0FDQWxGOzt1REFBQSxpREFBQTs0QkFBQUE7dURBQUEsd0RBQUE7bUNBQUFBO3NEQU1DOztLQVBEeU87Y0FDQW5KO3VEQUFBLHdEQUFBO3lDQURBeEYsTUFDQXdGO3NEQU1DO1lBTkRoRyxZQUFBMjRKO3FEQUFBLFNBQUFBO3NEQUFBLHdEQUFBOzRDQUFBaEYsa0JBQUFnRjtxREFBQTtLQUFBQyxrQkFBQUQ7c0RBQ0VFO3NEQUNBQztzREFDQUM7c0RBQ0FDO3NEQUNBQztzREFMRkM7c0RBQUFDO2FBQUFDO3NEQUFBO3NEQUFBO3FFQUFBO1VBQUFDO2VBQUFBO2tCQUFBQTs7Ozs7YUFBQUMsMkJBQUFDO1lBQUFELG1CQUFBQTs7VUFBQUU7VUFBQUM7cUJBQUFIO3NCQUFBSTsrREFBQTtrQkFBQUo7Z0VBQUEsd0RBQUE7c0RBQUEzRixrQkFBQWdGO2lCQUFBVztnRUFBQSx1REFBQTs7a0JBQUFLLFFBQUFMOytEQUFBLE9BQUFLOzhEQU1DO29CQU5ERDs7VUFBQUEsaUJBQUFELGlCQUFBSDtpQ0FBQUM7a0NBQUFBO21DQUFBQTtvQ0FBQUE7cUNBQUFBOztlQUFBSixtQkFBQUksZ0JBQUFKOztxQkFDRU47Y0FERkssd0JBQUFLLGdCQUFBTDs7K0RBQ0U7Z0VBREZVO2tCQUFBRjtnRUFDRUc7a0VBQUE7bUNBREZEO2NBQ0VmLHFCQUFBZ0I7O29CQUlBWjthQUxGQyx3QkFBQUssZ0JBQUFMOzs4REFLRTsrREFMRlk7aUJBQUFKOytEQUtFSztpRUFBQTtpQ0FMRkQ7YUFLRWIsd0JBQUFjOzttQkFIQWpCO1lBRkZJLHdCQUFBSyxnQkFBQUw7OzZEQUVFOzhEQUZGYztnQkFBQU47OERBRUUzMEM7Z0VBQUE7aUNBRkZpMUM7WUFFRWxCLHVCQUFBL3pDOztrQkFFQWkwQztXQUpGRSx3QkFBQUssZ0JBQUFMOzs0REFJRTs2REFKRmU7ZUFBQVA7NkRBSUVROytEQUFBO2dDQUpGRDtXQUlFakIsc0JBQUFrQjs7aUJBREFuQjtVQUhGRyx3QkFBQUssZ0JBQUFMOzsyREFHRTs0REFIRmlCLG1CQUFBVDs0REFHRXowQzs4REFBQTsrQkFIRmsxQztVQUdFcEIsb0JBQUE5ekM7O3VCQUhGdTBDOzs7Ozt1REFBQSx3REFBQTs2Q0FBQTdGLGtCQUFBMEY7O3FEQU1DO3FEQU5ERCxTQUFBUjtPQUFBTTtzREFBQSx3REFBQTs7Y0FBQXZGO2NBQUF1RjtjQUFBUDtPQUFBUTtzREFBQSx3REFBQTs7Y0FBQXhGO2NBQUF3RjtjQUFBUjs7WUFDRUU7WUFDQUM7WUFDQUM7WUFDQUM7YUFDQUM7OztNQUFBbUI7TUFEQUM7TUFEQUM7TUFEQUM7TUFEQUM7c0RBREY7YUFDRUE7YUFDQUQ7YUFDQUQ7YUFDQUQ7YUFDQUQ7O3FEQUxGLHdEQUFBOzthQUFBekc7YUFBQWdGOzt3QkFDRUU7O3lCQUNBQzs7MEJBQ0FDOzsyQkFDQUM7OzRCQUNBQzs7b0RBQ0Q7WUFORHA1SjtxREFBQTtLQUtFNDZKO0tBREFDO0tBREFDO0tBREFDO0tBREFDO3NEQUlBQzt3REFBQTt3QkFBQUw7c0RBTEZNOzZCQUtFRDtzREFEQUU7d0RBQUE7eUJBQUFOO3NEQUpGTzs2QkFJRUQsZUFKRkQ7c0RBR0VHO3dEQUFBO3lCQUFBUDtzREFIRlE7NkJBR0VELGVBSEZEO3NEQUVFRzt3REFBQTt5QkFBQVI7c0RBRkZTOzZCQUVFRCxlQUZGRDtzREFDRTUxQzt3REFBQTt5QkFBQXMxQztzREFERlM7NkJBQ0UvMUMsZUFERjgxQztxREFBQSxXQUFBQztvREFNQztZQU5EajdKLGNBQUFkO2UsVUFBQUEscUNBQUFBO3NEQUNFO01BREZ1UixnQkFBQXZSO3VEQUNFZzhKO3VEQUNBQzt1REFDQUM7dURBQ0FDO3VEQUNBQzt1REFMRjFxSjt1REFBQUM7TUFBQUM7OzBEQUFBOzBEQUFBOzs0REFBQTs7V0FBQUM7O1dBQUFDO1dBQUFDO2tDQUFBQTttQ0FBQUE7b0NBQUFBO3FDQUFBQTtzQ0FBQUE7Z0VBQUE7a0VBQUE7OztnQkFBQUo7O2tCQUFBSTttRUFBQTs0Q0FBQUo7OztpRUFDRTswQ0FBQXFxSjtlQURGdHFKOztpQkFBQUs7a0VBQ0U7MkNBREZMOztnRUFDRSxpREFBQTtnQkFBQU07bUVBQUE7OERBREZGO2VBQ0VrcUosdUJBQUFocUo7OztnRUFJQTt5Q0FBQW9xSjtjQUxGMXFKOztnQkFBQUs7aUVBS0U7MENBTEZMOzsrREFLRSxpREFBQTtlQUFBTztrRUFBQTtrQ0FMRkg7Y0FLRXNxSiwwQkFBQW5xSjs7OytEQUhBO3dDQUFBZ3FKO2FBRkZ2cUo7O2VBQUFLO2dFQUVFO3lDQUZGTDs7OERBRUUsaURBQUE7Y0FBQTZIO2lFQUFBOzREQUZGekg7YUFFRW1xSix5QkFBQTFpSjs7OzhEQUVBO3VDQUFBNGlKO1lBSkZ6cUo7O2NBQUFLOytEQUlFO3dDQUpGTDs7NkRBSUUsaURBQUE7YUFBQW1jO2dFQUFBOzJEQUpGL2I7WUFJRXFxSix3QkFBQXR1STs7OzZEQURBO3NDQUFBcXVJO1dBSEZ4cUo7O2FBQUFLOzhEQUdFO3VDQUhGTDs7NERBR0UsaURBQUE7WUFBQW9jOytEQUFBOzBEQUhGaGM7V0FHRW9xSixzQkFBQXB1STs7d0JBSEZqYzs7eURBTUM7c0RBTkRELEtBQUFMOzt3REFBQTtpQ0FBQUc7dURBQUEsaURBQUE7OzBEQUFBO21DQUFBQTt1REFBQSx3REFBQTttREFBQXBQLGdCQUFBdEM7Ozt3REFBQTtpQ0FBQTJSO3VEQUFBLGlEQUFBOzswREFBQTttQ0FBQUE7dURBQUEsd0RBQUE7bURBQUFyUCxnQkFBQXRDOztzREFDRTt1REFBQTt5REFBQTtrQ0FBQWc4Sjt1REFDQTt5REFBQTtrQ0FBQUM7dURBQ0E7eURBQUE7a0NBQUFDO3VEQUNBO3lEQUFBO2tDQUFBQzt1REFDQTt5REFBQTtrQ0FBQUM7OztPQUFBQztPQURBQztPQURBQztPQURBQztPQURBQzt1REFERjtjQUNFQTtjQUNBRDtjQUNBRDtjQUNBRDtjQUNBRDs7c0RBTEY7dURBQUE7Ozs7OzZEQUtFO3NDQUFBRDs7Ozs7dURBTEY7Ozs7OzZEQUlFO3NDQUFBRDs7Ozs7dURBSkY7Ozs7OzZEQUdFO3NDQUFBRDs7Ozs7dURBSEY7Ozs7OzZEQUVFO3NDQUFBRDs7Ozs7dURBRkY7Ozs7OzZEQUNFO3NDQUFBRDs7Ozs7c0RBREYsd0RBQUE7a0RBQUExNUosVUFBQXRDOztxREFBQSx3REFBQTtpREFBQXNDLFVBQUF0Qzs7WUFBQVk7cURBQUE7S0FLRTg3SjtLQURBQztLQURBQztLQURBQztLQURBQztLQUlBeHFKLGdDQUFBb3FKO0tBQUFucUosaUNBQUFEO0tBREFFLDREQUFBbXFKO0tBQUFscUosaUNBQUFELFFBQ0FEO0tBRkF1SCw0REFBQThpSjtLQUFBN2lKLCtCQUFBRCxRQUNBckg7S0FGQTZiLDREQUFBdXVJO0tBQUF0dUksa0NBQUFELFFBQ0F2VTtLQUZBeVUsNERBQUFzdUk7S0FBQXJ1SSxnQ0FBQUQsUUFDQUQ7cURBRkY7O1lBQ0VFO29EQUtEO3FEQUVZO3NEQUFUc3VJOztzREFRQUM7Ozs7O09BakJKLzdKO09BQUEyTztPQUNBblA7T0FBQUg7T0FBQVE7T0FBQUY7T0FRSW04SjtPQVFBQzs7OzthOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2M7Ozs7O2M7Ozs7O2M7Ozs7Ozs7Ozs7O0lDM0NKNTZKO0lBc0NBNjZKO0lBdENBLytKO0lBc0NBb0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF2Q0F3NkQ7SUFBQUM7SUFBQWwrRDtJQUFBRztZQUFBaytKO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQXorSjttREE0Q007WUE1Q04wK0o7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBOStKO21EQTRDTTtZQTVDTisrSjttREFBQTs7bURBNENNO1lBNUNOQzttREFBQSxPQUFBaC9KO21EQTRDTTtZQTVDTmkvSjttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQW4vSjttREE0Q007WUE1Q05vL0o7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUF0L0o7bURBNENNO1lBNUNOdS9KO21EQUFBLE9BQUF2L0o7bURBNENNO1lBNUNOdy9KO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBMS9KO21EQTRDTTtZQTVDTjIvSjttREFBQSxPQUFBMy9KO21EQTRDTTtZQTVDTjQvSjttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQTkvSjttREE0Q007WUE1Q04rL0o7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUFqZ0s7bURBNENNO1lBNUNOa2dLO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBcGdLO21EQTRDTTtZQTVDTnErRDttREFBQSxPQUFBcitEO21EQTRDTTtZQTVDTnMrRDttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQXgrRDttREE0Q007WUE1Q055K0Q7bURBQUEsT0FBQXorRDttREE0Q007WUE1Q04wK0Q7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTs7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUE3K0Q7bURBNENNO1lBNUNOOCtEO21EQUFBOzttREE0Q007WUE1Q05DO21EQUFBLE9BQUEvK0Q7bURBNENNO1lBNUNOZy9EO21EQUFBOzttREE0Q007WUE1Q05DO21EQUFBLE9BQUFqL0Q7bURBNENNO1lBNUNOay9EO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUFyL0Q7bURBNENNO1lBNUNOcy9EO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUF6L0Q7bURBNENNO1lBNUNOMC9EO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUE7bURBNENNO1lBNUNOQzttREFBQSxPQUFBNS9EO21EQTRDTTtZQTVDTjYvRDttREFBQTttREE0Q007WUE1Q05DO21EQUFBO21EQTRDTTtZQTVDTkM7bURBQUEsT0FBQS8vRDttREE0Q007WUE1Q05nZ0U7bURBQUEsT0FBQWhnRTttREE0Q007WUE1Q05pZ0U7bURBQUE7bURBNENNO1lBNUNOQzttREFBQTs7bURBNENNO1lBNUNOQzttREFBQTttREE0Q007WUE1Q05DO21EQUFBLE9BQUFwZ0U7bURBNENNO1lBNUNOcWdFO21E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Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ2xWVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQSt1RnVCSztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQztJQUFBQzs7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7O0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDOzs7SUFBQUM7OztJQUFBQzs7Ozs7OztJQXZWWEM7SUFBQUM7SUFBQUM7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUFuNUVwQkM7Ozs7Ozs7Ozs7Ozs7O0lBTFE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUk7T0FZQUU7T0FDQUM7T0FLQUs7T0FDQUM7T0FDQUM7T0FHQUU7T0FDQUM7T0FFQWxCO09BRUFtQjtPQU1BQztPQUVBQztPQVlBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUNBQztPQUVBQztPQVFBRzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztJQzFJSkM7SUFBQUM7SUFPQUM7SUFBQUM7SUFPQUM7SUFBQUM7SUFvQkFDO0lBQUFDO0lBbUJBQztJQUFBQztJQW9CQUM7SUFBQUM7SUEwQ0FDO0lBQUFDO0lBT0FDO0lBQUFDO0lBcUJBQztJQUFBQztJQWlGQUM7SUFBQUM7SUFXQUM7SUFBQUM7SUFpRkFDO0lBQUFDO0lBT0VDO0lBQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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LE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUE7c0NBQUFBOztVQUFBLE9BQUE7c0NBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOztVQUFBLE9BQUEsOEJBQUFBOzs7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NBQUEsT0FBQSw4QkFBQUE7O1NB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OytHQUFBQTsrR0FBQUE7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OzZHQUFBQTs7OzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7NEdBQUFBOzs7O21IQUFBQTs7O29IQUFBQTs7O2dIQUFBQTs7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOzhHQUFBQTs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7NkdBQUFBOzs7bUhBQUFBOzs7K0dBQUFBOytHQUFBQTsrR0FBQUE7Ozs7eUZBQUFBOzs7OzRHQUFBQTs7K0dBQUFBOytHQUFBQTsrR0FBQUE7NkdBQUFBOzs7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OzRHQUFBQTs7Ozs7a0hBQUFBOzttSEFBQUE7OztvSEFBQUE7OztnSEFBQUE7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOztnSEFBQUE7OEdBQUFBOzs7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7K0dBQUFBOytHQUFBQTs2R0FBQUE7OzttSEFBQUE7OzsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzs2R0FBQUE7Ozs7OEdBQUFBOzhHQUFBQTs7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7NEdBQUFBOzs7O21IQUFBQTs7O29IQUFBQTs7O2dIQUFBQTs7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOzhHQUFBQTs7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzs2R0FBQUE7OzttSEFBQUE7OzsrR0FBQUE7K0dBQUFBOytHQUFBQTs7Ozs7eUZBQUFBOzs7Ozt5RkFBQUE7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzZHQUFBQTs7OzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OzRHQUFBQTs7OztrRkFBQSxPQUFBO3dIQUFBdkwsa0JBQUFzTDs7aUZBQUEsT0FBQTt1SEFBQXRMLGtCQUFBc0w7O2dGQUFBLE9BQUE7c0hBQUF0TCxrQkFBQXNMOzsrRUFBQSxPQUFBO3FIQUFBdEwsa0JBQUFzTDs7OEVBQUEsT0FBQTtvSEFBQXRMLGtCQUFBc0w7O2lGQUFBRTtnRkFBQUEsbUJBQUFBOzhFQUFBOytFQUFBQyxXQUFBRDsrRUFBQUUsV0FBQSxvQ0FBQUQ7OEVBQUEsV0FBQUM7OzZFQUFBLE9BQUE7O3NGQUFBMUw7c0ZBQUF1TDtzRkFBQUQ7OzRFQUFBLE9BQUE7a0hBQUF0TCxrQkFBQXNMOzsyRUFBQSxPQUFBO2lIQUFBdEwsa0JBQUFzTDs7MEVBQUEsT0FBQTtnSEFBQXRMLGtCQUFBc0w7O3lFQUFBLE9BQUE7K0dBQUF0TCxrQkFBQXNMOzt3RUFBQSxPQUFBOzhHQUFBdEwsa0JBQUFzTDs7dUVBQUEsT0FBQTs2R0FBQXRMLGtCQUFBc0w7O3NFQUFBLE9BQUE7NEdBQUF0TCxrQkFBQXNMOztxRUFBQSxPQUFBOzJHQUFBdEwsa0JBQUFzTDs7b0VBQUEsT0FBQTswR0FBQXRMLGtCQUFBc0w7O21FQUFBLE9BQUE7eUdBQUF0TCxrQkFBQXNMOztrRUFBQSxPQUFBO3dHQUFBdEwsa0JBQUFzTDs7aUVBQUEsT0FBQTt1R0FBQXRMLGtCQUFBc0w7O2dFQUFBLE9BQUE7c0dBQUF0TCxrQkFBQXNMOzsrREFBQSxPQUFBO3FHQUFBdEwsa0JBQUFzTDs7OERBQUEsT0FBQTtvR0FBQXRMLGtCQUFBc0w7OzZEQUFBLE9BQUE7bUdBQUF0TCxrQkFBQXNMOzs0REFBQSxPQUFBO2tHQUFBdEwsa0JBQUFzTDs7MkRBQUEsT0FBQTtpR0FBQXRMLGtCQUFBc0w7OzBEQUFBLE9BQUE7Z0dBQUF0TCxrQkFBQXNMOzt5REFBQSxPQUFBOytGQUFBdEwsa0JBQUFzTDs7d0RBQUEsT0FBQTs4RkFBQXRMLGtCQUFBc0w7O3VEQUFBLE9BQUE7NkZBQUF0TCxrQkFBQXNMOztzREFBQSxPQUFBOzRGQUFBdEwsa0JBQUFzTDs7cURBQUEsT0FBQTsyRkFBQXRMLGtCQUFBc0w7O29EQUFBLE9BQUE7MEZBQUF0TCxrQkFBQXNMOzttREFBQSxPQUFBO3lGQUFBdEwsa0JBQUFzTDs7a0RBQUEsT0FBQTt3RkFBQXRMLGtCQUFBc0w7O2lEQUFBLE9BQUE7dUZBQUF0TCxrQkFBQXNMOztnREFBQSxPQUFBO3NGQUFBdEwsa0JBQUFzTDs7K0NBQUEsT0FBQTtxRkFBQXRMLGtCQUFBc0w7OzhDQUFBLE9BQUE7b0ZBQUF0TCxrQkFBQXNMOzs2Q0FBQSxPQUFBO21GQUFBdEwsa0JBQUFzTDs7NENBQUEsT0FBQTtrRkFBQXRMLGtCQUFBc0w7OzJDQUFBLE9BQUE7aUZBQUF0TCxrQkFBQXNMOzswQ0FBQSxPQUFBO2dGQUFBdEwsa0JBQUFzTDs7eUNBQUEsT0FBQTsrRUFBQXRMLGtCQUFBc0w7OzRDQUFBSzsyQ0FBQUEsbUJBQUFBO3lDQUFBOzBDQUFBQyxXQUFBRDswQ0FBQUUsV0FyQkFmLHdCQXFCQWM7eUNBQUEsV0FBQUM7O3dDQUFBLE9BQUE7O2lEQUFBN0w7aURBQUF1TDtpREFBQUQ7O3VDQUFBLE9BQUE7NkVBQUF0TCxrQkFBQXNMOztzQ0FBQSxPQUFBOzRFQUFBdEwsa0JBQUFzTDs7cUNBQUEsT0FBQTsyRUFBQXRMLGtCQUFBc0w7O29DQUFBLE9BQUE7MEVBQUF0TCxrQkFBQXNMOzttQ0FBQSxPQUFBO3lFQUFBdEwsa0JBQUFzTDs7c0NBQUFRO3FDQUFBQSxtQkFBQUE7bUNBQUE7b0NBQUFDLFdBQUFEO29DQUFBRSxXQXJCQWxCLHdCQXFCQWlCO21DQUFBLFdBQUFDOztrQ0FBQSxPQUFBOzsyQ0FBQWhNOzJDQUFBdUw7MkNBQUFEOztpQ0FBQSxPQUFBO3VFQUFBdEwsa0JBQUFzTDs7Z0NBQUEsT0FBQTtzRUFBQXRMLGtCQUFBc0w7OytCQUFBLE9BQUE7cUVBQUF0TCxrQkFBQXNMOzs4QkFBQSxPQUFBO29FQUFBdEwsa0JBQUFzTDs7NkJBQUEsT0FBQTttRUFBQXRMLGtCQUFBc0w7OzRCQUFBLE9BQUE7a0VBQUF0TCxrQkFBQXNMOzsrQkFBQVc7OEJBQUFBLG1CQUFBQTs0QkFBQTs2QkFBQUMsV0FBQUQ7NkJBQUFFLFdBckJBckIsd0JBcUJBb0I7NEJBQUEsV0FBQUM7OzJCQUFBLE9BQUE7O29DQUFBbk07b0NBQUF1TDtvQ0FBQUQ7OzBCQUFBLE9BQUE7Z0VBQUF0TCxrQkFBQXNMOzt5QkFBQSxPQUFBOytEQUFBdEwsa0JBQUFzTDs7d0JBQUEsT0FBQTs4REFBQXRMLGtCQUFBc0w7O3VCQUFBLE9BQUE7NkRBQUF0TCxrQkFBQXNMOztzQkFBQSxPQUFBOzREQUFBdEwsa0JBQUFzTDs7cUJBQUEsT0FBQTsyREFBQXRMLGtCQUFBc0w7O29CQUFBLE9BQUE7MERBQUF0TCxrQkFBQXNMOzttQkFBQSxPQUFBO3lEQUFBdEwsa0JBQUFzTDs7a0JBQUEsT0FBQTt3REFBQXRMLGtCQUFBc0w7O2lCQUFBLE9BQUE7dURBQUF0TCxrQkFBQXNMOztnQkFBQSxPQUFBO3NEQUFBdEwsa0JBQUFzTDs7ZUFBQSxPQUFBO3FEQUFBdEwsa0JBQUFzTDs7Y0FBQSxPQUFBO29EQUFBdEwsa0JBQUFzTDs7YUFBQSxPQUFBO21EQUFBdEwsa0JBQUFzTDs7WUFBQSxPQUFBO2tEQUFBdEwsa0JBQUFzTDs7V0FBQSxPQUFBO2lEQUFBdEwsa0JBQUFzTDs7Y0FBQWM7YUFBQUEsbUJBQUFBO1dBQUE7WUFBQUMsV0FBQUQ7WUFBQUUsV0FBQSxvQ0FBQUQ7V0FBQSxXQUFBQzs7VUFBQSxPQUFBOzttQkFBQXRNO21CQUFBdUw7bUJBQUFEOztTQUFBLE9BQUE7K0NBQUF0TCxrQkFBQXNMOztRQUFBLE9BQUE7OENBQUF0TCxrQkFBQXNMOztPQUFBLE9BQUE7NkNBQUF0TCxrQkFBQXNMOztNQUFBLE9BQUE7NENBQUF0TCxrQkFBQXNMOztLQUFBLE9BQUE7MkNBQUF0TCxrQkFBQXNMOztJQUFBLE9BQUEsd0NBQUF0TCxrQkFBQXNMO0dBOEVrQjtZQTlFbEJpQjtJQUFBOzs7UUFlSSxJQUFBQyxxQkFBQUMsV0FwQ0p6Qix3QkFvQ0l3QjtRQUFBLHlCQUFBQzs7UUFJQSxJQUFBQyxxQkFBQUMsV0F4Q0ozQix3QkF3Q0kwQjtRQUFBLHlCQUFBQzs7UUFDQSxJQUFBQyxxQkFBQUMsV0F6Q0o3Qix3QkF5Q0k0QjtRQUFBLHlCQUFBQzs7UUFRQTtTQUFBQztTQUFBQyxXQUFBLG9DQUFBRDtRQUFBLHlCQUFBQzs7UUFDQTtTQUFBQztTQUFBQyxXQUFBLG9DQUFBRDtRQUFBLHlCQUFBQzs7Ozs7O1FBY0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7O1FBQ0E7Z0JBQ0E7Ozs7T0E3RUE7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BRUE7O09BQ0E7O09BQ0E7O09BR0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BR0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7O09BQ0E7ZUFDQTs7R0FvQ2M7WUE5RWxCQyxrQkFBQWpNO0lBQUEsVUFBQUE7Z0JBQUFBOztpQkFBQUE7Ozs7Ozs7Ozs7Ozs7O09BQUEsT0FBQSw4Q0FBQWhCLFVBQUFnQjs7O2lCQUFBQTs7T0FBQSxPQUFBLDhDQUFBaEIsVUFBQWdCOzs7OztZQUFBeUUsOENBQUFBOzs7O29CQUFBO3dEQUFBekYsVUFBQWdCOzs0Q0FBQXlFOzs7O3FCQUFBO3lEQUFBekYsVUFBQWdCOzs2Q0FBQXlFOzs7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7Z0JBQUFDO2VBQUFBLGlCQUFBQTthQUFBO2NBQUFDLEtBQUFEO2NBQUFFLE9BQUEsb0NBQUFEO2FBQUEsV0FBQUM7O1lBQUEsT0FBQTt3REFBQTVGLFVBQUF5RixLQUFBekU7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7OztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOzs7Ozs2Q0FBQXlFOzs7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOzs7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7Ozs7Ozs0Q0FBQXlFOzs7O3FCQUFBO3lEQUFBekYsVUFBQWdCOzs2Q0FBQXlFOzs7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTtnQkFBQU87ZUFBQUEsbUJBQUFBO2FBQUE7Y0FBQUMsT0FBQUQ7Y0FBQUUsT0FyQkE4RSwwQkFxQkEvRTthQUFBLFdBQUFDOztZQUFBLE9BQUE7d0RBQUFsRyxVQUFBeUYsS0FBQXpFOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7Z0JBQUFVO2VBQUFBLG1CQUFBQTthQUFBO2NBQUFDLE9BQUFEO2NBQUFFLE9BckJBMkUsMEJBcUJBNUU7YUFBQSxXQUFBQzs7WUFBQSxPQUFBO3dEQUFBckcsVUFBQXlGLEtBQUF6RTs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7Ozs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFO2dCQUFBSTtlQUFBQSxtQkFBQUE7YUFBQTtjQUFBQyxPQUFBRDtjQUFBRSxPQXJCQWlGLDBCQXFCQWxGO2FBQUEsV0FBQUM7O1lBQUEsT0FBQTt3REFBQS9GLFVBQUF5RixLQUFBekU7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7Ozs7OzZDQUFBeUU7Ozs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7Ozs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTtnQkFBQWdCO2VBQUFBLG1CQUFBQTthQUFBO2NBQUFDLE9BQUFEO2NBQUFFLE9BQUEsb0NBQUFEO2FBQUEsV0FBQUM7O1lBQUEsT0FBQTt3REFBQTNHLFVBQUF5RixLQUFBekU7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7cUNBQUF5RTs7c0JBQUE7MERBQUF6RixVQUFBZ0I7O3FDQUFBeUU7O3NCQUFBOzBEQUFBekYsVUFBQWdCOztxQ0FBQXlFOztzQkFBQTswREFBQXpGLFVBQUFnQjs7Ozs7OztRQUFBLE9BQUEsOENBQUFoQixVQUFBZ0I7Ozs7SUFBQSxPQUFBLDhDQUFBaEIsVUFBQWdCO0dBOEVrQjtZQTlFbEJrTTtJQUFBOzs7UUFlSSxJQUFBdkgsZUFBQUMsT0FwQ0pxRiwwQkFvQ0l0RjtRQUFBLG9DQUFBQzs7UUFJQSxJQUFBUSxpQkFBQUMsT0F4Q0o0RSwwQkF3Q0k3RTtRQUFBLG9DQUFBQzs7UUFDQSxJQUFBSixpQkFBQUMsT0F6Q0orRSwwQkF5Q0loRjtRQUFBLG9DQUFBQzs7UUFRQSxJQUFBSixpQkFBQUMsT0FBQSxvQ0FBQUQ7UUFBQSxvQ0FBQUM7O1FBQ0EsSUFBQVcsaUJBQUFDLE9BQUEsb0NBQUFEO1FBQUEsb0NBQUFDOzs7Ozs7UUFjQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTs7UUFDQTtnQkFDQTs7OztPQTdFQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FFQTs7T0FDQTs7T0FDQTs7T0FHQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FHQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTs7T0FDQTtlQUNBOztHQW9DYzs7SUFFbEJ3RztJQUFBQzs7S0FBQUQ7Y0FDQXpNLEtBQUF0STtNQUFBLCtCQUFBc0k7TUFBQSwrQkFBQUE7aUJBQUF0STtNQUFBLFdBREEsV0FqRkE4UyxZQWtGQXhLO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2lCQUFBdEk7TUFBQSxXQURBLGlDQUNBc0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7a0JBQUF0STs7V0FHaUJpVjtPQUFBLDhCQUhqQjNNO1dBREE0TSxLQUlpQkQsUUFKakJySyxLQUlpQnFLO09BQU8sK0JBSHhCM007T0FEQSxXQUFBLDRCQUNBQSxNQURBc0M7T0FJd0IsK0JBSHhCdEM7T0FEQSxXQUFBLGlDQUNBQSxNQURBNE07T0FBQSwrQkFDQTVNO09BR2lCLDhCQUhqQkE7OztPQUdpQiw4QkFIakJBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO01BQUEsK0JBQUFBO2lCQUFBdEk7TUFBQSxXQUllLCtCQUpmc0k7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7TUFBQSwrQkFBQUE7VUFLWTZNLE1BTFpuVjtNQUtZLCtCQUxac0k7O29CQUtZOE0sS0FBQXBWO09BQUEsR0FBQW9WLEtBQUEsK0JBTFo5TTtPQUtZLFdBTlosV0E3R0FtRyxZQThHQW5HLE1BS1l0STtPQUFBO01BQWE7TUFBYix3Q0FBQW1WO01BQUEsK0JBTFo3TTtNQUFBLCtCQUFBQTtNQUFBLE9BQUEsK0JBQUFBO0tBTUM7O0tBUEQwTTtjQUNBaFYsR0FBQSxPQUFBLHFDQURBK1UsU0FDQS9VLEdBTUM7WUFORHFWLGFBQUFDO0lBQUEsU0FBQUE7S0FBQSxPQUFBOzRDQUFBek4sa0JBQUF5TjtJQUFBO0tBQUFDLGtCQUFBRDtLQUNFRTtLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUxGQztLQUFBQzs7Ozs7Ozs7O21CQUFBUDtPQUFBOztZQUFBUTtpQkFBQUE7bUJBQUFBOzs7O1lBQUFDLDJCQUFBQztXQUFBRCxtQkFBQUE7O1NBQUFFO1NBQUFDO29CQUFBSDtxQkFBQUk7YUFBQSxLQUFBSjtjQUFBLE9BQUE7cURBQUFuTyxrQkFBQXlOO2dCQUFBVTtjQUFBLE1BQUE7aUJBQUFLLFFBQUFMO2FBQUEsT0FBQUs7WUFNQzttQkFOREQ7O1NBQUFBLGlCQUFBRCxpQkFBQUg7Z0NBQUFDO2lDQUFBQTtrQ0FBQUE7bUNBQUFBO29DQUFBQTs7Y0FBQUgsbUJBQUFHLGdCQUFBSDs7b0JBRUVMO2FBRkZJLHdCQUFBSSxnQkFBQUo7O2FBRUU7Y0FGRlMsbUJBQUFGO2NBRUVHLGFBQUEsaUNBRkZEO2FBRUViLDRCQUFBYzs7bUJBREFmO1lBREZLLHdCQUFBSSxnQkFBQUo7O1lBQ0U7YUFERlcsbUJBQUFKO2FBQ0VLLGFBbEZGekQsZ0JBaUZBd0Q7WUFDRWhCLGdCQUFBaUI7O2tCQUdBZDtXQUpGRSx3QkFBQUksZ0JBQUFKOztXQUlFO1lBSkZhLG1CQUFBTjtZQUlFTyxhQUFBLDRCQUpGRDtXQUlFZix5QkFBQWdCOztpQkFEQWpCO1VBSEZHLHdCQUFBSSxnQkFBQUo7O1VBR0U7V0FIRmUsbUJBQUFSOztzQkFHd0JTO2NBQVAsU0FBT0E7MEJBQUFBOzs7O2lCQUFBO2tCQUFBQztrQkFBQUM7a0JBQUFDLFdBQUEsNEJBQUFEO2tCQUFBRSxXQUFBLGlDQUFBSDtpQkFBQSxXQUFBRSxVQUFBQzs7OztjQUFBLE9BQUE7b0RBSHhCcFAscUJBR3dCZ1A7YUFBa0I7V0FBeENLLGFBQUEsa0NBSEZOO1VBR0VsQiwyQkFBQXdCOztnQkFFQXRCO1NBTEZDLHdCQUFBSSxnQkFBQUo7O1NBS0U7VUFMRnNCLG1CQUFBZjtVQUtFZ0I7WUFBQSw0QkFsSEZ6SSxpQkE2R0F3STtTQUtFdkIsc0JBQUF3Qjs7b0JBTEZsQjs7Ozs7O0tBQUEseUNBQUFyTyxrQkFBQWtPOztPQUFBRjtLQUFBLE9BQUE7O2NBQUFoTztjQUFBZ087Y0FBQVA7T0FBQVE7S0FBQSxPQUFBOztjQUFBak87Y0FBQWlPO2NBQUFSOztZQUNFRTtZQUNBQztZQUNBQztZQUNBQzthQUNBQzs7O01BQUF5QjtNQURBQztNQURBQztNQURBQztNQURBQztLQURGO2FBQ0VBO2FBQ0FEO2FBQ0FEO2FBQ0FEO2FBQ0FEOztJQUxGLE9BQUE7O2FBQUF4UDthQUFBeU47O3dCQUNFRTs7eUJBQ0FDOzswQkFDQUM7OzJCQUNBQzsrQkFDQUM7R0FDRDtZQU5EOEI7SUFBQTtLQUtFQztLQURBQztLQURBQztLQURBQztLQURBQztLQUlBQyxVQUFBLDRCQWxIRjdILGlCQWtIRXdIO0tBTEZNLGlDQUtFRDtLQURBRSxVQUFBLDJCQUFBTjtLQUpGTyxtQ0FJRUQsZUFKRkQ7OztNQUd3Qkc7TUFBQUM7TUFBQUMsdUNBQUFEO01BQUFFLDRDQUFBSDtvQkFBQUUsY0FBQUM7O0lBQXRCO0tBQUFDLFVBQUEsa0NBQUFYO0tBSEZZLG1DQUdFRCxlQUhGTDtLQUVFTyxVQUFBLGlDQUFBWjtLQUZGYSxtQ0FFRUQsZUFGRkQ7S0FDRUcsVUFsRkYxRSxnQkFrRkU2RDtLQURGYyxtQ0FDRUQsZUFERkQ7SUFBQSxXQUFBRTtHQU1DO1lBTkRDLGVBQUFsUTtJLFVBQUFBLHFDQUFBQTtLQUNFO01BREZrSSxnQkFBQWxJO01BQ0VtUTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUxGakk7TUFBQUM7Y0FBQUw7S0FBQTs7O09BQUFNOztPQUFBQztPQUFBQzs4QkFBQUE7K0JBQUFBO2dDQUFBQTtpQ0FBQUE7a0NBQUFBO1dBQUE7YUFBQTs7WUFBQUg7aUJBQUFHLFlBQUEsbUNBQUFIOztrQkFFRSxtQ0FBQTZIO1dBRkY5SDtnQkFBQUksWUFFRSxtQ0FGRko7O1dBRUUsSUFBQUssU0FBQSxpQ0FGRkY7V0FFRTJILDhCQUFBekg7O2lCQURBLG1DQUFBd0g7VUFERjdIO2VBQUFJLFlBQ0UsbUNBREZKOztVQUNFLElBQUFNLFdBbEZGcUQsa0JBaUZBeEQ7VUFDRTBILGtCQUFBdkg7O2dCQUdBLG1DQUFBMEg7U0FKRmhJO2NBQUFJLFlBSUUsbUNBSkZKOztTQUlFO1VBQUFPO1lBQUEscURBSkZKO1NBSUU2SCwyQkFBQXpIOztlQURBLG1DQUFBd0g7UUFIRi9IO2FBQUFJLFlBR0UsbUNBSEZKOzs7O29CQUd3QnRJO1ksVUFBQUEscUNBQUFBO3dCQUFBQTs7Ozs7Z0JBQUF3UTtnQkFBQTdMO2dCQUFBQyxtQ0FBQUQ7Z0JBQUE4TCx3Q0FBQUQ7MEJBQUE1TCxNQUFBNkw7Ozs7O3dEQUh4QnZSLGFBR3dCYzs7U0FBdEIwUTs7NkRBSEZqSTtRQUdFNEgsNkJBQUFLOztjQUVBLG1DQUFBSDtPQUxGakk7WUFBQUksWUFLRSxtQ0FMRko7OztRQUtFcUk7OztZQWxIRjFJO1lBNkdBUTtPQUtFOEgsd0JBQUFJOztrQkFMRm5JOztRQUFBLG1DQUFBRjtNQUFBLFdBQUEsbUNBQUFBO01BQUEsT0FBQTttREFBQXBKLGdCQUFBYzs7UUFBQSxtQ0FBQXVJO01BQUEsV0FBQSxtQ0FBQUE7TUFBQSxPQUFBO21EQUFBckosZ0JBQUFjOztLQUNFO01BQUEsVUFBQSxtQ0FBQW1RO01BQ0EsVUFBQSxtQ0FBQUM7TUFDQSxVQUFBLG1DQUFBQztNQUNBLFVBQUEsbUNBQUFDO01BQ0EsVUFBQSxtQ0FBQUM7OztPQUFBSztPQURBQztPQURBQztPQURBQztPQURBQztNQURGO2NBQ0VBO2NBQ0FEO2NBQ0FEO2NBQ0FEO2NBQ0FEOztLQUxGO01BQUE7OztnQkFLRSxtQ0FBQUw7OztNQUxGOzs7Z0JBSUUsbUNBQUFEOzs7TUFKRjs7O2dCQUdFLG1DQUFBRDs7Ozs7TUFIRjs7O2dCQUVFLG1DQUFBRDs7Ozs7TUFGRjs7O2dCQUNFLG1DQUFBRDs7O0tBREYsT0FBQTtrREFBQWpSLFVBQUFjOztJQUFBLE9BQUEsK0NBQUFkLFVBQUFjOztZQUFBaVI7SUFBQTtLQUtFQztLQURBQztLQURBQztLQURBQztLQURBQztLQUlBakk7OztTQWxIRko7U0FrSEVpSTtLQUFBNUgsK0JBQUFEO0tBREFFOzJEQUFBNEg7S0FBQTNILG9DQUFBRCxRQUNBRDs7O01BRnNCa0g7TUFBQTdMO01BQUFDLG1DQUFBRDtNQUFBOEwsd0NBQUFEOytCQUFBNUwsVUFBQTZMOzs7S0FBdEJoSDs7eURBQUEySDtLQUFBMUgsc0NBQUFELFFBQ0FEO0tBRkErSCx5Q0FBQUY7S0FBQUcsdUNBQUFELFFBQ0E3SDtLQUZBK0gsUUFsRkZ2RixrQkFrRkVvRjtLQUFBSSwyQkFBQUQsUUFDQUQ7SUFGRixzQkFDRUU7R0FLRDs7SUFJREM7SUFBQUM7O0tBQUFEO2NBQ0FqUztNQUFBOzs7Y0FEQXNDO1VBQ0EsK0JBQUF0QztVQWxIQWlLLG1CQWtIQWpLLEtBREFzQztVQUFBLE9BQUEsK0JBQ0F0Qzs7Y0FEQXVDO1VBQ0EsK0JBQUF2QztVQWxIQWlLLG1CQWtIQWpLLEtBREF1QztVQUFBLE9BQUEsK0JBQ0F2Qzs7Y0FEQXdDO1VBQ0EsK0JBQUF4QztVQWxIQWlLLG1CQWtIQWpLLEtBREF3QztVQUFBLE9BQUEsK0JBQ0F4Qzs7Y0FEQXlDO1VBQ0EsK0JBQUF6QztVQURBLFdBQUEsb0NBQ0FBLE1BREF5QztVQUFBLE9BQUEsK0JBQ0F6Qzs7Y0FEQTBDO1VBQ0EsK0JBQUExQztVQURBLFdBQUEsb0NBQ0FBLE1BREEwQztVQUFBLE9BQUEsK0JBQ0ExQzs7Ozs7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQTtzQ0FBQUE7O1VBQUEsT0FBQTtzQ0FBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7O1VBQUEsT0FBQSw4QkFBQUE7Ozs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTs7U0FBQSxPQUFBLDhCQUFBQTtpQkFBQSxPQUFBLDhCQUFBQTs7S0E4RWtCOztLQS9FbEJrUztjQUNBeGEsR0FBQSxPQUFBLHFDQURBdWEsYUFDQXZhLEdBOEVrQjtZQTlFbEJ5YSxpQkFBQUM7SUFBQTs7Y0FBQUE7aUJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzttRkFBQTs7a0ZBQUE7O2lGQUFBOztnRkFBQTs7K0VBQUE7OzhFQUFBLE9BQUE7b0hBQUEzUyxrQkFBQTJTOzs2RUFBQTs7NEVBQUE7OzJFQUFBOzswRUFBQTs7eUVBQUE7O3dFQUFBOzt1RUFBQTs7c0VBQUE7O3FFQUFBOztvRUFBQTs7bUVBQUE7O2tFQUFBOztpRUFBQTs7Z0VBQUE7OytEQUFBOzs4REFBQTs7NkRBQUE7OzREQUFBOzsyREFBQTs7MERBQUE7O3lEQUFBOzt3REFBQTs7dURBQUE7O3NEQUFBOztxREFBQTs7b0RBQUE7O21EQUFBOztrREFBQTs7aURBQUE7O2dEQUFBOzsrQ0FBQTs7OENBQUE7OzZDQUFBOzs0Q0FBQTs7MkNBQUE7OzBDQUFBOzt5Q0FBQSxPQUFBOytFQUFBM1Msa0JBQUEyUzs7d0NBQUE7O3VDQUFBOztzQ0FBQTs7cUNBQUE7O29DQUFBOzttQ0FBQSxPQUFBO3lFQUFBM1Msa0JBQUEyUzs7a0NBQUE7O2lDQUFBOztnQ0FBQTs7K0JBQUE7OzhCQUFBOzs2QkFBQTs7NEJBQUEsT0FBQTtrRUFBQTNTLGtCQUFBMlM7OzJCQUFBOzswQkFBQTs7eUJBQUE7O3dCQUFBOzt1QkFBQTs7c0JBQUE7O3FCQUFBOztvQkFBQTs7bUJBQUE7O2tCQUFBOztpQkFBQTs7Z0JBQUE7O2VBQUE7O2NBQUE7O2FBQUE7O1lBQUE7O1dBQUEsT0FBQTtpREFBQTNTLGtCQUFBMlM7O1VBQUE7O1NBQUE7O1FBQUE7O09BQUE7O01BQUE7O2dCQUFBQTs7TUFBQSxPQUFBOzRDQUFBM1Msa0JBQUEyUzs7O01BQUEsT0FBQTs0Q0FBQTNTLGtCQUFBMlM7U0FBQUMsOENBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tIQUFBQTs7bUhBQUFBOzs7b0hBQUFBOzs7Z0hBQUFBOztnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7Z0hBQUFBOztnSEFBQUE7OEdBQUFBOzs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTs2R0FBQUE7OzttSEFBQUE7OzsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7NkdBQUFBOzs7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs0R0FBQUE7Ozs7bUhBQUFBOzs7b0hBQUFBOzs7Z0hBQUFBOztnSEFBQUE7O2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7OEdBQUFBOzs7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTs2R0FBQUE7OzttSEFBQUE7OzsrR0FBQUE7K0dBQUFBOytHQUFBQTs7Ozt5RkFBQUE7Ozs7NEdBQUFBOzsrR0FBQUE7K0dBQUFBOytHQUFBQTs2R0FBQUE7Ozs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs7NEdBQUFBOzs7OztrSEFBQUE7O21IQUFBQTs7O29IQUFBQTs7O2dIQUFBQTtnSEFBQUE7O2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7O2dIQUFBQTs4R0FBQUE7Ozs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzZHQUFBQTs7O21IQUFBQTs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOytHQUFBQTsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OzZHQUFBQTs7Ozs4R0FBQUE7OEdBQUFBOzs4R0FBQUE7OEdBQUFBOzhHQUFBQTs4R0FBQUE7OEdBQUFBOzhHQUFBQTs0R0FBQUE7Ozs7bUhBQUFBOzs7b0hBQUFBOzs7Z0hBQUFBOztnSEFBQUE7O2dIQUFBQTtnSEFBQUE7Z0hBQUFBO2dIQUFBQTtnSEFBQUE7OEdBQUFBOzs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OytHQUFBQTs7K0dBQUFBOzsrR0FBQUE7OzZHQUFBQTs7O21IQUFBQTs7OytHQUFBQTsrR0FBQUE7K0dBQUFBOzs7Ozt5RkFBQUE7Ozs7O3lGQUFBQTs7K0dBQUFBOytHQUFBQTsrR0FBQUE7NkdBQUFBOzs7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs4R0FBQUE7OzhHQUFBQTs7OEdBQUFBOzs4R0FBQUE7OzhHQUFBQTs7NEdBQUFBOzs7O2tGQUFBLE9BQUE7d0hBQUE1UyxrQkFBQTJTOztpRkFBQSxPQUFBO3VIQUFBM1Msa0JBQUEyUzs7Z0ZBQUEsT0FBQTtzSEFBQTNTLGtCQUFBMlM7OytFQUFBLE9BQUE7cUhBQUEzUyxrQkFBQTJTOzs4RUFBQSxPQUFBO29IQUFBM1Msa0JBQUEyUzs7aUZBQUFFO2dGQUFBQSxtQkFBQUE7OEVBQUE7K0VBQUFDLFdBQUFEOytFQUFBRSxXQUFBLG9DQUFBRDs4RUFBQSxXQUFBQzs7NkVBQUEsT0FBQTs7c0ZBQUEvUztzRkFBQTRTO3NGQUFBRDs7NEVBQUEsT0FBQTtrSEFBQTNTLGtCQUFBMlM7OzJFQUFBLE9BQUE7aUhBQUEzUyxrQkFBQTJTOzswRUFBQSxPQUFBO2dIQUFBM1Msa0JBQUEyUzs7eUVBQUEsT0FBQTsrR0FBQTNTLGtCQUFBMlM7O3dFQUFBLE9BQUE7OEdBQUEzUyxrQkFBQTJTOzt1RUFBQSxPQUFBOzZHQUFBM1Msa0JBQUEyUzs7c0VBQUEsT0FBQTs0R0FBQTNTLGtCQUFBMlM7O3FFQUFBLE9BQUE7MkdBQUEzUyxrQkFBQTJTOztvRUFBQSxPQUFBOzBHQUFBM1Msa0JBQUEyUzs7bUVBQUEsT0FBQTt5R0FBQTNTLGtCQUFBMlM7O2tFQUFBLE9BQUE7d0dBQUEzUyxrQkFBQTJTOztpRUFBQSxPQUFBO3VHQUFBM1Msa0JBQUEyUzs7Z0VBQUEsT0FBQTtzR0FBQTNTLGtCQUFBMlM7OytEQUFBLE9BQUE7cUdBQUEzUyxrQkFBQTJTOzs4REFBQSxPQUFBO29HQUFBM1Msa0JBQUEyUzs7NkRBQUEsT0FBQTttR0FBQTNTLGtCQUFBMlM7OzREQUFBLE9BQUE7a0dBQUEzUyxrQkFBQTJTOzsyREFBQSxPQUFBO2lHQUFBM1Msa0JBQUEyUzs7MERBQUEsT0FBQTtnR0FBQTNTLGtCQUFBMlM7O3lEQUFBLE9BQUE7K0ZBQUEzUyxrQkFBQTJTOzt3REFBQSxPQUFBOzhGQUFBM1Msa0JBQUEyUzs7dURBQUEsT0FBQTs2RkFBQTNTLGtCQUFBMlM7O3NEQUFBLE9BQUE7NEZBQUEzUyxrQkFBQTJTOztxREFBQSxPQUFBOzJGQUFBM1Msa0JBQUEyUzs7b0RBQUEsT0FBQTswRkFBQTNTLGtCQUFBMlM7O21EQUFBLE9BQUE7eUZBQUEzUyxrQkFBQTJTOztrREFBQSxPQUFBO3dGQUFBM1Msa0JBQUEyUzs7aURBQUEsT0FBQTt1RkFBQTNTLGtCQUFBMlM7O2dEQUFBLE9BQUE7c0ZBQUEzUyxrQkFBQTJTOzsrQ0FBQSxPQUFBO3FGQUFBM1Msa0JBQUEyUzs7OENBQUEsT0FBQTtvRkFBQTNTLGtCQUFBMlM7OzZDQUFBLE9BQUE7bUZBQUEzUyxrQkFBQTJTOzs0Q0FBQSxPQUFBO2tGQUFBM1Msa0JBQUEyUzs7MkNBQUEsT0FBQTtpRkFBQTNTLGtCQUFBMlM7OzBDQUFBLE9BQUE7Z0ZBQUEzUyxrQkFBQTJTOzt5Q0FBQSxPQUFBOytFQUFBM1Msa0JBQUEyUzs7NENBQUFLOzJDQUFBQSxtQkFBQUE7eUNBQUE7MENBQUFDLFdBQUFEOzBDQUFBRSxXQWpIQXhJLHdCQWlIQXVJO3lDQUFBLFdBQUFDOzt3Q0FBQSxPQUFBOztpREFBQWxUO2lEQUFBNFM7aURBQUFEOzt1Q0FBQSxPQUFBOzZFQUFBM1Msa0JBQUEyUzs7c0NBQUEsT0FBQTs0RUFBQTNTLGtCQUFBMlM7O3FDQUFBLE9BQUE7MkVBQUEzUyxrQkFBQTJTOztvQ0FBQSxPQUFBOzBFQUFBM1Msa0JBQUEyUzs7bUNBQUEsT0FBQTt5RUFBQTNTLGtCQUFBMlM7O3NDQUFBUTtxQ0FBQUEsbUJBQUFBO21DQUFBO29DQUFBQyxXQUFBRDtvQ0FBQUUsV0FqSEEzSSx3QkFpSEEwSTttQ0FBQSxXQUFBQzs7a0NBQUEsT0FBQTs7MkNBQUFyVDsyQ0FBQTRTOzJDQUFBRDs7aUNBQUEsT0FBQTt1RUFBQTNTLGtCQUFBMlM7O2dDQUFBLE9BQUE7c0VBQUEzUyxrQkFBQTJTOzsrQkFBQSxPQUFBO3FFQUFBM1Msa0JBQUEyUzs7OEJBQUEsT0FBQTtvRUFBQTNTLGtCQUFBMlM7OzZCQUFBLE9BQUE7bUVBQUEzUyxrQkFBQTJTOzs0QkFBQSxPQUFBO2tFQUFBM1Msa0JBQUEyUzs7K0JBQUFXOzhCQUFBQSxtQkFBQUE7NEJBQUE7NkJBQUFDLFdBQUFEOzZCQUFBRSxXQWpIQTlJLHdCQWlIQTZJOzRCQUFBLFdBQUFDOzsyQkFBQSxPQUFBOztvQ0FBQXhUO29DQUFBNFM7b0NBQUFEOzswQkFBQSxPQUFBO2dFQUFBM1Msa0JBQUEyUzs7eUJBQUEsT0FBQTsrREFBQTNTLGtCQUFBMlM7O3dCQUFBLE9BQUE7OERBQUEzUyxrQkFBQTJTOzt1QkFBQSxPQUFBOzZEQUFBM1Msa0JBQUEyUzs7c0JBQUEsT0FBQTs0REFBQTNTLGtCQUFBMlM7O3FCQUFBLE9BQUE7MkRBQUEzUyxrQkFBQTJTOztvQkFBQSxPQUFBOzBEQUFBM1Msa0JBQUEyUzs7bUJBQUEsT0FBQTt5REFBQTNTLGtCQUFBMlM7O2tCQUFBLE9BQUE7d0RBQUEzUyxrQkFBQTJTOztpQkFBQSxPQUFBO3VEQUFBM1Msa0JBQUEyUzs7Z0JBQUEsT0FBQTtzREFBQTNTLGtCQUFBMlM7O2VBQUEsT0FBQTtxREFBQTNTLGtCQUFBMlM7O2NBQUEsT0FBQTtvREFBQTNTLGtCQUFBMlM7O2FBQUEsT0FBQTttREFBQTNTLGtCQUFBMlM7O1lBQUEsT0FBQTtrREFBQTNTLGtCQUFBMlM7O1dBQUEsT0FBQTtpREFBQTNTLGtCQUFBMlM7O2NBQUFjO2FBQUFBLG1CQUFBQTtXQUFBO1lBQUFDLFdBQUFEO1lBQUFFLFdBQUEsb0NBQUFEO1dBQUEsV0FBQUM7O1VBQUEsT0FBQTs7bUJBQUEzVDttQkFBQTRTO21CQUFBRDs7U0FBQSxPQUFBOytDQUFBM1Msa0JBQUEyUzs7UUFBQSxPQUFBOzhDQUFBM1Msa0JBQUEyUzs7T0FBQSxPQUFBOzZDQUFBM1Msa0JBQUEyUzs7TUFBQSxPQUFBOzRDQUFBM1Msa0JBQUEyUzs7S0FBQSxPQUFBOzJDQUFBM1Msa0JBQUEyUzs7SUFBQSxPQUFBLHdDQUFBM1Msa0JBQUEyUztHQThFa0I7WUE5RWxCaUI7SUFBQTs7O1FBZUksSUFBQUMscUJBQUFDLFdBaElKbEosd0JBZ0lJaUo7UUFBQSx5QkFBQUM7O1FBSUEsSUFBQUMscUJBQUFDLFdBcElKcEosd0JBb0lJbUo7UUFBQSx5QkFBQUM7O1FBRUEsSUFBQUMscUJBQUFDLFdBdElKdEosd0JBc0lJcUo7UUFBQSx5QkFBQUM7O1FBT0E7U0FBQUM7U0FBQUMsV0FBQSxvQ0FBQUQ7UUFBQSx5QkFBQUM7O1FBQ0E7U0FBQUM7U0FBQUMsV0FBQSxvQ0FBQUQ7UUFBQSx5QkFBQUM7Ozs7OztRQWNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBOztRQUNBO2dCQUNBOzs7O09BN0VBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUVBOztPQUNBOztPQUNBOztPQUVBOztPQUVBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUdBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBOztPQUNBO2VBQ0E7O0dBb0NjO1lBOUVsQkMsbUJBQUExVDtJQUFBLFVBQUFBO2dCQUFBQTs7aUJBQUFBOzs7Ozs7Ozs7Ozs7OztPQUFBLE9BQUEsOENBQUFaLFVBQUFZOzs7aUJBQUFBOztPQUFBLE9BQUEsOENBQUFaLFVBQUFZOzs7OztZQUFBeUUsOENBQUFBOzs7O29CQUFBO3dEQUFBckYsVUFBQVk7OzRDQUFBeUU7Ozs7cUJBQUE7eURBQUFyRixVQUFBWTs7NkNBQUF5RTs7OztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFO2dCQUFBQztlQUFBQSxpQkFBQUE7YUFBQTtjQUFBQyxLQUFBRDtjQUFBRSxPQUFBLG9DQUFBRDthQUFBLFdBQUFDOztZQUFBLE9BQUE7d0RBQUF4RixVQUFBcUYsS0FBQXpFOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOzs7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7O3FDQUFBeUU7O3NCQUFBOzBEQUFBckYsVUFBQVk7Ozs7OzZDQUFBeUU7Ozs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7cUNBQUF5RTs7c0JBQUE7MERBQUFyRixVQUFBWTs7OztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOztxQ0FBQXlFOztzQkFBQTswREFBQXJGLFVBQUFZOzs7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Q0EwRFZILE9BdEVRRSxRQUFRSixPQUFRSjtXQWE5Qiw0QkFiY1E7dUJBWVZDOztnQkFJTkM7V0FHSTtZQUhKQywwQkFBQUQ7WUFHSSxNQUFBLCtCQUhKQztXQUNFOytCQUlnQiwrQkFMbEJBOztpQ0FRR0Msb0JBQVUsT0FBVkE7Y0FNR0M7b0JBQUFBLDBCQUFBQTtXQUhRO1lBRlFDLFFBS2hCRDtZQUhRLE1BQUEsdUNBRlFDO1dBRXRCO1dBQUEsT0EyQ1FSOztVQXZDTSxVQUFBLG1DQURSTztVQUNOO1VBQUEsT0F1Q1FQOztLQU1OLE9BQUEsaURBTk1BO0lBc0JOOytDQTNCRUE7R0E0Qkw7R0FHSSxZQUFBOzs7bUVBQ1k7SUFHUDtLQUFBOzs7OztRQTNETlA7UUFzQkFNO0tBd0NhLE1BQUE7SUFKakI7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Ozs7R0N2SE07R0FBQTs7O0UiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gc3RyZnRpbWVcbi8vIGdpdGh1Yi5jb20vc2Ftc29uanMvc3RyZnRpbWVcbi8vIEBfc2pzXG4vL1xuLy8gQ29weXJpZ2h0IDIwMTAgLSAyMDE1IFNhbWkgU2FtaHVyaSA8c2FtaUBzYW1odXJpLm5ldD5cbi8vXG4vLyBNSVQgTGljZW5zZVxuLy8gaHR0cDovL3Nqcy5taXQtbGljZW5zZS5vcmdcbi8vXG5cbjsoZnVuY3Rpb24oKSB7XG5cbiAgICB2YXIgRGVmYXVsdExvY2FsZSA9IHtcbiAgICAgICAgICAgIGRheXM6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXSxcbiAgICAgICAgICAgIHNob3J0RGF5czogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSxcbiAgICAgICAgICAgIG1vbnRoczogWydKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sXG4gICAgICAgICAgICBzaG9ydE1vbnRoczogWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYyddLFxuICAgICAgICAgICAgQU06ICdBTScsXG4gICAgICAgICAgICBQTTogJ1BNJyxcbiAgICAgICAgICAgIGFtOiAnYW0nLFxuICAgICAgICAgICAgcG06ICdwbScsXG4gICAgICAgICAgICBmb3JtYXRzOiB7XG4gICAgICAgICAgICAgICAgRDogJyVtLyVkLyV5JyxcbiAgICAgICAgICAgICAgICBGOiAnJVktJW0tJWQnLFxuICAgICAgICAgICAgICAgIFI6ICclSDolTScsXG4gICAgICAgICAgICAgICAgVDogJyVIOiVNOiVTJyxcbiAgICAgICAgICAgICAgICBYOiAnJVQnLFxuICAgICAgICAgICAgICAgIGM6ICclYSAlYiAlZCAlWCAlWScsXG4gICAgICAgICAgICAgICAgcjogJyVJOiVNOiVTICVwJyxcbiAgICAgICAgICAgICAgICB2OiAnJWUtJWItJVknLFxuICAgICAgICAgICAgICAgIHg6ICclRCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFN0cmZ0aW1lID0gbmV3IFN0cmZ0aW1lKERlZmF1bHRMb2NhbGUsIDAsIGZhbHNlKSxcbiAgICAgICAgaXNDb21tb25KUyA9IHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnLFxuICAgICAgICBuYW1lc3BhY2U7XG5cbiAgICAvLyBDb21tb25KUyAvIE5vZGUgbW9kdWxlXG4gICAgaWYgKGlzQ29tbW9uSlMpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gbW9kdWxlLmV4cG9ydHMgPSBhZGFwdGVkU3RyZnRpbWU7XG4gICAgICAgIG5hbWVzcGFjZS5zdHJmdGltZSA9IGRlcHJlY2F0ZWRTdHJmdGltZTtcbiAgICAgICAgaWYoam9vX2dsb2JhbF9vYmplY3QpIGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cbiAgICAvLyBCcm93c2VycyBhbmQgb3RoZXIgZW52aXJvbm1lbnRzXG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEdldCB0aGUgZ2xvYmFsIG9iamVjdC4gV29ya3MgaW4gRVMzLCBFUzUsIGFuZCBFUzUgc3RyaWN0IG1vZGUuXG4gICAgICAgIG5hbWVzcGFjZSA9IGpvb19nbG9iYWxfb2JqZWN0IHx8IChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMgfHwgKDEsZXZhbCkoJ3RoaXMnKTsgfSgpKTtcbiAgICAgICAgbmFtZXNwYWNlLnN0cmZ0aW1lID0gYWRhcHRlZFN0cmZ0aW1lO1xuICAgIH1cblxuICAgIC8vIERlcHJlY2F0ZWQgQVBJLCB0byBiZSByZW1vdmVkIGluIHYxLjBcbiAgICB2YXIgX3JlcXVpcmUgPSBpc0NvbW1vbkpTID8gXCJyZXF1aXJlKCdzdHJmdGltZScpXCIgOiBcInN0cmZ0aW1lXCI7XG4gICAgdmFyIF9kZXByZWNhdGlvbldhcm5pbmdzID0ge307XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRpb25XYXJuaW5nKG5hbWUsIGluc3RlYWQpIHtcbiAgICAgICAgaWYgKCFfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS53YXJuID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gXCIgKyBuYW1lICsgXCIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMS4wLiBJbnN0ZWFkLCB1c2UgYFwiICsgaW5zdGVhZCArIFwiYC5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBfZGVwcmVjYXRpb25XYXJuaW5nc1tuYW1lXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYW1lc3BhY2Uuc3RyZnRpbWVUWiA9IGRlcHJlY2F0ZWRTdHJmdGltZVRaO1xuICAgIG5hbWVzcGFjZS5zdHJmdGltZVVUQyA9IGRlcHJlY2F0ZWRTdHJmdGltZVVUQztcbiAgICBuYW1lc3BhY2UubG9jYWxpemVkU3RyZnRpbWUgPSBkZXByZWNhdGVkU3RyZnRpbWVMb2NhbGl6ZWQ7XG5cbiAgICAvLyBBZGFwdCB0aGUgb2xkIEFQSSB3aGlsZSBwcmVzZXJ2aW5nIHRoZSBuZXcgQVBJLlxuICAgIGZ1bmN0aW9uIGFkYXB0Rm9yd2FyZHMoZm4pIHtcbiAgICAgICAgZm4ubG9jYWxpemUgPSBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgICAgICBmbi50aW1lem9uZSA9IGRlZmF1bHRTdHJmdGltZS50aW1lem9uZS5iaW5kKGRlZmF1bHRTdHJmdGltZSk7XG4gICAgICAgIGZuLnV0YyA9IGRlZmF1bHRTdHJmdGltZS51dGMuYmluZChkZWZhdWx0U3RyZnRpbWUpO1xuICAgIH1cblxuICAgIGFkYXB0Rm9yd2FyZHMoYWRhcHRlZFN0cmZ0aW1lKTtcbiAgICBmdW5jdGlvbiBhZGFwdGVkU3RyZnRpbWUoZm10LCBkLCBsb2NhbGUpIHtcbiAgICAgICAgLy8gZCBhbmQgbG9jYWxlIGFyZSBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBsb2NhbGUpXG4gICAgICAgIGlmIChkICYmIGQuZGF5cykge1xuICAgICAgICAgICAgbG9jYWxlID0gZDtcbiAgICAgICAgICAgIGQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIihmb3JtYXQsIFtkYXRlXSwgW2xvY2FsZV0pYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpIDogZGVmYXVsdFN0cmZ0aW1lO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICBhZGFwdEZvcndhcmRzKGRlcHJlY2F0ZWRTdHJmdGltZSk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0sIFtsb2NhbGVdKWBcIiwgXCJ2YXIgcyA9IFwiICsgX3JlcXVpcmUgKyBcIi5sb2NhbGl6ZShsb2NhbGUpOyBzKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWUoZm9ybWF0LCBbZGF0ZV0pYFwiLCBfcmVxdWlyZSArIFwiKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3RyZnRpbWUgPSBsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVFooZm10LCBkLCBsb2NhbGUsIHRpbWV6b25lKSB7XG4gICAgICAgIC8vIGxvY2FsZSBpcyBvcHRpb25hbCwgY2hlY2sgaWYgdGhpcyBpcyAoZm9ybWF0LCBkYXRlLCB0aW1lem9uZSlcbiAgICAgICAgaWYgKCh0eXBlb2YgbG9jYWxlID09ICdudW1iZXInIHx8IHR5cGVvZiBsb2NhbGUgPT0gJ3N0cmluZycpICYmIHRpbWV6b25lID09IG51bGwpIHtcbiAgICAgICAgICAgIHRpbWV6b25lID0gbG9jYWxlO1xuICAgICAgICAgICAgbG9jYWxlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvY2FsZSkge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0eilgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKS50aW1lem9uZSh0eik7IHMoZm9ybWF0LCBbZGF0ZV0pYCBvciBgdmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKTsgcy50aW1lem9uZSh0eikoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVRaKGZvcm1hdCwgZGF0ZSwgdHopYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLnRpbWV6b25lKHR6KTsgcyhmb3JtYXQsIFtkYXRlXSlgIG9yIGBcIiArIF9yZXF1aXJlICsgXCIudGltZXpvbmUodHopKGZvcm1hdCwgW2RhdGVdKVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBzdHJmdGltZSA9IChsb2NhbGUgPyBkZWZhdWx0U3RyZnRpbWUubG9jYWxpemUobG9jYWxlKSA6IGRlZmF1bHRTdHJmdGltZSkudGltZXpvbmUodGltZXpvbmUpO1xuICAgICAgICByZXR1cm4gc3RyZnRpbWUoZm10LCBkKTtcbiAgICB9XG5cbiAgICB2YXIgdXRjU3RyZnRpbWUgPSBkZWZhdWx0U3RyZnRpbWUudXRjKCk7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lVVRDKGZtdCwgZCwgbG9jYWxlKSB7XG4gICAgICAgIGlmIChsb2NhbGUpIHtcbiAgICAgICAgICAgIGRlcHJlY2F0aW9uV2FybmluZyhcImBcIiArIF9yZXF1aXJlICsgXCIuc3RyZnRpbWVVVEMoZm9ybWF0LCBkYXRlLCBsb2NhbGUpYFwiLCBcInZhciBzID0gXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplKGxvY2FsZSkudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVwcmVjYXRpb25XYXJuaW5nKFwiYFwiICsgX3JlcXVpcmUgKyBcIi5zdHJmdGltZVVUQyhmb3JtYXQsIFtkYXRlXSlgXCIsIFwidmFyIHMgPSBcIiArIF9yZXF1aXJlICsgXCIudXRjKCk7IHMoZm9ybWF0LCBbZGF0ZV0pXCIpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzdHJmdGltZSA9IGxvY2FsZSA/IHV0Y1N0cmZ0aW1lLmxvY2FsaXplKGxvY2FsZSkgOiB1dGNTdHJmdGltZTtcbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lKGZtdCwgZCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZFN0cmZ0aW1lTG9jYWxpemVkKGxvY2FsZSkge1xuICAgICAgICBkZXByZWNhdGlvbldhcm5pbmcoXCJgXCIgKyBfcmVxdWlyZSArIFwiLmxvY2FsaXplZFN0cmZ0aW1lKGxvY2FsZSlgXCIsIF9yZXF1aXJlICsgXCIubG9jYWxpemUobG9jYWxlKVwiKTtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRTdHJmdGltZS5sb2NhbGl6ZShsb2NhbGUpO1xuICAgIH1cbiAgICAvLyBFbmQgb2YgZGVwcmVjYXRlZCBBUElcblxuICAgIC8vIFBvbHlmaWxsIERhdGUubm93IGZvciBvbGQgYnJvd3NlcnMuXG4gICAgaWYgKHR5cGVvZiBEYXRlLm5vdyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBEYXRlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiArbmV3IERhdGUoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBTdHJmdGltZShsb2NhbGUsIGN1c3RvbVRpbWV6b25lT2Zmc2V0LCB1c2VVdGNUaW1lem9uZSkge1xuICAgICAgICB2YXIgX2xvY2FsZSA9IGxvY2FsZSB8fCBEZWZhdWx0TG9jYWxlLFxuICAgICAgICAgICAgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID0gY3VzdG9tVGltZXpvbmVPZmZzZXQgfHwgMCxcbiAgICAgICAgICAgIF91c2VVdGNCYXNlZERhdGUgPSB1c2VVdGNUaW1lem9uZSB8fCBmYWxzZSxcblxuICAgICAgICAgICAgLy8gd2Ugc3RvcmUgdW5peCB0aW1lc3RhbXAgdmFsdWUgaGVyZSB0byBub3QgY3JlYXRlIG5ldyBEYXRlKCkgZWFjaCBpdGVyYXRpb24gKGVhY2ggbWlsbGlzZWNvbmQpXG4gICAgICAgICAgICAvLyBEYXRlLm5vdygpIGlzIDIgdGltZXMgZmFzdGVyIHRoYW4gbmV3IERhdGUoKVxuICAgICAgICAgICAgLy8gd2hpbGUgbWlsbGlzZWNvbmQgcHJlY2lzZSBpcyBlbm91Z2ggaGVyZVxuICAgICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSB2ZXJ5IGhlbHBmdWwgd2hlbiBzdHJmdGltZSB0cmlnZ2VyZWQgYSBsb3Qgb2YgdGltZXMgb25lIGJ5IG9uZVxuICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSAwLFxuICAgICAgICAgICAgX2NhY2hlZERhdGU7XG5cbiAgICAgICAgZnVuY3Rpb24gX3N0cmZ0aW1lKGZvcm1hdCwgZGF0ZSkge1xuICAgICAgICAgICAgdmFyIHRpbWVzdGFtcDtcblxuICAgICAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZXN0YW1wID4gX2NhY2hlZERhdGVUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICAgICAgX2NhY2hlZERhdGVUaW1lc3RhbXAgPSBjdXJyZW50VGltZXN0YW1wO1xuICAgICAgICAgICAgICAgICAgICBfY2FjaGVkRGF0ZSA9IG5ldyBEYXRlKF9jYWNoZWREYXRlVGltZXN0YW1wKTtcblxuICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAgPSBfY2FjaGVkRGF0ZVRpbWVzdGFtcDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoX3VzZVV0Y0Jhc2VkRGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaG93IHRvIGF2b2lkIGR1cGxpY2F0aW9uIG9mIGRhdGUgaW5zdGFudGlhdGlvbiBmb3IgdXRjIGhlcmU/XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSB0aWVkIHRvIGdldFRpbWV6b25lT2Zmc2V0IG9mIHRoZSBjdXJyZW50IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZWREYXRlID0gbmV3IERhdGUoX2NhY2hlZERhdGVUaW1lc3RhbXAgKyBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihfY2FjaGVkRGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRhdGUgPSBfY2FjaGVkRGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGRhdGUuZ2V0VGltZSgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKGRhdGUuZ2V0VGltZSgpICsgZ2V0VGltZXN0YW1wVG9VdGNPZmZzZXRGb3IoZGF0ZSkgKyBfY3VzdG9tVGltZXpvbmVPZmZzZXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgX2xvY2FsZSwgdGltZXN0YW1wKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIF9wcm9jZXNzRm9ybWF0KGZvcm1hdCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRTdHJpbmcgPSAnJyxcbiAgICAgICAgICAgICAgICBwYWRkaW5nID0gbnVsbCxcbiAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSBmYWxzZSxcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBmb3JtYXQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGV4dGVuZGVkVFogPSBmYWxzZTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRDaGFyQ29kZSA9IGZvcm1hdC5jaGFyQ29kZUF0KGkpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzSW5TY29wZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAnLSdcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vICdfJ1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyZW50Q2hhckNvZGUgPT09IDk1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nID0gJyAnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gJzAnXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDaGFyQ29kZSA9PT0gNDgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgPSAnMCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyAnOidcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudENoYXJDb2RlID09PSA1OCkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChleHRlbmRlZFRaKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLndhcm4gPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbV0FSTklOR10gZGV0ZWN0ZWQgdXNlIG9mIHVuc3VwcG9ydGVkICU6OiBvciAlOjo6IG1vZGlmaWVycyB0byBzdHJmdGltZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRUWiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnRDaGFyQ29kZSkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlcyBmb3IgbmV3IERhdGUoMCkgaW4gR01UXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdUaHVyc2RheSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gbG9jYWxlLmRheXNbZGF0ZS5nZXREYXkoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdKYW51YXJ5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnQic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUubW9udGhzW2RhdGUuZ2V0TW9udGgoKV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA2NzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoTWF0aC5mbG9vcihkYXRlLmdldEZ1bGxZZWFyKCkgLyAxMDApLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAxLzAxLzcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ELCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwLTAxLTAxJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnRic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5GLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIoZGF0ZS5nZXRIb3VycygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnSSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDczOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhNYXRoLmZsb29yKHRpbWVzdGFtcCAlIDEwMDApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1pbnV0ZXMoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdhbSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1AnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXRIb3VycygpIDwgMTIgPyBsb2NhbGUuYW0gOiBsb2NhbGUucG07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMDowMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1InOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuUiwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdTJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0U2Vjb25kcygpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzAwOjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnVCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5ULCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcwMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ1UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4NTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gcGFkVGlsbDIod2Vla051bWJlcihkYXRlLCAnc3VuZGF5JyksIHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdXJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKHdlZWtOdW1iZXIoZGF0ZSwgJ21vbmRheScpLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzE2OjAwOjAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy5YLCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcxOTcwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnWSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDg5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdHTVQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdaJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF91c2VVdGNCYXNlZERhdGUgJiYgX2N1c3RvbVRpbWV6b25lT2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBcIkdNVFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZml4bWUgb3B0aW1pemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR6U3RyaW5nID0gZGF0ZS50b1N0cmluZygpLm1hdGNoKC9cXCgoW1xcd1xcc10rKVxcKS8pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gdHpTdHJpbmcgJiYgdHpTdHJpbmdbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnVGh1J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnREYXlzW2RhdGUuZ2V0RGF5KCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnSmFuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnYic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDk4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBsb2NhbGUuc2hvcnRNb250aHNbZGF0ZS5nZXRNb250aCgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJydcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA5OTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuYywgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdkJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldERhdGUoKSwgcGFkZGluZyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICcgMSdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IHBhZFRpbGwyKGRhdGUuZ2V0RGF0ZSgpLCBwYWRkaW5nID09IG51bGwgPyAnICcgOiBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ0phbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ2gnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IGxvY2FsZS5zaG9ydE1vbnRoc1tkYXRlLmdldE1vbnRoKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnaic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRheSA9IE1hdGguY2VpbCgoZGF0ZS5nZXRUaW1lKCkgLSB5LmdldFRpbWUoKSkgLyAoMTAwMCAqIDYwICogNjAgKiAyNCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMyhkYXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdrJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldEhvdXJzKCksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMTInXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihob3VyczEyKGRhdGUuZ2V0SG91cnMoKSksIHBhZGRpbmcgPT0gbnVsbCA/ICcgJyA6IHBhZGRpbmcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMDEnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBwYWRUaWxsMihkYXRlLmdldE1vbnRoKCkgKyAxLCBwYWRkaW5nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ1xcbidcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9ICdcXG4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMXN0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAnbyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExMTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKSArIG9yZGluYWwoZGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnQU0nXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICdwJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTEyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXRlLmdldEhvdXJzKCkgPCAxMiA/IGxvY2FsZS5BTSA6IGxvY2FsZS5QTTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyOjAwOjAwIEFNJ1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAncic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExNDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMuciwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnMCdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgJ3MnOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMTU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0U3RyaW5nICs9IE1hdGguZmxvb3IodGltZXN0YW1wIC8gMTAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICdcXHQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAnXFx0JztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzQnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd1JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBkYXkgPT09IDAgPyA3IDogZGF5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyAxIC0gNywgTW9uZGF5IGlzIGZpcnN0IGRheSBvZiB0aGUgd2Vla1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnIDEtSmFuLTE5NzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd2JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE4OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSBfcHJvY2Vzc0Zvcm1hdChsb2NhbGUuZm9ybWF0cy52LCBkYXRlLCBsb2NhbGUsIHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vICc0J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAndyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZGF0ZS5nZXREYXkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gMCAtIDYsIFN1bmRheSBpcyBmaXJzdCBkYXkgb2YgdGhlIHdlZWtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gJzEyLzMxLzY5J1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FzZSAneCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gX3Byb2Nlc3NGb3JtYXQobG9jYWxlLmZvcm1hdHMueCwgZGF0ZSwgbG9jYWxlLCB0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnNzAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIxOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFN0cmluZyArPSAoJycgKyBkYXRlLmdldEZ1bGxZZWFyKCkpLnNsaWNlKDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyAnKzAwMDAnXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlICd6JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdXNlVXRjQmFzZWREYXRlICYmIF9jdXN0b21UaW1lem9uZU9mZnNldCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZXh0ZW5kZWRUWiA/IFwiKzAwOjAwXCIgOiBcIiswMDAwXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2ZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2N1c3RvbVRpbWV6b25lT2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBfY3VzdG9tVGltZXpvbmVPZmZzZXQgLyAoNjAgKiAxMDAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IC1kYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZ24gPSBvZmYgPCAwID8gJy0nIDogJysnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VwID0gZXh0ZW5kZWRUWiA/ICc6JyA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaG91cnMgPSBNYXRoLmZsb29yKE1hdGguYWJzKG9mZiAvIDYwKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaW5zID0gTWF0aC5hYnMob2ZmICUgNjApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gc2lnbiArIHBhZFRpbGwyKGhvdXJzKSArIHNlcCArIHBhZFRpbGwyKG1pbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIGlzSW5TY29wZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyAnJSdcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENoYXJDb2RlID09PSAzNykge1xuICAgICAgICAgICAgICAgICAgICBpc0luU2NvcGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXN1bHRTdHJpbmcgKz0gZm9ybWF0W2ldO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0U3RyaW5nO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHN0cmZ0aW1lID0gX3N0cmZ0aW1lO1xuXG4gICAgICAgIHN0cmZ0aW1lLmxvY2FsaXplID0gZnVuY3Rpb24obG9jYWxlKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKGxvY2FsZSB8fCBfbG9jYWxlLCBfY3VzdG9tVGltZXpvbmVPZmZzZXQsIF91c2VVdGNCYXNlZERhdGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHN0cmZ0aW1lLnRpbWV6b25lID0gZnVuY3Rpb24odGltZXpvbmUpIHtcbiAgICAgICAgICAgIHZhciBjdXN0b21UaW1lem9uZU9mZnNldCA9IF9jdXN0b21UaW1lem9uZU9mZnNldDtcbiAgICAgICAgICAgIHZhciB1c2VVdGNCYXNlZERhdGUgPSBfdXNlVXRjQmFzZWREYXRlO1xuXG4gICAgICAgICAgICB2YXIgdGltZXpvbmVUeXBlID0gdHlwZW9mIHRpbWV6b25lO1xuICAgICAgICAgICAgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicgfHwgdGltZXpvbmVUeXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHVzZVV0Y0Jhc2VkRGF0ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICAvLyBJU08gODYwMSBmb3JtYXQgdGltZXpvbmUgc3RyaW5nLCBbLStdSEhNTVxuICAgICAgICAgICAgICAgIGlmICh0aW1lem9uZVR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzaWduID0gdGltZXpvbmVbMF0gPT09ICctJyA/IC0xIDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvdXJzID0gcGFyc2VJbnQodGltZXpvbmUuc2xpY2UoMSwgMyksIDEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBwYXJzZUludCh0aW1lem9uZS5zbGljZSgzLCA1KSwgMTApO1xuXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbVRpbWV6b25lT2Zmc2V0ID0gc2lnbiAqICgoNjAgKiBob3VycykgKyBtaW51dGVzKSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gbWludXRlczogNDIwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWV6b25lVHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tVGltZXpvbmVPZmZzZXQgPSB0aW1lem9uZSAqIDYwICogMTAwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZnRpbWUoX2xvY2FsZSwgY3VzdG9tVGltZXpvbmVPZmZzZXQsIHVzZVV0Y0Jhc2VkRGF0ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc3RyZnRpbWUudXRjID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFN0cmZ0aW1lKF9sb2NhbGUsIF9jdXN0b21UaW1lem9uZU9mZnNldCwgdHJ1ZSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHN0cmZ0aW1lO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhZFRpbGwyKG51bWJlclRvUGFkLCBwYWRkaW5nQ2hhcikge1xuICAgICAgICBpZiAocGFkZGluZ0NoYXIgPT09ICcnIHx8IG51bWJlclRvUGFkID4gOSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYWRkaW5nQ2hhciA9PSBudWxsKSB7XG4gICAgICAgICAgICBwYWRkaW5nQ2hhciA9ICcwJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFkZGluZ0NoYXIgKyBudW1iZXJUb1BhZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYWRUaWxsMyhudW1iZXJUb1BhZCkge1xuICAgICAgICBpZiAobnVtYmVyVG9QYWQgPiA5OSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bWJlclRvUGFkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChudW1iZXJUb1BhZCA+IDkpIHtcbiAgICAgICAgICAgIHJldHVybiAnMCcgKyBudW1iZXJUb1BhZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzAwJyArIG51bWJlclRvUGFkO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGhvdXJzMTIoaG91cikge1xuICAgICAgICBpZiAoaG91ciA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGhvdXIgPiAxMikge1xuICAgICAgICAgICAgcmV0dXJuIGhvdXIgLSAxMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG5cbiAgICAvLyBmaXJzdFdlZWtkYXk6ICdzdW5kYXknIG9yICdtb25kYXknLCBkZWZhdWx0IGlzICdzdW5kYXknXG4gICAgLy9cbiAgICAvLyBQaWxmZXJlZCAmIHBvcnRlZCBmcm9tIFJ1YnkncyBzdHJmdGltZSBpbXBsZW1lbnRhdGlvbi5cbiAgICBmdW5jdGlvbiB3ZWVrTnVtYmVyKGRhdGUsIGZpcnN0V2Vla2RheSkge1xuICAgICAgICBmaXJzdFdlZWtkYXkgPSBmaXJzdFdlZWtkYXkgfHwgJ3N1bmRheSc7XG5cbiAgICAgICAgLy8gVGhpcyB3b3JrcyBieSBzaGlmdGluZyB0aGUgd2Vla2RheSBiYWNrIGJ5IG9uZSBkYXkgaWYgd2VcbiAgICAgICAgLy8gYXJlIHRyZWF0aW5nIE1vbmRheSBhcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLlxuICAgICAgICB2YXIgd2Vla2RheSA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgICAgIGlmIChmaXJzdFdlZWtkYXkgPT09ICdtb25kYXknKSB7XG4gICAgICAgICAgICBpZiAod2Vla2RheSA9PT0gMCkgLy8gU3VuZGF5XG4gICAgICAgICAgICAgICAgd2Vla2RheSA9IDY7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgd2Vla2RheS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGZpcnN0RGF5T2ZZZWFyVXRjID0gRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCAwLCAxKSxcbiAgICAgICAgICAgIGRhdGVVdGMgPSBEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpLFxuICAgICAgICAgICAgeWRheSA9IE1hdGguZmxvb3IoKGRhdGVVdGMgLSBmaXJzdERheU9mWWVhclV0YykgLyA4NjQwMDAwMCksXG4gICAgICAgICAgICB3ZWVrTnVtID0gKHlkYXkgKyA3IC0gd2Vla2RheSkgLyA3O1xuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHdlZWtOdW0pO1xuICAgIH1cblxuICAgIC8vIEdldCB0aGUgb3JkaW5hbCBzdWZmaXggZm9yIGEgbnVtYmVyOiBzdCwgbmQsIHJkLCBvciB0aFxuICAgIGZ1bmN0aW9uIG9yZGluYWwobnVtYmVyKSB7XG4gICAgICAgIHZhciBpID0gbnVtYmVyICUgMTA7XG4gICAgICAgIHZhciBpaSA9IG51bWJlciAlIDEwMDtcblxuICAgICAgICBpZiAoKGlpID49IDExICYmIGlpIDw9IDEzKSB8fCBpID09PSAwIHx8IGkgPj0gNCkge1xuICAgICAgICAgICAgcmV0dXJuICd0aCc7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChpKSB7XG4gICAgICAgICAgICBjYXNlIDE6IHJldHVybiAnc3QnO1xuICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gJ25kJztcbiAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICdyZCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRUaW1lc3RhbXBUb1V0Y09mZnNldEZvcihkYXRlKSB7XG4gICAgICAgIHJldHVybiAoZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpIHx8IDApICogNjAwMDA7XG4gICAgfVxuXG59KCkpO1xuIiwiKGZ1bmN0aW9uKGYpe2lmKHR5cGVvZiBleHBvcnRzPT09XCJvYmplY3RcIiYmdHlwZW9mIG1vZHVsZSE9PVwidW5kZWZpbmVkXCIpe21vZHVsZS5leHBvcnRzPWYoKX1lbHNlIGlmKHR5cGVvZiBkZWZpbmU9PT1cImZ1bmN0aW9uXCImJmRlZmluZS5hbWQpe2RlZmluZShbXSxmKX1lbHNle3ZhciBnO2lmKHR5cGVvZiB3aW5kb3chPT1cInVuZGVmaW5lZFwiKXtnPXdpbmRvd31lbHNlIGlmKHR5cGVvZiBnbG9iYWwhPT1cInVuZGVmaW5lZFwiKXtnPWdsb2JhbH1lbHNlIGlmKHR5cGVvZiBzZWxmIT09XCJ1bmRlZmluZWRcIil7Zz1zZWxmfWVsc2V7Zz10aGlzfWcuVmlydHVhbERvbSA9IGYoKX19KShmdW5jdGlvbigpe3ZhciBkZWZpbmUsbW9kdWxlLGV4cG9ydHM7cmV0dXJuIChmdW5jdGlvbiBlKHQsbixyKXtmdW5jdGlvbiBzKG8sdSl7aWYoIW5bb10pe2lmKCF0W29dKXt2YXIgYT10eXBlb2YgcmVxdWlyZT09XCJmdW5jdGlvblwiJiZyZXF1aXJlO2lmKCF1JiZhKXJldHVybiBhKG8sITApO2lmKGkpcmV0dXJuIGkobywhMCk7dmFyIGY9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitvK1wiJ1wiKTt0aHJvdyBmLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsZn12YXIgbD1uW29dPXtleHBvcnRzOnt9fTt0W29dWzBdLmNhbGwobC5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciBuPXRbb11bMV1bZV07cmV0dXJuIHMobj9uOmUpfSxsLGwuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gbltvXS5leHBvcnRzfXZhciBpPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7Zm9yKHZhciBvPTA7bzxyLmxlbmd0aDtvKyspcyhyW29dKTtyZXR1cm4gc30pKHsxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBjcmVhdGVFbGVtZW50ID0gcmVxdWlyZShcIi4vdmRvbS9jcmVhdGUtZWxlbWVudC5qc1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVsZW1lbnRcblxufSx7XCIuL3Zkb20vY3JlYXRlLWVsZW1lbnQuanNcIjoyNH1dLDI6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRpZmYgPSByZXF1aXJlKFwiLi92dHJlZS9kaWZmLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlxuXG59LHtcIi4vdnRyZWUvZGlmZi5qc1wiOjQ3fV0sMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vKiFcbiAqIENyb3NzLUJyb3dzZXIgU3BsaXQgMS4xLjFcbiAqIENvcHlyaWdodCAyMDA3LTIwMTIgU3RldmVuIExldml0aGFuIDxzdGV2ZW5sZXZpdGhhbi5jb20+XG4gKiBBdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4gKiBFQ01BU2NyaXB0IGNvbXBsaWFudCwgdW5pZm9ybSBjcm9zcy1icm93c2VyIHNwbGl0IG1ldGhvZFxuICovXG5cbi8qKlxuICogU3BsaXRzIGEgc3RyaW5nIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncyB1c2luZyBhIHJlZ2V4IG9yIHN0cmluZyBzZXBhcmF0b3IuIE1hdGNoZXMgb2YgdGhlXG4gKiBzZXBhcmF0b3IgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IGFycmF5LiBIb3dldmVyLCBpZiBgc2VwYXJhdG9yYCBpcyBhIHJlZ2V4IHRoYXQgY29udGFpbnNcbiAqIGNhcHR1cmluZyBncm91cHMsIGJhY2tyZWZlcmVuY2VzIGFyZSBzcGxpY2VkIGludG8gdGhlIHJlc3VsdCBlYWNoIHRpbWUgYHNlcGFyYXRvcmAgaXMgbWF0Y2hlZC5cbiAqIEZpeGVzIGJyb3dzZXIgYnVncyBjb21wYXJlZCB0byB0aGUgbmF0aXZlIGBTdHJpbmcucHJvdG90eXBlLnNwbGl0YCBhbmQgY2FuIGJlIHVzZWQgcmVsaWFibHlcbiAqIGNyb3NzLWJyb3dzZXIuXG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyIFN0cmluZyB0byBzcGxpdC5cbiAqIEBwYXJhbSB7UmVnRXhwfFN0cmluZ30gc2VwYXJhdG9yIFJlZ2V4IG9yIHN0cmluZyB0byB1c2UgZm9yIHNlcGFyYXRpbmcgdGhlIHN0cmluZy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBbbGltaXRdIE1heGltdW0gbnVtYmVyIG9mIGl0ZW1zIHRvIGluY2x1ZGUgaW4gdGhlIHJlc3VsdCBhcnJheS5cbiAqIEByZXR1cm5zIHtBcnJheX0gQXJyYXkgb2Ygc3Vic3RyaW5ncy5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQmFzaWMgdXNlXG4gKiBzcGxpdCgnYSBiIGMgZCcsICcgJyk7XG4gKiAvLyAtPiBbJ2EnLCAnYicsICdjJywgJ2QnXVxuICpcbiAqIC8vIFdpdGggbGltaXRcbiAqIHNwbGl0KCdhIGIgYyBkJywgJyAnLCAyKTtcbiAqIC8vIC0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBCYWNrcmVmZXJlbmNlcyBpbiByZXN1bHQgYXJyYXlcbiAqIHNwbGl0KCcuLndvcmQxIHdvcmQyLi4nLCAvKFthLXpdKykoXFxkKykvaSk7XG4gKiAvLyAtPiBbJy4uJywgJ3dvcmQnLCAnMScsICcgJywgJ3dvcmQnLCAnMicsICcuLiddXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gKGZ1bmN0aW9uIHNwbGl0KHVuZGVmKSB7XG5cbiAgdmFyIG5hdGl2ZVNwbGl0ID0gU3RyaW5nLnByb3RvdHlwZS5zcGxpdCxcbiAgICBjb21wbGlhbnRFeGVjTnBjZyA9IC8oKT8/Ly5leGVjKFwiXCIpWzFdID09PSB1bmRlZixcbiAgICAvLyBOUENHOiBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cFxuICAgIHNlbGY7XG5cbiAgc2VsZiA9IGZ1bmN0aW9uKHN0ciwgc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgYG5hdGl2ZVNwbGl0YFxuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc2VwYXJhdG9yKSAhPT0gXCJbb2JqZWN0IFJlZ0V4cF1cIikge1xuICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9XG4gICAgdmFyIG91dHB1dCA9IFtdLFxuICAgICAgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyBcImlcIiA6IFwiXCIpICsgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyBcIm1cIiA6IFwiXCIpICsgKHNlcGFyYXRvci5leHRlbmRlZCA/IFwieFwiIDogXCJcIikgKyAvLyBQcm9wb3NlZCBmb3IgRVM2XG4gICAgICAoc2VwYXJhdG9yLnN0aWNreSA/IFwieVwiIDogXCJcIiksXG4gICAgICAvLyBGaXJlZm94IDMrXG4gICAgICBsYXN0TGFzdEluZGV4ID0gMCxcbiAgICAgIC8vIE1ha2UgYGdsb2JhbGAgYW5kIGF2b2lkIGBsYXN0SW5kZXhgIGlzc3VlcyBieSB3b3JraW5nIHdpdGggYSBjb3B5XG4gICAgICBzZXBhcmF0b3IgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgXCJnXCIpLFxuICAgICAgc2VwYXJhdG9yMiwgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICBzdHIgKz0gXCJcIjsgLy8gVHlwZS1jb252ZXJ0XG4gICAgaWYgKCFjb21wbGlhbnRFeGVjTnBjZykge1xuICAgICAgLy8gRG9lc24ndCBuZWVkIGZsYWdzIGd5LCBidXQgdGhleSBkb24ndCBodXJ0XG4gICAgICBzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cChcIl5cIiArIHNlcGFyYXRvci5zb3VyY2UgKyBcIiQoPyFcXFxccylcIiwgZmxhZ3MpO1xuICAgIH1cbiAgICAvKiBWYWx1ZXMgZm9yIGBsaW1pdGAsIHBlciB0aGUgc3BlYzpcbiAgICAgKiBJZiB1bmRlZmluZWQ6IDQyOTQ5NjcyOTUgLy8gTWF0aC5wb3coMiwgMzIpIC0gMVxuICAgICAqIElmIDAsIEluZmluaXR5LCBvciBOYU46IDBcbiAgICAgKiBJZiBwb3NpdGl2ZSBudW1iZXI6IGxpbWl0ID0gTWF0aC5mbG9vcihsaW1pdCk7IGlmIChsaW1pdCA+IDQyOTQ5NjcyOTUpIGxpbWl0IC09IDQyOTQ5NjcyOTY7XG4gICAgICogSWYgbmVnYXRpdmUgbnVtYmVyOiA0Mjk0OTY3Mjk2IC0gTWF0aC5mbG9vcihNYXRoLmFicyhsaW1pdCkpXG4gICAgICogSWYgb3RoZXI6IFR5cGUtY29udmVydCwgdGhlbiB1c2UgdGhlIGFib3ZlIHJ1bGVzXG4gICAgICovXG4gICAgbGltaXQgPSBsaW1pdCA9PT0gdW5kZWYgPyAtMSA+Pj4gMCA6IC8vIE1hdGgucG93KDIsIDMyKSAtIDFcbiAgICBsaW1pdCA+Pj4gMDsgLy8gVG9VaW50MzIobGltaXQpXG4gICAgd2hpbGUgKG1hdGNoID0gc2VwYXJhdG9yLmV4ZWMoc3RyKSkge1xuICAgICAgLy8gYHNlcGFyYXRvci5sYXN0SW5kZXhgIGlzIG5vdCByZWxpYWJsZSBjcm9zcy1icm93c2VyXG4gICAgICBsYXN0SW5kZXggPSBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIGlmIChsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHN0ci5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYCBmb3JcbiAgICAgICAgLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXBzXG4gICAgICAgIGlmICghY29tcGxpYW50RXhlY05wY2cgJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgICAgIG1hdGNoWzBdLnJlcGxhY2Uoc2VwYXJhdG9yMiwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWYpIHtcbiAgICAgICAgICAgICAgICBtYXRjaFtpXSA9IHVuZGVmO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDEgJiYgbWF0Y2guaW5kZXggPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgaWYgKG91dHB1dC5sZW5ndGggPj0gbGltaXQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHNlcGFyYXRvci5sYXN0SW5kZXggPT09IG1hdGNoLmluZGV4KSB7XG4gICAgICAgIHNlcGFyYXRvci5sYXN0SW5kZXgrKzsgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAobGFzdExhc3RJbmRleCA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgaWYgKGxhc3RMZW5ndGggfHwgIXNlcGFyYXRvci50ZXN0KFwiXCIpKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKFwiXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaChzdHIuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0Lmxlbmd0aCA+IGxpbWl0ID8gb3V0cHV0LnNsaWNlKDAsIGxpbWl0KSA6IG91dHB1dDtcbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn0pKCk7XG5cbn0se31dLDQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgT25lVmVyc2lvbkNvbnN0cmFpbnQgPSByZXF1aXJlKCdpbmRpdmlkdWFsL29uZS12ZXJzaW9uJyk7XG5cbnZhciBNWV9WRVJTSU9OID0gJzcnO1xuT25lVmVyc2lvbkNvbnN0cmFpbnQoJ2V2LXN0b3JlJywgTVlfVkVSU0lPTik7XG5cbnZhciBoYXNoS2V5ID0gJ19fRVZfU1RPUkVfS0VZQCcgKyBNWV9WRVJTSU9OO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2U3RvcmU7XG5cbmZ1bmN0aW9uIEV2U3RvcmUoZWxlbSkge1xuICAgIHZhciBoYXNoID0gZWxlbVtoYXNoS2V5XTtcblxuICAgIGlmICghaGFzaCkge1xuICAgICAgICBoYXNoID0gZWxlbVtoYXNoS2V5XSA9IHt9O1xuICAgIH1cblxuICAgIHJldHVybiBoYXNoO1xufVxuXG59LHtcImluZGl2aWR1YWwvb25lLXZlcnNpb25cIjo2fV0sNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG4ndXNlIHN0cmljdCc7XG5cbi8qZ2xvYmFsIHdpbmRvdywgZ2xvYmFsKi9cblxudmFyIHJvb3QgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyA/XG4gICAgd2luZG93IDogdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgP1xuICAgIGdsb2JhbCA6IHt9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEluZGl2aWR1YWw7XG5cbmZ1bmN0aW9uIEluZGl2aWR1YWwoa2V5LCB2YWx1ZSkge1xuICAgIGlmIChrZXkgaW4gcm9vdCkge1xuICAgICAgICByZXR1cm4gcm9vdFtrZXldO1xuICAgIH1cblxuICAgIHJvb3Rba2V5XSA9IHZhbHVlO1xuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se31dLDY6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgSW5kaXZpZHVhbCA9IHJlcXVpcmUoJy4vaW5kZXguanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPbmVWZXJzaW9uO1xuXG5mdW5jdGlvbiBPbmVWZXJzaW9uKG1vZHVsZU5hbWUsIHZlcnNpb24sIGRlZmF1bHRWYWx1ZSkge1xuICAgIHZhciBrZXkgPSAnX19JTkRJVklEVUFMX09ORV9WRVJTSU9OXycgKyBtb2R1bGVOYW1lO1xuICAgIHZhciBlbmZvcmNlS2V5ID0ga2V5ICsgJ19FTkZPUkNFX1NJTkdMRVRPTic7XG5cbiAgICB2YXIgdmVyc2lvblZhbHVlID0gSW5kaXZpZHVhbChlbmZvcmNlS2V5LCB2ZXJzaW9uKTtcblxuICAgIGlmICh2ZXJzaW9uVmFsdWUgIT09IHZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW4gb25seSBoYXZlIG9uZSBjb3B5IG9mICcgK1xuICAgICAgICAgICAgbW9kdWxlTmFtZSArICcuXFxuJyArXG4gICAgICAgICAgICAnWW91IGFscmVhZHkgaGF2ZSB2ZXJzaW9uICcgKyB2ZXJzaW9uVmFsdWUgK1xuICAgICAgICAgICAgJyBpbnN0YWxsZWQuXFxuJyArXG4gICAgICAgICAgICAnVGhpcyBtZWFucyB5b3UgY2Fubm90IGluc3RhbGwgdmVyc2lvbiAnICsgdmVyc2lvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEluZGl2aWR1YWwoa2V5LCBkZWZhdWx0VmFsdWUpO1xufVxuXG59LHtcIi4vaW5kZXguanNcIjo1fV0sNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4oZnVuY3Rpb24gKGdsb2JhbCl7XG52YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuXG59KS5jYWxsKHRoaXMsdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiA/IGdsb2JhbCA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgPyB3aW5kb3cgOiB7fSlcbn0se1wibWluLWRvY3VtZW50XCI6MTd9XSw4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb21XYWxrID0gcmVxdWlyZShcImRvbS13YWxrXCIpXG5cbnZhciBDb21tZW50ID0gcmVxdWlyZShcIi4vZG9tLWNvbW1lbnQuanNcIilcbnZhciBET01UZXh0ID0gcmVxdWlyZShcIi4vZG9tLXRleHQuanNcIilcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcbnZhciBEb2N1bWVudEZyYWdtZW50ID0gcmVxdWlyZShcIi4vZG9tLWZyYWdtZW50LmpzXCIpXG52YXIgRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC5qc1wiKVxudmFyIGRpc3BhdGNoRXZlbnQgPSByZXF1aXJlKFwiLi9ldmVudC9kaXNwYXRjaC1ldmVudC5qc1wiKVxudmFyIGFkZEV2ZW50TGlzdGVuZXIgPSByZXF1aXJlKFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIilcbnZhciByZW1vdmVFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gRG9jdW1lbnQ7XG5cbmZ1bmN0aW9uIERvY3VtZW50KCkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudCgpO1xuICAgIH1cblxuICAgIHRoaXMuaGVhZCA9IHRoaXMuY3JlYXRlRWxlbWVudChcImhlYWRcIilcbiAgICB0aGlzLmJvZHkgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIpXG4gICAgdGhpcy5kb2N1bWVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oZWFkKVxuICAgIHRoaXMuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuYm9keSlcbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbdGhpcy5kb2N1bWVudEVsZW1lbnRdXG4gICAgdGhpcy5ub2RlVHlwZSA9IDlcbn1cblxudmFyIHByb3RvID0gRG9jdW1lbnQucHJvdG90eXBlO1xucHJvdG8uY3JlYXRlVGV4dE5vZGUgPSBmdW5jdGlvbiBjcmVhdGVUZXh0Tm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiBuZXcgRE9NVGV4dCh2YWx1ZSwgdGhpcylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudE5TID0gZnVuY3Rpb24gY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnTmFtZSkge1xuICAgIHZhciBucyA9IG5hbWVzcGFjZSA9PT0gbnVsbCA/IG51bGwgOiBTdHJpbmcobmFtZXNwYWNlKVxuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzLCBucylcbn1cblxucHJvdG8uY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodGFnTmFtZSkge1xuICAgIHJldHVybiBuZXcgRE9NRWxlbWVudCh0YWdOYW1lLCB0aGlzKVxufVxuXG5wcm90by5jcmVhdGVEb2N1bWVudEZyYWdtZW50ID0gZnVuY3Rpb24gY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpIHtcbiAgICByZXR1cm4gbmV3IERvY3VtZW50RnJhZ21lbnQodGhpcylcbn1cblxucHJvdG8uY3JlYXRlRXZlbnQgPSBmdW5jdGlvbiBjcmVhdGVFdmVudChmYW1pbHkpIHtcbiAgICByZXR1cm4gbmV3IEV2ZW50KGZhbWlseSlcbn1cblxucHJvdG8uY3JlYXRlQ29tbWVudCA9IGZ1bmN0aW9uIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhLCB0aGlzKVxufVxuXG5wcm90by5nZXRFbGVtZW50QnlJZCA9IGZ1bmN0aW9uIGdldEVsZW1lbnRCeUlkKGlkKSB7XG4gICAgaWQgPSBTdHJpbmcoaWQpXG5cbiAgICB2YXIgcmVzdWx0ID0gZG9tV2Fsayh0aGlzLmNoaWxkTm9kZXMsIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChTdHJpbmcobm9kZS5pZCkgPT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gbm9kZVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiByZXN1bHQgfHwgbnVsbFxufVxuXG5wcm90by5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lID0gRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZVxucHJvdG8uZ2V0RWxlbWVudHNCeVRhZ05hbWUgPSBET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZVxucHJvdG8uY29udGFpbnMgPSBET01FbGVtZW50LnByb3RvdHlwZS5jb250YWluc1xuXG5wcm90by5yZW1vdmVFdmVudExpc3RlbmVyID0gcmVtb3ZlRXZlbnRMaXN0ZW5lclxucHJvdG8uYWRkRXZlbnRMaXN0ZW5lciA9IGFkZEV2ZW50TGlzdGVuZXJcbnByb3RvLmRpc3BhdGNoRXZlbnQgPSBkaXNwYXRjaEV2ZW50XG5cbn0se1wiLi9kb20tY29tbWVudC5qc1wiOjksXCIuL2RvbS1lbGVtZW50LmpzXCI6MTAsXCIuL2RvbS1mcmFnbWVudC5qc1wiOjExLFwiLi9kb20tdGV4dC5qc1wiOjEyLFwiLi9ldmVudC5qc1wiOjEzLFwiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCJkb20td2Fsa1wiOjE4fV0sOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IENvbW1lbnRcblxuZnVuY3Rpb24gQ29tbWVudChkYXRhLCBvd25lcikge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDb21tZW50KSkge1xuICAgICAgICByZXR1cm4gbmV3IENvbW1lbnQoZGF0YSwgb3duZXIpXG4gICAgfVxuXG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICAgIHRoaXMubm9kZVZhbHVlID0gZGF0YVxuICAgIHRoaXMubGVuZ3RoID0gZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkNvbW1lbnQucHJvdG90eXBlLm5vZGVUeXBlID0gOFxuQ29tbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNjb21tZW50XCJcblxuQ29tbWVudC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfQ29tbWVudF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IENvbW1lbnRdXCJcbn1cblxufSx7fV0sMTA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvbVdhbGsgPSByZXF1aXJlKFwiZG9tLXdhbGtcIilcbnZhciBkaXNwYXRjaEV2ZW50ID0gcmVxdWlyZShcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIilcbnZhciBhZGRFdmVudExpc3RlbmVyID0gcmVxdWlyZShcIi4vZXZlbnQvYWRkLWV2ZW50LWxpc3RlbmVyLmpzXCIpXG52YXIgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoXCIuL2V2ZW50L3JlbW92ZS1ldmVudC1saXN0ZW5lci5qc1wiKVxudmFyIHNlcmlhbGl6ZU5vZGUgPSByZXF1aXJlKFwiLi9zZXJpYWxpemUuanNcIilcblxudmFyIGh0bWxucyA9IFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiXG5cbm1vZHVsZS5leHBvcnRzID0gRE9NRWxlbWVudFxuXG5mdW5jdGlvbiBET01FbGVtZW50KHRhZ05hbWUsIG93bmVyLCBuYW1lc3BhY2UpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NRWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01FbGVtZW50KHRhZ05hbWUpXG4gICAgfVxuXG4gICAgdmFyIG5zID0gbmFtZXNwYWNlID09PSB1bmRlZmluZWQgPyBodG1sbnMgOiAobmFtZXNwYWNlIHx8IG51bGwpXG5cbiAgICB0aGlzLnRhZ05hbWUgPSBucyA9PT0gaHRtbG5zID8gU3RyaW5nKHRhZ05hbWUpLnRvVXBwZXJDYXNlKCkgOiB0YWdOYW1lXG4gICAgdGhpcy5ub2RlTmFtZSA9IHRoaXMudGFnTmFtZVxuICAgIHRoaXMuY2xhc3NOYW1lID0gXCJcIlxuICAgIHRoaXMuZGF0YXNldCA9IHt9XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW11cbiAgICB0aGlzLnBhcmVudE5vZGUgPSBudWxsXG4gICAgdGhpcy5zdHlsZSA9IHt9XG4gICAgdGhpcy5vd25lckRvY3VtZW50ID0gb3duZXIgfHwgbnVsbFxuICAgIHRoaXMubmFtZXNwYWNlVVJJID0gbnNcbiAgICB0aGlzLl9hdHRyaWJ1dGVzID0ge31cblxuICAgIGlmICh0aGlzLnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgIHRoaXMudHlwZSA9ICd0ZXh0J1xuICAgIH1cbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUudHlwZSA9IFwiRE9NRWxlbWVudFwiXG5ET01FbGVtZW50LnByb3RvdHlwZS5ub2RlVHlwZSA9IDFcblxuRE9NRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9hcHBlbmRDaGlsZChjaGlsZCkge1xuICAgIGlmIChjaGlsZC5wYXJlbnROb2RlKSB7XG4gICAgICAgIGNoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGQpXG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpXG4gICAgY2hpbGQucGFyZW50Tm9kZSA9IHRoaXNcblxuICAgIHJldHVybiBjaGlsZFxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlcGxhY2VDaGlsZChlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBuZWVkbGUucGFyZW50Tm9kZSAhPT0gdGhpc1xuXG4gICAgICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGVsZW0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2YobmVlZGxlKVxuXG4gICAgICAgIG5lZWRsZS5wYXJlbnROb2RlID0gbnVsbFxuICAgICAgICB0aGlzLmNoaWxkTm9kZXNbaW5kZXhdID0gZWxlbVxuICAgICAgICBlbGVtLnBhcmVudE5vZGUgPSB0aGlzXG5cbiAgICAgICAgcmV0dXJuIG5lZWRsZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVDaGlsZChlbGVtKSB7XG4gICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiBlbGVtLnBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgIHZhciBpbmRleCA9IHRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGVsZW0pXG4gICAgdGhpcy5jaGlsZE5vZGVzLnNwbGljZShpbmRleCwgMSlcblxuICAgIGVsZW0ucGFyZW50Tm9kZSA9IG51bGxcbiAgICByZXR1cm4gZWxlbVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2luc2VydEJlZm9yZShlbGVtLCBuZWVkbGUpIHtcbiAgICAgICAgLy8gVE9ETzogVGhyb3cgTm90Rm91bmRFcnJvciBpZiByZWZlcmVuY2VFbGVtZW50IGlzIGEgZG9tIG5vZGVcbiAgICAgICAgLy8gYW5kIHBhcmVudE5vZGUgIT09IHRoaXNcblxuICAgICAgICBpZiAoZWxlbS5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICBlbGVtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbSlcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBpbmRleCA9IG5lZWRsZSA9PT0gbnVsbCB8fCBuZWVkbGUgPT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICAtMSA6XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuaW5kZXhPZihuZWVkbGUpXG5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UoaW5kZXgsIDAsIGVsZW0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMucHVzaChlbGVtKVxuICAgICAgICB9XG5cbiAgICAgICAgZWxlbS5wYXJlbnROb2RlID0gdGhpc1xuICAgICAgICByZXR1cm4gZWxlbVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuc2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3NldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgdmFyIHByZWZpeCA9IG51bGxcbiAgICAgICAgdmFyIGxvY2FsTmFtZSA9IG5hbWVcbiAgICAgICAgdmFyIGNvbG9uUG9zaXRpb24gPSBuYW1lLmluZGV4T2YoXCI6XCIpXG4gICAgICAgIGlmIChjb2xvblBvc2l0aW9uID4gLTEpIHtcbiAgICAgICAgICAgIHByZWZpeCA9IG5hbWUuc3Vic3RyKDAsIGNvbG9uUG9zaXRpb24pXG4gICAgICAgICAgICBsb2NhbE5hbWUgPSBuYW1lLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSlcbiAgICAgICAgfVxuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXSB8fCAodGhpcy5fYXR0cmlidXRlc1tuYW1lc3BhY2VdID0ge30pXG4gICAgICAgIGF0dHJpYnV0ZXNbbG9jYWxOYW1lXSA9IHt2YWx1ZTogdmFsdWUsIHByZWZpeDogcHJlZml4fVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X2dldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgdmFyIHZhbHVlID0gYXR0cmlidXRlcyAmJiBhdHRyaWJ1dGVzW25hbWVdICYmIGF0dHJpYnV0ZXNbbmFtZV0udmFsdWVcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgIH1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQXR0cmlidXRlTlMgPVxuICAgIGZ1bmN0aW9uIF9FbGVtZW50X3JlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICB2YXIgYXR0cmlidXRlcyA9IHRoaXMuX2F0dHJpYnV0ZXNbbmFtZXNwYWNlXTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZXMpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVzW25hbWVdXG4gICAgICAgIH1cbiAgICB9XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZU5TID1cbiAgICBmdW5jdGlvbiBfRWxlbWVudF9oYXNBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSB0aGlzLl9hdHRyaWJ1dGVzW25hbWVzcGFjZV1cbiAgICAgICAgcmV0dXJuICEhYXR0cmlidXRlcyAmJiBuYW1lIGluIGF0dHJpYnV0ZXM7XG4gICAgfVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5zZXRBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5zZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lLCB2YWx1ZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlID0gZnVuY3Rpb24gX0VsZW1lbnRfZ2V0QXR0cmlidXRlKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGVOUyhudWxsLCBuYW1lKVxufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVBdHRyaWJ1dGUgPSBmdW5jdGlvbiBfRWxlbWVudF9yZW1vdmVBdHRyaWJ1dGUobmFtZSkge1xuICAgIHJldHVybiB0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKG51bGwsIG5hbWUpXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2hhc0F0dHJpYnV0ZShuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzQXR0cmlidXRlTlMobnVsbCwgbmFtZSlcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcbkRPTUVsZW1lbnQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIgPSBhZGRFdmVudExpc3RlbmVyXG5ET01FbGVtZW50LnByb3RvdHlwZS5kaXNwYXRjaEV2ZW50ID0gZGlzcGF0Y2hFdmVudFxuXG4vLyBVbi1pbXBsZW1lbnRlZFxuRE9NRWxlbWVudC5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiBfRWxlbWVudF9mb2N1cygpIHtcbiAgICByZXR1cm4gdm9pZCAwXG59XG5cbkRPTUVsZW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gX0VsZW1lbnRfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZU5vZGUodGhpcylcbn1cblxuRE9NRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lcykge1xuICAgIHZhciBjbGFzc2VzID0gY2xhc3NOYW1lcy5zcGxpdChcIiBcIik7XG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcywgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDEpIHtcbiAgICAgICAgICAgIHZhciBub2RlQ2xhc3NOYW1lID0gbm9kZS5jbGFzc05hbWUgfHwgXCJcIlxuICAgICAgICAgICAgdmFyIG5vZGVDbGFzc2VzID0gbm9kZUNsYXNzTmFtZS5zcGxpdChcIiBcIilcblxuICAgICAgICAgICAgaWYgKGNsYXNzZXMuZXZlcnkoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUNsYXNzZXMuaW5kZXhPZihpdGVtKSAhPT0gLTFcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSA9IGZ1bmN0aW9uIF9FbGVtZW50X2dldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpIHtcbiAgICB0YWdOYW1lID0gdGFnTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgdmFyIGVsZW1zID0gW11cblxuICAgIGRvbVdhbGsodGhpcy5jaGlsZE5vZGVzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSAmJiAodGFnTmFtZSA9PT0gJyonIHx8IG5vZGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSB0YWdOYW1lKSkge1xuICAgICAgICAgICAgZWxlbXMucHVzaChub2RlKVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiBlbGVtc1xufVxuXG5ET01FbGVtZW50LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIF9FbGVtZW50X2NvbnRhaW5zKGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZG9tV2Fsayh0aGlzLCBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICByZXR1cm4gZWxlbWVudCA9PT0gbm9kZVxuICAgIH0pIHx8IGZhbHNlXG59XG5cbn0se1wiLi9ldmVudC9hZGQtZXZlbnQtbGlzdGVuZXIuanNcIjoxNCxcIi4vZXZlbnQvZGlzcGF0Y2gtZXZlbnQuanNcIjoxNSxcIi4vZXZlbnQvcmVtb3ZlLWV2ZW50LWxpc3RlbmVyLmpzXCI6MTYsXCIuL3NlcmlhbGl6ZS5qc1wiOjE5LFwiZG9tLXdhbGtcIjoxOH1dLDExOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBET01FbGVtZW50ID0gcmVxdWlyZShcIi4vZG9tLWVsZW1lbnQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBEb2N1bWVudEZyYWdtZW50XG5cbmZ1bmN0aW9uIERvY3VtZW50RnJhZ21lbnQob3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRG9jdW1lbnRGcmFnbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEb2N1bWVudEZyYWdtZW50KClcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMgPSBbXVxuICAgIHRoaXMucGFyZW50Tm9kZSA9IG51bGxcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnR5cGUgPSBcIkRvY3VtZW50RnJhZ21lbnRcIlxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZVR5cGUgPSAxMVxuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiNkb2N1bWVudC1mcmFnbWVudFwiXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLmFwcGVuZENoaWxkXG5Eb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGQgPSBET01FbGVtZW50LnByb3RvdHlwZS5yZXBsYWNlQ2hpbGRcbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkICA9IERPTUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkXG5cbkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLnRvU3RyaW5nID1cbiAgICBmdW5jdGlvbiBfRG9jdW1lbnRGcmFnbWVudF90b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcobm9kZSlcbiAgICAgICAgfSkuam9pbihcIlwiKVxuICAgIH1cblxufSx7XCIuL2RvbS1lbGVtZW50LmpzXCI6MTB9XSwxMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IERPTVRleHRcblxuZnVuY3Rpb24gRE9NVGV4dCh2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRE9NVGV4dCkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBET01UZXh0KHZhbHVlKVxuICAgIH1cblxuICAgIHRoaXMuZGF0YSA9IHZhbHVlIHx8IFwiXCJcbiAgICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGhcbiAgICB0aGlzLm93bmVyRG9jdW1lbnQgPSBvd25lciB8fCBudWxsXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnR5cGUgPSBcIkRPTVRleHROb2RlXCJcbkRPTVRleHQucHJvdG90eXBlLm5vZGVUeXBlID0gM1xuRE9NVGV4dC5wcm90b3R5cGUubm9kZU5hbWUgPSBcIiN0ZXh0XCJcblxuRE9NVGV4dC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBfVGV4dF90b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhXG59XG5cbkRPTVRleHQucHJvdG90eXBlLnJlcGxhY2VEYXRhID0gZnVuY3Rpb24gcmVwbGFjZURhdGEoaW5kZXgsIGxlbmd0aCwgdmFsdWUpIHtcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZGF0YVxuICAgIHZhciBsZWZ0ID0gY3VycmVudC5zdWJzdHJpbmcoMCwgaW5kZXgpXG4gICAgdmFyIHJpZ2h0ID0gY3VycmVudC5zdWJzdHJpbmcoaW5kZXggKyBsZW5ndGgsIGN1cnJlbnQubGVuZ3RoKVxuICAgIHRoaXMuZGF0YSA9IGxlZnQgKyB2YWx1ZSArIHJpZ2h0XG4gICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoXG59XG5cbn0se31dLDEzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gRXZlbnRcblxuZnVuY3Rpb24gRXZlbnQoZmFtaWx5KSB7fVxuXG5FdmVudC5wcm90b3R5cGUuaW5pdEV2ZW50ID0gZnVuY3Rpb24gX0V2ZW50X2luaXRFdmVudCh0eXBlLCBidWJibGVzLCBjYW5jZWxhYmxlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZVxuICAgIHRoaXMuYnViYmxlcyA9IGJ1YmJsZXNcbiAgICB0aGlzLmNhbmNlbGFibGUgPSBjYW5jZWxhYmxlXG59XG5cbkV2ZW50LnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uIF9FdmVudF9wcmV2ZW50RGVmYXVsdCgpIHtcbiAgICBcbn1cblxufSx7fV0sMTQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBhZGRFdmVudExpc3RlbmVyXG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICB2YXIgZWxlbSA9IHRoaXNcblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnMpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnMgPSB7fVxuICAgIH1cblxuICAgIGlmICghZWxlbS5saXN0ZW5lcnNbdHlwZV0pIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0gPSBbXVxuICAgIH1cblxuICAgIGlmIChlbGVtLmxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHtcbiAgICAgICAgZWxlbS5saXN0ZW5lcnNbdHlwZV0ucHVzaChsaXN0ZW5lcilcbiAgICB9XG59XG5cbn0se31dLDE1OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gZGlzcGF0Y2hFdmVudFxuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KGV2KSB7XG4gICAgdmFyIGVsZW0gPSB0aGlzXG4gICAgdmFyIHR5cGUgPSBldi50eXBlXG5cbiAgICBpZiAoIWV2LnRhcmdldCkge1xuICAgICAgICBldi50YXJnZXQgPSBlbGVtXG4gICAgfVxuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICBlbGVtLmxpc3RlbmVycyA9IHt9XG4gICAgfVxuXG4gICAgdmFyIGxpc3RlbmVycyA9IGVsZW0ubGlzdGVuZXJzW3R5cGVdXG5cbiAgICBpZiAobGlzdGVuZXJzKSB7XG4gICAgICAgIHJldHVybiBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIGV2LmN1cnJlbnRUYXJnZXQgPSBlbGVtXG4gICAgICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZXYpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVyLmhhbmRsZUV2ZW50KGV2KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGlmIChlbGVtLnBhcmVudE5vZGUpIHtcbiAgICAgICAgZWxlbS5wYXJlbnROb2RlLmRpc3BhdGNoRXZlbnQoZXYpXG4gICAgfVxufVxuXG59LHt9XSwxNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IHJlbW92ZUV2ZW50TGlzdGVuZXJcblxuZnVuY3Rpb24gcmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgIHZhciBlbGVtID0gdGhpc1xuXG4gICAgaWYgKCFlbGVtLmxpc3RlbmVycykge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIWVsZW0ubGlzdGVuZXJzW3R5cGVdKSB7XG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHZhciBsaXN0ID0gZWxlbS5saXN0ZW5lcnNbdHlwZV1cbiAgICB2YXIgaW5kZXggPSBsaXN0LmluZGV4T2YobGlzdGVuZXIpXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICBsaXN0LnNwbGljZShpbmRleCwgMSlcbiAgICB9XG59XG5cbn0se31dLDE3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBEb2N1bWVudCA9IHJlcXVpcmUoJy4vZG9jdW1lbnQuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuZXcgRG9jdW1lbnQoKTtcblxufSx7XCIuL2RvY3VtZW50LmpzXCI6OH1dLDE4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZVxuXG5tb2R1bGUuZXhwb3J0cyA9IGl0ZXJhdGl2ZWx5V2Fsa1xuXG5mdW5jdGlvbiBpdGVyYXRpdmVseVdhbGsobm9kZXMsIGNiKSB7XG4gICAgaWYgKCEoJ2xlbmd0aCcgaW4gbm9kZXMpKSB7XG4gICAgICAgIG5vZGVzID0gW25vZGVzXVxuICAgIH1cbiAgICBcbiAgICBub2RlcyA9IHNsaWNlLmNhbGwobm9kZXMpXG5cbiAgICB3aGlsZShub2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5vZGUgPSBub2Rlcy5zaGlmdCgpLFxuICAgICAgICAgICAgcmV0ID0gY2Iobm9kZSlcblxuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZE5vZGVzICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vZGVzID0gc2xpY2UuY2FsbChub2RlLmNoaWxkTm9kZXMpLmNvbmNhdChub2RlcylcbiAgICAgICAgfVxuICAgIH1cbn1cblxufSx7fV0sMTk6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBzZXJpYWxpemVOb2RlXG5cbnZhciB2b2lkRWxlbWVudHMgPSAvYXJlYXxiYXNlfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8a2V5Z2VufGxpbmt8bWVudWl0ZW18bWV0YXxwYXJhbXxzb3VyY2V8dHJhY2t8d2JyL2k7XG5cbmZ1bmN0aW9uIHNlcmlhbGl6ZU5vZGUobm9kZSkge1xuICAgIHN3aXRjaCAobm9kZS5ub2RlVHlwZSkge1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICByZXR1cm4gZXNjYXBlVGV4dChub2RlLmRhdGEpXG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgIHJldHVybiBcIjwhLS1cIiArIG5vZGUuZGF0YSArIFwiLS0+XCJcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBzZXJpYWxpemVFbGVtZW50KG5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiBzZXJpYWxpemVFbGVtZW50KGVsZW0pIHtcbiAgICB2YXIgc3RyaW5ncyA9IFtdXG5cbiAgICB2YXIgdGFnbmFtZSA9IGVsZW0udGFnTmFtZVxuXG4gICAgaWYgKGVsZW0ubmFtZXNwYWNlVVJJID09PSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIikge1xuICAgICAgICB0YWduYW1lID0gdGFnbmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgfVxuXG4gICAgc3RyaW5ncy5wdXNoKFwiPFwiICsgdGFnbmFtZSArIHByb3BlcnRpZXMoZWxlbSkgKyBkYXRhc2V0aWZ5KGVsZW0pKVxuXG4gICAgaWYgKHZvaWRFbGVtZW50cy50ZXN0KHRhZ25hbWUpKSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIiAvPlwiKVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHN0cmluZ3MucHVzaChcIj5cIilcblxuICAgICAgICBpZiAoZWxlbS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoLmFwcGx5KHN0cmluZ3MsIGVsZW0uY2hpbGROb2Rlcy5tYXAoc2VyaWFsaXplTm9kZSkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkge1xuICAgICAgICAgICAgc3RyaW5ncy5wdXNoKGVzY2FwZVRleHQoZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVyVGV4dCkpXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbS5pbm5lckhUTUwpIHtcbiAgICAgICAgICAgIHN0cmluZ3MucHVzaChlbGVtLmlubmVySFRNTClcbiAgICAgICAgfVxuXG4gICAgICAgIHN0cmluZ3MucHVzaChcIjwvXCIgKyB0YWduYW1lICsgXCI+XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZ3Muam9pbihcIlwiKVxufVxuXG5mdW5jdGlvbiBpc1Byb3BlcnR5KGVsZW0sIGtleSkge1xuICAgIHZhciB0eXBlID0gdHlwZW9mIGVsZW1ba2V5XVxuXG4gICAgaWYgKGtleSA9PT0gXCJzdHlsZVwiICYmIE9iamVjdC5rZXlzKGVsZW0uc3R5bGUpLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW0uaGFzT3duUHJvcGVydHkoa2V5KSAmJlxuICAgICAgICAodHlwZSA9PT0gXCJzdHJpbmdcIiB8fCB0eXBlID09PSBcImJvb2xlYW5cIiB8fCB0eXBlID09PSBcIm51bWJlclwiKSAmJlxuICAgICAgICBrZXkgIT09IFwibm9kZU5hbWVcIiAmJiBrZXkgIT09IFwiY2xhc3NOYW1lXCIgJiYga2V5ICE9PSBcInRhZ05hbWVcIiAmJlxuICAgICAgICBrZXkgIT09IFwidGV4dENvbnRlbnRcIiAmJiBrZXkgIT09IFwiaW5uZXJUZXh0XCIgJiYga2V5ICE9PSBcIm5hbWVzcGFjZVVSSVwiICYmICBrZXkgIT09IFwiaW5uZXJIVE1MXCJcbn1cblxuZnVuY3Rpb24gc3R5bGlmeShzdHlsZXMpIHtcbiAgICBpZiAodHlwZW9mIHN0eWxlcyA9PT0gJ3N0cmluZycpIHJldHVybiBzdHlsZXNcbiAgICB2YXIgYXR0ciA9IFwiXCJcbiAgICBPYmplY3Qua2V5cyhzdHlsZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBzdHlsZXNba2V5XVxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZSgvW0EtWl0vZywgZnVuY3Rpb24oYykge1xuICAgICAgICAgICAgcmV0dXJuIFwiLVwiICsgYy50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB9KVxuICAgICAgICBhdHRyICs9IGtleSArIFwiOlwiICsgdmFsdWUgKyBcIjtcIlxuICAgIH0pXG4gICAgcmV0dXJuIGF0dHJcbn1cblxuZnVuY3Rpb24gZGF0YXNldGlmeShlbGVtKSB7XG4gICAgdmFyIGRzID0gZWxlbS5kYXRhc2V0XG4gICAgdmFyIHByb3BzID0gW11cblxuICAgIGZvciAodmFyIGtleSBpbiBkcykge1xuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogXCJkYXRhLVwiICsga2V5LCB2YWx1ZTogZHNba2V5XSB9KVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5sZW5ndGggPyBzdHJpbmdpZnkocHJvcHMpIDogXCJcIlxufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnkobGlzdCkge1xuICAgIHZhciBhdHRyaWJ1dGVzID0gW11cbiAgICBsaXN0LmZvckVhY2goZnVuY3Rpb24gKHR1cGxlKSB7XG4gICAgICAgIHZhciBuYW1lID0gdHVwbGUubmFtZVxuICAgICAgICB2YXIgdmFsdWUgPSB0dXBsZS52YWx1ZVxuXG4gICAgICAgIGlmIChuYW1lID09PSBcInN0eWxlXCIpIHtcbiAgICAgICAgICAgIHZhbHVlID0gc3R5bGlmeSh2YWx1ZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXMucHVzaChuYW1lICsgXCI9XCIgKyBcIlxcXCJcIiArIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKSArIFwiXFxcIlwiKVxuICAgIH0pXG5cbiAgICByZXR1cm4gYXR0cmlidXRlcy5sZW5ndGggPyBcIiBcIiArIGF0dHJpYnV0ZXMuam9pbihcIiBcIikgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIHByb3BlcnRpZXMoZWxlbSkge1xuICAgIHZhciBwcm9wcyA9IFtdXG4gICAgZm9yICh2YXIga2V5IGluIGVsZW0pIHtcbiAgICAgICAgaWYgKGlzUHJvcGVydHkoZWxlbSwga2V5KSkge1xuICAgICAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IGtleSwgdmFsdWU6IGVsZW1ba2V5XSB9KVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgbnMgaW4gZWxlbS5fYXR0cmlidXRlcykge1xuICAgICAgZm9yICh2YXIgYXR0cmlidXRlIGluIGVsZW0uX2F0dHJpYnV0ZXNbbnNdKSB7XG4gICAgICAgIHZhciBwcm9wID0gZWxlbS5fYXR0cmlidXRlc1tuc11bYXR0cmlidXRlXVxuICAgICAgICB2YXIgbmFtZSA9IChwcm9wLnByZWZpeCA/IHByb3AucHJlZml4ICsgXCI6XCIgOiBcIlwiKSArIGF0dHJpYnV0ZVxuICAgICAgICBwcm9wcy5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHByb3AudmFsdWUgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZWxlbS5jbGFzc05hbWUpIHtcbiAgICAgICAgcHJvcHMucHVzaCh7IG5hbWU6IFwiY2xhc3NcIiwgdmFsdWU6IGVsZW0uY2xhc3NOYW1lIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb3BzLmxlbmd0aCA/IHN0cmluZ2lmeShwcm9wcykgOiBcIlwiXG59XG5cbmZ1bmN0aW9uIGVzY2FwZVRleHQocykge1xuICAgIHZhciBzdHIgPSAnJztcblxuICAgIGlmICh0eXBlb2YocykgPT09ICdzdHJpbmcnKSB7IFxuICAgICAgICBzdHIgPSBzOyBcbiAgICB9IGVsc2UgaWYgKHMpIHtcbiAgICAgICAgc3RyID0gcy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBzdHJcbiAgICAgICAgLnJlcGxhY2UoLyYvZywgXCImYW1wO1wiKVxuICAgICAgICAucmVwbGFjZSgvPC9nLCBcIiZsdDtcIilcbiAgICAgICAgLnJlcGxhY2UoLz4vZywgXCImZ3Q7XCIpXG59XG5cbmZ1bmN0aW9uIGVzY2FwZUF0dHJpYnV0ZVZhbHVlKHN0cikge1xuICAgIHJldHVybiBlc2NhcGVUZXh0KHN0cikucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIilcbn1cblxufSx7fV0sMjA6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNPYmplY3QoeCkge1xuXHRyZXR1cm4gdHlwZW9mIHggPT09IFwib2JqZWN0XCIgJiYgeCAhPT0gbnVsbDtcbn07XG5cbn0se31dLDIxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBuYXRpdmVJc0FycmF5ID0gQXJyYXkuaXNBcnJheVxudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUlzQXJyYXkgfHwgaXNBcnJheVxuXG5mdW5jdGlvbiBpc0FycmF5KG9iaikge1xuICAgIHJldHVybiB0b1N0cmluZy5jYWxsKG9iaikgPT09IFwiW29iamVjdCBBcnJheV1cIlxufVxuXG59LHt9XSwyMjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgcGF0Y2ggPSByZXF1aXJlKFwiLi92ZG9tL3BhdGNoLmpzXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxufSx7XCIuL3Zkb20vcGF0Y2guanNcIjoyN31dLDIzOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoXCJpcy1vYmplY3RcIilcbnZhciBpc0hvb2sgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdmhvb2suanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBhcHBseVByb3BlcnRpZXNcblxuZnVuY3Rpb24gYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzLCBwcmV2aW91cykge1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIHByb3BzKSB7XG4gICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV1cblxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0hvb2socHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgcmVtb3ZlUHJvcGVydHkobm9kZSwgcHJvcE5hbWUsIHByb3BWYWx1ZSwgcHJldmlvdXMpXG4gICAgICAgICAgICBpZiAocHJvcFZhbHVlLmhvb2spIHtcbiAgICAgICAgICAgICAgICBwcm9wVmFsdWUuaG9vayhub2RlLFxuICAgICAgICAgICAgICAgICAgICBwcm9wTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoaXNPYmplY3QocHJvcFZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVByb3BlcnR5KG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUsIHByZXZpb3VzKSB7XG4gICAgaWYgKHByZXZpb3VzKSB7XG4gICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXNbcHJvcE5hbWVdXG5cbiAgICAgICAgaWYgKCFpc0hvb2socHJldmlvdXNWYWx1ZSkpIHtcbiAgICAgICAgICAgIGlmIChwcm9wTmFtZSA9PT0gXCJhdHRyaWJ1dGVzXCIpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnN0eWxlW2ldID0gXCJcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByZXZpb3VzVmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IFwiXCJcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNWYWx1ZS51bmhvb2spIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUudW5ob29rKG5vZGUsIHByb3BOYW1lLCBwcm9wVmFsdWUpXG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoT2JqZWN0KG5vZGUsIHByb3BzLCBwcmV2aW91cywgcHJvcE5hbWUsIHByb3BWYWx1ZSkge1xuICAgIHZhciBwcmV2aW91c1ZhbHVlID0gcHJldmlvdXMgPyBwcmV2aW91c1twcm9wTmFtZV0gOiB1bmRlZmluZWRcblxuICAgIC8vIFNldCBhdHRyaWJ1dGVzXG4gICAgaWYgKHByb3BOYW1lID09PSBcImF0dHJpYnV0ZXNcIikge1xuICAgICAgICBmb3IgKHZhciBhdHRyTmFtZSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgICAgIHZhciBhdHRyVmFsdWUgPSBwcm9wVmFsdWVbYXR0ck5hbWVdXG5cbiAgICAgICAgICAgIGlmIChhdHRyVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHJOYW1lKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyTmFtZSwgYXR0clZhbHVlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYocHJldmlvdXNWYWx1ZSAmJiBpc09iamVjdChwcmV2aW91c1ZhbHVlKSAmJlxuICAgICAgICBnZXRQcm90b3R5cGUocHJldmlvdXNWYWx1ZSkgIT09IGdldFByb3RvdHlwZShwcm9wVmFsdWUpKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0gcHJvcFZhbHVlXG4gICAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghaXNPYmplY3Qobm9kZVtwcm9wTmFtZV0pKSB7XG4gICAgICAgIG5vZGVbcHJvcE5hbWVdID0ge31cbiAgICB9XG5cbiAgICB2YXIgcmVwbGFjZXIgPSBwcm9wTmFtZSA9PT0gXCJzdHlsZVwiID8gXCJcIiA6IHVuZGVmaW5lZFxuXG4gICAgZm9yICh2YXIgayBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcHJvcFZhbHVlW2tdXG4gICAgICAgIG5vZGVbcHJvcE5hbWVdW2tdID0gKHZhbHVlID09PSB1bmRlZmluZWQpID8gcmVwbGFjZXIgOiB2YWx1ZVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZikge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICAgIH0gZWxzZSBpZiAodmFsdWUuX19wcm90b19fKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgICB9IGVsc2UgaWYgKHZhbHVlLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgICB9XG59XG5cbn0se1wiLi4vdm5vZGUvaXMtdmhvb2suanNcIjozOCxcImlzLW9iamVjdFwiOjIwfV0sMjQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZShcImdsb2JhbC9kb2N1bWVudFwiKVxuXG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12bm9kZS5qc1wiKVxudmFyIGlzVlRleHQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdnRleHQuanNcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVFbGVtZW50XG5cbmZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQodm5vZGUsIG9wdHMpIHtcbiAgICB2YXIgZG9jID0gb3B0cyA/IG9wdHMuZG9jdW1lbnQgfHwgZG9jdW1lbnQgOiBkb2N1bWVudFxuICAgIHZhciB3YXJuID0gb3B0cyA/IG9wdHMud2FybiA6IG51bGxcblxuICAgIHZub2RlID0gaGFuZGxlVGh1bmsodm5vZGUpLmFcblxuICAgIGlmIChpc1dpZGdldCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHZub2RlLmluaXQoKVxuICAgIH0gZWxzZSBpZiAoaXNWVGV4dCh2bm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIGRvYy5jcmVhdGVUZXh0Tm9kZSh2bm9kZS50ZXh0KVxuICAgIH0gZWxzZSBpZiAoIWlzVk5vZGUodm5vZGUpKSB7XG4gICAgICAgIGlmICh3YXJuKSB7XG4gICAgICAgICAgICB3YXJuKFwiSXRlbSBpcyBub3QgYSB2YWxpZCB2aXJ0dWFsIGRvbSBub2RlXCIsIHZub2RlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgdmFyIG5vZGUgPSAodm5vZGUubmFtZXNwYWNlID09PSBudWxsKSA/XG4gICAgICAgIGRvYy5jcmVhdGVFbGVtZW50KHZub2RlLnRhZ05hbWUpIDpcbiAgICAgICAgZG9jLmNyZWF0ZUVsZW1lbnROUyh2bm9kZS5uYW1lc3BhY2UsIHZub2RlLnRhZ05hbWUpXG5cbiAgICB2YXIgcHJvcHMgPSB2bm9kZS5wcm9wZXJ0aWVzXG4gICAgYXBwbHlQcm9wZXJ0aWVzKG5vZGUsIHByb3BzKVxuXG4gICAgdmFyIGNoaWxkcmVuID0gdm5vZGUuY2hpbGRyZW5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGNyZWF0ZUVsZW1lbnQoY2hpbGRyZW5baV0sIG9wdHMpXG4gICAgICAgIGlmIChjaGlsZE5vZGUpIHtcbiAgICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGROb2RlKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVcbn1cblxufSx7XCIuLi92bm9kZS9oYW5kbGUtdGh1bmsuanNcIjozNixcIi4uL3Zub2RlL2lzLXZub2RlLmpzXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dC5qc1wiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDEsXCIuL2FwcGx5LXByb3BlcnRpZXNcIjoyMyxcImdsb2JhbC9kb2N1bWVudFwiOjd9XSwyNTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4vLyBNYXBzIGEgdmlydHVhbCBET00gdHJlZSBvbnRvIGEgcmVhbCBET00gdHJlZSBpbiBhbiBlZmZpY2llbnQgbWFubmVyLlxuLy8gV2UgZG9uJ3Qgd2FudCB0byByZWFkIGFsbCBvZiB0aGUgRE9NIG5vZGVzIGluIHRoZSB0cmVlIHNvIHdlIHVzZVxuLy8gdGhlIGluLW9yZGVyIHRyZWUgaW5kZXhpbmcgdG8gZWxpbWluYXRlIHJlY3Vyc2lvbiBkb3duIGNlcnRhaW4gYnJhbmNoZXMuXG4vLyBXZSBvbmx5IHJlY3Vyc2UgaW50byBhIERPTSBub2RlIGlmIHdlIGtub3cgdGhhdCBpdCBjb250YWlucyBhIGNoaWxkIG9mXG4vLyBpbnRlcmVzdC5cblxudmFyIG5vQ2hpbGQgPSB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUluZGV4XG5cbmZ1bmN0aW9uIGRvbUluZGV4KHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcykge1xuICAgIGlmICghaW5kaWNlcyB8fCBpbmRpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4ge31cbiAgICB9IGVsc2Uge1xuICAgICAgICBpbmRpY2VzLnNvcnQoYXNjZW5kaW5nKVxuICAgICAgICByZXR1cm4gcmVjdXJzZShyb290Tm9kZSwgdHJlZSwgaW5kaWNlcywgbm9kZXMsIDApXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWN1cnNlKHJvb3ROb2RlLCB0cmVlLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KSB7XG4gICAgbm9kZXMgPSBub2RlcyB8fCB7fVxuXG5cbiAgICBpZiAocm9vdE5vZGUpIHtcbiAgICAgICAgaWYgKGluZGV4SW5SYW5nZShpbmRpY2VzLCByb290SW5kZXgsIHJvb3RJbmRleCkpIHtcbiAgICAgICAgICAgIG5vZGVzW3Jvb3RJbmRleF0gPSByb290Tm9kZVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHZDaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW5cblxuICAgICAgICBpZiAodkNoaWxkcmVuKSB7XG5cbiAgICAgICAgICAgIHZhciBjaGlsZE5vZGVzID0gcm9vdE5vZGUuY2hpbGROb2Rlc1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyZWUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByb290SW5kZXggKz0gMVxuXG4gICAgICAgICAgICAgICAgdmFyIHZDaGlsZCA9IHZDaGlsZHJlbltpXSB8fCBub0NoaWxkXG4gICAgICAgICAgICAgICAgdmFyIG5leHRJbmRleCA9IHJvb3RJbmRleCArICh2Q2hpbGQuY291bnQgfHwgMClcblxuICAgICAgICAgICAgICAgIC8vIHNraXAgcmVjdXJzaW9uIGRvd24gdGhlIHRyZWUgaWYgdGhlcmUgYXJlIG5vIG5vZGVzIGRvd24gaGVyZVxuICAgICAgICAgICAgICAgIGlmIChpbmRleEluUmFuZ2UoaW5kaWNlcywgcm9vdEluZGV4LCBuZXh0SW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlY3Vyc2UoY2hpbGROb2Rlc1tpXSwgdkNoaWxkLCBpbmRpY2VzLCBub2Rlcywgcm9vdEluZGV4KVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvb3RJbmRleCA9IG5leHRJbmRleFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vZGVzXG59XG5cbi8vIEJpbmFyeSBzZWFyY2ggZm9yIGFuIGluZGV4IGluIHRoZSBpbnRlcnZhbCBbbGVmdCwgcmlnaHRdXG5mdW5jdGlvbiBpbmRleEluUmFuZ2UoaW5kaWNlcywgbGVmdCwgcmlnaHQpIHtcbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgdmFyIG1pbkluZGV4ID0gMFxuICAgIHZhciBtYXhJbmRleCA9IGluZGljZXMubGVuZ3RoIC0gMVxuICAgIHZhciBjdXJyZW50SW5kZXhcbiAgICB2YXIgY3VycmVudEl0ZW1cblxuICAgIHdoaWxlIChtaW5JbmRleCA8PSBtYXhJbmRleCkge1xuICAgICAgICBjdXJyZW50SW5kZXggPSAoKG1heEluZGV4ICsgbWluSW5kZXgpIC8gMikgPj4gMFxuICAgICAgICBjdXJyZW50SXRlbSA9IGluZGljZXNbY3VycmVudEluZGV4XVxuXG4gICAgICAgIGlmIChtaW5JbmRleCA9PT0gbWF4SW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50SXRlbSA+PSBsZWZ0ICYmIGN1cnJlbnRJdGVtIDw9IHJpZ2h0XG4gICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEl0ZW0gPCBsZWZ0KSB7XG4gICAgICAgICAgICBtaW5JbmRleCA9IGN1cnJlbnRJbmRleCArIDFcbiAgICAgICAgfSBlbHNlICBpZiAoY3VycmVudEl0ZW0gPiByaWdodCkge1xuICAgICAgICAgICAgbWF4SW5kZXggPSBjdXJyZW50SW5kZXggLSAxXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBhc2NlbmRpbmcoYSwgYikge1xuICAgIHJldHVybiBhID4gYiA/IDEgOiAtMVxufVxuXG59LHt9XSwyNjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgYXBwbHlQcm9wZXJ0aWVzID0gcmVxdWlyZShcIi4vYXBwbHktcHJvcGVydGllc1wiKVxuXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCIpXG52YXIgVlBhdGNoID0gcmVxdWlyZShcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiKVxuXG52YXIgdXBkYXRlV2lkZ2V0ID0gcmVxdWlyZShcIi4vdXBkYXRlLXdpZGdldFwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFwcGx5UGF0Y2hcblxuZnVuY3Rpb24gYXBwbHlQYXRjaCh2cGF0Y2gsIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgdHlwZSA9IHZwYXRjaC50eXBlXG4gICAgdmFyIHZOb2RlID0gdnBhdGNoLnZOb2RlXG4gICAgdmFyIHBhdGNoID0gdnBhdGNoLnBhdGNoXG5cbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBWUGF0Y2guUkVNT1ZFOlxuICAgICAgICAgICAgcmV0dXJuIHJlbW92ZU5vZGUoZG9tTm9kZSwgdk5vZGUpXG4gICAgICAgIGNhc2UgVlBhdGNoLklOU0VSVDpcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnROb2RlKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5WVEVYVDpcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLldJREdFVDpcbiAgICAgICAgICAgIHJldHVybiB3aWRnZXRQYXRjaChkb21Ob2RlLCB2Tm9kZSwgcGF0Y2gsIHJlbmRlck9wdGlvbnMpXG4gICAgICAgIGNhc2UgVlBhdGNoLlZOT0RFOlxuICAgICAgICAgICAgcmV0dXJuIHZOb2RlUGF0Y2goZG9tTm9kZSwgdk5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKVxuICAgICAgICBjYXNlIFZQYXRjaC5PUkRFUjpcbiAgICAgICAgICAgIHJlb3JkZXJDaGlsZHJlbihkb21Ob2RlLCBwYXRjaClcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgICAgIGNhc2UgVlBhdGNoLlBST1BTOlxuICAgICAgICAgICAgYXBwbHlQcm9wZXJ0aWVzKGRvbU5vZGUsIHBhdGNoLCB2Tm9kZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVcbiAgICAgICAgY2FzZSBWUGF0Y2guVEhVTks6XG4gICAgICAgICAgICByZXR1cm4gcmVwbGFjZVJvb3QoZG9tTm9kZSxcbiAgICAgICAgICAgICAgICByZW5kZXJPcHRpb25zLnBhdGNoKGRvbU5vZGUsIHBhdGNoLCByZW5kZXJPcHRpb25zKSlcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBkb21Ob2RlXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVOb2RlKGRvbU5vZGUsIHZOb2RlKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcblxuICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZG9tTm9kZSlcbiAgICB9XG5cbiAgICBkZXN0cm95V2lkZ2V0KGRvbU5vZGUsIHZOb2RlKTtcblxuICAgIHJldHVybiBudWxsXG59XG5cbmZ1bmN0aW9uIGluc2VydE5vZGUocGFyZW50Tm9kZSwgdk5vZGUsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5hcHBlbmRDaGlsZChuZXdOb2RlKVxuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnROb2RlXG59XG5cbmZ1bmN0aW9uIHN0cmluZ1BhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgdlRleHQsIHJlbmRlck9wdGlvbnMpIHtcbiAgICB2YXIgbmV3Tm9kZVxuXG4gICAgaWYgKGRvbU5vZGUubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgICAgZG9tTm9kZS5yZXBsYWNlRGF0YSgwLCBkb21Ob2RlLmxlbmd0aCwgdlRleHQudGV4dClcbiAgICAgICAgbmV3Tm9kZSA9IGRvbU5vZGVcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuICAgICAgICBuZXdOb2RlID0gcmVuZGVyT3B0aW9ucy5yZW5kZXIodlRleHQsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICAgICAgcGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgZG9tTm9kZSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIHdpZGdldFBhdGNoKGRvbU5vZGUsIGxlZnRWTm9kZSwgd2lkZ2V0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHVwZGF0aW5nID0gdXBkYXRlV2lkZ2V0KGxlZnRWTm9kZSwgd2lkZ2V0KVxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAodXBkYXRpbmcpIHtcbiAgICAgICAgbmV3Tm9kZSA9IHdpZGdldC51cGRhdGUobGVmdFZOb2RlLCBkb21Ob2RlKSB8fCBkb21Ob2RlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHdpZGdldCwgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICB2YXIgcGFyZW50Tm9kZSA9IGRvbU5vZGUucGFyZW50Tm9kZVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIGlmICghdXBkYXRpbmcpIHtcbiAgICAgICAgZGVzdHJveVdpZGdldChkb21Ob2RlLCBsZWZ0Vk5vZGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld05vZGVcbn1cblxuZnVuY3Rpb24gdk5vZGVQYXRjaChkb21Ob2RlLCBsZWZ0Vk5vZGUsIHZOb2RlLCByZW5kZXJPcHRpb25zKSB7XG4gICAgdmFyIHBhcmVudE5vZGUgPSBkb21Ob2RlLnBhcmVudE5vZGVcbiAgICB2YXIgbmV3Tm9kZSA9IHJlbmRlck9wdGlvbnMucmVuZGVyKHZOb2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgaWYgKHBhcmVudE5vZGUgJiYgbmV3Tm9kZSAhPT0gZG9tTm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdOb2RlLCBkb21Ob2RlKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdOb2RlXG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3lXaWRnZXQoZG9tTm9kZSwgdykge1xuICAgIGlmICh0eXBlb2Ygdy5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIgJiYgaXNXaWRnZXQodykpIHtcbiAgICAgICAgdy5kZXN0cm95KGRvbU5vZGUpXG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW9yZGVyQ2hpbGRyZW4oZG9tTm9kZSwgbW92ZXMpIHtcbiAgICB2YXIgY2hpbGROb2RlcyA9IGRvbU5vZGUuY2hpbGROb2Rlc1xuICAgIHZhciBrZXlNYXAgPSB7fVxuICAgIHZhciBub2RlXG4gICAgdmFyIHJlbW92ZVxuICAgIHZhciBpbnNlcnRcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW92ZXMucmVtb3Zlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZW1vdmUgPSBtb3Zlcy5yZW1vdmVzW2ldXG4gICAgICAgIG5vZGUgPSBjaGlsZE5vZGVzW3JlbW92ZS5mcm9tXVxuICAgICAgICBpZiAocmVtb3ZlLmtleSkge1xuICAgICAgICAgICAga2V5TWFwW3JlbW92ZS5rZXldID0gbm9kZVxuICAgICAgICB9XG4gICAgICAgIGRvbU5vZGUucmVtb3ZlQ2hpbGQobm9kZSlcbiAgICB9XG5cbiAgICB2YXIgbGVuZ3RoID0gY2hpbGROb2Rlcy5sZW5ndGhcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1vdmVzLmluc2VydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaW5zZXJ0ID0gbW92ZXMuaW5zZXJ0c1tqXVxuICAgICAgICBub2RlID0ga2V5TWFwW2luc2VydC5rZXldXG4gICAgICAgIC8vIHRoaXMgaXMgdGhlIHdlaXJkZXN0IGJ1ZyBpJ3ZlIGV2ZXIgc2VlbiBpbiB3ZWJraXRcbiAgICAgICAgZG9tTm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgaW5zZXJ0LnRvID49IGxlbmd0aCsrID8gbnVsbCA6IGNoaWxkTm9kZXNbaW5zZXJ0LnRvXSlcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VSb290KG9sZFJvb3QsIG5ld1Jvb3QpIHtcbiAgICBpZiAob2xkUm9vdCAmJiBuZXdSb290ICYmIG9sZFJvb3QgIT09IG5ld1Jvb3QgJiYgb2xkUm9vdC5wYXJlbnROb2RlKSB7XG4gICAgICAgIG9sZFJvb3QucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Um9vdCwgb2xkUm9vdClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3Um9vdDtcbn1cblxufSx7XCIuLi92bm9kZS9pcy13aWRnZXQuanNcIjo0MSxcIi4uL3Zub2RlL3ZwYXRjaC5qc1wiOjQ0LFwiLi9hcHBseS1wcm9wZXJ0aWVzXCI6MjMsXCIuL3VwZGF0ZS13aWRnZXRcIjoyOH1dLDI3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBkb2N1bWVudCA9IHJlcXVpcmUoXCJnbG9iYWwvZG9jdW1lbnRcIilcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIHJlbmRlciA9IHJlcXVpcmUoXCIuL2NyZWF0ZS1lbGVtZW50XCIpXG52YXIgZG9tSW5kZXggPSByZXF1aXJlKFwiLi9kb20taW5kZXhcIilcbnZhciBwYXRjaE9wID0gcmVxdWlyZShcIi4vcGF0Y2gtb3BcIilcbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hcblxuZnVuY3Rpb24gcGF0Y2gocm9vdE5vZGUsIHBhdGNoZXMsIHJlbmRlck9wdGlvbnMpIHtcbiAgICByZW5kZXJPcHRpb25zID0gcmVuZGVyT3B0aW9ucyB8fCB7fVxuICAgIHJlbmRlck9wdGlvbnMucGF0Y2ggPSByZW5kZXJPcHRpb25zLnBhdGNoICYmIHJlbmRlck9wdGlvbnMucGF0Y2ggIT09IHBhdGNoXG4gICAgICAgID8gcmVuZGVyT3B0aW9ucy5wYXRjaFxuICAgICAgICA6IHBhdGNoUmVjdXJzaXZlXG4gICAgcmVuZGVyT3B0aW9ucy5yZW5kZXIgPSByZW5kZXJPcHRpb25zLnJlbmRlciB8fCByZW5kZXJcblxuICAgIHJldHVybiByZW5kZXJPcHRpb25zLnBhdGNoKHJvb3ROb2RlLCBwYXRjaGVzLCByZW5kZXJPcHRpb25zKVxufVxuXG5mdW5jdGlvbiBwYXRjaFJlY3Vyc2l2ZShyb290Tm9kZSwgcGF0Y2hlcywgcmVuZGVyT3B0aW9ucykge1xuICAgIHZhciBpbmRpY2VzID0gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpXG5cbiAgICBpZiAoaW5kaWNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJvb3ROb2RlXG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gZG9tSW5kZXgocm9vdE5vZGUsIHBhdGNoZXMuYSwgaW5kaWNlcylcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IHJvb3ROb2RlLm93bmVyRG9jdW1lbnRcblxuICAgIGlmICghcmVuZGVyT3B0aW9ucy5kb2N1bWVudCAmJiBvd25lckRvY3VtZW50ICE9PSBkb2N1bWVudCkge1xuICAgICAgICByZW5kZXJPcHRpb25zLmRvY3VtZW50ID0gb3duZXJEb2N1bWVudFxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbm9kZUluZGV4ID0gaW5kaWNlc1tpXVxuICAgICAgICByb290Tm9kZSA9IGFwcGx5UGF0Y2gocm9vdE5vZGUsXG4gICAgICAgICAgICBpbmRleFtub2RlSW5kZXhdLFxuICAgICAgICAgICAgcGF0Y2hlc1tub2RlSW5kZXhdLFxuICAgICAgICAgICAgcmVuZGVyT3B0aW9ucylcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gYXBwbHlQYXRjaChyb290Tm9kZSwgZG9tTm9kZSwgcGF0Y2hMaXN0LCByZW5kZXJPcHRpb25zKSB7XG4gICAgaWYgKCFkb21Ob2RlKSB7XG4gICAgICAgIHJldHVybiByb290Tm9kZVxuICAgIH1cblxuICAgIHZhciBuZXdOb2RlXG5cbiAgICBpZiAoaXNBcnJheShwYXRjaExpc3QpKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0Y2hMaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXdOb2RlID0gcGF0Y2hPcChwYXRjaExpc3RbaV0sIGRvbU5vZGUsIHJlbmRlck9wdGlvbnMpXG5cbiAgICAgICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgICAgIHJvb3ROb2RlID0gbmV3Tm9kZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Tm9kZSA9IHBhdGNoT3AocGF0Y2hMaXN0LCBkb21Ob2RlLCByZW5kZXJPcHRpb25zKVxuXG4gICAgICAgIGlmIChkb21Ob2RlID09PSByb290Tm9kZSkge1xuICAgICAgICAgICAgcm9vdE5vZGUgPSBuZXdOb2RlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcm9vdE5vZGVcbn1cblxuZnVuY3Rpb24gcGF0Y2hJbmRpY2VzKHBhdGNoZXMpIHtcbiAgICB2YXIgaW5kaWNlcyA9IFtdXG5cbiAgICBmb3IgKHZhciBrZXkgaW4gcGF0Y2hlcykge1xuICAgICAgICBpZiAoa2V5ICE9PSBcImFcIikge1xuICAgICAgICAgICAgaW5kaWNlcy5wdXNoKE51bWJlcihrZXkpKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGljZXNcbn1cblxufSx7XCIuL2NyZWF0ZS1lbGVtZW50XCI6MjQsXCIuL2RvbS1pbmRleFwiOjI1LFwiLi9wYXRjaC1vcFwiOjI2LFwiZ2xvYmFsL2RvY3VtZW50XCI6NyxcIngtaXMtYXJyYXlcIjoyMX1dLDI4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy13aWRnZXQuanNcIilcblxubW9kdWxlLmV4cG9ydHMgPSB1cGRhdGVXaWRnZXRcblxuZnVuY3Rpb24gdXBkYXRlV2lkZ2V0KGEsIGIpIHtcbiAgICBpZiAoaXNXaWRnZXQoYSkgJiYgaXNXaWRnZXQoYikpIHtcbiAgICAgICAgaWYgKFwibmFtZVwiIGluIGEgJiYgXCJuYW1lXCIgaW4gYikge1xuICAgICAgICAgICAgcmV0dXJuIGEuaWQgPT09IGIuaWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhLmluaXQgPT09IGIuaW5pdFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbn0se1wiLi4vdm5vZGUvaXMtd2lkZ2V0LmpzXCI6NDF9XSwyOTpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gQXR0cmlidXRlSG9vaztcblxuZnVuY3Rpb24gQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEF0dHJpYnV0ZUhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlSG9vayhuYW1lc3BhY2UsIHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm5hbWVzcGFjZSA9IG5hbWVzcGFjZTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcCwgcHJldikge1xuICAgIGlmIChwcmV2ICYmIHByZXYudHlwZSA9PT0gJ0F0dHJpYnV0ZUhvb2snICYmXG4gICAgICAgIHByZXYudmFsdWUgPT09IHRoaXMudmFsdWUgJiZcbiAgICAgICAgcHJldi5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBub2RlLnNldEF0dHJpYnV0ZU5TKHRoaXMubmFtZXNwYWNlLCBwcm9wLCB0aGlzLnZhbHVlKTtcbn07XG5cbkF0dHJpYnV0ZUhvb2sucHJvdG90eXBlLnVuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wLCBuZXh0KSB7XG4gICAgaWYgKG5leHQgJiYgbmV4dC50eXBlID09PSAnQXR0cmlidXRlSG9vaycgJiZcbiAgICAgICAgbmV4dC5uYW1lc3BhY2UgPT09IHRoaXMubmFtZXNwYWNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY29sb25Qb3NpdGlvbiA9IHByb3AuaW5kZXhPZignOicpO1xuICAgIHZhciBsb2NhbE5hbWUgPSBjb2xvblBvc2l0aW9uID4gLTEgPyBwcm9wLnN1YnN0cihjb2xvblBvc2l0aW9uICsgMSkgOiBwcm9wO1xuICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlTlModGhpcy5uYW1lc3BhY2UsIGxvY2FsTmFtZSk7XG59O1xuXG5BdHRyaWJ1dGVIb29rLnByb3RvdHlwZS50eXBlID0gJ0F0dHJpYnV0ZUhvb2snO1xuXG59LHt9XSwzMDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdlN0b3JlID0gcmVxdWlyZSgnZXYtc3RvcmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdkhvb2s7XG5cbmZ1bmN0aW9uIEV2SG9vayh2YWx1ZSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFdkhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgRXZIb29rKHZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG59XG5cbkV2SG9vay5wcm90b3R5cGUuaG9vayA9IGZ1bmN0aW9uIChub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB0aGlzLnZhbHVlO1xufTtcblxuRXZIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbihub2RlLCBwcm9wZXJ0eU5hbWUpIHtcbiAgICB2YXIgZXMgPSBFdlN0b3JlKG5vZGUpO1xuICAgIHZhciBwcm9wTmFtZSA9IHByb3BlcnR5TmFtZS5zdWJzdHIoMyk7XG5cbiAgICBlc1twcm9wTmFtZV0gPSB1bmRlZmluZWQ7XG59O1xuXG59LHtcImV2LXN0b3JlXCI6NH1dLDMxOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBTb2Z0U2V0SG9vaztcblxuZnVuY3Rpb24gU29mdFNldEhvb2sodmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn1cblxuU29mdFNldEhvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcGVydHlOYW1lKSB7XG4gICAgaWYgKG5vZGVbcHJvcGVydHlOYW1lXSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgICBub2RlW3Byb3BlcnR5TmFtZV0gPSB0aGlzLnZhbHVlO1xuICAgIH1cbn07XG5cbn0se31dLDMyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbid1c2Ugc3RyaWN0JztcblxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCd4LWlzLWFycmF5Jyk7XG5cbnZhciBWTm9kZSA9IHJlcXVpcmUoJy4uL3Zub2RlL3Zub2RlLmpzJyk7XG52YXIgVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS92dGV4dC5qcycpO1xudmFyIGlzVk5vZGUgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12bm9kZScpO1xudmFyIGlzVlRleHQgPSByZXF1aXJlKCcuLi92bm9kZS9pcy12dGV4dCcpO1xudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtd2lkZ2V0Jyk7XG52YXIgaXNIb29rID0gcmVxdWlyZSgnLi4vdm5vZGUvaXMtdmhvb2snKTtcbnZhciBpc1ZUaHVuayA9IHJlcXVpcmUoJy4uL3Zub2RlL2lzLXRodW5rJyk7XG5cbnZhciBwYXJzZVRhZyA9IHJlcXVpcmUoJy4vcGFyc2UtdGFnLmpzJyk7XG52YXIgc29mdFNldEhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL3NvZnQtc2V0LWhvb2suanMnKTtcbnZhciBldkhvb2sgPSByZXF1aXJlKCcuL2hvb2tzL2V2LWhvb2suanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBoO1xuXG5mdW5jdGlvbiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKSB7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBbXTtcbiAgICB2YXIgdGFnLCBwcm9wcywga2V5LCBuYW1lc3BhY2U7XG5cbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wcyA9IHt9O1xuICAgIH1cblxuICAgIHByb3BzID0gcHJvcHMgfHwgcHJvcGVydGllcyB8fCB7fTtcbiAgICB0YWcgPSBwYXJzZVRhZyh0YWdOYW1lLCBwcm9wcyk7XG5cbiAgICAvLyBzdXBwb3J0IGtleXNcbiAgICBpZiAocHJvcHMuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgICAgIGtleSA9IHByb3BzLmtleTtcbiAgICAgICAgcHJvcHMua2V5ID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIHN1cHBvcnQgbmFtZXNwYWNlXG4gICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KCduYW1lc3BhY2UnKSkge1xuICAgICAgICBuYW1lc3BhY2UgPSBwcm9wcy5uYW1lc3BhY2U7XG4gICAgICAgIHByb3BzLm5hbWVzcGFjZSA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBmaXggY3Vyc29yIGJ1Z1xuICAgIGlmICh0YWcgPT09ICdJTlBVVCcgJiZcbiAgICAgICAgIW5hbWVzcGFjZSAmJlxuICAgICAgICBwcm9wcy5oYXNPd25Qcm9wZXJ0eSgndmFsdWUnKSAmJlxuICAgICAgICBwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICFpc0hvb2socHJvcHMudmFsdWUpXG4gICAgKSB7XG4gICAgICAgIHByb3BzLnZhbHVlID0gc29mdFNldEhvb2socHJvcHMudmFsdWUpO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybVByb3BlcnRpZXMocHJvcHMpO1xuXG4gICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQgJiYgY2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgICAgYWRkQ2hpbGQoY2hpbGRyZW4sIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpO1xuICAgIH1cblxuXG4gICAgcmV0dXJuIG5ldyBWTm9kZSh0YWcsIHByb3BzLCBjaGlsZE5vZGVzLCBrZXksIG5hbWVzcGFjZSk7XG59XG5cbmZ1bmN0aW9uIGFkZENoaWxkKGMsIGNoaWxkTm9kZXMsIHRhZywgcHJvcHMpIHtcbiAgICBpZiAodHlwZW9mIGMgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoYykpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGMgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChuZXcgVlRleHQoU3RyaW5nKGMpKSk7XG4gICAgfSBlbHNlIGlmIChpc0NoaWxkKGMpKSB7XG4gICAgICAgIGNoaWxkTm9kZXMucHVzaChjKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoYykpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhZGRDaGlsZChjW2ldLCBjaGlsZE5vZGVzLCB0YWcsIHByb3BzKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYyA9PT0gbnVsbCB8fCBjID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IFVuZXhwZWN0ZWRWaXJ0dWFsRWxlbWVudCh7XG4gICAgICAgICAgICBmb3JlaWduT2JqZWN0OiBjLFxuICAgICAgICAgICAgcGFyZW50Vm5vZGU6IHtcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiB0YWcsXG4gICAgICAgICAgICAgICAgcHJvcGVydGllczogcHJvcHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Qcm9wZXJ0aWVzKHByb3BzKSB7XG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcHMpIHtcbiAgICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXG4gICAgICAgICAgICBpZiAoaXNIb29rKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocHJvcE5hbWUuc3Vic3RyKDAsIDMpID09PSAnZXYtJykge1xuICAgICAgICAgICAgICAgIC8vIGFkZCBldi1mb28gc3VwcG9ydFxuICAgICAgICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGV2SG9vayh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGQoeCkge1xuICAgIHJldHVybiBpc1ZOb2RlKHgpIHx8IGlzVlRleHQoeCkgfHwgaXNXaWRnZXQoeCkgfHwgaXNWVGh1bmsoeCk7XG59XG5cbmZ1bmN0aW9uIGlzQ2hpbGRyZW4oeCkge1xuICAgIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheSh4KSB8fCBpc0NoaWxkKHgpO1xufVxuXG5mdW5jdGlvbiBVbmV4cGVjdGVkVmlydHVhbEVsZW1lbnQoZGF0YSkge1xuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTtcblxuICAgIGVyci50eXBlID0gJ3ZpcnR1YWwtaHlwZXJzY3JpcHQudW5leHBlY3RlZC52aXJ0dWFsLWVsZW1lbnQnO1xuICAgIGVyci5tZXNzYWdlID0gJ1VuZXhwZWN0ZWQgdmlydHVhbCBjaGlsZCBwYXNzZWQgdG8gaCgpLlxcbicgK1xuICAgICAgICAnRXhwZWN0ZWQgYSBWTm9kZSAvIFZ0aHVuayAvIFZXaWRnZXQgLyBzdHJpbmcgYnV0OlxcbicgK1xuICAgICAgICAnZ290OlxcbicgK1xuICAgICAgICBlcnJvclN0cmluZyhkYXRhLmZvcmVpZ25PYmplY3QpICtcbiAgICAgICAgJy5cXG4nICtcbiAgICAgICAgJ1RoZSBwYXJlbnQgdm5vZGUgaXM6XFxuJyArXG4gICAgICAgIGVycm9yU3RyaW5nKGRhdGEucGFyZW50Vm5vZGUpXG4gICAgICAgICdcXG4nICtcbiAgICAgICAgJ1N1Z2dlc3RlZCBmaXg6IGNoYW5nZSB5b3VyIGBoKC4uLiwgWyAuLi4gXSlgIGNhbGxzaXRlLic7XG4gICAgZXJyLmZvcmVpZ25PYmplY3QgPSBkYXRhLmZvcmVpZ25PYmplY3Q7XG4gICAgZXJyLnBhcmVudFZub2RlID0gZGF0YS5wYXJlbnRWbm9kZTtcblxuICAgIHJldHVybiBlcnI7XG59XG5cbmZ1bmN0aW9uIGVycm9yU3RyaW5nKG9iaikge1xuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsICcgICAgJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gU3RyaW5nKG9iaik7XG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXRodW5rXCI6MzcsXCIuLi92bm9kZS9pcy12aG9va1wiOjM4LFwiLi4vdm5vZGUvaXMtdm5vZGVcIjozOSxcIi4uL3Zub2RlL2lzLXZ0ZXh0XCI6NDAsXCIuLi92bm9kZS9pcy13aWRnZXRcIjo0MSxcIi4uL3Zub2RlL3Zub2RlLmpzXCI6NDMsXCIuLi92bm9kZS92dGV4dC5qc1wiOjQ1LFwiLi9ob29rcy9ldi1ob29rLmpzXCI6MzAsXCIuL2hvb2tzL3NvZnQtc2V0LWhvb2suanNcIjozMSxcIi4vcGFyc2UtdGFnLmpzXCI6MzMsXCJ4LWlzLWFycmF5XCI6MjF9XSwzMzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG4ndXNlIHN0cmljdCc7XG5cbnZhciBzcGxpdCA9IHJlcXVpcmUoJ2Jyb3dzZXItc3BsaXQnKTtcblxudmFyIGNsYXNzSWRTcGxpdCA9IC8oW1xcLiNdP1thLXpBLVowLTlcXHUwMDdGLVxcdUZGRkZfOi1dKykvO1xudmFyIG5vdENsYXNzSWQgPSAvXlxcLnwjLztcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZVRhZztcblxuZnVuY3Rpb24gcGFyc2VUYWcodGFnLCBwcm9wcykge1xuICAgIGlmICghdGFnKSB7XG4gICAgICAgIHJldHVybiAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgbm9JZCA9ICEocHJvcHMuaGFzT3duUHJvcGVydHkoJ2lkJykpO1xuXG4gICAgdmFyIHRhZ1BhcnRzID0gc3BsaXQodGFnLCBjbGFzc0lkU3BsaXQpO1xuICAgIHZhciB0YWdOYW1lID0gbnVsbDtcblxuICAgIGlmIChub3RDbGFzc0lkLnRlc3QodGFnUGFydHNbMV0pKSB7XG4gICAgICAgIHRhZ05hbWUgPSAnRElWJztcbiAgICB9XG5cbiAgICB2YXIgY2xhc3NlcywgcGFydCwgdHlwZSwgaTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCB0YWdQYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwYXJ0ID0gdGFnUGFydHNbaV07XG5cbiAgICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUgPSBwYXJ0LmNoYXJBdCgwKTtcblxuICAgICAgICBpZiAoIXRhZ05hbWUpIHtcbiAgICAgICAgICAgIHRhZ05hbWUgPSBwYXJ0O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICcuJykge1xuICAgICAgICAgICAgY2xhc3NlcyA9IGNsYXNzZXMgfHwgW107XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocGFydC5zdWJzdHJpbmcoMSwgcGFydC5sZW5ndGgpKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnIycgJiYgbm9JZCkge1xuICAgICAgICAgICAgcHJvcHMuaWQgPSBwYXJ0LnN1YnN0cmluZygxLCBwYXJ0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2xhc3Nlcykge1xuICAgICAgICBpZiAocHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBjbGFzc2VzLnB1c2gocHJvcHMuY2xhc3NOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3BzLmNsYXNzTmFtZSA9IGNsYXNzZXMuam9pbignICcpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9wcy5uYW1lc3BhY2UgPyB0YWdOYW1lIDogdGFnTmFtZS50b1VwcGVyQ2FzZSgpO1xufVxuXG59LHtcImJyb3dzZXItc3BsaXRcIjozfV0sMzQ6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgREVGQVVMVF9OQU1FU1BBQ0UgPSBudWxsO1xudmFyIEVWX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAxL3htbC1ldmVudHMnO1xudmFyIFhMSU5LX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcbnZhciBYTUxfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSc7XG5cbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWR1RpbnkxMi9hdHRyaWJ1dGVUYWJsZS5odG1sXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvYXR0aW5kZXguaHRtbFxudmFyIFNWR19QUk9QRVJUSUVTID0ge1xuICAgICdhYm91dCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhY2NlbnQtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FjY3VtdWxhdGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWRkaXRpdmUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYWxpZ25tZW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FscGhhYmV0aWMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYW1wbGl0dWRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FyYWJpYy1mb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2FzY2VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdhdHRyaWJ1dGVOYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2F0dHJpYnV0ZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYXppbXV0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYW5kd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYmFzZUZyZXF1ZW5jeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlUHJvZmlsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYXNlbGluZS1zaGlmdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdiYm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JlZ2luJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2JpYXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnYnknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FsY01vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2FwLWhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGFzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NsaXAtcGF0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjbGlwLXJ1bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY2xpcFBhdGhVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1pbnRlcnBvbGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb2xvci1wcm9maWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbG9yLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdjb250ZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTY3JpcHRUeXBlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2NvbnRlbnRTdHlsZVR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnY3Vyc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2N5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGF0YXR5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGVmYXVsdEFjdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkZXNjZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RpZmZ1c2VDb25zdGFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXJlY3Rpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZGlzcGxheSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkaXZpc29yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2RvbWluYW50LWJhc2VsaW5lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2R1cic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdkeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGdlTW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlZGl0YWJsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdlbGV2YXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5hYmxlLWJhY2tncm91bmQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2V2OmV2ZW50JzogRVZfTkFNRVNQQUNFLFxuICAgICdldmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsbC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbGwtcnVsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmaWx0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZmlsdGVyUmVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZpbHRlclVuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLWNvbG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2Zsb29kLW9wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNIaWdobGlnaHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZm9jdXNhYmxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtZmFtaWx5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc2l6ZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXNpemUtYWRqdXN0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtc3RyZXRjaCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXN0eWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ZvbnQtdmFyaWFudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb250LXdlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmb3JtYXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZnJvbSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdmeSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnMic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdnbHlwaC1uYW1lJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ2x5cGhSZWYnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRUcmFuc2Zvcm0nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnZ3JhZGllbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdoYW5kbGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LWFkdi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi14JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2hvcml6LW9yaWdpbi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2lkZW9ncmFwaGljJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2ltYWdlLXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdpbjInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW5pdGlhbFZpc2liaWxpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnaW50ZXJjZXB0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2snOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnazQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmVsTWF0cml4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2tlcm5lbFVuaXRMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2VybmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlQb2ludHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAna2V5U3BsaW5lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdrZXlUaW1lcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsYW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ2xlbmd0aEFkanVzdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsZXR0ZXItc3BhY2luZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaWdodGluZy1jb2xvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsaW1pdGluZ0NvbmVBbmdsZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdsb2NhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXItZW5kJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlci1taWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFya2VyLXN0YXJ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hcmtlckhlaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXJrZXJXaWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXNrJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hc2tDb250ZW50VW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWFza1VuaXRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtYXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWEnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFDaGFyYWN0ZXJFbmNvZGluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZWRpYUNvbnRlbnRFbmNvZGluZ3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWVkaWFTaXplJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21lZGlhVGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdtZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbWluJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ21vZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmFtZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtZG93bi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1kb3duLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1sZWZ0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1uZXh0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1wcmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ25hdi1yaWdodCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICduYXYtdXAnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLWxlZnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnbmF2LXVwLXJpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ251bU9jdGF2ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2JzZXJ2ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29wYWNpdHknOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3BlcmF0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JkZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnb3JpZW50JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWVudGF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ29yaWdpbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVyZmxvdyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdvdmVybGF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXBvc2l0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ292ZXJsaW5lLXRoaWNrbmVzcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYW5vc2UtMSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXRoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdGhMZW5ndGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncGF0dGVybkNvbnRlbnRVbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwYXR0ZXJuVHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BhdHRlcm5Vbml0cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwaGFzZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwbGF5YmFja09yZGVyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50ZXItZXZlbnRzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwb2ludHNBdFgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncG9pbnRzQXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3BvaW50c0F0Wic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdwcmVzZXJ2ZUFscGhhJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ByZXNlcnZlQXNwZWN0UmF0aW8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJpbWl0aXZlVW5pdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncHJvcGFnYXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Byb3BlcnR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmFkaXVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlZlgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVmWSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZWwnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVuZGVyaW5nLWludGVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXRDb3VudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXBlYXREdXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRFeHRlbnNpb25zJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JlcXVpcmVkRmVhdHVyZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVxdWlyZWRGb250cyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXF1aXJlZEZvcm1hdHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzb3VyY2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmVzdGFydCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdyZXN1bHQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncmV2JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3JvbGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAncm90YXRlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3J5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NlZWQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc2hhcGUtcmVuZGVyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3Nsb3BlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NuYXBzaG90VGltZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3NwZWN1bGFyQ29uc3RhbnQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3BlY3VsYXJFeHBvbmVudCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzcHJlYWRNZXRob2QnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RhcnRPZmZzZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RkRGV2aWF0aW9uJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW1oJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0ZW12JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0aXRjaFRpbGVzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0b3AtY29sb3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RvcC1vcGFjaXR5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cmlrZXRocm91Z2gtcG9zaXRpb24nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaWtldGhyb3VnaC10aGlja25lc3MnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3RyaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtZGFzaGFycmF5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1kYXNob2Zmc2V0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lY2FwJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N0cm9rZS1saW5lam9pbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2UtbWl0ZXJsaW1pdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utb3BhY2l0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzdHJva2Utd2lkdGgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3VyZmFjZVNjYWxlJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNCZWhhdmlvcic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jQmVoYXZpb3JEZWZhdWx0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3N5bmNNYXN0ZXInOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnc3luY1RvbGVyYW5jZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeW5jVG9sZXJhbmNlRGVmYXVsdCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICdzeXN0ZW1MYW5ndWFnZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YWJsZVZhbHVlcyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGFyZ2V0WCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0YXJnZXRZJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtYW5jaG9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RleHQtZGVjb3JhdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0LXJlbmRlcmluZyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd0ZXh0TGVuZ3RoJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RpbWVsaW5lQmVnaW4nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndGl0bGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndG8nOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHJhbnNmb3JtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3RyYW5zZm9ybUJlaGF2aW9yJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3R5cGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndHlwZW9mJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3UyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuZGVybGluZS1wb3NpdGlvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd1bmRlcmxpbmUtdGhpY2tuZXNzJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pY29kZS1iaWRpJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3VuaWNvZGUtcmFuZ2UnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndW5pdHMtcGVyLWVtJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3YtYWxwaGFiZXRpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LWhhbmdpbmcnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndi1pZGVvZ3JhcGhpYyc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2LW1hdGhlbWF0aWNhbCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2YWx1ZXMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVyc2lvbic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2ZXJ0LWFkdi15JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZlcnQtb3JpZ2luLXgnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmVydC1vcmlnaW4teSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd2aWV3Qm94JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3ZpZXdUYXJnZXQnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAndmlzaWJpbGl0eSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aCc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd3aWR0aHMnOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAnd29yZC1zcGFjaW5nJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3dyaXRpbmctbW9kZSc6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd4JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gtaGVpZ2h0JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3gyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3hDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneGxpbms6YWN0dWF0ZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6YXJjcm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6aHJlZic6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6cm9sZSc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6c2hvdyc6IFhMSU5LX05BTUVTUEFDRSxcbiAgICAneGxpbms6dGl0bGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3hsaW5rOnR5cGUnOiBYTElOS19OQU1FU1BBQ0UsXG4gICAgJ3htbDpiYXNlJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmlkJzogWE1MX05BTUVTUEFDRSxcbiAgICAneG1sOmxhbmcnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd4bWw6c3BhY2UnOiBYTUxfTkFNRVNQQUNFLFxuICAgICd5JzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kxJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3kyJzogREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgJ3lDaGFubmVsU2VsZWN0b3InOiBERUZBVUxUX05BTUVTUEFDRSxcbiAgICAneic6IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICd6b29tQW5kUGFuJzogREVGQVVMVF9OQU1FU1BBQ0Vcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gU1ZHQXR0cmlidXRlTmFtZXNwYWNlO1xuXG5mdW5jdGlvbiBTVkdBdHRyaWJ1dGVOYW1lc3BhY2UodmFsdWUpIHtcbiAgaWYgKFNWR19QUk9QRVJUSUVTLmhhc093blByb3BlcnR5KHZhbHVlKSkge1xuICAgIHJldHVybiBTVkdfUFJPUEVSVElFU1t2YWx1ZV07XG4gIH1cbn1cblxufSx7fV0sMzU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ3gtaXMtYXJyYXknKTtcblxudmFyIGggPSByZXF1aXJlKCcuL2luZGV4LmpzJyk7XG5cblxudmFyIFNWR0F0dHJpYnV0ZU5hbWVzcGFjZSA9IHJlcXVpcmUoJy4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2UnKTtcbnZhciBhdHRyaWJ1dGVIb29rID0gcmVxdWlyZSgnLi9ob29rcy9hdHRyaWJ1dGUtaG9vaycpO1xuXG52YXIgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5cbm1vZHVsZS5leHBvcnRzID0gc3ZnO1xuXG5mdW5jdGlvbiBzdmcodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4pIHtcbiAgICBpZiAoIWNoaWxkcmVuICYmIGlzQ2hpbGRyZW4ocHJvcGVydGllcykpIHtcbiAgICAgICAgY2hpbGRyZW4gPSBwcm9wZXJ0aWVzO1xuICAgICAgICBwcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwge307XG5cbiAgICAvLyBzZXQgbmFtZXNwYWNlIGZvciBzdmdcbiAgICBwcm9wZXJ0aWVzLm5hbWVzcGFjZSA9IFNWR19OQU1FU1BBQ0U7XG5cbiAgICB2YXIgYXR0cmlidXRlcyA9IHByb3BlcnRpZXMuYXR0cmlidXRlcyB8fCAocHJvcGVydGllcy5hdHRyaWJ1dGVzID0ge30pO1xuXG4gICAgZm9yICh2YXIga2V5IGluIHByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5hbWVzcGFjZSA9IFNWR0F0dHJpYnV0ZU5hbWVzcGFjZShrZXkpO1xuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgPT09IHVuZGVmaW5lZCkgeyAvLyBub3QgYSBzdmcgYXR0cmlidXRlXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BlcnRpZXNba2V5XTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlICE9PSAnYm9vbGVhbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lc3BhY2UgIT09IG51bGwpIHsgLy8gbmFtZXNwYWNlZCBhdHRyaWJ1dGVcbiAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IGF0dHJpYnV0ZUhvb2sobmFtZXNwYWNlLCB2YWx1ZSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF0dHJpYnV0ZXNba2V5XSA9IHZhbHVlXG4gICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHJldHVybiBoKHRhZ05hbWUsIHByb3BlcnRpZXMsIGNoaWxkcmVuKTtcbn1cblxuZnVuY3Rpb24gaXNDaGlsZHJlbih4KSB7XG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyB8fCBpc0FycmF5KHgpO1xufVxuXG59LHtcIi4vaG9va3MvYXR0cmlidXRlLWhvb2tcIjoyOSxcIi4vaW5kZXguanNcIjozMixcIi4vc3ZnLWF0dHJpYnV0ZS1uYW1lc3BhY2VcIjozNCxcIngtaXMtYXJyYXlcIjoyMX1dLDM2OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4vaXMtdm5vZGVcIilcbnZhciBpc1ZUZXh0ID0gcmVxdWlyZShcIi4vaXMtdnRleHRcIilcbnZhciBpc1dpZGdldCA9IHJlcXVpcmUoXCIuL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi9pcy10aHVua1wiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhbmRsZVRodW5rXG5cbmZ1bmN0aW9uIGhhbmRsZVRodW5rKGEsIGIpIHtcbiAgICB2YXIgcmVuZGVyZWRBID0gYVxuICAgIHZhciByZW5kZXJlZEIgPSBiXG5cbiAgICBpZiAoaXNUaHVuayhiKSkge1xuICAgICAgICByZW5kZXJlZEIgPSByZW5kZXJUaHVuayhiLCBhKVxuICAgIH1cblxuICAgIGlmIChpc1RodW5rKGEpKSB7XG4gICAgICAgIHJlbmRlcmVkQSA9IHJlbmRlclRodW5rKGEsIG51bGwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgYTogcmVuZGVyZWRBLFxuICAgICAgICBiOiByZW5kZXJlZEJcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlclRodW5rKHRodW5rLCBwcmV2aW91cykge1xuICAgIHZhciByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGVcblxuICAgIGlmICghcmVuZGVyZWRUaHVuaykge1xuICAgICAgICByZW5kZXJlZFRodW5rID0gdGh1bmsudm5vZGUgPSB0aHVuay5yZW5kZXIocHJldmlvdXMpXG4gICAgfVxuXG4gICAgaWYgKCEoaXNWTm9kZShyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNWVGV4dChyZW5kZXJlZFRodW5rKSB8fFxuICAgICAgICAgICAgaXNXaWRnZXQocmVuZGVyZWRUaHVuaykpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInRodW5rIGRpZCBub3QgcmV0dXJuIGEgdmFsaWQgbm9kZVwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRUaHVua1xufVxuXG59LHtcIi4vaXMtdGh1bmtcIjozNyxcIi4vaXMtdm5vZGVcIjozOSxcIi4vaXMtdnRleHRcIjo0MCxcIi4vaXMtd2lkZ2V0XCI6NDF9XSwzNzpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG5tb2R1bGUuZXhwb3J0cyA9IGlzVGh1bmtcclxuXHJcbmZ1bmN0aW9uIGlzVGh1bmsodCkge1xyXG4gICAgcmV0dXJuIHQgJiYgdC50eXBlID09PSBcIlRodW5rXCJcclxufVxyXG5cbn0se31dLDM4OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gaXNIb29rXG5cbmZ1bmN0aW9uIGlzSG9vayhob29rKSB7XG4gICAgcmV0dXJuIGhvb2sgJiZcbiAgICAgICh0eXBlb2YgaG9vay5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJob29rXCIpIHx8XG4gICAgICAgdHlwZW9mIGhvb2sudW5ob29rID09PSBcImZ1bmN0aW9uXCIgJiYgIWhvb2suaGFzT3duUHJvcGVydHkoXCJ1bmhvb2tcIikpXG59XG5cbn0se31dLDM5OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciB2ZXJzaW9uID0gcmVxdWlyZShcIi4vdmVyc2lvblwiKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVmlydHVhbE5vZGVcblxuZnVuY3Rpb24gaXNWaXJ0dWFsTm9kZSh4KSB7XG4gICAgcmV0dXJuIHggJiYgeC50eXBlID09PSBcIlZpcnR1YWxOb2RlXCIgJiYgeC52ZXJzaW9uID09PSB2ZXJzaW9uXG59XG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0MDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxubW9kdWxlLmV4cG9ydHMgPSBpc1ZpcnR1YWxUZXh0XG5cbmZ1bmN0aW9uIGlzVmlydHVhbFRleHQoeCkge1xuICAgIHJldHVybiB4ICYmIHgudHlwZSA9PT0gXCJWaXJ0dWFsVGV4dFwiICYmIHgudmVyc2lvbiA9PT0gdmVyc2lvblxufVxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDE6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xubW9kdWxlLmV4cG9ydHMgPSBpc1dpZGdldFxuXG5mdW5jdGlvbiBpc1dpZGdldCh3KSB7XG4gICAgcmV0dXJuIHcgJiYgdy50eXBlID09PSBcIldpZGdldFwiXG59XG5cbn0se31dLDQyOltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbm1vZHVsZS5leHBvcnRzID0gXCIyXCJcblxufSx7fV0sNDM6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG52YXIgaXNWTm9kZSA9IHJlcXVpcmUoXCIuL2lzLXZub2RlXCIpXG52YXIgaXNXaWRnZXQgPSByZXF1aXJlKFwiLi9pcy13aWRnZXRcIilcbnZhciBpc1RodW5rID0gcmVxdWlyZShcIi4vaXMtdGh1bmtcIilcbnZhciBpc1ZIb29rID0gcmVxdWlyZShcIi4vaXMtdmhvb2tcIilcblxubW9kdWxlLmV4cG9ydHMgPSBWaXJ0dWFsTm9kZVxuXG52YXIgbm9Qcm9wZXJ0aWVzID0ge31cbnZhciBub0NoaWxkcmVuID0gW11cblxuZnVuY3Rpb24gVmlydHVhbE5vZGUodGFnTmFtZSwgcHJvcGVydGllcywgY2hpbGRyZW4sIGtleSwgbmFtZXNwYWNlKSB7XG4gICAgdGhpcy50YWdOYW1lID0gdGFnTmFtZVxuICAgIHRoaXMucHJvcGVydGllcyA9IHByb3BlcnRpZXMgfHwgbm9Qcm9wZXJ0aWVzXG4gICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IG5vQ2hpbGRyZW5cbiAgICB0aGlzLmtleSA9IGtleSAhPSBudWxsID8gU3RyaW5nKGtleSkgOiB1bmRlZmluZWRcbiAgICB0aGlzLm5hbWVzcGFjZSA9ICh0eXBlb2YgbmFtZXNwYWNlID09PSBcInN0cmluZ1wiKSA/IG5hbWVzcGFjZSA6IG51bGxcblxuICAgIHZhciBjb3VudCA9IChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGgpIHx8IDBcbiAgICB2YXIgZGVzY2VuZGFudHMgPSAwXG4gICAgdmFyIGhhc1dpZGdldHMgPSBmYWxzZVxuICAgIHZhciBoYXNUaHVua3MgPSBmYWxzZVxuICAgIHZhciBkZXNjZW5kYW50SG9va3MgPSBmYWxzZVxuICAgIHZhciBob29rc1xuXG4gICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcGVydGllcykge1xuICAgICAgICBpZiAocHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbcHJvcE5hbWVdXG4gICAgICAgICAgICBpZiAoaXNWSG9vayhwcm9wZXJ0eSkgJiYgcHJvcGVydHkudW5ob29rKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFob29rcykge1xuICAgICAgICAgICAgICAgICAgICBob29rcyA9IHt9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaG9va3NbcHJvcE5hbWVdID0gcHJvcGVydHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkpIHtcbiAgICAgICAgICAgIGRlc2NlbmRhbnRzICs9IGNoaWxkLmNvdW50IHx8IDBcblxuICAgICAgICAgICAgaWYgKCFoYXNXaWRnZXRzICYmIGNoaWxkLmhhc1dpZGdldHMpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhhc1RodW5rcyAmJiBjaGlsZC5oYXNUaHVua3MpIHtcbiAgICAgICAgICAgICAgICBoYXNUaHVua3MgPSB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZGVzY2VuZGFudEhvb2tzICYmIChjaGlsZC5ob29rcyB8fCBjaGlsZC5kZXNjZW5kYW50SG9va3MpKSB7XG4gICAgICAgICAgICAgICAgZGVzY2VuZGFudEhvb2tzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNXaWRnZXRzICYmIGlzV2lkZ2V0KGNoaWxkKSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZC5kZXN0cm95ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBoYXNXaWRnZXRzID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNUaHVua3MgJiYgaXNUaHVuayhjaGlsZCkpIHtcbiAgICAgICAgICAgIGhhc1RodW5rcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvdW50ID0gY291bnQgKyBkZXNjZW5kYW50c1xuICAgIHRoaXMuaGFzV2lkZ2V0cyA9IGhhc1dpZGdldHNcbiAgICB0aGlzLmhhc1RodW5rcyA9IGhhc1RodW5rc1xuICAgIHRoaXMuaG9va3MgPSBob29rc1xuICAgIHRoaXMuZGVzY2VuZGFudEhvb2tzID0gZGVzY2VuZGFudEhvb2tzXG59XG5cblZpcnR1YWxOb2RlLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbE5vZGUucHJvdG90eXBlLnR5cGUgPSBcIlZpcnR1YWxOb2RlXCJcblxufSx7XCIuL2lzLXRodW5rXCI6MzcsXCIuL2lzLXZob29rXCI6MzgsXCIuL2lzLXZub2RlXCI6MzksXCIuL2lzLXdpZGdldFwiOjQxLFwiLi92ZXJzaW9uXCI6NDJ9XSw0NDpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgdmVyc2lvbiA9IHJlcXVpcmUoXCIuL3ZlcnNpb25cIilcblxuVmlydHVhbFBhdGNoLk5PTkUgPSAwXG5WaXJ0dWFsUGF0Y2guVlRFWFQgPSAxXG5WaXJ0dWFsUGF0Y2guVk5PREUgPSAyXG5WaXJ0dWFsUGF0Y2guV0lER0VUID0gM1xuVmlydHVhbFBhdGNoLlBST1BTID0gNFxuVmlydHVhbFBhdGNoLk9SREVSID0gNVxuVmlydHVhbFBhdGNoLklOU0VSVCA9IDZcblZpcnR1YWxQYXRjaC5SRU1PVkUgPSA3XG5WaXJ0dWFsUGF0Y2guVEhVTksgPSA4XG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFBhdGNoXG5cbmZ1bmN0aW9uIFZpcnR1YWxQYXRjaCh0eXBlLCB2Tm9kZSwgcGF0Y2gpIHtcbiAgICB0aGlzLnR5cGUgPSBOdW1iZXIodHlwZSlcbiAgICB0aGlzLnZOb2RlID0gdk5vZGVcbiAgICB0aGlzLnBhdGNoID0gcGF0Y2hcbn1cblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS52ZXJzaW9uID0gdmVyc2lvblxuVmlydHVhbFBhdGNoLnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsUGF0Y2hcIlxuXG59LHtcIi4vdmVyc2lvblwiOjQyfV0sNDU6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xudmFyIHZlcnNpb24gPSByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gVmlydHVhbFRleHRcblxuZnVuY3Rpb24gVmlydHVhbFRleHQodGV4dCkge1xuICAgIHRoaXMudGV4dCA9IFN0cmluZyh0ZXh0KVxufVxuXG5WaXJ0dWFsVGV4dC5wcm90b3R5cGUudmVyc2lvbiA9IHZlcnNpb25cblZpcnR1YWxUZXh0LnByb3RvdHlwZS50eXBlID0gXCJWaXJ0dWFsVGV4dFwiXG5cbn0se1wiLi92ZXJzaW9uXCI6NDJ9XSw0NjpbZnVuY3Rpb24ocmVxdWlyZSxtb2R1bGUsZXhwb3J0cyl7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKFwiaXMtb2JqZWN0XCIpXG52YXIgaXNIb29rID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZob29rXCIpXG5cbm1vZHVsZS5leHBvcnRzID0gZGlmZlByb3BzXG5cbmZ1bmN0aW9uIGRpZmZQcm9wcyhhLCBiKSB7XG4gICAgdmFyIGRpZmZcblxuICAgIGZvciAodmFyIGFLZXkgaW4gYSkge1xuICAgICAgICBpZiAoIShhS2V5IGluIGIpKSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGFWYWx1ZSA9IGFbYUtleV1cbiAgICAgICAgdmFyIGJWYWx1ZSA9IGJbYUtleV1cblxuICAgICAgICBpZiAoYVZhbHVlID09PSBiVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoYVZhbHVlKSAmJiBpc09iamVjdChiVmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoZ2V0UHJvdG90eXBlKGJWYWx1ZSkgIT09IGdldFByb3RvdHlwZShhVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICBkaWZmW2FLZXldID0gYlZhbHVlXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzSG9vayhiVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICAgICAgIGRpZmZbYUtleV0gPSBiVmFsdWVcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIG9iamVjdERpZmYgPSBkaWZmUHJvcHMoYVZhbHVlLCBiVmFsdWUpXG4gICAgICAgICAgICAgICAgaWYgKG9iamVjdERpZmYpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmYgfHwge31cbiAgICAgICAgICAgICAgICAgICAgZGlmZlthS2V5XSA9IG9iamVjdERpZmZcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkaWZmID0gZGlmZiB8fCB7fVxuICAgICAgICAgICAgZGlmZlthS2V5XSA9IGJWYWx1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYktleSBpbiBiKSB7XG4gICAgICAgIGlmICghKGJLZXkgaW4gYSkpIHtcbiAgICAgICAgICAgIGRpZmYgPSBkaWZmIHx8IHt9XG4gICAgICAgICAgICBkaWZmW2JLZXldID0gYltiS2V5XVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZmZcbn1cblxuZnVuY3Rpb24gZ2V0UHJvdG90eXBlKHZhbHVlKSB7XG4gIGlmIChPYmplY3QuZ2V0UHJvdG90eXBlT2YpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbHVlKVxuICB9IGVsc2UgaWYgKHZhbHVlLl9fcHJvdG9fXykge1xuICAgIHJldHVybiB2YWx1ZS5fX3Byb3RvX19cbiAgfSBlbHNlIGlmICh2YWx1ZS5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVcbiAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2lzLXZob29rXCI6MzgsXCJpcy1vYmplY3RcIjoyMH1dLDQ3OltmdW5jdGlvbihyZXF1aXJlLG1vZHVsZSxleHBvcnRzKXtcbnZhciBpc0FycmF5ID0gcmVxdWlyZShcIngtaXMtYXJyYXlcIilcblxudmFyIFZQYXRjaCA9IHJlcXVpcmUoXCIuLi92bm9kZS92cGF0Y2hcIilcbnZhciBpc1ZOb2RlID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXZub2RlXCIpXG52YXIgaXNWVGV4dCA9IHJlcXVpcmUoXCIuLi92bm9kZS9pcy12dGV4dFwiKVxudmFyIGlzV2lkZ2V0ID0gcmVxdWlyZShcIi4uL3Zub2RlL2lzLXdpZGdldFwiKVxudmFyIGlzVGh1bmsgPSByZXF1aXJlKFwiLi4vdm5vZGUvaXMtdGh1bmtcIilcbnZhciBoYW5kbGVUaHVuayA9IHJlcXVpcmUoXCIuLi92bm9kZS9oYW5kbGUtdGh1bmtcIilcblxudmFyIGRpZmZQcm9wcyA9IHJlcXVpcmUoXCIuL2RpZmYtcHJvcHNcIilcblxubW9kdWxlLmV4cG9ydHMgPSBkaWZmXG5cbmZ1bmN0aW9uIGRpZmYoYSwgYikge1xuICAgIHZhciBwYXRjaCA9IHsgYTogYSB9XG4gICAgd2FsayhhLCBiLCBwYXRjaCwgMClcbiAgICByZXR1cm4gcGF0Y2hcbn1cblxuZnVuY3Rpb24gd2FsayhhLCBiLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoYSA9PT0gYikge1xuICAgICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB2YXIgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICB2YXIgYXBwbHlDbGVhciA9IGZhbHNlXG5cbiAgICBpZiAoaXNUaHVuayhhKSB8fCBpc1RodW5rKGIpKSB7XG4gICAgICAgIHRodW5rcyhhLCBiLCBwYXRjaCwgaW5kZXgpXG4gICAgfSBlbHNlIGlmIChiID09IG51bGwpIHtcblxuICAgICAgICAvLyBJZiBhIGlzIGEgd2lkZ2V0IHdlIHdpbGwgYWRkIGEgcmVtb3ZlIHBhdGNoIGZvciBpdFxuICAgICAgICAvLyBPdGhlcndpc2UgYW55IGNoaWxkIHdpZGdldHMvaG9va3MgbXVzdCBiZSBkZXN0cm95ZWQuXG4gICAgICAgIC8vIFRoaXMgcHJldmVudHMgYWRkaW5nIHR3byByZW1vdmUgcGF0Y2hlcyBmb3IgYSB3aWRnZXQuXG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICAgICAgYXBwbHkgPSBwYXRjaFtpbmRleF1cbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgYSwgYikpXG4gICAgfSBlbHNlIGlmIChpc1ZOb2RlKGIpKSB7XG4gICAgICAgIGlmIChpc1ZOb2RlKGEpKSB7XG4gICAgICAgICAgICBpZiAoYS50YWdOYW1lID09PSBiLnRhZ05hbWUgJiZcbiAgICAgICAgICAgICAgICBhLm5hbWVzcGFjZSA9PT0gYi5uYW1lc3BhY2UgJiZcbiAgICAgICAgICAgICAgICBhLmtleSA9PT0gYi5rZXkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJvcHNQYXRjaCA9IGRpZmZQcm9wcyhhLnByb3BlcnRpZXMsIGIucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICBpZiAocHJvcHNQYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFZQYXRjaChWUGF0Y2guUFJPUFMsIGEsIHByb3BzUGF0Y2gpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhcHBseSA9IGRpZmZDaGlsZHJlbihhLCBiLCBwYXRjaCwgYXBwbHksIGluZGV4KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WTk9ERSwgYSwgYikpXG4gICAgICAgICAgICAgICAgYXBwbHlDbGVhciA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goVlBhdGNoLlZOT0RFLCBhLCBiKSlcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVlRleHQoYikpIHtcbiAgICAgICAgaWYgKCFpc1ZUZXh0KGEpKSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgICAgICBhcHBseUNsZWFyID0gdHJ1ZVxuICAgICAgICB9IGVsc2UgaWYgKGEudGV4dCAhPT0gYi50ZXh0KSB7XG4gICAgICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5WVEVYVCwgYSwgYikpXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzV2lkZ2V0KGIpKSB7XG4gICAgICAgIGlmICghaXNXaWRnZXQoYSkpIHtcbiAgICAgICAgICAgIGFwcGx5Q2xlYXIgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBhcHBseSA9IGFwcGVuZFBhdGNoKGFwcGx5LCBuZXcgVlBhdGNoKFZQYXRjaC5XSURHRVQsIGEsIGIpKVxuICAgIH1cblxuICAgIGlmIChhcHBseSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBseVxuICAgIH1cblxuICAgIGlmIChhcHBseUNsZWFyKSB7XG4gICAgICAgIGNsZWFyU3RhdGUoYSwgcGF0Y2gsIGluZGV4KVxuICAgIH1cbn1cblxuZnVuY3Rpb24gZGlmZkNoaWxkcmVuKGEsIGIsIHBhdGNoLCBhcHBseSwgaW5kZXgpIHtcbiAgICB2YXIgYUNoaWxkcmVuID0gYS5jaGlsZHJlblxuICAgIHZhciBvcmRlcmVkU2V0ID0gcmVvcmRlcihhQ2hpbGRyZW4sIGIuY2hpbGRyZW4pXG4gICAgdmFyIGJDaGlsZHJlbiA9IG9yZGVyZWRTZXQuY2hpbGRyZW5cblxuICAgIHZhciBhTGVuID0gYUNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBiTGVuID0gYkNoaWxkcmVuLmxlbmd0aFxuICAgIHZhciBsZW4gPSBhTGVuID4gYkxlbiA/IGFMZW4gOiBiTGVuXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIHZhciBsZWZ0Tm9kZSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgcmlnaHROb2RlID0gYkNoaWxkcmVuW2ldXG4gICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICBpZiAoIWxlZnROb2RlKSB7XG4gICAgICAgICAgICBpZiAocmlnaHROb2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gRXhjZXNzIG5vZGVzIGluIGIgbmVlZCB0byBiZSBhZGRlZFxuICAgICAgICAgICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksXG4gICAgICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLklOU0VSVCwgbnVsbCwgcmlnaHROb2RlKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHdhbGsobGVmdE5vZGUsIHJpZ2h0Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzVk5vZGUobGVmdE5vZGUpICYmIGxlZnROb2RlLmNvdW50KSB7XG4gICAgICAgICAgICBpbmRleCArPSBsZWZ0Tm9kZS5jb3VudFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9yZGVyZWRTZXQubW92ZXMpIHtcbiAgICAgICAgLy8gUmVvcmRlciBub2RlcyBsYXN0XG4gICAgICAgIGFwcGx5ID0gYXBwZW5kUGF0Y2goYXBwbHksIG5ldyBWUGF0Y2goXG4gICAgICAgICAgICBWUGF0Y2guT1JERVIsXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgb3JkZXJlZFNldC5tb3Zlc1xuICAgICAgICApKVxuICAgIH1cblxuICAgIHJldHVybiBhcHBseVxufVxuXG5mdW5jdGlvbiBjbGVhclN0YXRlKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYSBzaW5nbGUgd2Fsaywgbm90IHR3b1xuICAgIHVuaG9vayh2Tm9kZSwgcGF0Y2gsIGluZGV4KVxuICAgIGRlc3Ryb3lXaWRnZXRzKHZOb2RlLCBwYXRjaCwgaW5kZXgpXG59XG5cbi8vIFBhdGNoIHJlY29yZHMgZm9yIGFsbCBkZXN0cm95ZWQgd2lkZ2V0cyBtdXN0IGJlIGFkZGVkIGJlY2F1c2Ugd2UgbmVlZFxuLy8gYSBET00gbm9kZSByZWZlcmVuY2UgZm9yIHRoZSBkZXN0cm95IGZ1bmN0aW9uXG5mdW5jdGlvbiBkZXN0cm95V2lkZ2V0cyh2Tm9kZSwgcGF0Y2gsIGluZGV4KSB7XG4gICAgaWYgKGlzV2lkZ2V0KHZOb2RlKSkge1xuICAgICAgICBpZiAodHlwZW9mIHZOb2RlLmRlc3Ryb3kgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgcGF0Y2hbaW5kZXhdID0gYXBwZW5kUGF0Y2goXG4gICAgICAgICAgICAgICAgcGF0Y2hbaW5kZXhdLFxuICAgICAgICAgICAgICAgIG5ldyBWUGF0Y2goVlBhdGNoLlJFTU9WRSwgdk5vZGUsIG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVk5vZGUodk5vZGUpICYmICh2Tm9kZS5oYXNXaWRnZXRzIHx8IHZOb2RlLmhhc1RodW5rcykpIHtcbiAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgdmFyIGxlbiA9IGNoaWxkcmVuLmxlbmd0aFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgaW5kZXggKz0gMVxuXG4gICAgICAgICAgICBkZXN0cm95V2lkZ2V0cyhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICBpZiAoaXNWTm9kZShjaGlsZCkgJiYgY2hpbGQuY291bnQpIHtcbiAgICAgICAgICAgICAgICBpbmRleCArPSBjaGlsZC5jb3VudFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbi8vIENyZWF0ZSBhIHN1Yi1wYXRjaCBmb3IgdGh1bmtzXG5mdW5jdGlvbiB0aHVua3MoYSwgYiwgcGF0Y2gsIGluZGV4KSB7XG4gICAgdmFyIG5vZGVzID0gaGFuZGxlVGh1bmsoYSwgYilcbiAgICB2YXIgdGh1bmtQYXRjaCA9IGRpZmYobm9kZXMuYSwgbm9kZXMuYilcbiAgICBpZiAoaGFzUGF0Y2hlcyh0aHVua1BhdGNoKSkge1xuICAgICAgICBwYXRjaFtpbmRleF0gPSBuZXcgVlBhdGNoKFZQYXRjaC5USFVOSywgbnVsbCwgdGh1bmtQYXRjaClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGhhc1BhdGNoZXMocGF0Y2gpIHtcbiAgICBmb3IgKHZhciBpbmRleCBpbiBwYXRjaCkge1xuICAgICAgICBpZiAoaW5kZXggIT09IFwiYVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbi8vIEV4ZWN1dGUgaG9va3Mgd2hlbiB0d28gbm9kZXMgYXJlIGlkZW50aWNhbFxuZnVuY3Rpb24gdW5ob29rKHZOb2RlLCBwYXRjaCwgaW5kZXgpIHtcbiAgICBpZiAoaXNWTm9kZSh2Tm9kZSkpIHtcbiAgICAgICAgaWYgKHZOb2RlLmhvb2tzKSB7XG4gICAgICAgICAgICBwYXRjaFtpbmRleF0gPSBhcHBlbmRQYXRjaChcbiAgICAgICAgICAgICAgICBwYXRjaFtpbmRleF0sXG4gICAgICAgICAgICAgICAgbmV3IFZQYXRjaChcbiAgICAgICAgICAgICAgICAgICAgVlBhdGNoLlBST1BTLFxuICAgICAgICAgICAgICAgICAgICB2Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkS2V5cyh2Tm9kZS5ob29rcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodk5vZGUuZGVzY2VuZGFudEhvb2tzIHx8IHZOb2RlLmhhc1RodW5rcykge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gdk5vZGUuY2hpbGRyZW5cbiAgICAgICAgICAgIHZhciBsZW4gPSBjaGlsZHJlbi5sZW5ndGhcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGQgPSBjaGlsZHJlbltpXVxuICAgICAgICAgICAgICAgIGluZGV4ICs9IDFcblxuICAgICAgICAgICAgICAgIHVuaG9vayhjaGlsZCwgcGF0Y2gsIGluZGV4KVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVk5vZGUoY2hpbGQpICYmIGNoaWxkLmNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IGNoaWxkLmNvdW50XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RodW5rKHZOb2RlKSkge1xuICAgICAgICB0aHVua3Modk5vZGUsIG51bGwsIHBhdGNoLCBpbmRleClcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuZGVmaW5lZEtleXMob2JqKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxufVxuXG4vLyBMaXN0IGRpZmYsIG5haXZlIGxlZnQgdG8gcmlnaHQgcmVvcmRlcmluZ1xuZnVuY3Rpb24gcmVvcmRlcihhQ2hpbGRyZW4sIGJDaGlsZHJlbikge1xuICAgIC8vIE8oTSkgdGltZSwgTyhNKSBtZW1vcnlcbiAgICB2YXIgYkNoaWxkSW5kZXggPSBrZXlJbmRleChiQ2hpbGRyZW4pXG4gICAgdmFyIGJLZXlzID0gYkNoaWxkSW5kZXgua2V5c1xuICAgIHZhciBiRnJlZSA9IGJDaGlsZEluZGV4LmZyZWVcblxuICAgIGlmIChiRnJlZS5sZW5ndGggPT09IGJDaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBiQ2hpbGRyZW4sXG4gICAgICAgICAgICBtb3ZlczogbnVsbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTyhOKSB0aW1lLCBPKE4pIG1lbW9yeVxuICAgIHZhciBhQ2hpbGRJbmRleCA9IGtleUluZGV4KGFDaGlsZHJlbilcbiAgICB2YXIgYUtleXMgPSBhQ2hpbGRJbmRleC5rZXlzXG4gICAgdmFyIGFGcmVlID0gYUNoaWxkSW5kZXguZnJlZVxuXG4gICAgaWYgKGFGcmVlLmxlbmd0aCA9PT0gYUNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2hpbGRyZW46IGJDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBPKE1BWChOLCBNKSkgbWVtb3J5XG4gICAgdmFyIG5ld0NoaWxkcmVuID0gW11cblxuICAgIHZhciBmcmVlSW5kZXggPSAwXG4gICAgdmFyIGZyZWVDb3VudCA9IGJGcmVlLmxlbmd0aFxuICAgIHZhciBkZWxldGVkSXRlbXMgPSAwXG5cbiAgICAvLyBJdGVyYXRlIHRocm91Z2ggYSBhbmQgbWF0Y2ggYSBub2RlIGluIGJcbiAgICAvLyBPKE4pIHRpbWUsXG4gICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgYUNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBhSXRlbSA9IGFDaGlsZHJlbltpXVxuICAgICAgICB2YXIgaXRlbUluZGV4XG5cbiAgICAgICAgaWYgKGFJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKGJLZXlzLmhhc093blByb3BlcnR5KGFJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBNYXRjaCB1cCB0aGUgb2xkIGtleXNcbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBiS2V5c1thSXRlbS5rZXldXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBSZW1vdmUgb2xkIGtleWVkIGl0ZW1zXG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gaSAtIGRlbGV0ZWRJdGVtcysrXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChudWxsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTWF0Y2ggdGhlIGl0ZW0gaW4gYSB3aXRoIHRoZSBuZXh0IGZyZWUgaXRlbSBpbiBiXG4gICAgICAgICAgICBpZiAoZnJlZUluZGV4IDwgZnJlZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgaXRlbUluZGV4ID0gYkZyZWVbZnJlZUluZGV4KytdXG4gICAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChiQ2hpbGRyZW5baXRlbUluZGV4XSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG5vIGZyZWUgaXRlbXMgaW4gYiB0byBtYXRjaCB3aXRoXG4gICAgICAgICAgICAgICAgLy8gdGhlIGZyZWUgaXRlbXMgaW4gYSwgc28gdGhlIGV4dHJhIGZyZWUgbm9kZXNcbiAgICAgICAgICAgICAgICAvLyBhcmUgZGVsZXRlZC5cbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggPSBpIC0gZGVsZXRlZEl0ZW1zKytcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbGFzdEZyZWVJbmRleCA9IGZyZWVJbmRleCA+PSBiRnJlZS5sZW5ndGggP1xuICAgICAgICBiQ2hpbGRyZW4ubGVuZ3RoIDpcbiAgICAgICAgYkZyZWVbZnJlZUluZGV4XVxuXG4gICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGIgYW5kIGFwcGVuZCBhbnkgbmV3IGtleXNcbiAgICAvLyBPKE0pIHRpbWVcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJDaGlsZHJlbi5sZW5ndGg7IGorKykge1xuICAgICAgICB2YXIgbmV3SXRlbSA9IGJDaGlsZHJlbltqXVxuXG4gICAgICAgIGlmIChuZXdJdGVtLmtleSkge1xuICAgICAgICAgICAgaWYgKCFhS2V5cy5oYXNPd25Qcm9wZXJ0eShuZXdJdGVtLmtleSkpIHtcbiAgICAgICAgICAgICAgICAvLyBBZGQgYW55IG5ldyBrZXllZCBpdGVtc1xuICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBhZGRpbmcgbmV3IGl0ZW1zIHRvIHRoZSBlbmQgYW5kIHRoZW4gc29ydGluZyB0aGVtXG4gICAgICAgICAgICAgICAgLy8gaW4gcGxhY2UuIEluIGZ1dHVyZSB3ZSBzaG91bGQgaW5zZXJ0IG5ldyBpdGVtcyBpbiBwbGFjZS5cbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKG5ld0l0ZW0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaiA+PSBsYXN0RnJlZUluZGV4KSB7XG4gICAgICAgICAgICAvLyBBZGQgYW55IGxlZnRvdmVyIG5vbi1rZXllZCBpdGVtc1xuICAgICAgICAgICAgbmV3Q2hpbGRyZW4ucHVzaChuZXdJdGVtKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNpbXVsYXRlID0gbmV3Q2hpbGRyZW4uc2xpY2UoKVxuICAgIHZhciBzaW11bGF0ZUluZGV4ID0gMFxuICAgIHZhciByZW1vdmVzID0gW11cbiAgICB2YXIgaW5zZXJ0cyA9IFtdXG4gICAgdmFyIHNpbXVsYXRlSXRlbVxuXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBiQ2hpbGRyZW4ubGVuZ3RoOykge1xuICAgICAgICB2YXIgd2FudGVkSXRlbSA9IGJDaGlsZHJlbltrXVxuICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtc1xuICAgICAgICB3aGlsZSAoc2ltdWxhdGVJdGVtID09PSBudWxsICYmIHNpbXVsYXRlLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgbnVsbCkpXG4gICAgICAgICAgICBzaW11bGF0ZUl0ZW0gPSBzaW11bGF0ZVtzaW11bGF0ZUluZGV4XVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgIC8vIGlmIHdlIG5lZWQgYSBrZXkgaW4gdGhpcyBwb3NpdGlvbi4uLlxuICAgICAgICAgICAgaWYgKHdhbnRlZEl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpbXVsYXRlSXRlbSAmJiBzaW11bGF0ZUl0ZW0ua2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIGFuIGluc2VydCBkb2Vzbid0IHB1dCB0aGlzIGtleSBpbiBwbGFjZSwgaXQgbmVlZHMgdG8gbW92ZVxuICAgICAgICAgICAgICAgICAgICBpZiAoYktleXNbc2ltdWxhdGVJdGVtLmtleV0gIT09IGsgKyAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRlSXRlbSA9IHNpbXVsYXRlW3NpbXVsYXRlSW5kZXhdXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcmVtb3ZlIGRpZG4ndCBwdXQgdGhlIHdhbnRlZCBpdGVtIGluIHBsYWNlLCB3ZSBuZWVkIHRvIGluc2VydCBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaW11bGF0ZUl0ZW0gfHwgc2ltdWxhdGVJdGVtLmtleSAhPT0gd2FudGVkSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGl0ZW1zIGFyZSBtYXRjaGluZywgc28gc2tpcCBhaGVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGVJbmRleCsrXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRzLnB1c2goe2tleTogd2FudGVkSXRlbS5rZXksIHRvOiBrfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5zZXJ0cy5wdXNoKHtrZXk6IHdhbnRlZEl0ZW0ua2V5LCB0bzoga30pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGsrK1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gYSBrZXkgaW4gc2ltdWxhdGUgaGFzIG5vIG1hdGNoaW5nIHdhbnRlZCBrZXksIHJlbW92ZSBpdFxuICAgICAgICAgICAgZWxzZSBpZiAoc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVzLnB1c2gocmVtb3ZlKHNpbXVsYXRlLCBzaW11bGF0ZUluZGV4LCBzaW11bGF0ZUl0ZW0ua2V5KSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNpbXVsYXRlSW5kZXgrK1xuICAgICAgICAgICAgaysrXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyByZW1vdmUgYWxsIHRoZSByZW1haW5pbmcgbm9kZXMgZnJvbSBzaW11bGF0ZVxuICAgIHdoaWxlKHNpbXVsYXRlSW5kZXggPCBzaW11bGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgc2ltdWxhdGVJdGVtID0gc2ltdWxhdGVbc2ltdWxhdGVJbmRleF1cbiAgICAgICAgcmVtb3Zlcy5wdXNoKHJlbW92ZShzaW11bGF0ZSwgc2ltdWxhdGVJbmRleCwgc2ltdWxhdGVJdGVtICYmIHNpbXVsYXRlSXRlbS5rZXkpKVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBvbmx5IG1vdmVzIHdlIGhhdmUgYXJlIGRlbGV0ZXMgdGhlbiB3ZSBjYW4ganVzdFxuICAgIC8vIGxldCB0aGUgZGVsZXRlIHBhdGNoIHJlbW92ZSB0aGVzZSBpdGVtcy5cbiAgICBpZiAocmVtb3Zlcy5sZW5ndGggPT09IGRlbGV0ZWRJdGVtcyAmJiAhaW5zZXJ0cy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBuZXdDaGlsZHJlbixcbiAgICAgICAgICAgIG1vdmVzOiBudWxsXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBjaGlsZHJlbjogbmV3Q2hpbGRyZW4sXG4gICAgICAgIG1vdmVzOiB7XG4gICAgICAgICAgICByZW1vdmVzOiByZW1vdmVzLFxuICAgICAgICAgICAgaW5zZXJ0czogaW5zZXJ0c1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmUoYXJyLCBpbmRleCwga2V5KSB7XG4gICAgYXJyLnNwbGljZShpbmRleCwgMSlcblxuICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IGluZGV4LFxuICAgICAgICBrZXk6IGtleVxuICAgIH1cbn1cblxuZnVuY3Rpb24ga2V5SW5kZXgoY2hpbGRyZW4pIHtcbiAgICB2YXIga2V5cyA9IHt9XG4gICAgdmFyIGZyZWUgPSBbXVxuICAgIHZhciBsZW5ndGggPSBjaGlsZHJlbi5sZW5ndGhcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV1cblxuICAgICAgICBpZiAoY2hpbGQua2V5KSB7XG4gICAgICAgICAgICBrZXlzW2NoaWxkLmtleV0gPSBpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmcmVlLnB1c2goaSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGtleXM6IGtleXMsICAgICAvLyBBIGhhc2ggb2Yga2V5IG5hbWUgdG8gaW5kZXhcbiAgICAgICAgZnJlZTogZnJlZSAgICAgIC8vIEFuIGFycmF5IG9mIHVua2V5ZWQgaXRlbSBpbmRpY2VzXG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcHBlbmRQYXRjaChhcHBseSwgcGF0Y2gpIHtcbiAgICBpZiAoYXBwbHkpIHtcbiAgICAgICAgaWYgKGlzQXJyYXkoYXBwbHkpKSB7XG4gICAgICAgICAgICBhcHBseS5wdXNoKHBhdGNoKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYXBwbHkgPSBbYXBwbHksIHBhdGNoXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFwcGx5XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhdGNoXG4gICAgfVxufVxuXG59LHtcIi4uL3Zub2RlL2hhbmRsZS10aHVua1wiOjM2LFwiLi4vdm5vZGUvaXMtdGh1bmtcIjozNyxcIi4uL3Zub2RlL2lzLXZub2RlXCI6MzksXCIuLi92bm9kZS9pcy12dGV4dFwiOjQwLFwiLi4vdm5vZGUvaXMtd2lkZ2V0XCI6NDEsXCIuLi92bm9kZS92cGF0Y2hcIjo0NCxcIi4vZGlmZi1wcm9wc1wiOjQ2LFwieC1pcy1hcnJheVwiOjIxfV0sNDg6W2Z1bmN0aW9uKHJlcXVpcmUsbW9kdWxlLGV4cG9ydHMpe1xuKGZ1bmN0aW9uIChnbG9iYWwpe1xudmFyIHZkb20gPSB7XG4gIFZOb2RlOiByZXF1aXJlKCd2aXJ0dWFsLWRvbS92bm9kZS92bm9kZScpLFxuICBWVGV4dDogcmVxdWlyZSgndmlydHVhbC1kb20vdm5vZGUvdnRleHQnKSxcbiAgZGlmZjogcmVxdWlyZSgndmlydHVhbC1kb20vZGlmZicpLFxuICBwYXRjaDogcmVxdWlyZSgndmlydHVhbC1kb20vcGF0Y2gnKSxcbiAgY3JlYXRlRWxlbWVudDogcmVxdWlyZSgndmlydHVhbC1kb20vY3JlYXRlLWVsZW1lbnQnKSxcbiAgc3ZnOiByZXF1aXJlKFwidmlydHVhbC1kb20vdmlydHVhbC1oeXBlcnNjcmlwdC9zdmdcIiksXG59O1xuXG5nbG9iYWwuVmlydHVhbERvbSA9IHZkb207XG5tb2R1bGUuZXhwb3J0cyA9IHZkb207XG5cbn0pLmNhbGwodGhpcyx0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHt9KVxufSx7XCJ2aXJ0dWFsLWRvbS9jcmVhdGUtZWxlbWVudFwiOjEsXCJ2aXJ0dWFsLWRvbS9kaWZmXCI6MixcInZpcnR1YWwtZG9tL3BhdGNoXCI6MjIsXCJ2aXJ0dWFsLWRvbS92aXJ0dWFsLWh5cGVyc2NyaXB0L3N2Z1wiOjM1LFwidmlydHVhbC1kb20vdm5vZGUvdm5vZGVcIjo0MyxcInZpcnR1YWwtZG9tL3Zub2RlL3Z0ZXh0XCI6NDV9XX0se30sWzQ4XSkoNDgpXG59KTtcbiIsIi8vIFVzZWQgYnkgd29ya2Fyb3VuZCBmb3IgaW5wdXQgZWxlbWVudCB2YWx1ZSBmaWVsZFxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9ibG9iLzk0N2VjZjkyYjY3ZDI1YmI2OTNhMGY2MjVmYThlOTBjMDk5ODg3ZDUvdmlydHVhbC1oeXBlcnNjcmlwdC9ob29rcy9zb2Z0LXNldC1ob29rLmpzXG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU29mdFNldEhvb2spKSB7XG4gICAgICAgIHJldHVybiBuZXcgU29mdFNldEhvb2sodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbn07XG5cbmpvb19nbG9iYWxfb2JqZWN0LlNvZnRTZXRIb29rLnByb3RvdHlwZS5ob29rID0gZnVuY3Rpb24gKG5vZGUsIHByb3BlcnR5TmFtZSkge1xuICAgIGlmIChub2RlW3Byb3BlcnR5TmFtZV0gIT09IHRoaXMudmFsdWUpIHtcbiAgICAgICAgbm9kZVtwcm9wZXJ0eU5hbWVdID0gdGhpcy52YWx1ZTtcbiAgICB9XG59O1xuXG5cbnZhciBHZW5lcmljSG9vayA9IGZ1bmN0aW9uIChpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSkge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHZW5lcmljSG9vaykpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmljSG9vayhpbml0LCB1cGRhdGUsIGRlc3Ryb3ksIGlkLCBleHRyYSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0ID0gaW5pdDtcbiAgICB0aGlzLnVwZGF0ZSA9IHVwZGF0ZTtcbiAgICB0aGlzLmRlc3Ryb3kgPSBkZXN0cm95O1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLmV4dHJhID0gZXh0cmE7XG59O1xuXG52YXIgaG9va19zdGF0ZV9rZXkgPSBcInZkb21faG9va19zdGF0ZV9rZXlcIjtcblxuaWYgKHRoaXMuU3ltYm9sKSB7XG4gICAgaG9va19zdGF0ZV9rZXkgPSBTeW1ib2woaG9va19zdGF0ZV9rZXkpO1xufVxuXG5HZW5lcmljSG9vay53cml0ZV9zdGF0ZSA9IGZ1bmN0aW9uIChub2RlLCBwcm9wTmFtZSwgc3RhdGUpIHtcbiAgICBpZiAoIW5vZGVbaG9va19zdGF0ZV9rZXldKSB7XG4gICAgICAgIG5vZGVbaG9va19zdGF0ZV9rZXldID0ge307XG4gICAgfVxuICAgIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXSA9IHN0YXRlO1xufVxuXG5HZW5lcmljSG9vay5yZWFkX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgcmV0dXJuIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2sucmVtb3ZlX3N0YXRlID0gZnVuY3Rpb24gKG5vZGUsIHByb3BOYW1lKSB7XG4gICAgZGVsZXRlIG5vZGVbaG9va19zdGF0ZV9rZXldW3Byb3BOYW1lXTtcbn1cblxuR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbiA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICAgIHJldHVybiBmcm9tIGluc3RhbmNlb2YgdGhpcyAmJiB0byBpbnN0YW5jZW9mIHRoaXMgJiYgZnJvbS5pZCA9PT0gdG8uaWQgJiYgdG8udXBkYXRlO1xufTtcblxuR2VuZXJpY0hvb2sucHJvdG90eXBlLmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIHByZXYpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbihwcmV2LCB0aGlzKSkge1xuICAgICAgICB2YXIgc3RhdGUgPSBHZW5lcmljSG9vay5yZWFkX3N0YXRlKG5vZGUsIHByb3BOYW1lKTtcbiAgICAgICAgc3RhdGUgPSB0aGlzLnVwZGF0ZShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLndyaXRlX3N0YXRlKG5vZGUsIHByb3BOYW1lLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gdGhpcy5pbml0KG5vZGUpO1xuICAgICAgICBHZW5lcmljSG9vay53cml0ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSwgc3RhdGUpO1xuICAgIH1cbn07XG5cbkdlbmVyaWNIb29rLnByb3RvdHlwZS51bmhvb2sgPSBmdW5jdGlvbiAobm9kZSwgcHJvcE5hbWUsIG5leHQpIHtcbiAgICBpZiAoR2VuZXJpY0hvb2suY2FuVHJhbnNpdGlvbih0aGlzLCBuZXh0KSkge1xuICAgICAgICAvLyBEbyBub3RoaW5nLCB0aGUgaW1wZW5kaW5nIFtob29rXSB3aWxsIGhhbmRsZSB0aGUgY2FsbCB0byB1cGRhdGUuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHN0YXRlID0gR2VuZXJpY0hvb2sucmVhZF9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveShzdGF0ZSwgbm9kZSk7XG4gICAgICAgIEdlbmVyaWNIb29rLnJlbW92ZV9zdGF0ZShub2RlLCBwcm9wTmFtZSk7XG4gICAgfVxufTtcblxuam9vX2dsb2JhbF9vYmplY3QuR2VuZXJpY0hvb2sgPSBHZW5lcmljSG9vaztcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mZnNldFxudmFyIGNhbWxfaW50NjRfb2Zmc2V0ID0gTWF0aC5wb3coMiwgLTI0KTtcblxuLy9Qcm92aWRlczogTWxJbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIE1sSW50NjQgKGxvLG1pLGhpKSB7XG4gIHRoaXMubG8gPSBsbyAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IGhpICYgMHhmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9qXCJcbk1sSW50NjQucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvLHRoaXMubWksdGhpcy5oaSk7XG59XG5cbk1sSW50NjQucHJvdG90eXBlLnVjb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMuaGkgPCB4LmhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+IHgubG8pIHJldHVybiAxO1xuICBpZiAodGhpcy5sbyA8IHgubG8pIHJldHVybiAtMTtcbiAgcmV0dXJuIDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGhpID0gdGhpcy5oaSA8PCAxNjtcbiAgdmFyIHhoaSA9IHguaGkgPDwgMTY7XG4gIGlmIChoaSA+IHhoaSkgcmV0dXJuIDE7XG4gIGlmIChoaSA8IHhoaSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5taSA+IHgubWkpIHJldHVybiAxO1xuICBpZiAodGhpcy5taSA8IHgubWkpIHJldHVybiAtMTtcbiAgaWYgKHRoaXMubG8gPiB4LmxvKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMubG8gPCB4LmxvKSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbG8gPSAtIHRoaXMubG87XG4gIHZhciBtaSA9IC0gdGhpcy5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IC0gdGhpcy5oaSArIChtaSA+PiAyNCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChsbywgbWksIGhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBsbyA9IHRoaXMubG8gKyB4LmxvO1xuICB2YXIgbWkgPSB0aGlzLm1pICsgeC5taSArIChsbyA+PiAyNCk7XG4gIHZhciBoaSA9IHRoaXMuaGkgKyB4LmhpICsgKG1pID4+IDI0KTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KGxvLCBtaSwgaGkpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gKHgpIHtcbiAgdmFyIGxvID0gdGhpcy5sbyAtIHgubG87XG4gIHZhciBtaSA9IHRoaXMubWkgLSB4Lm1pICsgKGxvID4+IDI0KTtcbiAgdmFyIGhpID0gdGhpcy5oaSAtIHguaGkgKyAobWkgPj4gMjQpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiAoeCkge1xuICB2YXIgbG8gPSB0aGlzLmxvICogeC5sbztcbiAgdmFyIG1pID0gKChsbyAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5taSAqIHgubG8gKyB0aGlzLmxvICogeC5taTtcbiAgdmFyIGhpID0gKChtaSAqIGNhbWxfaW50NjRfb2Zmc2V0KSB8IDApICsgdGhpcy5oaSAqIHgubG8gKyB0aGlzLm1pICogeC5taSArIHRoaXMubG8gKiB4LmhpO1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAodGhpcy5sb3x0aGlzLm1pfHRoaXMuaGkpID09IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICh0aGlzLmhpIDw8IDE2KSA8IDA7XG59XG5NbEludDY0LnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQodGhpcy5sbyAmIHgubG8sIHRoaXMubWkgJiB4Lm1pLCB0aGlzLmhpICYgeC5oaSk7XG59XG5NbEludDY0LnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvfHgubG8sIHRoaXMubWl8eC5taSwgdGhpcy5oaXx4LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uICh4KSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvXngubG8sIHRoaXMubWleeC5taSwgdGhpcy5oaV54LmhpKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X2xlZnQgPSBmdW5jdGlvbiAocykge1xuICBzID0gcyAmIDYzO1xuICBpZiAocyA9PSAwKSByZXR1cm4gdGhpcztcbiAgaWYgKHMgPCAyNCkge1xuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAodGhpcy5sbyA8PCBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgcykgfCAodGhpcy5sbyA+PiAoMjQgLSBzKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5oaSA8PCBzKSB8ICh0aGlzLm1pID4+ICgyNCAtIHMpKSk7XG4gIH1cbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvIDw8IChzIC0gMjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMubWkgPDwgKHMgLSAyNCkpIHwgKHRoaXMubG8gPj4gKDQ4IC0gcykpKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0KDAsIDAsIHRoaXMubG8gPDwgKHMgLSA0OCkpXG59XG5NbEludDY0LnByb3RvdHlwZS5zaGlmdF9yaWdodF91bnNpZ25lZCA9IGZ1bmN0aW9uIChzKSB7XG4gIHMgPSBzICYgNjM7XG4gIGlmIChzID09IDApIHJldHVybiB0aGlzO1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKHRoaXMuaGkgPDwgKDI0IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPj4gcykpO1xuICBpZiAocyA8IDQ4KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5taSA+PiAocyAtIDI0KSkgfCAodGhpcy5oaSA8PCAoNDggLSBzKSksXG4gICAgICAodGhpcy5oaSA+PiAocyAtIDI0KSksXG4gICAgICAwKTtcbiAgcmV0dXJuIG5ldyBNbEludDY0ICh0aGlzLmhpID4+IChzIC0gNDgpLCAwLCAwKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLnNoaWZ0X3JpZ2h0ID0gZnVuY3Rpb24gKHMpIHtcbiAgcyA9IHMgJiA2MztcbiAgaWYgKHMgPT0gMCkgcmV0dXJuIHRoaXM7XG4gIHZhciBoID0gKHRoaXMuaGkgPDwgMTYpID4+IDE2O1xuICBpZiAocyA8IDI0KVxuICAgIHJldHVybiBuZXcgTWxJbnQ2NCAoXG4gICAgICAodGhpcy5sbyA+PiBzKSB8ICh0aGlzLm1pIDw8ICgyNCAtIHMpKSxcbiAgICAgICh0aGlzLm1pID4+IHMpIHwgKGggPDwgKDI0IC0gcykpLFxuICAgICAgKCh0aGlzLmhpIDw8IDE2KSA+PiBzKSA+Pj4gMTYpO1xuICB2YXIgc2lnbiA9ICh0aGlzLmhpIDw8IDE2KSA+PiAzMTtcbiAgaWYgKHMgPCA0OClcbiAgICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgICAgKHRoaXMubWkgPj4gKHMgLSAyNCkpIHwgKHRoaXMuaGkgPDwgKDQ4IC0gcykpLFxuICAgICAgKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMjQpID4+IDE2LFxuICAgICAgc2lnbiAmIDB4ZmZmZik7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCAoKHRoaXMuaGkgPDwgMTYpID4+IChzIC0gMzIpLCBzaWduLCBzaWduKTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxzbDEgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuaGkgPSAodGhpcy5oaSA8PCAxKSB8ICh0aGlzLm1pID4+IDIzKTtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA8PCAxKSB8ICh0aGlzLmxvID4+IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5sbyA9ICh0aGlzLmxvIDw8IDEpICYgMHhmZmZmZmY7XG59XG5NbEludDY0LnByb3RvdHlwZS5sc3IxID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvID0gKCh0aGlzLmxvID4+PiAxKSB8ICh0aGlzLm1pIDw8IDIzKSkgJiAweGZmZmZmZjtcbiAgdGhpcy5taSA9ICgodGhpcy5taSA+Pj4gMSkgfCAodGhpcy5oaSA8PCAyMykpICYgMHhmZmZmZmY7XG4gIHRoaXMuaGkgPSB0aGlzLmhpID4+PiAxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUudWRpdm1vZCA9IGZ1bmN0aW9uICh4KSB7XG4gIHZhciBvZmZzZXQgPSAwO1xuICB2YXIgbW9kdWx1cyA9IHRoaXMuY29weSgpO1xuICB2YXIgZGl2aXNvciA9IHguY29weSgpO1xuICB2YXIgcXVvdGllbnQgPSBuZXcgTWxJbnQ2NCgwLDAsMCk7XG4gIHdoaWxlIChtb2R1bHVzLnVjb21wYXJlKGRpdmlzb3IpID4gMCkge1xuICAgIG9mZnNldCsrO1xuICAgIGRpdmlzb3IubHNsMSgpO1xuICB9XG4gIHdoaWxlIChvZmZzZXQgPj0gMCkge1xuICAgIG9mZnNldCAtLTtcbiAgICBxdW90aWVudC5sc2wxKCk7XG4gICAgaWYgKG1vZHVsdXMudWNvbXBhcmUoZGl2aXNvcikgPj0gMCkge1xuICAgICAgcXVvdGllbnQubG8gKys7XG4gICAgICBtb2R1bHVzID0gbW9kdWx1cy5zdWIoZGl2aXNvcik7XG4gICAgfVxuICAgIGRpdmlzb3IubHNyMSgpO1xuICB9XG4gIHJldHVybiB7IHF1b3RpZW50IDogcXVvdGllbnQsIG1vZHVsdXMgOiBtb2R1bHVzIH07XG59XG5NbEludDY0LnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiAoeSlcbntcbiAgdmFyIHggPSB0aGlzO1xuICBpZiAoeS5pc1plcm8oKSkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgdmFyIHNpZ24gPSB4LmhpIF4geS5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciBxID0geC51ZGl2bW9kKHkpLnF1b3RpZW50O1xuICBpZiAoc2lnbiAmIDB4ODAwMCkgcSA9IHEubmVnKCk7XG4gIHJldHVybiBxO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHkpXG57XG4gIHZhciB4ID0gdGhpcztcbiAgaWYgKHkuaXNaZXJvKCkpIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCk7XG4gIHZhciBzaWduID0geC5oaTtcbiAgaWYgKHguaGkgJiAweDgwMDApIHggPSB4Lm5lZygpO1xuICBpZiAoeS5oaSAmIDB4ODAwMCkgeSA9IHkubmVnKCk7XG4gIHZhciByID0geC51ZGl2bW9kKHkpLm1vZHVsdXM7XG4gIGlmIChzaWduICYgMHg4MDAwKSByID0gci5uZWcoKTtcbiAgcmV0dXJuIHI7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0ludCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMubG8gfCAodGhpcy5taSA8PCAyNCk7XG59XG5NbEludDY0LnByb3RvdHlwZS50b0Zsb2F0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gKCh0aGlzLmhpIDw8IDE2KSAqIE1hdGgucG93KDIsIDMyKSArIHRoaXMubWkgKiBNYXRoLnBvdygyLCAyNCkpICsgdGhpcy5sbztcbn1cbk1sSW50NjQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBbdGhpcy5oaSA+PiA4LFxuICAgICAgICAgIHRoaXMuaGkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgPj4gMTYsXG4gICAgICAgICAgKHRoaXMubWkgPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubWkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gPj4gMTYsXG4gICAgICAgICAgKHRoaXMubG8gPj4gOCkgJiAweGZmLFxuICAgICAgICAgIHRoaXMubG8gJiAweGZmXTtcbn1cbk1sSW50NjQucHJvdG90eXBlLmxvMzIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmxvIHwgKCh0aGlzLm1pICYgMHhmZikgPDwgMjQpO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuaGkzMiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5taSA+Pj4gOCkgJiAweGZmZmYpIHwgKHRoaXMuaGkgPDwgMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VsdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bHQoeCx5KSB7IHJldHVybiB4LnVjb21wYXJlKHkpIDwgMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY29tcGFyZSh4LHksIHRvdGFsKSB7IHJldHVybiB4LmNvbXBhcmUoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X25lZyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9uZWcgKHgpIHsgcmV0dXJuIHgubmVnKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FkZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hZGQgKHgsIHkpIHsgcmV0dXJuIHguYWRkKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zdWIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfc3ViICh4LCB5KSB7IHJldHVybiB4LnN1Yih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbXVsIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tdWwoeCx5KSB7IHJldHVybiB4Lm11bCh5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfemVybyBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9pc196ZXJvKHgpIHsgcmV0dXJuICt4LmlzWmVybygpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaXNfbmVnYXRpdmUoeCkgeyByZXR1cm4gK3guaXNOZWcoKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2FuZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9hbmQgKHgsIHkpIHsgcmV0dXJuIHguYW5kKHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb3IgKHgsIHkpIHsgcmV0dXJuIHgub3IoeSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF94b3IgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfeG9yICh4LCB5KSB7IHJldHVybiB4Lnhvcih5KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9sZWZ0ICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X2xlZnQocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkICh4LCBzKSB7IHJldHVybiB4LnNoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodCAoeCwgcykgeyByZXR1cm4geC5zaGlmdF9yaWdodChzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfZGl2IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2RpdiAoeCwgeSkgeyByZXR1cm4geC5kaXYoeSkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X21vZCBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tb2QgKHgsIHkpIHsgcmV0dXJuIHgubW9kKHkpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9vZl9pbnQzMiBjb25zdFxuLy9SZXF1aXJlczogTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9pbnQzMiAoeCkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoeCAmIDB4ZmZmZmZmLCAoeCA+PiAyNCkgJiAweGZmZmZmZiwgKHggPj4gMzEpICYgMHhmZmZmKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2ludDMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2ludDMyICh4KSB7IHJldHVybiB4LnRvSW50KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X3RvX2Zsb2F0ICh4KSB7IHJldHVybiB4LnRvRmxvYXQgKCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mZnNldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoeCkge1xuICBpZiAoeCA8IDApIHggPSBNYXRoLmNlaWwoeCk7XG4gIHJldHVybiBuZXcgTWxJbnQ2NChcbiAgICB4ICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQpICYgMHhmZmZmZmYsXG4gICAgTWF0aC5mbG9vcih4ICogY2FtbF9pbnQ2NF9vZmZzZXQgKiBjYW1sX2ludDY0X29mZnNldCkgJiAweGZmZmYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zvcm1hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfaXNfbmVnYXRpdmUsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X3RvX2ludDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9mb3JtYXQgKGZtdCwgeCkge1xuICB2YXIgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgY2FtbF9pbnQ2NF9pc19uZWdhdGl2ZSh4KSkge1xuICAgIGYuc2lnbiA9IC0xOyB4ID0gY2FtbF9pbnQ2NF9uZWcoeCk7XG4gIH1cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIHZhciB3YmFzZSA9IGNhbWxfaW50NjRfb2ZfaW50MzIoZi5iYXNlKTtcbiAgdmFyIGN2dGJsID0gXCIwMTIzNDU2Nzg5YWJjZGVmXCI7XG4gIGRvIHtcbiAgICB2YXIgcCA9IHgudWRpdm1vZCh3YmFzZSk7XG4gICAgeCA9IHAucXVvdGllbnQ7XG4gICAgYnVmZmVyID0gY3Z0YmwuY2hhckF0KGNhbWxfaW50NjRfdG9faW50MzIocC5tb2R1bHVzKSkgKyBidWZmZXI7XG4gIH0gd2hpbGUgKCEgY2FtbF9pbnQ2NF9pc196ZXJvKHgpKTtcbiAgaWYgKGYucHJlYyA+PSAwKSB7XG4gICAgZi5maWxsZXIgPSAnICc7XG4gICAgdmFyIG4gPSBmLnByZWMgLSBidWZmZXIubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgYnVmZmVyID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgYnVmZmVyO1xuICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIGJ1ZmZlcik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcGFyc2VfZGlnaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfaW50MzIsIGNhbWxfaW50NjRfdWx0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfbmVnXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgTWxJbnQ2NFxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9vZl9zdHJpbmcocykge1xuICB2YXIgciA9IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocyk7XG4gIHZhciBpID0gclswXSwgc2lnbiA9IHJbMV0sIGJhc2UgPSByWzJdO1xuICB2YXIgYmFzZTY0ID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihiYXNlKTtcbiAgdmFyIHRocmVzaG9sZCA9XG4gICAgICBuZXcgTWxJbnQ2NCgweGZmZmZmZiwgMHhmZmZmZmZmLCAweGZmZmYpLnVkaXZtb2QoYmFzZTY0KS5xdW90aWVudDtcbiAgdmFyIGMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgZm9yICg7Oykge1xuICAgIGkrKztcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgLyogRGV0ZWN0IG92ZXJmbG93IGluIG11bHRpcGxpY2F0aW9uIGJhc2UgKiByZXMgKi9cbiAgICBpZiAoY2FtbF9pbnQ2NF91bHQodGhyZXNob2xkLCByZXMpKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgICBkID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihkKTtcbiAgICByZXMgPSBjYW1sX2ludDY0X2FkZChjYW1sX2ludDY0X211bChiYXNlNjQsIHJlcyksIGQpO1xuICAgIC8qIERldGVjdCBvdmVyZmxvdyBpbiBhZGRpdGlvbiAoYmFzZSAqIHJlcykgKyBkICovXG4gICAgaWYgKGNhbWxfaW50NjRfdWx0KHJlcywgZCkpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChiYXNlID09IDEwICYmIGNhbWxfaW50NjRfdWx0KG5ldyBNbEludDY0KDAsIDAsIDB4ODAwMCksIHJlcykpXG4gICAgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIGlmIChzaWduIDwgMCkgcmVzID0gY2FtbF9pbnQ2NF9uZWcocmVzKTtcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKGxvLCBtaSwgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQobG8sIG1pLCBoaSlcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEludDY0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaShsbywgaGkpe1xuICByZXR1cm4gbmV3IE1sSW50NjQgKFxuICAgIGxvICYgMHhmZmZmZmYsXG4gICAgKChsbyA+Pj4gMjQpICYgMHhmZikgfCAoKGhpICYgMHhmZmZmKSA8PCA4KSxcbiAgICAoaGkgPj4+IDE2KSAmIDB4ZmZmZik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2xvMzIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfbG8zMih2KXsgcmV0dXJuIHYubG8zMigpIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9oaTMyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2hpMzIodil7IHJldHVybiB2LmhpMzIoKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sSW50NjRcbmZ1bmN0aW9uIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSkge1xuICByZXR1cm4gbmV3IE1sSW50NjQoYVs3XSA8PCAwIHwgKGFbNl0gPDwgOCkgfCAoYVs1XSA8PCAxNiksXG4gICAgICAgICAgICAgICAgICAgICBhWzRdIDw8IDAgfCAoYVszXSA8PCA4KSB8IChhWzJdIDw8IDE2KSxcbiAgICAgICAgICAgICAgICAgICAgIGFbMV0gPDwgMCB8IChhWzBdIDw8IDgpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfdG9fYnl0ZXMoeCkgeyByZXR1cm4geC50b0FycmF5KCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2hhc2ggY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfaGFzaCh2KXtcbiAgcmV0dXJuICh2LmxvMzIoKSkgXiAodi5oaTMyKCkpXG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBBbiBPQ2FtbCBzdHJpbmcgaXMgYW4gb2JqZWN0IHdpdGggdGhyZWUgZmllbGRzOlxuLy8gLSB0YWcgJ3QnXG4vLyAtIGxlbmd0aCAnbCdcbi8vIC0gY29udGVudHMgJ2MnXG4vL1xuLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgY2FuIGJlIGVpdGhlciBhIEphdmFTY3JpcHQgYXJyYXkgb3Jcbi8vIGEgSmF2YVNjcmlwdCBzdHJpbmcuIFRoZSBsZW5ndGggb2YgdGhpcyBzdHJpbmcgY2FuIGJlIGxlc3MgdGhhbiB0aGVcbi8vIGxlbmd0aCBvZiB0aGUgT0NhbWwgc3RyaW5nLiBJbiB0aGlzIGNhc2UsIHJlbWFpbmluZyBieXRlcyBhcmVcbi8vIGFzc3VtZWQgdG8gYmUgemVyb2VzLiBBcnJheXMgYXJlIG11dGFibGUgYnV0IGNvbnN1bWVzIG1vcmUgbWVtb3J5XG4vLyB0aGFuIHN0cmluZ3MuIEEgY29tbW9uIHBhdHRlcm4gaXMgdG8gc3RhcnQgZnJvbSBhbiBlbXB0eSBzdHJpbmcgYW5kXG4vLyBwcm9ncmVzc2l2ZWx5IGZpbGwgaXQgZnJvbSB0aGUgc3RhcnQuIFBhcnRpYWwgc3RyaW5ncyBtYWtlcyBpdFxuLy8gcG9zc2libGUgdG8gaW1wbGVtZW50IHRoaXMgZWZmaWNpZW50bHkuXG4vL1xuLy8gV2hlbiBjb252ZXJ0aW5nIHRvIGFuZCBmcm9tIFVURi0xNiwgd2Uga2VlcCB0cmFjayBvZiB3aGV0aGVyIHRoZVxuLy8gc3RyaW5nIGlzIGNvbXBvc2VkIG9ubHkgb2YgQVNDSUkgY2hhcmFjdGVycyAoaW4gd2hpY2ggY2FzZSwgbm9cbi8vIGNvbnZlcnNpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkKSBvciBub3QuXG4vL1xuLy8gVGhlIHN0cmluZyB0YWcgY2FuIHRodXMgdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbi8vICAgZnVsbCBzdHJpbmcgICAgIEJZVEUgfCBVTktOT1dOOiAgICAgIDBcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBBU0NJSTogICAgICAgIDlcbi8vICAgICAgICAgICAgICAgICAgIEJZVEUgfCBOT1RfQVNDSUk6ICAgIDhcbi8vICAgc3RyaW5nIHByZWZpeCAgIFBBUlRJQUw6ICAgICAgICAgICAgIDJcbi8vICAgYXJyYXkgICAgICAgICAgIEFSUkFZOiAgICAgICAgICAgICAgIDRcbi8vXG4vLyBPbmUgY2FuIHVzZSBiaXQgbWFza2luZyB0byBkaXNjcmltaW5hdGUgdGhlc2UgZGlmZmVyZW50IGNhc2VzOlxuLy8gICBrbm93bl9lbmNvZGluZyh4KSA9IHgmOFxuLy8gICBpc19hc2NpaSh4KSA9ICAgICAgIHgmMVxuLy8gICBraW5kKHgpID0gICAgICAgICAgIHgmNlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9yZXBlYXRcbmZ1bmN0aW9uIGNhbWxfc3RyX3JlcGVhdChuLCBzKSB7XG4gIGlmKG4gPT0gMCkgcmV0dXJuIFwiXCI7XG4gIGlmIChzLnJlcGVhdCkge3JldHVybiBzLnJlcGVhdChuKTt9IC8vIEVDTUFzY3JpcHQgNiBhbmQgRmlyZWZveCAyNCtcbiAgdmFyIHIgPSBcIlwiLCBsID0gMDtcbiAgZm9yKDs7KSB7XG4gICAgaWYgKG4gJiAxKSByICs9IHM7XG4gICAgbiA+Pj0gMTtcbiAgICBpZiAobiA9PSAwKSByZXR1cm4gcjtcbiAgICBzICs9IHM7XG4gICAgbCsrO1xuICAgIGlmIChsID09IDkpIHtcbiAgICAgIHMuc2xpY2UoMCwxKTsgLy8gZmxhdHRlbiB0aGUgc3RyaW5nXG4gICAgICAvLyB0aGVuLCB0aGUgZmxhdHRlbmluZyBvZiB0aGUgd2hvbGUgc3RyaW5nIHdpbGwgYmUgZmFzdGVyLFxuICAgICAgLy8gYXMgaXQgd2lsbCBiZSBjb21wb3NlZCBvZiBsYXJnZXIgcGllY2VzXG4gICAgfVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuLy9XZWFrZGVmXG4vLyBQcmUgRUNNQVNjcmlwdCA1LCBbYXBwbHldIHdvdWxkIG5vdCBzdXBwb3J0IGFycmF5LWxpa2Ugb2JqZWN0LlxuLy8gSW4gc3VjaCBzZXR1cCwgVHlwZWRfYXJyYXkgd291bGQgYmUgaW1wbGVtZW50ZWQgYXMgcG9seWZpbGwsIGFuZCBbZi5hcHBseV0gd291bGRcbi8vIGZhaWwgaGVyZS4gTWFyayB0aGUgcHJpbWl0aXZlIGFzIFdlYWtkZWYsIHNvIHRoYXQgcGVvcGxlIGNhbiBvdmVycmlkZSBpdCBlYXNpbHkuXG5mdW5jdGlvbiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMgKGEsIGksIGxlbikge1xuICB2YXIgZiA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG4gIGlmIChpID09IDAgJiYgbGVuIDw9IDQwOTYgJiYgbGVuID09IGEubGVuZ3RoKSByZXR1cm4gZi5hcHBseSAobnVsbCwgYSk7XG4gIHZhciBzID0gXCJcIjtcbiAgZm9yICg7IDAgPCBsZW47IGkgKz0gMTAyNCxsZW4tPTEwMjQpXG4gICAgcyArPSBmLmFwcGx5IChudWxsLCBhLnNsaWNlKGksaSArIE1hdGgubWluKGxlbiwgMTAyNCkpKTtcbiAgcmV0dXJuIHM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdXRmOF9vZl91dGYxNlxuZnVuY3Rpb24gY2FtbF91dGY4X29mX3V0ZjE2KHMpIHtcbiAgZm9yICh2YXIgYiA9IFwiXCIsIHQgPSBiLCBjLCBkLCBpID0gMCwgbCA9IHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgYyA9IHMuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoYyA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYyA9IHMuY2hhckNvZGVBdChqKSkgPCAweDgwOyBqKyspO1xuICAgICAgaWYgKGogLSBpID4gNTEyKSB7IHQuc3Vic3RyKDAsIDEpOyBiICs9IHQ7IHQgPSBcIlwiOyBiICs9IHMuc2xpY2UoaSwgaikgfVxuICAgICAgZWxzZSB0ICs9IHMuc2xpY2UoaSwgaik7XG4gICAgICBpZiAoaiA9PSBsKSBicmVhaztcbiAgICAgIGkgPSBqO1xuICAgIH1cbiAgICBpZiAoYyA8IDB4ODAwKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhjMCB8IChjID4+IDYpKTtcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfSBlbHNlIGlmIChjIDwgMHhkODAwIHx8IGMgPj0gMHhkZmZmKSB7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhlMCB8IChjID4+IDEyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MCB8IChjICYgMHgzZikpO1xuICAgIH0gZWxzZSBpZiAoYyA+PSAweGRiZmYgfHwgaSArIDEgPT0gbCB8fFxuICAgICAgICAgICAgICAgKGQgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBkID4gMHhkZmZmKSB7XG4gICAgICAvLyBVbm1hdGNoZWQgc3Vycm9nYXRlIHBhaXIsIHJlcGxhY2VkIGJ5IFxcdWZmZmQgKHJlcGxhY2VtZW50IGNoYXJhY3RlcilcbiAgICAgIHQgKz0gXCJcXHhlZlxceGJmXFx4YmRcIjtcbiAgICB9IGVsc2Uge1xuICAgICAgaSsrO1xuICAgICAgYyA9IChjIDw8IDEwKSArIGQgLSAweDM1ZmRjMDA7XG4gICAgICB0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmMCB8IChjID4+IDE4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKChjID4+IDEyKSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwIHwgKGMgJiAweDNmKSk7XG4gICAgfVxuICAgIGlmICh0Lmxlbmd0aCA+IDEwMjQpIHt0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjt9XG4gIH1cbiAgcmV0dXJuIGIrdDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91dGYxNl9vZl91dGY4XG5mdW5jdGlvbiBjYW1sX3V0ZjE2X29mX3V0Zjgocykge1xuICBmb3IgKHZhciBiID0gXCJcIiwgdCA9IFwiXCIsIGMsIGMxLCBjMiwgdiwgaSA9IDAsIGwgPSBzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGMxID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIGlmIChjMSA8IDB4ODApIHtcbiAgICAgIGZvciAodmFyIGogPSBpICsgMTsgKGogPCBsKSAmJiAoYzEgPSBzLmNoYXJDb2RlQXQoaikpIDwgMHg4MDsgaisrKTtcbiAgICAgIGlmIChqIC0gaSA+IDUxMikgeyB0LnN1YnN0cigwLCAxKTsgYiArPSB0OyB0ID0gXCJcIjsgYiArPSBzLnNsaWNlKGksIGopIH1cbiAgICAgIGVsc2UgdCArPSBzLnNsaWNlKGksIGopO1xuICAgICAgaWYgKGogPT0gbCkgYnJlYWs7XG4gICAgICBpID0gajtcbiAgICB9XG4gICAgdiA9IDE7XG4gICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgIGMgPSBjMiArIChjMSA8PCA2KTtcbiAgICAgIGlmIChjMSA8IDB4ZTApIHtcbiAgICAgICAgdiA9IGMgLSAweDMwODA7XG4gICAgICAgIGlmICh2IDwgMHg4MCkgdiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2ID0gMjtcbiAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkpIHtcbiAgICAgICAgICBjID0gYzIgKyAoYyA8PCA2KTtcbiAgICAgICAgICBpZiAoYzEgPCAweGYwKSB7XG4gICAgICAgICAgICB2ID0gYyAtIDB4ZTIwODA7XG4gICAgICAgICAgICBpZiAoKHYgPCAweDgwMCkgfHwgKCh2ID49IDB4ZDdmZikgJiYgKHYgPCAweGUwMDApKSkgdiA9IDI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHYgPSAzO1xuICAgICAgICAgICAgaWYgKCgrK2kgPCBsKSAmJiAoKChjMiA9IHMuY2hhckNvZGVBdChpKSkgJiAtNjQpID09IDEyOCkgJiZcbiAgICAgICAgICAgICAgICAoYzEgPCAweGY1KSkge1xuICAgICAgICAgICAgICB2ID0gYzIgLSAweDNjODIwODAgKyAoYyA8PCA2KTtcbiAgICAgICAgICAgICAgaWYgKHYgPCAweDEwMDAwIHx8IHYgPiAweDEwZmZmZikgdiA9IDM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh2IDwgNCkgeyAvLyBJbnZhbGlkIHNlcXVlbmNlXG4gICAgICBpIC09IHY7XG4gICAgICB0ICs9IFwiXFx1ZmZmZFwiO1xuICAgIH0gZWxzZSBpZiAodiA+IDB4ZmZmZilcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGQ3YzAgKyAodiA+PiAxMCksIDB4ZGMwMCArICh2ICYgMHgzRkYpKVxuICAgIGVsc2VcbiAgICAgIHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSh2KTtcbiAgICBpZiAodC5sZW5ndGggPiAxMDI0KSB7dC5zdWJzdHIoMCwgMSk7IGIgKz0gdDsgdCA9IFwiXCI7fVxuICB9XG4gIHJldHVybiBiK3Q7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29faXNfYXNjaWlcbmZ1bmN0aW9uIGpzb29faXNfYXNjaWkgKHMpIHtcbiAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBnZXRzIGJldHRlciBhdCBhcm91bmQgdGhpcyBwb2ludCBmb3IgYWxsIGJyb3dzZXJzXG4gIGlmIChzLmxlbmd0aCA8IDI0KSB7XG4gICAgLy8gU3BpZGVybW9ua2V5IGdldHMgbXVjaCBzbG93ZXIgd2hlbiBzLmxlbmd0aCA+PSAyNCAob24gNjQgYml0IGFyY2hzKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7IGkrKykgaWYgKHMuY2hhckNvZGVBdChpKSA+IDEyNykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2VcbiAgICByZXR1cm4gIS9bXlxceDAwLVxceDdmXS8udGVzdChzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSkge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGlmIChpID49IHMuYy5sZW5ndGgpIHJldHVybiAwO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYy5jaGFyQ29kZUF0KGkpO1xuICBjYXNlIDQ6IC8qIEFSUkFZICovXG4gICAgcmV0dXJuIHMuY1tpXVxuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgLy8gVGhlIE9DYW1sIGNvbXBpbGVyIHVzZXMgQ2hhci51bnNhZmVfY2hyIG9uIGludGVnZXJzIGxhcmdlciB0aGFuIDI1NSFcbiAgYyAmPSAweGZmO1xuICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIHtcbiAgICBpZiAoaSA9PSBzLmMubGVuZ3RoKSB7XG4gICAgICBzLmMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSAoYyk7XG4gICAgICBpZiAoaSArIDEgPT0gcy5sKSBzLnQgPSAwOyAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkgKHMpO1xuICB9XG4gIHMuY1tpXSA9IGM7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19ib3VuZF9lcnJvciwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQgKHMsIGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gMSkgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAxKTtcbiAgcmV0dXJuIChiMiA8PCA4IHwgYjEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDE2XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0MTYocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDEpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMSk7XG4gIHJldHVybiAoYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBjYW1sX21sX3N0cmluZ19sZW5ndGgocykgLSAzKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjEgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSxcbiAgICAgIGIyID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpICsgMiksXG4gICAgICBiNCA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkgKyAzKTtcbiAgcmV0dXJuIChiNCA8PCAyNCB8IGIzIDw8IDE2IHwgYjIgPDwgOCB8IGIxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19nZXQzMlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc191bnNhZmVfZ2V0LCBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dldDMyKHMsaSkge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwgLSAzKSBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSksXG4gICAgICBiMiA9IGNhbWxfYnl0ZXNfdW5zYWZlX2dldCAocywgaSArIDEpLFxuICAgICAgYjMgPSBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQgKHMsIGkgKyAyKSxcbiAgICAgIGI0ID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgMyk7XG4gIHJldHVybiAoYjQgPDwgMjQgfCBiMyA8PCAxNiB8IGIyIDw8IDggfCBiMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX3N0cmluZ19ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19nZXQ2NChzLGkpIHtcbiAgaWYgKGkgPj4+IDAgPj0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIC0gNykgY2FtbF9zdHJpbmdfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSArIGopO1xuICB9XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dldDY0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQsIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0NjQocyxpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDcpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkoOCk7XG4gIGZvcih2YXIgaiA9IDA7IGogPCA4OyBqKyspe1xuICAgIGFbNyAtIGpdID0gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpICsgaik7XG4gIH1cbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoYSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ2V0IChzLCBpKSB7XG4gIGlmIChpID4+PiAwID49IHMubCkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0IChzLCBpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQsIGNhbWxfc3RyaW5nX2JvdW5kX2Vycm9yXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQgKHMsIGksIGMpIHtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sKSBjYW1sX3N0cmluZ19ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0MTZcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQxNihzLGksaTE2KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gMSkgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYjIgPSAweEZGICYgaTE2ID4+IDgsXG4gICAgICBiMSA9IDB4RkYgJiBpMTY7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDAsIGIxKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMSwgYjIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQxNihzLGksaTE2KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDE2XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQxNlxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0MTYocyxpLGkxNil7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDE2KHMsaSxpMTYpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2JvdW5kX2Vycm9yLCBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMil7XG4gIGlmIChpID4+PiAwID49IHMubCAtIDMpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGI0ID0gMHhGRiAmIGkzMiA+PiAyNCxcbiAgICAgIGIzID0gMHhGRiAmIGkzMiA+PiAxNixcbiAgICAgIGIyID0gMHhGRiAmIGkzMiA+PiA4LFxuICAgICAgYjEgPSAweEZGICYgaTMyO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAwLCBiMSk7XG4gIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDEsIGIyKTtcbiAgY2FtbF9ieXRlc191bnNhZmVfc2V0IChzLCBpICsgMiwgYjMpO1xuICBjYW1sX2J5dGVzX3Vuc2FmZV9zZXQgKHMsIGkgKyAzLCBiNCk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3NldDMyKHMsaSxpMzIpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfc2V0MzJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3NldDMyXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3NldDMyXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQzMihzLGksaTMyKXtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfc2V0MzIocyxpLGkzMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfc2V0NjRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IsIGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19zZXQ2NChzLGksaTY0KXtcbiAgaWYgKGkgPj4+IDAgPj0gcy5sIC0gNykgY2FtbF9ieXRlc19ib3VuZF9lcnJvcigpO1xuICB2YXIgYSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoaTY0KTtcbiAgZm9yKHZhciBqID0gMDsgaiA8IDg7IGorKykge1xuICAgIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSArIDcgLSBqLCBhW2pdKTtcbiAgfVxuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19zZXQ2NChzLGksaTY0KXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfc3RyaW5nX3NldDY0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19zZXQ2NFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfc2V0NjQocyxpLGk2NCl7XG4gIHJldHVybiBjYW1sX2J5dGVzX3NldDY0KHMsaSxpNjQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX3NldFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19ib3VuZF9lcnJvciwgY2FtbF9ieXRlc191bnNhZmVfc2V0XG5mdW5jdGlvbiBjYW1sX2J5dGVzX3NldCAocywgaSwgYykge1xuICBpZiAoaSA+Pj4gMCA+PSBzLmwpIGNhbWxfYnl0ZXNfYm91bmRfZXJyb3IoKTtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldCAocywgaSwgYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGpzb29faXNfYXNjaWksIGNhbWxfdXRmOF9vZl91dGYxNiwgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyAocykge1xuICB2YXIgdGFnID0gOSAvKiBCWVRFUyB8IEFTQ0lJICovO1xuICBpZiAoIWpzb29faXNfYXNjaWkocykpXG4gICAgdGFnID0gOCAvKiBCWVRFUyB8IE5PVF9BU0NJSSAqLywgcyA9IGNhbWxfdXRmOF9vZl91dGYxNihzKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKHRhZywgcywgcy5sZW5ndGgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IE1sQnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGpzb29faXNfYXNjaWksIGNhbWxfdXRmMTZfb2ZfdXRmOFxuZnVuY3Rpb24gTWxCeXRlcyAodGFnLCBjb250ZW50cywgbGVuZ3RoKSB7XG4gIHRoaXMudD10YWc7IHRoaXMuYz1jb250ZW50czsgdGhpcy5sPWxlbmd0aDtcbn1cbk1sQnl0ZXMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcbiAgc3dpdGNoICh0aGlzLnQpIHtcbiAgY2FzZSA5OiAvKkJZVEVTIHwgQVNDSUkqL1xuICAgIHJldHVybiB0aGlzLmM7XG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyh0aGlzKTtcbiAgY2FzZSAwOiAvKkJZVEVTIHwgVU5LT1dOKi9cbiAgICBpZiAoanNvb19pc19hc2NpaSh0aGlzLmMpKSB7XG4gICAgICB0aGlzLnQgPSA5OyAvKkJZVEVTIHwgQVNDSUkqL1xuICAgICAgcmV0dXJuIHRoaXMuYztcbiAgICB9XG4gICAgdGhpcy50ID0gODsgLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gIGNhc2UgODogLypCWVRFUyB8IE5PVF9BU0NJSSovXG4gICAgcmV0dXJuIHRoaXMuYztcbiAgfVxufTtcbk1sQnl0ZXMucHJvdG90eXBlLnRvVXRmMTYgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIHIgPSB0aGlzLnRvU3RyaW5nKCk7XG4gIGlmKHRoaXMudCA9PSA5KSByZXR1cm4gclxuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHIpO1xufVxuTWxCeXRlcy5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiAoKXtcbiAgdmFyIGNvbnRlbnQgPSB0aGlzLnQgPT0gNCA/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkocy5sKTtcbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIHZhciBpID0gMDtcbiAgZm9yICg7IGkgPCBsOyBpKyspIGFbaV0gPSBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSk7XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBpZihsZW4gPCAwKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX3N0cmluZyhsZW4pIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyaW5nLmNyZWF0ZVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXMsY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJ5dGVzLmNyZWF0ZVwiKTtcbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKGxlbj8yOjksXCJcIixsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9zdWJhcnJheV90b19qc2J5dGVzLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9hcnJheSAoYSkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoYSwwLGEubGVuZ3RoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfYXJyYXkgKGEpIHtcbiAgaWYoISAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgYSA9IG5ldyBVaW50OEFycmF5KGEpO1xuICB9XG4gIHJldHVybiBuZXcgTWxCeXRlcyg0LGEsYS5sZW5ndGgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2NvbXBhcmUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19jb21wYXJlKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8tMTooczEuYyA+IHMyLmMpPzE6MDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA9PSBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbm90ZXF1YWwoczEsIHMyKSB7IHJldHVybiAxLWNhbWxfYnl0ZXNfZXF1YWwoczEsIHMyKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jIDw9IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19sZXNzdGhhbiBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPCBzMi5jKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVyZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczIsczEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVyZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMyLHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW5cbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMyLCBzMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmlsbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbi8vQWxpYXM6IGNhbWxfZmlsbF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZmlsbF9ieXRlcyhzLCBpLCBsLCBjKSB7XG4gIGlmIChsID4gMCkge1xuICAgIGlmIChpID09IDAgJiYgKGwgPj0gcy5sIHx8IChzLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGwgPj0gcy5jLmxlbmd0aCkpKSB7XG4gICAgICBpZiAoYyA9PSAwKSB7XG4gICAgICAgIHMuYyA9IFwiXCI7XG4gICAgICAgIHMudCA9IDI7IC8qIFBBUlRJQUwgKi9cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHMuYyA9IGNhbWxfc3RyX3JlcGVhdCAobCwgU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gICAgICAgIHMudCA9IChsID09IHMubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocy50ICE9IDQgLyogQVJSQVkgKi8pIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheShzKTtcbiAgICAgIGZvciAobCArPSBpOyBpIDwgbDsgaSsrKSBzLmNbaV0gPSBjO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGkyLCBsZW4pIHtcbiAgaWYgKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgaWYgKChpMiA9PSAwKSAmJlxuICAgICAgKGxlbiA+PSBzMi5sIHx8IChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBsZW4gPj0gczIuYy5sZW5ndGgpKSkge1xuICAgIHMyLmMgPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIGlmIChzMi50ID09IDIgLyogUEFSVElBTCAqLyAmJiBpMiA9PSBzMi5jLmxlbmd0aCkge1xuICAgIHMyLmMgKz0gKHMxLnQgPT0gNCAvKiBBUlJBWSAqLyk/XG4gICAgICBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoczEuYywgaTEsIGxlbik6XG4gICAgICAoaTEgPT0gMCAmJiBzMS5jLmxlbmd0aCA9PSBsZW4pP3MxLmM6czEuYy5zdWJzdHIoaTEsIGxlbik7XG4gICAgczIudCA9IChzMi5jLmxlbmd0aCA9PSBzMi5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gIH0gZWxzZSB7XG4gICAgaWYgKHMyLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMyKTtcbiAgICB2YXIgYzEgPSBzMS5jLCBjMiA9IHMyLmM7XG4gICAgaWYgKHMxLnQgPT0gNCAvKiBBUlJBWSAqLykge1xuICAgICAgaWYgKGkyIDw9IGkxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyBpLS0pIGMyIFtpMiArIGldID0gYzEgW2kxICsgaV07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsID0gTWF0aC5taW4gKGxlbiwgYzEubGVuZ3RoIC0gaTEpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIGMyIFtpMiArIGldID0gYzEuY2hhckNvZGVBdChpMSArIGkpO1xuICAgICAgZm9yICg7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSAwO1xuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ibGl0X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ibGl0X3N0cmluZyhhLGIsYyxkLGUpIHtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGEpLGIsYyxkLGUpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19sZW5ndGgocykgeyByZXR1cm4gcy5sIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IChzLCBpKSB7XG4gIHJldHVybiBzLmNoYXJDb2RlQXQoaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zdHJpbmdfdW5zYWZlX3NldFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBzLmxlbmd0aFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/LTE6KHMxID4gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfZXF1YWwoczEsIHMyKSB7XG4gIGlmKHMxID09PSBzMikgcmV0dXJuIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWwgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDw9IHMyKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3N0aGFuKHMxLCBzMikge1xuICByZXR1cm4gKHMxIDwgczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocy5jKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh4KSB7IHJldHVybiB4IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGYxNl9vZl91dGY4XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpIHtcbiAgaWYoanNvb19pc19hc2NpaShzKSlcbiAgICByZXR1cm4gcztcbiAgcmV0dXJuIGNhbWxfdXRmMTZfb2ZfdXRmOChzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczoganNvb19pc19hc2NpaSwgY2FtbF91dGY4X29mX3V0ZjE2LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIGlmIChqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpXG4gIGVsc2UgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY2FtbF91dGY4X29mX3V0ZjE2KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMocykgeyByZXR1cm4gbmV3IE1sQnl0ZXMoMCxzLHMubGVuZ3RoKTsgfVxuXG5cbi8vIFRoZSBzZWN0aW9uIGJlbG93IHNob3VsZCBiZSB1c2VkIHdoZW4gdXNlLWpzLXN0cmluZz1mYWxzZVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX2dldChzLGkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX3Vuc2FmZV9zZXRcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQgKHMsIGksIGMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfdW5zYWZlX3NldChzLGksYyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGhcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19jb21wYXJlXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2NvbXBhcmVcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2VxdWFsXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19sZXNzdGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX2xlc3N0aGFuKHMxLHMyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocykgeyByZXR1cm4gcyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J5dGVzX29mX3N0cmluZyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIHsgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgKHMudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIHJldHVybiBzLmMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpe1xuICByZXR1cm4gcy50b1V0ZjE2KClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmdcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIChzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX3V0ZjE2X2pzc3RyaW5nKHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBNbEJ5dGVzXG5mdW5jdGlvbiBjYW1sX2lzX21sX2J5dGVzKHMpIHtcbiAgcmV0dXJuIChzIGluc3RhbmNlb2YgTWxCeXRlcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfY29udGVudFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9ieXRlc19jb250ZW50KHMpIHtcbiAgc3dpdGNoIChzLnQgJiA2KSB7XG4gIGRlZmF1bHQ6IC8qIFBBUlRJQUwgKi9cbiAgICBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICBjYXNlIDA6IC8qIEJZVEVTICovXG4gICAgcmV0dXJuIHMuYztcbiAgY2FzZSA0OlxuICAgIHJldHVybiBzLmNcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19pc19hc2NpaVxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiAodHlwZW9mIHMgPT09IFwic3RyaW5nXCIgJiYgIS9bXlxceDAwLVxceGZmXS8udGVzdChzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2lzX21sX3N0cmluZyhzKSB7XG4gIHJldHVybiBjYW1sX2lzX21sX2J5dGVzKHMpO1xufVxuXG4vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSBkZXByZWNhdGVkXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYnl0ZV9zdHJpbmcocykgeyByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzKSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9uZXdfc3RyaW5nIChzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX3N0cmluZyBtdXRhYmxlIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdG9fanNfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdG9fanNfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc190b19zdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHMpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9hcnJheV9vZl9zdHJpbmcoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoeCkgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX2J5dGVzKHgpIHsgcmV0dXJuIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoeCkgfVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9SYWlzZSBleGNlcHRpb25cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9jb25zdGFudCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2NvbnN0YW50ICh0YWcpIHsgdGhyb3cgdGFnOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJnICh0YWcsIGFyZykgeyB0aHJvdyBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UoWzAsIHRhZywgYXJnXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZ3MgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3JhaXNlX3dpdGhfYXJncyAodGFnLCBhcmdzKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnXS5jb25jYXQoYXJncykpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcgKHRhZywgbXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhtc2cpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mYWlsd2l0aCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ZhaWx3aXRoIChtc2cpIHtcbiAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSlcbiAgICBjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmU9WzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRmFpbHVyZVwiKSwtM107XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlLCBtc2cpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nLCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX2ludmFsaWRfYXJndW1lbnQgKG1zZykge1xuICBjYW1sX3JhaXNlX3dpdGhfc3RyaW5nKGNhbWxfZ2xvYmFsX2RhdGEuSW52YWxpZF9hcmd1bWVudCwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5FbmRfb2ZfZmlsZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfemVyb19kaXZpZGUgKCkge1xuICBjYW1sX3JhaXNlX2NvbnN0YW50KGNhbWxfZ2xvYmFsX2RhdGEuRGl2aXNpb25fYnlfemVybyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9mb3VuZCAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5Ob3RfZm91bmQpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6ICFlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApXG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIGcgPSBmLmFwcGx5KG51bGwsYXJncy5zbGljZSgwLG4pKTtcbiAgICBpZih0eXBlb2YgZyAhPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZztcbiAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLGFyZ3Muc2xpY2UobikpO1xuICB9XG4gIGVsc2Uge1xuICAgIHN3aXRjaCAoZCkge1xuICAgIGNhc2UgMToge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMSk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoeCwgeSl7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgMik7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIG5hcmdzW2FyZ3NMZW5dID0geDtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbiArIDFdID0geTtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgbmFyZ3MpXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKCl7XG4gICAgICAgIHZhciBleHRyYV9hcmdzID0gKGFyZ3VtZW50cy5sZW5ndGggPT0gMCk/MTphcmd1bWVudHMubGVuZ3RoO1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJncy5sZW5ndGgrZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrICkgbmFyZ3NbYXJncy5sZW5ndGgraV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGYsIG5hcmdzKVxuICAgICAgfTtcbiAgICB9fVxuICAgIGcubCA9IGQ7XG4gICAgcmV0dXJuIGc7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jYWxsX2dlbiAoY29uc3QsIHNoYWxsb3cpXG4vL0lmOiBlZmZlY3RzXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfY2FsbF9nZW4oZiwgYXJncykge1xuICB2YXIgbiA9IChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCk7XG4gIHZhciBhcmdzTGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBkID0gbiAtIGFyZ3NMZW47XG4gIGlmIChkID09IDApIHtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIGlmIChkIDwgMCkge1xuICAgIHZhciByZXN0ID0gYXJncy5zbGljZShuIC0gMSk7XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuIC0gMV07XG4gICAgYXJncyA9IGFyZ3Muc2xpY2UoMCwgbik7XG4gICAgYXJnc1tuIC0gMV0gPSBmdW5jdGlvbiAoZykge1xuICAgICAgaWYgKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBrKGcpO1xuICAgICAgdmFyIGFyZ3MgPSByZXN0LnNsaWNlKCk7XG4gICAgICBhcmdzW2FyZ3MubGVuZ3RoIC0gMV0gPSBrO1xuICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZywgYXJncyk7IH07XG4gICAgcmV0dXJuIGYuYXBwbHkobnVsbCwgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgYXJnc0xlbi0tO1xuICAgIHZhciBrID0gYXJncyBbYXJnc0xlbl07XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5LCB6KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMl0gPSB6O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzTGVuICsgZXh0cmFfYXJncyk7XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmdzTGVuOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKVxuICAgICAgICAgIG5hcmdzW2FyZ3NMZW4gKyBpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZCArIDE7XG4gICAgcmV0dXJuIGsoZyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZXNcbnZhciBjYW1sX25hbWVkX3ZhbHVlcyA9IHt9O1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlIChjb25zdCxtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUobm0sdikge1xuICBjYW1sX25hbWVkX3ZhbHVlc1tjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5tKV0gPSB2O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYW1lZF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZXNcbmZ1bmN0aW9uIGNhbWxfbmFtZWRfdmFsdWUobm0pIHtcbiAgcmV0dXJuIGNhbWxfbmFtZWRfdmFsdWVzW25tXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dsb2JhbF9kYXRhXG52YXIgY2FtbF9nbG9iYWxfZGF0YSA9IFswXTtcblxuLy9Qcm92aWRlczogY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9idWlsZF9zeW1ib2xzKHRvYykge1xuICB2YXIgc3ltYjtcbiAgd2hpbGUodG9jKSB7XG4gICAgaWYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodG9jWzFdWzFdKSA9PSBcIlNZSlNcIikge1xuICAgICAgc3ltYiA9IHRvY1sxXVsyXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBlbHNlIHRvYyA9IHRvY1syXVxuICB9XG4gIHZhciByID0ge307XG4gIGlmKHN5bWIpIHtcbiAgICBmb3IodmFyIGkgPSAxOyBpIDwgc3ltYi5sZW5ndGg7IGkrKyl7XG4gICAgICByW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN5bWJbaV1bMV0pXSA9IHN5bWJbaV1bMl1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChjb25zdCwgc2hhbGxvdywgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX2NhbGxiYWNrLCBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfZ2xvYmFsIChuLCB2LCBuYW1lX29wdCkge1xuICBpZiAobmFtZV9vcHQpIHtcbiAgICB2YXIgbmFtZSA9IG5hbWVfb3B0O1xuICAgIGlmKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYykge1xuICAgICAgbiA9IGNhbWxfY2FsbGJhY2soZ2xvYmFsVGhpcy50b3BsZXZlbFJlbG9jLCBbbmFtZV0pO1xuICAgIH1cbiAgICBlbHNlIGlmIChjYW1sX2dsb2JhbF9kYXRhLnRvYykge1xuICAgICAgaWYoIWNhbWxfZ2xvYmFsX2RhdGEuc3ltYm9scykge1xuICAgICAgICBjYW1sX2dsb2JhbF9kYXRhLnN5bWJvbHMgPSBjYW1sX2J1aWxkX3N5bWJvbHMoY2FtbF9nbG9iYWxfZGF0YS50b2MpXG4gICAgICB9XG4gICAgICB2YXIgbmlkID0gY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzW25hbWVdXG4gICAgICBpZihuaWQgPj0gMClcbiAgICAgICAgbiA9IG5pZFxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3JlZ2lzdGVyX2dsb2JhbDogY2Fubm90IGxvY2F0ZSBcIiArIG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmKG5hbWVfb3B0KSBjYW1sX2dsb2JhbF9kYXRhW25hbWVfb3B0XSA9IHY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2dsb2JhbF9kYXRhIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZ2V0X2dsb2JhbF9kYXRhICgpIHsgcmV0dXJuIGNhbWxfZ2xvYmFsX2RhdGE7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykgeyByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9wcmludF9zdGF0c1xuZnVuY3Rpb24gY2FtbF9tYXliZV9wcmludF9zdGF0cyh1bml0KSB7IHJldHVybiAwIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIGlmKGdsb2JhbFRoaXMucXVpdCkgZ2xvYmFsVGhpcy5xdWl0KGNvZGUpO1xuICAvL25vZGVqc1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQpXG4gICAgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKXtcbiAgc3dpdGNoKGV4blsyXSkge1xuICBjYXNlIC04OiAvLyBNYXRjaF9mYWlsdXJlXG4gIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICBjYXNlIC0xMjogLy8gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcbiAgICByZXR1cm4gMTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihleG4pe1xuICB2YXIgciA9IFwiXCI7XG4gIGlmKGV4blswXSA9PSAwKSB7XG4gICAgciArPSBleG5bMV1bMV07XG4gICAgaWYoZXhuLmxlbmd0aCA9PSAzICYmIGV4blsyXVswXSA9PSAwICYmIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKSkge1xuXG4gICAgICB2YXIgYnVja2V0ID0gZXhuWzJdO1xuICAgICAgdmFyIHN0YXJ0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YXJ0ID0gMlxuICAgICAgdmFyIGJ1Y2tldCA9IGV4bjtcbiAgICB9XG4gICAgciArPSBcIihcIjtcbiAgICBmb3IodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkgKyspe1xuICAgICAgaWYoaSA+IHN0YXJ0KSByKz1cIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXVxuICAgICAgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcis9IHYudG9TdHJpbmcoKTtcbiAgICAgIGVsc2UgaWYodiBpbnN0YW5jZW9mIE1sQnl0ZXMpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHR5cGVvZiB2ID09IFwic3RyaW5nXCIpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCJcbiAgfSBlbHNlIGlmIChleG5bMF0gPT0gMjQ4KXtcbiAgICByICs9IGV4blsxXVxuICB9XG4gIHJldHVybiByXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX2Zvcm1hdF9leGNlcHRpb24sIGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycil7XG4gIGlmKGVyciBpbnN0YW5jZW9mIEFycmF5ICYmIChlcnJbMF0gPT0gMCB8fCBlcnJbMF0gPT0gMjQ4KSkge1xuICAgIHZhciBoYW5kbGVyID0gY2FtbF9uYW1lZF92YWx1ZShcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIik7XG4gICAgaWYoaGFuZGxlcikgY2FtbF9jYWxsYmFjayhoYW5kbGVyLCBbZXJyLGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSBjYW1sX2NhbGxiYWNrKGF0X2V4aXQsIFswXSk7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyk7XG4gICAgICBpZihlcnIuanNfZXJyb3IpIHRocm93IGVyci5qc19lcnJvcjtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuZnVuY3Rpb24ganNvb19zeXNfZ2V0ZW52KG4pIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIC8vbm9kZWpzIGVudlxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuZW52XG4gICAgICYmIHByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnZbbl07XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xuICBpZihyID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSl7XG4gIHJldHVybiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKChmdW5jdGlvbiAoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5hcmd2XG4gICAgICYmIHByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3ZcbiAgICAvL25vZGVqc1xuICAgIG1haW4gPSBhcmd2WzFdO1xuICAgIGFyZ3MgPSBhcmd2LnNsaWNlKDIpO1xuICB9XG5cbiAgdmFyIHAgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhtYWluKTtcbiAgdmFyIGFyZ3MyID0gWzAsIHBdO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKylcbiAgICBhcmdzMi5wdXNoKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFyZ3NbaV0pKTtcbiAgcmV0dXJuIGFyZ3MyO1xufSkoKSlcblxuLy9Qcm92aWRlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxudmFyIGNhbWxfZXhlY3V0YWJsZV9uYW1lID0gY2FtbF9hcmd2WzFdXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2IChhKSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YgKGEpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKXtcbiAgY2FtbF9hcmd2ID0gYXJnO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuZnVuY3Rpb24gY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lKGEpe1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWVcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICB2YXIgY21kID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoY21kKTtcbiAgaWYgKHR5cGVvZiByZXF1aXJlICE9IFwidW5kZWZpbmVkXCIpe1xuICAgIHZhciBjaGlsZF9wcm9jZXNzID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuICAgIGlmKGNoaWxkX3Byb2Nlc3MgJiYgY2hpbGRfcHJvY2Vzcy5leGVjU3luYylcbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMoY21kLHtzdGRpbzogJ2luaGVyaXQnfSk7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gIH1cbiAgZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICAgdmFyIGEgPSBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoNCkpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMpIHtcbiAgICAgICB2YXIgYSA9IG5ldyBJbnQzMkFycmF5KGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS5idWZmZXIpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH1cbiAgfVxuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3deMHhmZmZmZmZmZipNYXRoLnJhbmRvbSgpO1xuICByZXR1cm4gWzAseF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfaW50X3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSBjb25zdFxuLy8gbWF4X2ludCAvIDQgc28gdGhhdCB0aGUgZm9sbG93aW5nIGRvZXMgbm90IG92ZXJmbG93XG4vL2xldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMTs7XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplICgpIHsgcmV0dXJuICgweDdGRkZGRkZGLzQpIHwgMDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCAoKSB7IHJldHVybiBvc190eXBlID09IFwiVW5peFwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJXaW4zMlwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIkN5Z3dpblwiID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbnZhciBvc190eXBlID0gKGdsb2JhbFRoaXMucHJvY2VzcyAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT0gXCJ3aW4zMlwiKSA/IFwiQ3lnd2luXCIgOiBcIlVuaXhcIjtcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG9zX3R5cGUpLCAzMiwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzYXR0eVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNhdHR5KF9jaGFuKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfdmFyaWFudFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3ZhcmlhbnQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyKCl7cmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xudmFyIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyAoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3J1bnRpbWVfd2FybmluZ3M7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9lbmFibGVkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lKF9jaGFubmVsKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJTcGFjZXRpbWUgcHJvZmlsaW5nIG9ubHkgd29ya3MgZm9yIG5hdGl2ZSBjb2RlXCIpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5pc0ZpbGUocm9vdC5yZXN0KTtcbn1cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIGlmKHByb2Nlc3MgJiYgcHJvY2Vzcy5vbikge1xuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZnVuY3Rpb24gKGVyciwgb3JpZ2luKSB7XG4gICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgcHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbi8vUmVxdWlyZXM6IGpzb29fc3lzX2dldGVudlxudmFyIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gRkxBRyhcIndpdGgtanMtZXJyb3JcIik7XG5cbihmdW5jdGlvbiAoKSB7XG4gIHZhciByID0ganNvb19zeXNfZ2V0ZW52KFwiT0NBTUxSVU5QQVJBTVwiKVxuICBpZihyICE9PSB1bmRlZmluZWQpe1xuICAgIHZhciBsID0gci5zcGxpdChcIixcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGwubGVuZ3RoOyBpKyspe1xuICAgICAgaWYobFtpXSA9PSBcImJcIikgeyBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IDE7IGJyZWFrIH1cbiAgICAgIGVsc2UgaWYgKGxbaV0uc3RhcnRzV2l0aChcImI9XCIpKSB7XG4gICAgICAgIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gKyhsW2ldLnNsaWNlKDIpKX1cbiAgICAgIGVsc2UgY29udGludWU7XG4gICAgfVxuICB9XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9iYWNrdHJhY2Vfc3RhdHVzXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9iYWNrdHJhY2Vfc3RhdHVzIChfdW5pdCkgeyByZXR1cm4gY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPyAxIDogMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX2JhY2t0cmFjZSAoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgKCkgeyByZXR1cm4gWzBdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG5mdW5jdGlvbiBjYW1sX3JlY29yZF9iYWNrdHJhY2UgKGIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSBiOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9yYXdfYmFja3RyYWNlX2xlbmd0aCgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3RcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9zbG90ICgpIHtcbiAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdDogaW5kZXggb3V0IG9mIGJvdW5kc1wiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfcmVzdG9yZV9yYXdfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZShleG4sIGJ0KSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2N1cnJlbnRfY2FsbHN0YWNrIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3B1cmVfZXhwciBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc19wdXJlX2V4cHIgKGYpIHsgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgWzBdKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2pzX3NldChvLGYsdikgeyBvW2ZdPXY7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldCAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2dldChvLGYpIHsgcmV0dXJuIG9bZl07IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfZGVsZXRlIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZGVsZXRlKG8sZikgeyBkZWxldGUgb1tmXTsgcmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaW5zdGFuY2VvZiAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19pbnN0YW5jZW9mKG8sYykgeyByZXR1cm4gKG8gaW5zdGFuY2VvZiBjKSA/IDEgOiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdHlwZW9mIChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdHlwZW9mKG8pIHsgcmV0dXJuIHR5cGVvZiBvOyB9XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmUocmVzKSB7XG4gIHZhciBjID0gMTtcbiAgd2hpbGUocmVzICYmIHJlcy5qb29fdHJhbXApe1xuICAgIHJlcyA9IHJlcy5qb29fdHJhbXAuYXBwbHkobnVsbCwgcmVzLmpvb19hcmdzKTtcbiAgICBjKys7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczpjYW1sX3RyYW1wb2xpbmVfcmV0dXJuXG5mdW5jdGlvbiBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuKGYsYXJncykge1xuICByZXR1cm4ge2pvb190cmFtcDpmLGpvb19hcmdzOmFyZ3N9O1xufVxuXG4vL1Byb3ZpZGVzOmNhbWxfc3RhY2tfZGVwdGhcbi8vSWY6IGVmZmVjdHNcbnZhciBjYW1sX3N0YWNrX2RlcHRoID0gMDtcblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2NoZWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfc3RhY2tfZGVwdGhcbmZ1bmN0aW9uIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKSB7XG4gICAgcmV0dXJuIC0tY2FtbF9zdGFja19kZXB0aCA+IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6ICFlZmZlY3RzXG4vL1JlcXVpcmVzOmNhbWxfY2FsbF9nZW5cbnZhciBjYW1sX2NhbGxiYWNrID0gY2FtbF9jYWxsX2dlbjtcblxuLy9Qcm92aWRlczogY2FtbF9jYWxsYmFja1xuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoLCBjYW1sX2NhbGxfZ2VuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFjaywgY2FtbF93cmFwX2V4Y2VwdGlvbiwgY2FtbF9yZXN1bWVfc3RhY2ssIGNhbWxfZnJlc2hfb29faWQsIGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2Vfd2l0aF9hcmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnRcbmZ1bmN0aW9uIGNhbWxfY2FsbGJhY2soZixhcmdzKSB7XG4gIGZ1bmN0aW9uIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyKGVmZixrLG1zKSB7XG4gICAgLy8gUmVzdW1lcyB0aGUgY29udGludWF0aW9uIGsgYnkgcmFpc2luZyBleGNlcHRpb24gVW5oYW5kbGVkLlxuICAgIGNhbWxfcmVzdW1lX3N0YWNrKGtbMV0sbXMpO1xuICAgIHZhciBleG4gPSBjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LlVuaGFuZGxlZFwiKTtcbiAgICBpZihleG4pIGNhbWxfcmFpc2Vfd2l0aF9hcmcoZXhuLCBlZmYpO1xuICAgIGVsc2Uge1xuICAgICAgZXhuID0gWzI0OCxjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiRWZmZWN0LlVuaGFuZGxlZFwiKSwgY2FtbF9mcmVzaF9vb19pZCgwKV07XG4gICAgICBjYW1sX3JhaXNlX2NvbnN0YW50KGV4bik7XG4gICAgfVxuICB9XG4gIHZhciBzYXZlZF9zdGFja19kZXB0aCA9IGNhbWxfc3RhY2tfZGVwdGg7XG4gIHZhciBzYXZlZF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFjaztcbiAgdmFyIHNhdmVkX2ZpYmVyX3N0YWNrID0gY2FtbF9maWJlcl9zdGFjaztcbiAgdHJ5IHtcbiAgICBjYW1sX2V4bl9zdGFjayA9IDA7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpbMCwgMCwgMCwgdW5jYXVnaHRfZWZmZWN0X2hhbmRsZXJdLCByOntrOjAsIHg6MCwgZTowfX07XG4gICAgdmFyIHJlcyA9IHtqb29fdHJhbXA6IGYsXG4gICAgICAgICAgICAgICBqb29fYXJnczogYXJncy5jb25jYXQoZnVuY3Rpb24gKHgpe3JldHVybiB4O30pfTtcbiAgICBkbyB7XG4gICAgICBjYW1sX3N0YWNrX2RlcHRoID0gNDA7XG4gICAgICB0cnkge1xuICAgICAgICByZXMgPSBjYW1sX2NhbGxfZ2VuKHJlcy5qb29fdHJhbXAsIHJlcy5qb29fYXJncyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8qIEhhbmRsZSBleGNlcHRpb24gY29taW5nIGZyb20gSmF2YVNjcmlwdCBvciBmcm9tIHRoZSBydW50aW1lLiAqL1xuICAgICAgICBpZiAoIWNhbWxfZXhuX3N0YWNrKSB0aHJvdyBlO1xuICAgICAgICB2YXIgaGFuZGxlciA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICAgICAgICBjYW1sX2V4bl9zdGFjayA9IGNhbWxfZXhuX3N0YWNrWzJdO1xuICAgICAgICByZXMgPSB7am9vX3RyYW1wOiBoYW5kbGVyLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IFtjYW1sX3dyYXBfZXhjZXB0aW9uKGUpXX07XG4gICAgICB9XG4gICAgfSB3aGlsZShyZXMgJiYgcmVzLmpvb19hcmdzKVxuICB9IGZpbmFsbHkge1xuICAgIGNhbWxfc3RhY2tfZGVwdGggPSBzYXZlZF9zdGFja19kZXB0aDtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHNhdmVkX2V4bl9zdGFjaztcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID0gc2F2ZWRfZmliZXJfc3RhY2s7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19qc1xuZnVuY3Rpb24gY2FtbF9pc19qcygpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc191c2VfanNfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJ1c2UtanMtc3RyaW5nXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNvb19mbGFnc19lZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyh1bml0KXtcbiAgcmV0dXJuIEZMQUcoXCJlZmZlY3RzXCIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd3JhcF9leGNlcHRpb24gY29uc3QgKG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nLGNhbWxfbmFtZWRfdmFsdWVcbmZ1bmN0aW9uIGNhbWxfd3JhcF9leGNlcHRpb24oZSkge1xuICBpZiAoRkxBRyhcImV4Y3dyYXBcIikpIHtcbiAgICBpZihlIGluc3RhbmNlb2YgQXJyYXkpIHJldHVybiBlO1xuICAgIHZhciBleG47XG4gICAgLy9TdGFja19vdmVyZmxvdzogY2hyb21lLCBzYWZhcmlcbiAgICBpZihnbG9iYWxUaGlzLlJhbmdlRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC9tYXhpbXVtIGNhbGwgc3RhY2svaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGZpcmVmb3hcbiAgICBlbHNlIGlmKGdsb2JhbFRoaXMuSW50ZXJuYWxFcnJvclxuICAgICAgICYmIGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlLm1lc3NhZ2VcbiAgICAgICAmJiBlLm1lc3NhZ2UubWF0Y2goL3RvbyBtdWNoIHJlY3Vyc2lvbi9pKSlcbiAgICAgIGV4biA9IGNhbWxfZ2xvYmFsX2RhdGEuU3RhY2tfb3ZlcmZsb3c7XG4gICAgLy9XcmFwIEVycm9yIGluIEpzLkVycm9yIGV4Y2VwdGlvblxuICAgIGVsc2UgaWYoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IgJiYgY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIikpXG4gICAgICBleG4gPSBbMCxjYW1sX25hbWVkX3ZhbHVlKFwianNFcnJvclwiKSxlXTtcbiAgICBlbHNlXG4gICAgICAvL2ZhbGxiYWNrOiB3cmFwcGVkIGluIEZhaWx1cmVcbiAgICAgIGV4biA9IFswLGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoU3RyaW5nKGUpKV07XG4gICAgLy8gV2UgYWxyZWFkeSBoYXZlIGFuIGVycm9yIGF0IGhhbmQsIGxldCdzIHVzZSBpdC5cbiAgICBpZiAoZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRXJyb3IpXG4gICAgICBleG4uanNfZXJyb3IgPSBlO1xuICAgIHJldHVybiBleG47XG4gIH0gZWxzZVxuICAgIHJldHVybiBlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgaWYoY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcpXG4gICAgcmV0dXJuIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpO1xuICBlbHNlIHJldHVybiBleG5cbn1cblxuLy8gRXhwZXJpbWVudGFsXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2UoZXhuLCBmb3JjZSkge1xuICAvL25ldmVyIHJlcmFpc2UgZm9yIGNvbnN0YW50IGV4blxuICBpZighZXhuLmpzX2Vycm9yIHx8IGZvcmNlIHx8IGV4blswXSA9PSAyNDgpIGV4bi5qc19lcnJvciA9IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiSnMgZXhjZXB0aW9uIGNvbnRhaW5pbmcgYmFja3RyYWNlXCIpO1xuICByZXR1cm4gZXhuO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIFswLCBleG4uanNfZXJyb3JdOyB9XG4gIHJldHVybiAwO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Jvb2woeCkgeyByZXR1cm4gISF4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2Jvb2wgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19ib29sKHgpIHsgcmV0dXJuICt4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fZmxvYXQgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc19mcm9tX2ludDMyXG4vL0FsaWFzOiBjYW1sX2pzX2Zyb21fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX2Zyb21fZmxvYXQoeCkgeyByZXR1cm4geDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19mbG9hdCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9faW50MzIgY29uc3QgKGNvbnN0KVxuLy9BbGlhczogY2FtbF9qc190b19uYXRpdmVpbnRcbmZ1bmN0aW9uIGNhbWxfanNfdG9faW50MzIoeCkgeyByZXR1cm4geHwwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2FycmF5KGEpIHtcbiAgcmV0dXJuIGEuc2xpY2UoMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2FycmF5IG11dGFibGUgKHNoYWxsb3cpXG5mdW5jdGlvbiBjYW1sX2pzX3RvX2FycmF5KGEpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGJbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGxlbjtpKyspIGJbaSsxXSA9IGFbaV07XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkoYSl7XG4gIHZhciBsID0gMDtcbiAgZm9yKHZhciBpPWEubGVuZ3RoIC0gMTsgaT49MDsgaS0tKXtcbiAgICB2YXIgZSA9IGFbaV07XG4gICAgbCA9IFswLGUsbF07XG4gIH1cbiAgcmV0dXJuIGxcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X3RvX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X3RvX2pzX2FycmF5KGwpe1xuICB2YXIgYSA9IFtdO1xuICBmb3IoOyBsICE9PSAwOyBsID0gbFsyXSkge1xuICAgIGEucHVzaChsWzFdKTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc192YXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfdmFyKHgpIHtcbiAgdmFyIHggPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyh4KTtcbiAgLy9DaGVja3MgdGhhdCB4IGhhcyB0aGUgZm9ybSBpZGVudFsuaWRlbnRdKlxuICBpZigheC5tYXRjaCgvXlthLXpBLVpfJF1bYS16QS1aXyQwLTldKihcXC5bYS16QS1aXyRdW2EtekEtWl8kMC05XSopKiQvKSl7XG4gICAgY29uc29sZS5lcnJvcihcImNhbWxfanNfdmFyOiBcXFwiXCIgKyB4ICsgXCJcXFwiIGlzIG5vdCBhIHZhbGlkIEphdmFTY3JpcHQgdmFyaWFibGUuIGNvbnRpbnVpbmcgLi5cIik7XG4gICAgLy9jb25zb2xlLmVycm9yKFwiSnMuVW5zYWZlLmV2YWxfc3RyaW5nXCIpXG4gIH1cbiAgcmV0dXJuIGV2YWwoeCk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2NhbGwgKGNvbnN0LCBtdXRhYmxlLCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc19mcm9tX2FycmF5XG5mdW5jdGlvbiBjYW1sX2pzX2NhbGwoZiwgbywgYXJncykgeyByZXR1cm4gZi5hcHBseShvLCBjYW1sX2pzX2Zyb21fYXJyYXkoYXJncykpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bl9jYWxsIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19mdW5fY2FsbChmLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAxOiByZXR1cm4gZigpO1xuICBjYXNlIDI6IHJldHVybiBmIChhWzFdKTtcbiAgY2FzZSAzOiByZXR1cm4gZiAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdKTtcbiAgY2FzZSA2OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBmIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSxhWzddKTtcbiAgfVxuICByZXR1cm4gZi5hcHBseShudWxsLCBjYW1sX2pzX2Zyb21fYXJyYXkoYSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19tZXRoX2NhbGwgKG11dGFibGUsIGNvbnN0LCBzaGFsbG93KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19tZXRoX2NhbGwobywgZiwgYXJncykge1xuICByZXR1cm4gb1tjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhmKV0uYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbmV3IChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19uZXcoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDI6IHJldHVybiBuZXcgYyAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10pO1xuICBjYXNlIDU6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0pO1xuICBjYXNlIDg6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgY2FtbF9qc19mcm9tX2FycmF5KGEpKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX29qc19uZXdfYXJyIChjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9vanNfbmV3X2FycihjLCBhKSB7XG4gIHN3aXRjaCAoYS5sZW5ndGgpIHtcbiAgY2FzZSAwOiByZXR1cm4gbmV3IGM7XG4gIGNhc2UgMTogcmV0dXJuIG5ldyBjIChhWzBdKTtcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMF0sYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgfVxuICBmdW5jdGlvbiBGKCkgeyByZXR1cm4gYy5hcHBseSh0aGlzLCBhKTsgfVxuICBGLnByb3RvdHlwZSA9IGMucHJvdG90eXBlO1xuICByZXR1cm4gbmV3IEY7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICBpZihsZW4gPiAwKXtcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzID0gW3VuZGVmaW5lZF07XG4gICAgfVxuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICAgIHJldHVybiAocmVzIGluc3RhbmNlb2YgRnVuY3Rpb24pP2NhbWxfanNfd3JhcF9jYWxsYmFjayhyZXMpOnJlcztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBbYXJnc10pO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyaXR5KTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgfTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZik7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrLCBjYW1sX2pzX3dyYXBfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4gKyAxKTtcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgdmFyIHJlcyA9IGNhbWxfY2FsbGJhY2soZixhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLFt0aGlzLGFyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QoYXJpdHksIGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSArIDEpO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihhcmd1bWVudHMubGVuZ3RoLCBhcml0eSlcbiAgICBhcmdzWzBdID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSBhcmdzW2krMV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja191bnNhZmUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSAtIDE7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpOyB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpIHtcbiAgcmV0dXJuIChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5jdGlvbl9hcml0eVxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIC8vIEZ1bmN0aW9ucyBoYXZlIGFuIGFkZGl0aW9uYWwgY29udGludWF0aW9uIHBhcmFtZXRlci4gVGhpcyBzaG91bGRcbiAgLy8gbm90IGJlIHZpc2libGUgd2hlbiBjYWxsaW5nIHRoZW0gZnJvbSBKYXZhU2NyaXB0XG4gIHJldHVybiAoKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKSkgLSAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZXF1YWxzICh4LCB5KSB7IHJldHVybiArKHggPT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zdHJpY3RfZXF1YWxzIG11dGFibGUgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfc3RyaWN0X2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09PSB5KTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2V2YWxfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V2YWxfc3RyaW5nIChzKSB7cmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19leHByIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX2V4cHIocykge1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9qc19leHByOiBmYWxsYmFjayB0byBydW50aW1lIGV2YWx1YXRpb25cXG5cIik7XG4gIHJldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVyZV9qc19leHByIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3B1cmVfanNfZXhwciAocyl7XG4gIGNvbnNvbGUuZXJyb3IoXCJjYW1sX3B1cmVfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29iamVjdCAob2JqZWN0X2xpdGVyYWwpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19vYmplY3QgKGEpIHtcbiAgdmFyIG8gPSB7fTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBhW2ldO1xuICAgIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocFsxXSldID0gcFsyXTtcbiAgfVxuICByZXR1cm4gbztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gRm9ybWF0XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZm9ybWF0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZm9ybWF0IChmbXQpIHtcbiAgZm10ID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpO1xuICB2YXIgbGVuID0gZm10Lmxlbmd0aDtcbiAgaWYgKGxlbiA+IDMxKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJmb3JtYXRfaW50OiBmb3JtYXQgdG9vIGxvbmdcIik7XG4gIHZhciBmID1cbiAgICAgIHsganVzdGlmeTonKycsIHNpZ25zdHlsZTonLScsIGZpbGxlcjonICcsIGFsdGVybmF0ZTpmYWxzZSxcbiAgICAgICAgYmFzZTowLCBzaWduZWRjb252OmZhbHNlLCB3aWR0aDowLCB1cHBlcmNhc2U6ZmFsc2UsXG4gICAgICAgIHNpZ246MSwgcHJlYzotMSwgY29udjonZicgfTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gZm10LmNoYXJBdChpKTtcbiAgICBzd2l0Y2ggKGMpIHtcbiAgICBjYXNlICctJzpcbiAgICAgIGYuanVzdGlmeSA9ICctJzsgYnJlYWs7XG4gICAgY2FzZSAnKyc6IGNhc2UgJyAnOlxuICAgICAgZi5zaWduc3R5bGUgPSBjOyBicmVhaztcbiAgICBjYXNlICcwJzpcbiAgICAgIGYuZmlsbGVyID0gJzAnOyBicmVhaztcbiAgICBjYXNlICcjJzpcbiAgICAgIGYuYWx0ZXJuYXRlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6IGNhc2UgJzUnOlxuICAgIGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuICAgICAgZi53aWR0aCA9IDA7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYud2lkdGggPSBmLndpZHRoICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJy4nOlxuICAgICAgZi5wcmVjID0gMDtcbiAgICAgIGkrKztcbiAgICAgIHdoaWxlIChjPWZtdC5jaGFyQ29kZUF0KGkpIC0gNDgsIGMgPj0gMCAmJiBjIDw9IDkpIHtcbiAgICAgICAgZi5wcmVjID0gZi5wcmVjICogMTAgKyBjOyBpKytcbiAgICAgIH1cbiAgICAgIGktLTtcbiAgICBjYXNlICdkJzogY2FzZSAnaSc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyAvKiBmYWxsdGhyb3VnaCAqL1xuICAgIGNhc2UgJ3UnOlxuICAgICAgZi5iYXNlID0gMTA7IGJyZWFrO1xuICAgIGNhc2UgJ3gnOlxuICAgICAgZi5iYXNlID0gMTY7IGJyZWFrO1xuICAgIGNhc2UgJ1gnOlxuICAgICAgZi5iYXNlID0gMTY7IGYudXBwZXJjYXNlID0gdHJ1ZTsgYnJlYWs7XG4gICAgY2FzZSAnbyc6XG4gICAgICBmLmJhc2UgPSA4OyBicmVhaztcbiAgICBjYXNlICdlJzogY2FzZSAnZic6IGNhc2UgJ2cnOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgZi5jb252ID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnRSc6IGNhc2UgJ0YnOiBjYXNlICdHJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYudXBwZXJjYXNlID0gdHJ1ZTtcbiAgICAgIGYuY29udiA9IGMudG9Mb3dlckNhc2UgKCk7IGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maW5pc2hfZm9ybWF0dGluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCByYXdidWZmZXIpIHtcbiAgaWYgKGYudXBwZXJjYXNlKSByYXdidWZmZXIgPSByYXdidWZmZXIudG9VcHBlckNhc2UoKTtcbiAgdmFyIGxlbiA9IHJhd2J1ZmZlci5sZW5ndGg7XG4gIC8qIEFkanVzdCBsZW4gdG8gcmVmbGVjdCBhZGRpdGlvbmFsIGNoYXJzIChzaWduLCBldGMpICovXG4gIGlmIChmLnNpZ25lZGNvbnYgJiYgKGYuc2lnbiA8IDAgfHwgZi5zaWduc3R5bGUgIT0gJy0nKSkgbGVuKys7XG4gIGlmIChmLmFsdGVybmF0ZSkge1xuICAgIGlmIChmLmJhc2UgPT0gOCkgbGVuICs9IDE7XG4gICAgaWYgKGYuYmFzZSA9PSAxNikgbGVuICs9IDI7XG4gIH1cbiAgLyogRG8gdGhlIGZvcm1hdHRpbmcgKi9cbiAgdmFyIGJ1ZmZlciA9IFwiXCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcgJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICBpZiAoZi5zaWduZWRjb252KSB7XG4gICAgaWYgKGYuc2lnbiA8IDApIGJ1ZmZlciArPSAnLSc7XG4gICAgZWxzZSBpZiAoZi5zaWduc3R5bGUgIT0gJy0nKSBidWZmZXIgKz0gZi5zaWduc3R5bGU7XG4gIH1cbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSA4KSBidWZmZXIgKz0gJzAnO1xuICBpZiAoZi5hbHRlcm5hdGUgJiYgZi5iYXNlID09IDE2KSBidWZmZXIgKz0gZi51cHBlcmNhc2U/XCIwWFwiOlwiMHhcIjtcbiAgaWYgKGYuanVzdGlmeSA9PSAnKycgJiYgZi5maWxsZXIgPT0gJzAnKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnMCc7XG4gIGJ1ZmZlciArPSByYXdidWZmZXI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJy0nKVxuICAgIGZvciAodmFyIGkgPSBsZW47IGkgPCBmLndpZHRoOyBpKyspIGJ1ZmZlciArPSAnICc7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGJ1ZmZlcik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczoganNvb19mbG9vcl9sb2cyXG52YXIgbG9nMl9vayA9IE1hdGgubG9nMiAmJiBNYXRoLmxvZzIoMS4xMjM1NTgyMDkyODg5NDc0RSszMDcpID09IDEwMjBcbmZ1bmN0aW9uIGpzb29fZmxvb3JfbG9nMih4KSB7XG4gIGlmKGxvZzJfb2spIHJldHVybiBNYXRoLmZsb29yKE1hdGgubG9nMih4KSlcbiAgdmFyIGkgPSAwO1xuICBpZiAoeCA9PSAwKSByZXR1cm4gLUluZmluaXR5O1xuICBpZih4Pj0xKSB7d2hpbGUgKHg+PTIpIHt4Lz0yOyBpKyt9IH1cbiAgZWxzZSB7d2hpbGUgKHggPCAxKSB7eCo9MjsgaS0tfSB9O1xuICByZXR1cm4gaTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzIsIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpXG5mdW5jdGlvbiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHgpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSlcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgxLCAwLCAweDdmZjApO1xuICAgIGlmICh4ID4gMClcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweDdmZjApXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKDAsIDAsIDB4ZmZmMClcbiAgfVxuICB2YXIgc2lnbiA9ICh4PT0wICYmIDEveCA9PSAtSW5maW5pdHkpPzB4ODAwMDooeD49MCk/MDoweDgwMDA7XG4gIGlmIChzaWduKSB4ID0gLXg7XG4gIC8vIEludDY0LmJpdHNfb2ZfZmxvYXQgMS4xMjM1NTgyMDkyODg5NDc0RSszMDcgPSAweDdmYjAwMDAwMDAwMDAwMDBMXG4gIC8vIHVzaW5nIE1hdGguTE9HMkUqTWF0aC5sb2coeCkgaW4gcGxhY2Ugb2YgTWF0aC5sb2cyIHJlc3VsdCBpbiBwcmVjaXNpb24gbG9zdFxuICB2YXIgZXhwID0ganNvb19mbG9vcl9sb2cyKHgpICsgMTAyMztcbiAgaWYgKGV4cCA8PSAwKSB7XG4gICAgZXhwID0gMDtcbiAgICB4IC89IE1hdGgucG93KDIsLTEwMjYpO1xuICB9IGVsc2Uge1xuICAgIHggLz0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gICAgaWYgKHggPCAxNikge1xuICAgICAgeCAqPSAyOyBleHAgLT0xOyB9XG4gICAgaWYgKGV4cCA9PSAwKSB7XG4gICAgICB4IC89IDI7IH1cbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsMjQpO1xuICB2YXIgcjMgPSB4fDA7XG4gIHggPSAoeCAtIHIzKSAqIGs7XG4gIHZhciByMiA9IHh8MDtcbiAgeCA9ICh4IC0gcjIpICogaztcbiAgdmFyIHIxID0geHwwO1xuICByMyA9IChyMyAmMHhmKSB8IHNpZ24gfCBleHAgPDwgNDtcbiAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpKHIxLCByMiwgcjMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoMSk7XG4gIGZsb2F0MzJhWzBdID0geDtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KGZsb2F0MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBpbnQzMmFbMF0gfCAwO1xufVxuXG4vL0ZQIGxpdGVyYWxzIGNhbiBiZSB3cml0dGVuIHVzaW5nIHRoZSBoZXhhZGVjaW1hbFxuLy9ub3RhdGlvbiAweDxtYW50aXNzYSBpbiBoZXg+cDxleHBvbmVudD4gZnJvbSBJU08gQzk5LlxuLy9odHRwczovL2dpdGh1Yi5jb20vZGFua29nYWkvanMtaGV4ZmxvYXQvYmxvYi9tYXN0ZXIvaGV4ZmxvYXQuanNcbi8vUHJvdmlkZXM6IGNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZywgY2FtbF9zdHJfcmVwZWF0XG5mdW5jdGlvbiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCAoeCwgcHJlYywgc3R5bGUpIHtcbiAgaWYgKCFpc0Zpbml0ZSh4KSkge1xuICAgIGlmIChpc05hTih4KSkgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKFwibmFuXCIpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoKHggPiAwKT9cImluZmluaXR5XCI6XCItaW5maW5pdHlcIik7XG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8xOih4Pj0wKT8wOjE7XG4gIGlmKHNpZ24pIHggPSAteDtcbiAgdmFyIGV4cCA9IDA7XG4gIGlmICh4ID09IDApIHsgfVxuICBlbHNlIGlmICh4IDwgMSkge1xuICAgIHdoaWxlICh4IDwgMSAmJiBleHAgPiAtMTAyMikgIHsgeCAqPSAyOyBleHAtLSB9XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHggPj0gMikgeyB4IC89IDI7IGV4cCsrIH1cbiAgfVxuICB2YXIgZXhwX3NpZ24gPSBleHAgPCAwID8gJycgOiAnKyc7XG4gIHZhciBzaWduX3N0ciA9ICcnO1xuICBpZiAoc2lnbikgc2lnbl9zdHIgPSAnLSdcbiAgZWxzZSB7XG4gICAgc3dpdGNoKHN0eWxlKXtcbiAgICBjYXNlIDQzIC8qICcrJyAqLzogc2lnbl9zdHIgPSAnKyc7IGJyZWFrO1xuICAgIGNhc2UgMzIgLyogJyAnICovOiBzaWduX3N0ciA9ICcgJzsgYnJlYWs7XG4gICAgZGVmYXVsdDogYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChwcmVjID49IDAgJiYgcHJlYyA8IDEzKSB7XG4gICAgLyogSWYgYSBwcmVjaXNpb24gaXMgZ2l2ZW4sIGFuZCBpcyBzbWFsbCwgcm91bmQgbWFudGlzc2EgYWNjb3JkaW5nbHkgKi9cbiAgICB2YXIgY3N0ID0gTWF0aC5wb3coMixwcmVjICogNCk7XG4gICAgeCA9IE1hdGgucm91bmQoeCAqIGNzdCkgLyBjc3Q7XG4gIH1cbiAgdmFyIHhfc3RyID0geC50b1N0cmluZygxNik7XG4gIGlmKHByZWMgPj0gMCl7XG4gICAgdmFyIGlkeCA9IHhfc3RyLmluZGV4T2YoJy4nKTtcbiAgICBpZihpZHg8MCkge1xuICAgICAgeF9zdHIgKz0gJy4nICsgY2FtbF9zdHJfcmVwZWF0KHByZWMsICcwJyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHNpemUgPSBpZHgrMStwcmVjO1xuICAgICAgaWYoeF9zdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICAgICAgeF9zdHIgKz0gY2FtbF9zdHJfcmVwZWF0KHNpemUgLSB4X3N0ci5sZW5ndGgsICcwJyk7XG4gICAgICBlbHNlXG4gICAgICAgIHhfc3RyID0geF9zdHIuc3Vic3RyKDAsc2l6ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyAoc2lnbl9zdHIgKyAnMHgnICsgeF9zdHIgKyAncCcgKyBleHBfc2lnbiArIGV4cC50b1N0cmluZygxMCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgbG8gPSB4LmxvO1xuICB2YXIgbWkgPSB4Lm1pO1xuICB2YXIgaGkgPSB4LmhpO1xuICB2YXIgZXhwID0gKGhpICYgMHg3ZmZmKSA+PiA0O1xuICBpZiAoZXhwID09IDIwNDcpIHtcbiAgICBpZiAoKGxvfG1pfChoaSYweGYpKSA9PSAwKVxuICAgICAgcmV0dXJuIChoaSAmIDB4ODAwMCk/KC1JbmZpbml0eSk6SW5maW5pdHk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE5hTjtcbiAgfVxuICB2YXIgayA9IE1hdGgucG93KDIsLTI0KTtcbiAgdmFyIHJlcyA9IChsbyprK21pKSprKyhoaSYweGYpO1xuICBpZiAoZXhwID4gMCkge1xuICAgIHJlcyArPSAxNjtcbiAgICByZXMgKj0gTWF0aC5wb3coMixleHAtMTAyNyk7XG4gIH0gZWxzZVxuICAgIHJlcyAqPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgaWYgKGhpICYgMHg4MDAwKSByZXMgPSAtIHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2ludDY0X2FkZCwgY2FtbF9pbnQ2NF9zdWIsY2FtbF9pbnQ2NF9vZl9pbnQzMlxuZnVuY3Rpb24gY2FtbF9uZXh0YWZ0ZXJfZmxvYXQgKHgseSkge1xuICBpZihpc05hTih4KSB8fCBpc05hTih5KSkgcmV0dXJuIE5hTjtcbiAgaWYoeD09eSkgcmV0dXJuIHk7XG4gIGlmKHg9PTApe1xuICAgIGlmKHkgPCAwKVxuICAgICAgcmV0dXJuIC1NYXRoLnBvdygyLCAtMTA3NClcbiAgICBlbHNlXG4gICAgICByZXR1cm4gTWF0aC5wb3coMiwgLTEwNzQpXG4gIH1cbiAgdmFyIGJpdHMgPSBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoeCk7XG4gIHZhciBvbmUgPSBjYW1sX2ludDY0X29mX2ludDMyKDEpO1xuICBpZiAoKHg8eSkgPT0gKHg+MCkpXG4gICAgYml0cyA9IGNhbWxfaW50NjRfYWRkKGJpdHMsIG9uZSlcbiAgZWxzZVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X3N1YihiaXRzLCBvbmUpXG4gIHJldHVybiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoYml0cyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJ1bmNfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfdHJ1bmNfZmxvYXQoeCl7XG4gIHJldHVybiBNYXRoLnRydW5jKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyAoeCkge1xuICB2YXIgaW50MzJhID0gbmV3IEludDMyQXJyYXkoMSk7XG4gIGludDMyYVswXSA9IHg7XG4gIHZhciBmbG9hdDMyYSA9IG5ldyBGbG9hdDMyQXJyYXkoaW50MzJhLmJ1ZmZlcik7XG4gIHJldHVybiBmbG9hdDMyYVswXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jbGFzc2lmeV9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jbGFzc2lmeV9mbG9hdCAoeCkge1xuICBpZiAoaXNGaW5pdGUgKHgpKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUtMzA4KSByZXR1cm4gMDtcbiAgICBpZiAoeCAhPSAwKSByZXR1cm4gMTtcbiAgICByZXR1cm4gMjtcbiAgfVxuICByZXR1cm4gaXNOYU4oeCk/NDozO1xufVxuLy9Qcm92aWRlczogY2FtbF9tb2RmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX21vZGZfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIHZhciBuZWcgPSAoMS94KSA8IDA7XG4gICAgeCA9IE1hdGguYWJzKHgpO1xuICAgIHZhciBpID0gTWF0aC5mbG9vciAoeCk7XG4gICAgdmFyIGYgPSB4IC0gaTtcbiAgICBpZiAobmVnKSB7IGkgPSAtaTsgZiA9IC1mOyB9XG4gICAgcmV0dXJuIFswLCBmLCBpXTtcbiAgfVxuICBpZiAoaXNOYU4gKHgpKSByZXR1cm4gWzAsIE5hTiwgTmFOXTtcbiAgcmV0dXJuIFswLCAxL3gsIHhdO1xufVxuLy9Qcm92aWRlczogY2FtbF9sZGV4cF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sZGV4cF9mbG9hdCAoeCxleHApIHtcbiAgZXhwIHw9IDA7XG4gIGlmIChleHAgPiAxMDIzKSB7XG4gICAgZXhwIC09IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5vcm1hbFxuICAgICAgZXhwIC09IDEwMjM7XG4gICAgICB4ICo9IE1hdGgucG93KDIsIDEwMjMpO1xuICAgIH1cbiAgfVxuICBpZiAoZXhwIDwgLTEwMjMpIHtcbiAgICBleHAgKz0gMTAyMztcbiAgICB4ICo9IE1hdGgucG93KDIsIC0xMDIzKTtcbiAgfVxuICB4ICo9IE1hdGgucG93KDIsIGV4cCk7XG4gIHJldHVybiB4O1xufVxuLy9Qcm92aWRlczogY2FtbF9mcmV4cF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyXG5mdW5jdGlvbiBjYW1sX2ZyZXhwX2Zsb2F0ICh4KSB7XG4gIGlmICgoeCA9PSAwKSB8fCAhaXNGaW5pdGUoeCkpIHJldHVybiBbMCwgeCwgMF07XG4gIHZhciBuZWcgPSB4IDwgMDtcbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgdmFyIGV4cCA9IE1hdGgubWF4KC0xMDIzLCBqc29vX2Zsb29yX2xvZzIoeCkgKyAxKTtcbiAgeCAqPSBNYXRoLnBvdygyLC1leHApO1xuICB3aGlsZSAoeCA8IDAuNSkge1xuICAgIHggKj0gMjtcbiAgICBleHAtLTtcbiAgfVxuICB3aGlsZSAoeCA+PSAxKSB7XG4gICAgeCAqPSAwLjU7XG4gICAgZXhwKys7XG4gIH1cbiAgaWYgKG5lZykgeCA9IC0geDtcbiAgcmV0dXJuIFswLCB4LCBleHBdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X2NvbXBhcmUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfY29tcGFyZSAoeCwgeSkge1xuICBpZiAoeCA9PT0geSkgcmV0dXJuIDA7XG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xO1xuICBpZiAoeCA+IHkpIHJldHVybiAxO1xuICBpZiAoeCA9PT0geCkgcmV0dXJuIDE7XG4gIGlmICh5ID09PSB5KSByZXR1cm4gLTE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvcHlzaWduX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvcHlzaWduX2Zsb2F0ICh4LCB5KSB7XG4gIGlmICh5ID09IDApIHkgPSAxIC8geTtcbiAgeCA9IE1hdGguYWJzKHgpO1xuICByZXR1cm4gKHkgPCAwKT8oLXgpOng7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2lnbmJpdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaWduYml0X2Zsb2F0KHgpIHtcbiAgaWYgKHggPT0gMCkgeCA9IDEgLyB4O1xuICByZXR1cm4gKHggPCAwKT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXhwbTFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwbTFfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguZXhwbTEoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZXhwMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9leHAyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgucG93KDIsIHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzFwX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2xvZzFwX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMXAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cyX2Zsb2F0KHgpIHsgcmV0dXJuIE1hdGgubG9nMih4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9oeXBvdF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9oeXBvdF9mbG9hdCAoeCwgeSkgeyByZXR1cm4gTWF0aC5oeXBvdCh4LCB5KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxMF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxMF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5sb2cxMCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9jb3NoX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Nvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hY29zaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hY29zaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9zaW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3NpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hc2luaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hc2luaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF90YW5oX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX3RhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgudGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9hdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9hdGFuaF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5hdGFuaCh4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9yb3VuZF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9yb3VuZF9mbG9hdCAoeCkge1xuICBpZiAoeCA+PSAwKSB7XG4gICAgdmFyIHkgPSBNYXRoLmZsb29yKHgpO1xuICAgIHJldHVybiAoeCAtIHkgPj0gMC41KT8oeSArIDEpOnlcbiAgfSBlbHNlIHtcbiAgICB2YXIgeSA9IE1hdGguY2VpbCh4KTtcbiAgICByZXR1cm4gKHkgLSB4ID49IDAuNSk/KHkgLSAxKTp5XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfY2JydF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jYnJ0X2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNicnQoeCk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9lcmZfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXJmX2Zsb2F0KHgpIHtcbiAgdmFyIGExID0gMC4yNTQ4Mjk1OTI7XG4gIHZhciBhMiA9IC0wLjI4NDQ5NjczNjtcbiAgdmFyIGEzID0gMS40MjE0MTM3NDE7XG4gIHZhciBhNCA9IC0xLjQ1MzE1MjAyNztcbiAgdmFyIGE1ID0gMS4wNjE0MDU0Mjk7XG4gIHZhciBwID0gMC4zMjc1OTExO1xuXG4gIHZhciBzaWduID0gMTtcbiAgaWYgKHggPCAwKSB7XG4gICAgc2lnbiA9IC0xO1xuICB9XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgdmFyIHQgPSAxLjAgLyAoMS4wICsgcCAqIHgpO1xuICB2YXIgeSA9IDEuMCAtICgoKChhNSAqIHQgKyBhNCkgKiB0ICsgYTMpICogdCArIGEyKSAqIHQgKyBhMSkgKiB0ICogTWF0aC5leHAoLXggKiB4KTtcblxuICByZXR1cm4gc2lnbiAqIHk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmY19mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9lcmZfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfZXJmY19mbG9hdCh4KSB7XG4gIHJldHVybiAxIC0gY2FtbF9lcmZfZmxvYXQoeCk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9mbWFfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZm1hX2Zsb2F0KHgsIHksIHopIHtcbiAgdmFyIFNQTElUID0gTWF0aC5wb3coMiwgMjcpICsgMTtcbiAgdmFyIE1JTl9WQUxVRSA9IE1hdGgucG93KDIsIC0xMDIyKTtcbiAgdmFyIEVQU0lMT04gPSBNYXRoLnBvdygyLCAtNTIpO1xuICB2YXIgQyA9IDQxNjtcbiAgdmFyIEEgPSBNYXRoLnBvdygyLCArQyk7XG4gIHZhciBCID0gTWF0aC5wb3coMiwgLUMpO1xuXG4gIGZ1bmN0aW9uIG11bHRpcGx5IChhLCBiKSB7XG4gICAgdmFyIGF0ID0gU1BMSVQgKiBhO1xuICAgIHZhciBhaGkgPSBhdCAtIChhdCAtIGEpO1xuICAgIHZhciBhbG8gPSBhIC0gYWhpO1xuICAgIHZhciBidCA9IFNQTElUICogYjtcbiAgICB2YXIgYmhpID0gYnQgLSAoYnQgLSBiKTtcbiAgICB2YXIgYmxvID0gYiAtIGJoaTtcbiAgICB2YXIgcCA9IGEgKiBiO1xuICAgIHZhciBlID0gKChhaGkgKiBiaGkgLSBwKSArIGFoaSAqIGJsbyArIGFsbyAqIGJoaSkgKyBhbG8gKiBibG87XG4gICAgcmV0dXJuIHtcbiAgICAgIHA6IHAsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB2YXIgcyA9IGEgKyBiO1xuICAgIHZhciB2ID0gcyAtIGE7XG4gICAgdmFyIGUgPSAoYSAtIChzIC0gdikpICsgKGIgLSB2KTtcbiAgICByZXR1cm4ge1xuICAgICAgczogcyxcbiAgICAgIGU6IGVcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIGFkanVzdCAoeCwgeSkge1xuICAgIHJldHVybiB4ICE9PSAwICYmIHkgIT09IDAgJiYgU1BMSVQgKiB4IC0gKFNQTElUICogeCAtIHgpID09PSB4ID8geCAqICgxICsgKHggPCAwID8gLTEgOiArMSkgKiAoeSA8IDAgPyAtMSA6ICsxKSAqIEVQU0lMT04pIDogeDtcbiAgfTtcblxuICBpZiAoeCA9PT0gMCB8fCB4ICE9PSB4IHx8IHggPT09ICsxIC8gMCB8fCB4ID09PSAtMSAvIDAgfHxcbiAgICAgIHkgPT09IDAgfHwgeSAhPT0geSB8fCB5ID09PSArMSAvIDAgfHwgeSA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICsgejtcbiAgfVxuICBpZiAoeiA9PT0gMCkge1xuICAgIHJldHVybiB4ICogeTtcbiAgfVxuICBpZiAoeiAhPT0geiB8fCB6ID09PSArMSAvIDAgfHwgeiA9PT0gLTEgLyAwKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cblxuICB2YXIgc2NhbGUgPSAxO1xuICB3aGlsZSAoTWF0aC5hYnMoeCkgPiBBKSB7XG4gICAgc2NhbGUgKj0gQTtcbiAgICB4ICo9IEI7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeSAqPSBCO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMSAvIDApIHtcbiAgICByZXR1cm4geCAqIHkgKiBzY2FsZTtcbiAgfVxuICB3aGlsZSAoTWF0aC5hYnMoeCkgPCBCKSB7XG4gICAgc2NhbGUgKj0gQjtcbiAgICB4ICo9IEE7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHkpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeSAqPSBBO1xuICB9XG4gIGlmIChzY2FsZSA9PT0gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHhzID0geDtcbiAgdmFyIHlzID0geTtcbiAgdmFyIHpzID0geiAvIHNjYWxlO1xuXG4gIGlmIChNYXRoLmFicyh6cykgPiBNYXRoLmFicyh4cyAqIHlzKSAqIDQgLyBFUFNJTE9OKSB7XG4gICAgcmV0dXJuIHo7XG4gIH1cbiAgaWYgKE1hdGguYWJzKHpzKSA8IE1hdGguYWJzKHhzICogeXMpICogRVBTSUxPTiAvIDQgKiBFUFNJTE9OIC8gNCkge1xuICAgIHpzID0gKHogPCAwID8gLTEgOiArMSkgKiBNSU5fVkFMVUU7XG4gIH1cblxuICB2YXIgeHkgPSBtdWx0aXBseSh4cywgeXMpO1xuICB2YXIgcyA9IGFkZCh4eS5wLCB6cyk7XG4gIHZhciB1ID0gYWRkKHh5LmUsIHMuZSk7XG4gIHZhciBpID0gYWRkKHMucywgdS5zKTtcblxuICB2YXIgZiA9IGkucyArIGFkanVzdChpLmUsIHUuZSk7XG4gIGlmIChmID09PSAwKSB7XG4gICAgcmV0dXJuIGY7XG4gIH1cblxuICB2YXIgZnMgPSBmICogc2NhbGU7XG4gIGlmIChNYXRoLmFicyhmcykgPiBNSU5fVkFMVUUpIHtcbiAgICByZXR1cm4gZnM7XG4gIH1cblxuICAvLyBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZXJlIHdhcyBleHRyYSByb3VuZGluZyBmb3IgYSBkZW5vcm1hbGl6ZWQgdmFsdWUuXG4gIHJldHVybiBmcyArIGFkanVzdChmIC0gZnMgLyBzY2FsZSwgaS5lKSAqIHNjYWxlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2Zsb2F0IChmbXQsIHgpIHtcbiAgZnVuY3Rpb24gdG9GaXhlZCh4LGRwKSB7XG4gICAgaWYgKE1hdGguYWJzKHgpIDwgMS4wKSB7XG4gICAgICByZXR1cm4geC50b0ZpeGVkKGRwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGUgPSBwYXJzZUludCh4LnRvU3RyaW5nKCkuc3BsaXQoJysnKVsxXSk7XG4gICAgICBpZiAoZSA+IDIwKSB7XG4gICAgICAgIGUgLT0gMjA7XG4gICAgICAgIHggLz0gTWF0aC5wb3coMTAsZSk7XG4gICAgICAgIHggKz0gKG5ldyBBcnJheShlKzEpKS5qb2luKCcwJyk7XG4gICAgICAgIGlmKGRwID4gMCkge1xuICAgICAgICAgIHggPSB4ICsgJy4nICsgKG5ldyBBcnJheShkcCsxKSkuam9pbignMCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuICAgICAgZWxzZSByZXR1cm4geC50b0ZpeGVkKGRwKVxuICAgIH1cbiAgfVxuICB2YXIgcywgZiA9IGNhbWxfcGFyc2VfZm9ybWF0KGZtdCk7XG4gIHZhciBwcmVjID0gKGYucHJlYyA8IDApPzY6Zi5wcmVjO1xuICBpZiAoeCA8IDAgfHwgKHggPT0gMCAmJiAxL3ggPT0gLUluZmluaXR5KSkgeyBmLnNpZ24gPSAtMTsgeCA9IC14OyB9XG4gIGlmIChpc05hTih4KSkgeyBzID0gXCJuYW5cIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZSBpZiAoIWlzRmluaXRlKHgpKSB7IHMgPSBcImluZlwiOyBmLmZpbGxlciA9ICcgJzsgfVxuICBlbHNlXG4gICAgc3dpdGNoIChmLmNvbnYpIHtcbiAgICBjYXNlICdlJzpcbiAgICAgIHZhciBzID0geC50b0V4cG9uZW50aWFsKHByZWMpO1xuICAgICAgLy8gZXhwb25lbnQgc2hvdWxkIGJlIGF0IGxlYXN0IHR3byBkaWdpdHNcbiAgICAgIHZhciBpID0gcy5sZW5ndGg7XG4gICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2YnOlxuICAgICAgcyA9IHRvRml4ZWQoeCwgcHJlYyk7IGJyZWFrO1xuICAgIGNhc2UgJ2cnOlxuICAgICAgcHJlYyA9IHByZWM/cHJlYzoxO1xuICAgICAgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjIC0gMSk7XG4gICAgICB2YXIgaiA9IHMuaW5kZXhPZignZScpO1xuICAgICAgdmFyIGV4cCA9ICtzLnNsaWNlKGogKyAxKTtcbiAgICAgIGlmIChleHAgPCAtNCB8fCB4ID49IDFlMjEgfHwgeC50b0ZpeGVkKDApLmxlbmd0aCA+IHByZWMpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICB2YXIgaSA9IGogLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSAnLicpIGktLTtcbiAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpICsgcy5zbGljZShqKTtcbiAgICAgICAgaSA9IHMubGVuZ3RoO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSAtIDMpID09ICdlJylcbiAgICAgICAgICBzID0gcy5zbGljZSAoMCwgaSAtIDEpICsgJzAnICsgcy5zbGljZSAoaSAtIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBwID0gcHJlYztcbiAgICAgICAgaWYgKGV4cCA8IDApIHsgcCAtPSBleHAgKyAxOyBzID0geC50b0ZpeGVkKHApOyB9XG4gICAgICAgIGVsc2Ugd2hpbGUgKHMgPSB4LnRvRml4ZWQocCksIHMubGVuZ3RoID4gcHJlYyArIDEpIHAtLTtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAvLyByZW1vdmUgdHJhaWxpbmcgemVyb2VzXG4gICAgICAgICAgdmFyIGkgPSBzLmxlbmd0aCAtIDE7IHdoaWxlIChzLmNoYXJBdChpKSA9PSAnMCcpIGktLTtcbiAgICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSArIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gIHJldHVybiBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0cmluZyhzKSB7XG4gIHZhciByZXM7XG4gIHMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpXG4gIHJlcyA9ICtzO1xuICBpZiAoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgcmV0dXJuIHJlcztcbiAgcyA9IHMucmVwbGFjZSgvXy9nLFwiXCIpO1xuICByZXMgPSArcztcbiAgaWYgKCgocy5sZW5ndGggPiAwKSAmJiAocmVzID09PSByZXMpKSB8fCAvXlsrLV0/bmFuJC9pLnRlc3QocykpIHJldHVybiByZXM7XG4gIHZhciBtID0gL14gKihbKy1dPykweChbMC05YS1mXSspXFwuPyhbMC05YS1mXSopKHAoWystXT9bMC05XSspKT8vaS5leGVjKHMpO1xuICAvLyAgICAgICAgICAxICAgICAgICAyICAgICAgICAgICAgIDMgICAgICAgICAgIDVcbiAgaWYobSl7XG4gICAgdmFyIG0zID0gbVszXS5yZXBsYWNlKC8wKyQvLCcnKTtcbiAgICB2YXIgbWFudGlzc2EgPSBwYXJzZUludChtWzFdICsgbVsyXSArIG0zLCAxNik7XG4gICAgdmFyIGV4cG9uZW50ID0gKG1bNV18MCkgLSA0Km0zLmxlbmd0aDtcbiAgICByZXMgPSBtYW50aXNzYSAqIE1hdGgucG93KDIsIGV4cG9uZW50KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmKC9eXFwrP2luZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiBJbmZpbml0eTtcbiAgaWYoL14taW5mKGluaXR5KT8kL2kudGVzdChzKSkgcmV0dXJuIC1JbmZpbml0eTtcbiAgY2FtbF9mYWlsd2l0aChcImZsb2F0X29mX3N0cmluZ1wiKTtcbn1cbiIsIi8qXG5UbyBkZWFsIHdpdGggZWZmZWN0cywgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IGlzIGludHVpdGl2ZWx5IGNvbXBvc2VkIG9mXG5hIHN0YWNrIG9mIGZpYmVycy4gRWFjaCBmaWJlciBoYXMgYSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb25cbihvbmUtYXJndW1lbnQgSmF2YVNjcmlwdCBmdW5jdGlvbiksIGEgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZFxuYSB0cmlwbGUgb2YgaGFuZGxlcnMsIHdoaWNoIGFyZSBpbnZva2VkIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXNcbihlaXRoZXIgd2l0aCBhIHZhbHVlIG9yIGFuIGV4Y2VwdGlvbikgb3Igd2hlbiBhbiBlZmZlY3QgaXMgcGVyZm9ybWVkLlxuVGhlIGxvdy1sZXZlbCBjb250aW51YXRpb24gb2YgdGhlIHRvcG1vc3QgZmliZXIgKHdoaWNoIGlzIGN1cnJlbnRseVxuZXhlY3V0aW5nKSBpcyBwYXNzZWQgZnJvbSBmdW5jdGlvbiB0byBmdW5jdGlvbiBhcyBhbiBhZGRpdGlvbmFsXG5hcmd1bWVudC4gSXRzIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBpcyBzdG9yZWQgaW5cbltjYW1sX2V4bl9zdGFja10uIEV4Y2VwdGlvbiBoYW5kbGVycyBhcmUgcHVzaGVkIGludG8gdGhpcyBzdGFjayB3aGVuXG5lbnRlcmluZyBhIFt0cnkgLi4uIHdpdGggLi4uXSBhbmQgcG9wcGVkIG9uIGV4aXQuIFRoZW4sIGhhbmRsZXJzIGFuZFxudGhlIHJlbWFpbmluZyBmaWJlcnMgYXJlIHN0b3JlZCBpbiBbY2FtbF9maWJlcl9zdGFja10uIFRvIGluc3RhbGwgYW5cbmVmZmVjdCBoYW5kbGVyLCB3ZSBwdXNoIGEgbmV3IGZpYmVyIGludG8gdGhlIGV4ZWN1dGlvbiBjb250ZXh0LlxuXG5XZSBoYXZlIGJhc2ljYWxseSB0aGUgZm9sbG93aW5nIHR5cGUgZm9yIHJlaWZpZWQgY29udGludWF0aW9ucyAodHlwZVxuW2NvbnRpbnVhdGlvbl0gaW4gbW9kdWxlIFtFZmZlY3RdIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KTpcblxuICB0eXBlICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiA9ICgnYSwgJ2IpIHN0YWNrIHJlZlxuXG4gIGFuZCAoXywgXykgc3RhY2sgPVxuICAgICAgQ29ucyA6ICgnYiAtPiB1bml0KSAqICAgICAgICAgICAgICgqIGxvdy1sZXZlbCBjb250aW51YXRpb24gKilcbiAgICAgICAgICAgICAoZXhuIC0+IHVuaXQpIGxpc3QgKiAgICAgICAoKiBleGNlcHRpb24gaGFuZGxlcnMgKilcbiAgICAgICAgICAgICAoJ2IsICdjKSBoYW5kbGVyICpcbiAgICAgICAgICAgICAoJ2EsICdiKSBzdGFja1xuICAgICAgICAgICAgIC0+ICgnYSwgJ2MpIHN0YWNrXG4gICAgfCBFbXB0eSA6ICgnYSwgJ2EpIHN0YWNrXG5cbiAgYW5kICgnYSwnYikgaGFuZGxlciA9ICAgKCogQXMgaW4gbW9kdWxlIEVmZmVjdCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5ICopXG4gICAgeyByZXRjOiAnYSAtPiAnYjtcbiAgICAgIGV4bmM6IGV4biAtPiAnYjtcbiAgICAgIGVmZmM6ICdjLidjIEVmZmVjdC50IC0+ICgoJ2MsJ2IpIGNvbnRpbnVhdGlvbiAtPiAnYikgb3B0aW9uIH1cblxuQ29udGludWF0aW9ucyBhcmUgb25lLXNob3QuIEEgY29udGludWF0aW9uIFtyZWYgRW1wdHldIGhhcyBhbHJlYWR5XG5iZWVuIHJlc3VtZWQuXG5cbkEgY29udGludWF0aW9uIGlzIGJhc2ljYWxseSBjb21wb3NlZCBvZiBhIGxpc3Qgb2YgZmliZXJzLCB3aGljaCBlYWNoXG5oYXMgaXRzIGxvdy1sZXZlbCBjb250aW51YXRpb24sIGl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgYW5kIGFcbnRyaXBsZSBvZiBoYW5kbGVycyB0byBkZWFsIHdpdGggd2hlbiB0aGUgZmliZXIgdGVybWluYXRlcyBvciBhblxuZWZmZWN0IGlzIHBlcmZvcm1lZC4gV2hlbiByZXN1bWluZyBhIGNvbnRpbnVhdGlvbiwgdGhlIGlubmVybW9zdCBmaWJlclxuaXMgcmVzdW1lZCBmaXJzdC5cblxuVGhlIGhhbmRsZXJzIGFyZSBDUFMtdHJhbnNmb3JtZWQgZnVuY3Rpb25zOiB0aGV5IGFjdHVhbGx5IHRha2UgYW5cbmFkZGl0aW9uYWwgcGFyYW1ldGVyIHdoaWNoIGlzIHRoZSBjdXJyZW50IGxvdy1sZXZlbCBjb250aW51YXRpb24uXG4qL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBpcyBhbiBPQ2FtbCBsaXN0IG9mIGV4Y2VwdGlvbiBoYW5kbGVyc1xudmFyIGNhbWxfZXhuX3N0YWNrID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wdXNoX3RyYXBcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3B1c2hfdHJhcChoYW5kbGVyKSB7XG4gIGNhbWxfZXhuX3N0YWNrPVswLGhhbmRsZXIsY2FtbF9leG5fc3RhY2tdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BvcF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfdHJhcCgpIHtcbiAgaWYgKCFjYW1sX2V4bl9zdGFjaykgcmV0dXJuIGZ1bmN0aW9uKHgpe3Rocm93IHg7fVxuICB2YXIgaCA9IGNhbWxfZXhuX3N0YWNrWzFdO1xuICBjYW1sX2V4bl9zdGFjaz1jYW1sX2V4bl9zdGFja1syXTtcbiAgcmV0dXJuIGhcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuLy8gVGhpcyBoYXMgdGhlIHNoYXBlIHtoLCByOntrLCB4LCBlfX0gd2hlcmUgaCBpcyBhIHRyaXBsZSBvZiBoYW5kbGVyc1xuLy8gKHNlZSBlZmZlY3QuanMpIGFuZCBrLCB4IGFuZCBlIGFyZSB0aGUgc2F2ZWQgY29udGludWF0aW9uLFxuLy8gZXhjZXB0aW9uIHN0YWNrIGFuZCBmaWJlciBzdGFjayBvZiB0aGUgcGFyZW50IGZpYmVyLlxudmFyIGNhbWxfZmliZXJfc3RhY2s7XG5cbi8vUHJvdmlkZXM6Y2FtbF9yZXN1bWVfc3RhY2tcbi8vUmVxdWlyZXM6IGNhbWxfbmFtZWRfdmFsdWUsIGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3Jlc3VtZV9zdGFjayhzdGFjaywgaykge1xuICBpZiAoIXN0YWNrKSBjYW1sX3JhaXNlX2NvbnN0YW50XG4gICAgICAgICAgICAgICAgIChjYW1sX25hbWVkX3ZhbHVlKFwiRWZmZWN0LkNvbnRpbnVhdGlvbl9hbHJlYWR5X3Jlc3VtZWRcIikpO1xuICAvLyBVcGRhdGUgdGhlIGV4ZWN1dGlvbiBjb250ZXh0IHdpdGggdGhlIHN0YWNrIG9mIGZpYmVycyBpbiBbc3RhY2tdIGluXG4gIC8vIG9yZGVyIHRvIHJlc3VtZSB0aGUgY29udGludWF0aW9uXG4gIGRvIHtcbiAgICBjYW1sX2ZpYmVyX3N0YWNrID1cbiAgICAgIHtoOnN0YWNrWzNdLCByOntrOmssIHg6Y2FtbF9leG5fc3RhY2ssIGU6Y2FtbF9maWJlcl9zdGFja319O1xuICAgIGsgPSBzdGFja1sxXTtcbiAgICBjYW1sX2V4bl9zdGFjayA9IHN0YWNrWzJdO1xuICAgIHN0YWNrID0gc3RhY2tbNF07XG4gIH0gd2hpbGUgKHN0YWNrKVxuICByZXR1cm4gaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfZmliZXJcbi8vUmVxdWlyZXM6IGNhbWxfZXhuX3N0YWNrLCBjYW1sX2ZpYmVyX3N0YWNrXG4vL0lmOiBlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX3BvcF9maWJlcigpIHtcbiAgLy8gTW92ZSB0byB0aGUgcGFyZW50IGZpYmVyLCByZXR1cm5pbmcgdGhlIHBhcmVudCdzIGxvdy1sZXZlbCBjb250aW51YXRpb25cbiAgdmFyIHJlbSA9IGNhbWxfZmliZXJfc3RhY2sucjtcbiAgY2FtbF9leG5fc3RhY2sgPSByZW0ueDtcbiAgY2FtbF9maWJlcl9zdGFjayA9IHJlbS5lO1xuICByZXR1cm4gcmVtLms7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGVyZm9ybV9lZmZlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfcG9wX2ZpYmVyLCBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoLCBjYW1sX3RyYW1wb2xpbmVfcmV0dXJuLCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wZXJmb3JtX2VmZmVjdChlZmYsIGNvbnQsIGswKSB7XG4gIC8vIEFsbG9jYXRlIGEgY29udGludWF0aW9uIGlmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBvbmVcbiAgaWYgKCFjb250KSBjb250ID0gWzI0NSAvKmNvbnRpbnVhdGlvbiovLCAwXTtcbiAgLy8gR2V0IGN1cnJlbnQgZWZmZWN0IGhhbmRsZXJcbiAgdmFyIGhhbmRsZXIgPSBjYW1sX2ZpYmVyX3N0YWNrLmhbM107XG4gIC8vIENvbnMgdGhlIGN1cnJlbnQgZmliZXIgb250byB0aGUgY29udGludWF0aW9uOlxuICAvLyAgIGNvbnQgOj0gQ29ucyAoaywgZXhuX3N0YWNrLCBoYW5kbGVycywgIWNvbnQpXG4gIGNvbnRbMV0gPSBbMCxrMCxjYW1sX2V4bl9zdGFjayxjYW1sX2ZpYmVyX3N0YWNrLmgsY29udFsxXV07XG4gIC8vIE1vdmUgdG8gcGFyZW50IGZpYmVyIGFuZCBleGVjdXRlIHRoZSBlZmZlY3QgaGFuZGxlciB0aGVyZVxuICAvLyBUaGUgaGFuZGxlciBpcyBkZWZpbmVkIGluIFN0ZGxpYi5FZmZlY3QsIHNvIHdlIGtub3cgdGhhdCB0aGUgYXJpdHkgbWF0Y2hlc1xuICB2YXIgazEgPSBjYW1sX3BvcF9maWJlcigpO1xuICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2hhbmRsZXIoZWZmLGNvbnQsazEsazEpXG4gICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihoYW5kbGVyLFtlZmYsY29udCxrMSxrMV0pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9maWJlcl9zdGFjaywgY2FtbF9jYWxsX2dlbiwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVyblxuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9hbGxvY19zdGFjayhodiwgaHgsIGhmKSB7XG4gIGZ1bmN0aW9uIGNhbGwoaSwgeCkge1xuICAgIHZhciBmPWNhbWxfZmliZXJfc3RhY2suaFtpXTtcbiAgICB2YXIgYXJncyA9IFt4LCBjYW1sX3BvcF9maWJlcigpXTtcbiAgICByZXR1cm4gY2FtbF9zdGFja19jaGVja19kZXB0aCgpP2NhbWxfY2FsbF9nZW4oZixhcmdzKVxuICAgICAgICAgICA6Y2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpO1xuICB9XG4gIGZ1bmN0aW9uIGh2YWwoeCkge1xuICAgIC8vIENhbGwgW2h2XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMSwgeCk7XG4gIH1cbiAgZnVuY3Rpb24gaGV4bihlKSB7XG4gICAgLy8gQ2FsbCBbaHhdIGluIHRoZSBwYXJlbnQgZmliZXJcbiAgICByZXR1cm4gY2FsbCgyLCBlKTtcbiAgfVxuICByZXR1cm4gWzAsIGh2YWwsIFswLCBoZXhuLCAwXSwgWzAsIGh2LCBoeCwgaGZdLCAwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9JZjogIWVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXG5mdW5jdGlvbiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCkge1xuICB2YXIgc3RhY2s9Y29udFsxXTtcbiAgY29udFsxXT0wO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGNcbi8vUmVxdWlyZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX2FuZF91cGRhdGVfaGFuZGxlcl9ub2V4Yyhjb250LCBodmFsLCBoZXhuLCBoZWZmKSB7XG4gIHZhciBzdGFjayA9IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Yyhjb250KTtcbiAgc3RhY2tbM10gPSBbMCwgaHZhbCwgaGV4biwgaGVmZl07XG4gIHJldHVybiBzdGFjaztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1xuZnVuY3Rpb24gY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayAoKSB7IHJldHVybiBbMF07IH1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fbmV3XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9uZXcodW5pdCl7XG4gICAgcmV0dXJuIHtjb25kaXRpb246MX07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3dhaXRcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX3dhaXQodCxtdXRleHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3RcbmZ1bmN0aW9uIGNhbWxfbWxfY29uZGl0aW9uX2Jyb2FkY2FzdCh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsXG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9zaWduYWwodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fZWZmZWN0X25vdF9zdXBwb3J0ZWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vIUlmOiBlZmZlY3RzXG5mdW5jdGlvbiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkKCl7XG4gIGNhbWxfZmFpbHdpdGgoXCJFZmZlY3QgaGFuZGxlcnMgYXJlIG5vdCBzdXBwb3J0ZWRcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MgIT09ICd1bmRlZmluZWQnXG4gICAgICAmJiB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzLnZlcnNpb25zICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucy5ub2RlICE9PSAndW5kZWZpbmVkJylcbn1cbi8vUHJvdmlkZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBmc19ub2RlX3N1cHBvcnRlZCAoKSB7XG4gIHJldHVybiBmYWxzZVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9SZXF1aXJlczogTWxOb2RlRmQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX3dpdGhfYXJnc1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKHJvb3QpIHtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLm5tID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gKHRoaXMucm9vdCArIG5hbWUpO1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZXhpc3RzU3luYyh0aGlzLm5tKG5hbWUpKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0ZpbGUoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsIG1vZGUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLm1rZGlyU3luYyh0aGlzLm5tKG5hbWUpLHttb2RlOm1vZGV9KTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJtZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMucm1kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiAwXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5yZWFkZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNEaXJlY3RvcnkoKT8xOjA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGIgPSB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICAgIHRoaXMuZnMudW5saW5rU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gYjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZiwgcmFpc2VfdW5peCkge1xuICB2YXIgY29uc3RzID0gcmVxdWlyZSgnY29uc3RhbnRzJyk7XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGtleSBpbiBmKXtcbiAgICBzd2l0Y2goa2V5KXtcbiAgICBjYXNlIFwicmRvbmx5XCIgIDogcmVzIHw9IGNvbnN0cy5PX1JET05MWTsgYnJlYWs7XG4gICAgY2FzZSBcIndyb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19XUk9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJhcHBlbmRcIiAgOlxuICAgICAgcmVzIHw9IGNvbnN0cy5PX1dST05MWSB8IGNvbnN0cy5PX0FQUEVORDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjcmVhdGVcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0NSRUFUOyAgICBicmVhaztcbiAgICBjYXNlIFwidHJ1bmNhdGVcIiA6IHJlcyB8PSBjb25zdHMuT19UUlVOQzsgICAgYnJlYWs7XG4gICAgY2FzZSBcImV4Y2xcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fRVhDTDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiaW5hcnlcIiAgIDogcmVzIHw9IGNvbnN0cy5PX0JJTkFSWTsgICBicmVhaztcbiAgICBjYXNlIFwidGV4dFwiICAgICA6IHJlcyB8PSBjb25zdHMuT19URVhUOyAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm5vbmJsb2NrXCIgOiByZXMgfD0gY29uc3RzLk9fTk9OQkxPQ0s7IGJyZWFrO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHZhciBmZCA9IHRoaXMuZnMub3BlblN5bmModGhpcy5ubShuYW1lKSwgcmVzKTtcbiAgICB2YXIgaXNDaGFyYWN0ZXJEZXZpY2UgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKS5pc0NoYXJhY3RlckRldmljZSgpO1xuICAgIGYuaXNDaGFyYWN0ZXJEZXZpY2UgPSBpc0NoYXJhY3RlckRldmljZTtcbiAgICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlbmFtZSA9IGZ1bmN0aW9uKG8sIG4sIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJlbmFtZVN5bmModGhpcy5ubShvKSwgdGhpcy5ubShuKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmxzdGF0ID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBqc19zdGF0cyA9IHRoaXMuZnMubHN0YXRTeW5jKHRoaXMubm0obmFtZSkpO1xuICAgIHJldHVybiB0aGlzLnN0YXRzX2Zyb21fanMoanNfc3RhdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN5bWxpbmsgPSBmdW5jdGlvbih0b19kaXIsIHRhcmdldCwgcGF0aCwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHRoaXMuZnMuc3ltbGlua1N5bmModGhpcy5ubSh0YXJnZXQpLCB0aGlzLm5tKHBhdGgpLCB0b19kaXIgPyAnZGlyJyA6ICdmaWxlJyk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUucmVhZGxpbmsgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGxpbmsgPSB0aGlzLmZzLnJlYWRsaW5rU3luYyh0aGlzLm5tKG5hbWUpLCAndXRmOCcpO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhsaW5rKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLm9wZW5kaXJTeW5jKHRoaXMubm0obmFtZSkpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJhaXNlX25vZGVqc19lcnJvciA9IGZ1bmN0aW9uKGVyciwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoXCJVbml4LlVuaXhfZXJyb3JcIik7XG4gIGlmIChyYWlzZV91bml4ICYmIHVuaXhfZXJyb3IpIHtcbiAgICB2YXIgYXJncyA9IG1ha2VfdW5peF9lcnJfYXJncyhlcnIuY29kZSwgZXJyLnN5c2NhbGwsIGVyci5wYXRoLCBlcnIuZXJybm8pO1xuICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zdGF0c19mcm9tX2pzID0gZnVuY3Rpb24oanNfc3RhdHMpIHtcbiAgLyogPT09VW5peC5maWxlX2tpbmQ9PT1cbiAgICogdHlwZSBmaWxlX2tpbmQgPVxuICAgKiAgICAgU19SRUcgICAgICAgICAgICAgICAgICAgICAgICgqKiBSZWd1bGFyIGZpbGUgKilcbiAgICogICB8IFNfRElSICAgICAgICAgICAgICAgICAgICAgICAoKiogRGlyZWN0b3J5ICopXG4gICAqICAgfCBTX0NIUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIENoYXJhY3RlciBkZXZpY2UgKilcbiAgICogICB8IFNfQkxLICAgICAgICAgICAgICAgICAgICAgICAoKiogQmxvY2sgZGV2aWNlICopXG4gICAqICAgfCBTX0xOSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIFN5bWJvbGljIGxpbmsgKilcbiAgICogICB8IFNfRklGTyAgICAgICAgICAgICAgICAgICAgICAoKiogTmFtZWQgcGlwZSAqKVxuICAgKiAgIHwgU19TT0NLICAgICAgICAgICAgICAgICAgICAgICgqKiBTb2NrZXQgKilcbiAgICovXG4gIHZhciBmaWxlX2tpbmQ7XG4gIGlmIChqc19zdGF0cy5pc0ZpbGUoKSkge1xuICAgIGZpbGVfa2luZCA9IDA7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVfa2luZCA9IDE7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDI7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNCbG9ja0RldmljZSgpKSB7XG4gICAgZmlsZV9raW5kID0gMztcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgZmlsZV9raW5kID0gNDtcbiAgfSBlbHNlIGlmIChqc19zdGF0cy5pc0ZJRk8oKSkge1xuICAgIGZpbGVfa2luZCA9IDU7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTb2NrZXQoKSkge1xuICAgIGZpbGVfa2luZCA9IDY7XG4gIH1cbiAgLyogPT09VW5peC5zdGF0cz09PVxuICAgKiB0eXBlIHN0YXRzID1cbiAgICogIHsgc3RfZGV2IDogaW50OyAgICAgICAgICAgICAgICgqKiBEZXZpY2UgbnVtYmVyICopXG4gICAqICAgIHN0X2lubyA6IGludDsgICAgICAgICAgICAgICAoKiogSW5vZGUgbnVtYmVyICopXG4gICAqICAgIHN0X2tpbmQgOiBmaWxlX2tpbmQ7ICAgICAgICAoKiogS2luZCBvZiB0aGUgZmlsZSAqKVxuICAgKiAgICBzdF9wZXJtIDogZmlsZV9wZXJtOyAgICAgICAgKCoqIEFjY2VzcyByaWdodHMgKilcbiAgICogICAgc3RfbmxpbmsgOiBpbnQ7ICAgICAgICAgICAgICgqKiBOdW1iZXIgb2YgbGlua3MgKilcbiAgICogICAgc3RfdWlkIDogaW50OyAgICAgICAgICAgICAgICgqKiBVc2VyIGlkIG9mIHRoZSBvd25lciAqKVxuICAgKiAgICBzdF9naWQgOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIEdyb3VwIElEIG9mIHRoZSBmaWxlJ3MgZ3JvdXAgKilcbiAgICogICAgc3RfcmRldiA6IGludDsgICAgICAgICAgICAgICgqKiBEZXZpY2UgSUQgKGlmIHNwZWNpYWwgZmlsZSkgKilcbiAgICogICAgc3Rfc2l6ZSA6IGludDsgICAgICAgICAgICAgICgqKiBTaXplIGluIGJ5dGVzICopXG4gICAqICAgIHN0X2F0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBhY2Nlc3MgdGltZSAqKVxuICAgKiAgICBzdF9tdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgbW9kaWZpY2F0aW9uIHRpbWUgKilcbiAgICogICAgc3RfY3RpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IHN0YXR1cyBjaGFuZ2UgdGltZSAqKVxuICAgKiAgfVxuICAgKi9cbiAgcmV0dXJuIEJMT0NLKFxuICAgIDAsXG4gICAganNfc3RhdHMuZGV2LFxuICAgIGpzX3N0YXRzLmlubyxcbiAgICBmaWxlX2tpbmQsXG4gICAganNfc3RhdHMubW9kZSxcbiAgICBqc19zdGF0cy5ubGluayxcbiAgICBqc19zdGF0cy51aWQsXG4gICAganNfc3RhdHMuZ2lkLFxuICAgIGpzX3N0YXRzLnJkZXYsXG4gICAganNfc3RhdHMuc2l6ZSxcbiAgICBqc19zdGF0cy5hdGltZU1zLFxuICAgIGpzX3N0YXRzLm10aW1lTXMsXG4gICAganNfc3RhdHMuY3RpbWVNc1xuICApO1xufVxuXG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sTm9kZURldmljZVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRGV2aWNlKCkge1xufVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9SZXF1aXJlczogTWxGaWxlLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZywgY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcywgY2FtbF9ieXRlc19zZXQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbE5vZGVGZChmZCwgZmxhZ3Mpe1xuICB0aGlzLmZzID0gcmVxdWlyZSgnZnMnKTtcbiAgdGhpcy5mZCA9IGZkO1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbE5vZGVGZC5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxOb2RlRmQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxOb2RlRmQ7XG5cbk1sTm9kZUZkLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5mdHJ1bmNhdGVTeW5jKHRoaXMuZmQsbGVufDApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuZnN0YXRTeW5jKHRoaXMuZmQpLnNpemU7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1ZixidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHRoaXMuZnMud3JpdGVTeW5jKHRoaXMuZmQsIGJ1ZiwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbiwgb2Zmc2V0KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG4gIHJldHVybiAwO1xufVxuTWxOb2RlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYSxidWZfb2Zmc2V0LGxlbil7XG4gIHRyeSB7XG4gICAgaWYodGhpcy5mbGFncy5pc0NoYXJhY3RlckRldmljZSlcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4pO1xuICAgIGVsc2VcbiAgICAgIHZhciByZWFkID0gdGhpcy5mcy5yZWFkU3luYyh0aGlzLmZkLCBhLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gICAgcmV0dXJuIHJlYWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxufVxuTWxOb2RlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKXtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLmNsb3NlU3luYyh0aGlzLmZkKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVGZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gTWxOb2RlRmQoKXtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL1JlcXVpcmVzOiBNbE5vZGVGZFxuZnVuY3Rpb24gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3Mpe1xuICBpZihmbGFncy5uYW1lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBmcyA9IHJlcXVpcmUoXCJmc1wiKTtcbiAgICAgIHZhciBmZDIgPSBmcy5vcGVuU3luYyhmbGFncy5uYW1lLCBcInJzXCIpO1xuICAgICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZDIsIGZsYWdzKTtcbiAgICB9IGNhdGNoKGUpIHsgIH1cbiAgfVxuICByZXR1cm4gbmV3IE1sTm9kZUZkKGZkLCBmbGFncyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZFxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIER1bW15IGZpbGVzeXN0ZW1cblxuLy9Qcm92aWRlczogY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKXtcbiAgcmV0dXJuIChuYW1lLnNsaWNlKC0xKSAhPT0gXCIvXCIpID8gKG5hbWUgKyBcIi9cIikgOiBuYW1lO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3RyYWlsaW5nX3NsYXNoLCBmc19ub2RlX3N1cHBvcnRlZFxuaWYoZnNfbm9kZV9zdXBwb3J0ZWQgKCkgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QpXG4gIHZhciBjYW1sX2N1cnJlbnRfZGlyID0gZ2xvYmFsVGhpcy5wcm9jZXNzLmN3ZCgpLnJlcGxhY2UoL1xcXFwvZywnLycpO1xuZWxzZVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9ICBcIi9zdGF0aWNcIjtcbmNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKGNhbWxfY3VycmVudF9kaXIpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9yb290XG4vL1JlcXVpcmVzOiBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX2dldF9yb290KHBhdGgpe1xuICB2YXIgeCA9IHBhdGhfaXNfYWJzb2x1dGUocGF0aCk7XG4gIGlmICgheCkgcmV0dXJuO1xuICByZXR1cm4geFswXSArIFwiL1wifVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Jvb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2V0X3Jvb3QsIGNhbWxfY3VycmVudF9kaXIsIGNhbWxfZmFpbHdpdGhcbnZhciBjYW1sX3Jvb3QgPSBjYW1sX2dldF9yb290KGNhbWxfY3VycmVudF9kaXIpIHx8IGNhbWxfZmFpbHdpdGgoXCJ1bmFibGUgdG8gY29tcHV0ZSBjYW1sX3Jvb3RcIik7XG5cblxuLy9Qcm92aWRlczogTWxGaWxlXG5mdW5jdGlvbiBNbEZpbGUoKXsgIH1cblxuLy9Qcm92aWRlczogcGF0aF9pc19hYnNvbHV0ZVxuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIG1ha2VfcGF0aF9pc19hYnNvbHV0ZSgpIHtcbiAgZnVuY3Rpb24gcG9zaXgocGF0aCkge1xuICAgIGlmIChwYXRoLmNoYXJBdCgwKSA9PT0gJy8nKSByZXR1cm4gW1wiXCIsIHBhdGguc3Vic3RyaW5nKDEpXTtcbiAgICByZXR1cm47XG4gIH1cblxuICBmdW5jdGlvbiB3aW4zMihwYXRoKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvYjNmY2MyNDVmYjI1NTM5OTA5ZWYxZDVlYWEwMWRiZjkyZTE2ODYzMy9saWIvcGF0aC5qcyNMNTZcbiAgICB2YXIgc3BsaXREZXZpY2VSZSA9IC9eKFthLXpBLVpdOnxbXFxcXC9dezJ9W15cXFxcL10rW1xcXFwvXStbXlxcXFwvXSspPyhbXFxcXC9dKT8oW1xcc1xcU10qPykkLztcbiAgICB2YXIgcmVzdWx0ID0gc3BsaXREZXZpY2VSZS5leGVjKHBhdGgpO1xuICAgIHZhciBkZXZpY2UgPSByZXN1bHRbMV0gfHwgJyc7XG4gICAgdmFyIGlzVW5jID0gQm9vbGVhbihkZXZpY2UgJiYgZGV2aWNlLmNoYXJBdCgxKSAhPT0gJzonKTtcblxuICAgIC8vIFVOQyBwYXRocyBhcmUgYWx3YXlzIGFic29sdXRlXG4gICAgaWYgKEJvb2xlYW4ocmVzdWx0WzJdIHx8IGlzVW5jKSkge1xuICAgICAgdmFyIHJvb3QgPSAocmVzdWx0WzFdIHx8ICcnKTtcbiAgICAgIHZhciBzZXAgPSAocmVzdWx0WzJdIHx8ICcnKTtcbiAgICAgIHJldHVybiBbcm9vdCwgcGF0aC5zdWJzdHJpbmcocm9vdC5sZW5ndGggKyBzZXAubGVuZ3RoKV1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0pIHtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInID8gd2luMzIgOiBwb3NpeDtcbiAgfVxuICBlbHNlIHJldHVybiBwb3NpeFxufVxudmFyIHBhdGhfaXNfYWJzb2x1dGUgPSBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKTtcblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3BhdGhcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBwYXRoX2lzX2Fic29sdXRlXG5mdW5jdGlvbiBjYW1sX21ha2VfcGF0aCAobmFtZSkge1xuICBuYW1lPWNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWUpO1xuICBpZiggIXBhdGhfaXNfYWJzb2x1dGUobmFtZSkgKVxuICAgIG5hbWUgPSBjYW1sX2N1cnJlbnRfZGlyICsgbmFtZTtcbiAgdmFyIGNvbXAwID0gcGF0aF9pc19hYnNvbHV0ZShuYW1lKTtcbiAgdmFyIGNvbXAgPSBjb21wMFsxXS5zcGxpdChcIi9cIik7XG4gIHZhciBuY29tcCA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGk8Y29tcC5sZW5ndGg7IGkrKyl7XG4gICAgc3dpdGNoKGNvbXBbaV0pe1xuICAgIGNhc2UgXCIuLlwiOiBpZihuY29tcC5sZW5ndGg+MSkgbmNvbXAucG9wKCk7IGJyZWFrO1xuICAgIGNhc2UgXCIuXCI6IGJyZWFrO1xuICAgIGNhc2UgXCJcIjogYnJlYWs7XG4gICAgZGVmYXVsdDogbmNvbXAucHVzaChjb21wW2ldKTticmVha1xuICAgIH1cbiAgfVxuICBuY29tcC51bnNoaWZ0KGNvbXAwWzBdKTtcbiAgbmNvbXAub3JpZyA9IG5hbWU7XG4gIHJldHVybiBuY29tcDtcbn1cblxuLy9Qcm92aWRlczpqc29vX21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIE1sTm9kZURldmljZSwgY2FtbF9yb290LCBmc19ub2RlX3N1cHBvcnRlZFxudmFyIGpzb29fbW91bnRfcG9pbnQgPSBbXVxuaWYgKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sTm9kZURldmljZShjYW1sX3Jvb3QpfSk7XG59IGVsc2Uge1xuICBqc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6Y2FtbF9yb290LGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKGNhbWxfcm9vdCl9KTtcbn1cbmpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpcIi9zdGF0aWMvXCIsIGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKFwiL3N0YXRpYy9cIil9KTtcblxuLy9Qcm92aWRlczpjYW1sX2xpc3RfbW91bnRfcG9pbnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGlzdF9tb3VudF9wb2ludCgpe1xuICB2YXIgcHJldiA9IDBcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspe1xuICAgIHZhciBvbGQgPSBwcmV2O1xuICAgIHByZXYgPSBbMCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhqc29vX21vdW50X3BvaW50W2ldLnBhdGgpLCBvbGRdXG4gIH1cbiAgcmV0dXJuIHByZXY7XG59XG5cbi8vUHJvdmlkZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfZ2V0X3Jvb3QsIE1sTm9kZURldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IHBhdGguam9pbihcIi9cIik7XG4gIHZhciBuYW1lX3NsYXNoID0gY2FtbF90cmFpbGluZ19zbGFzaChuYW1lKTtcbiAgdmFyIHJlcztcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbSA9IGpzb29fbW91bnRfcG9pbnRbaV07XG4gICAgaWYobmFtZV9zbGFzaC5zZWFyY2gobS5wYXRoKSA9PSAwXG4gICAgICAgJiYgKCFyZXMgfHwgcmVzLnBhdGgubGVuZ3RoIDwgbS5wYXRoLmxlbmd0aCkpXG4gICAgICByZXMgPSB7cGF0aDptLnBhdGgsZGV2aWNlOm0uZGV2aWNlLHJlc3Q6bmFtZS5zdWJzdHJpbmcobS5wYXRoLmxlbmd0aCxuYW1lLmxlbmd0aCl9O1xuICB9XG4gIGlmKCAhcmVzICYmIGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICB2YXIgcm9vdCA9IGNhbWxfZ2V0X3Jvb3QobmFtZSk7XG4gICAgaWYgKHJvb3QgJiYgcm9vdC5tYXRjaCgvXlthLXpBLVpdOlxcLyQvKSl7XG4gICAgICB2YXIgbSA9IHtwYXRoOnJvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2Uocm9vdCl9O1xuICAgICAganNvb19tb3VudF9wb2ludC5wdXNoKG0pO1xuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgICB9XG4gIH1cbiAgaWYoIHJlcyApIHJldHVybiByZXM7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwibm8gZGV2aWNlIGZvdW5kIGZvciBcIiArIG5hbWVfc2xhc2gpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21vdW50X2F1dG9sb2FkXG4vL1JlcXVpcmVzOiBNbEZha2VEZXZpY2UsIGNhbWxfbWFrZV9wYXRoLCBqc29vX21vdW50X3BvaW50LCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX21vdW50X2F1dG9sb2FkKG5hbWUsZil7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOm5hbWUsZGV2aWNlOm5ldyBNbEZha2VEZXZpY2UobmFtZSxmKX0pXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VubW91bnRcbi8vUmVxdWlyZXM6IGpzb29fbW91bnRfcG9pbnQsIGNhbWxfbWFrZV9wYXRoLCBjYW1sX3RyYWlsaW5nX3NsYXNoXG5mdW5jdGlvbiBjYW1sX3VubW91bnQobmFtZSl7XG4gIHZhciBwYXRoID0gY2FtbF9tYWtlX3BhdGgobmFtZSk7XG4gIHZhciBuYW1lID0gY2FtbF90cmFpbGluZ19zbGFzaChwYXRoLmpvaW4oXCIvXCIpKTtcbiAgdmFyIGlkeCA9IC0xO1xuICBmb3IodmFyIGkgPSAwOyBpIDwganNvb19tb3VudF9wb2ludC5sZW5ndGg7IGkrKylcbiAgICBpZihqc29vX21vdW50X3BvaW50W2ldLnBhdGggPT0gbmFtZSkgaWR4ID0gaTtcbiAgaWYoaWR4ID4gLTEpIGpzb29fbW91bnRfcG9pbnQuc3BsaWNlKGlkeCwxKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZ2V0Y3dkXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRjd2QoKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfY3VycmVudF9kaXIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jaGRpclxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3RyYWlsaW5nX3NsYXNoLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19jaGRpcihkaXIpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkaXIpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIGlmKHJvb3QucmVzdCkgY2FtbF9jdXJyZW50X2RpciA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocm9vdC5wYXRoICsgcm9vdC5yZXN0KTtcbiAgICBlbHNlIGNhbWxfY3VycmVudF9kaXIgPSByb290LnBhdGg7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhkaXIpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX25vdF9hX2RpclxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2FfZGlyKG5hbWUpe1xuICBjYW1sX3JhaXNlX3N5c19lcnJvciAobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2ZpbGVfZXhpc3RzXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfZmlsZV9leGlzdHMgKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmV4aXN0cyhyb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfYV9kaXIsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZWFkX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5yZWFkZGlyKHJvb3QucmVzdCk7XG4gIHZhciBsID0gbmV3IEFycmF5KGEubGVuZ3RoICsgMSk7XG4gIGxbMF0gPSAwO1xuICBmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKylcbiAgICBsW2krMV0gPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGFbaV0pO1xuICByZXR1cm4gbDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVtb3ZlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbW92ZShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIG9rID0gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCk7XG4gIGlmKG9rID09IDApIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfaXNfZGlyZWN0b3J5XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNfZGlyZWN0b3J5KG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICB2YXIgYSA9IHJvb3QuZGV2aWNlLmlzX2Rpcihyb290LnJlc3QpO1xuICByZXR1cm4gYT8xOjA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbmFtZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX3JlbmFtZShvLG4pe1xuICB2YXIgb19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobyk7XG4gIHZhciBuX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuKTtcbiAgaWYob19yb290LmRldmljZSAhPSBuX3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IGNhbm5vdCBtb3ZlIGZpbGUgYmV0d2VlbiB0d28gZmlsZXN5c3RlbVwiKTtcbiAgaWYoIW9fcm9vdC5kZXZpY2UucmVuYW1lKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N5c19yZW5hbWU6IG5vIGltcGxlbWVudGVkXCIpO1xuICBvX3Jvb3QuZGV2aWNlLnJlbmFtZShvX3Jvb3QucmVzdCwgbl9yb290LnJlc3QpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3N5c19ta2RpcihuYW1lLCBwZXJtKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2UubWtkaXIocm9vdC5yZXN0LHBlcm0pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcm1kaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub3RfYV9kaXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3JtZGlyKG5hbWUpe1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICByb290LmRldmljZS5ybWRpcihyb290LnJlc3QpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZSh2ZmQsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW1zLCBwb3MpIHtcbiAgLy8gdmFyIGRhdGEgPSBjYW1sX3N5c19mZHNbdmZkXTtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfYmFfbWFwX2ZpbGUgbm90IGltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX21hcF9maWxlXG5mdW5jdGlvbiBjYW1sX2JhX21hcF9maWxlX2J5dGVjb2RlKGFyZ3YsYXJnbil7XG4gIHJldHVybiBjYW1sX2JhX21hcF9maWxlKGFyZ3ZbMF0sYXJndlsxXSxhcmd2WzJdLGFyZ3ZbM10sYXJndls0XSxhcmd2WzVdKTtcbn1cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZV9leHRlcm5cbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuKG5hbWUsY29udGVudCl7XG4gIGlmKGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSlcbiAgICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KTtcbiAgZWxzZSB7XG4gICAgaWYoIWdsb2JhbFRoaXMuY2FtbF9mc190bXApIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wLnB1c2goe25hbWU6bmFtZSxjb250ZW50OmNvbnRlbnR9KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mc19pbml0XG4vL1JlcXVpcmVzOiBqc29vX2NyZWF0ZV9maWxlXG5mdW5jdGlvbiBjYW1sX2ZzX2luaXQgKCl7XG4gIHZhciB0bXA9Z2xvYmFsVGhpcy5jYW1sX2ZzX3RtcFxuICBpZih0bXApe1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0bXAubGVuZ3RoOyBpKyspe1xuICAgICAganNvb19jcmVhdGVfZmlsZSh0bXBbaV0ubmFtZSx0bXBbaV0uY29udGVudCk7XG4gICAgfVxuICB9XG4gIGdsb2JhbFRoaXMuanNvb19jcmVhdGVfZmlsZSA9IGpzb29fY3JlYXRlX2ZpbGU7XG4gIGdsb2JhbFRoaXMuY2FtbF9mc190bXAgPSBbXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZighIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKSBjYW1sX2ZhaWx3aXRoKFwiY2Fubm90IHJlZ2lzdGVyIGZpbGVcIik7XG4gIHJvb3QuZGV2aWNlLnJlZ2lzdGVyKHJvb3QucmVzdCxjb250ZW50KTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczoganNvb19jcmVhdGVfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24ganNvb19jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIG5hbWUgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpO1xuICB2YXIgY29udGVudCA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoY29udGVudCk7XG4gIHJldHVybiBjYW1sX2NyZWF0ZV9maWxlKG5hbWUsIGNvbnRlbnQpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVhZF9maWxlX2NvbnRlbnRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfcmVhZF9maWxlX2NvbnRlbnQgKG5hbWUpIHtcbiAgdmFyIG5hbWUgPSAodHlwZW9mIG5hbWUgPT0gXCJzdHJpbmdcIik/Y2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTpuYW1lO1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZihyb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KSkge1xuICAgIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3Qse3Jkb25seToxfSk7XG4gICAgdmFyIGxlbiAgPSBmaWxlLmxlbmd0aCgpO1xuICAgIHZhciBidWYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIGZpbGUucmVhZCgwLGJ1ZiwwLGxlbik7XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGJ1ZilcbiAgfVxuICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbn1cbiIsIi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfZ2V0dGltZW9mZGF5XG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpIHtcbiAgcmV0dXJuIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLyAxMDAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2dldHRpbWVvZmRheVxuLy9BbGlhczogdW5peF90aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfdGltZSAoKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKGNhbWxfdW5peF9nZXR0aW1lb2ZkYXkgKCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ210aW1lXG4vL0FsaWFzOiB1bml4X2dtdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2dtdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpKS5nZXRUaW1lKCk7XG4gIHZhciBkb3kgPSBNYXRoLmZsb29yKChkX251bSAtIGphbnVhcnlmaXJzdCkgLyA4NjQwMDAwMCk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFVUQ1NlY29uZHMoKSwgZC5nZXRVVENNaW51dGVzKCksIGQuZ2V0VVRDSG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0VVRDRGF0ZSgpLCBkLmdldFVUQ01vbnRoKCksIGQuZ2V0VVRDRnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RheSgpLCBkb3ksXG4gICAgICAgICAgICAgICBmYWxzZSB8IDAgLyogZm9yIFVUQyBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmFsc2UgKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbG9jYWx0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbG9jYWx0aW1lICh0KSB7XG4gIHZhciBkID0gbmV3IERhdGUgKHQgKiAxMDAwKTtcbiAgdmFyIGRfbnVtID0gZC5nZXRUaW1lKCk7XG4gIHZhciBqYW51YXJ5Zmlyc3QgPSAobmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICB2YXIgamFuID0gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCAwLCAxKTtcbiAgdmFyIGp1bCA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgNiwgMSk7XG4gIHZhciBzdGRUaW1lem9uZU9mZnNldCA9IE1hdGgubWF4KGphbi5nZXRUaW1lem9uZU9mZnNldCgpLCBqdWwuZ2V0VGltZXpvbmVPZmZzZXQoKSk7XG4gIHJldHVybiBCTE9DSygwLCBkLmdldFNlY29uZHMoKSwgZC5nZXRNaW51dGVzKCksIGQuZ2V0SG91cnMoKSxcbiAgICAgICAgICAgICAgIGQuZ2V0RGF0ZSgpLCBkLmdldE1vbnRoKCksIGQuZ2V0RnVsbFllYXIoKSAtIDE5MDAsXG4gICAgICAgICAgICAgICBkLmdldERheSgpLCBkb3ksXG4gICAgICAgICAgICAgICAoZC5nZXRUaW1lem9uZU9mZnNldCgpIDwgc3RkVGltZXpvbmVPZmZzZXQpIHwgMCAvKiBkYXlsaWdodCBzYXZpbmdzIHRpbWUgIGZpZWxkLiAqLylcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X21rdGltZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2xvY2FsdGltZVxuLy9BbGlhczogdW5peF9ta3RpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta3RpbWUodG0pe1xuICB2YXIgZCA9IChuZXcgRGF0ZSh0bVs2XSsxOTAwLHRtWzVdLHRtWzRdLHRtWzNdLHRtWzJdLHRtWzFdKSkuZ2V0VGltZSgpO1xuICB2YXIgdCA9IE1hdGguZmxvb3IoZCAvIDEwMDApO1xuICB2YXIgdG0yID0gY2FtbF91bml4X2xvY2FsdGltZSh0KTtcbiAgcmV0dXJuIEJMT0NLKDAsdCx0bTIpO1xufVxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXJ0dXAgY29uc3Rcbi8vQWxpYXM6IHdpbl9zdGFydHVwXG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhcnR1cCgpIHt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9jbGVhbnVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fY2xlYW51cFxuZnVuY3Rpb24gY2FtbF91bml4X2NsZWFudXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkIGNvbnN0XG4vL0FsaWFzOiB3aW5faGFuZGxlX2ZkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmlsZWRlc2NyX29mX2ZkKHgpIHtyZXR1cm4geDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pc2F0dHlcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHR0eSA9IHJlcXVpcmUoJ3R0eScpO1xuICAgIHJldHVybiB0dHkuaXNhdHR5KGZpbGVEZXNjcmlwdG9yKT8xOjA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL0FsaWFzOiB1bml4X2lzYXR0eVxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gY2FtbF91bml4X2lzYXR0eShmaWxlRGVzY3JpcHRvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbWFrZV91bml4X2Vycl9hcmdzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xudmFyIHVuaXhfZXJyb3IgPSBbXG4gIC8qID09PVVuaXguZXJyb3I9PT1cbiAgICpcbiAgICogVGhpcyBhcnJheSBpcyBpbiBvcmRlciBvZiB0aGUgdmFyaWFudCBpbiBPQ2FtbFxuICAgKi9cbiAgXCJFMkJJR1wiLCBcIkVBQ0NFU1wiLCBcIkVBR0FJTlwiLCBcIkVCQURGXCIsIFwiRUJVU1lcIiwgXCJFQ0hJTERcIiwgXCJFREVBRExLXCIsIFwiRURPTVwiLFxuICBcIkVFWElTVFwiLCBcIkVGQVVMVFwiLCBcIkVGQklHXCIsIFwiRUlOVFJcIiwgXCJFSU5WQUxcIiwgXCJFSU9cIiwgXCJFSVNESVJcIiwgXCJFTUZJTEVcIixcbiAgXCJFTUxJTktcIiwgXCJFTkFNRVRPT0xPTkdcIiwgXCJFTkZJTEVcIiwgXCJFTk9ERVZcIiwgXCJFTk9FTlRcIiwgXCJFTk9FWEVDXCIsIFwiRU5PTENLXCIsXG4gIFwiRU5PTUVNXCIsIFwiRU5PU1BDXCIsIFwiRU5PU1lTXCIsIFwiRU5PVERJUlwiLCBcIkVOT1RFTVBUWVwiLCBcIkVOT1RUWVwiLCBcIkVOWElPXCIsXG4gIFwiRVBFUk1cIiwgXCJFUElQRVwiLCBcIkVSQU5HRVwiLCBcIkVST0ZTXCIsIFwiRVNQSVBFXCIsIFwiRVNSQ0hcIiwgXCJFWERFVlwiLCBcIkVXT1VMREJMT0NLXCIsXG4gIFwiRUlOUFJPR1JFU1NcIiwgXCJFQUxSRUFEWVwiLCBcIkVOT1RTT0NLXCIsIFwiRURFU1RBRERSUkVRXCIsIFwiRU1TR1NJWkVcIixcbiAgXCJFUFJPVE9UWVBFXCIsIFwiRU5PUFJPVE9PUFRcIiwgXCJFUFJPVE9OT1NVUFBPUlRcIiwgXCJFU09DS1ROT1NVUFBPUlRcIixcbiAgXCJFT1BOT1RTVVBQXCIsIFwiRVBGTk9TVVBQT1JUXCIsIFwiRUFGTk9TVVBQT1JUXCIsIFwiRUFERFJJTlVTRVwiLCBcIkVBRERSTk9UQVZBSUxcIixcbiAgXCJFTkVURE9XTlwiLCBcIkVORVRVTlJFQUNIXCIsIFwiRU5FVFJFU0VUXCIsIFwiRUNPTk5BQk9SVEVEXCIsIFwiRUNPTk5SRVNFVFwiLCBcIkVOT0JVRlNcIixcbiAgXCJFSVNDT05OXCIsIFwiRU5PVENPTk5cIiwgXCJFU0hVVERPV05cIiwgXCJFVE9PTUFOWVJFRlNcIiwgXCJFVElNRURPVVRcIiwgXCJFQ09OTlJFRlVTRURcIixcbiAgXCJFSE9TVERPV05cIiwgXCJFSE9TVFVOUkVBQ0hcIiwgXCJFTE9PUFwiLCBcIkVPVkVSRkxPV1wiXG5dO1xuZnVuY3Rpb24gbWFrZV91bml4X2Vycl9hcmdzKGNvZGUsIHN5c2NhbGwsIHBhdGgsIGVycm5vKSB7XG4gIHZhciB2YXJpYW50ID0gdW5peF9lcnJvci5pbmRleE9mKGNvZGUpO1xuICBpZiAodmFyaWFudCA8IDApIHtcbiAgICAvLyBEZWZhdWx0IGlmIHVuZGVmaW5lZFxuICAgIGlmIChlcnJubyA9PSBudWxsKSB7XG4gICAgICBlcnJubyA9IC05OTk5XG4gICAgfVxuICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIHZhcmlhbnRzLCBmYWxsYmFjayB0byBFVU5LTk9XTkVSUihpbnQpXG4gICAgdmFyaWFudCA9IEJMT0NLKDAsIGVycm5vKTtcbiAgfVxuICB2YXIgYXJncyA9IFtcbiAgICB2YXJpYW50LFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHN5c2NhbGwgfHwgXCJcIiksXG4gICAgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aCB8fCBcIlwiKVxuICBdO1xuICByZXR1cm4gYXJncztcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0KG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5zdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnN0YXQocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X3N0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfc3RhdF82NFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9zdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbHN0YXRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubHN0YXQpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X2xzdGF0OiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLmxzdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2xzdGF0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfbHN0YXQsIGNhbWxfaW50NjRfb2ZfaW50MzJcbi8vQWxpYXM6IHVuaXhfbHN0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9sc3RhdF82NChuYW1lKSB7XG4gIHZhciByID0gY2FtbF91bml4X2xzdGF0KG5hbWUpO1xuICByWzldID0gY2FtbF9pbnQ2NF9vZl9pbnQzMihyWzldKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta2RpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfbWtkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ta2RpcihuYW1lLCBwZXJtKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UubWtkaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X21rZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCwgcGVybSwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9ybWRpclxuZnVuY3Rpb24gY2FtbF91bml4X3JtZGlyKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5ybWRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcm1kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfc3ltbGlua1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3N5bWxpbmsodG9fZGlyLCBzcmMsIGRzdCkge1xuICB2YXIgc3JjX3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShzcmMpO1xuICB2YXIgZHN0X3Jvb3QgPSByZXNvbHZlX2ZzX2RldmljZShkc3QpO1xuICBpZihzcmNfcm9vdC5kZXZpY2UgIT0gZHN0X3Jvb3QuZGV2aWNlKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3ltbGluazogY2Fubm90IHN5bWxpbmsgYmV0d2VlbiB0d28gZmlsZXN5c3RlbXNcIik7XG4gIGlmICghc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmspIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gc3JjX3Jvb3QuZGV2aWNlLnN5bWxpbmsodG9fZGlyLCBzcmNfcm9vdC5yZXN0LCBkc3Rfcm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmVhZGxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3JlYWRsaW5rXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnJlYWRsaW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9yZWFkbGluazogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5yZWFkbGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF91bmxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3VubGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3VubGluayhuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2UudW5saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF91bmxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UudW5saW5rKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHVpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0dWlkXG5mdW5jdGlvbiBjYW1sX3VuaXhfZ2V0dWlkKHVuaXQpIHtcbiAgaWYoZ2xvYmFsVGhpcy5wcm9jZXNzICYmIGdsb2JhbFRoaXMucHJvY2Vzcy5nZXR1aWQpe1xuICAgIHJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKCk7XG4gIH1cbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dldHB3dWlkXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX25vdF9mb3VuZFxuLy9BbGlhczogdW5peF9nZXRwd3VpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHB3dWlkKHVuaXQpIHtcbiAgY2FtbF9yYWlzZV9ub3RfZm91bmQoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2hhc19zeW1saW5rXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9oYXNfc3ltbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X2hhc19zeW1saW5rKHVuaXQpIHtcbiAgcmV0dXJuIGZzX25vZGVfc3VwcG9ydGVkKCk/MTowXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9vcGVuZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9vcGVuZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UocGF0aCk7XG4gIGlmICghcm9vdC5kZXZpY2Uub3BlbmRpcikge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfb3BlbmRpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHZhciBkaXJfaGFuZGxlID0gcm9vdC5kZXZpY2Uub3BlbmRpcihyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG4gIHJldHVybiB7IHBvaW50ZXIgOiBkaXJfaGFuZGxlLCBwYXRoOiBwYXRoIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X3JlYWRkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpIHtcbiAgdmFyIGVudHJ5O1xuICB0cnkge1xuICAgICAgZW50cnkgPSBkaXJfaGFuZGxlLnBvaW50ZXIucmVhZFN5bmMoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgICAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwicmVhZGRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxuICBpZiAoZW50cnkgPT09IG51bGwpIHtcbiAgICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhlbnRyeS5uYW1lKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVcbi8vQWxpYXM6IHVuaXhfY2xvc2VkaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKSB7XG4gIHRyeSB7XG4gICAgICBkaXJfaGFuZGxlLnBvaW50ZXIuY2xvc2VTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIGRpcl9oYW5kbGUucGF0aCkpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZXdpbmRkaXJcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9jbG9zZWRpciwgY2FtbF91bml4X29wZW5kaXJcbi8vQWxpYXM6IHVuaXhfcmV3aW5kZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmV3aW5kZGlyKGRpcl9oYW5kbGUpIHtcbiAgY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xuICB2YXIgbmV3X2Rpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihkaXJfaGFuZGxlLnBhdGgpO1xuICBkaXJfaGFuZGxlLnBvaW50ZXIgPSBuZXdfZGlyX2hhbmRsZS5wb2ludGVyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRmaXJzdFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfb3BlbmRpciwgY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kZmlyc3RcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kZmlyc3QocGF0aCkge1xuICAvLyBUaGUgV2luZG93cyBjb2RlIGFkZHMgdGhpcyBnbG9iIHRvIHRoZSBwYXRoLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSBpdFxuICB2YXIgcGF0aF9qcyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBhdGgpO1xuICBwYXRoX2pzID0gcGF0aF9qcy5yZXBsYWNlKC8oXnxbXFxcXFxcL10pXFwqXFwuXFwqJC8sIFwiXCIpO1xuICBwYXRoID0gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocGF0aF9qcyk7XG4gIC8vICouKiBpcyBub3cgc3RyaXBwZWRcbiAgdmFyIGRpcl9oYW5kbGUgPSBjYW1sX3VuaXhfb3BlbmRpcihwYXRoKTtcbiAgdmFyIGZpcnN0X2VudHJ5ID0gY2FtbF91bml4X3JlYWRkaXIoZGlyX2hhbmRsZSk7XG4gIC8vIFRoZSBXaW5kb3dzIGJpbmRpbmdzIHR5cGUgZGlyX2hhbmRsZSBhcyBhbiBgaW50YCBidXQgaXQncyBub3QgaW4gSlNcbiAgcmV0dXJuIFswLCBmaXJzdF9lbnRyeSwgZGlyX2hhbmRsZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kbmV4dFxuLy9SZXF1aXJlczogY2FtbF91bml4X3JlYWRkaXJcbi8vQWxpYXM6IHdpbl9maW5kbmV4dFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbmRuZXh0KGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZGNsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXJcbi8vQWxpYXM6IHdpbl9maW5kY2xvc2VcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kY2xvc2UoZGlyX2hhbmRsZSkge1xuICByZXR1cm4gY2FtbF91bml4X2Nsb3NlZGlyKGRpcl9oYW5kbGUpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIGNvbnN0XG4vL0FsaWFzOiB1bml4X2luZXRfYWRkcl9vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nICgpIHtyZXR1cm4gMDt9XG5cblxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogTWxGYWtlRGV2aWNlXG4vL1JlcXVpcmVzOiBNbEZha2VGaWxlLCBNbEZha2VGZCwgY2FtbF9jcmVhdGVfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfb2ZfYXJyYXksIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZXNcbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuZnVuY3Rpb24gTWxGYWtlRGV2aWNlIChyb290LCBmKSB7XG4gIHRoaXMuY29udGVudD17fTtcbiAgdGhpcy5yb290ID0gcm9vdDtcbiAgdGhpcy5sb29rdXBGdW4gPSBmO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUuY3JlYXRlX2Rpcl9pZl9uZWVkZWQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBjb21wID0gbmFtZS5zcGxpdChcIi9cIik7XG4gIHZhciByZXMgPSBcIlwiO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgY29tcC5sZW5ndGggLSAxOyBpKyspe1xuICAgIHJlcyArPSBjb21wW2ldICsgXCIvXCI7XG4gICAgaWYodGhpcy5jb250ZW50W3Jlc10pIGNvbnRpbnVlO1xuICAgIHRoaXMuY29udGVudFtyZXNdID0gU3ltYm9sKFwiZGlyZWN0b3J5XCIpO1xuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnNsYXNoID0gZnVuY3Rpb24obmFtZSl7XG4gIHJldHVybiAvXFwvJC8udGVzdChuYW1lKT9uYW1lOihuYW1lICsgXCIvXCIpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5sb29rdXAgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKCF0aGlzLmNvbnRlbnRbbmFtZV0gJiYgdGhpcy5sb29rdXBGdW4pIHtcbiAgICB2YXIgcmVzID0gdGhpcy5sb29rdXBGdW4oY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnJvb3QpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG5hbWUpKTtcbiAgICBpZihyZXMgIT09IDApIHtcbiAgICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgICB0aGlzLmNvbnRlbnRbbmFtZV09bmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcocmVzWzFdKSk7XG4gICAgfVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmV4aXN0cyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgLy8gVGhlIHJvb3Qgb2YgdGhlIGRldmljZSBleGlzdHNcbiAgaWYobmFtZSA9PSBcIlwiKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzXG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVfc2xhc2hdKSByZXR1cm4gMTtcbiAgLy8gQ2hlY2sgaWYgYSBmaWxlIGV4aXN0c1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzRmlsZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkgJiYgIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuICBlbHNlIHtcbiAgICByZXR1cm4gMFxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm1rZGlyID0gZnVuY3Rpb24obmFtZSxtb2RlLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgaWYodGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUVYSVNUXCIsIFwibWtkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogRmlsZSBleGlzdHNcIik7XG4gICAgfVxuICB9XG4gIHZhciBwYXJlbnQgPSAvXiguKilcXC9bXi9dKy8uZXhlYyhuYW1lKTtcbiAgcGFyZW50ID0gKHBhcmVudCAmJiBwYXJlbnRbMV0pIHx8ICcnO1xuICBpZighdGhpcy5leGlzdHMocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0ocGFyZW50KSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHBhcmVudCArIFwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBpZighdGhpcy5pc19kaXIocGFyZW50KSl7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKHRoaXMuc2xhc2gobmFtZSkpO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSByYWlzZV91bml4ICYmIGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PRU5UXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT1RESVJcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICBpZihuLm1hdGNoKHIpKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URU1QVFlcIiwgXCJybWRpclwiLCB0aGlzLm5tKG5hbWUpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCI6IERpcmVjdG9yeSBub3QgZW1wdHlcIik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF07XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBuYW1lX3NsYXNoID0gKG5hbWUgPT0gXCJcIik/XCJcIjoodGhpcy5zbGFzaChuYW1lKSk7XG4gIGlmKCF0aGlzLmV4aXN0cyhuYW1lKSkge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgfVxuICBpZighdGhpcy5pc19kaXIobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgfVxuICB2YXIgciA9IG5ldyBSZWdFeHAoXCJeXCIgKyBuYW1lX3NsYXNoICsgXCIoW14vXSspXCIpO1xuICB2YXIgc2VlbiA9IHt9XG4gIHZhciBhID0gW107XG4gIGZvcih2YXIgbiBpbiB0aGlzLmNvbnRlbnQpIHtcbiAgICB2YXIgbSA9IG4ubWF0Y2gocik7XG4gICAgaWYobSAmJiAhc2VlblttWzFdXSkge3NlZW5bbVsxXV0gPSB0cnVlOyBhLnB1c2gobVsxXSl9XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW5kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcblxuICB2YXIgYSA9IHRoaXMucmVhZGRpcihuYW1lKTtcbiAgdmFyIGMgPSBmYWxzZTtcbiAgdmFyIGkgPSAwO1xuICByZXR1cm4geyByZWFkU3luYyA6IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGMpIHtcbiAgICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihpID09IGEubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICB2YXIgZW50cnkgPSBhW2ldO1xuICAgIGkrKztcbiAgICByZXR1cm4geyBuYW1lOiBlbnRyeSB9XG4gIH0pXG4gICAgLCBjbG9zZVN5bmM6IChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoYykge1xuICAgICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVCQURGXCIsIFwiY2xvc2VkaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogY2xvc2VkaXIgZmFpbGVkXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjID0gdHJ1ZTtcbiAgICAgIGEgPSBbXTtcbiAgICB9KVxuICB9XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmlzX2RpciA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgaWYobmFtZSA9PSBcIlwiKSAgcmV0dXJuIHRydWU7XG4gIHZhciBuYW1lX3NsYXNoID0gdGhpcy5zbGFzaChuYW1lKTtcbiAgcmV0dXJuIHRoaXMuY29udGVudFtuYW1lX3NsYXNoXT8xOjA7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLnVubGluayA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgdmFyIG9rID0gdGhpcy5jb250ZW50W25hbWVdP3RydWU6ZmFsc2U7XG4gIGRlbGV0ZSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIHJldHVybiBvaztcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYpIHtcbiAgdmFyIGZpbGU7XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIGlmICh0aGlzLmNvbnRlbnRbbmFtZV0pIHtcbiAgICBpZiAodGhpcy5pc19kaXIobmFtZSkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGlzIGEgZGlyZWN0b3J5XCIpO1xuICAgIGlmIChmLmNyZWF0ZSAmJiBmLmV4Y2wpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgICBpZihmLnRydW5jYXRlKSBmaWxlLnRydW5jYXRlKCk7XG4gIH0gZWxzZSBpZiAoZi5jcmVhdGUpIHtcbiAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgIHRoaXMuY29udGVudFtuYW1lXSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICB9IGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlICh0aGlzLm5tKG5hbWUpKTtcbiAgfVxuICByZXR1cm4gbmV3IE1sRmFrZUZkKHRoaXMubm0obmFtZSksIGZpbGUsIGYpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWdpc3Rlcj0gZnVuY3Rpb24gKG5hbWUsY29udGVudCl7XG4gIHZhciBmaWxlO1xuICBpZih0aGlzLmNvbnRlbnRbbmFtZV0pIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZpbGUgYWxyZWFkeSBleGlzdHNcIik7XG4gIGlmKGNhbWxfaXNfbWxfYnl0ZXMoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNvbnRlbnQpO1xuICBpZihjYW1sX2lzX21sX3N0cmluZyhjb250ZW50KSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9zdHJpbmcoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQgaW5zdGFuY2VvZiBBcnJheSlcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9ieXRlc19vZl9hcnJheShjb250ZW50KSk7XG4gIGVsc2UgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjb250ZW50KSk7XG4gIGVsc2UgaWYoY29udGVudC50b1N0cmluZykge1xuICAgIHZhciBieXRlcyA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGNvbnRlbnQudG9TdHJpbmcoKSkpO1xuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShieXRlcyk7XG4gIH1cbiAgaWYoZmlsZSl7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBmaWxlO1xuICB9XG4gIGVsc2UgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogcmVnaXN0ZXJpbmcgZmlsZSB3aXRoIGludmFsaWQgY29udGVudCB0eXBlXCIpO1xufVxuXG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTWxGYWtlRGV2aWNlXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IE1sRmlsZVxuLy9SZXF1aXJlczogY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIE1sRmFrZUZpbGUoY29udGVudCl7XG4gIHRoaXMuZGF0YSA9IGNvbnRlbnQ7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZSA9IG5ldyBNbEZpbGUgKCk7XG5NbEZha2VGaWxlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZUZpbGVcbk1sRmFrZUZpbGUucHJvdG90eXBlLnRydW5jYXRlID0gZnVuY3Rpb24obGVuKXtcbiAgdmFyIG9sZCA9IHRoaXMuZGF0YTtcbiAgdGhpcy5kYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICBjYW1sX2JsaXRfYnl0ZXMob2xkLCAwLCB0aGlzLmRhdGEsIDAsIGxlbik7XG59XG5NbEZha2VGaWxlLnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYW1sX21sX2J5dGVzX2xlbmd0aCh0aGlzLmRhdGEpO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgdmFyIG5ld19zdHIgPSBjYW1sX2NyZWF0ZV9ieXRlcyhvZmZzZXQgKyBsZW4pO1xuICAgIHZhciBvbGRfZGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmRhdGEgPSBuZXdfc3RyO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhvbGRfZGF0YSwgMCwgdGhpcy5kYXRhLCAwLCBjbGVuKTtcbiAgfVxuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHRoaXMuZGF0YSwgb2Zmc2V0LCBsZW4pO1xuICByZXR1cm4gMFxufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKG9mZnNldCxidWYscG9zLGxlbil7XG4gIHZhciBjbGVuID0gdGhpcy5sZW5ndGgoKTtcbiAgaWYob2Zmc2V0ICsgbGVuID49IGNsZW4pIHtcbiAgICBsZW4gPSBjbGVuIC0gb2Zmc2V0O1xuICB9XG4gIGlmKGxlbikge1xuICAgIHZhciBkYXRhID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVufDApO1xuICAgIGNhbWxfYmxpdF9ieXRlcyh0aGlzLmRhdGEsIG9mZnNldCwgZGF0YSwgMCwgbGVuKTtcbiAgICBidWYuc2V0KGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoZGF0YSksIHBvcyk7XG4gIH1cbiAgcmV0dXJuIGxlblxufVxuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfYmxpdF9ieXRlcywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkX291dChmZCxmbGFncykge1xuICBNbEZha2VGaWxlLmNhbGwodGhpcywgY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICB0aGlzLmxvZyA9IChmdW5jdGlvbiAocykgeyByZXR1cm4gMCB9KTtcbiAgaWYoZmQgPT0gMSAmJiB0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2c7XG4gIGVsc2UgaWYoZmQgPT0gMiAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmVycm9yO1xuICBlbHNlIGlmKHR5cGVvZiBjb25zb2xlLmxvZyA9PSBcImZ1bmN0aW9uXCIpXG4gICAgdGhpcy5sb2cgPSBjb25zb2xlLmxvZ1xuICB0aGlzLmZsYWdzID0gZmxhZ3M7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMCB9XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmxvZykge1xuICAgIGlmKGxlbiA+IDBcbiAgICAgICAmJiBwb3MgPj0gMFxuICAgICAgICYmIHBvcytsZW4gPD0gYnVmLmxlbmd0aFxuICAgICAgICYmIGJ1Zltwb3MrbGVuLTFdID09IDEwKVxuICAgICAgbGVuIC0tO1xuICAgIC8vIERvIG5vdCBvdXRwdXQgdGhlIGxhc3QgXFxuIGlmIHByZXNlbnRcbiAgICAvLyBhcyBjb25zb2xlIGxvZ2dpbmcgZGlzcGxheSBhIG5ld2xpbmUgYXQgdGhlIGVuZFxuICAgIHZhciBzcmMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIHBvcywgc3JjLCAwLCBsZW4pO1xuICAgIHRoaXMubG9nKHNyYy50b1V0ZjE2KCkpO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBhbHJlYWR5IGNsb3NlZFwiKTtcbn1cbk1sRmFrZUZkX291dC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5mZCAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGlzIHdyaXRlIG9ubHlcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmxvZyA9IHVuZGVmaW5lZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZFxuLy9SZXF1aXJlczogTWxGYWtlRmlsZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3JcbmZ1bmN0aW9uIE1sRmFrZUZkKG5hbWUsIGZpbGUsZmxhZ3MpIHtcbiAgdGhpcy5maWxlID0gZmlsZTtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuXG5NbEZha2VGZC5wcm90b3R5cGUuZXJyX2Nsb3NlZCA9IGZ1bmN0aW9uICgpIHtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5uYW1lICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24oKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5sZW5ndGggKClcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAob2Zmc2V0LGJ1Zixwb3MsbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS53cml0ZShvZmZzZXQsYnVmLHBvcyxsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGlmKHRoaXMuZmlsZSkgcmV0dXJuIHRoaXMuZmlsZS5yZWFkKG9mZnNldCwgYnVmLCBwb3MsIGxlbilcbiAgdGhpcy5lcnJfY2xvc2VkKCk7XG59XG5NbEZha2VGZC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZmlsZSA9IHVuZGVmaW5lZDtcbn1cbiIsIi8vUHJvdmlkZXM6IGluaXRpYWxpemVfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IHNlcmlhbGl6ZV9uYXQsIGRlc2VyaWFsaXplX25hdCwgY2FtbF9oYXNoX25hdFxuZnVuY3Rpb24gaW5pdGlhbGl6ZV9uYXQoKSB7XG4gIGNhbWxfY3VzdG9tX29wc1tcIl9uYXRcIl0gPVxuICAgIHsgZGVzZXJpYWxpemUgOiBkZXNlcmlhbGl6ZV9uYXQsXG4gICAgICBzZXJpYWxpemUgOiBzZXJpYWxpemVfbmF0LFxuICAgICAgaGFzaCA6IGNhbWxfaGFzaF9uYXRcbiAgICB9XG59XG5cbi8vUHJvdmlkZXM6IE1sTmF0XG5mdW5jdGlvbiBNbE5hdCh4KXtcbiAgdGhpcy5kYXRhID0gbmV3IEludDMyQXJyYXkoeCk7XG4gIC8vIEZvciBudW0gPCAxLjVcbiAgLy8gbGVuZ3RoX25hdCBpc24ndCBleHRlcm5hbCwgc28gd2UgaGF2ZSB0byBtYWtlIHRoZSBPYmouc2l6ZVxuICAvLyB3b3JrIG91dCByaWdodC5cbiAgLy8gV2UgYWRkICsyIHRvIHRoZSBhcnJheSBsZW5ndGg6XG4gIC8vIC0gKzEgZm9yIHRoZSB0YWdcbiAgLy8gLSArMSBmb3IgdGhlIGN1c3RvbV9vcHMgc2xvdFxuICB0aGlzLmxlbmd0aCA9IHRoaXMuZGF0YS5sZW5ndGggKyAyXG59XG5cbk1sTmF0LnByb3RvdHlwZS5jYW1sX2N1c3RvbSA9IFwiX25hdFwiO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbmF0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgbnVtX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9uYXQoeCkge1xuICB2YXIgbGVuID0gbnVtX2RpZ2l0c19uYXQoeCwgMCwgeC5kYXRhLmxlbmd0aCk7XG4gIHZhciBoID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB4LmRhdGFbaV0pO1xuICB9XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBsZW5ndGhfbmF0XG5mdW5jdGlvbiBsZW5ndGhfbmF0KHgpIHtcbiAgcmV0dXJuIHguZGF0YS5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IG5hdF9vZl9hcnJheVxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIG5hdF9vZl9hcnJheShsKXtcbiAgcmV0dXJuIG5ldyBNbE5hdChsKTtcbn1cblxuLy9Qcm92aWRlczogY3JlYXRlX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGNyZWF0ZV9uYXQoc2l6ZSkge1xuICB2YXIgYXJyID0gbmV3IE1sTmF0KHNpemUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgYXJyLmRhdGFbaV0gPSAtMTtcbiAgfVxuICByZXR1cm4gYXJyO1xufVxuXG4vL1Byb3ZpZGVzOiBzZXRfdG9femVyb19uYXRcbmZ1bmN0aW9uIHNldF90b196ZXJvX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdC5kYXRhW29mcytpXSA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJsaXRfbmF0XG5mdW5jdGlvbiBibGl0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyLCBsZW4pIHtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgbmF0MS5kYXRhW29mczEraV0gPSBuYXQyLmRhdGFbb2ZzMitpXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdFxuZnVuY3Rpb24gc2V0X2RpZ2l0X25hdChuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdFxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdChuYXQsIG9mcykge1xuICByZXR1cm4gbmF0LmRhdGFbb2ZzXTtcbn1cblxuLy9Qcm92aWRlczogc2V0X2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzLCBkaWdpdCkge1xuICBuYXQuZGF0YVtvZnNdID0gZGlnaXQ7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBudGhfZGlnaXRfbmF0X25hdGl2ZVxuZnVuY3Rpb24gbnRoX2RpZ2l0X25hdF9uYXRpdmUobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBudW1fZGlnaXRzX25hdChuYXQsIG9mcywgbGVuKSB7XG4gIGZvcih2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYobmF0LmRhdGFbb2ZzK2ldICE9IDApIHJldHVybiBpKzE7XG4gIH1cbiAgcmV0dXJuIDE7IC8vIDAgY291bnRzIGFzIDEgZGlnaXRcbn1cblxuLy9Qcm92aWRlczogbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0XG5mdW5jdGlvbiBudW1fbGVhZGluZ196ZXJvX2JpdHNfaW5fZGlnaXQobmF0LCBvZnMpIHtcbiAgdmFyIGEgPSBuYXQuZGF0YVtvZnNdO1xuICB2YXIgYiA9IDA7XG4gIGlmKGEgJiAweEZGRkYwMDAwKSB7IGIgKz0xNjsgYSA+Pj49MTY7IH1cbiAgaWYoYSAmIDB4RkYwMCkgICAgIHsgYiArPSA4OyBhID4+Pj0gODsgfVxuICBpZihhICYgMHhGMCkgICAgICAgeyBiICs9IDQ7IGEgPj4+PSA0OyB9XG4gIGlmKGEgJiAxMikgICAgICAgICB7IGIgKz0gMjsgYSA+Pj49IDI7IH1cbiAgaWYoYSAmIDIpICAgICAgICAgIHsgYiArPSAxOyBhID4+Pj0gMTsgfVxuICBpZihhICYgMSkgICAgICAgICAgeyBiICs9IDE7IH1cbiAgcmV0dXJuIDMyIC0gYjtcbn1cblxuLy9Qcm92aWRlczogaXNfZGlnaXRfaW50XG5mdW5jdGlvbiBpc19kaWdpdF9pbnQobmF0LCBvZnMpIHtcbiAgaWYgKG5hdC5kYXRhW29mc10gPj0gMCkgcmV0dXJuIDFcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X3plcm9cbmZ1bmN0aW9uIGlzX2RpZ2l0X3plcm8obmF0LCBvZnMpIHtcbiAgaWYobmF0LmRhdGFbb2ZzXSA9PSAwKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGlzX2RpZ2l0X29kZFxuZnVuY3Rpb24gaXNfZGlnaXRfb2RkKG5hdCwgb2ZzKSB7XG4gIGlmKG5hdC5kYXRhW29mc10gJiAxKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGluY3JfbmF0XG5mdW5jdGlvbiBpbmNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0LmRhdGFbb2ZzK2ldID4+PiAwKSArIGNhcnJ5O1xuICAgIG5hdC5kYXRhW29mcytpXSA9ICh4IHwgMCk7XG4gICAgaWYoeCA9PSAoeCA+Pj4gMCkpIHtcbiAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBjYXJyeTtcbn1cblxuLy8gbGVuMSA+PSBsZW4yXG4vL1Byb3ZpZGVzOiBhZGRfbmF0XG4vL1JlcXVpcmVzOiBpbmNyX25hdFxuZnVuY3Rpb24gYWRkX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBjYXJyeV9pbikge1xuICB2YXIgY2FycnkgPSBjYXJyeV9pbjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4ID0gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSArIChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKyBjYXJyeTtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHhcbiAgICBpZih4ID09ICh4ID4+PiAwKSkge1xuICAgICAgY2FycnkgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXJyeSA9IDE7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbmNyX25hdChuYXQxLCBvZnMxK2xlbjIsIGxlbjEtbGVuMiwgY2FycnkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wbGVtZW50X25hdFxuZnVuY3Rpb24gY29tcGxlbWVudF9uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAoLTEgPj4+IDApIC0gKG5hdC5kYXRhW29mcytpXSA+Pj4gMCk7XG4gIH1cbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vUHJvdmlkZXM6IGRlY3JfbmF0XG5mdW5jdGlvbiBkZWNyX25hdChuYXQsIG9mcywgbGVuLCBjYXJyeV9pbikge1xuICB2YXIgYm9ycm93ID0gKGNhcnJ5X2luID09IDEpID8gMCA6IDE7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciB4ID0gKG5hdC5kYXRhW29mcytpXSA+Pj4wKSAtIGJvcnJvdztcbiAgICBuYXQuZGF0YVtvZnMraV0gPSB4O1xuICAgIGlmICh4ID49IDApIHtcbiAgICAgIGJvcnJvdyA9IDA7XG4gICAgICBicmVhaztcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChib3Jyb3cgPT0gMSkgPyAwIDogMTtcbn1cblxuLy8gb2NhbWwgZmxpcHMgY2FycnlfaW5cbi8vIGxlbjEgPj0gbGVuMlxuLy9Qcm92aWRlczogc3ViX25hdFxuLy9SZXF1aXJlczogZGVjcl9uYXRcbmZ1bmN0aW9uIHN1Yl9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbGVuMiwgY2FycnlfaW4pIHtcbiAgdmFyIGJvcnJvdyA9IChjYXJyeV9pbiA9PSAxKSA/IDAgOiAxO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMjsgaSsrKSB7XG4gICAgdmFyIHggPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApIC0gKG5hdDIuZGF0YVtvZnMyK2ldID4+PiAwKSAtIGJvcnJvdztcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHg7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgYm9ycm93ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgYm9ycm93ID0gMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlY3JfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCAoYm9ycm93PT0xKT8wOjEpO1xufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzW29mczNdXG4vLyBsZW4xID49IGxlbjJcbi8vUHJvdmlkZXM6IG11bHRfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBhZGRfbmF0LCBuYXRfb2ZfYXJyYXlcbmZ1bmN0aW9uIG11bHRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDMsIG9mczMpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGEgPSAobmF0My5kYXRhW29mczNdID4+PiAwKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjI7IGkrKykge1xuICAgIHZhciB4MSA9IChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgKyAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApICogKGEgJiAweDAwMDBGRkZGKSArIGNhcnJ5O1xuICAgIHZhciB4MiA9IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkgKiAoYSA+Pj4gMTYpO1xuICAgIGNhcnJ5ID0gTWF0aC5mbG9vcih4Mi82NTUzNik7XG4gICAgdmFyIHgzID0geDEgKyAoeDIgJSA2NTUzNikgKiA2NTUzNjtcbiAgICBuYXQxLmRhdGFbb2ZzMStpXSA9IHgzO1xuICAgIGNhcnJ5ICs9IE1hdGguZmxvb3IoeDMvNDI5NDk2NzI5Nik7XG4gIH1cblxuICBpZihsZW4yIDwgbGVuMSAmJiBjYXJyeSkge1xuICAgIHJldHVybiBhZGRfbmF0KG5hdDEsIG9mczErbGVuMiwgbGVuMS1sZW4yLCBuYXRfb2ZfYXJyYXkoW2NhcnJ5XSksIDAsIDEsIDApO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjYXJyeTtcbiAgfVxufVxuXG4vLyBuYXQxICs9IG5hdDIgKiBuYXQzXG4vLyBsZW4xID49IGxlbjIgKyBsZW4zLlxuLy9Qcm92aWRlczogbXVsdF9uYXRcbi8vUmVxdWlyZXM6IG11bHRfZGlnaXRfbmF0XG5mdW5jdGlvbiBtdWx0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yLCBuYXQzLCBvZnMzLCBsZW4zKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW4zOyBpKyspIHtcbiAgICBjYXJyeSArPSBtdWx0X2RpZ2l0X25hdChuYXQxLCBvZnMxK2ksIGxlbjEtaSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0Mywgb2ZzMytpKTtcbiAgfVxuICByZXR1cm4gY2Fycnk7XG59XG5cbi8vIG5hdDEgPSAyICogbmF0MSArIG5hdDIgKiBuYXQyXG4vLyBsZW4xID49IDIgKiBsZW4yXG4vL1Byb3ZpZGVzOiBzcXVhcmVfbmF0XG4vL1JlcXVpcmVzOiBtdWx0X25hdCwgYWRkX25hdFxuZnVuY3Rpb24gc3F1YXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIGNhcnJ5ICs9IGFkZF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0MSwgb2ZzMSwgbGVuMSwgMCk7XG4gIGNhcnJ5ICs9IG11bHRfbmF0KG5hdDEsIG9mczEsIGxlbjEsIG5hdDIsIG9mczIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpO1xuICByZXR1cm4gY2Fycnk7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9sZWZ0X25hdFxuZnVuY3Rpb24gc2hpZnRfbGVmdF9uYXQobmF0MSwgb2ZzMSwgbGVuMSwgbmF0Miwgb2ZzMiwgbmJpdHMpIHtcbiAgaWYobmJpdHMgPT0gMCkge1xuICAgIG5hdDIuZGF0YVtvZnMyXSA9IDA7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgdmFyIHdyYXAgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7XG4gICAgdmFyIGEgPSAobmF0MS5kYXRhW29mczEraV0gPj4+IDApO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPDwgbmJpdHMpIHwgd3JhcDtcbiAgICB3cmFwID0gYSA+Pj4gKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vLyBBc3N1bWluZyBjID4gYSwgcmV0dXJucyBbcXVvdGllbnQsIHJlbWFpbmRlcl0gb2YgKGE8PDMyICsgYikvY1xuLy9Qcm92aWRlczogZGl2X2hlbHBlclxuZnVuY3Rpb24gZGl2X2hlbHBlcihhLCBiLCBjKSB7XG4gIHZhciB4ID0gYSAqIDY1NTM2ICsgKGI+Pj4xNik7XG4gIHZhciB5ID0gTWF0aC5mbG9vcih4L2MpICogNjU1MzY7XG4gIHZhciB6ID0gKHggJSBjKSAqIDY1NTM2O1xuICB2YXIgdyA9IHogKyAoYiAmIDB4MDAwMEZGRkYpO1xuICByZXR1cm4gW3kgKyBNYXRoLmZsb29yKHcvYyksIHcgJSBjXTtcbn1cblxuLy8gbmF0MVtvZnMxK2xlbl0gPCBuYXQyW29mczJdXG4vL1Byb3ZpZGVzOiBkaXZfZGlnaXRfbmF0XG4vL1JlcXVpcmVzOiBkaXZfaGVscGVyXG5mdW5jdGlvbiBkaXZfZGlnaXRfbmF0KG5hdHEsIG9mc3EsIG5hdHIsIG9mc3IsIG5hdDEsIG9mczEsIGxlbiwgbmF0Miwgb2ZzMikge1xuICB2YXIgcmVtID0gKG5hdDEuZGF0YVtvZnMxK2xlbi0xXSA+Pj4wKTtcbiAgLy8gbmF0cVtvZnNxK2xlbi0xXSBpcyBndWFyYW50ZWVkIHRvIGJlIHplcm8gKGR1ZSB0byB0aGUgTVNEIHJlcXVpcmVtZW50KSxcbiAgLy8gYW5kIHNob3VsZCBub3QgYmUgd3JpdHRlbiB0by5cbiAgZm9yKHZhciBpID0gbGVuLTI7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIHggPSBkaXZfaGVscGVyKHJlbSwgKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDIuZGF0YVtvZnMyXSA+Pj4gMCkpO1xuICAgIG5hdHEuZGF0YVtvZnNxK2ldID0geFswXTtcbiAgICByZW0gPSB4WzFdO1xuICB9XG4gIG5hdHIuZGF0YVtvZnNyXSA9IHJlbTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vIG5hdDFbbmF0MjpdIDo9IG5hdDEgLyBuYXQyXG4vLyBuYXQxWzpuYXQyXSA6PSBuYXQxICUgbmF0MlxuLy8gbGVuMSA+IGxlbjIsIG5hdDJbb2ZzMitsZW4yLTFdID4gbmF0MVtvZnMxK2xlbjEtMV1cbi8vUHJvdmlkZXM6IGRpdl9uYXRcbi8vUmVxdWlyZXM6IGRpdl9kaWdpdF9uYXQsIGRpdl9oZWxwZXIsIG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdCwgc2hpZnRfbGVmdF9uYXQsIHNoaWZ0X3JpZ2h0X25hdCwgY3JlYXRlX25hdCwgc2V0X3RvX3plcm9fbmF0LCBtdWx0X2RpZ2l0X25hdCwgc3ViX25hdCwgY29tcGFyZV9uYXQsIG5hdF9vZl9hcnJheVxuZnVuY3Rpb24gZGl2X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIGlmKGxlbjIgPT0gMSkge1xuICAgIGRpdl9kaWdpdF9uYXQobmF0MSwgb2ZzMSsxLCBuYXQxLCBvZnMxLCBuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciBzID0gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdDIsIG9mczIrbGVuMi0xKTtcbiAgc2hpZnRfbGVmdF9uYXQobmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFswXSksIDAsIHMpO1xuICBzaGlmdF9sZWZ0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7XG5cbiAgdmFyIGQgPSAobmF0Mi5kYXRhW29mczIrbGVuMi0xXSA+Pj4gMCkgKyAxO1xuICB2YXIgYSA9IGNyZWF0ZV9uYXQobGVuMisxKTtcbiAgZm9yICh2YXIgaSA9IGxlbjEgLSAxOyBpID49IGxlbjI7IGktLSkge1xuICAgIC8vIERlY2VudCBsb3dlciBib3VuZCBvbiBxdW9cbiAgICB2YXIgcXVvID0gZCA9PSA0Mjk0OTY3Mjk2ID8gKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA6IGRpdl9oZWxwZXIoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSwgKG5hdDEuZGF0YVtvZnMxK2ktMV0gPj4+MCksIGQpWzBdO1xuICAgIHNldF90b196ZXJvX25hdChhLCAwLCBsZW4yKzEpO1xuICAgIG11bHRfZGlnaXRfbmF0KGEsIDAsIGxlbjIrMSwgbmF0Miwgb2ZzMiwgbGVuMiwgbmF0X29mX2FycmF5KFtxdW9dKSwgMCk7XG4gICAgc3ViX25hdChuYXQxLCBvZnMxK2ktbGVuMiwgbGVuMisxLCBhLCAwLCBsZW4yKzEsIDEpO1xuXG4gICAgd2hpbGUgKG5hdDEuZGF0YVtvZnMxK2ldICE9IDAgfHwgY29tcGFyZV9uYXQobmF0MSwgb2ZzMStpLWxlbjIsIGxlbjIsIG5hdDIsIG9mczIsIGxlbjIpID49IDApIHtcbiAgICAgIHF1byA9IHF1byArIDE7XG4gICAgICBzdWJfbmF0KG5hdDEsIG9mczEraS1sZW4yLCBsZW4yKzEsIG5hdDIsIG9mczIsIGxlbjIsIDEpO1xuICAgIH1cblxuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gcXVvO1xuICB9XG5cbiAgc2hpZnRfcmlnaHRfbmF0KG5hdDEsIG9mczEsIGxlbjIsIG5hdF9vZl9hcnJheShbMF0pLCAwLCBzKTsgLy8gc2hpZnQgcmVtYWluZGVyXG4gIHNoaWZ0X3JpZ2h0X25hdChuYXQyLCBvZnMyLCBsZW4yLCBuYXRfb2ZfYXJyYXkoWzBdKSwgMCwgcyk7IC8vIHJlc3RvcmVcbiAgcmV0dXJuIDA7XG59XG5cblxuLy8gMCA8PSBzaGlmdCA8IDMyXG4vL1Byb3ZpZGVzOiBzaGlmdF9yaWdodF9uYXRcbmZ1bmN0aW9uIHNoaWZ0X3JpZ2h0X25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBuYml0cykge1xuICBpZihuYml0cyA9PSAwKSB7XG4gICAgbmF0Mi5kYXRhW29mczJdID0gMDtcbiAgICByZXR1cm4gMDtcbiAgfVxuICB2YXIgd3JhcCA9IDA7XG4gIGZvcih2YXIgaSA9IGxlbjEtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgYSA9IG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwO1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gKGEgPj4+IG5iaXRzKSB8IHdyYXA7XG4gICAgd3JhcCA9IGEgPDwgKDMyIC0gbmJpdHMpO1xuICB9XG4gIG5hdDIuZGF0YVtvZnMyXSA9IHdyYXA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjb21wYXJlX2RpZ2l0c19uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfZGlnaXRzX25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA+IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIDE7XG4gIGlmKG5hdDEuZGF0YVtvZnMxXSA8IG5hdDIuZGF0YVtvZnMyXSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRcbi8vUmVxdWlyZXM6IG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdChuYXQxLCBvZnMxLCBsZW4xLCBuYXQyLCBvZnMyLCBsZW4yKSB7XG4gIHZhciBhID0gbnVtX2RpZ2l0c19uYXQobmF0MSwgb2ZzMSwgbGVuMSk7XG4gIHZhciBiID0gbnVtX2RpZ2l0c19uYXQobmF0Miwgb2ZzMiwgbGVuMik7XG4gIGlmKGEgPiBiKSByZXR1cm4gMTtcbiAgaWYoYSA8IGIpIHJldHVybiAtMTtcbiAgZm9yKHZhciBpID0gbGVuMSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKChuYXQxLmRhdGFbb2ZzMStpXSA+Pj4gMCkgPiAobmF0Mi5kYXRhW29mczIraV0gPj4+IDApKSByZXR1cm4gMTtcbiAgICBpZiAoKG5hdDEuZGF0YVtvZnMxK2ldID4+PiAwKSA8IChuYXQyLmRhdGFbb2ZzMitpXSA+Pj4gMCkpIHJldHVybiAtMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY29tcGFyZV9uYXRfcmVhbFxuLy9SZXF1aXJlczogY29tcGFyZV9uYXRcbmZ1bmN0aW9uIGNvbXBhcmVfbmF0X3JlYWwobmF0MSxuYXQyKXtcbiAgcmV0dXJuIGNvbXBhcmVfbmF0KG5hdDEsMCxuYXQxLmRhdGEubGVuZ3RoLG5hdDIsMCxuYXQyLmRhdGEubGVuZ3RoKTtcbn1cblxuLy9Qcm92aWRlczogbGFuZF9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxhbmRfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdICY9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGxvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGxvcl9kaWdpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMikge1xuICBuYXQxLmRhdGFbb2ZzMV0gfD0gbmF0Mi5kYXRhW29mczJdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbHhvcl9kaWdpdF9uYXRcbmZ1bmN0aW9uIGx4b3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIF49IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogc2VyaWFsaXplX25hdFxuZnVuY3Rpb24gc2VyaWFsaXplX25hdCh3cml0ZXIsIG5hdCwgc3ope1xuICB2YXIgbGVuID0gbmF0LmRhdGEubGVuZ3RoO1xuICB3cml0ZXIud3JpdGUoMzIsIGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgd3JpdGVyLndyaXRlKDMyLCBuYXQuZGF0YVtpXSk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICBzelsxXSA9IGxlbiAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGRlc2VyaWFsaXplX25hdFxuLy9SZXF1aXJlczogTWxOYXRcbmZ1bmN0aW9uIGRlc2VyaWFsaXplX25hdChyZWFkZXIsIHN6KXtcbiAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIHZhciBuYXQgPSBuZXcgTWxOYXQobGVuKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBuYXQuZGF0YVtpXSA9IHJlYWRlci5yZWFkMzJzKCk7XG4gIH1cbiAgc3pbMF0gPSBsZW4gKiA0O1xuICByZXR1cm4gbmF0O1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZVxudmFyIGNhbWxfZ3Jfc3RhdGU7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfZ2V0KCkge1xuICBpZihjYW1sX2dyX3N0YXRlKSB7XG4gICAgcmV0dXJuIGNhbWxfZ3Jfc3RhdGU7XG4gIH1cbiAgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLGNhbWxfbmFtZWRfdmFsdWUoXCJHcmFwaGljcy5HcmFwaGljX2ZhaWx1cmVcIiksIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJOb3QgaW5pdGlhbGl6ZWRcIildKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlLGNhbWxfZ3Jfc3RhdGVfaW5pdFxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KSB7XG4gIGNhbWxfZ3Jfc3RhdGU9Y3R4O1xuICBjYW1sX2dyX3N0YXRlX2luaXQoKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fZ3JhcGgoaW5mbyl7XG4gIHZhciBpbmZvID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoaW5mbyk7XG4gIGZ1bmN0aW9uIGdldChuYW1lKXtcbiAgICB2YXIgcmVzID0gaW5mby5tYXRjaChcIihefCwpICpcIituYW1lK1wiICo9ICooW2EtekEtWjAtOV9dKykgKigsfCQpXCIpO1xuICAgIGlmKHJlcykgcmV0dXJuIHJlc1syXTtcbiAgfVxuICB2YXIgc3BlY3MgPSBbXTtcbiAgaWYoIShpbmZvPT1cIlwiKSkgc3BlY3MucHVzaChpbmZvKTtcbiAgdmFyIHRhcmdldCA9IGdldChcInRhcmdldFwiKTtcbiAgaWYoIXRhcmdldCkgdGFyZ2V0PVwiXCI7XG4gIHZhciBzdGF0dXMgPSBnZXQoXCJzdGF0dXNcIik7XG4gIGlmKCFzdGF0dXMpIHNwZWNzLnB1c2goXCJzdGF0dXM9MVwiKVxuXG4gIHZhciB3ID0gZ2V0KFwid2lkdGhcIik7XG4gIHcgPSB3P3BhcnNlSW50KHcpOjIwMDtcbiAgc3BlY3MucHVzaChcIndpZHRoPVwiK3cpO1xuXG4gIHZhciBoID0gZ2V0KFwiaGVpZ2h0XCIpO1xuICBoID0gaD9wYXJzZUludChoKToyMDA7XG4gIHNwZWNzLnB1c2goXCJoZWlnaHQ9XCIraCk7XG5cbiAgdmFyIHdpbiA9IGdsb2JhbFRoaXMub3BlbihcImFib3V0OmJsYW5rXCIsdGFyZ2V0LHNwZWNzLmpvaW4oXCIsXCIpKTtcbiAgaWYoIXdpbikge2NhbWxfZmFpbHdpdGgoXCJHcmFwaGljcy5vcGVuX2dyYXBoOiBjYW5ub3Qgb3BlbiB0aGUgd2luZG93XCIpfVxuICB2YXIgZG9jID0gd2luLmRvY3VtZW50O1xuICB2YXIgY2FudmFzID0gZG9jLmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gIGNhbnZhcy53aWR0aCA9IHc7XG4gIGNhbnZhcy5oZWlnaHQgPSBoO1xuICB2YXIgY3R4ID0gY2FtbF9ncl9zdGF0ZV9jcmVhdGUoY2FudmFzLHcsaCk7XG4gIGN0eC5zZXRfdGl0bGUgPSBmdW5jdGlvbiAodGl0bGUpIHtcbiAgICBkb2MudGl0bGUgPSB0aXRsZTtcbiAgfTtcbiAgY2FtbF9ncl9zdGF0ZV9zZXQoY3R4KTtcbiAgdmFyIGJvZHkgPSBkb2MuYm9keTtcbiAgYm9keS5zdHlsZS5tYXJnaW4gPSBcIjBweFwiO1xuICBib2R5LmFwcGVuZENoaWxkKGNhbnZhcyk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2luaXRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yLGNhbWxfZ3JfbW92ZXRvLGNhbWxfZ3JfcmVzaXplX3dpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfbGluZV93aWR0aCxjYW1sX2dyX3NldF90ZXh0X3NpemUsY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2luaXQoKXtcbiAgY2FtbF9ncl9tb3ZldG8oY2FtbF9ncl9zdGF0ZS54LGNhbWxfZ3Jfc3RhdGUueSk7XG4gIGNhbWxfZ3JfcmVzaXplX3dpbmRvdyhjYW1sX2dyX3N0YXRlLndpZHRoLGNhbWxfZ3Jfc3RhdGUuaGVpZ2h0KTtcbiAgY2FtbF9ncl9zZXRfbGluZV93aWR0aChjYW1sX2dyX3N0YXRlLmxpbmVfd2lkdGgpO1xuICBjYW1sX2dyX3NldF90ZXh0X3NpemUoY2FtbF9ncl9zdGF0ZS50ZXh0X3NpemUpO1xuICBjYW1sX2dyX3NldF9mb250KGNhbWxfZ3Jfc3RhdGUuZm9udCk7XG4gIGNhbWxfZ3Jfc2V0X2NvbG9yKGNhbWxfZ3Jfc3RhdGUuY29sb3IpO1xuICBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUoY2FtbF9ncl9zdGF0ZS50aXRsZSk7XG4gIC8vY2FtbF9ncl9yZXNpemVfd2luZG93IG1pZ2h0IHJlc2V0IHNvbWUgY2FudmFzJyBwcm9wZXJ0aWVzXG4gIGNhbWxfZ3Jfc3RhdGUuY29udGV4dC50ZXh0QmFzZWxpbmUgPSAnYm90dG9tJztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpe1xuICB2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIik7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dCxcbiAgICBjYW52YXMgOiBjYW52YXMsXG4gICAgeCA6IDAsXG4gICAgeSA6IDAsXG4gICAgd2lkdGggOiB3LFxuICAgIGhlaWdodCA6IGgsXG4gICAgbGluZV93aWR0aCA6IDEsXG4gICAgZm9udCA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJmaXhlZFwiKSxcbiAgICB0ZXh0X3NpemUgOiAyNixcbiAgICBjb2xvciA6IDB4MDAwMDAwLFxuICAgIHRpdGxlIDogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIlwiKVxuICB9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RvY19vZl9zdGF0ZVxuZnVuY3Rpb24gY2FtbF9ncl9kb2Nfb2Zfc3RhdGUoc3RhdGUpIHtcbiAgaWYoc3RhdGUuY2FudmFzLm93bmVyRG9jdW1lbnQpXG4gICAgcmV0dXJuIHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gMDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGUobmFtZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50aXRsZSA9IG5hbWU7XG4gIHZhciBqc25hbWUgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYocy5zZXRfdGl0bGUpIHMuc2V0X3RpdGxlKGpzbmFtZSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Jlc2l6ZV93aW5kb3codyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpXG4gIHMud2lkdGggPSB3O1xuICBzLmhlaWdodCA9IGg7XG4gIHMuY2FudmFzLndpZHRoID0gdztcbiAgcy5jYW52YXMuaGVpZ2h0ID0gaDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY2xlYXJfZ3JhcGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2NsZWFyX2dyYXBoKCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jYW52YXMud2lkdGggPSBzLndpZHRoO1xuICBzLmNhbnZhcy5oZWlnaHQgPSBzLmhlaWdodDtcbiAgLy8gIHMuY29udGV4dC5zdHJva2VSZWN0ICgwLiwgMC4sIHMud2lkdGgsIHMuaGVpZ2h0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy53aWR0aDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2l6ZV95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zaXplX3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5oZWlnaHQ7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9jb2xvcihjb2xvcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgZnVuY3Rpb24gY29udmVydChudW1iZXIpIHtcbiAgICB2YXIgc3RyID0gJycgKyBudW1iZXIudG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChzdHIubGVuZ3RoIDwgMikgc3RyID0gJzAnICsgc3RyO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgdmFyXG4gIHIgPSAoY29sb3IgPj4gMTYpICYgMHhmZixcbiAgZyA9IChjb2xvciA+PiA4KSAgJiAweGZmLFxuICBiID0gKGNvbG9yID4+IDApICAmIDB4ZmY7XG4gIHMuY29sb3I9Y29sb3I7XG4gIHZhciBjX3N0ciA9ICcjJyArIGNvbnZlcnQocikgKyBjb252ZXJ0KGcpICsgY29udmVydChiKTtcbiAgcy5jb250ZXh0LmZpbGxTdHlsZSA9ICAgY19zdHI7XG4gIHMuY29udGV4dC5zdHJva2VTdHlsZSA9IGNfc3RyO1xuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcGxvdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcGxvdCh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbT1zLmNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKDEsMSk7XG4gIHZhciBkID0gaW0uZGF0YTtcbiAgdmFyIGNvbG9yID0gcy5jb2xvcjtcbiAgZFswXSA9IChjb2xvciA+PiAxNikgJiAweGZmOyAvL3JcbiAgZFsxXSA9IChjb2xvciA+PiA4KSAgJiAweGZmLCAvL2dcbiAgZFsyXSA9IChjb2xvciA+PiAwKSAgJiAweGZmOyAvL2JcbiAgZFszXSA9IDB4RkY7IC8vYVxuICBzLng9eDtcbiAgcy55PXk7XG4gIHMuY29udGV4dC5wdXRJbWFnZURhdGEoaW0seCxzLmhlaWdodCAtIHkpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9wb2ludF9jb2xvclxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfcG9pbnRfY29sb3IoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmdldEltYWdlRGF0YSh4LHMuaGVpZ2h0IC0geSwxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHJldHVybiAoZFswXSA8PCAxNikgKyAoZFsxXSA8PCA4KSArIGRbMl07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21vdmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbW92ZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy54PXg7XG4gIHMueT15O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jdXJyZW50X3hcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2N1cnJlbnRfeCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHJldHVybiBzLnhcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF95XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3koKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy55XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2xpbmV0b1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfbGluZXRvKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMuY29udGV4dC5saW5lVG8oeCxzLmhlaWdodCAtIHkpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5zdHJva2VSZWN0KHgscy5oZWlnaHQgLSB5LHcsLWgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9hcmNfYXV4XG5mdW5jdGlvbiBjYW1sX2dyX2FyY19hdXgoY3R4LGN4LGN5LHJ5LHJ4LGExLGEyKXtcbiAgd2hpbGUoYTE+YTIpIGEyKz0zNjA7XG4gIGExIC89IDE4MDtcbiAgYTIgLz0gMTgwO1xuICB2YXIgcm90ID0gMCx4UG9zLHlQb3MseFBvc19wcmV2LHlQb3NfcHJldjtcbiAgdmFyIHNwYWNlID0gMjtcbiAgdmFyIG51bSA9ICgoKGEyIC0gYTEpICogTWF0aC5QSSAqICgocngrcnkpLzIpKSAvIHNwYWNlKSB8IDA7XG4gIHZhciBkZWx0YSA9IChhMiAtIGExKSAqIE1hdGguUEkgLyBudW07XG4gIHZhciBpID0gYTEgKiBNYXRoLlBJO1xuICBmb3IgKHZhciBqPTA7ajw9bnVtO2orKyl7XG4gICAgeFBvcyA9IGN4IC0gKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5zaW4ocm90ICogTWF0aC5QSSkgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLmNvcyhyb3QgKiBNYXRoLlBJKTtcbiAgICB4UG9zID0geFBvcy50b0ZpeGVkKDIpO1xuICAgIHlQb3MgPSBjeSArIChyeSAqIE1hdGguY29zKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ4ICogTWF0aC5zaW4oaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeVBvcyA9IHlQb3MudG9GaXhlZCgyKTtcbiAgICBpZiAoaj09MCkge1xuICAgICAgY3R4Lm1vdmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9IGVsc2UgaWYgKHhQb3NfcHJldiE9eFBvcyB8fCB5UG9zX3ByZXYhPXlQb3Mpe1xuICAgICAgY3R4LmxpbmVUbyh4UG9zLCB5UG9zKTtcbiAgICB9XG4gICAgeFBvc19wcmV2PXhQb3M7XG4gICAgeVBvc19wcmV2PXlQb3M7XG4gICAgaS09IGRlbHRhOy8vY2N3XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5zdHJva2UoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGhcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3NldF9saW5lX3dpZHRoKHcpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMubGluZV93aWR0aCA9IHc7XG4gIHMuY29udGV4dC5saW5lV2lkdGggPSB3XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcmVjdFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9yZWN0KHgseSx3LGgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5maWxsUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2ZpbGxfcG9seVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9wb2x5KGFyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIHMuY29udGV4dC5tb3ZlVG8oYXJbMV1bMV0scy5oZWlnaHQgLSBhclsxXVsyXSk7XG4gIGZvcih2YXIgaSA9IDI7IGkgPCBhci5sZW5ndGg7IGkrKylcbiAgICBzLmNvbnRleHQubGluZVRvKGFyW2ldWzFdLHMuaGVpZ2h0IC0gYXJbaV1bMl0pO1xuICBzLmNvbnRleHQubGluZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX2FyY1xuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXQsIGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9maWxsX2FyYyh4LHkscngscnksYTEsYTIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgY2FtbF9ncl9hcmNfYXV4KHMuY29udGV4dCx4LHMuaGVpZ2h0IC0geSxyeCxyeSxhMSxhMik7XG4gIHMuY29udGV4dC5maWxsKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cihzdHIpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBtID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KHN0cik7XG4gIHZhciBkeCA9IG0ud2lkdGg7XG4gIHMuY29udGV4dC5maWxsVGV4dChzdHIscy54LHMuaGVpZ2h0IC0gcy55KTtcbiAgcy54ICs9IGR4IHwgMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfY2hhcihjKXtcbiAgY2FtbF9ncl9kcmF3X3N0cihTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfZ3JfZHJhd19zdHJcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfc3RyaW5nKHN0cil7XG4gIGNhbWxfZ3JfZHJhd19zdHIoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoc3RyKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9mb250XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X2ZvbnQoZil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5mb250ID0gZjtcbiAgcy5jb250ZXh0LmZvbnQgPSBzLnRleHRfc2l6ZSArIFwicHggXCIgKyBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzLmZvbnQpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZShzaXplKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLnRleHRfc2l6ZSA9IHNpemU7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfdGV4dF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZ3JfdGV4dF9zaXplKHR4dCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIHcgPSBzLmNvbnRleHQubWVhc3VyZVRleHQoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcodHh0KSkud2lkdGg7XG4gIHJldHVybiBbMCx3LHMudGV4dF9zaXplXTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX21ha2VfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21ha2VfaW1hZ2UoYXJyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaCA9IGFyci5sZW5ndGggLSAxIDtcbiAgdmFyIHcgPSBhcnJbMV0ubGVuZ3RoIC0gMTtcbiAgdmFyIGltID0gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh3LGgpO1xuICBmb3IodmFyIGk9MDtpPGg7aSsrKXtcbiAgICBmb3IodmFyIGo9MDtqPHc7aisrKXtcbiAgICAgIHZhciBjID0gYXJyW2krMV1baisxXTtcbiAgICAgIHZhciBvID0gaSoodyo0KSArIChqICogNCk7XG4gICAgICBpZihjID09IC0xKSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMV0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGltLmRhdGFbbyArIDBdID0gYyA+PiAxNiAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gYyA+PiAgOCAmIDB4ZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDJdID0gYyA+PiAgMCAmIDBYZmY7XG4gICAgICAgIGltLmRhdGFbbyArIDNdID0gMHhmZjtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGltXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2R1bXBfaW1hZ2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2R1bXBfaW1hZ2UoaW0pe1xuICB2YXIgZGF0YSA9IFswXVxuICBmb3IodmFyIGk9MDsgaTxpbS5oZWlnaHQ7aSsrKXtcbiAgICBkYXRhW2krMV0gPSBbMF1cbiAgICBmb3IodmFyIGo9MDsgajxpbS53aWR0aDtqKyspe1xuICAgICAgdmFyIG8gPSBpKihpbS53aWR0aCo0KSArIChqICogNCksXG4gICAgICAgICAgciA9IGltLmRhdGFbbyswXSxcbiAgICAgICAgICBnID0gaW0uZGF0YVtvKzFdLFxuICAgICAgICAgIGIgPSBpbS5kYXRhW28rMl07XG4gICAgICBkYXRhW2krMV1baisxXSA9IChyIDw8IDE2KSArIChnIDw8IDgpICsgYlxuICAgIH1cbiAgfVxuICByZXR1cm4gZGF0YVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgaWYoIWltLmltYWdlKSB7XG4gICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5wdXRJbWFnZURhdGEoaW0sMCwwKTtcbiAgICB2YXIgaW1hZ2UgPSBuZXcgZ2xvYmFsVGhpcy5JbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHMuY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UseCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHkpO1xuICAgICAgaW0uaW1hZ2UgPSBpbWFnZTtcbiAgICB9XG4gICAgaW1hZ2Uuc3JjID0gY2FudmFzLnRvRGF0YVVSTChcImltYWdlL3BuZ1wiKTtcbiAgfSBlbHNlIHtcbiAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltLmltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3JlYXRlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jcmVhdGVfaW1hZ2UoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSh4LHkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9ibGl0X2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9ibGl0X2ltYWdlKGltLHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltMiA9IHMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIGltLmhlaWdodCAtIHksaW0ud2lkdGgsaW0uaGVpZ2h0KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbTIuZGF0YS5sZW5ndGg7IGkrPTQpe1xuICAgIGltLmRhdGFbaV0gPSBpbTIuZGF0YVtpXTtcbiAgICBpbS5kYXRhW2krMV0gPSBpbTIuZGF0YVtpKzFdO1xuICAgIGltLmRhdGFbaSsyXSA9IGltMi5kYXRhW2krMl07XG4gICAgaW0uZGF0YVtpKzNdID0gaW0yLmRhdGFbaSszXTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2lnaW9faGFuZGxlclxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19oYW5kbGVyKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9ncl9zaWdpb19zaWduYWwoKXtyZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfd2FpdF9ldmVudFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93YWl0X2V2ZW50KF9ldmwpe1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93YWl0X2V2ZW50IG5vdCBJbXBsZW1lbnRlZDogdXNlIEdyYXBoaWNzX2pzIGluc3RlYWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3luY2hyb25pemVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3luY2hyb25pemUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9zeW5jaHJvbml6ZSBub3QgSW1wbGVtZW50ZWRcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3JlbWVtYmVyX21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfcmVtZW1iZXJfbW9kZSAoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX3JlbWVtYmVyX21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kaXNwbGF5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfZGlzcGxheV9tb2RlKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9kaXNwbGF5X21vZGUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dpbmRvd19pZFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl93aW5kb3dfaWQoYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl93aW5kb3dfaWQgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX29wZW5fc3Vid2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX29wZW5fc3Vid2luZG93KGEsYixjLGQpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2Nsb3NlX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3coYSkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3cgbm90IEltcGxlbWVudGVkXCIpO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxudmFyIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4ID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyXG4vL1JlcXVpcmVzOiBjYW1sX2N1c3RvbV9ldmVudF9pbmRleFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyKGV2ZW50X25hbWUsIGV2ZW50X3RhZywgZXZlbnRfdHlwZSkge1xuICBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCArPSAxO1xuICByZXR1cm4gWzAsIGNhbWxfY3VzdG9tX2V2ZW50X2luZGV4LCBldmVudF9uYW1lLCBldmVudF90eXBlLCBldmVudF90YWddO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl93cml0ZShldmVudCwgZXZlbnRfY29udGVudCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3Jlc29sdmVcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19zdGFydCgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcGF1c2UoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZVxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZXN1bWUoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2NyZWF0ZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvcih0YXJnZXQpIHtcbiAgcmV0dXJuIHt9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX2ZyZWVfY3Vyc29yKGN1cnNvcikge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGxcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsKGN1cnNvciwgY2FsbGJhY2tzLCBudW0pIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2NvbnN0YW50c1xudmFyIGNhbWxfbWFyc2hhbF9jb25zdGFudHMgPSB7XG4gIFBSRUZJWF9TTUFMTF9CTE9DSzogICAgICAgICAweDgwLFxuICBQUkVGSVhfU01BTExfSU5UOiAgICAgICAgICAgMHg0MCxcbiAgUFJFRklYX1NNQUxMX1NUUklORzogICAgICAgIDB4MjAsXG4gIENPREVfSU5UODogICAgICAgICAgICAgICAgICAweDAwLFxuICBDT0RFX0lOVDE2OiAgICAgICAgICAgICAgICAgMHgwMSxcbiAgQ09ERV9JTlQzMjogICAgICAgICAgICAgICAgIDB4MDIsXG4gIENPREVfSU5UNjQ6ICAgICAgICAgICAgICAgICAweDAzLFxuICBDT0RFX1NIQVJFRDg6ICAgICAgICAgICAgICAgMHgwNCxcbiAgQ09ERV9TSEFSRUQxNjogICAgICAgICAgICAgIDB4MDUsXG4gIENPREVfU0hBUkVEMzI6ICAgICAgICAgICAgICAweDA2LFxuICBDT0RFX0JMT0NLMzI6ICAgICAgICAgICAgICAgMHgwOCxcbiAgQ09ERV9CTE9DSzY0OiAgICAgICAgICAgICAgIDB4MTMsXG4gIENPREVfU1RSSU5HODogICAgICAgICAgICAgICAweDA5LFxuICBDT0RFX1NUUklORzMyOiAgICAgICAgICAgICAgMHgwQSxcbiAgQ09ERV9ET1VCTEVfQklHOiAgICAgICAgICAgIDB4MEIsXG4gIENPREVfRE9VQkxFX0xJVFRMRTogICAgICAgICAweDBDLFxuICBDT0RFX0RPVUJMRV9BUlJBWThfQklHOiAgICAgMHgwRCxcbiAgQ09ERV9ET1VCTEVfQVJSQVk4X0xJVFRMRTogIDB4MEUsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfQklHOiAgICAweDBGLFxuICBDT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTogMHgwNyxcbiAgQ09ERV9DT0RFUE9JTlRFUjogICAgICAgICAgIDB4MTAsXG4gIENPREVfSU5GSVhQT0lOVEVSOiAgICAgICAgICAweDExLFxuICBDT0RFX0NVU1RPTTogICAgICAgICAgICAgICAgMHgxMixcbiAgQ09ERV9DVVNUT01fTEVOOiAgICAgICAgICAgIDB4MTgsXG4gIENPREVfQ1VTVE9NX0ZJWEVEOiAgICAgICAgICAweDE5XG59XG5cblxuLy9Qcm92aWRlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIFVJbnQ4QXJyYXlSZWFkZXIgKHMsIGkpIHsgdGhpcy5zID0gczsgdGhpcy5pID0gaTsgfVxuVUludDhBcnJheVJlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5zW3RoaXMuaSsrXSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDgpIHwgc1tpICsgMV1cbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzW2ldIDw8IDI0ID4+IDE2KSB8IHNbaSArIDFdO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzW2ldIDw8IDI0KSB8IChzW2krMV0gPDwgMTYpIHxcbiAgICAgICAgICAgIChzW2krMl0gPDwgOCkgfCBzW2krM10pID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkodGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIHRoaXMucy5zdWJhcnJheShpLCBpICsgbGVuKTtcbiAgfVxufVxuXG5cbi8vUHJvdmlkZXM6IE1sU3RyaW5nUmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBNbFN0cmluZ1JlYWRlciAocywgaSkgeyB0aGlzLnMgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpOyB0aGlzLmkgPSBpOyB9XG5NbFN0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnMuY2hhckNvZGVBdCh0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHMuY2hhckNvZGVBdChpKSA8PCAyNCA+PiAxNikgfCBzLmNoYXJDb2RlQXQoaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0KSB8IChzLmNoYXJDb2RlQXQoaSsxKSA8PCAxNikgfFxuICAgICAgKHMuY2hhckNvZGVBdChpKzIpIDw8IDgpIHwgcy5jaGFyQ29kZUF0KGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5zLnN1YnN0cmluZyhpLCBpICsgbGVuKSk7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgdmFyIHMgPSB0aGlzLnM7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICBiW2pdID0gcy5jaGFyQ29kZUF0KGkgKyBqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gYjtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBCaWdTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5LCBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBCaWdTdHJpbmdSZWFkZXIgKGJzLCBpKSB7IHRoaXMucyA9IGJzOyB0aGlzLmkgPSBpOyB9XG5CaWdTdHJpbmdSZWFkZXIucHJvdG90eXBlID0ge1xuICByZWFkOHU6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspOyB9LFxuICByZWFkOHM6ZnVuY3Rpb24gKCkgeyByZXR1cm4gY2FtbF9iYV9nZXRfMSh0aGlzLnMsdGhpcy5pKyspIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCA4KSB8IGNhbWxfYmFfZ2V0XzEocyxpICsgMSlcbiAgfSxcbiAgcmVhZDE2czpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChjYW1sX2JhX2dldF8xKHMsaSkgPDwgMjQgPj4gMTYpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKTtcbiAgfSxcbiAgcmVhZDMydTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuICgoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAgICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMykgICAgICAgICApID4+PiAwO1xuICB9LFxuICByZWFkMzJzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSAgIDw8IDI0KSB8IChjYW1sX2JhX2dldF8xKHMsaSsxKSA8PCAxNikgfFxuICAgICAgKGNhbWxfYmFfZ2V0XzEocyxpKzIpIDw8IDgpICB8IGNhbWxfYmFfZ2V0XzEocyxpKzMpO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgYXJyID0gbmV3IEFycmF5KGxlbilcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspe1xuICAgICAgYXJyW2pdID0gY2FtbF9iYV9nZXRfMSh0aGlzLnMsIGkraik7XG4gICAgfVxuICAgIHRoaXMuaSA9IGkgKyBsZW47XG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGFycik7XG4gIH0sXG4gIHJlYWR1aW50OGFycmF5OmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQoaSk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLmRhdGEuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pO1xuICB9XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKGEpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAoY2FtbF9pbnQ2NF9vZl9ieXRlcyAoYSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IE1sU3RyaW5nUmVhZGVyLCBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fc3RyaW5nKHMsb2ZzKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgTWxTdHJpbmdSZWFkZXIgKHMsIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIsIGNhbWxfc3RyaW5nX29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAoY2FtbF9zdHJpbmdfb2ZfYnl0ZXMocyksIHR5cGVvZiBvZnM9PVwibnVtYmVyXCI/b2ZzOm9mc1swXSk7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gIHNpemVbMF0gPSA4O1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9ieXRlcyAodCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfbWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9tYXJzaGFsKHdyaXRlciwgdiwgc2l6ZXMpIHtcbiAgdmFyIGIgPSBjYW1sX2ludDY0X3RvX2J5dGVzICh2KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHdyaXRlci53cml0ZSAoOCwgYltpXSk7XG4gIHNpemVzWzBdID0gODsgc2l6ZXNbMV0gPSA4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX3VubWFyc2hhbFxuZnVuY3Rpb24gY2FtbF9pbnQzMl91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc2l6ZVswXSA9IDQ7XG4gIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwocmVhZGVyLCBzaXplKXtcbiAgc3dpdGNoIChyZWFkZXIucmVhZDh1ICgpKSB7XG4gIGNhc2UgMTpcbiAgICBzaXplWzBdID0gNDtcbiAgICByZXR1cm4gcmVhZGVyLnJlYWQzMnMgKCk7XG4gIGNhc2UgMjpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IG5hdGl2ZSBpbnRlZ2VyIHZhbHVlIHRvbyBsYXJnZVwiKTtcbiAgZGVmYXVsdDogY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG5hdGl2ZSBpbnRlZ2VyXCIpO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF91bm1hcnNoYWwsIGNhbWxfaW50NjRfbWFyc2hhbCwgY2FtbF9pbnQ2NF9jb21wYXJlLCBjYW1sX2ludDY0X2hhc2hcbi8vUmVxdWlyZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsLCBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2VyaWFsaXplLCBjYW1sX2JhX2Rlc2VyaWFsaXplLCBjYW1sX2JhX2NvbXBhcmUsIGNhbWxfYmFfaGFzaFxudmFyIGNhbWxfY3VzdG9tX29wcyA9XG4gICAge1wiX2pcIjoge1xuICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX2ludDY0X3VubWFyc2hhbCxcbiAgICAgIHNlcmlhbGl6ZSAgOiBjYW1sX2ludDY0X21hcnNoYWwsXG4gICAgICBmaXhlZF9sZW5ndGggOiA4LFxuICAgICAgY29tcGFyZSA6IGNhbWxfaW50NjRfY29tcGFyZSxcbiAgICAgIGhhc2ggOiBjYW1sX2ludDY0X2hhc2hcbiAgICB9LFxuICAgICBcIl9pXCI6IHtcbiAgICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50MzJfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX25cIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9uYXRpdmVpbnRfdW5tYXJzaGFsLFxuICAgICAgIGZpeGVkX2xlbmd0aCA6IDQsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycmF5XCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnJheVwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9LFxuICAgICBcIl9iaWdhcnIwMlwiOntcbiAgICAgICBkZXNlcmlhbGl6ZSA6IChmdW5jdGlvbiAocmVhZGVyLCBzeikge3JldHVybiBjYW1sX2JhX2Rlc2VyaWFsaXplIChyZWFkZXIsc3osXCJfYmlnYXJyMDJcIil9KSxcbiAgICAgICBzZXJpYWxpemUgOiBjYW1sX2JhX3NlcmlhbGl6ZSxcbiAgICAgICBjb21wYXJlIDogY2FtbF9iYV9jb21wYXJlLFxuICAgICAgIGhhc2g6IGNhbWxfYmFfaGFzaCxcbiAgICAgfVxuICAgIH1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2Zsb2F0X29mX2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IFVJbnQ4QXJyYXlSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcihyZWFkZXIsIG9mcykge1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgdmFyIG43ID0gbiA8PCA3O1xuICAgICAgaWYgKG4gIT0gbjcgPj4gNykgb3ZlcmZsb3dbMF0gPSB0cnVlO1xuICAgICAgbiA9IG43IHwgKGMgJiAweDdGKTtcbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cbiAgdmFyIG1hZ2ljID0gcmVhZGVyLnJlYWQzMnUgKClcbiAgc3dpdGNoKG1hZ2ljKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgY29tcHJlc3NlZCA9IDA7XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IGRhdGFfbGVuO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIHZhciBfc2l6ZV82NCA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByZWFkZXIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBjb21wcmVzc2VkID0gMTtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciB1bmNvbXByZXNzZWRfZGF0YV9sZW4gPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgbnVtX29iamVjdHMgPSByZWFkdmxxKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfMzIgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZHZscSAob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXI6IG9iamVjdCB0b28gbGFyZ2UgdG8gYmUgcmVhZCBiYWNrIG9uIHRoaXMgcGxhdGZvcm1cIik7XG4gICAgfVxuICAgIGJyZWFrXG4gIGNhc2UgMHg4NDk1QTZCRjogLyogSW50ZXh0X21hZ2ljX251bWJlcl9iaWcgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gYSAzMi1iaXQgcGxhdGZvcm1cIik7XG4gICAgYnJlYWtcbiAgZGVmYXVsdDpcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogYmFkIG9iamVjdFwiKTtcbiAgICBicmVhaztcbiAgfVxuICB2YXIgc3RhY2sgPSBbXTtcbiAgdmFyIGludGVybl9vYmpfdGFibGUgPSAobnVtX29iamVjdHMgPiAwKT9bXTpudWxsO1xuICB2YXIgb2JqX2NvdW50ZXIgPSAwO1xuICBmdW5jdGlvbiBpbnRlcm5fcmVjIChyZWFkZXIpIHtcbiAgICB2YXIgY29kZSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgaWYgKGNvZGUgPj0gMHg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8pIHtcbiAgICAgIGlmIChjb2RlID49IDB4ODAgLypjc3QuUFJFRklYX1NNQUxMX0JMT0NLKi8pIHtcbiAgICAgICAgdmFyIHRhZyA9IGNvZGUgJiAweEY7XG4gICAgICAgIHZhciBzaXplID0gKGNvZGUgPj4gNCkgJiAweDc7XG4gICAgICAgIHZhciB2ID0gW3RhZ107XG4gICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlXG4gICAgICAgIHJldHVybiAoY29kZSAmIDB4M0YpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY29kZSA+PSAweDIwLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyAqLykge1xuICAgICAgICB2YXIgbGVuID0gY29kZSAmIDB4MUY7XG4gICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2l0Y2goY29kZSkge1xuICAgICAgICBjYXNlIDB4MDA6IC8vY3N0LkNPREVfSU5UODpcbiAgICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWQ4cyAoKTtcbiAgICAgICAgY2FzZSAweDAxOiAvL2NzdC5DT0RFX0lOVDE2OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDE2cyAoKTtcbiAgICAgICAgY2FzZSAweDAyOiAvL2NzdC5DT0RFX0lOVDMyOlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgICAgICAgY2FzZSAweDAzOiAvL2NzdC5DT0RFX0lOVDY0OlxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogaW50ZWdlciB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwNDogLy9jc3QuQ09ERV9TSEFSRUQ4OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA1OiAvL2NzdC5DT0RFX1NIQVJFRDE2OlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDE2dSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwNjogLy9jc3QuQ09ERV9TSEFSRUQzMjpcbiAgICAgICAgICB2YXIgb2Zmc2V0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDg6IC8vY3N0LkNPREVfQkxPQ0szMjpcbiAgICAgICAgICB2YXIgaGVhZGVyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgdmFyIHRhZyA9IGhlYWRlciAmIDB4RkY7XG4gICAgICAgICAgdmFyIHNpemUgPSBoZWFkZXIgPj4gMTA7XG4gICAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSByZXR1cm4gdjtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDEzOiAvL2NzdC5DT0RFX0JMT0NLNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogZGF0YSBibG9jayB0b28gbGFyZ2VcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgwOTogLy9jc3QuQ09ERV9TVFJJTkc4OlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQTogLy9jc3QuQ09ERV9TVFJJTkczMjpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBDOiAvL2NzdC5DT0RFX0RPVUJMRV9MSVRUTEU6XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCA4O2krKykgdFs3IC0gaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEI6IC8vY3N0LkNPREVfRE9VQkxFX0JJRzpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0W2ldID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICAgICAgICB2YXIgdiA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBFOiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEQ6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwNzogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFs3IC0gal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2W2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEY6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZMzJfQklHOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMTtpIDw9IGxlbjtpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHYgW2ldID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTA6IC8vY3N0LkNPREVfQ09ERVBPSU5URVI6XG4gICAgICAgIGNhc2UgMHgxMTogLy9jc3QuQ09ERV9JTkZJWFBPSU5URVI6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogY29kZSBwb2ludGVyXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDB4MTI6IC8vY3N0LkNPREVfQ1VTVE9NOlxuICAgICAgICBjYXNlIDB4MTg6IC8vY3N0LkNPREVfQ1VTVE9NX0xFTjpcbiAgICAgICAgY2FzZSAweDE5OiAvL2NzdC5DT0RFX0NVU1RPTV9GSVhFRDpcbiAgICAgICAgICB2YXIgYywgcyA9IFwiXCI7XG4gICAgICAgICAgd2hpbGUgKChjID0gcmVhZGVyLnJlYWQ4dSAoKSkgIT0gMCkgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlIChjKTtcbiAgICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW3NdO1xuICAgICAgICAgIHZhciBleHBlY3RlZF9zaXplO1xuICAgICAgICAgIGlmKCFvcHMpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHVua25vd24gY3VzdG9tIGJsb2NrIGlkZW50aWZpZXJcIik7XG4gICAgICAgICAgc3dpdGNoKGNvZGUpe1xuICAgICAgICAgIGNhc2UgMHgxMjogLy8gY3N0LkNPREVfQ1VTVE9NIChkZXByZWNhdGVkKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE5OiAvLyBjc3QuQ09ERV9DVVNUT01fRklYRURcbiAgICAgICAgICAgIGlmKCFvcHMuZml4ZWRfbGVuZ3RoKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGV4cGVjdGVkIGEgZml4ZWQtc2l6ZSBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gb3BzLmZpeGVkX2xlbmd0aDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMHgxODogLy8gY3N0LkNPREVfQ1VTVE9NX0xFTlxuICAgICAgICAgICAgZXhwZWN0ZWRfc2l6ZSA9IHJlYWRlci5yZWFkMzJ1ICgpO1xuICAgICAgICAgICAgLy8gU2tpcCBzaXplNjRcbiAgICAgICAgICAgIHJlYWRlci5yZWFkMzJzKCk7IHJlYWRlci5yZWFkMzJzKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSByZWFkZXIuaTtcbiAgICAgICAgICB2YXIgc2l6ZSA9IFswXTtcbiAgICAgICAgICB2YXIgdiA9IG9wcy5kZXNlcmlhbGl6ZShyZWFkZXIsIHNpemUpO1xuICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKGV4cGVjdGVkX3NpemUgIT0gc2l6ZVswXSlcbiAgICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbmNvcnJlY3QgbGVuZ3RoIG9mIHNlcmlhbGl6ZWQgY3VzdG9tIGJsb2NrXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aCAoXCJpbnB1dF92YWx1ZTogaWxsLWZvcm1lZCBtZXNzYWdlXCIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmKGNvbXByZXNzZWQpIHtcbiAgICBpZihjYW1sX2RlY29tcHJlc3NfaW5wdXQpIHtcbiAgICAgIHZhciBkYXRhID0gcmVhZGVyLnJlYWR1aW50OGFycmF5KGRhdGFfbGVuKTtcbiAgICAgIHZhciByZXMgPSBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRfZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IGNhbWxfZGVjb21wcmVzc19pbnB1dChkYXRhLCByZXMpO1xuICAgICAgdmFyIHJlYWRlciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKHJlcywgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogY29tcHJlc3NlZCBvYmplY3QsIGNhbm5vdCBkZWNvbXByZXNzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcmVzID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICB2YXIgc2l6ZSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2ID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIGQgPSB2Lmxlbmd0aDtcbiAgICBpZiAoZCA8IHNpemUpIHN0YWNrLnB1c2godiwgc2l6ZSk7XG4gICAgdltkXSA9IGludGVybl9yZWMgKHJlYWRlcik7XG4gIH1cbiAgaWYgKHR5cGVvZiBvZnMhPVwibnVtYmVyXCIpIG9mc1swXSA9IHJlYWRlci5pO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbi8vVmVyc2lvbjogPCA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDIwXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA+PSA1LjEuMFxudmFyIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSA9IDE2XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG5mdW5jdGlvbiBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChzLCBvZnMpIHtcbiAgdmFyIHIgPSBuZXcgVUludDhBcnJheVJlYWRlcihjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHMpLCBvZnMpO1xuICBmdW5jdGlvbiByZWFkdmxxKG92ZXJmbG93KSB7XG4gICAgdmFyIGMgPSByLnJlYWQ4dSgpO1xuICAgIHZhciBuID0gYyAmIDB4N0Y7XG4gICAgd2hpbGUgKChjICYgMHg4MCkgIT0gMCkge1xuICAgICAgYyA9IHIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuXG4gIHN3aXRjaChyLnJlYWQzMnUoKSl7XG4gIGNhc2UgMHg4NDk1QTZCRTogLyogSW50ZXh0X21hZ2ljX251bWJlcl9zbWFsbCAqL1xuICAgIHZhciBoZWFkZXJfbGVuID0gMjA7XG4gICAgdmFyIGRhdGFfbGVuID0gci5yZWFkMzJ1KCk7XG4gICAgYnJlYWs7XG4gIGNhc2UgMHg4NDk1QTZCRDogLyogSW50ZXh0X21hZ2ljX251bWJlcl9jb21wcmVzc2VkICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSByLnJlYWQ4dSgpICYgMHgzRjtcbiAgICB2YXIgb3ZlcmZsb3cgPSBbZmFsc2VdO1xuICAgIHZhciBkYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIGlmKG92ZXJmbG93WzBdKXtcbiAgICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJNYXJzaGFsLmRhdGFfc2l6ZTogYmFkIG9iamVjdFwiKTtcbiAgICBicmVha1xuICB9XG4gIHJldHVybiBoZWFkZXJfbGVuIC0gY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplICsgZGF0YV9sZW47XG59XG5cbi8vUHJvdmlkZXM6IE1sT2JqZWN0VGFibGVcbnZhciBNbE9iamVjdFRhYmxlO1xuaWYgKHR5cGVvZiBnbG9iYWxUaGlzLk1hcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIC8qIHBvbHlmaWxsICh1c2luZyBsaW5lYXIgc2VhcmNoKSAqL1xuICAgIGZ1bmN0aW9uIE5haXZlTG9va3VwKG9ianMpIHsgdGhpcy5vYmpzID0gb2JqczsgfVxuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbih2KSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Jqcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodGhpcy5vYmpzW2ldID09PSB2KSByZXR1cm4gaTtcbiAgICAgIH1cbiAgICB9O1xuICAgIE5haXZlTG9va3VwLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIC8vIERvIG5vdGhpbmcgaGVyZS4gW01sT2JqZWN0VGFibGUuc3RvcmVdIHdpbGwgcHVzaCB0byBbdGhpcy5vYmpzXSBkaXJlY3RseS5cbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgTmFpdmVMb29rdXAodGhpcy5vYmpzKTtcbiAgICB9O1xuICB9KCk7XG59XG5lbHNlIHtcbiAgTWxPYmplY3RUYWJsZSA9IGZ1bmN0aW9uIE1sT2JqZWN0VGFibGUoKSB7XG4gICAgdGhpcy5vYmpzID0gW107IHRoaXMubG9va3VwID0gbmV3IGdsb2JhbFRoaXMuTWFwKCk7XG4gIH07XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnN0b3JlID0gZnVuY3Rpb24odikge1xuICB0aGlzLmxvb2t1cC5zZXQodiwgdGhpcy5vYmpzLmxlbmd0aCk7XG4gIHRoaXMub2Jqcy5wdXNoKHYpO1xufVxuXG5NbE9iamVjdFRhYmxlLnByb3RvdHlwZS5yZWNhbGwgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBpID0gdGhpcy5sb29rdXAuZ2V0KHYpO1xuICByZXR1cm4gKGkgPT09IHVuZGVmaW5lZClcbiAgICA/IHVuZGVmaW5lZCA6IHRoaXMub2Jqcy5sZW5ndGggLSBpOyAgIC8qIGluZGV4IGlzIHJlbGF0aXZlICovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBNbE9iamVjdFRhYmxlLCBjYW1sX2xpc3RfdG9fanNfYXJyYXksIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xudmFyIGNhbWxfb3V0cHV0X3ZhbCA9IGZ1bmN0aW9uICgpe1xuICBmdW5jdGlvbiBXcml0ZXIgKCkgeyB0aGlzLmNodW5rID0gW107IH1cbiAgV3JpdGVyLnByb3RvdHlwZSA9IHtcbiAgICBjaHVua19pZHg6MjAsIGJsb2NrX2xlbjowLCBvYmpfY291bnRlcjowLCBzaXplXzMyOjAsIHNpemVfNjQ6MCxcbiAgICB3cml0ZTpmdW5jdGlvbiAoc2l6ZSwgdmFsdWUpIHtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2F0OmZ1bmN0aW9uIChwb3MsIHNpemUsIHZhbHVlKSB7XG4gICAgICB2YXIgcG9zID0gcG9zO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbcG9zKytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX2NvZGU6ZnVuY3Rpb24gKHNpemUsIGNvZGUsIHZhbHVlKSB7XG4gICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gY29kZTtcbiAgICAgIGZvciAodmFyIGkgPSBzaXplIC0gODtpID49IDA7aSAtPSA4KVxuICAgICAgICB0aGlzLmNodW5rW3RoaXMuY2h1bmtfaWR4KytdID0gKHZhbHVlID4+IGkpICYgMHhGRjtcbiAgICB9LFxuICAgIHdyaXRlX3NoYXJlZDpmdW5jdGlvbiAob2Zmc2V0KSB7XG4gICAgICBpZiAob2Zmc2V0IDwgKDEgPDwgOCkpIHRoaXMud3JpdGVfY29kZSg4LCAweDA0IC8qY3N0LkNPREVfU0hBUkVEOCovLCBvZmZzZXQpO1xuICAgICAgZWxzZSBpZiAob2Zmc2V0IDwgKDEgPDwgMTYpKSB0aGlzLndyaXRlX2NvZGUoMTYsIDB4MDUgLypjc3QuQ09ERV9TSEFSRUQxNiovLCBvZmZzZXQpO1xuICAgICAgZWxzZSB0aGlzLndyaXRlX2NvZGUoMzIsIDB4MDYgLypjc3QuQ09ERV9TSEFSRUQzMiovLCBvZmZzZXQpO1xuICAgIH0sXG4gICAgcG9zOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuY2h1bmtfaWR4IH0sXG4gICAgZmluYWxpemU6ZnVuY3Rpb24gKCkge1xuICAgICAgdGhpcy5ibG9ja19sZW4gPSB0aGlzLmNodW5rX2lkeCAtIDIwO1xuICAgICAgdGhpcy5jaHVua19pZHggPSAwO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIDB4ODQ5NUE2QkUpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuYmxvY2tfbGVuKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLm9ial9jb3VudGVyKTtcbiAgICAgIHRoaXMud3JpdGUgKDMyLCB0aGlzLnNpemVfMzIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV82NCk7XG4gICAgICByZXR1cm4gdGhpcy5jaHVuaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICh2LCBmbGFncykge1xuICAgIGZsYWdzID0gY2FtbF9saXN0X3RvX2pzX2FycmF5KGZsYWdzKTtcblxuICAgIHZhciBub19zaGFyaW5nID0gKGZsYWdzLmluZGV4T2YoMCAvKk1hcnNoYWwuTm9fc2hhcmluZyovKSAhPT0gLTEpLFxuICAgICAgICBjbG9zdXJlcyA9ICAoZmxhZ3MuaW5kZXhPZigxIC8qTWFyc2hhbC5DbG9zdXJlcyovKSAhPT0gLTEpO1xuICAgIC8qIE1hcnNoYWwuQ29tcGF0XzMyIGlzIHJlZHVuZGFudCBzaW5jZSBpbnRlZ2VycyBhcmUgMzItYml0IGFueXdheSAqL1xuXG4gICAgaWYgKGNsb3N1cmVzKVxuICAgICAgY29uc29sZS53YXJuKFwiaW4gY2FtbF9vdXRwdXRfdmFsOiBmbGFnIE1hcnNoYWwuQ2xvc3VyZXMgaXMgbm90IHN1cHBvcnRlZC5cIik7XG5cbiAgICB2YXIgd3JpdGVyID0gbmV3IFdyaXRlciAoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgaW50ZXJuX29ial90YWJsZSA9IG5vX3NoYXJpbmcgPyBudWxsIDogbmV3IE1sT2JqZWN0VGFibGUoKTtcblxuICAgIGZ1bmN0aW9uIG1lbW8odikge1xuICAgICAgaWYgKG5vX3NoYXJpbmcpIHJldHVybiBmYWxzZTtcbiAgICAgIHZhciBleGlzdGluZ19vZmZzZXQgPSBpbnRlcm5fb2JqX3RhYmxlLnJlY2FsbCh2KTtcbiAgICAgIGlmIChleGlzdGluZ19vZmZzZXQpIHsgd3JpdGVyLndyaXRlX3NoYXJlZChleGlzdGluZ19vZmZzZXQpOyByZXR1cm4gdHJ1ZTsgfVxuICAgICAgZWxzZSB7IGludGVybl9vYmpfdGFibGUuc3RvcmUodik7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGV4dGVybl9yZWMgKHYpIHtcbiAgICAgIGlmICh2LmNhbWxfY3VzdG9tKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBuYW1lID0gdi5jYW1sX2N1c3RvbTtcbiAgICAgICAgdmFyIG9wcyA9IGNhbWxfY3VzdG9tX29wc1tuYW1lXTtcbiAgICAgICAgdmFyIHN6XzMyXzY0ID0gWzAsMF07XG4gICAgICAgIGlmKCFvcHMuc2VyaWFsaXplKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEN1c3RvbSlcIik7XG4gICAgICAgIGlmKG9wcy5maXhlZF9sZW5ndGggPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTggLypjc3QuQ09ERV9DVVNUT01fTEVOKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIGhlYWRlcl9wb3MgPSB3cml0ZXIucG9zICgpO1xuICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG9wcy5zZXJpYWxpemUod3JpdGVyLCB2LCBzel8zMl82NCk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MsIDMyLCBzel8zMl82NFswXSk7XG4gICAgICAgICAgd3JpdGVyLndyaXRlX2F0KGhlYWRlcl9wb3MgKyA0LCAzMiwgMCk7IC8vIHplcm9cbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDgsIDMyLCBzel8zMl82NFsxXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDE5IC8qY3N0LkNPREVfQ1VTVE9NX0ZJWEVEKi8pO1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgbmFtZS5jaGFyQ29kZUF0KGkpKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGUoOCwgMCk7XG4gICAgICAgICAgdmFyIG9sZF9wb3MgPSB3cml0ZXIucG9zKCk7XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICBpZiAob3BzLmZpeGVkX2xlbmd0aCAhPSB3cml0ZXIucG9zKCkgLSBvbGRfcG9zKVxuICAgICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogaW5jb3JyZWN0IGZpeGVkIHNpemVzIHNwZWNpZmllZCBieSBcIiArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDIgKyAoKHN6XzMyXzY0WzBdICsgMykgPj4gMik7XG4gICAgICAgIHdyaXRlci5zaXplXzY0ICs9IDIgKyAoKHN6XzMyXzY0WzFdICsgNykgPj4gMyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgICAgaWYgKHZbMF0gPT0gMjUxKSB7XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKEFic3RyYWN0KVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FtbF9pc19jb250aW51YXRpb25fdGFnKHZbMF0pKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIm91dHB1dF92YWx1ZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICBpZiAodi5sZW5ndGggPiAxICYmIG1lbW8odikpIHJldHVybjtcbiAgICAgICAgaWYgKHZbMF0gPCAxNiAmJiB2Lmxlbmd0aCAtIDEgPCA4KVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLyArIHZbMF0gKyAoKHYubGVuZ3RoIC0gMSk8PDQpKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDA4IC8qY3N0LkNPREVfQkxPQ0szMiovLCAoKHYubGVuZ3RoLTEpIDw8IDEwKSB8IHZbMF0pO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSB2Lmxlbmd0aDtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gdi5sZW5ndGg7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEpIHN0YWNrLnB1c2ggKHYsIDEpO1xuICAgICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICAgIGlmKCEoY2FtbF9pc19tbF9ieXRlcyhjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIpKSkpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBbQnl0ZXMudF0gY2Fubm90IHNhZmVseSBiZSBtYXJzaGFsZWQgd2l0aCBbLS1lbmFibGUgdXNlLWpzLXN0cmluZ11cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHYpO1xuICAgICAgICBpZiAobGVuIDwgMHgyMClcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MjAgLypjc3QuUFJFRklYX1NNQUxMX1NUUklORyovICsgbGVuKTtcbiAgICAgICAgZWxzZSBpZiAobGVuIDwgMHgxMDApXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDgsIDB4MDkvKmNzdC5DT0RFX1NUUklORzgqLywgbGVuKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICgzMiwgMHgwQSAvKmNzdC5DT0RFX1NUUklORzMyKi8sIGxlbik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwO2kgPCBsZW47aSsrKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICAgIGlmIChtZW1vKHYpKSByZXR1cm47XG4gICAgICAgIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHYsaSkpO1xuICAgICAgICB3cml0ZXIuc2l6ZV8zMiArPSAxICsgKCgobGVuICsgNCkgLyA0KXwwKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMSArICgoKGxlbiArIDgpIC8gOCl8MCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodiAhPSAodnwwKSl7XG4gICAgICAgICAgdmFyIHR5cGVfb2ZfdiA9IHR5cGVvZiB2O1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gSWYgYSBmbG9hdCBoYXBwZW5zIHRvIGJlIGFuIGludGVnZXIgaXQgaXMgc2VyaWFsaXplZCBhcyBhbiBpbnRlZ2VyXG4gICAgICAgICAgLy8gKEpzX29mX29jYW1sIGNhbm5vdCB0ZWxsIHdoZXRoZXIgdGhlIHR5cGUgb2YgYW4gaW50ZWdlciBudW1iZXIgaXNcbiAgICAgICAgICAvLyBmbG9hdCBvciBpbnRlZ2VyLikgVGhpcyBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgY3Jhc2hlcyB3aGVuXG4gICAgICAgICAgLy8gdW5tYXJzaGFsbGluZyB1c2luZyB0aGUgc3RhbmRhcmQgcnVudGltZS4gSXQgc2VlbXMgYmV0dGVyIHRvXG4gICAgICAgICAgLy8gc3lzdGVtYXRpY2FsbHkgZmFpbCBvbiBtYXJzaGFsbGluZy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vICAgICAgICAgIGlmKHR5cGVfb2ZfdiAhPSBcIm51bWJlclwiKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IGFic3RyYWN0IHZhbHVlIChcIit0eXBlX29mX3YrXCIpXCIpO1xuICAgICAgICAgIC8vICAgICAgICAgIHZhciB0ID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQodikpO1xuICAgICAgICAgIC8vICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgwQiAvKmNzdC5DT0RFX0RPVUJMRV9CSUcqLyk7XG4gICAgICAgICAgLy8gICAgICAgICAgZm9yKHZhciBpID0gMDsgaTw4OyBpKyspe3dyaXRlci53cml0ZSg4LHRbaV0pfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHYgPj0gMCAmJiB2IDwgMHg0MCkge1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMFg0MCAvKmNzdC5QUkVGSVhfU01BTExfSU5UKi8gKyB2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodiA+PSAtKDEgPDwgNykgJiYgdiA8ICgxIDw8IDcpKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoOCwgMHgwMCAvKmNzdC5DT0RFX0lOVDgqLywgdik7XG4gICAgICAgICAgZWxzZSBpZiAodiA+PSAtKDEgPDwgMTUpICYmIHYgPCAoMSA8PCAxNSkpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSgxNiwgMHgwMSAvKmNzdC5DT0RFX0lOVDE2Ki8sIHYpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDMyLCAweDAyIC8qY3N0LkNPREVfSU5UMzIqLywgdik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZXh0ZXJuX3JlYyAodik7XG4gICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhciBpID0gc3RhY2sucG9wICgpO1xuICAgICAgdmFyIHYgPSBzdGFjay5wb3AgKCk7XG4gICAgICBpZiAoaSArIDEgPCB2Lmxlbmd0aCkgc3RhY2sucHVzaCAodiwgaSArIDEpO1xuICAgICAgZXh0ZXJuX3JlYyAodltpXSk7XG4gICAgfVxuICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSB3cml0ZXIub2JqX2NvdW50ZXIgPSBpbnRlcm5fb2JqX3RhYmxlLm9ianMubGVuZ3RoO1xuICAgIHdyaXRlci5maW5hbGl6ZSgpO1xuICAgIHJldHVybiB3cml0ZXIuY2h1bms7XG4gIH1cbn0gKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfc3RyaW5nX29mX2FycmF5XG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX291dHB1dF92YWwsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzICh2LCBmbGFncykge1xuICByZXR1cm4gY2FtbF9ieXRlc19vZl9hcnJheSAoY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9mYWlsd2l0aCwgY2FtbF9ibGl0X2J5dGVzXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXIgKHMsIG9mcywgbGVuLCB2LCBmbGFncykge1xuICB2YXIgdCA9IGNhbWxfb3V0cHV0X3ZhbCAodiwgZmxhZ3MpO1xuICBpZiAodC5sZW5ndGggPiBsZW4pIGNhbWxfZmFpbHdpdGggKFwiTWFyc2hhbC50b19idWZmZXI6IGJ1ZmZlciBvdmVyZmxvd1wiKTtcbiAgY2FtbF9ibGl0X2J5dGVzKHQsIDAsIHMsIG9mcywgdC5sZW5ndGgpO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSW9cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZmRzXG52YXIgY2FtbF9zeXNfZmRzID0gbmV3IEFycmF5KDMpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jbG9zZVxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG5mdW5jdGlvbiBjYW1sX3N5c19jbG9zZShmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUpIGZpbGUuY2xvc2UoKTtcbiAgZGVsZXRlIGNhbWxfc3lzX2Zkc1tmZF07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX29wZW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9SZXF1aXJlczogY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUsaWR4KSB7XG4gIGlmKGlkeCA9PSB1bmRlZmluZWQpe1xuICAgIGlkeCA9IGNhbWxfc3lzX2Zkcy5sZW5ndGg7XG4gIH1cbiAgY2FtbF9zeXNfZmRzW2lkeF0gPSBmaWxlO1xuICByZXR1cm4gaWR4IHwgMDtcbn1cbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW4gKG5hbWUsIGZsYWdzLCBfcGVybXMpIHtcbiAgdmFyIGYgPSB7fTtcbiAgd2hpbGUoZmxhZ3Mpe1xuICAgIHN3aXRjaChmbGFnc1sxXSl7XG4gICAgY2FzZSAwOiBmLnJkb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAxOiBmLndyb25seSA9IDE7YnJlYWs7XG4gICAgY2FzZSAyOiBmLmFwcGVuZCA9IDE7YnJlYWs7XG4gICAgY2FzZSAzOiBmLmNyZWF0ZSA9IDE7YnJlYWs7XG4gICAgY2FzZSA0OiBmLnRydW5jYXRlID0gMTticmVhaztcbiAgICBjYXNlIDU6IGYuZXhjbCA9IDE7IGJyZWFrO1xuICAgIGNhc2UgNjogZi5iaW5hcnkgPSAxO2JyZWFrO1xuICAgIGNhc2UgNzogZi50ZXh0ID0gMTticmVhaztcbiAgICBjYXNlIDg6IGYubm9uYmxvY2sgPSAxO2JyZWFrO1xuICAgIH1cbiAgICBmbGFncz1mbGFnc1syXTtcbiAgfVxuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBmaWxlID0gcm9vdC5kZXZpY2Uub3Blbihyb290LnJlc3QsZik7XG4gIHJldHVybiBjYW1sX3N5c19vcGVuX2ludGVybmFsIChmaWxlLCB1bmRlZmluZWQpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gZmlsZShmZCwgZmxhZ3MpIHtcbiAgICBpZihmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgICByZXR1cm4gY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZShmZCwgZmxhZ3MpO1xuICAgIH1cbiAgICBlbHNlXG4gICAgICByZXR1cm4gbmV3IE1sRmFrZUZkX291dChmZCwgZmxhZ3MpXG4gIH1cbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDAse3Jkb25seToxLGFsdG5hbWU6XCIvZGV2L3N0ZGluXCIsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAwKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDEse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAxKTtcbiAgY2FtbF9zeXNfb3Blbl9pbnRlcm5hbChmaWxlKDIse2J1ZmZlcmVkOjIsd3Jvbmx5OjEsaXNDaGFyYWN0ZXJEZXZpY2U6dHJ1ZX0pLCAyKTtcbn0pKClcblxuXG4vLyBvY2FtbCBDaGFubmVsc1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZShjaGFuaWQsIG5hbWUpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ubmFtZSA9IG5hbWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NoYW5uZWxzXG52YXIgY2FtbF9tbF9jaGFubmVscyA9IG5ldyBBcnJheSgpO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dF9jaGFubmVsc19saXN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0ICgpIHtcbiAgdmFyIGwgPSAwO1xuICBmb3IodmFyIGMgPSAwOyBjIDwgY2FtbF9tbF9jaGFubmVscy5sZW5ndGg7IGMrKyl7XG4gICAgaWYoY2FtbF9tbF9jaGFubmVsc1tjXSAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm9wZW5lZCAmJiBjYW1sX21sX2NoYW5uZWxzW2NdLm91dClcbiAgICAgIGw9WzAsY2FtbF9tbF9jaGFubmVsc1tjXS5mZCxsXTtcbiAgfVxuICByZXR1cm4gbDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dCAoZmQpIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLnJkb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyByZWFkb25seVwiKTtcbiAgdmFyIGJ1ZmZlcmVkID0gKGZpbGUuZmxhZ3MuYnVmZmVyZWQgIT09IHVuZGVmaW5lZCkgPyBmaWxlLmZsYWdzLmJ1ZmZlcmVkIDogMTtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OnRydWUsXG4gICAgYnVmZmVyX2N1cnI6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIGJ1ZmZlcmVkOmJ1ZmZlcmVkXG4gIH07XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbm5lbC5mZF09Y2hhbm5lbDtcbiAgcmV0dXJuIGNoYW5uZWwuZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19vcGVuXG5mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiAoZmQpICB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZS5mbGFncy53cm9ubHkpIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKFwiZmQgXCIrIGZkICsgXCIgaXMgd3JpdGVvbmx5XCIpO1xuICB2YXIgcmVmaWxsID0gbnVsbDtcbiAgdmFyIGNoYW5uZWwgPSB7XG4gICAgZmlsZTpmaWxlLFxuICAgIG9mZnNldDpmaWxlLmZsYWdzLmFwcGVuZD9maWxlLmxlbmd0aCgpOjAsXG4gICAgZmQ6ZmQsXG4gICAgb3BlbmVkOnRydWUsXG4gICAgb3V0OiBmYWxzZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcl9tYXg6MCxcbiAgICBidWZmZXI6bmV3IFVpbnQ4QXJyYXkoNjU1MzYpLFxuICAgIHJlZmlsbDpyZWZpbGxcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbl93aXRoX2ZsYWdzXG4vL1JlcXVpcmVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9WZXJzaW9uOiA+PSA1LjFcbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dF93aXRoX2ZsYWdzKGZkLCBmbGFncyl7XG4gIHJldHVybiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvclxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuLy9BbGlhczogd2luX2ZpbGVkZXNjcl9vZl9jaGFubmVsXG5mdW5jdGlvbiBjYW1sX2NoYW5uZWxfZGVzY3JpcHRvcihjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9iaW5hcnlfbW9kZShjaGFuaWQsbW9kZSl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLmZpbGUuZmxhZ3MudGV4dCA9ICFtb2RlXG4gIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgPSBtb2RlXG4gIHJldHVybiAwO1xufVxuXG4vL0lucHV0IGZyb20gaW5fY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2Nsb3NlX2NoYW5uZWxcbi8vUmVxdWlyZXM6IGNhbWxfbWxfZmx1c2gsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX2Nsb3NlXG5mdW5jdGlvbiBjYW1sX21sX2Nsb3NlX2NoYW5uZWwgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vcGVuZWQgPSBmYWxzZTtcbiAgY2FtbF9zeXNfY2xvc2UoY2hhbi5mZClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2NoYW5uZWxfc2l6ZShjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLmZpbGUubGVuZ3RoKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplXzY0KGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2hhbi5maWxlLmxlbmd0aCAoKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX291dHB1dChjaGFuaWQsZikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5vdXRwdXQgPSAoZnVuY3Rpb24gKHMpIHtmKHMpfSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGwoY2hhbmlkLGYpIHtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLnJlZmlsbCA9IGY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZmlsbFxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWZpbGwgKGNoYW4pIHtcbiAgaWYoY2hhbi5yZWZpbGwgIT0gbnVsbCl7XG4gICAgdmFyIHN0ciA9IGNoYW4ucmVmaWxsKCk7XG4gICAgdmFyIHN0cl9hID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyKTtcbiAgICBpZiAoc3RyX2EubGVuZ3RoID09IDApIHtcbiAgICAgIGNoYW4ucmVmaWxsID0gbnVsbFxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyLmxlbmd0aCA8IGNoYW4uYnVmZmVyX21heCArIHN0cl9hLmxlbmd0aCl7XG4gICAgICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkoY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKTtcbiAgICAgICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgICAgICBjaGFuLmJ1ZmZlciA9IGI7XG4gICAgICB9XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoc3RyX2EsY2hhbi5idWZmZXJfbWF4KTtcbiAgICAgIGNoYW4ub2Zmc2V0ICs9IHN0cl9hLmxlbmd0aDtcbiAgICAgIGNoYW4uYnVmZmVyX21heCArPSBzdHJfYS5sZW5ndGg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBucmVhZCA9IGNoYW4uZmlsZS5yZWFkKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgY2hhbi5idWZmZXJfbWF4LCBjaGFuLmJ1ZmZlci5sZW5ndGggLSBjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgIGNoYW4ub2Zmc2V0ICs9IG5yZWFkO1xuICAgIGNoYW4uYnVmZmVyX21heCArPSBucmVhZDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9iaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9iYV90b190eXBlZF9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9iaWdhcnJheSAoY2hhbmlkLCBiLCBpLCBsKSB7XG4gIHZhciBiYSA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYik7XG4gIHJldHVybiBjYW1sX21sX2lucHV0X2Jsb2NrKGNoYW5pZCwgYmEsIGksIGwpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2Jsb2NrIChjaGFuaWQsIGJhLCBpLCBsKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgbiA9IGw7XG4gIHZhciBhdmFpbCA9IGNoYW4uYnVmZmVyX21heCAtIGNoYW4uYnVmZmVyX2N1cnI7XG4gIGlmKGwgPD0gYXZhaWwpIHtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbDtcbiAgfVxuICBlbHNlIGlmKGF2YWlsID4gMCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBhdmFpbCksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYXZhaWw7XG4gICAgbiA9IGF2YWlsO1xuICB9IGVsc2Uge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgICBpZihuID4gYXZhaWwpIG4gPSBhdmFpbDtcbiAgICBiYS5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VycixjaGFuLmJ1ZmZlcl9jdXJyICsgbiksIGkpO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gbjtcbiAgfVxuICByZXR1cm4gbiB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcywgY2FtbF9jcmVhdGVfYnl0ZXMsIGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmVmaWxsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWUgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIGhlYWRlciA9IG5ldyBVaW50OEFycmF5KGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGZ1bmN0aW9uIGJsb2NrKGJ1ZmZlciwgb2Zmc2V0LCBuKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHdoaWxlKHIgPCBuKXtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICAgICAgfVxuICAgICAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgICAgICBicmVhaztcbiAgICAgIGJ1ZmZlcltvZmZzZXQrcl0gPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIrKztcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdmFyIHIgPSBibG9jayhoZWFkZXIsIDAsIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGlmKHIgPT0gMClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIGVsc2UgaWYgKHIgPCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUpXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0XCIpO1xuICB2YXIgbGVuID0gY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSAoY2FtbF9ieXRlc19vZl9hcnJheShoZWFkZXIpLCAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbiArIGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSk7XG4gIGJ1Zi5zZXQoaGVhZGVyLDApO1xuICB2YXIgciA9IGJsb2NrKGJ1ZiwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplLCBsZW4pXG4gIGlmKHIgPCBsZW4pXG4gICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiB0cnVuY2F0ZWQgb2JqZWN0IFwiICsgciArIFwiICBcIiArIGxlbik7XG4gIHZhciBvZmZzZXQgPSBbMF07XG4gIHZhciByZXMgPSBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBvZmZzZXQpO1xuICBjaGFuLm9mZnNldCA9IGNoYW4ub2Zmc2V0ICsgb2Zmc2V0WzBdO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcFxuLy9SZXF1aXJlczogY2FtbF9pbnB1dF92YWx1ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZV90b19vdXRzaWRlX2hlYXAoYykge1xuICByZXR1cm4gY2FtbF9pbnB1dF92YWx1ZShjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9jaGFyIChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KXtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICBjaGFuLmJ1ZmZlcl9tYXggPSAwO1xuICAgIGNhbWxfcmVmaWxsKGNoYW4pO1xuICB9XG4gIGlmIChjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyX21heClcbiAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIHZhciByZXMgPSBjaGFuLmJ1ZmZlcltjaGFuLmJ1ZmZlcl9jdXJyXTtcbiAgY2hhbi5idWZmZXJfY3VycisrO1xuICByZXR1cm4gcmVzO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2ludFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZVxuLy9SZXF1aXJlczogY2FtbF9tbF9pbnB1dF9jaGFyLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2ludCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBpID0gMDsgaSA8IDQ7IGkrKyl7XG4gICAgcmVzID0gKHJlcyA8PCA4KSArIGNhbWxfbWxfaW5wdXRfY2hhcihjaGFuaWQpIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9zZWVrX2luKGNoYW5pZCwgcG9zKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZiAoY2hhbi5yZWZpbGwgIT0gbnVsbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJJbGxlZ2FsIHNlZWtcIik7XG4gIGlmKHBvcyA+PSBjaGFuLm9mZnNldCAtIGNoYW4uYnVmZmVyX21heFxuICAgICAmJiBwb3MgPD0gY2hhbi5vZmZzZXRcbiAgICAgJiYgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSkge1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSBjaGFuLmJ1ZmZlcl9tYXggLSAoY2hhbi5vZmZzZXQgLSBwb3MpO1xuICB9IGVsc2Uge1xuICAgIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pblxuLy9SZXF1aXJlczogY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW4oY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX2luXG5mdW5jdGlvbiBjYW1sX21sX3NlZWtfaW5fNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgLSAoY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycikgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pblxuLy9SZXF1aXJlczogY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9wb3NfaW4oY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3NfaW5fNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX2luXG5mdW5jdGlvbiBjYW1sX21sX3Bvc19pbl82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQoY2FtbF9wb3NfaW4oY2hhbmlkKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX3JlZmlsbFxuZnVuY3Rpb24gY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmUoY2hhbmlkKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBwID0gY2hhbi5idWZmZXJfY3VycjtcbiAgZG8ge1xuICAgIGlmKHAgPj0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID4gMCkge1xuICAgICAgICBjaGFuLmJ1ZmZlci5zZXQoY2hhbi5idWZmZXIuc3ViYXJyYXkoY2hhbi5idWZmZXJfY3VyciksMCk7XG4gICAgICAgIHAgLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4IC09IGNoYW4uYnVmZmVyX2N1cnI7XG4gICAgICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgICAgfVxuICAgICAgaWYoY2hhbi5idWZmZXJfbWF4ID49IGNoYW4uYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICAgIHZhciBwcmV2X21heCA9IGNoYW4uYnVmZmVyX21heDtcbiAgICAgIGNhbWxfcmVmaWxsIChjaGFuKTtcbiAgICAgIGlmKHByZXZfbWF4ID09IGNoYW4uYnVmZmVyX21heCkge1xuICAgICAgICByZXR1cm4gLShjaGFuLmJ1ZmZlcl9tYXgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH0gd2hpbGUgKGNoYW4uYnVmZmVyW3ArK10gIT0gMTApO1xuICByZXR1cm4gKHAgLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZmx1c2hcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3QgZmx1c2ggYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgaWYoIWNoYW4uYnVmZmVyIHx8IGNoYW4uYnVmZmVyX2N1cnIgPT0gMCkgcmV0dXJuIDA7XG4gIGlmKGNoYW4ub3V0cHV0KSB7XG4gICAgY2hhbi5vdXRwdXQoY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKSk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5maWxlLndyaXRlKGNoYW4ub2Zmc2V0LCBjaGFuLmJ1ZmZlciwgMCwgY2hhbi5idWZmZXJfY3Vycik7XG4gIH1cbiAgY2hhbi5vZmZzZXQgKz0gY2hhbi5idWZmZXJfY3VycjtcbiAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL291dHB1dCB0byBvdXRfY2hhbm5lbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF90YVxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCxjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbikge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoISBjaGFuLm9wZW5lZCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJDYW5ub3Qgb3V0cHV0IHRvIGEgY2xvc2VkIGNoYW5uZWxcIik7XG4gIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIGlmKGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoID4gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9jdXJyICsgYnVmZmVyLmxlbmd0aCk7XG4gICAgYi5zZXQoY2hhbi5idWZmZXIpO1xuICAgIGNoYW4uYnVmZmVyID0gYlxuICB9XG4gIHN3aXRjaChjaGFuLmJ1ZmZlcmVkKXtcbiAgY2FzZSAwOiAvLyBVbmJ1ZmZlcmVkXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgYnJlYWtcbiAgY2FzZSAxOiAvLyBCdWZmZXJlZCAodGhlIGRlZmF1bHQpXG4gICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoO1xuICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVhaztcbiAgY2FzZSAyOiAvLyBCdWZmZXJlZCAob25seSBmb3Igc3Rkb3V0IGFuZCBzdGRlcnIpXG4gICAgdmFyIGlkID0gYnVmZmVyLmxhc3RJbmRleE9mKDEwKVxuICAgIGlmKGlkIDwgMCkge1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlciwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9jdXJyID49IGNoYW4uYnVmZmVyLmxlbmd0aClcbiAgICAgICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KDAsIGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBpZCArIDE7XG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgICAgY2hhbi5idWZmZXIuc2V0KGJ1ZmZlci5zdWJhcnJheShpZCArIDEpLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aCAtIGlkIC0gMTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5LCBjYW1sX21sX291dHB1dF90YVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXkoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBidWZmZXIgPSBjYW1sX2JhX3RvX3R5cGVkX2FycmF5KGJ1ZmZlcik7XG4gIHJldHVybiBjYW1sX21sX291dHB1dF90YShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pO1xufVxuXG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0X2J5dGVzLCBjYW1sX2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXQoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X2J5dGVzKGNoYW5pZCxjYW1sX2J5dGVzX29mX3N0cmluZyhidWZmZXIpLG9mZnNldCxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9jaGFyXG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhciAoY2hhbmlkLGMpIHtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFN0cmluZy5mcm9tQ2hhckNvZGUoYykpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDEpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZywgY2FtbF9tbF9vdXRwdXQsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX291dHB1dF92YWx1ZSAoY2hhbmlkLHYsZmxhZ3MpIHtcbiAgdmFyIHMgPSBjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmcodiwgZmxhZ3MpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3Mpe1xuICBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9mZnNldCA9IHBvcztcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXQoY2hhbmlkLHBvcyl7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2Vla19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fZmxvYXQsIGNhbWxfc2Vla19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19vdXRfNjQoY2hhbmlkLHBvcyl7XG4gIHZhciBwb3MgPSBjYW1sX2ludDY0X3RvX2Zsb2F0KHBvcyk7XG4gIHJldHVybiBjYW1sX3NlZWtfb3V0KGNoYW5pZCwgcG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5vZmZzZXQgKyBjaGFuLmJ1ZmZlcl9jdXJyXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX291dFxuLy9SZXF1aXJlczogY2FtbF9wb3Nfb3V0XG5mdW5jdGlvbiBjYW1sX21sX3Bvc19vdXQoY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19vdXQoY2hhbmlkKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2Zsb2F0LCBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dF82NChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfZmxvYXQgKGNhbWxfcG9zX291dChjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0X2ludCAoY2hhbmlkLGkpIHtcbiAgdmFyIGFyciA9IFsoaT4+MjQpICYgMHhGRiwoaT4+MTYpICYgMHhGRiwoaT4+OCkgJiAweEZGLGkgJiAweEZGIF07XG4gIHZhciBzID0gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgY2FtbF9tbF9vdXRwdXQoY2hhbmlkLHMsMCw0KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pc19idWZmZXJlZFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9pc19idWZmZXJlZChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA/IDEgOiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzLCBjYW1sX21sX2ZsdXNoXG5mdW5jdGlvbiBjYW1sX21sX3NldF9idWZmZXJlZChjaGFuaWQsdikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0uYnVmZmVyZWQgPSB2O1xuICBpZighdikgY2FtbF9tbF9mbHVzaChjaGFuaWQpO1xuICByZXR1cm4gMFxufVxuIiwiXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2ModHJ1ZSk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX21ham9yXG5mdW5jdGlvbiBjYW1sX2djX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2Z1bGxfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfZnVsbF9tYWpvcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYygpO1xuICByZXR1cm4gMFxufVxuLy9Qcm92aWRlczogY2FtbF9nY19jb21wYWN0aW9uXG5mdW5jdGlvbiBjYW1sX2djX2NvbXBhY3Rpb24oKXsgcmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvdW50ZXJzXG5mdW5jdGlvbiBjYW1sX2djX2NvdW50ZXJzKCkgeyByZXR1cm4gWzI1NCwwLDAsMF0gfVxuLy9Qcm92aWRlczogY2FtbF9nY19xdWlja19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3F1aWNrX3N0YXQoKXtcbiAgcmV0dXJuIFswLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc3RhdFxuZnVuY3Rpb24gY2FtbF9nY19zdGF0KCkge1xuICAvLyBBIGZpZWxkIHdhcyBhZGRlZCBpbiBPQ2FtbCA0LjEyLiBJdCBpcyB1bmxpa2VseSB0byBiZSBhbiBpc3N1ZSB0b1xuICAvLyByZXR1cm4gdG9vIG1hbnkgZmllbGRzIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sLlxuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX3NldFxuZnVuY3Rpb24gY2FtbF9nY19zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZ2V0XG5mdW5jdGlvbiBjYW1sX2djX2dldCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2Zfc2V0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc2V0KF9jb250cm9sKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZpbmFsX3JlZ2lzdGVyICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVxudmFyIGFsbF9maW5hbGl6ZXJzID0gbmV3IGdsb2JhbFRoaXMuU2V0KClcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXJfY2FsbGVkX3dpdGhvdXRfdmFsdWUgKGNiLCBhKSB7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgYSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgIHZhciB4ID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKHgpe2FsbF9maW5hbGl6ZXJzLmRlbGV0ZSh4KTsgY2IoMCk7IHJldHVybjt9KTtcbiAgICB4LnJlZ2lzdGVyKGEseCk7XG4gICAgYWxsX2ZpbmFsaXplcnMuYWRkKHgpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlbGVhc2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVsZWFzZSAoKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdGFydFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX3N0YXJ0KHJhdGUsc3RhY2tfc2l6ZSx0cmFja2VyKXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zdG9wXG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RvcCh1bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21lbXByb2ZfZGlzY2FyZFxuZnVuY3Rpb24gY2FtbF9tZW1wcm9mX2Rpc2NhcmQodCkgeyByZXR1cm4gMCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX2V2ZW50bG9nX3Jlc3VtZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXZlbnRsb2dfcGF1c2VcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcGF1c2UodW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX2h1Z2VfZmFsbGJhY2tfY291bnRcbmZ1bmN0aW9uIGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudCh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3Jfc2xpY2VcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3Jfc2xpY2Uod29yaykgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2djX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjYW1sX2djX21pbm9yX3dvcmRzKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWlub3JfZnJlZVxuZnVuY3Rpb24gY2FtbF9nZXRfbWlub3JfZnJlZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X21ham9yX2J1Y2tldFxuZnVuY3Rpb24gY2FtbF9nZXRfbWFqb3JfYnVja2V0KG4pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfY3JlZGl0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9jcmVkaXQobikgeyByZXR1cm4gMDsgfVxuIiwiLy8vLy8vLy8vIENPUkVcblxuLy9Qcm92aWRlczogY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYmxpdFxudmFyIGNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG4vL1Byb3ZpZGVzOiBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbnZhciBjb3JlX2FycmF5X3Vuc2FmZV9mbG9hdF9ibGl0ID0gY2FtbF9hcnJheV9ibGl0XG5cbi8vUHJvdmlkZXM6IGNvcmVfdGltZV9uc19mb3JtYXRcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfdGltZV9uc19mb3JtYXQodGltZSxmb3JtYXQpe1xuICB2YXIgZCA9IG5ldyBEYXRlKHRpbWUgKiAxMDAwKTtcbiAgdmFyIGZvcm1hdGpzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmb3JtYXQpO1xuICB2YXIganN0cmluZyA9IGpvb19nbG9iYWxfb2JqZWN0LnN0cmZ0aW1lKGZvcm1hdGpzLCBkKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanN0cmluZyk7XG59XG5cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfY29tcGFjdGlvbnNcbmZ1bmN0aW9uIGNvcmVfZ2NfY29tcGFjdGlvbnMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX2hlYXBfY2h1bmtzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfY2h1bmtzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19oZWFwX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX2hlYXBfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX2NvbGxlY3Rpb25zICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3BsdXNfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX21ham9yX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX21ham9yX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY19taW5vcl9jb2xsZWN0aW9uc1xuZnVuY3Rpb24gY29yZV9nY19taW5vcl9jb2xsZWN0aW9ucyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNvcmVfZ2NfbWlub3Jfd29yZHMgKCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjb3JlX2djX3Byb21vdGVkX3dvcmRzXG5mdW5jdGlvbiBjb3JlX2djX3Byb21vdGVkX3dvcmRzICgpIHsgcmV0dXJuIDAgfVxuLy9Qcm92aWRlczogY29yZV9nY190b3BfaGVhcF93b3Jkc1xuZnVuY3Rpb24gY29yZV9nY190b3BfaGVhcF93b3JkcyAoKSB7IHJldHVybiAwIH1cbi8vUHJvdmlkZXM6IGNvcmVfZ2NfcnVuX21lbXByb2ZfY2FsbGJhY2tzXG5mdW5jdGlvbiBjb3JlX2djX3J1bl9tZW1wcm9mX2NhbGxiYWNrcyAoKSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY29yZV9oZWFwX2Jsb2NrX2lzX2hlYXBfYmxvY2tcbmZ1bmN0aW9uIGNvcmVfaGVhcF9ibG9ja19pc19oZWFwX2Jsb2NrKHgpe1xuICByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX21kNV9mZFxuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4sIGNhbWxfbWQ1X2NoYW4sIGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuZnVuY3Rpb24gY29yZV9tZDVfZmQoZmQpe1xuICAgIHZhciBpYyA9IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKGZkKTtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gY2FtbF9tZDVfY2hhbihpYywgLTEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGNhbWxfbWxfY2xvc2VfY2hhbm5lbChpYyk7XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjb3JlX21kNV9kaWdlc3Rfc3ViYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21kNV9zdHJpbmcsIGNhbWxfYmxpdF9zdHJpbmcsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YiwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNvcmVfbWQ1X2RpZ2VzdF9zdWJiaWdzdHJpbmcoYnVmLCBvZnMsIGxlbiwgcmVzKXtcbiAgICB2YXIgYnl0ZXMgPSBjYW1sX2NyZWF0ZV9ieXRlcyhsZW4pO1xuICAgIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKGJ1Ziwgb2ZzLCBieXRlcywgMCwgbGVuKTtcbiAgICB2YXIgcmVzMiA9IGNhbWxfbWQ1X3N0cmluZyhjYW1sX3N0cmluZ19vZl9ieXRlcyhieXRlcyksIDAsIGxlbik7XG4gICAgY2FtbF9ibGl0X3N0cmluZyhyZXMyLCAwLCByZXMsIDAsIDE2KTtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9CaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBiaWdzdHJpbmdfZGVzdHJveV9zdHViKHZfYnN0cikge1xuICBpZiAodl9ic3RyLmhhc093blByb3BlcnR5KCdfX2lzX2RlYWxsb2NhdGVkJykpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdzdHJpbmdfZGVzdHJveTogYmlnc3RyaW5nIGlzIGFscmVhZHkgZGVhbGxvY2F0ZWRcIik7XG4gIH1cbiAgLy8gTXV0YXRlIHRoZSBvcmlnaW5hbCBiaWdzdHJpbmcgaW4tcGxhY2UsIHRvIHNpbXVsYXRlIHdoYXQgdGhlIEMgdmVyc2lvbiBkb2VzXG4gIHZfYnN0ci5fX2lzX2RlYWxsb2NhdGVkID0gdHJ1ZTtcbiAgdl9ic3RyLmRhdGEgPSBuZXcgdl9ic3RyLmRhdGEuX19wcm90b19fLmNvbnN0cnVjdG9yKDApO1xuICB2X2JzdHIuZGltcyA9IFsgMCBdO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3JlYWxsb2Ncbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBiaWdzdHJpbmdfZGVzdHJveV9zdHViXG5mdW5jdGlvbiBiaWdzdHJpbmdfcmVhbGxvYyhiaWdzdHJpbmcsIHNpemUpIHtcbiAgICBpZiAoYmlnc3RyaW5nLmhhc093blByb3BlcnR5KCdfX2lzX2RlYWxsb2NhdGVkJykpIHtcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiYmlnc3RyaW5nX3JlYWxsb2M6IGJpZ3N0cmluZyBpcyBhbHJlYWR5IGRlYWxsb2NhdGVkXCIpO1xuICAgIH1cblxuICAgIHZhciBuZXdfZGF0YSA9IG5ldyBiaWdzdHJpbmcuZGF0YS5fX3Byb3RvX18uY29uc3RydWN0b3Ioc2l6ZSk7XG4gICAgbmV3X2RhdGEuc2V0KGJpZ3N0cmluZy5kYXRhLnNsaWNlKDAsIHNpemUpKTtcbiAgICB2YXIgbmV3X2JpZ3N0cmluZyA9IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZShiaWdzdHJpbmcua2luZCwgYmlnc3RyaW5nLmxheW91dCwgW3NpemVdLCBuZXdfZGF0YSk7XG4gICAgYmlnc3RyaW5nX2Rlc3Ryb3lfc3R1YihiaWdzdHJpbmcpO1xuXG4gICAgcmV0dXJuIG5ld19iaWdzdHJpbmc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIHZpZXc7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAwOiAgdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTogIHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gSW50OEFycmF5OyBicmVhaztcbiAgY2FzZSAzOiAgdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDQ6ICB2aWV3ID0gSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBVaW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNjogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA3OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgOTogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMDogdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDEyOiB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIH1cbiAgaWYgKCF2aWV3KSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHZhciBkYXRhID0gbmV3IHZpZXcoc2l6ZSAqIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA8IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyYXlcIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246ID49IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIlxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9oaTMyLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5IChraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuXG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gY2FtbF9iYV9jdXN0b21fbmFtZTtcblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIG9mcyA9IDA7XG4gIGlmKHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIpIGFyZyA9IFthcmddO1xuICBpZiAoISAoYXJnIGluc3RhbmNlb2YgQXJyYXkpKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdhcnJheS5qczogaW52YWxpZCBvZmZzZXRcIik7XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGFyZy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZ2V0L3NldDogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICBpZih0aGlzLmxheW91dCA9PSAwIC8qIGNfbGF5b3V0ICovKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pXG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgYXJnW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMSB8fCBhcmdbaV0gPiB0aGlzLmRpbXNbaV0pe1xuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICB9XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIChhcmdbaV0gLSAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9mcztcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBsID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGwsaCk7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGkgPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBbMjU0LCByLCBpXTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gdGhpcy5kYXRhW29mc11cbiAgfVxufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gdlsxXTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB2YXIgYiA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBpZihhID09IGIpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gYSA6IGI7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIGltID0gdlsxXTtcbiAgICB2YXIgcmUgPSB2WzJdO1xuICAgIGlmKGltID09IHJlKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGltKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBpbSA6IHJlO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKGIsIHRvdGFsKSB7XG4gIGlmICh0aGlzLmxheW91dCAhPSBiLmxheW91dCB8fCB0aGlzLmtpbmQgIT0gYi5raW5kKSB7XG4gICAgdmFyIGsxID0gdGhpcy5raW5kIHwgKHRoaXMubGF5b3V0IDw8IDgpO1xuICAgIHZhciBrMiA9ICAgIGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICByZXR1cm4gazIgLSBrMTtcbiAgfVxuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBiLmRpbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmICh0aGlzLmRpbXNbaV0gIT0gYi5kaW1zW2ldKVxuICAgICAgcmV0dXJuICh0aGlzLmRpbXNbaV0gPCBiLmRpbXNbaV0pID8gLTEgOiAxO1xuICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgY2FzZSAxMDpcbiAgY2FzZSAxMTpcbiAgICAvLyBGbG9hdHNcbiAgICB2YXIgeCwgeTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgeCA9IHRoaXMuZGF0YVtpXTtcbiAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICBpZiAoeCA8IHkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh4ID4geSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoeCAhPSB5KSB7XG4gICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgIGlmICh4ID09IHgpIHJldHVybiAxO1xuICAgICAgICBpZiAoeSA9PSB5KSByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrPTIpIHtcbiAgICAgIC8vIENoZWNrIGhpZ2hlc3QgYml0cyBmaXJzdFxuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdIDwgYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA+IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA8IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPiAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDI6XG4gIGNhc2UgMzpcbiAgY2FzZSA0OlxuICBjYXNlIDU6XG4gIGNhc2UgNjpcbiAgY2FzZSA4OlxuICBjYXNlIDk6XG4gIGNhc2UgMTI6XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPiBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSAgID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUgPSBuZXcgTWxfQmlnYXJyYXkoKVxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgaWYodHlwZW9mIGFyZyAhPT0gXCJudW1iZXJcIil7XG4gICAgaWYoKGFyZyBpbnN0YW5jZW9mIEFycmF5KSAmJiBhcmcubGVuZ3RoID09IDEpXG4gICAgICBhcmcgPSBhcmdbMF07XG4gICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gIH1cbiAgaWYgKGFyZyA8IDAgfHwgYXJnID49IHRoaXMuZGltc1swXSlcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcmc7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgdGhpcy5kYXRhLmZpbGwodik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9iYV9jb21wYXJlKGEsYix0b3RhbCl7XG4gIHJldHVybiBhLmNvbXBhcmUoYix0b3RhbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSl7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKTtcbiAgaWYoY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSAqIHNpemVfcGVyX2VsZW1lbnQgIT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmKGxheW91dCA9PSAwICYmIC8vIGNfbGF5b3V0XG4gICAgIGRpbXMubGVuZ3RoID09IDEgJiYgLy8gQXJyYXkxXG4gICAgIHNpemVfcGVyX2VsZW1lbnQgPT0gMSkgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcblxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZShraW5kLCBsYXlvdXQsIGRpbXNfbWwpIHtcbiAgdmFyIGRpbXMgPSBjYW1sX2pzX2Zyb21fYXJyYXkoZGltc19tbCk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIGNhbWxfYmFfZ2V0X3NpemUoZGltcykpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY2hhbmdlX2xheW91dFxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2NoYW5nZV9sYXlvdXQoYmEsIGxheW91dCkge1xuICBpZihiYS5sYXlvdXQgPT0gbGF5b3V0KSByZXR1cm4gYmE7XG4gIHZhciBuZXdfZGltcyA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbYmEuZGltcy5sZW5ndGggLSBpIC0gMV07XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgbGF5b3V0LCBuZXdfZGltcywgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kKGJhKSB7XG4gIHJldHVybiBiYS5raW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2xheW91dFxuZnVuY3Rpb24gY2FtbF9iYV9sYXlvdXQoYmEpIHtcbiAgcmV0dXJuIGJhLmxheW91dDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9udW1fZGltc1xuZnVuY3Rpb24gY2FtbF9iYV9udW1fZGltcyhiYSkge1xuICByZXR1cm4gYmEuZGltcy5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZGltKGJhLCBpKSB7XG4gIGlmIChpIDwgMCB8fCBpID49IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMgKyAxKTtcbiAgcmV0dXJuIChiMSB8IChiMiA8PCA4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MzIoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHJldHVybiAoIChiMSA8PCAwKSAgfFxuICAgICAgICAgICAoYjIgPDwgOCkgIHxcbiAgICAgICAgICAgKGIzIDw8IDE2KSB8XG4gICAgICAgICAgIChiNCA8PCAyNCkgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQ2NChiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgdmFyIGI1ID0gYmEuZ2V0KG9mcys0KTtcbiAgdmFyIGI2ID0gYmEuZ2V0KG9mcys1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcys2KTtcbiAgdmFyIGI4ID0gYmEuZ2V0KG9mcys3KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW2I4LGI3LGI2LGI1LGI0LGIzLGIyLGIxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzEoYmEsIGkwKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KGkwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzIoYmEsIGkwLCBpMSkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxLGkyXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0X2dlbmVyaWMoYmEsIGksIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMrMywgKHYgPj4+IDI0KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQ2NChiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgODsgaSsrKSBiYS5zZXQob2ZzK2ksIHZbNy1pXSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMihiYSwgaTAsIGkxLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMyhiYSwgaTAsIGkxLCBpMiwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZmlsbFxuZnVuY3Rpb24gY2FtbF9iYV9maWxsKGJhLCB2KSB7XG4gIGJhLmZpbGwodik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9ibGl0KHNyYywgZHN0KSB7XG4gIGlmIChkc3QuZGltcy5sZW5ndGggIT0gc3JjLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkc3QuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoZHN0LmRpbXNbaV0gIT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IChiYS5kaW1zLmxlbmd0aCAtIDEpOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCAob2ZzICsgbGVuKSA+IGJhLmRpbXNbY2hhbmdlZF9kaW1dKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zdWI6IGJhZCBzdWItYXJyYXlcIik7XG4gIH1cbiAgdmFyIG5ld19kaW1zID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAwO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZShudW1faW5kcyk7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyArIGldID0gdmluZFtpXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMTtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UoMCwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyk7XG4gIH1cbiAgb2ZzID0gYmEub2Zmc2V0KGluZGV4KTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKHN1Yl9kaW1zKTtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIHNpemVfcGVyX2VsZW1lbnQsIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgc3ViX2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9yZXNoYXBlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG5mdW5jdGlvbiBjYW1sX2JhX3Jlc2hhcGUoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG5ld19kaW0gPSBbXTtcbiAgdmFyIG51bV9kaW1zID0gdmluZC5sZW5ndGg7XG5cbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPSBzaXplKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IHNpemUgbWlzbWF0Y2hcIik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX3NlcmlhbGl6ZSh3cml0ZXIsIGJhLCBzeikge1xuICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXMubGVuZ3RoKTtcbiAgd3JpdGVyLndyaXRlKDMyLCAoYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpKTtcbiAgaWYoYmEuY2FtbF9jdXN0b20gPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYoYmEuZGltc1tpXSA8IDB4ZmZmZilcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHdyaXRlci53cml0ZSgzMixiYS5kaW1zW2ldKVxuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoOCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB3cml0ZXIud3JpdGUoOCwwKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhiYS5nZXQoaSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgaiA9IGJhLmdldChpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMV0pKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsxXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMl0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogNDtcbiAgc3pbMV0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGVzZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlcywgY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKXtcbiAgdmFyIG51bV9kaW1zID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogd3JvbmcgbnVtYmVyIG9mIGJpZ2FycmF5IGRpbWVuc2lvbnNcIik7XG4gIHZhciB0YWcgPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIga2luZCA9IHRhZyAmIDB4ZmZcbiAgdmFyIGxheW91dCA9ICh0YWcgPj4gOCkgJiAxO1xuICB2YXIgZGltcyA9IFtdXG4gIGlmKG5hbWUgPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICAgIHZhciBzaXplX2RpbSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICBpZihzaXplX2RpbSA9PSAweGZmZmYpe1xuICAgICAgICB2YXIgc2l6ZV9kaW1faGkgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICB2YXIgc2l6ZV9kaW1fbG8gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICBpZihzaXplX2RpbV9oaSAhPSAwKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogYmlnYXJyYXkgZGltZW5zaW9uIG92ZXJmbG93IGluIDMyYml0XCIpO1xuICAgICAgICBzaXplX2RpbSA9IHNpemVfZGltX2xvO1xuICAgICAgfVxuICAgICAgZGltcy5wdXNoKHNpemVfZGltKTtcbiAgICB9XG4gIGVsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIGRpbXMucHVzaChyZWFkZXIucmVhZDMydSgpKTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGRpbXMpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKTtcbiAgdmFyIGJhID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDhzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgdmFyIHNpeHR5ID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIGlmKHNpeHR5KSBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNhbm5vdCByZWFkIGJpZ2FycmF5IHdpdGggNjQtYml0IE9DYW1sIGludHNcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogLy8gKGludDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICBiYS5zZXQoaSxpbnQ2NCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrXG4gIH1cbiAgc3pbMF0gPSAoNCArIG51bV9kaW1zKSAqIDQ7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9EZXByZWNhdGVkXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIGpzdHlwLCBraW5kLCBsYXlvdXQsIGRpbXMpe1xuICBpZihkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09IDIpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfY3JlYXRlX2Zyb206IHVzZSByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlXCIpO1xuICB9XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfaGFzaChiYSl7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyA0IDw9IGJhLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDgpIHwgKGJhLmRhdGFbaSsyXSA8PCAxNikgfCAoYmEuZGF0YVtpKzNdIDw8IDI0KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICB3ID0gMDtcbiAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgIGNhc2UgMzogdyAgPSBiYS5kYXRhW2krMl0gPDwgMTY7ICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAyOiB3IHw9IGJhLmRhdGFbaSsxXSA8PCA4OyAgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDE6IHcgfD0gYmEuZGF0YVtpKzBdO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgMiA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9Mil7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCAxNik7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgaWYgKChudW1fZWx0cyAmIDEpICE9IDApXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgbnVtX2VsdHMgKj0gMlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9iYV90b190eXBlZF9hcnJheShiYSl7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZDtcbiAgaWYgICAgICAodGEgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkga2luZCA9IDE7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50OEFycmF5KSBraW5kID0gMjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MTZBcnJheSkga2luZCA9IDQ7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXk6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHJldHVybiBraW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAgIC8qIE5lZWRlZCB0byBhdm9pZCB1bnNpZ25lZCBzZXR0ZXJzIG92ZXJmbG93aW5nXG4gICAgICAgICB0aGUgcmFuZ2Ugb2YgT0NhbWwgW2ludDMyXSB2YWx1ZXMuICovXG4gICAgICB0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5ID9cbiAgICAgIG5ldyBJbnQzMkFycmF5KHRhLmJ1ZmZlciAsdGEuYnl0ZU9mZnNldCwgdGEubGVuZ3RoKSA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfdGFnKGEpe1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKGEpKSByZXR1cm4gMjUyOyAvLyBzdHJpbmdfdGFnXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGEpKSByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGFbMF0gPT09IChhWzBdPj4+MCkgJiYgYVswXSA8PSAyNTUpIHtcbiAgICAvLyBMb29rIGxpa2UgYW4gb2NhbWwgYmxvY2tcbiAgICB2YXIgdGFnID0gYVswXSB8IDA7XG4gICAgLy8gaWdub3JlIGRvdWJsZV9hcnJheV90YWcgYmVjYXVzZSB3ZSBjYW5ub3QgYWNjdXJhdGVseSBzZXRcbiAgICAvLyB0aGlzIHRhZyB3aGVuIHdlIGNyZWF0ZSBhbiBhcnJheSBvZiBmbG9hdC5cbiAgICByZXR1cm4gKHRhZyA9PSAyNTQpPzA6dGFnXG4gIH1cbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIFN0cmluZykgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgTnVtYmVyKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYSAmJiBhLmNhbWxfY3VzdG9tKSByZXR1cm4gMTI1NTsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKGEgJiYgYS5jb21wYXJlKSByZXR1cm4gMTI1NjsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDEyNDc7IC8vIGxpa2UgY2xvc3VyZV90YWcgKDI0NylcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpe1xuICByZXR1cm4gY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXS5jb21wYXJlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKG51bSwgY3VzdG9tLCBzd2FwLCB0b3RhbCkge1xuICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShjdXN0b20pO1xuICBpZihjb21wKSB7XG4gICAgdmFyIHggPSAoc3dhcCA+IDApP2NvbXAoY3VzdG9tLG51bSx0b3RhbCk6Y29tcChudW0sY3VzdG9tLHRvdGFsKTtcbiAgICBpZih0b3RhbCAmJiB4ICE9IHgpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZigreCAhPSAreCkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZigoeCB8IDApICE9IDApIHJldHVybiAoeCB8IDApOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbCAoY29uc3QsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX2NvbXBhcmUsIGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20sIGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIENvcHlyaWdodCAoYykgMjAxNyBJbmhhYml0ZWQgVHlwZSBMTEMuXG5cbiAgICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG4gICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gICAgYXJlIG1ldDpcblxuICAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuXG4gICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlXG4gICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuICAgIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGhpcyBjb250cmlidXRvcnNcbiAgICAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmVcbiAgICAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cblxuICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTXG4gICAgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAgICBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gICAgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SXG4gICAgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTFxuICAgIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTXG4gICAgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pXG4gICAgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULFxuICAgIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTlxuICAgIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRVxuICAgIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuZnVuY3Rpb24gYmlnc3RyaW5nYWZfYmxpdF90b19ieXRlcyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKHNyYyxzcmNfb2ZmLGRzdCxkc3Rfb2ZmLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX2JsaXRfdG9fYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZyhzcmMsIHNyY19vZmYsIGRzdCwgZHN0X29mZiwgbGVuKSB7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHNyYywgc3JjX29mZiwgZHN0LCBkc3Rfb2ZmLCBsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXMoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbikge1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEoc3JjLCBzcmNfb2ZmLCBkc3QsIGRzdF9vZmYsIGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9iaWdzdHJpbmcoYmExLCBiYTFfb2ZmLCBiYTIsIGJhMl9vZmYsIGxlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGMgPSBjYW1sX2ludF9jb21wYXJlKGNhbWxfYmFfZ2V0XzEoYmExLCBiYTFfb2ZmICsgaSksIGNhbWxfYmFfZ2V0XzEoYmEyLCBiYTJfb2ZmICsgaSkpO1xuICAgIGlmIChjICE9IDApIHJldHVybiBjXG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbmZ1bmN0aW9uIGJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmcoYmEsIGJhX29mZiwgc3RyLCBzdHJfb2ZmLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHZhciBjID0gY2FtbF9pbnRfY29tcGFyZShjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzdHIsIHN0cl9vZmYgKyBpKSk7XG4gICAgaWYgKGMgIT0gMCkgcmV0dXJuIGNcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nYWZfbWVtY2hyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdhZl9tZW1jaHIoYmEsIGJhX29mZiwgY2hyLCBsZW4pIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGlmIChjYW1sX2JhX2dldF8xKGJhLCBiYV9vZmYgKyBpKSA9PSBjaHIpIHtcbiAgICAgIHJldHVybiAoYmFfb2ZmICsgaSk7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cbiIsIi8vLy8vLy8vLyBCSUdTVFJJTkdcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2JpZ3N0cmluZyhoLCBicykge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9ieXRlc19hcnIoaCxicy5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciBtdXRhYmxlXG5mdW5jdGlvbiBiaWdzdHJpbmdfdG9fYXJyYXlfYnVmZmVyKGJzKSB7XG4gIHJldHVybiBicy5kYXRhLmJ1ZmZlclxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5KGJzKSB7XG4gIHJldHVybiBicy5kYXRhXG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyKGFiKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGFiKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KGJhKSB7XG4gIHZhciB0YSA9IG5ldyBVaW50OEFycmF5KGJhLmJ1ZmZlciwgYmEuYnl0ZU9mZnNldCwgYmEubGVuZ3RoICogYmEuQllURVNfUEVSX0VMRU1FTlQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKDEyLCAwLCBbdGEubGVuZ3RoXSwgdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19tZW1jbXBcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX21lbWNtcChzMSwgcG9zMSwgczIsIHBvczIsIGxlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEoczEscG9zMSArIGkpO1xuICAgIHZhciBiID0gY2FtbF9iYV9nZXRfMShzMixwb3MyICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKGJhMSwgcG9zMSwgYmEyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZigxMiAhPSBiYTIua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMxID0gYmExLm9mZnNldChwb3MxKTtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnN1YmFycmF5KG9mczEsb2ZzMStsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2UscG9zMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcoc3RyMSkuc2xpY2UocG9zMSxwb3MxICsgbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLG9mczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhKHN0cjEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczIgPSBiYTIub2Zmc2V0KHBvczIpO1xuICBpZihwb3MxICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoc3RyMSkpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYob2ZzMiArIGxlbiA+IGJhMi5kYXRhLmxlbmd0aCkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzKGJhMSwgcG9zMSwgYnl0ZXMyLCBwb3MyLCBsZW4pe1xuICBpZigxMiAhPSBiYTEua2luZClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIGlmKG9mczEgKyBsZW4gPiBiYTEuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihwb3MyICsgbGVuID4gY2FtbF9tbF9ieXRlc19sZW5ndGgoYnl0ZXMyKSl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGJhMS5kYXRhLnNsaWNlKG9mczEsIG9mczErbGVuKTtcbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoc2xpY2UpLCAwLCBieXRlczIsIHBvczIsIGxlbik7XG4gIHJldHVybiAwXG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19hbGxvY1xuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19hbGxvYyhfLHNpemUpe1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGUoMTIsIDAsIFswLHNpemVdKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1YlxuZnVuY3Rpb24gYmlnc3RyaW5nX2lzX21tYXBwZWRfc3R1Yih4KXtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X3N0dWIoczEsIGkxLCBzMiwgaTIsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2JhKHMxLGkxLHMyLGkyLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19ibGl0X2J5dGVzX2JpZ3N0cmluZ19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2J5dGVzX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YihzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEoc3JjLHNyY19wb3MsZHN0LGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2JsaXRfYmlnc3RyaW5nX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbmZ1bmN0aW9uIGJpZ3N0cmluZ19ibGl0X2JpZ3N0cmluZ19ieXRlc19zdHViKHNyYywgc3JjX3BvcywgZHN0LCBkc3RfcG9zLCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaWdzdHJpbmdfYmxpdF9zdHJpbmdfYmlnc3RyaW5nX3N0dWIoc3JjLCBzcmNfcG9zLCBkc3QsIGRzdF9wb3MsIGxlbil7XG4gIHJldHVybiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtc2V0X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19tZW1zZXRfc3R1YihiaWdzdHJpbmcsIHZfcG9zLCB2X2xlbiwgdl9jaGFyKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIGNhbWxfYmFfc2V0XzEoYmlnc3RyaW5nLCB2X3BvcyArIGksIHZfY2hhcik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX21lbWNtcF9zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbil7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdl9sZW47IGkrKykge1xuICAgIHZhciBhID0gY2FtbF9iYV9nZXRfMSh2X3MxLHZfczFfcG9zICsgaSk7XG4gICAgdmFyIGIgPSBjYW1sX2JhX2dldF8xKHZfczIsdl9zMl9wb3MgKyBpKTtcbiAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzEsIGNhbWxfYnl0ZXNfZ2V0XG5mdW5jdGlvbiBiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWIodl9zMSwgdl9zMV9wb3MsIHZfczIsIHZfczJfcG9zLCB2X2xlbikge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZfbGVuOyBpKyspIHtcbiAgICB2YXIgYSA9IGNhbWxfYmFfZ2V0XzEodl9zMSwgdl9zMV9wb3MgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYnl0ZXNfZ2V0KHZfczIsIHZfczJfcG9zICsgaSk7XG4gICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG52YXIgaW50ZXJuYWxoYXNoX2ZvbGRfYmlnc3RyaW5nID0gY2FtbF9oYXNoX21peF9iaWdzdHJpbmdcblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX2ZpbmRcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGJpZ3N0cmluZ19maW5kKGJzLCBjaHIsIHBvcywgbGVuKXtcbiAgd2hpbGUobGVuID4gMCl7XG4gICAgaWYoY2FtbF9iYV9nZXRfMShicyxwb3MpID09IGNocikgcmV0dXJuIHBvcztcbiAgICBwb3MrKztcbiAgICBsZW4tLTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9pbnQgY29uc3QgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nLCBjYW1sX3N0cl9yZXBlYXRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2ludChmbXQsIGkpIHtcbiAgaWYgKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KSA9PSBcIiVkXCIpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiXCIraSk7XG4gIHZhciBmID0gY2FtbF9wYXJzZV9mb3JtYXQoZm10KTtcbiAgaWYgKGkgPCAwKSB7IGlmIChmLnNpZ25lZGNvbnYpIHsgZi5zaWduID0gLTE7IGkgPSAtaTsgfSBlbHNlIGkgPj4+PSAwOyB9XG4gIHZhciBzID0gaS50b1N0cmluZyhmLmJhc2UpO1xuICBpZiAoZi5wcmVjID49IDApIHtcbiAgICBmLmZpbGxlciA9ICcgJztcbiAgICB2YXIgbiA9IGYucHJlYyAtIHMubGVuZ3RoO1xuICAgIGlmIChuID4gMCkgcyA9IGNhbWxfc3RyX3JlcGVhdCAobiwgJzAnKSArIHM7XG4gIH1cbiAgcmV0dXJuIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfdW5zYWZlX2dldCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpIHtcbiAgdmFyIGkgPSAwLCBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyksIGJhc2UgPSAxMCwgc2lnbiA9IDE7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsaSkpIHtcbiAgICBjYXNlIDQ1OiBpKys7IHNpZ24gPSAtMTsgYnJlYWs7XG4gICAgY2FzZSA0MzogaSsrOyBzaWduID0gMTsgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChpICsgMSA8IGxlbiAmJiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpID09IDQ4KVxuICAgIHN3aXRjaCAoY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpICsgMSkpIHtcbiAgICBjYXNlIDEyMDogY2FzZSA4ODogYmFzZSA9IDE2OyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTExOiBjYXNlIDc5OiBiYXNlID0gIDg7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAgOTg6IGNhc2UgNjY6IGJhc2UgPSAgMjsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlIDExNzogY2FzZSA4NTogaSArPSAyOyBicmVhaztcbiAgICB9XG4gIHJldHVybiBbaSwgc2lnbiwgYmFzZV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZGlnaXRcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZGlnaXQoYykge1xuICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSAgcmV0dXJuIGMgLSA0ODtcbiAgaWYgKGMgPj0gNjUgJiYgYyA8PSA5MCkgIHJldHVybiBjIC0gNTU7XG4gIGlmIChjID49IDk3ICYmIGMgPD0gMTIyKSByZXR1cm4gYyAtIDg3O1xuICByZXR1cm4gLTE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50X29mX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSwgY2FtbF9wYXJzZV9kaWdpdCwgY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9pbnRfb2Zfc3RyaW5nIChzKSB7XG4gIHZhciByID0gY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlIChzKTtcbiAgdmFyIGkgPSByWzBdLCBzaWduID0gclsxXSwgYmFzZSA9IHJbMl07XG4gIHZhciBsZW4gPSBjYW1sX21sX3N0cmluZ19sZW5ndGgocyk7XG4gIHZhciB0aHJlc2hvbGQgPSAtMSA+Pj4gMDtcbiAgdmFyIGMgPSAoaSA8IGxlbik/Y2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTowO1xuICB2YXIgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB2YXIgcmVzID0gZDtcbiAgZm9yIChpKys7aTxsZW47aSsrKSB7XG4gICAgYyA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSk7XG4gICAgaWYgKGMgPT0gOTUpIGNvbnRpbnVlO1xuICAgIGQgPSBjYW1sX3BhcnNlX2RpZ2l0KGMpO1xuICAgIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIGJyZWFrO1xuICAgIHJlcyA9IGJhc2UgKiByZXMgKyBkO1xuICAgIGlmIChyZXMgPiB0aHJlc2hvbGQpIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICB9XG4gIGlmIChpICE9IGxlbikgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIC8vIEZvciBiYXNlIGRpZmZlcmVudCBmcm9tIDEwLCB3ZSBleHBlY3QgYW4gdW5zaWduZWQgcmVwcmVzZW50YXRpb24sXG4gIC8vIGhlbmNlIGFueSB2YWx1ZSBvZiAncmVzJyAobGVzcyB0aGFuICd0aHJlc2hvbGQnKSBpcyBhY2NlcHRhYmxlLlxuICAvLyBCdXQgd2UgaGF2ZSB0byBjb252ZXJ0IHRoZSByZXN1bHQgYmFjayB0byBhIHNpZ25lZCBpbnRlZ2VyLlxuICByZXMgPSBzaWduICogcmVzO1xuICBpZiAoKGJhc2UgPT0gMTApICYmICgocmVzIHwgMCkgIT0gcmVzKSlcbiAgICAvKiBTaWduZWQgcmVwcmVzZW50YXRpb24gZXhwZWN0ZWQsIGFsbG93IC0yXihuYml0cy0xKSB0byAyXihuYml0cy0xKSAtIDEgKi9cbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgcmV0dXJuIHJlcyB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbXVsIGNvbnN0XG5mdW5jdGlvbiBjYW1sX211bChhLGIpe1xuICByZXR1cm4gTWF0aC5pbXVsKGEsYik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGl2XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX2Rpdih4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuICh4L3kpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbW9kXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3plcm9fZGl2aWRlXG5mdW5jdGlvbiBjYW1sX21vZCh4LHkpIHtcbiAgaWYgKHkgPT0gMCkgY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKTtcbiAgcmV0dXJuIHgleTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ic3dhcDE2XG5mdW5jdGlvbiBjYW1sX2Jzd2FwMTYoeCkge1xuICByZXR1cm4gKCgoKHggJiAweDAwRkYpIDw8IDgpIHxcbiAgICAgICAgICAgKCh4ICYgMHhGRjAwKSA+PiA4KSkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9ic3dhcFxuZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7XG4gIHJldHVybiAoKCh4ICYgMHgwMDAwMDBGRikgPDwgMjQpIHxcbiAgICAgICAgICAoKHggJiAweDAwMDBGRjAwKSA8PCA4KSB8XG4gICAgICAgICAgKCh4ICYgMHgwMEZGMDAwMCkgPj4+IDgpIHxcbiAgICAgICAgICAoKHggJiAweEZGMDAwMDAwKSA+Pj4gMjQpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYnN3YXBcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW50NjRfYnN3YXAoeCkge1xuICB2YXIgeSA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoeCk7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzKFt5WzddLCB5WzZdLCB5WzVdLCB5WzRdLCB5WzNdLCB5WzJdLCB5WzFdLCB5WzBdXSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEhhc2h0YmxcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfdW5pdl9wYXJhbSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19sZW5ndGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vVmVyc2lvbjogPCA0LjEyXG5mdW5jdGlvbiBjYW1sX2hhc2hfdW5pdl9wYXJhbSAoY291bnQsIGxpbWl0LCBvYmopIHtcbiAgdmFyIGhhc2hfYWNjdSA9IDA7XG4gIGZ1bmN0aW9uIGhhc2hfYXV4IChvYmopIHtcbiAgICBsaW1pdCAtLTtcbiAgICBpZiAoY291bnQgPCAwIHx8IGxpbWl0IDwgMCkgcmV0dXJuO1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBBcnJheSAmJiBvYmpbMF0gPT09IChvYmpbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAob2JqWzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmpbMl0pIHwgMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1MDpcbiAgICAgICAgLy8gRm9yd2FyZFxuICAgICAgICBsaW1pdCsrOyBoYXNoX2F1eChvYmopOyBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvdW50IC0tO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBvYmpbMF0pIHwgMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IG9iai5sZW5ndGggLSAxOyBpID4gMDsgaS0tKSBoYXNoX2F1eCAob2JqW2ldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMob2JqKSkge1xuICAgICAgY291bnQgLS07XG4gICAgICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudChvYmopO1xuICAgICAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgZm9yICh2YXIgYiA9IGNvbnRlbnQsIGwgPSBiLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgICB9IGVsc2UgeyAvKiBBUlJBWSAqL1xuICAgICAgICBmb3IgKHZhciBhID0gY29udGVudCwgbCA9IGEubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBhW2ldKSB8IDA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyhvYmopKSB7XG4gICAgICB2YXIganNieXRlcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcob2JqKTtcbiAgICAgIGZvciAodmFyIGIgPSBqc2J5dGVzLCBsID0ganNieXRlcy5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGZvciAodmFyIGIgPSBvYmosIGwgPSBvYmoubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDE5ICsgYi5jaGFyQ29kZUF0KGkpKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09IChvYmp8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGNvdW50IC0tO1xuICAgICAgaGFzaF9hY2N1ID0gKGhhc2hfYWNjdSAqIDY1NTk5ICsgb2JqKSB8IDA7XG4gICAgfSBlbHNlIGlmIChvYmogPT09ICtvYmopIHtcbiAgICAgIC8vIEZsb2F0XG4gICAgICBjb3VudC0tO1xuICAgICAgdmFyIHAgPSBjYW1sX2ludDY0X3RvX2J5dGVzIChjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKG9iaikpO1xuICAgICAgZm9yICh2YXIgaSA9IDc7IGkgPj0gMDsgaS0tKSBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBwW2ldKSB8IDA7XG4gICAgfSBlbHNlIGlmKG9iaiAmJiBvYmouY2FtbF9jdXN0b20pIHtcbiAgICAgIGlmKGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGggPSBjYW1sX2N1c3RvbV9vcHNbb2JqLmNhbWxfY3VzdG9tXS5oYXNoKG9iaikgfCAwO1xuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBoKSB8IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGhhc2hfYXV4IChvYmopO1xuICByZXR1cm4gaGFzaF9hY2N1ICYgMHgzRkZGRkZGRjtcbn1cblxuLy9mdW5jdGlvbiBST1RMMzIoeCxuKSB7IHJldHVybiAoKHggPDwgbikgfCAoeCA+Pj4gKDMyLW4pKSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQoaCxkKSB7XG4gIGQgPSBjYW1sX211bChkLCAweGNjOWUyZDUxfDApO1xuICBkID0gKChkIDw8IDE1KSB8IChkID4+PiAoMzItMTUpKSk7IC8vIFJPVEwzMihkLCAxNSk7XG4gIGQgPSBjYW1sX211bChkLCAweDFiODczNTkzKTtcbiAgaCBePSBkO1xuICBoID0gKChoIDw8IDEzKSB8IChoID4+PiAoMzItMTMpKSk7ICAgLy9ST1RMMzIoaCwgMTMpO1xuICByZXR1cm4gKCgoaCArIChoIDw8IDIpKXwwKSArICgweGU2NTQ2YjY0fDApKXwwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG4vL1JlcXVpcmVzOiBjYW1sX211bFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9maW5hbChoKSB7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIGggPSBjYW1sX211bCAoaCwgMHg4NWViY2E2YnwwKTtcbiAgaCBePSBoID4+PiAxMztcbiAgaCA9IGNhbWxfbXVsIChoLCAweGMyYjJhZTM1fDApO1xuICBoIF49IGggPj4+IDE2O1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0LCBjYW1sX2hhc2hfbWl4X2ludDY0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2Zsb2F0IChoLCB2MCkge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9pbnQ2NChoLCBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQgKHYwKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9sbzMyLCBjYW1sX2ludDY0X2hpMzJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfaW50NjQgKGgsIHYpIHtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfbG8zMih2KSk7XG4gIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBjYW1sX2ludDY0X2hpMzIodikpO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludFxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzLmNoYXJDb2RlQXQoaSlcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDgpXG4gICAgICB8IChzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNilcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzMpIDw8IDI0KTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIH1cbiAgdyA9IDA7XG4gIHN3aXRjaCAobGVuICYgMykge1xuICBjYXNlIDM6IHcgID0gcy5jaGFyQ29kZUF0KGkrMikgPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzLmNoYXJDb2RlQXQoaSsxKSA8PCA4O1xuICBjYXNlIDE6XG4gICAgdyB8PSBzLmNoYXJDb2RlQXQoaSk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBzKSB7XG4gIHZhciBsZW4gPSBzLmxlbmd0aCwgaSwgdztcbiAgZm9yIChpID0gMDsgaSArIDQgPD0gbGVuOyBpICs9IDQpIHtcbiAgICB3ID0gc1tpXVxuICAgICAgfCAoc1tpKzFdIDw8IDgpXG4gICAgICB8IChzW2krMl0gPDwgMTYpXG4gICAgICB8IChzW2krM10gPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzW2krMl0gPDwgMTY7XG4gIGNhc2UgMjogdyB8PSBzW2krMV0gPDwgODtcbiAgY2FzZSAxOiB3IHw9IHNbaV07XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICBkZWZhdWx0OlxuICB9XG4gIGggXj0gbGVuO1xuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsIHYpIHtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX21sX2J5dGVzX2NvbnRlbnQodik7XG4gIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY29udGVudClcbiAgZWxzZSAvKiBBUlJBWSAqL1xuICAgIHJldHVybiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FycihoLCBjb250ZW50KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9zdHJpbmcoaCwgdikge1xuICByZXR1cm4gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsIGNhbWxfanNieXRlc19vZl9zdHJpbmcodikpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaCBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX3N0cmluZywgY2FtbF9pc19tbF9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfZmxvYXQsIGNhbWxfaGFzaF9taXhfc3RyaW5nLCBjYW1sX2hhc2hfbWl4X2J5dGVzLCBjYW1sX2N1c3RvbV9vcHNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG5mdW5jdGlvbiBjYW1sX2hhc2ggKGNvdW50LCBsaW1pdCwgc2VlZCwgb2JqKSB7XG4gIHZhciBxdWV1ZSwgcmQsIHdyLCBzeiwgbnVtLCBoLCB2LCBpLCBsZW47XG4gIHN6ID0gbGltaXQ7XG4gIGlmIChzeiA8IDAgfHwgc3ogPiAyNTYpIHN6ID0gMjU2O1xuICBudW0gPSBjb3VudDtcbiAgaCA9IHNlZWQ7XG4gIHF1ZXVlID0gW29ial07IHJkID0gMDsgd3IgPSAxO1xuICB3aGlsZSAocmQgPCB3ciAmJiBudW0gPiAwKSB7XG4gICAgdiA9IHF1ZXVlW3JkKytdO1xuICAgIGlmICh2ICYmIHYuY2FtbF9jdXN0b20pe1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKSB7XG4gICAgICAgIHZhciBoaCA9IGNhbWxfY3VzdG9tX29wc1t2LmNhbWxfY3VzdG9tXS5oYXNoKHYpO1xuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQgKGgsIGhoKTtcbiAgICAgICAgbnVtIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmICh2IGluc3RhbmNlb2YgQXJyYXkgJiYgdlswXSA9PT0gKHZbMF18MCkpIHtcbiAgICAgIHN3aXRjaCAodlswXSkge1xuICAgICAgY2FzZSAyNDg6XG4gICAgICAgIC8vIE9iamVjdFxuICAgICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdlsyXSk7XG4gICAgICAgIG51bS0tO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIHF1ZXVlWy0tcmRdID0gdlsxXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpIHtcbiAgICAgICAgICAvKiBBbGwgY29udGludWF0aW9ucyBoYXNoIHRvIHRoZSBzYW1lIHZhbHVlLFxuICAgICAgICAgICAgIHNpbmNlIHdlIGhhdmUgbm8gaWRlYSBob3cgdG8gZGlzdGluZ3Vpc2ggdGhlbS4gKi9cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB2YXIgdGFnID0gKCh2Lmxlbmd0aCAtIDEpIDw8IDEwKSB8IHZbMF07XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB0YWcpO1xuICAgICAgICBmb3IgKGkgPSAxLCBsZW4gPSB2Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgaWYgKHdyID49IHN6KSBicmVhaztcbiAgICAgICAgICBxdWV1ZVt3cisrXSA9IHZbaV07XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9ieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKHYpKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KVxuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfanNieXRlcyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHYgPT09ICh2fDApKSB7XG4gICAgICAvLyBJbnRlZ2VyXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdit2KzEpO1xuICAgICAgbnVtLS07XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdiA9PT0gXCJudW1iZXJcIikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsdik7XG4gICAgICBudW0tLTtcbiAgICB9XG4gIH1cbiAgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9maW5hbCwgY2FtbF9oYXNoX21peF9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2hhc2goaCwgdil7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9zdHJpbmcoaCx2KTtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpO1xuICByZXR1cm4gaCAmIDB4M0ZGRkZGRkY7XG59XG4iLCIvL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludDY0XG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludDY0XG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9pbnQ2NCA9IGNhbWxfaGFzaF9taXhfaW50NjQ7XG4vL1Byb3ZpZGVzOiBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbnZhciBCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludCA9IGNhbWxfaGFzaF9taXhfaW50O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9mbG9hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdFxudmFyIEJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfZmxvYXQgPSBjYW1sX2hhc2hfbWl4X2Zsb2F0O1xuLy9Qcm92aWRlczogQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfc3RyaW5nXG52YXIgQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmcgPSBjYW1sX2hhc2hfbWl4X3N0cmluZztcbi8vUHJvdmlkZXM6IEJhc2VfaW50ZXJuYWxoYXNoX2dldF9oYXNoX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsXG5mdW5jdGlvbiBCYXNlX2ludGVybmFsaGFzaF9nZXRfaGFzaF92YWx1ZShzZWVkKSB7XG4gIHZhciBoID0gY2FtbF9oYXNoX21peF9maW5hbChzZWVkKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqL1xuLyogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqL1xuLyogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqL1xuLyogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIC4uL0xJQ0VOU0UuICAgICAqL1xuLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKiAkSWQ6IHBhcnNpbmcuYyA4OTgzIDIwMDgtMDgtMDYgMDk6Mzg6MjVaIHhsZXJveSAkICovXG5cbi8qIFRoZSBQREEgYXV0b21hdG9uIGZvciBwYXJzZXJzIGdlbmVyYXRlZCBieSBjYW1seWFjYyAqL1xuXG4vKiBUaGUgcHVzaGRvd24gYXV0b21hdGEgKi9cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZXJfdHJhY2VcbnZhciBjYW1sX3BhcnNlcl90cmFjZSA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcGFyc2VfZW5naW5lXG4vL1JlcXVpcmVzOiBjYW1sX2xleF9hcnJheSwgY2FtbF9wYXJzZXJfdHJhY2UsY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0LCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsIE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHRhYmxlcywgZW52LCBjbWQsIGFyZylcbntcbiAgdmFyIEVSUkNPREUgPSAyNTY7XG5cbiAgLy92YXIgU1RBUlQgPSAwO1xuICAvL3ZhciBUT0tFTl9SRUFEID0gMTtcbiAgLy92YXIgU1RBQ0tTX0dST1dOXzEgPSAyO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMiA9IDM7XG4gIC8vdmFyIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRCA9IDQ7XG4gIC8vdmFyIEVSUk9SX0RFVEVDVEVEID0gNTtcbiAgdmFyIGxvb3AgPSA2O1xuICB2YXIgdGVzdHNoaWZ0ID0gNztcbiAgdmFyIHNoaWZ0ID0gODtcbiAgdmFyIHNoaWZ0X3JlY292ZXIgPSA5O1xuICB2YXIgcmVkdWNlID0gMTA7XG5cbiAgdmFyIFJFQURfVE9LRU4gPSAwO1xuICB2YXIgUkFJU0VfUEFSU0VfRVJST1IgPSAxO1xuICB2YXIgR1JPV19TVEFDS1NfMSA9IDI7XG4gIHZhciBHUk9XX1NUQUNLU18yID0gMztcbiAgdmFyIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OID0gNDtcbiAgdmFyIENBTExfRVJST1JfRlVOQ1RJT04gPSA1O1xuXG4gIHZhciBlbnZfc19zdGFjayA9IDE7XG4gIHZhciBlbnZfdl9zdGFjayA9IDI7XG4gIHZhciBlbnZfc3ltYl9zdGFydF9zdGFjayA9IDM7XG4gIHZhciBlbnZfc3ltYl9lbmRfc3RhY2sgPSA0O1xuICB2YXIgZW52X3N0YWNrc2l6ZSA9IDU7XG4gIHZhciBlbnZfc3RhY2tiYXNlID0gNjtcbiAgdmFyIGVudl9jdXJyX2NoYXIgPSA3O1xuICB2YXIgZW52X2x2YWwgPSA4O1xuICB2YXIgZW52X3N5bWJfc3RhcnQgPSA5O1xuICB2YXIgZW52X3N5bWJfZW5kID0gMTA7XG4gIHZhciBlbnZfYXNwID0gMTE7XG4gIHZhciBlbnZfcnVsZV9sZW4gPSAxMjtcbiAgdmFyIGVudl9ydWxlX251bWJlciA9IDEzO1xuICB2YXIgZW52X3NwID0gMTQ7XG4gIHZhciBlbnZfc3RhdGUgPSAxNTtcbiAgdmFyIGVudl9lcnJmbGFnID0gMTY7XG5cbiAgLy8gdmFyIF90YmxfYWN0aW9ucyA9IDE7XG4gIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0gMjtcbiAgdmFyIHRibF90cmFuc2xfYmxvY2sgPSAzO1xuICB2YXIgdGJsX2xocyA9IDQ7XG4gIHZhciB0YmxfbGVuID0gNTtcbiAgdmFyIHRibF9kZWZyZWQgPSA2O1xuICB2YXIgdGJsX2Rnb3RvID0gNztcbiAgdmFyIHRibF9zaW5kZXggPSA4O1xuICB2YXIgdGJsX3JpbmRleCA9IDk7XG4gIHZhciB0YmxfZ2luZGV4ID0gMTA7XG4gIHZhciB0YmxfdGFibGVzaXplID0gMTE7XG4gIHZhciB0YmxfdGFibGUgPSAxMjtcbiAgdmFyIHRibF9jaGVjayA9IDEzO1xuICAvLyB2YXIgX3RibF9lcnJvcl9mdW5jdGlvbiA9IDE0O1xuICB2YXIgdGJsX25hbWVzX2NvbnN0ID0gMTU7XG4gIHZhciB0YmxfbmFtZXNfYmxvY2sgPSAxNjtcblxuXG4gIGZ1bmN0aW9uIGxvZyh4KSB7XG4gICAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHggKyBcIlxcblwiKTtcbiAgICBjYW1sX21sX291dHB1dCgyLCBzLCAwLCBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpO1xuICB9XG5cbiAgZnVuY3Rpb24gdG9rZW5fbmFtZShuYW1lcywgbnVtYmVyKVxuICB7XG4gICAgdmFyIHN0ciA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKG5hbWVzKTtcbiAgICBpZiAoc3RyWzBdID09ICdcXHgwMCcpXG4gICAgICByZXR1cm4gXCI8dW5rbm93biB0b2tlbj5cIjtcbiAgICByZXR1cm4gc3RyLnNwbGl0KCdcXHgwMCcpW251bWJlcl07XG4gIH1cblxuICBmdW5jdGlvbiBwcmludF90b2tlbihzdGF0ZSwgdG9rKVxuICB7XG4gICAgdmFyIHRva2VuLCBraW5kO1xuICAgIGlmICh0b2sgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfYmxvY2tdLCB0b2tbMF0pO1xuICAgICAgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJudW1iZXJcIilcbiAgICAgICAga2luZCA9IFwiXCIgKyB0b2tbMV07XG4gICAgICBlbHNlIGlmICh0eXBlb2YgdG9rWzFdID09IFwic3RyaW5nXCIpXG4gICAgICAgIGtpbmQgPSB0b2tbMV1cbiAgICAgIGVsc2UgaWYgKHRva1sxXSBpbnN0YW5jZW9mIE1sQnl0ZXMpXG4gICAgICAgIGtpbmQgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRva1sxXSlcbiAgICAgIGVsc2VcbiAgICAgICAga2luZCA9IFwiX1wiXG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbiArIFwiKFwiICsga2luZCArIFwiKVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdG9rZW4gPSB0b2tlbl9uYW1lKHRhYmxlc1t0YmxfbmFtZXNfY29uc3RdLCB0b2spO1xuICAgICAgbG9nKFwiU3RhdGUgXCIgKyBzdGF0ZSArIFwiOiByZWFkIHRva2VuIFwiICsgdG9rZW4pO1xuICAgIH1cbiAgfVxuXG4gIGlmICghdGFibGVzLmRnb3RvKSB7XG4gICAgdGFibGVzLmRlZnJlZCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2RlZnJlZF0pO1xuICAgIHRhYmxlcy5zaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9zaW5kZXhdKTtcbiAgICB0YWJsZXMuY2hlY2sgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfY2hlY2tdKTtcbiAgICB0YWJsZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfcmluZGV4XSk7XG4gICAgdGFibGVzLnRhYmxlICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3RhYmxlXSk7XG4gICAgdGFibGVzLmxlbiAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xlbl0pO1xuICAgIHRhYmxlcy5saHMgICAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9saHNdKTtcbiAgICB0YWJsZXMuZ2luZGV4ID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZ2luZGV4XSk7XG4gICAgdGFibGVzLmRnb3RvICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2Rnb3RvXSk7XG4gIH1cblxuICB2YXIgcmVzID0gMCwgbiwgbjEsIG4yLCBzdGF0ZTE7XG5cbiAgLy8gUkVTVE9SRVxuICB2YXIgc3AgPSBlbnZbZW52X3NwXTtcbiAgdmFyIHN0YXRlID0gZW52W2Vudl9zdGF0ZV07XG4gIHZhciBlcnJmbGFnID0gZW52W2Vudl9lcnJmbGFnXTtcblxuICBleGl0OmZvciAoOzspIHtcbiAgICBuZXh0OnN3aXRjaChjbWQpIHtcbiAgICBjYXNlIDA6Ly9TVEFSVDpcbiAgICAgIHN0YXRlID0gMDtcbiAgICAgIGVycmZsYWcgPSAwO1xuICAgICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlIDY6Ly9sb29wOlxuICAgICAgbiA9IHRhYmxlcy5kZWZyZWRbc3RhdGVdO1xuICAgICAgaWYgKG4gIT0gMCkgeyBjbWQgPSByZWR1Y2U7IGJyZWFrOyB9XG4gICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID49IDApIHsgY21kID0gdGVzdHNoaWZ0OyBicmVhazsgfVxuICAgICAgcmVzID0gUkVBRF9UT0tFTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgbGV4ZXIgYW5kIHVwZGF0ZXMgKi9cbiAgICAgIC8qIHN5bWJfc3RhcnQgYW5kIHN5bWJfZW5kICovXG4gICAgY2FzZSAxOi8vVE9LRU5fUkVBRDpcbiAgICAgIGlmIChhcmcgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9ibG9ja11bYXJnWzBdICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnICsgMV07XG4gICAgICAgIGVudltlbnZfbHZhbF0gPSAwO1xuICAgICAgfVxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKSBwcmludF90b2tlbiAoc3RhdGUsIGFyZyk7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNzovL3Rlc3RzaGlmdDpcbiAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBjbWQgPSBzaGlmdDsgYnJlYWs7XG4gICAgICB9XG4gICAgICBuMSA9IHRhYmxlcy5yaW5kZXhbc3RhdGVdO1xuICAgICAgbjIgPSBuMSArIGVudltlbnZfY3Vycl9jaGFyXTtcbiAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBlbnZbZW52X2N1cnJfY2hhcl0pIHtcbiAgICAgICAgbiA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICAgIGNtZCA9IHJlZHVjZTsgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7XG4gICAgICAgIHJlcyA9IENBTExfRVJST1JfRlVOQ1RJT047XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBlcnJvciBmdW5jdGlvbiAqL1xuICAgIGNhc2UgNTovL0VSUk9SX0RFVEVDVEVEOlxuICAgICAgaWYgKGVycmZsYWcgPCAzKSB7XG4gICAgICAgIGVycmZsYWcgPSAzO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdO1xuICAgICAgICAgIG4xID0gdGFibGVzLnNpbmRleFtzdGF0ZTFdO1xuICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFO1xuICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmXG4gICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gRVJSQ09ERSkge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJSZWNvdmVyaW5nIGluIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGNtZCA9IHNoaWZ0X3JlY292ZXI7IGJyZWFrIG5leHQ7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBzdGF0ZSBcIiArIHN0YXRlMSk7XG4gICAgICAgICAgICBpZiAoc3AgPD0gZW52W2Vudl9zdGFja2Jhc2VdKSB7XG4gICAgICAgICAgICAgIGlmIChjYW1sX3BhcnNlcl90cmFjZSlcbiAgICAgICAgICAgICAgICBsb2coXCJObyBtb3JlIHN0YXRlcyB0byBkaXNjYXJkXCIpO1xuICAgICAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgICAgIHNwLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2NoYXJdID09IDApXG4gICAgICAgICAgcmV0dXJuIFJBSVNFX1BBUlNFX0VSUk9SOyAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3IgKi9cbiAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgIGxvZyhcIkRpc2NhcmRpbmcgbGFzdCB0b2tlbiByZWFkXCIpO1xuICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSAtMTtcbiAgICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDg6Ly9zaGlmdDpcbiAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgaWYgKGVycmZsYWcgPiAwKSBlcnJmbGFnLS07XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICBjYXNlIDk6Ly9zaGlmdF9yZWNvdmVyOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHNoaWZ0IHRvIHN0YXRlIFwiICsgdGFibGVzLnRhYmxlW24yXSk7XG4gICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBzcCsrO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18xO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDI6Ly9TVEFDS1NfR1JPV05fMTpcbiAgICAgIGVudltlbnZfc19zdGFja11bc3AgKyAxXSA9IHN0YXRlO1xuICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9sdmFsXTtcbiAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9zdGFydF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF07XG4gICAgICBjbWQgPSBsb29wO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDEwOi8vcmVkdWNlOlxuICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlZHVjZSBieSBydWxlIFwiICsgbik7XG4gICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07XG4gICAgICBlbnZbZW52X2FzcF0gPSBzcDtcbiAgICAgIGVudltlbnZfcnVsZV9udW1iZXJdID0gbjtcbiAgICAgIGVudltlbnZfcnVsZV9sZW5dID0gbTtcbiAgICAgIHNwID0gc3AgLSBtICsgMTtcbiAgICAgIG0gPSB0YWJsZXMubGhzW25dO1xuICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcF07XG4gICAgICBuMSA9IHRhYmxlcy5naW5kZXhbbV07XG4gICAgICBuMiA9IG4xICsgc3RhdGUxO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IHN0YXRlMSlcbiAgICAgICAgc3RhdGUgPSB0YWJsZXMudGFibGVbbjJdO1xuICAgICAgZWxzZVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTtcbiAgICAgIGlmIChzcCA+PSBlbnZbZW52X3N0YWNrc2l6ZV0pIHtcbiAgICAgICAgcmVzID0gR1JPV19TVEFDS1NfMjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovXG4gICAgY2FzZSAzOi8vU1RBQ0tTX0dST1dOXzI6XG4gICAgICByZXMgPSBDT01QVVRFX1NFTUFOVElDX0FDVElPTjtcbiAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovXG4gICAgY2FzZSA0Oi8vU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBhcmc7XG4gICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdO1xuICAgICAgZW52W2Vudl9zeW1iX2VuZF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgaWYgKHNwID4gYXNwKSB7XG4gICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3RhcnQgZXF1YWwgdG8gc3ltYl9lbmQuICovXG4gICAgICAgIGVudltlbnZfc3ltYl9zdGFydF9zdGFja11bc3AgKyAxXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2FzcCArIDFdO1xuICAgICAgfVxuICAgICAgY21kID0gbG9vcDsgYnJlYWs7XG4gICAgICAvKiBTaG91bGQgbm90IGhhcHBlbiAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7XG4gICAgfVxuICB9XG4gIC8vIFNBVkVcbiAgZW52W2Vudl9zcF0gPSBzcDtcbiAgZW52W2Vudl9zdGF0ZV0gPSBzdGF0ZTtcbiAgZW52W2Vudl9lcnJmbGFnXSA9IGVycmZsYWc7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc2V0X3BhcnNlcl90cmFjZVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZXJfdHJhY2VcbmZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNlcl90cmFjZShib29sKSB7XG4gIHZhciBvbGRmbGFnID0gY2FtbF9wYXJzZXJfdHJhY2U7XG4gIGNhbWxfcGFyc2VyX3RyYWNlID0gYm9vbDtcbiAgcmV0dXJuIG9sZGZsYWc7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VwZGF0ZV9kdW1teVxuZnVuY3Rpb24gY2FtbF91cGRhdGVfZHVtbXkgKHgsIHkpIHtcbiAgaWYoIHkuZnVuICkgeyB4LmZ1biA9IHkuZnVuOyByZXR1cm4gMDsgfVxuICBpZiggdHlwZW9mIHk9PT1cImZ1bmN0aW9uXCIgKSB7IHguZnVuID0geTsgcmV0dXJuIDA7IH1cbiAgdmFyIGkgPSB5Lmxlbmd0aDsgd2hpbGUgKGktLSkgeFtpXSA9IHlbaV07IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FsbG9jX2R1bW15X2luZml4XG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxfZ2VuXG5mdW5jdGlvbiBjYW1sX2FsbG9jX2R1bW15X2luZml4ICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGYgKHgpIHsgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZi5mdW4sIFt4XSkgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9pc19ibG9jayBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9pc19ibG9jayAoeCkgeyByZXR1cm4gKyh4IGluc3RhbmNlb2YgQXJyYXkpOyB9XG5cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdGFnICh4KSB7XG4gIGlmICgoeCBpbnN0YW5jZW9mIEFycmF5KSAmJiB4WzBdID09ICh4WzBdID4+PiAwKSlcbiAgICByZXR1cm4geFswXVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKHgpKVxuICAgIHJldHVybiAyNTJcbiAgZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmICgoeCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB8fCB0eXBlb2YgeCA9PSBcImZ1bmN0aW9uXCIpXG4gICAgcmV0dXJuIDI0N1xuICBlbHNlIGlmICh4ICYmIHguY2FtbF9jdXN0b20pXG4gICAgcmV0dXJuIDI1NVxuICBlbHNlXG4gICAgcmV0dXJuIDEwMDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3RhZyAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX29ial9zZXRfdGFnICh4LCB0YWcpIHsgeFswXSA9IHRhZzsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2Jsb2NrIGNvbnN0IChjb25zdCxjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2Jsb2NrICh0YWcsIHNpemUpIHtcbiAgdmFyIG8gPSBuZXcgQXJyYXkoc2l6ZSsxKTtcbiAgb1swXT10YWc7XG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IHNpemU7IGkrKykgb1tpXSA9IDA7XG4gIHJldHVybiBvO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial93aXRoX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfd2l0aF90YWcodGFnLHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSB0YWc7XG4gIGZvcih2YXIgaSA9IDE7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2R1cCBtdXRhYmxlIChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9vYmpfZHVwICh4KSB7XG4gIHZhciBsID0geC5sZW5ndGg7XG4gIHZhciBhID0gbmV3IEFycmF5KGwpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbDsgaSsrICkgYVtpXSA9IHhbaV07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90cnVuY2F0ZSAobXV0YWJsZSwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlICh4LCBzKSB7XG4gIGlmIChzPD0wIHx8IHMgKyAxID4geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIk9iai50cnVuY2F0ZVwiKTtcbiAgaWYgKHgubGVuZ3RoICE9IHMgKyAxKSB4Lmxlbmd0aCA9IHMgKyAxO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfbWFrZV9mb3J3YXJkXG5mdW5jdGlvbiBjYW1sX29ial9tYWtlX2ZvcndhcmQgKGIsdikge1xuICBiWzBdPTI1MDtcbiAgYlsxXT12O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXG5mdW5jdGlvbiBjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwKHgsaSxvbGQsbil7XG4gIGlmKHhbaSsxXSA9PSBvbGQpIHtcbiAgICB4W2krMV0gPSBuO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX3NoYXJlZFxuZnVuY3Rpb24gY2FtbF9vYmpfaXNfc2hhcmVkKHgpe1xuICByZXR1cm4gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkIGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9sYXp5X21ha2VfZm9yd2FyZCAodikgeyByZXR1cm4gWzI1MCwgdl07IH1cblxuLy8vLy8vLy8vLy8vLyBDYW1saW50ZXJuYWxPT1xuLy9Qcm92aWRlczogY2FtbF9nZXRfcHVibGljX21ldGhvZCBjb25zdFxudmFyIGNhbWxfbWV0aG9kX2NhY2hlID0gW107XG5mdW5jdGlvbiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIChvYmosIHRhZywgY2FjaGVpZCkge1xuICB2YXIgbWV0aHMgPSBvYmpbMV07XG4gIHZhciBvZnMgPSBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXTtcbiAgaWYgKG9mcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gTWFrZSBzdXJlIHRoZSBhcnJheSBpcyBub3Qgc3BhcnNlXG4gICAgZm9yICh2YXIgaSA9IGNhbWxfbWV0aG9kX2NhY2hlLmxlbmd0aDsgaSA8IGNhY2hlaWQ7IGkrKylcbiAgICAgIGNhbWxfbWV0aG9kX2NhY2hlW2ldID0gMDtcbiAgfSBlbHNlIGlmIChtZXRoc1tvZnNdID09PSB0YWcpIHtcbiAgICByZXR1cm4gbWV0aHNbb2ZzIC0gMV07XG4gIH1cbiAgdmFyIGxpID0gMywgaGkgPSBtZXRoc1sxXSAqIDIgKyAxLCBtaTtcbiAgd2hpbGUgKGxpIDwgaGkpIHtcbiAgICBtaSA9ICgobGkraGkpID4+IDEpIHwgMTtcbiAgICBpZiAodGFnIDwgbWV0aHNbbWkrMV0pIGhpID0gbWktMjtcbiAgICBlbHNlIGxpID0gbWk7XG4gIH1cbiAgY2FtbF9tZXRob2RfY2FjaGVbY2FjaGVpZF0gPSBsaSArIDE7XG4gIC8qIHJldHVybiAwIGlmIHRhZyBpcyBub3QgdGhlcmUgKi9cbiAgcmV0dXJuICh0YWcgPT0gbWV0aHNbbGkrMV0gPyBtZXRoc1tsaV0gOiAwKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vb19sYXN0X2lkXG52YXIgY2FtbF9vb19sYXN0X2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9zZXRfb29faWRcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9zZXRfb29faWQgKGIpIHtcbiAgYlsyXT1jYW1sX29vX2xhc3RfaWQrKztcbiAgcmV0dXJuIGI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnJlc2hfb29faWQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfb29fbGFzdF9pZFxuZnVuY3Rpb24gY2FtbF9mcmVzaF9vb19pZCgpIHtcbiAgcmV0dXJuIGNhbWxfb29fbGFzdF9pZCsrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3Jhd19maWVsZChvLGkpIHsgcmV0dXJuIG9baSsxXSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3NldF9yYXdfZmllbGRcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF9yYXdfZmllbGQobyxpLHYpIHsgcmV0dXJuIG9baSsxXSA9IHYgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9yZWFjaGFibGVfd29yZHNcbmZ1bmN0aW9uIGNhbWxfb2JqX3JlYWNoYWJsZV93b3JkcyhvKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2FkZF9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfb2JqX2FkZF9vZmZzZXQodixvZmZzZXQpIHtcbiAgY2FtbF9mYWlsd2l0aChcIk9iai5hZGRfb2Zmc2V0IGlzIG5vdCBzdXBwb3J0ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfb2JqX3VwZGF0ZV90YWcoYixvLG4pIHtcbiAgICBpZihiWzBdPT1vKSB7IGJbMF0gPSBuOyByZXR1cm4gMSB9XG4gICAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3JjaW5nXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmcobykge1xuICBpZiAoKG8gaW5zdGFuY2VvZiBBcnJheSkgJiYgb1swXSA9PSAob1swXSA+Pj4gMCkgJiZcbiAgICAgIGNhbWxfb2JqX3VwZGF0ZV90YWcobywgMjQ2LCAyNDQpKSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG4gIGZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yd2FyZChvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjUwKTtcbiAgcmV0dXJuIDA7IC8vIHVuaXRcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eVxuLy9SZXF1aXJlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3Jlc2V0X3RvX2xhenkobykge1xuICBjYW1sX29ial91cGRhdGVfdGFnKG8sMjQ0LDI0Nik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfcmVhZF9yZXN1bHRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3RhZ1xuZnVuY3Rpb24gY2FtbF9sYXp5X3JlYWRfcmVzdWx0KG8pIHtcbiAgcmV0dXJuIChjYW1sX29ial90YWcobykgPT0gMjUwKT9vWzFdOm87XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246IDwgNVxuZnVuY3Rpb24gY2FtbF9pc19jb250aW51YXRpb25fdGFnKHQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuLy9WZXJzaW9uOiA+PSA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gKHQgPT0gMjQ1KSA/IDEgOiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgbGlicmFyeVxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEpzbGliOiBjb2RlIHNwZWNpZmljIHRvIEpzX29mX29jYW1sXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfb25faWUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfanNfb25faWUgKCkge1xuICB2YXIgdWEgPVxuICAgICAgKGdsb2JhbFRoaXMubmF2aWdhdG9yJiZnbG9iYWxUaGlzLm5hdmlnYXRvci51c2VyQWdlbnQpXG4gICAgICA/Z2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50OlwiXCI7XG4gIHJldHVybiB1YS5pbmRleE9mKFwiTVNJRVwiKSAhPSAtMSAmJiB1YS5pbmRleE9mKFwiT3BlcmFcIikgIT0gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VzY2FwZSBjb25zdCAoY29uc3QpXG52YXIgY2FtbF9qc19yZWdleHBzID0geyBhbXA6LyYvZywgbHQ6LzwvZywgcXVvdDovXFxcIi9nLCBhbGw6L1smPFxcXCJdLyB9O1xuZnVuY3Rpb24gY2FtbF9qc19odG1sX2VzY2FwZSAocykge1xuICBpZiAoIWNhbWxfanNfcmVnZXhwcy5hbGwudGVzdChzKSkgcmV0dXJuIHM7XG4gIHJldHVybiBzLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLmFtcCwgXCImYW1wO1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5sdCwgXCImbHQ7XCIpXG4gICAgLnJlcGxhY2UoY2FtbF9qc19yZWdleHBzLnF1b3QsIFwiJnF1b3Q7XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2h0bWxfZW50aXRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lbnRpdGllcyhzKSB7XG4gIHZhciBlbnRpdHkgPSAvXiYjP1swLTlhLXpBLVpdKzskL1xuICBpZihzLm1hdGNoKGVudGl0eSkpXG4gIHtcbiAgICB2YXIgc3RyLCB0ZW1wID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xuICAgIHRlbXAuaW5uZXJIVE1MPSBzO1xuICAgIHN0cj0gdGVtcC50ZXh0Q29udGVudCB8fCB0ZW1wLmlubmVyVGV4dDtcbiAgICB0ZW1wPW51bGw7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBlbHNlIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiSW52YWxpZCBlbnRpdHkgXCIgKyBzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2dldF9jb25zb2xlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX2dldF9jb25zb2xlICgpIHtcbiAgdmFyIGMgPSBjb25zb2xlO1xuICB2YXIgbSA9IFtcImxvZ1wiLCBcImRlYnVnXCIsIFwiaW5mb1wiLCBcIndhcm5cIiwgXCJlcnJvclwiLCBcImFzc2VydFwiLCBcImRpclwiLCBcImRpcnhtbFwiLFxuICAgICAgICAgICBcInRyYWNlXCIsIFwiZ3JvdXBcIiwgXCJncm91cENvbGxhcHNlZFwiLCBcImdyb3VwRW5kXCIsIFwidGltZVwiLCBcInRpbWVFbmRcIl07XG4gIGZ1bmN0aW9uIGYgKCkge31cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSBpZiAoIWNbbVtpXV0pIGNbbVtpXV09ZjtcbiAgcmV0dXJuIGM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1dlYWtkZWZcbmZ1bmN0aW9uIGNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlKHVuaXQpe1xuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5YTUxIdHRwUmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgfSBjYXRjaCAoZSkgeyB9O1xuICB9XG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gIH1cbiAgY2FtbF9mYWlsd2l0aChcIkNhbm5vdCBjcmVhdGUgYSBYTUxIdHRwUmVxdWVzdFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19lcnJvcl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uKGV4bikge1xuICBpZihleG4uanNfZXJyb3IpIHsgcmV0dXJuIGV4bi5qc19lcnJvcjsgfVxuICByZXR1cm4gbnVsbDtcbn1cbiIsIi8vUHJvdmlkZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbnZhciBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0IFxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZGVyclxudmFyIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnJcblxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2JlZm9yZV90ZXN0XG4vL1JlcXVpcmVzOiBjYW1sX2dsb2JhbF9kYXRhLCBjYW1sX21sX2NoYW5uZWxzXG4vL1JlcXVpcmVzOiBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyLCBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3Rkb3V0XG5mdW5jdGlvbiBleHBlY3RfdGVzdF9jb2xsZWN0b3JfYmVmb3JlX3Rlc3QgKHZvdXRwdXQsIHZzdGRvdXQsIHZzdGRlcnIpe1xuICBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyID0gY2FtbF9tbF9jaGFubmVsc1t2c3RkZXJyXTtcbiAgZXhwZWN0X3Rlc3RfY29sbGVjdG9yX3NhdmVkX3N0ZG91dCA9IGNhbWxfbWxfY2hhbm5lbHNbdnN0ZG91dF07XG4gIHZhciBvdXRwdXQgPSBjYW1sX21sX2NoYW5uZWxzW3ZvdXRwdXRdO1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRvdXRdID0gb3V0cHV0O1xuICBjYW1sX21sX2NoYW5uZWxzW3ZzdGRlcnJdID0gb3V0cHV0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRlcnIsIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXRcbmZ1bmN0aW9uIGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9hZnRlcl90ZXN0ICh2c3Rkb3V0LCB2c3RkZXJyKXtcbiAgY2FtbF9tbF9jaGFubmVsc1t2c3Rkb3V0XSA9IGV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9zYXZlZF9zdGRvdXQ7XG4gIGNhbWxfbWxfY2hhbm5lbHNbdnN0ZGVycl0gPSBleHBlY3RfdGVzdF9jb2xsZWN0b3Jfc2F2ZWRfc3RkZXJyO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczpjYW1sX291dF9jaGFubmVsX3Bvc19mZFxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9vdXRfY2hhbm5lbF9wb3NfZmQoY2hhbil7XG4gIHZhciBpbmZvID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuXTtcbiAgcmV0dXJuIGluZm8ub2Zmc2V0XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEFycmF5XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc3ViIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc3ViIChhLCBpLCBsZW4pIHtcbiAgdmFyIGEyID0gbmV3IEFycmF5KGxlbisxKTtcbiAgYTJbMF09MDtcbiAgZm9yKHZhciBpMiA9IDEsIGkxPSBpKzE7IGkyIDw9IGxlbjsgaTIrKyxpMSsrICl7XG4gICAgYTJbaTJdPWFbaTFdO1xuICB9XG4gIHJldHVybiBhMjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9hcHBlbmQgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9hcnJheV9hcHBlbmQoYTEsIGEyKSB7XG4gIHZhciBsMSA9IGExLmxlbmd0aCwgbDIgPSBhMi5sZW5ndGg7XG4gIHZhciBsID0gbDErbDItMVxuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IDA7XG4gIHZhciBpID0gMSxqID0gMTtcbiAgZm9yKDtpPGwxO2krKykgYVtpXT1hMVtpXTtcbiAgZm9yKDtpPGw7aSsrLGorKykgYVtpXT1hMltqXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfY29uY2F0IG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfY29uY2F0KGwpIHtcbiAgdmFyIGEgPSBbMF07XG4gIHdoaWxlIChsICE9PSAwKSB7XG4gICAgdmFyIGIgPSBsWzFdO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYi5sZW5ndGg7IGkrKykgYS5wdXNoKGJbaV0pO1xuICAgIGwgPSBsWzJdO1xuICB9XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYmxpdChhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIGlmIChpMiA8PSBpMSkge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IGxlbjsgaisrKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBqID0gbGVuOyBqID49IDE7IGotLSkgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfYmxpdFxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy8vLy8vLy8vLy8vLyBQZXJ2YXNpdmVcbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfc2V0IChtdXRhYmxlLCBjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfc2V0IChhcnJheSwgaW5kZXgsIG5ld3ZhbCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGFycmF5W2luZGV4KzFdPW5ld3ZhbDsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZ2V0IG11dGFibGUgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9hcnJheV9nZXQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IGFycmF5Lmxlbmd0aCAtIDEpKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheVtpbmRleCsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9maWxsXG5mdW5jdGlvbiBjYW1sX2FycmF5X2ZpbGwoYXJyYXksIG9mcywgbGVuLCB2KXtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKXtcbiAgICBhcnJheVtvZnMraSsxXSA9IHY7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hlY2tfYm91bmQgKG11dGFibGUsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZCAoYXJyYXksIGluZGV4KSB7XG4gIGlmIChpbmRleCA+Pj4gMCA+PSBhcnJheS5sZW5ndGggLSAxKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcnJheTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX3ZlY3QgY29uc3QgKGNvbnN0LCBtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX3ZlY3QgKGxlbiwgaW5pdCkge1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IGluaXQ7XG4gIHJldHVybiBiO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21ha2VfZmxvYXRfdmVjdCBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX21ha2VfZmxvYXRfdmVjdChsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRhcnJheV9jcmVhdGUgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9mbG9hdGFycmF5X2NyZWF0ZShsZW4pe1xuICBpZiAobGVuIDwgMCkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB2YXIgbGVuID0gbGVuICsgMSB8IDA7XG4gIHZhciBiID0gbmV3IEFycmF5KGxlbik7XG4gIGJbMF09MjU0O1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxlbjsgaSsrKSBiW2ldID0gMDtcbiAgcmV0dXJuIGJcbn1cbiIsIi8vLy8vLy8vLyBCSU5fUFJPVFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kX2JpZ3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoYmlnc3RyaW5nLCBpKXtcbiAgaWYgKGkgPj4+IDAgPj0gYmlnc3RyaW5nLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG59XG5cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfY2hlY2tfYm91bmQsIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIGNhbWxfY2hlY2tfYm91bmQoZHN0LGRzdF9wb3MpOyAvLyBmaXJzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZChkc3QsZHN0X3BvcytsZW4tMSk7IC8vIGxhc3QgcG9zXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKHNyYywgc3JjX3Bvcyk7ICAvKiBmaXJzdCBwb3MgKi9cbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoc3JjLCBzcmNfcG9zICsgbGVuICogOCAtIDEpOyAvKiBsYXN0IHBvcyAqL1xuICB2YXIgdmlldyA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5GbG9hdDY0QXJyYXkobGVuKTtcbiAgdmFyIGJ1ZmZlciA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5VaW50OEFycmF5KHZpZXcuYnVmZmVyKTtcbiAgYnVmZmVyLnNldChzcmMuZGF0YS5zdWJhcnJheShzcmNfcG9zLCBzcmNfcG9zICsgKGxlbiAqIDgpKSk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgLy8gWysgMV0gYmVjYXVzZSB0aGUgdGFnIGlzIGF0IHBvcyAwIFxuICAgIGRzdFtkc3RfcG9zK2krMV0gPSB2aWV3W2ldO1xuICB9XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXG4vL1JlcXVpcmVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X2JhX3RvX2J5dGVzXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViKHNyY19wb3MsIHNyYywgZHN0X3BvcywgZHN0LCBsZW4pe1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhzcmMsIHNyY19wb3MsIGRzdCwgZHN0X3BvcywgbGVuKTtcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfZmxvYXRfYXJyYXlfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfY2hlY2tfYm91bmQsIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViKHNyY19wb3Msc3JjLCBkc3RfcG9zLCBkc3QsIGxlbil7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMCBcbiAgY2FtbF9jaGVja19ib3VuZCAoc3JjLCBzcmNfcG9zKTsgLy8gZmlyc3QgcG9zIFxuICBjYW1sX2NoZWNrX2JvdW5kIChzcmMsIHNyY19wb3MgKyBsZW4gLSAxKTsgLy8gbGFzdCBwb3NcbiAgY2FtbF9jaGVja19ib3VuZF9iaWdzdHJpbmcoZHN0LCBkc3RfcG9zKTsgLyogZmlyc3QgcG9zICovXG4gIGNhbWxfY2hlY2tfYm91bmRfYmlnc3RyaW5nKGRzdCwgZHN0X3BvcyArIGxlbiAqIDggLSAxKTsgLyogbGFzdCBwb3MgKi9cbiAgLy8gWysgMV0gYmVjYXVzZSB0aGUgdGFnIGlzIGF0IHBvcyAwXG4gIHNyY19wb3MgPSBzcmNfcG9zICsgMVxuICB2YXIgZmxvYXQ2NCA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5GbG9hdDY0QXJyYXkoc3JjLnNsaWNlKHNyY19wb3Msc3JjX3BvcyArIGxlbikpO1xuICB2YXIgZmxvYXQ2NF91aW50OCA9IG5ldyBqb29fZ2xvYmFsX29iamVjdC5VaW50OEFycmF5KGZsb2F0NjQuYnVmZmVyKTtcbiAgdmFyIHZpZXcgPSBkc3QuZGF0YS5zdWJhcnJheShkc3RfcG9zLCBkc3RfcG9zICsgKGxlbiAqIDgpKTtcbiAgdmlldy5zZXQoZmxvYXQ2NF91aW50OCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmFcbmZ1bmN0aW9uIGJpbl9wcm90X2JsaXRfc3RyaW5nX2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYyxzcmNfcG9zLCBkc3QsIGRzdF9wb3MsbGVuKTtcbn1cbi8vUHJvdmlkZXM6IGJpbl9wcm90X2JsaXRfYnl0ZXNfYnVmX3N0dWJcbi8vUmVxdWlyZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhXG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J5dGVzX2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgcmV0dXJuIGNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhKHNyYyxzcmNfcG9zLCBkc3QsIGRzdF9wb3MsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogYmluX3Byb3RfYmxpdF9idWZfc3R1YlxuLy9SZXF1aXJlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSwgYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBiaW5fcHJvdF9ibGl0X2J1Zl9zdHViIChzcmNfcG9zLCBzcmMsIGRzdF9wb3MsIGRzdCwgbGVuKXtcbiAgLy8gW2Jpbl9wcm90X2JsaXRfYnVmX3N0dWJdIGlzIHVzZWQgd2l0aCBtaXhlZCBiaWdhcnJheSBraW5kcy5cbiAgLy8gQ29udmVydGVyIGV2ZXJ5dGhpbmcgdG8gYmlnYXJyYXkgb2YgY2hhciBiZWZvcmUgdGhlIGJsaXQuXG4gIGlmKHNyYy5raW5kICE9IDEyKSAvLyAxMiBpcyB0aGUgY2hhciBraW5kXG4gICAgc3JjID0gYmlnc3RyaW5nX29mX3R5cGVkX2FycmF5KHNyYy5kYXRhKTtcbiAgaWYoZHN0LmtpbmQgIT0gMTIpIC8vIDEyIGlzIHRoZSBjaGFyIGtpbmRcbiAgICBkc3QgPSBiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkoZHN0LmRhdGEpO1xuICByZXR1cm4gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShzcmMsc3JjX3Bvcyxkc3QsZHN0X3BvcyxsZW4pO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2NoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9jaGFuKGNoYW5pZCx0b3JlYWQpe1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYodG9yZWFkIDwgMCl7XG4gICAgd2hpbGUodHJ1ZSl7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgaWYocmVhZCA9PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSh0b3JlYWQgPiAwKSB7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLCAodG9yZWFkID4gYnVmZmVyLmxlbmd0aCA/IGJ1ZmZlci5sZW5ndGggOiB0b3JlYWQpKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZFxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9tZDVfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X3N0cmluZyhzLCBvZnMsIGxlbikge1xuICByZXR1cm4gY2FtbF9tZDVfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcocyksb2ZzLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh3LCBidWZmZXIpIHtcbiAgICB2YXIgYSA9IHdbMF0sIGIgPSB3WzFdLCBjID0gd1syXSwgZCA9IHdbM107XG5cbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTcsIDB4MjQyMDcwREIpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDVdLCAxMiwgMHg0Nzg3QzYyQSk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA3LCAweDY5ODA5OEQ4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NUNEN0JFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4QTY3OTQzOEUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNl0sIDksIDB4QzA0MEIzNDApO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNSwgMHhENjJGMTA1RCk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNF0sIDIwLCAweEU3RDNGQkM4KTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNCwgMHhGNEQ1MEQ4Nyk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMl0sIDksIDB4RkNFRkEzRjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA0LCAweEZGRkEzOTQyKTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweEZERTUzODBDKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTYsIDB4RjZCQjRCNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDBdLCAxMSwgMHhFQUExMjdGQSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA0LCAweEQ5RDREMDM5KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMl0sIDIzLCAweEM0QUM1NjY1KTtcblxuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNSwgMHhBQjk0MjNBNyk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgM10sIDEwLCAweDhGMENDQzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDYsIDB4NkZBODdFNEYpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NEUwODExQTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNSwgMHgyQUQ3RDJCQik7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH19KSgpXG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1SW5pdFxuZnVuY3Rpb24gY2FtbF9NRDVJbml0KCkge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTtcbiAgdmFyIGIzMiA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICB2YXIgYjggPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICByZXR1cm4ge2xlbjowLFxuICAgICAgICAgIHc6bmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XSksXG4gICAgICAgICAgYjMyOmIzMixcbiAgICAgICAgICBiODpiOH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVVcGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENVVwZGF0ZShjdHgsIGlucHV0LCBpbnB1dF9sZW4pe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYoaW5fYnVmKXtcbiAgICB2YXIgbWlzc2luZyA9IDY0IC0gaW5fYnVmO1xuICAgIGlmKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxpbnB1dF9sZW4pLGluX2J1Zik7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLG1pc3NpbmcpLGluX2J1Zik7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSBtaXNzaW5nO1xuICAgIGlucHV0X3BvcyArPSBtaXNzaW5nO1xuICB9XG4gIHdoaWxlKGlucHV0X2xlbiA+PSA2NCl7XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgNjQpLCAwKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IDY0O1xuICAgIGlucHV0X3BvcyArPSA2NDtcbiAgfVxuICBpZihpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgaW5wdXRfbGVuKSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1RmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENUZpbmFsKGN0eCl7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgY3R4LmI4W2luX2J1Zl0gPSAweDgwO1xuICBpbl9idWYgKys7XG4gIGlmKGluX2J1ZiA+IDU2KSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfVxuICBjdHguYjMyWzE0XSA9IGN0eC5sZW4gPDwgMztcbiAgY3R4LmIzMlsxNV0gPSAoY3R4LmxlbiA+PiAyOSkgJiAweDFGRkZGRkZGO1xuICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gIHZhciB0ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgIHRbaSAqIDQgKyBqXSA9IChjdHgud1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gIHJldHVybiB0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfYnl0ZXMocywgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyk7XG4gIGNhbWxfTUQ1VXBkYXRlKGN0eCxhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnRfcG9wY291bnQgY29uc3RcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50KHYpIHtcbiAgdiA9IHYgLSAoKHYgPj4+IDEpICYgMHg1NTU1NTU1NSk7XG4gIHYgPSAodiAmIDB4MzMzMzMzMzMpICsgKCh2ID4+PiAyKSAmIDB4MzMzMzMzMzMpO1xuICByZXR1cm4gKCh2ICsgKHYgPj4+IDQpICYgMHhGMEYwRjBGKSAqIDB4MTAxMDEwMSkgPj4+IDI0O1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2NsZWFyX2NhbWxfYmFja3RyYWNlX3BvcyBjb25zdFxuZnVuY3Rpb24gQmFzZV9jbGVhcl9jYW1sX2JhY2t0cmFjZV9wb3MoeCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG4gY29uc3RcbmZ1bmN0aW9uIEJhc2VfY2FtbF9leG5faXNfbW9zdF9yZWNlbnRfZXhuKHgpIHtcbiAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6IGNvbnN0XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KSB7XG4gIHZhciBuID0gMzI7XG4gIHZhciB5O1xuICB5ID0geCA+PjE2OyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0xNjsgeCA9IHk7IH1cbiAgeSA9IHggPj4gODsgaWYgKHkgIT0gMCkgeyBuID0gbiAtIDg7IHggPSB5OyB9XG4gIHkgPSB4ID4+IDQ7IGlmICh5ICE9IDApIHsgbiA9IG4gLSA0OyB4ID0geTsgfVxuICB5ID0geCA+PiAyOyBpZiAoeSAhPSAwKSB7IG4gPSBuIC0gMjsgeCA9IHk7IH1cbiAgeSA9IHggPj4gMTsgaWYgKHkgIT0gMCkgcmV0dXJuIG4gLSAyO1xuICByZXR1cm4gbiAtIHg7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50X2NseiBjb25zdFxuLy9SZXF1aXJlczogQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcbmZ1bmN0aW9uIEJhc2VfaW50X21hdGhfaW50X2Nseih4KSB7IHJldHVybiBCYXNlX2ludF9tYXRoX2ludDMyX2Nseih4KTsgfVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY2x6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHogY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF90b19pbnQzMlxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHooeCkge1xuICB2YXIgbiA9IDY0O1xuICB2YXIgeTtcbiAgeSA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMzIpO1xuICBpZiAoIWNhbWxfaW50NjRfaXNfemVybyh5KSkgeyBuID0gbiAtMzI7IHggPSB5OyB9XG4gIHkgPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDE2KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLTE2OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA4KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSA4OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA0KTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSA0OyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAyKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHsgbiA9IG4gLSAyOyB4ID0geTsgfVxuICB5ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCAxKTtcbiAgaWYgKCFjYW1sX2ludDY0X2lzX3plcm8oeSkpIHJldHVybiBuIC0gMjtcbiAgcmV0dXJuIG4gLSBjYW1sX2ludDY0X3RvX2ludDMyKHgpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0eiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCkge1xuICBpZiAoeCA9PT0gMCkgeyByZXR1cm4gMzI7IH1cbiAgdmFyIG4gPSAxO1xuICBpZiAoICh4ICYgMHgwMDAwRkZGRikgPT09IDApIHsgbiA9IG4gKyAxNjsgeCA9IHggPj4gMTY7IH1cbiAgaWYgKCAoeCAmIDB4MDAwMDAwRkYpID09PSAwKSB7IG4gPSBuICsgIDg7IHggPSB4ID4+ICA4OyB9XG4gIGlmICggKHggJiAweDAwMDAwMDBGKSA9PT0gMCkgeyBuID0gbiArICA0OyB4ID0geCA+PiAgNDsgfVxuICBpZiAoICh4ICYgMHgwMDAwMDAwMykgPT09IDApIHsgbiA9IG4gKyAgMjsgeCA9IHggPj4gIDI7IH1cbiAgcmV0dXJuIG4gLSAoeCAmIDEpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9jdHogY29uc3Rcbi8vUmVxdWlyZXM6IEJhc2VfaW50X21hdGhfaW50MzJfY3R6XG5mdW5jdGlvbiBCYXNlX2ludF9tYXRoX2ludF9jdHooeCkgeyByZXR1cm4gQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHooeCk7IH1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBCYXNlX2ludF9tYXRoX2ludDMyX2N0elxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6KHgpIHsgcmV0dXJuIEJhc2VfaW50X21hdGhfaW50MzJfY3R6KHgpOyB9XG5cbi8vUHJvdmlkZXM6IEJhc2VfaW50X21hdGhfaW50NjRfY3R6IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkLCBjYW1sX2ludDY0X2lzX3plcm8sIGNhbWxfaW50NjRfdG9faW50MzJcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYW5kLCBjYW1sX2ludDY0X29mX2ludDMyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHooeCkge1xuICBpZiAoY2FtbF9pbnQ2NF9pc196ZXJvKHgpKSB7IHJldHVybiA2NDsgfVxuICB2YXIgbiA9IDE7XG4gIGZ1bmN0aW9uIGlzX3plcm8gKHgpICAgIHsgcmV0dXJuIGNhbWxfaW50NjRfaXNfemVybyh4KTsgfVxuICBmdW5jdGlvbiBsYW5kICh4LHkpICAgICB7IHJldHVybiBjYW1sX2ludDY0X2FuZCh4LCB5KTsgfVxuICBmdW5jdGlvbiBzbWFsbF9pbnQ2NCh4KSB7IHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSh4LDAsMCk7IH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgweEZGRkZGRiwgMHgwMDAwRkYsIDB4MDAwMCkpKSkge1xuICAgIG4gPSBuICsgMzI7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDMyKTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDBGRkZGKSkpKSB7XG4gICAgbiA9IG4gKyAxNjsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgMTYpO1xuICB9XG4gIGlmIChpc196ZXJvKGxhbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwRkYpKSkpIHtcbiAgICBuID0gbiArICA4OyB4ID0gY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCh4LCA4KTtcbiAgfVxuICBpZiAoaXNfemVybyhsYW5kKHgsIHNtYWxsX2ludDY0KDB4MDAwMDBGKSkpKSB7XG4gICAgbiA9IG4gKyAgNDsgeCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCwgNCk7XG4gIH1cbiAgaWYgKGlzX3plcm8obGFuZCh4LCBzbWFsbF9pbnQ2NCgweDAwMDAwMykpKSkge1xuICAgIG4gPSBuICsgIDI7IHggPSBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsIDIpO1xuICB9XG4gIHJldHVybiBuIC0gKGNhbWxfaW50NjRfdG9faW50MzIoY2FtbF9pbnQ2NF9hbmQoeCwgc21hbGxfaW50NjQoMHgwMDAwMDEpKSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBCYXNlX2ludF9tYXRoX2ludF9wb3dfc3R1YiBjb25zdFxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWIoYmFzZSwgZXhwb25lbnQpIHtcbiAgdmFyIG9uZSA9IDE7XG4gIHZhciBtdWwgPSBbb25lLCBiYXNlLCBvbmUsIG9uZV07XG4gIHZhciByZXMgPSBvbmU7XG4gIHdoaWxlICghZXhwb25lbnQ9PTApIHtcbiAgICBtdWxbMV0gPSAobXVsWzFdICogbXVsWzNdKSB8IDA7XG4gICAgbXVsWzJdID0gKG11bFsxXSAqIG11bFsxXSkgfCAwO1xuICAgIG11bFszXSA9IChtdWxbMl0gKiBtdWxbMV0pIHwgMDtcbiAgICByZXMgPSAocmVzICogbXVsW2V4cG9uZW50ICYgM10pIHwgMDtcbiAgICBleHBvbmVudCA9IGV4cG9uZW50ID4+IDI7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YiBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWwsIGNhbWxfaW50NjRfaXNfemVybywgY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGksIGNhbWxfaW50NjRfbG8zMlxuZnVuY3Rpb24gQmFzZV9pbnRfbWF0aF9pbnQ2NF9wb3dfc3R1YihiYXNlLCBleHBvbmVudCkge1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkoMSwwKTtcbiAgdmFyIG11bCA9IFtvbmUsIGJhc2UsIG9uZSwgb25lXTtcbiAgdmFyIHJlcyA9IG9uZTtcbiAgd2hpbGUgKCFjYW1sX2ludDY0X2lzX3plcm8oZXhwb25lbnQpKSB7XG4gICAgbXVsWzFdID0gY2FtbF9pbnQ2NF9tdWwobXVsWzFdLCBtdWxbM10pO1xuICAgIG11bFsyXSA9IGNhbWxfaW50NjRfbXVsKG11bFsxXSwgbXVsWzFdKTtcbiAgICBtdWxbM10gPSBjYW1sX2ludDY0X211bChtdWxbMl0sIG11bFsxXSk7XG4gICAgcmVzID0gY2FtbF9pbnQ2NF9tdWwocmVzLCBtdWxbY2FtbF9pbnQ2NF9sbzMyKGV4cG9uZW50KSAmIDNdKTtcbiAgICBleHBvbmVudCA9IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoZXhwb25lbnQsIDIpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IEJhc2VfaGFzaF9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9oYXNoXG5mdW5jdGlvbiBCYXNlX2hhc2hfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaCgxLDEsMCxzKVxufVxuLy9Qcm92aWRlczogQmFzZV9oYXNoX2RvdWJsZSBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoXG5mdW5jdGlvbiBCYXNlX2hhc2hfZG91YmxlKGQpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaCgxLDEsMCxkKTtcbn1cblxuLy9Qcm92aWRlczogQmFzZV9hbV90ZXN0aW5nIGNvbnN0XG4vL1dlYWtkZWZcbmZ1bmN0aW9uIEJhc2VfYW1fdGVzdGluZyh4KSB7XG4gIHJldHVybiAwO1xufVxuIiwiLy9Qcm92aWRlczogY2FtbF9kb21haW5fZGxzXG52YXIgY2FtbF9kb21haW5fZGxzID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19zZXQoYSkge1xuICBjYW1sX2RvbWFpbl9kbHMgPSBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9kbHNcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX2Rsc19nZXQodW5pdCkge1xuICByZXR1cm4gY2FtbF9kb21haW5fZGxzO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2xvYWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2xvYWQocmVmKXtcbiAgcmV0dXJuIHJlZlsxXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfY2FzXG5mdW5jdGlvbiBjYW1sX2F0b21pY19jYXMocmVmLG8sbikge1xuICBpZihyZWZbMV0gPT09IG8pe1xuICAgIHJlZlsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX2ZldGNoX2FkZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZmV0Y2hfYWRkKHJlZiwgaSkge1xuICB2YXIgb2xkID0gcmVmWzFdO1xuICByZWZbMV0gKz0gaTtcbiAgcmV0dXJuIG9sZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZXhjaGFuZ2VcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2V4Y2hhbmdlKHJlZiwgdikge1xuICB2YXIgciA9IHJlZlsxXTtcbiAgcmVmWzFdID0gdjtcbiAgcmV0dXJuIHI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19tYWtlX2NvbnRlbmRlZChhKSB7XG4gIHJldHVybiBbMCwgYV1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXG52YXIgY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyA9IFswXVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuKHVuaXQpIHtcbiAgcmV0dXJuIGNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbl9cbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZVxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fc2V0X25hbWUoX25hbWUpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50XG5mdW5jdGlvbiBjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCh1bml0KSB7IHJldHVybiAxIH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9pZFxudmFyIGNhbWxfZG9tYWluX2lkID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9kb21haW5fc3Bhd25cbi8vUmVxdWlyZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuLy9WZXJzaW9uOiA+PSA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZix0ZXJtX3N5bmMpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sodGVybV9zeW5jWzJdKTtcbiAgICAvL1RPRE86IGZpeCBleG4gY2FzZVxuICAgIHRlcm1fc3luY1sxXSA9IFswLCBbMCwgcmVzXV07XG4gICAgcmV0dXJuIGlkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246IDwgNS4yXG52YXIgY2FtbF9kb21haW5fbGF0ZXN0X2lkeCA9IDFcbmZ1bmN0aW9uIGNhbWxfZG9tYWluX3NwYXduKGYsbXV0ZXgpe1xuICAgIHZhciBpZCA9IGNhbWxfZG9tYWluX2xhdGVzdF9pZHgrKztcbiAgICB2YXIgb2xkID0gY2FtbF9kb21haW5faWQ7XG4gICAgY2FtbF9kb21haW5faWQgPSBpZDtcbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLFswXSk7XG4gICAgY2FtbF9kb21haW5faWQgPSBvbGQ7XG4gICAgY2FtbF9tbF9tdXRleF91bmxvY2sobXV0ZXgpO1xuICAgIHJldHVybiBpZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9pZFxuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2lkKHVuaXQpe1xuICAgIHJldHVybiBjYW1sX2RvbWFpbl9pZDtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXhcbmZ1bmN0aW9uIGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheCh1bml0KXtcbiAgICByZXR1cm4gMDtcbn1cbiIsIlxuLy9Qcm92aWRlczogTWxNdXRleFxuZnVuY3Rpb24gTWxNdXRleCgpIHtcbiAgdGhpcy5sb2NrZWQgPSBmYWxzZVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X25ld1xuLy9SZXF1aXJlczogTWxNdXRleFxuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF9uZXcodW5pdCkge1xuICByZXR1cm4gbmV3IE1sTXV0ZXgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9tdXRleF9sb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X2xvY2sodCkge1xuICBpZih0LmxvY2tlZClcbiAgICBjYW1sX2ZhaWx3aXRoKFwiTXV0ZXgubG9jazogbXV0ZXggYWxyZWFkeSBsb2NrZWQuIENhbm5vdCB3YWl0LlwiKTtcbiAgZWxzZSB0LmxvY2tlZCA9IHRydWU7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3RyeV9sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3RyeV9sb2NrKHQpIHtcbiAgaWYoIXQubG9ja2VkKSB7XG4gICAgdC5sb2NrZWQgPSB0cnVlO1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuZnVuY3Rpb24gY2FtbF9tbF9tdXRleF91bmxvY2sodCkge1xuICB0LmxvY2tlZCA9IGZhbHNlO1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLyBXZWFrIEFQSVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxudmFyIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ID0gM1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbnZhciBjYW1sX2VwaGVfZGF0YV9vZmZzZXQgPSAyXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2tleSh4LCBpLCB2KSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmICh2IGluc3RhbmNlb2YgT2JqZWN0ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0ucmVnaXN0ZXIpIHhbMV0ucmVnaXN0ZXIodiwgdW5kZWZpbmVkLCB2KTtcbiAgICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSBuZXcgZ2xvYmFsVGhpcy5XZWFrUmVmKHYpO1xuICB9XG4gIGVsc2UgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdjtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2VwaGVfa2V5X29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX3Vuc2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5zZXRcIik7XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYgJiYgeFsxXS51bnJlZ2lzdGVyKSB7XG4gICAgdmFyIG9sZCA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXS5kZXJlZigpO1xuICAgIGlmKG9sZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgY291bnQgPSAwXG4gICAgICBmb3IodmFyIGogPSBjYW1sX2VwaGVfa2V5X29mZnNldDsgaiA8IHgubGVuZ3RoOyBqKyspe1xuICAgICAgICB2YXIga2V5ID0geFtqXTtcbiAgICAgICAgaWYoa2V5IGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKXtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKVxuICAgICAgICAgIGlmKGtleSA9PT0gb2xkKSBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZihjb3VudCA9PSAxKSB4WzFdLnVucmVnaXN0ZXIob2xkKTtcbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfd2Vha19jcmVhdGUsIGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NyZWF0ZSAobikge1xuICB2YXIgeCA9IGNhbWxfd2Vha19jcmVhdGUobik7XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF93ZWFrX2NyZWF0ZSAobikge1xuICBpZiAobiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgdmFyIHggPSBbMjUxLFwiY2FtbF9lcGhlX2xpc3RfaGVhZFwiXTtcbiAgeC5sZW5ndGggPSBjYW1sX2VwaGVfa2V5X29mZnNldCArIG47XG4gIHJldHVybiB4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dlYWtfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9zZXRfa2V5LCBjYW1sX2VwaGVfdW5zZXRfa2V5XG5mdW5jdGlvbiBjYW1sX3dlYWtfc2V0KHgsIGksIHYpIHtcbiAgaWYodiA9PSAwKSBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsaSlcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2tleSh4LGksdlsxXSlcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2tleVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2tleVwiKTtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSBdO1xuICBpZihnbG9iYWxUaGlzLldlYWtSZWYgJiYgd2VhayBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikgd2VhayA9IHdlYWsuZGVyZWYoKTtcbiAgcmV0dXJuICh3ZWFrPT09dW5kZWZpbmVkKT8wOlswLCB3ZWFrXTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5X2NvcHlcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9nZXRfa2V5LGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXAsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9BbGlhczogY2FtbF93ZWFrX2dldF9jb3B5XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleV9jb3B5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLmdldF9jb3B5XCIpO1xuICB2YXIgeSA9IGNhbWxfZXBoZV9nZXRfa2V5KHgsIGkpO1xuICBpZiAoeSA9PT0gMCkgcmV0dXJuIHk7XG4gIHZhciB6ID0geVsxXTtcbiAgaWYgKHogaW5zdGFuY2VvZiBBcnJheSkgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeildO1xuICByZXR1cm4geTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2tleSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2NoZWNrXG5mdW5jdGlvbiBjYW1sX2VwaGVfY2hlY2tfa2V5KHgsIGkpIHtcbiAgdmFyIHdlYWsgPSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICBpZih3ZWFrPT09dW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2tleVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ibGl0XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldFxuLy9BbGlhczogY2FtbF93ZWFrX2JsaXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9ibGl0X2tleShhMSwgaTEsIGEyLCBpMiwgbGVuKSB7XG4gIC8vIG1pbnVzIG9uZSBiZWNhdXNlIGNhbWxfYXJyYXlfYmxpdCB3b3JrcyBvbiBvY2FtbCBhcnJheVxuICBjYW1sX2FycmF5X2JsaXQoYTEsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTEgLSAxLFxuICAgICAgICAgICAgICAgICAgYTIsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaTIgLSAxLFxuICAgICAgICAgICAgICAgICAgbGVuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9ibGl0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX3NldF9kYXRhLCBjYW1sX2VwaGVfdW5zZXRfZGF0YVxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfZGF0YShzcmMsIGRzdCl7XG4gIHZhciBuID0gc3JjW2NhbWxfZXBoZV9kYXRhX29mZnNldF07XG4gIGlmKG4gPT09IHVuZGVmaW5lZCkgY2FtbF9lcGhlX3Vuc2V0X2RhdGEoZHN0KTtcbiAgZWxzZSBjYW1sX2VwaGVfc2V0X2RhdGEoZHN0LCBuKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF1dO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfZ2V0X2RhdGFfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG4vL1JlcXVpcmVzOiBjYW1sX29ial9kdXBcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5KHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiBbMCwgY2FtbF9vYmpfZHVwKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSldO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXQsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfc2V0X2RhdGEoeCwgZGF0YSl7XG4gIGlmKGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoISAoeFsxXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkpKSB7XG4gICAgICB4WzFdID0gbmV3IGdsb2JhbFRoaXMuRmluYWxpemF0aW9uUmVnaXN0cnkoZnVuY3Rpb24gKCkgeyBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KSB9KTtcbiAgICAgIC8vcmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0ucmVnaXN0ZXIoa2V5LCB1bmRlZmluZWQsIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gZGF0YTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV91bnNldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfZGF0YSh4KXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZih4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSl7XG4gICAgICAvL3VucmVnaXN0ZXIgYWxsIGtleXNcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuZGVyZWYoKTtcbiAgICAgICAgICBpZihrZXkpIHhbMV0udW5yZWdpc3RlcihrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9IHVuZGVmaW5lZDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9jaGVja19kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19kYXRhKHgpe1xuICBpZih4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gMDtcbiAgZWxzZVxuICAgIHJldHVybiAxO1xufVxuIiwiLy9Qcm92aWRlczoganNfcGVyZm9ybWFuY2VcbnZhciBqc19wZXJmb3JtYW5jZSA9IHttYXJrOiAoZnVuY3Rpb24gKCkge30pLCBtZWFzdXJlOiAoZnVuY3Rpb24gKCkge30pIH07XG5pZiAodHlwZW9mIGpvb19nbG9iYWxfb2JqZWN0LnBlcmZvcm1hbmNlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGpzX3BlcmZvcm1hbmNlID0gam9vX2dsb2JhbF9vYmplY3QucGVyZm9ybWFuY2U7XG59IGVsc2Uge1xuICB0cnkge1xuICAgIGpzX3BlcmZvcm1hbmNlID0gcmVxdWlyZSgncGVyZl9ob29rcycpLnBlcmZvcm1hbmNlO1xuICB9IGNhdGNoIChfZSkge1xuICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihcImNvdWxkbid0IGxvYWQgcGVyZm9ybWFuY2UgaG9va3NcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9tYXJrXG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLGpzX3BlcmZvcm1hbmNlXG5mdW5jdGlvbiBqc19wcm9mX21hcmsobmFtZSkge1xuICAgIHRyeSB7XG4gICAgICAgIGpzX3BlcmZvcm1hbmNlLm1hcmsoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc19wcm9mX21lYXN1cmVcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfbWVhc3VyZShuYW1lLCBzdGFydCwgZW5kKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UubWVhc3VyZShcbiAgICAgICAgICAgIGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSksIFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzdGFydCksIFxuICAgICAgICAgICAgY2FtbF9qc2J5dGVzX29mX3N0cmluZyhlbmQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGpvb19nbG9iYWxfb2JqZWN0LmNvbnNvbGUud2FybihlKTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGpzX3Byb2ZfY2xlYXJfbWFya3Ncbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcsanNfcGVyZm9ybWFuY2VcbmZ1bmN0aW9uIGpzX3Byb2ZfY2xlYXJfbWFya3MoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAganNfcGVyZm9ybWFuY2UuY2xlYXJNYXJrcygpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgam9vX2dsb2JhbF9vYmplY3QuY29uc29sZS53YXJuKGUpO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczoganNfcHJvZl9jbGVhcl9tZWFzdXJlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZyxqc19wZXJmb3JtYW5jZVxuZnVuY3Rpb24ganNfcHJvZl9jbGVhcl9tZWFzdXJlcygpIHtcbiAgICB0cnkge1xuICAgICAgICBqc19wZXJmb3JtYW5jZS5jbGVhck1lYXN1cmVzKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBqb29fZ2xvYmFsX29iamVjdC5jb25zb2xlLndhcm4oZSk7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBjYW1sX2x4bV9uZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3NoaWZ0X2xlZnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfeG9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2FkZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9tdWxcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfc2V0XzFcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX25ld19zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbHhtX25leHQodikge1xuICBmdW5jdGlvbiBzaGlmdF9sKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X2xlZnQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBzaGlmdF9yKHgsIGspe1xuICAgIHJldHVybiBjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0X3Vuc2lnbmVkKHgsayk7XG4gIH1cbiAgZnVuY3Rpb24gb3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfb3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiB4b3IoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfeG9yKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gYWRkKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X2FkZChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIG11bChhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9tdWwoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiByb3RsKHgsIGspIHtcbiAgICByZXR1cm4gb3Ioc2hpZnRfbCh4LGspLHNoaWZ0X3IgKHgsIDY0IC0gaykpO1xuICB9XG4gIGZ1bmN0aW9uIGdldChhLCBpKSB7XG4gICAgcmV0dXJuIGNhbWxfYmFfZ2V0XzEoYSwgaSk7XG4gIH1cbiAgZnVuY3Rpb24gc2V0KGEsIGksIHgpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9zZXRfMShhLCBpLCB4KTtcbiAgfVxuICB2YXIgTSA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nKGNhbWxfbmV3X3N0cmluZyhcIjB4ZDEzNDI1NDNkZTgyZWY5NVwiKSk7XG4gIHZhciBkYWJhID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkYWJhMGI2ZWIwOTMyMmUzXCIpKTtcbiAgdmFyIHosIHEwLCBxMTtcbiAgdmFyIHN0ID0gdjtcbiAgdmFyIGEgPSBnZXQoc3QsMCk7XG4gIHZhciBzID0gZ2V0KHN0LDEpO1xuICB2YXIgeDAgPSBnZXQoc3QsMik7XG4gIHZhciB4MSA9IGdldChzdCwzKTtcbiAgLyogQ29tYmluaW5nIG9wZXJhdGlvbiAqL1xuICB6ID0gYWRkKHMsIHgwKTtcbiAgLyogTWl4aW5nIGZ1bmN0aW9uICovXG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0gbXVsKHhvcih6LHNoaWZ0X3IoeiwzMikpLCBkYWJhKTtcbiAgeiA9IHhvcih6LHNoaWZ0X3IoeiwzMikpO1xuICAvKiBMQ0cgdXBkYXRlICovXG4gIHNldChzdCwgMSwgYWRkIChtdWwocyxNKSwgYSkpO1xuICAvKiBYQkcgdXBkYXRlICovXG4gIHZhciBxMCA9IHgwXG4gIHZhciBxMSA9IHgxXG4gIHExID0geG9yKHExLHEwKTtcbiAgcTAgPSByb3RsKHEwLCAyNCk7XG4gIHEwID0geG9yKHhvcihxMCwgcTEpLCAoc2hpZnRfbChxMSwxNikpKTtcbiAgcTEgPSByb3RsKHExLCAzNyk7XG4gIHNldChzdCwgMiwgcTApO1xuICBzZXQoc3QsIDMsIHExKTtcbiAgLyogUmV0dXJuIHJlc3VsdCAqL1xuICByZXR1cm4gejtcbn1cbiIsIlxuLy9Qcm92aWRlczogenN0ZF9kZWNvbXByZXNzXG4vL1ZlcnNpb246ID49IDUuMVxudmFyIHpzdGRfZGVjb21wcmVzcyA9IChmdW5jdGlvbiAoKSB7XG5cInVzZSBzdHJpY3RcIjtcbi8vIGFsaWFzZXMgZm9yIHNob3J0ZXIgY29tcHJlc3NlZCBjb2RlIChtb3N0IG1pbmlmZXJzIGRvbid0IGRvIHRoaXMpXG52YXIgYWIgPSBBcnJheUJ1ZmZlciwgdTggPSBVaW50OEFycmF5LCB1MTYgPSBVaW50MTZBcnJheSwgaTE2ID0gSW50MTZBcnJheSwgdTMyID0gVWludDMyQXJyYXksIGkzMiA9IEludDMyQXJyYXk7XG52YXIgc2xjID0gZnVuY3Rpb24gKHYsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLnNsaWNlKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLnNsaWNlLmNhbGwodiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICB2YXIgbiA9IG5ldyB1OChlIC0gcyk7XG4gICAgbi5zZXQodi5zdWJhcnJheShzLCBlKSk7XG4gICAgcmV0dXJuIG47XG59O1xudmFyIGZpbGwgPSBmdW5jdGlvbiAodiwgbiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuZmlsbClcbiAgICAgICAgcmV0dXJuIHU4LnByb3RvdHlwZS5maWxsLmNhbGwodiwgbiwgcywgZSk7XG4gICAgaWYgKHMgPT0gbnVsbCB8fCBzIDwgMClcbiAgICAgICAgcyA9IDA7XG4gICAgaWYgKGUgPT0gbnVsbCB8fCBlID4gdi5sZW5ndGgpXG4gICAgICAgIGUgPSB2Lmxlbmd0aDtcbiAgICBmb3IgKDsgcyA8IGU7ICsrcylcbiAgICAgICAgdltzXSA9IG47XG4gICAgcmV0dXJuIHY7XG59O1xudmFyIGNwdyA9IGZ1bmN0aW9uICh2LCB0LCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5jb3B5V2l0aGluKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmNvcHlXaXRoaW4uY2FsbCh2LCB0LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHdoaWxlIChzIDwgZSkge1xuICAgICAgICB2W3QrK10gPSB2W3MrK107XG4gICAgfVxufTtcbi8qKlxuICogQ29kZXMgZm9yIGVycm9ycyBnZW5lcmF0ZWQgd2l0aGluIHRoaXMgbGlicmFyeVxuICovXG4vLyBlcnJvciBjb2Rlc1xudmFyIGVjID0gW1xuICAgICdpbnZhbGlkIHpzdGQgZGF0YScsXG4gICAgJ3dpbmRvdyBzaXplIHRvbyBsYXJnZSAoPjIwNDZNQiknLFxuICAgICdpbnZhbGlkIGJsb2NrIHR5cGUnLFxuICAgICdGU0UgYWNjdXJhY3kgdG9vIGhpZ2gnLFxuICAgICdtYXRjaCBkaXN0YW5jZSB0b28gZmFyIGJhY2snLFxuICAgICd1bmV4cGVjdGVkIEVPRidcbl07XG47XG52YXIgZXJyID0gZnVuY3Rpb24gKGluZCwgbXNnLCBudCkge1xuICAgIHZhciBlID0gbmV3IEVycm9yKG1zZyB8fCBlY1tpbmRdKTtcbiAgICBlLmNvZGUgPSBpbmQ7XG4gICAgaWYgKCFudClcbiAgICAgICAgdGhyb3cgZTtcbiAgICByZXR1cm4gZTtcbn07XG52YXIgcmIgPSBmdW5jdGlvbiAoZCwgYiwgbikge1xuICAgIHZhciBpID0gMCwgbyA9IDA7XG4gICAgZm9yICg7IGkgPCBuOyArK2kpXG4gICAgICAgIG8gfD0gZFtiKytdIDw8IChpIDw8IDMpO1xuICAgIHJldHVybiBvO1xufTtcbnZhciBiNCA9IGZ1bmN0aW9uIChkLCBiKSB7IHJldHVybiAoZFtiXSB8IChkW2IgKyAxXSA8PCA4KSB8IChkW2IgKyAyXSA8PCAxNikgfCAoZFtiICsgM10gPDwgMjQpKSA+Pj4gMDsgfTtcbi8vIHJlYWQgWnN0YW5kYXJkIGZyYW1lIGhlYWRlclxudmFyIHJ6ZmggPSBmdW5jdGlvbiAoZGF0LCB3KSB7XG4gICAgdmFyIG4zID0gZGF0WzBdIHwgKGRhdFsxXSA8PCA4KSB8IChkYXRbMl0gPDwgMTYpO1xuICAgIGlmIChuMyA9PSAweDJGQjUyOCAmJiBkYXRbM10gPT0gMjUzKSB7XG4gICAgICAgIC8vIFpzdGFuZGFyZFxuICAgICAgICB2YXIgZmxnID0gZGF0WzRdO1xuICAgICAgICAvLyAgICBzaW5nbGUgc2VnbWVudCAgICAgICBjaGVja3N1bSAgICAgICAgICAgICBkaWN0IGZsYWcgICAgIGZyYW1lIGNvbnRlbnQgZmxhZ1xuICAgICAgICB2YXIgc3MgPSAoZmxnID4+IDUpICYgMSwgY2MgPSAoZmxnID4+IDIpICYgMSwgZGYgPSBmbGcgJiAzLCBmY2YgPSBmbGcgPj4gNjtcbiAgICAgICAgaWYgKGZsZyAmIDgpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vIGJ5dGVcbiAgICAgICAgdmFyIGJ0ID0gNiAtIHNzO1xuICAgICAgICAvLyBkaWN0IGJ5dGVzXG4gICAgICAgIHZhciBkYiA9IGRmID09IDMgPyA0IDogZGY7XG4gICAgICAgIC8vIGRpY3Rpb25hcnkgaWRcbiAgICAgICAgdmFyIGRpID0gcmIoZGF0LCBidCwgZGIpO1xuICAgICAgICBidCArPSBkYjtcbiAgICAgICAgLy8gZnJhbWUgc2l6ZSBieXRlc1xuICAgICAgICB2YXIgZnNiID0gZmNmID8gKDEgPDwgZmNmKSA6IHNzO1xuICAgICAgICAvLyBmcmFtZSBzb3VyY2Ugc2l6ZVxuICAgICAgICB2YXIgZnNzID0gcmIoZGF0LCBidCwgZnNiKSArICgoZmNmID09IDEpICYmIDI1Nik7XG4gICAgICAgIC8vIHdpbmRvdyBzaXplXG4gICAgICAgIHZhciB3cyA9IGZzcztcbiAgICAgICAgaWYgKCFzcykge1xuICAgICAgICAgICAgLy8gd2luZG93IGRlc2NyaXB0b3JcbiAgICAgICAgICAgIHZhciB3YiA9IDEgPDwgKDEwICsgKGRhdFs1XSA+PiAzKSk7XG4gICAgICAgICAgICB3cyA9IHdiICsgKHdiID4+IDMpICogKGRhdFs1XSAmIDcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh3cyA+IDIxNDUzODY0OTYpXG4gICAgICAgICAgICBlcnIoMSk7XG4gICAgICAgIHZhciBidWYgPSBuZXcgdTgoKHcgPT0gMSA/IChmc3MgfHwgd3MpIDogdyA/IDAgOiB3cykgKyAxMik7XG4gICAgICAgIGJ1ZlswXSA9IDEsIGJ1Zls0XSA9IDQsIGJ1Zls4XSA9IDg7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBiOiBidCArIGZzYixcbiAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICBsOiAwLFxuICAgICAgICAgICAgZDogZGksXG4gICAgICAgICAgICB3OiAodyAmJiB3ICE9IDEpID8gdyA6IGJ1Zi5zdWJhcnJheSgxMiksXG4gICAgICAgICAgICBlOiB3cyxcbiAgICAgICAgICAgIG86IG5ldyBpMzIoYnVmLmJ1ZmZlciwgMCwgMyksXG4gICAgICAgICAgICB1OiBmc3MsXG4gICAgICAgICAgICBjOiBjYyxcbiAgICAgICAgICAgIG06IE1hdGgubWluKDEzMTA3Miwgd3MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKCgobjMgPj4gNCkgfCAoZGF0WzNdIDw8IDIwKSkgPT0gMHgxODREMkE1KSB7XG4gICAgICAgIC8vIHNraXBwYWJsZVxuICAgICAgICByZXR1cm4gYjQoZGF0LCA0KSArIDg7XG4gICAgfVxuICAgIGVycigwKTtcbn07XG4vLyBtb3N0IHNpZ25pZmljYW50IGJpdCBmb3Igbm9uemVyb1xudmFyIG1zYiA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICB2YXIgYml0cyA9IDA7XG4gICAgZm9yICg7ICgxIDw8IGJpdHMpIDw9IHZhbDsgKytiaXRzKVxuICAgICAgICA7XG4gICAgcmV0dXJuIGJpdHMgLSAxO1xufTtcbi8vIHJlYWQgZmluaXRlIHN0YXRlIGVudHJvcHlcbnZhciByZnNlID0gZnVuY3Rpb24gKGRhdCwgYnQsIG1hbCkge1xuICAgIC8vIHRhYmxlIHBvc1xuICAgIHZhciB0cG9zID0gKGJ0IDw8IDMpICsgNDtcbiAgICAvLyBhY2N1cmFjeSBsb2dcbiAgICB2YXIgYWwgPSAoZGF0W2J0XSAmIDE1KSArIDU7XG4gICAgaWYgKGFsID4gbWFsKVxuICAgICAgICBlcnIoMyk7XG4gICAgLy8gc2l6ZVxuICAgIHZhciBzeiA9IDEgPDwgYWw7XG4gICAgLy8gcHJvYmFiaWxpdGllcyBzeW1ib2xzICByZXBlYXQgICBpbmRleCAgIGhpZ2ggdGhyZXNob2xkXG4gICAgdmFyIHByb2JzID0gc3osIHN5bSA9IC0xLCByZSA9IC0xLCBpID0gLTEsIGh0ID0gc3o7XG4gICAgLy8gb3B0aW1pemF0aW9uOiBzaW5nbGUgYWxsb2NhdGlvbiBpcyBtdWNoIGZhc3RlclxuICAgIHZhciBidWYgPSBuZXcgYWIoNTEyICsgKHN6IDw8IDIpKTtcbiAgICB2YXIgZnJlcSA9IG5ldyBpMTYoYnVmLCAwLCAyNTYpO1xuICAgIC8vIHNhbWUgdmlldyBhcyBmcmVxXG4gICAgdmFyIGRzdGF0ZSA9IG5ldyB1MTYoYnVmLCAwLCAyNTYpO1xuICAgIHZhciBuc3RhdGUgPSBuZXcgdTE2KGJ1ZiwgNTEyLCBzeik7XG4gICAgdmFyIGJiMSA9IDUxMiArIChzeiA8PCAxKTtcbiAgICB2YXIgc3ltcyA9IG5ldyB1OChidWYsIGJiMSwgc3opO1xuICAgIHZhciBuYml0cyA9IG5ldyB1OChidWYsIGJiMSArIHN6KTtcbiAgICB3aGlsZSAoc3ltIDwgMjU1ICYmIHByb2JzID4gMCkge1xuICAgICAgICB2YXIgYml0cyA9IG1zYihwcm9icyArIDEpO1xuICAgICAgICB2YXIgY2J0ID0gdHBvcyA+PiAzO1xuICAgICAgICAvLyBtYXNrXG4gICAgICAgIHZhciBtc2sgPSAoMSA8PCAoYml0cyArIDEpKSAtIDE7XG4gICAgICAgIHZhciB2YWwgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAodHBvcyAmIDcpKSAmIG1zaztcbiAgICAgICAgLy8gbWFzayAoMSBmZXdlciBiaXQpXG4gICAgICAgIHZhciBtc2sxZmIgPSAoMSA8PCBiaXRzKSAtIDE7XG4gICAgICAgIC8vIG1heCBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgbXN2ID0gbXNrIC0gcHJvYnMgLSAxO1xuICAgICAgICAvLyBzbWFsbCB2YWx1ZVxuICAgICAgICB2YXIgc3ZhbCA9IHZhbCAmIG1zazFmYjtcbiAgICAgICAgaWYgKHN2YWwgPCBtc3YpXG4gICAgICAgICAgICB0cG9zICs9IGJpdHMsIHZhbCA9IHN2YWw7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdHBvcyArPSBiaXRzICsgMTtcbiAgICAgICAgICAgIGlmICh2YWwgPiBtc2sxZmIpXG4gICAgICAgICAgICAgICAgdmFsIC09IG1zdjtcbiAgICAgICAgfVxuICAgICAgICBmcmVxWysrc3ltXSA9IC0tdmFsO1xuICAgICAgICBpZiAodmFsID09IC0xKSB7XG4gICAgICAgICAgICBwcm9icyArPSB2YWw7XG4gICAgICAgICAgICBzeW1zWy0taHRdID0gc3ltO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHByb2JzIC09IHZhbDtcbiAgICAgICAgaWYgKCF2YWwpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAvLyByZXBlYXQgYnl0ZVxuICAgICAgICAgICAgICAgIHZhciByYnQgPSB0cG9zID4+IDM7XG4gICAgICAgICAgICAgICAgcmUgPSAoKGRhdFtyYnRdIHwgKGRhdFtyYnQgKyAxXSA8PCA4KSkgPj4gKHRwb3MgJiA3KSkgJiAzO1xuICAgICAgICAgICAgICAgIHRwb3MgKz0gMjtcbiAgICAgICAgICAgICAgICBzeW0gKz0gcmU7XG4gICAgICAgICAgICB9IHdoaWxlIChyZSA9PSAzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3ltID4gMjU1IHx8IHByb2JzKVxuICAgICAgICBlcnIoMCk7XG4gICAgdmFyIHN5bXBvcyA9IDA7XG4gICAgLy8gc3ltIHN0ZXAgKGNvcHJpbWUgd2l0aCBzeiAtIGZvcm11bGEgZnJvbSB6c3RkIHNvdXJjZSlcbiAgICB2YXIgc3N0ZXAgPSAoc3ogPj4gMSkgKyAoc3ogPj4gMykgKyAzO1xuICAgIC8vIHN5bSBtYXNrXG4gICAgdmFyIHNtYXNrID0gc3ogLSAxO1xuICAgIGZvciAodmFyIHMgPSAwOyBzIDw9IHN5bTsgKytzKSB7XG4gICAgICAgIHZhciBzZiA9IGZyZXFbc107XG4gICAgICAgIGlmIChzZiA8IDEpIHtcbiAgICAgICAgICAgIGRzdGF0ZVtzXSA9IC1zZjtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoaXMgaXMgc3BsaXQgaW50byB0d28gbG9vcHMgaW4genN0ZCB0byBhdm9pZCBicmFuY2hpbmcsIGJ1dCBhcyBKUyBpcyBoaWdoZXItbGV2ZWwgdGhhdCBpcyB1bm5lY2Vzc2FyeVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Y7ICsraSkge1xuICAgICAgICAgICAgc3ltc1tzeW1wb3NdID0gcztcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBzeW1wb3MgPSAoc3ltcG9zICsgc3N0ZXApICYgc21hc2s7XG4gICAgICAgICAgICB9IHdoaWxlIChzeW1wb3MgPj0gaHQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIHNwcmVhZGluZyBzeW1ib2xzLCBzaG91bGQgYmUgemVybyBhZ2FpblxuICAgIGlmIChzeW1wb3MpXG4gICAgICAgIGVycigwKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc3o7ICsraSkge1xuICAgICAgICAvLyBuZXh0IHN0YXRlXG4gICAgICAgIHZhciBucyA9IGRzdGF0ZVtzeW1zW2ldXSsrO1xuICAgICAgICAvLyBudW0gYml0c1xuICAgICAgICB2YXIgbmIgPSBuYml0c1tpXSA9IGFsIC0gbXNiKG5zKTtcbiAgICAgICAgbnN0YXRlW2ldID0gKG5zIDw8IG5iKSAtIHN6O1xuICAgIH1cbiAgICByZXR1cm4gWyh0cG9zICsgNykgPj4gMywge1xuICAgICAgICAgICAgYjogYWwsXG4gICAgICAgICAgICBzOiBzeW1zLFxuICAgICAgICAgICAgbjogbmJpdHMsXG4gICAgICAgICAgICB0OiBuc3RhdGVcbiAgICAgICAgfV07XG59O1xuLy8gcmVhZCBodWZmbWFuXG52YXIgcmh1ID0gZnVuY3Rpb24gKGRhdCwgYnQpIHtcbiAgICAvLyAgaW5kZXggIHdlaWdodCBjb3VudFxuICAgIHZhciBpID0gMCwgd2MgPSAtMTtcbiAgICAvLyAgICBidWZmZXIgICAgICAgICAgICAgaGVhZGVyIGJ5dGVcbiAgICB2YXIgYnVmID0gbmV3IHU4KDI5MiksIGhiID0gZGF0W2J0XTtcbiAgICAvLyBodWZmbWFuIHdlaWdodHNcbiAgICB2YXIgaHcgPSBidWYuc3ViYXJyYXkoMCwgMjU2KTtcbiAgICAvLyByYW5rIGNvdW50XG4gICAgdmFyIHJjID0gYnVmLnN1YmFycmF5KDI1NiwgMjY4KTtcbiAgICAvLyByYW5rIGluZGV4XG4gICAgdmFyIHJpID0gbmV3IHUxNihidWYuYnVmZmVyLCAyNjgpO1xuICAgIC8vIE5PVEU6IGF0IHRoaXMgcG9pbnQgYnQgaXMgMSBsZXNzIHRoYW4gZXhwZWN0ZWRcbiAgICBpZiAoaGIgPCAxMjgpIHtcbiAgICAgICAgLy8gZW5kIGJ5dGUsIGZzZSBkZWNvZGUgdGFibGVcbiAgICAgICAgdmFyIF9hID0gcmZzZShkYXQsIGJ0ICsgMSwgNiksIGVidCA9IF9hWzBdLCBmZHQgPSBfYVsxXTtcbiAgICAgICAgYnQgKz0gaGI7XG4gICAgICAgIHZhciBlcG9zID0gZWJ0IDw8IDM7XG4gICAgICAgIC8vIGxhc3QgYnl0ZVxuICAgICAgICB2YXIgbGIgPSBkYXRbYnRdO1xuICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAvLyAgc3RhdGUxICAgc3RhdGUyICAgc3RhdGUxIGJpdHMgICBzdGF0ZTIgYml0c1xuICAgICAgICB2YXIgc3QxID0gMCwgc3QyID0gMCwgYnRyMSA9IGZkdC5iLCBidHIyID0gYnRyMTtcbiAgICAgICAgLy8gZnNlIHBvc1xuICAgICAgICAvLyBwcmUtaW5jcmVtZW50IHRvIGFjY291bnQgZm9yIG9yaWdpbmFsIGRlZmljaXQgb2YgMVxuICAgICAgICB2YXIgZnBvcyA9ICgrK2J0IDw8IDMpIC0gOCArIG1zYihsYik7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMTtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIHZhciBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDEgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjEpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0MV07XG4gICAgICAgICAgICBmcG9zIC09IGJ0cjI7XG4gICAgICAgICAgICBpZiAoZnBvcyA8IGVwb3MpXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYnQgPSBmcG9zID4+IDM7XG4gICAgICAgICAgICBzdDIgKz0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChmcG9zICYgNykpICYgKCgxIDw8IGJ0cjIpIC0gMSk7XG4gICAgICAgICAgICBod1srK3djXSA9IGZkdC5zW3N0Ml07XG4gICAgICAgICAgICBidHIxID0gZmR0Lm5bc3QxXTtcbiAgICAgICAgICAgIHN0MSA9IGZkdC50W3N0MV07XG4gICAgICAgICAgICBidHIyID0gZmR0Lm5bc3QyXTtcbiAgICAgICAgICAgIHN0MiA9IGZkdC50W3N0Ml07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCsrd2MgPiAyNTUpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB3YyA9IGhiIC0gMTI3O1xuICAgICAgICBmb3IgKDsgaSA8IHdjOyBpICs9IDIpIHtcbiAgICAgICAgICAgIHZhciBieXRlID0gZGF0WysrYnRdO1xuICAgICAgICAgICAgaHdbaV0gPSBieXRlID4+IDQ7XG4gICAgICAgICAgICBod1tpICsgMV0gPSBieXRlICYgMTU7XG4gICAgICAgIH1cbiAgICAgICAgKytidDtcbiAgICB9XG4gICAgLy8gd2VpZ2h0IGV4cG9uZW50aWFsIHN1bVxuICAgIHZhciB3ZXMgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICAvLyBiaXRzIG11c3QgYmUgYXQgbW9zdCAxMSwgc2FtZSBhcyB3ZWlnaHRcbiAgICAgICAgaWYgKHd0ID4gMTEpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIHdlcyArPSB3dCAmJiAoMSA8PCAod3QgLSAxKSk7XG4gICAgfVxuICAgIC8vIG1heCBiaXRzXG4gICAgdmFyIG1iID0gbXNiKHdlcykgKyAxO1xuICAgIC8vIHRhYmxlIHNpemVcbiAgICB2YXIgdHMgPSAxIDw8IG1iO1xuICAgIC8vIHJlbWFpbmluZyBzdW1cbiAgICB2YXIgcmVtID0gdHMgLSB3ZXM7XG4gICAgLy8gbXVzdCBiZSBwb3dlciBvZiAyXG4gICAgaWYgKHJlbSAmIChyZW0gLSAxKSlcbiAgICAgICAgZXJyKDApO1xuICAgIGh3W3djKytdID0gbXNiKHJlbSkgKyAxO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciB3dCA9IGh3W2ldO1xuICAgICAgICArK3JjW2h3W2ldID0gd3QgJiYgKG1iICsgMSAtIHd0KV07XG4gICAgfVxuICAgIC8vIGh1ZiBidWZcbiAgICB2YXIgaGJ1ZiA9IG5ldyB1OCh0cyA8PCAxKTtcbiAgICAvLyAgICBzeW1ib2xzICAgICAgICAgICAgICAgICAgICAgIG51bSBiaXRzXG4gICAgdmFyIHN5bXMgPSBoYnVmLnN1YmFycmF5KDAsIHRzKSwgbmIgPSBoYnVmLnN1YmFycmF5KHRzKTtcbiAgICByaVttYl0gPSAwO1xuICAgIGZvciAoaSA9IG1iOyBpID4gMDsgLS1pKSB7XG4gICAgICAgIHZhciBwdiA9IHJpW2ldO1xuICAgICAgICBmaWxsKG5iLCBpLCBwdiwgcmlbaSAtIDFdID0gcHYgKyByY1tpXSAqICgxIDw8IChtYiAtIGkpKSk7XG4gICAgfVxuICAgIGlmIChyaVswXSAhPSB0cylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCB3YzsgKytpKSB7XG4gICAgICAgIHZhciBiaXRzID0gaHdbaV07XG4gICAgICAgIGlmIChiaXRzKSB7XG4gICAgICAgICAgICB2YXIgY29kZSA9IHJpW2JpdHNdO1xuICAgICAgICAgICAgZmlsbChzeW1zLCBpLCBjb2RlLCByaVtiaXRzXSA9IGNvZGUgKyAoMSA8PCAobWIgLSBiaXRzKSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbYnQsIHtcbiAgICAgICAgICAgIG46IG5iLFxuICAgICAgICAgICAgYjogbWIsXG4gICAgICAgICAgICBzOiBzeW1zXG4gICAgICAgIH1dO1xufTtcbi8vIFRhYmxlcyBnZW5lcmF0ZWQgdXNpbmcgdGhpczpcbi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tLzEwMWFycm93ei9hOTc5NDUyZDQzNTU5OTJjYmY4ZjI1N2NiZmZjOWVkZFxuLy8gZGVmYXVsdCBsaXRlcmFsIGxlbmd0aCB0YWJsZVxudmFyIGRsbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDgxLCAxNiwgOTksIDE0MCwgNDksIDE5OCwgMjQsIDk5LCAxMiwgMzMsIDE5NiwgMjQsIDk5LCAxMDIsIDEwMiwgMTM0LCA3MCwgMTQ2LCA0XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG1hdGNoIGxlbmd0aCB0YWJsZVxudmFyIGRtbHQgPSAvKiNfX1BVUkVfXyovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMzLCAyMCwgMTk2LCAyNCwgOTksIDE0MCwgMzMsIDEzMiwgMTYsIDY2LCA4LCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA5XG5dKSwgMCwgNilbMV07XG4vLyBkZWZhdWx0IG9mZnNldCBjb2RlIHRhYmxlXG52YXIgZG9jdCA9IC8qI19fUFVSRV9fICovIHJmc2UoLyojX19QVVJFX18qLyBuZXcgdTgoW1xuICAgIDMyLCAxMzIsIDE2LCA2NiwgMTAyLCA3MCwgNjgsIDY4LCA2OCwgNjgsIDM2LCA3MywgMlxuXSksIDAsIDUpWzFdO1xuLy8gYml0cyB0byBiYXNlbGluZVxudmFyIGIyYmwgPSBmdW5jdGlvbiAoYiwgcykge1xuICAgIHZhciBsZW4gPSBiLmxlbmd0aCwgYmwgPSBuZXcgaTMyKGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICBibFtpXSA9IHM7XG4gICAgICAgIHMgKz0gMSA8PCBiW2ldO1xuICAgIH1cbiAgICByZXR1cm4gYmw7XG59O1xuLy8gbGl0ZXJhbCBsZW5ndGggYml0c1xudmFyIGxsYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMzQ2NzgwMjAsIDIwMjA1MDA1NywgMjY5NDIyMDkzXG5dKSkuYnVmZmVyLCAwLCAzNik7XG4vLyBsaXRlcmFsIGxlbmd0aCBiYXNlbGluZVxudmFyIGxsYmwgPSAvKiNfX1BVUkVfXyAqLyBiMmJsKGxsYiwgMCk7XG4vLyBtYXRjaCBsZW5ndGggYml0c1xudmFyIG1sYiA9IC8qI19fUFVSRV9fICovIG5ldyB1OCgoIC8qI19fUFVSRV9fICovbmV3IGkzMihbXG4gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4NDMwMDksIDUwNTI4NzcwLCAxMTc3NjkyMjAsIDE4NTIwNzA0OCwgMjUyNTc5MDg0LCAxNlxuXSkpLmJ1ZmZlciwgMCwgNTMpO1xuLy8gbWF0Y2ggbGVuZ3RoIGJhc2VsaW5lXG52YXIgbWxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobWxiLCAzKTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbVxudmFyIGRodSA9IGZ1bmN0aW9uIChkYXQsIG91dCwgaHUpIHtcbiAgICB2YXIgbGVuID0gZGF0Lmxlbmd0aCwgc3MgPSBvdXQubGVuZ3RoLCBsYiA9IGRhdFtsZW4gLSAxXSwgbXNrID0gKDEgPDwgaHUuYikgLSAxLCBlYiA9IC1odS5iO1xuICAgIGlmICghbGIpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3QgPSAwLCBidHIgPSBodS5iLCBwb3MgPSAobGVuIDw8IDMpIC0gOCArIG1zYihsYikgLSBidHIsIGkgPSAtMTtcbiAgICBmb3IgKDsgcG9zID4gZWIgJiYgaSA8IHNzOykge1xuICAgICAgICB2YXIgY2J0ID0gcG9zID4+IDM7XG4gICAgICAgIHZhciB2YWwgPSAoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChwb3MgJiA3KTtcbiAgICAgICAgc3QgPSAoKHN0IDw8IGJ0cikgfCB2YWwpICYgbXNrO1xuICAgICAgICBvdXRbKytpXSA9IGh1LnNbc3RdO1xuICAgICAgICBwb3MgLT0gKGJ0ciA9IGh1Lm5bc3RdKTtcbiAgICB9XG4gICAgaWYgKHBvcyAhPSBlYiB8fCBpICsgMSAhPSBzcylcbiAgICAgICAgZXJyKDApO1xufTtcbi8vIGRlY29kZSBodWZmbWFuIHN0cmVhbSA0eFxuLy8gVE9ETzogdXNlIHdvcmtlcnMgdG8gcGFyYWxsZWxpemVcbnZhciBkaHU0ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBidCA9IDY7XG4gICAgdmFyIHNzID0gb3V0Lmxlbmd0aCwgc3oxID0gKHNzICsgMykgPj4gMiwgc3oyID0gc3oxIDw8IDEsIHN6MyA9IHN6MSArIHN6MjtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpKSwgb3V0LnN1YmFycmF5KDAsIHN6MSksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0LCBidCArPSBkYXRbMl0gfCAoZGF0WzNdIDw8IDgpKSwgb3V0LnN1YmFycmF5KHN6MSwgc3oyKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFs0XSB8IChkYXRbNV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oyLCBzejMpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCksIG91dC5zdWJhcnJheShzejMpLCBodSk7XG59O1xuLy8gcmVhZCBac3RhbmRhcmQgYmxvY2tcbnZhciByemIgPSBmdW5jdGlvbiAoZGF0LCBzdCwgb3V0KSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBidCA9IHN0LmI7XG4gICAgLy8gICAgYnl0ZSAwICAgICAgICBibG9jayB0eXBlXG4gICAgdmFyIGIwID0gZGF0W2J0XSwgYnR5cGUgPSAoYjAgPj4gMSkgJiAzO1xuICAgIHN0LmwgPSBiMCAmIDE7XG4gICAgdmFyIHN6ID0gKGIwID4+IDMpIHwgKGRhdFtidCArIDFdIDw8IDUpIHwgKGRhdFtidCArIDJdIDw8IDEzKTtcbiAgICAvLyBlbmQgYnl0ZSBmb3IgYmxvY2tcbiAgICB2YXIgZWJ0ID0gKGJ0ICs9IDMpICsgc3o7XG4gICAgaWYgKGJ0eXBlID09IDEpIHtcbiAgICAgICAgaWYgKGJ0ID49IGRhdC5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN0LmIgPSBidCArIDE7XG4gICAgICAgIGlmIChvdXQpIHtcbiAgICAgICAgICAgIGZpbGwob3V0LCBkYXRbYnRdLCBzdC55LCBzdC55ICs9IHN6KTtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbGwobmV3IHU4KHN6KSwgZGF0W2J0XSk7XG4gICAgfVxuICAgIGlmIChlYnQgPiBkYXQubGVuZ3RoKVxuICAgICAgICByZXR1cm47XG4gICAgaWYgKGJ0eXBlID09IDApIHtcbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgb3V0LnNldChkYXQuc3ViYXJyYXkoYnQsIGVidCksIHN0LnkpO1xuICAgICAgICAgICAgc3QueSArPSBzejtcbiAgICAgICAgICAgIHJldHVybiBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNsYyhkYXQsIGJ0LCBlYnQpO1xuICAgIH1cbiAgICBpZiAoYnR5cGUgPT0gMikge1xuICAgICAgICAvLyAgICBieXRlIDMgICAgICAgIGxpdCBidHlwZSAgICAgc2l6ZSBmb3JtYXRcbiAgICAgICAgdmFyIGIzID0gZGF0W2J0XSwgbGJ0ID0gYjMgJiAzLCBzZiA9IChiMyA+PiAyKSAmIDM7XG4gICAgICAgIC8vIGxpdCBzcmMgc2l6ZSAgbGl0IGNtcCBzeiA0IHN0cmVhbXNcbiAgICAgICAgdmFyIGxzcyA9IGIzID4+IDQsIGxjcyA9IDAsIHM0ID0gMDtcbiAgICAgICAgaWYgKGxidCA8IDIpIHtcbiAgICAgICAgICAgIGlmIChzZiAmIDEpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKHNmICYgMikgJiYgKGRhdFsrK2J0XSA8PCAxMikpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyA9IGIzID4+IDM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzNCA9IHNmO1xuICAgICAgICAgICAgaWYgKHNmIDwgMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKChkYXRbKytidF0gJiA2MykgPDwgNCksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKHNmID09IDIpXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDMpIDw8IDEyKSwgbGNzID0gKGRhdFtidF0gPj4gMikgfCAoZGF0WysrYnRdIDw8IDYpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoZGF0WysrYnRdIDw8IDQpIHwgKChkYXRbKytidF0gJiA2MykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiA2KSB8IChkYXRbKytidF0gPDwgMikgfCAoZGF0WysrYnRdIDw8IDEwKTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgICAgICAvLyBhZGQgbGl0ZXJhbHMgdG8gZW5kIC0gY2FuIG5ldmVyIG92ZXJsYXAgd2l0aCBiYWNrcmVmZXJlbmNlcyBiZWNhdXNlIHVudXNlZCBsaXRlcmFscyBhbHdheXMgYXBwZW5kZWRcbiAgICAgICAgdmFyIGJ1ZiA9IG91dCA/IG91dC5zdWJhcnJheShzdC55LCBzdC55ICsgc3QubSkgOiBuZXcgdTgoc3QubSk7XG4gICAgICAgIC8vIHN0YXJ0aW5nIHBvaW50IGZvciBsaXRlcmFsc1xuICAgICAgICB2YXIgc3BsID0gYnVmLmxlbmd0aCAtIGxzcztcbiAgICAgICAgaWYgKGxidCA9PSAwKVxuICAgICAgICAgICAgYnVmLnNldChkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxzcyksIHNwbCk7XG4gICAgICAgIGVsc2UgaWYgKGxidCA9PSAxKVxuICAgICAgICAgICAgZmlsbChidWYsIGRhdFtidCsrXSwgc3BsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBodWZmbWFuIHRhYmxlXG4gICAgICAgICAgICB2YXIgaHUgPSBzdC5oO1xuICAgICAgICAgICAgaWYgKGxidCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIGh1ZCA9IHJodShkYXQsIGJ0KTtcbiAgICAgICAgICAgICAgICAvLyBzdWJ0cmFjdCBkZXNjcmlwdGlvbiBsZW5ndGhcbiAgICAgICAgICAgICAgICBsY3MgKz0gYnQgLSAoYnQgPSBodWRbMF0pO1xuICAgICAgICAgICAgICAgIHN0LmggPSBodSA9IGh1ZFsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCFodSlcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAoczQgPyBkaHU0IDogZGh1KShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGxjcyksIGJ1Zi5zdWJhcnJheShzcGwpLCBodSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbnVtIHNlcXVlbmNlc1xuICAgICAgICB2YXIgbnMgPSBkYXRbYnQrK107XG4gICAgICAgIGlmIChucykge1xuICAgICAgICAgICAgaWYgKG5zID09IDI1NSlcbiAgICAgICAgICAgICAgICBucyA9IChkYXRbYnQrK10gfCAoZGF0W2J0KytdIDw8IDgpKSArIDB4N0YwMDtcbiAgICAgICAgICAgIGVsc2UgaWYgKG5zID4gMTI3KVxuICAgICAgICAgICAgICAgIG5zID0gKChucyAtIDEyOCkgPDwgOCkgfCBkYXRbYnQrK107XG4gICAgICAgICAgICAvLyBzeW1ib2wgY29tcHJlc3Npb24gbW9kZXNcbiAgICAgICAgICAgIHZhciBzY20gPSBkYXRbYnQrK107XG4gICAgICAgICAgICBpZiAoc2NtICYgMylcbiAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICB2YXIgZHRzID0gW2RtbHQsIGRvY3QsIGRsbHRdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDI7IGkgPiAtMTsgLS1pKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1kID0gKHNjbSA+PiAoKGkgPDwgMSkgKyAyKSkgJiAzO1xuICAgICAgICAgICAgICAgIGlmIChtZCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJsZSBidWZcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJidWYgPSBuZXcgdTgoWzAsIDAsIGRhdFtidCsrXV0pO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzOiByYnVmLnN1YmFycmF5KDIsIDMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbjogcmJ1Zi5zdWJhcnJheSgwLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHQ6IG5ldyB1MTYocmJ1Zi5idWZmZXIsIDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYjogMFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChtZCA9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFjY3VyYWN5IGxvZyA4IGZvciBvZmZzZXRzLCA5IGZvciBvdGhlcnNcbiAgICAgICAgICAgICAgICAgICAgX2EgPSByZnNlKGRhdCwgYnQsIDkgLSAoaSAmIDEpKSwgYnQgPSBfYVswXSwgZHRzW2ldID0gX2FbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdC50KVxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgICAgICAgICBkdHNbaV0gPSBzdC50W2ldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBfYiA9IHN0LnQgPSBkdHMsIG1sdCA9IF9iWzBdLCBvY3QgPSBfYlsxXSwgbGx0ID0gX2JbMl07XG4gICAgICAgICAgICB2YXIgbGIgPSBkYXRbZWJ0IC0gMV07XG4gICAgICAgICAgICBpZiAoIWxiKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBzcG9zID0gKGVidCA8PCAzKSAtIDggKyBtc2IobGIpIC0gbGx0LmIsIGNidCA9IHNwb3MgPj4gMywgb3VidCA9IDA7XG4gICAgICAgICAgICB2YXIgbHN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IGxsdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2N0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgb3N0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9jdC5iKSAtIDEpO1xuICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWx0LmIpID4+IDM7XG4gICAgICAgICAgICB2YXIgbXN0ID0gKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sdC5iKSAtIDEpO1xuICAgICAgICAgICAgZm9yICgrK25zOyAtLW5zOykge1xuICAgICAgICAgICAgICAgIHZhciBsbGMgPSBsbHQuc1tsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBsYnRyID0gbGx0Lm5bbHN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWxjID0gbWx0LnNbbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgbWJ0ciA9IG1sdC5uW21zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9mYyA9IG9jdC5zW29zdF07XG4gICAgICAgICAgICAgICAgdmFyIG9idHIgPSBvY3Qubltvc3RdO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9mYykgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgb2ZwID0gMSA8PCBvZmM7XG4gICAgICAgICAgICAgICAgdmFyIG9mZiA9IG9mcCArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpIHwgKGRhdFtjYnQgKyAzXSA8PCAyNCkpID4+PiAoc3BvcyAmIDcpKSAmIChvZnAgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWxiW21sY10pID4+IDM7XG4gICAgICAgICAgICAgICAgdmFyIG1sID0gbWxibFttbGNdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1sYlttbGNdKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBsbGJbbGxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbGwgPSBsbGJsW2xsY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGxiW2xsY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxidHIpID4+IDM7XG4gICAgICAgICAgICAgICAgbHN0ID0gbGx0LnRbbHN0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGJ0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbWJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBtc3QgPSBtbHQudFttc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBtYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG9zdCA9IG9jdC50W29zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG9idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGlmIChvZmYgPiAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1swXSA9IG9mZiAtPSAzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IG9mZiAtIChsbCAhPSAwKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gaWR4ID09IDMgPyBzdC5vWzBdIC0gMSA6IHN0Lm9baWR4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPiAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMl0gPSBzdC5vWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1sxXSA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZiA9IHN0Lm9bMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGw7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IGxsLCBzcGwgKz0gbGw7XG4gICAgICAgICAgICAgICAgdmFyIHN0aW4gPSBvdWJ0IC0gb2ZmO1xuICAgICAgICAgICAgICAgIGlmIChzdGluIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGVuID0gLXN0aW47XG4gICAgICAgICAgICAgICAgICAgIHZhciBicyA9IHN0LmUgKyBzdGluO1xuICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gbWwpXG4gICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBtbDtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IHN0LndbYnMgKyBpXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvdWJ0ICs9IGxlbiwgbWwgLT0gbGVuLCBzdGluID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3RpbiArIGldO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvdWJ0ICs9IG1sO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91YnQgIT0gc3BsKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHNwbCA8IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQrK10gPSBidWZbc3BsKytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdWJ0ID0gYnVmLmxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvdXQpXG4gICAgICAgICAgICAgICAgc3QueSArPSBvdWJ0O1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIDAsIG91YnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgICAgIHN0LnkgKz0gbHNzO1xuICAgICAgICAgICAgICAgIGlmIChzcGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsc3M7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmW2ldID0gYnVmW3NwbCArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3BsKVxuICAgICAgICAgICAgICAgIGJ1ZiA9IHNsYyhidWYsIHNwbCk7XG4gICAgICAgIH1cbiAgICAgICAgc3QuYiA9IGVidDtcbiAgICAgICAgcmV0dXJuIGJ1ZjtcbiAgICB9XG4gICAgZXJyKDIpO1xufTtcbi8vIGNvbmNhdFxudmFyIGNjdCA9IGZ1bmN0aW9uIChidWZzLCBvbCkge1xuICAgIGlmIChidWZzLmxlbmd0aCA9PSAxKVxuICAgICAgICByZXR1cm4gYnVmc1swXTtcbiAgICB2YXIgYnVmID0gbmV3IHU4KG9sKTtcbiAgICBmb3IgKHZhciBpID0gMCwgYiA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBjaGsgPSBidWZzW2ldO1xuICAgICAgICBidWYuc2V0KGNoaywgYik7XG4gICAgICAgIGIgKz0gY2hrLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIGJ1Zjtcbn07XG4vKipcbiAqIERlY29tcHJlc3NlcyBac3RhbmRhcmQgZGF0YVxuICogQHBhcmFtIGRhdCBUaGUgaW5wdXQgZGF0YVxuICogQHBhcmFtIGJ1ZiBUaGUgb3V0cHV0IGJ1ZmZlci4gSWYgdW5zcGVjaWZpZWQsIHRoZSBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlXG4gKiAgICAgICAgICAgIGV4YWN0bHkgZW5vdWdoIG1lbW9yeSB0byBmaXQgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiBJZiB5b3VyXG4gKiAgICAgICAgICAgIGRhdGEgaGFzIG11bHRpcGxlIGZyYW1lcyBhbmQgeW91IGtub3cgdGhlIG91dHB1dCBzaXplLCBzcGVjaWZ5aW5nXG4gKiAgICAgICAgICAgIGl0IHdpbGwgeWllbGQgYmV0dGVyIHBlcmZvcm1hbmNlLlxuICogQHJldHVybnMgVGhlIGRlY29tcHJlc3NlZCBkYXRhXG4gKi9cbnJldHVybiBmdW5jdGlvbiBkZWNvbXByZXNzKGRhdCwgYnVmKSB7XG4gICAgdmFyIGJ0ID0gMCwgYnVmcyA9IFtdLCBuYiA9ICshYnVmLCBvbCA9IDA7XG4gICAgZm9yICg7IGRhdC5sZW5ndGg7KSB7XG4gICAgICAgIHZhciBzdCA9IHJ6ZmgoZGF0LCBuYiB8fCBidWYpO1xuICAgICAgICBpZiAodHlwZW9mIHN0ID09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBpZiAobmIpIHtcbiAgICAgICAgICAgICAgICBidWYgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzdC53Lmxlbmd0aCA9PSBzdC51KSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYgPSBzdC53KTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gc3QudTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBidWZzLnB1c2goYnVmKTtcbiAgICAgICAgICAgICAgICBzdC5lID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAoOyAhc3QubDspIHtcbiAgICAgICAgICAgICAgICB2YXIgYmxrID0gcnpiKGRhdCwgc3QsIGJ1Zik7XG4gICAgICAgICAgICAgICAgaWYgKCFibGspXG4gICAgICAgICAgICAgICAgICAgIGVycig1KTtcbiAgICAgICAgICAgICAgICBpZiAoYnVmKVxuICAgICAgICAgICAgICAgICAgICBzdC5lID0gc3QueTtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJsayk7XG4gICAgICAgICAgICAgICAgICAgIG9sICs9IGJsay5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGNwdyhzdC53LCAwLCBibGsubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgc3Qudy5zZXQoYmxrLCBzdC53Lmxlbmd0aCAtIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ0ID0gc3QuYiArIChzdC5jICogNCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnQgPSBzdDtcbiAgICAgICAgZGF0ID0gZGF0LnN1YmFycmF5KGJ0KTtcbiAgICB9XG4gICAgcmV0dXJuIGNjdChidWZzLCBvbCk7XG59XG59KSAoKVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjBcbi8vVmVyc2lvbjogPCA1LjEuMVxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4xLjFcbi8vVmVyc2lvbjogPCA1LjIuMFxudmFyIGNhbWxfZGVjb21wcmVzc19pbnB1dCA9IG51bGxcblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246ID49IDUuMlxuLy9SZXF1aXJlczogenN0ZF9kZWNvbXByZXNzXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3pzdGRfaW5pdGlhbGl6ZVxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xLjFcbmZ1bmN0aW9uIGNhbWxfenN0ZF9pbml0aWFsaXplKHVuaXQpIHtcbiAgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0genN0ZF9kZWNvbXByZXNzO1xuICByZXR1cm4gMVxufVxuXG4iLCIvL1Byb3ZpZGVzOiBjYW1sX29qc193cmFwX2Z1bl9hcmd1bWVudHNcbi8vUmVxdWlyZXM6IGNhbWxfanNfd3JhcF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9vanNfd3JhcF9mdW5fYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBjYW1sX2pzX3dyYXBfY2FsbGJhY2soZikoYXJndW1lbnRzKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXNcbi8vUmVxdWlyZXM6IGNhbWxfanNfdG9fc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXMobywgZikge1xuICB2YXIgbmFtZTtcbiAgZm9yKG5hbWUgaW4gbykge1xuICAgIGlmKG8uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGYobmFtZSk7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8gVElNRV9OT1dcblxuLy9Qcm92aWRlczogdGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bCwgY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9pbnQ2NF9vZl9pbnQzMlxudmFyIG1zX3RvX25hbm8gPSBjYW1sX2ludDY0X29mX2ludDMyKDEwMDAqMTAwMCk7XG5mdW5jdGlvbiB0aW1lX25vd19uYW5vc2Vjb25kc19zaW5jZV91bml4X2Vwb2NoX29yX3plcm8oKXtcbiAgICB2YXIgbXMgPSBEYXRlLm5vdygpO1xuICAgIC8vIG11bHRpcGxlIGJ5IHR3byAtIGludDYzIGludGVnZXJzIGFyZSBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICAgdmFyIG1zX2k2MyA9IGNhbWxfaW50NjRfb2ZfZmxvYXQobXMqMik7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfbXVsKG1zX2k2Myxtc190b19uYW5vKTtcbn1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFeGNlcHRpb25zICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0ICgpID1cbiAgKCogZm9yIHJ1bnRpbWUvZmFpbF9uYXQuYyAqKVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuYXJyYXlfYm91bmRfZXJyb3JcIlxuICAgIChJbnZhbGlkX2FyZ3VtZW50IFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcblxubGV0IGZhaWx3aXRoIHMgPSByYWlzZShGYWlsdXJlIHMpXG5sZXQgaW52YWxpZF9hcmcgcyA9IHJhaXNlKEludmFsaWRfYXJndW1lbnQgcylcblxuZXhjZXB0aW9uIEV4aXRcbmV4Y2VwdGlvbiBNYXRjaF9mYWlsdXJlID0gTWF0Y2hfZmFpbHVyZVxuZXhjZXB0aW9uIEFzc2VydF9mYWlsdXJlID0gQXNzZXJ0X2ZhaWx1cmVcbmV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50ID0gSW52YWxpZF9hcmd1bWVudFxuZXhjZXB0aW9uIEZhaWx1cmUgPSBGYWlsdXJlXG5leGNlcHRpb24gTm90X2ZvdW5kID0gTm90X2ZvdW5kXG5leGNlcHRpb24gT3V0X29mX21lbW9yeSA9IE91dF9vZl9tZW1vcnlcbmV4Y2VwdGlvbiBTdGFja19vdmVyZmxvdyA9IFN0YWNrX292ZXJmbG93XG5leGNlcHRpb24gU3lzX2Vycm9yID0gU3lzX2Vycm9yXG5leGNlcHRpb24gRW5kX29mX2ZpbGUgPSBFbmRfb2ZfZmlsZVxuZXhjZXB0aW9uIERpdmlzaW9uX2J5X3plcm8gPSBEaXZpc2lvbl9ieV96ZXJvXG5leGNlcHRpb24gU3lzX2Jsb2NrZWRfaW8gPSBTeXNfYmxvY2tlZF9pb1xuZXhjZXB0aW9uIFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcblxuKCogQ29tcG9zaXRpb24gb3BlcmF0b3JzICopXG5cbmV4dGVybmFsICggfD4gKSA6ICdhIC0+ICgnYSAtPiAnYikgLT4gJ2IgPSBcIiVyZXZhcHBseVwiXG5leHRlcm5hbCAoIEBAICkgOiAoJ2EgLT4gJ2IpIC0+ICdhIC0+ICdiID0gXCIlYXBwbHlcIlxuXG4oKiBEZWJ1Z2dpbmcgKilcblxuZXh0ZXJuYWwgX19MT0NfXyA6IHN0cmluZyA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19GSUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfRklMRVwiXG5leHRlcm5hbCBfX0xJTkVfXyA6IGludCA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fTU9EVUxFX18gOiBzdHJpbmcgPSBcIiVsb2NfTU9EVUxFXCJcbmV4dGVybmFsIF9fUE9TX18gOiBzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQgPSBcIiVsb2NfUE9TXCJcbmV4dGVybmFsIF9fRlVOQ1RJT05fXyA6IHN0cmluZyA9IFwiJWxvY19GVU5DVElPTlwiXG5cbmV4dGVybmFsIF9fTE9DX09GX18gOiAnYSAtPiBzdHJpbmcgKiAnYSA9IFwiJWxvY19MT0NcIlxuZXh0ZXJuYWwgX19MSU5FX09GX18gOiAnYSAtPiBpbnQgKiAnYSA9IFwiJWxvY19MSU5FXCJcbmV4dGVybmFsIF9fUE9TX09GX18gOiAnYSAtPiAoc3RyaW5nICogaW50ICogaW50ICogaW50KSAqICdhID0gXCIlbG9jX1BPU1wiXG5cbigqIENvbXBhcmlzb25zICopXG5cbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG5sZXQgbWluIHggeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICE9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXFcIlxuXG4oKiBCb29sZWFuIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbm90IDogYm9vbCAtPiBib29sID0gXCIlYm9vbG5vdFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuXG4oKiBJbnRlZ2VyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCAoIH4rICkgOiBpbnQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsICggLSApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgKCAqICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbmV4dGVybmFsICggbW9kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5cbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxuXG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxuXG5sZXQgbG5vdCB4ID0geCBseG9yICgtMSlcblxuZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsICggbHNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5leHRlcm5hbCAoIGFzciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuXG5sZXQgbWF4X2ludCA9ICgtMSkgbHNyIDFcbmxldCBtaW5faW50ID0gbWF4X2ludCArIDFcblxuKCogRmxvYXRpbmctcG9pbnQgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXNpbl9mbG9hdFwiIFwiYXNpblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbl9mbG9hdFwiIFwiYXRhblwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuMiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW4yX2Zsb2F0XCIgXCJhdGFuMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBoeXBvdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zaF9mbG9hdFwiIFwiY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NoX2Zsb2F0XCIgXCJjYW1sX2Fjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5fZmxvYXRcIiBcInRhblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuaF9mbG9hdFwiIFwidGFuaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNlaWwgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jZWlsX2Zsb2F0XCIgXCJjZWlsXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb29yIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZmxvb3JfZmxvYXRcIiBcImZsb29yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFic19mbG9hdCA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuZXh0ZXJuYWwgY29weXNpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZF9mbG9hdCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Ztb2RfZmxvYXRcIiBcImZtb2RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbmV4dGVybmFsIGZsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBmbG9hdF9vZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRydW5jYXRlIDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBpbnRfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5sZXQgaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmVnX2luZmluaXR5ID1cbiAgZmxvYXRfb2ZfYml0cyAweEZGX0YwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IG5hbiA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMUxcbmxldCBtYXhfZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4N0ZfRUZfRkZfRkZfRkZfRkZfRkZfRkZMXG5sZXQgbWluX2Zsb2F0ID1cbiAgZmxvYXRfb2ZfYml0cyAweDAwXzEwXzAwXzAwXzAwXzAwXzAwXzAwTFxubGV0IGVwc2lsb25fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4M0NfQjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5cbnR5cGUgZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuXG4oKiBTdHJpbmcgYW5kIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZXMgU3RyaW5nIGFuZCBCeXRlcyAqKVxuXG5leHRlcm5hbCBzdHJpbmdfbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIGJ5dGVzX2NyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgc3RyaW5nX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCAoIF4gKSBzMSBzMiA9XG4gIGxldCBsMSA9IHN0cmluZ19sZW5ndGggczEgYW5kIGwyID0gc3RyaW5nX2xlbmd0aCBzMiBpblxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAobDEgKyBsMikgaW5cbiAgc3RyaW5nX2JsaXQgczEgMCBzIDAgbDE7XG4gIHN0cmluZ19ibGl0IHMyIDAgcyBsMSBsMjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIENoYXIgKilcblxuZXh0ZXJuYWwgaW50X29mX2NoYXIgOiBjaGFyIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHVuc2FmZV9jaGFyX29mX2ludCA6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgXCJjaGFyX29mX2ludFwiIGVsc2UgdW5zYWZlX2NoYXJfb2ZfaW50IG5cblxuKCogVW5pdCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBQYWlyIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgZnN0IDogJ2EgKiAnYiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCBzbmQgOiAnYSAqICdiIC0+ICdiID0gXCIlZmllbGQxXCJcblxuKCogUmVmZXJlbmNlcyAqKVxuXG50eXBlICdhIHJlZiA9IHsgbXV0YWJsZSBjb250ZW50cyA6ICdhIH1cbmV4dGVybmFsIHJlZiA6ICdhIC0+ICdhIHJlZiA9IFwiJW1ha2VtdXRhYmxlXCJcbmV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHJlZiAtPiAnYSAtPiB1bml0ID0gXCIlc2V0ZmllbGQwXCJcbmV4dGVybmFsIGluY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVpbmNyXCJcbmV4dGVybmFsIGRlY3IgOiBpbnQgcmVmIC0+IHVuaXQgPSBcIiVkZWNyXCJcblxuKCogUmVzdWx0IHR5cGUgKilcblxudHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxuKCogU3RyaW5nIGNvbnZlcnNpb24gZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9mbG9hdCA6IHN0cmluZyAtPiBmbG9hdCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2Zsb2F0XCJcblxubGV0IHN0cmluZ19vZl9ib29sIGIgPVxuICBpZiBiIHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCJcbmxldCBib29sX29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IF8gLT4gaW52YWxpZF9hcmcgXCJib29sX29mX3N0cmluZ1wiXG5cbmxldCBib29sX29mX3N0cmluZ19vcHQgPSBmdW5jdGlvblxuICB8IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG4gIHwgXyAtPiBOb25lXG5cbmxldCBzdHJpbmdfb2ZfaW50IG4gPVxuICBmb3JtYXRfaW50IFwiJWRcIiBuXG5cbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5leHRlcm5hbCBzdHJpbmdfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcblxubGV0IHZhbGlkX2Zsb2F0X2xleGVtIHMgPVxuICBsZXQgbCA9IHN0cmluZ19sZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA+PSBsIHRoZW4gcyBeIFwiLlwiIGVsc2VcbiAgICBtYXRjaCBzdHJpbmdfZ2V0IHMgaSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgIHwgXyAtPiBzXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3RyaW5nX29mX2Zsb2F0IGYgPSB2YWxpZF9mbG9hdF9sZXhlbSAoZm9ybWF0X2Zsb2F0IFwiJS4xMmdcIiBmKVxuXG5leHRlcm5hbCBmbG9hdF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IHByb3ZpZGUgdGhpcyBkaXJlY3RseSBhcyBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZS4gKilcbiAgdHJ5IFNvbWUgKGZsb2F0X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbigqIExpc3Qgb3BlcmF0aW9ucyAtLSBtb3JlIGluIG1vZHVsZSBMaXN0ICopXG5cbmxldCByZWMgKCBAICkgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBoZCA6OiB0bCAtPiBoZCA6OiAodGwgQCBsMilcblxuKCogSS9PIG9wZXJhdGlvbnMgKilcblxudHlwZSBpbl9jaGFubmVsXG50eXBlIG91dF9jaGFubmVsXG5cbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9vdXQgOiBpbnQgLT4gb3V0X2NoYW5uZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFwiXG5leHRlcm5hbCBvcGVuX2Rlc2NyaXB0b3JfaW4gOiBpbnQgLT4gaW5fY2hhbm5lbCA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cIlxuXG5sZXQgc3RkaW4gPSBvcGVuX2Rlc2NyaXB0b3JfaW4gMFxubGV0IHN0ZG91dCA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMVxubGV0IHN0ZGVyciA9IG9wZW5fZGVzY3JpcHRvcl9vdXQgMlxuXG4oKiBHZW5lcmFsIG91dHB1dCBmdW5jdGlvbnMgKilcblxudHlwZSBvcGVuX2ZsYWcgPVxuICAgIE9wZW5fcmRvbmx5IHwgT3Blbl93cm9ubHkgfCBPcGVuX2FwcGVuZFxuICB8IE9wZW5fY3JlYXQgfCBPcGVuX3RydW5jIHwgT3Blbl9leGNsXG4gIHwgT3Blbl9iaW5hcnkgfCBPcGVuX3RleHQgfCBPcGVuX25vbmJsb2NrXG5cbmV4dGVybmFsIG9wZW5fZGVzYyA6IHN0cmluZyAtPiBvcGVuX2ZsYWcgbGlzdCAtPiBpbnQgLT4gaW50ID0gXCJjYW1sX3N5c19vcGVuXCJcblxuZXh0ZXJuYWwgc2V0X291dF9jaGFubmVsX25hbWU6IG91dF9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9vdXRfZ2VuIG1vZGUgcGVybSBuYW1lID1cbiAgbGV0IGMgPSBvcGVuX2Rlc2NyaXB0b3Jfb3V0KG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X291dF9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX291dCBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl90ZXh0XSAwbzY2NiBuYW1lXG5cbmxldCBvcGVuX291dF9iaW4gbmFtZSA9XG4gIG9wZW5fb3V0X2dlbiBbT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fdHJ1bmM7IE9wZW5fYmluYXJ5XSAwbzY2NiBuYW1lXG5cbmV4dGVybmFsIGZsdXNoIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9mbHVzaFwiXG5cbmV4dGVybmFsIG91dF9jaGFubmVsc19saXN0IDogdW5pdCAtPiBvdXRfY2hhbm5lbCBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlzdFwiXG5cbmxldCBmbHVzaF9hbGwgKCkgPVxuICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgW10gLT4gKClcbiAgICB8IGE6OmwgLT5cbiAgICAgICAgYmVnaW4gdHJ5XG4gICAgICAgICAgICBmbHVzaCBhXG4gICAgICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgICAgICAoKSAoKiBpZ25vcmUgY2hhbm5lbHMgY2xvc2VkIGR1cmluZyBhIHByZWNlZGluZyBmbHVzaC4gKilcbiAgICAgICAgZW5kO1xuICAgICAgICBpdGVyIGxcbiAgaW4gaXRlciAob3V0X2NoYW5uZWxzX2xpc3QgKCkpXG5cbmV4dGVybmFsIHVuc2FmZV9vdXRwdXQgOiBvdXRfY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0X2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9vdXRwdXRfc3RyaW5nIDogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfb3V0cHV0XCJcblxuZXh0ZXJuYWwgb3V0cHV0X2NoYXIgOiBvdXRfY2hhbm5lbCAtPiBjaGFyIC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuXG5sZXQgb3V0cHV0X2J5dGVzIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0IG9jIHMgMCAoYnl0ZXNfbGVuZ3RoIHMpXG5cbmxldCBvdXRwdXRfc3RyaW5nIG9jIHMgPVxuICB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIDAgKHN0cmluZ19sZW5ndGggcylcblxubGV0IG91dHB1dCBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIm91dHB1dFwiXG4gIGVsc2UgdW5zYWZlX291dHB1dCBvYyBzIG9mcyBsZW5cblxubGV0IG91dHB1dF9zdWJzdHJpbmcgb2MgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IHN0cmluZ19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0X3N1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX291dHB1dF9zdHJpbmcgb2MgcyBvZnMgbGVuXG5cbmV4dGVybmFsIG91dHB1dF9ieXRlIDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfb3V0cHV0X2NoYXJcIlxuZXh0ZXJuYWwgb3V0cHV0X2JpbmFyeV9pbnQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfaW50XCJcblxuZXh0ZXJuYWwgbWFyc2hhbF90b19jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gdW5pdCBsaXN0IC0+IHVuaXRcbiAgICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmxldCBvdXRwdXRfdmFsdWUgY2hhbiB2ID0gbWFyc2hhbF90b19jaGFubmVsIGNoYW4gdiBbXVxuXG5leHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XCJcbmV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX291dFwiXG5leHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX291dF9jaGFubmVsIDogb3V0X2NoYW5uZWwgLT4gdW5pdCA9IFwiY2FtbF9tbF9jbG9zZV9jaGFubmVsXCJcbmxldCBjbG9zZV9vdXQgb2MgPSBmbHVzaCBvYzsgY2xvc2Vfb3V0X2NoYW5uZWwgb2NcbmxldCBjbG9zZV9vdXRfbm9lcnIgb2MgPVxuICAodHJ5IGZsdXNoIG9jIHdpdGggXyAtPiAoKSk7XG4gICh0cnkgY2xvc2Vfb3V0X2NoYW5uZWwgb2Mgd2l0aCBfIC0+ICgpKVxuZXh0ZXJuYWwgc2V0X2JpbmFyeV9tb2RlX291dCA6IG91dF9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcIlxuXG4oKiBHZW5lcmFsIGlucHV0IGZ1bmN0aW9ucyAqKVxuXG5leHRlcm5hbCBzZXRfaW5fY2hhbm5lbF9uYW1lOiBpbl9jaGFubmVsIC0+IHN0cmluZyAtPiB1bml0ID1cbiAgXCJjYW1sX21sX3NldF9jaGFubmVsX25hbWVcIlxuXG5sZXQgb3Blbl9pbl9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9pbihvcGVuX2Rlc2MgbmFtZSBtb2RlIHBlcm0pIGluXG4gIHNldF9pbl9jaGFubmVsX25hbWUgYyBuYW1lO1xuICBjXG5cbmxldCBvcGVuX2luIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fdGV4dF0gMCBuYW1lXG5cbmxldCBvcGVuX2luX2JpbiBuYW1lID1cbiAgb3Blbl9pbl9nZW4gW09wZW5fcmRvbmx5OyBPcGVuX2JpbmFyeV0gMCBuYW1lXG5cbmV4dGVybmFsIGlucHV0X2NoYXIgOiBpbl9jaGFubmVsIC0+IGNoYXIgPSBcImNhbWxfbWxfaW5wdXRfY2hhclwiXG5cbmV4dGVybmFsIHVuc2FmZV9pbnB1dCA6IGluX2NoYW5uZWwgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9pbnB1dFwiXG5cbmxldCBpbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gYnl0ZXNfbGVuZ3RoIHMgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcImlucHV0XCJcbiAgZWxzZSB1bnNhZmVfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWMgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIG9mcyBsZW4gPVxuICBpZiBsZW4gPD0gMCB0aGVuICgpIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW4gaW5cbiAgICBpZiByID0gMFxuICAgIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyAob2ZzICsgcikgKGxlbiAtIHIpXG4gIGVuZFxuXG5sZXQgcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwicmVhbGx5X2lucHV0XCJcbiAgZWxzZSB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlblxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSBsZW4gaW5cbiAgcmVhbGx5X2lucHV0IGljIHMgMCBsZW47XG4gIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgc1xuXG5leHRlcm5hbCBpbnB1dF9zY2FuX2xpbmUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcIlxuXG5sZXQgaW5wdXRfbGluZSBjaGFuID1cbiAgbGV0IHJlYyBidWlsZF9yZXN1bHQgYnVmIHBvcyA9IGZ1bmN0aW9uXG4gICAgW10gLT4gYnVmXG4gIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBsZW4gPSBieXRlc19sZW5ndGggaGQgaW5cbiAgICAgIGJ5dGVzX2JsaXQgaGQgMCBidWYgKHBvcyAtIGxlbikgbGVuO1xuICAgICAgYnVpbGRfcmVzdWx0IGJ1ZiAocG9zIC0gbGVuKSB0bCBpblxuICBsZXQgcmVjIHNjYW4gYWNjdSBsZW4gPVxuICAgIGxldCBuID0gaW5wdXRfc2Nhbl9saW5lIGNoYW4gaW5cbiAgICBpZiBuID0gMCB0aGVuIGJlZ2luICAgICAgICAgICAgICAgICAgICgqIG4gPSAwOiB3ZSBhcmUgYXQgRU9GICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICAgIHwgXyAgLT4gYnVpbGRfcmVzdWx0IChieXRlc19jcmVhdGUgbGVuKSBsZW4gYWNjdVxuICAgIGVuZCBlbHNlIGlmIG4gPiAwIHRoZW4gYmVnaW4gICAgICAgICAgKCogbiA+IDA6IG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyICopXG4gICAgICBsZXQgcmVzID0gYnl0ZXNfY3JlYXRlIChuIC0gMSkgaW5cbiAgICAgIGlnbm9yZSAodW5zYWZlX2lucHV0IGNoYW4gcmVzIDAgKG4gLSAxKSk7XG4gICAgICBpZ25vcmUgKGlucHV0X2NoYXIgY2hhbik7ICAgICAgICAgICAoKiBza2lwIHRoZSBuZXdsaW5lICopXG4gICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgW10gLT4gcmVzXG4gICAgICB8ICBfIC0+IGxldCBsZW4gPSBsZW4gKyBuIC0gMSBpblxuICAgICAgICAgICAgICBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiAocmVzIDo6IGFjY3UpXG4gICAgZW5kIGVsc2UgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAoKiBuIDwgMDogbmV3bGluZSBub3QgZm91bmQgKilcbiAgICAgIGxldCBiZWcgPSBieXRlc19jcmVhdGUgKC1uKSBpblxuICAgICAgaWdub3JlKHVuc2FmZV9pbnB1dCBjaGFuIGJlZyAwICgtbikpO1xuICAgICAgc2NhbiAoYmVnIDo6IGFjY3UpIChsZW4gLSBuKVxuICAgIGVuZFxuICBpbiBieXRlc191bnNhZmVfdG9fc3RyaW5nIChzY2FuIFtdIDApXG5cbmV4dGVybmFsIGlucHV0X2J5dGUgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcbmV4dGVybmFsIGlucHV0X2JpbmFyeV9pbnQgOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9pbnB1dF9pbnRcIlxuZXh0ZXJuYWwgaW5wdXRfdmFsdWUgOiBpbl9jaGFubmVsIC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlXCJcbmV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5cIlxuZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfcG9zX2luXCJcbmV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXCJcbmV4dGVybmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX2luX25vZXJyIGljID0gKHRyeSBjbG9zZV9pbiBpYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfaW4gOiBpbl9jaGFubmVsIC0+IGJvb2wgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgb3V0cHV0ICopXG5cbmxldCBwcmludF9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRvdXQgY1xubGV0IHByaW50X3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgc1xubGV0IHByaW50X2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3Rkb3V0IHNcbmxldCBwcmludF9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJpbnRfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3Rkb3V0IChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmludF9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzOyBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxubGV0IHByaW50X25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRvdXQgJ1xcbic7IGZsdXNoIHN0ZG91dFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIG9uIHN0YW5kYXJkIGVycm9yICopXG5cbmxldCBwcmVycl9jaGFyIGMgPSBvdXRwdXRfY2hhciBzdGRlcnIgY1xubGV0IHByZXJyX3N0cmluZyBzID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgc1xubGV0IHByZXJyX2J5dGVzIHMgPSBvdXRwdXRfYnl0ZXMgc3RkZXJyIHNcbmxldCBwcmVycl9pbnQgaSA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfaW50IGkpXG5sZXQgcHJlcnJfZmxvYXQgZiA9IG91dHB1dF9zdHJpbmcgc3RkZXJyIChzdHJpbmdfb2ZfZmxvYXQgZilcbmxldCBwcmVycl9lbmRsaW5lIHMgPVxuICBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzOyBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxubGV0IHByZXJyX25ld2xpbmUgKCkgPSBvdXRwdXRfY2hhciBzdGRlcnIgJ1xcbic7IGZsdXNoIHN0ZGVyclxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgaW5wdXQgKilcblxubGV0IHJlYWRfbGluZSAoKSA9IGZsdXNoIHN0ZG91dDsgaW5wdXRfbGluZSBzdGRpblxubGV0IHJlYWRfaW50ICgpID0gaW50X29mX3N0cmluZyhyZWFkX2xpbmUoKSlcbmxldCByZWFkX2ludF9vcHQgKCkgPSBpbnRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcbmxldCByZWFkX2Zsb2F0ICgpID0gZmxvYXRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXRfb3B0ICgpID0gZmxvYXRfb2Zfc3RyaW5nX29wdChyZWFkX2xpbmUoKSlcblxuKCogT3BlcmF0aW9ucyBvbiBsYXJnZSBmaWxlcyAqKVxuXG5tb2R1bGUgTGFyZ2VGaWxlID1cbiAgc3RydWN0XG4gICAgZXh0ZXJuYWwgc2Vla19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBwb3Nfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX291dF82NFwiXG4gICAgZXh0ZXJuYWwgb3V0X2NoYW5uZWxfbGVuZ3RoIDogb3V0X2NoYW5uZWwgLT4gaW50NjRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgICBleHRlcm5hbCBzZWVrX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCAtPiB1bml0ID0gXCJjYW1sX21sX3NlZWtfaW5fNjRcIlxuICAgIGV4dGVybmFsIHBvc19pbiA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfcG9zX2luXzY0XCJcbiAgICBleHRlcm5hbCBpbl9jaGFubmVsX2xlbmd0aCA6IGluX2NoYW5uZWwgLT4gaW50NjQgPSBcImNhbWxfbWxfY2hhbm5lbF9zaXplXzY0XCJcbiAgZW5kXG5cbigqIEZvcm1hdHMgKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDZcbiAgID0gRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm10XG4gICAgICAgICAgICAgICAqIHN0cmluZ1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgZm9ybWF0NCA9ICgnYSwgJ2IsICdjLCAnYywgJ2MsICdkKSBmb3JtYXQ2XG5cbnR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA9ICgnYSwgJ2IsICdjLCAnYykgZm9ybWF0NFxuXG5sZXQgc3RyaW5nX29mX2Zvcm1hdCAoRm9ybWF0IChfZm10LCBzdHIpKSA9IHN0clxuXG5leHRlcm5hbCBmb3JtYXRfb2Zfc3RyaW5nIDpcbiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgKCBeXiApIChGb3JtYXQgKGZtdDEsIHN0cjEpKSAoRm9ybWF0IChmbXQyLCBzdHIyKSkgPVxuICBGb3JtYXQgKENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10IGZtdDEgZm10MixcbiAgICAgICAgICBzdHIxIF4gXCIlLFwiIF4gc3RyMilcblxuKCogTWlzY2VsbGFuZW91cyAqKVxuXG5leHRlcm5hbCBzeXNfZXhpdCA6IGludCAtPiAnYSA9IFwiY2FtbF9zeXNfZXhpdFwiXG5cbigqIGZvciBhdF9leGl0ICopXG50eXBlICdhIGF0b21pY190XG5leHRlcm5hbCBhdG9taWNfbWFrZSA6ICdhIC0+ICdhIGF0b21pY190ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgYXRvbWljX2dldCA6ICdhIGF0b21pY190IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgYXRvbWljX2NvbXBhcmVfYW5kX3NldCA6ICdhIGF0b21pY190IC0+ICdhIC0+ICdhIC0+IGJvb2xcbiAgPSBcIiVhdG9taWNfY2FzXCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBhdG9taWNfbWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IGF0b21pY19tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgYXRvbWljX2NvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gYXRvbWljX2NvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19kb21haW5fbG9jYWxfYXRfZXhpdCA9IHJlZiAoZnVuICgpIC0+ICgpKVxuXG5sZXQgZG9fYXRfZXhpdCAoKSA9XG4gICghZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQpICgpO1xuICAoYXRvbWljX2dldCBleGl0X2Z1bmN0aW9uKSAoKVxuXG5sZXQgZXhpdCByZXRjb2RlID1cbiAgZG9fYXRfZXhpdCAoKTtcbiAgc3lzX2V4aXQgcmV0Y29kZVxuXG5sZXQgXyA9IHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5kb19hdF9leGl0XCIgZG9fYXRfZXhpdFxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgICA9IEFyZ1xubW9kdWxlIEFycmF5ICAgICAgICAgID0gQXJyYXlcbm1vZHVsZSBBcnJheUxhYmVscyAgICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgICAgPSBBdG9taWNcbm1vZHVsZSBCaWdhcnJheSAgICAgICA9IEJpZ2FycmF5XG5tb2R1bGUgQm9vbCAgICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgICAgPSBCdWZmZXJcbm1vZHVsZSBCeXRlcyAgICAgICAgICA9IEJ5dGVzXG5tb2R1bGUgQnl0ZXNMYWJlbHMgICAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICAgID0gQ2FsbGJhY2tcbm1vZHVsZSBDaGFyICAgICAgICAgICA9IENoYXJcbm1vZHVsZSBDb21wbGV4ICAgICAgICA9IENvbXBsZXhcbm1vZHVsZSBDb25kaXRpb24gICAgICA9IENvbmRpdGlvblxubW9kdWxlIERpZ2VzdCAgICAgICAgID0gRGlnZXN0XG5tb2R1bGUgRG9tYWluICAgICAgICAgPSBEb21haW5cbm1vZHVsZSBFZmZlY3QgICAgICAgICA9IEVmZmVjdFxubW9kdWxlIEVpdGhlciAgICAgICAgID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uICAgICAgPSBFcGhlbWVyb25cbm1vZHVsZSBGaWxlbmFtZSAgICAgICA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgICAgICAgICAgPSBGbG9hdFxubW9kdWxlIEZvcm1hdCAgICAgICAgID0gRm9ybWF0XG5tb2R1bGUgRnVuICAgICAgICAgICAgPSBGdW5cbm1vZHVsZSBHYyAgICAgICAgICAgICA9IEdjXG5tb2R1bGUgSGFzaHRibCAgICAgICAgPSBIYXNodGJsXG5tb2R1bGUgSW5fY2hhbm5lbCAgICAgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW50ICAgICAgICAgICAgPSBJbnRcbm1vZHVsZSBJbnQzMiAgICAgICAgICA9IEludDMyXG5tb2R1bGUgSW50NjQgICAgICAgICAgPSBJbnQ2NFxubW9kdWxlIExhenkgICAgICAgICAgID0gTGF6eVxubW9kdWxlIExleGluZyAgICAgICAgID0gTGV4aW5nXG5tb2R1bGUgTGlzdCAgICAgICAgICAgPSBMaXN0XG5tb2R1bGUgTGlzdExhYmVscyAgICAgPSBMaXN0TGFiZWxzXG5tb2R1bGUgTWFwICAgICAgICAgICAgPSBNYXBcbm1vZHVsZSBNYXJzaGFsICAgICAgICA9IE1hcnNoYWxcbm1vZHVsZSBNb3JlTGFiZWxzICAgICA9IE1vcmVMYWJlbHNcbm1vZHVsZSBNdXRleCAgICAgICAgICA9IE11dGV4XG5tb2R1bGUgTmF0aXZlaW50ICAgICAgPSBOYXRpdmVpbnRcbm1vZHVsZSBPYmogICAgICAgICAgICA9IE9ialxubW9kdWxlIE9vICAgICAgICAgICAgID0gT29cbm1vZHVsZSBPcHRpb24gICAgICAgICA9IE9wdGlvblxubW9kdWxlIE91dF9jaGFubmVsICAgID0gT3V0X2NoYW5uZWxcbm1vZHVsZSBQYXJzaW5nICAgICAgICA9IFBhcnNpbmdcbm1vZHVsZSBQcmludGV4YyAgICAgICA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmICAgICAgICAgPSBQcmludGZcbm1vZHVsZSBRdWV1ZSAgICAgICAgICA9IFF1ZXVlXG5tb2R1bGUgUmFuZG9tICAgICAgICAgPSBSYW5kb21cbm1vZHVsZSBSZXN1bHQgICAgICAgICA9IFJlc3VsdFxubW9kdWxlIFNjYW5mICAgICAgICAgID0gU2NhbmZcbm1vZHVsZSBTZW1hcGhvcmUgICAgICA9IFNlbWFwaG9yZVxubW9kdWxlIFNlcSAgICAgICAgICAgID0gU2VxXG5tb2R1bGUgU2V0ICAgICAgICAgICAgPSBTZXRcbm1vZHVsZSBTdGFjayAgICAgICAgICA9IFN0YWNrXG5tb2R1bGUgU3RkTGFiZWxzICAgICAgPSBTdGRMYWJlbHNcbm1vZHVsZSBTdHJpbmcgICAgICAgICA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ0xhYmVscyAgID0gU3RyaW5nTGFiZWxzXG5tb2R1bGUgU3lzICAgICAgICAgICAgPSBTeXNcbm1vZHVsZSBVY2hhciAgICAgICAgICA9IFVjaGFyXG5tb2R1bGUgVW5pdCAgICAgICAgICAgPSBVbml0XG5tb2R1bGUgV2VhayAgICAgICAgICAgPSBXZWFrXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEdhYnJpZWwgU2NoZXJlciwgcHJvamV0IFBhcnNpZmFsLCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuXG5sZXQgbGVmdCB2ID0gTGVmdCB2XG5sZXQgcmlnaHQgdiA9IFJpZ2h0IHZcblxubGV0IGlzX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gdHJ1ZVxufCBSaWdodCBfIC0+IGZhbHNlXG5cbmxldCBpc19yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBmYWxzZVxufCBSaWdodCBfIC0+IHRydWVcblxubGV0IGZpbmRfbGVmdCA9IGZ1bmN0aW9uXG58IExlZnQgdiAtPiBTb21lIHZcbnwgUmlnaHQgXyAtPiBOb25lXG5cbmxldCBmaW5kX3JpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IE5vbmVcbnwgUmlnaHQgdiAtPiBTb21lIHZcblxubGV0IG1hcF9sZWZ0IGYgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAoZiB2KVxufCBSaWdodCBfIGFzIGUgLT4gZVxuXG5sZXQgbWFwX3JpZ2h0IGYgPSBmdW5jdGlvblxufCBMZWZ0IF8gYXMgZSAtPiBlXG58IFJpZ2h0IHYgLT4gUmlnaHQgKGYgdilcblxubGV0IG1hcCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gTGVmdCAobGVmdCB2KVxufCBSaWdodCB2IC0+IFJpZ2h0IChyaWdodCB2KVxuXG5sZXQgZm9sZCB+bGVmdCB+cmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gbGVmdCB2XG58IFJpZ2h0IHYgLT4gcmlnaHQgdlxuXG5sZXQgaXRlciA9IGZvbGRcblxubGV0IGZvcl9hbGwgPSBmb2xkXG5cbmxldCBlcXVhbCB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyB8IFJpZ2h0IF8sIExlZnQgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+bGVmdCB+cmlnaHQgZTEgZTIgPSBtYXRjaCBlMSwgZTIgd2l0aFxufCBMZWZ0IHYxLCBMZWZ0IHYyIC0+IGxlZnQgdjEgdjJcbnwgUmlnaHQgdjEsIFJpZ2h0IHYyIC0+IHJpZ2h0IHYxIHYyXG58IExlZnQgXywgUmlnaHQgXyAtPiAoLTEpXG58IFJpZ2h0IF8sIExlZnQgXyAtPiAxXG4iLCIoKiBAY29uZmlndXJlX2lucHV0QCAqKVxuIzMgXCJzeXMubWwuaW5cIlxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGJhY2tlbmRfdHlwZSA9XG4gIHwgTmF0aXZlXG4gIHwgQnl0ZWNvZGVcbiAgfCBPdGhlciBvZiBzdHJpbmdcbigqIFN5c3RlbSBpbnRlcmZhY2UgKilcblxuZXh0ZXJuYWwgZ2V0X2NvbmZpZzogdW5pdCAtPiBzdHJpbmcgKiBpbnQgKiBib29sID0gXCJjYW1sX3N5c19nZXRfY29uZmlnXCJcbmV4dGVybmFsIGdldF9leGVjdXRhYmxlX25hbWUgOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lXCJcbmV4dGVybmFsIGFyZ3YgOiBzdHJpbmcgYXJyYXkgPSBcIiVzeXNfYXJndlwiXG5leHRlcm5hbCBiaWdfZW5kaWFuIDogdW5pdCAtPiBib29sID0gXCIlYmlnX2VuZGlhblwiXG5leHRlcm5hbCB3b3JkX3NpemUgOiB1bml0IC0+IGludCA9IFwiJXdvcmRfc2l6ZVwiXG5leHRlcm5hbCBpbnRfc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIlaW50X3NpemVcIlxuZXh0ZXJuYWwgbWF4X3dvc2l6ZSA6IHVuaXQgLT4gaW50ID0gXCIlbWF4X3dvc2l6ZVwiXG5leHRlcm5hbCB1bml4IDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX3VuaXhcIlxuZXh0ZXJuYWwgd2luMzIgOiB1bml0IC0+IGJvb2wgPSBcIiVvc3R5cGVfd2luMzJcIlxuZXh0ZXJuYWwgY3lnd2luIDogdW5pdCAtPiBib29sID0gXCIlb3N0eXBlX2N5Z3dpblwiXG5leHRlcm5hbCBnZXRfYmFja2VuZF90eXBlIDogdW5pdCAtPiBiYWNrZW5kX3R5cGUgPSBcIiViYWNrZW5kX3R5cGVcIlxuXG5sZXQgZXhlY3V0YWJsZV9uYW1lID0gZ2V0X2V4ZWN1dGFibGVfbmFtZSgpXG5sZXQgKG9zX3R5cGUsIF8sIF8pID0gZ2V0X2NvbmZpZygpXG5sZXQgYmFja2VuZF90eXBlID0gZ2V0X2JhY2tlbmRfdHlwZSAoKVxubGV0IGJpZ19lbmRpYW4gPSBiaWdfZW5kaWFuICgpXG5sZXQgd29yZF9zaXplID0gd29yZF9zaXplICgpXG5sZXQgaW50X3NpemUgPSBpbnRfc2l6ZSAoKVxubGV0IHVuaXggPSB1bml4ICgpXG5sZXQgd2luMzIgPSB3aW4zMiAoKVxubGV0IGN5Z3dpbiA9IGN5Z3dpbiAoKVxubGV0IG1heF9hcnJheV9sZW5ndGggPSBtYXhfd29zaXplICgpXG5sZXQgbWF4X2Zsb2F0YXJyYXlfbGVuZ3RoID0gbWF4X2FycmF5X2xlbmd0aCAvICg2NCAvIHdvcmRfc2l6ZSlcbmxldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMVxuZXh0ZXJuYWwgcnVudGltZV92YXJpYW50IDogdW5pdCAtPiBzdHJpbmcgPSBcImNhbWxfcnVudGltZV92YXJpYW50XCJcbmV4dGVybmFsIHJ1bnRpbWVfcGFyYW1ldGVycyA6IHVuaXQgLT4gc3RyaW5nID0gXCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1wiXG5cbmV4dGVybmFsIGZpbGVfZXhpc3RzOiBzdHJpbmcgLT4gYm9vbCA9IFwiY2FtbF9zeXNfZmlsZV9leGlzdHNcIlxuZXh0ZXJuYWwgaXNfZGlyZWN0b3J5IDogc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3lzX2lzX2RpcmVjdG9yeVwiXG5leHRlcm5hbCByZW1vdmU6IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW1vdmVcIlxuZXh0ZXJuYWwgcmVuYW1lIDogc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX3N5c19yZW5hbWVcIlxuZXh0ZXJuYWwgZ2V0ZW52OiBzdHJpbmcgLT4gc3RyaW5nID0gXCJjYW1sX3N5c19nZXRlbnZcIlxuXG5sZXQgZ2V0ZW52X29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAoZ2V0ZW52IHMpXG4gIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuZXh0ZXJuYWwgY29tbWFuZDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcIlxuZXh0ZXJuYWwgdGltZTogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfc3lzX3RpbWVcIiBcImNhbWxfc3lzX3RpbWVfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjaGRpcjogc3RyaW5nIC0+IHVuaXQgPSBcImNhbWxfc3lzX2NoZGlyXCJcbmV4dGVybmFsIG1rZGlyOiBzdHJpbmcgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX21rZGlyXCJcbmV4dGVybmFsIHJtZGlyOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9zeXNfcm1kaXJcIlxuZXh0ZXJuYWwgZ2V0Y3dkOiB1bml0IC0+IHN0cmluZyA9IFwiY2FtbF9zeXNfZ2V0Y3dkXCJcbmV4dGVybmFsIHJlYWRkaXIgOiBzdHJpbmcgLT4gc3RyaW5nIGFycmF5ID0gXCJjYW1sX3N5c19yZWFkX2RpcmVjdG9yeVwiXG5cbmxldCBpbnRlcmFjdGl2ZSA9IHJlZiBmYWxzZVxuXG50eXBlIHNpZ25hbF9iZWhhdmlvciA9XG4gICAgU2lnbmFsX2RlZmF1bHRcbiAgfCBTaWduYWxfaWdub3JlXG4gIHwgU2lnbmFsX2hhbmRsZSBvZiAoaW50IC0+IHVuaXQpXG5cbmV4dGVybmFsIHNpZ25hbCA6IGludCAtPiBzaWduYWxfYmVoYXZpb3IgLT4gc2lnbmFsX2JlaGF2aW9yXG4gICAgICAgICAgICAgICAgPSBcImNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlclwiXG5cbmxldCBzZXRfc2lnbmFsIHNpZ19udW0gc2lnX2JlaCA9IGlnbm9yZShzaWduYWwgc2lnX251bSBzaWdfYmVoKVxuXG5sZXQgc2lnYWJydCA9IC0xXG5sZXQgc2lnYWxybSA9IC0yXG5sZXQgc2lnZnBlID0gLTNcbmxldCBzaWdodXAgPSAtNFxubGV0IHNpZ2lsbCA9IC01XG5sZXQgc2lnaW50ID0gLTZcbmxldCBzaWdraWxsID0gLTdcbmxldCBzaWdwaXBlID0gLThcbmxldCBzaWdxdWl0ID0gLTlcbmxldCBzaWdzZWd2ID0gLTEwXG5sZXQgc2lndGVybSA9IC0xMVxubGV0IHNpZ3VzcjEgPSAtMTJcbmxldCBzaWd1c3IyID0gLTEzXG5sZXQgc2lnY2hsZCA9IC0xNFxubGV0IHNpZ2NvbnQgPSAtMTVcbmxldCBzaWdzdG9wID0gLTE2XG5sZXQgc2lndHN0cCA9IC0xN1xubGV0IHNpZ3R0aW4gPSAtMThcbmxldCBzaWd0dG91ID0gLTE5XG5sZXQgc2lndnRhbHJtID0gLTIwXG5sZXQgc2lncHJvZiA9IC0yMVxubGV0IHNpZ2J1cyA9IC0yMlxubGV0IHNpZ3BvbGwgPSAtMjNcbmxldCBzaWdzeXMgPSAtMjRcbmxldCBzaWd0cmFwID0gLTI1XG5sZXQgc2lndXJnID0gLTI2XG5sZXQgc2lneGNwdSA9IC0yN1xubGV0IHNpZ3hmc3ogPSAtMjhcblxuZXhjZXB0aW9uIEJyZWFrXG5cbmxldCBjYXRjaF9icmVhayBvbiA9XG4gIGlmIG9uIHRoZW5cbiAgICBzZXRfc2lnbmFsIHNpZ2ludCAoU2lnbmFsX2hhbmRsZShmdW4gXyAtPiByYWlzZSBCcmVhaykpXG4gIGVsc2VcbiAgICBzZXRfc2lnbmFsIHNpZ2ludCBTaWduYWxfZGVmYXVsdFxuXG5cbmV4dGVybmFsIGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzOiBib29sIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcIlxuZXh0ZXJuYWwgcnVudGltZV93YXJuaW5nc19lbmFibGVkOiB1bml0IC0+IGJvb2wgPVxuICBcImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkXCJcblxuKCogVGhlIHZlcnNpb24gc3RyaW5nIGlzIGZvdW5kIGluIGZpbGUgLi4vVkVSU0lPTiAqKVxuXG5sZXQgb2NhbWxfdmVyc2lvbiA9IFwiQFZFUlNJT05AXCJcblxubGV0IGRldmVsb3BtZW50X3ZlcnNpb24gPSBAT0NBTUxfREVWRUxPUE1FTlRfVkVSU0lPTkBcblxudHlwZSBleHRyYV9wcmVmaXggPSBQbHVzIHwgVGlsZGVcblxudHlwZSBleHRyYV9pbmZvID0gZXh0cmFfcHJlZml4ICogc3RyaW5nXG5cbnR5cGUgb2NhbWxfcmVsZWFzZV9pbmZvID0ge1xuICBtYWpvciA6IGludDtcbiAgbWlub3IgOiBpbnQ7XG4gIHBhdGNobGV2ZWwgOiBpbnQ7XG4gIGV4dHJhIDogZXh0cmFfaW5mbyBvcHRpb25cbn1cblxubGV0IG9jYW1sX3JlbGVhc2UgPSB7XG4gIG1ham9yID0gQE9DQU1MX1ZFUlNJT05fTUFKT1JAO1xuICBtaW5vciA9IEBPQ0FNTF9WRVJTSU9OX01JTk9SQDtcbiAgcGF0Y2hsZXZlbCA9IEBPQ0FNTF9WRVJTSU9OX1BBVENITEVWRUxAO1xuICBleHRyYSA9IEBPQ0FNTF9SRUxFQVNFX0VYVFJBQFxufVxuXG4oKiBPcHRpbWl6YXRpb24gKilcblxuZXh0ZXJuYWwgb3BhcXVlX2lkZW50aXR5IDogJ2EgLT4gJ2EgPSBcIiVvcGFxdWVcIlxuXG5tb2R1bGUgSW1tZWRpYXRlNjQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UoSW1tZWRpYXRlIDogSW1tZWRpYXRlKShOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZSkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlNjRdXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcbiAgICBleHRlcm5hbCBtYWdpYyA6IF8gcmVwciAtPiB0IHJlcHIgPSBcIiVpZGVudGl0eVwiXG4gICAgbGV0IHJlcHIgPVxuICAgICAgaWYgd29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICBtYWdpYyBJbW1lZGlhdGVcbiAgICAgIGVsc2VcbiAgICAgICAgbWFnaWMgTm9uX2ltbWVkaWF0ZVxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcGVyYXRpb25zIG9uIGludGVybmFsIHJlcHJlc2VudGF0aW9ucyBvZiB2YWx1ZXMgKilcblxudHlwZSB0XG5cbnR5cGUgcmF3X2RhdGEgPSBuYXRpdmVpbnRcblxuZXh0ZXJuYWwgcmVwciA6ICdhIC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBvYmogOiB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbWFnaWMgOiAnYSAtPiAnYiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGlzX2ludCA6IHQgLT4gYm9vbCA9IFwiJW9ial9pc19pbnRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gaXNfYmxvY2sgYSA9IG5vdCAoaXNfaW50IGEpXG5leHRlcm5hbCB0YWcgOiB0IC0+IGludCA9IFwiY2FtbF9vYmpfdGFnXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpemUgOiB0IC0+IGludCA9IFwiJW9ial9zaXplXCJcbmV4dGVybmFsIHJlYWNoYWJsZV93b3JkcyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial9yZWFjaGFibGVfd29yZHNcIlxuZXh0ZXJuYWwgZmllbGQgOiB0IC0+IGludCAtPiB0ID0gXCIlb2JqX2ZpZWxkXCJcbmV4dGVybmFsIHNldF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdW5pdCA9IFwiJW9ial9zZXRfZmllbGRcIlxuZXh0ZXJuYWwgY29tcGFyZV9hbmRfc3dhcF9maWVsZCA6IHQgLT4gaW50IC0+IHQgLT4gdCAtPiBib29sXG4gID0gXCJjYW1sX29ial9jb21wYXJlX2FuZF9zd2FwXCJcbmV4dGVybmFsIGlzX3NoYXJlZCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9vYmpfaXNfc2hhcmVkXCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfZ2V0IDogZmxvYXRhcnJheSAtPiBpbnQgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRhcnJheV9nZXRcIlxuZXh0ZXJuYWwgZmxvYXRhcnJheV9zZXQgOlxuICAgIGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcImNhbWxfZmxvYXRhcnJheV9zZXRcIlxubGV0IFtAaW5saW5lIGFsd2F5c10gZG91YmxlX2ZpZWxkIHggaSA9IGZsb2F0YXJyYXlfZ2V0IChvYmogeCA6IGZsb2F0YXJyYXkpIGlcbmxldCBbQGlubGluZSBhbHdheXNdIHNldF9kb3VibGVfZmllbGQgeCBpIHYgPVxuICBmbG9hdGFycmF5X3NldCAob2JqIHggOiBmbG9hdGFycmF5KSBpIHZcbmV4dGVybmFsIHJhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhID0gXCJjYW1sX29ial9yYXdfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X3Jhd19maWVsZCA6IHQgLT4gaW50IC0+IHJhd19kYXRhIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkXCJcblxuZXh0ZXJuYWwgbmV3X2Jsb2NrIDogaW50IC0+IGludCAtPiB0ID0gXCJjYW1sX29ial9ibG9ja1wiXG5leHRlcm5hbCBkdXAgOiB0IC0+IHQgPSBcImNhbWxfb2JqX2R1cFwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnID0gMFxubGV0IGxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDI0M1xuXG5sZXQgZm9yY2luZ190YWcgPSAyNDRcbmxldCBjb250X3RhZyA9IDI0NVxubGV0IGxhenlfdGFnID0gMjQ2XG5sZXQgY2xvc3VyZV90YWcgPSAyNDdcbmxldCBvYmplY3RfdGFnID0gMjQ4XG5sZXQgaW5maXhfdGFnID0gMjQ5XG5sZXQgZm9yd2FyZF90YWcgPSAyNTBcblxubGV0IG5vX3NjYW5fdGFnID0gMjUxXG5cbmxldCBhYnN0cmFjdF90YWcgPSAyNTFcbmxldCBzdHJpbmdfdGFnID0gMjUyXG5sZXQgZG91YmxlX3RhZyA9IDI1M1xubGV0IGRvdWJsZV9hcnJheV90YWcgPSAyNTRcbmxldCBjdXN0b21fdGFnID0gMjU1XG5cblxubGV0IGludF90YWcgPSAxMDAwXG5sZXQgb3V0X29mX2hlYXBfdGFnID0gMTAwMVxubGV0IHVuYWxpZ25lZF90YWcgPSAxMDAyXG5cbm1vZHVsZSBDbG9zdXJlID0gc3RydWN0XG4gIHR5cGUgaW5mbyA9IHtcbiAgICBhcml0eTogaW50O1xuICAgIHN0YXJ0X2VudjogaW50O1xuICB9XG5cbiAgbGV0IGluZm9fb2ZfcmF3IChpbmZvIDogbmF0aXZlaW50KSA9XG4gICAgbGV0IG9wZW4gTmF0aXZlaW50IGluXG4gICAgbGV0IGFyaXR5ID1cbiAgICAgICgqIHNpZ25lZDogbmVnYXRpdmUgZm9yIHR1cGxlZCBmdW5jdGlvbnMgKilcbiAgICAgIGlmIFN5cy53b3JkX3NpemUgPSA2NCB0aGVuXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyA1NilcbiAgICAgIGVsc2VcbiAgICAgICAgdG9faW50IChzaGlmdF9yaWdodCBpbmZvIDI0KVxuICAgIGluXG4gICAgbGV0IHN0YXJ0X2VudiA9XG4gICAgICAoKiBzdGFydF9lbnYgaXMgdW5zaWduZWQsIGJ1dCB3ZSBrbm93IGl0IGNhbiBhbHdheXMgZml0IGFuIE9DYW1sXG4gICAgICAgICBpbnRlZ2VyIHNvIHdlIHVzZSBbdG9faW50XSBpbnN0ZWFkIG9mIFt1bnNpZ25lZF90b19pbnRdLiAqKVxuICAgICAgdG9faW50IChzaGlmdF9yaWdodF9sb2dpY2FsIChzaGlmdF9sZWZ0IGluZm8gOCkgOSkgaW5cbiAgICB7IGFyaXR5OyBzdGFydF9lbnYgfVxuXG4gICgqIG5vdGU6IHdlIGV4cGVjdCBhIGNsb3N1cmUsIG5vdCBhbiBpbmZpeCBwb2ludGVyICopXG4gIGxldCBpbmZvIChvYmogOiB0KSA9XG4gICAgYXNzZXJ0ICh0YWcgb2JqID0gY2xvc3VyZV90YWcpO1xuICAgIGluZm9fb2ZfcmF3IChyYXdfZmllbGQgb2JqIDEpXG5lbmRcblxubW9kdWxlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIGxldCBvZl92YWwgeCA9XG4gICAgbGV0IHggPSByZXByIHggaW5cbiAgICBsZXQgc2xvdCA9XG4gICAgICBpZiAoaXNfYmxvY2sgeCkgJiYgKHRhZyB4KSA8PiBvYmplY3RfdGFnICYmIChzaXplIHgpID49IDEgdGhlbiBmaWVsZCB4IDBcbiAgICAgIGVsc2UgeFxuICAgIGluXG4gICAgbGV0IG5hbWUgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHNsb3QpICYmICh0YWcgc2xvdCkgPSBvYmplY3RfdGFnIHRoZW4gZmllbGQgc2xvdCAwXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG4gICAgaW5cbiAgICAgIGlmICh0YWcgbmFtZSkgPSBzdHJpbmdfdGFnIHRoZW4gKG9iaiBzbG90IDogdClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgXCJPYmouZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCJcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBuYW1lIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDApIDogc3RyaW5nKVxuXG4gIGxldCBbQGlubGluZSBhbHdheXNdIGlkIChzbG90IDogdCkgPVxuICAgIChvYmogKGZpZWxkIChyZXByIHNsb3QpIDEpIDogaW50KVxuZW5kXG5cbm1vZHVsZSBFcGhlbWVyb24gPSBzdHJ1Y3RcbiAgdHlwZSBvYmpfdCA9IHRcblxuICB0eXBlIHQgKCoqIGVwaGVtZXJvbiAqKVxuXG4gICAoKiogVG8gY2hhbmdlIGluIHN5bmMgd2l0aCB3ZWFrLmggKilcbiAgbGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuICBsZXQgbWF4X2VwaGVfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGggLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiB0ID0gXCJjYW1sX2VwaGVfY3JlYXRlXCJcbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IG1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJPYmouRXBoZW1lcm9uLmNyZWF0ZVwiO1xuICAgIGNyZWF0ZSBsXG5cbiAgbGV0IGxlbmd0aCB4ID0gc2l6ZShyZXByIHgpIC0gYWRkaXRpb25hbF92YWx1ZXNcblxuICBsZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gICAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBtc2dcblxuICBleHRlcm5hbCBnZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfa2V5XCJcbiAgbGV0IGdldF9rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlcIjtcbiAgICBnZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGdldF9rZXlfY29weTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleV9jb3B5XCJcbiAgbGV0IGdldF9rZXlfY29weSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uZ2V0X2tleV9jb3B5XCI7XG4gICAgZ2V0X2tleV9jb3B5IGUgb1xuXG4gIGV4dGVybmFsIHNldF9rZXk6IHQgLT4gaW50IC0+IG9ial90IC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbiAgbGV0IHNldF9rZXkgZSBvIHggPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uc2V0X2tleVwiO1xuICAgIHNldF9rZXkgZSBvIHhcblxuICBleHRlcm5hbCB1bnNldF9rZXk6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9rZXlcIlxuICBsZXQgdW5zZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi51bnNldF9rZXlcIjtcbiAgICB1bnNldF9rZXkgZSBvXG5cbiAgZXh0ZXJuYWwgY2hlY2tfa2V5OiB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfa2V5XCJcbiAgbGV0IGNoZWNrX2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24uY2hlY2tfa2V5XCI7XG4gICAgY2hlY2tfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGJsaXRfa2V5IDogdCAtPiBpbnQgLT4gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9lcGhlX2JsaXRfa2V5XCJcblxuICBsZXQgYmxpdF9rZXkgZTEgbzEgZTIgbzIgbCA9XG4gICAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICAgIHx8IG8yIDwgMCB8fCBvMiA+IGxlbmd0aCBlMiAtIGxcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5ibGl0X2tleVwiXG4gICAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0X2tleSBlMSBvMSBlMiBvMiBsXG5cbiAgZXh0ZXJuYWwgZ2V0X2RhdGE6IHQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2RhdGFcIlxuICBleHRlcm5hbCBnZXRfZGF0YV9jb3B5OiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHlcIlxuICBleHRlcm5hbCBzZXRfZGF0YTogdCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2RhdGFcIlxuICBleHRlcm5hbCB1bnNldF9kYXRhOiB0IC0+IHVuaXQgPSBcImNhbWxfZXBoZV91bnNldF9kYXRhXCJcbiAgZXh0ZXJuYWwgY2hlY2tfZGF0YTogdCAtPiBib29sID0gXCJjYW1sX2VwaGVfY2hlY2tfZGF0YVwiXG4gIGV4dGVybmFsIGJsaXRfZGF0YSA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfYmxpdF9kYXRhXCJcblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU3RlcGhlbiBEb2xhbiwgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3LTIwMTggVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgbWFrZSA6ICdhIC0+ICdhIHQgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+ICdhID0gXCIlYXRvbWljX2xvYWRcIlxuZXh0ZXJuYWwgZXhjaGFuZ2UgOiAnYSB0IC0+ICdhIC0+ICdhID0gXCIlYXRvbWljX2V4Y2hhbmdlXCJcbmV4dGVybmFsIGNvbXBhcmVfYW5kX3NldCA6ICdhIHQgLT4gJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWF0b21pY19jYXNcIlxuZXh0ZXJuYWwgZmV0Y2hfYW5kX2FkZCA6IGludCB0IC0+IGludCAtPiBpbnQgPSBcIiVhdG9taWNfZmV0Y2hfYWRkXCJcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgc2V0IHIgeCA9IGlnbm9yZSAoZXhjaGFuZ2UgciB4KVxubGV0IGluY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByIDEpXG5sZXQgZGVjciByID0gaWdub3JlIChmZXRjaF9hbmRfYWRkIHIgKC0xKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbigqIFt1cGRhdGVfdG9fZm9yY2luZyBibGtdIHRyaWVzIHRvIHVwZGF0ZSBhIFtibGtdIHdpdGggW2xhenlfdGFnXSB0b1xuICAgW2ZvcmNpbmdfdGFnXSB1c2luZyBjb21wYXJlLWFuZC1zd2FwIChDQVMpLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGUgaGVhZGVyIHdvcmQgYnkgYSBjb25jdXJyZW50IEdDIHRocmVhZC4gUmV0dXJucyBbMF0gaWYgdGhlXG4gICBDQVMgaXMgc3VjY2Vzc2Z1bC4gSWYgdGhlIENBUyBmYWlscywgdGhlbiB0aGUgdGFnIHdhcyBvYnNlcnZlZCB0byBiZVxuICAgc29tZXRoaW5nIG90aGVyIHRoYW4gW2xhenlfdGFnXSBkdWUgdG8gYSBjb25jdXJyZW50IG11dGF0b3IuIEluIHRoaXMgY2FzZSxcbiAgIHRoZSBmdW5jdGlvbiByZXR1cm5zIFsxXS4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3JjaW5nIDogT2JqLnQgLT4gaW50ID1cbiAgXCJjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcIiBbQEBub2FsbG9jXVxuXG4oKiBbcmVzZXRfdG9fbGF6eSBibGtdIGV4cGVjdHMgW2Jsa10gdG8gYmUgYSBsYXp5IG9iamVjdCB3aXRoIFtPYmouZm9yY2luZ190YWddXG4gICBhbmQgdXBkYXRlcyB0aGUgdGFnIHRvIFtPYmoubGF6eV90YWddLCB0YWtpbmcgY2FyZSB0byBoYW5kbGUgY29uY3VycmVudFxuICAgbWFya2luZyBvZiB0aGlzIG9iamVjdCdzIGhlYWRlciBieSBhIGNvbmN1cnJlbnQgR0MgdGhyZWFkLiAqKVxuZXh0ZXJuYWwgcmVzZXRfdG9fbGF6eSA6IE9iai50IC0+IHVuaXQgPSBcImNhbWxfbGF6eV9yZXNldF90b19sYXp5XCIgW0BAbm9hbGxvY11cblxuKCogW3VwZGF0ZV90b19mb3J3YXJkIGJsa10gZXhwZWN0cyBbYmxrXSB0byBiZSBhIGxhenkgb2JqZWN0IHdpdGhcbiAgIFtPYmouZm9yY2luZ190YWddIGFuZCB1cGRhdGVzIHRoZSB0YWcgdG8gW09iai5mb3J3YXJkX3RhZ10sIHRha2luZyBjYXJlIHRvXG4gICBoYW5kbGUgY29uY3VycmVudCBtYXJraW5nIG9mIHRoaXMgb2JqZWN0J3MgaGVhZGVyIGJ5IGEgY29uY3VycmVudCBHQyB0aHJlYWQuXG4gKilcbmV4dGVybmFsIHVwZGF0ZV90b19mb3J3YXJkIDogT2JqLnQgLT4gdW5pdCA9XG4gIFwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkXCIgW0BAbm9hbGxvY11cblxuKCogQXNzdW1lcyBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGZvcmNpbmcgKilcbmxldCBkb19mb3JjZV9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICB0cnlcbiAgICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciByZXN1bHQpO1xuICAgIHVwZGF0ZV90b19mb3J3YXJkIGI7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgYiAwIChPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIGUpKTtcbiAgICByZXNldF90b19sYXp5IGI7XG4gICAgcmFpc2UgZVxuXG4oKiBBc3N1bWVzIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgZm9yY2luZyAqKVxubGV0IGRvX2ZvcmNlX3ZhbF9ibG9jayBibGsgPVxuICBsZXQgYiA9IE9iai5yZXByIGJsayBpblxuICBsZXQgY2xvc3VyZSA9IChPYmoub2JqIChPYmouZmllbGQgYiAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCBiIDAgKE9iai5yZXByICgpKTsgKCogUmVsZWFzZSB0aGUgY2xvc3VyZSAqKVxuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBPYmouc2V0X2ZpZWxkIGIgMCAoT2JqLnJlcHIgcmVzdWx0KTtcbiAgdXBkYXRlX3RvX2ZvcndhcmQgYjtcbiAgcmVzdWx0XG5cbigqIENhbGxlZCBieSBbZm9yY2VfZ2VuXSAqKVxubGV0IGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgKCogV2UgZXhwZWN0IHRoZSB0YWcgdG8gYmUgW2xhenlfdGFnXSwgYnV0IG1heSBiZSBvdGhlciB0YWdzIGR1ZSB0b1xuICAgICBjb25jdXJyZW50IGZvcmNpbmcgb2YgbGF6eSB2YWx1ZXMuICopXG4gIG1hdGNoIHVwZGF0ZV90b19mb3JjaW5nIChPYmoucmVwciBibGspIHdpdGhcbiAgfCAwIHdoZW4gb25seV92YWwgLT4gZG9fZm9yY2VfdmFsX2Jsb2NrIGJsa1xuICB8IDAgLT4gZG9fZm9yY2VfYmxvY2sgYmxrXG4gIHwgXyAtPiByYWlzZSBVbmRlZmluZWRcblxuKCogdXNlZCBpbiB0aGUgJWxhenlfZm9yY2UgcHJpbWl0aXZlICopXG5sZXQgZm9yY2VfbGF6eV9ibG9jayBibGsgPSBmb3JjZV9nZW5fbGF6eV9ibG9jayB+b25seV92YWw6ZmFsc2UgYmxrXG5cbigqIFtmb3JjZV9nZW4gfm9ubHlfdmFsOmZhbHNlXSBpcyBub3QgdXNlZCwgc2luY2UgW0xhenkuZm9yY2VdIGlzXG4gICBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZSB3aG9zZSBjb2RlIGlubGluZXMgdGhlIHRhZyB0ZXN0cyBvZiBpdHNcbiAgIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmwgaW5zdHJ1bWVudGF0aW9uIGlzIHR1cm5lZCBvbi4gKilcbmxldCBmb3JjZV9nZW4gfm9ubHlfdmFsIChsenYgOiAnYXJnIGxhenlfdCkgPVxuICAoKiBVc2luZyBbU3lzLm9wYXF1ZV9pZGVudGl0eV0gcHJldmVudHMgdHdvIHBvdGVudGlhbCBwcm9ibGVtczpcbiAgICAgLSBJZiB0aGUgdmFsdWUgaXMga25vd24gdG8gaGF2ZSBGb3J3YXJkX3RhZywgdGhlbiBpdCBjb3VsZCBoYXZlIGJlZW5cbiAgICAgICBzaG9ydGN1dCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKS4gVGhpcyBpcyBub3QgYW4gaXNzdWUgaGVyZSBhdCB0aGUgbW9tZW50IHNpbmNlXG4gICAgICAgW09iai50YWddIGlzIG5vdCBzaW1wbGlmaWVkIGJ5IHRoZSBjb21waWxlciwgYW5kIEdQUiM3MTMgYWxzb1xuICAgICAgIGVuc3VyZXMgdGhhdCBubyB2YWx1ZSB3aWxsIGJlIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcuXG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGJlIGltbXV0YWJsZSwgdGhlbiBpZiB0aGUgY29tcGlsZXJcbiAgICAgICBjYW5ub3QgcHJvdmUgdGhhdCB0aGUgbGFzdCBicmFuY2ggaXMgbm90IHRha2VuIGl0IHdpbGwgaXNzdWUgYVxuICAgICAgIHdhcm5pbmcgNTkgKG1vZGlmaWNhdGlvbiBvZiBhbiBpbW11dGFibGUgdmFsdWUpICopXG4gIGxldCBsenYgPSBTeXMub3BhcXVlX2lkZW50aXR5IGx6diBpblxuICBsZXQgeCA9IE9iai5yZXByIGx6diBpblxuICAoKiBTVEFSVCBubyBzYWZlIHBvaW50cy4gSWYgYSBHQyBvY2N1cnMgaGVyZSwgdGhlbiB0aGUgb2JqZWN0IFt4XSBtYXkgYmVcbiAgICAgc2hvcnQtY2lyY3VpdGVkLCBhbmQgZ2V0dGluZyB0aGUgZmlyc3QgZmllbGQgb2YgW3hdIHdvdWxkIGdldCB1cyB0aGUgd3JvbmdcbiAgICAgdmFsdWUuIEx1Y2tpbHksIHRoZSBjb21waWxlciBkb2VzIG5vdCBpbnNlcnQgR0Mgc2FmZSBwb2ludHMgYXQgdGhpcyBwbGFjZSxcbiAgICAgc28gaXQgaXMgb2suICopXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpXG4gICgqIEVORCBubyBzYWZlIHBvaW50cyAqKVxuICBlbHNlIGlmIHQgPSBPYmouZm9yY2luZ190YWcgdGhlbiByYWlzZSBVbmRlZmluZWRcbiAgZWxzZSBpZiB0IDw+IE9iai5sYXp5X3RhZyB0aGVuIChPYmoub2JqIHggOiAnYXJnKVxuICBlbHNlIGZvcmNlX2dlbl9sYXp5X2Jsb2NrIH5vbmx5X3ZhbCBsenZcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtMYXp5XTogZGVmZXJyZWQgY29tcHV0YXRpb25zICopXG5cblxuKCpcbiAgIFdBUk5JTkc6IHNvbWUgcHVycGxlIG1hZ2ljIGlzIGdvaW5nIG9uIGhlcmUuICBEbyBub3QgdGFrZSB0aGlzIGZpbGVcbiAgIGFzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHByb2dyYW0gaW4gT0NhbWwuXG4qKVxuXG5cbigqIFdlIG1ha2UgdXNlIG9mIHR3byBzcGVjaWFsIHRhZ3MgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWU6XG4gICBbbGF6eV90YWddIGFuZCBbZm9yd2FyZF90YWddLlxuXG4gICBBIHZhbHVlIG9mIHR5cGUgWydhIExhenkudF0gY2FuIGJlIG9uZSBvZiB0aHJlZSB0aGluZ3M6XG4gICAxLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbbGF6eV90YWddLiAgSXRzIGZpZWxkIGlzIGEgY2xvc3VyZSBvZlxuICAgICAgdHlwZSBbdW5pdCAtPiAnYV0gdGhhdCBjb21wdXRlcyB0aGUgdmFsdWUuXG4gICAyLiBBIGJsb2NrIG9mIHNpemUgMSB3aXRoIHRhZyBbZm9yd2FyZF90YWddLiAgSXRzIGZpZWxkIGlzIHRoZSB2YWx1ZVxuICAgICAgb2YgdHlwZSBbJ2FdIHRoYXQgd2FzIGNvbXB1dGVkLlxuICAgMy4gQW55dGhpbmcgZWxzZSBleGNlcHQgYSBmbG9hdC4gIFRoaXMgaGFzIHR5cGUgWydhXSBhbmQgaXMgdGhlIHZhbHVlXG4gICAgICB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIEV4Y2VwdGlvbnMgYXJlIHN0b3JlZCBpbiBmb3JtYXQgKDEpLlxuICAgVGhlIEdDIHdpbGwgbWFnaWNhbGx5IGNoYW5nZSB0aGluZ3MgZnJvbSAoMikgdG8gKDMpIGFjY29yZGluZyB0byBpdHNcbiAgIGZhbmN5LlxuXG4gICBJZiBPQ2FtbCB3YXMgY29uZmlndXJlZCB3aXRoIHRoZSAtZmxhdC1mbG9hdC1hcnJheSBvcHRpb24gKHdoaWNoIGlzXG4gICBjdXJyZW50bHkgdGhlIGRlZmF1bHQpLCB0aGUgZm9sbG93aW5nIGlzIGFsc28gdHJ1ZTpcbiAgIFdlIGNhbm5vdCB1c2UgcmVwcmVzZW50YXRpb24gKDMpIGZvciBhIFtmbG9hdCBMYXp5LnRdIGJlY2F1c2VcbiAgIFtjYW1sX21ha2VfYXJyYXldIGFzc3VtZXMgdGhhdCBvbmx5IGEgW2Zsb2F0XSB2YWx1ZSBjYW4gaGF2ZSB0YWdcbiAgIFtEb3VibGVfdGFnXS5cblxuICAgV2UgaGF2ZSB0byB1c2UgdGhlIGJ1aWx0LWluIHR5cGUgY29uc3RydWN0b3IgW2xhenlfdF0gdG9cbiAgIGxldCB0aGUgY29tcGlsZXIgaW1wbGVtZW50IHRoZSBzcGVjaWFsIHR5cGluZyBhbmQgY29tcGlsYXRpb25cbiAgIHJ1bGVzIGZvciB0aGUgW2xhenldIGtleXdvcmQuXG4qKVxuXG50eXBlICdhIHQgPSAnYSBDYW1saW50ZXJuYWxMYXp5LnRcblxuZXhjZXB0aW9uIFVuZGVmaW5lZCA9IENhbWxpbnRlcm5hbExhenkuVW5kZWZpbmVkXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuZXh0ZXJuYWwgZm9yY2UgOiAnYSB0IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5cbmxldCBmb3JjZV92YWwgbCA9IENhbWxpbnRlcm5hbExhenkuZm9yY2VfZ2VuIH5vbmx5X3ZhbDp0cnVlIGxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHxcbiAgICAgdCA9IE9iai5mb3JjaW5nX3RhZyB8fCB0ID0gT2JqLmRvdWJsZV90YWcgdGhlbiBiZWdpblxuICAgIG1ha2VfZm9yd2FyZCB2XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgKE9iai5tYWdpYyB2IDogJ2FyZyB0KVxuICBlbmRcblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IG1hcCBmIHggPVxuICBsYXp5IChmIChmb3JjZSB4KSlcblxubGV0IG1hcF92YWwgZiB4ID1cbiAgaWYgaXNfdmFsIHhcbiAgdGhlbiBmcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjYyBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICAgIHwgTmlsIC0+IGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0IGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgZm9sZF9sZWZ0IGYgYWNjIG5leHRcblxubGV0IHJlYyBpdGVyIGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBpdGVyIGYgbmV4dFxuXG5sZXQgcmVjIHVuZm9sZCBmIHUgKCkgPVxuICBtYXRjaCBmIHUgd2l0aFxuICB8IE5vbmUgLT4gTmlsXG4gIHwgU29tZSAoeCwgdScpIC0+IENvbnMgKHgsIHVuZm9sZCBmIHUnKVxuXG5sZXQgaXNfZW1wdHkgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zIChfLCBfKSAtPlxuICAgICAgZmFsc2VcblxubGV0IHVuY29ucyB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgU29tZSAoeCwgeHMpXG4gIHwgTmlsIC0+XG4gICAgICBOb25lXG5cblxuXG5sZXQgcmVjIGxlbmd0aF9hdXggYWNjdSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGVuZ3RoX2F1eCAoYWNjdSArIDEpIHhzXG5cbmxldFtAaW5saW5lXSBsZW5ndGggeHMgPVxuICBsZW5ndGhfYXV4IDAgeHNcblxubGV0IHJlYyBpdGVyaV9hdXggZiBpIHhzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgZiBpIHg7XG4gICAgICBpdGVyaV9hdXggZiAoaSsxKSB4c1xuXG5sZXRbQGlubGluZV0gaXRlcmkgZiB4cyA9XG4gIGl0ZXJpX2F1eCBmIDAgeHNcblxubGV0IHJlYyBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgaSB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgaSB4IGluXG4gICAgICBmb2xkX2xlZnRpX2F1eCBmIGFjY3UgKGkrMSkgeHNcblxubGV0W0BpbmxpbmVdIGZvbGRfbGVmdGkgZiBhY2N1IHhzID1cbiAgZm9sZF9sZWZ0aV9hdXggZiBhY2N1IDAgeHNcblxubGV0IHJlYyBmb3JfYWxsIHAgeHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCAmJiBmb3JfYWxsIHAgeHNcblxubGV0IHJlYyBleGlzdHMgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIHAgeCB8fCBleGlzdHMgcCB4c1xuXG5sZXQgcmVjIGZpbmQgcCB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gU29tZSB4IGVsc2UgZmluZCBwIHhzXG5cbmxldCByZWMgZmluZF9tYXAgZiB4cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTm9uZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGZpbmRfbWFwIGYgeHNcbiAgICAgIHwgU29tZSBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc3VsdFxuXG4oKiBbaXRlcjJdLCBbZm9sZF9sZWZ0Ml0sIFtmb3JfYWxsMl0sIFtleGlzdHMyXSwgW21hcDJdLCBbemlwXSB3b3JrIGFsc28gaW5cbiAgIHRoZSBjYXNlIHdoZXJlIHRoZSB0d28gc2VxdWVuY2VzIGhhdmUgZGlmZmVyZW50IGxlbmd0aHMuIFRoZXkgc3RvcCBhcyBzb29uXG4gICBhcyBvbmUgc2VxdWVuY2UgaXMgZXhoYXVzdGVkLiBUaGVpciBiZWhhdmlvciBpcyBzbGlnaHRseSBhc3ltbWV0cmljOiB3aGVuXG4gICBbeHNdIGlzIGVtcHR5LCB0aGV5IGRvIG5vdCBmb3JjZSBbeXNdOyBob3dldmVyLCB3aGVuIFt5c10gaXMgZW1wdHksIFt4c10gaXNcbiAgIGZvcmNlZCwgZXZlbiB0aG91Z2ggdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24gYXBwbGljYXRpb24gW3hzKCldIHR1cm5zIG91dFxuICAgdG8gYmUgdXNlbGVzcy4gKilcblxubGV0IHJlYyBpdGVyMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICAoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgICgpXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5O1xuICAgICAgICAgIGl0ZXIyIGYgeHMgeXNcblxubGV0IHJlYyBmb2xkX2xlZnQyIGYgYWNjdSB4cyB5cyA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgYWNjdVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGFjY3VcbiAgICAgIHwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgeCB5IGluXG4gICAgICAgICAgZm9sZF9sZWZ0MiBmIGFjY3UgeHMgeXNcblxubGV0IHJlYyBmb3JfYWxsMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgICAgICBmIHggeSAmJiBmb3JfYWxsMiBmIHhzIHlzXG5cbmxldCByZWMgZXhpc3RzMiBmIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBmYWxzZVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggeXMoKSB3aXRoXG4gICAgICB8IE5pbCAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIGYgeCB5IHx8IGV4aXN0czIgZiB4cyB5c1xuXG5sZXQgcmVjIGVxdWFsIGVxIHhzIHlzID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gIHwgTmlsLCBOaWwgLT5cbiAgICAgIHRydWVcbiAgfCBDb25zICh4LCB4cyksIENvbnMgKHksIHlzKSAtPlxuICAgICAgZXEgeCB5ICYmIGVxdWFsIGVxIHhzIHlzXG4gIHwgTmlsLCBDb25zIChfLCBfKVxuICB8IENvbnMgKF8sIF8pLCBOaWwgLT5cbiAgICAgIGZhbHNlXG5cbmxldCByZWMgY29tcGFyZSBjbXAgeHMgeXMgPVxuICBtYXRjaCB4cygpLCB5cygpIHdpdGhcbiAgfCBOaWwsIE5pbCAtPlxuICAgICAgMFxuICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICBsZXQgYyA9IGNtcCB4IHkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZSBjb21wYXJlIGNtcCB4cyB5c1xuICB8IE5pbCwgQ29ucyAoXywgXykgLT5cbiAgICAgIC0xXG4gIHwgQ29ucyAoXywgXyksIE5pbCAtPlxuICAgICAgKzFcblxuXG5cbigqIFtpbml0X2F1eCBmIGkgal0gaXMgdGhlIHNlcXVlbmNlIFtmIGksIC4uLiwgZiAoai0xKV0uICopXG5cbmxldCByZWMgaW5pdF9hdXggZiBpIGogKCkgPVxuICBpZiBpIDwgaiB0aGVuIGJlZ2luXG4gICAgQ29ucyAoZiBpLCBpbml0X2F1eCBmIChpICsgMSkgailcbiAgZW5kXG4gIGVsc2VcbiAgICBOaWxcblxubGV0IGluaXQgbiBmID1cbiAgaWYgbiA8IDAgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU2VxLmluaXRcIlxuICBlbHNlXG4gICAgaW5pdF9hdXggZiAwIG5cblxubGV0IHJlYyByZXBlYXQgeCAoKSA9XG4gIENvbnMgKHgsIHJlcGVhdCB4KVxuXG5sZXQgcmVjIGZvcmV2ZXIgZiAoKSA9XG4gIENvbnMgKGYoKSwgZm9yZXZlciBmKVxuXG4oKiBUaGlzIHByZWxpbWluYXJ5IGRlZmluaXRpb24gb2YgW2N5Y2xlXSByZXF1aXJlcyB0aGUgc2VxdWVuY2UgW3hzXVxuICAgdG8gYmUgbm9uZW1wdHkuIEFwcGx5aW5nIGl0IHRvIGFuIGVtcHR5IHNlcXVlbmNlIHdvdWxkIHByb2R1Y2UgYVxuICAgc2VxdWVuY2UgdGhhdCBkaXZlcmdlcyB3aGVuIGl0IGlzIGZvcmNlZC4gKilcblxubGV0IHJlYyBjeWNsZV9ub25lbXB0eSB4cyAoKSA9XG4gIGFwcGVuZCB4cyAoY3ljbGVfbm9uZW1wdHkgeHMpICgpXG5cbigqIFtjeWNsZSB4c10gY2hlY2tzIHdoZXRoZXIgW3hzXSBpcyBlbXB0eSBhbmQsIGlmIHNvLCByZXR1cm5zIGFuIGVtcHR5XG4gICBzZXF1ZW5jZS4gT3RoZXJ3aXNlLCBbY3ljbGUgeHNdIHByb2R1Y2VzIG9uZSBjb3B5IG9mIFt4c10gZm9sbG93ZWRcbiAgIHdpdGggdGhlIGluZmluaXRlIHNlcXVlbmNlIFtjeWNsZV9ub25lbXB0eSB4c10uIFRodXMsIHRoZSBub25lbXB0aW5lc3NcbiAgIGNoZWNrIGlzIHBlcmZvcm1lZCBqdXN0IG9uY2UuICopXG5cbmxldCBjeWNsZSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMnKSAtPlxuICAgICAgQ29ucyAoeCwgYXBwZW5kIHhzJyAoY3ljbGVfbm9uZW1wdHkgeHMpKVxuXG4oKiBbaXRlcmF0ZTEgZiB4XSBpcyB0aGUgc2VxdWVuY2UgW2YgeCwgZiAoZiB4KSwgLi4uXS5cbiAgIEl0IGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKGl0ZXJhdGUgZiB4KV0uXG4gICBbaXRlcmF0ZTFdIGlzIHVzZWQgYXMgYSBidWlsZGluZyBibG9jayBpbiB0aGUgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0uICopXG5cbmxldCByZWMgaXRlcmF0ZTEgZiB4ICgpID1cbiAgbGV0IHkgPSBmIHggaW5cbiAgQ29ucyAoeSwgaXRlcmF0ZTEgZiB5KVxuXG4oKiBbaXRlcmF0ZSBmIHhdIGlzIHRoZSBzZXF1ZW5jZSBbeCwgZiB4LCAuLi5dLiAqKVxuXG4oKiBUaGUgcmVhc29uIHdoeSB3ZSBnaXZlIHRoaXMgc2xpZ2h0bHkgaW5kaXJlY3QgZGVmaW5pdGlvbiBvZiBbaXRlcmF0ZV0sXG4gICBhcyBvcHBvc2VkIHRvIHRoZSBtb3JlIG5haXZlIGRlZmluaXRpb24gdGhhdCBtYXkgY29tZSB0byBtaW5kLCBpcyB0aGF0XG4gICB3ZSBhcmUgY2FyZWZ1bCB0byBhdm9pZCBldmFsdWF0aW5nIFtmIHhdIHVudGlsIHRoaXMgZnVuY3Rpb24gY2FsbCBpc1xuICAgYWN0dWFsbHkgbmVjZXNzYXJ5LiBUaGUgbmFpdmUgZGVmaW5pdGlvbiAobm90IHNob3duIGhlcmUpIGNvbXB1dGVzIHRoZVxuICAgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBzZXF1ZW5jZSwgW2YgeF0sIHdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IGlzXG4gICByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuICopXG5cbmxldCBpdGVyYXRlIGYgeCA9XG4gIGNvbnMgeCAoaXRlcmF0ZTEgZiB4KVxuXG5cblxubGV0IHJlYyBtYXBpX2F1eCBmIGkgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoZiBpIHgsIG1hcGlfYXV4IGYgKGkrMSkgeHMpXG5cbmxldFtAaW5saW5lXSBtYXBpIGYgeHMgPVxuICBtYXBpX2F1eCBmIDAgeHNcblxuKCogW3RhaWxfc2NhbiBmIHMgeHNdIGlzIGVxdWl2YWxlbnQgdG8gW3RhaWwgKHNjYW4gZiBzIHhzKV0uXG4gICBbdGFpbF9zY2FuXSBpcyB1c2VkIGFzIGEgYnVpbGRpbmcgYmxvY2sgaW4gdGhlIGRlZmluaXRpb24gb2YgW3NjYW5dLiAqKVxuXG4oKiBUaGlzIHNsaWdodGx5IGluZGlyZWN0IGRlZmluaXRpb24gb2YgW3NjYW5dIGlzIG1lYW50IHRvIGF2b2lkIGNvbXB1dGluZ1xuICAgZWxlbWVudHMgdG9vIGVhcmx5OyBzZWUgdGhlIGFib3ZlIGNvbW1lbnQgYWJvdXQgW2l0ZXJhdGUxXSBhbmQgW2l0ZXJhdGVdLiAqKVxuXG5sZXQgcmVjIHRhaWxfc2NhbiBmIHMgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbGV0IHMgPSBmIHMgeCBpblxuICAgICAgQ29ucyAocywgdGFpbF9zY2FuIGYgcyB4cylcblxubGV0IHNjYW4gZiBzIHhzID1cbiAgY29ucyBzICh0YWlsX3NjYW4gZiBzIHhzKVxuXG4oKiBbdGFrZV0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW3Rha2UgMCB4c10gcmV0dXJucyBbZW1wdHldXG4gICBpbW1lZGlhdGVseSwgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCByZWMgdGFrZV9hdXggbiB4cyA9XG4gIGlmIG4gPSAwIHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgICAgIENvbnMgKHgsIHRha2VfYXV4IChuLTEpIHhzKVxuXG5sZXQgdGFrZSBuIHhzID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcS50YWtlXCI7XG4gIHRha2VfYXV4IG4geHNcblxuKCogW2ZvcmNlX2Ryb3AgbiB4c10gaXMgZXF1aXZhbGVudCB0byBbZHJvcCBuIHhzICgpXS5cbiAgIFtmb3JjZV9kcm9wIG4geHNdIHJlcXVpcmVzIFtuID4gMF0uXG4gICBbZm9yY2VfZHJvcF0gaXMgdXNlZCBhcyBhIGJ1aWxkaW5nIGJsb2NrIGluIHRoZSBkZWZpbml0aW9uIG9mIFtkcm9wXS4gKilcblxubGV0IHJlYyBmb3JjZV9kcm9wIG4geHMgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKF8sIHhzKSAtPlxuICAgICAgbGV0IG4gPSBuIC0gMSBpblxuICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICB4cygpXG4gICAgICBlbHNlXG4gICAgICAgIGZvcmNlX2Ryb3AgbiB4c1xuXG4oKiBbZHJvcF0gaXMgZGVmaW5lZCBpbiBzdWNoIGEgd2F5IHRoYXQgW2Ryb3AgMCB4c10gcmV0dXJucyBbeHNdIGltbWVkaWF0ZWx5LFxuICAgd2l0aG91dCBhbGxvY2F0aW5nIGFueSBtZW1vcnkuICopXG5cbmxldCBkcm9wIG4geHMgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU2VxLmRyb3BcIlxuICBlbHNlIGlmIG4gPSAwIHRoZW5cbiAgICB4c1xuICBlbHNlXG4gICAgZnVuICgpIC0+XG4gICAgICBmb3JjZV9kcm9wIG4geHNcblxubGV0IHJlYyB0YWtlX3doaWxlIHAgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgaWYgcCB4IHRoZW4gQ29ucyAoeCwgdGFrZV93aGlsZSBwIHhzKSBlbHNlIE5pbFxuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgcCB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIGFzIG5vZGUgLT5cbiAgICAgIGlmIHAgeCB0aGVuIGRyb3Bfd2hpbGUgcCB4cyAoKSBlbHNlIG5vZGVcblxubGV0IHJlYyBncm91cCBlcSB4cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBDb25zIChjb25zIHggKHRha2Vfd2hpbGUgKGVxIHgpIHhzKSwgZ3JvdXAgZXEgKGRyb3Bfd2hpbGUgKGVxIHgpIHhzKSlcblxuZXhjZXB0aW9uIEZvcmNlZF90d2ljZVxuXG5tb2R1bGUgU3VzcGVuc2lvbiA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egc3VzcGVuc2lvbiA9XG4gICAgdW5pdCAtPiAnYVxuXG4gICgqIENvbnZlcnNpb25zLiAqKVxuXG4gIGxldCB0b19sYXp5IDogJ2Egc3VzcGVuc2lvbiAtPiAnYSBMYXp5LnQgPVxuICAgIExhenkuZnJvbV9mdW5cbiAgICAoKiBmdW4gcyAtPiBsYXp5IChzKCkpICopXG5cbiAgbGV0IGZyb21fbGF6eSAocyA6ICdhIExhenkudCkgOiAnYSBzdXNwZW5zaW9uID1cbiAgICBmdW4gKCkgLT4gTGF6eS5mb3JjZSBzXG5cbiAgKCogW21lbW9pemVdIHR1cm5zIGFuIGFyYml0cmFyeSBzdXNwZW5zaW9uIGludG8gYSBwZXJzaXN0ZW50IHN1c3BlbnNpb24uICopXG5cbiAgbGV0IG1lbW9pemUgKHMgOiAnYSBzdXNwZW5zaW9uKSA6ICdhIHN1c3BlbnNpb24gPVxuICAgIGZyb21fbGF6eSAodG9fbGF6eSBzKVxuXG4gICgqIFtmYWlsdXJlXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBmYWlscyB3aGVuIGZvcmNlZC4gKilcblxuICBsZXQgZmFpbHVyZSA6IF8gc3VzcGVuc2lvbiA9XG4gICAgZnVuICgpIC0+XG4gICAgICAoKiBBIHN1c3BlbnNpb24gY3JlYXRlZCBieSBbb25jZV0gaGFzIGJlZW4gZm9yY2VkIHR3aWNlLiAqKVxuICAgICAgcmFpc2UgRm9yY2VkX3R3aWNlXG5cbiAgKCogSWYgW2ZdIGlzIGEgc3VzcGVuc2lvbiwgdGhlbiBbb25jZSBmXSBpcyBhIHN1c3BlbnNpb24gdGhhdCBjYW4gYmUgZm9yY2VkXG4gICAgIGF0IG1vc3Qgb25jZS4gSWYgaXQgaXMgZm9yY2VkIG1vcmUgdGhhbiBvbmNlLCB0aGVuIFtGb3JjZWRfdHdpY2VdIGlzXG4gICAgIHJhaXNlZC4gKilcblxuICBsZXQgb25jZSAoZiA6ICdhIHN1c3BlbnNpb24pIDogJ2Egc3VzcGVuc2lvbiA9XG4gICAgbGV0IGFjdGlvbiA9IEF0b21pYy5tYWtlIGYgaW5cbiAgICBmdW4gKCkgLT5cbiAgICAgICgqIEdldCB0aGUgZnVuY3Rpb24gY3VycmVudGx5IHN0b3JlZCBpbiBbYWN0aW9uXSwgYW5kIHdyaXRlIHRoZVxuICAgICAgICAgZnVuY3Rpb24gW2ZhaWx1cmVdIGluIGl0cyBwbGFjZSwgc28gdGhlIG5leHQgYWNjZXNzIHdpbGwgcmVzdWx0XG4gICAgICAgICBpbiBhIGNhbGwgdG8gW2ZhaWx1cmUoKV0uICopXG4gICAgICBsZXQgZiA9IEF0b21pYy5leGNoYW5nZSBhY3Rpb24gZmFpbHVyZSBpblxuICAgICAgZigpXG5cbmVuZCAoKiBTdXNwZW5zaW9uICopXG5cbmxldCByZWMgbWVtb2l6ZSB4cyA9XG4gIFN1c3BlbnNpb24ubWVtb2l6ZSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggeHMoKSB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgICAgTmlsXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgQ29ucyAoeCwgbWVtb2l6ZSB4cylcbiAgKVxuXG5sZXQgcmVjIG9uY2UgeHMgPVxuICBTdXNwZW5zaW9uLm9uY2UgKGZ1biAoKSAtPlxuICAgIG1hdGNoIHhzKCkgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICAgIE5pbFxuICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgIENvbnMgKHgsIG9uY2UgeHMpXG4gIClcblxuXG5sZXQgcmVjIHppcCB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKCh4LCB5KSwgemlwIHhzIHlzKVxuXG5sZXQgcmVjIG1hcDIgZiB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICBtYXRjaCB5cygpIHdpdGhcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgTmlsXG4gICAgICB8IENvbnMgKHksIHlzKSAtPlxuICAgICAgICAgIENvbnMgKGYgeCB5LCBtYXAyIGYgeHMgeXMpXG5cbmxldCByZWMgaW50ZXJsZWF2ZSB4cyB5cyAoKSA9XG4gIG1hdGNoIHhzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgeXMoKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgQ29ucyAoeCwgaW50ZXJsZWF2ZSB5cyB4cylcblxuKCogW3NvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIChjb25zIHggeHMpIHlzXS5cblxuICAgW3NvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzXSBpcyBlcXVpdmFsZW50IHRvXG4gICAgIFtzb3J0ZWRfbWVyZ2UgY21wIHhzIChjb25zIHkgeXMpXS5cblxuICAgW3NvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c10gaXMgZXF1aXZhbGVudCB0b1xuICAgICBbc29ydGVkX21lcmdlIGNtcCAoY29ucyB4IHhzKSAoY29ucyB5IHlzKV0uXG5cbiAgIFRoZXNlIHRocmVlIGZ1bmN0aW9ucyBhcmUgdXNlZCBhcyBidWlsZGluZyBibG9ja3MgaW4gdGhlIGRlZmluaXRpb25cbiAgIG9mIFtzb3J0ZWRfbWVyZ2VdLiAqKVxuXG5sZXQgcmVjIHNvcnRlZF9tZXJnZTFsIGNtcCB4IHhzIHlzICgpID1cbiAgbWF0Y2ggeXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBDb25zICh4LCB4cylcbiAgfCBDb25zICh5LCB5cykgLT5cbiAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5hbmQgc29ydGVkX21lcmdlMXIgY21wIHhzIHkgeXMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIENvbnMgKHksIHlzKVxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgc29ydGVkX21lcmdlMSBjbXAgeCB4cyB5IHlzXG5cbmFuZCBzb3J0ZWRfbWVyZ2UxIGNtcCB4IHhzIHkgeXMgPVxuICBpZiBjbXAgeCB5IDw9IDAgdGhlblxuICAgIENvbnMgKHgsIHNvcnRlZF9tZXJnZTFyIGNtcCB4cyB5IHlzKVxuICBlbHNlXG4gICAgQ29ucyAoeSwgc29ydGVkX21lcmdlMWwgY21wIHggeHMgeXMpXG5cbmxldCBzb3J0ZWRfbWVyZ2UgY21wIHhzIHlzICgpID1cbiAgbWF0Y2ggeHMoKSwgeXMoKSB3aXRoXG4gICAgfCBOaWwsIE5pbCAtPlxuICAgICAgICBOaWxcbiAgICB8IE5pbCwgY1xuICAgIHwgYywgTmlsIC0+XG4gICAgICAgIGNcbiAgICB8IENvbnMgKHgsIHhzKSwgQ29ucyAoeSwgeXMpIC0+XG4gICAgICAgIHNvcnRlZF9tZXJnZTEgY21wIHggeHMgeSB5c1xuXG5cbmxldCByZWMgbWFwX2ZzdCB4eXMgKCkgPVxuICBtYXRjaCB4eXMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICgoeCwgXyksIHh5cykgLT5cbiAgICAgIENvbnMgKHgsIG1hcF9mc3QgeHlzKVxuXG5sZXQgcmVjIG1hcF9zbmQgeHlzICgpID1cbiAgbWF0Y2ggeHlzKCkgd2l0aFxuICB8IE5pbCAtPlxuICAgICAgTmlsXG4gIHwgQ29ucyAoKF8sIHkpLCB4eXMpIC0+XG4gICAgICBDb25zICh5LCBtYXBfc25kIHh5cylcblxubGV0IHVuemlwIHh5cyA9XG4gIG1hcF9mc3QgeHlzLCBtYXBfc25kIHh5c1xuXG5sZXQgc3BsaXQgPVxuICB1bnppcFxuXG4oKiBbZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHNdIGlzIGVxdWl2YWxlbnQgdG9cbiAgIFtmaWx0ZXJfbWFwIEVpdGhlci5maW5kX2xlZnQgKG1hcCBmIHhzKV0uICopXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX2xlZnRfbWFwIGYgeHMgKCkgPVxuICBtYXRjaCB4cygpIHdpdGhcbiAgfCBOaWwgLT5cbiAgICAgIE5pbFxuICB8IENvbnMgKHgsIHhzKSAtPlxuICAgICAgbWF0Y2ggZiB4IHdpdGhcbiAgICAgIHwgRWl0aGVyLkxlZnQgeSAtPlxuICAgICAgICAgIENvbnMgKHksIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzKVxuICAgICAgfCBFaXRoZXIuUmlnaHQgXyAtPlxuICAgICAgICAgIGZpbHRlcl9tYXBfZmluZF9sZWZ0X21hcCBmIHhzICgpXG5cbmxldCByZWMgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzICgpID1cbiAgbWF0Y2ggeHMoKSB3aXRoXG4gIHwgTmlsIC0+XG4gICAgICBOaWxcbiAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IEVpdGhlci5MZWZ0IF8gLT5cbiAgICAgICAgICBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMgKClcbiAgICAgIHwgRWl0aGVyLlJpZ2h0IHogLT5cbiAgICAgICAgICBDb25zICh6LCBmaWx0ZXJfbWFwX2ZpbmRfcmlnaHRfbWFwIGYgeHMpXG5cbmxldCBwYXJ0aXRpb25fbWFwIGYgeHMgPVxuICBmaWx0ZXJfbWFwX2ZpbmRfbGVmdF9tYXAgZiB4cyxcbiAgZmlsdGVyX21hcF9maW5kX3JpZ2h0X21hcCBmIHhzXG5cbmxldCBwYXJ0aXRpb24gcCB4cyA9XG4gIGZpbHRlciBwIHhzLCBmaWx0ZXIgKGZ1biB4IC0+IG5vdCAocCB4KSkgeHNcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW3BlZWwgeHNzXSBpcyBhIHBhaXIgb2ZcbiAgIHRoZSBmaXJzdCBjb2x1bW4gKGEgc2VxdWVuY2Ugb2YgZWxlbWVudHMpIGFuZCBvZiB0aGUgcmVtYWluZGVyIG9mIHRoZVxuICAgbWF0cml4IChhIHNlcXVlbmNlIG9mIHNob3J0ZXIgcm93cykuIFRoZXNlIHR3byBzZXF1ZW5jZXMgaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBUaGUgcm93cyBvZiB0aGUgbWF0cml4IFt4c3NdIGFyZSBub3QgcmVxdWlyZWQgdG8gaGF2ZSB0aGUgc2FtZVxuICAgbGVuZ3RoLiBBbiBlbXB0eSByb3cgaXMgaWdub3JlZC4gKilcblxuKCogQmVjYXVzZSBbcGVlbF0gdXNlcyBbdW56aXBdLCBpdHMgYXJndW1lbnQgbXVzdCBiZSBwZXJzaXN0ZW50LiBUaGUgc2FtZVxuICAgcmVtYXJrIGFwcGxpZXMgdG8gW3RyYW5zcG9zZV0sIFtkaWFnb25hbHNdLCBbcHJvZHVjdF0sIGV0Yy4gKilcblxubGV0IHBlZWwgeHNzID1cbiAgdW56aXAgKGZpbHRlcl9tYXAgdW5jb25zIHhzcylcblxubGV0IHJlYyB0cmFuc3Bvc2UgeHNzICgpID1cbiAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgeHNzIGluXG4gIGlmIGlzX2VtcHR5IGhlYWRzIHRoZW4gYmVnaW5cbiAgICBhc3NlcnQgKGlzX2VtcHR5IHRhaWxzKTtcbiAgICBOaWxcbiAgZW5kXG4gIGVsc2VcbiAgICBDb25zIChoZWFkcywgdHJhbnNwb3NlIHRhaWxzKVxuXG4oKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gW2RpYWdvbmFsc10gdGFrZXMgYW4gZXh0cmEgYXJndW1lbnQsIFtyZW1haW5kZXJzXSxcbiAgIHdoaWNoIGNvbnRhaW5zIHRoZSByZW1haW5kZXJzIG9mIHRoZSByb3dzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW5cbiAgIGRpc2NvdmVyZWQuICopXG5cbmxldCByZWMgZGlhZ29uYWxzIHJlbWFpbmRlcnMgeHNzICgpID1cbiAgbWF0Y2ggeHNzKCkgd2l0aFxuICB8IENvbnMgKHhzLCB4c3MpIC0+XG4gICAgICBiZWdpbiBtYXRjaCB4cygpIHdpdGhcbiAgICAgIHwgQ29ucyAoeCwgeHMpIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgbm9uZW1wdHkgcm93IFt4IDo6IHhzXS4gVGh1cywgdGhlIG5leHQgZGlhZ29uYWxcbiAgICAgICAgICAgICBpcyBbeCA6OiBoZWFkc106IHRoaXMgZGlhZ29uYWwgYmVnaW5zIHdpdGggW3hdIGFuZCBjb250aW51ZXMgd2l0aFxuICAgICAgICAgICAgIHRoZSBmaXJzdCBlbGVtZW50IG9mIGV2ZXJ5IHJvdyBpbiBbcmVtYWluZGVyc10uIEluIHRoZSByZWN1cnNpdmVcbiAgICAgICAgICAgICBjYWxsLCB0aGUgYXJndW1lbnQgW3JlbWFpbmRlcnNdIGlzIGluc3RhbnRpYXRlZCB3aXRoIFt4cyA6OlxuICAgICAgICAgICAgIHRhaWxzXSwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3csIFt4c10sXG4gICAgICAgICAgICAgYW5kIHRoYXQgd2Uga2VlcCB0aGUgdGFpbHMgb2YgdGhlIHByZS1leGlzdGluZyByZW1haW5pbmcgcm93cy4gKilcbiAgICAgICAgICBsZXQgaGVhZHMsIHRhaWxzID0gcGVlbCByZW1haW5kZXJzIGluXG4gICAgICAgICAgQ29ucyAoY29ucyB4IGhlYWRzLCBkaWFnb25hbHMgKGNvbnMgeHMgdGFpbHMpIHhzcylcbiAgICAgIHwgTmlsIC0+XG4gICAgICAgICAgKCogV2UgZGlzY292ZXIgYSBuZXcgZW1wdHkgcm93LiBJbiB0aGlzIGNhc2UsIHRoZSBuZXcgZGlhZ29uYWwgaXNcbiAgICAgICAgICAgICBqdXN0IFtoZWFkc10sIGFuZCBbcmVtYWluZGVyc10gaXMgaW5zdGFudGlhdGVkIHdpdGgganVzdCBbdGFpbHNdLFxuICAgICAgICAgICAgIGFzIHdlIGRvIG5vdCBoYXZlIG9uZSBtb3JlIHJlbWFpbmluZyByb3cuICopXG4gICAgICAgICAgbGV0IGhlYWRzLCB0YWlscyA9IHBlZWwgcmVtYWluZGVycyBpblxuICAgICAgICAgIENvbnMgKGhlYWRzLCBkaWFnb25hbHMgdGFpbHMgeHNzKVxuICAgICAgZW5kXG4gIHwgTmlsIC0+XG4gICAgICAoKiBUaGVyZSBhcmUgbm8gbW9yZSByb3dzIHRvIGJlIGRpc2NvdmVyZWQuIFRoZXJlIHJlbWFpbnMgdG8gZXhoYXVzdFxuICAgICAgICAgdGhlIHJlbWFpbmluZyByb3dzLiAqKVxuICAgICAgdHJhbnNwb3NlIHJlbWFpbmRlcnMgKClcblxuKCogSWYgW3hzc10gaXMgYSBtYXRyaXggKGEgc2VxdWVuY2Ugb2Ygcm93cyksIHRoZW4gW2RpYWdvbmFscyB4c3NdIGlzXG4gICB0aGUgc2VxdWVuY2Ugb2YgaXRzIGRpYWdvbmFscy5cblxuICAgVGhlIGZpcnN0IGRpYWdvbmFsIGNvbnRhaW5zIGp1c3QgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBmaXJzdCByb3cuIFRoZSBzZWNvbmQgZGlhZ29uYWwgY29udGFpbnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlXG4gICBzZWNvbmQgcm93IGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIGZpcnN0IHJvdzsgYW5kIHNvIG9uLlxuICAgVGhpcyBraW5kIG9mIGRpYWdvbmFsIGlzIGluIGZhY3Qgc29tZXRpbWVzIGtub3duIGFzIGFuIGFudGlkaWFnb25hbC5cblxuICAgLSBFdmVyeSBkaWFnb25hbCBpcyBhIGZpbml0ZSBzZXF1ZW5jZS5cbiAgIC0gVGhlIHJvd3Mgb2YgdGhlIG1hdHJpeCBbeHNzXSBhcmUgbm90IHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIGlzIG5vdCByZXF1aXJlZCB0byBiZSBmaW5pdGUgKGluIGVpdGhlciBkaXJlY3Rpb24pLlxuICAgLSBUaGUgbWF0cml4IFt4c3NdIG11c3QgYmUgcGVyc2lzdGVudC4gKilcblxubGV0IGRpYWdvbmFscyB4c3MgPVxuICBkaWFnb25hbHMgZW1wdHkgeHNzXG5cbmxldCBtYXBfcHJvZHVjdCBmIHhzIHlzID1cbiAgY29uY2F0IChkaWFnb25hbHMgKFxuICAgIG1hcCAoZnVuIHggLT5cbiAgICAgIG1hcCAoZnVuIHkgLT5cbiAgICAgICAgZiB4IHlcbiAgICAgICkgeXNcbiAgICApIHhzXG4gICkpXG5cbmxldCBwcm9kdWN0IHhzIHlzID1cbiAgbWFwX3Byb2R1Y3QgKGZ1biB4IHkgLT4gKHgsIHkpKSB4cyB5c1xuXG5sZXQgb2ZfZGlzcGVuc2VyIGl0ID1cbiAgbGV0IHJlYyBjICgpID1cbiAgICBtYXRjaCBpdCgpIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgTmlsXG4gICAgfCBTb21lIHggLT5cbiAgICAgICAgQ29ucyAoeCwgYylcbiAgaW5cbiAgY1xuXG5sZXQgdG9fZGlzcGVuc2VyIHhzID1cbiAgbGV0IHMgPSByZWYgeHMgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggKCFzKSgpIHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgICBOb25lXG4gICAgfCBDb25zICh4LCB4cykgLT5cbiAgICAgICAgcyA6PSB4cztcbiAgICAgICAgU29tZSB4XG5cblxuXG5sZXQgcmVjIGludHMgaSAoKSA9XG4gIENvbnMgKGksIGludHMgKGkgKyAxKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0gJ2Egb3B0aW9uID0gTm9uZSB8IFNvbWUgb2YgJ2FcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgc29tZSB2ID0gU29tZSB2XG5sZXQgdmFsdWUgbyB+ZGVmYXVsdCA9IG1hdGNoIG8gd2l0aCBTb21lIHYgLT4gdiB8IE5vbmUgLT4gZGVmYXVsdFxubGV0IGdldCA9IGZ1bmN0aW9uIFNvbWUgdiAtPiB2IHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIm9wdGlvbiBpcyBOb25lXCJcbmxldCBiaW5kIG8gZiA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gZiB2XG5sZXQgam9pbiA9IGZ1bmN0aW9uIFNvbWUgbyAtPiBvIHwgTm9uZSAtPiBOb25lXG5sZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxubGV0IGZvbGQgfm5vbmUgfnNvbWUgPSBmdW5jdGlvbiBTb21lIHYgLT4gc29tZSB2IHwgTm9uZSAtPiBub25lXG5sZXQgaXRlciBmID0gZnVuY3Rpb24gU29tZSB2IC0+IGYgdiB8IE5vbmUgLT4gKClcbmxldCBpc19ub25lID0gZnVuY3Rpb24gTm9uZSAtPiB0cnVlIHwgU29tZSBfIC0+IGZhbHNlXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uIE5vbmUgLT4gZmFsc2UgfCBTb21lIF8gLT4gdHJ1ZVxuXG5sZXQgZXF1YWwgZXEgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGVxIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gdHJ1ZVxufCBfIC0+IGZhbHNlXG5cbmxldCBjb21wYXJlIGNtcCBvMCBvMSA9IG1hdGNoIG8wLCBvMSB3aXRoXG58IFNvbWUgdjAsIFNvbWUgdjEgLT4gY21wIHYwIHYxXG58IE5vbmUsIE5vbmUgLT4gMFxufCBOb25lLCBTb21lIF8gLT4gLTFcbnwgU29tZSBfLCBOb25lIC0+IDFcblxubGV0IHRvX3Jlc3VsdCB+bm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gRXJyb3Igbm9uZSB8IFNvbWUgdiAtPiBPayB2XG5sZXQgdG9fbGlzdCA9IGZ1bmN0aW9uIE5vbmUgLT4gW10gfCBTb21lIHYgLT4gW3ZdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gTm9uZSAtPiBTZXEuZW1wdHkgfCBTb21lIHYgLT4gU2VxLnJldHVybiB2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2VcblxubGV0IG9rIHYgPSBPayB2XG5sZXQgZXJyb3IgZSA9IEVycm9yIGVcbmxldCB2YWx1ZSByIH5kZWZhdWx0ID0gbWF0Y2ggciB3aXRoIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gZGVmYXVsdFxubGV0IGdldF9vayA9IGZ1bmN0aW9uIE9rIHYgLT4gdiB8IEVycm9yIF8gLT4gaW52YWxpZF9hcmcgXCJyZXN1bHQgaXMgRXJyb3IgX1wiXG5sZXQgZ2V0X2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgZSAtPiBlIHwgT2sgXyAtPiBpbnZhbGlkX2FyZyBcInJlc3VsdCBpcyBPayBfXCJcbmxldCBiaW5kIHIgZiA9IG1hdGNoIHIgd2l0aCBPayB2IC0+IGYgdiB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgam9pbiA9IGZ1bmN0aW9uIE9rIHIgLT4gciB8IEVycm9yIF8gYXMgZSAtPiBlXG5sZXQgbWFwIGYgPSBmdW5jdGlvbiBPayB2IC0+IE9rIChmIHYpIHwgRXJyb3IgXyBhcyBlIC0+IGVcbmxldCBtYXBfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gRXJyb3IgKGYgZSkgfCBPayBfIGFzIHYgLT4gdlxubGV0IGZvbGQgfm9rIH5lcnJvciA9IGZ1bmN0aW9uIE9rIHYgLT4gb2sgdiB8IEVycm9yIGUgLT4gZXJyb3IgZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIE9rIHYgLT4gZiB2IHwgRXJyb3IgXyAtPiAoKVxubGV0IGl0ZXJfZXJyb3IgZiA9IGZ1bmN0aW9uIEVycm9yIGUgLT4gZiBlIHwgT2sgXyAtPiAoKVxubGV0IGlzX29rID0gZnVuY3Rpb24gT2sgXyAtPiB0cnVlIHwgRXJyb3IgXyAtPiBmYWxzZVxubGV0IGlzX2Vycm9yID0gZnVuY3Rpb24gRXJyb3IgXyAtPiB0cnVlIHwgT2sgXyAtPiBmYWxzZVxuXG5sZXQgZXF1YWwgfm9rIH5lcnJvciByMCByMSA9IG1hdGNoIHIwLCByMSB3aXRoXG58IE9rIHYwLCBPayB2MSAtPiBvayB2MCB2MVxufCBFcnJvciBlMCwgRXJyb3IgZTEgLT4gZXJyb3IgZTAgZTFcbnwgXywgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSB+b2sgfmVycm9yIHIwIHIxID0gbWF0Y2ggcjAsIHIxIHdpdGhcbnwgT2sgdjAsIE9rIHYxIC0+IG9rIHYwIHYxXG58IEVycm9yIGUwLCBFcnJvciBlMSAtPiBlcnJvciBlMCBlMVxufCBPayBfLCBFcnJvciBfIC0+IC0xXG58IEVycm9yIF8sIE9rIF8gLT4gMVxuXG5sZXQgdG9fb3B0aW9uID0gZnVuY3Rpb24gT2sgdiAtPiBTb21lIHYgfCBFcnJvciBfIC0+IE5vbmVcbmxldCB0b19saXN0ID0gZnVuY3Rpb24gT2sgdiAtPiBbdl0gfCBFcnJvciBfIC0+IFtdXG5sZXQgdG9fc2VxID0gZnVuY3Rpb24gT2sgdiAtPiBTZXEucmV0dXJuIHYgfCBFcnJvciBfIC0+IFNlcS5lbXB0eVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBib29sID0gZmFsc2UgfCB0cnVlXG5cbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmxldCBlcXVhbCA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gKCA9IClcbmxldCBjb21wYXJlIDogYm9vbCAtPiBib29sIC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5leHRlcm5hbCB0b19pbnQgOiBib29sIC0+IGludCA9IFwiJWlkZW50aXR5XCJcbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uIGZhbHNlIC0+IDAuIHwgdHJ1ZSAtPiAxLlxuXG4oKlxubGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG58IFwiZmFsc2VcIiAtPiBTb21lIGZhbHNlXG58IFwidHJ1ZVwiIC0+IFNvbWUgdHJ1ZVxufCBfIC0+IE5vbmVcbiopXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvbiBmYWxzZSAtPiBcImZhbHNlXCIgfCB0cnVlIC0+IFwidHJ1ZVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENoYXJhY3RlciBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsIGNvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBjaHIgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcIkNoYXIuY2hyXCIgZWxzZSB1bnNhZmVfY2hyIG5cblxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIGJ5dGVzX3Vuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5cbmxldCBlc2NhcGVkID0gZnVuY3Rpb25cbiAgfCAnXFwnJyAtPiBcIlxcXFwnXCJcbiAgfCAnXFxcXCcgLT4gXCJcXFxcXFxcXFwiXG4gIHwgJ1xcbicgLT4gXCJcXFxcblwiXG4gIHwgJ1xcdCcgLT4gXCJcXFxcdFwiXG4gIHwgJ1xccicgLT4gXCJcXFxcclwiXG4gIHwgJ1xcYicgLT4gXCJcXFxcYlwiXG4gIHwgJyAnIC4uICd+JyBhcyBjIC0+XG4gICAgICBsZXQgcyA9IGJ5dGVzX2NyZWF0ZSAxIGluXG4gICAgICBieXRlc191bnNhZmVfc2V0IHMgMCBjO1xuICAgICAgdW5zYWZlX3RvX3N0cmluZyBzXG4gIHwgYyAtPlxuICAgICAgbGV0IG4gPSBjb2RlIGMgaW5cbiAgICAgIGxldCBzID0gYnl0ZXNfY3JlYXRlIDQgaW5cbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAwICdcXFxcJztcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAxICh1bnNhZmVfY2hyICg0OCArIG4gLyAxMDApKTtcbiAgICAgIGJ5dGVzX3Vuc2FmZV9zZXQgcyAyICh1bnNhZmVfY2hyICg0OCArIChuIC8gMTApIG1vZCAxMCkpO1xuICAgICAgYnl0ZXNfdW5zYWZlX3NldCBzIDMgKHVuc2FmZV9jaHIgKDQ4ICsgbiBtb2QgMTApKTtcbiAgICAgIHVuc2FmZV90b19zdHJpbmcgc1xuXG5sZXQgbG93ZXJjYXNlX2FzY2lpID0gZnVuY3Rpb25cbiAgfCAnQScgLi4gJ1onIGFzIGMgLT4gdW5zYWZlX2Nocihjb2RlIGMgKyAzMilcbiAgfCBjIC0+IGNcblxubGV0IHVwcGVyY2FzZV9hc2NpaSA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyBhcyBjIC0+IHVuc2FmZV9jaHIoY29kZSBjIC0gMzIpXG4gIHwgYyAtPiBjXG5cbnR5cGUgdCA9IGNoYXJcblxubGV0IGNvbXBhcmUgYzEgYzIgPSBjb2RlIGMxIC0gY29kZSBjMlxubGV0IGVxdWFsIChjMTogdCkgKGMyOiB0KSA9IGNvbXBhcmUgYzEgYzIgPSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgIERhbmllbCBDLiBCdWVuemxpICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcblxubGV0IGVycl9ub19wcmVkID0gXCJVKzAwMDAgaGFzIG5vIHByZWRlY2Vzc29yXCJcbmxldCBlcnJfbm9fc3VjYyA9IFwiVSsxMEZGRkYgaGFzIG5vIHN1Y2Nlc3NvclwiXG5sZXQgZXJyX25vdF9zdiBpID0gZm9ybWF0X2ludCBcIiVYXCIgaSBeIFwiIGlzIG5vdCBhbiBVbmljb2RlIHNjYWxhciB2YWx1ZVwiXG5sZXQgZXJyX25vdF9sYXRpbjEgdSA9IFwiVStcIiBeIGZvcm1hdF9pbnQgXCIlMDRYXCIgdSBeIFwiIGlzIG5vdCBhIGxhdGluMSBjaGFyYWN0ZXJcIlxuXG50eXBlIHQgPSBpbnRcblxubGV0IG1pbiA9IDB4MDAwMFxubGV0IG1heCA9IDB4MTBGRkZGXG5sZXQgbG9fYm91bmQgPSAweEQ3RkZcbmxldCBoaV9ib3VuZCA9IDB4RTAwMFxuXG5sZXQgYm9tID0gMHhGRUZGXG5sZXQgcmVwID0gMHhGRkZEXG5cbmxldCBzdWNjIHUgPVxuICBpZiB1ID0gbG9fYm91bmQgdGhlbiBoaV9ib3VuZCBlbHNlXG4gIGlmIHUgPSBtYXggdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fc3VjYyBlbHNlXG4gIHUgKyAxXG5cbmxldCBwcmVkIHUgPVxuICBpZiB1ID0gaGlfYm91bmQgdGhlbiBsb19ib3VuZCBlbHNlXG4gIGlmIHUgPSBtaW4gdGhlbiBpbnZhbGlkX2FyZyBlcnJfbm9fcHJlZCBlbHNlXG4gIHUgLSAxXG5cbmxldCBpc192YWxpZCBpID0gKG1pbiA8PSBpICYmIGkgPD0gbG9fYm91bmQpIHx8IChoaV9ib3VuZCA8PSBpICYmIGkgPD0gbWF4KVxubGV0IG9mX2ludCBpID0gaWYgaXNfdmFsaWQgaSB0aGVuIGkgZWxzZSBpbnZhbGlkX2FyZyAoZXJyX25vdF9zdiBpKVxuZXh0ZXJuYWwgdW5zYWZlX29mX2ludCA6IGludCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50IDogdCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19jaGFyIHUgPSB1IDwgMjU2XG5sZXQgb2ZfY2hhciBjID0gQ2hhci5jb2RlIGNcbmxldCB0b19jaGFyIHUgPVxuICBpZiB1ID4gMjU1IHRoZW4gaW52YWxpZF9hcmcgKGVycl9ub3RfbGF0aW4xIHUpIGVsc2VcbiAgQ2hhci51bnNhZmVfY2hyIHVcblxubGV0IHVuc2FmZV90b19jaGFyID0gQ2hhci51bnNhZmVfY2hyXG5cbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBoYXNoID0gdG9faW50XG5cbigqIFVURiBjb2RlY3MgdG9vbHMgKilcblxudHlwZSB1dGZfZGVjb2RlID0gaW50XG4oKiBUaGlzIGlzIGFuIGludCBbMHhEVVVVVVVVXSBkZWNvbXBvc2VkIGFzIGZvbGxvd3M6XG4gICAtIFtEXSBpcyBmb3VyIGJpdHMgZm9yIGRlY29kZSBpbmZvcm1hdGlvbiwgdGhlIGhpZ2hlc3QgYml0IGlzIHNldCBpZiB0aGVcbiAgICAgZGVjb2RlIGlzIHZhbGlkLiBUaGUgdGhyZWUgbG93ZXIgYml0cyBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4gICAgIGZyb20gdGhlIHNvdXJjZSB0aGF0IHdlcmUgY29uc3VtZWQgYnkgdGhlIGRlY29kZS5cbiAgIC0gW1VVVVVVVV0gaXMgdGhlIGRlY29kZWQgVW5pY29kZSBjaGFyYWN0ZXIgb3IgdGhlIFVuaWNvZGUgcmVwbGFjZW1lbnRcbiAgICAgY2hhcmFjdGVyIFUrRkZGRCBpZiBmb3IgaW52YWxpZCBkZWNvZGVzLiAqKVxuXG5sZXQgdmFsaWRfYml0ID0gMjdcbmxldCBkZWNvZGVfYml0cyA9IDI0XG5cbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2lzX3ZhbGlkIGQgPSAoZCBsc3IgdmFsaWRfYml0KSA9IDFcbmxldFtAaW5saW5lXSB1dGZfZGVjb2RlX2xlbmd0aCBkID0gKGQgbHNyIGRlY29kZV9iaXRzKSBsYW5kIDBiMTExXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV91Y2hhciBkID0gdW5zYWZlX29mX2ludCAoZCBsYW5kIDB4RkZGRkZGKVxubGV0W0BpbmxpbmVdIHV0Zl9kZWNvZGUgbiB1ID0gKCg4IGxvciBuKSBsc2wgZGVjb2RlX2JpdHMpIGxvciAodG9faW50IHUpXG5sZXRbQGlubGluZV0gdXRmX2RlY29kZV9pbnZhbGlkIG4gPSAobiBsc2wgZGVjb2RlX2JpdHMpIGxvciByZXBcblxubGV0IHV0Zl84X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+IDFcbnwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDNcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgdXRmXzE2X2J5dGVfbGVuZ3RoIHUgPSBtYXRjaCB0b19pbnQgdSB3aXRoXG58IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbnwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+IDJcbnwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT4gNFxufCBfIC0+IGFzc2VydCBmYWxzZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IGhkID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcImhkXCJcbiAgfCBhOjpfIC0+IGFcblxubGV0IHRsID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcInRsXCJcbiAgfCBfOjpsIC0+IGxcblxubGV0IG50aCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJudGhcIlxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IG50aF9vcHQgbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IGFwcGVuZCA9IChAKVxuXG5sZXQgcmVjIHJldl9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBhIDo6IGwgLT4gcmV2X2FwcGVuZCBsIChhIDo6IGwyKVxuXG5sZXQgcmV2IGwgPSByZXZfYXBwZW5kIGwgW11cblxubGV0IHJlYyBpbml0X3RhaWxyZWNfYXV4IGFjYyBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIGFjY1xuICBlbHNlIGluaXRfdGFpbHJlY19hdXggKGYgaSA6OiBhY2MpIChpKzEpIG4gZlxuXG5sZXQgcmVjIGluaXRfYXV4IGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByID0gZiBpIGluXG4gICAgciA6OiBpbml0X2F1eCAoaSsxKSBuIGZcblxubGV0IHJldl9pbml0X3RocmVzaG9sZCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMTBfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3NcbiAgICAgc21hbGwuICopXG4gIHwgU3lzLk90aGVyIF8gLT4gNTBcblxubGV0IGluaXQgbGVuIGYgPVxuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LmluaXRcIiBlbHNlXG4gIGlmIGxlbiA+IHJldl9pbml0X3RocmVzaG9sZCB0aGVuIHJldiAoaW5pdF90YWlscmVjX2F1eCBbXSAwIGxlbiBmKVxuICBlbHNlIGluaXRfYXV4IDAgbGVuIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGEgaW4gciA6OiBtYXAgZiBsXG5cbmxldCByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgaSBhIGluIHIgOjogbWFwaSAoaSArIDEpIGYgbFxuXG5sZXQgbWFwaSBmIGwgPSBtYXBpIDAgZiBsXG5cbmxldCByZXZfbWFwIGYgbCA9XG4gIGxldCByZWMgcm1hcF9mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgYTo6bCAtPiBybWFwX2YgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIHJtYXBfZiBbXSBsXG5cblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGE7IGl0ZXIgZiBsXG5cbmxldCByZWMgaXRlcmkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBpIGE7IGl0ZXJpIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaSBmIGwgPSBpdGVyaSAwIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjY3UgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGZvbGRfbGVmdCBmIChmIGFjY3UgYSkgbFxuXG5sZXQgcmVjIGZvbGRfcmlnaHQgZiBsIGFjY3UgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmIGEgKGZvbGRfcmlnaHQgZiBsIGFjY3UpXG5cbmxldCByZWMgbWFwMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBsZXQgciA9IGYgYTEgYTIgaW4gciA6OiBtYXAyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lm1hcDJcIlxuXG5sZXQgcmV2X21hcDIgZiBsMSBsMiA9XG4gIGxldCByZWMgcm1hcDJfZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgfCAoW10sIFtdKSAtPiBhY2N1XG4gICAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHJtYXAyX2YgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBybWFwMl9mIFtdIGwxIGwyXG5cblxubGV0IHJlYyBpdGVyMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+ICgpXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyOyBpdGVyMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZm9sZF9sZWZ0MiBmIChmIGFjY3UgYTEgYTIpIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX2xlZnQyXCJcblxubGV0IHJlYyBmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMiAoZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1KVxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9yaWdodDJcIlxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gdHJ1ZVxuICB8IGE6OmwgLT4gcCBhICYmIGZvcl9hbGwgcCBsXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBwIGEgfHwgZXhpc3RzIHAgbFxuXG5sZXQgcmVjIGZvcl9hbGwyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gdHJ1ZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiAmJiBmb3JfYWxsMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG5cbmxldCByZWMgZXhpc3RzMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGZhbHNlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyIHx8IGV4aXN0czIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG5cbmxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtIHggbFxuXG5sZXQgcmVjIG1lbXEgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGEgPT0geCB8fCBtZW1xIHggbFxuXG5sZXQgcmVjIGFzc29jIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGIgZWxzZSBhc3NvYyB4IGxcblxubGV0IHJlYyBhc3NvY19vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIFNvbWUgYiBlbHNlIGFzc29jX29wdCB4IGxcblxubGV0IHJlYyBhc3NxIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIGIgZWxzZSBhc3NxIHggbFxuXG5sZXQgcmVjIGFzc3Ffb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBTb21lIGIgZWxzZSBhc3NxX29wdCB4IGxcblxubGV0IHJlYyBtZW1fYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtX2Fzc29jIHggbFxuXG5sZXQgcmVjIG1lbV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gYSA9PSB4IHx8IG1lbV9hc3NxIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NvYyB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT4gaWYgYSA9PSB4IHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc3EgeCBsXG5cbmxldCByZWMgZmluZCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCBlbHNlIGZpbmQgcCBsXG5cbmxldCByZWMgZmluZF9vcHQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kX29wdCBwIGxcblxubGV0IHJlYyBmaW5kX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCBmIGxcbiAgICAgZW5kXG5cbmxldCBmaW5kX2FsbCBwID1cbiAgbGV0IHJlYyBmaW5kIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2N1XG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIGZpbmQgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgYWNjdSBsIGluXG4gIGZpbmQgW11cblxubGV0IGZpbHRlciA9IGZpbmRfYWxsXG5cbmxldCBmaWx0ZXJpIHAgbCA9XG4gIGxldCByZWMgYXV4IGkgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjXG4gIHwgeDo6bCAtPiBhdXggKGkgKyAxKSAoaWYgcCBpIHggdGhlbiB4OjphY2MgZWxzZSBhY2MpIGxcbiAgaW5cbiAgYXV4IDAgW10gbFxuXG5sZXQgZmlsdGVyX21hcCBmID1cbiAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggYWNjdSBsXG4gICAgICAgIHwgU29tZSB2IC0+IGF1eCAodiA6OiBhY2N1KSBsXG4gIGluXG4gIGF1eCBbXVxuXG5sZXQgY29uY2F0X21hcCBmIGwgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICBsZXQgeHMgPSBmIHggaW5cbiAgICAgICBhdXggZiAocmV2X2FwcGVuZCB4cyBhY2MpIGxcbiAgaW4gYXV4IGYgW10gbFxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjY3UgbCA9XG4gIGxldCByZWMgYXV4IGFjY3UgbF9hY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3UsIHJldiBsX2FjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgYWNjdSwgeCA9IGYgYWNjdSB4IGluXG4gICAgICAgIGF1eCBhY2N1ICh4IDo6IGxfYWNjdSkgbCBpblxuICBhdXggYWNjdSBbXSBsXG5cbmxldCBwYXJ0aXRpb24gcCBsID1cbiAgbGV0IHJlYyBwYXJ0IHllcyBubyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiB5ZXMsIHJldiBubylcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gcGFydCAoeCA6OiB5ZXMpIG5vIGwgZWxzZSBwYXJ0IHllcyAoeCA6OiBubykgbCBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBwIHggd2l0aFxuICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbFxuICAgICBlbmRcbiAgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCByZWMgc3BsaXQgPSBmdW5jdGlvblxuICAgIFtdIC0+IChbXSwgW10pXG4gIHwgKHgseSk6OmwgLT5cbiAgICAgIGxldCAocngsIHJ5KSA9IHNwbGl0IGwgaW4gKHg6OnJ4LCB5OjpyeSlcblxubGV0IHJlYyBjb21iaW5lIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiAoYTEsIGEyKSA6OiBjb21iaW5lIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5jb21iaW5lXCJcblxuKCoqIHNvcnRpbmcgKilcblxubGV0IHJlYyBtZXJnZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsMiAtPiBsMlxuICB8IGwxLCBbXSAtPiBsMVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgIHRoZW4gaDEgOjogbWVyZ2UgY21wIHQxIGwyXG4gICAgICBlbHNlIGgyIDo6IG1lcmdlIGNtcCBsMSB0MlxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA8PSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA+IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCBzb3J0ID0gc3RhYmxlX3NvcnRcbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiBOb3RlOiBvbiBhIGxpc3Qgb2YgbGVuZ3RoIGJldHdlZW4gYWJvdXQgMTAwMDAwIChkZXBlbmRpbmcgb24gdGhlIG1pbm9yXG4gICBoZWFwIHNpemUgYW5kIHRoZSB0eXBlIG9mIHRoZSBsaXN0KSBhbmQgU3lzLm1heF9hcnJheV9zaXplLCBpdCBpc1xuICAgYWN0dWFsbHkgZmFzdGVyIHRvIHVzZSB0aGUgZm9sbG93aW5nLCBidXQgaXQgbWlnaHQgYWxzbyB1c2UgbW9yZSBtZW1vcnlcbiAgIGJlY2F1c2UgdGhlIGFyZ3VtZW50IGxpc3QgY2Fubm90IGJlIGRlYWxsb2NhdGVkIGluY3JlbWVudGFsbHkuXG5cbiAgIEFsc28sIHRoZXJlIHNlZW1zIHRvIGJlIGEgYnVnIGluIHRoaXMgY29kZSBvciBpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIG9ial90cnVuY2F0ZS5cblxuZXh0ZXJuYWwgb2JqX3RydW5jYXRlIDogJ2EgYXJyYXkgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcblxubGV0IGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGFjY3UgbiBwID1cbiAgICBpZiBwIDw9IDAgdGhlbiBhY2N1IGVsc2UgYmVnaW5cbiAgICAgIGlmIHAgPSBuIHRoZW4gYmVnaW5cbiAgICAgICAgb2JqX3RydW5jYXRlIGEgcDtcbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSAobi0xMDAwKSAocC0xKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSBuIChwLTEpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBbXSAobC0xMDAwKSBsXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgQXJyYXkuc3RhYmxlX3NvcnQgY21wIGE7XG4gIGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYVxuXG4qKVxuXG5cbigqKiBzb3J0aW5nICsgcmVtb3ZpbmcgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCBuID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT5cbiAgICBpZiBuID0gMCB0aGVuIDAgZWxzZVxuICAgICAgaWYgbiA+IDAgdGhlbiAtMSBlbHNlIDFcbiAgfCBfIDo6IGwgLT5cbiAgICBpZiBuIDw9IDAgdGhlbiAxIGVsc2VcbiAgICAgIGNvbXBhcmVfbGVuZ3RoX3dpdGggbCAobi0xKVxuXG4oKiogezEgQ29tcGFyaXNvbn0gKilcblxuKCogTm90ZTogd2UgYXJlICpub3QqIHNob3J0Y3V0dGluZyB0aGUgbGlzdCBieSB1c2luZ1xuICAgW0xpc3QuY29tcGFyZV9sZW5ndGhzXSBmaXJzdDsgdGhpcyBtYXkgYmUgc2xvd2VyIG9uIGxvbmcgbGlzdHNcbiAgIGltbWVkaWF0ZWx5IHN0YXJ0IHdpdGggZGlzdGluY3QgZWxlbWVudHMuIEl0IGlzIGFsc28gaW5jb3JyZWN0IGZvclxuICAgW2NvbXBhcmVdIGJlbG93LCBhbmQgaXQgaXMgYmV0dGVyIChwcmluY2lwbGUgb2YgbGVhc3Qgc3VycHJpc2UpIHRvXG4gICB1c2UgdGhlIHNhbWUgYXBwcm9hY2ggZm9yIGJvdGggZnVuY3Rpb25zLiAqKVxubGV0IHJlYyBlcXVhbCBlcSBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IHRydWVcbiAgfCBbXSwgXzo6XyB8IF86Ol8sIFtdIC0+IGZhbHNlXG4gIHwgYTE6OmwxLCBhMjo6bDIgLT4gZXEgYTEgYTIgJiYgZXF1YWwgZXEgbDEgbDJcblxubGV0IHJlYyBjb21wYXJlIGNtcCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXzo6XyAtPiAtMVxuICB8IF86Ol8sIFtdIC0+IDFcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPlxuICAgIGxldCBjID0gY21wIGExIGEyIGluXG4gICAgaWYgYyA8PiAwIHRoZW4gY1xuICAgIGVsc2UgY29tcGFyZSBjbXAgbDEgbDJcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBsID1cbiAgbGV0IHJlYyBhdXggbCAoKSA9IG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gU2VxLk5pbFxuICAgIHwgeCA6OiB0YWlsIC0+IFNlcS5Db25zICh4LCBhdXggdGFpbClcbiAgaW5cbiAgYXV4IGxcblxubGV0IG9mX3NlcSBzZXEgPVxuICBsZXQgcmVjIGRpcmVjdCBkZXB0aCBzZXEgOiBfIGxpc3QgPVxuICAgIGlmIGRlcHRoPTBcbiAgICB0aGVuXG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBzZXFcbiAgICAgIHw+IHJldiAoKiB0YWlscmVjICopXG4gICAgZWxzZSBtYXRjaCBzZXEoKSB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gW11cbiAgICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+IHggOjogZGlyZWN0IChkZXB0aC0xKSBuZXh0XG4gIGluXG4gIGRpcmVjdCA1MDAgc2VxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcbmV4dGVybmFsIG5lZyA6IGludCAtPiBpbnQgPSBcIiVuZWdpbnRcIlxuZXh0ZXJuYWwgYWRkIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgc3ViIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVzdWJpbnRcIlxuZXh0ZXJuYWwgbXVsIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuZXh0ZXJuYWwgZGl2IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgcmVtIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtb2RpbnRcIlxuZXh0ZXJuYWwgc3VjYyA6IGludCAtPiBpbnQgPSBcIiVzdWNjaW50XCJcbmV4dGVybmFsIHByZWQgOiBpbnQgLT4gaW50ID0gXCIlcHJlZGludFwiXG5sZXQgYWJzIHggPSBpZiB4ID49IDAgdGhlbiB4IGVsc2UgLXhcbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuZXh0ZXJuYWwgbG9nYW5kIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsIGxvZ3hvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIleG9yaW50XCJcbmxldCBsb2dub3QgeCA9IGxvZ3hvciB4ICgtMSlcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzbGludFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWxzcmludFwiXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbmV4dGVybmFsIHRvX2Zsb2F0IDogaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRvZmludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuXG4oKlxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nIHMgPSB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4qKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5sZXQgdG9fc3RyaW5nIHggPSBmb3JtYXRfaW50IFwiJWRcIiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zLiBXaGVuIHlvdSBtb2RpZnkgdGhlIG9uZSBpbiB0aGlzIGZpbGUgeW91IG5lZWQgdG9cbiAgIG1vZGlmeSBpdHMgZHVwbGljYXRlIGluIHN0cmluZy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogYnl0ZXMgLT4gaW50ID0gXCIlYnl0ZXNfbGVuZ3RoXCJcbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBnZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gYnl0ZXMgPSBcImNhbWxfY3JlYXRlX2J5dGVzXCJcbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciA9IFwiJWJ5dGVzX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX3RvX3N0cmluZyA6IGJ5dGVzIC0+IHN0cmluZyA9IFwiJWJ5dGVzX3RvX3N0cmluZ1wiXG5leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGJ5dGVzID0gXCIlYnl0ZXNfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBieXRlcyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X2J5dGVzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmxldCBtYWtlIG4gYyA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgdW5zYWZlX2ZpbGwgcyAwIG4gYztcbiAgc1xuXG5sZXQgaW5pdCBuIGYgPVxuICBsZXQgcyA9IGNyZWF0ZSBuIGluXG4gIGZvciBpID0gMCB0byBuIC0gMSBkb1xuICAgIHVuc2FmZV9zZXQgcyBpIChmIGkpXG4gIGRvbmU7XG4gIHNcblxubGV0IGVtcHR5ID0gY3JlYXRlIDBcblxubGV0IGNvcHkgcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgcyAwIHIgMCBsZW47XG4gIHJcblxubGV0IHRvX3N0cmluZyBiID0gdW5zYWZlX3RvX3N0cmluZyAoY29weSBiKVxubGV0IG9mX3N0cmluZyBzID0gY29weSAodW5zYWZlX29mX3N0cmluZyBzKVxuXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLnN1YiAvIEJ5dGVzLnN1YlwiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBzIG9mcyByIDAgbGVuO1xuICAgIHJcbiAgZW5kXG5cbmxldCBzdWJfc3RyaW5nIGIgb2ZzIGxlbiA9IHVuc2FmZV90b19zdHJpbmcgKHN1YiBiIG9mcyBsZW4pXG5cbigqIGFkZGl0aW9uIHdpdGggYW4gb3ZlcmZsb3cgY2hlY2sgKilcbmxldCAoKyspIGEgYiA9XG4gIGxldCBjID0gYSArIGIgaW5cbiAgbWF0Y2ggYSA8IDAsIGIgPCAwLCBjIDwgMCB3aXRoXG4gIHwgdHJ1ZSAsIHRydWUgLCBmYWxzZVxuICB8IGZhbHNlLCBmYWxzZSwgdHJ1ZSAgLT4gaW52YWxpZF9hcmcgXCJCeXRlcy5leHRlbmRcIiAoKiBvdmVyZmxvdyAqKVxuICB8IF8gLT4gY1xuXG5sZXQgZXh0ZW5kIHMgbGVmdCByaWdodCA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyArKyBsZWZ0ICsrIHJpZ2h0IGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICBsZXQgKHNyY29mZiwgZHN0b2ZmKSA9IGlmIGxlZnQgPCAwIHRoZW4gLWxlZnQsIDAgZWxzZSAwLCBsZWZ0IGluXG4gIGxldCBjcHlsZW4gPSBJbnQubWluIChsZW5ndGggcyAtIHNyY29mZikgKGxlbiAtIGRzdG9mZikgaW5cbiAgaWYgY3B5bGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IHMgc3Jjb2ZmIHIgZHN0b2ZmIGNweWxlbjtcbiAgclxuXG5sZXQgZmlsbCBzIG9mcyBsZW4gYyA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmZpbGwgLyBCeXRlcy5maWxsXCJcbiAgZWxzZSB1bnNhZmVfZmlsbCBzIG9mcyBsZW4gY1xuXG5sZXQgYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gbGVuZ3RoIHMxIC0gbGVuXG4gICAgICAgICAgICAgfHwgb2ZzMiA8IDAgfHwgb2ZzMiA+IGxlbmd0aCBzMiAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnl0ZXMuYmxpdFwiXG4gIGVsc2UgdW5zYWZlX2JsaXQgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG5sZXQgYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IHN0cmluZ19sZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuYmxpdCAvIEJ5dGVzLmJsaXRfc3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmcgczEgb2ZzMSBzMiBvZnMyIGxlblxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlcmkgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIGludmFsaWRfYXJnIFwiQnl0ZXMuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBlbXB0eVxuICB8IGwgLT4gbGV0IHNlcGxlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChjcmVhdGUgKHN1bV9sZW5ndGhzIDAgc2VwbGVuIGwpKVxuICAgICAgICAgICAgMCBzZXAgc2VwbGVuIGxcblxubGV0IGNhdCBzMSBzMiA9XG4gIGxldCBsMSA9IGxlbmd0aCBzMSBpblxuICBsZXQgbDIgPSBsZW5ndGggczIgaW5cbiAgbGV0IHIgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gIHVuc2FmZV9ibGl0IHMxIDAgciAwIGwxO1xuICB1bnNhZmVfYmxpdCBzMiAwIHIgbDEgbDI7XG4gIHJcblxuXG5leHRlcm5hbCBjaGFyX2NvZGU6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgY2hhcl9jaHI6IGludCAtPiBjaGFyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGxldCBsZW4gPSBsZW5ndGggcyBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbGVuICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWkpIGRvXG4gICAgaW5jciBpXG4gIGRvbmU7XG4gIGxldCBqID0gcmVmIChsZW4gLSAxKSBpblxuICB3aGlsZSAhaiA+PSAhaSAmJiBpc19zcGFjZSAodW5zYWZlX2dldCBzICFqKSBkb1xuICAgIGRlY3IgalxuICBkb25lO1xuICBpZiAhaiA+PSAhaSB0aGVuXG4gICAgc3ViIHMgIWkgKCFqIC0gIWkgKyAxKVxuICBlbHNlXG4gICAgZW1wdHlcblxubGV0IHVuc2FmZV9lc2NhcGUgcyA9XG4gICgqIFdlIHBlcmZvcm0gdHdvIHBhc3NlcyBvbiB0aGUgaW5wdXQgc2VxdWVuY2UsIG9uZSB0byBjb21wdXRlIHRoZVxuICAgICByZXN1bHQgc2l6ZSBhbmQgb25lIHRvIHdyaXRlIHRoZSByZXN1bHQuXG5cbiAgICAgIzExNTA4LCAjMTE1MDk6IFRoaXMgbG9naWMgd291bGQgYmUgaW5jb3JyZWN0IGluIHByZXNlbmNlIG9mXG4gICAgIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9uIHRvIHRoZSBpbnB1dCwgbWFraW5nIHRoZSB1c2Ugb2ZcbiAgICAgW3Vuc2FmZV9zZXRdIGJlbG93IG1lbW9yeS11bnNhZmUuXG5cbiAgICAgUHJlY29uZGl0aW9uOiBUaGlzIGZ1bmN0aW9uIG1heSBiZSBzYWZlbHkgY2FsbGVkIG9uOlxuICAgICAtIGFuIGltbXV0YWJsZSBieXRlIHNlcXVlbmNlXG4gICAgIC0gYSB1bmlxdWVseS1vd25lZCBieXRlIHNlcXVlbmNlICh0aGUgZnVuY3Rpb24gdGFrZXMgb3duZXJzaGlwKVxuXG4gICAgIEluIGVpdGhlciBjYXNlIHdlIHJldHVybiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UuXG4gICopXG4gIGxldCBuID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgIG4gOj0gIW4gK1xuICAgICAgKG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgICB8ICdcXFwiJyB8ICdcXFxcJyB8ICdcXG4nIHwgJ1xcdCcgfCAnXFxyJyB8ICdcXGInIC0+IDJcbiAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgIHwgXyAtPiA0KVxuICBkb25lO1xuICBpZiAhbiA9IGxlbmd0aCBzIHRoZW4gc1xuICBlbHNlIGJlZ2luXG4gICAgbGV0IHMnID0gY3JlYXRlICFuIGluXG4gICAgbiA6PSAwO1xuICAgIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICAgIGJlZ2luIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgKCdcXFwiJyB8ICdcXFxcJykgYXMgYyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ24nXG4gICAgICB8ICdcXHQnIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAndCdcbiAgICAgIHwgJ1xccicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ2InXG4gICAgICB8ICgnICcgLi4gJ34nKSBhcyBjIC0+IHVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgfCBjIC0+XG4gICAgICAgICAgbGV0IGEgPSBjaGFyX2NvZGUgYyBpblxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIC8gMTAwKSk7XG4gICAgICAgICAgaW5jciBuO1xuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gKGNoYXJfY2hyICg0OCArIChhIC8gMTApIG1vZCAxMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyBhIG1vZCAxMCkpO1xuICAgICAgZW5kO1xuICAgICAgaW5jciBuXG4gICAgZG9uZTtcbiAgICBzJ1xuICBlbmRcblxubGV0IGVzY2FwZWQgYiA9XG4gIGxldCBiID0gY29weSBiIGluXG4gICgqIFdlIGNvcHkgb3VyIGlucHV0IHRvIG9idGFpbiBhIHVuaXF1ZWx5LW93bmVkIGJ5dGUgc2VxdWVuY2UgW2JdXG4gICAgIHRvIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uICopXG4gIHVuc2FmZV9lc2NhcGUgYlxuXG5sZXQgbWFwIGYgcyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgbCA9IDAgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcGkgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBzIGkpKSBkb25lO1xuICAgIHJcbiAgZW5kXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgcyBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgcyA9XG4gIGxldCBuID0gbGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLnVwcGVyY2FzZV9hc2NpaSBzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPSBtYXAgQ2hhci5sb3dlcmNhc2VfYXNjaWkgc1xuXG5sZXQgYXBwbHkxIGYgcyA9XG4gIGlmIGxlbmd0aCBzID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY29weSBzIGluXG4gICAgdW5zYWZlX3NldCByIDAgKGYodW5zYWZlX2dldCBzIDApKTtcbiAgICByXG4gIGVuZFxuXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCB1bmNhcGl0YWxpemVfYXNjaWkgcyA9IGFwcGx5MSBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXggcyBjID0gaW5kZXhfcmVjIHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleF9mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nLmluZGV4X2Zyb20gLyBCeXRlcy5pbmRleF9mcm9tXCIgZWxzZVxuICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlYyBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIHJpbmRleF9yZWMgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgcmluZGV4X3JlY19vcHQgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSByaW5kZXhfcmVjX29wdCBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJjb250YWluc19mcm9tIHMgaSBjID1cbiAgaWYgaSA8IDAgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5yY29udGFpbnNfZnJvbVwiXG4gIGVsc2VcbiAgICB0cnkgaWdub3JlIChyaW5kZXhfcmVjIHMgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG5cbnR5cGUgdCA9IGJ5dGVzXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBcImNhbWxfYnl0ZXNfZXF1YWxcIiBbQEBub2FsbG9jXVxuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPSBsZW5ndGggcyB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IGdldCBzIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBsZXQgYnVmID0gcmVmIChtYWtlIDI1NiAnXFwwMDAnKSBpblxuICBsZXQgcmVzaXplICgpID1cbiAgICAoKiByZXNpemUgKilcbiAgICBsZXQgbmV3X2xlbiA9IEludC5taW4gKDIgKiBsZW5ndGggIWJ1ZikgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGluXG4gICAgaWYgbGVuZ3RoICFidWYgPSBuZXdfbGVuIHRoZW4gZmFpbHdpdGggXCJCeXRlcy5vZl9zZXE6IGNhbm5vdCBncm93IGJ5dGVzXCI7XG4gICAgbGV0IG5ld19idWYgPSBtYWtlIG5ld19sZW4gJ1xcMDAwJyBpblxuICAgIGJsaXQgIWJ1ZiAwIG5ld19idWYgMCAhbjtcbiAgICBidWYgOj0gbmV3X2J1ZlxuICBpblxuICBTZXEuaXRlclxuICAgIChmdW4gYyAtPlxuICAgICAgIGlmICFuID0gbGVuZ3RoICFidWYgdGhlbiByZXNpemUoKTtcbiAgICAgICBzZXQgIWJ1ZiAhbiBjO1xuICAgICAgIGluY3IgbilcbiAgICBpO1xuICBzdWIgIWJ1ZiAwICFuXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbigqIFRoZSBnZXRfIGZ1bmN0aW9ucyBhcmUgYWxsIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5cbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc191bnNhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfdWludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZ1XCJcbmV4dGVybmFsIHNldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgc2V0X2ludDE2X25lIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNlwiXG5leHRlcm5hbCBzZXRfaW50MzJfbmUgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJcIlxuZXh0ZXJuYWwgc2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDY0XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHN3YXAxNiAodW5zYWZlX2dldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIHVuc2FmZV9nZXRfdWludDE2X25lIGIgaVxuXG5sZXQgdW5zYWZlX2dldF91aW50MTZfYmUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfZ2V0X3VpbnQxNl9uZSBiIGlcbiAgZWxzZSBzd2FwMTYgKHVuc2FmZV9nZXRfdWludDE2X25lIGIgaSlcblxubGV0IGdldF9pbnQ4IGIgaSA9XG4gICgoZ2V0X3VpbnQ4IGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSA4KSkgYXNyIChTeXMuaW50X3NpemUgLSA4KVxuXG5sZXQgZ2V0X3VpbnQxNl9sZSBiIGkgPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAxNiAoZ2V0X3VpbnQxNl9uZSBiIGkpXG4gIGVsc2UgZ2V0X3VpbnQxNl9uZSBiIGlcblxubGV0IGdldF91aW50MTZfYmUgYiBpID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X2ludDE2X25lIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9uZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2xlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9sZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDE2X2JlIGIgaSA9XG4gICgoZ2V0X3VpbnQxNl9iZSBiIGkpIGxzbCAoU3lzLmludF9zaXplIC0gMTYpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDE2KVxuXG5sZXQgZ2V0X2ludDMyX2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIChnZXRfaW50MzJfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQzMl9uZSBiIGlcblxubGV0IGdldF9pbnQzMl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IChnZXRfaW50NjRfbmUgYiBpKVxuICBlbHNlIGdldF9pbnQ2NF9uZSBiIGlcblxubGV0IGdldF9pbnQ2NF9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldF91aW50MTZfbmUgYiBpIHhcblxubGV0IHVuc2FmZV9zZXRfdWludDE2X2JlIGIgaSB4ID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0X3VpbnQxNl9uZSBiIGkgeCBlbHNlXG4gIHVuc2FmZV9zZXRfdWludDE2X25lIGIgaSAoc3dhcDE2IHgpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuXG4oKiBVVEYgY29kZWNzIGFuZCB2YWxpZGF0aW9ucyAqKVxuXG5sZXQgZGVjX2ludmFsaWQgPSBVY2hhci51dGZfZGVjb2RlX2ludmFsaWRcbmxldFtAaW5saW5lXSBkZWNfcmV0IG4gdSA9IFVjaGFyLnV0Zl9kZWNvZGUgbiAoVWNoYXIudW5zYWZlX29mX2ludCB1KVxuXG4oKiBJbiBjYXNlIG9mIGRlY29kaW5nIGVycm9yLCBpZiB3ZSBlcnJvciBvbiB0aGUgZmlyc3QgYnl0ZSwgd2VcbiAgIGNvbnN1bWUgdGhlIGJ5dGUsIG90aGVyd2lzZSB3ZSBjb25zdW1lIHRoZSBbbl0gYnl0ZXMgcHJlY2VkaW5nXG4gICB0aGUgZXJyb3JpbmcgYnl0ZS5cblxuICAgVGhpcyBtZWFucyB0aGF0IGlmIGEgY2xpZW50IHVzZXMgZGVjb2RlcyB3aXRob3V0IGNhcmluZyBhYm91dFxuICAgdmFsaWRpdHkgaXQgbmF0dXJhbGx5IHJlcGxhY2UgYm9ndXMgZGF0YSB3aXRoIFVjaGFyLnJlcCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBXSEFUV0cgRW5jb2Rpbmcgc3RhbmRhcmQuIE90aGVyIHNjaGVtZXMgYXJlIHBvc3NpYmxlIGJ5XG4gICBjb25zdWx0aW5nIHRoZSBudW1iZXIgb2YgdXNlZCBieXRlcyBvbiBpbnZhbGlkIGRlY29kZXMuIEZvciBtb3JlXG4gICBkZXRhaWxzIHNlZSBodHRwczovL2hzaXZvbmVuLmZpL2Jyb2tlbi11dGYtOC9cblxuICAgRm9yIHRoaXMgcmVhc29uIGluIFtnZXRfdXRmXzhfdWNoYXJdIHdlIGdyYWR1YWxseSBjaGVjayB0aGUgbmV4dFxuICAgYnl0ZSBpcyBhdmFpbGFibGUgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlXG4gICBmaXJzdCBieXRlLiBDb250cmFzdCB3aXRoIFtpc192YWxpZF91dGZfOF0uICopXG5cbigqIFVURi04ICopXG5cbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3hCRiBiID0gYiBsc3IgNiA8PiAwYjEwXG5sZXRbQGlubGluZV0gbm90X2luX3hBMF90b194QkYgYiA9IGIgbHNyIDUgPD4gMGIxMDFcbmxldFtAaW5saW5lXSBub3RfaW5feDgwX3RvX3g5RiBiID0gYiBsc3IgNSA8PiAwYjEwMFxubGV0W0BpbmxpbmVdIG5vdF9pbl94OTBfdG9feEJGIGIgPSBiIDwgMHg5MCB8fCAweEJGIDwgYlxubGV0W0BpbmxpbmVdIG5vdF9pbl94ODBfdG9feDhGIGIgPSBiIGxzciA0IDw+IDB4OFxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfMiBiMCBiMSA9XG4gICgoYjAgbGFuZCAweDFGKSBsc2wgNikgbG9yXG4gICgoYjEgbGFuZCAweDNGKSlcblxubGV0W0BpbmxpbmVdIHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIgPVxuICAoKGIwIGxhbmQgMHgwRikgbHNsIDEyKSBsb3JcbiAgKChiMSBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpKVxuXG5sZXRbQGlubGluZV0gdXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMyA9XG4gICgoYjAgbGFuZCAweDA3KSBsc2wgMTgpIGxvclxuICAoKGIxIGxhbmQgMHgzRikgbHNsIDEyKSBsb3JcbiAgKChiMiBsYW5kIDB4M0YpIGxzbCA2KSBsb3JcbiAgKChiMyBsYW5kIDB4M0YpKVxuXG5sZXQgZ2V0X3V0Zl84X3VjaGFyIGIgaSA9XG4gIGxldCBiMCA9IGdldF91aW50OCBiIGkgaW4gKCogcmFpc2VzIGlmIFtpXSBpcyBub3QgYSB2YWxpZCBpbmRleC4gKilcbiAgbGV0IGdldCA9IHVuc2FmZV9nZXRfdWludDggaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBtYXRjaCBDaGFyLnVuc2FmZV9jaHIgYjAgd2l0aCAoKiBTZWUgVGhlIFVuaWNvZGUgU3RhbmRhcmQsIFRhYmxlIDMuNyAqKVxuICB8ICdcXHgwMCcgLi4gJ1xceDdGJyAtPiBkZWNfcmV0IDEgYjBcbiAgfCAnXFx4QzInIC4uICdcXHhERicgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgZGVjX3JldCAyICh1dGZfOF91Y2hhcl8yIGIwIGIxKVxuICB8ICdcXHhFMCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feEEwX3RvX3hCRiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEUxJyAuLiAnXFx4RUMnIHwgJ1xceEVFJyAuLiAnXFx4RUYnIC0+XG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBiMSA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjEgdGhlbiBkZWNfaW52YWxpZCAxIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgbGV0IGIyID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMiB0aGVuIGRlY19pbnZhbGlkIDIgZWxzZVxuICAgICAgZGVjX3JldCAzICh1dGZfOF91Y2hhcl8zIGIwIGIxIGIyKVxuICB8ICdcXHhFRCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g5RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBkZWNfcmV0IDMgKHV0Zl84X3VjaGFyXzMgYjAgYjEgYjIpXG4gIHwgJ1xceEYwJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94OTBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGMScgLi4gJ1xceEYzJyAtPlxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgYjEgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIxIHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBiMiA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjIgdGhlbiBkZWNfaW52YWxpZCAyIGVsc2VcbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgbGV0IGIzID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3hCRiBiMyB0aGVuIGRlY19pbnZhbGlkIDMgZWxzZVxuICAgICAgZGVjX3JldCA0ICh1dGZfOF91Y2hhcl80IGIwIGIxIGIyIGIzKVxuICB8ICdcXHhGNCcgLT5cbiAgICAgIGxldCBpID0gaSArIDEgaW4gaWYgaSA+IG1heCB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGIxID0gZ2V0IGIgaSBpbiBpZiBub3RfaW5feDgwX3RvX3g4RiBiMSB0aGVuIGRlY19pbnZhbGlkIDEgZWxzZVxuICAgICAgbGV0IGkgPSBpICsgMSBpbiBpZiBpID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgYjIgPSBnZXQgYiBpIGluIGlmIG5vdF9pbl94ODBfdG9feEJGIGIyIHRoZW4gZGVjX2ludmFsaWQgMiBlbHNlXG4gICAgICBsZXQgaSA9IGkgKyAxIGluIGlmIGkgPiBtYXggdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGxldCBiMyA9IGdldCBiIGkgaW4gaWYgbm90X2luX3g4MF90b194QkYgYjMgdGhlbiBkZWNfaW52YWxpZCAzIGVsc2VcbiAgICAgIGRlY19yZXQgNCAodXRmXzhfdWNoYXJfNCBiMCBiMSBiMiBiMylcbiAgfCBfIC0+IGRlY19pbnZhbGlkIDFcblxubGV0IHNldF91dGZfOF91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQ4IGluXG4gIGxldCBtYXggPSBsZW5ndGggYiAtIDEgaW5cbiAgbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuICB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiAgfCB1IHdoZW4gdSA8PSAweDAwN0YgLT5cbiAgICAgIHNldF91aW50OCBiIGkgdTtcbiAgICAgIDFcbiAgfCB1IHdoZW4gdSA8PSAweDA3RkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIChzZXRfdWludDggYiBpICgweEMwIGxvciAodSBsc3IgNikpO1xuICAgICAgIHNldCBiIGxhc3QgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpO1xuICAgICAgIDIpXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhFMCBsb3IgKHUgbHNyIDEyKSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICAzKVxuICB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlXG4gICAgICAoc2V0X3VpbnQ4IGIgaSAoMHhGMCBsb3IgKHUgbHNyIDE4KSk7XG4gICAgICAgc2V0IGIgKGkgKyAxKSAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSk7XG4gICAgICAgc2V0IGIgKGkgKyAyKSAoMHg4MCBsb3IgKCh1IGxzciA2KSBsYW5kIDB4M0YpKTtcbiAgICAgICBzZXQgYiBsYXN0ICgweDgwIGxvciAodSBsYW5kIDB4M0YpKTtcbiAgICAgICA0KVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBpc192YWxpZF91dGZfOCBiID1cbiAgbGV0IHJlYyBsb29wIG1heCBiIGkgPVxuICAgIGlmIGkgPiBtYXggdGhlbiB0cnVlIGVsc2VcbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50OCBpblxuICAgIG1hdGNoIENoYXIudW5zYWZlX2NociAoZ2V0IGIgaSkgd2l0aFxuICAgIHwgJ1xceDAwJyAuLiAnXFx4N0YnIC0+IGxvb3AgbWF4IGIgKGkgKyAxKVxuICAgIHwgJ1xceEMyJyAuLiAnXFx4REYnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDEgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEUwJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3hBMF90b194QkYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RTEnIC4uICdcXHhFQycgfCAnXFx4RUUnIC4uICdcXHhFRicgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMiBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgbGFzdClcbiAgICAgICAgdGhlbiBmYWxzZVxuICAgICAgICBlbHNlIGxvb3AgbWF4IGIgKGxhc3QgKyAxKVxuICAgIHwgJ1xceEVEJyAtPlxuICAgICAgICBsZXQgbGFzdCA9IGkgKyAyIGluXG4gICAgICAgIGlmIGxhc3QgPiBtYXhcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194OUYgKGdldCBiIChpICsgMSkpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjAnIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heFxuICAgICAgICB8fCBub3RfaW5feDkwX3RvX3hCRiAoZ2V0IGIgKGkgKyAxKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIChpICsgMikpXG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiBsYXN0KVxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgbG9vcCBtYXggYiAobGFzdCArIDEpXG4gICAgfCAnXFx4RjEnIC4uICdcXHhGMycgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feEJGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8ICdcXHhGNCcgLT5cbiAgICAgICAgbGV0IGxhc3QgPSBpICsgMyBpblxuICAgICAgICBpZiBsYXN0ID4gbWF4XG4gICAgICAgIHx8IG5vdF9pbl94ODBfdG9feDhGIChnZXQgYiAoaSArIDEpKVxuICAgICAgICB8fCBub3RfaW5feDgwX3RvX3hCRiAoZ2V0IGIgKGkgKyAyKSlcbiAgICAgICAgfHwgbm90X2luX3g4MF90b194QkYgKGdldCBiIGxhc3QpXG4gICAgICAgIHRoZW4gZmFsc2VcbiAgICAgICAgZWxzZSBsb29wIG1heCBiIChsYXN0ICsgMSlcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2QkUgKilcblxubGV0IGdldF91dGZfMTZiZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZiZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9iZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2YmUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfYmUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcblxuKCogVVRGLTE2TEUgKilcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBiIGkgPVxuICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgbGV0IG1heCA9IGxlbmd0aCBiIC0gMSBpblxuICBpZiBpIDwgMCB8fCBpID4gbWF4IHRoZW4gaW52YWxpZF9hcmcgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgZWxzZVxuICBpZiBpID0gbWF4IHRoZW4gZGVjX2ludmFsaWQgMSBlbHNlXG4gIG1hdGNoIGdldCBiIGkgd2l0aFxuICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gZGVjX3JldCAyIHVcbiAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBkZWNfaW52YWxpZCAyXG4gIHwgaGkgLT4gKCogY29tYmluZSBbaGldIHdpdGggYSBsb3cgc3Vycm9nYXRlICopXG4gICAgICBsZXQgbGFzdCA9IGkgKyAzIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gZGVjX2ludmFsaWQgKG1heCAtIGkgKyAxKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiAoaSArIDIpIHdpdGhcbiAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBkZWNfaW52YWxpZCAyICgqIHJldHJ5IGhlcmUgKilcbiAgICAgIHwgbG8gLT5cbiAgICAgICAgICBsZXQgdSA9ICgoKGhpIGxhbmQgMHgzRkYpIGxzbCAxMCkgbG9yIChsbyBsYW5kIDB4M0ZGKSkgKyAweDEwMDAwIGluXG4gICAgICAgICAgZGVjX3JldCA0IHVcblxubGV0IHNldF91dGZfMTZsZV91Y2hhciBiIGkgdSA9XG4gIGxldCBzZXQgPSB1bnNhZmVfc2V0X3VpbnQxNl9sZSBpblxuICBsZXQgbWF4ID0gbGVuZ3RoIGIgLSAxIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBtYXggdGhlbiBpbnZhbGlkX2FyZyBcImluZGV4IG91dCBvZiBib3VuZHNcIiBlbHNlXG4gIG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiAgfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgdSB3aGVuIHUgPD0gMHhGRkZGIC0+XG4gICAgICBsZXQgbGFzdCA9IGkgKyAxIGluXG4gICAgICBpZiBsYXN0ID4gbWF4IHRoZW4gMCBlbHNlIChzZXQgYiBpIHU7IDIpXG4gIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgIGlmIGxhc3QgPiBtYXggdGhlbiAwIGVsc2VcbiAgICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgICBsZXQgaGkgPSAoMHhEODAwIGxvciAodScgbHNyIDEwKSkgaW5cbiAgICAgIGxldCBsbyA9ICgweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSkgaW5cbiAgICAgIHNldCBiIGkgaGk7IHNldCBiIChpICsgMikgbG87IDRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgaXNfdmFsaWRfdXRmXzE2bGUgYiA9XG4gIGxldCByZWMgbG9vcCBtYXggYiBpID1cbiAgICBsZXQgZ2V0ID0gdW5zYWZlX2dldF91aW50MTZfbGUgaW5cbiAgICBpZiBpID4gbWF4IHRoZW4gdHJ1ZSBlbHNlXG4gICAgaWYgaSA9IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICB8IHUgd2hlbiB1IDwgMHhEODAwIHx8IHUgPiAweERGRkYgLT4gbG9vcCBtYXggYiAoaSArIDIpXG4gICAgfCB1IHdoZW4gdSA+IDB4REJGRiAtPiBmYWxzZVxuICAgIHwgX2hpIC0+XG4gICAgICAgIGxldCBsYXN0ID0gaSArIDMgaW5cbiAgICAgICAgaWYgbGFzdCA+IG1heCB0aGVuIGZhbHNlIGVsc2VcbiAgICAgICAgbWF0Y2ggZ2V0IGIgKGkgKyAyKSB3aXRoXG4gICAgICAgIHwgdSB3aGVuIHUgPCAweERDMDAgfHwgdSA+IDB4REZGRiAtPiBmYWxzZVxuICAgICAgICB8IF9sbyAtPiBsb29wIG1heCBiIChpICsgNClcbiAgaW5cbiAgbG9vcCAobGVuZ3RoIGIgLSAxKSBiIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IEdhbGxpdW0sIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU3RyaW5nIG9wZXJhdGlvbnMsIGJhc2VkIG9uIGJ5dGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyAqKVxuXG4oKiBXQVJOSU5HOiBTb21lIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUgYXJlIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gYnl0ZXMubWwuXG4gICBUaGVzZSBmdW5jdGlvbnMgaGF2ZSBhIFwiZHVwbGljYXRlZFwiIGNvbW1lbnQgYWJvdmUgdGhlaXIgZGVmaW5pdGlvbi5cbiopXG5cbmV4dGVybmFsIGxlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+ICBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubW9kdWxlIEIgPSBCeXRlc1xuXG5sZXQgYnRzID0gQi51bnNhZmVfdG9fc3RyaW5nXG5sZXQgYm9zID0gQi51bnNhZmVfb2Zfc3RyaW5nXG5cbmxldCBtYWtlIG4gYyA9XG4gIEIubWFrZSBuIGMgfD4gYnRzXG5sZXQgaW5pdCBuIGYgPVxuICBCLmluaXQgbiBmIHw+IGJ0c1xubGV0IGVtcHR5ID0gXCJcIlxubGV0IG9mX2J5dGVzID0gQi50b19zdHJpbmdcbmxldCB0b19ieXRlcyA9IEIub2Zfc3RyaW5nXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIEIuc3ViIChib3Mgcykgb2ZzIGxlbiB8PiBidHNcbmxldCBibGl0ID1cbiAgQi5ibGl0X3N0cmluZ1xuXG5sZXQgZW5zdXJlX2dlICh4OmludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIlN0cmluZy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IFwiXCJcbiAgfCBsIC0+IGxldCBzZXBsZW4gPSBsZW5ndGggc2VwIGluIGJ0cyBAQFxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKEIuY3JlYXRlIChzdW1fbGVuZ3RocyAwIHNlcGxlbiBsKSlcbiAgICAgICAgICAgIDAgc2VwIHNlcGxlbiBsXG5cbmxldCBjYXQgPSAoIF4gKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlciBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpdGVyaSBmIHMgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBzIGkpIGRvbmVcblxubGV0IG1hcCBmIHMgPVxuICBCLm1hcCBmIChib3MgcykgfD4gYnRzXG5sZXQgbWFwaSBmIHMgPVxuICBCLm1hcGkgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IGZvbGRfcmlnaHQgZiB4IGEgPVxuICBCLmZvbGRfcmlnaHQgZiAoYm9zIHgpIGFcbmxldCBmb2xkX2xlZnQgZiBhIHggPVxuICBCLmZvbGRfbGVmdCBmIGEgKGJvcyB4KVxubGV0IGV4aXN0cyBmIHMgPVxuICBCLmV4aXN0cyBmIChib3MgcylcbmxldCBmb3JfYWxsIGYgcyA9XG4gIEIuZm9yX2FsbCBmIChib3MgcylcblxuKCogQmV3YXJlOiB3ZSBjYW5ub3QgdXNlIEIudHJpbSBvciBCLmVzY2FwZSBiZWNhdXNlIHRoZXkgYWx3YXlzIG1ha2UgYVxuICAgY29weSwgYnV0IFN0cmluZy5tbGkgc3BlbGxzIG91dCBzb21lIGNhc2VzIHdoZXJlIHdlIGFyZSBub3QgYWxsb3dlZFxuICAgdG8gbWFrZSBhIGNvcHkuICopXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgaWYgcyA9IFwiXCIgdGhlbiBzXG4gIGVsc2UgaWYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAwKSB8fCBpc19zcGFjZSAodW5zYWZlX2dldCBzIChsZW5ndGggcyAtIDEpKVxuICAgIHRoZW4gYnRzIChCLnRyaW0gKGJvcyBzKSlcbiAgZWxzZSBzXG5cbmxldCBlc2NhcGVkIHMgPVxuICBsZXQgYiA9IGJvcyBzIGluXG4gICgqIFdlIHNhdGlzZnkgW3Vuc2FmZV9lc2NhcGVdJ3MgcHJlY29uZGl0aW9uIGJ5IHBhc3NpbmcgYW5cbiAgICAgaW1tdXRhYmxlIGJ5dGUgc2VxdWVuY2UgW2JdLiAqKVxuICBidHMgKEIudW5zYWZlX2VzY2FwZSBiKVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlYyBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSBpbmRleF9yZWMgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIGluZGV4X3JlY19vcHQgcyBsaW0gaSBjID1cbiAgaWYgaSA+PSBsaW0gdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgaW5kZXhfcmVjX29wdCBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X29wdCBzIGMgPSBpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzKSAwIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gICAgaW5kZXhfcmVjIHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9vcHQgLyBCeXRlcy5pbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICBpbmRleF9yZWNfb3B0IHMgbCBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4IHMgYyA9IHJpbmRleF9yZWMgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAtMSB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbSAvIEJ5dGVzLnJpbmRleF9mcm9tXCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWMgcyBpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfb3B0IHMgYyA9IHJpbmRleF9yZWNfb3B0IHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmluZGV4X2Zyb21fb3B0IHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tX29wdCAvIEJ5dGVzLnJpbmRleF9mcm9tX29wdFwiXG4gIGVsc2VcbiAgICByaW5kZXhfcmVjX29wdCBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLmNvbnRhaW5zX2Zyb20gLyBCeXRlcy5jb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKGluZGV4X3JlYyBzIGwgaSBjKTsgdHJ1ZSB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgY29udGFpbnMgcyBjID0gY29udGFpbnNfZnJvbSBzIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgcyA9XG4gIEIudXBwZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgbG93ZXJjYXNlX2FzY2lpIHMgPVxuICBCLmxvd2VyY2FzZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IGNhcGl0YWxpemVfYXNjaWkgcyA9XG4gIEIuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi51bmNhcGl0YWxpemVfYXNjaWkgKGJvcyBzKSB8PiBidHNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHN0YXJ0c193aXRoIH5wcmVmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fcHJlID0gbGVuZ3RoIHByZWZpeCBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3ByZSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyBpIDw+IHVuc2FmZV9nZXQgcHJlZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gbGVuX3MgPj0gbGVuX3ByZSAmJiBhdXggMFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgZW5kc193aXRoIH5zdWZmaXggcyA9XG4gIGxldCBsZW5fcyA9IGxlbmd0aCBzXG4gIGFuZCBsZW5fc3VmID0gbGVuZ3RoIHN1ZmZpeCBpblxuICBsZXQgZGlmZiA9IGxlbl9zIC0gbGVuX3N1ZiBpblxuICBsZXQgcmVjIGF1eCBpID1cbiAgICBpZiBpID0gbGVuX3N1ZiB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHVuc2FmZV9nZXQgcyAoZGlmZiArIGkpIDw+IHVuc2FmZV9nZXQgc3VmZml4IGkgdGhlbiBmYWxzZVxuICAgIGVsc2UgYXV4IChpICsgMSlcbiAgaW4gZGlmZiA+PSAwICYmIGF1eCAwXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfc3RyaW5nX2hhc2hcIiBbQEBub2FsbG9jXVxubGV0IGhhc2ggeCA9IHNlZWRlZF9oYXNoIDAgeFxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxudHlwZSB0ID0gc3RyaW5nXG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmV4dGVybmFsIGVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sID0gXCJjYW1sX3N0cmluZ19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcyA9IGJvcyBzIHw+IEIudG9fc2VxXG5cbmxldCB0b19zZXFpIHMgPSBib3MgcyB8PiBCLnRvX3NlcWlcblxubGV0IG9mX3NlcSBnID0gQi5vZl9zZXEgZyB8PiBidHNcblxuKCogVVRGIGRlY29kZXJzIGFuZCB2YWxpZGF0b3JzICopXG5cbmxldCBnZXRfdXRmXzhfdWNoYXIgcyBpID0gQi5nZXRfdXRmXzhfdWNoYXIgKGJvcyBzKSBpXG5sZXQgaXNfdmFsaWRfdXRmXzggcyA9IEIuaXNfdmFsaWRfdXRmXzggKGJvcyBzKVxuXG5sZXQgZ2V0X3V0Zl8xNmJlX3VjaGFyIHMgaSA9IEIuZ2V0X3V0Zl8xNmJlX3VjaGFyIChib3MgcykgaVxubGV0IGlzX3ZhbGlkX3V0Zl8xNmJlIHMgPSBCLmlzX3ZhbGlkX3V0Zl8xNmJlIChib3MgcylcblxubGV0IGdldF91dGZfMTZsZV91Y2hhciBzIGkgPSBCLmdldF91dGZfMTZsZV91Y2hhciAoYm9zIHMpIGlcbmxldCBpc192YWxpZF91dGZfMTZsZSBzID0gQi5pc192YWxpZF91dGZfMTZsZSAoYm9zIHMpXG5cbigqKiB7NiBCaW5hcnkgZW5jb2RpbmcvZGVjb2Rpbmcgb2YgaW50ZWdlcnN9ICopXG5cbmV4dGVybmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50ID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIGdldF91aW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMlwiXG5leHRlcm5hbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9zdHJpbmdfZ2V0NjRcIlxuXG5sZXQgZ2V0X2ludDggcyBpID0gQi5nZXRfaW50OCAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2xlIHMgaSA9IEIuZ2V0X3VpbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfdWludDE2X2JlIHMgaSA9IEIuZ2V0X3VpbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfbmUgcyBpID0gQi5nZXRfaW50MTZfbmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X2xlIHMgaSA9IEIuZ2V0X2ludDE2X2xlIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9iZSBzIGkgPSBCLmdldF9pbnQxNl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MzJfbGUgcyBpID0gQi5nZXRfaW50MzJfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2JlIHMgaSA9IEIuZ2V0X2ludDMyX2JlIChib3MgcykgaVxubGV0IGdldF9pbnQ2NF9sZSBzIGkgPSBCLmdldF9pbnQ2NF9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfYmUgcyBpID0gQi5nZXRfaW50NjRfYmUgKGJvcyBzKSBpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHVuaXQgPSAoKVxuXG5sZXQgZXF1YWwgKCkgKCkgPSB0cnVlXG5sZXQgY29tcGFyZSAoKSAoKSA9IDBcbmxldCB0b19zdHJpbmcgKCkgPSBcIigpXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBleHRlcm5fZmxhZ3MgPVxuICAgIE5vX3NoYXJpbmdcbiAgfCBDbG9zdXJlc1xuICB8IENvbXBhdF8zMlxuKCogbm90ZTogdGhpcyB0eXBlIGRlZmluaXRpb24gaXMgdXNlZCBpbiAncnVudGltZS9kZWJ1Z2dlci5jJyAqKVxuXG5leHRlcm5hbCB0b19jaGFubmVsOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiB1bml0XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlXCJcbmV4dGVybmFsIHRvX2J5dGVzOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBieXRlc1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19ieXRlc1wiXG5leHRlcm5hbCB0b19zdHJpbmc6ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IHN0cmluZ1xuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmdcIlxuZXh0ZXJuYWwgdG9fYnVmZmVyX3Vuc2FmZTpcbiAgICAgIGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gaW50XG4gICAgPSBcImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclwiXG5cbmxldCB0b19idWZmZXIgYnVmZiBvZnMgbGVuIHYgZmxhZ3MgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwudG9fYnVmZmVyOiBzdWJzdHJpbmcgb3V0IG9mIGJvdW5kc1wiXG4gIGVsc2UgdG9fYnVmZmVyX3Vuc2FmZSBidWZmIG9mcyBsZW4gdiBmbGFnc1xuXG4oKiBUaGUgZnVuY3Rpb25zIGJlbG93IHVzZSBieXRlIHNlcXVlbmNlcyBhcyBpbnB1dCwgbmV2ZXIgdXNpbmcgYW55XG4gICBtdXRhdGlvbi4gSXQgbWFrZXMgc2Vuc2UgdG8gdXNlIG5vbi1tdXRhdGVkIFtieXRlc10gcmF0aGVyIHRoYW5cbiAgIFtzdHJpbmddLCBiZWNhdXNlIHdlIHJlYWxseSB3b3JrIHdpdGggc2VxdWVuY2VzIG9mIGJ5dGVzLCBub3RcbiAgIGEgdGV4dCByZXByZXNlbnRhdGlvbi5cbiopXG5cbmV4dGVybmFsIGZyb21fY2hhbm5lbDogaW5fY2hhbm5lbCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZVwiXG5leHRlcm5hbCBmcm9tX2J5dGVzX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+ICdhID0gXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fYnl0ZXNcIlxuZXh0ZXJuYWwgZGF0YV9zaXplX3Vuc2FmZTogYnl0ZXMgLT4gaW50IC0+IGludCA9IFwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZVwiXG5cbmxldCBoZWFkZXJfc2l6ZSA9IDIwXG5sZXQgZGF0YV9zaXplIGJ1ZmYgb2ZzID1cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPiBCeXRlcy5sZW5ndGggYnVmZiAtIGhlYWRlcl9zaXplXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmRhdGFfc2l6ZVwiXG4gIGVsc2UgZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mc1xubGV0IHRvdGFsX3NpemUgYnVmZiBvZnMgPSBoZWFkZXJfc2l6ZSArIGRhdGFfc2l6ZSBidWZmIG9mc1xuXG5sZXQgZnJvbV9ieXRlcyBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5mcm9tX2J5dGVzXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCBsZW4gPSBkYXRhX3NpemVfdW5zYWZlIGJ1ZmYgb2ZzIGluXG4gICAgaWYgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSAoaGVhZGVyX3NpemUgKyBsZW4pXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gICAgZWxzZSBmcm9tX2J5dGVzX3Vuc2FmZSBidWZmIG9mc1xuICBlbmRcblxubGV0IGZyb21fc3RyaW5nIGJ1ZmYgb2ZzID1cbiAgKCogQnl0ZXMudW5zYWZlX29mX3N0cmluZyBpcyBzYWZlIGhlcmUsIGFzIHRoZSBwcm9kdWNlZCBieXRlXG4gICAgIHNlcXVlbmNlIGlzIG5ldmVyIG11dGF0ZWQgKilcbiAgZnJvbV9ieXRlcyAoQnl0ZXMudW5zYWZlX29mX3N0cmluZyBidWZmKSBvZnNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIGFycmF5cy4gKilcbnR5cGUgJ2EgdCA9ICdhIGFycmF5XG5cbigqIEFycmF5IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogJ2EgYXJyYXkgLT4gaW50ID0gXCIlYXJyYXlfbGVuZ3RoXCJcbmV4dGVybmFsIGdldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3NhZmVfc2V0XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSA9IFwiJWFycmF5X3Vuc2FmZV9nZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbmV4dGVybmFsIG1ha2U6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgY3JlYXRlOiBpbnQgLT4gJ2EgLT4gJ2EgYXJyYXkgPSBcImNhbWxfbWFrZV92ZWN0XCJcbmV4dGVybmFsIHVuc2FmZV9zdWIgOiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X3N1YlwiXG5leHRlcm5hbCBhcHBlbmRfcHJpbSA6ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2FwcGVuZFwiXG5leHRlcm5hbCBjb25jYXQgOiAnYSBhcnJheSBsaXN0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2FycmF5X2NvbmNhdFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gICdhIGFycmF5IC0+IGludCAtPiAnYSBhcnJheSAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5leHRlcm5hbCB1bnNhZmVfZmlsbCA6XG4gICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9maWxsXCJcbmV4dGVybmFsIGNyZWF0ZV9mbG9hdDogaW50IC0+IGZsb2F0IGFycmF5ID0gXCJjYW1sX21ha2VfZmxvYXRfdmVjdFwiXG5cbm1vZHVsZSBGbG9hdGFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBmbG9hdGFycmF5ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogZmxvYXRhcnJheSAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcbmVuZFxuXG5sZXQgaW5pdCBsIGYgPVxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZVxuICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gICgqIFNlZSAjNjU3NS4gV2UgY291bGQgYWxzbyBjaGVjayBmb3IgbWF4aW11bSBhcnJheSBzaXplLCBidXQgdGhpcyBkZXBlbmRzXG4gICAgIG9uIHdoZXRoZXIgd2UgY3JlYXRlIGEgZmxvYXQgYXJyYXkgb3IgYSByZWd1bGFyIG9uZS4uLiAqKVxuICBlbHNlXG4gICBsZXQgcmVzID0gY3JlYXRlIGwgKGYgMCkgaW5cbiAgIGZvciBpID0gMSB0byBwcmVkIGwgZG9cbiAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgZG9uZTtcbiAgIHJlc1xuXG5sZXQgbWFrZV9tYXRyaXggc3ggc3kgaW5pdCA9XG4gIGxldCByZXMgPSBjcmVhdGUgc3ggW3x8XSBpblxuICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgIHVuc2FmZV9zZXQgcmVzIHggKGNyZWF0ZSBzeSBpbml0KVxuICBkb25lO1xuICByZXNcblxubGV0IGNvcHkgYSA9XG4gIGxldCBsID0gbGVuZ3RoIGEgaW4gaWYgbCA9IDAgdGhlbiBbfHxdIGVsc2UgdW5zYWZlX3N1YiBhIDAgbFxuXG5sZXQgYXBwZW5kIGExIGEyID1cbiAgbGV0IGwxID0gbGVuZ3RoIGExIGluXG4gIGlmIGwxID0gMCB0aGVuIGNvcHkgYTJcbiAgZWxzZSBpZiBsZW5ndGggYTIgPSAwIHRoZW4gdW5zYWZlX3N1YiBhMSAwIGwxXG4gIGVsc2UgYXBwZW5kX3ByaW0gYTEgYTJcblxubGV0IHN1YiBhIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LnN1YlwiXG4gIGVsc2UgdW5zYWZlX3N1YiBhIG9mcyBsZW5cblxubGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGEgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2XG5cbmxldCBibGl0IGExIG9mczEgYTIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggYTEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIGEyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuXG5cbmxldCBpdGVyIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZih1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgaXRlcjIgZiBhIGIgPVxuICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICBlbHNlXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbmxldCBtYXAgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IG1hcDIgZiBhIGIgPVxuICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICBpZiBsYSA8PiBsYiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2UgYmVnaW5cbiAgICBpZiBsYSA9IDAgdGhlbiBbfHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIChmICh1bnNhZmVfZ2V0IGEgMCkgKHVuc2FmZV9nZXQgYiAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcbiAgZW5kXG5cbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IG1hcGkgZiBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgKGYgMCAodW5zYWZlX2dldCBhIDApKSBpblxuICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IHRvX2xpc3QgYSA9XG4gIGxldCByZWMgdG9saXN0IGkgcmVzID1cbiAgICBpZiBpIDwgMCB0aGVuIHJlcyBlbHNlIHRvbGlzdCAoaSAtIDEpICh1bnNhZmVfZ2V0IGEgaSA6OiByZXMpIGluXG4gIHRvbGlzdCAobGVuZ3RoIGEgLSAxKSBbXVxuXG4oKiBDYW5ub3QgdXNlIExpc3QubGVuZ3RoIGhlcmUgYmVjYXVzZSB0aGUgTGlzdCBtb2R1bGUgZGVwZW5kcyBvbiBBcnJheS4gKilcbmxldCByZWMgbGlzdF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gYWNjdVxuICB8IF86OnQgLT4gbGlzdF9sZW5ndGggKHN1Y2MgYWNjdSkgdFxuXG5sZXQgb2ZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgYSA9IGNyZWF0ZSAobGlzdF9sZW5ndGggMCBsKSBoZCBpblxuICAgICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICAgIFtdIC0+IGFcbiAgICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGkrMSkgdGwgaW5cbiAgICAgIGZpbGwgMSB0bFxuXG5sZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZTtcbiAgIXJcblxubGV0IGZvbGRfbGVmdF9tYXAgZiBhY2MgaW5wdXRfYXJyYXkgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0X2FycmF5IGluXG4gIGlmIGxlbiA9IDAgdGhlbiAoYWNjLCBbfHxdKSBlbHNlIGJlZ2luXG4gICAgbGV0IGFjYywgZWx0ID0gZiBhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgMCkgaW5cbiAgICBsZXQgb3V0cHV0X2FycmF5ID0gY3JlYXRlIGxlbiBlbHQgaW5cbiAgICBsZXQgYWNjID0gcmVmIGFjYyBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgYWNjJywgZWx0ID0gZiAhYWNjICh1bnNhZmVfZ2V0IGlucHV0X2FycmF5IGkpIGluXG4gICAgICBhY2MgOj0gYWNjJztcbiAgICAgIHVuc2FmZV9zZXQgb3V0cHV0X2FycmF5IGkgZWx0O1xuICAgIGRvbmU7XG4gICAgIWFjYywgb3V0cHV0X2FycmF5XG4gIGVuZFxuXG5sZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICBkb25lO1xuICAhclxuXG5sZXQgZXhpc3RzIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsIHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBmb3JfYWxsMiBwIGwxIGwyID1cbiAgbGV0IG4xID0gbGVuZ3RoIGwxXG4gIGFuZCBuMiA9IGxlbmd0aCBsMiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZm9yX2FsbDJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGwxIGkpICh1bnNhZmVfZ2V0IGwyIGkpIHRoZW4gbG9vcCAoc3VjYyBpKVxuICAgIGVsc2UgZmFsc2UgaW5cbiAgbG9vcCAwXG5cbmxldCBleGlzdHMyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5leGlzdHMyXCJcbiAgZWxzZSBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4xIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiB0cnVlXG4gICAgZWxzZSBsb29wIChzdWNjIGkpIGluXG4gIGxvb3AgMFxuXG5sZXQgbWVtIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW1xIHggYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIHggPT0gKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBmaW5kX29wdCBwIGEgPVxuICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBpZiBwIHggdGhlbiBTb21lIHhcbiAgICAgIGVsc2UgbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDBcblxubGV0IGZpbmRfbWFwIGYgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKHVuc2FmZV9nZXQgYSBpKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoc3VjYyBpKVxuICAgICAgfCBTb21lIF8gYXMgciAtPiByXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgeCA9XG4gIGlmIHggPSBbfHxdIHRoZW4gW3x8XSwgW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IGEwLCBiMCA9IHVuc2FmZV9nZXQgeCAwIGluXG4gICAgbGV0IG4gPSBsZW5ndGggeCBpblxuICAgIGxldCBhID0gY3JlYXRlIG4gYTAgaW5cbiAgICBsZXQgYiA9IGNyZWF0ZSBuIGIwIGluXG4gICAgZm9yIGkgPSAxIHRvIG4gLSAxIGRvXG4gICAgICBsZXQgYWksIGJpID0gdW5zYWZlX2dldCB4IGkgaW5cbiAgICAgIHVuc2FmZV9zZXQgYSBpIGFpO1xuICAgICAgdW5zYWZlX3NldCBiIGkgYmlcbiAgICBkb25lO1xuICAgIGEsIGJcbiAgZW5kXG5cbmxldCBjb21iaW5lIGEgYiA9XG4gIGxldCBuYSA9IGxlbmd0aCBhIGluXG4gIGxldCBuYiA9IGxlbmd0aCBiIGluXG4gIGlmIG5hIDw+IG5iIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5jb21iaW5lXCI7XG4gIGlmIG5hID0gMCB0aGVuIFt8fF1cbiAgZWxzZSBiZWdpblxuICAgIGxldCB4ID0gY3JlYXRlIG5hICh1bnNhZmVfZ2V0IGEgMCwgdW5zYWZlX2dldCBiIDApIGluXG4gICAgZm9yIGkgPSAxIHRvIG5hIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCB4IGkgKHVuc2FmZV9nZXQgYSBpLCB1bnNhZmVfZ2V0IGIgaSlcbiAgICBkb25lO1xuICAgIHhcbiAgZW5kXG5cbmV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG5sZXQgc29ydCBjbXAgYSA9XG4gIGxldCBtYXhzb24gbCBpID1cbiAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgIGlmIGkzMSsyIDwgbCB0aGVuIGJlZ2luXG4gICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICF4XG4gICAgZW5kIGVsc2VcbiAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgdGhlbiBpMzErMVxuICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICBpblxuICBsZXQgcmVjIHRyaWNrbGVkb3duIGwgaSBlID1cbiAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIHNldCBhIGkgZTtcbiAgICBlbmQ7XG4gIGluXG4gIGxldCB0cmlja2xlIGwgaSBlID0gdHJ5IHRyaWNrbGVkb3duIGwgaSBlIHdpdGggQm90dG9tIGkgLT4gc2V0IGEgaSBlIGluXG4gIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIHNldCBhIGkgKGdldCBhIGopO1xuICAgIGJ1YmJsZWRvd24gbCBqXG4gIGluXG4gIGxldCBidWJibGUgbCBpID0gdHJ5IGJ1YmJsZWRvd24gbCBpIHdpdGggQm90dG9tIGkgLT4gaSBpblxuICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgIGFzc2VydCAoaSA8PiBmYXRoZXIpO1xuICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgaWYgZmF0aGVyID4gMCB0aGVuIHRyaWNrbGV1cCBmYXRoZXIgZSBlbHNlIHNldCBhIDAgZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBmb3IgaSA9IChsICsgMSkgLyAzIC0gMSBkb3dudG8gMCBkbyB0cmlja2xlIGwgaSAoZ2V0IGEgaSk7IGRvbmU7XG4gIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgIHNldCBhIGkgKGdldCBhIDApO1xuICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgZG9uZTtcbiAgaWYgbCA+IDEgdGhlbiAobGV0IGUgPSAoZ2V0IGEgMSkgaW4gc2V0IGEgMSAoZ2V0IGEgMCk7IHNldCBhIDAgZSlcblxuXG5sZXQgY3V0b2ZmID0gNVxubGV0IHN0YWJsZV9zb3J0IGNtcCBhID1cbiAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpMSBzMSBpMiBzMiBkID1cbiAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICBsZXQgaTEgPSBpMSArIDEgaW5cbiAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldCBkc3QgZCBzMjtcbiAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgIGxvb3AgaTEgczEgaTIgKGdldCBzcmMyIGkyKSAoZCArIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICBlbmRcbiAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgaW5cbiAgbGV0IGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgbGV0IGogPSByZWYgKGRzdG9mcyArIGkgLSAxKSBpblxuICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgZGVjciBqO1xuICAgICAgZG9uZTtcbiAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICBkb25lO1xuICBpblxuICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGlmIGxlbiA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgc29ydHRvIChzcmNvZnMgKyBsMSkgZHN0IChkc3RvZnMgKyBsMSkgbDI7XG4gICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICBlbmQ7XG4gIGluXG4gIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgaWYgbCA8PSBjdXRvZmYgdGhlbiBpc29ydHRvIDAgYSAwIGwgZWxzZSBiZWdpblxuICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgbGV0IHQgPSBtYWtlIGwyIChnZXQgYSAwKSBpblxuICAgIHNvcnR0byBsMSB0IDAgbDI7XG4gICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICBlbmRcblxuXG5sZXQgZmFzdF9zb3J0ID0gc3RhYmxlX3NvcnRcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICBlbHNlIFNlcS5OaWxcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYSA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgIGlmIGkgPCBsZW5ndGggYVxuICAgIHRoZW5cbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgb2ZfcmV2X2xpc3QgPSBmdW5jdGlvblxuICAgIFtdIC0+IFt8fF1cbiAgfCBoZDo6dGwgYXMgbCAtPlxuICAgICAgbGV0IGxlbiA9IGxpc3RfbGVuZ3RoIDAgbCBpblxuICAgICAgbGV0IGEgPSBjcmVhdGUgbGVuIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgICAgaW5cbiAgICAgIGZpbGwgKGxlbi0yKSB0bFxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgb2ZfcmV2X2xpc3QgbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICBOaWNvbGFzIE9qZWRhIEJhciwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBuZWcgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsIGFkZCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgc3ViIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCBtdWwgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsIGRpdiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgcmVtIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbWEgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbWFfZmxvYXRcIiBcImNhbWxfZm1hXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFicyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWJzZmxvYXRcIlxuXG5sZXQgemVybyA9IDAuXG5sZXQgb25lID0gMS5cbmxldCBtaW51c19vbmUgPSAtMS5cbmxldCBpbmZpbml0eSA9IFN0ZGxpYi5pbmZpbml0eVxubGV0IG5lZ19pbmZpbml0eSA9IFN0ZGxpYi5uZWdfaW5maW5pdHlcbmxldCBuYW4gPSBTdGRsaWIubmFuXG5sZXQgaXNfZmluaXRlICh4OiBmbG9hdCkgPSB4IC0uIHggPSAwLlxubGV0IGlzX2luZmluaXRlICh4OiBmbG9hdCkgPSAxLiAvLiB4ID0gMC5cbmxldCBpc19uYW4gKHg6IGZsb2F0KSA9IHggPD4geFxuXG5sZXQgcGkgPSAweDEuOTIxZmI1NDQ0MmQxOHArMVxubGV0IG1heF9mbG9hdCA9IFN0ZGxpYi5tYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBTdGRsaWIubWluX2Zsb2F0XG5sZXQgZXBzaWxvbiA9IFN0ZGxpYi5lcHNpbG9uX2Zsb2F0XG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0X29mX3N0cmluZ1wiXG5sZXQgb2Zfc3RyaW5nX29wdCA9IFN0ZGxpYi5mbG9hdF9vZl9zdHJpbmdfb3B0XG5sZXQgdG9fc3RyaW5nID0gU3RkbGliLnN0cmluZ19vZl9mbG9hdFxudHlwZSBmcGNsYXNzID0gU3RkbGliLmZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHBvdyA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2JydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NicnRfZmxvYXRcIiBcImNhbWxfY2JydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAyIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwMl9mbG9hdFwiIFwiY2FtbF9leHAyXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZ19mbG9hdFwiIFwibG9nXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzEwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMTBfZmxvYXRcIiBcImxvZzEwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cyX2Zsb2F0XCIgXCJjYW1sX2xvZzJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5oX2Zsb2F0XCIgXCJzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luaF9mbG9hdFwiIFwiY2FtbF9hc2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5oX2Zsb2F0XCIgXCJjYW1sX2F0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGVyZiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZl9mbG9hdFwiIFwiY2FtbF9lcmZcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2VyZmNfZmxvYXRcIiBcImNhbWxfZXJmY1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0cnVuYyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RydW5jX2Zsb2F0XCIgXCJjYW1sX3RydW5jXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHJvdW5kIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcm91bmRfZmxvYXRcIiBcImNhbWxfcm91bmRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IGlzX2ludGVnZXIgeCA9IHggPSB0cnVuYyB4ICYmIGlzX2Zpbml0ZSB4XG5cbmV4dGVybmFsIG5leHRfYWZ0ZXIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICA9IFwiY2FtbF9uZXh0YWZ0ZXJfZmxvYXRcIiBcImNhbWxfbmV4dGFmdGVyXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxubGV0IHN1Y2MgeCA9IG5leHRfYWZ0ZXIgeCBpbmZpbml0eVxubGV0IHByZWQgeCA9IG5leHRfYWZ0ZXIgeCBuZWdfaW5maW5pdHlcblxuZXh0ZXJuYWwgY29weV9zaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2NvcHlzaWduX2Zsb2F0XCIgXCJjYW1sX2NvcHlzaWduXCJcbiAgICAgICAgICAgICAgICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaWduX2JpdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBib29sXG4gID0gXCJjYW1sX3NpZ25iaXRfZmxvYXRcIiBcImNhbWxfc2lnbmJpdFwiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIGZyZXhwIDogZmxvYXQgLT4gZmxvYXQgKiBpbnQgPSBcImNhbWxfZnJleHBfZmxvYXRcIlxuZXh0ZXJuYWwgbGRleHAgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gKGludCBbQHVudGFnZ2VkXSkgLT4gKGZsb2F0IFtAdW5ib3hlZF0pID1cbiAgXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kZiA6IGZsb2F0IC0+IGZsb2F0ICogZmxvYXQgPSBcImNhbWxfbW9kZl9mbG9hdFwiXG50eXBlIHQgPSBmbG9hdFxuZXh0ZXJuYWwgY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IGVxdWFsIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXRbQGlubGluZV0gbWluICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHggdGhlbiB4IGVsc2UgeVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4geSBlbHNlIHhcblxubGV0W0BpbmxpbmVdIG1pbl9tYXggKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggfHwgaXNfbmFuIHkgdGhlbiAobmFuLCBuYW4pXG4gIGVsc2UgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuICh4LCB5KSBlbHNlICh5LCB4KVxuXG5sZXRbQGlubGluZV0gbWluX251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgeVxuXG5sZXRbQGlubGluZV0gbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heF9udW0gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgaXNfbmFuIHggdGhlbiAoeSx5KVxuICBlbHNlIGlmIGlzX25hbiB5IHRoZW4gKHgseClcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgseSkgZWxzZSAoeSx4KVxuXG5leHRlcm5hbCBzZWVkZWRfaGFzaF9wYXJhbSA6IGludCAtPiBpbnQgLT4gaW50IC0+IGZsb2F0IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSBmbG9hdGFycmF5XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogdCAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IHQgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IHQgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZmxvYXRhcnJheV9jcmVhdGVcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3Vuc2FmZV9nZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX3NldFwiXG5cbiAgbGV0IHVuc2FmZV9maWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBmb3IgaSA9IG9mcyB0byBvZnMgKyBsZW4gLSAxIGRvIHVuc2FmZV9zZXQgYSBpIHYgZG9uZVxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0OiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2Zsb2F0YXJyYXlfYmxpdFwiIFtAQG5vYWxsb2NdXG5cbiAgbGV0IGNoZWNrIGEgb2ZzIGxlbiBtc2cgPVxuICAgIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgKyBsZW4gPCAwIHx8IG9mcyArIGxlbiA+IGxlbmd0aCBhIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIG1zZ1xuXG4gIGxldCBtYWtlIG4gdiA9XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBuIGluXG4gICAgdW5zYWZlX2ZpbGwgcmVzdWx0IDAgbiB2O1xuICAgIHJlc3VsdFxuXG4gIGxldCBpbml0IGwgZiA9XG4gICAgaWYgbCA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmluaXRcIlxuICAgIGVsc2VcbiAgICAgIGxldCByZXMgPSBjcmVhdGUgbCBpblxuICAgICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgcmVzIGkgKGYgaSlcbiAgICAgIGRvbmU7XG4gICAgICByZXNcblxuICBsZXQgYXBwZW5kIGExIGEyID1cbiAgICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgICBsZXQgbDIgPSBsZW5ndGggYTIgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChsMSArIGwyKSBpblxuICAgIHVuc2FmZV9ibGl0IGExIDAgcmVzdWx0IDAgbDE7XG4gICAgdW5zYWZlX2JsaXQgYTIgMCByZXN1bHQgbDEgbDI7XG4gICAgcmVzdWx0XG5cbiAgKCogbmV4dCAzIGZ1bmN0aW9uczogbW9kaWZpZWQgY29weSBvZiBjb2RlIGZyb20gc3RyaW5nLm1sICopXG4gIGxldCBlbnN1cmVfZ2UgKHg6aW50KSB5ID1cbiAgICBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5jb25jYXRcIlxuXG4gIGxldCByZWMgc3VtX2xlbmd0aHMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gc3VtX2xlbmd0aHMgKGVuc3VyZV9nZSAobGVuZ3RoIGhkICsgYWNjKSBhY2MpIHRsXG5cbiAgbGV0IGNvbmNhdCBsID1cbiAgICBsZXQgbGVuID0gc3VtX2xlbmd0aHMgMCBsIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcmVjIGxvb3AgbCBpID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgKGkgPSBsZW4pXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCBobGVuID0gbGVuZ3RoIGhkIGluXG4gICAgICAgIHVuc2FmZV9ibGl0IGhkIDAgcmVzdWx0IGkgaGxlbjtcbiAgICAgICAgbG9vcCB0bCAoaSArIGhsZW4pXG4gICAgaW5cbiAgICBsb29wIGwgMDtcbiAgICByZXN1bHRcblxuICBsZXQgc3ViIGEgb2ZzIGxlbiA9XG4gICAgY2hlY2sgYSBvZnMgbGVuIFwiRmxvYXQuQXJyYXkuc3ViXCI7XG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsZW4gaW5cbiAgICB1bnNhZmVfYmxpdCBhIG9mcyByZXN1bHQgMCBsZW47XG4gICAgcmVzdWx0XG5cbiAgbGV0IGNvcHkgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgbCBpblxuICAgIHVuc2FmZV9ibGl0IGEgMCByZXN1bHQgMCBsO1xuICAgIHJlc3VsdFxuXG4gIGxldCBmaWxsIGEgb2ZzIGxlbiB2ID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5maWxsXCI7XG4gICAgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxuICBsZXQgYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW4gPVxuICAgIGNoZWNrIHNyYyBzb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICBjaGVjayBkc3QgZG9mcyBsZW4gXCJGbG9hdC5hcnJheS5ibGl0XCI7XG4gICAgdW5zYWZlX2JsaXQgc3JjIHNvZnMgZHN0IGRvZnMgbGVuXG5cbiAgbGV0IHRvX2xpc3QgYSA9XG4gICAgTGlzdC5pbml0IChsZW5ndGggYSkgKHVuc2FmZV9nZXQgYSlcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgIGxldCByZWMgZmlsbCBpIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IHJlc3VsdFxuICAgICAgfCBoIDo6IHQgLT4gdW5zYWZlX3NldCByZXN1bHQgaSBoOyBmaWxsIChpICsgMSkgdFxuICAgIGluXG4gICAgZmlsbCAwIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIgZiBhID1cbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyMiBmIGEgYiA9XG4gICAgaWYgbGVuZ3RoIGEgPD4gbGVuZ3RoIGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5pdGVyMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2VcbiAgICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkgZG9uZVxuXG4gIGxldCBtYXAgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICBsZXQgbWFwMiBmIGEgYiA9XG4gICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGIgPSBsZW5ndGggYiBpblxuICAgIGlmIGxhIDw+IGxiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkubWFwMjogYXJyYXlzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIlxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gY3JlYXRlIGxhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGEgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgciBpIChmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBpdGVyaSBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG4gIGxldCBtYXBpIGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIGkgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9yaWdodCBmIGEgeCA9XG4gICAgbGV0IHIgPSByZWYgeCBpblxuICAgIGZvciBpID0gbGVuZ3RoIGEgLSAxIGRvd250byAwIGRvXG4gICAgICByIDo9IGYgKHVuc2FmZV9nZXQgYSBpKSAhclxuICAgIGRvbmU7XG4gICAgIXJcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGV4aXN0cyBwIGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb3JfYWxsIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChpICsgMSlcbiAgICAgIGVsc2UgZmFsc2UgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG1lbSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYSBpKSB4ID0gMCB0aGVuIHRydWVcbiAgICAgIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBidXQgc2xpZ2h0bHkgZGlmZmVyZW50ICopXG4gIGxldCBtZW1faWVlZSB4IGEgPVxuICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID0gbiB0aGVuIGZhbHNlXG4gICAgICBlbHNlIGlmIHggPSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBleGNlcHRpb24gQm90dG9tIG9mIGludFxuICBsZXQgc29ydCBjbXAgYSA9XG4gICAgbGV0IG1heHNvbiBsIGkgPVxuICAgICAgbGV0IGkzMSA9IGkraStpKzEgaW5cbiAgICAgIGxldCB4ID0gcmVmIGkzMSBpblxuICAgICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgY21wIChnZXQgYSBpMzEpIChnZXQgYSAoaTMxKzEpKSA8IDAgdGhlbiB4IDo9IGkzMSsxO1xuICAgICAgICBpZiBjbXAgKGdldCBhICF4KSAoZ2V0IGEgKGkzMSsyKSkgPCAwIHRoZW4geCA6PSBpMzErMjtcbiAgICAgICAgIXhcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGlmIGkzMSsxIDwgbCAmJiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMFxuICAgICAgICB0aGVuIGkzMSsxXG4gICAgICAgIGVsc2UgaWYgaTMxIDwgbCB0aGVuIGkzMSBlbHNlIHJhaXNlIChCb3R0b20gaSlcbiAgICBpblxuICAgIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBpZiBjbXAgKGdldCBhIGopIGUgPiAwIHRoZW4gYmVnaW5cbiAgICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICAgIHRyaWNrbGVkb3duIGwgaiBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgICBsZXQgcmVjIGJ1YmJsZWRvd24gbCBpID1cbiAgICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICBidWJibGVkb3duIGwgalxuICAgIGluXG4gICAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gICAgbGV0IHJlYyB0cmlja2xldXAgaSBlID1cbiAgICAgIGxldCBmYXRoZXIgPSAoaSAtIDEpIC8gMyBpblxuICAgICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgICBpZiBjbXAgKGdldCBhIGZhdGhlcikgZSA8IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBmYXRoZXIpO1xuICAgICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGEgaSBlO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgICBmb3IgaSA9IGwgLSAxIGRvd250byAyIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSBpKSBpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgICB0cmlja2xldXAgKGJ1YmJsZSBpIDApIGU7XG4gICAgZG9uZTtcbiAgICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCwgZXhjZXB0IGZvciB0aGUgY2FsbCB0byBbY3JlYXRlXSAqKVxuICBsZXQgY3V0b2ZmID0gNVxuICBsZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICAgIGxldCBtZXJnZSBzcmMxb2ZzIHNyYzFsZW4gc3JjMiBzcmMyb2ZzIHNyYzJsZW4gZHN0IGRzdG9mcyA9XG4gICAgICBsZXQgc3JjMXIgPSBzcmMxb2ZzICsgc3JjMWxlbiBhbmQgc3JjMnIgPSBzcmMyb2ZzICsgc3JjMmxlbiBpblxuICAgICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgICBpZiBjbXAgczEgczIgPD0gMCB0aGVuIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMxO1xuICAgICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICAgIGlmIGkxIDwgc3JjMXIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSAoZ2V0IGEgaTEpIGkyIHMyIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IHNyYzIgaTIgZHN0IChkICsgMSkgKHNyYzJyIC0gaTIpXG4gICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICAgIGxldCBpMiA9IGkyICsgMSBpblxuICAgICAgICAgIGlmIGkyIDwgc3JjMnIgdGhlblxuICAgICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBibGl0IGEgaTEgZHN0IChkICsgMSkgKHNyYzFyIC0gaTEpXG4gICAgICAgIGVuZFxuICAgICAgaW4gbG9vcCBzcmMxb2ZzIChnZXQgYSBzcmMxb2ZzKSBzcmMyb2ZzIChnZXQgc3JjMiBzcmMyb2ZzKSBkc3RvZnM7XG4gICAgaW5cbiAgICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgbGV0IGUgPSAoZ2V0IGEgKHNyY29mcyArIGkpKSBpblxuICAgICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICAgIHdoaWxlICghaiA+PSBkc3RvZnMgJiYgY21wIChnZXQgZHN0ICFqKSBlID4gMCkgZG9cbiAgICAgICAgICBzZXQgZHN0ICghaiArIDEpIChnZXQgZHN0ICFqKTtcbiAgICAgICAgICBkZWNyIGo7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgZTtcbiAgICAgIGRvbmU7XG4gICAgaW5cbiAgICBsZXQgcmVjIHNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGwxID0gbGVuIC8gMiBpblxuICAgICAgICBsZXQgbDIgPSBsZW4gLSBsMSBpblxuICAgICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgICAgc29ydHRvIHNyY29mcyBhIChzcmNvZnMgKyBsMikgbDE7XG4gICAgICAgIG1lcmdlIChzcmNvZnMgKyBsMikgbDEgZHN0IChkc3RvZnMgKyBsMSkgbDIgZHN0IGRzdG9mcztcbiAgICAgIGVuZDtcbiAgICBpblxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgICBsZXQgbDEgPSBsIC8gMiBpblxuICAgICAgbGV0IGwyID0gbCAtIGwxIGluXG4gICAgICBsZXQgdCA9IGNyZWF0ZSBsMiBpblxuICAgICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICAgIHNvcnR0byAwIGEgbDIgbDE7XG4gICAgICBtZXJnZSBsMiBsMSB0IDAgbDIgYSAwO1xuICAgIGVuZFxuXG4gIGxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxIGEgPVxuICAgIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgICB0aGVuXG4gICAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IHRvX3NlcWkgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoKGkseCksIGF1eCAoaSsxKSlcbiAgICAgIGVsc2UgU2VxLk5pbFxuICAgIGluXG4gICAgYXV4IDBcblxuICAoKiBtb3N0bHkgZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9yZXZfbGlzdCBsID1cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgW10gLT4gYVxuICAgICAgfCBoZDo6dGwgLT4gdW5zYWZlX3NldCBhIGkgaGQ7IGZpbGwgKGktMSkgdGxcbiAgICBpblxuICAgIGZpbGwgKGxlbi0xKSBsXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBvZl9zZXEgaSA9XG4gICAgbGV0IGwgPSBTZXEuZm9sZF9sZWZ0IChmdW4gYWNjIHggLT4geDo6YWNjKSBbXSBpIGluXG4gICAgb2ZfcmV2X2xpc3QgbFxuXG5cbiAgbGV0IG1hcF90b19hcnJheSBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBpZiBsID0gMCB0aGVuIFt8IHxdIGVsc2UgYmVnaW5cbiAgICAgIGxldCByID0gQXJyYXkubWFrZSBsIChmICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbCAtIDEgZG9cbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSlcbiAgICAgIGRvbmU7XG4gICAgICByXG4gICAgZW5kXG5cbiAgbGV0IG1hcF9mcm9tX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG5cbmVuZFxuXG5tb2R1bGUgQXJyYXlMYWJlbHMgPSBBcnJheVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDMyXTogMzItYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50MzIgLT4gaW50IC0+IGludDMyID0gXCIlaW50MzJfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl90b19mbG9hdFwiIFwiY2FtbF9pbnQzMl90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGJpdHNfb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQzMlxuICA9IFwiY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XCIgXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9hdF9vZl9iaXRzIDogaW50MzIgLT4gZmxvYXRcbiAgPSBcImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0c1wiIFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzX3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgemVybyA9IDBsXG5sZXQgb25lID0gMWxcbmxldCBtaW51c19vbmUgPSAtMWxcbmxldCBzdWNjIG4gPSBhZGQgbiAxbFxubGV0IHByZWQgbiA9IHN1YiBuIDFsXG5sZXQgYWJzIG4gPSBpZiBuID49IDBsIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgbWluX2ludCA9IDB4ODAwMDAwMDBsXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZsXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFsKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gIHwgMzIgLT5cbiAgICAgIGxldCBtYXhfaW50ID0gb2ZfaW50IFN0ZGxpYi5tYXhfaW50IGluXG4gICAgICBmdW4gbiAtPlxuICAgICAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgICAgIFNvbWUgKHRvX2ludCBuKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICB8IDY0IC0+XG4gICAgICAoKiBTbyB0aGF0IGl0IGNvbXBpbGVzIGluIDMyLWJpdCAqKVxuICAgICAgbGV0IG1hc2sgPSAweEZGRkYgbHNsIDE2IGxvciAweEZGRkYgaW5cbiAgICAgIGZ1biBuIC0+IFNvbWUgKHRvX2ludCBuIGxhbmQgbWFzaylcbiAgfCBfIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuZXh0ZXJuYWwgZm9ybWF0IDogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZyA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQzMiA9IFwiY2FtbF9pbnQzMl9vZl9zdHJpbmdcIlxuXG5sZXQgb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogZXhwb3NlIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlIGRpcmVjdGx5LiAqKVxuICB0cnkgU29tZSAob2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxudHlwZSB0ID0gaW50MzJcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW0ludDY0XTogNjQtYml0IGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZyA6IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbmVnXCJcbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbmV4dGVybmFsIHN1YiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfc3ViXCJcbmV4dGVybmFsIG11bCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbXVsXCJcbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbmV4dGVybmFsIHJlbSA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfbW9kXCJcbmV4dGVybmFsIGxvZ2FuZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYW5kXCJcbmV4dGVybmFsIGxvZ29yIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vclwiXG5leHRlcm5hbCBsb2d4b3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X3hvclwiXG5leHRlcm5hbCBzaGlmdF9sZWZ0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuZXh0ZXJuYWwgb2ZfaW50IDogaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludCA6IGludDY0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX2Zsb2F0XCIgXCJjYW1sX2ludDY0X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyIDogaW50MzIgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnQzMlwiXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgb2ZfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IGludDY0ID0gXCIlaW50NjRfb2ZfbmF0aXZlaW50XCJcbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IGludDY0IC0+IG5hdGl2ZWludCA9IFwiJWludDY0X3RvX25hdGl2ZWludFwiXG5cbmxldCB6ZXJvID0gMExcbmxldCBvbmUgPSAxTFxubGV0IG1pbnVzX29uZSA9IC0xTFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFMXG5sZXQgcHJlZCBuID0gc3ViIG4gMUxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMEwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMDAwMDAwMDAwTFxubGV0IG1heF9pbnQgPSAweDdGRkZGRkZGRkZGRkZGRkZMXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFMKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50NjQgLT4gc3RyaW5nID0gXCJjYW1sX2ludDY0X2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5cblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbnR5cGUgdCA9IGludDY0XG5cbmxldCBjb21wYXJlICh4OiB0KSAoeTogdCkgPSBTdGRsaWIuY29tcGFyZSB4IHlcbmxldCBlcXVhbCAoeDogdCkgKHk6IHQpID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldCB1bnNpZ25lZF9jb21wYXJlIG4gbSA9XG4gIGNvbXBhcmUgKHN1YiBuIG1pbl9pbnQpIChzdWIgbSBtaW5faW50KVxuXG5sZXQgbWluIHggeSA6IHQgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxubGV0IG1heCB4IHkgOiB0ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuKCogVW5zaWduZWQgZGl2aXNpb24gZnJvbSBzaWduZWQgZGl2aXNpb24gb2YgdGhlIHNhbWVcbiAgIGJpdG5lc3MuIFNlZSBXYXJyZW4gSnIuLCBIZW5yeSBTLiAoMjAxMykuIEhhY2tlcidzIERlbGlnaHQgKDIgZWQuKSwgU2VjIDktMy5cbiopXG5sZXQgdW5zaWduZWRfZGl2IG4gZCA9XG4gIGlmIGQgPCB6ZXJvIHRoZW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIG4gZCA8IDAgdGhlbiB6ZXJvIGVsc2Ugb25lXG4gIGVsc2VcbiAgICBsZXQgcSA9IHNoaWZ0X2xlZnQgKGRpdiAoc2hpZnRfcmlnaHRfbG9naWNhbCBuIDEpIGQpIDEgaW5cbiAgICBsZXQgciA9IHN1YiBuIChtdWwgcSBkKSBpblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgciBkID49IDAgdGhlbiBzdWNjIHEgZWxzZSBxXG5cbmxldCB1bnNpZ25lZF9yZW0gbiBkID1cbiAgc3ViIG4gKG11bCAodW5zaWduZWRfZGl2IG4gZCkgZClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtOYXRpdmVpbnRdOiBwcm9jZXNzb3ItbmF0aXZlIGludGVnZXJzICopXG5cbmV4dGVybmFsIG5lZzogbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9uZWdcIlxuZXh0ZXJuYWwgYWRkOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hZGRcIlxuZXh0ZXJuYWwgc3ViOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9zdWJcIlxuZXh0ZXJuYWwgbXVsOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tdWxcIlxuZXh0ZXJuYWwgZGl2OiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9kaXZcIlxuZXh0ZXJuYWwgcmVtOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3I6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29yXCJcbmV4dGVybmFsIGxvZ3hvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQ6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzbFwiXG5leHRlcm5hbCBzaGlmdF9yaWdodDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfYXNyXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWw6IG5hdGl2ZWludCAtPiBpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2xzclwiXG5leHRlcm5hbCBvZl9pbnQ6IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50XCJcbmV4dGVybmFsIHRvX2ludDogbmF0aXZlaW50IC0+IGludCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBuYXRpdmVpbnRcbiAgPSBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRvX2Zsb2F0IDogbmF0aXZlaW50IC0+IGZsb2F0XG4gID0gXCJjYW1sX25hdGl2ZWludF90b19mbG9hdFwiIFwiY2FtbF9uYXRpdmVpbnRfdG9fZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBvZl9pbnQzMjogaW50MzIgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyOiBuYXRpdmVpbnQgLT4gaW50MzIgPSBcIiVuYXRpdmVpbnRfdG9faW50MzJcIlxuXG5sZXQgemVybyA9IDBuXG5sZXQgb25lID0gMW5cbmxldCBtaW51c19vbmUgPSAtMW5cbmxldCBzdWNjIG4gPSBhZGQgbiAxblxubGV0IHByZWQgbiA9IHN1YiBuIDFuXG5sZXQgYWJzIG4gPSBpZiBuID49IDBuIHRoZW4gbiBlbHNlIG5lZyBuXG5sZXQgc2l6ZSA9IFN5cy53b3JkX3NpemVcbmxldCBtaW5faW50ID0gc2hpZnRfbGVmdCAxbiAoc2l6ZSAtIDEpXG5sZXQgbWF4X2ludCA9IHN1YiBtaW5faW50IDFuXG5sZXQgbG9nbm90IG4gPSBsb2d4b3IgbiAoLTFuKVxuXG5sZXQgdW5zaWduZWRfdG9faW50ID1cbiAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgZnVuIG4gLT5cbiAgICBpZiBjb21wYXJlIHplcm8gbiA8PSAwICYmIGNvbXBhcmUgbiBtYXhfaW50IDw9IDAgdGhlblxuICAgICAgU29tZSAodG9faW50IG4pXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gbmF0aXZlaW50IC0+IHN0cmluZyA9IFwiY2FtbF9uYXRpdmVpbnRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmc6IHN0cmluZyAtPiBuYXRpdmVpbnQgPSBcImNhbWxfbmF0aXZlaW50X29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBuYXRpdmVpbnRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3IgbGV4ZXJzIGdlbmVyYXRlZCBieSBjYW1sbGV4ICopXG5cbnR5cGUgcG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5sZXQgZHVtbXlfcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDA7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IC0xO1xufVxuXG50eXBlIGxleGJ1ZiA9XG4gIHsgcmVmaWxsX2J1ZmYgOiBsZXhidWYgLT4gdW5pdDtcbiAgICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlcztcbiAgICBtdXRhYmxlIGxleF9idWZmZXJfbGVuIDogaW50O1xuICAgIG11dGFibGUgbGV4X2Fic19wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2N1cnJfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfcG9zIDogaW50O1xuICAgIG11dGFibGUgbGV4X2xhc3RfYWN0aW9uIDogaW50O1xuICAgIG11dGFibGUgbGV4X2VvZl9yZWFjaGVkIDogYm9vbDtcbiAgICBtdXRhYmxlIGxleF9tZW0gOiBpbnQgYXJyYXk7XG4gICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6IHBvc2l0aW9uO1xuICAgIG11dGFibGUgbGV4X2N1cnJfcCA6IHBvc2l0aW9uO1xuICB9XG5cbnR5cGUgbGV4X3RhYmxlcyA9XG4gIHsgbGV4X2Jhc2U6IHN0cmluZztcbiAgICBsZXhfYmFja3Ryazogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0OiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrOiBzdHJpbmc7XG4gICAgbGV4X2Jhc2VfY29kZSA6IHN0cmluZztcbiAgICBsZXhfYmFja3Rya19jb2RlIDogc3RyaW5nO1xuICAgIGxleF9kZWZhdWx0X2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X3RyYW5zX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NoZWNrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2NvZGU6IHN0cmluZzt9XG5cbmV4dGVybmFsIGNfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9IFwiY2FtbF9sZXhfZW5naW5lXCJcbmV4dGVybmFsIGNfbmV3X2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnRcbiAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9uZXdfbGV4X2VuZ2luZVwiXG5cbmxldCBlbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cblxubGV0IG5ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiA9XG4gIGxldCByZXN1bHQgPSBjX25ld19lbmdpbmUgdGJsIHN0YXRlIGJ1ZiBpblxuICBpZiByZXN1bHQgPj0gMCAmJiBidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3MgdGhlbiBiZWdpblxuICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICBidWYubGV4X2N1cnJfcCA8LSB7YnVmLmxleF9jdXJyX3BcbiAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBwb3NfY251bSA9IGJ1Zi5sZXhfYWJzX3BvcyArIGJ1Zi5sZXhfY3Vycl9wb3N9O1xuICBlbmQ7XG4gIHJlc3VsdFxuXG5sZXQgbGV4X3JlZmlsbCByZWFkX2Z1biBhdXhfYnVmZmVyIGxleGJ1ZiA9XG4gIGxldCByZWFkID1cbiAgICByZWFkX2Z1biBhdXhfYnVmZmVyIChCeXRlcy5sZW5ndGggYXV4X2J1ZmZlcikgaW5cbiAgbGV0IG4gPVxuICAgIGlmIHJlYWQgPiAwXG4gICAgdGhlbiByZWFkXG4gICAgZWxzZSAobGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyAwKSBpblxuICAoKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBidWZmZXI6XG4gICAgICAgIDwtLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLT5cbiAgICAgICAgfCAganVuayB8ICAgICAgdmFsaWQgZGF0YSAgICAgfCAgIGp1bmsgICAgfFxuICAgICAgICBeICAgICAgIF4gICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICBeXG4gICAgICAgIDAgICAgc3RhcnRfcG9zICAgICAgICAgICAgIGJ1ZmZlcl9lbmQgICAgQnl0ZXMubGVuZ3RoIGJ1ZmZlclxuICAqKVxuICBpZiBsZXhidWYubGV4X2J1ZmZlcl9sZW4gKyBuID4gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyIHRoZW4gYmVnaW5cbiAgICAoKiBUaGVyZSBpcyBub3QgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgblxuICAgICAgIDw9IEJ5dGVzLmxlbmd0aCBsZXhidWYubGV4X2J1ZmZlclxuICAgIHRoZW4gYmVnaW5cbiAgICAgICgqIEJ1dCB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgaWYgd2UgcmVjbGFpbSB0aGUganVuayBhdCB0aGUgYmVnaW5uaW5nXG4gICAgICAgICBvZiB0aGUgYnVmZmVyICopXG4gICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zXG4gICAgICAgICAgICAgICAgICBsZXhidWYubGV4X2J1ZmZlciAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICgqIFdlIG11c3QgZ3JvdyB0aGUgYnVmZmVyLiAgRG91YmxpbmcgaXRzIHNpemUgd2lsbCBwcm92aWRlIGVub3VnaFxuICAgICAgICAgc3BhY2Ugc2luY2UgbiA8PSBTdHJpbmcubGVuZ3RoIGF1eF9idWZmZXIgPD0gU3RyaW5nLmxlbmd0aCBidWZmZXIuXG4gICAgICAgICBXYXRjaCBvdXQgZm9yIHN0cmluZyBsZW5ndGggb3ZlcmZsb3csIHRob3VnaC4gKilcbiAgICAgIGxldCBuZXdsZW4gPVxuICAgICAgICBJbnQubWluICgyICogQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyKSBTeXMubWF4X3N0cmluZ19sZW5ndGggaW5cbiAgICAgIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgbiA+IG5ld2xlblxuICAgICAgdGhlbiBmYWlsd2l0aCBcIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXJcIjtcbiAgICAgIGxldCBuZXdidWYgPSBCeXRlcy5jcmVhdGUgbmV3bGVuIGluXG4gICAgICAoKiBDb3B5IHRoZSB2YWxpZCBkYXRhIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIG5ld2J1ZiAwXG4gICAgICAgICAgICAgICAgICAobGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MpO1xuICAgICAgbGV4YnVmLmxleF9idWZmZXIgPC0gbmV3YnVmXG4gICAgZW5kO1xuICAgICgqIFJlYWxsb2NhdGlvbiBvciBub3QsIHdlIGhhdmUgc2hpZnRlZCB0aGUgZGF0YSBsZWZ0IGJ5XG4gICAgICAgc3RhcnRfcG9zIGNoYXJhY3RlcnM7IHVwZGF0ZSB0aGUgcG9zaXRpb25zICopXG4gICAgbGV0IHMgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBzO1xuICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0gMDtcbiAgICBsZXhidWYubGV4X2xhc3RfcG9zIDwtIGxleGJ1Zi5sZXhfbGFzdF9wb3MgLSBzO1xuICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBzIDtcbiAgICBsZXQgdCA9IGxleGJ1Zi5sZXhfbWVtIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LTEgZG9cbiAgICAgIGxldCB2ID0gdC4oaSkgaW5cbiAgICAgIGlmIHYgPj0gMCB0aGVuXG4gICAgICAgIHQuKGkpIDwtIHYtc1xuICAgIGRvbmVcbiAgZW5kO1xuICAoKiBUaGVyZSBpcyBub3cgZW5vdWdoIHNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAqKVxuICBCeXRlcy5ibGl0IGF1eF9idWZmZXIgMCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X2J1ZmZlcl9sZW4gbjtcbiAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG5cblxubGV0IHplcm9fcG9zID0ge1xuICBwb3NfZm5hbWUgPSBcIlwiO1xuICBwb3NfbG51bSA9IDE7XG4gIHBvc19ib2wgPSAwO1xuICBwb3NfY251bSA9IDA7XG59XG5cbmxldCBmcm9tX2Z1bmN0aW9uID8od2l0aF9wb3NpdGlvbnMgPSB0cnVlKSBmID1cbiAgeyByZWZpbGxfYnVmZiA9IGxleF9yZWZpbGwgZiAoQnl0ZXMuY3JlYXRlIDUxMik7XG4gICAgbGV4X2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAxMDI0O1xuICAgIGxleF9idWZmZXJfbGVuID0gMDtcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gZmFsc2U7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBmcm9tX2NoYW5uZWwgP3dpdGhfcG9zaXRpb25zIGljID1cbiAgZnJvbV9mdW5jdGlvbiA/d2l0aF9wb3NpdGlvbnMgKGZ1biBidWYgbiAtPiBpbnB1dCBpYyBidWYgMCBuKVxuXG5sZXQgZnJvbV9zdHJpbmcgPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIHMgPVxuICB7IHJlZmlsbF9idWZmID0gKGZ1biBsZXhidWYgLT4gbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMub2Zfc3RyaW5nIHM7ICgqIGhhdmUgdG8gbWFrZSBhIGNvcHkgZm9yIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdW5zYWZlLXN0cmluZyBtb2RlICopXG4gICAgbGV4X2J1ZmZlcl9sZW4gPSBTdHJpbmcubGVuZ3RoIHM7XG4gICAgbGV4X2Fic19wb3MgPSAwO1xuICAgIGxleF9zdGFydF9wb3MgPSAwO1xuICAgIGxleF9jdXJyX3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9hY3Rpb24gPSAwO1xuICAgIGxleF9tZW0gPSBbfHxdO1xuICAgIGxleF9lb2ZfcmVhY2hlZCA9IHRydWU7XG4gICAgbGV4X3N0YXJ0X3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICAgIGxleF9jdXJyX3AgPSBpZiB3aXRoX3Bvc2l0aW9ucyB0aGVuIHplcm9fcG9zIGVsc2UgZHVtbXlfcG9zO1xuICB9XG5cbmxldCBzZXRfcG9zaXRpb24gbGV4YnVmIHBvc2l0aW9uID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgIDwtIHtwb3NpdGlvbiB3aXRoIHBvc19mbmFtZSA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19mbmFtZX07XG4gIGxleGJ1Zi5sZXhfYWJzX3BvcyA8LSBwb3NpdGlvbi5wb3NfY251bVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxleGJ1ZiBmbmFtZSA9XG4gIGxleGJ1Zi5sZXhfY3Vycl9wIDwtIHtsZXhidWYubGV4X2N1cnJfcCB3aXRoIHBvc19mbmFtZSA9IGZuYW1lfVxuXG5sZXQgd2l0aF9wb3NpdGlvbnMgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zXG5cbmxldCBsZXhlbWUgbGV4YnVmID1cbiAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG5sZXQgc3ViX2xleGVtZSBsZXhidWYgaTEgaTIgPVxuICBsZXQgbGVuID0gaTItaTEgaW5cbiAgQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW5cblxubGV0IHN1Yl9sZXhlbWVfb3B0IGxleGJ1ZiBpMSBpMiA9XG4gIGlmIGkxID49IDAgdGhlbiBiZWdpblxuICAgIGxldCBsZW4gPSBpMi1pMSBpblxuICAgIFNvbWUgKEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgaTEgbGVuKVxuICBlbmQgZWxzZSBiZWdpblxuICAgIE5vbmVcbiAgZW5kXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPSBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaVxuXG5sZXQgc3ViX2xleGVtZV9jaGFyX29wdCBsZXhidWYgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgU29tZSAoQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIGkpXG4gIGVsc2VcbiAgICBOb25lXG5cblxubGV0IGxleGVtZV9jaGFyIGxleGJ1ZiBpID1cbiAgQnl0ZXMuZ2V0IGxleGJ1Zi5sZXhfYnVmZmVyIChsZXhidWYubGV4X3N0YXJ0X3BvcyArIGkpXG5cbmxldCBsZXhlbWVfc3RhcnQgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wLnBvc19jbnVtXG5sZXQgbGV4ZW1lX2VuZCBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcC5wb3NfY251bVxuXG5sZXQgbGV4ZW1lX3N0YXJ0X3AgbGV4YnVmID0gbGV4YnVmLmxleF9zdGFydF9wXG5sZXQgbGV4ZW1lX2VuZF9wIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wXG5cbmxldCBuZXdfbGluZSBsZXhidWYgPVxuICBsZXQgbGNwID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICAgIHsgbGNwIHdpdGhcbiAgICAgICAgcG9zX2xudW0gPSBsY3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGNwLnBvc19jbnVtO1xuICAgICAgfVxuXG5cblxuKCogRGlzY2FyZCBkYXRhIGxlZnQgaW4gbGV4ZXIgYnVmZmVyLiAqKVxuXG5sZXQgZmx1c2hfaW5wdXQgbGIgPVxuICBsYi5sZXhfY3Vycl9wb3MgPC0gMDtcbiAgbGIubGV4X2Fic19wb3MgPC0gMDtcbiAgbGV0IGxjcCA9IGxiLmxleF9jdXJyX3AgaW5cbiAgaWYgbGNwICE9IGR1bW15X3BvcyB0aGVuXG4gICAgbGIubGV4X2N1cnJfcCA8LSB7emVyb19wb3Mgd2l0aCBwb3NfZm5hbWUgPSBsY3AucG9zX2ZuYW1lfTtcbiAgbGIubGV4X2J1ZmZlcl9sZW4gPC0gMDtcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogVGhlIHBhcnNpbmcgZW5naW5lICopXG5cbm9wZW4gTGV4aW5nXG5cbigqIEludGVybmFsIGludGVyZmFjZSB0byB0aGUgcGFyc2luZyBlbmdpbmUgKilcblxudHlwZSBwYXJzZXJfZW52ID1cbiAgeyBtdXRhYmxlIHNfc3RhY2sgOiBpbnQgYXJyYXk7ICAgICAgICAoKiBTdGF0ZXMgKilcbiAgICBtdXRhYmxlIHZfc3RhY2sgOiBPYmoudCBhcnJheTsgICAgICAoKiBTZW1hbnRpYyBhdHRyaWJ1dGVzICopXG4gICAgbXV0YWJsZSBzeW1iX3N0YXJ0X3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICgqIFN0YXJ0IHBvc2l0aW9ucyAqKVxuICAgIG11dGFibGUgc3ltYl9lbmRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgICAoKiBFbmQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzdGFja3NpemUgOiBpbnQ7ICAgICAgICAgICAgKCogU2l6ZSBvZiB0aGUgc3RhY2tzICopXG4gICAgbXV0YWJsZSBzdGFja2Jhc2UgOiBpbnQ7ICAgICAgICAgICAgKCogQmFzZSBzcCBmb3IgY3VycmVudCBwYXJzZSAqKVxuICAgIG11dGFibGUgY3Vycl9jaGFyIDogaW50OyAgICAgICAgICAgICgqIExhc3QgdG9rZW4gcmVhZCAqKVxuICAgIG11dGFibGUgbHZhbCA6IE9iai50OyAgICAgICAgICAgICAgICgqIEl0cyBzZW1hbnRpYyBhdHRyaWJ1dGUgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnQgOiBwb3NpdGlvbjsgICAgICAoKiBTdGFydCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCopXG4gICAgbXV0YWJsZSBzeW1iX2VuZCA6IHBvc2l0aW9uOyAgICAgICAgKCogRW5kIHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sICopXG4gICAgbXV0YWJsZSBhc3AgOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogVGhlIHN0YWNrIHBvaW50ZXIgZm9yIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHJ1bGVfbGVuIDogaW50OyAgICAgICAgICAgICAoKiBOdW1iZXIgb2YgcmhzIGl0ZW1zIGluIHRoZSBydWxlICopXG4gICAgbXV0YWJsZSBydWxlX251bWJlciA6IGludDsgICAgICAgICAgKCogUnVsZSBudW1iZXIgdG8gcmVkdWNlIGJ5ICopXG4gICAgbXV0YWJsZSBzcCA6IGludDsgICAgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3AgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgc3RhdGUgOiBpbnQ7ICAgICAgICAgICAgICAgICgqIFNhdmVkIHN0YXRlIGZvciBwYXJzZV9lbmdpbmUgKilcbiAgICBtdXRhYmxlIGVycmZsYWcgOiBpbnQgfSAgICAgICAgICAgICAoKiBTYXZlZCBlcnJvciBmbGFnIGZvciBwYXJzZV9lbmdpbmUgKilcbltAQHdhcm5pbmcgXCItdW51c2VkLWZpZWxkXCJdXG5cbnR5cGUgcGFyc2VfdGFibGVzID1cbiAgeyBhY3Rpb25zIDogKHBhcnNlcl9lbnYgLT4gT2JqLnQpIGFycmF5O1xuICAgIHRyYW5zbF9jb25zdCA6IGludCBhcnJheTtcbiAgICB0cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7XG4gICAgbGhzIDogc3RyaW5nO1xuICAgIGxlbiA6IHN0cmluZztcbiAgICBkZWZyZWQgOiBzdHJpbmc7XG4gICAgZGdvdG8gOiBzdHJpbmc7XG4gICAgc2luZGV4IDogc3RyaW5nO1xuICAgIHJpbmRleCA6IHN0cmluZztcbiAgICBnaW5kZXggOiBzdHJpbmc7XG4gICAgdGFibGVzaXplIDogaW50O1xuICAgIHRhYmxlIDogc3RyaW5nO1xuICAgIGNoZWNrIDogc3RyaW5nO1xuICAgIGVycm9yX2Z1bmN0aW9uIDogc3RyaW5nIC0+IHVuaXQ7XG4gICAgbmFtZXNfY29uc3QgOiBzdHJpbmc7XG4gICAgbmFtZXNfYmxvY2sgOiBzdHJpbmcgfVxuXG5leGNlcHRpb24gWVlleGl0IG9mIE9iai50XG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBwYXJzZXJfaW5wdXQgPVxuICAgIFN0YXJ0XG4gIHwgVG9rZW5fcmVhZFxuICB8IFN0YWNrc19ncm93bl8xXG4gIHwgU3RhY2tzX2dyb3duXzJcbiAgfCBTZW1hbnRpY19hY3Rpb25fY29tcHV0ZWRcbiAgfCBFcnJvcl9kZXRlY3RlZFxuXG50eXBlIHBhcnNlcl9vdXRwdXQgPVxuICAgIFJlYWRfdG9rZW5cbiAgfCBSYWlzZV9wYXJzZV9lcnJvclxuICB8IEdyb3dfc3RhY2tzXzFcbiAgfCBHcm93X3N0YWNrc18yXG4gIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb25cbiAgfCBDYWxsX2Vycm9yX2Z1bmN0aW9uXG5cbigqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5sZXQgXyA9IFtSZWFkX3Rva2VuOyBSYWlzZV9wYXJzZV9lcnJvcjsgR3Jvd19zdGFja3NfMTsgR3Jvd19zdGFja3NfMjtcbiAgICAgICAgIENvbXB1dGVfc2VtYW50aWNfYWN0aW9uOyBDYWxsX2Vycm9yX2Z1bmN0aW9uXVxuXG5leHRlcm5hbCBwYXJzZV9lbmdpbmUgOlxuICAgIHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52IC0+IHBhcnNlcl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0XG4gICAgPSBcImNhbWxfcGFyc2VfZW5naW5lXCJcblxuZXh0ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2xcbiAgICA9IFwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlXCJcblxubGV0IGVudiA9XG4gIHsgc19zdGFjayA9IEFycmF5Lm1ha2UgMTAwIDA7XG4gICAgdl9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIChPYmoucmVwciAoKSk7XG4gICAgc3ltYl9zdGFydF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzeW1iX2VuZF9zdGFjayA9IEFycmF5Lm1ha2UgMTAwIGR1bW15X3BvcztcbiAgICBzdGFja3NpemUgPSAxMDA7XG4gICAgc3RhY2tiYXNlID0gMDtcbiAgICBjdXJyX2NoYXIgPSAwO1xuICAgIGx2YWwgPSBPYmoucmVwciAoKTtcbiAgICBzeW1iX3N0YXJ0ID0gZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kID0gZHVtbXlfcG9zO1xuICAgIGFzcCA9IDA7XG4gICAgcnVsZV9sZW4gPSAwO1xuICAgIHJ1bGVfbnVtYmVyID0gMDtcbiAgICBzcCA9IDA7XG4gICAgc3RhdGUgPSAwO1xuICAgIGVycmZsYWcgPSAwIH1cblxubGV0IGdyb3dfc3RhY2tzKCkgPVxuICBsZXQgb2xkc2l6ZSA9IGVudi5zdGFja3NpemUgaW5cbiAgbGV0IG5ld3NpemUgPSBvbGRzaXplICogMiBpblxuICBsZXQgbmV3X3MgPSBBcnJheS5tYWtlIG5ld3NpemUgMFxuICBhbmQgbmV3X3YgPSBBcnJheS5tYWtlIG5ld3NpemUgKE9iai5yZXByICgpKVxuICBhbmQgbmV3X3N0YXJ0ID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3Bvc1xuICBhbmQgbmV3X2VuZCA9IEFycmF5Lm1ha2UgbmV3c2l6ZSBkdW1teV9wb3MgaW5cbiAgICBBcnJheS5ibGl0IGVudi5zX3N0YWNrIDAgbmV3X3MgMCBvbGRzaXplO1xuICAgIGVudi5zX3N0YWNrIDwtIG5ld19zO1xuICAgIEFycmF5LmJsaXQgZW52LnZfc3RhY2sgMCBuZXdfdiAwIG9sZHNpemU7XG4gICAgZW52LnZfc3RhY2sgPC0gbmV3X3Y7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9zdGFydF9zdGFjayAwIG5ld19zdGFydCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfc3RhcnRfc3RhY2sgPC0gbmV3X3N0YXJ0O1xuICAgIEFycmF5LmJsaXQgZW52LnN5bWJfZW5kX3N0YWNrIDAgbmV3X2VuZCAwIG9sZHNpemU7XG4gICAgZW52LnN5bWJfZW5kX3N0YWNrIDwtIG5ld19lbmQ7XG4gICAgZW52LnN0YWNrc2l6ZSA8LSBuZXdzaXplXG5cbmxldCBjbGVhcl9wYXJzZXIoKSA9XG4gIEFycmF5LmZpbGwgZW52LnZfc3RhY2sgMCBlbnYuc3RhY2tzaXplIChPYmoucmVwciAoKSk7XG4gIGVudi5sdmFsIDwtIE9iai5yZXByICgpXG5cbmxldCBjdXJyZW50X2xvb2thaGVhZF9mdW4gPSByZWYgKGZ1biAoXyA6IE9iai50KSAtPiBmYWxzZSlcblxubGV0IHl5cGFyc2UgdGFibGVzIHN0YXJ0IGxleGVyIGxleGJ1ZiA9XG4gIGxldCByZWMgbG9vcCBjbWQgYXJnID1cbiAgICBtYXRjaCBwYXJzZV9lbmdpbmUgdGFibGVzIGVudiBjbWQgYXJnIHdpdGhcbiAgICAgIFJlYWRfdG9rZW4gLT5cbiAgICAgICAgbGV0IHQgPSBPYmoucmVwcihsZXhlciBsZXhidWYpIGluXG4gICAgICAgIGVudi5zeW1iX3N0YXJ0IDwtIGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICAgICAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICAgICAgICBsb29wIFRva2VuX3JlYWQgdFxuICAgIHwgUmFpc2VfcGFyc2VfZXJyb3IgLT5cbiAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICB8IENvbXB1dGVfc2VtYW50aWNfYWN0aW9uIC0+XG4gICAgICAgIGxldCAoYWN0aW9uLCB2YWx1ZSkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgKFNlbWFudGljX2FjdGlvbl9jb21wdXRlZCwgdGFibGVzLmFjdGlvbnMuKGVudi5ydWxlX251bWJlcikgZW52KVxuICAgICAgICAgIHdpdGggUGFyc2VfZXJyb3IgLT5cbiAgICAgICAgICAgIChFcnJvcl9kZXRlY3RlZCwgT2JqLnJlcHIgKCkpIGluXG4gICAgICAgIGxvb3AgYWN0aW9uIHZhbHVlXG4gICAgfCBHcm93X3N0YWNrc18xIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzEgKE9iai5yZXByICgpKVxuICAgIHwgR3Jvd19zdGFja3NfMiAtPlxuICAgICAgICBncm93X3N0YWNrcygpOyBsb29wIFN0YWNrc19ncm93bl8yIChPYmoucmVwciAoKSlcbiAgICB8IENhbGxfZXJyb3JfZnVuY3Rpb24gLT5cbiAgICAgICAgdGFibGVzLmVycm9yX2Z1bmN0aW9uIFwic3ludGF4IGVycm9yXCI7XG4gICAgICAgIGxvb3AgRXJyb3JfZGV0ZWN0ZWQgKE9iai5yZXByICgpKSBpblxuICBsZXQgaW5pdF9hc3AgPSBlbnYuYXNwXG4gIGFuZCBpbml0X3NwID0gZW52LnNwXG4gIGFuZCBpbml0X3N0YWNrYmFzZSA9IGVudi5zdGFja2Jhc2VcbiAgYW5kIGluaXRfc3RhdGUgPSBlbnYuc3RhdGVcbiAgYW5kIGluaXRfY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhclxuICBhbmQgaW5pdF9sdmFsID0gZW52Lmx2YWxcbiAgYW5kIGluaXRfZXJyZmxhZyA9IGVudi5lcnJmbGFnIGluXG4gIGVudi5zdGFja2Jhc2UgPC0gZW52LnNwICsgMTtcbiAgZW52LmN1cnJfY2hhciA8LSBzdGFydDtcbiAgZW52LnN5bWJfZW5kIDwtIGxleGJ1Zi5sZXhfY3Vycl9wO1xuICB0cnlcbiAgICBsb29wIFN0YXJ0IChPYmoucmVwciAoKSlcbiAgd2l0aCBleG4gLT5cbiAgICBsZXQgY3Vycl9jaGFyID0gZW52LmN1cnJfY2hhciBpblxuICAgIGVudi5hc3AgPC0gaW5pdF9hc3A7XG4gICAgZW52LnNwIDwtIGluaXRfc3A7XG4gICAgZW52LnN0YWNrYmFzZSA8LSBpbml0X3N0YWNrYmFzZTtcbiAgICBlbnYuc3RhdGUgPC0gaW5pdF9zdGF0ZTtcbiAgICBlbnYuY3Vycl9jaGFyIDwtIGluaXRfY3Vycl9jaGFyO1xuICAgIGVudi5sdmFsIDwtIGluaXRfbHZhbDtcbiAgICBlbnYuZXJyZmxhZyA8LSBpbml0X2VycmZsYWc7XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICAgIFlZZXhpdCB2IC0+XG4gICAgICAgIE9iai5tYWdpYyB2XG4gICAgfCBfIC0+XG4gICAgICAgIGN1cnJlbnRfbG9va2FoZWFkX2Z1biA6PVxuICAgICAgICAgIChmdW4gdG9rIC0+XG4gICAgICAgICAgICBpZiBPYmouaXNfYmxvY2sgdG9rXG4gICAgICAgICAgICB0aGVuIHRhYmxlcy50cmFuc2xfYmxvY2suKE9iai50YWcgdG9rKSA9IGN1cnJfY2hhclxuICAgICAgICAgICAgZWxzZSB0YWJsZXMudHJhbnNsX2NvbnN0LihPYmoubWFnaWMgdG9rKSA9IGN1cnJfY2hhcik7XG4gICAgICAgIHJhaXNlIGV4blxuXG5sZXQgcGVla192YWwgZW52IG4gPVxuICBPYmoubWFnaWMgZW52LnZfc3RhY2suKGVudi5hc3AgLSBuKVxuXG5sZXQgc3ltYm9sX3N0YXJ0X3BvcyAoKSA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDw9IDAgdGhlbiBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHN0ID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSBpICsgMSkgaW5cbiAgICAgIGxldCBlbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgaWYgc3QgPD4gZW4gdGhlbiBzdCBlbHNlIGxvb3AgKGkgLSAxKVxuICAgIGVuZFxuICBpblxuICBsb29wIGVudi5ydWxlX2xlblxuXG5sZXQgc3ltYm9sX2VuZF9wb3MgKCkgPSBlbnYuc3ltYl9lbmRfc3RhY2suKGVudi5hc3ApXG5sZXQgcmhzX3N0YXJ0X3BvcyBuID0gZW52LnN5bWJfc3RhcnRfc3RhY2suKGVudi5hc3AgLSAoZW52LnJ1bGVfbGVuIC0gbikpXG5sZXQgcmhzX2VuZF9wb3MgbiA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcblxubGV0IHN5bWJvbF9zdGFydCAoKSA9IChzeW1ib2xfc3RhcnRfcG9zICgpKS5wb3NfY251bVxubGV0IHN5bWJvbF9lbmQgKCkgPSAoc3ltYm9sX2VuZF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgcmhzX3N0YXJ0IG4gPSAocmhzX3N0YXJ0X3BvcyBuKS5wb3NfY251bVxubGV0IHJoc19lbmQgbiA9IChyaHNfZW5kX3BvcyBuKS5wb3NfY251bVxuXG5sZXQgaXNfY3VycmVudF9sb29rYWhlYWQgdG9rID1cbiAgKCFjdXJyZW50X2xvb2thaGVhZF9mdW4pKE9iai5yZXByIHRvaylcblxubGV0IHBhcnNlX2Vycm9yIChfIDogc3RyaW5nKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFNldHMgb3ZlciBvcmRlcmVkIHR5cGVzICopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGVsdFxuICAgIHR5cGUgdFxuICAgIHZhbCBlbXB0eTogdFxuICAgIHZhbCBpc19lbXB0eTogdCAtPiBib29sXG4gICAgdmFsIG1lbTogZWx0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgc2luZ2xldG9uOiBlbHQgLT4gdFxuICAgIHZhbCByZW1vdmU6IGVsdCAtPiB0IC0+IHRcbiAgICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gICAgdmFsIGludGVyOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBkaXNqb2ludDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZGlmZjogdCAtPiB0IC0+IHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgc3Vic2V0OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICAgIHZhbCBtYXA6IChlbHQgLT4gZWx0KSAtPiB0IC0+IHRcbiAgICB2YWwgZm9sZDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICAgIHZhbCBmb3JfYWxsOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGVsdCAtPiBlbHQgb3B0aW9uKSAtPiB0IC0+IHRcbiAgICB2YWwgcGFydGl0aW9uOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcbiAgICB2YWwgY2FyZGluYWw6IHQgLT4gaW50XG4gICAgdmFsIGVsZW1lbnRzOiB0IC0+IGVsdCBsaXN0XG4gICAgdmFsIG1pbl9lbHQ6IHQgLT4gZWx0XG4gICAgdmFsIG1pbl9lbHRfb3B0OiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgbWF4X2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWF4X2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBjaG9vc2U6IHQgLT4gZWx0XG4gICAgdmFsIGNob29zZV9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBzcGxpdDogZWx0IC0+IHQgLT4gdCAqIGJvb2wgKiB0XG4gICAgdmFsIGZpbmQ6IGVsdCAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX29wdDogZWx0IC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdCBvcHRpb25cbiAgICB2YWwgb2ZfbGlzdDogZWx0IGxpc3QgLT4gdFxuICAgIHZhbCB0b19zZXFfZnJvbSA6IGVsdCAtPiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogdCAtPiBlbHQgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6IGVsdCBTZXEudCAtPiB0IC0+IHRcbiAgICB2YWwgb2Zfc2VxIDogZWx0IFNlcS50IC0+IHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID1cbiAgc3RydWN0XG4gICAgdHlwZSBlbHQgPSBPcmQudFxuICAgIHR5cGUgdCA9IEVtcHR5IHwgTm9kZSBvZiB7bDp0OyB2OmVsdDsgcjp0OyBoOmludH1cblxuICAgICgqIFNldHMgYXJlIHJlcHJlc2VudGVkIGJ5IGJhbGFuY2VkIGJpbmFyeSB0cmVlcyAodGhlIGhlaWdodHMgb2YgdGhlXG4gICAgICAgY2hpbGRyZW4gZGlmZmVyIGJ5IGF0IG1vc3QgMiAqKVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgKCogQ3JlYXRlcyBhIG5ldyBub2RlIHdpdGggbGVmdCBzb24gbCwgdmFsdWUgdiBhbmQgcmlnaHQgc29uIHIuXG4gICAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICAgIGwgYW5kIHIgbXVzdCBiZSBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGhlaWdodCBmb3IgYmV0dGVyIHNwZWVkLiAqKVxuXG4gICAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgICBBc3N1bWVzIGwgYW5kIHIgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDMuXG4gICAgICAgSW5saW5lIGV4cGFuc2lvbiBvZiBjcmVhdGUgZm9yIGJldHRlciBzcGVlZCBpbiB0aGUgbW9zdCBmcmVxdWVudCBjYXNlXG4gICAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgICBsZXQgYmFsIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiAoY3JlYXRlIGxyIHYgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiU2V0LmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IHJsKSBydiByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmxsKSBybHYgKGNyZWF0ZSBybHIgcnYgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdjsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgKCogSW5zZXJ0aW9uIG9mIG9uZSBlbGVtZW50ICopXG5cbiAgICBsZXQgcmVjIGFkZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHQgZWxzZVxuICAgICAgICAgIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0IGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IGFkZCB4IHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0IGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHNpbmdsZXRvbiB4ID0gTm9kZXtsPUVtcHR5OyB2PXg7IHI9RW1wdHk7IGg9MX1cblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgdiBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBlbGVtZW50cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBlbGVtZW50LlxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9lbGVtZW50IHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24geFxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICBiYWwgKGFkZF9taW5fZWxlbWVudCB4IGwpIHYgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgKGFkZF9tYXhfZWxlbWVudCB4IHIpXG5cbiAgICAoKiBTYW1lIGFzIGNyZWF0ZSBhbmQgYmFsLCBidXQgbm8gYXNzdW1wdGlvbnMgYXJlIG1hZGUgb24gdGhlXG4gICAgICAgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IHJlYyBqb2luIGwgdiByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9lbGVtZW50IHYgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfZWxlbWVudCB2IGxcbiAgICAgIHwgKE5vZGV7bD1sbDsgdj1sdjsgcj1scjsgaD1saH0sIE5vZGV7bD1ybDsgdj1ydjsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgKGpvaW4gbHIgdiByKSBlbHNlXG4gICAgICAgICAgaWYgcmggPiBsaCArIDIgdGhlbiBiYWwgKGpvaW4gbCB2IHJsKSBydiByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiByXG5cbiAgICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgdn0gLT4gdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHQgbFxuXG4gICAgbGV0IHJlYyBtaW5fZWx0X29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiBTb21lIHZcbiAgICAgIHwgTm9kZXtsfSAtPiBtaW5fZWx0X29wdCBsXG5cbiAgICBsZXQgcmVjIG1heF9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXt2OyByPUVtcHR5fSAtPiB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdCByXG5cbiAgICBsZXQgcmVjIG1heF9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle3J9IC0+IG1heF9lbHRfb3B0IHJcblxuICAgICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQucmVtb3ZlX21pbl9lbHRcIlxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuXG4gICAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuXG4gICAgICAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICAgIEFzc3VtZSB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLiAqKVxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gYmFsIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IGpvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIFNwbGl0dGluZy4gIHNwbGl0IHggcyByZXR1cm5zIGEgdHJpcGxlIChsLCBwcmVzZW50LCByKSB3aGVyZVxuICAgICAgICAtIGwgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlIDwgeFxuICAgICAgICAtIHIgaXMgdGhlIHNldCBvZiBlbGVtZW50cyBvZiBzIHRoYXQgYXJlID4geFxuICAgICAgICAtIHByZXNlbnQgaXMgZmFsc2UgaWYgcyBjb250YWlucyBubyBlbGVtZW50IGVxdWFsIHRvIHgsXG4gICAgICAgICAgb3IgdHJ1ZSBpZiBzIGNvbnRhaW5zIGFuIGVsZW1lbnQgZXF1YWwgdG8geC4gKilcblxuICAgIGxldCByZWMgc3BsaXQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKEVtcHR5LCBmYWxzZSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gKGwsIHRydWUsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGxyLCBwcmVzLCBycilcblxuICAgICgqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBzZXQgb3BlcmF0aW9ucyAqKVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0gYXMgdCkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluXG4gICAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGxsIHYgclxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBsZXQgcnIgPSByZW1vdmUgeCByIGluXG4gICAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiB0XG4gICAgICAgICAgICAgIGVsc2UgYmFsIGwgdiByclxuXG4gICAgbGV0IHJlYyB1bmlvbiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdDIpIC0+IHQyXG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjE7IGg9aDF9LCBOb2Rle2w9bDI7IHY9djI7IHI9cjI7IGg9aDJ9KSAtPlxuICAgICAgICAgIGlmIGgxID49IGgyIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMSB0aGVuIGFkZCB2MiBzMSBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDIsIF8sIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MSAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBoMSA9IDEgdGhlbiBhZGQgdjEgczIgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBsZXQgKGwxLCBfLCByMSkgPSBzcGxpdCB2MiBzMSBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjIgKHVuaW9uIHIxIHIyKVxuICAgICAgICAgICAgZW5kXG5cbiAgICBsZXQgcmVjIGludGVyIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAoXywgRW1wdHkpIC0+IEVtcHR5XG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMilcblxuICAgICgqIFNhbWUgYXMgc3BsaXQsIGJ1dCBjb21wdXRlIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlc1xuICAgICAgIG9ubHkgaWYgdGhlIHBpdm90IGVsZW1lbnQgaXMgbm90IGluIHRoZSBzZXQuICBUaGUgcmlnaHQgc3VidHJlZVxuICAgICAgIGlzIGNvbXB1dGVkIG9uIGRlbWFuZC4gKilcblxuICAgIHR5cGUgc3BsaXRfYmlzID1cbiAgICAgIHwgRm91bmRcbiAgICAgIHwgTm90Rm91bmQgb2YgdCAqICh1bml0IC0+IHQpXG5cbiAgICBsZXQgcmVjIHNwbGl0X2JpcyB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb3RGb3VuZCAoRW1wdHksIChmdW4gKCkgLT4gRW1wdHkpKVxuICAgICAgfCBOb2Rle2w7IHY7IHI7IF99IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIEZvdW5kXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBzcGxpdF9iaXMgeCBsIHdpdGhcbiAgICAgICAgICAgIHwgRm91bmQgLT4gRm91bmRcbiAgICAgICAgICAgIHwgTm90Rm91bmQgKGxsLCBybCkgLT4gTm90Rm91bmQgKGxsLCAoZnVuICgpIC0+IGpvaW4gKHJsICgpKSB2IHIpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IHIgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobHIsIHJyKSAtPiBOb3RGb3VuZCAoam9pbiBsIHYgbHIsIHJyKVxuXG4gICAgbGV0IHJlYyBkaXNqb2ludCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgfCAoXywgRW1wdHkpIC0+IHRydWVcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIGlmIHMxID09IHMyIHRoZW4gZmFsc2VcbiAgICAgICAgICBlbHNlIG1hdGNoIHNwbGl0X2JpcyB2MSB0MiB3aXRoXG4gICAgICAgICAgICAgIE5vdEZvdW5kKGwyLCByMikgLT4gZGlzam9pbnQgbDEgbDIgJiYgZGlzam9pbnQgcjEgKHIyICgpKVxuICAgICAgICAgICAgfCBGb3VuZCAtPiBmYWxzZVxuXG4gICAgbGV0IHJlYyBkaWZmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBFbXB0eVxuICAgICAgfCAodDEsIEVtcHR5KSAtPiB0MVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgbWF0Y2ggc3BsaXQgdjEgdDIgd2l0aFxuICAgICAgICAgICAgKGwyLCBmYWxzZSwgcjIpIC0+XG4gICAgICAgICAgICAgIGpvaW4gKGRpZmYgbDEgbDIpIHYxIChkaWZmIHIxIHIyKVxuICAgICAgICAgIHwgKGwyLCB0cnVlLCByMikgLT5cbiAgICAgICAgICAgICAgY29uY2F0IChkaWZmIGwxIGwyKSAoZGlmZiByMSByMilcblxuICAgIHR5cGUgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqIHQgKiBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgciwgZSkpXG5cbiAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgIHwgKEVuZCwgXykgIC0+IC0xXG4gICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgIHwgKE1vcmUodjEsIHIxLCBlMSksIE1vcmUodjIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcblxuICAgIGxldCBjb21wYXJlIHMxIHMyID1cbiAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gczEgRW5kKSAoY29uc19lbnVtIHMyIEVuZClcblxuICAgIGxldCBlcXVhbCBzMSBzMiA9XG4gICAgICBjb21wYXJlIHMxIHMyID0gMFxuXG4gICAgbGV0IHJlYyBzdWJzZXQgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICBFbXB0eSwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICAgIHwgXywgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsPWwxOyB2PXYxOyByPXIxfSwgKE5vZGUge2w9bDI7IHY9djI7IHI9cjJ9IGFzIHQyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgbDEgbDIgJiYgc3Vic2V0IHIxIHIyXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBzdWJzZXQgKE5vZGUge2w9bDE7IHY9djE7IHI9RW1wdHk7IGg9MH0pIGwyICYmIHN1YnNldCByMSB0MlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1FbXB0eTsgdj12MTsgcj1yMTsgaD0wfSkgcjIgJiYgc3Vic2V0IGwxIHQyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gaXRlciBmIGw7IGYgdjsgaXRlciBmIHJcblxuICAgIGxldCByZWMgZm9sZCBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGZvbGQgZiByIChmIHYgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gcCB2ICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bDsgdjsgcn0pIGFzIHQgLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlciBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgcicgPSBmaWx0ZXIgcCByIGluXG4gICAgICAgICAgaWYgcHYgdGhlblxuICAgICAgICAgICAgaWYgbD09bCcgJiYgcj09cicgdGhlbiB0IGVsc2Ugam9pbiBsJyB2IHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ID0gcCB2IGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2XG4gICAgICAgICAgdGhlbiAoam9pbiBsdCB2IHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgcmYpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2Rle2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBlbGVtZW50c19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBlbGVtZW50c19hdXggKHYgOjogZWxlbWVudHNfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGVsZW1lbnRzIHMgPVxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fZWx0XG5cbiAgICBsZXQgY2hvb3NlX29wdCA9IG1pbl9lbHRfb3B0XG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIHZcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgdjBcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIHZcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgdHJ5X2pvaW4gbCB2IHIgPVxuICAgICAgKCogW2pvaW4gbCB2IHJdIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIChlbGVtZW50cyBvZiBsIDwgdiA8XG4gICAgICAgICBlbGVtZW50cyBvZiByKTsgdXNlIFt0cnlfam9pbiBsIHYgcl0gd2hlbiB0aGlzIHByb3BlcnR5IG1heVxuICAgICAgICAgbm90IGhvbGQsIGJ1dCB5b3UgaG9wZSBpdCBkb2VzIGhvbGQgaW4gdGhlIGNvbW1vbiBjYXNlICopXG4gICAgICBpZiAobCA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIChtYXhfZWx0IGwpIHYgPCAwKVxuICAgICAgJiYgKHIgPSBFbXB0eSB8fCBPcmQuY29tcGFyZSB2IChtaW5fZWx0IHIpIDwgMClcbiAgICAgIHRoZW4gam9pbiBsIHYgclxuICAgICAgZWxzZSB1bmlvbiBsIChhZGQgdiByKVxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IG1hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgaWYgbCA9PSBsJyAmJiB2ID09IHYnICYmIHIgPT0gcicgdGhlbiB0XG4gICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG5cbiAgICBsZXQgdHJ5X2NvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+IHRyeV9qb2luIHQxIChtaW5fZWx0IHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gYXMgdCAtPlxuICAgICAgICAgKCogZW5mb3JjZSBsZWZ0LXRvLXJpZ2h0IGV2YWx1YXRpb24gb3JkZXIgKilcbiAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICBsZXQgdicgPSBmIHYgaW5cbiAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICBiZWdpbiBtYXRjaCB2JyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB2JyAtPlxuICAgICAgICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSB0cnlfam9pbiBsJyB2JyByJ1xuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgdHJ5X2NvbmNhdCBsJyByJ1xuICAgICAgICAgZW5kXG5cbiAgICBsZXQgb2Zfc29ydGVkX2xpc3QgbCA9XG4gICAgICBsZXQgcmVjIHN1YiBuIGwgPVxuICAgICAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICAgICAgfCAwLCBsIC0+IEVtcHR5LCBsXG4gICAgICAgIHwgMSwgeDAgOjogbCAtPiBOb2RlIHtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9LCBsXG4gICAgICAgIHwgMiwgeDAgOjogeDEgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTsgcj1FbXB0eTsgaD0yfSwgbFxuICAgICAgICB8IDMsIHgwIDo6IHgxIDo6IHgyIDo6IGwgLT5cbiAgICAgICAgICAgIE5vZGV7bD1Ob2Rle2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX07IHY9eDE7XG4gICAgICAgICAgICAgICAgIHI9Tm9kZXtsPUVtcHR5OyB2PXgyOyByPUVtcHR5OyBoPTF9OyBoPTJ9LCBsXG4gICAgICAgIHwgbiwgbCAtPlxuICAgICAgICAgIGxldCBubCA9IG4gLyAyIGluXG4gICAgICAgICAgbGV0IGxlZnQsIGwgPSBzdWIgbmwgbCBpblxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBtaWQgOjogbCAtPlxuICAgICAgICAgICAgbGV0IHJpZ2h0LCBsID0gc3ViIChuIC0gbmwgLSAxKSBsIGluXG4gICAgICAgICAgICBjcmVhdGUgbGVmdCBtaWQgcmlnaHQsIGxcbiAgICAgIGluXG4gICAgICBmc3QgKHN1YiAoTGlzdC5sZW5ndGggbCkgbClcblxuICAgIGxldCBvZl9saXN0IGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVtcHR5XG4gICAgICB8IFt4MF0gLT4gc2luZ2xldG9uIHgwXG4gICAgICB8IFt4MDsgeDFdIC0+IGFkZCB4MSAoc2luZ2xldG9uIHgwKVxuICAgICAgfCBbeDA7IHgxOyB4Ml0gLT4gYWRkIHgyIChhZGQgeDEgKHNpbmdsZXRvbiB4MCkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4M10gLT4gYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpXG4gICAgICB8IFt4MDsgeDE7IHgyOyB4MzsgeDRdIC0+IGFkZCB4NCAoYWRkIHgzIChhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSkpKVxuICAgICAgfCBfIC0+IG9mX3NvcnRlZF9saXN0IChMaXN0LnNvcnRfdW5pcSBPcmQuY29tcGFyZSBsKVxuXG4gICAgbGV0IGFkZF9zZXEgaSBtID1cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBzIHggLT4gYWRkIHggcykgbSBpXG5cbiAgICBsZXQgb2Zfc2VxIGkgPSBhZGRfc2VxIGkgZW1wdHlcblxuICAgIGxldCByZWMgc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIGMgPSBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBjIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoeCwgdCwgcmVzdCkgLT4gU2VxLkNvbnMgKHgsIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9IHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSBjIEVuZClcblxuICAgIGxldCB0b19zZXFfZnJvbSBsb3cgcyA9XG4gICAgICBsZXQgcmVjIGF1eCBsb3cgcyBjID0gbWF0Y2ggcyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gY1xuICAgICAgICB8IE5vZGUge2w7IHI7IHY7IF99IC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBPcmQuY29tcGFyZSB2IGxvdyB3aXRoXG4gICAgICAgICAgICAgIHwgMCAtPiBNb3JlICh2LCByLCBjKVxuICAgICAgICAgICAgICB8IG4gd2hlbiBuPDAgLT4gYXV4IGxvdyByIGNcbiAgICAgICAgICAgICAgfCBfIC0+IGF1eCBsb3cgbCAoTW9yZSAodiwgciwgYykpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBzZXFfb2ZfZW51bV8gKGF1eCBsb3cgcyBFbmQpXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBPcmRlcmVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICErJ2EgdFxuICAgIHZhbCBlbXB0eTogJ2EgdFxuICAgIHZhbCBpc19lbXB0eTogJ2EgdCAtPiBib29sXG4gICAgdmFsIG1lbTogIGtleSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgYWRkOiBrZXkgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVwZGF0ZToga2V5IC0+ICgnYSBvcHRpb24gLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgc2luZ2xldG9uOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICAgIHZhbCByZW1vdmU6IGtleSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgbWVyZ2U6XG4gICAgICAgICAgKGtleSAtPiAnYSBvcHRpb24gLT4gJ2Igb3B0aW9uIC0+ICdjIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0IC0+ICdjIHRcbiAgICB2YWwgdW5pb246IChrZXkgLT4gJ2EgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBjb21wYXJlOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgaXRlcjogKGtleSAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBmb3JfYWxsOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBleGlzdHM6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGZpbHRlcjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgZmlsdGVyX21hcDogKGtleSAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBwYXJ0aXRpb246IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0ICogJ2EgdFxuICAgIHZhbCBjYXJkaW5hbDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgYmluZGluZ3M6ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gICAgdmFsIG1pbl9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWluX2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1heF9iaW5kaW5nOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgbWF4X2JpbmRpbmdfb3B0OiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIGNob29zZTogJ2EgdCAtPiAoa2V5ICogJ2EpXG4gICAgdmFsIGNob29zZV9vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgc3BsaXQ6IGtleSAtPiAnYSB0IC0+ICdhIHQgKiAnYSBvcHRpb24gKiAnYSB0XG4gICAgdmFsIGZpbmQ6IGtleSAtPiAnYSB0IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiBrZXkgLT4gJ2EgdCAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9maXJzdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IGtleSAqICdhXG4gICAgdmFsIGZpbmRfZmlyc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgZmluZF9sYXN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9sYXN0X29wdDogKGtleSAtPiBib29sKSAtPiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gICAgdmFsIG1hcDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgbWFwaTogKGtleSAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19yZXZfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9mcm9tIDoga2V5IC0+ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZShPcmQ6IE9yZGVyZWRUeXBlKSA9IHN0cnVjdFxuXG4gICAgdHlwZSBrZXkgPSBPcmQudFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSBvZiB7bDonYSB0OyB2OmtleTsgZDonYTsgcjonYSB0OyBoOmludH1cblxuICAgIGxldCBoZWlnaHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2h9IC0+IGhcblxuICAgIGxldCBjcmVhdGUgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBoZWlnaHQgbCBhbmQgaHIgPSBoZWlnaHQgciBpblxuICAgICAgTm9kZXtsOyB2PXg7IGQ7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgIGxldCBzaW5nbGV0b24geCBkID0gTm9kZXtsPUVtcHR5OyB2PXg7IGQ7IHI9RW1wdHk7IGg9MX1cblxuICAgIGxldCBiYWwgbCB4IGQgciA9XG4gICAgICBsZXQgaGwgPSBtYXRjaCBsIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGxldCBociA9IG1hdGNoIHIgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgaWYgaGwgPiBociArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1sbDsgdj1sdjsgZD1sZDsgcj1scn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCBsbCA+PSBoZWlnaHQgbHIgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgbGwgbHYgbGQgKGNyZWF0ZSBsciB4IGQgcilcbiAgICAgICAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbHIgd2l0aFxuICAgICAgICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgICAgICAgIHwgTm9kZXtsPWxybDsgdj1scnY7IGQ9bHJkOyByPWxycn0tPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbGwgbHYgbGQgbHJsKSBscnYgbHJkIChjcmVhdGUgbHJyIHggZCByKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBpZiBociA+IGhsICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybCB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9cmxsOyB2PXJsdjsgZD1ybGQ7IHI9cmxyfSAtPlxuICAgICAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmxsKSBybHYgcmxkIChjcmVhdGUgcmxyIHJ2IHJkIHJyKVxuICAgICAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIEVtcHR5IC0+IHRydWUgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGFkZCB4IGRhdGEgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgICAgaWYgZCA9PSBkYXRhIHRoZW4gbSBlbHNlIE5vZGV7bDsgdj14OyBkPWRhdGE7IHI7IGh9XG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSBhZGQgeCBkYXRhIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggZGF0YSByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBmaW5kIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBkXG4gICAgICAgICAgZWxzZSBmaW5kIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2MCBkMCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3QgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lICh2MCwgZDApXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHQgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2MCBkMCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3QgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHRfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9vcHQgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkXG4gICAgICAgICAgZWxzZSBmaW5kX29wdCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtZW0geCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGMgPSAwIHx8IG1lbSB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsPUVtcHR5OyB2OyBkfSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0gLT4gbWluX2JpbmRpbmcgbFxuXG4gICAgbGV0IHJlYyBtaW5fYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge2x9LT4gbWluX2JpbmRpbmdfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZSB7djsgZDsgcj1FbXB0eX0gLT4gKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nIHJcblxuICAgIGxldCByZWMgbWF4X2JpbmRpbmdfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiBTb21lICh2LCBkKVxuICAgICAgfCBOb2RlIHtyfSAtPiBtYXhfYmluZGluZ19vcHQgclxuXG4gICAgbGV0IHJlYyByZW1vdmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHJ9IC0+IHJcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmFsIChyZW1vdmVfbWluX2JpbmRpbmcgbCkgdiBkIHJcblxuICAgIGxldCBtZXJnZSB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgYmFsIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgKE5vZGUge2w7IHY7IGQ7IHJ9IGFzIG0pIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIG1lcmdlIGwgclxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gcmVtb3ZlIHggbCBpbiBpZiBsID09IGxsIHRoZW4gbSBlbHNlIGJhbCBsbCB2IGQgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW4gaWYgciA9PSByciB0aGVuIG0gZWxzZSBiYWwgbCB2IGQgcnJcblxuICAgIGxldCByZWMgdXBkYXRlIHggZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZiBOb25lIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHlcbiAgICAgICAgICB8IFNvbWUgZGF0YSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgZD1kYXRhOyByPUVtcHR5OyBoPTF9XG4gICAgICAgICAgZW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IGFzIG0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlIGwgclxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbmQgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSB1cGRhdGUgeCBmIGwgaW5cbiAgICAgICAgICAgIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gdXBkYXRlIHggZiByIGluXG4gICAgICAgICAgICBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGl0ZXIgZiBsOyBmIHYgZDsgaXRlciBmIHJcblxuICAgIGxldCByZWMgbWFwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHI7IGh9IC0+XG4gICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgZCBpblxuICAgICAgICAgIGxldCByJyA9IG1hcCBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIG1hcGkgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXBpIGYgbCBpblxuICAgICAgICAgIGxldCBkJyA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwaSBmIHIgaW5cbiAgICAgICAgICBOb2Rle2w9bCc7IHY7IGQ9ZCc7IHI9cic7IGh9XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBmb2xkIGYgciAoZiB2IGQgKGZvbGQgZiBsIGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiB0cnVlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IHAgdiBkICYmIGZvcl9hbGwgcCBsICYmIGZvcl9hbGwgcCByXG5cbiAgICBsZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgfHwgZXhpc3RzIHAgbCB8fCBleGlzdHMgcCByXG5cbiAgICAoKiBCZXdhcmU6IHRob3NlIHR3byBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgdGhlIGFkZGVkIGsgaXMgKnN0cmljdGx5KlxuICAgICAgIHNtYWxsZXIgKG9yIGJpZ2dlcikgdGhhbiBhbGwgdGhlIHByZXNlbnQga2V5cyBpbiB0aGUgdHJlZTsgaXRcbiAgICAgICBkb2VzIG5vdCB0ZXN0IGZvciBlcXVhbGl0eSB3aXRoIHRoZSBjdXJyZW50IG1pbiAob3IgbWF4KSBrZXkuXG5cbiAgICAgICBJbmRlZWQsIHRoZXkgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIFwiam9pblwiIG9wZXJhdGlvbiB3aGljaFxuICAgICAgIHJlc3BlY3RzIHRoaXMgcHJlY29uZGl0aW9uLlxuICAgICopXG5cbiAgICBsZXQgcmVjIGFkZF9taW5fYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9iaW5kaW5nIGsgeCBsKSB2IGQgclxuXG4gICAgbGV0IHJlYyBhZGRfbWF4X2JpbmRpbmcgayB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIGsgeFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICBiYWwgbCB2IGQgKGFkZF9tYXhfYmluZGluZyBrIHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IGQgciA9XG4gICAgICBtYXRjaCAobCwgcikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IGFkZF9taW5fYmluZGluZyB2IGQgclxuICAgICAgfCAoXywgRW1wdHkpIC0+IGFkZF9tYXhfYmluZGluZyB2IGQgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyOyBoPWxofSxcbiAgICAgICAgIE5vZGV7bD1ybDsgdj1ydjsgZD1yZDsgcj1ycjsgaD1yaH0pIC0+XG4gICAgICAgICAgaWYgbGggPiByaCArIDIgdGhlbiBiYWwgbGwgbHYgbGQgKGpvaW4gbHIgdiBkIHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgZCBybCkgcnYgcmQgcnIgZWxzZVxuICAgICAgICAgIGNyZWF0ZSBsIHYgZCByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgTm8gYXNzdW1wdGlvbiBvbiB0aGUgaGVpZ2h0cyBvZiBsIGFuZCByLiAqKVxuXG4gICAgbGV0IGNvbmNhdCB0MSB0MiA9XG4gICAgICBtYXRjaCAodDEsIHQyKSB3aXRoXG4gICAgICAgIChFbXB0eSwgdCkgLT4gdFxuICAgICAgfCAodCwgRW1wdHkpIC0+IHRcbiAgICAgIHwgKF8sIF8pIC0+XG4gICAgICAgICAgbGV0ICh4LCBkKSA9IG1pbl9iaW5kaW5nIHQyIGluXG4gICAgICAgICAgam9pbiB0MSB4IGQgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxuICAgIGxldCBjb25jYXRfb3Jfam9pbiB0MSB2IGQgdDIgPVxuICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICB8IFNvbWUgZCAtPiBqb2luIHQxIHYgZCB0MlxuICAgICAgfCBOb25lIC0+IGNvbmNhdCB0MSB0MlxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIE5vbmUsIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgU29tZSBkLCByKVxuICAgICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IChsbCwgcHJlcywgcmwpID0gc3BsaXQgeCBsIGluIChsbCwgcHJlcywgam9pbiBybCB2IGQgcilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGxyLCBwcmVzLCBycikgPSBzcGxpdCB4IHIgaW4gKGpvaW4gbCB2IGQgbHIsIHByZXMsIHJyKVxuXG4gICAgbGV0IHJlYyBtZXJnZSBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LCBfKSB3aGVuIGgxID49IGhlaWdodCBzMiAtPlxuICAgICAgICAgIGxldCAobDIsIGQyLCByMikgPSBzcGxpdCB2MSBzMiBpblxuICAgICAgICAgIGNvbmNhdF9vcl9qb2luIChtZXJnZSBmIGwxIGwyKSB2MSAoZiB2MSAoU29tZSBkMSkgZDIpIChtZXJnZSBmIHIxIHIyKVxuICAgICAgfCAoXywgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMn0pIC0+XG4gICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYyIChmIHYyIGQxIChTb21lIGQyKSkgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IF8gLT5cbiAgICAgICAgICBhc3NlcnQgZmFsc2VcblxuICAgIGxldCByZWMgdW5pb24gZiBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICB8IChFbXB0eSwgcykgfCAocywgRW1wdHkpIC0+IHNcbiAgICAgIHwgKE5vZGUge2w9bDE7IHY9djE7IGQ9ZDE7IHI9cjE7IGg9aDF9LFxuICAgICAgICAgTm9kZSB7bD1sMjsgdj12MjsgZD1kMjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYxIGQxIHJcbiAgICAgICAgICAgIHwgU29tZSBkMiAtPiBjb25jYXRfb3Jfam9pbiBsIHYxIChmIHYxIGQxIGQyKSByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IChsMSwgZDEsIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICBsZXQgbCA9IHVuaW9uIGYgbDEgbDIgYW5kIHIgPSB1bmlvbiBmIHIxIHIyIGluXG4gICAgICAgICAgICBtYXRjaCBkMSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gam9pbiBsIHYyIGQyIHJcbiAgICAgICAgICAgIHwgU29tZSBkMSAtPiBjb25jYXRfb3Jfam9pbiBsIHYyIChmIHYyIGQxIGQyKSByXG5cbiAgICBsZXQgcmVjIGZpbHRlciBwID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdmQgdGhlbiBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIG0gZWxzZSBqb2luIGwnIHYgZCByJ1xuICAgICAgICAgIGVsc2UgY29uY2F0IGwnIHInXG5cbiAgICBsZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IEVtcHR5XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbZl0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXJfbWFwIGYgbCBpblxuICAgICAgICAgIGxldCBmdmQgPSBmIHYgZCBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlcl9tYXAgZiByIGluXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggZnZkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBkJyAtPiBqb2luIGwnIHYgZCcgcidcbiAgICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXQgbCcgcidcbiAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgcGFydGl0aW9uIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAoRW1wdHksIEVtcHR5KVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IChsdCwgbGYpID0gcGFydGl0aW9uIHAgbCBpblxuICAgICAgICAgIGxldCBwdmQgPSBwIHYgZCBpblxuICAgICAgICAgIGxldCAocnQsIHJmKSA9IHBhcnRpdGlvbiBwIHIgaW5cbiAgICAgICAgICBpZiBwdmRcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgZCBydCwgY29uY2F0IGxmIHJmKVxuICAgICAgICAgIGVsc2UgKGNvbmNhdCBsdCBydCwgam9pbiBsZiB2IGQgcmYpXG5cbiAgICB0eXBlICdhIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBrZXkgKiAnYSAqICdhIHQgKiAnYSBlbnVtZXJhdGlvblxuXG4gICAgbGV0IHJlYyBjb25zX2VudW0gbSBlID1cbiAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGNvbnNfZW51bSBsIChNb3JlKHYsIGQsIHIsIGUpKVxuXG4gICAgbGV0IGNvbXBhcmUgY21wIG0xIG0yID1cbiAgICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IDBcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgICAgfCAoXywgRW5kKSAtPiAxXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGNvbXBhcmVfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCBlcXVhbCBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBlcXVhbF9hdXggZTEgZTIgPVxuICAgICAgICAgIG1hdGNoIChlMSwgZTIpIHdpdGhcbiAgICAgICAgICAoRW5kLCBFbmQpIC0+IHRydWVcbiAgICAgICAgfCAoRW5kLCBfKSAgLT4gZmFsc2VcbiAgICAgICAgfCAoXywgRW5kKSAtPiBmYWxzZVxuICAgICAgICB8IChNb3JlKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSh2MiwgZDIsIHIyLCBlMikpIC0+XG4gICAgICAgICAgICBPcmQuY29tcGFyZSB2MSB2MiA9IDAgJiYgY21wIGQxIGQyICYmXG4gICAgICAgICAgICBlcXVhbF9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgIGluIGVxdWFsX2F1eCAoY29uc19lbnVtIG0xIEVuZCkgKGNvbnNfZW51bSBtMiBFbmQpXG5cbiAgICBsZXQgcmVjIGNhcmRpbmFsID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtsOyByfSAtPiBjYXJkaW5hbCBsICsgMSArIGNhcmRpbmFsIHJcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+IGJpbmRpbmdzX2F1eCAoKHYsIGQpIDo6IGJpbmRpbmdzX2F1eCBhY2N1IHIpIGxcblxuICAgIGxldCBiaW5kaW5ncyBzID1cbiAgICAgIGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgY2hvb3NlID0gbWluX2JpbmRpbmdcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2JpbmRpbmdfb3B0XG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIG0gKGssdikgLT4gYWRkIGsgdiBtKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlIChrLHYsdCxyZXN0KSAtPiBTZXEuQ29ucyAoKGssdiksIHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fc2VxIG0gPVxuICAgICAgc2VxX29mX2VudW1fIChjb25zX2VudW0gbSBFbmQpXG5cbiAgICBsZXQgcmVjIHNub2NfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyBkOyByfSAtPiBzbm9jX2VudW0gciAoTW9yZSh2LCBkLCBsLCBlKSlcblxuICAgIGxldCByZWMgcmV2X3NlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+XG4gICAgICAgICAgU2VxLkNvbnMgKChrLHYpLCByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19yZXZfc2VxIGMgPVxuICAgICAgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBtID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBtIGMgPSBtYXRjaCBtIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIGQsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCBkLCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBtIEVuZClcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IG11dGFibGUgYyA6ICdhIGxpc3Q7IG11dGFibGUgbGVuIDogaW50OyB9XG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG5sZXQgY3JlYXRlICgpID0geyBjID0gW107IGxlbiA9IDA7IH1cblxubGV0IGNsZWFyIHMgPSBzLmMgPC0gW107IHMubGVuIDwtIDBcblxubGV0IGNvcHkgcyA9IHsgYyA9IHMuYzsgbGVuID0gcy5sZW47IH1cblxubGV0IHB1c2ggeCBzID0gcy5jIDwtIHggOjogcy5jOyBzLmxlbiA8LSBzLmxlbiArIDFcblxubGV0IHBvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6dGwgLT4gcy5jIDwtIHRsOyBzLmxlbiA8LSBzLmxlbiAtIDE7IGhkXG4gIHwgW10gICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCBwb3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgU29tZSBoZFxuICB8IFtdICAgICAtPiBOb25lXG5cbmxldCB0b3AgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6Ol8gLT4gaGRcbiAgfCBbXSAgICAtPiByYWlzZSBFbXB0eVxuXG5sZXQgdG9wX29wdCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBTb21lIGhkXG4gIHwgW10gICAgLT4gTm9uZVxuXG5sZXQgaXNfZW1wdHkgcyA9IChzLmMgPSBbXSlcblxubGV0IGxlbmd0aCBzID0gcy5sZW5cblxubGV0IGl0ZXIgZiBzID0gTGlzdC5pdGVyIGYgcy5jXG5cbmxldCBmb2xkIGYgYWNjIHMgPSBMaXN0LmZvbGRfbGVmdCBmIGFjYyBzLmNcblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gTGlzdC50b19zZXEgcy5jXG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcyA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcyBnO1xuICBzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIEZyYW5jb2lzIFBvdHRpZXIsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgIEplcmVtaWUgRGltaW5vLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIGNlbGwgPVxuICB8IE5pbFxuICB8IENvbnMgb2YgeyBjb250ZW50OiAnYTsgbXV0YWJsZSBuZXh0OiAnYSBjZWxsIH1cblxudHlwZSAnYSB0ID0ge1xuICBtdXRhYmxlIGxlbmd0aDogaW50O1xuICBtdXRhYmxlIGZpcnN0OiAnYSBjZWxsO1xuICBtdXRhYmxlIGxhc3Q6ICdhIGNlbGxcbn1cblxubGV0IGNyZWF0ZSAoKSA9IHtcbiAgbGVuZ3RoID0gMDtcbiAgZmlyc3QgPSBOaWw7XG4gIGxhc3QgPSBOaWxcbn1cblxubGV0IGNsZWFyIHEgPVxuICBxLmxlbmd0aCA8LSAwO1xuICBxLmZpcnN0IDwtIE5pbDtcbiAgcS5sYXN0IDwtIE5pbFxuXG5sZXQgYWRkIHggcSA9XG4gIGxldCBjZWxsID0gQ29ucyB7XG4gICAgY29udGVudCA9IHg7XG4gICAgbmV4dCA9IE5pbFxuICB9IGluXG4gIG1hdGNoIHEubGFzdCB3aXRoXG4gIHwgTmlsIC0+XG4gICAgcS5sZW5ndGggPC0gMTtcbiAgICBxLmZpcnN0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcbiAgfCBDb25zIGxhc3QgLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCArIDE7XG4gICAgbGFzdC5uZXh0IDwtIGNlbGw7XG4gICAgcS5sYXN0IDwtIGNlbGxcblxubGV0IHB1c2ggPVxuICBhZGRcblxubGV0IHBlZWsgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50IH0gLT4gY29udGVudFxuXG5sZXQgcGVla19vcHQgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiBOb25lXG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBTb21lIGNvbnRlbnRcblxubGV0IHRvcCA9XG4gIHBlZWtcblxubGV0IHRha2UgcSA9XG4gIG1hdGNoIHEuZmlyc3Qgd2l0aFxuICB8IE5pbCAtPiByYWlzZSBFbXB0eVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBjb250ZW50XG5cbmxldCB0YWtlX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IC0+XG4gICAgY2xlYXIgcTtcbiAgICBTb21lIGNvbnRlbnRcbiAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgcS5sZW5ndGggPC0gcS5sZW5ndGggLSAxO1xuICAgIHEuZmlyc3QgPC0gbmV4dDtcbiAgICBTb21lIGNvbnRlbnRcblxubGV0IHBvcCA9XG4gIHRha2VcblxubGV0IGNvcHkgPVxuICBsZXQgcmVjIGNvcHkgcV9yZXMgcHJldiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiBxX3Jlcy5sYXN0IDwtIHByZXY7IHFfcmVzXG4gICAgfCBDb25zIHsgY29udGVudDsgbmV4dCB9IC0+XG4gICAgICBsZXQgcmVzID0gQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSBpblxuICAgICAgYmVnaW4gbWF0Y2ggcHJldiB3aXRoXG4gICAgICB8IE5pbCAtPiBxX3Jlcy5maXJzdCA8LSByZXNcbiAgICAgIHwgQ29ucyBwIC0+IHAubmV4dCA8LSByZXNcbiAgICAgIGVuZDtcbiAgICAgIGNvcHkgcV9yZXMgcmVzIG5leHRcbiAgaW5cbiAgZnVuIHEgLT4gY29weSB7IGxlbmd0aCA9IHEubGVuZ3RoOyBmaXJzdCA9IE5pbDsgbGFzdCA9IE5pbCB9IE5pbCBxLmZpcnN0XG5cbmxldCBpc19lbXB0eSBxID1cbiAgcS5sZW5ndGggPSAwXG5cbmxldCBsZW5ndGggcSA9XG4gIHEubGVuZ3RoXG5cbmxldCBpdGVyID1cbiAgbGV0IHJlYyBpdGVyIGYgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGYgY29udGVudDtcbiAgICAgIGl0ZXIgZiBuZXh0XG4gIGluXG4gIGZ1biBmIHEgLT4gaXRlciBmIHEuZmlyc3RcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGZvbGQgZiBhY2N1IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IGFjY3VcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCBhY2N1ID0gZiBhY2N1IGNvbnRlbnQgaW5cbiAgICAgIGZvbGQgZiBhY2N1IG5leHRcbiAgaW5cbiAgZnVuIGYgYWNjdSBxIC0+IGZvbGQgZiBhY2N1IHEuZmlyc3RcblxubGV0IHRyYW5zZmVyIHExIHEyID1cbiAgaWYgcTEubGVuZ3RoID4gMCB0aGVuXG4gICAgbWF0Y2ggcTIubGFzdCB3aXRoXG4gICAgfCBOaWwgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMS5sZW5ndGg7XG4gICAgICBxMi5maXJzdCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG4gICAgfCBDb25zIGxhc3QgLT5cbiAgICAgIHEyLmxlbmd0aCA8LSBxMi5sZW5ndGggKyBxMS5sZW5ndGg7XG4gICAgICBsYXN0Lm5leHQgPC0gcTEuZmlyc3Q7XG4gICAgICBxMi5sYXN0IDwtIHExLmxhc3Q7XG4gICAgICBjbGVhciBxMVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHEgPVxuICBsZXQgcmVjIGF1eCBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgfCBOaWwgLT4gU2VxLk5pbFxuICAgIHwgQ29ucyB7IGNvbnRlbnQ9eDsgbmV4dDsgfSAtPiBTZXEuQ29ucyAoeCwgYXV4IG5leHQpXG4gIGluXG4gIGF1eCBxLmZpcnN0XG5cbmxldCBhZGRfc2VxIHEgaSA9IFNlcS5pdGVyIChmdW4geCAtPiBwdXNoIHggcSkgaVxuXG5sZXQgb2Zfc2VxIGcgPVxuICBsZXQgcSA9IGNyZWF0ZSgpIGluXG4gIGFkZF9zZXEgcSBnO1xuICBxXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG4oKiBUaGUgW2lubmVyX2J1ZmZlcl0gdHlwZSBlbnN1cmVzIHRoYXQgdGhlIFtsZW5ndGhdIGFuZCBbYnVmZmVyXSBmaWVsZHMgYXJlXG4gICBhbHdheXMgc3luY2hyb25pemVkLCBbbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGJ1ZmZlcl0sIGV2ZW4gaW4gcHJlc2VuY2VcbiAgIG9mIGRhdGEgcmFjZXMuXG4qKVxudHlwZSBpbm5lcl9idWZmZXIgPSB7XG4gIGJ1ZmZlcjogYnl0ZXM7XG4gIGxlbmd0aDogaW50O1xufVxuXG50eXBlIHQgPVxuIHttdXRhYmxlIGlubmVyIDogaW5uZXJfYnVmZmVyO1xuICBtdXRhYmxlIHBvc2l0aW9uIDogaW50O1xuICBpbml0aWFsX2J1ZmZlciA6IGJ5dGVzfVxuKCogSW52YXJpYW50czogYWxsIHBhcnRzIG9mIHRoZSBjb2RlIHByZXNlcnZlIHRoZSBpbnZhcmlhbnRzIHRoYXQ6XG4gICAtIFtpbm5lci5sZW5ndGggPSBCeXRlcy5sZW5ndGggaW5uZXIuYnVmZmVyXVxuICAgSW4gYWJzZW5jZSBvZiBkYXRhIHJhY2VzLCB3ZSBhbHNvIGhhdmVcbiAgIC0gWzAgPD0gYi5wb3NpdGlvbiA8PSBiLmlubmVyLmxlbmd0aF1cblxuICAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgW2IucG9zaXRpb24gPSBiLmlubmVyLmxlbmd0aF0gaXMgbGVnYWwsXG4gICBpdCBtZWFucyB0aGF0IHRoZSBidWZmZXIgaXMgZnVsbCBhbmQgd2lsbCBoYXZlIHRvIGJlIGV4dGVuZGVkXG4gICBiZWZvcmUgYW55IGZ1cnRoZXIgYWRkaXRpb24uICopXG5cbmxldCBjcmVhdGUgbiA9XG4gbGV0IG4gPSBpZiBuIDwgMSB0aGVuIDEgZWxzZSBuIGluXG4gbGV0IG4gPSBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIGVsc2UgbiBpblxuIGxldCBzID0gQnl0ZXMuY3JlYXRlIG4gaW5cbiB7IGlubmVyID0geyBidWZmZXIgPSBzOyBsZW5ndGggPSBufTsgcG9zaXRpb24gPSAwOyBpbml0aWFsX2J1ZmZlciA9IHN9XG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLmlubmVyLmJ1ZmZlciAwIGIucG9zaXRpb25cbmxldCB0b19ieXRlcyBiID0gQnl0ZXMuc3ViIGIuaW5uZXIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCeXRlcy5zdWJfc3RyaW5nIGIuaW5uZXIuYnVmZmVyIG9mcyBsZW5cblxuXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCeXRlcy5ibGl0IHNyYy5pbm5lci5idWZmZXIgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuXG5cblxubGV0IG50aCBiIG9mcyA9XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgaWYgb2ZzIDwgMCB8fCBvZnMgPj0gcG9zaXRpb24gfHwgcG9zaXRpb24gPiBsZW5ndGggdGhlblxuICAgaW52YWxpZF9hcmcgXCJCdWZmZXIubnRoXCJcbiAgZWxzZSBCeXRlcy51bnNhZmVfZ2V0IGJ1ZmZlciBvZnNcblxuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5cbmxldCBjbGVhciBiID0gYi5wb3NpdGlvbiA8LSAwXG5cbmxldCByZXNldCBiID1cbiAgYi5wb3NpdGlvbiA8LSAwO1xuICBsZXQgaW5uZXIgPVxuICAgIHsgYnVmZmVyID0gYi5pbml0aWFsX2J1ZmZlcjsgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoIGIuaW5pdGlhbF9idWZmZXIgfVxuICBpblxuICBiLmlubmVyIDwtIGlubmVyXG5cbigqIFtyZXNpemUgYiBtb3JlXSBlbnN1cmVzIHRoYXQgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIuaW5uZXIubGVuZ3RoXSBob2xkc1xuICAgYnkgZHluYW1pY2FsbHkgZXh0ZW5kaW5nIFtiLmlubmVyXSBpZiBuZWNlc3NhcnkgLS0gYW5kIHRodXNcbiAgIGluY3JlYXNpbmcgW2IuaW5uZXIubGVuZ3RoXS5cbiopXG5sZXQgcmVzaXplIGIgbW9yZSA9XG4gIGxldCBvbGRfcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQgb2xkX2xlbiA9IGIuaW5uZXIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIG9sZF9sZW4gaW5cbiAgd2hpbGUgb2xkX3BvcyArIG1vcmUgPiAhbmV3X2xlbiBkbyBuZXdfbGVuIDo9IDIgKiAhbmV3X2xlbiBkb25lO1xuICBpZiAhbmV3X2xlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgaWYgb2xkX3BvcyArIG1vcmUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgdGhlbiBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2UgZmFpbHdpdGggXCJCdWZmZXIuYWRkOiBjYW5ub3QgZ3JvdyBidWZmZXJcIlxuICBlbmQ7XG4gIGxldCBuZXdfYnVmZmVyID0gQnl0ZXMuY3JlYXRlICFuZXdfbGVuIGluXG4gICgqIFBSIzYxNDg6IGxldCdzIGtlZXAgdXNpbmcgW2JsaXRdIHJhdGhlciB0aGFuIFt1bnNhZmVfYmxpdF0gaW5cbiAgICAgdGhpcyB0cmlja3kgZnVuY3Rpb24gdGhhdCBpcyBzbG93IGFueXdheS4gKilcbiAgQnl0ZXMuYmxpdCBiLmlubmVyLmJ1ZmZlciAwIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uO1xuICBiLmlubmVyIDwtIHsgYnVmZmVyID0gbmV3X2J1ZmZlcjsgbGVuZ3RoID0gIW5ld19sZW4gfVxuXG4oKiBOb3RlOlxuICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBiZWxvdyBoYXZlIGEgZmFzdCBwYXRoIHdoZW4gdGhlIGlubmVyXG4gIGJ1ZmZlciBkb2Vzbid0IG5lZWQgdG8gYmUgZXh0ZW5kZWQuXG4gICAgSW4gdGhpcyBjYXNlLCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgdW5zYWZlIGFjY2Vzc2VzIG9uIHRoZVxuICBjb250ZW50cyBvZiB0aGUgW2lubmVyXSBmaWVsZCBzaW5jZSBpdHMgZmllbGRzIGFyZSBpbW11dGFibGUuXG4gIEluIHByZXNlbmNlIG9mIGRhdGEgcmFjZXMsIHdlIG1heSBhY2Nlc3MgdGhlIHdyb25nIGlubmVyIGJ1ZmZlciwgYnV0IHdlXG4gIHdpbGwgdXNlIHRoaXMgYnVmZmVyIHNhZmVseS5cbiAgQXMgc29vbiBhcyB3ZSBuZWVkIHRvIHJlc2l6ZSB0aGUgYnVmZmVyLCB3ZSBmYWxsIGJhY2sgdG8gc2FmZSBhY2Nlc3Nlcy5cbiopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2J1ZmZlcjtsZW5ndGh9ID0gYi5pbm5lciBpblxuICBpZiBwb3MgPj0gbGVuZ3RoIHRoZW4gKFxuICAgIHJlc2l6ZSBiIDE7XG4gICAgQnl0ZXMuc2V0IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gY1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZmZlciBwb3MgYztcbiAgYi5wb3NpdGlvbiA8LSBwb3MgKyAxXG5cbmxldCB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXggPSA0XG5sZXQgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heCA9IDRcblxubGV0IHJlYyBhZGRfdXRmXzhfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzhfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfOF91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfOF9ieXRlX2xlbmd0aF9tYXg7IGFkZF91dGZfOF91Y2hhciBiIHUpXG4gIGVsc2UgKGIucG9zaXRpb24gPC0gcG9zICsgbilcblxubGV0IHJlYyBhZGRfdXRmXzE2YmVfdWNoYXIgYiB1ID1cbiAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgaWYgcG9zID49IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDtcbiAgbGV0IG4gPSBCeXRlcy5zZXRfdXRmXzE2YmVfdWNoYXIgYi5pbm5lci5idWZmZXIgcG9zIHUgaW5cbiAgaWYgbiA9IDBcbiAgdGhlbiAocmVzaXplIGIgdWNoYXJfdXRmXzE2X2J5dGVfbGVuZ3RoX21heDsgYWRkX3V0Zl8xNmJlX3VjaGFyIGIgdSlcbiAgZWxzZSAoYi5wb3NpdGlvbiA8LSBwb3MgKyBuKVxuXG5sZXQgcmVjIGFkZF91dGZfMTZsZV91Y2hhciBiIHUgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5pbm5lci5sZW5ndGggdGhlbiByZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4O1xuICBsZXQgbiA9IEJ5dGVzLnNldF91dGZfMTZsZV91Y2hhciBiLmlubmVyLmJ1ZmZlciBwb3MgdSBpblxuICBpZiBuID0gMFxuICB0aGVuIChyZXNpemUgYiB1Y2hhcl91dGZfMTZfYnl0ZV9sZW5ndGhfbWF4OyBhZGRfdXRmXzE2bGVfdWNoYXIgYiB1KVxuICBlbHNlIChiLnBvc2l0aW9uIDwtIHBvcyArIG4pXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzXCI7XG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7bGVuZ3RofSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyBvZmZzZXQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiBsZW5cbiAgKSBlbHNlXG4gICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIHMgb2Zmc2V0IGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfc3ViYnl0ZXMgYiBzIG9mZnNldCBsZW4gPVxuICBhZGRfc3Vic3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcykgb2Zmc2V0IGxlblxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBwb3NpdGlvbiA9IGIucG9zaXRpb24gaW5cbiAgbGV0IHtidWZmZXI7IGxlbmd0aH0gPSBiLmlubmVyIGluXG4gIGxldCBuZXdfcG9zaXRpb24gPSBiLnBvc2l0aW9uICsgbGVuIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiBsZW47XG4gICAgQnl0ZXMuYmxpdF9zdHJpbmcgcyAwIGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24gbGVuO1xuICApIGVsc2VcbiAgICBCeXRlcy51bnNhZmVfYmxpdF9zdHJpbmcgcyAwIGJ1ZmZlciBwb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5pbm5lci5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIuaW5uZXIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmlubmVyLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICBuXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgbGV0IG4gPSB1bnNhZmVfYWRkX2NoYW5uZWxfdXBfdG8gYiBpYyBsZW4gaW5cbiAgKCogSXQgaXMgaW50ZW50aW9uYWwgdGhhdCBhIGNvbnN1bWVyIGNhdGNoaW5nIEVuZF9vZl9maWxlXG4gICAgIHdpbGwgc2VlIHRoZSBkYXRhIHdyaXR0ZW4gKHNlZSAjNjcxOSwgIzcxMzYpLiAqKVxuICBpZiBuIDwgbGVuIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGU7XG4gICgpXG5cbmxldCBvdXRwdXRfYnVmZmVyIG9jIGIgPVxuICBvdXRwdXQgb2MgYi5pbm5lci5idWZmZXIgMCBiLnBvc2l0aW9uXG5cbmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgfCAnKCcgLT4gJyknXG4gIHwgJ3snIC0+ICd9J1xuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgICBpZiBzLltpXSA9IG9wZW5pbmcgdGhlbiBhZHZhbmNlIChrICsgMSkgKGkgKyAxKSBsaW0gZWxzZVxuICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICBpZiBrID0gMCB0aGVuIGkgZWxzZSBhZHZhbmNlIChrIC0gMSkgKGkgKyAxKSBsaW1cbiAgICBlbHNlIGFkdmFuY2UgayAoaSArIDEpIGxpbSBpblxuICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgfCAnXycgLT4gYWR2YW5jZSAoaSArIDEpIGxpbVxuICAgIHwgXyAtPiBpIGluXG4gIGFkdmFuY2Ugc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgaWYgc3RhcnQgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgbWF0Y2ggcy5bc3RhcnRdIHdpdGhcbiAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gIHwgJygnIHwgJ3snIGFzIGMgLT5cbiAgICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgU3RyaW5nLnN1YiBzIG5ld19zdGFydCAoc3RvcCAtIHN0YXJ0IC0gMSksIHN0b3AgKyAxXG4gICgqIFJlZ3VsYXIgaWRlbnQgKilcbiAgfCBfIC0+XG4gICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19ub25fYWxwaGEgcyAoc3RhcnQgKyAxKSBpblxuICAgICBTdHJpbmcuc3ViIHMgc3RhcnQgKHN0b3AgLSBzdGFydCksIHN0b3BcblxuKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgIGFjY29yZGluZyB0byB0aGUgZnVuY3Rpb24gbWFwcGluZyBmLiAqKVxubGV0IGFkZF9zdWJzdGl0dXRlIGIgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW0gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnJCcgYXMgY3VycmVudCB3aGVuIHByZXZpb3VzID0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnJCcgLT5cbiAgICAgICAgIGxldCBqID0gaSArIDEgaW5cbiAgICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIGogbGltIGluXG4gICAgICAgICBhZGRfc3RyaW5nIGIgKGYgaWRlbnQpO1xuICAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gcHJldmlvdXMgPT0gJ1xcXFwnIC0+XG4gICAgICAgICBhZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICB8ICdcXFxcJyBhcyBjdXJyZW50IC0+XG4gICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgZW5kIGVsc2VcbiAgICBpZiBwcmV2aW91cyA9ICdcXFxcJyB0aGVuIGFkZF9jaGFyIGIgcHJldmlvdXMgaW5cbiAgc3Vic3QgJyAnIDBcblxubGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IGxlbiA+IGxlbmd0aCBiIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLnRydW5jYXRlXCJcbiAgICBlbHNlXG4gICAgICBiLnBvc2l0aW9uIDwtIGxlblxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICh4LCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCB0b19zZXFpIGIgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAoKiBOb3RlIHRoYXQgYi5wb3NpdGlvbiBpcyBub3QgYSBjb25zdGFudCBhbmQgY2Fubm90IGJlIGxpZnRlZCBvdXQgb2YgYXV4ICopXG4gICAgaWYgaSA+PSBiLnBvc2l0aW9uIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gQnl0ZXMuZ2V0IGIuaW5uZXIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc2V0X2ludDggOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG5leHRlcm5hbCBzZXRfaW50MTYgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcbmV4dGVybmFsIHNldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMlwiXG5leHRlcm5hbCBzZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjRcIlxuXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5cbmxldCBhZGRfaW50OCBiIHggPVxuICBsZXQgcG9zaXRpb24gPSBiLnBvc2l0aW9uIGluXG4gIGxldCB7bGVuZ3RoOyBidWZmZXJ9ID0gYi5pbm5lciBpblxuICBsZXQgbmV3X3Bvc2l0aW9uID0gcG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGxlbmd0aCB0aGVuIChcbiAgICByZXNpemUgYiAxO1xuICAgIHNldF9pbnQ4IGIuaW5uZXIuYnVmZmVyIGIucG9zaXRpb24geFxuICApIGVsc2VcbiAgICB1bnNhZmVfc2V0X2ludDggYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgMiBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgMjtcbiAgICBzZXRfaW50MTYgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MTYgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MzJfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgNCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgNDtcbiAgICBzZXRfaW50MzIgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50MzIgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50NjRfbmUgYiB4ID1cbiAgbGV0IHBvc2l0aW9uID0gYi5wb3NpdGlvbiBpblxuICBsZXQge2xlbmd0aDsgYnVmZmVyfSA9IGIuaW5uZXIgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IHBvc2l0aW9uICsgOCBpblxuICBpZiBuZXdfcG9zaXRpb24gPiBsZW5ndGggdGhlbiAoXG4gICAgcmVzaXplIGIgODtcbiAgICBzZXRfaW50NjQgYi5pbm5lci5idWZmZXIgYi5wb3NpdGlvbiB4XG4gICkgZWxzZVxuICAgIHVuc2FmZV9zZXRfaW50NjQgYnVmZmVyIHBvc2l0aW9uIHg7XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfaW50MTZfbGUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDE2X2JlIGIgeCA9XG4gIGFkZF9pbnQxNl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcblxubGV0IGFkZF9pbnQzMl9sZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MzJfYmUgYiB4ID1cbiAgYWRkX2ludDMyX25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAzMiB4KVxuXG5sZXQgYWRkX2ludDY0X2xlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQ2NF9iZSBiIHggPVxuICBhZGRfaW50NjRfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDY0IHgpXG5cbmxldCBhZGRfdWludDggPSBhZGRfaW50OFxubGV0IGFkZF91aW50MTZfbmUgPSBhZGRfaW50MTZfbmVcbmxldCBhZGRfdWludDE2X2xlID0gYWRkX2ludDE2X2xlXG5sZXQgYWRkX3VpbnQxNl9iZSA9IGFkZF9pbnQxNl9iZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgWGF2aWVyIExlcm95LCBDb2xsw6hnZSBkZSBGcmFuY2UgYW5kIElOUklBIFBhcmlzICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFNlbWFwaG9yZXMgKilcblxudHlwZSBzZW0gPSB7XG4gIG11dDogTXV0ZXgudDsgICAgICAgICAgICAgICAgICAgICAgICAgKCogcHJvdGVjdHMgW3ZdICopXG4gIG11dGFibGUgdjogaW50OyAgICAgICAgICAgICAgICAgICAgICAgKCogdGhlIGN1cnJlbnQgdmFsdWUgKilcbiAgbm9uemVybzogQ29uZGl0aW9uLnQgICAgICAgICAgICAgICAgICAoKiBzaWduYWxlZCB3aGVuIFt2ID4gMF0gKilcbn1cblxubW9kdWxlIENvdW50aW5nID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSB2ID1cbiAgaWYgdiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlbWFwaG9yZS5Db3VudGluZy5pbml0OiB3cm9uZyBpbml0aWFsIHZhbHVlXCI7XG4gIHsgbXV0ID0gTXV0ZXguY3JlYXRlKCk7IHY7IG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgaWYgcy52IDwgbWF4X2ludCB0aGVuIGJlZ2luXG4gICAgcy52IDwtIHMudiArIDE7XG4gICAgQ29uZGl0aW9uLnNpZ25hbCBzLm5vbnplcm87XG4gICAgTXV0ZXgudW5sb2NrIHMubXV0XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICAgIHJhaXNlIChTeXNfZXJyb3IgXCJTZW1hcGhvcmUuQ291bnRpbmcucmVsZWFzZTogb3ZlcmZsb3dcIilcbiAgZW5kXG5cbmxldCBhY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICB3aGlsZSBzLnYgPSAwIGRvIENvbmRpdGlvbi53YWl0IHMubm9uemVybyBzLm11dCBkb25lO1xuICBzLnYgPC0gcy52IC0gMTtcbiAgTXV0ZXgudW5sb2NrIHMubXV0XG5cbmxldCB0cnlfYWNxdWlyZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgbGV0IHJldCA9IGlmIHMudiA9IDAgdGhlbiBmYWxzZSBlbHNlIChzLnYgPC0gcy52IC0gMTsgdHJ1ZSkgaW5cbiAgTXV0ZXgudW5sb2NrIHMubXV0O1xuICByZXRcblxubGV0IGdldF92YWx1ZSBzID0gcy52XG5cbmVuZFxuXG5tb2R1bGUgQmluYXJ5ID0gc3RydWN0XG5cbnR5cGUgdCA9IHNlbVxuXG5sZXQgbWFrZSBiID1cbiAgeyBtdXQgPSBNdXRleC5jcmVhdGUoKTtcbiAgICB2ID0gaWYgYiB0aGVuIDEgZWxzZSAwO1xuICAgIG5vbnplcm8gPSBDb25kaXRpb24uY3JlYXRlKCkgfVxuXG5sZXQgcmVsZWFzZSBzID1cbiAgTXV0ZXgubG9jayBzLm11dDtcbiAgcy52IDwtIDE7XG4gIENvbmRpdGlvbi5zaWduYWwgcy5ub256ZXJvO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IGFjcXVpcmUgcyA9XG4gIE11dGV4LmxvY2sgcy5tdXQ7XG4gIHdoaWxlIHMudiA9IDAgZG8gQ29uZGl0aW9uLndhaXQgcy5ub256ZXJvIHMubXV0IGRvbmU7XG4gIHMudiA8LSAwO1xuICBNdXRleC51bmxvY2sgcy5tdXRcblxubGV0IHRyeV9hY3F1aXJlIHMgPVxuICBNdXRleC5sb2NrIHMubXV0O1xuICBsZXQgcmV0ID0gaWYgcy52ID0gMCB0aGVuIGZhbHNlIGVsc2UgKHMudiA8LSAwOyB0cnVlKSBpblxuICBNdXRleC51bmxvY2sgcy5tdXQ7XG4gIHJldFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgS0MgU2l2YXJhbWFrcmlzaG5hbiwgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgKilcbigqICAgICAgICAgICAgICAgICBTdGVwaGVuIERvbGFuLCBVbml2ZXJzaXR5IG9mIENhbWJyaWRnZSAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIFRvbSBLZWxseSwgT0NhbWwgTGFicyBDb25zdWx0YW5jeSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTkgSW5kaWFuIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBNYWRyYXMgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMjEgT0NhbWwgTGFicyBDb25zdWx0YW5jeSBMdGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICAoKiBMb3ctbGV2ZWwgcHJpbWl0aXZlcyBwcm92aWRlZCBieSB0aGUgcnVudGltZSAqKVxuICB0eXBlIHQgPSBwcml2YXRlIGludFxuICBleHRlcm5hbCBzcGF3biA6ICh1bml0IC0+IHVuaXQpIC0+IE11dGV4LnQgLT4gdFxuICAgID0gXCJjYW1sX2RvbWFpbl9zcGF3blwiXG4gIGV4dGVybmFsIHNlbGYgOiB1bml0IC0+IHRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5faWRcIlxuICBleHRlcm5hbCBjcHVfcmVsYXggOiB1bml0IC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4XCJcbiAgZXh0ZXJuYWwgZ2V0X3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudDogdW5pdCAtPiBpbnRcbiAgICA9IFwiY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcIiBbQEBub2FsbG9jXVxuZW5kXG5cbmxldCBjcHVfcmVsYXggKCkgPSBSYXcuY3B1X3JlbGF4ICgpXG5cbnR5cGUgaWQgPSBSYXcudFxuXG50eXBlICdhIHN0YXRlID1cbnwgUnVubmluZ1xufCBGaW5pc2hlZCBvZiAoJ2EsIGV4bikgcmVzdWx0XG5cbnR5cGUgJ2EgdCA9IHtcbiAgZG9tYWluIDogUmF3LnQ7XG4gIHRlcm1fbXV0ZXg6IE11dGV4LnQ7XG4gIHRlcm1fY29uZGl0aW9uOiBDb25kaXRpb24udDtcbiAgdGVybV9zdGF0ZTogJ2Egc3RhdGUgcmVmICgqIHByb3RlY3RlZCBieSBbdGVybV9tdXRleF0gKilcbn1cblxubW9kdWxlIERMUyA9IHN0cnVjdFxuXG4gIHR5cGUgZGxzX3N0YXRlID0gT2JqLnQgYXJyYXlcblxuICBsZXQgdW5pcXVlX3ZhbHVlID0gT2JqLnJlcHIgKHJlZiAwKVxuXG4gIGV4dGVybmFsIGdldF9kbHNfc3RhdGUgOiB1bml0IC0+IGRsc19zdGF0ZSA9IFwiJWRsc19nZXRcIlxuXG4gIGV4dGVybmFsIHNldF9kbHNfc3RhdGUgOiBkbHNfc3RhdGUgLT4gdW5pdCA9XG4gICAgXCJjYW1sX2RvbWFpbl9kbHNfc2V0XCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlX2RscyAoKSA9XG4gICAgbGV0IHN0ID0gQXJyYXkubWFrZSA4IHVuaXF1ZV92YWx1ZSBpblxuICAgIHNldF9kbHNfc3RhdGUgc3RcblxuICBsZXQgXyA9IGNyZWF0ZV9kbHMgKClcblxuICB0eXBlICdhIGtleSA9IGludCAqICh1bml0IC0+ICdhKVxuXG4gIGxldCBrZXlfY291bnRlciA9IEF0b21pYy5tYWtlIDBcblxuICB0eXBlIGtleV9pbml0aWFsaXplciA9XG4gICAgS0k6ICdhIGtleSAqICgnYSAtPiAnYSkgLT4ga2V5X2luaXRpYWxpemVyXG5cbiAgbGV0IHBhcmVudF9rZXlzID0gQXRvbWljLm1ha2UgKFtdIDoga2V5X2luaXRpYWxpemVyIGxpc3QpXG5cbiAgbGV0IHJlYyBhZGRfcGFyZW50X2tleSBraSA9XG4gICAgbGV0IGwgPSBBdG9taWMuZ2V0IHBhcmVudF9rZXlzIGluXG4gICAgaWYgbm90IChBdG9taWMuY29tcGFyZV9hbmRfc2V0IHBhcmVudF9rZXlzIGwgKGtpIDo6IGwpKVxuICAgIHRoZW4gYWRkX3BhcmVudF9rZXkga2lcblxuICBsZXQgbmV3X2tleSA/c3BsaXRfZnJvbV9wYXJlbnQgaW5pdF9vcnBoYW4gPVxuICAgIGxldCBpZHggPSBBdG9taWMuZmV0Y2hfYW5kX2FkZCBrZXlfY291bnRlciAxIGluXG4gICAgbGV0IGsgPSAoaWR4LCBpbml0X29ycGhhbikgaW5cbiAgICBiZWdpbiBtYXRjaCBzcGxpdF9mcm9tX3BhcmVudCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNwbGl0IC0+IGFkZF9wYXJlbnRfa2V5IChLSShrLCBzcGxpdCkpXG4gICAgZW5kO1xuICAgIGtcblxuICAoKiBJZiBuZWNlc3NhcnksIGdyb3cgdGhlIGN1cnJlbnQgZG9tYWluJ3MgbG9jYWwgc3RhdGUgYXJyYXkgc3VjaCB0aGF0IFtpZHhdXG4gICAqIGlzIGEgdmFsaWQgaW5kZXggaW4gdGhlIGFycmF5LiAqKVxuICBsZXQgbWF5YmVfZ3JvdyBpZHggPVxuICAgIGxldCBzdCA9IGdldF9kbHNfc3RhdGUgKCkgaW5cbiAgICBsZXQgc3ogPSBBcnJheS5sZW5ndGggc3QgaW5cbiAgICBpZiBpZHggPCBzeiB0aGVuIHN0XG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHJlYyBjb21wdXRlX25ld19zaXplIHMgPVxuICAgICAgICBpZiBpZHggPCBzIHRoZW4gcyBlbHNlIGNvbXB1dGVfbmV3X3NpemUgKDIgKiBzKVxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfc3ogPSBjb21wdXRlX25ld19zaXplIHN6IGluXG4gICAgICBsZXQgbmV3X3N0ID0gQXJyYXkubWFrZSBuZXdfc3ogdW5pcXVlX3ZhbHVlIGluXG4gICAgICBBcnJheS5ibGl0IHN0IDAgbmV3X3N0IDAgc3o7XG4gICAgICBzZXRfZGxzX3N0YXRlIG5ld19zdDtcbiAgICAgIG5ld19zdFxuICAgIGVuZFxuXG4gIGxldCBzZXQgKGlkeCwgX2luaXQpIHggPVxuICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluXG4gICAgKCogW1N5cy5vcGFxdWVfaWRlbnRpdHldIGVuc3VyZXMgdGhhdCBmbGFtYmRhIGRvZXMgbm90IGxvb2sgYXQgdGhlIHR5cGUgb2ZcbiAgICAgKiBbeF0sIHdoaWNoIG1heSBiZSBhIFtmbG9hdF0gYW5kIGNvbmNsdWRlIHRoYXQgdGhlIFtzdF0gaXMgYSBmbG9hdCBhcnJheS5cbiAgICAgKiBXZSBkbyBub3Qgd2FudCBPQ2FtbCdzIGZsb2F0IGFycmF5IG9wdGltaXNhdGlvbiBraWNraW5nIGluIGhlcmUuICopXG4gICAgc3QuKGlkeCkgPC0gT2JqLnJlcHIgKFN5cy5vcGFxdWVfaWRlbnRpdHkgeClcblxuICBsZXQgZ2V0IChpZHgsIGluaXQpID1cbiAgICBsZXQgc3QgPSBtYXliZV9ncm93IGlkeCBpblxuICAgIGxldCB2ID0gc3QuKGlkeCkgaW5cbiAgICBpZiB2ID09IHVuaXF1ZV92YWx1ZSB0aGVuXG4gICAgICBsZXQgdicgPSBPYmoucmVwciAoaW5pdCAoKSkgaW5cbiAgICAgIHN0LihpZHgpIDwtIChTeXMub3BhcXVlX2lkZW50aXR5IHYnKTtcbiAgICAgIE9iai5tYWdpYyB2J1xuICAgIGVsc2UgT2JqLm1hZ2ljIHZcblxuICBsZXQgZ2V0X2luaXRpYWxfa2V5cyAoKSA6IChpbnQgKiBPYmoudCkgbGlzdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKEtJICgoaWR4LCBfKSBhcyBrLCBzcGxpdCkpIC0+XG4gICAgICAgICAgIChpZHgsIE9iai5yZXByIChzcGxpdCAoZ2V0IGspKSkpXG4gICAgICAoQXRvbWljLmdldCBwYXJlbnRfa2V5cylcblxuICBsZXQgc2V0X2luaXRpYWxfa2V5cyAobDogKGludCAqIE9iai50KSBsaXN0KSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIChpZHgsIHYpIC0+XG4gICAgICAgIGxldCBzdCA9IG1heWJlX2dyb3cgaWR4IGluIHN0LihpZHgpIDwtIHYpXG4gICAgICBsXG5cbmVuZFxuXG4oKioqKioqKiogSWRlbnRpdHkgKioqKioqKioqKilcblxubGV0IGdldF9pZCB7IGRvbWFpbjsgXyB9ID0gZG9tYWluXG5cbmxldCBzZWxmICgpID0gUmF3LnNlbGYgKClcblxubGV0IGlzX21haW5fZG9tYWluICgpID0gKHNlbGYgKCkgOj4gaW50KSA9IDBcblxuKCoqKioqKioqIENhbGxiYWNrcyAqKioqKioqKioqKVxuXG4oKiBmaXJzdCBzcGF3biwgZG9tYWluIHN0YXJ0dXAgYW5kIGF0IGV4aXQgZnVuY3Rpb25hbGl0eSAqKVxubGV0IGZpcnN0X2RvbWFpbl9zcGF3bmVkID0gQXRvbWljLm1ha2UgZmFsc2VcblxubGV0IGZpcnN0X3NwYXduX2Z1bmN0aW9uID0gcmVmIChmdW4gKCkgLT4gKCkpXG5cbmxldCBiZWZvcmVfZmlyc3Rfc3Bhd24gZiA9XG4gIGlmIEF0b21pYy5nZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiZmlyc3QgZG9tYWluIGFscmVhZHkgc3Bhd25lZFwiKVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG9sZF9mID0gIWZpcnN0X3NwYXduX2Z1bmN0aW9uIGluXG4gICAgbGV0IG5ld19mICgpID0gb2xkX2YgKCk7IGYgKCkgaW5cbiAgICBmaXJzdF9zcGF3bl9mdW5jdGlvbiA6PSBuZXdfZlxuICBlbmRcblxubGV0IGRvX2JlZm9yZV9maXJzdF9zcGF3biAoKSA9XG4gIGlmIG5vdCAoQXRvbWljLmdldCBmaXJzdF9kb21haW5fc3Bhd25lZCkgdGhlbiBiZWdpblxuICAgIEF0b21pYy5zZXQgZmlyc3RfZG9tYWluX3NwYXduZWQgdHJ1ZTtcbiAgICAhZmlyc3Rfc3Bhd25fZnVuY3Rpb24oKTtcbiAgICAoKiBSZWxlYXNlIHRoZSBvbGQgZnVuY3Rpb24gKilcbiAgICBmaXJzdF9zcGF3bl9mdW5jdGlvbiA6PSAoZnVuICgpIC0+ICgpKVxuICBlbmRcblxubGV0IGF0X2V4aXRfa2V5ID0gRExTLm5ld19rZXkgKGZ1biAoKSAtPiAoZnVuICgpIC0+ICgpKSlcblxubGV0IGF0X2V4aXQgZiA9XG4gIGxldCBvbGRfZXhpdCA6IHVuaXQgLT4gdW5pdCA9IERMUy5nZXQgYXRfZXhpdF9rZXkgaW5cbiAgbGV0IG5ld19leGl0ICgpID1cbiAgICAoKiBUaGUgZG9tYWluIHRlcm1pbmF0aW9uIGNhbGxiYWNrcyAoW2F0X2V4aXRdKSBhcmUgcnVuIGluXG4gICAgICAgbGFzdC1pbi1maXJzdC1vdXQgKExJRk8pIG9yZGVyIGluIG9yZGVyIHRvIGJlIHN5bW1ldHJpYyB3aXRoIHRoZSBkb21haW5cbiAgICAgICBjcmVhdGlvbiBjYWxsYmFja3MgKFthdF9lYWNoX3NwYXduXSkgd2hpY2ggcnVuIGluIGZpcnN0LWluLWZpc3J0LW91dFxuICAgICAgIChGSUZPKSBvcmRlci4gKilcbiAgICBmICgpOyBvbGRfZXhpdCAoKVxuICBpblxuICBETFMuc2V0IGF0X2V4aXRfa2V5IG5ld19leGl0XG5cbmxldCBkb19hdF9leGl0ICgpID1cbiAgbGV0IGYgOiB1bml0IC0+IHVuaXQgPSBETFMuZ2V0IGF0X2V4aXRfa2V5IGluXG4gIGYgKClcblxubGV0IF8gPSBTdGRsaWIuZG9fZG9tYWluX2xvY2FsX2F0X2V4aXQgOj0gZG9fYXRfZXhpdFxuXG4oKioqKioqKiBDcmVhdGlvbiBhbmQgVGVybWluYXRpb24gKioqKioqKiopXG5cbmxldCBzcGF3biBmID1cbiAgZG9fYmVmb3JlX2ZpcnN0X3NwYXduICgpO1xuICBsZXQgcGsgPSBETFMuZ2V0X2luaXRpYWxfa2V5cyAoKSBpblxuXG4gICgqIFRoZSBbdGVybV9tdXRleF0gYW5kIFt0ZXJtX2NvbmRpdGlvbl0gYXJlIHVzZWQgdG9cbiAgICAgc3luY2hyb25pemUgd2l0aCB0aGUgam9pbmluZyBkb21haW5zICopXG4gIGxldCB0ZXJtX211dGV4ID0gTXV0ZXguY3JlYXRlICgpIGluXG4gIGxldCB0ZXJtX2NvbmRpdGlvbiA9IENvbmRpdGlvbi5jcmVhdGUgKCkgaW5cbiAgbGV0IHRlcm1fc3RhdGUgPSByZWYgUnVubmluZyBpblxuXG4gIGxldCBib2R5ICgpID1cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoXG4gICAgICAgIERMUy5jcmVhdGVfZGxzICgpO1xuICAgICAgICBETFMuc2V0X2luaXRpYWxfa2V5cyBwaztcbiAgICAgICAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgICAgICAgcmVzXG4gICAgICB3aXRoXG4gICAgICB8IHggLT4gT2sgeFxuICAgICAgfCBleGNlcHRpb24gZXggLT4gRXJyb3IgZXhcbiAgICBpblxuXG4gICAgbGV0IHJlc3VsdCcgPVxuICAgICAgKCogUnVuIHRoZSBbYXRfZXhpdF0gY2FsbGJhY2tzIHdoZW4gdGhlIGRvbWFpbiBjb21wdXRhdGlvbiBlaXRoZXJcbiAgICAgICAgIHRlcm1pbmF0ZXMgbm9ybWFsbHkgb3IgZXhjZXB0aW9uYWxseS4gKilcbiAgICAgIG1hdGNoIGRvX2F0X2V4aXQgKCkgd2l0aFxuICAgICAgfCAoKSAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIGV4IC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIF8gLT5cbiAgICAgICAgICAgICAgKCogSWYgdGhlIGRvbWFpbiBjb21wdXRhdGlvbiB0ZXJtaW5hdGVkIG5vcm1hbGx5LCBidXQgdGhlXG4gICAgICAgICAgICAgICAgIFthdF9leGl0XSBjYWxsYmFja3MgcmFpc2VkIGFuIGV4Y2VwdGlvbiwgdGhlbiByZXR1cm4gdGhlXG4gICAgICAgICAgICAgICAgIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICAgRXJyb3IgZXhcbiAgICAgICAgICB8IEVycm9yIF8gLT5cbiAgICAgICAgICAgICAgKCogSWYgYm90aCB0aGUgZG9tYWluIGNvbXB1dGF0aW9uIGFuZCB0aGUgW2F0X2V4aXRdIGNhbGxiYWNrc1xuICAgICAgICAgICAgICAgICByYWlzZWQgZXhjZXB0aW9ucywgdGhlbiBpZ25vcmUgdGhlIGV4Y2VwdGlvbiBmcm9tIHRoZVxuICAgICAgICAgICAgICAgICBbYXRfZXhpdF0gY2FsbGJhY2tzIGFuZCByZXR1cm4gdGhlIG9yaWdpbmFsIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICAgcmVzdWx0XG4gICAgICAgICAgZW5kXG4gICAgaW5cblxuICAgICgqIFN5bmNocm9uaXplIHdpdGggam9pbmluZyBkb21haW5zICopXG4gICAgTXV0ZXgubG9jayB0ZXJtX211dGV4O1xuICAgIG1hdGNoICF0ZXJtX3N0YXRlIHdpdGhcbiAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgdGVybV9zdGF0ZSA6PSBGaW5pc2hlZCByZXN1bHQnO1xuICAgICAgICBDb25kaXRpb24uYnJvYWRjYXN0IHRlcm1fY29uZGl0aW9uO1xuICAgIHwgRmluaXNoZWQgXyAtPlxuICAgICAgICBmYWlsd2l0aCBcImludGVybmFsIGVycm9yOiBBbSBJIGFscmVhZHkgZmluaXNoZWQ/XCJcbiAgICAoKiBbdGVybV9tdXRleF0gaXMgdW5sb2NrZWQgaW4gdGhlIHJ1bnRpbWUgYWZ0ZXIgdGhlIGNsZWFudXAgZnVuY3Rpb25zIG9uXG4gICAgICAgdGhlIEMgc2lkZSBhcmUgZmluaXNoZWQuICopXG4gIGluXG4gIHsgZG9tYWluID0gUmF3LnNwYXduIGJvZHkgdGVybV9tdXRleDtcbiAgICB0ZXJtX211dGV4O1xuICAgIHRlcm1fY29uZGl0aW9uO1xuICAgIHRlcm1fc3RhdGUgfVxuXG5sZXQgam9pbiB7IHRlcm1fbXV0ZXg7IHRlcm1fY29uZGl0aW9uOyB0ZXJtX3N0YXRlOyBfIH0gPVxuICBNdXRleC5sb2NrIHRlcm1fbXV0ZXg7XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbWF0Y2ggIXRlcm1fc3RhdGUgd2l0aFxuICAgIHwgUnVubmluZyAtPlxuICAgICAgICBDb25kaXRpb24ud2FpdCB0ZXJtX2NvbmRpdGlvbiB0ZXJtX211dGV4O1xuICAgICAgICBsb29wICgpXG4gICAgfCBGaW5pc2hlZCByZXMgLT5cbiAgICAgICAgTXV0ZXgudW5sb2NrIHRlcm1fbXV0ZXg7XG4gICAgICAgIHJlc1xuICBpblxuICBtYXRjaCBsb29wICgpIHdpdGhcbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBleCAtPiByYWlzZSBleFxuXG5sZXQgcmVjb21tZW5kZWRfZG9tYWluX2NvdW50ID0gUmF3LmdldF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3NcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgKCogVG9vbHMgdG8gbWFuaXB1bGF0ZSBzY2FubmluZyBzZXQgb2YgY2hhcnMgKHNlZSAlWy4uLl0pICopXG5cbnR5cGUgbXV0YWJsZV9jaGFyX3NldCA9IGJ5dGVzXG5cbigqIENyZWF0ZSBhIGZyZXNoLCBlbXB0eSwgbXV0YWJsZSBjaGFyIHNldC4gKilcbmxldCBjcmVhdGVfY2hhcl9zZXQgKCkgPSBCeXRlcy5tYWtlIDMyICdcXDAwMCdcblxuKCogQWRkIGEgY2hhciBpbiBhIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgYWRkX2luX2NoYXJfc2V0IGNoYXJfc2V0IGMgPVxuICBsZXQgaW5kID0gaW50X29mX2NoYXIgYyBpblxuICBsZXQgc3RyX2luZCA9IGluZCBsc3IgMyBhbmQgbWFzayA9IDEgbHNsIChpbmQgbGFuZCAwYjExMSkgaW5cbiAgQnl0ZXMuc2V0IGNoYXJfc2V0IHN0cl9pbmRcbiAgICAoY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIChCeXRlcy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbG9yIG1hc2spKVxuXG5sZXQgZnJlZXplX2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgQnl0ZXMudG9fc3RyaW5nIGNoYXJfc2V0XG5cbigqIENvbXB1dGUgdGhlIGNvbXBsZW1lbnQgb2YgYSBjaGFyIHNldC4gKilcbmxldCByZXZfY2hhcl9zZXQgY2hhcl9zZXQgPVxuICBsZXQgY2hhcl9zZXQnID0gY3JlYXRlX2NoYXJfc2V0ICgpIGluXG4gIGZvciBpID0gMCB0byAzMSBkb1xuICAgIEJ5dGVzLnNldCBjaGFyX3NldCcgaVxuICAgICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBpKSBseG9yIDB4RkYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjaGFyX3NldCdcblxuKCogUmV0dXJuIHRydWUgaWYgYSBgYycgaXMgaW4gYGNoYXJfc2V0Jy4gKilcbmxldCBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIChpbnRfb2ZfY2hhciAoU3RyaW5nLmdldCBjaGFyX3NldCBzdHJfaW5kKSBsYW5kIG1hc2spIDw+IDBcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIElnbm9yZWQgcGFyYW0gY29udmVyc2lvbiAqKVxuXG4oKiBHQURUIHVzZWQgdG8gYWJzdHJhY3QgYW4gZXhpc3RlbnRpYWwgdHlwZSBwYXJhbWV0ZXIuICopXG4oKiBTZWUgcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0LiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYiA9IFBhcmFtX2Zvcm1hdF9FQkIgOlxuICAgICgneCAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgcGFyYW1fZm9ybWF0X2ViYlxuXG4oKiBDb21wdXRlIGEgcGFkZGluZyBhc3NvY2lhdGVkIHRvIGEgcGFkX29wdGlvbiAoc2VlIFwiJV80MmRcIikuICopXG5sZXQgcGFkX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcGFkZGluZ1xuICB8IFNvbWUgd2lkdGggLT4gTGl0X3BhZGRpbmcgKFJpZ2h0LCB3aWR0aClcblxuKCogQ29tcHV0ZSBhIHByZWNpc2lvbiBhc3NvY2lhdGVkIHRvIGEgcHJlY19vcHRpb24gKHNlZSBcIiVfLjQyZlwiKS4gKilcbmxldCBwcmVjX29mX3ByZWNfb3B0IHByZWNfb3B0ID0gbWF0Y2ggcHJlY19vcHQgd2l0aFxuICB8IE5vbmUgLT4gTm9fcHJlY2lzaW9uXG4gIHwgU29tZSBuZGVjIC0+IExpdF9wcmVjaXNpb24gbmRlY1xuXG4oKiBUdXJuIGFuIGlnbm9yZWQgcGFyYW0gaW50byBpdHMgZXF1aXZhbGVudCBub3QtaWdub3JlZCBmb3JtYXQgbm9kZS4gKilcbigqIFVzZWQgZm9yIGZvcm1hdCBwcmV0dHktcHJpbnRpbmcgYW5kIFNjYW5mLiAqKVxubGV0IHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgYSBiIGMgZCBlIGYgeCB5IC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPiAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFyYW1fZm9ybWF0X2ViYiA9XG5mdW4gaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENoYXIgZm10KVxuICB8IElnbm9yZWRfY2FtbF9jaGFyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoQ2FtbF9jaGFyIGZtdClcbiAgfCBJZ25vcmVkX3N0cmluZyBwYWRfb3B0IC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfY2FtbF9zdHJpbmcgcGFkX29wdCAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKENhbWxfc3RyaW5nIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChJbnQgKGljb252LCBwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBOb19wcmVjaXNpb24sIGZtdCkpXG4gIHwgSWdub3JlZF9pbnQzMiAoaWNvbnYsIHBhZF9vcHQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQlxuICAgICAgKEludDMyIChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfbmF0aXZlaW50IChpY29udiwgcGFkX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoTmF0aXZlaW50IChpY29udiwgcGFkX29mX3BhZF9vcHQgcGFkX29wdCwgTm9fcHJlY2lzaW9uLCBmbXQpKVxuICB8IElnbm9yZWRfaW50NjQgKGljb252LCBwYWRfb3B0KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChJbnQ2NCAoaWNvbnYsIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIE5vX3ByZWNpc2lvbiwgZm10KSlcbiAgfCBJZ25vcmVkX2Zsb2F0IChwYWRfb3B0LCBwcmVjX29wdCkgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCXG4gICAgICAoRmxvYXQgKChGbG9hdF9mbGFnXywgRmxvYXRfZiksXG4gICAgICAgICAgICAgIHBhZF9vZl9wYWRfb3B0IHBhZF9vcHQsIHByZWNfb2ZfcHJlY19vcHQgcHJlY19vcHQsIGZtdCkpXG4gIHwgSWdub3JlZF9ib29sIHBhZF9vcHQgLT5cbiAgICBQYXJhbV9mb3JtYXRfRUJCIChCb29sIChwYWRfb2ZfcGFkX29wdCBwYWRfb3B0LCBmbXQpKVxuICB8IElnbm9yZWRfZm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHkpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIGZtdCkpXG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5KSAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkJcbiAgICAgIChGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCBmbXQpKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoUmVhZGVyIGZtdClcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgKHdpZHRoX29wdCwgY2hhcl9zZXQpIC0+XG4gICAgUGFyYW1fZm9ybWF0X0VCQiAoU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10KSlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgY291bnRlciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdCkpXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAtPlxuICAgIFBhcmFtX2Zvcm1hdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdClcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVHlwZXMgKilcblxudHlwZSAoJ2IsICdjKSBhY2NfZm9ybWF0dGluZ19nZW4gPVxuICB8IEFjY19vcGVuX3RhZyBvZiAoJ2IsICdjKSBhY2NcbiAgfCBBY2Nfb3Blbl9ib3ggb2YgKCdiLCAnYykgYWNjXG5cbigqIFJldmVyc2VkIGxpc3Qgb2YgcHJpbnRpbmcgYXRvbXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgcHJpbnRmIGFyZ3VtZW50cy4gKilcbmFuZCAoJ2IsICdjKSBhY2MgPVxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCBvZiAoJ2IsICdjKSBhY2MgKiBmb3JtYXR0aW5nX2xpdFxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIG9mICgnYiwgJ2MpIGFjYyAqICgnYiwgJ2MpIGFjY19mb3JtYXR0aW5nX2dlblxuICAgICAgKCogU3BlY2lhbCBmbXR0aW5nIChib3gpICopXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZyAgICAgKCogTGl0ZXJhbCBzdHJpbmcgKilcbiAgfCBBY2NfY2hhcl9saXRlcmFsICAgb2YgKCdiLCAnYykgYWNjICogY2hhciAgICAgICAoKiBMaXRlcmFsIGNoYXIgKilcbiAgfCBBY2NfZGF0YV9zdHJpbmcgICAgb2YgKCdiLCAnYykgYWNjICogc3RyaW5nICAgICAoKiBHZW5lcmF0ZWQgc3RyaW5nICopXG4gIHwgQWNjX2RhdGFfY2hhciAgICAgIG9mICgnYiwgJ2MpIGFjYyAqIGNoYXIgICAgICAgKCogR2VuZXJhdGVkIGNoYXIgKilcbiAgfCBBY2NfZGVsYXkgICAgICAgICAgb2YgKCdiLCAnYykgYWNjICogKCdiIC0+ICdjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRGVsYXllZCBwcmludGluZyAoJWEsICV0KSAqKVxuICB8IEFjY19mbHVzaCAgICAgICAgICBvZiAoJ2IsICdjKSBhY2MgICAgICAgICAgICAgICgqIEZsdXNoICopXG4gIHwgQWNjX2ludmFsaWRfYXJnICAgIG9mICgnYiwgJ2MpIGFjYyAqIHN0cmluZ1xuICAgICAgKCogUmFpc2UgSW52YWxpZF9hcmd1bWVudCBtc2cgKilcbiAgfCBFbmRfb2ZfYWNjXG5cbigqIExpc3Qgb2YgaGV0ZXJvZ2VuZW91cyB2YWx1ZXMuICopXG4oKiBVc2VkIHRvIGFjY3VtdWxhdGUgc2NhbmYgY2FsbGJhY2sgYXJndW1lbnRzLiAqKVxudHlwZSAoJ2EsICdiKSBoZXRlcl9saXN0ID1cbiAgfCBDb25zIDogJ2MgKiAoJ2EsICdiKSBoZXRlcl9saXN0IC0+ICgnYyAtPiAnYSwgJ2IpIGhldGVyX2xpc3RcbiAgfCBOaWwgOiAoJ2IsICdiKSBoZXRlcl9saXN0XG5cbigqIEV4aXN0ZW50aWFsIEJsYWNrIEJveGVzLiAqKVxuKCogVXNlZCB0byBhYnN0cmFjdCBzb21lIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVycy4gKilcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZyBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkZGluZyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZGRpbmdfZm10dHlfZWJiID0gUGFkZGluZ19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRkaW5nX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYW4gZm10dHkuICopXG4oKiBTZWUgdGhlIHR5cGVfcGFkcHJlYyBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhZHByZWNfZm10dHlfZWJiID0gUGFkcHJlY19mbXR0eV9FQkIgOlxuICAgICAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCAneikgcHJlY2lzaW9uICogKCd6LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBwYWRwcmVjX2ZtdHR5X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYSBwYWRkaW5nIGFuZCBhbiBmbXQuICopXG4oKiBTZWUgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHBhZGRpbmdfZm10X2ViYiA9IFBhZGRpbmdfZm10X0VCQiA6XG4gICAgIChfLCAneCAtPiAnYSkgcGFkZGluZyAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcGFkZGluZ19mbXRfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhIHByZWNpc2lvbiBhbmQgYW4gZm10LiAqKVxuKCogU2VlIG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgYW5kIHBhcnNlX2Zvcm1hdCBmdW5jdGlvbnMuICopXG50eXBlICgnYSwgJ2IsICdjLCAnZSwgJ2YpIHByZWNpc2lvbl9mbXRfZWJiID0gUHJlY2lzaW9uX2ZtdF9FQkIgOlxuICAgICAoXywgJ3ggLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCd4LCAnYiwgJ2MsICdlLCAnZikgcHJlY2lzaW9uX2ZtdF9lYmJcblxuKCogR0FEVCB0eXBlIGFzc29jaWF0aW5nIGEgcGFkZGluZywgYSBwcmVjaXNpb24gYW5kIGFuIGZtdC4gKilcbigqIFNlZSBtYWtlX3BhZHByZWNfZm10X2ViYiBhbmQgcGFyc2VfZm9ybWF0IGZ1bmN0aW9ucy4gKilcbnR5cGUgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiID0gUGFkcHJlY19mbXRfRUJCIDpcbiAgICAgKCd4LCAneSkgcGFkZGluZyAqICgneSwgJ3AgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgKCdwLCAnYiwgJ2MsICdlLCAnZikgcGFkcHJlY19mbXRfZWJiXG5cbigqIEFic3RyYWN0IHRoZSAnYSBhbmQgJ2QgcGFyYW1ldGVycyBvZiBhbiBmbXQuICopXG4oKiBPdXRwdXQgdHlwZSBvZiB0aGUgZm9ybWF0IHBhcnNpbmcgZnVuY3Rpb24uICopXG50eXBlICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYiA9IEZtdF9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICgnYiwgJ2MsICdlLCAnZikgZm10X2ViYlxuXG4oKiBHQURUIHR5cGUgYXNzb2NpYXRpbmcgYW4gZm10dHkgYW5kIGFuIGZtdC4gKilcbigqIFNlZSB0aGUgdHlwZV9mb3JtYXRfZ2VuIGZ1bmN0aW9uLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10X2ZtdHR5X2ViYiA9IEZtdF9mbXR0eV9FQkIgOlxuICAgICAoJ2EsICdiLCAnYywgJ2QsICd5LCAneCkgZm10ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdHR5IC0+XG4gICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRfZm10dHlfZWJiXG5cbigqIEdBRFQgdHlwZSBhc3NvY2lhdGluZyBhbiBmbXR0eSBhbmQgYW4gZm10LiAqKVxuKCogU2VlIHRoZSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBmdW5jdGlvbi4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmIgPSBGbXR0eV9mbXRfRUJCIDpcbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAneSwgJ3gpIGZtdHR5ICpcbiAgICAgKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdF9mbXR0eV9lYmIgLT5cbiAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X2ZtdF9lYmJcblxuKCogQWJzdHJhY3QgYWxsIGZtdHR5IHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBmb3JtYXQgdHlwZXMuICopXG50eXBlIGZtdHR5X2ViYiA9IEZtdHR5X0VCQiA6ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPiBmbXR0eV9lYmJcblxuKCogQWJzdHJhY3QgYWxsIHBhZGRpbmcgdHlwZSBwYXJhbWV0ZXJzLiAqKVxuKCogVXNlZCB0byBjb21wYXJlIHBhZGRpbmdzLiAqKVxudHlwZSBwYWRkaW5nX2ViYiA9IFBhZGRpbmdfRUJCIDogKCdhLCAnYikgcGFkZGluZyAtPiBwYWRkaW5nX2ViYlxuXG4oKiBBYnN0cmFjdCBhbGwgcHJlY2lzaW9uIHR5cGUgcGFyYW1ldGVycy4gKilcbigqIFVzZWQgdG8gY29tcGFyZSBwcmVjaXNpb25zLiAqKVxudHlwZSBwcmVjaXNpb25fZWJiID0gUHJlY2lzaW9uX0VCQiA6ICgnYSwgJ2IpIHByZWNpc2lvbiAtPiBwcmVjaXNpb25fZWJiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQ29uc3RhbnRzICopXG5cbigqIERlZmF1bHQgcHJlY2lzaW9uIGZvciBmbG9hdCBwcmludGluZy4gKilcbmxldCBkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udiA9XG4gIG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiB8IEZsb2F0X2UgfCBGbG9hdF9FIHwgRmxvYXRfZyB8IEZsb2F0X0cgfCBGbG9hdF9oIHwgRmxvYXRfSFxuICB8IEZsb2F0X0NGIC0+IC02XG4gICgqIEZvciAlaCAlSCBhbmQgJSNGIGZvcm1hdHMsIGEgbmVnYXRpdmUgcHJlY2lzaW9uIG1lYW5zIFwiYXMgbWFueSBkaWdpdHMgYXNcbiAgICAgbmVjZXNzYXJ5XCIuICBGb3IgdGhlIG90aGVyIEZQIGZvcm1hdHMsIHdlIHRha2UgdGhlIGFic29sdXRlIHZhbHVlXG4gICAgIG9mIHRoZSBwcmVjaXNpb24sIGhlbmNlIDYgZGlnaXRzIGJ5IGRlZmF1bHQuICopXG4gIHwgRmxvYXRfRiAtPiAxMlxuICAoKiBEZWZhdWx0IHByZWNpc2lvbiBmb3IgT0NhbWwgZmxvYXQgcHJpbnRpbmcgKCVGKS4gKilcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFeHRlcm5hbHMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0OiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50OiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZ1xuICA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmV4dGVybmFsIGZvcm1hdF9pbnQzMjogc3RyaW5nIC0+IGludDMyIC0+IHN0cmluZ1xuICA9IFwiY2FtbF9pbnQzMl9mb3JtYXRcIlxuZXh0ZXJuYWwgZm9ybWF0X25hdGl2ZWludDogc3RyaW5nIC0+IG5hdGl2ZWludCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfbmF0aXZlaW50X2Zvcm1hdFwiXG5leHRlcm5hbCBmb3JtYXRfaW50NjQ6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmdcbiAgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmV4dGVybmFsIGhleHN0cmluZ19vZl9mbG9hdDogZmxvYXQgLT4gaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4gID0gXCJjYW1sX2hleHN0cmluZ19vZl9mbG9hdFwiXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAoKiBUb29scyB0byBwcmV0dHktcHJpbnQgZm9ybWF0cyAqKVxuXG4oKiBUeXBlIG9mIGV4dGVuc2libGUgY2hhcmFjdGVyIGJ1ZmZlcnMuICopXG50eXBlIGJ1ZmZlciA9IHtcbiAgbXV0YWJsZSBpbmQgOiBpbnQ7XG4gIG11dGFibGUgYnl0ZXMgOiBieXRlcztcbn1cblxuKCogQ3JlYXRlIGEgZnJlc2ggYnVmZmVyLiAqKVxubGV0IGJ1ZmZlcl9jcmVhdGUgaW5pdF9zaXplID0geyBpbmQgPSAwOyBieXRlcyA9IEJ5dGVzLmNyZWF0ZSBpbml0X3NpemUgfVxuXG4oKiBDaGVjayBzaXplIG9mIHRoZSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgbmVlZGVkLiAqKVxubGV0IGJ1ZmZlcl9jaGVja19zaXplIGJ1ZiBvdmVyaGVhZCA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnVmLmJ5dGVzIGluXG4gIGxldCBtaW5fbGVuID0gYnVmLmluZCArIG92ZXJoZWFkIGluXG4gIGlmIG1pbl9sZW4gPiBsZW4gdGhlbiAoXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWF4IChsZW4gKiAyKSBtaW5fbGVuIGluXG4gICAgbGV0IG5ld19zdHIgPSBCeXRlcy5jcmVhdGUgbmV3X2xlbiBpblxuICAgIEJ5dGVzLmJsaXQgYnVmLmJ5dGVzIDAgbmV3X3N0ciAwIGxlbjtcbiAgICBidWYuYnl0ZXMgPC0gbmV3X3N0cjtcbiAgKVxuXG4oKiBBZGQgdGhlIGNoYXJhY3RlciBgYycgdG8gdGhlIGJ1ZmZlciBgYnVmJy4gKilcbmxldCBidWZmZXJfYWRkX2NoYXIgYnVmIGMgPVxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgMTtcbiAgQnl0ZXMuc2V0IGJ1Zi5ieXRlcyBidWYuaW5kIGM7XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIDFcblxuKCogQWRkIHRoZSBzdHJpbmcgYHMnIHRvIHRoZSBidWZmZXIgYGJ1ZicuICopXG5sZXQgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIHMgPVxuICBsZXQgc3RyX2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBidWZmZXJfY2hlY2tfc2l6ZSBidWYgc3RyX2xlbjtcbiAgU3RyaW5nLmJsaXQgcyAwIGJ1Zi5ieXRlcyBidWYuaW5kIHN0cl9sZW47XG4gIGJ1Zi5pbmQgPC0gYnVmLmluZCArIHN0cl9sZW5cblxuKCogR2V0IHRoZSBjb250ZW50IG9mIHRoZSBidWZmZXIuICopXG5sZXQgYnVmZmVyX2NvbnRlbnRzIGJ1ZiA9XG4gIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmLmJ5dGVzIDAgYnVmLmluZFxuXG4oKioqKVxuXG4oKiBDb252ZXJ0IGFuIGludGVnZXIgY29udmVyc2lvbiB0byBjaGFyLiAqKVxubGV0IGNoYXJfb2ZfaWNvbnYgaWNvbnYgPSBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X2QgfCBJbnRfcGQgfCBJbnRfc2QgfCBJbnRfQ2QgLT4gJ2QnIHwgSW50X2kgfCBJbnRfcGkgfCBJbnRfc2lcbiAgfCBJbnRfQ2kgLT4gJ2knIHwgSW50X3ggfCBJbnRfQ3ggLT4gJ3gnIHwgSW50X1ggfCBJbnRfQ1ggLT4gJ1gnIHwgSW50X29cbiAgfCBJbnRfQ28gLT4gJ28nIHwgSW50X3UgfCBJbnRfQ3UgLT4gJ3UnXG5cbigqIENvbnZlcnQgYSBmbG9hdCBjb252ZXJzaW9uIHRvIGNoYXIuICopXG4oKiBgY0YnIHdpbGwgYmUgJ0YnIGZvciBkaXNwbGF5aW5nIGZvcm1hdCBhbmQgJ2cnIHRvIGNhbGwgbGliYyBwcmludGYgKilcbmxldCBjaGFyX29mX2Zjb252ID8oY0Y9J0YnKSBmY29udiA9IG1hdGNoIHNuZCBmY29udiB3aXRoXG4gIHwgRmxvYXRfZiAtPiAnZicgfCBGbG9hdF9lIC0+ICdlJ1xuICB8IEZsb2F0X0UgLT4gJ0UnIHwgRmxvYXRfZyAtPiAnZydcbiAgfCBGbG9hdF9HIC0+ICdHJyB8IEZsb2F0X0YgLT4gY0ZcbiAgfCBGbG9hdF9oIC0+ICdoJyB8IEZsb2F0X0ggLT4gJ0gnXG4gIHwgRmxvYXRfQ0YgLT4gJ0YnXG5cblxuKCogQ29udmVydCBhIHNjYW5uaW5nIGNvdW50ZXIgdG8gY2hhci4gKilcbmxldCBjaGFyX29mX2NvdW50ZXIgY291bnRlciA9IG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAgLT4gJ2wnXG4gIHwgQ2hhcl9jb3VudGVyICAtPiAnbidcbiAgfCBUb2tlbl9jb3VudGVyIC0+ICdOJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIGNoYXJfc2V0IGluIGEgYnVmZmVyIHdpdGggdGhlIE9DYW1sIGZvcm1hdCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldCA9XG4gIGxldCByZWMgcHJpbnRfc3RhcnQgc2V0ID1cbiAgICBsZXQgaXNfYWxvbmUgYyA9XG4gICAgICBsZXQgYmVmb3JlLCBhZnRlciA9IENoYXIuKGNociAoY29kZSBjIC0gMSksIGNociAoY29kZSBjICsgMSkpIGluXG4gICAgICBpc19pbl9jaGFyX3NldCBzZXQgY1xuICAgICAgJiYgbm90IChpc19pbl9jaGFyX3NldCBzZXQgYmVmb3JlICYmIGlzX2luX2NoYXJfc2V0IHNldCBhZnRlcikgaW5cbiAgICBpZiBpc19hbG9uZSAnXScgdGhlbiBidWZmZXJfYWRkX2NoYXIgYnVmICddJztcbiAgICBwcmludF9vdXQgc2V0IDE7XG4gICAgaWYgaXNfYWxvbmUgJy0nIHRoZW4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnLSc7XG4gIGFuZCBwcmludF9vdXQgc2V0IGkgPVxuICAgIGlmIGkgPCAyNTYgdGhlblxuICAgICAgaWYgaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCBpKSB0aGVuIHByaW50X2ZpcnN0IHNldCBpXG4gICAgICBlbHNlIHByaW50X291dCBzZXQgKGkgKyAxKVxuICBhbmQgcHJpbnRfZmlyc3Qgc2V0IGkgPVxuICAgIG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJ1xcMjU1JyAtPiBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgfCAnXScgfCAnLScgLT4gcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgIHwgXyAtPiBwcmludF9zZWNvbmQgc2V0IChpICsgMSk7XG4gIGFuZCBwcmludF9zZWNvbmQgc2V0IGkgPVxuICAgIGlmIGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaSkgdGhlblxuICAgICAgbWF0Y2ggY2hhcl9vZl9pbnQgaSB3aXRoXG4gICAgICB8ICdcXDI1NScgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgMjU0O1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiAyNTU7XG4gICAgICB8ICddJyB8ICctJyB3aGVuIG5vdCAoaXNfaW5fY2hhcl9zZXQgc2V0IChjaGFyX29mX2ludCAoaSArIDEpKSkgLT5cbiAgICAgICAgcHJpbnRfY2hhciBidWYgKGkgLSAxKTtcbiAgICAgICAgcHJpbnRfb3V0IHNldCAoaSArIDEpO1xuICAgICAgfCBfIHdoZW4gbm90IChpc19pbl9jaGFyX3NldCBzZXQgKGNoYXJfb2ZfaW50IChpICsgMSkpKSAtPlxuICAgICAgICBwcmludF9jaGFyIGJ1ZiAoaSAtIDEpO1xuICAgICAgICBwcmludF9jaGFyIGJ1ZiBpO1xuICAgICAgICBwcmludF9vdXQgc2V0IChpICsgMik7XG4gICAgICB8IF8gLT5cbiAgICAgICAgcHJpbnRfaW4gc2V0IChpIC0gMSkgKGkgKyAyKTtcbiAgICBlbHNlIChcbiAgICAgIHByaW50X2NoYXIgYnVmIChpIC0gMSk7XG4gICAgICBwcmludF9vdXQgc2V0IChpICsgMSk7XG4gICAgKVxuICBhbmQgcHJpbnRfaW4gc2V0IGkgaiA9XG4gICAgaWYgaiA9IDI1NiB8fCBub3QgKGlzX2luX2NoYXJfc2V0IHNldCAoY2hhcl9vZl9pbnQgaikpIHRoZW4gKFxuICAgICAgcHJpbnRfY2hhciBidWYgaTtcbiAgICAgIHByaW50X2NoYXIgYnVmIChpbnRfb2ZfY2hhciAnLScpO1xuICAgICAgcHJpbnRfY2hhciBidWYgKGogLSAxKTtcbiAgICAgIGlmIGogPCAyNTYgdGhlbiBwcmludF9vdXQgc2V0IChqICsgMSk7XG4gICAgKSBlbHNlXG4gICAgICBwcmludF9pbiBzZXQgaSAoaiArIDEpO1xuICBhbmQgcHJpbnRfY2hhciBidWYgaSA9IG1hdGNoIGNoYXJfb2ZfaW50IGkgd2l0aFxuICAgIHwgJyUnIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgICB8ICdAJyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQCc7XG4gICAgfCBjICAgLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBpblxuICBidWZmZXJfYWRkX2NoYXIgYnVmICdbJztcbiAgcHJpbnRfc3RhcnQgKFxuICAgIGlmIGlzX2luX2NoYXJfc2V0IGNoYXJfc2V0ICdcXDAwMCdcbiAgICB0aGVuICggYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnXic7IHJldl9jaGFyX3NldCBjaGFyX3NldCApXG4gICAgZWxzZSBjaGFyX3NldFxuICApO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmICddJ1xuXG4oKioqKVxuXG4oKiBQcmludCBhIHBhZHR5IGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcGFkdHkgYnVmIHBhZHR5ID0gbWF0Y2ggcGFkdHkgd2l0aFxuICB8IExlZnQgIC0+IGJ1ZmZlcl9hZGRfY2hhciBidWYgJy0nXG4gIHwgUmlnaHQgLT4gKClcbiAgfCBaZXJvcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcwJ1xuXG4oKiBQcmludCB0aGUgJ18nIG9mIGFuIGlnbm9yZWQgZmxhZyBpZiBuZWVkZWQuICopXG5sZXQgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWcgPVxuICBpZiBpZ25fZmxhZyB0aGVuIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ18nXG5cbigqKiopXG5cbmxldCBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHdpZHRoIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyB3aWR0aClcblxuKCoqKilcblxuKCogUHJpbnQgcGFkZGluZyBpbiBhIGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQtbGlrZSBzeW50YXguICopXG5sZXQgYnByaW50X3BhZGRpbmcgOiB0eXBlIGEgYiAuIGJ1ZmZlciAtPiAoYSwgYikgcGFkZGluZyAtPiB1bml0ID1cbmZ1biBidWYgcGFkIC0+IG1hdGNoIHBhZCB3aXRoXG4gIHwgTm9fcGFkZGluZyAtPiAoKVxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgbikgLT5cbiAgICBicHJpbnRfcGFkdHkgYnVmIHBhZHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSAtPlxuICAgIGJwcmludF9wYWR0eSBidWYgcGFkdHk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnKidcblxuKCogUHJpbnQgcHJlY2lzaW9uIGluIGEgYnVmZmVyIHdpdGggdGhlIGZvcm1hdC1saWtlIHN5bnRheC4gKilcbmxldCBicHJpbnRfcHJlY2lzaW9uIDogdHlwZSBhIGIgLiBidWZmZXIgLT4gKGEsIGIpIHByZWNpc2lvbiAtPiB1bml0ID1cbiAgZnVuIGJ1ZiBwcmVjIC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAtPiAoKVxuICB8IExpdF9wcmVjaXNpb24gbiAtPlxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJy4nO1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiAoSW50LnRvX3N0cmluZyBuKTtcbiAgfCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiLipcIlxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgb3IgJyMnIGFzc29jaWF0ZWQgdG8gYW4gaW50IGNvbnZlcnNpb24uICopXG5sZXQgYnByaW50X2ljb252X2ZsYWcgYnVmIGljb252ID0gbWF0Y2ggaWNvbnYgd2l0aFxuICB8IEludF9wZCB8IEludF9waSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEludF9zZCB8IEludF9zaSAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEludF9DeCB8IEludF9DWCB8IEludF9DbyB8IEludF9DZCB8IEludF9DaSB8IEludF9DdSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnIydcbiAgfCBJbnRfZCB8IEludF9pIHwgSW50X3ggfCBJbnRfWCB8IEludF9vIHwgSW50X3UgLT4gKClcblxuKCogUHJpbnQgYW4gY29tcGxldGUgaW50IGZvcm1hdCBpbiBhIGJ1ZmZlciAoZXg6IFwiJTMuKmRcIikuICopXG5sZXQgYnByaW50X2ludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjID1cbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7XG4gIGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICBicHJpbnRfaWNvbnZfZmxhZyBidWYgaWNvbnY7XG4gIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7XG4gIGJwcmludF9wcmVjaXNpb24gYnVmIHByZWM7XG4gIGJ1ZmZlcl9hZGRfY2hhciBidWYgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpXG5cbigqIFByaW50IGEgY29tcGxldGUgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjIGMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9pY29udl9mbGFnIGJ1ZiBpY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjO1xuICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2ljb252IGljb252KVxuXG4oKioqKVxuXG4oKiBQcmludCB0aGUgb3B0aW9uYWwgJysnLCAnICcgYW5kL29yICcjJyBhc3NvY2lhdGVkIHRvIGEgZmxvYXQgY29udmVyc2lvbi4gKilcbmxldCBicHJpbnRfZmNvbnZfZmxhZyBidWYgZmNvbnYgPVxuICBiZWdpbiBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ZsYWdfcCAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcrJ1xuICB8IEZsb2F0X2ZsYWdfcyAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcgJ1xuICB8IEZsb2F0X2ZsYWdfIC0+ICgpIGVuZDtcbiAgbWF0Y2ggc25kIGZjb252IHdpdGhcbiAgfCBGbG9hdF9DRiAtPiBidWZmZXJfYWRkX2NoYXIgYnVmICcjJ1xuICB8IEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HXG4gIHwgRmxvYXRfRiB8IEZsb2F0X2ggfCBGbG9hdF9IIC0+ICgpXG5cbigqIFByaW50IGEgY29tcGxldGUgZmxvYXQgZm9ybWF0IGluIGEgYnVmZmVyIChleDogXCIlKyouM2ZcIikuICopXG5sZXQgYnByaW50X2Zsb2F0X2ZtdCBidWYgaWduX2ZsYWcgZmNvbnYgcGFkIHByZWMgPVxuICBidWZmZXJfYWRkX2NoYXIgYnVmICclJztcbiAgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDtcbiAgYnByaW50X3ByZWNpc2lvbiBidWYgcHJlYztcbiAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAoY2hhcl9vZl9mY29udiBmY29udilcblxuKCogQ29tcHV0ZSB0aGUgbGl0ZXJhbCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBGb3JtYXR0aW5nX2xpdC4gKilcbigqIFVzZWQgYnkgUHJpbnRmIGFuZCBTY2FuZiB3aGVyZSBmb3JtYXR0aW5nIGlzIG5vdCBpbnRlcnByZXRlZC4gKilcbmxldCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQgPSBtYXRjaCBmb3JtYXR0aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgLT4gXCJAXVwiXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgLT4gXCJAfVwiXG4gIHwgQnJlYWsgKHN0ciwgXywgXykgICAgLT4gc3RyXG4gIHwgRkZsdXNoICAgICAgICAgICAgICAgLT4gXCJAP1wiXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgLT4gXCJAXFxuXCJcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAtPiBcIkAuXCJcbiAgfCBNYWdpY19zaXplIChzdHIsIF8pICAtPiBzdHJcbiAgfCBFc2NhcGVkX2F0ICAgICAgICAgICAtPiBcIkBAXCJcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAtPiBcIkAlXCJcbiAgfCBTY2FuX2luZGljIGMgLT4gXCJAXCIgXiAoU3RyaW5nLm1ha2UgMSBjKVxuXG4oKioqKVxuXG4oKiBQcmludCBhIGxpdGVyYWwgY2hhciBpbiBhIGJ1ZmZlciwgZXNjYXBlICclJyBieSBcIiUlXCIuICopXG5sZXQgYnByaW50X2NoYXJfbGl0ZXJhbCBidWYgY2hyID0gbWF0Y2ggY2hyIHdpdGhcbiAgfCAnJScgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJSVcIlxuICB8IF8gLT4gYnVmZmVyX2FkZF9jaGFyIGJ1ZiBjaHJcblxuKCogUHJpbnQgYSBsaXRlcmFsIHN0cmluZyBpbiBhIGJ1ZmZlciwgZXNjYXBlIGFsbCAnJScgYnkgXCIlJVwiLiAqKVxubGV0IGJwcmludF9zdHJpbmdfbGl0ZXJhbCBidWYgc3RyID1cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc3RyIC0gMSBkb1xuICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIHN0ci5baV1cbiAgZG9uZVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcHJldHR5LXByaW50aW5nICopXG5cbigqIFByaW50IGEgY29tcGxldGUgZm9ybWF0IHR5cGUgKGFuIGZtdHR5KSBpbiBhIGJ1ZmZlci4gKilcbmxldCByZWMgYnByaW50X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCAuXG4gICAgYnVmZmVyIC0+IChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gdW5pdCA9XG5mdW4gYnVmIGZtdHR5IC0+IG1hdGNoIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlY1wiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IFN0cmluZ190eSByZXN0ICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVzXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50X3R5IHJlc3QgICAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWlcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBJbnQzMl90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlbGlcIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVuaVwiOyBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgSW50NjRfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJUxpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBGbG9hdF90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlZlwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEJvb2xfdHkgcmVzdCAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiVCXCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgQWxwaGFfdHkgcmVzdCAgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJWFcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcbiAgfCBUaGV0YV90eSByZXN0ICAgICAtPiBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIldFwiOyAgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEFueV90eSByZXN0ICAgICAgIC0+IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiU/XCI7ICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG4gIHwgUmVhZGVyX3R5IHJlc3QgICAgLT4gYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXJcIjsgIGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlX3JcIjtcbiAgICBicHJpbnRfZm10dHkgYnVmIHJlc3Q7XG5cbiAgfCBGb3JtYXRfYXJnX3R5IChzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJXtcIjsgYnByaW50X2ZtdHR5IGJ1ZiBzdWJfZm10dHk7XG4gICAgYnVmZmVyX2FkZF9zdHJpbmcgYnVmIFwiJX1cIjsgYnByaW50X2ZtdHR5IGJ1ZiByZXN0O1xuICB8IEZvcm1hdF9zdWJzdF90eSAoc3ViX2ZtdHR5LCBfLCByZXN0KSAtPlxuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUoXCI7IGJwcmludF9mbXR0eSBidWYgc3ViX2ZtdHR5O1xuICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIiUpXCI7IGJwcmludF9mbXR0eSBidWYgcmVzdDtcblxuICB8IEVuZF9vZl9mbXR0eSAtPiAoKVxuXG4oKioqKVxuXG5sZXQgcmVjIGludF9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIGEgYiBjIC5cbiAgKGEsIGIsIGMpIGN1c3RvbV9hcml0eSAtPiBpbnQgPVxuICBmdW5jdGlvblxuICB8IEN1c3RvbV96ZXJvIC0+IDBcbiAgfCBDdXN0b21fc3VjYyB4IC0+IDEgKyBpbnRfb2ZfY3VzdG9tX2FyaXR5IHhcblxuKCogUHJpbnQgYSBjb21wbGV0ZSBmb3JtYXQgaW4gYSBidWZmZXIuICopXG5sZXQgYnByaW50X2ZtdCBidWYgZm10ID1cbiAgbGV0IHJlYyBmbXRpdGVyIDogdHlwZSBhIGIgYyBkIGUgZiAuXG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IGJvb2wgLT4gdW5pdCA9XG4gIGZ1biBmbXQgaWduX2ZsYWcgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAncyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZGRpbmcgYnVmIHBhZDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnUyc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG5cbiAgICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9pbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgYnByaW50X2FsdGludF9mbXQgYnVmIGlnbl9mbGFnIGljb252IHBhZCBwcmVjICdsJztcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnbic7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9hbHRpbnRfZm10IGJ1ZiBpZ25fZmxhZyBpY29udiBwYWQgcHJlYyAnTCc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgIGJwcmludF9mbG9hdF9mbXQgYnVmIGlnbl9mbGFnIGZjb252IHBhZCBwcmVjO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBDaGFyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ2MnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnQyc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IEJvb2wgKHBhZCwgcmVzdCkgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJwcmludF9wYWRkaW5nIGJ1ZiBwYWQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJ0InO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgQWxwaGEgcmVzdCAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnYSc7IGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3QnOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBDdXN0b20gKGFyaXR5LCBfLCByZXN0KSAtPlxuICAgICAgZm9yIF9pID0gMSB0byBpbnRfb2ZfY3VzdG9tX2FyaXR5IGFyaXR5IGRvXG4gICAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnPyc7XG4gICAgICBkb25lO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuICAgIHwgUmVhZGVyIHJlc3QgLT5cbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnOyBicHJpbnRfaWdub3JlZF9mbGFnIGJ1ZiBpZ25fZmxhZztcbiAgICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJ3InOyBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGbHVzaCByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCIlIVwiO1xuICAgICAgZm10aXRlciByZXN0IGlnbl9mbGFnO1xuXG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsIGJ1ZiBzdHI7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwgYnVmIGNocjtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfcGFkX29wdCBidWYgcGFkX29wdDsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAneyc7XG4gICAgICBicHJpbnRfZm10dHkgYnVmIGZtdHR5OyBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnfSc7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHBhZF9vcHQ7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJygnO1xuICAgICAgYnByaW50X2ZtdHR5IGJ1ZiBmbXR0eTsgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJ1ZmZlcl9hZGRfY2hhciBidWYgJyknO1xuICAgICAgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiAnJSc7IGJwcmludF9pZ25vcmVkX2ZsYWcgYnVmIGlnbl9mbGFnO1xuICAgICAgYnByaW50X3BhZF9vcHQgYnVmIHdpZHRoX29wdDsgYnByaW50X2NoYXJfc2V0IGJ1ZiBjaGFyX3NldDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBmYWxzZTtcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmIChjaGFyX29mX2NvdW50ZXIgY291bnRlcik7XG4gICAgICBmbXRpdGVyIHJlc3QgZmFsc2U7XG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICBidWZmZXJfYWRkX2NoYXIgYnVmICclJzsgYnByaW50X2lnbm9yZWRfZmxhZyBidWYgaWduX2ZsYWc7XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIFwiMGNcIjsgZm10aXRlciByZXN0IGZhbHNlO1xuXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgICBmbXRpdGVyIGZtdCcgdHJ1ZTtcblxuICAgIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgICBicHJpbnRfc3RyaW5nX2xpdGVyYWwgYnVmIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCk7XG4gICAgICBmbXRpdGVyIHJlc3QgaWduX2ZsYWc7XG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGZtdGluZ19nZW4gd2l0aFxuICAgICAgfCBPcGVuX3RhZyAoRm9ybWF0IChfLCBzdHIpKSAtPlxuICAgICAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgXCJAe1wiOyBidWZmZXJfYWRkX3N0cmluZyBidWYgc3RyXG4gICAgICB8IE9wZW5fYm94IChGb3JtYXQgKF8sIHN0cikpIC0+XG4gICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBcIkBbXCI7IGJ1ZmZlcl9hZGRfc3RyaW5nIGJ1ZiBzdHJcbiAgICAgIGVuZDtcbiAgICAgIGZtdGl0ZXIgcmVzdCBpZ25fZmxhZztcblxuICAgIHwgRW5kX29mX2Zvcm1hdCAtPiAoKVxuXG4gIGluIGZtdGl0ZXIgZm10IGZhbHNlXG5cbigqKiopXG5cbigqIENvbnZlcnQgYSBmb3JtYXQgdG8gc3RyaW5nLiAqKVxubGV0IHN0cmluZ19vZl9mbXQgZm10ID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlcl9jcmVhdGUgMTYgaW5cbiAgYnByaW50X2ZtdCBidWYgZm10O1xuICBidWZmZXJfY29udGVudHMgYnVmXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFR5cGUgZXh0cmFjdGlvbiAqKVxuXG50eXBlIChfLCBfKSBlcSA9IFJlZmwgOiAoJ2EsICdhKSBlcVxuXG4oKiBJbnZhcmlhbnQ6IHRoaXMgZnVuY3Rpb24gaXMgdGhlIGlkZW50aXR5IG9uIHZhbHVlcy5cblxuICAgSW4gcGFydGljdWxhciwgaWYgKHR5MSwgdHkyKSBoYXZlIGVxdWFsIHZhbHVlcywgdGhlblxuICAgKHRyYW5zIChzeW1tIHR5MSkgdHkyKSByZXNwZWN0cyB0aGUgJ3RyYW5zJyBwcmVjb25kaXRpb24uICopXG5sZXQgcmVjIHN5bW0gOiB0eXBlIGExIGIxIGMxIGQxIGUxIGYxIGEyIGIyIGMyIGQyIGUyIGYyIC5cbiAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgIGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5X3JlbFxuLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIsXG4gICAgYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10dHlfcmVsXG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+IENoYXJfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnRfdHkgcmVzdCAtPiBJbnRfdHkgKHN5bW0gcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+IEludDMyX3R5IChzeW1tIHJlc3QpXG4gIHwgSW50NjRfdHkgcmVzdCAtPiBJbnQ2NF90eSAoc3ltbSByZXN0KVxuICB8IE5hdGl2ZWludF90eSByZXN0IC0+IE5hdGl2ZWludF90eSAoc3ltbSByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT4gRmxvYXRfdHkgKHN5bW0gcmVzdClcbiAgfCBCb29sX3R5IHJlc3QgLT4gQm9vbF90eSAoc3ltbSByZXN0KVxuICB8IFN0cmluZ190eSByZXN0IC0+IFN0cmluZ190eSAoc3ltbSByZXN0KVxuICB8IFRoZXRhX3R5IHJlc3QgLT4gVGhldGFfdHkgKHN5bW0gcmVzdClcbiAgfCBBbHBoYV90eSByZXN0IC0+IEFscGhhX3R5IChzeW1tIHJlc3QpXG4gIHwgQW55X3R5IHJlc3QgLT4gQW55X3R5IChzeW1tIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT4gUmVhZGVyX3R5IChzeW1tIHJlc3QpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPiBJZ25vcmVkX3JlYWRlcl90eSAoc3ltbSByZXN0KVxuICB8IEZvcm1hdF9hcmdfdHkgKHR5LCByZXN0KSAtPlxuICAgIEZvcm1hdF9hcmdfdHkgKHR5LCBzeW1tIHJlc3QpXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3RfdHkgKHR5MiwgdHkxLCBzeW1tIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG5sZXQgcmVjIGZtdHR5X3JlbF9kZXQgOiB0eXBlIGExIGIgYyBkMSBlMSBmMSBhMiBkMiBlMiBmMiAuXG4gIChhMSwgYiwgYywgZDEsIGUxLCBmMSxcbiAgIGEyLCBiLCBjLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoKGYxLCBmMikgZXEgLT4gKGExLCBhMikgZXEpXG4gICogKChhMSwgYTIpIGVxIC0+IChmMSwgZjIpIGVxKVxuICAqICgoZTEsIGUyKSBlcSAtPiAoZDEsIGQyKSBlcSlcbiAgKiAoKGQxLCBkMikgZXEgLT4gKGUxLCBlMikgZXEpXG49IGZ1bmN0aW9uXG4gIHwgRW5kX29mX2ZtdHR5IC0+XG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IFJlZmwpXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEludDMyX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgSW50NjRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBGbG9hdF90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIGVkLCBkZVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcblxuICB8IFRoZXRhX3R5IHJlc3QgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgQWxwaGFfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICBlZCwgZGVcbiAgfCBSZWFkZXJfdHkgcmVzdCAtPlxuICAgIGxldCBmYSwgYWYsIGVkLCBkZSA9IGZtdHR5X3JlbF9kZXQgcmVzdCBpblxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGZhIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGRlIFJlZmwgaW4gUmVmbClcbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0IC0+XG4gICAgbGV0IGZhLCBhZiwgZWQsIGRlID0gZm10dHlfcmVsX2RldCByZXN0IGluXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZmEgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBhZiBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGVkIFJlZmwgaW4gUmVmbCksXG4gICAgKGZ1biBSZWZsIC0+IGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuICB8IEZvcm1hdF9hcmdfdHkgKF90eSwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIFJlZmwpLFxuICAgIChmdW4gUmVmbCAtPiBsZXQgUmVmbCA9IGFmIFJlZmwgaW4gUmVmbCksXG4gICAgZWQsIGRlXG4gIHwgRm9ybWF0X3N1YnN0X3R5ICh0eTEsIHR5MiwgcmVzdCkgLT5cbiAgICBsZXQgZmEsIGFmLCBlZCwgZGUgPSBmbXR0eV9yZWxfZGV0IHJlc3QgaW5cbiAgICBsZXQgdHkgPSB0cmFucyAoc3ltbSB0eTEpIHR5MiBpblxuICAgIGxldCBhZywgZ2EsIGRqLCBqZCA9IGZtdHR5X3JlbF9kZXQgdHkgaW5cbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBmYSBSZWZsIGluIGxldCBSZWZsID0gYWcgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBnYSBSZWZsIGluIGxldCBSZWZsID0gYWYgUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBlZCBSZWZsIGluIGxldCBSZWZsID0gZGogUmVmbCBpbiBSZWZsKSxcbiAgICAoZnVuIFJlZmwgLT4gbGV0IFJlZmwgPSBqZCBSZWZsIGluIGxldCBSZWZsID0gZGUgUmVmbCBpbiBSZWZsKVxuXG4oKiBQcmVjb25kaXRpb246IHdlIGFzc3VtZSB0aGF0IHRoZSB0d28gZm10dHlfcmVsIGFyZ3VtZW50cyBoYXZlIGVxdWFsXG4gICB2YWx1ZXMgKGF0IHBvc3NpYmx5IGRpc3RpbmN0IHR5cGVzKTsgdGhpcyBpbnZhcmlhbnQgY29tZXMgZnJvbSB0aGUgd2F5XG4gICBmbXR0eV9yZWwgd2l0bmVzc2VzIGFyZSBwcm9kdWNlZCBieSB0aGUgdHlwZS1jaGVja2VyXG5cbiAgIFRoZSBjb2RlIGJlbG93IHVzZXMgKGFzc2VydCBmYWxzZSkgd2hlbiB0aGlzIGFzc3VtcHRpb24gaXMgYnJva2VuLiBUaGVcbiAgIGNvZGUgcGF0dGVybiBpcyB0aGUgZm9sbG93aW5nOlxuXG4gICAgIHwgRm9vIHgsIEZvbyB5IC0+XG4gICAgICAgKCogY2FzZSB3aGVyZSBpbmRlZWQgYm90aCB2YWx1ZXNcbiAgICAgICAgICBzdGFydCB3aXRoIGNvbnN0cnVjdG9yIEZvbyAqKVxuICAgICB8IEZvbyBfLCBfXG4gICAgIHwgXywgRm9vIF8gLT5cbiAgICAgICAoKiBkaWZmZXJlbnQgaGVhZCBjb25zdHJ1Y3RvcnM6IGJyb2tlbiBwcmVjb25kaXRpb24gKilcbiAgICAgICBhc3NlcnQgZmFsc2VcbiopXG5hbmQgdHJhbnMgOiB0eXBlXG4gIGExIGIxIGMxIGQxIGUxIGYxXG4gIGEyIGIyIGMyIGQyIGUyIGYyXG4gIGEzIGIzIGMzIGQzIGUzIGYzXG4uXG4gICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSxcbiAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWxcbi0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyLFxuICAgIGEzLCBiMywgYzMsIGQzLCBlMywgZjMpIGZtdHR5X3JlbFxuLT4gKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEsXG4gICAgYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHlfcmVsXG49IGZ1biB0eTEgdHkyIC0+IG1hdGNoIHR5MSwgdHkyIHdpdGhcbiAgfCBDaGFyX3R5IHJlc3QxLCBDaGFyX3R5IHJlc3QyIC0+IENoYXJfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IFN0cmluZ190eSByZXN0MSwgU3RyaW5nX3R5IHJlc3QyIC0+IFN0cmluZ190eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgQm9vbF90eSByZXN0MSwgQm9vbF90eSByZXN0MiAtPiBCb29sX3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBJbnRfdHkgcmVzdDEsIEludF90eSByZXN0MiAtPiBJbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEludDMyX3R5IHJlc3QxLCBJbnQzMl90eSByZXN0MiAtPiBJbnQzMl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSW50NjRfdHkgcmVzdDEsIEludDY0X3R5IHJlc3QyIC0+IEludDY0X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdDEsIE5hdGl2ZWludF90eSByZXN0MiAtPiBOYXRpdmVpbnRfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEZsb2F0X3R5IHJlc3QxLCBGbG9hdF90eSByZXN0MiAtPiBGbG9hdF90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG5cbiAgfCBBbHBoYV90eSByZXN0MSwgQWxwaGFfdHkgcmVzdDIgLT4gQWxwaGFfdHkgKHRyYW5zIHJlc3QxIHJlc3QyKVxuICB8IEFscGhhX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgQWxwaGFfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFRoZXRhX3R5IHJlc3QxLCBUaGV0YV90eSByZXN0MiAtPiBUaGV0YV90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgVGhldGFfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBUaGV0YV90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgQW55X3R5IHJlc3QxLCBBbnlfdHkgcmVzdDIgLT4gQW55X3R5ICh0cmFucyByZXN0MSByZXN0MilcbiAgfCBBbnlfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBBbnlfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IFJlYWRlcl90eSByZXN0MSwgUmVhZGVyX3R5IHJlc3QyIC0+IFJlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgUmVhZGVyX3R5IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgXywgUmVhZGVyX3R5IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgfCBJZ25vcmVkX3JlYWRlcl90eSByZXN0MSwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdDIgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAodHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBJZ25vcmVkX3JlYWRlcl90eSBfIC0+IGFzc2VydCBmYWxzZVxuXG4gIHwgRm9ybWF0X2FyZ190eSAodHkxLCByZXN0MSksIEZvcm1hdF9hcmdfdHkgKHR5MiwgcmVzdDIpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHJhbnMgdHkxIHR5MiwgdHJhbnMgcmVzdDEgcmVzdDIpXG4gIHwgRm9ybWF0X2FyZ190eSBfLCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IF8sIEZvcm1hdF9hcmdfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxMSwgdHkxMiwgcmVzdDEpLFxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkyMSwgdHkyMiwgcmVzdDIpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxMikgdHkyMSBpblxuICAgIGxldCBfLCBmMiwgXywgZjQgPSBmbXR0eV9yZWxfZGV0IHR5IGluXG4gICAgbGV0IFJlZmwgPSBmMiBSZWZsIGluXG4gICAgbGV0IFJlZmwgPSBmNCBSZWZsIGluXG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eTExLCB0eTIyLCB0cmFucyByZXN0MSByZXN0MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgXywgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBGb3JtYXRfc3Vic3RfdHkgXyAtPiBhc3NlcnQgZmFsc2VcblxuICB8IEVuZF9vZl9mbXR0eSwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuICB8IEVuZF9vZl9mbXR0eSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBfLCBFbmRfb2ZfZm10dHkgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCByZWMgZm10dHlfb2ZfZm9ybWF0dGluZ19nZW4gOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZvcm1hdHRpbmdfZ2VuIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5ID1cbmZ1biBmb3JtYXR0aW5nX2dlbiAtPiBtYXRjaCBmb3JtYXR0aW5nX2dlbiB3aXRoXG4gIHwgT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSkgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpIC0+IGZtdHR5X29mX2ZtdCBmbXRcblxuKCogRXh0cmFjdCB0aGUgdHlwZSByZXByZXNlbnRhdGlvbiAoYW4gZm10dHkpIG9mIGEgZm9ybWF0LiAqKVxuYW5kIGZtdHR5X29mX2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgLlxuICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSA9XG5mdW4gZm10dHkgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIChTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KSlcblxuICB8IEludCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnRfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgSW50MzIgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgdHlfcmVzdCA9IGZtdHR5X29mX2ZtdCByZXN0IGluXG4gICAgbGV0IHByZWNfdHkgPSBmbXR0eV9vZl9wcmVjaXNpb25fZm10dHkgcHJlYyAoSW50MzJfdHkgdHlfcmVzdCkgaW5cbiAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCBwcmVjX3R5XG4gIHwgTmF0aXZlaW50IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IHR5X3Jlc3QgPSBmbXR0eV9vZl9mbXQgcmVzdCBpblxuICAgIGxldCBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IHByZWMgKE5hdGl2ZWludF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBJbnQ2NCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChJbnQ2NF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcbiAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCB0eV9yZXN0ID0gZm10dHlfb2ZfZm10IHJlc3QgaW5cbiAgICBsZXQgcHJlY190eSA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSBwcmVjIChGbG9hdF90eSB0eV9yZXN0KSBpblxuICAgIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgcGFkIHByZWNfdHlcblxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IENhbWxfY2hhciByZXN0ICAgICAgICAgICAgIC0+IENoYXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEJvb2wgKHBhZCwgcmVzdCkgICAgICAgICAgIC0+XG4gICAgICBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5IHBhZCAoQm9vbF90eSAoZm10dHlfb2ZfZm10IHJlc3QpKVxuICB8IEFscGhhIHJlc3QgICAgICAgICAgICAgICAgIC0+IEFscGhhX3R5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAtPiBUaGV0YV90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgQ3VzdG9tIChhcml0eSwgXywgcmVzdCkgICAgLT4gZm10dHlfb2ZfY3VzdG9tIGFyaXR5IChmbXR0eV9vZl9mbXQgcmVzdClcbiAgfCBSZWFkZXIgcmVzdCAgICAgICAgICAgICAgICAtPiBSZWFkZXJfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdCAoXywgdHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X3N1YnN0X3R5ICh0eSwgdHksIGZtdHR5X29mX2ZtdCByZXN0KVxuXG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgIC0+IGZtdHR5X29mX2ZtdCByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPiBTdHJpbmdfdHkgKGZtdHR5X29mX2ZtdCByZXN0KVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+IEludF90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgLT4gQ2hhcl90eSAoZm10dHlfb2ZfZm10IHJlc3QpXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgLT4gZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2xpdCAoXywgcmVzdCkgICAtPiBmbXR0eV9vZl9mbXQgcmVzdFxuICB8IEZvcm1hdHRpbmdfZ2VuIChmbXRpbmdfZ2VuLCByZXN0KSAgLT5cbiAgICBjb25jYXRfZm10dHkgKGZtdHR5X29mX2Zvcm1hdHRpbmdfZ2VuIGZtdGluZ19nZW4pIChmbXR0eV9vZl9mbXQgcmVzdClcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgIC0+IEVuZF9vZl9mbXR0eVxuXG5hbmQgZm10dHlfb2ZfY3VzdG9tIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAoeSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGFyaXR5IGZtdHR5IC0+IG1hdGNoIGFyaXR5IHdpdGhcbiAgfCBDdXN0b21femVybyAtPiBmbXR0eVxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+IEFueV90eSAoZm10dHlfb2ZfY3VzdG9tIGFyaXR5IGZtdHR5KVxuXG4oKiBFeHRyYWN0IHRoZSBmbXR0eSBvZiBhbiBpZ25vcmVkIHBhcmFtZXRlciBmb2xsb3dlZCBieSB0aGUgcmVzdCBvZlxuICAgdGhlIGZvcm1hdC4gKilcbmFuZCBmbXR0eV9vZl9pZ25vcmVkX2Zvcm1hdCA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoYSwgYiwgYywgZCwgeSwgeCkgaWdub3JlZCAtPlxuICAgICh4LCBiLCBjLCB5LCBlLCBmKSBmbXQgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuZnVuIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IGZtdHR5X29mX2ZtdCBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IGNvbmNhdF9mbXR0eSBmbXR0eSAoZm10dHlfb2ZfZm10IGZtdClcbiAgfCBJZ25vcmVkX3JlYWRlciAgICAgICAgICAgICAgICAgIC0+IElnbm9yZWRfcmVhZGVyX3R5IChmbXR0eV9vZl9mbXQgZm10KVxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCBfICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuICB8IElnbm9yZWRfc2Nhbl9uZXh0X2NoYXIgICAgICAgICAgLT4gZm10dHlfb2ZfZm10IGZtdFxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcGFkZGluZyBpcyB0YWtlbiBhcyBhbiBleHRyYSBhcmd1bWVudCAoZXg6IFwiJSpzXCIpLiAqKVxuYW5kIGZtdHR5X29mX3BhZGRpbmdfZm10dHkgOiB0eXBlIHggYSBiIGMgZCBlIGYgLlxuICAgICh4LCBhKSBwYWRkaW5nIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcGFkIGZtdHR5IC0+IG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nICAgIC0+IGZtdHR5XG4gICAgfCBMaXRfcGFkZGluZyBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcGFkZGluZyBfIC0+IEludF90eSBmbXR0eVxuXG4oKiBBZGQgYW4gSW50X3R5IG5vZGUgaWYgcHJlY2lzaW9uIGlzIHRha2VuIGFzIGFuIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpLiopXG5hbmQgZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5IDogdHlwZSB4IGEgYiBjIGQgZSBmIC5cbiAgICAoeCwgYSkgcHJlY2lzaW9uIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoeCwgYiwgYywgZCwgZSwgZikgZm10dHkgPVxuICBmdW4gcHJlYyBmbXR0eSAtPiBtYXRjaCBwcmVjIHdpdGhcbiAgICB8IE5vX3ByZWNpc2lvbiAgICAtPiBmbXR0eVxuICAgIHwgTGl0X3ByZWNpc2lvbiBfIC0+IGZtdHR5XG4gICAgfCBBcmdfcHJlY2lzaW9uICAgLT4gSW50X3R5IGZtdHR5XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogRm9ybWF0IHR5cGluZyAqKVxuXG4oKiBFeGNlcHRpb24gcmFpc2VkIHdoZW4gYSBmb3JtYXQgZG9lcyBub3QgbWF0Y2ggYSBnaXZlbiBmb3JtYXQgdHlwZS4gKilcbmV4Y2VwdGlvbiBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBwYWRkaW5nLiAqKVxuKCogVGFrZSBhbiBJbnRfdHkgZnJvbSB0aGUgZm10dHkgaWYgdGhlIGludGVnZXIgc2hvdWxkIGJlIGtlcHQgYXMgYXJndW1lbnQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZGRpbmcgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkZGluZ19mbXR0eV9lYmIgPVxuZnVuIHBhZCBmbXR0eSAtPiBtYXRjaCBwYWQsIGZtdHR5IHdpdGhcbiAgfCBOb19wYWRkaW5nLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChOb19wYWRkaW5nLCBmbXR0eSlcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBfIC0+IFBhZGRpbmdfZm10dHlfRUJCIChMaXRfcGFkZGluZyAocGFkdHksdyksZm10dHkpXG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEludF90eSByZXN0IC0+IFBhZGRpbmdfZm10dHlfRUJCIChBcmdfcGFkZGluZyBwYWR0eSxyZXN0KVxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG4oKiBDb252ZXJ0IGEgKHVwYWRkaW5nLCB1cHJlY2lzaW9uKSB0byBhIChwYWRkaW5nLCBwcmVjaXNpb24pLiAqKVxuKCogVGFrZSBvbmUgb3IgdHdvIEludF90eSBmcm9tIHRoZSBmbXR0eSBpZiBuZWVkZWQuICopXG4oKiBSYWlzZSBUeXBlX21pc21hdGNoIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCB0eXBlX3BhZHByZWMgOiB0eXBlIGEgYiBjIGQgZSBmIHggeSB6IC5cbiAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIHopIHByZWNpc2lvbiAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHkgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgcGFkcHJlY19mbXR0eV9lYmIgPVxuZnVuIHBhZCBwcmVjIGZtdHR5IC0+IG1hdGNoIHByZWMsIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBOb19wcmVjaXNpb24sIHJlc3QpXG4gIHwgTGl0X3ByZWNpc2lvbiBwLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCByZXN0KSAtPlxuICAgIFBhZHByZWNfZm10dHlfRUJCIChwYWQsIExpdF9wcmVjaXNpb24gcCwgcmVzdClcbiAgfCBBcmdfcHJlY2lzaW9uLCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBJbnRfdHkgcmVzdCkgLT5cbiAgICBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBBcmdfcHJlY2lzaW9uLCByZXN0KVxuICB8IF8sIFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFR5cGUgYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogSWYgdHlwaW5nIHN1Y2NlZWQsIGdlbmVyYXRlIGEgY29weSBvZiB0aGUgZm9ybWF0IHdpdGggdGhlIHNhbWVcbiAgICB0eXBlIHBhcmFtZXRlcnMgYXMgdGhlIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgcmVjIHR5cGVfZm9ybWF0IDpcbiAgdHlwZSBhMSBiMSBjMSBkMSBlMSBmMVxuICAgICAgIGEyIGIyIGMyIGQyIGUyIGYyICAuXG4gICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmbXRcbiAgLT4gKGEyLCBiMiwgYzIsIGQyLCBlMiwgZjIpIGZtdHR5XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPiBtYXRjaCB0eXBlX2Zvcm1hdF9nZW4gZm10IGZtdHR5IHdpdGhcbiAgfCBGbXRfZm10dHlfRUJCIChmbXQnLCBFbmRfb2ZfZm10dHkpIC0+IGZtdCdcbiAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcblxuYW5kIHR5cGVfZm9ybWF0X2dlbiA6XG4gIHR5cGUgYTEgYjEgYzEgZDEgZTEgZjFcbiAgICAgICBhMiBiMiBjMiBkMiBlMiBmMiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eVxuICAtPiAoYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10X2ZtdHR5X2ViYlxuPSBmdW4gZm10IGZtdHR5IC0+IG1hdGNoIGZtdCwgZm10dHkgd2l0aFxuICB8IENoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyIGZtdCcsIGZtdHR5JylcbiAgfCBDYW1sX2NoYXIgZm10X3Jlc3QsIENoYXJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDYW1sX2NoYXIgZm10JywgZm10dHknKVxuICB8IFN0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChTdHJpbmcgKHBhZCwgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZGRpbmdfZm10dHlfRUJCIChfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBDYW1sX3N0cmluZyAocGFkLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkZGluZyBwYWQgZm10dHkgd2l0aFxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKHBhZCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChDYW1sX3N0cmluZyAocGFkLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkZGluZ19mbXR0eV9FQkIgKF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgZm10X3Jlc3QpLCBfIC0+IChcbiAgICBtYXRjaCB0eXBlX3BhZHByZWMgcGFkIHByZWMgZm10dHkgd2l0aFxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKHBhZCwgcHJlYywgSW50X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEludDMyX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIE5hdGl2ZWludF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBmbXQnKSwgZm10dHknKVxuICAgIHwgUGFkcHJlY19mbXR0eV9FQkIgKF8sIF8sIF8pIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCBmbXRfcmVzdCksIF8gLT4gKFxuICAgIG1hdGNoIHR5cGVfcGFkcHJlYyBwYWQgcHJlYyBmbXR0eSB3aXRoXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAocGFkLCBwcmVjLCBJbnQ2NF90eSBmbXR0eV9yZXN0KSAtPlxuICAgICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSW50NjQgKGljb252LCBwYWQsIHByZWMsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRwcmVjX2ZtdHR5X0VCQiAoXywgXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRwcmVjIHBhZCBwcmVjIGZtdHR5IHdpdGhcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChwYWQsIHByZWMsIEZsb2F0X3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCwgcHJlYywgZm10JyksIGZtdHR5JylcbiAgICB8IFBhZHByZWNfZm10dHlfRUJCIChfLCBfLCBfKSAtPiByYWlzZSBUeXBlX21pc21hdGNoXG4gIClcbiAgfCBCb29sIChwYWQsIGZtdF9yZXN0KSwgXyAtPiAoXG4gICAgbWF0Y2ggdHlwZV9wYWRkaW5nIHBhZCBmbXR0eSB3aXRoXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAocGFkLCBCb29sX3R5IGZtdHR5X3Jlc3QpIC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgICBGbXRfZm10dHlfRUJCIChCb29sIChwYWQsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBQYWRkaW5nX2ZtdHR5X0VCQiAoXywgXykgLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuICApXG4gIHwgRmx1c2ggZm10X3Jlc3QsIGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRmx1c2ggZm10JywgZm10dHknKVxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgKHN0ciwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFN0cmluZ19saXRlcmFsIChzdHIsIGZtdCcpLCBmbXR0eScpXG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChDaGFyX2xpdGVyYWwgKGNociwgZm10JyksIGZtdHR5JylcblxuICB8IEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpLFxuICAgIEZvcm1hdF9hcmdfdHkgKHN1Yl9mbXR0eScsIGZtdHR5X3Jlc3QpIC0+XG4gICAgaWYgRm10dHlfRUJCIHN1Yl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViX2ZtdHR5JyB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eScsIGZtdCcpLCBmbXR0eScpXG4gIHwgRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHksIGZtdF9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1Yl9mbXR0eTEsIF9zdWJfZm10dHkyLCBmbXR0eV9yZXN0KSAtPlxuICAgIGlmIEZtdHR5X0VCQiAoZXJhc2VfcmVsIHN1Yl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViX2ZtdHR5MSkgdGhlblxuICAgICAgcmFpc2UgVHlwZV9taXNtYXRjaDtcbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9XG4gICAgICB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgKGVyYXNlX3JlbCBmbXR0eV9yZXN0KVxuICAgIGluXG4gICAgRm10X2ZtdHR5X0VCQiAoRm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkxLCBmbXQnKSwgZm10dHknKVxuICAoKiBQcmludGYgYW5kIEZvcm1hdCBzcGVjaWZpYyBjb25zdHJ1Y3RvcnM6ICopXG4gIHwgQWxwaGEgZm10X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoQWxwaGEgZm10JywgZm10dHknKVxuICB8IFRoZXRhIGZtdF9yZXN0LCBUaGV0YV90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFRoZXRhIGZtdCcsIGZtdHR5JylcblxuICAoKiBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10JyksIGZtdHR5JylcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm9ybWF0dGluZ19nZW4sIGZtdF9yZXN0KSwgZm10dHlfcmVzdCAtPlxuICAgIHR5cGVfZm9ybWF0dGluZ19nZW4gZm9ybWF0dGluZ19nZW4gZm10X3Jlc3QgZm10dHlfcmVzdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgZm10X3Jlc3QsIFJlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10X3Jlc3QgZm10dHlfcmVzdCBpblxuICAgIEZtdF9mbXR0eV9FQkIgKFJlYWRlciBmbXQnLCBmbXR0eScpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgZm10X3Jlc3QpLCBTdHJpbmdfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdF9yZXN0IGZtdHR5X3Jlc3QgaW5cbiAgICBGbXRfZm10dHlfRUJCIChTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBmbXQnKSwgZm10dHknKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGZtdF9yZXN0KSwgSW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXRfcmVzdCBmbXR0eV9yZXN0IGluXG4gICAgRm10X2ZtdHR5X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10JyksIGZtdHR5JylcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpLCBmbXR0eV9yZXN0IC0+XG4gICAgdHlwZV9pZ25vcmVkX3BhcmFtIGlnbiByZXN0IGZtdHR5X3Jlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQsIGZtdHR5X3Jlc3QgLT4gRm10X2ZtdHR5X0VCQiAoRW5kX29mX2Zvcm1hdCwgZm10dHlfcmVzdClcblxuICB8IF8gLT4gcmFpc2UgVHlwZV9taXNtYXRjaFxuXG5hbmQgdHlwZV9mb3JtYXR0aW5nX2dlbiA6IHR5cGUgYTEgYTMgYjEgYjMgYzEgYzMgZDEgZDMgZTEgZTIgZTMgZjEgZjIgZjMgLlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxKSBmb3JtYXR0aW5nX2dlbiAtPlxuICAgIChmMSwgYjEsIGMxLCBlMSwgZTIsIGYyKSBmbXQgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10dHkgLT5cbiAgICAoYTMsIGIzLCBjMywgZDMsIGUzLCBmMykgZm10X2ZtdHR5X2ViYiA9XG5mdW4gZm9ybWF0dGluZ19nZW4gZm10MCBmbXR0eTAgLT4gbWF0Y2ggZm9ybWF0dGluZ19nZW4gd2l0aFxuICB8IE9wZW5fdGFnIChGb3JtYXQgKGZtdDEsIHN0cikpIC0+XG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDIsIGZtdHR5MikgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MSBmbXR0eTAgaW5cbiAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10MywgZm10dHkzKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQwIGZtdHR5MiBpblxuICAgIEZtdF9mbXR0eV9FQkIgKEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQyLCBzdHIpKSwgZm10MyksIGZtdHR5MylcbiAgfCBPcGVuX2JveCAoRm9ybWF0IChmbXQxLCBzdHIpKSAtPlxuICAgIGxldCBGbXRfZm10dHlfRUJCIChmbXQyLCBmbXR0eTIpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdDEgZm10dHkwIGluXG4gICAgbGV0IEZtdF9mbXR0eV9FQkIgKGZtdDMsIGZtdHR5MykgPSB0eXBlX2Zvcm1hdF9nZW4gZm10MCBmbXR0eTIgaW5cbiAgICBGbXRfZm10dHlfRUJCIChGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10Miwgc3RyKSksIGZtdDMpLCBmbXR0eTMpXG5cbigqIFR5cGUgYW4gSWdub3JlZF9wYXJhbSBub2RlIGFjY29yZGluZyB0byBhbiBmbXR0eS4gKilcbmFuZCB0eXBlX2lnbm9yZWRfcGFyYW0gOiB0eXBlIHAgcSB4IHkgeiB0IHUgdiBhIGIgYyBkIGUgZiAuXG4gICAgKHgsIHksIHosIHQsIHEsIHApIGlnbm9yZWQgLT5cbiAgICAocCwgeSwgeiwgcSwgdSwgdikgZm10IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5IC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdF9mbXR0eV9lYmIgPVxuZnVuIGlnbiBmbXQgZm10dHkgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludCBfICAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDMyIF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX25hdGl2ZWludCBfICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2ludDY0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zsb2F0IF8gICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICBhcyBpZ24nIC0+IHR5cGVfaWdub3JlZF9wYXJhbV9vbmUgaWduJyBmbXQgZm10dHlcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkgLT5cbiAgICB0eXBlX2lnbm9yZWRfcGFyYW1fb25lIChJZ25vcmVkX2Zvcm1hdF9hcmcgKHBhZF9vcHQsIHN1Yl9mbXR0eSkpIGZtdCBmbXR0eVxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChwYWRfb3B0LCBzdWJfZm10dHkpIC0+XG4gICAgbGV0IEZtdHR5X2ZtdF9FQkIgKHN1Yl9mbXR0eScsIEZtdF9mbXR0eV9FQkIgKGZtdCcsIGZtdHR5JykpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eSBmbXQgZm10dHkgaW5cbiAgICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2Zvcm1hdF9zdWJzdCAocGFkX29wdCwgc3ViX2ZtdHR5JyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10JyksXG4gICAgICAgICAgICAgICAgICAgZm10dHknKVxuICB8IElnbm9yZWRfcmVhZGVyIC0+IChcbiAgICBtYXRjaCBmbXR0eSB3aXRoXG4gICAgfCBJZ25vcmVkX3JlYWRlcl90eSBmbXR0eV9yZXN0IC0+XG4gICAgICBsZXQgRm10X2ZtdHR5X0VCQiAoZm10JywgZm10dHknKSA9IHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHlfcmVzdCBpblxuICAgICAgRm10X2ZtdHR5X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9yZWFkZXIsIGZtdCcpLCBmbXR0eScpXG4gICAgfCBfIC0+IHJhaXNlIFR5cGVfbWlzbWF0Y2hcbiAgKVxuXG5hbmQgdHlwZV9pZ25vcmVkX3BhcmFtX29uZSA6IHR5cGUgYTEgYTIgYjEgYjIgYzEgYzIgZDEgZDIgZTEgZTIgZjEgZjIgLlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZDIsIGEyKSBpZ25vcmVkIC0+XG4gICAgKGExLCBiMSwgYzEsIGQxLCBlMSwgZjEpIGZtdCAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eSAtPlxuICAgIChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRfZm10dHlfZWJiXG49IGZ1biBpZ24gZm10IGZtdHR5IC0+XG4gIGxldCBGbXRfZm10dHlfRUJCIChmbXQnLCBmbXR0eScpID0gdHlwZV9mb3JtYXRfZ2VuIGZtdCBmbXR0eSBpblxuICBGbXRfZm10dHlfRUJCIChJZ25vcmVkX3BhcmFtIChpZ24sIGZtdCcpLCBmbXR0eScpXG5cbigqIFR5cGluZyBvZiB0aGUgY29tcGxleCBjYXNlOiBcIiVfKC4uLiUpXCIuICopXG5hbmQgdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24gOiB0eXBlIHcgeCB5IHogcCBzIHQgdSBhIGIgYyBkIGUgZiAuXG4gICAgKHcsIHgsIHksIHosIHMsIHApIGZtdHR5IC0+XG4gICAgKHAsIHgsIHksIHMsIHQsIHUpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10dHlfZm10X2ViYiA9XG5mdW4gc3ViX2ZtdHR5IGZtdCBmbXR0eSAtPiBtYXRjaCBzdWJfZm10dHksIGZtdHR5IHdpdGhcbiAgfCBDaGFyX3R5IHN1Yl9mbXR0eV9yZXN0LCBDaGFyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKENoYXJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCwgU3RyaW5nX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFN0cmluZ190eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50X3R5IHN1Yl9mbXR0eV9yZXN0LCBJbnRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBJbnQzMl90eSBzdWJfZm10dHlfcmVzdCwgSW50MzJfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoSW50MzJfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCwgTmF0aXZlaW50X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKE5hdGl2ZWludF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSW50NjRfdHkgc3ViX2ZtdHR5X3Jlc3QsIEludDY0X3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEludDY0X3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBGbG9hdF90eSBzdWJfZm10dHlfcmVzdCwgRmxvYXRfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRmxvYXRfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IEJvb2xfdHkgc3ViX2ZtdHR5X3Jlc3QsIEJvb2xfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoQm9vbF90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgQWxwaGFfdHkgc3ViX2ZtdHR5X3Jlc3QsIEFscGhhX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKEFscGhhX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcbiAgfCBUaGV0YV90eSBzdWJfZm10dHlfcmVzdCwgVGhldGFfdHkgZm10dHlfcmVzdCAtPlxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoVGhldGFfdHkgc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKVxuICB8IFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCwgUmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKFJlYWRlcl90eSBzdWJfZm10dHlfcmVzdCcsIGZtdCcpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgc3ViX2ZtdHR5X3Jlc3QsIElnbm9yZWRfcmVhZGVyX3R5IGZtdHR5X3Jlc3QgLT5cbiAgICBsZXQgRm10dHlfZm10X0VCQiAoc3ViX2ZtdHR5X3Jlc3QnLCBmbXQnKSA9XG4gICAgICB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbiBzdWJfZm10dHlfcmVzdCBmbXQgZm10dHlfcmVzdCBpblxuICAgIEZtdHR5X2ZtdF9FQkIgKElnbm9yZWRfcmVhZGVyX3R5IHN1Yl9mbXR0eV9yZXN0JywgZm10JylcblxuICB8IEZvcm1hdF9hcmdfdHkgKHN1YjJfZm10dHksIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfYXJnX3R5IChzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICBpZiBGbXR0eV9FQkIgc3ViMl9mbXR0eSA8PiBGbXR0eV9FQkIgc3ViMl9mbXR0eScgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIHN1Yl9mbXR0eV9yZXN0IGZtdCBmbXR0eV9yZXN0IGluXG4gICAgRm10dHlfZm10X0VCQiAoRm9ybWF0X2FyZ190eSAoc3ViMl9mbXR0eScsIHN1Yl9mbXR0eV9yZXN0JyksIGZtdCcpXG4gIHwgRm9ybWF0X3N1YnN0X3R5IChzdWIxX2ZtdHR5LCAgc3ViMl9mbXR0eSwgIHN1Yl9mbXR0eV9yZXN0KSxcbiAgICBGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JywgZm10dHlfcmVzdCkgLT5cbiAgICAoKiBUT0RPIGRlZmluZSBGbXR0eV9yZWxfRUJCIHRvIHJlbW92ZSB0aG9zZSBlcmFzZV9yZWwgKilcbiAgICBpZiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5KSA8PiBGbXR0eV9FQkIgKGVyYXNlX3JlbCBzdWIxX2ZtdHR5JylcbiAgICB0aGVuIHJhaXNlIFR5cGVfbWlzbWF0Y2g7XG4gICAgaWYgRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eSkgPD4gRm10dHlfRUJCIChlcmFzZV9yZWwgc3ViMl9mbXR0eScpXG4gICAgdGhlbiByYWlzZSBUeXBlX21pc21hdGNoO1xuICAgIGxldCBzdWJfZm10dHknID0gdHJhbnMgKHN5bW0gc3ViMV9mbXR0eScpIHN1YjJfZm10dHknIGluXG4gICAgbGV0IF8sIGYyLCBfLCBmNCA9IGZtdHR5X3JlbF9kZXQgc3ViX2ZtdHR5JyBpblxuICAgIGxldCBSZWZsID0gZjIgUmVmbCBpblxuICAgIGxldCBSZWZsID0gZjQgUmVmbCBpblxuICAgIGxldCBGbXR0eV9mbXRfRUJCIChzdWJfZm10dHlfcmVzdCcsIGZtdCcpID1cbiAgICAgIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uIChlcmFzZV9yZWwgc3ViX2ZtdHR5X3Jlc3QpIGZtdCBmbXR0eV9yZXN0XG4gICAgaW5cbiAgICBGbXR0eV9mbXRfRUJCIChGb3JtYXRfc3Vic3RfdHkgKHN1YjFfZm10dHknLCBzdWIyX2ZtdHR5JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bW0gc3ViX2ZtdHR5X3Jlc3QnKSxcbiAgICAgICAgICAgICAgICAgICBmbXQnKVxuICB8IEVuZF9vZl9mbXR0eSwgZm10dHkgLT5cbiAgICBGbXR0eV9mbXRfRUJCIChFbmRfb2ZfZm10dHksIHR5cGVfZm9ybWF0X2dlbiBmbXQgZm10dHkpXG4gIHwgXyAtPiByYWlzZSBUeXBlX21pc21hdGNoXG5cbigqIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYHJlY2FzdGAgaXMgYSBiaXQgZGlzYXBwb2ludGluZy4gVGhlXG4gICBpbnZhcmlhbnQgcHJvdmlkZWQgYnkgdGhlIHR5cGUgYXJlIHZlcnkgc3Ryb25nOiB0aGUgaW5wdXQgZm9ybWF0J3NcbiAgIHR5cGUgaXMgaW4gcmVsYXRpb24gdG8gdGhlIG91dHB1dCB0eXBlJ3MgYXMgd2l0bmVzc2VkIGJ5IHRoZVxuICAgZm10dHlfcmVsIGFyZ3VtZW50LiBPbmUgd291bGQgYXQgZmlyc3QgZXhwZWN0IHRoaXMgZnVuY3Rpb24gdG8gYmVcbiAgIHRvdGFsLCBhbmQgaW1wbGVtZW50YWJsZSBieSBleGhhdXN0aXZlIHBhdHRlcm4gbWF0Y2hpbmcuIEluc3RlYWQsXG4gICB3ZSByZXVzZSB0aGUgaGlnaGx5IHBhcnRpYWwgYW5kIG11Y2ggbGVzcyB3ZWxsLWRlZmluZWQgZnVuY3Rpb25cbiAgIGB0eXBlX2Zvcm1hdGAgdGhhdCBoYXMgbG9zdCBhbGwga25vd2xlZGdlIG9mIHRoZSBjb3JyZXNwb25kZW5jZVxuICAgYmV0d2VlbiB0aGUgYXJndW1lbnQncyB0eXBlcy5cblxuICAgQmVzaWRlcyB0aGUgZmFjdCB0aGF0IHRoaXMgZnVuY3Rpb24gcmV1c2VzIGEgbG90IG9mIHRoZVxuICAgYHR5cGVfZm9ybWF0YCBsb2dpYyAoZWcuOiBzZWVpbmcgSW50X3R5IGluIHRoZSBmbXR0eSBwYXJhbWV0ZXIgZG9lc1xuICAgbm90IGxldCB5b3UgbWF0Y2ggb24gSW50IG9ubHksIGFzIHlvdSBtYXkgaW4gZmFjdCBoYXZlIEZsb2F0XG4gICAoQXJnX3BhZGRpbmcsIC4uLikgKFwiJS4qZFwiKSBiZWdpbm5pbmcgd2l0aCBhbiBJbnRfdHkpLCBpdCBpcyBhbHNvXG4gICBhIHBhcnRpYWwgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHR5cGluZyBpbmZvcm1hdGlvbiBpbiBhIGZvcm1hdCBpc1xuICAgbm90IHF1aXRlIGVub3VnaCB0byByZWNvbnN0cnVjdCBpdCB1bmFtYmlndW91c2x5LiBGb3IgZXhhbXBsZSwgdGhlXG4gICBmb3JtYXQgdHlwZXMgb2YgXCIlZCVfclwiIGFuZCBcIiVfciVkXCIgaGF2ZSB0aGUgc2FtZSBmb3JtYXQ2XG4gICBwYXJhbWV0ZXJzLCBidXQgdGhleSBhcmUgbm90IGF0IGFsbCBleGNoYW5nZWFibGUsIGFuZCBwdXR0aW5nIG9uZVxuICAgaW4gcGxhY2Ugb2YgdGhlIG90aGVyIG11c3QgcmVzdWx0IGluIGEgZHluYW1pYyBmYWlsdXJlLlxuXG4gICBHaXZlbiB0aGF0OlxuICAgLSB3ZSdkIGhhdmUgdG8gZHVwbGljYXRlIGEgbG90IG9mIG5vbi10cml2aWFsIHR5cGluZyBsb2dpYyBmcm9tIHR5cGVfZm9ybWF0XG4gICAtIHRoaXMgd291bGRuJ3QgZXZlbiBlbGltaW5hdGUgKGFsbCkgdGhlIGR5bmFtaWMgZmFpbHVyZXNcbiAgIHdlIGRlY2lkZWQgdG8ganVzdCByZXVzZSB0eXBlX2Zvcm1hdCBkaXJlY3RseSBmb3Igbm93LlxuKilcbmxldCByZWNhc3QgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgLlxuICAgICAoYTEsIGIxLCBjMSwgZDEsIGUxLCBmMSkgZm10XG4gIC0+IChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICAgYTIsIGIyLCBjMiwgZDIsIGUyLCBmMikgZm10dHlfcmVsXG4gIC0+IChhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXRcbj0gZnVuIGZtdCBmbXR0eSAtPlxuICB0eXBlX2Zvcm1hdCBmbXQgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFByaW50aW5nIHRvb2xzICopXG5cbigqIEFkZCBwYWRkaW5nIHNwYWNlcyBhcm91bmQgYSBzdHJpbmcuICopXG5sZXQgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggc3RyID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCwgcGFkdHkgPVxuICAgIGFicyB3aWR0aCxcbiAgICAoKiB3aGlsZSBsaXRlcmFsIHBhZGRpbmcgd2lkdGhzIGFyZSBhbHdheXMgbm9uLW5lZ2F0aXZlLFxuICAgICAgIGR5bmFtaWNhbGx5LXNldCB3aWR0aHMgKEFyZ19wYWRkaW5nLCBlZy4gJSpkKSBtYXkgYmUgbmVnYXRpdmU7XG4gICAgICAgd2UgaW50ZXJwcmV0IHRob3NlIGFzIHNwZWNpZnlpbmcgYSBwYWRkaW5nLXRvLXRoZS1sZWZ0OyB0aGlzXG4gICAgICAgbWVhbnMgdGhhdCAnMCcgbWF5IGdldCBkcm9wcGVkIGV2ZW4gaWYgaXQgd2FzIGV4cGxpY2l0bHkgc2V0LFxuICAgICAgIGJ1dDpcbiAgICAgICAtIHRoaXMgaXMgd2hhdCB0aGUgbGVnYWN5IGltcGxlbWVudGF0aW9uIGRvZXMsIGFuZFxuICAgICAgICAgd2UgcHJlc2VydmUgY29tcGF0aWJpbGl0eSBpZiBwb3NzaWJsZVxuICAgICAgIC0gd2UgY291bGQgb25seSBzaWduYWwgdGhpcyBpc3N1ZSBieSBmYWlsaW5nIGF0IHJ1bnRpbWUsXG4gICAgICAgICB3aGljaCBpcyBub3QgdmVyeSBuaWNlLi4uICopXG4gICAgaWYgd2lkdGggPCAwIHRoZW4gTGVmdCBlbHNlIHBhZHR5IGluXG4gIGlmIHdpZHRoIDw9IGxlbiB0aGVuIHN0ciBlbHNlXG4gICAgbGV0IHJlcyA9IEJ5dGVzLm1ha2Ugd2lkdGggKGlmIHBhZHR5ID0gWmVyb3MgdGhlbiAnMCcgZWxzZSAnICcpIGluXG4gICAgYmVnaW4gbWF0Y2ggcGFkdHkgd2l0aFxuICAgIHwgTGVmdCAgLT4gU3RyaW5nLmJsaXQgc3RyIDAgcmVzIDAgbGVuXG4gICAgfCBSaWdodCAtPiBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMCAmJiAoc3RyLlswXSA9ICcrJyB8fCBzdHIuWzBdID0gJy0nIHx8IHN0ci5bMF0gPSAnICcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDAgc3RyLlswXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAod2lkdGggLSBsZW4gKyAxKSAobGVuIC0gMSlcbiAgICB8IFplcm9zIHdoZW4gbGVuID4gMSAmJiBzdHIuWzBdID0gJzAnICYmIChzdHIuWzFdID0gJ3gnIHx8IHN0ci5bMV0gPSAnWCcpIC0+XG4gICAgICBCeXRlcy5zZXQgcmVzIDEgc3RyLlsxXTtcbiAgICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAod2lkdGggLSBsZW4gKyAyKSAobGVuIC0gMilcbiAgICB8IFplcm9zIC0+XG4gICAgICBTdHJpbmcuYmxpdCBzdHIgMCByZXMgKHdpZHRoIC0gbGVuKSBsZW5cbiAgICBlbmQ7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQWRkICcwJyBwYWRkaW5nIHRvIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NCBzdHJpbmcgcmVwcmVzZW50YXRpb24uICopXG5sZXQgZml4X2ludF9wcmVjaXNpb24gcHJlYyBzdHIgPVxuICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBtYXRjaCBzdHIuWzBdIHdpdGhcbiAgfCAoJysnIHwgJy0nIHwgJyAnKSBhcyBjIHdoZW4gcHJlYyArIDEgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDEpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMCBjO1xuICAgIFN0cmluZy5ibGl0IHN0ciAxIHJlcyAocHJlYyAtIGxlbiArIDIpIChsZW4gLSAxKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyB3aGVuIHByZWMgKyAyID4gbGVuICYmIGxlbiA+IDEgJiYgKHN0ci5bMV0gPSAneCcgfHwgc3RyLlsxXSA9ICdYJykgLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSAocHJlYyArIDIpICcwJyBpblxuICAgIEJ5dGVzLnNldCByZXMgMSBzdHIuWzFdO1xuICAgIFN0cmluZy5ibGl0IHN0ciAyIHJlcyAocHJlYyAtIGxlbiArIDQpIChsZW4gLSAyKTtcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyB3aGVuIHByZWMgPiBsZW4gLT5cbiAgICBsZXQgcmVzID0gQnl0ZXMubWFrZSBwcmVjICcwJyBpblxuICAgIFN0cmluZy5ibGl0IHN0ciAwIHJlcyAocHJlYyAtIGxlbikgbGVuO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG4gIHwgXyAtPlxuICAgIHN0clxuXG4oKiBFc2NhcGUgYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpbmcgY29udmVudGlvbi4gKilcbmxldCBzdHJpbmdfdG9fY2FtbF9zdHJpbmcgc3RyID1cbiAgbGV0IHN0ciA9IFN0cmluZy5lc2NhcGVkIHN0ciBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCByZXMgPSBCeXRlcy5tYWtlIChsICsgMikgJ1xcXCInIGluXG4gIFN0cmluZy51bnNhZmVfYmxpdCBzdHIgMCByZXMgMSBsO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2ludC9pbnQzMi9uYXRpdmVpbnQvaW50NjQgZmlyc3QgYXJndW1lbnRcbiAgIGZyb20gYW4gaW50X2NvbnYuICopXG5sZXQgZm9ybWF0X29mX2ljb252ID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVkXCIgfCBJbnRfcGQgLT4gXCIlK2RcIiB8IEludF9zZCAtPiBcIiUgZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlaVwiIHwgSW50X3BpIC0+IFwiJStpXCIgfCBJbnRfc2kgLT4gXCIlIGlcIlxuICB8IEludF94IC0+IFwiJXhcIiB8IEludF9DeCAtPiBcIiUjeFwiXG4gIHwgSW50X1ggLT4gXCIlWFwiIHwgSW50X0NYIC0+IFwiJSNYXCJcbiAgfCBJbnRfbyAtPiBcIiVvXCIgfCBJbnRfQ28gLT4gXCIlI29cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJXVcIlxuXG5sZXQgZm9ybWF0X29mX2ljb252TCA9IGZ1bmN0aW9uXG4gIHwgSW50X2QgfCBJbnRfQ2QgLT4gXCIlTGRcIiB8IEludF9wZCAtPiBcIiUrTGRcIiB8IEludF9zZCAtPiBcIiUgTGRcIlxuICB8IEludF9pIHwgSW50X0NpIC0+IFwiJUxpXCIgfCBJbnRfcGkgLT4gXCIlK0xpXCIgfCBJbnRfc2kgLT4gXCIlIExpXCJcbiAgfCBJbnRfeCAtPiBcIiVMeFwiIHwgSW50X0N4IC0+IFwiJSNMeFwiXG4gIHwgSW50X1ggLT4gXCIlTFhcIiB8IEludF9DWCAtPiBcIiUjTFhcIlxuICB8IEludF9vIC0+IFwiJUxvXCIgfCBJbnRfQ28gLT4gXCIlI0xvXCJcbiAgfCBJbnRfdSB8IEludF9DdSAtPiBcIiVMdVwiXG5cbmxldCBmb3JtYXRfb2ZfaWNvbnZsID0gZnVuY3Rpb25cbiAgfCBJbnRfZCB8IEludF9DZCAtPiBcIiVsZFwiIHwgSW50X3BkIC0+IFwiJStsZFwiIHwgSW50X3NkIC0+IFwiJSBsZFwiXG4gIHwgSW50X2kgfCBJbnRfQ2kgLT4gXCIlbGlcIiB8IEludF9waSAtPiBcIiUrbGlcIiB8IEludF9zaSAtPiBcIiUgbGlcIlxuICB8IEludF94IC0+IFwiJWx4XCIgfCBJbnRfQ3ggLT4gXCIlI2x4XCJcbiAgfCBJbnRfWCAtPiBcIiVsWFwiIHwgSW50X0NYIC0+IFwiJSNsWFwiXG4gIHwgSW50X28gLT4gXCIlbG9cIiB8IEludF9DbyAtPiBcIiUjbG9cIlxuICB8IEludF91IHwgSW50X0N1IC0+IFwiJWx1XCJcblxubGV0IGZvcm1hdF9vZl9pY29udm4gPSBmdW5jdGlvblxuICB8IEludF9kIHwgSW50X0NkIC0+IFwiJW5kXCIgfCBJbnRfcGQgLT4gXCIlK25kXCIgfCBJbnRfc2QgLT4gXCIlIG5kXCJcbiAgfCBJbnRfaSB8IEludF9DaSAtPiBcIiVuaVwiIHwgSW50X3BpIC0+IFwiJStuaVwiIHwgSW50X3NpIC0+IFwiJSBuaVwiXG4gIHwgSW50X3ggLT4gXCIlbnhcIiB8IEludF9DeCAtPiBcIiUjbnhcIlxuICB8IEludF9YIC0+IFwiJW5YXCIgfCBJbnRfQ1ggLT4gXCIlI25YXCJcbiAgfCBJbnRfbyAtPiBcIiVub1wiIHwgSW50X0NvIC0+IFwiJSNub1wiXG4gIHwgSW50X3UgfCBJbnRfQ3UgLT4gXCIlbnVcIlxuXG4oKiBHZW5lcmF0ZSB0aGUgZm9ybWF0X2Zsb2F0IGZpcnN0IGFyZ3VtZW50IGZyb20gYSBmbG9hdF9jb252LiAqKVxubGV0IGZvcm1hdF9vZl9mY29udiBmY29udiBwcmVjID1cbiAgICBsZXQgcHJlYyA9IGFicyBwcmVjIGluXG4gICAgbGV0IHN5bWIgPSBjaGFyX29mX2Zjb252IH5jRjonZycgZmNvbnYgaW5cbiAgICBsZXQgYnVmID0gYnVmZmVyX2NyZWF0ZSAxNiBpblxuICAgIGJ1ZmZlcl9hZGRfY2hhciBidWYgJyUnO1xuICAgIGJwcmludF9mY29udl9mbGFnIGJ1ZiBmY29udjtcbiAgICBidWZmZXJfYWRkX2NoYXIgYnVmICcuJztcbiAgICBidWZmZXJfYWRkX3N0cmluZyBidWYgKEludC50b19zdHJpbmcgcHJlYyk7XG4gICAgYnVmZmVyX2FkZF9jaGFyIGJ1ZiBzeW1iO1xuICAgIGJ1ZmZlcl9jb250ZW50cyBidWZcblxubGV0IHRyYW5zZm9ybV9pbnRfYWx0IGljb252IHMgPVxuICBtYXRjaCBpY29udiB3aXRoXG4gIHwgSW50X0NkIHwgSW50X0NpIHwgSW50X0N1IC0+XG4gICAgbGV0IGRpZ2l0cyA9XG4gICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICB8ICcwJy4uJzknIC0+IGluY3IgblxuICAgICAgICB8IF8gLT4gKClcbiAgICAgIGRvbmU7XG4gICAgICAhblxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzICsgKGRpZ2l0cyAtIDEpIC8gMykgaW5cbiAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICBsZXQgcHV0IGMgPSBCeXRlcy5zZXQgYnVmICFwb3MgYzsgaW5jciBwb3MgaW5cbiAgICBsZXQgbGVmdCA9IHJlZiAoKGRpZ2l0cyAtIDEpIG1vZCAzICsgMSkgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJzAnLi4nOScgYXMgYyAtPlxuICAgICAgICAgIGlmICFsZWZ0ID0gMCB0aGVuIChwdXQgJ18nOyBsZWZ0IDo9IDMpOyBkZWNyIGxlZnQ7IHB1dCBjXG4gICAgICB8IGMgLT4gcHV0IGNcbiAgICBkb25lO1xuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gIHwgXyAtPiBzXG5cbigqIENvbnZlcnQgYW4gaW50ZWdlciB0byBhIHN0cmluZyBhY2NvcmRpbmcgdG8gYSBjb252ZXJzaW9uLiAqKVxubGV0IGNvbnZlcnRfaW50IGljb252IG4gPVxuICB0cmFuc2Zvcm1faW50X2FsdCBpY29udiAoZm9ybWF0X2ludCAoZm9ybWF0X29mX2ljb252IGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50MzIgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50MzIgKGZvcm1hdF9vZl9pY29udmwgaWNvbnYpIG4pXG5sZXQgY29udmVydF9uYXRpdmVpbnQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfbmF0aXZlaW50IChmb3JtYXRfb2ZfaWNvbnZuIGljb252KSBuKVxubGV0IGNvbnZlcnRfaW50NjQgaWNvbnYgbiA9XG4gIHRyYW5zZm9ybV9pbnRfYWx0IGljb252IChmb3JtYXRfaW50NjQgKGZvcm1hdF9vZl9pY29udkwgaWNvbnYpIG4pXG5cbigqIENvbnZlcnQgYSBmbG9hdCB0byBzdHJpbmcuICopXG4oKiBGaXggc3BlY2lhbCBjYXNlIG9mIFwiT0NhbWwgZmxvYXQgZm9ybWF0XCIuICopXG5sZXQgY29udmVydF9mbG9hdCBmY29udiBwcmVjIHggPVxuICBsZXQgaGV4ICgpID1cbiAgICBsZXQgc2lnbiA9XG4gICAgICBtYXRjaCBmc3QgZmNvbnYgd2l0aFxuICAgICAgfCBGbG9hdF9mbGFnX3AgLT4gJysnXG4gICAgICB8IEZsb2F0X2ZsYWdfcyAtPiAnICdcbiAgICAgIHwgXyAtPiAnLScgaW5cbiAgICBoZXhzdHJpbmdfb2ZfZmxvYXQgeCBwcmVjIHNpZ24gaW5cbiAgbGV0IGFkZF9kb3RfaWZfbmVlZGVkIHN0ciA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBpc192YWxpZCBpID1cbiAgICAgIGlmIGkgPSBsZW4gdGhlbiBmYWxzZSBlbHNlXG4gICAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgICB8ICcuJyB8ICdlJyB8ICdFJyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBpc192YWxpZCAoaSArIDEpIGluXG4gICAgaWYgaXNfdmFsaWQgMCB0aGVuIHN0ciBlbHNlIHN0ciBeIFwiLlwiIGluXG4gIGxldCBjYW1sX3NwZWNpYWxfdmFsIHN0ciA9IG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfemVybyAtPiBzdHJcbiAgICB8IEZQX2luZmluaXRlIC0+IGlmIHggPCAwLjAgdGhlbiBcIm5lZ19pbmZpbml0eVwiIGVsc2UgXCJpbmZpbml0eVwiXG4gICAgfCBGUF9uYW4gLT4gXCJuYW5cIiBpblxuICBtYXRjaCBzbmQgZmNvbnYgd2l0aFxuICB8IEZsb2F0X2ggLT4gaGV4ICgpXG4gIHwgRmxvYXRfSCAtPiBTdHJpbmcudXBwZXJjYXNlX2FzY2lpIChoZXggKCkpXG4gIHwgRmxvYXRfQ0YgLT4gY2FtbF9zcGVjaWFsX3ZhbCAoaGV4ICgpKVxuICB8IEZsb2F0X0YgLT5cbiAgICBsZXQgc3RyID0gZm9ybWF0X2Zsb2F0IChmb3JtYXRfb2ZfZmNvbnYgZmNvbnYgcHJlYykgeCBpblxuICAgIGNhbWxfc3BlY2lhbF92YWwgKGFkZF9kb3RfaWZfbmVlZGVkIHN0cilcbiAgfCBGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRyAtPlxuICAgIGZvcm1hdF9mbG9hdCAoZm9ybWF0X29mX2Zjb252IGZjb252IHByZWMpIHhcblxuKCogQ29udmVydCBhIGNoYXIgdG8gYSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24uICopXG5sZXQgZm9ybWF0X2NhbWxfY2hhciBjID1cbiAgbGV0IHN0ciA9IENoYXIuZXNjYXBlZCBjIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLm1ha2UgKGwgKyAyKSAnXFwnJyBpblxuICBTdHJpbmcudW5zYWZlX2JsaXQgc3RyIDAgcmVzIDEgbDtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXNcblxuKCogQ29udmVydCBhIGZvcm1hdCB0eXBlIHRvIHN0cmluZyAqKVxubGV0IHN0cmluZ19vZl9mbXR0eSBmbXR0eSA9XG4gIGxldCBidWYgPSBidWZmZXJfY3JlYXRlIDE2IGluXG4gIGJwcmludF9mbXR0eSBidWYgZm10dHk7XG4gIGJ1ZmZlcl9jb250ZW50cyBidWZcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24gKilcblxuKCogTWFrZSBhIGdlbmVyaWMgcHJpbnRpbmcgZnVuY3Rpb24uICopXG4oKiBVc2VkIHRvIGdlbmVyYXRlIFByaW50ZiBhbmQgRm9ybWF0IHByaW50aW5nIGZ1bmN0aW9ucy4gKilcbigqIFBhcmFtZXRlcnM6XG4gICAgIGs6IGEgY29udGludWF0aW9uIGZpbmFsbHkgYXBwbGllZCB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgdGhlIGFjY3VtdWxhdG9yLlxuICAgICBvOiB0aGUgb3V0cHV0IHN0cmVhbSAoc2VlIGssICVhIGFuZCAldCkuXG4gICAgIGFjYzogcmV2IGxpc3Qgb2YgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1c2gsIGZvcm1hdHRpbmcsIC4uLikuXG4gICAgIGZtdDogdGhlIGZvcm1hdC4gKilcbmxldCByZWMgbWFrZV9wcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBmdW4gYyAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9jaGFyIChhY2MsIGMpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgcmVzdFxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgZnVuIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIGZvcm1hdF9jYW1sX2NoYXIgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbWFrZV9wYWRkaW5nIGsgYWNjIHJlc3QgcGFkIChmdW4gc3RyIC0+IHN0cilcbiAgfCBDYW1sX3N0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfdG9fY2FtbF9zdHJpbmdcbiAgfCBJbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludCBpY29udlxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIGsgYWNjIHJlc3QgcGFkIHByZWMgY29udmVydF9pbnQzMiBpY29udlxuICB8IE5hdGl2ZWludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBtYWtlX2ludF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGNvbnZlcnRfbmF0aXZlaW50IGljb252XG4gIHwgSW50NjQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gayBhY2MgcmVzdCBwYWQgcHJlYyBjb252ZXJ0X2ludDY0IGljb252XG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbWFrZV9mbG9hdF9wYWRkaW5nX3ByZWNpc2lvbiBrIGFjYyByZXN0IHBhZCBwcmVjIGZjb252XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIG1ha2VfcGFkZGluZyBrIGFjYyByZXN0IHBhZCBzdHJpbmdfb2ZfYm9vbFxuICB8IEFscGhhIHJlc3QgLT5cbiAgICBmdW4gZiB4IC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kZWxheSAoYWNjLCBmdW4gbyAtPiBmIG8geCkpIHJlc3RcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgZnVuIGYgLT4gbWFrZV9wcmludGYgayAoQWNjX2RlbGF5IChhY2MsIGYpKSByZXN0XG4gIHwgQ3VzdG9tIChhcml0eSwgZiwgcmVzdCkgLT5cbiAgICBtYWtlX2N1c3RvbSBrIGFjYyByZXN0IGFyaXR5IChmICgpKVxuICB8IFJlYWRlciBfIC0+XG4gICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAqKVxuICAgICgqIEluZGVlZCwgc2luY2UgcHJpbnRmIGFuZCBjby4gdGFrZSBhIGZvcm1hdDQgYXMgYXJndW1lbnQsIHRoZSAnZCBhbmQgJ2VcbiAgICAgICB0eXBlIHBhcmFtZXRlcnMgb2YgZm10IGFyZSBvYnZpb3VzbHkgZXF1YWxzLiBUaGUgUmVhZGVyIGlzIHRoZVxuICAgICAgIG9ubHkgY29uc3RydWN0b3Igd2hpY2ggdG91Y2ggJ2QgYW5kICdlIHR5cGUgcGFyYW1ldGVycyBvZiB0aGUgZm9ybWF0XG4gICAgICAgdHlwZSwgaXQgYWRkcyBhbiAoLT4pIHRvIHRoZSAnZCBwYXJhbWV0ZXJzLiBDb25zZXF1ZW50bHksIGEgZm9ybWF0NFxuICAgICAgIGNhbm5vdCBjb250YWluIGEgUmVhZGVyIG5vZGUsIGV4Y2VwdCBpbiB0aGUgc3ViLWZvcm1hdCBhc3NvY2lhdGVkIHRvXG4gICAgICAgYW4gJXsuLi4lfS4gSXQncyBub3QgYSBwcm9ibGVtIGJlY2F1c2UgbWFrZV9wcmludGYgZG8gbm90IGNhbGxcbiAgICAgICBpdHNlbGYgcmVjdXJzaXZlbHkgb24gdGhlIHN1Yi1mb3JtYXQgYXNzb2NpYXRlZCB0byAley4uLiV9LiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBtYWtlX3ByaW50ZiBrIChBY2NfZmx1c2ggYWNjKSByZXN0XG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIG1ha2VfcHJpbnRmIGsgKEFjY19zdHJpbmdfbGl0ZXJhbCAoYWNjLCBzdHIpKSByZXN0XG4gIHwgQ2hhcl9saXRlcmFsIChjaHIsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2NoYXJfbGl0ZXJhbCAoYWNjLCBjaHIpKSByZXN0XG5cbiAgfCBGb3JtYXRfYXJnIChfLCBzdWJfZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gc3RyaW5nX29mX2ZtdHR5IHN1Yl9mbXR0eSBpblxuICAgIChmdW4gc3RyIC0+XG4gICAgICBpZ25vcmUgc3RyO1xuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHR5KSkgcmVzdClcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAtPlxuICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPiBtYWtlX3ByaW50ZiBrIGFjY1xuICAgICAgKGNvbmNhdF9mbXQgKHJlY2FzdCBmbXQgZm10dHkpIHJlc3QpXG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAtPlxuICAgIGxldCBuZXdfYWNjID0gQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlW1wiKSBpblxuICAgIGZ1biBfIC0+IG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgLT5cbiAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIGJlIHJlZnVzZWQgZm9yIFByaW50Zi4gKilcbiAgICAoKiBBY2NlcHRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gKilcbiAgICAoKiBJbnRlcnByZXQgJWwsICVuIGFuZCAlTCBhcyAldS4gKilcbiAgICBmdW4gbiAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZm9ybWF0X2ludCBcIiV1XCIgbikgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAtPlxuICAgIGZ1biBjIC0+XG4gICAgICBsZXQgbmV3X2FjYyA9IEFjY19kYXRhX2NoYXIgKGFjYywgYykgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgbmV3X2FjYyByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIG1ha2VfaWdub3JlZF9wYXJhbSBrIGFjYyBpZ24gcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpIC0+XG4gICAgbWFrZV9wcmludGYgayAoQWNjX2Zvcm1hdHRpbmdfbGl0IChhY2MsIGZtdGluZ19saXQpKSByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fdGFnIGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBsZXQgaycga2FjYyA9XG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZm9ybWF0dGluZ19nZW4gKGFjYywgQWNjX29wZW5fYm94IGthY2MpKSByZXN0IGluXG4gICAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXQnXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgayBhY2NcblxuKCogRGVsYXkgdGhlIGVycm9yIChJbnZhbGlkX2FyZ3VtZW50IFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKS4gKilcbigqIEdlbmVyYXRlIGZ1bmN0aW9ucyB0byB0YWtlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFmdGVyIHRoZSBcIiVfXCIpLiAqKVxuYW5kIG1ha2VfaWdub3JlZF9wYXJhbSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGlnbm9yZWQgLT5cbiAgICAoeCwgYiwgYywgeSwgZSwgZikgZm10IC0+IGEgPVxuZnVuIGsgYWNjIGlnbiBmbXQgLT4gbWF0Y2ggaWduIHdpdGhcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc3RyaW5nIF8gICAgICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfaW50MzIgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZmxvYXQgKF8sIF8pICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfZm9ybWF0X3N1YnN0IChfLCBmbXR0eSkgLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIGZtdHR5IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyICAgICAgICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiBtYWtlX2ludmFsaWRfYXJnIGsgYWNjIGZtdFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBfICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IG1ha2VfaW52YWxpZF9hcmcgayBhY2MgZm10XG5cblxuKCogU3BlY2lhbCBjYXNlIG9mIHByaW50ZiBcIiVfKFwiLiAqKVxuYW5kIG1ha2VfZnJvbV9mbXR0eSA6IHR5cGUgeCB5IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIHksIHgpIGZtdHR5IC0+XG4gICAgKHgsIGIsIGMsIHksIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IENoYXJfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDMyX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEZsb2F0X3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgIC0+IGZ1biBfIC0+IG1ha2VfZnJvbV9mbXR0eSBrIGFjYyByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgIC0+IGZ1biBfIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgUmVhZGVyX3R5IF8gICAgICAgICAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgXyAgICAgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgRm9ybWF0X2FyZ190eSAoXywgcmVzdCkgLT4gZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgLT4gbWFrZV9pbnZhbGlkX2FyZyBrIGFjYyBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgZnVuIF8gLT4gbWFrZV9mcm9tX2ZtdHR5IGsgYWNjIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIEluc2VydCBhbiBBY2NfaW52YWxpZF9hcmcgaW4gdGhlIGFjY3VtdWxhdG9yIGFuZCBjb250aW51ZSB0byBnZW5lcmF0ZVxuICAgY2xvc3VyZXMgdG8gZ2V0IHRoZSByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuYW5kIG1ha2VfaW52YWxpZF9hcmcgOiB0eXBlIGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbmZ1biBrIGFjYyBmbXQgLT5cbiAgbWFrZV9wcmludGYgayAoQWNjX2ludmFsaWRfYXJnIChhY2MsIFwiUHJpbnRmOiBiYWQgY29udmVyc2lvbiAlX1wiKSkgZm10XG5cbigqIEZpeCBwYWRkaW5nLCB0YWtlIGl0IGFzIGFuIGV4dHJhIGludGVnZXIgYXJndW1lbnQgaWYgbmVlZGVkLiAqKVxuYW5kIG1ha2VfcGFkZGluZyA6IHR5cGUgeCB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB6IC0+IGEpIHBhZGRpbmcgLT4gKHogLT4gc3RyaW5nKSAtPiB4ID1cbiAgZnVuIGsgYWNjIGZtdCBwYWQgdHJhbnMgLT4gbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBuZXdfYWNjID0gQWNjX2RhdGFfc3RyaW5nIChhY2MsIHRyYW5zIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3aWR0aCkgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgd2lkdGggKHRyYW5zIHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayBuZXdfYWNjIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5IC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IG5ld19hY2MgPSBBY2NfZGF0YV9zdHJpbmcgKGFjYywgZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIG5ld19hY2MgZm10XG5cbigqIEZpeCBwYWRkaW5nIGFuZCBwcmVjaXNpb24gZm9yIGludCwgaW50MzIsIG5hdGl2ZWludCBvciBpbnQ2NC4gKilcbigqIFRha2Ugb25lIG9yIHR3byBleHRyYSBpbnRlZ2VyIGFyZ3VtZW50cyBpZiBuZWVkZWQuICopXG5hbmQgbWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24gOiB0eXBlIHggeSB6IGEgYiBjIGQgZSBmIC5cbiAgICAoKGIsIGMpIGFjYyAtPiBmKSAtPiAoYiwgYykgYWNjIC0+XG4gICAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiAoaW50X2NvbnYgLT4geiAtPiBzdHJpbmcpIC0+XG4gICAgaW50X2NvbnYgLT4geCA9XG4gIGZ1biBrIGFjYyBmbXQgcGFkIHByZWMgdHJhbnMgaWNvbnYgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgfCBOb19wYWRkaW5nLCBOb19wcmVjaXNpb24gLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IHRyYW5zIGljb252IHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGZ1biBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAodHJhbnMgaWNvbnYgeCkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGZpeF9pbnRfcHJlY2lzaW9uIHAgKHRyYW5zIGljb252IHgpKSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3ICh0cmFucyBpY29udiB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4gdyB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoZml4X2ludF9wcmVjaXNpb24gcCAodHJhbnMgaWNvbnYgeCkpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gdyBwIHggLT5cbiAgICAgIGxldCBzdHIgPSBmaXhfcGFkZGluZyBwYWR0eSB3IChmaXhfaW50X3ByZWNpc2lvbiBwICh0cmFucyBpY29udiB4KSkgaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcblxuKCogQ29udmVydCBhIGZsb2F0LCBmaXggcGFkZGluZyBhbmQgcHJlY2lzaW9uIGlmIG5lZWRlZC4gKilcbigqIFRha2UgdGhlIGZsb2F0IGFyZ3VtZW50IGFuZCBvbmUgb3IgdHdvIGV4dHJhIGludGVnZXIgYXJndW1lbnRzIGlmIG5lZWRlZC4gKilcbmFuZCBtYWtlX2Zsb2F0X3BhZGRpbmdfcHJlY2lzaW9uIDogdHlwZSB4IHkgYSBiIGMgZCBlIGYgLlxuICAgICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHksIGZsb2F0IC0+IGEpIHByZWNpc2lvbiAtPiBmbG9hdF9jb252IC0+IHggPVxuICBmdW4gayBhY2MgZm10IHBhZCBwcmVjIGZjb252IC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgc3RyID0gY29udmVydF9mbG9hdCBmY29udiBwIHggaW5cbiAgICAgIG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBzdHIpKSBmbXRcbiAgfCBOb19wYWRkaW5nLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHAgeCAtPlxuICAgICAgbGV0IHN0ciA9IGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4IGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgTGl0X3BhZGRpbmcgKHBhZHR5LCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBMaXRfcGFkZGluZyAocGFkdHksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IExpdF9wYWRkaW5nIChwYWR0eSwgdyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBmdW4gcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG4gIHwgQXJnX3BhZGRpbmcgcGFkdHksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGZ1biB3IHggLT5cbiAgICAgIGxldCBzdHIgPSBjb252ZXJ0X2Zsb2F0IGZjb252IChkZWZhdWx0X2Zsb2F0X3ByZWNpc2lvbiBmY29udikgeCBpblxuICAgICAgbGV0IHN0cicgPSBmaXhfcGFkZGluZyBwYWR0eSB3IHN0ciBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cicpKSBmbXRcbiAgfCBBcmdfcGFkZGluZyBwYWR0eSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgZnVuIHcgeCAtPlxuICAgICAgbGV0IHN0ciA9IGZpeF9wYWRkaW5nIHBhZHR5IHcgKGNvbnZlcnRfZmxvYXQgZmNvbnYgcCB4KSBpblxuICAgICAgbWFrZV9wcmludGYgayAoQWNjX2RhdGFfc3RyaW5nIChhY2MsIHN0cikpIGZtdFxuICB8IEFyZ19wYWRkaW5nIHBhZHR5LCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgZnVuIHcgcCB4IC0+XG4gICAgICBsZXQgc3RyID0gZml4X3BhZGRpbmcgcGFkdHkgdyAoY29udmVydF9mbG9hdCBmY29udiBwIHgpIGluXG4gICAgICBtYWtlX3ByaW50ZiBrIChBY2NfZGF0YV9zdHJpbmcgKGFjYywgc3RyKSkgZm10XG5hbmQgbWFrZV9jdXN0b20gOiB0eXBlIHggeSBhIGIgYyBkIGUgZiAuXG4gICgoYiwgYykgYWNjIC0+IGYpIC0+IChiLCBjKSBhY2MgLT5cbiAgKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAoYSwgeCwgeSkgY3VzdG9tX2FyaXR5IC0+IHggLT4geSA9XG4gIGZ1biBrIGFjYyByZXN0IGFyaXR5IGYgLT4gbWF0Y2ggYXJpdHkgd2l0aFxuICB8IEN1c3RvbV96ZXJvIC0+IG1ha2VfcHJpbnRmIGsgKEFjY19kYXRhX3N0cmluZyAoYWNjLCBmKSkgcmVzdFxuICB8IEN1c3RvbV9zdWNjIGFyaXR5IC0+XG4gICAgZnVuIHggLT5cbiAgICAgIG1ha2VfY3VzdG9tIGsgYWNjIHJlc3QgYXJpdHkgKGYgeClcblxubGV0IGNvbnN0IHggXyA9IHhcblxubGV0IHJlYyBtYWtlX2lwcmludGYgOiB0eXBlIGEgYiBjIGQgZSBmIHN0YXRlLlxuICAoc3RhdGUgLT4gZikgLT4gc3RhdGUgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdCAtPiBhID1cbiAgZnVuIGsgbyBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgICB8IENoYXIgcmVzdCAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KVxuICAgIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFN0cmluZyAoQXJnX3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpKVxuICAgIHwgQ2FtbF9zdHJpbmcgKE5vX3BhZGRpbmcsIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBDYW1sX3N0cmluZyAoTGl0X3BhZGRpbmcgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IENhbWxfc3RyaW5nIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBJbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDMyIChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBOYXRpdmVpbnQgKF8sIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICAgICAgZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24gayBvIHJlc3QgcGFkIHByZWNcbiAgICB8IEludDY0IChfLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX3BhZGRpbmdfcHJlY2lzaW9uIGsgbyByZXN0IHBhZCBwcmVjXG4gICAgfCBGbG9hdCAoXywgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgICAgICBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiBrIG8gcmVzdCBwYWQgcHJlY1xuICAgIHwgQm9vbCAoTm9fcGFkZGluZywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEJvb2wgKExpdF9wYWRkaW5nIF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBCb29sIChBcmdfcGFkZGluZyBfLCByZXN0KSAtPlxuICAgICAgICBjb25zdCAoY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdCkpXG4gICAgfCBBbHBoYSByZXN0IC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyByZXN0KSlcbiAgICB8IFRoZXRhIHJlc3QgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEN1c3RvbSAoYXJpdHksIF8sIHJlc3QpIC0+XG4gICAgICAgIGZuX29mX2N1c3RvbV9hcml0eSBrIG8gcmVzdCBhcml0eVxuICAgIHwgUmVhZGVyIF8gLT5cbiAgICAgICAgKCogVGhpcyBjYXNlIGlzIGltcG9zc2libGUsIGJ5IHR5cGluZyBvZiBmb3JtYXRzLiAgU2VlIHRoZVxuICAgICAgICAgICBub3RlIGluIHRoZSBjb3JyZXNwb25kaW5nIGNhc2UgZm9yIG1ha2VfcHJpbnRmLiAqKVxuICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICB8IEZsdXNoIHJlc3QgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgLT5cbiAgICAgICAgbWFrZV9pcHJpbnRmIGsgbyByZXN0XG4gICAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gcmVzdFxuICAgIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IEZvcm1hdF9zdWJzdCAoXywgZm10dHksIHJlc3QpIC0+XG4gICAgICAgIGZ1biAoRm9ybWF0IChmbXQsIF8pKSAtPlxuICAgICAgICAgIG1ha2VfaXByaW50ZiBrIG9cbiAgICAgICAgICAgIChjb25jYXRfZm10IChyZWNhc3QgZm10IGZtdHR5KSByZXN0KVxuICAgIHwgU2Nhbl9jaGFyX3NldCAoXywgXywgcmVzdCkgLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gcmVzdClcbiAgICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIHJlc3QpXG4gICAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaWdub3JlZF9wYXJhbSAoZnVuIF8gLT4gayBvKSAoRW5kX29mX2FjYykgaWduIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgayBvIHJlc3RcbiAgICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiAoZnVuIGtvYyAtPiBtYWtlX2lwcmludGYgayBrb2MgcmVzdCkgbyBmbXQnXG4gICAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgICAgICBtYWtlX2lwcmludGYgKGZ1biBrb2MgLT4gbWFrZV9pcHJpbnRmIGsga29jIHJlc3QpIG8gZm10J1xuICAgIHwgRW5kX29mX2Zvcm1hdCAtPlxuICAgICAgICBrIG9cbmFuZCBmbl9vZl9wYWRkaW5nX3ByZWNpc2lvbiA6XG4gIHR5cGUgeCB5IHogYSBiIGMgZCBlIGYgc3RhdGUuXG4gIChzdGF0ZSAtPiBmKSAtPiBzdGF0ZSAtPiAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPiB4ID1cbiAgZnVuIGsgbyBmbXQgcGFkIHByZWMgLT4gbWF0Y2ggcGFkLCBwcmVjIHdpdGhcbiAgICB8IE5vX3BhZGRpbmcgICAsIE5vX3ByZWNpc2lvbiAgICAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBOb19wYWRkaW5nICAgLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKG1ha2VfaXByaW50ZiBrIG8gZm10KVxuICAgIHwgTm9fcGFkZGluZyAgICwgQXJnX3ByZWNpc2lvbiAgIC0+XG4gICAgICAgIGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKVxuICAgIHwgTGl0X3BhZGRpbmcgXywgTm9fcHJlY2lzaW9uICAgIC0+XG4gICAgICAgIGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdClcbiAgICB8IExpdF9wYWRkaW5nIF8sIExpdF9wcmVjaXNpb24gXyAtPlxuICAgICAgICBjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpXG4gICAgfCBMaXRfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBOb19wcmVjaXNpb24gICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBMaXRfcHJlY2lzaW9uIF8gLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChtYWtlX2lwcmludGYgayBvIGZtdCkpXG4gICAgfCBBcmdfcGFkZGluZyBfLCBBcmdfcHJlY2lzaW9uICAgLT5cbiAgICAgICAgY29uc3QgKGNvbnN0IChjb25zdCAobWFrZV9pcHJpbnRmIGsgbyBmbXQpKSlcbmFuZCBmbl9vZl9jdXN0b21fYXJpdHkgOiB0eXBlIHggeSBhIGIgYyBkIGUgZiBzdGF0ZS5cbiAgKHN0YXRlIC0+IGYpIC0+XG4gIHN0YXRlIC0+IChhLCBiLCBjLCBkLCBlLCBmKSBmbXQgLT4gKGEsIHgsIHkpIGN1c3RvbV9hcml0eSAtPiB5ID1cbiAgZnVuIGsgbyBmbXQgLT4gZnVuY3Rpb25cbiAgICB8IEN1c3RvbV96ZXJvIC0+XG4gICAgICAgIG1ha2VfaXByaW50ZiBrIG8gZm10XG4gICAgfCBDdXN0b21fc3VjYyBhcml0eSAtPlxuICAgICAgICBjb25zdCAoZm5fb2ZfY3VzdG9tX2FyaXR5IGsgbyBmbXQgYXJpdHkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIENvbnRpbnVhdGlvbnMgZm9yIG1ha2VfcHJpbnRmICopXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgbWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgbyBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZm10aW5nX2xpdCkgLT5cbiAgICBsZXQgcyA9IHN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkB7XCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBcIkBbXCI7IG91dHB1dF9hY2MgbyBhY2MnO1xuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9zdHJpbmcgbyBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gb3V0cHV0X2FjYyBvIHA7IG91dHB1dF9jaGFyIG8gY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIG8gcDsgZiBvXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IG91dHB1dF9hY2MgbyBwOyBmbHVzaCBvXG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgbyBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBVc2VkIGFzIGEgY29udGludWF0aW9uIG9mIG1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBidWZwdXRfYWNjIGIgYWNjID0gbWF0Y2ggYWNjIHdpdGhcbiAgfCBBY2NfZm9ybWF0dGluZ19saXQgKHAsIGZtdGluZ19saXQpIC0+XG4gICAgbGV0IHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfZ2VuIChwLCBBY2Nfb3Blbl90YWcgYWNjJykgLT5cbiAgICBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIkB7XCI7IGJ1ZnB1dF9hY2MgYiBhY2MnO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgYnVmcHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAW1wiOyBidWZwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IGJ1ZnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBidWZwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBidWZwdXRfYWNjIGIgcDsgZiBiXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IGJ1ZnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBidWZwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGEgYnVmZmVyLiAqKVxuKCogRGlmZmVyIGZyb20gYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJWEgYW5kICV0LiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBtYWtlX3ByaW50Zi4gKilcbmxldCByZWMgc3RycHV0X2FjYyBiIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmbXRpbmdfbGl0KSAtPlxuICAgIGxldCBzID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZ19saXQgaW5cbiAgICBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJAe1wiOyBzdHJwdXRfYWNjIGIgYWNjJztcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgYiBwOyBCdWZmZXIuYWRkX3N0cmluZyBiIFwiQFtcIjsgc3RycHV0X2FjYyBiIGFjYyc7XG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChwLCBzKVxuICB8IEFjY19kYXRhX3N0cmluZyAocCwgcykgICAtPiBzdHJwdXRfYWNjIGIgcDsgQnVmZmVyLmFkZF9zdHJpbmcgYiBzXG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAocCwgYylcbiAgfCBBY2NfZGF0YV9jaGFyIChwLCBjKSAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgfCBBY2NfZGVsYXkgKHAsIGYpICAgICAgICAgLT4gc3RycHV0X2FjYyBiIHA7IEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGYgKCkpXG4gIHwgQWNjX2ZsdXNoIHAgICAgICAgICAgICAgIC0+IHN0cnB1dF9hY2MgYiBwO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIGIgcDsgaW52YWxpZF9hcmcgbXNnO1xuICB8IEVuZF9vZl9hY2MgICAgICAgICAgICAgICAtPiAoKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBFcnJvciBtYW5hZ2VtZW50ICopXG5cbigqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgcHJldHR5LXByaW50ZWQgZXJyb3IgbWVzc2FnZS4gKilcbmxldCBmYWlsd2l0aF9tZXNzYWdlIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMjU2IGluXG4gIGxldCBrIGFjYyA9IHN0cnB1dF9hY2MgYnVmIGFjYzsgZmFpbHdpdGggKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXR0aW5nIHRvb2xzICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYW4gb3BlbiBibG9jayBkZXNjcmlwdGlvbiAoaW5kZW50LCBibG9ja190eXBlKSAqKVxubGV0IG9wZW5fYm94X29mX3N0cmluZyBzdHIgPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gKDAsIFBwX2JveCkgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGxldCBpbnZhbGlkX2JveCAoKSA9IGZhaWx3aXRoX21lc3NhZ2UgXCJpbnZhbGlkIGJveCBkZXNjcmlwdGlvbiAlU1wiIHN0ciBpblxuICAgIGxldCByZWMgcGFyc2Vfc3BhY2VzIGkgPVxuICAgICAgaWYgaSA9IGxlbiB0aGVuIGkgZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFx0JyAtPiBwYXJzZV9zcGFjZXMgKGkgKyAxKVxuICAgICAgICB8IF8gLT4gaVxuICAgIGFuZCBwYXJzZV9sd29yZCBpIGogPVxuICAgICAgaWYgaiA9IGxlbiB0aGVuIGogZWxzZVxuICAgICAgICBtYXRjaCBzdHIuW2pdIHdpdGhcbiAgICAgICAgfCAnYScgLi4gJ3onIC0+IHBhcnNlX2x3b3JkIGkgKGogKyAxKVxuICAgICAgICB8IF8gLT4galxuICAgIGFuZCBwYXJzZV9pbnQgaSBqID1cbiAgICAgIGlmIGogPSBsZW4gdGhlbiBqIGVsc2VcbiAgICAgICAgbWF0Y2ggc3RyLltqXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPiBwYXJzZV9pbnQgaSAoaiArIDEpXG4gICAgICAgIHwgXyAtPiBqIGluXG4gICAgbGV0IHdzdGFydCA9IHBhcnNlX3NwYWNlcyAwIGluXG4gICAgbGV0IHdlbmQgPSBwYXJzZV9sd29yZCB3c3RhcnQgd3N0YXJ0IGluXG4gICAgbGV0IGJveF9uYW1lID0gU3RyaW5nLnN1YiBzdHIgd3N0YXJ0ICh3ZW5kIC0gd3N0YXJ0KSBpblxuICAgIGxldCBuc3RhcnQgPSBwYXJzZV9zcGFjZXMgd2VuZCBpblxuICAgIGxldCBuZW5kID0gcGFyc2VfaW50IG5zdGFydCBuc3RhcnQgaW5cbiAgICBsZXQgaW5kZW50ID1cbiAgICAgIGlmIG5zdGFydCA9IG5lbmQgdGhlbiAwIGVsc2VcbiAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgKFN0cmluZy5zdWIgc3RyIG5zdGFydCAobmVuZCAtIG5zdGFydCkpXG4gICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IGludmFsaWRfYm94ICgpIGluXG4gICAgbGV0IGV4cF9lbmQgPSBwYXJzZV9zcGFjZXMgbmVuZCBpblxuICAgIGlmIGV4cF9lbmQgPD4gbGVuIHRoZW4gaW52YWxpZF9ib3ggKCk7XG4gICAgbGV0IGJveF90eXBlID0gbWF0Y2ggYm94X25hbWUgd2l0aFxuICAgICAgfCBcIlwiIHwgXCJiXCIgLT4gUHBfYm94XG4gICAgICB8IFwiaFwiICAgICAgLT4gUHBfaGJveFxuICAgICAgfCBcInZcIiAgICAgIC0+IFBwX3Zib3hcbiAgICAgIHwgXCJodlwiICAgICAtPiBQcF9odmJveFxuICAgICAgfCBcImhvdlwiICAgIC0+IFBwX2hvdmJveFxuICAgICAgfCBfICAgICAgICAtPiBpbnZhbGlkX2JveCAoKSBpblxuICAgIChpbmRlbnQsIGJveF90eXBlKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFBhcnNpbmcgdG9vbHMgKilcblxuKCogQ3JlYXRlIGEgcGFkZGluZ19mbXRfZWJiIGZyb20gYSBwYWRkaW5nIGFuZCBhIGZvcm1hdC4gKilcbigqIENvcHkgdGhlIHBhZGRpbmcgdG8gZGlzam9pbiB0aGUgdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50IGFuZCByZXN1bHQuICopXG5sZXQgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKF8sIF8sIF8sIF8sIF8sIF8pIGZtdCAtPlxuICAgICAgKF8sIF8sIF8sIF8sIF8pIHBhZGRpbmdfZm10X2ViYiA9XG5mdW4gcGFkIGZtdCAtPiBtYXRjaCBwYWQgd2l0aFxuICB8IE5vX3BhZGRpbmcgICAgICAgICAtPiBQYWRkaW5nX2ZtdF9FQkIgKE5vX3BhZGRpbmcsIGZtdClcbiAgfCBMaXRfcGFkZGluZyAocywgdykgLT4gUGFkZGluZ19mbXRfRUJCIChMaXRfcGFkZGluZyAocywgdyksIGZtdClcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkZGluZ19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBmbXQpXG5cbigqIENyZWF0ZSBhIHByZWNpc2lvbl9mbXRfZWJiIGZyb20gYSBwcmVjaXNpb24gYW5kIGEgZm9ybWF0LiAqKVxuKCogQ29weSB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdGhlIHR5cGUgcGFyYW1ldGVycyBvZiBhcmd1bWVudCBhbmQgcmVzdWx0LiAqKVxubGV0IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgOiB0eXBlIHggeSAuXG4gICAgKHgsIHkpIHByZWNpc2lvbiAtPiAoXywgXywgXywgXywgXywgXykgZm10IC0+XG4gICAgICAoXywgXywgXywgXywgXykgcHJlY2lzaW9uX2ZtdF9lYmIgPVxuZnVuIHByZWMgZm10IC0+IG1hdGNoIHByZWMgd2l0aFxuICB8IE5vX3ByZWNpc2lvbiAgICAtPiBQcmVjaXNpb25fZm10X0VCQiAoTm9fcHJlY2lzaW9uLCBmbXQpXG4gIHwgTGl0X3ByZWNpc2lvbiBwIC0+IFByZWNpc2lvbl9mbXRfRUJCIChMaXRfcHJlY2lzaW9uIHAsIGZtdClcbiAgfCBBcmdfcHJlY2lzaW9uICAgLT4gUHJlY2lzaW9uX2ZtdF9FQkIgKEFyZ19wcmVjaXNpb24sIGZtdClcblxuKCogQ3JlYXRlIGEgcGFkcHJlY19mbXRfZWJiIGZyb20gYSBwYWRkaW5nLCBhIHByZWNpc2lvbiBhbmQgYSBmb3JtYXQuICopXG4oKiBDb3B5IHRoZSBwYWRkaW5nIGFuZCB0aGUgcHJlY2lzaW9uIHRvIGRpc2pvaW4gdHlwZSBwYXJhbWV0ZXJzIG9mIGFyZ3VtZW50c1xuICAgYW5kIHJlc3VsdC4gKilcbmxldCBtYWtlX3BhZHByZWNfZm10X2ViYiA6IHR5cGUgeCB5IHogdCAuXG4gICAgKHgsIHkpIHBhZGRpbmcgLT4gKHosIHQpIHByZWNpc2lvbiAtPlxuICAgIChfLCBfLCBfLCBfLCBfLCBfKSBmbXQgLT5cbiAgICAoXywgXywgXywgXywgXykgcGFkcHJlY19mbXRfZWJiID1cbmZ1biBwYWQgcHJlYyBmbXQgLT5cbiAgbGV0IFByZWNpc2lvbl9mbXRfRUJCIChwcmVjLCBmbXQnKSA9IG1ha2VfcHJlY2lzaW9uX2ZtdF9lYmIgcHJlYyBmbXQgaW5cbiAgbWF0Y2ggcGFkIHdpdGhcbiAgfCBOb19wYWRkaW5nICAgICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChOb19wYWRkaW5nLCBwcmVjLCBmbXQnKVxuICB8IExpdF9wYWRkaW5nIChzLCB3KSAtPiBQYWRwcmVjX2ZtdF9FQkIgKExpdF9wYWRkaW5nIChzLCB3KSwgcHJlYywgZm10JylcbiAgfCBBcmdfcGFkZGluZyBzICAgICAgLT4gUGFkcHJlY19mbXRfRUJCIChBcmdfcGFkZGluZyBzLCBwcmVjLCBmbXQnKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgcGFyc2luZyAqKVxuXG4oKiBQYXJzZSBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBmb3JtYXQgYW5kIGNyZWF0ZSBhIGZtdF9lYmIuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gaW4gY2FzZSBvZiBpbnZhbGlkIGZvcm1hdC4gKilcbmxldCBmbXRfZWJiX29mX3N0cmluZyA/bGVnYWN5X2JlaGF2aW9yIHN0ciA9XG4gICgqIFBhcmFtZXRlcnMgbmFtaW5nIGNvbnZlbnRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIGxpdF9zdGFydDogc3RhcnQgb2YgdGhlIGxpdGVyYWwgc2VxdWVuY2UuICAgICAgICAgICAgICAgICAgICAqKVxuICAoKiAgIC0gc3RyX2luZDogY3VycmVudCBpbmRleCBpbiB0aGUgc3RyaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBlbmRfaW5kOiBlbmQgb2YgdGhlIGN1cnJlbnQgKHN1Yi0pZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHBjdF9pbmQ6IGluZGV4IG9mIHRoZSAnJScgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAqKVxuICAoKiAgIC0gemVybzogIGlzIHRoZSAnMCcgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBtaW51czogaXMgdGhlICctJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIHBsdXM6ICBpcyB0aGUgJysnIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gaGFzaDogIGlzIHRoZSAnIycgZmxhZyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICopXG4gICgqICAgLSBzcGFjZTogaXMgdGhlICcgJyBmbGFnIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgKilcbiAgKCogICAtIGlnbjogICBpcyB0aGUgJ18nIGZsYWcgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtaWNyby1mb3JtYXQuICAqKVxuICAoKiAgIC0gcGFkOiBwYWRkaW5nIG9mIHRoZSBjdXJyZW50IG1pY3JvLWZvcm1hdC4gICAgICAgICAgICAgICAgICAgICopXG4gICgqICAgLSBwcmVjOiBwcmVjaXNpb24gb2YgdGhlIGN1cnJlbnQgbWljcm8tZm9ybWF0LiAgICAgICAgICAgICAgICAgKilcbiAgKCogICAtIHN5bWI6IGNoYXIgcmVwcmVzZW50aW5nIHRoZSBjb252ZXJzaW9uICgnYycsICdzJywgJ2QnLCAuLi4pLiAqKVxuICAoKiAgIC0gY2hhcl9zZXQ6IHNldCBvZiBjaGFyYWN0ZXJzIGFzIGJpdG1hcCAoc2VlIHNjYW5mICVbLi4uXSkuICAgICopXG5cbiAgbGV0IGxlZ2FjeV9iZWhhdmlvciA9IG1hdGNoIGxlZ2FjeV9iZWhhdmlvciB3aXRoXG4gICAgfCBTb21lIGZsYWcgLT4gZmxhZ1xuICAgIHwgTm9uZSAtPiB0cnVlXG4gICgqICBXaGVuIHRoaXMgZmxhZyBpcyBlbmFibGVkLCB0aGUgZm9ybWF0IHBhcnNlciB0cmllcyB0byBiZWhhdmUgYXNcbiAgICAgIHRoZSA8NC4wMiBpbXBsZW1lbnRhdGlvbnMsIGluIHBhcnRpY3VsYXIgaXQgaWdub3JlcyBtb3N0IGJlbmluZVxuICAgICAgbm9uc2Vuc2ljYWwgZm9ybWF0LiBXaGVuIHRoZSBmbGFnIGlzIGRpc2FibGVkLCBpdCB3aWxsIHJlamVjdCBhbnlcbiAgICAgIGZvcm1hdCB0aGF0IGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgc3BlY2lmaWNhdGlvbi5cblxuICAgICAgQSB0eXBpY2FsIGV4YW1wbGUgd291bGQgYmUgXCIlKyBkXCI6IHNwZWNpZnlpbmcgYm90aCAnKycgKGlmIHRoZVxuICAgICAgbnVtYmVyIGlzIHBvc2l0aXZlLCBwYWQgd2l0aCBhICcrJyB0byBnZXQgdGhlIHNhbWUgd2lkdGggYXNcbiAgICAgIG5lZ2F0aXZlIG51bWJlcnMpIGFuZCAnICcgKGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUsIHBhZCB3aXRoXG4gICAgICBhIHNwYWNlKSBkb2VzIG5vdCBtYWtlIHNlbnNlLCBidXQgdGhlIGxlZ2FjeSAoPCA0LjAyKVxuICAgICAgaW1wbGVtZW50YXRpb24gd2FzIGhhcHB5IHRvIGp1c3QgaWdub3JlIHRoZSBzcGFjZS5cbiAgKilcbiAgaW5cblxuICAoKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhIGZyaWVuZGx5IGVycm9yIG1lc3NhZ2UuICopXG4gIGxldCBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIHN0cl9pbmQgbXNnID1cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCAlc1wiXG4gICAgICBzdHIgc3RyX2luZCBtc2dcbiAgaW5cblxuICAoKiBVc2VkIHdoZW4gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IChvciB0aGUgY3VycmVudCBzdWItZm9ybWF0KSB3YXMgZW5jb3VudGVyZWRcbiAgICAgIHVuZXhwZWN0ZWRseS4gKilcbiAgbGV0IHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kID1cbiAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIGVuZF9pbmRcbiAgICAgIFwidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0XCJcbiAgaW5cblxuICAoKiBVc2VkIGZvciAlMGM6IG5vIG90aGVyIHdpZHRocyBhcmUgaW1wbGVtZW50ZWQgKilcbiAgbGV0IGludmFsaWRfbm9ubnVsbF9jaGFyX3dpZHRoIHN0cl9pbmQgPVxuICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2Ugc3RyX2luZFxuICAgICAgXCJub24temVybyB3aWR0aHMgYXJlIHVuc3VwcG9ydGVkIGZvciAlYyBjb252ZXJzaW9uc1wiXG4gIGluXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiBvcHRpb24gZGVwZW5kZW5jeVxuICAgICBwcm9ibGVtLiAqKVxuICBsZXQgaW52YWxpZF9mb3JtYXRfd2l0aG91dCBzdHJfaW5kIGMgcyA9XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVjJyB3aXRob3V0ICVzXCJcbiAgICAgIHN0ciBzdHJfaW5kIGMgc1xuICBpblxuXG4gICgqIFJhaXNlIFtGYWlsdXJlXSB3aXRoIGEgZnJpZW5kbHkgZXJyb3IgbWVzc2FnZSBhYm91dCBhbiB1bmV4cGVjdGVkXG4gICAgIGNoYXJhY3Rlci4gKilcbiAgbGV0IGV4cGVjdGVkX2NoYXJhY3RlciBzdHJfaW5kIGV4cGVjdGVkIHJlYWQgPVxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUNcIlxuICAgICAgc3RyIHN0cl9pbmQgZXhwZWN0ZWQgcmVhZFxuICBpblxuXG4gICgqIFBhcnNlIHRoZSBzdHJpbmcgZnJvbSBiZWdfaW5kIChpbmNsdWRlZCkgdG8gZW5kX2luZCAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIHBhcnNlIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIGJlZ19pbmQgZW5kX2luZCAtPiBwYXJzZV9saXRlcmFsIGJlZ19pbmQgYmVnX2luZCBlbmRfaW5kXG5cbiAgKCogUmVhZCBsaXRlcmFsIGNoYXJhY3RlcnMgdXAgdG8gJyUnIG9yICdAJyBzcGVjaWFsIGNoYXJhY3RlcnMuICopXG4gIGFuZCBwYXJzZV9saXRlcmFsIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBsaXRfc3RhcnQgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBFbmRfb2ZfZm9ybWF0IGVsc2VcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZV9mb3JtYXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIGFkZF9saXRlcmFsIGxpdF9zdGFydCBzdHJfaW5kIGZtdF9yZXN0XG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlX2FmdGVyX2F0IChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBhZGRfbGl0ZXJhbCBsaXRfc3RhcnQgc3RyX2luZCBmbXRfcmVzdFxuICAgICAgfCBfIC0+XG4gICAgICAgIHBhcnNlX2xpdGVyYWwgbGl0X3N0YXJ0IChzdHJfaW5kICsgMSkgZW5kX2luZFxuXG4gICgqIFBhcnNlIGEgZm9ybWF0IGFmdGVyICclJyAqKVxuICBhbmQgcGFyc2VfZm9ybWF0IDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgZW5kX2luZCAtPiBwYXJzZV9pZ24gcGN0X2luZCAocGN0X2luZCArIDEpIGVuZF9pbmRcblxuICBhbmQgcGFyc2VfaWduIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCAtPlxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdfJyAtPiBwYXJzZV9mbGFncyBwY3RfaW5kIChzdHJfaW5kKzEpIGVuZF9pbmQgdHJ1ZVxuICAgICAgfCBfIC0+IHBhcnNlX2ZsYWdzIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGZhbHNlXG5cbiAgYW5kIHBhcnNlX2ZsYWdzIDogdHlwZSBlIGYgLiBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiXG4gID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIGlnbiAtPlxuICAgIGxldCB6ZXJvID0gcmVmIGZhbHNlIGFuZCBtaW51cyA9IHJlZiBmYWxzZVxuICAgIGFuZCBwbHVzID0gcmVmIGZhbHNlIGFuZCBzcGFjZSA9IHJlZiBmYWxzZVxuICAgIGFuZCBoYXNoID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IHNldF9mbGFnIHN0cl9pbmQgZmxhZyA9XG4gICAgICAoKiBpbiBsZWdhY3kgbW9kZSwgZHVwbGljYXRlIGZsYWdzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgaWYgIWZsYWcgJiYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAlQ1wiXG4gICAgICAgICAgc3RyIHN0cl9pbmQgc3RyLltzdHJfaW5kXTtcbiAgICAgIGZsYWcgOj0gdHJ1ZTtcbiAgICBpblxuICAgIGxldCByZWMgcmVhZF9mbGFncyBzdHJfaW5kID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJzAnIC0+IHNldF9mbGFnIHN0cl9pbmQgemVybzsgIHJlYWRfZmxhZ3MgKHN0cl9pbmQgKyAxKVxuICAgICAgfCAnLScgLT4gc2V0X2ZsYWcgc3RyX2luZCBtaW51czsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcrJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHBsdXM7ICByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgJyMnIC0+IHNldF9mbGFnIHN0cl9pbmQgaGFzaDsgcmVhZF9mbGFncyAoc3RyX2luZCArIDEpXG4gICAgICB8ICcgJyAtPiBzZXRfZmxhZyBzdHJfaW5kIHNwYWNlOyByZWFkX2ZsYWdzIChzdHJfaW5kICsgMSlcbiAgICAgIHwgXyAtPlxuICAgICAgICBwYXJzZV9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kXG4gICAgICAgICAgIXplcm8gIW1pbnVzICFwbHVzICFoYXNoICFzcGFjZSBpZ25cbiAgICAgIGVuZFxuICAgIGluXG4gICAgcmVhZF9mbGFncyBzdHJfaW5kXG5cbiAgKCogVHJ5IHRvIHJlYWQgYSBkaWdpdGFsIG9yIGEgJyonIHBhZGRpbmcuICopXG4gIGFuZCBwYXJzZV9wYWRkaW5nIDogdHlwZSBlIGYgLlxuICAgICAgaW50IC0+IGludCAtPiBpbnQgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgemVybyBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICBsZXQgcGFkdHkgPSBtYXRjaCB6ZXJvLCBtaW51cyB3aXRoXG4gICAgICB8IGZhbHNlLCBmYWxzZSAtPiBSaWdodFxuICAgICAgfCBmYWxzZSwgdHJ1ZSAgLT4gTGVmdFxuICAgICAgfCAgdHJ1ZSwgZmFsc2UgLT4gWmVyb3NcbiAgICAgIHwgIHRydWUsIHRydWUgIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIExlZnRcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJy0nIFwiMFwiIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICBsZXQgbmV3X2luZCwgd2lkdGggPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIG5ld19pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgIChMaXRfcGFkZGluZyAocGFkdHksIHdpZHRoKSlcbiAgICB8ICcqJyAtPlxuICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIChzdHJfaW5kICsgMSkgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2VcbiAgICAgICAgaWduIChBcmdfcGFkZGluZyBwYWR0eSlcbiAgICB8IF8gLT5cbiAgICAgIGJlZ2luIG1hdGNoIHBhZHR5IHdpdGhcbiAgICAgIHwgTGVmdCAgLT5cbiAgICAgICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuXG4gICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICctJyBcInBhZGRpbmdcIjtcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgfCBaZXJvcyAtPlxuICAgICAgICAgKCogYSAnMCcgcGFkZGluZyBpbmRpY2F0aW9uIG5vdCBmb2xsb3dlZCBieSBhbnl0aGluZyBzaG91bGRcbiAgICAgICAgICAgYmUgaW50ZXJwcmV0ZWQgYXMgYSBSaWdodCBwYWRkaW5nIG9mIHdpZHRoIDAuIFRoaXMgaXMgdXNlZFxuICAgICAgICAgICBieSBzY2FubmluZyBjb252ZXJzaW9ucyAlMHMgYW5kICUwYyAqKVxuICAgICAgICBwYXJzZV9hZnRlcl9wYWRkaW5nIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICAoTGl0X3BhZGRpbmcgKFJpZ2h0LCAwKSlcbiAgICAgIHwgUmlnaHQgLT5cbiAgICAgICAgcGFyc2VfYWZ0ZXJfcGFkZGluZyBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBtaW51cyBwbHVzIGhhc2ggc3BhY2UgaWduXG4gICAgICAgICAgTm9fcGFkZGluZ1xuICAgICAgZW5kXG5cbiAgKCogSXMgcHJlY2lzaW9uIGRlZmluZWQ/ICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wYWRkaW5nIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgIHwgJy4nIC0+XG4gICAgICBwYXJzZV9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnblxuICAgICAgICBwYWRcbiAgICB8IHN5bWIgLT5cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgTm9fcHJlY2lzaW9uIHBhZCBzeW1iXG5cbiAgKCogUmVhZCB0aGUgZGlnaXRhbCBvciAnKicgcHJlY2lzaW9uLiAqKVxuICBhbmQgcGFyc2VfcHJlY2lzaW9uIDogdHlwZSB4IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT5cbiAgICAgICAgKHgsIF8pIHBhZGRpbmcgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gcGN0X2luZCBzdHJfaW5kIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWQgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9saXRlcmFsIG1pbnVzIHN0cl9pbmQgPVxuICAgICAgbGV0IG5ld19pbmQsIHByZWMgPSBwYXJzZV9wb3NpdGl2ZSBzdHJfaW5kIGVuZF9pbmQgMCBpblxuICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgbmV3X2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgcGFkIChMaXRfcHJlY2lzaW9uIHByZWMpIGluXG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX2xpdGVyYWwgbWludXMgc3RyX2luZFxuICAgIHwgKCcrJyB8ICctJykgYXMgc3ltYiB3aGVuIGxlZ2FjeV9iZWhhdmlvciAtPlxuICAgICAgKCogTGVnYWN5IG1vZGUgd291bGQgYWNjZXB0IGFuZCBpZ25vcmUgJysnIG9yICctJyBiZWZvcmUgdGhlXG4gICAgICAgICBpbnRlZ2VyIGRlc2NyaWJpbmcgdGhlIGRlc2lyZWQgcHJlY2lzaW9uOyBub3RlIHRoYXQgdGhpc1xuICAgICAgICAgY2Fubm90IGhhcHBlbiBmb3IgcGFkZGluZyB3aWR0aCwgYXMgJysnIGFuZCAnLScgYWxyZWFkeSBoYXZlXG4gICAgICAgICBhIHNlbWFudGljcyB0aGVyZS5cblxuICAgICAgICAgVGhhdCBzYWlkLCB0aGUgaWRlYSAoc3VwcG9ydGVkIGJ5IHRoaXMgdHdlYWspIHRoYXQgd2lkdGggYW5kXG4gICAgICAgICBwcmVjaXNpb24gbGl0ZXJhbHMgYXJlIFwiaW50ZWdlciBsaXRlcmFsc1wiIGluIHRoZSBPQ2FtbCBzZW5zZSBpc1xuICAgICAgICAgc3RpbGwgYmxhdGFudGx5IHdyb25nLCBhcyAxMjNfNDU2IG9yIDB4RkYgYXJlIHJlamVjdGVkLiAqKVxuICAgICAgcGFyc2VfbGl0ZXJhbCAobWludXMgfHwgc3ltYiA9ICctJykgKHN0cl9pbmQgKyAxKVxuICAgIHwgJyonIC0+XG4gICAgICBwYXJzZV9hZnRlcl9wcmVjaXNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgbWludXMgcGx1cyBoYXNoIHNwYWNlXG4gICAgICAgIGlnbiBwYWQgQXJnX3ByZWNpc2lvblxuICAgIHwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogbm90ZSB0aGF0IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IGlnbm9yZSAnLicgd2l0aG91dFxuICAgICAgICAgICBhIG51bWJlciAoYXMgaXQgZG9lcyBmb3IgcGFkZGluZyBpbmRpY2F0aW9ucyksIGJ1dFxuICAgICAgICAgICBpbnRlcnByZXRzIGl0IGFzICcuMCcgKilcbiAgICAgICAgcGFyc2VfYWZ0ZXJfcHJlY2lzaW9uIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ25cbiAgICAgICAgICBwYWQgKExpdF9wcmVjaXNpb24gMClcbiAgICAgIGVsc2VcbiAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dCAoc3RyX2luZCAtIDEpICcuJyBcInByZWNpc2lvblwiXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIGNvbnZlcnNpb24uICopXG4gIGFuZCBwYXJzZV9hZnRlcl9wcmVjaXNpb24gOiB0eXBlIHggeSB6IHQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gaW50IC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPlxuICAgICAgICAoeCwgeSkgcGFkZGluZyAtPiAoeiwgdCkgcHJlY2lzaW9uIC0+IChfLCBfLCBlLCBmKSBmbXRfZWJiID1cbiAgZnVuIHBjdF9pbmQgc3RyX2luZCBlbmRfaW5kIG1pbnVzIHBsdXMgaGFzaCBzcGFjZSBpZ24gcGFkIHByZWMgLT5cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGxldCBwYXJzZV9jb252ICh0eXBlIHUpICh0eXBlIHYpIChwYWRwcmVjIDogKHUsIHYpIHBhZGRpbmcpID1cbiAgICAgIHBhcnNlX2NvbnZlcnNpb24gcGN0X2luZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgcGx1cyBoYXNoIHNwYWNlIGlnbiBwYWRcbiAgICAgICAgcHJlYyBwYWRwcmVjIHN0ci5bc3RyX2luZF0gaW5cbiAgICAoKiBpbiBsZWdhY3kgbW9kZSwgc29tZSBmb3JtYXRzICglcyBhbmQgJVMpIGFjY2VwdCBhIHdlaXJkIG1peCBvZlxuICAgICAgIHBhZGRpbmcgYW5kIHByZWNpc2lvbiwgd2hpY2ggaXMgbWVyZ2VkIGFzIGEgc2luZ2xlIHBhZGRpbmdcbiAgICAgICBpbmZvcm1hdGlvbi4gRm9yIGV4YW1wbGUsIGluICUuMTBzIHRoZSBwcmVjaXNpb24gaXMgaW1wbGljaXRseVxuICAgICAgIHVuZGVyc3Rvb2QgYXMgcGFkZGluZyAlMTBzLCBidXQgdGhlIGxlZnQtcGFkZGluZyBjb21wb25lbnQgbWF5XG4gICAgICAgYmUgc3BlY2lmaWVkIGVpdGhlciBhcyBhIGxlZnQgcGFkZGluZyBvciBhIG5lZ2F0aXZlIHByZWNpc2lvbjpcbiAgICAgICAlLS4zcyBhbmQgJS4tM3MgYXJlIGVxdWl2YWxlbnQgdG8gJS0zcyAqKVxuICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgfCBOb19wYWRkaW5nIC0+IChcbiAgICAgIG1hdGNoIG1pbnVzLCBwcmVjIHdpdGhcbiAgICAgICAgfCBfLCBOb19wcmVjaXNpb24gLT4gcGFyc2VfY29udiBOb19wYWRkaW5nXG4gICAgICAgIHwgZmFsc2UsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoUmlnaHQsIG4pKVxuICAgICAgICB8IHRydWUsIExpdF9wcmVjaXNpb24gbiAtPiBwYXJzZV9jb252IChMaXRfcGFkZGluZyAoTGVmdCwgbikpXG4gICAgICAgIHwgZmFsc2UsIEFyZ19wcmVjaXNpb24gLT4gcGFyc2VfY29udiAoQXJnX3BhZGRpbmcgUmlnaHQpXG4gICAgICAgIHwgdHJ1ZSwgQXJnX3ByZWNpc2lvbiAtPiBwYXJzZV9jb252IChBcmdfcGFkZGluZyBMZWZ0KVxuICAgIClcbiAgICB8IHBhZCAtPiBwYXJzZV9jb252IHBhZFxuXG4gICgqIENhc2UgYW5hbHlzaXMgb24gY29udmVyc2lvbi4gKilcbiAgYW5kIHBhcnNlX2NvbnZlcnNpb24gOiB0eXBlIHggeSB6IHQgdSB2IGUgZiAuXG4gICAgICBpbnQgLT4gaW50IC0+IGludCAtPiBib29sIC0+IGJvb2wgLT4gYm9vbCAtPiBib29sIC0+ICh4LCB5KSBwYWRkaW5nIC0+XG4gICAgICAgICh6LCB0KSBwcmVjaXNpb24gLT4gKHUsIHYpIHBhZGRpbmcgLT4gY2hhciAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBwY3RfaW5kIHN0cl9pbmQgZW5kX2luZCBwbHVzIGhhc2ggc3BhY2UgaWduIHBhZCBwcmVjIHBhZHByZWMgc3ltYiAtPlxuICAgICgqIEZsYWdzIHVzZWQgdG8gY2hlY2sgb3B0aW9uIHVzYWdlcy9jb21wYXRpYmlsaXRpZXMuICopXG4gICAgbGV0IHBsdXNfdXNlZCAgPSByZWYgZmFsc2UgYW5kIGhhc2hfdXNlZCA9IHJlZiBmYWxzZVxuICAgIGFuZCBzcGFjZV91c2VkID0gcmVmIGZhbHNlIGFuZCBpZ25fdXNlZCAgID0gcmVmIGZhbHNlXG4gICAgYW5kIHBhZF91c2VkICAgPSByZWYgZmFsc2UgYW5kIHByZWNfdXNlZCAgPSByZWYgZmFsc2UgaW5cblxuICAgICgqIEFjY2VzcyB0byBvcHRpb25zLCB1cGRhdGUgZmxhZ3MuICopXG4gICAgbGV0IGdldF9wbHVzICAgICgpID0gcGx1c191c2VkICA6PSB0cnVlOyBwbHVzXG4gICAgYW5kIGdldF9oYXNoICAgKCkgPSBoYXNoX3VzZWQgOj0gdHJ1ZTsgaGFzaFxuICAgIGFuZCBnZXRfc3BhY2UgICAoKSA9IHNwYWNlX3VzZWQgOj0gdHJ1ZTsgc3BhY2VcbiAgICBhbmQgZ2V0X2lnbiAgICAgKCkgPSBpZ25fdXNlZCAgIDo9IHRydWU7IGlnblxuICAgIGFuZCBnZXRfcGFkICAgICAoKSA9IHBhZF91c2VkICAgOj0gdHJ1ZTsgcGFkXG4gICAgYW5kIGdldF9wcmVjICAgICgpID0gcHJlY191c2VkICA6PSB0cnVlOyBwcmVjXG4gICAgYW5kIGdldF9wYWRwcmVjICgpID0gcGFkX3VzZWQgICA6PSB0cnVlOyBwYWRwcmVjIGluXG5cbiAgICBsZXQgZ2V0X2ludF9wYWQgKCkgOiAoeCx5KSBwYWRkaW5nID1cbiAgICAgICgqICU1LjNkIGlzIGFjY2VwdGVkIGFuZCBtZWFuaW5nZnVsOiBwYWQgdG8gbGVuZ3RoIDUgd2l0aFxuICAgICAgICAgc3BhY2VzLCBidXQgZmlyc3QgcGFkIHdpdGggemVyb3MgdXB0byBsZW5ndGggMyAoMC1wYWRkaW5nXG4gICAgICAgICBpcyB0aGUgaW50ZXJwcmV0YXRpb24gb2YgXCJwcmVjaXNpb25cIiBmb3IgaW50ZWdlciBmb3JtYXRzKS5cblxuICAgICAgICAgJTA1LjNkIGlzIHJlZHVuZGFudDogcGFkIHRvIGxlbmd0aCA1ICp3aXRoIHplcm9zKiwgYnV0XG4gICAgICAgICBmaXJzdCBwYWQgd2l0aCB6ZXJvcy4uLiBUbyBhZGQgaW5zdWx0IHRvIHRoZSBpbmp1cnksIHRoZVxuICAgICAgICAgbGVnYWN5IGltcGxlbWVudGF0aW9uIGlnbm9yZXMgdGhlIDAtcGFkZGluZyBpbmRpY2F0aW9uIGFuZFxuICAgICAgICAgZG9lcyB0aGUgNSBwYWRkaW5nIHdpdGggc3BhY2VzIGluc3RlYWQuIFdlIHJldXNlIHRoaXNcbiAgICAgICAgIGludGVycHJldGF0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBidXQgc3RhdGljYWxseSByZWplY3QgdGhpc1xuICAgICAgICAgZm9ybWF0IHdoZW4gdGhlIGxlZ2FjeSBtb2RlIGlzIGRpc2FibGVkLCB0byBwcm90ZWN0IHN0cmljdFxuICAgICAgICAgdXNlcnMgZnJvbSB0aGlzIGNvcm5lciBjYXNlLiAqKVxuICAgICAgIG1hdGNoIGdldF9wYWQgKCksIGdldF9wcmVjICgpIHdpdGhcbiAgICAgICAgIHwgcGFkLCBOb19wcmVjaXNpb24gLT4gcGFkXG4gICAgICAgICB8IE5vX3BhZGRpbmcsIF8gICAgIC0+IE5vX3BhZGRpbmdcbiAgICAgICAgIHwgTGl0X3BhZGRpbmcgKFplcm9zLCBuKSwgXyAtPlxuICAgICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIG4pXG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IEFyZ19wYWRkaW5nIFplcm9zLCBfIC0+XG4gICAgICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcwJyBcInByZWNpc2lvblwiXG4gICAgICAgICB8IExpdF9wYWRkaW5nIF8gYXMgcGFkLCBfIC0+IHBhZFxuICAgICAgICAgfCBBcmdfcGFkZGluZyBfIGFzIHBhZCwgXyAtPiBwYWQgaW5cblxuICAgICgqIENoZWNrIHRoYXQgcGFkdHkgPD4gWmVyb3MuICopXG4gICAgbGV0IGNoZWNrX25vXzAgc3ltYiAodHlwZSBhIGIpIChwYWQgOiAoYSwgYikgcGFkZGluZykgOiAoYSxiKSBwYWRkaW5nID1cbiAgICAgIG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gcGFkXG4gICAgICB8IExpdF9wYWRkaW5nICgoTGVmdCB8IFJpZ2h0KSwgXykgLT4gcGFkXG4gICAgICB8IEFyZ19wYWRkaW5nIChMZWZ0IHwgUmlnaHQpIC0+IHBhZFxuICAgICAgfCBMaXRfcGFkZGluZyAoWmVyb3MsIHdpZHRoKSAtPlxuICAgICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKVxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiMFwiXG4gICAgICB8IEFyZ19wYWRkaW5nIFplcm9zIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIEFyZ19wYWRkaW5nIFJpZ2h0XG4gICAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCIwXCJcbiAgICBpblxuXG4gICAgKCogR2V0IHBhZGRpbmcgYXMgYSBwYWRfb3B0aW9uIChzZWUgXCIlX1wiLCBcIiV7XCIsIFwiJShcIiBhbmQgXCIlW1wiKS5cbiAgICAgICAobm8gbmVlZCBmb3IgbGVnYWN5IG1vZGUgdHdlYWtpbmcsIHRob3NlIHdlcmUgcmVqZWN0ZWQgYnkgdGhlXG4gICAgICAgbGVnYWN5IHBhcnNlciBhcyB3ZWxsKSAqKVxuICAgIGxldCBvcHRfb2ZfcGFkIGMgKHR5cGUgYSkgKHR5cGUgYikgKHBhZCA6IChhLCBiKSBwYWRkaW5nKSA9IG1hdGNoIHBhZCB3aXRoXG4gICAgICB8IE5vX3BhZGRpbmcgLT4gTm9uZVxuICAgICAgfCBMaXRfcGFkZGluZyAoUmlnaHQsIHdpZHRoKSAtPiBTb21lIHdpZHRoXG4gICAgICB8IExpdF9wYWRkaW5nIChaZXJvcywgd2lkdGgpIC0+XG4gICAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuIFNvbWUgd2lkdGhcbiAgICAgICAgZWxzZSBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicwJ1wiXG4gICAgICB8IExpdF9wYWRkaW5nIChMZWZ0LCB3aWR0aCkgLT5cbiAgICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gU29tZSB3aWR0aFxuICAgICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBjIFwiJy0nXCJcbiAgICAgIHwgQXJnX3BhZGRpbmcgXyAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgYyBcIicqJ1wiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3BhZF9vcHQgYyA9IG9wdF9vZl9wYWQgYyAoZ2V0X3BhZCAoKSkgaW5cbiAgICBsZXQgZ2V0X3BhZHByZWNfb3B0IGMgPSBvcHRfb2ZfcGFkIGMgKGdldF9wYWRwcmVjICgpKSBpblxuXG4gICAgKCogR2V0IHByZWNpc2lvbiBhcyBhIHByZWNfb3B0aW9uIChzZWUgXCIlX2ZcIikuXG4gICAgICAgKG5vIG5lZWQgZm9yIGxlZ2FjeSBtb2RlIHR3ZWFraW5nLCB0aG9zZSB3ZXJlIHJlamVjdGVkIGJ5IHRoZVxuICAgICAgIGxlZ2FjeSBwYXJzZXIgYXMgd2VsbCkgKilcbiAgICBsZXQgZ2V0X3ByZWNfb3B0ICgpID0gbWF0Y2ggZ2V0X3ByZWMgKCkgd2l0aFxuICAgICAgfCBOb19wcmVjaXNpb24gICAgICAgLT4gTm9uZVxuICAgICAgfCBMaXRfcHJlY2lzaW9uIG5kZWMgLT4gU29tZSBuZGVjXG4gICAgICB8IEFyZ19wcmVjaXNpb24gICAgICAtPiBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgJ18nIFwiJyonXCJcbiAgICBpblxuXG4gICAgbGV0IGZtdF9yZXN1bHQgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICcsJyAtPlxuICAgICAgcGFyc2Ugc3RyX2luZCBlbmRfaW5kXG4gICAgfCAnYycgLT5cbiAgICAgIGxldCBjaGFyX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICVjICopXG4gICAgICAgIGlmIGdldF9pZ24gKClcbiAgICAgICAgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NoYXIsIGZtdF9yZXN0KSlcbiAgICAgICAgZWxzZSBGbXRfRUJCIChDaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBzY2FuX2Zvcm1hdCBmbXRfcmVzdCA9ICgqICUwYyAqKVxuICAgICAgICBpZiBnZXRfaWduICgpXG4gICAgICAgIHRoZW4gRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoSWdub3JlZF9zY2FuX25leHRfY2hhciwgZm10X3Jlc3QpKVxuICAgICAgICBlbHNlIEZtdF9FQkIgKFNjYW5fbmV4dF9jaGFyIGZtdF9yZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBiZWdpbiBtYXRjaCBnZXRfcGFkX29wdCAnYycgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gY2hhcl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIDAgLT4gc2Nhbl9mb3JtYXQgZm10X3Jlc3RcbiAgICAgICAgfCBTb21lIF9uIC0+XG4gICAgICAgICAgIGlmIG5vdCBsZWdhY3lfYmVoYXZpb3JcbiAgICAgICAgICAgdGhlbiBpbnZhbGlkX25vbm51bGxfY2hhcl93aWR0aCBzdHJfaW5kXG4gICAgICAgICAgIGVsc2UgKCogbGVnYWN5IGlnbm9yZXMgJWMgd2lkdGhzICopIGNoYXJfZm9ybWF0IGZtdF9yZXN0XG4gICAgICBlbmRcbiAgICB8ICdDJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlbiBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChJZ25vcmVkX2NhbWxfY2hhcixmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKENhbWxfY2hhciBmbXRfcmVzdClcbiAgICB8ICdzJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zdHJpbmcgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKFN0cmluZyAocGFkJywgZm10X3Jlc3QnKSlcbiAgICB8ICdTJyAtPlxuICAgICAgbGV0IHBhZCA9IGNoZWNrX25vXzAgc3ltYiAoZ2V0X3BhZHByZWMgKCkpIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9jYW1sX3N0cmluZyAoZ2V0X3BhZHByZWNfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkZGluZ19mbXRfRUJCIChwYWQnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZGRpbmdfZm10X2ViYiBwYWQgZm10X3Jlc3QgaW5cbiAgICAgICAgRm10X0VCQiAoQ2FtbF9zdHJpbmcgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnZCcgfCAnaScgfCAneCcgfCAnWCcgfCAnbycgfCAndScgLT5cbiAgICAgIGxldCBpY29udiA9IGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIChnZXRfcGx1cyAoKSkgKGdldF9oYXNoICgpKVxuICAgICAgICAoZ2V0X3NwYWNlICgpKSBzeW1iIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQgKGljb252LCBnZXRfcGFkX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZHByZWNfZm10X0VCQiAocGFkJywgcHJlYycsIGZtdF9yZXN0JykgPVxuICAgICAgICAgIG1ha2VfcGFkcHJlY19mbXRfZWJiIChnZXRfaW50X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChJbnQgKGljb252LCBwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSlcbiAgICB8ICdOJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gVG9rZW5fY291bnRlciBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIGNvdW50ZXIgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCBmbXRfcmVzdCkpXG4gICAgfCAnbCcgfCAnbicgfCAnTCcgd2hlbiBzdHJfaW5kPWVuZF9pbmQgfHwgbm90IChpc19pbnRfYmFzZSBzdHIuW3N0cl9pbmRdKSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGxldCBjb3VudGVyID0gY291bnRlcl9vZl9jaGFyIHN5bWIgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciBjb3VudGVyIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgZm10X3Jlc3QpKVxuICAgIHwgJ2wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQzMiAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDMyIChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnbicgLT5cbiAgICAgIGxldCBpY29udiA9XG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCAoc3RyX2luZCArIDEpIChnZXRfcGx1cyAoKSlcbiAgICAgICAgICAoZ2V0X2hhc2ggKCkpIChnZXRfc3BhY2UgKCkpIHN0ci5bc3RyX2luZF0gaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX25hdGl2ZWludCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKE5hdGl2ZWludCAoaWNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ0wnIC0+XG4gICAgICBsZXQgaWNvbnYgPVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgKHN0cl9pbmQgKyAxKSAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSlcbiAgICAgICAgICAoZ2V0X3NwYWNlICgpKSBzdHIuW3N0cl9pbmRdIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuXG4gICAgICAgIGxldCBpZ25vcmVkID0gSWdub3JlZF9pbnQ2NCAoaWNvbnYsIGdldF9wYWRfb3B0ICdfJykgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgUGFkcHJlY19mbXRfRUJCIChwYWQnLCBwcmVjJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRwcmVjX2ZtdF9lYmIgKGdldF9pbnRfcGFkICgpKSAoZ2V0X3ByZWMgKCkpIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEludDY0IChpY29udiwgcGFkJywgcHJlYycsIGZtdF9yZXN0JykpXG4gICAgfCAnZicgfCAnZScgfCAnRScgfCAnZycgfCAnRycgfCAnRicgfCAnaCcgfCAnSCcgLT5cbiAgICAgIGxldCBmY29udiA9XG4gICAgICAgIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmRcbiAgICAgICAgICAoZ2V0X3BsdXMgKCkpIChnZXRfaGFzaCAoKSkgKGdldF9zcGFjZSAoKSkgc3ltYiBpblxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZmxvYXQgKGdldF9wYWRfb3B0ICdfJywgZ2V0X3ByZWNfb3B0ICgpKSBpblxuICAgICAgICBGbXRfRUJCIChJZ25vcmVkX3BhcmFtIChpZ25vcmVkLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBQYWRwcmVjX2ZtdF9FQkIgKHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpID1cbiAgICAgICAgICBtYWtlX3BhZHByZWNfZm10X2ViYiAoZ2V0X3BhZCAoKSkgKGdldF9wcmVjICgpKSBmbXRfcmVzdCBpblxuICAgICAgICBGbXRfRUJCIChGbG9hdCAoZmNvbnYsIHBhZCcsIHByZWMnLCBmbXRfcmVzdCcpKVxuICAgIHwgJ2InIHwgJ0InIC0+XG4gICAgICBsZXQgcGFkID0gY2hlY2tfbm9fMCBzeW1iIChnZXRfcGFkcHJlYyAoKSkgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Jvb2wgKGdldF9wYWRwcmVjX29wdCAnXycpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IFBhZGRpbmdfZm10X0VCQiAocGFkJywgZm10X3Jlc3QnKSA9XG4gICAgICAgICAgbWFrZV9wYWRkaW5nX2ZtdF9lYmIgcGFkIGZtdF9yZXN0IGluXG4gICAgICAgIEZtdF9FQkIgKEJvb2wgKHBhZCcsIGZtdF9yZXN0JykpXG4gICAgfCAnYScgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBGbXRfRUJCIChBbHBoYSBmbXRfcmVzdClcbiAgICB8ICd0JyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKFRoZXRhIGZtdF9yZXN0KVxuICAgIHwgJ3InIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIHN0cl9pbmQgZW5kX2luZCBpblxuICAgICAgaWYgZ2V0X2lnbiAoKSB0aGVuIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKElnbm9yZWRfcmVhZGVyLCBmbXRfcmVzdCkpXG4gICAgICBlbHNlIEZtdF9FQkIgKFJlYWRlciBmbXRfcmVzdClcbiAgICB8ICchJyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZsdXNoIGZtdF9yZXN0KVxuICAgIHwgKCclJyB8ICdAJykgYXMgYyAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKENoYXJfbGl0ZXJhbCAoYywgZm10X3Jlc3QpKVxuICAgIHwgJ3snIC0+XG4gICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCAnfScgaW5cbiAgICAgIGxldCBGbXRfRUJCIHN1Yl9mbXQgPSBwYXJzZSBzdHJfaW5kIHN1Yl9lbmQgaW5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN1Yl9lbmQgKyAyKSBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10IHN1Yl9mbXQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfZm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X2FyZyAoZ2V0X3BhZF9vcHQgJ3snLCBzdWJfZm10dHksIGZtdF9yZXN0KSlcbiAgICB8ICcoJyAtPlxuICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCBzdHJfaW5kIGVuZF9pbmQgJyknIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdWJfZW5kICsgMikgZW5kX2luZCBpblxuICAgICAgbGV0IEZtdF9FQkIgc3ViX2ZtdCA9IHBhcnNlIHN0cl9pbmQgc3ViX2VuZCBpblxuICAgICAgbGV0IHN1Yl9mbXR0eSA9IGZtdHR5X29mX2ZtdCBzdWJfZm10IGluXG4gICAgICBpZiBnZXRfaWduICgpIHRoZW5cbiAgICAgICAgbGV0IGlnbm9yZWQgPSBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoZ2V0X3BhZF9vcHQgJ18nLCBzdWJfZm10dHkpIGluXG4gICAgICAgIEZtdF9FQkIgKElnbm9yZWRfcGFyYW0gKGlnbm9yZWQsIGZtdF9yZXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgRm10X0VCQiAoRm9ybWF0X3N1YnN0IChnZXRfcGFkX29wdCAnKCcsIHN1Yl9mbXR0eSwgZm10X3Jlc3QpKVxuICAgIHwgJ1snIC0+XG4gICAgICBsZXQgbmV4dF9pbmQsIGNoYXJfc2V0ID0gcGFyc2VfY2hhcl9zZXQgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIGlmIGdldF9pZ24gKCkgdGhlblxuICAgICAgICBsZXQgaWdub3JlZCA9IElnbm9yZWRfc2Nhbl9jaGFyX3NldCAoZ2V0X3BhZF9vcHQgJ18nLCBjaGFyX3NldCkgaW5cbiAgICAgICAgRm10X0VCQiAoSWdub3JlZF9wYXJhbSAoaWdub3JlZCwgZm10X3Jlc3QpKVxuICAgICAgZWxzZVxuICAgICAgICBGbXRfRUJCIChTY2FuX2NoYXJfc2V0IChnZXRfcGFkX29wdCAnWycsIGNoYXJfc2V0LCBmbXRfcmVzdCkpXG4gICAgfCAnLScgfCAnKycgfCAnIycgfCAnICcgfCAnXycgLT5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgIGZsYWcgJUMgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnJSUnLCBiZWZvcmUgcGFkZGluZyBhbmQgcHJlY2lzaW9uXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgc3ltYlxuICAgIHwgXyAtPlxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgaW52YWxpZCBjb252ZXJzaW9uIFxcXCIlJSVjXFxcIlwiIHN0ciAoc3RyX2luZCAtIDEpIHN5bWJcbiAgICBpblxuICAgICgqIENoZWNrIGZvciB1bnVzZWQgb3B0aW9ucywgYW5kIHJlamVjdCB0aGVtIGFzIGluY29tcGF0aWJsZS5cblxuICAgICAgIFN1Y2ggY2hlY2tzIG5lZWQgdG8gYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsIGFzIHRoZSBsZWdhY3lcbiAgICAgICBwYXJzZXIgc2lsZW50bHkgaWdub3JlZCBpbmNvbXBhdGlibGUgZmxhZ3MuICopXG4gICAgaWYgbm90IGxlZ2FjeV9iZWhhdmlvciB0aGVuIGJlZ2luXG4gICAgaWYgbm90ICFwbHVzX3VzZWQgJiYgcGx1cyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcIicrJ1wiO1xuICAgIGlmIG5vdCAhaGFzaF91c2VkICYmIGhhc2ggdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIjtcbiAgICBpZiBub3QgIXNwYWNlX3VzZWQgJiYgc3BhY2UgdGhlblxuICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInICdcIjtcbiAgICBpZiBub3QgIXBhZF91c2VkICAmJiBQYWRkaW5nX0VCQiBwYWQgPD4gUGFkZGluZ19FQkIgTm9fcGFkZGluZyB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgc3ltYiBcImBwYWRkaW5nJ1wiO1xuICAgIGlmIG5vdCAhcHJlY191c2VkICYmIFByZWNpc2lvbl9FQkIgcHJlYyA8PiBQcmVjaXNpb25fRUJCIE5vX3ByZWNpc2lvbiB0aGVuXG4gICAgICBpbmNvbXBhdGlibGVfZmxhZyBwY3RfaW5kIHN0cl9pbmQgKGlmIGlnbiB0aGVuICdfJyBlbHNlIHN5bWIpXG4gICAgICAgIFwiYHByZWNpc2lvbidcIjtcbiAgICBpZiBpZ24gJiYgcGx1cyB0aGVuIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCAnXycgXCInKydcIjtcbiAgICBlbmQ7XG4gICAgKCogdGhpcyBsYXN0IHRlc3QgbXVzdCBub3QgYmUgZGlzYWJsZWQgaW4gbGVnYWN5IG1vZGUsXG4gICAgICAgYXMgaWdub3JpbmcgaXQgd291bGQgdHlwaWNhbGx5IHJlc3VsdCBpbiBhIGRpZmZlcmVudCB0eXBpbmdcbiAgICAgICB0aGFuIHdoYXQgdGhlIGxlZ2FjeSBwYXJzZXIgdXNlZCAqKVxuICAgIGlmIG5vdCAhaWduX3VzZWQgJiYgaWduIHRoZW5cbiAgICAgIGJlZ2luIG1hdGNoIHN5bWIgd2l0aFxuICAgICAgICAoKiBhcmd1bWVudC1sZXNzIGZvcm1hdHMgY2FuIHNhZmVseSBiZSBpZ25vcmVkIGluIGxlZ2FjeSBtb2RlICopXG4gICAgICAgIHwgKCdAJyB8ICclJyB8ICchJyB8ICcsJykgd2hlbiBsZWdhY3lfYmVoYXZpb3IgLT4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInXydcIlxuICAgICAgZW5kO1xuICAgIGZtdF9yZXN1bHRcblxuICAoKiBQYXJzZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uIChhZnRlciAnQCcpLiAqKVxuICBhbmQgcGFyc2VfYWZ0ZXJfYXQgOiB0eXBlIGUgZiAuIGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKCdAJywgRW5kX29mX2Zvcm1hdCkpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICdbJyAtPlxuICAgICAgICBwYXJzZV90YWcgZmFsc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICddJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoQ2xvc2VfYm94LCBmbXRfcmVzdCkpXG4gICAgICB8ICd7JyAtPlxuICAgICAgICBwYXJzZV90YWcgdHJ1ZSAoc3RyX2luZCArIDEpIGVuZF9pbmRcbiAgICAgIHwgJ30nIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChDbG9zZV90YWcsIGZtdF9yZXN0KSlcbiAgICAgIHwgJywnIC0+XG4gICAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChCcmVhayAoXCJALFwiLCAwLCAwKSwgZm10X3Jlc3QpKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEJyZWFrIChcIkAgXCIsIDEsIDApLCBmbXRfcmVzdCkpXG4gICAgICB8ICc7JyAtPlxuICAgICAgICBwYXJzZV9nb29kX2JyZWFrIChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCAnPycgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZGbHVzaCwgZm10X3Jlc3QpKVxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRm9yY2VfbmV3bGluZSwgZm10X3Jlc3QpKVxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEZsdXNoX25ld2xpbmUsIGZtdF9yZXN0KSlcbiAgICAgIHwgJzwnIC0+XG4gICAgICAgIHBhcnNlX21hZ2ljX3NpemUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8ICdAJyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoRXNjYXBlZF9hdCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgd2hlbiBzdHJfaW5kICsgMSA8IGVuZF9pbmQgJiYgc3RyLltzdHJfaW5kICsgMV0gPSAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoc3RyX2luZCArIDIpIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19saXQgKEVzY2FwZWRfcGVyY2VudCwgZm10X3Jlc3QpKVxuICAgICAgfCAnJScgLT5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgICAgRm10X0VCQiAoQ2hhcl9saXRlcmFsICgnQCcsIGZtdF9yZXN0KSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIChzdHJfaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBGbXRfRUJCIChGb3JtYXR0aW5nX2xpdCAoU2Nhbl9pbmRpYyBjLCBmbXRfcmVzdCkpXG5cbiAgKCogVHJ5IHRvIHJlYWQgdGhlIG9wdGlvbmFsIDxuYW1lPiBhZnRlciBcIkB7XCIgb3IgXCJAW1wiLiAqKVxuICBhbmQgcGFyc2VfdGFnIDogdHlwZSBlIGYgLiBib29sIC0+IGludCAtPiBpbnQgLT4gKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gaXNfb3Blbl90YWcgc3RyX2luZCBlbmRfaW5kIC0+XG4gICAgdHJ5XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgfCAnPCcgLT5cbiAgICAgICAgbGV0IGluZCA9IFN0cmluZy5pbmRleF9mcm9tIHN0ciAoc3RyX2luZCArIDEpICc+JyBpblxuICAgICAgICBpZiBpbmQgPj0gZW5kX2luZCB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciBzdHJfaW5kIChpbmQgLSBzdHJfaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSAoaW5kICsgMSkgZW5kX2luZCBpblxuICAgICAgICBsZXQgRm10X0VCQiBzdWJfZm10ID0gcGFyc2Ugc3RyX2luZCAoaW5kICsgMSkgaW5cbiAgICAgICAgbGV0IHN1Yl9mb3JtYXQgPSBGb3JtYXQgKHN1Yl9mbXQsIHN1Yl9zdHIpIGluXG4gICAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgICBpZiBpc19vcGVuX3RhZyB0aGVuIE9wZW5fdGFnIHN1Yl9mb3JtYXQgZWxzZSBPcGVuX2JveCBzdWJfZm9ybWF0IGluXG4gICAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfZ2VuIChmb3JtYXR0aW5nLCBmbXRfcmVzdCkpXG4gICAgICB8IF8gLT5cbiAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2Ugc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICBsZXQgc3ViX2Zvcm1hdCA9IEZvcm1hdCAoRW5kX29mX2Zvcm1hdCwgXCJcIikgaW5cbiAgICAgIGxldCBmb3JtYXR0aW5nID1cbiAgICAgICAgaWYgaXNfb3Blbl90YWcgdGhlbiBPcGVuX3RhZyBzdWJfZm9ybWF0IGVsc2UgT3Blbl9ib3ggc3ViX2Zvcm1hdCBpblxuICAgICAgRm10X0VCQiAoRm9ybWF0dGluZ19nZW4gKGZvcm1hdHRpbmcsIGZtdF9yZXN0KSlcblxuICAoKiBUcnkgdG8gcmVhZCB0aGUgb3B0aW9uYWwgPHdpZHRoIG9mZnNldD4gYWZ0ZXIgXCJAO1wiLiAqKVxuICBhbmQgcGFyc2VfZ29vZF9icmVhayA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBsZXQgbmV4dF9pbmQsIGZvcm1hdHRpbmdfbGl0ID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB8fCBzdHIuW3N0cl9pbmRdIDw+ICc8JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgbGV0IHN0cl9pbmRfMSA9IHBhcnNlX3NwYWNlcyAoc3RyX2luZCArIDEpIGVuZF9pbmQgaW5cbiAgICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXzFdIHdpdGhcbiAgICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IChcbiAgICAgICAgICBsZXQgc3RyX2luZF8yLCB3aWR0aCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8xIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIGxldCBzdHJfaW5kXzMgPSBwYXJzZV9zcGFjZXMgc3RyX2luZF8yIGVuZF9pbmQgaW5cbiAgICAgICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8zXSB3aXRoXG4gICAgICAgICAgICAgIHwgJz4nIC0+XG4gICAgICAgICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZC0yKSAoc3RyX2luZF8zLXN0cl9pbmQrMykgaW5cbiAgICAgICAgICAgICAgICBzdHJfaW5kXzMgKyAxLCBCcmVhayAocywgd2lkdGgsIDApXG4gICAgICAgICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGxldCBzdHJfaW5kXzQsIG9mZnNldCA9IHBhcnNlX2ludGVnZXIgc3RyX2luZF8zIGVuZF9pbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RyX2luZF81ID0gcGFyc2Vfc3BhY2VzIHN0cl9pbmRfNCBlbmRfaW5kIGluXG4gICAgICAgICAgICAgICAgaWYgc3RyLltzdHJfaW5kXzVdIDw+ICc+JyB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgICAgICAgICAgICAgICBsZXQgcyA9IFN0cmluZy5zdWIgc3RyIChzdHJfaW5kLTIpIChzdHJfaW5kXzUtc3RyX2luZCszKSBpblxuICAgICAgICAgICAgICAgIHN0cl9pbmRfNSArIDEsIEJyZWFrIChzLCB3aWR0aCwgb2Zmc2V0KVxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIClcbiAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT5cbiAgICAgICAgc3RyX2luZCwgQnJlYWsgKFwiQDtcIiwgMSwgMClcbiAgICBpblxuICAgIGxldCBGbXRfRUJCIGZtdF9yZXN0ID0gcGFyc2UgbmV4dF9pbmQgZW5kX2luZCBpblxuICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIHRoZSBzaXplIGluIGEgPG4+LiAqKVxuICBhbmQgcGFyc2VfbWFnaWNfc2l6ZSA6IHR5cGUgZSBmIC4gaW50IC0+IGludCAtPiAoXywgXywgZSwgZikgZm10X2ViYiA9XG4gIGZ1biBzdHJfaW5kIGVuZF9pbmQgLT5cbiAgICBtYXRjaFxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kIGluXG4gICAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF8xXSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICctJyAtPlxuICAgICAgICAgIGxldCBzdHJfaW5kXzIsIHNpemUgPSBwYXJzZV9pbnRlZ2VyIHN0cl9pbmRfMSBlbmRfaW5kIGluXG4gICAgICAgICAgbGV0IHN0cl9pbmRfMyA9IHBhcnNlX3NwYWNlcyBzdHJfaW5kXzIgZW5kX2luZCBpblxuICAgICAgICAgIGlmIHN0ci5bc3RyX2luZF8zXSA8PiAnPicgdGhlbiByYWlzZSBOb3RfZm91bmQ7XG4gICAgICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciAoc3RyX2luZCAtIDIpIChzdHJfaW5kXzMgLSBzdHJfaW5kICsgMykgaW5cbiAgICAgICAgICBTb21lIChzdHJfaW5kXzMgKyAxLCBNYWdpY19zaXplIChzLCBzaXplKSlcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+XG4gICAgICAgIE5vbmVcbiAgICB3aXRoXG4gICAgfCBTb21lIChuZXh0X2luZCwgZm9ybWF0dGluZ19saXQpIC0+XG4gICAgICBsZXQgRm10X0VCQiBmbXRfcmVzdCA9IHBhcnNlIG5leHRfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChmb3JtYXR0aW5nX2xpdCwgZm10X3Jlc3QpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IEZtdF9FQkIgZm10X3Jlc3QgPSBwYXJzZSBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICAgIEZtdF9FQkIgKEZvcm1hdHRpbmdfbGl0IChTY2FuX2luZGljICc8JywgZm10X3Jlc3QpKVxuXG4gICgqIFBhcnNlIGFuZCBjb25zdHJ1Y3QgYSBjaGFyIHNldC4gKilcbiAgYW5kIHBhcnNlX2NoYXJfc2V0IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcblxuICAgIGxldCBjaGFyX3NldCA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICAgIGxldCBhZGRfY2hhciBjID1cbiAgICAgIGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjO1xuICAgIGluXG4gICAgbGV0IGFkZF9yYW5nZSBjIGMnID1cbiAgICAgIGZvciBpID0gaW50X29mX2NoYXIgYyB0byBpbnRfb2ZfY2hhciBjJyBkb1xuICAgICAgICBhZGRfaW5fY2hhcl9zZXQgY2hhcl9zZXQgKGNoYXJfb2ZfaW50IGkpO1xuICAgICAgZG9uZTtcbiAgICBpblxuXG4gICAgbGV0IGZhaWxfc2luZ2xlX3BlcmNlbnQgc3RyX2luZCA9XG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6ICclJScgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCBcXFxuICAgICAgICAgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC5cIiBzdHIgc3RyX2luZFxuICAgIGluXG5cbiAgICAoKiBQYXJzZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIGEgY2hhciBzZXQuICopXG4gICAgbGV0IHJlYyBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIGxldCBjID0gc3RyLltzdHJfaW5kXSBpblxuICAgICAgcGFyc2VfY2hhcl9zZXRfYWZ0ZXJfY2hhciAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICAgKCogUGFyc2UgdGhlIGNvbnRlbnQgb2YgYSBjaGFyIHNldCB1bnRpbCB0aGUgZmlyc3QgJ10nLiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9jb250ZW50IHN0cl9pbmQgZW5kX2luZCA9XG4gICAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgICB8ICddJyAtPlxuICAgICAgICBzdHJfaW5kICsgMVxuICAgICAgfCAnLScgLT5cbiAgICAgICAgYWRkX2NoYXIgJy0nO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgICAgfCBjIC0+XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGNcblxuICAgICgqIFRlc3QgZm9yIHJhbmdlIGluIGNoYXIgc2V0LiAqKVxuICAgIGFuZCBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIHN0cl9pbmQgKyAxXG4gICAgICB8ICctJyAtPlxuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9taW51cyAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyB3aGVuIGMgPSAnJScgLT5cbiAgICAgICAgYWRkX2NoYXIgYyc7XG4gICAgICAgIHBhcnNlX2NoYXJfc2V0X2NvbnRlbnQgKHN0cl9pbmQgKyAxKSBlbmRfaW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGlmIGMgPSAnJScgdGhlbiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmQ7XG4gICAgICAgICgqIG5vdGUgdGhhdCAnQCcgYWxvbmUgaXMgYWNjZXB0ZWQsIGFzIGRvbmUgYnkgdGhlIGxlZ2FjeVxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbjsgdGhlIGRvY3VtZW50YXRpb24gc3BlY2lmaWNhbGx5IHJlcXVpcmVzICVAXG4gICAgICAgICAgIHNvIHdlIGNvdWxkIHdhcm4gb24gdGhhdCAqKVxuICAgICAgICBhZGRfY2hhciBjO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIChzdHJfaW5kICsgMSkgZW5kX2luZCBjJ1xuXG4gICAgKCogTWFuYWdlIHJhbmdlIGluIGNoYXIgc2V0IChleGNlcHQgaWYgdGhlICctJyB0aGUgbGFzdCBjaGFyIGJlZm9yZSAnXScpICopXG4gICAgYW5kIHBhcnNlX2NoYXJfc2V0X2FmdGVyX21pbnVzIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmRdIHdpdGhcbiAgICAgIHwgJ10nIC0+XG4gICAgICAgIGFkZF9jaGFyIGM7XG4gICAgICAgIGFkZF9jaGFyICctJztcbiAgICAgICAgc3RyX2luZCArIDFcbiAgICAgIHwgJyUnIC0+XG4gICAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICBiZWdpbiBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICAgICAgfCAoJyUnIHwgJ0AnKSBhcyBjJyAtPlxuICAgICAgICAgICAgYWRkX3JhbmdlIGMgYyc7XG4gICAgICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMikgZW5kX2luZFxuICAgICAgICAgIHwgXyAtPiBmYWlsX3NpbmdsZV9wZXJjZW50IHN0cl9pbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGMnIC0+XG4gICAgICAgIGFkZF9yYW5nZSBjIGMnO1xuICAgICAgICBwYXJzZV9jaGFyX3NldF9jb250ZW50IChzdHJfaW5kICsgMSkgZW5kX2luZFxuICAgIGluXG4gICAgbGV0IHN0cl9pbmQsIHJldmVyc2UgPVxuICAgICAgaWYgc3RyX2luZCA9IGVuZF9pbmQgdGhlbiB1bmV4cGVjdGVkX2VuZF9vZl9mb3JtYXQgZW5kX2luZDtcbiAgICAgIG1hdGNoIHN0ci5bc3RyX2luZF0gd2l0aFxuICAgICAgICB8ICdeJyAtPiBzdHJfaW5kICsgMSwgdHJ1ZVxuICAgICAgICB8IF8gLT4gc3RyX2luZCwgZmFsc2UgaW5cbiAgICBsZXQgbmV4dF9pbmQgPSBwYXJzZV9jaGFyX3NldF9zdGFydCBzdHJfaW5kIGVuZF9pbmQgaW5cbiAgICBsZXQgY2hhcl9zZXQgPSBmcmVlemVfY2hhcl9zZXQgY2hhcl9zZXQgaW5cbiAgICBuZXh0X2luZCwgKGlmIHJldmVyc2UgdGhlbiByZXZfY2hhcl9zZXQgY2hhcl9zZXQgZWxzZSBjaGFyX3NldClcblxuICAoKiBDb25zdW1lIGFsbCBuZXh0IHNwYWNlcywgcmFpc2UgYW4gRmFpbHVyZSBpZiBlbmRfaW5kIGlzIHJlYWNoZWQuICopXG4gIGFuZCBwYXJzZV9zcGFjZXMgc3RyX2luZCBlbmRfaW5kID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgIGlmIHN0ci5bc3RyX2luZF0gPSAnICcgdGhlbiBwYXJzZV9zcGFjZXMgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIGVsc2Ugc3RyX2luZFxuXG4gICgqIFJlYWQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGZyb20gdGhlIHN0cmluZywgcmFpc2UgYSBGYWlsdXJlIGlmIGVuZF9pbmQgaXNcbiAgICAgcmVhY2hlZC4gKilcbiAgYW5kIHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCBhY2MgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgIGxldCBuZXdfYWNjID0gYWNjICogMTAgKyAoaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJykgaW5cbiAgICAgIGlmIG5ld19hY2MgPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogaW50ZWdlciAlZCBpcyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICVkXCJcbiAgICAgICAgICBzdHIgbmV3X2FjYyBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIG5ld19hY2NcbiAgICB8IF8gLT4gc3RyX2luZCwgYWNjXG5cbiAgKCogUmVhZCBhIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIGludGVnZXIgZnJvbSB0aGUgc3RyaW5nLCByYWlzZSBhIEZhaWx1cmVcbiAgICAgaWYgZW5kX2luZCBpcyByZWFjaGVkLiAqKVxuICBhbmQgcGFyc2VfaW50ZWdlciBzdHJfaW5kIGVuZF9pbmQgPVxuICAgIGlmIHN0cl9pbmQgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IHBhcnNlX3Bvc2l0aXZlIHN0cl9pbmQgZW5kX2luZCAwXG4gICAgfCAnLScgLT4gKFxuICAgICAgaWYgc3RyX2luZCArIDEgPSBlbmRfaW5kIHRoZW4gdW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IGVuZF9pbmQ7XG4gICAgICBtYXRjaCBzdHIuW3N0cl9pbmQgKyAxXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgLT5cbiAgICAgICAgbGV0IG5leHRfaW5kLCBuID0gcGFyc2VfcG9zaXRpdmUgKHN0cl9pbmQgKyAxKSBlbmRfaW5kIDAgaW5cbiAgICAgICAgbmV4dF9pbmQsIC1uXG4gICAgICB8IGMgLT5cbiAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJkaWdpdFwiIGNcbiAgICApXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gICgqIEFkZCBhIGxpdGVyYWwgdG8gYSBmb3JtYXQgZnJvbSBhIGxpdGVyYWwgY2hhcmFjdGVyIHN1Yi1zZXF1ZW5jZS4gKilcbiAgYW5kIGFkZF9saXRlcmFsIDogdHlwZSBhIGQgZSBmIC5cbiAgICAgIGludCAtPiBpbnQgLT4gKGEsIF8sIF8sIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKF8sIF8sIGUsIGYpIGZtdF9lYmIgPVxuICBmdW4gbGl0X3N0YXJ0IHN0cl9pbmQgZm10IC0+IG1hdGNoIHN0cl9pbmQgLSBsaXRfc3RhcnQgd2l0aFxuICAgIHwgMCAgICAtPiBGbXRfRUJCIGZtdFxuICAgIHwgMSAgICAtPiBGbXRfRUJCIChDaGFyX2xpdGVyYWwgKHN0ci5bbGl0X3N0YXJ0XSwgZm10KSlcbiAgICB8IHNpemUgLT4gRm10X0VCQiAoU3RyaW5nX2xpdGVyYWwgKFN0cmluZy5zdWIgc3RyIGxpdF9zdGFydCBzaXplLCBmbXQpKVxuXG4gICgqIFNlYXJjaCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHN1Yi1mb3JtYXRcbiAgICAgKGkuZS4gdGhlIGNvcnJlc3BvbmRpbmcgXCIlfVwiIG9yIFwiJSlcIikgKilcbiAgYW5kIHNlYXJjaF9zdWJmb3JtYXRfZW5kIHN0cl9pbmQgZW5kX2luZCBjID1cbiAgICBpZiBzdHJfaW5kID0gZW5kX2luZCB0aGVuXG4gICAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICAgIFwiaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIFxcXG4gICAgICAgICBleHBlY3RlZCBcXFwiJSUlY1xcXCIgYXQgY2hhcmFjdGVyIG51bWJlciAlZFwiIHN0ciBjIGVuZF9pbmQ7XG4gICAgbWF0Y2ggc3RyLltzdHJfaW5kXSB3aXRoXG4gICAgfCAnJScgLT5cbiAgICAgIGlmIHN0cl9pbmQgKyAxID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgaWYgc3RyLltzdHJfaW5kICsgMV0gPSBjIHRoZW4gKCogRW5kIG9mIGZvcm1hdCBmb3VuZCAqKSBzdHJfaW5kIGVsc2VcbiAgICAgICAgYmVnaW4gbWF0Y2ggc3RyLltzdHJfaW5kICsgMV0gd2l0aFxuICAgICAgICB8ICdfJyAtPlxuICAgICAgICAgICgqIFNlYXJjaCBmb3IgXCIlXyhcIiBvciBcIiVfe1wiLiAqKVxuICAgICAgICAgIGlmIHN0cl9pbmQgKyAyID0gZW5kX2luZCB0aGVuIHVuZXhwZWN0ZWRfZW5kX29mX2Zvcm1hdCBlbmRfaW5kO1xuICAgICAgICAgIGJlZ2luIG1hdGNoIHN0ci5bc3RyX2luZCArIDJdIHdpdGhcbiAgICAgICAgICB8ICd7JyAtPlxuICAgICAgICAgICAgbGV0IHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDMpIGVuZF9pbmQgJ30nIGluXG4gICAgICAgICAgICBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3ViX2VuZCArIDIpIGVuZF9pbmQgY1xuICAgICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgICBsZXQgc3ViX2VuZCA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCAnKScgaW5cbiAgICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgICAgfCBfIC0+IHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMykgZW5kX2luZCBjXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgJ3snIC0+XG4gICAgICAgICAgKCogJXsuLi4lfSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICd9JyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJygnIC0+XG4gICAgICAgICAgKCogJSguLi4lKSBzdWItZm9ybWF0IGZvdW5kLiAqKVxuICAgICAgICAgIGxldCBzdWJfZW5kID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQgKHN0cl9pbmQgKyAyKSBlbmRfaW5kICcpJyBpblxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdWJfZW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIHwgJ30nIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICUoLi4uJX0uICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJyknXCIgJ30nXG4gICAgICAgIHwgJyknIC0+XG4gICAgICAgICAgKCogRXJyb3I6ICV7Li4uJSkuICopXG4gICAgICAgICAgZXhwZWN0ZWRfY2hhcmFjdGVyIChzdHJfaW5kICsgMSkgXCJjaGFyYWN0ZXIgJ30nXCIgJyknXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHNlYXJjaF9zdWJmb3JtYXRfZW5kIChzdHJfaW5kICsgMikgZW5kX2luZCBjXG4gICAgICAgIGVuZFxuICAgIHwgXyAtPiBzZWFyY2hfc3ViZm9ybWF0X2VuZCAoc3RyX2luZCArIDEpIGVuZF9pbmQgY1xuXG4gICgqIENoZWNrIGlmIHN5bWIgaXMgYSB2YWxpZCBpbnQgY29udmVyc2lvbiBhZnRlciBcIiVsXCIsIFwiJW5cIiBvciBcIiVMXCIgKilcbiAgYW5kIGlzX2ludF9iYXNlIHN5bWIgPSBtYXRjaCBzeW1iIHdpdGhcbiAgICB8ICdkJyB8ICdpJyB8ICd4JyB8ICdYJyB8ICdvJyB8ICd1JyAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG5cbiAgKCogQ29udmVydCBhIGNoYXIgKGwsIG4gb3IgTCkgdG8gaXRzIGFzc29jaWF0ZWQgY291bnRlci4gKilcbiAgYW5kIGNvdW50ZXJfb2ZfY2hhciBzeW1iID0gbWF0Y2ggc3ltYiB3aXRoXG4gICAgfCAnbCcgLT4gTGluZV9jb3VudGVyICB8ICduJyAtPiBDaGFyX2NvdW50ZXJcbiAgICB8ICdMJyAtPiBUb2tlbl9jb3VudGVyIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzeW1iKSB0byBpdHMgYXNzb2NpYXRlZCBpbnRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBzcGFjZSBzeW1iID1cbiAgICBtYXRjaCBwbHVzLCBoYXNoLCBzcGFjZSwgc3ltYiB3aXRoXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnZCcgLT4gSW50X2QgIHwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgJ2knIC0+IEludF9pXG4gICAgfCBmYWxzZSwgZmFsc2UsICB0cnVlLCAnZCcgLT4gSW50X3NkIHwgZmFsc2UsIGZhbHNlLCAgdHJ1ZSwgJ2knIC0+IEludF9zaVxuICAgIHwgIHRydWUsIGZhbHNlLCBmYWxzZSwgJ2QnIC0+IEludF9wZCB8ICB0cnVlLCBmYWxzZSwgZmFsc2UsICdpJyAtPiBJbnRfcGlcbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd4JyAtPiBJbnRfeCAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnWCcgLT4gSW50X1hcbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICd4JyAtPiBJbnRfQ3ggfCBmYWxzZSwgIHRydWUsIGZhbHNlLCAnWCcgLT4gSW50X0NYXG4gICAgfCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAnbycgLT4gSW50X29cbiAgICB8IGZhbHNlLCAgdHJ1ZSwgZmFsc2UsICdvJyAtPiBJbnRfQ29cbiAgICB8IGZhbHNlLCBmYWxzZSwgZmFsc2UsICd1JyAtPiBJbnRfdVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2QnIC0+IEludF9DZFxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ2knIC0+IEludF9DaVxuICAgIHwgZmFsc2UsICB0cnVlLCBmYWxzZSwgJ3UnIC0+IEludF9DdVxuICAgIHwgXywgdHJ1ZSwgXywgJ3gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DeFxuICAgIHwgXywgdHJ1ZSwgXywgJ1gnIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9DWFxuICAgIHwgXywgdHJ1ZSwgXywgJ28nIHdoZW4gbGVnYWN5X2JlaGF2aW9yIC0+IEludF9Db1xuICAgIHwgXywgdHJ1ZSwgXywgKCdkJyB8ICdpJyB8ICd1JykgLT5cbiAgICAgIGlmIGxlZ2FjeV9iZWhhdmlvciB0aGVuICgqIGlnbm9yZSAqKVxuICAgICAgICBjb21wdXRlX2ludF9jb252IHBjdF9pbmQgc3RyX2luZCBwbHVzIGZhbHNlIHNwYWNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kIHN5bWIgXCInIydcIlxuICAgIHwgdHJ1ZSwgXywgdHJ1ZSwgXyAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW5cbiAgICAgICAgKCogcGx1cyBhbmQgc3BhY2U6IGxlZ2FjeSBpbXBsZW1lbnRhdGlvbiBwcmVmZXJzIHBsdXMgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIGZhbHNlIHN5bWJcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiXG4gICAgfCBmYWxzZSwgXywgdHJ1ZSwgXyAgICAtPlxuICAgICAgaWYgbGVnYWN5X2JlaGF2aW9yIHRoZW4gKCogaWdub3JlICopXG4gICAgICAgIGNvbXB1dGVfaW50X2NvbnYgcGN0X2luZCBzdHJfaW5kIHBsdXMgaGFzaCBmYWxzZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJyAnXCJcbiAgICB8IHRydWUsIF8sIGZhbHNlLCBfICAgIC0+XG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiAoKiBpZ25vcmUgKilcbiAgICAgICAgY29tcHV0ZV9pbnRfY29udiBwY3RfaW5kIHN0cl9pbmQgZmFsc2UgaGFzaCBzcGFjZSBzeW1iXG4gICAgICBlbHNlIGluY29tcGF0aWJsZV9mbGFnIHBjdF9pbmQgc3RyX2luZCBzeW1iIFwiJysnXCJcbiAgICB8IGZhbHNlLCBfLCBmYWxzZSwgXyAtPiBhc3NlcnQgZmFsc2VcblxuICAoKiBDb252ZXJ0IChwbHVzLCBzcGFjZSwgc3ltYikgdG8gaXRzIGFzc29jaWF0ZWQgZmxvYXRfY29udi4gKilcbiAgYW5kIGNvbXB1dGVfZmxvYXRfY29udiBwY3RfaW5kIHN0cl9pbmQgcGx1cyBoYXNoIHNwYWNlIHN5bWIgPVxuICAgIGxldCBmbGFnID0gbWF0Y2ggcGx1cywgc3BhY2Ugd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEZsb2F0X2ZsYWdfXG4gICAgfCBmYWxzZSwgIHRydWUgLT4gRmxvYXRfZmxhZ19zXG4gICAgfCAgdHJ1ZSwgZmFsc2UgLT4gRmxvYXRfZmxhZ19wXG4gICAgfCAgdHJ1ZSwgIHRydWUgLT5cbiAgICAgICgqIHBsdXMgYW5kIHNwYWNlOiBsZWdhY3kgaW1wbGVtZW50YXRpb24gcHJlZmVycyBwbHVzICopXG4gICAgICBpZiBsZWdhY3lfYmVoYXZpb3IgdGhlbiBGbG9hdF9mbGFnX3BcbiAgICAgIGVsc2UgaW5jb21wYXRpYmxlX2ZsYWcgcGN0X2luZCBzdHJfaW5kICcgJyBcIicrJ1wiIGluXG4gICAgbGV0IGtpbmQgPSBtYXRjaCBoYXNoLCBzeW1iIHdpdGhcbiAgICB8IF8sICdmJyAtPiBGbG9hdF9mXG4gICAgfCBfLCAnZScgLT4gRmxvYXRfZVxuICAgIHwgXywgJ0UnIC0+IEZsb2F0X0VcbiAgICB8IF8sICdnJyAtPiBGbG9hdF9nXG4gICAgfCBfLCAnRycgLT4gRmxvYXRfR1xuICAgIHwgXywgJ2gnIC0+IEZsb2F0X2hcbiAgICB8IF8sICdIJyAtPiBGbG9hdF9IXG4gICAgfCBmYWxzZSwgJ0YnIC0+IEZsb2F0X0ZcbiAgICB8IHRydWUsICdGJyAtPiBGbG9hdF9DRlxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgaW5cbiAgICBmbGFnLCBraW5kXG5cbiAgKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYSBmcmllbmRseSBlcnJvciBtZXNzYWdlIGFib3V0IGluY29tcGF0aWJsZSBvcHRpb25zLiopXG4gIGFuZCBpbmNvbXBhdGlibGVfZmxhZyA6IHR5cGUgYSAuIGludCAtPiBpbnQgLT4gY2hhciAtPiBzdHJpbmcgLT4gYSA9XG4gICAgZnVuIHBjdF9pbmQgc3RyX2luZCBzeW1iIG9wdGlvbiAtPlxuICAgICAgbGV0IHN1YmZtdCA9IFN0cmluZy5zdWIgc3RyIHBjdF9pbmQgKHN0cl9pbmQgLSBwY3RfaW5kKSBpblxuICAgICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgICBcImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBcXFxuICAgICAgICAgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWItZm9ybWF0ICVTXCJcbiAgICAgICAgc3RyIHBjdF9pbmQgb3B0aW9uIHN5bWIgc3ViZm10XG5cbiAgaW4gcGFyc2UgMCAoU3RyaW5nLmxlbmd0aCBzdHIpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAoKiBHdWFyZGVkIHN0cmluZyB0byBmb3JtYXQgY29udmVyc2lvbnMgKilcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBhY2NvcmRpbmcgdG8gYW4gZm10dHkuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHN0ciBmbXR0eSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgZm10dHksIHN0cilcbiAgd2l0aCBUeXBlX21pc21hdGNoIC0+XG4gICAgZmFpbHdpdGhfbWVzc2FnZVxuICAgICAgXCJiYWQgaW5wdXQ6IGZvcm1hdCB0eXBlIG1pc21hdGNoIGJldHdlZW4gJVMgYW5kICVTXCJcbiAgICAgIHN0ciAoc3RyaW5nX29mX2ZtdHR5IGZtdHR5KVxuXG4oKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGEgZm9ybWF0IGNvbXBhdGlibGUgd2l0aCBhbiBvdGhlciBmb3JtYXQuICopXG4oKiBSYWlzZSBbRmFpbHVyZV0gd2l0aCBhbiBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgdHlwZSBtaXNtYXRjaC4gKilcbmxldCBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgKEZvcm1hdCAoZm10Jywgc3RyJykpID1cbiAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgc3RyIGluXG4gIHRyeSBGb3JtYXQgKHR5cGVfZm9ybWF0IGZtdCAoZm10dHlfb2ZfZm10IGZtdCcpLCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiIHN0ciBzdHInXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIFhhdmllciBMZXJveSBhbmQgUGllcnJlIFdlaXMsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG5sZXQga2ZwcmludGYgayBvIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGYgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBvIGFjYzsgayBvKSBFbmRfb2ZfYWNjIGZtdFxubGV0IGticHJpbnRmIGsgYiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IGJ1ZnB1dF9hY2MgYiBhY2M7IGsgYikgRW5kX29mX2FjYyBmbXRcbmxldCBpa2ZwcmludGYgayBvYyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIG9jIGZtdFxubGV0IGlrYnByaW50ZiA9IGlrZnByaW50ZlxuXG5sZXQgZnByaW50ZiBvYyBmbXQgPSBrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgYnByaW50ZiBiIGZtdCA9IGticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IGlmcHJpbnRmIG9jIGZtdCA9IGlrZnByaW50ZiBpZ25vcmUgb2MgZm10XG5sZXQgaWJwcmludGYgYiBmbXQgPSBpa2JwcmludGYgaWdub3JlIGIgZm10XG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3Rkb3V0IGZtdFxubGV0IGVwcmludGYgZm10ID0gZnByaW50ZiBzdGRlcnIgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGsnIGFjYyA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgICBzdHJwdXRfYWNjIGJ1ZiBhY2M7XG4gICAgayAoQnVmZmVyLmNvbnRlbnRzIGJ1ZikgaW5cbiAgbWFrZV9wcmludGYgaycgRW5kX29mX2FjYyBmbXRcblxubGV0IHNwcmludGYgZm10ID0ga3NwcmludGYgKGZ1biBzIC0+IHMpIGZtdFxuXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUga2V5ID0gc3RyaW5nXG50eXBlIGRvYyA9IHN0cmluZ1xudHlwZSB1c2FnZV9tc2cgPSBzdHJpbmdcbnR5cGUgYW5vbl9mdW4gPSAoc3RyaW5nIC0+IHVuaXQpXG5cbnR5cGUgc3BlYyA9XG4gIHwgVW5pdCBvZiAodW5pdCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB1bml0IGFyZ3VtZW50ICopXG4gIHwgQm9vbCBvZiAoYm9vbCAtPiB1bml0KSAgICAgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIGJvb2wgYXJndW1lbnQgKilcbiAgfCBTZXQgb2YgYm9vbCByZWYgICAgICAgICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0cnVlICopXG4gIHwgQ2xlYXIgb2YgYm9vbCByZWYgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gZmFsc2UgKilcbiAgfCBTdHJpbmcgb2YgKHN0cmluZyAtPiB1bml0KSAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50ICopXG4gIHwgU2V0X3N0cmluZyBvZiBzdHJpbmcgcmVmICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IEludCBvZiAoaW50IC0+IHVuaXQpICAgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYW4gaW50IGFyZ3VtZW50ICopXG4gIHwgU2V0X2ludCBvZiBpbnQgcmVmICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdGhlIGludCBhcmd1bWVudCAqKVxuICB8IEZsb2F0IG9mIChmbG9hdCAtPiB1bml0KSAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFNldF9mbG9hdCBvZiBmbG9hdCByZWYgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBmbG9hdCBhcmd1bWVudCAqKVxuICB8IFR1cGxlIG9mIHNwZWMgbGlzdCAgICAgICAgICgqIFRha2Ugc2V2ZXJhbCBhcmd1bWVudHMgYWNjb3JkaW5nIHRvIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMgbGlzdCAqKVxuICB8IFN5bWJvbCBvZiBzdHJpbmcgbGlzdCAqIChzdHJpbmcgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBUYWtlIG9uZSBvZiB0aGUgc3ltYm9scyBhcyBhcmd1bWVudCBhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBzeW1ib2wuICopXG4gIHwgUmVzdCBvZiAoc3RyaW5nIC0+IHVuaXQpICAgKCogU3RvcCBpbnRlcnByZXRpbmcga2V5d29yZHMgYW5kIGNhbGwgdGhlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gd2l0aCBlYWNoIHJlbWFpbmluZyBhcmd1bWVudCAqKVxuICB8IFJlc3RfYWxsIG9mIChzdHJpbmcgbGlzdCAtPiB1bml0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggYWxsIHJlbWFpbmluZyBhcmd1bWVudHMuICopXG4gIHwgRXhwYW5kIG9mIChzdHJpbmcgLT4gc3RyaW5nIGFycmF5KSAoKiBJZiB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyB0byBwcm9jZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgb2YgdGhlIGZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbXCItZm9vXCI7IFwiYXJnXCJdIEAgcmVzdF0gd2hlcmUgXCJmb29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVnaXN0ZXJlZCBhcyBbRXhwYW5kIGZdLCB0aGVuIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIFtmIFwiYXJnXCIgQCByZXN0XSBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NlZC4gT25seSBhbGxvd2VkIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNdLiAqKVxuXG5leGNlcHRpb24gQmFkIG9mIHN0cmluZ1xuZXhjZXB0aW9uIEhlbHAgb2Ygc3RyaW5nXG5cbnR5cGUgZXJyb3IgPVxuICB8IFVua25vd24gb2Ygc3RyaW5nXG4gIHwgV3Jvbmcgb2Ygc3RyaW5nICogc3RyaW5nICogc3RyaW5nICAoKiBvcHRpb24sIGFjdHVhbCwgZXhwZWN0ZWQgKilcbiAgfCBNaXNzaW5nIG9mIHN0cmluZ1xuICB8IE1lc3NhZ2Ugb2Ygc3RyaW5nXG5cbmV4Y2VwdGlvbiBTdG9wIG9mIGVycm9yICgqIHVzZWQgaW50ZXJuYWxseSAqKVxuXG5vcGVuIFByaW50ZlxuXG5sZXQgcmVjIGFzc29jMyB4IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCAoeTEsIHkyLCBfKSA6OiBfIHdoZW4geTEgPSB4IC0+IHkyXG4gIHwgXyA6OiB0IC0+IGFzc29jMyB4IHRcblxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJz0nIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgU3RyaW5nLnN1YiBzIDAgaSwgU3RyaW5nLnN1YiBzIChpKzEpIChsZW4tKGkrMSkpXG5cblxubGV0IG1ha2Vfc3ltbGlzdCBwcmVmaXggc2VwIHN1ZmZpeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gXCI8bm9uZT5cIlxuICB8IGg6OnQgLT4gKExpc3QuZm9sZF9sZWZ0IChmdW4geCB5IC0+IHggXiBzZXAgXiB5KSAocHJlZml4IF4gaCkgdCkgXiBzdWZmaXhcblxuXG5sZXQgcHJpbnRfc3BlYyBidWYgKGtleSwgc3BlYywgZG9jKSA9XG4gIGlmIFN0cmluZy5sZW5ndGggZG9jID4gMCB0aGVuXG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBTeW1ib2wgKGwsIF8pIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlcyVzXFxuXCIga2V5IChtYWtlX3N5bWxpc3QgXCJ7XCIgXCJ8XCIgXCJ9XCIgbCkgZG9jXG4gICAgfCBfIC0+XG4gICAgICAgIGJwcmludGYgYnVmIFwiICAlcyAlc1xcblwiIGtleSBkb2NcblxuXG5sZXQgaGVscF9hY3Rpb24gKCkgPSByYWlzZSAoU3RvcCAoVW5rbm93biBcIi1oZWxwXCIpKVxuXG5sZXQgYWRkX2hlbHAgc3BlY2xpc3QgPVxuICBsZXQgYWRkMSA9XG4gICAgdHJ5IGlnbm9yZSAoYXNzb2MzIFwiLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgYW5kIGFkZDIgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi0taGVscFwiIHNwZWNsaXN0KTsgW11cbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgW1wiLS1oZWxwXCIsIFVuaXQgaGVscF9hY3Rpb24sIFwiIERpc3BsYXkgdGhpcyBsaXN0IG9mIG9wdGlvbnNcIl1cbiAgaW5cbiAgc3BlY2xpc3QgQCAoYWRkMSBAIGFkZDIpXG5cblxubGV0IHVzYWdlX2IgYnVmIHNwZWNsaXN0IGVycm1zZyA9XG4gIGJwcmludGYgYnVmIFwiJXNcXG5cIiBlcnJtc2c7XG4gIExpc3QuaXRlciAocHJpbnRfc3BlYyBidWYpIChhZGRfaGVscCBzcGVjbGlzdClcblxuXG5sZXQgdXNhZ2Vfc3RyaW5nIHNwZWNsaXN0IGVycm1zZyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgdXNhZ2VfYiBiIHNwZWNsaXN0IGVycm1zZztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgdXNhZ2Ugc3BlY2xpc3QgZXJybXNnID1cbiAgZXByaW50ZiBcIiVzXCIgKHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cpXG5cblxubGV0IGN1cnJlbnQgPSByZWYgMFxuXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoYm9vbF9vZl9zdHJpbmcgeClcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gTm9uZVxuXG5sZXQgaW50X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgeCA9XG4gIHRyeSBTb21lIChmbG9hdF9vZl9zdHJpbmcgeClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGFsbG93X2V4cGFuZCBjdXJyZW50IGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJtc2cgPVxuICBsZXQgaW5pdHBvcyA9ICFjdXJyZW50IGluXG4gIGxldCBjb252ZXJ0X2Vycm9yIGVycm9yID1cbiAgICAoKiBjb252ZXJ0IGFuIGludGVybmFsIGVycm9yIHRvIGEgQmFkL0hlbHAgZXhjZXB0aW9uXG4gICAgICAgKm9yKiBhZGQgdGhlIHByb2dyYW0gbmFtZSBhcyBhIHByZWZpeCBhbmQgdGhlIHVzYWdlIG1lc3NhZ2UgYXMgYSBzdWZmaXhcbiAgICAgICB0byBhbiB1c2VyLXJhaXNlZCBCYWQgZXhjZXB0aW9uLlxuICAgICopXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICAgIGxldCBwcm9nbmFtZSA9XG4gICAgICBpZiBpbml0cG9zIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oaW5pdHBvcykgZWxzZSBcIig/KVwiIGluXG4gICAgYmVnaW4gbWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgfCBVbmtub3duIFwiLWhlbHBcIiAtPiAoKVxuICAgICAgfCBVbmtub3duIFwiLS1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IHVua25vd24gb3B0aW9uICclcycuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBNaXNzaW5nIHMgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogb3B0aW9uICclcycgbmVlZHMgYW4gYXJndW1lbnQuXFxuXCIgcHJvZ25hbWUgc1xuICAgICAgfCBXcm9uZyAob3B0LCBhcmcsIGV4cGVjdGVkKSAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB3cm9uZyBhcmd1bWVudCAnJXMnOyBvcHRpb24gJyVzJyBleHBlY3RzICVzLlxcblwiXG4gICAgICAgICAgICAgICAgICBwcm9nbmFtZSBhcmcgb3B0IGV4cGVjdGVkXG4gICAgICB8IE1lc3NhZ2UgcyAtPiAoKiB1c2VyIGVycm9yIG1lc3NhZ2UgKilcbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogJXMuXFxuXCIgcHJvZ25hbWUgc1xuICAgIGVuZDtcbiAgICB1c2FnZV9iIGIgIXNwZWNsaXN0IGVycm1zZztcbiAgICBpZiBlcnJvciA9IFVua25vd24gXCItaGVscFwiIHx8IGVycm9yID0gVW5rbm93biBcIi0taGVscFwiXG4gICAgdGhlbiBIZWxwIChCdWZmZXIuY29udGVudHMgYilcbiAgICBlbHNlIEJhZCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gIGluXG4gIGluY3IgY3VycmVudDtcbiAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSBkb1xuICAgIGJlZ2luIHRyeVxuICAgICAgbGV0IHMgPSAhYXJndi4oIWN1cnJlbnQpIGluXG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPj0gMSAmJiBzLlswXSA9ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBhY3Rpb24sIGZvbGxvdyA9XG4gICAgICAgICAgdHJ5IGFzc29jMyBzICFzcGVjbGlzdCwgTm9uZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQga2V5d29yZCwgYXJnID0gc3BsaXQgcyBpblxuICAgICAgICAgICAgYXNzb2MzIGtleXdvcmQgIXNwZWNsaXN0LCBTb21lIGFyZ1xuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChTdG9wIChVbmtub3duIHMpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm9fYXJnICgpID1cbiAgICAgICAgICBtYXRjaCBmb2xsb3cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwibm8gYXJndW1lbnRcIikpKSBpblxuICAgICAgICBsZXQgZ2V0X2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgaWYgIWN1cnJlbnQgKyAxIDwgKEFycmF5Lmxlbmd0aCAhYXJndikgdGhlbiAhYXJndi4oIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICBlbHNlIHJhaXNlIChTdG9wIChNaXNzaW5nIHMpKVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gYXJnXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjb25zdW1lX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5jciBjdXJyZW50XG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlYyB0cmVhdF9hY3Rpb24gPSBmdW5jdGlvblxuICAgICAgICB8IFVuaXQgZiAtPiBub19hcmcgKCk7IGYgKCk7XG4gICAgICAgIHwgQm9vbCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggYm9vbF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBib29sZWFuXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IGYgc1xuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0IHIgLT4gbm9fYXJnICgpOyByIDo9IHRydWU7XG4gICAgICAgIHwgQ2xlYXIgciAtPiBub19hcmcgKCk7IHIgOj0gZmFsc2U7XG4gICAgICAgIHwgU3RyaW5nIGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFN5bWJvbCAoc3ltYiwgZikgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBpZiBMaXN0Lm1lbSBhcmcgc3ltYiB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIGYgYXJnO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm9uZSBvZjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gKG1ha2Vfc3ltbGlzdCBcIlwiIFwiIFwiIFwiXCIgc3ltYikpKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IFNldF9zdHJpbmcgciAtPlxuICAgICAgICAgICAgciA6PSBnZXRfYXJnICgpO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgSW50IGYgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfaW50IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBpbnRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImFuIGludGVnZXJcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gciA6PSB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBGbG9hdCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggZmxvYXRfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgZmxvYXRcIikpKVxuICAgICAgICAgICAgfCBTb21lIHggLT4gZiB4XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTZXRfZmxvYXQgciAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgVHVwbGUgc3BlY3MgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIExpc3QuaXRlciB0cmVhdF9hY3Rpb24gc3BlY3M7XG4gICAgICAgIHwgUmVzdCBmIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICB3aGlsZSAhY3VycmVudCA8IChBcnJheS5sZW5ndGggIWFyZ3YpIC0gMSBkb1xuICAgICAgICAgICAgICBmICFhcmd2LighY3VycmVudCArIDEpO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgIHwgUmVzdF9hbGwgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCBBcnJheS5sZW5ndGggIWFyZ3YgLSAxIGRvXG4gICAgICAgICAgICAgIGFjYyA6PSAhYXJndi4oIWN1cnJlbnQgKyAxKSA6OiAhYWNjO1xuICAgICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICBmIChMaXN0LnJldiAhYWNjKVxuICAgICAgICB8IEV4cGFuZCBmIC0+XG4gICAgICAgICAgICBpZiBub3QgYWxsb3dfZXhwYW5kIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJBcmcuRXhwYW5kIGlzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmcucGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNcIik7XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgbGV0IG5ld2FyZyA9IGYgYXJnIGluXG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBiZWZvcmUgPSBBcnJheS5zdWIgIWFyZ3YgMCAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgYW5kIGFmdGVyID1cbiAgICAgICAgICAgICAgQXJyYXkuc3ViICFhcmd2ICghY3VycmVudCArIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAoKEFycmF5Lmxlbmd0aCAhYXJndikgLSAhY3VycmVudCAtIDEpIGluXG4gICAgICAgICAgICBhcmd2Oj0gQXJyYXkuY29uY2F0IFtiZWZvcmU7bmV3YXJnO2FmdGVyXTtcbiAgICAgICAgaW5cbiAgICAgICAgdHJlYXRfYWN0aW9uIGFjdGlvbiBlbmRcbiAgICAgIGVsc2UgYW5vbmZ1biBzXG4gICAgd2l0aCB8IEJhZCBtIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIChNZXNzYWdlIG0pKTtcbiAgICAgICAgIHwgU3RvcCBlIC0+IHJhaXNlIChjb252ZXJ0X2Vycm9yIGUpO1xuICAgIGVuZDtcbiAgICBpbmNyIGN1cnJlbnRcbiAgZG9uZVxuXG5sZXQgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IHRydWUgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnXG5cbmxldCBwYXJzZV9hcmd2X2R5bmFtaWMgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY19hdXggZmFsc2UgY3VycmVudCAocmVmIGFyZ3YpIHNwZWNsaXN0IGFub25mdW5cbiAgICBlcnJtc2dcblxuXG5sZXQgcGFyc2VfYXJndiA/KGN1cnJlbnQ9Y3VycmVudCkgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FyZ3ZfZHluYW1pYyB+Y3VycmVudDpjdXJyZW50IGFyZ3YgKHJlZiBzcGVjbGlzdCkgYW5vbmZ1biBlcnJtc2dcblxuXG5sZXQgcGFyc2UgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3YgU3lzLmFyZ3YgbCBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgcGFyc2VfZHluYW1pYyBsIGYgbXNnID1cbiAgdHJ5XG4gICAgcGFyc2VfYXJndl9keW5hbWljIFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cbmxldCBwYXJzZV9leHBhbmQgbCBmIG1zZyA9XG4gIHRyeVxuICAgIGxldCBhcmd2ID0gcmVmIFN5cy5hcmd2IGluXG4gICAgbGV0IHNwZWMgPSByZWYgbCBpblxuICAgIGxldCBjdXJyZW50ID0gcmVmICghY3VycmVudCkgaW5cbiAgICBwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pYyBjdXJyZW50IGFyZ3Ygc3BlYyBmIG1zZ1xuICB3aXRoXG4gIHwgQmFkIG1zZyAtPiBlcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMlxuICB8IEhlbHAgbXNnIC0+IHByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcblxuXG5sZXQgc2Vjb25kX3dvcmQgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIG4gPVxuICAgIGlmIG4gPj0gbGVuIHRoZW4gbGVuXG4gICAgZWxzZSBpZiBzLltuXSA9ICcgJyB0aGVuIGxvb3AgKG4rMSlcbiAgICBlbHNlIG5cbiAgaW5cbiAgbWF0Y2ggU3RyaW5nLmluZGV4IHMgJ1xcdCcgd2l0aFxuICB8IG4gLT4gbG9vcCAobisxKVxuICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT5cbiAgICAgIGJlZ2luIG1hdGNoIFN0cmluZy5pbmRleCBzICcgJyB3aXRoXG4gICAgICB8IG4gLT4gbG9vcCAobisxKVxuICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGxlblxuICAgICAgZW5kXG5cblxubGV0IG1heF9hcmdfbGVuIGN1ciAoa3dkLCBzcGVjLCBkb2MpID1cbiAgbWF0Y2ggc3BlYyB3aXRoXG4gIHwgU3ltYm9sIF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkKVxuICB8IF8gLT4gSW50Lm1heCBjdXIgKFN0cmluZy5sZW5ndGgga3dkICsgc2Vjb25kX3dvcmQgZG9jKVxuXG5cbmxldCByZXBsYWNlX2xlYWRpbmdfdGFiIHMgPVxuICBsZXQgc2VlbiA9IHJlZiBmYWxzZSBpblxuICBTdHJpbmcubWFwIChmdW5jdGlvbiAnXFx0JyB3aGVuIG5vdCAhc2VlbiAtPiBzZWVuIDo9IHRydWU7ICcgJyB8IGMgLT4gYykgc1xuXG5sZXQgYWRkX3BhZGRpbmcgbGVuIGtzZCA9XG4gIG1hdGNoIGtzZCB3aXRoXG4gIHwgKF8sIF8sIFwiXCIpIC0+XG4gICAgICAoKiBEbyBub3QgcGFkIHVuZG9jdW1lbnRlZCBvcHRpb25zLCBzbyB0aGF0IHRoZXkgc3RpbGwgZG9uJ3Qgc2hvdyB1cCB3aGVuXG4gICAgICAgKiBydW4gdGhyb3VnaCBbdXNhZ2VdIG9yIFtwYXJzZV0uICopXG4gICAgICBrc2RcbiAgfCAoa3dkLCAoU3ltYm9sIF8gYXMgc3BlYyksIG1zZykgLT5cbiAgICAgIGxldCBjdXRjb2wgPSBzZWNvbmRfd29yZCBtc2cgaW5cbiAgICAgIGxldCBzcGFjZXMgPSBTdHJpbmcubWFrZSAoKEludC5tYXggMCAobGVuIC0gY3V0Y29sKSkgKyAzKSAnICcgaW5cbiAgICAgIChrd2QsIHNwZWMsIFwiXFxuXCIgXiBzcGFjZXMgXiByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgfCAoa3dkLCBzcGVjLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQga3dkX2xlbiA9IFN0cmluZy5sZW5ndGgga3dkIGluXG4gICAgICBsZXQgZGlmZiA9IGxlbiAtIGt3ZF9sZW4gLSBjdXRjb2wgaW5cbiAgICAgIGlmIGRpZmYgPD0gMCB0aGVuXG4gICAgICAgIChrd2QsIHNwZWMsIHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgZGlmZiAnICcgaW5cbiAgICAgICAgbGV0IHByZWZpeCA9IFN0cmluZy5zdWIgKHJlcGxhY2VfbGVhZGluZ190YWIgbXNnKSAwIGN1dGNvbCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gU3RyaW5nLnN1YiBtc2cgY3V0Y29sIChTdHJpbmcubGVuZ3RoIG1zZyAtIGN1dGNvbCkgaW5cbiAgICAgICAgKGt3ZCwgc3BlYywgcHJlZml4IF4gc3BhY2VzIF4gc3VmZml4KVxuXG5cbmxldCBhbGlnbiA/KGxpbWl0PW1heF9pbnQpIHNwZWNsaXN0ID1cbiAgbGV0IGNvbXBsZXRlZCA9IGFkZF9oZWxwIHNwZWNsaXN0IGluXG4gIGxldCBsZW4gPSBMaXN0LmZvbGRfbGVmdCBtYXhfYXJnX2xlbiAwIGNvbXBsZXRlZCBpblxuICBsZXQgbGVuID0gSW50Lm1pbiBsZW4gbGltaXQgaW5cbiAgTGlzdC5tYXAgKGFkZF9wYWRkaW5nIGxlbikgY29tcGxldGVkXG5cbmxldCB0cmltX2NyIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA+IDAgJiYgU3RyaW5nLmdldCBzIChsZW4gLSAxKSA9ICdcXHInIHRoZW5cbiAgICBTdHJpbmcuc3ViIHMgMCAobGVuIC0gMSlcbiAgZWxzZVxuICAgIHNcblxubGV0IHJlYWRfYXV4IHRyaW0gc2VwIGZpbGUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDIwMCBpblxuICBsZXQgd29yZHMgPSByZWYgW10gaW5cbiAgbGV0IHN0YXNoICgpID1cbiAgICBsZXQgd29yZCA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICBsZXQgd29yZCA9IGlmIHRyaW0gdGhlbiB0cmltX2NyIHdvcmQgZWxzZSB3b3JkIGluXG4gICAgd29yZHMgOj0gd29yZCA6OiAhd29yZHM7XG4gICAgQnVmZmVyLmNsZWFyIGJ1ZlxuICBpblxuICBiZWdpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgIGxldCBjID0gaW5wdXRfY2hhciBpYyBpblxuICAgICAgICBpZiBjID0gc2VwIHRoZW4gc3Rhc2ggKCkgZWxzZSBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICAgIGRvbmVcbiAgICB3aXRoIEVuZF9vZl9maWxlIC0+ICgpXG4gIGVuZDtcbiAgaWYgQnVmZmVyLmxlbmd0aCBidWYgPiAwIHRoZW4gc3Rhc2ggKCk7XG4gIGNsb3NlX2luIGljO1xuICBBcnJheS5vZl9saXN0IChMaXN0LnJldiAhd29yZHMpXG5cbmxldCByZWFkX2FyZyA9IHJlYWRfYXV4IHRydWUgJ1xcbidcblxubGV0IHJlYWRfYXJnMCA9IHJlYWRfYXV4IGZhbHNlICdcXHgwMCdcblxubGV0IHdyaXRlX2F1eCBzZXAgZmlsZSBhcmdzID1cbiAgbGV0IG9jID0gb3Blbl9vdXRfYmluIGZpbGUgaW5cbiAgQXJyYXkuaXRlciAoZnVuIHMgLT4gZnByaW50ZiBvYyBcIiVzJWNcIiBzIHNlcCkgYXJncztcbiAgY2xvc2Vfb3V0IG9jXG5cbmxldCB3cml0ZV9hcmcgPSB3cml0ZV9hdXggJ1xcbidcblxubGV0IHdyaXRlX2FyZzAgPSB3cml0ZV9hdXggJ1xceDAwJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIFByaW50ZlxuXG50eXBlIHQgPSBleG4gPSAuLlxuXG5sZXQgcHJpbnRlcnMgPSBBdG9taWMubWFrZSBbXVxuXG5sZXQgbG9jZm10ID0gZm9ybWF0X29mX3N0cmluZyBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDogJXNcIlxuXG5sZXQgZmllbGQgeCBpID1cbiAgbGV0IGYgPSBPYmouZmllbGQgeCBpIGluXG4gIGlmIG5vdCAoT2JqLmlzX2Jsb2NrIGYpIHRoZW5cbiAgICBzcHJpbnRmIFwiJWRcIiAoT2JqLm1hZ2ljIGYgOiBpbnQpICAgICAgICAgICAoKiBjYW4gYWxzbyBiZSBhIGNoYXIgKilcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouc3RyaW5nX3RhZyB0aGVuXG4gICAgc3ByaW50ZiBcIiVTXCIgKE9iai5tYWdpYyBmIDogc3RyaW5nKVxuICBlbHNlIGlmIE9iai50YWcgZiA9IE9iai5kb3VibGVfdGFnIHRoZW5cbiAgICBzdHJpbmdfb2ZfZmxvYXQgKE9iai5tYWdpYyBmIDogZmxvYXQpXG4gIGVsc2VcbiAgICBcIl9cIlxuXG5sZXQgcmVjIG90aGVyX2ZpZWxkcyB4IGkgPVxuICBpZiBpID49IE9iai5zaXplIHggdGhlbiBcIlwiXG4gIGVsc2Ugc3ByaW50ZiBcIiwgJXMlc1wiIChmaWVsZCB4IGkpIChvdGhlcl9maWVsZHMgeCAoaSsxKSlcblxubGV0IGZpZWxkcyB4ID1cbiAgbWF0Y2ggT2JqLnNpemUgeCB3aXRoXG4gIHwgMCAtPiBcIlwiXG4gIHwgMSAtPiBcIlwiXG4gIHwgMiAtPiBzcHJpbnRmIFwiKCVzKVwiIChmaWVsZCB4IDEpXG4gIHwgXyAtPiBzcHJpbnRmIFwiKCVzJXMpXCIgKGZpZWxkIHggMSkgKG90aGVyX2ZpZWxkcyB4IDIpXG5cbmxldCB1c2VfcHJpbnRlcnMgeCA9XG4gIGxldCByZWMgY29udiA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggaGQgeCB3aXRoXG4gICAgICAgICB8IE5vbmUgfCBleGNlcHRpb24gXyAtPiBjb252IHRsXG4gICAgICAgICB8IFNvbWUgcyAtPiBTb21lIHMpXG4gICAgfCBbXSAtPiBOb25lIGluXG4gIGNvbnYgKEF0b21pYy5nZXQgcHJpbnRlcnMpXG5cbmxldCBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgeCA9XG4gIGlmIE9iai50YWcgeCA8PiAwIHRoZW5cbiAgICAoKE9iai5tYWdpYyAoT2JqLmZpZWxkIHggMCkgOiBzdHJpbmcpLCBOb25lKVxuICBlbHNlXG4gICAgbGV0IGNvbnN0cnVjdG9yID1cbiAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgKGNvbnN0cnVjdG9yLCBTb21lIChmaWVsZHMgeCkpXG5cbmxldCBzdHJpbmdfb2ZfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHQgPVxuICBsZXQgY29uc3RydWN0b3IsIGZpZWxkc19vcHQgPSBkZXN0cnVjdF9leHRfY29uc3RydWN0b3IgdCBpblxuICBtYXRjaCBmaWVsZHNfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGNvbnN0cnVjdG9yXG4gIHwgU29tZSBmIC0+IGNvbnN0cnVjdG9yIF4gZlxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgc3RyaW5nX29mX2V4dGVuc2lvbl9jb25zdHJ1Y3RvciAoT2JqLnJlcHIgeClcblxubGV0IHRvX3N0cmluZyBlID1cbiAgbWF0Y2ggdXNlX3ByaW50ZXJzIGUgd2l0aFxuICB8IFNvbWUgcyAtPiBzXG4gIHwgTm9uZSAtPiB0b19zdHJpbmdfZGVmYXVsdCBlXG5cbmxldCBwcmludCBmY3QgYXJnID1cbiAgdHJ5XG4gICAgZmN0IGFyZ1xuICB3aXRoIHggLT5cbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZmx1c2ggc3RkZXJyO1xuICAgIHJhaXNlIHhcblxubGV0IGNhdGNoIGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGZsdXNoIHN0ZG91dDtcbiAgICBlcHJpbnRmIFwiVW5jYXVnaHQgZXhjZXB0aW9uOiAlc1xcblwiICh0b19zdHJpbmcgeCk7XG4gICAgZXhpdCAyXG5cbnR5cGUgcmF3X2JhY2t0cmFjZV9zbG90XG50eXBlIHJhd19iYWNrdHJhY2VfZW50cnkgPSBwcml2YXRlIGludFxudHlwZSByYXdfYmFja3RyYWNlID0gcmF3X2JhY2t0cmFjZV9lbnRyeSBhcnJheVxuXG5sZXQgcmF3X2JhY2t0cmFjZV9lbnRyaWVzIGJ0ID0gYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2U6XG4gIHVuaXQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2VcIlxuXG5leHRlcm5hbCByYWlzZV93aXRoX2JhY2t0cmFjZTogZXhuIC0+IHJhd19iYWNrdHJhY2UgLT4gJ2FcbiAgPSBcIiVyYWlzZV93aXRoX2JhY2t0cmFjZVwiXG5cbnR5cGUgYmFja3RyYWNlX3Nsb3QgPVxuICB8IEtub3duX2xvY2F0aW9uIG9mIHtcbiAgICAgIGlzX3JhaXNlICAgIDogYm9vbDtcbiAgICAgIGZpbGVuYW1lICAgIDogc3RyaW5nO1xuICAgICAgbGluZV9udW1iZXIgOiBpbnQ7XG4gICAgICBzdGFydF9jaGFyICA6IGludDtcbiAgICAgIGVuZF9jaGFyICAgIDogaW50O1xuICAgICAgaXNfaW5saW5lICAgOiBib29sO1xuICAgICAgZGVmbmFtZSAgICAgOiBzdHJpbmc7XG4gICAgfVxuICB8IFVua25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgOiBib29sXG4gICAgfVxuXG4oKiB0byBhdm9pZCB3YXJuaW5nICopXG5sZXQgXyA9IFtLbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2U7IGZpbGVuYW1lID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIgPSAwOyBzdGFydF9jaGFyID0gMDsgZW5kX2NoYXIgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbmxpbmUgPSBmYWxzZTsgZGVmbmFtZSA9IFwiXCIgfTtcbiAgICAgICAgIFVua25vd25fbG9jYXRpb24geyBpc19yYWlzZSA9IGZhbHNlIH1dXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZV9zbG90OlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gYmFja3RyYWNlX3Nsb3QgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBjb252ZXJ0X3Jhd19iYWNrdHJhY2U6XG4gIHJhd19iYWNrdHJhY2UgLT4gYmFja3RyYWNlX3Nsb3QgYXJyYXkgPSBcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlXCJcblxubGV0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidCA9XG4gIHRyeSBTb21lIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgYnQpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBwb3Mgc2xvdCA9XG4gIGxldCBpbmZvIGlzX3JhaXNlID1cbiAgICBpZiBpc19yYWlzZSB0aGVuXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYXRcIiBlbHNlIFwiUmUtcmFpc2VkIGF0XCJcbiAgICBlbHNlXG4gICAgICBpZiBwb3MgPSAwIHRoZW4gXCJSYWlzZWQgYnkgcHJpbWl0aXZlIG9wZXJhdGlvbiBhdFwiIGVsc2UgXCJDYWxsZWQgZnJvbVwiXG4gIGluXG4gIG1hdGNoIHNsb3Qgd2l0aFxuICB8IFVua25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgaWYgbC5pc19yYWlzZSB0aGVuXG4gICAgICAgICgqIGNvbXBpbGVyLWluc2VydGVkIHJlLXJhaXNlLCBza2lwcGVkICopIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgU29tZSAoc3ByaW50ZiBcIiVzIHVua25vd24gbG9jYXRpb25cIiAoaW5mbyBmYWxzZSkpXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgICAgU29tZSAoc3ByaW50ZiBcIiVzICVzIGluIGZpbGUgXFxcIiVzXFxcIiVzLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkXCJcbiAgICAgICAgICAgICAgKGluZm8gbC5pc19yYWlzZSkgbC5kZWZuYW1lIGwuZmlsZW5hbWVcbiAgICAgICAgICAgICAgKGlmIGwuaXNfaW5saW5lIHRoZW4gXCIgKGlubGluZWQpXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAgICBsLmxpbmVfbnVtYmVyIGwuc3RhcnRfY2hhciBsLmVuZF9jaGFyKVxuXG5sZXQgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIGJhY2t0cmFjZSA9XG4gIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgZnByaW50ZiBvdXRjaGFuXG4gICAgICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGZwcmludGYgb3V0Y2hhbiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lXG5cbmxldCBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gcmF3X2JhY2t0cmFjZSA9XG4gIHByaW50X2V4Y2VwdGlvbl9iYWNrdHJhY2Ugb3V0Y2hhbiAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOiBwcmludHMgdGhlIGdsb2JhbCBjdXJyZW50IGJhY2t0cmFjZSAqKVxubGV0IHByaW50X2JhY2t0cmFjZSBvdXRjaGFuID1cbiAgcHJpbnRfcmF3X2JhY2t0cmFjZSBvdXRjaGFuIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxubGV0IGJhY2t0cmFjZV90b19zdHJpbmcgYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgIFwiKFByb2dyYW0gbm90IGxpbmtlZCB3aXRoIC1nLCBjYW5ub3QgcHJpbnQgc3RhY2sgYmFja3RyYWNlKVxcblwiXG4gIHwgU29tZSBhIC0+XG4gICAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICBtYXRjaCBmb3JtYXRfYmFja3RyYWNlX3Nsb3QgaSBhLihpKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHN0ciAtPiBicHJpbnRmIGIgXCIlc1xcblwiIHN0clxuICAgICAgZG9uZTtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCByYXdfYmFja3RyYWNlX3RvX3N0cmluZyByYXdfYmFja3RyYWNlID1cbiAgYmFja3RyYWNlX3RvX3N0cmluZyAoY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2UpXG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX3JhaXNlXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZSA9IGZ1bmN0aW9uXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPiBsLmlzX2lubGluZVxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuXG50eXBlIGxvY2F0aW9uID0ge1xuICBmaWxlbmFtZSA6IHN0cmluZztcbiAgbGluZV9udW1iZXIgOiBpbnQ7XG4gIHN0YXJ0X2NoYXIgOiBpbnQ7XG4gIGVuZF9jaGFyIDogaW50O1xufVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24gPSBmdW5jdGlvblxuICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBOb25lXG4gIHwgS25vd25fbG9jYXRpb24gbCAtPlxuICAgIFNvbWUge1xuICAgICAgZmlsZW5hbWUgICAgPSBsLmZpbGVuYW1lO1xuICAgICAgbGluZV9udW1iZXIgPSBsLmxpbmVfbnVtYmVyO1xuICAgICAgc3RhcnRfY2hhciAgPSBsLnN0YXJ0X2NoYXI7XG4gICAgICBlbmRfY2hhciAgICA9IGwuZW5kX2NoYXI7XG4gICAgfVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfZGVmbmFtZSA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfXG4gIHwgS25vd25fbG9jYXRpb24geyBkZWZuYW1lID0gXCJcIiB9IC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IFNvbWUgbC5kZWZuYW1lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHMgcmF3X2JhY2t0cmFjZSA9XG4gICgqIFRoZSBkb2N1bWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcyB0aGF0IFNvbWUgaXNcbiAgICAgcmV0dXJuZWQgb25seSBpZiBhIHBhcnQgb2YgdGhlIHRyYWNlIGlzIHVzYWJsZS4gVGhpcyBnaXZlcyB1c1xuICAgICBhIGJpdCBtb3JlIHdvcmsgdGhhbiBqdXN0IGNvbnZlcnRfcmF3X2JhY2t0cmFjZSwgYnV0IGl0IG1ha2VzIHRoZVxuICAgICBBUEkgbW9yZSB1c2VyLWZyaWVuZGx5IC0tIG90aGVyd2lzZSBtb3N0IHVzZXJzIHdvdWxkIGhhdmUgdG9cbiAgICAgcmVpbXBsZW1lbnQgdGhlIFwiUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIHNvcnJ5XCIgbG9naWNcbiAgICAgdGhlbXNlbHZlcy4gKilcbiAgbWF0Y2ggY29udmVydF9yYXdfYmFja3RyYWNlIHJhd19iYWNrdHJhY2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGJhY2t0cmFjZSAtPlxuICAgICAgbGV0IHVzYWJsZV9zbG90ID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbmtub3duX2xvY2F0aW9uIF8gLT4gZmFsc2VcbiAgICAgICAgfCBLbm93bl9sb2NhdGlvbiBfIC0+IHRydWUgaW5cbiAgICAgIGxldCByZWMgZXhpc3RzX3VzYWJsZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgKC0xKSAtPiBmYWxzZVxuICAgICAgICB8IGkgLT4gdXNhYmxlX3Nsb3QgYmFja3RyYWNlLihpKSB8fCBleGlzdHNfdXNhYmxlIChpIC0gMSkgaW5cbiAgICAgIGlmIGV4aXN0c191c2FibGUgKEFycmF5Lmxlbmd0aCBiYWNrdHJhY2UgLSAxKVxuICAgICAgdGhlbiBTb21lIGJhY2t0cmFjZVxuICAgICAgZWxzZSBOb25lXG5cbmxldCBiYWNrdHJhY2Vfc2xvdHNfb2ZfcmF3X2VudHJ5IGVudHJ5ID1cbiAgYmFja3RyYWNlX3Nsb3RzIFt8IGVudHJ5IHxdXG5cbm1vZHVsZSBTbG90ID0gc3RydWN0XG4gIHR5cGUgdCA9IGJhY2t0cmFjZV9zbG90XG4gIGxldCBmb3JtYXQgPSBmb3JtYXRfYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGlzX3JhaXNlID0gYmFja3RyYWNlX3Nsb3RfaXNfcmFpc2VcbiAgbGV0IGlzX2lubGluZSA9IGJhY2t0cmFjZV9zbG90X2lzX2lubGluZVxuICBsZXQgbG9jYXRpb24gPSBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvblxuICBsZXQgbmFtZSA9IGJhY2t0cmFjZV9zbG90X2RlZm5hbWVcbmVuZFxuXG5sZXQgcmF3X2JhY2t0cmFjZV9sZW5ndGggYnQgPSBBcnJheS5sZW5ndGggYnRcblxuZXh0ZXJuYWwgZ2V0X3Jhd19iYWNrdHJhY2Vfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2UgLT4gaW50IC0+IHJhd19iYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX3Nsb3RcIlxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9uZXh0X3Nsb3QgOlxuICByYXdfYmFja3RyYWNlX3Nsb3QgLT4gcmF3X2JhY2t0cmFjZV9zbG90IG9wdGlvblxuICA9IFwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdFwiXG5cbigqIGNvbmZ1c2luZ2x5IG5hbWVkOlxuICAgcmV0dXJucyB0aGUgKnN0cmluZyogY29ycmVzcG9uZGluZyB0byB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgZ2V0X2JhY2t0cmFjZSAoKSA9IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIChnZXRfcmF3X2JhY2t0cmFjZSAoKSlcblxuZXh0ZXJuYWwgcmVjb3JkX2JhY2t0cmFjZTogYm9vbCAtPiB1bml0ID0gXCJjYW1sX3JlY29yZF9iYWNrdHJhY2VcIlxuZXh0ZXJuYWwgYmFja3RyYWNlX3N0YXR1czogdW5pdCAtPiBib29sID0gXCJjYW1sX2JhY2t0cmFjZV9zdGF0dXNcIlxuXG5sZXQgcmVjIHJlZ2lzdGVyX3ByaW50ZXIgZm4gPVxuICBsZXQgb2xkX3ByaW50ZXJzID0gQXRvbWljLmdldCBwcmludGVycyBpblxuICBsZXQgbmV3X3ByaW50ZXJzID0gZm4gOjogb2xkX3ByaW50ZXJzIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBwcmludGVycyBvbGRfcHJpbnRlcnMgbmV3X3ByaW50ZXJzIGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gcmVnaXN0ZXJfcHJpbnRlciBmblxuXG5leHRlcm5hbCBnZXRfY2FsbHN0YWNrOiBpbnQgLT4gcmF3X2JhY2t0cmFjZSA9IFwiY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2tcIlxuXG5sZXQgZXhuX3Nsb3QgeCA9XG4gIGxldCB4ID0gT2JqLnJlcHIgeCBpblxuICBpZiBPYmoudGFnIHggPSAwIHRoZW4gT2JqLmZpZWxkIHggMCBlbHNlIHhcblxubGV0IGV4bl9zbG90X2lkIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDEpIDogaW50KVxuXG5sZXQgZXhuX3Nsb3RfbmFtZSB4ID1cbiAgbGV0IHNsb3QgPSBleG5fc2xvdCB4IGluXG4gIChPYmoub2JqIChPYmouZmllbGQgc2xvdCAwKSA6IHN0cmluZylcblxuZXh0ZXJuYWwgZ2V0X2RlYnVnX2luZm9fc3RhdHVzIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXNcIlxuXG4oKiBEZXNjcmlwdGlvbnMgZm9yIGVycm9ycyBpbiBzdGFydHVwLmguIFNlZSBhbHNvIGJhY2t0cmFjZS5jICopXG5sZXQgZXJyb3JzID0gW3wgXCJcIjtcbiAgKCogRklMRV9OT1RfRk9VTkQgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIG5vdCBmb3VuZClcIjtcbiAgKCogQkFEX0JZVEVDT0RFICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBhcHBlYXJzIHRvIGJlIGNvcnJ1cHQpXCI7XG4gICgqIFdST05HX01BR0lDICopXG4gIFwiKENhbm5vdCBwcmludCBsb2NhdGlvbnM6XFxuIFxcXG4gICAgICBieXRlY29kZSBleGVjdXRhYmxlIHByb2dyYW0gZmlsZSBoYXMgd3JvbmcgbWFnaWMgbnVtYmVyKVwiO1xuICAoKiBOT19GRFMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQ7XFxuIFxcXG4gICAgICAtLSB0b28gbWFueSBvcGVuIGZpbGVzLiBUcnkgcnVubmluZyB3aXRoIE9DQU1MUlVOUEFSQU09Yj0yKVwiXG58XVxuXG5sZXQgZGVmYXVsdF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBleG4gcmF3X2JhY2t0cmFjZSA9XG4gIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICBsZXQgc3RhdHVzID0gZ2V0X2RlYnVnX2luZm9fc3RhdHVzICgpIGluXG4gIGlmIHN0YXR1cyA8IDAgdGhlblxuICAgIHByZXJyX2VuZGxpbmUgZXJyb3JzLihhYnMgc3RhdHVzKTtcbiAgZmx1c2ggc3RkZXJyXG5cbmxldCB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA9IHJlZiBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyXG5cbmxldCBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZm4gPSB1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciA6PSBmblxuXG5sZXQgZW1wdHlfYmFja3RyYWNlIDogcmF3X2JhY2t0cmFjZSA9IFt8IHxdXG5cbmxldCB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgPVxuICB0cnlcbiAgICBnZXRfcmF3X2JhY2t0cmFjZSAoKVxuICB3aXRoIF8gKCogT3V0X29mX21lbW9yeT8gKikgLT5cbiAgICBlbXB0eV9iYWNrdHJhY2VcblxubGV0IGhhbmRsZV91bmNhdWdodF9leGNlcHRpb24nIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICAoKiBHZXQgdGhlIGJhY2t0cmFjZSBub3csIGluIGNhc2Ugb25lIG9mIHRoZSBbYXRfZXhpdF0gZnVuY3Rpb25cbiAgICAgICBkZXN0cm95cyBpdC4gKilcbiAgICBsZXQgcmF3X2JhY2t0cmFjZSA9XG4gICAgICBpZiBkZWJ1Z2dlcl9pbl91c2UgKCogU2FtZSB0ZXN0IGFzIGluIFtydW50aW1lL3ByaW50ZXhjLmNdICopIHRoZW5cbiAgICAgICAgZW1wdHlfYmFja3RyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKVxuICAgIGluXG4gICAgKHRyeSBTdGRsaWIuZG9fYXRfZXhpdCAoKSB3aXRoIF8gLT4gKCkpO1xuICAgIHRyeVxuICAgICAgIXVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlXG4gICAgd2l0aCBleG4nIC0+XG4gICAgICBsZXQgcmF3X2JhY2t0cmFjZScgPSB0cnlfZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uICVzXFxuXCIgKHRvX3N0cmluZyBleG4pO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgICAgIGVwcmludGYgXCJGYXRhbCBlcnJvciBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlcjogZXhjZXB0aW9uICVzXFxuXCJcbiAgICAgICAgKHRvX3N0cmluZyBleG4nKTtcbiAgICAgIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2UnO1xuICAgICAgZmx1c2ggc3RkZXJyXG4gIHdpdGhcbiAgICB8IE91dF9vZl9tZW1vcnkgLT5cbiAgICAgICAgcHJlcnJfZW5kbGluZVxuICAgICAgICAgIFwiRmF0YWwgZXJyb3I6IG91dCBvZiBtZW1vcnkgaW4gdW5jYXVnaHQgZXhjZXB0aW9uIGhhbmRsZXJcIlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBbY2FtbF9mYXRhbF91bmNhdWdodF9leGNlcHRpb25dIGluXG4gICBbcnVudGltZS9wcmludGV4Yy5jXSB3aGljaCBleHBlY3RzIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbiBleG4gZGVidWdnZXJfaW5fdXNlID1cbiAgdHJ5XG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZVxuICB3aXRoIF8gLT5cbiAgICAoKiBUaGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gYXQgdGhpcyBwb2ludCAqKVxuICAgICgpXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+ICdhIC0+IHVuaXRcbiAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIlxuICAgIGhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXh0ZXJuYWwgaWQgOiAnYSAtPiAnYSA9IFwiJWlkZW50aXR5XCJcbmxldCBjb25zdCBjIF8gPSBjXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgbmVnYXRlIHAgdiA9IG5vdCAocCB2KVxuXG5leGNlcHRpb24gRmluYWxseV9yYWlzZWQgb2YgZXhuXG5cbmxldCAoKSA9IFByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgQEAgZnVuY3Rpb25cbnwgRmluYWxseV9yYWlzZWQgZXhuIC0+IFNvbWUgKFwiRnVuLkZpbmFsbHlfcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBleG4pXG58IF8gLT4gTm9uZVxuXG5sZXQgcHJvdGVjdCB+KGZpbmFsbHkgOiB1bml0IC0+IHVuaXQpIHdvcmsgPVxuICBsZXQgZmluYWxseV9ub19leG4gKCkgPVxuICAgIHRyeSBmaW5hbGx5ICgpIHdpdGggZSAtPlxuICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIChGaW5hbGx5X3JhaXNlZCBlKSBidFxuICBpblxuICBtYXRjaCB3b3JrICgpIHdpdGhcbiAgfCByZXN1bHQgLT4gZmluYWxseV9ub19leG4gKCkgOyByZXN1bHRcbiAgfCBleGNlcHRpb24gd29ya19leG4gLT5cbiAgICAgIGxldCB3b3JrX2J0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgIGZpbmFsbHlfbm9fZXhuICgpIDtcbiAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIHdvcmtfZXhuIHdvcmtfYnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSmFjcXVlcy1IZW5yaSBKb3VyZGFuLCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUGFyaXMgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAgKilcbigqICAgICBldCBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0ID0ge1xuICBtaW5vcl93b3JkcyA6IGZsb2F0O1xuICBwcm9tb3RlZF93b3JkcyA6IGZsb2F0O1xuICBtYWpvcl93b3JkcyA6IGZsb2F0O1xuICBtaW5vcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnQ7XG4gIGhlYXBfd29yZHMgOiBpbnQ7XG4gIGhlYXBfY2h1bmtzIDogaW50O1xuICBsaXZlX3dvcmRzIDogaW50O1xuICBsaXZlX2Jsb2NrcyA6IGludDtcbiAgZnJlZV93b3JkcyA6IGludDtcbiAgZnJlZV9ibG9ja3MgOiBpbnQ7XG4gIGxhcmdlc3RfZnJlZSA6IGludDtcbiAgZnJhZ21lbnRzIDogaW50O1xuICBjb21wYWN0aW9ucyA6IGludDtcbiAgdG9wX2hlYXBfd29yZHMgOiBpbnQ7XG4gIHN0YWNrX3NpemUgOiBpbnQ7XG4gIGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9uczogaW50O1xufVxuXG50eXBlIGNvbnRyb2wgPSB7XG4gIG1pbm9yX2hlYXBfc2l6ZSA6IGludDtcbiAgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIHNwYWNlX292ZXJoZWFkIDogaW50O1xuICB2ZXJib3NlIDogaW50O1xuICBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIHN0YWNrX2xpbWl0IDogaW50O1xuICBhbGxvY2F0aW9uX3BvbGljeSA6IGludDtcbiAgd2luZG93X3NpemUgOiBpbnQ7XG4gIGN1c3RvbV9tYWpvcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50O1xuICBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnQ7XG59XG5cbmV4dGVybmFsIHN0YXQgOiB1bml0IC0+IHN0YXQgPSBcImNhbWxfZ2Nfc3RhdFwiXG5leHRlcm5hbCBxdWlja19zdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3F1aWNrX3N0YXRcIlxuZXh0ZXJuYWwgY291bnRlcnMgOiB1bml0IC0+IChmbG9hdCAqIGZsb2F0ICogZmxvYXQpID0gXCJjYW1sX2djX2NvdW50ZXJzXCJcbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiAoZmxvYXQgW0B1bmJveGVkXSlcbiAgPSBcImNhbWxfZ2NfbWlub3Jfd29yZHNcIiBcImNhbWxfZ2NfbWlub3Jfd29yZHNfdW5ib3hlZFwiXG5leHRlcm5hbCBnZXQgOiB1bml0IC0+IGNvbnRyb2wgPSBcImNhbWxfZ2NfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGNvbnRyb2wgLT4gdW5pdCA9IFwiY2FtbF9nY19zZXRcIlxuZXh0ZXJuYWwgbWlub3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWlub3JcIlxuZXh0ZXJuYWwgbWFqb3Jfc2xpY2UgOiBpbnQgLT4gaW50ID0gXCJjYW1sX2djX21ham9yX3NsaWNlXCJcbmV4dGVybmFsIG1ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21ham9yXCJcbmV4dGVybmFsIGZ1bGxfbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfZnVsbF9tYWpvclwiXG5leHRlcm5hbCBjb21wYWN0IDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2NvbXBhY3Rpb25cIlxuZXh0ZXJuYWwgZ2V0X21pbm9yX2ZyZWUgOiB1bml0IC0+IGludCA9IFwiY2FtbF9nZXRfbWlub3JfZnJlZVwiXG5cbmxldCBldmVudGxvZ19wYXVzZSAoKSA9ICgpXG5sZXQgZXZlbnRsb2dfcmVzdW1lICgpID0gKClcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIEF0b21pYy50XG50eXBlIGFsYXJtX3JlYyA9IHthY3RpdmUgOiBhbGFybTsgZiA6IHVuaXQgLT4gdW5pdH1cblxubGV0IHJlYyBjYWxsX2FsYXJtIGFyZWMgPVxuICBpZiBBdG9taWMuZ2V0IGFyZWMuYWN0aXZlIHRoZW4gYmVnaW5cbiAgICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gICAgYXJlYy5mICgpO1xuICBlbmRcblxuXG5sZXQgY3JlYXRlX2FsYXJtIGYgPVxuICBsZXQgYXJlYyA9IHsgYWN0aXZlID0gQXRvbWljLm1ha2UgdHJ1ZTsgZiA9IGYgfSBpblxuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubGV0IGRlbGV0ZV9hbGFybSBhID0gQXRvbWljLnNldCBhIGZhbHNlXG5cbm1vZHVsZSBNZW1wcm9mID1cbiAgc3RydWN0XG4gICAgdHlwZSBhbGxvY2F0aW9uX3NvdXJjZSA9IE5vcm1hbCB8IE1hcnNoYWwgfCBDdXN0b21cbiAgICB0eXBlIGFsbG9jYXRpb24gPVxuICAgICAgeyBuX3NhbXBsZXMgOiBpbnQ7XG4gICAgICAgIHNpemUgOiBpbnQ7XG4gICAgICAgIHNvdXJjZSA6IGFsbG9jYXRpb25fc291cmNlO1xuICAgICAgICBjYWxsc3RhY2sgOiBQcmludGV4Yy5yYXdfYmFja3RyYWNlIH1cblxuICAgIHR5cGUgKCdtaW5vciwgJ21ham9yKSB0cmFja2VyID0ge1xuICAgICAgYWxsb2NfbWlub3I6IGFsbG9jYXRpb24gLT4gJ21pbm9yIG9wdGlvbjtcbiAgICAgIGFsbG9jX21ham9yOiBhbGxvY2F0aW9uIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBwcm9tb3RlOiAnbWlub3IgLT4gJ21ham9yIG9wdGlvbjtcbiAgICAgIGRlYWxsb2NfbWlub3I6ICdtaW5vciAtPiB1bml0O1xuICAgICAgZGVhbGxvY19tYWpvcjogJ21ham9yIC0+IHVuaXQ7XG4gICAgfVxuXG4gICAgbGV0IG51bGxfdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgYWxsb2NfbWFqb3IgPSAoZnVuIF8gLT4gTm9uZSk7XG4gICAgICBwcm9tb3RlID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgZGVhbGxvY19taW5vciA9IChmdW4gXyAtPiAoKSk7XG4gICAgICBkZWFsbG9jX21ham9yID0gKGZ1biBfIC0+ICgpKTtcbiAgICB9XG5cbiAgICBleHRlcm5hbCBjX3N0YXJ0IDpcbiAgICAgIGZsb2F0IC0+IGludCAtPiAoJ21pbm9yLCAnbWFqb3IpIHRyYWNrZXIgLT4gdW5pdFxuICAgICAgPSBcImNhbWxfbWVtcHJvZl9zdGFydFwiXG5cbiAgICBsZXQgc3RhcnRcbiAgICAgIH5zYW1wbGluZ19yYXRlXG4gICAgICA/KGNhbGxzdGFja19zaXplID0gbWF4X2ludClcbiAgICAgIHRyYWNrZXIgPVxuICAgICAgY19zdGFydCBzYW1wbGluZ19yYXRlIGNhbGxzdGFja19zaXplIHRyYWNrZXJcblxuICAgIGV4dGVybmFsIHN0b3AgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfbWVtcHJvZl9zdG9wXCJcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1lc3NhZ2UgZGlnZXN0IChNRDUpICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgY29tcGFyZSA9IFN0cmluZy5jb21wYXJlXG5sZXQgZXF1YWwgPSBTdHJpbmcuZXF1YWxcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZzogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9tZDVfc3RyaW5nXCJcbmV4dGVybmFsIGNoYW5uZWw6IGluX2NoYW5uZWwgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X2NoYW5cIlxuXG5sZXQgc3RyaW5nIHN0ciA9XG4gIHVuc2FmZV9zdHJpbmcgc3RyIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG5sZXQgYnl0ZXMgYiA9IHN0cmluZyAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBiKVxuXG5sZXQgc3Vic3RyaW5nIHN0ciBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IFN0cmluZy5sZW5ndGggc3RyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3Quc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfc3RyaW5nIHN0ciBvZnMgbGVuXG5cbmxldCBzdWJieXRlcyBiIG9mcyBsZW4gPSBzdWJzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYikgb2ZzIGxlblxuXG5sZXQgZmlsZSBmaWxlbmFtZSA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZpbGVuYW1lIGluXG4gIG1hdGNoIGNoYW5uZWwgaWMgKC0xKSB3aXRoXG4gICAgfCBkIC0+IGNsb3NlX2luIGljOyBkXG4gICAgfCBleGNlcHRpb24gZSAtPiBjbG9zZV9pbiBpYzsgcmFpc2UgZVxuXG5sZXQgb3V0cHV0IGNoYW4gZGlnZXN0ID1cbiAgb3V0cHV0X3N0cmluZyBjaGFuIGRpZ2VzdFxuXG5sZXQgaW5wdXQgY2hhbiA9IHJlYWxseV9pbnB1dF9zdHJpbmcgY2hhbiAxNlxuXG5sZXQgY2hhcl9oZXggbiA9XG4gIENoYXIudW5zYWZlX2NociAobiArIGlmIG4gPCAxMCB0aGVuIENoYXIuY29kZSAnMCcgZWxzZSAoQ2hhci5jb2RlICdhJyAtIDEwKSlcblxubGV0IHRvX2hleCBkID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBkIDw+IDE2IHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QudG9faGV4XCI7XG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMzIgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgbGV0IHggPSBDaGFyLmNvZGUgZC5baV0gaW5cbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKSAoY2hhcl9oZXggKHggbHNyIDQpKTtcbiAgICBCeXRlcy51bnNhZmVfc2V0IHJlc3VsdCAoaSoyKzEpIChjaGFyX2hleCAoeCBsYW5kIDB4MGYpKTtcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXN1bHRcblxubGV0IGZyb21faGV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gMzIgdGhlbiBpbnZhbGlkX2FyZyBcIkRpZ2VzdC5mcm9tX2hleFwiO1xuICBsZXQgZGlnaXQgYyA9XG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnMCcuLic5JyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcbiAgICB8ICdBJy4uJ0YnIC0+IENoYXIuY29kZSBjIC0gQ2hhci5jb2RlICdBJyArIDEwXG4gICAgfCAnYScuLidmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkRpZ2VzdC5mcm9tX2hleFwiKVxuICBpblxuICBsZXQgYnl0ZSBpID0gZGlnaXQgcy5baV0gbHNsIDQgKyBkaWdpdCBzLltpKzFdIGluXG4gIGxldCByZXN1bHQgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgZm9yIGkgPSAwIHRvIDE1IGRvXG4gICAgQnl0ZXMuc2V0IHJlc3VsdCBpIChDaGFyLmNociAoYnl0ZSAoMiAqIGkpKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgTWFudWVsIFNlcnJhbm8gZXQgWGF2aWVyIExlcm95LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbQmlnYXJyYXldOiBsYXJnZSwgbXVsdGktZGltZW5zaW9uYWwsIG51bWVyaWNhbCBhcnJheXMgKilcblxuKCogVGhlc2UgdHlwZXMgaW4gbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgdGFibGVzIGluXG4gICAuLi90eXBpbmcvdHlwZW9wdC5tbCAqKVxuXG50eXBlIGZsb2F0MzJfZWx0ID0gRmxvYXQzMl9lbHRcbnR5cGUgZmxvYXQ2NF9lbHQgPSBGbG9hdDY0X2VsdFxudHlwZSBpbnQ4X3NpZ25lZF9lbHQgPSBJbnQ4X3NpZ25lZF9lbHRcbnR5cGUgaW50OF91bnNpZ25lZF9lbHQgPSBJbnQ4X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQxNl9zaWduZWRfZWx0ID0gSW50MTZfc2lnbmVkX2VsdFxudHlwZSBpbnQxNl91bnNpZ25lZF9lbHQgPSBJbnQxNl91bnNpZ25lZF9lbHRcbnR5cGUgaW50MzJfZWx0ID0gSW50MzJfZWx0XG50eXBlIGludDY0X2VsdCA9IEludDY0X2VsdFxudHlwZSBpbnRfZWx0ID0gSW50X2VsdFxudHlwZSBuYXRpdmVpbnRfZWx0ID0gTmF0aXZlaW50X2VsdFxudHlwZSBjb21wbGV4MzJfZWx0ID0gQ29tcGxleDMyX2VsdFxudHlwZSBjb21wbGV4NjRfZWx0ID0gQ29tcGxleDY0X2VsdFxuXG50eXBlICgnYSwgJ2IpIGtpbmQgPVxuICAgIEZsb2F0MzIgOiAoZmxvYXQsIGZsb2F0MzJfZWx0KSBraW5kXG4gIHwgRmxvYXQ2NCA6IChmbG9hdCwgZmxvYXQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQ4X3NpZ25lZCA6IChpbnQsIGludDhfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDhfdW5zaWduZWQgOiAoaW50LCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3NpZ25lZCA6IChpbnQsIGludDE2X3NpZ25lZF9lbHQpIGtpbmRcbiAgfCBJbnQxNl91bnNpZ25lZCA6IChpbnQsIGludDE2X3Vuc2lnbmVkX2VsdCkga2luZFxuICB8IEludDMyIDogKGludDMyLCBpbnQzMl9lbHQpIGtpbmRcbiAgfCBJbnQ2NCA6IChpbnQ2NCwgaW50NjRfZWx0KSBraW5kXG4gIHwgSW50IDogKGludCwgaW50X2VsdCkga2luZFxuICB8IE5hdGl2ZWludCA6IChuYXRpdmVpbnQsIG5hdGl2ZWludF9lbHQpIGtpbmRcbiAgfCBDb21wbGV4MzIgOiAoQ29tcGxleC50LCBjb21wbGV4MzJfZWx0KSBraW5kXG4gIHwgQ29tcGxleDY0IDogKENvbXBsZXgudCwgY29tcGxleDY0X2VsdCkga2luZFxuICB8IENoYXIgOiAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQpIGtpbmRcblxudHlwZSBjX2xheW91dCA9IENfbGF5b3V0X3R5cFxudHlwZSBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0X3R5cCAoKiopXG5cbnR5cGUgJ2EgbGF5b3V0ID1cbiAgICBDX2xheW91dDogY19sYXlvdXQgbGF5b3V0XG4gIHwgRm9ydHJhbl9sYXlvdXQ6IGZvcnRyYW5fbGF5b3V0IGxheW91dFxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfa2luZCBlbnVtZXJhdGlvblxuICAgaW4gYmlnYXJyYXkuaCAqKVxuXG5sZXQgZmxvYXQzMiA9IEZsb2F0MzJcbmxldCBmbG9hdDY0ID0gRmxvYXQ2NFxubGV0IGludDhfc2lnbmVkID0gSW50OF9zaWduZWRcbmxldCBpbnQ4X3Vuc2lnbmVkID0gSW50OF91bnNpZ25lZFxubGV0IGludDE2X3NpZ25lZCA9IEludDE2X3NpZ25lZFxubGV0IGludDE2X3Vuc2lnbmVkID0gSW50MTZfdW5zaWduZWRcbmxldCBpbnQzMiA9IEludDMyXG5sZXQgaW50NjQgPSBJbnQ2NFxubGV0IGludCA9IEludFxubGV0IG5hdGl2ZWludCA9IE5hdGl2ZWludFxubGV0IGNvbXBsZXgzMiA9IENvbXBsZXgzMlxubGV0IGNvbXBsZXg2NCA9IENvbXBsZXg2NFxubGV0IGNoYXIgPSBDaGFyXG5cbmxldCBraW5kX3NpemVfaW5fYnl0ZXMgOiB0eXBlIGEgYi4gKGEsIGIpIGtpbmQgLT4gaW50ID0gZnVuY3Rpb25cbiAgfCBGbG9hdDMyIC0+IDRcbiAgfCBGbG9hdDY0IC0+IDhcbiAgfCBJbnQ4X3NpZ25lZCAtPiAxXG4gIHwgSW50OF91bnNpZ25lZCAtPiAxXG4gIHwgSW50MTZfc2lnbmVkIC0+IDJcbiAgfCBJbnQxNl91bnNpZ25lZCAtPiAyXG4gIHwgSW50MzIgLT4gNFxuICB8IEludDY0IC0+IDhcbiAgfCBJbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBOYXRpdmVpbnQgLT4gU3lzLndvcmRfc2l6ZSAvIDhcbiAgfCBDb21wbGV4MzIgLT4gOFxuICB8IENvbXBsZXg2NCAtPiAxNlxuICB8IENoYXIgLT4gMVxuXG4oKiBLZWVwIHRob3NlIGNvbnN0YW50cyBpbiBzeW5jIHdpdGggdGhlIGNhbWxfYmFfbGF5b3V0IGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBjX2xheW91dCA9IENfbGF5b3V0XG5sZXQgZm9ydHJhbl9sYXlvdXQgPSBGb3J0cmFuX2xheW91dFxuXG5tb2R1bGUgR2VuYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdFxuICBleHRlcm5hbCBjcmVhdGU6ICgnYSwgJ2IpIGtpbmQgLT4gJ2MgbGF5b3V0IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgdFxuICAgICA9IFwiY2FtbF9iYV9jcmVhdGVcIlxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCBhcnJheSAtPiAnYVxuICAgICA9IFwiY2FtbF9iYV9nZXRfZ2VuZXJpY1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcImNhbWxfYmFfc2V0X2dlbmVyaWNcIlxuXG4gIGxldCByZWMgY2xvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA9IEFycmF5Lmxlbmd0aCBpZHggdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDAgdG8gcHJlZCBtYXguKGNvbCkgZG9cbiAgICAgICAgICAgaWR4Lihjb2wpIDwtIGo7XG4gICAgICAgICAgIGNsb29wIGFyciBpZHggZiAoc3VjYyBjb2wpIG1heFxuICAgICAgICAgZG9uZVxuICBsZXQgcmVjIGZsb29wIGFyciBpZHggZiBjb2wgbWF4ID1cbiAgICBpZiBjb2wgPCAwIHRoZW4gc2V0IGFyciBpZHggKGYgaWR4KVxuICAgIGVsc2UgZm9yIGogPSAxIHRvIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgZmxvb3AgYXJyIGlkeCBmIChwcmVkIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW1zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltcyBpblxuICAgIGxldCBkbGVuID0gQXJyYXkubGVuZ3RoIGRpbXMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zOyBhcnJcblxuICBleHRlcm5hbCBudW1fZGltczogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCJjYW1sX2JhX251bV9kaW1zXCJcbiAgZXh0ZXJuYWwgbnRoX2RpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9iYV9kaW1cIlxuICBsZXQgZGltcyBhID1cbiAgICBsZXQgbiA9IG51bV9kaW1zIGEgaW5cbiAgICBsZXQgZCA9IEFycmF5Lm1ha2UgbiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkbyBkLihpKSA8LSBudGhfZGltIGEgaSBkb25lO1xuICAgIGRcblxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKEFycmF5LmZvbGRfbGVmdCAoICogKSAxIChkaW1zIGFycikpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHNsaWNlX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCBhcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zbGljZVwiXG4gIGV4dGVybmFsIHNsaWNlX3JpZ2h0OiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0XG4gICAgID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuZW5kXG5cbm1vZHVsZSBBcnJheTAgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfHxdXG4gIGxldCBnZXQgYXJyID0gR2VuYXJyYXkuZ2V0IGFyciBbfHxdXG4gIGxldCBzZXQgYXJyID0gR2VuYXJyYXkuc2V0IGFyciBbfHxdXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID0ga2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycilcblxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuXG4gIGxldCBvZl92YWx1ZSBraW5kIGxheW91dCB2ID1cbiAgICBsZXQgYSA9IGNyZWF0ZSBraW5kIGxheW91dCBpblxuICAgIHNldCBhIHY7XG4gICAgYVxuICBsZXQgaW5pdCA9IG9mX3ZhbHVlXG5lbmRcblxubW9kdWxlIEFycmF5MSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbXxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMVwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8xXCJcbiAgZXh0ZXJuYWwgZGltOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltIGFycilcblxuICBleHRlcm5hbCBzdWI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgJ2MpIHQgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlICh0eXBlIHQpIChhIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpIG4gPVxuICAgIG1hdGNoIGxheW91dCBhIHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF0gOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IChHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdOiAoXywgXywgdCkgR2VuYXJyYXkudClcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbiAgbGV0IGNfaW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbSBkbyB1bnNhZmVfc2V0IGFyciBpIChmIGkpIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltIGYgPVxuICAgIGZvciBpID0gMSB0byBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0gZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0gZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbSBmOyBhcnJcbiAgbGV0IG9mX2FycmF5ICh0eXBlIHQpIGtpbmQgKGxheW91dDogdCBsYXlvdXQpIGRhdGEgPVxuICAgIGxldCBiYSA9IGNyZWF0ZSBraW5kIGxheW91dCAoQXJyYXkubGVuZ3RoIGRhdGEpIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZGF0YSAtIDEgZG8gdW5zYWZlX3NldCBiYSAoaSArIG9mcykgZGF0YS4oaSkgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW0xOyBkaW0yfF1cbiAgZXh0ZXJuYWwgZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfMlwiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2FcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9yZWZfMlwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8yXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViX2xlZnQ6ICgnYSwgJ2IsIGNfbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgZXh0ZXJuYWwgc3ViX3JpZ2h0OlxuICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnQgYSBuID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdXG4gIGxldCBzbGljZV9yaWdodCBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiAoZiBpIGopXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltMSBkaW0yIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIHJvdy4oailcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxubW9kdWxlIEFycmF5MyA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0ID0gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgbGV0IGNyZWF0ZSBraW5kIGxheW91dCBkaW0xIGRpbTIgZGltMyA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMjsgZGltM3xdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8zXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV9zZXRfM1wiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzNcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0XG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzNcIlxuICBleHRlcm5hbCBkaW0xOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbiAgZXh0ZXJuYWwgZGltMjogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMlwiXG4gIGV4dGVybmFsIGRpbTM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzNcIlxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChkaW0xIGFycikgKiAoZGltMiBhcnIpICogKGRpbTMgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAgKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBsZXQgc2xpY2VfbGVmdF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bjsgbXxdXG4gIGxldCBzbGljZV9yaWdodF8xIGEgbiBtID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfbGVmdF8yIGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9yaWdodCBhIFt8bnxdXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGZvciBpID0gMCB0byBwcmVkIGRpbTEgZG9cbiAgICAgIGZvciBqID0gMCB0byBwcmVkIGRpbTIgZG9cbiAgICAgICAgZm9yIGsgPSAwIHRvIHByZWQgZGltMyBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYXJyIGkgaiBrIChmIGkgaiBrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZVxuICBsZXQgZm9ydHJhbl9pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgayA9IDEgdG8gZGltMyBkb1xuICAgICAgZm9yIGogPSAxIHRvIGRpbTIgZG9cbiAgICAgICAgZm9yIGkgPSAxIHRvIGRpbTEgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBkaW0zIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgIHwgQ19sYXlvdXQgLT4gY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgZGltMSA9IEFycmF5Lmxlbmd0aCBkYXRhIGluXG4gICAgbGV0IGRpbTIgPSBpZiBkaW0xID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkgaW5cbiAgICBsZXQgZGltMyA9IGlmIGRpbTIgPSAwIHRoZW4gMCBlbHNlIEFycmF5Lmxlbmd0aCBkYXRhLigwKS4oMCkgaW5cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgaW5cbiAgICBsZXQgb2ZzID1cbiAgICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgICAgIENfbGF5b3V0IC0+IDBcbiAgICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gMVxuICAgIGluXG4gICAgZm9yIGkgPSAwIHRvIGRpbTEgLSAxIGRvXG4gICAgICBsZXQgcm93ID0gZGF0YS4oaSkgaW5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCByb3cgPD4gZGltMiB0aGVuXG4gICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgIGZvciBqID0gMCB0byBkaW0yIC0gMSBkb1xuICAgICAgICBsZXQgY29sID0gcm93LihqKSBpblxuICAgICAgICBpZiBBcnJheS5sZW5ndGggY29sIDw+IGRpbTMgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnKFwiQmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YVwiKTtcbiAgICAgICAgZm9yIGsgPSAwIHRvIGRpbTMgLSAxIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBiYSAoaSArIG9mcykgKGogKyBvZnMpIChrICsgb2ZzKSBjb2wuKGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lO1xuICAgIGJhXG5lbmRcblxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkwOiAoJ2EsICdiLCAnYykgQXJyYXkwLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkxOiAoJ2EsICdiLCAnYykgQXJyYXkxLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkyOiAoJ2EsICdiLCAnYykgQXJyYXkyLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZ2VuYXJyYXlfb2ZfYXJyYXkzOiAoJ2EsICdiLCAnYykgQXJyYXkzLnQgLT4gKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnRcbiAgID0gXCIlaWRlbnRpdHlcIlxubGV0IGFycmF5MF9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDAgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTBfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5MV9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDEgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTFfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5Ml9vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDIgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTJfb2ZfZ2VuYXJyYXlcIlxubGV0IGFycmF5M19vZl9nZW5hcnJheSBhID1cbiAgaWYgR2VuYXJyYXkubnVtX2RpbXMgYSA9IDMgdGhlbiBhXG4gIGVsc2UgaW52YWxpZF9hcmcgXCJCaWdhcnJheS5hcnJheTNfb2ZfZ2VuYXJyYXlcIlxuXG5leHRlcm5hbCByZXNoYXBlOlxuICAgKCdhLCAnYiwgJ2MpIEdlbmFycmF5LnQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiY2FtbF9iYV9yZXNoYXBlXCJcbmxldCByZXNoYXBlXzAgYSA9IHJlc2hhcGUgYSBbfHxdXG5sZXQgcmVzaGFwZV8xIGEgZGltMSA9IHJlc2hhcGUgYSBbfGRpbTF8XVxubGV0IHJlc2hhcGVfMiBhIGRpbTEgZGltMiA9IHJlc2hhcGUgYSBbfGRpbTE7ZGltMnxdXG5sZXQgcmVzaGFwZV8zIGEgZGltMSBkaW0yIGRpbTMgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTI7ZGltM3xdXG5cbigqIEZvcmNlIGNhbWxfYmFfZ2V0X3sxLDIsMyxOfSB0byBiZSBsaW5rZWQgaW4sIHNpbmNlIHdlIGRvbid0IHJlZmVyXG4gICB0byB0aG9zZSBwcmltaXRpdmVzIGRpcmVjdGx5IGluIHRoaXMgZmlsZSAqKVxuXG5sZXQgXyA9XG4gIGxldCBfID0gR2VuYXJyYXkuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkxLmdldCBpblxuICBsZXQgXyA9IEFycmF5Mi5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTMuZ2V0IGluXG4gICgpXG5cbltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5leHRlcm5hbCBnZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzFcIlxuZXh0ZXJuYWwgZ2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8yXCJcbmV4dGVybmFsIGdldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfM1wiXG5leHRlcm5hbCBzZXQxOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzFcIlxuZXh0ZXJuYWwgc2V0MjogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8yXCJcbmV4dGVybmFsIHNldDM6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfM1wiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICopXG4oKiAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDYW1iaXVtLCBDb2xsZWdlIGRlIEZyYW5jZSBhbmQgSW5yaWEgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciAqKVxuXG5leHRlcm5hbCByYW5kb21fc2VlZDogdW5pdCAtPiBpbnQgYXJyYXkgPSBcImNhbWxfc3lzX3JhbmRvbV9zZWVkXCJcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgb3BlbiBCaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBleHRlcm5hbCBuZXh0OiB0IC0+IChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgICA9IFwiY2FtbF9seG1fbmV4dFwiIFwiY2FtbF9seG1fbmV4dF91bmJveGVkXCIgW0BAbm9hbGxvY11cblxuICBsZXQgY3JlYXRlICgpIDogdCA9XG4gICAgQXJyYXkxLmNyZWF0ZSBJbnQ2NCBDX2xheW91dCA0XG5cbiAgbGV0IHNldCBzIGkxIGkyIGkzIGk0ID1cbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDAgKEludDY0LmxvZ29yIGkxIDFMKTsgKCogbXVzdCBiZSBvZGQgKilcbiAgICBBcnJheTEudW5zYWZlX3NldCBzIDEgaTI7XG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAyIChpZiBpMyA8PiAwTCB0aGVuIGkzIGVsc2UgMUwpOyAoKiBtdXN0IG5vdCBiZSAwICopXG4gICAgQXJyYXkxLnVuc2FmZV9zZXQgcyAzIChpZiBpNCA8PiAwTCB0aGVuIGk0IGVsc2UgMkwpICgqIG11c3Qgbm90IGJlIDAgKilcblxuICBsZXQgbWsgaTEgaTIgaTMgaTQgPVxuICAgIGxldCBzID0gY3JlYXRlICgpIGluXG4gICAgc2V0IHMgaTEgaTIgaTMgaTQ7IHNcblxuICBsZXQgYXNzaWduIChkc3Q6IHQpIChzcmM6IHQpID1cbiAgICBBcnJheTEuYmxpdCBzcmMgZHN0XG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHMnID0gY3JlYXRlKCkgaW4gYXNzaWduIHMnIHM7IHMnXG5cbiAgKCogVGhlIHNlZWQgaXMgYW4gYXJyYXkgb2YgaW50ZWdlcnMuICBJdCBjYW4gYmUganVzdCBvbmUgaW50ZWdlcixcbiAgICAgYnV0IGl0IGNhbiBhbHNvIGJlIDEyIG9yIG1vcmUgYnl0ZXMuICBUbyBoaWRlIHRoZSBkaWZmZXJlbmNlLFxuICAgICB3ZSBzZXJpYWxpemUgdGhlIGFycmF5IGFzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMsIHRoZW4gaGFzaCB0aGVcbiAgICAgc2VxdWVuY2Ugd2l0aCBNRDUgKERpZ2VzdC5ieXRlcykuICBNRDUgZ2l2ZXMgb25seSAxMjggYml0cyB3aGlsZVxuICAgICB3ZSBuZWVkIDI1NiBiaXRzLCBzbyB3ZSBoYXNoIHR3aWNlIHdpdGggZGlmZmVyZW50IHN1ZmZpeGVzLiAqKVxuICBsZXQgcmVpbml0IHMgc2VlZCA9XG4gICAgbGV0IG4gPSBBcnJheS5sZW5ndGggc2VlZCBpblxuICAgIGxldCBiID0gQnl0ZXMuY3JlYXRlIChuICogOCArIDEpIGluXG4gICAgZm9yIGkgPSAwIHRvIG4tMSBkb1xuICAgICAgQnl0ZXMuc2V0X2ludDY0X2xlIGIgKGkgKiA4KSAoSW50NjQub2ZfaW50IHNlZWQuKGkpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDEnO1xuICAgIGxldCBkMSA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgQnl0ZXMuc2V0IGIgKG4gKiA4KSAnXFx4MDInO1xuICAgIGxldCBkMiA9IERpZ2VzdC5ieXRlcyBiIGluXG4gICAgc2V0IHMgKFN0cmluZy5nZXRfaW50NjRfbGUgZDEgMClcbiAgICAgICAgICAoU3RyaW5nLmdldF9pbnQ2NF9sZSBkMSA4KVxuICAgICAgICAgIChTdHJpbmcuZ2V0X2ludDY0X2xlIGQyIDApXG4gICAgICAgICAgKFN0cmluZy5nZXRfaW50NjRfbGUgZDIgOClcblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcyA9IGNyZWF0ZSgpIGluIHJlaW5pdCBzIHNlZWQ7IHNcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgKCkgPVxuICAgIG1ha2UgKHJhbmRvbV9zZWVkICgpKVxuXG4gICgqIFJldHVybiAzMCByYW5kb20gYml0cyBhcyBhbiBpbnRlZ2VyIDAgPD0geCA8IDEwNzM3NDE4MjQgKilcbiAgbGV0IGJpdHMgcyA9XG4gICAgSW50NjQudG9faW50IChuZXh0IHMpIGxhbmQgMHgzRkZGX0ZGRkZcblxuICAoKiBSZXR1cm4gYW4gaW50ZWdlciBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpICopXG4gIGxldCByZWMgaW50YXV4IHMgbiA9XG4gICAgbGV0IHIgPSBiaXRzIHMgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IDB4M0ZGRkZGRkYgLSBuICsgMSB0aGVuIGludGF1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGludCBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgfHwgYm91bmQgPD0gMFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50XCJcbiAgICBlbHNlIGludGF1eCBzIGJvdW5kXG5cbiAgKCogUmV0dXJuIGFuIGludGVnZXIgYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS5cbiAgICAgW2JvdW5kXSBtYXkgYmUgYW55IHBvc2l0aXZlIFtpbnRdLiAqKVxuICBsZXQgcmVjIGludDYzYXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQ2NC50b19pbnQgKG5leHQgcykgbGFuZCBtYXhfaW50IGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiBtYXhfaW50IC0gbiArIDEgdGhlbiBpbnQ2M2F1eCBzIG4gZWxzZSB2XG5cbiAgbGV0IGZ1bGxfaW50IHMgYm91bmQgPVxuICAgIGlmIGJvdW5kIDw9IDAgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJSYW5kb20uZnVsbF9pbnRcIlxuICAgIGVsc2UgaWYgYm91bmQgPiAweDNGRkZGRkZGIHRoZW5cbiAgICAgIGludDYzYXV4IHMgYm91bmRcbiAgICBlbHNlXG4gICAgICBpbnRhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiAzMiByYW5kb20gYml0cyBhcyBhbiBbaW50MzJdICopXG4gIGxldCBiaXRzMzIgcyA9XG4gICAgSW50NjQudG9faW50MzIgKG5leHQgcylcblxuICAoKiBSZXR1cm4gYW4gW2ludDMyXSBiZXR3ZWVuIDAgKGluY2x1ZGVkKSBhbmQgW2JvdW5kXSAoZXhjbHVkZWQpLiAqKVxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IHIgPSBJbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChiaXRzMzIgcykgMSBpblxuICAgIGxldCB2ID0gSW50MzIucmVtIHIgbiBpblxuICAgIGlmIEludDMyLihzdWIgciB2ID4gYWRkIChzdWIgbWF4X2ludCBuKSAxbClcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG4gICgqIFJldHVybiA2NCByYW5kb20gYml0cyBhcyBhbiBbaW50NjRdICopXG4gIGxldCBiaXRzNjQgcyA9XG4gICAgbmV4dCBzXG5cbiAgKCogUmV0dXJuIGFuIFtpbnQ2NF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCByID0gSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCAoYml0czY0IHMpIDEgaW5cbiAgICBsZXQgdiA9IEludDY0LnJlbSByIG4gaW5cbiAgICBpZiBJbnQ2NC4oc3ViIHIgdiA+IGFkZCAoc3ViIG1heF9pbnQgbikgMUwpXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuICAoKiBSZXR1cm4gMzIgb3IgNjQgcmFuZG9tIGJpdHMgYXMgYSBbbmF0aXZlaW50XSAqKVxuICBsZXQgbmF0aXZlYml0cyA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChiaXRzMzIgcylcbiAgICBlbHNlIGZ1biBzIC0+IEludDY0LnRvX25hdGl2ZWludCAoYml0czY0IHMpXG5cbiAgKCogUmV0dXJuIGEgW25hdGl2ZWludF0gYmV0d2VlbiAwIChpbmNsdWRlZCkgYW5kIFtib3VuZF0gKGV4Y2x1ZGVkKS4gKilcbiAgbGV0IG5hdGl2ZWludCA9XG4gICAgaWYgTmF0aXZlaW50LnNpemUgPSAzMlxuICAgIHRoZW4gZnVuIHMgYm91bmQgLT4gTmF0aXZlaW50Lm9mX2ludDMyIChpbnQzMiBzIChOYXRpdmVpbnQudG9faW50MzIgYm91bmQpKVxuICAgIGVsc2UgZnVuIHMgYm91bmQgLT4gSW50NjQudG9fbmF0aXZlaW50IChpbnQ2NCBzIChJbnQ2NC5vZl9uYXRpdmVpbnQgYm91bmQpKVxuXG4gICgqIFJldHVybiBhIGZsb2F0IDAgPCB4IDwgMSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlXG4gICAgIG11bHRpcGxlcyBvZiAyXi01MyAqKVxuICBsZXQgcmVjIHJhd2Zsb2F0IHMgPVxuICAgIGxldCBiID0gbmV4dCBzIGluXG4gICAgbGV0IG4gPSBJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIGIgMTEgaW5cbiAgICBpZiBuIDw+IDBMIHRoZW4gSW50NjQudG9fZmxvYXQgbiAqLiAweDEucC01MyBlbHNlIHJhd2Zsb2F0IHNcblxuICAoKiBSZXR1cm4gYSBmbG9hdCBiZXR3ZWVuIDAgYW5kIFtib3VuZF0gKilcbiAgbGV0IGZsb2F0IHMgYm91bmQgPSByYXdmbG9hdCBzICouIGJvdW5kXG5cbiAgKCogUmV0dXJuIGEgcmFuZG9tIEJvb2xlYW4gKilcbiAgbGV0IGJvb2wgcyA9IG5leHQgcyA8IDBMXG5cbiAgKCogU3BsaXQgYSBuZXcgUFJORyBvZmYgdGhlIGdpdmVuIFBSTkcgKilcbiAgbGV0IHNwbGl0IHMgPVxuICAgIGxldCBpMSA9IGJpdHM2NCBzIGluIGxldCBpMiA9IGJpdHM2NCBzIGluXG4gICAgbGV0IGkzID0gYml0czY0IHMgaW4gbGV0IGk0ID0gYml0czY0IHMgaW5cbiAgICBtayBpMSBpMiBpMyBpNFxuZW5kXG5cbmxldCBta19kZWZhdWx0ICgpID1cbiAgKCogVGhpcyBpcyB0aGUgc3RhdGUgb2J0YWluZWQgd2l0aCBbU3RhdGUubWFrZSBbfCAzMTQxNTkyNjUgfF1dLiAqKVxuICBTdGF0ZS5tayAoLTYxOTY4NzQyODk1Njc3MDUwOTdMKVxuICAgICAgICAgICA1ODY1NzMyNDk4MzM3MTMxODlMXG4gICAgICAgICAgICgtODU5MTI2ODgwMzg2NTA0MzQwN0wpXG4gICAgICAgICAgIDYzODg2MTM1OTU4NDk3NzIwNDRMXG5cbmxldCByYW5kb21fa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IH5zcGxpdF9mcm9tX3BhcmVudDpTdGF0ZS5zcGxpdCBta19kZWZhdWx0XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBpbnQgYm91bmQgPSBTdGF0ZS5pbnQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQzMiBib3VuZCA9IFN0YXRlLmludDMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IG5hdGl2ZWludCBib3VuZCA9IFN0YXRlLm5hdGl2ZWludCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgYm91bmRcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBib3VuZFxubGV0IGZsb2F0IHNjYWxlID0gU3RhdGUuZmxvYXQgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpIHNjYWxlXG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKERvbWFpbi5ETFMuZ2V0IHJhbmRvbV9rZXkpXG5sZXQgYml0czMyICgpID0gU3RhdGUuYml0czMyIChEb21haW4uRExTLmdldCByYW5kb21fa2V5KVxubGV0IGJpdHM2NCAoKSA9IFN0YXRlLmJpdHM2NCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBuYXRpdmViaXRzICgpID0gU3RhdGUubmF0aXZlYml0cyAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxubGV0IGZ1bGxfaW5pdCBzZWVkID0gU3RhdGUucmVpbml0IChEb21haW4uRExTLmdldCByYW5kb21fa2V5KSBzZWVkXG5sZXQgaW5pdCBzZWVkID0gZnVsbF9pbml0IFt8IHNlZWQgfF1cbmxldCBzZWxmX2luaXQgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkKCkpXG5cbigqIFNwbGl0dGluZyAqKVxuXG5sZXQgc3BsaXQgKCkgPSBTdGF0ZS5zcGxpdCAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcblxuKCogTWFuaXB1bGF0aW5nIHRoZSBjdXJyZW50IHN0YXRlLiAqKVxuXG5sZXQgZ2V0X3N0YXRlICgpID0gU3RhdGUuY29weSAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoRG9tYWluLkRMUy5nZXQgcmFuZG9tX2tleSkgc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBIYXNoIHRhYmxlcyAqKVxuXG4oKiBXZSBkbyBkeW5hbWljIGhhc2hpbmcsIGFuZCByZXNpemUgdGhlIHRhYmxlIGFuZCByZWhhc2ggdGhlIGVsZW1lbnRzXG4gICB3aGVuIHRoZSBsb2FkIGZhY3RvciBiZWNvbWVzIHRvbyBoaWdoLiAqKVxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IG11dGFibGUgc2l6ZTogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICgqIG51bWJlciBvZiBlbnRyaWVzICopXG4gICAgbXV0YWJsZSBkYXRhOiAoJ2EsICdiKSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc2l6ZTogaW50OyAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgfVxuXG5hbmQgKCdhLCAnYikgYnVja2V0bGlzdCA9XG4gICAgRW1wdHlcbiAgfCBDb25zIG9mIHsgbXV0YWJsZSBrZXk6ICdhO1xuICAgICAgICAgICAgICBtdXRhYmxlIGRhdGE6ICdiO1xuICAgICAgICAgICAgICBtdXRhYmxlIG5leHQ6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgfVxuXG4oKiBUaGUgc2lnbiBvZiBpbml0aWFsX3NpemUgZW5jb2RlcyB0aGUgZmFjdCB0aGF0IGEgdHJhdmVyc2FsIGlzXG4gICBvbmdvaW5nIG9yIG5vdC5cblxuICAgVGhpcyBkaXNhYmxlcyB0aGUgZWZmaWNpZW50IGluIHBsYWNlIGltcGxlbWVudGF0aW9uIG9mIHJlc2l6aW5nLlxuKilcblxubGV0IG9uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgfHwgaC5pbml0aWFsX3NpemUgPCAwXG5cbmxldCBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGggPVxuICBoLmluaXRpYWxfc2l6ZSA8LSAtIGguaW5pdGlhbF9zaXplXG5cbigqIFRvIHBpY2sgcmFuZG9tIHNlZWRzIGlmIHJlcXVlc3RlZCAqKVxuXG5sZXQgcmFuZG9taXplZF9kZWZhdWx0ID1cbiAgbGV0IHBhcmFtcyA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0cnkgU3lzLmdldGVudiBcIkNBTUxSVU5QQVJBTVwiIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIgaW5cbiAgU3RyaW5nLmNvbnRhaW5zIHBhcmFtcyAnUidcblxubGV0IHJhbmRvbWl6ZWQgPSBBdG9taWMubWFrZSByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IEF0b21pYy5zZXQgcmFuZG9taXplZCB0cnVlXG5sZXQgaXNfcmFuZG9taXplZCAoKSA9IEF0b21pYy5nZXQgcmFuZG9taXplZFxuXG5sZXQgcHJuZ19rZXkgPSBEb21haW4uRExTLm5ld19rZXkgUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0XG5cbigqIEZ1bmN0aW9ucyB3aGljaCBhcHBlYXIgYmVmb3JlIHRoZSBmdW5jdG9yaWFsIGludGVyZmFjZSBtdXN0IGVpdGhlciBiZVxuICAgaW5kZXBlbmRlbnQgb2YgdGhlIGhhc2ggZnVuY3Rpb24gb3IgdGFrZSBpdCBhcyBhIHBhcmFtZXRlciAoc2VlICMyMjAyIGFuZFxuICAgY29kZSBiZWxvdyB0aGUgZnVuY3RvciBkZWZpbml0aW9ucy4gKilcblxuKCogQ3JlYXRpbmcgYSBmcmVzaCwgZW1wdHkgdGFibGUgKilcblxubGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gIGlmIHggPj0gbiB0aGVuIHhcbiAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbmxldCBjcmVhdGUgPyhyYW5kb20gPSBBdG9taWMuZ2V0IHJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChEb21haW4uRExTLmdldCBwcm5nX2tleSkgZWxzZSAwXG4gIGluXG4gIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxubGV0IGNsZWFyIGggPVxuICBpZiBoLnNpemUgPiAwIHRoZW4gYmVnaW5cbiAgICBoLnNpemUgPC0gMDtcbiAgICBBcnJheS5maWxsIGguZGF0YSAwIChBcnJheS5sZW5ndGggaC5kYXRhKSBFbXB0eVxuICBlbmRcblxubGV0IHJlc2V0IGggPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPCA0ICgqIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgaGFzaCB0YWJsZXMgKilcbiAgICB8fCBsZW4gPSBhYnMgaC5pbml0aWFsX3NpemUgdGhlblxuICAgIGNsZWFyIGhcbiAgZWxzZSBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIChhYnMgaC5pbml0aWFsX3NpemUpIEVtcHR5XG4gIGVuZFxuXG5sZXQgY29weV9idWNrZXRsaXN0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGxldCByZWMgbG9vcCBwcmVjID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgfCBDb25zIHByZWMgLT4gIHByZWMubmV4dCA8LSByXG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgICBsb29wIHIgbmV4dFxuICAgICAgaW5cbiAgICAgIGxldCByID0gQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBpblxuICAgICAgbG9vcCByIG5leHQ7XG4gICAgICByXG5cbmxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkubWFwIGNvcHlfYnVja2V0bGlzdCBoLmRhdGEgfVxuXG5sZXQgbGVuZ3RoIGggPSBoLnNpemVcblxubGV0IGluc2VydF9hbGxfYnVja2V0cyBpbmRleGZ1biBpbnBsYWNlIG9kYXRhIG5kYXRhID1cbiAgbGV0IG5zaXplID0gQXJyYXkubGVuZ3RoIG5kYXRhIGluXG4gIGxldCBuZGF0YV90YWlsID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICBsZXQgcmVjIGluc2VydF9idWNrZXQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gYXMgY2VsbCAtPlxuICAgICAgICBsZXQgY2VsbCA9XG4gICAgICAgICAgaWYgaW5wbGFjZSB0aGVuIGNlbGxcbiAgICAgICAgICBlbHNlIENvbnMge2tleTsgZGF0YTsgbmV4dCA9IEVtcHR5fVxuICAgICAgICBpblxuICAgICAgICBsZXQgbmlkeCA9IGluZGV4ZnVuIGtleSBpblxuICAgICAgICBiZWdpbiBtYXRjaCBuZGF0YV90YWlsLihuaWR4KSB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gbmRhdGEuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBjZWxsO1xuICAgICAgICBlbmQ7XG4gICAgICAgIG5kYXRhX3RhaWwuKG5pZHgpIDwtIGNlbGw7XG4gICAgICAgIGluc2VydF9idWNrZXQgbmV4dFxuICBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9kYXRhIC0gMSBkb1xuICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gIGRvbmU7XG4gIGlmIGlucGxhY2UgdGhlblxuICAgIGZvciBpID0gMCB0byBuc2l6ZSAtIDEgZG9cbiAgICAgIG1hdGNoIG5kYXRhX3RhaWwuKGkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gKClcbiAgICAgIHwgQ29ucyB0YWlsIC0+IHRhaWwubmV4dCA8LSBFbXB0eVxuICAgIGRvbmVcblxubGV0IHJlc2l6ZSBpbmRleGZ1biBoID1cbiAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gIGxldCBvc2l6ZSA9IEFycmF5Lmxlbmd0aCBvZGF0YSBpblxuICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgaWYgbnNpemUgPCBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgIGxldCBpbnBsYWNlID0gbm90IChvbmdvaW5nX3RyYXZlcnNhbCBoKSBpblxuICAgIGguZGF0YSA8LSBuZGF0YTsgICAgICAgICAgKCogc28gdGhhdCBpbmRleGZ1biBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgaW5zZXJ0X2FsbF9idWNrZXRzIChpbmRleGZ1biBoKSBpbnBsYWNlIG9kYXRhIG5kYXRhXG4gIGVuZFxuXG5sZXQgaXRlciBmIGggPVxuICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPlxuICAgICAgICAoKVxuICAgIHwgQ29uc3trZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIGYga2V5IGRhdGE7IGRvX2J1Y2tldCBuZXh0IGluXG4gIGxldCBvbGRfdHJhdiA9IG9uZ29pbmdfdHJhdmVyc2FsIGggaW5cbiAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB0cnlcbiAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGRvX2J1Y2tldCBkLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxubGV0IHJlYyBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBFbXB0eVxuICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIEVtcHR5XG4gICAgICBlbmRcbiAgfCAoQ29ucyAoe2tleTsgZGF0YTsgbmV4dH0gYXMgYykpIGFzIHNsb3QgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGYga2V5IGRhdGEgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBwcmVjIG5leHRcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIHNsb3RcbiAgICAgICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gc2xvdFxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBjLmRhdGEgPC0gZGF0YTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHNsb3QgbmV4dFxuICAgICAgZW5kXG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgZiBoID1cbiAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgRW1wdHkgaC5kYXRhLihpKVxuICAgIGRvbmU7XG4gICAgaWYgbm90IG9sZF90cmF2IHRoZW4gZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoXG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgZm9sZCBmIGggaW5pdCA9XG4gIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgICBFbXB0eSAtPlxuICAgICAgICBhY2N1XG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZG9fYnVja2V0IG5leHQgKGYga2V5IGRhdGEgYWNjdSkgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgbGV0IGFjY3UgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgIGFjY3UgOj0gZG9fYnVja2V0IGQuKGkpICFhY2N1XG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgIWFjY3VcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbnR5cGUgc3RhdGlzdGljcyA9IHtcbiAgbnVtX2JpbmRpbmdzOiBpbnQ7XG4gIG51bV9idWNrZXRzOiBpbnQ7XG4gIG1heF9idWNrZXRfbGVuZ3RoOiBpbnQ7XG4gIGJ1Y2tldF9oaXN0b2dyYW06IGludCBhcnJheVxufVxuXG5sZXQgcmVjIGJ1Y2tldF9sZW5ndGggYWNjdSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYWNjdVxuICB8IENvbnN7bmV4dH0gLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIG5leHRcblxubGV0IHN0YXRzIGggPVxuICBsZXQgbWJsID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgQXJyYXkuaXRlclxuICAgIChmdW4gYiAtPlxuICAgICAgbGV0IGwgPSBidWNrZXRfbGVuZ3RoIDAgYiBpblxuICAgICAgaGlzdG8uKGwpIDwtIGhpc3RvLihsKSArIDEpXG4gICAgaC5kYXRhO1xuICB7IG51bV9iaW5kaW5ncyA9IGguc2l6ZTtcbiAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgYnVja2V0X2hpc3RvZ3JhbSA9IGhpc3RvIH1cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSB0YmwgPVxuICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICBrZWVwIGl0ZXJhdGluZyBvbiB0aGUgc2FtZSBhcnJheSAqKVxuICBsZXQgdGJsX2RhdGEgPSB0YmwuZGF0YSBpblxuICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICBsZXQgcmVjIGF1eCBpIGJ1Y2sgKCkgPSBtYXRjaCBidWNrIHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgdGhlbiBTZXEuTmlsXG4gICAgICAgIGVsc2UgYXV4KGkrMSkgdGJsX2RhdGEuKGkpICgpXG4gICAgfCBDb25zIHtrZXk7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgaW5cbiAgYXV4IDAgRW1wdHlcblxubGV0IHRvX3NlcV9rZXlzIG0gPSBTZXEubWFwIGZzdCAodG9fc2VxIG0pXG5cbmxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbigqIEZ1bmN0b3JpYWwgaW50ZXJmYWNlICopXG5cbm1vZHVsZSB0eXBlIEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTZWVkZWRIYXNoZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gIGVuZFxuXG5tb2R1bGUgdHlwZSBTID1cbiAgc2lnXG4gICAgdHlwZSBrZXlcbiAgICB0eXBlICEnYSB0XG4gICAgdmFsIGNyZWF0ZTogaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weTogJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGFkZDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmU6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6ICdhIHQgLT4ga2V5IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2FsbDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGxlbmd0aDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGUgOiA/cmFuZG9tOmJvb2wgLT4gaW50IC0+ICdhIHRcbiAgICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgcmVzZXQgOiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIHJlbW92ZSA6ICdhIHQgLT4ga2V5IC0+IHVuaXRcbiAgICB2YWwgZmluZCA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGwgOiAnYSB0IC0+IGtleSAtPiAnYSBsaXN0XG4gICAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gICAgdmFsIG1lbSA6ICdhIHQgLT4ga2V5IC0+IGJvb2xcbiAgICB2YWwgaXRlciA6IChrZXkgLT4gJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG4gICAgdmFsIGZpbHRlcl9tYXBfaW5wbGFjZTogKGtleSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkIDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICAgIHZhbCBzdGF0czogJ2EgdCAtPiBzdGF0aXN0aWNzXG4gICAgdmFsIHRvX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudFxuICAgIHZhbCB0b19zZXFfa2V5cyA6IF8gdCAtPiBrZXkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX3ZhbHVlcyA6ICdhIHQgLT4gJ2EgU2VxLnRcbiAgICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIHJlcGxhY2Vfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgb2Zfc2VxIDogKGtleSAqICdhKSBTZXEudCAtPiAnYSB0XG4gIGVuZFxuXG5tb2R1bGUgTWFrZVNlZWRlZChIOiBTZWVkZWRIYXNoZWRUeXBlKTogKFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGtleSA9IEgudFxuICAgIHR5cGUgJ2EgaGFzaHRibCA9IChrZXksICdhKSB0XG4gICAgdHlwZSAnYSB0ID0gJ2EgaGFzaHRibFxuICAgIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgICBsZXQgY2xlYXIgPSBjbGVhclxuICAgIGxldCByZXNldCA9IHJlc2V0XG4gICAgbGV0IGNvcHkgPSBjb3B5XG5cbiAgICBsZXQga2V5X2luZGV4IGgga2V5ID1cbiAgICAgIChILnNlZWRlZF9oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuKCogUG9seW1vcnBoaWMgaGFzaCBmdW5jdGlvbi1iYXNlZCB0YWJsZXMgKilcbigqIENvZGUgaW5jbHVkZWQgYmVsb3cgdGhlIGZ1bmN0b3JpYWwgaW50ZXJmYWNlIHRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbFxuICAgdXNlIC0gc2VlICMyMjAyICopXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDpcbiAgaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gaW50ID0gXCJjYW1sX2hhc2hcIiBbQEBub2FsbG9jXVxuXG5sZXQgaGFzaCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIDAgeFxubGV0IGhhc2hfcGFyYW0gbjEgbjIgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIG4xIG4yIDAgeFxubGV0IHNlZWRlZF9oYXNoIHNlZWQgeCA9IHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBzZWVkIHhcblxubGV0IGtleV9pbmRleCBoIGtleSA9XG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0XG4gIHRoZW4gKHNlZWRlZF9oYXNoX3BhcmFtIDEwIDEwMCBoLnNlZWQga2V5KSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcbiAgZWxzZSBpbnZhbGlkX2FyZyBcIkhhc2h0Ymw6IHVuc3VwcG9ydGVkIGhhc2ggdGFibGUgZm9ybWF0XCJcblxubGV0IGFkZCBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGJ1Y2tldCA9IENvbnN7a2V5OyBkYXRhOyBuZXh0PWguZGF0YS4oaSl9IGluXG4gIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuXG5sZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgKClcbiAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICBpZiBjb21wYXJlIGsga2V5ID0gMFxuICAgICAgdGhlbiBiZWdpblxuICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gaC5kYXRhLihpKSA8LSBuZXh0XG4gICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBuZXh0XG4gICAgICBlbmRcbiAgICAgIGVsc2UgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IGMgbmV4dFxuXG5sZXQgcmVtb3ZlIGgga2V5ID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IEVtcHR5IGguZGF0YS4oaSlcblxubGV0IHJlYyBmaW5kX3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBkYXRhIGVsc2UgZmluZF9yZWMga2V5IG5leHRcblxubGV0IGZpbmQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgazEgPSAwIHRoZW4gZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgaWYgY29tcGFyZSBrZXkgazIgPSAwIHRoZW4gZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGszID0gMCB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbmxldCByZWMgZmluZF9yZWNfb3B0IGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIE5vbmVcbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrZXkgayA9IDAgdGhlbiBTb21lIGRhdGEgZWxzZSBmaW5kX3JlY19vcHQga2V5IG5leHRcblxubGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgfCBFbXB0eSAtPiBOb25lXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBTb21lIGQxIGVsc2VcbiAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBTb21lIGQyIGVsc2VcbiAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gU29tZSBkMyBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dDNcblxubGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIFtdXG4gIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGRhdGEgOjogZmluZF9pbl9idWNrZXQgbmV4dFxuICAgICAgZWxzZSBmaW5kX2luX2J1Y2tldCBuZXh0IGluXG4gIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgcmVjIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgdHJ1ZVxuICB8IENvbnMgKHtrZXk9azsgbmV4dH0gYXMgc2xvdCkgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIChzbG90LmtleSA8LSBrZXk7IHNsb3QuZGF0YSA8LSBkYXRhOyBmYWxzZSlcbiAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG5sZXQgcmVwbGFjZSBoIGtleSBkYXRhID1cbiAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gIGlmIHJlcGxhY2VfYnVja2V0IGtleSBkYXRhIGwgdGhlbiBiZWdpblxuICAgIGguZGF0YS4oaSkgPC0gQ29uc3trZXk7IGRhdGE7IG5leHQ9bH07XG4gICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgaWYgaC5zaXplID4gQXJyYXkubGVuZ3RoIGguZGF0YSBsc2wgMSB0aGVuIHJlc2l6ZSBrZXlfaW5kZXggaFxuICBlbmRcblxubGV0IG1lbSBoIGtleSA9XG4gIGxldCByZWMgbWVtX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGZhbHNlXG4gIHwgQ29uc3trZXk9azsgbmV4dH0gLT5cbiAgICAgIGNvbXBhcmUgayBrZXkgPSAwIHx8IG1lbV9pbl9idWNrZXQgbmV4dCBpblxuICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG5sZXQgYWRkX3NlcSB0YmwgaSA9XG4gIFNlcS5pdGVyIChmdW4gKGssdikgLT4gYWRkIHRibCBrIHYpIGlcblxubGV0IHJlcGxhY2Vfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgdGJsXG5cbmxldCByZWJ1aWxkID8ocmFuZG9tID0gQXRvbWljLmdldCByYW5kb21pemVkKSBoID1cbiAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IChBcnJheS5sZW5ndGggaC5kYXRhKSBpblxuICBsZXQgc2VlZCA9XG4gICAgaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKERvbWFpbi5ETFMuZ2V0IHBybmdfa2V5KVxuICAgIGVsc2UgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDQgdGhlbiBoLnNlZWRcbiAgICBlbHNlIDAgaW5cbiAgbGV0IGgnID0ge1xuICAgIHNpemUgPSBoLnNpemU7XG4gICAgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eTtcbiAgICBzZWVkID0gc2VlZDtcbiAgICBpbml0aWFsX3NpemUgPSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguaW5pdGlhbF9zaXplIGVsc2Ugc1xuICB9IGluXG4gIGluc2VydF9hbGxfYnVja2V0cyAoa2V5X2luZGV4IGgnKSBmYWxzZSBoLmRhdGEgaCcuZGF0YTtcbiAgaCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqIFdlYWsgYXJyYXkgb3BlcmF0aW9ucyAqKVxuXG50eXBlICEnYSB0XG5cbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSB0ID0gXCJjYW1sX3dlYWtfY3JlYXRlXCJcblxuKCoqIG51bWJlciBvZiBhZGRpdGlvbmFsIHZhbHVlcyBpbiBhIHdlYWsgcG9pbnRlclxuICogICAgLSBMaW5rXG4gKiAgICAtIERhdGEgKilcbmxldCBhZGRpdGlvbmFsX3ZhbHVlcyA9IDIgKCogQ0FNTF9FUEhFX0ZJUlNUX0tFWSBpbiB3ZWFrLmggKilcblxubGV0IGNyZWF0ZSBsID1cbiAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBPYmouRXBoZW1lcm9uLm1heF9lcGhlX2xlbmd0aCkgdGhlblxuICAgIGludmFsaWRfYXJnKFwiV2Vhay5jcmVhdGVcIik7XG4gIGNyZWF0ZSBsXG5cblxubGV0IGxlbmd0aCB4ID0gT2JqLnNpemUoT2JqLnJlcHIgeCkgLSBhZGRpdGlvbmFsX3ZhbHVlc1xuXG5sZXQgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIG1zZyA9XG4gIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgIGludmFsaWRfYXJnKG1zZylcblxuZXh0ZXJuYWwgc2V0JyA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfZXBoZV9zZXRfa2V5XCJcbmV4dGVybmFsIHVuc2V0IDogJ2EgdCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3Vuc2V0X2tleVwiXG5sZXQgc2V0IGUgbyB4ID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5zZXRcIjtcbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiB1bnNldCBlIG9cbiAgfCBTb21lIHggLT4gc2V0JyBlIG8geFxuXG5leHRlcm5hbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRcIlxubGV0IGdldCBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmdldFwiO1xuICBnZXQgZSBvXG5cbmV4dGVybmFsIGdldF9jb3B5IDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uID0gXCJjYW1sX3dlYWtfZ2V0X2NvcHlcIlxubGV0IGdldF9jb3B5IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0X2NvcHlcIjtcbiAgZ2V0X2NvcHkgZSBvXG5cbmV4dGVybmFsIGNoZWNrIDogJ2EgdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF93ZWFrX2NoZWNrXCJcbmxldCBjaGVjayBlIG8gPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLmNoZWNrXCI7XG4gIGNoZWNrIGUgb1xuXG5leHRlcm5hbCBibGl0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfd2Vha19ibGl0XCJcblxuKCogYmxpdDogc3JjIHNyY29mZiBkc3QgZHN0b2ZmIGxlbiAqKVxubGV0IGJsaXQgZTEgbzEgZTIgbzIgbCA9XG4gIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgfHwgbzIgPCAwIHx8IG8yID4gbGVuZ3RoIGUyIC0gbFxuICB0aGVuIGludmFsaWRfYXJnIFwiV2Vhay5ibGl0XCJcbiAgZWxzZSBpZiBsIDw+IDAgdGhlbiBibGl0IGUxIG8xIGUyIG8yIGxcblxubGV0IGZpbGwgYXIgb2ZzIGxlbiB4ID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBhciAtIGxlblxuICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiV2Vhay5maWxsXCIpXG4gIGVsc2UgYmVnaW5cbiAgICBmb3IgaSA9IG9mcyB0byAob2ZzICsgbGVuIC0gMSkgZG9cbiAgICAgIHNldCBhciBpIHhcbiAgICBkb25lXG4gIGVuZFxuXG5cbigqKiBXZWFrIGhhc2ggdGFibGVzICopXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBkYXRhXG4gIHR5cGUgdFxuICB2YWwgY3JlYXRlIDogaW50IC0+IHRcbiAgdmFsIGNsZWFyIDogdCAtPiB1bml0XG4gIHZhbCBtZXJnZSA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBhZGQgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBkYXRhIC0+IHVuaXRcbiAgdmFsIGZpbmQgOiB0IC0+IGRhdGEgLT4gZGF0YVxuICB2YWwgZmluZF9vcHQgOiB0IC0+IGRhdGEgLT4gZGF0YSBvcHRpb25cbiAgdmFsIGZpbmRfYWxsIDogdCAtPiBkYXRhIC0+IGRhdGEgbGlzdFxuICB2YWwgbWVtIDogdCAtPiBkYXRhIC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZGF0YSAtPiB1bml0KSAtPiB0IC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoZGF0YSAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgY291bnQgOiB0IC0+IGludFxuICB2YWwgc3RhdHMgOiB0IC0+IGludCAqIGludCAqIGludCAqIGludCAqIGludCAqIGludFxuZW5kXG5cbm1vZHVsZSBNYWtlIChIIDogSGFzaHRibC5IYXNoZWRUeXBlKSA6IChTIHdpdGggdHlwZSBkYXRhID0gSC50KSA9IHN0cnVjdFxuXG4gIHR5cGUgJ2Egd2Vha190ID0gJ2EgdFxuICBsZXQgd2Vha19jcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGVtcHR5YnVja2V0ID0gd2Vha19jcmVhdGUgMFxuXG4gIHR5cGUgZGF0YSA9IEgudFxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIHRhYmxlIDogZGF0YSB3ZWFrX3QgYXJyYXk7XG4gICAgbXV0YWJsZSBoYXNoZXMgOiBpbnQgYXJyYXkgYXJyYXk7XG4gICAgbXV0YWJsZSBsaW1pdCA6IGludDsgICAgICAgICAgICAgICAoKiBidWNrZXQgc2l6ZSBsaW1pdCAqKVxuICAgIG11dGFibGUgb3ZlcnNpemUgOiBpbnQ7ICAgICAgICAgICAgKCogbnVtYmVyIG9mIG92ZXJzaXplIGJ1Y2tldHMgKilcbiAgICBtdXRhYmxlIHJvdmVyIDogaW50OyAgICAgICAgICAgICAgICgqIGZvciBpbnRlcm5hbCBib29ra2VlcGluZyAqKVxuICB9XG5cbiAgbGV0IGdldF9pbmRleCB0IGggPSAoaCBsYW5kIG1heF9pbnQpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cbiAgbGV0IGxpbWl0ID0gN1xuICBsZXQgb3Zlcl9saW1pdCA9IDJcblxuICBsZXQgY3JlYXRlIHN6ID1cbiAgICBsZXQgc3ogPSBpZiBzeiA8IDcgdGhlbiA3IGVsc2Ugc3ogaW5cbiAgICBsZXQgc3ogPSBpZiBzeiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBzeiBpblxuICAgIHtcbiAgICAgIHRhYmxlID0gQXJyYXkubWFrZSBzeiBlbXB0eWJ1Y2tldDtcbiAgICAgIGhhc2hlcyA9IEFycmF5Lm1ha2Ugc3ogW3wgfF07XG4gICAgICBsaW1pdCA9IGxpbWl0O1xuICAgICAgb3ZlcnNpemUgPSAwO1xuICAgICAgcm92ZXIgPSAwO1xuICAgIH1cblxuICBsZXQgY2xlYXIgdCA9XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgICAgdC50YWJsZS4oaSkgPC0gZW1wdHlidWNrZXQ7XG4gICAgICB0Lmhhc2hlcy4oaSkgPC0gW3wgfF07XG4gICAgZG9uZTtcbiAgICB0LmxpbWl0IDwtIGxpbWl0O1xuICAgIHQub3ZlcnNpemUgPC0gMFxuXG5cbiAgbGV0IGZvbGQgZiB0IGluaXQgPVxuICAgIGxldCByZWMgZm9sZF9idWNrZXQgaSBiIGFjY3UgPVxuICAgICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIChmIHYgYWNjdSlcbiAgICAgIHwgTm9uZSAtPiBmb2xkX2J1Y2tldCAoaSsxKSBiIGFjY3VcbiAgICBpblxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGZvbGRfYnVja2V0IDApIHQudGFibGUgaW5pdFxuXG5cbiAgbGV0IGl0ZXIgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggZ2V0IGIgaSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiBmIHY7IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICAgIHwgTm9uZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBiXG4gICAgaW5cbiAgICBBcnJheS5pdGVyIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgaXRlcl93ZWFrIGYgdCA9XG4gICAgbGV0IHJlYyBpdGVyX2J1Y2tldCBpIGogYiA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gKCkgZWxzZVxuICAgICAgbWF0Y2ggY2hlY2sgYiBpIHdpdGhcbiAgICAgIHwgdHJ1ZSAtPiBmIGIgdC5oYXNoZXMuKGopIGk7IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgICAgfCBmYWxzZSAtPiBpdGVyX2J1Y2tldCAoaSsxKSBqIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXJpIChpdGVyX2J1Y2tldCAwKSB0LnRhYmxlXG5cblxuICBsZXQgcmVjIGNvdW50X2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgaWYgaSA+PSBsZW5ndGggYiB0aGVuIGFjY3UgZWxzZVxuICAgIGNvdW50X2J1Y2tldCAoaSsxKSBiIChhY2N1ICsgKGlmIGNoZWNrIGIgaSB0aGVuIDEgZWxzZSAwKSlcblxuXG4gIGxldCBjb3VudCB0ID1cbiAgICBBcnJheS5mb2xkX3JpZ2h0IChjb3VudF9idWNrZXQgMCkgdC50YWJsZSAwXG5cblxuICBsZXQgbmV4dF9zeiBuID0gSW50Lm1pbiAoMyAqIG4gLyAyICsgMykgU3lzLm1heF9hcnJheV9sZW5ndGhcbiAgbGV0IHByZXZfc3ogbiA9ICgobiAtIDMpICogMiArIDIpIC8gM1xuXG4gIGxldCB0ZXN0X3Nocmlua19idWNrZXQgdCA9XG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKHQucm92ZXIpIGluXG4gICAgbGV0IGhidWNrZXQgPSB0Lmhhc2hlcy4odC5yb3ZlcikgaW5cbiAgICBsZXQgbGVuID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCBwcmV2X2xlbiA9IHByZXZfc3ogbGVuIGluXG4gICAgbGV0IGxpdmUgPSBjb3VudF9idWNrZXQgMCBidWNrZXQgMCBpblxuICAgIGlmIGxpdmUgPD0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IHJlYyBsb29wIGkgaiA9XG4gICAgICAgIGlmIGogPj0gcHJldl9sZW4gdGhlbiBiZWdpblxuICAgICAgICAgIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gbG9vcCAoaSArIDEpIGpcbiAgICAgICAgICBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBqIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGJsaXQgYnVja2V0IGogYnVja2V0IGkgMTtcbiAgICAgICAgICAgIGhidWNrZXQuKGkpIDwtIGhidWNrZXQuKGopO1xuICAgICAgICAgICAgbG9vcCAoaSArIDEpIChqIC0gMSk7XG4gICAgICAgICAgZW5kIGVsc2UgbG9vcCBpIChqIC0gMSk7XG4gICAgICAgIGVuZDtcbiAgICAgIGluXG4gICAgICBsb29wIDAgKGxlbmd0aCBidWNrZXQgLSAxKTtcbiAgICAgIGlmIHByZXZfbGVuID0gMCB0aGVuIGJlZ2luXG4gICAgICAgIHQudGFibGUuKHQucm92ZXIpIDwtIGVtcHR5YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gW3wgfF07XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgbmV3YnVja2V0ID0gd2Vha19jcmVhdGUgcHJldl9sZW4gaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBwcmV2X2xlbjtcbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4odC5yb3ZlcikgPC0gQXJyYXkuc3ViIGhidWNrZXQgMCBwcmV2X2xlblxuICAgICAgZW5kO1xuICAgICAgaWYgbGVuID4gdC5saW1pdCAmJiBwcmV2X2xlbiA8PSB0LmxpbWl0IHRoZW4gdC5vdmVyc2l6ZSA8LSB0Lm92ZXJzaXplIC0gMTtcbiAgICBlbmQ7XG4gICAgdC5yb3ZlciA8LSAodC5yb3ZlciArIDEpIG1vZCAoQXJyYXkubGVuZ3RoIHQudGFibGUpXG5cblxuICBsZXQgcmVjIHJlc2l6ZSB0ID1cbiAgICBsZXQgb2xkbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbmV3bGVuID0gbmV4dF9zeiBvbGRsZW4gaW5cbiAgICBpZiBuZXdsZW4gPiBvbGRsZW4gdGhlbiBiZWdpblxuICAgICAgbGV0IG5ld3QgPSBjcmVhdGUgbmV3bGVuIGluXG4gICAgICBsZXQgYWRkX3dlYWsgb2Igb2ggb2kgPVxuICAgICAgICBsZXQgc2V0dGVyIG5iIG5pIF8gPSBibGl0IG9iIG9pIG5iIG5pIDEgaW5cbiAgICAgICAgbGV0IGggPSBvaC4ob2kpIGluXG4gICAgICAgIGFkZF9hdXggbmV3dCBzZXR0ZXIgTm9uZSBoIChnZXRfaW5kZXggbmV3dCBoKTtcbiAgICAgIGluXG4gICAgICBpdGVyX3dlYWsgYWRkX3dlYWsgdDtcbiAgICAgIHQudGFibGUgPC0gbmV3dC50YWJsZTtcbiAgICAgIHQuaGFzaGVzIDwtIG5ld3QuaGFzaGVzO1xuICAgICAgdC5saW1pdCA8LSBuZXd0LmxpbWl0O1xuICAgICAgdC5vdmVyc2l6ZSA8LSBuZXd0Lm92ZXJzaXplO1xuICAgICAgdC5yb3ZlciA8LSB0LnJvdmVyIG1vZCBBcnJheS5sZW5ndGggbmV3dC50YWJsZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgdC5saW1pdCA8LSBtYXhfaW50OyAgICAgICAgICAgICAoKiBtYXhpbXVtIHNpemUgYWxyZWFkeSByZWFjaGVkICopXG4gICAgICB0Lm92ZXJzaXplIDwtIDA7XG4gICAgZW5kXG5cbiAgYW5kIGFkZF9hdXggdCBzZXR0ZXIgZCBoIGluZGV4ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZXdzeiA9XG4gICAgICAgICAgSW50Lm1pbiAoMyAqIHN6IC8gMiArIDMpIChTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzKVxuICAgICAgICBpblxuICAgICAgICBpZiBuZXdzeiA8PSBzeiB0aGVuIGZhaWx3aXRoIFwiV2Vhay5NYWtlOiBoYXNoIGJ1Y2tldCBjYW5ub3QgZ3JvdyBtb3JlXCI7XG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBuZXdzeiBpblxuICAgICAgICBsZXQgbmV3aGFzaGVzID0gQXJyYXkubWFrZSBuZXdzeiAwIGluXG4gICAgICAgIGJsaXQgYnVja2V0IDAgbmV3YnVja2V0IDAgc3o7XG4gICAgICAgIEFycmF5LmJsaXQgaGFzaGVzIDAgbmV3aGFzaGVzIDAgc3o7XG4gICAgICAgIHNldHRlciBuZXdidWNrZXQgc3ogZDtcbiAgICAgICAgbmV3aGFzaGVzLihzeikgPC0gaDtcbiAgICAgICAgdC50YWJsZS4oaW5kZXgpIDwtIG5ld2J1Y2tldDtcbiAgICAgICAgdC5oYXNoZXMuKGluZGV4KSA8LSBuZXdoYXNoZXM7XG4gICAgICAgIGlmIHN6IDw9IHQubGltaXQgJiYgbmV3c3ogPiB0LmxpbWl0IHRoZW4gYmVnaW5cbiAgICAgICAgICB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgKyAxO1xuICAgICAgICAgIGZvciBfaSA9IDAgdG8gb3Zlcl9saW1pdCBkbyB0ZXN0X3Nocmlua19idWNrZXQgdCBkb25lO1xuICAgICAgICBlbmQ7XG4gICAgICAgIGlmIHQub3ZlcnNpemUgPiBBcnJheS5sZW5ndGggdC50YWJsZSAvIG92ZXJfbGltaXQgdGhlbiByZXNpemUgdDtcbiAgICAgIGVuZCBlbHNlIGlmIGNoZWNrIGJ1Y2tldCBpIHRoZW4gYmVnaW5cbiAgICAgICAgbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXR0ZXIgYnVja2V0IGkgZDtcbiAgICAgICAgaGFzaGVzLihpKSA8LSBoO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgYWRkIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCAoZ2V0X2luZGV4IHQgaClcblxuXG4gIGxldCBmaW5kX29yIHQgZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZCBoIGluZGV4XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBtZXJnZSB0IGQgPVxuICAgIGZpbmRfb3IgdCBkIChmdW4gaCBpbmRleCAtPiBhZGRfYXV4IHQgc2V0IChTb21lIGQpIGggaW5kZXg7IGQpXG5cblxuICBsZXQgZmluZCB0IGQgPSBmaW5kX29yIHQgZCAoZnVuIF9oIF9pbmRleCAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IGZpbmRfb3B0IHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIE5vbmVcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgdiAtPiB2XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChpICsgMSlcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgZmluZF9zaGFkb3cgdCBkIGlmZm91bmQgaWZub3Rmb3VuZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA+PSBzeiB0aGVuIGlmbm90Zm91bmRcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGQgLT4gaWZmb3VuZCBidWNrZXQgaVxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IHJlbW92ZSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biB3IGkgLT4gc2V0IHcgaSBOb25lKSAoKVxuXG5cbiAgbGV0IG1lbSB0IGQgPSBmaW5kX3NoYWRvdyB0IGQgKGZ1biBfdyBfaSAtPiB0cnVlKSBmYWxzZVxuXG5cbiAgbGV0IGZpbmRfYWxsIHQgZCA9XG4gICAgbGV0IGggPSBILmhhc2ggZCBpblxuICAgIGxldCBpbmRleCA9IGdldF9pbmRleCB0IGggaW5cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4oaW5kZXgpIGluXG4gICAgbGV0IGhhc2hlcyA9IHQuaGFzaGVzLihpbmRleCkgaW5cbiAgICBsZXQgc3ogPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHJlYyBsb29wIGkgYWNjdSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYWNjdVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBsb29wIChpICsgMSkgKHYgOjogYWNjdSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKSBhY2N1XG4gICAgaW5cbiAgICBsb29wIDAgW11cblxuXG4gIGxldCBzdGF0cyB0ID1cbiAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbGVucyA9IEFycmF5Lm1hcCBsZW5ndGggdC50YWJsZSBpblxuICAgIEFycmF5LnNvcnQgY29tcGFyZSBsZW5zO1xuICAgIGxldCB0b3RsZW4gPSBBcnJheS5mb2xkX2xlZnQgKCArICkgMCBsZW5zIGluXG4gICAgKGxlbiwgY291bnQgdCwgdG90bGVuLCBsZW5zLigwKSwgbGVucy4obGVuLzIpLCBsZW5zLihsZW4tMSkpXG5cblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcHJldHR5LXByaW50aW5nIGZhY2lsaXR5IGFuZCBkZWZpbml0aW9uIG9mIGZvcm1hdHRlcnMgZm9yICdwYXJhbGxlbCdcbiAgIChpLmUuIHVucmVsYXRlZCBvciBpbmRlcGVuZGVudCkgcHJldHR5LXByaW50aW5nIG9uIG11bHRpcGxlIG91dCBjaGFubmVscy4gKilcblxuKCpcbiAgIFRoZSBwcmV0dHktcHJpbnRpbmcgZW5naW5lIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy5cbiopXG5cbmxldCBpZCB4ID0geFxuXG4oKiBBIGRldm90ZWQgdHlwZSBmb3Igc2l6ZXMgdG8gYXZvaWQgY29uZnVzaW9uXG4gICBiZXR3ZWVuIHNpemVzIGFuZCBtZXJlIGludGVnZXJzLiAqKVxubW9kdWxlIFNpemUgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gIHZhbCBvZl9pbnQgOiBpbnQgLT4gdFxuICB2YWwgemVybyA6IHRcbiAgdmFsIHVua25vd24gOiB0XG4gIHZhbCBpc19rbm93biA6IHQgLT4gYm9vbFxuZW5kICA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgdG9faW50ID0gaWRcbiAgbGV0IG9mX2ludCA9IGlkXG4gIGxldCB6ZXJvID0gMFxuICBsZXQgdW5rbm93biA9IC0xXG4gIGxldCBpc19rbm93biBuID0gbiA+PSAwXG5lbmRcblxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgYm94ZXMgZGVmaW5pdGlvbjpcbiAgIGEgcHJldHR5LXByaW50aW5nIGJveCBpcyBlaXRoZXJcbiAgIC0gaGJveDogaG9yaXpvbnRhbCBib3ggKG5vIGxpbmUgc3BsaXR0aW5nKVxuICAgLSB2Ym94OiB2ZXJ0aWNhbCBib3ggKGV2ZXJ5IGJyZWFrIGhpbnQgc3BsaXRzIHRoZSBsaW5lKVxuICAgLSBodmJveDogaG9yaXpvbnRhbC92ZXJ0aWNhbCBib3hcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIGJveCBpZiBpdCBmaXRzIG9uXG4gICAgICB0aGUgY3VycmVudCBsaW5lLCBvdGhlcndpc2UgdGhlIGJveCBiZWhhdmVzIGFzIGEgdmVydGljYWwgYm94KVxuICAgLSBob3Zib3g6IGhvcml6b250YWwgb3IgdmVydGljYWwgY29tcGFjdGluZyBib3hcbiAgICAgKHRoZSBib3ggaXMgY29tcGFjdGluZyBtYXRlcmlhbCwgcHJpbnRpbmcgYXMgbXVjaCBtYXRlcmlhbCBhcyBwb3NzaWJsZVxuICAgICAgb24gZXZlcnkgbGluZXMpXG4gICAtIGJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveCB3aXRoIGVuaGFuY2VkIGJveCBzdHJ1Y3R1cmVcbiAgICAgKHRoZSBib3ggYmVoYXZlcyBhcyBhbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGJveCBidXQgYnJlYWsgaGludHMgc3BsaXRcbiAgICAgIHRoZSBsaW5lIGlmIHNwbGl0dGluZyB3b3VsZCBtb3ZlIHRvIHRoZSBsZWZ0KVxuKilcbnR5cGUgYm94X3R5cGUgPSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCB8IFBwX2ZpdHNcblxuXG4oKiBUaGUgcHJldHR5LXByaW50aW5nIHRva2VucyBkZWZpbml0aW9uOlxuICAgYXJlIGVpdGhlciB0ZXh0IHRvIHByaW50IG9yIHByZXR0eSBwcmludGluZ1xuICAgZWxlbWVudHMgdGhhdCBkcml2ZSBpbmRlbnRhdGlvbiBhbmQgbGluZSBzcGxpdHRpbmcuICopXG50eXBlIHBwX3Rva2VuID1cbiAgfCBQcF90ZXh0IG9mIHN0cmluZyAgICAgICAgICAoKiBub3JtYWwgdGV4dCAqKVxuICB8IFBwX2JyZWFrIG9mIHsgICAgICAgICAgICAgICgqIGNvbXBsZXRlIGJyZWFrICopXG4gICAgICBmaXRzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICAgKCogbGluZSBpcyBub3Qgc3BsaXQgKilcbiAgICAgIGJyZWFrczogc3RyaW5nICogaW50ICogc3RyaW5nOyAoKiBsaW5lIGlzIHNwbGl0ICopXG4gICAgfVxuICB8IFBwX3RicmVhayBvZiBpbnQgKiBpbnQgICAgICgqIGdvIHRvIG5leHQgdGFidWxhdGlvbiAqKVxuICB8IFBwX3N0YWIgICAgICAgICAgICAgICAgICAgICgqIHNldCBhIHRhYnVsYXRpb24gKilcbiAgfCBQcF9iZWdpbiBvZiBpbnQgKiBib3hfdHlwZSAoKiBiZWdpbm5pbmcgb2YgYSBib3ggKilcbiAgfCBQcF9lbmQgICAgICAgICAgICAgICAgICAgICAoKiBlbmQgb2YgYSBib3ggKilcbiAgfCBQcF90YmVnaW4gb2YgdGJveCAgICAgICAgICAoKiBiZWdpbm5pbmcgb2YgYSB0YWJ1bGF0aW9uIGJveCAqKVxuICB8IFBwX3RlbmQgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfbmV3bGluZSAgICAgICAgICAgICAgICAgKCogdG8gZm9yY2UgYSBuZXdsaW5lIGluc2lkZSBhIGJveCAqKVxuICB8IFBwX2lmX25ld2xpbmUgICAgICAgICAgICAgICgqIHRvIGRvIHNvbWV0aGluZyBvbmx5IGlmIHRoaXMgdmVyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgaGFzIGJlZW4gYnJva2VuICopXG4gIHwgUHBfb3Blbl90YWcgb2Ygc3RhZyAgICAgICAgICgqIG9wZW5pbmcgYSB0YWcgbmFtZSAqKVxuICB8IFBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIG1vc3QgcmVjZW50bHkgb3BlbiB0YWcgKilcblxuYW5kIHN0YWcgPSAuLlxuXG5hbmQgdGJveCA9IFBwX3Rib3ggb2YgaW50IGxpc3QgcmVmICAoKiBUYWJ1bGF0aW9uIGJveCAqKVxuXG50eXBlIHRhZyA9IHN0cmluZ1xudHlwZSBzdGFnICs9IFN0cmluZ190YWcgb2YgdGFnXG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlOlxuICAgcHJldHR5LXByaW50aW5nIG1hdGVyaWFsIGlzIG5vdCB3cml0dGVuIGluIHRoZSBvdXRwdXQgYXMgc29vbiBhcyBlbWl0dGVkO1xuICAgaW5zdGVhZCwgdGhlIG1hdGVyaWFsIGlzIHNpbXBseSByZWNvcmRlZCBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUsXG4gICB1bnRpbCB0aGUgZW5jbG9zaW5nIGJveCBoYXMgYSBrbm93biBjb21wdXRlZCBzaXplIGFuZCBwcm9wZXIgc3BsaXR0aW5nXG4gICBkZWNpc2lvbnMgY2FuIGJlIG1hZGUuXG5cbiAgIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBjb250YWlucyBmb3JtYXR0aW5nIGVsZW1lbnRzIHRvIGJlIHByaW50ZWQuXG4gICBFYWNoIGZvcm1hdHRpbmcgZWxlbWVudCBpcyBhIHR1cGxlIChzaXplLCB0b2tlbiwgbGVuZ3RoKSwgd2hlcmVcbiAgIC0gbGVuZ3RoIGlzIHRoZSBkZWNsYXJlZCBsZW5ndGggb2YgdGhlIHRva2VuLFxuICAgLSBzaXplIGlzIGVmZmVjdGl2ZSBzaXplIG9mIHRoZSB0b2tlbiB3aGVuIGl0IGlzIHByaW50ZWRcbiAgICAgKHNpemUgaXMgc2V0IHdoZW4gdGhlIHNpemUgb2YgdGhlIGJveCBpcyBrbm93biwgc28gdGhhdCBzaXplIG9mIGJyZWFrXG4gICAgICBoaW50cyBhcmUgZGVmaW5pdGl2ZSkuICopXG50eXBlIHBwX3F1ZXVlX2VsZW0gPSB7XG4gIG11dGFibGUgc2l6ZSA6IFNpemUudDtcbiAgdG9rZW4gOiBwcF90b2tlbjtcbiAgbGVuZ3RoIDogaW50O1xufVxuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9xdWV1ZSA9IHBwX3F1ZXVlX2VsZW0gUXVldWUudFxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjazogc2Nhbm5pbmcgZWxlbWVudCBkZWZpbml0aW9uLiAqKVxudHlwZSBwcF9zY2FuX2VsZW0gPSB7XG4gIGxlZnRfdG90YWwgOiBpbnQ7ICgqIFZhbHVlIG9mIHBwX2xlZnRfdG90YWwgd2hlbiB0aGUgZWxlbWVudCB3YXMgZW5xdWV1ZWQuICopXG4gIHF1ZXVlX2VsZW0gOiBwcF9xdWV1ZV9lbGVtXG59XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOlxuICAgdGhlIGZvcm1hdHRpbmcgc3RhY2sgY29udGFpbnMgdGhlIGRlc2NyaXB0aW9uIG9mIGFsbCB0aGUgY3VycmVudGx5IGFjdGl2ZVxuICAgYm94ZXM7IHRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrIGlzIHVzZWQgdG8gc3BsaXQgdGhlIGxpbmVzXG4gICB3aGlsZSBwcmludGluZyB0b2tlbnMuICopXG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrOiBmb3JtYXR0aW5nIHN0YWNrIGVsZW1lbnQgZGVmaW5pdGlvbi5cbiAgIEVhY2ggc3RhY2sgZWxlbWVudCBkZXNjcmliZXMgYSBwcmV0dHktcHJpbnRpbmcgYm94LiAqKVxudHlwZSBwcF9mb3JtYXRfZWxlbSA9IHsgYm94X3R5cGUgOiBib3hfdHlwZTsgd2lkdGggOiBpbnQgfVxuXG4oKiBUaGUgZm9ybWF0dGVyIGRlZmluaXRpb24uXG4gICBFYWNoIGZvcm1hdHRlciB2YWx1ZSBpcyBhIHByZXR0eS1wcmludGVyIGluc3RhbmNlIHdpdGggYWxsIGl0c1xuICAgbWFjaGluZXJ5LiAqKVxudHlwZSBmb3JtYXR0ZXIgPSB7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcbiAgcHBfc2Nhbl9zdGFjayA6IHBwX3NjYW5fZWxlbSBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgZm9ybWF0dGluZyBzdGFjay4gKilcbiAgcHBfZm9ybWF0X3N0YWNrIDogcHBfZm9ybWF0X2VsZW0gU3RhY2sudDtcbiAgcHBfdGJveF9zdGFjayA6IHRib3ggU3RhY2sudDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNlbWFudGljcyB0YWcgc3RhY2suICopXG4gIHBwX3RhZ19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgcHBfbWFya19zdGFjayA6IHN0YWcgU3RhY2sudDtcbiAgKCogVmFsdWUgb2YgcmlnaHQgbWFyZ2luLiAqKVxuICBtdXRhYmxlIHBwX21hcmdpbiA6IGludDtcbiAgKCogTWluaW1hbCBzcGFjZSBsZWZ0IGJlZm9yZSBtYXJnaW4sIHdoZW4gb3BlbmluZyBhIGJveC4gKilcbiAgbXV0YWJsZSBwcF9taW5fc3BhY2VfbGVmdCA6IGludDtcbiAgKCogTWF4aW11bSB2YWx1ZSBvZiBpbmRlbnRhdGlvbjpcbiAgICAgbm8gYm94IGNhbiBiZSBvcGVuZWQgZnVydGhlci4gKilcbiAgbXV0YWJsZSBwcF9tYXhfaW5kZW50IDogaW50O1xuICAoKiBTcGFjZSByZW1haW5pbmcgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbXV0YWJsZSBwcF9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBDdXJyZW50IHZhbHVlIG9mIGluZGVudGF0aW9uLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJlbnRfaW5kZW50IDogaW50O1xuICAoKiBUcnVlIHdoZW4gdGhlIGxpbmUgaGFzIGJlZW4gYnJva2VuIGJ5IHRoZSBwcmV0dHktcHJpbnRlci4gKilcbiAgbXV0YWJsZSBwcF9pc19uZXdfbGluZSA6IGJvb2w7XG4gICgqIFRvdGFsIHdpZHRoIG9mIHRva2VucyBhbHJlYWR5IHByaW50ZWQuICopXG4gIG11dGFibGUgcHBfbGVmdF90b3RhbCA6IGludDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGV2ZXIgcHV0IGluIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHBwX3JpZ2h0X3RvdGFsIDogaW50O1xuICAoKiBDdXJyZW50IG51bWJlciBvZiBvcGVuIGJveGVzLiAqKVxuICBtdXRhYmxlIHBwX2N1cnJfZGVwdGggOiBpbnQ7XG4gICgqIE1heGltdW0gbnVtYmVyIG9mIGJveGVzIHdoaWNoIGNhbiBiZSBzaW11bHRhbmVvdXNseSBvcGVuLiAqKVxuICBtdXRhYmxlIHBwX21heF9ib3hlcyA6IGludDtcbiAgKCogRWxsaXBzaXMgc3RyaW5nLiAqKVxuICBtdXRhYmxlIHBwX2VsbGlwc2lzIDogc3RyaW5nO1xuICAoKiBPdXRwdXQgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gICgqIEZsdXNoaW5nIGZ1bmN0aW9uLiAqKVxuICBtdXRhYmxlIHBwX291dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfbmV3bGluZSA6IHVuaXQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGJyZWFrIGhpbnRzIHNwYWNlcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gICgqIE91dHB1dCBvZiBpbmRlbnRhdGlvbiBvZiBuZXcgbGluZXMuICopXG4gIG11dGFibGUgcHBfb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xuICAoKiBBcmUgdGFncyBwcmludGVkID8gKilcbiAgbXV0YWJsZSBwcF9wcmludF90YWdzIDogYm9vbDtcbiAgKCogQXJlIHRhZ3MgbWFya2VkID8gKilcbiAgbXV0YWJsZSBwcF9tYXJrX3RhZ3MgOiBib29sO1xuICAoKiBGaW5kIG9wZW5pbmcgYW5kIGNsb3NpbmcgbWFya2VycyBvZiB0YWdzLiAqKVxuICBtdXRhYmxlIHBwX21hcmtfb3Blbl90YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgbXV0YWJsZSBwcF9tYXJrX2Nsb3NlX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX3ByaW50X29wZW5fdGFnIDogc3RhZyAtPiB1bml0O1xuICBtdXRhYmxlIHBwX3ByaW50X2Nsb3NlX3RhZyA6IHN0YWcgLT4gdW5pdDtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxuICBwcF9xdWV1ZSA6IHBwX3F1ZXVlO1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgc3BlY2lmaWMgdGFnIGhhbmRsaW5nIGZ1bmN0aW9ucy4gKilcbnR5cGUgZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zID0ge1xuICBtYXJrX29wZW5fc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtYXJrX2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl9zdGFnIDogc3RhZyAtPiB1bml0O1xuICBwcmludF9jbG9zZV9zdGFnIDogc3RhZyAtPiB1bml0O1xufVxuXG5cbigqIFRoZSBmb3JtYXR0ZXIgZnVuY3Rpb25zIHRvIG91dHB1dCBtYXRlcmlhbC4gKilcbnR5cGUgZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPSB7XG4gIG91dF9zdHJpbmcgOiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0O1xuICBvdXRfZmx1c2ggOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICBvdXRfc3BhY2VzIDogaW50IC0+IHVuaXQ7XG4gIG91dF9pbmRlbnQgOiBpbnQgLT4gdW5pdDtcbn1cblxuXG4oKlxuXG4gIEF1eGlsaWFyaWVzIGFuZCBiYXNpYyBmdW5jdGlvbnMuXG5cbiopXG5cbigqIEVudGVyIGEgdG9rZW4gaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlLiAqKVxubGV0IHBwX2VucXVldWUgc3RhdGUgdG9rZW4gPVxuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBzdGF0ZS5wcF9yaWdodF90b3RhbCArIHRva2VuLmxlbmd0aDtcbiAgUXVldWUuYWRkIHRva2VuIHN0YXRlLnBwX3F1ZXVlXG5cblxubGV0IHBwX2NsZWFyX3F1ZXVlIHN0YXRlID1cbiAgc3RhdGUucHBfbGVmdF90b3RhbCA8LSAxOyBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSAxO1xuICBRdWV1ZS5jbGVhciBzdGF0ZS5wcF9xdWV1ZVxuXG5cbigqIFBwX2luZmluaXR5OiBsYXJnZSB2YWx1ZSBmb3IgZGVmYXVsdCB0b2tlbnMgc2l6ZS5cblxuICAgUHBfaW5maW5pdHkgaXMgZG9jdW1lbnRlZCBhcyBiZWluZyBncmVhdGVyIHRoYW4gMWUxMDsgdG8gYXZvaWRcbiAgIGNvbmZ1c2lvbiBhYm91dCB0aGUgd29yZCAnZ3JlYXRlcicsIHdlIGNob29zZSBwcF9pbmZpbml0eSBncmVhdGVyXG4gICB0aGFuIDFlMTAgKyAxOyBmb3IgY29ycmVjdCBoYW5kbGluZyBvZiB0ZXN0cyBpbiB0aGUgYWxnb3JpdGhtLFxuICAgcHBfaW5maW5pdHkgbXVzdCBiZSBldmVuIG9uZSBtb3JlIHRoYW4gMWUxMCArIDE7IGxldCdzIHN0YW5kIG9uIHRoZVxuICAgc2FmZSBzaWRlIGJ5IGNob29zaW5nIDEuZTEwKzEwLlxuXG4gICBQcF9pbmZpbml0eSBjb3VsZCBwcm9iYWJseSBiZSAxMDczNzQxODIzIHRoYXQgaXMgMl4zMCAtIDEsIHRoYXQgaXNcbiAgIHRoZSBtaW5pbWFsIHVwcGVyIGJvdW5kIGZvciBpbnRlZ2Vyczsgbm93IHRoYXQgbWF4X2ludCBpcyBkZWZpbmVkLFxuICAgdGhpcyBsaW1pdCBjb3VsZCBhbHNvIGJlIGRlZmluZWQgYXMgbWF4X2ludCAtIDEuXG5cbiAgIEhvd2V2ZXIsIGJlZm9yZSBzZXR0aW5nIHBwX2luZmluaXR5IHRvIHNvbWV0aGluZyBhcm91bmQgbWF4X2ludCwgd2VcbiAgIG11c3QgY2FyZWZ1bGx5IGRvdWJsZS1jaGVjayBhbGwgdGhlIGludGVnZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4gICB0aGF0IGludm9sdmUgcHBfaW5maW5pdHksIHNpbmNlIGFueSBvdmVyZmxvdyB3b3VsZCB3cmVjayBoYXZvYyB0aGVcbiAgIHByZXR0eS1wcmludGluZyBhbGdvcml0aG0ncyBpbnZhcmlhbnRzLiBHaXZlbiB0aGF0IHRoaXMgYXJpdGhtZXRpY1xuICAgY29ycmVjdG5lc3MgY2hlY2sgaXMgZGlmZmljdWx0IGFuZCBlcnJvciBwcm9uZSBhbmQgZ2l2ZW4gdGhhdCAxZTEwXG4gICArIDEgaXMgaW4gcHJhY3RpY2UgbGFyZ2UgZW5vdWdoLCB0aGVyZSBpcyBubyBuZWVkIHRvIGF0dGVtcHQgdG8gc2V0XG4gICBwcF9pbmZpbml0eSB0byB0aGUgdGhlb3JldGljYWxseSBtYXhpbXVtIGxpbWl0LiBJdCBpcyBub3Qgd29ydGggdGhlXG4gICBidXJkZW4gISAqKVxubGV0IHBwX2luZmluaXR5ID0gMTAwMDAwMDAxMFxuXG4oKiBPdXRwdXQgZnVuY3Rpb25zIGZvciB0aGUgZm9ybWF0dGVyLiAqKVxubGV0IHBwX291dHB1dF9zdHJpbmcgc3RhdGUgcyA9IHN0YXRlLnBwX291dF9zdHJpbmcgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5hbmQgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZSAoKVxuYW5kIHBwX291dHB1dF9zcGFjZXMgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9zcGFjZXMgblxuYW5kIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgbiA9IHN0YXRlLnBwX291dF9pbmRlbnQgblxuXG4oKiBGb3JtYXQgYSB0ZXh0dWFsIHRva2VuICopXG5sZXQgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSB0ZXh0ID1cbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IC0gc2l6ZTtcbiAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSB0ZXh0O1xuICBzdGF0ZS5wcF9pc19uZXdfbGluZSA8LSBmYWxzZVxuXG4oKiBGb3JtYXQgYSBzdHJpbmcgYnkgaXRzIGxlbmd0aCwgaWYgbm90IGVtcHR5ICopXG5sZXQgZm9ybWF0X3N0cmluZyBzdGF0ZSBzID1cbiAgaWYgcyA8PiBcIlwiIHRoZW4gZm9ybWF0X3BwX3RleHQgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG4oKiBUbyBmb3JtYXQgYSBicmVhaywgaW5kZW50aW5nIGEgbmV3IGxpbmUuICopXG5sZXQgYnJlYWtfbmV3X2xpbmUgc3RhdGUgKGJlZm9yZSwgb2Zmc2V0LCBhZnRlcikgd2lkdGggPVxuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGJlZm9yZTtcbiAgcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIHRydWU7XG4gIGxldCBpbmRlbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSB3aWR0aCArIG9mZnNldCBpblxuICAoKiBEb24ndCBpbmRlbnQgbW9yZSB0aGFuIHBwX21heF9pbmRlbnQuICopXG4gIGxldCByZWFsX2luZGVudCA9IEludC5taW4gc3RhdGUucHBfbWF4X2luZGVudCBpbmRlbnQgaW5cbiAgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgPC0gcmVhbF9pbmRlbnQ7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIHBwX291dHB1dF9pbmRlbnQgc3RhdGUgc3RhdGUucHBfY3VycmVudF9pbmRlbnQ7XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYWZ0ZXJcblxuXG4oKiBUbyBmb3JjZSBhIGxpbmUgYnJlYWsgaW5zaWRlIGEgYm94OiBubyBvZmZzZXQgaXMgYWRkZWQuICopXG5sZXQgYnJlYWtfbGluZSBzdGF0ZSB3aWR0aCA9IGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCAwLCBcIlwiKSB3aWR0aFxuXG4oKiBUbyBmb3JtYXQgYSBicmVhayB0aGF0IGZpdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCBicmVha19zYW1lX2xpbmUgc3RhdGUgKGJlZm9yZSwgd2lkdGgsIGFmdGVyKSA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSB3aWR0aDtcbiAgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSB3aWR0aDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGluZGVudCBubyBtb3JlIHRoYW4gcHBfbWF4X2luZGVudCwgaWYgb25lIHRyaWVzIHRvIG9wZW4gYSBib3hcbiAgIGJleW9uZCBwcF9tYXhfaW5kZW50LCB0aGVuIHRoZSBib3ggaXMgcmVqZWN0ZWQgb24gdGhlIGxlZnRcbiAgIGJ5IHNpbXVsYXRpbmcgYSBicmVhay4gKilcbmxldCBwcF9mb3JjZV9icmVha19saW5lIHN0YXRlID1cbiAgbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGVcbiAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICBpZiB3aWR0aCA+IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlblxuICAgICAgbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9maXRzIHwgUHBfaGJveCAtPiAoKVxuICAgICAgfCBQcF92Ym94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggLT4gYnJlYWtfbGluZSBzdGF0ZSB3aWR0aFxuXG5cbigqIFRvIHNraXAgYSB0b2tlbiwgaWYgdGhlIHByZXZpb3VzIGxpbmUgaGFzIGJlZW4gYnJva2VuLiAqKVxubGV0IHBwX3NraXBfdG9rZW4gc3RhdGUgPVxuICBtYXRjaCBRdWV1ZS50YWtlX29wdCBzdGF0ZS5wcF9xdWV1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBwcmludF9pZl9uZXdsaW5lIG11c3QgaGF2ZSBiZWVuIHRoZSBsYXN0IHByaW50aW5nIGNvbW1hbmQgKilcbiAgfCBTb21lIHsgc2l6ZTsgbGVuZ3RoOyBfIH0gLT5cbiAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIHN0YXRlLnBwX2xlZnRfdG90YWwgLSBsZW5ndGg7XG4gICAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9zcGFjZV9sZWZ0ICsgU2l6ZS50b19pbnQgc2l6ZVxuXG5cbigqXG5cbiAgVGhlIG1haW4gcHJldHR5IHByaW50aW5nIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRm9ybWF0dGluZyBhIHRva2VuIHdpdGggYSBnaXZlbiBzaXplLiAqKVxubGV0IGZvcm1hdF9wcF90b2tlbiBzdGF0ZSBzaXplID0gZnVuY3Rpb25cblxuICB8IFBwX3RleHQgcyAtPlxuICAgIGZvcm1hdF9wcF90ZXh0IHN0YXRlIHNpemUgc1xuXG4gIHwgUHBfYmVnaW4gKG9mZiwgdHkpIC0+XG4gICAgbGV0IGluc2VydGlvbl9wb2ludCA9IHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQgaW5cbiAgICBpZiBpbnNlcnRpb25fcG9pbnQgPiBzdGF0ZS5wcF9tYXhfaW5kZW50IHRoZW5cbiAgICAgICgqIGNhbiBub3Qgb3BlbiBhIGJveCByaWdodCB0aGVyZS4gKilcbiAgICAgIGJlZ2luIHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgZW5kO1xuICAgIGxldCB3aWR0aCA9IHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBvZmYgaW5cbiAgICBsZXQgYm94X3R5cGUgPVxuICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgfCBQcF92Ym94IC0+IFBwX3Zib3hcbiAgICAgIHwgUHBfaGJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0cyAtPlxuICAgICAgICBpZiBzaXplID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIHR5IGVsc2UgUHBfZml0cyBpblxuICAgIFN0YWNrLnB1c2ggeyBib3hfdHlwZTsgd2lkdGggfSBzdGF0ZS5wcF9mb3JtYXRfc3RhY2tcblxuICB8IFBwX2VuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfdGJlZ2luIChQcF90Ym94IF8gYXMgdGJveCkgLT5cbiAgICBTdGFjay5wdXNoIHRib3ggc3RhdGUucHBfdGJveF9zdGFja1xuXG4gIHwgUHBfdGVuZCAtPlxuICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB8PiBpZ25vcmVcblxuICB8IFBwX3N0YWIgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3Rib3hfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIHRhYnVsYXRpb24gYm94LiAqKVxuICAgIHwgU29tZSAoUHBfdGJveCB0YWJzKSAtPlxuICAgICAgbGV0IHJlYyBhZGRfdGFiIG4gPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IFtuXVxuICAgICAgICB8IHggOjogbCBhcyBscyAtPiBpZiBuIDwgeCB0aGVuIG4gOjogbHMgZWxzZSB4IDo6IGFkZF90YWIgbiBsIGluXG4gICAgICB0YWJzIDo9IGFkZF90YWIgKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX3NwYWNlX2xlZnQpICF0YWJzXG4gICAgZW5kXG5cbiAgfCBQcF90YnJlYWsgKG4sIG9mZikgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgdGFiID1cbiAgICAgICAgbWF0Y2ggIXRhYnMgd2l0aFxuICAgICAgICB8IFtdIC0+IGluc2VydGlvbl9wb2ludFxuICAgICAgICB8IGZpcnN0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgcmVjIGZpbmQgPSBmdW5jdGlvblxuICAgICAgICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgICAgICAgaWYgaGVhZCA+PSBpbnNlcnRpb25fcG9pbnQgdGhlbiBoZWFkIGVsc2UgZmluZCB0YWlsXG4gICAgICAgICAgICB8IFtdIC0+IGZpcnN0IGluXG4gICAgICAgICAgZmluZCAhdGFicyBpblxuICAgICAgbGV0IG9mZnNldCA9IHRhYiAtIGluc2VydGlvbl9wb2ludCBpblxuICAgICAgaWYgb2Zmc2V0ID49IDBcbiAgICAgIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIChcIlwiLCBvZmZzZXQgKyBuLCBcIlwiKVxuICAgICAgZWxzZSBicmVha19uZXdfbGluZSBzdGF0ZSAoXCJcIiwgdGFiICsgb2ZmLCBcIlwiKSBzdGF0ZS5wcF9tYXJnaW5cbiAgICBlbmRcblxuICB8IFBwX25ld2xpbmUgLT5cbiAgICBiZWdpbiBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+IHBwX291dHB1dF9uZXdsaW5lIHN0YXRlICgqIE5vIG9wZW4gYm94LiAqKVxuICAgIHwgU29tZSB7IHdpZHRoOyBffSAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG4gICAgZW5kXG5cbiAgfCBQcF9pZl9uZXdsaW5lIC0+XG4gICAgaWYgc3RhdGUucHBfY3VycmVudF9pbmRlbnQgIT0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgIHRoZW4gcHBfc2tpcF90b2tlbiBzdGF0ZVxuXG4gIHwgUHBfYnJlYWsgeyBmaXRzOyBicmVha3MgfSAtPlxuICAgIGxldCBiZWZvcmUsIG9mZiwgXyA9IGJyZWFrcyBpblxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgYm94X3R5cGU7IHdpZHRoIH0gLT5cbiAgICAgIGJlZ2luIG1hdGNoIGJveF90eXBlIHdpdGhcbiAgICAgIHwgUHBfaG92Ym94IC0+XG4gICAgICAgIGlmIHNpemUgKyBTdHJpbmcubGVuZ3RoIGJlZm9yZSA+IHN0YXRlLnBwX3NwYWNlX2xlZnRcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9ib3ggLT5cbiAgICAgICAgKCogSGF2ZSB0aGUgbGluZSBqdXN0IGJlZW4gYnJva2VuIGhlcmUgPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9pc19uZXdfbGluZSB0aGVuIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzIGVsc2VcbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoIGVsc2VcbiAgICAgICAgKCogYnJlYWsgdGhlIGxpbmUgaGVyZSBsZWFkcyB0byBuZXcgaW5kZW50YXRpb24gPyAqKVxuICAgICAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA+IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2ZmXG4gICAgICAgIHRoZW4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICAgIGVsc2UgYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfaHZib3ggLT4gYnJlYWtfbmV3X2xpbmUgc3RhdGUgYnJlYWtzIHdpZHRoXG4gICAgICB8IFBwX2ZpdHMgLT4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHNcbiAgICAgIHwgUHBfdmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfaGJveCAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgIHwgUHBfb3Blbl90YWcgdGFnX25hbWUgLT5cbiAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfb3Blbl90YWcgdGFnX25hbWUgaW5cbiAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXI7XG4gICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfbWFya19zdGFja1xuXG4gICB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICBiZWdpbiBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX21hcmtfc3RhY2sgd2l0aFxuICAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgIGxldCBtYXJrZXIgPSBzdGF0ZS5wcF9tYXJrX2Nsb3NlX3RhZyB0YWdfbmFtZSBpblxuICAgICAgIHBwX291dHB1dF9zdHJpbmcgc3RhdGUgbWFya2VyXG4gICAgIGVuZFxuXG5cbigqIFByaW50IGlmIHRva2VuIHNpemUgaXMga25vd24gZWxzZSBwcmludGluZyBpcyBkZWxheWVkLlxuICAgUHJpbnRpbmcgaXMgZGVsYXllZCB3aGVuIHRoZSB0ZXh0IHdhaXRpbmcgaW4gdGhlIHF1ZXVlIHJlcXVpcmVzXG4gICBtb3JlIHJvb20gdG8gZm9ybWF0IHRoYW4gZXhpc3RzIG9uIHRoZSBjdXJyZW50IGxpbmUuICopXG5sZXQgcmVjIGFkdmFuY2VfbGVmdCBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnBlZWtfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIE5vIHRva2VucyB0byBwcmludCAqKVxuICB8IFNvbWUgeyBzaXplOyB0b2tlbjsgbGVuZ3RoIH0gLT5cbiAgICBsZXQgcGVuZGluZ19jb3VudCA9IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIC0gc3RhdGUucHBfbGVmdF90b3RhbCBpblxuICAgIGlmIFNpemUuaXNfa25vd24gc2l6ZSB8fCBwZW5kaW5nX2NvdW50ID49IHN0YXRlLnBwX3NwYWNlX2xlZnQgdGhlbiBiZWdpblxuICAgICAgUXVldWUudGFrZSBzdGF0ZS5wcF9xdWV1ZSB8PiBpZ25vcmU7ICgqIE5vdCBlbXB0eTogd2UgcGVlayBpbnRvIGl0ICopXG4gICAgICBsZXQgc2l6ZSA9IGlmIFNpemUuaXNfa25vd24gc2l6ZSB0aGVuIFNpemUudG9faW50IHNpemUgZWxzZSBwcF9pbmZpbml0eSBpblxuICAgICAgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgdG9rZW47XG4gICAgICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIGxlbmd0aCArIHN0YXRlLnBwX2xlZnRfdG90YWw7XG4gICAgICAoYWR2YW5jZV9sZWZ0IFtAdGFpbGNhbGxdKSBzdGF0ZVxuICAgIGVuZFxuXG5cbigqIFRvIGVucXVldWUgYSB0b2tlbiA6IHRyeSB0byBhZHZhbmNlLiAqKVxubGV0IGVucXVldWVfYWR2YW5jZSBzdGF0ZSB0b2sgPSBwcF9lbnF1ZXVlIHN0YXRlIHRvazsgYWR2YW5jZV9sZWZ0IHN0YXRlXG5cblxuKCogVG8gZW5xdWV1ZSBzdHJpbmdzLiAqKVxubGV0IGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIHNpemUgcyA9XG4gIGVucXVldWVfYWR2YW5jZSBzdGF0ZSB7IHNpemU7IHRva2VuID0gUHBfdGV4dCBzOyBsZW5ndGggPSBTaXplLnRvX2ludCBzaXplIH1cblxuXG5sZXQgZW5xdWV1ZV9zdHJpbmcgc3RhdGUgcyA9XG4gIGVucXVldWVfc3RyaW5nX2FzIHN0YXRlIChTaXplLm9mX2ludCAoU3RyaW5nLmxlbmd0aCBzKSkgc1xuXG5cbigqIFJvdXRpbmVzIGZvciBzY2FuIHN0YWNrXG4gICBkZXRlcm1pbmUgc2l6ZSBvZiBib3hlcy4gKilcblxuKCogVGhlIHNjYW5fc3RhY2sgaXMgbmV2ZXIgZW1wdHkuICopXG5sZXQgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YWNrID1cbiAgU3RhY2suY2xlYXIgc3RhY2s7XG4gIGxldCBxdWV1ZV9lbGVtID0geyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX3RleHQgXCJcIjsgbGVuZ3RoID0gMCB9IGluXG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gLTE7IHF1ZXVlX2VsZW0gfSBzdGFja1xuXG4oKiBTZXR0aW5nIHRoZSBzaXplIG9mIGJveGVzIG9uIHNjYW4gc3RhY2s6XG4gICBpZiB0eSA9IHRydWUgdGhlbiBzaXplIG9mIGJyZWFrIGlzIHNldCBlbHNlIHNpemUgb2YgYm94IGlzIHNldDtcbiAgIGluIGVhY2ggY2FzZSBwcF9zY2FuX3N0YWNrIGlzIHBvcHBlZC5cblxuICAgTm90ZTpcbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gc2NhbiBzdGFjayBpcyBleGhhdXN0aXZlLCBzaW5jZSBzY2FuX3N0YWNrIGlzIG5ldmVyXG4gICBlbXB0eS5cbiAgIFBhdHRlcm4gbWF0Y2hpbmcgb24gdG9rZW4gaW4gc2NhbiBzdGFjayBpcyBhbHNvIGV4aGF1c3RpdmUsXG4gICBzaW5jZSBzY2FuX3B1c2ggaXMgdXNlZCBvbiBicmVha3MgYW5kIG9wZW5pbmcgb2YgYm94ZXMuICopXG5sZXQgc2V0X3NpemUgc3RhdGUgdHkgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbiAgfCBTb21lIHsgbGVmdF90b3RhbDsgcXVldWVfZWxlbSB9IC0+XG4gICAgbGV0IHNpemUgPSBTaXplLnRvX2ludCBxdWV1ZV9lbGVtLnNpemUgaW5cbiAgICAoKiB0ZXN0IGlmIHNjYW4gc3RhY2sgY29udGFpbnMgYW55IGRhdGEgdGhhdCBpcyBub3Qgb2Jzb2xldGUuICopXG4gICAgaWYgbGVmdF90b3RhbCA8IHN0YXRlLnBwX2xlZnRfdG90YWwgdGhlblxuICAgICAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHN0YXRlLnBwX3NjYW5fc3RhY2tcbiAgICBlbHNlXG4gICAgICBtYXRjaCBxdWV1ZV9lbGVtLnRva2VuIHdpdGhcbiAgICAgIHwgUHBfYnJlYWsgXyB8IFBwX3RicmVhayAoXywgXykgLT5cbiAgICAgICAgaWYgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF9iZWdpbiAoXywgXykgLT5cbiAgICAgICAgaWYgbm90IHR5IHRoZW4gYmVnaW5cbiAgICAgICAgICBxdWV1ZV9lbGVtLnNpemUgPC0gU2l6ZS5vZl9pbnQgKHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgc2l6ZSk7XG4gICAgICAgICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9zY2FuX3N0YWNrIHw+IGlnbm9yZVxuICAgICAgICBlbmRcbiAgICAgIHwgUHBfdGV4dCBfIHwgUHBfc3RhYiB8IFBwX3RiZWdpbiBfIHwgUHBfdGVuZCB8IFBwX2VuZFxuICAgICAgfCBQcF9uZXdsaW5lIHwgUHBfaWZfbmV3bGluZSB8IFBwX29wZW5fdGFnIF8gfCBQcF9jbG9zZV90YWcgLT5cbiAgICAgICAgKCkgKCogc2Nhbl9wdXNoIGlzIG9ubHkgdXNlZCBmb3IgYnJlYWtzIGFuZCBib3hlcy4gKilcblxuXG4oKiBQdXNoIGEgdG9rZW4gb24gcHJldHR5LXByaW50ZXIgc2Nhbm5pbmcgc3RhY2suXG4gICBJZiBiIGlzIHRydWUgc2V0X3NpemUgaXMgY2FsbGVkLiAqKVxubGV0IHNjYW5fcHVzaCBzdGF0ZSBiIHRva2VuID1cbiAgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbjtcbiAgaWYgYiB0aGVuIHNldF9zaXplIHN0YXRlIHRydWU7XG4gIGxldCBlbGVtID0geyBsZWZ0X3RvdGFsID0gc3RhdGUucHBfcmlnaHRfdG90YWw7IHF1ZXVlX2VsZW0gPSB0b2tlbiB9IGluXG4gIFN0YWNrLnB1c2ggZWxlbSBzdGF0ZS5wcF9zY2FuX3N0YWNrXG5cblxuKCogVG8gb3BlbiBhIG5ldyBib3ggOlxuICAgdGhlIHVzZXIgbWF5IHNldCB0aGUgZGVwdGggYm91bmQgcHBfbWF4X2JveGVzXG4gICBhbnkgdGV4dCBuZXN0ZWQgZGVlcGVyIGlzIHByaW50ZWQgYXMgdGhlIGVsbGlwc2lzIHN0cmluZy4gKilcbmxldCBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IGJyX3R5ID1cbiAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoICsgMTtcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF9iZWdpbiAoaW5kZW50LCBicl90eSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSBmYWxzZSBlbGVtIGVsc2VcbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuICB0aGVuIGVucXVldWVfc3RyaW5nIHN0YXRlIHN0YXRlLnBwX2VsbGlwc2lzXG5cblxuKCogVGhlIGJveCB3aGljaCBpcyBhbHdheXMgb3Blbi4gKilcbmxldCBwcF9vcGVuX3N5c19ib3ggc3RhdGUgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgMCBQcF9ob3Zib3hcblxuKCogQ2xvc2UgYSBib3gsIHNldHRpbmcgc2l6ZXMgb2YgaXRzIHN1YiBib3hlcy4gKilcbmxldCBwcF9jbG9zZV9ib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgYmVnaW5cbiAgICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2VuZDsgbGVuZ3RoID0gMCB9O1xuICAgICAgc2V0X3NpemUgc3RhdGUgdHJ1ZTsgc2V0X3NpemUgc3RhdGUgZmFsc2VcbiAgICBlbmQ7XG4gICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMTtcbiAgZW5kXG5cblxuKCogT3BlbiBhIHRhZywgcHVzaGluZyBpdCBvbiB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX29wZW5fc3RhZyBzdGF0ZSB0YWdfbmFtZSA9XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICBiZWdpblxuICAgIFN0YWNrLnB1c2ggdGFnX25hbWUgc3RhdGUucHBfdGFnX3N0YWNrO1xuICAgIHN0YXRlLnBwX3ByaW50X29wZW5fdGFnIHRhZ19uYW1lXG4gIGVuZDtcbiAgaWYgc3RhdGUucHBfbWFya190YWdzIHRoZW5cbiAgICBsZXQgdG9rZW4gPSBQcF9vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbjsgbGVuZ3RoID0gMCB9XG5cblxuKCogQ2xvc2UgYSB0YWcsIHBvcHBpbmcgaXQgZnJvbSB0aGUgdGFnIHN0YWNrLiAqKVxubGV0IHBwX2Nsb3NlX3N0YWcgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIHBwX2VucXVldWUgc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2Nsb3NlX3RhZzsgbGVuZ3RoID0gMCB9O1xuICBpZiBzdGF0ZS5wcF9wcmludF90YWdzIHRoZW5cbiAgICBtYXRjaCBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3RhZ19zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG1vcmUgdGFnIHRvIGNsb3NlLiAqKVxuICAgIHwgU29tZSB0YWdfbmFtZSAtPlxuICAgICAgc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnIHRhZ19uYW1lXG5cbmxldCBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfcHJpbnRfdGFncyA8LSBiXG5sZXQgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfbWFya190YWdzIDwtIGJcbmxldCBwcF9nZXRfcHJpbnRfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX3ByaW50X3RhZ3NcbmxldCBwcF9nZXRfbWFya190YWdzIHN0YXRlICgpID0gc3RhdGUucHBfbWFya190YWdzXG5sZXQgcHBfc2V0X3RhZ3Mgc3RhdGUgYiA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0YXRlIGI7IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYlxuXG5cbigqIEhhbmRsaW5nIHRhZyBoYW5kbGluZyBmdW5jdGlvbnM6IGdldC9zZXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG1hcmtfb3Blbl9zdGFnID0gc3RhdGUucHBfbWFya19vcGVuX3RhZztcbiAgbWFya19jbG9zZV9zdGFnID0gc3RhdGUucHBfbWFya19jbG9zZV90YWc7XG4gIHByaW50X29wZW5fc3RhZyA9IHN0YXRlLnBwX3ByaW50X29wZW5fdGFnO1xuICBwcmludF9jbG9zZV9zdGFnID0gc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnO1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl9zdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV9zdGFnID0gcGN0O1xuICB9ID1cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBtb3Q7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIG1jdDtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gcG90O1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gcGN0XG5cblxuKCogSW5pdGlhbGl6ZSBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9yaW5pdCBzdGF0ZSA9XG4gIHBwX2NsZWFyX3F1ZXVlIHN0YXRlO1xuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfZm9ybWF0X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90Ym94X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX21hcmtfc3RhY2s7XG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIDA7XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gMDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW47XG4gIHBwX29wZW5fc3lzX2JveCBzdGF0ZVxuXG5sZXQgY2xlYXJfdGFnX3N0YWNrIHN0YXRlID1cbiAgU3RhY2suaXRlciAoZnVuIF8gLT4gcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSkgc3RhdGUucHBfdGFnX3N0YWNrXG5cblxuKCogRmx1c2hpbmcgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZmx1c2hfcXVldWUgc3RhdGUgYiA9XG4gIGNsZWFyX3RhZ19zdGFjayBzdGF0ZTtcbiAgd2hpbGUgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgZG9cbiAgICBwcF9jbG9zZV9ib3ggc3RhdGUgKClcbiAgZG9uZTtcbiAgc3RhdGUucHBfcmlnaHRfdG90YWwgPC0gcHBfaW5maW5pdHk7XG4gIGFkdmFuY2VfbGVmdCBzdGF0ZTtcbiAgaWYgYiB0aGVuIHBwX291dHB1dF9uZXdsaW5lIHN0YXRlO1xuICBwcF9yaW5pdCBzdGF0ZVxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gZm9ybWF0IHZhbHVlcyBhbmQgdXNlIGJveGVzLlxuXG4qKVxuXG4oKiBUbyBmb3JtYXQgYSBzdHJpbmcuICopXG5sZXQgcHBfcHJpbnRfYXNfc2l6ZSBzdGF0ZSBzaXplIHMgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzXG5cblxubGV0IHBwX3ByaW50X2FzIHN0YXRlIGlzaXplIHMgPVxuICBwcF9wcmludF9hc19zaXplIHN0YXRlIChTaXplLm9mX2ludCBpc2l6ZSkgc1xuXG5cbmxldCBwcF9wcmludF9zdHJpbmcgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChTdHJpbmcubGVuZ3RoIHMpIHNcblxubGV0IHBwX3ByaW50X2J5dGVzIHN0YXRlIHMgPVxuICBwcF9wcmludF9hcyBzdGF0ZSAoQnl0ZXMubGVuZ3RoIHMpIChCeXRlcy50b19zdHJpbmcgcylcblxuKCogVG8gZm9ybWF0IGFuIGludGVnZXIuICopXG5sZXQgcHBfcHJpbnRfaW50IHN0YXRlIGkgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKEludC50b19zdHJpbmcgaSlcblxuKCogVG8gZm9ybWF0IGEgZmxvYXQuICopXG5sZXQgcHBfcHJpbnRfZmxvYXQgc3RhdGUgZiA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoc3RyaW5nX29mX2Zsb2F0IGYpXG5cbigqIFRvIGZvcm1hdCBhIGJvb2xlYW4uICopXG5sZXQgcHBfcHJpbnRfYm9vbCBzdGF0ZSBiID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG4oKiBUbyBmb3JtYXQgYSBjaGFyLiAqKVxubGV0IHBwX3ByaW50X2NoYXIgc3RhdGUgYyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIDEgKFN0cmluZy5tYWtlIDEgYylcblxuXG4oKiBPcGVuaW5nIGJveGVzLiAqKVxubGV0IHBwX29wZW5faGJveCBzdGF0ZSAoKSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hib3hcbmFuZCBwcF9vcGVuX3Zib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF92Ym94XG5cbmFuZCBwcF9vcGVuX2h2Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaHZib3hcbmFuZCBwcF9vcGVuX2hvdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX2hvdmJveFxuYW5kIHBwX29wZW5fYm94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfYm94XG5cblxuKCogUHJpbnRpbmcgcXVldWVkIHRleHQuXG5cbiAgIFtwcF9wcmludF9mbHVzaF0gcHJpbnRzIGFsbCBwZW5kaW5nIGl0ZW1zIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSBhbmRcbiAgIHRoZW4gZmx1c2hlcyB0aGUgbG93IGxldmVsIG91dHB1dCBkZXZpY2Ugb2YgdGhlIGZvcm1hdHRlciB0byBhY3R1YWxseVxuICAgZGlzcGxheSBwcmludGluZyBtYXRlcmlhbC5cblxuICAgW3BwX3ByaW50X25ld2xpbmVdIGJlaGF2ZXMgYXMgW3BwX3ByaW50X2ZsdXNoXSBhZnRlciBwcmludGluZyBhbiBhZGRpdGlvbmFsXG4gICBuZXcgbGluZS4gKilcbmxldCBwcF9wcmludF9uZXdsaW5lIHN0YXRlICgpID1cbiAgcHBfZmx1c2hfcXVldWUgc3RhdGUgdHJ1ZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5hbmQgcHBfcHJpbnRfZmx1c2ggc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBmYWxzZTsgc3RhdGUucHBfb3V0X2ZsdXNoICgpXG5cblxuKCogVG8gZ2V0IGEgbmV3bGluZSB3aGVuIG9uZSBkb2VzIG5vdCB3YW50IHRvIGNsb3NlIHRoZSBjdXJyZW50IGJveC4gKilcbmxldCBwcF9mb3JjZV9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZSA9IFNpemUuemVybzsgdG9rZW4gPSBQcF9uZXdsaW5lOyBsZW5ndGggPSAwIH1cblxuXG4oKiBUbyBmb3JtYXQgc29tZXRoaW5nLCBvbmx5IGluIGNhc2UgdGhlIGxpbmUgaGFzIGp1c3QgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfcHJpbnRfaWZfbmV3bGluZSBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZVxuICAgICAgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX2lmX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIEdlbmVyYWxpemVkIGJyZWFrIGhpbnQgdGhhdCBhbGxvd3MgcHJpbnRpbmcgc3RyaW5ncyBiZWZvcmUvYWZ0ZXJcbiAgIHNhbWUtbGluZSBvZmZzZXQgKHdpZHRoKSBvciBuZXctbGluZSBvZmZzZXQgKilcbmxldCBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGUgfmZpdHMgfmJyZWFrcyA9XG4gIGxldCBiZWZvcmUsIHdpZHRoLCBhZnRlciA9IGZpdHMgaW5cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgdG9rZW4gPSBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggYmVmb3JlICsgd2lkdGggKyBTdHJpbmcubGVuZ3RoIGFmdGVyIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuKCogUHJpbnRpbmcgYnJlYWsgaGludHM6XG4gICBBIGJyZWFrIGhpbnQgaW5kaWNhdGVzIHdoZXJlIGEgYm94IG1heSBiZSBicm9rZW4uXG4gICBJZiBsaW5lIGlzIGJyb2tlbiB0aGVuIG9mZnNldCBpcyBhZGRlZCB0byB0aGUgaW5kZW50YXRpb24gb2YgdGhlIGN1cnJlbnRcbiAgIGJveCBlbHNlICh0aGUgdmFsdWUgb2YpIHdpZHRoIGJsYW5rcyBhcmUgcHJpbnRlZC4gKilcbmxldCBwcF9wcmludF9icmVhayBzdGF0ZSB3aWR0aCBvZmZzZXQgPVxuICBwcF9wcmludF9jdXN0b21fYnJlYWsgc3RhdGVcbiAgICB+Zml0czooXCJcIiwgd2lkdGgsIFwiXCIpIH5icmVha3M6KFwiXCIsIG9mZnNldCwgXCJcIilcblxuXG4oKiBQcmludCBhIHNwYWNlIDpcbiAgIGEgc3BhY2UgaXMgYSBicmVhayBoaW50IHRoYXQgcHJpbnRzIGEgc2luZ2xlIHNwYWNlIGlmIHRoZSBicmVhayBkb2VzIG5vdFxuICAgc3BsaXQgdGhlIGxpbmU7XG4gICBhIGN1dCBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgbm90aGluZyBpZiB0aGUgYnJlYWsgZG9lcyBub3Qgc3BsaXQgdGhlXG4gICBsaW5lLiAqKVxubGV0IHBwX3ByaW50X3NwYWNlIHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMSAwXG5hbmQgcHBfcHJpbnRfY3V0IHN0YXRlICgpID0gcHBfcHJpbnRfYnJlYWsgc3RhdGUgMCAwXG5cblxuKCogVGFidWxhdGlvbiBib3hlcy4gKilcbmxldCBwcF9vcGVuX3Rib3ggc3RhdGUgKCkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUuemVybyBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX3RiZWdpbiAoUHBfdGJveCAocmVmIFtdKSk7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCogQ2xvc2UgYSB0YWJ1bGF0aW9uIGJveC4gKilcbmxldCBwcF9jbG9zZV90Ym94IHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA+IDEgdGhlblxuICBiZWdpblxuICAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3RlbmQ7IGxlbmd0aCA9IDAgfSBpblxuICAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgZWxlbTtcbiAgICAgc3RhdGUucHBfY3Vycl9kZXB0aCA8LSBzdGF0ZS5wcF9jdXJyX2RlcHRoIC0gMVxuICBlbmRcblxuXG4oKiBQcmludCBhIHRhYnVsYXRpb24gYnJlYWsuICopXG5sZXQgcHBfcHJpbnRfdGJyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS5vZl9pbnQgKC0gc3RhdGUucHBfcmlnaHRfdG90YWwpIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJyZWFrICh3aWR0aCwgb2Zmc2V0KTsgbGVuZ3RoID0gd2lkdGggfSBpblxuICAgIHNjYW5fcHVzaCBzdGF0ZSB0cnVlIGVsZW1cblxuXG5sZXQgcHBfcHJpbnRfdGFiIHN0YXRlICgpID0gcHBfcHJpbnRfdGJyZWFrIHN0YXRlIDAgMFxuXG5sZXQgcHBfc2V0X3RhYiBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBlbGVtID0geyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX3N0YWI7IGxlbmd0aCA9IDAgfSBpblxuICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtXG5cblxuKCpcblxuICBQcm9jZWR1cmVzIHRvIGNvbnRyb2wgdGhlIHByZXR0eS1wcmludGVyc1xuXG4qKVxuXG4oKiBTZXRfbWF4X2JveGVzLiAqKVxubGV0IHBwX3NldF9tYXhfYm94ZXMgc3RhdGUgbiA9IGlmIG4gPiAxIHRoZW4gc3RhdGUucHBfbWF4X2JveGVzIDwtIG5cblxuKCogVG8ga25vdyB0aGUgY3VycmVudCBtYXhpbXVtIG51bWJlciBvZiBib3hlcyBhbGxvd2VkLiAqKVxubGV0IHBwX2dldF9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfYm94ZXNcblxubGV0IHBwX292ZXJfbWF4X2JveGVzIHN0YXRlICgpID0gc3RhdGUucHBfY3Vycl9kZXB0aCA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG4oKiBFbGxpcHNpcy4gKilcbmxldCBwcF9zZXRfZWxsaXBzaXNfdGV4dCBzdGF0ZSBzID0gc3RhdGUucHBfZWxsaXBzaXMgPC0gc1xuYW5kIHBwX2dldF9lbGxpcHNpc190ZXh0IHN0YXRlICgpID0gc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUbyBzZXQgdGhlIG1hcmdpbiBvZiBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9saW1pdCBuID1cbiAgaWYgbiA8IHBwX2luZmluaXR5IHRoZW4gbiBlbHNlIHByZWQgcHBfaW5maW5pdHlcblxuXG4oKiBJbnRlcm5hbCBwcmV0dHktcHJpbnRlciBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0IDwtIG47XG4gICAgc3RhdGUucHBfbWF4X2luZGVudCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9yaW5pdCBzdGF0ZVxuXG5cbigqIEluaXRpYWxseSwgd2UgaGF2ZSA6XG4gICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQsIGFuZFxuICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbi4gKilcbmxldCBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuID1cbiAgaWYgbiA+IDEgdGhlblxuICAgIHBwX3NldF9taW5fc3BhY2VfbGVmdCBzdGF0ZSAoc3RhdGUucHBfbWFyZ2luIC0gbilcblxuXG5sZXQgcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9tYXhfaW5kZW50XG5cbmxldCBwcF9zZXRfbWFyZ2luIHN0YXRlIG4gPVxuICBpZiBuID49IDEgdGhlblxuICAgIGxldCBuID0gcHBfbGltaXQgbiBpblxuICAgIHN0YXRlLnBwX21hcmdpbiA8LSBuO1xuICAgIGxldCBuZXdfbWF4X2luZGVudCA9XG4gICAgICAoKiBUcnkgdG8gbWFpbnRhaW4gbWF4X2luZGVudCB0byBpdHMgYWN0dWFsIHZhbHVlLiAqKVxuICAgICAgaWYgc3RhdGUucHBfbWF4X2luZGVudCA8PSBzdGF0ZS5wcF9tYXJnaW5cbiAgICAgIHRoZW4gc3RhdGUucHBfbWF4X2luZGVudCBlbHNlXG4gICAgICAoKiBJZiBwb3NzaWJsZSBtYWludGFpbiBwcF9taW5fc3BhY2VfbGVmdCB0byBpdHMgYWN0dWFsIHZhbHVlLFxuICAgICAgICAgaWYgdGhpcyBsZWFkcyB0byBhIHRvbyBzbWFsbCBtYXhfaW5kZW50LCB0YWtlIGhhbGYgb2YgdGhlXG4gICAgICAgICBuZXcgbWFyZ2luLCBpZiBpdCBpcyBncmVhdGVyIHRoYW4gMS4gKilcbiAgICAgICBJbnQubWF4IChJbnQubWF4IChzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9taW5fc3BhY2VfbGVmdClcbiAgICAgICAgICAgICAgICAoc3RhdGUucHBfbWFyZ2luIC8gMikpIDEgaW5cbiAgICAoKiBSZWJ1aWxkIGludmFyaWFudHMuICopXG4gICAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbmV3X21heF9pbmRlbnRcblxuXG4oKiogR2VvbWV0cnkgZnVuY3Rpb25zIGFuZCB0eXBlcyAqKVxudHlwZSBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDppbnQ7IG1hcmdpbjogaW50fVxuXG5sZXQgdmFsaWRhdGVfZ2VvbWV0cnkge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBpZiBtYXhfaW5kZW50IDwgMiB0aGVuXG4gICAgRXJyb3IgXCJtYXhfaW5kZW50IDwgMlwiXG4gIGVsc2UgaWYgbWFyZ2luIDw9IG1heF9pbmRlbnQgdGhlblxuICAgIEVycm9yIFwibWFyZ2luIDw9IG1heF9pbmRlbnRcIlxuICBlbHNlIE9rICgpXG5cbmxldCBjaGVja19nZW9tZXRyeSBnZW9tZXRyeSA9XG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBPayAoKSAtPiB0cnVlXG4gIHwgRXJyb3IgXyAtPiBmYWxzZVxuXG5sZXQgcHBfZ2V0X21hcmdpbiBzdGF0ZSAoKSA9IHN0YXRlLnBwX21hcmdpblxuXG5sZXQgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUge21hcmdpbjsgbWF4X2luZGVudH0gPVxuICBwcF9zZXRfbWFyZ2luIHN0YXRlIG1hcmdpbjtcbiAgcHBfc2V0X21heF9pbmRlbnQgc3RhdGUgbWF4X2luZGVudDtcbiAgKClcblxubGV0IHBwX3NldF9nZW9tZXRyeSBzdGF0ZSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgbGV0IGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OyBtYXJnaW4gfSBpblxuICBtYXRjaCB2YWxpZGF0ZV9nZW9tZXRyeSBnZW9tZXRyeSB3aXRoXG4gIHwgRXJyb3IgbXNnIC0+XG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiRm9ybWF0LnBwX3NldF9nZW9tZXRyeTogXCIgXiBtc2cpKVxuICB8IE9rICgpIC0+XG4gICAgcHBfc2V0X2Z1bGxfZ2VvbWV0cnkgc3RhdGUgZ2VvbWV0cnlcblxubGV0IHBwX3NhZmVfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBfbXNnIC0+XG4gICAgICgpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpID1cbiAgeyBtYXJnaW4gPSBwcF9nZXRfbWFyZ2luIHN0YXRlICgpOyBtYXhfaW5kZW50ID0gcHBfZ2V0X21heF9pbmRlbnQgc3RhdGUgKCkgfVxuXG5sZXQgcHBfdXBkYXRlX2dlb21ldHJ5IHN0YXRlIHVwZGF0ZSA9XG4gIGxldCBnZW9tZXRyeSA9IHBwX2dldF9nZW9tZXRyeSBzdGF0ZSAoKSBpblxuICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSAodXBkYXRlIGdlb21ldHJ5KVxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuICopXG5sZXQgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgIG91dF9zdHJpbmcgPSBmO1xuICAgICAgb3V0X2ZsdXNoID0gZztcbiAgICAgIG91dF9uZXdsaW5lID0gaDtcbiAgICAgIG91dF9zcGFjZXMgPSBpO1xuICAgICAgb3V0X2luZGVudCA9IGo7XG4gICAgfSA9XG4gIHN0YXRlLnBwX291dF9zdHJpbmcgPC0gZjtcbiAgc3RhdGUucHBfb3V0X2ZsdXNoIDwtIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBqXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG91dF9zdHJpbmcgPSBzdGF0ZS5wcF9vdXRfc3RyaW5nO1xuICBvdXRfZmx1c2ggPSBzdGF0ZS5wcF9vdXRfZmx1c2g7XG4gIG91dF9uZXdsaW5lID0gc3RhdGUucHBfb3V0X25ld2xpbmU7XG4gIG91dF9zcGFjZXMgPSBzdGF0ZS5wcF9vdXRfc3BhY2VzO1xuICBvdXRfaW5kZW50ID0gc3RhdGUucHBfb3V0X2luZGVudDtcbn1cblxuXG4oKiBTZXR0aW5nIGEgZm9ybWF0dGVyIGJhc2ljIHN0cmluZyBvdXRwdXQgYW5kIGZsdXNoIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgZiBnID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmOyBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZ1xuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0YXRlICgpID1cbiAgKHN0YXRlLnBwX291dF9zdHJpbmcsIHN0YXRlLnBwX291dF9mbHVzaClcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfbmV3bGluZSBzdGF0ZSAoKSA9IHN0YXRlLnBwX291dF9zdHJpbmcgXCJcXG5cIiAwICAxXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBzcGFjZXMuICopXG5sZXQgYmxhbmtfbGluZSA9IFN0cmluZy5tYWtlIDgwICcgJ1xubGV0IHJlYyBkaXNwbGF5X2JsYW5rcyBzdGF0ZSBuID1cbiAgaWYgbiA+IDAgdGhlblxuICBpZiBuIDw9IDgwIHRoZW4gc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgbiBlbHNlXG4gIGJlZ2luXG4gICAgc3RhdGUucHBfb3V0X3N0cmluZyBibGFua19saW5lIDAgODA7XG4gICAgZGlzcGxheV9ibGFua3Mgc3RhdGUgKG4gLSA4MClcbiAgZW5kXG5cblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbmxldCBkaXNwbGF5X2luZGVudCA9IGRpc3BsYXlfYmxhbmtzXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucyBhcyBwcmludGluZyB0byBhIGdpdmVuXG4gICBbU3RkbGliLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsIHN0YXRlIG9jID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBvdXRwdXRfc3Vic3RyaW5nIG9jO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gKGZ1biAoKSAtPiBmbHVzaCBvYyk7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBzdGF0ZTtcbiAgc3RhdGUucHBfb3V0X2luZGVudCA8LSBkaXNwbGF5X2luZGVudCBzdGF0ZVxuXG4oKlxuXG4gIERlZmluaW5nIHNwZWNpZmljIGZvcm1hdHRlcnNcblxuKilcblxubGV0IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPFwiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5sZXQgZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZyA9IGZ1bmN0aW9uXG4gIHwgU3RyaW5nX3RhZyBzIC0+IFwiPC9cIiBeIHMgXiBcIj5cIlxuICB8IF8gLT4gXCJcIlxuXG5sZXQgZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyA9IGlnbm9yZVxubGV0IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnID0gaWdub3JlXG5cbigqIEJ1aWxkaW5nIGEgZm9ybWF0dGVyIGdpdmVuIGl0cyBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zLlxuICAgT3RoZXIgZmllbGRzIGdldCByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWVzLiAqKVxubGV0IHBwX21ha2VfZm9ybWF0dGVyIGYgZyBoIGkgaiA9XG4gICgqIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBmb3JtYXR0ZXIgY29udGFpbnMgYSBkdW1teSBib3guICopXG4gIGxldCBwcF9xdWV1ZSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgc3lzX3RvayA9XG4gICAgeyBzaXplID0gU2l6ZS51bmtub3duOyB0b2tlbiA9IFBwX2JlZ2luICgwLCBQcF9ob3Zib3gpOyBsZW5ndGggPSAwIH0gaW5cbiAgUXVldWUuYWRkIHN5c190b2sgcHBfcXVldWU7XG4gIGxldCBzY2FuX3N0YWNrID0gU3RhY2suY3JlYXRlICgpIGluXG4gIGluaXRpYWxpemVfc2Nhbl9zdGFjayBzY2FuX3N0YWNrO1xuICBTdGFjay5wdXNoIHsgbGVmdF90b3RhbCA9IDE7IHF1ZXVlX2VsZW0gPSBzeXNfdG9rIH0gc2Nhbl9zdGFjaztcbiAgbGV0IHBwX21hcmdpbiA9IDc4XG4gIGFuZCBwcF9taW5fc3BhY2VfbGVmdCA9IDEwIGluXG4gIHtcbiAgICBwcF9zY2FuX3N0YWNrID0gc2Nhbl9zdGFjaztcbiAgICBwcF9mb3JtYXRfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfdGJveF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90YWdfc3RhY2sgPSBTdGFjay5jcmVhdGUgKCk7XG4gICAgcHBfbWFya19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJnaW4gPSBwcF9tYXJnaW47XG4gICAgcHBfbWluX3NwYWNlX2xlZnQgPSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9tYXhfaW5kZW50ID0gcHBfbWFyZ2luIC0gcHBfbWluX3NwYWNlX2xlZnQ7XG4gICAgcHBfc3BhY2VfbGVmdCA9IHBwX21hcmdpbjtcbiAgICBwcF9jdXJyZW50X2luZGVudCA9IDA7XG4gICAgcHBfaXNfbmV3X2xpbmUgPSB0cnVlO1xuICAgIHBwX2xlZnRfdG90YWwgPSAxO1xuICAgIHBwX3JpZ2h0X3RvdGFsID0gMTtcbiAgICBwcF9jdXJyX2RlcHRoID0gMTtcbiAgICBwcF9tYXhfYm94ZXMgPSBtYXhfaW50O1xuICAgIHBwX2VsbGlwc2lzID0gXCIuXCI7XG4gICAgcHBfb3V0X3N0cmluZyA9IGY7XG4gICAgcHBfb3V0X2ZsdXNoID0gZztcbiAgICBwcF9vdXRfbmV3bGluZSA9IGg7XG4gICAgcHBfb3V0X3NwYWNlcyA9IGk7XG4gICAgcHBfb3V0X2luZGVudCA9IGo7XG4gICAgcHBfcHJpbnRfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfdGFncyA9IGZhbHNlO1xuICAgIHBwX21hcmtfb3Blbl90YWcgPSBkZWZhdWx0X3BwX21hcmtfb3Blbl90YWc7XG4gICAgcHBfbWFya19jbG9zZV90YWcgPSBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnO1xuICAgIHBwX3ByaW50X29wZW5fdGFnID0gZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZztcbiAgICBwcF9wcmludF9jbG9zZV90YWcgPSBkZWZhdWx0X3BwX3ByaW50X2Nsb3NlX3RhZztcbiAgICBwcF9xdWV1ZSA9IHBwX3F1ZXVlO1xuICB9XG5cblxuKCogQnVpbGQgYSBmb3JtYXR0ZXIgb3V0IG9mIGl0cyBvdXQgZnVuY3Rpb25zLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9vdXRfZnVuY3Rpb25zIG91dF9mdW5zID1cbiAgcHBfbWFrZV9mb3JtYXR0ZXJcbiAgICBvdXRfZnVucy5vdXRfc3RyaW5nXG4gICAgb3V0X2Z1bnMub3V0X2ZsdXNoXG4gICAgb3V0X2Z1bnMub3V0X25ld2xpbmVcbiAgICBvdXRfZnVucy5vdXRfc3BhY2VzXG4gICAgb3V0X2Z1bnMub3V0X2luZGVudFxuXG5cbigqIE1ha2UgYSBmb3JtYXR0ZXIgd2l0aCBkZWZhdWx0IGZ1bmN0aW9ucyB0byBvdXRwdXQgc3BhY2VzLFxuICBpbmRlbnRhdGlvbiwgYW5kIG5ldyBsaW5lcy4gKilcbmxldCBtYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggPVxuICBsZXQgcHBmID0gcHBfbWFrZV9mb3JtYXR0ZXIgb3V0cHV0IGZsdXNoIGlnbm9yZSBpZ25vcmUgaWdub3JlIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgcHBmXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW1N0ZGxpYi5vdXRfY2hhbm5lbF0gdmFsdWUuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9mb3JtYXR0ZXIgKG91dHB1dF9zdWJzdHJpbmcgb2MpIChmdW4gKCkgLT4gZmx1c2ggb2MpXG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3cml0aW5nIHRvIGEgZ2l2ZW4gW0J1ZmZlci50XSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgPVxuICBtYWtlX2Zvcm1hdHRlciAoQnVmZmVyLmFkZF9zdWJzdHJpbmcgYikgaWdub3JlXG5cblxuKCogQWxsb2NhdGluZyBidWZmZXIgZm9yIHByZXR0eS1wcmludGluZyBwdXJwb3Nlcy5cbiAgIERlZmF1bHQgYnVmZmVyIHNpemUgaXMgcHBfYnVmZmVyX3NpemUgb3IgNTEyLlxuKilcbmxldCBwcF9idWZmZXJfc2l6ZSA9IDUxMlxubGV0IHBwX21ha2VfYnVmZmVyICgpID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZVxuXG4oKiBUaGUgc3RhbmRhcmQgKHNoYXJlZCkgYnVmZmVyLiAqKVxubGV0IHN0ZGJ1ZiA9IHBwX21ha2VfYnVmZmVyICgpXG5cbigqIFByZWRlZmluZWQgZm9ybWF0dGVycyBzdGFuZGFyZCBmb3JtYXR0ZXIgdG8gcHJpbnRcbiAgIHRvIFtTdGRsaWIuc3Rkb3V0XSwgW1N0ZGxpYi5zdGRlcnJdLCBhbmQgeyFzdGRidWZ9LiAqKVxubGV0IHN0ZF9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZG91dFxuYW5kIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgU3RkbGliLnN0ZGVyclxuYW5kIHN0cl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIHN0ZGJ1ZlxuXG4oKiBJbml0aWFsaXNlIGRvbWFpbiBsb2NhbCBzdGF0ZSAqKVxubW9kdWxlIERMUyA9IERvbWFpbi5ETFNcblxubGV0IHN0ZGJ1Zl9rZXkgPSBETFMubmV3X2tleSBwcF9tYWtlX2J1ZmZlclxubGV0IF8gPSBETFMuc2V0IHN0ZGJ1Zl9rZXkgc3RkYnVmXG5cbmxldCBzdHJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgZm9ybWF0dGVyX29mX2J1ZmZlciAoRExTLmdldCBzdGRidWZfa2V5KSlcbmxldCBfID0gRExTLnNldCBzdHJfZm9ybWF0dGVyX2tleSBzdHJfZm9ybWF0dGVyXG5cbmxldCBidWZmZXJlZF9vdXRfc3RyaW5nIGtleSBzdHIgb2ZzIGxlbiA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIChEb21haW4uRExTLmdldCBrZXkpIHN0ciBvZnMgbGVuXG5cbmxldCBidWZmZXJlZF9vdXRfZmx1c2ggb2Mga2V5ICgpID1cbiAgbGV0IGJ1ZiA9IERvbWFpbi5ETFMuZ2V0IGtleSBpblxuICBsZXQgbGVuID0gQnVmZmVyLmxlbmd0aCBidWYgaW5cbiAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHIgMCBsZW4gO1xuICBTdGRsaWIuZmx1c2ggb2M7XG4gIEJ1ZmZlci5jbGVhciBidWZcblxubGV0IHN0ZF9idWZfa2V5ID0gRG9tYWluLkRMUy5uZXdfa2V5IChmdW4gKCkgLT4gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSlcbmxldCBlcnJfYnVmX2tleSA9IERvbWFpbi5ETFMubmV3X2tleSAoZnVuICgpIC0+IEJ1ZmZlci5jcmVhdGUgcHBfYnVmZmVyX3NpemUpXG5cbmxldCBzdGRfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgc3RkX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRvdXQgc3RkX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBzdGRfZm9ybWF0dGVyX2tleSBzdGRfZm9ybWF0dGVyXG5cbmxldCBlcnJfZm9ybWF0dGVyX2tleSA9IERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgbGV0IHBwZiA9XG4gICAgcHBfbWFrZV9mb3JtYXR0ZXIgKGJ1ZmZlcmVkX291dF9zdHJpbmcgZXJyX2J1Zl9rZXkpXG4gICAgICAoYnVmZmVyZWRfb3V0X2ZsdXNoIFN0ZGxpYi5zdGRlcnIgZXJyX2J1Zl9rZXkpIGlnbm9yZSBpZ25vcmUgaWdub3JlXG4gIGluXG4gIHBwZi5wcF9vdXRfbmV3bGluZSA8LSBkaXNwbGF5X25ld2xpbmUgcHBmO1xuICBwcGYucHBfb3V0X3NwYWNlcyA8LSBkaXNwbGF5X2JsYW5rcyBwcGY7XG4gIHBwZi5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHBwZjtcbiAgRG9tYWluLmF0X2V4aXQgKHBwX3ByaW50X2ZsdXNoIHBwZik7XG4gIHBwZilcbmxldCBfID0gRExTLnNldCBlcnJfZm9ybWF0dGVyX2tleSBlcnJfZm9ybWF0dGVyXG5cbmxldCBnZXRfc3RkX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfZXJyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgZXJyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RyX2Zvcm1hdHRlciAoKSA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXlcbmxldCBnZXRfc3RkYnVmICgpID0gRExTLmdldCBzdGRidWZfa2V5XG5cbigqIFtmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGZdIGZsdXNoZXMgZm9ybWF0dGVyIFtwcGZdLFxuICAgdGhlbiByZXR1cm5zIHRoZSBjb250ZW50cyBvZiBidWZmZXIgW2J1Zl0gdGhhdCBpcyByZXNldC5cbiAgIEZvcm1hdHRlciBbcHBmXSBpcyBzdXBwb3NlZCB0byBwcmludCB0byBidWZmZXIgW2J1Zl0sIG90aGVyd2lzZSB0aGlzXG4gICBmdW5jdGlvbiBpcyBub3QgcmVhbGx5IHVzZWZ1bC4gKilcbmxldCBmbHVzaF9idWZmZXJfZm9ybWF0dGVyIGJ1ZiBwcGYgPVxuICBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2U7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIGJ1ZiBpblxuICBCdWZmZXIucmVzZXQgYnVmO1xuICBzXG5cbigqIEZsdXNoIFtzdHJfZm9ybWF0dGVyXSBhbmQgZ2V0IHRoZSBjb250ZW50cyBvZiBbc3RkYnVmXS4gKilcbmxldCBmbHVzaF9zdHJfZm9ybWF0dGVyICgpID1cbiAgbGV0IHN0ZGJ1ZiA9IERMUy5nZXQgc3RkYnVmX2tleSBpblxuICBsZXQgc3RyX2Zvcm1hdHRlciA9IERMUy5nZXQgc3RyX2Zvcm1hdHRlcl9rZXkgaW5cbiAgZmx1c2hfYnVmZmVyX2Zvcm1hdHRlciBzdGRidWYgc3RyX2Zvcm1hdHRlclxuXG5sZXQgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIERMUy5uZXdfa2V5IChmdW4gKCkgLT5cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBwcF9idWZmZXJfc2l6ZSBpblxuICAgIGxldCBvdXRwdXQnID0gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGluXG4gICAgbGV0IGZsdXNoJyAoKSA9XG4gICAgICBvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBidWYpIDAgKEJ1ZmZlci5sZW5ndGggYnVmKTtcbiAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICBmbHVzaCAoKVxuICAgIGluXG4gICAgbWFrZV9mb3JtYXR0ZXIgb3V0cHV0JyBmbHVzaCcpXG5cbmxldCBzeW5jaHJvbml6ZWRfZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jID1cbiAgbWFrZV9zeW5jaHJvbml6ZWRfZm9ybWF0dGVyIChvdXRwdXRfc3Vic3RyaW5nIG9jKSAoZnVuICgpIC0+IGZsdXNoIG9jKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmdcbiopXG5cbigqXG4gIFN5bWJvbGljIHByZXR0eS1wcmludGluZyBpcyBwcmV0dHktcHJpbnRpbmcgd2l0aCBubyBsb3cgbGV2ZWwgb3V0cHV0LlxuXG4gIFdoZW4gdXNpbmcgYSBzeW1ib2xpYyBmb3JtYXR0ZXIsIGFsbCByZWd1bGFyIHByZXR0eS1wcmludGluZyBhY3Rpdml0aWVzXG4gIG9jY3VyIGJ1dCBvdXRwdXQgbWF0ZXJpYWwgaXMgc3ltYm9saWMgYW5kIHN0b3JlZCBpbiBhIGJ1ZmZlciBvZiBvdXRwdXRcbiAgaXRlbXMuIEF0IHRoZSBlbmQgb2YgcHJldHR5LXByaW50aW5nLCBmbHVzaGluZyB0aGUgb3V0cHV0IGJ1ZmZlciBhbGxvd3NcbiAgcG9zdC1wcm9jZXNzaW5nIG9mIHN5bWJvbGljIG91dHB1dCBiZWZvcmUgbG93IGxldmVsIG91dHB1dCBvcGVyYXRpb25zLlxuKilcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfaXRlbSA9XG4gIHwgT3V0cHV0X2ZsdXNoXG4gIHwgT3V0cHV0X25ld2xpbmVcbiAgfCBPdXRwdXRfc3RyaW5nIG9mIHN0cmluZ1xuICB8IE91dHB1dF9zcGFjZXMgb2YgaW50XG4gIHwgT3V0cHV0X2luZGVudCBvZiBpbnRcblxudHlwZSBzeW1ib2xpY19vdXRwdXRfYnVmZmVyID0ge1xuICBtdXRhYmxlIHN5bWJvbGljX291dHB1dF9jb250ZW50cyA6IHN5bWJvbGljX291dHB1dF9pdGVtIGxpc3Q7XG59XG5cbmxldCBtYWtlX3N5bWJvbGljX291dHB1dF9idWZmZXIgKCkgPVxuICB7IHN5bWJvbGljX291dHB1dF9jb250ZW50cyA9IFtdIH1cblxubGV0IGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBbXVxuXG5sZXQgZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgTGlzdC5yZXYgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZmx1c2hfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgPVxuICBsZXQgaXRlbXMgPSBnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2IgaW5cbiAgY2xlYXJfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciBzb2I7XG4gIGl0ZW1zXG5cbmxldCBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIGl0ZW0gPVxuICBzb2Iuc3ltYm9saWNfb3V0cHV0X2NvbnRlbnRzIDwtIGl0ZW0gOjogc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50c1xuXG5sZXQgZm9ybWF0dGVyX29mX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IHN5bWJvbGljX2ZsdXNoIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfZmx1c2hcbiAgYW5kIHN5bWJvbGljX25ld2xpbmUgc29iICgpID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIE91dHB1dF9uZXdsaW5lXG4gIGFuZCBzeW1ib2xpY19zdHJpbmcgc29iIHMgaSBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfc3RyaW5nIChTdHJpbmcuc3ViIHMgaSBuKSlcbiAgYW5kIHN5bWJvbGljX3NwYWNlcyBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3NwYWNlcyBuKVxuICBhbmQgc3ltYm9saWNfaW5kZW50IHNvYiBuID1cbiAgICBhZGRfc3ltYm9saWNfb3V0cHV0X2l0ZW0gc29iIChPdXRwdXRfaW5kZW50IG4pIGluXG5cbiAgbGV0IGYgPSBzeW1ib2xpY19zdHJpbmcgc29iXG4gIGFuZCBnID0gc3ltYm9saWNfZmx1c2ggc29iXG4gIGFuZCBoID0gc3ltYm9saWNfbmV3bGluZSBzb2JcbiAgYW5kIGkgPSBzeW1ib2xpY19zcGFjZXMgc29iXG4gIGFuZCBqID0gc3ltYm9saWNfaW5kZW50IHNvYiBpblxuICBwcF9tYWtlX2Zvcm1hdHRlciBmIGcgaCBpIGpcblxuKCpcblxuICBCYXNpYyBmdW5jdGlvbnMgb24gdGhlICdzdGFuZGFyZCcgZm9ybWF0dGVyXG4gICh0aGUgZm9ybWF0dGVyIHRoYXQgcHJpbnRzIHRvIFtTdGRsaWIuc3Rkb3V0XSkuXG5cbiopXG5cbmxldCBvcGVuX2hib3ggdiA9IHBwX29wZW5faGJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fdmJveCB2ID0gcHBfb3Blbl92Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9odmJveCB2ID0gcHBfb3Blbl9odmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5faG92Ym94IHYgPSBwcF9vcGVuX2hvdmJveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIG9wZW5fYm94IHYgPSBwcF9vcGVuX2JveCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGNsb3NlX2JveCB2ID0gcHBfY2xvc2VfYm94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgb3Blbl9zdGFnIHYgPSBwcF9vcGVuX3N0YWcgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV9zdGFnIHYgPSBwcF9jbG9zZV9zdGFnIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYXMgdiB3ID0gcHBfcHJpbnRfYXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHYgd1xuYW5kIHByaW50X3N0cmluZyB2ID0gcHBfcHJpbnRfc3RyaW5nIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYnl0ZXMgdiA9IHBwX3ByaW50X2J5dGVzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaW50IHYgPSBwcF9wcmludF9pbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbG9hdCB2ID0gcHBfcHJpbnRfZmxvYXQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9jaGFyIHYgPSBwcF9wcmludF9jaGFyIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfYm9vbCB2ID0gcHBfcHJpbnRfYm9vbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X2JyZWFrIHYgdyA9IHBwX3ByaW50X2JyZWFrIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2IHdcbmFuZCBwcmludF9jdXQgdiA9IHBwX3ByaW50X2N1dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIHByaW50X3NwYWNlIHYgPSBwcF9wcmludF9zcGFjZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGZvcmNlX25ld2xpbmUgdiA9IHBwX2ZvcmNlX25ld2xpbmUgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9mbHVzaCB2ID0gcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBwcmludF9uZXdsaW5lIHYgPSBwcF9wcmludF9uZXdsaW5lIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfaWZfbmV3bGluZSB2ID0gcHBfcHJpbnRfaWZfbmV3bGluZSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgb3Blbl90Ym94IHYgPSBwcF9vcGVuX3Rib3ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBjbG9zZV90Ym94IHYgPSBwcF9jbG9zZV90Ym94IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGJyZWFrIHYgdyA9IHBwX3ByaW50X3RicmVhayAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5cbmFuZCBzZXRfdGFiIHYgPSBwcF9zZXRfdGFiIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgcHJpbnRfdGFiIHYgPSBwcF9wcmludF90YWIgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9tYXJnaW4gdiA9IHBwX3NldF9tYXJnaW4gKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWFyZ2luIHYgPSBwcF9nZXRfbWFyZ2luIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5cbmFuZCBzZXRfbWF4X2luZGVudCB2ID0gcHBfc2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfbWF4X2luZGVudCB2ID0gcHBfZ2V0X21heF9pbmRlbnQgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9nZW9tZXRyeSB+bWF4X2luZGVudCB+bWFyZ2luID1cbiAgcHBfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIHBwX3NhZmVfc2V0X2dlb21ldHJ5IChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB+bWF4X2luZGVudCB+bWFyZ2luXG5hbmQgZ2V0X2dlb21ldHJ5IHYgPSBwcF9nZXRfZ2VvbWV0cnkgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgdiA9IHBwX3VwZGF0ZV9nZW9tZXRyeSAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X21heF9ib3hlcyB2ID0gcHBfc2V0X21heF9ib3hlcyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXhfYm94ZXMgdiA9IHBwX2dldF9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBvdmVyX21heF9ib3hlcyB2ID0gcHBfb3Zlcl9tYXhfYm94ZXMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9zZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9lbGxpcHNpc190ZXh0IHYgPSBwcF9nZXRfZWxsaXBzaXNfdGV4dCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCB2ID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgdiA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgdyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdiB3XG5hbmQgZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuYW5kIHNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgdiA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHYgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX3NldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgZ2V0X3ByaW50X3RhZ3MgdiA9XG4gIHBwX2dldF9wcmludF90YWdzIChETFMuZ2V0IHN0ZF9mb3JtYXR0ZXJfa2V5KSB2XG5hbmQgc2V0X21hcmtfdGFncyB2ID1cbiAgcHBfc2V0X21hcmtfdGFncyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgdlxuYW5kIGdldF9tYXJrX3RhZ3MgdiA9XG4gIHBwX2dldF9tYXJrX3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcbmFuZCBzZXRfdGFncyB2ID1cbiAgcHBfc2V0X3RhZ3MgKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpIHZcblxuXG4oKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgKilcblxuKCogVG8gZm9ybWF0IGEgbGlzdCAqKVxubGV0IHJlYyBwcF9wcmludF9saXN0ID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbdl0gLT4gcHBfdiBwcGYgdlxuICB8IHYgOjogdnMgLT5cbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3NlcCBwcGYgKCk7XG4gICAgcHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBwX3YgcHBmIHZzXG5cbigqIFRvIGZvcm1hdCBhIHNlcXVlbmNlICopXG5sZXQgcmVjIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF92IHBwZiB2O1xuICAgIHBwX3ByaW50X3NlcV9pbiB+cHBfc2VwIHBwX3YgcHBmIHNlcVxuXG5sZXQgcHBfcHJpbnRfc2VxID8ocHBfc2VwID0gcHBfcHJpbnRfY3V0KSBwcF92IHBwZiBzZXEgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gKClcbiAgfCBTZXEuQ29ucyAodiwgc2VxKSAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbigqIFRvIGZvcm1hdCBmcmVlLWZsb3dpbmcgdGV4dCAqKVxubGV0IHBwX3ByaW50X3RleHQgcHBmIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsZWZ0ID0gcmVmIDAgaW5cbiAgbGV0IHJpZ2h0ID0gcmVmIDAgaW5cbiAgbGV0IGZsdXNoICgpID1cbiAgICBwcF9wcmludF9zdHJpbmcgcHBmIChTdHJpbmcuc3ViIHMgIWxlZnQgKCFyaWdodCAtICFsZWZ0KSk7XG4gICAgaW5jciByaWdodDsgbGVmdCA6PSAhcmlnaHQ7XG4gIGluXG4gIHdoaWxlICghcmlnaHQgPD4gbGVuKSBkb1xuICAgIG1hdGNoIHMuWyFyaWdodF0gd2l0aFxuICAgICAgfCAnXFxuJyAtPlxuICAgICAgICBmbHVzaCAoKTtcbiAgICAgICAgcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgICAgIHwgJyAnIC0+XG4gICAgICAgIGZsdXNoICgpOyBwcF9wcmludF9zcGFjZSBwcGYgKClcbiAgICAgICgqIHRoZXJlIGlzIG5vIHNwZWNpZmljIHN1cHBvcnQgZm9yICdcXHQnXG4gICAgICAgICBhcyBpdCBpcyB1bmNsZWFyIHdoYXQgYSByaWdodCBzZW1hbnRpY3Mgd291bGQgYmUgKilcbiAgICAgIHwgXyAtPiBpbmNyIHJpZ2h0XG4gIGRvbmU7XG4gIGlmICFsZWZ0IDw+IGxlbiB0aGVuIGZsdXNoICgpXG5cbmxldCBwcF9wcmludF9vcHRpb24gPyhub25lID0gZnVuIF8gKCkgLT4gKCkpIHBwX3YgcHBmID0gZnVuY3Rpb25cbnwgTm9uZSAtPiBub25lIHBwZiAoKVxufCBTb21lIHYgLT4gcHBfdiBwcGYgdlxuXG5sZXQgcHBfcHJpbnRfcmVzdWx0IH5vayB+ZXJyb3IgcHBmID0gZnVuY3Rpb25cbnwgT2sgdiAtPiBvayBwcGYgdlxufCBFcnJvciBlIC0+IGVycm9yIHBwZiBlXG5cbmxldCBwcF9wcmludF9laXRoZXIgfmxlZnQgfnJpZ2h0IHBwZiA9IGZ1bmN0aW9uXG58IEVpdGhlci5MZWZ0IGwgLT4gbGVmdCBwcGYgbFxufCBFaXRoZXIuUmlnaHQgciAtPiByaWdodCBwcGYgclxuXG4gKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY29tcHV0ZV90YWcgb3V0cHV0IHRhZ19hY2MgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxNiBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgb3V0cHV0IHBwZiB0YWdfYWNjO1xuICBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIGxldCBsZW4gPSBCdWZmZXIubGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAyIHRoZW4gQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuICBlbHNlIEJ1ZmZlci5zdWIgYnVmIDEgKGxlbiAtIDIpXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuICBEZWZpbmluZyBjb250aW51YXRpb25zIHRvIGJlIHBhc3NlZCBhcyBhcmd1bWVudHMgb2ZcbiAgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLlxuXG4gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxuKCogSW50ZXJwcmV0IGEgZm9ybWF0dGluZyBlbnRpdHkgb24gYSBmb3JtYXR0ZXIuICopXG5sZXQgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmbXRpbmdfbGl0ID0gbWF0Y2ggZm10aW5nX2xpdCB3aXRoXG4gIHwgQ2xvc2VfYm94ICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9ib3ggcHBmICgpXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAtPiBwcF9jbG9zZV9zdGFnIHBwZiAoKVxuICB8IEJyZWFrIChfLCB3aWR0aCwgb2Zmc2V0KSAgLT4gcHBfcHJpbnRfYnJlYWsgcHBmIHdpZHRoIG9mZnNldFxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfZmx1c2ggcHBmICgpXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAtPiBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICB8IEZsdXNoX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfcHJpbnRfbmV3bGluZSBwcGYgKClcbiAgfCBNYWdpY19zaXplIChfLCBfKSAgICAgICAgIC0+ICgpXG4gIHwgRXNjYXBlZF9hdCAgICAgICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnQCdcbiAgfCBFc2NhcGVkX3BlcmNlbnQgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICclJ1xuICB8IFNjYW5faW5kaWMgYyAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnOyBwcF9wcmludF9jaGFyIHBwZiBjXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYW4gb3V0cHV0X3N0cmVhbS4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5vdXRwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIG91dHB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBvdXRwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgb3V0cHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IGYgcHBmO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IG91dHB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCogUmVjdXJzaXZlbHkgb3V0cHV0IGFuIFwiYWNjdW11bGF0b3JcIiBjb250YWluaW5nIGEgcmV2ZXJzZWQgbGlzdCBvZlxuICAgcHJpbnRpbmcgZW50aXRpZXMgKHN0cmluZywgY2hhciwgZmx1cywgLi4uKSBpbiBhIGJ1ZmZlci4gKilcbigqIERpZmZlciBmcm9tIFByaW50Zi5idWZwdXRfYWNjIGJ5IHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmb3JtYXR0aW5nLiAqKVxuKCogVXNlZCBhcyBhIGNvbnRpbnVhdGlvbiBvZiBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuICopXG5sZXQgcmVjIHN0cnB1dF9hY2MgcHBmIGFjYyA9IG1hdGNoIGFjYyB3aXRoXG4gIHwgQWNjX3N0cmluZ19saXRlcmFsIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBzKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIHM7XG4gIHwgQWNjX2NoYXJfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGMpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKFN0cmluZy5tYWtlIDEgYyk7XG4gIHwgQWNjX2RlbGF5IChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSAoZiAoKSk7XG4gIHwgQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBmKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgb3V0cHV0X2Zvcm1hdHRpbmdfbGl0IHBwZiBmO1xuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fdGFnIGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9vcGVuX3N0YWcgcHBmIChTdHJpbmdfdGFnIChjb21wdXRlX3RhZyBzdHJwdXRfYWNjIGFjYycpKVxuICB8IEFjY19mb3JtYXR0aW5nX2dlbiAocCwgQWNjX29wZW5fYm94IGFjYycpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBsZXQgKGluZGVudCwgYnR5KSA9IG9wZW5fYm94X29mX3N0cmluZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSBpblxuICAgIHBwX29wZW5fYm94X2dlbiBwcGYgaW5kZW50IGJ0eVxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAocCwgcylcbiAgfCBBY2NfZGF0YV9zdHJpbmcgKHAsIHMpICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfc3RyaW5nIHBwZiBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKHAsIGMpXG4gIHwgQWNjX2RhdGFfY2hhciAocCwgYykgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X2NoYXIgcHBmIGM7XG4gIHwgQWNjX2RlbGF5IChwLCBmKSAgICAgICAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgKGYgKCkpO1xuICB8IEFjY19mbHVzaCBwICAgICAgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIHwgQWNjX2ludmFsaWRfYXJnIChwLCBtc2cpIC0+IHN0cnB1dF9hY2MgcHBmIHA7IGludmFsaWRfYXJnIG1zZztcbiAgfCBFbmRfb2ZfYWNjICAgICAgICAgICAgICAgLT4gKClcblxuKCpcblxuICBEZWZpbmluZyBbZnByaW50Zl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbZnByaW50Zl0uXG5cbiopXG5cbmxldCBrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyBwcGYgYWNjOyBrIHBwZilcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5hbmQgaWtmcHJpbnRmIGsgcHBmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9pcHJpbnRmIGsgcHBmIGZtdFxuXG5sZXQgaWZwcmludGYgX3BwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBpZ25vcmUgKCkgZm10XG5cbmxldCBmcHJpbnRmIHBwZiA9IGtmcHJpbnRmIGlnbm9yZSBwcGZcblxubGV0IHByaW50ZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmXG4gICAgKGZ1biBhY2MgLT4gb3V0cHV0X2FjYyAoRExTLmdldCBzdGRfZm9ybWF0dGVyX2tleSkgYWNjKVxuICAgIEVuZF9vZl9hY2MgZm10XG5cbmxldCBlcHJpbnRmIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbWFrZV9wcmludGZcbiAgICAoZnVuIGFjYyAtPiBvdXRwdXRfYWNjIChETFMuZ2V0IGVycl9mb3JtYXR0ZXJfa2V5KSBhY2MpXG4gICAgRW5kX29mX2FjYyBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggKERMUy5nZXQgc3RkX2Zvcm1hdHRlcl9rZXkpICgpO1xuICBwcF9wcmludF9mbHVzaCAoRExTLmdldCBlcnJfZm9ybWF0dGVyX2tleSkgKClcblxubGV0ICgpID0gYXRfZXhpdCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzXG5cbmxldCAoKSA9IERvbWFpbi5iZWZvcmVfZmlyc3Rfc3Bhd24gKGZ1biAoKSAtPlxuICBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpO1xuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIHN0ZF9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3Rkb3V0IHN0ZF9idWZfa2V5fTtcblxuICBsZXQgZnMgPSBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlciAoKSBpblxuICBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgZXJyX2Zvcm1hdHRlclxuICAgIHtmcyB3aXRoIG91dF9zdHJpbmcgPSBidWZmZXJlZF9vdXRfc3RyaW5nIGVycl9idWZfa2V5O1xuICAgICAgICAgICAgIG91dF9mbHVzaCA9IGJ1ZmZlcmVkX291dF9mbHVzaCBTdGRsaWIuc3RkZXJyIGVycl9idWZfa2V5fTtcbilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Ncbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0XG5cbigqIGFsaWFzIHRvIGF2b2lkIHdhcm5pbmcgZm9yIGFtYmlndWl0eSBiZXR3ZWVuXG4gICBTdGRsaWIuZm9ybWF0NlxuICAgYW5kIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2XG5cbiAgICh0aGUgZm9ybWVyIGlzIGluIGZhY3QgYW4gYWxpYXMgZm9yIHRoZSBsYXR0ZXIsXG4gICAgYnV0IHRoZSBhbWJpZ3VpdHkgd2FybmluZyBkb2Vzbid0IGNhcmUpXG4qKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBTdGRsaWIuZm9ybWF0NlxuXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBzY2FubmVycy4gKilcblxuKCogU2Nhbm5pbmcgYnVmZmVycy4gKilcbm1vZHVsZSB0eXBlIFNDQU5OSU5HID0gc2lnXG5cbiAgdHlwZSBpbl9jaGFubmVsXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdmFsIHN0ZGluIDogaW5fY2hhbm5lbFxuICAoKiBUaGUgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgZnJvbSBbU3RkbGliLnN0ZGluXS4gKilcblxuICB2YWwgbmV4dF9jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5uZXh0X2NoYXIgaWJdIGFkdmFuY2UgdGhlIHNjYW5uaW5nIGJ1ZmZlciBmb3JcbiAgICAgb25lIGNoYXJhY3Rlci5cbiAgICAgSWYgbm8gbW9yZSBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYSBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXSBtYXJrIHRoZSBjdXJyZW50X2NoYXIgYXMgYWxyZWFkeVxuICAgICBzY2FubmVkLiAqKVxuXG4gIHZhbCBwZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogW1NjYW5uaW5nLnBlZWtfY2hhciBpYl0gcmV0dXJucyB0aGUgY3VycmVudCBjaGFyIGF2YWlsYWJsZSBpblxuICAgICB0aGUgYnVmZmVyIG9yIHJlYWRzIG9uZSBpZiBuZWNlc3NhcnkgKHdoZW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzXG4gICAgIGFscmVhZHkgc2Nhbm5lZCkuXG4gICAgIElmIG5vIGNoYXJhY3RlciBjYW4gYmUgcmVhZCwgc2V0cyBhbiBlbmQgb2YgZmlsZSBjb25kaXRpb24gYW5kXG4gICAgIHJldHVybnMgJ1xcMDAwJy4gKilcblxuICB2YWwgY2hlY2tlZF9wZWVrX2NoYXIgOiBzY2FuYnVmIC0+IGNoYXJcbiAgKCogU2FtZSBhcyBbU2Nhbm5pbmcucGVla19jaGFyXSBhYm92ZSBidXQgYWx3YXlzIHJldHVybnMgYSB2YWxpZCBjaGFyIG9yXG4gICAgIGZhaWxzOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG51bGwgY2hhciB3aGVuIHRoZSByZWFkaW5nIG1ldGhvZCBvZiB0aGVcbiAgICAgaW5wdXQgYnVmZmVyIGhhcyByZWFjaGVkIGFuIGVuZCBvZiBmaWxlLCB0aGUgZnVuY3Rpb24gcmFpc2VzIGV4Y2VwdGlvblxuICAgICBbRW5kX29mX2ZpbGVdLiAqKVxuXG4gIHZhbCBzdG9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gY2hhciAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnN0b3JlX2NoYXIgbGltIGliIGNdIGFkZHMgW2NdIHRvIHRoZSB0b2tlbiBidWZmZXJcbiAgICAgb2YgdGhlIHNjYW5uaW5nIGJ1ZmZlciBbaWJdLiBJdCBhbHNvIGFkdmFuY2VzIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIgYW5kIHJldHVybnMgW2xpbSAtIDFdLCBpbmRpY2F0aW5nIHRoZSBuZXcgbGltaXQgZm9yIHRoZVxuICAgICBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4uICopXG5cbiAgdmFsIHNraXBfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuc2tpcF9jaGFyIGxpbSBpYl0gaWdub3JlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuICopXG5cbiAgdmFsIGlnbm9yZV9jaGFyIDogaW50IC0+IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5pZ25vcmVfY2hhciBpYiBsaW1dIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGFuZFxuICAgICBkZWNyZW1lbnRzIHRoZSBsaW1pdC4gKilcblxuICB2YWwgdG9rZW4gOiBzY2FuYnVmIC0+IHN0cmluZ1xuICAoKiBbU2Nhbm5pbmcudG9rZW4gaWJdIHJldHVybnMgdGhlIHN0cmluZyBzdG9yZWQgaW50byB0aGUgdG9rZW5cbiAgICAgYnVmZmVyIG9mIHRoZSBzY2FubmluZyBidWZmZXI6IGl0IHJldHVybnMgdGhlIHRva2VuIG1hdGNoZWQgYnkgdGhlXG4gICAgIGZvcm1hdC4gKilcblxuICB2YWwgcmVzZXRfdG9rZW4gOiBzY2FuYnVmIC0+IHVuaXRcbiAgKCogW1NjYW5uaW5nLnJlc2V0X3Rva2VuIGliXSByZXNldHMgdGhlIHRva2VuIGJ1ZmZlciBvZlxuICAgICB0aGUgZ2l2ZW4gc2Nhbm5pbmcgYnVmZmVyLiAqKVxuXG4gIHZhbCBjaGFyX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLmNoYXJfY291bnQgaWJdIHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzXG4gICAgIHJlYWQgc28gZmFyIGZyb20gdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbGluZV9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5saW5lX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgbmV3IGxpbmVcbiAgICAgY2hhcmFjdGVycyByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIHRva2VuX2NvdW50IDogc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnRva2VuX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgdG9rZW5zIHJlYWRcbiAgICAgc28gZmFyIGZyb20gW2liXS4gKilcblxuICB2YWwgZW9mIDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lb2YgaWJdIHJldHVybnMgdGhlIGVuZCBvZiBpbnB1dCBjb25kaXRpb25cbiAgICAgb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgZW5kX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBib29sXG4gICgqIFtTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWJdIHRlc3RzIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIgKGlmIG5vIGNoYXIgaGFzIGV2ZXIgYmVlbiByZWFkLCBhbiBhdHRlbXB0IHRvXG4gICAgIHJlYWQgb25lIGlzIHBlcmZvcm1lZCkuICopXG5cbiAgdmFsIGJlZ2lubmluZ19vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuYmVnaW5uaW5nX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgYmVnaW5uaW5nIG9mIGlucHV0XG4gICAgIGNvbmRpdGlvbiBvZiB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCBuYW1lX29mX2lucHV0IDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLm5hbWVfb2ZfaW5wdXQgaWJdIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGNoYXJhY3RlclxuICAgICBzb3VyY2UgZm9yIGlucHV0IGJ1ZmZlciBbaWJdLiAqKVxuXG4gIHZhbCBvcGVuX2luIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIG9wZW5faW5fYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZmlsZSA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGVfYmluIDogZmlsZV9uYW1lIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fc3RyaW5nIDogc3RyaW5nIC0+IGluX2NoYW5uZWxcbiAgdmFsIGZyb21fZnVuY3Rpb24gOiAodW5pdCAtPiBjaGFyKSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2NoYW5uZWwgOiBTdGRsaWIuaW5fY2hhbm5lbCAtPiBpbl9jaGFubmVsXG5cbiAgdmFsIGNsb3NlX2luIDogaW5fY2hhbm5lbCAtPiB1bml0XG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaW5dIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cbiAgbGV0IG9wZW5faW5fZmlsZSBvcGVuX2luIGZuYW1lID1cbiAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgfCBcIi1cIiAtPiBzdGRpblxuICAgIHwgZm5hbWUgLT5cbiAgICAgIGxldCBpYyA9IG9wZW5faW4gZm5hbWUgaW5cbiAgICAgIGZyb21faWNfY2xvc2VfYXRfZW5kIChGcm9tX2ZpbGUgKGZuYW1lLCBpYykpIGljXG5cblxuICBsZXQgb3Blbl9pbiA9IG9wZW5faW5fZmlsZSBTdGRsaWIub3Blbl9pblxuICBsZXQgb3Blbl9pbl9iaW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5fYmluXG5cbiAgbGV0IGZyb21fZmlsZSA9IG9wZW5faW5cbiAgbGV0IGZyb21fZmlsZV9iaW4gPSBvcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2NoYW5uZWwgaWMgPVxuICAgIGZyb21faWNfcmFpc2VfYXRfZW5kIChGcm9tX2NoYW5uZWwgaWMpIGljXG5cblxuICBsZXQgY2xvc2VfaW4gaWIgPVxuICAgIG1hdGNoIGliLmljX2lucHV0X25hbWUgd2l0aFxuICAgIHwgRnJvbV9jaGFubmVsIGljIC0+XG4gICAgICBTdGRsaWIuY2xvc2VfaW4gaWNcbiAgICB8IEZyb21fZmlsZSAoX2ZuYW1lLCBpYykgLT4gU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2Z1bmN0aW9uIHwgRnJvbV9zdHJpbmcgLT4gKClcblxuZW5kXG5cblxuKCogRm9ybWF0dGVkIGlucHV0IGZ1bmN0aW9ucy4gKilcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHNjYW5uZXIgPVxuICAgICAoJ2EsIFNjYW5uaW5nLmluX2NoYW5uZWwsICdiLCAnYywgJ2EgLT4gJ2QsICdkKSBmb3JtYXQ2IC0+ICdjXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBzY2FubmVyX29wdCA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCBvcHRpb24sICdkKSBmb3JtYXQ2IC0+ICdjXG5cbigqIFJlcG9ydGluZyBlcnJvcnMuICopXG5leGNlcHRpb24gU2Nhbl9mYWlsdXJlIG9mIHN0cmluZ1xuXG5sZXQgYmFkX2lucHV0IHMgPSByYWlzZSAoU2Nhbl9mYWlsdXJlIHMpXG5cbmxldCBiYWRfaW5wdXRfZXNjYXBlIGMgPVxuICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaWxsZWdhbCBlc2NhcGUgY2hhcmFjdGVyICVDXCIgYylcblxuXG5sZXQgYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHRoZSBzcGVjaWZpZWQgbGVuZ3RoIHdhcyB0b28gc2hvcnQgZm9yIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgPVxuICBiYWRfaW5wdXRcbiAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICBcInNjYW5uaW5nIG9mICVzIGZhaWxlZDogXFxcbiAgICAgICAgcHJlbWF0dXJlIGVuZCBvZiBmaWxlIG9jY3VycmVkIGJlZm9yZSBlbmQgb2YgdG9rZW5cIlxuICAgICAgIG1lc3NhZ2UpXG5cblxubGV0IGJhZF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vIGRvdCBvciBleHBvbmVudCBwYXJ0IGZvdW5kIGluIGZsb2F0IHRva2VuXCJcblxuXG5sZXQgYmFkX2hleF9mbG9hdCAoKSA9XG4gIGJhZF9pbnB1dCBcIm5vdCBhIHZhbGlkIGZsb2F0IGluIGhleGFkZWNpbWFsIG5vdGF0aW9uXCJcblxuXG5sZXQgY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpID1cbiAgUHJpbnRmLnNwcmludGYgXCJsb29raW5nIGZvciAlQywgZm91bmQgJUNcIiBjIGNpXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpID1cbiAgYmFkX2lucHV0IChjaGFyYWN0ZXJfbWlzbWF0Y2hfZXJyIGMgY2kpXG5cblxubGV0IHJlYyBza2lwX3doaXRlcyBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIG5vdCAoU2Nhbm5pbmcuZW9mIGliKSB0aGVuIGJlZ2luXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgLT5cbiAgICAgIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliOyBza2lwX3doaXRlcyBpYlxuICAgIHwgXyAtPiAoKVxuICBlbmRcblxuXG4oKiBDaGVja2luZyB0aGF0IFtjXSBpcyBpbmRlZWQgaW4gdGhlIGlucHV0LCB0aGVuIHNraXBzIGl0LlxuICAgSW4gdGhpcyBjYXNlLCB0aGUgY2hhcmFjdGVyIFtjXSBoYXMgYmVlbiBleHBsaWNpdGx5IHNwZWNpZmllZCBpbiB0aGVcbiAgIGZvcm1hdCBhcyBiZWluZyBtYW5kYXRvcnkgaW4gdGhlIGlucHV0OyBoZW5jZSB3ZSBzaG91bGQgZmFpbCB3aXRoXG4gICBbRW5kX29mX2ZpbGVdIGluIGNhc2Ugb2YgZW5kX29mX2lucHV0LlxuICAgKFJlbWVtYmVyIHRoYXQgW1NjYW5fZmFpbHVyZV0gaXMgcmFpc2VkIG9ubHkgd2hlbiAod2UgY2FuIHByb3ZlIGJ5XG4gICBldmlkZW5jZSkgdGhhdCB0aGUgaW5wdXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZvcm1hdCBzdHJpbmcgZ2l2ZW4uIFdlIG11c3RcbiAgIHRodXMgZGlmZmVyZW50aWF0ZSBbRW5kX29mX2ZpbGVdIGFzIGFuIGVycm9yIGR1ZSB0byBsYWNrIG9mIGlucHV0LCBhbmRcbiAgIFtTY2FuX2ZhaWx1cmVdIHdoaWNoIGlzIGR1ZSB0byBwcm92YWJseSB3cm9uZyBpbnB1dC4gSSBhbSBub3Qgc3VyZSB0aGlzIGlzXG4gICB3b3J0aCB0aGUgYnVyZGVuOiBpdCBpcyBjb21wbGV4IGFuZCBzb21laG93IHN1YmxpbWluYWw7IHNob3VsZCBiZSBjbGVhcmVyXG4gICB0byBmYWlsIHdpdGggU2Nhbl9mYWlsdXJlIFwiTm90IGVub3VnaCBpbnB1dCB0byBjb21wbGV0ZSBzY2FubmluZ1wiISlcblxuICAgVGhhdCdzIHdoeSwgd2FpdGluZyBmb3IgYSBiZXR0ZXIgc29sdXRpb24sIHdlIHVzZSBjaGVja2VkX3BlZWtfY2hhciBoZXJlLlxuICAgV2UgYXJlIGFsc28gY2FyZWZ1bCB0byB0cmVhdCBcIlxcclxcblwiIGluIHRoZSBpbnB1dCBhcyBhbiBlbmQgb2YgbGluZSBtYXJrZXI6XG4gICBpdCBhbHdheXMgbWF0Y2hlcyBhICdcXG4nIHNwZWNpZmljYXRpb24gaW4gdGhlIGlucHV0IGZvcm1hdCBzdHJpbmcuICopXG5sZXQgcmVjIGNoZWNrX2NoYXIgaWIgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcgJyAtPiBza2lwX3doaXRlcyBpYlxuICB8ICdcXG4nIC0+IGNoZWNrX25ld2xpbmUgaWJcbiAgfCBjIC0+IGNoZWNrX3RoaXNfY2hhciBpYiBjXG5cbmFuZCBjaGVja190aGlzX2NoYXIgaWIgYyA9XG4gIGxldCBjaSA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGlmIGNpID0gYyB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliIGVsc2VcbiAgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuYW5kIGNoZWNrX25ld2xpbmUgaWIgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjaSB3aXRoXG4gIHwgJ1xcbicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgfCAnXFxyJyAtPiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgY2hlY2tfdGhpc19jaGFyIGliICdcXG4nXG4gIHwgXyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcbicgY2lcblxuXG4oKiBFeHRyYWN0aW5nIHRva2VucyBmcm9tIHRoZSBvdXRwdXQgdG9rZW4gYnVmZmVyLiAqKVxuXG5sZXQgdG9rZW5fY2hhciBpYiA9IChTY2FubmluZy50b2tlbiBpYikuWzBdXG5cbmxldCB0b2tlbl9zdHJpbmcgPSBTY2FubmluZy50b2tlblxuXG5sZXQgdG9rZW5fYm9vbCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLnRva2VuIGliIHdpdGhcbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgcyAtPiBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiaW52YWxpZCBib29sZWFuICclcydcIiBzKVxuXG5cbigqIFRoZSB0eXBlIG9mIGludGVnZXIgY29udmVyc2lvbnMuICopXG50eXBlIGludGVnZXJfY29udmVyc2lvbiA9XG4gIHwgQl9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGJpbmFyeSBjb252ZXJzaW9uICopXG4gIHwgRF9jb252ZXJzaW9uICgqIFNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBJX2NvbnZlcnNpb24gKCogU2lnbmVkIGludGVnZXIgY29udmVyc2lvbiAqKVxuICB8IE9fY29udmVyc2lvbiAoKiBVbnNpZ25lZCBvY3RhbCBjb252ZXJzaW9uICopXG4gIHwgVV9jb252ZXJzaW9uICgqIFVuc2lnbmVkIGRlY2ltYWwgY29udmVyc2lvbiAqKVxuICB8IFhfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBoZXhhZGVjaW1hbCBjb252ZXJzaW9uICopXG5cblxubGV0IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyID0gZnVuY3Rpb25cbiAgfCAnYicgLT4gQl9jb252ZXJzaW9uXG4gIHwgJ2QnIC0+IERfY29udmVyc2lvblxuICB8ICdpJyAtPiBJX2NvbnZlcnNpb25cbiAgfCAnbycgLT4gT19jb252ZXJzaW9uXG4gIHwgJ3UnIC0+IFVfY29udmVyc2lvblxuICB8ICd4JyB8ICdYJyAtPiBYX2NvbnZlcnNpb25cbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5cbigqIEV4dHJhY3QgYW4gaW50ZWdlciBsaXRlcmFsIHRva2VuLlxuICAgU2luY2UgdGhlIGZ1bmN0aW9ucyBTdGRsaWIuKmludCpfb2Zfc3RyaW5nIGRvIG5vdCBhY2NlcHQgYSBsZWFkaW5nICssXG4gICB3ZSBza2lwIGl0IGlmIG5lY2Vzc2FyeS4gKilcbmxldCB0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliID1cbiAgbGV0IHRvayA9XG4gICAgbWF0Y2ggY29udiB3aXRoXG4gICAgfCBEX2NvbnZlcnNpb24gfCBJX2NvbnZlcnNpb24gLT4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IFVfY29udmVyc2lvbiAtPiBcIjB1XCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgT19jb252ZXJzaW9uIC0+IFwiMG9cIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBYX2NvbnZlcnNpb24gLT4gXCIweFwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IEJfY29udmVyc2lvbiAtPiBcIjBiXCIgXiBTY2FubmluZy50b2tlbiBpYiBpblxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggdG9rIGluXG4gIGlmIGwgPSAwIHx8IHRvay5bMF0gPD4gJysnIHRoZW4gdG9rIGVsc2UgU3RyaW5nLnN1YiB0b2sgMSAobCAtIDEpXG5cblxuKCogQWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgbnVtYmVyIHJhaXNlIHRoZSBleGNlcHRpb25cbiAgIEZhaWx1cmUgd2hlbiB0aGUgY29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuXG4gICBUaGlzIGV4Y2VwdGlvbiBpcyB0aGVuIHRyYXBwZWQgaW4gW2tzY2FuZl0uICopXG5sZXQgdG9rZW5faW50IGNvbnYgaWIgPSBpbnRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG5sZXQgdG9rZW5fZmxvYXQgaWIgPSBmbG9hdF9vZl9zdHJpbmcgKFNjYW5uaW5nLnRva2VuIGliKVxuXG4oKiBUbyBzY2FuIG5hdGl2ZSBpbnRzLCBpbnQzMiBhbmQgaW50NjQgaW50ZWdlcnMuXG4gICBXZSBjYW5ub3QgYWNjZXNzIHRvIGNvbnZlcnNpb25zIHRvL2Zyb20gc3RyaW5ncyBmb3IgdGhvc2UgdHlwZXMsXG4gICBOYXRpdmVpbnQub2Zfc3RyaW5nLCBJbnQzMi5vZl9zdHJpbmcsIGFuZCBJbnQ2NC5vZl9zdHJpbmcsXG4gICBzaW5jZSB0aG9zZSBtb2R1bGVzIGFyZSBub3QgYXZhaWxhYmxlIHRvIFtTY2FuZl0uXG4gICBIb3dldmVyLCB3ZSBjYW4gYmluZCBhbmQgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHByaW1pdGl2ZXMgdGhhdCBhcmVcbiAgIGF2YWlsYWJsZSBpbiB0aGUgcnVudGltZS4gKilcbmV4dGVybmFsIG5hdGl2ZWludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gbmF0aXZlaW50XG4gID0gXCJjYW1sX25hdGl2ZWludF9vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnQzMl9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50NjRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG5cblxubGV0IHRva2VuX25hdGl2ZWludCBjb252IGliID0gbmF0aXZlaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQzMiBjb252IGliID0gaW50MzJfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxubGV0IHRva2VuX2ludDY0IGNvbnYgaWIgPSBpbnQ2NF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5cbigqIFNjYW5uaW5nIG51bWJlcnMuICopXG5cbigqIERpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc3VwcG9zZSB0aGF0IG9uZSBjaGFyYWN0ZXIgaGFzIGJlZW4gY2hlY2tlZCBhbmRcbiAgIGlzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZXR1cm4gYXQgZW5kIG9mIGZpbGUgd2l0aCB0aGUgY3VycmVudGx5IGZvdW5kXG4gICB0b2tlbiBzZWxlY3RlZC5cblxuICAgUHV0IGl0IGluIGFub3RoZXIgd2F5LCB0aGUgZGlnaXRzIHNjYW5uaW5nIGZ1bmN0aW9ucyBzY2FuIGZvciBhIHBvc3NpYmx5XG4gICBlbXB0eSBzZXF1ZW5jZSBvZiBkaWdpdHMsIChoZW5jZSwgYSBzdWNjZXNzZnVsIHNjYW5uaW5nIGZyb20gb25lIG9mIHRob3NlXG4gICBmdW5jdGlvbnMgZG9lcyBub3QgaW1wbHkgdGhhdCB0aGUgdG9rZW4gaXMgYSB3ZWxsLWZvcm1lZCBudW1iZXI6IHRvIGdldCBhXG4gICB0cnVlIG51bWJlciwgaXQgaXMgbWFuZGF0b3J5IHRvIGNoZWNrIHRoYXQgYXQgbGVhc3Qgb25lIHZhbGlkIGRpZ2l0IGlzXG4gICBhdmFpbGFibGUgYmVmb3JlIGNhbGxpbmcgb25lIG9mIHRoZSBkaWdpdCBzY2FubmluZyBmdW5jdGlvbnMpLiAqKVxuXG4oKiBUaGUgZGVjaW1hbCBjYXNlIGlzIHRyZWF0ZWQgZXNwZWNpYWxseSBmb3Igb3B0aW1pemF0aW9uIHB1cnBvc2VzLiAqKVxubGV0IHJlYyBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8ICdfJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxubGV0IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRlY2ltYWwgZGlnaXRzXCIgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXQgKFByaW50Zi5zcHJpbnRmIFwiY2hhcmFjdGVyICVDIGlzIG5vdCBhIGRlY2ltYWwgZGlnaXRcIiBjKVxuXG5cbigqIFRvIHNjYW4gbnVtYmVycyBmcm9tIG90aGVyIGJhc2VzLCB3ZSB1c2UgYSBwcmVkaWNhdGUgYXJndW1lbnQgdG9cbiAgIHNjYW4gZGlnaXRzLiAqKVxubGV0IHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fZGlnaXRzIHdpZHRoIGliID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgbWF0Y2ggYyB3aXRoXG4gICAgfCBjIHdoZW4gZGlnaXRwIGMgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgc2Nhbl9kaWdpdHMgd2lkdGggaWJcbiAgICB8ICdfJyAtPlxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCBfIC0+IHdpZHRoIGluXG4gIHNjYW5fZGlnaXRzIHdpZHRoIGliXG5cblxubGV0IHNjYW5fZGlnaXRfcGx1cyBiYXNpcyBkaWdpdHAgd2lkdGggaWIgPVxuICAoKiBFbnN1cmUgd2UgaGF2ZSBnb3QgZW5vdWdoIHdpZHRoIGxlZnQsXG4gICAgIGFuZCByZWFkIGF0IGxlYXN0IG9uZSBkaWdpdC4gKilcbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBkaWdpdHAgYyB0aGVuXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kaWdpdF9zdGFyIGRpZ2l0cCB3aWR0aCBpYlxuICBlbHNlXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSB2YWxpZCAlcyBkaWdpdFwiIGMgYmFzaXMpXG5cblxubGV0IGlzX2JpbmFyeV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICcxJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2JpbmFyeV9pbnQgPSBzY2FuX2RpZ2l0X3BsdXMgXCJiaW5hcnlcIiBpc19iaW5hcnlfZGlnaXRcblxubGV0IGlzX29jdGFsX2RpZ2l0ID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzcnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5fb2N0YWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwib2N0YWxcIiBpc19vY3RhbF9kaWdpdFxuXG5sZXQgaXNfaGV4YV9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG5cblxubGV0IHNjYW5faGV4YWRlY2ltYWxfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiaGV4YWRlY2ltYWxcIiBpc19oZXhhX2RpZ2l0XG5cbigqIFNjYW4gYSBkZWNpbWFsIGludGVnZXIuICopXG5sZXQgc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzXG5cbmxldCBzY2FuX3NpZ24gd2lkdGggaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcrJyAtPiBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGNcbiAgfCAnLScgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcblxuXG4oKiBTY2FuIGFuIHVuc2lnbmVkIGludGVnZXIgdGhhdCBjb3VsZCBiZSBnaXZlbiBpbiBhbnkgKGNvbW1vbikgYmFzaXMuXG4gICBJZiBkaWdpdHMgYXJlIHByZWZpeGVkIGJ5IG9uZSBvZiAweCwgMFgsIDBvLCBvciAwYiwgdGhlIG51bWJlciBpc1xuICAgYXNzdW1lZCB0byBiZSB3cml0dGVuIHJlc3BlY3RpdmVseSBpbiBoZXhhZGVjaW1hbCwgaGV4YWRlY2ltYWwsXG4gICBvY3RhbCwgb3IgYmluYXJ5LiAqKVxubGV0IHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIGJlZ2luIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnbycgLT4gc2Nhbl9vY3RhbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8ICdiJyAtPiBzY2FuX2JpbmFyeV9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgICB8IF8gLT4gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgZW5kXG4gIHwgXyAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfaW50IHdpZHRoIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIHNjYW5fdW5zaWduZWRfaW50IHdpZHRoIGliXG5cblxubGV0IHNjYW5faW50X2NvbnZlcnNpb24gY29udiB3aWR0aCBpYiA9XG4gIG1hdGNoIGNvbnYgd2l0aFxuICB8IEJfY29udmVyc2lvbiAtPiBzY2FuX2JpbmFyeV9pbnQgd2lkdGggaWJcbiAgfCBEX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IElfY29udmVyc2lvbiAtPiBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYlxuICB8IE9fY29udmVyc2lvbiAtPiBzY2FuX29jdGFsX2ludCB3aWR0aCBpYlxuICB8IFVfY29udmVyc2lvbiAtPiBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gIHwgWF9jb252ZXJzaW9uIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2Nhbm5pbmcgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKilcblxuKCogRnJhY3Rpb25hbCBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBjYW4gYmUgcmVkdWNlZCB0byAwIGRpZ2l0cy4gKilcbmxldCBzY2FuX2ZyYWN0aW9uYWxfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBFeHAgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICdlJyB8ICdFJyBhcyBjIC0+XG4gICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICB8IF8gLT4gd2lkdGhcblxuXG4oKiBTY2FuIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIChub3QgdXNpbmcgdGhlXG4gICBPQ2FtbCBsZXhpY2FsIGNvbnZlbnRpb24gc2luY2UgdGhlIGludGVnZXIgcGFydCBjYW4gYmUgZW1wdHkpOlxuICAgYW4gb3B0aW9uYWwgc2lnbiwgZm9sbG93ZWQgYnkgYSBwb3NzaWJseSBlbXB0eSBzZXF1ZW5jZSBvZiBkZWNpbWFsXG4gICBkaWdpdHMgKGUuZy4gLS4xKS4gKilcbmxldCBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciB3aWR0aCBpYlxuXG5cbigqXG4gICBGb3IgdGhlIHRpbWUgYmVpbmcgd2UgaGF2ZSAoYXMgZm91bmQgaW4gc2NhbmYubWxpKTpcbiAgIHRoZSBmaWVsZCB3aWR0aCBpcyBjb21wb3NlZCBvZiBhbiBvcHRpb25hbCBpbnRlZ2VyIGxpdGVyYWxcbiAgIGluZGljYXRpbmcgdGhlIG1heGltYWwgd2lkdGggb2YgdGhlIHRva2VuIHRvIHJlYWQuXG4gICBVbmZvcnR1bmF0ZWx5LCB0aGUgdHlwZS1jaGVja2VyIGxldCB0aGUgdXNlciB3cml0ZSBhbiBvcHRpb25hbCBwcmVjaXNpb24sXG4gICBzaW5jZSB0aGlzIGlzIHZhbGlkIGZvciBwcmludGYgZm9ybWF0IHN0cmluZ3MuXG5cbiAgIFRodXMsIHRoZSBuZXh0IHN0ZXAgZm9yIFNjYW5mIGlzIHRvIHN1cHBvcnQgYSBmdWxsIHdpZHRoIGFuZCBwcmVjaXNpb25cbiAgIGluZGljYXRpb24sIG1vcmUgb3IgbGVzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZm9yIHByaW50ZiwgcG9zc2libHkgZXh0ZW5kZWRcbiAgIHRvIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGEgW21heCwgbWluXSByYW5nZSBmb3IgdGhlIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkXG4gICBmb3Igc3RyaW5ncy4gU29tZXRoaW5nIGxpa2UgdGhlIGZvbGxvd2luZyBzcGVjIGZvciBzY2FuZi5tbGk6XG5cbiAgIFRoZSBvcHRpb25hbCBbd2lkdGhdIGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyB0aGUgbWF4aW1hbFxuICAgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuIEZvciBpbnN0YW5jZSwgWyU2ZF0gcmVhZHMgYW4gaW50ZWdlcixcbiAgIGhhdmluZyBhdCBtb3N0IDYgY2hhcmFjdGVycy5cblxuICAgVGhlIG9wdGlvbmFsIFtwcmVjaXNpb25dIGlzIGEgZG90IFsuXSBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyOlxuXG4gICAtIGluIHRoZSBmbG9hdGluZyBwb2ludCBudW1iZXIgY29udmVyc2lvbnMgKFslZl0sIFslZV0sIFslZ10sIFslRl0sIFslRV0sXG4gICBhbmQgWyVGXSBjb252ZXJzaW9ucywgdGhlIFtwcmVjaXNpb25dIGluZGljYXRlcyB0aGUgbWF4aW11bSBudW1iZXIgb2ZcbiAgIGRpZ2l0cyB0aGF0IG1heSBmb2xsb3cgdGhlIGRlY2ltYWwgcG9pbnQuIEZvciBpbnN0YW5jZSwgWyUuNGZdIHJlYWRzIGFcbiAgIFtmbG9hdF0gd2l0aCBhdCBtb3N0IDQgZnJhY3Rpb25hbCBkaWdpdHMsXG5cbiAgIC0gaW4gdGhlIHN0cmluZyBjb252ZXJzaW9ucyAoWyVzXSwgWyVTXSwgWyVcXFsgcmFuZ2UgXFxdXSksIGFuZCBpbiB0aGVcbiAgIGludGVnZXIgbnVtYmVyIGNvbnZlcnNpb25zIChbJWldLCBbJWRdLCBbJXVdLCBbJXhdLCBbJW9dLCBhbmQgdGhlaXJcbiAgIFtpbnQzMl0sIFtpbnQ2NF0sIGFuZCBbbmF0aXZlX2ludF0gY29ycmVzcG9uZGVudCksIHRoZSBbcHJlY2lzaW9uXVxuICAgaW5kaWNhdGVzIHRoZSByZXF1aXJlZCBtaW5pbXVtIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLFxuXG4gICAtIG9uIGFsbCBvdGhlciBjb252ZXJzaW9ucywgdGhlIHdpZHRoIGFuZCBwcmVjaXNpb24gc3BlY2lmeSB0aGUgW21heCwgbWluXVxuICAgcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZC5cbiopXG5sZXQgc2Nhbl9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX2ludGVnZXJfcGFydCB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCwgcHJlY2lzaW9uIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYikgaW5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuICB8IF8gLT5cbiAgICBzY2FuX2V4cG9uZW50X3BhcnQgd2lkdGggaWIsIHByZWNpc2lvblxuXG5cbmxldCBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBlcnJvciBzdHIgPVxuICBsZXQgbG93ZXJjYXNlIGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ0EnIC4uICdaJyAtPlxuICAgICAgY2hhcl9vZl9pbnQgKGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKyBpbnRfb2ZfY2hhciAnYScpXG4gICAgfCBfIC0+IGMgaW5cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCB3aWR0aCA9IHJlZiB3aWR0aCBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgbG93ZXJjYXNlIGMgPD4gbG93ZXJjYXNlIHN0ci5baV0gdGhlbiBlcnJvciAoKTtcbiAgICBpZiAhd2lkdGggPSAwIHRoZW4gZXJyb3IgKCk7XG4gICAgd2lkdGggOj0gU2Nhbm5pbmcuc3RvcmVfY2hhciAhd2lkdGggaWIgYztcbiAgZG9uZTtcbiAgIXdpZHRoXG5cblxubGV0IHNjYW5faGV4X2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gIHwgJzAnIGFzIGMgLT4gKFxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGxldCB3aWR0aCA9IGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJ4XCIgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgfCAnLicgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgfCBfIC0+IHNjYW5faGV4YWRlY2ltYWxfaW50IHdpZHRoIGliIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgICB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2hleGFkZWNpbWFsX2ludCBwcmVjaXNpb24gaWIpXG4gICAgICAgICAgKVxuICAgICAgICAgIHwgXyAtPiB3aWR0aCBpblxuICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgICAgfCAncCcgfCAnUCcgYXMgYyAtPlxuICAgICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgICAgICAgICB8IF8gLT4gd2lkdGhcbiAgKVxuICB8ICduJyB8ICdOJyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgYmFkX2hleF9mbG9hdCBcImFuXCJcbiAgfCAnaScgfCAnSScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJuZmluaXR5XCJcbiAgfCBfIC0+IGJhZF9oZXhfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJy4nIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgKCogVGhlIGVmZmVjdGl2ZSB3aWR0aCBhdmFpbGFibGUgZm9yIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXNcbiAgICAgICB0aGUgbWluaW11bSBvZiBkZWNsYXJlZCBwcmVjaXNpb24gYW5kIHdpZHRoIGxlZnQuICopXG4gICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgKCogQWZ0ZXIgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB3aXRoIFtwcmVjaXNpb25dIHByb3Zpc2lvbmFsIHdpZHRoLFxuICAgICAgIFt3aWR0aF9wcmVjaXNpb25dIGlzIGxlZnQuICopXG4gICAgbGV0IHdpZHRoX3ByZWNpc2lvbiA9IHNjYW5fZnJhY3Rpb25hbF9wYXJ0IHByZWNpc2lvbiBpYiBpblxuICAgICgqIEhlbmNlLCBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IHRvb2sgZXhhY3RseVxuICAgICAgIFtwcmVjaXNpb24gLSB3aWR0aF9wcmVjaXNpb25dIGNoYXJzLiAqKVxuICAgIGxldCBmcmFjX3dpZHRoID0gcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uIGluXG4gICAgKCogQW5kIG5ldyBwcm92aXNpb25hbCB3aWR0aCBpcyBbd2lkdGggLSB3aWR0aF9wcmVjaXNpb24uICopXG4gICAgbGV0IHdpZHRoID0gd2lkdGggLSBmcmFjX3dpZHRoIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgJ2UnIHwgJ0UnIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG5sZXQgc2Nhbl9jYW1sX2Zsb2F0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAneCcgfCAnWCcgYXMgYyAtPiAoXG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIGFzIGMgLT4gKFxuICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICApXG4gICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBiYWRfZmxvYXQgKCkgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICAgIG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgIHwgXyAtPiB3aWR0aFxuICAgIClcbiAgICB8IF8gLT5cbiAgICAgIHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYlxuICApXG4gIHwgJzEnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbigqIFNwZWNpYWwgY2FzZSBvZiBuYW4gYW5kIGluZmluaXR5OlxuICB8ICdpJyAtPlxuICB8ICduJyAtPlxuKilcbiAgfCBfIC0+IGJhZF9mbG9hdCAoKVxuXG5cbigqIFNjYW4gYSByZWd1bGFyIHN0cmluZzpcbiAgIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIGEgc3BhY2UsIGlmIG5vIHNjYW5uaW5nIGluZGljYXRpb24gaGFzIGJlZW4gZ2l2ZW47XG4gICBvdGhlcndpc2UsIHN0b3BzIHdoZW4gZW5jb3VudGVyaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzY2FubmluZ1xuICAgaW5kaWNhdGlvbiBbc3RwXS5cbiAgIEl0IGFsc28gc3RvcHMgYXQgZW5kIG9mIGZpbGUgb3Igd2hlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBoYXNcbiAgIGJlZW4gcmVhZC4gKilcbmxldCBzY2FuX3N0cmluZyBzdHAgd2lkdGggaWIgPVxuICBsZXQgcmVjIGxvb3Agd2lkdGggPVxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIG1hdGNoIHN0cCB3aXRoXG4gICAgICB8IFNvbWUgYycgd2hlbiBjID0gYycgLT4gU2Nhbm5pbmcuc2tpcF9jaGFyIHdpZHRoIGliXG4gICAgICB8IFNvbWUgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBsb29wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGluXG4gIGxvb3Agd2lkdGhcblxuXG4oKiBTY2FuIGEgY2hhcjogcGVlayBzdHJpY3RseSBvbmUgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCwgd2hhdHNvZXZlci4gKilcbmxldCBzY2FuX2NoYXIgd2lkdGggaWIgPVxuICAoKiBUaGUgY2FzZSB3aWR0aCA9IDAgY291bGQgbm90IGhhcHBlbiBoZXJlLCBzaW5jZSBpdCBpcyB0ZXN0ZWQgYmVmb3JlXG4gICAgIGNhbGxpbmcgc2Nhbl9jaGFyLCBpbiB0aGUgbWFpbiBzY2FubmluZyBmdW5jdGlvbi5cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIFwiYSBjaGFyYWN0ZXJcIiBlbHNlICopXG4gIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliKVxuXG5cbmxldCBjaGFyX2Zvcl9iYWNrc2xhc2ggPSBmdW5jdGlvblxuICB8ICduJyAtPiAnXFwwMTAnXG4gIHwgJ3InIC0+ICdcXDAxMydcbiAgfCAnYicgLT4gJ1xcMDA4J1xuICB8ICd0JyAtPiAnXFwwMDknXG4gIHwgYyAtPiBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVyLiAqKVxubGV0IGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID0gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuXG5sZXQgY2hhcl9mb3JfZGVjaW1hbF9jb2RlIGMwIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDEwMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMCArXG4gICAgIDEwICogZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMxICtcbiAgICAgICAgICBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzIgaW5cbiAgaWYgYyA8IDAgfHwgYyA+IDI1NSB0aGVuXG4gICAgYmFkX2lucHV0XG4gICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgIFwiYmFkIGNoYXJhY3RlciBkZWNpbWFsIGVuY29kaW5nIFxcXFwlYyVjJWNcIiBjMCBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogVGhlIGludGVnZXIgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgZmFjaWFsIHZhbHVlIG9mIGEgdmFsaWRcbiAgIGhleGFkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMgPVxuICBsZXQgZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgKCogQ291bGQgYWxzbyBiZTpcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICc5JyB0aGVuIGQgLSBpbnRfb2ZfY2hhciAnMCcgZWxzZVxuICAgIGlmIGQgPD0gaW50X29mX2NoYXIgJ0YnIHRoZW4gMTAgKyBkIC0gaW50X29mX2NoYXIgJ0EnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdmJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdhJyBlbHNlIGFzc2VydCBmYWxzZVxuICAqKVxuICBpZiBkID49IGludF9vZl9jaGFyICdhJyB0aGVuXG4gICAgZCAtIDg3ICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdhJyAqKSBlbHNlXG4gIGlmIGQgPj0gaW50X29mX2NoYXIgJ0EnIHRoZW5cbiAgICBkIC0gNTUgICgqIDEwICsgaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyAqKSBlbHNlXG4gICAgZCAtIGludF9vZl9jaGFyICcwJ1xuXG5cbmxldCBjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyID1cbiAgbGV0IGMgPVxuICAgIDE2ICogaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICBoZXhhZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmIFwiYmFkIGNoYXJhY3RlciBoZXhhZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlY1wiIGMxIGMyKSBlbHNlXG4gIGNoYXJfb2ZfaW50IGNcblxuXG4oKiBDYWxsZWQgaW4gcGFydGljdWxhciB3aGVuIGVuY291bnRlcmluZyAnXFxcXCcgYXMgc3RhcnRlciBvZiBhIGNoYXIuXG4gICBTdG9wcyBiZWZvcmUgdGhlIGNvcnJlc3BvbmRpbmcgJ1xcJycuICopXG5sZXQgY2hlY2tfbmV4dF9jaGFyIG1lc3NhZ2Ugd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiBiYWRfdG9rZW5fbGVuZ3RoIG1lc3NhZ2UgZWxzZVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiBiYWRfZW5kX29mX2lucHV0IG1lc3NhZ2UgZWxzZVxuICBjXG5cblxubGV0IGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciA9IGNoZWNrX25leHRfY2hhciBcImEgQ2hhclwiXG5sZXQgY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgPSBjaGVja19uZXh0X2NoYXIgXCJhIFN0cmluZ1wiXG5cbmxldCBzY2FuX2JhY2tzbGFzaF9jaGFyIHdpZHRoIGliID1cbiAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgfCAnXFxcXCcgfCAnXFwnJyB8ICdcXFwiJyB8ICduJyB8ICd0JyB8ICdiJyB8ICdyJyBhcyBjIC0+XG4gICAgU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgYXMgYyAtPiBjXG4gICAgICB8IGMgLT4gYmFkX2lucHV0X2VzY2FwZSBjIGluXG4gICAgbGV0IGMwID0gYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMilcbiAgfCAneCcgLT5cbiAgICBsZXQgZ2V0X2RpZ2l0ICgpID1cbiAgICAgIGxldCBjID0gU2Nhbm5pbmcubmV4dF9jaGFyIGliIGluXG4gICAgICBtYXRjaCBjIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMSA9IGdldF9kaWdpdCAoKSBpblxuICAgIGxldCBjMiA9IGdldF9kaWdpdCAoKSBpblxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgKHdpZHRoIC0gMikgaWIgKGNoYXJfZm9yX2hleGFkZWNpbWFsX2NvZGUgYzEgYzIpXG4gIHwgYyAtPlxuICAgIGJhZF9pbnB1dF9lc2NhcGUgY1xuXG5cbigqIFNjYW4gYSBjaGFyYWN0ZXIgKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2NhbWxfY2hhciB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBmaW5kX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgY1xuXG4gIGFuZCBmaW5kX2NoYXIgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxcXCcgLT5cbiAgICAgIGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpIGliKVxuICAgIHwgYyAtPlxuICAgICAgZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9jaGFyIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXCcnIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFwnJyBjIGluXG5cbiAgZmluZF9zdGFydCB3aWR0aFxuXG5cbigqIFNjYW4gYSBkZWxpbWl0ZWQgc3RyaW5nIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiA9XG5cbiAgbGV0IHJlYyBmaW5kX3N0YXJ0IHdpZHRoID1cbiAgICBtYXRjaCBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiB3aXRoXG4gICAgfCAnXFxcIicgLT4gZmluZF9zdG9wIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXFwiJyBjXG5cbiAgYW5kIGZpbmRfc3RvcCB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliXG4gICAgfCAnXFxcXCcgLT4gc2Nhbl9iYWNrc2xhc2ggKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgYyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYylcblxuICBhbmQgc2Nhbl9iYWNrc2xhc2ggd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXHInIC0+IHNraXBfbmV3bGluZSAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYilcblxuICBhbmQgc2tpcF9uZXdsaW5lIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxuJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiAnXFxyJylcblxuICBhbmQgc2tpcF9zcGFjZXMgd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICcgJyAtPiBza2lwX3NwYWNlcyAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBfIC0+IGZpbmRfc3RvcCB3aWR0aCBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgYm9vbGVhbiAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fYm9vbCBpYiA9XG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbGV0IG0gPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJ3QnIC0+IDRcbiAgICB8ICdmJyAtPiA1XG4gICAgfCBjIC0+XG4gICAgICBiYWRfaW5wdXRcbiAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwidGhlIGNoYXJhY3RlciAlQyBjYW5ub3Qgc3RhcnQgYSBib29sZWFuXCIgYykgaW5cbiAgc2Nhbl9zdHJpbmcgTm9uZSBtIGliXG5cblxuKCogU2NhbiBhIHN0cmluZyBjb250YWluaW5nIGVsZW1lbnRzIGluIGNoYXJfc2V0IGFuZCB0ZXJtaW5hdGVkIGJ5IHNjYW5faW5kaWNcbiAgIGlmIHByb3ZpZGVkLiAqKVxubGV0IHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgc2Nhbl9pbmRpYyB3aWR0aCBpYiA9XG4gIGxldCByZWMgc2Nhbl9jaGFycyBpIHN0cCA9XG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBpID4gMCAmJiBub3QgKFNjYW5uaW5nLmVvZiBpYikgJiZcbiAgICAgICBpc19pbl9jaGFyX3NldCBjaGFyX3NldCBjICYmXG4gICAgICAgaW50X29mX2NoYXIgYyA8PiBzdHAgdGhlblxuICAgICAgbGV0IF8gPSBTY2FubmluZy5zdG9yZV9jaGFyIG1heF9pbnQgaWIgYyBpblxuICAgICAgc2Nhbl9jaGFycyAoaSAtIDEpIHN0cCBpblxuICBtYXRjaCBzY2FuX2luZGljIHdpdGhcbiAgfCBOb25lIC0+IHNjYW5fY2hhcnMgd2lkdGggKC0xKTtcbiAgfCBTb21lIGMgLT5cbiAgICBzY2FuX2NoYXJzIHdpZHRoIChpbnRfb2ZfY2hhciBjKTtcbiAgICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlblxuICAgICAgbGV0IGNpID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgICBpZiBjID0gY2lcbiAgICAgIHRoZW4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWJcbiAgICAgIGVsc2UgY2hhcmFjdGVyX21pc21hdGNoIGMgY2lcblxuXG4oKiBUaGUgZ2xvYmFsIGVycm9yIHJlcG9ydCBmdW5jdGlvbiBmb3IgW1NjYW5mXS4gKilcbmxldCBzY2FuZl9iYWRfaW5wdXQgaWIgPSBmdW5jdGlvblxuICB8IFNjYW5fZmFpbHVyZSBzIHwgRmFpbHVyZSBzIC0+XG4gICAgbGV0IGkgPSBTY2FubmluZy5jaGFyX2NvdW50IGliIGluXG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcInNjYW5mOiBiYWQgaW5wdXQgYXQgY2hhciBudW1iZXIgJWk6ICVzXCIgaSBzKVxuICB8IHggLT4gcmFpc2UgeFxuXG5cbigqIEdldCB0aGUgY29udGVudCBvZiBhIGNvdW50ZXIgZnJvbSBhbiBpbnB1dCBidWZmZXIuICopXG5sZXQgZ2V0X2NvdW50ZXIgaWIgY291bnRlciA9XG4gIG1hdGNoIGNvdW50ZXIgd2l0aFxuICB8IExpbmVfY291bnRlciAtPiBTY2FubmluZy5saW5lX2NvdW50IGliXG4gIHwgQ2hhcl9jb3VudGVyIC0+IFNjYW5uaW5nLmNoYXJfY291bnQgaWJcbiAgfCBUb2tlbl9jb3VudGVyIC0+IFNjYW5uaW5nLnRva2VuX2NvdW50IGliXG5cblxuKCogQ29tcHV0ZSB0aGUgd2lkdGggb2YgYSBwYWRkaW5nIG9wdGlvbiAoc2VlIFwiJTQye1wiIGFuZCBcIiUxMjMoXCIpLiAqKVxubGV0IHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCA9IG1hdGNoIHBhZF9vcHQgd2l0aFxuICB8IE5vbmUgLT4gbWF4X2ludFxuICB8IFNvbWUgd2lkdGggLT4gd2lkdGhcblxuXG5sZXQgc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmcgPVxuICBpZiBmbXRpbmcgPSBFc2NhcGVkX3BlcmNlbnQgdGhlbiAnJScsIFwiXCIgZWxzZVxuICAgIGxldCBzdHIgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nIGluXG4gICAgbGV0IHN0cCA9IHN0ci5bMV0gaW5cbiAgICBsZXQgc3ViX3N0ciA9IFN0cmluZy5zdWIgc3RyIDIgKFN0cmluZy5sZW5ndGggc3RyIC0gMikgaW5cbiAgICBzdHAsIHN1Yl9zdHJcblxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogUmVhZGVyIG1hbmFnZW1lbnQgKilcblxuKCogQSBjYWxsIHRvIHRha2VfZm9ybWF0X3JlYWRlcnMgb24gYSBmb3JtYXQgaXMgZXZhbHVhdGVkIGludG8gZnVuY3Rpb25zXG4gICB0YWtpbmcgcmVhZGVycyBhcyBhcmd1bWVudHMgYW5kIGFnZ3JlZ2F0ZSB0aGVtIGludG8gYW4gaGV0ZXJvZ2VuZW91cyBsaXN0ICopXG4oKiBXaGVuIGFsbCByZWFkZXJzIGFyZSB0YWtlbiwgZmluYWxseSBwYXNzIHRoZSBsaXN0IG9mIHRoZSByZWFkZXJzIHRvIHRoZVxuICAgY29udGludWF0aW9uIGsuICopXG5sZXQgcmVjIHRha2VfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICBkID1cbmZ1biBrIGZtdCAtPiBtYXRjaCBmbXQgd2l0aFxuICB8IFJlYWRlciBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0XG4gIHwgQ2hhciByZXN0ICAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDYW1sX2NoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFN0cmluZyAoXywgcmVzdCkgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9zdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEludDMyIChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgTmF0aXZlaW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQ2NCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsb2F0IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQm9vbCAoXywgcmVzdCkgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBBbHBoYSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFRoZXRhIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRmx1c2ggcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmdfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENoYXJfbGl0ZXJhbCAoXywgcmVzdCkgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ3VzdG9tIChfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IFNjYW5fY2hhcl9zZXQgKF8sIF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9nZXRfY291bnRlciAoXywgcmVzdCkgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTY2FuX25leHRfY2hhciByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuXG4gIHwgRm9ybWF0dGluZ19saXQgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10LCBfKSksIHJlc3QpIC0+XG4gICAgICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXQgZm10IHJlc3QpXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuXG4gIHwgRm9ybWF0X2FyZyAoXywgXywgcmVzdCkgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGb3JtYXRfc3Vic3QgKF8sIGZtdHR5LCByZXN0KSAgICAtPlxuICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGVyYXNlX3JlbCAoc3ltbSBmbXR0eSkpIHJlc3RcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpICAgICAgICAtPiB0YWtlX2lnbm9yZWRfZm9ybWF0X3JlYWRlcnMgayBpZ24gcmVzdFxuXG4gIHwgRW5kX29mX2Zvcm1hdCAgICAgICAgICAgICAgICAgICAgLT4gayBOaWxcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gZm10dHkgY29taW5nIGZyb20gYSBGb3JtYXRfc3Vic3QgXCIlKC4uLiUpXCIuICopXG5hbmQgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBmbXR0eSAtPlxuICAgICAgKHksIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIHgsIGUsIGYpIGZtdCAtPiBkID1cbmZ1biBrIGZtdHR5IGZtdCAtPiBtYXRjaCBmbXR0eSB3aXRoXG4gIHwgUmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdCBmbXRcbiAgfCBDaGFyX3R5IHJlc3QgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgU3RyaW5nX3R5IHJlc3QgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludF90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQzMl90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEludDY0X3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGbG9hdF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQm9vbF90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFscGhhX3R5IHJlc3QgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBUaGV0YV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgQW55X3R5IHJlc3QgICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEZvcm1hdF9hcmdfdHkgKF8sIHJlc3QpICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBFbmRfb2ZfZm10dHkgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIGZtdFxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIHJlc3QpIC0+XG4gICAgbGV0IHR5ID0gdHJhbnMgKHN5bW0gdHkxKSB0eTIgaW5cbiAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgKGNvbmNhdF9mbXR0eSB0eSByZXN0KSBmbXRcblxuKCogVGFrZSByZWFkZXJzIGFzc29jaWF0ZWQgdG8gYW4gaWdub3JlZCBwYXJhbWV0ZXIuICopXG5hbmQgdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSB4IHkgYSBjIGQgZSBmIC5cbiAgICAoKGQsIGUpIGhldGVyX2xpc3QgLT4gZSkgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIHgsIHkpIGlnbm9yZWQgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBpZ24gZm10IC0+IG1hdGNoIGlnbiB3aXRoXG4gIHwgSWdub3JlZF9yZWFkZXIgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRcbiAgfCBJZ25vcmVkX2NoYXIgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfY2hhciAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3N0cmluZyBfICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIF8gICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludCAoXywgXykgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDMyIChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX25hdGl2ZWludCAoXywgXykgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2ludDY0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zsb2F0IChfLCBfKSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Jvb2wgXyAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9hcmcgXyAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCAoXywgZm10dHkpIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayBmbXR0eSBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fY2hhcl9zZXQgXyAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgXyAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBJZ25vcmVkX3NjYW5fbmV4dF9jaGFyICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCogR2VuZXJpYyBzY2FubmluZyAqKVxuXG4oKiBNYWtlIGEgZ2VuZXJpYyBzY2FubmluZyBmdW5jdGlvbi4gKilcbigqIFNjYW4gYSBzdHJlYW0gYWNjb3JkaW5nIHRvIGEgZm9ybWF0IGFuZCByZWFkZXJzIG9idGFpbmVkIGJ5XG4gICB0YWtlX2Zvcm1hdF9yZWFkZXJzLCBhbmQgYWdncmVnYXRlIHNjYW5uZWQgdmFsdWVzIGludG8gYW5cbiAgIGhldGVyb2dlbmVvdXMgbGlzdC4gKilcbigqIFJldHVybiB0aGUgaGV0ZXJvZ2VuZW91cyBsaXN0IG9mIHNjYW5uZWQgdmFsdWVzLiAqKVxubGV0IHJlYyBtYWtlX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoYSwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBDaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgQ2FtbF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9jaGFyIDAgaWIgaW5cbiAgICBsZXQgYyA9IHRva2VuX2NoYXIgaWIgaW5cbiAgICBDb25zIChjLCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcblxuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lIHN0cCkgd2lkdGggaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCBGb3JtYXR0aW5nX2dlbiAoT3Blbl90YWcgKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9zdHJpbmcgKFNvbWUgJ3snKSB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW5cbiAgICAgICAgICAgICAgICAgICB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICdbJykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIE5vbmUgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9jYW1sX3N0cmluZyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fc3RyaW5nXG4gIHwgSW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQgYylcbiAgfCBJbnQzMiAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50MzIgYylcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX25hdGl2ZWludCBjKVxuICB8IEludDY0IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9pbnQ2NCBjKVxuICB8IEZsb2F0ICgoXywgKEZsb2F0X0YgfCBGbG9hdF9DRikpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fY2FtbF9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2YgfCBGbG9hdF9lIHwgRmxvYXRfRSB8IEZsb2F0X2cgfCBGbG9hdF9HKSksXG4gICAgICAgICAgIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9mbG9hdCB0b2tlbl9mbG9hdFxuICB8IEZsb2F0ICgoXywgKEZsb2F0X2ggfCBGbG9hdF9IKSksIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2Nhbl9oZXhfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBCb29sIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gXyBfIGliID0gc2Nhbl9ib29sIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9ib29sXG4gIHwgQWxwaGEgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlYVxcXCJcIlxuICB8IFRoZXRhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJXRcXFwiXCJcbiAgfCBDdXN0b20gXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlP1xcXCIgKGN1c3RvbSBjb252ZXJ0ZXIpXCJcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBiZWdpbiBtYXRjaCByZWFkZXJzIHdpdGhcbiAgICB8IENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSAtPlxuICAgICAgICBsZXQgeCA9IHJlYWRlciBpYiBpblxuICAgICAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdF9yZXN0IHJlYWRlcnNfcmVzdClcbiAgICB8IE5pbCAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBtaXNzaW5nIHJlYWRlclwiXG4gICAgZW5kXG4gIHwgRmx1c2ggcmVzdCAtPlxuICAgIGlmIFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gICAgZWxzZSBiYWRfaW5wdXQgXCJlbmQgb2YgaW5wdXQgbm90IGZvdW5kXCJcblxuICB8IFN0cmluZ19saXRlcmFsIChzdHIsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIHN0cjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgY2hyO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG5cbiAgfCBGb3JtYXRfYXJnIChwYWRfb3B0LCBmbXR0eSwgcmVzdCkgLT5cbiAgICBsZXQgXyA9IHNjYW5fY2FtbF9zdHJpbmcgKHdpZHRoX29mX3BhZF9vcHQgcGFkX29wdCkgaWIgaW5cbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQgPVxuICAgICAgdHJ5IGZvcm1hdF9vZl9zdHJpbmdfZm10dHkgcyBmbXR0eVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChmbXQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10LCBmbXQnID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgIGxldCBGbXRfRUJCIGZtdCcgPSBmbXRfZWJiX29mX3N0cmluZyBzIGluXG4gICAgICAgICgqIFRPRE86IGZpbmQgYSB3YXkgdG8gYXZvaWQgcmVwYXJzaW5nIHR3aWNlICopXG5cbiAgICAgICAgKCogVE9ETzogdGhlc2UgdHlwZS1jaGVja3MgYmVsb3cgKmNhbiogZmFpbCBiZWNhdXNlIG9mIHR5cGVcbiAgICAgICAgICAgYW1iaWd1aXR5IGluIHByZXNlbmNlIG9mIGlnbm9yZWQtcmVhZGVyczogXCIlX3IlZFwiIGFuZCBcIiVkJV9yXCJcbiAgICAgICAgICAgYXJlIHR5cGVkIGluIHRoZSBzYW1lIHdheS5cblxuICAgICAgICAgICAjIFNjYW5mLnNzY2FuZiBcIlxcXCIlX3IlZFxcXCIzXCIgXCIlKCVkJV9yJSlcIiBpZ25vcmVcbiAgICAgICAgICAgICAoZnVuIGZtdCBuIC0+IHN0cmluZ19vZl9mb3JtYXQgZm10LCBuKVxuICAgICAgICAgICBFeGNlcHRpb246IENhbWxpbnRlcm5hbEZvcm1hdC5UeXBlX21pc21hdGNoLlxuXG4gICAgICAgICAgIFdlIHNob3VsZCBwcm9wZXJseSBjYXRjaCB0aGlzIGV4Y2VwdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10IChlcmFzZV9yZWwgZm10dHkpLFxuICAgICAgICB0eXBlX2Zvcm1hdCBmbXQnIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKVxuICAgICAgd2l0aCBGYWlsdXJlIG1zZyAtPiBiYWRfaW5wdXQgbXNnXG4gICAgaW5cbiAgICBDb25zIChGb3JtYXQgKGZtdCwgcyksXG4gICAgICAgICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMpXG5cbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBGb3JtYXR0aW5nX2xpdCAoZm10aW5nX2xpdCwgcmVzdCkpIC0+XG4gICAgbGV0IHN0cCwgc3RyID0gc3RvcHBlcl9vZl9mb3JtYXR0aW5nX2xpdCBmbXRpbmdfbGl0IGluXG4gICAgbGV0IHdpZHRoID0gd2lkdGhfb2ZfcGFkX29wdCB3aWR0aF9vcHQgaW5cbiAgICBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IChTb21lIHN0cCkgd2lkdGggaWI7XG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgc3RyX3Jlc3QgPSBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgc3RyX3Jlc3QgcmVhZGVycylcbiAgfCBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCByZXN0KSAtPlxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCBOb25lIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgQ29ucyAocywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9nZXRfY291bnRlciAoY291bnRlciwgcmVzdCkgLT5cbiAgICBsZXQgY291bnQgPSBnZXRfY291bnRlciBpYiBjb3VudGVyIGluXG4gICAgQ29ucyAoY291bnQsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fbmV4dF9jaGFyIHJlc3QgLT5cbiAgICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBGb3JtYXR0aW5nX2xpdCAoZm9ybWF0dGluZ19saXQsIHJlc3QpIC0+XG4gICAgU3RyaW5nLml0ZXIgKGNoZWNrX2NoYXIgaWIpIChzdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgZm9ybWF0dGluZ19saXQpO1xuICAgIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAneyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcbiAgfCBGb3JtYXR0aW5nX2dlbiAoT3Blbl9ib3ggKEZvcm1hdCAoZm10JywgXykpLCByZXN0KSAtPlxuICAgIGNoZWNrX2NoYXIgaWIgJ0AnOyBjaGVja19jaGFyIGliICdbJztcbiAgICBtYWtlX3NjYW5mIGliIChjb25jYXRfZm10IGZtdCcgcmVzdCkgcmVhZGVyc1xuXG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAtPlxuICAgIGxldCBQYXJhbV9mb3JtYXRfRUJCIGZtdCcgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQgaWduIHJlc3QgaW5cbiAgICBiZWdpbiBtYXRjaCBtYWtlX3NjYW5mIGliIGZtdCcgcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChfLCBhcmdfcmVzdCkgLT4gYXJnX3Jlc3RcbiAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICBlbmRcblxuICB8IEVuZF9vZl9mb3JtYXQgLT5cbiAgICBOaWxcblxuKCogQ2FzZSBhbmFseXNpcyBvbiBwYWRkaW5nIGFuZCBwcmVjaXNpb24uICopXG4oKiBSZWplY3QgZm9ybWF0cyBjb250YWluaW5nIFwiJSpcIiBvciBcIiUuKlwiLiAqKVxuKCogUGFzcyBwYWRkaW5nIGFuZCBwcmVjaXNpb24gdG8gdGhlIGdlbmVyaWMgc2Nhbm5lciBgc2NhbicuICopXG5hbmQgcGFkX3ByZWNfc2NhbmYgOiB0eXBlIGEgYyBkIGUgZiB4IHkgeiB0IC5cbiAgICBTY2FubmluZy5pbl9jaGFubmVsIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCBlLCBmKSBmbXQgLT5cbiAgICAgIChkLCBlKSBoZXRlcl9saXN0IC0+ICh4LCB5KSBwYWRkaW5nIC0+ICh5LCB6IC0+IGEpIHByZWNpc2lvbiAtPlxuICAgICAgKGludCAtPiBpbnQgLT4gU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiB0KSAtPlxuICAgICAgKFNjYW5uaW5nLmluX2NoYW5uZWwgLT4geikgLT5cbiAgICAgICh4LCBmKSBoZXRlcl9saXN0ID1cbmZ1biBpYiBmbXQgcmVhZGVycyBwYWQgcHJlYyBzY2FuIHRva2VuIC0+IG1hdGNoIHBhZCwgcHJlYyB3aXRoXG4gIHwgTm9fcGFkZGluZywgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIG1heF9pbnQgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IE5vX3BhZGRpbmcsIExpdF9wcmVjaXNpb24gcCAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IHAgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTm9fcHJlY2lzaW9uIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgbWF4X2ludCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIHcpLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gdyBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKExlZnQsIF8pLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUtXFxcIlwiXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgXyksIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcbiAgfCBBcmdfcGFkZGluZyBfLCBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgTm9fcGFkZGluZywgQXJnX3ByZWNpc2lvbiAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgKCogRGVmaW5pbmcgW3NjYW5mXSBhbmQgdmFyaW91cyBmbGF2b3JzIG9mIFtzY2FuZl0gKilcblxubGV0IGtzY2FuZl9nZW4gaWIgZWYgYWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycyB3aXRoXG4gICAgfCBleGNlcHRpb24gKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUgYXMgZXhjKSAtPlxuICAgICAgICBlZiBpYiBleGNcbiAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyAobXNnIF4gXCIgaW4gZm9ybWF0IFxcXCJcIiBeIFN0cmluZy5lc2NhcGVkIHN0ciBeIFwiXFxcIlwiKVxuICAgIHwgYXJncyAtPlxuICAgICAgICBhZiAoYXBwbHkgZiBhcmdzKVxuICBpblxuICB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbmxldCBrc2NhbmYgaWIgZWYgZm10ID1cbiAga3NjYW5mX2dlbiBpYiBlZiAoZnVuIHggLT4geCkgZm10XG5cbmxldCBrc2NhbmZfb3B0IGliIGZtdCA9XG4gIGtzY2FuZl9nZW4gaWIgKGZ1biBfIF8gLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeCkgZm10XG5cbigqKiopXG5cbmxldCBrYnNjYW5mID0ga3NjYW5mXG5sZXQgYnNjYW5mIGliIGZtdCA9IGtic2NhbmYgaWIgc2NhbmZfYmFkX2lucHV0IGZtdFxubGV0IGJzY2FuZl9vcHQgaWIgZm10ID0ga3NjYW5mX29wdCBpYiBmbXRcblxubGV0IGtzc2NhbmYgcyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBlZiBmbXRcbmxldCBzc2NhbmYgcyBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5mcm9tX3N0cmluZyBzKSBzY2FuZl9iYWRfaW5wdXQgZm10XG5sZXQgc3NjYW5mX29wdCBzIGZtdCA9IGtzY2FuZl9vcHQgKFNjYW5uaW5nLmZyb21fc3RyaW5nIHMpIGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGluIHNjYW5mX2JhZF9pbnB1dCBmbXRcbmxldCBzY2FuZl9vcHQgZm10ID0ga3NjYW5mX29wdCBTY2FubmluZy5zdGRpbiBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIE9ialxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChtYWdpYyAoKSA6IGl0ZW0pXG5cbigqKioqIFR5cGVzICoqKiopXG5cbnR5cGUgdGFnXG50eXBlIGxhYmVsID0gaW50XG50eXBlIGNsb3N1cmUgPSBpdGVtXG50eXBlIHQgPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbnR5cGUgb2JqID0gdCBhcnJheVxuZXh0ZXJuYWwgcmV0IDogKG9iaiAtPiAnYSkgLT4gY2xvc3VyZSA9IFwiJWlkZW50aXR5XCJcblxuKCoqKiogTGFiZWxzICoqKiopXG5cbmxldCBwdWJsaWNfbWV0aG9kX2xhYmVsIHMgOiB0YWcgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbGV0IHRhZyA9IGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1IGluXG4gICgqIFByaW50Zi5lcHJpbnRmIFwiJXMgPSAlZFxcblwiIHMgdGFnOyBmbHVzaCBzdGRlcnI7ICopXG4gIG1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBvYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gbWFnaWMgbGVuO1xuICBtZXRob2RzLigxKSA8LSBtYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIG1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IG1hZ2ljIDAgdGhlbiBbXSBlbHNlIEFycmF5LnRvX2xpc3QgYXJyXG5cbmxldCBuYXJyb3cgdGFibGUgdmFycyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzID1cbiAgbGV0IHZhcnMgPSB0b19saXN0IHZhcnNcbiAgYW5kIHZpcnRfbWV0aHMgPSB0b19saXN0IHZpcnRfbWV0aHNcbiAgYW5kIGNvbmNyX21ldGhzID0gdG9fbGlzdCBjb25jcl9tZXRocyBpblxuICBsZXQgdmlydF9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgdmlydF9tZXRocyBpblxuICBsZXQgY29uY3JfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIGNvbmNyX21ldGhzIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LVxuICAgICAodGFibGUubWV0aG9kc19ieV9uYW1lLCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsLCB0YWJsZS5oaWRkZW5fbWV0aHMsXG4gICAgICB0YWJsZS52YXJzLCB2aXJ0X21ldGhfbGFicywgdmFycylcbiAgICAgOjogdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgVmFycy5mb2xkXG4gICAgICAoZnVuIGxhYiBpbmZvIHR2YXJzIC0+XG4gICAgICAgIGlmIExpc3QubWVtIGxhYiB2YXJzIHRoZW4gVmFycy5hZGQgbGFiIGluZm8gdHZhcnMgZWxzZSB0dmFycylcbiAgICAgIHRhYmxlLnZhcnMgVmFycy5lbXB0eTtcbiAgbGV0IGJ5X25hbWUgPSByZWYgTWV0aHMuZW1wdHkgaW5cbiAgbGV0IGJ5X2xhYmVsID0gcmVmIExhYnMuZW1wdHkgaW5cbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9XG4gICAgICAgICAgTGFicy5hZGQgbGFiZWxcbiAgICAgICAgICAgICh0cnkgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZSlcbiAgICAgICAgICAgICFieV9sYWJlbClcbiAgICBjb25jcl9tZXRocyBjb25jcl9tZXRoX2xhYnM7XG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PSBMYWJzLmFkZCBsYWJlbCBmYWxzZSAhYnlfbGFiZWwpXG4gICAgdmlydF9tZXRocyB2aXJ0X21ldGhfbGFicztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtICFieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtICFieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRoX2xhYnMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgW11cblxubGV0IHdpZGVuIHRhYmxlID1cbiAgbGV0IChieV9uYW1lLCBieV9sYWJlbCwgc2F2ZWRfaGlkZGVuX21ldGhzLCBzYXZlZF92YXJzLCB2aXJ0X21ldGhzLCB2YXJzKSA9XG4gICAgTGlzdC5oZCB0YWJsZS5wcmV2aW91c19zdGF0ZXNcbiAgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtIExpc3QudGwgdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBzIHYgLT4gVmFycy5hZGQgdiAoVmFycy5maW5kIHYgdGFibGUudmFycykgcylcbiAgICAgICBzYXZlZF92YXJzIHZhcnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIGJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIHNhdmVkX2hpZGRlbl9tZXRoc1xuXG5sZXQgbmV3X3Nsb3QgdGFibGUgPVxuICBsZXQgaW5kZXggPSB0YWJsZS5zaXplIGluXG4gIHRhYmxlLnNpemUgPC0gaW5kZXggKyAxO1xuICBpbmRleFxuXG5sZXQgbmV3X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFyc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBpbmRleCA9IG5ld19zbG90IHRhYmxlIGluXG4gICAgaWYgbmFtZSA8PiBcIlwiIHRoZW4gdGFibGUudmFycyA8LSBWYXJzLmFkZCBuYW1lIGluZGV4IHRhYmxlLnZhcnM7XG4gICAgaW5kZXhcblxubGV0IHRvX2FycmF5IGFyciA9XG4gIGlmIGFyciA9IE9iai5tYWdpYyAwIHRoZW4gW3x8XSBlbHNlIGFyclxuXG5sZXQgbmV3X21ldGhvZHNfdmFyaWFibGVzIHRhYmxlIG1ldGhzIHZhbHMgPVxuICBsZXQgbWV0aHMgPSB0b19hcnJheSBtZXRocyBpblxuICBsZXQgbm1ldGhzID0gQXJyYXkubGVuZ3RoIG1ldGhzIGFuZCBudmFscyA9IEFycmF5Lmxlbmd0aCB2YWxzIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChubWV0aHMgKyBudmFscykgMCBpblxuICBmb3IgaSA9IDAgdG8gbm1ldGhzIC0gMSBkb1xuICAgIHJlcy4oaSkgPC0gZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBtZXRocy4oaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG52YWxzIC0gMSBkb1xuICAgIHJlcy4oaStubWV0aHMpIDwtIG5ld192YXJpYWJsZSB0YWJsZSB2YWxzLihpKVxuICBkb25lO1xuICByZXNcblxubGV0IGdldF92YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnMgd2l0aCBOb3RfZm91bmQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBnZXRfdmFyaWFibGVzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfdmFyaWFibGUgdGFibGUpIG5hbWVzXG5cbmxldCBhZGRfaW5pdGlhbGl6ZXIgdGFibGUgZiA9XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBmOjp0YWJsZS5pbml0aWFsaXplcnNcblxuKCpcbm1vZHVsZSBLZXlzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHRhZyBhcnJheSBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxubGV0IGtleV9tYXAgPSByZWYgS2V5cy5lbXB0eVxubGV0IGdldF9rZXkgdGFncyA6IGl0ZW0gPVxuICB0cnkgbWFnaWMgKEtleXMuZmluZCB0YWdzICFrZXlfbWFwIDogdGFnIGFycmF5KVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGtleV9tYXAgOj0gS2V5cy5hZGQgdGFncyB0YWdzICFrZXlfbWFwO1xuICAgIG1hZ2ljIHRhZ3NcbiopXG5cbmxldCBjcmVhdGVfdGFibGUgcHVibGljX21ldGhvZHMgPVxuICBpZiBwdWJsaWNfbWV0aG9kcyA9PSBtYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCByZXByIGluaXQgfF07XG4gICAgIG1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gcmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplXG4gICAgdGhlbiBuIGVsc2UgbmV3X21ldGhvZCB0YWJsZVxuICBpblxuICB0YWJsZS5tZXRob2RzLihuKSA8LSBPYmoubWFnaWMgMDtcbiAgblxuXG50eXBlIGltcGwgPVxuICAgIEdldENvbnN0XG4gIHwgR2V0VmFyXG4gIHwgR2V0RW52XG4gIHwgR2V0TWV0aFxuICB8IFNldFZhclxuICB8IEFwcENvbnN0XG4gIHwgQXBwVmFyXG4gIHwgQXBwRW52XG4gIHwgQXBwTWV0aFxuICB8IEFwcENvbnN0Q29uc3RcbiAgfCBBcHBDb25zdFZhclxuICB8IEFwcENvbnN0RW52XG4gIHwgQXBwQ29uc3RNZXRoXG4gIHwgQXBwVmFyQ29uc3RcbiAgfCBBcHBFbnZDb25zdFxuICB8IEFwcE1ldGhDb25zdFxuICB8IE1ldGhBcHBDb25zdFxuICB8IE1ldGhBcHBWYXJcbiAgfCBNZXRoQXBwRW52XG4gIHwgTWV0aEFwcE1ldGhcbiAgfCBTZW5kQ29uc3RcbiAgfCBTZW5kVmFyXG4gIHwgU2VuZEVudlxuICB8IFNlbmRNZXRoXG4gIHwgQ2xvc3VyZSBvZiBjbG9zdXJlXG5cbmxldCBtZXRob2RfaW1wbCB0YWJsZSBpIGFyciA9XG4gIGxldCBuZXh0ICgpID0gaW5jciBpOyBtYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBtYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgU2VlZGVkUyA9IHNpZ1xuXG4gIHR5cGUga2V5XG4gIHR5cGUgISdhIHRcbiAgdmFsIGNyZWF0ZSA6ID9yYW5kb20gKCp0aHdhcnQgdG9vbHMvc3luY19zdGRsaWJfZG9jcyopIDogYm9vbCAtPiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcblxuICB0eXBlIGtleVxuICB0eXBlICEnYSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgdFxuICB2YWwgY2xlYXIgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2FcbiAgdmFsIGZpbmRfb3B0IDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2FsbCA6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgdmFsIHJlcGxhY2UgOiAnYSB0IC0+IGtleSAtPiAnYSAtPiB1bml0XG4gIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgc3RhdHMgOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICB2YWwgYWRkX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgdmFsIGNsZWFuOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHN0YXRzX2FsaXZlOiAnYSB0IC0+IEhhc2h0Ymwuc3RhdGlzdGljc1xuICAgICgqKiBzYW1lIGFzIHshc3RhdHN9IGJ1dCBvbmx5IGNvdW50IHRoZSBhbGl2ZSBiaW5kaW5ncyAqKVxuZW5kXG5cbm1vZHVsZSBHZW5IYXNoVGFibGUgPSBzdHJ1Y3RcblxuICB0eXBlIGVxdWFsID1cbiAgfCBFVHJ1ZSB8IEVGYWxzZVxuICB8IEVEZWFkICgqKiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgcmVjbGFpbWVkIHRoZSBkYXRhICopXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQoSDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSAnYSBjb250YWluZXJcbiAgICB2YWwgY3JlYXRlOiB0IC0+ICdhIC0+ICdhIGNvbnRhaW5lclxuICAgIHZhbCBzZWVkZWRfaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBzZXRfa2V5X2RhdGE6ICdhIGNvbnRhaW5lciAtPiB0IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgY2hlY2tfa2V5OiAnYSBjb250YWluZXIgLT4gYm9vbFxuICBlbmQpIDogU2VlZGVkUyB3aXRoIHR5cGUga2V5ID0gSC50XG4gID0gc3RydWN0XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHNpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBudW1iZXIgb2YgZW50cmllcyAqKVxuICAgICAgICBtdXRhYmxlIGRhdGE6ICdhIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgICAgICBzZWVkOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgICAgICBpbml0aWFsX3NpemU6IGludDsgICAgICAgICAgICAgICAgICAoKiBpbml0aWFsIGFycmF5IHNpemUgKilcbiAgICAgIH1cblxuICAgIGFuZCAnYSBidWNrZXRsaXN0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBDb25zIG9mIGludCAoKiBoYXNoIG9mIHRoZSBrZXkgKikgKiAnYSBILmNvbnRhaW5lciAqICdhIGJ1Y2tldGxpc3RcblxuICAgICgqKiB0aGUgaGFzaCBvZiB0aGUga2V5IGlzIGtlcHQgaW4gb3JkZXIgdG8gdGVzdCB0aGUgZXF1YWxpdHkgb2YgdGhlIGhhc2hcbiAgICAgIGJlZm9yZSB0aGUga2V5LiBTYW1lIHJlYXNvbiBhcyBmb3IgV2Vhay5NYWtlICopXG5cbiAgICB0eXBlIGtleSA9IEgudFxuXG4gICAgbGV0IHJlYyBwb3dlcl8yX2Fib3ZlIHggbiA9XG4gICAgICBpZiB4ID49IG4gdGhlbiB4XG4gICAgICBlbHNlIGlmIHggKiAyID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiB4XG4gICAgICBlbHNlIHBvd2VyXzJfYWJvdmUgKHggKiAyKSBuXG5cbiAgICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4gICAgbGV0IGNyZWF0ZSA/KHJhbmRvbSA9IChIYXNodGJsLmlzX3JhbmRvbWl6ZWQgKCkpKSBpbml0aWFsX3NpemUgPVxuICAgICAgbGV0IHMgPSBwb3dlcl8yX2Fib3ZlIDE2IGluaXRpYWxfc2l6ZSBpblxuICAgICAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgICAgIHsgaW5pdGlhbF9zaXplID0gczsgc2l6ZSA9IDA7IHNlZWQgPSBzZWVkOyBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5IH1cblxuICAgIGxldCBjbGVhciBoID1cbiAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGguZGF0YS4oaSkgPC0gRW1wdHlcbiAgICAgIGRvbmVcblxuICAgIGxldCByZXNldCBoID1cbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBpZiBsZW4gPSBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgICAgIGNsZWFyIGhcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgaC5zaXplIDwtIDA7XG4gICAgICAgIGguZGF0YSA8LSBBcnJheS5tYWtlIGguaW5pdGlhbF9zaXplIEVtcHR5XG4gICAgICBlbmRcblxuICAgIGxldCBjb3B5IGggPSB7IGggd2l0aCBkYXRhID0gQXJyYXkuY29weSBoLmRhdGEgfVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGhrZXkgPVxuICAgICAgaGtleSBsYW5kIChBcnJheS5sZW5ndGggaC5kYXRhIC0gMSlcblxuICAgIGxldCBjbGVhbiBoID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgICAgRW1wdHlcbiAgICAgICAgfCBDb25zKF8sIGMsIHJlc3QpIHdoZW4gbm90IChILmNoZWNrX2tleSBjKSAtPlxuICAgICAgICAgICAgaC5zaXplIDwtIGguc2l6ZSAtIDE7XG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICB8IENvbnMoaGtleSwgYywgcmVzdCkgLT5cbiAgICAgICAgICAgIENvbnMoaGtleSwgYywgZG9fYnVja2V0IHJlc3QpXG4gICAgICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgZC4oaSkgPC0gZG9fYnVja2V0IGQuKGkpXG4gICAgICBkb25lXG5cbiAgICAoKiogcmVzaXplIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRvIGRvIHRoZSBhY3R1YWwgY2xlYW5pbmcgb2YgZGVhZCBrZXlzXG4gICAgICAgIChyZW1vdmUgZG9lcyBpdCBqdXN0IGJlY2F1c2UgaXQgY291bGQpLlxuXG4gICAgICAgIFRoZSBnb2FsIGlzIHRvOlxuXG4gICAgICAgIC0gbm90IHJlc2l6ZSBpbmZpbml0ZWx5IHdoZW4gdGhlIGFjdHVhbCBudW1iZXIgb2YgYWxpdmUga2V5cyBpc1xuICAgICAgICBib3VuZGVkIGJ1dCBrZXlzIGFyZSBjb250aW51b3VzbHkgYWRkZWQuIFRoYXQgd291bGQgaGFwcGVuIGlmXG4gICAgICAgIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJlc2l6ZS5cbiAgICAgICAgLSBub3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGFmdGVyIGVhY2ggYWRkaXRpb24sIHRoYXQgd291bGQgaGFwcGVuIGlmIHRoaXNcbiAgICAgICAgZnVuY3Rpb24gZG9uJ3QgcmVzaXplIGV2ZW4gd2hlbiBvbmx5IG9uZSBrZXkgaXMgZGVhZC5cblxuICAgICAgICBTbyB0aGUgYWxnb3JpdGhtOlxuICAgICAgICAtIGNsZWFuIHRoZSBrZXlzIGJlZm9yZSByZXNpemluZ1xuICAgICAgICAtIGlmIHRoZSBudW1iZXIgb2YgcmVtYWluaW5nIGtleXMgaXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNpemUgb2YgdGhlXG4gICAgICAgIGFycmF5LCBkb24ndCByZXNpemUuXG4gICAgICAgIC0gaWYgaXQgaXMgbW9yZSwgcmVzaXplLlxuXG4gICAgICAgIFRoZSBzZWNvbmQgcHJvYmxlbSByZW1haW5zIGlmIHRoZSB0YWJsZSByZWFjaGVzIHshU3lzLm1heF9hcnJheV9sZW5ndGh9LlxuXG4gICAgKilcbiAgICBsZXQgcmVzaXplIGggPVxuICAgICAgbGV0IG9kYXRhID0gaC5kYXRhIGluXG4gICAgICBsZXQgb3NpemUgPSBBcnJheS5sZW5ndGggb2RhdGEgaW5cbiAgICAgIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICAgICAgY2xlYW4gaDtcbiAgICAgIGlmIG5zaXplIDwgU3lzLm1heF9hcnJheV9sZW5ndGggJiYgaC5zaXplID49IG9zaXplIGxzciAxIHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5kYXRhID0gQXJyYXkubWFrZSBuc2l6ZSBFbXB0eSBpblxuICAgICAgICBoLmRhdGEgPC0gbmRhdGE7ICAgICAgICgqIHNvIHRoYXQga2V5X2luZGV4IHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICAgICAgbGV0IHJlYyBpbnNlcnRfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICAgICAgfCBDb25zKGhrZXksIGRhdGEsIHJlc3QpIC0+XG4gICAgICAgICAgICAgIGluc2VydF9idWNrZXQgcmVzdDsgKCogcHJlc2VydmUgb3JpZ2luYWwgb3JkZXIgb2YgZWxlbWVudHMgKilcbiAgICAgICAgICAgICAgbGV0IG5pZHggPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICAgICAgICAgIG5kYXRhLihuaWR4KSA8LSBDb25zKGhrZXksIGRhdGEsIG5kYXRhLihuaWR4KSkgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIG9zaXplIC0gMSBkb1xuICAgICAgICAgIGluc2VydF9idWNrZXQgb2RhdGEuKGkpXG4gICAgICAgIGRvbmVcbiAgICAgIGVuZFxuXG4gICAgbGV0IGFkZCBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZW1vdmVfYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gaC5zaXplIDwtIGguc2l6ZSAtIDE7IG5leHRcbiAgICAgICAgICAgIHwgRUZhbHNlIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dClcbiAgICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgICAoKiBUaGUgZGVhZCBrZXkgaXMgYXV0b21hdGljYWxseSByZW1vdmVkLiBJdCBpcyBhY2NlcHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIGZ1bmN0aW9uIHNpbmNlIGl0IGFscmVhZHkgcmVtb3ZlcyBhIGJpbmRpbmcgKilcbiAgICAgICAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICAgICAgICByZW1vdmVfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoaGssYyxuZXh0KSAtPiBDb25zKGhrLCBjLCByZW1vdmVfYnVja2V0IG5leHQpIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gcmVtb3ZlX2J1Y2tldCBoLmRhdGEuKGkpXG5cbiAgICAoKiogeyFmaW5kfSBkb24ndCByZW1vdmUgZGVhZCBrZXlzIGJlY2F1c2UgaXQgd291bGQgYmUgc3VycHJpc2luZyBmb3JcbiAgICAgICAgdGhlIHVzZXIgdGhhdCBhIHJlYWQtb25seSBmdW5jdGlvbiBtdXRhdGVzIHRoZSBzdGF0ZSAoZWcuIGNvbmN1cnJlbnRcbiAgICAgICAgYWNjZXNzKS4gU2FtZSBmb3IgeyFtZW19LlxuICAgICopXG4gICAgbGV0IHJlYyBmaW5kX3JlYyBrZXkgaGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfcmVjIGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kIGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjIGtleSBoa2V5IChoLmRhdGEuKGtleV9pbmRleCBoIGhrZXkpKVxuXG4gICAgbGV0IHJlYyBmaW5kX3JlY19vcHQga2V5IGhrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT5cbiAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmRfb3B0IGgga2V5ID1cbiAgICAgIGxldCBoa2V5ID0gSC5zZWVkZWRfaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBmaW5kX2luX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IFtdXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBmaW5kX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGQ6OmZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICB8IEVEZWFkIC0+XG4gICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICBlbmRcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPlxuICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3QgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBILnNldF9rZXlfZGF0YSBjIGtleSBpbmZvXG4gICAgICAgICAgICB8IEVGYWxzZSB8IEVEZWFkIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgICAgICAgIGVuZFxuICAgICAgICB8IENvbnMoXyxfLG5leHQpIC0+IHJlcGxhY2VfYnVja2V0IG5leHRcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBsID0gaC5kYXRhLihpKSBpblxuICAgICAgdHJ5XG4gICAgICAgIHJlcGxhY2VfYnVja2V0IGxcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgICBoLmRhdGEuKGkpIDwtIENvbnMoaGtleSwgY29udGFpbmVyLCBsKTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguc2VlZGVkX2hhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleSAodDooJ2ssJ2QpIHQpIChrOidrKSA6IHVuaXQgPSBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhIHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG5cbiAgbGV0IG1ha2Uga2V5IGRhdGEgPVxuICAgIGxldCBlcGggPSBjcmVhdGUgKCkgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBzZXRfa2V5IGVwaCBrZXk7XG4gICAgZXBoXG5cbiAgbGV0IHF1ZXJ5IGVwaCBrZXkgPVxuICAgIG1hdGNoIGdldF9rZXkgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkgLT4gZ2V0X2RhdGEgZXBoXG4gICAgfCBTb21lIF8gLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnRcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoID0gSC5zZWVkZWRfaGFzaFxuICAgICAgbGV0IGVxdWFsIGMgayA9XG4gICAgICAgICgqIHshZ2V0X2tleV9jb3B5fSBpcyBub3QgdXNlZCBiZWNhdXNlIHRoZSBlcXVhbGl0eSBvZiB0aGUgdXNlciBjYW4gYmVcbiAgICAgICAgICAgIHRoZSBwaHlzaWNhbCBlcXVhbGl0eSAqKVxuICAgICAgICBtYXRjaCBnZXRfa2V5IGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gR2VuSGFzaFRhYmxlLkVEZWFkXG4gICAgICAgIHwgU29tZSBrJyAtPlxuICAgICAgICAgICAgaWYgSC5lcXVhbCBrIGsnIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkgYyBrO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgPSBjaGVja19rZXlcbiAgICBlbmQpXG5cbiAgbW9kdWxlIE1ha2UoSDogSGFzaHRibC5IYXNoZWRUeXBlKTogKFMgd2l0aCB0eXBlIGtleSA9IEgudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWQoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEgudFxuICAgICAgICBsZXQgZXF1YWwgPSBILmVxdWFsXG4gICAgICAgIGxldCBzZWVkZWRfaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4gIG1vZHVsZSBCdWNrZXQgPSBzdHJ1Y3RcblxuICAgIHR5cGUgbm9ucmVjICgnaywgJ2QpIHQgPSAoJ2ssICdkKSB0IGxpc3QgcmVmXG4gICAgbGV0IGsxX21ha2UgPSBtYWtlXG4gICAgbGV0IG1ha2UgKCkgPSByZWYgW11cbiAgICBsZXQgYWRkIGIgayBkID0gYiA6PSBrMV9tYWtlIGsgZCA6OiAhYlxuXG4gICAgbGV0IHRlc3Rfa2V5IGsgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5IGUgd2l0aFxuICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5IGsgaCAtPiBiIDo9IExpc3QucmV2X2FwcGVuZCBhY2MgdFxuICAgICAgICB8IGggOjogdCAtPiBsb29wIHQgKGggOjogYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3AgIWIgW11cblxuICAgIGxldCBmaW5kIGIgayA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRfb3B0ICh0ZXN0X2tleSBrKSAhYiB3aXRoXG4gICAgICB8IFNvbWUgZSAtPiBnZXRfZGF0YSBlXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuXG4gICAgbGV0IGxlbmd0aCBiID0gTGlzdC5sZW5ndGggIWJcbiAgICBsZXQgY2xlYXIgYiA9IGIgOj0gW11cblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBLMiA9IHN0cnVjdFxuICB0eXBlICgnazEsICdrMiwgJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2sxLCdrMiwnZCkgdCA9IE9iakVwaC5jcmVhdGUgMlxuXG4gIGxldCBnZXRfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazEgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMFxuXG4gIGxldCBnZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgOiAnazIgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAxKVxuICBsZXQgc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMikgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDEgKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignazEsJ2syLCdkKSB0KSAoZDonZCkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXkxIGtleTIgZGF0YSA9XG4gICAgbGV0IGVwaCA9IGNyZWF0ZSAoKSBpblxuICAgIHNldF9kYXRhIGVwaCBkYXRhO1xuICAgIHNldF9rZXkxIGVwaCBrZXkxO1xuICAgIHNldF9rZXkyIGVwaCBrZXkyO1xuICAgIGlnbm9yZSAoU3lzLm9wYXF1ZV9pZGVudGl0eSBrZXkxKTtcbiAgICBlcGhcblxuICBsZXQgcXVlcnkgZXBoIGtleTEga2V5MiA9XG4gICAgbWF0Y2ggZ2V0X2tleTEgZXBoIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkxIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGdldF9rZXkyIGVwaCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrIHdoZW4gayA9PSBrZXkyIC0+IGdldF9kYXRhIGVwaFxuICAgICAgICB8IFNvbWUgXyAtPiBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBfIC0+IE5vbmVcblxuICBtb2R1bGUgTWFrZVNlZWRlZFxuICAgICAgKEgxOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSlcbiAgICAgIChIMjpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgxLnQsSDIudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSDEudCAqIEgyLnRcbiAgICAgIGxldCBjcmVhdGUgKGsxLGsyKSBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgc2V0X2RhdGEgYyBkO1xuICAgICAgICBzZXRfa2V5MSBjIGsxOyBzZXRfa2V5MiBjIGsyO1xuICAgICAgICBjXG4gICAgICBsZXQgc2VlZGVkX2hhc2ggc2VlZCAoazEsazIpID1cbiAgICAgICAgSDEuc2VlZGVkX2hhc2ggc2VlZCBrMSArIEgyLnNlZWRlZF9oYXNoIHNlZWQgazIgKiA2NTU5OVxuICAgICAgbGV0IGVxdWFsIGMgKGsxLGsyKSA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsxJywgU29tZSBrMicgLT5cbiAgICAgICAgICAgIGlmIEgxLmVxdWFsIGsxIGsxJyAmJiBIMi5lcXVhbCBrMiBrMidcbiAgICAgICAgICAgIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlIGVsc2UgR2VuSGFzaFRhYmxlLkVGYWxzZVxuICAgICAgbGV0IGdldF9kYXRhID0gZ2V0X2RhdGFcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyAoazEsazIpIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIHNldF9kYXRhIGMgZFxuICAgICAgbGV0IGNoZWNrX2tleSBjID0gY2hlY2tfa2V5MSBjICYmIGNoZWNrX2tleTIgY1xuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIMTogSGFzaHRibC5IYXNoZWRUeXBlKShIMjogSGFzaHRibC5IYXNoZWRUeXBlKTpcbiAgICAoUyB3aXRoIHR5cGUga2V5ID0gSDEudCAqIEgyLnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBIMS50XG4gICAgICAgICAgbGV0IGVxdWFsID0gSDEuZXF1YWxcbiAgICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBIMS5oYXNoIHhcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gSDIudFxuICAgICAgICAgIGxldCBlcXVhbCA9IEgyLmVxdWFsXG4gICAgICAgICAgbGV0IHNlZWRlZF9oYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbiAgbW9kdWxlIEJ1Y2tldCA9IHN0cnVjdFxuXG4gICAgdHlwZSBub25yZWMgKCdrMSwgJ2syLCAnZCkgdCA9ICgnazEsICdrMiwgJ2QpIHQgbGlzdCByZWZcbiAgICBsZXQgazJfbWFrZSA9IG1ha2VcbiAgICBsZXQgbWFrZSAoKSA9IHJlZiBbXVxuICAgIGxldCBhZGQgYiBrMSBrMiBkID0gYiA6PSBrMl9tYWtlIGsxIGsyIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgazEgazIgZSA9XG4gICAgICBtYXRjaCBnZXRfa2V5MSBlLCBnZXRfa2V5MiBlIHdpdGhcbiAgICAgIHwgU29tZSB4MSwgU29tZSB4MiB3aGVuIHgxID09IGsxICYmIHgyID09IGsyIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZVxuXG4gICAgbGV0IHJlbW92ZSBiIGsxIGsyID1cbiAgICAgIGxldCByZWMgbG9vcCBsIGFjYyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgaCA6OiB0IHdoZW4gdGVzdF9rZXlzIGsxIGsyIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsxIGsyID1cbiAgICAgIG1hdGNoIExpc3QuZmluZF9vcHQgKHRlc3Rfa2V5cyBrMSBrMikgIWIgd2l0aFxuICAgICAgfCBTb21lIGUgLT4gZ2V0X2RhdGEgZVxuICAgICAgfCBOb25lIC0+IE5vbmVcblxuICAgIGxldCBsZW5ndGggYiA9IExpc3QubGVuZ3RoICFiXG4gICAgbGV0IGNsZWFyIGIgPSBiIDo9IFtdXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBzZXRfa2V5ICh0OignaywnZCkgdCkgKG46aW50KSAoazonaykgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IG4gKE9iai5yZXByIGspXG4gIGxldCBjaGVja19rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCBuXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcblxuICBsZXQgbWFrZSBrZXlzIGRhdGEgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGtleXMgaW5cbiAgICBsZXQgZXBoID0gY3JlYXRlIGwgaW5cbiAgICBzZXRfZGF0YSBlcGggZGF0YTtcbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gc2V0X2tleSBlcGggaSBrZXlzLihpKSBkb25lO1xuICAgIGVwaFxuXG4gIGxldCBxdWVyeSBlcGgga2V5cyA9XG4gICAgbGV0IGwgPSBsZW5ndGggZXBoIGluXG4gICAgdHJ5XG4gICAgICBpZiBsIDw+IEFycmF5Lmxlbmd0aCBrZXlzIHRoZW4gcmFpc2UgRXhpdDtcbiAgICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgICBtYXRjaCBnZXRfa2V5IGVwaCBpIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgfCBTb21lIGsgd2hlbiBrID09IGtleXMuKGkpIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIC0+IHJhaXNlIEV4aXRcbiAgICAgIGRvbmU7XG4gICAgICBnZXRfZGF0YSBlcGhcbiAgICB3aXRoIEV4aXQgLT4gTm9uZVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkIChIOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSC50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBILnQgYXJyYXlcbiAgICAgIGxldCBjcmVhdGUgayBkID1cbiAgICAgICAgbGV0IGMgPSBjcmVhdGUgKEFycmF5Lmxlbmd0aCBrKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgY1xuICAgICAgbGV0IHNlZWRlZF9oYXNoIHNlZWQgayA9XG4gICAgICAgIGxldCBoID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIGggOj0gSC5zZWVkZWRfaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIGsgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBzZXRfZGF0YSBjIGRcbiAgICAgIGxldCBjaGVja19rZXkgYyA9XG4gICAgICAgIGxldCByZWMgY2hlY2sgYyBpID1cbiAgICAgICAgICBpIDwgMCB8fCAoY2hlY2tfa2V5IGMgaSAmJiBjaGVjayBjIChpLTEpKSBpblxuICAgICAgICBjaGVjayBjIChsZW5ndGggYyAtIDEpXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQgYXJyYXkpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgc2VlZGVkX2hhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcblxuICBtb2R1bGUgQnVja2V0ID0gc3RydWN0XG5cbiAgICB0eXBlIG5vbnJlYyAoJ2ssICdkKSB0ID0gKCdrLCAnZCkgdCBsaXN0IHJlZlxuICAgIGxldCBrbl9tYWtlID0gbWFrZVxuICAgIGxldCBtYWtlICgpID0gcmVmIFtdXG4gICAgbGV0IGFkZCBiIGsgZCA9IGIgOj0ga25fbWFrZSBrIGQgOjogIWJcblxuICAgIGxldCB0ZXN0X2tleXMgayBlID1cbiAgICAgIHRyeVxuICAgICAgICBpZiBsZW5ndGggZSA8PiBBcnJheS5sZW5ndGggayB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggayAtIDEgZG9cbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGUgaSB3aXRoXG4gICAgICAgICAgfCBTb21lIHggd2hlbiB4ID09IGsuKGkpIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCBFeGl0IC0+IGZhbHNlXG5cbiAgICBsZXQgcmVtb3ZlIGIgayA9XG4gICAgICBsZXQgcmVjIGxvb3AgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGggOjogdCB3aGVuIHRlc3Rfa2V5cyBrIGggLT4gYiA6PSBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgfCBoIDo6IHQgLT4gbG9vcCB0IChoIDo6IGFjYylcbiAgICAgIGluXG4gICAgICBsb29wICFiIFtdXG5cbiAgICBsZXQgZmluZCBiIGsgPVxuICAgICAgbWF0Y2ggTGlzdC5maW5kX29wdCAodGVzdF9rZXlzIGspICFiIHdpdGhcbiAgICAgIHwgU29tZSBlIC0+IGdldF9kYXRhIGVcbiAgICAgIHwgTm9uZSAtPiBOb25lXG5cbiAgICBsZXQgbGVuZ3RoIGIgPSBMaXN0Lmxlbmd0aCAhYlxuICAgIGxldCBjbGVhciBiID0gYiA6PSBbXVxuXG4gIGVuZFxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBYYXZpZXIgTGVyb3kgYW5kIERhbWllbiBEb2xpZ2V6LCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGdlbmVyaWNfcXVvdGUgcXVvdGVxdW90ZSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBpZiBzLltpXSA9ICdcXCcnXG4gICAgdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIHF1b3RlcXVvdGVcbiAgICBlbHNlIEJ1ZmZlci5hZGRfY2hhciBiICBzLltpXVxuICBkb25lO1xuICBCdWZmZXIuYWRkX2NoYXIgYiAnXFwnJztcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1sxXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Jhc2VuYW1lLmh0bWxcbiAgSW4gc3RlcCAxIG9mIFtbMV1dLCB3ZSBjaG9vc2UgdG8gcmV0dXJuIFwiLlwiIGZvciBlbXB0eSBpbnB1dC5cbiAgICAoZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBPQ2FtbClcbiAgSW4gc3RlcCAyLCB3ZSBjaG9vc2UgdG8gcHJvY2VzcyBcIi8vXCIgbm9ybWFsbHkuXG4gIFN0ZXAgNiBpcyBub3QgaW1wbGVtZW50ZWQ6IHdlIGNvbnNpZGVyIHRoYXQgdGhlIFtzdWZmaXhdIG9wZXJhbmQgaXNcbiAgICBhbHdheXMgYWJzZW50LiAgU3VmZml4ZXMgYXJlIGhhbmRsZWQgYnkgW2Nob3Bfc3VmZml4XSBhbmQgW2Nob3BfZXh0ZW5zaW9uXS5cbiopXG5sZXQgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgbmFtZSA9XG4gIGxldCByZWMgZmluZF9lbmQgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGZpbmRfZW5kIChuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIG4gKG4gKyAxKVxuICBhbmQgZmluZF9iZWcgbiBwID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIHBcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gU3RyaW5nLnN1YiBuYW1lIChuICsgMSkgKHAgLSBuIC0gMSlcbiAgICBlbHNlIGZpbmRfYmVnIChuIC0gMSkgcFxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSBmaW5kX2VuZCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gMSlcblxuKCogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBPcGVuIEdyb3VwIHNwZWNpZmljYXRpb24gZm91bmQgaGVyZTpcbiAgW1syXV0gaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvdXRpbGl0aWVzL2Rpcm5hbWUuaHRtbFxuICBJbiBzdGVwIDYgb2YgW1syXV0sIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiopXG5sZXQgZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyB0cmFpbGluZ19zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIHRyYWlsaW5nX3NlcCAobiAtIDEpXG4gICAgZWxzZSBiYXNlIG5cbiAgYW5kIGJhc2UgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgblxuICAgIGVsc2UgYmFzZSAobiAtIDEpXG4gIGFuZCBpbnRlcm1lZGlhdGVfc2VwIG4gPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgMVxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBpbnRlcm1lZGlhdGVfc2VwIChuIC0gMSlcbiAgICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChuICsgMSlcbiAgaW5cbiAgaWYgbmFtZSA9IFwiXCJcbiAgdGhlbiBjdXJyZW50X2Rpcl9uYW1lXG4gIGVsc2UgdHJhaWxpbmdfc2VwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5tb2R1bGUgdHlwZSBTWVNERVBTID0gc2lnXG4gIHZhbCBudWxsIDogc3RyaW5nXG4gIHZhbCBjdXJyZW50X2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBwYXJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIGRpcl9zZXAgOiBzdHJpbmdcbiAgdmFsIGlzX2Rpcl9zZXAgOiBzdHJpbmcgLT4gaW50IC0+IGJvb2xcbiAgdmFsIGlzX3JlbGF0aXZlIDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGlzX2ltcGxpY2l0IDogc3RyaW5nIC0+IGJvb2xcbiAgdmFsIGNoZWNrX3N1ZmZpeCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hvcF9zdWZmaXhfb3B0IDogc3VmZml4OnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvblxuICB2YWwgdGVtcF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBxdW90ZV9jb21tYW5kIDpcbiAgICBzdHJpbmcgLT4gP3N0ZGluOiBzdHJpbmcgLT4gP3N0ZG91dDogc3RyaW5nIC0+ID9zdGRlcnI6IHN0cmluZ1xuICAgICAgICAgICAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbiAgdmFsIGJhc2VuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuICB2YWwgZGlybmFtZSA6IHN0cmluZyAtPiBzdHJpbmdcbmVuZFxuXG5tb2R1bGUgVW5peCA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIi9kZXYvbnVsbFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiL1wiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IHMuW2ldID0gJy8nXG4gIGxldCBpc19yZWxhdGl2ZSBuID0gU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLydcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgICBTdHJpbmcuZW5kc193aXRoIH5zdWZmaXg6c3VmZiBuYW1lXG5cbiAgbGV0IGNob3Bfc3VmZml4X29wdCB+c3VmZml4IGZpbGVuYW1lID1cbiAgICBsZXQgbGVuX3MgPSBTdHJpbmcubGVuZ3RoIHN1ZmZpeCBhbmQgbGVuX2YgPSBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lIGluXG4gICAgaWYgbGVuX2YgPj0gbGVuX3MgdGhlblxuICAgICAgbGV0IHIgPSBTdHJpbmcuc3ViIGZpbGVuYW1lIChsZW5fZiAtIGxlbl9zKSBsZW5fcyBpblxuICAgICAgaWYgciA9IHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbiAgbGV0IHRlbXBfZGlyX25hbWUgPVxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiVE1QRElSXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIvdG1wXCJcbiAgbGV0IHF1b3RlID0gZ2VuZXJpY19xdW90ZSBcIidcXFxcJydcIlxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBxdW90ZSAoY21kIDo6IGFyZ3MpKVxuICAgIF4gKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZSBmKVxuICAgIF4gKG1hdGNoIHN0ZGVyciB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gXCIgMj4mMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZSBmKVxuICBsZXQgYmFzZW5hbWUgPSBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuICBsZXQgZGlybmFtZSA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbmVuZFxuXG5tb2R1bGUgV2luMzIgOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCJOVUxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIlxcXFxcIlxuICBsZXQgaXNfZGlyX3NlcCBzIGkgPSBsZXQgYyA9IHMuW2ldIGluIGMgPSAnLycgfHwgYyA9ICdcXFxcJyB8fCBjID0gJzonXG4gIGxldCBpc19yZWxhdGl2ZSBuID1cbiAgICAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnLycpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDEgfHwgbi5bMF0gPD4gJ1xcXFwnKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IG4uWzFdIDw+ICc6JylcbiAgbGV0IGlzX2ltcGxpY2l0IG4gPVxuICAgIGlzX3JlbGF0aXZlIG5cbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMiB8fCBTdHJpbmcuc3ViIG4gMCAyIDw+IFwiLlxcXFxcIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi4vXCIpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDMgfHwgU3RyaW5nLnN1YiBuIDAgMyA8PiBcIi4uXFxcXFwiKVxuICBsZXQgY2hlY2tfc3VmZml4IG5hbWUgc3VmZiA9XG4gICBTdHJpbmcubGVuZ3RoIG5hbWUgPj0gU3RyaW5nLmxlbmd0aCBzdWZmICYmXG4gICAobGV0IHMgPSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIFN0cmluZy5sZW5ndGggc3VmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RyaW5nLmxlbmd0aCBzdWZmKSBpblxuICAgIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgcyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZilcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHIgPSBTdHJpbmcubG93ZXJjYXNlX2FzY2lpIHN1ZmZpeCB0aGVuXG4gICAgICAgIFNvbWUgKFN0cmluZy5zdWIgZmlsZW5hbWUgMCAobGVuX2YgLSBsZW5fcykpXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBOb25lXG5cblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJURU1QXCIgd2l0aCBOb3RfZm91bmQgLT4gXCIuXCJcbiAgbGV0IHF1b3RlIHMgPVxuICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChsICsgMjApIGluXG4gICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInO1xuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBsIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ1xcXCInIC0+IGxvb3BfYnMgMCBpO1xuICAgICAgfCAnXFxcXCcgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8IGMgICAgLT4gQnVmZmVyLmFkZF9jaGFyIGIgYzsgbG9vcCAoaSsxKTtcbiAgICBhbmQgbG9vcF9icyBuIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBiZWdpblxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgICAgIGFkZF9icyBuO1xuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICdcXFwiJyAtPiBhZGRfYnMgKDIqbisxKTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXCInOyBsb29wIChpKzEpO1xuICAgICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIChuKzEpIChpKzEpO1xuICAgICAgICB8IF8gICAgLT4gYWRkX2JzIG47IGxvb3AgaVxuICAgICAgZW5kXG4gICAgYW5kIGFkZF9icyBuID0gZm9yIF9qID0gMSB0byBuIGRvIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJzsgZG9uZVxuICAgIGluXG4gICAgbG9vcCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBiXG4oKlxuUXVvdGluZyBjb21tYW5kcyBmb3IgZXhlY3V0aW9uIGJ5IGNtZC5leGUgaXMgZGlmZmljdWx0LlxuMS0gRWFjaCBhcmd1bWVudCBpcyBmaXJzdCBxdW90ZWQgdXNpbmcgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZSwgdG9cbiAgIHByb3RlY3QgaXQgYWdhaW5zdCB0aGUgcHJvY2Vzc2luZyBwZXJmb3JtZWQgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sXG4gICB0aGVuIGNtZC5leGUncyBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCAnXicsIHVzaW5nXG4gICB0aGUgXCJxdW90ZV9jbWRcIiBmdW5jdGlvbiBiZWxvdy4gIEZvciBtb3JlIGRldGFpbHMsIHNlZVxuICAgaHR0cHM6Ly9ibG9ncy5tc2RuLm1pY3Jvc29mdC5jb20vdHdpc3R5bGl0dGxlcGFzc2FnZXNhbGxhbGlrZS8yMDExLzA0LzIzXG4yLSBUaGUgY29tbWFuZCBhbmQgdGhlIHJlZGlyZWN0aW9uIGZpbGVzLCBpZiBhbnksIG11c3QgYmUgZG91YmxlLXF1b3RlZFxuICAgaW4gY2FzZSB0aGV5IGNvbnRhaW4gc3BhY2VzLiAgVGhpcyBxdW90aW5nIGlzIGludGVycHJldGVkIGJ5IGNtZC5leGUsXG4gICBub3QgYnkgdGhlIEMgcnVudGltZSBzeXN0ZW0sIGhlbmNlIHRoZSBcInF1b3RlXCIgZnVuY3Rpb24gYWJvdmVcbiAgIGNhbm5vdCBiZSB1c2VkLiAgVGhlIHR3byBjaGFyYWN0ZXJzIHdlIGRvbid0IGtub3cgaG93IHRvIHF1b3RlXG4gICBpbnNpZGUgYSBkb3VibGUtcXVvdGVkIGNtZC5leGUgc3RyaW5nIGFyZSBkb3VibGUtcXVvdGUgYW5kIHBlcmNlbnQuXG4gICBXZSBqdXN0IGZhaWwgaWYgdGhlIGNvbW1hbmQgbmFtZSBvciB0aGUgcmVkaXJlY3Rpb24gZmlsZSBuYW1lc1xuICAgY29udGFpbiBhIGRvdWJsZSBxdW90ZSAobm90IGFsbG93ZWQgaW4gV2luZG93cyBmaWxlIG5hbWVzLCBhbnl3YXkpXG4gICBvciBhIHBlcmNlbnQuICBTZWUgZnVuY3Rpb24gXCJxdW90ZV9jbWRfZmlsZW5hbWVcIiBiZWxvdy5cbjMtIFRoZSB3aG9sZSBzdHJpbmcgcGFzc2VkIHRvIFN5cy5jb21tYW5kIGlzIHRoZW4gZW5jbG9zZWQgaW4gZG91YmxlXG4gICBxdW90ZXMsIHdoaWNoIGFyZSBpbW1lZGlhdGVseSBzdHJpcHBlZCBieSBjbWQuZXhlLiAgT3RoZXJ3aXNlLFxuICAgc29tZSBvZiB0aGUgZG91YmxlIHF1b3RlcyBmcm9tIHN0ZXAgMiBhYm92ZSBjYW4gYmUgbWlzcGFyc2VkLlxuICAgU2VlIGUuZy4gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk5NjUxNDFcbiopXG4gIGxldCBxdW90ZV9jbWQgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKyAyMCkgaW5cbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcoJyB8ICcpJyB8ICchJyB8ICdeJyB8ICclJyB8ICdcXFwiJyB8ICc8JyB8ICc+JyB8ICcmJyB8ICd8JyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ14nOyBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgYylcbiAgICAgIHM7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgbGV0IHF1b3RlX2NtZF9maWxlbmFtZSBmID1cbiAgICBpZiBTdHJpbmcuY29udGFpbnMgZiAnXFxcIicgfHwgU3RyaW5nLmNvbnRhaW5zIGYgJyUnIHRoZW5cbiAgICAgIGZhaWx3aXRoIChcIkZpbGVuYW1lLnF1b3RlX2NvbW1hbmQ6IGJhZCBmaWxlIG5hbWUgXCIgXiBmKVxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGYgJyAnIHRoZW5cbiAgICAgIFwiXFxcIlwiIF4gZiBeIFwiXFxcIlwiXG4gICAgZWxzZVxuICAgICAgZlxuICAoKiBSZWRpcmVjdGlvbnMgaW4gY21kLmV4ZTogc2VlIGh0dHBzOi8vc3M2NC5jb20vbnQvc3ludGF4LXJlZGlyZWN0aW9uLmh0bWxcbiAgICAgYW5kIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3ByZXZpb3VzLXZlcnNpb25zL3dpbmRvd3MvaXQtcHJvL3dpbmRvd3MteHAvYmI0OTA5ODIodj10ZWNobmV0LjEwKVxuICAqKVxuICBsZXQgcXVvdGVfY29tbWFuZCBjbWQgP3N0ZGluID9zdGRvdXQgP3N0ZGVyciBhcmdzID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW1xuICAgICAgXCJcXFwiXCI7XG4gICAgICBxdW90ZV9jbWRfZmlsZW5hbWUgY21kO1xuICAgICAgXCIgXCI7XG4gICAgICBxdW90ZV9jbWQgKFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIGFyZ3MpKTtcbiAgICAgIChtYXRjaCBzdGRpbiAgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT4gXCIgPFwiIF4gcXVvdGVfY21kX2ZpbGVuYW1lIGYpO1xuICAgICAgKG1hdGNoIHN0ZG91dCB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RkZXJyID0gc3Rkb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwiIDI+XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICBcIlxcXCJcIlxuICAgIF1cbiAgbGV0IGhhc19kcml2ZSBzID1cbiAgICBsZXQgaXNfbGV0dGVyID0gZnVuY3Rpb25cbiAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBTdHJpbmcubGVuZ3RoIHMgPj0gMiAmJiBpc19sZXR0ZXIgcy5bMF0gJiYgcy5bMV0gPSAnOidcbiAgbGV0IGRyaXZlX2FuZF9wYXRoIHMgPVxuICAgIGlmIGhhc19kcml2ZSBzXG4gICAgdGhlbiAoU3RyaW5nLnN1YiBzIDAgMiwgU3RyaW5nLnN1YiBzIDIgKFN0cmluZy5sZW5ndGggcyAtIDIpKVxuICAgIGVsc2UgKFwiXCIsIHMpXG4gIGxldCBkaXJuYW1lIHMgPVxuICAgIGxldCAoZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGxldCBkaXIgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGggaW5cbiAgICBkcml2ZSBeIGRpclxuICBsZXQgYmFzZW5hbWUgcyA9XG4gICAgbGV0IChfZHJpdmUsIHBhdGgpID0gZHJpdmVfYW5kX3BhdGggcyBpblxuICAgIGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgQ3lnd2luIDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgPSBXaW4zMi5pc19kaXJfc2VwXG4gIGxldCBpc19yZWxhdGl2ZSA9IFdpbjMyLmlzX3JlbGF0aXZlXG4gIGxldCBpc19pbXBsaWNpdCA9IFdpbjMyLmlzX2ltcGxpY2l0XG4gIGxldCBjaGVja19zdWZmaXggPSBXaW4zMi5jaGVja19zdWZmaXhcbiAgbGV0IGNob3Bfc3VmZml4X29wdCA9IFdpbjMyLmNob3Bfc3VmZml4X29wdFxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IFVuaXgudGVtcF9kaXJfbmFtZVxuICBsZXQgcXVvdGUgPSBVbml4LnF1b3RlXG4gIGxldCBxdW90ZV9jb21tYW5kID0gVW5peC5xdW90ZV9jb21tYW5kXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBTeXNkZXBzID1cbiAgKHZhbCAobWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgIHwgXCJXaW4zMlwiIC0+IChtb2R1bGUgV2luMzI6IFNZU0RFUFMpXG4gICAgICAgfCBcIkN5Z3dpblwiIC0+IChtb2R1bGUgQ3lnd2luOiBTWVNERVBTKVxuICAgICAgIHwgXyAtPiAobW9kdWxlIFVuaXg6IFNZU0RFUFMpKSlcblxuaW5jbHVkZSBTeXNkZXBzXG5cbmxldCBjb25jYXQgZGlybmFtZSBmaWxlbmFtZSA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBkaXJuYW1lIGluXG4gIGlmIGwgPSAwIHx8IGlzX2Rpcl9zZXAgZGlybmFtZSAobC0xKVxuICB0aGVuIGRpcm5hbWUgXiBmaWxlbmFtZVxuICBlbHNlIGRpcm5hbWUgXiBkaXJfc2VwIF4gZmlsZW5hbWVcblxubGV0IGNob3Bfc3VmZml4IG5hbWUgc3VmZiA9XG4gIGlmIGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmZcbiAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICBlbHNlIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9zdWZmaXhcIlxuXG5sZXQgZXh0ZW5zaW9uX2xlbiBuYW1lID1cbiAgbGV0IHJlYyBjaGVjayBpMCBpID1cbiAgICBpZiBpIDwgMCB8fCBpc19kaXJfc2VwIG5hbWUgaSB0aGVuIDBcbiAgICBlbHNlIGlmIG5hbWUuW2ldID0gJy4nIHRoZW4gY2hlY2sgaTAgKGkgLSAxKVxuICAgIGVsc2UgU3RyaW5nLmxlbmd0aCBuYW1lIC0gaTBcbiAgaW5cbiAgbGV0IHJlYyBzZWFyY2hfZG90IGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpIChpIC0gMSlcbiAgICBlbHNlIHNlYXJjaF9kb3QgKGkgLSAxKVxuICBpblxuICBzZWFyY2hfZG90IChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG5sZXQgZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpIGxcblxubGV0IGNob3BfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIGludmFsaWRfYXJnIFwiRmlsZW5hbWUuY2hvcF9leHRlbnNpb25cIlxuICBlbHNlIFN0cmluZy5zdWIgbmFtZSAwIChTdHJpbmcubGVuZ3RoIG5hbWUgLSBsKVxuXG5sZXQgcmVtb3ZlX2V4dGVuc2lvbiBuYW1lID1cbiAgbGV0IGwgPSBleHRlbnNpb25fbGVuIG5hbWUgaW5cbiAgaWYgbCA9IDAgdGhlbiBuYW1lIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmV4dGVybmFsIG9wZW5fZGVzYzogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuZXh0ZXJuYWwgY2xvc2VfZGVzYzogaW50IC0+IHVuaXQgPSBcImNhbWxfc3lzX2Nsb3NlXCJcblxubGV0IHBybmdfa2V5ID1cbiAgRG9tYWluLkRMUy5uZXdfa2V5IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdFxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByYW5kb21fc3RhdGUgPSBEb21haW4uRExTLmdldCBwcm5nX2tleSBpblxuICBsZXQgcm5kID0gKFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRvbV9zdGF0ZSkgbGFuZCAweEZGRkZGRiBpblxuICBjb25jYXQgdGVtcF9kaXIgKFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeClcblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9XG4gIERvbWFpbi5ETFMubmV3X2tleSB+c3BsaXRfZnJvbV9wYXJlbnQ6RnVuLmlkIChmdW4gKCkgLT4gdGVtcF9kaXJfbmFtZSlcblxubGV0IHNldF90ZW1wX2Rpcl9uYW1lIHMgPSBEb21haW4uRExTLnNldCBjdXJyZW50X3RlbXBfZGlyX25hbWUgc1xubGV0IGdldF90ZW1wX2Rpcl9uYW1lICgpID0gRG9tYWluLkRMUy5nZXQgY3VycmVudF90ZW1wX2Rpcl9uYW1lXG5cbmxldCB0ZW1wX2ZpbGUgPyh0ZW1wX2RpciA9IERvbWFpbi5ETFMuZ2V0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCBvcGVuX3RlbXBfZmlsZSA/KG1vZGUgPSBbT3Blbl90ZXh0XSkgPyhwZXJtcyA9IDBvNjAwKVxuICAgID8odGVtcF9kaXIgPSBEb21haW4uRExTLmdldCBjdXJyZW50X3RlbXBfZGlyX25hbWUpXG4gICAgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICAobmFtZSxcbiAgICAgICBvcGVuX291dF9nZW4gKE9wZW5fd3Jvbmx5OjpPcGVuX2NyZWF0OjpPcGVuX2V4Y2w6Om1vZGUpIHBlcm1zIG5hbWUpXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIENvbXBsZXggbnVtYmVycyAqKVxuXG50eXBlIHQgPSB7IHJlOiBmbG9hdDsgaW06IGZsb2F0IH1cblxubGV0IHplcm8gPSB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG5sZXQgb25lID0geyByZSA9IDEuMDsgaW0gPSAwLjAgfVxubGV0IGkgPSB7IHJlID0gMC4wOyBpbSA9IDEuMCB9XG5cbmxldCBhZGQgeCB5ID0geyByZSA9IHgucmUgKy4geS5yZTsgaW0gPSB4LmltICsuIHkuaW0gfVxuXG5sZXQgc3ViIHggeSA9IHsgcmUgPSB4LnJlIC0uIHkucmU7IGltID0geC5pbSAtLiB5LmltIH1cblxubGV0IG5lZyB4ID0geyByZSA9IC0uIHgucmU7IGltID0gLS4geC5pbSB9XG5cbmxldCBjb25qIHggPSB7IHJlID0geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IG11bCB4IHkgPSB7IHJlID0geC5yZSAqLiB5LnJlIC0uIHguaW0gKi4geS5pbTtcbiAgICAgICAgICAgICAgICBpbSA9IHgucmUgKi4geS5pbSArLiB4LmltICouIHkucmUgfVxuXG5sZXQgZGl2IHggeSA9XG4gIGlmIGFic19mbG9hdCB5LnJlID49IGFic19mbG9hdCB5LmltIHRoZW5cbiAgICBsZXQgciA9IHkuaW0gLy4geS5yZSBpblxuICAgIGxldCBkID0geS5yZSArLiByICouIHkuaW0gaW5cbiAgICB7IHJlID0gKHgucmUgKy4gciAqLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAoeC5pbSAtLiByICouIHgucmUpIC8uIGQgfVxuICBlbHNlXG4gICAgbGV0IHIgPSB5LnJlIC8uIHkuaW0gaW5cbiAgICBsZXQgZCA9IHkuaW0gKy4gciAqLiB5LnJlIGluXG4gICAgeyByZSA9IChyICouIHgucmUgKy4geC5pbSkgLy4gZDtcbiAgICAgIGltID0gKHIgKi4geC5pbSAtLiB4LnJlKSAvLiBkIH1cblxubGV0IGludiB4ID0gZGl2IG9uZSB4XG5cbmxldCBub3JtMiB4ID0geC5yZSAqLiB4LnJlICsuIHguaW0gKi4geC5pbVxuXG5sZXQgbm9ybSB4ID0gRmxvYXQuaHlwb3QgeC5yZSB4LmltXG5cbmxldCBhcmcgeCA9IGF0YW4yIHguaW0geC5yZVxuXG5sZXQgcG9sYXIgbiBhID0geyByZSA9IGNvcyBhICouIG47IGltID0gc2luIGEgKi4gbiB9XG5cbmxldCBzcXJ0IHggPVxuICBpZiB4LnJlID0gMC4wICYmIHguaW0gPSAwLjAgdGhlbiB7IHJlID0gMC4wOyBpbSA9IDAuMCB9XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgICBsZXQgdyA9XG4gICAgICBpZiByID49IGkgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcSA9IGkgLy4gciBpblxuICAgICAgICBzcXJ0KHIpICouIHNxcnQoMC41ICouICgxLjAgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgcSA9IHIgLy4gaSBpblxuICAgICAgICBzcXJ0KGkpICouIHNxcnQoMC41ICouIChxICsuIHNxcnQoMS4wICsuIHEgKi4gcSkpKVxuICAgICAgZW5kIGluXG4gICAgaWYgeC5yZSA+PSAwLjBcbiAgICB0aGVuIHsgcmUgPSB3OyAgaW0gPSAwLjUgKi4geC5pbSAvLiB3IH1cbiAgICBlbHNlIHsgcmUgPSAwLjUgKi4gaSAvLiB3OyAgaW0gPSBpZiB4LmltID49IDAuMCB0aGVuIHcgZWxzZSAtLiB3IH1cbiAgZW5kXG5cbmxldCBleHAgeCA9XG4gIGxldCBlID0gZXhwIHgucmUgaW4geyByZSA9IGUgKi4gY29zIHguaW07IGltID0gZSAqLiBzaW4geC5pbSB9XG5cbmxldCBsb2cgeCA9IHsgcmUgPSBsb2cgKG5vcm0geCk7IGltID0gYXRhbjIgeC5pbSB4LnJlIH1cblxubGV0IHBvdyB4IHkgPSBleHAgKG11bCB5IChsb2cgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IGluX2NoYW5uZWxcblxudHlwZSBvcGVuX2ZsYWcgPSBTdGRsaWIub3Blbl9mbGFnID1cbiAgfCBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xuXG5sZXQgc3RkaW4gPSBTdGRsaWIuc3RkaW5cbmxldCBvcGVuX2JpbiA9IFN0ZGxpYi5vcGVuX2luX2JpblxubGV0IG9wZW5fdGV4dCA9IFN0ZGxpYi5vcGVuX2luXG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9pbl9nZW5cblxubGV0IHdpdGhfb3BlbiBvcGVuZnVuIHMgZiA9XG4gIGxldCBpYyA9IG9wZW5mdW4gcyBpblxuICBGdW4ucHJvdGVjdCB+ZmluYWxseTooZnVuICgpIC0+IFN0ZGxpYi5jbG9zZV9pbl9ub2VyciBpYylcbiAgICAoZnVuICgpIC0+IGYgaWMpXG5cbmxldCB3aXRoX29wZW5fYmluIHMgZiA9XG4gIHdpdGhfb3BlbiBTdGRsaWIub3Blbl9pbl9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5faW4gcyBmXG5cbmxldCB3aXRoX29wZW5fZ2VuIGZsYWdzIHBlcm0gcyBmID1cbiAgd2l0aF9vcGVuIChTdGRsaWIub3Blbl9pbl9nZW4gZmxhZ3MgcGVybSkgcyBmXG5cbmxldCBzZWVrID0gU3RkbGliLkxhcmdlRmlsZS5zZWVrX2luXG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBTdGRsaWIuTGFyZ2VGaWxlLmluX2NoYW5uZWxfbGVuZ3RoXG5sZXQgY2xvc2UgPSBTdGRsaWIuY2xvc2VfaW5cbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9pbl9ub2VyclxuXG5sZXQgaW5wdXRfY2hhciBpYyA9XG4gIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgfCBjIC0+IFNvbWUgY1xuICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPiBOb25lXG5cbmxldCBpbnB1dF9ieXRlIGljID1cbiAgbWF0Y2ggU3RkbGliLmlucHV0X2J5dGUgaWMgd2l0aFxuICB8IG4gLT4gU29tZSBuXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxubGV0IGlucHV0X2xpbmUgaWMgPVxuICBtYXRjaCBTdGRsaWIuaW5wdXRfbGluZSBpYyB3aXRoXG4gIHwgcyAtPiBTb21lIHNcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgaW5wdXQgPSBTdGRsaWIuaW5wdXRcblxubGV0IHJlYWxseV9pbnB1dCBpYyBidWYgcG9zIGxlbiA9XG4gIG1hdGNoIFN0ZGxpYi5yZWFsbHlfaW5wdXQgaWMgYnVmIHBvcyBsZW4gd2l0aFxuICB8ICgpIC0+IFNvbWUgKClcbiAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gTm9uZVxuXG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gPVxuICBtYXRjaCBTdGRsaWIucmVhbGx5X2lucHV0X3N0cmluZyBpYyBsZW4gd2l0aFxuICB8IHMgLT4gU29tZSBzXG4gIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+IE5vbmVcblxuKCogUmVhZCB1cCB0byBbbGVuXSBieXRlcyBpbnRvIFtidWZdLCBzdGFydGluZyBhdCBbb2ZzXS4gUmV0dXJuIHRvdGFsIGJ5dGVzXG4gICByZWFkLiAqKVxubGV0IHJlYWRfdXB0byBpYyBidWYgb2ZzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBvZnMgbGVuID1cbiAgICBpZiBsZW4gPSAwIHRoZW4gb2ZzXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBTdGRsaWIuaW5wdXQgaWMgYnVmIG9mcyBsZW4gaW5cbiAgICAgIGlmIHIgPSAwIHRoZW5cbiAgICAgICAgb2ZzXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3AgKG9mcyArIHIpIChsZW4gLSByKVxuICAgIGVuZFxuICBpblxuICBsb29wIG9mcyBsZW4gLSBvZnNcblxuKCogQmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZXR1cm4gYSBidWZmZXIgd2l0aCA+PSAob2ZzICsgbikgYnl0ZXMgb2Ygc3RvcmFnZSxcbiAgIGFuZCBzdWNoIHRoYXQgaXQgY29pbmNpZGVzIHdpdGggW2J1Zl0gYXQgaW5kaWNlcyA8IFtvZnNdLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIGlzIGVxdWFsIHRvIFtidWZdIGl0c2VsZiBpZiBpdCBhbHJlYWR5IGhhcyBzdWZmaWNpZW50XG4gICBmcmVlIHNwYWNlLlxuXG4gICBUaGUgcmV0dXJuZWQgYnVmZmVyIG1heSBoYXZlICpmZXdlciogdGhhbiBbb2ZzICsgbl0gYnl0ZXMgb2Ygc3RvcmFnZSBpZiB0aGlzXG4gICBudW1iZXIgaXMgPiBbU3lzLm1heF9zdHJpbmdfbGVuZ3RoXS4gSG93ZXZlciB0aGUgcmV0dXJuZWQgYnVmZmVyIHdpbGxcbiAgICphbHdheXMqIGhhdmUgPiBbb2ZzXSBieXRlcyBvZiBzdG9yYWdlLiBJbiB0aGUgbGltaXRpbmcgY2FzZSB3aGVuIFtvZnMgPSBsZW5cbiAgID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXSAoc28gdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gcmVzaXplIHRoZSBidWZmZXIgYXRcbiAgIGFsbCksIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuICopXG5cbmxldCBlbnN1cmUgYnVmIG9mcyBuID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBidWYgaW5cbiAgaWYgbGVuID49IG9mcyArIG4gdGhlbiBidWZcbiAgZWxzZSBiZWdpblxuICAgIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICAgIHdoaWxlICFuZXdfbGVuIDwgb2ZzICsgbiBkb1xuICAgICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW4gKyAxXG4gICAgZG9uZTtcbiAgICBsZXQgbmV3X2xlbiA9ICFuZXdfbGVuIGluXG4gICAgbGV0IG5ld19sZW4gPVxuICAgICAgaWYgbmV3X2xlbiA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgICAgICBuZXdfbGVuXG4gICAgICBlbHNlIGlmIG9mcyA8IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgICAgZWxzZVxuICAgICAgICBmYWlsd2l0aCBcIkluX2NoYW5uZWwuaW5wdXRfYWxsOiBjaGFubmVsIGNvbnRlbnQgXFxcbiAgICAgICAgICAgICAgICAgIGlzIGxhcmdlciB0aGFuIG1heGltdW0gc3RyaW5nIGxlbmd0aFwiXG4gICAgaW5cbiAgICBsZXQgbmV3X2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdfbGVuIGluXG4gICAgQnl0ZXMuYmxpdCBidWYgMCBuZXdfYnVmIDAgb2ZzO1xuICAgIG5ld19idWZcbiAgZW5kXG5cbmxldCBpbnB1dF9hbGwgaWMgPVxuICBsZXQgY2h1bmtfc2l6ZSA9IDY1NTM2IGluICgqIElPX0JVRkZFUl9TSVpFICopXG4gIGxldCBpbml0aWFsX3NpemUgPVxuICAgIHRyeVxuICAgICAgU3RkbGliLmluX2NoYW5uZWxfbGVuZ3RoIGljIC0gU3RkbGliLnBvc19pbiBpY1xuICAgIHdpdGggU3lzX2Vycm9yIF8gLT5cbiAgICAgIC0xXG4gIGluXG4gIGxldCBpbml0aWFsX3NpemUgPSBpZiBpbml0aWFsX3NpemUgPCAwIHRoZW4gY2h1bmtfc2l6ZSBlbHNlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgaW5pdGlhbF9zaXplID1cbiAgICBpZiBpbml0aWFsX3NpemUgPD0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIGluaXRpYWxfc2l6ZVxuICAgIGVsc2VcbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIGluaXRpYWxfc2l6ZSBpblxuICBsZXQgbnJlYWQgPSByZWFkX3VwdG8gaWMgYnVmIDAgaW5pdGlhbF9zaXplIGluXG4gIGlmIG5yZWFkIDwgaW5pdGlhbF9zaXplIHRoZW4gKCogRU9GIHJlYWNoZWQsIGJ1ZmZlciBwYXJ0aWFsbHkgZmlsbGVkICopXG4gICAgQnl0ZXMuc3ViX3N0cmluZyBidWYgMCBucmVhZFxuICBlbHNlIGJlZ2luICgqIG5yZWFkID0gaW5pdGlhbF9zaXplLCBtYXliZSBFT0YgcmVhY2hlZCAqKVxuICAgIG1hdGNoIFN0ZGxpYi5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSAtPlxuICAgICAgICAoKiBFT0YgcmVhY2hlZCwgYnVmZmVyIGlzIGNvbXBsZXRlbHkgZmlsbGVkICopXG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmXG4gICAgfCBjIC0+XG4gICAgICAgICgqIEVPRiBub3QgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGxvb3AgYnVmIG9mcyA9XG4gICAgICAgICAgbGV0IGJ1ZiA9IGVuc3VyZSBidWYgb2ZzIGNodW5rX3NpemUgaW5cbiAgICAgICAgICBsZXQgcmVtID0gQnl0ZXMubGVuZ3RoIGJ1ZiAtIG9mcyBpblxuICAgICAgICAgICgqIFtyZW1dIGNhbiBiZSA8IFtjaHVua19zaXplXSBpZiBidWZmZXIgc2l6ZSBjbG9zZSB0b1xuICAgICAgICAgICAgIFtTeXMubWF4X3N0cmluZ19sZW5ndGhdICopXG4gICAgICAgICAgbGV0IHIgPSByZWFkX3VwdG8gaWMgYnVmIG9mcyByZW0gaW5cbiAgICAgICAgICBpZiByIDwgcmVtIHRoZW4gKCogRU9GIHJlYWNoZWQgKilcbiAgICAgICAgICAgIEJ5dGVzLnN1Yl9zdHJpbmcgYnVmIDAgKG9mcyArIHIpXG4gICAgICAgICAgZWxzZSAoKiByID0gcmVtICopXG4gICAgICAgICAgICBsb29wIGJ1ZiAob2ZzICsgcmVtKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYnVmID0gZW5zdXJlIGJ1ZiBucmVhZCAoY2h1bmtfc2l6ZSArIDEpIGluXG4gICAgICAgIEJ5dGVzLnNldCBidWYgbnJlYWQgYztcbiAgICAgICAgbG9vcCBidWYgKG5yZWFkICsgMSlcbiAgZW5kXG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX2luXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IG91dF9jaGFubmVsXG5cbnR5cGUgb3Blbl9mbGFnID0gU3RkbGliLm9wZW5fZmxhZyA9XG4gIHwgT3Blbl9yZG9ubHlcbiAgfCBPcGVuX3dyb25seVxuICB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdFxuICB8IE9wZW5fdHJ1bmNcbiAgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeVxuICB8IE9wZW5fdGV4dFxuICB8IE9wZW5fbm9uYmxvY2tcblxubGV0IHN0ZG91dCA9IFN0ZGxpYi5zdGRvdXRcbmxldCBzdGRlcnIgPSBTdGRsaWIuc3RkZXJyXG5sZXQgb3Blbl9iaW4gPSBTdGRsaWIub3Blbl9vdXRfYmluXG5sZXQgb3Blbl90ZXh0ID0gU3RkbGliLm9wZW5fb3V0XG5sZXQgb3Blbl9nZW4gPSBTdGRsaWIub3Blbl9vdXRfZ2VuXG5cbmxldCB3aXRoX29wZW4gb3BlbmZ1biBzIGYgPVxuICBsZXQgb2MgPSBvcGVuZnVuIHMgaW5cbiAgRnVuLnByb3RlY3QgfmZpbmFsbHk6KGZ1biAoKSAtPiBTdGRsaWIuY2xvc2Vfb3V0X25vZXJyIG9jKVxuICAgIChmdW4gKCkgLT4gZiBvYylcblxubGV0IHdpdGhfb3Blbl9iaW4gcyBmID1cbiAgd2l0aF9vcGVuIFN0ZGxpYi5vcGVuX291dF9iaW4gcyBmXG5cbmxldCB3aXRoX29wZW5fdGV4dCBzIGYgPVxuICB3aXRoX29wZW4gU3RkbGliLm9wZW5fb3V0IHMgZlxuXG5sZXQgd2l0aF9vcGVuX2dlbiBmbGFncyBwZXJtIHMgZiA9XG4gIHdpdGhfb3BlbiAoU3RkbGliLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtKSBzIGZcblxubGV0IHNlZWsgPSBTdGRsaWIuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gU3RkbGliLkxhcmdlRmlsZS5wb3Nfb3V0XG5sZXQgbGVuZ3RoID0gU3RkbGliLkxhcmdlRmlsZS5vdXRfY2hhbm5lbF9sZW5ndGhcbmxldCBjbG9zZSA9IFN0ZGxpYi5jbG9zZV9vdXRcbmxldCBjbG9zZV9ub2VyciA9IFN0ZGxpYi5jbG9zZV9vdXRfbm9lcnJcbmxldCBmbHVzaCA9IFN0ZGxpYi5mbHVzaFxubGV0IGZsdXNoX2FsbCA9IFN0ZGxpYi5mbHVzaF9hbGxcbmxldCBvdXRwdXRfY2hhciA9IFN0ZGxpYi5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gU3RkbGliLm91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X3N0cmluZyA9IFN0ZGxpYi5vdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gU3RkbGliLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dCA9IFN0ZGxpYi5vdXRwdXRcbmxldCBvdXRwdXRfc3Vic3RyaW5nID0gU3RkbGliLm91dHB1dF9zdWJzdHJpbmdcbmxldCBzZXRfYmluYXJ5X21vZGUgPSBTdGRsaWIuc2V0X2JpbmFyeV9tb2RlX291dFxuXG5leHRlcm5hbCBzZXRfYnVmZmVyZWQgOiB0IC0+IGJvb2wgLT4gdW5pdCA9IFwiY2FtbF9tbF9zZXRfYnVmZmVyZWRcIlxuXG5leHRlcm5hbCBpc19idWZmZXJlZCA6IHQgLT4gYm9vbCA9IFwiY2FtbF9tbF9pc19idWZmZXJlZFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgIEtDIFNpdmFyYW1ha3Jpc2huYW4sIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDIxIEluZGlhbiBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neSwgTWFkcmFzICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IC4uXG5leHRlcm5hbCBwZXJmb3JtIDogJ2EgdCAtPiAnYSA9IFwiJXBlcmZvcm1cIlxuXG50eXBlIGV4biArPSBVbmhhbmRsZWQ6ICdhIHQgLT4gZXhuXG5leGNlcHRpb24gQ29udGludWF0aW9uX2FscmVhZHlfcmVzdW1lZFxuXG5sZXQgKCkgPVxuICBsZXQgcHJpbnRlciA9IGZ1bmN0aW9uXG4gICAgfCBVbmhhbmRsZWQgeCAtPlxuICAgICAgICBsZXQgbXNnID0gUHJpbnRmLnNwcmludGYgXCJTdGRsaWIuRWZmZWN0LlVuaGFuZGxlZCglcylcIlxuICAgICAgICAgICAgKFByaW50ZXhjLnN0cmluZ19vZl9leHRlbnNpb25fY29uc3RydWN0b3IgQEAgT2JqLnJlcHIgeClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSBtc2dcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIHByaW50ZXJcblxuKCogUmVnaXN0ZXIgdGhlIGV4Y2VwdGlvbnMgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gYWNjZXNzIGl0ICopXG50eXBlIF8gdCArPSBTaG91bGRfbm90X3NlZV90aGlzX18gOiB1bml0IHRcbmxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiRWZmZWN0LlVuaGFuZGxlZFwiXG4gICAgICAgICAgKFVuaGFuZGxlZCBTaG91bGRfbm90X3NlZV90aGlzX18pXG5sZXQgXyA9IENhbGxiYWNrLnJlZ2lzdGVyX2V4Y2VwdGlvbiBcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCJcbiAgICAgICAgICBDb250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXG5cbnR5cGUgKCdhLCAnYikgc3RhY2tcblxuZXh0ZXJuYWwgcmVzdW1lIDogKCdhLCAnYikgc3RhY2sgLT4gKCdjIC0+ICdhKSAtPiAnYyAtPiAnYiA9IFwiJXJlc3VtZVwiXG5leHRlcm5hbCBydW5zdGFjayA6ICgnYSwgJ2IpIHN0YWNrIC0+ICgnYyAtPiAnYSkgLT4gJ2MgLT4gJ2IgPSBcIiVydW5zdGFja1wiXG5cbm1vZHVsZSBEZWVwID0gc3RydWN0XG5cbiAgdHlwZSAoJ2EsJ2IpIGNvbnRpbnVhdGlvblxuICB0eXBlIGxhc3RfZmliZXJcblxuICBleHRlcm5hbCB0YWtlX2NvbnRfbm9leGMgOiAoJ2EsICdiKSBjb250aW51YXRpb24gLT4gKCdhLCAnYikgc3RhY2sgPVxuICAgIFwiY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjXCIgW0BAbm9hbGxvY11cbiAgZXh0ZXJuYWwgYWxsb2Nfc3RhY2sgOlxuICAgICgnYSAtPiAnYikgLT5cbiAgICAoZXhuIC0+ICdiKSAtPlxuICAgICgnYyB0IC0+ICgnYywgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIHN0YWNrID0gXCJjYW1sX2FsbG9jX3N0YWNrXCJcblxuICBsZXQgY29udGludWUgayB2ID0gcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biB4IC0+IHgpIHZcblxuICBsZXQgZGlzY29udGludWUgayBlID0gcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+IHJhaXNlIGUpIGVcblxuICBsZXQgZGlzY29udGludWVfd2l0aF9iYWNrdHJhY2UgayBlIGJ0ID0gcmVzdW1lICh0YWtlX2NvbnRfbm9leGMgaykgKGZ1biBlIC0+XG4gICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidCkgZVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgcmVwZXJmb3JtIDpcbiAgICAnYSB0IC0+ICgnYSwgJ2IpIGNvbnRpbnVhdGlvbiAtPiBsYXN0X2ZpYmVyIC0+ICdiID0gXCIlcmVwZXJmb3JtXCJcblxuICBsZXQgbWF0Y2hfd2l0aCBjb21wIGFyZyBoYW5kbGVyID1cbiAgICBsZXQgZWZmYyBlZmYgayBsYXN0X2ZpYmVyID1cbiAgICAgIG1hdGNoIGhhbmRsZXIuZWZmYyBlZmYgd2l0aFxuICAgICAgfCBTb21lIGYgLT4gZiBrXG4gICAgICB8IE5vbmUgLT4gcmVwZXJmb3JtIGVmZiBrIGxhc3RfZmliZXJcbiAgICBpblxuICAgIGxldCBzID0gYWxsb2Nfc3RhY2sgaGFuZGxlci5yZXRjIGhhbmRsZXIuZXhuYyBlZmZjIGluXG4gICAgcnVuc3RhY2sgcyBjb21wIGFyZ1xuXG4gIHR5cGUgJ2EgZWZmZWN0X2hhbmRsZXIgPVxuICAgIHsgZWZmYzogJ2IuICdiIHQgLT4gKCgnYiwnYSkgY29udGludWF0aW9uIC0+ICdhKSBvcHRpb24gfVxuXG4gIGxldCB0cnlfd2l0aCBjb21wIGFyZyBoYW5kbGVyID1cbiAgICBsZXQgZWZmYycgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+IGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIChmdW4geCAtPiB4KSAoZnVuIGUgLT4gcmFpc2UgZSkgZWZmYycgaW5cbiAgICBydW5zdGFjayBzIGNvbXAgYXJnXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcblxubW9kdWxlIFNoYWxsb3cgPSBzdHJ1Y3RcblxuICB0eXBlICgnYSwnYikgY29udGludWF0aW9uXG4gIHR5cGUgbGFzdF9maWJlclxuXG4gIGV4dGVybmFsIGFsbG9jX3N0YWNrIDpcbiAgICAoJ2EgLT4gJ2IpIC0+XG4gICAgKGV4biAtPiAnYikgLT5cbiAgICAoJ2MgdCAtPiAoJ2MsICdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYikgLT5cbiAgICAoJ2EsICdiKSBzdGFjayA9IFwiY2FtbF9hbGxvY19zdGFja1wiXG5cblxuICBsZXQgZmliZXIgOiB0eXBlIGEgYi4gKGEgLT4gYikgLT4gKGEsIGIpIGNvbnRpbnVhdGlvbiA9IGZ1biBmIC0+XG4gICAgbGV0IG1vZHVsZSBNID0gc3RydWN0IHR5cGUgXyB0ICs9IEluaXRpYWxfc2V0dXBfXyA6IGEgdCBlbmQgaW5cbiAgICBsZXQgZXhjZXB0aW9uIEUgb2YgKGEsYikgY29udGludWF0aW9uIGluXG4gICAgbGV0IGYnICgpID0gZiAocGVyZm9ybSBNLkluaXRpYWxfc2V0dXBfXykgaW5cbiAgICBsZXQgZXJyb3IgXyA9IGZhaWx3aXRoIFwiaW1wb3NzaWJsZVwiIGluXG4gICAgbGV0IGVmZmMgZWZmIGsgX2xhc3RfZmliZXIgPVxuICAgICAgbWF0Y2ggZWZmIHdpdGhcbiAgICAgIHwgTS5Jbml0aWFsX3NldHVwX18gLT4gcmFpc2Vfbm90cmFjZSAoRSBrKVxuICAgICAgfCBfIC0+IGVycm9yICgpXG4gICAgaW5cbiAgICBsZXQgcyA9IGFsbG9jX3N0YWNrIGVycm9yIGVycm9yIGVmZmMgaW5cbiAgICBtYXRjaCBydW5zdGFjayBzIGYnICgpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBFIGsgLT4ga1xuICAgIHwgXyAtPiBlcnJvciAoKVxuXG4gIHR5cGUgKCdhLCdiKSBoYW5kbGVyID1cbiAgICB7IHJldGM6ICdhIC0+ICdiO1xuICAgICAgZXhuYzogZXhuIC0+ICdiO1xuICAgICAgZWZmYzogJ2MuJ2MgdCAtPiAoKCdjLCdhKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbiAgZXh0ZXJuYWwgdXBkYXRlX2hhbmRsZXIgOlxuICAgICgnYSwnYikgY29udGludWF0aW9uIC0+XG4gICAgKCdiIC0+ICdjKSAtPlxuICAgIChleG4gLT4gJ2MpIC0+XG4gICAgKCdkIHQgLT4gKCdkLCdiKSBjb250aW51YXRpb24gLT4gbGFzdF9maWJlciAtPiAnYykgLT5cbiAgICAoJ2EsJ2MpIHN0YWNrID0gXCJjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXCIgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCByZXBlcmZvcm0gOlxuICAgICdhIHQgLT4gKCdhLCAnYikgY29udGludWF0aW9uIC0+IGxhc3RfZmliZXIgLT4gJ2MgPSBcIiVyZXBlcmZvcm1cIlxuXG4gIGxldCBjb250aW51ZV9nZW4gayByZXN1bWVfZnVuIHYgaGFuZGxlciA9XG4gICAgbGV0IGVmZmMgZWZmIGsgbGFzdF9maWJlciA9XG4gICAgICBtYXRjaCBoYW5kbGVyLmVmZmMgZWZmIHdpdGhcbiAgICAgIHwgU29tZSBmIC0+IGYga1xuICAgICAgfCBOb25lIC0+IHJlcGVyZm9ybSBlZmYgayBsYXN0X2ZpYmVyXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSB1cGRhdGVfaGFuZGxlciBrIGhhbmRsZXIucmV0YyBoYW5kbGVyLmV4bmMgZWZmYyBpblxuICAgIHJlc3VtZSBzdGFjayByZXN1bWVfZnVuIHZcblxuICBsZXQgY29udGludWVfd2l0aCBrIHYgaGFuZGxlciA9XG4gICAgY29udGludWVfZ2VuIGsgKGZ1biB4IC0+IHgpIHYgaGFuZGxlclxuXG4gIGxldCBkaXNjb250aW51ZV93aXRoIGsgdiBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gcmFpc2UgZSkgdiBoYW5kbGVyXG5cbiAgbGV0IGRpc2NvbnRpbnVlX3dpdGhfYmFja3RyYWNlIGsgdiBidCBoYW5kbGVyID1cbiAgICBjb250aW51ZV9nZW4gayAoZnVuIGUgLT4gUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgZSBidCkgdiBoYW5kbGVyXG5cbiAgZXh0ZXJuYWwgZ2V0X2NhbGxzdGFjayA6XG4gICAgKCdhLCdiKSBjb250aW51YXRpb24gLT4gaW50IC0+IFByaW50ZXhjLnJhd19iYWNrdHJhY2UgPVxuICAgIFwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFja1wiXG5lbmRcbiIsIltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCogYmxpdF9zdHJpbmcgZG9lc24ndCBleGlzdCBpbiBbU3RkTGFiZWxzLkJ5dGVzXS4uLiAgKilcbmxldCBieXRlc19ibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIEJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuOztcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gRm9ybWF0XG5cbigqKiBUeXBlIG9mIFMtZXhwcmVzc2lvbnMgKilcbnR5cGUgdCA9XG4gIHwgQXRvbSBvZiBzdHJpbmdcbiAgfCBMaXN0IG9mIHQgbGlzdFxuXG5sZXQgc2V4cF9vZl90IHQgPSB0XG5sZXQgdF9vZl9zZXhwIHQgPSB0XG5cbmxldCByZWMgY29tcGFyZV9saXN0IGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgeCA6OiB4cywgeSA6OiB5cyAtPlxuICAgIGxldCByZXMgPSBjb21wYXJlIHggeSBpblxuICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgY29tcGFyZV9saXN0IHhzIHlzXG5cbmFuZCBjb21wYXJlIGEgYiA9XG4gIGlmIGEgPT0gYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBBdG9tIGEsIEF0b20gYiAtPiBTdHJpbmcuY29tcGFyZSBhIGJcbiAgICB8IEF0b20gXywgXyAtPiAtMVxuICAgIHwgXywgQXRvbSBfIC0+IDFcbiAgICB8IExpc3QgYSwgTGlzdCBiIC0+IGNvbXBhcmVfbGlzdCBhIGIpXG47O1xuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbmV4Y2VwdGlvbiBOb3RfZm91bmRfcyBvZiB0XG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiBleG4gKiB0XG5cbm1vZHVsZSBQcmludGluZyA9IHN0cnVjdFxuICAoKiBEZWZhdWx0IGluZGVudGF0aW9uIGxldmVsIGZvciBodW1hbi1yZWFkYWJsZSBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCBkZWZhdWx0X2luZGVudCA9IHJlZiAxXG5cbiAgKCogRXNjYXBpbmcgb2Ygc3RyaW5ncyB1c2VkIGFzIGF0b21zIGluIFMtZXhwcmVzc2lvbnMgKilcblxuICBsZXQgbXVzdF9lc2NhcGUgc3RyID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZW4gPSAwXG4gICAgfHxcbiAgICBsZXQgcmVjIGxvb3Agc3RyIGl4ID1cbiAgICAgIG1hdGNoIHN0ci5baXhdIHdpdGhcbiAgICAgIHwgJ1wiJyB8ICcoJyB8ICcpJyB8ICc7JyB8ICdcXFxcJyAtPiB0cnVlXG4gICAgICB8ICd8JyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICcjJyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICcjJyAtPlxuICAgICAgICBpeCA+IDBcbiAgICAgICAgJiZcbiAgICAgICAgbGV0IG5leHQgPSBpeCAtIDEgaW5cbiAgICAgICAgQ2hhci5lcXVhbCBzdHIuW25leHRdICd8JyB8fCBsb29wIHN0ciBuZXh0XG4gICAgICB8ICdcXDAwMCcgLi4gJ1xcMDMyJyB8ICdcXDEyNycgLi4gJ1xcMjU1JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gaXggPiAwICYmIGxvb3Agc3RyIChpeCAtIDEpXG4gICAgaW5cbiAgICBsb29wIHN0ciAobGVuIC0gMSlcbiAgOztcblxuICBsZXQgZXNjYXBlZCBzID1cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG5cbiAgICAgIDo9ICFuXG4gICAgICAgICArXG4gICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAnXFxcIicgfCAnXFxcXCcgfCAnXFxuJyB8ICdcXHQnIHwgJ1xccicgfCAnXFxiJyAtPiAyXG4gICAgICAgICB8ICcgJyAuLiAnficgLT4gMVxuICAgICAgICAgfCBfIC0+IDRcbiAgICBkb25lO1xuICAgIGlmICFuID0gU3RyaW5nLmxlbmd0aCBzXG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcycgPSBCeXRlcy5jcmVhdGUgIW4gaW5cbiAgICAgIG4gOj0gMDtcbiAgICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgICAgfCAoJ1xcXCInIHwgJ1xcXFwnKSBhcyBjIC0+XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnO1xuICAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcycgIW4gY1xuICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICd0J1xuICAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdyJ1xuICAgICAgICAgfCAnXFxiJyAtPlxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgICAgfCAnICcgLi4gJ34nIGFzIGMgLT4gQnl0ZXMudW5zYWZlX3NldCBzJyAhbiBjXG4gICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgbGV0IGEgPSBDaGFyLmNvZGUgYyBpblxuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSAvIDEwIG1vZCAxMCkpKTtcbiAgICAgICAgICAgaW5jciBuO1xuICAgICAgICAgICBCeXRlcy51bnNhZmVfc2V0IHMnICFuIChDaGFyLmNociAoNDggKyAoYSBtb2QgMTApKSkpO1xuICAgICAgICBpbmNyIG5cbiAgICAgIGRvbmU7XG4gICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMnKVxuICA7O1xuXG4gIGxldCBlc2Nfc3RyIHN0ciA9XG4gICAgbGV0IGVzdHIgPSBlc2NhcGVkIHN0ciBpblxuICAgIGxldCBlbGVuID0gU3RyaW5nLmxlbmd0aCBlc3RyIGluXG4gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAoZWxlbiArIDIpIGluXG4gICAgYnl0ZXNfYmxpdF9zdHJpbmcgfnNyYzplc3RyIH5zcmNfcG9zOjAgfmRzdDpyZXMgfmRzdF9wb3M6MSB+bGVuOmVsZW47XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXMgMCAnXCInO1xuICAgIEJ5dGVzLnVuc2FmZV9zZXQgcmVzIChlbGVuICsgMSkgJ1wiJztcbiAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc1xuICA7O1xuXG4gIGxldCBpbmRleF9vZl9uZXdsaW5lIHN0ciBzdGFydCA9XG4gICAgdHJ5IFNvbWUgKFN0cmluZy5pbmRleF9mcm9tIHN0ciBzdGFydCAnXFxuJykgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggZW5kX3Bvc19vcHQgPVxuICAgIGxldCBlbmRfcG9zID1cbiAgICAgIG1hdGNoIGVuZF9wb3Nfb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgICAgfCBTb21lIGVuZF9wb3MgLT4gZW5kX3Bvc1xuICAgIGluXG4gICAgU3RyaW5nLnN1YiBzdHIgfnBvczppbmRleCB+bGVuOihlbmRfcG9zIC0gaW5kZXgpXG4gIDs7XG5cbiAgbGV0IGlzX29uZV9saW5lIHN0ciA9XG4gICAgbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgfCBOb25lIC0+IHRydWVcbiAgICB8IFNvbWUgaW5kZXggLT4gaW5kZXggKyAxID0gU3RyaW5nLmxlbmd0aCBzdHJcbiAgOztcblxuICBsZXQgcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0ciA9XG4gICAgaWYgbm90IChtdXN0X2VzY2FwZSBzdHIpXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIHN0clxuICAgIGVsc2UgaWYgaXNfb25lX2xpbmUgc3RyXG4gICAgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIChlc2Nfc3RyIHN0cilcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBpbmRleCA9XG4gICAgICAgIGxldCBuZXh0X25ld2xpbmUgPSBpbmRleF9vZl9uZXdsaW5lIHN0ciBpbmRleCBpblxuICAgICAgICBsZXQgbmV4dF9saW5lID0gZ2V0X3N1YnN0cmluZyBzdHIgaW5kZXggbmV4dF9uZXdsaW5lIGluXG4gICAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKGVzY2FwZWQgbmV4dF9saW5lKTtcbiAgICAgICAgbWF0Y2ggbmV4dF9uZXdsaW5lIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBuZXdsaW5lX2luZGV4IC0+XG4gICAgICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBcIlxcXFxcIjtcbiAgICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKTtcbiAgICAgICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiXFxcXG5cIjtcbiAgICAgICAgICBsb29wIChuZXdsaW5lX2luZGV4ICsgMSlcbiAgICAgIGluXG4gICAgICBwcF9vcGVuX2JveCBwcGYgMDtcbiAgICAgICgqIHRoZSBsZWFkaW5nIHNwYWNlIGlzIHRvIGxpbmUgdXAgdGhlIGxpbmVzICopXG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFxcXCJcIjtcbiAgICAgIGxvb3AgMDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCJcXFwiXCI7XG4gICAgICBwcF9jbG9zZV9ib3ggcHBmICgpKVxuICA7O1xuXG4gIGxldCBtYWNoX21heWJlX2VzY19zdHIgc3RyID0gaWYgbXVzdF9lc2NhcGUgc3RyIHRoZW4gZXNjX3N0ciBzdHIgZWxzZSBzdHJcblxuICAoKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmb3JtYXR0ZXJzICopXG5cbiAgbGV0IHJlYyBwcF9odW1faW5kZW50IGluZGVudCBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT4gcHBfaHVtX21heWJlX2VzY19zdHIgcHBmIHN0clxuICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgcHBfb3Blbl9ib3ggcHBmIGluZGVudDtcbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoXCI7XG4gICAgICBwcF9odW1faW5kZW50IGluZGVudCBwcGYgaDtcbiAgICAgIHBwX2h1bV9yZXN0IGluZGVudCBwcGYgdFxuICAgIHwgTGlzdCBbXSAtPiBwcF9wcmludF9zdHJpbmcgcHBmIFwiKClcIlxuXG4gIGFuZCBwcF9odW1fcmVzdCBpbmRlbnQgcHBmID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgcHBfcHJpbnRfc3BhY2UgcHBmICgpO1xuICAgICAgcHBfaHVtX2luZGVudCBpbmRlbnQgcHBmIGg7XG4gICAgICBwcF9odW1fcmVzdCBpbmRlbnQgcHBmIHRcbiAgICB8IFtdIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKVwiO1xuICAgICAgcHBfY2xvc2VfYm94IHBwZiAoKVxuICA7O1xuXG4gIGxldCByZWMgcHBfbWFjaF9pbnRlcm5hbCBtYXlfbmVlZF9zcGFjZSBwcGYgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHIgLT5cbiAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgbGV0IG5ld19tYXlfbmVlZF9zcGFjZSA9IHN0cicgPT0gc3RyIGluXG4gICAgICBpZiBtYXlfbmVlZF9zcGFjZSAmJiBuZXdfbWF5X25lZWRfc3BhY2UgdGhlbiBwcF9wcmludF9zdHJpbmcgcHBmIFwiIFwiO1xuICAgICAgcHBfcHJpbnRfc3RyaW5nIHBwZiBzdHInO1xuICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgfCBMaXN0IChoIDo6IHQpIC0+XG4gICAgICBwcF9wcmludF9zdHJpbmcgcHBmIFwiKFwiO1xuICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gcHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgaCBpblxuICAgICAgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiB0O1xuICAgICAgZmFsc2VcbiAgICB8IExpc3QgW10gLT5cbiAgICAgIHBwX3ByaW50X3N0cmluZyBwcGYgXCIoKVwiO1xuICAgICAgZmFsc2VcblxuICBhbmQgcHBfbWFjaF9yZXN0IG1heV9uZWVkX3NwYWNlIHBwZiA9IGZ1bmN0aW9uXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IHBwX21hY2hfaW50ZXJuYWwgbWF5X25lZWRfc3BhY2UgcHBmIGggaW5cbiAgICAgIHBwX21hY2hfcmVzdCBtYXlfbmVlZF9zcGFjZSBwcGYgdFxuICAgIHwgW10gLT4gcHBfcHJpbnRfc3RyaW5nIHBwZiBcIilcIlxuICA7O1xuXG4gIGxldCBwcF9odW0gcHBmIHNleHAgPSBwcF9odW1faW5kZW50ICFkZWZhdWx0X2luZGVudCBwcGYgc2V4cFxuICBsZXQgcHBfbWFjaCBwcGYgc2V4cCA9IGlnbm9yZSAocHBfbWFjaF9pbnRlcm5hbCBmYWxzZSBwcGYgc2V4cClcbiAgbGV0IHBwID0gcHBfbWFjaFxuXG4gICgqIFNleHAgc2l6ZSAqKVxuXG4gIGxldCByZWMgc2l6ZV9sb29wICgodiwgYykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIHN0ciAtPiB2ICsgMSwgYyArIFN0cmluZy5sZW5ndGggc3RyXG4gICAgfCBMaXN0IGxzdCAtPiBMaXN0LmZvbGRfbGVmdCBsc3QgfmluaXQ6YWNjIH5mOnNpemVfbG9vcFxuICA7O1xuXG4gIGxldCBzaXplIHNleHAgPSBzaXplX2xvb3AgKDAsIDApIHNleHBcblxuICAoKiBCdWZmZXIgY29udmVyc2lvbnMgKilcblxuICBsZXQgdG9fYnVmZmVyX2h1bSB+YnVmID8oaW5kZW50ID0gIWRlZmF1bHRfaW5kZW50KSBzZXhwID1cbiAgICBsZXQgcHBmID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgRm9ybWF0LmZwcmludGYgcHBmIFwiJWFAP1wiIChwcF9odW1faW5kZW50IGluZGVudCkgc2V4cFxuICA7O1xuXG4gIGxldCB0b19idWZmZXJfbWFjaCB+YnVmIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnICc7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzdHInO1xuICAgICAgICBuZXdfbWF5X25lZWRfc3BhY2VcbiAgICAgIHwgTGlzdCAoaCA6OiB0KSAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIigpXCI7XG4gICAgICAgIGZhbHNlXG4gICAgYW5kIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBsZXQgbWF5X25lZWRfc3BhY2UgPSBsb29wIG1heV9uZWVkX3NwYWNlIGggaW5cbiAgICAgICAgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlIHRcbiAgICAgIHwgW10gLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnKSdcbiAgICBpblxuICAgIGlnbm9yZSAobG9vcCBmYWxzZSBzZXhwKVxuICA7O1xuXG4gIGxldCB0b19idWZmZXIgPSB0b19idWZmZXJfbWFjaFxuXG4gIGxldCB0b19idWZmZXJfZ2VuIH5idWYgfmFkZF9jaGFyIH5hZGRfc3RyaW5nIHNleHAgPVxuICAgIGxldCByZWMgbG9vcCBtYXlfbmVlZF9zcGFjZSA9IGZ1bmN0aW9uXG4gICAgICB8IEF0b20gc3RyIC0+XG4gICAgICAgIGxldCBzdHInID0gbWFjaF9tYXliZV9lc2Nfc3RyIHN0ciBpblxuICAgICAgICBsZXQgbmV3X21heV9uZWVkX3NwYWNlID0gc3RyJyA9PSBzdHIgaW5cbiAgICAgICAgaWYgbWF5X25lZWRfc3BhY2UgJiYgbmV3X21heV9uZWVkX3NwYWNlIHRoZW4gYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgYWRkX3N0cmluZyBidWYgc3RyJztcbiAgICAgICAgbmV3X21heV9uZWVkX3NwYWNlXG4gICAgICB8IExpc3QgKGggOjogdCkgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICcoJztcbiAgICAgICAgbGV0IG1heV9uZWVkX3NwYWNlID0gbG9vcCBmYWxzZSBoIGluXG4gICAgICAgIGxvb3BfcmVzdCBtYXlfbmVlZF9zcGFjZSB0O1xuICAgICAgICBmYWxzZVxuICAgICAgfCBMaXN0IFtdIC0+XG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIFwiKClcIjtcbiAgICAgICAgZmFsc2VcbiAgICBhbmQgbG9vcF9yZXN0IG1heV9uZWVkX3NwYWNlID0gZnVuY3Rpb25cbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBtYXlfbmVlZF9zcGFjZSA9IGxvb3AgbWF5X25lZWRfc3BhY2UgaCBpblxuICAgICAgICBsb29wX3Jlc3QgbWF5X25lZWRfc3BhY2UgdFxuICAgICAgfCBbXSAtPiBhZGRfY2hhciBidWYgJyknXG4gICAgaW5cbiAgICBpZ25vcmUgKGxvb3AgZmFsc2Ugc2V4cClcbiAgOztcblxuICAoKiBUaGUgbWF4aW11bSBzaXplIG9mIGEgdGhpbmcgb24gdGhlIG1pbm9yIGhlYXAgaXMgMjU2IHdvcmRzLlxuICAgICBQcmV2aW91c2x5LCB0aGlzIHNpemUgb2YgdGhlIHJldHVybmVkIGJ1ZmZlciBoZXJlIHdhcyA0MDk2IGJ5dGVzLCB3aGljaFxuICAgICBjYXVzZWQgdGhlIEJ1ZmZlciB0byBiZSBhbGxvY2F0ZWQgb24gdGhlICptYWpvciogaGVhcCBldmVyeSB0aW1lLlxuXG4gICAgIEFjY29yZGluZyB0byBhIHNpbXBsZSBiZW5jaG1hcmsgYnkgUm9uLCB3ZSBjYW4gaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3JcbiAgICAgc21hbGwgcy1leHByZXNzaW9ucyBieSBhIGZhY3RvciBvZiB+NCBpZiB3ZSBvbmx5IGFsbG9jYXRlIDEwMjQgYnl0ZXNcbiAgICAgKDEyOCB3b3JkcyArIHNvbWUgc21hbGwgb3ZlcmhlYWQpIHdvcnRoIG9mIGJ1ZmZlciBpbml0aWFsbHkuICBBbmQgb25lXG4gICAgIGNhbiBhcmd1ZSB0aGF0IGlmIGl0J3MgZnJlZSB0byBhbGxvY2F0ZSBzdHJpbmdzIHNtYWxsZXIgdGhhbiAyNTYgd29yZHMsXG4gICAgIGxhcmdlIHMtZXhwcmVzc2lvbnMgcmVxdWlyaW5nIGxhcmdlciBleHBlbnNpdmUgYnVmZmVycyB3b24ndCBub3RpY2VcbiAgICAgdGhlIGV4dHJhIHR3byBkb3VibGluZ3MgZnJvbSAxMDI0IGJ5dGVzIHRvIDIwNDggYW5kIDQwOTYuIEFuZCBlc3BlY2lhbGx5XG4gICAgIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcHBsaWNhdGlvbnMgdG8gYWx3YXlzIHBhc3MgaW4gYSBsYXJnZXIgYnVmZmVyIHRvXG4gICAgIHVzZS4gKilcbiAgbGV0IGJ1ZmZlciAoKSA9IEJ1ZmZlci5jcmVhdGUgMTAyNFxuXG4gICgqIFN0cmluZyBjb252ZXJzaW9ucyAqKVxuXG4gIGxldCB0b19zdHJpbmdfaHVtID9pbmRlbnQgPSBmdW5jdGlvblxuICAgIHwgQXRvbSBzdHJcbiAgICAgIHdoZW4gbWF0Y2ggaW5kZXhfb2ZfbmV3bGluZSBzdHIgMCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBfIC0+IGZhbHNlIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9odW0gP2luZGVudCBzZXhwIH5idWY7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19tYWNoID0gZnVuY3Rpb25cbiAgICB8IEF0b20gc3RyIC0+IG1hY2hfbWF5YmVfZXNjX3N0ciBzdHJcbiAgICB8IHNleHAgLT5cbiAgICAgIGxldCBidWYgPSBidWZmZXIgKCkgaW5cbiAgICAgIHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZjtcbiAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nX21hY2hcbmVuZFxuXG5pbmNsdWRlIFByaW50aW5nXG5cbmxldCBvZl9mbG9hdF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xubGV0IG9mX2ludF9zdHlsZSA6IFsgYFVuZGVyc2NvcmVzIHwgYE5vX3VuZGVyc2NvcmVzIF0gcmVmID0gcmVmIGBOb191bmRlcnNjb3Jlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFByaW50aW5nXG5lbmRcblxubGV0IG1lc3NhZ2UgbmFtZSBmaWVsZHMgPVxuICBsZXQgcmVjIGNvbnZfZmllbGRzID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCAoZm5hbWUsIGZzZXhwKSA6OiByZXN0IC0+XG4gICAgICAobWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgIHwgXCJcIiAtPiBmc2V4cCA6OiBjb252X2ZpZWxkcyByZXN0XG4gICAgICAgfCBfIC0+IExpc3QgWyBBdG9tIGZuYW1lOyBmc2V4cCBdIDo6IGNvbnZfZmllbGRzIHJlc3QpXG4gIGluXG4gIExpc3QgKEF0b20gbmFtZSA6OiBjb252X2ZpZWxkcyBmaWVsZHMpXG47O1xuIiwiKCoqIFJlcHJlc2VudGF0aW9uIG9mIFMtZXhwcmVzc2lvbiBncmFtbWFycyAqKVxuXG4oKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBhIHJlcHJlc2VudGF0aW9uIGZvciBzLWV4cHJlc3Npb24gZ3JhbW1hcnMuIFVzaW5nIHBweF9zZXhwX2NvbnZcbiAgICBhbmQgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHByb2R1Y2VzIGEgZ3JhbW1hciB0aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgZGVyaXZlZFxuICAgIFtvZl9zZXhwXSBmb3IgYSBnaXZlbiB0eXBlLlxuXG4gICAgQXMgd2l0aCBvdGhlciBkZXJpdmVkIGRlZmluaXRpb25zLCBwb2x5bW9ycGhpYyB0eXBlcyBkZXJpdmUgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGFcbiAgICBncmFtbWFyIGZvciBlYWNoIHR5cGUgYXJndW1lbnQgYW5kIHByb2R1Y2VzIGEgZ3JhbW1hciBmb3IgdGhlIG1vbm9tb3JwaGl6ZWQgdHlwZS5cblxuICAgIE1vbm9tb3JwaGljIHR5cGVzIGRlcml2ZSBhIGdyYW1tYXIgZGlyZWN0bHkuIFRvIGF2b2lkIHRvcC1sZXZlbCBzaWRlIGVmZmVjdHMsXG4gICAgW1tAQGRlcml2aW5nIHNleHBfZ3JhbW1hcl1dIHdyYXBzIGdyYW1tYXJzIGluIHRoZSBbTGF6eV0gY29uc3RydWN0b3IgYXMgbmVlZGVkLlxuXG4gICAgVGhpcyB0eXBlIG1heSBjaGFuZ2Ugb3ZlciB0aW1lIGFzIG91ciBuZWVkcyBmb3IgZXhwcmVzc2l2ZSBncmFtbWFycyBjaGFuZ2UuIFdlIHdpbGxcbiAgICBhdHRlbXB0IHRvIG1ha2UgY2hhbmdlcyBiYWNrd2FyZC1jb21wYXRpYmxlLCBvciBhdCBsZWFzdCBwcm92aWRlIGEgcmVhc29uYWJsZSB1cGdyYWRlXG4gICAgcGF0aC4gKilcblxuW0BAQHdhcm5pbmcgXCItMzBcIl0gKCogYWxsb3cgZHVwbGljYXRlIGZpZWxkIG5hbWVzICopXG5cbigqKiBHcmFtbWFyIG9mIGEgc2V4cC4gKilcbnR5cGUgZ3JhbW1hciA9XG4gIHwgQW55IG9mIHN0cmluZyAoKiogYWNjZXB0cyBhbnkgc2V4cDsgc3RyaW5nIGlzIGEgdHlwZSBuYW1lIGZvciBodW1hbiByZWFkYWJpbGl0eSAqKVxuICB8IEJvb2wgKCoqIGFjY2VwdHMgdGhlIGF0b21zIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiwgbW9kdWxvIGNhcGl0YWxpemF0aW9uICopXG4gIHwgQ2hhciAoKiogYWNjZXB0cyBhbnkgc2luZ2xlLWNoYXJhY3RlciBhdG9tICopXG4gIHwgSW50ZWdlciAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBpbnRlZ2VyIHN5bnRheCwgcmVnYXJkbGVzcyBvZiBiaXQgd2lkdGggKilcbiAgfCBGbG9hdCAoKiogYWNjZXB0cyBhbnkgYXRvbSBtYXRjaGluZyBvY2FtbCBmbG9hdCBzeW50YXggKilcbiAgfCBTdHJpbmcgKCoqIGFjY2VwdHMgYW55IGF0b20gKilcbiAgfCBPcHRpb24gb2YgZ3JhbW1hciAoKiogYWNjZXB0cyBhbiBvcHRpb24sIGJvdGggW05vbmVdIHZzIFtTb21lIF9dIGFuZCBbKCldIHZzIFsoXyldLiAqKVxuICB8IExpc3Qgb2YgbGlzdF9ncmFtbWFyICgqKiBhY2NlcHRzIGEgbGlzdCAqKVxuICB8IFZhcmlhbnQgb2YgdmFyaWFudCAoKiogYWNjZXB0cyBjbGF1c2VzIGtleWVkIGJ5IGEgbGVhZGluZyBvciBzb2xlIGF0b20gKilcbiAgfCBVbmlvbiBvZiBncmFtbWFyIGxpc3QgKCoqIGFjY2VwdHMgYSBzZXhwIGlmIGFueSBvZiB0aGUgbGlzdGVkIGdyYW1tYXJzIGFjY2VwdHMgaXQgKilcbiAgfCBUYWdnZWQgb2YgZ3JhbW1hciB3aXRoX3RhZ1xuICAoKiogYW5ub3RhdGVzIGEgZ3JhbW1hciB3aXRoIGEgY2xpZW50LXNwZWNpZmljIGtleS92YWx1ZSBwYWlyICopXG4gIHwgVHl2YXIgb2Ygc3RyaW5nXG4gICgqKiBOYW1lIG9mIGEgdHlwZSB2YXJpYWJsZSwgZS5nLiBbVHl2YXIgXCJhXCJdIGZvciBbJ2FdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgYm9keSBvZlxuICAgICAgdGhlIGlubmVybW9zdCBlbmNsb3NpbmcgW2RlZm5dIGRlZmluZXMgYSBjb3JyZXNwb25kaW5nIHR5cGUgdmFyaWFibGUuICopXG4gIHwgVHljb24gb2Ygc3RyaW5nICogZ3JhbW1hciBsaXN0XG4gICgqKiBUeXBlIGNvbnN0cnVjdG9yIGFwcGxpZWQgdG8gYXJndW1lbnRzLiBGb3IgZXhhbXBsZSwgW1R5Y29uIChcImxpc3RcIiwgWyBJbnRlZ2VyIF0pXVxuICAgICAgcmVwcmVzZW50cyBbaW50IGxpc3RdLiBPbmx5IG1lYW5pbmdmdWwgd2hlbiB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyBbUmVjdXJzaXZlXVxuICAgICAgZ3JhbW1hciBkZWZpbmVzIGEgY29ycmVzcG9uZGluZyB0eXBlIGNvbnN0cnVjdG9yLiAqKVxuICB8IFJlY3Vyc2l2ZSBvZiBncmFtbWFyICogZGVmbiBsaXN0XG4gICgqKiBbUmVjdXJzaXZlIChncmFtbWFyLCBkZWZpbml0aW9ucyldIGFsbG93cyBbZ3JhbW1hcl0gdG8gcmVmZXIgdG8gdHlwZSBjb25zdHJ1Y3RvcnNcbiAgICAgIGZyb20gdGhlIG11dHVhbGx5IHJlY3Vyc2l2ZSBbZGVmaW5pdGlvbnNdLiBUaGUgZGVmaW5pdGlvbnMgbWF5IGFsc28gcmVmZXIgdG8gZWFjaFxuICAgICAgb3RoZXJzJyB0eXBlIGNvbnN0cnVjdG9ycy5cblxuICAgICAgT3JkaW5hcmlseSwgW2dyYW1tYXJdIGl0c2VsZiBpcyBqdXN0IGEgW1R5Y29uXSBhcmd1bWVudCwgYWx0aG91Z2ggdGVjaG5pY2FsbHkgaXQgY2FuXG4gICAgICBiZSBhbnkgZ3JhbW1hci5cblxuICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgZGVmaW5lIGEgYmluYXJ5IHRyZWUgcGFyYW1ldGVyaXplZCBieSBhIHR5cGVcbiAgICAgIHN0b3JlZCBhdCBpdHMgbGVhdmVzLlxuXG4gICAgICB7W1xuICAgICAgICBsZXQgZGVmbnMgPVxuICAgICAgICAgIFsgeyB0eWNvbiA9IFwidHJlZVwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgICAgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgeyBuYW1lX2tpbmQgPSBDYXBpdGFsaXplZFxuICAgICAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgICAgICBbIHsgbmFtZSA9IFwiTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJub2RlXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA7IHsgbmFtZSA9IFwiVHJlZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA7IGFyZ3MgPSBDb25zIChUeWNvbiAoXCJsZWFmXCIsIFtUeXZhciBcImFcIl0pLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgOyB7IHR5Y29uID0gXCJub2RlXCJcbiAgICAgICAgICAgIDsgdHl2YXJzID0gW1wiYVwiXVxuICAgICAgICAgICAgOyBncmFtbWFyID0gTGlzdCAoTWFueSAoVHljb24gXCJ0cmVlXCIsIFtUeXZhciBcImFcIl0pKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDsgeyB0eWNvbiA9IFwibGVhZlwiXG4gICAgICAgICAgICA7IHR5dmFycyA9IFtcImFcIl1cbiAgICAgICAgICAgIDsgZ3JhbW1hciA9IFtUeXZhciBcImFcIl1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIDs7XG4gICAgICBdfVxuXG4gICAgICBOb3JtYWxseSwgdGhlIHR5cGUgb2YgYSB0cmVlIHN0b3JpbmcgaW50ZWdlcnMgd291bGQgYmUgd3JpdHRlbiBsaWtlIHRoaXM6XG5cbiAgICAgIHtbXG4gICAgICAgIFJlY3Vyc2l2ZSAoVHljb24gKFwidHJlZVwiLCBbIEludGVnZXIgXSksIGRlZm5zKVxuICAgICAgXX1cblxuICAgICAgSXQgaXMgZXF1aXZhbGVudCwgdGhvdWdoIG5lZWRsZXNzbHkgdmVyYm9zZSwgdG8gcmVwbGFjZSB0aGUgW1R5Y29uXSByZWZlcmVuY2Ugd2l0aFxuICAgICAgdGhlIGdyYW1tYXIgb2YgW1widHJlZVwiXSwgc3Vic3RpdHV0aW5nIFtJbnRlZ2VyXSBmb3IgW1R5dmFyIFwiYVwiXTpcblxuICAgICAge1tcbiAgICAgICAgUmVjdXJzaXZlXG4gICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgIHsgbmFtZV9raW5kID0gQ2FwaXRhbGl6ZWRcbiAgICAgICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgICAgIFsgeyBuYW1lID0gXCJOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibm9kZVwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDsgeyBuYW1lID0gXCJUcmVlXCJcbiAgICAgICAgICAgICAgICAgICAgOyBhcmdzID0gQ29ucyAoVHljb24gKFwibGVhZlwiLCBbVHl2YXIgXCJhXCJdKSwgRW1wdHkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICwgZGVmbnMgKVxuICAgICAgXX1cbiAgKilcbiAgfCBMYXp5IG9mIGdyYW1tYXIgbGF6eV90XG4gICgqKiBMYXppbHkgY29tcHV0ZWQgZ3JhbW1hci4gVXNlIFtMYXp5XSB0byBhdm9pZCB0b3AtbGV2ZWwgc2lkZSBlZmZlY3RzLiBUbyBkZWZpbmVcbiAgICAgIHJlY3Vyc2l2ZSBncmFtbWFycywgdXNlIFtSZWN1cnNpdmVdIGluc3RlYWQuICopXG5cbigqKiBHcmFtbWFyIG9mIGEgbGlzdCBvZiBzZXhwcy4gKilcbmFuZCBsaXN0X2dyYW1tYXIgPVxuICB8IEVtcHR5ICgqKiBhY2NlcHRzIGFuIGVtcHR5IGxpc3Qgb2Ygc2V4cHMgKilcbiAgfCBDb25zIG9mIGdyYW1tYXIgKiBsaXN0X2dyYW1tYXJcbiAgKCoqIGFjY2VwdHMgYSBub24tZW1wdHkgbGlzdCB3aXRoIGhlYWQgYW5kIHRhaWwgbWF0Y2hpbmcgdGhlIGdpdmVuIGdyYW1tYXJzICopXG4gIHwgTWFueSBvZiBncmFtbWFyICgqKiBhY2NlcHRzIHplcm8gb3IgbW9yZSBzZXhwcywgZWFjaCBtYXRjaGluZyB0aGUgZ2l2ZW4gZ3JhbW1hciAqKVxuICB8IEZpZWxkcyBvZiByZWNvcmQgKCoqIGFjY2VwdHMgc2V4cHMgcmVwcmVzZW50aW5nIGZpZWxkcyBvZiBhIHJlY29yZCAqKVxuXG4oKiogQ2FzZSBzZW5zaXRpdml0eSBvcHRpb25zIGZvciBuYW1lcyBvZiB2YXJpYW50IGNvbnN0cnVjdG9ycy4gKilcbmFuZCBjYXNlX3NlbnNpdGl2aXR5ID1cbiAgfCBDYXNlX2luc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUuIFVzZWQgZm9yIGN1c3RvbSBwYXJzZXJzLiAqKVxuICB8IENhc2Vfc2Vuc2l0aXZlICgqKiBDb21wYXJpc29uIGlzIGNhc2Ugc2Vuc2l0aXZlLiBVc2VkIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cy4gKilcbiAgfCBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICgqKiBDb21wYXJpc29uIGlzIGNhc2UgaW5zZW5zaXRpdmUgZm9yIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGNhc2Ugc2Vuc2l0aXZlIGFmdGVyd2FyZC5cbiAgICAgIFVzZWQgZm9yIHJlZ3VsYXIgdmFyaWFudHMuICopXG5cbigqKiBHcmFtbWFyIG9mIHZhcmlhbnRzLiBBY2NlcHRzIGFueSBzZXhwIG1hdGNoaW5nIG9uZSBvZiB0aGUgY2xhdXNlcy4gKilcbmFuZCB2YXJpYW50ID1cbiAgeyBjYXNlX3NlbnNpdGl2aXR5IDogY2FzZV9zZW5zaXRpdml0eVxuICA7IGNsYXVzZXMgOiBjbGF1c2Ugd2l0aF90YWdfbGlzdCBsaXN0XG4gIH1cblxuKCoqIEdyYW1tYXIgb2YgYSBzaW5nbGUgdmFyaWFudCBjbGF1c2UuIEFjY2VwdHMgc2V4cHMgYmFzZWQgb24gdGhlIFtjbGF1c2Vfa2luZF0uICopXG5hbmQgY2xhdXNlID1cbiAgeyBuYW1lIDogc3RyaW5nXG4gIDsgY2xhdXNlX2tpbmQgOiBjbGF1c2Vfa2luZFxuICB9XG5cbigqKiBHcmFtbWFyIG9mIGEgc2luZ2xlIHZhcmlhbnQgY2xhdXNlJ3MgY29udGVudHMuIFtBdG9tX2NsYXVzZV0gYWNjZXB0cyBhbiBhdG9tIG1hdGNoaW5nXG4gICAgdGhlIGNsYXVzZSdzIG5hbWUuIFtMaXN0X2NsYXVzZV0gYWNjZXB0cyBhIGxpc3Qgd2hvc2UgaGVhZCBpcyBhbiBhdG9tIG1hdGNoaW5nIHRoZVxuICAgIGNsYXVzZSdzIG5hbWUgYW5kIHdob3NlIHRhaWwgbWF0Y2hlcyBbYXJnc10uIFRoZSBjbGF1c2UncyBuYW1lIGlzIG1hdGNoZWQgbW9kdWxvIHRoZVxuICAgIHZhcmlhbnQncyBbbmFtZV9raW5kXS4gKilcbmFuZCBjbGF1c2Vfa2luZCA9XG4gIHwgQXRvbV9jbGF1c2VcbiAgfCBMaXN0X2NsYXVzZSBvZiB7IGFyZ3MgOiBsaXN0X2dyYW1tYXIgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZC4gQWNjZXB0cyBhbnkgbGlzdCBvZiBzZXhwcyBzcGVjaWZ5aW5nIGVhY2ggb2YgdGhlIGZpZWxkcyxcbiAgICByZWdhcmRsZXNzIG9mIG9yZGVyLiBJZiBbYWxsb3dfZXh0cmFfZmllbGRzXSBpcyBzcGVjaWZpZWQsIGlnbm9yZXMgc2V4cHMgd2l0aCBuYW1lc1xuICAgIG5vdCBmb3VuZCBpbiBbZmllbGRzXS4gKilcbmFuZCByZWNvcmQgPVxuICB7IGFsbG93X2V4dHJhX2ZpZWxkcyA6IGJvb2xcbiAgOyBmaWVsZHMgOiBmaWVsZCB3aXRoX3RhZ19saXN0IGxpc3RcbiAgfVxuXG4oKiogR3JhbW1hciBvZiBhIHJlY29yZCBmaWVsZC4gQSBmaWVsZCBtdXN0IHNob3cgdXAgZXhhY3RseSBvbmNlIGluIGEgcmVjb3JkIGlmXG4gICAgW3JlcXVpcmVkXSwgb3IgYXQgbW9zdCBvbmNlIG90aGVyd2lzZS4gQWNjZXB0cyBhIGxpc3QgaGVhZGVkIGJ5IFtuYW1lXSBhcyBhbiBhdG9tLFxuICAgIGZvbGxvd2VkIGJ5IHNleHBzIG1hdGNoaW5nIFthcmdzXS4gKilcbmFuZCBmaWVsZCA9XG4gIHsgbmFtZSA6IHN0cmluZ1xuICA7IHJlcXVpcmVkIDogYm9vbFxuICA7IGFyZ3MgOiBsaXN0X2dyYW1tYXJcbiAgfVxuXG4oKiogR3JhbW1hciB0YWdnZWQgd2l0aCBjbGllbnQtc3BlY2lmaWMga2V5L3ZhbHVlIHBhaXIuICopXG5hbmQgJ2Egd2l0aF90YWcgPVxuICB7IGtleSA6IHN0cmluZ1xuICA7IHZhbHVlIDogU2V4cC50XG4gIDsgZ3JhbW1hciA6ICdhXG4gIH1cblxuYW5kICdhIHdpdGhfdGFnX2xpc3QgPVxuICB8IFRhZyBvZiAnYSB3aXRoX3RhZ19saXN0IHdpdGhfdGFnXG4gIHwgTm9fdGFnIG9mICdhXG5cbigqKiBHcmFtbWFyIG9mIGEgcmVjdXJzaXZlIHR5cGUgZGVmaW5pdGlvbi4gTmFtZXMgdGhlIFt0eWNvbl0gYmVpbmcgZGVmaW5lZCwgYW5kIHRoZVxuICAgIFt0eXZhcnNdIGl0IHRha2VzIGFzIHBhcmFtZXRlcnMuIFNwZWNpZmllcyB0aGUgW2dyYW1tYXJdIG9mIHRoZSBbdHljb25dLiBUaGUgZ3JhbW1hclxuICAgIG1heSByZWZlciB0byBhbnkgb2YgdGhlIFt0eXZhcnNdLCBhbmQgdG8gYW55IG9mIHRoZSBbdHljb25dcyBmcm9tIHRoZSBzYW1lIHNldCBvZlxuICAgIFtSZWN1cnNpdmVdIGRlZmluaXRpb25zLiAqKVxuYW5kIGRlZm4gPVxuICB7IHR5Y29uIDogc3RyaW5nXG4gIDsgdHl2YXJzIDogc3RyaW5nIGxpc3RcbiAgOyBncmFtbWFyIDogZ3JhbW1hclxuICB9XG5cbigqKiBUb3AtbGV2ZWwgZ3JhbW1hciB0eXBlLiBIYXMgYSBwaGFudG9tIHR5cGUgcGFyYW1ldGVyIHRvIGFzc29jaWF0ZSBlYWNoIGdyYW1tYXIgd2l0aFxuICAgIHRoZSB0eXBlIGl0cyBzZXhwcyByZXByZXNlbnQuIFRoaXMgbWFrZXMgaXQgaGFyZGVyIHRvIGFwcGx5IGdyYW1tYXJzIHRvIHRoZSB3cm9uZ1xuICAgIHR5cGUsIHdoaWxlIGdyYW1tYXJzIGNhbiBzdGlsbCBiZSBlYXNpbHkgY29lcmNlZCB0byBhIG5ldyB0eXBlIGlmIG5lZWRlZC4gKilcbnR5cGUgXyB0ID0geyB1bnR5cGVkIDogZ3JhbW1hciB9IFtAQHVuYm94ZWRdXG5cbmxldCBjb2VyY2UgKHR5cGUgYSBiKSAoeyB1bnR5cGVkID0gXyB9IGFzIHQgOiBhIHQpIDogYiB0ID0gdFxuXG4oKiogVGhpcyByZXNlcnZlZCBrZXkgaXMgdXNlZCBmb3IgYWxsIHRhZ3MgZ2VuZXJhdGVkIGZyb20gZG9jIGNvbW1lbnRzLiAqKVxubGV0IGRvY19jb21tZW50X3RhZyA9IFwic2V4cF9ncmFtbWFyLmRvY19jb21tZW50XCJcbiIsImxldCB1bml0X3NleHBfZ3JhbW1hciA6IHVuaXQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBMaXN0IEVtcHR5IH1cbmxldCBib29sX3NleHBfZ3JhbW1hciA6IGJvb2wgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBCb29sIH1cbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gU3RyaW5nIH1cbmxldCBieXRlc19zZXhwX2dyYW1tYXIgOiBieXRlcyBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5sZXQgY2hhcl9zZXhwX2dyYW1tYXIgOiBjaGFyIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gQ2hhciB9XG5sZXQgaW50X3NleHBfZ3JhbW1hciA6IGludCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEludGVnZXIgfVxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA6IGZsb2F0IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gRmxvYXQgfVxubGV0IGludDMyX3NleHBfZ3JhbW1hciA6IGludDMyIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyIDogaW50NjQgU2V4cF9ncmFtbWFyLnQgPSB7IHVudHlwZWQgPSBJbnRlZ2VyIH1cbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyIDogbmF0aXZlaW50IFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gSW50ZWdlciB9XG5sZXQgc2V4cF90X3NleHBfZ3JhbW1hciA6IFNleHAudCBTZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIlNleHAudFwiIH1cbmxldCByZWZfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwX2dyYW1tYXIuY29lcmNlIGdyYW1tYXJcbmxldCBsYXp5X3Rfc2V4cF9ncmFtbWFyIGdyYW1tYXIgPSBTZXhwX2dyYW1tYXIuY29lcmNlIGdyYW1tYXJcblxubGV0IG9wdGlvbl9zZXhwX2dyYW1tYXIgKHsgdW50eXBlZCB9IDogXyBTZXhwX2dyYW1tYXIudCkgOiBfIG9wdGlvbiBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IE9wdGlvbiB1bnR5cGVkIH1cbjs7XG5cbmxldCBsaXN0X3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gbGlzdCBTZXhwX2dyYW1tYXIudCA9XG4gIHsgdW50eXBlZCA9IExpc3QgKE1hbnkgdW50eXBlZCkgfVxuOztcblxubGV0IGFycmF5X3NleHBfZ3JhbW1hciAoeyB1bnR5cGVkIH0gOiBfIFNleHBfZ3JhbW1hci50KSA6IF8gYXJyYXkgU2V4cF9ncmFtbWFyLnQgPVxuICB7IHVudHlwZWQgPSBMaXN0IChNYW55IHVudHlwZWQpIH1cbjs7XG5cbmxldCBlbXB0eV9zZXhwX2dyYW1tYXIgOiBfIFNleHBfZ3JhbW1hci50ID0geyB1bnR5cGVkID0gVW5pb24gW10gfVxubGV0IG9wYXF1ZV9zZXhwX2dyYW1tYXIgPSBlbXB0eV9zZXhwX2dyYW1tYXJcbmxldCBmdW5fc2V4cF9ncmFtbWFyID0gZW1wdHlfc2V4cF9ncmFtbWFyXG4iLCIoKiBVdGlsaXR5IE1vZHVsZSBmb3IgUy1leHByZXNzaW9uIENvbnZlcnNpb25zICopXG5cbm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4gUHJpbnRmXG5vcGVuIFNleHBcblxuKCogQ29udmVyc2lvbiBvZiBPQ2FtbC12YWx1ZXMgdG8gUy1leHByZXNzaW9ucyAqKVxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiAnJS4xN2cnIGlzIGd1YXJhbnRlZWQgdG8gYmUgcm91bmQtdHJpcHBhYmxlLlxuXG4gICAnJS4xNWcnIHdpbGwgYmUgcm91bmQtdHJpcHBhYmxlIGFuZCBub3QgaGF2ZSBub2lzZSBhdCB0aGUgbGFzdCBkaWdpdCBvciB0d28gZm9yIGEgZmxvYXRcbiAgIHdoaWNoIHdhcyBjb252ZXJ0ZWQgZnJvbSBhIGRlY2ltYWwgKHN0cmluZykgd2l0aCA8PSAxNSBzaWduaWZpY2FudCBkaWdpdHMuICBTbyBpdCdzXG4gICB3b3J0aCB0cnlpbmcgZmlyc3QgdG8gYXZvaWQgdGhpbmdzIGxpa2UgXCIzLjE0MDAwMDAwMDAwMDAwMDFcIi5cblxuICAgU2VlIGNvbW1lbnQgYWJvdmUgW3RvX3N0cmluZ19yb3VuZF90cmlwcGFibGVdIGluIHshQ29yZS5GbG9hdH0gZm9yXG4gICBkZXRhaWxlZCBleHBsYW5hdGlvbiBhbmQgZXhhbXBsZXMuICopXG5sZXQgZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgPVxuICByZWYgKGZ1biB4IC0+XG4gICAgbGV0IHkgPSBmb3JtYXRfZmxvYXQgXCIlLjE1R1wiIHggaW5cbiAgICBpZiBmbG9hdF9vZl9zdHJpbmcgeSA9IHggdGhlbiB5IGVsc2UgZm9ybWF0X2Zsb2F0IFwiJS4xN0dcIiB4KVxuOztcblxubGV0IHJlYWRfb2xkX29wdGlvbl9mb3JtYXQgPSByZWYgdHJ1ZVxubGV0IHdyaXRlX29sZF9vcHRpb25fZm9ybWF0ID0gcmVmIHRydWVcbmxldCBsaXN0X21hcCBmIGwgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIGwgfmYpXG5sZXQgc2V4cF9vZl91bml0ICgpID0gTGlzdCBbXVxubGV0IHNleHBfb2ZfYm9vbCBiID0gQXRvbSAoc3RyaW5nX29mX2Jvb2wgYilcbmxldCBzZXhwX29mX3N0cmluZyBzdHIgPSBBdG9tIHN0clxubGV0IHNleHBfb2ZfYnl0ZXMgYnl0ZXMgPSBBdG9tIChCeXRlcy50b19zdHJpbmcgYnl0ZXMpXG5sZXQgc2V4cF9vZl9jaGFyIGMgPSBBdG9tIChTdHJpbmcubWFrZSAxIGMpXG5sZXQgc2V4cF9vZl9pbnQgbiA9IEF0b20gKHN0cmluZ19vZl9pbnQgbilcbmxldCBzZXhwX29mX2Zsb2F0IG4gPSBBdG9tICghZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgbilcbmxldCBzZXhwX29mX2ludDMyIG4gPSBBdG9tIChJbnQzMi50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX2ludDY0IG4gPSBBdG9tIChJbnQ2NC50b19zdHJpbmcgbilcbmxldCBzZXhwX29mX25hdGl2ZWludCBuID0gQXRvbSAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHNleHBfb2ZfcmVmIHNleHBfb2ZfX2EgcmYgPSBzZXhwX29mX19hICFyZlxubGV0IHNleHBfb2ZfbGF6eV90IHNleHBfb2ZfX2EgbHYgPSBzZXhwX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9fYSA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IHdoZW4gIXdyaXRlX29sZF9vcHRpb25fZm9ybWF0IC0+IExpc3QgWyBzZXhwX29mX19hIHggXVxuICB8IFNvbWUgeCAtPiBMaXN0IFsgQXRvbSBcInNvbWVcIjsgc2V4cF9vZl9fYSB4IF1cbiAgfCBOb25lIHdoZW4gIXdyaXRlX29sZF9vcHRpb25fZm9ybWF0IC0+IExpc3QgW11cbiAgfCBOb25lIC0+IEF0b20gXCJub25lXCJcbjs7XG5cbmxldCBzZXhwX29mX3BhaXIgc2V4cF9vZl9fYSBzZXhwX29mX19iIChhLCBiKSA9IExpc3QgWyBzZXhwX29mX19hIGE7IHNleHBfb2ZfX2IgYiBdXG5cbmxldCBzZXhwX29mX3RyaXBsZSBzZXhwX29mX19hIHNleHBfb2ZfX2Igc2V4cF9vZl9fYyAoYSwgYiwgYykgPVxuICBMaXN0IFsgc2V4cF9vZl9fYSBhOyBzZXhwX29mX19iIGI7IHNleHBfb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgc2V4cF9vZl9saXN0IHNleHBfb2ZfX2EgbHN0ID0gTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBsc3QgfmY6c2V4cF9vZl9fYSkpXG5cbmxldCBzZXhwX29mX2FycmF5IHNleHBfb2ZfX2EgYXIgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5Lmxlbmd0aCBhciAtIDEgZG93bnRvIDAgZG9cbiAgICBsc3RfcmVmIDo9IHNleHBfb2ZfX2EgYXIuKGkpIDo6ICFsc3RfcmVmXG4gIGRvbmU7XG4gIExpc3QgIWxzdF9yZWZcbjs7XG5cbmxldCBzZXhwX29mX2hhc2h0Ymwgc2V4cF9vZl9rZXkgc2V4cF9vZl92YWwgaHRibCA9XG4gIGxldCBjb2xsIH5rZXk6ayB+ZGF0YTp2IGFjYyA9IExpc3QgWyBzZXhwX29mX2tleSBrOyBzZXhwX29mX3ZhbCB2IF0gOjogYWNjIGluXG4gIExpc3QgKEhhc2h0YmwuZm9sZCBodGJsIH5pbml0OltdIH5mOmNvbGwpXG47O1xuXG5sZXQgc2V4cF9vZl9vcGFxdWUgXyA9IEF0b20gXCI8b3BhcXVlPlwiXG5sZXQgc2V4cF9vZl9mdW4gXyA9IEF0b20gXCI8ZnVuPlwiXG5cbigqIEV4Y2VwdGlvbiBjb252ZXJ0ZXIgcmVnaXN0cmF0aW9uIGFuZCBsb29rdXAgKilcblxubW9kdWxlIEV4bl9jb252ZXJ0ZXIgPSBzdHJ1Y3RcbiAgKCogVGhlc2UgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXNzdW1lIHRoYXQgY29udGV4dC1zd2l0Y2hlc1xuICAgICBjYW5ub3QgaGFwcGVuIHVubGVzcyB0aGVyZSBpcyBhbiBhbGxvY2F0aW9uLiAgSXQgaXMgcmVhc29uYWJsZSB0byBleHBlY3RcbiAgICAgdGhhdCB0aGlzIHdpbGwgcmVtYWluIHRydWUgZm9yIHRoZSBmb3Jlc2VlYWJsZSBmdXR1cmUuICBUaGF0IHdheSB3ZVxuICAgICBhdm9pZCB1c2luZyBtdXRleGVzIGFuZCB0aHVzIGEgZGVwZW5kZW5jeSBvbiB0aGUgdGhyZWFkcyBsaWJyYXJ5LiAqKVxuXG4gICgqIEZhc3QgYW5kIGF1dG9tYXRpYyBleGNlcHRpb24gcmVnaXN0cmF0aW9uICopXG5cbiAgbW9kdWxlIFJlZ2lzdHJhdGlvbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHNleHBfb2ZfZXhuIDogZXhuIC0+IFNleHAudFxuICAgICAgOyAoKiBJZiBbcHJpbnRleGMgPSB0cnVlXSB0aGVuIHRoaXMgc2V4cCBjb252ZXJ0ZXIgaXMgdXNlZCBmb3IgUHJpbnRleGMudG9fc3RyaW5nICopXG4gICAgICAgIHByaW50ZXhjIDogYm9vbFxuICAgICAgfVxuICBlbmRcblxuICBtb2R1bGUgRXhuX3RhYmxlID0gRXBoZW1lcm9uLksxLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG5cbiAgICAgIGxldCBlcXVhbCA9ICggPT0gKVxuICAgICAgbGV0IGhhc2ggPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkXG4gICAgZW5kKVxuXG4gIGxldCB0aGVfZXhuX3RhYmxlIDogUmVnaXN0cmF0aW9uLnQgRXhuX3RhYmxlLnQgPSBFeG5fdGFibGUuY3JlYXRlIDE3XG5cbiAgKCogRXBoZW1lcm9ucyBhcmUgdXNlZCBzbyB0aGF0IFtzZXhwX29mX2V4bl0gY2xvc3VyZSBkb24ndCBrZWVwIHRoZVxuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgbGl2ZS4gKilcbiAgbGV0IGFkZCA/KHByaW50ZXhjID0gdHJ1ZSkgP2ZpbmFsaXNlOl8gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHNleHBfb2ZfZXhuID1cbiAgICBFeG5fdGFibGUuYWRkIHRoZV9leG5fdGFibGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHsgc2V4cF9vZl9leG47IHByaW50ZXhjIH1cbiAgOztcblxuICBsZXQgZmluZF9hdXRvIH5mb3JfcHJpbnRleGMgZXhuID1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhuIGluXG4gICAgbWF0Y2ggRXhuX3RhYmxlLmZpbmRfb3B0IHRoZV9leG5fdGFibGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB7IHNleHBfb2ZfZXhuOyBwcmludGV4YyB9IC0+XG4gICAgICAobWF0Y2ggZm9yX3ByaW50ZXhjLCBwcmludGV4YyB3aXRoXG4gICAgICAgfCBmYWxzZSwgXyB8IF8sIHRydWUgLT4gU29tZSAoc2V4cF9vZl9leG4gZXhuKVxuICAgICAgIHwgdHJ1ZSwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBtb2R1bGUgRm9yX3VuaXRfdGVzdHNfb25seSA9IHN0cnVjdFxuICAgIGxldCBzaXplICgpID0gKEV4bl90YWJsZS5zdGF0c19hbGl2ZSB0aGVfZXhuX3RhYmxlKS5udW1fYmluZGluZ3NcbiAgZW5kXG5lbmRcblxubGV0IHNleHBfb2ZfZXhuX29wdF9mb3JfcHJpbnRleGMgZXhuID0gRXhuX2NvbnZlcnRlci5maW5kX2F1dG8gfmZvcl9wcmludGV4Yzp0cnVlIGV4blxubGV0IHNleHBfb2ZfZXhuX29wdCBleG4gPSBFeG5fY29udmVydGVyLmZpbmRfYXV0byB+Zm9yX3ByaW50ZXhjOmZhbHNlIGV4blxuXG5sZXQgc2V4cF9vZl9leG4gZXhuID1cbiAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IGV4biB3aXRoXG4gIHwgTm9uZSAtPiBMaXN0IFsgQXRvbSAoUHJpbnRleGMudG9fc3RyaW5nIGV4bikgXVxuICB8IFNvbWUgc2V4cCAtPiBzZXhwXG47O1xuXG5sZXQgZXhuX3RvX3N0cmluZyBlID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX2V4biBlKVxuXG4oKiB7W2V4Y2VwdGlvbiBCbGFoIFtAQGRlcml2aW5nIHNleHBdXX0gZ2VuZXJhdGVzIGEgY2FsbCB0byB0aGUgZnVuY3Rpb25cbiAgIFtFeG5fY29udmVydGVyLmFkZF0gZGVmaW5lZCBpbiB0aGlzIGZpbGUuICBTbyB3ZSBhcmUgZ3VhcmFudGVkIHRoYXQgYXMgc29vbiBhcyB3ZVxuICAgbWFyayBhbiBleGNlcHRpb24gYXMgc2V4cGFibGUsIHRoaXMgbW9kdWxlIHdpbGwgYmUgbGlua2VkIGluIGFuZCB0aGlzIHByaW50ZXIgd2lsbCBiZVxuICAgcmVnaXN0ZXJlZCwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LiAqKVxubGV0ICgpID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuIGV4biAtPlxuICAgIG1hdGNoIHNleHBfb2ZfZXhuX29wdF9mb3JfcHJpbnRleGMgZXhuIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBzZXhwIC0+IFNvbWUgKFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgc2V4cCkpXG47O1xuXG5sZXQgcHJpbnRleGNfcHJlZmVyX3NleHAgZXhuID1cbiAgbWF0Y2ggc2V4cF9vZl9leG5fb3B0IGV4biB3aXRoXG4gIHwgTm9uZSAtPiBQcmludGV4Yy50b19zdHJpbmcgZXhuXG4gIHwgU29tZSBzZXhwIC0+IFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgc2V4cFxuOztcblxuKCogQ29udmVyc2lvbiBvZiBTLWV4cHJlc3Npb25zIHRvIE9DYW1sLXZhbHVlcyAqKVxuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IFNleHAuT2Zfc2V4cF9lcnJvclxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhjIHNleHAgPSByYWlzZSAoT2Zfc2V4cF9lcnJvciAoZXhjLCBzZXhwKSlcbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9IHJhaXNlIChPZl9zZXhwX2Vycm9yIChGYWlsdXJlIHdoYXQsIHNleHApKVxuXG5sZXQgdW5pdF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+ICgpXG4gIHwgQXRvbSBfIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJ1bml0X29mX3NleHA6IGVtcHR5IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGJvb2xfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSAoXCJ0cnVlXCIgfCBcIlRydWVcIikgLT4gdHJ1ZVxuICB8IEF0b20gKFwiZmFsc2VcIiB8IFwiRmFsc2VcIikgLT4gZmFsc2VcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImJvb2xfb2Zfc2V4cDogdW5rbm93biBzdHJpbmdcIiBzZXhwXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJib29sX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHN0cmluZ19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPiBzdHJcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcInN0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBieXRlc19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPiBCeXRlcy5vZl9zdHJpbmcgc3RyXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJieXRlc19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjaGFyX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgaWYgU3RyaW5nLmxlbmd0aCBzdHIgPD4gMVxuICAgIHRoZW4gb2Zfc2V4cF9lcnJvciBcImNoYXJfb2Zfc2V4cDogYXRvbSBzdHJpbmcgbXVzdCBjb250YWluIG9uZSBjaGFyYWN0ZXIgb25seVwiIHNleHA7XG4gICAgc3RyLlswXVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiY2hhcl9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBpbnRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IGludF9vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImludF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBmbG9hdF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBBdG9tIHN0ciAtPlxuICAgICh0cnkgZmxvYXRfb2Zfc3RyaW5nIHN0ciB3aXRoXG4gICAgIHwgZXhjIC0+IG9mX3NleHBfZXJyb3IgKFwiZmxvYXRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGludDMyX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gc3RyIC0+XG4gICAgKHRyeSBJbnQzMi5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJpbnQzMl9vZl9zZXhwOiBcIiBeIGV4bl90b19zdHJpbmcgZXhjKSBzZXhwKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiaW50MzJfb2Zfc2V4cDogYXRvbSBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaW50NjRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IEludDY0Lm9mX3N0cmluZyBzdHIgd2l0aFxuICAgICB8IGV4YyAtPiBvZl9zZXhwX2Vycm9yIChcImludDY0X29mX3NleHA6IFwiIF4gZXhuX3RvX3N0cmluZyBleGMpIHNleHApXG4gIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJpbnQ2NF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICAodHJ5IE5hdGl2ZWludC5vZl9zdHJpbmcgc3RyIHdpdGhcbiAgICAgfCBleGMgLT4gb2Zfc2V4cF9lcnJvciAoXCJuYXRpdmVpbnRfb2Zfc2V4cDogXCIgXiBleG5fdG9fc3RyaW5nIGV4Yykgc2V4cClcbiAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm5hdGl2ZWludF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCByZWZfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPSByZWYgKGFfX29mX3NleHAgc2V4cClcbmxldCBsYXp5X3Rfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPSBMYXp5LmZyb21fdmFsIChhX19vZl9zZXhwIHNleHApXG5cbmxldCBvcHRpb25fb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBpZiAhcmVhZF9vbGRfb3B0aW9uX2Zvcm1hdFxuICB0aGVuIChcbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgW10gfCBBdG9tIChcIm5vbmVcIiB8IFwiTm9uZVwiKSAtPiBOb25lXG4gICAgfCBMaXN0IFsgZWwgXSB8IExpc3QgWyBBdG9tIChcInNvbWVcIiB8IFwiU29tZVwiKTsgZWwgXSAtPiBTb21lIChhX19vZl9zZXhwIGVsKVxuICAgIHwgTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJvcHRpb25fb2Zfc2V4cDogbGlzdCBtdXN0IHJlcHJlc2VudCBvcHRpb25hbCB2YWx1ZVwiIHNleHBcbiAgICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwib3B0aW9uX29mX3NleHA6IG9ubHkgbm9uZSBjYW4gYmUgYXRvbVwiIHNleHApXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSAoXCJub25lXCIgfCBcIk5vbmVcIikgLT4gTm9uZVxuICAgIHwgTGlzdCBbIEF0b20gKFwic29tZVwiIHwgXCJTb21lXCIpOyBlbCBdIC0+IFNvbWUgKGFfX29mX3NleHAgZWwpXG4gICAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBvbmx5IG5vbmUgY2FuIGJlIGF0b21cIiBzZXhwXG4gICAgfCBMaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIm9wdGlvbl9vZl9zZXhwOiBsaXN0IG11c3QgYmUgKHNvbWUgZWwpXCIgc2V4cClcbjs7XG5cbmxldCBwYWlyX29mX3NleHAgYV9fb2Zfc2V4cCBiX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFsgYV9zZXhwOyBiX3NleHAgXSAtPlxuICAgIGxldCBhID0gYV9fb2Zfc2V4cCBhX3NleHAgaW5cbiAgICBsZXQgYiA9IGJfX29mX3NleHAgYl9zZXhwIGluXG4gICAgYSwgYlxuICB8IExpc3QgXyAtPlxuICAgIG9mX3NleHBfZXJyb3IgXCJwYWlyX29mX3NleHA6IGxpc3QgbXVzdCBjb250YWluIGV4YWN0bHkgdHdvIGVsZW1lbnRzIG9ubHlcIiBzZXhwXG4gIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJwYWlyX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IHRyaXBsZV9vZl9zZXhwIGFfX29mX3NleHAgYl9fb2Zfc2V4cCBjX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFsgYV9zZXhwOyBiX3NleHA7IGNfc2V4cCBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl9zZXhwIGFfc2V4cCBpblxuICAgIGxldCBiID0gYl9fb2Zfc2V4cCBiX3NleHAgaW5cbiAgICBsZXQgYyA9IGNfX29mX3NleHAgY19zZXhwIGluXG4gICAgYSwgYiwgY1xuICB8IExpc3QgXyAtPlxuICAgIG9mX3NleHBfZXJyb3IgXCJ0cmlwbGVfb2Zfc2V4cDogbGlzdCBtdXN0IGNvbnRhaW4gZXhhY3RseSB0aHJlZSBlbGVtZW50cyBvbmx5XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwidHJpcGxlX29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGxpc3Rfb2Zfc2V4cCBhX19vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCByZXZfbHN0ID0gTGlzdC5yZXZfbWFwIGxzdCB+ZjphX19vZl9zZXhwIGluXG4gICAgTGlzdC5yZXYgcmV2X2xzdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwibGlzdF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBhcnJheV9vZl9zZXhwIGFfX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgW10gLT4gW3x8XVxuICB8IExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3NleHAgaCkgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJlc1xuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgcmVzLihpKSA8LSBhX19vZl9zZXhwIGg7XG4gICAgICAgIGxvb3AgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBsb29wIDEgdFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiYXJyYXlfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG47O1xuXG5sZXQgaGFzaHRibF9vZl9zZXhwIGtleV9vZl9zZXhwIHZhbF9vZl9zZXhwIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IGxzdCAtPlxuICAgIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgMCBpblxuICAgIGxldCBhY3QgPSBmdW5jdGlvblxuICAgICAgfCBMaXN0IFsga19zZXhwOyB2X3NleHAgXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl9zZXhwIGtfc2V4cCkgfmRhdGE6KHZhbF9vZl9zZXhwIHZfc2V4cClcbiAgICAgIHwgTGlzdCBfIHwgQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJoYXNodGJsX29mX3NleHA6IHR1cGxlIGxpc3QgbmVlZGVkXCIgc2V4cFxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiaGFzaHRibF9vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBvcGFxdWVfb2Zfc2V4cCBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciBcIm9wYXF1ZV9vZl9zZXhwOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgc2V4cFxuOztcblxubGV0IGZ1bl9vZl9zZXhwIHNleHAgPSBvZl9zZXhwX2Vycm9yIFwiZnVuX29mX3NleHA6IGNhbm5vdCBjb252ZXJ0IGZ1bmN0aW9uIHZhbHVlc1wiIHNleHBcblxuKCogU2V4cCBHcmFtbWFycyAqKVxuXG5pbmNsdWRlIFNleHBfY29udl9ncmFtbWFyXG5cbigqIFJlZ2lzdGVyaW5nIGRlZmF1bHQgZXhjZXB0aW9uIHByaW50ZXJzICopXG5cbmxldCBnZXRfZmxjX2Vycm9yIG5hbWUgKGZpbGUsIGxpbmUsIGNocikgPSBBdG9tIChzcHJpbnRmIFwiJXMgJXM6JWQ6JWRcIiBuYW1lIGZpbGUgbGluZSBjaHIpXG5cbmxldCAoKSA9XG4gIExpc3QuaXRlclxuICAgIH5mOihmdW4gKGV4dGVuc2lvbl9jb25zdHJ1Y3RvciwgaGFuZGxlcikgLT5cbiAgICAgIEV4bl9jb252ZXJ0ZXIuYWRkIH5wcmludGV4YzpmYWxzZSB+ZmluYWxpc2U6ZmFsc2UgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGhhbmRsZXIpXG4gICAgWyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEFzc2VydF9mYWlsdXJlXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFzc2VydF9mYWlsdXJlIGFyZyAtPiBnZXRfZmxjX2Vycm9yIFwiQXNzZXJ0X2ZhaWx1cmVcIiBhcmdcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEV4aXRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgRXhpdCAtPiBBdG9tIFwiRXhpdFwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFbmRfb2ZfZmlsZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBFbmRfb2ZfZmlsZSAtPiBBdG9tIFwiRW5kX29mX2ZpbGVcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgRmFpbHVyZV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBGYWlsdXJlIGFyZyAtPiBMaXN0IFsgQXRvbSBcIkZhaWx1cmVcIjsgQXRvbSBhcmcgXVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgTm90X2ZvdW5kXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE5vdF9mb3VuZCAtPiBBdG9tIFwiTm90X2ZvdW5kXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIEludmFsaWRfYXJndW1lbnRdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBhcmcgLT4gTGlzdCBbIEF0b20gXCJJbnZhbGlkX2FyZ3VtZW50XCI7IEF0b20gYXJnIF1cbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hdGNoX2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgTWF0Y2hfZmFpbHVyZSBhcmcgLT4gZ2V0X2ZsY19lcnJvciBcIk1hdGNoX2ZhaWx1cmVcIiBhcmdcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE5vdF9mb3VuZF9zXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE5vdF9mb3VuZF9zIGFyZyAtPiBMaXN0IFsgQXRvbSBcIk5vdF9mb3VuZF9zXCI7IGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTeXNfZXJyb3JdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU3lzX2Vycm9yIGFyZyAtPiBMaXN0IFsgQXRvbSBcIlN5c19lcnJvclwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBcmcuSGVscF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBBcmcuSGVscCBhcmcgLT4gTGlzdCBbIEF0b20gXCJBcmcuSGVscFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBBcmcuQmFkXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IEFyZy5CYWQgYXJnIC0+IExpc3QgWyBBdG9tIFwiQXJnLkJhZFwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBMYXp5LlVuZGVmaW5lZF1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBMYXp5LlVuZGVmaW5lZCAtPiBBdG9tIFwiTGF6eS5VbmRlZmluZWRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2luZy5QYXJzZV9lcnJvcl1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IEF0b20gXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgOyAoIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFF1ZXVlLkVtcHR5XVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFF1ZXVlLkVtcHR5IC0+IEF0b20gXCJRdWV1ZS5FbXB0eVwiXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTY2FuZi5TY2FuX2ZhaWx1cmVdXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIGFyZyAtPiBMaXN0IFsgQXRvbSBcIlNjYW5mLlNjYW5fZmFpbHVyZVwiOyBBdG9tIGFyZyBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIDsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBTdGFjay5FbXB0eV1cbiAgICAgICwgZnVuY3Rpb25cbiAgICAgICAgfCBTdGFjay5FbXB0eSAtPiBBdG9tIFwiU3RhY2suRW1wdHlcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgICA7ICggWyVleHRlbnNpb25fY29uc3RydWN0b3IgU3lzLkJyZWFrXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IFN5cy5CcmVhayAtPiBBdG9tIFwiU3lzLkJyZWFrXCJcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gICAgXVxuOztcblxubGV0ICgpID1cbiAgTGlzdC5pdGVyXG4gICAgfmY6KGZ1biAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLCBoYW5kbGVyKSAtPlxuICAgICAgRXhuX2NvbnZlcnRlci5hZGQgfnByaW50ZXhjOnRydWUgfmZpbmFsaXNlOmZhbHNlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBoYW5kbGVyKVxuICAgIFsgKCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBPZl9zZXhwX2Vycm9yXVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgKGV4Yywgc2V4cCkgLT5cbiAgICAgICAgICBMaXN0IFsgQXRvbSBcIlNleHBsaWIuQ29udi5PZl9zZXhwX2Vycm9yXCI7IHNleHBfb2ZfZXhuIGV4Yzsgc2V4cCBdXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICAgIF1cbjs7XG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5leHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG4iLCIoKiBDb252X2Vycm9yOiBNb2R1bGUgZm9yIEhhbmRsaW5nIEVycm9ycyBkdXJpbmcgQXV0b21hdGVkIFMtZXhwcmVzc2lvblxuICAgQ29udmVyc2lvbnMgKilcblxub3BlbiBTdGRMYWJlbHNcbm9wZW4gUHJpbnRmXG5vcGVuIFNleHBfY29udlxuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3JcblxuKCogRXJyb3JzIGNvbmNlcm5pbmcgdHVwbGVzICopXG5cbmxldCB0dXBsZV9vZl9zaXplX25fZXhwZWN0ZWQgbG9jIG4gc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKHNwcmludGYgXCIlc19vZl9zZXhwOiB0dXBsZSBvZiBzaXplICVkIGV4cGVjdGVkXCIgbG9jIG4pIHNleHBcbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyBzZXhwID1cbiAgb2Zfc2V4cF9lcnJvciAobG9jIF4gXCJfb2Zfc2V4cDogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgc3RhZ19pbmNvcnJlY3Rfbl9hcmdzIGxvYyB0YWcgc2V4cCA9XG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogc3VtIHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIiBsb2MgdGFnIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSBzZXhwXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGEgbmVzdGVkIGxpc3RcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X2xpc3RfaW52YWxpZF9zdW0gbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBleHBlY3RlZCBhIHZhcmlhbnQgdHlwZSwgc2F3IGFuIGVtcHR5IGxpc3RcIikgc2V4cFxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyByZWNvcmRzICopXG5cbmxldCByZWNvcmRfc2V4cF9ib29sX3dpdGhfcGF5bG9hZCBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvYyBeIFwiX29mX3NleHA6IHJlY29yZCBjb252ZXJzaW9uOiBhIFtzZXhwLmJvb2xdIGZpZWxkIHdhcyBnaXZlbiBhIHBheWxvYWQuXCJcbiAgaW5cbiAgb2Zfc2V4cF9lcnJvciBtc2cgc2V4cFxuOztcblxubGV0IHJlY29yZF9vbmx5X3BhaXJzX2V4cGVjdGVkIGxvYyBzZXhwID1cbiAgbGV0IG1zZyA9XG4gICAgbG9jXG4gICAgXiBcIl9vZl9zZXhwOiByZWNvcmQgY29udmVyc2lvbjogb25seSBwYWlycyBleHBlY3RlZCwgdGhlaXIgZmlyc3QgZWxlbWVudCBtdXN0IGJlIGFuIFxcXG4gICAgICAgYXRvbVwiXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0IH5sb2MgcmV2X2ZsZF9uYW1lcyBzZXhwID1cbiAgbGV0IGZsZF9uYW1lc19zdHIgPSBTdHJpbmcuY29uY2F0IChMaXN0LnJldiByZXZfZmxkX25hbWVzKSB+c2VwOlwiIFwiIGluXG4gIGxldCBtc2cgPSBzcHJpbnRmIFwiJXNfb2Zfc2V4cDogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG5sZXQgcmVjb3JkX2R1cGxpY2F0ZV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgc2V4cCA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHNleHBcbjs7XG5cbmxldCByZWNvcmRfZXh0cmFfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHNleHAgPVxuICByZWNvcmRfc3VwZXJmbHVvdXNfZmllbGRzIH53aGF0OlwiZXh0cmEgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHNleHBcbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHNleHAgbHN0ID1cbiAgbGV0IHVuZGVmaW5lZCA9IHJlY29yZF9nZXRfdW5kZWZpbmVkX2xvb3AgW10gbHN0IGluXG4gIGxldCBtc2cgPVxuICAgIHNwcmludGYgXCIlc19vZl9zZXhwOiB0aGUgZm9sbG93aW5nIHJlY29yZCBlbGVtZW50cyB3ZXJlIHVuZGVmaW5lZDogJXNcIiBsb2MgdW5kZWZpbmVkXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfbGlzdF9pbnN0ZWFkX2F0b20gbG9jIHNleHAgPVxuICBsZXQgbXNnID0gbG9jIF4gXCJfb2Zfc2V4cDogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCByZWNvcmRfcG9seV9maWVsZF92YWx1ZSBsb2Mgc2V4cCA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2Zfc2V4cDogY2Fubm90IGNvbnZlcnQgdmFsdWVzIG9mIHR5cGVzIHJlc3VsdGluZyBmcm9tIHBvbHltb3JwaGljIHJlY29yZCBmaWVsZHNcIlxuICBpblxuICBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwXG47O1xuXG4oKiBFcnJvcnMgY29uY2VybmluZyBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG5leGNlcHRpb24gTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fdmFyaWFudF9tYXRjaCAoKSA9IHJhaXNlIE5vX3ZhcmlhbnRfbWF0Y2hcblxubGV0IG5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmQgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBubyBtYXRjaGluZyB2YXJpYW50IGZvdW5kXCIpIHNleHBcbjs7XG5cbmxldCBwdGFnX25vX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IGRvZXMgbm90IHRha2UgYXJndW1lbnRzXCIpIHNleHBcbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHNleHAgPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmXG4gICAgICBcIiVzX29mX3NleHA6IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiXG4gICAgICBsb2NcbiAgICAgIGNuc3RyXG4gIGluXG4gIG9mX3NleHBfZXJyb3IgbXNnIHNleHBcbjs7XG5cbmxldCBwdGFnX3Rha2VzX2FyZ3MgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyB0YWtlcyBhbiBhcmd1bWVudFwiKSBzZXhwXG47O1xuXG5sZXQgbmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhciBsb2Mgc2V4cCA9XG4gIG9mX3NleHBfZXJyb3IgKGxvYyBeIFwiX29mX3NleHA6IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpIHNleHBcbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIikgc2V4cFxuOztcblxubGV0IGVtcHR5X3R5cGUgbG9jIHNleHAgPVxuICBvZl9zZXhwX2Vycm9yIChsb2MgXiBcIl9vZl9zZXhwOiB0cnlpbmcgdG8gY29udmVydCBhbiBlbXB0eSB0eXBlXCIpIHNleHBcbjs7XG4iLCIoKiogUHJpbWl0aXZlcyBmb3IgcG9seW1vcnBoaWMgY29tcGFyZS4gKilcblxuKCpfIFBvbHltb3JwaGljIGNvbXBpbGVyIHByaW1pdGl2ZXMgY2FuJ3QgYmUgYWxpYXNlcyBhcyB0aGlzIGRvZXNuJ3QgcGxheSB3ZWxsIHdpdGhcbiAgaW5saW5pbmcuIChJZiBhbGlhc2VkIHdpdGhvdXQgYSB0eXBlIGFubm90YXRpb24sIHRoZSBjb21waWxlciB3b3VsZCBpbXBsZW1lbnQgdGhlbVxuICB1c2luZyB0aGUgZ2VuZXJpYyBjb2RlIGRvaW5nIGEgQyBjYWxsLCBhbmQgaXQncyB0aGlzIGNvZGUgdGhhdCB3b3VsZCBiZSBpbmxpbmVkLikgQXMgYVxuICByZXN1bHQgd2UgaGF2ZSB0byBjb3B5IHRoZSBbZXh0ZXJuYWwgLi4uXSBkZWNsYXJhdGlvbiBoZXJlLiAqKVxuZXh0ZXJuYWwgKCA8ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc3RoYW5cIlxuZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5leHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBhc2NlbmRpbmcgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcbmV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxubGV0IGRlc2NlbmRpbmcgeCB5ID0gY29tcGFyZSB5IHhcbmxldCBtYXggPSBDYW1sLm1heFxubGV0IG1pbiA9IENhbWwubWluXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyBpbmNsdWRlZCBpbiBbSW1wb3J0XS4gIEl0IGlzIGFpbWVkIGF0IG1vZHVsZXMgdGhhdCBkZWZpbmUgdGhlIHN0YW5kYXJkXG4gICBjb21iaW5hdG9ycyBmb3IgW3NleHBfb2ZdLCBbb2Zfc2V4cF0sIFtjb21wYXJlXSBhbmQgW2hhc2hdIGFuZCBhcmUgaW5jbHVkZWQgaW5cbiAgIFtJbXBvcnRdLiAqKVxuXG5pbmNsdWRlIChcbiAgU2hhZG93X3N0ZGxpYiA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTaGFkb3dfc3RkbGliXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZlxuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICAoKiBUaGVzZSBtb2R1bGVzIGFyZSByZWRlZmluZWQgaW4gQmFzZSAqKVxuICB3aXRoIG1vZHVsZSBBcnJheSA6PSBTaGFkb3dfc3RkbGliLkFycmF5XG4gIHdpdGggbW9kdWxlIEF0b21pYyA6PSBTaGFkb3dfc3RkbGliLkF0b21pY1xuICB3aXRoIG1vZHVsZSBCb29sIDo9IFNoYWRvd19zdGRsaWIuQm9vbFxuICB3aXRoIG1vZHVsZSBCdWZmZXIgOj0gU2hhZG93X3N0ZGxpYi5CdWZmZXJcbiAgd2l0aCBtb2R1bGUgQnl0ZXMgOj0gU2hhZG93X3N0ZGxpYi5CeXRlc1xuICB3aXRoIG1vZHVsZSBDaGFyIDo9IFNoYWRvd19zdGRsaWIuQ2hhclxuICB3aXRoIG1vZHVsZSBFaXRoZXIgOj0gU2hhZG93X3N0ZGxpYi5FaXRoZXJcbiAgd2l0aCBtb2R1bGUgRmxvYXQgOj0gU2hhZG93X3N0ZGxpYi5GbG9hdFxuICB3aXRoIG1vZHVsZSBIYXNodGJsIDo9IFNoYWRvd19zdGRsaWIuSGFzaHRibFxuICB3aXRoIG1vZHVsZSBJbnQgOj0gU2hhZG93X3N0ZGxpYi5JbnRcbiAgd2l0aCBtb2R1bGUgSW50MzIgOj0gU2hhZG93X3N0ZGxpYi5JbnQzMlxuICB3aXRoIG1vZHVsZSBJbnQ2NCA6PSBTaGFkb3dfc3RkbGliLkludDY0XG4gIHdpdGggbW9kdWxlIExhenkgOj0gU2hhZG93X3N0ZGxpYi5MYXp5XG4gIHdpdGggbW9kdWxlIExpc3QgOj0gU2hhZG93X3N0ZGxpYi5MaXN0XG4gIHdpdGggbW9kdWxlIE1hcCA6PSBTaGFkb3dfc3RkbGliLk1hcFxuICB3aXRoIG1vZHVsZSBOYXRpdmVpbnQgOj0gU2hhZG93X3N0ZGxpYi5OYXRpdmVpbnRcbiAgd2l0aCBtb2R1bGUgT3B0aW9uIDo9IFNoYWRvd19zdGRsaWIuT3B0aW9uXG4gIHdpdGggbW9kdWxlIFByaW50ZiA6PSBTaGFkb3dfc3RkbGliLlByaW50ZlxuICB3aXRoIG1vZHVsZSBRdWV1ZSA6PSBTaGFkb3dfc3RkbGliLlF1ZXVlXG4gIHdpdGggbW9kdWxlIFJhbmRvbSA6PSBTaGFkb3dfc3RkbGliLlJhbmRvbVxuICB3aXRoIG1vZHVsZSBSZXN1bHQgOj0gU2hhZG93X3N0ZGxpYi5SZXN1bHRcbiAgd2l0aCBtb2R1bGUgU2V0IDo9IFNoYWRvd19zdGRsaWIuU2V0XG4gIHdpdGggbW9kdWxlIFN0YWNrIDo9IFNoYWRvd19zdGRsaWIuU3RhY2tcbiAgd2l0aCBtb2R1bGUgU3RyaW5nIDo9IFNoYWRvd19zdGRsaWIuU3RyaW5nXG4gIHdpdGggbW9kdWxlIFN5cyA6PSBTaGFkb3dfc3RkbGliLlN5c1xuICB3aXRoIG1vZHVsZSBVY2hhciA6PSBTaGFkb3dfc3RkbGliLlVjaGFyXG4gIHdpdGggbW9kdWxlIFVuaXQgOj0gU2hhZG93X3N0ZGxpYi5Vbml0KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG50eXBlICdhIHJlZiA9ICdhIENhbWwucmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG4oKiBSZXNodWZmbGUgW0NhbWxdIHNvIHRoYXQgd2UgY2hvb3NlIHRoZSBtb2R1bGVzIHVzaW5nIGxhYmVscyB3aGVuIGF2YWlsYWJsZS4gKilcbm1vZHVsZSBDYW1sID0gc3RydWN0XG5cbiAgaW5jbHVkZSBDYW1sXG5cbiAgbW9kdWxlIEFyZyA9IENhbWwuQXJnICgqKiBAY2Fub25pY2FsIENhbWwuQXJnICopXG5cbiAgbW9kdWxlIEFycmF5ID0gQ2FtbC5TdGRMYWJlbHMuQXJyYXkgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuQXJyYXkgKilcblxuICBtb2R1bGUgQm9vbCA9IENhbWwuQm9vbCAoKiogQGNhbm9uaWNhbCBDYW1sLkJvb2wgKilcblxuICBtb2R1bGUgQnVmZmVyID0gQ2FtbC5CdWZmZXIgKCoqIEBjYW5vbmljYWwgQ2FtbC5CdWZmZXIgKilcblxuICBtb2R1bGUgQnl0ZXMgPSBDYW1sLlN0ZExhYmVscy5CeXRlcyAoKiogQGNhbm9uaWNhbCBDYW1sLlN0ZExhYmVscy5CeXRlcyAqKVxuXG4gIG1vZHVsZSBDaGFyID0gQ2FtbC5DaGFyICgqKiBAY2Fub25pY2FsIENhbWwuQ2hhciAqKVxuXG4gIG1vZHVsZSBFcGhlbWVyb24gPSBDYW1sLkVwaGVtZXJvbiAoKiogQGNhbm9uaWNhbCBDYW1sLkVwaGVtZXJvbiAqKVxuXG4gIG1vZHVsZSBGbG9hdCA9IENhbWwuRmxvYXQgKCoqIEBjYW5vbmljYWwgQ2FtbC5GbG9hdCAqKVxuXG4gIG1vZHVsZSBGb3JtYXQgPSBDYW1sLkZvcm1hdCAoKiogQGNhbm9uaWNhbCBDYW1sLkZvcm1hdCAqKVxuXG4gIG1vZHVsZSBGdW4gPSBDYW1sLkZ1biAoKiogQGNhbm9uaWNhbCBDYW1sLkZ1biAqKVxuXG4gIG1vZHVsZSBHYyA9IENhbWwuR2MgKCoqIEBjYW5vbmljYWwgQ2FtbC5HYyAqKVxuXG4gIG1vZHVsZSBIYXNodGJsID0gQ2FtbC5Nb3JlTGFiZWxzLkhhc2h0YmwgKCoqIEBjYW5vbmljYWwgQ2FtbC5Nb3JlTGFiZWxzLkhhc2h0YmwgKilcblxuICBtb2R1bGUgSW50MzIgPSBDYW1sLkludDMyICgqKiBAY2Fub25pY2FsIENhbWwuSW50MzIgKilcblxuICBtb2R1bGUgSW50ID0gQ2FtbC5JbnQgKCoqIEBjYW5vbmljYWwgQ2FtbC5JbnQgKilcblxuICBtb2R1bGUgSW50NjQgPSBDYW1sLkludDY0ICgqKiBAY2Fub25pY2FsIENhbWwuSW50NjQgKilcblxuICBtb2R1bGUgTGF6eSA9IENhbWwuTGF6eSAoKiogQGNhbm9uaWNhbCBDYW1sLkxhenkgKilcblxuICBtb2R1bGUgTGV4aW5nID0gQ2FtbC5MZXhpbmcgKCoqIEBjYW5vbmljYWwgQ2FtbC5MZXhpbmcgKilcblxuICBtb2R1bGUgTGlzdCA9IENhbWwuU3RkTGFiZWxzLkxpc3QgKCoqIEBjYW5vbmljYWwgQ2FtbC5TdGRMYWJlbHMuTGlzdCAqKVxuXG4gIG1vZHVsZSBNYXAgPSBDYW1sLk1vcmVMYWJlbHMuTWFwICgqKiBAY2Fub25pY2FsIENhbWwuTW9yZUxhYmVscy5NYXAgKilcblxuICBtb2R1bGUgTmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQgKCoqIEBjYW5vbmljYWwgQ2FtbC5OYXRpdmVpbnQgKilcblxuICBtb2R1bGUgT2JqID0gQ2FtbC5PYmogKCoqIEBjYW5vbmljYWwgQ2FtbC5PYmogKilcblxuICBtb2R1bGUgT3B0aW9uID0gQ2FtbC5PcHRpb24gKCoqIEBjYW5vbmljYWwgQ2FtbC5PcHRpb24gKilcblxuICBtb2R1bGUgUGFyc2luZyA9IENhbWwuUGFyc2luZyAoKiogQGNhbm9uaWNhbCBDYW1sLlBhcnNpbmcgKilcblxuICBtb2R1bGUgUHJpbnRleGMgPSBDYW1sLlByaW50ZXhjICgqKiBAY2Fub25pY2FsIENhbWwuUHJpbnRleGMgKilcblxuICBtb2R1bGUgUHJpbnRmID0gQ2FtbC5QcmludGYgKCoqIEBjYW5vbmljYWwgQ2FtbC5QcmludGYgKilcblxuICBtb2R1bGUgUXVldWUgPSBDYW1sLlF1ZXVlICgqKiBAY2Fub25pY2FsIENhbWwuUXVldWUgKilcblxuICBtb2R1bGUgUmFuZG9tID0gQ2FtbC5SYW5kb20gKCoqIEBjYW5vbmljYWwgQ2FtbC5SYW5kb20gKilcblxuICBtb2R1bGUgUmVzdWx0ID0gQ2FtbC5SZXN1bHQgKCoqIEBjYW5vbmljYWwgQ2FtbC5SZXN1bHQgKilcblxuICBtb2R1bGUgU2NhbmYgPSBDYW1sLlNjYW5mICgqKiBAY2Fub25pY2FsIENhbWwuU2NhbmYgKilcblxuICBtb2R1bGUgU2VxID0gQ2FtbC5TZXEgKCoqIEBjYW5vbmljYWwgQ2FtbC5TZXEgKilcblxuICBtb2R1bGUgU2V0ID0gQ2FtbC5Nb3JlTGFiZWxzLlNldCAoKiogQGNhbm9uaWNhbCBDYW1sLk1vcmVMYWJlbHMuU2V0ICopXG5cbiAgbW9kdWxlIFN0YWNrID0gQ2FtbC5TdGFjayAoKiogQGNhbm9uaWNhbCBDYW1sLlN0YWNrICopXG5cbiAgbW9kdWxlIFN0cmluZyA9IENhbWwuU3RkTGFiZWxzLlN0cmluZyAoKiogQGNhbm9uaWNhbCBDYW1sLlN0ZExhYmVscy5TdHJpbmcgKilcblxuICBtb2R1bGUgU3lzID0gQ2FtbC5TeXMgKCoqIEBjYW5vbmljYWwgQ2FtbC5TeXMgKilcblxuICBtb2R1bGUgVWNoYXIgPSBDYW1sLlVjaGFyICgqKiBAY2Fub25pY2FsIENhbWwuVWNoYXIgKilcblxuICBtb2R1bGUgVW5pdCA9IENhbWwuVW5pdCAoKiogQGNhbm9uaWNhbCBDYW1sLlVuaXQgKilcblxuICBleGNlcHRpb24gTm90X2ZvdW5kID0gQ2FtbC5Ob3RfZm91bmRcbmVuZFxuXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGVzZSBuZWVkIHRvIGJlIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGdldCB0aGUgbGF6eSBiZWhhdmlvciAqKVxuZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggfHwgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdW9yXCJcbmV4dGVybmFsIG5vdCA6IGJvb2wgLT4gYm9vbCA9IFwiJWJvb2xub3RcIlxuXG4oKiBXZSB1c2UgW09iai5tYWdpY10gaGVyZSBhcyBvdGhlciBpbXBsZW1lbnRhdGlvbnMgZ2VuZXJhdGUgYSBjb25kaXRpb25hbCBqdW1wIGFuZCB0aGVcbiAgIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgaXMgbm90aWNlYWJsZS4gKilcbmxldCBib29sX3RvX2ludCAoeCA6IGJvb2wpIDogaW50ID0gQ2FtbC5PYmoubWFnaWMgeFxuXG4oKiBUaGlzIG5lZWQgdG8gYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5ICopXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG5sZXQgKCAhPSApID0gQ2FtbC4oICE9IClcbmxldCAoICogKSA9IENhbWwuKCAqIClcbmxldCAoICoqICkgPSBDYW1sLiggKiogKVxubGV0ICggKi4gKSA9IENhbWwuKCAqLiApXG5sZXQgKCArICkgPSBDYW1sLiggKyApXG5sZXQgKCArLiApID0gQ2FtbC4oICsuIClcbmxldCAoIC0gKSA9IENhbWwuKCAtIClcbmxldCAoIC0uICkgPSBDYW1sLiggLS4gKVxubGV0ICggLyApID0gQ2FtbC4oIC8gKVxubGV0ICggLy4gKSA9IENhbWwuKCAvLiApXG5cbm1vZHVsZSBQb2x5ID0gUG9seTAgKCoqIEBjYW5vbmljYWwgQmFzZS5Qb2x5ICopXG5cbm1vZHVsZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuICBleHRlcm5hbCAoIDwgKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG4gIGV4dGVybmFsICggPj0gKSA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogaW50KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBpbnQpIHkgPSBjb21wYXJlIHkgeFxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oIDwgKSB4IHlcbiAgbGV0ICggPD0gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA9ICkgeCB5XG4gIGxldCAoID4gKSAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuYXNjZW5kaW5nIHggeVxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLkludDMyLnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IENhbWwuSW50MzIudCkgeSA9IFBvbHkuZXF1YWwgeCB5XG4gIGxldCBtYXggKHggOiBDYW1sLkludDMyLnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogQ2FtbC5JbnQzMi50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gICgqIERlY2xhcmVkIGFzIGV4dGVybmFscyBzbyB0aGF0IHRoZSBjb21waWxlciBza2lwcyB0aGUgY2FtbF9hcHBseV9YIHdyYXBwaW5nIGV2ZW4gd2hlblxuICAgICBjb21waWxpbmcgd2l0aG91dCBjcm9zcyBsaWJyYXJ5IGlubGluaW5nLiAqKVxuICBleHRlcm5hbCAoID0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbiAgZXh0ZXJuYWwgKCA8PiApIDogQ2FtbC5JbnQ2NC50IC0+IENhbWwuSW50NjQudCAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuICBleHRlcm5hbCAoIDwgKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+ICkgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG4gIGV4dGVybmFsICggPD0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG4gIGV4dGVybmFsICggPj0gKSA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG4gIGV4dGVybmFsIGNvbXBhcmUgOiBDYW1sLkludDY0LnQgLT4gQ2FtbC5JbnQ2NC50IC0+IGludCA9IFwiJWNvbXBhcmVcIlxuICBleHRlcm5hbCBlcXVhbCA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgYXNjZW5kaW5nICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gUG9seS5hc2NlbmRpbmcgeCB5XG4gIGxldCBkZXNjZW5kaW5nICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5JbnQ2NC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuSW50NjQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IENhbWwuTmF0aXZlaW50LnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogQ2FtbC5OYXRpdmVpbnQudCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBDYW1sLk5hdGl2ZWludC50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogYm9vbCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBib29sKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBib29sKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGJvb2wpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGJvb2wpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBib29sKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGJvb2wpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGJvb2wpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYm9vbCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBib29sKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgQ2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogY2hhcikgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBjaGFyKSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IGNoYXIpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IGNoYXIpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBjaGFyKSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IGNoYXIpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogY2hhcikgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiBjaGFyKSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCBpIHggPSBDYW1sLlVjaGFyLnRvX2ludCB4XG4gIGxldCAoIDwgKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPD0gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIChpIHgpIChpIHkpXG4gIGxldCAoIDw+ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD4gKSAoaSB4KSAoaSB5KVxuICBsZXQgKCA9ICkgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChpIHgpIChpIHkpXG4gIGxldCAoID4gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+ICkgKGkgeCkgKGkgeSlcbiAgbGV0ICggPj0gKSAoeCA6IENhbWwuVWNoYXIudCkgeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIChpIHgpIChpIHkpXG5cbiAgbGV0IGFzY2VuZGluZyAoeCA6IENhbWwuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5hc2NlbmRpbmcgKGkgeCkgKGkgeSlcbiAgOztcblxuICBsZXQgZGVzY2VuZGluZyAoeCA6IENhbWwuVWNoYXIudCkgeSA9XG4gICAgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5kZXNjZW5kaW5nIChpIHgpIChpIHkpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBDYW1sLlVjaGFyLnQpIHkgPSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmUgKGkgeCkgKGkgeSlcbiAgbGV0IGVxdWFsICh4IDogQ2FtbC5VY2hhci50KSB5ID0gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCAoaSB4KSAoaSB5KVxuICBsZXQgbWF4ICh4IDogQ2FtbC5VY2hhci50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IENhbWwuVWNoYXIudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogZmxvYXQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBmbG9hdCkgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogZmxvYXQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBmbG9hdCkgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBmbG9hdCkgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogZmxvYXQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogZmxvYXQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogZmxvYXQpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbm1vZHVsZSBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IHN0cmluZykgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBzdHJpbmcpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogc3RyaW5nKSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogc3RyaW5nKSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBzdHJpbmcpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogc3RyaW5nKSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IHN0cmluZykgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIEJ5dGVzX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA8PSApIHggeVxuICBsZXQgKCA8PiApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPD4gKSB4IHlcbiAgbGV0ICggPSApICh4IDogYnl0ZXMpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+ICkgeCB5XG4gIGxldCAoID49ICkgKHggOiBieXRlcykgeSA9IFBvbHkuKCA+PSApIHggeVxuICBsZXQgYXNjZW5kaW5nICh4IDogYnl0ZXMpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBieXRlcykgeSA9IFBvbHkuZGVzY2VuZGluZyB4IHlcbiAgbGV0IGNvbXBhcmUgKHggOiBieXRlcykgeSA9IFBvbHkuY29tcGFyZSB4IHlcbiAgbGV0IGVxdWFsICh4IDogYnl0ZXMpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogYnl0ZXMpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWluICh4IDogYnl0ZXMpIHkgPSBpZiB4IDw9IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbigqIFRoaXMgbmVlZHMgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gc3BlY2lhbGl6ZSBpdCBhcyBhXG4gICBkaXJlY3Qgc2V0IG9yIGNhbWxfbW9kaWZ5ICopXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbigqIFRoZXNlIG5lZWQgdG8gYmUgZGVmaW5lZCBhcyBhbiBleHRlcm5hbCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdvbid0IHVuYm94XG4gICByZWZlcmVuY2VzICopXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5cbmxldCAoIEAgKSA9IENhbWwuKCBAIClcbmxldCAoIF4gKSA9IENhbWwuKCBeIClcbmxldCAoIH4tICkgPSBDYW1sLiggfi0gKVxubGV0ICggfi0uICkgPSBDYW1sLiggfi0uIClcbmxldCAoIGFzciApID0gQ2FtbC4oIGFzciApXG5sZXQgKCBsYW5kICkgPSBDYW1sLiggbGFuZCApXG5sZXQgbG5vdCA9IENhbWwubG5vdFxubGV0ICggbG9yICkgPSBDYW1sLiggbG9yIClcbmxldCAoIGxzbCApID0gQ2FtbC4oIGxzbCApXG5sZXQgKCBsc3IgKSA9IENhbWwuKCBsc3IgKVxubGV0ICggbHhvciApID0gQ2FtbC4oIGx4b3IgKVxubGV0ICggbW9kICkgPSBDYW1sLiggbW9kIClcbmxldCBhYnMgPSBDYW1sLmFic1xubGV0IGZhaWx3aXRoID0gQ2FtbC5mYWlsd2l0aFxubGV0IGZzdCA9IENhbWwuZnN0XG5sZXQgaW52YWxpZF9hcmcgPSBDYW1sLmludmFsaWRfYXJnXG5sZXQgc25kID0gQ2FtbC5zbmRcblxuKCogW3JhaXNlXSBuZWVkcyB0byBiZSBkZWZpbmVkIGFzIGFuIGV4dGVybmFsIGFzIHRoZSBjb21waWxlciBhdXRvbWF0aWNhbGx5IHJlcGxhY2VzXG4gICAnJXJhaXNlJyBieSAnJXJlcmFpc2UnIHdoZW4gYXBwcm9wcmlhdGUuICopXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiBfID0gXCIlcmFpc2VcIlxuXG5sZXQgcGh5c19lcXVhbCA9IENhbWwuKCA9PSApXG5sZXQgZGVjciA9IENhbWwuZGVjclxubGV0IGluY3IgPSBDYW1sLmluY3JcblxuKCogdXNlZCBieSBzZXhwX2NvbnYsIHdoaWNoIGZsb2F0MCBkZXBlbmRzIG9uIHRocm91Z2ggb3B0aW9uICopXG5sZXQgZmxvYXRfb2Zfc3RyaW5nID0gQ2FtbC5mbG9hdF9vZl9zdHJpbmdcblxuKCogW2FtX3Rlc3RpbmddIGlzIHVzZWQgaW4gYSBmZXcgcGxhY2VzIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aGVuIGluIHRlc3RpbmcgbW9kZSwgc3VjaFxuICAgYXMgaW4gW3JhbmRvbS5tbF0uICBbYW1fdGVzdGluZ10gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW0Jhc2VfYW1fdGVzdGluZ10sIGEgd2VhayBDL2pzXG4gICBwcmltaXRpdmUgdGhhdCByZXR1cm5zIFtmYWxzZV0sIGJ1dCB3aGVuIGxpbmtpbmcgYW4gaW5saW5lLXRlc3QtcnVubmVyIGV4ZWN1dGFibGUsIGlzXG4gICBvdmVycmlkZGVuIGJ5IGFub3RoZXIgcHJpbWl0aXZlIHRoYXQgcmV0dXJucyBbdHJ1ZV0uICopXG5leHRlcm5hbCBhbV90ZXN0aW5nIDogdW5pdCAtPiBib29sID0gXCJCYXNlX2FtX3Rlc3RpbmdcIlxuXG5sZXQgYW1fdGVzdGluZyA9IGFtX3Rlc3RpbmcgKClcbiIsIm9wZW4hIEltcG9ydDBcbmluY2x1ZGUgQ2FtbC5QcmludGZcblxuKCoqIGZhaWx3aXRoLCBpbnZhbGlkX2FyZywgYW5kIGV4aXQgYWNjZXB0aW5nIHByaW50ZidzIGZvcm1hdC4gKilcblxubGV0IGZhaWx3aXRoZiBmbXQgPSBrc3ByaW50ZiAoZnVuIHMgKCkgLT4gZmFpbHdpdGggcykgZm10XG5sZXQgaW52YWxpZF9hcmdmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAoKSAtPiBpbnZhbGlkX2FyZyBzKSBmbXRcbiIsIigqIFtTeXMwXSBkZWZpbmVzIGZ1bmN0aW9ucyB0aGF0IGFyZSBwcmltaXRpdmVzIG9yIGNhbiBiZSBzaW1wbHkgZGVmaW5lZCBpblxuICAgdGVybXMgb2YgW0NhbWwuU3lzXS4gIFtTeXMwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtDYW1sLlN5c10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzeXMubWxcbiAgIHNob3VsZCB1c2UgW0NhbWwuU3lzXS4gW1N5czBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlXG4gICBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuICBBbGwgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIHRoZXNlXG4gICBmdW5jdGlvbnMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLlN5c10gaW4gYnVpbGQgb3JkZXIgc2hvdWxkIGRvXG4gICBbbW9kdWxlIFN5cyA9IFN5czBdLiAgRGVmaW5pbmcgW21vZHVsZSBTeXMgPSBTeXMwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlXG4gICBpdCBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN5c10uICopXG5cbm9wZW4hIEltcG9ydDBcblxudHlwZSBiYWNrZW5kX3R5cGUgPSBDYW1sLlN5cy5iYWNrZW5kX3R5cGUgPVxuICB8IE5hdGl2ZVxuICB8IEJ5dGVjb2RlXG4gIHwgT3RoZXIgb2Ygc3RyaW5nXG5cbmxldCBiYWNrZW5kX3R5cGUgPSBDYW1sLlN5cy5iYWNrZW5kX3R5cGVcbmxldCBpbnRlcmFjdGl2ZSA9IENhbWwuU3lzLmludGVyYWN0aXZlXG5sZXQgb3NfdHlwZSA9IENhbWwuU3lzLm9zX3R5cGVcbmxldCB1bml4ID0gQ2FtbC5TeXMudW5peFxubGV0IHdpbjMyID0gQ2FtbC5TeXMud2luMzJcbmxldCBjeWd3aW4gPSBDYW1sLlN5cy5jeWd3aW5cbmxldCB3b3JkX3NpemVfaW5fYml0cyA9IENhbWwuU3lzLndvcmRfc2l6ZVxubGV0IGludF9zaXplX2luX2JpdHMgPSBDYW1sLlN5cy5pbnRfc2l6ZVxubGV0IGJpZ19lbmRpYW4gPSBDYW1sLlN5cy5iaWdfZW5kaWFuXG5sZXQgbWF4X3N0cmluZ19sZW5ndGggPSBDYW1sLlN5cy5tYXhfc3RyaW5nX2xlbmd0aFxubGV0IG1heF9hcnJheV9sZW5ndGggPSBDYW1sLlN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5sZXQgcnVudGltZV92YXJpYW50ID0gQ2FtbC5TeXMucnVudGltZV92YXJpYW50XG5sZXQgcnVudGltZV9wYXJhbWV0ZXJzID0gQ2FtbC5TeXMucnVudGltZV9wYXJhbWV0ZXJzXG5sZXQgYXJndiA9IENhbWwuU3lzLmFyZ3ZcbmxldCBnZXRfYXJndiAoKSA9IENhbWwuU3lzLmFyZ3ZcbmxldCBvY2FtbF92ZXJzaW9uID0gQ2FtbC5TeXMub2NhbWxfdmVyc2lvblxubGV0IGVuYWJsZV9ydW50aW1lX3dhcm5pbmdzID0gQ2FtbC5TeXMuZW5hYmxlX3J1bnRpbWVfd2FybmluZ3NcbmxldCBydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgPSBDYW1sLlN5cy5ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcblxubGV0IGdldGVudl9leG4gdmFyID1cbiAgdHJ5IENhbWwuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IENhbWwuTm90X2ZvdW5kIC0+XG4gICAgUHJpbnRmLmZhaWx3aXRoZiBcIlN5cy5nZXRlbnZfZXhuOiBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcyBpcyBub3Qgc2V0XCIgdmFyICgpXG47O1xuXG5sZXQgZ2V0ZW52IHZhciA9XG4gIG1hdGNoIENhbWwuU3lzLmdldGVudiB2YXIgd2l0aFxuICB8IHggLT4gU29tZSB4XG4gIHwgZXhjZXB0aW9uIENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmV4dGVybmFsIG9wYXF1ZV9pZGVudGl0eSA6ICdhIC0+ICdhID0gXCIlb3BhcXVlXCJcblxuZXhjZXB0aW9uIEJyZWFrID0gQ2FtbC5TeXMuQnJlYWtcbiIsIigqIFtBcnJheTBdIGRlZmluZXMgYXJyYXkgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zXG4gICBvZiBbQ2FtbC5BcnJheV0uICBbQXJyYXkwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW0NhbWwuQXJyYXldXG4gICB0aGF0IFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGFycmF5MC5tbCBzaG91bGQgdXNlIFtDYW1sLkFycmF5XS5cbiAgIFtBcnJheTBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGFycmF5cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuQXJyYXldIGluIGJ1aWxkIG9yZGVyIHNob3VsZFxuICAgZG8gW21vZHVsZSBBcnJheSA9IEFycmF5MF0uICBUaGlzIGluY2x1ZGVzIHVzZXMgb2Ygc3Vic2NyaXB0IHN5bnRheCAoW3guKGkpXSwgW3guKGkpIDwtXG4gICBlXSksIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0byBbQXJyYXkuZ2V0XSBhbmQgW0FycmF5LnNldF0uXG4gICBEZWZpbmluZyBbbW9kdWxlIEFycmF5ID0gQXJyYXkwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzIG9jYW1sZGVwIGZyb21cbiAgIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkFycmF5XS4gKilcblxub3BlbiEgSW1wb3J0MFxubW9kdWxlIFN5cyA9IFN5czBcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubW9kdWxlIEFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuICBleHRlcm5hbCBjcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCA6IGludCAtPiBmbG9hdCBhcnJheSA9IFwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3RcIlxuICBleHRlcm5hbCBnZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIGxlbmd0aCA6ICdhIGFycmF5IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIHNldCA6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuXG4gIGV4dGVybmFsIHVuc2FmZV9ibGl0XG4gICAgOiAgc3JjOidhIGFycmF5XG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6J2EgYXJyYXlcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYXJyYXlfYmxpdFwiXG5lbmRcblxuaW5jbHVkZSBBcnJheVxuXG5sZXQgbWF4X2xlbmd0aCA9IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgdHJ5IGNyZWF0ZSBsZW4geCB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IGludmFsaWRfYXJnZiBcIkFycmF5LmNyZWF0ZSB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGNyZWF0ZV9mbG9hdF91bmluaXRpYWxpemVkIH5sZW4gPVxuICB0cnkgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgbGVuIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICBpbnZhbGlkX2FyZ2YgXCJBcnJheS5jcmVhdGVfZmxvYXRfdW5pbml0aWFsaXplZCB+bGVuOiVkOiBpbnZhbGlkIGxlbmd0aFwiIGxlbiAoKVxuOztcblxubGV0IGFwcGVuZCA9IENhbWwuQXJyYXkuYXBwZW5kXG5sZXQgYmxpdCA9IENhbWwuQXJyYXkuYmxpdFxubGV0IGNvbmNhdCA9IENhbWwuQXJyYXkuY29uY2F0XG5sZXQgY29weSA9IENhbWwuQXJyYXkuY29weVxubGV0IGZpbGwgPSBDYW1sLkFycmF5LmZpbGxcbmxldCBpbml0ID0gQ2FtbC5BcnJheS5pbml0XG5sZXQgbWFrZV9tYXRyaXggPSBDYW1sLkFycmF5Lm1ha2VfbWF0cml4XG5sZXQgb2ZfbGlzdCA9IENhbWwuQXJyYXkub2ZfbGlzdFxubGV0IHN1YiA9IENhbWwuQXJyYXkuc3ViXG5sZXQgdG9fbGlzdCA9IENhbWwuQXJyYXkudG9fbGlzdFxuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBDYW1sLkFycmF5LmZvbGRfbGVmdCB0IH5pbml0IH5mXG5sZXQgZm9sZF9yaWdodCB0IH5mIH5pbml0ID0gQ2FtbC5BcnJheS5mb2xkX3JpZ2h0IHQgfmYgfmluaXRcbmxldCBpdGVyIHQgfmYgPSBDYW1sLkFycmF5Lml0ZXIgdCB+ZlxubGV0IGl0ZXJpIHQgfmYgPSBDYW1sLkFycmF5Lml0ZXJpIHQgfmZcbmxldCBtYXAgdCB+ZiA9IENhbWwuQXJyYXkubWFwIHQgfmZcbmxldCBtYXBpIHQgfmYgPSBDYW1sLkFycmF5Lm1hcGkgdCB+ZlxubGV0IHN0YWJsZV9zb3J0IHQgfmNvbXBhcmUgPSBDYW1sLkFycmF5LnN0YWJsZV9zb3J0IHQgfmNtcDpjb21wYXJlXG5cbmxldCBzd2FwIHQgaSBqID1cbiAgbGV0IGVsdF9pID0gdC4oaSkgaW5cbiAgbGV0IGVsdF9qID0gdC4oaikgaW5cbiAgdW5zYWZlX3NldCB0IGkgZWx0X2o7XG4gIHVuc2FmZV9zZXQgdCBqIGVsdF9pXG47O1xuIiwiKCogW0NoYXIwXSBkZWZpbmVzIGNoYXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseSBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICBbQ2FtbC5DaGFyXS4gIFtDaGFyMF0gaXMgaW50ZW5kZWQgdG8gY29tcGxldGVseSBleHByZXNzIHRoZSBwYXJ0IG9mIFtDYW1sLkNoYXJdIHRoYXRcbiAgIFtCYXNlXSB1c2VzIC0tIG5vIG90aGVyIGZpbGUgaW4gQmFzZSBvdGhlciB0aGFuIGNoYXIwLm1sIHNob3VsZCB1c2UgW0NhbWwuQ2hhcl0uXG4gICBbQ2hhcjBdIGhhcyBmZXcgZGVwZW5kZW5jaWVzLCBhbmQgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci4gIEFsbFxuICAgQmFzZSBmaWxlcyB0aGF0IG5lZWQgdG8gdXNlIGNoYXJzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5DaGFyXSBpbiBidWlsZCBvcmRlciBzaG91bGQgZG9cbiAgIFttb2R1bGUgQ2hhciA9IENoYXIwXS4gIERlZmluaW5nIFttb2R1bGUgQ2hhciA9IENoYXIwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0XG4gICBwcmV2ZW50cyBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLkNoYXJdLiAqKVxuXG5vcGVuISBJbXBvcnQwXG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5sZXQgZXNjYXBlZCA9IENhbWwuQ2hhci5lc2NhcGVkXG5sZXQgbG93ZXJjYXNlID0gQ2FtbC5DaGFyLmxvd2VyY2FzZV9hc2NpaVxubGV0IHRvX2ludCA9IENhbWwuQ2hhci5jb2RlXG5sZXQgdW5zYWZlX29mX2ludCA9IENhbWwuQ2hhci51bnNhZmVfY2hyXG5sZXQgdXBwZXJjYXNlID0gQ2FtbC5DaGFyLnVwcGVyY2FzZV9hc2NpaVxuXG4oKiBXZSB1c2Ugb3VyIG93biByYW5nZSB0ZXN0IHdoZW4gY29udmVydGluZyBpbnRlZ2VycyB0byBjaGFycyByYXRoZXIgdGhhblxuICAgY2FsbGluZyBbQ2FtbC5DaGFyLmNocl0gYmVjYXVzZSBpdCdzIHNpbXBsZSBhbmQgaXQgc2F2ZXMgdXMgYSBmdW5jdGlvbiBjYWxsXG4gICBhbmQgdGhlIHRyeS13aXRoIChleGNlcHRpb25zIGNvc3QsIGVzcGVjaWFsbHkgaW4gdGhlIHdvcmxkIHdpdGggYmFja3RyYWNlcykuICopXG5sZXQgaW50X2lzX29rIGkgPSAwIDw9IGkgJiYgaSA8PSAyNTVcbmxldCBtaW5fdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDBcbmxldCBtYXhfdmFsdWUgPSB1bnNhZmVfb2ZfaW50IDI1NVxubGV0IG9mX2ludCBpID0gaWYgaW50X2lzX29rIGkgdGhlbiBTb21lICh1bnNhZmVfb2ZfaW50IGkpIGVsc2UgTm9uZVxuXG5sZXQgb2ZfaW50X2V4biBpID1cbiAgaWYgaW50X2lzX29rIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJDaGFyLm9mX2ludF9leG4gZ290IGludGVnZXIgb3V0IG9mIHJhbmdlOiAlZFwiIGkgKClcbjs7XG5cbmxldCBlcXVhbCAodDEgOiBjaGFyKSB0MiA9IFBvbHkuZXF1YWwgdDEgdDJcbiIsIigqIFtJbnQwXSBkZWZpbmVzIGludGVnZXIgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbQ2FtbF0uIFtJbnQwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlXG4gICBwYXJ0IG9mIFtDYW1sXSB0aGF0IFtCYXNlXSB1c2VzIGZvciBpbnRlZ2VycyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXJcbiAgIHRoYW4gaW50MC5tbCBzaG91bGQgdXNlIHRoZXNlIGZ1bmN0aW9ucyBkaXJlY3RseSB0aHJvdWdoIFtDYW1sXS4gW0ludDBdIGhhc1xuICAgZmV3IGRlcGVuZGVuY2llcywgYW5kIHNvIGlzIGF2YWlsYWJsZSBlYXJseSBpbiBCYXNlJ3MgYnVpbGQgb3JkZXIuXG5cbiAgIEFsbCBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgaW50cyBhbmQgY29tZSBiZWZvcmUgW0Jhc2UuSW50XSBpbiBidWlsZFxuICAgb3JkZXIgc2hvdWxkIGRvOlxuXG4gICB7W1xuICAgICBtb2R1bGUgSW50ICA9IEludDBcbiAgIF19XG5cbiAgIERlZmluaW5nIFttb2R1bGUgSW50ID0gSW50MF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50cyBvY2FtbGRlcFxuICAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5JbnRdLiAqKVxuXG5sZXQgdG9fc3RyaW5nID0gQ2FtbC5zdHJpbmdfb2ZfaW50XG5sZXQgb2Zfc3RyaW5nID0gQ2FtbC5pbnRfb2Zfc3RyaW5nXG5sZXQgdG9fZmxvYXQgPSBDYW1sLmZsb2F0X29mX2ludFxubGV0IG9mX2Zsb2F0ID0gQ2FtbC5pbnRfb2ZfZmxvYXRcbmxldCBtYXhfdmFsdWUgPSBDYW1sLm1heF9pbnRcbmxldCBtaW5fdmFsdWUgPSBDYW1sLm1pbl9pbnRcbmxldCBzdWNjID0gQ2FtbC5zdWNjXG4iLCIoKiBbTGlzdDBdIGRlZmluZXMgbGlzdCBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW4gdGVybXMgb2ZcbiAgIFtDYW1sLkxpc3RdLiAgW0xpc3QwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2YgW0NhbWwuTGlzdF0gdGhhdFxuICAgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyIHRoYW4gbGlzdDAubWwgc2hvdWxkIHVzZSBbQ2FtbC5MaXN0XS5cbiAgIFtMaXN0MF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzIGJ1aWxkIG9yZGVyLiAgQWxsXG4gICBCYXNlIGZpbGVzIHRoYXQgbmVlZCB0byB1c2UgbGlzdHMgYW5kIGNvbWUgYmVmb3JlIFtCYXNlLkxpc3RdIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuICAgW21vZHVsZSBMaXN0ID0gTGlzdDBdLiAgRGVmaW5pbmcgW21vZHVsZSBMaXN0ID0gTGlzdDBdIGlzIGFsc28gbmVjZXNzYXJ5IGJlY2F1c2UgaXRcbiAgIHByZXZlbnRzIG9jYW1sZGVwIGZyb20gbWlzdGFrZW5seSBjYXVzaW5nIGEgZmlsZSB0byBkZXBlbmQgb24gW0Jhc2UuTGlzdF0uICopXG5cbm9wZW4hIEltcG9ydDBcblxubGV0IGhkX2V4biA9IENhbWwuTGlzdC5oZFxubGV0IGxlbmd0aCA9IENhbWwuTGlzdC5sZW5ndGhcbmxldCByZXZfYXBwZW5kID0gQ2FtbC5MaXN0LnJldl9hcHBlbmRcbmxldCB0bF9leG4gPSBDYW1sLkxpc3QudGxcbmxldCB1bnppcCA9IENhbWwuTGlzdC5zcGxpdFxuXG4oKiBUaGVzZSBhcmUgZXRhIGV4cGFuZGVkIGluIG9yZGVyIHRvIHBlcm11dGUgcGFyYW1ldGVyIG9yZGVyIHRvIGZvbGxvdyBCYXNlXG4gICBjb252ZW50aW9ucy4gKilcbmxldCBleGlzdHMgdCB+ZiA9IENhbWwuTGlzdC5leGlzdHMgdCB+ZlxubGV0IGV4aXN0czJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuZXhpc3RzMiBsMSBsMiB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IENhbWwuTGlzdC5mb2xkX2xlZnQgdCB+ZiB+aW5pdFxubGV0IGZvbGQyX29rIGwxIGwyIH5pbml0IH5mID0gQ2FtbC5MaXN0LmZvbGRfbGVmdDIgbDEgbDIgfmluaXQgfmZcbmxldCBmb3JfYWxsIHQgfmYgPSBDYW1sLkxpc3QuZm9yX2FsbCB0IH5mXG5sZXQgZm9yX2FsbDJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuZm9yX2FsbDIgbDEgbDIgfmZcbmxldCBpdGVyIHQgfmYgPSBDYW1sLkxpc3QuaXRlciB0IH5mXG5sZXQgaXRlcjJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QuaXRlcjIgbDEgbDIgfmZcbmxldCBub250YWlsX21hcCB0IH5mID0gQ2FtbC5MaXN0Lm1hcCB0IH5mXG5sZXQgbm9udGFpbF9tYXBpIHQgfmYgPSBDYW1sLkxpc3QubWFwaSB0IH5mXG5sZXQgcGFydGl0aW9uIHQgfmYgPSBDYW1sLkxpc3QucGFydGl0aW9uIHQgfmZcbmxldCByZXZfbWFwIHQgfmYgPSBDYW1sLkxpc3QucmV2X21hcCB0IH5mXG5sZXQgcmV2X21hcDJfb2sgbDEgbDIgfmYgPSBDYW1sLkxpc3QucmV2X21hcDIgbDEgbDIgfmZcbmxldCBzb3J0IGwgfmNvbXBhcmUgPSBDYW1sLkxpc3Quc29ydCBsIH5jbXA6Y29tcGFyZVxubGV0IHN0YWJsZV9zb3J0IGwgfmNvbXBhcmUgPSBDYW1sLkxpc3Quc3RhYmxlX3NvcnQgbCB+Y21wOmNvbXBhcmVcblxubGV0IHJldiA9IGZ1bmN0aW9uXG4gIHwgKFtdIHwgWyBfIF0pIGFzIHJlcyAtPiByZXNcbiAgfCB4IDo6IHkgOjogcmVzdCAtPiByZXZfYXBwZW5kIHJlc3QgWyB5OyB4IF1cbjs7XG5cbmxldCBmb2xkX3JpZ2h0IGwgfmYgfmluaXQgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBpbml0ICgqIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIFt+Zl0gYmVsb3cgKilcbiAgfCBfIC0+IGZvbGQgfmY6KGZ1biBhIGIgLT4gZiBiIGEpIH5pbml0IChyZXYgbClcbjs7XG4iLCIoKlxuICAgVGhpcyBpcyB0aGUgaW50ZXJmYWNlIHRvIHRoZSBydW50aW1lIHN1cHBvcnQgZm9yIFtwcHhfaGFzaF0uXG5cbiAgIFRoZSBbcHB4X2hhc2hdIHN5bnRheCBleHRlbnNpb24gc3VwcG9ydHM6IFtAQGRlcml2aW5nIGhhc2hdIGFuZCBbJWhhc2hfZm9sZDogVFlQRV0gYW5kXG4gICBbJWhhc2g6IFRZUEVdXG5cbiAgIEZvciB0eXBlIFt0XSBhIGZ1bmN0aW9uIFtoYXNoX2ZvbGRfdF0gb2YgdHlwZSBbSGFzaC5zdGF0ZSAtPiB0IC0+IEhhc2guc3RhdGVdIGlzXG4gICBnZW5lcmF0ZWQuXG5cbiAgIFRoZSBnZW5lcmF0ZWQgW2hhc2hfZm9sZF88VD5dIGZ1bmN0aW9uIGlzIGNvbXBvc2l0aW9uYWwsIGZvbGxvd2luZyB0aGUgc3RydWN0dXJlIG9mIHRoZVxuICAgdHlwZTsgYWxsb3dpbmcgdXNlciBvdmVycmlkZXMgYXQgZXZlcnkgbGV2ZWwuIFRoaXMgaXMgaW4gY29udHJhc3QgdG8gb2NhbWwncyBidWlsdGluXG4gICBwb2x5bW9ycGhpYyBoYXNoaW5nIFtIYXNodGJsLmhhc2hdIHdoaWNoIGlnbm9yZXMgdXNlciBvdmVycmlkZXMuXG5cbiAgIFRoZSBnZW5lcmF0b3IgYWxzbyBwcm92aWRlcyBhIGRpcmVjdCBoYXNoLWZ1bmN0aW9uIFtoYXNoXSAobmFtZWQgW2hhc2hfPFQ+XSB3aGVuIDxUPiAhPVxuICAgXCJ0XCIpIG9mIHR5cGU6IFt0IC0+IEhhc2guaGFzaF92YWx1ZV0uXG5cbiAgIFRoZSBmb2xkaW5nIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGFjY2Vzc2VkIGFzIFslaGFzaF9mb2xkOiBUWVBFXVxuICAgVGhlIGRpcmVjdCBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBhY2Nlc3NlZCBhcyBbJWhhc2g6IFRZUEVdXG4qKVxuXG5vcGVuISBJbXBvcnQwXG5tb2R1bGUgQXJyYXkgPSBBcnJheTBcbm1vZHVsZSBDaGFyID0gQ2hhcjBcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEhhc2hfaW50ZlxuXG4oKiogQnVpbHRpbiBmb2xkaW5nLXN0eWxlIGhhc2ggZnVuY3Rpb25zLCBhYnN0cmFjdGVkIG92ZXIgW0hhc2hfaW50Zi5TXSAqKVxubW9kdWxlIEZvbGRpbmcgKEhhc2ggOiBIYXNoX2ludGYuUykgOlxuICBIYXNoX2ludGYuQnVpbHRpbl9pbnRmXG4gIHdpdGggdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgIGFuZCB0eXBlIGhhc2hfdmFsdWUgPSBIYXNoLmhhc2hfdmFsdWUgPSBzdHJ1Y3RcbiAgdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlXG4gIHR5cGUgJ2EgZm9sZGVyID0gc3RhdGUgLT4gJ2EgLT4gc3RhdGVcblxuICBsZXQgaGFzaF9mb2xkX3VuaXQgcyAoKSA9IHNcbiAgbGV0IGhhc2hfZm9sZF9pbnQgPSBIYXNoLmZvbGRfaW50XG4gIGxldCBoYXNoX2ZvbGRfaW50NjQgPSBIYXNoLmZvbGRfaW50NjRcbiAgbGV0IGhhc2hfZm9sZF9mbG9hdCA9IEhhc2guZm9sZF9mbG9hdFxuICBsZXQgaGFzaF9mb2xkX3N0cmluZyA9IEhhc2guZm9sZF9zdHJpbmdcbiAgbGV0IGFzX2ludCBmIHMgeCA9IGhhc2hfZm9sZF9pbnQgcyAoZiB4KVxuXG4gICgqIFRoaXMgaWdub3JlcyB0aGUgc2lnbiBiaXQgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIHVubGlrZWx5IHRvIGxlYWQgdG9cbiAgICAgZnJlcXVlbnQgY29sbGlzaW9ucyAobWluX3ZhbHVlIGNvbGxpZGluZyB3aXRoIDAgaXMgdGhlIG1vc3QgbGlrZWx5IG9uZSkuICAqKVxuICBsZXQgaGFzaF9mb2xkX2ludDMyID0gYXNfaW50IENhbWwuSW50MzIudG9faW50XG4gIGxldCBoYXNoX2ZvbGRfY2hhciA9IGFzX2ludCBDaGFyLnRvX2ludFxuXG4gIGxldCBoYXNoX2ZvbGRfYm9vbCA9XG4gICAgYXNfaW50IChmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IDFcbiAgICAgIHwgZmFsc2UgLT4gMClcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX25hdGl2ZWludCBzIHggPSBoYXNoX2ZvbGRfaW50NjQgcyAoQ2FtbC5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiBoYXNoX2ZvbGRfZWxlbSBzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gaGFzaF9mb2xkX2ludCBzIDBcbiAgICB8IFNvbWUgeCAtPiBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2ludCBzIDEpIHhcbiAgOztcblxuICBsZXQgcmVjIGhhc2hfZm9sZF9saXN0X2JvZHkgaGFzaF9mb2xkX2VsZW0gcyBsaXN0ID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IHggOjogeHMgLT4gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSAoaGFzaF9mb2xkX2VsZW0gcyB4KSB4c1xuICA7O1xuXG4gIGxldCBoYXNoX2ZvbGRfbGlzdCBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgPVxuICAgICgqIFRoZSBbbGVuZ3RoXSBvZiB0aGUgbGlzdCBtdXN0IGJlIGluY29ycG9yYXRlZCBpbnRvIHRoZSBoYXNoLXN0YXRlIHNvIHZhbHVlcyBvZlxuICAgICAgIHR5cGVzIHN1Y2ggYXMgW3VuaXQgbGlzdF0gLSAoW10sIFsoKV0sIFsoKTsoKV0sLi4pIGFyZSBoYXNoZWQgZGlmZmVyZW50bHkuICopXG4gICAgKCogVGhlIFtsZW5ndGhdIG11c3QgY29tZSBiZWZvcmUgdGhlIGVsZW1lbnRzIHRvIGF2b2lkIGEgdmlvbGF0aW9uIG9mIHRoZSBydWxlXG4gICAgICAgZW5mb3JjZWQgYnkgUGVyZmVjdF9oYXNoLiAqKVxuICAgIGxldCBzID0gaGFzaF9mb2xkX2ludCBzIChMaXN0Lmxlbmd0aCBsaXN0KSBpblxuICAgIGxldCBzID0gaGFzaF9mb2xkX2xpc3RfYm9keSBoYXNoX2ZvbGRfZWxlbSBzIGxpc3QgaW5cbiAgICBzXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9sYXp5X3QgaGFzaF9mb2xkX2VsZW0gcyB4ID0gaGFzaF9mb2xkX2VsZW0gcyAoQ2FtbC5MYXp5LmZvcmNlIHgpXG4gIGxldCBoYXNoX2ZvbGRfcmVmX2Zyb3plbiBoYXNoX2ZvbGRfZWxlbSBzIHggPSBoYXNoX2ZvbGRfZWxlbSBzICF4XG5cbiAgbGV0IHJlYyBoYXNoX2ZvbGRfYXJyYXlfZnJvemVuX2kgaGFzaF9mb2xkX2VsZW0gcyBhcnJheSBpID1cbiAgICBpZiBpID0gQXJyYXkubGVuZ3RoIGFycmF5XG4gICAgdGhlbiBzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZSA9IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSBpblxuICAgICAgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pIGhhc2hfZm9sZF9lbGVtIChoYXNoX2ZvbGRfZWxlbSBzIGUpIGFycmF5IChpICsgMSkpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9hcnJheV9mcm96ZW4gaGFzaF9mb2xkX2VsZW0gcyBhcnJheSA9XG4gICAgaGFzaF9mb2xkX2FycmF5X2Zyb3plbl9pXG4gICAgICAoKiBbbGVuZ3RoXSBtdXN0IGJlIGluY29ycG9yYXRlZCBmb3IgYXJyYXlzLCBhcyBpdCBpcyBmb3IgbGlzdHMuIFNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBoYXNoX2ZvbGRfZWxlbVxuICAgICAgKGhhc2hfZm9sZF9pbnQgcyAoQXJyYXkubGVuZ3RoIGFycmF5KSlcbiAgICAgIGFycmF5XG4gICAgICAwXG4gIDs7XG5cbiAgKCogdGhlIGR1cGxpY2F0aW9uIGhlcmUgaXMgYmVjYXVzZSB3ZSB0aGlua1xuICAgICBvY2FtbCBjYW4ndCBlbGltaW5hdGUgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgb3RoZXJ3aXNlLiAqKVxuICBsZXQgaGFzaF9uYXRpdmVpbnQgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX25hdGl2ZWludCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5cbiAgbGV0IGhhc2hfaW50NjQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9pbnQ2NCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2ludDMyIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfaW50MzIgKEhhc2gucmVzZXQgKEhhc2guYWxsb2MgKCkpKSB4KVxuICBsZXQgaGFzaF9jaGFyIHggPSBIYXNoLmdldF9oYXNoX3ZhbHVlIChoYXNoX2ZvbGRfY2hhciAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2ludCB4ID0gSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX2ludCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX2Jvb2wgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9ib29sIChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcblxuICBsZXQgaGFzaF9zdHJpbmcgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3N0cmluZyAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZmxvYXQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF9mbG9hdCAoSGFzaC5yZXNldCAoSGFzaC5hbGxvYyAoKSkpIHgpXG4gIGxldCBoYXNoX3VuaXQgeCA9IEhhc2guZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF91bml0IChIYXNoLnJlc2V0IChIYXNoLmFsbG9jICgpKSkgeClcbmVuZFxuXG5tb2R1bGUgRiAoSGFzaCA6IEhhc2hfaW50Zi5TKSA6XG4gIEhhc2hfaW50Zi5GdWxsXG4gIHdpdGggdHlwZSBoYXNoX3ZhbHVlID0gSGFzaC5oYXNoX3ZhbHVlXG4gICBhbmQgdHlwZSBzdGF0ZSA9IEhhc2guc3RhdGVcbiAgIGFuZCB0eXBlIHNlZWQgPSBIYXNoLnNlZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNoXG5cbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBjcmVhdGUgP3NlZWQgKCkgPSByZXNldCA/c2VlZCAoYWxsb2MgKCkpXG4gIGxldCBvZl9mb2xkIGhhc2hfZm9sZF90IHQgPSBnZXRfaGFzaF92YWx1ZSAoaGFzaF9mb2xkX3QgKGNyZWF0ZSAoKSkgdClcblxuICBtb2R1bGUgQnVpbHRpbiA9IEZvbGRpbmcgKEhhc2gpXG5cbiAgbGV0IHJ1biA/c2VlZCBmb2xkZXIgeCA9XG4gICAgSGFzaC5nZXRfaGFzaF92YWx1ZSAoZm9sZGVyIChIYXNoLnJlc2V0ID9zZWVkIChIYXNoLmFsbG9jICgpKSkgeClcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW50ZXJuYWxoYXNoIDogc2lnXG4gIGluY2x1ZGVcbiAgICBIYXNoX2ludGYuU1xuICAgIHdpdGggdHlwZSBzdGF0ZSA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLnN0YXRlXG4gICAgICgqIFdlIGdpdmUgYSBjb25jcmV0ZSB0eXBlIGZvciBbc3RhdGVdLCBhbGJlaXQgb25seSBwYXJ0aWFsbHkgZXhwb3NlZCAoc2VlXG4gICAgICAgIEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzKSwgc28gdGhhdCBpdCB1bmlmaWVzIHdpdGggdGhlIHNhbWUgdHlwZSBpbiBbQmFzZV9ib290XSxcbiAgICAgICAgYW5kIHRvIGFsbG93IG9wdGltaXphdGlvbnMgZm9yIHRoZSBpbW1lZGlhdGUgdHlwZS4gKilcbiAgICAgYW5kIHR5cGUgc2VlZCA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLnNlZWRcbiAgICAgYW5kIHR5cGUgaGFzaF92YWx1ZSA9IEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzLmhhc2hfdmFsdWVcblxuICBleHRlcm5hbCBmb2xkX2ludDY0IDogc3RhdGUgLT4gaW50NjQgLT4gc3RhdGUgPSBcIkJhc2VfaW50ZXJuYWxoYXNoX2ZvbGRfaW50NjRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGZvbGRfaW50IDogc3RhdGUgLT4gaW50IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2ludFwiIFtAQG5vYWxsb2NdXG5cbiAgZXh0ZXJuYWwgZm9sZF9mbG9hdCA6IHN0YXRlIC0+IGZsb2F0IC0+IHN0YXRlID0gXCJCYXNlX2ludGVybmFsaGFzaF9mb2xkX2Zsb2F0XCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBmb2xkX3N0cmluZyA6IHN0YXRlIC0+IHN0cmluZyAtPiBzdGF0ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZm9sZF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGdldF9oYXNoX3ZhbHVlIDogc3RhdGUgLT4gaGFzaF92YWx1ZSA9IFwiQmFzZV9pbnRlcm5hbGhhc2hfZ2V0X2hhc2hfdmFsdWVcIlxuICBbQEBub2FsbG9jXVxuZW5kID0gc3RydWN0XG4gIGxldCBkZXNjcmlwdGlvbiA9IFwiaW50ZXJuYWxoYXNoXCJcblxuICBpbmNsdWRlIEJhc2VfaW50ZXJuYWxoYXNoX3R5cGVzXG5cbiAgbGV0IGFsbG9jICgpID0gY3JlYXRlX3NlZWRlZCAwXG4gIGxldCByZXNldCA/KHNlZWQgPSAwKSBfdCA9IGNyZWF0ZV9zZWVkZWQgc2VlZFxuXG4gIG1vZHVsZSBGb3JfdGVzdHMgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcGFyZV9zdGF0ZSAoYSA6IHN0YXRlKSAoYiA6IHN0YXRlKSA9IGNvbXBhcmUgKGEgOj4gaW50KSAoYiA6PiBpbnQpXG4gICAgbGV0IHN0YXRlX3RvX3N0cmluZyAoc3RhdGUgOiBzdGF0ZSkgPSBJbnQudG9fc3RyaW5nIChzdGF0ZSA6PiBpbnQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgSW50ZXJuYWxoYXNoXG5cbiAgdHlwZSAnYSBmb2xkZXIgPSBzdGF0ZSAtPiAnYSAtPiBzdGF0ZVxuXG4gIGxldCBjcmVhdGUgP3NlZWQgKCkgPSByZXNldCA/c2VlZCAoYWxsb2MgKCkpXG4gIGxldCBydW4gP3NlZWQgZm9sZGVyIHggPSBnZXRfaGFzaF92YWx1ZSAoZm9sZGVyIChyZXNldCA/c2VlZCAoYWxsb2MgKCkpKSB4KVxuICBsZXQgb2ZfZm9sZCBoYXNoX2ZvbGRfdCB0ID0gZ2V0X2hhc2hfdmFsdWUgKGhhc2hfZm9sZF90IChjcmVhdGUgKCkpIHQpXG5cbiAgbW9kdWxlIEJ1aWx0aW4gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRm9sZGluZyA9IEZvbGRpbmcgKEludGVybmFsaGFzaClcbiAgICBpbmNsdWRlIEZvbGRpbmdcblxuICAgICgqIFtGb2xkaW5nXSBwcm92aWRlcyBzb21lIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgW2hhc2hfKl0gZnVuY3Rpb25zIGJlbG93LFxuICAgICAgIGJ1dCB0aGV5IGFyZSBpbmVmZmljaWVudCBmb3Igc29tZSB1c2UtY2FzZXMgYmVjYXVzZSBvZiB0aGUgdXNlIG9mIHRoZSBbaGFzaF9mb2xkXVxuICAgICAgIGZ1bmN0aW9ucy4gQXQgdGhpcyBwb2ludCwgdGhlIFtoYXNoX3ZhbHVlXSB0eXBlIGhhcyBiZWVuIGZpeGVkIHRvIFtpbnRdLCBzbyB0aGlzXG4gICAgICAgbW9kdWxlIGNhbiBwcm92aWRlIHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9ucy4gKilcblxuICAgIGxldCBoYXNoX2NoYXIgPSBDaGFyMC50b19pbnRcblxuICAgICgqIFRoaXMgaGFzaCB3YXMgY2hvc2VuIGZyb20gaGVyZTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYmFkYm95LzYyNjc3NDNcblxuICAgICAgIEl0IGF0dGVtcHRzIHRvIGZ1bGZpbGwgdGhlIHByaW1hcnkgZ29hbHMgb2YgYSBub24tY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uOlxuXG4gICAgICAgLSBhIGJpdCBjaGFuZ2UgaW4gdGhlIGlucHV0IHNob3VsZCBjaGFuZ2UgfjEvMiBvZiB0aGUgb3V0cHV0IGJpdHNcbiAgICAgICAtIHRoZSBvdXRwdXQgc2hvdWxkIGJlIHVuaWZvcm1seSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhlIG91dHB1dCByYW5nZVxuICAgICAgIC0gaW5wdXRzIHRoYXQgYXJlIGNsb3NlIHRvIGVhY2ggb3RoZXIgc2hvdWxkbid0IGxlYWQgdG8gb3V0cHV0cyB0aGF0IGFyZSBjbG9zZSB0b1xuICAgICAgICAgZWFjaCBvdGhlci5cbiAgICAgICAtIGFsbCBiaXRzIG9mIHRoZSBpbnB1dCBhcmUgdXNlZCBpbiBnZW5lcmF0aW5nIHRoZSBvdXRwdXRcblxuICAgICAgIEluIG91ciBjYXNlIHdlIGFsc28gd2FudCBpdCB0byBiZSBmYXN0LCBub24tYWxsb2NhdGluZywgYW5kIGlubGluYWJsZS4gICopXG4gICAgbGV0W0BpbmxpbmUgYWx3YXlzXSBoYXNoX2ludCAodCA6IGludCkgPVxuICAgICAgbGV0IHQgPSBsbm90IHQgKyAodCBsc2wgMjEpIGluXG4gICAgICBsZXQgdCA9IHQgbHhvciAodCBsc3IgMjQpIGluXG4gICAgICBsZXQgdCA9IHQgKyAodCBsc2wgMykgKyAodCBsc2wgOCkgaW5cbiAgICAgIGxldCB0ID0gdCBseG9yICh0IGxzciAxNCkgaW5cbiAgICAgIGxldCB0ID0gdCArICh0IGxzbCAyKSArICh0IGxzbCA0KSBpblxuICAgICAgbGV0IHQgPSB0IGx4b3IgKHQgbHNyIDI4KSBpblxuICAgICAgdCArICh0IGxzbCAzMSlcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfYm9vbCB4ID0gaWYgeCB0aGVuIDEgZWxzZSAwXG5cbiAgICBleHRlcm5hbCBoYXNoX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCJCYXNlX2hhc2hfZG91YmxlXCIgW0BAbm9hbGxvY11cblxuICAgIGxldCBoYXNoX3VuaXQgKCkgPSAwXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgVFxuIiwib3BlbiBJbXBvcnQwXG5cbmxldCBwaHlzX2VxdWFsID0gcGh5c19lcXVhbFxuXG5leHRlcm5hbCBwb2x5bW9ycGhpY19jb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5leHRlcm5hbCBwb2x5bW9ycGhpY19lcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5leHRlcm5hbCAoICYmICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVhbmRcIlxuXG5sZXQgY29tcGFyZV9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJDb21wYXJlIGNhbGxlZCBvbiB0aGUgdHlwZSAlcywgd2hpY2ggaXMgYWJzdHJhY3QgaW4gYW4gaW1wbGVtZW50YXRpb24uXCJcbiAgICB0eXBlX25hbWVcbjs7XG5cbmxldCBlcXVhbF9hYnN0cmFjdCB+dHlwZV9uYW1lIF8gXyA9XG4gIFByaW50Zi5rc3ByaW50ZlxuICAgIGZhaWx3aXRoXG4gICAgXCJFcXVhbCBjYWxsZWQgb24gdGhlIHR5cGUgJXMsIHdoaWNoIGlzIGFic3RyYWN0IGluIGFuIGltcGxlbWVudGF0aW9uLlwiXG4gICAgdHlwZV9uYW1lXG47O1xuXG50eXBlICdhIGNvbXBhcmUgPSAnYSAtPiAnYSAtPiBpbnRcbnR5cGUgJ2EgZXF1YWwgPSAnYSAtPiAnYSAtPiBib29sXG5cbm1vZHVsZSBDb21wYXJhYmxlID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjb21wYXJlIDogdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2EgdCBjb21wYXJlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAoJ2EsICdiKSB0IGNvbXBhcmVcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcGFyZSA6ICdhIGNvbXBhcmUgLT4gJ2IgY29tcGFyZSAtPiAnYyBjb21wYXJlIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXBhcmVcbiAgZW5kXG5lbmRcblxubW9kdWxlIEVxdWFsID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBlcXVhbCA6IHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdhIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBlcXVhbCA6ICdhIGVxdWFsIC0+ICdiIGVxdWFsIC0+ICgnYSwgJ2IpIHQgZXF1YWxcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgZXF1YWwgOiAnYSBlcXVhbCAtPiAnYiBlcXVhbCAtPiAnYyBlcXVhbCAtPiAoJ2EsICdiLCAnYykgdCBlcXVhbFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQnVpbHRpbiA9IHN0cnVjdFxuICBsZXQgY29tcGFyZV9ib29sIDogYm9vbCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2NoYXIgOiBjaGFyIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfZmxvYXQgOiBmbG9hdCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludCA6IGludCBjb21wYXJlID0gUG9seS5jb21wYXJlXG4gIGxldCBjb21wYXJlX2ludDMyIDogaW50MzIgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuICBsZXQgY29tcGFyZV9pbnQ2NCA6IGludDY0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfbmF0aXZlaW50IDogbmF0aXZlaW50IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfc3RyaW5nIDogc3RyaW5nIGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgbGV0IGNvbXBhcmVfdW5pdCA6IHVuaXQgY29tcGFyZSA9IFBvbHkuY29tcGFyZVxuXG4gIGxldCBjb21wYXJlX2FycmF5IGNvbXBhcmVfZWx0IGEgYiA9XG4gICAgaWYgcGh5c19lcXVhbCBhIGJcbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIGxldCBsZW5fYSA9IEFycmF5MC5sZW5ndGggYSBpblxuICAgICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgICBsZXQgcmV0ID0gY29tcGFyZSBsZW5fYSBsZW5fYiBpblxuICAgICAgaWYgcmV0IDw+IDBcbiAgICAgIHRoZW4gcmV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgIGlmIGkgPSBsZW5fYVxuICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGwgPSBBcnJheTAudW5zYWZlX2dldCBhIGlcbiAgICAgICAgICAgIGFuZCByID0gQXJyYXkwLnVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgbCByIGluXG4gICAgICAgICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGxvb3AgKGkgKyAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCAwKSlcbiAgOztcblxuICBsZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgW10sIFtdIC0+IDBcbiAgICB8IFtdLCBfIC0+IC0xXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICBsZXQgcmVzID0gY29tcGFyZV9lbHQgeCB5IGluXG4gICAgICBpZiByZXMgPD4gMCB0aGVuIHJlcyBlbHNlIGNvbXBhcmVfbGlzdCBjb21wYXJlX2VsdCB4cyB5c1xuICA7O1xuXG4gIGxldCBjb21wYXJlX29wdGlvbiBjb21wYXJlX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgfCBOb25lLCBTb21lIF8gLT4gLTFcbiAgICB8IFNvbWUgXywgTm9uZSAtPiAxXG4gICAgfCBTb21lIGEsIFNvbWUgYiAtPiBjb21wYXJlX2VsdCBhIGJcbiAgOztcblxuICBsZXQgY29tcGFyZV9yZWYgY29tcGFyZV9lbHQgYSBiID0gY29tcGFyZV9lbHQgIWEgIWJcbiAgbGV0IGVxdWFsX2Jvb2wgOiBib29sIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfY2hhciA6IGNoYXIgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQgOiBpbnQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gIGxldCBlcXVhbF9pbnQzMiA6IGludDMyIGVxdWFsID0gUG9seS5lcXVhbFxuICBsZXQgZXF1YWxfaW50NjQgOiBpbnQ2NCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA6IG5hdGl2ZWludCBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3N0cmluZyA6IHN0cmluZyBlcXVhbCA9IFBvbHkuZXF1YWxcbiAgbGV0IGVxdWFsX3VuaXQgOiB1bml0IGVxdWFsID0gUG9seS5lcXVhbFxuXG4gICgqIFtQb2x5LmVxdWFsXSBpcyBJRUVFIGNvbXBsaWFudCwgd2hpY2ggaXMgbm90IHdoYXQgd2Ugd2FudCBoZXJlLiAqKVxuICBsZXQgZXF1YWxfZmxvYXQgeCB5ID0gZXF1YWxfaW50IChjb21wYXJlX2Zsb2F0IHggeSkgMFxuXG4gIGxldCBlcXVhbF9hcnJheSBlcXVhbF9lbHQgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8XG4gICAgbGV0IGxlbl9hID0gQXJyYXkwLmxlbmd0aCBhIGluXG4gICAgbGV0IGxlbl9iID0gQXJyYXkwLmxlbmd0aCBiIGluXG4gICAgZXF1YWwgbGVuX2EgbGVuX2JcbiAgICAmJlxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGkgPSBsZW5fYVxuICAgICAgfHxcbiAgICAgIGxldCBsID0gQXJyYXkwLnVuc2FmZV9nZXQgYSBpXG4gICAgICBhbmQgciA9IEFycmF5MC51bnNhZmVfZ2V0IGIgaSBpblxuICAgICAgZXF1YWxfZWx0IGwgciAmJiBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuICA7O1xuXG4gIGxldCByZWMgZXF1YWxfbGlzdCBlcXVhbF9lbHQgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IFtdLCBbXSAtPiB0cnVlXG4gICAgfCBbXSwgXyB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+IGVxdWFsX2VsdCB4IHkgJiYgZXF1YWxfbGlzdCBlcXVhbF9lbHQgeHMgeXNcbiAgOztcblxuICBsZXQgZXF1YWxfb3B0aW9uIGVxdWFsX2VsdCBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBOb25lLCBTb21lIF8gfCBTb21lIF8sIE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgYSwgU29tZSBiIC0+IGVxdWFsX2VsdCBhIGJcbiAgOztcblxuICBsZXQgZXF1YWxfcmVmIGVxdWFsX2VsdCBhIGIgPSBlcXVhbF9lbHQgIWEgIWJcbmVuZFxuIiwiKCoqIFRoaXMgbW9kdWxlIGlzIGZvciB1c2UgYnkgcHB4X2hhc2gsIGFuZCBpcyB0aHVzIG5vdCBpbiB0aGUgaW50ZXJmYWNlIG9mIEJhc2UuICopXG5tb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBIYXNoID0gSGFzaCAoKiogQGNhbm9uaWNhbCBCYXNlLkhhc2ggKilcbmVuZFxuXG50eXBlICdhIGhhc2hfZm9sZCA9IFN0ZC5IYXNoLnN0YXRlIC0+ICdhIC0+IFN0ZC5IYXNoLnN0YXRlXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiB0IGhhc2hfZm9sZFxuICAgIHZhbCBoYXNoIDogdCAtPiBTdGQuSGFzaC5oYXNoX3ZhbHVlXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3QgOiAnYSBoYXNoX2ZvbGQgLT4gJ2EgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBoYXNoX2ZvbGRfdCA6ICdhIGhhc2hfZm9sZCAtPiAnYiBoYXNoX2ZvbGQgLT4gKCdhLCAnYikgdCBoYXNoX2ZvbGRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaGFzaF9mb2xkX3RcbiAgICAgIDogICdhIGhhc2hfZm9sZFxuICAgICAgLT4gJ2IgaGFzaF9mb2xkXG4gICAgICAtPiAnYyBoYXNoX2ZvbGRcbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGhhc2hfZm9sZFxuICBlbmRcbmVuZFxuIiwib3BlbiBIYXNoLkJ1aWx0aW5cbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgU2V4cGxpYjAuU2V4cFxuXG4oKiogVHlwZSBvZiBTLWV4cHJlc3Npb25zICopXG50eXBlIHQgPSBTZXhwbGliMC5TZXhwLnQgPVxuICB8IEF0b20gb2Ygc3RyaW5nXG4gIHwgTGlzdCBvZiB0IGxpc3RcbltAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG5sZXQgcmVjIGNvbXBhcmUgPVxuICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDFfIGJfXzAwMl9cbiAgICAgdGhlbiAwXG4gICAgIGVsc2UgKFxuICAgICAgIG1hdGNoIGFfXzAwMV8sIGJfXzAwMl8gd2l0aFxuICAgICAgIHwgQXRvbSBfYV9fMDAzXywgQXRvbSBfYl9fMDA0XyAtPiBjb21wYXJlX3N0cmluZyBfYV9fMDAzXyBfYl9fMDA0X1xuICAgICAgIHwgQXRvbSBfLCBfIC0+IC0xXG4gICAgICAgfCBfLCBBdG9tIF8gLT4gMVxuICAgICAgIHwgTGlzdCBfYV9fMDA1XywgTGlzdCBfYl9fMDA2XyAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSBfYV9fMDA1XyBfYl9fMDA2XylcbiAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG47O1xuXG5sZXQgcmVjIChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBBdG9tIF9hMCAtPlxuICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgaGFzaF9mb2xkX3N0cmluZyBoc3YgX2EwXG4gICAgIHwgTGlzdCBfYTAgLT5cbiAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxIGluXG4gICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgIGhhc2hfZm9sZF9saXN0IGhhc2hfZm9sZF90IGhzdiBfYTBcbiAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcblxuYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2NvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxubGV0IG9mX3N0cmluZyA9ICgpXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3lzID0gU3lzMFxuXG50eXBlIHQgPVxuICB8IFczMlxuICB8IFc2NFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFczMiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJXMzJcIlxuICAgIHwgVzY0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlc2NFwiXG4gICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBudW1fYml0cyA9IGZ1bmN0aW9uXG4gIHwgVzMyIC0+IDMyXG4gIHwgVzY0IC0+IDY0XG47O1xuXG5sZXQgd29yZF9zaXplID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZV9pbl9iaXRzIHdpdGhcbiAgfCAzMiAtPiBXMzJcbiAgfCA2NCAtPiBXNjRcbiAgfCBfIC0+IGZhaWx3aXRoIFwidW5rbm93biB3b3JkIHNpemVcIlxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgciA9IHJlZiBbIFwiQmFzZS5TZXhwLnBwX2h1bVwiIF1cbmxldCBhbGwgKCkgPSAhclxubGV0IHJlZ2lzdGVyIHAgPSByIDo9IHAgOjogIXJcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgcHAgOiBGb3JtYXR0ZXIudCAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgUmVnaXN0ZXJfcHAgKE0gOiBzaWdcbiAgICBpbmNsdWRlIFNcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1cblxuICBsZXQgKCkgPSByZWdpc3RlciAoTS5tb2R1bGVfbmFtZSBeIFwiLnBwXCIpXG5lbmRcblxubW9kdWxlIFJlZ2lzdGVyIChNIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgZW5kKSA9XG4gIFJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIGxldCBwcCBmb3JtYXR0ZXIgdCA9IENhbWwuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmb3JtYXR0ZXIgKE0udG9fc3RyaW5nIHQpXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBleG4gW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9leG4gOiB0IC0+IFNleHBsaWIwLlNleHAudClcblxuW0BAQGVuZF1cblxubGV0IGV4aXQgPSBDYW1sLmV4aXRcblxuZXhjZXB0aW9uIEZpbmFsbHkgb2YgdCAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBGaW5hbGx5XSAoZnVuY3Rpb25cbiAgICB8IEZpbmFsbHkgKGFyZzBfXzAwMV8sIGFyZzFfXzAwMl8pIC0+XG4gICAgICBsZXQgcmVzMF9fMDAzXyA9IHNleHBfb2ZfdCBhcmcwX18wMDFfXG4gICAgICBhbmQgcmVzMV9fMDA0XyA9IHNleHBfb2ZfdCBhcmcxX18wMDJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJleG4ubWwuRmluYWxseVwiOyByZXMwX18wMDNfOyByZXMxX18wMDRfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxuZXhjZXB0aW9uIFJlcmFpc2VkIG9mIHN0cmluZyAqIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbmxldCAoKSA9XG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBSZXJhaXNlZF0gKGZ1bmN0aW9uXG4gICAgfCBSZXJhaXNlZCAoYXJnMF9fMDA1XywgYXJnMV9fMDA2XykgLT5cbiAgICAgIGxldCByZXMwX18wMDdfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDA1X1xuICAgICAgYW5kIHJlczFfXzAwOF8gPSBzZXhwX29mX3QgYXJnMV9fMDA2XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgIFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXhuLm1sLlJlcmFpc2VkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5bQEBAZW5kXVxuXG5leGNlcHRpb24gU2V4cCBvZiBTZXhwLnRcblxuKCogV2UgaW5zdGFsbCBhIGN1c3RvbSBleG4tY29udmVydGVyIHJhdGhlciB0aGFuIHVzZTpcblxuICAge1tcbiAgICAgZXhjZXB0aW9uIFNleHAgb2YgU2V4cC50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuICAgICAoKiAuLi4gKilcbiAgICAgW0BAQGVuZF1cbiAgIF19XG5cbiAgIHRvIGVsaW1pbmF0ZSB0aGUgZXh0cmEgd3JhcHBpbmcgb2YgWyhTZXhwIC4uLildLiAqKVxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNleHBdIChmdW5jdGlvblxuICAgIHwgU2V4cCB0IC0+IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBTZXhwIHNleHBcblxubGV0IHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIHQgYmFja3RyYWNlID1cbiAgQ2FtbC5QcmludGV4Yy5yYWlzZV93aXRoX2JhY2t0cmFjZSB0IGJhY2t0cmFjZVxuOztcblxuZXh0ZXJuYWwgaXNfcGh5c19lcXVhbF9tb3N0X3JlY2VudCA6IHQgLT4gYm9vbCA9IFwiQmFzZV9jYW1sX2V4bl9pc19tb3N0X3JlY2VudF9leG5cIlxuXG5sZXQgcmVyYWlzZSBleG4gc3RyID1cbiAgbGV0IGV4bicgPSBSZXJhaXNlZCAoc3RyLCBleG4pIGluXG4gIGlmIGlzX3BoeXNfZXF1YWxfbW9zdF9yZWNlbnQgZXhuXG4gIHRoZW4gKFxuICAgIGxldCBidCA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICByYWlzZV93aXRoX29yaWdpbmFsX2JhY2t0cmFjZSBleG4nIGJ0KVxuICBlbHNlIHJhaXNlIGV4bidcbjs7XG5cbmxldCByZXJhaXNlZiBleGMgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gc3RyICgpIC0+IHJlcmFpc2UgZXhjIHN0cikgZm9ybWF0XG5sZXQgdG9fc3RyaW5nIGV4YyA9IFNleHAudG9fc3RyaW5nX2h1bSB+aW5kZW50OjIgKHNleHBfb2ZfZXhuIGV4YylcbmxldCB0b19zdHJpbmdfbWFjaCBleGMgPSBTZXhwLnRvX3N0cmluZ19tYWNoIChzZXhwX29mX2V4biBleGMpXG5sZXQgc2V4cF9vZl90ID0gc2V4cF9vZl9leG5cblxubGV0IHByb3RlY3R4IH5mIHggfihmaW5hbGx5IDogXyAtPiB1bml0KSA9XG4gIG1hdGNoIGYgeCB3aXRoXG4gIHwgcmVzIC0+XG4gICAgZmluYWxseSB4O1xuICAgIHJlc1xuICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgKG1hdGNoIGZpbmFsbHkgeCB3aXRoXG4gICAgIHwgKCkgLT4gcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgZXhuIGJ0XG4gICAgIHwgZXhjZXB0aW9uIGZpbmFsX2V4biAtPlxuICAgICAgICgqIFVuZm9ydHVuYXRlbHksIHRoZSBiYWNrdHJhY2Ugb2YgdGhlIFtmaW5hbF9leG5dIGlzIGRpc2NhcmRlZCBoZXJlLiAqKVxuICAgICAgIHJhaXNlX3dpdGhfb3JpZ2luYWxfYmFja3RyYWNlIChGaW5hbGx5IChleG4sIGZpbmFsX2V4bikpIGJ0KVxuOztcblxubGV0IHByb3RlY3QgfmYgfmZpbmFsbHkgPSBwcm90ZWN0eCB+ZiAoKSB+ZmluYWxseVxuXG5sZXQgZG9lc19yYWlzZSAodHlwZSBhKSAoZiA6IHVuaXQgLT4gYSkgPVxuICB0cnlcbiAgICBpZ25vcmUgKGYgKCkgOiBhKTtcbiAgICBmYWxzZVxuICB3aXRoXG4gIHwgXyAtPiB0cnVlXG47O1xuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBleG5cblxuICAgIGxldCBwcCBwcGYgdCA9XG4gICAgICBtYXRjaCBzZXhwX29mX2V4bl9vcHQgdCB3aXRoXG4gICAgICB8IFNvbWUgc2V4cCAtPiBTZXhwLnBwX2h1bSBwcGYgc2V4cFxuICAgICAgfCBOb25lIC0+IENhbWwuRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgKENhbWwuUHJpbnRleGMudG9fc3RyaW5nIHQpXG4gICAgOztcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5FeG5cIlxuICBlbmQpXG5cbmxldCBwcmludF93aXRoX2JhY2t0cmFjZSBleGMgcmF3X2JhY2t0cmFjZSA9XG4gIENhbWwuRm9ybWF0LmVwcmludGYgXCJAWzwyPlVuY2F1Z2h0IGV4Y2VwdGlvbjpAXFxuQFxcbkBbJWFAXUBdQFxcbkAuXCIgcHAgZXhjO1xuICBpZiBDYW1sLlByaW50ZXhjLmJhY2t0cmFjZV9zdGF0dXMgKClcbiAgdGhlbiBDYW1sLlByaW50ZXhjLnByaW50X3Jhd19iYWNrdHJhY2UgQ2FtbC5zdGRlcnIgcmF3X2JhY2t0cmFjZTtcbiAgQ2FtbC5mbHVzaCBDYW1sLnN0ZGVyclxuOztcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciAoKSA9XG4gIENhbWwuUHJpbnRleGMuc2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIHByaW50X3dpdGhfYmFja3RyYWNlXG47O1xuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2F1eCB+ZG9fYXRfZXhpdCB+ZXhpdCBmID1cbiAgdHJ5IGYgKCkgd2l0aFxuICB8IGV4YyAtPlxuICAgIGxldCByYXdfYmFja3RyYWNlID0gQ2FtbC5QcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICgqIE9uZSByZWFzb24gdG8gcnVuIFtkb19hdF9leGl0XSBoYW5kbGVycyBiZWZvcmUgcHJpbnRpbmcgb3V0IHRoZSBlcnJvciBtZXNzYWdlIGlzXG4gICAgICAgdGhhdCBpdCBoZWxwcyBjdXJzZXMgYXBwbGljYXRpb25zIGJyaW5nIHRoZSB0ZXJtaW5hbCBpbiBhIGdvb2Qgc3RhdGUsIG90aGVyd2lzZSB0aGVcbiAgICAgICBlcnJvciBtZXNzYWdlIG1pZ2h0IGdldCBjb3JydXB0ZWQuICBBbHNvLCB0aGUgT0NhbWwgdG9wLWxldmVsIHVuY2F1Z2h0IGV4Y2VwdGlvblxuICAgICAgIGhhbmRsZXIgZG9lcyB0aGUgc2FtZS4gKilcbiAgICBpZiBkb19hdF9leGl0XG4gICAgdGhlbiAoXG4gICAgICB0cnkgQ2FtbC5kb19hdF9leGl0ICgpIHdpdGhcbiAgICAgIHwgXyAtPiAoKSk7XG4gICAgKHRyeSBwcmludF93aXRoX2JhY2t0cmFjZSBleGMgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgIHwgXyAtPlxuICAgICAgICh0cnlcbiAgICAgICAgICBDYW1sLlByaW50Zi5lcHJpbnRmIFwiRXhuLmhhbmRsZV91bmNhdWdodCBjb3VsZCBub3QgcHJpbnQ7IGV4aXRpbmcgYW55d2F5XFxuJSFcIlxuICAgICAgICB3aXRoXG4gICAgICAgIHwgXyAtPiAoKSkpO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCBmID0gaGFuZGxlX3VuY2F1Z2h0X2F1eCBmIH5leGl0IH5kb19hdF9leGl0OnRydWVcblxubGV0IGhhbmRsZV91bmNhdWdodCB+ZXhpdDptdXN0X2V4aXQgZiA9XG4gIGhhbmRsZV91bmNhdWdodF9hdXggZiB+ZXhpdDooaWYgbXVzdF9leGl0IHRoZW4gZXhpdCBlbHNlIGlnbm9yZSkgfmRvX2F0X2V4aXQ6bXVzdF9leGl0XG47O1xuXG5sZXQgcmVyYWlzZV91bmNhdWdodCBzdHIgZnVuYyA9XG4gIHRyeSBmdW5jICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICBsZXQgYnQgPSBDYW1sLlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlICgpIGluXG4gICAgcmFpc2Vfd2l0aF9vcmlnaW5hbF9iYWNrdHJhY2UgKFJlcmFpc2VkIChzdHIsIGV4bikpIGJ0XG47O1xuXG5leHRlcm5hbCBjbGVhcl9iYWNrdHJhY2UgOiB1bml0IC0+IHVuaXQgPSBcIkJhc2VfY2xlYXJfY2FtbF9iYWNrdHJhY2VfcG9zXCIgW0BAbm9hbGxvY11cblxubGV0IHJhaXNlX3dpdGhvdXRfYmFja3RyYWNlIGUgPVxuICAoKiBXZSBjbGVhciB0aGUgYmFja3RyYWNlIHRvIHJlZHVjZSBjb25mdXNpb24sIHNvIHRoYXQgcGVvcGxlIGRvbid0IHRoaW5rIHdoYXRldmVyXG4gICAgIGlzIHN0b3JlZCBjb3JyZXNwb25kcyB0byB0aGlzIHJhaXNlLiAqKVxuICBjbGVhcl9iYWNrdHJhY2UgKCk7XG4gIENhbWwucmFpc2Vfbm90cmFjZSBlXG47O1xuXG5sZXQgaW5pdGlhbGl6ZV9tb2R1bGUgKCkgPSBzZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgKClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGNsZWFyX2JhY2t0cmFjZSA9IGNsZWFyX2JhY2t0cmFjZVxuZW5kXG4iLCIoKiBiZWxvbmdzIGluIENvbW1vbiwgYnV0IG1vdmVkIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHJldHVybiA9IHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxubGV0IHdpdGhfcmV0dXJuICh0eXBlIGEpIGYgPVxuICBsZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgICAoKiBSYWlzZWQgdG8gaW5kaWNhdGUgfnJldHVybiB3YXMgY2FsbGVkLiAgTG9jYWwgc28gdGhhdCB0aGUgZXhjZXB0aW9uIGlzIHRpZWQgdG8gYVxuICAgICAgIHBhcnRpY3VsYXIgY2FsbCBvZiBbd2l0aF9yZXR1cm5dLiAqKVxuICAgIGV4Y2VwdGlvbiBSZXR1cm4gb2YgYVxuICBlbmRcbiAgaW5cbiAgbGV0IGlzX2FsaXZlID0gcmVmIHRydWUgaW5cbiAgbGV0IHJldHVybiBhID1cbiAgICBpZiBub3QgIWlzX2FsaXZlXG4gICAgdGhlbiBmYWlsd2l0aCBcInVzZSBvZiBbcmV0dXJuXSBmcm9tIGEgW3dpdGhfcmV0dXJuXSB0aGF0IGFscmVhZHkgcmV0dXJuZWRcIjtcbiAgICBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgKE0uUmV0dXJuIGEpXG4gIGluXG4gIHRyeVxuICAgIGxldCBhID0gZiB7IHJldHVybiB9IGluXG4gICAgaXNfYWxpdmUgOj0gZmFsc2U7XG4gICAgYVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgaXNfYWxpdmUgOj0gZmFsc2U7XG4gICAgKG1hdGNoIGV4biB3aXRoXG4gICAgIHwgTS5SZXR1cm4gYSAtPiBhXG4gICAgIHwgXyAtPiByYWlzZSBleG4pXG47O1xuXG5sZXQgd2l0aF9yZXR1cm5fb3B0aW9uIGYgPVxuICB3aXRoX3JldHVybiAoZnVuIHJldHVybiAtPlxuICAgIGYgeyByZXR1cm4gPSAoZnVuIGEgLT4gcmV0dXJuLnJldHVybiAoU29tZSBhKSkgfTtcbiAgICBOb25lKVxuOztcblxubGV0IHByZXBlbmQgeyByZXR1cm4gfSB+ZiA9IHsgcmV0dXJuID0gKGZ1biB4IC0+IHJldHVybiAoZiB4KSkgfVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIEJhc2ljID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgaWRlbnRpdGllcyBvdWdodCB0byBob2xkIChmb3Igc29tZSB2YWx1ZSBvZiA9KTpcblxuICAgICAgLSBbcmV0dXJuIHggPj49IGYgPSBmIHhdXG4gICAgICAtIFt0ID4+PSBmdW4geCAtPiByZXR1cm4geCA9IHRdXG4gICAgICAtIFsodCA+Pj0gZikgPj49IGcgPSB0ID4+PSBmdW4geCAtPiAoZiB4ID4+PSBnKV1cblxuICAgICAgTm90ZTogWz4+PV0gaXMgdGhlIGluZml4IG5vdGF0aW9uIGZvciBbYmluZF0pICopXG5cbiAgKCoqIFRoZSBbbWFwXSBhcmd1bWVudCB0byBbTW9uYWQuTWFrZV0gc2F5cyBob3cgdG8gaW1wbGVtZW50IHRoZSBtb25hZCdzIFttYXBdIGZ1bmN0aW9uLlxuICAgICAgW2BEZWZpbmVfdXNpbmdfYmluZF0gbWVhbnMgdG8gZGVmaW5lIFttYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC5cblxuICAgICAgU29tZSBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW01vbmFkLk1ha2VdIGFyZSBkZWZpbmVkIGluIHRlcm1zIG9mIFttYXBdLCBzb1xuICAgICAgcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFttYXBdIHdpbGwgaW1wcm92ZSB0aGVpciBlZmZpY2llbmN5IGFzIHdlbGwuICopXG4gIHZhbCBtYXAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdCBdXG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXggPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIFt0ID4+PSBmXSByZXR1cm5zIGEgY29tcHV0YXRpb24gdGhhdCBzZXF1ZW5jZXMgdGhlIGNvbXB1dGF0aW9ucyByZXByZXNlbnRlZCBieSB0d29cbiAgICAgIG1vbmFkIGVsZW1lbnRzLiAgVGhlIHJlc3VsdGluZyBjb21wdXRhdGlvbiBmaXJzdCBkb2VzIFt0XSB0byB5aWVsZCBhIHZhbHVlIFt2XSwgYW5kXG4gICAgICB0aGVuIHJ1bnMgdGhlIGNvbXB1dGF0aW9uIHJldHVybmVkIGJ5IFtmIHZdLiAqKVxuICB2YWwgKCA+Pj0gKSA6ICdhIHQgLT4gKCdhIC0+ICdiIHQpIC0+ICdiIHRcblxuICAoKiogW3QgPj58IGZdIGlzIFt0ID4+PSAoZnVuIGEgLT4gcmV0dXJuIChmIGEpKV0uICopXG4gIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTeW50YXggPSBzaWdcbiAgKCoqIE9wZW5pbmcgYSBtb2R1bGUgb2YgdGhpcyB0eXBlIGFsbG93cyBvbmUgdG8gdXNlIHRoZSBbJWJpbmRdIGFuZCBbJW1hcF0gc3ludGF4XG4gICAgICBleHRlbnNpb25zIGRlZmluZWQgYnkgcHB4X2xldCwgYW5kIGJyaW5ncyBbcmV0dXJuXSBpbnRvIHNjb3BlLiAqKVxuXG4gIHR5cGUgJ2EgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgKCoqIFRoZXNlIGFyZSBjb252ZW5pZW50IHRvIGhhdmUgaW4gc2NvcGUgd2hlbiBwcm9ncmFtbWluZyB3aXRoIGEgbW9uYWQ6ICopXG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICAgaW5jbHVkZSBJbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICAgIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG4gICAgICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICAgICAgdmFsIGJvdGggOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzIDogc2lnIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIGluY2x1ZGUgSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeCB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgKCoqIFtiaW5kIHQgfmZdID0gW3QgPj49IGZdICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiBmOignYSAtPiAnYiB0KSAtPiAnYiB0XG5cbiAgKCoqIFtyZXR1cm4gdl0gcmV0dXJucyB0aGUgKHRyaXZpYWwpIGNvbXB1dGF0aW9uIHRoYXQgcmV0dXJucyB2LiAqKVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gICgqKiBbbWFwIHQgfmZdIGlzIHQgPj58IGYuICopXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG5cbiAgKCoqIFtqb2luIHRdIGlzIFt0ID4+PSAoZnVuIHQnIC0+IHQnKV0uICopXG4gIHZhbCBqb2luIDogJ2EgdCB0IC0+ICdhIHRcblxuICAoKiogW2lnbm9yZV9tIHRdIGlzIFttYXAgdCB+ZjooZnVuIF8gLT4gKCkpXS4gIFtpZ25vcmVfbV0gdXNlZCB0byBiZSBjYWxsZWQgW2lnbm9yZV0sXG4gICAgICBidXQgd2UgZGVjaWRlZCB0aGF0IHdhcyBhIGJhZCBuYW1lLCBiZWNhdXNlIGl0IHNoYWRvd2VkIHRoZSB3aWRlbHkgdXNlZFxuICAgICAgW0NhbWwuaWdub3JlXS4gIFNvbWUgbW9uYWRzIHN0aWxsIGRvIFtsZXQgaWdub3JlID0gaWdub3JlX21dIGZvciBoaXN0b3JpY2FsXG4gICAgICByZWFzb25zLiAqKVxuICB2YWwgaWdub3JlX20gOiAnYSB0IC0+IHVuaXQgdFxuXG4gIHZhbCBhbGwgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG5cbiAgKCoqIExpa2UgW2FsbF0sIGJ1dCBlbnN1cmVzIHRoYXQgZXZlcnkgbW9uYWRpYyB2YWx1ZSBpbiB0aGUgbGlzdCBwcm9kdWNlcyBhIHVuaXQgdmFsdWUsXG4gICAgICBhbGwgb2Ygd2hpY2ggYXJlIGRpc2NhcmRlZCByYXRoZXIgdGhhbiBiZWluZyBjb2xsZWN0ZWQgaW50byBhIGxpc3QuICopXG4gIHZhbCBhbGxfdW5pdCA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBTX3dpdGhvdXRfc3ludGF4IHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBTeW50YXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMiA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIHBhcmFtZXRlciBnZXRzIHVuaWZpZWQgYWNyb3NzIGFsbCB0aGUgY29tcHV0YXRpb24uXG4gICAgICBUaGlzIGlzIHVzZWQgdG8gZW5jb2RlIG1vbmFkcyB3b3JraW5nIG9uIGEgbXVsdGkgcGFyYW1ldGVyIGRhdGEgc3RydWN0dXJlIGxpa2VcbiAgICAgIChbKCdhLCdiKSByZXN1bHRdKS4gKilcblxuICB0eXBlICgnYSwgJ2UpIHRcblxuICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgbWFwIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHQgXVxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgyID0gc2lnXG4gICgqKiBTYW1lIGFzIHshSW5maXh9LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHR3byBhcmd1bWVudHMuIFRoZSBzZWNvbmQgaXMgYWx3YXlzIGp1c3RcbiAgICAgIHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZSkgdFxuXG4gIHZhbCAoID4+PSApIDogKCdhLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICB2YWwgKCA+PnwgKSA6ICgnYSwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdlKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ludGF4MiA9IHNpZ1xuICB0eXBlICgnYSwgJ2UpIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcblxuICAgIGluY2x1ZGUgSW5maXgyIHdpdGggdHlwZSAoJ2EsICdlKSB0IDo9ICgnYSwgJ2UpIHRcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfKSB0XG4gICAgICB2YWwgYmluZCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gKCdiLCAnZSkgdCkgLT4gKCdiLCAnZSkgdFxuICAgICAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZSkgdCAtPiAoJ2IsICdlKSB0IC0+ICgnYSAqICdiLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdHdvIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBpcyBhbHdheXMganVzdFxuICAgICAgcGFzc2VkIHRocm91Z2guICopXG5cbiAgdHlwZSAoJ2EsICdlKSB0XG5cbiAgaW5jbHVkZSBJbmZpeDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICBpbmNsdWRlIFN5bnRheDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdlKSB0KSAtPiAoJ2IsICdlKSB0XG4gIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsIF8pIHRcbiAgdmFsIG1hcCA6ICgnYSwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2UpIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnZSkgdCwgJ2UpIHQgLT4gKCdhLCAnZSkgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2UpIHQgLT4gKHVuaXQsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdlKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdlKSB0XG4gIHZhbCBhbGxfdW5pdCA6ICh1bml0LCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEJhc2ljMyA9IHNpZ1xuICAoKiogTXVsdGkgcGFyYW1ldGVyIG1vbmFkLiBUaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGdldCB1bmlmaWVkIGFjcm9zcyBhbGwgdGhlXG4gICAgICBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcblxuICB2YWwgbWFwXG4gICAgOiBbIGBEZWZpbmVfdXNpbmdfYmluZCB8IGBDdXN0b20gb2YgKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0IF1cblxuICB2YWwgcmV0dXJuIDogJ2EgLT4gKCdhLCBfLCBfKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXgzID0gc2lnXG4gICgqKiBTYW1lIGFzIEluZml4LCBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmQgdGhpcmQgYXJlXG4gICAgICBhbHdheXMganVzdCBwYXNzZWQgdGhyb3VnaC4gKilcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdkLCAnZSkgdCAtPiAoJ2EgLT4gKCdiLCAnZCwgJ2UpIHQpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdkLCAnZSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheDMgPSBzaWdcbiAgdHlwZSAoJ2EsICdkLCAnZSkgdFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4IDogc2lnXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuXG4gICAgaW5jbHVkZSBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnZCwgJ2UpIHQgLT4gKCdiLCAnZCwgJ2UpIHQgLT4gKCdhICogJ2IsICdkLCAnZSkgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICgqKiBUaGUgc2FtZSBhcyB7IVN9IGV4Y2VwdCB0aGUgbW9uYWQgdHlwZSBoYXMgdGhyZWUgYXJndW1lbnRzLiBUaGUgc2Vjb25kXG4gICAgICBhbmQgdGhpcmQgYXJlIGFsd2F5cyBqdXN0IHBhc3NlZCB0aHJvdWdoLiAqKVxuXG4gIHR5cGUgKCdhLCAnZCwgJ2UpIHRcblxuICBpbmNsdWRlIEluZml4MyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIHRcbiAgaW5jbHVkZSBTeW50YXgzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgdFxuICBtb2R1bGUgTW9uYWRfaW5maXggOiBJbmZpeDMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdkLCAnZSkgdCAtPiBmOignYSAtPiAoJ2IsICdkLCAnZSkgdCkgLT4gKCdiLCAnZCwgJ2UpIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXywgXykgdFxuICB2YWwgbWFwIDogKCdhLCAnZCwgJ2UpIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYiwgJ2QsICdlKSB0XG4gIHZhbCBqb2luIDogKCgnYSwgJ2QsICdlKSB0LCAnZCwgJ2UpIHQgLT4gKCdhLCAnZCwgJ2UpIHRcbiAgdmFsIGlnbm9yZV9tIDogKF8sICdkLCAnZSkgdCAtPiAodW5pdCwgJ2QsICdlKSB0XG4gIHZhbCBhbGwgOiAoJ2EsICdkLCAnZSkgdCBsaXN0IC0+ICgnYSBsaXN0LCAnZCwgJ2UpIHRcbiAgdmFsIGFsbF91bml0IDogKHVuaXQsICdkLCAnZSkgdCBsaXN0IC0+ICh1bml0LCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNpY19pbmRleGVkID0gc2lnXG4gICgqKiBJbmRleGVkIG1vbmFkLCBpbiB0aGUgc3R5bGUgb2YgQXRrZXkuIFRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlIGNvbXBvc2VkXG4gICAgICBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiBUbyBzZWUgdGhpcyBtb3JlIGNsZWFybHksIHlvdSBjYW4gbG9vayBhdCB0aGUgdHlwZSBvZiBiaW5kOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrKSB0KSAtPiAoJ2IsICdpLCAnaykgdFxuICAgICAgXX1cblxuICAgICAgYW5kIGlzb2xhdGUgc29tZSBvZiB0aGUgdHlwZSB2YXJpYWJsZXMgdG8gc2VlIHRoZWlyIGluZGl2aWR1YWwgYmVoYXZpb3JzOlxuXG4gICAgICB7W1xuICAgICAgICB2YWwgYmluZCA6ICdhICAgICAgICAgICAgIC0+IGY6KCdhIC0+ICAnYiAgICAgICAgICAgKSAtPiAgJ2JcbiAgICAgICAgdmFsIGJpbmQgOiAgICAgICdpLCAnaiAgICAtPiAgICAgICAgICAgICAgICdqLCAnayAgICAgLT4gICAgICdpLCAna1xuICAgICAgXX1cblxuICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gQXRrZXktc3R5bGUgaW5kZXhlZCBtb25hZHMsIHNlZTpcblxuICAgICAge3ZcbiAgICAgICAgUGFyYW1ldGVyaXNlZCBOb3Rpb25zIG9mIENvbXB1dGF0aW9uXG4gICAgICAgIFJvYmVydCBBdGtleVxuICAgICAgICBodHRwOi8vYmVudG5pYi5vcmcvcGFyYW1ub3Rpb25zLWpmcC5wZGZcbiAgICAgIHZ9ICopXG5cbiAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gIHZhbCBiaW5kIDogKCdhLCAnaSwgJ2opIHQgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmQgfCBgQ3VzdG9tIG9mICgnYSwgJ2ksICdqKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdCBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSW5maXhfaW5kZXhlZCA9IHNpZ1xuICAoKiogU2FtZSBhcyB7IUluZml4fSwgZXhjZXB0IHRoZSBtb25hZCB0eXBlIGhhcyB0aHJlZSBhcmd1bWVudHMuIFRoZSBzZWNvbmQgYW5kXG4gICAgICB0aGlyZCBhcmUgY29tcG9zZWQgYWNyb3NzIGFsbCBjb21wdXRhdGlvbi4gKilcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsICggPj49ICkgOiAoJ2EsICdpLCAnaikgdCAtPiAoJ2EgLT4gKCdiLCAnaiwgJ2spIHQpIC0+ICgnYiwgJ2ksICdrKSB0XG4gIHZhbCAoID4+fCApIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFN5bnRheF9pbmRleGVkID0gc2lnXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA6IHNpZ1xuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuXG4gICAgaW5jbHVkZSBJbmZpeF9pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgdFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSkgdFxuICAgICAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgICAgIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgICAgIHZhbCBib3RoIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdiLCAnaiwgJ2spIHQgLT4gKCdhICogJ2IsICdpLCAnaykgdFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgOiBzaWcgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfaW5kZXhlZCA9IHNpZ1xuICAoKiogVGhlIHNhbWUgYXMgeyFTfSBleGNlcHQgdGhlIG1vbmFkIHR5cGUgaGFzIHRocmVlIGFyZ3VtZW50cy4gVGhlIHNlY29uZCBhbmRcbiAgICAgIHRoaXJkIGFyZSBjb21wb3NlZCBhY3Jvc3MgYWxsIGNvbXB1dGF0aW9uLiAqKVxuXG4gIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICBpbmNsdWRlIEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIGluY2x1ZGUgU3ludGF4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG4gIG1vZHVsZSBNb25hZF9pbmZpeCA6IEluZml4X2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSB0XG5cbiAgdmFsIGJpbmQgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAoJ2IsICdqLCAnaykgdCkgLT4gKCdiLCAnaSwgJ2spIHRcbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpKSB0XG4gIHZhbCBtYXAgOiAoJ2EsICdpLCAnaikgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2opIHRcbiAgdmFsIGpvaW4gOiAoKCdhLCAnaiwgJ2spIHQsICdpLCAnaikgdCAtPiAoJ2EsICdpLCAnaykgdFxuICB2YWwgaWdub3JlX20gOiAoXywgJ2ksICdqKSB0IC0+ICh1bml0LCAnaSwgJ2opIHRcbiAgdmFsIGFsbCA6ICgnYSwgJ2ksICdpKSB0IGxpc3QgLT4gKCdhIGxpc3QsICdpLCAnaSkgdFxuICB2YWwgYWxsX3VuaXQgOiAodW5pdCwgJ2ksICdpKSB0IGxpc3QgLT4gKHVuaXQsICdpLCAnaSkgdFxuZW5kXG5cbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUzMgKFggOiBTMikgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuZW5kXG5cbm1vZHVsZSBTX3RvX1NfaW5kZXhlZCAoWCA6IFMpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2ksICdqKSB0ID0gJ2EgWC50XG5lbmRcblxubW9kdWxlIFMyX3RvX1MgKFggOiBTMikgOiBTIHdpdGggdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAnYSB0ID0gKCdhLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgUzNfdG9fUzIgKFggOiBTMykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICgnYSwgJ2UsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlLCB1bml0KSBYLnRcbmVuZFxuXG5tb2R1bGUgU19pbmRleGVkX3RvX1MyIChYIDogU19pbmRleGVkKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudCA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSwgJ2UpIFgudFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1vbmFkID0gc2lnXG4gICgqKiBBIG1vbmFkIGlzIGFuIGFic3RyYWN0aW9uIG9mIHRoZSBjb25jZXB0IG9mIHNlcXVlbmNpbmcgb2YgY29tcHV0YXRpb25zLiAgQSB2YWx1ZSBvZlxuICAgICAgdHlwZSBbJ2EgbW9uYWRdIHJlcHJlc2VudHMgYSBjb21wdXRhdGlvbiB0aGF0IHJldHVybnMgYSB2YWx1ZSBvZiB0eXBlIFsnYV0uICopXG5cbiAgbW9kdWxlIHR5cGUgQmFzaWMgPSBCYXNpY1xuICBtb2R1bGUgdHlwZSBCYXNpYzIgPSBCYXNpYzJcbiAgbW9kdWxlIHR5cGUgQmFzaWMzID0gQmFzaWMzXG4gIG1vZHVsZSB0eXBlIEJhc2ljX2luZGV4ZWQgPSBCYXNpY19pbmRleGVkXG4gIG1vZHVsZSB0eXBlIEluZml4ID0gSW5maXhcbiAgbW9kdWxlIHR5cGUgSW5maXgyID0gSW5maXgyXG4gIG1vZHVsZSB0eXBlIEluZml4MyA9IEluZml4M1xuICBtb2R1bGUgdHlwZSBJbmZpeF9pbmRleGVkID0gSW5maXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTeW50YXggPSBTeW50YXhcbiAgbW9kdWxlIHR5cGUgU3ludGF4MiA9IFN5bnRheDJcbiAgbW9kdWxlIHR5cGUgU3ludGF4MyA9IFN5bnRheDNcbiAgbW9kdWxlIHR5cGUgU3ludGF4X2luZGV4ZWQgPSBTeW50YXhfaW5kZXhlZFxuICBtb2R1bGUgdHlwZSBTX3dpdGhvdXRfc3ludGF4ID0gU193aXRob3V0X3N5bnRheFxuICBtb2R1bGUgdHlwZSBTID0gU1xuICBtb2R1bGUgdHlwZSBTMiA9IFMyXG4gIG1vZHVsZSB0eXBlIFMzID0gUzNcbiAgbW9kdWxlIHR5cGUgU19pbmRleGVkID0gU19pbmRleGVkXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBCYXNpYykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIFgudFxuICBtb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50XG4gIG1vZHVsZSBNYWtlMyAoWCA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIFgudFxuXG4gIG1vZHVsZSBNYWtlX2luZGV4ZWQgKFggOiBCYXNpY19pbmRleGVkKSA6XG4gICAgU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50XG5cbiAgKCoqIERlZmluZSBhIG1vbmFkIHRocm91Z2ggYW4gaXNvbW9ycGhpc20gd2l0aCBhbiBleGlzdGluZyBtb25hZC4gRm9yIGV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgJ2EgdCA9IHsgdmFsdWUgOiAnYSB9XG5cbiAgICAgICAgaW5jbHVkZSBNb25hZC5PZl9tb25hZCAoTW9uYWQuSWRlbnQpIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgICAgICAgIGxldCB0b19tb25hZCB7IHZhbHVlIH0gPSB2YWx1ZVxuICAgICAgICAgICAgbGV0IG9mX21vbmFkIHZhbHVlID0geyB2YWx1ZSB9XG4gICAgICAgICAgZW5kKVxuICAgICAgXX0gKilcbiAgbW9kdWxlIE9mX21vbmFkXG4gICAgICAoTW9uYWQgOiBTKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICdhIHQgLT4gJ2EgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogJ2EgTW9uYWQudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkMlxuICAgICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udFxuXG4gIG1vZHVsZSBPZl9tb25hZDNcbiAgICAgIChNb25hZCA6IFMzKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX21vbmFkIDogKCdhLCAnYiwgJ2MpIE1vbmFkLnQgLT4gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50XG5cbiAgbW9kdWxlIE9mX21vbmFkX2luZGV4ZWRcbiAgICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdpLCAnaikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqKSB0IC0+ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpIDogU19pbmRleGVkIHdpdGggdHlwZSAoJ2EsICdpLCAnaikgdCA6PSAoJ2EsICdpLCAnaikgTS50XG5cbiAgbW9kdWxlIElkZW50IDogUyB3aXRoIHR5cGUgJ2EgdCA9ICdhXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBNb25hZF9pbnRmXG5cbm1vZHVsZSB0eXBlIEJhc2ljX2dlbmVyYWwgPSBzaWdcbiAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG5cbiAgdmFsIGJpbmRcbiAgICA6ICAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgLT4gZjooJ2EgLT4gKCdiLCAnaiwgJ2ssICdkLCAnZSkgdClcbiAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgdmFsIG1hcFxuICAgIDogWyBgRGVmaW5lX3VzaW5nX2JpbmRcbiAgICAgIHwgYEN1c3RvbSBvZiAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdpLCAnaiwgJ2QsICdlKSB0XG4gICAgICBdXG5cbiAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgJ2ksICdpLCAnZCwgJ2UpIHRcbmVuZFxuXG5tb2R1bGUgTWFrZV9nZW5lcmFsIChNIDogQmFzaWNfZ2VuZXJhbCkgPSBzdHJ1Y3RcbiAgbGV0IGJpbmQgPSBNLmJpbmRcbiAgbGV0IHJldHVybiA9IE0ucmV0dXJuXG4gIGxldCBtYXBfdmlhX2JpbmQgbWEgfmYgPSBNLmJpbmQgbWEgfmY6KGZ1biBhIC0+IE0ucmV0dXJuIChmIGEpKVxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIE0ubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYmluZCAtPiBtYXBfdmlhX2JpbmRcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbW9kdWxlIE1vbmFkX2luZml4ID0gc3RydWN0XG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gICAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgZW5kXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuXG4gICAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgbGV0IG1hcCA9IG1hcFxuICAgICAgbGV0IGJvdGggYSBiID0gYSA+Pj0gZnVuIGEgLT4gYiA+PnwgZnVuIGIgLT4gYSwgYlxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCBqb2luIHQgPSB0ID4+PSBmdW4gdCcgLT4gdCdcbiAgbGV0IGlnbm9yZV9tIHQgPSBtYXAgdCB+ZjooZnVuIF8gLT4gKCkpXG5cbiAgbGV0IGFsbCA9XG4gICAgbGV0IHJlYyBsb29wIHZzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiB2cylcbiAgICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gdiAtPiBsb29wICh2IDo6IHZzKSB0c1xuICAgIGluXG4gICAgZnVuIHRzIC0+IGxvb3AgW10gdHNcbiAgOztcblxuICBsZXQgcmVjIGFsbF91bml0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgIHwgdCA6OiB0cyAtPiB0ID4+PSBmdW4gKCkgLT4gYWxsX3VuaXQgdHNcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pbmRleGVkIChNIDogQmFzaWNfaW5kZXhlZCkgOlxuICBTX2luZGV4ZWQgd2l0aCB0eXBlICgnYSwgJ2ksICdqKSB0IDo9ICgnYSwgJ2ksICdqKSBNLnQgPSBNYWtlX2dlbmVyYWwgKHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgdHlwZSAoJ2EsICdpLCAnaiwgJ2QsICdlKSB0ID0gKCdhLCAnaSwgJ2opIE0udFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlMyAoTSA6IEJhc2ljMykgOiBTMyB3aXRoIHR5cGUgKCdhLCAnZCwgJ2UpIHQgOj0gKCdhLCAnZCwgJ2UpIE0udCA9XG4gIE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gIGVuZClcblxubW9kdWxlIE1ha2UyIChNIDogQmFzaWMyKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdkKSB0IDo9ICgnYSwgJ2QpIE0udCA9IE1ha2VfZ2VuZXJhbCAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoTSA6IEJhc2ljKSA6IFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cblxuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZF9nZW5lcmFsIChNb25hZCA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuXG4gICAgdmFsIGJpbmRcbiAgICAgIDogICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcbiAgICAgIC0+IGY6KCdhIC0+ICgnYiwgJ2osICdrLCAnZCwgJ2UpIHQpXG4gICAgICAtPiAoJ2IsICdpLCAnaywgJ2QsICdlKSB0XG5cbiAgICB2YWwgbWFwIDogKCdhLCAnaSwgJ2osICdkLCAnZSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAoJ2EsICdpLCAnaSwgJ2QsICdlKSB0XG4gIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHRcblxuICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgTW9uYWQudFxuICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqLCAnZCwgJ2UpIE1vbmFkLnQgLT4gKCdhLCAnaSwgJ2osICdkLCAnZSkgdFxuICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5lcmFsIChzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaiwgJ2QsICdlKSBNLnRcblxuICAgIGxldCByZXR1cm4gYSA9IE0ub2ZfbW9uYWQgKE1vbmFkLnJldHVybiBhKVxuICAgIGxldCBiaW5kIHQgfmYgPSBNLm9mX21vbmFkIChNb25hZC5iaW5kIChNLnRvX21vbmFkIHQpIH5mOihmdW4gYSAtPiBNLnRvX21vbmFkIChmIGEpKSlcbiAgICBsZXQgbWFwID0gYEN1c3RvbSAoZnVuIHQgfmYgLT4gTS5vZl9tb25hZCAoTW9uYWQubWFwIChNLnRvX21vbmFkIHQpIH5mKSlcbiAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWRfaW5kZXhlZFxuICAgIChNb25hZCA6IFNfaW5kZXhlZCkgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnaSwgJ2opIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX21vbmFkIDogKCdhLCAnaSwgJ2opIHQgLT4gKCdhLCAnaSwgJ2opIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9tb25hZCA6ICgnYSwgJ2ksICdqKSBNb25hZC50IC0+ICgnYSwgJ2ksICdqKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2ksICdqKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdpLCAnaikgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQzXG4gICAgKE1vbmFkIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiLCAnYykgTW9uYWQudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICgnYSwgJ2QsICdlKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkLCAnZSkgTS50XG4gICAgZW5kKVxuXG5tb2R1bGUgT2ZfbW9uYWQyXG4gICAgKE1vbmFkIDogUzIpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgIHZhbCB0b19tb25hZCA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgTW9uYWQudFxuICAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAoJ2EsICdiKSBNb25hZC50IC0+ICgnYSwgJ2IpIHRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICBPZl9tb25hZF9nZW5lcmFsXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNb25hZFxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNb25hZC50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTVxuXG4gICAgICB0eXBlICgnYSwgJ2ksICdqLCAnZCwgJ2UpIHQgPSAoJ2EsICdkKSBNLnRcbiAgICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZFxuICAgIChNb25hZCA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdG9fbW9uYWQgOiAnYSB0IC0+ICdhIE1vbmFkLnRcbiAgICAgICAgICAgICAgICAgICB2YWwgb2ZfbW9uYWQgOiAnYSBNb25hZC50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgZW5kKSA9XG4gIE9mX21vbmFkX2dlbmVyYWxcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIE1vbmFkXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE1vbmFkLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIHR5cGUgKCdhLCAnaSwgJ2osICdkLCAnZSkgdCA9ICdhIE0udFxuICAgIGVuZClcblxubW9kdWxlIElkZW50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgaW5jbHVkZSBNYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCBiaW5kIGEgfmYgPSBmIGFcbiAgICAgIGxldCByZXR1cm4gYSA9IGFcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIChmdW4gYSB+ZiAtPiBmIGEpXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG4oKiogVGhpcyBtb2R1bGUgc2VydmVzIG1vc3RseSBhcyBhIHBhcnRpYWwgY2hlY2sgdGhhdCBbUzJdIGFuZCBbU10gYXJlIGluIHN5bmMsIGJ1dFxuICAgIGFjdHVhbGx5IGNhbGxpbmcgaXQgaXMgb2NjYXNpb25hbGx5IHVzZWZ1bC4gKilcbm1vZHVsZSBTX3RvX1MyIChYIDogUykgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbmVuZFxuXG5tb2R1bGUgUzJfdG9fUyAoWCA6IFMyKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICdhIHQgPSAoJ2EsIHVuaXQpIFgudFxuZW5kXG5cbm1vZHVsZSBTMl90b19TMyAoWCA6IFMyKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudCA9IHN0cnVjdFxuICBpbmNsdWRlIFhcblxuICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG5lbmRcblxubW9kdWxlIFMzX3RvX1MyIChYIDogUzMpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2QpIHQgPSAoJ2EsICdkLCB1bml0KSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgdHlwZSAoJ2EsICdkKSB0ID0gKCdhLCAnZCwgdW5pdCkgWC50XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogQmFzaWMzKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdkLCAnZSkgdCA6PSAoJ2EsICdkLCAnZSkgWC50ID0gc3RydWN0XG4gIGluY2x1ZGUgWFxuXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfYXBwbHkgLT4gZGVyaXZlZF9tYXBcbiAgICB8IGBDdXN0b20geCAtPiB4XG4gIDs7XG5cbiAgbGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbiAgbGV0IG1hcDIgdGEgdGIgfmYgPSBtYXAgfmYgdGEgPCo+IHRiXG4gIGxldCBtYXAzIHRhIHRiIHRjIH5mID0gbWFwIH5mIHRhIDwqPiB0YiA8Kj4gdGNcbiAgbGV0IGFsbCB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDoocmV0dXJuIFtdKSB+ZjoobWFwMiB+ZjooZnVuIHggeHMgLT4geCA6OiB4cykpXG4gIGxldCBib3RoIHRhIHRiID0gbWFwMiB0YSB0YiB+ZjooZnVuIGEgYiAtPiBhLCBiKVxuICBsZXQgKCAqPiApIHUgdiA9IHJldHVybiAoZnVuICgpIHkgLT4geSkgPCo+IHUgPCo+IHZcbiAgbGV0ICggPCogKSB1IHYgPSByZXR1cm4gKGZ1biB4ICgpIC0+IHgpIDwqPiB1IDwqPiB2XG4gIGxldCBhbGxfdW5pdCB0cyA9IExpc3QuZm9sZCB0cyB+aW5pdDoocmV0dXJuICgpKSB+ZjooICo+IClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICBsZXQgKCAqPiApID0gKCAqPiApXG4gICAgbGV0ICggPCogKSA9ICggPCogKVxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBCYXNpYzIpIDogUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTMgKHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgdHlwZSAoJ2EsICdkLCAnZSkgdCA9ICgnYSwgJ2QpIFgudFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChYIDogQmFzaWMpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBNYWtlMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2UpIHQgPSAnYSBYLnRcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4M1xuICAgIChYIDogRm9yX2xldF9zeW50YXgzKSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbnN0cnVjdFxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgWFxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gSW1wbFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZV9sZXRfc3ludGF4MlxuICAgIChYIDogRm9yX2xldF9zeW50YXgyKSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpXG4gICAgKEltcGwgOiBJbnRmLlMpID1cbiAgTWFrZV9sZXRfc3ludGF4M1xuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgWFxuXG4gICAgICB0eXBlICgnYSwgJ2QsIF8pIHQgPSAoJ2EsICdkKSBYLnRcbiAgICBlbmQpXG4gICAgKEludGYpXG4gICAgKEltcGwpXG5cbm1vZHVsZSBNYWtlX2xldF9zeW50YXhcbiAgICAoWCA6IEZvcl9sZXRfc3ludGF4KSAoSW50ZiA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSB0eXBlIFNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKVxuICAgIChJbXBsIDogSW50Zi5TKSA9XG4gIE1ha2VfbGV0X3N5bnRheDJcbiAgICAoc3RydWN0XG4gICAgICBpbmNsdWRlIFhcblxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBYLnRcbiAgICBlbmQpXG4gICAgKEludGYpXG4gICAgKEltcGwpXG5cbigqKiBUaGlzIGZ1bmN0b3IgY2xvc2VseSByZXNlbWJsZXMgW01ha2UzXSwgYW5kIGluZGVlZCBpdCBjb3VsZCBiZSBpbXBsZW1lbnRlZFxuICAgIG11Y2ggc2hvcnRlciBpbiB0ZXJtcyBvZiBbTWFrZTNdLiBIb3dldmVyLCB3ZSBpbXBsZW1lbnQgaXQgYnkgaGFuZCBzbyB0aGF0XG4gICAgdGhlIHJlc3VsdGluZyBmdW5jdGlvbnMgYXJlIG1vcmUgZWZmaWNpZW50LCBlLmcuIHVzaW5nIFttYXAyXSBkaXJlY3RseSBpbnN0ZWFkIG9mXG4gICAgZGVmaW5pbmcgW2FwcGx5XSBpbiB0ZXJtcyBvZiBpdCBhbmQgdGhlbiBbbWFwMl0gaW4gdGVybXMgb2YgdGhhdC4gRm9yIG1vc3RcbiAgICBhcHBsaWNhdGl2ZXMgdGhpcyBkb2VzIG5vdCBtYXR0ZXIsIGJ1dCBmb3Igc29tZSAoc3VjaCBhcyBCb25zYWkuVmFsdWUudCksIGl0IGhhcyBhXG4gICAgbGFyZ2VyIGltcGFjdC4gKilcbm1vZHVsZSBNYWtlM191c2luZ19tYXAyIChYIDogQmFzaWMzX3VzaW5nX21hcDIpIDpcbiAgUzMgd2l0aCB0eXBlICgnYSwgJ2QsICdlKSB0IDo9ICgnYSwgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYXG5cbiAgbGV0IGFwcGx5IHRmIHRhID0gbWFwMiB0ZiB0YSB+ZjooZnVuIGYgYSAtPiBmIGEpXG4gIGxldCAoIDwqPiApID0gYXBwbHlcbiAgbGV0IGRlcml2ZWRfbWFwIHQgfmYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gIGxldCBtYXAgPVxuICAgIG1hdGNoIFgubWFwIHdpdGhcbiAgICB8IGBEZWZpbmVfdXNpbmdfbWFwMiAtPiBkZXJpdmVkX21hcFxuICAgIHwgYEN1c3RvbSB4IC0+IHhcbiAgOztcblxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgYm90aCB0YSB0YiA9IG1hcDIgdGEgdGIgfmY6KGZ1biBhIGIgLT4gYSwgYilcbiAgbGV0IG1hcDMgdGEgdGIgdGMgfmYgPSBtYXAyIChtYXAyIHRhIHRiIH5mKSB0YyB+ZjooZnVuIGZhYiBjIC0+IGZhYiBjKVxuICBsZXQgYWxsIHRzID0gTGlzdC5mb2xkX3JpZ2h0IHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihtYXAyIH5mOihmdW4geCB4cyAtPiB4IDo6IHhzKSlcbiAgbGV0ICggKj4gKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuICgpIHkgLT4geSlcbiAgbGV0ICggPCogKSB1IHYgPSBtYXAyIHUgdiB+ZjooZnVuIHggKCkgLT4geClcbiAgbGV0IGFsbF91bml0IHRzID0gTGlzdC5mb2xkIHRzIH5pbml0OihyZXR1cm4gKCkpIH5mOiggKj4gKVxuXG4gIG1vZHVsZSBBcHBsaWNhdGl2ZV9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoIDwqPiApID0gKCA8Kj4gKVxuICAgIGxldCAoICo+ICkgPSAoICo+IClcbiAgICBsZXQgKCA8KiApID0gKCA8KiApXG4gICAgbGV0ICggPj58ICkgPSAoID4+fCApXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlMl91c2luZ19tYXAyIChYIDogQmFzaWMyX3VzaW5nX21hcDIpIDpcbiAgUzIgd2l0aCB0eXBlICgnYSwgJ2UpIHQgOj0gKCdhLCAnZSkgWC50ID0gTWFrZTNfdXNpbmdfbWFwMiAoc3RydWN0XG4gICAgaW5jbHVkZSBYXG5cbiAgICB0eXBlICgnYSwgJ2QsICdlKSB0ID0gKCdhLCAnZCkgWC50XG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfbWFwMiAoWCA6IEJhc2ljX3VzaW5nX21hcDIpIDogUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPVxuICBNYWtlMl91c2luZ19tYXAyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFhcblxuICAgIHR5cGUgKCdhLCAnZSkgdCA9ICdhIFgudFxuICBlbmQpXG5cbm1vZHVsZSBPZl9tb25hZDIgKE0gOiBNb25hZC5TMikgOiBTMiB3aXRoIHR5cGUgKCdhLCAnZSkgdCA6PSAoJ2EsICdlKSBNLnQgPSBNYWtlMiAoc3RydWN0XG4gICAgdHlwZSAoJ2EsICdlKSB0ID0gKCdhLCAnZSkgTS50XG5cbiAgICBsZXQgcmV0dXJuID0gTS5yZXR1cm5cbiAgICBsZXQgYXBwbHkgbWYgbXggPSBNLmJpbmQgbWYgfmY6KGZ1biBmIC0+IE0ubWFwIG14IH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIE0ubWFwXG4gIGVuZClcblxubW9kdWxlIE9mX21vbmFkIChNIDogTW9uYWQuUykgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IE9mX21vbmFkMiAoc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICB0eXBlICgnYSwgXykgdCA9ICdhIE0udFxuICBlbmQpXG5cbm1vZHVsZSBDb21wb3NlIChGIDogUykgKEcgOiBTKSA6IFMgd2l0aCB0eXBlICdhIHQgPSAnYSBGLnQgRy50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEYudCBHLnRcblxuICBpbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHJldHVybiBhID0gRy5yZXR1cm4gKEYucmV0dXJuIGEpXG4gICAgICBsZXQgYXBwbHkgdGYgdHggPSBHLmFwcGx5IChHLm1hcCB+ZjpGLmFwcGx5IHRmKSB0eFxuICAgICAgbGV0IGN1c3RvbV9tYXAgdCB+ZiA9IEcubWFwIH5mOihGLm1hcCB+ZikgdFxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gY3VzdG9tX21hcFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgUGFpciAoRiA6IFMpIChHIDogUykgOiBTIHdpdGggdHlwZSAnYSB0ID0gJ2EgRi50ICogJ2EgRy50ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEYudCAqICdhIEcudFxuXG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICBsZXQgcmV0dXJuIGEgPSBGLnJldHVybiBhLCBHLnJldHVybiBhXG4gICAgICBsZXQgYXBwbHkgdGYgdHggPSBGLmFwcGx5IChmc3QgdGYpIChmc3QgdHgpLCBHLmFwcGx5IChzbmQgdGYpIChzbmQgdHgpXG4gICAgICBsZXQgY3VzdG9tX21hcCB0IH5mID0gRi5tYXAgfmYgKGZzdCB0KSwgRy5tYXAgfmYgKHNuZCB0KVxuICAgICAgbGV0IG1hcCA9IGBDdXN0b20gY3VzdG9tX21hcFxuICAgIGVuZClcbmVuZFxuIiwiKCogW0J5dGVzMF0gZGVmaW5lcyBzdHJpbmcgZnVuY3Rpb25zIHRoYXQgYXJlIHByaW1pdGl2ZXMgb3IgY2FuIGJlIHNpbXBseVxuICAgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbQ2FtbC5CeXRlc10uIFtCeXRlczBdIGlzIGludGVuZGVkIHRvIGNvbXBsZXRlbHkgZXhwcmVzc1xuICAgdGhlIHBhcnQgb2YgW0NhbWwuQnl0ZXNdIHRoYXQgW0Jhc2VdIHVzZXMgLS0gbm8gb3RoZXIgZmlsZSBpbiBCYXNlIG90aGVyXG4gICB0aGFuIGJ5dGVzMC5tbCBzaG91bGQgdXNlIFtDYW1sLkJ5dGVzXS4gW0J5dGVzMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZFxuICAgc28gaXMgYXZhaWxhYmxlIGVhcmx5IGluIEJhc2UncyBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBzdHJpbmdzIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5CeXRlc10gaW5cbiAgIGJ1aWxkIG9yZGVyIHNob3VsZCBkbzpcblxuICAge1tcbiAgICAgbW9kdWxlIEJ5dGVzICA9IEJ5dGVzMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBCeXRlcyA9IEJ5dGVzMF0gaXMgYWxzbyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBwcmV2ZW50c1xuICAgb2NhbWxkZXAgZnJvbSBtaXN0YWtlbmx5IGNhdXNpbmcgYSBmaWxlIHRvIGRlcGVuZCBvbiBbQmFzZS5CeXRlc10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgPSBcIiVieXRlc191bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0ICAgICAgICA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVieXRlc19zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5cbiAgKCogW3Vuc2FmZV9ibGl0X3N0cmluZ10gaXMgbm90IGV4cG9ydGVkIGluIHRoZSBbc3RkbGliXSBzbyB3ZSBleHBvcnQgaXQgaGVyZSAqKVxuICBleHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdcbiAgICA6ICBzcmM6c3RyaW5nXG4gICAgLT4gc3JjX3BvczppbnRcbiAgICAtPiBkc3Q6Ynl0ZXNcbiAgICAtPiBkc3RfcG9zOmludFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiB1bml0XG4gICAgPSBcImNhbWxfYmxpdF9zdHJpbmdcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIHVuc2FmZV9nZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2J5dGVzX2dldDY0dVwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXRfaW50NjQgOiBieXRlcyAtPiBpbnQgLT4gaW50NjQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmVuZFxuXG5pbmNsdWRlIFByaW1pdGl2ZXNcblxubGV0IG1heF9sZW5ndGggPSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbmxldCBibGl0ID0gQ2FtbC5CeXRlcy5ibGl0XG5sZXQgYmxpdF9zdHJpbmcgPSBDYW1sLkJ5dGVzLmJsaXRfc3RyaW5nXG5sZXQgY29tcGFyZSA9IENhbWwuQnl0ZXMuY29tcGFyZVxubGV0IGNvcHkgPSBDYW1sLkJ5dGVzLmNvcHlcbmxldCBjcmVhdGUgPSBDYW1sLkJ5dGVzLmNyZWF0ZVxubGV0IGZpbGwgPSBDYW1sLkJ5dGVzLmZpbGxcbmxldCBtYWtlID0gQ2FtbC5CeXRlcy5tYWtlXG5sZXQgbWFwID0gQ2FtbC5CeXRlcy5tYXBcbmxldCBtYXBpID0gQ2FtbC5CeXRlcy5tYXBpXG5sZXQgc3ViID0gQ2FtbC5CeXRlcy5zdWJcbmxldCB1bnNhZmVfYmxpdCA9IENhbWwuQnl0ZXMudW5zYWZlX2JsaXRcbmxldCB0b19zdHJpbmcgPSBDYW1sLkJ5dGVzLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IENhbWwuQnl0ZXMub2Zfc3RyaW5nXG5sZXQgdW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpzID0gQ2FtbC5CeXRlcy51bnNhZmVfdG9fc3RyaW5nIHNcbmxldCB1bnNhZmVfb2Zfc3RyaW5nX3Byb21pc2Vfbm9fbXV0YXRpb24gPSBDYW1sLkJ5dGVzLnVuc2FmZV9vZl9zdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3dpdG5lc3MpIHQgPVxuICB7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgOyBzZXhwX29mX3QgOiAnYSAtPiBTZXhwLnRcbiAgfVxuXG50eXBlICgnYSwgJ2IpIGNvbXBhcmF0b3IgPSAoJ2EsICdiKSB0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgUzEgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EgdCwgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIHR5cGUgU19mYyA9IHNpZ1xuICB0eXBlIGNvbXBhcmFibGVfdFxuXG4gIGluY2x1ZGUgUyB3aXRoIHR5cGUgdCA6PSBjb21wYXJhYmxlX3RcbmVuZFxuXG5tb2R1bGUgTW9kdWxlID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdiKVxuZW5kXG5cbmxldCBtYWtlICh0eXBlIHQpIH5jb21wYXJlIH5zZXhwX29mX3QgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgY29tcGFyYWJsZV90ID0gdFxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IHsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgZW5kIDogU19mY1xuICAgIHdpdGggdHlwZSBjb21wYXJhYmxlX3QgPSB0KVxuOztcblxubW9kdWxlIFNfdG9fUzEgKFMgOiBTKSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSBTLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIG9wZW4gU1xuXG4gIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IE0ueyBjb21wYXJlOyBzZXhwX29mX3QgfVxuZW5kXG5cbm1vZHVsZSBNYWtlMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICdhIHQgLT4gU2V4cC50XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBNLnsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGluY2x1ZGUgTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGNvbXBhcmUgPSBQb2x5LmNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIl9cIlxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdjbXAgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIGNvbXBhcmF0b3IgLT4gKCdhIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWQgKE0gOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjb21wYXJhdG9yIGEgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmU7IHNleHBfb2ZfdCA9IE0uc2V4cF9vZl90IGEuc2V4cF9vZl90IH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkMiA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBjb21wYXJhdG9yXG4gICAgOiAgKCdhLCAnY21wX2EpIGNvbXBhcmF0b3JcbiAgICAtPiAoJ2IsICdjbXBfYikgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsICdiKSB0LCAoJ2NtcF9hLCAnY21wX2IpIGNvbXBhcmF0b3Jfd2l0bmVzcykgY29tcGFyYXRvclxuZW5kXG5cbm1vZHVsZSBEZXJpdmVkMiAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnYiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2EsICdiKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCdjbXBfYSwgJ2NtcF9iKSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciBhIGIgPVxuICAgIHsgY29tcGFyZSA9IE0uY29tcGFyZSBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgOyBzZXhwX29mX3QgPSBNLnNleHBfb2ZfdCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdFxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBEZXJpdmVkX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2NtcCBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgY29tcGFyYXRvclxuICAgIDogICgnYSwgJ2NtcCkgY29tcGFyYXRvclxuICAgIC0+ICgoJ2EsIF8pIHQsICdjbXAgY29tcGFyYXRvcl93aXRuZXNzKSBjb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIERlcml2ZWRfcGhhbnRvbSAoTSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmUgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgdmFsIHNleHBfb2ZfdCA6ICgnYSAtPiBTZXhwLnQpIC0+ICgnYSwgXykgdCAtPiBTZXhwLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnY21wX2EgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJlID0gTS5jb21wYXJlIGEuY29tcGFyZTsgc2V4cF9vZl90ID0gTS5zZXhwX29mX3QgYS5zZXhwX29mX3QgfVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSAoJ2YsICdzKSB0ID1cbiAgfCBGaXJzdCBvZiAnZlxuICB8IFNlY29uZCBvZiAnc1xuW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOlxuICAnZiAncy4gKCdmIC0+ICdmIC0+IGludCkgLT4gKCdzIC0+ICdzIC0+IGludCkgLT4gKCdmLCAncykgdCAtPiAoJ2YsICdzKSB0IC0+IGludFxuICA9XG4gIGZ1biBfY21wX19mIF9jbXBfX3MgYV9fMDAxXyBiX18wMDJfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgfCBGaXJzdCBfYV9fMDAzXywgRmlyc3QgX2JfXzAwNF8gLT4gX2NtcF9fZiBfYV9fMDAzXyBfYl9fMDA0X1xuICAgIHwgRmlyc3QgXywgXyAtPiAtMVxuICAgIHwgXywgRmlyc3QgXyAtPiAxXG4gICAgfCBTZWNvbmQgX2FfXzAwNV8sIFNlY29uZCBfYl9fMDA2XyAtPiBfY21wX19zIF9hX18wMDVfIF9iX18wMDZfKVxuOztcblxubGV0IGhhc2hfZm9sZF90XG4gIDogdHlwZSBmIHMuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBmIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHMgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+IChmLCBzKSB0XG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gID1cbiAgZnVuIF9oYXNoX2ZvbGRfZiBfaGFzaF9mb2xkX3MgaHN2IGFyZyAtPlxuICBtYXRjaCBhcmcgd2l0aFxuICB8IEZpcnN0IF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9mIGhzdiBfYTBcbiAgfCBTZWNvbmQgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX3MgaHN2IF9hMFxuOztcblxubGV0IHRfb2Zfc2V4cCA6XG4gICdmICdzLlxuICAoU2V4cGxpYjAuU2V4cC50IC0+ICdmKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+ICdzKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gKCdmLCAncykgdFxuICA9XG4gIGZ1biAodHlwZSBmX18wMjNfIHNfXzAyNF8pXG4gICAgICA6ICAoKFNleHBsaWIwLlNleHAudCAtPiBmX18wMjNfKSAtPiAoU2V4cGxpYjAuU2V4cC50IC0+IHNfXzAyNF8pIC0+IFNleHBsaWIwLlNleHAudFxuICAgICAgICAgIC0+IChmX18wMjNfLCBzX18wMjRfKSB0KSAtPlxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAxMV8gPSBcImVpdGhlcjAubWwudFwiIGluXG4gICAgZnVuIF9vZl9mX18wMDdfIF9vZl9zX18wMDhfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcImZpcnN0XCIgfCBcIkZpcnN0XCIpIGFzIF90YWdfXzAxNF8pIDo6IHNleHBfYXJnc19fMDE1XykgYXNcbiAgICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDE1XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDE2XyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2ZfXzAwN18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgICBGaXJzdCByZXMwX18wMTdfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDExX1xuICAgICAgICAgICAgIF90YWdfXzAxNF9cbiAgICAgICAgICAgICBfc2V4cF9fMDEzXylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwic2Vjb25kXCIgfCBcIlNlY29uZFwiKSBhcyBfdGFnX18wMTlfKSA6OiBzZXhwX2FyZ3NfXzAyMF8pIGFzXG4gICAgICAgIF9zZXhwX18wMThfIC0+XG4gICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAyMF8gd2l0aFxuICAgICAgICAgfCBbIGFyZzBfXzAyMV8gXSAtPlxuICAgICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IF9vZl9zX18wMDhfIGFyZzBfXzAyMV8gaW5cbiAgICAgICAgICAgU2Vjb25kIHJlczBfXzAyMl9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMTFfXG4gICAgICAgICAgICAgX3RhZ19fMDE5X1xuICAgICAgICAgICAgIF9zZXhwX18wMThfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiZmlyc3RcIiB8IFwiRmlyc3RcIikgYXMgc2V4cF9fMDEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTJfXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJzZWNvbmRcIiB8IFwiU2Vjb25kXCIpIGFzIHNleHBfXzAxMl8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEyX1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMTBfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDExXyBzZXhwX18wMTBfXG4gICAgICB8IHNleHBfXzAxMF8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAxMV8gc2V4cF9fMDEwX1xuOztcblxubGV0IHNleHBfb2ZfdCA6XG4gICdmICdzLlxuICAoJ2YgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2YsICdzKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBmX18wMzFfIHNfXzAzMl8pXG4gICAgICA6ICAoKGZfXzAzMV8gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoc19fMDMyXyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGZfXzAzMV8sIHNfXzAzMl8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfZl9fMDI1XyBfb2Zfc19fMDI2XyAtPiBmdW5jdGlvblxuICAgICAgfCBGaXJzdCBhcmcwX18wMjdfIC0+XG4gICAgICAgIGxldCByZXMwX18wMjhfID0gX29mX2ZfXzAyNV8gYXJnMF9fMDI3XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJGaXJzdFwiOyByZXMwX18wMjhfIF1cbiAgICAgIHwgU2Vjb25kIGFyZzBfXzAyOV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMF8gPSBfb2Zfc19fMDI2XyBhcmcwX18wMjlfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlNlY29uZFwiOyByZXMwX18wMzBfIF1cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOlxuICAgICAgICdmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICdzIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgIC0+ICgnZiwgJ3MpIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gID1cbiAgZnVuIF8nZl9zZXhwX2dyYW1tYXIgXydzX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRmlyc3RcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Zfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlNlY29uZFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nc19zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH1cbiAgfVxuOztcblxuW0BAQGVuZF1cbiIsIigqIFRoZSB0eXBlIFt0XSBzaG91bGQgYmUgYWJzdHJhY3QgdG8gbWFrZSB0aGUgZnNldCBhbmQgc2V0IGZ1bmN0aW9ucyB1bmF2YWlsYWJsZVxuICAgZm9yIHByaXZhdGUgdHlwZXMgYXQgdGhlIGxldmVsIG9mIHR5cGVzIChhbmQgbm90IGJ5IHB1dHRpbmcgTm9uZSBpbiB0aGUgZmllbGQpLlxuICAgVW5mb3J0dW5hdGVseSwgbWFraW5nIHRoZSB0eXBlIGFic3RyYWN0IG1lYW5zIHRoYXQgd2hlbiBjcmVhdGluZyBmaWVsZHMgKHRocm91Z2hcbiAgIGEgW2NyZWF0ZV0gZnVuY3Rpb24pIHZhbHVlIHJlc3RyaWN0aW9uIGtpY2tzIGluLiBUaGlzIGlzIHdvcmtlZCBhcm91bmQgYnkgaW5zdGVhZFxuICAgbm90IG1ha2luZyB0aGUgdHlwZSBhYnN0cmFjdCwgYnV0IGZvcmNpbmcgYW55b25lIGJyZWFraW5nIHRoZSBhYnN0cmFjdGlvbiB0byB1c2VcbiAgIHRoZSBbRm9yX2dlbmVyYXRlZF9jb2RlXSBtb2R1bGUsIG1ha2luZyBpdCBvYnZpb3VzIHRvIGFueSByZWFkZXIgdGhhdCBzb21ldGhpbmcgdWdseVxuICAgaXMgZ29pbmcgb24uXG4gICB0X3dpdGhfcGVybSAoYW5kIGRlcml2YXRpdmVzKSBpcyB0aGUgdHlwZSB0aGF0IHVzZXJzIHJlYWxseSB1c2UuIEl0IGlzIGEgY29uc3RydWN0b3JcbiAgIGJlY2F1c2U6XG4gICAxLiBpdCBtYWtlcyB0eXBlIGVycm9ycyBtb3JlIHJlYWRhYmxlIChsZXNzIGFsaWFzaW5nKVxuICAgMi4gdGhlIHR5cGVyIGluIG9jYW1sIDQuMDEgYWxsb3dzIHRoaXM6XG5cbiAgIHtbXG4gICAgIG1vZHVsZSBBID0gc3RydWN0XG4gICAgICAgdHlwZSB0ID0ge2EgOiBpbnR9XG4gICAgIGVuZFxuICAgICB0eXBlIHQgPSBBLnRcbiAgICAgbGV0IGYgKHggOiB0KSA9IHguYVxuICAgXX1cblxuICAgKGFsdGhvdWdoIHdpdGggV2FybmluZyA0MDogYSBpcyB1c2VkIG91dCBvZiBzY29wZSlcbiAgIHdoaWNoIG1lYW5zIHRoYXQgaWYgW3Rfd2l0aF9wZXJtXSB3YXMgcmVhbGx5IGFuIGFsaWFzIG9uIFtGb3JfZ2VuZXJhdGVkX2NvZGUudF0sXG4gICBwZW9wbGUgY291bGQgc2F5IFt0LnNldHRlcl0gYW5kIGJyZWFrIHRoZSBhYnN0cmFjdGlvbiB3aXRoIG5vIGluZGljYXRpb24gdGhhdFxuICAgc29tZXRoaW5nIHVnbHkgaXMgZ29pbmcgb24gaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgVGhlIHdhcm5pbmcgaXMgKEkgdGhpbmspIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gbWFrZSB0aGVpciBjb2RlIGNvbXBhdGlibGUgd2l0aFxuICAgcHJldmlvdXMgdmVyc2lvbnMgb2Ygb2NhbWwsIHNvIHdlIG1heSB2ZXJ5IHdlbGwgdHVybiBpdCBvZmYuXG5cbiAgIFRoZSB0eXBlIHRfd2l0aF9wZXJtIGNvdWxkIGFsc28gaGF2ZSBiZWVuIGEgW3VuaXQgLT4gRm9yX2dlbmVyYXRlZF9jb2RlLnRdIHRvIHdvcmtcbiAgIGFyb3VuZCB2YWx1ZSByZXN0cmljdGlvbiBhbmQgdGhlbiBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdIHdvdWxkIGhhdmUgYmVlbiBhIHByb3BlclxuICAgYWJzdHJhY3QgdHlwZSwgYnV0IGl0IGxvb2tzIGxpa2UgaXQgY291bGQgaW1wYWN0IHBlcmZvcm1hbmNlIChmb3IgZXhhbXBsZSwgYSBmb2xkIG9uIGFcbiAgIHJlY29yZCB0eXBlIHdpdGggNDAgZmllbGRzIHdvdWxkIGFjdHVhbGx5IGFsbG9jYXRlIHRoZSA0MCBbRm9yX2dlbmVyYXRlZF9jb2RlLnRdJ3MgYXRcbiAgIGV2ZXJ5IHNpbmdsZSBmb2xkLikgKilcblxubW9kdWxlIEZvcl9nZW5lcmF0ZWRfY29kZSA9IHN0cnVjdFxuICB0eXBlICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICB7IGZvcmNlX3ZhcmlhbmNlIDogJ3Blcm0gLT4gdW5pdFxuICAgIDsgKCogZm9yY2UgW3RdIHRvIGJlIGNvbnRyYXZhcmlhbnQgaW4gWydwZXJtXSwgYmVjYXVzZSBwaGFudG9tIHR5cGUgdmFyaWFibGVzIG9uXG4gICAgICAgICBjb25jcmV0ZSB0eXBlcyBkb24ndCB3b3JrIHRoYXQgd2VsbCBvdGhlcndpc2UgKHVzaW5nIDo+IGNhbiByZW1vdmUgdGhlbSBlYXNpbHkpICopXG4gICAgICBuYW1lIDogc3RyaW5nXG4gICAgOyBzZXR0ZXIgOiAoJ3JlY29yZCAtPiAnZmllbGQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBnZXR0ZXIgOiAncmVjb3JkIC0+ICdmaWVsZFxuICAgIDsgZnNldCA6ICdyZWNvcmQgLT4gJ2ZpZWxkIC0+ICdyZWNvcmRcbiAgICB9XG5cbiAgbGV0IG9wYXF1ZV9pZGVudGl0eSA9IFN5czAub3BhcXVlX2lkZW50aXR5XG5lbmRcblxudHlwZSAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm0gPVxuICB8IEZpZWxkIG9mICgncGVybSwgJ3JlY29yZCwgJ2ZpZWxkKSBGb3JfZ2VuZXJhdGVkX2NvZGUudFxuW0BAdW5ib3hlZF1cblxudHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID0gKFsgYFJlYWQgfCBgU2V0X2FuZF9jcmVhdGUgXSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybVxudHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSByZWFkb25seV90ID0gKFsgYFJlYWQgXSwgJ3JlY29yZCwgJ2ZpZWxkKSB0X3dpdGhfcGVybVxuXG5sZXQgbmFtZSAoRmllbGQgZmllbGQpID0gZmllbGQubmFtZVxubGV0IGdldCAoRmllbGQgZmllbGQpIHIgPSBmaWVsZC5nZXR0ZXIgclxubGV0IGZzZXQgKEZpZWxkIGZpZWxkKSByIHYgPSBmaWVsZC5mc2V0IHIgdlxubGV0IHNldHRlciAoRmllbGQgZmllbGQpID0gZmllbGQuc2V0dGVyXG5cbnR5cGUgKCdwZXJtLCAncmVjb3JkLCAncmVzdWx0KSB1c2VyID1cbiAgeyBmIDogJ2ZpZWxkLiAoJ3Blcm0sICdyZWNvcmQsICdmaWVsZCkgdF93aXRoX3Blcm0gLT4gJ3Jlc3VsdCB9XG5cbmxldCBtYXAgKEZpZWxkIGZpZWxkKSByIH5mID0gZmllbGQuZnNldCByIChmIChmaWVsZC5nZXR0ZXIgcikpXG5cbmxldCB1cGRhdGVyIChGaWVsZCBmaWVsZCkgPVxuICBtYXRjaCBmaWVsZC5zZXR0ZXIgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgc2V0dGVyIC0+IFNvbWUgKGZ1biByIH5mIC0+IHNldHRlciByIChmIChmaWVsZC5nZXR0ZXIgcikpKVxuOztcbiIsIigqIFtTdHJpbmcwXSBkZWZpbmVzIHN0cmluZyBmdW5jdGlvbnMgdGhhdCBhcmUgcHJpbWl0aXZlcyBvciBjYW4gYmUgc2ltcGx5IGRlZmluZWQgaW5cbiAgIHRlcm1zIG9mIFtDYW1sLlN0cmluZ10uIFtTdHJpbmcwXSBpcyBpbnRlbmRlZCB0byBjb21wbGV0ZWx5IGV4cHJlc3MgdGhlIHBhcnQgb2ZcbiAgIFtDYW1sLlN0cmluZ10gdGhhdCBbQmFzZV0gdXNlcyAtLSBubyBvdGhlciBmaWxlIGluIEJhc2Ugb3RoZXIgdGhhbiBzdHJpbmcwLm1sIHNob3VsZFxuICAgdXNlIFtDYW1sLlN0cmluZ10uICBbU3RyaW5nMF0gaGFzIGZldyBkZXBlbmRlbmNpZXMsIGFuZCBzbyBpcyBhdmFpbGFibGUgZWFybHkgaW4gQmFzZSdzXG4gICBidWlsZCBvcmRlci5cblxuICAgQWxsIEJhc2UgZmlsZXMgdGhhdCBuZWVkIHRvIHVzZSBzdHJpbmdzLCBpbmNsdWRpbmcgdGhlIHN1YnNjcmlwdCBzeW50YXhcbiAgIFt4LihpKV0gb3IgW3guKGkpIDwtIGVdIHdoaWNoIHRoZSBPQ2FtbCBwYXJzZXIgZGVzdWdhcnMgaW50byBjYWxscyB0b1xuICAgW1N0cmluZ10sIGFuZCBjb21lIGJlZm9yZSBbQmFzZS5TdHJpbmddIGluIGJ1aWxkIG9yZGVyIHNob3VsZCBkb1xuXG4gICB7W1xuICAgICBtb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuICAgXX1cblxuICAgRGVmaW5pbmcgW21vZHVsZSBTdHJpbmcgPSBTdHJpbmcwXSBpcyBhbHNvIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHByZXZlbnRzXG4gICBvY2FtbGRlcCBmcm9tIG1pc3Rha2VubHkgY2F1c2luZyBhIGZpbGUgdG8gZGVwZW5kIG9uIFtCYXNlLlN0cmluZ10uICopXG5cbm9wZW4hIEltcG9ydDBcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIFN5cyA9IFN5czBcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCAgICAgICAgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlYnl0ZXNfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZW5kXG5cbmluY2x1ZGUgU3RyaW5nXG5cbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG5sZXQgKCBeICkgPSAoIF4gKVxubGV0IGNhcGl0YWxpemUgPSBDYW1sLlN0cmluZy5jYXBpdGFsaXplX2FzY2lpXG5sZXQgY29tcGFyZSA9IENhbWwuU3RyaW5nLmNvbXBhcmVcblxubGV0IGNvcHkgeCA9XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpcbiAgICAgIChCeXRlcy5vZl9zdHJpbmcgeClcbjs7XG5cbmxldCBlc2NhcGVkID0gQ2FtbC5TdHJpbmcuZXNjYXBlZFxubGV0IGxvd2VyY2FzZSA9IENhbWwuU3RyaW5nLmxvd2VyY2FzZV9hc2NpaVxubGV0IG1ha2UgPSBDYW1sLlN0cmluZy5tYWtlXG5sZXQgc3ViID0gQ2FtbC5TdHJpbmcuc3ViXG5sZXQgdW5jYXBpdGFsaXplID0gQ2FtbC5TdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpXG5sZXQgdW5zYWZlX2JsaXQgPSBDYW1sLlN0cmluZy51bnNhZmVfYmxpdFxubGV0IHVwcGVyY2FzZSA9IENhbWwuU3RyaW5nLnVwcGVyY2FzZV9hc2NpaVxuXG5sZXQgY29uY2F0ID8oc2VwID0gXCJcIikgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiXCJcbiAgKCogVGhlIHN0ZGxpYiBkb2VzIG5vdCBzcGVjaWFsaXplIHRoaXMgY2FzZSBiZWNhdXNlIGl0IGNvdWxkIGJyZWFrIGV4aXN0aW5nIHByb2plY3RzLiAqKVxuICB8IFsgeCBdIC0+IHhcbiAgfCBsIC0+IENhbWwuU3RyaW5nLmNvbmNhdCB+c2VwIGxcbjs7XG5cbigqIFRoZXNlIGFyZSBldGEgZXhwYW5kZWQgaW4gb3JkZXIgdG8gcGVybXV0ZSBwYXJhbWV0ZXIgb3JkZXIgdG8gZm9sbG93IEJhc2VcbiAgIGNvbnZlbnRpb25zLiAqKVxubGV0IGl0ZXIgdCB+ZiA9IENhbWwuU3RyaW5nLml0ZXIgdCB+ZlxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQ2FtbC5MZXhpbmcucG9zaXRpb24gPVxuICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgOyBwb3NfbG51bSA6IGludFxuICAgIDsgcG9zX2JvbCA6IGludFxuICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID1cbiAgICAoZnVuIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICAgICAgIHRoZW4gMFxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbWF0Y2ggY29tcGFyZV9zdHJpbmcgYV9fMDAxXy5wb3NfZm5hbWUgYl9fMDAyXy5wb3NfZm5hbWUgd2l0aFxuICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMDFfLnBvc19sbnVtIGJfXzAwMl8ucG9zX2xudW0gd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMDFfLnBvc19ib2wgYl9fMDAyXy5wb3NfYm9sIHdpdGhcbiAgICAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2ludCBhX18wMDFfLnBvc19jbnVtIGJfXzAwMl8ucG9zX2NudW1cbiAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgIDogdCAtPiB0IC0+IGludClcbiAgOztcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgZnVuIGhzdiBhcmcgLT5cbiAgICAgIGxldCBoc3YgPVxuICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICBsZXQgaHN2ID1cbiAgICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICAgIGhhc2hfZm9sZF9zdHJpbmcgaHN2IGFyZy5wb3NfZm5hbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfbG51bVxuICAgICAgICBpblxuICAgICAgICBoYXNoX2ZvbGRfaW50IGhzdiBhcmcucG9zX2JvbFxuICAgICAgaW5cbiAgICAgIGhhc2hfZm9sZF9pbnQgaHN2IGFyZy5wb3NfY251bVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW4geyBwb3NfZm5hbWUgPSBwb3NfZm5hbWVfXzAwNF9cbiAgICAgICAgIDsgcG9zX2xudW0gPSBwb3NfbG51bV9fMDA2X1xuICAgICAgICAgOyBwb3NfYm9sID0gcG9zX2JvbF9fMDA4X1xuICAgICAgICAgOyBwb3NfY251bSA9IHBvc19jbnVtX18wMTBfXG4gICAgICAgICB9IC0+XG4gICAgICBsZXQgYm5kc19fMDAzXyA9IFtdIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAxMV8gPSBzZXhwX29mX2ludCBwb3NfY251bV9fMDEwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfY251bVwiOyBhcmdfXzAxMV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDlfID0gc2V4cF9vZl9pbnQgcG9zX2JvbF9fMDA4XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfYm9sXCI7IGFyZ19fMDA5XyBdIDo6IGJuZHNfXzAwM19cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAzXyA9XG4gICAgICAgIGxldCBhcmdfXzAwN18gPSBzZXhwX29mX2ludCBwb3NfbG51bV9fMDA2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJwb3NfbG51bVwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwM18gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgcG9zX2ZuYW1lX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInBvc19mbmFtZVwiOyBhcmdfXzAwNV8gXSA6OiBibmRzX18wMDNfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwM19cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIFBweF9oZXJlLmxpZnRfcG9zaXRpb25fYXNfc3RyaW5nLiAqKVxubGV0IG1ha2VfbG9jYXRpb25fc3RyaW5nIH5wb3NfZm5hbWUgfnBvc19sbnVtIH5wb3NfY251bSB+cG9zX2JvbCA9XG4gIFN0cmluZy5jb25jYXRcbiAgICBbIHBvc19mbmFtZTsgXCI6XCI7IEludC50b19zdHJpbmcgcG9zX2xudW07IFwiOlwiOyBJbnQudG9fc3RyaW5nIChwb3NfY251bSAtIHBvc19ib2wpIF1cbjs7XG5cbmxldCB0b19zdHJpbmcgeyBDYW1sLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfY251bTsgcG9zX2JvbCB9ID1cbiAgbWFrZV9sb2NhdGlvbl9zdHJpbmcgfnBvc19mbmFtZSB+cG9zX2xudW0gfnBvc19jbnVtIH5wb3NfYm9sXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIExpc3QwXG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCBmc3Qgc25kID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIChmIHggOiBfIEVpdGhlcjAudCkgd2l0aFxuICAgICAgIHwgRmlyc3QgeSAtPiBsb29wIHQgKHkgOjogZnN0KSBzbmRcbiAgICAgICB8IFNlY29uZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSlcbiAgaW5cbiAgbG9vcCB0IFtdIFtdXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyMFxuXG50eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBDYW1sLnJlc3VsdCA9XG4gIHwgT2sgb2YgJ2FcbiAgfCBFcnJvciBvZiAnYlxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgZXF1YWwsIGhhc2hdXG5cbmxldCB0X29mX3NleHAgOlxuICAnYSAnYi5cbiAgKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYikgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICgnYSwgJ2IpIHRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDE3XyBiX18wMThfKVxuICAgICAgOiAgKChTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE3XykgLT4gKFNleHBsaWIwLlNleHAudCAtPiBiX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAgICAgICAtPiAoYV9fMDE3XywgYl9fMDE4XykgdCkgLT5cbiAgICBsZXQgZXJyb3Jfc291cmNlX18wMDVfID0gXCJyZXN1bHQubWwudFwiIGluXG4gICAgZnVuIF9vZl9hX18wMDFfIF9vZl9iX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcIm9rXCIgfCBcIk9rXCIpIGFzIF90YWdfXzAwOF8pIDo6IHNleHBfYXJnc19fMDA5XykgYXNcbiAgICAgICAgX3NleHBfXzAwN18gLT5cbiAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDA5XyB3aXRoXG4gICAgICAgICB8IFsgYXJnMF9fMDEwXyBdIC0+XG4gICAgICAgICAgIGxldCByZXMwX18wMTFfID0gX29mX2FfXzAwMV8gYXJnMF9fMDEwXyBpblxuICAgICAgICAgICBPayByZXMwX18wMTFfXG4gICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA1X1xuICAgICAgICAgICAgIF90YWdfXzAwOF9cbiAgICAgICAgICAgICBfc2V4cF9fMDA3XylcbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiZXJyb3JcIiB8IFwiRXJyb3JcIikgYXMgX3RhZ19fMDEzXykgOjogc2V4cF9hcmdzX18wMTRfKSBhc1xuICAgICAgICBfc2V4cF9fMDEyXyAtPlxuICAgICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTRfIHdpdGhcbiAgICAgICAgIHwgWyBhcmcwX18wMTVfIF0gLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAxNl8gPSBfb2ZfYl9fMDAyXyBhcmcwX18wMTVfIGluXG4gICAgICAgICAgIEVycm9yIHJlczBfXzAxNl9cbiAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMDVfXG4gICAgICAgICAgICAgX3RhZ19fMDEzX1xuICAgICAgICAgICAgIF9zZXhwX18wMTJfKVxuICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwib2tcIiB8IFwiT2tcIikgYXMgc2V4cF9fMDA2XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJlcnJvclwiIHwgXCJFcnJvclwiKSBhcyBzZXhwX18wMDZfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNl9cbiAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA0X1xuICAgICAgfCBzZXhwX18wMDRfIC0+XG4gICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbjs7XG5cbmxldCBzZXhwX29mX3QgOlxuICAnYSAnYi5cbiAgKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKCdhLCAnYikgdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgPVxuICBmdW4gKHR5cGUgYV9fMDI1XyBiX18wMjZfKVxuICAgICAgOiAgKChhX18wMjVfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKGJfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgIC0+IChhX18wMjVfLCBiX18wMjZfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICBmdW4gX29mX2FfXzAxOV8gX29mX2JfXzAyMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgT2sgYXJnMF9fMDIxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDIyXyA9IF9vZl9hX18wMTlfIGFyZzBfXzAyMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgcmVzMF9fMDIyXyBdXG4gICAgICB8IEVycm9yIGFyZzBfXzAyM18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAyNF8gPSBfb2ZfYl9fMDIwXyBhcmcwX18wMjNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkVycm9yXCI7IHJlczBfXzAyNF8gXVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6XG4gICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgLT4gKCdhLCAnYikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gIHsgdW50eXBlZCA9XG4gICAgICBWYXJpYW50XG4gICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgIFsgTm9fdGFnXG4gICAgICAgICAgICAgICAgeyBuYW1lID0gXCJPa1wiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXJyb3JcIlxuICAgICAgICAgICAgICAgIDsgY2xhdXNlX2tpbmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlIDpcbiAgJ2EgJ2IuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICgnYiAtPiAnYiAtPiBpbnQpIC0+ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdCAtPiBpbnRcbiAgPVxuICBmdW4gX2NtcF9fYSBfY21wX19iIGFfXzAyN18gYl9fMDI4XyAtPlxuICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMjdfIGJfXzAyOF9cbiAgdGhlbiAwXG4gIGVsc2UgKFxuICAgIG1hdGNoIGFfXzAyN18sIGJfXzAyOF8gd2l0aFxuICAgIHwgT2sgX2FfXzAyOV8sIE9rIF9iX18wMzBfIC0+IF9jbXBfX2EgX2FfXzAyOV8gX2JfXzAzMF9cbiAgICB8IE9rIF8sIF8gLT4gLTFcbiAgICB8IF8sIE9rIF8gLT4gMVxuICAgIHwgRXJyb3IgX2FfXzAzMV8sIEVycm9yIF9iX18wMzJfIC0+IF9jbXBfX2IgX2FfXzAzMV8gX2JfXzAzMl8pXG47O1xuXG5sZXQgZXF1YWwgOlxuICAnYSAnYi4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICA9XG4gIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDMzXyBiX18wMzRfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAzM18gYl9fMDM0X1xuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbWF0Y2ggYV9fMDMzXywgYl9fMDM0XyB3aXRoXG4gICAgfCBPayBfYV9fMDM1XywgT2sgX2JfXzAzNl8gLT4gX2NtcF9fYSBfYV9fMDM1XyBfYl9fMDM2X1xuICAgIHwgT2sgXywgXyAtPiBmYWxzZVxuICAgIHwgXywgT2sgXyAtPiBmYWxzZVxuICAgIHwgRXJyb3IgX2FfXzAzN18sIEVycm9yIF9iX18wMzhfIC0+IF9jbXBfX2IgX2FfXzAzN18gX2JfXzAzOF8pXG47O1xuXG5sZXQgaGFzaF9mb2xkX3RcbiAgOiB0eXBlIGEgYi5cbiAgICAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGEgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gKGEsIGIpIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIF9oYXNoX2ZvbGRfYiBoc3YgYXJnIC0+XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgT2sgX2EwIC0+XG4gICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMCBpblxuICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICB8IEVycm9yIF9hMCAtPlxuICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDEgaW5cbiAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgX2hhc2hfZm9sZF9iIGhzdiBfYTBcbjs7XG5cbltAQEBlbmRdXG5cbmluY2x1ZGUgTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgICAgfCBPayB4IC0+IGYgeFxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgICB8IE9rIHggLT4gT2sgKGYgeClcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgbGV0IHJldHVybiB4ID0gT2sgeFxuICBlbmQpXG5cbmxldCBpbnZhcmlhbnQgY2hlY2tfb2sgY2hlY2tfZXJyb3IgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIG9rIC0+IGNoZWNrX29rIG9rXG4gIHwgRXJyb3IgZXJyb3IgLT4gY2hlY2tfZXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBmYWlsIHggPSBFcnJvciB4XG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5cbmxldCBtYXBfZXJyb3IgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE9rIF8gYXMgeCAtPiB4XG4gIHwgRXJyb3IgeCAtPiBFcnJvciAoZiB4KVxuOztcblxubW9kdWxlIEVycm9yID0gTW9uYWQuTWFrZTIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2IsICdhKSB0XG5cbiAgICBsZXQgYmluZCB4IH5mID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBPayBfIGFzIG9rIC0+IG9rXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcF9lcnJvclxuICAgIGxldCByZXR1cm4gZSA9IEVycm9yIGVcbiAgZW5kKVxuXG5sZXQgaXNfb2sgPSBmdW5jdGlvblxuICB8IE9rIF8gLT4gdHJ1ZVxuICB8IEVycm9yIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19lcnJvciA9IGZ1bmN0aW9uXG4gIHwgT2sgXyAtPiBmYWxzZVxuICB8IEVycm9yIF8gLT4gdHJ1ZVxuOztcblxubGV0IG9rID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IFNvbWUgeFxuICB8IEVycm9yIF8gLT4gTm9uZVxuOztcblxubGV0IGVycm9yID0gZnVuY3Rpb25cbiAgfCBPayBfIC0+IE5vbmVcbiAgfCBFcnJvciB4IC0+IFNvbWUgeFxuOztcblxubGV0IG9mX29wdGlvbiBvcHQgfmVycm9yID1cbiAgbWF0Y2ggb3B0IHdpdGhcbiAgfCBTb21lIHggLT4gT2sgeFxuICB8IE5vbmUgLT4gRXJyb3IgZXJyb3Jcbjs7XG5cbmxldCBpdGVyIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayB4IC0+IGYgeFxuICB8IEVycm9yIF8gLT4gKClcbjs7XG5cbmxldCBpdGVyX2Vycm9yIHYgfmYgPVxuICBtYXRjaCB2IHdpdGhcbiAgfCBPayBfIC0+ICgpXG4gIHwgRXJyb3IgeCAtPiBmIHhcbjs7XG5cbmxldCB0b19laXRoZXIgOiBfIHQgLT4gXyBFaXRoZXIudCA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiBGaXJzdCB4XG4gIHwgRXJyb3IgeCAtPiBTZWNvbmQgeFxuOztcblxubGV0IG9mX2VpdGhlciA6IF8gRWl0aGVyLnQgLT4gXyB0ID0gZnVuY3Rpb25cbiAgfCBGaXJzdCB4IC0+IE9rIHhcbiAgfCBTZWNvbmQgeCAtPiBFcnJvciB4XG47O1xuXG5sZXQgb2tfaWZfdHJ1ZSBib29sIH5lcnJvciA9IGlmIGJvb2wgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yXG5cbmxldCB0cnlfd2l0aCBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIGV4blxuOztcblxubGV0IG9rX2V4biA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXhuIC0+IHJhaXNlIGV4blxuOztcblxubGV0IG9rX29yX2ZhaWx3aXRoID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBzdHIgLT4gZmFpbHdpdGggc3RyXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgKCdvaywgJ2VycikgX3Jlc3VsdCA9ICgnb2ssICdlcnIpIHQgPVxuICAgIHwgT2sgb2YgJ29rXG4gICAgfCBFcnJvciBvZiAnZXJyXG5cbiAgbGV0IGlzX2Vycm9yID0gaXNfZXJyb3JcbiAgbGV0IGlzX29rID0gaXNfb2tcbmVuZFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgT2sgXywgRXJyb3IgZSB8IEVycm9yIGUsIE9rIF8gLT4gRXJyb3IgZVxuICB8IE9rIG9rMSwgT2sgb2syIC0+IE9rIChvayBvazEgb2syKVxuICB8IEVycm9yIGVycjEsIEVycm9yIGVycjIgLT4gRXJyb3IgKGVyciBlcnIxIGVycjIpXG47O1xuXG5sZXQgY29tYmluZV9lcnJvcnMgbCA9XG4gIGxldCBvaywgZXJycyA9IExpc3QxLnBhcnRpdGlvbl9tYXAgbCB+Zjp0b19laXRoZXIgaW5cbiAgbWF0Y2ggZXJycyB3aXRoXG4gIHwgW10gLT4gT2sgb2tcbiAgfCBfIDo6IF8gLT4gRXJyb3IgZXJyc1xuOztcblxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IG1hcCAoY29tYmluZV9lcnJvcnMgbCkgfmY6KGZ1biAoXyA6IHVuaXQgbGlzdCkgLT4gKCkpXG5cbigqIGRlcHJlY2F0ZWQgYmluZGluZyBmb3IgZXhwb3J0IG9ubHkgKilcbmxldCBva19mc3QgPSB0b19laXRoZXJcbiIsIigqKiBQcm92aWRlcyBnZW5lcmljIHNpZ25hdHVyZXMgZm9yIGNvbnRhaW5lciBkYXRhIHN0cnVjdHVyZXMuXG5cbiAgICBUaGVzZSBzaWduYXR1cmVzIGluY2x1ZGUgZnVuY3Rpb25zIChbaXRlcl0sIFtmb2xkXSwgW2V4aXN0c10sIFtmb3JfYWxsXSwgLi4uKSB0aGF0XG4gICAgeW91IHdvdWxkIGV4cGVjdCB0byBmaW5kIGluIGFueSBjb250YWluZXIuIFVzZWQgYnkgaW5jbHVkaW5nIFtDb250YWluZXIuUzBdIG9yXG4gICAgW0NvbnRhaW5lci5TMV0gaW4gdGhlIHNpZ25hdHVyZSBmb3IgZXZlcnkgY29udGFpbmVyLWxpa2UgZGF0YSBzdHJ1Y3R1cmUgKFtBcnJheV0sXG4gICAgW0xpc3RdLCBbU3RyaW5nXSwgLi4uKSB0byBlbnN1cmUgYSBjb25zaXN0ZW50IGludGVyZmFjZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgKCoqIFtDb250aW51ZV9vcl9zdG9wLnRdIGlzIHVzZWQgYnkgdGhlIFtmXSBhcmd1bWVudCB0byBbZm9sZF91bnRpbF0gaW4gb3JkZXIgdG9cbiAgICAgIGluZGljYXRlIHdoZXRoZXIgZm9sZGluZyBzaG91bGQgY29udGludWUsIG9yIHN0b3AgZWFybHkuXG5cbiAgICAgIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuQ29udGludWVfb3Jfc3RvcFxuICAqKVxuICBtb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB8IENvbnRpbnVlIG9mICdhXG4gICAgICB8IFN0b3Agb2YgJ2JcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5Db250YWluZXIuU3VtbWFibGUgKilcbm1vZHVsZSB0eXBlIFN1bW1hYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqKiBUaGUgcmVzdWx0IG9mIHN1bW1pbmcgbm8gdmFsdWVzLiAqKVxuICB2YWwgemVybyA6IHRcblxuICAoKiogQW4gb3BlcmF0aW9uIHRoYXQgY29tYmluZXMgdHdvIFt0XSdzIGFuZCBoYW5kbGVzIFt6ZXJvICsgeF0gYnkganVzdCByZXR1cm5pbmcgW3hdLFxuICAgICAgYXMgd2VsbCBhcyBpbiB0aGUgc3ltbWV0cmljIGNhc2UuICopXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG5lbmRcblxuKCoqIFNpZ25hdHVyZSBmb3IgbW9ub21vcnBoaWMgY29udGFpbmVyIC0gYSBjb250YWluZXIgZm9yIGEgc3BlY2lmaWMgZWxlbWVudCB0eXBlLCBlLmcuLFxuICAgIHN0cmluZywgd2hpY2ggaXMgYSBjb250YWluZXIgb2YgY2hhcmFjdGVycyAoW3R5cGUgZWx0ID0gY2hhcl0pIGFuZCBuZXZlciBvZiBhbnl0aGluZ1xuICAgIGVsc2UuICopXG5tb2R1bGUgdHlwZSBTMCA9IHNpZ1xuICB0eXBlIHRcbiAgdHlwZSBlbHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIGVxdWFsaXR5IG9uIFtlbHRdcy4gKilcbiAgdmFsIG1lbSA6IHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogdCAtPiBib29sXG5cbiAgKCoqIFtpdGVyXSBtdXN0IGFsbG93IGV4Y2VwdGlvbnMgcmFpc2VkIGluIFtmXSB0byBlc2NhcGUsIHRlcm1pbmF0aW5nIHRoZSBpdGVyYXRpb25cbiAgICAgIGNsZWFubHkuICBUaGUgc2FtZSBob2xkcyBmb3IgYWxsIGZ1bmN0aW9ucyBiZWxvdyB0YWtpbmcgYW4gW2ZdLiAqKVxuICB2YWwgaXRlciA6IHQgLT4gZjooZWx0IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB0IH5pbml0IH5mXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0gdGhhdCBydW5zIGluIHRoZVxuICAgICAgW1Jlc3VsdF0gbW9uYWQuICBJZiBbZl0gcmV0dXJucyBhbiBbRXJyb3IgX10sIHRoYXQgdmFsdWUgaXMgcmV0dXJuZWQgd2l0aG91dCBhbnlcbiAgICAgIGFkZGl0aW9uYWwgaW52b2NhdGlvbnMgb2YgW2ZdLiAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiBlbHQgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdIGZvciBhbGxcbiAgICAgIGVsZW1lbnRzLiBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgZm9yIHdoaWNoIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGNvdW50IDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgdGhlIHN1bSBvZiBbZiBpXSBmb3IgYWxsIFtpXSBpbiB0aGUgY29udGFpbmVyLiAqKVxuICB2YWwgc3VtIDogKG1vZHVsZSBTdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pIC0+IHQgLT4gZjooZWx0IC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6IHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiB0IC0+IGY6KGVsdCAtPiAnYSBvcHRpb24pIC0+ICdhIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogdCAtPiBlbHQgbGlzdFxuICB2YWwgdG9fYXJyYXkgOiB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwLiBtYXgpIGVsZW1lbnQgZnJvbSB0aGUgY29sbGVjdGlvbiB1c2luZyB0aGUgcHJvdmlkZWQgW2NvbXBhcmVdXG4gICAgICBmdW5jdGlvbi4gSW4gY2FzZSBvZiBhIHRpZSwgdGhlIGZpcnN0IGVsZW1lbnQgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGVcbiAgICAgIGNvbGxlY3Rpb24gaXMgcmV0dXJuZWQuIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIFtmb2xkXSBzbyBpdCBoYXMgdGhlIHNhbWVcbiAgICAgIGNvbXBsZXhpdHkgYXMgW2ZvbGRdLiBSZXR1cm5zIFtOb25lXSBpZmYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICopXG4gIHZhbCBtaW5fZWx0IDogdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuXG4gIHZhbCBtYXhfZWx0IDogdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMwX3BoYW50b20gPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSAnYSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBlcXVhbGl0eSBvbiBbZWx0XXMuICopXG4gIHZhbCBtZW0gOiBfIHQgLT4gZWx0IC0+IGJvb2xcblxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6IF8gdCAtPiBmOihlbHQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XS4gKilcbiAgdmFsIGZvbGQgOiBfIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgXyB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gZWx0IC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIF8gdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+IGVsdCAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogXyB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gVGhlIG9yZGVyIGluIHdoaWNoIHRoZVxuICAgICAgZWxlbWVudHMgd2lsbCBiZSBzdW1tZWQgaXMgdW5zcGVjaWZpZWQuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gXyB0IC0+IGY6KGVsdCAtPiAnc3VtKSAtPiAnc3VtXG5cbiAgKCoqIFJldHVybnMgYXMgYW4gW29wdGlvbl0gdGhlIGZpcnN0IGVsZW1lbnQgZm9yIHdoaWNoIFtmXSBldmFsdWF0ZXMgdG8gdHJ1ZS4gKilcbiAgdmFsIGZpbmQgOiBfIHQgLT4gZjooZWx0IC0+IGJvb2wpIC0+IGVsdCBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiBfIHQgLT4gZjooZWx0IC0+ICdhIG9wdGlvbikgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHRvX2xpc3QgOiBfIHQgLT4gZWx0IGxpc3RcbiAgdmFsIHRvX2FycmF5IDogXyB0IC0+IGVsdCBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuICBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudFxuICAgICAgZW5jb3VudGVyZWQgd2hpbGUgdHJhdmVyc2luZyB0aGUgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gKilcbiAgdmFsIG1pbl9lbHQgOiBfIHQgLT4gY29tcGFyZTooZWx0IC0+IGVsdCAtPiBpbnQpIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6IF8gdCAtPiBjb21wYXJlOihlbHQgLT4gZWx0IC0+IGludCkgLT4gZWx0IG9wdGlvblxuZW5kXG5cbigqKiBTaWduYXR1cmUgZm9yIHBvbHltb3JwaGljIGNvbnRhaW5lciwgZS5nLiwgWydhIGxpc3RdIG9yIFsnYSBhcnJheV0uICopXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICAoKiogQ2hlY2tzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGVsZW1lbnQgaXMgdGhlcmUsIHVzaW5nIFtlcXVhbF0uICopXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSByZXR1cm5zIFtmICguLi4gZiAoZiAoZiBpbml0IGUxKSBlMikgZTMgLi4uKSBlbl0sIHdoZXJlIFtlMS4uZW5dXG4gICAgICBhcmUgdGhlIGVsZW1lbnRzIG9mIFt0XSAgKilcbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudClcbiAgICAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnRcblxuICAoKiogW2ZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoXSBpcyBhIHNob3J0LWNpcmN1aXRpbmcgdmVyc2lvbiBvZiBbZm9sZF0uIElmIFtmXVxuICAgICAgcmV0dXJucyBbU3RvcCBfXSB0aGUgY29tcHV0YXRpb24gY2Vhc2VzIGFuZCByZXN1bHRzIGluIHRoYXQgdmFsdWUuIElmIFtmXSByZXR1cm5zXG4gICAgICBbQ29udGludWUgX10sIHRoZSBmb2xkIHdpbGwgcHJvY2VlZC4gSWYgW2ZdIG5ldmVyIHJldHVybnMgW1N0b3AgX10sIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIGlzIGNvbXB1dGVkIGJ5IFtmaW5pc2hdLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIG1heWJlX25lZ2F0aXZlID1cbiAgICAgICAgICB8IEZvdW5kX25lZ2F0aXZlIG9mIGludFxuICAgICAgICAgIHwgQWxsX25vbm5lZ2F0aXZlIG9mIHsgc3VtIDogaW50IH1cblxuICAgICAgICAoKiogW2ZpcnN0X25lZ19vcl9zdW0gbGlzdF0gcmV0dXJucyB0aGUgZmlyc3QgbmVnYXRpdmUgbnVtYmVyIGluIFtsaXN0XSwgaWYgYW55LFxuICAgICAgICAgICAgb3RoZXJ3aXNlIHJldHVybnMgdGhlIHN1bSBvZiB0aGUgbGlzdC4gKilcbiAgICAgICAgbGV0IGZpcnN0X25lZ19vcl9zdW0gPVxuICAgICAgICAgIExpc3QuZm9sZF91bnRpbCB+aW5pdDowXG4gICAgICAgICAgICB+ZjooZnVuIHN1bSB4IC0+XG4gICAgICAgICAgICAgIGlmIHggPCAwXG4gICAgICAgICAgICAgIHRoZW4gU3RvcCAoRm91bmRfbmVnYXRpdmUgeClcbiAgICAgICAgICAgICAgZWxzZSBDb250aW51ZSAoc3VtICsgeCkpXG4gICAgICAgICAgICB+ZmluaXNoOihmdW4gc3VtIC0+IEFsbF9ub25uZWdhdGl2ZSB7IHN1bSB9KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB4ID0gZmlyc3RfbmVnX29yX3N1bSBbMTsgMjsgMzsgNDsgNV1cbiAgICAgICAgdmFsIHggOiBtYXliZV9uZWdhdGl2ZSA9IEFsbF9ub25uZWdhdGl2ZSB7c3VtID0gMTV9XG5cbiAgICAgICAgbGV0IHkgPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAtMzsgNDsgNV1cbiAgICAgICAgdmFsIHkgOiBtYXliZV9uZWdhdGl2ZSA9IEZvdW5kX25lZ2F0aXZlIC0zXG4gICAgICBdfSAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZmluYWwpIENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgKCoqIFJldHVybnMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGV4aXN0cyBhbiBlbGVtZW50IGZvciB3aGljaCB0aGUgcHJvdmlkZWRcbiAgICAgIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0uICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBleGlzdHMgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzdW0gb2YgW2YgaV0gZm9yIGFsbCBbaV0gaW4gdGhlIGNvbnRhaW5lci4gKilcbiAgdmFsIHN1bSA6IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKSAtPiAnYSB0IC0+IGY6KCdhIC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFJldHVybnMgdGhlIGZpcnN0IGV2YWx1YXRpb24gb2YgW2ZdIHRoYXQgcmV0dXJucyBbU29tZV0sIGFuZCByZXR1cm5zIFtOb25lXSBpZiB0aGVyZVxuICAgICAgaXMgbm8gc3VjaCBlbGVtZW50LiAgKilcbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIG9wdGlvblxuXG4gIHZhbCB0b19saXN0IDogJ2EgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICdhIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogUmV0dXJucyBhIG1pbmltdW0gKHJlc3AgbWF4aW11bSkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZFxuICAgICAgW2NvbXBhcmVdIGZ1bmN0aW9uLCBvciBbTm9uZV0gaWYgdGhlIGNvbGxlY3Rpb24gaXMgZW1wdHkuIEluIGNhc2Ugb2YgYSB0aWUsIHRoZSBmaXJzdFxuICAgICAgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZSBjb2xsZWN0aW9uIGlzIHJldHVybmVkLiBUaGUgaW1wbGVtZW50YXRpb25cbiAgICAgIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5IGFzIFtmb2xkXS4gKilcbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uXG5lbmRcblxubW9kdWxlIHR5cGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG5cbiAgKCoqIENoZWNrcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBlbGVtZW50IGlzIHRoZXJlLCB1c2luZyBbZXF1YWxdLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKSAtPiBib29sXG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogW2ZvbGQgdCB+aW5pdCB+Zl0gcmV0dXJucyBbZiAoLi4uIGYgKGYgKGYgaW5pdCBlMSkgZTIpIGUzIC4uLikgZW5dLCB3aGVyZSBbZTEuLmVuXVxuICAgICAgYXJlIHRoZSBlbGVtZW50cyBvZiBbdF0uICopXG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbZm9sZF9yZXN1bHQgdCB+aW5pdCB+Zl0gaXMgYSBzaG9ydC1jaXJjdWl0aW5nIHZlcnNpb24gb2YgW2ZvbGRdIHRoYXQgcnVucyBpbiB0aGVcbiAgICAgIFtSZXN1bHRdIG1vbmFkLiAgSWYgW2ZdIHJldHVybnMgYW4gW0Vycm9yIF9dLCB0aGF0IHZhbHVlIGlzIHJldHVybmVkIHdpdGhvdXQgYW55XG4gICAgICBhZGRpdGlvbmFsIGludm9jYXRpb25zIG9mIFtmXS4gKilcbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gICgqKiBbZm9sZF91bnRpbCB0IH5pbml0IH5mIH5maW5pc2hdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiBJZiBbZl0gbmV2ZXIgcmV0dXJucyBbU3RvcCBfXSwgdGhlIGZpbmFsIHJlc3VsdFxuICAgICAgaXMgY29tcHV0ZWQgYnkgW2ZpbmlzaF0uXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgbWF5YmVfbmVnYXRpdmUgPVxuICAgICAgICAgIHwgRm91bmRfbmVnYXRpdmUgb2YgaW50XG4gICAgICAgICAgfCBBbGxfbm9ubmVnYXRpdmUgb2YgeyBzdW0gOiBpbnQgfVxuXG4gICAgICAgICgqKiBbZmlyc3RfbmVnX29yX3N1bSBsaXN0XSByZXR1cm5zIHRoZSBmaXJzdCBuZWdhdGl2ZSBudW1iZXIgaW4gW2xpc3RdLCBpZiBhbnksXG4gICAgICAgICAgICBvdGhlcndpc2UgcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBsaXN0LiAqKVxuICAgICAgICBsZXQgZmlyc3RfbmVnX29yX3N1bSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3VudGlsIH5pbml0OjBcbiAgICAgICAgICAgIH5mOihmdW4gc3VtIHggLT5cbiAgICAgICAgICAgICAgaWYgeCA8IDBcbiAgICAgICAgICAgICAgdGhlbiBTdG9wIChGb3VuZF9uZWdhdGl2ZSB4KVxuICAgICAgICAgICAgICBlbHNlIENvbnRpbnVlIChzdW0gKyB4KSlcbiAgICAgICAgICAgIH5maW5pc2g6KGZ1biBzdW0gLT4gQWxsX25vbm5lZ2F0aXZlIHsgc3VtIH0pXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHggPSBmaXJzdF9uZWdfb3Jfc3VtIFsxOyAyOyAzOyA0OyA1XVxuICAgICAgICB2YWwgeCA6IG1heWJlX25lZ2F0aXZlID0gQWxsX25vbm5lZ2F0aXZlIHtzdW0gPSAxNX1cblxuICAgICAgICBsZXQgeSA9IGZpcnN0X25lZ19vcl9zdW0gWzE7IDI7IC0zOyA0OyA1XVxuICAgICAgICB2YWwgeSA6IG1heWJlX25lZ2F0aXZlID0gRm91bmRfbmVnYXRpdmUgLTNcbiAgICAgIF19ICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgLT4gKCdhY2N1bSwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYWNjdW0gLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBSZXR1cm5zIFt0cnVlXSBpZiBhbmQgb25seSBpZiB0aGVyZSBleGlzdHMgYW4gZWxlbWVudCBmb3Igd2hpY2ggdGhlIHByb3ZpZGVkXG4gICAgICBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gW3RydWVdLiAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0aW9uLiAqKVxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgdGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byBbdHJ1ZV0gZm9yIGFsbFxuICAgICAgZWxlbWVudHMuICBUaGlzIGlzIGEgc2hvcnQtY2lyY3VpdGluZyBvcGVyYXRpb24uICopXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcblxuICAoKiogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB3aGljaCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRydWUuICopXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICAoKiogUmV0dXJucyB0aGUgc3VtIG9mIFtmIGldIGZvciBhbGwgW2ldIGluIHRoZSBjb250YWluZXIuICopXG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdzdW0pIC0+ICdzdW1cblxuICAoKiogUmV0dXJucyBhcyBhbiBbb3B0aW9uXSB0aGUgZmlyc3QgZWxlbWVudCBmb3Igd2hpY2ggW2ZdIGV2YWx1YXRlcyB0byB0cnVlLiAqKVxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSBvcHRpb25cblxuICAoKiogUmV0dXJucyB0aGUgZmlyc3QgZXZhbHVhdGlvbiBvZiBbZl0gdGhhdCByZXR1cm5zIFtTb21lXSwgYW5kIHJldHVybnMgW05vbmVdIGlmIHRoZXJlXG4gICAgICBpcyBubyBzdWNoIGVsZW1lbnQuICAqKVxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cblxuICB2YWwgdG9fbGlzdCA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBhcnJheVxuXG4gICgqKiBSZXR1cm5zIGEgbWluIChyZXNwIG1heCkgZWxlbWVudCBmcm9tIHRoZSBjb2xsZWN0aW9uIHVzaW5nIHRoZSBwcm92aWRlZCBbY29tcGFyZV1cbiAgICAgIGZ1bmN0aW9uLiBJbiBjYXNlIG9mIGEgdGllLCB0aGUgZmlyc3QgZWxlbWVudCBlbmNvdW50ZXJlZCB3aGlsZSB0cmF2ZXJzaW5nIHRoZVxuICAgICAgY29sbGVjdGlvbiBpcyByZXR1cm5lZC4gVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgW2ZvbGRdIHNvIGl0IGhhcyB0aGUgc2FtZSBjb21wbGV4aXR5XG4gICAgICBhcyBbZm9sZF0uIFJldHVybnMgW05vbmVdIGlmZiB0aGUgY29sbGVjdGlvbiBpcyBlbXB0eS4gKilcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBvcHRpb25cblxuICB2YWwgbWF4X2VsdCA6ICgnYSwgXykgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICsncGhhbnRvbSkgdFxuXG4gIGluY2x1ZGUgUzFfcGhhbnRvbV9pbnZhcmlhbnQgd2l0aCB0eXBlICgnYSwgJ3BoYW50b20pIHQgOj0gKCdhLCAncGhhbnRvbSkgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEdlbmVyaWMgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogXyB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAnYSB0IC0+IGY6KCdhIGVsdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2N1bSAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgJ2EgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIGVsdCAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogJ2EgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBzdW0gOiAobW9kdWxlIFN1bW1hYmxlIHdpdGggdHlwZSB0ID0gJ3N1bSkgLT4gJ2EgdCAtPiBmOignYSBlbHQgLT4gJ3N1bSkgLT4gJ3N1bVxuICB2YWwgZmluZCA6ICdhIHQgLT4gZjooJ2EgZWx0IC0+IGJvb2wpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIGZpbmRfbWFwIDogJ2EgdCAtPiBmOignYSBlbHQgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2xpc3QgOiAnYSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICdhIHQgLT4gJ2EgZWx0IGFycmF5XG4gIHZhbCBtaW5fZWx0IDogJ2EgdCAtPiBjb21wYXJlOignYSBlbHQgLT4gJ2EgZWx0IC0+IGludCkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6ICdhIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBHZW5lcmljX3BoYW50b20gPSBzaWdcbiAgdHlwZSAoJ2EsICdwaGFudG9tKSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGxlbmd0aCA6IChfLCBfKSB0IC0+IGludFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBpdGVyIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkIDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50KVxuICAgIC0+ICgnYWNjdW0sICdlKSBSZXN1bHQudFxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdhLCBfKSB0XG4gICAgLT4gaW5pdDonYWNjdW1cbiAgICAtPiBmOignYWNjdW0gLT4gJ2EgZWx0IC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjY3VtIC0+ICdmaW5hbClcbiAgICAtPiAnZmluYWxcblxuICB2YWwgZXhpc3RzIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKCdhLCBfKSB0IC0+IGY6KCdhIGVsdCAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHN1bVxuICAgIDogIChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCdhIGVsdCAtPiAnc3VtKVxuICAgIC0+ICdzdW1cblxuICB2YWwgZmluZCA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgZWx0IC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGVsdCBsaXN0XG4gIHZhbCB0b19hcnJheSA6ICgnYSwgXykgdCAtPiAnYSBlbHQgYXJyYXlcbiAgdmFsIG1pbl9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gY29tcGFyZTooJ2EgZWx0IC0+ICdhIGVsdCAtPiBpbnQpIC0+ICdhIGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBNYWtlX2dlbl9hcmcgPSBzaWdcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGZvbGQgOiAnYSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSBlbHQgLT4gJ2FjY3VtKSAtPiAnYWNjdW1cblxuICAoKiogVGhlIFtpdGVyXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2l0ZXJdIGZ1bmN0aW9uLiAgW2BEZWZpbmVfdXNpbmdfZm9sZF0gbWVhbnMgdG8gZGVmaW5lIFtpdGVyXVxuICAgICAgdmlhOlxuXG4gICAgICB7W1xuICAgICAgICBpdGVyIHQgfmYgPSBDb250YWluZXIuaXRlciB+Zm9sZCB0IH5mXG4gICAgICBdfVxuXG4gICAgICBbYEN1c3RvbV0gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCBwcmVzdW1hYmx5IHdpdGggc29tZXRoaW5nIG1vcmVcbiAgICAgIGVmZmljaWVudC4gIFNldmVyYWwgb3RoZXIgZnVuY3Rpb25zIHJldHVybmVkIGJ5IFtDb250YWluZXIuTWFrZV0gYXJlIGRlZmluZWQgaW5cbiAgICAgIHRlcm1zIG9mIFtpdGVyXSwgc28gcGFzc2luZyBpbiBhIG1vcmUgZWZmaWNpZW50IFtpdGVyXSB3aWxsIGltcHJvdmUgdGhlaXIgZWZmaWNpZW5jeVxuICAgICAgYXMgd2VsbC4gKilcbiAgdmFsIGl0ZXIgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgJ2EgdCAtPiBmOignYSBlbHQgLT4gdW5pdCkgLT4gdW5pdCBdXG5cbiAgKCoqIFRoZSBbbGVuZ3RoXSBhcmd1bWVudCB0byBbQ29udGFpbmVyLk1ha2VdIHNwZWNpZmllcyBob3cgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgY29udGFpbmVyJ3MgW2xlbmd0aF0gZnVuY3Rpb24uICBbYERlZmluZV91c2luZ19mb2xkXSBtZWFucyB0byBkZWZpbmVcbiAgICAgIFtsZW5ndGhdIHZpYTpcblxuICAgICAge1tcbiAgICAgICAgbGVuZ3RoIHQgfmYgPSBDb250YWluZXIubGVuZ3RoIH5mb2xkIHQgfmZcbiAgICAgIF19XG5cbiAgICAgIFtgQ3VzdG9tXSBvdmVycmlkZXMgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHByZXN1bWFibHkgd2l0aCBzb21ldGhpbmcgbW9yZVxuICAgICAgZWZmaWNpZW50LiAgU2V2ZXJhbCBvdGhlciBmdW5jdGlvbnMgcmV0dXJuZWQgYnkgW0NvbnRhaW5lci5NYWtlXSBhcmUgZGVmaW5lZCBpblxuICAgICAgdGVybXMgb2YgW2xlbmd0aF0sIHNvIHBhc3NpbmcgaW4gYSBtb3JlIGVmZmljaWVudCBbbGVuZ3RoXSB3aWxsIGltcHJvdmUgdGhlaXJcbiAgICAgIGVmZmljaWVuY3kgYXMgd2VsbC4gKilcbiAgdmFsIGxlbmd0aCA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAnYSB0IC0+IGludCBdXG5lbmRcblxubW9kdWxlIHR5cGUgTWFrZV9hcmcgPSBNYWtlX2dlbl9hcmcgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBNb25hZC5JZGVudC50XG5cbm1vZHVsZSB0eXBlIE1ha2UwX2FyZyA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICB0eXBlIHRcblxuICBpbmNsdWRlIE1ha2VfZ2VuX2FyZyB3aXRoIHR5cGUgJ2EgdCA6PSB0IGFuZCB0eXBlICdhIGVsdCA6PSBFbHQudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbnRhaW5lciA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwb3J0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMwID0gUzBcbiAgbW9kdWxlIHR5cGUgUzBfcGhhbnRvbSA9IFMwX3BoYW50b21cbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBTMV9waGFudG9tX2ludmFyaWFudCA9IFMxX3BoYW50b21faW52YXJpYW50XG4gIG1vZHVsZSB0eXBlIFMxX3BoYW50b20gPSBTMV9waGFudG9tXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWMgPSBHZW5lcmljXG4gIG1vZHVsZSB0eXBlIEdlbmVyaWNfcGhhbnRvbSA9IEdlbmVyaWNfcGhhbnRvbVxuICBtb2R1bGUgdHlwZSBTdW1tYWJsZSA9IFN1bW1hYmxlXG5cbiAgKCoqIEdlbmVyaWMgZGVmaW5pdGlvbnMgb2YgY29udGFpbmVyIG9wZXJhdGlvbnMgaW4gdGVybXMgb2YgW2ZvbGRdLlxuXG4gICAgICBFLmcuOiBbaXRlciB+Zm9sZCB0IH5mID0gZm9sZCB0IH5pbml0OigpIH5mOihmdW4gKCkgYSAtPiBmIGEpXS4gKilcblxuICB0eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9ICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuICB0eXBlICgndCwgJ2EpIGl0ZXIgPSAndCAtPiBmOignYSAtPiB1bml0KSAtPiB1bml0XG4gIHR5cGUgJ3QgbGVuZ3RoID0gJ3QgLT4gaW50XG5cbiAgdmFsIGl0ZXIgOiBmb2xkOigndCwgJ2EsIHVuaXQpIGZvbGQgLT4gKCd0LCAnYSkgaXRlclxuICB2YWwgY291bnQgOiBmb2xkOigndCwgJ2EsIGludCkgZm9sZCAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgbWluX2VsdFxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ2Egb3B0aW9uKSBmb2xkXG4gICAgLT4gJ3RcbiAgICAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRcbiAgICA6ICBmb2xkOigndCwgJ2EsICdhIG9wdGlvbikgZm9sZFxuICAgIC0+ICd0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBsZW5ndGggOiBmb2xkOigndCwgXywgaW50KSBmb2xkIC0+ICd0IC0+IGludFxuICB2YWwgdG9fbGlzdCA6IGZvbGQ6KCd0LCAnYSwgJ2EgbGlzdCkgZm9sZCAtPiAndCAtPiAnYSBsaXN0XG5cbiAgdmFsIHN1bVxuICAgIDogIGZvbGQ6KCd0LCAnYSwgJ3N1bSkgZm9sZFxuICAgIC0+IChtb2R1bGUgU3VtbWFibGUgd2l0aCB0eXBlIHQgPSAnc3VtKVxuICAgIC0+ICd0XG4gICAgLT4gZjooJ2EgLT4gJ3N1bSlcbiAgICAtPiAnc3VtXG5cbiAgdmFsIGZvbGRfcmVzdWx0XG4gICAgOiAgZm9sZDooJ3QsICdhLCAnYikgZm9sZFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAoJ2IsICdlKSBSZXN1bHQudClcbiAgICAtPiAndFxuICAgIC0+ICgnYiwgJ2UpIFJlc3VsdC50XG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICBmb2xkOigndCwgJ2EsICdiKSBmb2xkXG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2ZpbmFsKSBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ3RcbiAgICAtPiAnZmluYWxcblxuICAoKiogR2VuZXJpYyBkZWZpbml0aW9ucyBvZiBjb250YWluZXIgb3BlcmF0aW9ucyBpbiB0ZXJtcyBvZiBbaXRlcl0gYW5kIFtsZW5ndGhdLiAqKVxuICB2YWwgaXNfZW1wdHkgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gYm9vbFxuXG4gIHZhbCBleGlzdHMgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbCA6IGl0ZXI6KCd0LCAnYSkgaXRlciAtPiAndCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmaW5kIDogaXRlcjooJ3QsICdhKSBpdGVyIC0+ICd0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIG9wdGlvblxuICB2YWwgZmluZF9tYXAgOiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIHRvX2FycmF5IDogbGVuZ3RoOid0IGxlbmd0aCAtPiBpdGVyOigndCwgJ2EpIGl0ZXIgLT4gJ3QgLT4gJ2EgYXJyYXlcblxuICAoKiogVGhlIGlkaW9tIGZvciB1c2luZyBbQ29udGFpbmVyLk1ha2VdIGlzIHRvIGJpbmQgdGhlIHJlc3VsdGluZyBtb2R1bGUgYW5kIHRvXG4gICAgICBleHBsaWNpdGx5IGltcG9ydCBlYWNoIG9mIHRoZSBmdW5jdGlvbnMgdGhhdCBvbmUgd2FudHM6XG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdCAuLi4gZW5kKVxuICAgICAgICBsZXQgY291bnQgICAgPSBDLmNvdW50XG4gICAgICAgIGxldCBleGlzdHMgICA9IEMuZXhpc3RzXG4gICAgICAgIGxldCBmaW5kICAgICA9IEMuZmluZFxuICAgICAgICAoKiAuLi4gKilcbiAgICAgIF19XG5cbiAgICAgIFRoaXMgaXMgcHJlZmVyYWJsZSB0bzpcblxuICAgICAge1tcbiAgICAgICAgaW5jbHVkZSBDb250YWluZXIuTWFrZSAoc3RydWN0IC4uLiBlbmQpXG4gICAgICBdfVxuXG4gICAgICBiZWNhdXNlIHRoZSBbaW5jbHVkZV0gbWFrZXMgaXQgdG9vIGVhc3kgdG8gc2hhZG93IHNwZWNpYWxpemVkIGltcGxlbWVudGF0aW9ucyBvZlxuICAgICAgY29udGFpbmVyIGZ1bmN0aW9ucyAoW2xlbmd0aF0gYmVpbmcgYSBjb21tb24gb25lKS5cblxuICAgICAgW0NvbnRhaW5lci5NYWtlMF0gaXMgbGlrZSBbQ29udGFpbmVyLk1ha2VdLCBidXQgZm9yIG1vbm9tb3JwaGljIGNvbnRhaW5lcnMgbGlrZVxuICAgICAgW3N0cmluZ10uICopXG4gIG1vZHVsZSBNYWtlIChUIDogTWFrZV9hcmcpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5cbiAgbW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA6IFMwIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBlbHQgOj0gVC5FbHQudFxuXG4gIG1vZHVsZSBNYWtlX2dlbiAoVCA6IE1ha2VfZ2VuX2FyZykgOlxuICAgIEdlbmVyaWMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50IGFuZCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIExpc3QgPSBMaXN0MFxuaW5jbHVkZSBDb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICgndCwgJ2EsICdhY2N1bSkgZm9sZCA9ICd0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxudHlwZSAoJ3QsICdhKSBpdGVyID0gJ3QgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxudHlwZSAndCBsZW5ndGggPSAndCAtPiBpbnRcblxubGV0IGl0ZXIgfmZvbGQgdCB+ZiA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgLT4gZiBhKVxubGV0IGNvdW50IH5mb2xkIHQgfmYgPSBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIG4gYSAtPiBpZiBmIGEgdGhlbiBuICsgMSBlbHNlIG4pXG5cbmxldCBzdW0gKHR5cGUgYSkgfmZvbGQgKG1vZHVsZSBNIDogU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgZm9sZCB0IH5pbml0Ok0uemVybyB+ZjooZnVuIG4gYSAtPiBNLiggKyApIG4gKGYgYSkpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIFJlc3VsdC5Pa1xuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgUmVzdWx0Lk9rIHggLT4geFxuICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gcmV0dXJuIGUpKSlcbjs7XG5cbmxldCBmb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIH5maW5pc2ggdCA9XG4gIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgIGZpbmlzaFxuICAgICAgKGZvbGQgdCB+aW5pdCB+ZjooZnVuIGFjYyBpdGVtIC0+XG4gICAgICAgICBtYXRjaCBmIGFjYyBpdGVtIHdpdGhcbiAgICAgICAgIHwgQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSB4IC0+IHhcbiAgICAgICAgIHwgU3RvcCB4IC0+IHJldHVybiB4KSkpXG47O1xuXG5sZXQgbWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlID1cbiAgZm9sZCB0IH5pbml0Ok5vbmUgfmY6KGZ1biBhY2MgZWx0IC0+XG4gICAgbWF0Y2ggYWNjIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSBlbHRcbiAgICB8IFNvbWUgbWluIC0+IGlmIGNvbXBhcmUgbWluIGVsdCA+IDAgdGhlbiBTb21lIGVsdCBlbHNlIGFjYylcbjs7XG5cbmxldCBtYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmUgPVxuICBmb2xkIHQgfmluaXQ6Tm9uZSB+ZjooZnVuIGFjYyBlbHQgLT5cbiAgICBtYXRjaCBhY2Mgd2l0aFxuICAgIHwgTm9uZSAtPiBTb21lIGVsdFxuICAgIHwgU29tZSBtYXggLT4gaWYgY29tcGFyZSBtYXggZWx0IDwgMCB0aGVuIFNvbWUgZWx0IGVsc2UgYWNjKVxuOztcblxubGV0IGxlbmd0aCB+Zm9sZCBjID0gZm9sZCBjIH5pbml0OjAgfmY6KGZ1biBhY2MgXyAtPiBhY2MgKyAxKVxuXG5sZXQgaXNfZW1wdHkgfml0ZXIgYyA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIF8gLT4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZXhpc3RzIH5pdGVyIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyIGMgfmY6KGZ1biB4IC0+IGlmIGYgeCB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKVxuOztcblxubGV0IGZvcl9hbGwgfml0ZXIgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgYyB+ZjooZnVuIHggLT4gaWYgbm90IChmIHgpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgIHRydWUpXG47O1xuXG5sZXQgZmluZF9tYXAgfml0ZXIgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXIgdCB+ZjooZnVuIHggLT5cbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZCB+aXRlciBjIH5mID1cbiAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciBjIH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiByLnJldHVybiAoU29tZSB4KSk7XG4gICAgTm9uZSlcbjs7XG5cbmxldCB0b19saXN0IH5mb2xkIGMgPSBMaXN0LnJldiAoZm9sZCBjIH5pbml0OltdIH5mOihmdW4gYWNjIHggLT4geCA6OiBhY2MpKVxuXG5sZXQgdG9fYXJyYXkgfmxlbmd0aCB+aXRlciBjID1cbiAgbGV0IGFycmF5ID0gcmVmIFt8fF0gaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICBpdGVyIGMgfmY6KGZ1biB4IC0+XG4gICAgaWYgIWkgPSAwIHRoZW4gYXJyYXkgOj0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCBjKSB4O1xuICAgICFhcnJheS4oIWkpIDwtIHg7XG4gICAgaW5jciBpKTtcbiAgIWFycmF5XG47O1xuXG5tb2R1bGUgTWFrZV9nZW4gKFQgOiBNYWtlX2dlbl9hcmcpIDogc2lnXG4gIGluY2x1ZGUgR2VuZXJpYyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBULnQgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBULmVsdFxuZW5kID0gc3RydWN0XG4gIGxldCBmb2xkID0gVC5mb2xkXG5cbiAgbGV0IGl0ZXIgPVxuICAgIG1hdGNoIFQuaXRlciB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXIgLT4gaXRlclxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IH5mIC0+IGl0ZXIgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBsZW5ndGggPVxuICAgIG1hdGNoIFQubGVuZ3RoIHdpdGhcbiAgICB8IGBDdXN0b20gbGVuZ3RoIC0+IGxlbmd0aFxuICAgIHwgYERlZmluZV91c2luZ19mb2xkIC0+IGZ1biB0IC0+IGxlbmd0aCB+Zm9sZCB0XG4gIDs7XG5cbiAgbGV0IGlzX2VtcHR5IHQgPSBpc19lbXB0eSB+aXRlciB0XG4gIGxldCBzdW0gbSB0ID0gc3VtIH5mb2xkIG0gdFxuICBsZXQgY291bnQgdCB+ZiA9IGNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzIH5pdGVyIHQgfmZcbiAgbGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGwgfml0ZXIgdCB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwIH5pdGVyIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IGZpbmQgfml0ZXIgdCB+ZlxuICBsZXQgdG9fbGlzdCB0ID0gdG9fbGlzdCB+Zm9sZCB0XG4gIGxldCB0b19hcnJheSB0ID0gdG9fYXJyYXkgfmxlbmd0aCB+aXRlciB0XG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBtaW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IG1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IGZvbGRfcmVzdWx0IHQgfmZvbGQgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID0gZm9sZF91bnRpbCB0IH5mb2xkIH5pbml0IH5mIH5maW5pc2hcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IE1ha2VfYXJnKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIGVsdCA9ICdhXG4gICAgZW5kKVxuXG4gIGxldCBtZW0gdCBhIH5lcXVhbCA9IGV4aXN0cyB0IH5mOihlcXVhbCBhKVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoVCA6IE1ha2UwX2FyZykgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dlbiAoc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgdHlwZSAnYSB0ID0gVC50XG4gICAgICB0eXBlICdhIGVsdCA9IFQuRWx0LnRcbiAgICBlbmQpXG5cbiAgbGV0IG1lbSB0IGVsdCA9IGV4aXN0cyB0IH5mOihULkVsdC5lcXVhbCBlbHQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDYW1sLkxhenlcblxudHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSBsYXp5X3Rfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfbGF6eV90XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxhenlfdF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuOztcblxuW0BAQGVuZF1cblxubGV0IG1hcCB0IH5mID0gbGF6eSAoZiAoZm9yY2UgdCkpXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9XG4gIGlmIHBoeXNfZXF1YWwgdDEgdDIgdGhlbiAwIGVsc2UgY29tcGFyZV9hIChmb3JjZSB0MSkgKGZvcmNlIHQyKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPSBpZiBwaHlzX2VxdWFsIHQxIHQyIHRoZW4gdHJ1ZSBlbHNlIGVxdWFsX2EgKGZvcmNlIHQxKSAoZm9yY2UgdDIpXG5sZXQgaGFzaF9mb2xkX3QgPSBIYXNoLkJ1aWx0aW4uaGFzaF9mb2xkX2xhenlfdFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuIHggPSBmcm9tX3ZhbCB4XG4gICAgbGV0IGJpbmQgdCB+ZiA9IGxhenkgKGZvcmNlIChmIChmb3JjZSB0KSkpXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBUX3VuZm9yY2luZyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGlmIGlzX3ZhbCB0IHRoZW4gc2V4cF9vZl9hIChmb3JjZSB0KSBlbHNlIHNleHBfb2Zfc3RyaW5nIFwiPHVuZm9yY2VkIGxhenk+XCJcbiAgOztcbmVuZFxuIiwiKCogU3BsaXQgb2ZmIHRvIGF2b2lkIGEgY3ljbGljIGRlcGVuZGVuY3kgd2l0aCBbT3JfZXJyb3JdLiAqKVxuXG5vcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcblxubGV0IHNsb3dfY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGggPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTmVnYXRpdmUgcG9zaXRpb246ICVkXCIgcG9zICgpO1xuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmdmIFwiTmVnYXRpdmUgbGVuZ3RoOiAlZFwiIGxlbiAoKTtcbiAgKCogV2UgdXNlIFtwb3MgPiB0b3RhbF9sZW5ndGggLSBsZW5dIHJhdGhlciB0aGFuIFtwb3MgKyBsZW4gPiB0b3RhbF9sZW5ndGhdIHRvIGF2b2lkIHRoZVxuICAgICBwb3NzaWJpbGl0eSBvZiBvdmVyZmxvdy4gKilcbiAgaWYgcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwicG9zICsgbGVuIHBhc3QgZW5kOiAlZCArICVkID4gJWRcIiBwb3MgbGVuIHRvdGFsX2xlbmd0aCAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aCA9XG4gICgqIFRoaXMgaXMgYmV0dGVyIHRoYW4gW3Nsb3dfY2hlY2tfcG9zX2xlbl9leG5dIGZvciB0d28gcmVhc29uczpcblxuICAgICAtIG11Y2ggbGVzcyBpbmxpbmVkIGNvZGVcbiAgICAgLSBvbmx5IG9uZSBjb25kaXRpb25hbCBqdW1wXG5cbiAgICAgVGhlIHJlYXNvbiBpdCB3b3JrcyBpcyB0aGF0IGNoZWNraW5nIFs8IDBdIGlzIHRlc3RpbmcgdGhlIGhpZ2hlc3Qgb3JkZXIgYml0LCBzb1xuICAgICBbYSA8IDAgfHwgYiA8IDBdIGlzIHRoZSBzYW1lIGFzIFthIGxvciBiIDwgMF0uXG5cbiAgICAgW3BvcyArIGxlbl0gY2FuIG92ZXJmbG93LCBzbyBbcG9zID4gdG90YWxfbGVuZ3RoIC0gbGVuXSBpcyBub3QgZXF1aXZhbGVudCB0b1xuICAgICBbdG90YWxfbGVuZ3RoIC0gbGVuIC0gcG9zIDwgMF0sIHdlIG5lZWQgdG8gdGVzdCBmb3IgW3BvcyArIGxlbl0gb3ZlcmZsb3cgYXNcbiAgICAgd2VsbC4gKilcbiAgbGV0IHN0b3AgPSBwb3MgKyBsZW4gaW5cbiAgaWYgcG9zIGxvciBsZW4gbG9yIHN0b3AgbG9yICh0b3RhbF9sZW5ndGggLSBzdG9wKSA8IDBcbiAgdGhlbiBzbG93X2NoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoXG47O1xuXG5sZXQgZ2V0X3Bvc19sZW5fZXhuID8ocG9zID0gMCkgP2xlbiAoKSB+dG90YWxfbGVuZ3RoID1cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgaSAtPiBpXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBjaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgcG9zLCBsZW5cbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzbG93X2NoZWNrX3Bvc19sZW5fZXhuID0gc2xvd19jaGVja19wb3NfbGVuX2V4blxuZW5kXG4iLCJcbm1vZHVsZSBSZXByID0gc3RydWN0XG4gIG9wZW4gQ2FtbC5CaWdhcnJheVxuXG4gIHR5cGUgdCA9IChpbnQ2NCwgaW50NjRfZWx0LCBjX2xheW91dCkgQXJyYXkxLnRcblxuICBsZXQgb2Zfc3RhdGUgOiBDYW1sLlJhbmRvbS5TdGF0ZS50IC0+IHQgPSBDYW1sLk9iai5tYWdpY1xuZW5kXG5cbmxldCBhc3NpZ24gZHN0IHNyYyA9XG4gIGxldCBkc3QgPSBSZXByLm9mX3N0YXRlIChMYXp5LmZvcmNlIGRzdCkgaW5cbiAgbGV0IHNyYyA9IFJlcHIub2Zfc3RhdGUgKExhenkuZm9yY2Ugc3JjKSBpblxuICBDYW1sLkJpZ2FycmF5LkFycmF5MS5ibGl0IHNyYyBkc3RcblxubGV0IG1ha2VfZGVmYXVsdCBkZWZhdWx0ID1cbiAgbGV0IHNwbGl0X2Zyb21fcGFyZW50IHYgPVxuICAgIENhbWwuTGF6eS5tYXBfdmFsIENhbWwuUmFuZG9tLlN0YXRlLnNwbGl0IHZcbiAgaW5cbiAgQ2FtbC5Eb21haW4uRExTLm5ld19rZXkgfnNwbGl0X2Zyb21fcGFyZW50IChmdW4gKCkgLT4gZGVmYXVsdClcblxubGV0IGdldF9zdGF0ZSByYW5kb21fa2V5ID0gQ2FtbC5Eb21haW4uRExTLmdldCByYW5kb21fa2V5XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgQ2hhciA9IENoYXIwXG5cbigqIFVuZm9ydHVuYXRlbHksIGJlY2F1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lcyBub3QgZXhwb3NlXG4gICBbQ2FtbC5SYW5kb20uU3RhdGUuZGVmYXVsdF0sIHdlIGhhdmUgdG8gY29uc3RydWN0IG91ciBvd24uICBXZSB0aGVuIGJ1aWxkIHRoZVxuICAgW0NhbWwuUmFuZG9tLmludF0sIFtDYW1sLlJhbmRvbS5ib29sXSBmdW5jdGlvbnMgYW5kIGZyaWVuZHMgdXNpbmcgdGhhdCBkZWZhdWx0IHN0YXRlIGluXG4gICBleGFjdGx5IHRoZSBzYW1lIHdheSBhcyB0aGUgc3RhbmRhcmQgbGlicmFyeS5cblxuICAgT25lIG90aGVyIHRyaWNraW5lc3MgaXMgdGhhdCB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgdW5leHBvc2VkIFtDYW1sLlJhbmRvbS5TdGF0ZS5hc3NpZ25dXG4gICBmdW5jdGlvbiwgd2hpY2ggYWNjZXNzZXMgdGhlIHVuZXhwb3NlZCBzdGF0ZSByZXByZXNlbnRhdGlvbi4gIFNvLCB3ZSBjb3B5IHRoZVxuICAgW1N0YXRlLnJlcHJdIHR5cGUgZGVmaW5pdGlvbiBhbmQgW2Fzc2lnbl0gZnVuY3Rpb24gdG8gaGVyZSBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LFxuICAgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBnZXQgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIGltcGxlbWVudGF0aW9uLiAqKVxuXG4oKiBSZWdyZXNzaW9uIHRlc3RzIG91Z2h0IHRvIGJlIGRldGVybWluaXN0aWMgYmVjYXVzZSB0aGF0IHdheSBhbnlvbmUgd2hvIGJyZWFrcyB0aGUgdGVzdFxuICAga25vd3MgdGhhdCBpdCdzIHRoZWlyIGNvZGUgdGhhdCBicm9rZSB0aGUgdGVzdC4gIElmIHRlc3RzIGFyZSBub25kZXRlcm1pbmlzdGljLCBhIHRlc3RcbiAgIGZhaWx1cmUgbWF5IGluc3RlYWQgaGFwcGVuIGJlY2F1c2UgdGhlIHRlc3QgcnVubmVyIGdvdCB1bmx1Y2t5IGFuZCB1bmNvdmVyZWQgYW5cbiAgIGV4aXN0aW5nIGJ1ZyBpbiB0aGUgY29kZSBzdXBwb3NlZGx5IGJlaW5nIFwicHJvdGVjdGVkXCIgYnkgdGhlIHRlc3QgaW4gcXVlc3Rpb24uICopXG5sZXQgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cyA9XG4gIGlmIGFtX3Rlc3RpbmdcbiAgdGhlbiAoXG4gICAgbWF0Y2ggYWxsb3dfaW5fdGVzdHMgd2l0aFxuICAgIHwgU29tZSB0cnVlIC0+ICgpXG4gICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPlxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgXCJpbml0aWFsaXppbmcgUmFuZG9tIHdpdGggYSBub25kZXRlcm1pbmlzdGljIHNlZWQgaXMgZm9yYmlkZGVuIGluIGlubGluZSB0ZXN0c1wiKVxuOztcblxuZXh0ZXJuYWwgcmFuZG9tX3NlZWQgOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5sZXQgcmFuZG9tX3NlZWQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgZm9yYmlkX25vbmRldGVybWluaXNtX2luX3Rlc3RzIH5hbGxvd19pbl90ZXN0cztcbiAgcmFuZG9tX3NlZWQgKClcbjs7XG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAoKiBXZSBhbGxvdyBsYXppbmVzcyBvbmx5IGZvciB0aGUgZGVmaW5pdGlvbiBvZiBbZGVmYXVsdF0sIGJlbG93LCB3aGljaCBtYXkgbGF6aWx5IGNhbGxcbiAgICAgW21ha2Vfc2VsZl9pbml0XS4gRm9yIGFsbCBvdGhlciBwdXJwb3Nlcywgd2UgY3JlYXRlIGFuZCB1c2UgW3RdIGVhZ2VybHkuICopXG4gIHR5cGUgdCA9IENhbWwuUmFuZG9tLlN0YXRlLnQgTGF6eS50XG5cbiAgbGV0IGJpdHMgdCA9IENhbWwuUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgdClcbiAgbGV0IGJvb2wgdCA9IENhbWwuUmFuZG9tLlN0YXRlLmJvb2wgKExhenkuZm9yY2UgdClcbiAgbGV0IGludCB0IHggPSBDYW1sLlJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50MzIgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUuaW50MzIgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgaW50NjQgdCB4ID0gQ2FtbC5SYW5kb20uU3RhdGUuaW50NjQgKExhenkuZm9yY2UgdCkgeFxuICBsZXQgbmF0aXZlaW50IHQgeCA9IENhbWwuUmFuZG9tLlN0YXRlLm5hdGl2ZWludCAoTGF6eS5mb3JjZSB0KSB4XG4gIGxldCBtYWtlIHNlZWQgPSBMYXp5LmZyb21fdmFsIChDYW1sLlJhbmRvbS5TdGF0ZS5tYWtlIHNlZWQpXG4gIGxldCBjb3B5IHQgPSBMYXp5LmZyb21fdmFsIChDYW1sLlJhbmRvbS5TdGF0ZS5jb3B5IChMYXp5LmZvcmNlIHQpKVxuICBsZXQgY2hhciB0ID0gaW50IHQgMjU2IHw+IENoYXIudW5zYWZlX29mX2ludFxuICBsZXQgYXNjaWkgdCA9IGludCB0IDEyOCB8PiBDaGFyLnVuc2FmZV9vZl9pbnRcblxuICBsZXQgbWFrZV9zZWxmX2luaXQgP2FsbG93X2luX3Rlc3RzICgpID1cbiAgICBmb3JiaWRfbm9uZGV0ZXJtaW5pc21faW5fdGVzdHMgfmFsbG93X2luX3Rlc3RzO1xuICAgIExhenkuZnJvbV92YWwgKENhbWwuUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuICA7O1xuXG4gIGxldCBhc3NpZ24gPSBSYW5kb21fcmVwci5hc3NpZ25cblxuICBsZXQgZnVsbF9pbml0IHQgc2VlZCA9IGFzc2lnbiB0IChtYWtlIHNlZWQpXG5cbiAgbGV0IGRlZmF1bHQgPVxuICAgIGlmIGFtX3Rlc3RpbmdcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIGRlZmluZSBCYXNlJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUgYXMgYSBjb3B5IG9mIE9DYW1sJ3MgZGVmYXVsdCByYW5kb20gc3RhdGUuXG4gICAgICAgICBUaGlzIG1lYW5zIHRoYXQgcHJvZ3JhbXMgdGhhdCB1c2UgQmFzZS5SYW5kb20gd2lsbCBzZWUgdGhlIHNhbWUgc2VxdWVuY2Ugb2ZcbiAgICAgICAgIHJhbmRvbSBiaXRzIGFzIGlmIHRoZXkgaGFkIHVzZWQgQ2FtbC5SYW5kb20uIEhvd2V2ZXIsIGJlY2F1c2UgW2dldF9zdGF0ZV0gcmV0dXJuc1xuICAgICAgICAgYSBjb3B5LCBCYXNlLlJhbmRvbSBhbmQgT0NhbWwuUmFuZG9tIGFyZSBub3QgdXNpbmcgdGhlIHNhbWUgc3RhdGUuIElmIGEgcHJvZ3JhbVxuICAgICAgICAgdXNlZCBib3RoLCBlYWNoIG9mIHRoZW0gd291bGQgZ28gdGhyb3VnaCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiByYW5kb20gYml0cy4gVG9cbiAgICAgICAgIGF2b2lkIHRoYXQsIHdlIHJlc2V0IE9DYW1sJ3MgcmFuZG9tIHN0YXRlIHRvIGEgZGlmZmVyZW50IHNlZWQsIGdpdmluZyBpdCBhXG4gICAgICAgICBkaWZmZXJlbnQgc2VxdWVuY2UuICopXG4gICAgICBsZXQgdCA9IENhbWwuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICAgICAgQ2FtbC5SYW5kb20uaW5pdCAxMzc7XG4gICAgICBMYXp5LmZyb21fdmFsIHQpXG4gICAgZWxzZVxuICAgICAgbGF6eVxuICAgICAgICAoKiBPdXRzaWRlIG9mIHRlc3RzLCB3ZSBpbml0aWFsaXplIHJhbmRvbSBzdGF0ZSBub25kZXRlcm1pbmlzdGljYWxseSBhbmQgbGF6aWx5LlxuICAgICAgICAgICBXZSBmb3JjZSB0aGUgcmFuZG9tIGluaXRpYWxpemF0aW9uIHRvIGJlIGxhenkgc28gdGhhdCB3ZSBkbyBub3QgcGF5IGFueSBjb3N0XG4gICAgICAgICAgIGZvciBpdCBpbiBwcm9ncmFtcyB0aGF0IGRvIG5vdCB1c2UgcmFuZG9tbmVzcy4gKilcbiAgICAgICAgKExhenkuZm9yY2UgKG1ha2Vfc2VsZl9pbml0ICgpKSlcbiAgOztcblxuICBsZXQgaW50X29uXzY0Yml0cyB0IGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAweDNGRkZGRkZGICgqICgxIGxzbCAzMCkgLSAxICopXG4gICAgdGhlbiBpbnQgdCBib3VuZFxuICAgIGVsc2UgQ2FtbC5JbnQ2NC50b19pbnQgKGludDY0IHQgKENhbWwuSW50NjQub2ZfaW50IGJvdW5kKSlcbiAgOztcblxuICBsZXQgaW50X29uXzMyYml0cyB0IGJvdW5kID1cbiAgICAoKiBOb3QgYWx3YXlzIHRydWUgd2l0aCB0aGUgSmF2YVNjcmlwdCBiYWNrZW5kLiAqKVxuICAgIGlmIGJvdW5kIDw9IDB4M0ZGRkZGRkYgKCogKDEgbHNsIDMwKSAtIDEgKilcbiAgICB0aGVuIGludCB0IGJvdW5kXG4gICAgZWxzZSBDYW1sLkludDMyLnRvX2ludCAoaW50MzIgdCAoQ2FtbC5JbnQzMi5vZl9pbnQgYm91bmQpKVxuICA7O1xuXG4gIGxldCBpbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBpbnRfb25fMzJiaXRzXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50NjQgPVxuICAgIGxldCBvcGVuIENhbWwuSW50NjQgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT5cbiAgICAgIGxvZ3hvclxuICAgICAgICAoYml0cyBzdGF0ZSlcbiAgICAgICAgKGxvZ3hvciAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApIChzaGlmdF9sZWZ0IChiaXRzIHN0YXRlKSA2MCkpXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50MzIgPVxuICAgIGxldCBvcGVuIENhbWwuSW50MzIgaW5cbiAgICBsZXQgYml0cyBzdGF0ZSA9IG9mX2ludCAoYml0cyBzdGF0ZSkgaW5cbiAgICBmdW4gc3RhdGUgLT4gbG9neG9yIChiaXRzIHN0YXRlKSAoc2hpZnRfbGVmdCAoYml0cyBzdGF0ZSkgMzApXG4gIDs7XG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50X29uXzY0Yml0cyBzdGF0ZSA9IENhbWwuSW50NjQudG9faW50IChmdWxsX3JhbmdlX2ludDY0IHN0YXRlKVxuICBsZXQgZnVsbF9yYW5nZV9pbnRfb25fMzJiaXRzIHN0YXRlID0gQ2FtbC5JbnQzMi50b19pbnQgKGZ1bGxfcmFuZ2VfaW50MzIgc3RhdGUpXG5cbiAgbGV0IGZ1bGxfcmFuZ2VfaW50ID1cbiAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICB8IFc2NCAtPiBmdWxsX3JhbmdlX2ludF9vbl82NGJpdHNcbiAgICB8IFczMiAtPiBmdWxsX3JhbmdlX2ludF9vbl8zMmJpdHNcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fNjRiaXRzIHN0YXRlID1cbiAgICBDYW1sLkludDY0LnRvX25hdGl2ZWludCAoZnVsbF9yYW5nZV9pbnQ2NCBzdGF0ZSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnRfb25fMzJiaXRzIHN0YXRlID1cbiAgICBDYW1sLk5hdGl2ZWludC5vZl9pbnQzMiAoZnVsbF9yYW5nZV9pbnQzMiBzdGF0ZSlcbiAgOztcblxuICBsZXQgZnVsbF9yYW5nZV9uYXRpdmVpbnQgPVxuICAgIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICAgIHwgVzY0IC0+IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzY0Yml0c1xuICAgIHwgVzMyIC0+IGZ1bGxfcmFuZ2VfbmF0aXZlaW50X29uXzMyYml0c1xuICA7O1xuXG4gIGxldCByYWlzZV9jcm9zc2VkX2JvdW5kcyBuYW1lIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kIHN0cmluZ19vZl9ib3VuZCA9XG4gICAgUHJpbnRmLmZhaWx3aXRoZlxuICAgICAgXCJSYW5kb20uJXM6IGNyb3NzZWQgYm91bmRzIFslcyA+ICVzXVwiXG4gICAgICBuYW1lXG4gICAgICAoc3RyaW5nX29mX2JvdW5kIGxvd2VyX2JvdW5kKVxuICAgICAgKHN0cmluZ19vZl9ib3VuZCB1cHBlcl9ib3VuZClcbiAgICAgICgpXG4gIFtAQGNvbGRdIFtAQGlubGluZSBuZXZlcl0gW0BAbG9jYWwgbmV2ZXJdIFtAQHNwZWNpYWxpc2UgbmV2ZXJdXG4gIDs7XG5cbiAgbGV0IGludF9pbmNsID1cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludCBzdGF0ZSBpblxuICAgICAgaWYgaW50ID49IGxvICYmIGludCA8PSBoaSB0aGVuIGludCBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gICAgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludFwiIGxvIGhpIEludC50b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IGhpIC0gbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBJbnQubWF4X3ZhbHVlXG4gICAgICB0aGVuIGxvICsgKGZ1bGxfcmFuZ2VfaW50IHN0YXRlIGxhbmQgSW50Lm1heF92YWx1ZSlcbiAgICAgIGVsc2UgaWYgZGlmZiA+PSAwXG4gICAgICB0aGVuIGxvICsgaW50IHN0YXRlIChJbnQuc3VjYyBkaWZmKVxuICAgICAgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICA7O1xuXG4gIGxldCBpbnQzMl9pbmNsID1cbiAgICBsZXQgb3BlbiBJbnQzMl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcmVjIGluX3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICAgIGxldCBpbnQgPSBmdWxsX3JhbmdlX2ludDMyIHN0YXRlIGluXG4gICAgICBpZiBpbnQgPj0gbG8gJiYgaW50IDw9IGhpIHRoZW4gaW50IGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgICBpblxuICAgIGxldCBvcGVuIENhbWwuSW50MzIgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcImludDMyXCIgbG8gaGkgdG9fc3RyaW5nO1xuICAgICAgbGV0IGRpZmYgPSBzdWIgaGkgbG8gaW5cbiAgICAgIGlmIGRpZmYgPSBtYXhfaW50XG4gICAgICB0aGVuIGFkZCBsbyAobG9nYW5kIChmdWxsX3JhbmdlX2ludDMyIHN0YXRlKSBtYXhfaW50KVxuICAgICAgZWxzZSBpZiBkaWZmID49IDBsXG4gICAgICB0aGVuIGFkZCBsbyAoaW50MzIgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IG5hdGl2ZWludF9pbmNsID1cbiAgICBsZXQgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHJlYyBpbl9yYW5nZSBzdGF0ZSBsbyBoaSA9XG4gICAgICBsZXQgaW50ID0gZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gQ2FtbC5OYXRpdmVpbnQgaW5cbiAgICBmdW4gc3RhdGUgbG8gaGkgLT5cbiAgICAgIGlmIGxvID4gaGkgdGhlbiByYWlzZV9jcm9zc2VkX2JvdW5kcyBcIm5hdGl2ZWludFwiIGxvIGhpIHRvX3N0cmluZztcbiAgICAgIGxldCBkaWZmID0gc3ViIGhpIGxvIGluXG4gICAgICBpZiBkaWZmID0gbWF4X2ludFxuICAgICAgdGhlbiBhZGQgbG8gKGxvZ2FuZCAoZnVsbF9yYW5nZV9uYXRpdmVpbnQgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMG5cbiAgICAgIHRoZW4gYWRkIGxvIChuYXRpdmVpbnQgc3RhdGUgKHN1Y2MgZGlmZikpXG4gICAgICBlbHNlIGluX3JhbmdlIHN0YXRlIGxvIGhpXG4gIDs7XG5cbiAgbGV0IGludDY0X2luY2wgPVxuICAgIGxldCBvcGVuIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICAgIGxldCByZWMgaW5fcmFuZ2Ugc3RhdGUgbG8gaGkgPVxuICAgICAgbGV0IGludCA9IGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUgaW5cbiAgICAgIGlmIGludCA+PSBsbyAmJiBpbnQgPD0gaGkgdGhlbiBpbnQgZWxzZSBpbl9yYW5nZSBzdGF0ZSBsbyBoaVxuICAgIGluXG4gICAgbGV0IG9wZW4gQ2FtbC5JbnQ2NCBpblxuICAgIGZ1biBzdGF0ZSBsbyBoaSAtPlxuICAgICAgaWYgbG8gPiBoaSB0aGVuIHJhaXNlX2Nyb3NzZWRfYm91bmRzIFwiaW50NjRcIiBsbyBoaSB0b19zdHJpbmc7XG4gICAgICBsZXQgZGlmZiA9IHN1YiBoaSBsbyBpblxuICAgICAgaWYgZGlmZiA9IG1heF9pbnRcbiAgICAgIHRoZW4gYWRkIGxvIChsb2dhbmQgKGZ1bGxfcmFuZ2VfaW50NjQgc3RhdGUpIG1heF9pbnQpXG4gICAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICAgIHRoZW4gYWRkIGxvIChpbnQ2NCBzdGF0ZSAoc3VjYyBkaWZmKSlcbiAgICAgIGVsc2UgaW5fcmFuZ2Ugc3RhdGUgbG8gaGlcbiAgOztcblxuICAoKiBSZXR1cm4gYSB1bmlmb3JtbHkgcmFuZG9tIGZsb2F0IGluIFswLCAxKS4gKilcbiAgbGV0IHJlYyByYXdmbG9hdCBzdGF0ZSA9XG4gICAgbGV0IG9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluXG4gICAgbGV0IHNjYWxlID0gMHgxcC0zMCBpblxuICAgICgqIDJeLTMwICopXG4gICAgbGV0IHIxID0gQ2FtbC5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHIyID0gQ2FtbC5mbG9hdF9vZl9pbnQgKGJpdHMgc3RhdGUpIGluXG4gICAgbGV0IHJlc3VsdCA9ICgocjEgKi4gc2NhbGUpICsuIHIyKSAqLiBzY2FsZSBpblxuICAgICgqIFdpdGggdmVyeSBzbWFsbCBwcm9iYWJpbGl0eSwgcmVzdWx0IGNhbiByb3VuZCB1cCB0byAxLjAsIHNvIGluIHRoYXQgY2FzZSwgd2UganVzdFxuICAgICAgIHRyeSBhZ2Fpbi4gKilcbiAgICBpZiByZXN1bHQgPCAxLjAgdGhlbiByZXN1bHQgZWxzZSByYXdmbG9hdCBzdGF0ZVxuICA7O1xuXG4gIGxldCBmbG9hdCBzdGF0ZSBoaSA9IHJhd2Zsb2F0IHN0YXRlICouIGhpXG5cbiAgbGV0IGZsb2F0X3JhbmdlIHN0YXRlIGxvIGhpID1cbiAgICBsZXQgb3BlbiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBpZiBsbyA+IGhpIHRoZW4gcmFpc2VfY3Jvc3NlZF9ib3VuZHMgXCJmbG9hdFwiIGxvIGhpIENhbWwuc3RyaW5nX29mX2Zsb2F0O1xuICAgIGxvICsuIGZsb2F0IHN0YXRlIChoaSAtLiBsbylcbiAgOztcbmVuZFxuXG5sZXQgZGVmYXVsdCA9IFJhbmRvbV9yZXByLm1ha2VfZGVmYXVsdCBTdGF0ZS5kZWZhdWx0XG5cbmxldCBiaXRzICgpID0gU3RhdGUuYml0cyAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpXG5sZXQgaW50IHggPSBTdGF0ZS5pbnQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50MzIgeCA9IFN0YXRlLmludDMyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IG5hdGl2ZWludCB4ID0gU3RhdGUubmF0aXZlaW50IChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeFxubGV0IGludDY0IHggPSBTdGF0ZS5pbnQ2NCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHhcbmxldCBmbG9hdCB4ID0gU3RhdGUuZmxvYXQgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4XG5sZXQgaW50X2luY2wgeCB5ID0gU3RhdGUuaW50X2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBpbnQzMl9pbmNsIHggeSA9IFN0YXRlLmludDMyX2luY2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KSB4IHlcbmxldCBuYXRpdmVpbnRfaW5jbCB4IHkgPSBTdGF0ZS5uYXRpdmVpbnRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGludDY0X2luY2wgeCB5ID0gU3RhdGUuaW50NjRfaW5jbCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHggeVxubGV0IGZsb2F0X3JhbmdlIHggeSA9IFN0YXRlLmZsb2F0X3JhbmdlIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdCkgeCB5XG5sZXQgYm9vbCAoKSA9IFN0YXRlLmJvb2wgKFJhbmRvbV9yZXByLmdldF9zdGF0ZSBkZWZhdWx0KVxubGV0IGNoYXIgKCkgPSBTdGF0ZS5jaGFyIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBhc2NpaSAoKSA9IFN0YXRlLmFzY2lpIChSYW5kb21fcmVwci5nZXRfc3RhdGUgZGVmYXVsdClcbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNlZWRcbmxldCBpbml0IHNlZWQgPSBmdWxsX2luaXQgW3wgc2VlZCB8XVxubGV0IHNlbGZfaW5pdCA/YWxsb3dfaW5fdGVzdHMgKCkgPSBmdWxsX2luaXQgKHJhbmRvbV9zZWVkID9hbGxvd19pbl90ZXN0cyAoKSlcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiAoUmFuZG9tX3JlcHIuZ2V0X3N0YXRlIGRlZmF1bHQpIHNcbiIsIigqKiBBbiBpbnRlcm5hbC1vbmx5IG1vZHVsZSBmYWN0b3JlZCBvdXQgZHVlIHRvIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvcmVfYXJyYXlcbiAgICBhbmQgY29yZV9saXN0LiAgQ29udGFpbnMgY29kZSBmb3IgcGVybXV0aW5nIGFuIGFycmF5LiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgQXJyYXkwXG5cbmxldCBwZXJtdXRlID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpID8ocG9zID0gMCkgP2xlbiB0ID1cbiAgKCogQ29waWVkIGZyb20gW09yZGVyZWRfY29sbGVjdGlvbl9jb21tb24wXSB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjb21waWxpbmdcbiAgICAgd2l0aG91dCBmbGFtYmRhLiAqKVxuICBsZXQgdG90YWxfbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IFNvbWUgbCAtPiBsXG4gICAgfCBOb25lIC0+IHRvdGFsX2xlbmd0aCAtIHBvc1xuICBpblxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMC5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgbGV0IG51bV9zd2FwcyA9IGxlbiAtIDEgaW5cbiAgZm9yIGkgPSBudW1fc3dhcHMgZG93bnRvIDEgZG9cbiAgICBsZXQgdGhpc19pID0gcG9zICsgaSBpblxuICAgICgqIFtyYW5kb21faV0gaXMgZHJhd24gZnJvbSBbcG9zLHRoaXNfaV0gKilcbiAgICBsZXQgcmFuZG9tX2kgPSBwb3MgKyBSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAoaSArIDEpIGluXG4gICAgc3dhcCB0IHRoaXNfaSByYW5kb21faVxuICBkb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBjb25zdCBjIF8gPSBjXG5cbmV4dGVybmFsIGlnbm9yZSA6IF8gLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIHRoaXMgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIFtDYW1sLmlnbm9yZV0gKilcblxubGV0IG5vbiBmIHggPSBub3QgKGYgeClcblxubGV0IGZvcmV2ZXIgZiA9XG4gIGxldCByZWMgZm9yZXZlciAoKSA9XG4gICAgZiAoKTtcbiAgICBmb3JldmVyICgpXG4gIGluXG4gIHRyeSBmb3JldmVyICgpIHdpdGhcbiAgfCBlIC0+IGVcbjs7XG5cbmV4dGVybmFsIGlkIDogJ2EgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoIHw+ICkgOiAnYSAtPiAoJ2EgLT4gJ2IpIC0+ICdiID0gXCIlcmV2YXBwbHlcIlxuXG4oKiBUaGUgdHlwaWNhbCB1c2UgY2FzZSBmb3IgdGhlc2UgZnVuY3Rpb25zIGlzIHRvIHBhc3MgaW4gZnVuY3Rpb25hbCBhcmd1bWVudHMgYW5kIGdldFxuICAgZnVuY3Rpb25zIGFzIGEgcmVzdWx0LiAqKVxubGV0IGNvbXBvc2UgZiBnIHggPSBmIChnIHgpXG5sZXQgZmxpcCBmIHggeSA9IGYgeSB4XG5sZXQgcmVjIGFwcGx5X25fdGltZXMgfm4gZiB4ID0gaWYgbiA8PSAwIHRoZW4geCBlbHNlIGFwcGx5X25fdGltZXMgfm46KG4gLSAxKSBmIChmIHgpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcblxubGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBMZXNzIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IEVxdWFsIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICB8IEdyZWF0ZXIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyXG4gICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIExlc3M7IEVxdWFsOyBHcmVhdGVyIF0gOiB0IGxpc3QpXG5cbmxldCB0X29mX3NleHAgPVxuICAobGV0IGVycm9yX3NvdXJjZV9fMDA1XyA9IFwib3JkZXJpbmcubWwudFwiIGluXG4gICBmdW5jdGlvblxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVzc1wiIHwgXCJMZXNzXCIpIC0+IExlc3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIC0+IEVxdWFsXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgLT4gR3JlYXRlclxuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJsZXNzXCIgfCBcIkxlc3NcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImVxdWFsXCIgfCBcIkVxdWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNV8gc2V4cF9fMDA2X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJncmVhdGVyXCIgfCBcIkdyZWF0ZXJcIikgOjogXykgYXMgc2V4cF9fMDA2XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDVfIHNleHBfXzAwNF9cbiAgIHwgc2V4cF9fMDA0XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA1XyBzZXhwX18wMDRfXG4gICAgICAgICAgICAgICAgICAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbjs7XG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IExlc3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGVzc1wiXG4gICAgfCBFcXVhbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJFcXVhbFwiXG4gICAgfCBHcmVhdGVyIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkdyZWF0ZXJcIlxuICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJMZXNzXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJFcXVhbFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiR3JlYXRlclwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgZXF1YWwgYSBiID0gY29tcGFyZSBhIGIgPSAwXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSBfb3JkZXJpbmcgPSB0ID1cbiAgICB8IExlc3NcbiAgICB8IEVxdWFsXG4gICAgfCBHcmVhdGVyXG5lbmRcblxubGV0IG9mX2ludCBuID0gaWYgbiA8IDAgdGhlbiBMZXNzIGVsc2UgaWYgbiA9IDAgdGhlbiBFcXVhbCBlbHNlIEdyZWF0ZXJcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIHwgTGVzcyAtPiAtMVxuICB8IEVxdWFsIC0+IDBcbiAgfCBHcmVhdGVyIC0+IDFcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxubW9kdWxlIEVpdGhlciA9IEVpdGhlcjBcblxuXG5pbmNsdWRlIExpc3QxXG5cbigqIFRoaXMgaXRzZWxmIGluY2x1ZGVzIFtMaXN0MF0uICopXG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gbGlzdF9vZl9zZXhwXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPSBzZXhwX29mX2xpc3RcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IGxpc3Rfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBPcl91bmVxdWFsX2xlbmd0aHMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBVbmVxdWFsX2xlbmd0aHNcbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA2XyBiX18wMDdfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDA2XyBiX18wMDdfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDZfLCBiX18wMDdfIHdpdGhcbiAgICAgIHwgT2sgX2FfXzAwOF8sIE9rIF9iX18wMDlfIC0+IF9jbXBfX2EgX2FfXzAwOF8gX2JfXzAwOV9cbiAgICAgIHwgT2sgXywgXyAtPiAtMVxuICAgICAgfCBfLCBPayBfIC0+IDFcbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzLCBVbmVxdWFsX2xlbmd0aHMgLT4gMClcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gKHR5cGUgYV9fMDEzXykgOiAoKGFfXzAxM18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiBhX18wMTNfIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDEwXyAtPiBmdW5jdGlvblxuICAgICAgfCBPayBhcmcwX18wMTFfIC0+XG4gICAgICAgIGxldCByZXMwX18wMTJfID0gX29mX2FfXzAxMF8gYXJnMF9fMDExXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPa1wiOyByZXMwX18wMTJfIF1cbiAgICAgIHwgVW5lcXVhbF9sZW5ndGhzIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZXF1YWxfbGVuZ3Roc1wiXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludmFyaWFudCBmIHQgPSBpdGVyIHQgfmZcbmxldCBvZl9saXN0IHQgPSB0XG5cbmxldCByYW5nZScgfmNvbXBhcmUgfnN0cmlkZSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfaSBzdG9wX2kgPVxuICBsZXQgbmV4dF9pID0gc3RyaWRlIHN0YXJ0X2kgaW5cbiAgbGV0IG9yZGVyIHggeSA9IE9yZGVyaW5nLm9mX2ludCAoY29tcGFyZSB4IHkpIGluXG4gIGxldCByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpID1cbiAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZVwiXG4gIGluXG4gIGxldCBpbml0aWFsX3N0cmlkZV9vcmRlciA9XG4gICAgbWF0Y2ggb3JkZXIgc3RhcnRfaSBuZXh0X2kgd2l0aFxuICAgIHwgRXF1YWwgLT4gcmFpc2Vfc3RyaWRlX2Nhbm5vdF9yZXR1cm5fc2FtZV92YWx1ZSAoKVxuICAgIHwgTGVzcyAtPiBgTGVzc1xuICAgIHwgR3JlYXRlciAtPiBgR3JlYXRlclxuICBpblxuICBsZXQgcmVjIGxvb3AgaSBhY2N1bSA9XG4gICAgbGV0IGlfdG9fc3RvcF9vcmRlciA9IG9yZGVyIGkgc3RvcF9pIGluXG4gICAgbWF0Y2ggaV90b19zdG9wX29yZGVyLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgfCBMZXNzLCBgTGVzcyB8IEdyZWF0ZXIsIGBHcmVhdGVyIC0+XG4gICAgICAoKiBoYXZlbid0IHlldCByZWFjaGVkIFtzdG9wX2ldLiBDb250aW51ZS4gKilcbiAgICAgIGxldCBuZXh0X2kgPSBzdHJpZGUgaSBpblxuICAgICAgKG1hdGNoIG9yZGVyIGkgbmV4dF9pLCBpbml0aWFsX3N0cmlkZV9vcmRlciB3aXRoXG4gICAgICAgfCBFcXVhbCwgXyAtPiByYWlzZV9zdHJpZGVfY2Fubm90X3JldHVybl9zYW1lX3ZhbHVlICgpXG4gICAgICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAgICBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2UnOiBzdHJpZGUgZnVuY3Rpb24gY2Fubm90IGNoYW5nZSBkaXJlY3Rpb25cIlxuICAgICAgIHwgTGVzcywgYExlc3MgfCBHcmVhdGVyLCBgR3JlYXRlciAtPiBsb29wIG5leHRfaSAoaSA6OiBhY2N1bSkpXG4gICAgfCBMZXNzLCBgR3JlYXRlciB8IEdyZWF0ZXIsIGBMZXNzIC0+XG4gICAgICAoKiBzdGVwcGVkIHBhc3QgW3N0b3BfaV0uICBGaW5pc2hlZC4gKilcbiAgICAgIGFjY3VtXG4gICAgfCBFcXVhbCwgXyAtPlxuICAgICAgKCogcmVhY2hlZCBbc3RvcF9pXS4gIEZpbmlzaGVkLiAqKVxuICAgICAgKG1hdGNoIHN0b3Agd2l0aFxuICAgICAgIHwgYGluY2x1c2l2ZSAtPiBpIDo6IGFjY3VtXG4gICAgICAgfCBgZXhjbHVzaXZlIC0+IGFjY3VtKVxuICBpblxuICBsZXQgc3RhcnRfaSA9XG4gICAgbWF0Y2ggc3RhcnQgd2l0aFxuICAgIHwgYGluY2x1c2l2ZSAtPiBzdGFydF9pXG4gICAgfCBgZXhjbHVzaXZlIC0+IG5leHRfaVxuICBpblxuICByZXYgKGxvb3Agc3RhcnRfaSBbXSlcbjs7XG5cbmxldCByYW5nZSA/KHN0cmlkZSA9IDEpID8oc3RhcnQgPSBgaW5jbHVzaXZlKSA/KHN0b3AgPSBgZXhjbHVzaXZlKSBzdGFydF9pIHN0b3BfaSA9XG4gIGlmIHN0cmlkZSA9IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QucmFuZ2U6IHN0cmlkZSBtdXN0IGJlIG5vbi16ZXJvXCI7XG4gIHJhbmdlJyB+Y29tcGFyZSB+c3RyaWRlOihmdW4geCAtPiB4ICsgc3RyaWRlKSB+c3RhcnQgfnN0b3Agc3RhcnRfaSBzdG9wX2lcbjs7XG5cbmxldCBoZCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogXyAtPiBTb21lIHhcbjs7XG5cbmxldCB0bCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogdCcgLT4gU29tZSB0J1xuOztcblxubGV0IG50aCB0IG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBudGhfYXV4IHQgbiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBhIDo6IHQgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IHQgKG4gLSAxKVxuICAgIGluXG4gICAgbnRoX2F1eCB0IG4pXG47O1xuXG5sZXQgbnRoX2V4biB0IG4gPVxuICBtYXRjaCBudGggdCBuIHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIkxpc3QubnRoX2V4biAlZCBjYWxsZWQgb24gbGlzdCBvZiBsZW5ndGggJWRcIiBuIChsZW5ndGggdCkgKClcbiAgfCBTb21lIGEgLT4gYVxuOztcblxubGV0IHVub3JkZXJlZF9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsIHwgbCwgW10gLT4gbFxuICB8IF8gLT4gcmV2X2FwcGVuZCBsMSBsMlxuOztcblxubW9kdWxlIENoZWNrX2xlbmd0aDIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IFNhbWVfbGVuZ3RoIG9mIGludFxuICAgIHwgVW5lcXVhbF9sZW5ndGhzIG9mXG4gICAgICAgIHsgc2hhcmVkX2xlbmd0aCA6IGludFxuICAgICAgICA7IHRhaWxfb2ZfYSA6ICdhIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2IgOiAnYiBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIHNoYXJlZF9sZW5ndGggPVxuICAgICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiIC0+IGxvb3AgYSBiIChzaGFyZWRfbGVuZ3RoICsgMSlcbiAgICAgIHwgW10sIF8gfCBfLCBbXSAtPiBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIGwxIGwyID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMi5vZl9saXN0cyBsMSBsMiB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iIH0gLT5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwibGVuZ3RoIG1pc21hdGNoIGluICVzOiAlZCA8PiAlZFwiXG4gICAgICBuYW1lXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2EpXG4gICAgICAoc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IpXG4gICAgICAoKVxuOztcblxubGV0IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmYgPVxuICBtYXRjaCBDaGVja19sZW5ndGgyLm9mX2xpc3RzIGwxIGwyIHdpdGhcbiAgfCBTYW1lX2xlbmd0aCBfIC0+IE9yX3VuZXF1YWxfbGVuZ3Rocy5PayAoZiBsMSBsMilcbiAgfCBVbmVxdWFsX2xlbmd0aHMgXyAtPiBVbmVxdWFsX2xlbmd0aHNcbjs7XG5cbm1vZHVsZSBDaGVja19sZW5ndGgzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPVxuICAgIHwgU2FtZV9sZW5ndGggb2YgaW50XG4gICAgfCBVbmVxdWFsX2xlbmd0aHMgb2ZcbiAgICAgICAgeyBzaGFyZWRfbGVuZ3RoIDogaW50XG4gICAgICAgIDsgdGFpbF9vZl9hIDogJ2EgbGlzdFxuICAgICAgICA7IHRhaWxfb2ZfYiA6ICdiIGxpc3RcbiAgICAgICAgOyB0YWlsX29mX2MgOiAnYyBsaXN0XG4gICAgICAgIH1cblxuICAoKiBJbiB0aGUgW1VuZXF1YWxfbGVuZ3Roc10gY2FzZSwgYXQgbGVhc3Qgb25lIG9mIHRoZSB0YWlscyB3aWxsIGJlIG5vbi1lbXB0eS4gKilcbiAgbGV0IG9mX2xpc3RzIGwxIGwyIGwzID1cbiAgICBsZXQgcmVjIGxvb3AgYSBiIGMgc2hhcmVkX2xlbmd0aCA9XG4gICAgICBtYXRjaCBhLCBiLCBjIHdpdGhcbiAgICAgIHwgW10sIFtdLCBbXSAtPiBTYW1lX2xlbmd0aCBzaGFyZWRfbGVuZ3RoXG4gICAgICB8IF8gOjogYSwgXyA6OiBiLCBfIDo6IGMgLT4gbG9vcCBhIGIgYyAoc2hhcmVkX2xlbmd0aCArIDEpXG4gICAgICB8IFtdLCBfLCBfIHwgXywgW10sIF8gfCBfLCBfLCBbXSAtPlxuICAgICAgICBVbmVxdWFsX2xlbmd0aHMgeyBzaGFyZWRfbGVuZ3RoOyB0YWlsX29mX2EgPSBhOyB0YWlsX29mX2IgPSBiOyB0YWlsX29mX2MgPSBjIH1cbiAgICBpblxuICAgIGxvb3AgbDEgbDIgbDMgMFxuICA7O1xuZW5kXG5cbmxldCBjaGVja19sZW5ndGgzX2V4biBuYW1lIGwxIGwyIGwzID1cbiAgbWF0Y2ggQ2hlY2tfbGVuZ3RoMy5vZl9saXN0cyBsMSBsMiBsMyB3aXRoXG4gIHwgU2FtZV9sZW5ndGggXyAtPiAoKVxuICB8IFVuZXF1YWxfbGVuZ3RocyB7IHNoYXJlZF9sZW5ndGg7IHRhaWxfb2ZfYTsgdGFpbF9vZl9iOyB0YWlsX29mX2MgfSAtPlxuICAgIGxldCBuMSA9IHNoYXJlZF9sZW5ndGggKyBsZW5ndGggdGFpbF9vZl9hIGluXG4gICAgbGV0IG4yID0gc2hhcmVkX2xlbmd0aCArIGxlbmd0aCB0YWlsX29mX2IgaW5cbiAgICBsZXQgbjMgPSBzaGFyZWRfbGVuZ3RoICsgbGVuZ3RoIHRhaWxfb2ZfYyBpblxuICAgIGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiAlczogJWQgPD4gJWQgfHwgJWQgPD4gJWRcIiBuYW1lIG4xIG4yIG4yIG4zICgpXG47O1xuXG5sZXQgY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZiA9XG4gIG1hdGNoIENoZWNrX2xlbmd0aDMub2ZfbGlzdHMgbDEgbDIgbDMgd2l0aFxuICB8IFNhbWVfbGVuZ3RoIF8gLT4gT3JfdW5lcXVhbF9sZW5ndGhzLk9rIChmIGwxIGwyIGwzKVxuICB8IFVuZXF1YWxfbGVuZ3RocyBfIC0+IFVuZXF1YWxfbGVuZ3Roc1xuOztcblxubGV0IGl0ZXIyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooaXRlcjJfb2sgfmYpXG5cbmxldCBpdGVyMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIml0ZXIyX2V4blwiIGwxIGwyO1xuICBpdGVyMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IHJldl9tYXAyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjoocmV2X21hcDJfb2sgfmYpXG5cbmxldCByZXZfbWFwMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcInJldl9tYXAyX2V4blwiIGwxIGwyO1xuICByZXZfbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGZvbGQyIGwxIGwyIH5pbml0IH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9sZDJfb2sgfmluaXQgfmYpXG5cbmxldCBmb2xkMl9leG4gbDEgbDIgfmluaXQgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvbGQyX2V4blwiIGwxIGwyO1xuICBmb2xkMl9vayBsMSBsMiB+aW5pdCB+ZlxuOztcblxubGV0IGZvcl9hbGwyIGwxIGwyIH5mID0gY2hlY2tfbGVuZ3RoMiBsMSBsMiB+ZjooZm9yX2FsbDJfb2sgfmYpXG5cbmxldCBmb3JfYWxsMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImZvcl9hbGwyX2V4blwiIGwxIGwyO1xuICBmb3JfYWxsMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IGV4aXN0czIgbDEgbDIgfmYgPSBjaGVja19sZW5ndGgyIGwxIGwyIH5mOihleGlzdHMyX29rIH5mKVxuXG5sZXQgZXhpc3RzMl9leG4gbDEgbDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcImV4aXN0czJfZXhuXCIgbDEgbDI7XG4gIGV4aXN0czJfb2sgbDEgbDIgfmZcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBlcXVhbCBhID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGZhbHNlXG4gICAgfCBiIDo6IGJzIC0+IGVxdWFsIGEgYiB8fCBsb29wIGVxdWFsIGEgYnNcbiAgaW5cbiAgbG9vcCBlcXVhbCBhIHRcbjs7XG5cbigqIFRoaXMgaXMgYSBjb3B5IG9mIHRoZSBjb2RlIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIHdpdGggYW4gZXh0cmEgZXRhLWV4cGFuc2lvbiB0b1xuICAgYXZvaWQgY3JlYXRpbmcgcGFydGlhbCBjbG9zdXJlcyAoc2hvd2VkIHVwIGZvciBbZmlsdGVyXSkgaW4gcHJvZmlsaW5nKS4gKilcbmxldCByZXZfZmlsdGVyIHQgfmYgPVxuICBsZXQgcmVjIGZpbmQgfmYgYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2N1XG4gICAgfCB4IDo6IGwgLT4gaWYgZiB4IHRoZW4gZmluZCB+ZiAoeCA6OiBhY2N1KSBsIGVsc2UgZmluZCB+ZiBhY2N1IGxcbiAgaW5cbiAgZmluZCB+ZiBbXSB0XG47O1xuXG5sZXQgZmlsdGVyIHQgfmYgPSByZXYgKHJldl9maWx0ZXIgdCB+ZilcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAobWF0Y2ggZiB4IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gbG9vcCBsXG4gICAgICAgfCBTb21lIF8gYXMgciAtPiByKVxuICBpblxuICBsb29wIHRcbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcF9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZF9tYXAgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcF9leG5cbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgeCA6OiBsIC0+IGlmIGYgeCB0aGVuIFNvbWUgeCBlbHNlIGxvb3AgbFxuICBpblxuICBsb29wIHRcbjs7XG5cbmxldCBmaW5kX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgcmVjIGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCB4IDo6IHQgLT4gaWYgZiB4IHRoZW4geCBlbHNlIGZpbmRfZXhuIHQgfmZcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX2V4blxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPiBpZiBmIGkgeCB0aGVuIFNvbWUgKGksIHgpIGVsc2UgbG9vcCAoaSArIDEpIGxcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbmxldCBmaW5kaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kaV9leG4gdCB+ZiA9XG4gICAgbWF0Y2ggZmluZGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgZmluZGlfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgKG1hdGNoIGYgaSB4IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByZXN1bHQgLT4gcmVzdWx0XG4gICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKSBsKVxuICBpblxuICBsb29wIDAgdFxuOztcblxubGV0IGZpbmRfbWFwaV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJMaXN0LmZpbmRfbWFwaV9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBpX2V4biB0IH5mID1cbiAgICBtYXRjaCBmaW5kX21hcGkgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgIHwgU29tZSB4IC0+IHhcbiAgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX21hcGlfZXhuXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgaGQgOjogdGwgLT4gZiBpIGhkICYmIGxvb3AgKGkgKyAxKSB0bFxuICBpblxuICBsb29wIDAgdFxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgW10gLT4gZmFsc2VcbiAgICB8IGhkIDo6IHRsIC0+IGYgaSBoZCB8fCBsb29wIChpICsgMSkgdGxcbiAgaW5cbiAgbG9vcCAwIHRcbjs7XG5cbigqKiBGb3IgdGhlIGNvbnRhaW5lciBpbnRlcmZhY2UuICopXG5sZXQgZm9sZF9sZWZ0ID0gZm9sZFxuXG5sZXQgdG9fYXJyYXkgPSBBcnJheS5vZl9saXN0XG5sZXQgdG9fbGlzdCB0ID0gdFxuXG5sZXQgbWF4X25vbl90YWlsY2FsbCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMV8wMDBcbiAgKCogV2UgZG9uJ3Qga25vdyB0aGUgc2l6ZSBvZiB0aGUgc3RhY2ssIGJldHRlciBiZSBzYWZlIGFuZCBhc3N1bWUgaXQncyBzbWFsbC4gVGhpc1xuICAgICBudW1iZXIgd2FzIHRha2VuIGZyb20gb2NhbWwjc3RkbGliL2xpc3QubWwgd2hpY2ggaXMgYWxzbyBlcXVhbCB0byB0aGUgZGVmYXVsdCBsaW1pdFxuICAgICBvZiByZWN1cnNpdmUgY2FsbCBpbiB0aGUganNfb2Zfb2NhbWwgY29tcGlsZXIgYmVmb3JlIHN3aXRjaGluZyB0byB0cmFtcG9saW5lLiAqKVxuICB8IFN5cy5PdGhlciBfIC0+IDUwXG47O1xuXG4oKiogVGFpbCByZWN1cnNpdmUgdmVyc2lvbnMgb2Ygc3RhbmRhcmQgW0xpc3RdIG1vZHVsZSAqKVxuXG5sZXQgdGFpbF9hcHBlbmQgbDEgbDIgPSByZXZfYXBwZW5kIChyZXYgbDEpIGwyXG5cbigqIFRoZXJlIGFyZSBhIGZldyBvcHRpbWl6ZWQgbGlzdCBvcGVyYXRpb25zIGhlcmUsIGluY2x1ZGluZyBhcHBlbmQgYW5kIG1hcC4gIFRoZXJlIGFyZVxuICAgYmFzaWNhbGx5IHR3byBvcHRpbWl6YXRpb25zIGluIHBsYXk6IGxvb3AgdW5yb2xsaW5nLCBhbmQgZHluYW1pYyBzd2l0Y2hpbmcgYmV0d2VlblxuICAgc3RhY2sgYW5kIGhlYXAgYWxsb2NhdGlvbi5cblxuICAgVGhlIGxvb3AtdW5yb2xsaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZCwgd2UganVzdCB1bnJvbGwgNSBsZXZlbHMgb2YgdGhlIGxvb3AuICBUaGlzIG1ha2VzXG4gICBlYWNoIGl0ZXJhdGlvbiBmYXN0ZXIsIGFuZCBhbHNvIHJlZHVjZXMgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgY29uc3VtZWQgcGVyIGxpc3RcbiAgIGVsZW1lbnQuXG5cbiAgIFRoZSBkeW5hbWljIHN3aXRjaGluZyBpcyBkb25lIGJ5IGNvdW50aW5nIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzLCBhbmQgdGhlblxuICAgc3dpdGNoaW5nIHRvIHRoZSBcInNsb3dcIiBpbXBsZW1lbnRhdGlvbiB3aGVuIHdlIGV4Y2VlZCBhIGdpdmVuIGxpbWl0LiAgVGhpcyBtZWFucyB0aGF0XG4gICBzaG9ydCBsaXN0cyB1c2UgdGhlIGZhc3Qgc3RhY2stYWxsb2NhdGlvbiBtZXRob2QsIGFuZCBsb25nIGxpc3RzIHVzZSBhIHNsb3dlciBvbmUgdGhhdFxuICAgZG9lc24ndCByZXF1aXJlIHN0YWNrIHNwYWNlLiAqKVxubGV0IHJlYyBjb3VudF9hcHBlbmQgbDEgbDIgY291bnQgPVxuICBtYXRjaCBsMiB3aXRoXG4gIHwgW10gLT4gbDFcbiAgfCBfIC0+XG4gICAgKG1hdGNoIGwxIHdpdGhcbiAgICAgfCBbXSAtPiBsMlxuICAgICB8IFsgeDEgXSAtPiB4MSA6OiBsMlxuICAgICB8IFsgeDE7IHgyIF0gLT4geDEgOjogeDIgOjogbDJcbiAgICAgfCBbIHgxOyB4MjsgeDMgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiBsMlxuICAgICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPiB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiBsMlxuICAgICB8IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHRsIC0+XG4gICAgICAgeDFcbiAgICAgICA6OiB4MlxuICAgICAgIDo6IHgzXG4gICAgICAgOjogeDRcbiAgICAgICA6OiB4NVxuICAgICAgIDo6XG4gICAgICAgKGlmIGNvdW50ID4gbWF4X25vbl90YWlsY2FsbFxuICAgICAgICB0aGVuIHRhaWxfYXBwZW5kIHRsIGwyXG4gICAgICAgIGVsc2UgY291bnRfYXBwZW5kIHRsIGwyIChjb3VudCArIDEpKSlcbjs7XG5cbmxldCBhcHBlbmQgbDEgbDIgPSBjb3VudF9hcHBlbmQgbDEgbDIgMFxuXG4oKiBBbiBvcmRpbmFyeSB0YWlsIHJlY3Vyc2l2ZSBtYXAgYnVpbGRzIHVwIGFuIGludGVybWVkaWF0ZSAocmV2ZXJzZWQpIHJlcHJlc2VudGF0aW9uLFxuICAgd2l0aCBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0IHBlciBlbGVtZW50LiBUaGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIGluc3RlYWQgY2h1bmtzXG4gICA5IG9iamVjdHMgaW50byBvbmUgaGVhcCBhbGxvY2F0ZWQgb2JqZWN0LCByZWR1Y2luZyBhbGxvY2F0aW9uIGFuZCBwZXJmb3JtYW5jZSBjb3N0c1xuICAgYWNjb3JkaW5nbHkuIE5vdGUgdGhhdCB0aGUgdmVyeSBlbmQgb2YgdGhlIGxpc3QgaXMgZG9uZSBieSB0aGUgc3RkbGliJ3MgbWFwXG4gICBmdW5jdGlvbi4gKilcbmxldCB0YWlsX21hcCB4cyB+ZiA9XG4gIGxldCByZWMgcmlzZSB5cyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB5c1xuICAgIHwgKHkwLCB5MSwgeTIsIHkzLCB5NCwgeTUsIHk2LCB5NywgeTgpIDo6IGJzIC0+XG4gICAgICByaXNlICh5MCA6OiB5MSA6OiB5MiA6OiB5MyA6OiB5NCA6OiB5NSA6OiB5NiA6OiB5NyA6OiB5OCA6OiB5cykgYnNcbiAgaW5cbiAgbGV0IHJlYyBkaXZlIGJzID0gZnVuY3Rpb25cbiAgICB8IHgwIDo6IHgxIDo6IHgyIDo6IHgzIDo6IHg0IDo6IHg1IDo6IHg2IDo6IHg3IDo6IHg4IDo6IHhzIC0+XG4gICAgICBsZXQgeTAgPSBmIHgwIGluXG4gICAgICBsZXQgeTEgPSBmIHgxIGluXG4gICAgICBsZXQgeTIgPSBmIHgyIGluXG4gICAgICBsZXQgeTMgPSBmIHgzIGluXG4gICAgICBsZXQgeTQgPSBmIHg0IGluXG4gICAgICBsZXQgeTUgPSBmIHg1IGluXG4gICAgICBsZXQgeTYgPSBmIHg2IGluXG4gICAgICBsZXQgeTcgPSBmIHg3IGluXG4gICAgICBsZXQgeTggPSBmIHg4IGluXG4gICAgICBkaXZlICgoeTAsIHkxLCB5MiwgeTMsIHk0LCB5NSwgeTYsIHk3LCB5OCkgOjogYnMpIHhzXG4gICAgfCB4cyAtPiByaXNlIChub250YWlsX21hcCB+ZiB4cykgYnNcbiAgaW5cbiAgZGl2ZSBbXSB4c1xuOztcblxubGV0IHJlYyBjb3VudF9tYXAgfmYgbCBjdHIgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IFsgeDEgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBbIGYxIF1cbiAgfCBbIHgxOyB4MiBdIC0+XG4gICAgbGV0IGYxID0gZiB4MSBpblxuICAgIGxldCBmMiA9IGYgeDIgaW5cbiAgICBbIGYxOyBmMiBdXG4gIHwgWyB4MTsgeDI7IHgzIF0gLT5cbiAgICBsZXQgZjEgPSBmIHgxIGluXG4gICAgbGV0IGYyID0gZiB4MiBpblxuICAgIGxldCBmMyA9IGYgeDMgaW5cbiAgICBbIGYxOyBmMjsgZjMgXVxuICB8IFsgeDE7IHgyOyB4MzsgeDQgXSAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIGxldCBmNCA9IGYgeDQgaW5cbiAgICBbIGYxOyBmMjsgZjM7IGY0IF1cbiAgfCB4MSA6OiB4MiA6OiB4MyA6OiB4NCA6OiB4NSA6OiB0bCAtPlxuICAgIGxldCBmMSA9IGYgeDEgaW5cbiAgICBsZXQgZjIgPSBmIHgyIGluXG4gICAgbGV0IGYzID0gZiB4MyBpblxuICAgIGxldCBmNCA9IGYgeDQgaW5cbiAgICBsZXQgZjUgPSBmIHg1IGluXG4gICAgZjFcbiAgICA6OiBmMlxuICAgIDo6IGYzXG4gICAgOjogZjRcbiAgICA6OiBmNVxuICAgIDo6IChpZiBjdHIgPiBtYXhfbm9uX3RhaWxjYWxsIHRoZW4gdGFpbF9tYXAgfmYgdGwgZWxzZSBjb3VudF9tYXAgfmYgdGwgKGN0ciArIDEpKVxuOztcblxubGV0IG1hcCBsIH5mID0gY291bnRfbWFwIH5mIGwgMFxuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCAoID4+fCApIGwgZiA9IG1hcCBsIH5mXG5sZXQgbWFwMl9vayBsMSBsMiB+ZiA9IHJldiAocmV2X21hcDJfb2sgbDEgbDIgfmYpXG5sZXQgbWFwMiBsMSBsMiB+ZiA9IGNoZWNrX2xlbmd0aDIgbDEgbDIgfmY6KG1hcDJfb2sgfmYpXG5cbmxldCBtYXAyX2V4biBsMSBsMiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwibWFwMl9leG5cIiBsMSBsMjtcbiAgbWFwMl9vayBsMSBsMiB+ZlxuOztcblxubGV0IHJldl9tYXAzX29rIGwxIGwyIGwzIH5mID1cbiAgbGV0IHJlYyBsb29wIGwxIGwyIGwzIGFjID1cbiAgICBtYXRjaCBsMSwgbDIsIGwzIHdpdGhcbiAgICB8IFtdLCBbXSwgW10gLT4gYWNcbiAgICB8IHgxIDo6IGwxLCB4MiA6OiBsMiwgeDMgOjogbDMgLT4gbG9vcCBsMSBsMiBsMyAoZiB4MSB4MiB4MyA6OiBhYylcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIGluXG4gIGxvb3AgbDEgbDIgbDMgW11cbjs7XG5cbmxldCByZXZfbWFwMyBsMSBsMiBsMyB+ZiA9IGNoZWNrX2xlbmd0aDMgbDEgbDIgbDMgfmY6KHJldl9tYXAzX29rIH5mKVxuXG5sZXQgcmV2X21hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJyZXZfbWFwM19leG5cIiBsMSBsMiBsMztcbiAgcmV2X21hcDNfb2sgbDEgbDIgbDMgfmZcbjs7XG5cbmxldCBtYXAzX29rIGwxIGwyIGwzIH5mID0gcmV2IChyZXZfbWFwM19vayBsMSBsMiBsMyB+ZilcbmxldCBtYXAzIGwxIGwyIGwzIH5mID0gY2hlY2tfbGVuZ3RoMyBsMSBsMiBsMyB+ZjoobWFwM19vayB+ZilcblxubGV0IG1hcDNfZXhuIGwxIGwyIGwzIH5mID1cbiAgY2hlY2tfbGVuZ3RoM19leG4gXCJtYXAzX2V4blwiIGwxIGwyIGwzO1xuICBtYXAzX29rIGwxIGwyIGwzIH5mXG47O1xuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kIGwxIGwyIH5mID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+IGwyXG4gIHwgaCA6OiB0IC0+IHJldl9tYXBfYXBwZW5kIH5mIHQgKGYgaCA6OiBsMilcbjs7XG5cbmxldCB1bnppcCBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyXG4gICAgfCAoeCwgeSkgOjogdGwgLT4gbG9vcCB0bCAoeCA6OiBsMSkgKHkgOjogbDIpXG4gIGluXG4gIGxvb3AgKHJldiBsaXN0KSBbXSBbXVxuOztcblxubGV0IHVuemlwMyBsaXN0ID1cbiAgbGV0IHJlYyBsb29wIGxpc3QgbDEgbDIgbDMgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbDEsIGwyLCBsM1xuICAgIHwgKHgsIHksIHopIDo6IHRsIC0+IGxvb3AgdGwgKHggOjogbDEpICh5IDo6IGwyKSAoeiA6OiBsMylcbiAgaW5cbiAgbG9vcCAocmV2IGxpc3QpIFtdIFtdIFtdXG47O1xuXG5sZXQgemlwX2V4biBsMSBsMiA9XG4gIHRyeSBtYXAyX29rIH5mOihmdW4gYSBiIC0+IGEsIGIpIGwxIGwyIHdpdGhcbiAgfCBfIC0+IGludmFsaWRfYXJnZiBcImxlbmd0aCBtaXNtYXRjaCBpbiB6aXBfZXhuOiAlZCA8PiAlZFwiIChsZW5ndGggbDEpIChsZW5ndGggbDIpICgpXG47O1xuXG5sZXQgemlwIGwxIGwyID0gbWFwMiB+ZjooZnVuIGEgYiAtPiBhLCBiKSBsMSBsMlxuXG4oKiogQWRkaXRpb25hbCBsaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJldl9tYXBpIGwgfmYgPVxuICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoIDo6IHQgLT4gbG9vcCAoaSArIDEpIChmIGkgaCA6OiBhY2MpIHRcbiAgaW5cbiAgbG9vcCAwIFtdIGxcbjs7XG5cbmxldCBtYXBpIGwgfmYgPSByZXYgKHJldl9tYXBpIGwgfmYpXG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGl0ZXJpIGwgfmYgPVxuICBpZ25vcmVcbiAgICAoZm9sZCBsIH5pbml0OjAgfmY6KGZ1biBpIHggLT5cbiAgICAgICBmIGkgeDtcbiAgICAgICBpICsgMSlcbiAgICAgOiBpbnQpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIHNuZCAoZm9sZCB0IH5pbml0OigwLCBpbml0KSB+ZjooZnVuIChpLCBhY2MpIHYgLT4gaSArIDEsIGYgaSBhY2MgdikpXG47O1xuXG5sZXQgZmlsdGVyaSBsIH5mID1cbiAgcmV2IChmb2xkaSBsIH5mOihmdW4gcG9zIGFjYyB4IC0+IGlmIGYgcG9zIHggdGhlbiB4IDo6IGFjYyBlbHNlIGFjYykgfmluaXQ6W10pXG47O1xuXG5sZXQgcmVkdWNlIGwgfmYgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgaGQgOjogdGwgLT4gU29tZSAoZm9sZCB+aW5pdDpoZCB+ZiB0bClcbjs7XG5cbmxldCByZWR1Y2VfZXhuIGwgfmYgPVxuICBtYXRjaCByZWR1Y2UgbCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmVkdWNlX2V4blwiXG4gIHwgU29tZSB2IC0+IHZcbjs7XG5cbmxldCByZWR1Y2VfYmFsYW5jZWQgbCB+ZiA9XG4gICgqIENhbGwgdGhlIFwic2l6ZVwiIG9mIGEgdmFsdWUgdGhlIG51bWJlciBvZiBsaXN0IGVsZW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGNvbWJpbmVkIGludG9cbiAgICAgaXQgdmlhIGNhbGxzIHRvIFtmXS4gIFdlIHByb2NlZWQgYnkgdXNpbmcgW2ZdIHRvIGNvbWJpbmUgZWxlbWVudHMgaW4gdGhlIGFjY3VtdWxhdG9yXG4gICAgIG9mIHRoZSBzYW1lIHNpemUgdW50aWwgd2UgY2FuJ3QgY29tYmluZSBhbnkgbW9yZSwgdGhlbiBnZXR0aW5nIGEgbmV3IGVsZW1lbnQgZnJvbSB0aGVcbiAgICAgaW5wdXQgbGlzdCBhbmQgcmVwZWF0aW5nLlxuXG4gICAgIFdpdGggdGhpcyBzdHJhdGVneSwgaW4gdGhlIGFjY3VtdWxhdG9yOlxuICAgICAtIHdlIG9ubHkgZXZlciBoYXZlIGVsZW1lbnRzIG9mIHNpemVzIGEgcG93ZXIgb2YgdHdvXG4gICAgIC0gd2UgbmV2ZXIgaGF2ZSBtb3JlIHRoYW4gb25lIGVsZW1lbnQgb2YgZWFjaCBzaXplXG4gICAgIC0gdGhlIHN1bSBvZiBhbGwgdGhlIGVsZW1lbnQgc2l6ZXMgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBjb25zdW1lZFxuXG4gICAgIFRoZXNlIGNvbmRpdGlvbnMgZW5mb3JjZSB0aGF0IGxpc3Qgb2YgZWxlbWVudHMgb2YgZWFjaCBzaXplIGlzIHByZWNpc2VseSB0aGUgYmluYXJ5XG4gICAgIGV4cGFuc2lvbiBvZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnN1bWVkOiBpZiB5b3UndmUgY29uc3VtZWQgMTMgPSAwYjExMDFcbiAgICAgZWxlbWVudHMsIHlvdSBoYXZlIG9uZSBlbGVtZW50IG9mIHNpemUgOCwgb25lIG9mIHNpemUgNCwgYW5kIG9uZSBvZiBzaXplIDEuICBIZW5jZVxuICAgICB3aGVuIGEgbmV3IGVsZW1lbnQgY29tZXMgYWxvbmcsIHRoZSBudW1iZXIgb2YgY29tYmluaW5ncyB5b3UgbmVlZCB0byBkbyBpcyB0aGUgbnVtYmVyXG4gICAgIG9mIHRyYWlsaW5nIDFzIGluIHRoZSBiaW5hcnkgZXhwYW5zaW9uIG9mIFtudW1dLCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgaGF2ZVxuICAgICBhbHJlYWR5IGdvbmUgaW50byB0aGUgYWNjdW11bGF0b3IuICBUaGUgYWNjdW11bGF0b3IgaXMgaW4gYXNjZW5kaW5nIG9yZGVyIG9mIHNpemUsIHNvXG4gICAgIHRoZSBuZXh0IGVsZW1lbnQgdG8gY29tYmluZSB3aXRoIGlzIGFsd2F5cyB0aGUgaGVhZCBvZiB0aGUgbGlzdC4gKilcbiAgbGV0IHJlYyBzdGVwX2FjY3VtIG51bSBhY2MgeCA9XG4gICAgaWYgbnVtIGxhbmQgMSA9IDBcbiAgICB0aGVuIHggOjogYWNjXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhY2Mgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICgqIE5ldyBlbGVtZW50cyBmcm9tIGxhdGVyIGluIHRoZSBpbnB1dCBsaXN0IGdvIG9uIHRoZSBmcm9udCBvZiB0aGUgYWNjdW11bGF0b3IsIHNvXG4gICAgICAgICB0aGUgYWNjdW11bGF0b3IgaXMgaW4gcmV2ZXJzZSBvcmRlciB3cnQgdGhlIG9yaWdpbmFsIGxpc3Qgb3JkZXIsIGhlbmNlIFtmIHkgeF1cbiAgICAgICAgIGluc3RlYWQgb2YgW2YgeCB5XS4gKilcbiAgICAgIHwgeSA6OiB5cyAtPiBzdGVwX2FjY3VtIChudW0gYXNyIDEpIHlzIChmIHkgeCkpXG4gIGluXG4gICgqIEV4cGVyaW1lbnRhbGx5LCBpbmxpbmluZyBbZm9sZGldIGFuZCB1bnJvbGxpbmcgdGhpcyBsb29wIGEgZmV3IHRpbWVzIGNhbiByZWR1Y2VcbiAgICAgcnVudGltZSBkb3duIHRvIGEgdGhpcmQgYW5kIGFsbG9jYXRpb24gdG8gMS8xNnRoIG9yIHNvIGluIHRoZSBtaWNyb2JlbmNobWFya3MgYmVsb3cuXG4gICAgIEhvd2V2ZXIsIGluIG1vc3QgdXNlIGNhc2VzIFtmXSBpcyBsaWtlbHkgdG8gYmUgZXhwZW5zaXZlIChvdGhlcndpc2Ugd2h5IGRvIHlvdSBjYXJlXG4gICAgIGFib3V0IHRoZSBvcmRlciBvZiByZWR1Y3Rpb24/KSBzbyB0aGUgb3ZlcmhlYWQgb2YgdGhpcyBmdW5jdGlvbiBpdHNlbGYgZG9lc24ndCByZWFsbHlcbiAgICAgbWF0dGVyLiBJZiB5b3UgY29tZSB1cCB3aXRoIGEgdXNlLWNhc2Ugd2hlcmUgaXQgZG9lcywgdGhlbiB0aGF0J3Mgc29tZXRoaW5nIHlvdSBtaWdodFxuICAgICB3YW50IHRvIHRyeTogc2VlIGhnIGxvZyAtcHIgNDllZjA2NWY0MjlkLiAqKVxuICBtYXRjaCBmb2xkaSBsIH5pbml0OltdIH5mOnN0ZXBfYWNjdW0gd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IFNvbWUgKGZvbGQgeHMgfmluaXQ6eCB+ZjooZnVuIHggeSAtPiBmIHkgeCkpXG47O1xuXG5sZXQgcmVkdWNlX2JhbGFuY2VkX2V4biBsIH5mID1cbiAgbWF0Y2ggcmVkdWNlX2JhbGFuY2VkIGwgfmYgd2l0aFxuICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJMaXN0LnJlZHVjZV9iYWxhbmNlZF9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgZ3JvdXBpIGwgfmJyZWFrID1cbiAgbGV0IGdyb3VwcyA9XG4gICAgZm9sZGkgbCB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIHggLT5cbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IFtdIC0+IFsgWyB4IF0gXVxuICAgICAgfCBjdXJyZW50X2dyb3VwIDo6IHRsIC0+XG4gICAgICAgIGlmIGJyZWFrIGkgKGhkX2V4biBjdXJyZW50X2dyb3VwKSB4XG4gICAgICAgIHRoZW4gWyB4IF0gOjogY3VycmVudF9ncm91cCA6OiB0bCAoKiBzdGFydCBuZXcgZ3JvdXAgKilcbiAgICAgICAgZWxzZSAoeCA6OiBjdXJyZW50X2dyb3VwKSA6OiB0bClcbiAgICAoKiBleHRlbmQgY3VycmVudCBncm91cCAqKVxuICBpblxuICBtYXRjaCBncm91cHMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgbCAtPiByZXZfbWFwIGwgfmY6cmV2XG47O1xuXG5sZXQgZ3JvdXAgbCB+YnJlYWsgPSBncm91cGkgbCB+YnJlYWs6KGZ1biBfIHggeSAtPiBicmVhayB4IHkpXG5cbmxldCBzb3J0X2FuZF9ncm91cCBsIH5jb21wYXJlID1cbiAgbCB8PiBzdGFibGVfc29ydCB+Y29tcGFyZSB8PiBncm91cCB+YnJlYWs6KGZ1biB4IHkgLT4gY29tcGFyZSB4IHkgPD4gMClcbjs7XG5cbmxldCBjb25jYXRfbWFwIGwgfmYgPVxuICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgaGQgOjogdGwgLT4gYXV4IChyZXZfYXBwZW5kIChmIGhkKSBhY2MpIHRsXG4gIGluXG4gIGF1eCBbXSBsXG47O1xuXG5sZXQgY29uY2F0X21hcGkgbCB+ZiA9XG4gIGxldCByZWMgYXV4IGNvbnQgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHJldiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+IGF1eCAoY29udCArIDEpIChyZXZfYXBwZW5kIChmIGNvbnQgaGQpIGFjYykgdGxcbiAgaW5cbiAgYXV4IDAgW10gbFxuOztcblxubGV0IG1lcmdlIGwxIGwyIH5jb21wYXJlID1cbiAgbGV0IHJlYyBsb29wIGFjYyBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGFjYyBsMlxuICAgIHwgbDEsIFtdIC0+IHJldl9hcHBlbmQgYWNjIGwxXG4gICAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT5cbiAgICAgIGlmIGNvbXBhcmUgaDEgaDIgPD0gMCB0aGVuIGxvb3AgKGgxIDo6IGFjYykgdDEgbDIgZWxzZSBsb29wIChoMiA6OiBhY2MpIGwxIHQyXG4gIGluXG4gIGxvb3AgW10gbDEgbDJcbjs7XG5cbm1vZHVsZSBDYXJ0ZXNpYW5fcHJvZHVjdCA9IHN0cnVjdFxuICAoKiBXZSBhcmUgZXhwbGljaXQgYWJvdXQgd2hhdCB3ZSBleHBvcnQgZnJvbSBmdW5jdG9ycyBzbyB0aGF0IHdlIGRvbid0IGFjY2lkZW50YWxseVxuICAgICByZWJpbmQgbW9yZSBlZmZpY2llbnQgbGlzdC1zcGVjaWZpYyBmdW5jdGlvbnMuICopXG5cbiAgbGV0IGJpbmQgPSBjb25jYXRfbWFwXG4gIGxldCBtYXAgPSBtYXBcbiAgbGV0IG1hcDIgYSBiIH5mID0gY29uY2F0X21hcCBhIH5mOihmdW4geCAtPiBtYXAgYiB+ZjooZnVuIHkgLT4gZiB4IHkpKVxuICBsZXQgcmV0dXJuIHggPSBbIHggXVxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG5cbiAgb3BlbiBzdHJ1Y3RcbiAgICBtb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlX3VzaW5nX21hcDIgKHN0cnVjdFxuICAgICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgICAgICAgbGV0IG1hcDIgPSBtYXAyXG4gICAgICBlbmQpXG5cbiAgICBtb2R1bGUgTW9uYWQgPSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG4gICAgICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICAgICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gICAgICAgIGxldCBiaW5kID0gYmluZFxuICAgICAgZW5kKVxuICBlbmRcblxuICBsZXQgYWxsID0gTW9uYWQuYWxsXG4gIGxldCBhbGxfdW5pdCA9IE1vbmFkLmFsbF91bml0XG4gIGxldCBpZ25vcmVfbSA9IE1vbmFkLmlnbm9yZV9tXG4gIGxldCBqb2luID0gTW9uYWQuam9pblxuXG4gIG1vZHVsZSBNb25hZF9pbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGxldCAoID4+PSApID0gKCA+Pj0gKVxuICBlbmRcblxuICBsZXQgYXBwbHkgPSBBcHBsaWNhdGl2ZS5hcHBseVxuICBsZXQgYm90aCA9IEFwcGxpY2F0aXZlLmJvdGhcbiAgbGV0IG1hcDMgPSBBcHBsaWNhdGl2ZS5tYXAzXG4gIGxldCAoIDwqPiApID0gQXBwbGljYXRpdmUuKCA8Kj4gKVxuICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gIGxldCAoIDwqICkgPSBBcHBsaWNhdGl2ZS4oIDwqIClcblxuICBtb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA8Kj4gKSA9IEFwcGxpY2F0aXZlLiggPCo+IClcbiAgICBsZXQgKCAqPiApID0gQXBwbGljYXRpdmUuKCAqPiApXG4gICAgbGV0ICggPCogKSA9IEFwcGxpY2F0aXZlLiggPCogKVxuICBlbmRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3QgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKENhcnRlc2lhbl9wcm9kdWN0IDogTW9uYWQuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG4oKiogcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdF9leG4gbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFsgeCBdIC0+IHhcbiAgfCBfIDo6IHRsIC0+IGxhc3RfZXhuIHRsXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJMaXN0Lmxhc3RcIlxuOztcblxuKCoqIG9wdGlvbmFsbHkgcmV0dXJucyBmaW5hbCBlbGVtZW50IG9mIGxpc3QgKilcbmxldCByZWMgbGFzdCBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgWyB4IF0gLT4gU29tZSB4XG4gIHwgXyA6OiB0bCAtPiBsYXN0IHRsXG4gIHwgW10gLT4gTm9uZVxuOztcblxubGV0IHJlYyBpc19wcmVmaXggbGlzdCB+cHJlZml4IH5lcXVhbCA9XG4gIG1hdGNoIHByZWZpeCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IGhkIDo6IHRsIC0+XG4gICAgKG1hdGNoIGxpc3Qgd2l0aFxuICAgICB8IFtdIC0+IGZhbHNlXG4gICAgIHwgaGQnIDo6IHRsJyAtPiBlcXVhbCBoZCBoZCcgJiYgaXNfcHJlZml4IHRsJyB+cHJlZml4OnRsIH5lcXVhbClcbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBhMSA6OiB0IC0+XG4gICAgbGV0IHJlYyBsb29wIGExIHQgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFtdIC0+IE5vbmVcbiAgICAgIHwgYTIgOjogdCAtPiBpZiBlcXVhbCBhMSBhMiB0aGVuIFNvbWUgKGExLCBhMikgZWxzZSBsb29wIGEyIHRcbiAgICBpblxuICAgIGxvb3AgYTEgdFxuOztcblxuKCogcmV0dXJucyBsaXN0IHdpdGhvdXQgYWRqYWNlbnQgZHVwbGljYXRlcyAqKVxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzID8od2hpY2hfdG9fa2VlcCA9IGBMYXN0KSBsaXN0IH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCB0b19rZWVwIGFjY3VtID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IHRvX2tlZXAgOjogYWNjdW1cbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBlcXVhbCBoZCB0b19rZWVwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRvX2tlZXAgPVxuICAgICAgICAgIG1hdGNoIHdoaWNoX3RvX2tlZXAgd2l0aFxuICAgICAgICAgIHwgYEZpcnN0IC0+IHRvX2tlZXBcbiAgICAgICAgICB8IGBMYXN0IC0+IGhkXG4gICAgICAgIGluXG4gICAgICAgIGxvb3AgdG9fa2VlcCBhY2N1bSB0bClcbiAgICAgIGVsc2UgbG9vcCBoZCAodG9fa2VlcCA6OiBhY2N1bSkgdGxcbiAgaW5cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiByZXYgKGxvb3AgaGQgW10gdGwpXG47O1xuXG4oKiogcmV0dXJucyBzb3J0ZWQgdmVyc2lvbiBvZiBsaXN0IHdpdGggZHVwbGljYXRlcyByZW1vdmVkICopXG5sZXQgZGVkdXBfYW5kX3NvcnQgbGlzdCB+Y29tcGFyZSA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIHwgWyBfIF0gLT4gbGlzdCAoKiBwZXJmb3JtYW5jZSBoYWNrICopXG4gIHwgXyAtPlxuICAgIGxldCBlcXVhbCB4IHgnID0gY29tcGFyZSB4IHgnID0gMCBpblxuICAgIGxldCBzb3J0ZWQgPSBzb3J0IH5jb21wYXJlIGxpc3QgaW5cbiAgICByZW1vdmVfY29uc2VjdXRpdmVfZHVwbGljYXRlcyB+ZXF1YWwgc29ydGVkXG47O1xuXG5sZXQgZmluZF9hX2R1cCBsIH5jb21wYXJlID1cbiAgbGV0IHNvcnRlZCA9IHNvcnQgbCB+Y29tcGFyZSBpblxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IE5vbmVcbiAgICB8IGhkMSA6OiAoaGQyIDo6IF8gYXMgdGwpIC0+IGlmIGNvbXBhcmUgaGQxIGhkMiA9IDAgdGhlbiBTb21lIGhkMSBlbHNlIGxvb3AgdGxcbiAgaW5cbiAgbG9vcCBzb3J0ZWRcbjs7XG5cbmxldCBjb250YWluc19kdXAgbHN0IH5jb21wYXJlID1cbiAgbWF0Y2ggZmluZF9hX2R1cCBsc3QgfmNvbXBhcmUgd2l0aFxuICB8IFNvbWUgXyAtPiB0cnVlXG4gIHwgTm9uZSAtPiBmYWxzZVxuOztcblxubGV0IGZpbmRfYWxsX2R1cHMgbCB+Y29tcGFyZSA9XG4gICgqIFdlIGFkZCB0aGlzIHJldmVyc2FsLCBzbyB3ZSBjYW4gc2tpcCBhIFtyZXZdIGF0IHRoZSBlbmQuIFdlIGNvdWxkIHNraXBcbiAgICAgW3Jldl0gYW55d2F5IHNpbmNlIHdlIGRvbiBub3QgZ2l2ZSBhbnkgb3JkZXJpbmcgZ3VhcmFudGVlcywgYnV0IGl0IGlzXG4gICAgIG5pY2UgdG8gZ2V0IHJlc3VsdHMgaW4gbmF0dXJhbCBvcmRlci4gKilcbiAgbGV0IGNvbXBhcmUgYSBiID0gLTEgKiBjb21wYXJlIGEgYiBpblxuICBsZXQgc29ydGVkID0gc29ydCB+Y29tcGFyZSBsIGluXG4gICgqIFdhbGsgdGhlIGxpc3QgYW5kIHJlY29yZCB0aGUgZmlyc3Qgb2YgZWFjaCBjb25zZWN1dGl2ZSBydW4gb2YgaWRlbnRpY2FsIGVsZW1lbnRzICopXG4gIGxldCByZWMgbG9vcCBzb3J0ZWQgcHJldiB+YWxyZWFkeV9yZWNvcmRlZCBhY2MgPVxuICAgIG1hdGNoIHNvcnRlZCB3aXRoXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBpZiBjb21wYXJlIHByZXYgaGQgPD4gMFxuICAgICAgdGhlbiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIGFjY1xuICAgICAgZWxzZSBpZiBhbHJlYWR5X3JlY29yZGVkXG4gICAgICB0aGVuIGxvb3AgdGwgaGQgfmFscmVhZHlfcmVjb3JkZWQ6dHJ1ZSBhY2NcbiAgICAgIGVsc2UgbG9vcCB0bCBoZCB+YWxyZWFkeV9yZWNvcmRlZDp0cnVlIChoZCA6OiBhY2MpXG4gIGluXG4gIG1hdGNoIHNvcnRlZCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGhkIH5hbHJlYWR5X3JlY29yZGVkOmZhbHNlIFtdXG47O1xuXG5sZXQgcmVjIGFsbF9lcXVhbF90byB0IHYgfmVxdWFsID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gdHJ1ZVxuICB8IHggOjogeHMgLT4gZXF1YWwgeCB2ICYmIGFsbF9lcXVhbF90byB4cyB2IH5lcXVhbFxuOztcblxubGV0IGFsbF9lcXVhbCB0IH5lcXVhbCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCB4IDo6IHhzIC0+IGlmIGFsbF9lcXVhbF90byB4cyB4IH5lcXVhbCB0aGVuIFNvbWUgeCBlbHNlIE5vbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG5sZXQgY291bnRpIHQgfmYgPVxuICBmb2xkaSB0IH5pbml0OjAgfmY6KGZ1biBpZHggY291bnQgYSAtPiBpZiBmIGlkeCBhIHRoZW4gY291bnQgKyAxIGVsc2UgY291bnQpXG47O1xuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJMaXN0LmluaXQgJWRcIiBuICgpO1xuICBsZXQgcmVjIGxvb3AgaSBhY2N1bSA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIGkgPSAwIHRoZW4gYWNjdW0gZWxzZSBsb29wIChpIC0gMSkgKGYgKGkgLSAxKSA6OiBhY2N1bSlcbiAgaW5cbiAgbG9vcCBuIFtdXG47O1xuXG5sZXQgcmV2X2ZpbHRlcl9tYXAgbCB+ZiA9XG4gIGxldCByZWMgbG9vcCBsIGFjY3VtID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgKG1hdGNoIGYgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgdGwgKHggOjogYWNjdW0pXG4gICAgICAgfCBOb25lIC0+IGxvb3AgdGwgYWNjdW0pXG4gIGluXG4gIGxvb3AgbCBbXVxuOztcblxubGV0IGZpbHRlcl9tYXAgbCB+ZiA9IHJldiAocmV2X2ZpbHRlcl9tYXAgbCB+ZilcblxubGV0IHJldl9maWx0ZXJfbWFwaSBsIH5mID1cbiAgbGV0IHJlYyBsb29wIGkgbCBhY2N1bSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBhY2N1bVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBmIGkgaGQgd2l0aFxuICAgICAgIHwgU29tZSB4IC0+IGxvb3AgKGkgKyAxKSB0bCAoeCA6OiBhY2N1bSlcbiAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIHRsIGFjY3VtKVxuICBpblxuICBsb29wIDAgbCBbXVxuOztcblxubGV0IGZpbHRlcl9tYXBpIGwgfmYgPSByZXYgKHJldl9maWx0ZXJfbWFwaSBsIH5mKVxubGV0IGZpbHRlcl9vcHQgbCA9IGZpbHRlcl9tYXAgbCB+ZjpGbi5pZFxuXG5sZXQgcGFydGl0aW9uM19tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IGZzdCBzbmQgdHJkID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IHJldiBmc3QsIHJldiBzbmQsIHJldiB0cmRcbiAgICB8IHggOjogdCAtPlxuICAgICAgKG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBgRnN0IHkgLT4gbG9vcCB0ICh5IDo6IGZzdCkgc25kIHRyZFxuICAgICAgIHwgYFNuZCB5IC0+IGxvb3AgdCBmc3QgKHkgOjogc25kKSB0cmRcbiAgICAgICB8IGBUcmQgeSAtPiBsb29wIHQgZnN0IHNuZCAoeSA6OiB0cmQpKVxuICBpblxuICBsb29wIHQgW10gW10gW11cbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCBmIHggOiBfIEVpdGhlci50ID0gaWYgZiB4IHRoZW4gRmlyc3QgeCBlbHNlIFNlY29uZCB4IGluXG4gIHBhcnRpdGlvbl9tYXAgdCB+ZlxuOztcblxubGV0IHBhcnRpdGlvbl9yZXN1bHQgdCA9IHBhcnRpdGlvbl9tYXAgdCB+ZjpSZXN1bHQudG9fZWl0aGVyXG5cbm1vZHVsZSBBc3NvYyA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EgKiAnYikgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzAyMl8gPSBcImxpc3QubWwuQXNzb2MudFwiIGluXG4gICAgZnVuIF9vZl9hX18wMTRfIF9vZl9iX18wMTVfIHhfXzAyM18gLT5cbiAgICAgIGxpc3Rfb2Zfc2V4cFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzAxN187IGFyZzFfXzAxOF8gXSAtPlxuICAgICAgICAgICAgbGV0IHJlczBfXzAxOV8gPSBfb2ZfYV9fMDE0XyBhcmcwX18wMTdfXG4gICAgICAgICAgICBhbmQgcmVzMV9fMDIwXyA9IF9vZl9iX18wMTVfIGFyZzFfXzAxOF8gaW5cbiAgICAgICAgICAgIHJlczBfXzAxOV8sIHJlczFfXzAyMF9cbiAgICAgICAgICB8IHNleHBfXzAyMV8gLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjJfXG4gICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgc2V4cF9fMDIxXylcbiAgICAgICAgeF9fMDIzX1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfYV9fMDI0XyBfb2ZfYl9fMDI1XyB4X18wMzBfIC0+XG4gICAgICBzZXhwX29mX2xpc3RcbiAgICAgICAgKGZ1biAoYXJnMF9fMDI2XywgYXJnMV9fMDI3XykgLT5cbiAgICAgICAgICAgbGV0IHJlczBfXzAyOF8gPSBfb2ZfYV9fMDI0XyBhcmcwX18wMjZfXG4gICAgICAgICAgIGFuZCByZXMxX18wMjlfID0gX29mX2JfXzAyNV8gYXJnMV9fMDI3XyBpblxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wMjhfOyByZXMxX18wMjlfIF0pXG4gICAgICAgIHhfXzAzMF9cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gICAgICBsaXN0X3NleHBfZ3JhbW1hclxuICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgTGlzdCAoQ29ucyAoXydhX3NleHBfZ3JhbW1hci51bnR5cGVkLCBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSkpXG4gICAgICAgIH1cbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIGxldCBwYWlyX29mX2dyb3VwID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgKGssIF8pIDo6IF8gYXMgbGlzdCAtPiBrLCBtYXAgbGlzdCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ3JvdXAgYWxpc3QgfmVxdWFsID1cbiAgICBncm91cCBhbGlzdCB+YnJlYWs6KGZ1biAoeCwgXykgKHksIF8pIC0+IG5vdCAoZXF1YWwgeCB5KSkgfD4gbWFwIH5mOnBhaXJfb2ZfZ3JvdXBcbiAgOztcblxuICBsZXQgc29ydF9hbmRfZ3JvdXAgYWxpc3QgfmNvbXBhcmUgPVxuICAgIHNvcnRfYW5kX2dyb3VwIGFsaXN0IH5jb21wYXJlOihmdW4gKHgsIF8pICh5LCBfKSAtPiBjb21wYXJlIHggeSlcbiAgICB8PiBtYXAgfmY6cGFpcl9vZl9ncm91cFxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5mOihmdW4gKGtleScsIF8pIC0+IGVxdWFsIGtleSBrZXknKSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIChzbmQgeClcbiAgOztcblxuICBsZXQgZmluZF9leG4gPVxuICAgIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIkxpc3QuQXNzb2MuZmluZF9leG46IG5vdCBmb3VuZFwiKSBpblxuICAgIGxldCBmaW5kX2V4biB0IH5lcXVhbCBrZXkgPVxuICAgICAgbWF0Y2ggZmluZCB0IGtleSB+ZXF1YWwgd2l0aFxuICAgICAgfCBOb25lIC0+IHJhaXNlIG5vdF9mb3VuZFxuICAgICAgfCBTb21lIHZhbHVlIC0+IHZhbHVlXG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgZmluZF9leG5cbiAgOztcblxuICBsZXQgbWVtIHQgfmVxdWFsIGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IH5lcXVhbCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBfIC0+IHRydWVcbiAgOztcblxuICBsZXQgcmVtb3ZlIHQgfmVxdWFsIGtleSA9IGZpbHRlciB0IH5mOihmdW4gKGtleScsIF8pIC0+IG5vdCAoZXF1YWwga2V5IGtleScpKVxuXG4gIGxldCBhZGQgdCB+ZXF1YWwga2V5IHZhbHVlID1cbiAgICAoKiB0aGUgcmVtb3ZlIGRvZXNuJ3QgY2hhbmdlIHRoZSBtYXAgc2VtYW50aWNzLCBidXQga2VlcHMgdGhlIGxpc3Qgc21hbGwgKilcbiAgICAoa2V5LCB2YWx1ZSkgOjogcmVtb3ZlIHQgfmVxdWFsIGtleVxuICA7O1xuXG4gIGxldCBpbnZlcnNlIHQgPSBtYXAgdCB+ZjooZnVuICh4LCB5KSAtPiB5LCB4KVxuICBsZXQgbWFwIHQgfmYgPSBtYXAgdCB+ZjooZnVuIChrZXksIHZhbHVlKSAtPiBrZXksIGYgdmFsdWUpXG5lbmRcblxubGV0IHN1YiBsIH5wb3MgfmxlbiA9XG4gICgqIFdlIHVzZSBbcG9zID4gbGVuZ3RoIGwgLSBsZW5dIHJhdGhlciB0aGFuIFtwb3MgKyBsZW4gPiBsZW5ndGggbF0gdG8gYXZvaWQgdGhlXG4gICAgIHBvc3NpYmlsaXR5IG9mIG92ZXJmbG93LiAqKVxuICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zID4gbGVuZ3RoIGwgLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3Quc3ViXCI7XG4gIHJldlxuICAgIChmb2xkaSBsIH5pbml0OltdIH5mOihmdW4gaSBhY2MgZWwgLT5cbiAgICAgICBpZiBpID49IHBvcyAmJiBpIDwgcG9zICsgbGVuIHRoZW4gZWwgOjogYWNjIGVsc2UgYWNjKSlcbjs7XG5cbmxldCBzcGxpdF9uIHRfb3JpZyBuID1cbiAgaWYgbiA8PSAwXG4gIHRoZW4gW10sIHRfb3JpZ1xuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbiB0IGFjY3VtID1cbiAgICAgIGlmIG4gPSAwXG4gICAgICB0aGVuIHJldiBhY2N1bSwgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IHRfb3JpZywgW10gKCogaW4gdGhpcyBjYXNlLCB0X29yaWcgPSByZXYgYWNjdW0gKilcbiAgICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIChuIC0gMSkgdGwgKGhkIDo6IGFjY3VtKSlcbiAgICBpblxuICAgIGxvb3AgbiB0X29yaWcgW10pXG47O1xuXG4oKiBjb3BpZWQgZnJvbSBbc3BsaXRfbl0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZSB0X29yaWcgbiA9XG4gIGlmIG4gPD0gMFxuICB0aGVuIFtdXG4gIGVsc2UgKFxuICAgIGxldCByZWMgbG9vcCBuIHQgYWNjdW0gPVxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gcmV2IGFjY3VtXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgW10gLT4gdF9vcmlnXG4gICAgICAgIHwgaGQgOjogdGwgLT4gbG9vcCAobiAtIDEpIHRsIChoZCA6OiBhY2N1bSkpXG4gICAgaW5cbiAgICBsb29wIG4gdF9vcmlnIFtdKVxuOztcblxubGV0IHJlYyBkcm9wIHQgbiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IF8gOjogdGwgd2hlbiBuID4gMCAtPiBkcm9wIHRsIChuIC0gMSlcbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBjaHVua3Nfb2YgbCB+bGVuZ3RoID1cbiAgaWYgbGVuZ3RoIDw9IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJMaXN0LmNodW5rc19vZjogRXhwZWN0ZWQgbGVuZ3RoID4gMCwgZ290ICVkXCIgbGVuZ3RoICgpO1xuICBsZXQgcmVjIGF1eCBvZl9sZW5ndGggYWNjIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gcmV2IGFjY1xuICAgIHwgXyA6OiBfIC0+XG4gICAgICBsZXQgc3VibGlzdCwgbCA9IHNwbGl0X24gbCBsZW5ndGggaW5cbiAgICAgIGF1eCBvZl9sZW5ndGggKHN1Ymxpc3QgOjogYWNjKSBsXG4gIGluXG4gIGF1eCBsZW5ndGggW10gbFxuOztcblxubGV0IHNwbGl0X3doaWxlIHhzIH5mID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBoZCA6OiB0bCB3aGVuIGYgaGQgLT4gbG9vcCAoaGQgOjogYWNjKSB0bFxuICAgIHwgdCAtPiByZXYgYWNjLCB0XG4gIGluXG4gIGxvb3AgW10geHNcbjs7XG5cbigqIGNvcGllZCBmcm9tIFtzcGxpdF93aGlsZV0gdG8gYXZvaWQgYWxsb2NhdGluZyBhIHR1cGxlICopXG5sZXQgdGFrZV93aGlsZSB4cyB+ZiA9XG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgd2hlbiBmIGhkIC0+IGxvb3AgKGhkIDo6IGFjYykgdGxcbiAgICB8IF8gLT4gcmV2IGFjY1xuICBpblxuICBsb29wIFtdIHhzXG47O1xuXG5sZXQgcmVjIGRyb3Bfd2hpbGUgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IGhkIDo6IHRsIHdoZW4gZiBoZCAtPiBkcm9wX3doaWxlIHRsIH5mXG4gIHwgdCAtPiB0XG47O1xuXG5sZXQgZHJvcF9sYXN0IHQgPVxuICBtYXRjaCByZXYgdCB3aXRoXG4gIHwgW10gLT4gTm9uZVxuICB8IF8gOjogbHN0IC0+IFNvbWUgKHJldiBsc3QpXG47O1xuXG5sZXQgZHJvcF9sYXN0X2V4biB0ID1cbiAgbWF0Y2ggZHJvcF9sYXN0IHQgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJMaXN0LmRyb3BfbGFzdF9leG46IGVtcHR5IGxpc3RcIlxuICB8IFNvbWUgbHN0IC0+IGxzdFxuOztcblxubGV0IGNhcnRlc2lhbl9wcm9kdWN0IGxpc3QxIGxpc3QyID1cbiAgaWYgaXNfZW1wdHkgbGlzdDJcbiAgdGhlbiBbXVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgbDEgbDIgYWNjdW0gPVxuICAgICAgbWF0Y2ggbDEgd2l0aFxuICAgICAgfCBbXSAtPiBhY2N1bVxuICAgICAgfCBoZCA6OiB0bCAtPiBsb29wIHRsIGwyIChyZXZfYXBwZW5kIChtYXAgfmY6KGZ1biB4IC0+IGhkLCB4KSBsMikgYWNjdW0pXG4gICAgaW5cbiAgICByZXYgKGxvb3AgbGlzdDEgbGlzdDIgW10pKVxuOztcblxubGV0IGNvbmNhdCBsID0gZm9sZF9yaWdodCBsIH5pbml0OltdIH5mOmFwcGVuZFxubGV0IGNvbmNhdF9ub19vcmRlciBsID0gZm9sZCBsIH5pbml0OltdIH5mOihmdW4gYWNjIGwgLT4gcmV2X2FwcGVuZCBsIGFjYylcbmxldCBjb25zIHggbCA9IHggOjogbFxuXG5sZXQgaXNfc29ydGVkIGwgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgICB8IHgxIDo6ICh4MiA6OiBfIGFzIHJlc3QpIC0+IGNvbXBhcmUgeDEgeDIgPD0gMCAmJiBsb29wIHJlc3RcbiAgaW5cbiAgbG9vcCBsXG47O1xuXG5sZXQgaXNfc29ydGVkX3N0cmljdGx5IGwgfmNvbXBhcmUgPVxuICBsZXQgcmVjIGxvb3AgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgICB8IHgxIDo6ICh4MiA6OiBfIGFzIHJlc3QpIC0+IGNvbXBhcmUgeDEgeDIgPCAwICYmIGxvb3AgcmVzdFxuICBpblxuICBsb29wIGxcbjs7XG5cbm1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICBsZXQgKCBAICkgPSBhcHBlbmRcbmVuZFxuXG5sZXQgcGVybXV0ZSA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgbWF0Y2ggbGlzdCB3aXRoXG4gICgqIHNwZWNpYWwgY2FzZXMgdG8gc3BlZWQgdGhpbmdzIHVwIGluIHRyaXZpYWwgY2FzZXMgKilcbiAgfCBbXSB8IFsgXyBdIC0+IGxpc3RcbiAgfCBbIHg7IHkgXSAtPiBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGUgdGhlbiBbIHk7IHggXSBlbHNlIGxpc3RcbiAgfCBfIC0+XG4gICAgbGV0IGFyciA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIEFycmF5X3Blcm11dGUucGVybXV0ZSBhcnIgfnJhbmRvbV9zdGF0ZTtcbiAgICBBcnJheS50b19saXN0IGFyclxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50X2V4biA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgaWYgaXNfZW1wdHkgbGlzdFxuICB0aGVuIGZhaWx3aXRoIFwiTGlzdC5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGxpc3RcIlxuICBlbHNlIG50aF9leG4gbGlzdCAoUmFuZG9tLlN0YXRlLmludCByYW5kb21fc3RhdGUgKGxlbmd0aCBsaXN0KSlcbjs7XG5cbmxldCByYW5kb21fZWxlbWVudCA/KHJhbmRvbV9zdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBsaXN0ID1cbiAgdHJ5IFNvbWUgKHJhbmRvbV9lbGVtZW50X2V4biB+cmFuZG9tX3N0YXRlIGxpc3QpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY29tcGFyZSBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgbGV0IG4gPSBjbXAgeCB5IGluXG4gICAgaWYgbiA9IDAgdGhlbiBjb21wYXJlIGNtcCB4cyB5cyBlbHNlIG5cbjs7XG5cbmxldCBoYXNoX2ZvbGRfdCA9IGhhc2hfZm9sZF9saXN0XG5cbmxldCBlcXVhbCBlcXVhbCB0MSB0MiA9XG4gIGxldCByZWMgbG9vcCB+ZXF1YWwgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBbXSwgW10gLT4gdHJ1ZVxuICAgIHwgeDEgOjogdDEsIHgyIDo6IHQyIC0+IGVxdWFsIHgxIHgyICYmIGxvb3AgfmVxdWFsIHQxIHQyXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGxvb3AgfmVxdWFsIHQxIHQyXG47O1xuXG5sZXQgdHJhbnNwb3NlID1cbiAgbGV0IHJlYyBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHQgY29sdW1uX2FjYyB0cmltbWVkIGZvdW5kX2VtcHR5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFtdIC0+IGNvbHVtbl9hY2MsIHRyaW1tZWQsIGZvdW5kX2VtcHR5XG4gICAgfCBbXSA6OiB0bCAtPiBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHRsIGNvbHVtbl9hY2MgdHJpbW1lZCB0cnVlXG4gICAgfCAoeCA6OiB4cykgOjogdGwgLT5cbiAgICAgIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gdGwgKHggOjogY29sdW1uX2FjYykgKHhzIDo6IHRyaW1tZWQpIGZvdW5kX2VtcHR5XG4gIGluXG4gIGxldCBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgPSBzcGxpdF9vZmZfZmlyc3RfY29sdW1uIHJvd3MgW10gW10gZmFsc2UgaW5cbiAgbGV0IHJlYyBsb29wIHJvd3MgY29sdW1ucyBkb19yZXYgPVxuICAgIG1hdGNoIHNwbGl0X29mZl9maXJzdF9jb2x1bW4gcm93cyB3aXRoXG4gICAgfCBbXSwgW10sIF8gLT4gU29tZSAocmV2IGNvbHVtbnMpXG4gICAgfCBjb2x1bW4sIHRyaW1tZWRfcm93cywgZm91bmRfZW1wdHkgLT5cbiAgICAgIGlmIGZvdW5kX2VtcHR5XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgY29sdW1uID0gaWYgZG9fcmV2IHRoZW4gcmV2IGNvbHVtbiBlbHNlIGNvbHVtbiBpblxuICAgICAgICBsb29wIHRyaW1tZWRfcm93cyAoY29sdW1uIDo6IGNvbHVtbnMpIChub3QgZG9fcmV2KSlcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdIHRydWVcbjs7XG5cbmV4Y2VwdGlvbiBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIG9mIGludCBsaXN0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzXVxuICAgIChmdW5jdGlvblxuICAgICAgfCBUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIGFyZzBfXzAzMV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl9pbnQgYXJnMF9fMDMxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpc3QubWwuVHJhbnNwb3NlX2dvdF9saXN0c19vZl9kaWZmZXJlbnRfbGVuZ3Roc1wiXG4gICAgICAgICAgOyByZXMwX18wMzJfXG4gICAgICAgICAgXVxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCB0cmFuc3Bvc2VfZXhuIGwgPVxuICBtYXRjaCB0cmFuc3Bvc2UgbCB3aXRoXG4gIHwgU29tZSBsIC0+IGxcbiAgfCBOb25lIC0+IHJhaXNlIChUcmFuc3Bvc2VfZ290X2xpc3RzX29mX2RpZmZlcmVudF9sZW5ndGhzIChtYXAgbCB+ZjpsZW5ndGgpKVxuOztcblxubGV0IGludGVyc3BlcnNlIHQgfnNlcCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgeCA6OiB4cyAtPiB4IDo6IGZvbGRfcmlnaHQgeHMgfmluaXQ6W10gfmY6KGZ1biB5IGFjYyAtPiBzZXAgOjogeSA6OiBhY2MpXG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuXG5sZXQgaXNfc3VmZml4IGxpc3QgfnN1ZmZpeCB+ZXF1YWw6ZXF1YWxfZWx0ID1cbiAgbGV0IGxpc3RfbGVuID0gbGVuZ3RoIGxpc3QgaW5cbiAgbGV0IHN1ZmZpeF9sZW4gPSBsZW5ndGggc3VmZml4IGluXG4gIGxpc3RfbGVuID49IHN1ZmZpeF9sZW4gJiYgZXF1YWwgZXF1YWxfZWx0IChkcm9wIGxpc3QgKGxpc3RfbGVuIC0gc3VmZml4X2xlbikpIHN1ZmZpeFxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGFzIG1hbnkgcGxhY2VzIGFzIHBvc3NpYmxlLiBQbGVhc2UgYXZvaWRcbiAgIGFkZGluZyBuZXcgZGVwZW5kZW5jaWVzLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5mb19pbnRmXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuXG5tb2R1bGUgTWVzc2FnZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQ291bGRfbm90X2NvbnN0cnVjdCBvZiBTZXhwLnRcbiAgICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IEV4biBvZiBleG5cbiAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbjAudCBvcHRpb25cbiAgICB8IFRhZ190IG9mIHN0cmluZyAqIHRcbiAgICB8IFRhZ19hcmcgb2Ygc3RyaW5nICogU2V4cC50ICogdFxuICAgIHwgT2ZfbGlzdCBvZiBpbnQgb3B0aW9uICogdCBsaXN0XG4gICAgfCBXaXRoX2JhY2t0cmFjZSBvZiB0ICogc3RyaW5nICgqIGJhY2t0cmFjZSAqKVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBsZXQgcmVjIHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3QgYXJnMF9fMDAxXyAtPlxuICAgICAgICBsZXQgcmVzMF9fMDAyXyA9IFNleHAuc2V4cF9vZl90IGFyZzBfXzAwMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ291bGRfbm90X2NvbnN0cnVjdFwiOyByZXMwX18wMDJfIF1cbiAgICAgIHwgU3RyaW5nIGFyZzBfXzAwM18gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNF8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDNfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlN0cmluZ1wiOyByZXMwX18wMDRfIF1cbiAgICAgIHwgRXhuIGFyZzBfXzAwNV8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNl8gPSBzZXhwX29mX2V4biBhcmcwX18wMDVfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4blwiOyByZXMwX18wMDZfIF1cbiAgICAgIHwgU2V4cCBhcmcwX18wMDdfIC0+XG4gICAgICAgIGxldCByZXMwX18wMDhfID0gU2V4cC5zZXhwX29mX3QgYXJnMF9fMDA3XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTZXhwXCI7IHJlczBfXzAwOF8gXVxuICAgICAgfCBUYWdfc2V4cCAoYXJnMF9fMDA5XywgYXJnMV9fMDEwXywgYXJnMl9fMDExXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAxMl8gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDlfXG4gICAgICAgIGFuZCByZXMxX18wMTNfID0gU2V4cC5zZXhwX29mX3QgYXJnMV9fMDEwX1xuICAgICAgICBhbmQgcmVzMl9fMDE0XyA9IHNleHBfb2Zfb3B0aW9uIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgYXJnMl9fMDExXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ19zZXhwXCI7IHJlczBfXzAxMl87IHJlczFfXzAxM187IHJlczJfXzAxNF8gXVxuICAgICAgfCBUYWdfdCAoYXJnMF9fMDE1XywgYXJnMV9fMDE2XykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAxN18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMTVfXG4gICAgICAgIGFuZCByZXMxX18wMThfID0gc2V4cF9vZl90IGFyZzFfXzAxNl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiVGFnX3RcIjsgcmVzMF9fMDE3XzsgcmVzMV9fMDE4XyBdXG4gICAgICB8IFRhZ19hcmcgKGFyZzBfXzAxOV8sIGFyZzFfXzAyMF8sIGFyZzJfXzAyMV8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMjJfID0gc2V4cF9vZl9zdHJpbmcgYXJnMF9fMDE5X1xuICAgICAgICBhbmQgcmVzMV9fMDIzXyA9IFNleHAuc2V4cF9vZl90IGFyZzFfXzAyMF9cbiAgICAgICAgYW5kIHJlczJfXzAyNF8gPSBzZXhwX29mX3QgYXJnMl9fMDIxXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlRhZ19hcmdcIjsgcmVzMF9fMDIyXzsgcmVzMV9fMDIzXzsgcmVzMl9fMDI0XyBdXG4gICAgICB8IE9mX2xpc3QgKGFyZzBfXzAyNV8sIGFyZzFfXzAyNl8pIC0+XG4gICAgICAgIGxldCByZXMwX18wMjdfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9pbnQgYXJnMF9fMDI1X1xuICAgICAgICBhbmQgcmVzMV9fMDI4XyA9IHNleHBfb2ZfbGlzdCBzZXhwX29mX3QgYXJnMV9fMDI2XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJPZl9saXN0XCI7IHJlczBfXzAyN187IHJlczFfXzAyOF8gXVxuICAgICAgfCBXaXRoX2JhY2t0cmFjZSAoYXJnMF9fMDI5XywgYXJnMV9fMDMwXykgLT5cbiAgICAgICAgbGV0IHJlczBfXzAzMV8gPSBzZXhwX29mX3QgYXJnMF9fMDI5X1xuICAgICAgICBhbmQgcmVzMV9fMDMyXyA9IHNleHBfb2Zfc3RyaW5nIGFyZzFfXzAzMF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiV2l0aF9iYWNrdHJhY2VcIjsgcmVzMF9fMDMxXzsgcmVzMV9fMDMyXyBdXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cblxuICBsZXQgcmVjIHRvX3N0cmluZ3NfaHVtIHQgYWMgPVxuICAgICgqIFdlIHVzZSBbU2V4cC50b19zdHJpbmdfbWFjaF0sIGRlc3BpdGUgdGhlIGZhY3QgdGhhdCB3ZSBhcmUgaW1wbGVtZW50aW5nXG4gICAgICAgW3RvX3N0cmluZ3NfaHVtXSwgYmVjYXVzZSB3ZSB3YW50IHRoZSBpbmZvIHRvIGZpdCBvbiBhIHNpbmdsZSBsaW5lLCBhbmQgb25jZSB3ZSd2ZVxuICAgICAgIGhhZCB0byByZXNvcnQgdG8gc2V4cHMsIHRoZSBtZXNzYWdlIGlzIGdvaW5nIHRvIHN0YXJ0IG5vdCBsb29raW5nIHNvIHByZXR0eVxuICAgICAgIGFueXdheS4gKilcbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IENvdWxkX25vdF9jb25zdHJ1Y3Qgc2V4cCAtPlxuICAgICAgXCJjb3VsZCBub3QgY29uc3RydWN0IGluZm86IFwiIDo6IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgU3RyaW5nIHN0cmluZyAtPiBzdHJpbmcgOjogYWNcbiAgICB8IEV4biBleG4gLT4gU2V4cC50b19zdHJpbmdfbWFjaCAoRXhuLnNleHBfb2ZfdCBleG4pIDo6IGFjXG4gICAgfCBTZXhwIHNleHAgLT4gU2V4cC50b19zdHJpbmdfbWFjaCBzZXhwIDo6IGFjXG4gICAgfCBUYWdfc2V4cCAodGFnLCBzZXhwLCBfKSAtPiB0YWcgOjogXCI6IFwiIDo6IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBhY1xuICAgIHwgVGFnX3QgKHRhZywgdCkgLT4gdGFnIDo6IFwiOiBcIiA6OiB0b19zdHJpbmdzX2h1bSB0IGFjXG4gICAgfCBUYWdfYXJnICh0YWcsIHNleHAsIHQpIC0+XG4gICAgICBsZXQgYm9keSA9IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cCA6OiBcIjogXCIgOjogdG9fc3RyaW5nc19odW0gdCBhYyBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwIHRoZW4gYm9keSBlbHNlIHRhZyA6OiBcIjogXCIgOjogYm9keVxuICAgIHwgV2l0aF9iYWNrdHJhY2UgKHQsIGJhY2t0cmFjZSkgLT5cbiAgICAgIHRvX3N0cmluZ3NfaHVtIHQgKFwiXFxuQmFja3RyYWNlOlxcblwiIDo6IGJhY2t0cmFjZSA6OiBhYylcbiAgICB8IE9mX2xpc3QgKHRydW5jX2FmdGVyLCB0cykgLT5cbiAgICAgIGxldCB0cyA9XG4gICAgICAgIG1hdGNoIHRydW5jX2FmdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHRzXG4gICAgICAgIHwgU29tZSBtYXggLT5cbiAgICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIHRzIGluXG4gICAgICAgICAgaWYgbiA8PSBtYXhcbiAgICAgICAgICB0aGVuIHRzXG4gICAgICAgICAgZWxzZSBMaXN0LnRha2UgdHMgbWF4IEAgWyBTdHJpbmcgKFByaW50Zi5zcHJpbnRmIFwiYW5kICVkIG1vcmUgaW5mb1wiIChuIC0gbWF4KSkgXVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZCAoTGlzdC5yZXYgdHMpIH5pbml0OmFjIH5mOihmdW4gYWMgdCAtPlxuICAgICAgICB0b19zdHJpbmdzX2h1bSB0IChpZiBMaXN0LmlzX2VtcHR5IGFjIHRoZW4gYWMgZWxzZSBcIjsgXCIgOjogYWMpKVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgdCA9IFN0cmluZy5jb25jYXQgKHRvX3N0cmluZ3NfaHVtIHQgW10pXG5cbiAgbGV0IHJlYyB0b19zZXhwc19odW0gdCBhYyA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IF8gYXMgdCAtPiBzZXhwX29mX3QgdCA6OiBhY1xuICAgIHwgU3RyaW5nIHN0cmluZyAtPiBBdG9tIHN0cmluZyA6OiBhY1xuICAgIHwgRXhuIGV4biAtPiBFeG4uc2V4cF9vZl90IGV4biA6OiBhY1xuICAgIHwgU2V4cCBzZXhwIC0+IHNleHAgOjogYWNcbiAgICB8IFRhZ19zZXhwICh0YWcsIHNleHAsIGhlcmUpIC0+XG4gICAgICBMaXN0XG4gICAgICAgIChBdG9tIHRhZ1xuICAgICAgICAgOjogc2V4cFxuICAgICAgICAgOjpcbiAgICAgICAgIChtYXRjaCBoZXJlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgaGVyZSAtPiBbIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3QgaGVyZSBdKSlcbiAgICAgIDo6IGFjXG4gICAgfCBUYWdfdCAodGFnLCB0KSAtPiBMaXN0IChBdG9tIHRhZyA6OiB0b19zZXhwc19odW0gdCBbXSkgOjogYWNcbiAgICB8IFRhZ19hcmcgKHRhZywgc2V4cCwgdCkgLT5cbiAgICAgIGxldCBib2R5ID0gc2V4cCA6OiB0b19zZXhwc19odW0gdCBbXSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB0YWcgPSAwIHRoZW4gTGlzdCBib2R5IDo6IGFjIGVsc2UgTGlzdCAoQXRvbSB0YWcgOjogYm9keSkgOjogYWNcbiAgICB8IFdpdGhfYmFja3RyYWNlICh0LCBiYWNrdHJhY2UpIC0+XG4gICAgICBTZXhwLkxpc3QgWyB0b19zZXhwX2h1bSB0OyBTZXhwLkF0b20gYmFja3RyYWNlIF0gOjogYWNcbiAgICB8IE9mX2xpc3QgKF8sIHRzKSAtPlxuICAgICAgTGlzdC5mb2xkIChMaXN0LnJldiB0cykgfmluaXQ6YWMgfmY6KGZ1biBhYyB0IC0+IHRvX3NleHBzX2h1bSB0IGFjKVxuXG4gIGFuZCB0b19zZXhwX2h1bSB0ID1cbiAgICBtYXRjaCB0b19zZXhwc19odW0gdCBbXSB3aXRoXG4gICAgfCBbIHNleHAgXSAtPiBzZXhwXG4gICAgfCBzZXhwcyAtPiBTZXhwLkxpc3Qgc2V4cHNcbiAgOztcblxuICAoKiBXZSB1c2UgW3Byb3RlY3RdIHRvIGd1YXJkIGFnYWluc3QgZXhjZXB0aW9ucyByYWlzZWQgYnkgdXNlci1zdXBwbGllZCBmdW5jdGlvbnMsIHNvXG4gICAgIHRoYXQgZmFpbHVyZSB0byBwcm9kdWNlIG9uZSBwYXJ0IG9mIGFuIGluZm8gZG9lc24ndCBpbnRlcmZlcmUgd2l0aCBvdGhlciBwYXJ0cy4gKilcbiAgbGV0IHByb3RlY3QgZiA9XG4gICAgdHJ5IGYgKCkgd2l0aFxuICAgIHwgZXhuIC0+IENvdWxkX25vdF9jb25zdHJ1Y3QgKEV4bi5zZXhwX29mX3QgZXhuKVxuICA7O1xuXG4gIGxldCBvZl9pbmZvIGluZm8gPSBwcm90ZWN0IChmdW4gKCkgLT4gTGF6eS5mb3JjZSBpbmZvKVxuICBsZXQgdG9faW5mbyB0ID0gbGF6eSB0XG5lbmRcblxub3BlbiBNZXNzYWdlXG5cbnR5cGUgdCA9IE1lc3NhZ2UudCBMYXp5LnRcblxubGV0IGludmFyaWFudCBfID0gKClcbmxldCB0b19tZXNzYWdlID0gTWVzc2FnZS5vZl9pbmZvXG5sZXQgb2ZfbWVzc2FnZSA9IE1lc3NhZ2UudG9faW5mb1xuXG4oKiBJdCBpcyBPSyB0byB1c2UgW01lc3NhZ2UudG9fc2V4cF9odW1dLCB3aGljaCBpcyBub3Qgc3RhYmxlLCBiZWNhdXNlIFt0X29mX3NleHBdIGJlbG93XG4gICBjYW4gaGFuZGxlIGFueSBzZXhwLiAqKVxubGV0IHNleHBfb2ZfdCB0ID0gTWVzc2FnZS50b19zZXhwX2h1bSAodG9fbWVzc2FnZSB0KVxubGV0IHRfb2Zfc2V4cCBzZXhwID0gbGF6eSAoTWVzc2FnZS5TZXhwIHNleHApXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBBbnkgXCJJbmZvLnRcIiB9XG5sZXQgY29tcGFyZSB0MSB0MiA9IFNleHAuY29tcGFyZSAoc2V4cF9vZl90IHQxKSAoc2V4cF9vZl90IHQyKVxubGV0IGVxdWFsIHQxIHQyID0gU2V4cC5lcXVhbCAoc2V4cF9vZl90IHQxKSAoc2V4cF9vZl90IHQyKVxubGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBTZXhwLmhhc2hfZm9sZF90IHN0YXRlIChzZXhwX29mX3QgdClcbmxldCBoYXNoIHQgPSBIYXNoLnJ1biBoYXNoX2ZvbGRfdCB0XG5cbmxldCB0b19zdHJpbmdfaHVtIHQgPVxuICBtYXRjaCB0b19tZXNzYWdlIHQgd2l0aFxuICB8IFN0cmluZyBzIC0+IHNcbiAgfCBtZXNzYWdlIC0+IFNleHAudG9fc3RyaW5nX2h1bSAoTWVzc2FnZS50b19zZXhwX2h1bSBtZXNzYWdlKVxuOztcblxubGV0IHRvX3N0cmluZ19odW1fZGVwcmVjYXRlZCB0ID0gTWVzc2FnZS50b19zdHJpbmdfaHVtX2RlcHJlY2F0ZWQgKHRvX21lc3NhZ2UgdClcbmxldCB0b19zdHJpbmdfbWFjaCB0ID0gU2V4cC50b19zdHJpbmdfbWFjaCAoc2V4cF9vZl90IHQpXG5sZXQgb2ZfbGF6eSBsID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFN0cmluZyAoTGF6eS5mb3JjZSBsKSkpXG5sZXQgb2ZfbGF6eV9zZXhwIGwgPSBsYXp5IChwcm90ZWN0IChmdW4gKCkgLT4gU2V4cCAoTGF6eS5mb3JjZSBsKSkpXG5sZXQgb2ZfbGF6eV90IGxhenlfdCA9IExhenkuam9pbiBsYXp5X3RcbmxldCBvZl9zdHJpbmcgbWVzc2FnZSA9IExhenkuZnJvbV92YWwgKFN0cmluZyBtZXNzYWdlKVxubGV0IGNyZWF0ZWYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIG9mX3N0cmluZyBmb3JtYXRcbmxldCBvZl90aHVuayBmID0gbGF6eSAocHJvdGVjdCAoZnVuICgpIC0+IFN0cmluZyAoZiAoKSkpKVxuXG5sZXQgY3JlYXRlID9oZXJlID9zdHJpY3QgdGFnIHggc2V4cF9vZl94ID1cbiAgbWF0Y2ggc3RyaWN0IHdpdGhcbiAgfCBOb25lIC0+IGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfc2V4cCAodGFnLCBzZXhwX29mX3ggeCwgaGVyZSkpKVxuICB8IFNvbWUgKCkgLT4gb2ZfbWVzc2FnZSAoVGFnX3NleHAgKHRhZywgc2V4cF9vZl94IHgsIGhlcmUpKVxuOztcblxubGV0IGNyZWF0ZV9zIHNleHAgPSBMYXp5LmZyb21fdmFsIChTZXhwIHNleHApXG5sZXQgdGFnIHQgfnRhZyA9IGxhenkgKFRhZ190ICh0YWcsIHRvX21lc3NhZ2UgdCkpXG5cbmxldCB0YWdfc19sYXp5IHQgfnRhZyA9XG4gIGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfYXJnIChcIlwiLCBMYXp5LmZvcmNlIHRhZywgdG9fbWVzc2FnZSB0KSkpXG47O1xuXG5sZXQgdGFnX3MgdCB+dGFnID0gdGFnX3NfbGF6eSB0IH50YWc6KExhenkuZnJvbV92YWwgdGFnKVxuXG5sZXQgdGFnX2FyZyB0IHRhZyB4IHNleHBfb2ZfeCA9XG4gIGxhenkgKHByb3RlY3QgKGZ1biAoKSAtPiBUYWdfYXJnICh0YWcsIHNleHBfb2ZfeCB4LCB0b19tZXNzYWdlIHQpKSlcbjs7XG5cbmxldCBvZl9saXN0ID90cnVuY19hZnRlciB0cyA9IGxhenkgKE9mX2xpc3QgKHRydW5jX2FmdGVyLCBMaXN0Lm1hcCB0cyB+Zjp0b19tZXNzYWdlKSlcblxuZXhjZXB0aW9uIEV4biBvZiB0XG5cbmxldCAoKSA9XG4gICgqIFdlIGluc3RhbGwgYSBjdXN0b20gZXhuLWNvbnZlcnRlciByYXRoZXIgdGhhbiB1c2VcbiAgICAgW2V4Y2VwdGlvbiBFeG4gb2YgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF0gLi4uIFtAQEBlbmRdXSB0byBlbGltaW5hdGUgdGhlIGV4dHJhXG4gICAgIHdyYXBwaW5nIG9mIFwiKEV4biAuLi4pXCIuICopXG4gIFNleHBsaWIwLlNleHBfY29udi5FeG5fY29udmVydGVyLmFkZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBFeG5dIChmdW5jdGlvblxuICAgIHwgRXhuIHQgLT4gc2V4cF9vZl90IHRcbiAgICB8IF8gLT5cbiAgICAgICgqIFJlYWNoaW5nIHRoaXMgYnJhbmNoIGluZGljYXRlcyBhIGJ1ZyBpbiBzZXhwbGliLiAqKVxuICAgICAgYXNzZXJ0IGZhbHNlKVxuOztcblxubGV0IHRvX2V4biB0ID1cbiAgaWYgbm90IChMYXp5LmlzX3ZhbCB0KVxuICB0aGVuIEV4biB0XG4gIGVsc2UgKFxuICAgIG1hdGNoIExhenkuZm9yY2UgdCB3aXRoXG4gICAgfCBNZXNzYWdlLkV4biBleG4gLT4gZXhuXG4gICAgfCBfIC0+IEV4biB0KVxuOztcblxubGV0IG9mX2V4biA/YmFja3RyYWNlIGV4biA9XG4gIGxldCBiYWNrdHJhY2UgPVxuICAgIG1hdGNoIGJhY2t0cmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYEdldCAtPiBTb21lIChDYW1sLlByaW50ZXhjLmdldF9iYWNrdHJhY2UgKCkpXG4gICAgfCBTb21lIChgVGhpcyBzKSAtPiBTb21lIHNcbiAgaW5cbiAgbWF0Y2ggZXhuLCBiYWNrdHJhY2Ugd2l0aFxuICB8IEV4biB0LCBOb25lIC0+IHRcbiAgfCBFeG4gdCwgU29tZSBiYWNrdHJhY2UgLT4gbGF6eSAoV2l0aF9iYWNrdHJhY2UgKHRvX21lc3NhZ2UgdCwgYmFja3RyYWNlKSlcbiAgfCBfLCBOb25lIC0+IExhenkuZnJvbV92YWwgKE1lc3NhZ2UuRXhuIGV4bilcbiAgfCBfLCBTb21lIGJhY2t0cmFjZSAtPiBsYXp5IChXaXRoX2JhY2t0cmFjZSAoU2V4cCAoRXhuLnNleHBfb2ZfdCBleG4pLCBiYWNrdHJhY2UpKVxuOztcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbmZvXCJcbiAgICBsZXQgcHAgcHBmIHQgPSBDYW1sLkZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmdfaHVtIHQpXG4gIGVuZClcblxubW9kdWxlIEludGVybmFsX3JlcHIgPSBNZXNzYWdlXG5cbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0Vycm9yXSBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIHZhcmlvdXMgcGxhY2VzLiAgUGxlYXNlIGF2b2lkIGFkZGluZyBuZXdcbiAgIGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIEluZm9cblxubGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IEFueSBcIkVycm9yLnRcIiB9XG5sZXQgcmFpc2UgdCA9IHJhaXNlICh0b19leG4gdClcbmxldCByYWlzZV9zIHNleHAgPSByYWlzZSAoY3JlYXRlX3Mgc2V4cClcbmxldCB0b19pbmZvIHQgPSB0XG5sZXQgb2ZfaW5mbyB0ID0gdFxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyX3BwIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkVycm9yXCJcbiAgICBsZXQgcHAgPSBwcFxuICBlbmQpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSW52YXJpYW50X2ludGZcblxubGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbmxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmIDogdW5pdCA9XG4gIHRyeSBmICgpIHdpdGhcbiAgfCBleG4gLT5cbiAgICByYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIlxuICAgICAgICAgWyBcIlwiLCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90IGhlcmVcbiAgICAgICAgIDsgXCJleG5cIiwgc2V4cF9vZl9leG4gZXhuXG4gICAgICAgICA7IFwiXCIsIHNleHBfb2ZfdCB0XG4gICAgICAgICBdKVxuOztcblxubGV0IGNoZWNrX2ZpZWxkIHQgZiBmaWVsZCA9XG4gIHRyeSBmIChGaWVsZC5nZXQgZmllbGQgdCkgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwicHJvYmxlbSB3aXRoIGZpZWxkXCJcbiAgICAgICAgIFsgXCJmaWVsZFwiLCBzZXhwX29mX3N0cmluZyAoRmllbGQubmFtZSBmaWVsZCk7IFwiZXhuXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbiAgUmVzdWx0IDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFJlc3VsdFxuICBlbmRcbiAgd2l0aCBtb2R1bGUgRXJyb3IgOj0gUmVzdWx0LkVycm9yKVxuXG50eXBlICdhIHQgPSAoJ2EsIEVycm9yLnQpIFJlc3VsdC50XG5bQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPiBSZXN1bHQuY29tcGFyZSBfY21wX19hIEVycm9yLmNvbXBhcmUgYV9fMDAxXyBiX18wMDJfXG47O1xuXG5sZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+IFJlc3VsdC5lcXVhbCBfY21wX19hIEVycm9yLmVxdWFsIGFfXzAwN18gYl9fMDA4X1xuOztcblxubGV0IGhhc2hfZm9sZF90IDpcbiAgJ2EuXG4gIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgLT4gJ2EgdFxuICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgPVxuICBmdW4gX2hhc2hfZm9sZF9hIGhzdiBhcmcgLT4gUmVzdWx0Lmhhc2hfZm9sZF90IF9oYXNoX2ZvbGRfYSBFcnJvci5oYXNoX2ZvbGRfdCBoc3YgYXJnXG47O1xuXG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID1cbiAgZnVuIF9vZl9hX18wMTNfIHhfXzAxNV8gLT4gUmVzdWx0LnRfb2Zfc2V4cCBfb2ZfYV9fMDEzXyBFcnJvci50X29mX3NleHAgeF9fMDE1X1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE2XyB4X18wMTdfIC0+IFJlc3VsdC5zZXhwX29mX3QgX29mX2FfXzAxNl8gRXJyb3Iuc2V4cF9vZl90IHhfXzAxN19cbjs7XG5cbmxldCAodF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IFJlc3VsdC50X3NleHBfZ3JhbW1hciBfJ2Ffc2V4cF9ncmFtbWFyIEVycm9yLnRfc2V4cF9ncmFtbWFyXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBPayBhIC0+IGludmFyaWFudF9hIGFcbiAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5pbnZhcmlhbnQgZXJyb3Jcbjs7XG5cbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBhcHBseSBmIHggPVxuICAgICAgUmVzdWx0LmNvbWJpbmUgZiB4IH5vazooZnVuIGYgeCAtPiBmIHgpIH5lcnI6KGZ1biBlMSBlMiAtPiBFcnJvci5vZl9saXN0IFsgZTE7IGUyIF0pXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSByZXR1cm5cblxuICBpbmNsdWRlIE1vbmFkX2luZml4XG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuXG4gICAgKCogZnJvbSBBcHBsaWNhdGl2ZS5NYWtlICopXG4gICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0IGVuZFxuICBlbmRcbmVuZFxuXG5sZXQgb2sgPSBSZXN1bHQub2tcbmxldCBpc19vayA9IFJlc3VsdC5pc19va1xubGV0IGlzX2Vycm9yID0gUmVzdWx0LmlzX2Vycm9yXG5cbmxldCB0cnlfd2l0aCA/KGJhY2t0cmFjZSA9IGZhbHNlKSBmID1cbiAgdHJ5IE9rIChmICgpKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuID9iYWNrdHJhY2U6KGlmIGJhY2t0cmFjZSB0aGVuIFNvbWUgYEdldCBlbHNlIE5vbmUpKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2JhY2t0cmFjZSBmID0gam9pbiAodHJ5X3dpdGggP2JhY2t0cmFjZSBmKVxuXG5sZXQgb2tfZXhuID0gZnVuY3Rpb25cbiAgfCBPayB4IC0+IHhcbiAgfCBFcnJvciBlcnIgLT4gRXJyb3IucmFpc2UgZXJyXG47O1xuXG5sZXQgb2ZfZXhuID9iYWNrdHJhY2UgZXhuID0gRXJyb3IgKEVycm9yLm9mX2V4biA/YmFja3RyYWNlIGV4bilcblxubGV0IG9mX2V4bl9yZXN1bHQgP2JhY2t0cmFjZSA9IGZ1bmN0aW9uXG4gIHwgT2sgXyBhcyB6IC0+IHpcbiAgfCBFcnJvciBleG4gLT4gb2ZfZXhuID9iYWNrdHJhY2UgZXhuXG47O1xuXG5sZXQgZXJyb3IgP2hlcmUgP3N0cmljdCBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgRXJyb3IgKEVycm9yLmNyZWF0ZSA/aGVyZSA/c3RyaWN0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgZXJyb3JfcyBzZXhwID0gRXJyb3IgKEVycm9yLmNyZWF0ZV9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1lc3NhZ2UgPSBFcnJvciAoRXJyb3Iub2Zfc3RyaW5nIG1lc3NhZ2UpXG5sZXQgZXJyb3JmIGZvcm1hdCA9IFByaW50Zi5rc3ByaW50ZiBlcnJvcl9zdHJpbmcgZm9ybWF0XG5sZXQgdGFnIHQgfnRhZyA9IFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooRXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfcyB+dGFnKVxubGV0IHRhZ19zX2xhenkgdCB+dGFnID0gUmVzdWx0Lm1hcF9lcnJvciB0IH5mOihFcnJvci50YWdfc19sYXp5IH50YWcpXG5cbmxldCB0YWdfYXJnIHQgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFJlc3VsdC5tYXBfZXJyb3IgdCB+ZjooZnVuIGUgLT4gRXJyb3IudGFnX2FyZyBlIG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBzID0gZXJyb3IgXCJ1bmltcGxlbWVudGVkXCIgcyBzZXhwX29mX3N0cmluZ1xubGV0IGNvbWJpbmVfZXJyb3JzIGwgPSBSZXN1bHQubWFwX2Vycm9yIChSZXN1bHQuY29tYmluZV9lcnJvcnMgbCkgfmY6RXJyb3Iub2ZfbGlzdFxubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IFJlc3VsdC5tYXAgKGNvbWJpbmVfZXJyb3JzIGwpIH5mOihmdW4gKF8gOiB1bml0IGxpc3QpIC0+ICgpKVxuXG5sZXQgZmlsdGVyX29rX2F0X2xlYXN0X29uZSBsID1cbiAgbGV0IG9rLCBlcnJzID0gTGlzdC5wYXJ0aXRpb25fbWFwIGwgfmY6UmVzdWx0LnRvX2VpdGhlciBpblxuICBtYXRjaCBvayB3aXRoXG4gIHwgW10gLT4gRXJyb3IgKEVycm9yLm9mX2xpc3QgZXJycylcbiAgfCBfIC0+IE9rIG9rXG47O1xuXG5sZXQgZmluZF9vayBsID1cbiAgbWF0Y2ggTGlzdC5maW5kX21hcCBsIH5mOlJlc3VsdC5vayB3aXRoXG4gIHwgU29tZSB4IC0+IE9rIHhcbiAgfCBOb25lIC0+XG4gICAgRXJyb3JcbiAgICAgIChFcnJvci5vZl9saXN0XG4gICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgT2sgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IGVycikpKVxuOztcblxubGV0IGZpbmRfbWFwX29rIGwgfmYgPVxuICBXaXRoX3JldHVybi53aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICBFcnJvclxuICAgICAgKEVycm9yLm9mX2xpc3RcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW4gZWx0IC0+XG4gICAgICAgICAgICBtYXRjaCBmIGVsdCB3aXRoXG4gICAgICAgICAgICB8IE9rIF8gYXMgeCAtPiByZXR1cm4geFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyKSkpKVxuOztcblxubGV0IG1hcCA9IFJlc3VsdC5tYXBcbmxldCBpdGVyID0gUmVzdWx0Lml0ZXJcbmxldCBpdGVyX2Vycm9yID0gUmVzdWx0Lml0ZXJfZXJyb3JcbiIsIigqIFRoaXMgaXMgYnJva2VuIG9mZiB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5IGJldHdlZW4gU2lnbiBhbmQgQ29tcGFyYWJsZS4gKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgTmVnXG4gIHwgWmVyb1xuICB8IFBvc1xuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgZW51bWVyYXRlXVxuXG5sZXQgdF9vZl9zZXhwID1cbiAgKGxldCBlcnJvcl9zb3VyY2VfXzAwM18gPSBcInNpZ24wLm1sLnRcIiBpblxuICAgZnVuY3Rpb25cbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5lZ1wiIHwgXCJOZWdcIikgLT4gTmVnXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJ6ZXJvXCIgfCBcIlplcm9cIikgLT4gWmVyb1xuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJwb3NcIiB8IFwiUG9zXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDJfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICB8IHNleHBfXzAwMl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDAyX1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG47O1xuXG5sZXQgc2V4cF9vZl90ID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICB8IFplcm8gLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiWmVyb1wiXG4gICAgfCBQb3MgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUG9zXCJcbiAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlBvc1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5sZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbmxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgKGZ1biBoc3YgYXJnIC0+XG4gICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgIHwgTmVnIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMFxuICAgICB8IFplcm8gLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAxXG4gICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgbGV0IGZ1bmMgYXJnID1cbiAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgIGhhc2hfZm9sZF90IGhzdiBhcmcpXG4gIGluXG4gIGZ1biB4IC0+IGZ1bmMgeFxuOztcblxubGV0IGFsbCA9IChbIE5lZzsgWmVybzsgUG9zIF0gOiB0IGxpc3QpXG5cbltAQEBlbmRdXG5cbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogdCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiB0KSB5ID0gUG9seS4oIDw9ICkgeCB5XG4gIGxldCAoIDw+ICkgKHggOiB0KSB5ID0gUG9seS4oIDw+ICkgeCB5XG4gIGxldCAoID0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiB0KSB5ID0gUG9seS4oID4gKSB4IHlcbiAgbGV0ICggPj0gKSAoeCA6IHQpIHkgPSBQb2x5LiggPj0gKSB4IHlcbiAgbGV0IGFzY2VuZGluZyAoeCA6IHQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiB0KSB5ID0gUG9seS5kZXNjZW5kaW5nIHggeVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBQb2x5LmNvbXBhcmUgeCB5XG4gIGxldCBlcXVhbCAoeCA6IHQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG4gIGxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5sZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG5sZXQgdG9fc3RyaW5nIHQgPSBzdHJpbmdfb2Zfc2V4cCAoc2V4cF9vZl90IHQpXG5cbmxldCB0b19pbnQgPSBmdW5jdGlvblxuICB8IE5lZyAtPiAtMVxuICB8IFplcm8gLT4gMFxuICB8IFBvcyAtPiAxXG47O1xuXG5sZXQgXyA9IGhhc2hcblxuKCogSWdub3JlIHRoZSBoYXNoIGZ1bmN0aW9uIHByb2R1Y2VkIGJ5IFtAQGRlcml2aW5nX2lubGluZSBoYXNoXSAqKVxubGV0IGhhc2ggPSB0b19pbnRcbmxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5TaWduXCJcbmxldCBvZl9pbnQgbiA9IGlmIG4gPCAwIHRoZW4gTmVnIGVsc2UgaWYgbiA9IDAgdGhlbiBaZXJvIGVsc2UgUG9zXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQ29tcGFyYWJsZV9pbnRmXG5cbm1vZHVsZSBXaXRoX3plcm8gKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB6ZXJvIDogdFxuICBlbmQpID1cbnN0cnVjdFxuICBvcGVuIFRcblxuICBsZXQgaXNfcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvID4gMFxuICBsZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSBjb21wYXJlIHQgemVybyA+PSAwXG4gIGxldCBpc19uZWdhdGl2ZSB0ID0gY29tcGFyZSB0IHplcm8gPCAwXG4gIGxldCBpc19ub25fcG9zaXRpdmUgdCA9IGNvbXBhcmUgdCB6ZXJvIDw9IDBcbiAgbGV0IHNpZ24gdCA9IFNpZ24wLm9mX2ludCAoY29tcGFyZSB0IHplcm8pXG5lbmRcblxubW9kdWxlIFBvbHkgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBQb2x5XG4gIGVuZFxuXG4gIGluY2x1ZGUgUG9seVxuXG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuXG4gIG1vZHVsZSBDID0gc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSlcbiAgZW5kXG5cbiAgaW5jbHVkZSBDXG5lbmRcblxubGV0IGd0IGNtcCBhIGIgPSBjbXAgYSBiID4gMFxubGV0IGx0IGNtcCBhIGIgPSBjbXAgYSBiIDwgMFxubGV0IGdlcSBjbXAgYSBiID0gY21wIGEgYiA+PSAwXG5sZXQgbGVxIGNtcCBhIGIgPSBjbXAgYSBiIDw9IDBcbmxldCBlcXVhbCBjbXAgYSBiID0gY21wIGEgYiA9IDBcbmxldCBub3RfZXF1YWwgY21wIGEgYiA9IGNtcCBhIGIgPD4gMFxubGV0IG1pbiBjbXAgdCB0JyA9IGlmIGxlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xubGV0IG1heCBjbXAgdCB0JyA9IGlmIGdlcSBjbXAgdCB0JyB0aGVuIHQgZWxzZSB0J1xuXG5tb2R1bGUgSW5maXggKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kKSA6IEluZml4IHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBsZXQgKCA+ICkgYSBiID0gZ3QgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA8ICkgYSBiID0gbHQgVC5jb21wYXJlIGEgYlxuICBsZXQgKCA+PSApIGEgYiA9IGdlcSBULmNvbXBhcmUgYSBiXG4gIGxldCAoIDw9ICkgYSBiID0gbGVxIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPSApIGEgYiA9IGVxdWFsIFQuY29tcGFyZSBhIGJcbiAgbGV0ICggPD4gKSBhIGIgPSBub3RfZXF1YWwgVC5jb21wYXJlIGEgYlxuZW5kXG5cbm1vZHVsZSBQb2x5bW9ycGhpY19jb21wYXJlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZCkgOiBQb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIEluZml4IChUKVxuXG4gIGxldCBjb21wYXJlID0gVC5jb21wYXJlXG4gIGxldCBlcXVhbCA9ICggPSApXG4gIGxldCBtaW4gdCB0JyA9IG1pbiBjb21wYXJlIHQgdCdcbiAgbGV0IG1heCB0IHQnID0gbWF4IGNvbXBhcmUgdCB0J1xuZW5kXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBULmNvbXBhcmF0b3Jfd2l0bmVzcyA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJhdG9yLmNvbXBhcmVcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBQb2x5bW9ycGhpY19jb21wYXJlIChUKVxuICBpbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhc2NlbmRpbmcgPSBjb21wYXJlXG4gIGxldCBkZXNjZW5kaW5nIHQgdCcgPSBjb21wYXJlIHQnIHRcbiAgbGV0IGJldHdlZW4gdCB+bG93IH5oaWdoID0gbG93IDw9IHQgJiYgdCA8PSBoaWdoXG4gIGxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbiAgbGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICAgYXNzZXJ0IChtaW4gPD0gbWF4KTtcbiAgICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbiAgOztcblxuICBsZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAgIGlmIG1pbiA+IG1heFxuICAgIHRoZW5cbiAgICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbiAgICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpID1cbiAgTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgSW5oZXJpdCAoQyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBbQEBAZW5kXVxuICBlbmQpIChUIDogc2lnXG4gICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICAgICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgICAgICBbQEBAZW5kXVxuXG4gICAgICAgICAgdmFsIGNvbXBvbmVudCA6IHQgLT4gQy50XG4gICAgICAgIGVuZCkgPVxuICBNYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICBsZXQgc2V4cF9vZl90ID0gKFQuc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNvbXBhcmUgdCB0JyA9IEMuY29tcGFyZSAoVC5jb21wb25lbnQgdCkgKFQuY29tcG9uZW50IHQnKVxuICBlbmQpXG5cbigqIGNvbXBhcmUgW3hdIGFuZCBbeV0gbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgZnVuY3Rpb25zIGluIHRoZSBsaXN0IFtjbXBzXSAqKVxubGV0IGxleGljb2dyYXBoaWMgY21wcyB4IHkgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgY21wIDo6IGNtcHMgLT5cbiAgICAgIGxldCByZXMgPSBjbXAgeCB5IGluXG4gICAgICBpZiByZXMgPSAwIHRoZW4gbG9vcCBjbXBzIGVsc2UgcmVzXG4gICAgfCBbXSAtPiAwXG4gIGluXG4gIGxvb3AgY21wc1xuOztcblxubGV0IGxpZnQgY21wIH5mIHggeSA9IGNtcCAoZiB4KSAoZiB5KVxubGV0IHJldmVyc2UgY21wIHggeSA9IGNtcCB5IHhcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2hhYmxlLktleSAqKVxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5cbiAgKCoqIFZhbHVlcyByZXR1cm5lZCBieSBbaGFzaF0gbXVzdCBiZSBub24tbmVnYXRpdmUuICBBbiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaW4gdGhlXG4gICAgICBjYXNlIHRoYXQgW2hhc2hdIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZS4gKilcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBIYXNoYWJsZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgaGFzaCA6ICdhIC0+IGludFxuICAgIDsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgIDsgc2V4cF9vZl90IDogJ2EgLT4gU2V4cC50XG4gICAgfVxuXG4gICgqKiBUaGlzIGZ1bmN0aW9uIGlzIHNvdW5kIGJ1dCBub3QgY29tcGxldGUsIG1lYW5pbmcgdGhhdCBpZiBpdCByZXR1cm5zIFt0cnVlXSB0aGVuIGl0J3NcbiAgICAgIHNhZmUgdG8gdXNlIHRoZSB0d28gaW50ZXJjaGFuZ2VhYmx5LiAgSWYgaXQncyBbZmFsc2VdLCB5b3UgaGF2ZSBubyBndWFyYW50ZWVzLiAgRm9yXG4gICAgICBleGFtcGxlOlxuXG4gICAgICB7W1xuICAgICAgICA+IHV0b3BcbiAgICAgICAgb3BlbiBDb3JlOztcbiAgICAgICAgbGV0IGVxdWFsIChhIDogJ2EgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnQpIGIgPVxuICAgICAgICAgIHBoeXNfZXF1YWwgYSBiXG4gICAgICAgICAgfHwgKHBoeXNfZXF1YWwgYS5oYXNoIGIuaGFzaFxuICAgICAgICAgICAgICAmJiBwaHlzX2VxdWFsIGEuY29tcGFyZSBiLmNvbXBhcmVcbiAgICAgICAgICAgICAgJiYgcGh5c19lcXVhbCBhLnNleHBfb2ZfdCBiLnNleHBfb2ZfdClcbiAgICAgICAgOztcbiAgICAgICAgbGV0IGEgPSBIYXNodGJsX2ludGYuSGFzaGFibGUueyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgPSBJbnQuc2V4cF9vZl90IH07O1xuICAgICAgICBsZXQgYiA9IEhhc2h0YmxfaW50Zi5IYXNoYWJsZS57IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCA9IEludC5zZXhwX29mX3QgfTs7XG4gICAgICAgIGVxdWFsIGEgYjs7ICAoKiBmYWxzZT8hICopXG4gICAgICBdfVxuICAqKVxuICBsZXQgZXF1YWwgYSBiID1cbiAgICBwaHlzX2VxdWFsIGEgYlxuICAgIHx8IChwaHlzX2VxdWFsIGEuaGFzaCBiLmhhc2hcbiAgICAgICAgJiYgcGh5c19lcXVhbCBhLmNvbXBhcmUgYi5jb21wYXJlXG4gICAgICAgICYmIHBoeXNfZXF1YWwgYS5zZXhwX29mX3QgYi5zZXhwX29mX3QpXG4gIDs7XG5cbiAgbGV0IGhhc2hfcGFyYW0gPSBDYW1sLkhhc2h0YmwuaGFzaF9wYXJhbVxuICBsZXQgaGFzaCA9IENhbWwuSGFzaHRibC5oYXNoXG4gIGxldCBwb2x5ID0geyBoYXNoOyBjb21wYXJlID0gUG9seS5jb21wYXJlOyBzZXhwX29mX3QgPSAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSB9XG5cbiAgbGV0IG9mX2tleSAodHlwZSBhKSAobW9kdWxlIEtleSA6IEtleSB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICB7IGhhc2ggPSBLZXkuaGFzaDsgY29tcGFyZSA9IEtleS5jb21wYXJlOyBzZXhwX29mX3QgPSBLZXkuc2V4cF9vZl90IH1cbiAgOztcblxuICBsZXQgdG9fa2V5ICh0eXBlIGEpIHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCBoYXNoID0gaGFzaFxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kIDogS2V5XG4gICAgICB3aXRoIHR5cGUgdCA9IGEpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBIYXNoYWJsZVxuXG5tb2R1bGUgdHlwZSBIYXNoYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBIYXNoYWJsZS50ID1cbiAgICB7IGhhc2ggOiAnYSAtPiBpbnRcbiAgICA7IGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnRcbiAgICA7IHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudFxuICAgIH1cblxuICB2YWwgZXF1YWwgOiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwgcG9seSA6ICdhIHRcbiAgdmFsIG9mX2tleSA6IChtb2R1bGUgS2V5IHdpdGggdHlwZSB0ID0gJ2EpIC0+ICdhIHRcbiAgdmFsIHRvX2tleSA6ICdhIHQgLT4gKG1vZHVsZSBLZXkgd2l0aCB0eXBlIHQgPSAnYSlcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuICB2YWwgaGFzaCA6ICdhIC0+IGludFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlX2ludGZcblxubW9kdWxlIE1ha2UgKFQgOiBBcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5lbmRcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoVCA6IEFyZ193aXRoX2NvbXBhcmF0b3IpID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBpbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChUKVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmdfaW5saW5lIGVudW1lcmF0ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBhbGwgPSAoWyAoKSBdIDogdCBsaXN0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfdW5pdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfdW5pdCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAodW5pdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl91bml0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHVuaXRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgY29tcGFyZSBfIF8gPSAwXG5cbiAgbGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcIigpXCIgLT4gKClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJCYXNlLlVuaXQub2Zfc3RyaW5nOiAoKSBleHBlY3RlZFwiXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyAoKSA9IFwiKClcIlxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuVW5pdFwiXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG5sZXQgaW52YXJpYW50ICgpID0gKClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uMFxuXG5sZXQgZ2V0X3Bvc19sZW4gP3BvcyA/bGVuICgpIH50b3RhbF9sZW5ndGggPVxuICB0cnkgUmVzdWx0Lk9rIChnZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGgpIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuKCogVGhlc2UgZnVuY3Rpb25zIGltcGxlbWVudCBhIHNlYXJjaCBmb3IgdGhlIGZpcnN0IChyZXNwLiBsYXN0KSBlbGVtZW50XG4gICBzYXRpc2Z5aW5nIGEgcHJlZGljYXRlLCBhc3N1bWluZyB0aGF0IHRoZSBwcmVkaWNhdGUgaXMgaW5jcmVhc2luZyBvblxuICAgdGhlIGNvbnRhaW5lciwgbWVhbmluZyB0aGF0LCBpZiB0aGUgY29udGFpbmVyIGlzIFt1MS4uLnVuXSwgdGhlcmUgZXhpc3RzIGFcbiAgIGsgc3VjaCB0aGF0IHAodTEpPS4uLi49cCh1aykgPSBmYWxzZSBhbmQgcCh1aysxKT0uLi4uPXAodW4pPSB0cnVlLlxuICAgSWYgdGhpcyBrID0gMSAocmVzcCBuKSwgZmluZF9sYXN0X25vdF9zYXRpc2Z5aW5nIChyZXNwIGZpbmRfZmlyc3Rfc2F0aXNmeWluZylcbiAgIHdpbGwgcmV0dXJuIE5vbmUuICopXG5cbmxldCByZWMgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkID1cbiAgaWYgbG8gPiBoaVxuICB0aGVuIE5vbmVcbiAgZWxzZSBpZiBwcmVkIChnZXQgdCBsbylcbiAgdGhlbiBTb21lIGxvXG4gIGVsc2UgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG86KGxvICsgMSkgfmhpIH5wcmVkXG47O1xuXG4oKiBUYWtlcyBhIGNvbnRhaW5lciBbdF0sIGEgcHJlZGljYXRlIFtwcmVkXSBhbmQgdHdvIGluZGljZXMgW2xvIDwgaGldLCBzdWNoIHRoYXRcbiAgIFtwcmVkXSBpcyBpbmNyZWFzaW5nIG9uIFt0XSBiZXR3ZWVuIFtsb10gYW5kIFtoaV0uXG5cbiAgIHJldHVybiBhIHJhbmdlIChsbywgaGkpIHdoZXJlOlxuICAgLSBsbyBhbmQgaGkgYXJlIGNsb3NlIGVub3VnaCB0b2dldGhlciBmb3IgYSBsaW5lYXIgc2VhcmNoXG4gICAtIElmIFtwcmVkXSBpcyBub3QgY29uc3RhbnRseSBbZmFsc2VdIG9uIFt0XSBiZXR3ZWVuIFtsb10gYW5kIFtoaV0sIHRoZSBmaXJzdCBlbGVtZW50XG4gICAgIG9uIHdoaWNoIFtwcmVkXSBpcyBbdHJ1ZV0gaXMgYmV0d2VlbiBbbG9dIGFuZCBbaGldLiAqKVxuKCogSW52YXJpYW50OiB0aGUgZmlyc3QgZWxlbWVudCBzYXRpc2Z5aW5nIFtwcmVkXSwgaWYgaXQgZXhpc3RzIGlzIGJldHdlZW4gW2xvXSBhbmQgW2hpXSAqKVxubGV0IHJlYyBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaSB+cHJlZCA9XG4gICgqIFdhcm5pbmc6IHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgdGVybWluYXRlIGlmIHRoZSBjb25zdGFudCAoY3VycmVudGx5IDgpIGlzXG4gICAgIHNldCA8PSAxICopXG4gIGlmIGhpIC0gbG8gPD0gOFxuICB0aGVuIGxvLCBoaVxuICBlbHNlIChcbiAgICBsZXQgbWlkID0gbG8gKyAoKGhpIC0gbG8pIC8gMikgaW5cbiAgICBpZiBwcmVkIChnZXQgdCBtaWQpXG4gICAgKCogSU5WQVJJQU5UIGNoZWNrOiBpdCBtZWFucyB0aGUgZmlyc3Qgc2F0aXNmeWluZyBlbGVtZW50IGlzIGJldHdlZW4gW2xvXSBhbmQgW21pZF0gKilcbiAgICB0aGVuXG4gICAgICBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvIH5oaTptaWQgfnByZWRcbiAgICAgICgqIElOVkFSSUFOVCBjaGVjazogaXQgbWVhbnMgdGhlIGZpcnN0IHNhdGlzZnlpbmcgZWxlbWVudCwgaWYgaXQgZXhpc3RzLFxuICAgICAgICAgaXMgYmV0d2VlbiBbbWlkKzFdIGFuZCBbaGldICopXG4gICAgZWxzZSBmaW5kX3JhbmdlX25lYXJfZmlyc3Rfc2F0aXNmeWluZyB0IH5nZXQgfmxvOihtaWQgKyAxKSB+aGkgfnByZWQpXG47O1xuXG5sZXQgZmluZF9maXJzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZCA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBsZXQgbG8gPSBwb3MgaW5cbiAgbGV0IGhpID0gcG9zICsgbGVuIC0gMSBpblxuICBsZXQgbG8sIGhpID0gZmluZF9yYW5nZV9uZWFyX2ZpcnN0X3NhdGlzZnlpbmcgdCB+Z2V0IH5sbyB+aGkgfnByZWQgaW5cbiAgbGluZWFyX3NlYXJjaF9maXJzdF9zYXRpc2Z5aW5nIHQgfmdldCB+bG8gfmhpIH5wcmVkXG47O1xuXG4oKiBUYWtlcyBhbiBhcnJheSB3aXRoIHNoYXBlIFt0cnVlLC4uLnRydWUsZmFsc2UsLi4uZmFsc2VdIChpLmUuLCB0aGUgX3JldmVyc2VfIG9mIHdoYXRcbiAgIGlzIGRlc2NyaWJlZCBhYm92ZSkgYW5kIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRydWUgb3IgTm9uZSBpZiB0aGVyZSBhcmUgbm9cbiAgIHRydWUqKVxubGV0IGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5wcmVkIH5nZXQgfmxlbmd0aCA9XG4gIGxldCBwb3MsIGxlbiA9XG4gICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICAoKiBUaGUgbGFzdCBzYXRpc2Z5aW5nIGlzIHRoZSBvbmUganVzdCBiZWZvcmUgdGhlIGZpcnN0IG5vdCBzYXRpc2Z5aW5nICopXG4gICAgbWF0Y2ggZmluZF9maXJzdF9zYXRpc2Z5aW5nIH5wb3MgfmxlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooRm4ubm9uIHByZWQpIHdpdGhcbiAgICB8IE5vbmUgLT4gU29tZSAocG9zICsgbGVuIC0gMSlcbiAgICAoKiBUaGlzIG1lYW5zIHRoYXQgYWxsIGVsZW1lbnRzIHNhdGlzZnkgcHJlZC5cbiAgICAgICBUaGVyZSBpcyBhdCBsZWFzdCBhbiBlbGVtZW50IGFzIChsZW4gPiAwKSAqKVxuICAgIHwgU29tZSBpIHdoZW4gaSA9IHBvcyAtPiBOb25lICgqIG5vIGVsZW1lbnQgc2F0aXNmaWVzIHByZWQgKilcbiAgICB8IFNvbWUgaSAtPiBTb21lIChpIC0gMSkpXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfmNvbXBhcmUgaG93IHYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKVxuICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAtPlxuICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+cHJlZDooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMClcbiAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAobWF0Y2hcbiAgICAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKVxuICAgICB3aXRoXG4gICAgIHwgU29tZSB4IHdoZW4gY29tcGFyZSAoZ2V0IHQgeCkgdiA9IDAgLT4gU29tZSB4XG4gICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgKG1hdGNoXG4gICAgICAgZmluZF9sYXN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA8PSAwKVxuICAgICB3aXRoXG4gICAgIHwgU29tZSB4IHdoZW4gY29tcGFyZSAoZ2V0IHQgeCkgdiA9IDAgLT4gU29tZSB4XG4gICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKVxuICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKVxuICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gLT5cbiAgICBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgP3BvcyA/bGVuIHQgfmdldCB+bGVuZ3RoIH5wcmVkOihmdW4geCAtPiBjb21wYXJlIHggdiA+IDApXG47O1xuXG5sZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfmxlbmd0aCB+Z2V0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBpc19sZWZ0IHggPVxuICAgIG1hdGNoIHNlZ21lbnRfb2YgeCB3aXRoXG4gICAgfCBgTGVmdCAtPiB0cnVlXG4gICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgaW5cbiAgbGV0IGlzX3JpZ2h0IHggPSBub3QgKGlzX2xlZnQgeCkgaW5cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCBgTGFzdF9vbl9sZWZ0IC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nID9wb3MgP2xlbiB0IH5sZW5ndGggfmdldCB+cHJlZDppc19sZWZ0XG4gIHwgYEZpcnN0X29uX3JpZ2h0IC0+IGZpbmRfZmlyc3Rfc2F0aXNmeWluZyA/cG9zID9sZW4gdCB+bGVuZ3RoIH5nZXQgfnByZWQ6aXNfcmlnaHRcbjs7XG4iLCIoKiogTW9kdWxlIHR5cGVzIGZvciBhIFtiaW5hcnlfc2VhcmNoXSBmdW5jdGlvbiBmb3IgYSBzZXF1ZW5jZSwgYW5kIGZ1bmN0b3JzIGZvciBidWlsZGluZ1xuICAgIFtiaW5hcnlfc2VhcmNoXSBmdW5jdGlvbnMuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogQW4gW0luZGV4YWJsZV0gdHlwZSBpcyBhIGZpbml0ZSBzZXF1ZW5jZSBvZiBlbGVtZW50cyBpbmRleGVkIGJ5IGNvbnNlY3V0aXZlIGludGVnZXJzXG4gICAgWzBdIC4uLiBbbGVuZ3RoIHQgLSAxXS4gIFtnZXRdIGFuZCBbbGVuZ3RoXSBtdXN0IGJlIE8oMSkgZm9yIHRoZSByZXN1bHRpbmdcbiAgICBbYmluYXJ5X3NlYXJjaF0gdG8gYmUgbGcobikuICopXG5tb2R1bGUgdHlwZSBJbmRleGFibGUgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGdldCA6IHQgLT4gaW50IC0+IGVsdFxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBJbmRleGFibGUxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBnZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBXaGljaF90YXJnZXRfYnlfa2V5ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlXVxuXG4gIGxldCBhbGwgPVxuICAgIChbIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhblxuICAgICA7IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90b1xuICAgICA7IGBMYXN0X2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X2VxdWFsX3RvXG4gICAgIDsgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90b1xuICAgICA7IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW5cbiAgICAgXVxuICAgICA6IHQgbGlzdClcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaGljaF90YXJnZXRfYnlfc2VnbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYExhc3Rfb25fbGVmdFxuICAgIHwgYEZpcnN0X29uX3JpZ2h0XG4gICAgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgZW51bWVyYXRlXVxuXG4gIGxldCBhbGwgPSAoWyBgTGFzdF9vbl9sZWZ0OyBgRmlyc3Rfb25fcmlnaHQgXSA6IHQgbGlzdClcblxuICBbQEBAZW5kXVxuZW5kXG5cbnR5cGUgKCd0LCAnZWx0LCAna2V5KSBiaW5hcnlfc2VhcmNoID1cbiAgP3BvczppbnRcbiAgLT4gP2xlbjppbnRcbiAgLT4gJ3RcbiAgLT4gY29tcGFyZTooJ2VsdCAtPiAna2V5IC0+IGludClcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gIC0+ICdrZXlcbiAgLT4gaW50IG9wdGlvblxuXG50eXBlICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgPVxuICA/cG9zOmludFxuICAtPiA/bGVuOmludFxuICAtPiAndFxuICAtPiBzZWdtZW50X29mOignZWx0IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgLT4gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAtPiBpbnQgb3B0aW9uXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgKCoqIFNlZSBbQmluYXJ5X3NlYXJjaC5iaW5hcnlfc2VhcmNoXSBpbiBiaW5hcnlfc2VhcmNoLm1sICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoIDogKHQsIGVsdCwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuXG4gICgqKiBTZWUgW0JpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGluIGJpbmFyeV9zZWFyY2gubWwgKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIDogKHQsIGVsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSwgJ2tleSkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EpIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG5lbmRcblxubW9kdWxlIHR5cGUgQmluYXJ5X3NlYXJjaGFibGUgPSBzaWdcbiAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICBtb2R1bGUgdHlwZSBJbmRleGFibGUgPSBJbmRleGFibGVcbiAgbW9kdWxlIHR5cGUgSW5kZXhhYmxlMSA9IEluZGV4YWJsZTFcblxuICBtb2R1bGUgV2hpY2hfdGFyZ2V0X2J5X2tleSA9IFdoaWNoX3RhcmdldF9ieV9rZXlcbiAgbW9kdWxlIFdoaWNoX3RhcmdldF9ieV9zZWdtZW50ID0gV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnRcblxuICB0eXBlIG5vbnJlYyAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2ggPSAoJ3QsICdlbHQsICdrZXkpIGJpbmFyeV9zZWFyY2hcbiAgdHlwZSBub25yZWMgKCd0LCAnZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9ICgndCwgJ2VsdCkgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICBtb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCB3aXRoIHR5cGUgZWx0IDo9IFQuZWx0XG4gIG1vZHVsZSBNYWtlMSAoVCA6IEluZGV4YWJsZTEpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgVC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEFyZyA9IHNpZ1xuICB0eXBlICdhIGVsdFxuICB0eXBlICdhIHRcblxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgZWx0XG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuIChUIDogQXJnKSA9IHN0cnVjdFxuICBsZXQgZ2V0ID0gVC5nZXRcbiAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIEJpbmFyeV9zZWFyY2guYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Z2V0IH5sZW5ndGggfmNvbXBhcmUgaG93IHZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgP3BvcyA/bGVuIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBCaW5hcnlfc2VhcmNoLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5nZXQgfmxlbmd0aCB+c2VnbWVudF9vZiBob3dcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IEluZGV4YWJsZSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICB0eXBlICdhIGVsdCA9IFQuZWx0XG4gICAgdHlwZSAnYSB0ID0gVC50XG4gIGVuZClcblxubW9kdWxlIE1ha2UxIChUIDogSW5kZXhhYmxlMSkgPSBNYWtlX2dlbiAoc3RydWN0XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgbGV0IGdldCA9IFQuZ2V0XG4gICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCbGl0X2ludGZcblxubW9kdWxlIHR5cGUgU2VxdWVuY2VfZ2VuID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5lbmRcblxubW9kdWxlIE1ha2VfZ2VuXG4gICAgKFNyYyA6IFNlcXVlbmNlX2dlbikgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VfZ2VuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlX2xpa2UgOiBsZW46aW50IC0+ICdhIFNyYy50IC0+ICdhIHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgU3JjLnQsICdhIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IHVuc2FmZV9ibGl0ID0gRHN0LnVuc2FmZV9ibGl0XG5cbiAgbGV0IGJsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6c3JjX3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooU3JjLmxlbmd0aCBzcmMpO1xuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICAgIH5wb3M6ZHN0X3Bvc1xuICAgICAgfmxlblxuICAgICAgfnRvdGFsX2xlbmd0aDooRHN0Lmxlbmd0aCBkc3QpO1xuICAgIGlmIGxlbiA+IDAgdGhlbiB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlblxuICA7O1xuXG4gIGxldCBibGl0b1xuICAgICAgICB+c3JjXG4gICAgICAgID8oc3JjX3BvcyA9IDApXG4gICAgICAgID8oc3JjX2xlbiA9IFNyYy5sZW5ndGggc3JjIC0gc3JjX3BvcylcbiAgICAgICAgfmRzdFxuICAgICAgICA/KGRzdF9wb3MgPSAwKVxuICAgICAgICAoKVxuICAgID1cbiAgICBibGl0IH5zcmMgfnNyY19wb3MgfmxlbjpzcmNfbGVuIH5kc3QgfmRzdF9wb3NcbiAgOztcblxuICAoKiBbc3ViXSBhbmQgW3N1Ym9dIGVuc3VyZSB0aGF0IGV2ZXJ5IHBvc2l0aW9uIG9mIHRoZSBjcmVhdGVkIHNlcXVlbmNlIGlzIHBvcHVsYXRlZCBieVxuICAgICBhbiBlbGVtZW50IG9mIHRoZSBzb3VyY2UgYXJyYXkuICBUaHVzIGV2ZXJ5IGVsZW1lbnQgb2YgW2RzdF0gYmVsb3cgaXMgd2VsbFxuICAgICBkZWZpbmVkLiAqKVxuICBsZXQgc3ViIHNyYyB+cG9zIH5sZW4gPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvcyB+bGVuIH50b3RhbF9sZW5ndGg6KFNyYy5sZW5ndGggc3JjKTtcbiAgICBsZXQgZHN0ID0gRHN0LmNyZWF0ZV9saWtlIH5sZW4gc3JjIGluXG4gICAgaWYgbGVuID4gMCB0aGVuIHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgIGRzdFxuICA7O1xuXG4gIGxldCBzdWJvID8ocG9zID0gMCkgP2xlbiBzcmMgPVxuICAgIHN1YlxuICAgICAgc3JjXG4gICAgICB+cG9zXG4gICAgICB+bGVuOlxuICAgICAgICAobWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgIHwgTm9uZSAtPiBTcmMubGVuZ3RoIHNyYyAtIHBvcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFNlcXVlbmNlIDogc2lnXG4gICAgaW5jbHVkZSBTZXF1ZW5jZV9nZW5cblxuICAgIHZhbCBjcmVhdGVfbGlrZSA6IGxlbjppbnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHVuc2FmZV9ibGl0IDogKCdhIHQsICdhIHQpIGJsaXRcbiAgZW5kKSA9XG4gIE1ha2VfZ2VuIChTZXF1ZW5jZSkgKFNlcXVlbmNlKVxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UgOiBTZXF1ZW5jZTEpID0gTWFrZV9nZW4gKFNlcXVlbmNlKSAoU2VxdWVuY2UpXG5cbm1vZHVsZSBNYWtlIChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+IHRcbiAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBTZXF1ZW5jZS50XG5cbiAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiBfID0gY3JlYXRlIH5sZW5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlX2dlbiAoU2VxdWVuY2UpIChTZXF1ZW5jZSlcbmVuZFxuXG5tb2R1bGUgTWFrZV9kaXN0aW5jdFxuICAgIChTcmMgOiBTZXF1ZW5jZSkgKERzdCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgY3JlYXRlIDogbGVuOmludCAtPiB0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAoU3JjLnQsIHQpIGJsaXRcbiAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbiAgTWFrZV9nZW5cbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBTcmMudFxuXG4gICAgICBvcGVuIFNyY1xuXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IERzdC50XG5cbiAgICAgIG9wZW4gRHN0XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBjcmVhdGVfbGlrZSB+bGVuIF8gPSBjcmVhdGUgfmxlblxuICAgICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgICBlbmQpXG5cbm1vZHVsZSBNYWtlX3RvX3N0cmluZyAoVCA6IHNpZ1xuICAgIHR5cGUgdFxuICBlbmQpXG4gICAgKFRvX2J5dGVzIDogU19kaXN0aW5jdCB3aXRoIHR5cGUgc3JjIDo9IFQudCB3aXRoIHR5cGUgZHN0IDo9IGJ5dGVzKSA9XG5zdHJ1Y3RcbiAgb3BlbiBUb19ieXRlc1xuXG4gIGxldCBzdWIgc3JjIH5wb3MgfmxlbiA9XG4gICAgQnl0ZXMwLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6KHN1YiBzcmMgfnBvcyB+bGVuKVxuICA7O1xuXG4gIGxldCBzdWJvID9wb3MgP2xlbiBzcmMgPVxuICAgIEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihzdWJvID9wb3MgP2xlbiBzcmMpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID0gY29tcGFyZV9vcHRpb25cblxuICBsZXQgaGFzaF9mb2xkX3QgOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIHRcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgaGFzaF9mb2xkX29wdGlvblxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICAgIG9wdGlvbl9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgc2V4cF9vZl9vcHRpb25cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IG9wdGlvbl9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFBweF9oYXNoX2xpYi5IYXNoYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kKVxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gPVxuICB8IE5vbmVcbiAgfCBTb21lIG9mICdhXG5cbmxldCBpc19ub25lID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc29tZSA9IGZ1bmN0aW9uXG4gIHwgU29tZSBfIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgdmFsdWVfbWFwIG8gfmRlZmF1bHQgfmYgPVxuICBtYXRjaCBvIHdpdGhcbiAgfCBTb21lIHggLT4gZiB4XG4gIHwgTm9uZSAtPiBkZWZhdWx0XG47O1xuXG5sZXQgaXRlciBvIH5mID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBmIGFcbjs7XG5cbmxldCBpbnZhcmlhbnQgZiB0ID0gaXRlciB0IH5mXG5cbmxldCBjYWxsIHggfmYgPVxuICBtYXRjaCBmIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmIC0+IGYgeFxuOztcblxubGV0IHZhbHVlIHQgfmRlZmF1bHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGRlZmF1bHRcbiAgfCBTb21lIHggLT4geFxuOztcblxubGV0IHZhbHVlX2V4biA/aGVyZSA/ZXJyb3IgP21lc3NhZ2UgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvciA9XG4gICAgICBtYXRjaCBoZXJlLCBlcnJvciwgbWVzc2FnZSB3aXRoXG4gICAgICB8IE5vbmUsIE5vbmUsIE5vbmUgLT4gRXJyb3Iub2Zfc3RyaW5nIFwiT3B0aW9uLnZhbHVlX2V4biBOb25lXCJcbiAgICAgIHwgTm9uZSwgTm9uZSwgU29tZSBtIC0+IEVycm9yLm9mX3N0cmluZyBtXG4gICAgICB8IE5vbmUsIFNvbWUgZSwgTm9uZSAtPiBlXG4gICAgICB8IE5vbmUsIFNvbWUgZSwgU29tZSBtIC0+IEVycm9yLnRhZyBlIH50YWc6bVxuICAgICAgfCBTb21lIHAsIE5vbmUsIE5vbmUgLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlIFwiT3B0aW9uLnZhbHVlX2V4blwiIHAgU291cmNlX2NvZGVfcG9zaXRpb24wLnNleHBfb2ZfdFxuICAgICAgfCBTb21lIHAsIE5vbmUsIFNvbWUgbSAtPiBFcnJvci5jcmVhdGUgbSBwIFNvdXJjZV9jb2RlX3Bvc2l0aW9uMC5zZXhwX29mX3RcbiAgICAgIHwgU29tZSBwLCBTb21lIGUsIF8gLT5cbiAgICAgICAgRXJyb3IuY3JlYXRlXG4gICAgICAgICAgKHZhbHVlIG1lc3NhZ2UgfmRlZmF1bHQ6XCJcIilcbiAgICAgICAgICAoZSwgcClcbiAgICAgICAgICAoc2V4cF9vZl9wYWlyIEVycm9yLnNleHBfb2ZfdCBTb3VyY2VfY29kZV9wb3NpdGlvbjAuc2V4cF9vZl90KVxuICAgIGluXG4gICAgRXJyb3IucmFpc2UgZXJyb3Jcbjs7XG5cbmxldCB2YWx1ZV9vcl90aHVuayBvIH5kZWZhdWx0ID1cbiAgbWF0Y2ggbyB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+IGRlZmF1bHQgKClcbjs7XG5cbmxldCB0b19hcnJheSB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBbfHxdXG4gIHwgU29tZSB4IC0+IFt8IHggfF1cbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IFtdXG4gIHwgU29tZSB4IC0+IFsgeCBdXG47O1xuXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlOl8gPSB0XG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlOl8gPSB0XG5cbmxldCBzdW0gKHR5cGUgYSkgKG1vZHVsZSBNIDogQ29udGFpbmVyLlN1bW1hYmxlIHdpdGggdHlwZSB0ID0gYSkgdCB+ZiA9XG4gIHZhbHVlX21hcCB0IH5kZWZhdWx0Ok0uemVybyB+ZlxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCAtPiBmIHhcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIHggLT4gZiB4XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBhJyAtPiBlcXVhbCBhIGEnXG47O1xuXG5sZXQgbGVuZ3RoIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIF8gLT4gMVxuOztcblxubGV0IGlzX2VtcHR5ID0gaXNfbm9uZVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSB4IC0+IGYgaW5pdCB4XG47O1xuXG5sZXQgY291bnQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgYSAtPiBpZiBmIGEgdGhlbiAxIGVsc2UgMFxuOztcblxubGV0IGZpbmQgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgeCAtPiBpZiBmIHggdGhlbiB0IGVsc2UgTm9uZVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGEgLT4gZiBhXG47O1xuXG5sZXQgZXF1YWwgZiB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICB8IFNvbWUgeCwgU29tZSB4JyAtPiBmIHggeCdcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgc29tZSB4ID0gU29tZSB4XG5cbmxldCBmaXJzdF9zb21lIHggeSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgXyAtPiB4XG4gIHwgTm9uZSAtPiB5XG47O1xuXG5sZXQgc29tZV9pZiBjb25kIHggPSBpZiBjb25kIHRoZW4gU29tZSB4IGVsc2UgTm9uZVxuXG5sZXQgbWVyZ2UgYSBiIH5mID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgeCB8IHgsIE5vbmUgLT4geFxuICB8IFNvbWUgYSwgU29tZSBiIC0+IFNvbWUgKGYgYSBiKVxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU29tZSB2IGFzIG8gd2hlbiBmIHYgLT4gb1xuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHRyeV93aXRoIGYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+IFNvbWUgeFxuICB8IGV4Y2VwdGlvbiBfIC0+IE5vbmVcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luIGYgPVxuICBtYXRjaCBmICgpIHdpdGhcbiAgfCB4IC0+IHhcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGEgLT4gU29tZSAoZiBhKVxuOztcblxubGV0IGFwcGx5IGYgeCA9XG4gIG1hdGNoIGYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZiAtPiBtYXAgfmYgeFxuOztcblxubW9kdWxlIE1vbmFkX2FyZyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBvcHRpb25cblxuICBsZXQgcmV0dXJuIHggPSBTb21lIHhcbiAgbGV0IGFwcGx5ID0gYXBwbHlcbiAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG5cbiAgbGV0IGJpbmQgbyB+ZiA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgOztcbmVuZFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKE1vbmFkX2FyZylcbmluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoTW9uYWRfYXJnKVxuXG5sZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlXG5cbm1vZHVsZSBPZl9zZXhwYWJsZVxuICAgIChTZXhwYWJsZSA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiB0IC0+IFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiBTZXhwYWJsZS50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cGFibGUuc2V4cF9vZl90IChNLnRvX3NleHBhYmxlIHQpXG5lbmRcblxubW9kdWxlIE9mX3NleHBhYmxlMVxuICAgIChTZXhwYWJsZSA6IFMxKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICB0eXBlICdhIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAnYSB0IC0+ICdhIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogJ2EgU2V4cGFibGUudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPVxuICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSAoTS50b19zZXhwYWJsZSB0KVxuZW5kXG5cbm1vZHVsZSBPZl9zZXhwYWJsZTJcbiAgICAoU2V4cGFibGUgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYikgdCAtPiAoJ2EsICdiKSBTZXhwYWJsZS50XG4gICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IpIFNleHBhYmxlLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwIGluXG4gICAgdHJ5IE0ub2Zfc2V4cGFibGUgcyB3aXRoXG4gICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc2V4cGFibGUzXG4gICAgKFNleHBhYmxlIDogUzMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiAoJ2EsICdiLCAnYykgU2V4cGFibGUudCAtPiAoJ2EsICdiLCAnYykgdFxuICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID0gc3RydWN0XG4gIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCA9XG4gICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBjX29mX3NleHAgc2V4cCBpblxuICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyB0ID1cbiAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiBzZXhwX29mX2MgKE0udG9fc2V4cGFibGUgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZSAoTSA6IFN0cmluZ2FibGUuUykgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHApXG4gICAgfCBTZXhwLkxpc3QgXyAtPlxuICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoTS50b19zdHJpbmcgdClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEVpdGhlcl9pbnRmXG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIEVpdGhlcjBcblxubGV0IHN3YXAgPSBmdW5jdGlvblxuICB8IEZpcnN0IHggLT4gU2Vjb25kIHhcbiAgfCBTZWNvbmQgeCAtPiBGaXJzdCB4XG47O1xuXG5sZXQgaXNfZmlyc3QgPSBmdW5jdGlvblxuICB8IEZpcnN0IF8gLT4gdHJ1ZVxuICB8IFNlY29uZCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfc2Vjb25kID0gZnVuY3Rpb25cbiAgfCBGaXJzdCBfIC0+IGZhbHNlXG4gIHwgU2Vjb25kIF8gLT4gdHJ1ZVxuOztcblxubGV0IHZhbHVlIChGaXJzdCB4IHwgU2Vjb25kIHgpID0geFxuXG5sZXQgdmFsdWVfbWFwIHQgfmZpcnN0IH5zZWNvbmQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBGaXJzdCB4IC0+IGZpcnN0IHhcbiAgfCBTZWNvbmQgeCAtPiBzZWNvbmQgeFxuOztcblxubGV0IGl0ZXIgPSB2YWx1ZV9tYXBcblxubGV0IG1hcCB0IH5maXJzdCB+c2Vjb25kID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRmlyc3QgeCAtPiBGaXJzdCAoZmlyc3QgeClcbiAgfCBTZWNvbmQgeCAtPiBTZWNvbmQgKHNlY29uZCB4KVxuOztcblxubGV0IGZpcnN0IHggPSBGaXJzdCB4XG5sZXQgc2Vjb25kIHggPSBTZWNvbmQgeFxuXG5sZXQgZXF1YWwgZXExIGVxMiB0MSB0MiA9XG4gIG1hdGNoIHQxLCB0MiB3aXRoXG4gIHwgRmlyc3QgeCwgRmlyc3QgeSAtPiBlcTEgeCB5XG4gIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IGVxMiB4IHlcbiAgfCBGaXJzdCBfLCBTZWNvbmQgXyB8IFNlY29uZCBfLCBGaXJzdCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaW52YXJpYW50IGYgcyA9IGZ1bmN0aW9uXG4gIHwgRmlyc3QgeCAtPiBmIHhcbiAgfCBTZWNvbmQgeSAtPiBzIHlcbjs7XG5cbm1vZHVsZSBNYWtlX2ZvY3VzZWQgKE0gOiBzaWdcbiAgICB0eXBlICgrJ2EsICsnYikgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICgnYSwgXykgdFxuICAgIHZhbCBvdGhlciA6ICdiIC0+IChfLCAnYikgdFxuICAgIHZhbCBlaXRoZXIgOiAoJ2EsICdiKSB0IC0+IHJldHVybjooJ2EgLT4gJ2MpIC0+IG90aGVyOignYiAtPiAnYykgLT4gJ2NcblxuICAgIHZhbCBjb21iaW5lXG4gICAgICA6ICAoJ2EsICdkKSB0XG4gICAgICAtPiAoJ2IsICdkKSB0XG4gICAgICAtPiBmOignYSAtPiAnYiAtPiAnYylcbiAgICAgIC0+IG90aGVyOignZCAtPiAnZCAtPiAnZClcbiAgICAgIC0+ICgnYywgJ2QpIHRcblxuICAgIHZhbCBiaW5kIDogKCdhLCAnYikgdCAtPiBmOignYSAtPiAoJ2MsICdiKSB0KSAtPiAoJ2MsICdiKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTVxuICBvcGVuIFdpdGhfcmV0dXJuXG5cbiAgbGV0IG1hcCB0IH5mID0gYmluZCB0IH5mOihmdW4geCAtPiByZXR1cm4gKGYgeCkpXG5cbiAgaW5jbHVkZSBNb25hZC5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGVuZClcblxuICBtb2R1bGUgQXBwID0gQXBwbGljYXRpdmUuTWFrZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcblxuICAgICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgICAgbGV0IGFwcGx5IHQxIHQyID0gYmluZCB0MSB+ZjooZnVuIGYgLT4gYmluZCB0MiB+ZjooZnVuIHggLT4gcmV0dXJuIChmIHgpKSlcbiAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGVuZClcblxuICBpbmNsdWRlIEFwcFxuXG4gIGxldCBjb21iaW5lX2FsbCA9XG4gICAgbGV0IHJlYyBvdGhlcl9sb29wIGYgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gb3RoZXIgYWNjXG4gICAgICB8IHQgOjogdHMgLT5cbiAgICAgICAgZWl0aGVyXG4gICAgICAgICAgdFxuICAgICAgICAgIH5yZXR1cm46KGZ1biBfIC0+IG90aGVyX2xvb3AgZiBhY2MgdHMpXG4gICAgICAgICAgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgKGYgYWNjIG8pIHRzKVxuICAgIGluXG4gICAgbGV0IHJlYyByZXR1cm5fbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IHJldHVybiAoTGlzdC5yZXYgYWNjKVxuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlclxuICAgICAgICAgIHRcbiAgICAgICAgICB+cmV0dXJuOihmdW4geCAtPiByZXR1cm5fbG9vcCBmICh4IDo6IGFjYykgdHMpXG4gICAgICAgICAgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgbyB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIFtdIHRzXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfYWxsX3VuaXQgPVxuICAgIGxldCByZWMgb3RoZXJfbG9vcCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IG90aGVyIGFjY1xuICAgICAgfCB0IDo6IHRzIC0+XG4gICAgICAgIGVpdGhlclxuICAgICAgICAgIHRcbiAgICAgICAgICB+cmV0dXJuOihmdW4gKCkgLT4gb3RoZXJfbG9vcCBmIGFjYyB0cylcbiAgICAgICAgICB+b3RoZXI6KGZ1biBvIC0+IG90aGVyX2xvb3AgZiAoZiBhY2MgbykgdHMpXG4gICAgaW5cbiAgICBsZXQgcmVjIHJldHVybl9sb29wIGYgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgIHwgdCA6OiB0cyAtPlxuICAgICAgICBlaXRoZXIgdCB+cmV0dXJuOihmdW4gKCkgLT4gcmV0dXJuX2xvb3AgZiB0cykgfm90aGVyOihmdW4gbyAtPiBvdGhlcl9sb29wIGYgbyB0cylcbiAgICBpblxuICAgIGZ1biB0cyB+ZiAtPiByZXR1cm5fbG9vcCBmIHRzXG4gIDs7XG5cbiAgbGV0IHRvX29wdGlvbiB0ID0gZWl0aGVyIHQgfnJldHVybjpPcHRpb24uc29tZSB+b3RoZXI6KGZ1biBfIC0+IE5vbmUpXG4gIGxldCB2YWx1ZSB0IH5kZWZhdWx0ID0gZWl0aGVyIHQgfnJldHVybjpGbi5pZCB+b3RoZXI6KGZ1biBfIC0+IGRlZmF1bHQpXG5cbiAgbGV0IHdpdGhfcmV0dXJuIGYgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4gcmV0IC0+IG90aGVyIChmIChXaXRoX3JldHVybi5wcmVwZW5kIHJldCB+ZjpyZXR1cm4pKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlyc3QgPSBNYWtlX2ZvY3VzZWQgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0XG5cbiAgICBsZXQgcmV0dXJuID0gZmlyc3RcbiAgICBsZXQgb3RoZXIgPSBzZWNvbmRcblxuICAgIGxldCBlaXRoZXIgdCB+cmV0dXJuIH5vdGhlciA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRmlyc3QgeCAtPiByZXR1cm4geFxuICAgICAgfCBTZWNvbmQgeSAtPiBvdGhlciB5XG4gICAgOztcblxuICAgIGxldCBjb21iaW5lIHQxIHQyIH5mIH5vdGhlciA9XG4gICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgfCBGaXJzdCB4LCBGaXJzdCB5IC0+IEZpcnN0IChmIHggeSlcbiAgICAgIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IFNlY29uZCAob3RoZXIgeCB5KVxuICAgICAgfCBTZWNvbmQgeCwgXyB8IF8sIFNlY29uZCB4IC0+IFNlY29uZCB4XG4gICAgOztcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEZpcnN0IHggLT4gZiB4XG4gICAgICAoKiBSZXVzZSB0aGUgdmFsdWUgaW4gb3JkZXIgdG8gYXZvaWQgYWxsb2NhdGlvbi4gKilcbiAgICAgIHwgU2Vjb25kIF8gYXMgeSAtPiB5XG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgU2Vjb25kID0gTWFrZV9mb2N1c2VkIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdiLCAnYSkgdFxuXG4gICAgbGV0IHJldHVybiA9IHNlY29uZFxuICAgIGxldCBvdGhlciA9IGZpcnN0XG5cbiAgICBsZXQgZWl0aGVyIHQgfnJldHVybiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFNlY29uZCB5IC0+IHJldHVybiB5XG4gICAgICB8IEZpcnN0IHggLT4gb3RoZXIgeFxuICAgIDs7XG5cbiAgICBsZXQgY29tYmluZSB0MSB0MiB+ZiB+b3RoZXIgPVxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgU2Vjb25kIHgsIFNlY29uZCB5IC0+IFNlY29uZCAoZiB4IHkpXG4gICAgICB8IEZpcnN0IHgsIEZpcnN0IHkgLT4gRmlyc3QgKG90aGVyIHggeSlcbiAgICAgIHwgRmlyc3QgeCwgXyB8IF8sIEZpcnN0IHggLT4gRmlyc3QgeFxuICAgIDs7XG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBTZWNvbmQgeCAtPiBmIHhcbiAgICAgICgqIFJldXNlIHRoZSB2YWx1ZSBpbiBvcmRlciB0byBhdm9pZCBhbGxvY2F0aW9uLCBsaWtlIFtGaXJzdC5iaW5kXSBhYm92ZS4gKilcbiAgICAgIHwgRmlyc3QgXyBhcyB5IC0+IHlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBFeHBvcnQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2YsICdzKSBfZWl0aGVyID0gKCdmLCAncykgdCA9XG4gICAgfCBGaXJzdCBvZiAnZlxuICAgIHwgU2Vjb25kIG9mICdzXG5lbmRcbiIsImluY2x1ZGUgSW5kZXhlZF9jb250YWluZXJfaW50ZlxuXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG5sZXQgaXRlcmkgfmZvbGQgdCB+ZiA9XG4gIGlnbm9yZVxuICAgIChmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIGkgeCAtPlxuICAgICAgIGYgaSB4O1xuICAgICAgIGkgKyAxKVxuICAgICA6IGludClcbjs7XG5cbmxldCBmb2xkaSB+Zm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBmb2xkIHQgfmluaXQgfmY6KGZ1biBhY2MgdiAtPlxuICAgIGxldCBhY2MgPSBmICFpIGFjYyB2IGluXG4gICAgaSA6PSAhaSArIDE7XG4gICAgYWNjKVxuOztcblxubGV0IGNvdW50aSB+Zm9sZGkgdCB+ZiA9IGZvbGRpIHQgfmluaXQ6MCB+ZjooZnVuIGkgbiBhIC0+IGlmIGYgaSBhIHRoZW4gbiArIDEgZWxzZSBuKVxuXG5sZXQgZXhpc3RzaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICBmYWxzZSlcbjs7XG5cbmxldCBmb3JfYWxsaSB+aXRlcmkgYyB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIGMgfmY6KGZ1biBpIHggLT4gaWYgbm90IChmIGkgeCkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBmaW5kX21hcGkgfml0ZXJpIHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSB4IC0+XG4gICAgICBtYXRjaCBmIGkgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIGFzIHJlcyAtPiByLnJldHVybiByZXMpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZGkgfml0ZXJpIGMgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBpdGVyaSBjIH5mOihmdW4gaSB4IC0+IGlmIGYgaSB4IHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIHgpKSk7XG4gICAgTm9uZSlcbjs7XG5cbm1vZHVsZSBNYWtlX2dlbiAoVCA6IHNpZ1xuICAgIGluY2x1ZGUgQ29udGFpbmVyX2ludGYuTWFrZV9nZW5fYXJnXG5cbiAgICB2YWwgaXRlcmkgOiBbIGBEZWZpbmVfdXNpbmdfZm9sZCB8IGBDdXN0b20gb2YgKCdhIHQsICdhIGVsdCkgaXRlcmkgXVxuICAgIHZhbCBmb2xkaSA6IFsgYERlZmluZV91c2luZ19mb2xkIHwgYEN1c3RvbSBvZiAoJ2EgdCwgJ2EgZWx0LCBfKSBmb2xkaSBdXG4gIGVuZCkgOiBHZW5lcmljIHdpdGggdHlwZSAnYSB0IDo9ICdhIFQudCB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0ID0gc3RydWN0XG4gIGluY2x1ZGUgQ29udGFpbmVyLk1ha2VfZ2VuIChUKVxuXG4gIGxldCBpdGVyaSA9XG4gICAgbWF0Y2ggVC5pdGVyaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGl0ZXJpIC0+IGl0ZXJpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmYgLT4gaXRlcmkgfmZvbGQgdCB+ZlxuICA7O1xuXG4gIGxldCBmb2xkaSA9XG4gICAgbWF0Y2ggVC5mb2xkaSB3aXRoXG4gICAgfCBgQ3VzdG9tIGZvbGRpIC0+IGZvbGRpXG4gICAgfCBgRGVmaW5lX3VzaW5nX2ZvbGQgLT4gZnVuIHQgfmluaXQgfmYgLT4gZm9sZGkgfmZvbGQgdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBjb3VudGkgdCB+ZiA9IGNvdW50aSB+Zm9sZGkgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gZXhpc3RzaSB+aXRlcmkgdCB+ZlxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9IGZvcl9hbGxpIH5pdGVyaSB0IH5mXG4gIGxldCBmaW5kX21hcGkgdCB+ZiA9IGZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxuICBsZXQgZmluZGkgdCB+ZiA9IGZpbmRpIH5pdGVyaSB0IH5mXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgbW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoVClcblxuICAoKiBOb3QgcGFydCBvZiBbQ29udGFpbmVyLkdlbmVyaWNdLiAqKVxuICBsZXQgbWVtID0gQy5tZW1cblxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gJ2FcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2UwIChUIDogTWFrZTBfYXJnKSA9IHN0cnVjdFxuICBtb2R1bGUgQyA9IENvbnRhaW5lci5NYWtlMCAoVClcblxuICAoKiBOb3QgcGFydCBvZiBbQ29udGFpbmVyLkdlbmVyaWNdLiAqKVxuICBsZXQgbWVtID0gQy5tZW1cblxuICBpbmNsdWRlIE1ha2VfZ2VuIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICB0eXBlICdhIHQgPSBULnRcbiAgICAgIHR5cGUgJ2EgZWx0ID0gVC5FbHQudFxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbnRhaW5lcl9pbnRmLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgTGlzdCA9IExpc3QxXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gICgqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZlxuICAgICB0aGUgc2VxdWVuY2UgKilcbiAgdHlwZSAoJ2EsICdzKSB0ID1cbiAgICB8IERvbmVcbiAgICB8IFNraXAgb2YgJ3NcbiAgICB8IFlpZWxkIG9mICdhICogJ3NcbiAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2EgJ3MuXG4gICAgKCdhIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3MgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnYSwgJ3MpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuICh0eXBlIGFfXzAwOV8gc19fMDEwXylcbiAgICAgICAgOiAgKChhX18wMDlfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gKHNfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAgICAgLT4gKGFfXzAwOV8sIHNfXzAxMF8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgICAgZnVuIF9vZl9hX18wMDFfIF9vZl9zX18wMDJfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgRG9uZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJEb25lXCJcbiAgICAgICAgfCBTa2lwIGFyZzBfXzAwM18gLT5cbiAgICAgICAgICBsZXQgcmVzMF9fMDA0XyA9IF9vZl9zX18wMDJfIGFyZzBfXzAwM18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJTa2lwXCI7IHJlczBfXzAwNF8gXVxuICAgICAgICB8IFlpZWxkIChhcmcwX18wMDVfLCBhcmcxX18wMDZfKSAtPlxuICAgICAgICAgIGxldCByZXMwX18wMDdfID0gX29mX2FfXzAwMV8gYXJnMF9fMDA1X1xuICAgICAgICAgIGFuZCByZXMxX18wMDhfID0gX29mX3NfXzAwMl8gYXJnMV9fMDA2XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIllpZWxkXCI7IHJlczBfXzAwN187IHJlczFfXzAwOF8gXVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxub3BlbiBTdGVwXG5cbigqICdhIGlzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlLCAncyBpcyB0aGUgc3RhdGUgdGhhdCB3aWxsIHByb2R1Y2UgdGhlIHJlbWFpbmRlciBvZiB0aGVcbiAgIHNlcXVlbmNlICopXG50eXBlICtfIHQgPSBTZXF1ZW5jZSA6ICdzICogKCdzIC0+ICgnYSwgJ3MpIFN0ZXAudCkgLT4gJ2EgdFxudHlwZSAnYSBzZXF1ZW5jZSA9ICdhIHRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgbmV4dF9zdGVwIChTZXF1ZW5jZSAocywgZikpID1cbiAgICBtYXRjaCBmIHMgd2l0aFxuICAgIHwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMgLT4gU2tpcCAoU2VxdWVuY2UgKHMsIGYpKVxuICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBTZXF1ZW5jZSAocywgZikpXG4gIDs7XG5cbiAgbGV0IGRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmYgfmZpbmlzaCA9XG4gICAgbGV0IHJlYyBsb29wIHMgbmV4dCBmaW5pc2ggZiBhY2MgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgICB8IFNraXAgcyAtPiBmIGFjYyBOb25lIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGYgYWNjIChTb21lIGEpIH5rOihsb29wIHMgbmV4dCBmaW5pc2ggZilcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgcyBuZXh0IGZpbmlzaCBmIGluaXRcbiAgOztcbmVuZFxuXG5sZXQgdW5mb2xkX3N0ZXAgfmluaXQgfmYgPSBTZXF1ZW5jZSAoaW5pdCwgZilcblxubGV0IHVuZm9sZCB+aW5pdCB+ZiA9XG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOihmdW4gcyAtPlxuICAgIG1hdGNoIGYgcyB3aXRoXG4gICAgfCBOb25lIC0+IFN0ZXAuRG9uZVxuICAgIHwgU29tZSAoYSwgcykgLT4gU3RlcC5ZaWVsZCAoYSwgcykpXG47O1xuXG5sZXQgdW5mb2xkX3dpdGggcyB+aW5pdCB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIChpbml0LCBzKVxuICAgICAgLCBmdW4gKHNlZWQsIHMpIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKHNlZWQsIHMpXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAgICAgKG1hdGNoIGYgc2VlZCBhIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgICAgfCBTa2lwIHNlZWQgLT4gU2tpcCAoc2VlZCwgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgc2VlZCkgLT4gWWllbGQgKGEsIChzZWVkLCBzKSkpIClcbjs7XG5cbmxldCB1bmZvbGRfd2l0aF9hbmRfZmluaXNoIHMgfmluaXQgfnJ1bm5pbmdfc3RlcCB+aW5uZXJfZmluaXNoZWQgfmZpbmlzaGluZ19zdGVwID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYElubmVyX3J1bm5pbmcgKGluaXQsIHMpXG4gICAgICAsIGZ1biBzdGF0ZSAtPlxuICAgICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICAgIHwgYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dCBpbm5lcl9zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBTa2lwIChgSW5uZXJfZmluaXNoZWQgKGlubmVyX2ZpbmlzaGVkIHN0YXRlKSlcbiAgICAgICAgICAgfCBTa2lwIGlubmVyX3N0YXRlIC0+IFNraXAgKGBJbm5lcl9ydW5uaW5nIChzdGF0ZSwgaW5uZXJfc3RhdGUpKVxuICAgICAgICAgICB8IFlpZWxkICh4LCBpbm5lcl9zdGF0ZSkgLT5cbiAgICAgICAgICAgICAobWF0Y2ggcnVubmluZ19zdGVwIHN0YXRlIHggd2l0aFxuICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICB8IFNraXAgc3RhdGUgLT4gU2tpcCAoYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkpXG4gICAgICAgICAgICAgIHwgWWllbGQgKHksIHN0YXRlKSAtPiBZaWVsZCAoeSwgYElubmVyX3J1bm5pbmcgKHN0YXRlLCBpbm5lcl9zdGF0ZSkpKSlcbiAgICAgICAgfCBgSW5uZXJfZmluaXNoZWQgc3RhdGUgLT5cbiAgICAgICAgICAobWF0Y2ggZmluaXNoaW5nX3N0ZXAgc3RhdGUgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgc3RhdGUgLT4gU2tpcCAoYElubmVyX2ZpbmlzaGVkIHN0YXRlKVxuICAgICAgICAgICB8IFlpZWxkICh5LCBzdGF0ZSkgLT4gWWllbGQgKHksIGBJbm5lcl9maW5pc2hlZCBzdGF0ZSkpIClcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDpsIH5mOihmdW5jdGlvblxuICAgIHwgW10gLT4gRG9uZVxuICAgIHwgeCA6OiBsIC0+IFlpZWxkICh4LCBsKSlcbjs7XG5cblxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzZWVkIHYgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgIHwgRG9uZSAtPiB2XG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIHYgbmV4dCBmXG4gICAgfCBZaWVsZCAoYSwgcykgLT4gbG9vcCBzIChmIHYgYSkgbmV4dCBmXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgaW5pdCBuZXh0IGZcbjs7XG5cbmxldCB0b19saXN0X3JldiB0ID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gbCB4IC0+IHggOjogbClcblxuXG5sZXQgdG9fbGlzdCAoU2VxdWVuY2UgKHMsIG5leHQpKSA9XG4gIGxldCBzYWZlX3RvX2xpc3QgdCA9IExpc3QucmV2ICh0b19saXN0X3JldiB0KSBpblxuICBsZXQgcmVjIHRvX2xpc3QgcyBuZXh0IGkgPVxuICAgIGlmIGkgPSAwXG4gICAgdGhlbiBzYWZlX3RvX2xpc3QgKFNlcXVlbmNlIChzLCBuZXh0KSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICB8IERvbmUgLT4gW11cbiAgICAgIHwgU2tpcCBzIC0+IHRvX2xpc3QgcyBuZXh0IGlcbiAgICAgIHwgWWllbGQgKGEsIHMpIC0+IGEgOjogdG9fbGlzdCBzIG5leHQgKGkgLSAxKSlcbiAgaW5cbiAgdG9fbGlzdCBzIG5leHQgNTAwXG47O1xuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxuXG5sZXQgcmFuZ2UgPyhzdHJpZGUgPSAxKSA/KHN0YXJ0ID0gYGluY2x1c2l2ZSkgPyhzdG9wID0gYGV4Y2x1c2l2ZSkgc3RhcnRfdiBzdG9wX3YgPVxuICBsZXQgc3RlcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBgaW5jbHVzaXZlIHdoZW4gc3RyaWRlID49IDAgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPiBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gICAgfCBgaW5jbHVzaXZlIC0+IGZ1biBpIC0+IGlmIGkgPCBzdG9wX3YgdGhlbiBEb25lIGVsc2UgWWllbGQgKGksIGkgKyBzdHJpZGUpXG4gICAgfCBgZXhjbHVzaXZlIHdoZW4gc3RyaWRlID49IDAgLT5cbiAgICAgIGZ1biBpIC0+IGlmIGkgPj0gc3RvcF92IHRoZW4gRG9uZSBlbHNlIFlpZWxkIChpLCBpICsgc3RyaWRlKVxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBmdW4gaSAtPiBpZiBpIDw9IHN0b3BfdiB0aGVuIERvbmUgZWxzZSBZaWVsZCAoaSwgaSArIHN0cmlkZSlcbiAgaW5cbiAgbGV0IGluaXQgPVxuICAgIG1hdGNoIHN0YXJ0IHdpdGhcbiAgICB8IGBpbmNsdXNpdmUgLT4gc3RhcnRfdlxuICAgIHwgYGV4Y2x1c2l2ZSAtPiBzdGFydF92ICsgc3RyaWRlXG4gIGluXG4gIHVuZm9sZF9zdGVwIH5pbml0IH5mOnN0ZXBcbjs7XG5cbmxldCBvZl9sYXp5IHRfbGF6eSA9XG4gIHVuZm9sZF9zdGVwIH5pbml0OnRfbGF6eSB+ZjooZnVuIHRfbGF6eSAtPlxuICAgIGxldCAoU2VxdWVuY2UgKHMsIG5leHQpKSA9IExhenkuZm9yY2UgdF9sYXp5IGluXG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzIC0+XG4gICAgICBTa2lwXG4gICAgICAgIChsZXQgdiA9IFNlcXVlbmNlIChzLCBuZXh0KSBpblxuICAgICAgICAgbGF6eSB2KVxuICAgIHwgWWllbGQgKHgsIHMpIC0+XG4gICAgICBZaWVsZFxuICAgICAgICAoIHhcbiAgICAgICAgLCBsZXQgdiA9IFNlcXVlbmNlIChzLCBuZXh0KSBpblxuICAgICAgICAgIGxhenkgdiApKVxuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggc2VlZFxuICAgICAgLCBmdW4gc2VlZCAtPlxuICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGYgYSwgcykgKVxuOztcblxubGV0IG1hcGkgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGksIHMpXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChmIGkgYSwgKGkgKyAxLCBzKSkgKVxuOztcblxubGV0IGZvbGRpbmdfbWFwIHQgfmluaXQgfmYgPVxuICB1bmZvbGRfd2l0aCB0IH5pbml0IH5mOihmdW4gYWNjIHggLT5cbiAgICBsZXQgYWNjLCB4ID0gZiBhY2MgeCBpblxuICAgIFlpZWxkICh4LCBhY2MpKVxuOztcblxubGV0IGZvbGRpbmdfbWFwaSB0IH5pbml0IH5mID1cbiAgdW5mb2xkX3dpdGggdCB+aW5pdDooMCwgaW5pdCkgfmY6KGZ1biAoaSwgYWNjKSB4IC0+XG4gICAgbGV0IGFjYywgeCA9IGYgaSBhY2MgeCBpblxuICAgIFlpZWxkICh4LCAoaSArIDEsIGFjYykpKVxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggc2VlZFxuICAgICAgLCBmdW4gc2VlZCAtPlxuICAgICAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIHNcbiAgICAgICAgfCBZaWVsZCAoYSwgcykgd2hlbiBmIGEgLT4gWWllbGQgKGEsIHMpXG4gICAgICAgIHwgWWllbGQgKF8sIHMpIC0+IFNraXAgcyApXG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbWFwIH5mOnNuZCAoZmlsdGVyIChtYXBpIHQgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKSlcbjs7XG5cbmxldCBsZW5ndGggdCA9XG4gIGxldCByZWMgbG9vcCBpIHMgbmV4dCA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gaVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgaSBzIG5leHRcbiAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIChpICsgMSkgcyBuZXh0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIDAgc2VlZCBuZXh0XG47O1xuXG5sZXQgdG9fbGlzdF9yZXZfd2l0aF9sZW5ndGggdCA9IGZvbGQgdCB+aW5pdDooW10sIDApIH5mOihmdW4gKGwsIGkpIHggLT4geCA6OiBsLCBpICsgMSlcblxubGV0IHRvX2FycmF5IHQgPVxuICBsZXQgbCwgbGVuID0gdG9fbGlzdF9yZXZfd2l0aF9sZW5ndGggdCBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgeCA6OiBsIC0+XG4gICAgbGV0IGEgPSBBcnJheS5jcmVhdGUgfmxlbiB4IGluXG4gICAgbGV0IHJlYyBsb29wIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IChpID0gLTEpXG4gICAgICB8IHggOjogbCAtPlxuICAgICAgICBhLihpKSA8LSB4O1xuICAgICAgICBsb29wIChpIC0gMSkgbFxuICAgIGluXG4gICAgbG9vcCAobGVuIC0gMikgbDtcbiAgICBhXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBZaWVsZCAoYSwgXykgd2hlbiBmIGEgLT4gU29tZSBhXG4gICAgfCBZaWVsZCAoXywgcykgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIGYgYSB3aXRoXG4gICAgICAgfCBOb25lIC0+IGxvb3AgcyBuZXh0IGZcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgaSA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gTm9uZVxuICAgIHwgWWllbGQgKGEsIHMpIC0+XG4gICAgICAobWF0Y2ggZiBpIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBsb29wIHMgbmV4dCBmIChpICsgMSlcbiAgICAgICB8IHNvbWVfYiAtPiBzb21lX2IpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBmb3JfYWxsIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIG5vdCAoZiBhKSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGZcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHMgbmV4dCBmIGkgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IHRydWVcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIG5vdCAoZiBpIGEpIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoXywgcykgLT4gbG9vcCBzIG5leHQgZiAoaSArIDEpXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBpXG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IFNlcXVlbmNlIChzZWVkLCBuZXh0KSAtPiBsb29wIHNlZWQgbmV4dCBmIDBcbjs7XG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gZmFsc2VcbiAgICB8IFlpZWxkIChhLCBfKSB3aGVuIGYgYSAtPiB0cnVlXG4gICAgfCBZaWVsZCAoXywgcykgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBpID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmYWxzZVxuICAgIHwgWWllbGQgKGEsIF8pIHdoZW4gZiBpIGEgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgcyBuZXh0IGYgKGkgKyAxKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGYgaVxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZiAwXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgbGV0IHJlYyBsb29wIHNlZWQgbmV4dCBmID1cbiAgICBtYXRjaCBuZXh0IHNlZWQgd2l0aFxuICAgIHwgRG9uZSAtPiAoKVxuICAgIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGZcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgZiBhO1xuICAgICAgbG9vcCBzIG5leHQgZlxuICBpblxuICBtYXRjaCB0IHdpdGhcbiAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT4gbG9vcCBzZWVkIG5leHQgZlxuOztcblxubGV0IGlzX2VtcHR5IHQgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiB0cnVlXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIF8gLT4gZmFsc2VcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0XG47O1xuXG5sZXQgbWVtIHQgYSB+ZXF1YWwgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGEgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IGZhbHNlXG4gICAgfCBZaWVsZCAoYiwgXykgd2hlbiBlcXVhbCBhIGIgLT4gdHJ1ZVxuICAgIHwgWWllbGQgKF8sIHMpIHwgU2tpcCBzIC0+IGxvb3AgcyBuZXh0IGFcbiAgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+IGxvb3Agc2VlZCBuZXh0IGFcbjs7XG5cbmxldCBlbXB0eSA9IFNlcXVlbmNlICgoKSwgZnVuICgpIC0+IERvbmUpXG5cbmxldCBiaW5kIHQgfmYgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5mOihmdW5jdGlvblxuICAgICAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCksIHJlc3QgLT5cbiAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICB8IERvbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCBTZXF1ZW5jZSAoc2VlZCwgbmV4dCkgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG5leHQgc2VlZCB3aXRoXG4gICAgICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoZW1wdHksIFNlcXVlbmNlIChzLCBuZXh0KSlcbiAgICAgICAgICAgICAgIHwgWWllbGQgKGEsIHMpIC0+IFNraXAgKGYgYSwgU2VxdWVuY2UgKHMsIG5leHQpKSkpXG4gICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChTZXF1ZW5jZSAocywgbmV4dCksIHJlc3QpXG4gICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgKFNlcXVlbmNlIChzLCBuZXh0KSwgcmVzdCkpKSlcbiAgICB+aW5pdDooZW1wdHksIHQpXG47O1xuXG5sZXQgcmV0dXJuIHggPVxuICB1bmZvbGRfc3RlcCB+aW5pdDooU29tZSB4KSB+ZjooZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gRG9uZVxuICAgIHwgU29tZSB4IC0+IFlpZWxkICh4LCBOb25lKSlcbjs7XG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgZW5kKVxuXG5sZXQgbnRoIHMgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgaSBzIG5leHQgPVxuICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBOb25lXG4gICAgICB8IFNraXAgcyAtPiBsb29wIGkgcyBuZXh0XG4gICAgICB8IFlpZWxkIChhLCBzKSAtPiBpZiBwaHlzX2VxdWFsIGkgMCB0aGVuIFNvbWUgYSBlbHNlIGxvb3AgKGkgLSAxKSBzIG5leHRcbiAgICBpblxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgbiBzIG5leHQpXG47O1xuXG5sZXQgbnRoX2V4biBzIG4gPVxuICBpZiBuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiU2VxdWVuY2UubnRoXCJcbiAgZWxzZSAoXG4gICAgbWF0Y2ggbnRoIHMgbiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UubnRoXCJcbiAgICB8IFNvbWUgeCAtPiB4KVxuOztcblxubW9kdWxlIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgfCBMZWZ0IG9mICdhXG4gICAgfCBSaWdodCBvZiAnYlxuICAgIHwgQm90aCBvZiAnYSAqICdiXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgOlxuICAgICdhICdiLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gICAgPVxuICAgIGZ1biBfY21wX19hIF9jbXBfX2IgYV9fMDExXyBiX18wMTJfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDExXyBiX18wMTJfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMTFfLCBiX18wMTJfIHdpdGhcbiAgICAgIHwgTGVmdCBfYV9fMDEzXywgTGVmdCBfYl9fMDE0XyAtPiBfY21wX19hIF9hX18wMTNfIF9iX18wMTRfXG4gICAgICB8IExlZnQgXywgXyAtPiAtMVxuICAgICAgfCBfLCBMZWZ0IF8gLT4gMVxuICAgICAgfCBSaWdodCBfYV9fMDE1XywgUmlnaHQgX2JfXzAxNl8gLT4gX2NtcF9fYiBfYV9fMDE1XyBfYl9fMDE2X1xuICAgICAgfCBSaWdodCBfLCBfIC0+IC0xXG4gICAgICB8IF8sIFJpZ2h0IF8gLT4gMVxuICAgICAgfCBCb3RoIChfYV9fMDE3XywgX2FfXzAxOV8pLCBCb3RoIChfYl9fMDE4XywgX2JfXzAyMF8pIC0+XG4gICAgICAgIChtYXRjaCBfY21wX19hIF9hX18wMTdfIF9iX18wMThfIHdpdGhcbiAgICAgICAgIHwgMCAtPiBfY21wX19iIF9hX18wMTlfIF9iX18wMjBfXG4gICAgICAgICB8IG4gLT4gbikpXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90XG4gICAgOiB0eXBlIGEgYi5cbiAgICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgICAtPiAoUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgICAtPiAoYSwgYikgdFxuICAgICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIGZ1biBfaGFzaF9mb2xkX2EgX2hhc2hfZm9sZF9iIGhzdiBhcmcgLT5cbiAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICB8IExlZnQgX2EwIC0+XG4gICAgICAgIGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDAgaW5cbiAgICAgICAgbGV0IGhzdiA9IGhzdiBpblxuICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgfCBSaWdodCBfYTAgLT5cbiAgICAgICAgbGV0IGhzdiA9IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMSBpblxuICAgICAgICBsZXQgaHN2ID0gaHN2IGluXG4gICAgICAgIF9oYXNoX2ZvbGRfYiBoc3YgX2EwXG4gICAgICB8IEJvdGggKF9hMCwgX2ExKSAtPlxuICAgICAgICBsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAyIGluXG4gICAgICAgIGxldCBoc3YgPVxuICAgICAgICAgIGxldCBoc3YgPSBoc3YgaW5cbiAgICAgICAgICBfaGFzaF9mb2xkX2EgaHN2IF9hMFxuICAgICAgICBpblxuICAgICAgICBfaGFzaF9mb2xkX2IgaHN2IF9hMVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdhICdiLlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAnYilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNDRfIGJfXzA0NV8pXG4gICAgICAgIDogICgoU2V4cGxpYjAuU2V4cC50IC0+IGFfXzA0NF8pIC0+IChTZXhwbGliMC5TZXhwLnQgLT4gYl9fMDQ1XylcbiAgICAgICAgICAgIC0+IFNleHBsaWIwLlNleHAudCAtPiAoYV9fMDQ0XywgYl9fMDQ1XykgdCkgLT5cbiAgICAgIGxldCBlcnJvcl9zb3VyY2VfXzAyNV8gPSBcInNlcXVlbmNlLm1sLk1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnRcIiBpblxuICAgICAgZnVuIF9vZl9hX18wMjFfIF9vZl9iX18wMjJfIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJsZWZ0XCIgfCBcIkxlZnRcIikgYXMgX3RhZ19fMDI4XykgOjogc2V4cF9hcmdzX18wMjlfKSBhc1xuICAgICAgICAgIF9zZXhwX18wMjdfIC0+XG4gICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDI5XyB3aXRoXG4gICAgICAgICAgIHwgWyBhcmcwX18wMzBfIF0gLT5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMDMxXyA9IF9vZl9hX18wMjFfIGFyZzBfXzAzMF8gaW5cbiAgICAgICAgICAgICBMZWZ0IHJlczBfXzAzMV9cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjVfXG4gICAgICAgICAgICAgICBfdGFnX18wMjhfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDI3XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIF90YWdfXzAzM18pIDo6IHNleHBfYXJnc19fMDM0XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDMyXyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzNF8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDM1XyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzAzNl8gPSBfb2ZfYl9fMDIyXyBhcmcwX18wMzVfIGluXG4gICAgICAgICAgICAgUmlnaHQgcmVzMF9fMDM2X1xuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNV9cbiAgICAgICAgICAgICAgIF90YWdfXzAzM19cbiAgICAgICAgICAgICAgIF9zZXhwX18wMzJfKVxuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiYm90aFwiIHwgXCJCb3RoXCIpIGFzIF90YWdfXzAzOF8pIDo6IHNleHBfYXJnc19fMDM5XykgYXNcbiAgICAgICAgICBfc2V4cF9fMDM3XyAtPlxuICAgICAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAzOV8gd2l0aFxuICAgICAgICAgICB8IFsgYXJnMF9fMDQwXzsgYXJnMV9fMDQxXyBdIC0+XG4gICAgICAgICAgICAgbGV0IHJlczBfXzA0Ml8gPSBfb2ZfYV9fMDIxXyBhcmcwX18wNDBfXG4gICAgICAgICAgICAgYW5kIHJlczFfXzA0M18gPSBfb2ZfYl9fMDIyXyBhcmcxX18wNDFfIGluXG4gICAgICAgICAgICAgQm90aCAocmVzMF9fMDQyXywgcmVzMV9fMDQzXylcbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wMjVfXG4gICAgICAgICAgICAgICBfdGFnX18wMzhfXG4gICAgICAgICAgICAgICBfc2V4cF9fMDM3XylcbiAgICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibGVmdFwiIHwgXCJMZWZ0XCIpIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjZfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInJpZ2h0XCIgfCBcIlJpZ2h0XCIpIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ190YWtlc19hcmdzIGVycm9yX3NvdXJjZV9fMDI1XyBzZXhwX18wMjZfXG4gICAgICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImJvdGhcIiB8IFwiQm90aFwiKSBhcyBzZXhwX18wMjZfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI2X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDI0XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI0X1xuICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMjVfIHNleHBfXzAyNF9cbiAgICAgICAgfCBzZXhwX18wMjRfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyNV8gc2V4cF9fMDI0X1xuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdhICdiLlxuICAgICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgLT4gKCdiIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biAodHlwZSBhX18wNTZfIGJfXzA1N18pXG4gICAgICAgIDogICgoYV9fMDU2XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IChiX18wNTdfIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgICAgICAgIC0+IChhX18wNTZfLCBiX18wNTdfKSB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgICAgIGZ1biBfb2ZfYV9fMDQ2XyBfb2ZfYl9fMDQ3XyAtPiBmdW5jdGlvblxuICAgICAgICB8IExlZnQgYXJnMF9fMDQ4XyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNDlfID0gX29mX2FfXzA0Nl8gYXJnMF9fMDQ4XyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkxlZnRcIjsgcmVzMF9fMDQ5XyBdXG4gICAgICAgIHwgUmlnaHQgYXJnMF9fMDUwXyAtPlxuICAgICAgICAgIGxldCByZXMwX18wNTFfID0gX29mX2JfXzA0N18gYXJnMF9fMDUwXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlJpZ2h0XCI7IHJlczBfXzA1MV8gXVxuICAgICAgICB8IEJvdGggKGFyZzBfXzA1Ml8sIGFyZzFfXzA1M18pIC0+XG4gICAgICAgICAgbGV0IHJlczBfXzA1NF8gPSBfb2ZfYV9fMDQ2XyBhcmcwX18wNTJfXG4gICAgICAgICAgYW5kIHJlczFfXzA1NV8gPSBfb2ZfYl9fMDQ3XyBhcmcxX18wNTNfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQm90aFwiOyByZXMwX18wNTRfOyByZXMxX18wNTVfIF1cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciBfJ2Jfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIFZhcmlhbnRcbiAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgWyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJMZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Ffc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIlJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0X2NsYXVzZSB7IGFyZ3MgPSBDb25zIChfJ2Jfc2V4cF9ncmFtbWFyLnVudHlwZWQsIEVtcHR5KSB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIkJvdGhcIlxuICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgYXJncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXydhX3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXydiX3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5sZXQgbWVyZ2Vfd2l0aF9kdXBsaWNhdGVzIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSB+Y29tcGFyZSA9XG4gIGxldCB1bnNoYWRvd2VkX2NvbXBhcmUgPSBjb21wYXJlIGluXG4gIGxldCBvcGVuIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50IGluXG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFNraXAgczEsIHMyIC0+IFNraXAgKG5leHQxIHMxLCBzMilcbiAgICB8IHMxLCBTa2lwIHMyIC0+IFNraXAgKHMxLCBuZXh0MiBzMilcbiAgICB8IChZaWVsZCAoYSwgczEnKSBhcyBzMSksIChZaWVsZCAoYiwgczInKSBhcyBzMikgLT5cbiAgICAgIGxldCBjb21wYXJpc29uID0gdW5zaGFkb3dlZF9jb21wYXJlIGEgYiBpblxuICAgICAgaWYgY29tcGFyaXNvbiA8IDBcbiAgICAgIHRoZW4gWWllbGQgKExlZnQgYSwgKFNraXAgczEnLCBzMikpXG4gICAgICBlbHNlIGlmIGNvbXBhcmlzb24gPSAwXG4gICAgICB0aGVuIFlpZWxkIChCb3RoIChhLCBiKSwgKFNraXAgczEnLCBTa2lwIHMyJykpXG4gICAgICBlbHNlIFlpZWxkIChSaWdodCBiLCAoczEsIFNraXAgczInKSlcbiAgICB8IERvbmUsIERvbmUgLT4gRG9uZVxuICAgIHwgWWllbGQgKGEsIHMxKSwgRG9uZSAtPiBZaWVsZCAoTGVmdCBhLCAoU2tpcCBzMSwgRG9uZSkpXG4gICAgfCBEb25lLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChSaWdodCBiLCAoRG9uZSwgU2tpcCBzMikpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgbWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkIHMxIHMyIH5jb21wYXJlID1cbiAgbWFwIChtZXJnZV93aXRoX2R1cGxpY2F0ZXMgczEgczIgfmNvbXBhcmUpIH5mOihmdW5jdGlvblxuICAgIHwgTGVmdCB4IHwgUmlnaHQgeCB8IEJvdGggKHgsIF8pIC0+IHgpXG47O1xuXG5sZXQgKG1lcmdlIFtAZGVwcmVjYXRlZFxuICAgICAgIFwiW3NpbmNlIDIwMjEtMDddIEZvciBpZGVudGljYWwgYmVoYXZpb3IsIHVzZSBcXFxuICAgICAgICBbU2VxdWVuY2UubWVyZ2VfZGVkdXBlZF9hbmRfc29ydGVkXSwgYnV0IGNvbnNpZGVyIHVzaW5nIFxcXG4gICAgICAgIFtTZXF1ZW5jZS5tZXJnZV9zb3J0ZWRdIGluc3RlYWQuXCJdKVxuICA9XG4gIG1lcmdlX2RlZHVwZWRfYW5kX3NvcnRlZFxuOztcblxubGV0IG1lcmdlX3NvcnRlZCAoU2VxdWVuY2UgKHMxLCBuZXh0MSkpIChTZXF1ZW5jZSAoczIsIG5leHQyKSkgfmNvbXBhcmUgPVxuICBsZXQgbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gICAgfCAoWWllbGQgKGEsIHMxJykgYXMgczEpLCAoWWllbGQgKGIsIHMyJykgYXMgczIpIC0+XG4gICAgICBsZXQgY29tcGFyaXNvbiA9IGNvbXBhcmUgYSBiIGluXG4gICAgICBpZiBjb21wYXJpc29uIDw9IDAgdGhlbiBZaWVsZCAoYSwgKFNraXAgczEnLCBzMikpIGVsc2UgWWllbGQgKGIsIChzMSwgU2tpcCBzMicpKVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBZaWVsZCAoYSwgczEpLCBEb25lIC0+IFlpZWxkIChhLCAoU2tpcCBzMSwgRG9uZSkpXG4gICAgfCBEb25lLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChiLCAoRG9uZSwgU2tpcCBzMikpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgaGQgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgKGEsIF8pIC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHRcbjs7XG5cbmxldCBoZF9leG4gcyA9XG4gIG1hdGNoIGhkIHMgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJoZF9leG5cIlxuICB8IFNvbWUgYSAtPiBhXG47O1xuXG5sZXQgdGwgcyA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHMgbmV4dFxuICAgIHwgWWllbGQgKF8sIGEpIC0+IFNvbWUgYVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICAobWF0Y2ggbG9vcCBzIG5leHQgd2l0aFxuICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICB8IFNvbWUgcyAtPiBTb21lIChTZXF1ZW5jZSAocywgbmV4dCkpKVxuOztcblxubGV0IHRsX2VhZ2VybHlfZXhuIHMgPVxuICBtYXRjaCB0bCBzIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UudGxfZXhuXCJcbiAgfCBTb21lIHMgLT4gc1xuOztcblxubGV0IGxpZnRfaWRlbnRpdHkgbmV4dCBzID1cbiAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgfCBEb25lIC0+IERvbmVcbiAgfCBTa2lwIHMgLT4gU2tpcCAoYElkZW50aXR5IHMpXG4gIHwgWWllbGQgKGEsIHMpIC0+IFlpZWxkIChhLCBgSWRlbnRpdHkgcylcbjs7XG5cbmxldCBuZXh0IHMgPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0ID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHRcbiAgICB8IFlpZWxkIChhLCBzKSAtPiBTb21lIChhLCBTZXF1ZW5jZSAocywgbmV4dCkpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbmV4dFxuOztcblxubGV0IGZpbHRlcl9vcHQgcyA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNcbiAgICAgICwgZnVuIHMgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKE5vbmUsIHMpIC0+IFNraXAgc1xuICAgICAgICB8IFlpZWxkIChTb21lIGEsIHMpIC0+IFlpZWxkIChhLCBzKSApXG47O1xuXG5sZXQgZmlsdGVyX21hcCBzIH5mID0gZmlsdGVyX29wdCAobWFwIHMgfmYpXG5sZXQgZmlsdGVyX21hcGkgcyB+ZiA9IGZpbHRlcl9tYXAgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBzcGxpdF9uIHMgbiA9XG4gIGxldCByZWMgbG9vcCBzIGkgYWNjdW0gbmV4dCA9XG4gICAgaWYgaSA8PSAwXG4gICAgdGhlbiBMaXN0LnJldiBhY2N1bSwgU2VxdWVuY2UgKHMsIG5leHQpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IExpc3QucmV2IGFjY3VtLCBlbXB0eVxuICAgICAgfCBTa2lwIHMgLT4gbG9vcCBzIGkgYWNjdW0gbmV4dFxuICAgICAgfCBZaWVsZCAoYSwgcykgLT4gbG9vcCBzIChpIC0gMSkgKGEgOjogYWNjdW0pIG5leHQpXG4gIGluXG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPiBsb29wIHMgbiBbXSBuZXh0XG47O1xuXG5sZXQgY2h1bmtzX2V4biB0IG4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlNlcXVlbmNlLmNodW5rc19leG5cIlxuICBlbHNlXG4gICAgdW5mb2xkX3N0ZXAgfmluaXQ6dCB+ZjooZnVuIHQgLT5cbiAgICAgIG1hdGNoIHNwbGl0X24gdCBuIHdpdGhcbiAgICAgIHwgW10sIF9lbXB0eSAtPiBEb25lXG4gICAgICB8IChfIDo6IF8gYXMgeHMpLCB0IC0+IFlpZWxkICh4cywgdCkpXG47O1xuXG5sZXQgZmluZGkgcyB+ZiA9IGZpbmQgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biAoaSwgcykgLT4gZiBpIHMpXG5cbmxldCBmaW5kX2V4biBzIH5mID1cbiAgbWF0Y2ggZmluZCBzIH5mIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2VxdWVuY2UuZmluZF9leG5cIlxuICB8IFNvbWUgeCAtPiB4XG47O1xuXG5sZXQgYXBwZW5kIHMxIHMyID1cbiAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgfCBTZXF1ZW5jZSAoczEsIG5leHQxKSwgU2VxdWVuY2UgKHMyLCBuZXh0MikgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgRmlyc3RfbGlzdCBzMVxuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBGaXJzdF9saXN0IHMxIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQxIHMxIHdpdGhcbiAgICAgICAgICAgfCBEb25lIC0+IFNraXAgKGBTZWNvbmRfbGlzdCBzMilcbiAgICAgICAgICAgfCBTa2lwIHMxIC0+IFNraXAgKGBGaXJzdF9saXN0IHMxKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzMSkgLT4gWWllbGQgKGEsIGBGaXJzdF9saXN0IHMxKSlcbiAgICAgICAgfCBgU2Vjb25kX2xpc3QgczIgLT5cbiAgICAgICAgICAobWF0Y2ggbmV4dDIgczIgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgczIgLT4gU2tpcCAoYFNlY29uZF9saXN0IHMyKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzMikgLT4gWWllbGQgKGEsIGBTZWNvbmRfbGlzdCBzMikpIClcbjs7XG5cbmxldCBjb25jYXRfbWFwIHMgfmYgPSBiaW5kIHMgfmZcbmxldCBjb25jYXQgcyA9IGNvbmNhdF9tYXAgcyB+ZjpGbi5pZFxubGV0IGNvbmNhdF9tYXBpIHMgfmYgPSBjb25jYXRfbWFwIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgemlwIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIChhLCBzMSksIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKChhLCBiKSwgKFNraXAgczEsIFNraXAgczIpKVxuICAgIHwgRG9uZSwgXyB8IF8sIERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzMSwgczIgLT4gU2tpcCAobmV4dDEgczEsIHMyKVxuICAgIHwgczEsIFNraXAgczIgLT4gU2tpcCAoczEsIG5leHQyIHMyKVxuICBpblxuICBTZXF1ZW5jZSAoKFNraXAgczEsIFNraXAgczIpLCBuZXh0KVxuOztcblxubGV0IHppcF9mdWxsIChTZXF1ZW5jZSAoczEsIG5leHQxKSkgKFNlcXVlbmNlIChzMiwgbmV4dDIpKSA9XG4gIGxldCBuZXh0ID0gZnVuY3Rpb25cbiAgICB8IFlpZWxkIChhLCBzMSksIFlpZWxkIChiLCBzMikgLT4gWWllbGQgKGBCb3RoIChhLCBiKSwgKFNraXAgczEsIFNraXAgczIpKVxuICAgIHwgRG9uZSwgRG9uZSAtPiBEb25lXG4gICAgfCBTa2lwIHMxLCBzMiAtPiBTa2lwIChuZXh0MSBzMSwgczIpXG4gICAgfCBzMSwgU2tpcCBzMiAtPiBTa2lwIChzMSwgbmV4dDIgczIpXG4gICAgfCBEb25lLCBZaWVsZCAoYiwgczIpIC0+IFlpZWxkIChgUmlnaHQgYiwgKERvbmUsIG5leHQyIHMyKSlcbiAgICB8IFlpZWxkIChhLCBzMSksIERvbmUgLT4gWWllbGQgKGBMZWZ0IGEsIChuZXh0MSBzMSwgRG9uZSkpXG4gIGluXG4gIFNlcXVlbmNlICgoU2tpcCBzMSwgU2tpcCBzMiksIG5leHQpXG47O1xuXG5sZXQgYm91bmRlZF9sZW5ndGggKFNlcXVlbmNlIChzZWVkLCBuZXh0KSkgfmF0X21vc3QgPVxuICBsZXQgcmVjIGxvb3AgaSBzZWVkIG5leHQgPVxuICAgIGlmIGkgPiBhdF9tb3N0XG4gICAgdGhlbiBgR3JlYXRlclxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggbmV4dCBzZWVkIHdpdGhcbiAgICAgIHwgRG9uZSAtPiBgSXMgaVxuICAgICAgfCBTa2lwIHNlZWQgLT4gbG9vcCBpIHNlZWQgbmV4dFxuICAgICAgfCBZaWVsZCAoXywgc2VlZCkgLT4gbG9vcCAoaSArIDEpIHNlZWQgbmV4dClcbiAgaW5cbiAgbG9vcCAwIHNlZWQgbmV4dFxuOztcblxubGV0IGxlbmd0aF9pc19ib3VuZGVkX2J5ID8obWluID0gLTEpID9tYXggdCA9XG4gIGxldCBsZW5ndGhfaXNfYXRfbGVhc3QgKFNlcXVlbmNlIChzLCBuZXh0KSkgPVxuICAgIGxldCByZWMgbG9vcCBzIGFjYyA9XG4gICAgICBpZiBhY2MgPj0gbWluXG4gICAgICB0aGVuIHRydWVcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTa2lwIHMgLT4gbG9vcCBzIGFjY1xuICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBsb29wIHMgKGFjYyArIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIDBcbiAgaW5cbiAgbWF0Y2ggbWF4IHdpdGhcbiAgfCBOb25lIC0+IGxlbmd0aF9pc19hdF9sZWFzdCB0XG4gIHwgU29tZSBtYXggLT5cbiAgICAobWF0Y2ggYm91bmRlZF9sZW5ndGggdCB+YXRfbW9zdDptYXggd2l0aFxuICAgICB8IGBJcyBsZW4gd2hlbiBsZW4gPj0gbWluIC0+IHRydWVcbiAgICAgfCBfIC0+IGZhbHNlKVxuOztcblxubGV0IGl0ZXJpIHMgfmYgPSBpdGVyIChtYXBpIHMgfmY6KGZ1biBpIHMgLT4gaSwgcykpIH5mOihmdW4gKGksIHMpIC0+IGYgaSBzKVxuXG5sZXQgZm9sZGkgcyB+aW5pdCB+ZiA9XG4gIGZvbGQgfmluaXQgKG1hcGkgcyB+ZjooZnVuIGkgcyAtPiBpLCBzKSkgfmY6KGZ1biBhY2MgKGksIHMpIC0+IGYgaSBhY2Mgcylcbjs7XG5cbmxldCByZWR1Y2UgcyB+ZiA9XG4gIG1hdGNoIG5leHQgcyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSAoYSwgcykgLT4gU29tZSAoZm9sZCBzIH5pbml0OmEgfmYpXG47O1xuXG5sZXQgcmVkdWNlX2V4biBzIH5mID1cbiAgbWF0Y2ggcmVkdWNlIHMgfmYgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJTZXF1ZW5jZS5yZWR1Y2VfZXhuXCJcbiAgfCBTb21lIHJlcyAtPiByZXNcbjs7XG5cbmxldCBncm91cCAoU2VxdWVuY2UgKHMsIG5leHQpKSB+YnJlYWsgPVxuICB1bmZvbGRfc3RlcFxuICAgIH5pbml0OihTb21lIChbXSwgcykpXG4gICAgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgfCBTb21lIChhY2MsIHMpIC0+XG4gICAgICAgIChtYXRjaCBhY2MsIG5leHQgcyB3aXRoXG4gICAgICAgICB8IF8sIFNraXAgcyAtPiBTa2lwIChTb21lIChhY2MsIHMpKVxuICAgICAgICAgfCBbXSwgRG9uZSAtPiBEb25lXG4gICAgICAgICB8IGFjYywgRG9uZSAtPiBZaWVsZCAoTGlzdC5yZXYgYWNjLCBOb25lKVxuICAgICAgICAgfCBbXSwgWWllbGQgKGN1ciwgcykgLT4gU2tpcCAoU29tZSAoWyBjdXIgXSwgcykpXG4gICAgICAgICB8IChwcmV2IDo6IF8gYXMgYWNjKSwgWWllbGQgKGN1ciwgcykgLT5cbiAgICAgICAgICAgaWYgYnJlYWsgcHJldiBjdXJcbiAgICAgICAgICAgdGhlbiBZaWVsZCAoTGlzdC5yZXYgYWNjLCBTb21lIChbIGN1ciBdLCBzKSlcbiAgICAgICAgICAgZWxzZSBTa2lwIChTb21lIChjdXIgOjogYWNjLCBzKSkpKVxuOztcblxubGV0IGZpbmRfY29uc2VjdXRpdmVfZHVwbGljYXRlIChTZXF1ZW5jZSAocywgbmV4dCkpIH5lcXVhbCA9XG4gIGxldCByZWMgbG9vcCBsYXN0X2VsdCBzID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBOb25lXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBsYXN0X2VsdCBzXG4gICAgfCBZaWVsZCAoYSwgcykgLT5cbiAgICAgIChtYXRjaCBsYXN0X2VsdCB3aXRoXG4gICAgICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU29tZSAoYiwgYSlcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gbG9vcCAoU29tZSBhKSBzKVxuICBpblxuICBsb29wIE5vbmUgc1xuOztcblxubGV0IHJlbW92ZV9jb25zZWN1dGl2ZV9kdXBsaWNhdGVzIHMgfmVxdWFsID1cbiAgdW5mb2xkX3dpdGggcyB+aW5pdDpOb25lIH5mOihmdW4gcHJldiBhIC0+XG4gICAgbWF0Y2ggcHJldiB3aXRoXG4gICAgfCBTb21lIGIgd2hlbiBlcXVhbCBhIGIgLT4gU2tpcCAoU29tZSBhKVxuICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBZaWVsZCAoYSwgU29tZSBhKSlcbjs7XG5cbmxldCBjb3VudCBzIH5mID0gbGVuZ3RoIChmaWx0ZXIgcyB+ZilcbmxldCBjb3VudGkgdCB+ZiA9IGxlbmd0aCAoZmlsdGVyaSB0IH5mKVxubGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxubGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbmxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5cbmxldCBpbml0IG4gfmYgPVxuICB1bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gaSAtPiBpZiBpID49IG4gdGhlbiBEb25lIGVsc2UgWWllbGQgKGYgaSwgaSArIDEpKVxuOztcblxubGV0IHN1YiBzIH5wb3MgfmxlbiA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2Uuc3ViXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIGlmIGkgLSBwb3MgPj0gbGVuXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGkgPj0gcG9zIC0+IFlpZWxkIChhLCAoaSArIDEsIHMpKVxuICAgICAgICAgIHwgWWllbGQgKF8sIHMpIC0+IFNraXAgKGkgKyAxLCBzKSkgKVxuOztcblxubGV0IHRha2UgcyBsZW4gPVxuICBpZiBsZW4gPCAwIHRoZW4gZmFpbHdpdGggXCJTZXF1ZW5jZS50YWtlXCI7XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoICgwLCBzKVxuICAgICAgLCBmdW4gKGksIHMpIC0+XG4gICAgICAgIGlmIGkgPj0gbGVuXG4gICAgICAgIHRoZW4gRG9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoaSwgcylcbiAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgKGkgKyAxLCBzKSkpIClcbjs7XG5cbmxldCBkcm9wIHMgbGVuID1cbiAgaWYgbGVuIDwgMCB0aGVuIGZhaWx3aXRoIFwiU2VxdWVuY2UuZHJvcFwiO1xuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCAoMCwgcylcbiAgICAgICwgZnVuIChpLCBzKSAtPlxuICAgICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChpLCBzKVxuICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGkgPj0gbGVuIC0+IFlpZWxkIChhLCAoaSArIDEsIHMpKVxuICAgICAgICB8IFlpZWxkIChfLCBzKSAtPiBTa2lwIChpICsgMSwgcykgKVxuOztcblxubGV0IHRha2Vfd2hpbGUgcyB+ZiA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IFNlcXVlbmNlIChzLCBuZXh0KSAtPlxuICAgIFNlcXVlbmNlXG4gICAgICAoIHNcbiAgICAgICwgZnVuIHMgLT5cbiAgICAgICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICAgICAgfCBEb25lIC0+IERvbmVcbiAgICAgICAgfCBTa2lwIHMgLT4gU2tpcCBzXG4gICAgICAgIHwgWWllbGQgKGEsIHMpIHdoZW4gZiBhIC0+IFlpZWxkIChhLCBzKVxuICAgICAgICB8IFlpZWxkIChfLCBfKSAtPiBEb25lIClcbjs7XG5cbmxldCBkcm9wX3doaWxlIHMgfmYgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgRHJvcHBpbmcgc1xuICAgICAgLCBmdW5jdGlvblxuICAgICAgICB8IGBEcm9wcGluZyBzIC0+XG4gICAgICAgICAgKG1hdGNoIG5leHQgcyB3aXRoXG4gICAgICAgICAgIHwgRG9uZSAtPiBEb25lXG4gICAgICAgICAgIHwgU2tpcCBzIC0+IFNraXAgKGBEcm9wcGluZyBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSB3aGVuIGYgYSAtPiBTa2lwIChgRHJvcHBpbmcgcylcbiAgICAgICAgICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIGBJZGVudGl0eSBzKSlcbiAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcyApXG47O1xuXG5sZXQgc2hpZnRfcmlnaHQgcyB4ID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHNlZWQsIG5leHQpIC0+XG4gICAgU2VxdWVuY2VcbiAgICAgICggYENvbnNpbmcgKHNlZWQsIHgpXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgYENvbnNpbmcgKHNlZWQsIHgpIC0+IFlpZWxkICh4LCBgSWRlbnRpdHkgc2VlZClcbiAgICAgICAgfCBgSWRlbnRpdHkgcyAtPiBsaWZ0X2lkZW50aXR5IG5leHQgcyApXG47O1xuXG5sZXQgc2hpZnRfcmlnaHRfd2l0aF9saXN0IHMgbCA9IGFwcGVuZCAob2ZfbGlzdCBsKSBzXG5sZXQgc2hpZnRfbGVmdCA9IGRyb3BcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoIEAgKSA9IGFwcGVuZFxuZW5kXG5cbmxldCBpbnRlcnNwZXJzZSBzIH5zZXAgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT5cbiAgICBTZXF1ZW5jZVxuICAgICAgKCBgSW5pdCBzXG4gICAgICAsIGZ1bmN0aW9uXG4gICAgICAgIHwgYEluaXQgcyAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChgSW5pdCBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoYSwgYFJ1bm5pbmcgcykpXG4gICAgICAgIHwgYFJ1bm5pbmcgcyAtPlxuICAgICAgICAgIChtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgICAgICB8IERvbmUgLT4gRG9uZVxuICAgICAgICAgICB8IFNraXAgcyAtPiBTa2lwIChgUnVubmluZyBzKVxuICAgICAgICAgICB8IFlpZWxkIChhLCBzKSAtPiBZaWVsZCAoc2VwLCBgUHV0dGluZyAoYSwgcykpKVxuICAgICAgICB8IGBQdXR0aW5nIChhLCBzKSAtPiBZaWVsZCAoYSwgYFJ1bm5pbmcgcykgKVxuOztcblxubGV0IHJlcGVhdCB4ID0gdW5mb2xkX3N0ZXAgfmluaXQ6eCB+ZjooZnVuIHggLT4gWWllbGQgKHgsIHgpKVxuXG5sZXQgY3ljbGVfbGlzdF9leG4geHMgPVxuICBpZiBMaXN0LmlzX2VtcHR5IHhzIHRoZW4gaW52YWxpZF9hcmcgXCJTZXF1ZW5jZS5jeWNsZV9saXN0X2V4blwiO1xuICBsZXQgcyA9IG9mX2xpc3QgeHMgaW5cbiAgY29uY2F0X21hcCB+ZjooZnVuICgpIC0+IHMpIChyZXBlYXQgKCkpXG47O1xuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3Qgc2Egc2IgPSBjb25jYXRfbWFwIHNhIH5mOihmdW4gYSAtPiB6aXAgKHJlcGVhdCBhKSBzYilcbmxldCBzaW5nbGV0b24geCA9IHJldHVybiB4XG5cbmxldCBkZWxheWVkX2ZvbGQgcyB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgRXhwZXJ0LmRlbGF5ZWRfZm9sZF9zdGVwIHMgfmluaXQgfmZpbmlzaCB+ZjooZnVuIGFjYyBvcHRpb24gfmsgLT5cbiAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgIHwgTm9uZSAtPiBrIGFjY1xuICAgIHwgU29tZSBhIC0+IGYgYWNjIGEgfmspXG47O1xuXG5sZXQgZm9sZF9tIH5iaW5kIH5yZXR1cm4gdCB+aW5pdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdFxuICAgIH5mOihmdW4gYWNjIG9wdGlvbiB+ayAtPlxuICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBiaW5kIChyZXR1cm4gYWNjKSB+ZjprXG4gICAgICB8IFNvbWUgYSAtPiBiaW5kIChmIGFjYyBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgaXRlcl9tIH5iaW5kIH5yZXR1cm4gdCB+ZiA9XG4gIEV4cGVydC5kZWxheWVkX2ZvbGRfc3RlcFxuICAgIHRcbiAgICB+aW5pdDooKVxuICAgIH5mOihmdW4gKCkgb3B0aW9uIH5rIC0+XG4gICAgICBtYXRjaCBvcHRpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IGJpbmQgKHJldHVybiAoKSkgfmY6a1xuICAgICAgfCBTb21lIGEgLT4gYmluZCAoZiBhKSB+ZjprKVxuICAgIH5maW5pc2g6cmV0dXJuXG47O1xuXG5sZXQgZm9sZF91bnRpbCBzIH5pbml0IH5mIH5maW5pc2ggPVxuICBsZXQgcmVjIGxvb3AgcyBuZXh0IGYgYWNjID1cbiAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgIHwgRG9uZSAtPiBmaW5pc2ggYWNjXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKCdhLCAnYikgQ29udGludWVfb3Jfc3RvcC50KSB3aXRoXG4gICAgICAgfCBTdG9wIHggLT4geFxuICAgICAgIHwgQ29udGludWUgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHQgZiBpbml0XG47O1xuXG5sZXQgZm9sZF9yZXN1bHQgcyB+aW5pdCB+ZiA9XG4gIGxldCByZWMgbG9vcCBzIG5leHQgZiBhY2MgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IFJlc3VsdC5yZXR1cm4gYWNjXG4gICAgfCBTa2lwIHMgLT4gbG9vcCBzIG5leHQgZiBhY2NcbiAgICB8IFlpZWxkIChhLCBzKSAtPlxuICAgICAgKG1hdGNoIChmIGFjYyBhIDogKF8sIF8pIFJlc3VsdC50KSB3aXRoXG4gICAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICAgIHwgT2sgYWNjIC0+IGxvb3AgcyBuZXh0IGYgYWNjKVxuICBpblxuICBtYXRjaCBzIHdpdGhcbiAgfCBTZXF1ZW5jZSAocywgbmV4dCkgLT4gbG9vcCBzIG5leHQgZiBpbml0XG47O1xuXG5sZXQgZm9yY2VfZWFnZXJseSB0ID0gb2ZfbGlzdCAodG9fbGlzdCB0KVxuXG5sZXQgbWVtb2l6ZSAodHlwZSBhKSAoU2VxdWVuY2UgKHMsIG5leHQpKSA9XG4gIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgb2YgKGEsIHQpIFN0ZXAudCBMYXp5LnRcbiAgZW5kXG4gIGluXG4gIGxldCByZWMgbWVtb2l6ZSBzID0gTS5UIChsYXp5IChmaW5kX3N0ZXAgcykpXG4gIGFuZCBmaW5kX3N0ZXAgcyA9XG4gICAgbWF0Y2ggbmV4dCBzIHdpdGhcbiAgICB8IERvbmUgLT4gRG9uZVxuICAgIHwgU2tpcCBzIC0+IGZpbmRfc3RlcCBzXG4gICAgfCBZaWVsZCAoYSwgcykgLT4gWWllbGQgKGEsIG1lbW9pemUgcylcbiAgaW5cbiAgU2VxdWVuY2UgKG1lbW9pemUgcywgZnVuIChNLlQgbCkgLT4gTGF6eS5mb3JjZSBsKVxuOztcblxubGV0IGRyb3BfZWFnZXJseSBzIGxlbiA9XG4gIGxldCByZWMgbG9vcCBpIH5sZW4gcyBuZXh0ID1cbiAgICBpZiBpID49IGxlblxuICAgIHRoZW4gU2VxdWVuY2UgKHMsIG5leHQpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBuZXh0IHMgd2l0aFxuICAgICAgfCBEb25lIC0+IGVtcHR5XG4gICAgICB8IFNraXAgcyAtPiBsb29wIGkgfmxlbiBzIG5leHRcbiAgICAgIHwgWWllbGQgKF8sIHMpIC0+IGxvb3AgKGkgKyAxKSB+bGVuIHMgbmV4dClcbiAgaW5cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2VxdWVuY2UgKHMsIG5leHQpIC0+IGxvb3AgMCB+bGVuIHMgbmV4dFxuOztcblxubGV0IGRyb3Bfd2hpbGVfb3B0aW9uIChTZXF1ZW5jZSAocywgbmV4dCkpIH5mID1cbiAgbGV0IHJlYyBsb29wIHMgPVxuICAgIG1hdGNoIG5leHQgcyB3aXRoXG4gICAgfCBEb25lIC0+IE5vbmVcbiAgICB8IFNraXAgcyAtPiBsb29wIHNcbiAgICB8IFlpZWxkICh4LCBzKSAtPiBpZiBmIHggdGhlbiBsb29wIHMgZWxzZSBTb21lICh4LCBTZXF1ZW5jZSAocywgbmV4dCkpXG4gIGluXG4gIGxvb3Agc1xuOztcblxubGV0IGNvbXBhcmUgY29tcGFyZV9hIHQxIHQyID1cbiAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgaXRlciAoemlwX2Z1bGwgdDEgdDIpIH5mOihmdW5jdGlvblxuICAgICAgfCBgTGVmdCBfIC0+IHIucmV0dXJuIDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gci5yZXR1cm4gKC0xKVxuICAgICAgfCBgQm90aCAodjEsIHYyKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlbiByLnJldHVybiBjKTtcbiAgICAwKVxuOztcblxubGV0IGVxdWFsIGVxdWFsX2EgdDEgdDIgPVxuICBmb3JfYWxsICh6aXBfZnVsbCB0MSB0MikgfmY6KGZ1bmN0aW9uXG4gICAgfCBgQm90aCAoYTEsIGEyKSAtPiBlcXVhbF9hIGExIGEyXG4gICAgfCBgTGVmdCBfIHwgYFJpZ2h0IF8gLT4gZmFsc2UpXG47O1xuXG5sZXQgcm91bmRfcm9iaW4gbGlzdCA9XG4gIGxldCBuZXh0ICh0b2RvX3N0YWNrLCBkb25lX3N0YWNrKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSAocywgZikgOjogdG9kb19zdGFjayAtPlxuICAgICAgKG1hdGNoIGYgcyB3aXRoXG4gICAgICAgfCBZaWVsZCAoeCwgcykgLT4gWWllbGQgKHgsICh0b2RvX3N0YWNrLCBTZXF1ZW5jZSAocywgZikgOjogZG9uZV9zdGFjaykpXG4gICAgICAgfCBTa2lwIHMgLT4gU2tpcCAoU2VxdWVuY2UgKHMsIGYpIDo6IHRvZG9fc3RhY2ssIGRvbmVfc3RhY2spXG4gICAgICAgfCBEb25lIC0+IFNraXAgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2spKVxuICAgIHwgW10gLT4gaWYgTGlzdC5pc19lbXB0eSBkb25lX3N0YWNrIHRoZW4gRG9uZSBlbHNlIFNraXAgKExpc3QucmV2IGRvbmVfc3RhY2ssIFtdKVxuICBpblxuICBsZXQgc3RhdGUgPSBsaXN0LCBbXSBpblxuICBTZXF1ZW5jZSAoc3RhdGUsIG5leHQpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZSAoU2VxdWVuY2UgKHMxLCBmMSkpID1cbiAgbGV0IG5leHQgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxKSA9XG4gICAgbWF0Y2ggdG9kb19zdGFjayB3aXRoXG4gICAgfCBTZXF1ZW5jZSAoczIsIGYyKSA6OiB0b2RvX3N0YWNrIC0+XG4gICAgICAobWF0Y2ggZjIgczIgd2l0aFxuICAgICAgIHwgWWllbGQgKHgsIHMyKSAtPiBZaWVsZCAoeCwgKHRvZG9fc3RhY2ssIFNlcXVlbmNlIChzMiwgZjIpIDo6IGRvbmVfc3RhY2ssIHMxKSlcbiAgICAgICB8IFNraXAgczIgLT4gU2tpcCAodG9kb19zdGFjaywgU2VxdWVuY2UgKHMyLCBmMikgOjogZG9uZV9zdGFjaywgczEpXG4gICAgICAgfCBEb25lIC0+IFNraXAgKHRvZG9fc3RhY2ssIGRvbmVfc3RhY2ssIHMxKSlcbiAgICB8IFtdIC0+XG4gICAgICAobWF0Y2ggZjEgczEsIGRvbmVfc3RhY2sgd2l0aFxuICAgICAgIHwgWWllbGQgKHQsIHMxKSwgXyAtPiBTa2lwIChMaXN0LnJldiAodCA6OiBkb25lX3N0YWNrKSwgW10sIHMxKVxuICAgICAgIHwgU2tpcCBzMSwgXyAtPiBTa2lwIChMaXN0LnJldiBkb25lX3N0YWNrLCBbXSwgczEpXG4gICAgICAgfCBEb25lLCBfIDo6IF8gLT4gU2tpcCAoTGlzdC5yZXYgZG9uZV9zdGFjaywgW10sIHMxKVxuICAgICAgIHwgRG9uZSwgW10gLT4gRG9uZSlcbiAgaW5cbiAgbGV0IHN0YXRlID0gW10sIFtdLCBzMSBpblxuICBTZXF1ZW5jZSAoc3RhdGUsIG5leHQpXG47O1xuXG5sZXQgaW50ZXJsZWF2ZWRfY2FydGVzaWFuX3Byb2R1Y3QgczEgczIgPVxuICBtYXAgczEgfmY6KGZ1biB4MSAtPiBtYXAgczIgfmY6KGZ1biB4MiAtPiB4MSwgeDIpKSB8PiBpbnRlcmxlYXZlXG47O1xuXG5sZXQgb2Zfc2VxIChzZXEgOiBfIENhbWwuU2VxLnQpID1cbiAgdW5mb2xkX3N0ZXAgfmluaXQ6c2VxIH5mOihmdW4gc2VxIC0+XG4gICAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiBEb25lXG4gICAgfCBDb25zIChoZCwgdGwpIC0+IFlpZWxkIChoZCwgdGwpKVxuOztcblxubGV0IHRvX3NlcSAoU2VxdWVuY2UgKHN0YXRlLCBuZXh0KSkgPVxuICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgIG1hdGNoIG5leHQgc3RhdGUgd2l0aFxuICAgIHwgRG9uZSAtPiBDYW1sLlNlcS5OaWxcbiAgICB8IFNraXAgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgIHwgWWllbGQgKGhkLCBzdGF0ZSkgLT4gQ2FtbC5TZXEuQ29ucyAoaGQsIGZ1biAoKSAtPiBsb29wIHN0YXRlKVxuICBpblxuICBmdW4gKCkgLT4gbG9vcCBzdGF0ZVxuOztcblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICB0eXBlICdlbHQgc3RlcHMgPSBXcmFwIG9mICgnZWx0LCB1bml0IC0+ICdlbHQgc3RlcHMpIFN0ZXAudFxuXG4gIGxldCB1bndyYXAgKFdyYXAgc3RlcCkgPSBzdGVwXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2VsdCkgdCA9ICgnYSAtPiAnZWx0IHN0ZXBzKSAtPiAnZWx0IHN0ZXBzXG5cbiAgICBsZXQgcmV0dXJuIHggayA9IGsgeFxuXG4gICAgbGV0IGJpbmQgbSB+ZiBrID1cbiAgICAgIG0gKGZ1biBhIC0+XG4gICAgICAgIGxldCBtJyA9IGYgYSBpblxuICAgICAgICBtJyBrKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIG0gfmYgayA9IG0gKGZ1biBhIC0+IGsgKGYgYSkpXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIE1vbmFkLk1ha2UyIChUKVxuXG4gIGxldCB5aWVsZCBlIGsgPSBXcmFwIChZaWVsZCAoZSwgaykpXG4gIGxldCB0b19zdGVwcyB0ID0gdCAoZnVuICgpIC0+IFdyYXAgRG9uZSlcblxuICBsZXQgb2Zfc2VxdWVuY2Ugc2VxdWVuY2UgPVxuICAgIGRlbGF5ZWRfZm9sZFxuICAgICAgc2VxdWVuY2VcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZjooZnVuICgpIHggfmsgZiAtPiBXcmFwIChZaWVsZCAoeCwgZnVuICgpIC0+IGsgKCkgZikpKVxuICAgICAgfmZpbmlzaDpyZXR1cm5cbiAgOztcblxuICBsZXQgcnVuIHQgPVxuICAgIGxldCBpbml0ICgpID0gdG9fc3RlcHMgdCBpblxuICAgIGxldCBmIHRodW5rID0gdW53cmFwICh0aHVuayAoKSkgaW5cbiAgICB1bmZvbGRfc3RlcCB+aW5pdCB+ZlxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXJyYXkwXG5cbnR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX2FycmF5XG5sZXQgdF9vZl9zZXhwIDogJ2EuIChTZXhwbGliMC5TZXhwLnQgLT4gJ2EpIC0+IFNleHBsaWIwLlNleHAudCAtPiAnYSB0ID0gYXJyYXlfb2Zfc2V4cFxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9IHNleHBfb2ZfYXJyYXlcblxubGV0ICh0X3NleHBfZ3JhbW1hciA6ICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gYXJyYXlfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbjs7XG5cbltAQEBlbmRdXG5cbigqIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSBuZXcgaW4tcGxhY2UsIGNvbnN0YW50IGhlYXAgc29ydGluZyBhbGdvcml0aG0gdG8gcmVwbGFjZSB0aGVcbiAgIG9uZSB1c2VkIGJ5IHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMuICBJdHMgb25seSBwdXJwb3NlIGlzIHRvIGJlIGZhc3RlciAoaG9wZWZ1bGx5XG4gICBzdHJpY3RseSBmYXN0ZXIpIHRoYW4gdGhlIGJhc2Ugc29ydCBhbmQgc3RhYmxlX3NvcnQuXG5cbiAgIEF0IGEgaGlnaCBsZXZlbCB0aGUgYWxnb3JpdGhtIGlzOlxuICAgLSBwaWNrIHR3byBwaXZvdCBwb2ludHMgYnk6XG4gICAtIHBpY2sgNSBhcmJpdHJhcnkgZWxlbWVudHMgZnJvbSB0aGUgYXJyYXlcbiAgIC0gc29ydCB0aGVtIHdpdGhpbiB0aGUgYXJyYXlcbiAgIC0gdGFrZSB0aGUgZWxlbWVudHMgb24gZWl0aGVyIHNpZGUgb2YgdGhlIG1pZGRsZSBlbGVtZW50IG9mIHRoZSBzb3J0IGFzIHRoZSBwaXZvdHNcbiAgIC0gc29ydCB0aGUgYXJyYXkgd2l0aDpcbiAgIC0gYWxsIGVsZW1lbnRzIGxlc3MgdGhhbiBwaXZvdDEgdG8gdGhlIGxlZnQgKHJhbmdlIDEpXG4gICAtIGFsbCBlbGVtZW50cyA+PSBwaXZvdDEgYW5kIDw9IHBpdm90MiBpbiB0aGUgbWlkZGxlIChyYW5nZSAyKVxuICAgLSBhbGwgZWxlbWVudHMgPiBwaXZvdDIgdG8gdGhlIHJpZ2h0IChyYW5nZSAzKVxuICAgLSBpZiBwaXZvdDEgYW5kIHBpdm90MiBhcmUgZXF1YWwsIHRoZW4gdGhlIG1pZGRsZSByYW5nZSBpcyBzb3J0ZWQsIHNvIGlnbm9yZSBpdFxuICAgLSByZWN1cnNlIGludG8gcmFuZ2UgMSwgMiAoaWYgcGl2b3QxIGFuZCBwaXZvdDIgYXJlIHVuZXF1YWwpLCBhbmQgM1xuICAgLSBkdXJpbmcgcmVjdXJzaW9uIHRoZXJlIGFyZSB0d28gaW5mbGVjdGlvbiBwb2ludHM6XG4gICAtIGlmIHRoZSBzaXplIG9mIHRoZSBjdXJyZW50IHJhbmdlIGlzIHNtYWxsLCB1c2UgaW5zZXJ0aW9uIHNvcnQgdG8gc29ydCBpdFxuICAgLSBpZiB0aGUgc3RhY2sgZGVwdGggaXMgbGFyZ2UsIHNvcnQgdGhlIHJhbmdlIHdpdGggaGVhcC1zb3J0IHRvIGF2b2lkIG5eMiB3b3JzdC1jYXNlXG4gICAgIGJlaGF2aW9yXG5cbiAgIFNlZSB0aGUgZm9sbG93aW5nIGZvciBtb3JlIGluZm9ybWF0aW9uOlxuICAgLSBcIkR1YWwtUGl2b3QgUXVpY2tzb3J0XCIgYnkgVmxhZGltaXIgWWFyb3NsYXZza2l5LlxuICAgICBBdmFpbGFibGUgYXRcbiAgICAgaHR0cDovL3d3dy5rcmljaGUuY29tLmFyL3Jvb3QvcHJvZ3JhbW1pbmcvc3BhY2VUaW1lQ29tcGxleGl0eS9EdWFsUGl2b3RRdWlja3NvcnQucGRmXG4gICAtIFwiUXVpY2tzb3J0IGlzIE9wdGltYWxcIiBieSBTZWRnZXdpY2sgYW5kIEJlbnRsZXkuXG4gICAgIFNsaWRlcyBhdCBodHRwOi8vd3d3LmNzLnByaW5jZXRvbi5lZHUvfnJzL3RhbGtzL1F1aWNrc29ydElzT3B0aW1hbC5wZGZcbiAgIC0gaHR0cDovL3d3dy5zb3J0aW5nLWFsZ29yaXRobXMuY29tL3F1aWNrLXNvcnQtMy13YXkgKilcblxubW9kdWxlIFNvcnQgPSBzdHJ1Y3RcbiAgKCogRm9yIHRoZSBzYWtlIG9mIHNwZWVkIHdlIGNvdWxkIHVzZSB1bnNhZmUgZ2V0L3NldCB0aHJvdWdob3V0LCBidXQgc3BlZWQgdGVzdHMgZG9uJ3RcbiAgICAgc2hvdyBhIHNpZ25pZmljYW50IGltcHJvdmVtZW50LiAqKVxuICBsZXQgZ2V0ID0gZ2V0XG4gIGxldCBzZXQgPSBzZXRcblxuICBsZXQgc3dhcCBhcnIgaSBqID1cbiAgICBsZXQgdG1wID0gZ2V0IGFyciBpIGluXG4gICAgc2V0IGFyciBpIChnZXQgYXJyIGopO1xuICAgIHNldCBhcnIgaiB0bXBcbiAgOztcblxuICBtb2R1bGUgdHlwZSBTb3J0ID0gc2lnXG4gICAgdmFsIHNvcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAgIC0+IGxlZnQ6aW50ICgqIGxlZnRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiByaWdodDppbnQgKCogcmlnaHRtb3N0IGluZGV4IG9mIHN1Yi1hcnJheSB0byBzb3J0ICopXG4gICAgICAtPiB1bml0XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW5zZXJ0aW9uX3NvcnQgKilcbiAgbW9kdWxlIEluc2VydGlvbl9zb3J0IDogU29ydCA9IHN0cnVjdFxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgKCogbG9vcCBpbnZhcmlhbnQ6XG4gICAgICAgICBbYXJyXSBpcyBzb3J0ZWQgZnJvbSBbbGVmdF0gdG8gW3BvcyAtIDFdLCBpbmNsdXNpdmUgKilcbiAgICAgIGZvciBwb3MgPSBsZWZ0ICsgMSB0byByaWdodCBkb1xuICAgICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4gaS0xXSBpcyBzb3J0ZWRcbiAgICAgICAgICAgMi4gIHRoZSBzdWJhcnJheSBhcnJbaSsxIC4uIHBvc10gaXMgc29ydGVkIGFuZCBjb250YWlucyBvbmx5IGVsZW1lbnRzID4gdlxuICAgICAgICAgICAzLiAgYXJyW2ldIG1heSBiZSB0aG91Z2h0IG9mIGFzIGNvbnRhaW5pbmcgdlxuXG4gICAgICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFsbG9jYXRlIGEgY2xvc3VyZSwgYnV0IGlzIGxlZnQgaW4gdGhlIGZvclxuICAgICAgICAgICBsb29wIGZvciB0aGUgcmVhZGFiaWxpdHkgb2YgdGhlIGRvY3VtZW50YXRpb24uICopXG4gICAgICAgIGxldCByZWMgbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaSB2ID1cbiAgICAgICAgICBsZXQgaV9uZXh0ID0gaSAtIDEgaW5cbiAgICAgICAgICBpZiBpX25leHQgPj0gbGVmdCAmJiBjb21wYXJlIChnZXQgYXJyIGlfbmV4dCkgdiA+IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHNldCBhcnIgaSAoZ2V0IGFyciBpX25leHQpO1xuICAgICAgICAgICAgbG9vcCBhcnIgfmxlZnQgfmNvbXBhcmUgaV9uZXh0IHYpXG4gICAgICAgICAgZWxzZSBpXG4gICAgICAgIGluXG4gICAgICAgIGxldCB2ID0gZ2V0IGFyciBwb3MgaW5cbiAgICAgICAgbGV0IGZpbmFsX3BvcyA9IGxvb3AgYXJyIH5sZWZ0IH5jb21wYXJlIHBvcyB2IGluXG4gICAgICAgIHNldCBhcnIgZmluYWxfcG9zIHZcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmRcblxuICAoKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hlYXBzb3J0ICopXG4gIG1vZHVsZSBIZWFwX3NvcnQgOiBTb3J0ID0gc3RydWN0XG4gICAgKCogbG9vcCBpbnZhcmlhbnQ6XG4gICAgICAgcm9vdCdzIGNoaWxkcmVuIGFyZSBib3RoIGVpdGhlciByb290cyBvZiBtYXgtaGVhcHMgb3IgPiByaWdodCAqKVxuICAgIGxldCByZWMgaGVhcGlmeSBhcnIgfmNvbXBhcmUgcm9vdCB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IHJlbGF0aXZlX3Jvb3QgPSByb290IC0gbGVmdCBpblxuICAgICAgbGV0IGxlZnRfY2hpbGQgPSAoMiAqIHJlbGF0aXZlX3Jvb3QpICsgbGVmdCArIDEgaW5cbiAgICAgIGxldCByaWdodF9jaGlsZCA9ICgyICogcmVsYXRpdmVfcm9vdCkgKyBsZWZ0ICsgMiBpblxuICAgICAgbGV0IGxhcmdlc3QgPVxuICAgICAgICBpZiBsZWZ0X2NoaWxkIDw9IHJpZ2h0ICYmIGNvbXBhcmUgKGdldCBhcnIgbGVmdF9jaGlsZCkgKGdldCBhcnIgcm9vdCkgPiAwXG4gICAgICAgIHRoZW4gbGVmdF9jaGlsZFxuICAgICAgICBlbHNlIHJvb3RcbiAgICAgIGluXG4gICAgICBsZXQgbGFyZ2VzdCA9XG4gICAgICAgIGlmIHJpZ2h0X2NoaWxkIDw9IHJpZ2h0ICYmIGNvbXBhcmUgKGdldCBhcnIgcmlnaHRfY2hpbGQpIChnZXQgYXJyIGxhcmdlc3QpID4gMFxuICAgICAgICB0aGVuIHJpZ2h0X2NoaWxkXG4gICAgICAgIGVsc2UgbGFyZ2VzdFxuICAgICAgaW5cbiAgICAgIGlmIGxhcmdlc3QgPD4gcm9vdFxuICAgICAgdGhlbiAoXG4gICAgICAgIHN3YXAgYXJyIHJvb3QgbGFyZ2VzdDtcbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgbGFyZ2VzdCB+bGVmdCB+cmlnaHQpXG4gICAgOztcblxuICAgIGxldCBidWlsZF9oZWFwIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgKCogRWxlbWVudHMgaW4gdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBhcnJheSBhcmUgYWxyZWFkeSBoZWFwcyBvZiBzaXplIDEuICBXZSBtb3ZlXG4gICAgICAgICB0aHJvdWdoIHRoZSBmaXJzdCBoYWxmIG9mIHRoZSBhcnJheSBmcm9tIGJhY2sgdG8gZnJvbnQgZXhhbWluaW5nIHRoZSBlbGVtZW50IGF0XG4gICAgICAgICBoYW5kLCBhbmQgdGhlIGxlZnQgYW5kIHJpZ2h0IGNoaWxkcmVuLCBmaXhpbmcgdGhlIGhlYXAgcHJvcGVydHkgYXMgd2UgZ28uICopXG4gICAgICBmb3IgaSA9IChsZWZ0ICsgcmlnaHQpIC8gMiBkb3dudG8gbGVmdCBkb1xuICAgICAgICBoZWFwaWZ5IGFyciB+Y29tcGFyZSBpIH5sZWZ0IH5yaWdodFxuICAgICAgZG9uZVxuICAgIDs7XG5cbiAgICBsZXQgc29ydCBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGJ1aWxkX2hlYXAgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodDtcbiAgICAgICgqIGxvb3AgaW52YXJpYW50czpcbiAgICAgICAgIDEuICB0aGUgc3ViYXJyYXkgYXJyW2xlZnQgLi4uIGldIGlzIGEgbWF4LWhlYXAgSFxuICAgICAgICAgMi4gIHRoZSBzdWJhcnJheSBhcnJbaSsxIC4uLiByaWdodF0gaXMgc29ydGVkIChjYWxsIGl0IFMpXG4gICAgICAgICAzLiAgZXZlcnkgZWxlbWVudCBvZiBIIGlzIGxlc3MgdGhhbiBldmVyeSBlbGVtZW50IG9mIFMgKilcbiAgICAgIGZvciBpID0gcmlnaHQgZG93bnRvIGxlZnQgKyAxIGRvXG4gICAgICAgIHN3YXAgYXJyIGxlZnQgaTtcbiAgICAgICAgaGVhcGlmeSBhcnIgfmNvbXBhcmUgbGVmdCB+bGVmdCB+cmlnaHQ6KGkgLSAxKVxuICAgICAgZG9uZVxuICAgIDs7XG4gIGVuZFxuXG4gICgqIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSW50cm9zb3J0ICopXG4gIG1vZHVsZSBJbnRyb19zb3J0IDogc2lnXG4gICAgaW5jbHVkZSBTb3J0XG5cbiAgICB2YWwgZml2ZV9lbGVtZW50X3NvcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiBpbnRcbiAgICAgIC0+IGludFxuICAgICAgLT4gaW50XG4gICAgICAtPiB1bml0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmUgbTEgbTIgbTMgbTQgbTUgPVxuICAgICAgbGV0IGNvbXBhcmVfYW5kX3N3YXAgaSBqID1cbiAgICAgICAgaWYgY29tcGFyZSAoZ2V0IGFyciBpKSAoZ2V0IGFyciBqKSA+IDAgdGhlbiBzd2FwIGFyciBpIGpcbiAgICAgIGluXG4gICAgICAoKiBPcHRpbWFsIDUtZWxlbWVudCBzb3J0aW5nIG5ldHdvcms6XG5cbiAgICAgICAgIHt2XG4gICAgICAgICAgICAxLS1vLS0tLS1vLS0tLS1vLS0tLS0tLS0tLS0tLS0xXG4gICAgICAgICAgICAgICB8ICAgICB8ICAgICB8XG4gICAgICAgICAgICAyLS1vLS0tLS18LS1vLS18LS0tLS1vLS1vLS0tLS0yXG4gICAgICAgICAgICAgICAgICAgICB8ICB8ICB8ICAgICB8ICB8XG4gICAgICAgICAgICAzLS0tLS0tLS1vLS1vLS18LS1vLS18LS1vLS0tLS0zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8ICB8ICB8XG4gICAgICAgICAgICA0LS0tLS1vLS0tLS0tLS1vLS1vLS18LS0tLS1vLS00XG4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICB8XG4gICAgICAgICAgICA1LS0tLS1vLS0tLS0tLS0tLS0tLS1vLS0tLS1vLS01XG4gICAgICAgICAgdn0gKilcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTEgbTI7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG00IG01O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMSBtMztcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTM7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0xIG00O1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtMyBtNDtcbiAgICAgIGNvbXBhcmVfYW5kX3N3YXAgbTIgbTU7XG4gICAgICBjb21wYXJlX2FuZF9zd2FwIG0yIG0zO1xuICAgICAgY29tcGFyZV9hbmRfc3dhcCBtNCBtNVxuICAgIDs7XG5cbiAgICAoKiBjaG9vc2UgcGl2b3RzIGZvciB0aGUgYXJyYXkgYnkgc29ydGluZyA1IGVsZW1lbnRzIGFuZCBleGFtaW5pbmcgdGhlIGNlbnRlciB0aHJlZVxuICAgICAgIGVsZW1lbnRzLiAgVGhlIGdvYWwgaXMgdG8gY2hvb3NlIHR3byBwaXZvdHMgdGhhdCB3aWxsIGVpdGhlcjpcbiAgICAgICAtIGJyZWFrIHRoZSByYW5nZSB1cCBpbnRvIDMgZXZlbiBwYXJ0aXRpb25zXG4gICAgICAgICBvclxuICAgICAgIC0gZWxpbWluYXRlIGEgY29tbW9ubHkgYXBwZWFyaW5nIGVsZW1lbnQgYnkgc29ydGluZyBpdCBpbnRvIHRoZSBjZW50ZXIgcGFydGl0aW9uXG4gICAgICAgICBieSBpdHNlbGZcbiAgICAgICAgIFRvIHRoaXMgZW5kIHdlIGxvb2sgYXQgdGhlIGNlbnRlciAzIGVsZW1lbnRzIG9mIHRoZSA1IGFuZCByZXR1cm4gcGFpcnMgb2YgZXF1YWxcbiAgICAgICAgIGVsZW1lbnRzIG9yIHRoZSB3aWRlc3QgcmFuZ2UgKilcbiAgICBsZXQgY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBzaXh0aCA9IChyaWdodCAtIGxlZnQpIC8gNiBpblxuICAgICAgbGV0IG0xID0gbGVmdCArIHNpeHRoIGluXG4gICAgICBsZXQgbTIgPSBtMSArIHNpeHRoIGluXG4gICAgICBsZXQgbTMgPSBtMiArIHNpeHRoIGluXG4gICAgICBsZXQgbTQgPSBtMyArIHNpeHRoIGluXG4gICAgICBsZXQgbTUgPSBtNCArIHNpeHRoIGluXG4gICAgICBmaXZlX2VsZW1lbnRfc29ydCBhcnIgfmNvbXBhcmUgbTEgbTIgbTMgbTQgbTU7XG4gICAgICBsZXQgbTJfdmFsID0gZ2V0IGFyciBtMiBpblxuICAgICAgbGV0IG0zX3ZhbCA9IGdldCBhcnIgbTMgaW5cbiAgICAgIGxldCBtNF92YWwgPSBnZXQgYXJyIG00IGluXG4gICAgICBpZiBjb21wYXJlIG0yX3ZhbCBtM192YWwgPSAwXG4gICAgICB0aGVuIG0yX3ZhbCwgbTNfdmFsLCB0cnVlXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgbTNfdmFsIG00X3ZhbCA9IDBcbiAgICAgIHRoZW4gbTNfdmFsLCBtNF92YWwsIHRydWVcbiAgICAgIGVsc2UgbTJfdmFsLCBtNF92YWwsIGZhbHNlXG4gICAgOztcblxuICAgIGxldCBkdWFsX3Bpdm90X3BhcnRpdGlvbiBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0ID1cbiAgICAgIGxldCBwaXZvdDEsIHBpdm90MiwgcGl2b3RzX2VxdWFsID0gY2hvb3NlX3Bpdm90cyBhcnIgfmNvbXBhcmUgfmxlZnQgfnJpZ2h0IGluXG4gICAgICAoKiBsb29wIGludmFyaWFudHM6XG4gICAgICAgICAxLiAgbGVmdCA8PSBsIDwgciA8PSByaWdodFxuICAgICAgICAgMi4gIGwgPD0gcCA8PSByXG4gICAgICAgICAzLiAgbCA8PSB4IDwgcCAgICAgaW1wbGllcyBhcnJbeF0gPj0gcGl2b3QxXG4gICAgICAgICBhbmQgYXJyW3hdIDw9IHBpdm90MlxuICAgICAgICAgNC4gIGxlZnQgPD0geCA8IGwgIGltcGxpZXMgYXJyW3hdIDwgcGl2b3QxXG4gICAgICAgICA1LiAgciA8IHggPD0gcmlnaHQgaW1wbGllcyBhcnJbeF0gPiBwaXZvdDIgKilcbiAgICAgIGxldCByZWMgbG9vcCBsIHAgciA9XG4gICAgICAgIGxldCBwdiA9IGdldCBhcnIgcCBpblxuICAgICAgICBpZiBjb21wYXJlIHB2IHBpdm90MSA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgc3dhcCBhcnIgcCBsO1xuICAgICAgICAgIGNvbnQgKGwgKyAxKSAocCArIDEpIHIpXG4gICAgICAgIGVsc2UgaWYgY29tcGFyZSBwdiBwaXZvdDIgPiAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIGxvb3AgaW52YXJpYW50czogIHNhbWUgYXMgdGhvc2Ugb2YgdGhlIG91dGVyIGxvb3AgKilcbiAgICAgICAgICBsZXQgcmVjIHNjYW5fYmFja3dhcmRzIHIgPVxuICAgICAgICAgICAgaWYgciA+IHAgJiYgY29tcGFyZSAoZ2V0IGFyciByKSBwaXZvdDIgPiAwIHRoZW4gc2Nhbl9iYWNrd2FyZHMgKHIgLSAxKSBlbHNlIHJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByID0gc2Nhbl9iYWNrd2FyZHMgciBpblxuICAgICAgICAgIHN3YXAgYXJyIHIgcDtcbiAgICAgICAgICBjb250IGwgcCAociAtIDEpKVxuICAgICAgICBlbHNlIGNvbnQgbCAocCArIDEpIHJcbiAgICAgIGFuZCBjb250IGwgcCByID0gaWYgcCA+IHIgdGhlbiBsLCByIGVsc2UgbG9vcCBsIHAgciBpblxuICAgICAgbGV0IGwsIHIgPSBjb250IGxlZnQgbGVmdCByaWdodCBpblxuICAgICAgbCwgciwgcGl2b3RzX2VxdWFsXG4gICAgOztcblxuICAgIGxldCByZWMgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IGxlbiA9IHJpZ2h0IC0gbGVmdCArIDEgaW5cbiAgICAgICgqIFRoaXMgdGFrZXMgY2FyZSBvZiBzb21lIGVkZ2UgY2FzZXMsIHN1Y2ggYXMgbGVmdCA+IHJpZ2h0IG9yIHZlcnkgc2hvcnQgYXJyYXlzLFxuICAgICAgICAgc2luY2UgSW5zZXJ0aW9uX3NvcnQuc29ydCBoYW5kbGVzIHRoZXNlIGNhc2VzIHByb3Blcmx5LiAgVGh1cyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICBtYWtlIHN1cmUgdGhhdCBsZWZ0IGFuZCByaWdodCBhcmUgdmFsaWQgaW4gcmVjdXJzaXZlIGNhbGxzLiAqKVxuICAgICAgaWYgbGVuIDw9IDMyXG4gICAgICB0aGVuIEluc2VydGlvbl9zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0IH5yaWdodFxuICAgICAgZWxzZSBpZiBtYXhfZGVwdGggPCAwXG4gICAgICB0aGVuIEhlYXBfc29ydC5zb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbWF4X2RlcHRoID0gbWF4X2RlcHRoIC0gMSBpblxuICAgICAgICBsZXQgbCwgciwgbWlkZGxlX3NvcnRlZCA9IGR1YWxfcGl2b3RfcGFydGl0aW9uIGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgaW5cbiAgICAgICAgaW50cm9fc29ydCBhcnIgfm1heF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHQ6KGwgLSAxKTtcbiAgICAgICAgaWYgbm90IG1pZGRsZV9zb3J0ZWQgdGhlbiBpbnRyb19zb3J0IGFyciB+bWF4X2RlcHRoIH5jb21wYXJlIH5sZWZ0OmwgfnJpZ2h0OnI7XG4gICAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGggfmNvbXBhcmUgfmxlZnQ6KHIgKyAxKSB+cmlnaHQpXG4gICAgOztcblxuICAgIGxldCBzb3J0IGFyciB+Y29tcGFyZSB+bGVmdCB+cmlnaHQgPVxuICAgICAgbGV0IGhlYXBfc29ydF9zd2l0Y2hfZGVwdGggPVxuICAgICAgICAoKiBXZSBiYWlsIG91dCB0byBoZWFwIHNvcnQgYXQgYSByZWN1cnNpb24gZGVwdGggb2YgMzIuIEdOVSBpbnRyb3NvcnQgdXNlcyAybGcobikuXG4gICAgICAgICAgIFRoZSBleHBlY3RlZCByZWN1cnNpb24gZGVwdGggZm9yIHBlcmZlY3QgMy13YXkgc3BsaXRzIGlzIGxvZ18zKG4pLlxuXG4gICAgICAgICAgIFVzaW5nIDMyIG1lYW5zIGEgYmFsYW5jZWQgMy13YXkgc3BsaXQgd291bGQgd29yayB1cCB0byAzXjMyIGVsZW1lbnRzIChyb3VnaGx5XG4gICAgICAgICAgIDJeNTAgb3IgMTBeMTUpLiBHTlUgcmVhY2hlcyBhIGRlcHRoIG9mIDMyIGF0IDY1NTM2IGVsZW1lbnRzLlxuXG4gICAgICAgICAgIEZvciBzbWFsbCBhcnJheXMsIHRoaXMgbWFrZXMgdXMgbGVzcyBsaWtlbHkgdG8gYmFpbCBvdXQgdG8gaGVhcCBzb3J0LCBidXQgdGhlXG4gICAgICAgICAgIDMyKk4gY29zdCBiZWZvcmUgd2UgZG8gaXMgbm90IHRoYXQgbXVjaC5cblxuICAgICAgICAgICBGb3IgbGFyZ2UgYXJyYXlzLCB0aGlzIG1lYW5zIHdlIGFyZSBtb3JlIGxpa2VseSB0byBiYWlsIG91dCB0byBoZWFwIHNvcnQgYXRcbiAgICAgICAgICAgc29tZSBwb2ludCBpZiB3ZSBnZXQgc29tZSBiYWQgc3BsaXRzIG9yIGlmIHRoZSBhcnJheSBpcyBodWdlLiBCdXQgdGhhdCdzIG9ubHkgYVxuICAgICAgICAgICBjb25zdGFudCBmYWN0b3IgY29zdCBpbiB0aGUgZmluYWwgc3RhZ2VzIG9mIHJlY3Vyc2lvbi5cblxuICAgICAgICAgICBBbGwgaW4gYWxsLCB0aGlzIHNlZW1zIHRvIGJlIGEgc21hbGwgdHJhZGVvZmYgYW5kIGF2b2lkcyBwYXlpbmcgYSBjb3N0IHRvXG4gICAgICAgICAgIGNvbXB1dGUgYSBsb2dhcml0aG0gYXQgdGhlIHN0YXJ0LiAqKVxuICAgICAgICAzMlxuICAgICAgaW5cbiAgICAgIGludHJvX3NvcnQgYXJyIH5tYXhfZGVwdGg6aGVhcF9zb3J0X3N3aXRjaF9kZXB0aCB+Y29tcGFyZSB+bGVmdCB+cmlnaHRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5sZXQgc29ydCA/cG9zID9sZW4gYXJyIH5jb21wYXJlID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIGFycilcbiAgaW5cbiAgU29ydC5JbnRyb19zb3J0LnNvcnQgYXJyIH5jb21wYXJlIH5sZWZ0OnBvcyB+cmlnaHQ6KHBvcyArIGxlbiAtIDEpXG47O1xuXG5sZXQgdG9fYXJyYXkgdCA9IHRcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBpc19zb3J0ZWQgdCB+Y29tcGFyZSA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+IDAgJiYgIXJlc3VsdCBkb1xuICAgIGxldCBlbHRfaSA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgIGxldCBlbHRfaV9taW51c18xID0gdW5zYWZlX2dldCB0ICghaSAtIDEpIGluXG4gICAgaWYgY29tcGFyZSBlbHRfaV9taW51c18xIGVsdF9pID4gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGlzX3NvcnRlZF9zdHJpY3RseSB0IH5jb21wYXJlID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID4gMCAmJiAhcmVzdWx0IGRvXG4gICAgbGV0IGVsdF9pID0gdW5zYWZlX2dldCB0ICFpIGluXG4gICAgbGV0IGVsdF9pX21pbnVzXzEgPSB1bnNhZmVfZ2V0IHQgKCFpIC0gMSkgaW5cbiAgICBpZiBjb21wYXJlIGVsdF9pX21pbnVzXzEgZWx0X2kgPj0gMCB0aGVuIHJlc3VsdCA6PSBmYWxzZTtcbiAgICBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IG1lcmdlIGExIGEyIH5jb21wYXJlID1cbiAgbGV0IGwxID0gQXJyYXkubGVuZ3RoIGExIGluXG4gIGxldCBsMiA9IEFycmF5Lmxlbmd0aCBhMiBpblxuICBpZiBsMSA9IDBcbiAgdGhlbiBjb3B5IGEyXG4gIGVsc2UgaWYgbDIgPSAwXG4gIHRoZW4gY29weSBhMVxuICBlbHNlIGlmIGNvbXBhcmUgKHVuc2FmZV9nZXQgYTIgMCkgKHVuc2FmZV9nZXQgYTEgKGwxIC0gMSkpID49IDBcbiAgdGhlbiBhcHBlbmQgYTEgYTJcbiAgZWxzZSBpZiBjb21wYXJlICh1bnNhZmVfZ2V0IGExIDApICh1bnNhZmVfZ2V0IGEyIChsMiAtIDEpKSA+IDBcbiAgdGhlbiBhcHBlbmQgYTIgYTFcbiAgZWxzZSAoXG4gICAgbGV0IGxlbiA9IGwxICsgbDIgaW5cbiAgICBsZXQgbWVyZ2VkID0gY3JlYXRlIH5sZW4gKHVuc2FmZV9nZXQgYTEgMCkgaW5cbiAgICBsZXQgYTFfaW5kZXggPSByZWYgMCBpblxuICAgIGxldCBhMl9pbmRleCA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCB1c2VfYTEgPVxuICAgICAgICBpZiBsMSA9ICFhMV9pbmRleFxuICAgICAgICB0aGVuIGZhbHNlXG4gICAgICAgIGVsc2UgaWYgbDIgPSAhYTJfaW5kZXhcbiAgICAgICAgdGhlbiB0cnVlXG4gICAgICAgIGVsc2UgY29tcGFyZSAodW5zYWZlX2dldCBhMSAhYTFfaW5kZXgpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCkgPD0gMFxuICAgICAgaW5cbiAgICAgIGlmIHVzZV9hMVxuICAgICAgdGhlbiAoXG4gICAgICAgIHVuc2FmZV9zZXQgbWVyZ2VkIGkgKHVuc2FmZV9nZXQgYTEgIWExX2luZGV4KTtcbiAgICAgICAgYTFfaW5kZXggOj0gIWExX2luZGV4ICsgMSlcbiAgICAgIGVsc2UgKFxuICAgICAgICB1bnNhZmVfc2V0IG1lcmdlZCBpICh1bnNhZmVfZ2V0IGEyICFhMl9pbmRleCk7XG4gICAgICAgIGEyX2luZGV4IDo9ICFhMl9pbmRleCArIDEpXG4gICAgZG9uZTtcbiAgICBtZXJnZWQpXG47O1xuXG5sZXQgY29weV9tYXRyaXggPSBtYXAgfmY6Y29weVxuXG5sZXQgZm9sZGluZ19tYXAgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXAgdCB+ZjooZnVuIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgIWFjYyB4IGluXG4gICAgYWNjIDo9IG5ld19hY2M7XG4gICAgeSlcbjs7XG5cbmxldCBmb2xkX21hcCB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcCB0IH5mOihmdW4geCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmICFhY2MgeCBpblxuICAgICAgYWNjIDo9IG5ld19hY2M7XG4gICAgICB5KVxuICBpblxuICAhYWNjLCByZXN1bHRcbjs7XG5cbmxldCBmb2xkX3Jlc3VsdCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfcmVzdWx0IH5mb2xkIH5pbml0IH5mIHRcbmxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5sZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG5sZXQgc3VtIG0gdCB+ZiA9IENvbnRhaW5lci5zdW0gfmZvbGQgbSB0IH5mXG5sZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxubGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGFjYyA6PSBmIGkgIWFjYyAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmU7XG4gICFhY2Ncbjs7XG5cbmxldCBmb2xkaW5nX21hcGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBhY2MgPSByZWYgaW5pdCBpblxuICBtYXBpIHQgfmY6KGZ1biBpIHggLT5cbiAgICBsZXQgbmV3X2FjYywgeSA9IGYgaSAhYWNjIHggaW5cbiAgICBhY2MgOj0gbmV3X2FjYztcbiAgICB5KVxuOztcblxubGV0IGZvbGRfbWFwaSB0IH5pbml0IH5mID1cbiAgbGV0IGFjYyA9IHJlZiBpbml0IGluXG4gIGxldCByZXN1bHQgPVxuICAgIG1hcGkgdCB+ZjooZnVuIGkgeCAtPlxuICAgICAgbGV0IG5ld19hY2MsIHkgPSBmIGkgIWFjYyB4IGluXG4gICAgICBhY2MgOj0gbmV3X2FjYztcbiAgICAgIHkpXG4gIGluXG4gICFhY2MsIHJlc3VsdFxuOztcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDowIH5mOihmdW4gaWR4IGNvdW50IGEgLT4gaWYgZiBpZHggYSB0aGVuIGNvdW50ICsgMSBlbHNlIGNvdW50KVxuOztcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9IGNvbmNhdCAodG9fbGlzdCAobWFwIH5mIHQpKVxubGV0IGNvbmNhdF9tYXBpIHQgfmYgPSBjb25jYXQgKHRvX2xpc3QgKG1hcGkgfmYgdCkpXG5cbmxldCByZXZfaW5wbGFjZSB0ID1cbiAgbGV0IGkgPSByZWYgMCBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHQgLSAxKSBpblxuICB3aGlsZSAhaSA8ICFqIGRvXG4gICAgc3dhcCB0ICFpICFqO1xuICAgIGluY3IgaTtcbiAgICBkZWNyIGpcbiAgZG9uZVxuOztcblxubGV0IHJldiB0ID1cbiAgbGV0IHQgPSBjb3B5IHQgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2IGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgYSA6OiBsIC0+XG4gICAgbGV0IGxlbiA9IDEgKyBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbiBhIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgICgqIFdlIHN0YXJ0IGF0IFtsZW4gLSAyXSBiZWNhdXNlIHdlIGFscmVhZHkgcHV0IFthXSBhdCBbdC4obGVuIC0gMSldLiAqKVxuICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIHQuKGkpIDwtIGE7XG4gICAgICAgIHIgOj0gbFxuICAgIGRvbmU7XG4gICAgdFxuOztcblxuKCogW29mX2xpc3RfbWFwXSBhbmQgW29mX2xpc3RfcmV2X21hcF0gYXJlIGJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBPQ2FtbFxuICAgZGlzdHJpYnV0aW9uLiAqKVxuXG5sZXQgb2ZfbGlzdF9tYXAgeHMgfmYgPVxuICBtYXRjaCB4cyB3aXRoXG4gIHwgW10gLT4gW3x8XVxuICB8IGhkIDo6IHRsIC0+XG4gICAgbGV0IGEgPSBjcmVhdGUgfmxlbjooMSArIExpc3QubGVuZ3RoIHRsKSAoZiBoZCkgaW5cbiAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaGQpO1xuICAgICAgICBmaWxsIChpICsgMSkgdGxcbiAgICBpblxuICAgIGZpbGwgMSB0bFxuOztcblxubGV0IG9mX2xpc3RfbWFwaSB4cyB+ZiA9XG4gIG1hdGNoIHhzIHdpdGhcbiAgfCBbXSAtPiBbfHxdXG4gIHwgaGQgOjogdGwgLT5cbiAgICBsZXQgYSA9IGNyZWF0ZSB+bGVuOigxICsgTGlzdC5sZW5ndGggdGwpIChmIDAgaGQpIGluXG4gICAgbGV0IHJlYyBmaWxsIGEgaSA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGFcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgdW5zYWZlX3NldCBhIGkgKGYgaSBoZCk7XG4gICAgICAgIGZpbGwgYSAoaSArIDEpIHRsXG4gICAgaW5cbiAgICBmaWxsIGEgMSB0bFxuOztcblxubGV0IG9mX2xpc3RfcmV2X21hcCB4cyB+ZiA9XG4gIGxldCB0ID0gb2ZfbGlzdF9tYXAgeHMgfmYgaW5cbiAgcmV2X2lucGxhY2UgdDtcbiAgdFxuOztcblxubGV0IG9mX2xpc3RfcmV2X21hcGkgeHMgfmYgPVxuICBsZXQgdCA9IG9mX2xpc3RfbWFwaSB4cyB+ZiBpblxuICByZXZfaW5wbGFjZSB0O1xuICB0XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCByID0gcmVmIFt8fF0gaW5cbiAgbGV0IGsgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgbWF0Y2ggZiBpICh1bnNhZmVfZ2V0IHQgaSkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBhIC0+XG4gICAgICBpZiAhayA9IDAgdGhlbiByIDo9IGNyZWF0ZSB+bGVuOihsZW5ndGggdCkgYTtcbiAgICAgIHVuc2FmZV9zZXQgIXIgIWsgYTtcbiAgICAgIGluY3Iga1xuICBkb25lO1xuICBpZiAhayA9IGxlbmd0aCB0IHRoZW4gIXIgZWxzZSBpZiAhayA+IDAgdGhlbiBzdWIgfnBvczowIH5sZW46IWsgIXIgZWxzZSBbfHxdXG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIF9pIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9vcHQgdCA9IGZpbHRlcl9tYXAgdCB+ZjpGbi5pZFxuXG5sZXQgcmFpc2VfbGVuZ3RoX21pc21hdGNoIG5hbWUgbjEgbjIgPVxuICBpbnZhbGlkX2FyZ2YgXCJsZW5ndGggbWlzbWF0Y2ggaW4gJXM6ICVkIDw+ICVkXCIgbmFtZSBuMSBuMiAoKVxuW0BAY29sZF0gW0BAaW5saW5lIG5ldmVyXSBbQEBsb2NhbCBuZXZlcl0gW0BAc3BlY2lhbGlzZSBuZXZlcl1cbjs7XG5cbmxldCBjaGVja19sZW5ndGgyX2V4biBuYW1lIHQxIHQyID1cbiAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gIGxldCBuMiA9IGxlbmd0aCB0MiBpblxuICBpZiBuMSA8PiBuMiB0aGVuIHJhaXNlX2xlbmd0aF9taXNtYXRjaCBuYW1lIG4xIG4yXG47O1xuXG5sZXQgaXRlcjJfZXhuIHQxIHQyIH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5pdGVyMl9leG5cIiB0MSB0MjtcbiAgaXRlcmkgdDEgfmY6KGZ1biBpIHgxIC0+IGYgeDEgKHVuc2FmZV9nZXQgdDIgaSkpXG47O1xuXG5sZXQgbWFwMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5Lm1hcDJfZXhuXCIgdDEgdDI7XG4gIGluaXQgKGxlbmd0aCB0MSkgfmY6KGZ1biBpIC0+IGYgKHVuc2FmZV9nZXQgdDEgaSkgKHVuc2FmZV9nZXQgdDIgaSkpXG47O1xuXG5sZXQgZm9sZDJfZXhuIHQxIHQyIH5pbml0IH5mID1cbiAgY2hlY2tfbGVuZ3RoMl9leG4gXCJBcnJheS5mb2xkMl9leG5cIiB0MSB0MjtcbiAgZm9sZGkgdDEgfmluaXQgfmY6KGZ1biBpIGFjIHggLT4gZiBhYyB4ICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxubGV0IGZpbHRlcmkgdCB+ZiA9IGZpbHRlcl9tYXBpIHQgfmY6KGZ1biBpIHggLT4gaWYgZiBpIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxuXG5cbmxldCBleGlzdHMgdCB+ZiA9XG4gIGxldCBpID0gcmVmIChsZW5ndGggdCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdCAhaSkgdGhlbiByZXN1bHQgOj0gdHJ1ZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXhpc3RzaSB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiBmYWxzZSBpblxuICB3aGlsZSAhaSA+PSAwICYmIG5vdCAhcmVzdWx0IGRvXG4gICAgaWYgZiAhaSAodW5zYWZlX2dldCB0ICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBtZW0gdCBhIH5lcXVhbCA9IGV4aXN0cyB0IH5mOihlcXVhbCBhKVxuXG5sZXQgZm9yX2FsbCB0IH5mID1cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0IC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0ICFpKSkgdGhlbiByZXN1bHQgOj0gZmFsc2UgZWxzZSBkZWNyIGlcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubGV0IGZvcl9hbGxpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgKGxlbmd0aCAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgdHJ1ZSBpblxuICB3aGlsZSAhaSA+PSAwICYmICFyZXN1bHQgZG9cbiAgICBpZiBub3QgKGYgIWkgKHVuc2FmZV9nZXQgdCAhaSkpIHRoZW4gcmVzdWx0IDo9IGZhbHNlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBleGlzdHMyX2V4biB0MSB0MiB+ZiA9XG4gIGNoZWNrX2xlbmd0aDJfZXhuIFwiQXJyYXkuZXhpc3RzMl9leG5cIiB0MSB0MjtcbiAgbGV0IGkgPSByZWYgKGxlbmd0aCB0MSAtIDEpIGluXG4gIGxldCByZXN1bHQgPSByZWYgZmFsc2UgaW5cbiAgd2hpbGUgIWkgPj0gMCAmJiBub3QgIXJlc3VsdCBkb1xuICAgIGlmIGYgKHVuc2FmZV9nZXQgdDEgIWkpICh1bnNhZmVfZ2V0IHQyICFpKSB0aGVuIHJlc3VsdCA6PSB0cnVlIGVsc2UgZGVjciBpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG5cbmxldCBmb3JfYWxsMl9leG4gdDEgdDIgfmYgPVxuICBjaGVja19sZW5ndGgyX2V4biBcIkFycmF5LmZvcl9hbGwyX2V4blwiIHQxIHQyO1xuICBsZXQgaSA9IHJlZiAobGVuZ3RoIHQxIC0gMSkgaW5cbiAgbGV0IHJlc3VsdCA9IHJlZiB0cnVlIGluXG4gIHdoaWxlICFpID49IDAgJiYgIXJlc3VsdCBkb1xuICAgIGlmIG5vdCAoZiAodW5zYWZlX2dldCB0MSAhaSkgKHVuc2FmZV9nZXQgdDIgIWkpKSB0aGVuIHJlc3VsdCA6PSBmYWxzZSBlbHNlIGRlY3IgaVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgZXF1YWwgZXF1YWwgdDEgdDIgPSBsZW5ndGggdDEgPSBsZW5ndGggdDIgJiYgZm9yX2FsbDJfZXhuIHQxIHQyIH5mOmVxdWFsXG5cblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgKHVuc2FmZV9nZXQgdCBpKSlcbiAgZG9uZVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBmaW5kaV9pbnRlcm5hbCB0IH5mIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kID1cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aCB0IGluXG4gIGlmIGxlbmd0aCA9IDBcbiAgdGhlbiBpZl9ub3RfZm91bmQgKClcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiAodW5zYWZlX2dldCB0IDApIGluXG4gICAgd2hpbGUgKG5vdCAhZm91bmQpICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIGlmIGYgIWkgdmFsdWVcbiAgICAgIHRoZW4gKFxuICAgICAgICB2YWx1ZV9mb3VuZCA6PSB2YWx1ZTtcbiAgICAgICAgZm91bmQgOj0gdHJ1ZSlcbiAgICAgIGVsc2UgaW5jciBpXG4gICAgZG9uZTtcbiAgICBpZiAhZm91bmQgdGhlbiBpZl9mb3VuZCB+aTohaSB+dmFsdWU6IXZhbHVlX2ZvdW5kIGVsc2UgaWZfbm90X2ZvdW5kICgpKVxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBTb21lIChpLCB2YWx1ZSkpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuICgpIC0+IE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZlxuICAgIH5pZl9mb3VuZDooZnVuIH5pIH52YWx1ZSAtPiBpLCB2YWx1ZSlcbiAgICB+aWZfbm90X2ZvdW5kOihmdW4gKCkgLT4gcmFpc2UgKE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZGlfZXhuOiBub3QgZm91bmRcIikpKVxuOztcblxubGV0IGZpbmRfZXhuIHQgfmYgPVxuICBmaW5kaV9pbnRlcm5hbFxuICAgIHRcbiAgICB+ZjooZnVuIF9pIHggLT4gZiB4KVxuICAgIH5pZl9mb3VuZDooZnVuIH5pOl8gfnZhbHVlIC0+IHZhbHVlKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biAoKSAtPiByYWlzZSAoTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX2V4bjogbm90IGZvdW5kXCIpKSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPSBPcHRpb24ubWFwIChmaW5kaSB0IH5mOihmdW4gX2kgeCAtPiBmIHgpKSB+ZjooZnVuIChfaSwgeCkgLT4geClcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJBcnJheS5maW5kX21hcF9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgZmluZF9tYXBfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIHQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBub3RfZm91bmRcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgZmluZF9tYXBfZXhuXG47O1xuXG5sZXQgZmluZF9tYXBpIHQgfmYgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMFxuICB0aGVuIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCB2YWx1ZV9mb3VuZCA9IHJlZiBOb25lIGluXG4gICAgd2hpbGUgT3B0aW9uLmlzX25vbmUgIXZhbHVlX2ZvdW5kICYmICFpIDwgbGVuZ3RoIGRvXG4gICAgICBsZXQgdmFsdWUgPSB1bnNhZmVfZ2V0IHQgIWkgaW5cbiAgICAgIHZhbHVlX2ZvdW5kIDo9IGYgIWkgdmFsdWU7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgICF2YWx1ZV9mb3VuZClcbjs7XG5cbmxldCBmaW5kX21hcGlfZXhuID1cbiAgbGV0IG5vdF9mb3VuZCA9IE5vdF9mb3VuZF9zIChBdG9tIFwiQXJyYXkuZmluZF9tYXBpX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBmaW5kX21hcGlfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwaSB0IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgfCBTb21lIHggLT4geFxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIGZpbmRfbWFwaV9leG5cbjs7XG5cbmxldCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSB0IH5lcXVhbCA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgaWYgbiA8PSAxXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgcmVzdWx0ID0gcmVmIE5vbmUgaW5cbiAgICBsZXQgaSA9IHJlZiAxIGluXG4gICAgbGV0IHByZXYgPSByZWYgKHVuc2FmZV9nZXQgdCAwKSBpblxuICAgIHdoaWxlICFpIDwgbiBkb1xuICAgICAgbGV0IGN1ciA9IHVuc2FmZV9nZXQgdCAhaSBpblxuICAgICAgaWYgZXF1YWwgY3VyICFwcmV2XG4gICAgICB0aGVuIChcbiAgICAgICAgcmVzdWx0IDo9IFNvbWUgKCFwcmV2LCBjdXIpO1xuICAgICAgICBpIDo9IG4pXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJldiA6PSBjdXI7XG4gICAgICAgIGluY3IgaSlcbiAgICBkb25lO1xuICAgICFyZXN1bHQpXG47O1xuXG5sZXQgcmVkdWNlIHQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByID0gcmVmICh1bnNhZmVfZ2V0IHQgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgdCBpKVxuICAgIGRvbmU7XG4gICAgU29tZSAhcilcbjs7XG5cbmxldCByZWR1Y2VfZXhuIHQgfmYgPVxuICBtYXRjaCByZWR1Y2UgdCB+ZiB3aXRoXG4gIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBcIkFycmF5LnJlZHVjZV9leG5cIlxuICB8IFNvbWUgdiAtPiB2XG47O1xuXG5sZXQgcGVybXV0ZSA9IEFycmF5X3Blcm11dGUucGVybXV0ZVxuXG5sZXQgcmFuZG9tX2VsZW1lbnRfZXhuID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICBpZiBpc19lbXB0eSB0XG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS5yYW5kb21fZWxlbWVudF9leG46IGVtcHR5IGFycmF5XCJcbiAgZWxzZSB0LihSYW5kb20uU3RhdGUuaW50IHJhbmRvbV9zdGF0ZSAobGVuZ3RoIHQpKVxuOztcblxubGV0IHJhbmRvbV9lbGVtZW50ID8ocmFuZG9tX3N0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIHQgPVxuICB0cnkgU29tZSAocmFuZG9tX2VsZW1lbnRfZXhuIH5yYW5kb21fc3RhdGUgdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHppcCB0MSB0MiA9XG4gIGlmIGxlbmd0aCB0MSA8PiBsZW5ndGggdDIgdGhlbiBOb25lIGVsc2UgU29tZSAobWFwMl9leG4gdDEgdDIgfmY6KGZ1biB4MSB4MiAtPiB4MSwgeDIpKVxuOztcblxubGV0IHppcF9leG4gdDEgdDIgPVxuICBpZiBsZW5ndGggdDEgPD4gbGVuZ3RoIHQyXG4gIHRoZW4gZmFpbHdpdGggXCJBcnJheS56aXBfZXhuXCJcbiAgZWxzZSBtYXAyX2V4biB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4Milcbjs7XG5cbmxldCB1bnppcCB0ID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBpZiBuID0gMFxuICB0aGVuIFt8fF0sIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IHgsIHkgPSB0LigwKSBpblxuICAgIGxldCByZXMxID0gY3JlYXRlIH5sZW46biB4IGluXG4gICAgbGV0IHJlczIgPSBjcmVhdGUgfmxlbjpuIHkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCB4LCB5ID0gdC4oaSkgaW5cbiAgICAgIHJlczEuKGkpIDwtIHg7XG4gICAgICByZXMyLihpKSA8LSB5XG4gICAgZG9uZTtcbiAgICByZXMxLCByZXMyKVxuOztcblxubGV0IHNvcnRlZF9jb3B5IHQgfmNvbXBhcmUgPVxuICBsZXQgdDEgPSBjb3B5IHQgaW5cbiAgc29ydCB0MSB+Y29tcGFyZTtcbiAgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPVxuICBsZXQgYm90aCA9IG1hcGkgdCB+ZjooZnVuIGkgeCAtPiBpZiBmIGkgeCB0aGVuIEVpdGhlci5GaXJzdCB4IGVsc2UgRWl0aGVyLlNlY29uZCB4KSBpblxuICBsZXQgdHJ1ZXMgPVxuICAgIGZpbHRlcl9tYXAgYm90aCB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3QgeCAtPiBTb21lIHhcbiAgICAgIHwgU2Vjb25kIF8gLT4gTm9uZSlcbiAgaW5cbiAgbGV0IGZhbHNlcyA9XG4gICAgZmlsdGVyX21hcCBib3RoIH5mOihmdW5jdGlvblxuICAgICAgfCBGaXJzdCBfIC0+IE5vbmVcbiAgICAgIHwgU2Vjb25kIHggLT4gU29tZSB4KVxuICBpblxuICB0cnVlcywgZmFsc2VzXG47O1xuXG5sZXQgcGFydGl0aW9uX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmY6KGZ1biBfaSB4IC0+IGYgeClcbmxldCBsYXN0IHQgPSB0LihsZW5ndGggdCAtIDEpXG5cbigqIENvbnZlcnQgdG8gYSBzZXF1ZW5jZSBidXQgZG9lcyBub3QgYXR0ZW1wdCB0byBwcm90ZWN0IGFnYWluc3QgbW9kaWZpY2F0aW9uXG4gICBpbiB0aGUgYXJyYXkuICopXG5sZXQgdG9fc2VxdWVuY2VfbXV0YWJsZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6MCB+ZjooZnVuIGkgLT5cbiAgICBpZiBpID49IGxlbmd0aCB0IHRoZW4gU2VxdWVuY2UuU3RlcC5Eb25lIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCAodC4oaSksIGkgKyAxKSlcbjs7XG5cbmxldCB0b19zZXF1ZW5jZSB0ID0gdG9fc2VxdWVuY2VfbXV0YWJsZSAoY29weSB0KVxuXG5sZXQgY2FydGVzaWFuX3Byb2R1Y3QgdDEgdDIgPVxuICBpZiBpc19lbXB0eSB0MSB8fCBpc19lbXB0eSB0MlxuICB0aGVuIFt8fF1cbiAgZWxzZSAoXG4gICAgbGV0IG4xID0gbGVuZ3RoIHQxIGluXG4gICAgbGV0IG4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IHQgPSBjcmVhdGUgfmxlbjoobjEgKiBuMikgKHQxLigwKSwgdDIuKDApKSBpblxuICAgIGxldCByID0gcmVmIDAgaW5cbiAgICBmb3IgaTEgPSAwIHRvIG4xIC0gMSBkb1xuICAgICAgZm9yIGkyID0gMCB0byBuMiAtIDEgZG9cbiAgICAgICAgdC4oIXIpIDwtIHQxLihpMSksIHQyLihpMik7XG4gICAgICAgIGluY3IgclxuICAgICAgZG9uZVxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCB0cmFuc3Bvc2UgdHQgPVxuICBpZiBsZW5ndGggdHQgPSAwXG4gIHRoZW4gU29tZSBbfHxdXG4gIGVsc2UgKFxuICAgIGxldCB3aWR0aCA9IGxlbmd0aCB0dCBpblxuICAgIGxldCBkZXB0aCA9IGxlbmd0aCB0dC4oMCkgaW5cbiAgICBpZiBleGlzdHMgdHQgfmY6KGZ1biB0IC0+IGxlbmd0aCB0IDw+IGRlcHRoKVxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoaW5pdCBkZXB0aCB+ZjooZnVuIGQgLT4gaW5pdCB3aWR0aCB+ZjooZnVuIHcgLT4gdHQuKHcpLihkKSkpKSlcbjs7XG5cbmxldCB0cmFuc3Bvc2VfZXhuIHR0ID1cbiAgbWF0Y2ggdHJhbnNwb3NlIHR0IHdpdGhcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiQXJyYXkudHJhbnNwb3NlX2V4blwiXG4gIHwgU29tZSB0dCcgLT4gdHQnXG47O1xuXG5pbmNsdWRlIEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UxIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGdldCA9IGdldFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gW3x8XVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFzc2VydCAobGVuZ3RoIHQgPiAwKTtcbiAgICAgICAgY3JlYXRlIH5sZW4gdC4oMCkpXG4gICAgOztcblxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaXRlciB0IH5mOmludmFyaWFudF9hXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBTb3J0ID0gU29ydFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBJbnQgPSBJbnQwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbigqIFdlIG1haW50YWluIHRoZSBwcm9wZXJ0eSB0aGF0IGFsbCB2YWx1ZXMgb2YgdHlwZSBbdF0gZG8gbm90IGhhdmUgdGhlIHRhZ1xuICAgW2RvdWJsZV9hcnJheV90YWddLiAgU29tZSBmdW5jdGlvbnMgYmVsb3cgYXNzdW1lIHRoaXMgaW4gb3JkZXIgdG8gYXZvaWQgdGVzdGluZyB0aGVcbiAgIHRhZywgYW5kIHdpbGwgc2VnZmF1bHQgaWYgdGhpcyBwcm9wZXJ0eSBkb2Vzbid0IGhvbGQuICopXG50eXBlIHQgPSBDYW1sLk9iai50IGFycmF5XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAoQ2FtbC5PYmoudGFnIChDYW1sLk9iai5yZXByIHQpIDw+IENhbWwuT2JqLmRvdWJsZV9hcnJheV90YWcpXG5sZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoICgqIHdvdWxkIGNoZWNrIGZvciBmbG9hdCBhcnJheXMgaW4gMzIgYml0LCBidXQgd2hhdGV2ZXIgKilcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgU2V4cC5BdG9tXG4gICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgXCI8T2JqX2FycmF5LnQgb2YgbGVuZ3RoIFwiOyBJbnQudG9fc3RyaW5nIChsZW5ndGggdCk7IFwiPlwiIF0pXG47O1xuXG5sZXQgemVyb19vYmogPSBDYW1sLk9iai5yZXByICgwIDogaW50KVxuXG4oKiBXZSBjYWxsIFtBcnJheS5jcmVhdGVdIHdpdGggYSB2YWx1ZSB0aGF0IGlzIG5vdCBhIGZsb2F0IHNvIHRoYXQgdGhlIGFycmF5IGRvZXNuJ3QgZ2V0XG4gICB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICopXG5sZXQgY3JlYXRlX3plcm8gfmxlbiA9IEFycmF5LmNyZWF0ZSB+bGVuIHplcm9fb2JqXG5sZXQgZW1wdHkgPSBbfHxdXG5cbnR5cGUgbm90X2FfZmxvYXQgPVxuICB8IE5vdF9hX2Zsb2F0XzBcbiAgfCBOb3RfYV9mbG9hdF8xIG9mIGludFxuXG5sZXQgX25vdF9hX2Zsb2F0XzAgPSBOb3RfYV9mbG9hdF8wXG5sZXQgX25vdF9hX2Zsb2F0XzEgPSBOb3RfYV9mbG9hdF8xIDQyXG5cbmxldCBnZXQgdCBpID1cbiAgKCogTWFrZSB0aGUgY29tcGlsZXIgYmVsaWV2ZSBbdF0gaXMgYW4gYXJyYXkgbm90IGNvbnRhaW5pbmcgZmxvYXRzIHNvIGl0IGRvZXMgbm90IGNoZWNrXG4gICAgIGlmIFt0XSBpcyB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICBJdCBpcyBOT1Qgb2sgdG8gdXNlIFtpbnQgYXJyYXldIHNpbmNlIChpZlxuICAgICB0aGlzIGZ1bmN0aW9uIGlzIGlubGluZWQgYW5kIHRoZSBhcnJheSBjb250YWlucyBpbi1oZWFwIGJveGVkIHZhbHVlcykgd3JvbmcgcmVnaXN0ZXJcbiAgICAgdHlwaW5nIG1heSByZXN1bHQsIGxlYWRpbmcgdG8gYSBmYWlsdXJlIHRvIHJlZ2lzdGVyIG5lY2Vzc2FyeSBHQyByb290cy4gKilcbiAgQ2FtbC5PYmoucmVwciAoKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkuKGkpIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9nZXQgdCBpID1cbiAgKCogTWFrZSB0aGUgY29tcGlsZXIgYmVsaWV2ZSBbdF0gaXMgYW4gYXJyYXkgbm90IGNvbnRhaW5pbmcgZmxvYXRzIHNvIGl0IGRvZXMgbm90IGNoZWNrXG4gICAgIGlmIFt0XSBpcyB0YWdnZWQgd2l0aCBbRG91YmxlX2FycmF5X3RhZ10uICopXG4gIENhbWwuT2JqLnJlcHJcbiAgICAoQXJyYXkudW5zYWZlX2dldCAoQ2FtbC5PYmoubWFnaWMgKHQgOiB0KSA6IG5vdF9hX2Zsb2F0IGFycmF5KSBpIDogbm90X2FfZmxvYXQpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogU2FtZSBjb21tZW50IGFzIFt1bnNhZmVfZ2V0XS4gU3lzLm9wYXF1ZV9pZGVudGl0eSBwcmV2ZW50cyB0aGUgY29tcGlsZXIgZnJvbVxuICAgICBwb3RlbnRpYWxseSB3cm9uZ2x5IGd1ZXNzaW5nIHRoZSB0eXBlIG9mIHRoZSBhcnJheSBiYXNlZCBvbiB0aGUgdHlwZSBvZiBlbGVtZW50LCB0aGF0XG4gICAgIGlzIHByZXZlbnQgdGhlIGltcGxpY2F0aW9uOiAoT2JqLnRhZyBvYmogPSBPYmouZG91YmxlX3RhZykgPT4gKE9iai50YWcgdCA9XG4gICAgIE9iai5kb3VibGVfYXJyYXlfdGFnKSB3aGljaCBmbGFtYmRhIGhhcyB0cmllZCBpbiB0aGUgcGFzdCAoYXQgbGVhc3QgdGhhdCdzIGFzc3VtaW5nXG4gICAgIHRoZSBjb21waWxlciByZXNwZWN0cyBTeXMub3BhcXVlX2lkZW50aXR5LCB3aGljaCBpcyBub3QgYWx3YXlzIHRoZSBjYXNlKS4gKilcbiAgQXJyYXkudW5zYWZlX3NldFxuICAgIChDYW1sLk9iai5tYWdpYyAodCA6IHQpIDogbm90X2FfZmxvYXQgYXJyYXkpXG4gICAgaVxuICAgIChDYW1sLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqID1cbiAgKCogc2FtZSBhcyB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgYnV0IHNhZmUgKilcbiAgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBub3RfYV9mbG9hdCBhcnJheSkuKGkpXG4gIDwtIChDYW1sLk9iai5vYmogKFN5cy5vcGFxdWVfaWRlbnRpdHkgb2JqKSA6IG5vdF9hX2Zsb2F0KVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnQgPVxuICAoKiBUaGlzIHNraXBzIFtjYW1sX21vZGlmeV0sIHdoaWNoIGlzIE9LIGlmIGJvdGggdGhlIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmUgaW50ZWdlcnMuICopXG4gIEFycmF5LnVuc2FmZV9zZXQgKENhbWwuT2JqLm1hZ2ljICh0IDogdCkgOiBpbnQgYXJyYXkpIGkgKFN5cy5vcGFxdWVfaWRlbnRpdHkgaW50KVxuOztcblxuKCogRm9yIFtzZXRdIGFuZCBbdW5zYWZlX3NldF0sIGlmIGEgcG9pbnRlciBpcyBpbnZvbHZlZCwgd2UgZmlyc3QgZG8gYSBwaHlzaWNhbC1lcXVhbGl0eVxuICAgdGVzdCB0byBzZWUgaWYgdGhlIHBvaW50ZXIgaXMgY2hhbmdpbmcuICBJZiBub3QsIHdlIGRvbid0IG5lZWQgdG8gZG8gdGhlIFtzZXRdLCB3aGljaFxuICAgc2F2ZXMgYSBjYWxsIHRvIFtjYW1sX21vZGlmeV0uICBXZSB0aGluayB0aGlzIHBoeXNpY2FsLWVxdWFsaXR5IHRlc3QgaXMgd29ydGggaXRcbiAgIGJlY2F1c2UgaXQgaXMgdmVyeSBjaGVhcCAoYm90aCB2YWx1ZXMgYXJlIGFscmVhZHkgYXZhaWxhYmxlIGZyb20gdGhlIFtpc19pbnRdIHRlc3QpXG4gICBhbmQgYmVjYXVzZSBbY2FtbF9tb2RpZnldIGlzIGV4cGVuc2l2ZS4gKilcblxubGV0IHNldCB0IGkgb2JqID1cbiAgKCogV2UgdXNlIFtnZXRdIGZpcnN0IGJ1dCB0aGVuIHdlIHVzZSBbQXJyYXkudW5zYWZlX3NldF0gc2luY2Ugd2Uga25vdyB0aGF0IFtpXSBpc1xuICAgICB2YWxpZC4gKilcbiAgbGV0IG9sZF9vYmogPSBnZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqICYmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX29iaiBvYmopXG4gIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSBvYmpcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3NldCB0IGkgb2JqID1cbiAgbGV0IG9sZF9vYmogPSB1bnNhZmVfZ2V0IHQgaSBpblxuICBpZiBDYW1sLk9iai5pc19pbnQgb2xkX29iaiAmJiBDYW1sLk9iai5pc19pbnQgb2JqXG4gIHRoZW4gdW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGkgKENhbWwuT2JqLm9iaiBvYmogOiBpbnQpXG4gIGVsc2UgaWYgbm90IChwaHlzX2VxdWFsIG9sZF9vYmogb2JqKVxuICB0aGVuIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSBvYmogPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIENhbWwuT2JqLmlzX2ludCBvbGRfb2JqICYmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIG9ialxuOztcblxubGV0IHN3YXAgdCBpIGogPVxuICBsZXQgYSA9IGdldCB0IGkgaW5cbiAgbGV0IGIgPSBnZXQgdCBqIGluXG4gIHVuc2FmZV9zZXQgdCBpIGI7XG4gIHVuc2FmZV9zZXQgdCBqIGFcbjs7XG5cbmxldCBjcmVhdGUgfmxlbiB4ID1cbiAgKCogSWYgd2UgY2FuLCB1c2UgW0FycmF5LmNyZWF0ZV0gZGlyZWN0bHkuICopXG4gIGlmIENhbWwuT2JqLnRhZyB4IDw+IENhbWwuT2JqLmRvdWJsZV90YWdcbiAgdGhlbiBBcnJheS5jcmVhdGUgfmxlbiB4XG4gIGVsc2UgKFxuICAgICgqIE90aGVyd2lzZSB1c2UgW2NyZWF0ZV96ZXJvXSBhbmQgc2V0IHRoZSBjb250ZW50cyAqKVxuICAgIGxldCB0ID0gY3JlYXRlX3plcm8gfmxlbiBpblxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeFxuICAgIGRvbmU7XG4gICAgdClcbjs7XG5cbmxldCBzaW5nbGV0b24gb2JqID0gY3JlYXRlIH5sZW46MSBvYmpcblxuKCogUHJlLWNvbmRpdGlvbjogdC4oaSkgaXMgYW4gaW50ZWdlci4gKilcbmxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgdCBpIG9iaiA9XG4gIGlmIENhbWwuT2JqLmlzX2ludCBvYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSAoQ2FtbC5PYmoub2JqIG9iaiA6IGludClcbiAgZWxzZVxuICAgICgqIFt0LihpKV0gaXMgYW4gaW50ZWdlciBhbmQgW29ial0gaXMgbm90LCBzbyB3ZSBkbyBub3QgbmVlZCB0byBjaGVjayBpZiB0aGV5IGFyZVxuICAgICAgIGVxdWFsLiAqKVxuICAgIHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgb2JqXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQgdCBpIGludCA9XG4gIGxldCBvbGRfb2JqID0gdW5zYWZlX2dldCB0IGkgaW5cbiAgaWYgQ2FtbC5PYmouaXNfaW50IG9sZF9vYmpcbiAgdGhlbiB1bnNhZmVfc2V0X2ludF9hc3N1bWluZ19jdXJyZW50bHlfaW50IHQgaSBpbnRcbiAgZWxzZSB1bnNhZmVfc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIGludClcbjs7XG5cbmxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciB0IGkgPVxuICBsZXQgb2xkX29iaiA9IHVuc2FmZV9nZXQgdCBpIGluXG4gIGlmIG5vdCAoQ2FtbC5PYmouaXNfaW50IG9sZF9vYmopIHRoZW4gdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IHQgaSAoQ2FtbC5PYmoucmVwciAwKVxuOztcblxuKCoqIFt1bnNhZmVfYmxpdF0gaXMgbGlrZSBbQXJyYXkuYmxpdF0sIGV4Y2VwdCBpdCB1c2VzIG91ciBvd24gZm9yLWxvb3AgdG8gYXZvaWRcbiAgICBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlLiAgSXRzIHBlcmZvcm1hbmNlIGlzIHN0aWxsIG5vdCBjb21wYXJhYmxlIHRvIGEgbWVtY3B5LiAqKVxubGV0IHVuc2FmZV9ibGl0IH5zcmMgfnNyY19wb3MgfmRzdCB+ZHN0X3BvcyB+bGVuID1cbiAgKCogV2hlbiBbcGh5c19lcXVhbCBzcmMgZHN0XSwgd2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIFtkc3RfcG9zIDwgc3JjX3Bvc10gYW5kIGhhdmUgdGhlXG4gICAgIGZvciBsb29wIGdvIGluIHRoZSByaWdodCBkaXJlY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBvdmVyd3JpdGUgZGF0YSB0aGF0IHdlIHN0aWxsIG5lZWRcbiAgICAgdG8gcmVhZC4gIFdoZW4gW25vdCAocGh5c19lcXVhbCBzcmMgZHN0KV0sIGRvaW5nIHRoaXMgaXMgaGFybWxlc3MuICBGcm9tIGFcbiAgICAgbWVtb3J5LXBlcmZvcm1hbmNlIHBlcnNwZWN0aXZlLCBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIG9uZSBsb29wcyB1cCBvciBkb3duLlxuICAgICBDb25zdGFudC1zdHJpZGUgYWNjZXNzLCBmb3J3YXJkIG9yIGJhY2t3YXJkLCBzaG91bGQgYmUgaW5kaXN0aW5ndWlzaGFibGUgKGF0IGxlYXN0IG9uXG4gICAgIGFuIGludGVsIGk3KS4gIFNvLCB3ZSBkb24ndCBkbyBhIGNoZWNrIGZvciBbcGh5c19lcXVhbCBzcmMgZHN0XSBhbmQgYWx3YXlzIGxvb3AgdXAgaW5cbiAgICAgdGhhdCBjYXNlLiAqKVxuICBpZiBkc3RfcG9zIDwgc3JjX3Bvc1xuICB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHVuc2FmZV9zZXQgZHN0IChkc3RfcG9zICsgaSkgKHVuc2FmZV9nZXQgc3JjIChzcmNfcG9zICsgaSkpXG4gICAgZG9uZVxuICBlbHNlXG4gICAgZm9yIGkgPSBsZW4gLSAxIGRvd250byAwIGRvXG4gICAgICB1bnNhZmVfc2V0IGRzdCAoZHN0X3BvcyArIGkpICh1bnNhZmVfZ2V0IHNyYyAoc3JjX3BvcyArIGkpKVxuICAgIGRvbmVcbjs7XG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IGNyZWF0ZSA9IGNyZWF0ZV96ZXJvXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCB1bnNhZmVfYmxpdCA9IHVuc2FmZV9ibGl0XG4gIGVuZClcblxubGV0IGNvcHkgc3JjID1cbiAgbGV0IGRzdCA9IGNyZWF0ZV96ZXJvIH5sZW46KGxlbmd0aCBzcmMpIGluXG4gIGJsaXRvIH5zcmMgfmRzdCAoKTtcbiAgZHN0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIFdBUk5JTkc6XG4gICBXZSB1c2Ugbm9uLW1lbW9yeS1zYWZlIHRoaW5ncyB0aHJvdWdob3V0IHRoZSBbVHJ1c3RlZF0gbW9kdWxlLlxuICAgTW9zdCBvZiBpdCBpcyBvbmx5IHNhZmUgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgdHlwZSBzaWduYXR1cmUgKGUuZy4gZXhwb3NpbmdcbiAgIFt2YWwgY29weSA6ICdhIHQgLT4gJ2IgdF0gd291bGQgYmUgYSBiaWcgbWlzdGFrZSkuICopXG5tb2R1bGUgVHJ1c3RlZCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZV9vYmpfYXJyYXkgOiBsZW46aW50IC0+ICdhIHRcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgLT4gJ2EgdFxuICB2YWwgZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHN3YXAgOiBfIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCB1bnNhZmVfZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2FcbiAgdmFsIHVuc2FmZV9zZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bnNhZmVfc2V0X29taXRfcGh5c19lcXVhbF9jaGVjayA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50IDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgOiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF9hc3N1bWluZ19jdXJyZW50bHlfaW50IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgdW5zYWZlX3NldF93aXRoX2NhbWxfbW9kaWZ5IDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICB2YWwgc2V0X3dpdGhfY2FtbF9tb2RpZnkgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBsZW5ndGggOiAnYSB0IC0+IGludFxuICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2EgdCwgJ2EgdCkgQmxpdC5ibGl0XG4gIHZhbCBjb3B5IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA6IF8gdCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IE9ial9hcnJheS50XG5cbiAgbGV0IGVtcHR5ID0gT2JqX2FycmF5LmVtcHR5XG4gIGxldCB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbiA9IE9ial9hcnJheS5jcmVhdGVfemVybyB+bGVuXG4gIGxldCBjcmVhdGVfb2JqX2FycmF5IH5sZW4gPSBPYmpfYXJyYXkuY3JlYXRlX3plcm8gfmxlblxuICBsZXQgY3JlYXRlIH5sZW4geCA9IE9ial9hcnJheS5jcmVhdGUgfmxlbiAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgc2luZ2xldG9uIHggPSBPYmpfYXJyYXkuc2luZ2xldG9uIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCBzd2FwIHQgaSBqID0gT2JqX2FycmF5LnN3YXAgdCBpIGpcbiAgbGV0IGdldCBhcnIgaSA9IENhbWwuT2JqLm9iaiAoT2JqX2FycmF5LmdldCBhcnIgaSlcbiAgbGV0IHNldCBhcnIgaSB4ID0gT2JqX2FycmF5LnNldCBhcnIgaSAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX2dldCBhcnIgaSA9IENhbWwuT2JqLm9iaiAoT2JqX2FycmF5LnVuc2FmZV9nZXQgYXJyIGkpXG4gIGxldCB1bnNhZmVfc2V0IGFyciBpIHggPSBPYmpfYXJyYXkudW5zYWZlX3NldCBhcnIgaSAoQ2FtbC5PYmoucmVwciB4KVxuICBsZXQgdW5zYWZlX3NldF9pbnQgYXJyIGkgeCA9IE9ial9hcnJheS51bnNhZmVfc2V0X2ludCBhcnIgaSB4XG5cbiAgbGV0IHVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfaW50X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeFxuICA7O1xuXG4gIGxldCB1bnNhZmVfc2V0X2Fzc3VtaW5nX2N1cnJlbnRseV9pbnQgYXJyIGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfYXNzdW1pbmdfY3VycmVudGx5X2ludCBhcnIgaSAoQ2FtbC5PYmoucmVwciB4KVxuICA7O1xuXG4gIGxldCBsZW5ndGggPSBPYmpfYXJyYXkubGVuZ3RoXG4gIGxldCB1bnNhZmVfYmxpdCA9IE9ial9hcnJheS51bnNhZmVfYmxpdFxuICBsZXQgY29weSA9IE9ial9hcnJheS5jb3B5XG5cbiAgbGV0IHVuc2FmZV9zZXRfb21pdF9waHlzX2VxdWFsX2NoZWNrIHQgaSB4ID1cbiAgICBPYmpfYXJyYXkudW5zYWZlX3NldF9vbWl0X3BoeXNfZXF1YWxfY2hlY2sgdCBpIChDYW1sLk9iai5yZXByIHgpXG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgeCA9XG4gICAgT2JqX2FycmF5LnVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeSB0IGkgKENhbWwuT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIHggPSBPYmpfYXJyYXkuc2V0X3dpdGhfY2FtbF9tb2RpZnkgdCBpIChDYW1sLk9iai5yZXByIHgpXG4gIGxldCB1bnNhZmVfY2xlYXJfaWZfcG9pbnRlciA9IE9ial9hcnJheS51bnNhZmVfY2xlYXJfaWZfcG9pbnRlclxuZW5kXG5cbmluY2x1ZGUgVHJ1c3RlZFxuXG5sZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKENhbWwuT2JqLnRhZyAoQ2FtbC5PYmoucmVwciB0KSA8PiBDYW1sLk9iai5kb3VibGVfYXJyYXlfdGFnKVxuXG5sZXQgaW5pdCBsIH5mID1cbiAgaWYgbCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlVuaWZvcm1fYXJyYXkuaW5pdFwiXG4gIGVsc2UgKFxuICAgIGxldCByZXMgPSB1bnNhZmVfY3JlYXRlX3VuaW5pdGlhbGl6ZWQgfmxlbjpsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHJlcyBpIChmIGkpXG4gICAgZG9uZTtcbiAgICByZXMpXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID0gaW5pdCB+ZjooQXJyYXkudW5zYWZlX2dldCBhcnIpIChBcnJheS5sZW5ndGggYXJyKVxubGV0IG1hcCBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiAodW5zYWZlX2dldCBhIGkpKSAobGVuZ3RoIGEpXG5sZXQgbWFwaSBhIH5mID0gaW5pdCB+ZjooZnVuIGkgLT4gZiBpICh1bnNhZmVfZ2V0IGEgaSkpIChsZW5ndGggYSlcblxubGV0IGl0ZXIgYSB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuOztcblxubGV0IGl0ZXJpIGEgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvXG4gICAgZiBpICh1bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuOztcblxubGV0IGZvbGRpIGEgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIGFjYyA6PSBmIGkgIWFjYyAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFhY2Ncbjs7XG5cbmxldCB0b19saXN0IHQgPSBMaXN0LmluaXQgfmY6KGdldCB0KSAobGVuZ3RoIHQpXG5cbmxldCBvZl9saXN0IGwgPVxuICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICBsZXQgcmVzID0gdW5zYWZlX2NyZWF0ZV91bmluaXRpYWxpemVkIH5sZW4gaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSB4IC0+IHNldCByZXMgaSB4KTtcbiAgcmVzXG47O1xuXG4oKiBJdCBpcyBub3Qgc2FmZSBmb3IgW3RvX2FycmF5XSB0byBiZSB0aGUgaWRlbnRpdHkgZnVuY3Rpb24gYmVjYXVzZSB3ZSBoYXZlIGNvZGUgdGhhdFxuICAgcmVsaWVzIG9uIFtmbG9hdCBhcnJheV1zIGJlaW5nIHVuYm94ZWQsIGZvciBleGFtcGxlIGluIFtiaW5fd3JpdGVfYXJyYXldLiAqKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgZXhpc3RzIHQgfmYgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiBpID1cbiAgICBpZiBpIDwgMCB0aGVuIGZhbHNlIGVsc2UgZiAodW5zYWZlX2dldCB0IGkpIHx8IGxvb3AgdCB+ZiAoaSAtIDEpXG4gIGluXG4gIGxvb3AgdCB+ZiAobGVuZ3RoIHQgLSAxKVxuOztcblxubGV0IGZvcl9hbGwgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB0IH5mIGkgPSBpZiBpIDwgMCB0aGVuIHRydWUgZWxzZSBmICh1bnNhZmVfZ2V0IHQgaSkgJiYgbG9vcCB0IH5mIChpIC0gMSkgaW5cbiAgbG9vcCB0IH5mIChsZW5ndGggdCAtIDEpXG47O1xuXG5sZXQgbWFwMl9leG4gdDEgdDIgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQxIGluXG4gIGlmIGxlbmd0aCB0MiA8PiBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5Lm1hcDJfZXhuXCI7XG4gIGluaXQgbGVuIH5mOihmdW4gaSAtPiBmICh1bnNhZmVfZ2V0IHQxIGkpICh1bnNhZmVfZ2V0IHQyIGkpKVxuOztcblxubGV0IHRfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKGdyYW1tYXIgOiBlbHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogZWx0IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIChBcnJheS50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcblxuaW5jbHVkZVxuICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAoQXJyYXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2FycmF5XG4gICAgZW5kKVxuXG5pbmNsdWRlIEJsaXQuTWFrZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBsZXQgY3JlYXRlX2xpa2UgfmxlbiB0ID1cbiAgICAgIGlmIGxlbiA9IDBcbiAgICAgIHRoZW4gZW1wdHlcbiAgICAgIGVsc2UgKFxuICAgICAgICBhc3NlcnQgKGxlbmd0aCB0ID4gMCk7XG4gICAgICAgIGNyZWF0ZSB+bGVuIChnZXQgdCAwKSlcbiAgICA7O1xuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IHQgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0IH5jb21wYXJlXG5sZXQgbWF4X2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuXG4oKiBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBwcHhfY29tcGFyZSBbY29tcGFyZV9hcnJheV0gYnV0IHVzZXMgb3VyIFt1bnNhZmVfZ2V0XSBhbmQgW2xlbmd0aF0uICopXG5sZXQgY29tcGFyZSBjb21wYXJlX2VsdCBhIGIgPVxuICBpZiBwaHlzX2VxdWFsIGEgYlxuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbGV0IGxlbl9hID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgbGVuX2IgPSBsZW5ndGggYiBpblxuICAgIGxldCByZXQgPSBjb21wYXJlIGxlbl9hIGxlbl9iIGluXG4gICAgaWYgcmV0IDw+IDBcbiAgICB0aGVuIHJldFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gbGVuX2FcbiAgICAgICAgdGhlbiAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsID0gdW5zYWZlX2dldCBhIGlcbiAgICAgICAgICBhbmQgciA9IHVuc2FmZV9nZXQgYiBpIGluXG4gICAgICAgICAgbGV0IHJlcyA9IGNvbXBhcmVfZWx0IGwgciBpblxuICAgICAgICAgIGlmIHJlcyA8PiAwIHRoZW4gcmVzIGVsc2UgbG9vcCAoaSArIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgMCkpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgY2VpbCA9IENhbWwuY2VpbFxubGV0IGZsb29yID0gQ2FtbC5mbG9vclxubGV0IG1vZF9mbG9hdCA9IENhbWwubW9kX2Zsb2F0XG5sZXQgbW9kZiA9IENhbWwubW9kZlxubGV0IGZsb2F0X29mX3N0cmluZyA9IENhbWwuZmxvYXRfb2Zfc3RyaW5nXG5sZXQgbmFuID0gQ2FtbC5uYW5cbmxldCBpbmZpbml0eSA9IENhbWwuaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBDYW1sLm5lZ19pbmZpbml0eVxubGV0IG1heF9maW5pdGVfdmFsdWUgPSBDYW1sLm1heF9mbG9hdFxubGV0IGVwc2lsb25fZmxvYXQgPSBDYW1sLmVwc2lsb25fZmxvYXRcbmxldCBjbGFzc2lmeV9mbG9hdCA9IENhbWwuY2xhc3NpZnlfZmxvYXRcbmxldCBhYnNfZmxvYXQgPSBDYW1sLmFic19mbG9hdFxubGV0IGlzX2ludGVnZXIgPSBDYW1sLkZsb2F0LmlzX2ludGVnZXJcbmxldCAoICoqICkgPSBDYW1sLiggKiogKVxuXG5sZXQgKCAlLiApIGEgYiA9XG4gICgqIFJhaXNlIGluIGNhc2Ugb2YgYSBuZWdhdGl2ZSBtb2R1bHVzLCBhcyBkb2VzIEludC4oICUgKS4gKilcbiAgaWYgYiA8IDAuXG4gIHRoZW4gUHJpbnRmLmludmFsaWRfYXJnZiBcIiVmICUlICVmIGluIGZsb2F0MC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIiBhIGIgKCk7XG4gIGxldCBtID0gQ2FtbC5tb2RfZmxvYXQgYSBiIGluXG4gICgqIFByb2R1Y2UgYSBub24tbmVnYXRpdmUgcmVzdWx0IGluIGFuYWxvZ3kgd2l0aCBJbnQuKCAlICkuICopXG4gIGlmIG0gPCAwLiB0aGVuIG0gKy4gYiBlbHNlIG1cbjs7XG5cbigqIFRoZSBiaXRzIG9mIElOUklBJ3MgW1BlcnZhc2l2ZXNdIHRoYXQgd2UganVzdCB3YW50IHRvIGV4cG9zZSBpbiBbRmxvYXRdLiBNb3N0IGFyZVxuICAgYWxyZWFkeSBkZXByZWNhdGVkIGluIFtQZXJ2YXNpdmVzXSwgYW5kIGV2ZW50dWFsbHkgYWxsIG9mIHRoZW0gc2hvdWxkIGJlLiAqKVxuaW5jbHVkZSAoXG4gIENhbWwgOlxuICBzaWdcbiAgICBleHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcblxuICAgIGV4dGVybmFsIGxkZXhwXG4gICAgICA6ICAoZmxvYXRbQHVuYm94ZWRdKVxuICAgICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgICAgLT4gKGZsb2F0W0B1bmJveGVkXSlcbiAgICAgID0gXCJjYW1sX2xkZXhwX2Zsb2F0XCIgXCJjYW1sX2xkZXhwX2Zsb2F0X3VuYm94ZWRcIlxuICAgIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBsb2cxMCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzEwX2Zsb2F0XCIgXCJsb2cxMFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvcHlzaWduIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbiAgICBleHRlcm5hbCBjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NfZmxvYXRcIiBcImNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBhY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc19mbG9hdFwiIFwiYWNvc1wiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG4gICAgZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9oeXBvdF9mbG9hdFwiIFwiY2FtbF9oeXBvdFwiXG4gICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxuICAgIGV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICAgIGV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbiAgICBleHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4gICAgZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuICBlbmQpXG5cbigqIFdlIG5lZWQgdGhpcyBpbmRpcmVjdGlvbiBiZWNhdXNlIHRoZXNlIGFyZSBleHBvc2VkIGFzIFwidmFsXCIgaW5zdGVhZCBvZiBcImV4dGVybmFsXCIgKilcbmxldCBmcmV4cCA9IGZyZXhwXG5sZXQgbGRleHAgPSBsZGV4cFxubGV0IGlzX25hbiB4ID0gKHggOiBmbG9hdCkgPD4geFxuXG4oKiBBbiBvcmRlci1wcmVzZXJ2aW5nIGJpamVjdGlvbiBiZXR3ZWVuIGFsbCBmbG9hdHMgZXhjZXB0IGZvciBOYU5zLCBhbmQgOTkuOTUlIG9mXG4gICBpbnQ2NHMuXG5cbiAgIE5vdGUgd2UgZG9uJ3QgZGlzdGluZ3Vpc2ggMC4gYW5kIC0wLiBhcyBzZXBhcmF0ZSB2YWx1ZXMgaGVyZSwgdGhleSBib3RoIG1hcCB0byAwTCwgd2hpY2hcbiAgIG1hcHMgYmFjayB0byAwLlxuXG4gICBUaGlzIHNob3VsZCB3b3JrIGJvdGggb24gbGl0dGxlLWVuZGlhbiBhbmQgaGlnaC1lbmRpYW4gQ1BVcy4gIFdpa2lwZWRpYSBzYXlzOiBcIm9uXG4gICBtb2Rlcm4gc3RhbmRhcmQgY29tcHV0ZXJzIChpLmUuLCBpbXBsZW1lbnRpbmcgSUVFRSA3NTQpLCBvbmUgbWF5IGluIHByYWN0aWNlIHNhZmVseVxuICAgYXNzdW1lIHRoYXQgdGhlIGVuZGlhbm5lc3MgaXMgdGhlIHNhbWUgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYXMgZm9yIGludGVnZXJzXCJcbiAgIChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0VuZGlhbm5lc3MjRmxvYXRpbmctcG9pbnRfYW5kX2VuZGlhbm5lc3MpLlxuKilcbmxldCB0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB0ID1cbiAgaWYgaXNfbmFuIHRcbiAgdGhlbiBOb25lXG4gIGVsc2UgaWYgdCA9IDAuXG4gIHRoZW4gKCogYWxzbyBpbmNsdWRlcyAtMC4gKilcbiAgICBTb21lIDBMXG4gIGVsc2UgaWYgdCA+IDAuXG4gIHRoZW4gU29tZSAoQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQpXG4gIGVsc2UgU29tZSAoQ2FtbC5JbnQ2NC5uZWcgKENhbWwuSW50NjQuYml0c19vZl9mbG9hdCAoLS50KSkpXG47O1xuXG5sZXQgdG9faW50NjRfcHJlc2VydmVfb3JkZXJfZXhuIHggPSBPcHRpb24udmFsdWVfZXhuICh0b19pbnQ2NF9wcmVzZXJ2ZV9vcmRlciB4KVxuXG5sZXQgb2ZfaW50NjRfcHJlc2VydmVfb3JkZXIgeCA9XG4gIGlmIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgeCAwTFxuICB0aGVuIENhbWwuSW50NjQuZmxvYXRfb2ZfYml0cyB4XG4gIGVsc2Ugfi0uKENhbWwuSW50NjQuZmxvYXRfb2ZfYml0cyAoQ2FtbC5JbnQ2NC5uZWcgeCkpXG47O1xuXG5sZXQgb25lX3VscCBkaXIgdCA9XG4gIG1hdGNoIHRvX2ludDY0X3ByZXNlcnZlX29yZGVyIHQgd2l0aFxuICB8IE5vbmUgLT4gQ2FtbC5uYW5cbiAgfCBTb21lIHggLT5cbiAgICBvZl9pbnQ2NF9wcmVzZXJ2ZV9vcmRlclxuICAgICAgKENhbWwuSW50NjQuYWRkXG4gICAgICAgICB4XG4gICAgICAgICAobWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICB8IGBVcCAtPiAxTFxuICAgICAgICAgIHwgYERvd24gLT4gLTFMKSlcbjs7XG5cbigqIFt1cHBlcl9ib3VuZF9mb3JfaW50XSBhbmQgW2xvd2VyX2JvdW5kX2Zvcl9pbnRdIGFyZSBmb3IgY2FsY3VsYXRpbmcgdGhlIG1heC9taW4gZmxvYXRcbiAgIHRoYXQgZml0cyBpbiBhIGdpdmVuLXNpemUgaW50ZWdlciB3aGVuIHJvdW5kZWQgdG93YXJkcyAwICh1c2luZyBbaW50X29mX2Zsb2F0XSkuXG5cbiAgIG1heF9pbnQvbWluX2ludCBkZXBlbmQgb24gW251bV9iaXRzXSwgZS5nLiArLy0gMl4zMCwgKy8tIDJeNjIgaWYgMzEtYml0LCA2My1iaXRcbiAgIChyZXNwZWN0aXZlbHkpIHdoaWxlIGZsb2F0IGlzIElFRUUgc3RhbmRhcmQgZm9yIGRvdWJsZSAoNTIgc2lnbmlmaWNhbnQgYml0cykuXG5cbiAgIEluIGFsbCBjYXNlcywgd2Ugd2FudCB0byBndWFyYW50ZWUgdGhhdFxuICAgW2xvd2VyX2JvdW5kX2Zvcl9pbnQgPD0geCA8PSB1cHBlcl9ib3VuZF9mb3JfaW50XVxuICAgaWZmIFtpbnRfb2ZfZmxvYXQgeF0gZml0cyBpbiBhbiBpbnQgd2l0aCBbbnVtX2JpdHNdIGJpdHMuXG5cbiAgIFsyICoqIChudW1fYml0cyAtIDEpXSBpcyB0aGUgZmlyc3QgZmxvYXQgZ3JlYXRlciB0aGF0IG1heF9pbnQsIHdlIHVzZSB0aGUgcHJlY2VkaW5nXG4gICBmbG9hdCBhcyB1cHBlciBib3VuZC5cblxuICAgWy0gKDIgKiogKG51bV9iaXRzIC0gMSkpXSBpcyBlcXVhbCB0byBtaW5faW50LlxuICAgRm9yIGxvd2VyIGJvdW5kIHdlIGxvb2sgZm9yIHRoZSBzbWFsbGVzdCBmbG9hdCBbZl0gc2F0aXNmeWluZyBbZiA+IG1pbl9pbnQgLSAxXSBzbyB0aGF0XG4gICBbZl0gcm91bmRzIHRvd2FyZCB6ZXJvIHRvIFttaW5faW50XVxuXG4gICBTbyBpbiBwYXJ0aWN1bGFyIHdlIHdpbGwgaGF2ZTpcbiAgIFtsb3dlcl9ib3VuZF9mb3JfaW50IHggPD0gLSAoMiAqKiAoMS14KSldXG4gICBbdXBwZXJfYm91bmRfZm9yX2ludCB4ICA8ICAgIDIgKiogKDEteCkgXVxuKilcbmxldCB1cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzID1cbiAgbGV0IGV4cCA9IENhbWwuZmxvYXRfb2ZfaW50IChudW1fYml0cyAtIDEpIGluXG4gIG9uZV91bHAgYERvd24gKDIuICoqIGV4cClcbjs7XG5cbmxldCBpc194X21pbnVzX29uZV9leGFjdCB4ID1cbiAgKCogW3ggPSB4IC0uIDEuXSBkb2VzIG5vdCB3b3JrIHdpdGggeDg3IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFja2VuZCAod2hpY2ggaXMgdXNlZFxuICAgICBvbiAzMi1iaXQgb2NhbWwpIGJlY2F1c2Ugb2YgODAtYml0IHJlZ2lzdGVyIHByZWNpc2lvbiBvZiBpbnRlcm1lZGlhdGUgY29tcHV0YXRpb25zLlxuXG4gICAgIEFuIGFsdGVybmF0aXZlIHdheSBvZiBjb21wdXRpbmcgdGhpczogW3ggLS4gb25lX3VscCBgRG93biB4IDw9IDEuXSBpcyBhbHNvIHByb25lIHRvXG4gICAgIHRoZSBzYW1lIHByZWNpc2lvbiBpc3N1ZXM6IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSBbeF0gaXMgNjQtYml0LlxuICAqKVxuICBsZXQgb3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgbm90IChDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgeCA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCAoeCAtLiAxLikpXG47O1xuXG5sZXQgbG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0cyA9XG4gIGxldCBleHAgPSBDYW1sLmZsb2F0X29mX2ludCAobnVtX2JpdHMgLSAxKSBpblxuICBsZXQgbWluX2ludF9hc19mbG9hdCA9IH4tLigyLiAqKiBleHApIGluXG4gIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgaWYgbnVtX2JpdHMgLSAxIDwgNTMgKCogNTMgPSAjYml0cyBpbiB0aGUgZmxvYXQncyBtYW50aXNzYSB3aXRoIHNpZ24gaW5jbHVkZWQgKilcbiAgdGhlbiAoXG4gICAgKCogVGhlIHNtYWxsZXN0IGZsb2F0IHRoYXQgcm91bmRzIHRvd2FyZHMgemVybyB0byBbbWluX2ludF0gaXNcbiAgICAgICBbbWluX2ludCAtIDEgKyBlcHNpbG9uXSAqKVxuICAgIGFzc2VydCAoaXNfeF9taW51c19vbmVfZXhhY3QgbWluX2ludF9hc19mbG9hdCk7XG4gICAgb25lX3VscCBgVXAgKG1pbl9pbnRfYXNfZmxvYXQgLS4gMS4pKVxuICBlbHNlIChcbiAgICAoKiBbbWluX2ludF9hc19mbG9hdF0gaXMgYWxyZWFkeSB0aGUgc21hbGxlc3QgZmxvYXQgW2ZdIHNhdGlzZnlpbmcgW2YgPiBtaW5faW50IC0gMV0uICopXG4gICAgYXNzZXJ0IChub3QgKGlzX3hfbWludXNfb25lX2V4YWN0IG1pbl9pbnRfYXNfZmxvYXQpKTtcbiAgICBtaW5faW50X2FzX2Zsb2F0KVxuOztcblxuKCogRmxvYXQgY2xhbXBpbmcgaXMgc3RydWN0dXJlZCBzbGlnaHRseSBkaWZmZXJlbnRseSB0aGFuIGNsYW1waW5nIGZvciBvdGhlciB0eXBlcywgc29cbiAgIHRoYXQgd2UgZ2V0IHRoZSBiZWhhdmlvciBvZiBbY2xhbXBfdW5jaGVja2VkIG5hbiB+bWluIH5tYXggPSBuYW5dIChmb3IgYW55IFttaW5dIGFuZFxuICAgW21heF0pIGZvciBmcmVlLlxuKilcbmxldCBjbGFtcF91bmNoZWNrZWQgKHQgOiBmbG9hdCkgfm1pbiB+bWF4ID1cbiAgaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIG1heCA8IHQgdGhlbiBtYXggZWxzZSB0XG47O1xuXG5sZXQgYm94ID1cbiAgKCogUHJldmVudCBwb3RlbnRpYWwgY29uc3RhbnQgZm9sZGluZyBvZiBbKy4gMC5dIGluIHRoZSBuZWFyIG9jYW1sb3B0IGZ1dHVyZS4gKilcbiAgbGV0IHggPSBTeXMwLm9wYXF1ZV9pZGVudGl0eSAwLiBpblxuICBmdW4gZiAtPiBmICsuIHhcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nMFxuaW5jbHVkZSBDaGFyMFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9jaGFyIDogdCAtPiB0IC0+IGludClcblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX2NoYXJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2NoYXIgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGNoYXJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfY2hhciA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBjaGFyX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU3RyaW5nLm1ha2UgMSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBtYXRjaCBTdHJpbmcubGVuZ3RoIHMgd2l0aFxuICAgIHwgMSAtPiBzLlswXVxuICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJDaGFyLm9mX3N0cmluZzogJVNcIiBzICgpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkNoYXJcIlxuICBlbmQpXG5cbmxldCBwcCBmbXQgYyA9IENhbWwuRm9ybWF0LmZwcmludGYgZm10IFwiJUNcIiBjXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYWxsID0gQXJyYXkuaW5pdCAyNTYgfmY6dW5zYWZlX29mX2ludCB8PiBBcnJheS50b19saXN0XG5cbmxldCBpc19sb3dlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc191cHBlcmNhc2UgPSBmdW5jdGlvblxuICB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19wcmludCA9IGZ1bmN0aW9uXG4gIHwgJyAnIC4uICd+JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX3doaXRlc3BhY2UgPSBmdW5jdGlvblxuICB8ICdcXHQnIHwgJ1xcbicgfCAnXFwwMTEnICgqIHZlcnRpY2FsIHRhYiAqKSB8ICdcXDAxMicgKCogZm9ybSBmZWVkICopIHwgJ1xccicgfCAnICcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpc19kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2FscGhhID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxuKCogV3JpdGluZyB0aGVzZSBvdXQsIGluc3RlYWQgb2YgY2FsbGluZyBbaXNfYWxwaGFdIGFuZCBbaXNfZGlnaXRdLCByZWR1Y2VzXG4gICBydW50aW1lIGJ5IGFwcHJveC4gMzAlICopXG5sZXQgaXNfYWxwaGFudW0gPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGdldF9kaWdpdF91bnNhZmUgdCA9IHRvX2ludCB0IC0gdG9faW50ICcwJ1xuXG5sZXQgZ2V0X2RpZ2l0X2V4biB0ID1cbiAgaWYgaXNfZGlnaXQgdFxuICB0aGVuIGdldF9kaWdpdF91bnNhZmUgdFxuICBlbHNlIGZhaWx3aXRoZiBcIkNoYXIuZ2V0X2RpZ2l0X2V4biAlQzogbm90IGEgZGlnaXRcIiB0ICgpXG47O1xuXG5sZXQgZ2V0X2RpZ2l0IHQgPSBpZiBpc19kaWdpdCB0IHRoZW4gU29tZSAoZ2V0X2RpZ2l0X3Vuc2FmZSB0KSBlbHNlIE5vbmVcblxubGV0IGlzX2hleF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgfCAnQScgLi4gJ0YnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaXNfaGV4X2RpZ2l0X2xvd2VyID0gZnVuY3Rpb25cbiAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICdmJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IGlzX2hleF9kaWdpdF91cHBlciA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfaGV4X2RpZ2l0X2V4biA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc5JyBhcyB0IC0+IHRvX2ludCB0IC0gdG9faW50ICcwJ1xuICB8ICdhJyAuLiAnZicgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnYScgKyAxMFxuICB8ICdBJyAuLiAnRicgYXMgdCAtPiB0b19pbnQgdCAtIHRvX2ludCAnQScgKyAxMFxuICB8IHQgLT5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIkNoYXIuZ2V0X2hleF9kaWdpdF9leG46IG5vdCBhIGhleGFkZWNpbWFsIGRpZ2l0XCJcbiAgICAgICAgIFsgXCJjaGFyXCIsIHNleHBfb2ZfdCB0IF0pXG47O1xuXG5sZXQgZ2V0X2hleF9kaWdpdCB0ID0gaWYgaXNfaGV4X2RpZ2l0IHQgdGhlbiBTb21lIChnZXRfaGV4X2RpZ2l0X2V4biB0KSBlbHNlIE5vbmVcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgbGV0ICggPj0gKSA9ICggPj0gKVxuICBsZXQgKCA8PSApID0gKCA8PSApXG4gIGxldCAoID0gKSA9ICggPSApXG4gIGxldCAoID4gKSA9ICggPiApXG4gIGxldCAoIDwgKSA9ICggPCApXG4gIGxldCAoIDw+ICkgPSAoIDw+IClcbmVuZFxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGNoYXJfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9jaGFyIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gY2hhcl9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY29tcGFyZSBjMSBjMiA9IGNvbXBhcmUgKGxvd2VyY2FzZSBjMSkgKGxvd2VyY2FzZSBjMilcbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9jaGFyIHN0YXRlIChsb3dlcmNhc2UgdClcbiAgICBsZXQgaGFzaCB0ID0gSGFzaC5ydW4gaGFzaF9mb2xkX3QgdFxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFQpXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIENoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJtb2R1bGUgTGlzdCA9IExpc3RcblxubW9kdWxlIEVudW1lcmFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGFsbCA6IHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2EgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYiBsaXN0IC0+ICgnYSwgJ2IpIHQgbGlzdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gJ2MgbGlzdCAtPiAoJ2EsICdiLCAnYykgdCBsaXN0XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnQwLkludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzMFxubW9kdWxlIFN0cmluZyA9IFN0cmluZzBcblxuKCogQ29uc3RydWN0IGEgYnl0ZSBzdHJpbmcgb2YgbGVuZ3RoIDI1NiwgbWFwcGluZyBldmVyeSBpbnB1dCBjaGFyYWN0ZXIgY29kZSB0b1xuICAgaXRzIGNvcnJlc3BvbmRpbmcgb3V0cHV0IGNoYXJhY3Rlci5cblxuICAgQmVuY2htYXJrcyBpbmRpY2F0ZSB0aGF0IHRoaXMgaXMgZmFzdGVyIHRoYW4gdGhlIGxhbWJkYSAoaW5jbHVkaW5nIGNvc3Qgb2ZcbiAgIHRoaXMgZnVuY3Rpb24pLCBldmVuIGlmIHRhcmdldC9yZXBsYWNlbWVudCBhcmUganVzdCAyIGNoYXJhY3RlcnMgZWFjaC5cblxuICAgUmV0dXJuIE5vbmUgaWYgdGhlIHRyYW5zbGF0aW9uIG1hcCBpcyBlcXVpdmFsZW50IHRvIGp1c3QgdGhlIGlkZW50aXR5LiAqKVxubGV0IHRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBsZXQgdHJfbWFwID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaSAoQ2hhci5vZl9pbnRfZXhuIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMCB0byBtaW4gKFN0cmluZy5sZW5ndGggdGFyZ2V0KSAoU3RyaW5nLmxlbmd0aCByZXBsYWNlbWVudCkgLSAxIGRvXG4gICAgbGV0IGluZGV4ID0gQ2hhci50b19pbnQgKFN0cmluZy51bnNhZmVfZ2V0IHRhcmdldCBpKSBpblxuICAgIEJ5dGVzLnVuc2FmZV9zZXQgdHJfbWFwIGluZGV4IChTdHJpbmcudW5zYWZlX2dldCByZXBsYWNlbWVudCBpKVxuICBkb25lO1xuICBsZXQgbGFzdF9yZXBsYWNlbWVudCA9IFN0cmluZy51bnNhZmVfZ2V0IHJlcGxhY2VtZW50IChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50IC0gMSkgaW5cbiAgZm9yXG4gICAgaSA9IG1pbiAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSB0byBTdHJpbmcubGVuZ3RoIHRhcmdldCAtIDFcbiAgZG9cbiAgICBsZXQgaW5kZXggPSBDaGFyLnRvX2ludCAoU3RyaW5nLnVuc2FmZV9nZXQgdGFyZ2V0IGkpIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0cl9tYXAgaW5kZXggbGFzdF9yZXBsYWNlbWVudFxuICBkb25lO1xuICBsZXQgcmVjIGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgaSA9XG4gICAgaWYgaSA9IDI1NlxuICAgIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIENoYXIuKCA8PiApIChCeXRlczAudW5zYWZlX2dldCB0cl9tYXAgaSkgKENoYXIub2ZfaW50X2V4biBpKVxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaGF2ZV9hbnlfZGlmZmVyZW50IHRyX21hcCAoaSArIDEpXG4gIGluXG4gICgqIHF1aWNrIGNoZWNrIG9uIHRoZSBmaXJzdCB0YXJnZXQgY2hhcmFjdGVyIHdoaWNoIHdpbGwgOTklIGJlIHRydWUgKilcbiAgbGV0IGZpcnN0X3RhcmdldCA9IHRhcmdldC5bMF0gaW5cbiAgaWYgQ2hhci4oIDw+ICkgKEJ5dGVzMC51bnNhZmVfZ2V0IHRyX21hcCAoQ2hhci50b19pbnQgZmlyc3RfdGFyZ2V0KSkgZmlyc3RfdGFyZ2V0XG4gIHx8IGhhdmVfYW55X2RpZmZlcmVudCB0cl9tYXAgMFxuICB0aGVuIFNvbWUgKEJ5dGVzMC51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnRyX21hcClcbiAgZWxzZSBOb25lXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhXG5cbmxldCBzdGFnZSA9IEZuLmlkXG5sZXQgdW5zdGFnZSA9IEZuLmlkXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuaW5jbHVkZSBTdHJpbmcwXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbigqIFRoaXMgYWxpYXMgaXMgbmVjZXNzYXJ5IGRlc3BpdGUgW1N0cmluZzBdIGRlZmluaW5nIFtCeXRlcyA9IEJ5dGVzMF0sIGluIG9yZGVyIHRvXG4gICBjb252aW5jZSBvY2FtbGRlcCB0aGF0IHRoaXMgZmlsZSBkb2Vzbid0IGRlcGVuZCBvbiBieXRlcy5tbC4gKilcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xubGV0IHN0YWdlID0gU3RhZ2VkLnN0YWdlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfc3RyaW5nXG5cbiAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gaGFzaF9zdHJpbmcgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9zdHJpbmcgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0ICh0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gc3RyaW5nX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG50eXBlIGVsdCA9IGNoYXJcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxuKCogVGhpcyBpcyBjb3BpZWQvYWRhcHRlZCBmcm9tICdibGl0Lm1sJy5cbiAgIFtzdWJdLCBbc3Vib10gY291bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgW0JsaXQuTWFrZShCeXRlcyldIHBsdXMgdW5zYWZlIGNhc3RzIHRvL2Zyb21cbiAgIHN0cmluZyBidXQgd2VyZSBpbmxpbmVkIGhlcmUgdG8gYXZvaWQgdXNpbmcgW0J5dGVzLnVuc2FmZV9vZl9zdHJpbmddIGFzIG11Y2ggYXMgcG9zc2libGUuXG4qKVxubGV0IHN1YiBzcmMgfnBvcyB+bGVuID1cbiAgaWYgcG9zID0gMCAmJiBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyY1xuICB0aGVuIHNyY1xuICBlbHNlIChcbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggc3JjKTtcbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBcIlwiXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgQnl0ZXMudW5zYWZlX2JsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6cG9zIH5kc3QgfmRzdF9wb3M6MCB+bGVuO1xuICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpkc3QpKVxuOztcblxubGV0IHN1Ym8gPyhwb3MgPSAwKSA/bGVuIHNyYyA9XG4gIHN1YlxuICAgIHNyY1xuICAgIH5wb3NcbiAgICB+bGVuOlxuICAgICAgKG1hdGNoIGxlbiB3aXRoXG4gICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgIHwgTm9uZSAtPiBsZW5ndGggc3JjIC0gcG9zKVxuOztcblxubGV0IHJlYyBjb250YWluc191bnNhZmUgdCB+cG9zIH5lbmRfIGNoYXIgPVxuICBwb3MgPCBlbmRfXG4gICYmIChDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHQgcG9zKSBjaGFyIHx8IGNvbnRhaW5zX3Vuc2FmZSB0IH5wb3M6KHBvcyArIDEpIH5lbmRfIGNoYXIpXG47O1xuXG5sZXQgY29udGFpbnMgPyhwb3MgPSAwKSA/bGVuIHQgY2hhciA9XG4gIGxldCB0b3RhbF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgbGV0IGxlbiA9IE9wdGlvbi52YWx1ZSBsZW4gfmRlZmF1bHQ6KHRvdGFsX2xlbmd0aCAtIHBvcykgaW5cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zIH5sZW4gfnRvdGFsX2xlbmd0aDtcbiAgY29udGFpbnNfdW5zYWZlIHQgfnBvcyB+ZW5kXzoocG9zICsgbGVuKSBjaGFyXG47O1xuXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgcmVjIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zID49IGxlblxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zOihwb3MgKyAxKSB+bGVuIH5ub3RfZm91bmQgY2hhclxuOztcblxubGV0IGluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciA9XG4gIGluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvczowIH5sZW46KGxlbmd0aCB0KSB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCBpbmRleF9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcuaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IGluZGV4X2V4biB0IGNoYXIgPSBpbmRleF9leG5faW50ZXJuYWwgdCB+bm90X2ZvdW5kIGNoYXIgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBpbmRleF9leG5cbjs7XG5cbmxldCBpbmRleF9mcm9tX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5pbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCBpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAwIHx8IHBvcyA+IGxlblxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgaW5kZXhfZnJvbV9leG5faW50ZXJuYWwgdCB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgaW5kZXhfZnJvbV9leG5cbjs7XG5cbmxldCByZWMgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHN0cmluZyB+cG9zIH5sZW4gfm5vdF9mb3VuZCBjaGFyID1cbiAgaWYgcG9zIDwgMFxuICB0aGVuIHJhaXNlIG5vdF9mb3VuZFxuICBlbHNlIGlmIENoYXIuZXF1YWwgKHVuc2FmZV9nZXQgc3RyaW5nIHBvcykgY2hhclxuICB0aGVuIHBvc1xuICBlbHNlIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCBzdHJpbmcgfnBvczoocG9zIC0gMSkgfmxlbiB+bm90X2ZvdW5kIGNoYXJcbjs7XG5cbmxldCByaW5kZXhfZXhuX2ludGVybmFsIHQgfm5vdF9mb3VuZCBjaGFyID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIHJpbmRleF9mcm9tX2V4bl9pbnRlcm5hbCB0IH5wb3M6KGxlbiAtIDEpIH5sZW4gfm5vdF9mb3VuZCBjaGFyXG47O1xuXG5sZXQgcmluZGV4X2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yaW5kZXhfZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9leG4gdCBjaGFyID0gcmluZGV4X2V4bl9pbnRlcm5hbCB0IH5ub3RfZm91bmQgY2hhciBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9leG5cbjs7XG5cbmxldCByaW5kZXhfZnJvbV9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcucmluZGV4X2Zyb21fZXhuOiBub3QgZm91bmRcIikgaW5cbiAgbGV0IHJpbmRleF9mcm9tX2V4biB0IHBvcyBjaGFyID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiBwb3MgPCAtMSB8fCBwb3MgPj0gbGVuXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5yaW5kZXhfZnJvbV9leG5cIlxuICAgIGVsc2UgcmluZGV4X2Zyb21fZXhuX2ludGVybmFsIHQgfnBvcyB+bGVuIH5ub3RfZm91bmQgY2hhclxuICBpblxuICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gIHJpbmRleF9mcm9tX2V4blxuOztcblxubGV0IGluZGV4IHQgY2hhciA9XG4gIHRyeSBTb21lIChpbmRleF9leG4gdCBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByaW5kZXggdCBjaGFyID1cbiAgdHJ5IFNvbWUgKHJpbmRleF9leG4gdCBjaGFyKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCBpbmRleF9mcm9tIHQgcG9zIGNoYXIgPVxuICB0cnkgU29tZSAoaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5sZXQgcmluZGV4X2Zyb20gdCBwb3MgY2hhciA9XG4gIHRyeSBTb21lIChyaW5kZXhfZnJvbV9leG4gdCBwb3MgY2hhcikgd2l0aFxuICB8IE5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lXG47O1xuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm4wID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBwYXR0ZXJuIDogc3RyaW5nXG4gICAgOyBjYXNlX3NlbnNpdGl2ZSA6IGJvb2xcbiAgICA7IGttcF9hcnJheSA6IGludCBhcnJheVxuICAgIH1cblxuICBsZXQgc2V4cF9vZl90IHsgcGF0dGVybjsgY2FzZV9zZW5zaXRpdmU7IGttcF9hcnJheSA9IF8gfSA6IFNleHAudCA9XG4gICAgTGlzdFxuICAgICAgWyBMaXN0IFsgQXRvbSBcInBhdHRlcm5cIjsgc2V4cF9vZl9zdHJpbmcgcGF0dGVybiBdXG4gICAgICA7IExpc3QgWyBBdG9tIFwiY2FzZV9zZW5zaXRpdmVcIjsgc2V4cF9vZl9ib29sIGNhc2Vfc2Vuc2l0aXZlIF1cbiAgICAgIF1cbiAgOztcblxuICBsZXQgcGF0dGVybiB0ID0gdC5wYXR0ZXJuXG4gIGxldCBjYXNlX3NlbnNpdGl2ZSB0ID0gdC5jYXNlX3NlbnNpdGl2ZVxuXG4gICgqIEZpbmQgbWF4IG51bWJlciBvZiBtYXRjaGVkIGNoYXJhY3RlcnMgYXQgW25leHRfdGV4dF9jaGFyXSwgZ2l2ZW4gdGhlIGN1cnJlbnRcbiAgICAgW21hdGNoZWRfY2hhcnNdLiBUcnkgdG8gZXh0ZW5kIHRoZSBjdXJyZW50IG1hdGNoLCBpZiBjaGFycyBkb24ndCBtYXRjaCwgdHJ5IHRvIG1hdGNoXG4gICAgIGZld2VyIGNoYXJzLiBJZiBjaGFycyBtYXRjaCB0aGVuIGV4dGVuZCB0aGUgbWF0Y2guICopXG4gIGxldCBrbXBfaW50ZXJuYWxfbG9vcCB+bWF0Y2hlZF9jaGFycyB+bmV4dF90ZXh0X2NoYXIgfnBhdHRlcm4gfmttcF9hcnJheSB+Y2hhcl9lcXVhbCA9XG4gICAgbGV0IG1hdGNoZWRfY2hhcnMgPSByZWYgbWF0Y2hlZF9jaGFycyBpblxuICAgIHdoaWxlXG4gICAgICAhbWF0Y2hlZF9jaGFycyA+IDBcbiAgICAgICYmIG5vdCAoY2hhcl9lcXVhbCBuZXh0X3RleHRfY2hhciAodW5zYWZlX2dldCBwYXR0ZXJuICFtYXRjaGVkX2NoYXJzKSlcbiAgICBkb1xuICAgICAgbWF0Y2hlZF9jaGFycyA6PSBBcnJheS51bnNhZmVfZ2V0IGttcF9hcnJheSAoIW1hdGNoZWRfY2hhcnMgLSAxKVxuICAgIGRvbmU7XG4gICAgaWYgY2hhcl9lcXVhbCBuZXh0X3RleHRfY2hhciAodW5zYWZlX2dldCBwYXR0ZXJuICFtYXRjaGVkX2NoYXJzKVxuICAgIHRoZW4gbWF0Y2hlZF9jaGFycyA6PSAhbWF0Y2hlZF9jaGFycyArIDE7XG4gICAgIW1hdGNoZWRfY2hhcnNcbiAgOztcblxuICBsZXQgZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlID1cbiAgICBtYXRjaCBjYXNlX3NlbnNpdGl2ZSB3aXRoXG4gICAgfCB0cnVlIC0+IENoYXIuZXF1YWxcbiAgICB8IGZhbHNlIC0+IENoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgOztcblxuICAoKiBDbGFzc2ljIEtNUCBwcmUtcHJvY2Vzc2luZyBvZiB0aGUgcGF0dGVybjogYnVpbGQgdGhlIGludCBhcnJheSwgd2hpY2gsIGZvciBlYWNoIGksXG4gICAgIGNvbnRhaW5zIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qgbm9uLXRyaXZpYWwgcHJlZml4IG9mIHMgd2hpY2ggaXMgZXF1YWwgdG8gYSBzdWZmaXhcbiAgICAgZW5kaW5nIGF0IHMuW2ldICopXG4gIGxldCBjcmVhdGUgcGF0dGVybiB+Y2FzZV9zZW5zaXRpdmUgPVxuICAgIGxldCBuID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICBsZXQga21wX2FycmF5ID0gQXJyYXkuY3JlYXRlIH5sZW46biAoLTEpIGluXG4gICAgaWYgbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGttcF9hcnJheSAwIDA7XG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2hlZF9jaGFyc1xuICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgIH5tYXRjaGVkX2NoYXJzOiFtYXRjaGVkX2NoYXJzXG4gICAgICAgICAgICAgfm5leHRfdGV4dF9jaGFyOih1bnNhZmVfZ2V0IHBhdHRlcm4gaSlcbiAgICAgICAgICAgICB+cGF0dGVyblxuICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICB+Y2hhcl9lcXVhbDtcbiAgICAgICAgQXJyYXkudW5zYWZlX3NldCBrbXBfYXJyYXkgaSAhbWF0Y2hlZF9jaGFyc1xuICAgICAgZG9uZSk7XG4gICAgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH1cbiAgOztcblxuICAoKiBDbGFzc2ljIEtNUDogdXNlIHRoZSBwcmUtcHJvY2Vzc2VkIHBhdHRlcm4gdG8gb3B0aW1pemUgbG9vay1iZWhpbmRzIG9uIG5vbi1tYXRjaGVzLlxuICAgICBXZSByZXR1cm4gaW50IHRvIGF2b2lkIGFsbG9jYXRpb24gaW4gW2luZGV4X2V4bl0uIC0xIG1lYW5zIG5vIG1hdGNoLiAqKVxuICBsZXQgaW5kZXhfaW50ZXJuYWwgPyhwb3MgPSAwKSB7IHBhdHRlcm47IGNhc2Vfc2Vuc2l0aXZlOyBrbXBfYXJyYXkgfSB+aW5fOnRleHQgPVxuICAgIGlmIHBvcyA8IDAgfHwgcG9zID4gbGVuZ3RoIHRleHQgLSBsZW5ndGggcGF0dGVyblxuICAgIHRoZW4gLTFcbiAgICBlbHNlIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBsZXQgaiA9IHJlZiBwb3MgaW5cbiAgICAgIGxldCBtYXRjaGVkX2NoYXJzID0gcmVmIDAgaW5cbiAgICAgIGxldCBrID0gbGVuZ3RoIHBhdHRlcm4gaW5cbiAgICAgIGxldCBuID0gbGVuZ3RoIHRleHQgaW5cbiAgICAgIHdoaWxlICFqIDwgbiAmJiAhbWF0Y2hlZF9jaGFycyA8IGsgZG9cbiAgICAgICAgbGV0IG5leHRfdGV4dF9jaGFyID0gdW5zYWZlX2dldCB0ZXh0ICFqIGluXG4gICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgOj0ga21wX2ludGVybmFsX2xvb3BcbiAgICAgICAgICAgICB+bWF0Y2hlZF9jaGFyczohbWF0Y2hlZF9jaGFyc1xuICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhclxuICAgICAgICAgICAgIH5wYXR0ZXJuXG4gICAgICAgICAgICAgfmttcF9hcnJheVxuICAgICAgICAgICAgIH5jaGFyX2VxdWFsO1xuICAgICAgICBqIDo9ICFqICsgMVxuICAgICAgZG9uZTtcbiAgICAgIGlmICFtYXRjaGVkX2NoYXJzID0gayB0aGVuICFqIC0gayBlbHNlIC0xKVxuICA7O1xuXG4gIGxldCBtYXRjaGVzIHQgc3RyID0gaW5kZXhfaW50ZXJuYWwgdCB+aW5fOnN0ciA+PSAwXG5cbiAgbGV0IGluZGV4ID9wb3MgdCB+aW5fID1cbiAgICBsZXQgcCA9IGluZGV4X2ludGVybmFsID9wb3MgdCB+aW5fIGluXG4gICAgaWYgcCA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSBwXG4gIDs7XG5cbiAgbGV0IGluZGV4X2V4biA/cG9zIHQgfmluXyA9XG4gICAgbGV0IHAgPSBpbmRleF9pbnRlcm5hbCA/cG9zIHQgfmluXyBpblxuICAgIGlmIHAgPj0gMFxuICAgIHRoZW4gcFxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIlN1YnN0cmluZyBub3QgZm91bmRcIiBbIFwic3Vic3RyaW5nXCIsIHNleHBfb2Zfc3RyaW5nIHQucGF0dGVybiBdKVxuICA7O1xuXG4gIGxldCBpbmRleF9hbGwgeyBwYXR0ZXJuOyBjYXNlX3NlbnNpdGl2ZTsga21wX2FycmF5IH0gfm1heV9vdmVybGFwIH5pbl86dGV4dCA9XG4gICAgaWYgbGVuZ3RoIHBhdHRlcm4gPSAwXG4gICAgdGhlbiBMaXN0LmluaXQgKDEgKyBsZW5ndGggdGV4dCkgfmY6Rm4uaWRcbiAgICBlbHNlIChcbiAgICAgIGxldCBjaGFyX2VxdWFsID0gZ2V0X2NoYXJfZXF1YWwgfmNhc2Vfc2Vuc2l0aXZlIGluXG4gICAgICBsZXQgbWF0Y2hlZF9jaGFycyA9IHJlZiAwIGluXG4gICAgICBsZXQgayA9IGxlbmd0aCBwYXR0ZXJuIGluXG4gICAgICBsZXQgbiA9IGxlbmd0aCB0ZXh0IGluXG4gICAgICBsZXQgZm91bmQgPSByZWYgW10gaW5cbiAgICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAgIGlmICFtYXRjaGVkX2NoYXJzID0ga1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBmb3VuZCA6PSAoaiAtIGspIDo6ICFmb3VuZDtcbiAgICAgICAgICAoKiB3ZSBqdXN0IGZvdW5kIGEgbWF0Y2ggaW4gdGhlIHByZXZpb3VzIGl0ZXJhdGlvbiAqKVxuICAgICAgICAgIG1hdGNoIG1heV9vdmVybGFwIHdpdGhcbiAgICAgICAgICB8IHRydWUgLT4gbWF0Y2hlZF9jaGFycyA6PSBBcnJheS51bnNhZmVfZ2V0IGttcF9hcnJheSAoayAtIDEpXG4gICAgICAgICAgfCBmYWxzZSAtPiBtYXRjaGVkX2NoYXJzIDo9IDApO1xuICAgICAgICBpZiBqIDwgblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV4dF90ZXh0X2NoYXIgPSB1bnNhZmVfZ2V0IHRleHQgaiBpblxuICAgICAgICAgIG1hdGNoZWRfY2hhcnNcbiAgICAgICAgICA6PSBrbXBfaW50ZXJuYWxfbG9vcFxuICAgICAgICAgICAgICAgfm1hdGNoZWRfY2hhcnM6IW1hdGNoZWRfY2hhcnNcbiAgICAgICAgICAgICAgIH5uZXh0X3RleHRfY2hhclxuICAgICAgICAgICAgICAgfnBhdHRlcm5cbiAgICAgICAgICAgICAgIH5rbXBfYXJyYXlcbiAgICAgICAgICAgICAgIH5jaGFyX2VxdWFsKVxuICAgICAgZG9uZTtcbiAgICAgIExpc3QucmV2ICFmb3VuZClcbiAgOztcblxuICBsZXQgcmVwbGFjZV9maXJzdCA/cG9zIHQgfmluXzpzIH53aXRoXyA9XG4gICAgbWF0Y2ggaW5kZXggP3BvcyB0IH5pbl86cyB3aXRoXG4gICAgfCBOb25lIC0+IHNcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgbGV0IGxlbl9zID0gbGVuZ3RoIHMgaW5cbiAgICAgIGxldCBsZW5fdCA9IGxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICAgIGxldCBsZW5fd2l0aCA9IGxlbmd0aCB3aXRoXyBpblxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuX3MgKyBsZW5fd2l0aCAtIGxlbl90KSBpblxuICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5zcmNfcG9zOjAgfmRzdCB+ZHN0X3BvczowIH5sZW46aTtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6d2l0aF8gfnNyY19wb3M6MCB+ZHN0IH5kc3RfcG9zOmkgfmxlbjpsZW5fd2l0aDtcbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgIH5zcmM6c1xuICAgICAgICB+c3JjX3BvczooaSArIGxlbl90KVxuICAgICAgICB+ZHN0XG4gICAgICAgIH5kc3RfcG9zOihpICsgbGVuX3dpdGgpXG4gICAgICAgIH5sZW46KGxlbl9zIC0gaSAtIGxlbl90KTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0XG4gIDs7XG5cblxuICBsZXQgcmVwbGFjZV9hbGwgdCB+aW5fOnMgfndpdGhfID1cbiAgICBsZXQgbWF0Y2hlcyA9IGluZGV4X2FsbCB0IH5tYXlfb3ZlcmxhcDpmYWxzZSB+aW5fOnMgaW5cbiAgICBtYXRjaCBtYXRjaGVzIHdpdGhcbiAgICB8IFtdIC0+IHNcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0IGxlbl9zID0gbGVuZ3RoIHMgaW5cbiAgICAgIGxldCBsZW5fdCA9IGxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICAgIGxldCBsZW5fd2l0aCA9IGxlbmd0aCB3aXRoXyBpblxuICAgICAgbGV0IG51bV9tYXRjaGVzID0gTGlzdC5sZW5ndGggbWF0Y2hlcyBpblxuICAgICAgbGV0IGRzdCA9IEJ5dGVzLmNyZWF0ZSAobGVuX3MgKyAoKGxlbl93aXRoIC0gbGVuX3QpICogbnVtX21hdGNoZXMpKSBpblxuICAgICAgbGV0IG5leHRfZHN0X3BvcyA9IHJlZiAwIGluXG4gICAgICBsZXQgbmV4dF9zcmNfcG9zID0gcmVmIDAgaW5cbiAgICAgIExpc3QuaXRlciBtYXRjaGVzIH5mOihmdW4gaSAtPlxuICAgICAgICBsZXQgbGVuID0gaSAtICFuZXh0X3NyY19wb3MgaW5cbiAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYzpzIH5zcmNfcG9zOiFuZXh0X3NyY19wb3MgfmRzdCB+ZHN0X3BvczohbmV4dF9kc3RfcG9zIH5sZW47XG4gICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nXG4gICAgICAgICAgfnNyYzp3aXRoX1xuICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICB+ZHN0XG4gICAgICAgICAgfmRzdF9wb3M6KCFuZXh0X2RzdF9wb3MgKyBsZW4pXG4gICAgICAgICAgfmxlbjpsZW5fd2l0aDtcbiAgICAgICAgbmV4dF9kc3RfcG9zIDo9ICFuZXh0X2RzdF9wb3MgKyBsZW4gKyBsZW5fd2l0aDtcbiAgICAgICAgbmV4dF9zcmNfcG9zIDo9ICFuZXh0X3NyY19wb3MgKyBsZW4gKyBsZW5fdCk7XG4gICAgICBCeXRlcy5ibGl0X3N0cmluZ1xuICAgICAgICB+c3JjOnNcbiAgICAgICAgfnNyY19wb3M6IW5leHRfc3JjX3Bvc1xuICAgICAgICB+ZHN0XG4gICAgICAgIH5kc3RfcG9zOiFuZXh0X2RzdF9wb3NcbiAgICAgICAgfmxlbjoobGVuX3MgLSAhbmV4dF9zcmNfcG9zKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0XG4gIDs7XG5cbiAgbGV0IHNwbGl0X29uIHQgcyA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCB0LnBhdHRlcm4gaW5cbiAgICBsZXQgbWF0Y2hlcyA9IGluZGV4X2FsbCB0IH5tYXlfb3ZlcmxhcDpmYWxzZSB+aW5fOnMgaW5cbiAgICBMaXN0Lm1hcDJfZXhuXG4gICAgICAoLXBhdHRlcm5fbGVuIDo6IG1hdGNoZXMpXG4gICAgICAobWF0Y2hlcyBAIFsgU3RyaW5nLmxlbmd0aCBzIF0pXG4gICAgICB+ZjooZnVuIGkgaiAtPiBzdWIgcyB+cG9zOihpICsgcGF0dGVybl9sZW4pIH5sZW46KGogLSBpIC0gcGF0dGVybl9sZW4pKVxuICA7O1xuXG4gIG1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gICAgdHlwZSBwdWJsaWMgPSB0XG5cbiAgICB0eXBlIG5vbnJlYyB0ID0gdCA9XG4gICAgICB7IHBhdHRlcm4gOiBzdHJpbmdcbiAgICAgIDsgY2FzZV9zZW5zaXRpdmUgOiBib29sXG4gICAgICA7IGttcF9hcnJheSA6IGludCBhcnJheVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBlcXVhbCwgc2V4cF9vZl1cblxuICAgIGxldCBlcXVhbCA9XG4gICAgICAoZnVuIGFfXzAwMl8gYl9fMDAzXyAtPlxuICAgICAgICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDAyXyBiX18wMDNfXG4gICAgICAgICB0aGVuIHRydWVcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAgICAgIChlcXVhbF9zdHJpbmcgYV9fMDAyXy5wYXR0ZXJuIGJfXzAwM18ucGF0dGVybilcbiAgICAgICAgICAgICAoUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAgICAgICAgIChlcXVhbF9ib29sIGFfXzAwMl8uY2FzZV9zZW5zaXRpdmUgYl9fMDAzXy5jYXNlX3NlbnNpdGl2ZSlcbiAgICAgICAgICAgICAgICAoZXF1YWxfYXJyYXkgZXF1YWxfaW50IGFfXzAwMl8ua21wX2FycmF5IGJfXzAwM18ua21wX2FycmF5KSlcbiAgICAgICAgICAgOiB0IC0+IHQgLT4gYm9vbClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgcGF0dGVybiA9IHBhdHRlcm5fXzAwN19cbiAgICAgICAgICAgOyBjYXNlX3NlbnNpdGl2ZSA9IGNhc2Vfc2Vuc2l0aXZlX18wMDlfXG4gICAgICAgICAgIDsga21wX2FycmF5ID0ga21wX2FycmF5X18wMTFfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPSBbXSBpblxuICAgICAgICBsZXQgYm5kc19fMDA2XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDEyXyA9IHNleHBfb2ZfYXJyYXkgc2V4cF9vZl9pbnQga21wX2FycmF5X18wMTFfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwia21wX2FycmF5XCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2Jvb2wgY2FzZV9zZW5zaXRpdmVfXzAwOV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjYXNlX3NlbnNpdGl2ZVwiOyBhcmdfXzAxMF8gXVxuICAgICAgICAgIDo6IGJuZHNfXzAwNl9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAwNl8gPVxuICAgICAgICAgIGxldCBhcmdfXzAwOF8gPSBzZXhwX29mX3N0cmluZyBwYXR0ZXJuX18wMDdfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicGF0dGVyblwiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDZfXG4gICAgICAgIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDZfXG4gICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBGbi5pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU2VhcmNoX3BhdHRlcm5faGVscGVyID0gc3RydWN0XG4gIG1vZHVsZSBTZWFyY2hfcGF0dGVybiA9IFNlYXJjaF9wYXR0ZXJuMFxuZW5kXG5cbm9wZW4gU2VhcmNoX3BhdHRlcm5faGVscGVyXG5cbmxldCBzdWJzdHJfaW5kZXhfZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZSA/cG9zIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9leG4gP3BvcyAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmUgdCB+bWF5X292ZXJsYXAgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5pbmRleF9hbGxcbiAgICAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKVxuICAgIH5tYXlfb3ZlcmxhcFxuICAgIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0X2dlbiB+Y2FzZV9zZW5zaXRpdmUgP3BvcyB0IH5wYXR0ZXJuID1cbiAgU2VhcmNoX3BhdHRlcm4ucmVwbGFjZV9maXJzdCA/cG9zIChTZWFyY2hfcGF0dGVybi5jcmVhdGUgfmNhc2Vfc2Vuc2l0aXZlIHBhdHRlcm4pIH5pbl86dFxuOztcblxubGV0IHN1YnN0cl9yZXBsYWNlX2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlIHQgfnBhdHRlcm4gPVxuICBTZWFyY2hfcGF0dGVybi5yZXBsYWNlX2FsbCAoU2VhcmNoX3BhdHRlcm4uY3JlYXRlIH5jYXNlX3NlbnNpdGl2ZSBwYXR0ZXJuKSB+aW5fOnRcbjs7XG5cbmxldCBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZSB0IH5zdWJzdHJpbmcgPVxuICBPcHRpb24uaXNfc29tZSAoc3Vic3RyX2luZGV4X2dlbiB0IH5wYXR0ZXJuOnN1YnN0cmluZyB+Y2FzZV9zZW5zaXRpdmUpXG47O1xuXG5sZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9leG4gPSBzdWJzdHJfaW5kZXhfZXhuX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9pbmRleF9hbGwgPSBzdWJzdHJfaW5kZXhfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTp0cnVlXG5sZXQgc3Vic3RyX3JlcGxhY2VfYWxsID0gc3Vic3RyX3JlcGxhY2VfYWxsX2dlbiB+Y2FzZV9zZW5zaXRpdmU6dHJ1ZVxubGV0IGlzX3N1YnN0cmluZyA9IGlzX3N1YnN0cmluZ19nZW4gfmNhc2Vfc2Vuc2l0aXZlOnRydWVcblxubGV0IGlzX3N1YnN0cmluZ19hdF9nZW4gPVxuICBsZXQgcmVjIGxvb3AgfnN0ciB+c3RyX3BvcyB+c3ViIH5zdWJfcG9zIH5zdWJfbGVuIH5jaGFyX2VxdWFsID1cbiAgICBpZiBzdWJfcG9zID0gc3ViX2xlblxuICAgIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgY2hhcl9lcXVhbCAodW5zYWZlX2dldCBzdHIgc3RyX3BvcykgKHVuc2FmZV9nZXQgc3ViIHN1Yl9wb3MpXG4gICAgdGhlbiBsb29wIH5zdHIgfnN0cl9wb3M6KHN0cl9wb3MgKyAxKSB+c3ViIH5zdWJfcG9zOihzdWJfcG9zICsgMSkgfnN1Yl9sZW4gfmNoYXJfZXF1YWxcbiAgICBlbHNlIGZhbHNlXG4gIGluXG4gIGZ1biBzdHIgfnBvczpzdHJfcG9zIH5zdWJzdHJpbmc6c3ViIH5jaGFyX2VxdWFsIC0+XG4gICAgbGV0IHN0cl9sZW4gPSBsZW5ndGggc3RyIGluXG4gICAgbGV0IHN1Yl9sZW4gPSBsZW5ndGggc3ViIGluXG4gICAgaWYgc3RyX3BvcyA8IDAgfHwgc3RyX3BvcyA+IHN0cl9sZW5cbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJTdHJpbmcuaXNfc3Vic3RyaW5nX2F0OiBpbnZhbGlkIGluZGV4ICVkIGZvciBzdHJpbmcgb2YgbGVuZ3RoICVkXCJcbiAgICAgICAgc3RyX3Bvc1xuICAgICAgICBzdHJfbGVuXG4gICAgICAgICgpO1xuICAgIHN0cl9wb3MgKyBzdWJfbGVuIDw9IHN0cl9sZW5cbiAgICAmJiBsb29wIH5zdHIgfnN0cl9wb3MgfnN1YiB+c3ViX3BvczowIH5zdWJfbGVuIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfc3VmZml4X2dlbiBzdHJpbmcgfnN1ZmZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgc3VmZml4X2xlbiA9IGxlbmd0aCBzdWZmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBzdWZmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW5cbiAgICAgICBzdHJpbmdcbiAgICAgICB+cG9zOihzdHJpbmdfbGVuIC0gc3VmZml4X2xlbilcbiAgICAgICB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgIH5jaGFyX2VxdWFsXG47O1xuXG5sZXQgaXNfcHJlZml4X2dlbiBzdHJpbmcgfnByZWZpeCB+Y2hhcl9lcXVhbCA9XG4gIGxldCBzdHJpbmdfbGVuID0gbGVuZ3RoIHN0cmluZyBpblxuICBsZXQgcHJlZml4X2xlbiA9IGxlbmd0aCBwcmVmaXggaW5cbiAgc3RyaW5nX2xlbiA+PSBwcmVmaXhfbGVuXG4gICYmIGlzX3N1YnN0cmluZ19hdF9nZW4gc3RyaW5nIH5wb3M6MCB+c3Vic3RyaW5nOnByZWZpeCB+Y2hhcl9lcXVhbFxuOztcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKHN0cmluZ19vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gICAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3N0cmluZyA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IHN0cmluZ19zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgY2hhcl9jb21wYXJlX2Nhc2VsZXNzIGMxIGMyID0gQ2hhci5jb21wYXJlIChDaGFyLmxvd2VyY2FzZSBjMSkgKENoYXIubG93ZXJjYXNlIGMyKVxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2xvb3AgfnBvcyB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMiA9XG4gICAgICBpZiBwb3MgPSBsZW4xXG4gICAgICB0aGVuIGlmIHBvcyA9IGxlbjIgdGhlbiAwIGVsc2UgLTFcbiAgICAgIGVsc2UgaWYgcG9zID0gbGVuMlxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGMgPSBjaGFyX2NvbXBhcmVfY2FzZWxlc3MgKHVuc2FmZV9nZXQgc3RyaW5nMSBwb3MpICh1bnNhZmVfZ2V0IHN0cmluZzIgcG9zKSBpblxuICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgfCAwIC0+IGNvbXBhcmVfbG9vcCB+cG9zOihwb3MgKyAxKSB+c3RyaW5nMSB+bGVuMSB+c3RyaW5nMiB+bGVuMlxuICAgICAgICB8IF8gLT4gYylcbiAgICA7O1xuXG4gICAgbGV0IGNvbXBhcmUgc3RyaW5nMSBzdHJpbmcyID1cbiAgICAgIGlmIHBoeXNfZXF1YWwgc3RyaW5nMSBzdHJpbmcyXG4gICAgICB0aGVuIDBcbiAgICAgIGVsc2VcbiAgICAgICAgY29tcGFyZV9sb29wXG4gICAgICAgICAgfnBvczowXG4gICAgICAgICAgfnN0cmluZzFcbiAgICAgICAgICB+bGVuMTooU3RyaW5nLmxlbmd0aCBzdHJpbmcxKVxuICAgICAgICAgIH5zdHJpbmcyXG4gICAgICAgICAgfmxlbjI6KFN0cmluZy5sZW5ndGggc3RyaW5nMilcbiAgICA7O1xuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPVxuICAgICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgICBsZXQgc3RhdGUgPSByZWYgKGhhc2hfZm9sZF9pbnQgc3RhdGUgbGVuKSBpblxuICAgICAgZm9yIHBvcyA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBzdGF0ZSA6PSBoYXNoX2ZvbGRfY2hhciAhc3RhdGUgKENoYXIubG93ZXJjYXNlICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgICAgIGRvbmU7XG4gICAgICAhc3RhdGVcbiAgICA7O1xuXG4gICAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgICBsZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgaXNfcHJlZml4IHMgfnByZWZpeCA9IGlzX3ByZWZpeF9nZW4gcyB+cHJlZml4IH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgICBsZXQgc3Vic3RyX2luZGV4ID0gc3Vic3RyX2luZGV4X2dlbiB+Y2FzZV9zZW5zaXRpdmU6ZmFsc2VcbiAgICBsZXQgc3Vic3RyX2luZGV4X2V4biA9IHN1YnN0cl9pbmRleF9leG5fZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfaW5kZXhfYWxsID0gc3Vic3RyX2luZGV4X2FsbF9nZW4gfmNhc2Vfc2Vuc2l0aXZlOmZhbHNlXG4gICAgbGV0IHN1YnN0cl9yZXBsYWNlX2ZpcnN0ID0gc3Vic3RyX3JlcGxhY2VfZmlyc3RfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBzdWJzdHJfcmVwbGFjZV9hbGwgPSBzdWJzdHJfcmVwbGFjZV9hbGxfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmcgPSBpc19zdWJzdHJpbmdfZ2VuIH5jYXNlX3NlbnNpdGl2ZTpmYWxzZVxuICAgIGxldCBpc19zdWJzdHJpbmdfYXQgPSBpc19zdWJzdHJpbmdfYXRfZ2VuIH5jaGFyX2VxdWFsOkNoYXIuQ2FzZWxlc3MuZXF1YWxcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGbi5pZFxubGV0IHRvX3N0cmluZyA9IEZuLmlkXG5cbmxldCBpbml0IG4gfmYgPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIlN0cmluZy5pbml0ICVkXCIgbiAoKTtcbiAgbGV0IHQgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgdCBpIChmIGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPCAwIHRoZW4gYWNjIGVsc2UgbG9vcCAocy5baV0gOjogYWNjKSAoaSAtIDEpIGluXG4gIGxvb3AgW10gKGxlbmd0aCBzIC0gMSlcbjs7XG5cbmxldCB0b19saXN0X3JldiBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBhY2MgaSA9IGlmIGkgPSBsZW4gdGhlbiBhY2MgZWxzZSBsb29wIChzLltpXSA6OiBhY2MpIChpICsgMSkgaW5cbiAgbG9vcCBbXSAwXG47O1xuXG5sZXQgcmV2IHQgPVxuICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICB1bnNhZmVfc2V0IHJlcyBpICh1bnNhZmVfZ2V0IHQgKGxlbiAtIDEgLSBpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpyZXNcbjs7XG5cbigqKiBFZmZpY2llbnQgc3RyaW5nIHNwbGl0dGluZyAqKVxuXG5sZXQgbHNwbGl0Ml9leG4gPVxuICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTdHJpbmcubHNwbGl0Ml9leG46IG5vdCBmb3VuZFwiKSBpblxuICBsZXQgbHNwbGl0Ml9leG4gbGluZSB+b246ZGVsaW0gPVxuICAgIGxldCBwb3MgPSBpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgbHNwbGl0Ml9leG5cbjs7XG5cbmxldCByc3BsaXQyX2V4biA9XG4gIGxldCBub3RfZm91bmQgPSBOb3RfZm91bmRfcyAoQXRvbSBcIlN0cmluZy5yc3BsaXQyX2V4bjogbm90IGZvdW5kXCIpIGluXG4gIGxldCByc3BsaXQyX2V4biBsaW5lIH5vbjpkZWxpbSA9XG4gICAgbGV0IHBvcyA9IHJpbmRleF9leG5faW50ZXJuYWwgbGluZSB+bm90X2ZvdW5kIGRlbGltIGluXG4gICAgc3ViIGxpbmUgfnBvczowIH5sZW46cG9zLCBzdWIgbGluZSB+cG9zOihwb3MgKyAxKSB+bGVuOihsZW5ndGggbGluZSAtIHBvcyAtIDEpXG4gIGluXG4gICgqIG5hbWVkIHRvIHByZXNlcnZlIHN5bWJvbCBpbiBjb21waWxlZCBiaW5hcnkgKilcbiAgcnNwbGl0Ml9leG5cbjs7XG5cbmxldCBsc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKGxzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByc3BsaXQyIGxpbmUgfm9uID1cbiAgdHJ5IFNvbWUgKHJzcGxpdDJfZXhuIGxpbmUgfm9uKSB3aXRoXG4gIHwgTm90X2ZvdW5kX3MgXyB8IENhbWwuTm90X2ZvdW5kIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgY2hhcl9saXN0X21lbSBsIChjIDogY2hhcikgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IGhkIDo6IHRsIC0+IENoYXIuZXF1YWwgaGQgYyB8fCBjaGFyX2xpc3RfbWVtIHRsIGNcbjs7XG5cbmxldCBzcGxpdF9nZW4gc3RyIH5vbiA9XG4gIGxldCBpc19kZWxpbSA9XG4gICAgbWF0Y2ggb24gd2l0aFxuICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgfCBgY2hhcl9saXN0IGwgLT4gZnVuIGMgLT4gY2hhcl9saXN0X21lbSBsIGNcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyBsYXN0X3BvcyBwb3MgPVxuICAgIGlmIHBvcyA9IC0xXG4gICAgdGhlbiBzdWIgc3RyIH5wb3M6MCB+bGVuOmxhc3RfcG9zIDo6IGFjY1xuICAgIGVsc2UgaWYgaXNfZGVsaW0gc3RyLltwb3NdXG4gICAgdGhlbiAoXG4gICAgICBsZXQgcG9zMSA9IHBvcyArIDEgaW5cbiAgICAgIGxldCBzdWJfc3RyID0gc3ViIHN0ciB+cG9zOnBvczEgfmxlbjoobGFzdF9wb3MgLSBwb3MxKSBpblxuICAgICAgbG9vcCAoc3ViX3N0ciA6OiBhY2MpIHBvcyAocG9zIC0gMSkpXG4gICAgZWxzZSBsb29wIGFjYyBsYXN0X3BvcyAocG9zIC0gMSlcbiAgaW5cbiAgbG9vcCBbXSBsZW4gKGxlbiAtIDEpXG47O1xuXG5sZXQgc3BsaXQgc3RyIH5vbiA9IHNwbGl0X2dlbiBzdHIgfm9uOihgY2hhciBvbilcbmxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbmxldCBzcGxpdF9saW5lcyA9XG4gIGxldCBiYWNrX3VwX2F0X25ld2xpbmUgfnQgfnBvcyB+ZW9sID1cbiAgICBwb3MgOj0gIXBvcyAtIGlmICFwb3MgPiAwICYmIENoYXIuZXF1YWwgdC5bIXBvcyAtIDFdICdcXHInIHRoZW4gMiBlbHNlIDE7XG4gICAgZW9sIDo9ICFwb3MgKyAxXG4gIGluXG4gIGZ1biB0IC0+XG4gICAgbGV0IG4gPSBsZW5ndGggdCBpblxuICAgIGlmIG4gPSAwXG4gICAgdGhlbiBbXVxuICAgIGVsc2UgKFxuICAgICAgKCogSW52YXJpYW50OiBbLTEgPD0gcG9zIDwgZW9sXS4gKilcbiAgICAgIGxldCBwb3MgPSByZWYgKG4gLSAxKSBpblxuICAgICAgbGV0IGVvbCA9IHJlZiBuIGluXG4gICAgICBsZXQgYWMgPSByZWYgW10gaW5cbiAgICAgICgqIFdlIHRyZWF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBzcGVjaWFsbHksIGJlY2F1c2UgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggYVxuICAgICAgICAgbmV3bGluZSwgd2UgZG9uJ3Qgd2FudCBhbiBleHRyYSBlbXB0eSBzdHJpbmcgYXQgdGhlIGVuZCBvZiB0aGUgb3V0cHV0LiAqKVxuICAgICAgaWYgQ2hhci5lcXVhbCB0LlshcG9zXSAnXFxuJyB0aGVuIGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2w7XG4gICAgICB3aGlsZSAhcG9zID49IDAgZG9cbiAgICAgICAgaWYgQ2hhci4oIDw+ICkgdC5bIXBvc10gJ1xcbidcbiAgICAgICAgdGhlbiBkZWNyIHBvc1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBCZWNhdXNlIFtwb3MgPCBlb2xdLCB3ZSBrbm93IHRoYXQgW3N0YXJ0IDw9IGVvbF0uICopXG4gICAgICAgICAgbGV0IHN0YXJ0ID0gIXBvcyArIDEgaW5cbiAgICAgICAgICBhYyA6PSBzdWIgdCB+cG9zOnN0YXJ0IH5sZW46KCFlb2wgLSBzdGFydCkgOjogIWFjO1xuICAgICAgICAgIGJhY2tfdXBfYXRfbmV3bGluZSB+dCB+cG9zIH5lb2wpXG4gICAgICBkb25lO1xuICAgICAgc3ViIHQgfnBvczowIH5sZW46IWVvbCA6OiAhYWMpXG47O1xuXG5sZXQgaXNfc3VmZml4IHMgfnN1ZmZpeCA9IGlzX3N1ZmZpeF9nZW4gcyB+c3VmZml4IH5jaGFyX2VxdWFsOkNoYXIuZXF1YWxcbmxldCBpc19wcmVmaXggcyB+cHJlZml4ID0gaXNfcHJlZml4X2dlbiBzIH5wcmVmaXggfmNoYXJfZXF1YWw6Q2hhci5lcXVhbFxuXG5sZXQgaXNfc3Vic3RyaW5nX2F0IHMgfnBvcyB+c3Vic3RyaW5nID1cbiAgaXNfc3Vic3RyaW5nX2F0X2dlbiBzIH5wb3MgfnN1YnN0cmluZyB+Y2hhcl9lcXVhbDpDaGFyLmVxdWFsXG47O1xuXG5sZXQgd3JhcF9zdWJfbiB0IG4gfm5hbWUgfnBvcyB+bGVuIH5vbl9lcnJvciA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgKG5hbWUgXiBcIiBleHBlY3Rpbmcgbm9ubmVnYXRpdmUgYXJndW1lbnRcIilcbiAgZWxzZSAoXG4gICAgdHJ5IHN1YiB0IH5wb3MgfmxlbiB3aXRoXG4gICAgfCBfIC0+IG9uX2Vycm9yKVxuOztcblxubGV0IGRyb3BfcHJlZml4IHQgbiA9XG4gIHdyYXBfc3ViX24gfm5hbWU6XCJkcm9wX3ByZWZpeFwiIHQgbiB+cG9zOm4gfmxlbjoobGVuZ3RoIHQgLSBuKSB+b25fZXJyb3I6XCJcIlxuOztcblxubGV0IGRyb3Bfc3VmZml4IHQgbiA9XG4gIHdyYXBfc3ViX24gfm5hbWU6XCJkcm9wX3N1ZmZpeFwiIHQgbiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQgLSBuKSB+b25fZXJyb3I6XCJcIlxuOztcblxubGV0IHByZWZpeCB0IG4gPSB3cmFwX3N1Yl9uIH5uYW1lOlwicHJlZml4XCIgdCBuIH5wb3M6MCB+bGVuOm4gfm9uX2Vycm9yOnRcbmxldCBzdWZmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInN1ZmZpeFwiIHQgbiB+cG9zOihsZW5ndGggdCAtIG4pIH5sZW46biB+b25fZXJyb3I6dFxuXG5sZXQgbGZpbmRpID8ocG9zID0gMCkgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPSBpZiBpID0gbiB0aGVuIE5vbmUgZWxzZSBpZiBmIGkgdC5baV0gdGhlbiBTb21lIGkgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgbG9vcCBwb3Ncbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBmIGMpIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT4gU29tZSB0LltpXVxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPVxuICBsZXQgbiA9IGxlbmd0aCB0IGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gblxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZiB0LltpXSB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzKVxuICBpblxuICBsb29wIDBcbjs7XG5cbmxldCByZmluZGkgP3BvcyB0IH5mID1cbiAgbGV0IHJlYyBsb29wIGkgPSBpZiBpIDwgMCB0aGVuIE5vbmUgZWxzZSBpZiBmIGkgdC5baV0gdGhlbiBTb21lIGkgZWxzZSBsb29wIChpIC0gMSkgaW5cbiAgbGV0IHBvcyA9XG4gICAgbWF0Y2ggcG9zIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICAgIHwgTm9uZSAtPiBsZW5ndGggdCAtIDFcbiAgaW5cbiAgbG9vcCBwb3Ncbjs7XG5cbmxldCBsYXN0X25vbl9kcm9wIH5kcm9wIHQgPSByZmluZGkgdCB+ZjooZnVuIF8gYyAtPiBub3QgKGRyb3AgYykpXG5cbmxldCByc3RyaXAgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0ID1cbiAgbWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGkgLT4gaWYgaSA9IGxlbmd0aCB0IC0gMSB0aGVuIHQgZWxzZSBwcmVmaXggdCAoaSArIDEpXG47O1xuXG5sZXQgZmlyc3Rfbm9uX2Ryb3AgfmRyb3AgdCA9IGxmaW5kaSB0IH5mOihmdW4gXyBjIC0+IG5vdCAoZHJvcCBjKSlcblxubGV0IGxzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBtYXRjaCBmaXJzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIDAgLT4gdFxuICB8IFNvbWUgbiAtPiBkcm9wX3ByZWZpeCB0IG5cbjs7XG5cbigqIFtzdHJpcCB0XSBjb3VsZCBiZSBpbXBsZW1lbnRlZCBhcyBbbHN0cmlwIChyc3RyaXAgdCldLiAgVGhlIGltcGxlbWVudGF0aW9uXG4gICBiZWxvdyBzYXZlcyAoYXQgbGVhc3QpIGEgZmFjdG9yIG9mIHR3byBhbGxvY2F0aW9uLCBieSBvbmx5IGFsbG9jYXRpbmcgdGhlXG4gICBmaW5hbCByZXN1bHQuICBUaGlzIGFsc28gc2F2ZXMgc29tZSBhbW91bnQgb2YgdGltZS4gKilcbmxldCBzdHJpcCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgPVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgaWYgbGVuZ3RoID0gMCB8fCBub3QgKGRyb3AgdC5bMF0gfHwgZHJvcCB0LltsZW5ndGggLSAxXSlcbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIG1hdGNoIGZpcnN0X25vbl9kcm9wIHQgfmRyb3Agd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICAobWF0Y2ggbGFzdF9ub25fZHJvcCB0IH5kcm9wIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgfCBTb21lIGxhc3QgLT4gc3ViIHQgfnBvczpmaXJzdCB+bGVuOihsYXN0IC0gZmlyc3QgKyAxKSkpXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IGwgPSBsZW5ndGggdCBpblxuICBsZXQgdCcgPSBCeXRlcy5jcmVhdGUgbCBpblxuICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICBCeXRlcy51bnNhZmVfc2V0IHQnIGkgKGYgaSB0LltpXSlcbiAgZG9uZTtcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTp0J1xuOztcblxuKCogcmVwZWF0ZWQgY29kZSB0byBhdm9pZCByZXF1aXJpbmcgYW4gZXh0cmEgYWxsb2NhdGlvbiBmb3IgYSBjbG9zdXJlIG9uIGVhY2ggY2FsbC4gKilcbmxldCBtYXAgdCB+ZiA9XG4gIGxldCBsID0gbGVuZ3RoIHQgaW5cbiAgbGV0IHQnID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgQnl0ZXMudW5zYWZlX3NldCB0JyBpIChmIHQuW2ldKVxuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOnQnXG47O1xuXG5sZXQgdG9fYXJyYXkgcyA9IEFycmF5LmluaXQgKGxlbmd0aCBzKSB+ZjooZnVuIGkgLT4gcy5baV0pXG5cbmxldCBleGlzdHMgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpIDwgbGVuICYmIChmIHMuW2ldIHx8IGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvcl9hbGwgPVxuICBsZXQgcmVjIGxvb3AgcyBpIH5sZW4gfmYgPSBpID0gbGVuIHx8IChmIHMuW2ldICYmIGxvb3AgcyAoaSArIDEpIH5sZW4gfmYpIGluXG4gIGZ1biBzIH5mIC0+IGxvb3AgcyAwIH5sZW46KGxlbmd0aCBzKSB+ZlxuOztcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGFjIHQuW2ldKSB+ZiB+bGVuXG4gIGluXG4gIGZ1biB0IH5pbml0IH5mIC0+IGxvb3AgdCAwIGluaXQgfmYgfmxlbjoobGVuZ3RoIHQpXG47O1xuXG5sZXQgZm9sZGkgPVxuICBsZXQgcmVjIGxvb3AgdCBpIGFjIH5mIH5sZW4gPVxuICAgIGlmIGkgPSBsZW4gdGhlbiBhYyBlbHNlIGxvb3AgdCAoaSArIDEpIChmIGkgYWMgdC5baV0pIH5mIH5sZW5cbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IDAgaW5pdCB+ZiB+bGVuOihsZW5ndGggdClcbjs7XG5cbmxldCBpdGVyaSB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCB0IGkpXG4gIGRvbmVcbjs7XG5cbmxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbmxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbmxldCBtaW5fZWx0IHQgPSBDb250YWluZXIubWluX2VsdCB+Zm9sZCB0XG5sZXQgbWF4X2VsdCB0ID0gQ29udGFpbmVyLm1heF9lbHQgfmZvbGQgdFxubGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxubGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3VudGlsIH5mb2xkIH5pbml0IH5mIHRcbmxldCBmaW5kX21hcGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZpbmRfbWFwaSB+aXRlcmkgdCB+ZlxubGV0IGZpbmRpIHQgfmYgPSBJbmRleGVkX2NvbnRhaW5lci5maW5kaSB+aXRlcmkgdCB+ZlxubGV0IGNvdW50aSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuY291bnRpIH5mb2xkaSB0IH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IEluZGV4ZWRfY29udGFpbmVyLmZvcl9hbGxpIH5pdGVyaSB0IH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gSW5kZXhlZF9jb250YWluZXIuZXhpc3RzaSB+aXRlcmkgdCB+ZlxuXG5sZXQgbWVtID1cbiAgbGV0IHJlYyBsb29wIHQgYyB+cG9zOmkgfmxlbiA9XG4gICAgaSA8IGxlbiAmJiAoQ2hhci5lcXVhbCBjICh1bnNhZmVfZ2V0IHQgaSkgfHwgbG9vcCB0IGMgfnBvczooaSArIDEpIH5sZW4pXG4gIGluXG4gIGZ1biB0IGMgLT4gbG9vcCB0IGMgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuOztcblxubGV0IHRyIH50YXJnZXQgfnJlcGxhY2VtZW50IHMgPVxuICBpZiBDaGFyLmVxdWFsIHRhcmdldCByZXBsYWNlbWVudFxuICB0aGVuIHNcbiAgZWxzZSBpZiBtZW0gcyB0YXJnZXRcbiAgdGhlbiBtYXAgcyB+ZjooZnVuIGMgLT4gaWYgQ2hhci5lcXVhbCBjIHRhcmdldCB0aGVuIHJlcGxhY2VtZW50IGVsc2UgYylcbiAgZWxzZSBzXG47O1xuXG5sZXQgdHJfbXVsdGkgfnRhcmdldCB+cmVwbGFjZW1lbnQgPVxuICBpZiBpc19lbXB0eSB0YXJnZXRcbiAgdGhlbiBzdGFnZSBGbi5pZFxuICBlbHNlIGlmIGlzX2VtcHR5IHJlcGxhY2VtZW50XG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aSByZXBsYWNlbWVudCBpcyBlbXB0eSBzdHJpbmdcIlxuICBlbHNlIChcbiAgICBtYXRjaCBCeXRlc190ci50cl9jcmVhdGVfbWFwIH50YXJnZXQgfnJlcGxhY2VtZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gc3RhZ2UgRm4uaWRcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgaWYgZXhpc3RzIHMgfmY6KGZ1biBjIC0+IENoYXIuKCA8PiApIGMgKHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSkpXG4gICAgICAgIHRoZW4gbWFwIHMgfmY6KGZ1biBjIC0+IHVuc2FmZV9nZXQgdHJfbWFwIChDaGFyLnRvX2ludCBjKSlcbiAgICAgICAgZWxzZSBzKSlcbjs7XG5cbigqIGZhc3QgdmVyc2lvbiwgaWYgd2UgZXZlciBuZWVkIGl0OlxuICAge1tcbiAgICAgbGV0IGNvbmNhdF9hcnJheSB+c2VwIGFyID1cbiAgICAgICBsZXQgYXJfbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gICAgICAgaWYgYXJfbGVuID0gMCB0aGVuIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBsZXQgc2VwX2xlbiA9IGxlbmd0aCBzZXAgaW5cbiAgICAgICAgIGxldCByZXNfbGVuX3JlZiA9IHJlZiAoc2VwX2xlbiAqIChhcl9sZW4gLSAxKSkgaW5cbiAgICAgICAgIGZvciBpID0gMCB0byBhcl9sZW4gLSAxIGRvXG4gICAgICAgICAgIHJlc19sZW5fcmVmIDo9ICFyZXNfbGVuX3JlZiArIGxlbmd0aCBhci4oaSlcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICBsZXQgcmVzID0gY3JlYXRlICFyZXNfbGVuX3JlZiBpblxuICAgICAgICAgbGV0IHN0cl8wID0gYXIuKDApIGluXG4gICAgICAgICBsZXQgbGVuXzAgPSBsZW5ndGggc3RyXzAgaW5cbiAgICAgICAgIGJsaXQgfnNyYzpzdHJfMCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOjAgfmxlbjpsZW5fMDtcbiAgICAgICAgIGxldCBwb3NfcmVmID0gcmVmIGxlbl8wIGluXG4gICAgICAgICBmb3IgaSA9IDEgdG8gYXJfbGVuIC0gMSBkb1xuICAgICAgICAgICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgICAgICAgICAgYmxpdCB+c3JjOnNlcCB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOnBvcyB+bGVuOnNlcF9sZW47XG4gICAgICAgICAgIGxldCBuZXdfcG9zID0gcG9zICsgc2VwX2xlbiBpblxuICAgICAgICAgICBsZXQgc3RyX2kgPSBhci4oaSkgaW5cbiAgICAgICAgICAgbGV0IGxlbl9pID0gbGVuZ3RoIHN0cl9pIGluXG4gICAgICAgICAgIGJsaXQgfnNyYzpzdHJfaSB+c3JjX3BvczowIH5kc3Q6cmVzIH5kc3RfcG9zOm5ld19wb3MgfmxlbjpsZW5faTtcbiAgICAgICAgICAgcG9zX3JlZiA6PSBuZXdfcG9zICsgbGVuX2lcbiAgICAgICAgIGRvbmU7XG4gICAgICAgICByZXNcbiAgIF19ICopXG5cbmxldCBjb25jYXRfYXJyYXkgP3NlcCBhciA9IGNvbmNhdCA/c2VwIChBcnJheS50b19saXN0IGFyKVxubGV0IGNvbmNhdF9tYXAgP3NlcCBzIH5mID0gY29uY2F0X2FycmF5ID9zZXAgKEFycmF5Lm1hcCAodG9fYXJyYXkgcykgfmYpXG5cbigqIFtmaWx0ZXIgdCBmXSBpcyBpbXBsZW1lbnRlZCBieSB0aGUgZm9sbG93aW5nIGFsZ29yaXRobS5cblxuICAgTGV0IFtuID0gbGVuZ3RoIHRdLlxuXG4gICAxLiBGaW5kIHRoZSBsb3dlc3QgW2ldIHN1Y2ggdGhhdCBbbm90IChmIHQuW2ldKV0uXG5cbiAgIDIuIElmIHRoZXJlIGlzIG5vIHN1Y2ggW2ldLCB0aGVuIHJldHVybiBbdF0uXG5cbiAgIDMuIElmIHRoZXJlIGlzIHN1Y2ggYW4gW2ldLCBhbGxvY2F0ZSBhIHN0cmluZywgW291dF0sIHRvIGhvbGQgdGhlIHJlc3VsdC4gIFtvdXRdIGhhc1xuICAgbGVuZ3RoIFtuIC0gMV0sIHdoaWNoIGlzIHRoZSBtYXhpbXVtIHBvc3NpYmxlIG91dHB1dCBzaXplIGdpdmVuIHRoYXQgdGhlcmUgaXMgYXQgbGVhc3RcbiAgIG9uZSBjaGFyYWN0ZXIgbm90IHNhdGlzZnlpbmcgW2ZdLlxuXG4gICA0LiBDb3B5IGNoYXJhY3RlcnMgYXQgaW5kaWNlcyAwIC4uLiBbaSAtIDFdIGZyb20gW3RdIHRvIFtvdXRdLlxuXG4gICA1LiBXYWxrIHRocm91Z2ggY2hhcmFjdGVycyBhdCBpbmRpY2VzIFtpKzFdIC4uLiBbbi0xXSBvZiBbdF0sIGNvcHlpbmcgdGhvc2UgdGhhdFxuICAgc2F0aXNmeSBbZl0gZnJvbSBbdF0gdG8gW291dF0uXG5cbiAgIDYuIElmIHdlIGNvbXBsZXRlbHkgZmlsbGVkIFtvdXRdLCB0aGVuIHJldHVybiBpdC4gIElmIG5vdCwgcmV0dXJuIHRoZSBwcmVmaXggb2YgW291dF1cbiAgIHRoYXQgd2UgZGlkIGZpbGwgaW4uXG5cbiAgIFRoaXMgYWxnb3JpdGhtIGhhcyB0aGUgcHJvcGVydHkgdGhhdCBpdCBkb2Vzbid0IGFsbG9jYXRlIGEgbmV3IHN0cmluZyBpZiB0aGVyZSdzXG4gICBub3RoaW5nIHRvIGZpbHRlciwgd2hpY2ggaXMgYSBjb21tb24gY2FzZS4gKilcbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuID0gbGVuZ3RoIHQgaW5cbiAgbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IG4gJiYgZiB0LlshaV0gZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgaWYgIWkgPSBuXG4gIHRoZW4gdFxuICBlbHNlIChcbiAgICBsZXQgb3V0ID0gQnl0ZXMuY3JlYXRlIChuIC0gMSkgaW5cbiAgICBCeXRlcy5ibGl0X3N0cmluZyB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0Om91dCB+ZHN0X3BvczowIH5sZW46IWk7XG4gICAgbGV0IG91dF9wb3MgPSByZWYgIWkgaW5cbiAgICBpbmNyIGk7XG4gICAgd2hpbGUgIWkgPCBuIGRvXG4gICAgICBsZXQgYyA9IHQuWyFpXSBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIChcbiAgICAgICAgQnl0ZXMuc2V0IG91dCAhb3V0X3BvcyBjO1xuICAgICAgICBpbmNyIG91dF9wb3MpO1xuICAgICAgaW5jciBpXG4gICAgZG9uZTtcbiAgICBsZXQgb3V0ID0gQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXQgaW5cbiAgICBpZiAhb3V0X3BvcyA9IG4gLSAxIHRoZW4gb3V0IGVsc2Ugc3ViIG91dCB+cG9zOjAgfmxlbjohb3V0X3Bvcylcbjs7XG5cbigqIHJlcGVhdGVkIGNvZGUgdG8gYXZvaWQgcmVxdWlyaW5nIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yIGEgY2xvc3VyZSBvbiBlYWNoIGNhbGwuICopXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG4gPSBsZW5ndGggdCBpblxuICBsZXQgaSA9IHJlZiAwIGluXG4gIHdoaWxlICFpIDwgbiAmJiBmICFpIHQuWyFpXSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICBpZiAhaSA9IG5cbiAgdGhlbiB0XG4gIGVsc2UgKFxuICAgIGxldCBvdXQgPSBCeXRlcy5jcmVhdGUgKG4gLSAxKSBpblxuICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6b3V0IH5kc3RfcG9zOjAgfmxlbjohaTtcbiAgICBsZXQgb3V0X3BvcyA9IHJlZiAhaSBpblxuICAgIGluY3IgaTtcbiAgICB3aGlsZSAhaSA8IG4gZG9cbiAgICAgIGxldCBjID0gdC5bIWldIGluXG4gICAgICBpZiBmICFpIGNcbiAgICAgIHRoZW4gKFxuICAgICAgICBCeXRlcy5zZXQgb3V0ICFvdXRfcG9zIGM7XG4gICAgICAgIGluY3Igb3V0X3Bvcyk7XG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGxldCBvdXQgPSBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOm91dCBpblxuICAgIGlmICFvdXRfcG9zID0gbiAtIDEgdGhlbiBvdXQgZWxzZSBzdWIgb3V0IH5wb3M6MCB+bGVuOiFvdXRfcG9zKVxuOztcblxubGV0IGNob3BfcHJlZml4IHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBTb21lIChkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9wcmVmaXhfaWZfZXhpc3RzIHMgfnByZWZpeCA9XG4gIGlmIGlzX3ByZWZpeCBzIH5wcmVmaXggdGhlbiBkcm9wX3ByZWZpeCBzIChsZW5ndGggcHJlZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3ByZWZpeF9leG4gcyB+cHJlZml4ID1cbiAgbWF0Y2ggY2hvcF9wcmVmaXggcyB+cHJlZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3ByZWZpeF9leG4gJVMgJVNcIiBzIHByZWZpeCAoKVxuOztcblxubGV0IGNob3Bfc3VmZml4IHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBTb21lIChkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSkgZWxzZSBOb25lXG47O1xuXG5sZXQgY2hvcF9zdWZmaXhfaWZfZXhpc3RzIHMgfnN1ZmZpeCA9XG4gIGlmIGlzX3N1ZmZpeCBzIH5zdWZmaXggdGhlbiBkcm9wX3N1ZmZpeCBzIChsZW5ndGggc3VmZml4KSBlbHNlIHNcbjs7XG5cbmxldCBjaG9wX3N1ZmZpeF9leG4gcyB+c3VmZml4ID1cbiAgbWF0Y2ggY2hvcF9zdWZmaXggcyB+c3VmZml4IHdpdGhcbiAgfCBTb21lIHN0ciAtPiBzdHJcbiAgfCBOb25lIC0+IGludmFsaWRfYXJnZiBcIlN0cmluZy5jaG9wX3N1ZmZpeF9leG4gJVMgJVNcIiBzIHN1ZmZpeCAoKVxuOztcblxubW9kdWxlIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXggPSBzdHJ1Y3RcbiAgKCogV2hlbiB0YWtpbmcgYSBzdHJpbmcgcHJlZml4IG9yIHN1ZmZpeCwgd2UgZXh0cmFjdCBmcm9tIHRoZSBzaG9ydGVzdCBpbnB1dCBhdmFpbGFibGVcbiAgICAgaW4gY2FzZSB3ZSBjYW4ganVzdCByZXR1cm4gb25lIG9mIG91ciBpbnB1dHMgd2l0aG91dCBhbGxvY2F0aW5nIGEgbmV3IHN0cmluZy4gKilcblxuICBsZXQgc2hvcnRlciBhIGIgPSBpZiBsZW5ndGggYSA8PSBsZW5ndGggYiB0aGVuIGEgZWxzZSBiXG5cbiAgbGV0IHNob3J0ZXN0IGxpc3QgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gXCJcIlxuICAgIHwgZmlyc3QgOjogcmVzdCAtPiBMaXN0LmZvbGQgcmVzdCB+aW5pdDpmaXJzdCB+ZjpzaG9ydGVyXG4gIDs7XG5cbiAgKCogT3VyIGdlbmVyaWMgYWNjZXNzb3JzIGZvciBjb21tb24gcHJlZml4L3N1ZmZpeCBhYnN0cmFjdCBvdmVyIFtnZXRfcG9zXSwgd2hpY2ggaXNcbiAgICAgZWl0aGVyIFtwb3NfZnJvbV9sZWZ0XSBvciBbcG9zX2Zyb21fcmlnaHRdLiAqKVxuXG4gIGxldCBwb3NfZnJvbV9sZWZ0IChfIDogdCkgKGkgOiBpbnQpID0gaVxuICBsZXQgcG9zX2Zyb21fcmlnaHQgdCBpID0gbGVuZ3RoIHQgLSBpIC0gMVxuXG4gIGxldCByZWMgY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhciA9XG4gICAgaWYgbGVuX3NvX2ZhciA+PSBtYXhfbGVuXG4gICAgdGhlbiBtYXhfbGVuXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsXG4gICAgICAgICAgICAgICh1bnNhZmVfZ2V0IGEgKGdldF9wb3MgYSBsZW5fc29fZmFyKSlcbiAgICAgICAgICAgICAgKHVuc2FmZV9nZXQgYiAoZ2V0X3BvcyBiIGxlbl9zb19mYXIpKVxuICAgIHRoZW4gY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wIGEgYiB+Z2V0X3BvcyB+bWF4X2xlbiB+bGVuX3NvX2ZhcjoobGVuX3NvX2ZhciArIDEpXG4gICAgZWxzZSBsZW5fc29fZmFyXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zID1cbiAgICBsZXQgbWF4X2xlbiA9IG1pbiAobGVuZ3RoIGEpIChsZW5ndGggYikgaW5cbiAgICBjb21tb25fZ2VuZXJpYzJfbGVuZ3RoX2xvb3AgYSBiIH5nZXRfcG9zIH5tYXhfbGVuIH5sZW5fc29fZmFyOjBcbiAgOztcblxuICBsZXQgcmVjIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IGxpc3QgfmdldF9wb3Mgfm1heF9sZW4gPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gbWF4X2xlblxuICAgIHwgc2Vjb25kIDo6IHJlc3QgLT5cbiAgICAgIGxldCBtYXhfbGVuID1cbiAgICAgICAgKCogV2UgY2FsbCBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF9sb29wXSByYXRoZXIgdGhhbiBbY29tbW9uX2dlbmVyaWMyX2xlbmd0aF0gc29cbiAgICAgICAgICAgdGhhdCBbbWF4X2xlbl0gbGltaXRzIG91ciB0cmF2ZXJzYWwgb2YgW2ZpcnN0XSBhbmQgW3NlY29uZF0uICopXG4gICAgICAgIGNvbW1vbl9nZW5lcmljMl9sZW5ndGhfbG9vcCBmaXJzdCBzZWNvbmQgfmdldF9wb3Mgfm1heF9sZW4gfmxlbl9zb19mYXI6MFxuICAgICAgaW5cbiAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIHNlY29uZCByZXN0IH5nZXRfcG9zIH5tYXhfbGVuXG4gIDs7XG5cbiAgbGV0IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zID1cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IDBcbiAgICB8IGZpcnN0IDo6IHJlc3QgLT5cbiAgICAgICgqIFByZWNvbXB1dGluZyBbbWF4X2xlbl0gYmFzZWQgb24gW3Nob3J0ZXN0IGxpc3RdIHNhdmVzIHVzIHdvcmsgaW4gbG9uZ2VyIHN0cmluZ3MsXG4gICAgICAgICBhdCB0aGUgY29zdCBvZiBhbiBleHRyYSBwYXNzIG92ZXIgdGhlIHNwaW5lIG9mIFtsaXN0XS5cblxuICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSdyZSBsb29raW5nIGZvciB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgdGhlIHN0cmluZ3M6XG5cbiAgICAgICAgIHt2XG4gICAgICAgICAgICBsZXQgbG9uZ19hID0gTGlzdC5pbml0IDEwMDAgfmY6KEZuLmNvbnN0ICdhJylcbiAgICAgICAgICAgIFsgbG9uZ19hOyBsb25nX2E7ICdhYScgXVxuICAgICAgICAgdn1cblxuICAgICAgICAgdGhlIGFwcHJvYWNoIGJlbG93IHdpbGwganVzdCBjaGVjayB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YgYWxsIHRoZSBzdHJpbmdzLlxuICAgICAgKilcbiAgICAgIGxldCBtYXhfbGVuID0gbGVuZ3RoIChzaG9ydGVzdCBsaXN0KSBpblxuICAgICAgY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3AgZmlyc3QgcmVzdCB+Z2V0X3BvcyB+bWF4X2xlblxuICA7O1xuXG4gICgqIE91ciBnZW5lcmljIGFjY2Vzc29ycyB0aGF0IHByb2R1Y2UgYSBzdHJpbmcgYWJzdHJhY3Qgb3ZlciBbdGFrZV0sIHdoaWNoIGlzIGVpdGhlclxuICAgICBbcHJlZml4XSBvciBbc3VmZml4XS4gKilcblxuICBsZXQgY29tbW9uX2dlbmVyaWMyIGEgYiB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbGV0IGxlbiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zIGluXG4gICAgKCogVXNlIHRoZSBzaG9ydGVyIG9mIHRoZSB0d28gc3RyaW5ncywgc28gdGhhdCBpZiB0aGUgc2hvcnRlciBvbmUgaXMgdGhlIHNoYXJlZFxuICAgICAgIHByZWZpeCwgW3Rha2VdIHdvbid0IGFsbG9jYXRlIGFub3RoZXIgc3RyaW5nLiAqKVxuICAgIHRha2UgKHNob3J0ZXIgYSBiKSBsZW5cbiAgOztcblxuICBsZXQgY29tbW9uX2dlbmVyaWMgbGlzdCB+Z2V0X3BvcyB+dGFrZSA9XG4gICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgfCBbXSAtPiBcIlwiXG4gICAgfCBmaXJzdCA6OiByZXN0IC0+XG4gICAgICAoKiBBcyB3aXRoIFtjb21tb25fZ2VuZXJpY19sZW5ndGhdLCB3ZSBiYXNlIFttYXhfbGVuXSBvbiBbc2hvcnRlc3QgbGlzdF0uIFdlIGFsc29cbiAgICAgICAgIHVzZSB0aGlzIHJlc3VsdCBmb3IgW3Rha2VdLCBiZWxvdywgdG8gcG90ZW50aWFsbHkgYXZvaWQgYWxsb2NhdGluZyBhIHN0cmluZy4gKilcbiAgICAgIGxldCBzID0gc2hvcnRlc3QgbGlzdCBpblxuICAgICAgbGV0IG1heF9sZW4gPSBsZW5ndGggcyBpblxuICAgICAgaWYgbWF4X2xlbiA9IDBcbiAgICAgIHRoZW4gXCJcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBsZW4gPVxuICAgICAgICAgICgqIFdlIGNhbGwgZGlyZWN0bHkgaW50byBbY29tbW9uX2dlbmVyaWNfbGVuZ3RoX2xvb3BdIHJhdGhlciB0aGFuXG4gICAgICAgICAgICAgW2NvbW1vbl9nZW5lcmljX2xlbmd0aF0gdG8gYXZvaWQgcmVjb21wdXRpbmcgW3Nob3J0ZXN0IGxpc3RdLiAqKVxuICAgICAgICAgIGNvbW1vbl9nZW5lcmljX2xlbmd0aF9sb29wIGZpcnN0IHJlc3QgfmdldF9wb3Mgfm1heF9sZW5cbiAgICAgICAgaW5cbiAgICAgICAgdGFrZSBzIGxlbilcbiAgOztcbmVuZFxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIEZvcl9jb21tb25fcHJlZml4X2FuZF9zdWZmaXhcblxuICBsZXQgY29tbW9uX3ByZWZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpwcmVmaXggfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeCBsaXN0ID0gY29tbW9uX2dlbmVyaWMgbGlzdCB+dGFrZTpzdWZmaXggfmdldF9wb3M6cG9zX2Zyb21fcmlnaHRcbiAgbGV0IGNvbW1vbl9wcmVmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6cHJlZml4IH5nZXRfcG9zOnBvc19mcm9tX2xlZnRcbiAgbGV0IGNvbW1vbl9zdWZmaXgyIGEgYiA9IGNvbW1vbl9nZW5lcmljMiBhIGIgfnRha2U6c3VmZml4IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4X2xlbmd0aCBsaXN0ID0gY29tbW9uX2dlbmVyaWNfbGVuZ3RoIGxpc3QgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeF9sZW5ndGggbGlzdCA9IGNvbW1vbl9nZW5lcmljX2xlbmd0aCBsaXN0IH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG4gIGxldCBjb21tb25fcHJlZml4Ml9sZW5ndGggYSBiID0gY29tbW9uX2dlbmVyaWMyX2xlbmd0aCBhIGIgfmdldF9wb3M6cG9zX2Zyb21fbGVmdFxuICBsZXQgY29tbW9uX3N1ZmZpeDJfbGVuZ3RoIGEgYiA9IGNvbW1vbl9nZW5lcmljMl9sZW5ndGggYSBiIH5nZXRfcG9zOnBvc19mcm9tX3JpZ2h0XG5lbmRcblxuKCogVGhlcmUgdXNlZCB0byBiZSBhIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB0aGF0IHdhcyBmYXN0ZXIgZm9yIHZlcnkgc2hvcnQgc3RyaW5nc1xuICAgKHBlYWtpbmcgYXQgNDAlIGZhc3RlciBmb3IgNC02IGNoYXIgbG9uZyBzdHJpbmdzKS5cbiAgIFRoaXMgbmV3IGZ1bmN0aW9uIGlzIGFyb3VuZCAyMCUgZmFzdGVyIHRoYW4gdGhlIGRlZmF1bHQgaGFzaCBmdW5jdGlvbiwgYnV0IHNsb3dlclxuICAgdGhhbiB0aGUgcHJldmlvdXMgY3VzdG9tIGltcGxlbWVudGF0aW9uLiBIb3dldmVyLCB0aGUgbmV3IE9DYW1sIGZ1bmN0aW9uIGlzIHdlbGxcbiAgIGJlaGF2ZWQsIGFuZCB0aGlzIGltcGxlbWVudGF0aW9uIGlzIGxlc3MgbGlrZWx5IHRvIGRpdmVyZ2UgZnJvbSB0aGUgZGVmYXVsdCBPQ2FtbFxuICAgaW1wbGVtZW50YXRpb24gZG9lcywgd2hpY2ggaXMgYSBkZXNpcmFibGUgcHJvcGVydHkuIChUaGUgb25seSB3YXkgdG8gYXZvaWQgdGhlXG4gICBkaXZlcmdlbmNlIGlzIHRvIGV4cG9zZSB0aGUgbWFjcm8gcmVkZWZpbmVkIGluIGhhc2hfc3R1YnMuYyBpbiB0aGUgaGFzaC5oIGhlYWRlciBvZlxuICAgdGhlIE9DYW1sIGNvbXBpbGVyLikgKilcbm1vZHVsZSBIYXNoID0gc3RydWN0XG4gIGV4dGVybmFsIGhhc2ggOiBzdHJpbmcgLT4gaW50ID0gXCJCYXNlX2hhc2hfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmVuZFxuXG4oKiBbaW5jbHVkZSBIYXNoXSB0byBtYWtlIHRoZSBbZXh0ZXJuYWxdIHZlcnNpb24gb3ZlcnJpZGUgdGhlIFtoYXNoXSBmcm9tXG4gICBbSGFzaGFibGUuTWFrZV9iaW5hYmxlXSwgc28gdGhhdCB3ZSBnZXQgYSBsaXR0bGUgYml0IG9mIGEgc3BlZWR1cCBieSBleHBvc2luZyBpdCBhc1xuICAgZXh0ZXJuYWwgaW4gdGhlIG1saS4gKilcbmxldCBfID0gaGFzaFxuXG5pbmNsdWRlIEhhc2hcblxuKCogZm9yIGludGVyYWN0aXZlIHRvcC1sZXZlbHMgLS0gbW9kdWxlcyBkZXJpdmluZyBmcm9tIFN0cmluZyBzaG91bGQgaGF2ZSBTdHJpbmcncyBwcmV0dHlcbiAgIHByaW50ZXIuICopXG5sZXQgcHAgcHBmIHN0cmluZyA9IENhbWwuRm9ybWF0LmZwcmludGYgcHBmIFwiJVNcIiBzdHJpbmdcbmxldCBvZl9jaGFyIGMgPSBtYWtlIDEgY1xuXG5sZXQgb2ZfY2hhcl9saXN0IGwgPVxuICBsZXQgdCA9IEJ5dGVzLmNyZWF0ZSAoTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyaSBsIH5mOihmdW4gaSBjIC0+IEJ5dGVzLnNldCB0IGkgYyk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6dFxuOztcblxubW9kdWxlIEVzY2FwaW5nID0gc3RydWN0XG4gICgqIElmIHRoaXMgaXMgY2hhbmdlZCwgbWFrZSBzdXJlIHRvIHVwZGF0ZSBbZXNjYXBlXSwgd2hpY2ggYXR0ZW1wdHMgdG8gZW5zdXJlIGFsbCB0aGVcbiAgICAgaW52YXJpYW50cyBjaGVja2VkIGhlcmUuICAqKVxuICBsZXQgYnVpbGRfYW5kX3ZhbGlkYXRlX2VzY2FwZXdvcnRoeV9tYXAgZXNjYXBld29ydGh5X21hcCBlc2NhcGVfY2hhciBmdW5jID1cbiAgICBsZXQgZXNjYXBld29ydGh5X21hcCA9XG4gICAgICBpZiBMaXN0LkFzc29jLm1lbSBlc2NhcGV3b3J0aHlfbWFwIH5lcXVhbDpDaGFyLmVxdWFsIGVzY2FwZV9jaGFyXG4gICAgICB0aGVuIGVzY2FwZXdvcnRoeV9tYXBcbiAgICAgIGVsc2UgKGVzY2FwZV9jaGFyLCBlc2NhcGVfY2hhcikgOjogZXNjYXBld29ydGh5X21hcFxuICAgIGluXG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuOjI1NiAoLTEpIGluXG4gICAgbGV0IHZhbHMgPSBBcnJheS5jcmVhdGUgfmxlbjoyNTYgZmFsc2UgaW5cbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBPayBhcnJcbiAgICAgIHwgKGNfZnJvbSwgY190bykgOjogbCAtPlxuICAgICAgICBsZXQgaywgdiA9XG4gICAgICAgICAgbWF0Y2ggZnVuYyB3aXRoXG4gICAgICAgICAgfCBgRXNjYXBlIC0+IENoYXIudG9faW50IGNfZnJvbSwgY190b1xuICAgICAgICAgIHwgYFVuZXNjYXBlIC0+IENoYXIudG9faW50IGNfdG8sIGNfZnJvbVxuICAgICAgICBpblxuICAgICAgICBpZiBhcnIuKGspIDw+IC0xIHx8IHZhbHMuKENoYXIudG9faW50IHYpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICAgICBcImVzY2FwZXdvcnRoeV9tYXAgbm90IG9uZS10by1vbmVcIlxuICAgICAgICAgICAgICAgWyBcImNfZnJvbVwiLCBzZXhwX29mX2NoYXIgY19mcm9tXG4gICAgICAgICAgICAgICA7IFwiY190b1wiLCBzZXhwX29mX2NoYXIgY190b1xuICAgICAgICAgICAgICAgOyAoIFwiZXNjYXBld29ydGh5X21hcFwiXG4gICAgICAgICAgICAgICAgICwgc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9jaGFyIHNleHBfb2ZfY2hhcikgZXNjYXBld29ydGh5X21hcFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICBdKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhcnIuKGspIDwtIENoYXIudG9faW50IHY7XG4gICAgICAgICAgdmFscy4oQ2hhci50b19pbnQgdikgPC0gdHJ1ZTtcbiAgICAgICAgICBsb29wIGwpXG4gICAgaW5cbiAgICBsb29wIGVzY2FwZXdvcnRoeV9tYXBcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYEVzY2FwZSB3aXRoXG4gICAgfCBFcnJvciBfIGFzIHggLT4geFxuICAgIHwgT2sgZXNjYXBld29ydGh5IC0+XG4gICAgICBPa1xuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgICAoKiBjYWxjdWxhdGUgYSBsaXN0IG9mIChpbmRleCBvZiBjaGFyIHRvIGVzY2FwZSAqIGVzY2FwZWQgY2hhcikgZmlyc3QsIHRoZSBvcmRlclxuICAgICAgICAgICAgICBpcyBmcm9tIHRhaWwgdG8gaGVhZCAqKVxuICAgICAgICAgICBsZXQgdG9fZXNjYXBlX2xlbiA9IHJlZiAwIGluXG4gICAgICAgICAgIGxldCB0b19lc2NhcGUgPVxuICAgICAgICAgICAgIGZvbGRpIHNyYyB+aW5pdDpbXSB+ZjooZnVuIGkgYWNjIGMgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIGVzY2FwZXdvcnRoeS4oQ2hhci50b19pbnQgYykgd2l0aFxuICAgICAgICAgICAgICAgfCAtMSAtPiBhY2NcbiAgICAgICAgICAgICAgIHwgbiAtPlxuICAgICAgICAgICAgICAgICAoKiAoaW5kZXggb2YgY2hhciB0byBlc2NhcGUgKiBlc2NhcGVkIGNoYXIpICopXG4gICAgICAgICAgICAgICAgIGluY3IgdG9fZXNjYXBlX2xlbjtcbiAgICAgICAgICAgICAgICAgKGksIENoYXIudW5zYWZlX29mX2ludCBuKSA6OiBhY2MpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIG1hdGNoIHRvX2VzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICgqIFt0b19lc2NhcGVdIGRpdmlkZSBbc3JjXSB0byBbTGlzdC5sZW5ndGggdG9fZXNjYXBlICsgMV0gcGllY2VzIHNlcGFyYXRlZCBieVxuICAgICAgICAgICAgICAgIHRoZSBjaGFycyB0byBlc2NhcGUuXG5cbiAgICAgICAgICAgICAgICBMZXRzIHRha2VcbiAgICAgICAgICAgICAgICB7W1xuICAgICAgICAgICAgICAgICAgZXNjYXBlX2dlbl9leG5cbiAgICAgICAgICAgICAgICAgICAgfmVzY2FwZXdvcnRoeV9tYXA6WygnYScsICdBJyk7ICgnYicsICdCJyk7ICgnYycsICdDJyldXG4gICAgICAgICAgICAgICAgICAgIH5lc2NhcGVfY2hhcjonXydcbiAgICAgICAgICAgICAgICBdfVxuICAgICAgICAgICAgICAgIGZvciBleGFtcGxlLCBhbmQgYXNzdW1lIHRoZSBzdHJpbmcgdG8gZXNjYXBlIGlzXG5cbiAgICAgICAgICAgICAgICBcIjAwMGExMTFiMjIyYzMzM1wiXG5cbiAgICAgICAgICAgICAgICB0aGVuIFt0b19lc2NhcGVdIGlzIFsoMTEsICdDJyk7ICg3LCAnQicpOyAoMywgJ0EnKV0uXG5cbiAgICAgICAgICAgICAgICBUaGVuIHdlIGNyZWF0ZSBhIFtkc3RdIG9mIGxlbmd0aCBbbGVuZ3RoIHNyYyArIDNdIHRvIHN0b3JlIHRoZVxuICAgICAgICAgICAgICAgIHJlc3VsdCwgY29weSBwaWVjZSBcIjMzM1wiIHRvIFtkc3RdIGRpcmVjdGx5LCB0aGVuIGNvcHkgJ18nIGFuZCAnQycgdG8gW2RzdF07XG4gICAgICAgICAgICAgICAgdGhlbiBtb3ZlIG9uIHRvIG5leHQ7IGFmdGVyIDMgaXRlcmF0aW9ucywgY29weSBwaWVjZSBcIjAwMFwiIGFuZCB3ZSBhcmUgZG9uZS5cblxuICAgICAgICAgICAgICAgIEZpbmFsbHkgdGhlIHJlc3VsdCB3aWxsIGJlXG5cbiAgICAgICAgICAgICAgICBcIjAwMF9BMTExX0IyMjJfQzMzM1wiICopXG4gICAgICAgICAgICAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gICAgICAgICAgICAgbGV0IGRzdF9sZW4gPSBzcmNfbGVuICsgIXRvX2VzY2FwZV9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgZHN0ID0gQnl0ZXMuY3JlYXRlIGRzdF9sZW4gaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IChpZHgsIGVzY2FwZWRfY2hhcikgOjogdG9fZXNjYXBlIC0+XG4gICAgICAgICAgICAgICAgICgqW2lkeF0gPSB0aGUgY2hhciB0byBlc2NhcGUqKVxuICAgICAgICAgICAgICAgICAoKiB0YWtlIGZpcnN0IGl0ZXJhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgICAgICAgICAgICAgICAoKiBjYWxjdWxhdGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDEgYmVjYXVzZSB3ZSBkb24ndCBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgbGVuID0gbGFzdF9pZHggLSBpZHggLSAxIGluXG4gICAgICAgICAgICAgICAgICgqIHNldCB0aGUgZHN0X3BvcyB0byBjb3B5IHRvICopXG4gICAgICAgICAgICAgICAgIGxldCBkc3RfcG9zID0gbGFzdF9kc3RfcG9zIC0gbGVuIGluXG4gICAgICAgICAgICAgICAgICgqIGNvcHkgXCIzMzNcIiwgc2V0IFtzcmNfcG9zXSB0byBbaWR4ICsgMV0gdG8gc2tpcCAnYycgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczooaWR4ICsgMSkgfmRzdCB+ZHN0X3BvcyB+bGVuO1xuICAgICAgICAgICAgICAgICAoKiBiYWNrb2ZmIFtkc3RfcG9zXSBieSAyIHRvIGNvcHkgJ18nIGFuZCAnQycgKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBkc3RfcG9zIC0gMiBpblxuICAgICAgICAgICAgICAgICBCeXRlcy5zZXQgZHN0IGRzdF9wb3MgZXNjYXBlX2NoYXI7XG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldCBkc3QgKGRzdF9wb3MgKyAxKSBlc2NhcGVkX2NoYXI7XG4gICAgICAgICAgICAgICAgIGxvb3AgaWR4IGRzdF9wb3MgdG9fZXNjYXBlXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSBmaXJzdCAqKVxuICAgICAgICAgICAgIGxvb3Agc3JjX2xlbiBkc3RfbGVuIHRvX2VzY2FwZTtcbiAgICAgICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmRzdClcbiAgOztcblxuICBsZXQgZXNjYXBlX2dlbl9leG4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyID1cbiAgICBPcl9lcnJvci5va19leG4gKGVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCBlc2NhcGUgfmVzY2FwZXdvcnRoeSB+ZXNjYXBlX2NoYXIgPVxuICAgICgqIEZvciBbZXNjYXBlX2dlbl9leG5dLCB3ZSBkb24ndCBrbm93IGhvdyB0byBmaXggaW52YWxpZCBlc2NhcGV3b3J0aHlfbWFwIHNvIHdlIGhhdmVcbiAgICAgICB0byByYWlzZSBleGNlcHRpb247IGJ1dCBpbiB0aGlzIGNhc2UsIHdlIGtub3cgaG93IHRvIGZpeCBkdXBsaWNhdGVkIGVsZW1lbnRzIGluXG4gICAgICAgZXNjYXBld29ydGh5IGxpc3QsIHNvIHdlIGp1c3QgZml4IGl0IGluc3RlYWQgb2YgcmFpc2luZyBleGNlcHRpb24gdG8gbWFrZSB0aGlzXG4gICAgICAgZnVuY3Rpb24gZWFzaWVyIHRvIHVzZS4gICopXG4gICAgbGV0IGVzY2FwZXdvcnRoeV9tYXAgPVxuICAgICAgZXNjYXBld29ydGh5XG4gICAgICB8PiBMaXN0LmRlZHVwX2FuZF9zb3J0IH5jb21wYXJlOkNoYXIuY29tcGFyZVxuICAgICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBjIC0+IGMsIGMpXG4gICAgaW5cbiAgICBlc2NhcGVfZ2VuX2V4biB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXJcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IHVuZXNjYXBlX2dlbiB+ZXNjYXBld29ydGh5X21hcCB+ZXNjYXBlX2NoYXIgPVxuICAgIG1hdGNoIGJ1aWxkX2FuZF92YWxpZGF0ZV9lc2NhcGV3b3J0aHlfbWFwIGVzY2FwZXdvcnRoeV9tYXAgZXNjYXBlX2NoYXIgYFVuZXNjYXBlIHdpdGhcbiAgICB8IEVycm9yIF8gYXMgeCAtPiB4XG4gICAgfCBPayBlc2NhcGV3b3J0aHkgLT5cbiAgICAgIE9rXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgICgqIENvbnRpbnVlIHRoZSBleGFtcGxlIGluIFtlc2NhcGVfZ2VuX2V4bl0sIG5vdyB3ZSB1bmVzY2FwZVxuXG4gICAgICAgICAgICAgIFwiMDAwX0ExMTFfQjIyMl9DMzMzXCJcblxuICAgICAgICAgICAgICBiYWNrIHRvXG5cbiAgICAgICAgICAgICAgXCIwMDBhMTExYjIyMmMzMzNcIlxuXG4gICAgICAgICAgICAgIFRoZW4gW3RvX3VuZXNjYXBlXSBpcyBbMTQ7IDk7IDRdLCB3aGljaCBpcyBpbmRleGVzIG9mICdfJ3MuXG5cbiAgICAgICAgICAgICAgVGhlbiB3ZSBjcmVhdGUgYSBzdHJpbmcgW2RzdF0gdG8gc3RvcmUgdGhlIHJlc3VsdCwgY29weSBcIjMzM1wiIHRvIGl0LCB0aGVuIGNvcHlcbiAgICAgICAgICAgICAgJ2MnLCB0aGVuIG1vdmUgb24gdG8gbmV4dCBpdGVyYXRpb24uIEFmdGVyIDMgaXRlcmF0aW9ucyBjb3B5IFwiMDAwXCIgYW5kIHdlIGFyZVxuICAgICAgICAgICAgICBkb25lLiAgKilcbiAgICAgICAgICAgKCogaW5kZXhlcyBvZiBlc2NhcGUgY2hhcnMgKilcbiAgICAgICAgICAgbGV0IHRvX3VuZXNjYXBlID1cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgYWNjID1cbiAgICAgICAgICAgICAgIGlmIGkgPj0gbGVuZ3RoIHNyY1xuICAgICAgICAgICAgICAgdGhlbiBhY2NcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3JjIH5lc2NhcGVfY2hhciBpIHN0YXR1cyBpblxuICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgKGkgKyAxKVxuICAgICAgICAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGluZyAtPiBpIDo6IGFjY1xuICAgICAgICAgICAgICAgICAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gYWNjKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxvb3AgMCBgTGl0ZXJhbCBbXVxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCB0b191bmVzY2FwZSB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gc3JjXG4gICAgICAgICAgIHwgaWR4IDo6IHRvX3VuZXNjYXBlJyAtPlxuICAgICAgICAgICAgIGxldCBkc3QgPSBCeXRlcy5jcmVhdGUgKGxlbmd0aCBzcmMgLSBMaXN0Lmxlbmd0aCB0b191bmVzY2FwZSkgaW5cbiAgICAgICAgICAgICBsZXQgcmVjIGxvb3AgbGFzdF9pZHggbGFzdF9kc3RfcG9zID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjAwMFwiIGF0IGxhc3QgKilcbiAgICAgICAgICAgICAgICAgQnl0ZXMuYmxpdF9zdHJpbmcgfnNyYyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6MCB+bGVuOmxhc3RfaWR4XG4gICAgICAgICAgICAgICB8IGlkeCA6OiB0b191bmVzY2FwZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbaWR4XSA9IGluZGV4IG9mIGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgICAgKCogdGFrZSAxc3QgaXRlcmF0aW9uIGFzIGV4YW1wbGUsIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIFwiMzMzXCIsIG1pbnVzIDIgdG9cbiAgICAgICAgICAgICAgICAgICAgc2tpcCAnX0MnICopXG4gICAgICAgICAgICAgICAgIGxldCBsZW4gPSBsYXN0X2lkeCAtIGlkeCAtIDIgaW5cbiAgICAgICAgICAgICAgICAgKCogcG9pbnQgW2RzdF9wb3NdIHRvIHRoZSBwb3NpdGlvbiB0byBjb3B5IFwiMzMzXCIgdG8gKilcbiAgICAgICAgICAgICAgICAgbGV0IGRzdF9wb3MgPSBsYXN0X2RzdF9wb3MgLSBsZW4gaW5cbiAgICAgICAgICAgICAgICAgKCogY29weSBcIjMzM1wiICopXG4gICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmMgfnNyY19wb3M6KGlkeCArIDIpIH5kc3QgfmRzdF9wb3MgfmxlbjtcbiAgICAgICAgICAgICAgICAgKCogYmFja29mZiBbZHN0X3Bvc10gYnkgMSB0byBjb3B5ICdjJyAqKVxuICAgICAgICAgICAgICAgICBsZXQgZHN0X3BvcyA9IGRzdF9wb3MgLSAxIGluXG4gICAgICAgICAgICAgICAgIEJ5dGVzLnNldFxuICAgICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgICAgICAgIGRzdF9wb3NcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXNjYXBld29ydGh5LihDaGFyLnRvX2ludCBzcmMuW2lkeCArIDFdKSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgLTEgLT4gc3JjLltpZHggKyAxXVxuICAgICAgICAgICAgICAgICAgICB8IG4gLT4gQ2hhci51bnNhZmVfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgICAoKiB1cGRhdGUgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gKilcbiAgICAgICAgICAgICAgICAgbG9vcCBpZHggZHN0X3BvcyB0b191bmVzY2FwZVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgaWR4IDwgbGVuZ3RoIHNyYyAtIDFcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAoKiBzZXQgW2xhc3RfZHN0X3Bvc10gYW5kIFtsYXN0X2lkeF0gdG8gbGVuZ3RoIG9mIFtkc3RdIGFuZCBbc3JjXSAqKVxuICAgICAgICAgICAgICAgbG9vcCAobGVuZ3RoIHNyYykgKEJ5dGVzLmxlbmd0aCBkc3QpIHRvX3VuZXNjYXBlXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgKCogZm9yIGVzY2FwZWQgc3RyaW5nIGVuZGluZyB3aXRoIGFuIGVzY2FwaW5nIGNoYXIgbGlrZSBcIjAwMF9cIiwganVzdCBpZ25vcmVcbiAgICAgICAgICAgICAgICAgIHRoZSBsYXN0IGVzY2FwaW5nIGNoYXIgKilcbiAgICAgICAgICAgICAgIGxvb3AgKGxlbmd0aCBzcmMgLSAxKSAoQnl0ZXMubGVuZ3RoIGRzdCkgdG9fdW5lc2NhcGUnO1xuICAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6ZHN0KVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwIH5lc2NhcGVfY2hhciA9XG4gICAgT3JfZXJyb3Iub2tfZXhuICh1bmVzY2FwZV9nZW4gfmVzY2FwZXdvcnRoeV9tYXAgfmVzY2FwZV9jaGFyKSB8PiBzdGFnZVxuICA7O1xuXG4gIGxldCB1bmVzY2FwZSB+ZXNjYXBlX2NoYXIgPSB1bmVzY2FwZV9nZW5fZXhuIH5lc2NhcGV3b3J0aHlfbWFwOltdIH5lc2NhcGVfY2hhclxuXG4gIGxldCBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBsZXQgcmVjIGxvb3AgcCBjbnQgPVxuICAgICAgaWYgcCA8IDAgfHwgQ2hhci4oIDw+ICkgc3RyLltwXSBlc2NhcGVfY2hhciB0aGVuIGNudCBlbHNlIGxvb3AgKHAgLSAxKSAoY250ICsgMSlcbiAgICBpblxuICAgIGxvb3AgKHBvcyAtIDEpIDBcbiAgOztcblxuICAoKiBJbiBhbiBlc2NhcGVkIHN0cmluZywgYW55IGNoYXIgaXMgZWl0aGVyIGBFc2NhcGluZywgYEVzY2FwZWQgb3IgYExpdGVyYWwuIEZvclxuICAgICBleGFtcGxlLCB0aGUgZXNjYXBlIHN0YXR1c2VzIG9mIGNoYXJzIGluIHN0cmluZyBcImFfYV9fXCIgd2l0aCBlc2NhcGVfY2hhciA9ICdfJyBhcmVcblxuICAgICBhIDogYExpdGVyYWxcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBhIDogYEVzY2FwZWRcbiAgICAgXyA6IGBFc2NhcGluZ1xuICAgICBfIDogYEVzY2FwZWRcblxuICAgICBbdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBpIHByZXZpb3VzX3N0YXR1c10gZ2V0cyBlc2NhcGUgc3RhdHVzIG9mXG4gICAgIHN0ci5baV0gYmFzaW5nIG9uIGVzY2FwZSBzdGF0dXMgb2Ygc3RyLltpIC0gMV0gKilcbiAgbGV0IHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSA9IGZ1bmN0aW9uXG4gICAgfCBgRXNjYXBpbmcgLT4gYEVzY2FwZWRcbiAgICB8IGBMaXRlcmFsIHwgYEVzY2FwZWQgLT5cbiAgICAgIGlmIENoYXIuZXF1YWwgc3RyLltpXSBlc2NhcGVfY2hhciB0aGVuIGBFc2NhcGluZyBlbHNlIGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGxldCBvZGQgPSBwcmVjZWRpbmdfZXNjYXBlX2NoYXJzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIG1vZCAyID0gMSBpblxuICAgIG1hdGNoIG9kZCwgQ2hhci5lcXVhbCBzdHIuW3Bvc10gZXNjYXBlX2NoYXIgd2l0aFxuICAgIHwgdHJ1ZSwgKHRydWUgfCBmYWxzZSkgLT4gYEVzY2FwZWRcbiAgICB8IGZhbHNlLCB0cnVlIC0+IGBFc2NhcGluZ1xuICAgIHwgZmFsc2UsIGZhbHNlIC0+IGBMaXRlcmFsXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2JvdW5kIHN0ciBwb3MgZnVuY3Rpb25fbmFtZSA9XG4gICAgaWYgcG9zID49IGxlbmd0aCBzdHIgfHwgcG9zIDwgMCB0aGVuIGludmFsaWRfYXJnZiBcIiVzOiBvdXQgb2YgYm91bmRzXCIgZnVuY3Rpb25fbmFtZSAoKVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2VzY2FwaW5nIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGluZ1wiO1xuICAgIG1hdGNoIGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgd2l0aFxuICAgIHwgYEVzY2FwaW5nIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYExpdGVyYWwgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgaXNfY2hhcl9lc2NhcGVkIHN0ciB+ZXNjYXBlX2NoYXIgcG9zID1cbiAgICBjaGVja19ib3VuZCBzdHIgcG9zIFwiaXNfY2hhcl9lc2NhcGVkXCI7XG4gICAgbWF0Y2ggZXNjYXBlX3N0YXR1cyBzdHIgfmVzY2FwZV9jaGFyIHBvcyB3aXRoXG4gICAgfCBgRXNjYXBlZCAtPiB0cnVlXG4gICAgfCBgRXNjYXBpbmcgfCBgTGl0ZXJhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19jaGFyX2xpdGVyYWwgc3RyIH5lc2NhcGVfY2hhciBwb3MgPVxuICAgIGNoZWNrX2JvdW5kIHN0ciBwb3MgXCJpc19jaGFyX2xpdGVyYWxcIjtcbiAgICBtYXRjaCBlc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIHdpdGhcbiAgICB8IGBMaXRlcmFsIC0+IHRydWVcbiAgICB8IGBFc2NhcGVkIHwgYEVzY2FwaW5nIC0+IGZhbHNlXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcImluZGV4X2Zyb21cIjtcbiAgICBsZXQgcmVjIGxvb3AgaSBzdGF0dXMgPVxuICAgICAgaWYgaSA+PSBwb3NcbiAgICAgICYmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAmJiBDaGFyLmVxdWFsIHN0ci5baV0gY2hhclxuICAgICAgdGhlbiBTb21lIGlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaSA9IGkgKyAxIGluXG4gICAgICAgIGlmIGkgPj0gbGVuZ3RoIHN0clxuICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgZWxzZSBsb29wIGkgKHVwZGF0ZV9lc2NhcGVfc3RhdHVzIHN0ciB+ZXNjYXBlX2NoYXIgaSBzdGF0dXMpKVxuICAgIGluXG4gICAgbG9vcCBwb3MgKGVzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3MpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2Zyb21fZXhuIHN0ciB+ZXNjYXBlX2NoYXIgcG9zIGNoYXIgPVxuICAgIG1hdGNoIGluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJpbmRleF9mcm9tX2V4bjogbm90IGZvdW5kXCJcbiAgICAgICAgICAgWyBcInN0clwiLCBzZXhwX29mX3Qgc3RyXG4gICAgICAgICAgIDsgXCJlc2NhcGVfY2hhclwiLCBzZXhwX29mX2NoYXIgZXNjYXBlX2NoYXJcbiAgICAgICAgICAgOyBcInBvc1wiLCBzZXhwX29mX2ludCBwb3NcbiAgICAgICAgICAgOyBcImNoYXJcIiwgc2V4cF9vZl9jaGFyIGNoYXJcbiAgICAgICAgICAgXSlcbiAgICB8IFNvbWUgcG9zIC0+IHBvc1xuICA7O1xuXG4gIGxldCBpbmRleCBzdHIgfmVzY2FwZV9jaGFyIGNoYXIgPSBpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgMCBjaGFyXG4gIGxldCBpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID0gaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAwIGNoYXJcblxuICBsZXQgcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgY2hlY2tfYm91bmQgc3RyIHBvcyBcInJpbmRleF9mcm9tXCI7XG4gICAgKCogaWYgdGhlIHRhcmdldCBjaGFyIGlzIHRoZSBzYW1lIGFzIFtlc2NhcGVfY2hhcl0sIHdlIGhhdmUgbm8gd2F5IHRvIGRldGVybWluZSB3aGljaFxuICAgICAgIGVzY2FwZV9jaGFyIGlzIGxpdGVyYWwsIHNvIGp1c3QgcmV0dXJuIE5vbmUgKilcbiAgICBpZiBDaGFyLmVxdWFsIGNoYXIgZXNjYXBlX2NoYXJcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCByZWMgbG9vcCBwb3MgPVxuICAgICAgICBpZiBwb3MgPCAwXG4gICAgICAgIHRoZW4gTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXNjYXBlX2NoYXJzID0gcHJlY2VkaW5nX2VzY2FwZV9jaGFycyBzdHIgfmVzY2FwZV9jaGFyIHBvcyBpblxuICAgICAgICAgIGlmIGVzY2FwZV9jaGFycyBtb2QgMiA9IDAgJiYgQ2hhci5lcXVhbCBzdHIuW3Bvc10gY2hhclxuICAgICAgICAgIHRoZW4gU29tZSBwb3NcbiAgICAgICAgICBlbHNlIGxvb3AgKHBvcyAtIGVzY2FwZV9jaGFycyAtIDEpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgcG9zKVxuICA7O1xuXG4gIGxldCByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciA9XG4gICAgbWF0Y2ggcmluZGV4X2Zyb20gc3RyIH5lc2NhcGVfY2hhciBwb3MgY2hhciB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJyaW5kZXhfZnJvbV9leG46IG5vdCBmb3VuZFwiXG4gICAgICAgICAgIFsgXCJzdHJcIiwgc2V4cF9vZl90IHN0clxuICAgICAgICAgICA7IFwiZXNjYXBlX2NoYXJcIiwgc2V4cF9vZl9jaGFyIGVzY2FwZV9jaGFyXG4gICAgICAgICAgIDsgXCJwb3NcIiwgc2V4cF9vZl9pbnQgcG9zXG4gICAgICAgICAgIDsgXCJjaGFyXCIsIHNleHBfb2ZfY2hhciBjaGFyXG4gICAgICAgICAgIF0pXG4gICAgfCBTb21lIHBvcyAtPiBwb3NcbiAgOztcblxuICBsZXQgcmluZGV4IHN0ciB+ZXNjYXBlX2NoYXIgY2hhciA9XG4gICAgaWYgaXNfZW1wdHkgc3RyIHRoZW4gTm9uZSBlbHNlIHJpbmRleF9mcm9tIHN0ciB+ZXNjYXBlX2NoYXIgKGxlbmd0aCBzdHIgLSAxKSBjaGFyXG4gIDs7XG5cbiAgbGV0IHJpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBjaGFyID1cbiAgICByaW5kZXhfZnJvbV9leG4gc3RyIH5lc2NhcGVfY2hhciAobGVuZ3RoIHN0ciAtIDEpIGNoYXJcbiAgOztcblxuICAoKiBbc3BsaXRfZ2VuIHN0ciB+ZXNjYXBlX2NoYXIgfm9uXSB3b3JrcyBzaW1pbGFybHkgdG8gW1N0cmluZy5zcGxpdF9nZW5dLCB3aXRoIGFuXG4gICAgIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnQ6IG9ubHkgc3BsaXQgb24gbGl0ZXJhbCBjaGFycywgbm90IGVzY2FwaW5nIG9yIGVzY2FwZWQgKilcbiAgbGV0IHNwbGl0X2dlbiBzdHIgfmVzY2FwZV9jaGFyIH5vbiA9XG4gICAgbGV0IGlzX2RlbGltID1cbiAgICAgIG1hdGNoIG9uIHdpdGhcbiAgICAgIHwgYGNoYXIgYycgLT4gZnVuIGMgLT4gQ2hhci5lcXVhbCBjIGMnXG4gICAgICB8IGBjaGFyX2xpc3QgbCAtPiBmdW4gYyAtPiBjaGFyX2xpc3RfbWVtIGwgY1xuICAgIGluXG4gICAgbGV0IGxlbiA9IGxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIHN0YXR1cyBsYXN0X3BvcyBwb3MgPVxuICAgICAgaWYgcG9zID0gbGVuXG4gICAgICB0aGVuIExpc3QucmV2IChzdWIgc3RyIH5wb3M6bGFzdF9wb3MgfmxlbjoobGVuIC0gbGFzdF9wb3MpIDo6IGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgc3RhdHVzID0gdXBkYXRlX2VzY2FwZV9zdGF0dXMgc3RyIH5lc2NhcGVfY2hhciBwb3Mgc3RhdHVzIGluXG4gICAgICAgIGlmIChtYXRjaCBzdGF0dXMgd2l0aFxuICAgICAgICAgIHwgYExpdGVyYWwgLT4gdHJ1ZVxuICAgICAgICAgIHwgYEVzY2FwZWQgfCBgRXNjYXBpbmcgLT4gZmFsc2UpXG4gICAgICAgICYmIGlzX2RlbGltIHN0ci5bcG9zXVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViX3N0ciA9IHN1YiBzdHIgfnBvczpsYXN0X3BvcyB+bGVuOihwb3MgLSBsYXN0X3BvcykgaW5cbiAgICAgICAgICBsb29wIChzdWJfc3RyIDo6IGFjYykgc3RhdHVzIChwb3MgKyAxKSAocG9zICsgMSkpXG4gICAgICAgIGVsc2UgbG9vcCBhY2Mgc3RhdHVzIGxhc3RfcG9zIChwb3MgKyAxKSlcbiAgICBpblxuICAgIGxvb3AgW10gYExpdGVyYWwgMCAwXG4gIDs7XG5cbiAgbGV0IHNwbGl0IHN0ciB+b24gPSBzcGxpdF9nZW4gc3RyIH5vbjooYGNoYXIgb24pXG4gIGxldCBzcGxpdF9vbl9jaGFycyBzdHIgfm9uOmNoYXJzID0gc3BsaXRfZ2VuIHN0ciB+b246KGBjaGFyX2xpc3QgY2hhcnMpXG5cbiAgbGV0IHNwbGl0X2F0IHN0ciBwb3MgPVxuICAgIHN1YiBzdHIgfnBvczowIH5sZW46cG9zLCBzdWIgc3RyIH5wb3M6KHBvcyArIDEpIH5sZW46KGxlbmd0aCBzdHIgLSBwb3MgLSAxKVxuICA7O1xuXG4gIGxldCBsc3BsaXQyIHN0ciB+b24gfmVzY2FwZV9jaGFyID1cbiAgICBPcHRpb24ubWFwIChpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IHJzcGxpdDIgc3RyIH5vbiB+ZXNjYXBlX2NoYXIgPVxuICAgIE9wdGlvbi5tYXAgKHJpbmRleCBzdHIgfmVzY2FwZV9jaGFyIG9uKSB+ZjooZnVuIHggLT4gc3BsaXRfYXQgc3RyIHgpXG4gIDs7XG5cbiAgbGV0IGxzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChpbmRleF9leG4gc3RyIH5lc2NhcGVfY2hhciBvbilcbiAgbGV0IHJzcGxpdDJfZXhuIHN0ciB+b24gfmVzY2FwZV9jaGFyID0gc3BsaXRfYXQgc3RyIChyaW5kZXhfZXhuIHN0ciB+ZXNjYXBlX2NoYXIgb24pXG5cbiAgKCogW2xhc3Rfbm9uX2Ryb3BfbGl0ZXJhbF0gYW5kIFtmaXJzdF9ub25fZHJvcF9saXRlcmFsXSBhcmUgZWl0aGVyIGJvdGggW05vbmVdIG9yIGJvdGhcbiAgICAgW1NvbWVdLiBJZiBbU29tZV0sIHRoZW4gdGhlIGZvcm1lciBpcyA+PSB0aGUgbGF0dGVyLiAqKVxuICBsZXQgbGFzdF9ub25fZHJvcF9saXRlcmFsIH5kcm9wIH5lc2NhcGVfY2hhciB0ID1cbiAgICByZmluZGkgdCB+ZjooZnVuIGkgYyAtPlxuICAgICAgKG5vdCAoZHJvcCBjKSlcbiAgICAgIHx8IGlzX2NoYXJfZXNjYXBpbmcgdCB+ZXNjYXBlX2NoYXIgaVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGVkIHQgfmVzY2FwZV9jaGFyIGkpXG4gIDs7XG5cbiAgbGV0IGZpcnN0X25vbl9kcm9wX2xpdGVyYWwgfmRyb3AgfmVzY2FwZV9jaGFyIHQgPVxuICAgIGxmaW5kaSB0IH5mOihmdW4gaSBjIC0+XG4gICAgICAobm90IChkcm9wIGMpKVxuICAgICAgfHwgaXNfY2hhcl9lc2NhcGluZyB0IH5lc2NhcGVfY2hhciBpXG4gICAgICB8fCBpc19jaGFyX2VzY2FwZWQgdCB+ZXNjYXBlX2NoYXIgaSlcbiAgOztcblxuICBsZXQgcnN0cmlwX2xpdGVyYWwgPyhkcm9wID0gQ2hhci5pc193aGl0ZXNwYWNlKSB0IH5lc2NhcGVfY2hhciA9XG4gICAgbWF0Y2ggbGFzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSBpIC0+IGlmIGkgPSBsZW5ndGggdCAtIDEgdGhlbiB0IGVsc2UgcHJlZml4IHQgKGkgKyAxKVxuICA7O1xuXG4gIGxldCBsc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBtYXRjaCBmaXJzdF9ub25fZHJvcF9saXRlcmFsIHQgfmRyb3AgfmVzY2FwZV9jaGFyIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJcIlxuICAgIHwgU29tZSAwIC0+IHRcbiAgICB8IFNvbWUgbiAtPiBkcm9wX3ByZWZpeCB0IG5cbiAgOztcblxuICAoKiBbc3RyaXAgdF0gY291bGQgYmUgaW1wbGVtZW50ZWQgYXMgW2xzdHJpcCAocnN0cmlwIHQpXS4gIFRoZSBpbXBsZW1lbnRhdGlvblxuICAgICBiZWxvdyBzYXZlcyAoYXQgbGVhc3QpIGEgZmFjdG9yIG9mIHR3byBhbGxvY2F0aW9uLCBieSBvbmx5IGFsbG9jYXRpbmcgdGhlXG4gICAgIGZpbmFsIHJlc3VsdC4gIFRoaXMgYWxzbyBzYXZlcyBzb21lIGFtb3VudCBvZiB0aW1lLiAqKVxuICBsZXQgc3RyaXBfbGl0ZXJhbCA/KGRyb3AgPSBDaGFyLmlzX3doaXRlc3BhY2UpIHQgfmVzY2FwZV9jaGFyID1cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoIHQgaW5cbiAgICAoKiBwZXJmb3JtYW5jZSBoYWNrOiBhdm9pZCBjb3B5aW5nIFt0XSBpbiBjb21tb24gY2FzZXMgKilcbiAgICBpZiBsZW5ndGggPSAwIHx8IG5vdCAoZHJvcCB0LlswXSB8fCBkcm9wIHQuW2xlbmd0aCAtIDFdKVxuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmlyc3Rfbm9uX2Ryb3BfbGl0ZXJhbCB0IH5kcm9wIH5lc2NhcGVfY2hhciB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgfCBTb21lIGZpcnN0IC0+XG4gICAgICAgIChtYXRjaCBsYXN0X25vbl9kcm9wX2xpdGVyYWwgdCB+ZHJvcCB+ZXNjYXBlX2NoYXIgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgfCBTb21lIGxhc3QgLT4gc3ViIHQgfnBvczpmaXJzdCB+bGVuOihsYXN0IC0gZmlyc3QgKyAxKSkpXG4gIDs7XG5lbmRcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgU3RyaW5nX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG4oKiBPdmVycmlkZSBbU2VhcmNoX3BhdHRlcm5dIHdpdGggZGVmYXVsdCBjYXNlLXNlbnNpdGl2aXR5IGFyZ3VtZW50IGF0IHRoZSBlbmQgb2YgdGhlXG4gICBmaWxlLCBzbyB0aGF0IGNhbGwgc2l0ZXMgYWJvdmUgYXJlIGZvcmNlZCB0byBzdXBwbHkgY2FzZS1zZW5zaXRpdml0eSBleHBsaWNpdGx5LiAqKVxubW9kdWxlIFNlYXJjaF9wYXR0ZXJuID0gc3RydWN0XG4gIGluY2x1ZGUgU2VhcmNoX3BhdHRlcm4wXG5cbiAgbGV0IGNyZWF0ZSA/KGNhc2Vfc2Vuc2l0aXZlID0gdHJ1ZSkgcGF0dGVybiA9IGNyZWF0ZSBwYXR0ZXJuIH5jYXNlX3NlbnNpdGl2ZVxuZW5kXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBTdHJpbmdfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBBcnJheSA9IEFycmF5MFxuXG5sZXQgc3RhZ2UgPSBTdGFnZWQuc3RhZ2VcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgdF9vZl9zZXhwID0gKGJ5dGVzX29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2J5dGVzIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGJ5dGVzX3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBCeXRlczBcblxuICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuQnl0ZXNcIlxuICBsZXQgcHAgZm10IHQgPSBDYW1sLkZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgKHRvX3N0cmluZyB0KVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5tb2R1bGUgVG9fYnl0ZXMgPSBCbGl0Lk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICBlbmQpXG5cbmluY2x1ZGUgVG9fYnl0ZXNcbmluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3Rlcl9wcCAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgQnl0ZXNfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoVCkgKFRvX2J5dGVzKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRfc3RyaW5nXG4gICAgZW5kKVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxuXG5sZXQgaW5pdCBuIH5mID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDwgKSBuIDBcbiAgdGhlbiBQcmludGYuaW52YWxpZF9hcmdmIFwiQnl0ZXMuaW5pdCAlZFwiIG4gKCk7XG4gIGxldCB0ID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCB0IGkgKGYgaSlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IG9mX2NoYXJfbGlzdCBsID1cbiAgbGV0IHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gIExpc3QuaXRlcmkgbCB+ZjooZnVuIGkgYyAtPiBzZXQgdCBpIGMpO1xuICB0XG47O1xuXG5sZXQgdG9fbGlzdCB0ID1cbiAgbGV0IHJlYyBsb29wIHQgaSBhY2MgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaSAwXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCAoaSAtIDEpICh1bnNhZmVfZ2V0IHQgaSA6OiBhY2MpXG4gIGluXG4gIGxvb3AgdCAobGVuZ3RoIHQgLSAxKSBbXVxuOztcblxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IHVuc2FmZV9nZXQgdCBpKVxubGV0IG1hcCB0IH5mID0gbWFwIHQgfmZcbmxldCBtYXBpIHQgfmYgPSBtYXBpIHQgfmZcblxubGV0IGZvbGQgPVxuICBsZXQgcmVjIGxvb3AgdCB+ZiB+bGVuIH5wb3MgYWNjID1cbiAgICBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmVxdWFsIHBvcyBsZW5cbiAgICB0aGVuIGFjY1xuICAgIGVsc2UgbG9vcCB0IH5mIH5sZW4gfnBvczoocG9zICsgMSkgKGYgYWNjICh1bnNhZmVfZ2V0IHQgcG9zKSlcbiAgaW5cbiAgZnVuIHQgfmluaXQgfmYgLT4gbG9vcCB0IH5mIH5sZW46KGxlbmd0aCB0KSB+cG9zOjAgaW5pdFxuOztcblxubGV0IGZvbGRpID1cbiAgbGV0IHJlYyBsb29wIHQgfmYgfmxlbiB+cG9zIGFjYyA9XG4gICAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS5lcXVhbCBwb3MgbGVuXG4gICAgdGhlbiBhY2NcbiAgICBlbHNlIGxvb3AgdCB+ZiB+bGVuIH5wb3M6KHBvcyArIDEpIChmIHBvcyBhY2MgKHVuc2FmZV9nZXQgdCBwb3MpKVxuICBpblxuICBmdW4gdCB+aW5pdCB+ZiAtPiBsb29wIHQgfmYgfmxlbjoobGVuZ3RoIHQpIH5wb3M6MCBpbml0XG47O1xuXG5sZXQgdHIgfnRhcmdldCB+cmVwbGFjZW1lbnQgcyA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggcyAtIDEgZG9cbiAgICBpZiBDaGFyLmVxdWFsICh1bnNhZmVfZ2V0IHMgaSkgdGFyZ2V0IHRoZW4gdW5zYWZlX3NldCBzIGkgcmVwbGFjZW1lbnRcbiAgZG9uZVxuOztcblxubGV0IHRyX211bHRpIH50YXJnZXQgfnJlcGxhY2VtZW50ID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID0gKSAoU3RyaW5nLmxlbmd0aCB0YXJnZXQpIDBcbiAgdGhlbiBzdGFnZSBpZ25vcmVcbiAgZWxzZSBpZiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChTdHJpbmcubGVuZ3RoIHJlcGxhY2VtZW50KSAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJ0cl9tdWx0aTogcmVwbGFjZW1lbnQgaXMgdGhlIGVtcHR5IHN0cmluZ1wiXG4gIGVsc2UgKFxuICAgIG1hdGNoIEJ5dGVzX3RyLnRyX2NyZWF0ZV9tYXAgfnRhcmdldCB+cmVwbGFjZW1lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBzdGFnZSBpZ25vcmVcbiAgICB8IFNvbWUgdHJfbWFwIC0+XG4gICAgICBzdGFnZSAoZnVuIHMgLT5cbiAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgcyBpIChTdHJpbmcudW5zYWZlX2dldCB0cl9tYXAgKENoYXIudG9faW50ICh1bnNhZmVfZ2V0IHMgaSkpKVxuICAgICAgICBkb25lKSlcbjs7XG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCBjb250YWlucyA/cG9zID9sZW4gdCBjaGFyID1cbiAgbGV0IHBvcywgbGVuID1cbiAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4biAoKSA/cG9zID9sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQpXG4gIGluXG4gIGxldCBsYXN0ID0gcG9zICsgbGVuIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPCApIGkgbGFzdFxuICAgICYmIChDaGFyLmVxdWFsIChnZXQgdCBpKSBjaGFyIHx8IGxvb3AgKGkgKyAxKSlcbiAgaW5cbiAgbG9vcCBwb3Ncbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBCeXRlc19yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIiMgMSBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiBcbnR5cGUgcmVzdWx0ID1cbnwgTmVnIG9mIHN0cmluZ1xufCBQb3Mgb2Ygc3RyaW5nXG5cbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAyN1xcMDAwXFwwODJcXDAwMFxcMTA1XFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDdcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHBhcnNlX2hleCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3BhcnNlX2hleF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDggXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5XG4jIDEzNSBcInNyYy9oZXhfbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDE0IFwic3JjL2hleF9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIE5lZyBib2R5IClcbiMgMTM5IFwic3JjL2hleF9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG5sZXRcbiMgOCBcInNyYy9oZXhfbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHlcbiMgMTQ1IFwic3JjL2hleF9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTUgXCJzcmMvaGV4X2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggUG9zIGJvZHkgKVxuIyAxNDkgXCJzcmMvaGV4X2xleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcGFyc2VfaGV4X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgSW50ID0gSW50MFxubW9kdWxlIFN5cyA9IFN5czBcblxubGV0IGNvbnZlcnRfZmFpbHVyZSB4IGEgYiB0b19zdHJpbmcgPVxuICBQcmludGYuZmFpbHdpdGhmXG4gICAgXCJjb252ZXJzaW9uIGZyb20gJXMgdG8gJXMgZmFpbGVkOiAlcyBpcyBvdXQgb2YgcmFuZ2VcIlxuICAgIGFcbiAgICBiXG4gICAgKHRvX3N0cmluZyB4KVxuICAgICgpXG5bQEBjb2xkXSBbQEBpbmxpbmUgbmV2ZXJdIFtAQGxvY2FsIG5ldmVyXSBbQEBzcGVjaWFsaXNlIG5ldmVyXVxuOztcblxubGV0IG51bV9iaXRzX2ludCA9IFN5cy5pbnRfc2l6ZV9pbl9iaXRzXG5sZXQgbnVtX2JpdHNfaW50MzIgPSAzMlxubGV0IG51bV9iaXRzX2ludDY0ID0gNjRcbmxldCBudW1fYml0c19uYXRpdmVpbnQgPSBXb3JkX3NpemUubnVtX2JpdHMgV29yZF9zaXplLndvcmRfc2l6ZVxubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQgPSA2MyB8fCBudW1fYml0c19pbnQgPSAzMSB8fCBudW1fYml0c19pbnQgPSAzMilcbmxldCBtaW5faW50MzIgPSBDYW1sLkludDMyLm1pbl9pbnRcbmxldCBtYXhfaW50MzIgPSBDYW1sLkludDMyLm1heF9pbnRcbmxldCBtaW5faW50NjQgPSBDYW1sLkludDY0Lm1pbl9pbnRcbmxldCBtYXhfaW50NjQgPSBDYW1sLkludDY0Lm1heF9pbnRcbmxldCBtaW5fbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQubWluX2ludFxubGV0IG1heF9uYXRpdmVpbnQgPSBDYW1sLk5hdGl2ZWludC5tYXhfaW50XG5sZXQgaW50X3RvX3N0cmluZyA9IENhbWwuc3RyaW5nX29mX2ludFxubGV0IGludDMyX3RvX3N0cmluZyA9IENhbWwuSW50MzIudG9fc3RyaW5nXG5sZXQgaW50NjRfdG9fc3RyaW5nID0gQ2FtbC5JbnQ2NC50b19zdHJpbmdcbmxldCBuYXRpdmVpbnRfdG9fc3RyaW5nID0gQ2FtbC5OYXRpdmVpbnQudG9fc3RyaW5nXG5cbigqIGludCA8LT4gaW50MzIgKilcblxubGV0IGludF90b19pbnQzMl9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludFwiIFwiaW50MzJcIiBpbnRfdG9fc3RyaW5nXG5sZXQgaW50MzJfdG9faW50X2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50MzJcIiBcImludFwiIGludDMyX3RvX3N0cmluZ1xubGV0IGludDMyX3RvX2ludF90cnVuYyA9IENhbWwuSW50MzIudG9faW50XG5sZXQgaW50X3RvX2ludDMyX3RydW5jID0gQ2FtbC5JbnQzMi5vZl9pbnRcblxubGV0IGludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgaWYgbnVtX2JpdHNfaW50IDw9IG51bV9iaXRzX2ludDMyXG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50MzJfdG9faW50X3RydW5jIG1pbl9pbnQzMiBpblxuICAgIGxldCBtYXggPSBpbnQzMl90b19pbnRfdHJ1bmMgbWF4X2ludDMyIGluXG4gICAgZnVuIHggLT4gY29tcGFyZV9pbnQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50MzIgPD0gbnVtX2JpdHNfaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gaW50X3RvX2ludDMyX3RydW5jIEludC5taW5fdmFsdWUgaW5cbiAgICBsZXQgbWF4ID0gaW50X3RvX2ludDMyX3RydW5jIEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDMyIG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQzMiB4IG1heCA8PSAwKVxuOztcblxubGV0IGludF90b19pbnQzMiB4ID1cbiAgaWYgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIFNvbWUgKGludF90b19pbnQzMl90cnVuYyB4KSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQzMl90b19pbnQgeCA9XG4gIGlmIGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChpbnQzMl90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50X3RvX2ludDMyX2V4biB4ID1cbiAgaWYgaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgeCB0aGVuIGludF90b19pbnQzMl90cnVuYyB4IGVsc2UgaW50X3RvX2ludDMyX2ZhaWx1cmUgeFxuOztcblxubGV0IGludDMyX3RvX2ludF9leG4geCA9XG4gIGlmIGludDMyX2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBpbnQzMl90b19pbnRfdHJ1bmMgeCBlbHNlIGludDMyX3RvX2ludF9mYWlsdXJlIHhcbjs7XG5cbigqIGludCA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJpbnRcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50IDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50X3RvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9pbnRcbmxldCBpbnQ2NF90b19pbnRfdHJ1bmMgPSBDYW1sLkludDY0LnRvX2ludFxuXG5sZXQgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgPVxuICBsZXQgbWluID0gaW50X3RvX2ludDY0IEludC5taW5fdmFsdWUgaW5cbiAgbGV0IG1heCA9IGludF90b19pbnQ2NCBJbnQubWF4X3ZhbHVlIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQgeCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChpbnQ2NF90b19pbnRfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9faW50X2V4biB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeCB0aGVuIGludDY0X3RvX2ludF90cnVuYyB4IGVsc2UgaW50NjRfdG9faW50X2ZhaWx1cmUgeFxuOztcblxuKCogaW50IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4ID0gY29udmVydF9mYWlsdXJlIHggXCJuYXRpdmVpbnRcIiBcImludFwiIG5hdGl2ZWludF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50IDw9IG51bV9iaXRzX25hdGl2ZWludClcbmxldCBpbnRfdG9fbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQub2ZfaW50XG5sZXQgbmF0aXZlaW50X3RvX2ludF90cnVuYyA9IENhbWwuTmF0aXZlaW50LnRvX2ludFxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50ID1cbiAgaWYgbnVtX2JpdHNfbmF0aXZlaW50IDw9IG51bV9iaXRzX2ludFxuICB0aGVuIGZ1biBfIC0+IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IG1pbiA9IGludF90b19uYXRpdmVpbnQgSW50Lm1pbl92YWx1ZSBpblxuICAgIGxldCBtYXggPSBpbnRfdG9fbmF0aXZlaW50IEludC5tYXhfdmFsdWUgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludCB4ID1cbiAgaWYgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50IHggdGhlbiBTb21lIChuYXRpdmVpbnRfdG9faW50X3RydW5jIHgpIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnRfZXhuIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQgeFxuICB0aGVuIG5hdGl2ZWludF90b19pbnRfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gaW50NjQgKilcblxubGV0IGludDY0X3RvX2ludDMyX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDMyXCIgaW50NjRfdG9fc3RyaW5nXG5sZXQgKCkgPSBhc3NlcnQgKG51bV9iaXRzX2ludDMyIDwgbnVtX2JpdHNfaW50NjQpXG5sZXQgaW50MzJfdG9faW50NjQgPSBDYW1sLkludDY0Lm9mX2ludDMyXG5sZXQgaW50NjRfdG9faW50MzJfdHJ1bmMgPSBDYW1sLkludDY0LnRvX2ludDMyXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyID1cbiAgbGV0IG1pbiA9IGludDMyX3RvX2ludDY0IG1pbl9pbnQzMiBpblxuICBsZXQgbWF4ID0gaW50MzJfdG9faW50NjQgbWF4X2ludDMyIGluXG4gIGZ1biB4IC0+IGNvbXBhcmVfaW50NjQgbWluIHggPD0gMCAmJiBjb21wYXJlX2ludDY0IHggbWF4IDw9IDBcbjs7XG5cbmxldCBpbnQ2NF90b19pbnQzMiB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4IHRoZW4gU29tZSAoaW50NjRfdG9faW50MzJfdHJ1bmMgeCkgZWxzZSBOb25lXG47O1xuXG5sZXQgaW50NjRfdG9faW50MzJfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBpbnQ2NF90b19pbnQzMl90cnVuYyB4XG4gIGVsc2UgaW50NjRfdG9faW50MzJfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQzMiA8LT4gbmF0aXZlaW50ICopXG5cbmxldCBuYXRpdmVpbnRfdG9faW50MzJfZmFpbHVyZSB4ID1cbiAgY29udmVydF9mYWlsdXJlIHggXCJuYXRpdmVpbnRcIiBcImludDMyXCIgbmF0aXZlaW50X3RvX3N0cmluZ1xuOztcblxubGV0ICgpID0gYXNzZXJ0IChudW1fYml0c19pbnQzMiA8PSBudW1fYml0c19uYXRpdmVpbnQpXG5sZXQgaW50MzJfdG9fbmF0aXZlaW50ID0gQ2FtbC5OYXRpdmVpbnQub2ZfaW50MzJcbmxldCBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgPSBDYW1sLk5hdGl2ZWludC50b19pbnQzMlxuXG5sZXQgbmF0aXZlaW50X2lzX3JlcHJlc2VudGFibGVfYXNfaW50MzIgPVxuICBpZiBudW1fYml0c19uYXRpdmVpbnQgPD0gbnVtX2JpdHNfaW50MzJcbiAgdGhlbiBmdW4gXyAtPiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBtaW4gPSBpbnQzMl90b19uYXRpdmVpbnQgbWluX2ludDMyIGluXG4gICAgbGV0IG1heCA9IGludDMyX3RvX25hdGl2ZWludCBtYXhfaW50MzIgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX25hdGl2ZWludCBtaW4geCA8PSAwICYmIGNvbXBhcmVfbmF0aXZlaW50IHggbWF4IDw9IDApXG47O1xuXG5sZXQgbmF0aXZlaW50X3RvX2ludDMyIHggPVxuICBpZiBuYXRpdmVpbnRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQzMiB4XG4gIHRoZW4gU29tZSAobmF0aXZlaW50X3RvX2ludDMyX3RydW5jIHgpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0IG5hdGl2ZWludF90b19pbnQzMl9leG4geCA9XG4gIGlmIG5hdGl2ZWludF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDMyIHhcbiAgdGhlbiBuYXRpdmVpbnRfdG9faW50MzJfdHJ1bmMgeFxuICBlbHNlIG5hdGl2ZWludF90b19pbnQzMl9mYWlsdXJlIHhcbjs7XG5cbigqIGludDY0IDwtPiBuYXRpdmVpbnQgKilcblxubGV0IGludDY0X3RvX25hdGl2ZWludF9mYWlsdXJlIHggPSBjb252ZXJ0X2ZhaWx1cmUgeCBcImludDY0XCIgXCJuYXRpdmVpbnRcIiBpbnQ2NF90b19zdHJpbmdcbmxldCAoKSA9IGFzc2VydCAobnVtX2JpdHNfaW50NjQgPj0gbnVtX2JpdHNfbmF0aXZlaW50KVxubGV0IGludDY0X3RvX25hdGl2ZWludF90cnVuYyA9IENhbWwuSW50NjQudG9fbmF0aXZlaW50XG5sZXQgbmF0aXZlaW50X3RvX2ludDY0ID0gQ2FtbC5JbnQ2NC5vZl9uYXRpdmVpbnRcblxubGV0IGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfbmF0aXZlaW50ID1cbiAgaWYgbnVtX2JpdHNfaW50NjQgPD0gbnVtX2JpdHNfbmF0aXZlaW50XG4gIHRoZW4gZnVuIF8gLT4gdHJ1ZVxuICBlbHNlIChcbiAgICBsZXQgbWluID0gbmF0aXZlaW50X3RvX2ludDY0IG1pbl9uYXRpdmVpbnQgaW5cbiAgICBsZXQgbWF4ID0gbmF0aXZlaW50X3RvX2ludDY0IG1heF9uYXRpdmVpbnQgaW5cbiAgICBmdW4geCAtPiBjb21wYXJlX2ludDY0IG1pbiB4IDw9IDAgJiYgY29tcGFyZV9pbnQ2NCB4IG1heCA8PSAwKVxuOztcblxubGV0IGludDY0X3RvX25hdGl2ZWludCB4ID1cbiAgaWYgaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19uYXRpdmVpbnQgeFxuICB0aGVuIFNvbWUgKGludDY0X3RvX25hdGl2ZWludF90cnVuYyB4KVxuICBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnQ2NF90b19uYXRpdmVpbnRfZXhuIHggPVxuICBpZiBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX25hdGl2ZWludCB4XG4gIHRoZW4gaW50NjRfdG9fbmF0aXZlaW50X3RydW5jIHhcbiAgZWxzZSBpbnQ2NF90b19uYXRpdmVpbnRfZmFpbHVyZSB4XG47O1xuXG4oKiBpbnQ2NCA8LT4gaW50NjMgKilcblxubGV0IGludDY0X3RvX2ludDYzX2ZhaWx1cmUgeCA9IGNvbnZlcnRfZmFpbHVyZSB4IFwiaW50NjRcIiBcImludDYzXCIgaW50NjRfdG9fc3RyaW5nXG5cbmxldCBpbnQ2NF9pc19yZXByZXNlbnRhYmxlX2FzX2ludDYzID1cbiAgbGV0IG1pbiA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHQgbWluX2ludDY0IDEgaW5cbiAgbGV0IG1heCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHQgbWF4X2ludDY0IDEgaW5cbiAgZnVuIHggLT4gY29tcGFyZV9pbnQ2NCBtaW4geCA8PSAwICYmIGNvbXBhcmVfaW50NjQgeCBtYXggPD0gMFxuOztcblxubGV0IGludDY0X2ZpdF9vbl9pbnQ2M19leG4geCA9XG4gIGlmIGludDY0X2lzX3JlcHJlc2VudGFibGVfYXNfaW50NjMgeCB0aGVuICgpIGVsc2UgaW50NjRfdG9faW50NjNfZmFpbHVyZSB4XG47O1xuXG4oKiBzdHJpbmcgY29udmVyc2lvbnMgKilcblxubGV0IGluc2VydF9kZWxpbWl0ZXJfZXZlcnkgaW5wdXQgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlciA9XG4gIGxldCBpbnB1dF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIGlucHV0IGluXG4gIGlmIGlucHV0X2xlbmd0aCA8PSBjaGFyc19wZXJfZGVsaW1pdGVyXG4gIHRoZW4gaW5wdXRcbiAgZWxzZSAoXG4gICAgbGV0IGhhc19zaWduID1cbiAgICAgIG1hdGNoIGlucHV0LlswXSB3aXRoXG4gICAgICB8ICcrJyB8ICctJyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBudW1fZGlnaXRzID0gaWYgaGFzX3NpZ24gdGhlbiBpbnB1dF9sZW5ndGggLSAxIGVsc2UgaW5wdXRfbGVuZ3RoIGluXG4gICAgbGV0IG51bV9kZWxpbWl0ZXJzID0gKG51bV9kaWdpdHMgLSAxKSAvIGNoYXJzX3Blcl9kZWxpbWl0ZXIgaW5cbiAgICBsZXQgb3V0cHV0X2xlbmd0aCA9IGlucHV0X2xlbmd0aCArIG51bV9kZWxpbWl0ZXJzIGluXG4gICAgbGV0IG91dHB1dCA9IEJ5dGVzLmNyZWF0ZSBvdXRwdXRfbGVuZ3RoIGluXG4gICAgbGV0IGlucHV0X3BvcyA9IHJlZiAoaW5wdXRfbGVuZ3RoIC0gMSkgaW5cbiAgICBsZXQgb3V0cHV0X3BvcyA9IHJlZiAob3V0cHV0X2xlbmd0aCAtIDEpIGluXG4gICAgbGV0IG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgPSByZWYgY2hhcnNfcGVyX2RlbGltaXRlciBpblxuICAgIGxldCBmaXJzdF9kaWdpdF9wb3MgPSBpZiBoYXNfc2lnbiB0aGVuIDEgZWxzZSAwIGluXG4gICAgd2hpbGUgIWlucHV0X3BvcyA+PSBmaXJzdF9kaWdpdF9wb3MgZG9cbiAgICAgIGlmICFudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyID0gMFxuICAgICAgdGhlbiAoXG4gICAgICAgIEJ5dGVzLnNldCBvdXRwdXQgIW91dHB1dF9wb3MgZGVsaW1pdGVyO1xuICAgICAgICBkZWNyIG91dHB1dF9wb3M7XG4gICAgICAgIG51bV9jaGFyc191bnRpbF9kZWxpbWl0ZXIgOj0gY2hhcnNfcGVyX2RlbGltaXRlcik7XG4gICAgICBCeXRlcy5zZXQgb3V0cHV0ICFvdXRwdXRfcG9zIGlucHV0LlshaW5wdXRfcG9zXTtcbiAgICAgIGRlY3IgaW5wdXRfcG9zO1xuICAgICAgZGVjciBvdXRwdXRfcG9zO1xuICAgICAgZGVjciBudW1fY2hhcnNfdW50aWxfZGVsaW1pdGVyXG4gICAgZG9uZTtcbiAgICBpZiBoYXNfc2lnbiB0aGVuIEJ5dGVzLnNldCBvdXRwdXQgMCBpbnB1dC5bMF07XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpvdXRwdXQpXG47O1xuXG5sZXQgaW5zZXJ0X2RlbGltaXRlciBpbnB1dCB+ZGVsaW1pdGVyID1cbiAgaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBpbnB1dCB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyOjNcbjs7XG5cbmxldCBpbnNlcnRfdW5kZXJzY29yZXMgaW5wdXQgPSBpbnNlcnRfZGVsaW1pdGVyIGlucHV0IH5kZWxpbWl0ZXI6J18nXG5sZXQgc2V4cF9vZl9pbnRfc3R5bGUgPSBTZXhwLm9mX2ludF9zdHlsZVxuXG5tb2R1bGUgTWFrZSAoSSA6IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG9wZW4gSVxuXG4gIGxldCBjaGFyc19wZXJfZGVsaW1pdGVyID0gM1xuXG4gIGxldCB0b19zdHJpbmdfaHVtID8oZGVsaW1pdGVyID0gJ18nKSB0ID1cbiAgICBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5ICh0b19zdHJpbmcgdCkgfmRlbGltaXRlciB+Y2hhcnNfcGVyX2RlbGltaXRlclxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgdCBpblxuICAgIFNleHAuQXRvbVxuICAgICAgKG1hdGNoICFzZXhwX29mX2ludF9zdHlsZSB3aXRoXG4gICAgICAgfCBgVW5kZXJzY29yZXMgLT4gaW5zZXJ0X2RlbGltaXRlcl9ldmVyeSBzIH5jaGFyc19wZXJfZGVsaW1pdGVyIH5kZWxpbWl0ZXI6J18nXG4gICAgICAgfCBgTm9fdW5kZXJzY29yZXMgLT4gcylcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9oZXggKEkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgUHB4X2hhc2hfbGliLkhhc2hhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgIHZhbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gdFxuICAgIHZhbCB6ZXJvIDogdFxuICAgIHZhbCAoIDwgKSA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIG5lZyA6IHQgLT4gdFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVF9oZXggPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBJLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChJLmNvbXBhcmUgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgSS5oYXNoX2ZvbGRfdFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBJLmhhc2ggaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgbGV0IGNoYXJzX3Blcl9kZWxpbWl0ZXIgPSA0XG5cbiAgICBsZXQgdG9fc3RyaW5nJyA/ZGVsaW1pdGVyIHQgPVxuICAgICAgbGV0IG1ha2Vfc3VmZml4ID1cbiAgICAgICAgbWF0Y2ggZGVsaW1pdGVyIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEkudG9fc3RyaW5nXG4gICAgICAgIHwgU29tZSBkZWxpbWl0ZXIgLT5cbiAgICAgICAgICBmdW4gdCAtPiBpbnNlcnRfZGVsaW1pdGVyX2V2ZXJ5IChJLnRvX3N0cmluZyB0KSB+ZGVsaW1pdGVyIH5jaGFyc19wZXJfZGVsaW1pdGVyXG4gICAgICBpblxuICAgICAgaWYgSS4oIDwgKSB0IEkuemVybyB0aGVuIFwiLTB4XCIgXiBtYWtlX3N1ZmZpeCAoSS5uZWcgdCkgZWxzZSBcIjB4XCIgXiBtYWtlX3N1ZmZpeCB0XG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgdCA9IHRvX3N0cmluZycgdCA/ZGVsaW1pdGVyOk5vbmVcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA/KGRlbGltaXRlciA9ICdfJykgdCA9IHRvX3N0cmluZycgdCB+ZGVsaW1pdGVyXG5cbiAgICBsZXQgaW52YWxpZCBzdHIgPVxuICAgICAgUHJpbnRmLmZhaWx3aXRoZiBcIiVzLm9mX3N0cmluZzogaW52YWxpZCBpbnB1dCAlU1wiIEkubW9kdWxlX25hbWUgc3RyICgpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgc3RyID1cbiAgICAgIEkub2Zfc3RyaW5nIChTdHJpbmcuZmlsdGVyIHN0ciB+ZjooZnVuIGMgLT4gQ2hhci4oIDw+ICkgYyAnXycpKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgICBsZXQgbW9kdWxlIEwgPSBIZXhfbGV4ZXIgaW5cbiAgICAgIGxldCBsZXggPSBDYW1sLkxleGluZy5mcm9tX3N0cmluZyBzdHIgaW5cbiAgICAgIGxldCByZXN1bHQgPSBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBMLnBhcnNlX2hleCBsZXgpIGluXG4gICAgICBpZiBsZXgubGV4X2N1cnJfcG9zID0gbGV4LmxleF9idWZmZXJfbGVuXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGludmFsaWQgc3RyXG4gICAgICAgIHwgU29tZSAoTmVnIGJvZHkpIC0+IEkubmVnIChvZl9zdHJpbmdfd2l0aF9kZWxpbWl0ZXIgYm9keSlcbiAgICAgICAgfCBTb21lIChQb3MgYm9keSkgLT4gb2Zfc3RyaW5nX3dpdGhfZGVsaW1pdGVyIGJvZHkpXG4gICAgICBlbHNlIGludmFsaWQgc3RyXG4gICAgOztcblxuICAgIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgICBTZXhwbGliMC5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRfaGV4XG4gICAgaW5jbHVkZSBTZXhwYWJsZS5PZl9zdHJpbmdhYmxlIChUX2hleClcbiAgZW5kXG5lbmRcbiIsIigqIFRoaXMgZmlsZSB3YXMgYXV0b2dlbmVyYXRlZCBieSAuLi9nZW5lcmF0ZS9nZW5lcmF0ZV9wb3dfb3ZlcmZsb3dfYm91bmRzLmV4ZSAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFycmF5ID0gQXJyYXkwXG5cbigqIFdlIGhhdmUgdG8gdXNlIEludDY0LnRvX2ludF9leG4gaW5zdGVhZCBvZiBpbnQgY29uc3RhbnRzIHRvIG1ha2VcbiAgIHN1cmUgdGhhdCBmaWxlIGNhbiBiZSBwcmVwcm9jZXNzZWQgb24gMzItYml0IG1hY2hpbmVzLiAqKVxuXG5sZXQgb3ZlcmZsb3dfYm91bmRfbWF4X2ludDMyX3ZhbHVlIDogaW50MzIgPVxuICAyMTQ3NDgzNjQ3bFxuXG5sZXQgaW50MzJfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50MzIgYXJyYXkgPVxuICBbfCAyMTQ3NDgzNjQ3bFxuICA7ICAyMTQ3NDgzNjQ3bFxuICA7ICA0NjM0MGxcbiAgOyAgMTI5MGxcbiAgOyAgMjE1bFxuICA7ICA3M2xcbiAgOyAgMzVsXG4gIDsgIDIxbFxuICA7ICAxNGxcbiAgOyAgMTBsXG4gIDsgIDhsXG4gIDsgIDdsXG4gIDsgIDVsXG4gIDsgIDVsXG4gIDsgIDRsXG4gIDsgIDRsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDNsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDJsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIDsgIDFsXG4gIHxdXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50X3ZhbHVlIDogaW50ID1cbiAgKC0xKSBsc3IgMVxuXG5sZXQgaW50X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludCBhcnJheSA9XG4gIG1hdGNoIEludF9jb252ZXJzaW9ucy5udW1fYml0c19pbnQgd2l0aFxuICB8IDMyIC0+IEFycmF5Lm1hcCBpbnQzMl9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgfmY6Q2FtbC5JbnQzMi50b19pbnRcbiAgfCA2MyAtPlxuICAgIFt8IENhbWwuSW50NjQudG9faW50IDQ2MTE2ODYwMTg0MjczODc5MDNMXG4gICAgOyAgQ2FtbC5JbnQ2NC50b19pbnQgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgICA7ICBDYW1sLkludDY0LnRvX2ludCAyMTQ3NDgzNjQ3TFxuICAgIDsgIDE2NjQ1MTBcbiAgICA7ICA0NjM0MFxuICAgIDsgIDU0MDRcbiAgICA7ICAxMjkwXG4gICAgOyAgNDYzXG4gICAgOyAgMjE1XG4gICAgOyAgMTE4XG4gICAgOyAgNzNcbiAgICA7ICA0OVxuICAgIDsgIDM1XG4gICAgOyAgMjdcbiAgICA7ICAyMVxuICAgIDsgIDE3XG4gICAgOyAgMTRcbiAgICA7ICAxMlxuICAgIDsgIDEwXG4gICAgOyAgOVxuICAgIDsgIDhcbiAgICA7ICA3XG4gICAgOyAgN1xuICAgIDsgIDZcbiAgICA7ICA1XG4gICAgOyAgNVxuICAgIDsgIDVcbiAgICA7ICA0XG4gICAgOyAgNFxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgfF1cbiAgfCAzMSAtPlxuICAgIFt8IDEwNzM3NDE4MjNcbiAgICA7ICAxMDczNzQxODIzXG4gICAgOyAgMzI3NjdcbiAgICA7ICAxMDIzXG4gICAgOyAgMTgxXG4gICAgOyAgNjNcbiAgICA7ICAzMVxuICAgIDsgIDE5XG4gICAgOyAgMTNcbiAgICA7ICAxMFxuICAgIDsgIDdcbiAgICA7ICA2XG4gICAgOyAgNVxuICAgIDsgIDRcbiAgICA7ICA0XG4gICAgOyAgM1xuICAgIDsgIDNcbiAgICA7ICAzXG4gICAgOyAgM1xuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMlxuICAgIDsgIDJcbiAgICA7ICAyXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIDsgIDFcbiAgICA7ICAxXG4gICAgOyAgMVxuICAgIHxdXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IG92ZXJmbG93X2JvdW5kX21heF9pbnQ2M19vbl9pbnQ2NF92YWx1ZSA6IGludDY0ID1cbiAgNDYxMTY4NjAxODQyNzM4NzkwM0xcblxubGV0IGludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcyA6IGludDY0IGFycmF5ID1cbiAgW3wgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgOyAgNDYxMTY4NjAxODQyNzM4NzkwM0xcbiAgOyAgMjE0NzQ4MzY0N0xcbiAgOyAgMTY2NDUxMExcbiAgOyAgNDYzNDBMXG4gIDsgIDU0MDRMXG4gIDsgIDEyOTBMXG4gIDsgIDQ2M0xcbiAgOyAgMjE1TFxuICA7ICAxMThMXG4gIDsgIDczTFxuICA7ICA0OUxcbiAgOyAgMzVMXG4gIDsgIDI3TFxuICA7ICAyMUxcbiAgOyAgMTdMXG4gIDsgIDE0TFxuICA7ICAxMkxcbiAgOyAgMTBMXG4gIDsgIDlMXG4gIDsgIDhMXG4gIDsgIDdMXG4gIDsgIDdMXG4gIDsgIDZMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDVMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDRMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDNMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDJMXG4gIDsgIDFMXG4gIDsgIDFMXG4gIHxdXG5cbmxldCBvdmVyZmxvd19ib3VuZF9tYXhfaW50NjRfdmFsdWUgOiBpbnQ2NCA9XG4gIDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG5cbmxldCBpbnQ2NF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMgOiBpbnQ2NCBhcnJheSA9XG4gIFt8IDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIDkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIDMwMzcwMDA0OTlMXG4gIDsgIDIwOTcxNTFMXG4gIDsgIDU1MTA4TFxuICA7ICA2MjA4TFxuICA7ICAxNDQ4TFxuICA7ICA1MTFMXG4gIDsgIDIzNExcbiAgOyAgMTI3TFxuICA7ICA3OExcbiAgOyAgNTJMXG4gIDsgIDM4TFxuICA7ICAyOExcbiAgOyAgMjJMXG4gIDsgIDE4TFxuICA7ICAxNUxcbiAgOyAgMTNMXG4gIDsgIDExTFxuICA7ICA5TFxuICA7ICA4TFxuICA7ICA3TFxuICA7ICA3TFxuICA7ICA2TFxuICA7ICA2TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA1TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICA0TFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAzTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAyTFxuICA7ICAxTFxuICB8XVxuXG5sZXQgaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzIDogaW50NjQgYXJyYXkgPVxuICBbfCAtOTIyMzM3MjAzNjg1NDc3NTgwN0xcbiAgOyAgLTkyMjMzNzIwMzY4NTQ3NzU4MDdMXG4gIDsgIC0zMDM3MDAwNDk5TFxuICA7ICAtMjA5NzE1MUxcbiAgOyAgLTU1MTA4TFxuICA7ICAtNjIwOExcbiAgOyAgLTE0NDhMXG4gIDsgIC01MTFMXG4gIDsgIC0yMzRMXG4gIDsgIC0xMjdMXG4gIDsgIC03OExcbiAgOyAgLTUyTFxuICA7ICAtMzhMXG4gIDsgIC0yOExcbiAgOyAgLTIyTFxuICA7ICAtMThMXG4gIDsgIC0xNUxcbiAgOyAgLTEzTFxuICA7ICAtMTFMXG4gIDsgIC05TFxuICA7ICAtOExcbiAgOyAgLTdMXG4gIDsgIC03TFxuICA7ICAtNkxcbiAgOyAgLTZMXG4gIDsgIC01TFxuICA7ICAtNUxcbiAgOyAgLTVMXG4gIDsgIC00TFxuICA7ICAtNExcbiAgOyAgLTRMXG4gIDsgIC00TFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0zTFxuICA7ICAtM0xcbiAgOyAgLTNMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTJMXG4gIDsgIC0yTFxuICA7ICAtMkxcbiAgOyAgLTFMXG4gIHxdXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGludmFsaWRfYXJnZiA9IFByaW50Zi5pbnZhbGlkX2FyZ2ZcbmxldCBuZWdhdGl2ZV9leHBvbmVudCAoKSA9IFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJleHBvbmVudCBjYW4gbm90IGJlIG5lZ2F0aXZlXCIgKClcbmxldCBvdmVyZmxvdyAoKSA9IFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJpbnRlZ2VyIG92ZXJmbG93IGluIHBvd1wiICgpXG5cbigqIFRvIGltcGxlbWVudCBbaW50NjRfcG93XSwgd2UgdXNlIEMgY29kZSByYXRoZXIgdGhhbiBPQ2FtbCB0byBlbGltaW5hdGUgYWxsb2NhdGlvbi4gKilcbmV4dGVybmFsIGludF9tYXRoX2ludF9wb3cgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiQmFzZV9pbnRfbWF0aF9pbnRfcG93X3N0dWJcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaW50X21hdGhfaW50NjRfcG93IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIkJhc2VfaW50X21hdGhfaW50NjRfcG93X3N0dWJcIlxuXG5sZXQgaW50X3BvdyBiYXNlIGV4cG9uZW50ID1cbiAgaWYgZXhwb25lbnQgPCAwIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMVxuICAmJiAoZXhwb25lbnQgPiA2M1xuICAgICAgfHwgYWJzIGJhc2UgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludF9wb3NpdGl2ZV9vdmVyZmxvd19ib3VuZHMuKGV4cG9uZW50KSlcbiAgdGhlbiBvdmVyZmxvdyAoKTtcbiAgaW50X21hdGhfaW50X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgSW50NjRfd2l0aF9jb21wYXJpc29ucyA9IHN0cnVjdFxuICBpbmNsdWRlIENhbWwuSW50NjRcblxuICBleHRlcm5hbCAoIDwgKSA6IGludDY0IC0+IGludDY0IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG4gIGV4dGVybmFsICggPiApIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50NjQgLT4gaW50NjQgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5lbmRcblxuKCogd2UgZG9uJ3QgZG8gW2Fic10gaW4gaW50NjQgY2FzZSB0byBhdm9pZCBhbGxvY2F0aW9uICopXG5sZXQgaW50NjRfcG93IGJhc2UgZXhwb25lbnQgPVxuICBsZXQgb3BlbiBJbnQ2NF93aXRoX2NvbXBhcmlzb25zIGluXG4gIGlmIGV4cG9uZW50IDwgMEwgdGhlbiBuZWdhdGl2ZV9leHBvbmVudCAoKTtcbiAgaWYgKGJhc2UgPiAxTCB8fCBiYXNlIDwgLTFMKVxuICAmJiAoZXhwb25lbnQgPiA2M0xcbiAgICAgIHx8IChiYXNlID49IDBMXG4gICAgICAgICAgJiYgYmFzZSA+IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfcG9zaXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpXG4gICAgICAgICApXG4gICAgICB8fCAoYmFzZSA8IDBMXG4gICAgICAgICAgJiYgYmFzZSA8IFBvd19vdmVyZmxvd19ib3VuZHMuaW50NjRfbmVnYXRpdmVfb3ZlcmZsb3dfYm91bmRzLih0b19pbnQgZXhwb25lbnQpXG4gICAgICAgICApKVxuICB0aGVuIG92ZXJmbG93ICgpO1xuICBpbnRfbWF0aF9pbnQ2NF9wb3cgYmFzZSBleHBvbmVudFxuOztcblxubGV0IGludDYzX3Bvd19vbl9pbnQ2NCBiYXNlIGV4cG9uZW50ID1cbiAgbGV0IG9wZW4gSW50NjRfd2l0aF9jb21wYXJpc29ucyBpblxuICBpZiBleHBvbmVudCA8IDBMIHRoZW4gbmVnYXRpdmVfZXhwb25lbnQgKCk7XG4gIGlmIGFicyBiYXNlID4gMUxcbiAgJiYgKGV4cG9uZW50ID4gNjNMXG4gICAgICB8fCBhYnMgYmFzZVxuICAgICAgICAgPiBQb3dfb3ZlcmZsb3dfYm91bmRzLmludDYzX29uX2ludDY0X3Bvc2l0aXZlX292ZXJmbG93X2JvdW5kcy4odG9faW50IGV4cG9uZW50KVxuICAgICApXG4gIHRoZW4gb3ZlcmZsb3cgKCk7XG4gIGludF9tYXRoX2ludDY0X3BvdyBiYXNlIGV4cG9uZW50XG47O1xuXG5tb2R1bGUgdHlwZSBNYWtlX2FyZyA9IHNpZ1xuICB0eXBlIHRcblxuICBpbmNsdWRlIEZsb2F0YWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCAoICsgKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoICogKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIC8gKSA6IHQgLT4gdCAtPiB0XG4gIHZhbCAoIH4tICkgOiB0IC0+IHRcblxuICBpbmNsdWRlIENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBuZWcgOiB0IC0+IHRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgdmFsIHJlbSA6IHQgLT4gdCAtPiB0XG5lbmRcblxubW9kdWxlIE1ha2UgKFggOiBNYWtlX2FyZykgPSBzdHJ1Y3RcbiAgb3BlbiBYXG5cbiAgbGV0ICggJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgIFwiJXMgJSUgJXMgaW4gY29yZV9pbnQubWw6IG1vZHVsdXMgc2hvdWxkIGJlIHBvc2l0aXZlXCJcbiAgICAgICAgKHRvX3N0cmluZyB4KVxuICAgICAgICAodG9fc3RyaW5nIHkpXG4gICAgICAgICgpO1xuICAgIGxldCBydmFsID0gWC5yZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgb25lID0gb2ZfaW50X2V4biAxXG5cbiAgbGV0ICggLyUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gICgqKiBmbG9hdCBkaXZpc2lvbiBvZiBpbnRlZ2VycyAqKVxuICBsZXQgKCAvLyApIHggeSA9IHRvX2Zsb2F0IHggLy4gdG9fZmxvYXQgeVxuXG4gIGxldCByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPSBpIC0gKGkgJSBtb2R1bHVzKVxuXG4gIGxldCByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZjptb2R1bHVzID1cbiAgICBsZXQgcmVtYWluZGVyID0gaSAlIG1vZHVsdXMgaW5cbiAgICBpZiByZW1haW5kZXIgPSB6ZXJvIHRoZW4gaSBlbHNlIGkgKyBtb2R1bHVzIC0gcmVtYWluZGVyXG4gIDs7XG5cbiAgbGV0IHJvdW5kX3Rvd2FyZHNfemVybyBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgaWYgaSA9IHplcm9cbiAgICB0aGVuIHplcm9cbiAgICBlbHNlIGlmIGkgPiB6ZXJvXG4gICAgdGhlbiByb3VuZF9kb3duIGkgfnRvX211bHRpcGxlX29mXG4gICAgZWxzZSByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICA7O1xuXG4gIGxldCByb3VuZF9uZWFyZXN0IGkgfnRvX211bHRpcGxlX29mOm1vZHVsdXMgPVxuICAgIGxldCByZW1haW5kZXIgPSBpICUgbW9kdWx1cyBpblxuICAgIGxldCBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA9IG1vZHVsdXMgLSByZW1haW5kZXIgaW5cbiAgICBpZiBtb2R1bHVzX21pbnVzX3JlbWFpbmRlciA8PSByZW1haW5kZXJcbiAgICB0aGVuIGkgKyBtb2R1bHVzX21pbnVzX3JlbWFpbmRlclxuICAgIGVsc2UgaSAtIHJlbWFpbmRlclxuICA7O1xuXG4gIGxldCByb3VuZCA/KGRpciA9IGBOZWFyZXN0KSBpIH50b19tdWx0aXBsZV9vZiA9XG4gICAgbWF0Y2ggZGlyIHdpdGhcbiAgICB8IGBOZWFyZXN0IC0+IHJvdW5kX25lYXJlc3QgaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBEb3duIC0+IHJvdW5kX2Rvd24gaSB+dG9fbXVsdGlwbGVfb2ZcbiAgICB8IGBVcCAtPiByb3VuZF91cCBpIH50b19tdWx0aXBsZV9vZlxuICAgIHwgYFplcm8gLT4gcm91bmRfdG93YXJkc196ZXJvIGkgfnRvX211bHRpcGxlX29mXG4gIDs7XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGludF9wb3cgPSBpbnRfcG93XG4gIGxldCBpbnQ2NF9wb3cgPSBpbnQ2NF9wb3dcbiAgbGV0IGludDYzX3Bvd19vbl9pbnQ2NCA9IGludDYzX3Bvd19vbl9pbnQ2NFxuXG4gIG1vZHVsZSBQb3dfb3ZlcmZsb3dfYm91bmRzID0gUG93X292ZXJmbG93X2JvdW5kc1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuKCogQyBzdHViIGZvciBpbnQgcG9wY291bnQgdG8gdXNlIHRoZSBQT1BDTlQgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbmV4dGVybmFsIGludF9wb3Bjb3VudCA6IGludCAtPiBpbnQgPSBcIkJhc2VfaW50X21hdGhfaW50X3BvcGNvdW50XCIgW0BAbm9hbGxvY11cblxuKCogVG8gbWFpbnRhaW4gamF2YXNjcmlwdCBjb21wYXRpYmlsaXR5IGFuZCBlbmFibGUgdW5ib3hpbmcsIHdlIGltcGxlbWVudCBwb3Bjb3VudCBpblxuICAgT0NhbWwgcmF0aGVyIHRoYW4gdXNlIEMgc3R1YnMuIEltcGxlbWVudGF0aW9uIGFkYXB0ZWQgZnJvbTpcbiAgIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbW1pbmdfd2VpZ2h0I0VmZmljaWVudF9pbXBsZW1lbnRhdGlvbiAqKVxubGV0IGludDY0X3BvcGNvdW50ID1cbiAgbGV0IG9wZW4gQ2FtbC5JbnQ2NCBpblxuICBsZXQgKCArICkgPSBhZGQgaW5cbiAgbGV0ICggLSApID0gc3ViIGluXG4gIGxldCAoICogKSA9IG11bCBpblxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgaW5cbiAgbGV0ICggbGFuZCApID0gbG9nYW5kIGluXG4gIGxldCBtMSA9IDB4NTU1NTU1NTU1NTU1NTU1NUwgaW5cbiAgKCogMGIwMTAxMDEwMS4uLiAqKVxuICBsZXQgbTIgPSAweDMzMzMzMzMzMzMzMzMzMzNMIGluXG4gICgqIDBiMDAxMTAwMTEuLi4gKilcbiAgbGV0IG00ID0gMHgwZjBmMGYwZjBmMGYwZjBmTCBpblxuICAoKiAwYjAwMDAxMTExLi4uICopXG4gIGxldCBoMDEgPSAweDAxMDEwMTAxMDEwMTAxMDFMIGluXG4gICgqIDEgYml0IHNldCBwZXIgYnl0ZSAqKVxuICBmdW4gW0BpbmxpbmVdIHggLT5cbiAgICAoKiBnYXRoZXIgdGhlIGJpdCBjb3VudCBmb3IgZXZlcnkgcGFpciBvZiBiaXRzICopXG4gICAgbGV0IHggPSB4IC0gKCh4IGxzciAxKSBsYW5kIG0xKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSA0IGJpdHMgKilcbiAgICBsZXQgeCA9ICh4IGxhbmQgbTIpICsgKCh4IGxzciAyKSBsYW5kIG0yKSBpblxuICAgICgqIGdhdGhlciB0aGUgYml0IGNvdW50IGZvciBldmVyeSBieXRlICopXG4gICAgbGV0IHggPSAoeCArICh4IGxzciA0KSkgbGFuZCBtNCBpblxuICAgICgqIHN1bSB0aGUgYml0IGNvdW50cyBpbiB0aGUgdG9wIGJ5dGUgYW5kIHNoaWZ0IGl0IGRvd24gKilcbiAgICB0b19pbnQgKCh4ICogaDAxKSBsc3IgNTYpXG47O1xuXG5sZXQgaW50MzJfcG9wY291bnQgPVxuICAoKiBPbiA2NC1iaXQgc3lzdGVtcywgdGhpcyBpcyBmYXN0ZXIgdGhhbiBpbXBsZW1lbnRpbmcgdXNpbmcgW2ludDMyXSBhcml0aG1ldGljLiAqKVxuICBsZXQgbWFzayA9IDB4ZmZmZl9mZmZmTCBpblxuICBmdW4gW0BpbmxpbmVdIHggLT4gaW50NjRfcG9wY291bnQgKENhbWwuSW50NjQubG9nYW5kIChDYW1sLkludDY0Lm9mX2ludDMyIHgpIG1hc2spXG47O1xuXG5sZXQgbmF0aXZlaW50X3BvcGNvdW50ID1cbiAgbWF0Y2ggQ2FtbC5OYXRpdmVpbnQuc2l6ZSB3aXRoXG4gIHwgMzIgLT4gZnVuIFtAaW5saW5lXSB4IC0+IGludDMyX3BvcGNvdW50IChDYW1sLk5hdGl2ZWludC50b19pbnQzMiB4KVxuICB8IDY0IC0+IGZ1biBbQGlubGluZV0geCAtPiBpbnQ2NF9wb3Bjb3VudCAoQ2FtbC5JbnQ2NC5vZl9uYXRpdmVpbnQgeClcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTaWduMFxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoU2lnbjApXG5cbigqIE9wZW4gW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb25zIHNvXG4gICB0aGV5IGRvIG5vdCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnNcbiAgIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5sZXQgdG9fZmxvYXQgPSBmdW5jdGlvblxuICB8IE5lZyAtPiAtMS5cbiAgfCBaZXJvIC0+IDAuXG4gIHwgUG9zIC0+IDEuXG47O1xuXG5sZXQgZmxpcCA9IGZ1bmN0aW9uXG4gIHwgTmVnIC0+IFBvc1xuICB8IFplcm8gLT4gWmVyb1xuICB8IFBvcyAtPiBOZWdcbjs7XG5cbmxldCAoICogKSB0IHQnID0gb2ZfaW50ICh0b19pbnQgdCAqIHRvX2ludCB0JylcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYXQgdGhlIGVuZCwgYWZ0ZXIgYW55XG4gICBmdW5jdG9yIGFwcGxpY2F0aW9ucyB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzb1xuICAgdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzXG4gICBtb2R1bGUuICopXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEludF9pbnRmXG5pbmNsdWRlIEludDBcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoaW50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGxldCBjb21wYXJlIHggeSA9IEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZSB4IHlcblxuICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgIHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgfCBfIC0+IFByaW50Zi5mYWlsd2l0aGYgXCJJbnQub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG5lbmRcblxubGV0IG51bV9iaXRzID0gSW50X2NvbnZlcnNpb25zLm51bV9iaXRzX2ludFxubGV0IGZsb2F0X2xvd2VyX2JvdW5kID0gRmxvYXQwLmxvd2VyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBmbG9hdF91cHBlcl9ib3VuZCA9IEZsb2F0MC51cHBlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgdG9fZmxvYXQgPSBDYW1sLmZsb2F0X29mX2ludFxubGV0IG9mX2Zsb2F0X3VuY2hlY2tlZCA9IENhbWwuaW50X29mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIENhbWwuaW50X29mX2Zsb2F0IGZcbiAgZWxzZVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgIFwiSW50Lm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5sZXQgemVybyA9IDBcbmxldCBvbmUgPSAxXG5sZXQgbWludXNfb25lID0gLTFcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSAoIH4tIClcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJXhcIiBpXG4gICAgbGV0IG9mX3N0cmluZyBzID0gQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIiV4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50LkhleFwiXG4gIGVuZClcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50XCJcbiAgZW5kKVxuXG4oKiBPcGVuIHJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBhZnRlciBpbmNsdWRpbmcgZnVuY3RvciBpbnN0YW50aWF0aW9ucyBzb1xuICAgdGhleSBkbyBub3Qgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zXG4gICBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5leHRlcm5hbCB0b19pbnQzMl90cnVuYyA6IHQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgb2ZfaW50MzJfdHJ1bmMgOiBpbnQzMiAtPiB0ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2ludDY0X3RydW5jIDogaW50NjQgLT4gdCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnRfdHJ1bmMgOiBuYXRpdmVpbnQgLT4gdCA9IFwiJW5hdGl2ZWludF90b19pbnRcIlxuXG5sZXQgcHJlZCBpID0gaSAtIDFcbmxldCBzdWNjIGkgPSBpICsgMVxubGV0IHRvX2ludCBpID0gaVxubGV0IHRvX2ludF9leG4gPSB0b19pbnRcbmxldCBvZl9pbnQgaSA9IGlcbmxldCBvZl9pbnRfZXhuID0gb2ZfaW50XG5sZXQgbWF4X3ZhbHVlID0gQ2FtbC5tYXhfaW50XG5sZXQgbWluX3ZhbHVlID0gQ2FtbC5taW5faW50XG5sZXQgbWF4X3ZhbHVlXzMwX2JpdHMgPSAweDNGRkZfRkZGRlxubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19pbnRcbmxldCBvZl9pbnQzMl9leG4gPSBDb252LmludDMyX3RvX2ludF9leG5cbmxldCB0b19pbnQzMiA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnRfdG9faW50MzJfZXhuXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX2ludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IHRvX2ludDY0ID0gQ29udi5pbnRfdG9faW50NjRcbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCBvZl9uYXRpdmVpbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX25hdGl2ZWludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBhYnMgeCA9IGFicyB4XG5cbigqIG5vdGUgdGhhdCByZW0gaXMgbm90IHNhbWUgYXMgJSAqKVxubGV0IHJlbSBhIGIgPSBhIG1vZCBiXG5sZXQgaW5jciA9IENhbWwuaW5jclxubGV0IGRlY3IgPSBDYW1sLmRlY3JcbmxldCBzaGlmdF9yaWdodCBhIGIgPSBhIGFzciBiXG5sZXQgc2hpZnRfcmlnaHRfbG9naWNhbCBhIGIgPSBhIGxzciBiXG5sZXQgc2hpZnRfbGVmdCBhIGIgPSBhIGxzbCBiXG5sZXQgYml0X25vdCBhID0gbG5vdCBhXG5sZXQgYml0X29yIGEgYiA9IGEgbG9yIGJcbmxldCBiaXRfYW5kIGEgYiA9IGEgbGFuZCBiXG5sZXQgYml0X3hvciBhIGIgPSBhIGx4b3IgYlxubGV0IHBvdyA9IEludF9tYXRoLlByaXZhdGUuaW50X3Bvd1xubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IC0gMSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgeCArIDFcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gMCB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDIpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgNCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA4KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDE2KSBpblxuICAgICgqIFRoZSBuZXh0IGxpbmUgaXMgc3VwZXJmbHVvdXMgb24gMzItYml0IGFyY2hpdGVjdHVyZXMsIGJ1dCBpdCdzIGZhc3RlciB0byBkbyBpdFxuICAgICAgIGFueXdheSB0aGFuIHRvIGJyYW5jaCAqKVxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDMyKSBpblxuICAgIHggLSAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IDAgdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgeCBsYW5kICh4IC0gMSkgPSAwXG4gIDs7XG5cbiAgKCogQyBzdHVicyBmb3IgaW50IGNseiBhbmQgY3R6IHRvIHVzZSB0aGUgQ0xaL0JTUi9DVFovQlNGIGluc3RydWN0aW9uIHdoZXJlIHBvc3NpYmxlICopXG4gIGV4dGVybmFsIGNselxuICAgIDogICgqIE5vdGUgdGhhdCB3ZSBwYXNzIHRoZSB0YWdnZWQgaW50IGhlcmUuIFNlZSBpbnRfbWF0aF9zdHVicy5jIGZvciBkZXRhaWxzIG9uIHdoeVxuICAgICAgICAgIHRoaXMgaXMgY29ycmVjdC4gKilcbiAgICBpbnRcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfaW50X2NselwiIFwiQmFzZV9pbnRfbWF0aF9pbnRfY2x6X3VudGFnZ2VkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAoaW50W0B1bnRhZ2dlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludF9jdHpcIiBcIkJhc2VfaW50X21hdGhfaW50X2N0el91bnRhZ2dlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IDBcbiAgICB0aGVuIHJhaXNlX3MgKFNleHAubWVzc2FnZSBcIltJbnQuZmxvb3JfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50IGkgXSk7XG4gICAgbnVtX2JpdHMgLSAxIC0gY2x6IGlcbiAgOztcblxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIGkgPD0gMFxuICAgIHRoZW4gcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludC5jZWlsX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX2ludCBpIF0pO1xuICAgIGlmIGkgPSAxIHRoZW4gMCBlbHNlIG51bV9iaXRzIC0gY2x6IChpIC0gMSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcblxubGV0IHNpZ24gPSBTaWduLm9mX2ludFxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50X3BvcGNvdW50XG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBleHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbiAgZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG4gIGV4dGVybmFsICggKiApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVtdWxpbnRcIlxuICBleHRlcm5hbCAoIC8gKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlZGl2aW50XCJcbiAgZXh0ZXJuYWwgKCB+LSApIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCBhYnMgPSBhYnNcblxuICBleHRlcm5hbCBuZWcgOiB0IC0+IHQgPSBcIiVuZWdpbnRcIlxuXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgbW9kdWxlIEYgPSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBpbmNsdWRlIEZcblxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuXG4gICgqIFRoZXNlIGlubGluZWQgdmVyc2lvbnMgb2YgKCUpLCAoLyUpLCBhbmQgKC8vKSBwZXJmb3JtIGJldHRlciB0aGFuIHRoZWlyIGZ1bmN0b3JpemVkXG4gICAgIGNvdW50ZXJwYXJ0cyBpbiBbRl0gKHNlZSBiZW5jaG1hcmtzIGJlbG93KS5cblxuICAgICBUaGUgcmVhc29uIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW5saW5lZCBpbiBbSW50XSBidXQgbm90IGluIGFueSBvZiB0aGUgb3RoZXIgaW50ZWdlclxuICAgICBtb2R1bGVzIGlzIHRoYXQgdGhleSBleGlzdGVkIGluIFtJbnRdIGFuZCBbSW50XSBhbG9uZSBwcmlvciB0byB0aGUgaW50cm9kdWN0aW9uIG9mXG4gICAgIHRoZSBbSW50X21hdGguTWFrZV0gZnVuY3RvciwgYW5kIHdlIGRpZG4ndCB3YW50IHRvIGRlZ3JhZGUgdGhlaXIgcGVyZm9ybWFuY2UuXG5cbiAgICAgV2Ugd29uJ3QgcHJlLWVtcHRpdmVseSBkbyB0aGUgc2FtZSBmb3IgbmV3IGZ1bmN0aW9ucywgdW5sZXNzIHNvbWVvbmUgY2FyZXMsIG9uIGEgY2FzZVxuICAgICBieSBjYXNlIGZhc2hpb24uICAqKVxuXG4gIGxldCAoICUgKSB4IHkgPVxuICAgIGlmIHkgPD0gemVyb1xuICAgIHRoZW5cbiAgICAgIFByaW50Zi5pbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCIlcyAlJSAlcyBpbiBjb3JlX2ludC5tbDogbW9kdWx1cyBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgbGV0IHJ2YWwgPSByZW0geCB5IGluXG4gICAgaWYgcnZhbCA8IHplcm8gdGhlbiBydmFsICsgeSBlbHNlIHJ2YWxcbiAgOztcblxuICBsZXQgKCAvJSApIHggeSA9XG4gICAgaWYgeSA8PSB6ZXJvXG4gICAgdGhlblxuICAgICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgICBcIiVzIC8lJSAlcyBpbiBjb3JlX2ludC5tbDogZGl2aXNvciBzaG91bGQgYmUgcG9zaXRpdmVcIlxuICAgICAgICAodG9fc3RyaW5nIHgpXG4gICAgICAgICh0b19zdHJpbmcgeSlcbiAgICAgICAgKCk7XG4gICAgaWYgeCA8IHplcm8gdGhlbiAoKHggKyBvbmUpIC8geSkgLSBvbmUgZWxzZSB4IC8geVxuICA7O1xuXG4gIGxldCAoIC8vICkgeCB5ID0gdG9fZmxvYXQgeCAvLiB0b19mbG9hdCB5XG5cbiAgZXh0ZXJuYWwgKCBsYW5kICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG4gIGV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbiAgZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbiAgbGV0IGxub3QgPSBsbm90XG5cbiAgZXh0ZXJuYWwgKCBsc2wgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbiAgZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbiAgZXh0ZXJuYWwgKCBhc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYXNyaW50XCJcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludF0gYW5kIFtJbnQuT10gYWdyZWUgdmFsdWUtd2lzZSAqKVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgT19GID0gTy5GXG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yXG4gICBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9uc1xuICAgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieSB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBmYWlsd2l0aGYgPSBQcmludGYuZmFpbHdpdGhmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgVWNoYXIwXG5cbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlVjaGFyXCJcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBIYXNoLmZvbGRfaW50IHN0YXRlICh0b19pbnQgdClcbiAgbGV0IGhhc2ggdCA9IEhhc2gucnVuIGhhc2hfZm9sZF90IHRcbiAgbGV0IHRvX3N0cmluZyB0ID0gUHJpbnRmLnNwcmludGYgXCJVKyUwNFhcIiAodG9faW50IHQpXG5cbiAgKCogRG8gbm90IGFjdHVhbGx5IGV4cG9ydCB0aGlzLiBTZWUgZGlzY3Vzc2lvbiBpbiB0aGUgLm1saSAqKVxuXG4gIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgU2V4cC5BdG9tIHMgLT5cbiAgICAgICh0cnkgQ2FtbC5TY2FuZi5zc2NhbmYgcyBcIlUrJVhcIiAoZnVuIGkgLT4gVWNoYXIwLm9mX2ludCBpKSB3aXRoXG4gICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJVY2hhci50X29mX3NleHA6IGF0b20gb2YgdGhlIGZvcm0gVStYWFhYIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9XG4gICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiEgVWNoYXJfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgaW50X2lzX3NjYWxhciA9IGlzX3ZhbGlkXG5cbmxldCBzdWNjX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5zdWNjIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnN1Y2NfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHN1Y2MgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAuc3VjYyBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBwcmVkX2V4biBjID1cbiAgdHJ5IFVjaGFyMC5wcmVkIGMgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+IGZhaWx3aXRoZiBcIlVjaGFyLnByZWRfZXhuOiAlc1wiIG1zZyAoKVxuOztcblxubGV0IHByZWQgYyA9XG4gIHRyeSBTb21lIChVY2hhcjAucHJlZCBjKSB3aXRoXG4gIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcbjs7XG5cbmxldCBvZl9zY2FsYXIgaSA9IGlmIGludF9pc19zY2FsYXIgaSB0aGVuIFNvbWUgKHVuc2FmZV9vZl9pbnQgaSkgZWxzZSBOb25lXG5cbmxldCBvZl9zY2FsYXJfZXhuIGkgPVxuICBpZiBpbnRfaXNfc2NhbGFyIGlcbiAgdGhlbiB1bnNhZmVfb2ZfaW50IGlcbiAgZWxzZSBmYWlsd2l0aGYgXCJVY2hhci5vZl9pbnRfZXhuIGdvdCBhIGludmFsaWQgVW5pY29kZSBzY2FsYXIgdmFsdWU6ICUwNFhcIiBpICgpXG47O1xuXG5sZXQgdG9fc2NhbGFyIHQgPSBVY2hhcjAudG9faW50IHRcbmxldCB0b19jaGFyIGMgPSBpZiBpc19jaGFyIGMgdGhlbiBTb21lICh1bnNhZmVfdG9fY2hhciBjKSBlbHNlIE5vbmVcblxubGV0IHRvX2NoYXJfZXhuIGMgPVxuICBpZiBpc19jaGFyIGNcbiAgdGhlbiB1bnNhZmVfdG9fY2hhciBjXG4gIGVsc2UgZmFpbHdpdGhmIFwiVWNoYXIudG9fY2hhcl9leG4gZ290IGEgbm9uIGxhdGluLTEgY2hhcmFjdGVyOiBVKyUwNFhcIiAodG9faW50IGMpICgpXG47O1xuXG5sZXQgdXRmOF9ieXRlX2xlbmd0aCB1Y2hhciA9XG4gIGxldCBjb2RlcG9pbnQgPSB0b19zY2FsYXIgdWNoYXIgaW5cbiAgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIEludC4oIDwgKSBjb2RlcG9pbnQgMHg4MDBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgSW50LiggPCApIGNvZGVwb2ludCAweDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIDRcbjs7XG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBVY2hhcl9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYSkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6XG4gICdhICdiLlxuICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2IgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHBsaWIwLlNleHAudFxuICA9XG4gIGZ1biAodHlwZSBhX18wMDNfIGJfXzAwNF8pXG4gICAgICA6ICAoKGFfXzAwM18gLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAoYl9fMDA0XyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgICAgLT4gKGFfXzAwM18sIGJfXzAwNF8pIHQgLT4gU2V4cGxpYjAuU2V4cC50KSAtPlxuICAgIGZ1biBfb2ZfYV9fMDAxXyBfb2ZfYl9fMDAyXyBUIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlRcIlxuOztcblxuW0BAQGVuZF1cblxudHlwZSAoJ2EsICdiKSBlcXVhbCA9ICgnYSwgJ2IpIHRcblxubGV0IHJlZmwgPSBUXG5sZXQgc3ltICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYiwgYSkgdCA9IFRcbmxldCB0cmFucyAodHlwZSBhIGIgYykgKFQgOiAoYSwgYikgdCkgKFQgOiAoYiwgYykgdCkgOiAoYSwgYykgdCA9IFRcbmxldCBjb252ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgKGEgOiBhKSA6IGIgPSBhXG5cbm1vZHVsZSBMaWZ0IChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGEgYikgKFQgOiAoYSwgYikgdCkgOiAoYSBYLnQsIGIgWC50KSB0ID0gVFxuZW5kXG5cbm1vZHVsZSBMaWZ0MiAoWCA6IHNpZ1xuICAgIHR5cGUgKCdhMSwgJ2EyKSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGxldCBsaWZ0ICh0eXBlIGExIGIxIGEyIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdClcbiAgICA6ICgoYTEsIGEyKSBYLnQsIChiMSwgYjIpIFgudCkgdFxuICAgID1cbiAgICBUXG4gIDs7XG5lbmRcblxubW9kdWxlIExpZnQzIChYIDogc2lnXG4gICAgdHlwZSAoJ2ExLCAnYTIsICdhMykgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhMSBiMSBhMiBiMiBhMyBiMykgKFQgOiAoYTEsIGIxKSB0KSAoVCA6IChhMiwgYjIpIHQpIChUIDogKGEzLCBiMykgdClcbiAgICA6ICgoYTEsIGEyLCBhMykgWC50LCAoYjEsIGIyLCBiMykgWC50KSB0XG4gICAgPVxuICAgIFRcbiAgOztcbmVuZFxuXG5sZXQgZGV0dXBsZTIgKHR5cGUgYTEgYTIgYjEgYjIpIChUIDogKGExICogYTIsIGIxICogYjIpIHQpIDogKGExLCBiMSkgdCAqIChhMiwgYjIpIHQgPVxuICBULCBUXG47O1xuXG5sZXQgdHVwbGUyICh0eXBlIGExIGEyIGIxIGIyKSAoVCA6IChhMSwgYjEpIHQpIChUIDogKGEyLCBiMikgdCkgOiAoYTEgKiBhMiwgYjEgKiBiMikgdCA9IFRcblxubW9kdWxlIHR5cGUgSW5qZWN0aXZlID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBzdHJpcCA6ICgnYSB0LCAnYiB0KSBlcXVhbCAtPiAoJ2EsICdiKSBlcXVhbFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluamVjdGl2ZTIgPSBzaWdcbiAgdHlwZSAoJ2ExLCAnYTIpIHRcblxuICB2YWwgc3RyaXAgOiAoKCdhMSwgJ2EyKSB0LCAoJ2IxLCAnYjIpIHQpIGVxdWFsIC0+ICgnYTEsICdiMSkgZXF1YWwgKiAoJ2EyLCAnYjIpIGVxdWFsXG5lbmRcblxubW9kdWxlIENvbXBvc2l0aW9uX3ByZXNlcnZlc19pbmplY3Rpdml0eSAoTTEgOiBJbmplY3RpdmUpIChNMiA6IEluamVjdGl2ZSkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgTTEudCBNMi50XG5cbiAgbGV0IHN0cmlwIGUgPSBNMS5zdHJpcCAoTTIuc3RyaXAgZSlcbmVuZFxuXG5tb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVpZCA9IEludFxuXG4gIG1vZHVsZSBXaXRuZXNzID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgdHlwZSBfIHQgPSAuLlxuICAgICAgdHlwZSB0eXBlX3dpdG5lc3NfaW50ID0gWyBgdHlwZV93aXRuZXNzIG9mIGludCBdIFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgICBsZXQgc2V4cF9vZl90eXBlX3dpdG5lc3NfaW50ID1cbiAgICAgICAgKGZ1biAoYHR5cGVfd2l0bmVzcyB2X18wMDVfKSAtPlxuICAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJ0eXBlX3dpdG5lc3NcIjsgc2V4cF9vZl9pbnQgdl9fMDA1XyBdXG4gICAgICAgICAgIDogdHlwZV93aXRuZXNzX2ludCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICA7O1xuXG4gICAgICBbQEBAZW5kXVxuXG4gICAgICBsZXQgc2V4cF9vZl90IF9zZXhwX29mX2EgdCA9XG4gICAgICAgIGB0eXBlX3dpdG5lc3NcbiAgICAgICAgICAoQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIHQpKVxuICAgICAgICB8PiBzZXhwX29mX3R5cGVfd2l0bmVzc19pbnRcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgXyBLZXkudCArPSBLZXkgOiB0IEtleS50XG4gICAgZW5kXG5cbiAgICB0eXBlICdhIHQgPSAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIGxldCBzZXhwX29mX3QgKHR5cGUgYSkgc2V4cF9vZl9hIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gICAgICBNLktleSB8PiBLZXkuc2V4cF9vZl90IHNleHBfb2ZfYVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlICh0eXBlIHQpICgpID1cbiAgICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgICAgICB0eXBlIF8gS2V5LnQgKz0gS2V5IDogdCBLZXkudFxuICAgICAgZW5kXG4gICAgICBpblxuICAgICAgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgOztcblxuICAgIGxldCB1aWQgKHR5cGUgYSkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAgIENhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCAoQ2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBNLktleSlcbiAgICA7O1xuXG4gICAgKCogV2Ugd2FudCBhIGNvbnN0YW50IGFsbG9jYXRlZCBvbmNlIHRoYXQgW3NhbWVdIGNhbiByZXR1cm4gd2hlbmV2ZXIgaXQgZ2V0cyB0aGUgc2FtZVxuICAgICAgIHdpdG5lc3Nlcy4gIElmIHdlIHdyaXRlIHRoZSBjb25zdGFudCBpbnNpZGUgdGhlIGJvZHkgb2YgW3NhbWVdLCB0aGUgbmF0aXZlLWNvZGVcbiAgICAgICBjb21waWxlciB3aWxsIGRvIHRoZSByaWdodCB0aGluZyBhbmQgbGlmdCBpdCBvdXQuICBCdXQgZm9yIGNsYXJpdHkgYW5kIHJvYnVzdG5lc3MsXG4gICAgICAgd2UgZG8gaXQgb3Vyc2VsdmVzLiAqKVxuICAgIGxldCBzb21lX3QgPSBTb21lIFRcblxuICAgIGxldCBzYW1lICh0eXBlIGEgYikgKGEgOiBhIHQpIChiIDogYiB0KSA6IChhLCBiKSBlcXVhbCBvcHRpb24gPVxuICAgICAgbGV0IG1vZHVsZSBBID0gKHZhbCBhIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEIgPSAodmFsIGIgOiBTIHdpdGggdHlwZSB0ID0gYikgaW5cbiAgICAgIG1hdGNoIEEuS2V5IHdpdGhcbiAgICAgIHwgQi5LZXkgLT4gc29tZV90XG4gICAgICB8IF8gLT4gTm9uZVxuICAgIDs7XG4gIGVuZFxuXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IHdpdG5lc3MgOiAnYSBXaXRuZXNzLnRcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICA7IHRvX3NleHAgOiAnYSAtPiBTZXhwLnRcbiAgICB9XG5cbiAgbGV0IHNleHBfb2ZfdCBfIHsgd2l0bmVzczsgbmFtZTsgdG9fc2V4cCB9IDogU2V4cC50ID1cbiAgICBpZiBhbV90ZXN0aW5nXG4gICAgdGhlbiBBdG9tIG5hbWVcbiAgICBlbHNlXG4gICAgICBMaXN0XG4gICAgICAgIFsgTGlzdCBbIEF0b20gXCJuYW1lXCI7IEF0b20gbmFtZSBdXG4gICAgICAgIDsgTGlzdCBbIEF0b20gXCJ3aXRuZXNzXCI7IHdpdG5lc3MgfD4gV2l0bmVzcy5zZXhwX29mX3QgdG9fc2V4cCBdXG4gICAgICAgIF1cbiAgOztcblxuICBsZXQgdG9fc2V4cCB0ID0gdC50b19zZXhwXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IGNyZWF0ZSB+bmFtZSB0b19zZXhwID0geyB3aXRuZXNzID0gV2l0bmVzcy5jcmVhdGUgKCk7IG5hbWU7IHRvX3NleHAgfVxuICBsZXQgdWlkIHQgPSBXaXRuZXNzLnVpZCB0LndpdG5lc3NcbiAgbGV0IGhhc2ggdCA9IHVpZCB0XG4gIGxldCBoYXNoX2ZvbGRfdCBzIHQgPSBoYXNoX2ZvbGRfaW50IHMgKHVpZCB0KVxuICBsZXQgc2FtZV93aXRuZXNzIHQxIHQyID0gV2l0bmVzcy5zYW1lIHQxLndpdG5lc3MgdDIud2l0bmVzc1xuICBsZXQgc2FtZSB0MSB0MiA9IE9wdGlvbi5pc19zb21lIChzYW1lX3dpdG5lc3MgdDEgdDIpXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gdDEgdDIgPVxuICAgIG1hdGNoIHNhbWVfd2l0bmVzcyB0MSB0MiB3aXRoXG4gICAgfCBTb21lIHcgLT4gd1xuICAgIHwgTm9uZSAtPlxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIGdvdCBkaWZmZXJlbnQgaWRzXCJcbiAgICAgICAgICAgWyAoIFwiXCJcbiAgICAgICAgICAgICAsIHNleHBfb2ZfcGFpciAoc2V4cF9vZl90IHNleHBfb2Zfb3BhcXVlKSAoc2V4cF9vZl90IHNleHBfb2Zfb3BhcXVlKSAodDEsIHQyKVxuICAgICAgICAgICAgIClcbiAgICAgICAgICAgXSlcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbigqKiBbJ2EgQ2hlYXBfb3B0aW9uLnRdIGlzIGxpa2UgWydhIG9wdGlvbl0sIGJ1dCBpdCBkb2Vzbid0IGJveCBbc29tZSBfXSB2YWx1ZXMuXG5cbiAgICBUaGVyZSBhcmUgc2V2ZXJhbCB0aGluZ3MgdGhhdCBhcmUgdW5zYWZlIGFib3V0IGl0OlxuXG4gICAgLSBbZmxvYXQgdCBhcnJheV0gKG9yIGFueSBhcnJheS1iYWNrZWQgY29udGFpbmVyKSBpcyBub3QgbWVtb3J5LXNhZmVcbiAgICAgIGJlY2F1c2UgZmxvYXQgYXJyYXkgb3B0aW1pemF0aW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIHVuYm94ZWQgb3B0aW9uXG4gICAgICBvcHRpbWl6YXRpb24uIFlvdSBoYXZlIHRvIHVzZSBbVW5pZm9ybV9hcnJheS50XSBpbnN0ZWFkIG9mIFthcnJheV0uXG5cbiAgICAtIE5lc3RlZCBvcHRpb25zIChbJ2EgdCB0XSkgZG9uJ3Qgd29yay4gVGhleSBhcmUgYmVsaWV2ZWQgdG8gYmVcbiAgICAgIG1lbW9yeS1zYWZlLCBidXQgbm90IHBhcmFtZXRyaWMuXG5cbiAgICAtIEEgcmVjb3JkIHdpdGggW2Zsb2F0IHRdcyBpbiBpdCBzaG91bGQgYmUgc2FmZSwgYnV0IGl0J3Mgb25seSBbdF0gYmVpbmdcbiAgICAgIGFic3RyYWN0IHRoYXQgZ2l2ZXMgeW91IHNhZmV0eS4gSWYgdGhlIGNvbXBpbGVyIHdhcyBzbWFydCBlbm91Z2ggdG8gcGVla1xuICAgICAgdGhyb3VnaCB0aGUgbW9kdWxlIHNpZ25hdHVyZSB0aGVuIGl0IGNvdWxkIGRlY2lkZSB0byBjb25zdHJ1Y3QgYSBmbG9hdFxuICAgICAgYXJyYXkgaW5zdGVhZC4gKilcbm1vZHVsZSBDaGVhcF9vcHRpb24gPSBzdHJ1Y3RcbiAgKCogVGhpcyBpcyB0YWtlbiBmcm9tIGNvcmUuIFJhdGhlciB0aGFuIGV4cG9zZSBpdCBpbiB0aGUgcHVibGljIGludGVyZmFjZSBvZiBiYXNlLCBqdXN0XG4gICAgIGtlZXAgYSBjb3B5IGFyb3VuZCBoZXJlLiAqKVxuICBsZXQgcGh5c19zYW1lICh0eXBlIGEgYikgKGEgOiBhKSAoYiA6IGIpID0gcGh5c19lcXVhbCBhIChDYW1sLk9iai5tYWdpYyBiIDogYSlcblxuICBtb2R1bGUgVDAgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBub25lIDogXyB0XG4gICAgdmFsIHNvbWUgOiAnYSAtPiAnYSB0XG4gICAgdmFsIGlzX25vbmUgOiBfIHQgLT4gYm9vbFxuICAgIHZhbCBpc19zb21lIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgdmFsdWVfZXhuIDogJ2EgdCAtPiAnYVxuICAgIHZhbCB2YWx1ZV91bnNhZmUgOiAnYSB0IC0+ICdhXG4gICAgdmFsIGl0ZXJfc29tZSA6ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICsnYSB0XG5cbiAgICAoKiBCZWluZyBhIHBvaW50ZXIsIG5vIG9uZSBvdXRzaWRlIHRoaXMgbW9kdWxlIGNhbiBjb25zdHJ1Y3QgYSB2YWx1ZSB0aGF0IGlzXG4gICAgICAgW3BoeXNfc2FtZV0gYXMgdGhpcyBvbmUuXG5cbiAgICAgICBJdCB3b3VsZCBiZSBzaW1wbGVyIHRvIHVzZSB0aGlzIHZhbHVlIGFzIFtub25lXSwgYnV0IHdlIHVzZSBhbiBpbW1lZGlhdGUgaW5zdGVhZFxuICAgICAgIGJlY2F1c2UgaXQgbGV0cyB1cyBhdm9pZCBjYW1sX21vZGlmeSB3aGVuIHNldHRpbmcgdG8gW25vbmVdLCBtYWtpbmcgY2VydGFpblxuICAgICAgIGJlbmNobWFya3Mgc2lnbmlmaWNhbnRseSBmYXN0ZXIgKGUuZy4gLi4vYmVuY2gvYXJyYXlfcXVldWUuZXhlKS5cblxuICAgICAgIHRoaXMgY29kZSBpcyBkdXBsaWNhdGVkIGluIE1vcHRpb24sIGFuZCBpZiB3ZSBmaW5kIHlldCBhbm90aGVyIHBsYWNlIHdoZXJlIHdlIHdhbnRcbiAgICAgICBpdCB3ZSBzaG91bGQgcmVjb25zaWRlciBtYWtpbmcgaXQgc2hhcmVkLiAqKVxuICAgIGxldCBub25lX3N1YnN0aXR1dGUgOiBfIHQgPSBDYW1sLk9iai5vYmogKENhbWwuT2JqLm5ld19ibG9jayBDYW1sLk9iai5hYnN0cmFjdF90YWcgMSlcblxuICAgIGxldCBub25lIDogXyB0ID1cbiAgICAgICgqIFRoZSBudW1iZXIgd2FzIHByb2R1Y2VkIGJ5XG4gICAgICAgICBbPCAvZGV2L3VyYW5kb20gdHIgLWMgLWQgJzEyMzQ1Njc4OTBhYmNkZWYnIHwgaGVhZCAtYyAxNl0uXG5cbiAgICAgICAgIFRoZSBpZGVhIGlzIHRoYXQgYSByYW5kb20gbnVtYmVyIHdpbGwgaGF2ZSBsb3dlciBwcm9iYWJpbGl0eSB0byBjb2xsaWRlIHdpdGhcbiAgICAgICAgIGFueXRoaW5nIHRoYW4gYW55IG51bWJlciB3ZSBjYW4gY2hvb3NlIG91cnNlbHZlcy5cblxuICAgICAgICAgV2UgYXJlIHVzaW5nIGEgcG9seW1vcnBoaWMgdmFyaWFudCBpbnN0ZWFkIG9mIGFuIGludGVnZXIgY29uc3RhbnQgYmVjYXVzZSB0aGVyZVxuICAgICAgICAgaXMgYSBjb21waWxlciBidWcgd2hlcmUgaXQgd3JvbmdseSBhc3N1bWVzIHRoYXQgdGhlIHJlc3VsdCBvZiBbaWYgXyB0aGVuIGMgZWxzZVxuICAgICAgICAgeV0gaXMgbm90IGEgcG9pbnRlciBpZiBbY10gaXMgYW4gaW50ZWdlciBjb21waWxlLXRpbWUgY29uc3RhbnQuICBUaGlzIGlzIGJlaW5nXG4gICAgICAgICBmaXhlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vb2NhbWwvb2NhbWwvcHVsbC81NTUuICBUaGUgXCJtZW1vcnkgY29ycnVwdGlvblwiIHRlc3RcbiAgICAgICAgIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgaXNzdWUuICAqKVxuICAgICAgQ2FtbC5PYmoubWFnaWMgYHg2ZThlZTM0NzhlMWQ3NDQ5XG4gICAgOztcblxuICAgIGxldCBpc19ub25lIHggPSBwaHlzX2VxdWFsIHggbm9uZVxuICAgIGxldCBpc19zb21lIHggPSBub3QgKHBoeXNfZXF1YWwgeCBub25lKVxuXG4gICAgbGV0IHNvbWUgKHR5cGUgYSkgKHggOiBhKSA6IGEgdCA9XG4gICAgICBpZiBwaHlzX3NhbWUgeCBub25lIHRoZW4gbm9uZV9zdWJzdGl0dXRlIGVsc2UgQ2FtbC5PYmoubWFnaWMgeFxuICAgIDs7XG5cbiAgICBsZXQgdmFsdWVfdW5zYWZlICh0eXBlIGEpICh4IDogYSB0KSA6IGEgPVxuICAgICAgaWYgcGh5c19lcXVhbCB4IG5vbmVfc3Vic3RpdHV0ZSB0aGVuIENhbWwuT2JqLm1hZ2ljIG5vbmUgZWxzZSBDYW1sLk9iai5tYWdpYyB4XG4gICAgOztcblxuICAgIGxldCB2YWx1ZV9leG4geCA9XG4gICAgICBpZiBpc19zb21lIHhcbiAgICAgIHRoZW4gdmFsdWVfdW5zYWZlIHhcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuOiB0aGUgZWxlbWVudCBpcyBbTm9uZV1cIlxuICAgIDs7XG5cbiAgICBsZXQgaXRlcl9zb21lIHQgfmYgPSBpZiBpc19zb21lIHQgdGhlbiBmICh2YWx1ZV91bnNhZmUgdClcbiAgZW5kXG5cbiAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuXG4gICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgfCBTb21lIHggLT4gc29tZSB4XG4gICAgOztcblxuICAgIGxldFtAaW5saW5lXSB0b19vcHRpb24geCA9IGlmIGlzX3NvbWUgeCB0aGVuIFNvbWUgKHZhbHVlX3Vuc2FmZSB4KSBlbHNlIE5vbmVcbiAgICBsZXQgdG9fc2V4cGFibGUgPSB0b19vcHRpb25cbiAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9vcHRpb25cblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICAgICAgPVxuICAgICAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoT3B0aW9uLnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBUMVxuICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMSAoT3B0aW9uKSAoVDEpXG5lbmRcblxudHlwZSAnYSB0ID0gJ2EgQ2hlYXBfb3B0aW9uLnQgVW5pZm9ybV9hcnJheS50IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gX29mX2FfXzAwMV8geF9fMDAzXyAtPlxuICBVbmlmb3JtX2FycmF5LnRfb2Zfc2V4cCAoQ2hlYXBfb3B0aW9uLnRfb2Zfc2V4cCBfb2ZfYV9fMDAxXykgeF9fMDAzX1xuOztcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDA0XyB4X18wMDVfIC0+XG4gIFVuaWZvcm1fYXJyYXkuc2V4cF9vZl90IChDaGVhcF9vcHRpb24uc2V4cF9vZl90IF9vZl9hX18wMDRfKSB4X18wMDVfXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICBVbmlmb3JtX2FycmF5LnRfc2V4cF9ncmFtbWFyIChDaGVhcF9vcHRpb24udF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hcilcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBlbXB0eSA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbmxldCBjcmVhdGUgfmxlbiA9IFVuaWZvcm1fYXJyYXkuY3JlYXRlIH5sZW4gQ2hlYXBfb3B0aW9uLm5vbmVcbmxldCBpbml0IG4gfmYgPSBVbmlmb3JtX2FycmF5LmluaXQgbiB+ZjooZnVuIGkgLT4gQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiAoZiBpKSlcbmxldCBpbml0X3NvbWUgbiB+ZiA9IFVuaWZvcm1fYXJyYXkuaW5pdCBuIH5mOihmdW4gaSAtPiBDaGVhcF9vcHRpb24uc29tZSAoZiBpKSlcbmxldCBsZW5ndGggPSBVbmlmb3JtX2FycmF5Lmxlbmd0aFxubGV0W0BpbmxpbmVdIGdldCB0IGkgPSBDaGVhcF9vcHRpb24udG9fb3B0aW9uIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgZ2V0X3NvbWVfZXhuIHQgaSA9IENoZWFwX29wdGlvbi52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQgaSlcbmxldCBpc19ub25lIHQgaSA9IENoZWFwX29wdGlvbi5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0IGkpXG5sZXQgaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS5nZXQgdCBpKVxubGV0IHNldCB0IGkgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHNldF9zb21lIHQgaSB4ID0gVW5pZm9ybV9hcnJheS5zZXQgdCBpIChDaGVhcF9vcHRpb24uc29tZSB4KVxubGV0IHNldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgaSBDaGVhcF9vcHRpb24ubm9uZVxubGV0IHN3YXAgdCBpIGogPSBVbmlmb3JtX2FycmF5LnN3YXAgdCBpIGpcbmxldCB1bnNhZmVfZ2V0IHQgaSA9IENoZWFwX29wdGlvbi50b19vcHRpb24gKFVuaWZvcm1fYXJyYXkudW5zYWZlX2dldCB0IGkpXG5sZXQgdW5zYWZlX2dldF9zb21lX2V4biB0IGkgPSBDaGVhcF9vcHRpb24udmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBpKVxuXG5sZXQgdW5zYWZlX2dldF9zb21lX2Fzc3VtaW5nX3NvbWUgdCBpID1cbiAgQ2hlYXBfb3B0aW9uLnZhbHVlX3Vuc2FmZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbjs7XG5cbmxldCB1bnNhZmVfaXNfc29tZSB0IGkgPSBDaGVhcF9vcHRpb24uaXNfc29tZSAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaSlcbmxldCB1bnNhZmVfc2V0IHQgaSB4ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgaSAoQ2hlYXBfb3B0aW9uLm9mX29wdGlvbiB4KVxubGV0IHVuc2FmZV9zZXRfc29tZSB0IGkgeCA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKENoZWFwX29wdGlvbi5zb21lIHgpXG5sZXQgdW5zYWZlX3NldF9ub25lIHQgaSA9IFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgQ2hlYXBfb3B0aW9uLm5vbmVcblxubGV0IGNsZWFyIHQgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgdW5zYWZlX3NldF9ub25lIHQgaVxuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgaW5wdXQgfmYgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGlucHV0IC0gMSBkb1xuICAgIGYgaSAodW5zYWZlX2dldCBpbnB1dCBpKVxuICBkb25lXG47O1xuXG5sZXQgaXRlciBpbnB1dCB+ZiA9IGl0ZXJpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIHggLT4gZiB4KVxuXG5sZXQgZm9sZGkgaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgaXRlcmkgaW5wdXQgfmY6KGZ1biBpIGVsZW0gLT4gYWNjIDo9IGYgaSAhYWNjIGVsZW0pO1xuICAhYWNjXG47O1xuXG5sZXQgZm9sZCBpbnB1dCB+aW5pdCB+ZiA9IGZvbGRpIGlucHV0IH5pbml0IH5mOihmdW4gKF8gOiBpbnQpIGFjYyB4IC0+IGYgYWNjIHgpXG5cbmluY2x1ZGUgSW5kZXhlZF9jb250YWluZXIuTWFrZV9nZW4gKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbHQgPSAnYSBvcHRpb25cblxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBmb2xkaSA9IGBDdXN0b20gZm9sZGlcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBpdGVyaSA9IGBDdXN0b20gaXRlcmlcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgZW5kKVxuXG5sZXQgbWFwaSBpbnB1dCB+ZiA9XG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbjoobGVuZ3RoIGlucHV0KSBpblxuICBpdGVyaSBpbnB1dCB+ZjooZnVuIGkgZWxlbSAtPiB1bnNhZmVfc2V0IG91dHB1dCBpIChmIGkgZWxlbSkpO1xuICBvdXRwdXRcbjs7XG5cbmxldCBtYXAgaW5wdXQgfmYgPSBtYXBpIGlucHV0IH5mOihmdW4gKF8gOiBpbnQpIGVsZW0gLT4gZiBlbGVtKVxuXG5sZXQgbWFwX3NvbWUgaW5wdXQgfmYgPVxuICBsZXQgbGVuID0gbGVuZ3RoIGlucHV0IGluXG4gIGxldCBvdXRwdXQgPSBjcmVhdGUgfmxlbiBpblxuICBsZXQgKCkgPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgb3B0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGlucHV0IGkgaW5cbiAgICAgIENoZWFwX29wdGlvbi5pdGVyX3NvbWUgb3B0IH5mOihmdW4geCAtPiB1bnNhZmVfc2V0X3NvbWUgb3V0cHV0IGkgKGYgeCkpXG4gICAgZG9uZVxuICBpblxuICBvdXRwdXRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcblxubGV0IG9mX2FycmF5X3NvbWUgYXJyYXkgPVxuICBpbml0X3NvbWUgKEFycmF5Lmxlbmd0aCBhcnJheSkgfmY6KGZ1biBpIC0+IEFycmF5LnVuc2FmZV9nZXQgYXJyYXkgaSlcbjs7XG5cbmxldCB0b19hcnJheSB0ID0gQXJyYXkuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxuaW5jbHVkZSBCbGl0Lk1ha2UxX2dlbmVyaWMgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGNyZWF0ZV9saWtlIH5sZW4gXyA9IGNyZWF0ZSB+bGVuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gVW5pZm9ybV9hcnJheS51bnNhZmVfYmxpdFxuICBlbmQpXG5cbmxldCBjb3B5ID0gVW5pZm9ybV9hcnJheS5jb3B5XG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBtb2R1bGUgVW5zYWZlX2NoZWFwX29wdGlvbiA9IENoZWFwX29wdGlvblxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgU3RhY2tfaW50ZlxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIFtEZXF1ZV0gaW4gdGhhdCBpdCB1c2VzIGFuIGFycmF5IG9mIFsnYV0gYW5kXG4gICBhIG11dGFibGUgW2ludF0gdG8gaW5kaWNhdGUgd2hhdCBpbiB0aGUgYXJyYXkgaXMgdXNlZC4gIFdlIGNob29zZSB0byBpbXBsZW1lbnQgW1N0YWNrXVxuICAgZGlyZWN0bHkgcmF0aGVyIHRoYW4gb24gdG9wIG9mIFtEZXF1ZV0gZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuICBFLmcuIGEgc2ltcGxlXG4gICBtaWNyb2JlbmNobWFyayBzaG93cyB0aGF0IHB1c2gvcG9wIGlzIGFib3V0IDIwJSBmYXN0ZXIuICopXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgbXV0YWJsZSBlbHRzIDogJ2EgT3B0aW9uX2FycmF5LnRcbiAgfVxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICBmdW4gX29mX2FfXzAwMV8geyBsZW5ndGggPSBsZW5ndGhfXzAwM187IGVsdHMgPSBlbHRzX18wMDVfIH0gLT5cbiAgbGV0IGJuZHNfXzAwMl8gPSBbXSBpblxuICBsZXQgYm5kc19fMDAyXyA9XG4gICAgbGV0IGFyZ19fMDA2XyA9IE9wdGlvbl9hcnJheS5zZXhwX29mX3QgX29mX2FfXzAwMV8gZWx0c19fMDA1XyBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImVsdHNcIjsgYXJnX18wMDZfIF0gOjogYm5kc19fMDAyX1xuICBpblxuICBsZXQgYm5kc19fMDAyXyA9XG4gICAgbGV0IGFyZ19fMDA0XyA9IHNleHBfb2ZfaW50IGxlbmd0aF9fMDAzXyBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAwNF8gXSA6OiBibmRzX18wMDJfXG4gIGluXG4gIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgc2V4cF9vZl90X2ludGVybmFsID0gc2V4cF9vZl90XG5sZXQgc2V4cF9vZl90ID0gYFJlYm91bmRfbGF0ZXJcbmxldCBfID0gc2V4cF9vZl90XG5sZXQgY2FwYWNpdHkgdCA9IE9wdGlvbl9hcnJheS5sZW5ndGggdC5lbHRzXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgKHsgbGVuZ3RoOyBlbHRzIH0gYXMgdCkgOiB1bml0ID1cbiAgdHJ5XG4gICAgYXNzZXJ0ICgwIDw9IGxlbmd0aCAmJiBsZW5ndGggPD0gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzKTtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIC0gMSBkb1xuICAgICAgaW52YXJpYW50X2EgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gZWx0cyBpKVxuICAgIGRvbmU7XG4gICAgKCogV2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IHVudXNlZCBlbGVtZW50cyBhcmUgdW5zZXQgdG8gYXZvaWQgYSBzcGFjZVxuICAgICAgIGxlYWsuICopXG4gICAgZm9yIGkgPSBsZW5ndGggdG8gT3B0aW9uX2FycmF5Lmxlbmd0aCBlbHRzIC0gMSBkb1xuICAgICAgYXNzZXJ0IChub3QgKE9wdGlvbl9hcnJheS5pc19zb21lIGVsdHMgaSkpXG4gICAgZG9uZVxuICB3aXRoXG4gIHwgZXhuIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJTdGFjay5pbnZhcmlhbnQgZmFpbGVkXCJcbiAgICAgICAgIFsgXCJleG5cIiwgZXhuIHw+IEV4bi5zZXhwX29mX3Q7IFwic3RhY2tcIiwgdCB8PiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9vcGFxdWUgXSlcbjs7XG5cbmxldCBjcmVhdGUgKHR5cGUgYSkgKCkgOiBhIHQgPSB7IGxlbmd0aCA9IDA7IGVsdHMgPSBPcHRpb25fYXJyYXkuZW1wdHkgfVxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFRoZSBvcmRlciBpbiB3aGljaCBlbGVtZW50cyBhcmUgdmlzaXRlZCBoYXMgYmVlbiBjaG9zZW4gc28gYXMgdG8gYmUgYmFja3dhcmRzXG4gICBjb21wYXRpYmxlIHdpdGggW0NhbWwuU3RhY2tdICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHIgPSByZWYgaW5pdCBpblxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAhciAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmVsdHMgaSlcbiAgZG9uZTtcbiAgIXJcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBmb3IgaSA9IHQubGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgIGYgKE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkpXG4gIGRvbmVcbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2xpc3QgKHR5cGUgYSkgKGwgOiBhIGxpc3QpID1cbiAgaWYgTGlzdC5pc19lbXB0eSBsXG4gIHRoZW4gY3JlYXRlICgpXG4gIGVsc2UgKFxuICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGVsdHMgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KDIgKiBsZW5ndGgpIGluXG4gICAgbGV0IHIgPSByZWYgbCBpblxuICAgIGZvciBpID0gbGVuZ3RoIC0gMSBkb3dudG8gMCBkb1xuICAgICAgbWF0Y2ggIXIgd2l0aFxuICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgYSA6OiBsIC0+XG4gICAgICAgIE9wdGlvbl9hcnJheS5zZXRfc29tZSBlbHRzIGkgYTtcbiAgICAgICAgciA6PSBsXG4gICAgZG9uZTtcbiAgICB7IGxlbmd0aDsgZWx0cyB9KVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IExpc3Quc2V4cF9vZl90IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxubGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKExpc3QudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwKVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCByZXNpemUgdCBzaXplID1cbiAgbGV0IGFyciA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpzaXplIGluXG4gIE9wdGlvbl9hcnJheS5ibGl0IH5zcmM6dC5lbHRzIH5kc3Q6YXJyIH5zcmNfcG9zOjAgfmRzdF9wb3M6MCB+bGVuOnQubGVuZ3RoO1xuICB0LmVsdHMgPC0gYXJyXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgbmV3X2NhcGFjaXR5ID1cbiAgbGV0IG5ld19jYXBhY2l0eSA9IG1heCBuZXdfY2FwYWNpdHkgKGxlbmd0aCB0KSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdCB0aGVuIHJlc2l6ZSB0IG5ld19jYXBhY2l0eVxuOztcblxubGV0IHB1c2ggdCBhID1cbiAgaWYgdC5sZW5ndGggPSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0cyB0aGVuIHJlc2l6ZSB0ICgyICogKHQubGVuZ3RoICsgMSkpO1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5lbHRzIHQubGVuZ3RoIGE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHBvcF9ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSB0Lmxlbmd0aCAtIDEgaW5cbiAgbGV0IHJlc3VsdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpO1xuICB0Lmxlbmd0aCA8LSBpO1xuICByZXN1bHRcbjs7XG5cbmxldCBwb3BfZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgXCJTdGFjay5wb3Agb2YgZW1wdHkgc3RhY2tcIlxubGV0IHBvcCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwb3Bfbm9uZW1wdHkgdClcbmxldCBwb3BfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gRXJyb3IucmFpc2UgcG9wX2Vycm9yIGVsc2UgcG9wX25vbmVtcHR5IHRcbmxldCB0b3Bfbm9uZW1wdHkgdCA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5lbHRzICh0Lmxlbmd0aCAtIDEpXG5sZXQgdG9wX2Vycm9yID0gRXJyb3Iub2Zfc3RyaW5nIFwiU3RhY2sudG9wIG9mIGVtcHR5IHN0YWNrXCJcbmxldCB0b3AgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAodG9wX25vbmVtcHR5IHQpXG5sZXQgdG9wX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIEVycm9yLnJhaXNlIHRvcF9lcnJvciBlbHNlIHRvcF9ub25lbXB0eSB0XG5sZXQgY29weSB7IGxlbmd0aDsgZWx0cyB9ID0geyBsZW5ndGg7IGVsdHMgPSBPcHRpb25fYXJyYXkuY29weSBlbHRzIH1cblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lmxlbmd0aCA+IDBcbiAgdGhlbiAoXG4gICAgZm9yIGkgPSAwIHRvIHQubGVuZ3RoIC0gMSBkb1xuICAgICAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuZWx0cyBpXG4gICAgZG9uZTtcbiAgICB0Lmxlbmd0aCA8LSAwKVxuOztcblxubGV0IHVudGlsX2VtcHR5IHQgZiA9XG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgaWYgdC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBmIChwb3Bfbm9uZW1wdHkgdCk7XG4gICAgICBsb29wICgpKVxuICBpblxuICBsb29wICgpXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBwdXNoIHQgeDtcbiAgdFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiBUaGlzIGlzIGxpZnRlZCBvdXQgb2YgW01dIGJlY2F1c2UgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uMF0gZXhwb3J0cyBbU3RyaW5nMF1cbiAgIGFzIFtTdHJpbmddLCB3aGljaCBkb2VzIG5vdCBleHBvcnQgYSBoYXNoIGZ1bmN0aW9uLiAqKVxubGV0IGhhc2hfb3ZlcnJpZGUgeyBDYW1sLkxleGluZy5wb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9ID1cbiAgU3RyaW5nLmhhc2ggcG9zX2ZuYW1lXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2xudW1cbiAgbHhvciBJbnQuaGFzaCBwb3NfYm9sXG4gIGx4b3IgSW50Lmhhc2ggcG9zX2NudW1cbjs7XG5cbm1vZHVsZSBNID0gc3RydWN0XG4gIGluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5cbiAgbGV0IGhhc2ggPSBoYXNoX292ZXJyaWRlXG5lbmRcblxuaW5jbHVkZSBNXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChNKVxuXG5sZXQgb2ZfcG9zIChwb3NfZm5hbWUsIHBvc19sbnVtLCBwb3NfY251bSwgXykgPVxuICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sID0gMCB9XG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZWdcbiAgICB8IFplcm9cbiAgICB8IFBvc1xuICAgIHwgTmFuXG4gIFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBzZXhwX2dyYW1tYXIsIGNvbXBhcmUsIGhhc2gsIGVudW1lcmF0ZV1cblxuICBsZXQgdF9vZl9zZXhwID1cbiAgICAobGV0IGVycm9yX3NvdXJjZV9fMDAzXyA9IFwic2lnbl9vcl9uYW4ubWwuVC50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmVnXCIgfCBcIk5lZ1wiKSAtPiBOZWdcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSAtPiBQb3NcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJuZWdcIiB8IFwiTmVnXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIDo6IF8pIGFzIHNleHBfXzAwNF8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDRfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwicG9zXCIgfCBcIlBvc1wiKSA6OiBfKSBhcyBzZXhwX18wMDRfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwM18gc2V4cF9fMDA0X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA0XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwNF9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDAzXyBzZXhwX18wMDJfXG4gICAgIHwgc2V4cF9fMDAyXyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgZXJyb3Jfc291cmNlX18wMDNfIHNleHBfXzAwMl9cbiAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgPVxuICAgIChmdW5jdGlvblxuICAgICAgfCBOZWcgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiTmVnXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgIHwgUG9zIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBvc1wiXG4gICAgICB8IE5hbiAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOYW5cIlxuICAgICAgICAgICAgICAgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIHsgdW50eXBlZCA9XG4gICAgICAgIFZhcmlhbnRcbiAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgICAgOyBjbGF1c2VzID1cbiAgICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJOZWdcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiWmVyb1wiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJQb3NcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiTmFuXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgIH1cbiAgOztcblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIChmdW4gaHN2IGFyZyAtPlxuICAgICAgIG1hdGNoIGFyZyB3aXRoXG4gICAgICAgfCBOZWcgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmZvbGRfaW50IGhzdiAwXG4gICAgICAgfCBaZXJvIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMVxuICAgICAgIHwgUG9zIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgMlxuICAgICAgIHwgTmFuIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5mb2xkX2ludCBoc3YgM1xuICAgICAgICAgICAgICAgIDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICA7O1xuXG4gIGxldCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyBhcmcgPVxuICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmdldF9oYXNoX3ZhbHVlXG4gICAgICAgIChsZXQgaHN2ID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmNyZWF0ZSAoKSBpblxuICAgICAgICAgaGFzaF9mb2xkX3QgaHN2IGFyZylcbiAgICBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBhbGwgPSAoWyBOZWc7IFplcm87IFBvczsgTmFuIF0gOiB0IGxpc3QpXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG4gIGxldCB0b19zdHJpbmcgdCA9IHN0cmluZ19vZl9zZXhwIChzZXhwX29mX3QgdClcbiAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLlNpZ25fb3JfbmFuXCJcbmVuZFxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gc3RydWN0XG4gIGxldCAoIDwgKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8ICkgeCB5XG4gIGxldCAoIDw9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPD0gKSB4IHlcbiAgbGV0ICggPD4gKSAoeCA6IFQudCkgeSA9IFBvbHkuKCA8PiApIHggeVxuICBsZXQgKCA9ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPSApIHggeVxuICBsZXQgKCA+ICkgKHggOiBULnQpIHkgPSBQb2x5LiggPiApIHggeVxuICBsZXQgKCA+PSApICh4IDogVC50KSB5ID0gUG9seS4oID49ICkgeCB5XG4gIGxldCBhc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmFzY2VuZGluZyB4IHlcbiAgbGV0IGRlc2NlbmRpbmcgKHggOiBULnQpIHkgPSBQb2x5LmRlc2NlbmRpbmcgeCB5XG4gIGxldCBjb21wYXJlICh4IDogVC50KSB5ID0gUG9seS5jb21wYXJlIHggeVxuICBsZXQgZXF1YWwgKHggOiBULnQpIHkgPSBQb2x5LmVxdWFsIHggeVxuICBsZXQgbWF4ICh4IDogVC50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IG1pbiAoeCA6IFQudCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlIChUKVxuXG4oKiBPcGVuIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9ucyBzbyB0aGV5IGRvIG5vdFxuICAgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpcyBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uXG4gICBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSB3aXRoaW4gdGhpcyBtb2R1bGUuICopXG5vcGVuISBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IG9mX3NpZ24gPSBmdW5jdGlvblxuICB8IFNpZ24uTmVnIC0+IE5lZ1xuICB8IFNpZ24uWmVybyAtPiBaZXJvXG4gIHwgU2lnbi5Qb3MgLT4gUG9zXG47O1xuXG5sZXQgdG9fc2lnbl9leG4gPSBmdW5jdGlvblxuICB8IE5lZyAtPiBTaWduLk5lZ1xuICB8IFplcm8gLT4gU2lnbi5aZXJvXG4gIHwgUG9zIC0+IFNpZ24uUG9zXG4gIHwgTmFuIC0+IGludmFsaWRfYXJnIFwiQmFzZS5TaWduX29yX25hbi50b19zaWduX2V4bjogTmFuXCJcbjs7XG5cbmxldCBvZl9pbnQgbiA9IG9mX3NpZ24gKFNpZ24ub2ZfaW50IG4pXG5sZXQgdG9faW50X2V4biB0ID0gU2lnbi50b19pbnQgKHRvX3NpZ25fZXhuIHQpXG5cbmxldCBmbGlwID0gZnVuY3Rpb25cbiAgfCBOZWcgLT4gUG9zXG4gIHwgWmVybyAtPiBaZXJvXG4gIHwgUG9zIC0+IE5lZ1xuICB8IE5hbiAtPiBOYW5cbjs7XG5cbmxldCAoICogKSB0IHQnID1cbiAgbWF0Y2ggdCwgdCcgd2l0aFxuICB8IE5hbiwgXyB8IF8sIE5hbiAtPiBOYW5cbiAgfCBfIC0+IG9mX3NpZ24gKFNpZ24uKCAqICkgKHRvX3NpZ25fZXhuIHQpICh0b19zaWduX2V4biB0JykpXG47O1xuXG4oKiBJbmNsdWRlIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyIGFueSBmdW5jdG9yIGFwcGxpY2F0aW9ucyB0aGF0XG4gICBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcbltAQGRlcml2aW5nX2lubGluZSBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxubGV0IGFsbCA6ICdhLiAnYSBsaXN0IC0+ICdhIHQgbGlzdCA9XG4gIGZ1biBfYWxsX29mX2EgLT5cbiAgUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5hcHBlbmRcbiAgICAobGV0IHJlYyBtYXAgbCBhY2MgPVxuICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgIHwgW10gLT4gUHB4X2VudW1lcmF0ZV9saWIuTGlzdC5yZXYgYWNjXG4gICAgICAgfCBlbnVtZXJhdGVfXzAwMV8gOjogbCAtPiBtYXAgbCAoSW5jbCBlbnVtZXJhdGVfXzAwMV8gOjogYWNjKVxuICAgICBpblxuICAgICBtYXAgX2FsbF9vZl9hIFtdKVxuICAgIChQcHhfZW51bWVyYXRlX2xpYi5MaXN0LmFwcGVuZFxuICAgICAgIChsZXQgcmVjIG1hcCBsIGFjYyA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBQcHhfZW51bWVyYXRlX2xpYi5MaXN0LnJldiBhY2NcbiAgICAgICAgICB8IGVudW1lcmF0ZV9fMDAyXyA6OiBsIC0+IG1hcCBsIChFeGNsIGVudW1lcmF0ZV9fMDAyXyA6OiBhY2MpXG4gICAgICAgIGluXG4gICAgICAgIG1hcCBfYWxsX29mX2EgW10pXG4gICAgICAgWyBVbmJvdW5kZWQgXSlcbjs7XG5cbmxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPVxuICBmdW4gKHR5cGUgYV9fMDE4XykgOiAoKFNleHBsaWIwLlNleHAudCAtPiBhX18wMThfKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gYV9fMDE4XyB0KSAtPlxuICBsZXQgZXJyb3Jfc291cmNlX18wMDZfID0gXCJtYXliZV9ib3VuZC5tbC50XCIgaW5cbiAgZnVuIF9vZl9hX18wMDNfIC0+IGZ1bmN0aW9uXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAgKFNleHBsaWIwLlNleHAuQXRvbSAoKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIF90YWdfXzAwOV8pIDo6IHNleHBfYXJnc19fMDEwXykgYXNcbiAgICAgIF9zZXhwX18wMDhfIC0+XG4gICAgICAobWF0Y2ggc2V4cF9hcmdzX18wMTBfIHdpdGhcbiAgICAgICB8IFsgYXJnMF9fMDExXyBdIC0+XG4gICAgICAgICBsZXQgcmVzMF9fMDEyXyA9IF9vZl9hX18wMDNfIGFyZzBfXzAxMV8gaW5cbiAgICAgICAgIEluY2wgcmVzMF9fMDEyX1xuICAgICAgIHwgXyAtPlxuICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAwNl9cbiAgICAgICAgICAgX3RhZ19fMDA5X1xuICAgICAgICAgICBfc2V4cF9fMDA4XylcbiAgICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tICgoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgX3RhZ19fMDE0XykgOjogc2V4cF9hcmdzX18wMTVfKSBhc1xuICAgICAgX3NleHBfXzAxM18gLT5cbiAgICAgIChtYXRjaCBzZXhwX2FyZ3NfXzAxNV8gd2l0aFxuICAgICAgIHwgWyBhcmcwX18wMTZfIF0gLT5cbiAgICAgICAgIGxldCByZXMwX18wMTdfID0gX29mX2FfXzAwM18gYXJnMF9fMDE2XyBpblxuICAgICAgICAgRXhjbCByZXMwX18wMTdfXG4gICAgICAgfCBfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDA2X1xuICAgICAgICAgICBfdGFnX18wMTRfXG4gICAgICAgICAgIF9zZXhwX18wMTNfKVxuICAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcInVuYm91bmRlZFwiIHwgXCJVbmJvdW5kZWRcIikgLT4gVW5ib3VuZGVkXG4gICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5jbFwiIHwgXCJJbmNsXCIpIGFzIHNleHBfXzAwN18gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJleGNsXCIgfCBcIkV4Y2xcIikgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwidW5ib3VuZGVkXCIgfCBcIlVuYm91bmRlZFwiKSA6OiBfKSBhc1xuICAgICAgc2V4cF9fMDA3XyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IFtdIGFzIHNleHBfXzAwNV8gLT5cbiAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG4gICAgfCBzZXhwX18wMDVfIC0+XG4gICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDVfXG47O1xuXG5sZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgZnVuICh0eXBlIGFfXzAyNF8pIDogKChhX18wMjRfIC0+IFNleHBsaWIwLlNleHAudCkgLT4gYV9fMDI0XyB0IC0+IFNleHBsaWIwLlNleHAudCkgLT5cbiAgZnVuIF9vZl9hX18wMTlfIC0+IGZ1bmN0aW9uXG4gICAgfCBJbmNsIGFyZzBfXzAyMF8gLT5cbiAgICAgIGxldCByZXMwX18wMjFfID0gX29mX2FfXzAxOV8gYXJnMF9fMDIwXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiSW5jbFwiOyByZXMwX18wMjFfIF1cbiAgICB8IEV4Y2wgYXJnMF9fMDIyXyAtPlxuICAgICAgbGV0IHJlczBfXzAyM18gPSBfb2ZfYV9fMDE5XyBhcmcwX18wMjJfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJFeGNsXCI7IHJlczBfXzAyM18gXVxuICAgIHwgVW5ib3VuZGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuYm91bmRlZFwiXG47O1xuXG5sZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPlxuICB7IHVudHlwZWQgPVxuICAgICAgVmFyaWFudFxuICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX3NlbnNpdGl2ZV9leGNlcHRfZmlyc3RfY2hhcmFjdGVyXG4gICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiSW5jbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiRXhjbFwiXG4gICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKF8nYV9zZXhwX2dyYW1tYXIudW50eXBlZCwgRW1wdHkpIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlVuYm91bmRlZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfVxuICB9XG47O1xuXG5bQEBAZW5kXVxuXG50eXBlIGludGVydmFsX2NvbXBhcmlzb24gPVxuICB8IEJlbG93X2xvd2VyX2JvdW5kXG4gIHwgSW5fcmFuZ2VcbiAgfCBBYm92ZV91cHBlcl9ib3VuZFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaF1cblxubGV0IGludGVydmFsX2NvbXBhcmlzb25fb2Zfc2V4cCA9XG4gIChsZXQgZXJyb3Jfc291cmNlX18wMjdfID0gXCJtYXliZV9ib3VuZC5tbC5pbnRlcnZhbF9jb21wYXJpc29uXCIgaW5cbiAgIGZ1bmN0aW9uXG4gICB8IFNleHBsaWIwLlNleHAuQXRvbSAoXCJiZWxvd19sb3dlcl9ib3VuZFwiIHwgXCJCZWxvd19sb3dlcl9ib3VuZFwiKSAtPiBCZWxvd19sb3dlcl9ib3VuZFxuICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5fcmFuZ2VcIiB8IFwiSW5fcmFuZ2VcIikgLT4gSW5fcmFuZ2VcbiAgIHwgU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIC0+IEFib3ZlX3VwcGVyX2JvdW5kXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgIChTZXhwbGliMC5TZXhwLkF0b20gKFwiYmVsb3dfbG93ZXJfYm91bmRcIiB8IFwiQmVsb3dfbG93ZXJfYm91bmRcIikgOjogXykgYXMgc2V4cF9fMDI4X1xuICAgICAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjhfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImluX3JhbmdlXCIgfCBcIkluX3JhbmdlXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3RcbiAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIChcImFib3ZlX3VwcGVyX2JvdW5kXCIgfCBcIkFib3ZlX3VwcGVyX2JvdW5kXCIpIDo6IF8pIGFzIHNleHBfXzAyOF9cbiAgICAgLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI4X1xuICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuTGlzdCBfIDo6IF8pIGFzIHNleHBfXzAyNl8gLT5cbiAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5lc3RlZF9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMjZfIC0+XG4gICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5lbXB0eV9saXN0X2ludmFsaWRfc3VtIGVycm9yX3NvdXJjZV9fMDI3XyBzZXhwX18wMjZfXG4gICB8IHNleHBfXzAyNl8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAyN18gc2V4cF9fMDI2X1xuICAgICAgICAgICAgICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IGludGVydmFsX2NvbXBhcmlzb24pXG47O1xuXG5sZXQgc2V4cF9vZl9pbnRlcnZhbF9jb21wYXJpc29uID1cbiAgKGZ1bmN0aW9uXG4gICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJCZWxvd19sb3dlcl9ib3VuZFwiXG4gICAgfCBJbl9yYW5nZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJJbl9yYW5nZVwiXG4gICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJBYm92ZV91cHBlcl9ib3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludGVydmFsX2NvbXBhcmlzb24gLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxubGV0IChpbnRlcnZhbF9jb21wYXJpc29uX3NleHBfZ3JhbW1hciA6IGludGVydmFsX2NvbXBhcmlzb24gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID1cbiAgeyB1bnR5cGVkID1cbiAgICAgIFZhcmlhbnRcbiAgICAgICAgeyBjYXNlX3NlbnNpdGl2aXR5ID0gQ2FzZV9zZW5zaXRpdmVfZXhjZXB0X2ZpcnN0X2NoYXJhY3RlclxuICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgWyBOb190YWcgeyBuYW1lID0gXCJCZWxvd19sb3dlcl9ib3VuZFwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiSW5fcmFuZ2VcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIkFib3ZlX3VwcGVyX2JvdW5kXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9XG4gIH1cbjs7XG5cbmxldCBjb21wYXJlX2ludGVydmFsX2NvbXBhcmlzb24gPVxuICAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmVcbiAgIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IGludClcbjs7XG5cbmxldCAoaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gOlxuICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgPVxuICAoZnVuIGhzdiBhcmcgLT5cbiAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgfCBCZWxvd19sb3dlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDBcbiAgICAgfCBJbl9yYW5nZSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDFcbiAgICAgfCBBYm92ZV91cHBlcl9ib3VuZCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guZm9sZF9pbnQgaHN2IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnRlcnZhbF9jb21wYXJpc29uIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbjs7XG5cbmxldCAoaGFzaF9pbnRlcnZhbF9jb21wYXJpc29uIDogaW50ZXJ2YWxfY29tcGFyaXNvbiAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICBsZXQgZnVuYyBhcmcgPVxuICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5nZXRfaGFzaF92YWx1ZVxuICAgICAgKGxldCBoc3YgPSBQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpIGluXG4gICAgICAgaGFzaF9mb2xkX2ludGVydmFsX2NvbXBhcmlzb24gaHN2IGFyZylcbiAgaW5cbiAgZnVuIHggLT4gZnVuYyB4XG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgbWFwIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBJbmNsIGluY2wgLT4gSW5jbCAoZiBpbmNsKVxuICB8IEV4Y2wgZXhjbCAtPiBFeGNsIChmIGV4Y2wpXG4gIHwgVW5ib3VuZGVkIC0+IFVuYm91bmRlZFxuOztcblxubGV0IGlzX2xvd2VyX2JvdW5kIHQgfm9mXzphIH5jb21wYXJlID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgSW5jbCBpbmNsIC0+IGNvbXBhcmUgaW5jbCBhIDw9IDBcbiAgfCBFeGNsIGV4Y2wgLT4gY29tcGFyZSBleGNsIGEgPCAwXG4gIHwgVW5ib3VuZGVkIC0+IHRydWVcbjs7XG5cbmxldCBpc191cHBlcl9ib3VuZCB0IH5vZl86YSB+Y29tcGFyZSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEluY2wgaW5jbCAtPiBjb21wYXJlIGEgaW5jbCA8PSAwXG4gIHwgRXhjbCBleGNsIC0+IGNvbXBhcmUgYSBleGNsIDwgMFxuICB8IFVuYm91bmRlZCAtPiB0cnVlXG47O1xuXG5sZXQgYm91bmRzX2Nyb3NzZWQgfmxvd2VyIH51cHBlciB+Y29tcGFyZSA9XG4gIG1hdGNoIGxvd2VyIHdpdGhcbiAgfCBVbmJvdW5kZWQgLT4gZmFsc2VcbiAgfCBJbmNsIGxvd2VyIHwgRXhjbCBsb3dlciAtPlxuICAgIChtYXRjaCB1cHBlciB3aXRoXG4gICAgIHwgVW5ib3VuZGVkIC0+IGZhbHNlXG4gICAgIHwgSW5jbCB1cHBlciB8IEV4Y2wgdXBwZXIgLT4gY29tcGFyZSBsb3dlciB1cHBlciA+IDApXG47O1xuXG5sZXQgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmUgPVxuICBpZiBib3VuZHNfY3Jvc3NlZCB+bG93ZXIgfnVwcGVyIH5jb21wYXJlXG4gIHRoZW4gZmFpbHdpdGggXCJNYXliZV9ib3VuZC5jb21wYXJlX3RvX2ludGVydmFsX2V4bjogbG93ZXIgYm91bmQgPiB1cHBlciBib3VuZFwiXG47O1xuXG5sZXQgY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciBhIH5jb21wYXJlID1cbiAgY2hlY2tfaW50ZXJ2YWxfZXhuIH5sb3dlciB+dXBwZXIgfmNvbXBhcmU7XG4gIGlmIG5vdCAoaXNfbG93ZXJfYm91bmQgbG93ZXIgfm9mXzphIH5jb21wYXJlKVxuICB0aGVuIEJlbG93X2xvd2VyX2JvdW5kXG4gIGVsc2UgaWYgbm90IChpc191cHBlcl9ib3VuZCB1cHBlciB+b2ZfOmEgfmNvbXBhcmUpXG4gIHRoZW4gQWJvdmVfdXBwZXJfYm91bmRcbiAgZWxzZSBJbl9yYW5nZVxuOztcblxubGV0IGludGVydmFsX2NvbnRhaW5zX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgPVxuICBtYXRjaCBjb21wYXJlX3RvX2ludGVydmFsX2V4biB+bG93ZXIgfnVwcGVyIGEgfmNvbXBhcmUgd2l0aFxuICB8IEluX3JhbmdlIC0+IHRydWVcbiAgfCBCZWxvd19sb3dlcl9ib3VuZCB8IEFib3ZlX3VwcGVyX2JvdW5kIC0+IGZhbHNlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUXG5cbm1vZHVsZSBPcl9kdXBsaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYER1cGxpY2F0ZVxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPVxuICAgIGZ1biBfY21wX19hIGFfXzAwMV8gYl9fMDAyXyAtPlxuICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAwMV8gYl9fMDAyX1xuICAgIHRoZW4gMFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggYV9fMDAxXywgYl9fMDAyXyB3aXRoXG4gICAgICB8IGBPayBfbGVmdF9fMDAzXywgYE9rIF9yaWdodF9fMDA0XyAtPiBfY21wX19hIF9sZWZ0X18wMDNfIF9yaWdodF9fMDA0X1xuICAgICAgfCBgRHVwbGljYXRlLCBgRHVwbGljYXRlIC0+IDBcbiAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSB4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA1XyBiX18wMDZfIC0+XG4gICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMDVfIGJfXzAwNl9cbiAgICAgIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFfXzAwNV8sIGJfXzAwNl8gd2l0aFxuICAgICAgICB8IGBPayBfbGVmdF9fMDA3XywgYE9rIF9yaWdodF9fMDA4XyAtPiBfY21wX19hIF9sZWZ0X18wMDdfIF9yaWdodF9fMDA4X1xuICAgICAgICB8IGBEdXBsaWNhdGUsIGBEdXBsaWNhdGUgLT4gdHJ1ZVxuICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIHggeSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBmdW4gX29mX2FfXzAwOV8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYE9rIHZfXzAxMF8gLT4gU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2tcIjsgX29mX2FfXzAwOV8gdl9fMDEwXyBdXG4gICAgICB8IGBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRHVwbGljYXRlXCJcbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSBXaXRob3V0X2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAnelxuZW5kXG5cbm1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSBjb21wYXJhdG9yOigna2V5LCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ3pcbmVuZFxuXG5tb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2tleSwgJ2NtcCwgJ3opIHQgPSAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnelxuZW5kXG5cbm1vZHVsZSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50ID0gc3RydWN0XG4gIHR5cGUgKCdrLCAndikgdCA9ICdrICogWyBgTGVmdCBvZiAndiB8IGBSaWdodCBvZiAndiB8IGBVbmVxdWFsIG9mICd2ICogJ3YgXVxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA6XG4gICAgJ2sgJ3YuICgnayAtPiAnayAtPiBpbnQpIC0+ICgndiAtPiAndiAtPiBpbnQpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBpbnRcbiAgICA9XG4gICAgZnVuIF9jbXBfX2sgX2NtcF9fdiBhX18wMTFfIGJfXzAxMl8gLT5cbiAgICBsZXQgdF9fMDEzXywgdF9fMDE0XyA9IGFfXzAxMV8gaW5cbiAgICBsZXQgdF9fMDE1XywgdF9fMDE2XyA9IGJfXzAxMl8gaW5cbiAgICBtYXRjaCBfY21wX19rIHRfXzAxM18gdF9fMDE1XyB3aXRoXG4gICAgfCAwIC0+XG4gICAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCB0X18wMTRfIHRfXzAxNl9cbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHRfXzAxNF8sIHRfXzAxNl8gd2l0aFxuICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wMTdfLCBgTGVmdCBfcmlnaHRfXzAxOF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE3XyBfcmlnaHRfXzAxOF9cbiAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzAxOV8sIGBSaWdodCBfcmlnaHRfXzAyMF8gLT4gX2NtcF9fdiBfbGVmdF9fMDE5XyBfcmlnaHRfXzAyMF9cbiAgICAgICAgfCBgVW5lcXVhbCBfbGVmdF9fMDIxXywgYFVuZXF1YWwgX3JpZ2h0X18wMjJfIC0+XG4gICAgICAgICAgbGV0IHRfXzAyM18sIHRfXzAyNF8gPSBfbGVmdF9fMDIxXyBpblxuICAgICAgICAgIGxldCB0X18wMjVfLCB0X18wMjZfID0gX3JpZ2h0X18wMjJfIGluXG4gICAgICAgICAgKG1hdGNoIF9jbXBfX3YgdF9fMDIzXyB0X18wMjVfIHdpdGhcbiAgICAgICAgICAgfCAwIC0+IF9jbXBfX3YgdF9fMDI0XyB0X18wMjZfXG4gICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICB8IHgsIHkgLT4gUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2NvbXBhcmUgeCB5KVxuICAgIHwgbiAtPiBuXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnayAndi5cbiAgICAoJ2sgLT4gJ2sgLT4gYm9vbCkgLT4gKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YpIHQgLT4gKCdrLCAndikgdCAtPiBib29sXG4gICAgPVxuICAgIGZ1biBfY21wX19rIF9jbXBfX3YgYV9fMDI3XyBiX18wMjhfIC0+XG4gICAgICBsZXQgdF9fMDI5XywgdF9fMDMwXyA9IGFfXzAyN18gaW5cbiAgICAgIGxldCB0X18wMzFfLCB0X18wMzJfID0gYl9fMDI4XyBpblxuICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAoX2NtcF9fayB0X18wMjlfIHRfXzAzMV8pXG4gICAgICAgIChpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCB0X18wMzBfIHRfXzAzMl9cbiAgICAgICAgIHRoZW4gdHJ1ZVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIG1hdGNoIHRfXzAzMF8sIHRfXzAzMl8gd2l0aFxuICAgICAgICAgICB8IGBMZWZ0IF9sZWZ0X18wMzNfLCBgTGVmdCBfcmlnaHRfXzAzNF8gLT4gX2NtcF9fdiBfbGVmdF9fMDMzXyBfcmlnaHRfXzAzNF9cbiAgICAgICAgICAgfCBgUmlnaHQgX2xlZnRfXzAzNV8sIGBSaWdodCBfcmlnaHRfXzAzNl8gLT4gX2NtcF9fdiBfbGVmdF9fMDM1XyBfcmlnaHRfXzAzNl9cbiAgICAgICAgICAgfCBgVW5lcXVhbCBfbGVmdF9fMDM3XywgYFVuZXF1YWwgX3JpZ2h0X18wMzhfIC0+XG4gICAgICAgICAgICAgbGV0IHRfXzAzOV8sIHRfXzA0MF8gPSBfbGVmdF9fMDM3XyBpblxuICAgICAgICAgICAgIGxldCB0X18wNDFfLCB0X18wNDJfID0gX3JpZ2h0X18wMzhfIGluXG4gICAgICAgICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKSAoX2NtcF9fdiB0X18wMzlfIHRfXzA0MV8pIChfY21wX192IHRfXzA0MF8gdF9fMDQyXylcbiAgICAgICAgICAgfCB4LCB5IC0+IFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19lcXVhbCB4IHkpKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgOlxuICAgICdrICd2LlxuICAgIChTZXhwbGliMC5TZXhwLnQgLT4gJ2spXG4gICAgLT4gKFNleHBsaWIwLlNleHAudCAtPiAndilcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgPVxuICAgIGxldCBlcnJvcl9zb3VyY2VfXzA1N18gPSBcIm1hcF9pbnRmLm1sLlN5bW1ldHJpY19kaWZmX2VsZW1lbnQudFwiIGluXG4gICAgZnVuIF9vZl9rX18wNDNfIF9vZl92X18wNDRfIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzA2N187IGFyZzFfXzA2OF8gXSAtPlxuICAgICAgICBsZXQgcmVzMF9fMDY5XyA9IF9vZl9rX18wNDNfIGFyZzBfXzA2N19cbiAgICAgICAgYW5kIHJlczFfXzA3MF8gPVxuICAgICAgICAgIGxldCBzZXhwX18wNjZfID0gYXJnMV9fMDY4XyBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbWF0Y2ggc2V4cF9fMDY2XyB3aXRoXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuQXRvbSBhdG9tX18wNDdfIGFzIF9zZXhwX18wNDlfIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhdG9tX18wNDdfIHdpdGhcbiAgICAgICAgICAgICAgIHwgXCJMZWZ0XCIgLT5cbiAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBlcnJvcl9zb3VyY2VfXzA1N18gX3NleHBfXzA0OV9cbiAgICAgICAgICAgICAgIHwgXCJSaWdodFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IFwiVW5lcXVhbFwiIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX3Rha2VzX2FyZ3MgZXJyb3Jfc291cmNlX18wNTdfIF9zZXhwX18wNDlfXG4gICAgICAgICAgICAgICB8IF8gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLm5vX3ZhcmlhbnRfbWF0Y2ggKCkpXG4gICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIGF0b21fXzA0N18gOjogc2V4cF9hcmdzX18wNTBfKSBhc1xuICAgICAgICAgICAgICBfc2V4cF9fMDQ5XyAtPlxuICAgICAgICAgICAgICAobWF0Y2ggYXRvbV9fMDQ3XyB3aXRoXG4gICAgICAgICAgICAgICB8IFwiTGVmdFwiIGFzIF90YWdfXzA2M18gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDY0XyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNjVfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDY0XyBpblxuICAgICAgICAgICAgICAgICAgICBgTGVmdCByZXMwX18wNjVfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA2M19cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXCJSaWdodFwiIGFzIF90YWdfXzA2MF8gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDYxXyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNjJfID0gX29mX3ZfXzA0NF8gYXJnMF9fMDYxXyBpblxuICAgICAgICAgICAgICAgICAgICBgUmlnaHQgcmVzMF9fMDYyX1xuICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5wdGFnX2luY29ycmVjdF9uX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgICAgICAgICBfdGFnX18wNjBfXG4gICAgICAgICAgICAgICAgICAgICAgX3NleHBfXzA0OV8pXG4gICAgICAgICAgICAgICB8IFwiVW5lcXVhbFwiIGFzIF90YWdfXzA1MV8gLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHNleHBfYXJnc19fMDUwXyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFsgYXJnMF9fMDU4XyBdIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMwX18wNTlfID1cbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhcmcwX18wNThfIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbIGFyZzBfXzA1Ml87IGFyZzFfXzA1M18gXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlczBfXzA1NF8gPSBfb2Zfdl9fMDQ0XyBhcmcwX18wNTJfXG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgcmVzMV9fMDU1XyA9IF9vZl92X18wNDRfIGFyZzFfXzA1M18gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlczBfXzA1NF8sIHJlczFfXzA1NV9cbiAgICAgICAgICAgICAgICAgICAgICB8IHNleHBfXzA1Nl8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci50dXBsZV9vZl9zaXplX25fZXhwZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2V4cF9fMDU2X1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBgVW5lcXVhbCByZXMwX18wNTlfXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnB0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDU3X1xuICAgICAgICAgICAgICAgICAgICAgIF90YWdfXzA1MV9cbiAgICAgICAgICAgICAgICAgICAgICBfc2V4cF9fMDQ5XylcbiAgICAgICAgICAgICAgIHwgXyAtPiBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fdmFyaWFudF9tYXRjaCAoKSlcbiAgICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkxpc3QgXyA6OiBfKSBhcyBzZXhwX18wNDhfIC0+XG4gICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgc2V4cF9fMDQ4X1xuICAgICAgICAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgW10gYXMgc2V4cF9fMDQ4XyAtPlxuICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyXG4gICAgICAgICAgICAgICAgZXJyb3Jfc291cmNlX18wNTdfXG4gICAgICAgICAgICAgICAgc2V4cF9fMDQ4X1xuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNleHBsaWIwLlNleHBfY29udl9lcnJvci5Ob192YXJpYW50X21hdGNoIC0+XG4gICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iubm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZFxuICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzA1N19cbiAgICAgICAgICAgICAgc2V4cF9fMDY2X1xuICAgICAgICBpblxuICAgICAgICByZXMwX18wNjlfLCByZXMxX18wNzBfXG4gICAgICB8IHNleHBfXzA3MV8gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnR1cGxlX29mX3NpemVfbl9leHBlY3RlZCBlcnJvcl9zb3VyY2VfXzA1N18gMiBzZXhwX18wNzFfXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA6XG4gICAgJ2sgJ3YuXG4gICAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBTZXhwbGliMC5TZXhwLnRcbiAgICA9XG4gICAgZnVuIF9vZl9rX18wNzJfIF9vZl92X18wNzNfIChhcmcwX18wODFfLCBhcmcxX18wODJfKSAtPlxuICAgICAgbGV0IHJlczBfXzA4M18gPSBfb2Zfa19fMDcyXyBhcmcwX18wODFfXG4gICAgICBhbmQgcmVzMV9fMDg0XyA9XG4gICAgICAgIG1hdGNoIGFyZzFfXzA4Ml8gd2l0aFxuICAgICAgICB8IGBMZWZ0IHZfXzA3NF8gLT5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IF9vZl92X18wNzNfIHZfXzA3NF8gXVxuICAgICAgICB8IGBSaWdodCB2X18wNzVfIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUmlnaHRcIjsgX29mX3ZfXzA3M18gdl9fMDc1XyBdXG4gICAgICAgIHwgYFVuZXF1YWwgdl9fMDc2XyAtPlxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgIDsgKGxldCBhcmcwX18wNzdfLCBhcmcxX18wNzhfID0gdl9fMDc2XyBpblxuICAgICAgICAgICAgICAgbGV0IHJlczBfXzA3OV8gPSBfb2Zfdl9fMDczXyBhcmcwX18wNzdfXG4gICAgICAgICAgICAgICBhbmQgcmVzMV9fMDgwXyA9IF9vZl92X18wNzNfIGFyZzFfXzA3OF8gaW5cbiAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIHJlczBfXzA3OV87IHJlczFfXzA4MF8gXSlcbiAgICAgICAgICAgIF1cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyByZXMwX18wODNfOyByZXMxX18wODRfIF1cbiAgOztcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDpcbiAgICAgICAgICdrIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydrX3NleHBfZ3JhbW1hciBfJ3Zfc2V4cF9ncmFtbWFyIC0+XG4gICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgIExpc3RcbiAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAoIF8na19zZXhwX2dyYW1tYXIudW50eXBlZFxuICAgICAgICAgICAgICAgLCBDb25zXG4gICAgICAgICAgICAgICAgICAgKCBWYXJpYW50XG4gICAgICAgICAgICAgICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiTGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJSaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RfY2xhdXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBhcmdzID0gQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgTm9fdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBuYW1lID0gXCJVbmVxdWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgQ29ucyAoXyd2X3NleHBfZ3JhbW1hci51bnR5cGVkLCBFbXB0eSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIEVtcHR5IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgLCBFbXB0eSApICkpXG4gICAgICB9XG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgTWVyZ2VfZWxlbWVudCA9IHN0cnVjdFxuICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICBbIGBMZWZ0IG9mICdsZWZ0XG4gICAgfCBgUmlnaHQgb2YgJ3JpZ2h0XG4gICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgIF1cbiAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGludClcbiAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBpbnQpXG4gICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+IGludFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wODVfIGJfXzA4Nl8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wODVfIGJfXzA4Nl9cbiAgICB0aGVuIDBcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzA4NV8sIGJfXzA4Nl8gd2l0aFxuICAgICAgfCBgTGVmdCBfbGVmdF9fMDg3XywgYExlZnQgX3JpZ2h0X18wODhfIC0+IF9jbXBfX2xlZnQgX2xlZnRfXzA4N18gX3JpZ2h0X18wODhfXG4gICAgICB8IGBSaWdodCBfbGVmdF9fMDg5XywgYFJpZ2h0IF9yaWdodF9fMDkwXyAtPiBfY21wX19yaWdodCBfbGVmdF9fMDg5XyBfcmlnaHRfXzA5MF9cbiAgICAgIHwgYEJvdGggX2xlZnRfXzA5MV8sIGBCb3RoIF9yaWdodF9fMDkyXyAtPlxuICAgICAgICBsZXQgdF9fMDkzXywgdF9fMDk0XyA9IF9sZWZ0X18wOTFfIGluXG4gICAgICAgIGxldCB0X18wOTVfLCB0X18wOTZfID0gX3JpZ2h0X18wOTJfIGluXG4gICAgICAgIChtYXRjaCBfY21wX19sZWZ0IHRfXzA5M18gdF9fMDk1XyB3aXRoXG4gICAgICAgICB8IDAgLT4gX2NtcF9fcmlnaHQgdF9fMDk0XyB0X18wOTZfXG4gICAgICAgICB8IG4gLT4gbilcbiAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSB4IHkpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIDpcbiAgICAnbGVmdCAncmlnaHQuXG4gICAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gYm9vbClcbiAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gYm9vbFxuICAgID1cbiAgICBmdW4gX2NtcF9fbGVmdCBfY21wX19yaWdodCBhX18wOTdfIGJfXzA5OF8gLT5cbiAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzA5N18gYl9fMDk4X1xuICAgICAgdGhlbiB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYV9fMDk3XywgYl9fMDk4XyB3aXRoXG4gICAgICAgIHwgYExlZnQgX2xlZnRfXzA5OV8sIGBMZWZ0IF9yaWdodF9fMTAwXyAtPiBfY21wX19sZWZ0IF9sZWZ0X18wOTlfIF9yaWdodF9fMTAwX1xuICAgICAgICB8IGBSaWdodCBfbGVmdF9fMTAxXywgYFJpZ2h0IF9yaWdodF9fMTAyXyAtPiBfY21wX19yaWdodCBfbGVmdF9fMTAxXyBfcmlnaHRfXzEwMl9cbiAgICAgICAgfCBgQm90aCBfbGVmdF9fMTAzXywgYEJvdGggX3JpZ2h0X18xMDRfIC0+XG4gICAgICAgICAgbGV0IHRfXzEwNV8sIHRfXzEwNl8gPSBfbGVmdF9fMTAzXyBpblxuICAgICAgICAgIGxldCB0X18xMDdfLCB0X18xMDhfID0gX3JpZ2h0X18xMDRfIGluXG4gICAgICAgICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKSAoX2NtcF9fbGVmdCB0X18xMDVfIHRfXzEwN18pIChfY21wX19yaWdodCB0X18xMDZfIHRfXzEwOF8pXG4gICAgICAgIHwgeCwgeSAtPiBQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgeCB5KVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3QgOlxuICAgICdsZWZ0ICdyaWdodC5cbiAgICAoJ2xlZnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgncmlnaHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgLT4gU2V4cGxpYjAuU2V4cC50XG4gICAgPVxuICAgIGZ1biBfb2ZfbGVmdF9fMTA5XyBfb2ZfcmlnaHRfXzExMF8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgdl9fMTExXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJMZWZ0XCI7IF9vZl9sZWZ0X18xMDlfIHZfXzExMV8gXVxuICAgICAgfCBgUmlnaHQgdl9fMTEyXyAtPlxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJSaWdodFwiOyBfb2ZfcmlnaHRfXzExMF8gdl9fMTEyXyBdXG4gICAgICB8IGBCb3RoIHZfXzExM18gLT5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJCb3RoXCJcbiAgICAgICAgICA7IChsZXQgYXJnMF9fMTE0XywgYXJnMV9fMTE1XyA9IHZfXzExM18gaW5cbiAgICAgICAgICAgICBsZXQgcmVzMF9fMTE2XyA9IF9vZl9sZWZ0X18xMDlfIGFyZzBfXzExNF9cbiAgICAgICAgICAgICBhbmQgcmVzMV9fMTE3XyA9IF9vZl9yaWdodF9fMTEwXyBhcmcxX18xMTVfIGluXG4gICAgICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgcmVzMF9fMTE2XzsgcmVzMV9fMTE3XyBdKVxuICAgICAgICAgIF1cbiAgOztcblxuICBbQEBAZW5kXVxuZW5kXG5cbigqKiBAY2Fub25pY2FsIEJhc2UuTWFwLkNvbnRpbnVlX29yX3N0b3AgKilcbm1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBDb250aW51ZVxuICAgIHwgU3RvcFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZW51bWVyYXRlLCBlcXVhbCwgc2V4cF9vZl1cblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBDb250aW51ZTsgU3RvcCBdIDogdCBsaXN0KVxuICBsZXQgZXF1YWwgPSAoUHB4X2NvbXBhcmVfbGliLnBvbHltb3JwaGljX2VxdWFsIDogdCAtPiB0IC0+IGJvb2wpXG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IENvbnRpbnVlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkNvbnRpbnVlXCJcbiAgICAgIHwgU3RvcCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJTdG9wXCJcbiAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5NYXAuRmluaXNoZWRfb3JfdW5maW5pc2hlZCAqKVxubW9kdWxlIEZpbmlzaGVkX29yX3VuZmluaXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEZpbmlzaGVkXG4gICAgfCBVbmZpbmlzaGVkXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gIGxldCBjb21wYXJlID0gKFBweF9jb21wYXJlX2xpYi5wb2x5bW9ycGhpY19jb21wYXJlIDogdCAtPiB0IC0+IGludClcbiAgbGV0IGFsbCA9IChbIEZpbmlzaGVkOyBVbmZpbmlzaGVkIF0gOiB0IGxpc3QpXG4gIGxldCBlcXVhbCA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfZXF1YWwgOiB0IC0+IHQgLT4gYm9vbClcblxuICBsZXQgc2V4cF9vZl90ID1cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgRmluaXNoZWQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiRmluaXNoZWRcIlxuICAgICAgfCBVbmZpbmlzaGVkIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlVuZmluaXNoZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIDs7XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG4gIHR5cGUgJ2Ega2V5XG4gIHR5cGUgJ2NtcCBjbXBcbiAgdHlwZSAoJ2EsICdjbXAsICd6KSBvcHRpb25zXG5cbiAgdmFsIGludmFyaWFudHMgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcblxuICB2YWwgYWRkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYWRkX2V4blxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHNldFxuICAgIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayBrZXkgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGFkZF9tdWx0aVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiBrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gKCdrLCAndiBsaXN0LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCByZW1vdmVfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIGtleSAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmluZF9tdWx0aSA6ICgnaywgJ2NtcCwgKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+ICdrIGtleSAtPiAndiBsaXN0KSBvcHRpb25zXG5cbiAgdmFsIGNoYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+IGY6KCd2IG9wdGlvbiAtPiAndiBvcHRpb24pIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHVwZGF0ZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gJ2sga2V5IC0+IGY6KCd2IG9wdGlvbiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZmluZCA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3Ygb3B0aW9uKSBvcHRpb25zXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gJ3YpIG9wdGlvbnNcbiAgdmFsIHJlbW92ZSA6ICgnaywgJ2NtcCwgKCdrLCAndiwgJ2NtcCkgdCAtPiAnayBrZXkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgbWVtIDogKCdrLCAnY21wLCAoJ2ssIF8sICdjbXApIHQgLT4gJ2sga2V5IC0+IGJvb2wpIG9wdGlvbnNcbiAgdmFsIGl0ZXJfa2V5cyA6ICgnaywgXywgXykgdCAtPiBmOignayBrZXkgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAndiwgXykgdCAtPiBmOigndiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2ssICd2LCBfKSB0XG4gICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IENvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBGaW5pc2hlZF9vcl91bmZpbmlzaGVkLnRcblxuICB2YWwgaXRlcjJcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiB1bml0KVxuICAgICAgLT4gdW5pdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgdmFsIG1hcGkgOiAoJ2ssICd2MSwgJ2NtcCkgdCAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcbiAgdmFsIGZvbGQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2ssICd2LCBfKSB0IC0+IGluaXQ6J2EgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gIHZhbCBmb2xkMlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gaW5pdDonYVxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOigndjEsICd2MikgTWVyZ2VfZWxlbWVudC50IC0+ICdhIC0+ICdhKVxuICAgICAgLT4gJ2EgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9rZXlzXG4gICAgOiAoJ2ssICdjbXAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooJ2sga2V5IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyIDogKCdrLCAnY21wLCAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgZmlsdGVyaVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MiBvcHRpb24pIC0+ICgnaywgJ3YyLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2MSAtPiAndjIgb3B0aW9uKSAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBpXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndjEsICdjbXApIHRcbiAgICAgIC0+IGY6KGtleTonayBrZXkgLT4gZGF0YTondjEgLT4gKCd2MiwgJ3YzKSBFaXRoZXIudClcbiAgICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0ICogKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgICAgLT4gZjooJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdCAqICgnaywgJ3YzLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgY29tYmluZV9lcnJvcnNcbiAgICA6ICgnaywgJ2NtcCwgKCdrLCAndiBPcl9lcnJvci50LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogKCdrLCAnY21wLCAoJ3YgLT4gJ3YgLT4gaW50KSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gaW50KSBvcHRpb25zXG5cbiAgdmFsIGVxdWFsXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCd2IC0+ICd2IC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHQgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiBib29sIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBrZXlzIDogKCdrLCBfLCBfKSB0IC0+ICdrIGtleSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICd2LCBfKSB0IC0+ICd2IGxpc3RcblxuICB2YWwgdG9fYWxpc3RcbiAgICA6ICA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+ICgnayBrZXkgKiAndikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YxLCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgICAgLT4gZjooa2V5OidrIGtleSAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgICAgLT4gKCdrLCAndjMsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbWJpbmU6KGtleTonayBrZXkgLT4gJ3YgLT4gJ3YgLT4gJ3YpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGRhdGFfZXF1YWw6KCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgICAtPiAoJ2sga2V5LCAndikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgICAgLT4gaW5pdDonYVxuICAgICAgLT4gZjooJ2EgLT4gKCdrIGtleSwgJ3YpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYSlcbiAgICAgIC0+ICdhIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtaW5fZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2ssICd2LCBfKSB0IC0+ICdrIGtleSAqICd2XG4gIHZhbCBmb3JfYWxsIDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnaywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGludFxuXG4gIHZhbCBzcGxpdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICdrIGtleVxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayBrZXkgKiAndikgb3B0aW9uICogKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYXBwZW5kXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgbG93ZXJfcGFydDooJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiB1cHBlcl9wYXJ0OignaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGxvd2VyX2JvdW5kOidrIGtleSBNYXliZV9ib3VuZC50XG4gICAgICAtPiB1cHBlcl9ib3VuZDonayBrZXkgTWF5YmVfYm91bmQudFxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBtaW46J2sga2V5XG4gICAgICAtPiBtYXg6J2sga2V5XG4gICAgICAtPiBpbml0OidhXG4gICAgICAtPiBmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gJ2EgLT4gJ2EpXG4gICAgICAtPiAnYSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3RcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayBrZXkgLT4gbWF4OidrIGtleSAtPiAoJ2sga2V5ICogJ3YpIGxpc3QgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgICAgLT4gJ2sga2V5XG4gICAgICAtPiAoJ2sga2V5ICogJ3YpIG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbnRoIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBpbnQgLT4gKCdrIGtleSAqICd2KSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2ssICd2LCAnY21wKSB0IC0+IGludCAtPiAnayBrZXkgKiAndlxuICB2YWwgcmFuayA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0IC0+ICdrIGtleSAtPiBpbnQgb3B0aW9uKSBvcHRpb25zXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2sga2V5LCAndiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidrIGtleVxuICAgICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonayBrZXlcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgU2VxdWVuY2UudCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnaywgJ3YsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KGtleTonayBrZXkgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gKCdrIGtleSAqICd2KSBvcHRpb24gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gc2VnbWVudF9vZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAgIC0+ICgnayBrZXkgKiAndikgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrLCAndiwgJ2NtcCkgdFxuICAgICAgLT4gY29tcGFyZTooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgICAgLT4gdXBwZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUga2V5XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiBfIHQgLT4gYm9vbFxuICB2YWwgbGVuZ3RoIDogXyB0IC0+IGludFxuICB2YWwgYWRkIDogJ2EgdCAtPiBrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2EgdCBPcl9kdXBsaWNhdGUudFxuICB2YWwgYWRkX2V4biA6ICdhIHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIHRcbiAgdmFsIHNldCA6ICdhIHQgLT4ga2V5OmtleSAtPiBkYXRhOidhIC0+ICdhIHRcbiAgdmFsIGFkZF9tdWx0aSA6ICdhIGxpc3QgdCAtPiBrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2EgbGlzdCB0XG4gIHZhbCByZW1vdmVfbXVsdGkgOiAnYSBsaXN0IHQgLT4ga2V5IC0+ICdhIGxpc3QgdFxuICB2YWwgZmluZF9tdWx0aSA6ICdhIGxpc3QgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICB2YWwgY2hhbmdlIDogJ2EgdCAtPiBrZXkgLT4gZjooJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbikgLT4gJ2EgdFxuICB2YWwgdXBkYXRlIDogJ2EgdCAtPiBrZXkgLT4gZjooJ2Egb3B0aW9uIC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBmaW5kIDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2V4biA6ICdhIHQgLT4ga2V5IC0+ICdhXG4gIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiAnYSB0XG4gIHZhbCBtZW0gOiBfIHQgLT4ga2V5IC0+IGJvb2xcbiAgdmFsIGl0ZXJfa2V5cyA6IF8gdCAtPiBmOihrZXkgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6ICdhIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGl0ZXJpX3VudGlsXG4gICAgOiAgJ2EgdFxuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyIDogJ2EgdCAtPiAnYiB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTooJ2EsICdiKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgbWFwaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICdhIHRcbiAgICAtPiBpbml0OidhY2NcbiAgICAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2FjYyAtPiAoJ2FjYywgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2FjYyAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBmb2xkMlxuICAgIDogICdhIHRcbiAgICAtPiAnYiB0XG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KGtleTprZXkgLT4gZGF0YTooJ2EsICdiKSBNZXJnZV9lbGVtZW50LnQgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmlsdGVyX2tleXMgOiAnYSB0IC0+IGY6KGtleSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXIgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHRcbiAgdmFsIGZpbHRlcmkgOiAnYSB0IC0+IGY6KGtleTprZXkgLT4gZGF0YTonYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBwYXJ0aXRpb25fbWFwaSA6ICdhIHQgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICgnYiwgJ2MpIEVpdGhlci50KSAtPiAnYiB0ICogJ2MgdFxuICB2YWwgcGFydGl0aW9uX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gKCdiLCAnYykgRWl0aGVyLnQpIC0+ICdiIHQgKiAnYyB0XG4gIHZhbCBwYXJ0aXRpb25pX3RmIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogJ2EgT3JfZXJyb3IudCB0IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICB2YWwga2V5cyA6IF8gdCAtPiBrZXkgbGlzdFxuICB2YWwgZGF0YSA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgdG9fYWxpc3QgOiA/a2V5X29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdIC0+ICdhIHQgLT4gKGtleSAqICdhKSBsaXN0XG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2IgdCAtPiBmOihrZXk6a2V5IC0+ICgnYSwgJ2IpIE1lcmdlX2VsZW1lbnQudCAtPiAnYyBvcHRpb24pIC0+ICdjIHRcbiAgdmFsIG1lcmdlX3NrZXdlZCA6ICd2IHQgLT4gJ3YgdCAtPiBjb21iaW5lOihrZXk6a2V5IC0+ICd2IC0+ICd2IC0+ICd2KSAtPiAndiB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+IChrZXksICdhKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgJ2EgdFxuICAgIC0+ICdhIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAoa2V5LCAnYSkgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICdhIHQgLT4ga2V5ICogJ2FcbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+IChrZXkgKiAnYSkgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICdhIHQgLT4ga2V5ICogJ2FcbiAgdmFsIGZvcl9hbGwgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogJ2EgdCAtPiBmOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBzcGxpdCA6ICdhIHQgLT4ga2V5IC0+ICdhIHQgKiAoa2V5ICogJ2EpIG9wdGlvbiAqICdhIHRcblxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDonYSB0XG4gICAgLT4gdXBwZXJfcGFydDonYSB0XG4gICAgLT4gWyBgT2sgb2YgJ2EgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAnYSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6a2V5IE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDprZXkgTWF5YmVfYm91bmQudFxuICAgIC0+ICdhIHRcblxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAnYSB0XG4gICAgLT4gbWluOmtleVxuICAgIC0+IG1heDprZXlcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooa2V5OmtleSAtPiBkYXRhOidhIC0+ICdiIC0+ICdiKVxuICAgIC0+ICdiXG5cbiAgdmFsIHJhbmdlX3RvX2FsaXN0IDogJ2EgdCAtPiBtaW46a2V5IC0+IG1heDprZXkgLT4gKGtleSAqICdhKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgJ2EgdFxuICAgIC0+IFsgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gfCBgR3JlYXRlcl90aGFuIHwgYExlc3Nfb3JfZXF1YWxfdG8gfCBgTGVzc190aGFuIF1cbiAgICAtPiBrZXlcbiAgICAtPiAoa2V5ICogJ2EpIG9wdGlvblxuXG4gIHZhbCBudGggOiAnYSB0IC0+IGludCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICB2YWwgbnRoX2V4biA6ICdhIHQgLT4gaW50IC0+IGtleSAqICdhXG4gIHZhbCByYW5rIDogXyB0IC0+IGtleSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogJ2EgdCAtPiAnYSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOmtleVxuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86a2V5XG4gICAgLT4gJ2EgdFxuICAgIC0+IChrZXkgKiAnYSkgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgJ2EgdFxuICAgIC0+IGNvbXBhcmU6KGtleTprZXkgLT4gZGF0YTonYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKGtleSAqICdhKSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAnYSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OmtleSAtPiBkYXRhOidhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKGtleSAqICdhKSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZVxuICAgIDogICdhIHRcbiAgICAtPiBjb21wYXJlOihrZXk6a2V5IC0+IGRhdGE6J2EgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGFkZCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYikgdCBPcl9kdXBsaWNhdGUudFxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYikgdFxuICB2YWwgc2V0IDogKCdhLCAnYikgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiKSB0XG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiBsaXN0KSB0XG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2EgLT4gKCdhLCAnYiBsaXN0KSB0XG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0KSB0IC0+ICdhIC0+ICdiIGxpc3RcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbikgLT4gKCdhLCAnYikgdFxuICB2YWwgdXBkYXRlIDogKCdhLCAnYikgdCAtPiAnYSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbmQgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICdiXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG1lbSA6ICgnYSwgJ2IpIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdjKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBtYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG4gIHZhbCBtYXBpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYykgdFxuICB2YWwgZm9sZCA6ICgnYSwgJ2IpIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsICdiKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2MpIHRcbiAgICAtPiBpbml0OidkXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIC0+ICdkKVxuICAgIC0+ICdkXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdhLCAnYikgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuICB2YWwgZmlsdGVyX21hcGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjKSB0ICogKCdhLCAnZCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwIDogKCdhLCAnYikgdCAtPiBmOignYiAtPiAoJ2MsICdkKSBFaXRoZXIudCkgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICB2YWwgcGFydGl0aW9uaV90ZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcbiAgdmFsIGNvbWJpbmVfZXJyb3JzIDogKCdhLCAnYiBPcl9lcnJvci50KSB0IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2IgLT4gJ2IgLT4gaW50KSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuICB2YWwga2V5cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBkYXRhIDogKF8sICdiKSB0IC0+ICdiIGxpc3RcbiAgdmFsIHRvX2FsaXN0IDogP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXSAtPiAoJ2EsICdiKSB0IC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICgnYSwgJ2MpIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gKCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIG9wdGlvbilcbiAgICAtPiAoJ2EsICdkKSB0XG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogICgnaywgJ3YpIHRcbiAgICAtPiAoJ2ssICd2KSB0XG4gICAgLT4gY29tYmluZTooa2V5OidrIC0+ICd2IC0+ICd2IC0+ICd2KVxuICAgIC0+ICgnaywgJ3YpIHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IFNlcXVlbmNlLnRcblxuICB2YWwgZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAoJ2EsICdiKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2EsICdiKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCAnYikgdCAtPiAnYSAqICdiXG4gIHZhbCBtYXhfZWx0IDogKCdhLCAnYikgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgJ2IpIHQgLT4gJ2EgKiAnYlxuICB2YWwgZm9yX2FsbCA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIHNwbGl0IDogKCdhLCAnYikgdCAtPiAnYSAtPiAoJ2EsICdiKSB0ICogKCdhICogJ2IpIG9wdGlvbiAqICgnYSwgJ2IpIHRcblxuICB2YWwgYXBwZW5kXG4gICAgOiAgbG93ZXJfcGFydDooJ2EsICdiKSB0XG4gICAgLT4gdXBwZXJfcGFydDooJ2EsICdiKSB0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIF1cblxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2EgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+IG1pbjonYVxuICAgIC0+IG1heDonYVxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCByYW5nZV90b19hbGlzdCA6ICgnYSwgJ2IpIHQgLT4gbWluOidhIC0+IG1heDonYSAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIG50aCA6ICgnYSwgJ2IpIHQgLT4gaW50IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2EsICdiKSB0IC0+IGludCAtPiAnYSAqICdiXG4gIHZhbCByYW5rIDogKCdhLCBfKSB0IC0+ICdhIC0+IGludCBvcHRpb25cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZ19rZXkgfCBgRGVjcmVhc2luZ19rZXkgXVxuICAgIC0+ID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/a2V5c19sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnYikgdFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICgnayAqICd2KSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2KSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2JvdW5kIC0+IGludClcbiAgICAtPiBsb3dlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidib3VuZCBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndikgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczMgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdHJlZVxuXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiAoXywgXywgXykgdCAtPiBib29sXG4gIHZhbCBsZW5ndGggOiAoXywgXywgXykgdCAtPiBpbnRcbiAgdmFsIGFkZCA6ICgnYSwgJ2IsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuICB2YWwgYWRkX2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgc2V0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QsICdjbXApIHQgLT4ga2V5OidhIC0+IGRhdGE6J2IgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gIHZhbCByZW1vdmVfbXVsdGkgOiAoJ2EsICdiIGxpc3QsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gIHZhbCBmaW5kX211bHRpIDogKCdhLCAnYiBsaXN0LCAnY21wKSB0IC0+ICdhIC0+ICdiIGxpc3RcbiAgdmFsIGNoYW5nZSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gZjooJ2Igb3B0aW9uIC0+ICdiIG9wdGlvbikgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICB2YWwgdXBkYXRlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbmQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiIG9wdGlvblxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiXG4gIHZhbCByZW1vdmUgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIG1lbSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgaXRlcl9rZXlzIDogKCdhLCBfLCAnY21wKSB0IC0+IGY6KCdhIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgaXRlcmlfdW50aWxcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQudFxuXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBtYXAgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjLCAnY21wKSB0XG4gIHZhbCBtYXBpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgZm9sZCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBpbml0OidkXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIC0+ICdkKVxuICAgIC0+ICdkXG5cbiAgdmFsIGZpbHRlcl9rZXlzIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdiLCAnY21wKSB0XG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAoJ2MsICdkKSBFaXRoZXIudClcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0ICogKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fbWFwXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0ICogKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICgnYSwgJ2IgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdiIC0+ICdiIC0+IGludCkgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2IgLT4gJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGtleXMgOiAoJ2EsIF8sIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgZGF0YSA6IChfLCAnYiwgXykgdCAtPiAnYiBsaXN0XG5cbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ICgnYSwgJ2IsIF8pIHRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuXG4gIHZhbCBtZXJnZVxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+ICgnYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCBvcHRpb24pXG4gICAgLT4gKCdhLCAnZCwgJ2NtcCkgdFxuXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOignYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5cbiAgdmFsIGZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICA6ICAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGRhdGFfZXF1YWw6KCdiIC0+ICdiIC0+IGJvb2wpXG4gICAgLT4gaW5pdDonY1xuICAgIC0+IGY6KCdjIC0+ICgnYSwgJ2IpIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQudCAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBtaW5fZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgbWF4X2VsdCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gKCdhICogJ2IpIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhICogJ2JcbiAgdmFsIGZvcl9hbGwgOiAoXywgJ2IsIF8pIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiLCBfKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChfLCAnYiwgXykgdCAtPiBmOignYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCAnYiwgXykgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudCA6IChfLCAnYiwgXykgdCAtPiBmOignYiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IsIF8pIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gaW50XG5cbiAgdmFsIHNwbGl0XG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICdrXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnayAqICd2KSBvcHRpb24gKiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgdmFsIHN1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGxvd2VyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonayBNYXliZV9ib3VuZC50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gIHZhbCBmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgIDogICgnYSwgJ2IsIF8pIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAoJ2EsICdiLCBfKSB0IC0+IG1pbjonYSAtPiBtYXg6J2EgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgY2xvc2VzdF9rZXlcbiAgICA6ICAoJ2EsICdiLCBfKSB0XG4gICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgIC0+ICdhXG4gICAgLT4gKCdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBudGggOiAoJ2EsICdiLCBfKSB0IC0+IGludCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBudGhfZXhuIDogKCdhLCAnYiwgXykgdCAtPiBpbnQgLT4gJ2EgKiAnYlxuICB2YWwgcmFuayA6ICgnYSwgXywgXykgdCAtPiAnYSAtPiBpbnQgb3B0aW9uXG4gIHZhbCB0b190cmVlIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2IsIF8pIHRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGtleTonayAtPiBkYXRhOid2IC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdiLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2IsICdjbXApIHQgLT4gYm9vbFxuICB2YWwgaXNfZW1wdHkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGxlbmd0aCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gaW50XG5cbiAgdmFsIGFkZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZHVwbGljYXRlLnRcblxuICB2YWwgYWRkX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgc2V0XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBrZXk6J2FcbiAgICAtPiBkYXRhOidiXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBhZGRfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gICAgLT4ga2V5OidhXG4gICAgLT4gZGF0YTonYlxuICAgIC0+ICgnYSwgJ2IgbGlzdCwgJ2NtcCkgdFxuXG4gIHZhbCByZW1vdmVfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgZmluZF9tdWx0aVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+ICdiIGxpc3RcblxuICB2YWwgY2hhbmdlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAnYVxuICAgIC0+IGY6KCdiIG9wdGlvbiAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCB1cGRhdGVcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gZjooJ2Igb3B0aW9uIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgZmluZCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfZXhuIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+ICdiXG5cbiAgdmFsIHJlbW92ZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG1lbSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBpdGVyX2tleXMgOiAoJ2EsIF8sICdjbXApIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYiwgJ2NtcCkgdCAtPiBmOignYiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBpdGVyaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdFxuXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6KCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBtYXAgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+ICdjKSAtPiAoJ2EsICdjLCAnY21wKSB0XG4gIHZhbCBtYXBpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYykgLT4gKCdhLCAnYywgJ2NtcCkgdFxuICB2YWwgZm9sZCA6ICgnYSwgJ2IsIF8pIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiAnYyAtPiAnYykgLT4gJ2NcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBpbml0OidhXG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2EgLT4gKCdhLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsICdiLCBfKSB0IC0+IGluaXQ6J2MgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGZvbGQyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG4gICAgLT4gaW5pdDonZFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOignYiwgJ2MpIE1lcmdlX2VsZW1lbnQudCAtPiAnZCAtPiAnZClcbiAgICAtPiAnZFxuXG4gIHZhbCBmaWx0ZXJfa2V5c1xuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcmlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiAnYyBvcHRpb24pXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2Mgb3B0aW9uKVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX21hcGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl9tYXBcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KCdiIC0+ICgnYywgJ2QpIEVpdGhlci50KVxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHQgKiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgcGFydGl0aW9uX3RmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBmOignYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGNvbWJpbmVfZXJyb3JzXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IgT3JfZXJyb3IudCwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2IgLT4gJ2IgLT4gaW50KVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYiAtPiAnYiAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gYm9vbFxuXG4gIHZhbCBrZXlzIDogKCdhLCBfLCBfKSB0IC0+ICdhIGxpc3RcbiAgdmFsIGRhdGEgOiAoXywgJ2IsIF8pIHQgLT4gJ2IgbGlzdFxuXG4gIHZhbCB0b19hbGlzdFxuICAgIDogID9rZXlfb3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiAoJ2EsICdiLCBfKSB0XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcblxuICB2YWwgbWVyZ2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2MsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2EgLT4gKCdiLCAnYykgTWVyZ2VfZWxlbWVudC50IC0+ICdkIG9wdGlvbilcbiAgICAtPiAoJ2EsICdkLCAnY21wKSB0XG5cbiAgdmFsIG1lcmdlX3NrZXdlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdiKSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ2IgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gKCdhLCAnYikgU3ltbWV0cmljX2RpZmZfZWxlbWVudC50IC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIG1pbl9lbHQgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAnYSAqICdiXG4gIHZhbCBtYXhfZWx0IDogKCdhLCAnYiwgJ2NtcCkgdCAtPiAoJ2EgKiAnYikgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgJ2IsICdjbXApIHQgLT4gJ2EgKiAnYlxuICB2YWwgZm9yX2FsbCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KGtleTonYSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzaSA6ICgnYSwgJ2IsICdjbXApIHQgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgY291bnQgOiAoJ2EsICdiLCAnY21wKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnRpIDogKCdhLCAnYiwgJ2NtcCkgdCAtPiBmOihrZXk6J2EgLT4gZGF0YTonYiAtPiBib29sKSAtPiBpbnRcblxuICB2YWwgc3BsaXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+ICdhXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCAqICgnYSAqICdiKSBvcHRpb24gKiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGFwcGVuZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiBsb3dlcl9wYXJ0OignYSwgJ2IsICdjbXApIHRcbiAgICAtPiB1cHBlcl9wYXJ0OignYSwgJ2IsICdjbXApIHRcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYE92ZXJsYXBwaW5nX2tleV9yYW5nZXMgXVxuXG4gIHZhbCBzdWJyYW5nZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2EgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidhIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIGZvbGRfcmFuZ2VfaW5jbHVzaXZlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBtaW46J2FcbiAgICAtPiBtYXg6J2FcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgcmFuZ2VfdG9fYWxpc3RcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuICAgIC0+IG1pbjonYVxuICAgIC0+IG1heDonYVxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG5cbiAgdmFsIGNsb3Nlc3Rfa2V5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgKiAnYikgb3B0aW9uXG5cbiAgdmFsIG50aCA6ICgnYSwgJ2IsICdjbXApIHQgLT4gaW50IC0+ICgnYSAqICdiKSBvcHRpb25cbiAgdmFsIG50aF9leG4gOiAoJ2EsICdiLCAnY21wKSB0IC0+IGludCAtPiAnYSAqICdiXG4gIHZhbCByYW5rIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdiLCAnY21wKSB0IC0+ICdhIC0+IGludCBvcHRpb25cbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdiLCAnY21wKSB0IC0+ICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gP29yZGVyOlsgYEluY3JlYXNpbmdfa2V5IHwgYERlY3JlYXNpbmdfa2V5IF1cbiAgICAtPiA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2tleXNfbGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOihrZXk6J2sgLT4gZGF0YTondiAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9zZWdtZW50LnRcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc3VicmFuZ2VcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbmVuZFxuXG4oKiogQ29uc2lzdGVuY3kgY2hlY2tzIChzYW1lIGFzIGluIFtDb250YWluZXJdKS4gKilcbm1vZHVsZSBDaGVja19hY2Nlc3NvcnNcbiAgICAoVCA6IFQzKVxuICAgIChUcmVlIDogVDMpXG4gICAgKEtleSA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQWNjZXNzb3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczMgKE0gOiBBY2Nlc3NvcnMzKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2ssICd2LCAnY21wKSB0XG4gIHR5cGUgKCdrLCAndiwgJ2NtcCkgdHJlZVxuICB0eXBlICdrIGtleVxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnaywgJ2NtcCwgKCdrLCBfLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2ssICdjbXAsICdrIGtleSAtPiAndiAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAoICdrMlxuICAgICAgLCAnY21wMlxuICAgICAgLCAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAgIC0+IGY6KCdrMSBrZXkgLT4gJ2syIGtleSlcbiAgICAgIC0+IFsgYE9rIG9mICgnazIsICd2LCAnY21wMikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdrMiBrZXkgXSApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgbWFwX2tleXNfZXhuXG4gICAgOiAoICdrMlxuICAgICAgLCAnY21wMlxuICAgICAgLCAoJ2sxLCAndiwgJ2NtcDEpIHQgLT4gZjooJ2sxIGtleSAtPiAnazIga2V5KSAtPiAoJ2syLCAndiwgJ2NtcDIpIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3NvcnRlZF9hcnJheVxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGFycmF5IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgYXJyYXkgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogKCdrLCAnY21wLCBsZW46aW50IC0+IGY6KGludCAtPiAnayBrZXkgKiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgbGlzdCAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIGxpc3QgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfYWxpc3RfbXVsdGkgOiAoJ2ssICdjbXAsICgnayBrZXkgKiAndikgbGlzdCAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndjEpIGxpc3QgLT4gaW5pdDondjIgLT4gZjooJ3YyIC0+ICd2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2VcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBsaXN0IC0+IGY6KCd2IC0+ICd2IC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfc2VxdWVuY2VcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF1cbiAgICAgIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvclxuICAgIDogKCdrLCAnY21wLCAoJ2sga2V5ICogJ3YpIFNlcXVlbmNlLnQgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50KSBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICgnaywgJ2NtcCwgKCdrIGtleSAqICd2KSBTZXF1ZW5jZS50IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdrIGtleSAqICd2MSkgU2VxdWVuY2UudFxuICAgICAgLT4gaW5pdDondjJcbiAgICAgIC0+IGY6KCd2MiAtPiAndjEgLT4gJ3YyKVxuICAgICAgLT4gKCdrLCAndjIsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsICgnayBrZXkgKiAndikgU2VxdWVuY2UudCAtPiBmOigndiAtPiAndiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICggJ2tcbiAgICAgICwgJ2NtcFxuICAgICAgLCBpdGVyaTooZjooa2V5OidrIGtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgICAtPiBbIGBPayBvZiAoJ2ssICd2LCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2sga2V5IF0gKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogKCAna1xuICAgICAgLCAnY21wXG4gICAgICAsIGl0ZXJpOihmOihrZXk6J2sga2V5IC0+IGRhdGE6J3YgLT4gdW5pdCkgLT4gdW5pdCkgLT4gKCdrLCAndiwgJ2NtcCkgdCApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgb2ZfdHJlZSA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YsICdjbXApIHRyZWUgLT4gKCdrLCAndiwgJ2NtcCkgdCkgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUga2V5XG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGVtcHR5IDogXyB0XG4gIHZhbCBzaW5nbGV0b24gOiBrZXkgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgbWFwX2tleXMgOiAndiB0IC0+IGY6KGtleSAtPiBrZXkpIC0+IFsgYE9rIG9mICd2IHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuICB2YWwgbWFwX2tleXNfZXhuIDogJ3YgdCAtPiBmOihrZXkgLT4ga2V5KSAtPiAndiB0XG4gIHZhbCBvZl9hbGlzdCA6IChrZXkgKiAnYSkgbGlzdCAtPiBbIGBPayBvZiAnYSB0IHwgYER1cGxpY2F0ZV9rZXkgb2Yga2V5IF1cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yIDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2ZfYWxpc3RfZXhuIDogKGtleSAqICdhKSBsaXN0IC0+ICdhIHRcbiAgdmFsIG9mX2FsaXN0X211bHRpIDogKGtleSAqICdhKSBsaXN0IC0+ICdhIGxpc3QgdFxuICB2YWwgb2ZfYWxpc3RfZm9sZCA6IChrZXkgKiAnYSkgbGlzdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBvZl9hbGlzdF9yZWR1Y2UgOiAoa2V5ICogJ2EpIGxpc3QgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheSA6IChrZXkgKiAnYSkgYXJyYXkgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogKGtleSAqICdhKSBhcnJheSAtPiAnYSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCA6IGxlbjppbnQgLT4gZjooaW50IC0+IGtleSAqICdhKSAtPiAnYSB0XG4gIHZhbCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+ICdhIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gWyBgT2sgb2YgJ2EgdCB8IGBEdXBsaWNhdGVfa2V5IG9mIGtleSBdXG4gIHZhbCBvZl9zZXF1ZW5jZV9vcl9lcnJvciA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlX2V4biA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSB0XG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aSA6IChrZXkgKiAnYSkgU2VxdWVuY2UudCAtPiAnYSBsaXN0IHRcbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGQgOiAoa2V5ICogJ2EpIFNlcXVlbmNlLnQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlIDogKGtleSAqICdhKSBTZXF1ZW5jZS50IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYSB0XG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgaXRlcmk6KGY6KGtleTprZXkgLT4gZGF0YTondiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+IFsgYE9rIG9mICd2IHQgfCBgRHVwbGljYXRlX2tleSBvZiBrZXkgXVxuXG4gIHZhbCBvZl9pdGVyaV9leG4gOiBpdGVyaTooZjooa2V5OmtleSAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXQpIC0+ICd2IHRcbiAgdmFsIG9mX3RyZWUgOiAnYSB0cmVlIC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgKCdhLCAnYikgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6IChfLCBfKSB0XG4gIHZhbCBzaW5nbGV0b24gOiAnYSAtPiAnYiAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgKCdrMSwgJ3YpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+IFsgYE9rIG9mICgnazIsICd2KSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIF1cblxuICB2YWwgbWFwX2tleXNfZXhuIDogKCdrMSwgJ3YpIHQgLT4gZjooJ2sxIC0+ICdrMikgLT4gKCdrMiwgJ3YpIHRcbiAgdmFsIG9mX2FsaXN0IDogKCdhICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yIDogKCdhICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9hbGlzdF9tdWx0aSA6ICgnYSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IgbGlzdCkgdFxuICB2YWwgb2ZfYWxpc3RfZm9sZCA6ICgnYSAqICdiKSBsaXN0IC0+IGluaXQ6J2MgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcbiAgdmFsIG9mX2FsaXN0X3JlZHVjZSA6ICgnYSAqICdiKSBsaXN0IC0+IGY6KCdiIC0+ICdiIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiAoJ2EgKiAnYikgYXJyYXkgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogKCdhICogJ2IpIGFycmF5IC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gJ2EgKiAnYikgLT4gKCdhLCAnYikgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IpIHQgT3JfZXJyb3IudFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuICB2YWwgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgOiAoJ2EgKiAnYikgU2VxdWVuY2UudCAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NlcXVlbmNlX2V4biA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX3NlcXVlbmNlX211bHRpIDogKCdhICogJ2IpIFNlcXVlbmNlLnQgLT4gKCdhLCAnYiBsaXN0KSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX2ZvbGRcbiAgICA6ICAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZSA6ICgnYSAqICdiKSBTZXF1ZW5jZS50IC0+IGY6KCdiIC0+ICdiIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIG9mX2l0ZXJpXG4gICAgOiAgaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICB2YWwgb2ZfaXRlcmlfZXhuIDogaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIG9mX3RyZWUgOiAoJ2EsICdiKSB0cmVlIC0+ICgnYSwgJ2IpIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2NtcCkgdFxuICB0eXBlICgnYSwgJ2IsICdjbXApIHRyZWVcblxuICB2YWwgZW1wdHkgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgXywgJ2NtcCkgdFxuICB2YWwgc2luZ2xldG9uIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSAtPiAnYiAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIG1hcF9rZXlzXG4gICAgOiAgY29tcGFyYXRvcjooJ2syLCAnY21wMikgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrMSwgJ3YsICdjbXAxKSB0XG4gICAgLT4gZjooJ2sxIC0+ICdrMilcbiAgICAtPiBbIGBPayBvZiAoJ2syLCAndiwgJ2NtcDIpIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnazIgXVxuXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICBjb21wYXJhdG9yOignazIsICdjbXAyKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2sxLCAndiwgJ2NtcDEpIHRcbiAgICAtPiBmOignazEgLT4gJ2syKVxuICAgIC0+ICgnazIsICd2LCAnY21wMikgdFxuXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX2FsaXN0X2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfYWxpc3RfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgb2ZfYWxpc3RfZm9sZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIG9mX2FsaXN0X3JlZHVjZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGY6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KGludCAtPiAnYSAqICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zZXF1ZW5jZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfbXVsdGlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICB2YWwgb2Zfc2VxdWVuY2VfZm9sZFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgdmFsIG9mX3NlcXVlbmNlX3JlZHVjZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EgKiAnYikgU2VxdWVuY2UudFxuICAgIC0+IGY6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gaXRlcmk6KGY6KGtleTonYSAtPiBkYXRhOidiIC0+IHVuaXQpIC0+IHVuaXQpXG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYiwgJ2NtcCkgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICB2YWwgb2ZfaXRlcmlfZXhuXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICB2YWwgb2ZfdHJlZVxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0cmVlXG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yc1xuICAgIChUIDogVDMpXG4gICAgKFRyZWUgOiBUMylcbiAgICAoS2V5IDogVDEpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBDcmVhdG9yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMxIChNIDogQ3JlYXRvcnMxKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczIgKE0gOiBDcmVhdG9yczIpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdHJlZVxuICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzMVxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMxXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRyZWVcbiAgICB3aXRoIHR5cGUga2V5IDo9IGtleVxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczJcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzMlxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbiAgbW9kdWxlIHR5cGUgSGFzaF9mb2xkX20gPSBIYXNoZXIuU1xuXG4gIHZhbCBzZXhwX29mX21fX3RcbiAgICA6ICAobW9kdWxlIFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICgndiAtPiBTZXhwLnQpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFNleHAudFxuXG4gIHZhbCBtX190X29mX3NleHBcbiAgICA6ICAobW9kdWxlIE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKFNleHAudCAtPiAndilcbiAgICAtPiBTZXhwLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIHZhbCBjb21wYXJlX21fX3RcbiAgICA6ICAobW9kdWxlIENvbXBhcmVfbSlcbiAgICAtPiAoJ3YgLT4gJ3YgLT4gaW50KVxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gaW50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBib29sXG5cbiAgdmFsIGhhc2hfZm9sZF9tX190XG4gICAgOiAgKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdrKVxuICAgIC0+IChIYXNoLnN0YXRlIC0+ICd2IC0+IEhhc2guc3RhdGUpXG4gICAgLT4gSGFzaC5zdGF0ZVxuICAgIC0+ICgnaywgJ3YsIF8pIHRcbiAgICAtPiBIYXNoLnN0YXRlXG5lbmRcblxubW9kdWxlIHR5cGUgTWFwID0gc2lnXG4gICgqKiBbTWFwXSBpcyBhIGZ1bmN0aW9uYWwgZGF0YSBzdHJ1Y3R1cmUgKGJhbGFuY2VkIGJpbmFyeSB0cmVlKSBpbXBsZW1lbnRpbmcgZmluaXRlIG1hcHNcbiAgICAgIG92ZXIgYSB0b3RhbGx5LW9yZGVyZWQgZG9tYWluLCBjYWxsZWQgYSBcImtleVwiLiAqKVxuXG4gIHR5cGUgKCdrZXksICsndmFsdWUsICdjbXApIHRcblxuICBtb2R1bGUgT3JfZHVwbGljYXRlID0gT3JfZHVwbGljYXRlXG4gIG1vZHVsZSBDb250aW51ZV9vcl9zdG9wID0gQ29udGludWVfb3Jfc3RvcFxuXG4gIG1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkIDogc2lnXG4gICAgdHlwZSB0ID0gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50ID1cbiAgICAgIHwgRmluaXNoZWRcbiAgICAgIHwgVW5maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFBweF9lbnVtZXJhdGVfbGliLkVudW1lcmFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICAoKiogTWFwcyBbQ29udGludWVdIHRvIFtGaW5pc2hlZF0gYW5kIFtTdG9wXSB0byBbVW5maW5pc2hlZF0uICopXG4gICAgdmFsIG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdFxuXG4gICAgKCoqIE1hcHMgW0ZpbmlzaGVkXSB0byBbQ29udGludWVdIGFuZCBbVW5maW5pc2hlZF0gdG8gW1N0b3BdLiAqKVxuICAgIHZhbCB0b19jb250aW51ZV9vcl9zdG9wIDogdCAtPiBDb250aW51ZV9vcl9zdG9wLnRcbiAgZW5kXG5cbiAgbW9kdWxlIE1lcmdlX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnbGVmdCwgJ3JpZ2h0KSB0ID1cbiAgICAgIFsgYExlZnQgb2YgJ2xlZnRcbiAgICAgIHwgYFJpZ2h0IG9mICdyaWdodFxuICAgICAgfCBgQm90aCBvZiAnbGVmdCAqICdyaWdodFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cF9vZl1cblxuICAgIHZhbCBjb21wYXJlXG4gICAgICA6ICAoJ2xlZnQgLT4gJ2xlZnQgLT4gaW50KVxuICAgICAgLT4gKCdyaWdodCAtPiAncmlnaHQgLT4gaW50KVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBpbnRcblxuICAgIHZhbCBlcXVhbFxuICAgICAgOiAgKCdsZWZ0IC0+ICdsZWZ0IC0+IGJvb2wpXG4gICAgICAtPiAoJ3JpZ2h0IC0+ICdyaWdodCAtPiBib29sKVxuICAgICAgLT4gKCdsZWZ0LCAncmlnaHQpIHRcbiAgICAgIC0+ICgnbGVmdCwgJ3JpZ2h0KSB0XG4gICAgICAtPiBib29sXG5cbiAgICB2YWwgc2V4cF9vZl90XG4gICAgICA6ICAoJ2xlZnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgLT4gKCdyaWdodCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgdmFsIGxlZnQgOiAoJ2xlZnQsIF8pIHQgLT4gJ2xlZnQgb3B0aW9uXG4gICAgdmFsIHJpZ2h0IDogKF8sICdyaWdodCkgdCAtPiAncmlnaHQgb3B0aW9uXG4gICAgdmFsIGxlZnRfdmFsdWUgOiAoJ2xlZnQsIF8pIHQgLT4gZGVmYXVsdDonbGVmdCAtPiAnbGVmdFxuICAgIHZhbCByaWdodF92YWx1ZSA6IChfLCAncmlnaHQpIHQgLT4gZGVmYXVsdDoncmlnaHQgLT4gJ3JpZ2h0XG5cbiAgICB2YWwgdmFsdWVzXG4gICAgICA6ICAoJ2xlZnQsICdyaWdodCkgdFxuICAgICAgLT4gbGVmdF9kZWZhdWx0OidsZWZ0XG4gICAgICAtPiByaWdodF9kZWZhdWx0OidyaWdodFxuICAgICAgLT4gJ2xlZnQgKiAncmlnaHRcbiAgZW5kXG5cbiAgdHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPSAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTEyXSB1c2UgW0NvbXBhcmF0b3IuTW9kdWxlLnRdIGluc3RlYWRcIl1cblxuICAoKiogVGVzdCBpZiB0aGUgaW52YXJpYW50cyBvZiB0aGUgaW50ZXJuYWwgQVZMIHNlYXJjaCB0cmVlIGhvbGQuICopXG4gIHZhbCBpbnZhcmlhbnRzIDogKF8sIF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgZmlyc3QtY2xhc3MgbW9kdWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gYnVpbGQgb3RoZXIgbWFwL3NldC9ldGMuXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCBfLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIFRoZSBlbXB0eSBtYXAuICopXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIEEgbWFwIHdpdGggb25lIChrZXksIGRhdGEpIHBhaXIuICopXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgLT4gJ2IgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gbGlzdCB3aXRoIHVuaXF1ZSBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnYSBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJldHVybmluZyBhbiBlcnJvciBpZlxuICAgICAgZHVwbGljYXRlIFsnYV0ga2V5cyBhcmUgZm91bmQuICopXG4gIHZhbCBvZl9hbGlzdF9vcl9lcnJvclxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2FsaXN0X2V4biA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAoJ2EgKiAnYikgbGlzdCAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBsaXN0IHdpdGggcG9zc2libHkgcmVwZWF0ZWQga2V5cy4gVGhlIHZhbHVlcyBpblxuICAgICAgdGhlIG1hcCBmb3IgYSBnaXZlbiBrZXkgYXBwZWFyIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZXkgZGlkIGluIHRoZSBhc3NvY2lhdGlvblxuICAgICAgbGlzdC4gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QsICdjbXApIHRcblxuICAoKiogQ29tYmluZXMgYW4gYXNzb2NpYXRpb24gbGlzdCBpbnRvIGEgbWFwLCBmb2xkaW5nIHRvZ2V0aGVyIGJvdW5kIHZhbHVlcyB3aXRoIGNvbW1vblxuICAgICAga2V5cy4gVGhlIGFjY3VtdWxhdG9yIGlzIHBlci1rZXkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHtbXG4gICAgICAgICMgbGV0IG1hcCA9IFN0cmluZy5NYXAub2ZfYWxpc3RfZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJhXCIsIDE7IFwiYVwiLCAxMDsgXCJiXCIsIDI7IFwiYlwiLCAyMDsgXCJiXCIsIDIwMCBdXG4gICAgICAgICAgICAgICAgICAgICAgfmluaXQ6SW50LlNldC5lbXB0eVxuICAgICAgICAgICAgICAgICAgICAgIH5mOlNldC5hZGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHByaW50X3MgWyVzZXhwIChtYXAgOiBJbnQuU2V0LnQgU3RyaW5nLk1hcC50KV07O1xuICAgICAgICAoKGEgKDEgMTApKSAoYiAoMiAyMCAyMDApKSlcbiAgICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgXX1cbiAgKilcbiAgdmFsIG9mX2FsaXN0X2ZvbGRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYiAtPiAnYylcbiAgICAtPiAoJ2EsICdjLCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIGxpc3QgaW50byBhIG1hcCwgcmVkdWNpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLiAqKVxuICB2YWwgb2ZfYWxpc3RfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pdGVyaSB+aXRlcmldIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RdLCBleGNlcHQgdGhhdCBpbnN0ZWFkIG9mIHRha2luZyBhIGNvbmNyZXRlXG4gICAgICBkYXRhIHN0cnVjdHVyZSwgaXQgdGFrZXMgYW4gaXRlcmF0aW9uIGZ1bmN0aW9uLiAgRm9yIGluc3RhbmNlLCB0byBjb252ZXJ0IGEgc3RyaW5nIHRhYmxlXG4gICAgICBpbnRvIGEgbWFwOiBbb2ZfaXRlcmkgKG1vZHVsZSBTdHJpbmcpIH5mOihIYXNodGJsLml0ZXJpIHRhYmxlKV0uICBJdCBpcyBmYXN0ZXIgdGhhblxuICAgICAgYWRkaW5nIHRoZSBlbGVtZW50cyBvbmUgYnkgb25lLiAqKVxuICB2YWwgb2ZfaXRlcmlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiBpdGVyaTooZjooa2V5OidhIC0+IGRhdGE6J2IgLT4gdW5pdCkgLT4gdW5pdClcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdiLCAnY21wKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2EgXVxuXG4gICgqKiBMaWtlIFtvZl9pdGVyaV0gZXhjZXB0IHRoYXQgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC4gKilcbiAgdmFsIG9mX2l0ZXJpX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGl0ZXJpOihmOihrZXk6J2EgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0KVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGEgc29ydGVkIGFycmF5IG9mIGtleS1kYXRhIHBhaXJzLiBUaGUgaW5wdXQgYXJyYXkgbXVzdCBiZSBzb3J0ZWRcbiAgICAgIChlaXRoZXIgaW4gYXNjZW5kaW5nIG9yIGRlc2NlbmRpbmcgb3JkZXIpLCBhcyBnaXZlbiBieSB0aGUgcmVsZXZhbnQgY29tcGFyYXRvciwgYW5kXG4gICAgICBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZSBrZXlzLiBJZiBlaXRoZXIgb2YgdGhlc2UgY29uZGl0aW9ucyBkb2VzIG5vdCBob2xkLFxuICAgICAgYW4gZXJyb3IgaXMgcmV0dXJuZWQuICAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5XG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIGFycmF5XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIExpa2UgW29mX3NvcnRlZF9hcnJheV0gZXhjZXB0IHRoYXQgaXQgcmV0dXJucyBhIG1hcCB3aXRoIGJyb2tlbiBpbnZhcmlhbnRzIHdoZW4gYW5cbiAgICAgIFtFcnJvcl0gd291bGQgaGF2ZSBiZWVuIHJldHVybmVkLiAqKVxuICB2YWwgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBhcnJheVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIHRcblxuICAoKiogW29mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIGMgfmxlbiB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGNcbiAgICAgIChBcnJheS5pbml0IGxlbiB+ZildLCB3aXRoIHRoZSBhZGRpdGlvbmFsIHJlc3RyaWN0aW9uIHRoYXQgYSBkZWNyZWFzaW5nIG9yZGVyIGlzIG5vdFxuICAgICAgc3VwcG9ydGVkLiAgVGhlIGFkdmFudGFnZSBpcyBub3QgcmVxdWlyaW5nIHlvdSB0byBhbGxvY2F0ZSBhbiBpbnRlcm1lZGlhdGUgYXJyYXkuICBbZl1cbiAgICAgIHdpbGwgYmUgY2FsbGVkIHdpdGggMCwgMSwgLi4uIFtsZW4gLSAxXSwgaW4gb3JkZXIuICopXG4gIHZhbCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZFxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EgKiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFtvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIGMgc2VxXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheSBjIChTZXF1ZW5jZS50b19hcnJheVxuICAgICAgc2VxKV0sIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGFycmF5LlxuXG4gICAgICBUaGUgc2VxdWVuY2Ugd2lsbCBiZSBmb2xkZWQgb3ZlciBvbmNlLCBhbmQgdGhlIGFkZGl0aW9uYWwgdGltZSBjb21wbGV4aXR5IGlzIHtlIE8obil9LlxuICAqKVxuICB2YWwgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZVxuICAgIDogICgnaywgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnayAqICd2KSBTZXF1ZW5jZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2UgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3QgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cblxuICAgICAgSWYgeW91ciBzZXF1ZW5jZSBpcyBpbmNyZWFzaW5nLCB1c2UgW29mX2luY3JlYXNpbmdfc2VxdWVuY2VdLlxuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VcbiAgICA6ICAoJ2ssICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAoJ2sgKiAndikgU2VxdWVuY2UudFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgRHVwbGljYXRlX2tleSBvZiAnayBdXG5cbiAgKCoqIENyZWF0ZXMgYSBtYXAgZnJvbSBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSB3aXRoIHVuaXF1ZSBrZXlzLCByZXR1cm5pbmcgYW4gZXJyb3IgaWZcbiAgICAgIGR1cGxpY2F0ZSBbJ2FdIGtleXMgYXJlIGZvdW5kLlxuXG4gICAgICBbb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3Rfb3JfZXJyb3IgYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXVxuICAgICAgYnV0IGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX29yX2Vycm9yXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogQ3JlYXRlcyBhIG1hcCBmcm9tIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIHdpdGggdW5pcXVlIGtleXMsIHJhaXNpbmcgYW4gZXhjZXB0aW9uIGlmXG4gICAgICBkdXBsaWNhdGUgWydhXSBrZXlzIGFyZSBmb3VuZC5cblxuICAgICAgW29mX3NlcXVlbmNlX2V4biBjIHNlcV0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9leG4gYyAoU2VxdWVuY2UudG9fbGlzdCBzZXEpXSBidXRcbiAgICAgIGRvZXMgbm90IGFsbG9jYXRlIHRoZSBpbnRlcm1lZGlhdGUgbGlzdC5cbiAgKilcbiAgdmFsIG9mX3NlcXVlbmNlX2V4blxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gICgqKiBDcmVhdGVzIGEgbWFwIGZyb20gYW4gYXNzb2NpYXRpb24gc2VxdWVuY2Ugd2l0aCBwb3NzaWJseSByZXBlYXRlZCBrZXlzLiBUaGUgdmFsdWVzIGluXG4gICAgICB0aGUgbWFwIGZvciBhIGdpdmVuIGtleSBhcHBlYXIgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhleSBkaWQgaW4gdGhlIGFzc29jaWF0aW9uXG4gICAgICBsaXN0LlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfbXVsdGkgYyBzZXFdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfZXhuIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKV0gYnV0XG4gICAgICBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9tdWx0aVxuICAgIDogICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSAqICdiKSBTZXF1ZW5jZS50XG4gICAgLT4gKCdhLCAnYiBsaXN0LCAnY21wKSB0XG5cbiAgKCoqIENvbWJpbmVzIGFuIGFzc29jaWF0aW9uIHNlcXVlbmNlIGludG8gYSBtYXAsIGZvbGRpbmcgdG9nZXRoZXIgYm91bmQgdmFsdWVzIHdpdGggY29tbW9uXG4gICAgICBrZXlzLlxuXG4gICAgICBbb2Zfc2VxdWVuY2VfZm9sZCBjIHNlcSB+aW5pdCB+Zl0gYmVoYXZlcyBsaWtlIFtvZl9hbGlzdF9mb2xkIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+aW5pdCB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuXG4gICopXG4gIHZhbCBvZl9zZXF1ZW5jZV9mb2xkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBpbml0OidjXG4gICAgLT4gZjooJ2MgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdhLCAnYywgJ2NtcCkgdFxuXG4gICgqKiBDb21iaW5lcyBhbiBhc3NvY2lhdGlvbiBzZXF1ZW5jZSBpbnRvIGEgbWFwLCByZWR1Y2luZyB0b2dldGhlciBib3VuZCB2YWx1ZXMgd2l0aCBjb21tb25cbiAgICAgIGtleXMuXG5cbiAgICAgIFtvZl9zZXF1ZW5jZV9yZWR1Y2UgYyBzZXEgfmZdIGJlaGF2ZXMgbGlrZSBbb2ZfYWxpc3RfcmVkdWNlIGMgKFNlcXVlbmNlLnRvX2xpc3Qgc2VxKSB+Zl1cbiAgICAgIGJ1dCBkb2VzIG5vdCBhbGxvY2F0ZSB0aGUgaW50ZXJtZWRpYXRlIGxpc3QuICAqKVxuICB2YWwgb2Zfc2VxdWVuY2VfcmVkdWNlXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdhICogJ2IpIFNlcXVlbmNlLnRcbiAgICAtPiBmOignYiAtPiAnYiAtPiAnYilcbiAgICAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgKCoqIFRlc3RzIHdoZXRoZXIgYSBtYXAgaXMgZW1wdHkuICopXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogW2xlbmd0aCBtYXBdIHJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBbbWFwXS4gIE8oMSksIGJ1dCBbVHJlZS5sZW5ndGhdIGlzXG4gICAgICBPKG4pLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggdGhlIHNwZWNpZmllZCBuZXcgYmluZGluZzsgaWYgdGhlIGtleSB3YXMgYWxyZWFkeSBib3VuZCwgaXRzXG4gICAgICBwcmV2aW91cyBiaW5kaW5nIGRpc2FwcGVhcnMuICopXG4gIHZhbCBzZXQgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FkZCB0IH5rZXkgfmRhdGFdIGFkZHMgYSBuZXcgZW50cnkgdG8gW3RdIG1hcHBpbmcgW2tleV0gdG8gW2RhdGFdIGFuZCByZXR1cm5zIFtgT2tdXG4gICAgICB3aXRoIHRoZSBuZXcgbWFwLCBvciBpZiBba2V5XSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gW3RdLCByZXR1cm5zIFtgRHVwbGljYXRlXS4gKilcbiAgdmFsIGFkZCA6ICgnaywgJ3YsICdjbXApIHQgLT4ga2V5OidrIC0+IGRhdGE6J3YgLT4gKCdrLCAndiwgJ2NtcCkgdCBPcl9kdXBsaWNhdGUudFxuXG4gIHZhbCBhZGRfZXhuIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBrZXk6J2sgLT4gZGF0YTondiAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIElmIFtrZXldIGlzIG5vdCBwcmVzZW50IHRoZW4gYWRkIGEgc2luZ2xldG9uIGxpc3QsIG90aGVyd2lzZSwgY29ucyBkYXRhIG9udG8gdGhlXG4gICAgICBoZWFkIG9mIHRoZSBleGlzdGluZyBsaXN0LiAqKVxuICB2YWwgYWRkX211bHRpIDogKCdrLCAndiBsaXN0LCAnY21wKSB0IC0+IGtleTonayAtPiBkYXRhOid2IC0+ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdFxuXG4gICgqKiBJZiB0aGUga2V5IGlzIHByZXNlbnQsIHRoZW4gcmVtb3ZlIGl0cyBoZWFkIGVsZW1lbnQ7IGlmIHRoZSByZXN1bHQgaXMgZW1wdHksIHJlbW92ZVxuICAgICAgdGhlIGtleS4gKilcbiAgdmFsIHJlbW92ZV9tdWx0aSA6ICgnaywgJ3YgbGlzdCwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2IGxpc3QsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgdmFsdWUgYm91bmQgdG8gdGhlIGdpdmVuIGtleSwgb3IgdGhlIGVtcHR5IGxpc3QgaWYgdGhlcmUgaXMgbm9uZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2ssICd2IGxpc3QsICdjbXApIHQgLT4gJ2sgLT4gJ3YgbGlzdFxuXG4gICgqKiBbY2hhbmdlIHQga2V5IH5mXSByZXR1cm5zIGEgbmV3IG1hcCBbbV0gdGhhdCBpcyB0aGUgc2FtZSBhcyBbdF0gb24gYWxsIGtleXMgZXhjZXB0XG4gICAgICBmb3IgW2tleV0sIGFuZCB3aG9zZSB2YWx1ZSBmb3IgW2tleV0gaXMgZGVmaW5lZCBieSBbZl0sIGkuZS4sIFtmaW5kIG0ga2V5ID0gZiAoZmluZFxuICAgICAgdCBrZXkpXS4gKilcbiAgdmFsIGNoYW5nZSA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gZjooJ3Ygb3B0aW9uIC0+ICd2IG9wdGlvbikgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBbdXBkYXRlIHQga2V5IH5mXSBpcyBbY2hhbmdlIHQga2V5IH5mOihmdW4gbyAtPiBTb21lIChmIG8pKV0uICopXG4gIHZhbCB1cGRhdGUgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+IGY6KCd2IG9wdGlvbiAtPiAndikgLT4gKCdrLCAndiwgJ2NtcCkgdFxuXG5cbiAgKCoqIFJldHVybnMgW1NvbWUgdmFsdWVdIGJvdW5kIHRvIHRoZSBnaXZlbiBrZXksIG9yIFtOb25lXSBpZiBub25lIGV4aXN0cy4gKilcbiAgdmFsIGZpbmQgOiAoJ2ssICd2LCAnY21wKSB0IC0+ICdrIC0+ICd2IG9wdGlvblxuXG4gICgqKiBSZXR1cm5zIHRoZSB2YWx1ZSBib3VuZCB0byB0aGUgZ2l2ZW4ga2V5LCByYWlzaW5nIFtDYW1sLk5vdF9mb3VuZF0gb3IgW05vdF9mb3VuZF9zXVxuICAgICAgaWYgbm9uZSBleGlzdHMuICopXG4gIHZhbCBmaW5kX2V4biA6ICgnaywgJ3YsICdjbXApIHQgLT4gJ2sgLT4gJ3ZcblxuICAoKiogUmV0dXJucyBhIG5ldyBtYXAgd2l0aCBhbnkgYmluZGluZyBmb3IgdGhlIGtleSBpbiBxdWVzdGlvbiByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFttZW0gbWFwIGtleV0gdGVzdHMgd2hldGhlciBbbWFwXSBjb250YWlucyBhIGJpbmRpbmcgZm9yIFtrZXldLiAqKVxuICB2YWwgbWVtIDogKCdrLCBfLCAnY21wKSB0IC0+ICdrIC0+IGJvb2xcblxuICB2YWwgaXRlcl9rZXlzIDogKCdrLCBfLCBfKSB0IC0+IGY6KCdrIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGl0ZXIgOiAoXywgJ3YsIF8pIHQgLT4gZjooJ3YgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlcmkgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IHVuaXQpIC0+IHVuaXRcblxuICAoKiogSXRlcmF0ZXMgdW50aWwgdGhlIGZpcnN0IHRpbWUgW2ZdIHJldHVybnMgW1N0b3BdLiBJZiBbZl0gcmV0dXJucyBbU3RvcF0sIHRoZSBmaW5hbFxuICAgICAgcmVzdWx0IGlzIFtVbmZpbmlzaGVkXS4gT3RoZXJ3aXNlLCB0aGUgZmluYWwgcmVzdWx0IGlzIFtGaW5pc2hlZF0uICopXG4gIHZhbCBpdGVyaV91bnRpbFxuICAgIDogICgnaywgJ3YsIF8pIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBDb250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gRmluaXNoZWRfb3JfdW5maW5pc2hlZC50XG5cbiAgKCoqIEl0ZXJhdGVzIHR3byBtYXBzIHNpZGUgYnkgc2lkZS4gVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBpcyBPKE0gKyBOKS4gIElmIHR3b1xuICAgICAgaW5wdXRzIGFyZSBbWygwLCBhKTsgKDEsIGEpXV0gYW5kIFtbKDEsIGIpOyAoMiwgYildXSwgW2ZdIHdpbGwgYmUgY2FsbGVkIHdpdGggW1soMCxcbiAgICAgIGBMZWZ0IGEpOyAoMSwgYEJvdGggKGEsIGIpKTsgKDIsIGBSaWdodCBiKV1dLiAqKVxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2ssICd2MSwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YyLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6KCd2MSwgJ3YyKSBNZXJnZV9lbGVtZW50LnQgLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIHJlcGxhY2VkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuKilcbiAgdmFsIG1hcCA6ICgnaywgJ3YxLCAnY21wKSB0IC0+IGY6KCd2MSAtPiAndjIpIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW21hcF0sIGJ1dCB0aGUgcGFzc2VkIGZ1bmN0aW9uIHRha2VzIGJvdGggW2tleV0gYW5kIFtkYXRhXSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBtYXBpIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICd2MikgLT4gKCdrLCAndjIsICdjbXApIHRcblxuICAoKiogQ29udmVydCBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdG8gYSBtYXAgd2l0aCBrZXlzIG9mIHR5cGUgWydrMl0gdXNpbmcgW2ZdLiAqKVxuICB2YWwgbWFwX2tleXNcbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gWyBgT2sgb2YgKCdrMiwgJ3YsICdjbXAyKSB0IHwgYER1cGxpY2F0ZV9rZXkgb2YgJ2syIF1cblxuICAoKiogTGlrZSBbbWFwX2tleXNdLCBidXQgcmFpc2VzIG9uIGR1cGxpY2F0ZSBrZXkuICopXG4gIHZhbCBtYXBfa2V5c19leG5cbiAgICA6ICAoJ2syLCAnY21wMikgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnazEsICd2LCAnY21wMSkgdFxuICAgIC0+IGY6KCdrMSAtPiAnazIpXG4gICAgLT4gKCdrMiwgJ3YsICdjbXAyKSB0XG5cbiAgKCoqIEZvbGRzIG92ZXIga2V5cyBhbmQgZGF0YSBpbiB0aGUgbWFwIGluIGluY3JlYXNpbmcgb3JkZXIgb2YgW2tleV0uICopXG4gIHZhbCBmb2xkIDogKCdrLCAndiwgXykgdCAtPiBpbml0OidhIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLCB1bnRpbCB0aGUgZmlyc3RcbiAgICAgIHRpbWUgdGhhdCBbZl0gcmV0dXJucyBbU3RvcCBfXS4gSWYgW2ZdIHJldHVybnMgW1N0b3AgZmluYWxdLCB0aGlzIGZ1bmN0aW9uIHJldHVybnNcbiAgICAgIGltbWVkaWF0ZWx5IHdpdGggdGhlIHZhbHVlIFtmaW5hbF0uIElmIFtmXSBuZXZlciByZXR1cm5zIFtTdG9wIF9dLCBhbmQgdGhlIGZpbmFsXG4gICAgICBjYWxsIHRvIFtmXSByZXR1cm5zIFtDb250aW51ZSBsYXN0XSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFtmaW5pc2ggbGFzdF0uICopXG4gIHZhbCBmb2xkX3VudGlsXG4gICAgOiAgKCdrLCAndiwgXykgdFxuICAgIC0+IGluaXQ6J2FjY1xuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhY2MgLT4gKCdhY2MsICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2MgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gICgqKiBGb2xkcyBvdmVyIGtleXMgYW5kIGRhdGEgaW4gdGhlIG1hcCBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIFtrZXldLiAqKVxuICB2YWwgZm9sZF9yaWdodCA6ICgnaywgJ3YsIF8pIHQgLT4gaW5pdDonYSAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiAnYSAtPiAnYSkgLT4gJ2FcblxuICAoKiogRm9sZHMgb3ZlciB0d28gbWFwcyBzaWRlIGJ5IHNpZGUsIGxpa2UgW2l0ZXIyXS4gKilcbiAgdmFsIGZvbGQyXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTooJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAnYSAtPiAnYSlcbiAgICAtPiAnYVxuXG4gICgqKiBbZmlsdGVyXSwgW2ZpbHRlcmldLCBbZmlsdGVyX2tleXNdLCBbZmlsdGVyX21hcF0sIGFuZCBbZmlsdGVyX21hcGldIHJ1biBpbiBPKG4gKiBsZ1xuICAgICAgbikgdGltZTsgdGhleSBzaW1wbHkgYWNjdW11bGF0ZSBlYWNoIGtleSAmIGRhdGEgcGFpciByZXRhaW5lZCBieSBbZl0gaW50byBhIG5ldyBtYXBcbiAgICAgIHVzaW5nIFthZGRdLiAqKVxuICB2YWwgZmlsdGVyX2tleXMgOiAoJ2ssICd2LCAnY21wKSB0IC0+IGY6KCdrIC0+IGJvb2wpIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICB2YWwgZmlsdGVyIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOigndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0XG4gIHZhbCBmaWx0ZXJpIDogKCdrLCAndiwgJ2NtcCkgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgbWFwIHdpdGggYm91bmQgdmFsdWVzIGZpbHRlcmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZCB2YWx1ZXMuICopXG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdrLCAndjEsICdjbXApIHQgLT4gZjooJ3YxIC0+ICd2MiBvcHRpb24pIC0+ICgnaywgJ3YyLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgW2ZpbHRlcl9tYXBdLCBidXQgdGhlIHBhc3NlZCBmdW5jdGlvbiB0YWtlcyBib3RoIFtrZXldIGFuZCBbZGF0YV0gYXNcbiAgICAgIGFyZ3VtZW50cy4gKilcbiAgdmFsIGZpbHRlcl9tYXBpXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiBmOihrZXk6J2sgLT4gZGF0YTondjEgLT4gJ3YyIG9wdGlvbilcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcGkgdCB+Zl0gcmV0dXJucyB0d28gbmV3IFt0XXMsIHdpdGggZWFjaCBrZXkgaW4gW3RdIGFwcGVhcmluZyBpblxuICAgICAgZXhhY3RseSBvbmUgb2YgdGhlIHJlc3VsdGluZyBtYXBzIGRlcGVuZGluZyBvbiBpdHMgbWFwcGluZyBpbiBbZl0uICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKiBbcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXSAqKVxuICB2YWwgcGFydGl0aW9uX21hcFxuICAgIDogICgnaywgJ3YxLCAnY21wKSB0XG4gICAgLT4gZjooJ3YxIC0+ICgndjIsICd2MykgRWl0aGVyLnQpXG4gICAgLT4gKCdrLCAndjIsICdjbXApIHQgKiAoJ2ssICd2MywgJ2NtcCkgdFxuXG4gICgqKlxuICAgICB7W1xuICAgICAgIHBhcnRpdGlvbmlfdGYgdCB+ZlxuICAgICAgID1cbiAgICAgICBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICAgaWYgZiB+a2V5IH5kYXRhXG4gICAgICAgICB0aGVuIEZpcnN0IGRhdGFcbiAgICAgICAgIGVsc2UgU2Vjb25kIGRhdGEpXG4gICAgIF19ICopXG4gIHZhbCBwYXJ0aXRpb25pX3RmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW3BhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uaV90ZiB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSldICopXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZjooJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrLCAndiwgJ2NtcCkgdFxuXG4gICgqKiBQcm9kdWNlcyBbT2tdIG9mIGEgbWFwIGluY2x1ZGluZyBhbGwga2V5cyBpZiBhbGwgZGF0YSBpcyBbT2tdLCBvciBhbiBbRXJyb3JdXG4gICAgICBpbmNsdWRpbmcgYWxsIGVycm9ycyBvdGhlcndpc2UuICopXG4gIHZhbCBjb21iaW5lX2Vycm9ycyA6ICgnaywgJ3YgT3JfZXJyb3IudCwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IE9yX2Vycm9yLnRcblxuICAoKiogUmV0dXJucyBhIHRvdGFsIG9yZGVyaW5nIGJldHdlZW4gbWFwcy4gVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgdG90YWwgb3JkZXJpbmcgdXNlZFxuICAgICAgdG8gY29tcGFyZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBlcXVhbCBrZXlzIGluIHRoZSB0d28gbWFwcy4gKilcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCd2IC0+ICd2IC0+IGludCkgLT4gKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSB0IC0+IGludFxuXG4gICgqKiBIYXNoIGZ1bmN0aW9uOiBhIGJ1aWxkaW5nIGJsb2NrIHRvIHVzZSB3aGVuIGhhc2hpbmcgZGF0YSBzdHJ1Y3R1cmVzIGNvbnRhaW5pbmcgbWFwcyBpblxuICAgICAgdGhlbS4gW2hhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFtjb21wYXJlX2RpcmVjdF0gaWZmXG4gICAgICBbaGFzaF9mb2xkX2tleV0gaXMgY29tcGF0aWJsZSB3aXRoIFsoY29tcGFyYXRvciBtKS5jb21wYXJlXSBvZiB0aGUgbWFwIFttXSBiZWluZ1xuICAgICAgaGFzaGVkLiAqKVxuICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdrIEhhc2guZm9sZGVyIC0+ICd2IEhhc2guZm9sZGVyIC0+ICgnaywgJ3YsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAoKiogW2VxdWFsIGNtcCBtMSBtMl0gdGVzdHMgd2hldGhlciB0aGUgbWFwcyBbbTFdIGFuZCBbbTJdIGFyZSBlcXVhbCwgdGhhdCBpcywgY29udGFpblxuICAgICAgdGhlIHNhbWUga2V5cyBhbmQgYXNzb2NpYXRlIGVhY2gga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUuICBbY21wXSBpcyB0aGUgZXF1YWxpdHlcbiAgICAgIHByZWRpY2F0ZSB1c2VkIHRvIGNvbXBhcmUgdGhlIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGtleXMuICopXG4gIHZhbCBlcXVhbCA6ICgndiAtPiAndiAtPiBib29sKSAtPiAoJ2ssICd2LCAnY21wKSB0IC0+ICgnaywgJ3YsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIGEgbGlzdCBvZiB0aGUga2V5cyBpbiB0aGUgZ2l2ZW4gbWFwLiAqKVxuICB2YWwga2V5cyA6ICgnaywgXywgXykgdCAtPiAnayBsaXN0XG5cbiAgKCoqIFJldHVybnMgYSBsaXN0IG9mIHRoZSBkYXRhIGluIHRoZSBnaXZlbiBtYXAuICopXG4gIHZhbCBkYXRhIDogKF8sICd2LCBfKSB0IC0+ICd2IGxpc3RcblxuICAoKiogQ3JlYXRlcyBhbiBhc3NvY2lhdGlvbiBsaXN0IGZyb20gdGhlIGdpdmVuIG1hcC4gKilcbiAgdmFsIHRvX2FsaXN0XG4gICAgOiAgP2tleV9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXSAoKiogZGVmYXVsdCBpcyBbYEluY3JlYXNpbmddICopXG4gICAgLT4gKCdrLCAndiwgXykgdFxuICAgIC0+ICgnayAqICd2KSBsaXN0XG5cbiAgKCoqIHsyIEFkZGl0aW9uYWwgb3BlcmF0aW9ucyBvbiBtYXBzfSAqKVxuXG4gICgqKiBNZXJnZXMgdHdvIG1hcHMuIFRoZSBydW50aW1lIGlzIE8obGVuZ3RoKHQxKSArIGxlbmd0aCh0MikpLiBZb3Ugc2hvdWxkbid0IHVzZSB0aGlzXG4gICAgICBmdW5jdGlvbiB0byBtZXJnZSBhIGxpc3Qgb2YgbWFwczsgY29uc2lkZXIgdXNpbmcgW21lcmdlX3NrZXdlZF0gaW5zdGVhZC4gKilcbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdrLCAndjEsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2MiwgJ2NtcCkgdFxuICAgIC0+IGY6KGtleTonayAtPiAoJ3YxLCAndjIpIE1lcmdlX2VsZW1lbnQudCAtPiAndjMgb3B0aW9uKVxuICAgIC0+ICgnaywgJ3YzLCAnY21wKSB0XG5cbiAgKCoqIEEgc3BlY2lhbCBjYXNlIG9mIFttZXJnZV0sIFttZXJnZV9za2V3ZWQgdDEgdDJdIGlzIGEgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZVxuICAgICAgYmluZGluZ3Mgb2YgW3QxXSBhbmQgW3QyXS4gQmluZGluZ3MgdGhhdCBhcHBlYXIgaW4gYm90aCBbdDFdIGFuZCBbdDJdIGFyZVxuICAgICAgY29tYmluZWQgaW50byBhIHNpbmdsZSB2YWx1ZSB1c2luZyB0aGUgW2NvbWJpbmVdIGZ1bmN0aW9uLiBJbiBhIGNhbGxcbiAgICAgIFtjb21iaW5lIH5rZXkgdjEgdjJdLCB0aGUgdmFsdWUgW3YxXSBjb21lcyBmcm9tIFt0MV0gYW5kIFt2Ml0gZnJvbSBbdDJdLlxuXG4gICAgICBUaGUgcnVudGltZSBvZiBbbWVyZ2Vfc2tld2VkXSBpcyBbTyhtaW4obDEsIGwyKSAqIGxvZyhtYXgobDEsIGwyKSkpXSwgd2hlcmUgW2wxXSBpc1xuICAgICAgdGhlIGxlbmd0aCBvZiBbdDFdIGFuZCBbbDJdIHRoZSBsZW5ndGggb2YgW3QyXS4gVGhpcyBpcyBsaWtlbHkgdG8gYmUgZmFzdGVyIHRoYW5cbiAgICAgIFttZXJnZV0gd2hlbiBvbmUgb2YgdGhlIG1hcHMgaXMgYSBsb3Qgc21hbGxlciwgb3Igd2hlbiB5b3UgbWVyZ2UgYSBsaXN0IG9mIG1hcHMuICopXG4gIHZhbCBtZXJnZV9za2V3ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbWJpbmU6KGtleTonayAtPiAndiAtPiAndiAtPiAndilcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgbW9kdWxlIFN5bW1ldHJpY19kaWZmX2VsZW1lbnQgOiBzaWdcbiAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkNvbXBhcmFibGUuUzIgd2l0aCB0eXBlICgnaywgJ3YpIHQgOj0gKCdrLCAndikgdFxuICAgIGluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkVxdWFsLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2ssICd2KSB0IDo9ICgnaywgJ3YpIHRcblxuICAgIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgICAgOiAgJ2sgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAgIC0+ICd2IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgICBbQEBAZW5kXVxuICBlbmRcblxuICAoKiogW3N5bW1ldHJpY19kaWZmIHQxIHQyIH5kYXRhX2VxdWFsXSByZXR1cm5zIGEgbGlzdCBvZiBjaGFuZ2VzIGJldHdlZW4gW3QxXSBhbmQgW3QyXS5cbiAgICAgIEl0IGlzIGludGVuZGVkIHRvIGJlIGVmZmljaWVudCBpbiB0aGUgY2FzZSB3aGVyZSBbdDFdIGFuZCBbdDJdIHNoYXJlIGEgbGFyZ2UgYW1vdW50XG4gICAgICBvZiBzdHJ1Y3R1cmUuIFRoZSBrZXlzIGluIHRoZSBvdXRwdXQgc2VxdWVuY2Ugd2lsbCBiZSBpbiBzb3J0ZWQgb3JkZXIuXG5cbiAgICAgIEl0IGlzIGFzc3VtZWQgdGhhdCBbZGF0YV9lcXVhbF0gaXMgYXQgbGVhc3QgYXMgZXF1YXRpbmcgYXMgcGh5c2ljYWwgZXF1YWxpdHk6IHRoYXRcbiAgICAgIFtwaHlzX2VxdWFsIHggeV0gaW1wbGllcyBbZGF0YV9lcXVhbCB4IHldLiBPdGhlcndpc2UsIFtzeW1tZXRyaWNfZGlmZl0gbWF5IGJlaGF2ZSBpblxuICAgICAgdW5leHBlY3RlZCB3YXlzLiBGb3IgZXhhbXBsZSwgd2l0aCBbfmRhdGFfZXF1YWw6KGZ1biBfIF8gLT4gZmFsc2UpXSBpdCBpcyBOT1RcbiAgICAgIG5lY2Vzc2FyaWx5IHRoZSBjYXNlIHRoZSByZXN1bHRpbmcgY2hhbmdlIHNlcXVlbmNlIHdpbGwgY29udGFpbiBhbiBlbGVtZW50XG4gICAgICBbKGssIGBVbmVxdWFsIF8pXSBmb3IgZXZlcnkga2V5IFtrXSBzaGFyZWQgYnkgYm90aCBtYXBzLlxuXG4gICAgICBXYXJuaW5nOiBGbG9hdCBlcXVhbGl0eSB2aW9sYXRlcyB0aGlzIHByb3BlcnR5ISBbcGh5c19lcXVhbCBGbG9hdC5uYW4gRmxvYXQubmFuXSBpc1xuICAgICAgdHJ1ZSwgYnV0IFtGbG9hdC4oPSkgRmxvYXQubmFuIEZsb2F0Lm5hbl0gaXMgZmFsc2UuICopXG4gIHZhbCBzeW1tZXRyaWNfZGlmZlxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gZGF0YV9lcXVhbDooJ3YgLT4gJ3YgLT4gYm9vbClcbiAgICAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbZm9sZF9zeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbF0gZm9sZHMgYWNyb3NzIGFuIGltcGxpY2l0IHNlcXVlbmNlIG9mIGNoYW5nZXNcbiAgICAgIGJldHdlZW4gW3QxXSBhbmQgW3QyXSwgaW4gc29ydGVkIG9yZGVyIGJ5IGtleXMuIEVxdWl2YWxlbnQgdG9cbiAgICAgIFtTZXF1ZW5jZS5mb2xkIChzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCldLCBhbmQgbW9yZSBlZmZpY2llbnQuICopXG4gIHZhbCBmb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBkYXRhX2VxdWFsOigndiAtPiAndiAtPiBib29sKVxuICAgIC0+IGluaXQ6J2FcbiAgICAtPiBmOignYSAtPiAoJ2ssICd2KSBTeW1tZXRyaWNfZGlmZl9lbGVtZW50LnQgLT4gJ2EpXG4gICAgLT4gJ2FcblxuICAoKiogW21pbl9lbHQgbWFwXSByZXR1cm5zIFtTb21lIChrZXksIGRhdGEpXSBwYWlyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1pbmltdW0ga2V5IGluXG4gICAgICBbbWFwXSwgb3IgW05vbmVdIGlmIGVtcHR5LiAqKVxuICB2YWwgbWluX2VsdCA6ICgnaywgJ3YsIF8pIHQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnaywgJ3YsIF8pIHQgLT4gJ2sgKiAndlxuXG4gICgqKiBbbWF4X2VsdCBtYXBdIHJldHVybnMgW1NvbWUgKGtleSwgZGF0YSldIHBhaXIgY29ycmVzcG9uZGluZyB0byB0aGUgbWF4aW11bSBrZXkgaW5cbiAgICAgIFttYXBdLCBvciBbTm9uZV0gaWYgW21hcF0gaXMgZW1wdHkuICopXG4gIHZhbCBtYXhfZWx0IDogKCdrLCAndiwgXykgdCAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgdmFsIG1heF9lbHRfZXhuIDogKCdrLCAndiwgXykgdCAtPiAnayAqICd2XG5cbiAgKCoqIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBhcyBzaW1pbGFyIGZ1bmN0aW9ucyBpbiBbTGlzdF0uICopXG5cbiAgdmFsIGZvcl9hbGwgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGZvcl9hbGxpIDogKCdrLCAndiwgXykgdCAtPiBmOihrZXk6J2sgLT4gZGF0YTondiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KCd2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAoJ2ssICd2LCBfKSB0IC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50IDogKCdrLCAndiwgXykgdCAtPiBmOigndiAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGNvdW50aSA6ICgnaywgJ3YsIF8pIHQgLT4gZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gYm9vbCkgLT4gaW50XG5cblxuICAoKiogW3NwbGl0IHQga2V5XSByZXR1cm5zIGEgbWFwIG9mIGtleXMgc3RyaWN0bHkgbGVzcyB0aGFuIFtrZXldLCB0aGUgbWFwcGluZyBvZiBba2V5XSBpZlxuICAgICAgYW55LCBhbmQgYSBtYXAgb2Yga2V5cyBzdHJpY3RseSBncmVhdGVyIHRoYW4gW2tleV0uXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3V0cHV0IG1hcHMuICBUaGUgTyhtKSB0ZXJtIGlzIGR1ZSB0byB0aGUgbmVlZCB0byBjYWxjdWxhdGVcbiAgICAgIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCBtYXBzLiAqKVxuICB2YWwgc3BsaXRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gJ2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0ICogKCdrICogJ3YpIG9wdGlvbiAqICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW2FwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydF0gcmV0dXJucyBbYE9rIG1hcF0gd2hlcmUgW21hcF0gY29udGFpbnMgYWxsIHRoZVxuICAgICAgWyhrZXksIHZhbHVlKV0gcGFpcnMgZnJvbSB0aGUgdHdvIGlucHV0IG1hcHMgaWYgYWxsIHRoZSBrZXlzIGZyb20gW2xvd2VyX3BhcnRdIGFyZVxuICAgICAgbGVzcyB0aGFuIGFsbCB0aGUga2V5cyBmcm9tIFt1cHBlcl9wYXJ0XS4gIE90aGVyd2lzZSBpdCByZXR1cm5zXG4gICAgICBbYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNdLlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG4pIHdoZXJlIG4gaXMgdGhlIHNpemUgb2YgdGhlIGxhcmdlciBpbnB1dCBtYXAuICBUaGlzIGNhbiBiZVxuICAgICAgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBbTWFwLm1lcmdlXSBvciByZXBlYXRlZCBbTWFwLmFkZF0uXG5cbiAgICAgIHtbXG4gICAgICAgIGFzc2VydCAobWF0Y2ggTWFwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB3aXRoXG4gICAgICAgICAgfCBgT2sgd2hvbGVfbWFwIC0+XG4gICAgICAgICAgICBNYXAudG9fYWxpc3Qgd2hvbGVfbWFwXG4gICAgICAgICAgICA9IExpc3QuYXBwZW5kICh0b19hbGlzdCBsb3dlcl9wYXJ0KSAodG9fYWxpc3QgdXBwZXJfcGFydClcbiAgICAgICAgICB8IGBPdmVybGFwcGluZ19rZXlfcmFuZ2VzIC0+IHRydWUpO1xuICAgICAgXX0gKilcbiAgdmFsIGFwcGVuZFxuICAgIDogIGxvd2VyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IHVwcGVyX3BhcnQ6KCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IFsgYE9rIG9mICgnaywgJ3YsICdjbXApIHQgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyBdXG5cbiAgKCoqIFtzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRdIHJldHVybnMgYSBtYXAgY29udGFpbmluZyBhbGwgdGhlIGVudHJpZXMgZnJvbVxuICAgICAgW3RdIHdob3NlIGtleXMgbGllIGluc2lkZSB0aGUgaW50ZXJ2YWwgaW5kaWNhdGVkIGJ5IFt+bG93ZXJfYm91bmRdIGFuZFxuICAgICAgW351cHBlcl9ib3VuZF0uICBJZiB0aGlzIGludGVydmFsIGlzIGVtcHR5LCBhbiBlbXB0eSBtYXAgaXMgcmV0dXJuZWQuXG5cbiAgICAgIFJ1bnRpbWUgaXMgTyhtICsgbG9nIG4pLCB3aGVyZSBuIGlzIHRoZSBzaXplIG9mIHRoZSBpbnB1dCBtYXAgYW5kIG0gaXMgdGhlIHNpemUgb2ZcbiAgICAgIHRoZSBvdXRwdXQgbWFwLiAgVGhlIE8obSkgdGVybSBpcyBkdWUgdG8gdGhlIG5lZWQgdG8gY2FsY3VsYXRlIHRoZSBsZW5ndGggb2YgdGhlXG4gICAgICBvdXRwdXQgbWFwLiAqKVxuICB2YWwgc3VicmFuZ2VcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gbG93ZXJfYm91bmQ6J2sgTWF5YmVfYm91bmQudFxuICAgIC0+IHVwcGVyX2JvdW5kOidrIE1heWJlX2JvdW5kLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIFtmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+Zl0gZm9sZHMgW2ZdICh3aXRoIGluaXRpYWwgdmFsdWUgW35pbml0XSlcbiAgICAgIG92ZXIgYWxsIGtleXMgKGFuZCB0aGVpciBhc3NvY2lhdGVkIHZhbHVlcykgdGhhdCBhcmUgaW4gdGhlIHJhbmdlIFtbbWluLCBtYXhdXVxuICAgICAgKGluY2x1c2l2ZSkuICAqKVxuICB2YWwgZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gbWluOidrXG4gICAgLT4gbWF4OidrXG4gICAgLT4gaW5pdDonYVxuICAgIC0+IGY6KGtleTonayAtPiBkYXRhOid2IC0+ICdhIC0+ICdhKVxuICAgIC0+ICdhXG5cbiAgKCoqIFtyYW5nZV90b19hbGlzdCB0IH5taW4gfm1heF0gcmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBsaXN0IG9mIHRoZSBlbGVtZW50cyB3aG9zZSBrZXlzXG4gICAgICBsaWUgaW4gW1ttaW4sIG1heF1dIChpbmNsdXNpdmUpLCB3aXRoIHRoZSBzbWFsbGVzdCBrZXkgYmVpbmcgYXQgdGhlIGhlYWQgb2YgdGhlXG4gICAgICBsaXN0LiAqKVxuICB2YWwgcmFuZ2VfdG9fYWxpc3QgOiAoJ2ssICd2LCAnY21wKSB0IC0+IG1pbjonayAtPiBtYXg6J2sgLT4gKCdrICogJ3YpIGxpc3RcblxuICAoKiogW2Nsb3Nlc3Rfa2V5IHQgZGlyIGtdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgaW4gW3RdIHdpdGggW2tleV0gY2xvc2VzdCB0b1xuICAgICAgW2tdIHRoYXQgc2F0aXNmaWVzIHRoZSBnaXZlbiBpbmVxdWFsaXR5IGJvdW5kLlxuXG4gICAgICBGb3IgZXhhbXBsZSwgW2Nsb3Nlc3Rfa2V5IHQgYExlc3NfdGhhbiBrXSB3b3VsZCBiZSB0aGUgcGFpciB3aXRoIHRoZSBjbG9zZXN0IGtleSB0b1xuICAgICAgW2tdIHdoZXJlIFtrZXkgPCBrXS5cblxuICAgICAgW3RvX3NlcXVlbmNlXSBjYW4gYmUgdXNlZCB0byBnZXQgdGhlIHNhbWUgcmVzdWx0cyBhcyBbY2xvc2VzdF9rZXldLiAgSXQgaXMgbGVzc1xuICAgICAgZWZmaWNpZW50IGZvciBpbmRpdmlkdWFsIGxvb2t1cHMgYnV0IG1vcmUgZWZmaWNpZW50IGZvciBmaW5kaW5nIG1hbnkgZWxlbWVudHMgc3RhcnRpbmdcbiAgICAgIGF0IHNvbWUgdmFsdWUuICopXG4gIHZhbCBjbG9zZXN0X2tleVxuICAgIDogICgnaywgJ3YsICdjbXApIHRcbiAgICAtPiBbIGBHcmVhdGVyX29yX2VxdWFsX3RvIHwgYEdyZWF0ZXJfdGhhbiB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiBdXG4gICAgLT4gJ2tcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtudGggdCBuXSBmaW5kcyB0aGUgKGtleSwgdmFsdWUpIHBhaXIgb2YgcmFuayBuIChpLmUuLCBzdWNoIHRoYXQgdGhlcmUgYXJlIGV4YWN0bHkgblxuICAgICAga2V5cyBzdHJpY3RseSBsZXNzIHRoYW4gdGhlIGZvdW5kIGtleSksIGlmIG9uZSBleGlzdHMuICBPKGxvZyhsZW5ndGggdCkgKyBuKSB0aW1lLiAqKVxuICB2YWwgbnRoIDogKCdrLCAndiwgXykgdCAtPiBpbnQgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gIHZhbCBudGhfZXhuIDogKCdrLCAndiwgXykgdCAtPiBpbnQgLT4gJ2sgKiAndlxuXG4gICgqKiBbcmFuayB0IGtdIElmIFtrXSBpcyBpbiBbdF0sIHJldHVybnMgdGhlIG51bWJlciBvZiBrZXlzIHN0cmljdGx5IGxlc3MgdGhhbiBba10gaW5cbiAgICAgIFt0XSwgYW5kIFtOb25lXSBvdGhlcndpc2UuICopXG4gIHZhbCByYW5rIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAnayAtPiBpbnQgb3B0aW9uXG5cblxuXG4gICgqKiBbdG9fc2VxdWVuY2UgP29yZGVyID9rZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2tleXNfbGVzc19vcl9lcXVhbF90byB0XVxuICAgICAgZ2l2ZXMgYSBzZXF1ZW5jZSBvZiBrZXktdmFsdWUgcGFpcnMgYmV0d2VlbiBba2V5c19sZXNzX29yX2VxdWFsX3RvXSBhbmRcbiAgICAgIFtrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGluY2x1c2l2ZSwgcHJlc2VudGVkIGluIFtvcmRlcl0uICBJZlxuICAgICAgW2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA+IGtleXNfbGVzc19vcl9lcXVhbF90b10sIHRoZSBzZXF1ZW5jZSBpc1xuICAgICAgZW1wdHkuXG5cbiAgICAgIFdoZW4gbmVpdGhlciBba2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXSBub3IgW2tleXNfbGVzc19vcl9lcXVhbF90b10gYXJlXG4gICAgICBwcm92aWRlZCwgdGhlIGNvc3QgaXMgTyhsb2cgbikgdXAgZnJvbnQgYW5kIGFtb3J0aXplZCBPKDEpIHRvIHByb2R1Y2VcbiAgICAgIGVhY2ggZWxlbWVudC4gSWYgZWl0aGVyIGlzIHByb3ZpZGVkIChhbmQgaXMgdXNlZCBieSB0aGUgb3JkZXIgcGFyYW1ldGVyXG4gICAgICBwcm92aWRlZCksIHRoZW4gdGhlIHRoZSBjb3N0IGlzIE8obikgdXAgZnJvbnQsIGFuZCBhbW9ydGl6ZWQgTygxKSB0b1xuICAgICAgcHJvZHVjZSBlYWNoIGVsZW1lbnQuICopXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nX2tleSAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nX2tleSBdXG4gICAgLT4gP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90bzona1xuICAgIC0+ID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG86J2tcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gKCdrICogJ3YpIFNlcXVlbmNlLnRcblxuICAoKiogW2JpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSB3aGljaCBlbHRdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgaW4gW3RdXG4gICAgICBzcGVjaWZpZWQgYnkgW2NvbXBhcmVdIGFuZCBbd2hpY2hdLCBpZiBvbmUgZXhpc3RzLlxuXG4gICAgICBbdF0gbXVzdCBiZSBzb3J0ZWQgaW4gaW5jcmVhc2luZyBvcmRlciBhY2NvcmRpbmcgdG8gW2NvbXBhcmVdLCB3aGVyZSBbY29tcGFyZV0gYW5kXG4gICAgICBbZWx0XSBkaXZpZGUgW3RdIGludG8gdGhyZWUgKHBvc3NpYmx5IGVtcHR5KSBzZWdtZW50czpcblxuICAgICAge3ZcbiAgICAgICAgfCAgPCBlbHQgIHwgID0gZWx0ICB8ICA+IGVsdCAgfFxuICAgICAgdn1cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIHJldHVybnMgYW4gZWxlbWVudCBvbiB0aGUgYm91bmRhcnkgb2Ygc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5XG4gICAgICBbd2hpY2hdLiAgU2VlIHRoZSBkaWFncmFtIGJlbG93IG5leHQgdG8gdGhlIFt3aGljaF0gdmFyaWFudHMuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoXSBkb2VzIG5vdCBjaGVjayB0aGF0IFtjb21wYXJlXSBvcmRlcnMgW3RdLCBhbmQgYmVoYXZpb3IgaXNcbiAgICAgIHVuc3BlY2lmaWVkIGlmIFtjb21wYXJlXSBkb2Vzbid0IG9yZGVyIFt0XS4gIEJlaGF2aW9yIGlzIGFsc28gdW5zcGVjaWZpZWQgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gY29tcGFyZTooa2V5OidrIC0+IGRhdGE6J3YgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gWyBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gKCoqICAgICAgICB7diB8IDwgZWx0IFggfCAgICAgICAgICAgICAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byAoKiogICAgIHt2IHwgICAgICA8PSBlbHQgICAgICAgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYExhc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgICA9IGVsdCBYIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZXF1YWxfdG8gKCoqICAgICAgICAgICAgICAgICB7diAgICAgICAgICAgfCBYID0gZWx0ICAgfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gKCoqIHt2ICAgICAgICAgICB8IFggICAgICAgPj0gZWx0ICAgICAgfCB2fSAqKVxuICAgICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAoKiogICAge3YgICAgICAgICAgICAgICAgICAgICAgIHwgWCA+IGVsdCB8IHZ9ICopXG4gICAgICAgXVxuICAgIC0+ICdrZXlcbiAgICAtPiAoJ2sgKiAndikgb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIFsoa2V5LCB2YWx1ZSldIHBhaXIgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZVxuICAgICAgc2VnbWVudHMgYXMgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGVcbiAgICAgIGxlZnQgc2VnbWVudCwgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LlxuICAgICAgSXQgcmV0dXJucyBbTm9uZV0gaWYgdGhlIHNlZ21lbnQgaXMgZW1wdHkuXG5cbiAgICAgIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZF0gZG9lcyBub3QgY2hlY2sgdGhhdCBbc2VnbWVudF9vZl0gc2VnbWVudHMgW3RdIGFzIGluIHRoZVxuICAgICAgZGlhZ3JhbSwgYW5kIGJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBkb2Vzbid0IHNlZ21lbnQgW3RdLiAgQmVoYXZpb3JcbiAgICAgIGlzIGFsc28gdW5zcGVjaWZpZWQgaWYgW3NlZ21lbnRfb2ZdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2ssICd2LCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooa2V5OidrIC0+IGRhdGE6J3YgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gKCdrICogJ3YpIG9wdGlvblxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaF9zdWJyYW5nZV0gdGFrZXMgYSBbY29tcGFyZV0gZnVuY3Rpb24gdGhhdCBkaXZpZGVzIFt0XSBpbnRvIHRocmVlXG4gICAgICAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzIHdpdGggcmVzcGVjdCB0byBbbG93ZXJfYm91bmRdIGFuZCBbdXBwZXJfYm91bmRdOlxuXG4gICAgICB7dlxuICAgICAgICB8IEJlbG93X2xvd2VyX2JvdW5kIHwgSW5fcmFuZ2UgfCBBYm92ZV91cHBlcl9ib3VuZCB8XG4gICAgICB2fVxuXG4gICAgICBhbmQgcmV0dXJucyBhIG1hcCBvZiB0aGUgW0luX3JhbmdlXSBzZWdtZW50LlxuXG4gICAgICBSdW50aW1lIGlzIE8obG9nIG0gKyBuKSB3aGVyZSBbbV0gaXMgdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgbWFwIGFuZCBbbl0gaXMgdGhlXG4gICAgICBsZW5ndGggb2YgdGhlIG91dHB1dC4gVGhlIGxpbmVhciB0ZXJtIGluIFtuXSBpcyB0byBjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dC5cblxuICAgICAgQmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIFtjb21wYXJlXSBkb2VzIG5vdCBzZWdtZW50IFt0XSBhcyBzaG93biBhYm92ZSwgb3IgaWZcbiAgICAgIFtjb21wYXJlXSBtdXRhdGVzIGl0cyBpbnB1dHMuICopXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlXG4gICAgOiAgKCdrLCAndiwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KGtleTonayAtPiBkYXRhOid2IC0+ICdib3VuZCAtPiBpbnQpXG4gICAgLT4gbG93ZXJfYm91bmQ6J2JvdW5kIE1heWJlX2JvdW5kLnRcbiAgICAtPiB1cHBlcl9ib3VuZDonYm91bmQgTWF5YmVfYm91bmQudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAoKiogW01dIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBPQ2FtbCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVzOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfbWFwID0gaW50IE1hcC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfdG9faW50X21hcCA9IChTdHJpbmcudCwgaW50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBNYXAudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW2ludCBNYXAuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmQgc3ludGF4XG4gICAgICBkb2Vzbid0IChiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMsIHNheSwgW1N0cmluZy5zZXhwX29mX2NvbXBhcmF0b3Jfd2l0bmVzc11cbiAgICAgIC0tIGluc3RlYWQgeW91IHdvdWxkIHdhbnQgdG8gcGFzcyB0aGUgY29tcGFyYXRvciBkaXJlY3RseSkuXG5cbiAgICAgIEluIGFkZGl0aW9uLCB3aGVuIHVzaW5nIFtAQGRlcml2aW5nXSwgdGhlIHJlcXVpcmVtZW50cyBvbiB0aGUga2V5IG1vZHVsZSBhcmUgb25seVxuICAgICAgdGhvc2UgbmVlZGVkIHRvIHNhdGlzZnkgd2hhdCB5b3UgYXJlIHRyeWluZyB0byBkZXJpdmUgb24gdGhlIG1hcCBpdHNlbGYuIFNheSB5b3VcbiAgICAgIHdyaXRlOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHQgPSBpbnQgTWFwLk0oWCkudCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgXX1cblxuICAgICAgdGhlbiB0aGlzIHdpbGwgYmUgd2VsbCB0eXBlZCBleGFjdGx5IGlmIFtYXSBjb250YWlucyBhdCBsZWFzdDpcbiAgICAgIC0gYSB0eXBlIFt0XSB3aXRoIG5vIHBhcmFtZXRlcnNcbiAgICAgIC0gYSBjb21wYXJhdG9yIHdpdG5lc3NcbiAgICAgIC0gYSBbaGFzaF9mb2xkX3RdIGZ1bmN0aW9uIHdpdGggdGhlIHJpZ2h0IHR5cGUgKilcbiAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICBlbmRcblxuICBpbmNsdWRlIEZvcl9kZXJpdmluZyB3aXRoIHR5cGUgKCdrZXksICd2YWx1ZSwgJ2NtcCkgdCA6PSAoJ2tleSwgJ3ZhbHVlLCAnY21wKSB0XG5cbiAgKCoqIFtVc2luZ19jb21wYXJhdG9yXSBpcyBhIHNpbWlsYXIgaW50ZXJmYWNlIGFzIHRoZSB0b3BsZXZlbCBvZiBbTWFwXSwgZXhjZXB0IHRoZVxuICAgICAgZnVuY3Rpb25zIHRha2UgYSBbfmNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRdLCB3aGVyZWFzIHRoZSBmdW5jdGlvbnMgYXQgdGhlXG4gICAgICB0b3BsZXZlbCBvZiBbTWFwXSB0YWtlIGEgWygnaywgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdrLCArJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG4gICAgdmFsIHNleHBfb2ZfdFxuICAgICAgOiAgKCdrIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgndiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgLT4gKFNleHAudCAtPiAnaylcbiAgICAgIC0+IChTZXhwLnQgLT4gJ3YpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICB0eXBlICgrJ2ssICsndiwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2sgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ3YgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcbiAgICAgICAgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICAgIFtAQEBlbmRdXG5cbiAgICAgIHZhbCB0X29mX3NleHBfZGlyZWN0XG4gICAgICAgIDogIGNvbXBhcmF0b3I6KCdrLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgICAgLT4gKFNleHAudCAtPiAnaylcbiAgICAgICAgLT4gKFNleHAudCAtPiAndilcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnaywgJ3YsICdjbXApIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfLCBfKSB0XG5cbiAgICAgICgqKiBbQnVpbGRfaW5jcmVhc2luZ10gY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgbWFwIGluY3JlbWVudGFsbHkgZnJvbSBhXG4gICAgICAgICAgc2VxdWVuY2UgdGhhdCBpcyBrbm93biB0byBiZSBpbmNyZWFzaW5nLlxuXG4gICAgICAgICAgVGhlIHRvdGFsIHRpbWUgY29tcGxleGl0eSBvZiBjb25zdHJ1Y3RpbmcgYSBtYXAgdGhpcyB3YXkgaXMgTyhuKSwgd2hpY2ggaXMgbW9yZVxuICAgICAgICAgIGVmZmljaWVudCB0aGFuIHVzaW5nIFtNYXAuYWRkXSBieSBhIGxvZ2FyaXRobWljIGZhY3Rvci5cblxuICAgICAgICAgIFRoaXMgaW50ZXJmYWNlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgZHVhbCBvZiBbdG9fc2VxdWVuY2VdLCBidXQgd2UgZG9uJ3QgaGF2ZVxuICAgICAgICAgIGFuIGVxdWFsbHkgbmVhdCBpZGlvbSBmb3IgdGhlIGR1YWxzIG9mIHNlcXVlbmNlcyAoW29mX3NlcXVlbmNlXSBpcyBtdWNoIGxlc3NcbiAgICAgICAgICBnZW5lcmFsIGJlY2F1c2UgaXQgZG9lcyBub3QgYWxsb3cgdGhlIHNlcXVlbmNlIHRvIGJlIHByb2R1Y2VkIGFzeW5jaHJvbm91c2x5KS4gKilcbiAgICAgIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nIDogc2lnXG4gICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgICAgdHlwZSAoJ2ssICd2LCAndykgdFxuXG4gICAgICAgIHZhbCBlbXB0eSA6ICgnaywgJ3YsICd3KSB0XG5cbiAgICAgICAgKCoqIFRpbWUgY29tcGxleGl0eSBvZiBbYWRkX2V4bl0gaXMgYW1vcnRpemVkIGNvbnN0YW50LXRpbWUgKGlmIFt0XSBpcyB1c2VkXG4gICAgICAgICAgICBsaW5lYXJseSksIHdpdGggYSB3b3JzdC1jYXNlIE8obG9nKG4pKSB0aW1lLiAqKVxuICAgICAgICB2YWwgYWRkX2V4blxuICAgICAgICAgIDogICgnaywgJ3YsICd3KSB0XG4gICAgICAgICAgLT4gY29tcGFyYXRvcjooJ2ssICd3KSBDb21wYXJhdG9yLnRcbiAgICAgICAgICAtPiBrZXk6J2tcbiAgICAgICAgICAtPiBkYXRhOid2XG4gICAgICAgICAgLT4gKCdrLCAndiwgJ3cpIHRcblxuICAgICAgICAoKiogVGltZSBjb21wbGV4aXR5IGlzIE8obG9nKG4pKS4gKilcbiAgICAgICAgdmFsIHRvX3RyZWUgOiAoJ2ssICd2LCAndykgdCAtPiAoJ2ssICd2LCAndykgdHJlZVxuICAgICAgZW5kXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBBY2Nlc3NvcnMzXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG5cbiAgICB2YWwgY29tcGFyYXRvciA6ICgnYSwgXywgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIENvbXBhcmF0b3IudFxuXG4gICAgdmFsIGhhc2hfZm9sZF9kaXJlY3RcbiAgICAgIDogICdrIEhhc2guZm9sZGVyXG4gICAgICAtPiAndiBIYXNoLmZvbGRlclxuICAgICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBIYXNoLmZvbGRlclxuXG4gICAgKCoqIFRvIGdldCBhcm91bmQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uLCBhcHBseSB0aGUgZnVuY3RvciBhbmQgaW5jbHVkZSBpdC4gWW91XG4gICAgICAgIGNhbiBzZWUgYW4gZXhhbXBsZSBvZiB0aGlzIGluIHRoZSBbUG9seV0gc3VibW9kdWxlIGJlbG93LiAqKVxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChLIDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgICAgIHZhbCBlbXB0eSA6ICgnYSBLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIGVuZFxuICBlbmRcblxuICAoKiogQSBwb2x5bW9ycGhpYyBNYXAuICopXG4gIG1vZHVsZSBQb2x5IDpcbiAgICBTX3BvbHlcbiAgICB3aXRoIHR5cGUgKCdrZXksICsndmFsdWUpIHQgPSAoJ2tleSwgJ3ZhbHVlLCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgIGFuZCB0eXBlICgna2V5LCArJ3ZhbHVlKSB0cmVlID1cbiAgICAgICAgICAgKCdrZXksICd2YWx1ZSwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICgqKiBDcmVhdGUgYSBtYXAgZnJvbSBhIHRyZWUgdXNpbmcgdGhlIGdpdmVuIGNvbXBhcmF0b3IuICopXG4gIHZhbCBvZl90cmVlXG4gICAgOiAgKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgVXNpbmdfY29tcGFyYXRvci5UcmVlLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgKCoqIEV4dHJhY3QgYSB0cmVlIGZyb20gYSBtYXAuICopXG4gIHZhbCB0b190cmVlIDogKCdrLCAndiwgJ2NtcCkgdCAtPiAoJ2ssICd2LCAnY21wKSBVc2luZ19jb21wYXJhdG9yLlRyZWUudFxuXG5cbiAgKCoqIHsyIE1vZHVsZXMgYW5kIG1vZHVsZSB0eXBlcyBmb3IgZXh0ZW5kaW5nIFtNYXBdfVxuXG4gICAgICBGb3IgdXNlIGluIGV4dGVuc2lvbnMgb2YgQmFzZSwgbGlrZSBbQ29yZV0uICopXG5cbiAgbW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFdpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgV2l0aF9maXJzdF9jbGFzc19tb2R1bGUgPSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxuICBtb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gV2l0aG91dF9jb21wYXJhdG9yXG5cbiAgbW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gRm9yX2Rlcml2aW5nXG4gIG1vZHVsZSB0eXBlIFNfcG9seSA9IFNfcG9seVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gQWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMyID0gQWNjZXNzb3JzMlxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMzID0gQWNjZXNzb3JzM1xuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gQWNjZXNzb3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gQ3JlYXRvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IENyZWF0b3JzMlxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yID0gQ3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3IgPVxuICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFRcblxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcF9pbnRmLldpdGhfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gTWFwX2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbm1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50ID0gU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuR2VuZXJpY19waGFudG9tXG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICAoKiogVGhlIFtvcHRpb25zXSB0eXBlIGlzIHVzZWQgdG8gbWFrZSBbQWNjZXNzb3JzX2dlbmVyaWNdIGZsZXhpYmxlIGFzIHRvIHdoZXRoZXIgYVxuICAgICAgY29tcGFyYXRvciBpcyByZXF1aXJlZCB0byBiZSBwYXNzZWQgdG8gY2VydGFpbiBmdW5jdGlvbnMuICopXG4gIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9uc1xuXG4gIHR5cGUgJ2NtcCBjbXBcblxuICB2YWwgaW52YXJpYW50cyA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGJvb2wpIG9wdGlvbnNcblxuICAoKiogb3ZlcnJpZGUgW0NvbnRhaW5lcl0ncyBbbWVtXSAqKVxuICB2YWwgbWVtIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+IGJvb2wpIG9wdGlvbnNcblxuICB2YWwgYWRkIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgdW5pb24gOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBpbnRlciA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIGRpZmYgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHN5bW1ldHJpY19kaWZmXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EgZWx0LCAnYSBlbHQpIEVpdGhlci50IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludCkgb3B0aW9uc1xuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wLCAoJ2EsICdjbXApIHQgLT4gb2ZfOignYSwgJ2NtcCkgdCAtPiBib29sKSBvcHRpb25zXG4gIHZhbCBhcmVfZGlzam9pbnQgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbCkgb3B0aW9uc1xuXG4gIHR5cGUgKCdhLCAnY21wKSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXRcbiAgICAgIDogKCdhLCAnY21wLCAoJ2EsICdjbXApIG5hbWVkIC0+IG9mXzooJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudCkgb3B0aW9uc1xuXG4gICAgdmFsIGVxdWFsXG4gICAgICA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSBuYW1lZCAtPiAoJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudCkgb3B0aW9uc1xuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSBlbHQgLT4gKCdiLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYiAtPiBmOignYSBlbHQgLT4gJ2IgLT4gJ2IpIC0+ICdiXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgZWx0IHwgYFJpZ2h0IG9mICdhIGVsdCB8IGBCb3RoIG9mICdhIGVsdCAqICdhIGVsdCBdIC0+IHVuaXQpXG4gICAgICAtPiB1bml0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsICgnYSwgJ2NtcCkgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBlbHQgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0XG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2EgZWx0IG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYSBlbHRcblxuICB2YWwgc3BsaXRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gJ2EgZWx0IC0+ICgnYSwgJ2NtcCkgdCAqICdhIGVsdCBvcHRpb24gKiAoJ2EsICdjbXApIHQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGdyb3VwX2J5XG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgKCdhLCAnY21wKSB0IC0+IGVxdWl2OignYSBlbHQgLT4gJ2EgZWx0IC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdCBsaXN0IClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBmaW5kX2V4biA6ICgnYSwgXykgdCAtPiBmOignYSBlbHQgLT4gYm9vbCkgLT4gJ2EgZWx0XG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIGVsdCBvcHRpb25cbiAgdmFsIHJlbW92ZV9pbmRleCA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhIGVsdCwgJ2NtcCkgdHJlZVxuXG4gIHZhbCB0b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gJ2EgZWx0IFNlcXVlbmNlLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IGNvbXBhcmU6KCdhIGVsdCAtPiAna2V5IC0+IGludClcbiAgICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgICAgLT4gJ2tleVxuICAgICAgLT4gJ2EgZWx0IG9wdGlvbiApXG4gICAgICAgIG9wdGlvbnNcblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHRcbiAgICAgIC0+IHNlZ21lbnRfb2Y6KCdhIGVsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgICAtPiAnYSBlbHQgb3B0aW9uIClcbiAgICAgICAgb3B0aW9uc1xuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogKCAnYVxuICAgICAgLCAnY21wXG4gICAgICAsID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2EgZWx0XG4gICAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYSBlbHRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAtPiAoJ2EgZWx0LCAnYSBlbHQpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczAgPSBzaWdcbiAgaW5jbHVkZSBDb250YWluZXIuUzBcblxuICB0eXBlIHRyZWVcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgaW52YXJpYW50cyA6IHQgLT4gYm9vbFxuICB2YWwgbWVtIDogdCAtPiBlbHQgLT4gYm9vbFxuICB2YWwgYWRkIDogdCAtPiBlbHQgLT4gdFxuICB2YWwgcmVtb3ZlIDogdCAtPiBlbHQgLT4gdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuICB2YWwgaW50ZXIgOiB0IC0+IHQgLT4gdFxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6IHQgLT4gdCAtPiAoZWx0LCBlbHQpIEVpdGhlci50IFNlcXVlbmNlLnRcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgaXNfc3Vic2V0IDogdCAtPiBvZl86dCAtPiBib29sXG4gIHZhbCBhcmVfZGlzam9pbnQgOiB0IC0+IHQgLT4gYm9vbFxuXG4gIHR5cGUgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0IDogbmFtZWQgLT4gb2ZfOm5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBlcXVhbCA6IG5hbWVkIC0+IG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gZWx0IC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogdCAtPiBpbml0OidiIC0+IGY6KGVsdCAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICB0XG4gICAgLT4gdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgZWx0IHwgYFJpZ2h0IG9mIGVsdCB8IGBCb3RoIG9mIGVsdCAqIGVsdCBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXIgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiB0IC0+IGY6KGVsdCAtPiBib29sKSAtPiB0ICogdFxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBtaW5fZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6IHQgLT4gZWx0XG4gIHZhbCBtYXhfZWx0IDogdCAtPiBlbHQgb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6IHQgLT4gZWx0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiB0IC0+IGVsdFxuICB2YWwgc3BsaXQgOiB0IC0+IGVsdCAtPiB0ICogZWx0IG9wdGlvbiAqIHRcbiAgdmFsIGdyb3VwX2J5IDogdCAtPiBlcXVpdjooZWx0IC0+IGVsdCAtPiBib29sKSAtPiB0IGxpc3RcbiAgdmFsIGZpbmRfZXhuIDogdCAtPiBmOihlbHQgLT4gYm9vbCkgLT4gZWx0XG4gIHZhbCBudGggOiB0IC0+IGludCAtPiBlbHQgb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiB0IC0+IGludCAtPiB0XG4gIHZhbCB0b190cmVlIDogdCAtPiB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86ZWx0XG4gICAgLT4gdFxuICAgIC0+IGVsdCBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICB0XG4gICAgLT4gY29tcGFyZTooZWx0IC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiBlbHQgb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KGVsdCAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+IGVsdCBvcHRpb25cblxuICB2YWwgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzplbHRcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzplbHRcbiAgICAtPiB0XG4gICAgLT4gdFxuICAgIC0+IChlbHQsIGVsdCkgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudC50IFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxXG5cbiAgdHlwZSAnYSB0cmVlXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgdmFsIGludmFyaWFudHMgOiBfIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogJ2EgdCAtPiAnYSAtPiBib29sXG4gIHZhbCBhZGQgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHJlbW92ZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgdW5pb24gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgaW50ZXIgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZGlmZiA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6ICdhIHQgLT4gJ2EgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG4gIHZhbCBjb21wYXJlX2RpcmVjdCA6ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGlzX3N1YnNldCA6ICdhIHQgLT4gb2ZfOidhIHQgLT4gYm9vbFxuICB2YWwgYXJlX2Rpc2pvaW50IDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICB0eXBlICdhIG5hbWVkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgdmFsIGlzX3N1YnNldCA6ICdhIG5hbWVkIC0+IG9mXzonYSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgICB2YWwgZXF1YWwgOiAnYSBuYW1lZCAtPiAnYSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAnYSB0XG4gICAgLT4gaW5pdDonYlxuICAgIC0+IGY6KCdiIC0+ICdhIC0+ICgnYiwgJ2ZpbmFsKSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC50KVxuICAgIC0+IGZpbmlzaDooJ2IgLT4gJ2ZpbmFsKVxuICAgIC0+ICdmaW5hbFxuXG4gIHZhbCBmb2xkX3JpZ2h0IDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdhIC0+ICdiIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBpdGVyMlxuICAgIDogICdhIHRcbiAgICAtPiAnYSB0XG4gICAgLT4gZjooWyBgTGVmdCBvZiAnYSB8IGBSaWdodCBvZiAnYSB8IGBCb3RoIG9mICdhICogJ2EgXSAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBlbGVtZW50cyA6ICdhIHQgLT4gJ2EgbGlzdFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtaW5fZWx0X2V4biA6ICdhIHQgLT4gJ2FcbiAgdmFsIG1heF9lbHQgOiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAnYSB0IC0+ICdhXG4gIHZhbCBjaG9vc2UgOiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICdhIHQgLT4gJ2FcbiAgdmFsIHNwbGl0IDogJ2EgdCAtPiAnYSAtPiAnYSB0ICogJ2Egb3B0aW9uICogJ2EgdFxuICB2YWwgZ3JvdXBfYnkgOiAnYSB0IC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IGxpc3RcbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgbnRoIDogJ2EgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG4gIHZhbCByZW1vdmVfaW5kZXggOiAnYSB0IC0+IGludCAtPiAnYSB0XG4gIHZhbCB0b190cmVlIDogJ2EgdCAtPiAnYSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICdhIHRcbiAgICAtPiAnYSBTZXF1ZW5jZS50XG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hcbiAgICA6ICAnYSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2tleSAtPiBpbnQpXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X2tleS50XG4gICAgLT4gJ2tleVxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuICAgIDogICdhIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAnYSB0XG4gICAgLT4gJ2EgdFxuICAgIC0+ICgnYSwgJ2EpIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQudCBTZXF1ZW5jZS50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIENvbnRhaW5lci5TMV9waGFudG9tX2ludmFyaWFudFxuXG4gIHR5cGUgKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIGludmFyaWFudHMgOiAoXywgXykgdCAtPiBib29sXG4gIHZhbCBtZW0gOiAoJ2EsIF8pIHQgLT4gJ2EgLT4gYm9vbFxuICB2YWwgYWRkIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgcmVtb3ZlIDogKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgdW5pb24gOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBzeW1tZXRyaWNfZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuICB2YWwgY29tcGFyZV9kaXJlY3QgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIGFyZV9kaXNqb2ludCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gIHR5cGUgKCdhLCAnY21wKSBuYW1lZFxuXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHZhbCBpc19zdWJzZXQgOiAoJ2EsICdjbXApIG5hbWVkIC0+IG9mXzooJ2EsICdjbXApIG5hbWVkIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgbmFtZWQgLT4gKCdhLCAnY21wKSBuYW1lZCAtPiB1bml0IE9yX2Vycm9yLnRcbiAgZW5kXG5cbiAgdmFsIGZvbGRfdW50aWxcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gKCdiLCAnZmluYWwpIENvbnRhaW5lci5Db250aW51ZV9vcl9zdG9wLnQpXG4gICAgLT4gZmluaXNoOignYiAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYiAtPiBmOignYSAtPiAnYiAtPiAnYikgLT4gJ2JcblxuICB2YWwgaXRlcjJcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOihbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdhIHwgYEJvdGggb2YgJ2EgKiAnYSBdIC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXIgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0ICogKCdhLCAnY21wKSB0XG4gIHZhbCBlbGVtZW50cyA6ICgnYSwgXykgdCAtPiAnYSBsaXN0XG4gIHZhbCBtaW5fZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWluX2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIG1heF9lbHQgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBtYXhfZWx0X2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgY2hvb3NlIDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgY2hvb3NlX2V4biA6ICgnYSwgXykgdCAtPiAnYVxuICB2YWwgc3BsaXQgOiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0ICogJ2Egb3B0aW9uICogKCdhLCAnY21wKSB0XG4gIHZhbCBncm91cF9ieSA6ICgnYSwgJ2NtcCkgdCAtPiBlcXVpdjooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCAnY21wKSB0IGxpc3RcbiAgdmFsIGZpbmRfZXhuIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICdhXG4gIHZhbCBudGggOiAoJ2EsIF8pIHQgLT4gaW50IC0+ICdhIG9wdGlvblxuICB2YWwgcmVtb3ZlX2luZGV4IDogKCdhLCAnY21wKSB0IC0+IGludCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHRvX3RyZWUgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0cmVlXG5cbiAgdmFsIHRvX3NlcXVlbmNlXG4gICAgOiAgP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IEJpbmFyeV9zZWFyY2hhYmxlLldoaWNoX3RhcmdldF9ieV9rZXkudFxuICAgIC0+ICdrZXlcbiAgICAtPiAnYSBvcHRpb25cblxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcbiAgICA6ICAoJ2EsICdjbXApIHRcbiAgICAtPiBzZWdtZW50X29mOignYSAtPiBbIGBMZWZ0IHwgYFJpZ2h0IF0pXG4gICAgLT4gQmluYXJ5X3NlYXJjaGFibGUuV2hpY2hfdGFyZ2V0X2J5X3NlZ21lbnQudFxuICAgIC0+ICdhIG9wdGlvblxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxX3BoYW50b21faW52YXJpYW50XG5cbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgaW52YXJpYW50cyA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+IGJvb2xcbiAgdmFsIG1lbSA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICdhIC0+IGJvb2xcbiAgdmFsIGFkZCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IC0+ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgcmVtb3ZlIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAoJ2EsICdjbXApIHQgLT4gJ2EgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHVuaW9uXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBpbnRlclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgZGlmZlxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgc3ltbWV0cmljX2RpZmZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gKCdhLCAnYSkgRWl0aGVyLnQgU2VxdWVuY2UudFxuXG4gIHZhbCBjb21wYXJlX2RpcmVjdFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBpbnRcblxuICB2YWwgZXF1YWwgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gIHZhbCBpc19zdWJzZXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gb2ZfOignYSwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB2YWwgYXJlX2Rpc2pvaW50XG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGJvb2xcblxuICB0eXBlICgnYSwgJ2NtcCkgbmFtZWRcblxuICBtb2R1bGUgTmFtZWQgOiBzaWdcbiAgICB2YWwgaXNfc3Vic2V0XG4gICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoJ2EsICdjbXApIG5hbWVkXG4gICAgICAtPiBvZl86KCdhLCAnY21wKSBuYW1lZFxuICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICB2YWwgZXF1YWxcbiAgICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+ICgnYSwgJ2NtcCkgbmFtZWRcbiAgICAgIC0+IHVuaXQgT3JfZXJyb3IudFxuICBlbmRcblxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2EgLT4gJ2FjY3VtIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgdmFsIGl0ZXIyXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgdmFsIGZpbHRlclxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBmOignYSAtPiBib29sKVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBwYXJ0aXRpb25fdGZcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcbiAgdmFsIGNob29zZSA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICB2YWwgc3BsaXRcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcblxuICB2YWwgZ3JvdXBfYnlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gZXF1aXY6KCdhIC0+ICdhIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnY21wKSB0IGxpc3RcblxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIHJlbW92ZV9pbmRleFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBpbnRcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgdG9fdHJlZSA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gP29yZGVyOlsgYEluY3JlYXNpbmcgfCBgRGVjcmVhc2luZyBdXG4gICAgLT4gP2dyZWF0ZXJfb3JfZXF1YWxfdG86J2FcbiAgICAtPiA/bGVzc19vcl9lcXVhbF90bzonYVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+ICdhIFNlcXVlbmNlLnRcblxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiBjb21wYXJlOignYSAtPiAna2V5IC0+IGludClcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfa2V5LnRcbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IHNlZ21lbnRfb2Y6KCdhIC0+IFsgYExlZnQgfCBgUmlnaHQgXSlcbiAgICAtPiBCaW5hcnlfc2VhcmNoYWJsZS5XaGljaF90YXJnZXRfYnlfc2VnbWVudC50XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgdmFsIG1lcmdlX3RvX3NlcXVlbmNlXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ID9vcmRlcjpbIGBJbmNyZWFzaW5nIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuZW5kXG5cbigqKiBDb25zaXN0ZW5jeSBjaGVja3MgKHNhbWUgYXMgaW4gW0NvbnRhaW5lcl0pLiAqKVxubW9kdWxlIENoZWNrX2FjY2Vzc29yc1xuICAgIChUIDogVDIpXG4gICAgKFRyZWUgOiBUMilcbiAgICAoRWx0IDogVDEpXG4gICAgKE5hbWVkIDogVDIpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczAgKE0gOiBBY2Nlc3NvcnMwKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5lbHRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yIChNIDogQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHNldFxuICB0eXBlICgnYSwgJ2NtcCkgdHJlZVxuICB0eXBlICdhIGVsdFxuICB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnNcbiAgdHlwZSAnY21wIGNtcFxuXG4gIHZhbCBlbXB0eSA6ICgnYSwgJ2NtcCwgKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBzaW5nbGV0b24gOiAoJ2EsICdjbXAsICdhIGVsdCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcbiAgdmFsIHVuaW9uX2xpc3QgOiAoJ2EsICdjbXAsICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2ZfbGlzdCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGxpc3QgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9hcnJheSA6ICgnYSwgJ2NtcCwgJ2EgZWx0IGFycmF5IC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogKCdhLCAnY21wLCAnYSBlbHQgYXJyYXkgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnQpIG9wdGlvbnNcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAoJ2EsICdjbXAsICdhIGVsdCBhcnJheSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWRcbiAgICA6ICgnYSwgJ2NtcCwgbGVuOmludCAtPiBmOihpbnQgLT4gJ2EgZWx0KSAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAoJ2EsIF8sICdhIGVsdCBsaXN0IC0+ICdhIGVsdCBsaXN0KSBvcHRpb25zXG5cbiAgKCoqIFRoZSB0eXBlcyBvZiBbbWFwXSBhbmQgW2ZpbHRlcl9tYXBdIGFyZSBzdWJ0bGUuICBUaGUgaW5wdXQgc2V0LCBbKCdhLCBfKSBzZXRdLFxuICAgICAgcmVmbGVjdHMgdGhlIGZhY3QgdGhhdCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBhIHNldCBvZiAqYW55KiB0eXBlLCB3aXRoIGFueVxuICAgICAgY29tcGFyYXRvciwgd2hpbGUgdGhlIG91dHB1dCBzZXQsIFsoJ2IsICdjbXApIHRdLCByZWZsZWN0cyB0aGF0IHRoZSBvdXRwdXQgc2V0IGhhc1xuICAgICAgdGhlIHBhcnRpY3VsYXIgWydjbXBdIG9mIHRoZSBjcmVhdGlvbiBmdW5jdGlvbi4gIFRoZSBjb21wYXJhdG9yIGNhbiBjb21lIGluIG9uZSBvZlxuICAgICAgdGhyZWUgd2F5cywgZGVwZW5kaW5nIG9uIHdoaWNoIHNldCBtb2R1bGUgaXMgdXNlZFxuXG4gICAgICAtIFtTZXQubWFwXSAtLSBjb21wYXJhdG9yIGNvbWVzIGFzIGFuIGFyZ3VtZW50XG4gICAgICAtIFtTZXQuUG9seS5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgcG9seW1vcnBoaWMgY29tcGFyaXNvblxuICAgICAgLSBbRm9vLlNldC5tYXBdIC0tIGNvbXBhcmF0b3IgaXMgW0Zvby5jb21wYXJhdG9yXSAqKVxuICB2YWwgbWFwIDogKCdiLCAnY21wLCAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBlbHQpIC0+ICgnYiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBmaWx0ZXJfbWFwXG4gICAgOiAoJ2IsICdjbXAsICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiIGVsdCBvcHRpb24pIC0+ICgnYiwgJ2NtcCkgdCkgb3B0aW9uc1xuXG4gIHZhbCBvZl90cmVlIDogKCdhLCAnY21wLCAoJ2EgZWx0LCAnY21wKSB0cmVlIC0+ICgnYSwgJ2NtcCkgdCkgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMCA9IHNpZ1xuICB0eXBlICgnYSwgJ2NtcCkgc2V0XG4gIHR5cGUgdFxuICB0eXBlIHRyZWVcbiAgdHlwZSBlbHRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBzaW5nbGV0b24gOiBlbHQgLT4gdFxuICB2YWwgdW5pb25fbGlzdCA6IHQgbGlzdCAtPiB0XG4gIHZhbCBvZl9saXN0IDogZWx0IGxpc3QgLT4gdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiBlbHQgU2VxdWVuY2UudCAtPiB0XG4gIHZhbCBvZl9hcnJheSA6IGVsdCBhcnJheSAtPiB0XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXkgOiBlbHQgYXJyYXkgLT4gdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogZWx0IGFycmF5IC0+IHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gZWx0KSAtPiB0XG4gIHZhbCBzdGFibGVfZGVkdXBfbGlzdCA6IGVsdCBsaXN0IC0+IGVsdCBsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiBlbHQpIC0+IHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiBlbHQgb3B0aW9uKSAtPiB0XG4gIHZhbCBvZl90cmVlIDogdHJlZSAtPiB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMxID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAnYSB0XG4gIHR5cGUgJ2EgdHJlZVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCBlbXB0eSA6ICdhIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICdhIHRcbiAgdmFsIHVuaW9uX2xpc3QgOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgb2Zfc2VxdWVuY2UgOiAnYSBTZXF1ZW5jZS50IC0+ICdhIHRcbiAgdmFsIG9mX2FycmF5IDogJ2EgYXJyYXkgLT4gJ2EgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogJ2EgYXJyYXkgLT4gJ2EgdCBPcl9lcnJvci50XG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIDogJ2EgYXJyYXkgLT4gJ2EgdFxuICB2YWwgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgOiBsZW46aW50IC0+IGY6KGludCAtPiAnYSkgLT4gJ2EgdFxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgdmFsIG1hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBfKSBzZXQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBvZl90cmVlIDogJ2EgdHJlZSAtPiAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIHRcbiAgdmFsIHNpbmdsZXRvbiA6ICdhIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgdW5pb25fbGlzdCA6ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICdhIFNlcXVlbmNlLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9hcnJheSA6ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2Zfc29ydGVkX2FycmF5IDogJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0IE9yX2Vycm9yLnRcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgOiAnYSBhcnJheSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIDogbGVuOmludCAtPiBmOihpbnQgLT4gJ2EpIC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgc3RhYmxlX2RlZHVwX2xpc3QgOiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgdmFsIG1hcCA6ICgnYSwgXykgc2V0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsICdjbXApIHRcbiAgdmFsIGZpbHRlcl9tYXAgOiAoJ2EsIF8pIHNldCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICgnYiwgJ2NtcCkgdFxuICB2YWwgb2ZfdHJlZSA6ICgnYSwgJ2NtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIHR5cGUgKCdhLCAnY21wKSBzZXRcbiAgdHlwZSAoJ2EsICdjbXApIHRcbiAgdHlwZSAoJ2EsICdjbXApIHRyZWVcblxuICB2YWwgZW1wdHkgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgc2luZ2xldG9uIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIHVuaW9uX2xpc3QgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfbGlzdCA6IGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnQgLT4gJ2EgbGlzdCAtPiAoJ2EsICdjbXApIHRcbiAgdmFsIG9mX3NlcXVlbmNlIDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfYXJyYXkgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIGFycmF5IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgYXJyYXlcbiAgICAtPiAoJ2EsICdjbXApIHQgT3JfZXJyb3IudFxuXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIGFycmF5XG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+IGxlbjppbnRcbiAgICAtPiBmOihpbnQgLT4gJ2EpXG4gICAgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICB2YWwgbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2IsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgXykgc2V0XG4gICAgLT4gZjooJ2EgLT4gJ2IpXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgdmFsIGZpbHRlcl9tYXBcbiAgICA6ICBjb21wYXJhdG9yOignYiwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCBfKSBzZXRcbiAgICAtPiBmOignYSAtPiAnYiBvcHRpb24pXG4gICAgLT4gKCdiLCAnY21wKSB0XG5cbiAgdmFsIG9mX3RyZWUgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICgnYSwgJ2NtcCkgdHJlZSAtPiAoJ2EsICdjbXApIHRcbmVuZFxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnNcbiAgICAoVCA6IFQyKVxuICAgIChUcmVlIDogVDIpXG4gICAgKEVsdCA6IFQxKVxuICAgIChDbXAgOiBUMSlcbiAgICAoT3B0aW9ucyA6IFQzKVxuICAgIChfIDogQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMCAoTSA6IENyZWF0b3JzMCkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5lbHRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMxIChNIDogQ3JlYXRvcnMxKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczIgKE0gOiBDcmVhdG9yczIpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gJ2NtcFxuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvciAoTSA6IENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gJ2NtcFxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIGNtcFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczBcbiAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgd2l0aCB0eXBlIHRyZWUgOj0gdHJlZVxuICAgIHdpdGggdHlwZSBlbHQgOj0gZWx0XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczFcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMxXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRyZWVcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMlxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yczIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMyX3dpdGhfY29tcGFyYXRvclxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcblxubW9kdWxlIHR5cGUgRm9yX2Rlcml2aW5nID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIG1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgTV9vZl9zZXhwID0gc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuICBtb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbiAgdmFsIHNleHBfb2ZfbV9fdCA6IChtb2R1bGUgU2V4cF9vZl9tIHdpdGggdHlwZSB0ID0gJ2VsdCkgLT4gKCdlbHQsICdjbXApIHQgLT4gU2V4cC50XG5cbiAgdmFsIG1fX3Rfb2Zfc2V4cFxuICAgIDogIChtb2R1bGUgTV9vZl9zZXhwIHdpdGggdHlwZSB0ID0gJ2VsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgdmFsIG1fX3Rfc2V4cF9ncmFtbWFyXG4gICAgOiAgKG1vZHVsZSBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9ICdlbHQpXG4gICAgLT4gKCdlbHQsICdjbXApIHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICB2YWwgY29tcGFyZV9tX190IDogKG1vZHVsZSBDb21wYXJlX20pIC0+ICgnZWx0LCAnY21wKSB0IC0+ICgnZWx0LCAnY21wKSB0IC0+IGludFxuICB2YWwgZXF1YWxfbV9fdCA6IChtb2R1bGUgRXF1YWxfbSkgLT4gKCdlbHQsICdjbXApIHQgLT4gKCdlbHQsICdjbXApIHQgLT4gYm9vbFxuXG4gIHZhbCBoYXNoX2ZvbGRfbV9fdFxuICAgIDogIChtb2R1bGUgSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSAnZWx0KVxuICAgIC0+IEhhc2guc3RhdGVcbiAgICAtPiAoJ2VsdCwgXykgdFxuICAgIC0+IEhhc2guc3RhdGVcblxuICB2YWwgaGFzaF9tX190IDogKG1vZHVsZSBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9ICdlbHQpIC0+ICgnZWx0LCBfKSB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNldCA9IHNpZ1xuICAoKiogU2V0cyBiYXNlZCBvbiB7IUNvbXBhcmF0b3IuU30uXG5cbiAgICAgIENyZWF0b3JzIHJlcXVpcmUgYSBjb21wYXJhdG9yIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCBpbiwgd2hlcmVhcyBhY2Nlc3NvcnMgdXNlIHRoZVxuICAgICAgY29tcGFyYXRvciBwcm92aWRlZCBieSB0aGUgaW5wdXQgc2V0LiAqKVxuXG4gICgqKiBUaGUgdHlwZSBvZiBhIHNldC4gIFRoZSBmaXJzdCB0eXBlIHBhcmFtZXRlciBpZGVudGlmaWVzIHRoZSB0eXBlIG9mIHRoZSBlbGVtZW50LCBhbmRcbiAgICAgIHRoZSBzZWNvbmQgaWRlbnRpZmllcyB0aGUgY29tcGFyYXRvciwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbiB0aGF0XG4gICAgICBpcyB1c2VkIGZvciBvcmRlcmluZyBlbGVtZW50cyBpbiB0aGlzIHNldC4gIE1hbnkgb3BlcmF0aW9ucyAoZS5nLiwgeyF1bmlvbn0pLFxuICAgICAgcmVxdWlyZSB0aGF0IHRoZXkgYmUgcGFzc2VkIHNldHMgd2l0aCB0aGUgc2FtZSBlbGVtZW50IHR5cGUgYW5kIHRoZSBzYW1lIGNvbXBhcmF0b3JcbiAgICAgIHR5cGUuICopXG4gIHR5cGUgKCdlbHQsICdjbXApIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TMiB3aXRoIHR5cGUgKCdlbHQsICdjbXApIHQgOj0gKCdlbHQsICdjbXApIHRcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgKCdrLCAnY21wKSBjb21wYXJhdG9yID0gKCdrLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0xMl0gdXNlIFtDb21wYXJhdG9yLk1vZHVsZS50XSBpbnN0ZWFkXCJdXG5cbiAgKCoqIFRlc3RzIGludGVybmFsIGludmFyaWFudHMgb2YgdGhlIHNldCBkYXRhIHN0cnVjdHVyZS4gIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiAqKVxuICB2YWwgaW52YXJpYW50cyA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAoKiogUmV0dXJucyBhIGZpcnN0LWNsYXNzIG1vZHVsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGJ1aWxkIG90aGVyIG1hcC9zZXQvZXRjXG4gICAgICB3aXRoIHRoZSBzYW1lIG5vdGlvbiBvZiBjb21wYXJpc29uLiAqKVxuICB2YWwgY29tcGFyYXRvcl9zIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuXG4gIHZhbCBjb21wYXJhdG9yIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci50XG5cbiAgKCoqIENyZWF0ZXMgYW4gZW1wdHkgc2V0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBjb21wYXJhdG9yLiAqKVxuICB2YWwgZW1wdHkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSBzZXQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBhcmF0b3IgdGhhdCBjb250YWlucyBvbmx5IHRoZSBwcm92aWRlZFxuICAgICAgZWxlbWVudC4gKilcbiAgdmFsIHNpbmdsZXRvbiA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogUmV0dXJucyB0aGUgY2FyZGluYWxpdHkgb2YgdGhlIHNldC4gW08oMSldLiAqKVxuICB2YWwgbGVuZ3RoIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgKCoqIFtpc19lbXB0eSB0XSBpcyBbdHJ1ZV0gaWZmIFt0XSBpcyBlbXB0eS4gIFtPKDEpXS4gKilcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuXG4gICgqKiBbbWVtIHQgYV0gcmV0dXJucyBbdHJ1ZV0gaWZmIFthXSBpcyBpbiBbdF0uICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIC0+IGJvb2xcblxuICAoKiogW2FkZCB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIGFkZGVkIHRvIFt0XSwgb3IgcmV0dXJucyBbdF0gaWYgW21lbSB0IGFdLlxuICAgICAgW08obG9nIG4pXS4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3JlbW92ZSB0IGFdIHJldHVybnMgYSBuZXcgc2V0IHdpdGggW2FdIHJlbW92ZWQgZnJvbSBbdF0gaWYgW21lbSB0IGFdLCBvciByZXR1cm5zIFt0XVxuICAgICAgb3RoZXJ3aXNlLiAgW08obG9nIG4pXS4gKilcbiAgdmFsIHJlbW92ZSA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIHQxIHQyXSByZXR1cm5zIHRoZSB1bmlvbiBvZiB0aGUgdHdvIHNldHMuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIHVuaW9uIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3VuaW9uIGMgbGlzdF0gcmV0dXJucyB0aGUgdW5pb24gb2YgYWxsIHRoZSBzZXRzIGluIFtsaXN0XS4gIFRoZVxuICAgICAgW2NvbXBhcmF0b3JdIGFyZ3VtZW50IGlzIHJlcXVpcmVkIGZvciB0aGUgY2FzZSB3aGVyZSBbbGlzdF0gaXMgZW1wdHkuXG4gICAgICBbTyhtYXgoTGlzdC5sZW5ndGggbGlzdCwgbiBsb2cgbikpXSwgd2hlcmUgW25dIGlzIHRoZSBzdW0gb2Ygc2l6ZXMgb2YgdGhlIGlucHV0IHNldHMuICopXG4gIHZhbCB1bmlvbl9saXN0IDogKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgJ2NtcCkgdCBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaW50ZXIgdDEgdDJdIGNvbXB1dGVzIHRoZSBpbnRlcnNlY3Rpb24gb2Ygc2V0cyBbdDFdIGFuZCBbdDJdLiAgW08obGVuZ3RoIHQxICtcbiAgICAgIGxlbmd0aCB0MildLiAqKVxuICB2YWwgaW50ZXIgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZGlmZiB0MSB0Ml0gY29tcHV0ZXMgdGhlIHNldCBkaWZmZXJlbmNlIFt0MSAtIHQyXSwgaS5lLiwgdGhlIHNldCBjb250YWluaW5nIGFsbFxuICAgICAgZWxlbWVudHMgaW4gW3QxXSB0aGF0IGFyZSBub3QgaW4gW3QyXS4gIFtPKGxlbmd0aCB0MSArIGxlbmd0aCB0MildLiAqKVxuICB2YWwgZGlmZiA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFtzeW1tZXRyaWNfZGlmZiB0MSB0Ml0gcmV0dXJucyBhIHNlcXVlbmNlIG9mIGNoYW5nZXMgYmV0d2VlbiBbdDFdIGFuZCBbdDJdLiBJdCBpc1xuICAgICAgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50IGluIHRoZSBjYXNlIHdoZXJlIFt0MV0gYW5kIFt0Ml0gc2hhcmUgYSBsYXJnZSBhbW91bnQgb2ZcbiAgICAgIHN0cnVjdHVyZS4gKilcbiAgdmFsIHN5bW1ldHJpY19kaWZmIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdhKSBFaXRoZXIudCBTZXF1ZW5jZS50XG5cbiAgKCoqIFtjb21wYXJlX2RpcmVjdCB0MSB0Ml0gY29tcGFyZXMgdGhlIHNldHMgW3QxXSBhbmQgW3QyXS4gIEl0IHJldHVybnMgdGhlIHNhbWUgcmVzdWx0XG4gICAgICBhcyBbY29tcGFyZV0sIGJ1dCB1bmxpa2UgY29tcGFyZSwgZG9lc24ndCByZXF1aXJlIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgaW4gZm9yIHRoZVxuICAgICAgdHlwZSBwYXJhbWV0ZXJzIG9mIHRoZSBzZXQuICBbTyhsZW5ndGggdDEgKyBsZW5ndGggdDIpXS4gKilcbiAgdmFsIGNvbXBhcmVfZGlyZWN0IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBpbnRcblxuICAoKiogSGFzaCBmdW5jdGlvbjogYSBidWlsZGluZyBibG9jayB0byB1c2Ugd2hlbiBoYXNoaW5nIGRhdGEgc3RydWN0dXJlcyBjb250YWluaW5nIHNldHMgaW5cbiAgICAgIHRoZW0uIFtoYXNoX2ZvbGRfZGlyZWN0IGhhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbY29tcGFyZV9kaXJlY3RdIGlmZlxuICAgICAgW2hhc2hfZm9sZF9rZXldIGlzIGNvbXBhdGlibGUgd2l0aCBbKGNvbXBhcmF0b3IgcykuY29tcGFyZV0gb2YgdGhlIHNldCBbc10gYmVpbmdcbiAgICAgIGhhc2hlZC4gKilcbiAgdmFsIGhhc2hfZm9sZF9kaXJlY3QgOiAnYSBIYXNoLmZvbGRlciAtPiAoJ2EsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAoKiogW2VxdWFsIHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgdGhlIHR3byBzZXRzIGhhdmUgdGhlIHNhbWUgZWxlbWVudHMuICBbTyhsZW5ndGggdDEgK1xuICAgICAgbGVuZ3RoIHQyKV0gKilcbiAgdmFsIGVxdWFsIDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtleGlzdHMgdCB+Zl0gcmV0dXJucyBbdHJ1ZV0gaWZmIHRoZXJlIGV4aXN0cyBhbiBbYV0gaW4gW3RdIGZvciB3aGljaCBbZiBhXS4gIFtPKG4pXSxcbiAgICAgIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgaXQgZmluZHMgYW4gW2FdIGZvciB3aGljaCBbZiBhXS4gKilcbiAgdmFsIGV4aXN0cyA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFtmb3JfYWxsIHQgfmZdIHJldHVybnMgW3RydWVdIGlmZiBmb3IgYWxsIFthXSBpbiBbdF0sIFtmIGFdLiAgW08obildLCBidXQgcmV0dXJucyBhc1xuICAgICAgc29vbiBhcyBpdCBmaW5kcyBhbiBbYV0gZm9yIHdoaWNoIFtub3QgKGYgYSldLiAqKVxuICB2YWwgZm9yX2FsbCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBib29sXG5cbiAgKCoqIFtjb3VudCB0XSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgb2YgW3RdIGZvciB3aGljaCBbZl0gcmV0dXJucyBbdHJ1ZV0uXG4gICAgICBbTyhuKV0uICopXG4gIHZhbCBjb3VudCA6ICgnYSwgXykgdCAtPiBmOignYSAtPiBib29sKSAtPiBpbnRcblxuICAoKiogW3N1bSB0XSByZXR1cm5zIHRoZSBzdW0gb2YgW2YgdF0gZm9yIGVhY2ggW3RdIGluIHRoZSBzZXQuXG4gICAgICBbTyhuKV0uICopXG4gIHZhbCBzdW1cbiAgICA6ICAobW9kdWxlIENvbnRhaW5lci5TdW1tYWJsZSB3aXRoIHR5cGUgdCA9ICdzdW0pXG4gICAgLT4gKCdhLCBfKSB0XG4gICAgLT4gZjooJ2EgLT4gJ3N1bSlcbiAgICAtPiAnc3VtXG5cbiAgKCoqIFtmaW5kIHQgZl0gcmV0dXJucyBhbiBlbGVtZW50IG9mIFt0XSBmb3Igd2hpY2ggW2ZdIHJldHVybnMgdHJ1ZSwgd2l0aCBubyBndWFyYW50ZWUgYXNcbiAgICAgIHRvIHdoaWNoIGVsZW1lbnQgaXMgcmV0dXJuZWQuICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZSBlbGVtZW50IGlzXG4gICAgICBmb3VuZC4gKilcbiAgdmFsIGZpbmQgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtmaW5kX21hcCB0IGZdIHJldHVybnMgW2JdIGZvciBzb21lIFthXSBpbiBbdF0gZm9yIHdoaWNoIFtmIGEgPSBTb21lIGJdLiAgSWYgbm8gc3VjaFxuICAgICAgW2FdIGV4aXN0cywgdGhlbiBbZmluZF0gcmV0dXJucyBbTm9uZV0uICBbTyhuKV0sIGJ1dCByZXR1cm5zIGFzIHNvb24gYXMgYSBzdWl0YWJsZVxuICAgICAgZWxlbWVudCBpcyBmb3VuZC4gKilcbiAgdmFsIGZpbmRfbWFwIDogKCdhLCBfKSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIExpa2UgW2ZpbmRdLCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gJ2FcblxuICAoKiogW250aCB0IGldIHJldHVybnMgdGhlIFtpXXRoIHNtYWxsZXN0IGVsZW1lbnQgb2YgW3RdLCBpbiBbTyhsb2cgbildIHRpbWUuICBUaGVcbiAgICAgIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFtOb25lXSBpZiBbaSA8IDBdIG9yIFtpID49IGxlbmd0aCB0XS4gKilcbiAgdmFsIG50aCA6ICgnYSwgXykgdCAtPiBpbnQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtyZW1vdmVfaW5kZXggdCBpXSByZXR1cm5zIGEgdmVyc2lvbiBvZiBbdF0gd2l0aCB0aGUgW2lddGggc21hbGxlc3QgZWxlbWVudCByZW1vdmVkLFxuICAgICAgaW4gW08obG9nIG4pXSB0aW1lLiAgVGhlIHNtYWxsZXN0IGVsZW1lbnQgaGFzIFtpID0gMF0uICBSZXR1cm5zIFt0XSBpZiBbaSA8IDBdIG9yXG4gICAgICBbaSA+PSBsZW5ndGggdF0uICopXG4gIHZhbCByZW1vdmVfaW5kZXggOiAoJ2EsICdjbXApIHQgLT4gaW50IC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbaXNfc3Vic2V0IHQxIH5vZl86dDJdIHJldHVybnMgdHJ1ZSBpZmYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdLiAqKVxuICB2YWwgaXNfc3Vic2V0IDogKCdhLCAnY21wKSB0IC0+IG9mXzooJ2EsICdjbXApIHQgLT4gYm9vbFxuXG4gICgqKiBbYXJlX2Rpc2pvaW50IHQxIHQyXSByZXR1cm5zIFt0cnVlXSBpZmYgW2lzX2VtcHR5IChpbnRlciB0MSB0MildLCBidXQgaXMgbW9yZVxuICAgICAgZWZmaWNpZW50LiAqKVxuICB2YWwgYXJlX2Rpc2pvaW50IDogKCdhLCAnY21wKSB0IC0+ICgnYSwgJ2NtcCkgdCAtPiBib29sXG5cbiAgKCoqIFtOYW1lZF0gYWxsb3dzIHRoZSB2YWxpZGF0aW9uIG9mIHN1YnNldCBhbmQgZXF1YWxpdHkgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHNldHMuICBBXG4gICAgICBbTmFtZWQudF0gaXMgYSByZWNvcmQgb2YgYSBzZXQgYW5kIGEgbmFtZSwgd2hlcmUgdGhlIG5hbWUgaXMgdXNlZCBpbiBlcnJvciBtZXNzYWdlcyxcbiAgICAgIGFuZCBbTmFtZWQuaXNfc3Vic2V0XSBhbmQgW05hbWVkLmVxdWFsXSB2YWxpZGF0ZSBzdWJzZXQgYW5kIGVxdWFsaXR5IHJlbGF0aW9uc2hpcHNcbiAgICAgIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgZm9yLCBlLmcuLFxuICAgICAge1tcbiAgICAgICAgTmFtZWQuaXNfc3Vic2V0IHsgc2V0ID0gc2V0MTsgbmFtZSA9IFwic2V0MVwiIH0gfm9mXzp7c2V0ID0gc2V0MjsgbmFtZSA9IFwic2V0MlwiIH1cbiAgICAgIF19XG5cbiAgICAgIGxvb2tzIGxpa2VcbiAgICAgIHt2XG4gICAgICAgIChcInNldDEgaXMgbm90IGEgc3Vic2V0IG9mIHNldDJcIiAoaW52YWxpZF9lbGVtZW50cyAoLi4uZWxlbWVudHMgb2Ygc2V0MSAtIHNldDIuLi4pKSlcbiAgICAgdn1cblxuICAgICAgc28gW25hbWVdIHNob3VsZCBiZSBhIG5vdW4gcGhyYXNlIHRoYXQgZG9lc24ndCBzb3VuZCBhd2t3YXJkIGluIHRoZSBhYm92ZSBlcnJvclxuICAgICAgbWVzc2FnZS4gIEV2ZW4gdGhvdWdoIGl0IGFkZHMgdmVyYm9zaXR5LCBjaG9vc2luZyBbbmFtZV1zIHRoYXQgc3RhcnQgd2l0aCB0aGUgcGhyYXNlXG4gICAgICBcInRoZSBzZXQgb2ZcIiBvZnRlbiBtYWtlcyB0aGUgZXJyb3IgbWVzc2FnZSBzb3VuZCBtb3JlIG5hdHVyYWwuXG4gICopXG4gIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjICgnYSwgJ2NtcCkgdCA9XG4gICAgICB7IHNldCA6ICgnYSwgJ2NtcCkgdFxuICAgICAgOyBuYW1lIDogc3RyaW5nXG4gICAgICB9XG5cbiAgICAoKiogW2lzX3N1YnNldCB0MSB+b2ZfOnQyXSByZXR1cm5zIFtPayAoKV0gaWYgW3QxXSBpcyBhIHN1YnNldCBvZiBbdDJdIGFuZCBhXG4gICAgICAgIGh1bWFuLXJlYWRhYmxlIGVycm9yIG90aGVyd2lzZS4gICopXG4gICAgdmFsIGlzX3N1YnNldCA6ICgnYSwgJ2NtcCkgdCAtPiBvZl86KCdhLCAnY21wKSB0IC0+IHVuaXQgT3JfZXJyb3IudFxuXG4gICAgKCoqIFtlcXVhbCB0MSB0Ml0gcmV0dXJucyBbT2sgKCldIGlmIFt0MV0gaXMgZXF1YWwgdG8gW3QyXSBhbmQgYSBodW1hbi1yZWFkYWJsZVxuICAgICAgICBlcnJvciBvdGhlcndpc2UuICAqKVxuICAgIHZhbCBlcXVhbCA6ICgnYSwgJ2NtcCkgdCAtPiAoJ2EsICdjbXApIHQgLT4gdW5pdCBPcl9lcnJvci50XG4gIGVuZFxuXG4gICgqKiBUaGUgbGlzdCBvciBhcnJheSBnaXZlbiB0byBbb2ZfbGlzdF0gYW5kIFtvZl9hcnJheV0gbmVlZCBub3QgYmUgc29ydGVkLiAqKVxuICB2YWwgb2ZfbGlzdCA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBsaXN0IC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9zZXF1ZW5jZSA6ICgnYSwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCAtPiAnYSBTZXF1ZW5jZS50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfYXJyYXkgOiAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQgLT4gJ2EgYXJyYXkgLT4gKCdhLCAnY21wKSB0XG5cbiAgKCoqIFt0b19saXN0XSBhbmQgW3RvX2FycmF5XSBwcm9kdWNlIHNlcXVlbmNlcyBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGFjY29yZGluZyB0byB0aGVcbiAgICAgIGNvbXBhcmF0b3IuICopXG4gIHZhbCB0b19saXN0IDogKCdhLCBfKSB0IC0+ICdhIGxpc3RcblxuICB2YWwgdG9fYXJyYXkgOiAoJ2EsIF8pIHQgLT4gJ2EgYXJyYXlcblxuICAoKiogQ3JlYXRlIHNldCBmcm9tIHNvcnRlZCBhcnJheS4gIFRoZSBpbnB1dCBtdXN0IGJlIHNvcnRlZCAoZWl0aGVyIGluIGFzY2VuZGluZyBvclxuICAgICAgZGVzY2VuZGluZyBvcmRlciBhcyBnaXZlbiBieSB0aGUgY29tcGFyYXRvcikgYW5kIGNvbnRhaW4gbm8gZHVwbGljYXRlcywgb3RoZXJ3aXNlIHRoZVxuICAgICAgcmVzdWx0IGlzIGFuIGVycm9yLiAgVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBmdW5jdGlvbiBpcyBbTyhuKV0uICopXG4gIHZhbCBvZl9zb3J0ZWRfYXJyYXlcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBPcl9lcnJvci50XG5cbiAgKCoqIFNpbWlsYXIgdG8gW29mX3NvcnRlZF9hcnJheV0sIGJ1dCB3aXRob3V0IGNoZWNraW5nIHRoZSBpbnB1dCBhcnJheS4gKilcbiAgdmFsIG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICA6ICAoJ2EsICdjbXApIENvbXBhcmF0b3IuTW9kdWxlLnRcbiAgICAtPiAnYSBhcnJheVxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgYyB+bGVuIH5mXSBiZWhhdmVzIGxpa2UgW29mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgY1xuICAgICAgKEFycmF5LmluaXQgbGVuIH5mKV0sIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb24gdGhhdCBhIGRlY3JlYXNpbmcgb3JkZXIgaXMgbm90XG4gICAgICBzdXBwb3J0ZWQuICBUaGUgYWR2YW50YWdlIGlzIG5vdCByZXF1aXJpbmcgeW91IHRvIGFsbG9jYXRlIGFuIGludGVybWVkaWF0ZSBhcnJheS4gIFtmXVxuICAgICAgd2lsbCBiZSBjYWxsZWQgd2l0aCAwLCAxLCAuLi4gW2xlbiAtIDFdLCBpbiBvcmRlci4gKilcbiAgdmFsIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkXG4gICAgOiAgKCdhLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IGY6KGludCAtPiAnYSlcbiAgICAtPiAoJ2EsICdjbXApIHRcblxuICAoKiogW3N0YWJsZV9kZWR1cF9saXN0XSBpcyBoZXJlIHJhdGhlciB0aGFuIGluIHRoZSBbTGlzdF0gbW9kdWxlIGJlY2F1c2UgdGhlXG4gICAgICBpbXBsZW1lbnRhdGlvbiByZWxpZXMgY3J1Y2lhbGx5IG9uIHNldHMsIGFuZCBiZWNhdXNlIGRvaW5nIHNvIGFsbG93cyBvbmUgdG8gYXZvaWQgdXNlc1xuICAgICAgb2YgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBieSBpbnN0YW50aWF0aW5nIHRoZSBmdW5jdG9yIGF0IGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uXG4gICAgICBvZiBbQ29tcGFyYXRvcl0gYW5kIHVzaW5nIHRoZSByZXN1bHRpbmcgW3N0YWJsZV9kZWR1cF9saXN0XS4gKilcbiAgdmFsIHN0YWJsZV9kZWR1cF9saXN0IDogKCdhLCBfKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICdhIGxpc3QgLT4gJ2EgbGlzdFxuXG4gICgqKiBbbWFwIGMgdCB+Zl0gcmV0dXJucyBhIG5ldyBzZXQgY3JlYXRlZCBieSBhcHBseWluZyBbZl0gdG8gZXZlcnkgZWxlbWVudCBpblxuICAgICAgW3RdLiAgVGhlIHJldHVybmVkIHNldCBpcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgW2NvbXBhcmF0b3JdLiAgW08obiBsb2cgbildLiAqKVxuICB2YWwgbWFwIDogKCdiLCAnY21wKSBDb21wYXJhdG9yLk1vZHVsZS50IC0+ICgnYSwgXykgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCAnY21wKSB0XG5cbiAgKCoqIExpa2UgeyFtYXB9LCBleGNlcHQgZWxlbWVudHMgZm9yIHdoaWNoIFtmXSByZXR1cm5zIFtOb25lXSB3aWxsIGJlIGRyb3BwZWQuICAqKVxuICB2YWwgZmlsdGVyX21hcFxuICAgIDogICgnYiwgJ2NtcCkgQ29tcGFyYXRvci5Nb2R1bGUudFxuICAgIC0+ICgnYSwgXykgdFxuICAgIC0+IGY6KCdhIC0+ICdiIG9wdGlvbilcbiAgICAtPiAoJ2IsICdjbXApIHRcblxuICAoKiogW2ZpbHRlciB0IH5mXSByZXR1cm5zIHRoZSBzdWJzZXQgb2YgW3RdIGZvciB3aGljaCBbZl0gZXZhbHVhdGVzIHRvIHRydWUuICBbTyhuIGxvZ1xuICAgICAgbildLiAqKVxuICB2YWwgZmlsdGVyIDogKCdhLCAnY21wKSB0IC0+IGY6KCdhIC0+IGJvb2wpIC0+ICgnYSwgJ2NtcCkgdFxuXG4gICgqKiBbZm9sZCB0IH5pbml0IH5mXSBmb2xkcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2V0IGZyb20gc21hbGxlc3QgdG8gbGFyZ2VzdC4gKilcbiAgdmFsIGZvbGQgOiAoJ2EsIF8pIHQgLT4gaW5pdDonYWNjdW0gLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICdhY2N1bSkgLT4gJ2FjY3VtXG5cbiAgKCoqIFtmb2xkX3Jlc3VsdCB+aW5pdCB+Zl0gZm9sZHMgb3ZlciB0aGUgZWxlbWVudHMgb2YgdGhlIHNldCBmcm9tIHNtYWxsZXN0IHRvXG4gICAgICBsYXJnZXN0LCBzaG9ydCBjaXJjdWl0aW5nIHRoZSBmb2xkIGlmIFtmIGFjY3VtIHhdIGlzIGFuIFtFcnJvciBfXSAqKVxuICB2YWwgZm9sZF9yZXN1bHRcbiAgICA6ICAoJ2EsIF8pIHRcbiAgICAtPiBpbml0OidhY2N1bVxuICAgIC0+IGY6KCdhY2N1bSAtPiAnYSAtPiAoJ2FjY3VtLCAnZSkgUmVzdWx0LnQpXG4gICAgLT4gKCdhY2N1bSwgJ2UpIFJlc3VsdC50XG5cbiAgKCoqIFtmb2xkX3VudGlsIHQgfmluaXQgfmZdIGlzIGEgc2hvcnQtY2lyY3VpdGluZyB2ZXJzaW9uIG9mIFtmb2xkXS4gSWYgW2ZdXG4gICAgICByZXR1cm5zIFtTdG9wIF9dIHRoZSBjb21wdXRhdGlvbiBjZWFzZXMgYW5kIHJlc3VsdHMgaW4gdGhhdCB2YWx1ZS4gSWYgW2ZdIHJldHVybnNcbiAgICAgIFtDb250aW51ZSBfXSwgdGhlIGZvbGQgd2lsbCBwcm9jZWVkLiAqKVxuICB2YWwgZm9sZF91bnRpbFxuICAgIDogICgnYSwgXykgdFxuICAgIC0+IGluaXQ6J2FjY3VtXG4gICAgLT4gZjooJ2FjY3VtIC0+ICdhIC0+ICgnYWNjdW0sICdmaW5hbCkgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudClcbiAgICAtPiBmaW5pc2g6KCdhY2N1bSAtPiAnZmluYWwpXG4gICAgLT4gJ2ZpbmFsXG5cblxuICAoKiogTGlrZSB7IWZvbGR9LCBleGNlcHQgdGhhdCBpdCBnb2VzIGZyb20gdGhlIGxhcmdlc3QgdG8gdGhlIHNtYWxsZXN0IGVsZW1lbnQuICopXG4gIHZhbCBmb2xkX3JpZ2h0IDogKCdhLCBfKSB0IC0+IGluaXQ6J2FjY3VtIC0+IGY6KCdhIC0+ICdhY2N1bSAtPiAnYWNjdW0pIC0+ICdhY2N1bVxuXG4gICgqKiBbaXRlciB0IH5mXSBjYWxscyBbZl0gb24gZXZlcnkgZWxlbWVudCBvZiBbdF0sIGdvaW5nIGluIG9yZGVyIGZyb20gdGhlIHNtYWxsZXN0IHRvXG4gICAgICBsYXJnZXN0LiAgKilcbiAgdmFsIGl0ZXIgOiAoJ2EsIF8pIHQgLT4gZjooJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqKiBJdGVyYXRlIHR3byBzZXRzIHNpZGUgYnkgc2lkZS4gIENvbXBsZXhpdHkgaXMgW08obStuKV0gd2hlcmUgW21dIGFuZCBbbl0gYXJlIHRoZSBzaXplc1xuICAgICAgb2YgdGhlIHR3byBpbnB1dCBzZXRzLiAgQXMgYW4gZXhhbXBsZSwgd2l0aCB0aGUgaW5wdXRzIFswOyAxXSBhbmQgWzE7IDJdLCBbZl0gd2lsbCBiZVxuICAgICAgY2FsbGVkIHdpdGggW2BMZWZ0IDBdOyBbYEJvdGggKDEsIDEpXTsgYW5kIFtgUmlnaHQgMl0uICopXG4gIHZhbCBpdGVyMlxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KFsgYExlZnQgb2YgJ2EgfCBgUmlnaHQgb2YgJ2EgfCBgQm90aCBvZiAnYSAqICdhIF0gLT4gdW5pdClcbiAgICAtPiB1bml0XG5cbiAgKCoqIGlmIFthLCBiID0gcGFydGl0aW9uX3RmIHNldCB+Zl0gdGhlbiBbYV0gaXMgdGhlIGVsZW1lbnRzIG9uIHdoaWNoIFtmXSBwcm9kdWNlZCBbdHJ1ZV0sXG4gICAgICBhbmQgW2JdIGlzIHRoZSBlbGVtZW50cyBvbiB3aGljaCBbZl0gcHJvZHVjZXMgW2ZhbHNlXS4gKilcbiAgdmFsIHBhcnRpdGlvbl90ZiA6ICgnYSwgJ2NtcCkgdCAtPiBmOignYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgKiAoJ2EsICdjbXApIHRcblxuICAoKiogU2FtZSBhcyB7IXRvX2xpc3R9LiAqKVxuICB2YWwgZWxlbWVudHMgOiAoJ2EsIF8pIHQgLT4gJ2EgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBzZXQuICBbTyhsb2cgbildLiAqKVxuICB2YWwgbWluX2VsdCA6ICgnYSwgXykgdCAtPiAnYSBvcHRpb25cblxuICAoKiogTGlrZSB7IW1pbl9lbHR9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGVuIGdpdmVuIGFuIGVtcHR5IHNldC4gKilcbiAgdmFsIG1pbl9lbHRfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFJldHVybnMgdGhlIGxhcmdlc3QgZWxlbWVudCBvZiB0aGUgc2V0LiAgW08obG9nIG4pXS4gICopXG4gIHZhbCBtYXhfZWx0IDogKCdhLCBfKSB0IC0+ICdhIG9wdGlvblxuXG4gICgqKiBMaWtlIHshbWF4X2VsdH0sIGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIHdoZW4gZ2l2ZW4gYW4gZW1wdHkgc2V0LiAqKVxuICB2YWwgbWF4X2VsdF9leG4gOiAoJ2EsIF8pIHQgLT4gJ2FcblxuICAoKiogcmV0dXJucyBhbiBhcmJpdHJhcnkgZWxlbWVudCwgb3IgW05vbmVdIGlmIHRoZSBzZXQgaXMgZW1wdHkuICopXG4gIHZhbCBjaG9vc2UgOiAoJ2EsIF8pIHQgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIExpa2UgeyFjaG9vc2V9LCBidXQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBhbiBlbXB0eSBzZXQuICopXG4gIHZhbCBjaG9vc2VfZXhuIDogKCdhLCBfKSB0IC0+ICdhXG5cbiAgKCoqIFtzcGxpdCB0IHhdIHByb2R1Y2VzIGEgdHJpcGxlIFsodDEsIG1heWJlX3gsIHQyKV0gd2hlcmUgW3QxXSBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzXG4gICAgICBzdHJpY3RseSBsZXNzIHRoYW4gW3hdLCBbbWF5YmVfeF0gaXMgdGhlIG1lbWJlciAoaWYgYW55KSBvZiBbdF0gd2hpY2ggY29tcGFyZXMgZXF1YWxcbiAgICAgIHRvIFt4XSwgYW5kIFt0Ml0gaXMgdGhlIHNldCBvZiBlbGVtZW50cyBzdHJpY3RseSBsYXJnZXIgdGhhbiBbeF0uICopXG4gIHZhbCBzcGxpdCA6ICgnYSwgJ2NtcCkgdCAtPiAnYSAtPiAoJ2EsICdjbXApIHQgKiAnYSBvcHRpb24gKiAoJ2EsICdjbXApIHRcblxuICAoKiogaWYgW2VxdWl2XSBpcyBhbiBlcXVpdmFsZW5jZSBwcmVkaWNhdGUsIHRoZW4gW2dyb3VwX2J5IHNldCB+ZXF1aXZdIHByb2R1Y2VzIGEgbGlzdFxuICAgICAgb2YgZXF1aXZhbGVuY2UgY2xhc3NlcyAoaS5lLiwgYSBzZXQtdGhlb3JldGljIHF1b3RpZW50KS4gIEUuZy4sXG5cbiAgICAgIHtbXG4gICAgICAgIGxldCBjaGFycyA9IFNldC5vZl9saXN0IFsnQSc7ICdhJzsgJ2InOyAnYyddIGluXG4gICAgICAgIGxldCBlcXVpdiBjIGMnID0gQ2hhci5lcXVhbCAoQ2hhci51cHBlcmNhc2UgYykgKENoYXIudXBwZXJjYXNlIGMnKSBpblxuICAgICAgICBncm91cF9ieSBjaGFycyB+ZXF1aXZcbiAgICAgIF19XG5cbiAgICAgIHByb2R1Y2VzOlxuXG4gICAgICB7W1xuICAgICAgICBbU2V0Lm9mX2xpc3QgWydBJzsnYSddOyBTZXQuc2luZ2xldG9uICdiJzsgU2V0LnNpbmdsZXRvbiAnYyddXG4gICAgICBdfVxuXG4gICAgICBbZ3JvdXBfYnldIHJ1bnMgaW4gTyhuXjIpIHRpbWUsIHNvIGlmIHlvdSBoYXZlIGEgY29tcGFyaXNvbiBmdW5jdGlvbiwgaXQncyB1c3VhbGx5XG4gICAgICBtdWNoIGZhc3RlciB0byB1c2UgW1NldC5vZl9saXN0XS4gKilcbiAgdmFsIGdyb3VwX2J5IDogKCdhLCAnY21wKSB0IC0+IGVxdWl2OignYSAtPiAnYSAtPiBib29sKSAtPiAoJ2EsICdjbXApIHQgbGlzdFxuXG4gICgqKiBbdG9fc2VxdWVuY2UgdF0gY29udmVydHMgdGhlIHNldCBbdF0gdG8gYSBzZXF1ZW5jZSBvZiB0aGUgZWxlbWVudHMgYmV0d2VlblxuICAgICAgW2dyZWF0ZXJfb3JfZXF1YWxfdG9dIGFuZCBbbGVzc19vcl9lcXVhbF90b10gaW5jbHVzaXZlIGluIHRoZSBvcmRlciBpbmRpY2F0ZWQgYnlcbiAgICAgIFtvcmRlcl0uICBJZiBbZ3JlYXRlcl9vcl9lcXVhbF90byA+IGxlc3Nfb3JfZXF1YWxfdG9dIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eS4gIENvc3QgaXNcbiAgICAgIE8obG9nIG4pIHVwIGZyb250IGFuZCBhbW9ydGl6ZWQgTygxKSBmb3IgZWFjaCBlbGVtZW50IHByb2R1Y2VkLiAqKVxuICB2YWwgdG9fc2VxdWVuY2VcbiAgICA6ICA/b3JkZXI6WyBgSW5jcmVhc2luZyAoKiogZGVmYXVsdCAqKSB8IGBEZWNyZWFzaW5nIF1cbiAgICAtPiA/Z3JlYXRlcl9vcl9lcXVhbF90bzonYVxuICAgIC0+ID9sZXNzX29yX2VxdWFsX3RvOidhXG4gICAgLT4gKCdhLCAnY21wKSB0XG4gICAgLT4gJ2EgU2VxdWVuY2UudFxuXG4gICgqKiBbYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIHdoaWNoIGVsdF0gcmV0dXJucyB0aGUgZWxlbWVudCBpbiBbdF0gc3BlY2lmaWVkIGJ5XG4gICAgICBbY29tcGFyZV0gYW5kIFt3aGljaF0sIGlmIG9uZSBleGlzdHMuXG5cbiAgICAgIFt0XSBtdXN0IGJlIHNvcnRlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIGFjY29yZGluZyB0byBbY29tcGFyZV0sIHdoZXJlIFtjb21wYXJlXSBhbmRcbiAgICAgIFtlbHRdIGRpdmlkZSBbdF0gaW50byB0aHJlZSAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8ICA8IGVsdCAgfCAgPSBlbHQgIHwgID4gZWx0ICB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF0gcmV0dXJucyBhbiBlbGVtZW50IG9uIHRoZSBib3VuZGFyeSBvZiBzZWdtZW50cyBhcyBzcGVjaWZpZWQgYnlcbiAgICAgIFt3aGljaF0uICBTZWUgdGhlIGRpYWdyYW0gYmVsb3cgbmV4dCB0byB0aGUgW3doaWNoXSB2YXJpYW50cy5cblxuICAgICAgW2JpbmFyeV9zZWFyY2hdIGRvZXMgbm90IGNoZWNrIHRoYXQgW2NvbXBhcmVdIG9yZGVycyBbdF0sIGFuZCBiZWhhdmlvciBpc1xuICAgICAgdW5zcGVjaWZpZWQgaWYgW2NvbXBhcmVdIGRvZXNuJ3Qgb3JkZXIgW3RdLiAgQmVoYXZpb3IgaXMgYWxzbyB1bnNwZWNpZmllZCBpZlxuICAgICAgW2NvbXBhcmVdIG11dGF0ZXMgW3RdLiAqKVxuICB2YWwgYmluYXJ5X3NlYXJjaFxuICAgIDogICgnYSwgJ2NtcCkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdrZXkgLT4gaW50KVxuICAgIC0+IFsgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuICgqKiAgICAgICAge3YgfCA8IGVsdCBYIHwgICAgICAgICAgICAgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gKCoqICAgICB7diB8ICAgICAgPD0gZWx0ICAgICAgIFggfCAgICAgICAgICAgdn0gKilcbiAgICAgICB8IGBMYXN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAgIHt2ICAgICAgICAgICB8ICAgPSBlbHQgWCB8ICAgICAgICAgICB2fSAqKVxuICAgICAgIHwgYEZpcnN0X2VxdWFsX3RvICgqKiAgICAgICAgICAgICAgICAge3YgICAgICAgICAgIHwgWCA9IGVsdCAgIHwgICAgICAgICAgIHZ9ICopXG4gICAgICAgfCBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvICgqKiB7diAgICAgICAgICAgfCBYICAgICAgID49IGVsdCAgICAgIHwgdn0gKilcbiAgICAgICB8IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gKCoqICAgIHt2ICAgICAgICAgICAgICAgICAgICAgICB8IFggPiBlbHQgfCB2fSAqKVxuICAgICAgIF1cbiAgICAtPiAna2V5XG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFtiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIHdoaWNoXSB0YWtlcyBhIFtzZWdtZW50X29mXSBmdW5jdGlvbiB0aGF0XG4gICAgICBkaXZpZGVzIFt0XSBpbnRvIHR3byAocG9zc2libHkgZW1wdHkpIHNlZ21lbnRzOlxuXG4gICAgICB7dlxuICAgICAgICB8IHNlZ21lbnRfb2YgZWx0ID0gYExlZnQgfCBzZWdtZW50X29mIGVsdCA9IGBSaWdodCB8XG4gICAgICB2fVxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIHJldHVybnMgdGhlIGVsZW1lbnQgb24gdGhlIGJvdW5kYXJ5IG9mIHRoZSBzZWdtZW50cyBhc1xuICAgICAgc3BlY2lmaWVkIGJ5IFt3aGljaF06IFtgTGFzdF9vbl9sZWZ0XSB5aWVsZHMgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgbGVmdCBzZWdtZW50LFxuICAgICAgd2hpbGUgW2BGaXJzdF9vbl9yaWdodF0geWllbGRzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSByaWdodCBzZWdtZW50LiAgSXQgcmV0dXJuc1xuICAgICAgW05vbmVdIGlmIHRoZSBzZWdtZW50IGlzIGVtcHR5LlxuXG4gICAgICBbYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRdIGRvZXMgbm90IGNoZWNrIHRoYXQgW3NlZ21lbnRfb2ZdIHNlZ21lbnRzIFt0XSBhcyBpbiB0aGVcbiAgICAgIGRpYWdyYW0sIGFuZCBiZWhhdmlvciBpcyB1bnNwZWNpZmllZCBpZiBbc2VnbWVudF9vZl0gZG9lc24ndCBzZWdtZW50IFt0XS4gIEJlaGF2aW9yXG4gICAgICBpcyBhbHNvIHVuc3BlY2lmaWVkIGlmIFtzZWdtZW50X29mXSBtdXRhdGVzIFt0XS4gKilcbiAgdmFsIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkXG4gICAgOiAgKCdhLCAnY21wKSB0XG4gICAgLT4gc2VnbWVudF9vZjooJ2EgLT4gWyBgTGVmdCB8IGBSaWdodCBdKVxuICAgIC0+IFsgYExhc3Rfb25fbGVmdCB8IGBGaXJzdF9vbl9yaWdodCBdXG4gICAgLT4gJ2Egb3B0aW9uXG5cbiAgKCoqIFByb2R1Y2VzIHRoZSBlbGVtZW50cyBvZiB0aGUgdHdvIHNldHMgYmV0d2VlbiBbZ3JlYXRlcl9vcl9lcXVhbF90b10gYW5kXG4gICAgICBbbGVzc19vcl9lcXVhbF90b10gaW4gW29yZGVyXSwgbm90aW5nIHdoZXRoZXIgZWFjaCBlbGVtZW50IGFwcGVhcnMgaW4gdGhlIGxlZnQgc2V0LFxuICAgICAgdGhlIHJpZ2h0IHNldCwgb3IgYm90aC4gIEluIHRoZSBib3RoIGNhc2UsIGJvdGggZWxlbWVudHMgYXJlIHJldHVybmVkLCBpbiBjYXNlIHRoZVxuICAgICAgY2FsbGVyIGNhbiBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVsZW1lbnRzIHRoYXQgYXJlIGVxdWFsIHRvIHRoZSBzZXRzJyBjb21wYXJhdG9yLiAgUnVuc1xuICAgICAgaW4gTyhsZW5ndGggdCArIGxlbmd0aCB0JykuICopXG4gIG1vZHVsZSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgU2VxdWVuY2UuTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQudCA9XG4gICAgICB8IExlZnQgb2YgJ2FcbiAgICAgIHwgUmlnaHQgb2YgJ2JcbiAgICAgIHwgQm90aCBvZiAnYSAqICdiXG4gICAgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIHZhbCBtZXJnZV90b19zZXF1ZW5jZVxuICAgIDogID9vcmRlcjpbIGBJbmNyZWFzaW5nICgqKiBkZWZhdWx0ICopIHwgYERlY3JlYXNpbmcgXVxuICAgIC0+ID9ncmVhdGVyX29yX2VxdWFsX3RvOidhXG4gICAgLT4gP2xlc3Nfb3JfZXF1YWxfdG86J2FcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdjbXApIHRcbiAgICAtPiAoJ2EsICdhKSBNZXJnZV90b19zZXF1ZW5jZV9lbGVtZW50LnQgU2VxdWVuY2UudFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3NldCA9IFNldC5NKFN0cmluZykudFxuICAgICAgXX1cblxuICAgICAgd2hpY2ggc3RhbmRzIGZvcjpcblxuICAgICAge1tcbiAgICAgICAgdHlwZSBzdHJpbmdfc2V0ID0gKFN0cmluZy50LCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBTZXQudFxuICAgICAgXX1cblxuICAgICAgVGhlIHBvaW50IGlzIHRoYXQgW1NldC5NKFN0cmluZykudF0gc3VwcG9ydHMgZGVyaXZpbmcsIHdoZXJlYXMgdGhlIHNlY29uZCBzeW50YXhcbiAgICAgIGRvZXNuJ3QgKGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaCB0aGluZyBhcywgc2F5LCBTdHJpbmcuc2V4cF9vZl9jb21wYXJhdG9yX3dpdG5lc3MsXG4gICAgICBpbnN0ZWFkIHlvdSB3b3VsZCB3YW50IHRvIHBhc3MgdGhlIGNvbXBhcmF0b3IgZGlyZWN0bHkpLiAqKVxuICBtb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICgqKiBBIHBvbHltb3JwaGljIFNldC4gKilcbiAgbW9kdWxlIFBvbHkgOiBTX3BvbHkgd2l0aCB0eXBlICdlbHQgdCA9ICgnZWx0LCBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgKCoqIFVzaW5nIGNvbXBhcmF0b3IgaXMgYSBzaW1pbGFyIGludGVyZmFjZSBhcyB0aGUgdG9wbGV2ZWwgb2YgW1NldF0sIGV4Y2VwdCB0aGUgZnVuY3Rpb25zXG4gICAgICB0YWtlIGEgW35jb21wYXJhdG9yOignZWx0LCAnY21wKSBDb21wYXJhdG9yLnRdIHdoZXJlIHRoZSBmdW5jdGlvbnMgYXQgdGhlIHRvcGxldmVsIG9mXG4gICAgICBbU2V0XSB0YWtlcyBhIFsoJ2VsdCwgJ2NtcCkgY29tcGFyYXRvcl0uICopXG4gIG1vZHVsZSBVc2luZ19jb21wYXJhdG9yIDogc2lnXG4gICAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgIHZhbCBzZXhwX29mX3RcbiAgICAgIDogICgnZWx0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnY21wIC0+IFNleHBsaWIwLlNleHAudClcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG4gICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG5cbiAgICB2YWwgdF9vZl9zZXhwX2RpcmVjdFxuICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAtPiAoU2V4cC50IC0+ICdlbHQpXG4gICAgICAtPiBTZXhwLnRcbiAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICBtb2R1bGUgVHJlZSA6IHNpZ1xuICAgICAgKCoqIEEgW1RyZWUudF0gY29udGFpbnMganVzdCB0aGUgdHJlZSBkYXRhIHN0cnVjdHVyZSB0aGF0IGEgc2V0IGlzIGJhc2VkIG9uLCB3aXRob3V0XG4gICAgICAgICAgaW5jbHVkaW5nIHRoZSBjb21wYXJhdG9yLiAgQWNjb3JkaW5nbHksIGFueSBvcGVyYXRpb24gb24gYSBbVHJlZS50XSBtdXN0IGFsc28gdGFrZVxuICAgICAgICAgIGFzIGFuIGFyZ3VtZW50IHRoZSBjb3JyZXNwb25kaW5nIGNvbXBhcmF0b3IuICopXG4gICAgICB0eXBlICgnYSwgJ2NtcCkgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICAgICAgdmFsIHNleHBfb2ZfdFxuICAgICAgICA6ICAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgICAgICAtPiAoJ2NtcCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgICAgW0BAQGVuZF1cblxuICAgICAgdmFsIHRfb2Zfc2V4cF9kaXJlY3RcbiAgICAgICAgOiAgY29tcGFyYXRvcjooJ2VsdCwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgIC0+IChTZXhwLnQgLT4gJ2VsdClcbiAgICAgICAgLT4gU2V4cC50XG4gICAgICAgIC0+ICgnZWx0LCAnY21wKSB0XG5cbiAgICAgIG1vZHVsZSBOYW1lZCA6IHNpZ1xuICAgICAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgICAgIHsgdHJlZSA6ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgICAgIH1cblxuICAgICAgICB2YWwgaXNfc3Vic2V0XG4gICAgICAgICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgICAgICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgICAgICAgIC0+IG9mXzooJ2EsICdjbXApIHRcbiAgICAgICAgICAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgICB2YWwgZXF1YWxcbiAgICAgICAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gKCdhLCAnY21wKSB0XG4gICAgICAgICAgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgTmFtZWQudFxuICAgICAgICB3aXRoIG1vZHVsZSBOYW1lZCA6PSBOYW1lZFxuXG4gICAgICB2YWwgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA6IChfLCBfKSB0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBBY2Nlc3NvcnMyXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBOYW1lZC50XG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAoJ2EsICdjbXApIHQgLT4gKCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICB2YWwgaGFzaF9mb2xkX2RpcmVjdCA6ICdlbHQgSGFzaC5mb2xkZXIgLT4gKCdlbHQsICdjbXApIHQgSGFzaC5mb2xkZXJcblxuICAgIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQgOiBDb21wYXJhdG9yLlMxKSA6IHNpZ1xuICAgICAgdmFsIGVtcHR5IDogKCdhIEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuXG4gICgqKiB7MiBNb2R1bGVzIGFuZCBtb2R1bGUgdHlwZXMgZm9yIGV4dGVuZGluZyBbU2V0XX1cblxuICAgICAgRm9yIHVzZSBpbiBleHRlbnNpb25zIG9mIEJhc2UsIGxpa2UgW0NvcmVdLiAqKVxuXG4gIG1vZHVsZSBXaXRoX2NvbXBhcmF0b3IgPSBXaXRoX2NvbXBhcmF0b3JcbiAgbW9kdWxlIFdpdGhfZmlyc3RfY2xhc3NfbW9kdWxlID0gV2l0aF9maXJzdF9jbGFzc19tb2R1bGVcbiAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IFdpdGhvdXRfY29tcGFyYXRvclxuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMCA9IEFjY2Vzc29yczBcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IEFjY2Vzc29yczFcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMiA9IEFjY2Vzc29yczJcbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBBY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvclxuICBtb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IEFjY2Vzc29yc19nZW5lcmljXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMCA9IENyZWF0b3JzMFxuICBtb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBDcmVhdG9yczFcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnMyID0gQ3JlYXRvcnMyXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgPSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwID0gQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczBcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyXG5cbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yID1cbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICBtb2R1bGUgdHlwZSBDcmVhdG9yc19nZW5lcmljID0gQ3JlYXRvcnNfZ2VuZXJpY1xuICBtb2R1bGUgdHlwZSBFbHRfcGxhaW4gPSBFbHRfcGxhaW5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RpdmUgQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgQXBhY2hlIDIuMCBsaWNlbnNlLiBTZWUgLi4vVEhJUkQtUEFSVFkudHh0ICAqKVxuKCogIGZvciBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTZXRzIG92ZXIgb3JkZXJlZCB0eXBlcyAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgU2V0X2ludGZcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuXG5tb2R1bGUgVHJlZTAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEVtcHR5XG4gICAgKCogKExlYWYgeCkgaXMgdGhlIHNhbWUgYXMgKE5vZGUgKEVtcHR5LCB4LCBFbXB0eSwgMSwgMSkpIGJ1dCB1c2VzIGxlc3Mgc3BhY2UuICopXG4gICAgfCBMZWFmIG9mICdhXG4gICAgKCogZmlyc3QgaW50IGlzIGhlaWdodCwgc2Vjb25kIGlzIHN1Yi10cmVlIHNpemUgKilcbiAgICB8IE5vZGUgb2YgJ2EgdCAqICdhICogJ2EgdCAqIGludCAqIGludFxuXG4gIHR5cGUgJ2EgdHJlZSA9ICdhIHRcblxuICAoKiBTZXRzIGFyZSByZXByZXNlbnRlZCBieSBiYWxhbmNlZCBiaW5hcnkgdHJlZXMgKHRoZSBoZWlnaHRzIG9mIHRoZSBjaGlsZHJlbiBkaWZmZXIgYnlcbiAgICAgYXQgbW9zdCAyLiAqKVxuICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IDBcbiAgICB8IExlYWYgXyAtPiAxXG4gICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzID1cbiAgICBsZXQgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdiA9XG4gICAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgfCBTb21lIGxvd2VyIC0+IGNvbXBhcmVfZWx0IGxvd2VyIHYgPCAwKVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgdXBwZXIgLT4gY29tcGFyZV9lbHQgdiB1cHBlciA8IDBcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgICB8IExlYWYgdiAtPiBpbl9yYW5nZSBsb3dlciB1cHBlciBjb21wYXJlX2VsdCB2XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIGgsIG4pIC0+XG4gICAgICAgIGxldCBobCA9IGhlaWdodCBsXG4gICAgICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICAgIGFicyAoaGwgLSBocikgPD0gMlxuICAgICAgICAmJiBoID0gbWF4IGhsIGhyICsgMVxuICAgICAgICAmJiBuID0gbGVuZ3RoIGwgKyBsZW5ndGggciArIDFcbiAgICAgICAgJiYgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9lbHQgdlxuICAgICAgICAmJiBsb29wIGxvd2VyIChTb21lIHYpIGNvbXBhcmVfZWx0IGxcbiAgICAgICAgJiYgbG9vcCAoU29tZSB2KSB1cHBlciBjb21wYXJlX2VsdCByXG4gICAgaW5cbiAgICBmdW4gdCB+Y29tcGFyZV9lbHQgLT4gbG9vcCBOb25lIE5vbmUgY29tcGFyZV9lbHQgdFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgfCBMZWFmIF8gfCBOb2RlIF8gLT4gZmFsc2VcbiAgOztcblxuICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgV2UgbXVzdCBoYXZlIGFsbCBlbGVtZW50cyBvZiBsIDwgdiA8IGFsbCBlbGVtZW50cyBvZiByLlxuICAgICBsIGFuZCByIG11c3QgYmUgYmFsYW5jZWQgYW5kIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuXG4gICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgbGV0IGNyZWF0ZSBsIHYgciA9XG4gICAgbGV0IGhsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBociA9XG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBsZXQgaCA9IGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxIGluXG4gICAgaWYgaCA9IDFcbiAgICB0aGVuIExlYWYgdlxuICAgIGVsc2UgKFxuICAgICAgbGV0IHNsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGxldCBzciA9XG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBOb2RlIChsLCB2LCByLCBoLCBzbCArIHNyICsgMSkpXG4gIDs7XG5cbiAgKCogV2UgbXVzdCBjYWxsIFtmXSB3aXRoIGluY3JlYXNpbmcgaW5kZXhlcywgYmVjYXVzZSB0aGUgYmluX3Byb3QgcmVhZGVyIGluXG4gICAgIENvcmUuU2V0IG5lZWRzIGl0LiAqKVxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIG4gfmYgaSA9XG4gICAgICBtYXRjaCBuIHdpdGhcbiAgICAgIHwgMCAtPiBFbXB0eVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBrID0gZiBpIGluXG4gICAgICAgIExlYWYga1xuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCBrbCA9IGYgaSBpblxuICAgICAgICBsZXQgayA9IGYgKGkgKyAxKSBpblxuICAgICAgICBjcmVhdGUgKExlYWYga2wpIGsgRW1wdHlcbiAgICAgIHwgMyAtPlxuICAgICAgICBsZXQga2wgPSBmIGkgaW5cbiAgICAgICAgbGV0IGsgPSBmIChpICsgMSkgaW5cbiAgICAgICAgbGV0IGtyID0gZiAoaSArIDIpIGluXG4gICAgICAgIGNyZWF0ZSAoTGVhZiBrbCkgayAoTGVhZiBrcilcbiAgICAgIHwgbiAtPlxuICAgICAgICBsZXQgbGVmdF9sZW5ndGggPSBuIGxzciAxIGluXG4gICAgICAgIGxldCByaWdodF9sZW5ndGggPSBuIC0gbGVmdF9sZW5ndGggLSAxIGluXG4gICAgICAgIGxldCBsZWZ0ID0gbG9vcCBsZWZ0X2xlbmd0aCB+ZiBpIGluXG4gICAgICAgIGxldCBrID0gZiAoaSArIGxlZnRfbGVuZ3RoKSBpblxuICAgICAgICBsZXQgcmlnaHQgPSBsb29wIHJpZ2h0X2xlbmd0aCB+ZiAoaSArIGxlZnRfbGVuZ3RoICsgMSkgaW5cbiAgICAgICAgY3JlYXRlIGxlZnQgayByaWdodFxuICAgIGluXG4gICAgbG9vcCBsZW4gfmYgMFxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IGFycmF5X2xlbmd0aCA9IEFycmF5Lmxlbmd0aCBhcnJheSBpblxuICAgIGxldCBuZXh0ID1cbiAgICAgICgqIFdlIGRvbid0IGNoZWNrIGlmIHRoZSBhcnJheSBpcyBzb3J0ZWQgb3Iga2V5cyBhcmUgZHVwbGljYXRlZCwgYmVjYXVzZSB0aGF0XG4gICAgICAgICBjaGVja2luZyBpcyBzbG93ZXIgdGhhbiB0aGUgd2hvbGUgW29mX3NvcnRlZF9hcnJheV0gZnVuY3Rpb24gKilcbiAgICAgIGlmIGFycmF5X2xlbmd0aCA8IDIgfHwgY29tcGFyZV9lbHQgYXJyYXkuKDApIGFycmF5LigxKSA8IDBcbiAgICAgIHRoZW4gZnVuIGkgLT4gYXJyYXkuKGkpXG4gICAgICBlbHNlIGZ1biBpIC0+IGFycmF5LihhcnJheV9sZW5ndGggLSAxIC0gaSlcbiAgICBpblxuICAgIG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5sZW46YXJyYXlfbGVuZ3RoIH5mOm5leHRcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggYXJyYXkgd2l0aFxuICAgIHwgW3x8XSB8IFt8IF8gfF0gLT4gUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdClcbiAgICB8IF8gLT5cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgICAgICBsZXQgaW5jcmVhc2luZyA9XG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9lbHQgYXJyYXkuKDApIGFycmF5LigxKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT4gaSA8IDBcbiAgICAgICAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIEFycmF5Lmxlbmd0aCBhcnJheSAtIDIgZG9cbiAgICAgICAgICBtYXRjaCBjb21wYXJlX2VsdCBhcnJheS4oaSkgYXJyYXkuKGkgKyAxKSB3aXRoXG4gICAgICAgICAgfCAwIC0+IHIucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGR1cGxpY2F0ZWQgZWxlbWVudHNcIilcbiAgICAgICAgICB8IGkgLT5cbiAgICAgICAgICAgIGlmIFBvbHkuKCA8PiApIChpIDwgMCkgaW5jcmVhc2luZ1xuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICByLnJldHVyblxuICAgICAgICAgICAgICAgIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJvZl9zb3J0ZWRfYXJyYXk6IGVsZW1lbnRzIGFyZSBub3Qgb3JkZXJlZFwiKVxuICAgICAgICBkb25lO1xuICAgICAgICBSZXN1bHQuT2sgKG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfZWx0KSlcbiAgOztcblxuICAoKiBTYW1lIGFzIGNyZWF0ZSwgYnV0IHBlcmZvcm1zIG9uZSBzdGVwIG9mIHJlYmFsYW5jaW5nIGlmIG5lY2Vzc2FyeS5cbiAgICAgQXNzdW1lcyBsIGFuZCByIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAzLlxuICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgd2hlcmUgbm8gcmViYWxhbmNpbmcgaXMgcmVxdWlyZWQuICopXG5cbiAgbGV0IGJhbCBsIHYgciA9XG4gICAgbGV0IGhsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICB8IExlYWYgXyAtPiAxXG4gICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcbiAgICBpblxuICAgIGxldCBociA9XG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgfCBOb2RlIChfLCBfLCBfLCBoLCBfKSAtPiBoXG4gICAgaW5cbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGJlY2F1c2UgaChsKT5oKHIpKzIgYW5kIGgobGVhZik9MSAqKVxuICAgICAgfCBOb2RlIChsbCwgbHYsIGxyLCBfLCBfKSAtPlxuICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyXG4gICAgICAgIHRoZW4gY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IExlYWYgbHJ2IC0+XG4gICAgICAgICAgICBhc3NlcnQgKGlzX2VtcHR5IGxsKTtcbiAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IEVtcHR5KSBscnYgKGNyZWF0ZSBFbXB0eSB2IHIpXG4gICAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJyLCBfLCBfKSAtPiBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBscmwpIGxydiAoY3JlYXRlIGxyciB2IHIpKSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2UgKCogYmVjYXVzZSBoKHIpPmgobCkrMiBhbmQgaChsZWFmKT0xICopXG4gICAgICB8IE5vZGUgKHJsLCBydiwgcnIsIF8sIF8pIC0+XG4gICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmxcbiAgICAgICAgdGhlbiBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgTGVhZiBybHYgLT5cbiAgICAgICAgICAgIGFzc2VydCAoaXNfZW1wdHkgcnIpO1xuICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB2IEVtcHR5KSBybHYgKGNyZWF0ZSBFbXB0eSBydiBycilcbiAgICAgICAgICB8IE5vZGUgKHJsbCwgcmx2LCBybHIsIF8sIF8pIC0+IGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycikpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGggPSBpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSBpblxuICAgICAgbGV0IHNsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IExlYWYgXyAtPiAxXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgcykgLT4gc1xuICAgICAgaW5cbiAgICAgIGxldCBzciA9XG4gICAgICAgIG1hdGNoIHIgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBMZWFmIF8gLT4gMVxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIHMpIC0+IHNcbiAgICAgIGluXG4gICAgICBpZiBoID0gMSB0aGVuIExlYWYgdiBlbHNlIE5vZGUgKGwsIHYsIHIsIGgsIHNsICsgc3IgKyAxKSlcbiAgOztcblxuICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICBleGNlcHRpb24gU2FtZVxuXG4gIGxldCBhZGQgdCB4IH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBhdXggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBMZWFmIHhcbiAgICAgIHwgTGVhZiB2IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gcmFpc2UgU2FtZVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gY3JlYXRlIChMZWFmIHgpIHYgRW1wdHlcbiAgICAgICAgZWxzZSBjcmVhdGUgRW1wdHkgdiAoTGVhZiB4KVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJhaXNlIFNhbWUgZWxzZSBpZiBjIDwgMCB0aGVuIGJhbCAoYXV4IGwpIHYgciBlbHNlIGJhbCBsIHYgKGF1eCByKVxuICAgIGluXG4gICAgdHJ5IGF1eCB0IHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGUgcmVsYXRpdmUgaGVpZ2h0cyBvZiBsIGFuZFxuICAgICByLiAqKVxuICBsZXQgcmVjIGpvaW4gbCB2IHIgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBsLCByIHdpdGhcbiAgICB8IEVtcHR5LCBfIC0+IGFkZCByIHYgfmNvbXBhcmVfZWx0XG4gICAgfCBfLCBFbXB0eSAtPiBhZGQgbCB2IH5jb21wYXJlX2VsdFxuICAgIHwgTGVhZiBsdiwgXyAtPiBhZGQgKGFkZCByIHYgfmNvbXBhcmVfZWx0KSBsdiB+Y29tcGFyZV9lbHRcbiAgICB8IF8sIExlYWYgcnYgLT4gYWRkIChhZGQgbCB2IH5jb21wYXJlX2VsdCkgcnYgfmNvbXBhcmVfZWx0XG4gICAgfCBOb2RlIChsbCwgbHYsIGxyLCBsaCwgXyksIE5vZGUgKHJsLCBydiwgcnIsIHJoLCBfKSAtPlxuICAgICAgaWYgbGggPiByaCArIDJcbiAgICAgIHRoZW4gYmFsIGxsIGx2IChqb2luIGxyIHYgciB+Y29tcGFyZV9lbHQpXG4gICAgICBlbHNlIGlmIHJoID4gbGggKyAyXG4gICAgICB0aGVuIGJhbCAoam9pbiBsIHYgcmwgfmNvbXBhcmVfZWx0KSBydiByclxuICAgICAgZWxzZSBjcmVhdGUgbCB2IHJcbiAgOztcblxuICAoKiBTbWFsbGVzdCBhbmQgZ3JlYXRlc3QgZWxlbWVudCBvZiBhIHNldCAqKVxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IHwgTm9kZSAoRW1wdHksIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWluX2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIFNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0IC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V0Lm1sLlRyZWUwLlNldF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9zZXRcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIFNldF9taW5fZWx0X2V4bl9vZl9lbXB0eV9zZXRcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfaGVscGVyIH5mIHQgYWNjID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcC5Db250aW51ZSBhY2NcbiAgICAgIHwgTGVhZiB2YWx1ZSAtPiBmIGFjYyB2YWx1ZVxuICAgICAgfCBOb2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIChtYXRjaCBmb2xkX3VudGlsX2hlbHBlciB+ZiBsZWZ0IGFjYyB3aXRoXG4gICAgICAgICB8IFN0b3AgX2EgYXMgeCAtPiB4XG4gICAgICAgICB8IENvbnRpbnVlIGFjYyAtPlxuICAgICAgICAgICAobWF0Y2ggZiBhY2MgdmFsdWUgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIF9hIGFzIHggLT4geFxuICAgICAgICAgICAgfCBDb250aW51ZSBhIC0+IGZvbGRfdW50aWxfaGVscGVyIH5mIHJpZ2h0IGEpKVxuICAgIGluXG4gICAgbWF0Y2ggZm9sZF91bnRpbF9oZWxwZXIgfmYgdCBpbml0IHdpdGhcbiAgICB8IENvbnRpbnVlIHggLT4gZmluaXNoIHhcbiAgICB8IFN0b3AgeCAtPiB4XG4gIDs7XG5cbiAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiB8IE5vZGUgKF8sIHYsIEVtcHR5LCBfLCBfKSAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIF8sIHIsIF8sIF8pIC0+IG1heF9lbHQgclxuICA7O1xuXG4gIGxldCBtYXhfZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtYXhfZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBTZXRfbWF4X2VsdF9leG5fb2ZfZW1wdHlfc2V0XG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gICgqIFJlbW92ZSB0aGUgc21hbGxlc3QgZWxlbWVudCBvZiB0aGUgZ2l2ZW4gc2V0ICopXG5cbiAgbGV0IHJlYyByZW1vdmVfbWluX2VsdCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgfCBMZWFmIF8gLT4gRW1wdHlcbiAgICB8IE5vZGUgKEVtcHR5LCBfLCByLCBfLCBfKSAtPiByXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHYgclxuICA7O1xuXG4gICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLiAgQWxsIGVsZW1lbnRzIG9mIGwgbXVzdCBwcmVjZWRlIHRoZSBlbGVtZW50cyBvZiByLlxuICAgICBBc3N1bWUgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMi4gKilcbiAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPiBiYWwgdDEgKG1pbl9lbHRfZXhuIHQyKSAocmVtb3ZlX21pbl9lbHQgdDIpXG4gIDs7XG5cbiAgKCogTWVyZ2UgdHdvIHRyZWVzIGwgYW5kIHIgaW50byBvbmUuICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgIE5vIGFzc3VtcHRpb24gb24gdGhlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcbiAgbGV0IGNvbmNhdCB0MSB0MiB+Y29tcGFyZV9lbHQgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCB8IHQsIEVtcHR5IC0+IHRcbiAgICB8IF8sIF8gLT4gam9pbiB0MSAobWluX2VsdF9leG4gdDIpIChyZW1vdmVfbWluX2VsdCB0MikgfmNvbXBhcmVfZWx0XG4gIDs7XG5cbiAgbGV0IHNwbGl0IHQgeCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgc3BsaXQgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgICB8IExlYWYgdiAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIEVtcHR5LCBTb21lIHYsIEVtcHR5XG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgTm9uZSwgTGVhZiB2XG4gICAgICAgIGVsc2UgTGVhZiB2LCBOb25lLCBFbXB0eVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfZWx0IHggdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIGwsIFNvbWUgdiwgclxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsbCwgbWF5YmVfZWx0LCBybCA9IHNwbGl0IGwgaW5cbiAgICAgICAgICBsbCwgbWF5YmVfZWx0LCBqb2luIHJsIHYgciB+Y29tcGFyZV9lbHQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsciwgbWF5YmVfZWx0LCByciA9IHNwbGl0IHIgaW5cbiAgICAgICAgICBqb2luIGwgdiBsciB+Y29tcGFyZV9lbHQsIG1heWJlX2VsdCwgcnIpXG4gICAgaW5cbiAgICBzcGxpdCB0XG4gIDs7XG5cbiAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgcmVjIG1lbSB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICBjID0gMFxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICBjID0gMCB8fCBtZW0gKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfZWx0XG4gIDs7XG5cbiAgbGV0IHNpbmdsZXRvbiB4ID0gTGVhZiB4XG5cbiAgbGV0IHJlbW92ZSB0IHggfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGF1eCB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBTYW1lXG4gICAgICB8IExlYWYgdiAtPiBpZiBjb21wYXJlX2VsdCB4IHYgPSAwIHRoZW4gRW1wdHkgZWxzZSByYWlzZSBTYW1lXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgeCB2IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByIGVsc2UgaWYgYyA8IDAgdGhlbiBiYWwgKGF1eCBsKSB2IHIgZWxzZSBiYWwgbCB2IChhdXggcilcbiAgICBpblxuICAgIHRyeSBhdXggdCB3aXRoXG4gICAgfCBTYW1lIC0+IHRcbiAgOztcblxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6XyA9XG4gICAgbGV0IHJlYyBhdXggdCBpID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiByYWlzZSBTYW1lXG4gICAgICB8IExlYWYgXyAtPiBpZiBpID0gMCB0aGVuIEVtcHR5IGVsc2UgcmFpc2UgU2FtZVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGJhbCAoYXV4IGwgaSkgdiByXG4gICAgICAgIGVsc2UgYmFsIGwgdiAoYXV4IHIgKGkgLSBsX3NpemUgLSAxKSlcbiAgICBpblxuICAgIHRyeSBhdXggdCBpIHdpdGhcbiAgICB8IFNhbWUgLT4gdFxuICA7O1xuXG4gIGxldCB1bmlvbiBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgdW5pb24gczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIHQgfCB0LCBFbXB0eSAtPiB0XG4gICAgICAgIHwgTGVhZiB2MSwgXyAtPiB1bmlvbiAoTm9kZSAoRW1wdHksIHYxLCBFbXB0eSwgMSwgMSkpIHMyXG4gICAgICAgIHwgXywgTGVhZiB2MiAtPiB1bmlvbiBzMSAoTm9kZSAoRW1wdHksIHYyLCBFbXB0eSwgMSwgMSkpXG4gICAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgaDEsIF8pLCBOb2RlIChsMiwgdjIsIHIyLCBoMiwgXykgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMlxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIGlmIGgyID0gMVxuICAgICAgICAgICAgdGhlbiBhZGQgczEgdjIgfmNvbXBhcmVfZWx0XG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGwyLCBfLCByMiA9IHNwbGl0IHMyIHYxIH5jb21wYXJlX2VsdCBpblxuICAgICAgICAgICAgICBqb2luICh1bmlvbiBsMSBsMikgdjEgKHVuaW9uIHIxIHIyKSB+Y29tcGFyZV9lbHQpXG4gICAgICAgICAgZWxzZSBpZiBoMSA9IDFcbiAgICAgICAgICB0aGVuIGFkZCBzMiB2MSB+Y29tcGFyZV9lbHRcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBsMSwgXywgcjEgPSBzcGxpdCBzMSB2MiB+Y29tcGFyZV9lbHQgaW5cbiAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpIH5jb21wYXJlX2VsdCkpXG4gICAgaW5cbiAgICB1bmlvbiBzMSBzMlxuICA7O1xuXG4gIGxldCB1bmlvbl9saXN0IH5jb21wYXJhdG9yIH50b190cmVlIHhzID1cbiAgICBsZXQgY29tcGFyZV9lbHQgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSBpblxuICAgIExpc3QuZm9sZCB4cyB+aW5pdDplbXB0eSB+ZjooZnVuIGFjIHggLT4gdW5pb24gYWMgKHRvX3RyZWUgeCkgfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gIGxldCBpbnRlciBzMSBzMiB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBzMVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gfCBfLCBFbXB0eSAtPiBFbXB0eVxuICAgICAgICB8IChMZWFmIGVsdCBhcyBzaW5nbGV0b24pLCBvdGhlcl9zZXQgfCBvdGhlcl9zZXQsIChMZWFmIGVsdCBhcyBzaW5nbGV0b24pIC0+XG4gICAgICAgICAgaWYgbWVtIG90aGVyX3NldCBlbHQgfmNvbXBhcmVfZWx0IHRoZW4gc2luZ2xldG9uIGVsc2UgRW1wdHlcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gY29uY2F0IChpbnRlciBsMSBsMikgKGludGVyIHIxIHIyKSB+Y29tcGFyZV9lbHRcbiAgICAgICAgICAgfCBsMiwgU29tZSB2MSwgcjIgLT4gam9pbiAoaW50ZXIgbDEgbDIpIHYxIChpbnRlciByMSByMikgfmNvbXBhcmVfZWx0KSlcbiAgICBpblxuICAgIGludGVyIHMxIHMyXG4gIDs7XG5cbiAgbGV0IGRpZmYgczEgczIgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgaWYgcGh5c19lcXVhbCBzMSBzMlxuICAgICAgdGhlbiBFbXB0eVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHMxLCBzMiB3aXRoXG4gICAgICAgIHwgRW1wdHksIF8gLT4gRW1wdHlcbiAgICAgICAgfCB0MSwgRW1wdHkgLT4gdDFcbiAgICAgICAgfCBMZWFmIHYxLCB0MiAtPiBkaWZmIChOb2RlIChFbXB0eSwgdjEsIEVtcHR5LCAxLCAxKSkgdDJcbiAgICAgICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgICAgICAobWF0Y2ggc3BsaXQgdDIgdjEgfmNvbXBhcmVfZWx0IHdpdGhcbiAgICAgICAgICAgfCBsMiwgTm9uZSwgcjIgLT4gam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpIH5jb21wYXJlX2VsdFxuICAgICAgICAgICB8IGwyLCBTb21lIF8sIHIyIC0+IGNvbmNhdCAoZGlmZiBsMSBsMikgKGRpZmYgcjEgcjIpIH5jb21wYXJlX2VsdCkpXG4gICAgaW5cbiAgICBkaWZmIHMxIHMyXG4gIDs7XG5cbiAgbW9kdWxlIEVudW0gPSBzdHJ1Y3RcbiAgICB0eXBlIGluY3JlYXNpbmdcbiAgICB0eXBlIGRlY3JlYXNpbmdcblxuICAgIHR5cGUgKCdhLCAnZGlyZWN0aW9uKSB0ID1cbiAgICAgIHwgRW5kXG4gICAgICB8IE1vcmUgb2YgJ2EgKiAnYSB0cmVlICogKCdhLCAnZGlyZWN0aW9uKSB0XG5cbiAgICBsZXQgcmVjIGNvbnMgcyAoZSA6IChfLCBpbmNyZWFzaW5nKSB0KSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICB8IExlYWYgdiAtPiBNb3JlICh2LCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gY29ucyBsIChNb3JlICh2LCByLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb25zX3JpZ2h0IHMgKGUgOiAoXywgZGVjcmVhc2luZykgdCkgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmIHYgLT4gTW9yZSAodiwgRW1wdHksIGUpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGNvbnNfcmlnaHQgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgOztcblxuICAgIGxldCBvZl9zZXQgcyA6IChfLCBpbmNyZWFzaW5nKSB0ID0gY29ucyBzIEVuZFxuICAgIGxldCBvZl9zZXRfcmlnaHQgcyA6IChfLCBkZWNyZWFzaW5nKSB0ID0gY29uc19yaWdodCBzIEVuZFxuXG4gICAgbGV0IHN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyZSA6IChfLCBpbmNyZWFzaW5nKSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCB0IGUgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBlXG4gICAgICAgIHwgTGVhZiB2IC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBFbXB0eSwgMSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChfLCB2LCByLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPCAwIC0+IGxvb3AgciBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gbG9vcCBsIChNb3JlICh2LCByLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgdiAtPiBsb29wIChOb2RlIChFbXB0eSwgdiwgRW1wdHksIDEsIDEpKSBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgXywgXywgXykgd2hlbiBjb21wYXJlIHYga2V5ID4gMCAtPiBsb29wIGwgZVxuICAgICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+IGxvb3AgciAoTW9yZSAodiwgbCwgZSkpXG4gICAgICBpblxuICAgICAgbG9vcCB0IEVuZFxuICAgIDs7XG5cbiAgICBsZXQgY29tcGFyZSBjb21wYXJlX2VsdCBlMSBlMiA9XG4gICAgICBsZXQgcmVjIGxvb3AgZTEgZTIgPVxuICAgICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCByMSwgZTEpLCBNb3JlICh2MiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9lbHQgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDBcbiAgICAgICAgICB0aGVuIGNcbiAgICAgICAgICBlbHNlIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgICAgICAgICB0aGVuIGxvb3AgZTEgZTJcbiAgICAgICAgICBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKVxuICAgICAgaW5cbiAgICAgIGxvb3AgZTEgZTJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBpdGVyIH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+ICgpXG4gICAgICB8IE1vcmUgKGEsIHRyZWUsIGVudW0pIC0+XG4gICAgICAgIGYgYTtcbiAgICAgICAgaXRlciAoY29ucyB0cmVlIGVudW0pIH5mXG4gICAgOztcblxuICAgIGxldCBpdGVyMiBjb21wYXJlX2VsdCB0MSB0MiB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+ICgpXG4gICAgICAgIHwgRW5kLCBfIC0+IGl0ZXIgdDIgfmY6KGZ1biBhIC0+IGYgKGBSaWdodCBhKSlcbiAgICAgICAgfCBfLCBFbmQgLT4gaXRlciB0MSB+ZjooZnVuIGEgLT4gZiAoYExlZnQgYSkpXG4gICAgICAgIHwgTW9yZSAoYTEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9lbHQgYTEgYTIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGYgKGBCb3RoIChhMSwgYTIpKTtcbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSlcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgZiAoYExlZnQgYTEpO1xuICAgICAgICAgICAgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgdDIpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBmIChgUmlnaHQgYTIpO1xuICAgICAgICAgICAgbG9vcCB0MSAoY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfZWx0ID1cbiAgICAgIGxldCBzdGVwIHN0YXRlIDogKChfLCBfKSBFaXRoZXIudCwgXykgU2VxdWVuY2UuU3RlcC50ID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IERvbmVcbiAgICAgICAgfCBFbmQsIE1vcmUgKGVsdCwgdHJlZSwgZW51bSkgLT4gWWllbGQgKFNlY29uZCBlbHQsIChFbmQsIGNvbnMgdHJlZSBlbnVtKSlcbiAgICAgICAgfCBNb3JlIChlbHQsIHRyZWUsIGVudW0pLCBFbmQgLT4gWWllbGQgKEZpcnN0IGVsdCwgKGNvbnMgdHJlZSBlbnVtLCBFbmQpKVxuICAgICAgICB8IChNb3JlIChhMSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGEyLCB0cmVlMiwgZW51bTIpIGFzIHJpZ2h0KSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IGExIGEyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dF9zdGF0ZSA9XG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgICAgdGhlbiBlbnVtMSwgZW51bTJcbiAgICAgICAgICAgICAgZWxzZSBjb25zIHRyZWUxIGVudW0xLCBjb25zIHRyZWUyIGVudW0yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgU2tpcCBuZXh0X3N0YXRlKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiBZaWVsZCAoRmlyc3QgYTEsIChjb25zIHRyZWUxIGVudW0xLCByaWdodCkpXG4gICAgICAgICAgZWxzZSBZaWVsZCAoU2Vjb25kIGEyLCAobGVmdCwgY29ucyB0cmVlMiBlbnVtMikpXG4gICAgICBpblxuICAgICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQ6KG9mX3NldCB0MSwgb2Zfc2V0IHQyKSB+ZjpzdGVwXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9lbHQgdCA9XG4gICAgbGV0IG5leHQgZW51bSA9XG4gICAgICBtYXRjaCBlbnVtIHdpdGhcbiAgICAgIHwgRW51bS5FbmQgLT4gU2VxdWVuY2UuU3RlcC5Eb25lXG4gICAgICB8IEVudW0uTW9yZSAoaywgdCwgZSkgLT4gU2VxdWVuY2UuU3RlcC5ZaWVsZCAoaywgRW51bS5jb25zIHQgZSlcbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fZWx0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3NldCB0XG4gICAgICB8IFNvbWUga2V5IC0+IEVudW0uc3RhcnRpbmdfYXRfaW5jcmVhc2luZyB0IGtleSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgU2VxdWVuY2UudW5mb2xkX3N0ZXAgfmluaXQgfmY6bmV4dFxuICA7O1xuXG4gIGxldCB0b19zZXF1ZW5jZV9kZWNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKGssIEVudW0uY29uc19yaWdodCB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2VsdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl9zZXRfcmlnaHQgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2RlY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGluY2x1c2l2ZV9ib3VuZCBzaWRlIHQgYm91bmQgPVxuICAgICAgbGV0IGNvbXBhcmVfZWx0ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBsLCBtYXliZSwgciA9IHNwbGl0IHQgYm91bmQgfmNvbXBhcmVfZWx0IGluXG4gICAgICBsZXQgdCA9IHNpZGUgKGwsIHIpIGluXG4gICAgICBtYXRjaCBtYXliZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIGVsdCAtPiBhZGQgdCBlbHQgfmNvbXBhcmVfZWx0XG4gICAgaW5cbiAgICBtYXRjaCBvcmRlciB3aXRoXG4gICAgfCBgSW5jcmVhc2luZyAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBsZXNzX29yX2VxdWFsX3RvIH5pbml0OnQgfmY6KGluY2x1c2l2ZV9ib3VuZCBmc3QpIGluXG4gICAgICB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fZWx0OmdyZWF0ZXJfb3JfZXF1YWxfdG8gdFxuICAgIHwgYERlY3JlYXNpbmcgLT5cbiAgICAgIGxldCB0ID0gT3B0aW9uLmZvbGQgZ3JlYXRlcl9vcl9lcXVhbF90byB+aW5pdDp0IH5mOihpbmNsdXNpdmVfYm91bmQgc25kKSBpblxuICAgICAgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2VsdDpsZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuXG4gIGxldCByZWMgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIHZcbiAgICAgICAgfCBTb21lIF8gYXMgeCAtPiB4KVxuICAgICAgZWxzZSBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgciB+ZlxuICA7O1xuXG4gIGxldCByZWMgZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgZiB2IHRoZW4gU29tZSB2IGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgIGlmIGYgdlxuICAgICAgdGhlbiAoXG4gICAgICAgIG1hdGNoIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHIgfmYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gU29tZSB2XG4gICAgICAgIHwgU29tZSBfIGFzIHggLT4geClcbiAgICAgIGVsc2UgZmluZF9sYXN0X3NhdGlzZnlpbmcgbCB+ZlxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPCAwKVxuICAgIHwgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIC0+IGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2IDw9IDApXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPj0gMCkgd2l0aFxuICAgICAgIHwgU29tZSB4IGFzIGVsdCB3aGVuIGNvbXBhcmUgeCB2ID0gMCAtPiBlbHRcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIHggLT4gY29tcGFyZSB4IHYgPD0gMCkgd2l0aFxuICAgICAgIHwgU29tZSB4IGFzIGVsdCB3aGVuIGNvbXBhcmUgeCB2ID0gMCAtPiBlbHRcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4geCAtPiBjb21wYXJlIHggdiA+PSAwKVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB4IC0+IGNvbXBhcmUgeCB2ID4gMClcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IHggPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB4IHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB4ID0gbm90IChpc19sZWZ0IHgpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfcmlnaHRcbiAgOztcblxuICBsZXQgbWVyZ2VfdG9fc2VxdWVuY2VcbiAgICAgICAgY29tcGFyYXRvclxuICAgICAgICA/KG9yZGVyID0gYEluY3JlYXNpbmcpXG4gICAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICAgID9sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICAgICAgdCdcbiAgICA9XG4gICAgU2VxdWVuY2UubWVyZ2Vfd2l0aF9kdXBsaWNhdGVzXG4gICAgICAodG9fc2VxdWVuY2UgY29tcGFyYXRvciB+b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdClcbiAgICAgICh0b19zZXF1ZW5jZSBjb21wYXJhdG9yIH5vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0JylcbiAgICAgIH5jb21wYXJlOlxuICAgICAgICAobWF0Y2ggb3JkZXIgd2l0aFxuICAgICAgICAgfCBgSW5jcmVhc2luZyAtPiBjb21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIHwgYERlY3JlYXNpbmcgLT4gRm4uZmxpcCBjb21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPVxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMilcbiAgOztcblxuICBsZXQgaXRlcjIgczEgczIgfmNvbXBhcmVfZWx0ID0gRW51bS5pdGVyMiBjb21wYXJlX2VsdCAoRW51bS5vZl9zZXQgczEpIChFbnVtLm9mX3NldCBzMilcbiAgbGV0IGVxdWFsIHMxIHMyIH5jb21wYXJlX2VsdCA9IGNvbXBhcmUgY29tcGFyZV9lbHQgczEgczIgPSAwXG5cbiAgbGV0IGlzX3N1YnNldCBzMSB+b2ZfOnMyIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBpc19zdWJzZXQgczEgfm9mXzpzMiA9XG4gICAgICBtYXRjaCBzMSwgczIgd2l0aFxuICAgICAgfCBFbXB0eSwgXyAtPiB0cnVlXG4gICAgICB8IF8sIEVtcHR5IC0+IGZhbHNlXG4gICAgICB8IExlYWYgdjEsIHQyIC0+IG1lbSB0MiB2MSB+Y29tcGFyZV9lbHRcbiAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIExlYWYgdjIgLT5cbiAgICAgICAgKG1hdGNoIGwxLCByMSB3aXRoXG4gICAgICAgICB8IEVtcHR5LCBFbXB0eSAtPlxuICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkbid0IG9jY3VyIGluIHByYWN0aWNlIGJlY2F1c2Ugd2Ugc2hvdWxkIGhhdmUgY29uc3RydWN0ZWRcbiAgICAgICAgICAgICAgYSBMZWFmIHJhdGhlciB0aGFuIGEgTm9kZSB3aXRoIHR3byBFbXB0eSBzdWJ0cmVlcyAqKVxuICAgICAgICAgICBjb21wYXJlX2VsdCB2MSB2MiA9IDBcbiAgICAgICAgIHwgXywgXyAtPiBmYWxzZSlcbiAgICAgIHwgTm9kZSAobDEsIHYxLCByMSwgXywgXyksIChOb2RlIChsMiwgdjIsIHIyLCBfLCBfKSBhcyB0MikgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2VsdCB2MSB2MiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgcGh5c19lcXVhbCBzMSBzMiB8fCAoaXNfc3Vic2V0IGwxIH5vZl86bDIgJiYgaXNfc3Vic2V0IHIxIH5vZl86cjIpXG4gICAgICAgICAgKCogTm90ZSB0aGF0IGhlaWdodCBhbmQgc2l6ZSBkb24ndCBtYXR0ZXIgaGVyZS4gKilcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIGlzX3N1YnNldCAoTm9kZSAobDEsIHYxLCBFbXB0eSwgMCwgMCkpIH5vZl86bDIgJiYgaXNfc3Vic2V0IHIxIH5vZl86dDJcbiAgICAgICAgZWxzZSBpc19zdWJzZXQgKE5vZGUgKEVtcHR5LCB2MSwgcjEsIDAsIDApKSB+b2ZfOnIyICYmIGlzX3N1YnNldCBsMSB+b2ZfOnQyXG4gICAgaW5cbiAgICBpc19zdWJzZXQgczEgfm9mXzpzMlxuICA7O1xuXG4gIGxldCByZWMgYXJlX2Rpc2pvaW50IHMxIHMyIH5jb21wYXJlX2VsdCA9XG4gICAgbWF0Y2ggczEsIHMyIHdpdGhcbiAgICB8IEVtcHR5LCBfIHwgXywgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiBlbHQsIG90aGVyX3NldCB8IG90aGVyX3NldCwgTGVhZiBlbHQgLT4gbm90IChtZW0gb3RoZXJfc2V0IGVsdCB+Y29tcGFyZV9lbHQpXG4gICAgfCBOb2RlIChsMSwgdjEsIHIxLCBfLCBfKSwgdDIgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgczEgczJcbiAgICAgIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBzcGxpdCB0MiB2MSB+Y29tcGFyZV9lbHQgd2l0aFxuICAgICAgICB8IGwyLCBOb25lLCByMiAtPlxuICAgICAgICAgIGFyZV9kaXNqb2ludCBsMSBsMiB+Y29tcGFyZV9lbHQgJiYgYXJlX2Rpc2pvaW50IHIxIHIyIH5jb21wYXJlX2VsdFxuICAgICAgICB8IF8sIFNvbWUgXywgXyAtPiBmYWxzZSlcbiAgOztcblxuICBsZXQgaXRlciB0IH5mID1cbiAgICBsZXQgcmVjIGl0ZXIgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBMZWFmIHYgLT4gZiB2XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGl0ZXIgbDtcbiAgICAgICAgZiB2O1xuICAgICAgICBpdGVyIHJcbiAgICBpblxuICAgIGl0ZXIgdFxuICA7O1xuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiA9IEVudW0uc3ltbWV0cmljX2RpZmZcblxuICBsZXQgcmVjIGZvbGQgcyB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgdiAtPiBmIGFjY3UgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkgdilcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX3RfaWdub3Jpbmdfc3RydWN0dXJlIGhhc2hfZm9sZF9lbGVtIHN0YXRlIHQgPVxuICAgIGZvbGQgdCB+aW5pdDooaGFzaF9mb2xkX2ludCBzdGF0ZSAobGVuZ3RoIHQpKSB+ZjpoYXNoX2ZvbGRfZWxlbVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID0gQ29udGFpbmVyLmNvdW50IH5mb2xkIHQgfmZcbiAgbGV0IHN1bSBtIHQgfmYgPSBDb250YWluZXIuc3VtIH5mb2xkIG0gdCB+ZlxuXG4gIGxldCByZWMgZm9sZF9yaWdodCBzIH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IGYgdiBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBmb2xkX3JpZ2h0IH5mIGwgfmluaXQ6KGYgdiAoZm9sZF9yaWdodCB+ZiByIH5pbml0OmFjY3UpKVxuICA7O1xuXG4gIGxldCByZWMgZm9yX2FsbCB0IH5mOnAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiB2IC0+IHAgdlxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gcCB2ICYmIGZvcl9hbGwgfmY6cCBsICYmIGZvcl9hbGwgfmY6cCByXG4gIDs7XG5cbiAgbGV0IHJlYyBleGlzdHMgdCB+ZjpwID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGZhbHNlXG4gICAgfCBMZWFmIHYgLT4gcCB2XG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPiBwIHYgfHwgZXhpc3RzIH5mOnAgbCB8fCBleGlzdHMgfmY6cCByXG4gIDs7XG5cbiAgbGV0IGZpbHRlciBzIH5mOnAgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGZpbHQgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTGVhZiB2IC0+IGlmIHAgdiB0aGVuIGFkZCBhY2N1IHYgfmNvbXBhcmVfZWx0IGVsc2UgYWNjdVxuICAgICAgfCBOb2RlIChsLCB2LCByLCBfLCBfKSAtPlxuICAgICAgICBmaWx0IChmaWx0IChpZiBwIHYgdGhlbiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdCBlbHNlIGFjY3UpIGwpIHJcbiAgICBpblxuICAgIGZpbHQgRW1wdHkgc1xuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHMgfmY6cCB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBMZWFmIHYgLT5cbiAgICAgICAgKG1hdGNoIHAgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgfCBTb21lIHYgLT4gYWRkIGFjY3UgdiB+Y29tcGFyZV9lbHQpXG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIGZpbHRcbiAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgIChtYXRjaCBwIHYgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjdVxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBhZGQgYWNjdSB2IH5jb21wYXJlX2VsdClcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgIHJcbiAgICBpblxuICAgIGZpbHQgRW1wdHkgc1xuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgcyB+ZjpwIH5jb21wYXJlX2VsdCA9XG4gICAgbGV0IHJlYyBwYXJ0ICgodCwgZikgYXMgYWNjdSkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IExlYWYgdiAtPiBpZiBwIHYgdGhlbiBhZGQgdCB2IH5jb21wYXJlX2VsdCwgZiBlbHNlIHQsIGFkZCBmIHYgfmNvbXBhcmVfZWx0XG4gICAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAgIHBhcnQgKHBhcnQgKGlmIHAgdiB0aGVuIGFkZCB0IHYgfmNvbXBhcmVfZWx0LCBmIGVsc2UgdCwgYWRkIGYgdiB+Y29tcGFyZV9lbHQpIGwpIHJcbiAgICBpblxuICAgIHBhcnQgKEVtcHR5LCBFbXB0eSkgc1xuICA7O1xuXG4gIGxldCByZWMgZWxlbWVudHNfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiB2IC0+IHYgOjogYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT4gZWxlbWVudHNfYXV4ICh2IDo6IGVsZW1lbnRzX2F1eCBhY2N1IHIpIGxcbiAgOztcblxuICBsZXQgZWxlbWVudHMgcyA9IGVsZW1lbnRzX2F1eCBbXSBzXG5cbiAgbGV0IGNob29zZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBTb21lIHZcbiAgICB8IE5vZGUgKF8sIHYsIF8sIF8sIF8pIC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBjaG9vc2VfZXhuID1cbiAgICBsZXQgbm90X2ZvdW5kID0gTm90X2ZvdW5kX3MgKEF0b20gXCJTZXQuY2hvb3NlX2V4bjogZW1wdHkgc2V0XCIpIGluXG4gICAgbGV0IGNob29zZV9leG4gdCA9XG4gICAgICBtYXRjaCBjaG9vc2UgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2Ugbm90X2ZvdW5kXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgaW5cbiAgICAoKiBuYW1lZCB0byBwcmVzZXJ2ZSBzeW1ib2wgaW4gY29tcGlsZWQgYmluYXJ5ICopXG4gICAgY2hvb3NlX2V4blxuICA7O1xuXG4gIGxldCBvZl9saXN0IGxzdCB+Y29tcGFyZV9lbHQgPVxuICAgIExpc3QuZm9sZCBsc3QgfmluaXQ6ZW1wdHkgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyZV9lbHQpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIHNlcXVlbmNlIH5jb21wYXJlX2VsdCA9XG4gICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCB4IH5jb21wYXJlX2VsdClcbiAgOztcblxuICBsZXQgdG9fbGlzdCBzID0gZWxlbWVudHMgc1xuXG4gIGxldCBvZl9hcnJheSBhIH5jb21wYXJlX2VsdCA9XG4gICAgQXJyYXkuZm9sZCBhIH5pbml0OmVtcHR5IH5mOihmdW4gdCB4IC0+IGFkZCB0IHggfmNvbXBhcmVfZWx0KVxuICA7O1xuXG4gICgqIGZhc3RlciBidXQgZXF1aXZhbGVudCB0byBbQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KV0gKilcbiAgbGV0IHRvX2FycmF5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IFt8fF1cbiAgICB8IExlYWYgdiAtPiBbfCB2IHxdXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgbGV0IHJlcyA9IEFycmF5LmNyZWF0ZSB+bGVuOnMgdiBpblxuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICAgICAgKCogSW52YXJpYW50OiBvbiBlbnRyeSBhbmQgb24gZXhpdCB0byBbbG9vcF0sICFwb3NfcmVmIGlzIHRoZSBuZXh0XG4gICAgICAgICAgIGF2YWlsYWJsZSBjZWxsIGluIHRoZSBhcnJheS4gKilcbiAgICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgICB8IExlYWYgdiAtPlxuICAgICAgICAgIHJlcy4oIXBvc19yZWYpIDwtIHY7XG4gICAgICAgICAgaW5jciBwb3NfcmVmXG4gICAgICAgIHwgTm9kZSAobCwgdiwgciwgXywgXykgLT5cbiAgICAgICAgICBsb29wIGw7XG4gICAgICAgICAgcmVzLighcG9zX3JlZikgPC0gdjtcbiAgICAgICAgICBpbmNyIHBvc19yZWY7XG4gICAgICAgICAgbG9vcCByXG4gICAgICBpblxuICAgICAgbG9vcCBsO1xuICAgICAgKCogcmVzLighcG9zX3JlZikgaXMgYWxyZWFkeSBpbml0aWFsaXplZCAoYnkgQXJyYXkuY3JlYXRlIH5sZW46YWJvdmUpLiAqKVxuICAgICAgaW5jciBwb3NfcmVmO1xuICAgICAgbG9vcCByO1xuICAgICAgcmVzXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mIH5jb21wYXJlX2VsdCA9IGZvbGQgdCB+aW5pdDplbXB0eSB+ZjooZnVuIHQgeCAtPiBhZGQgdCAoZiB4KSB+Y29tcGFyZV9lbHQpXG5cbiAgbGV0IGdyb3VwX2J5IHNldCB+ZXF1aXYgfmNvbXBhcmVfZWx0ID1cbiAgICBsZXQgcmVjIGxvb3Agc2V0IGVxdWl2X2NsYXNzZXMgPVxuICAgICAgaWYgaXNfZW1wdHkgc2V0XG4gICAgICB0aGVuIGVxdWl2X2NsYXNzZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgeCA9IGNob29zZV9leG4gc2V0IGluXG4gICAgICAgIGxldCBlcXVpdl94LCBub3RfZXF1aXZfeCA9XG4gICAgICAgICAgcGFydGl0aW9uX3RmIHNldCB+ZjooZnVuIGVsdCAtPiBwaHlzX2VxdWFsIHggZWx0IHx8IGVxdWl2IHggZWx0KSB+Y29tcGFyZV9lbHRcbiAgICAgICAgaW5cbiAgICAgICAgbG9vcCBub3RfZXF1aXZfeCAoZXF1aXZfeCA6OiBlcXVpdl9jbGFzc2VzKSlcbiAgICBpblxuICAgIGxvb3Agc2V0IFtdXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiB2IC0+IGlmIGYgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICBpZiBmIHZcbiAgICAgIHRoZW4gU29tZSB2XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggZmluZCBsIH5mIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbmQgciB+ZlxuICAgICAgICB8IFNvbWUgXyBhcyByIC0+IHIpXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX21hcCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgdiAtPiBmIHZcbiAgICB8IE5vZGUgKGwsIHYsIHIsIF8sIF8pIC0+XG4gICAgICAobWF0Y2ggZiB2IHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIChtYXRjaCBmaW5kX21hcCBsIH5mIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmluZF9tYXAgciB+ZlxuICAgICAgICAgIHwgU29tZSBfIGFzIHIgLT4gcikpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQgfmYgPVxuICAgIG1hdGNoIGZpbmQgdCB+ZiB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiU2V0LmZpbmRfZXhuIGZhaWxlZCB0byBmaW5kIGEgbWF0Y2hpbmcgZWxlbWVudFwiXG4gICAgfCBTb21lIGUgLT4gZVxuICA7O1xuXG4gIGxldCByZWMgbnRoIHQgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBOb25lXG4gICAgfCBMZWFmIHYgLT4gaWYgaSA9IDAgdGhlbiBTb21lIHYgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCByLCBfLCBzKSAtPlxuICAgICAgaWYgaSA+PSBzXG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbF9zaXplID0gbGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGMgPSBQb2x5LmNvbXBhcmUgaSBsX3NpemUgaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBudGggbCBpIGVsc2UgaWYgYyA9IDAgdGhlbiBTb21lIHYgZWxzZSBudGggciAoaSAtIGxfc2l6ZSAtIDEpKVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQgPVxuICAgIGxldCByZWMgbG9vcCB4cyBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuID1cbiAgICAgIG1hdGNoIHhzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgbGVmdG92ZXJzXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGlmIG1lbSBhbHJlYWR5X3NlZW4gaGQgfmNvbXBhcmVfZWx0XG4gICAgICAgIHRoZW4gbG9vcCB0bCBsZWZ0b3ZlcnMgYWxyZWFkeV9zZWVuXG4gICAgICAgIGVsc2UgbG9vcCB0bCAoaGQgOjogbGVmdG92ZXJzKSAoYWRkIGFscmVhZHlfc2VlbiBoZCB+Y29tcGFyZV9lbHQpXG4gICAgaW5cbiAgICBsb29wIHhzIFtdIGVtcHR5XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmVfZWx0ID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IFNleHAuTGlzdCBsc3QgLT5cbiAgICAgIGxldCBlbHRfbHN0ID0gTGlzdC5tYXAgbHN0IH5mOmFfb2Zfc2V4cCBpblxuICAgICAgbGV0IHNldCA9IG9mX2xpc3QgZWx0X2xzdCB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGxlbmd0aCBzZXQgPSBMaXN0Lmxlbmd0aCBsc3RcbiAgICAgIHRoZW4gc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNldCA9IHJlZiBlbXB0eSBpblxuICAgICAgICBMaXN0Lml0ZXIyX2V4biBsc3QgZWx0X2xzdCB+ZjooZnVuIGVsX3NleHAgZWwgLT5cbiAgICAgICAgICBpZiBtZW0gIXNldCBlbCB+Y29tcGFyZV9lbHRcbiAgICAgICAgICB0aGVuIG9mX3NleHBfZXJyb3IgXCJTZXQudF9vZl9zZXhwOiBkdXBsaWNhdGUgZWxlbWVudCBpbiBzZXRcIiBlbF9zZXhwXG4gICAgICAgICAgZWxzZSBzZXQgOj0gYWRkICFzZXQgZWwgfmNvbXBhcmVfZWx0KTtcbiAgICAgICAgYXNzZXJ0IGZhbHNlKVxuICAgIHwgc2V4cCAtPiBvZl9zZXhwX2Vycm9yIFwiU2V0LnRfb2Zfc2V4cDogbGlzdCBuZWVkZWRcIiBzZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgU2V4cC5MaXN0IChmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biBlbCBhY2MgLT4gc2V4cF9vZl9hIGVsIDo6IGFjYykpXG4gIDs7XG5cbiAgbW9kdWxlIE5hbWVkID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnY21wKSB0ID1cbiAgICAgIHsgdHJlZSA6ICdhIHRcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgbGV0IGlzX3N1YnNldCAoc3Vic2V0IDogXyB0KSB+b2ZfOihzdXBlcnNldCA6IF8gdCkgfnNleHBfb2ZfZWx0IH5jb21wYXJlX2VsdCA9XG4gICAgICBsZXQgaW52YWxpZF9lbGVtZW50cyA9IGRpZmYgc3Vic2V0LnRyZWUgc3VwZXJzZXQudHJlZSB+Y29tcGFyZV9lbHQgaW5cbiAgICAgIGlmIGlzX2VtcHR5IGludmFsaWRfZWxlbWVudHNcbiAgICAgIHRoZW4gT2sgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgaW52YWxpZF9lbGVtZW50c19zZXhwID0gc2V4cF9vZl90IHNleHBfb2ZfZWx0IGludmFsaWRfZWxlbWVudHMgaW5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICAoc3Vic2V0Lm5hbWUgXiBcIiBpcyBub3QgYSBzdWJzZXQgb2YgXCIgXiBzdXBlcnNldC5uYW1lKVxuICAgICAgICAgICAgIFsgXCJpbnZhbGlkX2VsZW1lbnRzXCIsIGludmFsaWRfZWxlbWVudHNfc2V4cCBdKSlcbiAgICA7O1xuXG4gICAgbGV0IGVxdWFsIHMxIHMyIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHQgPVxuICAgICAgT3JfZXJyb3IuY29tYmluZV9lcnJvcnNfdW5pdFxuICAgICAgICBbIGlzX3N1YnNldCBzMSB+b2ZfOnMyIH5zZXhwX29mX2VsdCB+Y29tcGFyZV9lbHRcbiAgICAgICAgOyBpc19zdWJzZXQgczIgfm9mXzpzMSB+c2V4cF9vZl9lbHQgfmNvbXBhcmVfZWx0XG4gICAgICAgIF1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHQgPVxuICB7ICgqIFtjb21wYXJhdG9yXSBpcyB0aGUgZmlyc3QgZmllbGQgc28gdGhhdCBwb2x5bW9ycGhpYyBlcXVhbGl0eSBmYWlscyBvbiBhIG1hcCBkdWVcbiAgICAgICB0byB0aGUgZnVuY3Rpb25hbCB2YWx1ZSBpbiB0aGUgY29tcGFyYXRvci5cbiAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgcG9seW1vcnBoaWMgW2NvbXBhcmVdOiB0aGF0IHN0aWxsIHByb2R1Y2VzXG4gICAgICAgbm9uc2Vuc2UuICopXG4gICAgY29tcGFyYXRvciA6ICgnYSwgJ2NvbXBhcmF0b3IpIENvbXBhcmF0b3IudFxuICA7IHRyZWUgOiAnYSBUcmVlMC50XG4gIH1cblxudHlwZSAoJ2EsICdjb21wYXJhdG9yKSB0cmVlID0gJ2EgVHJlZTAudFxuXG5sZXQgbGlrZSB7IHRyZWUgPSBfOyBjb21wYXJhdG9yIH0gdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvciB9XG5sZXQgY29tcGFyZV9lbHQgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG4gIGxldCBpbnZhcmlhbnRzIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0LnRyZWVcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlMC5pc19lbXB0eSB0LnRyZWVcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0LnRyZWVcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgY2hvb3NlIHQgPSBUcmVlMC5jaG9vc2UgdC50cmVlXG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHQudHJlZVxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZTAudG9fbGlzdCB0LnRyZWVcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlMC50b19hcnJheSB0LnRyZWVcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGQgdC50cmVlIH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3VudGlsIHQudHJlZSB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0LnRyZWUgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIGEgYiB+ZiA9IFRyZWUwLml0ZXIyIGEudHJlZSBiLnRyZWUgfmYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdC50cmVlIH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlMC5mb3JfYWxsIHQudHJlZSB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUwLmNvdW50IHQudHJlZSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUwLnN1bSBtIHQudHJlZSB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZTAuZmluZCB0LnRyZWUgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlMC5maW5kX2V4biB0LnRyZWUgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlMC5maW5kX21hcCB0LnRyZWUgfmZcbiAgbGV0IG1lbSB0IGEgPSBUcmVlMC5tZW0gdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuICBsZXQgZmlsdGVyIHQgfmYgPSBsaWtlIHQgKFRyZWUwLmZpbHRlciB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IGFkZCB0IGEgPSBsaWtlIHQgKFRyZWUwLmFkZCB0LnRyZWUgYSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKVxuICBsZXQgcmVtb3ZlIHQgYSA9IGxpa2UgdCAoVHJlZTAucmVtb3ZlIHQudHJlZSBhIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdCkpXG4gIGxldCB1bmlvbiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLnVuaW9uIHQxLnRyZWUgdDIudHJlZSB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQxKSlcbiAgbGV0IGludGVyIHQxIHQyID0gbGlrZSB0MSAoVHJlZTAuaW50ZXIgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuICBsZXQgZGlmZiB0MSB0MiA9IGxpa2UgdDEgKFRyZWUwLmRpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpKVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2VsdDooY29tcGFyZV9lbHQgdDEpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZTAuY29tcGFyZSAoY29tcGFyZV9lbHQgdDEpIHQxLnRyZWUgdDIudHJlZVxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlMC5lcXVhbCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgbGV0IGlzX3N1YnNldCB0IH5vZl8gPSBUcmVlMC5pc19zdWJzZXQgdC50cmVlIH5vZl86b2ZfLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KVxuXG4gIGxldCBhcmVfZGlzam9pbnQgdDEgdDIgPVxuICAgIFRyZWUwLmFyZV9kaXNqb2ludCB0MS50cmVlIHQyLnRyZWUgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0MSlcbiAgOztcblxuICBtb2R1bGUgTmFtZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPVxuICAgICAgeyBzZXQgOiAoJ2EsICdjbXApIHRcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgfVxuXG4gICAgbGV0IHRvX25hbWVkX3RyZWUgeyBzZXQ7IG5hbWUgfSA9IHsgVHJlZTAuTmFtZWQudHJlZSA9IHNldC50cmVlOyBuYW1lIH1cblxuICAgIGxldCBpc19zdWJzZXQgKHN1YnNldCA6IChfLCBfKSB0KSB+b2ZfOihzdXBlcnNldCA6IChfLCBfKSB0KSA9XG4gICAgICBUcmVlMC5OYW1lZC5pc19zdWJzZXRcbiAgICAgICAgKHRvX25hbWVkX3RyZWUgc3Vic2V0KVxuICAgICAgICB+b2ZfOih0b19uYW1lZF90cmVlIHN1cGVyc2V0KVxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHN1YnNldC5zZXQpXG4gICAgICAgIH5zZXhwX29mX2VsdDpzdWJzZXQuc2V0LmNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBlcXVhbCB0MSB0MiA9XG4gICAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0IFsgaXNfc3Vic2V0IHQxIH5vZl86dDI7IGlzX3N1YnNldCB0MiB+b2ZfOnQxIF1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIGxldCB0cmVlX3QsIHRyZWVfZiA9IFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlX3QsIGxpa2UgdCB0cmVlX2ZcbiAgOztcblxuICBsZXQgc3BsaXQgdCBhID1cbiAgICBsZXQgdHJlZTEsIGIsIHRyZWUyID0gVHJlZTAuc3BsaXQgdC50cmVlIGEgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSBpblxuICAgIGxpa2UgdCB0cmVlMSwgYiwgbGlrZSB0IHRyZWUyXG4gIDs7XG5cbiAgbGV0IGdyb3VwX2J5IHQgfmVxdWl2ID1cbiAgICBMaXN0Lm1hcCAoVHJlZTAuZ3JvdXBfYnkgdC50cmVlIH5lcXVpdiB+Y29tcGFyZV9lbHQ6KGNvbXBhcmVfZWx0IHQpKSB+ZjoobGlrZSB0KVxuICA7O1xuXG4gIGxldCBudGggdCBpID0gVHJlZTAubnRoIHQudHJlZSBpXG4gIGxldCByZW1vdmVfaW5kZXggdCBpID0gbGlrZSB0IChUcmVlMC5yZW1vdmVfaW5kZXggdC50cmVlIGkgfmNvbXBhcmVfZWx0Oihjb21wYXJlX2VsdCB0KSlcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfYSB0LnRyZWVcblxuICBsZXQgdG9fc2VxdWVuY2UgP29yZGVyID9ncmVhdGVyX29yX2VxdWFsX3RvID9sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIFRyZWUwLnRvX3NlcXVlbmNlIHQuY29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdC50cmVlXG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggdCB+Y29tcGFyZSBob3cgdiA9IFRyZWUwLmJpbmFyeV9zZWFyY2ggdC50cmVlIH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93ID1cbiAgICBUcmVlMC5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0LnRyZWUgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnID1cbiAgICBUcmVlMC5tZXJnZV90b19zZXF1ZW5jZVxuICAgICAgdC5jb21wYXJhdG9yXG4gICAgICA/b3JkZXJcbiAgICAgID9ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICA/bGVzc19vcl9lcXVhbF90b1xuICAgICAgdC50cmVlXG4gICAgICB0Jy50cmVlXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF9kaXJlY3QgaGFzaF9mb2xkX2tleSBzdGF0ZSB0ID1cbiAgICBUcmVlMC5oYXNoX2ZvbGRfdF9pZ25vcmluZ19zdHJ1Y3R1cmUgaGFzaF9mb2xkX2tleSBzdGF0ZSB0LnRyZWVcbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG5sZXQgY29tcGFyZSBfIF8gdDEgdDIgPSBjb21wYXJlX2RpcmVjdCB0MSB0MlxuXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2NvbXBhcmF0b3IpIHQgPSAoJ2EsICdjb21wYXJhdG9yKSB0cmVlXG5cbiAgbGV0IGNlIGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCB0X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBUcmVlMC50X29mX3NleHBfZGlyZWN0IH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcikgYV9vZl9zZXhwIHNleHBcbiAgOztcblxuICBsZXQgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFRyZWUwLmVtcHR5XG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvcjpfID0gZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yOl8gZSA9IFRyZWUwLnNpbmdsZXRvbiBlXG4gIGxldCBsZW5ndGggdCA9IFRyZWUwLmxlbmd0aCB0XG4gIGxldCBpbnZhcmlhbnRzIH5jb21wYXJhdG9yIHQgPSBUcmVlMC5pbnZhcmlhbnRzIHQgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXNfZW1wdHkgdCA9IFRyZWUwLmlzX2VtcHR5IHRcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlMC5lbGVtZW50cyB0XG4gIGxldCBtaW5fZWx0IHQgPSBUcmVlMC5taW5fZWx0IHRcbiAgbGV0IG1pbl9lbHRfZXhuIHQgPSBUcmVlMC5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHRcbiAgbGV0IG1heF9lbHRfZXhuIHQgPSBUcmVlMC5tYXhfZWx0X2V4biB0XG4gIGxldCBjaG9vc2UgdCA9IFRyZWUwLmNob29zZSB0XG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlMC5jaG9vc2VfZXhuIHRcbiAgbGV0IHRvX2xpc3QgdCA9IFRyZWUwLnRvX2xpc3QgdFxuICBsZXQgdG9fYXJyYXkgdCA9IFRyZWUwLnRvX2FycmF5IHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUwLml0ZXIgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdCB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUwLnN1bSBtIHQgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IFRyZWUwLmZpbmQgdCB+ZlxuICBsZXQgZmluZF9leG4gdCB+ZiA9IFRyZWUwLmZpbmRfZXhuIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlMC5maW5kX21hcCB0IH5mXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfdW50aWwgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF9yaWdodCB0IH5pbml0IH5mXG4gIGxldCBtYXAgfmNvbXBhcmF0b3IgdCB+ZiA9IFRyZWUwLm1hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGZpbHRlciB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAuZmlsdGVyIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgZmlsdGVyX21hcCB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHBhcnRpdGlvbl90ZiB+Y29tcGFyYXRvciB0IH5mID0gVHJlZTAucGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXRlcjIgfmNvbXBhcmF0b3IgYSBiIH5mID0gVHJlZTAuaXRlcjIgYSBiIH5mIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG1lbSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5tZW0gdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IGFkZCB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5hZGQgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHJlbW92ZSB+Y29tcGFyYXRvciB0IGEgPSBUcmVlMC5yZW1vdmUgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IHVuaW9uIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAudW5pb24gdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaW50ZXIgfmNvbXBhcmF0b3IgdDEgdDIgPSBUcmVlMC5pbnRlciB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBkaWZmIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IHN5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyID1cbiAgICBUcmVlMC5zeW1tZXRyaWNfZGlmZiB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IGNvbXBhcmVfZGlyZWN0IH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuY29tcGFyZSAoY2UgY29tcGFyYXRvcikgdDEgdDJcbiAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIHQxIHQyID0gVHJlZTAuZXF1YWwgdDEgdDIgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgaXNfc3Vic2V0IH5jb21wYXJhdG9yIHQgfm9mXyA9IFRyZWUwLmlzX3N1YnNldCB0IH5vZl8gfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuXG4gIGxldCBhcmVfZGlzam9pbnQgfmNvbXBhcmF0b3IgdDEgdDIgPVxuICAgIFRyZWUwLmFyZV9kaXNqb2ludCB0MSB0MiB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgfmNvbXBhcmF0b3IgbCA9IFRyZWUwLm9mX2xpc3QgbCB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzID0gVHJlZTAub2Zfc2VxdWVuY2UgcyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBvZl9hcnJheSB+Y29tcGFyYXRvciBhID0gVHJlZTAub2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYSA9XG4gICAgVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6XyB+bGVuIH5mID1cbiAgICBUcmVlMC5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhID0gVHJlZTAub2Zfc29ydGVkX2FycmF5IGEgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgdW5pb25fbGlzdCB+Y29tcGFyYXRvciBsID0gVHJlZTAudW5pb25fbGlzdCBsIH50b190cmVlOkZuLmlkIH5jb21wYXJhdG9yXG5cbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzID1cbiAgICBUcmVlMC5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IGdyb3VwX2J5IH5jb21wYXJhdG9yIHQgfmVxdWl2ID0gVHJlZTAuZ3JvdXBfYnkgdCB+ZXF1aXYgfmNvbXBhcmVfZWx0OihjZSBjb21wYXJhdG9yKVxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBhID0gVHJlZTAuc3BsaXQgdCBhIH5jb21wYXJlX2VsdDooY2UgY29tcGFyYXRvcilcbiAgbGV0IG50aCB0IGkgPSBUcmVlMC5udGggdCBpXG4gIGxldCByZW1vdmVfaW5kZXggfmNvbXBhcmF0b3IgdCBpID0gVHJlZTAucmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2EgdFxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvcjpfIHQgPSB0XG5cbiAgbGV0IHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0ID1cbiAgICBUcmVlMC50b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3I6XyB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yOl8gdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IG1lcmdlX3RvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnID1cbiAgICBUcmVlMC5tZXJnZV90b19zZXF1ZW5jZSBjb21wYXJhdG9yID9vcmRlciA/Z3JlYXRlcl9vcl9lcXVhbF90byA/bGVzc19vcl9lcXVhbF90byB0IHQnXG4gIDs7XG5cbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVHJlZTAuTmFtZWRcblxuICAgIGxldCBpc19zdWJzZXQgfmNvbXBhcmF0b3IgdDEgfm9mXzp0MiA9XG4gICAgICBUcmVlMC5OYW1lZC5pc19zdWJzZXRcbiAgICAgICAgdDFcbiAgICAgICAgfm9mXzp0MlxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gICAgICAgIH5zZXhwX29mX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcblxuICAgIGxldCBlcXVhbCB+Y29tcGFyYXRvciB0MSB0MiA9XG4gICAgICBUcmVlMC5OYW1lZC5lcXVhbFxuICAgICAgICB0MVxuICAgICAgICB0MlxuICAgICAgICB+Y29tcGFyZV9lbHQ6KGNlIGNvbXBhcmF0b3IpXG4gICAgICAgIH5zZXhwX29mX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdlbHQsICdjbXApIHQgPSAoJ2VsdCwgJ2NtcCkgdFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBhX29mX3NleHAgc2V4cCA9XG4gICAgb2ZfdHJlZVxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC50X29mX3NleHBfZGlyZWN0IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLmNvbXBhcmUgYV9vZl9zZXhwIHNleHApXG4gIDs7XG5cbiAgbGV0IGVtcHR5IH5jb21wYXJhdG9yID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuZW1wdHkgfVxuXG4gIG1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChFbHQgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICAgIGxldCBlbXB0eSA9IHsgY29tcGFyYXRvciA9IEVsdC5jb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuZW1wdHkgfVxuICBlbmRcblxuICBsZXQgc2luZ2xldG9uIH5jb21wYXJhdG9yIGUgPSB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5zaW5nbGV0b24gZSB9XG5cbiAgbGV0IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbCA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZTAudW5pb25fbGlzdCB+Y29tcGFyYXRvciB+dG9fdHJlZSBsKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBsZXQgdHJlZSA9XG4gICAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgeyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3IgfmxlbiB+ZiA9XG4gICAgb2ZfdHJlZSB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZilcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IH5jb21wYXJhdG9yIGFycmF5ID1cbiAgICBPcl9lcnJvci5Nb25hZF9pbmZpeC4oXG4gICAgICBUcmVlMC5vZl9zb3J0ZWRfYXJyYXkgYXJyYXkgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICA+PnwgZnVuIHRyZWUgLT4geyBjb21wYXJhdG9yOyB0cmVlIH0pXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgfmNvbXBhcmF0b3IgbCA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2ZfbGlzdCBsIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHMgPVxuICAgIHsgY29tcGFyYXRvcjsgdHJlZSA9IFRyZWUwLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH1cbiAgOztcblxuICBsZXQgb2ZfYXJyYXkgfmNvbXBhcmF0b3IgYSA9XG4gICAgeyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAub2ZfYXJyYXkgYSB+Y29tcGFyZV9lbHQ6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgfVxuICA7O1xuXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB+Y29tcGFyYXRvciB4cyA9XG4gICAgVHJlZTAuc3RhYmxlX2RlZHVwX2xpc3QgeHMgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG1hcCB+Y29tcGFyYXRvciB0IH5mID1cbiAgICB7IGNvbXBhcmF0b3I7IHRyZWUgPSBUcmVlMC5tYXAgdC50cmVlIH5mIH5jb21wYXJlX2VsdDpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB9XG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgeyBjb21wYXJhdG9yXG4gICAgOyB0cmVlID0gVHJlZTAuZmlsdGVyX21hcCB0LnRyZWUgfmYgfmNvbXBhcmVfZWx0OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgfVxuICA7O1xuXG4gIG1vZHVsZSBUcmVlID0gVHJlZVxuZW5kXG5cbnR5cGUgKCdlbHQsICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdlbHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmF0b3JfcyAodHlwZSBrIGNtcCkgdCA6IChrLCBjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIHR5cGUgdCA9IGtcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcFxuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSB0LmNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgZWx0IGNtcCkgKChtb2R1bGUgTSkgOiAoZWx0LCBjbXApIGNvbXBhcmF0b3IpID0gTS5jb21wYXJhdG9yXG5sZXQgZW1wdHkgbSA9IFVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbmxldCBzaW5nbGV0b24gbSBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IHVuaW9uX2xpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCBtIH5sZW4gfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIH5sZW4gfmZcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2xpc3QgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9saXN0IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9zZXF1ZW5jZSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hcnJheSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FycmF5IH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IHN0YWJsZV9kZWR1cF9saXN0IG0gYSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuOztcblxubGV0IG1hcCBtIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhIH5mXG5sZXQgZmlsdGVyX21hcCBtIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxuXG5tb2R1bGUgTSAoRWx0IDogc2lnXG4gICAgdHlwZSB0XG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNleHBfb2ZfbSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBNX29mX3NleHAgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBvZl9zZXhwXVxuXG4gIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gIFtAQEBlbmRdXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fc2V4cF9ncmFtbWFyID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hciA6IHQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmVfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEVxdWFsX20gPSBzaWcgZW5kXG5tb2R1bGUgdHlwZSBIYXNoX2ZvbGRfbSA9IEhhc2hlci5TXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IChmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCIpIHRcbjs7XG5cbmxldCBtX190X29mX3NleHBcbiAgICAgICh0eXBlIGVsdCBjbXApXG4gICAgICAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICBzZXhwXG4gID1cbiAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yOkVsdC5jb21wYXJhdG9yIEVsdC50X29mX3NleHAgc2V4cFxuOztcblxubGV0IG1fX3Rfc2V4cF9ncmFtbWFyICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBNX3NleHBfZ3JhbW1hciB3aXRoIHR5cGUgdCA9IGVsdClcbiAgOiAoZWx0LCBfKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAobGlzdF9zZXhwX2dyYW1tYXIgRWx0LnRfc2V4cF9ncmFtbWFyKVxuOztcblxubGV0IGNvbXBhcmVfbV9fdCAobW9kdWxlIF8gOiBDb21wYXJlX20pIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubGV0IGhhc2hfZm9sZF9tX190ICh0eXBlIGVsdCkgKG1vZHVsZSBFbHQgOiBIYXNoX2ZvbGRfbSB3aXRoIHR5cGUgdCA9IGVsdCkgc3RhdGUgPVxuICBoYXNoX2ZvbGRfZGlyZWN0IEVsdC5oYXNoX2ZvbGRfdCBzdGF0ZVxuOztcblxubGV0IGhhc2hfbV9fdCBmb2xkZXIgdCA9XG4gIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9tX190IGZvbGRlciAoSGFzaC5jcmVhdGUgKCkpIHQgaW5cbiAgSGFzaC5nZXRfaGFzaF92YWx1ZSBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG4gIHR5cGUgbm9ucmVjICgnZWx0LCAnY21wKSBzZXQgPSAoJ2VsdCwgY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgbm9ucmVjICdlbHQgdCA9ICgnZWx0LCBjb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgJ2VsdCB0cmVlID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICB0eXBlIG5vbnJlYyAnZWx0IG5hbWVkID0gKCdlbHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgTmFtZWQudFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvclxuXG4gIGluY2x1ZGUgVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgbGV0IHNpbmdsZXRvbiBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgYVxuICBsZXQgdW5pb25fbGlzdCBhID0gVXNpbmdfY29tcGFyYXRvci51bmlvbl9saXN0IH5jb21wYXJhdG9yIGFcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBvZl9saXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2Zfc2VxdWVuY2UgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYXJyYXkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgc3RhYmxlX2RlZHVwX2xpc3QgYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc3RhYmxlX2RlZHVwX2xpc3QgfmNvbXBhcmF0b3IgYVxuICBsZXQgbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcCB+Y29tcGFyYXRvciBhIH5mXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBVc2luZ19jb21wYXJhdG9yLmZpbHRlcl9tYXAgfmNvbXBhcmF0b3IgYSB+ZlxuICBsZXQgb2ZfdHJlZSB0cmVlID0geyBjb21wYXJhdG9yOyB0cmVlIH1cbiAgbGV0IHRvX3RyZWUgdCA9IHQudHJlZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgcmVmIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlIDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnQgPSBjb21wYXJlX3JlZlxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID0gZXF1YWxfcmVmXG4gIGxldCB0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHQgPSByZWZfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIHQgLT4gU2V4cGxpYjAuU2V4cC50ID0gc2V4cF9vZl9yZWZcblxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IHJlZl9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5lbmQgOlxuc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIHJlZiBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuRXF1YWwuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBpbmNsdWRlIFNleHBsaWIwLlNleHBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiAnYSBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCAtPiAnYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZClcblxuKCogSW4gdGhlIGRlZmluaXRpb24gb2YgW3RdLCB3ZSBkbyBub3QgaGF2ZSBbW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1dIGJlY2F1c2VcbiAgIGluIGdlbmVyYWwsIHN5bnRheCBleHRlbnNpb25zIHRlbmQgdG8gdXNlIHRoZSBpbXBsZW1lbnRhdGlvbiB3aGVuIGF2YWlsYWJsZSByYXRoZXIgdGhhblxuICAgdXNpbmcgdGhlIGFsaWFzLiAgSGVyZSB0aGF0IHdvdWxkIGxlYWQgdG8gdXNlIHRoZSByZWNvcmQgcmVwcmVzZW50YXRpb24gWyB7IG11dGFibGVcbiAgIGNvbnRlbnRzIDogJ2EgfSBdIHdoaWNoIHdvdWxkIHJlc3VsdCBpbiBkaWZmZXJlbnQgKGFuZCB1bndhbnRlZCkgYmVoYXZpb3IuICAqKVxudHlwZSAnYSB0ID0gJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuXG5leHRlcm5hbCBjcmVhdGUgOiAnYSAtPiAnYSB0ID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSB0IC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsICggOj0gKSA6ICdhIHQgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbmxldCBzd2FwIHQxIHQyID1cbiAgbGV0IHRtcCA9ICF0MSBpblxuICB0MSA6PSAhdDI7XG4gIHQyIDo9IHRtcFxuOztcblxubGV0IHJlcGxhY2UgdCBmID0gdCA6PSBmICF0XG5cbmxldCBzZXRfdGVtcG9yYXJpbHkgdCBhIH5mID1cbiAgbGV0IHJlc3RvcmVfdG8gPSAhdCBpblxuICB0IDo9IGE7XG4gIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gdCA6PSByZXN0b3JlX3RvKVxuOztcblxubW9kdWxlIEFuZF92YWx1ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUIDogJ2EgcmVmICogJ2EgLT4gdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBzZXQgKFQgKHIsIGEpKSA9IHIgOj0gYVxuICBsZXQgc2V0cyB0cyA9IExpc3QuaXRlciB0cyB+ZjpzZXRcbiAgbGV0IHNuYXBzaG90IChUIChyLCBfKSkgPSBUIChyLCAhcilcbiAgbGV0IHNuYXBzaG90cyB0cyA9IExpc3QubWFwIHRzIH5mOnNuYXBzaG90XG5lbmRcblxubGV0IHNldHNfdGVtcG9yYXJpbHkgYW5kX3ZhbHVlcyB+ZiA9XG4gIGxldCByZXN0b3JlX3RvID0gQW5kX3ZhbHVlLnNuYXBzaG90cyBhbmRfdmFsdWVzIGluXG4gIEFuZF92YWx1ZS5zZXRzIGFuZF92YWx1ZXM7XG4gIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gQW5kX3ZhbHVlLnNldHMgcmVzdG9yZV90bylcbjs7XG4iLCJvcGVuISBJbXBvcnRcblxuXG4oKiBbdF0gc3RvcmVzIHRoZSBbdC5sZW5ndGhdIHF1ZXVlIGVsZW1lbnRzIGF0IGNvbnNlY3V0aXZlIGluY3JlYXNpbmcgaW5kaWNlcyBvZiBbdC5lbHRzXSxcbiAgIG1vZCB0aGUgY2FwYWNpdHkgb2YgW3RdLCB3aGljaCBpcyBbT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNdLiAgVGhlIGNhcGFjaXR5IGlzXG4gICByZXF1aXJlZCB0byBiZSBhIHBvd2VyIG9mIHR3byAodXNlci1yZXF1ZXN0ZWQgY2FwYWNpdGllcyBhcmUgcm91bmRlZCB1cCB0byB0aGUgbmVhcmVzdFxuICAgcG93ZXIpLCBzbyB0aGF0IG1vZCBjYW4gcXVpY2tseSBiZSBjb21wdXRlZCB1c2luZyBbbGFuZCB0Lm1hc2tdLCB3aGVyZSBbdC5tYXNrID1cbiAgIGNhcGFjaXR5IHQgLSAxXS4gIFNvLCBxdWV1ZSBlbGVtZW50IFtpXSBpcyBhdCBbdC5lbHRzLiggKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFzayApXS5cblxuICAgW251bV9tdXRhdGlvbnNdIGlzIHVzZWQgdG8gZGV0ZWN0IG1vZGlmaWNhdGlvbiBkdXJpbmcgaXRlcmF0aW9uLiAqKVxudHlwZSAnYSB0ID1cbiAgeyBtdXRhYmxlIG51bV9tdXRhdGlvbnMgOiBpbnRcbiAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGVsdHMgOiAnYSBPcHRpb25fYXJyYXkudFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDAxX1xuICAgIHsgbnVtX211dGF0aW9ucyA9IG51bV9tdXRhdGlvbnNfXzAwM19cbiAgICA7IGZyb250ID0gZnJvbnRfXzAwNV9cbiAgICA7IG1hc2sgPSBtYXNrX18wMDdfXG4gICAgOyBsZW5ndGggPSBsZW5ndGhfXzAwOV9cbiAgICA7IGVsdHMgPSBlbHRzX18wMTFfXG4gICAgfSAtPlxuICAgIGxldCBibmRzX18wMDJfID0gW10gaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMTJfID0gT3B0aW9uX2FycmF5LnNleHBfb2ZfdCBfb2ZfYV9fMDAxXyBlbHRzX18wMTFfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbHRzXCI7IGFyZ19fMDEyXyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAxMF8gPSBzZXhwX29mX2ludCBsZW5ndGhfXzAwOV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxlbmd0aFwiOyBhcmdfXzAxMF8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDhfID0gc2V4cF9vZl9pbnQgbWFza19fMDA3XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFza1wiOyBhcmdfXzAwOF8gXSA6OiBibmRzX18wMDJfXG4gICAgaW5cbiAgICBsZXQgYm5kc19fMDAyXyA9XG4gICAgICBsZXQgYXJnX18wMDZfID0gc2V4cF9vZl9pbnQgZnJvbnRfXzAwNV8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImZyb250XCI7IGFyZ19fMDA2XyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIGxldCBibmRzX18wMDJfID1cbiAgICAgIGxldCBhcmdfXzAwNF8gPSBzZXhwX29mX2ludCBudW1fbXV0YXRpb25zX18wMDNfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJudW1fbXV0YXRpb25zXCI7IGFyZ19fMDA0XyBdIDo6IGJuZHNfXzAwMl9cbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDJfXG47O1xuXG5bQEBAZW5kXVxuXG5tb2R1bGUgdHlwZSBTID0gUXVldWVfaW50Zi5TXG5cbmxldCBpbmNfbnVtX211dGF0aW9ucyB0ID0gdC5udW1fbXV0YXRpb25zIDwtIHQubnVtX211dGF0aW9ucyArIDFcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxubGV0IGVsdHNfaW5kZXggdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFza1xubGV0IHVuc2FmZV9nZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9nZXRfc29tZV9leG4gdC5lbHRzIChlbHRzX2luZGV4IHQgaSlcbmxldCB1bnNhZmVfaXNfc2V0IHQgaSA9IE9wdGlvbl9hcnJheS51bnNhZmVfaXNfc29tZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxubGV0IHVuc2FmZV9zZXQgdCBpIGEgPSBPcHRpb25fYXJyYXkudW5zYWZlX3NldF9zb21lIHQuZWx0cyAoZWx0c19pbmRleCB0IGkpIGFcbmxldCB1bnNhZmVfdW5zZXQgdCBpID0gT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSB0LmVsdHMgKGVsdHNfaW5kZXggdCBpKVxuXG5sZXQgY2hlY2tfaW5kZXhfZXhuIHQgaSA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gdC5sZW5ndGhcbiAgdGhlblxuICAgIEVycm9yLnJhaXNlX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiUXVldWUgaW5kZXggb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBbIFwiaW5kZXhcIiwgaSB8PiBJbnQuc2V4cF9vZl90OyBcImxlbmd0aFwiLCB0Lmxlbmd0aCB8PiBJbnQuc2V4cF9vZl90IF0pXG47O1xuXG5sZXQgZ2V0IHQgaSA9XG4gIGNoZWNrX2luZGV4X2V4biB0IGk7XG4gIHVuc2FmZV9nZXQgdCBpXG47O1xuXG5sZXQgc2V0IHQgaSBhID1cbiAgY2hlY2tfaW5kZXhfZXhuIHQgaTtcbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgdW5zYWZlX3NldCB0IGkgYVxuOztcblxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcbmxldCBsZW5ndGggeyBsZW5ndGg7IF8gfSA9IGxlbmd0aFxuXG5sZXQgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9ucyA9XG4gIGlmIHQubnVtX211dGF0aW9ucyA8PiBudW1fbXV0YXRpb25zXG4gIHRoZW5cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcIm11dGF0aW9uIG9mIHF1ZXVlIGR1cmluZyBpdGVyYXRpb25cIlxuICAgICAgICAgWyBcIlwiLCB0IHw+IHNleHBfb2ZfdCAoZnVuIF8gLT4gU2V4cC5BdG9tIFwiX1wiKSBdKVxuOztcblxubGV0IGNvbXBhcmUgPVxuICBsZXQgcmVjIHVuc2FmZV9jb21wYXJlX2Zyb20gY29tcGFyZV9lbHQgcG9zIH50MSB+dDIgfmxlbjEgfmxlbjIgfm11dDEgfm11dDIgPVxuICAgIG1hdGNoIHBvcyA9IGxlbjEsIHBvcyA9IGxlbjIgd2l0aFxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgfCB0cnVlLCBmYWxzZSAtPiAtMVxuICAgIHwgZmFsc2UsIHRydWUgLT4gMVxuICAgIHwgZmFsc2UsIGZhbHNlIC0+XG4gICAgICBsZXQgeCA9IGNvbXBhcmVfZWx0ICh1bnNhZmVfZ2V0IHQxIHBvcykgKHVuc2FmZV9nZXQgdDIgcG9zKSBpblxuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgICBlbnN1cmVfbm9fbXV0YXRpb24gdDIgbXV0MjtcbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgICB8IDAgLT4gdW5zYWZlX2NvbXBhcmVfZnJvbSBjb21wYXJlX2VsdCAocG9zICsgMSkgfnQxIH50MiB+bGVuMSB+bGVuMiB+bXV0MSB+bXV0MlxuICAgICAgIHwgbiAtPiBuKVxuICBpblxuICBmdW4gY29tcGFyZV9lbHQgdDEgdDIgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gICAgdGhlbiAwXG4gICAgZWxzZVxuICAgICAgdW5zYWZlX2NvbXBhcmVfZnJvbVxuICAgICAgICBjb21wYXJlX2VsdFxuICAgICAgICAwXG4gICAgICAgIH50MVxuICAgICAgICB+dDJcbiAgICAgICAgfmxlbjE6dDEubGVuZ3RoXG4gICAgICAgIH5sZW4yOnQyLmxlbmd0aFxuICAgICAgICB+bXV0MTp0MS5udW1fbXV0YXRpb25zXG4gICAgICAgIH5tdXQyOnQyLm51bV9tdXRhdGlvbnNcbjs7XG5cbmxldCBlcXVhbCA9XG4gIGxldCByZWMgdW5zYWZlX2VxdWFsX2Zyb20gZXF1YWxfZWx0IHBvcyB+dDEgfnQyIH5tdXQxIH5tdXQyIH5sZW4gPVxuICAgIHBvcyA9IGxlblxuICAgIHx8XG4gICAgbGV0IGIgPSBlcXVhbF9lbHQgKHVuc2FmZV9nZXQgdDEgcG9zKSAodW5zYWZlX2dldCB0MiBwb3MpIGluXG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQxIG11dDE7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQyIG11dDI7XG4gICAgYiAmJiB1bnNhZmVfZXF1YWxfZnJvbSBlcXVhbF9lbHQgKHBvcyArIDEpIH50MSB+dDIgfm11dDEgfm11dDIgfmxlblxuICBpblxuICBmdW4gZXF1YWxfZWx0IHQxIHQyIC0+XG4gICAgcGh5c19lcXVhbCB0MSB0MlxuICAgIHx8XG4gICAgbGV0IGxlbjEgPSB0MS5sZW5ndGggaW5cbiAgICBsZXQgbGVuMiA9IHQyLmxlbmd0aCBpblxuICAgIGxlbjEgPSBsZW4yXG4gICAgJiYgdW5zYWZlX2VxdWFsX2Zyb21cbiAgICAgICAgIGVxdWFsX2VsdFxuICAgICAgICAgMFxuICAgICAgICAgfnQxXG4gICAgICAgICB+dDJcbiAgICAgICAgIH5sZW46bGVuMVxuICAgICAgICAgfm11dDE6dDEubnVtX211dGF0aW9uc1xuICAgICAgICAgfm11dDI6dDIubnVtX211dGF0aW9uc1xuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IHsgbnVtX211dGF0aW9uczsgbWFzayA9IF87IGVsdHM7IGZyb250OyBsZW5ndGggfSA9IHQgaW5cbiAgYXNzZXJ0IChmcm9udCA+PSAwKTtcbiAgYXNzZXJ0IChmcm9udCA8IGNhcGFjaXR5IHQpO1xuICBsZXQgY2FwYWNpdHkgPSBjYXBhY2l0eSB0IGluXG4gIGFzc2VydCAoY2FwYWNpdHkgPSBPcHRpb25fYXJyYXkubGVuZ3RoIGVsdHMpO1xuICBhc3NlcnQgKGNhcGFjaXR5ID49IDEpO1xuICBhc3NlcnQgKEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gIGFzc2VydCAobGVuZ3RoIDw9IGNhcGFjaXR5KTtcbiAgZm9yIGkgPSAwIHRvIGNhcGFjaXR5IC0gMSBkb1xuICAgIGlmIGkgPCB0Lmxlbmd0aFxuICAgIHRoZW4gKFxuICAgICAgaW52YXJpYW50X2EgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0IG51bV9tdXRhdGlvbnMpXG4gICAgZWxzZSBhc3NlcnQgKG5vdCAodW5zYWZlX2lzX3NldCB0IGkpKVxuICBkb25lXG47O1xuXG5sZXQgY3JlYXRlICh0eXBlIGEpID9jYXBhY2l0eSAoKSA6IGEgdCA9XG4gIGxldCBjYXBhY2l0eSA9XG4gICAgbWF0Y2ggY2FwYWNpdHkgd2l0aFxuICAgIHwgTm9uZSAtPiAxXG4gICAgfCBTb21lIGNhcGFjaXR5IC0+XG4gICAgICBpZiBjYXBhY2l0eSA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcImNhbm5vdCBoYXZlIHF1ZXVlIHdpdGggbmVnYXRpdmUgY2FwYWNpdHlcIlxuICAgICAgICAgICAgIFsgXCJjYXBhY2l0eVwiLCBjYXBhY2l0eSB8PiBJbnQuc2V4cF9vZl90IF0pXG4gICAgICBlbHNlIGlmIGNhcGFjaXR5ID0gMFxuICAgICAgdGhlbiAxXG4gICAgICBlbHNlIEludC5jZWlsX3BvdzIgY2FwYWNpdHlcbiAgaW5cbiAgeyBudW1fbXV0YXRpb25zID0gMFxuICA7IGZyb250ID0gMFxuICA7IG1hc2sgPSBjYXBhY2l0eSAtIDFcbiAgOyBsZW5ndGggPSAwXG4gIDsgZWx0cyA9IE9wdGlvbl9hcnJheS5jcmVhdGUgfmxlbjpjYXBhY2l0eVxuICB9XG47O1xuXG5sZXQgYmxpdF90b19hcnJheSB+c3JjIGRzdCA9XG4gIGFzc2VydCAoc3JjLmxlbmd0aCA8PSBPcHRpb25fYXJyYXkubGVuZ3RoIGRzdCk7XG4gIGxldCBmcm9udF9sZW4gPSBJbnQubWluIHNyYy5sZW5ndGggKGNhcGFjaXR5IHNyYyAtIHNyYy5mcm9udCkgaW5cbiAgbGV0IHJlc3RfbGVuID0gc3JjLmxlbmd0aCAtIGZyb250X2xlbiBpblxuICBPcHRpb25fYXJyYXkuYmxpdCB+bGVuOmZyb250X2xlbiB+c3JjOnNyYy5lbHRzIH5zcmNfcG9zOnNyYy5mcm9udCB+ZHN0IH5kc3RfcG9zOjA7XG4gIE9wdGlvbl9hcnJheS5ibGl0IH5sZW46cmVzdF9sZW4gfnNyYzpzcmMuZWx0cyB+c3JjX3BvczowIH5kc3QgfmRzdF9wb3M6ZnJvbnRfbGVuXG47O1xuXG5sZXQgc2V0X2NhcGFjaXR5IHQgZGVzaXJlZF9jYXBhY2l0eSA9XG4gICgqIFdlIGFsbG93IGFyZ3VtZW50cyBsZXNzIHRoYW4gMSB0byBbc2V0X2NhcGFjaXR5XSwgYnV0IHRyYW5zbGF0ZSB0aGVtIHRvIDEgdG8gc2ltcGxpZnlcbiAgICAgdGhlIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGFycmF5IGxlbmd0aCBiZWluZyBhIHBvd2VyIG9mIDIuICopXG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGxldCBuZXdfY2FwYWNpdHkgPSBJbnQuY2VpbF9wb3cyIChtYXggMSAobWF4IGRlc2lyZWRfY2FwYWNpdHkgdC5sZW5ndGgpKSBpblxuICBpZiBuZXdfY2FwYWNpdHkgPD4gY2FwYWNpdHkgdFxuICB0aGVuIChcbiAgICBsZXQgZHN0ID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOm5ld19jYXBhY2l0eSBpblxuICAgIGJsaXRfdG9fYXJyYXkgfnNyYzp0IGRzdDtcbiAgICB0LmZyb250IDwtIDA7XG4gICAgdC5tYXNrIDwtIG5ld19jYXBhY2l0eSAtIDE7XG4gICAgdC5lbHRzIDwtIGRzdClcbjs7XG5cbmxldCBlbnF1ZXVlIHQgYSA9XG4gIGluY19udW1fbXV0YXRpb25zIHQ7XG4gIGlmIHQubGVuZ3RoID0gY2FwYWNpdHkgdCB0aGVuIHNldF9jYXBhY2l0eSB0ICgyICogdC5sZW5ndGgpO1xuICB1bnNhZmVfc2V0IHQgdC5sZW5ndGggYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgZGVxdWV1ZV9ub25lbXB0eSB0ID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgbGV0IGVsdHMgPSB0LmVsdHMgaW5cbiAgbGV0IGZyb250ID0gdC5mcm9udCBpblxuICBsZXQgcmVzID0gT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biBlbHRzIGZyb250IGluXG4gIE9wdGlvbl9hcnJheS5zZXRfbm9uZSBlbHRzIGZyb250O1xuICB0LmZyb250IDwtIGVsdHNfaW5kZXggdCAxO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfZXhuIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2UgQ2FtbC5RdWV1ZS5FbXB0eSBlbHNlIGRlcXVldWVfbm9uZW1wdHkgdFxubGV0IGRlcXVldWUgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZGVxdWV1ZV9ub25lbXB0eSB0KVxubGV0IGZyb250X25vbmVtcHR5IHQgPSBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmVsdHMgdC5mcm9udFxubGV0IGxhc3Rfbm9uZW1wdHkgdCA9IHVuc2FmZV9nZXQgdCAodC5sZW5ndGggLSAxKVxubGV0IHBlZWsgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZnJvbnRfbm9uZW1wdHkgdClcbmxldCBwZWVrX2V4biB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIHJhaXNlIENhbWwuUXVldWUuRW1wdHkgZWxzZSBmcm9udF9ub25lbXB0eSB0XG5sZXQgbGFzdCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChsYXN0X25vbmVtcHR5IHQpXG5sZXQgbGFzdF9leG4gdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiByYWlzZSBDYW1sLlF1ZXVlLkVtcHR5IGVsc2UgbGFzdF9ub25lbXB0eSB0XG5cbmxldCBjbGVhciB0ID1cbiAgaW5jX251bV9tdXRhdGlvbnMgdDtcbiAgaWYgdC5sZW5ndGggPiAwXG4gIHRoZW4gKFxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHVuc2FmZV91bnNldCB0IGlcbiAgICBkb25lO1xuICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgdC5mcm9udCA8LSAwKVxuOztcblxubGV0IGJsaXRfdHJhbnNmZXIgfnNyYyB+ZHN0ID9sZW4gKCkgPVxuICBpbmNfbnVtX211dGF0aW9ucyBzcmM7XG4gIGluY19udW1fbXV0YXRpb25zIGRzdDtcbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICB8IE5vbmUgLT4gc3JjLmxlbmd0aFxuICAgIHwgU29tZSBsZW4gLT5cbiAgICAgIGlmIGxlbiA8IDBcbiAgICAgIHRoZW5cbiAgICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgICBcIlF1ZXVlLmJsaXRfdHJhbnNmZXI6IG5lZ2F0aXZlIGxlbmd0aFwiXG4gICAgICAgICAgICAgWyBcImxlbmd0aFwiLCBsZW4gfD4gSW50LnNleHBfb2ZfdCBdKTtcbiAgICAgIG1pbiBsZW4gc3JjLmxlbmd0aFxuICBpblxuICBpZiBsZW4gPiAwXG4gIHRoZW4gKFxuICAgIHNldF9jYXBhY2l0eSBkc3QgKG1heCAoY2FwYWNpdHkgZHN0KSAoZHN0Lmxlbmd0aCArIGxlbikpO1xuICAgIGxldCBkc3Rfc3RhcnQgPSBkc3QuZnJvbnQgKyBkc3QubGVuZ3RoIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICgqIFRoaXMgaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgdGhhbiBzaW1wbHkgW2VucXVldWUgZHN0IChkZXF1ZXVlX25vbmVtcHR5IHNyYyldICopXG4gICAgICBsZXQgc3JjX2kgPSAoc3JjLmZyb250ICsgaSkgbGFuZCBzcmMubWFzayBpblxuICAgICAgbGV0IGRzdF9pID0gKGRzdF9zdGFydCArIGkpIGxhbmQgZHN0Lm1hc2sgaW5cbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWVcbiAgICAgICAgZHN0LmVsdHNcbiAgICAgICAgZHN0X2lcbiAgICAgICAgKE9wdGlvbl9hcnJheS51bnNhZmVfZ2V0X3NvbWVfZXhuIHNyYy5lbHRzIHNyY19pKTtcbiAgICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X25vbmUgc3JjLmVsdHMgc3JjX2lcbiAgICBkb25lO1xuICAgIGRzdC5sZW5ndGggPC0gZHN0Lmxlbmd0aCArIGxlbjtcbiAgICBzcmMuZnJvbnQgPC0gKHNyYy5mcm9udCArIGxlbikgbGFuZCBzcmMubWFzaztcbiAgICBzcmMubGVuZ3RoIDwtIHNyYy5sZW5ndGggLSBsZW4pXG47O1xuXG5sZXQgZW5xdWV1ZV9hbGwgdCBsID1cbiAgKCogVHJhdmVyc2luZyB0aGUgbGlzdCB1cCBmcm9udCB0byBjb21wdXRlIGl0cyBsZW5ndGggaXMgcHJvYmFibHkgKGJ1dCBub3QgZGVmaW5pdGVseSlcbiAgICAgYmV0dGVyIHRoYW4gZG91YmxpbmcgdGhlIHVuZGVybHlpbmcgYXJyYXkgc2l6ZSBzZXZlcmFsIHRpbWVzIGZvciBsYXJnZSBxdWV1ZXMuICopXG4gIHNldF9jYXBhY2l0eSB0IChJbnQubWF4IChjYXBhY2l0eSB0KSAodC5sZW5ndGggKyBMaXN0Lmxlbmd0aCBsKSk7XG4gIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcbjs7XG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiB0Lmxlbmd0aCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gICAgbGV0IHIgPSByZWYgaW5pdCBpblxuICAgIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCB0IGkpO1xuICAgICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICAgIGRvbmU7XG4gICAgIXIpXG47O1xuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgZm9sZCB0IH5pbml0IH5mOihmdW4gYWNjIGEgLT5cbiAgICBsZXQgYWNjID0gZiAhaSBhY2MgYSBpblxuICAgIGkgOj0gIWkgKyAxO1xuICAgIGFjYylcbjs7XG5cblxuKCogW2l0ZXJdIGlzIGltcGxlbWVudGVkIGRpcmVjdGx5IGJlY2F1c2UgaW1wbGVtZW50aW5nIGl0IGluIHRlcm1zIG9mIFtmb2xkXSBpc1xuICAgc2xvd2VyLiAqKVxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBmICh1bnNhZmVfZ2V0IHQgaSk7XG4gICAgZW5zdXJlX25vX211dGF0aW9uIHQgbnVtX211dGF0aW9uc1xuICBkb25lXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdC5udW1fbXV0YXRpb25zIGluXG4gIGZvciBpID0gMCB0byB0Lmxlbmd0aCAtIDEgZG9cbiAgICBmIGkgKHVuc2FmZV9nZXQgdCBpKTtcbiAgICBlbnN1cmVfbm9fbXV0YXRpb24gdCBudW1fbXV0YXRpb25zXG4gIGRvbmVcbjs7XG5cbmxldCB0b19saXN0IHQgPVxuICBsZXQgcmVzdWx0ID0gcmVmIFtdIGluXG4gIGZvciBpID0gdC5sZW5ndGggLSAxIGRvd250byAwIGRvXG4gICAgcmVzdWx0IDo9IHVuc2FmZV9nZXQgdCBpIDo6ICFyZXN1bHRcbiAgZG9uZTtcbiAgIXJlc3VsdFxuOztcblxubW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgICBsZXQgZm9sZGkgPSBgQ3VzdG9tIGZvbGRpXG4gICAgbGV0IGl0ZXJpID0gYEN1c3RvbSBpdGVyaVxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBleGlzdHMgPSBDLmV4aXN0c1xubGV0IGZpbmQgPSBDLmZpbmRcbmxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbmxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbmxldCBmb2xkX3VudGlsID0gQy5mb2xkX3VudGlsXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IG1heF9lbHQgPSBDLm1heF9lbHRcbmxldCBtZW0gPSBDLm1lbVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGNvdW50aSA9IEMuY291bnRpXG5sZXQgZXhpc3RzaSA9IEMuZXhpc3RzaVxubGV0IGZpbmRfbWFwaSA9IEMuZmluZF9tYXBpXG5sZXQgZmluZGkgPSBDLmZpbmRpXG5sZXQgZm9yX2FsbGkgPSBDLmZvcl9hbGxpXG5cblxuKCogRm9yIFtjb25jYXRfbWFwXSwgW2ZpbHRlcl9tYXBdLCBhbmQgW2ZpbHRlcl0sIHdlIGRvbid0IGNyZWF0ZSBbdF9yZXN1bHRdIHdpdGggW3RdJ3NcbiAgIGNhcGFjaXR5IGJlY2F1c2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyBtYW55IGVsZW1lbnRzIFt0X3Jlc3VsdF0gd2lsbCB1bHRpbWF0ZWx5IGhvbGQuICopXG5sZXQgY29uY2F0X21hcCB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gTGlzdC5pdGVyIChmIGEpIH5mOihmdW4gYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBjb25jYXRfbWFwaSB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biBpIGEgLT4gTGlzdC5pdGVyIChmIGkgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgdF9yZXN1bHQgYikpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCB0X3Jlc3VsdCA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+XG4gICAgbWF0Y2ggZiBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlcl9tYXBpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoIGYgaSBhIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYiAtPiBlbnF1ZXVlIHRfcmVzdWx0IGIpO1xuICB0X3Jlc3VsdFxuOztcblxubGV0IGZpbHRlciB0IH5mID1cbiAgbGV0IHRfcmVzdWx0ID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gaWYgZiBhIHRoZW4gZW5xdWV1ZSB0X3Jlc3VsdCBhKTtcbiAgdF9yZXN1bHRcbjs7XG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBsZXQgdF9yZXN1bHQgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBpZiBmIGkgYSB0aGVuIGVucXVldWUgdF9yZXN1bHQgYSk7XG4gIHRfcmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0MiA9IGZpbHRlciB0IH5mIGluXG4gIGNsZWFyIHQ7XG4gIGJsaXRfdHJhbnNmZXIgfnNyYzp0MiB+ZHN0OnQgKClcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0MiA9IGZpbHRlcmkgdCB+ZiBpblxuICBjbGVhciB0O1xuICBibGl0X3RyYW5zZmVyIH5zcmM6dDIgfmRzdDp0ICgpXG47O1xuXG5sZXQgY29weSBzcmMgPVxuICBsZXQgZHN0ID0gY3JlYXRlIH5jYXBhY2l0eTpzcmMubGVuZ3RoICgpIGluXG4gIGJsaXRfdG9fYXJyYXkgfnNyYyBkc3QuZWx0cztcbiAgZHN0Lmxlbmd0aCA8LSBzcmMubGVuZ3RoO1xuICBkc3Rcbjs7XG5cbmxldCBvZl9saXN0IGwgPVxuICAoKiBUcmF2ZXJzaW5nIHRoZSBsaXN0IHVwIGZyb250IHRvIGNvbXB1dGUgaXRzIGxlbmd0aCBpcyBwcm9iYWJseSAoYnV0IG5vdCBkZWZpbml0ZWx5KVxuICAgICBiZXR0ZXIgdGhhbiBkb3VibGluZyB0aGUgdW5kZXJseWluZyBhcnJheSBzaXplIHNldmVyYWwgdGltZXMgZm9yIGxhcmdlIHF1ZXVlcy4gKilcbiAgbGV0IHQgPSBjcmVhdGUgfmNhcGFjaXR5OihMaXN0Lmxlbmd0aCBsKSAoKSBpblxuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gZW5xdWV1ZSB0IHgpO1xuICB0XG47O1xuXG4oKiBUaGUgcXVldWUgW3RdIHJldHVybmVkIGJ5IFtjcmVhdGVdIHdpbGwgaGF2ZSBbdC5sZW5ndGggPSAwXSwgW3QuZnJvbnQgPSAwXSwgYW5kXG4gICBbY2FwYWNpdHkgdCA9IEludC5jZWlsX3BvdzIgbGVuXS4gIFNvLCB3ZSBvbmx5IGhhdmUgdG8gc2V0IFt0Lmxlbmd0aF0gdG8gW2xlbl0gYWZ0ZXJcbiAgIHRoZSBibGl0IHRvIG1haW50YWluIGFsbCB0aGUgaW52YXJpYW50czogW3QubGVuZ3RoXSBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzXG4gICBpbiB0aGUgcXVldWUsIFt0LmZyb250XSBpcyB0aGUgYXJyYXkgaW5kZXggb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHF1ZXVlLCBhbmRcbiAgIFtjYXBhY2l0eSB0ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmVsdHNdLiAqKVxubGV0IGluaXQgbGVuIH5mID1cbiAgaWYgbGVuIDwgMFxuICB0aGVuXG4gICAgRXJyb3IucmFpc2Vfc1xuICAgICAgKFNleHAubWVzc2FnZSBcIlF1ZXVlLmluaXQ6IG5lZ2F0aXZlIGxlbmd0aFwiIFsgXCJsZW5ndGhcIiwgbGVuIHw+IEludC5zZXhwX29mX3QgXSk7XG4gIGxldCB0ID0gY3JlYXRlIH5jYXBhY2l0eTpsZW4gKCkgaW5cbiAgYXNzZXJ0IChPcHRpb25fYXJyYXkubGVuZ3RoIHQuZWx0cyA+PSBsZW4pO1xuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5lbHRzIGkgKGYgaSlcbiAgZG9uZTtcbiAgdC5sZW5ndGggPC0gbGVuO1xuICB0XG47O1xuXG5sZXQgb2ZfYXJyYXkgYSA9IGluaXQgKEFycmF5Lmxlbmd0aCBhKSB+ZjooQXJyYXkudW5zYWZlX2dldCBhKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IHQubGVuZ3RoIH5mOihmdW4gaSAtPiB1bnNhZmVfZ2V0IHQgaSlcblxubGV0IG1hcCB0YSB+ZiA9XG4gIGxldCBudW1fbXV0YXRpb25zID0gdGEubnVtX211dGF0aW9ucyBpblxuICBsZXQgdGIgPSBjcmVhdGUgfmNhcGFjaXR5OnRhLmxlbmd0aCAoKSBpblxuICB0Yi5sZW5ndGggPC0gdGEubGVuZ3RoO1xuICBmb3IgaSA9IDAgdG8gdGEubGVuZ3RoIC0gMSBkb1xuICAgIGxldCBiID0gZiAodW5zYWZlX2dldCB0YSBpKSBpblxuICAgIGVuc3VyZV9ub19tdXRhdGlvbiB0YSBudW1fbXV0YXRpb25zO1xuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdGIuZWx0cyBpIGJcbiAgZG9uZTtcbiAgdGJcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIG1hcCB0IH5mOihmdW4gYSAtPlxuICAgIGxldCByZXN1bHQgPSBmICFpIGEgaW5cbiAgICBpIDo9ICFpICsgMTtcbiAgICByZXN1bHQpXG47O1xuXG5sZXQgc2luZ2xldG9uIHggPVxuICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICBlbnF1ZXVlIHQgeDtcbiAgdFxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHRvX2xpc3QgdCB8PiBMaXN0LnNleHBfb2ZfdCBzZXhwX29mX2FcbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBMaXN0LnRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCB8PiBvZl9saXN0XG5cbmxldCB0X3NleHBfZ3JhbW1hciAodHlwZSBhKSAoZ3JhbW1hciA6IGEgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gIDogYSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gID1cbiAgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC50X3NleHBfZ3JhbW1hciBncmFtbWFyKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSB8XG5cbiAgbGV0IHVucmVhY2hhYmxlX2NvZGUgPSBmdW5jdGlvblxuICAgIHwgKF8gOiB0KSAtPiAuXG4gIDs7XG5cbiAgbGV0IGFsbCA9IFtdXG4gIGxldCBoYXNoX2ZvbGRfdCBfIHQgPSB1bnJlYWNoYWJsZV9jb2RlIHRcbiAgbGV0IGhhc2ggPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICBsZXQgdF9vZl9zZXhwIHNleHAgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IuZW1wdHlfdHlwZSBcIkJhc2UuTm90aGluZy50XCIgc2V4cFxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSB7IHVudHlwZWQgPSBVbmlvbiBbXSB9XG4gIGxldCB0b19zdHJpbmcgPSB1bnJlYWNoYWJsZV9jb2RlXG4gIGxldCBvZl9zdHJpbmcgKF8gOiBzdHJpbmcpID0gZmFpbHdpdGggXCJCYXNlLk5vdGhpbmcub2Zfc3RyaW5nOiBub3Qgc3VwcG9ydGVkXCJcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuTm90aGluZ1wiXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgQ2FtbC5OYXRpdmVpbnRcbmluY2x1ZGUgTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgaGFzaF9mb2xkX25hdGl2ZWludFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChuYXRpdmVpbnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfbmF0aXZlaW50IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IG5hdGl2ZWludF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgb3BlbiBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgICB0eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX25hdGl2ZWludCA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfbmF0aXZlaW50XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfbmF0aXZlaW50IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJW54XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlbnhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnQuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5OYXRpdmVpbnRcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBudW1fYml0cyA9IFdvcmRfc2l6ZS5udW1fYml0cyBXb3JkX3NpemUud29yZF9zaXplXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkID0gb2ZfZmxvYXRcblxubGV0IG9mX2Zsb2F0IGYgPVxuICBpZiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGYgZmxvYXRfbG93ZXJfYm91bmRcbiAgJiYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPD0gKSBmIGZsb2F0X3VwcGVyX2JvdW5kXG4gIHRoZW4gb2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJOYXRpdmVpbnQub2ZfZmxvYXQ6IGFyZ3VtZW50ICglZikgaXMgb3V0IG9mIHJhbmdlIG9yIE5hTlwiXG4gICAgICAoRmxvYXQwLmJveCBmKVxuICAgICAgKClcbjs7XG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIE5hdGl2ZWludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICBsZXQgbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpID1cbiAgICBQcmludGYuaW52YWxpZF9hcmdmIFwiYXJndW1lbnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZVwiICgpXG4gIDs7XG5cbiAgbGV0ICggbG9yICkgPSBDYW1sLk5hdGl2ZWludC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IENhbWwuTmF0aXZlaW50LnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gQ2FtbC5OYXRpdmVpbnQubG9nYW5kXG5cbiAgKCoqIFwiY2VpbGluZyBwb3dlciBvZiAyXCIgLSBMZWFzdCBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgY2VpbF9wb3cyICh4IDogbmF0aXZlaW50KSA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IENhbWwuTmF0aXZlaW50LnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgKCogVGhlIG5leHQgbGluZSBpcyBzdXBlcmZsdW91cyBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcywgYnV0IGl0J3MgZmFzdGVyIHRvIGRvIGl0XG4gICAgICAgYW55d2F5IHRoYW4gdG8gYnJhbmNoICopXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5OYXRpdmVpbnQuc3VjYyB4XG4gIDs7XG5cbiAgKCoqIFwiZmxvb3IgcG93ZXIgb2YgMlwiIC0gTGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB4LiAqKVxuICBsZXQgZmxvb3JfcG93MiB4ID1cbiAgICBpZiB4IDw9IDBuIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMzIpIGluXG4gICAgQ2FtbC5OYXRpdmVpbnQuc3ViIHggKHggbHNyIDEpXG4gIDs7XG5cbiAgbGV0IGlzX3BvdzIgeCA9XG4gICAgaWYgeCA8PSAwbiB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgQ2FtbC5OYXRpdmVpbnQucHJlZCB4ID0gMG5cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBuYXRpdmVpbnQgY2x6IGFuZCBjdHogdG8gdXNlIHRoZSBDTFovQlNSL0NUWi9CU0YgaW5zdHJ1Y3Rpb24gd2hlcmUgcG9zc2libGUgKilcbiAgZXh0ZXJuYWwgY2x6XG4gICAgOiAgKG5hdGl2ZWludFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX25hdGl2ZWludF9jbHpcIiBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2Nsel91bmJveGVkXCJcbiAgW0BAbm9hbGxvY11cblxuICBleHRlcm5hbCBjdHpcbiAgICA6ICAobmF0aXZlaW50W0B1bmJveGVkXSlcbiAgICAtPiAoaW50W0B1bnRhZ2dlZF0pXG4gICAgPSBcIkJhc2VfaW50X21hdGhfbmF0aXZlaW50X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9uYXRpdmVpbnRfY3R6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGZsb29yX2xvZzIgaSA9XG4gICAgaWYgUG9seS4oIDw9ICkgaSBDYW1sLk5hdGl2ZWludC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiW05hdGl2ZWludC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgIFsgXCJcIiwgc2V4cF9vZl9uYXRpdmVpbnQgaSBdKTtcbiAgICBudW1fYml0cyAtIDEgLSBjbHogaVxuICA7O1xuXG4gICgqKiBIYWNrZXIncyBEZWxpZ2h0IFNlY29uZCBFZGl0aW9uIHAxMDYgKilcbiAgbGV0IGNlaWxfbG9nMiBpID1cbiAgICBpZiBQb2x5LiggPD0gKSBpIENhbWwuTmF0aXZlaW50Lnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJbTmF0aXZlaW50LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIlxuICAgICAgICAgICBbIFwiXCIsIHNleHBfb2ZfbmF0aXZlaW50IGkgXSk7XG4gICAgaWYgQ2FtbC5OYXRpdmVpbnQuZXF1YWwgaSBDYW1sLk5hdGl2ZWludC5vbmVcbiAgICB0aGVuIDBcbiAgICBlbHNlIG51bV9iaXRzIC0gY2x6IChDYW1sLk5hdGl2ZWludC5wcmVkIGkpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSBQb3cyXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0IGluY3IgciA9IHIgOj0gIXIgKyBvbmVcbmxldCBkZWNyIHIgPSByIDo9ICFyIC0gb25lXG5sZXQgb2ZfbmF0aXZlaW50IHQgPSB0XG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IG9mX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludCB0ID0gdFxubGV0IHRvX25hdGl2ZWludF9leG4gPSB0b19uYXRpdmVpbnRcbmxldCBwb3Bjb3VudCA9IFBvcGNvdW50Lm5hdGl2ZWludF9wb3Bjb3VudFxubGV0IG9mX2ludCA9IENvbnYuaW50X3RvX25hdGl2ZWludFxubGV0IG9mX2ludF9leG4gPSBvZl9pbnRcbmxldCB0b19pbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5uYXRpdmVpbnRfdG9faW50X2V4blxubGV0IHRvX2ludF90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludF90cnVuY1xubGV0IG9mX2ludDMyID0gQ29udi5pbnQzMl90b19uYXRpdmVpbnRcbmxldCBvZl9pbnQzMl9leG4gPSBvZl9pbnQzMlxubGV0IHRvX2ludDMyID0gQ29udi5uYXRpdmVpbnRfdG9faW50MzJcbmxldCB0b19pbnQzMl9leG4gPSBDb252Lm5hdGl2ZWludF90b19pbnQzMl9leG5cbmxldCB0b19pbnQzMl90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX3RydW5jXG5sZXQgb2ZfaW50NjQgPSBDb252LmludDY0X3RvX25hdGl2ZWludFxubGV0IG9mX2ludDY0X2V4biA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnRfdHJ1bmNcbmxldCB0b19pbnQ2NCA9IENvbnYubmF0aXZlaW50X3RvX2ludDY0XG5sZXQgcG93IGIgZSA9IG9mX2ludF9leG4gKEludF9tYXRoLlByaXZhdGUuaW50X3BvdyAodG9faW50X2V4biBiKSAodG9faW50X2V4biBlKSlcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgbGV0ICggKyApID0gKCArIClcbiAgbGV0ICggLSApID0gKCAtIClcbiAgbGV0ICggKiApID0gKCAqIClcbiAgbGV0ICggLyApID0gKCAvIClcbiAgbGV0ICggfi0gKSA9ICggfi0gKVxuICBsZXQgKCAqKiApID0gKCAqKiApXG5cbiAgaW5jbHVkZSAoTmF0aXZlaW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50X2V4biA9IG9mX2ludF9leG5cbmVuZFxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIFByZV9PXG5cbiAgaW5jbHVkZSBJbnRfbWF0aC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgUHJlX09cblxuICAgICAgbGV0IHJlbSA9IHJlbVxuICAgICAgbGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbiAgICAgIGxldCBvZl9mbG9hdCA9IG9mX2Zsb2F0XG4gICAgICBsZXQgb2Zfc3RyaW5nID0gVC5vZl9zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmcgPSBULnRvX3N0cmluZ1xuICAgIGVuZClcblxuICBsZXQgKCBsYW5kICkgPSBiaXRfYW5kXG4gIGxldCAoIGxvciApID0gYml0X29yXG4gIGxldCAoIGx4b3IgKSA9IGJpdF94b3JcbiAgbGV0IGxub3QgPSBiaXRfbm90XG4gIGxldCAoIGxzbCApID0gc2hpZnRfbGVmdFxuICBsZXQgKCBhc3IgKSA9IHNoaWZ0X3JpZ2h0XG4gIGxldCAoIGxzciApID0gc2hpZnRfcmlnaHRfbG9naWNhbFxuZW5kXG5cbmluY2x1ZGUgT1xuXG4oKiBbTmF0aXZlaW50XSBhbmQgW05hdGl2ZWludC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBOYXRpdmVpbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmV4dGVybmFsIGJzd2FwIDogdCAtPiB0ID0gXCIlYnN3YXBfbmF0aXZlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEFwYWNoZSAyLjAgbGljZW5zZS4gU2VlIC4uL1RISVJELVBBUlRZLnR4dCAgKilcbigqICBmb3IgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5pbmNsdWRlIE1hcF9pbnRmXG5cbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG4gICgqIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIHRlc3RlZCBpbiBbdGVzdF9tYXAubWxdIHRvIG1ha2Ugc3VyZSBvdXIgdXNlIG9mXG4gICAgIFtDYW1sLk9iai5tYWdpY10gaXMgY29ycmVjdCBhbmQgc2FmZS4gKilcbiAgbGV0IG9mX2NvbnRpbnVlX29yX3N0b3AgOiBDb250aW51ZV9vcl9zdG9wLnQgLT4gdCA9IENhbWwuT2JqLm1hZ2ljXG4gIGxldCB0b19jb250aW51ZV9vcl9zdG9wIDogdCAtPiBDb250aW51ZV9vcl9zdG9wLnQgPSBDYW1sLk9iai5tYWdpY1xuZW5kXG5cbm1vZHVsZSBNZXJnZV9lbGVtZW50ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFwX2ludGYuTWVyZ2VfZWxlbWVudFxuXG4gIGxldCBsZWZ0ID0gZnVuY3Rpb25cbiAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICB8IGBMZWZ0IGxlZnQgfCBgQm90aCAobGVmdCwgXykgLT4gU29tZSBsZWZ0XG4gIDs7XG5cbiAgbGV0IHJpZ2h0ID0gZnVuY3Rpb25cbiAgICB8IGBMZWZ0IF8gLT4gTm9uZVxuICAgIHwgYFJpZ2h0IHJpZ2h0IHwgYEJvdGggKF8sIHJpZ2h0KSAtPiBTb21lIHJpZ2h0XG4gIDs7XG5cbiAgbGV0IGxlZnRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgUmlnaHQgXyAtPiBkZWZhdWx0XG4gICAgfCBgTGVmdCBsZWZ0IHwgYEJvdGggKGxlZnQsIF8pIC0+IGxlZnRcbiAgOztcblxuICBsZXQgcmlnaHRfdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBfIC0+IGRlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCB8IGBCb3RoIChfLCByaWdodCkgLT4gcmlnaHRcbiAgOztcblxuICBsZXQgdmFsdWVzIHQgfmxlZnRfZGVmYXVsdCB+cmlnaHRfZGVmYXVsdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBgTGVmdCBsZWZ0IC0+IGxlZnQsIHJpZ2h0X2RlZmF1bHRcbiAgICB8IGBSaWdodCByaWdodCAtPiBsZWZ0X2RlZmF1bHQsIHJpZ2h0XG4gICAgfCBgQm90aCAobGVmdCwgcmlnaHQpIC0+IGxlZnQsIHJpZ2h0XG4gIDs7XG5lbmRcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cblxuZXhjZXB0aW9uIER1cGxpY2F0ZSBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF1cblxubGV0ICgpID1cbiAgU2V4cGxpYjAuU2V4cF9jb252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIER1cGxpY2F0ZV0gKGZ1bmN0aW9uXG4gICAgfCBEdXBsaWNhdGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLkR1cGxpY2F0ZVwiXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbm1vZHVsZSBUcmVlMCA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YpIHQgPVxuICAgIHwgRW1wdHlcbiAgICB8IExlYWYgb2YgJ2sgKiAndlxuICAgIHwgTm9kZSBvZiAoJ2ssICd2KSB0ICogJ2sgKiAndiAqICgnaywgJ3YpIHQgKiBpbnRcblxuICB0eXBlICgnaywgJ3YpIHRyZWUgPSAoJ2ssICd2KSB0XG5cbiAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAwXG4gICAgfCBMZWFmIF8gLT4gMVxuICAgIHwgTm9kZSAoXywgXywgXywgXywgaCkgLT4gaFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRzID1cbiAgICBsZXQgaW5fcmFuZ2UgbG93ZXIgdXBwZXIgY29tcGFyZV9rZXkgayA9XG4gICAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgfCBTb21lIGxvd2VyIC0+IGNvbXBhcmVfa2V5IGxvd2VyIGsgPCAwKVxuICAgICAgJiZcbiAgICAgIG1hdGNoIHVwcGVyIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICB8IFNvbWUgdXBwZXIgLT4gY29tcGFyZV9rZXkgayB1cHBlciA8IDBcbiAgICBpblxuICAgIGxldCByZWMgbG9vcCBsb3dlciB1cHBlciBjb21wYXJlX2tleSB0ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiB0cnVlXG4gICAgICB8IExlYWYgKGssIF8pIC0+IGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgIHwgTm9kZSAobCwgaywgXywgciwgaCkgLT5cbiAgICAgICAgbGV0IGhsID0gaGVpZ2h0IGxcbiAgICAgICAgYW5kIGhyID0gaGVpZ2h0IHIgaW5cbiAgICAgICAgYWJzIChobCAtIGhyKSA8PSAyXG4gICAgICAgICYmIGggPSBtYXggaGwgaHIgKyAxXG4gICAgICAgICYmIGluX3JhbmdlIGxvd2VyIHVwcGVyIGNvbXBhcmVfa2V5IGtcbiAgICAgICAgJiYgbG9vcCBsb3dlciAoU29tZSBrKSBjb21wYXJlX2tleSBsXG4gICAgICAgICYmIGxvb3AgKFNvbWUgaykgdXBwZXIgY29tcGFyZV9rZXkgclxuICAgIGluXG4gICAgZnVuIHQgfmNvbXBhcmVfa2V5IC0+IGxvb3AgTm9uZSBOb25lIGNvbXBhcmVfa2V5IHRcbiAgOztcblxuICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobCkgLSBoZWlnaHQocil8IDw9IDIgKilcbiAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICBsZXQgaGwgPSBoZWlnaHQgbFxuICAgIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgaWYgaGwgPSAwICYmIGhyID0gMFxuICAgIHRoZW4gTGVhZiAoeCwgZClcbiAgICBlbHNlIE5vZGUgKGwsIHgsIGQsIHIsIGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKVxuICA7O1xuXG4gIGxldCBzaW5nbGV0b24ga2V5IGRhdGEgPSBMZWFmIChrZXksIGRhdGEpXG5cbiAgKCogV2UgbXVzdCBjYWxsIFtmXSB3aXRoIGluY3JlYXNpbmcgaW5kZXhlcywgYmVjYXVzZSB0aGUgYmluX3Byb3QgcmVhZGVyIGluXG4gICAgIENvcmUuTWFwIG5lZWRzIGl0LiAqKVxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIG4gfmYgaSA6IChfLCBfKSB0ID1cbiAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgfCAwIC0+IEVtcHR5XG4gICAgICB8IDEgLT5cbiAgICAgICAgbGV0IGssIHYgPSBmIGkgaW5cbiAgICAgICAgTGVhZiAoaywgdilcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQga2wsIHZsID0gZiBpIGluXG4gICAgICAgIGxldCBrLCB2ID0gZiAoaSArIDEpIGluXG4gICAgICAgIE5vZGUgKExlYWYgKGtsLCB2bCksIGssIHYsIEVtcHR5LCAyKVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBrbCwgdmwgPSBmIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgMSkgaW5cbiAgICAgICAgbGV0IGtyLCB2ciA9IGYgKGkgKyAyKSBpblxuICAgICAgICBOb2RlIChMZWFmIChrbCwgdmwpLCBrLCB2LCBMZWFmIChrciwgdnIpLCAyKVxuICAgICAgfCBuIC0+XG4gICAgICAgIGxldCBsZWZ0X2xlbmd0aCA9IG4gbHNyIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X2xlbmd0aCA9IG4gLSBsZWZ0X2xlbmd0aCAtIDEgaW5cbiAgICAgICAgbGV0IGxlZnQgPSBsb29wIGxlZnRfbGVuZ3RoIH5mIGkgaW5cbiAgICAgICAgbGV0IGssIHYgPSBmIChpICsgbGVmdF9sZW5ndGgpIGluXG4gICAgICAgIGxldCByaWdodCA9IGxvb3AgcmlnaHRfbGVuZ3RoIH5mIChpICsgbGVmdF9sZW5ndGggKyAxKSBpblxuICAgICAgICBjcmVhdGUgbGVmdCBrIHYgcmlnaHRcbiAgICBpblxuICAgIGxvb3AgbGVuIH5mIDBcbiAgOztcblxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhcnJheV9sZW5ndGggPSBBcnJheS5sZW5ndGggYXJyYXkgaW5cbiAgICBsZXQgbmV4dCA9XG4gICAgICBpZiBhcnJheV9sZW5ndGggPCAyXG4gICAgICAgICB8fFxuICAgICAgICAgbGV0IGswLCBfID0gYXJyYXkuKDApIGluXG4gICAgICAgICBsZXQgazEsIF8gPSBhcnJheS4oMSkgaW5cbiAgICAgICAgIGNvbXBhcmVfa2V5IGswIGsxIDwgMFxuICAgICAgdGhlbiBmdW4gaSAtPiBhcnJheS4oaSlcbiAgICAgIGVsc2UgZnVuIGkgLT4gYXJyYXkuKGFycmF5X2xlbmd0aCAtIDEgLSBpKVxuICAgIGluXG4gICAgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbjphcnJheV9sZW5ndGggfmY6bmV4dCwgYXJyYXlfbGVuZ3RoXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGFycmF5IHdpdGhcbiAgICB8IFt8fF0gfCBbfCBfIHxdIC0+IFJlc3VsdC5PayAob2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXkpXG4gICAgfCBfIC0+XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IGluY3JlYXNpbmcgPVxuICAgICAgICAgIG1hdGNoIGNvbXBhcmVfa2V5IChmc3QgYXJyYXkuKDApKSAoZnN0IGFycmF5LigxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+IGkgPCAwXG4gICAgICAgIGluXG4gICAgICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAyIGRvXG4gICAgICAgICAgbWF0Y2ggY29tcGFyZV9rZXkgKGZzdCBhcnJheS4oaSkpIChmc3QgYXJyYXkuKGkgKyAxKSkgd2l0aFxuICAgICAgICAgIHwgMCAtPiByLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBkdXBsaWNhdGVkIGVsZW1lbnRzXCIpXG4gICAgICAgICAgfCBpIC0+XG4gICAgICAgICAgICBpZiBQb2x5LiggPD4gKSAoaSA8IDApIGluY3JlYXNpbmdcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgci5yZXR1cm5cbiAgICAgICAgICAgICAgICAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwib2Zfc29ydGVkX2FycmF5OiBlbGVtZW50cyBhcmUgbm90IG9yZGVyZWRcIilcbiAgICAgICAgZG9uZTtcbiAgICAgICAgUmVzdWx0Lk9rIChvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5IH5jb21wYXJlX2tleSkpXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiB8aGVpZ2h0KGwpIC0gaGVpZ2h0KHIpfCA8PSAzICopXG4gIGxldCBiYWwgbCB4IGQgciA9XG4gICAgbGV0IGhsID0gaGVpZ2h0IGwgaW5cbiAgICBsZXQgaHIgPSBoZWlnaHQgciBpblxuICAgIGlmIGhsID4gaHIgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBoZWlnaHQoTGVhZikgPSAxICYmIDEgaXMgbm90IGxhcmdlciB0aGFuIGhyICsgMiAqKVxuICAgICAgfCBOb2RlIChsbCwgbHYsIGxkLCBsciwgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsclxuICAgICAgICB0aGVuIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgIHwgTGVhZiAobHJ2LCBscmQpIC0+IGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxkIEVtcHR5KSBscnYgbHJkIChjcmVhdGUgRW1wdHkgeCBkIHIpXG4gICAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJkLCBscnIsIF8pIC0+XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpKSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCByIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgIHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZSAoKiBoZWlnaHQoTGVhZikgPSAxICYmIDEgaXMgbm90IGxhcmdlciB0aGFuIGhsICsgMiAqKVxuICAgICAgfCBOb2RlIChybCwgcnYsIHJkLCByciwgXykgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJyID49IGhlaWdodCBybFxuICAgICAgICB0aGVuIGNyZWF0ZSAoY3JlYXRlIGwgeCBkIHJsKSBydiByZCByclxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBybCB3aXRoXG4gICAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgIHwgTGVhZiAocmx2LCBybGQpIC0+IGNyZWF0ZSAoY3JlYXRlIGwgeCBkIEVtcHR5KSBybHYgcmxkIChjcmVhdGUgRW1wdHkgcnYgcmQgcnIpXG4gICAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxkLCBybHIsIF8pIC0+XG4gICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpKSlcbiAgICBlbHNlIGNyZWF0ZSBsIHggZCByXG4gIDs7XG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCByYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBFcnJvci5yYWlzZV9zXG4gICAgICAoU2V4cC5tZXNzYWdlIFwiW01hcC5hZGRfZXhuXSBnb3Qga2V5IGFscmVhZHkgcHJlc2VudFwiIFsgXCJrZXlcIiwga2V5IHw+IHNleHBfb2Zfa2V5IF0pXG4gIDs7XG5cbiAgbW9kdWxlIEFkZF9vcl9zZXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBZGRfZXhuX2ludGVybmFsXG4gICAgICB8IEFkZF9leG5cbiAgICAgIHwgU2V0XG4gIGVuZFxuXG5cbiAgbGV0IHJlYyBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICAgICAgICB0XG4gICAgICAgICAgICB+bGVuZ3RoXG4gICAgICAgICAgICB+a2V5OnhcbiAgICAgICAgICAgIH5kYXRhXG4gICAgICAgICAgICB+Y29tcGFyZV9rZXlcbiAgICAgICAgICAgIH5zZXhwX29mX2tleVxuICAgICAgICAgICAgfihhZGRfb3Jfc2V0IDogQWRkX29yX3NldC50KVxuICAgID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IExlYWYgKHgsIGRhdGEpLCBsZW5ndGggKyAxXG4gICAgfCBMZWFmICh2LCBkKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgRHVwbGljYXRlXG4gICAgICAgIHwgQWRkX2V4biAtPiByYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXk6eCB+c2V4cF9vZl9rZXlcbiAgICAgICAgfCBTZXQgLT4gTGVhZiAoeCwgZGF0YSksIGxlbmd0aClcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gTm9kZSAoTGVhZiAoeCwgZGF0YSksIHYsIGQsIEVtcHR5LCAyKSwgbGVuZ3RoICsgMVxuICAgICAgZWxzZSBOb2RlIChFbXB0eSwgdiwgZCwgTGVhZiAoeCwgZGF0YSksIDIpLCBsZW5ndGggKyAxXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggYWRkX29yX3NldCB3aXRoXG4gICAgICAgIHwgQWRkX2V4bl9pbnRlcm5hbCAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgRHVwbGljYXRlXG4gICAgICAgIHwgQWRkX2V4biAtPiByYWlzZV9rZXlfYWxyZWFkeV9wcmVzZW50IH5rZXk6eCB+c2V4cF9vZl9rZXlcbiAgICAgICAgfCBTZXQgLT4gTm9kZSAobCwgeCwgZGF0YSwgciwgaCksIGxlbmd0aClcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbCwgbGVuZ3RoID1cbiAgICAgICAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0IH5sZW5ndGggfmtleTp4IH5kYXRhIGwgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSB+YWRkX29yX3NldFxuICAgICAgICBpblxuICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCByLCBsZW5ndGggPVxuICAgICAgICAgIGZpbmRfYW5kX2FkZF9vcl9zZXQgfmxlbmd0aCB+a2V5OnggfmRhdGEgciB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0XG4gICAgICAgIGluXG4gICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gIDs7XG5cbiAgbGV0IGFkZF9leG4gdCB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleSA9XG4gICAgZmluZF9hbmRfYWRkX29yX3NldCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5IH5hZGRfb3Jfc2V0OkFkZF9leG5cbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB0IH5sZW5ndGggfmtleSB+ZGF0YSB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBmaW5kX2FuZF9hZGRfb3Jfc2V0XG4gICAgICB0XG4gICAgICB+bGVuZ3RoXG4gICAgICB+a2V5XG4gICAgICB+ZGF0YVxuICAgICAgfmNvbXBhcmVfa2V5XG4gICAgICB+c2V4cF9vZl9rZXlcbiAgICAgIH5hZGRfb3Jfc2V0OkFkZF9leG5faW50ZXJuYWxcbiAgOztcblxuICBsZXQgc2V0IHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgZmluZF9hbmRfYWRkX29yX3NldFxuICAgICAgdFxuICAgICAgfmxlbmd0aFxuICAgICAgfmtleVxuICAgICAgfmRhdGFcbiAgICAgIH5jb21wYXJlX2tleVxuICAgICAgfnNleHBfb2Zfa2V5OihmdW4gXyAtPiBMaXN0IFtdKVxuICAgICAgfmFkZF9vcl9zZXQ6U2V0XG4gIDs7XG5cbiAgbGV0IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXkgPSBmc3QgKHNldCB0IH5sZW5ndGg6MCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSlcblxuICBtb2R1bGUgQnVpbGRfaW5jcmVhc2luZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBGcmFnbWVudCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9XG4gICAgICAgIHsgbGVmdF9zdWJ0cmVlIDogKCdrLCAndikgdFxuICAgICAgICA7IGtleSA6ICdrXG4gICAgICAgIDsgZGF0YSA6ICd2XG4gICAgICAgIH1cblxuICAgICAgbGV0IHNpbmdsZXRvbl90b190cmVlX2V4biA9IGZ1bmN0aW9uXG4gICAgICAgIHwgeyBsZWZ0X3N1YnRyZWUgPSBFbXB0eTsga2V5OyBkYXRhIH0gLT4gc2luZ2xldG9uIGtleSBkYXRhXG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aCBcIk1hcC5zaW5nbGV0b25fdG9fdHJlZV9leG46IG5vdCBhIHNpbmdsZXRvblwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgc2luZ2xldG9uIH5rZXkgfmRhdGEgPSB7IGxlZnRfc3VidHJlZSA9IEVtcHR5OyBrZXk7IGRhdGEgfVxuXG4gICAgICAoKiBwcmVjb25kaXRpb246IHxoZWlnaHQobC5sZWZ0X3N1YnRyZWUpIC0gaGVpZ2h0KHIpfCA8PSAyLFxuICAgICAgICAgbWF4X2tleShsKSA8IG1pbl9rZXkocilcbiAgICAgICopXG4gICAgICBsZXQgY29sbGFwc2UgbCByID0gY3JlYXRlIGwubGVmdF9zdWJ0cmVlIGwua2V5IGwuZGF0YSByXG5cbiAgICAgICgqIHByZWNvbmRpdGlvbjogfGhlaWdodChsLmxlZnRfc3VidHJlZSkgLSBoZWlnaHQoci5sZWZ0X3N1YnRyZWUpfCA8PSAyLFxuICAgICAgICAgbWF4X2tleShsKSA8IG1pbl9rZXkocilcbiAgICAgICopXG4gICAgICBsZXQgam9pbiBsIHIgPSB7IHIgd2l0aCBsZWZ0X3N1YnRyZWUgPSBjb2xsYXBzZSBsIHIubGVmdF9zdWJ0cmVlIH1cbiAgICAgIGxldCBtYXhfa2V5IHQgPSB0LmtleVxuICAgIGVuZFxuXG4gICAgKCoqIEJ1aWxkIHRyZWVzIGZyb20gc2luZ2xldG9ucyBpbiBhIGJhbGFuY2VkIHdheSBieSB1c2luZyBza2V3IGJpbmFyeSBlbmNvZGluZy5cbiAgICAgICAgRWFjaCBsZXZlbCBjb250YWlucyB0cmVlcyBvZiB0aGUgc2FtZSBoZWlnaHQsIGNvbnNlY3V0aXZlIGxldmVscyBoYXZlIGNvbnNlY3V0aXZlXG4gICAgICAgIGhlaWdodHMuIFRoZXJlIGFyZSBubyBnYXBzLiBUaGUgZmlyc3QgbGV2ZWwgYXJlIHNpbmdsZSBrZXlzLlxuICAgICopXG4gICAgdHlwZSAoJ2ssICd2KSB0ID1cbiAgICAgIHwgWmVybyBvZiB1bml0XG4gICAgICAoKiBbdW5pdF0gdG8gbWFrZSBwYXR0ZXJuIG1hdGNoaW5nIGZhc3RlciAqKVxuICAgICAgfCBPbmUgb2YgKCdrLCAndikgdCAqICgnaywgJ3YpIEZyYWdtZW50LnRcbiAgICAgIHwgVHdvIG9mICgnaywgJ3YpIHQgKiAoJ2ssICd2KSBGcmFnbWVudC50ICogKCdrLCAndikgRnJhZ21lbnQudFxuXG4gICAgbGV0IGVtcHR5ID0gWmVybyAoKVxuXG4gICAgbGV0IGFkZF91bmNoZWNrZWQgPVxuICAgICAgbGV0IHJlYyBnbyB0IHggPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBaZXJvICgpIC0+IE9uZSAodCwgeClcbiAgICAgICAgfCBPbmUgKHQsIHkpIC0+IFR3byAodCwgeSwgeClcbiAgICAgICAgfCBUd28gKHQsIHosIHkpIC0+IE9uZSAoZ28gdCAoRnJhZ21lbnQuam9pbiB6IHkpLCB4KVxuICAgICAgaW5cbiAgICAgIGZ1biB0IH5rZXkgfmRhdGEgLT4gZ28gdCAoRnJhZ21lbnQuc2luZ2xldG9uIH5rZXkgfmRhdGEpXG4gICAgOztcblxuICAgIGxldCB0b190cmVlX3VuY2hlY2tlZCA9XG4gICAgICBsZXQgcmVjIGdvIHQgciA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFplcm8gKCkgLT4gclxuICAgICAgICB8IE9uZSAodCwgbCkgLT4gZ28gdCAoRnJhZ21lbnQuY29sbGFwc2UgbCByKVxuICAgICAgICB8IFR3byAodCwgbGwsIGwpIC0+IGdvIHQgKEZyYWdtZW50LmNvbGxhcHNlIChGcmFnbWVudC5qb2luIGxsIGwpIHIpXG4gICAgICBpblxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgWmVybyAoKSAtPiBFbXB0eVxuICAgICAgfCBPbmUgKHQsIHIpIC0+IGdvIHQgKEZyYWdtZW50LnNpbmdsZXRvbl90b190cmVlX2V4biByKVxuICAgICAgfCBUd28gKHQsIGwsIHIpIC0+IGdvIChPbmUgKHQsIGwpKSAoRnJhZ21lbnQuc2luZ2xldG9uX3RvX3RyZWVfZXhuIHIpXG4gICAgOztcblxuICAgIGxldCBtYXhfa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAoKSAtPiBOb25lXG4gICAgICB8IE9uZSAoXywgcikgfCBUd28gKF8sIF8sIHIpIC0+IFNvbWUgKEZyYWdtZW50Lm1heF9rZXkgcilcbiAgICA7O1xuICBlbmRcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5ID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHsgcmV0dXJuIH0gLT5cbiAgICAgIGxldCBidWlsZGVyLCBsZW5ndGggPVxuICAgICAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICAgICAgc2VxXG4gICAgICAgICAgfmluaXQ6KEJ1aWxkX2luY3JlYXNpbmcuZW1wdHksIDApXG4gICAgICAgICAgfmY6KGZ1biAoYnVpbGRlciwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgbWF0Y2ggQnVpbGRfaW5jcmVhc2luZy5tYXhfa2V5IGJ1aWxkZXIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHByZXZfa2V5IHdoZW4gY29tcGFyZV9rZXkgcHJldl9rZXkga2V5ID49IDAgLT5cbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIm9mX2luY3JlYXNpbmdfc2VxdWVuY2U6IG5vbi1pbmNyZWFzaW5nIGtleVwiKVxuICAgICAgICAgICAgfCBfIC0+IEJ1aWxkX2luY3JlYXNpbmcuYWRkX3VuY2hlY2tlZCBidWlsZGVyIH5rZXkgfmRhdGEsIGxlbmd0aCArIDEpXG4gICAgICBpblxuICAgICAgT2sgKEJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZV91bmNoZWNrZWQgYnVpbGRlciwgbGVuZ3RoKSlcbiAgOztcblxuICAoKiBMaWtlIFtiYWxdIGJ1dCBhbGxvd3MgYW55IGRpZmZlcmVuY2UgaW4gaGVpZ2h0IGJldHdlZW4gW2xdIGFuZCBbcl0uXG5cbiAgICAgTyh8aGVpZ2h0IGwgLSBoZWlnaHQgcnwpICopXG4gIGxldCByZWMgam9pbiBsIGsgZCByIH5jb21wYXJlX2tleSA9XG4gICAgbWF0Y2ggbCwgciB3aXRoXG4gICAgfCBFbXB0eSwgXyAtPiBzZXQnIHIgayBkIH5jb21wYXJlX2tleVxuICAgIHwgXywgRW1wdHkgLT4gc2V0JyBsIGsgZCB+Y29tcGFyZV9rZXlcbiAgICB8IExlYWYgKGxrLCBsZCksIF8gLT4gc2V0JyAoc2V0JyByIGsgZCB+Y29tcGFyZV9rZXkpIGxrIGxkIH5jb21wYXJlX2tleVxuICAgIHwgXywgTGVhZiAocmssIHJkKSAtPiBzZXQnIChzZXQnIGwgayBkIH5jb21wYXJlX2tleSkgcmsgcmQgfmNvbXBhcmVfa2V5XG4gICAgfCBOb2RlIChsbCwgbGssIGxkLCBsciwgbGgpLCBOb2RlIChybCwgcmssIHJkLCByciwgcmgpIC0+XG4gICAgICAoKiBbYmFsXSByZXF1aXJlcyBoZWlnaHQgZGlmZmVyZW5jZSA8PSAzLiAqKVxuICAgICAgaWYgbGggPiByaCArIDNcbiAgICAgICgqIFtoZWlnaHQgbHIgPj0gaGVpZ2h0IHJdLFxuICAgICAgICAgdGhlcmVmb3JlIFtoZWlnaHQgKGpvaW4gbHIgayBkIHIgLi4uKV0gaXMgW2hlaWdodCBybCArIDFdIG9yIFtoZWlnaHQgcmxdXG4gICAgICAgICB0aGVyZWZvcmUgdGhlIGhlaWdodCBkaWZmZXJlbmNlIHdpdGggW2xsXSB3aWxsIGJlIDw9IDMgKilcbiAgICAgIHRoZW4gYmFsIGxsIGxrIGxkIChqb2luIGxyIGsgZCByIH5jb21wYXJlX2tleSlcbiAgICAgIGVsc2UgaWYgcmggPiBsaCArIDNcbiAgICAgIHRoZW4gYmFsIChqb2luIGwgayBkIHJsIH5jb21wYXJlX2tleSkgcmsgcmQgcnJcbiAgICAgIGVsc2UgYmFsIGwgayBkIHJcbiAgOztcblxuICBsZXQgcmVjIHNwbGl0IHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHksIE5vbmUsIEVtcHR5XG4gICAgfCBMZWFmIChrLCBkKSAtPlxuICAgICAgbGV0IGNtcCA9IGNvbXBhcmVfa2V5IHggayBpblxuICAgICAgaWYgY21wID0gMFxuICAgICAgdGhlbiBFbXB0eSwgU29tZSAoaywgZCksIEVtcHR5XG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gRW1wdHksIE5vbmUsIHRcbiAgICAgIGVsc2UgdCwgTm9uZSwgRW1wdHlcbiAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9rZXkgeCBrIGluXG4gICAgICBpZiBjbXAgPSAwXG4gICAgICB0aGVuIGwsIFNvbWUgKGssIGQpLCByXG4gICAgICBlbHNlIGlmIGNtcCA8IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbGwsIG1heWJlLCBsciA9IHNwbGl0IGwgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgbGwsIG1heWJlLCBqb2luIGxyIGsgZCByIH5jb21wYXJlX2tleSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgcmwsIG1heWJlLCByciA9IHNwbGl0IHIgeCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgam9pbiBsIGsgZCBybCB+Y29tcGFyZV9rZXksIG1heWJlLCBycilcbiAgOztcblxuICBsZXQgc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IHQgfmludG8geCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBsZWZ0LCBib3VuZGFyeV9vcHQsIHJpZ2h0ID0gc3BsaXQgdCB4IH5jb21wYXJlX2tleSBpblxuICAgIG1hdGNoIGJvdW5kYXJ5X29wdCB3aXRoXG4gICAgfCBOb25lIC0+IGxlZnQsIHJpZ2h0XG4gICAgfCBTb21lIChrZXksIGRhdGEpIC0+XG4gICAgICBsZXQgaW5zZXJ0X2ludG8gdHJlZSA9IGZzdCAoc2V0IHRyZWUgfmtleSB+ZGF0YSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5KSBpblxuICAgICAgKG1hdGNoIGludG8gd2l0aFxuICAgICAgIHwgYExlZnQgLT4gaW5zZXJ0X2ludG8gbGVmdCwgcmlnaHRcbiAgICAgICB8IGBSaWdodCAtPiBsZWZ0LCBpbnNlcnRfaW50byByaWdodClcbiAgOztcblxuICBsZXQgc3BsaXRfcmFuZ2VcbiAgICAgICAgdFxuICAgICAgICB+KGxvd2VyX2JvdW5kIDogJ2EgTWF5YmVfYm91bmQudClcbiAgICAgICAgfih1cHBlcl9ib3VuZCA6ICdhIE1heWJlX2JvdW5kLnQpXG4gICAgICAgIH5jb21wYXJlX2tleVxuICAgID1cbiAgICBpZiBNYXliZV9ib3VuZC5ib3VuZHNfY3Jvc3NlZFxuICAgICAgICAgfmNvbXBhcmU6Y29tcGFyZV9rZXlcbiAgICAgICAgIH5sb3dlcjpsb3dlcl9ib3VuZFxuICAgICAgICAgfnVwcGVyOnVwcGVyX2JvdW5kXG4gICAgdGhlbiBlbXB0eSwgZW1wdHksIGVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbGVmdCwgbWlkX2FuZF9yaWdodCA9XG4gICAgICAgIG1hdGNoIGxvd2VyX2JvdW5kIHdpdGhcbiAgICAgICAgfCBVbmJvdW5kZWQgLT4gZW1wdHksIHRcbiAgICAgICAgfCBJbmNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgdCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgICAgfCBFeGNsIGxiIC0+IHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgTGVmdCB0IGxiIH5jb21wYXJlX2tleVxuICAgICAgaW5cbiAgICAgIGxldCBtaWQsIHJpZ2h0ID1cbiAgICAgICAgbWF0Y2ggdXBwZXJfYm91bmQgd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCAtPiBtaWRfYW5kX3JpZ2h0LCBlbXB0eVxuICAgICAgICB8IEluY2wgbGIgLT4gc3BsaXRfYW5kX3JlaW5zZXJ0X2JvdW5kYXJ5IH5pbnRvOmBMZWZ0IG1pZF9hbmRfcmlnaHQgbGIgfmNvbXBhcmVfa2V5XG4gICAgICAgIHwgRXhjbCBsYiAtPlxuICAgICAgICAgIHNwbGl0X2FuZF9yZWluc2VydF9ib3VuZGFyeSB+aW50bzpgUmlnaHQgbWlkX2FuZF9yaWdodCBsYiB+Y29tcGFyZV9rZXlcbiAgICAgIGluXG4gICAgICBsZWZ0LCBtaWQsIHJpZ2h0KVxuICA7O1xuXG4gIGxldCByZWMgZmluZCB0IHggfmNvbXBhcmVfa2V5ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKHYsIGQpIC0+IGlmIGNvbXBhcmVfa2V5IHggdiA9IDAgdGhlbiBTb21lIGQgZWxzZSBOb25lXG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgIGlmIGMgPSAwIHRoZW4gU29tZSBkIGVsc2UgZmluZCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcikgeCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgYWRkX211bHRpIHQgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGRhdGEgPSBkYXRhIDo6IE9wdGlvbi52YWx1ZSAoZmluZCB0IGtleSB+Y29tcGFyZV9rZXkpIH5kZWZhdWx0OltdIGluXG4gICAgc2V0IH5sZW5ndGggfmtleSB+ZGF0YSB0IH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIHQgeCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIGZpbmQgdCB4IH5jb21wYXJlX2tleSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIGwgLT4gbFxuICA7O1xuXG4gIGxldCBmaW5kX2V4biA9XG4gICAgbGV0IGlmX25vdF9mb3VuZCBrZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIHJhaXNlIChOb3RfZm91bmRfcyAoTGlzdCBbIEF0b20gXCJNYXAuZmluZF9leG46IG5vdCBmb3VuZFwiOyBzZXhwX29mX2tleSBrZXkgXSkpXG4gICAgaW5cbiAgICBsZXQgcmVjIGZpbmRfZXhuIHQgeCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT4gaWYgY29tcGFyZV9rZXkgeCB2ID0gMCB0aGVuIGQgZWxzZSBpZl9ub3RfZm91bmQgeCB+c2V4cF9vZl9rZXlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlbiBkIGVsc2UgZmluZF9leG4gKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpIHggfmNvbXBhcmVfa2V5IH5zZXhwX29mX2tleVxuICAgIGluXG4gICAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICAgIGZpbmRfZXhuXG4gIDs7XG5cbiAgbGV0IG1lbSB0IHggfmNvbXBhcmVfa2V5ID0gT3B0aW9uLmlzX3NvbWUgKGZpbmQgdCB4IH5jb21wYXJlX2tleSlcblxuICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgZCkgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKEVtcHR5LCBrLCBkLCBfLCBfKSAtPiBTb21lIChrLCBkKVxuICAgIHwgTm9kZSAobCwgXywgXywgXywgXykgLT4gbWluX2VsdCBsXG4gIDs7XG5cbiAgZXhjZXB0aW9uIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWluX2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgZXhjZXB0aW9uIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXAgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBdXG5cbiAgbGV0ICgpID1cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGRcbiAgICAgIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBdXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwIC0+XG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5BdG9tIFwibWFwLm1sLlRyZWUwLk1hcF9tYXhfZWx0X2V4bl9vZl9lbXB0eV9tYXBcIlxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IG1pbl9lbHRfZXhuIHQgPVxuICAgIG1hdGNoIG1pbl9lbHQgdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIE1hcF9taW5fZWx0X2V4bl9vZl9lbXB0eV9tYXBcbiAgICB8IFNvbWUgdiAtPiB2XG4gIDs7XG5cbiAgbGV0IHJlYyBtYXhfZWx0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIGQpIC0+IFNvbWUgKGssIGQpXG4gICAgfCBOb2RlIChfLCBrLCBkLCBFbXB0eSwgXykgLT4gU29tZSAoaywgZClcbiAgICB8IE5vZGUgKF8sIF8sIF8sIHIsIF8pIC0+IG1heF9lbHQgclxuICA7O1xuXG4gIGxldCBtYXhfZWx0X2V4biB0ID1cbiAgICBtYXRjaCBtYXhfZWx0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBNYXBfbWF4X2VsdF9leG5fb2ZfZW1wdHlfbWFwXG4gICAgfCBTb21lIHYgLT4gdlxuICA7O1xuXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5yZW1vdmVfbWluX2VsdFwiXG4gICAgfCBMZWFmIF8gLT4gRW1wdHlcbiAgICB8IE5vZGUgKEVtcHR5LCBfLCBfLCByLCBfKSAtPiByXG4gICAgfCBOb2RlIChsLCB4LCBkLCByLCBfKSAtPiBiYWwgKHJlbW92ZV9taW5fZWx0IGwpIHggZCByXG4gIDs7XG5cbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIG1heF9lbHQgbG93ZXJfcGFydCwgbWluX2VsdCB1cHBlcl9wYXJ0IHdpdGhcbiAgICB8IE5vbmUsIF8gLT4gYE9rIHVwcGVyX3BhcnRcbiAgICB8IF8sIE5vbmUgLT4gYE9rIGxvd2VyX3BhcnRcbiAgICB8IFNvbWUgKG1heF9sb3dlciwgXyksIFNvbWUgKG1pbl91cHBlciwgdikgd2hlbiBjb21wYXJlX2tleSBtYXhfbG93ZXIgbWluX3VwcGVyIDwgMCAtPlxuICAgICAgbGV0IHVwcGVyX3BhcnRfd2l0aG91dF9taW4gPSByZW1vdmVfbWluX2VsdCB1cHBlcl9wYXJ0IGluXG4gICAgICBgT2sgKGpvaW4gfmNvbXBhcmVfa2V5IGxvd2VyX3BhcnQgbWluX3VwcGVyIHYgdXBwZXJfcGFydF93aXRob3V0X21pbilcbiAgICB8IF8gLT4gYE92ZXJsYXBwaW5nX2tleV9yYW5nZXNcbiAgOztcblxuICBsZXQgZm9sZF9yYW5nZV9pbmNsdXNpdmUgPVxuICAgICgqIFRoaXMgYXNzdW1lcyB0aGF0IG1pbiA8PSBtYXgsIHdoaWNoIGlzIGNoZWNrZWQgYnkgdGhlIG91dGVyIGZ1bmN0aW9uLiAqKVxuICAgIGxldCByZWMgZ28gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBpbml0XG4gICAgICB8IExlYWYgKGssIGQpIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IGsgbWluIDwgMCB8fCBjb21wYXJlX2tleSBrIG1heCA+IDBcbiAgICAgICAgdGhlbiAoKiBrIDwgbWluIHx8IGsgPiBtYXggKilcbiAgICAgICAgICBpbml0XG4gICAgICAgIGVsc2UgZiB+a2V5OmsgfmRhdGE6ZCBpbml0XG4gICAgICB8IE5vZGUgKGwsIGssIGQsIHIsIF8pIC0+XG4gICAgICAgIGxldCBjX21pbiA9IGNvbXBhcmVfa2V5IGsgbWluIGluXG4gICAgICAgIGlmIGNfbWluIDwgMFxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogaWYgayA8IG1pbiwgdGhlbiB0aGlzIG5vZGUgYW5kIGl0cyBsZWZ0IGJyYW5jaCBhcmUgb3V0c2lkZSBvdXIgcmFuZ2UgKilcbiAgICAgICAgICBnbyByIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXlcbiAgICAgICAgZWxzZSBpZiBjX21pbiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGlmIGsgPSBtaW4sIHRoZW4gdGhpcyBub2RlJ3MgbGVmdCBicmFuY2ggaXMgb3V0c2lkZSBvdXIgcmFuZ2UgKilcbiAgICAgICAgICBnbyByIH5taW4gfm1heCB+aW5pdDooZiB+a2V5OmsgfmRhdGE6ZCBpbml0KSB+ZiB+Y29tcGFyZV9rZXlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogayA+IG1pbiAqKVxuICAgICAgICAgIGxldCB6ID0gZ28gbCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgbGV0IGNfbWF4ID0gY29tcGFyZV9rZXkgayBtYXggaW5cbiAgICAgICAgICAoKiBpZiBrID4gbWF4LCB3ZSdyZSBkb25lICopXG4gICAgICAgICAgaWYgY19tYXggPiAwXG4gICAgICAgICAgdGhlbiB6XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgeiA9IGYgfmtleTprIH5kYXRhOmQgeiBpblxuICAgICAgICAgICAgKCogaWYgayA9IG1heCwgdGhlbiB3ZSBmb2xkIGluIHRoaXMgb25lIGxhc3QgdmFsdWUgYW5kIHdlJ3JlIGRvbmUgKilcbiAgICAgICAgICAgIGlmIGNfbWF4ID0gMCB0aGVuIHogZWxzZSBnbyByIH5taW4gfm1heCB+aW5pdDp6IH5mIH5jb21wYXJlX2tleSkpXG4gICAgaW5cbiAgICBmdW4gdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmVfa2V5IC0+XG4gICAgICBpZiBjb21wYXJlX2tleSBtaW4gbWF4IDw9IDAgdGhlbiBnbyB0IH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgZWxzZSBpbml0XG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4IH5jb21wYXJlX2tleSA9XG4gICAgTGlzdC5yZXZcbiAgICAgIChmb2xkX3JhbmdlX2luY2x1c2l2ZVxuICAgICAgICAgdFxuICAgICAgICAgfm1pblxuICAgICAgICAgfm1heFxuICAgICAgICAgfmluaXQ6W11cbiAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSBsIC0+IChrZXksIGRhdGEpIDo6IGwpXG4gICAgICAgICB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IGNvbmNhdF91bmNoZWNrZWQgdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgdCAtPiB0XG4gICAgfCB0LCBFbXB0eSAtPiB0XG4gICAgfCBfLCBfIC0+XG4gICAgICBsZXQgeCwgZCA9IG1pbl9lbHRfZXhuIHQyIGluXG4gICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2VsdCB0MilcbiAgOztcblxuICBleGNlcHRpb24gUmVtb3ZlX25vX29wXG5cbiAgbGV0IHJlbW92ZSB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgcmVtb3ZlX2xvb3AgdCB4IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBFeG4ucmFpc2Vfd2l0aG91dF9iYWNrdHJhY2UgUmVtb3ZlX25vX29wXG4gICAgICB8IExlYWYgKHYsIF8pIC0+XG4gICAgICAgIGlmIGNvbXBhcmVfa2V5IHggdiA9IDBcbiAgICAgICAgdGhlbiBFbXB0eSwgbGVuZ3RoIC0gMVxuICAgICAgICBlbHNlIEV4bi5yYWlzZV93aXRob3V0X2JhY2t0cmFjZSBSZW1vdmVfbm9fb3BcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB4IHYgaW5cbiAgICAgICAgaWYgYyA9IDBcbiAgICAgICAgdGhlbiBjb25jYXRfdW5jaGVja2VkIGwgciwgbGVuZ3RoIC0gMVxuICAgICAgICBlbHNlIGlmIGMgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBsLCBsZW5ndGggPSByZW1vdmVfbG9vcCBsIHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICBiYWwgbCB2IGQgciwgbGVuZ3RoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgciwgbGVuZ3RoID0gcmVtb3ZlX2xvb3AgciB4IH5sZW5ndGggfmNvbXBhcmVfa2V5IGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICBpblxuICAgIHRyeSByZW1vdmVfbG9vcCB0IHggfmxlbmd0aCB+Y29tcGFyZV9rZXkgd2l0aFxuICAgIHwgUmVtb3ZlX25vX29wIC0+IHQsIGxlbmd0aFxuICA7O1xuXG4gICgqIFVzZSBleGNlcHRpb24gdG8gYXZvaWQgdHJlZS1yZWJ1aWxkIGluIG5vLW9wIGNhc2UgKilcbiAgZXhjZXB0aW9uIENoYW5nZV9ub19vcFxuXG4gIGxldCBjaGFuZ2UgdCBrZXkgfmYgfmxlbmd0aCB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCByZWMgY2hhbmdlX2NvcmUgdCBrZXkgZiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgKG1hdGNoIGYgTm9uZSB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gcmFpc2UgQ2hhbmdlX25vX29wICgqIGVxdWl2YWxlbnQgdG8gcmV0dXJuaW5nOiBFbXB0eSAqKVxuICAgICAgICAgfCBTb21lIGRhdGEgLT4gTGVhZiAoa2V5LCBkYXRhKSwgbGVuZ3RoICsgMSlcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBmIChTb21lIGQpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRW1wdHksIGxlbmd0aCAtIDFcbiAgICAgICAgICB8IFNvbWUgZCcgLT4gTGVhZiAodiwgZCcpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IGNoYW5nZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIEVtcHR5LCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSBjaGFuZ2VfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBFbXB0eSB2IGQgciwgbGVuZ3RoKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIG1hdGNoIGYgKFNvbWUgZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBjb25jYXRfdW5jaGVja2VkIGwgciwgbGVuZ3RoIC0gMVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGUgKGwsIGtleSwgZGF0YSwgciwgaCksIGxlbmd0aClcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gY2hhbmdlX2NvcmUgbCBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSBjaGFuZ2VfY29yZSByIGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICBpblxuICAgIHRyeSBjaGFuZ2VfY29yZSB0IGtleSBmIHdpdGhcbiAgICB8IENoYW5nZV9ub19vcCAtPiB0LCBsZW5ndGhcbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mIH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBsZXQgcmVjIHVwZGF0ZV9jb3JlIHQga2V5IGYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIGxldCBkYXRhID0gZiBOb25lIGluXG4gICAgICAgIExlYWYgKGtleSwgZGF0YSksIGxlbmd0aCArIDFcbiAgICAgIHwgTGVhZiAodiwgZCkgLT5cbiAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrZXkgdiBpblxuICAgICAgICBpZiBjID0gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZCcgPSBmIChTb21lIGQpIGluXG4gICAgICAgICAgTGVhZiAodiwgZCcpLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGwsIGxlbmd0aCA9IHVwZGF0ZV9jb3JlIEVtcHR5IGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIEVtcHR5LCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSB1cGRhdGVfY29yZSBFbXB0eSBrZXkgZiBpblxuICAgICAgICAgIGJhbCBFbXB0eSB2IGQgciwgbGVuZ3RoKVxuICAgICAgfCBOb2RlIChsLCB2LCBkLCByLCBoKSAtPlxuICAgICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGtleSB2IGluXG4gICAgICAgIGlmIGMgPSAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCBkYXRhID0gZiAoU29tZSBkKSBpblxuICAgICAgICAgIE5vZGUgKGwsIGtleSwgZGF0YSwgciwgaCksIGxlbmd0aClcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbCwgbGVuZ3RoID0gdXBkYXRlX2NvcmUgbCBrZXkgZiBpblxuICAgICAgICAgIGJhbCBsIHYgZCByLCBsZW5ndGgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByLCBsZW5ndGggPSB1cGRhdGVfY29yZSByIGtleSBmIGluXG4gICAgICAgICAgYmFsIGwgdiBkIHIsIGxlbmd0aClcbiAgICBpblxuICAgIHVwZGF0ZV9jb3JlIHQga2V5IGZcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5IH5sZW5ndGggfmNvbXBhcmVfa2V5ID1cbiAgICBjaGFuZ2UgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgfCBTb21lIChbXSB8IFsgXyBdKSAtPiBOb25lXG4gICAgICB8IFNvbWUgKF8gOjogKF8gOjogXyBhcyBub25fZW1wdHlfdGFpbCkpIC0+IFNvbWUgbm9uX2VtcHR5X3RhaWwpXG4gIDs7XG5cbiAgbGV0IHJlYyBpdGVyX2tleXMgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgTGVhZiAodiwgXykgLT4gZiB2XG4gICAgfCBOb2RlIChsLCB2LCBfLCByLCBfKSAtPlxuICAgICAgaXRlcl9rZXlzIH5mIGw7XG4gICAgICBmIHY7XG4gICAgICBpdGVyX2tleXMgfmYgclxuICA7O1xuXG4gIGxldCByZWMgaXRlciB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIChfLCBkKSAtPiBmIGRcbiAgICB8IE5vZGUgKGwsIF8sIGQsIHIsIF8pIC0+XG4gICAgICBpdGVyIH5mIGw7XG4gICAgICBmIGQ7XG4gICAgICBpdGVyIH5mIHJcbiAgOztcblxuICBsZXQgcmVjIGl0ZXJpIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmRcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICBpdGVyaSB+ZiBsO1xuICAgICAgZiB+a2V5OnYgfmRhdGE6ZDtcbiAgICAgIGl0ZXJpIH5mIHJcbiAgOztcblxuICBsZXQgaXRlcmlfdW50aWwgPVxuICAgIGxldCByZWMgaXRlcmlfdW50aWxfbG9vcCB0IH5mIDogQ29udGludWVfb3Jfc3RvcC50ID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBDb250aW51ZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBmIH5rZXk6diB+ZGF0YTpkXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIChtYXRjaCBpdGVyaV91bnRpbF9sb29wIH5mIGwgd2l0aFxuICAgICAgICAgfCBTdG9wIC0+IFN0b3BcbiAgICAgICAgIHwgQ29udGludWUgLT5cbiAgICAgICAgICAgKG1hdGNoIGYgfmtleTp2IH5kYXRhOmQgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIC0+IFN0b3BcbiAgICAgICAgICAgIHwgQ29udGludWUgLT4gaXRlcmlfdW50aWxfbG9vcCB+ZiByKSlcbiAgICBpblxuICAgIGZ1biB0IH5mIC0+IEZpbmlzaGVkX29yX3VuZmluaXNoZWQub2ZfY29udGludWVfb3Jfc3RvcCAoaXRlcmlfdW50aWxfbG9vcCB0IH5mKVxuICA7O1xuXG4gIGxldCByZWMgbWFwIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICB8IExlYWYgKHYsIGQpIC0+IExlYWYgKHYsIGYgZClcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgbCcgPSBtYXAgfmYgbCBpblxuICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICBsZXQgcicgPSBtYXAgfmYgciBpblxuICAgICAgTm9kZSAobCcsIHYsIGQnLCByJywgaClcbiAgOztcblxuICBsZXQgcmVjIG1hcGkgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAodiwgZCkgLT4gTGVhZiAodiwgZiB+a2V5OnYgfmRhdGE6ZClcbiAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIGgpIC0+XG4gICAgICBsZXQgbCcgPSBtYXBpIH5mIGwgaW5cbiAgICAgIGxldCBkJyA9IGYgfmtleTp2IH5kYXRhOmQgaW5cbiAgICAgIGxldCByJyA9IG1hcGkgfmYgciBpblxuICAgICAgTm9kZSAobCcsIHYsIGQnLCByJywgaClcbiAgOztcblxuICBsZXQgcmVjIGZvbGQgdCB+aW5pdDphY2N1IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IGFjY3VcbiAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjdVxuICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gZm9sZCB+ZiByIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkIH5mIGwgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IGZvbGRfdW50aWwgdCB+aW5pdCB+ZiB+ZmluaXNoID1cbiAgICBsZXQgcmVjIGZvbGRfdW50aWxfbG9vcCB0IH5hY2MgfmYgOiAoXywgXykgQ29udGFpbmVyLkNvbnRpbnVlX29yX3N0b3AudCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gQ29udGludWUgYWNjXG4gICAgICB8IExlYWYgKHYsIGQpIC0+IGYgfmtleTp2IH5kYXRhOmQgYWNjXG4gICAgICB8IE5vZGUgKGwsIHYsIGQsIHIsIF8pIC0+XG4gICAgICAgIChtYXRjaCBmb2xkX3VudGlsX2xvb3AgbCB+YWNjIH5mIHdpdGhcbiAgICAgICAgIHwgU3RvcCBmaW5hbCAtPiBTdG9wIGZpbmFsXG4gICAgICAgICB8IENvbnRpbnVlIGFjYyAtPlxuICAgICAgICAgICAobWF0Y2ggZiB+a2V5OnYgfmRhdGE6ZCBhY2Mgd2l0aFxuICAgICAgICAgICAgfCBTdG9wIGZpbmFsIC0+IFN0b3AgZmluYWxcbiAgICAgICAgICAgIHwgQ29udGludWUgYWNjIC0+IGZvbGRfdW50aWxfbG9vcCByIH5hY2MgfmYpKVxuICAgIGluXG4gICAgbWF0Y2ggZm9sZF91bnRpbF9sb29wIHQgfmFjYzppbml0IH5mIHdpdGhcbiAgICB8IENvbnRpbnVlIGFjYyAtPiBmaW5pc2ggYWNjXG4gICAgfCBTdG9wIHN0b3AgLT4gc3RvcFxuICA7O1xuXG4gIGxldCByZWMgZm9sZF9yaWdodCB0IH5pbml0OmFjY3UgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gYWNjdVxuICAgIHwgTGVhZiAodiwgZCkgLT4gZiB+a2V5OnYgfmRhdGE6ZCBhY2N1XG4gICAgfCBOb2RlIChsLCB2LCBkLCByLCBfKSAtPlxuICAgICAgZm9sZF9yaWdodCB+ZiBsIH5pbml0OihmIH5rZXk6diB+ZGF0YTpkIChmb2xkX3JpZ2h0IH5mIHIgfmluaXQ6YWNjdSkpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9rZXlzIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIGlmIGYga2V5IHRoZW4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBhY2N1IH5jb21wYXJlX2tleSBlbHNlIGFjY3UsIGxlbmd0aClcbiAgOztcblxuXG4gIGxldCBmaWx0ZXIgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIGZvbGQgfmluaXQ6KEVtcHR5LCAwKSB0IH5mOihmdW4gfmtleSB+ZGF0YSAoYWNjdSwgbGVuZ3RoKSAtPlxuICAgICAgaWYgZiBkYXRhIHRoZW4gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBhY2N1IH5jb21wYXJlX2tleSBlbHNlIGFjY3UsIGxlbmd0aClcbiAgOztcblxuICBsZXQgZmlsdGVyaSB0IH5mIH5jb21wYXJlX2tleSA9XG4gICAgZm9sZCB+aW5pdDooRW1wdHksIDApIHQgfmY6KGZ1biB+a2V5IH5kYXRhIChhY2N1LCBsZW5ndGgpIC0+XG4gICAgICBpZiBmIH5rZXkgfmRhdGEgdGhlbiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhIGFjY3UgfmNvbXBhcmVfa2V5IGVsc2UgYWNjdSwgbGVuZ3RoKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIG1hdGNoIGYgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjdSwgbGVuZ3RoXG4gICAgICB8IFNvbWUgYiAtPiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhOmIgYWNjdSB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkIH5pbml0OihFbXB0eSwgMCkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgKGFjY3UsIGxlbmd0aCkgLT5cbiAgICAgIG1hdGNoIGYgfmtleSB+ZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjdSwgbGVuZ3RoXG4gICAgICB8IFNvbWUgYiAtPiBzZXQgfmxlbmd0aCB+a2V5IH5kYXRhOmIgYWNjdSB+Y29tcGFyZV9rZXkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBmb2xkXG4gICAgICB0XG4gICAgICB+aW5pdDooKEVtcHR5LCAwKSwgKEVtcHR5LCAwKSlcbiAgICAgIH5mOihmdW4gfmtleSB+ZGF0YSAocGFpcjEsIHBhaXIyKSAtPlxuICAgICAgICBtYXRjaCAoZiB+a2V5IH5kYXRhIDogXyBFaXRoZXIudCkgd2l0aFxuICAgICAgICB8IEZpcnN0IHggLT5cbiAgICAgICAgICBsZXQgdCwgbGVuZ3RoID0gcGFpcjEgaW5cbiAgICAgICAgICBzZXQgdCB+a2V5IH5kYXRhOnggfmNvbXBhcmVfa2V5IH5sZW5ndGgsIHBhaXIyXG4gICAgICAgIHwgU2Vjb25kIHkgLT5cbiAgICAgICAgICBsZXQgdCwgbGVuZ3RoID0gcGFpcjIgaW5cbiAgICAgICAgICBwYWlyMSwgc2V0IHQgfmtleSB+ZGF0YTp5IH5jb21wYXJlX2tleSB+bGVuZ3RoKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgfmNvbXBhcmVfa2V5ID1cbiAgICBwYXJ0aXRpb25fbWFwaSB0IH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIHBhcnRpdGlvbl9tYXBpIHQgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgaWYgZiB+a2V5IH5kYXRhIHRoZW4gRmlyc3QgZGF0YSBlbHNlIFNlY29uZCBkYXRhKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIHBhcnRpdGlvbl9tYXBpIHQgfmNvbXBhcmVfa2V5IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+XG4gICAgICBpZiBmIGRhdGEgdGhlbiBGaXJzdCBkYXRhIGVsc2UgU2Vjb25kIGRhdGEpXG4gIDs7XG5cbiAgbW9kdWxlIEVudW0gPSBzdHJ1Y3RcbiAgICB0eXBlIGluY3JlYXNpbmdcbiAgICB0eXBlIGRlY3JlYXNpbmdcblxuICAgIHR5cGUgKCdrLCAndiwgJ2RpcmVjdGlvbikgdCA9XG4gICAgICB8IEVuZFxuICAgICAgfCBNb3JlIG9mICdrICogJ3YgKiAoJ2ssICd2KSB0cmVlICogKCdrLCAndiwgJ2RpcmVjdGlvbikgdFxuXG4gICAgbGV0IHJlYyBjb25zIHQgKGUgOiAoXywgXywgaW5jcmVhc2luZykgdCkgOiAoXywgXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gY29ucyBsIChNb3JlICh2LCBkLCByLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBjb25zX3JpZ2h0IHQgKGUgOiAoXywgXywgZGVjcmVhc2luZykgdCkgOiAoXywgXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgfCBMZWFmICh2LCBkKSAtPiBNb3JlICh2LCBkLCBFbXB0eSwgZSlcbiAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gY29uc19yaWdodCByIChNb3JlICh2LCBkLCBsLCBlKSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX3RyZWUgdHJlZSA6IChfLCBfLCBpbmNyZWFzaW5nKSB0ID0gY29ucyB0cmVlIEVuZFxuICAgIGxldCBvZl90cmVlX3JpZ2h0IHRyZWUgOiAoXywgXywgZGVjcmVhc2luZykgdCA9IGNvbnNfcmlnaHQgdHJlZSBFbmRcblxuICAgIGxldCBzdGFydGluZ19hdF9pbmNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgXywgaW5jcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBkLCBFbXB0eSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChfLCB2LCBfLCByLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPCAwIC0+IGxvb3AgciBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbG9vcCBsIChNb3JlICh2LCBkLCByLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBzdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmUgOiAoXywgXywgZGVjcmVhc2luZykgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgdCBlID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gZVxuICAgICAgICB8IExlYWYgKHYsIGQpIC0+IGxvb3AgKE5vZGUgKEVtcHR5LCB2LCBkLCBFbXB0eSwgMSkpIGVcbiAgICAgICAgfCBOb2RlIChsLCB2LCBfLCBfLCBfKSB3aGVuIGNvbXBhcmUgdiBrZXkgPiAwIC0+IGxvb3AgbCBlXG4gICAgICAgIHwgTm9kZSAobCwgdiwgZCwgciwgXykgLT4gbG9vcCByIChNb3JlICh2LCBkLCBsLCBlKSlcbiAgICAgIGluXG4gICAgICBsb29wIHQgRW5kXG4gICAgOztcblxuICAgIGxldCBjb21wYXJlIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IDBcbiAgICAgICAgfCBFbmQsIF8gLT4gLTFcbiAgICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgICB8IE1vcmUgKHYxLCBkMSwgcjEsIGUxKSwgTW9yZSAodjIsIGQyLCByMiwgZTIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgIHRoZW4gY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2RhdGEgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMFxuICAgICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgICBlbHNlIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgICAgICAgICAgIHRoZW4gbG9vcCBlMSBlMlxuICAgICAgICAgICAgZWxzZSBsb29wIChjb25zIHIxIGUxKSAoY29ucyByMiBlMikpXG4gICAgICBpblxuICAgICAgbG9vcCB0MSB0MlxuICAgIDs7XG5cbiAgICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgZGF0YV9lcXVhbCB0MSB0MiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgPVxuICAgICAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IHRydWVcbiAgICAgICAgfCBFbmQsIF8gfCBfLCBFbmQgLT4gZmFsc2VcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGNvbXBhcmVfa2V5IHYxIHYyID0gMFxuICAgICAgICAgICYmIGRhdGFfZXF1YWwgZDEgZDJcbiAgICAgICAgICAmJiBpZiBwaHlzX2VxdWFsIHIxIHIyIHRoZW4gbG9vcCBlMSBlMiBlbHNlIGxvb3AgKGNvbnMgcjEgZTEpIChjb25zIHIyIGUyKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDJcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmb2xkIH5pbml0IH5mID0gZnVuY3Rpb25cbiAgICAgIHwgRW5kIC0+IGluaXRcbiAgICAgIHwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICBsZXQgbmV4dCA9IGYgfmtleSB+ZGF0YSBpbml0IGluXG4gICAgICAgIGZvbGQgKGNvbnMgdHJlZSBlbnVtKSB+aW5pdDpuZXh0IH5mXG4gICAgOztcblxuICAgIGxldCBmb2xkMiBjb21wYXJlX2tleSB0MSB0MiB+aW5pdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgdDEgdDIgY3VyciA9XG4gICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgIHwgRW5kLCBFbmQgLT4gY3VyclxuICAgICAgICB8IEVuZCwgXyAtPlxuICAgICAgICAgIGZvbGQgdDIgfmluaXQ6Y3VyciB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGYgfmtleSB+ZGF0YTooYFJpZ2h0IGRhdGEpIGFjYylcbiAgICAgICAgfCBfLCBFbmQgLT5cbiAgICAgICAgICBmb2xkIHQxIH5pbml0OmN1cnIgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBmIH5rZXkgfmRhdGE6KGBMZWZ0IGRhdGEpIGFjYylcbiAgICAgICAgfCBNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSksIE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSAtPlxuICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfa2V5IGsxIGsyIGluXG4gICAgICAgICAgaWYgY29tcGFyZV9yZXN1bHQgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMSB+ZGF0YTooYEJvdGggKHYxLCB2MikpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIChjb25zIHRyZWUyIGVudW0yKSBuZXh0KVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMSB+ZGF0YTooYExlZnQgdjEpIGN1cnIgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHQyIG5leHQpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dCA9IGYgfmtleTprMiB+ZGF0YTooYFJpZ2h0IHYyKSBjdXJyIGluXG4gICAgICAgICAgICBsb29wIHQxIChjb25zIHRyZWUyIGVudW0yKSBuZXh0KVxuICAgICAgaW5cbiAgICAgIGxvb3AgdDEgdDIgaW5pdFxuICAgIDs7XG5cbiAgICBsZXQgc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsID1cbiAgICAgIGxldCBzdGVwIHN0YXRlID1cbiAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICB8IEVuZCwgRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgICB8IEVuZCwgTW9yZSAoa2V5LCBkYXRhLCB0cmVlLCBlbnVtKSAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrZXksIGBSaWdodCBkYXRhKSwgKEVuZCwgY29ucyB0cmVlIGVudW0pKVxuICAgICAgICB8IE1vcmUgKGtleSwgZGF0YSwgdHJlZSwgZW51bSksIEVuZCAtPlxuICAgICAgICAgIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrZXksIGBMZWZ0IGRhdGEpLCAoY29ucyB0cmVlIGVudW0sIEVuZCkpXG4gICAgICAgIHwgKE1vcmUgKGsxLCB2MSwgdHJlZTEsIGVudW0xKSBhcyBsZWZ0KSwgKE1vcmUgKGsyLCB2MiwgdHJlZTIsIGVudW0yKSBhcyByaWdodCkgLT5cbiAgICAgICAgICBsZXQgY29tcGFyZV9yZXN1bHQgPSBjb21wYXJlX2tleSBrMSBrMiBpblxuICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0ID0gMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IG5leHRfc3RhdGUgPVxuICAgICAgICAgICAgICBpZiBwaHlzX2VxdWFsIHRyZWUxIHRyZWUyXG4gICAgICAgICAgICAgIHRoZW4gZW51bTEsIGVudW0yXG4gICAgICAgICAgICAgIGVsc2UgY29ucyB0cmVlMSBlbnVtMSwgY29ucyB0cmVlMiBlbnVtMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGRhdGFfZXF1YWwgdjEgdjJcbiAgICAgICAgICAgIHRoZW4gU2VxdWVuY2UuU3RlcC5Ta2lwIG5leHRfc3RhdGVcbiAgICAgICAgICAgIGVsc2UgU2VxdWVuY2UuU3RlcC5ZaWVsZCAoKGsxLCBgVW5lcXVhbCAodjEsIHYyKSksIG5leHRfc3RhdGUpKVxuICAgICAgICAgIGVsc2UgaWYgY29tcGFyZV9yZXN1bHQgPCAwXG4gICAgICAgICAgdGhlbiBTZXF1ZW5jZS5TdGVwLllpZWxkICgoazEsIGBMZWZ0IHYxKSwgKGNvbnMgdHJlZTEgZW51bTEsIHJpZ2h0KSlcbiAgICAgICAgICBlbHNlIFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrMiwgYFJpZ2h0IHYyKSwgKGxlZnQsIGNvbnMgdHJlZTIgZW51bTIpKVxuICAgICAgaW5cbiAgICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0OihvZl90cmVlIHQxLCBvZl90cmVlIHQyKSB+ZjpzdGVwXG4gICAgOztcblxuICAgIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleSB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgICBsZXQgcmVtb3ZlIGFjYyBrIHYgPSBmIGFjYyAoaywgYExlZnQgdikgaW5cbiAgICAgIGxldCByZWMgbG9vcCBsZWZ0IHJpZ2h0IGFjYyA9XG4gICAgICAgIG1hdGNoIGxlZnQsIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBFbmQsIGVudW0gLT4gZm9sZCBlbnVtIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpXG4gICAgICAgIHwgZW51bSwgRW5kIC0+IGZvbGQgZW51bSB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IChNb3JlIChrMSwgdjEsIHRyZWUxLCBlbnVtMSkgYXMgbGVmdCksIChNb3JlIChrMiwgdjIsIHRyZWUyLCBlbnVtMikgYXMgcmlnaHQpIC0+XG4gICAgICAgICAgbGV0IGNvbXBhcmVfcmVzdWx0ID0gY29tcGFyZV9rZXkgazEgazIgaW5cbiAgICAgICAgICBpZiBjb21wYXJlX3Jlc3VsdCA9IDBcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCBhY2MgPSBpZiBkYXRhX2VxdWFsIHYxIHYyIHRoZW4gYWNjIGVsc2UgZiBhY2MgKGsxLCBgVW5lcXVhbCAodjEsIHYyKSkgaW5cbiAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgdHJlZTEgdHJlZTJcbiAgICAgICAgICAgIHRoZW4gbG9vcCBlbnVtMSBlbnVtMiBhY2NcbiAgICAgICAgICAgIGVsc2UgbG9vcCAoY29ucyB0cmVlMSBlbnVtMSkgKGNvbnMgdHJlZTIgZW51bTIpIGFjYylcbiAgICAgICAgICBlbHNlIGlmIGNvbXBhcmVfcmVzdWx0IDwgMFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgazEgdjEgaW5cbiAgICAgICAgICAgIGxvb3AgKGNvbnMgdHJlZTEgZW51bTEpIHJpZ2h0IGFjYylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIGsyIHYyIGluXG4gICAgICAgICAgICBsb29wIGxlZnQgKGNvbnMgdHJlZTIgZW51bTIpIGFjYylcbiAgICAgIGluXG4gICAgICBsb29wIChvZl90cmVlIHQxKSAob2ZfdHJlZSB0MikgaW5pdFxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0b19zZXF1ZW5jZV9pbmNyZWFzaW5nIGNvbXBhcmF0b3IgfmZyb21fa2V5IHQgPVxuICAgIGxldCBuZXh0IGVudW0gPVxuICAgICAgbWF0Y2ggZW51bSB3aXRoXG4gICAgICB8IEVudW0uRW5kIC0+IFNlcXVlbmNlLlN0ZXAuRG9uZVxuICAgICAgfCBFbnVtLk1vcmUgKGssIHYsIHQsIGUpIC0+IFNlcXVlbmNlLlN0ZXAuWWllbGQgKChrLCB2KSwgRW51bS5jb25zIHQgZSlcbiAgICBpblxuICAgIGxldCBpbml0ID1cbiAgICAgIG1hdGNoIGZyb21fa2V5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBFbnVtLm9mX3RyZWUgdFxuICAgICAgfCBTb21lIGtleSAtPiBFbnVtLnN0YXJ0aW5nX2F0X2luY3JlYXNpbmcgdCBrZXkgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIFNlcXVlbmNlLnVuZm9sZF9zdGVwIH5pbml0IH5mOm5leHRcbiAgOztcblxuICBsZXQgdG9fc2VxdWVuY2VfZGVjcmVhc2luZyBjb21wYXJhdG9yIH5mcm9tX2tleSB0ID1cbiAgICBsZXQgbmV4dCBlbnVtID1cbiAgICAgIG1hdGNoIGVudW0gd2l0aFxuICAgICAgfCBFbnVtLkVuZCAtPiBTZXF1ZW5jZS5TdGVwLkRvbmVcbiAgICAgIHwgRW51bS5Nb3JlIChrLCB2LCB0LCBlKSAtPiBTZXF1ZW5jZS5TdGVwLllpZWxkICgoaywgdiksIEVudW0uY29uc19yaWdodCB0IGUpXG4gICAgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBtYXRjaCBmcm9tX2tleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRW51bS5vZl90cmVlX3JpZ2h0IHRcbiAgICAgIHwgU29tZSBrZXkgLT4gRW51bS5zdGFydGluZ19hdF9kZWNyZWFzaW5nIHQga2V5IGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdCB+ZjpuZXh0XG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlXG4gICAgICAgIGNvbXBhcmF0b3JcbiAgICAgICAgPyhvcmRlciA9IGBJbmNyZWFzaW5nX2tleSlcbiAgICAgICAgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90b1xuICAgICAgICA/a2V5c19sZXNzX29yX2VxdWFsX3RvXG4gICAgICAgIHRcbiAgICA9XG4gICAgbGV0IGluY2x1c2l2ZV9ib3VuZCBzaWRlIHQgYm91bmQgPVxuICAgICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgaW5cbiAgICAgIGxldCBsLCBtYXliZSwgciA9IHNwbGl0IHQgYm91bmQgfmNvbXBhcmVfa2V5IGluXG4gICAgICBsZXQgdCA9IHNpZGUgKGwsIHIpIGluXG4gICAgICBtYXRjaCBtYXliZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdFxuICAgICAgfCBTb21lIChrZXksIGRhdGEpIC0+IHNldCcgdCBrZXkgZGF0YSB+Y29tcGFyZV9rZXlcbiAgICBpblxuICAgIG1hdGNoIG9yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nX2tleSAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBrZXlzX2xlc3Nfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIGZzdCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2luY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXk6a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvIHRcbiAgICB8IGBEZWNyZWFzaW5nX2tleSAtPlxuICAgICAgbGV0IHQgPSBPcHRpb24uZm9sZCBrZXlzX2dyZWF0ZXJfb3JfZXF1YWxfdG8gfmluaXQ6dCB+ZjooaW5jbHVzaXZlX2JvdW5kIHNuZCkgaW5cbiAgICAgIHRvX3NlcXVlbmNlX2RlY3JlYXNpbmcgY29tcGFyYXRvciB+ZnJvbV9rZXk6a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIEVudW0uY29tcGFyZSBjb21wYXJlX2tleSBjb21wYXJlX2RhdGEgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MilcbiAgOztcblxuICBsZXQgZXF1YWwgY29tcGFyZV9rZXkgY29tcGFyZV9kYXRhIHQxIHQyID1cbiAgICBFbnVtLmVxdWFsIGNvbXBhcmVfa2V5IGNvbXBhcmVfZGF0YSAoRW51bS5vZl90cmVlIHQxKSAoRW51bS5vZl90cmVlIHQyKVxuICA7O1xuXG4gIGxldCBpdGVyMiB0MSB0MiB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDJcbiAgICAgIGNvbXBhcmVfa2V5XG4gICAgICAoRW51bS5vZl90cmVlIHQxKVxuICAgICAgKEVudW0ub2ZfdHJlZSB0MilcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgKCkgLT4gZiB+a2V5IH5kYXRhKVxuICA7O1xuXG4gIGxldCBmb2xkMiB0MSB0MiB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgIEVudW0uZm9sZDIgY29tcGFyZV9rZXkgKEVudW0ub2ZfdHJlZSB0MSkgKEVudW0ub2ZfdHJlZSB0MikgfmYgfmluaXRcbiAgOztcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgPSBFbnVtLnN5bW1ldHJpY19kaWZmXG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmVfa2V5IH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICAoKiBbRW51bS5mb2xkX2RpZmZzXSBpcyBhIGNvcnJlY3QgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiwgYnV0IGlzIGNvbnNpZGVyYWJseVxuICAgICAgIHNsb3dlciwgYXMgd2UgaGF2ZSB0byBhbGxvY2F0ZSBxdWl0ZSBhIGxvdCBvZiBzdGF0ZSB0byB0cmFjayBlbnVtZXJhdGlvbiBvZiBhIHRyZWUuXG4gICAgICAgQXZvaWQgaWYgd2UgY2FuLlxuICAgICopXG4gICAgbGV0IHNsb3cgeCB5IH5pbml0ID0gRW51bS5mb2xkX3N5bW1ldHJpY19kaWZmIHggeSB+Y29tcGFyZV9rZXkgfmRhdGFfZXF1YWwgfmYgfmluaXQgaW5cbiAgICBsZXQgYWRkIGFjYyBrIHYgPSBmIGFjYyAoaywgYFJpZ2h0IHYpIGluXG4gICAgbGV0IHJlbW92ZSBhY2MgayB2ID0gZiBhY2MgKGssIGBMZWZ0IHYpIGluXG4gICAgbGV0IGRlbHRhIGFjYyBrIHYgdicgPSBpZiBkYXRhX2VxdWFsIHYgdicgdGhlbiBhY2MgZWxzZSBmIGFjYyAoaywgYFVuZXF1YWwgKHYsIHYnKSkgaW5cbiAgICAoKiBJZiB0d28gdHJlZXMgaGF2ZSB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXQgdGhlIHJvb3QgKGFuZCB0aGUgc2FtZSBrZXksIGlmIHRoZXkncmVcbiAgICAgICBbTm9kZV1zKSB3ZSBjYW4gdHJpdmlhbGx5IGRpZmYgZWFjaCBzdWJwYXJ0IGluIG9idmlvdXMgd2F5cy4gKilcbiAgICBsZXQgcmVjIGxvb3AgdCB0JyBhY2MgPVxuICAgICAgaWYgcGh5c19lcXVhbCB0IHQnXG4gICAgICB0aGVuIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHQsIHQnIHdpdGhcbiAgICAgICAgfCBFbXB0eSwgbmV3X3ZhbHMgLT5cbiAgICAgICAgICBmb2xkIG5ld192YWxzIH5pbml0OmFjYyB+ZjooZnVuIH5rZXkgfmRhdGEgYWNjIC0+IGFkZCBhY2Mga2V5IGRhdGEpXG4gICAgICAgIHwgb2xkX3ZhbHMsIEVtcHR5IC0+XG4gICAgICAgICAgZm9sZCBvbGRfdmFscyB+aW5pdDphY2MgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgYWNjIGtleSBkYXRhKVxuICAgICAgICB8IExlYWYgKGssIHYpLCBMZWFmIChrJywgdicpIC0+XG4gICAgICAgICAgKG1hdGNoIGNvbXBhcmVfa2V5IGsgaycgd2l0aFxuICAgICAgICAgICB8IHggd2hlbiB4ID0gMCAtPiBkZWx0YSBhY2MgayB2IHYnXG4gICAgICAgICAgIHwgeCB3aGVuIHggPCAwIC0+XG4gICAgICAgICAgICAgbGV0IGFjYyA9IHJlbW92ZSBhY2MgayB2IGluXG4gICAgICAgICAgICAgYWRkIGFjYyBrJyB2J1xuICAgICAgICAgICB8IF8gKCogd2hlbiB4ID4gMCAqKSAtPlxuICAgICAgICAgICAgIGxldCBhY2MgPSBhZGQgYWNjIGsnIHYnIGluXG4gICAgICAgICAgICAgcmVtb3ZlIGFjYyBrIHYpXG4gICAgICAgIHwgTm9kZSAobCwgaywgdiwgciwgXyksIE5vZGUgKGwnLCBrJywgdicsIHInLCBfKSB3aGVuIGNvbXBhcmVfa2V5IGsgaycgPSAwIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IGxvb3AgbCBsJyBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gZGVsdGEgYWNjIGsgdiB2JyBpblxuICAgICAgICAgIGxvb3AgciByJyBhY2NcbiAgICAgICAgKCogT3VyIHJvb3RzIGFyZW4ndCB0aGUgc2FtZSBrZXkuIEZhbGxiYWNrIHRvIHRoZSBzbG93IG1vZGUuIFRyZWVzIHdpdGggc21hbGxcbiAgICAgICAgICAgZGlmZnMgd2lsbCBvbmx5IGRvIHRoaXMgb24gdmVyeSBzbWFsbCBwYXJ0cyBvZiB0aGUgdHJlZSAoaG9wZWZ1bGx5IC0gaWYgdGhlXG4gICAgICAgICAgIG92ZXJhbGwgcm9vdCBpcyByZWJhbGFuY2VkLCB3ZSdsbCBlYXQgdGhlIHdob2xlIGNvc3QsIHVuZm9ydHVuYXRlbHkuKSAqKVxuICAgICAgICB8IE5vZGUgXywgTm9kZSBfIHwgTm9kZSBfLCBMZWFmIF8gfCBMZWFmIF8sIE5vZGUgXyAtPiBzbG93IHQgdCcgfmluaXQ6YWNjKVxuICAgIGluXG4gICAgbG9vcCB0MSB0MiBpbml0XG4gIDs7XG5cbiAgbGV0IHJlYyBsZW5ndGggPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gMFxuICAgIHwgTGVhZiBfIC0+IDFcbiAgICB8IE5vZGUgKGwsIF8sIF8sIHIsIF8pIC0+IGxlbmd0aCBsICsgbGVuZ3RoIHIgKyAxXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIGZvbGRcbiAgICAgIHRcbiAgICAgIH5pbml0OihoYXNoX2ZvbGRfaW50IHN0YXRlIChsZW5ndGggdCkpXG4gICAgICB+ZjooZnVuIH5rZXkgfmRhdGEgc3RhdGUgLT4gaGFzaF9mb2xkX2RhdGEgKGhhc2hfZm9sZF9rZXkgc3RhdGUga2V5KSBkYXRhKVxuICA7O1xuXG4gIGxldCBrZXlzIHQgPSBmb2xkX3JpZ2h0IH5mOihmdW4gfmtleSB+ZGF0YTpfIGxpc3QgLT4ga2V5IDo6IGxpc3QpIHQgfmluaXQ6W11cbiAgbGV0IGRhdGEgdCA9IGZvbGRfcmlnaHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgbGlzdCAtPiBkYXRhIDo6IGxpc3QpIHQgfmluaXQ6W11cblxuICBtb2R1bGUgdHlwZSBGb2xkYWJsZSA9IHNpZ1xuICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KCdiIC0+ICdhIC0+ICdiKSAtPiAnYlxuICBlbmRcblxuICBtb2R1bGUgT2ZfZm9sZGFibGUgKE0gOiBGb2xkYWJsZSkgPSBzdHJ1Y3RcbiAgICBsZXQgb2ZfZm9sZGFibGVfZm9sZCBmb2xkYWJsZSB+aW5pdCB+ZiB+Y29tcGFyZV9rZXkgPVxuICAgICAgTS5mb2xkIGZvbGRhYmxlIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biAoYWNjdW0sIGxlbmd0aCkgKGtleSwgZGF0YSkgLT5cbiAgICAgICAgbGV0IHByZXZfZGF0YSA9XG4gICAgICAgICAgbWF0Y2ggZmluZCBhY2N1bSBrZXkgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaW5pdFxuICAgICAgICAgIHwgU29tZSBwcmV2IC0+IHByZXZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGRhdGEgPSBmIHByZXZfZGF0YSBkYXRhIGluXG4gICAgICAgIHNldCBhY2N1bSB+bGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5KVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZm9sZGFibGVfcmVkdWNlIGZvbGRhYmxlIH5mIH5jb21wYXJlX2tleSA9XG4gICAgICBNLmZvbGQgZm9sZGFibGUgfmluaXQ6KGVtcHR5LCAwKSB+ZjooZnVuIChhY2N1bSwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICBsZXQgbmV3X2RhdGEgPVxuICAgICAgICAgIG1hdGNoIGZpbmQgYWNjdW0ga2V5IH5jb21wYXJlX2tleSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGRhdGFcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBmIHByZXYgZGF0YVxuICAgICAgICBpblxuICAgICAgICBzZXQgYWNjdW0gfmxlbmd0aCB+a2V5IH5kYXRhOm5ld19kYXRhIH5jb21wYXJlX2tleSlcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleSA9XG4gICAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgTS5mb2xkIGZvbGRhYmxlIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biAodCwgbGVuZ3RoKSAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICAgbGV0ICgoXywgbGVuZ3RoJykgYXMgYWNjKSA9IHNldCB+bGVuZ3RoIH5rZXkgfmRhdGEgdCB+Y29tcGFyZV9rZXkgaW5cbiAgICAgICAgICAgIGlmIGxlbmd0aCA9IGxlbmd0aCcgdGhlbiByLnJldHVybiAoYER1cGxpY2F0ZV9rZXkga2V5KSBlbHNlIGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgYE9rIG1hcClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX29yX2Vycm9yIGZvbGRhYmxlIH5jb21wYXJhdG9yID1cbiAgICAgIG1hdGNoIG9mX2ZvbGRhYmxlIGZvbGRhYmxlIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgICB8IGBPayB4IC0+IFJlc3VsdC5PayB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBPcl9lcnJvci5lcnJvclxuICAgICAgICAgIChcIk1hcC5vZl9cIiBeIE0ubmFtZSBeIFwiX29yX2Vycm9yOiBkdXBsaWNhdGUga2V5XCIpXG4gICAgICAgICAga2V5XG4gICAgICAgICAgY29tcGFyYXRvci5zZXhwX29mX3RcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ZvbGRhYmxlX2V4biBmb2xkYWJsZSB+Y29tcGFyYXRvciA9XG4gICAgICBtYXRjaCBvZl9mb2xkYWJsZSBmb2xkYWJsZSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgICAgfCBgT2sgeCAtPiB4XG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgICBFcnJvci5jcmVhdGUgKFwiTWFwLm9mX1wiIF4gTS5uYW1lIF4gXCJfZXhuOiBkdXBsaWNhdGUga2V5XCIpIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgICB8PiBFcnJvci5yYWlzZVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBPZl9hbGlzdCA9IE9mX2ZvbGRhYmxlIChzdHJ1Y3RcbiAgICAgIGxldCBuYW1lID0gXCJhbGlzdFwiXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGxpc3RcblxuICAgICAgbGV0IGZvbGQgPSBMaXN0LmZvbGRcbiAgICBlbmQpXG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9mb2xkXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgPSBPZl9hbGlzdC5vZl9mb2xkYWJsZV9yZWR1Y2VcbiAgbGV0IG9mX2FsaXN0ID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID0gT2ZfYWxpc3Qub2ZfZm9sZGFibGVfb3JfZXJyb3JcbiAgbGV0IG9mX2FsaXN0X2V4biA9IE9mX2FsaXN0Lm9mX2ZvbGRhYmxlX2V4blxuXG4gICgqIFJldmVyc2UgdGhlIGlucHV0LCB0aGVuIGZvbGQgZnJvbSBsZWZ0IHRvIHJpZ2h0LiBUaGUgcmVzdWx0aW5nIG1hcCB1c2VzIHRoZSBmaXJzdFxuICAgICBpbnN0YW5jZSBvZiBlYWNoIGtleSBmcm9tIHRoZSBpbnB1dCBsaXN0LiBUaGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgZWxlbWVudHMgaW4gZWFjaFxuICAgICBvdXRwdXQgbGlzdCBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgaW5wdXQgbGlzdC4gKilcbiAgbGV0IG9mX2ZvbGRhYmxlX211bHRpIGZvbGRhYmxlIH5mb2xkIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGFsaXN0ID0gZm9sZCBmb2xkYWJsZSB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpIGluXG4gICAgb2ZfYWxpc3RfZm9sZCBhbGlzdCB+aW5pdDpbXSB+ZjooZnVuIGwgeCAtPiB4IDo6IGwpIH5jb21wYXJlX2tleVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXkgPVxuICAgIG9mX2ZvbGRhYmxlX211bHRpIGFsaXN0IH5mb2xkOkxpc3QuZm9sZCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBtb2R1bGUgT2Zfc2VxdWVuY2UgPSBPZl9mb2xkYWJsZSAoc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IFwic2VxdWVuY2VcIlxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBTZXF1ZW5jZS50XG5cbiAgICAgIGxldCBmb2xkID0gU2VxdWVuY2UuZm9sZFxuICAgIGVuZClcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX2ZvbGRcbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSA9IE9mX3NlcXVlbmNlLm9mX2ZvbGRhYmxlX3JlZHVjZVxuICBsZXQgb2Zfc2VxdWVuY2UgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgPSBPZl9zZXF1ZW5jZS5vZl9mb2xkYWJsZV9vcl9lcnJvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuID0gT2Zfc2VxdWVuY2Uub2ZfZm9sZGFibGVfZXhuXG5cbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHNlcXVlbmNlIH5jb21wYXJlX2tleSA9XG4gICAgb2ZfZm9sZGFibGVfbXVsdGkgc2VxdWVuY2UgfmZvbGQ6U2VxdWVuY2UuZm9sZCB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICAgIGl0ZXIgdCB+ZjooZnVuIGRhdGEgLT4gaWYgbm90IChmIGRhdGEpIHRoZW4gci5yZXR1cm4gZmFsc2UpO1xuICAgICAgdHJ1ZSlcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBub3QgKGYgfmtleSB+ZGF0YSkgdGhlbiByLnJldHVybiBmYWxzZSk7XG4gICAgICB0cnVlKVxuICA7O1xuXG4gIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyIHQgfmY6KGZ1biBkYXRhIC0+IGlmIGYgZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgICAgZmFsc2UpXG4gIDs7XG5cbiAgbGV0IGV4aXN0c2kgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiByLnJldHVybiB0cnVlKTtcbiAgICAgIGZhbHNlKVxuICA7O1xuXG4gIGxldCBjb3VudCB0IH5mID1cbiAgICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbiAgOztcblxuICBsZXQgY291bnRpIHQgfmYgPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gaWYgZiB+a2V5IH5kYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbiAgOztcblxuICBsZXQgdG9fYWxpc3QgPyhrZXlfb3JkZXIgPSBgSW5jcmVhc2luZykgdCA9XG4gICAgbWF0Y2gga2V5X29yZGVyIHdpdGhcbiAgICB8IGBJbmNyZWFzaW5nIC0+IGZvbGRfcmlnaHQgdCB+aW5pdDpbXSB+ZjooZnVuIH5rZXkgfmRhdGEgeCAtPiAoa2V5LCBkYXRhKSA6OiB4KVxuICAgIHwgYERlY3JlYXNpbmcgLT4gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSB4IC0+IChrZXksIGRhdGEpIDo6IHgpXG4gIDs7XG5cbiAgbGV0IG1lcmdlIHQxIHQyIH5mIH5jb21wYXJlX2tleSA9XG4gICAgbGV0IGVsdHMgPSBVbmlmb3JtX2FycmF5LnVuc2FmZV9jcmVhdGVfdW5pbml0aWFsaXplZCB+bGVuOihsZW5ndGggdDEgKyBsZW5ndGggdDIpIGluXG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGl0ZXIyIHQxIHQyIH5jb21wYXJlX2tleSB+ZjooZnVuIH5rZXkgfmRhdGE6dmFsdWVzIC0+XG4gICAgICBtYXRjaCBmIH5rZXkgdmFsdWVzIHdpdGhcbiAgICAgIHwgU29tZSB2YWx1ZSAtPlxuICAgICAgICBVbmlmb3JtX2FycmF5LnNldCBlbHRzICFpIChrZXksIHZhbHVlKTtcbiAgICAgICAgaW5jciBpXG4gICAgICB8IE5vbmUgLT4gKCkpO1xuICAgIGxldCBsZW4gPSAhaSBpblxuICAgIGxldCBnZXQgaSA9IFVuaWZvcm1fYXJyYXkuZ2V0IGVsdHMgaSBpblxuICAgIGxldCB0cmVlID0gb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZjpnZXQgaW5cbiAgICB0cmVlLCBsZW5cbiAgOztcblxuICBsZXQgbWVyZ2Vfc2tld2VkID1cbiAgICBsZXQgbWVyZ2VfbGFyZ2VfZmlyc3QgbGVuZ3RoX2xhcmdlIHRfbGFyZ2UgdF9zbWFsbCB+Y2FsbCB+Y29tYmluZSB+Y29tcGFyZV9rZXkgPVxuICAgICAgZm9sZCB0X3NtYWxsIH5pbml0Oih0X2xhcmdlLCBsZW5ndGhfbGFyZ2UpIH5mOihmdW4gfmtleSB+ZGF0YTpkYXRhJyAodCwgbGVuZ3RoKSAtPlxuICAgICAgICB1cGRhdGUgdCBrZXkgfmxlbmd0aCB+Y29tcGFyZV9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGRhdGEnXG4gICAgICAgICAgfCBTb21lIGRhdGEgLT4gY2FsbCBjb21iaW5lIH5rZXkgZGF0YSBkYXRhJykpXG4gICAgaW5cbiAgICBsZXQgY2FsbCBmIH5rZXkgeCB5ID0gZiB+a2V5IHggeSBpblxuICAgIGxldCBzd2FwIGYgfmtleSB4IHkgPSBmIH5rZXkgeSB4IGluXG4gICAgZnVuIHQxIHQyIH5sZW5ndGgxIH5sZW5ndGgyIH5jb21iaW5lIH5jb21wYXJlX2tleSAtPlxuICAgICAgaWYgbGVuZ3RoMiA8PSBsZW5ndGgxXG4gICAgICB0aGVuIG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aDEgdDEgdDIgfmNhbGwgfmNvbWJpbmUgfmNvbXBhcmVfa2V5XG4gICAgICBlbHNlIG1lcmdlX2xhcmdlX2ZpcnN0IGxlbmd0aDIgdDIgdDEgfmNhbGw6c3dhcCB+Y29tYmluZSB+Y29tcGFyZV9rZXlcbiAgOztcblxuICBtb2R1bGUgQ2xvc2VzdF9rZXlfaW1wbCA9IHN0cnVjdFxuICAgICgqIFttYXJrZXJdIGFuZCBbcmVwYWNrYWdlXSBhbGxvdyB1cyB0byBjcmVhdGUgXCJsb2dpY2FsXCIgb3B0aW9ucyB3aXRob3V0IGFjdHVhbGx5XG4gICAgICAgYWxsb2NhdGluZyBhbnkgb3B0aW9ucy4gUGFzc2luZyBbRm91bmQga2V5IHZhbHVlXSB0byBhIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICBwYXNzaW5nIFtTb21lIChrZXksIHZhbHVlKV07IHBhc3NpbmcgW01pc3NpbmcgKCkgKCldIGlzIGVxdWl2YWxlbnQgdG8gcGFzc2luZ1xuICAgICAgIFtOb25lXS4gKilcbiAgICB0eXBlICgnaywgJ3YsICdrX29wdCwgJ3Zfb3B0KSBtYXJrZXIgPVxuICAgICAgfCBNaXNzaW5nIDogKCdrLCAndiwgdW5pdCwgdW5pdCkgbWFya2VyXG4gICAgICB8IEZvdW5kIDogKCdrLCAndiwgJ2ssICd2KSBtYXJrZXJcblxuICAgIGxldCByZXBhY2thZ2VcbiAgICAgICAgICAodHlwZSBrIHYga19vcHQgdl9vcHQpXG4gICAgICAgICAgKG1hcmtlciA6IChrLCB2LCBrX29wdCwgdl9vcHQpIG1hcmtlcilcbiAgICAgICAgICAoayA6IGtfb3B0KVxuICAgICAgICAgICh2IDogdl9vcHQpXG4gICAgICA6IChrICogdikgb3B0aW9uXG4gICAgICA9XG4gICAgICBtYXRjaCBtYXJrZXIgd2l0aFxuICAgICAgfCBNaXNzaW5nIC0+IE5vbmVcbiAgICAgIHwgRm91bmQgLT4gU29tZSAoaywgdilcbiAgICA7O1xuXG4gICAgKCogVGhlIHR5cGUgc2lnbmF0dXJlIGlzIGV4cGxpY2l0IGhlcmUgdG8gYWxsb3cgcG9seW1vcnBoaWMgcmVjdXJzaW9uLiAqKVxuICAgIGxldCByZWMgbG9vcCA6XG4gICAgICAnayAndiAna19vcHQgJ3Zfb3B0LlxuICAgICAgKCdrLCAndikgdHJlZVxuICAgICAgLT4gWyBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gfCBgTGVzc19vcl9lcXVhbF90byB8IGBMZXNzX3RoYW4gXVxuICAgICAgLT4gJ2tcbiAgICAgIC0+IGNvbXBhcmVfa2V5OignayAtPiAnayAtPiBpbnQpXG4gICAgICAtPiAoJ2ssICd2LCAna19vcHQsICd2X29wdCkgbWFya2VyXG4gICAgICAtPiAna19vcHRcbiAgICAgIC0+ICd2X29wdFxuICAgICAgLT4gKCdrICogJ3YpIG9wdGlvblxuICAgICAgPVxuICAgICAgZnVuIHQgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgLT5cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWVcbiAgICAgICAgfCBMZWFmIChrJywgdicpIC0+XG4gICAgICAgICAgbGV0IGMgPSBjb21wYXJlX2tleSBrJyBrIGluXG4gICAgICAgICAgaWYgbWF0Y2ggZGlyIHdpdGhcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfb3JfZXF1YWxfdG8gLT4gYyA+PSAwXG4gICAgICAgICAgICB8IGBHcmVhdGVyX3RoYW4gLT4gYyA+IDBcbiAgICAgICAgICAgIHwgYExlc3Nfb3JfZXF1YWxfdG8gLT4gYyA8PSAwXG4gICAgICAgICAgICB8IGBMZXNzX3RoYW4gLT4gYyA8IDBcbiAgICAgICAgICB0aGVuIFNvbWUgKGsnLCB2JylcbiAgICAgICAgICBlbHNlIHJlcGFja2FnZSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgIHwgTm9kZSAobCwgaycsIHYnLCByLCBfKSAtPlxuICAgICAgICAgIGxldCBjID0gY29tcGFyZV9rZXkgaycgayBpblxuICAgICAgICAgIGlmIGMgPSAwXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBUaGlzIGlzIGEgYmFzZSBjYXNlIChubyByZWN1cnNpdmUgY2FsbCkuICopXG4gICAgICAgICAgICBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBMZXNzX29yX2VxdWFsX3RvIC0+IFNvbWUgKGsnLCB2JylcbiAgICAgICAgICAgIHwgYEdyZWF0ZXJfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBpc19lbXB0eSByIHRoZW4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgZWxzZSBtaW5fZWx0IHJcbiAgICAgICAgICAgIHwgYExlc3NfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBpc19lbXB0eSBsIHRoZW4gcmVwYWNrYWdlIGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUgZWxzZSBtYXhfZWx0IGwpXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBXZSBhcmUgZ3VhcmFudGVlZCBoZXJlIHRoYXQgaycgPD4gay4gKilcbiAgICAgICAgICAgICgqIFRoaXMgaXMgdGhlIG9ubHkgcmVjdXJzaXZlIGNhc2UuICopXG4gICAgICAgICAgICBtYXRjaCBkaXIgd2l0aFxuICAgICAgICAgICAgfCBgR3JlYXRlcl9vcl9lcXVhbF90byB8IGBHcmVhdGVyX3RoYW4gLT5cbiAgICAgICAgICAgICAgaWYgYyA+IDBcbiAgICAgICAgICAgICAgdGhlbiBsb29wIGwgZGlyIGsgfmNvbXBhcmVfa2V5IEZvdW5kIGsnIHYnXG4gICAgICAgICAgICAgIGVsc2UgbG9vcCByIGRpciBrIH5jb21wYXJlX2tleSBmb3VuZF9tYXJrZXIgZm91bmRfa2V5IGZvdW5kX3ZhbHVlXG4gICAgICAgICAgICB8IGBMZXNzX29yX2VxdWFsX3RvIHwgYExlc3NfdGhhbiAtPlxuICAgICAgICAgICAgICBpZiBjIDwgMFxuICAgICAgICAgICAgICB0aGVuIGxvb3AgciBkaXIgayB+Y29tcGFyZV9rZXkgRm91bmQgaycgdidcbiAgICAgICAgICAgICAgZWxzZSBsb29wIGwgZGlyIGsgfmNvbXBhcmVfa2V5IGZvdW5kX21hcmtlciBmb3VuZF9rZXkgZm91bmRfdmFsdWUpXG4gICAgOztcblxuICAgIGxldCBjbG9zZXN0X2tleSB0IGRpciBrIH5jb21wYXJlX2tleSA9IGxvb3AgdCBkaXIgayB+Y29tcGFyZV9rZXkgTWlzc2luZyAoKSAoKVxuICBlbmRcblxuICBsZXQgY2xvc2VzdF9rZXkgPSBDbG9zZXN0X2tleV9pbXBsLmNsb3Nlc3Rfa2V5XG5cbiAgbGV0IHJlYyByYW5rIHQgayB+Y29tcGFyZV9rZXkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaycsIF8pIC0+IGlmIGNvbXBhcmVfa2V5IGsnIGsgPSAwIHRoZW4gU29tZSAwIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaycsIF8sIHIsIF8pIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmVfa2V5IGsnIGsgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIFNvbWUgKGxlbmd0aCBsKVxuICAgICAgZWxzZSBpZiBjID4gMFxuICAgICAgdGhlbiByYW5rIGwgayB+Y29tcGFyZV9rZXlcbiAgICAgIGVsc2UgT3B0aW9uLm1hcCAocmFuayByIGsgfmNvbXBhcmVfa2V5KSB+ZjooZnVuIHJhbmsgLT4gcmFuayArIDEgKyBsZW5ndGggbClcbiAgOztcblxuICAoKiB0aGlzIGNvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIFtTZXF1ZW5jZV0gaW50ZXJmYWNlIGJ1dCB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uXG4gICAgIGFsbG9jYXRlcyBvbmx5IDIgd29yZHMgYW5kIGRvZXNuJ3QgcmVxdWlyZSB3cml0ZS1iYXJyaWVyICopXG4gIGxldCByZWMgbnRoJyBudW1fdG9fc2VhcmNoID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+XG4gICAgICBpZiAhbnVtX3RvX3NlYXJjaCA9IDBcbiAgICAgIHRoZW4gU29tZSAoaywgdilcbiAgICAgIGVsc2UgKFxuICAgICAgICBkZWNyIG51bV90b19zZWFyY2g7XG4gICAgICAgIE5vbmUpXG4gICAgfCBOb2RlIChsLCBrLCB2LCByLCBfKSAtPlxuICAgICAgKG1hdGNoIG50aCcgbnVtX3RvX3NlYXJjaCBsIHdpdGhcbiAgICAgICB8IFNvbWUgXyBhcyBzb21lIC0+IHNvbWVcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGlmICFudW1fdG9fc2VhcmNoID0gMFxuICAgICAgICAgdGhlbiBTb21lIChrLCB2KVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGRlY3IgbnVtX3RvX3NlYXJjaDtcbiAgICAgICAgICAgbnRoJyBudW1fdG9fc2VhcmNoIHIpKVxuICA7O1xuXG4gIGxldCBudGggdCBuID0gbnRoJyAocmVmIG4pIHRcblxuXG4gIGxldCByZWMgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgIHwgTGVhZiAoaywgdikgLT4gaWYgZiB+a2V5OmsgfmRhdGE6diB0aGVuIFNvbWUgKGssIHYpIGVsc2UgTm9uZVxuICAgIHwgTm9kZSAobCwgaywgdiwgciwgXykgLT5cbiAgICAgIGlmIGYgfmtleTprIH5kYXRhOnZcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgbCB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIChrLCB2KVxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyByIH5mXG4gIDs7XG5cbiAgbGV0IHJlYyBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIGYgfmtleTprIH5kYXRhOnYgdGhlbiBTb21lIChrLCB2KSBlbHNlIE5vbmVcbiAgICB8IE5vZGUgKGwsIGssIHYsIHIsIF8pIC0+XG4gICAgICBpZiBmIH5rZXk6ayB+ZGF0YTp2XG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgciB+ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBTb21lIChrLCB2KVxuICAgICAgICB8IFNvbWUgXyBhcyB4IC0+IHgpXG4gICAgICBlbHNlIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIGwgfmZcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIC0+XG4gICAgICBmaW5kX2xhc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA8IDApXG4gICAgfCBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfbGFzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2IDw9IDApXG4gICAgfCBgRmlyc3RfZXF1YWxfdG8gLT5cbiAgICAgIChtYXRjaCBmaW5kX2ZpcnN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPj0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBMYXN0X2VxdWFsX3RvIC0+XG4gICAgICAobWF0Y2ggZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPD0gMCkgd2l0aFxuICAgICAgIHwgU29tZSAoa2V5LCBkYXRhKSBhcyBwYWlyIHdoZW4gY29tcGFyZSB+a2V5IH5kYXRhIHYgPSAwIC0+IHBhaXJcbiAgICAgICB8IE5vbmUgfCBTb21lIF8gLT4gTm9uZSlcbiAgICB8IGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gLT5cbiAgICAgIGZpbmRfZmlyc3Rfc2F0aXNmeWluZyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBjb21wYXJlIH5rZXkgfmRhdGEgdiA+PSAwKVxuICAgIHwgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiAtPlxuICAgICAgZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGNvbXBhcmUgfmtleSB+ZGF0YSB2ID4gMClcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGxldCBpc19sZWZ0IH5rZXkgfmRhdGEgPVxuICAgICAgbWF0Y2ggc2VnbWVudF9vZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgIHwgYExlZnQgLT4gdHJ1ZVxuICAgICAgfCBgUmlnaHQgLT4gZmFsc2VcbiAgICBpblxuICAgIGxldCBpc19yaWdodCB+a2V5IH5kYXRhID0gbm90IChpc19sZWZ0IH5rZXkgfmRhdGEpIGluXG4gICAgbWF0Y2ggaG93IHdpdGhcbiAgICB8IGBMYXN0X29uX2xlZnQgLT4gZmluZF9sYXN0X3NhdGlzZnlpbmcgdCB+Zjppc19sZWZ0XG4gICAgfCBgRmlyc3Rfb25fcmlnaHQgLT4gZmluZF9maXJzdF9zYXRpc2Z5aW5nIHQgfmY6aXNfcmlnaHRcbiAgOztcblxuICAoKiBbYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRdIGZpbmRzIHRoZSBrZXkgaW4gW3RdIHdoaWNoIHNhdGlzZmllcyBbbWF5YmVfYm91bmRdXG4gICAgIGFuZCB0aGUgcmVsZXZhbnQgb25lIG9mIFtpZl9leGNsdXNpdmVdIG9yIFtpZl9pbmNsdXNpdmVdLCBhcyBqdWRnZWQgYnkgW2NvbXBhcmVdLiAqKVxuICBsZXQgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSB+aWZfZXhjbHVzaXZlIH5pZl9pbmNsdXNpdmUgPVxuICAgIGxldCBmaW5kX2JvdW5kIHQgaG93IGJvdW5kIH5jb21wYXJlIDogXyBNYXliZV9ib3VuZC50IG9wdGlvbiA9XG4gICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIHQgaG93IGJvdW5kIH5jb21wYXJlIHdpdGhcbiAgICAgIHwgU29tZSAoYm91bmQsIF8pIC0+IFNvbWUgKEluY2wgYm91bmQpXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggKG1heWJlX2JvdW5kIDogXyBNYXliZV9ib3VuZC50KSB3aXRoXG4gICAgfCBFeGNsIGJvdW5kIC0+IGZpbmRfYm91bmQgdCBpZl9leGNsdXNpdmUgYm91bmQgfmNvbXBhcmVcbiAgICB8IEluY2wgYm91bmQgLT4gZmluZF9ib3VuZCB0IGlmX2luY2x1c2l2ZSBib3VuZCB+Y29tcGFyZVxuICAgIHwgVW5ib3VuZGVkIC0+IFNvbWUgVW5ib3VuZGVkXG4gIDs7XG5cbiAgKCogW2JpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kc10gZmluZHMgdGhlIChub3QgbmVjZXNzYXJpbHkgZGlzdGluY3QpIGtleXMgaW4gW3RdXG4gICAgIHdoaWNoIG1vc3QgY2xvc2VseSBhcHByb2FjaCAoYnV0IGRvIG5vdCBjcm9zcykgW2xvd2VyX2JvdW5kXSBhbmQgW3VwcGVyX2JvdW5kXSwgYXNcbiAgICAganVkZ2VkIGJ5IFtjb21wYXJlXS4gSXQgcmV0dXJucyBbTm9uZV0gaWYgbm8ga2V5cyBpbiBbdF0gYXJlIHdpdGhpbiB0aGF0IHJhbmdlLiAqKVxuICBsZXQgYmluYXJ5X3NlYXJjaF90d29fc2lkZWRfYm91bmRzIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbGV0IGZpbmRfbG93ZXJfYm91bmQgdCBtYXliZV9ib3VuZCB+Y29tcGFyZSA9XG4gICAgICBiaW5hcnlfc2VhcmNoX29uZV9zaWRlZF9ib3VuZFxuICAgICAgICB0XG4gICAgICAgIG1heWJlX2JvdW5kXG4gICAgICAgIH5jb21wYXJlXG4gICAgICAgIH5pZl9leGNsdXNpdmU6YEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhblxuICAgICAgICB+aWZfaW5jbHVzaXZlOmBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG9cbiAgICBpblxuICAgIGxldCBmaW5kX3VwcGVyX2JvdW5kIHQgbWF5YmVfYm91bmQgfmNvbXBhcmUgPVxuICAgICAgYmluYXJ5X3NlYXJjaF9vbmVfc2lkZWRfYm91bmRcbiAgICAgICAgdFxuICAgICAgICBtYXliZV9ib3VuZFxuICAgICAgICB+Y29tcGFyZVxuICAgICAgICB+aWZfZXhjbHVzaXZlOmBMYXN0X3N0cmljdGx5X2xlc3NfdGhhblxuICAgICAgICB+aWZfaW5jbHVzaXZlOmBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90b1xuICAgIGluXG4gICAgbWF0Y2ggZmluZF9sb3dlcl9ib3VuZCB0IGxvd2VyX2JvdW5kIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBsb3dlcl9ib3VuZCAtPlxuICAgICAgKG1hdGNoIGZpbmRfdXBwZXJfYm91bmQgdCB1cHBlcl9ib3VuZCB+Y29tcGFyZSB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgdXBwZXJfYm91bmQgLT4gU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSlcbiAgOztcblxuICB0eXBlICgnaywgJ3YpIGFjYyA9XG4gICAgeyBtdXRhYmxlIGJhZF9rZXkgOiAnayBvcHRpb25cbiAgICA7IG11dGFibGUgbWFwX2xlbmd0aCA6ICgnaywgJ3YpIHQgKiBpbnRcbiAgICB9XG5cbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXkgPVxuICAgIGxldCBhY2MgPSB7IGJhZF9rZXkgPSBOb25lOyBtYXBfbGVuZ3RoID0gZW1wdHksIDAgfSBpblxuICAgIGl0ZXJpIH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgbGV0IG1hcCwgbGVuZ3RoID0gYWNjLm1hcF9sZW5ndGggaW5cbiAgICAgIGxldCAoKF8sIGxlbmd0aCcpIGFzIHBhaXIpID0gc2V0IH5sZW5ndGggfmtleSB+ZGF0YSBtYXAgfmNvbXBhcmVfa2V5IGluXG4gICAgICBpZiBsZW5ndGggPSBsZW5ndGgnICYmIE9wdGlvbi5pc19ub25lIGFjYy5iYWRfa2V5XG4gICAgICB0aGVuIGFjYy5iYWRfa2V5IDwtIFNvbWUga2V5XG4gICAgICBlbHNlIGFjYy5tYXBfbGVuZ3RoIDwtIHBhaXIpO1xuICAgIG1hdGNoIGFjYy5iYWRfa2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gYE9rIGFjYy5tYXBfbGVuZ3RoXG4gICAgfCBTb21lIGtleSAtPiBgRHVwbGljYXRlX2tleSBrZXlcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSB+KGNvbXBhcmF0b3IgOiBfIENvbXBhcmF0b3IudCkgPVxuICAgIG1hdGNoIG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5jb21wYXJlIHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgRXJyb3IuY3JlYXRlIFwiTWFwLm9mX2l0ZXJpX2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBjb21wYXJhdG9yLnNleHBfb2ZfdFxuICAgICAgfD4gRXJyb3IucmFpc2VcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwIHNleHAgfihjb21wYXJhdG9yIDogXyBDb21wYXJhdG9yLnQpID1cbiAgICBsZXQgYWxpc3QgPSBsaXN0X29mX3NleHAgKHBhaXJfb2Zfc2V4cCBrZXlfb2Zfc2V4cCB2YWx1ZV9vZl9zZXhwKSBzZXhwIGluXG4gICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgbWF0Y2ggb2ZfYWxpc3QgYWxpc3QgfmNvbXBhcmVfa2V5IHdpdGhcbiAgICB8IGBPayB2IC0+IHZcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAgICgqIGZpbmQgdGhlIHNleHAgb2YgYSBkdXBsaWNhdGUga2V5LCBzbyB0aGUgZXJyb3IgaXMgbmFycm93ZWQgdG8gYSBrZXkgYW5kIG5vdFxuICAgICAgICAgdGhlIHdob2xlIG1hcCAqKVxuICAgICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICAgIGxldCBmb3VuZF9maXJzdF9rID0gcmVmIGZhbHNlIGluXG4gICAgICBMaXN0Lml0ZXIyX29rIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgICAgaWYgY29tcGFyZV9rZXkgayBrMiA9IDBcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmICFmb3VuZF9maXJzdF9rXG4gICAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiTWFwLnRfb2Zfc2V4cF9kaXJlY3Q6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgICAgZWxzZSBmb3VuZF9maXJzdF9rIDo9IHRydWUpO1xuICAgICAgYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX3ZhbHVlIHQgPVxuICAgIGxldCBmIH5rZXkgfmRhdGEgYWNjID0gU2V4cC5MaXN0IFsgc2V4cF9vZl9rZXkga2V5OyBzZXhwX29mX3ZhbHVlIGRhdGEgXSA6OiBhY2MgaW5cbiAgICBTZXhwLkxpc3QgKGZvbGRfcmlnaHQgfmYgdCB+aW5pdDpbXSlcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCB+Y29tcGFyZV9rZXkgfnNleHBfb2Zfa2V5ID1cbiAgICBsZXQgb2tzLCAoZXJyb3JfdHJlZSwgXykgPSBwYXJ0aXRpb25fbWFwIHQgfmNvbXBhcmVfa2V5IH5mOlJlc3VsdC50b19laXRoZXIgaW5cbiAgICBpZiBpc19lbXB0eSBlcnJvcl90cmVlXG4gICAgdGhlbiBPayBva3NcbiAgICBlbHNlIE9yX2Vycm9yLmVycm9yX3MgKHNleHBfb2ZfdCBzZXhwX29mX2tleSBFcnJvci5zZXhwX29mX3QgZXJyb3JfdHJlZSlcbiAgOztcblxuICBsZXQgbWFwX2tleXNcbiAgICAgICAgdDFcbiAgICAgICAgfmZcbiAgICAgICAgfmNvbXBhcmF0b3I6KHsgY29tcGFyZSA9IGNvbXBhcmVfa2V5OyBzZXhwX29mX3QgPSBzZXhwX29mX2tleSB9IDogXyBDb21wYXJhdG9yLnQpXG4gICAgPVxuICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgYE9rXG4gICAgICAgIChmb2xkIHQxIH5pbml0OihlbXB0eSwgMCkgfmY6KGZ1biB+a2V5IH5kYXRhICh0MiwgbGVuZ3RoKSAtPlxuICAgICAgICAgICBsZXQga2V5ID0gZiBrZXkgaW5cbiAgICAgICAgICAgdHJ5IGFkZF9leG5faW50ZXJuYWwgdDIgfmxlbmd0aCB+a2V5IH5kYXRhIH5jb21wYXJlX2tleSB+c2V4cF9vZl9rZXkgd2l0aFxuICAgICAgICAgICB8IER1cGxpY2F0ZSAtPiByZXR1cm4gKGBEdXBsaWNhdGVfa2V5IGtleSkpKSlcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgfmNvbXBhcmF0b3IgPVxuICAgIG1hdGNoIG1hcF9rZXlzIHQgfmYgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIHJlc3VsdCAtPiByZXN1bHRcbiAgICB8IGBEdXBsaWNhdGVfa2V5IGtleSAtPlxuICAgICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdCBpblxuICAgICAgRXJyb3IucmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlIFwiTWFwLm1hcF9rZXlzX2V4bjogZHVwbGljYXRlIGtleVwiIFsgXCJrZXlcIiwga2V5IHw+IHNleHBfb2Zfa2V5IF0pXG4gIDs7XG5lbmRcblxudHlwZSAoJ2ssICd2LCAnY29tcGFyYXRvcikgdCA9XG4gIHsgKCogW2NvbXBhcmF0b3JdIGlzIHRoZSBmaXJzdCBmaWVsZCBzbyB0aGF0IHBvbHltb3JwaGljIGVxdWFsaXR5IGZhaWxzIG9uIGEgbWFwIGR1ZVxuICAgICAgIHRvIHRoZSBmdW5jdGlvbmFsIHZhbHVlIGluIHRoZSBjb21wYXJhdG9yLlxuICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBwb2x5bW9ycGhpYyBbY29tcGFyZV06IHRoYXQgc3RpbGwgcHJvZHVjZXNcbiAgICAgICBub25zZW5zZS4gKilcbiAgICBjb21wYXJhdG9yIDogKCdrLCAnY29tcGFyYXRvcikgQ29tcGFyYXRvci50XG4gIDsgdHJlZSA6ICgnaywgJ3YpIFRyZWUwLnRcbiAgOyBsZW5ndGggOiBpbnRcbiAgfVxuXG50eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0cmVlID0gKCdrLCAndikgVHJlZTAudFxuXG5sZXQgY29tcGFyZV9rZXkgdCA9IHQuY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuXG5sZXQgbGlrZSB7IHRyZWUgPSBfOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gKHRyZWUsIGxlbmd0aCkgPVxuICB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgbGlrZTIgeCAoeSwgeikgPSBsaWtlIHggeSwgbGlrZSB4IHpcblxubGV0IGxpa2VfbWF5YmVfbm9fb3AgKHsgdHJlZSA9IG9sZF90cmVlOyBsZW5ndGggPSBfOyBjb21wYXJhdG9yIH0gYXMgb2xkX3QpICh0cmVlLCBsZW5ndGgpXG4gID1cbiAgaWYgcGh5c19lcXVhbCBvbGRfdHJlZSB0cmVlIHRoZW4gb2xkX3QgZWxzZSB7IHRyZWU7IGxlbmd0aDsgY29tcGFyYXRvciB9XG47O1xuXG5sZXQgd2l0aF9zYW1lX2xlbmd0aCB7IHRyZWUgPSBfOyBjb21wYXJhdG9yOyBsZW5ndGggfSB0cmVlID0geyB0cmVlOyBjb21wYXJhdG9yOyBsZW5ndGggfVxubGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gVHJlZTAubGVuZ3RoIHRyZWUgfVxuXG4oKiBFeHBvc2luZyB0aGlzIGZ1bmN0aW9uIHdvdWxkIG1ha2UgaXQgdmVyeSBlYXN5IGZvciB0aGUgaW52YXJpYW50c1xuICAgb2YgdGhpcyBtb2R1bGUgdG8gYmUgYnJva2VuLiAqKVxubGV0IG9mX3RyZWVfdW5zYWZlIH5jb21wYXJhdG9yIH5sZW5ndGggdHJlZSA9IHsgdHJlZTsgY29tcGFyYXRvcjsgbGVuZ3RoIH1cblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgY29tcGFyYXRvciB0ID0gdC5jb21wYXJhdG9yXG4gIGxldCB0b190cmVlIHQgPSB0LnRyZWVcblxuICBsZXQgaW52YXJpYW50cyB0ID1cbiAgICBUcmVlMC5pbnZhcmlhbnRzIHQudHJlZSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpICYmIFRyZWUwLmxlbmd0aCB0LnRyZWUgPSB0Lmxlbmd0aFxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdC50cmVlXG4gIGxldCBsZW5ndGggdCA9IHQubGVuZ3RoXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2UgdCAoVHJlZTAuc2V0IHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfZXhuXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5sZW5ndGg6dC5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgPVxuICAgIGxpa2VcbiAgICAgIHRcbiAgICAgIChUcmVlMC5hZGRfZXhuX2ludGVybmFsXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5sZW5ndGg6dC5sZW5ndGhcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gICAgICAgICB+c2V4cF9vZl9rZXk6dC5jb21wYXJhdG9yLnNleHBfb2ZfdClcbiAgOztcblxuICBsZXQgYWRkIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkX2V4bl9pbnRlcm5hbCB0IH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgcmVzdWx0IC0+IGBPayByZXN1bHRcbiAgICB8IGV4Y2VwdGlvbiBEdXBsaWNhdGUgLT4gYER1cGxpY2F0ZVxuICA7O1xuXG4gIGxldCBhZGRfbXVsdGkgdCB+a2V5IH5kYXRhID1cbiAgICBsaWtlXG4gICAgICB0XG4gICAgICAoVHJlZTAuYWRkX211bHRpIHQudHJlZSB+bGVuZ3RoOnQubGVuZ3RoIH5rZXkgfmRhdGEgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcmVtb3ZlX211bHRpIHQga2V5ID1cbiAgICBsaWtlIHQgKFRyZWUwLnJlbW92ZV9tdWx0aSB0LnRyZWUgfmxlbmd0aDp0Lmxlbmd0aCBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgZmluZF9tdWx0aSB0IGtleSA9IFRyZWUwLmZpbmRfbXVsdGkgdC50cmVlIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG5cbiAgbGV0IGNoYW5nZSB0IGtleSB+ZiA9XG4gICAgbGlrZSB0IChUcmVlMC5jaGFuZ2UgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB0IGtleSB+ZiA9XG4gICAgbGlrZSB0IChUcmVlMC51cGRhdGUgdC50cmVlIGtleSB+ZiB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IGZpbmRfZXhuIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX2V4blxuICAgICAgdC50cmVlXG4gICAgICBrZXlcbiAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IGZpbmQgdCBrZXkgPSBUcmVlMC5maW5kIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuXG4gIGxldCByZW1vdmUgdCBrZXkgPVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIHRcbiAgICAgIChUcmVlMC5yZW1vdmUgdC50cmVlIGtleSB+bGVuZ3RoOnQubGVuZ3RoIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IG1lbSB0IGtleSA9IFRyZWUwLm1lbSB0LnRyZWUga2V5IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgbGV0IGl0ZXJfa2V5cyB0IH5mID0gVHJlZTAuaXRlcl9rZXlzIHQudHJlZSB+ZlxuICBsZXQgaXRlciB0IH5mID0gVHJlZTAuaXRlciB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0LnRyZWUgfmZcbiAgbGV0IGl0ZXJpX3VudGlsIHQgfmYgPSBUcmVlMC5pdGVyaV91bnRpbCB0LnRyZWUgfmZcbiAgbGV0IGl0ZXIyIHQxIHQyIH5mID0gVHJlZTAuaXRlcjIgdDEudHJlZSB0Mi50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gIGxldCBtYXAgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwIHQudHJlZSB+ZilcbiAgbGV0IG1hcGkgdCB+ZiA9IHdpdGhfc2FtZV9sZW5ndGggdCAoVHJlZTAubWFwaSB0LnRyZWUgfmYpXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkIHQudHJlZSB+ZiB+aW5pdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZF91bnRpbCB0LnRyZWUgfmYgfmluaXRcbiAgbGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9IFRyZWUwLmZvbGRfcmlnaHQgdC50cmVlIH5mIH5pbml0XG5cbiAgbGV0IGZvbGQyIHQxIHQyIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkMiB0MS50cmVlIHQyLnRyZWUgfmluaXQgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2tleXMgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyX2tleXMgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyaSB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXJpIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyX21hcCB0IH5mID0gbGlrZSB0IChUcmVlMC5maWx0ZXJfbWFwIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICBsZXQgZmlsdGVyX21hcGkgdCB+ZiA9IGxpa2UgdCAoVHJlZTAuZmlsdGVyX21hcGkgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQudHJlZSB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbl9tYXAgdC50cmVlIH5mIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkpXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gICAgbGlrZTIgdCAoVHJlZTAucGFydGl0aW9uaV90ZiB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX3RmIHQgfmYgPVxuICAgIGxpa2UyIHQgKFRyZWUwLnBhcnRpdGlvbl90ZiB0LnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KSlcbiAgOztcblxuICBsZXQgY29tYmluZV9lcnJvcnMgdCA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+ZjoobGlrZSB0KVxuICAgICAgKFRyZWUwLmNvbWJpbmVfZXJyb3JzXG4gICAgICAgICB0LnRyZWVcbiAgICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICAgICAgIH5zZXhwX29mX2tleTp0LmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmNvbXBhcmUgKGNvbXBhcmVfa2V5IHQxKSBjb21wYXJlX2RhdGEgdDEudHJlZSB0Mi50cmVlXG4gIDs7XG5cbiAgbGV0IGVxdWFsIGNvbXBhcmVfZGF0YSB0MSB0MiA9IFRyZWUwLmVxdWFsIChjb21wYXJlX2tleSB0MSkgY29tcGFyZV9kYXRhIHQxLnRyZWUgdDIudHJlZVxuICBsZXQga2V5cyB0ID0gVHJlZTAua2V5cyB0LnRyZWVcbiAgbGV0IGRhdGEgdCA9IFRyZWUwLmRhdGEgdC50cmVlXG4gIGxldCB0b19hbGlzdCA/a2V5X29yZGVyIHQgPSBUcmVlMC50b19hbGlzdCA/a2V5X29yZGVyIHQudHJlZVxuXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiB+ZGF0YV9lcXVhbCA9XG4gICAgVHJlZTAuc3ltbWV0cmljX2RpZmYgdDEudHJlZSB0Mi50cmVlIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpIH5kYXRhX2VxdWFsXG4gIDs7XG5cbiAgbGV0IGZvbGRfc3ltbWV0cmljX2RpZmYgdDEgdDIgfmRhdGFfZXF1YWwgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgIHQxLnRyZWVcbiAgICAgIHQyLnRyZWVcbiAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdDEpXG4gICAgICB+ZGF0YV9lcXVhbFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gIDs7XG5cbiAgbGV0IG1lcmdlIHQxIHQyIH5mID1cbiAgICBsaWtlIHQxIChUcmVlMC5tZXJnZSB0MS50cmVlIHQyLnRyZWUgfmYgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogVGhpcyBpcyBvbmx5IGEgbm8tb3AgaW4gdGhlIGNhc2Ugd2hlcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBtYXBzIGlzIGVtcHR5LiAqKVxuICAgIGxpa2VfbWF5YmVfbm9fb3BcbiAgICAgIChpZiB0Mi5sZW5ndGggPD0gdDEubGVuZ3RoIHRoZW4gdDEgZWxzZSB0MilcbiAgICAgIChUcmVlMC5tZXJnZV9za2V3ZWRcbiAgICAgICAgIHQxLnRyZWVcbiAgICAgICAgIHQyLnRyZWVcbiAgICAgICAgIH5sZW5ndGgxOnQxLmxlbmd0aFxuICAgICAgICAgfmxlbmd0aDI6dDIubGVuZ3RoXG4gICAgICAgICB+Y29tYmluZVxuICAgICAgICAgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0MSkpXG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUwLm1pbl9lbHQgdC50cmVlXG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdC50cmVlXG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlMC5tYXhfZWx0IHQudHJlZVxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUwLm1heF9lbHRfZXhuIHQudHJlZVxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0LnRyZWUgfmZcbiAgbGV0IGZvcl9hbGxpIHQgfmYgPSBUcmVlMC5mb3JfYWxsaSB0LnRyZWUgfmZcbiAgbGV0IGV4aXN0cyB0IH5mID0gVHJlZTAuZXhpc3RzIHQudHJlZSB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0LnRyZWUgfmZcbiAgbGV0IGNvdW50IHQgfmYgPSBUcmVlMC5jb3VudCB0LnRyZWUgfmZcbiAgbGV0IGNvdW50aSB0IH5mID0gVHJlZTAuY291bnRpIHQudHJlZSB+ZlxuXG4gIGxldCBzcGxpdCB0IGsgPVxuICAgIGxldCBsLCBtYXliZSwgciA9IFRyZWUwLnNwbGl0IHQudHJlZSBrIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdCkgaW5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3IgdCBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgYm90aF9sZW4gPSBpZiBPcHRpb24uaXNfc29tZSBtYXliZSB0aGVuIHQubGVuZ3RoIC0gMSBlbHNlIHQubGVuZ3RoIGluXG4gICAgaWYgVHJlZTAuaGVpZ2h0IGwgPCBUcmVlMC5oZWlnaHQgclxuICAgIHRoZW4gKFxuICAgICAgbGV0IGwgPSBvZl90cmVlIGwgfmNvbXBhcmF0b3IgaW5cbiAgICAgIGwsIG1heWJlLCBvZl90cmVlX3Vuc2FmZSByIH5jb21wYXJhdG9yIH5sZW5ndGg6KGJvdGhfbGVuIC0gbGVuZ3RoIGwpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHIgPSBvZl90cmVlIHIgfmNvbXBhcmF0b3IgaW5cbiAgICAgIG9mX3RyZWVfdW5zYWZlIGwgfmNvbXBhcmF0b3Igfmxlbmd0aDooYm90aF9sZW4gLSBsZW5ndGggciksIG1heWJlLCByKVxuICA7O1xuXG4gIGxldCBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIGxldCBsZWZ0LCBtaWQsIHJpZ2h0ID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlIHQudHJlZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgICBpblxuICAgICgqIFRyeSB0byB0cmF2ZXJzZSB0aGUgbGVhc3QgYW1vdW50IHBvc3NpYmxlIHRvIGNhbGN1bGF0ZSB0aGUgbGVuZ3RoLFxuICAgICAgIHVzaW5nIGhlaWdodCBhcyBhIGhldXJpc3RpYy4gKilcbiAgICBsZXQgb3V0ZXJfam9pbmVkX2hlaWdodCA9XG4gICAgICBsZXQgaF9sID0gVHJlZTAuaGVpZ2h0IGxlZnRcbiAgICAgIGFuZCBoX3IgPSBUcmVlMC5oZWlnaHQgcmlnaHQgaW5cbiAgICAgIGlmIGhfbCA9IGhfciB0aGVuIGhfbCArIDEgZWxzZSBtYXggaF9sIGhfclxuICAgIGluXG4gICAgaWYgb3V0ZXJfam9pbmVkX2hlaWdodCA8IFRyZWUwLmhlaWdodCBtaWRcbiAgICB0aGVuIChcbiAgICAgIGxldCBtaWRfbGVuZ3RoID0gdC5sZW5ndGggLSAoVHJlZTAubGVuZ3RoIGxlZnQgKyBUcmVlMC5sZW5ndGggcmlnaHQpIGluXG4gICAgICBvZl90cmVlX3Vuc2FmZSBtaWQgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgdCkgfmxlbmd0aDptaWRfbGVuZ3RoKVxuICAgIGVsc2Ugb2ZfdHJlZSBtaWQgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgdClcbiAgOztcblxuICBsZXQgYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0ID1cbiAgICBtYXRjaFxuICAgICAgVHJlZTAuYXBwZW5kXG4gICAgICAgIH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgbG93ZXJfcGFydClcbiAgICAgICAgfmxvd2VyX3BhcnQ6bG93ZXJfcGFydC50cmVlXG4gICAgICAgIH51cHBlcl9wYXJ0OnVwcGVyX3BhcnQudHJlZVxuICAgIHdpdGhcbiAgICB8IGBPayB0cmVlIC0+XG4gICAgICBgT2tcbiAgICAgICAgKG9mX3RyZWVfdW5zYWZlXG4gICAgICAgICAgIHRyZWVcbiAgICAgICAgICAgfmNvbXBhcmF0b3I6KGNvbXBhcmF0b3IgbG93ZXJfcGFydClcbiAgICAgICAgICAgfmxlbmd0aDoobG93ZXJfcGFydC5sZW5ndGggKyB1cHBlcl9wYXJ0Lmxlbmd0aCkpXG4gICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPiBgT3ZlcmxhcHBpbmdfa2V5X3Jhbmdlc1xuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmUgdC50cmVlIH5taW4gfm1heCB+aW5pdCB+ZiB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0LnRyZWUgfm1pbiB+bWF4IH5jb21wYXJlX2tleTooY29tcGFyZV9rZXkgdClcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0LnRyZWUgZGlyIGtleSB+Y29tcGFyZV9rZXk6KGNvbXBhcmVfa2V5IHQpXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdC50cmVlIG5cbiAgbGV0IG50aF9leG4gdCBuID0gT3B0aW9uLnZhbHVlX2V4biAobnRoIHQgbilcbiAgbGV0IHJhbmsgdCBrZXkgPSBUcmVlMC5yYW5rIHQudHJlZSBrZXkgfmNvbXBhcmVfa2V5Oihjb21wYXJlX2tleSB0KVxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgXyB0ID0gVHJlZTAuc2V4cF9vZl90IHNleHBfb2ZfayBzZXhwX29mX3YgdC50cmVlXG5cbiAgbGV0IHRvX3NlcXVlbmNlID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2VcbiAgICAgIHQuY29tcGFyYXRvclxuICAgICAgP29yZGVyXG4gICAgICA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvXG4gICAgICA/a2V5c19sZXNzX29yX2VxdWFsX3RvXG4gICAgICB0LnRyZWVcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB0IH5jb21wYXJlIGhvdyB2ID0gVHJlZTAuYmluYXJ5X3NlYXJjaCB0LnRyZWUgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIHQudHJlZSB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX2RpcmVjdCBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQgPVxuICAgIFRyZWUwLmhhc2hfZm9sZF90X2lnbm9yaW5nX3N0cnVjdHVyZSBoYXNoX2ZvbGRfa2V5IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHQudHJlZVxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCA9XG4gICAgbWF0Y2hcbiAgICAgIFRyZWUwLmJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0LnRyZWUgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICAgIHdpdGhcbiAgICB8IFNvbWUgKGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCkgLT4gc3VicmFuZ2UgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kXG4gICAgfCBOb25lIC0+IGxpa2VfbWF5YmVfbm9fb3AgdCAoRW1wdHksIDApXG4gIDs7XG5lbmRcblxuKCogWzBdIGlzIHVzZWQgYXMgdGhlIFtsZW5ndGhdIGFyZ3VtZW50IGV2ZXJ5d2hlcmUgaW4gdGhpcyBtb2R1bGUsIHNpbmNlIHRyZWVzIGRvIG5vdFxuICAgaGF2ZSB0aGVpciBsZW5ndGhzIHN0b3JlZCBhdCB0aGUgcm9vdCwgdW5saWtlIG1hcHMuIFRoZSB2YWx1ZXMgYXJlIGRpc2NhcmRlZCBhbHdheXMuICopXG5tb2R1bGUgVHJlZSA9IHN0cnVjdFxuICB0eXBlICgnaywgJ3YsICdjb21wYXJhdG9yKSB0ID0gKCdrLCAndiwgJ2NvbXBhcmF0b3IpIHRyZWVcblxuICBsZXQgZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiA9IFRyZWUwLmVtcHR5XG4gIGxldCBlbXB0eSB+Y29tcGFyYXRvcjpfID0gZW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvblxuICBsZXQgb2ZfdHJlZSB+Y29tcGFyYXRvcjpfIHRyZWUgPSB0cmVlXG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3I6XyBrIHYgPSBUcmVlMC5zaW5nbGV0b24gayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIGZzdCAoVHJlZTAub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheSA9XG4gICAgVHJlZTAub2Zfc29ydGVkX2FycmF5IGFycmF5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rICh0cmVlLCBfc2l6ZSkgLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIFRyZWUwLm9mX2FsaXN0X29yX2Vycm9yIGFsaXN0IH5jb21wYXJhdG9yIHw+IE9yX2Vycm9yLm1hcCB+Zjpmc3RcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yIGFsaXN0ID0gZnN0IChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpXG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBmc3QgKFRyZWUwLm9mX2FsaXN0X211bHRpIGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5vZl9hbGlzdF9mb2xkIGFsaXN0IH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfcmVkdWNlIH5jb21wYXJhdG9yIGFsaXN0IH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfml0ZXJpIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgKHRyZWUsIF9zaXplKSAtPiBgT2sgdHJlZVxuICAgIHwgYER1cGxpY2F0ZV9rZXkgXyBhcyBkIC0+IGRcbiAgOztcblxuICBsZXQgb2ZfaXRlcmlfZXhuIH5jb21wYXJhdG9yIH5pdGVyaSA9IGZzdCAoVHJlZTAub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcilcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmNvbXBhcmF0b3I6X3JlcXVpcmVkX2J5X2ludGYgfmxlbiB+ZiA9XG4gICAgVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZlxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+Zjpmc3RcbiAgICAgIChUcmVlMC5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgbWF0Y2ggVHJlZTAub2Zfc2VxdWVuY2Ugc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGQgLT4gZFxuICAgIHwgYE9rICh0cmVlLCBfc2l6ZSkgLT4gYE9rIHRyZWVcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBUcmVlMC5vZl9zZXF1ZW5jZV9vcl9lcnJvciBzZXEgfmNvbXBhcmF0b3IgfD4gT3JfZXJyb3IubWFwIH5mOmZzdFxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID0gZnN0IChUcmVlMC5vZl9zZXF1ZW5jZV9leG4gc2VxIH5jb21wYXJhdG9yKVxuXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfbXVsdGkgc2VxIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfZm9sZCB+Y29tcGFyYXRvciBzZXEgfmluaXQgfmYgPVxuICAgIGZzdCAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICBmc3QgKFRyZWUwLm9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCB0b190cmVlIHQgPSB0XG5cbiAgbGV0IGludmFyaWFudHMgfmNvbXBhcmF0b3IgdCA9XG4gICAgVHJlZTAuaW52YXJpYW50cyB0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBpc19lbXB0eSB0ID0gVHJlZTAuaXNfZW1wdHkgdFxuICBsZXQgbGVuZ3RoIHQgPSBUcmVlMC5sZW5ndGggdFxuXG4gIGxldCBzZXQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICBmc3QgKFRyZWUwLnNldCB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgYWRkX2V4biB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIGZzdFxuICAgICAgKFRyZWUwLmFkZF9leG5cbiAgICAgICAgIHRcbiAgICAgICAgIH5rZXlcbiAgICAgICAgIH5kYXRhXG4gICAgICAgICB+bGVuZ3RoOjBcbiAgICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgICAgfnNleHBfb2Zfa2V5OmNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBhZGQgfmNvbXBhcmF0b3IgdCB+a2V5IH5kYXRhID1cbiAgICB0cnkgYE9rIChhZGRfZXhuIHQgfmNvbXBhcmF0b3IgfmtleSB+ZGF0YSkgd2l0aFxuICAgIHwgXyAtPiBgRHVwbGljYXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9tdWx0aSB+Y29tcGFyYXRvciB0IH5rZXkgfmRhdGEgPVxuICAgIFRyZWUwLmFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgfmxlbmd0aDowIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIHw+IGZzdFxuICA7O1xuXG4gIGxldCByZW1vdmVfbXVsdGkgfmNvbXBhcmF0b3IgdCBrZXkgPVxuICAgIFRyZWUwLnJlbW92ZV9tdWx0aSB0IGtleSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHw+IGZzdFxuICA7O1xuXG4gIGxldCBmaW5kX211bHRpIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBUcmVlMC5maW5kX211bHRpIHQga2V5IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBjaGFuZ2UgfmNvbXBhcmF0b3IgdCBrZXkgfmYgPVxuICAgIGZzdCAoVHJlZTAuY2hhbmdlIHQga2V5IH5mIH5sZW5ndGg6MCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHVwZGF0ZSB+Y29tcGFyYXRvciB0IGtleSB+ZiA9XG4gICAgY2hhbmdlIH5jb21wYXJhdG9yIHQga2V5IH5mOihmdW4gZGF0YSAtPiBTb21lIChmIGRhdGEpKVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB+Y29tcGFyYXRvciB0IGtleSA9XG4gICAgVHJlZTAuZmluZF9leG5cbiAgICAgIHRcbiAgICAgIGtleVxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgICB+c2V4cF9vZl9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLnNleHBfb2ZfdFxuICA7O1xuXG4gIGxldCBmaW5kIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAuZmluZCB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcblxuICBsZXQgcmVtb3ZlIH5jb21wYXJhdG9yIHQga2V5ID1cbiAgICBmc3QgKFRyZWUwLnJlbW92ZSB0IGtleSB+bGVuZ3RoOjAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBtZW0gfmNvbXBhcmF0b3IgdCBrZXkgPSBUcmVlMC5tZW0gdCBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIGxldCBpdGVyX2tleXMgdCB+ZiA9IFRyZWUwLml0ZXJfa2V5cyB0IH5mXG4gIGxldCBpdGVyIHQgfmYgPSBUcmVlMC5pdGVyIHQgfmZcbiAgbGV0IGl0ZXJpIHQgfmYgPSBUcmVlMC5pdGVyaSB0IH5mXG4gIGxldCBpdGVyaV91bnRpbCB0IH5mID0gVHJlZTAuaXRlcmlfdW50aWwgdCB+ZlxuXG4gIGxldCBpdGVyMiB+Y29tcGFyYXRvciB0MSB0MiB+ZiA9XG4gICAgVHJlZTAuaXRlcjIgdDEgdDIgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gVHJlZTAubWFwIHQgfmZcbiAgbGV0IG1hcGkgdCB+ZiA9IFRyZWUwLm1hcGkgdCB+ZlxuICBsZXQgZm9sZCB0IH5pbml0IH5mID0gVHJlZTAuZm9sZCB0IH5mIH5pbml0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgfmZpbmlzaCA9IFRyZWUwLmZvbGRfdW50aWwgdCB+ZiB+aW5pdCB+ZmluaXNoXG4gIGxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBUcmVlMC5mb2xkX3JpZ2h0IHQgfmYgfmluaXRcblxuICBsZXQgZm9sZDIgfmNvbXBhcmF0b3IgdDEgdDIgfmluaXQgfmYgPVxuICAgIFRyZWUwLmZvbGQyIHQxIHQyIH5pbml0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfa2V5cyB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBmc3QgKFRyZWUwLmZpbHRlcl9rZXlzIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXIgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXIgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IGZpbHRlcmkgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJpIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmYgPVxuICAgIGZzdCAoVHJlZTAuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgZnN0IChUcmVlMC5maWx0ZXJfbWFwaSB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgcGFydGl0aW9uX21hcGkgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbl9tYXBpIHQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gICAgaW5cbiAgICBhLCBiXG4gIDs7XG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbl9tYXAgdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIGEsIGJcbiAgOztcblxuICBsZXQgcGFydGl0aW9uaV90ZiB+Y29tcGFyYXRvciB0IH5mID1cbiAgICBsZXQgKGEsIF8pLCAoYiwgXykgPVxuICAgICAgVHJlZTAucGFydGl0aW9uaV90ZiB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fdGYgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbGV0IChhLCBfKSwgKGIsIF8pID1cbiAgICAgIFRyZWUwLnBhcnRpdGlvbl90ZiB0IH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgIGluXG4gICAgYSwgYlxuICA7O1xuXG4gIGxldCBjb21iaW5lX2Vycm9ycyB+Y29tcGFyYXRvciB0ID1cbiAgICBPcl9lcnJvci5tYXBcbiAgICAgIH5mOmZzdFxuICAgICAgKFRyZWUwLmNvbWJpbmVfZXJyb3JzXG4gICAgICAgICB0XG4gICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICAgICAgIH5zZXhwX29mX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3Iuc2V4cF9vZl90KVxuICA7O1xuXG4gIGxldCBjb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciBjb21wYXJlX2RhdGEgdDEgdDIgPVxuICAgIFRyZWUwLmNvbXBhcmUgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgY29tcGFyZV9kYXRhIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5jb21wYXJhdG9yIGNvbXBhcmVfZGF0YSB0MSB0MiA9XG4gICAgVHJlZTAuZXF1YWwgY29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgY29tcGFyZV9kYXRhIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGtleXMgdCA9IFRyZWUwLmtleXMgdFxuICBsZXQgZGF0YSB0ID0gVHJlZTAuZGF0YSB0XG4gIGxldCB0b19hbGlzdCA/a2V5X29yZGVyIHQgPSBUcmVlMC50b19hbGlzdCA/a2V5X29yZGVyIHRcblxuICBsZXQgc3ltbWV0cmljX2RpZmYgfmNvbXBhcmF0b3IgdDEgdDIgfmRhdGFfZXF1YWwgPVxuICAgIFRyZWUwLnN5bW1ldHJpY19kaWZmIHQxIHQyIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB+ZGF0YV9lcXVhbFxuICA7O1xuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIH5jb21wYXJhdG9yIHQxIHQyIH5kYXRhX2VxdWFsIH5pbml0IH5mID1cbiAgICBUcmVlMC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICB0MVxuICAgICAgdDJcbiAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICA7O1xuXG4gIGxldCBtZXJnZSB+Y29tcGFyYXRvciB0MSB0MiB+ZiA9XG4gICAgZnN0IChUcmVlMC5tZXJnZSB0MSB0MiB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG1lcmdlX3NrZXdlZCB+Y29tcGFyYXRvciB0MSB0MiB+Y29tYmluZSA9XG4gICAgKCogTGVuZ3RoIGNvbXB1dGF0aW9uIG1ha2VzIHRoaXMgc2lnbmlmaWNhbnRseSBzbG93ZXIgdGhhbiBbbWVyZ2Vfc2tld2VkXSBvbiBhIG1hcFxuICAgICAgIHdpdGggYSBbbGVuZ3RoXSBmaWVsZCwgYnV0IGRvZXMgcHJlc2VydmUgYW1vdW50IG9mIGFsbG9jYXRpb24uICopXG4gICAgZnN0XG4gICAgICAoVHJlZTAubWVyZ2Vfc2tld2VkXG4gICAgICAgICB0MVxuICAgICAgICAgdDJcbiAgICAgICAgIH5sZW5ndGgxOihsZW5ndGggdDEpXG4gICAgICAgICB+bGVuZ3RoMjoobGVuZ3RoIHQyKVxuICAgICAgICAgfmNvbWJpbmVcbiAgICAgICAgIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgbWluX2VsdCB0ID0gVHJlZTAubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZTAubWluX2VsdF9leG4gdFxuICBsZXQgbWF4X2VsdCB0ID0gVHJlZTAubWF4X2VsdCB0XG4gIGxldCBtYXhfZWx0X2V4biB0ID0gVHJlZTAubWF4X2VsdF9leG4gdFxuICBsZXQgZm9yX2FsbCB0IH5mID0gVHJlZTAuZm9yX2FsbCB0IH5mXG4gIGxldCBmb3JfYWxsaSB0IH5mID0gVHJlZTAuZm9yX2FsbGkgdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlMC5leGlzdHMgdCB+ZlxuICBsZXQgZXhpc3RzaSB0IH5mID0gVHJlZTAuZXhpc3RzaSB0IH5mXG4gIGxldCBjb3VudCB0IH5mID0gVHJlZTAuY291bnQgdCB+ZlxuICBsZXQgY291bnRpIHQgfmYgPSBUcmVlMC5jb3VudGkgdCB+ZlxuICBsZXQgc3BsaXQgfmNvbXBhcmF0b3IgdCBrID0gVHJlZTAuc3BsaXQgdCBrIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZVxuXG4gIGxldCBhcHBlbmQgfmNvbXBhcmF0b3Igfmxvd2VyX3BhcnQgfnVwcGVyX3BhcnQgPVxuICAgIFRyZWUwLmFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgc3VicmFuZ2UgfmNvbXBhcmF0b3IgdCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBsZXQgXywgcmV0LCBfID1cbiAgICAgIFRyZWUwLnNwbGl0X3JhbmdlXG4gICAgICAgIHRcbiAgICAgICAgfmxvd2VyX2JvdW5kXG4gICAgICAgIH51cHBlcl9ib3VuZFxuICAgICAgICB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgICBpblxuICAgIHJldFxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB+Y29tcGFyYXRvciB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgVHJlZTAuZm9sZF9yYW5nZV9pbmNsdXNpdmVcbiAgICAgIHRcbiAgICAgIH5taW5cbiAgICAgIH5tYXhcbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IHJhbmdlX3RvX2FsaXN0IH5jb21wYXJhdG9yIHQgfm1pbiB+bWF4ID1cbiAgICBUcmVlMC5yYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgOztcblxuICBsZXQgY2xvc2VzdF9rZXkgfmNvbXBhcmF0b3IgdCBkaXIga2V5ID1cbiAgICBUcmVlMC5jbG9zZXN0X2tleSB0IGRpciBrZXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IG50aCB0IG4gPSBUcmVlMC5udGggdCBuXG4gIGxldCBudGhfZXhuIHQgbiA9IE9wdGlvbi52YWx1ZV9leG4gKG50aCB0IG4pXG4gIGxldCByYW5rIH5jb21wYXJhdG9yIHQga2V5ID0gVHJlZTAucmFuayB0IGtleSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmVcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IF8gdCA9IFRyZWUwLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHRcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIGZzdCAoVHJlZTAudF9vZl9zZXhwX2RpcmVjdCBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZTAudG9fc2VxdWVuY2UgY29tcGFyYXRvciA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHRcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaCB+Y29tcGFyYXRvcjpfIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlMC5iaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgfmNvbXBhcmF0b3I6XyB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZTAuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3dcbiAgOztcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIG1hdGNoIFRyZWUwLmJpbmFyeV9zZWFyY2hfdHdvX3NpZGVkX2JvdW5kcyB0IH5jb21wYXJlIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgd2l0aFxuICAgIHwgU29tZSAobG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kKSAtPiBzdWJyYW5nZSB+Y29tcGFyYXRvciB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmRcbiAgICB8IE5vbmUgLT4gRW1wdHlcbiAgOztcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiB3aXRoXG4gICAgfCBgT2sgKHQsIF8pIC0+IGBPayB0XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIGR1cCAtPiBkdXBcbiAgOztcblxuICBsZXQgbWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmYgPSBmc3QgKFRyZWUwLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mKVxuXG4gIG1vZHVsZSBCdWlsZF9pbmNyZWFzaW5nID0gc3RydWN0XG4gICAgdHlwZSAoJ2ssICd2LCAndykgdCA9ICgnaywgJ3YpIFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcudFxuXG4gICAgbGV0IGVtcHR5ID0gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5lbXB0eVxuXG4gICAgbGV0IGFkZF9leG4gdCB+Y29tcGFyYXRvciB+a2V5IH5kYXRhID1cbiAgICAgIG1hdGNoIFRyZWUwLkJ1aWxkX2luY3JlYXNpbmcubWF4X2tleSB0IHdpdGhcbiAgICAgIHwgU29tZSBwcmV2X2tleSB3aGVuIGNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIHByZXZfa2V5IGtleSA+PSAwIC0+XG4gICAgICAgIEVycm9yLnJhaXNlX3MgKFNleHAuQXRvbSBcIk1hcC5CdWlsZF9pbmNyZWFzaW5nLmFkZDogbm9uLWluY3JlYXNpbmcga2V5XCIpXG4gICAgICB8IF8gLT4gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy5hZGRfdW5jaGVja2VkIHQgfmtleSB+ZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgdG9fdHJlZSB0ID0gVHJlZTAuQnVpbGRfaW5jcmVhc2luZy50b190cmVlX3VuY2hlY2tlZCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVc2luZ19jb21wYXJhdG9yID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnaywgJ3YsICdjbXApIHQgPSAoJ2ssICd2LCAnY21wKSB0XG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgZW1wdHkgfmNvbXBhcmF0b3IgPSB7IHRyZWUgPSBUcmVlMC5lbXB0eTsgY29tcGFyYXRvcjsgbGVuZ3RoID0gMCB9XG4gIGxldCBzaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2ID0geyBjb21wYXJhdG9yOyB0cmVlID0gVHJlZTAuc2luZ2xldG9uIGsgdjsgbGVuZ3RoID0gMSB9XG4gIGxldCBvZl90cmVlMCB+Y29tcGFyYXRvciAodHJlZSwgbGVuZ3RoKSA9IHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgbGV0IG9mX3RyZWUgfmNvbXBhcmF0b3IgdHJlZSA9IG9mX3RyZWUwIH5jb21wYXJhdG9yICh0cmVlLCBUcmVlMC5sZW5ndGggdHJlZSlcbiAgbGV0IHRvX3RyZWUgPSB0b190cmVlXG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYXJyYXkgPVxuICAgIE9yX2Vycm9yLm1hcFxuICAgICAgKFRyZWUwLm9mX3NvcnRlZF9hcnJheSBhcnJheSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gICAgICB+ZjooZnVuIHRyZWUgLT4gb2ZfdHJlZTAgfmNvbXBhcmF0b3IgdHJlZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG1hdGNoIFRyZWUwLm9mX2FsaXN0IGFsaXN0IH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSB3aXRoXG4gICAgfCBgT2sgKHRyZWUsIGxlbmd0aCkgLT4gYE9rIHsgY29tcGFyYXRvcjsgdHJlZTsgbGVuZ3RoIH1cbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBSZXN1bHQubWFwIChUcmVlMC5vZl9hbGlzdF9vcl9lcnJvciBhbGlzdCB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYWxpc3QgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9hbGlzdF9leG4gYWxpc3QgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0ID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9hbGlzdF9tdWx0aSBhbGlzdCB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgfmNvbXBhcmF0b3IgYWxpc3QgfmluaXQgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYWxpc3QgfmYgPVxuICAgIG9mX3RyZWUwXG4gICAgICB+Y29tcGFyYXRvclxuICAgICAgKFRyZWUwLm9mX2FsaXN0X3JlZHVjZSBhbGlzdCB+ZiB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpIH5jb21wYXJhdG9yIH5pdGVyaSA9XG4gICAgbWF0Y2ggVHJlZTAub2ZfaXRlcmkgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIH5pdGVyaSB3aXRoXG4gICAgfCBgT2sgdHJlZV9sZW5ndGggLT4gYE9rIChvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlX2xlbmd0aClcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgeiAtPiB6XG4gIDs7XG5cbiAgbGV0IG9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmkgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC5vZl9pdGVyaV9leG4gfmNvbXBhcmF0b3Igfml0ZXJpKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiwgbGVuKVxuICA7O1xuXG4gIGxldCBvZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcSA9XG4gICAgT3JfZXJyb3IubWFwXG4gICAgICB+Zjoob2ZfdHJlZTAgfmNvbXBhcmF0b3IpXG4gICAgICAoVHJlZTAub2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXEgPVxuICAgIG1hdGNoIFRyZWUwLm9mX3NlcXVlbmNlIHNlcSB+Y29tcGFyZV9rZXk6Y29tcGFyYXRvci5Db21wYXJhdG9yLmNvbXBhcmUgd2l0aFxuICAgIHwgYE9rICh0cmVlLCBsZW5ndGgpIC0+IGBPayB7IGNvbXBhcmF0b3I7IHRyZWU7IGxlbmd0aCB9XG4gICAgfCBgRHVwbGljYXRlX2tleSBfIGFzIHogLT4gelxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXEgPVxuICAgIFJlc3VsdC5tYXAgKFRyZWUwLm9mX3NlcXVlbmNlX29yX2Vycm9yIHNlcSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0cmVlIC0+XG4gICAgICBvZl90cmVlMCB+Y29tcGFyYXRvciB0cmVlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMCB+Y29tcGFyYXRvciAoVHJlZTAub2Zfc2VxdWVuY2VfZXhuIHNlcSB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9tdWx0aSBzZXEgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHNlcSB+aW5pdCB+ZiA9XG4gICAgb2ZfdHJlZTBcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoVHJlZTAub2Zfc2VxdWVuY2VfZm9sZCBzZXEgfmluaXQgfmYgfmNvbXBhcmVfa2V5OmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZV9yZWR1Y2UgfmNvbXBhcmF0b3Igc2VxIH5mID1cbiAgICBvZl90cmVlMFxuICAgICAgfmNvbXBhcmF0b3JcbiAgICAgIChUcmVlMC5vZl9zZXF1ZW5jZV9yZWR1Y2Ugc2VxIH5mIH5jb21wYXJlX2tleTpjb21wYXJhdG9yLkNvbXBhcmF0b3IuY29tcGFyZSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvciBrX29mX3NleHAgdl9vZl9zZXhwIHNleHAgPVxuICAgIG9mX3RyZWUwIH5jb21wYXJhdG9yIChUcmVlMC50X29mX3NleHBfZGlyZWN0IGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgbWF0Y2ggVHJlZTAubWFwX2tleXMgdC50cmVlIH5mIH5jb21wYXJhdG9yIHdpdGhcbiAgICB8IGBPayBwYWlyIC0+IGBPayAob2ZfdHJlZTAgfmNvbXBhcmF0b3IgcGFpcilcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF8gYXMgZHVwIC0+IGR1cFxuICA7O1xuXG4gIGxldCBtYXBfa2V5c19leG4gfmNvbXBhcmF0b3IgdCB+ZiA9XG4gICAgb2ZfdHJlZTAgfmNvbXBhcmF0b3IgKFRyZWUwLm1hcF9rZXlzX2V4biB0LnRyZWUgfmYgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbW9kdWxlIEVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb24gKEsgOiBDb21wYXJhdG9yLlMxKSA9IHN0cnVjdFxuICAgIGxldCBlbXB0eSA9IHsgdHJlZSA9IFRyZWUwLmVtcHR5OyBjb21wYXJhdG9yID0gSy5jb21wYXJhdG9yOyBsZW5ndGggPSAwIH1cbiAgZW5kXG5cbiAgbW9kdWxlIFRyZWUgPSBUcmVlXG5lbmRcblxuaW5jbHVkZSBBY2Nlc3NvcnNcblxudHlwZSAoJ2ssICdjbXApIGNvbXBhcmF0b3IgPVxuICAobW9kdWxlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG5cbmxldCBjb21wYXJhdG9yX3MgKHR5cGUgayBjbXApIHQgOiAoaywgY21wKSBjb21wYXJhdG9yID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gdC5jb21wYXJhdG9yXG4gIGVuZClcbjs7XG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl90cmVlICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIGNvbXBhcmF0b3IpIHRyZWUgPVxuICBvZl90cmVlIH5jb21wYXJhdG9yOk0uY29tcGFyYXRvciB0cmVlXG47O1xuXG5sZXQgZW1wdHkgbSA9IFVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcbmxldCBzaW5nbGV0b24gbSBhID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2FsaXN0IG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3QgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxuXG5sZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9vcl9lcnJvciB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBhXG47O1xuXG5sZXQgb2ZfYWxpc3RfZXhuIG0gYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbmxldCBvZl9hbGlzdF9tdWx0aSBtIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcblxubGV0IG9mX2FsaXN0X2ZvbGQgbSBhIH5pbml0IH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGEgfmluaXQgfmZcbjs7XG5cbmxldCBvZl9hbGlzdF9yZWR1Y2UgbSBhIH5mID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYSB+ZlxuOztcblxubGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgbSBhID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGFcbjs7XG5cbmxldCBvZl9zb3J0ZWRfYXJyYXkgbSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgYVxubGV0IG9mX2l0ZXJpIG0gfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSlcblxubGV0IG9mX2l0ZXJpX2V4biBtIH5pdGVyaSA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaXRlcmlfZXhuIH5pdGVyaSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIG0gfmxlbiB+ZiA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuOztcblxubGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2UgbSBzZXEgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc2VxXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2UgbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG5cbmxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBtIHMgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX29yX2Vycm9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHNcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZV9leG4gbSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9leG4gfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgc1xuXG5sZXQgb2Zfc2VxdWVuY2VfbXVsdGkgbSBzID1cbiAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzXG47O1xuXG5sZXQgb2Zfc2VxdWVuY2VfZm9sZCBtIHMgfmluaXQgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgcyB+aW5pdCB+ZlxuOztcblxubGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBtIHMgfmYgPVxuICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSBzIH5mXG47O1xuXG5sZXQgbWFwX2tleXMgbSB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0IH5mXG5sZXQgbWFwX2tleXNfZXhuIG0gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIHQgfmZcblxubW9kdWxlIE0gKEsgOiBzaWdcbiAgICB0eXBlIHRcbiAgICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzc1xuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgTV9zZXhwX2dyYW1tYXIgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX2dyYW1tYXJdXG5cbiAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gIFtAQEBlbmRdXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcGFyZV9tID0gc2lnIGVuZFxubW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcbm1vZHVsZSB0eXBlIEhhc2hfZm9sZF9tID0gSGFzaGVyLlNcblxubGV0IHNleHBfb2ZfbV9fdCAodHlwZSBrKSAobW9kdWxlIEsgOiBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSBrKSBzZXhwX29mX3YgdCA9XG4gIHNleHBfb2ZfdCBLLnNleHBfb2ZfdCBzZXhwX29mX3YgKGZ1biBfIC0+IFNleHAuQXRvbSBcIl9cIikgdFxuOztcblxubGV0IG1fX3Rfb2Zfc2V4cFxuICAgICAgKHR5cGUgayBjbXApXG4gICAgICAobW9kdWxlIEsgOiBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSBrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgIHZfb2Zfc2V4cFxuICAgICAgc2V4cFxuICA9XG4gIFVzaW5nX2NvbXBhcmF0b3IudF9vZl9zZXhwX2RpcmVjdCB+Y29tcGFyYXRvcjpLLmNvbXBhcmF0b3IgSy50X29mX3NleHAgdl9vZl9zZXhwIHNleHBcbjs7XG5cbmxldCBtX190X3NleHBfZ3JhbW1hclxuICAgICAgKHR5cGUgaylcbiAgICAgIChtb2R1bGUgSyA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gaylcbiAgICAgICh2X2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IF8gU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgPVxuICB7IHVudHlwZWQgPVxuICAgICAgTGlzdFxuICAgICAgICAoTWFueSAoTGlzdCAoQ29ucyAoSy50X3NleHBfZ3JhbW1hci51bnR5cGVkLCBDb25zICh2X2dyYW1tYXIudW50eXBlZCwgRW1wdHkpKSkpKVxuICB9XG47O1xuXG5sZXQgY29tcGFyZV9tX190IChtb2R1bGUgXyA6IENvbXBhcmVfbSkgY29tcGFyZV92IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY29tcGFyZV92IHQxIHQyXG5sZXQgZXF1YWxfbV9fdCAobW9kdWxlIF8gOiBFcXVhbF9tKSBlcXVhbF92IHQxIHQyID0gZXF1YWwgZXF1YWxfdiB0MSB0MlxuXG5sZXQgaGFzaF9mb2xkX21fX3QgKHR5cGUgaykgKG1vZHVsZSBLIDogSGFzaF9mb2xkX20gd2l0aCB0eXBlIHQgPSBrKSBoYXNoX2ZvbGRfdiBzdGF0ZSA9XG4gIGhhc2hfZm9sZF9kaXJlY3QgSy5oYXNoX2ZvbGRfdCBoYXNoX2ZvbGRfdiBzdGF0ZVxuOztcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdCA9ICgnaywgJ3YsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSBub25yZWMgKCdrLCAndikgdHJlZSA9ICgnaywgJ3YpIFRyZWUwLnRcbiAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBDb21wYXJhdG9yLlBvbHkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgY29tcGFyYXRvciA9IENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gIGxldCBvZl90cmVlIHRyZWUgPSB7IHRyZWU7IGNvbXBhcmF0b3I7IGxlbmd0aCA9IFRyZWUwLmxlbmd0aCB0cmVlIH1cblxuICBpbmNsdWRlIFVzaW5nX2NvbXBhcmF0b3IuRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoQ29tcGFyYXRvci5Qb2x5KVxuXG4gIGxldCBzaW5nbGV0b24gYSA9IFVzaW5nX2NvbXBhcmF0b3Iuc2luZ2xldG9uIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0IGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0IH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFcbiAgbGV0IG9mX2FsaXN0X2V4biBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfbXVsdGkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfYWxpc3RfZm9sZCBhIH5pbml0IH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9mb2xkIH5jb21wYXJhdG9yIGEgfmluaXQgfmZcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdF9yZWR1Y2UgfmNvbXBhcmF0b3IgYSB+ZlxuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVXNpbmdfY29tcGFyYXRvci5vZl9zb3J0ZWRfYXJyYXkgfmNvbXBhcmF0b3IgYVxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2UgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2Vfb3JfZXJyb3IgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzXG4gIGxldCBvZl9zZXF1ZW5jZV9tdWx0aSBzID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9tdWx0aSB+Y29tcGFyYXRvciBzXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9mb2xkIH5jb21wYXJhdG9yIHMgfmluaXQgfmZcbiAgOztcblxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzIH5mXG4gIGxldCBtYXBfa2V5cyB0IH5mID0gVXNpbmdfY29tcGFyYXRvci5tYXBfa2V5cyB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBtYXBfa2V5c19leG4gdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXNfZXhuIH5jb21wYXJhdG9yIHQgfmZcbmVuZFxuIiwib3BlbiEgSW1wb3J0MFxuXG50eXBlICdhIHQgPSAnYSBDYW1sLlF1ZXVlLnRcblxubGV0IGNyZWF0ZSA9IENhbWwuUXVldWUuY3JlYXRlXG5sZXQgY2xlYXIgPSBDYW1sLlF1ZXVlLmNsZWFyXG5sZXQgY29weSA9IENhbWwuUXVldWUuY29weVxubGV0IGlzX2VtcHR5ID0gQ2FtbC5RdWV1ZS5pc19lbXB0eVxubGV0IGxlbmd0aCA9IENhbWwuUXVldWUubGVuZ3RoXG5sZXQgcGVlayA9IENhbWwuUXVldWUucGVla1xubGV0IHBvcCA9IENhbWwuUXVldWUucG9wXG5sZXQgcHVzaCA9IENhbWwuUXVldWUucHVzaFxubGV0IHRyYW5zZmVyID0gQ2FtbC5RdWV1ZS50cmFuc2ZlclxubGV0IGl0ZXIgdCB+ZiA9IENhbWwuUXVldWUuaXRlciBmIHRcbmxldCBmb2xkIHQgfmluaXQgfmYgPSBDYW1sLlF1ZXVlLmZvbGQgZiBpbml0IHRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBMaW5rZWRfcXVldWUwXG5cbmxldCBlbnF1ZXVlIHQgeCA9IExpbmtlZF9xdWV1ZTAucHVzaCB4IHRcbmxldCBkZXF1ZXVlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKExpbmtlZF9xdWV1ZTAucG9wIHQpXG5sZXQgZGVxdWV1ZV9leG4gPSBMaW5rZWRfcXVldWUwLnBvcFxubGV0IHBlZWsgdCA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoTGlua2VkX3F1ZXVlMC5wZWVrIHQpXG5sZXQgcGVla19leG4gPSBMaW5rZWRfcXVldWUwLnBlZWtcblxubW9kdWxlIEMgPSBJbmRleGVkX2NvbnRhaW5lci5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IGZvbGQgPSBmb2xkXG4gICAgbGV0IGl0ZXIgPSBgQ3VzdG9tIGl0ZXJcbiAgICBsZXQgbGVuZ3RoID0gYEN1c3RvbSBsZW5ndGhcbiAgICBsZXQgZm9sZGkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgaXRlcmkgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgZW5kKVxuXG5sZXQgY291bnQgPSBDLmNvdW50XG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgbWVtID0gQy5tZW1cbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgc3VtID0gQy5zdW1cbmxldCB0b19saXN0ID0gQy50b19saXN0XG5sZXQgY291bnRpID0gQy5jb3VudGlcbmxldCBleGlzdHNpID0gQy5leGlzdHNpXG5sZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcbmxldCBmaW5kaSA9IEMuZmluZGlcbmxldCBmb2xkaSA9IEMuZm9sZGlcbmxldCBmb3JfYWxsaSA9IEMuZm9yX2FsbGlcbmxldCBpdGVyaSA9IEMuaXRlcmlcbmxldCB0cmFuc2ZlciB+c3JjIH5kc3QgPSBMaW5rZWRfcXVldWUwLnRyYW5zZmVyIHNyYyBkc3RcblxubGV0IGNvbmNhdF9tYXAgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBMaXN0Lml0ZXIgKGYgYSkgfmY6KGZ1biBiIC0+IGVucXVldWUgcmVzIGIpKTtcbiAgcmVzXG47O1xuXG5sZXQgY29uY2F0X21hcGkgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIGkgYSAtPiBMaXN0Lml0ZXIgKGYgaSBhKSB+ZjooZnVuIGIgLT4gZW5xdWV1ZSByZXMgYikpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwIHQgfmYgPVxuICBsZXQgcmVzID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT5cbiAgICBtYXRjaCBmIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+XG4gICAgbWF0Y2ggZiBpIGEgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBiIC0+IGVucXVldWUgcmVzIGIpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCByZXMgPSBjcmVhdGUgKCkgaW5cbiAgaXRlciB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBlbnF1ZXVlIHJlcyBhKTtcbiAgcmVzXG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGlmIGYgaSBhIHRoZW4gZW5xdWV1ZSByZXMgYSk7XG4gIHJlc1xuOztcblxubGV0IG1hcCB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyIHQgfmY6KGZ1biBhIC0+IGVucXVldWUgcmVzIChmIGEpKTtcbiAgcmVzXG47O1xuXG5sZXQgbWFwaSB0IH5mID1cbiAgbGV0IHJlcyA9IGNyZWF0ZSAoKSBpblxuICBpdGVyaSB0IH5mOihmdW4gaSBhIC0+IGVucXVldWUgcmVzIChmIGkgYSkpO1xuICByZXNcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSBxIH5mID1cbiAgbGV0IHEnID0gZmlsdGVyIHEgfmYgaW5cbiAgY2xlYXIgcTtcbiAgdHJhbnNmZXIgfnNyYzpxJyB+ZHN0OnFcbjs7XG5cbmxldCBmaWx0ZXJpX2lucGxhY2UgcSB+ZiA9XG4gIGxldCBxJyA9IGZpbHRlcmkgcSB+ZiBpblxuICBjbGVhciBxO1xuICB0cmFuc2ZlciB+c3JjOnEnIH5kc3Q6cVxuOztcblxubGV0IGVucXVldWVfYWxsIHQgbGlzdCA9IExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeClcblxubGV0IG9mX2xpc3QgbGlzdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciBsaXN0IH5mOihmdW4geCAtPiBlbnF1ZXVlIHQgeCk7XG4gIHRcbjs7XG5cbmxldCBvZl9hcnJheSBhcnJheSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyYXkgfmY6KGZ1biB4IC0+IGVucXVldWUgdCB4KTtcbiAgdFxuOztcblxubGV0IGluaXQgbGVuIH5mID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBlbnF1ZXVlIHQgKGYgaSlcbiAgZG9uZTtcbiAgdFxuOztcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBsZW5ndGggdCB3aXRoXG4gIHwgMCAtPiBbfHxdXG4gIHwgbGVuIC0+XG4gICAgbGV0IGFyciA9IEFycmF5LmNyZWF0ZSB+bGVuIChwZWVrX2V4biB0KSBpblxuICAgIGxldCBpID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biB2IC0+XG4gICAgICBhcnIuKCFpKSA8LSB2O1xuICAgICAgaW5jciBpKTtcbiAgICBhcnJcbjs7XG5cbmxldCB0X29mX3NleHAgYV9vZl9zZXhwIHNleHAgPSBvZl9saXN0IChsaXN0X29mX3NleHAgYV9vZl9zZXhwIHNleHApXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfYSAodG9fbGlzdCB0KVxuXG5sZXQgdF9zZXhwX2dyYW1tYXIgKHR5cGUgYSkgKGdyYW1tYXIgOiBhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICA6IGEgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbjs7XG5cbmxldCBzaW5nbGV0b24gYSA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGVucXVldWUgdCBhO1xuICB0XG47O1xuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBDYW1sLkludDY0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nX2lubGluZSBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX2ludDY0IDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGludDY0X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IGhhc2hhYmxlIDogdCBIYXNoYWJsZS50ID0geyBoYXNoOyBjb21wYXJlOyBzZXhwX29mX3QgfVxuXG4gIGxldCBjb21wYXJlID0gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLmNvbXBhcmVcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxubGV0IG51bV9iaXRzID0gNjRcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzXG5sZXQgYml0c19vZl9mbG9hdCA9IGJpdHNfb2ZfZmxvYXRcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gSW50X21hdGguUHJpdmF0ZS5pbnQ2NF9wb3dcbmxldCByZW0gPSByZW1cbmxldCBuZWcgPSBuZWdcbmxldCBtaW51c19vbmUgPSBtaW51c19vbmVcbmxldCBvbmUgPSBvbmVcbmxldCB6ZXJvID0gemVyb1xubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBDYW1sLkludDY0Lm9mX2Zsb2F0XG5cbmxldCBvZl9mbG9hdCBmID1cbiAgaWYgRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPj0gKSBmIGZsb2F0X2xvd2VyX2JvdW5kXG4gICYmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgZiBmbG9hdF91cHBlcl9ib3VuZFxuICB0aGVuIENhbWwuSW50NjQub2ZfZmxvYXQgZlxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2NC5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IGYpXG4gICAgICAoKVxuOztcblxubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5cbmV4dGVybmFsIGJzd2FwNjQgOiB0IC0+IHQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAxNiB4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDQ4XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXAzMiB4ID1cbiAgKCogVGhpcyBpcyBzdHJpY3RseSBiZXR0ZXIgdGhhbiBjb2VyY2luZyB0byBhbiBpbnQzMiB0byBwZXJmb3JtIGJ5dGVzd2FwLiBDb2VyY2luZ1xuICAgICBmcm9tIGFuIGludDMyIHdpbGwgYWRkIHVubmVjZXNzYXJ5IHNoaWZ0IG9wZXJhdGlvbnMgdG8gc2lnbiBleHRlbmQgdGhlIG51bWJlclxuICAgICBhcHByb3ByaWF0ZWx5LlxuICAqKVxuICBDYW1sLkludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKGJzd2FwNjQgeCkgMzJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYnN3YXA0OCB4ID0gQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDY0IHgpIDE2XG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxuKCogT3BlbiByZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgYWZ0ZXIgaW5jbHVkaW5nIGZ1bmN0b3IgaW5zdGFudGlhdGlvbnMgc28gdGhleSBkbyBub3RcbiAgIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXMgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvblxuICAgZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgd2l0aGluIHRoaXMgbW9kdWxlLiAqKVxub3BlbiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCBpbmNyIHIgPSByIDo9IGFkZCAhciBvbmVcbmxldCBkZWNyIHIgPSByIDo9IHN1YiAhciBvbmVcblxuZXh0ZXJuYWwgb2ZfaW50NjQgOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NFxubGV0IHRvX2ludDY0IHQgPSB0XG5sZXQgcG9wY291bnQgPSBQb3Bjb3VudC5pbnQ2NF9wb3Bjb3VudFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5leHRlcm5hbCB0b19pbnRfdHJ1bmMgOiB0IC0+IGludCA9IFwiJWludDY0X3RvX2ludFwiXG5leHRlcm5hbCB0b19pbnQzMl90cnVuYyA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50X3RydW5jIDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuXG5sZXQgb2ZfaW50X2V4biA9IG9mX2ludFxubGV0IHRvX2ludCA9IENvbnYuaW50NjRfdG9faW50XG5sZXQgdG9faW50X2V4biA9IENvbnYuaW50NjRfdG9faW50X2V4blxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgPSBDb252LmludDY0X3RvX2ludDMyXG5sZXQgdG9faW50MzJfZXhuID0gQ29udi5pbnQ2NF90b19pbnQzMl9leG5cbmxldCBvZl9uYXRpdmVpbnQgPSBDb252Lm5hdGl2ZWludF90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludF9leG4gPSBvZl9uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnQgPSBDb252LmludDY0X3RvX25hdGl2ZWludFxubGV0IHRvX25hdGl2ZWludF9leG4gPSBDb252LmludDY0X3RvX25hdGl2ZWludF9leG5cblxubW9kdWxlIFBvdzIgPSBzdHJ1Y3RcbiAgb3BlbiEgSW1wb3J0XG4gIG9wZW4gSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHJhaXNlX3MgPSBFcnJvci5yYWlzZV9zXG5cbiAgbGV0IG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKSA9XG4gICAgUHJpbnRmLmludmFsaWRfYXJnZiBcImFyZ3VtZW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmVcIiAoKVxuICA7O1xuXG4gIGxldCAoIGxvciApID0gQ2FtbC5JbnQ2NC5sb2dvclxuICBsZXQgKCBsc3IgKSA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbFxuICBsZXQgKCBsYW5kICkgPSBDYW1sLkludDY0LmxvZ2FuZFxuXG4gICgqKiBcImNlaWxpbmcgcG93ZXIgb2YgMlwiIC0gTGVhc3QgcG93ZXIgb2YgMiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGNlaWxfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50NjQuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICBsZXQgeCA9IENhbWwuSW50NjQucHJlZCB4IGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBDYW1sLkludDY0LnN1Y2MgeFxuICA7O1xuXG4gICgqKiBcImZsb29yIHBvd2VyIG9mIDJcIiAtIExhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3IgZXF1YWwgdG8geC4gKilcbiAgbGV0IGZsb29yX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDY0Lnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMSkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAyKSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDQpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgOCkgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAxNikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciAzMikgaW5cbiAgICBDYW1sLkludDY0LnN1YiB4ICh4IGxzciAxKVxuICA7O1xuXG4gIGxldCBpc19wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQ2NC56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIHggbGFuZCBDYW1sLkludDY0LnByZWQgeCA9IENhbWwuSW50NjQuemVyb1xuICA7O1xuXG4gICgqIEMgc3R1YnMgZm9yIGludCBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50NjRbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50NjRfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQ2NFtAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDY0X2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQ2NF9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IENhbWwuSW50NjQuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIltJbnQ2NC5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQ2NCBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIFBvbHkuKCA8PSApIGkgQ2FtbC5JbnQ2NC56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDY0LmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50NjQgaSBdKTtcbiAgICBpZiBDYW1sLkludDY0LmVxdWFsIGkgQ2FtbC5JbnQ2NC5vbmUgdGhlbiAwIGVsc2UgbnVtX2JpdHMgLSBjbHogKENhbWwuSW50NjQucHJlZCBpKVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgUG93MlxuaW5jbHVkZSBDb252Lk1ha2UgKFQpXG5cbmluY2x1ZGUgQ29udi5NYWtlX2hleCAoc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBsZXQgY29tcGFyZSA9IChjb21wYXJlX2ludDY0IDogdCAtPiB0IC0+IGludClcblxuICAgIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICAgIGhhc2hfZm9sZF9pbnQ2NFxuXG4gICAgYW5kIChoYXNoIDogdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgICAgbGV0IGZ1bmMgPSBoYXNoX2ludDY0IGluXG4gICAgICBmdW4geCAtPiBmdW5jIHhcbiAgICA7O1xuXG4gICAgW0BAQGVuZF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICAgIGxldCBuZWcgPSBuZWdcbiAgICBsZXQgKCA8ICkgPSAoIDwgKVxuICAgIGxldCB0b19zdHJpbmcgaSA9IFByaW50Zi5zcHJpbnRmIFwiJUx4XCIgaVxuICAgIGxldCBvZl9zdHJpbmcgcyA9IENhbWwuU2NhbmYuc3NjYW5mIHMgXCIlTHhcIiBGbi5pZFxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQ2NC5IZXhcIlxuICBlbmQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkludDY0XCJcbiAgZW5kKVxuXG5tb2R1bGUgUHJlX08gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCArICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X2FkZFwiXG4gIGV4dGVybmFsICggLSApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9zdWJcIlxuICBleHRlcm5hbCAoICogKSA6IHQgLT4gdCAtPiB0ID0gXCIlaW50NjRfbXVsXCJcbiAgZXh0ZXJuYWwgKCAvICkgOiB0IC0+IHQgLT4gdCA9IFwiJWludDY0X2RpdlwiXG4gIGV4dGVybmFsICggfi0gKSA6IHQgLT4gdCA9IFwiJWludDY0X25lZ1wiXG5cbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IGFicyA9IGFic1xuXG4gIGV4dGVybmFsIG5lZyA6IHQgLT4gdCA9IFwiJWludDY0X25lZ1wiXG5cbiAgbGV0IHplcm8gPSB6ZXJvXG4gIGxldCBvZl9pbnRfZXhuID0gb2ZfaW50X2V4blxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgUHJlX09cblxuICBpbmNsdWRlIEludF9tYXRoLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgaW5jbHVkZSBQcmVfT1xuXG4gICAgICBsZXQgcmVtID0gcmVtXG4gICAgICBsZXQgdG9fZmxvYXQgPSB0b19mbG9hdFxuICAgICAgbGV0IG9mX2Zsb2F0ID0gb2ZfZmxvYXRcbiAgICAgIGxldCBvZl9zdHJpbmcgPSBULm9mX3N0cmluZ1xuICAgICAgbGV0IHRvX3N0cmluZyA9IFQudG9fc3RyaW5nXG4gICAgZW5kKVxuXG4gIGV4dGVybmFsICggbGFuZCApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9hbmRcIlxuICBleHRlcm5hbCAoIGxvciApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF9vclwiXG4gIGV4dGVybmFsICggbHhvciApIDogdCAtPiB0IC0+IHQgPSBcIiVpbnQ2NF94b3JcIlxuXG4gIGxldCBsbm90ID0gYml0X25vdFxuXG4gIGV4dGVybmFsICggbHNsICkgOiB0IC0+IGludCAtPiB0ID0gXCIlaW50NjRfbHNsXCJcbiAgZXh0ZXJuYWwgKCBhc3IgKSA6IHQgLT4gaW50IC0+IHQgPSBcIiVpbnQ2NF9hc3JcIlxuICBleHRlcm5hbCAoIGxzciApIDogdCAtPiBpbnQgLT4gdCA9IFwiJWludDY0X2xzclwiXG5lbmRcblxuaW5jbHVkZSBPXG5cbigqIFtJbnQ2NF0gYW5kIFtJbnQ2NC5PXSBhZ3JlZSB2YWx1ZS13aXNlICopXG5cbigqIEluY2x1ZGUgdHlwZS1zcGVjaWZpYyBbUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXSBhdCB0aGUgZW5kLCBhZnRlclxuICAgaW5jbHVkaW5nIGZ1bmN0b3IgYXBwbGljYXRpb24gdGhhdCBjb3VsZCBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzXG4gICBoZXJlIHNvIHRoYXQgZWZmaWNpZW50IHZlcnNpb25zIG9mIHRoZSBjb21wYXJpc29uIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgYnlcbiAgIHRoaXMgbW9kdWxlLiAqKVxuaW5jbHVkZSBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEEgNjNiaXQgaW50ZWdlciBpcyBhIDY0Yml0IGludGVnZXIgd2l0aCBpdHMgYml0cyBzaGlmdGVkIHRvIHRoZSBsZWZ0XG4gICBhbmQgaXRzIGxvd2VzdCBiaXQgc2V0IHRvIDAuXG4gICBUaGlzIGlzIHRoZSBzYW1lIGtpbmQgb2YgZW5jb2RpbmcgYXMgT0NhbWwgaW50IG9uIDY0Yml0IGFyY2hpdGVjdHVyZS5cbiAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmVpbmcgdGhlIGxvd2VzdCBiaXQgKGltbWVkaWF0ZSBiaXQpIHNldCB0byAxLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50NjRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cblxubW9kdWxlIFQwID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGxldCBjb21wYXJlID0gKGNvbXBhcmVfaW50NjQgOiB0IC0+IHQgLT4gaW50KVxuXG4gICAgbGV0IChoYXNoX2ZvbGRfdCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSkgPVxuICAgICAgaGFzaF9mb2xkX2ludDY0XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IGhhc2hfaW50NjQgaW5cbiAgICAgIGZ1biB4IC0+IGZ1bmMgeFxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwID0gKGludDY0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfaW50NjQgOiB0IC0+IFNleHBsaWIwLlNleHAudClcbiAgICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQ2NF9zZXhwX2dyYW1tYXJcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgQ29udiA9IEludF9jb252ZXJzaW9uc1xuXG5tb2R1bGUgVyA6IHNpZ1xuXG4gIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBUMFxuICBlbmRcblxuICB0eXBlIHQgPSBpbnQ2NFxuXG4gIHZhbCB3cmFwX2V4biA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCB3cmFwX21vZHVsbyA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCB1bndyYXAgOiB0IC0+IENhbWwuSW50NjQudFxuXG4gICgqKiBSZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIGludDY0IHRoYXQgaXMgZXF1YWwgdG8gdGhlIGlucHV0IGludDYzIG1vZHVsbyAyXjYzLiAqKVxuICB2YWwgdW53cmFwX3Vuc2lnbmVkIDogdCAtPiBDYW1sLkludDY0LnRcblxuICB2YWwgaW52YXJpYW50IDogdCAtPiB1bml0XG4gIHZhbCBhZGQgOiB0IC0+IHQgLT4gdFxuICB2YWwgc3ViIDogdCAtPiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgYWJzIDogdCAtPiB0XG4gIHZhbCBzdWNjIDogdCAtPiB0XG4gIHZhbCBwcmVkIDogdCAtPiB0XG4gIHZhbCBtdWwgOiB0IC0+IHQgLT4gdFxuICB2YWwgcG93IDogdCAtPiB0IC0+IHRcbiAgdmFsIGRpdiA6IHQgLT4gdCAtPiB0XG4gIHZhbCByZW0gOiB0IC0+IHQgLT4gdFxuICB2YWwgcG9wY291bnQgOiB0IC0+IGludFxuICB2YWwgYml0X25vdCA6IHQgLT4gdFxuICB2YWwgYml0X3hvciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBiaXRfb3IgOiB0IC0+IHQgLT4gdFxuICB2YWwgYml0X2FuZCA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzaGlmdF9sZWZ0IDogdCAtPiBpbnQgLT4gdFxuICB2YWwgc2hpZnRfcmlnaHQgOiB0IC0+IGludCAtPiB0XG4gIHZhbCBzaGlmdF9yaWdodF9sb2dpY2FsIDogdCAtPiBpbnQgLT4gdFxuICB2YWwgbWluX3ZhbHVlIDogdFxuICB2YWwgbWF4X3ZhbHVlIDogdFxuICB2YWwgdG9faW50NjQgOiB0IC0+IENhbWwuSW50NjQudFxuICB2YWwgb2ZfaW50NjQgOiBDYW1sLkludDY0LnQgLT4gdCBvcHRpb25cbiAgdmFsIG9mX2ludDY0X2V4biA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCBvZl9pbnQ2NF90cnVuYyA6IENhbWwuSW50NjQudCAtPiB0XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgY2VpbF9wb3cyIDogdCAtPiB0XG4gIHZhbCBmbG9vcl9wb3cyIDogdCAtPiB0XG4gIHZhbCBjZWlsX2xvZzIgOiB0IC0+IGludFxuICB2YWwgZmxvb3JfbG9nMiA6IHQgLT4gaW50XG4gIHZhbCBpc19wb3cyIDogdCAtPiBib29sXG4gIHZhbCBjbHogOiB0IC0+IGludFxuICB2YWwgY3R6IDogdCAtPiBpbnRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFQwXG5cbiAgdHlwZSB0ID0gaW50NjRcblxuICBsZXQgd3JhcF9leG4geCA9XG4gICAgKCogUmFpc2VzIGlmIHRoZSBpbnQ2NCB2YWx1ZSBkb2VzIG5vdCBmaXQgb24gaW50NjMuICopXG4gICAgQ29udi5pbnQ2NF9maXRfb25faW50NjNfZXhuIHg7XG4gICAgQ2FtbC5JbnQ2NC5tdWwgeCAyTFxuICA7O1xuXG4gIGxldCB3cmFwIHggPVxuICAgIGlmIENvbnYuaW50NjRfaXNfcmVwcmVzZW50YWJsZV9hc19pbnQ2MyB4IHRoZW4gU29tZSAoQ2FtbC5JbnQ2NC5tdWwgeCAyTCkgZWxzZSBOb25lXG4gIDs7XG5cbiAgbGV0IHdyYXBfbW9kdWxvIHggPSBDYW1sLkludDY0Lm11bCB4IDJMXG4gIGxldCB1bndyYXAgeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHQgeCAxXG4gIGxldCB1bndyYXBfdW5zaWduZWQgeCA9IENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDFcblxuICAoKiBUaGlzIGRvZXMgbm90IHVzZSB3cmFwIG9yIHVud3JhcCB0byBhdm9pZCBnZW5lcmF0aW5nIGV4Y2VwdGlvbnMgaW4gdGhlIGNhc2Ugb2ZcbiAgICAgb3ZlcmZsb3dzLiBUaGlzIGlzIHRvIHByZXNlcnZlIHRoZSBzZW1hbnRpY3Mgb2YgaW50IHR5cGUgb24gNjQgYml0IGFyY2hpdGVjdHVyZS4gKilcbiAgbGV0IGYyIGYgYSBiID1cbiAgICBDYW1sLkludDY0Lm11bCAoZiAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCBhIDEpIChDYW1sLkludDY0LnNoaWZ0X3JpZ2h0IGIgMSkpIDJMXG4gIDs7XG5cbiAgbGV0IG1hc2sgPSAweGZmZmZfZmZmZl9mZmZmX2ZmZmVMXG4gIGxldCBtIHggPSBDYW1sLkludDY0LmxvZ2FuZCB4IG1hc2tcbiAgbGV0IGludmFyaWFudCB0ID0gYXNzZXJ0IChtIHQgPSB0KVxuICBsZXQgYWRkIHggeSA9IENhbWwuSW50NjQuYWRkIHggeVxuICBsZXQgc3ViIHggeSA9IENhbWwuSW50NjQuc3ViIHggeVxuICBsZXQgbmVnIHggPSBDYW1sLkludDY0Lm5lZyB4XG4gIGxldCBhYnMgeCA9IENhbWwuSW50NjQuYWJzIHhcbiAgbGV0IG9uZSA9IHdyYXBfZXhuIDFMXG4gIGxldCBzdWNjIGEgPSBhZGQgYSBvbmVcbiAgbGV0IHByZWQgYSA9IHN1YiBhIG9uZVxuICBsZXQgbWluX3ZhbHVlID0gbSBDYW1sLkludDY0Lm1pbl9pbnRcbiAgbGV0IG1heF92YWx1ZSA9IG0gQ2FtbC5JbnQ2NC5tYXhfaW50XG4gIGxldCBiaXRfbm90IHggPSBtIChDYW1sLkludDY0LmxvZ25vdCB4KVxuICBsZXQgYml0X2FuZCA9IENhbWwuSW50NjQubG9nYW5kXG4gIGxldCBiaXRfeG9yID0gQ2FtbC5JbnQ2NC5sb2d4b3JcbiAgbGV0IGJpdF9vciA9IENhbWwuSW50NjQubG9nb3JcbiAgbGV0IHNoaWZ0X2xlZnQgeCBpID0gQ2FtbC5JbnQ2NC5zaGlmdF9sZWZ0IHggaVxuICBsZXQgc2hpZnRfcmlnaHQgeCBpID0gbSAoQ2FtbC5JbnQ2NC5zaGlmdF9yaWdodCB4IGkpXG4gIGxldCBzaGlmdF9yaWdodF9sb2dpY2FsIHggaSA9IG0gKENhbWwuSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IGkpXG4gIGxldCBwb3cgPSBmMiBJbnRfbWF0aC5Qcml2YXRlLmludDYzX3Bvd19vbl9pbnQ2NFxuICBsZXQgbXVsIGEgYiA9IENhbWwuSW50NjQubXVsIGEgKENhbWwuSW50NjQuc2hpZnRfcmlnaHQgYiAxKVxuICBsZXQgZGl2IGEgYiA9IHdyYXBfbW9kdWxvIChDYW1sLkludDY0LmRpdiBhIGIpXG4gIGxldCByZW0gYSBiID0gQ2FtbC5JbnQ2NC5yZW0gYSBiXG4gIGxldCBwb3Bjb3VudCB4ID0gUG9wY291bnQuaW50NjRfcG9wY291bnQgeFxuICBsZXQgdG9faW50NjQgdCA9IHVud3JhcCB0XG4gIGxldCBvZl9pbnQ2NCB0ID0gd3JhcCB0XG4gIGxldCBvZl9pbnQ2NF9leG4gdCA9IHdyYXBfZXhuIHRcbiAgbGV0IG9mX2ludDY0X3RydW5jIHQgPSB3cmFwX21vZHVsbyB0XG4gIGxldCB0X29mX3NleHAgeCA9IHdyYXBfZXhuIChpbnQ2NF9vZl9zZXhwIHgpXG4gIGxldCBzZXhwX29mX3QgeCA9IHNleHBfb2ZfaW50NjQgKHVud3JhcCB4KVxuICBsZXQgY29tcGFyZSAoeCA6IHQpIHkgPSBjb21wYXJlIHggeVxuICBsZXQgaXNfcG93MiB4ID0gSW50NjQuaXNfcG93MiAodW53cmFwIHgpXG5cbiAgbGV0IGNseiB4ID1cbiAgICAoKiBXZSBydW4gSW50NjQuY2x6IGRpcmVjdGx5IG9uIHRoZSB3cmFwcGVkIGludDYzIHZhbHVlLiBUaGlzIGlzIGNvcnJlY3QgYmVjYXVzZSB0aGVcbiAgICAgICBiaXRzIG9mIHRoZSBpbnQ2M19lbXVsIGFyZSBsZWZ0LWFsaWduZWQgaW4gdGhlIEludDY0LiAqKVxuICAgIEludDY0LmNseiB4XG4gIDs7XG5cbiAgbGV0IGN0eiB4ID0gSW50NjQuY3R6ICh1bndyYXAgeClcbiAgbGV0IGZsb29yX3BvdzIgeCA9IEludDY0LmZsb29yX3BvdzIgKHVud3JhcCB4KSB8PiB3cmFwX2V4blxuICBsZXQgY2VpbF9wb3cyIHggPSBJbnQ2NC5mbG9vcl9wb3cyICh1bndyYXAgeCkgfD4gd3JhcF9leG5cbiAgbGV0IGZsb29yX2xvZzIgeCA9IEludDY0LmZsb29yX2xvZzIgKHVud3JhcCB4KVxuICBsZXQgY2VpbF9sb2cyIHggPSBJbnQ2NC5jZWlsX2xvZzIgKHVud3JhcCB4KVxuZW5kXG5cbm9wZW4gV1xuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBXLnQgW0BAZGVyaXZpbmdfaW5saW5lIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgVy5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IFcuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoVy50X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdClcbiAgbGV0IHNleHBfb2ZfdCA9IChXLnNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBXLnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFcuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBXLmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmUgPSBXLmNvbXBhcmVcbiAgbGV0IGludmFyaWFudCA9IFcuaW52YXJpYW50XG5cbiAgKCogV2UgZG9uJ3QgZXhwZWN0IFtoYXNoXSB0byBmb2xsb3cgdGhlIGJlaGF2aW9yIG9mIGludCBpbiA2NGJpdCBhcmNoaXRlY3R1cmUgKilcbiAgbGV0IF8gPSBoYXNoXG4gIGxldCBoYXNoICh4IDogdCkgPSBDYW1sLkhhc2h0YmwuaGFzaCB4XG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGludmFsaWRfc3RyIHggPSBQcmludGYuZmFpbHdpdGhmIFwiSW50NjMub2Zfc3RyaW5nOiBpbnZhbGlkIGlucHV0ICVTXCIgeCAoKVxuXG4gICgqXG4gICAgIFwic2lnblwiIHJlZmVycyB0byB3aGV0aGVyIHRoZSBudW1iZXIgc3RhcnRzIHdpdGggYSAnLSdcbiAgICAgXCJzaWduZWRuZXNzID0gZmFsc2VcIiBtZWFucyB0aGUgcmVzdCBvZiB0aGUgbnVtYmVyIGlzIHBhcnNlZCBhcyB1bnNpZ25lZCBhbmQgdGhlbiBjYXN0XG4gICAgIHRvIHNpZ25lZCB3aXRoIHdyYXAtYXJvdW5kIG1vZHVsbyAyXmlcbiAgICAgXCJzaWduZWRuZXNzID0gdHJ1ZVwiIG1lYW5zIG5vIHN1Y2ggY3JhemluZXNzIGhhcHBlbnNcblxuICAgICBUaGUgdGVybWlub2xvZ3kgYW5kIHRoZSBsb2dpYyBpcyBkdWUgdG8gdGhlIGNvZGUgaW4gYnl0ZXJ1bi9pbnRzLmMgaW4gb2NhbWwgNC4wM1xuICAgICAoW3BhcnNlX3NpZ25fYW5kX2Jhc2VdIGZ1bmN0aW9uKS5cblxuICAgICBTaWduZWRuZXNzIGVxdWFscyB0cnVlIGZvciBwbGFpbiBkZWNpbWFsIG51bWJlciAoZS5nLiAxMjM1LCAtNjc4OSlcblxuICAgICBTaWduZWRuZXNzIGVxdWFscyBmYWxzZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAtIFsweGZmZmZdLCBbLTB4ZmZmZl0gKGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uKVxuICAgICAtIFswYjAxMDFdLCBbLTBiMDEwMV0gKGJpbmFyeSByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMG8xMjM3XSwgWy0wbzEyMzddIChvY3RhbCByZXByZXNlbnRhdGlvbilcbiAgICAgLSBbMHU5ODEyXSwgWy0wdTk4MTJdICh1bnNpZ25lZCBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIC0gYXZhaWxhYmxlIGZyb20gT0NhbWwgNC4wMykgKilcbiAgbGV0IHNpZ25fYW5kX3NpZ25lZG5lc3MgeCA9XG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggeCBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBsZXQgcG9zLCBzaWduID1cbiAgICAgIGlmIDAgPCBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCB4LlswXSB3aXRoXG4gICAgICAgIHwgJy0nIC0+IDEsIGBOZWdcbiAgICAgICAgfCAnKycgLT4gMSwgYFBvc1xuICAgICAgICB8IF8gLT4gMCwgYFBvcylcbiAgICAgIGVsc2UgMCwgYFBvc1xuICAgIGluXG4gICAgaWYgcG9zICsgMiA8IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IGMxID0geC5bcG9zXSBpblxuICAgICAgbGV0IGMyID0geC5bcG9zICsgMV0gaW5cbiAgICAgIG1hdGNoIGMxLCBjMiB3aXRoXG4gICAgICB8ICcwJywgJzAnIC4uICc5JyAtPiBzaWduLCB0cnVlXG4gICAgICB8ICcwJywgXyAtPiBzaWduLCBmYWxzZVxuICAgICAgfCBfIC0+IHNpZ24sIHRydWUpXG4gICAgZWxzZSBzaWduLCB0cnVlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB4ID0gQ2FtbC5JbnQ2NC50b19zdHJpbmcgKHVud3JhcCB4KVxuXG4gIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICB0cnlcbiAgICAgIGxldCBzaWduLCBzaWduZWRuZXNzID0gc2lnbl9hbmRfc2lnbmVkbmVzcyBzdHIgaW5cbiAgICAgIGlmIHNpZ25lZG5lc3NcbiAgICAgIHRoZW4gb2ZfaW50NjRfZXhuIChDYW1sLkludDY0Lm9mX3N0cmluZyBzdHIpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHBvc19zdHIgPVxuICAgICAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgICAgIHwgYE5lZyAtPiBTdHJpbmcuc3ViIHN0ciB+cG9zOjEgfmxlbjooU3RyaW5nLmxlbmd0aCBzdHIgLSAxKVxuICAgICAgICAgIHwgYFBvcyAtPiBzdHJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGludDY0ID0gQ2FtbC5JbnQ2NC5vZl9zdHJpbmcgcG9zX3N0ciBpblxuICAgICAgICAoKiB1bnNpZ25lZCA2My1iaXQgaW50IG11c3QgcGFyc2UgYXMgYSBwb3NpdGl2ZSBzaWduZWQgNjQtYml0IGludCAqKVxuICAgICAgICBpZiBJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgaW50NjQgMEwgdGhlbiBpbnZhbGlkX3N0ciBzdHI7XG4gICAgICAgIGxldCBpbnQ2MyA9IHdyYXBfbW9kdWxvIGludDY0IGluXG4gICAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgICB8IGBOZWcgLT4gbmVnIGludDYzXG4gICAgICAgIHwgYFBvcyAtPiBpbnQ2MylcbiAgICB3aXRoXG4gICAgfCBfIC0+IGludmFsaWRfc3RyIHN0clxuICA7O1xuXG4gIGxldCBic3dhcDE2IHQgPSB3cmFwX21vZHVsbyAoSW50NjQuYnN3YXAxNiAodW53cmFwIHQpKVxuICBsZXQgYnN3YXAzMiB0ID0gd3JhcF9tb2R1bG8gKEludDY0LmJzd2FwMzIgKHVud3JhcCB0KSlcbiAgbGV0IGJzd2FwNDggdCA9IHdyYXBfbW9kdWxvIChJbnQ2NC5ic3dhcDQ4ICh1bndyYXAgdCkpXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBudW1fYml0cyA9IDYzXG5sZXQgZmxvYXRfbG93ZXJfYm91bmQgPSBGbG9hdDAubG93ZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X3VwcGVyX2JvdW5kID0gRmxvYXQwLnVwcGVyX2JvdW5kX2Zvcl9pbnQgbnVtX2JpdHNcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBiaXRfbm90XG5sZXQgYml0X3hvciA9IGJpdF94b3JcbmxldCBiaXRfb3IgPSBiaXRfb3JcbmxldCBiaXRfYW5kID0gYml0X2FuZFxubGV0IHBvcGNvdW50ID0gcG9wY291bnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcG93ID0gcG93XG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWF4X3ZhbHVlID0gbWF4X3ZhbHVlXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlXG5sZXQgbWludXNfb25lID0gd3JhcF9leG4gQ2FtbC5JbnQ2NC5taW51c19vbmVcbmxldCBvbmUgPSB3cmFwX2V4biBDYW1sLkludDY0Lm9uZVxubGV0IHplcm8gPSB3cmFwX2V4biBDYW1sLkludDY0Lnplcm9cbmxldCBpc19wb3cyID0gaXNfcG93MlxubGV0IGZsb29yX3BvdzIgPSBmbG9vcl9wb3cyXG5sZXQgY2VpbF9wb3cyID0gY2VpbF9wb3cyXG5sZXQgZmxvb3JfbG9nMiA9IGZsb29yX2xvZzJcbmxldCBjZWlsX2xvZzIgPSBjZWlsX2xvZzJcbmxldCBjbHogPSBjbHpcbmxldCBjdHogPSBjdHpcbmxldCB0b19mbG9hdCB4ID0gQ2FtbC5JbnQ2NC50b19mbG9hdCAodW53cmFwIHgpXG5sZXQgb2ZfZmxvYXRfdW5jaGVja2VkIHggPSB3cmFwX21vZHVsbyAoQ2FtbC5JbnQ2NC5vZl9mbG9hdCB4KVxuXG5sZXQgb2ZfZmxvYXQgdCA9XG4gIGxldCBvcGVuIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiB0ID49IGZsb2F0X2xvd2VyX2JvdW5kICYmIHQgPD0gZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiB3cmFwX21vZHVsbyAoQ2FtbC5JbnQ2NC5vZl9mbG9hdCB0KVxuICBlbHNlXG4gICAgUHJpbnRmLmludmFsaWRfYXJnZlxuICAgICAgXCJJbnQ2My5vZl9mbG9hdDogYXJndW1lbnQgKCVmKSBpcyBvdXQgb2YgcmFuZ2Ugb3IgTmFOXCJcbiAgICAgIChGbG9hdDAuYm94IHQpXG4gICAgICAoKVxuOztcblxubGV0IG9mX2ludDY0ID0gb2ZfaW50NjRcbmxldCBvZl9pbnQ2NF9leG4gPSBvZl9pbnQ2NF9leG5cbmxldCBvZl9pbnQ2NF90cnVuYyA9IG9mX2ludDY0X3RydW5jXG5sZXQgdG9faW50NjQgPSB0b19pbnQ2NFxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbmxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxubGV0IGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heCA9IGlmIHQgPCBtaW4gdGhlbiBtaW4gZWxzZSBpZiB0IDw9IG1heCB0aGVuIHQgZWxzZSBtYXhcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gIGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heFxuOztcblxubGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgaWYgbWluID4gbWF4XG4gIHRoZW5cbiAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICBcImNsYW1wIHJlcXVpcmVzIFttaW4gPD0gbWF4XVwiXG4gICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gIGVsc2UgT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbjs7XG5cbmxldCAoIC8gKSA9IGRpdlxubGV0ICggKiApID0gbXVsXG5sZXQgKCAtICkgPSBzdWJcbmxldCAoICsgKSA9IGFkZFxubGV0ICggfi0gKSA9IG5lZ1xubGV0ICggKiogKSBiIGUgPSBwb3cgYiBlXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcblxuKCogV2UgY2FuIHJldXNlIGNvbnZlcnNpb24gZnVuY3Rpb24gZnJvbS90byBpbnQ2NCBoZXJlLiAqKVxubGV0IG9mX2ludCB4ID0gd3JhcF9leG4gKENvbnYuaW50X3RvX2ludDY0IHgpXG5sZXQgb2ZfaW50X2V4biB4ID0gb2ZfaW50IHhcbmxldCB0b19pbnQgeCA9IENvbnYuaW50NjRfdG9faW50ICh1bndyYXAgeClcbmxldCB0b19pbnRfZXhuIHggPSBDb252LmludDY0X3RvX2ludF9leG4gKHVud3JhcCB4KVxubGV0IHRvX2ludF90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnRfdHJ1bmMgKHVud3JhcCB4KVxubGV0IG9mX2ludDMyIHggPSB3cmFwX2V4biAoQ29udi5pbnQzMl90b19pbnQ2NCB4KVxubGV0IG9mX2ludDMyX2V4biB4ID0gb2ZfaW50MzIgeFxubGV0IHRvX2ludDMyIHggPSBDb252LmludDY0X3RvX2ludDMyICh1bndyYXAgeClcbmxldCB0b19pbnQzMl9leG4geCA9IENvbnYuaW50NjRfdG9faW50MzJfZXhuICh1bndyYXAgeClcbmxldCB0b19pbnQzMl90cnVuYyB4ID0gQ29udi5pbnQ2NF90b19pbnQzMl90cnVuYyAodW53cmFwIHgpXG5sZXQgb2ZfbmF0aXZlaW50IHggPSBvZl9pbnQ2NCAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfZXhuIHggPSB3cmFwX2V4biAoQ29udi5uYXRpdmVpbnRfdG9faW50NjQgeClcbmxldCBvZl9uYXRpdmVpbnRfdHJ1bmMgeCA9IG9mX2ludDY0X3RydW5jIChDb252Lm5hdGl2ZWludF90b19pbnQ2NCB4KVxubGV0IHRvX25hdGl2ZWludCB4ID0gQ29udi5pbnQ2NF90b19uYXRpdmVpbnQgKHVud3JhcCB4KVxubGV0IHRvX25hdGl2ZWludF9leG4geCA9IENvbnYuaW50NjRfdG9fbmF0aXZlaW50X2V4biAodW53cmFwIHgpXG5sZXQgdG9fbmF0aXZlaW50X3RydW5jIHggPSBDb252LmludDY0X3RvX25hdGl2ZWludF90cnVuYyAodW53cmFwIHgpXG5cbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgaGFzaF1cblxuICAgIGxldCBjb21wYXJlID0gKFQuY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBULmhhc2hfZm9sZF90XG5cbiAgICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgICBsZXQgZnVuYyA9IFQuaGFzaCBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcblxuICAgIGxldCB0b19zdHJpbmcgaSA9XG4gICAgICAoKiB0aGUgdXNlIG9mIFt1bndyYXBfdW5zaWduZWRdIGhlcmUgaXMgaW1wb3J0YW50IGZvciB0aGUgY2FzZSBvZiBbbWluX3ZhbHVlXSAqKVxuICAgICAgUHJpbnRmLnNwcmludGYgXCIlTHhcIiAodW53cmFwX3Vuc2lnbmVkIGkpXG4gICAgOztcblxuICAgIGxldCBvZl9zdHJpbmcgcyA9IG9mX3N0cmluZyAoXCIweFwiIF4gcylcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjMuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyB4ID0gdG9fc3RyaW5nIHhcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50NjNcIlxuICBlbmQpXG5cbm1vZHVsZSBQcmVfTyA9IHN0cnVjdFxuICBsZXQgKCArICkgPSAoICsgKVxuICBsZXQgKCAtICkgPSAoIC0gKVxuICBsZXQgKCAqICkgPSAoICogKVxuICBsZXQgKCAvICkgPSAoIC8gKVxuICBsZXQgKCB+LSApID0gKCB+LSApXG4gIGxldCAoICoqICkgPSAoICoqIClcblxuICBpbmNsdWRlIChJbnQ2NF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDYzXSBhbmQgW0ludDYzLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcblxubW9kdWxlIFJlcHIgPSBzdHJ1Y3RcbiAgdHlwZSBlbXVsYXRlZCA9IHRcblxuICB0eXBlICgndW5kZXJseWluZ190eXBlLCAnaW50ZXJtZWRpYXRlX3R5cGUpIHQgPVxuICAgIHwgSW50IDogKGludCwgaW50KSB0XG4gICAgfCBJbnQ2NCA6IChpbnQ2NCwgZW11bGF0ZWQpIHRcbmVuZFxuXG5sZXQgcmVwciA9IFJlcHIuSW50NjRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEludDY0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBpbnZhbGlkX2FyZ2YgPSBQcmludGYuaW52YWxpZF9hcmdmXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgdCA9IGJvb2wgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVudW1lcmF0ZSwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfYm9vbCA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBmYWxzZTsgdHJ1ZSBdIDogdCBsaXN0KVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfYm9vbFxuXG4gIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICBsZXQgZnVuYyA9IGhhc2hfYm9vbCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgPSAoYm9vbF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9ib29sIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IGJvb2xfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgaGFzaGFibGUgOiB0IEhhc2hhYmxlLnQgPSB7IGhhc2g7IGNvbXBhcmU7IHNleHBfb2ZfdCB9XG5cbiAgbGV0IG9mX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBcInRydWVcIiAtPiB0cnVlXG4gICAgfCBcImZhbHNlXCIgLT4gZmFsc2VcbiAgICB8IHMgLT4gaW52YWxpZF9hcmdmIFwiQm9vbC5vZl9zdHJpbmc6IGV4cGVjdGVkIHRydWUgb3IgZmFsc2UgYnV0IGdvdCAlc1wiIHMgKClcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nID0gQ2FtbC5zdHJpbmdfb2ZfYm9vbFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJCYXNlLkJvb2xcIlxuICBlbmQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4hIEJvb2xfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcbmxldCBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXggPSBpZiB0IDwgbWluIHRoZW4gbWluIGVsc2UgaWYgdCA8PSBtYXggdGhlbiB0IGVsc2UgbWF4XG5cbmxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICBhc3NlcnQgKG1pbiA8PSBtYXgpO1xuICBjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXhcbjs7XG5cbmxldCBjbGFtcCB0IH5taW4gfm1heCA9XG4gIGlmIG1pbiA+IG1heFxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgWyBcIm1pblwiLCBULnNleHBfb2ZfdCBtaW47IFwibWF4XCIsIFQuc2V4cF9vZl90IG1heCBdKVxuICBlbHNlIE9rIChjbGFtcF91bmNoZWNrZWQgdCB+bWluIH5tYXgpXG47O1xuXG5sZXQgdG9faW50IHggPSBib29sX3RvX2ludCB4XG5cbm1vZHVsZSBOb25fc2hvcnRfY2lyY3VpdGluZyA9IHN0cnVjdFxuICAoKiBXZSBkb24ndCBleHBvc2UgdGhpcywgc2luY2Ugd2UgZG9uJ3Qgd2FudCB0byBicmVhayB0aGUgaW52YXJpYW50IG1lbnRpb25lZCBiZWxvdyBvZlxuICAgICAodG9faW50IHRydWUgPSAxKSBhbmQgKHRvX2ludCBmYWxzZSA9IDApLiAqKVxuICBsZXQgdW5zYWZlX29mX2ludCAoeCA6IGludCkgOiBib29sID0gQ2FtbC5PYmoubWFnaWMgeFxuICBsZXQgKCB8fCApIGEgYiA9IHVuc2FmZV9vZl9pbnQgKHRvX2ludCBhIGxvciB0b19pbnQgYilcbiAgbGV0ICggJiYgKSBhIGIgPSB1bnNhZmVfb2ZfaW50ICh0b19pbnQgYSBsYW5kIHRvX2ludCBiKVxuZW5kXG5cbigqIFdlIGRvIHRoaXMgYXMgYSBkaXJlY3QgYXNzZXJ0IG9uIHRoZSB0aGVvcnkgdGhhdCBpdCdzIGEgY2hlYXAgdGhpbmcgdG8gdGVzdCBhbmQgYVxuICAgcmVhbGx5IGNvcmUgaW52YXJpYW50IHRoYXQgd2UgbmV2ZXIgZXhwZWN0IHRvIGJyZWFrLCBhbmQgd2Ugc2hvdWxkIGJlIGhhcHB5IGZvciBhXG4gICBwcm9ncmFtIHRvIGZhaWwgaW1tZWRpYXRlbHkgaWYgdGhpcyBpcyB2aW9sYXRlZC4gKilcbmxldCAoKSA9IGFzc2VydCAoUG9seS4oID0gKSAodG9faW50IHRydWUpIDEgJiYgUG9seS4oID0gKSAodG9faW50IGZhbHNlKSAwKVxuXG4oKiBJbmNsdWRlIHR5cGUtc3BlY2lmaWMgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYXQgdGhlIGVuZCwgYWZ0ZXJcbiAgIGluY2x1ZGluZyBmdW5jdG9yIGFwcGxpY2F0aW9uIHRoYXQgY291bGQgc2hhZG93IGl0cyBkZWZpbml0aW9ucy4gVGhpcyBpc1xuICAgaGVyZSBzbyB0aGF0IGVmZmljaWVudCB2ZXJzaW9ucyBvZiB0aGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGJ5XG4gICB0aGlzIG1vZHVsZS4gKilcbmluY2x1ZGUgQm9vbF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgQ2FtbC5JbnQzMlxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfaW50MzJcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2ludDMyIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChpbnQzMl9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9pbnQzMiA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBpbnQzMl9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgKHggOiB0KSB5ID0gY29tcGFyZSB4IHlcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5lbmRcblxuaW5jbHVkZSBUXG5pbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcblxubGV0IG51bV9iaXRzID0gMzJcbmxldCBmbG9hdF9sb3dlcl9ib3VuZCA9IEZsb2F0MC5sb3dlcl9ib3VuZF9mb3JfaW50IG51bV9iaXRzXG5sZXQgZmxvYXRfdXBwZXJfYm91bmQgPSBGbG9hdDAudXBwZXJfYm91bmRfZm9yX2ludCBudW1fYml0c1xubGV0IGZsb2F0X29mX2JpdHMgPSBmbG9hdF9vZl9iaXRzXG5sZXQgYml0c19vZl9mbG9hdCA9IGJpdHNfb2ZfZmxvYXRcbmxldCBzaGlmdF9yaWdodF9sb2dpY2FsID0gc2hpZnRfcmlnaHRfbG9naWNhbFxubGV0IHNoaWZ0X3JpZ2h0ID0gc2hpZnRfcmlnaHRcbmxldCBzaGlmdF9sZWZ0ID0gc2hpZnRfbGVmdFxubGV0IGJpdF9ub3QgPSBsb2dub3RcbmxldCBiaXRfeG9yID0gbG9neG9yXG5sZXQgYml0X29yID0gbG9nb3JcbmxldCBiaXRfYW5kID0gbG9nYW5kXG5sZXQgbWluX3ZhbHVlID0gbWluX2ludFxubGV0IG1heF92YWx1ZSA9IG1heF9pbnRcbmxldCBhYnMgPSBhYnNcbmxldCBwcmVkID0gcHJlZFxubGV0IHN1Y2MgPSBzdWNjXG5sZXQgcmVtID0gcmVtXG5sZXQgbmVnID0gbmVnXG5sZXQgbWludXNfb25lID0gbWludXNfb25lXG5sZXQgb25lID0gb25lXG5sZXQgemVybyA9IHplcm9cbmxldCBjb21wYXJlID0gY29tcGFyZVxubGV0IHRvX2Zsb2F0ID0gdG9fZmxvYXRcbmxldCBvZl9mbG9hdF91bmNoZWNrZWQgPSBvZl9mbG9hdFxuXG5sZXQgb2ZfZmxvYXQgZiA9XG4gIGlmIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oID49ICkgZiBmbG9hdF9sb3dlcl9ib3VuZFxuICAmJiBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8PSApIGYgZmxvYXRfdXBwZXJfYm91bmRcbiAgdGhlbiBvZl9mbG9hdCBmXG4gIGVsc2VcbiAgICBQcmludGYuaW52YWxpZF9hcmdmXG4gICAgICBcIkludDMyLm9mX2Zsb2F0OiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggZilcbiAgICAgICgpXG47O1xuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbm1vZHVsZSBJbmZpeF9jb21wYXJlID0gc3RydWN0XG4gIG9wZW4gUG9seVxuXG4gIGxldCAoID49ICkgKHggOiB0KSB5ID0geCA+PSB5XG4gIGxldCAoIDw9ICkgKHggOiB0KSB5ID0geCA8PSB5XG4gIGxldCAoID0gKSAoeCA6IHQpIHkgPSB4ID0geVxuICBsZXQgKCA+ICkgKHggOiB0KSB5ID0geCA+IHlcbiAgbGV0ICggPCApICh4IDogdCkgeSA9IHggPCB5XG4gIGxldCAoIDw+ICkgKHggOiB0KSB5ID0geCA8PiB5XG5lbmRcblxubW9kdWxlIENvbXBhcmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBJbmZpeF9jb21wYXJlXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBhc2NlbmRpbmcgPSBjb21wYXJlXG4gIGxldCBkZXNjZW5kaW5nIHggeSA9IGNvbXBhcmUgeSB4XG4gIGxldCBtaW4gKHggOiB0KSB5ID0gaWYgeCA8IHkgdGhlbiB4IGVsc2UgeVxuICBsZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbiAgbGV0IGVxdWFsICh4IDogdCkgeSA9IHggPSB5XG4gIGxldCBiZXR3ZWVuIHQgfmxvdyB+aGlnaCA9IGxvdyA8PSB0ICYmIHQgPD0gaGlnaFxuICBsZXQgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4ID0gaWYgdCA8IG1pbiB0aGVuIG1pbiBlbHNlIGlmIHQgPD0gbWF4IHRoZW4gdCBlbHNlIG1heFxuXG4gIGxldCBjbGFtcF9leG4gdCB+bWluIH5tYXggPVxuICAgIGFzc2VydCAobWluIDw9IG1heCk7XG4gICAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG4gIDs7XG5cbiAgbGV0IGNsYW1wIHQgfm1pbiB+bWF4ID1cbiAgICBpZiBtaW4gPiBtYXhcbiAgICB0aGVuXG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgICAgXCJjbGFtcCByZXF1aXJlcyBbbWluIDw9IG1heF1cIlxuICAgICAgICAgICBbIFwibWluXCIsIFQuc2V4cF9vZl90IG1pbjsgXCJtYXhcIiwgVC5zZXhwX29mX3QgbWF4IF0pXG4gICAgZWxzZSBPayAoY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4KVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgQ29tcGFyZVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0ICggLyApID0gZGl2XG5sZXQgKCAqICkgPSBtdWxcbmxldCAoIC0gKSA9IHN1YlxubGV0ICggKyApID0gYWRkXG5sZXQgKCB+LSApID0gbmVnXG5sZXQgaW5jciByID0gciA6PSAhciArIG9uZVxubGV0IGRlY3IgciA9IHIgOj0gIXIgLSBvbmVcbmxldCBvZl9pbnQzMiB0ID0gdFxubGV0IG9mX2ludDMyX2V4biA9IG9mX2ludDMyXG5sZXQgdG9faW50MzIgdCA9IHRcbmxldCB0b19pbnQzMl9leG4gPSB0b19pbnQzMlxubGV0IHBvcGNvdW50ID0gUG9wY291bnQuaW50MzJfcG9wY291bnRcblxubW9kdWxlIENvbnYgPSBJbnRfY29udmVyc2lvbnNcblxubGV0IG9mX2ludCA9IENvbnYuaW50X3RvX2ludDMyXG5sZXQgb2ZfaW50X2V4biA9IENvbnYuaW50X3RvX2ludDMyX2V4blxubGV0IG9mX2ludF90cnVuYyA9IENvbnYuaW50X3RvX2ludDMyX3RydW5jXG5sZXQgdG9faW50ID0gQ29udi5pbnQzMl90b19pbnRcbmxldCB0b19pbnRfZXhuID0gQ29udi5pbnQzMl90b19pbnRfZXhuXG5sZXQgdG9faW50X3RydW5jID0gQ29udi5pbnQzMl90b19pbnRfdHJ1bmNcbmxldCBvZl9pbnQ2NCA9IENvbnYuaW50NjRfdG9faW50MzJcbmxldCBvZl9pbnQ2NF9leG4gPSBDb252LmludDY0X3RvX2ludDMyX2V4blxubGV0IG9mX2ludDY0X3RydW5jID0gQ29udi5pbnQ2NF90b19pbnQzMl90cnVuY1xubGV0IHRvX2ludDY0ID0gQ29udi5pbnQzMl90b19pbnQ2NFxubGV0IG9mX25hdGl2ZWludCA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyXG5sZXQgb2ZfbmF0aXZlaW50X2V4biA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX2V4blxubGV0IG9mX25hdGl2ZWludF90cnVuYyA9IENvbnYubmF0aXZlaW50X3RvX2ludDMyX3RydW5jXG5sZXQgdG9fbmF0aXZlaW50ID0gQ29udi5pbnQzMl90b19uYXRpdmVpbnRcbmxldCB0b19uYXRpdmVpbnRfZXhuID0gdG9fbmF0aXZlaW50XG5sZXQgcG93IGIgZSA9IG9mX2ludF9leG4gKEludF9tYXRoLlByaXZhdGUuaW50X3BvdyAodG9faW50X2V4biBiKSAodG9faW50X2V4biBlKSlcbmxldCAoICoqICkgYiBlID0gcG93IGIgZVxuXG5leHRlcm5hbCBic3dhcDMyIDogdCAtPiB0ID0gXCIlYnN3YXBfaW50MzJcIlxuXG5sZXQgYnN3YXAxNiB4ID0gQ2FtbC5JbnQzMi5zaGlmdF9yaWdodF9sb2dpY2FsIChic3dhcDMyIHgpIDE2XG5cbm1vZHVsZSBQb3cyID0gc3RydWN0XG4gIG9wZW4hIEltcG9ydFxuICBvcGVuIEludDMyX3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4gIGxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG4gIGxldCBub25fcG9zaXRpdmVfYXJndW1lbnQgKCkgPVxuICAgIFByaW50Zi5pbnZhbGlkX2FyZ2YgXCJhcmd1bWVudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlXCIgKClcbiAgOztcblxuICBsZXQgKCBsb3IgKSA9IENhbWwuSW50MzIubG9nb3JcbiAgbGV0ICggbHNyICkgPSBDYW1sLkludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbiAgbGV0ICggbGFuZCApID0gQ2FtbC5JbnQzMi5sb2dhbmRcblxuICAoKiogXCJjZWlsaW5nIHBvd2VyIG9mIDJcIiAtIExlYXN0IHBvd2VyIG9mIDIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBjZWlsX3BvdzIgeCA9XG4gICAgaWYgeCA8PSBDYW1sLkludDMyLnplcm8gdGhlbiBub25fcG9zaXRpdmVfYXJndW1lbnQgKCk7XG4gICAgbGV0IHggPSBDYW1sLkludDMyLnByZWQgeCBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgQ2FtbC5JbnQzMi5zdWNjIHhcbiAgOztcblxuICAoKiogXCJmbG9vciBwb3dlciBvZiAyXCIgLSBMYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHguICopXG4gIGxldCBmbG9vcl9wb3cyIHggPVxuICAgIGlmIHggPD0gQ2FtbC5JbnQzMi56ZXJvIHRoZW4gbm9uX3Bvc2l0aXZlX2FyZ3VtZW50ICgpO1xuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDEpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMikgaW5cbiAgICBsZXQgeCA9IHggbG9yICh4IGxzciA0KSBpblxuICAgIGxldCB4ID0geCBsb3IgKHggbHNyIDgpIGluXG4gICAgbGV0IHggPSB4IGxvciAoeCBsc3IgMTYpIGluXG4gICAgQ2FtbC5JbnQzMi5zdWIgeCAoeCBsc3IgMSlcbiAgOztcblxuICBsZXQgaXNfcG93MiB4ID1cbiAgICBpZiB4IDw9IENhbWwuSW50MzIuemVybyB0aGVuIG5vbl9wb3NpdGl2ZV9hcmd1bWVudCAoKTtcbiAgICB4IGxhbmQgQ2FtbC5JbnQzMi5wcmVkIHggPSBDYW1sLkludDMyLnplcm9cbiAgOztcblxuICAoKiBDIHN0dWJzIGZvciBpbnQzMiBjbHogYW5kIGN0eiB0byB1c2UgdGhlIENMWi9CU1IvQ1RaL0JTRiBpbnN0cnVjdGlvbiB3aGVyZSBwb3NzaWJsZSAqKVxuICBleHRlcm5hbCBjbHpcbiAgICA6ICAoaW50MzJbQHVuYm94ZWRdKVxuICAgIC0+IChpbnRbQHVudGFnZ2VkXSlcbiAgICA9IFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jbHpcIiBcIkJhc2VfaW50X21hdGhfaW50MzJfY2x6X3VuYm94ZWRcIlxuICBbQEBub2FsbG9jXVxuXG4gIGV4dGVybmFsIGN0elxuICAgIDogIChpbnQzMltAdW5ib3hlZF0pXG4gICAgLT4gKGludFtAdW50YWdnZWRdKVxuICAgID0gXCJCYXNlX2ludF9tYXRoX2ludDMyX2N0elwiIFwiQmFzZV9pbnRfbWF0aF9pbnQzMl9jdHpfdW5ib3hlZFwiXG4gIFtAQG5vYWxsb2NdXG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgZmxvb3JfbG9nMiBpID1cbiAgICBpZiBpIDw9IENhbWwuSW50MzIuemVyb1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZSBcIltJbnQzMi5mbG9vcl9sb2cyXSBnb3QgaW52YWxpZCBpbnB1dFwiIFsgXCJcIiwgc2V4cF9vZl9pbnQzMiBpIF0pO1xuICAgIG51bV9iaXRzIC0gMSAtIGNseiBpXG4gIDs7XG5cbiAgKCoqIEhhY2tlcidzIERlbGlnaHQgU2Vjb25kIEVkaXRpb24gcDEwNiAqKVxuICBsZXQgY2VpbF9sb2cyIGkgPVxuICAgIGlmIGkgPD0gQ2FtbC5JbnQzMi56ZXJvXG4gICAgdGhlblxuICAgICAgcmFpc2VfcyAoU2V4cC5tZXNzYWdlIFwiW0ludDMyLmNlaWxfbG9nMl0gZ290IGludmFsaWQgaW5wdXRcIiBbIFwiXCIsIHNleHBfb2ZfaW50MzIgaSBdKTtcbiAgICAoKiBUaGUgW2kgPSAxXSBjaGVjayBpcyBuZWVkZWQgYmVjYXVzZSBjbHooMCkgaXMgdW5kZWZpbmVkICopXG4gICAgaWYgQ2FtbC5JbnQzMi5lcXVhbCBpIENhbWwuSW50MzIub25lIHRoZW4gMCBlbHNlIG51bV9iaXRzIC0gY2x6IChDYW1sLkludDMyLnByZWQgaSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvdzJcbmluY2x1ZGUgQ29udi5NYWtlIChUKVxuXG5pbmNsdWRlIENvbnYuTWFrZV9oZXggKHN0cnVjdFxuICAgIHR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IGNvbXBhcmUgPSAoY29tcGFyZV9pbnQzMiA6IHQgLT4gdCAtPiBpbnQpXG5cbiAgICBsZXQgKGhhc2hfZm9sZF90IDogUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgICBoYXNoX2ZvbGRfaW50MzJcblxuICAgIGFuZCAoaGFzaCA6IHQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLmhhc2hfdmFsdWUpID1cbiAgICAgIGxldCBmdW5jID0gaGFzaF9pbnQzMiBpblxuICAgICAgZnVuIHggLT4gZnVuYyB4XG4gICAgOztcblxuICAgIFtAQEBlbmRdXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgICBsZXQgbmVnID0gKCB+LSApXG4gICAgbGV0ICggPCApID0gKCA8IClcbiAgICBsZXQgdG9fc3RyaW5nIGkgPSBQcmludGYuc3ByaW50ZiBcIiVseFwiIGlcbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJWx4XCIgRm4uaWRcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBcIkJhc2UuSW50MzIuSGV4XCJcbiAgZW5kKVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5JbnQzMlwiXG4gIGVuZClcblxubW9kdWxlIFByZV9PID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKENvbXBhcmUgOiBDb21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gIGxldCBhYnMgPSBhYnNcbiAgbGV0IG5lZyA9IG5lZ1xuICBsZXQgemVybyA9IHplcm9cbiAgbGV0IG9mX2ludF9leG4gPSBvZl9pbnRfZXhuXG5lbmRcblxubW9kdWxlIE8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQcmVfT1xuXG4gIGluY2x1ZGUgSW50X21hdGguTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBpbmNsdWRlIFByZV9PXG5cbiAgICAgIGxldCByZW0gPSByZW1cbiAgICAgIGxldCB0b19mbG9hdCA9IHRvX2Zsb2F0XG4gICAgICBsZXQgb2ZfZmxvYXQgPSBvZl9mbG9hdFxuICAgICAgbGV0IG9mX3N0cmluZyA9IFQub2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gVC50b19zdHJpbmdcbiAgICBlbmQpXG5cbiAgbGV0ICggbGFuZCApID0gYml0X2FuZFxuICBsZXQgKCBsb3IgKSA9IGJpdF9vclxuICBsZXQgKCBseG9yICkgPSBiaXRfeG9yXG4gIGxldCBsbm90ID0gYml0X25vdFxuICBsZXQgKCBsc2wgKSA9IHNoaWZ0X2xlZnRcbiAgbGV0ICggYXNyICkgPSBzaGlmdF9yaWdodFxuICBsZXQgKCBsc3IgKSA9IHNoaWZ0X3JpZ2h0X2xvZ2ljYWxcbmVuZFxuXG5pbmNsdWRlIE9cblxuKCogW0ludDMyXSBhbmQgW0ludDMyLk9dIGFncmVlIHZhbHVlLXdpc2UgKilcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxubW9kdWxlIFJlcHIgPSBJbnQ2M19lbXVsLlJlcHJcblxuKCogSW4gYSB3b3JsZCB3aGVyZSB0aGUgY29tcGlsZXIgd291bGQgdW5kZXJzdGFuZCBbQEBpbW1lZGlhdGU2NF0gYXR0cmlidXRlcyBvbiB0eXBlXG4gICBkZWNsYXJhdGlvbnMsIHRoaXMgbW9kdWxlIGlzIGhvdyBvbmUgd291bGQgcHJvZHVjZSBhIFt0eXBlIHRdIHdpdGggdGhpcyBhdHRyaWJ1dGUuICopXG5tb2R1bGUgSW1tZWRpYXRlNjQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgTm9uX2ltbWVkaWF0ZSA9IHNpZ1xuICAgIHR5cGUgdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBJbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHQgW0BAaW1tZWRpYXRlXVxuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoSW1tZWRpYXRlIDogSW1tZWRpYXRlKSAoTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUpIDogc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZTY0XVxuXG4gICAgdHlwZSAnYSByZXByID1cbiAgICAgIHwgSW1tZWRpYXRlIDogSW1tZWRpYXRlLnQgcmVwclxuICAgICAgfCBOb25faW1tZWRpYXRlIDogTm9uX2ltbWVkaWF0ZS50IHJlcHJcblxuICAgIHZhbCByZXByIDogdCByZXByXG4gIGVuZFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIE5vbl9pbW1lZGlhdGUgPSBzaWdcbiAgICB0eXBlIHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgSW1tZWRpYXRlID0gc2lnXG4gICAgdHlwZSB0IFtAQGltbWVkaWF0ZV1cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKEltbWVkaWF0ZSA6IEltbWVkaWF0ZSkgKE5vbl9pbW1lZGlhdGUgOiBOb25faW1tZWRpYXRlKSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBpbW1lZGlhdGU2NF1cblxuICAgIHR5cGUgJ2EgcmVwciA9XG4gICAgICB8IEltbWVkaWF0ZSA6IEltbWVkaWF0ZS50IHJlcHJcbiAgICAgIHwgTm9uX2ltbWVkaWF0ZSA6IE5vbl9pbW1lZGlhdGUudCByZXByXG5cbiAgICBsZXQgcmVwciA9XG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+IChDYW1sLk9iai5tYWdpYyBJbW1lZGlhdGUgOiB0IHJlcHIpXG4gICAgICB8IFczMiAtPiAoQ2FtbC5PYmoubWFnaWMgTm9uX2ltbWVkaWF0ZSA6IHQgcmVwcilcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEltbWVkaWF0ZTY0Lk1ha2UgKEludCkgKEludDYzX2VtdWwpXG5cbm1vZHVsZSBCYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgSW50X2ludGYuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnQgb3B0aW9uXG4gICAgdmFsIHRvX2ludF90cnVuYyA6IHQgLT4gaW50XG4gICAgdmFsIG9mX2ludDMyIDogaW50MzIgLT4gdFxuICAgIHZhbCB0b19pbnQzMiA6IHQgLT4gSW50MzIudCBvcHRpb25cbiAgICB2YWwgdG9faW50MzJfdHJ1bmMgOiB0IC0+IEludDMyLnRcbiAgICB2YWwgb2ZfaW50NjQgOiBJbnQ2NC50IC0+IHQgb3B0aW9uXG4gICAgdmFsIG9mX2ludDY0X3RydW5jIDogSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX25hdGl2ZWludCA6IG5hdGl2ZWludCAtPiB0IG9wdGlvblxuICAgIHZhbCB0b19uYXRpdmVpbnQgOiB0IC0+IG5hdGl2ZWludCBvcHRpb25cbiAgICB2YWwgb2ZfbmF0aXZlaW50X3RydW5jIDogbmF0aXZlaW50IC0+IHRcbiAgICB2YWwgdG9fbmF0aXZlaW50X3RydW5jIDogdCAtPiBuYXRpdmVpbnRcbiAgICB2YWwgb2ZfZmxvYXRfdW5jaGVja2VkIDogZmxvYXQgLT4gdFxuICAgIHZhbCByZXByIDogKHQsIHQpIEludDYzX2VtdWwuUmVwci50XG4gICAgdmFsIGJzd2FwMTYgOiB0IC0+IHRcbiAgICB2YWwgYnN3YXAzMiA6IHQgLT4gdFxuICAgIHZhbCBic3dhcDQ4IDogdCAtPiB0XG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgbW9kdWxlIE5hdGl2ZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdG9faW50IHggPSBTb21lIHhcbiAgICBsZXQgdG9faW50X3RydW5jIHggPSB4XG5cbiAgICAoKiBbb2ZfaW50MzJfZXhuXSBpcyBhIHNhZmUgb3BlcmF0aW9uIG9uIHBsYXRmb3JtcyB3aXRoIDY0LWJpdCB3b3JkIHNpemVzLiAqKVxuICAgIGxldCBvZl9pbnQzMiA9IG9mX2ludDMyX2V4blxuICAgIGxldCB0b19uYXRpdmVpbnRfdHJ1bmMgeCA9IHRvX25hdGl2ZWludCB4XG4gICAgbGV0IHRvX25hdGl2ZWludCB4ID0gU29tZSAodG9fbmF0aXZlaW50IHgpXG4gICAgbGV0IHJlcHIgPSBJbnQ2M19lbXVsLlJlcHIuSW50XG4gICAgbGV0IGJzd2FwMzIgdCA9IEludDY0LnRvX2ludF90cnVuYyAoSW50NjQuYnN3YXAzMiAoSW50NjQub2ZfaW50IHQpKVxuICAgIGxldCBic3dhcDQ4IHQgPSBJbnQ2NC50b19pbnRfdHJ1bmMgKEludDY0LmJzd2FwNDggKEludDY0Lm9mX2ludCB0KSlcbiAgZW5kXG5cbiAgbGV0IGltcGwgOiAobW9kdWxlIFMpID1cbiAgICBtYXRjaCByZXByIHdpdGhcbiAgICB8IEltbWVkaWF0ZSAtPiAobW9kdWxlIE5hdGl2ZSA6IFMpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgSW50NjNfZW11bCA6IFMpXG4gIDs7XG5lbmRcblxuaW5jbHVkZSAodmFsIEJhY2tlbmQuaW1wbCA6IEJhY2tlbmQuUylcblxubW9kdWxlIE92ZXJmbG93X2V4biA9IHN0cnVjdFxuICBsZXQgKCArICkgdCB1ID1cbiAgICBsZXQgc3VtID0gdCArIHUgaW5cbiAgICBpZiBiaXRfb3IgKGJpdF94b3IgdCB1KSAoYml0X3hvciB0IChiaXRfbm90IHN1bSkpIDwgemVyb1xuICAgIHRoZW4gc3VtXG4gICAgZWxzZVxuICAgICAgcmFpc2Vfc1xuICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgIFwiKCArICkgb3ZlcmZsb3dcIlxuICAgICAgICAgICBbIFwidFwiLCBzZXhwX29mX3QgdDsgXCJ1XCIsIHNleHBfb2ZfdCB1OyBcInN1bVwiLCBzZXhwX29mX3Qgc3VtIF0pXG4gIDs7XG5cbiAgbGV0ICggLSApIHQgdSA9XG4gICAgbGV0IGRpZmYgPSB0IC0gdSBpblxuICAgIGxldCBwb3NfZGlmZiA9IHQgPiB1IGluXG4gICAgaWYgdCA8PiB1ICYmIEJvb2wuKCA8PiApIHBvc19kaWZmIChpc19wb3NpdGl2ZSBkaWZmKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLSApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJkaWZmXCIsIHNleHBfb2ZfdCBkaWZmIF0pXG4gICAgZWxzZSBkaWZmXG4gIDs7XG5cbiAgbGV0IG5lZ2F0aXZlX29uZSA9IG9mX2ludCAoLTEpXG4gIGxldCBkaXZfd291bGRfb3ZlcmZsb3cgdCB1ID0gdCA9IG1pbl92YWx1ZSAmJiB1ID0gbmVnYXRpdmVfb25lXG5cbiAgbGV0ICggKiApIHQgdSA9XG4gICAgbGV0IHByb2R1Y3QgPSB0ICogdSBpblxuICAgIGlmIHUgPD4gemVybyAmJiAoZGl2X3dvdWxkX292ZXJmbG93IHByb2R1Y3QgdSB8fCBwcm9kdWN0IC8gdSA8PiB0KVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggKiApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCBwcm9kdWN0IF0pXG4gICAgZWxzZSBwcm9kdWN0XG4gIDs7XG5cbiAgbGV0ICggLyApIHQgdSA9XG4gICAgaWYgZGl2X3dvdWxkX292ZXJmbG93IHQgdVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgKFNleHAubWVzc2FnZVxuICAgICAgICAgICBcIiggLyApIG92ZXJmbG93XCJcbiAgICAgICAgICAgWyBcInRcIiwgc2V4cF9vZl90IHQ7IFwidVwiLCBzZXhwX29mX3QgdTsgXCJwcm9kdWN0XCIsIHNleHBfb2ZfdCAodCAvIHUpIF0pXG4gICAgZWxzZSB0IC8gdVxuICA7O1xuXG4gIGxldCBhYnMgdCA9IGlmIHQgPSBtaW5fdmFsdWUgdGhlbiBmYWlsd2l0aCBcImFicyBvdmVyZmxvd1wiIGVsc2UgYWJzIHRcbiAgbGV0IG5lZyB0ID0gaWYgdCA9IG1pbl92YWx1ZSB0aGVuIGZhaWx3aXRoIFwibmVnIG92ZXJmbG93XCIgZWxzZSBuZWcgdFxuZW5kXG5cbmxldCAoKSA9IGFzc2VydCAoSW50LiggPSApIG51bV9iaXRzIDYzKVxuXG5sZXQgcmFuZG9tX29mX2ludCA/KHN0YXRlID0gUmFuZG9tLlN0YXRlLmRlZmF1bHQpIGJvdW5kID1cbiAgb2ZfaW50IChSYW5kb20uU3RhdGUuaW50IHN0YXRlICh0b19pbnRfZXhuIGJvdW5kKSlcbjs7XG5cbmxldCByYW5kb21fb2ZfaW50NjQgPyhzdGF0ZSA9IFJhbmRvbS5TdGF0ZS5kZWZhdWx0KSBib3VuZCA9XG4gIG9mX2ludDY0X2V4biAoUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlICh0b19pbnQ2NCBib3VuZCkpXG47O1xuXG5sZXQgcmFuZG9tID1cbiAgbWF0Y2ggV29yZF9zaXplLndvcmRfc2l6ZSB3aXRoXG4gIHwgVzY0IC0+IHJhbmRvbV9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX29mX2ludDY0XG47O1xuXG5sZXQgcmFuZG9tX2luY2xfb2ZfaW50ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQgKFJhbmRvbS5TdGF0ZS5pbnRfaW5jbCBzdGF0ZSAodG9faW50X2V4biBsbykgKHRvX2ludF9leG4gaGkpKVxuOztcblxubGV0IHJhbmRvbV9pbmNsX29mX2ludDY0ID8oc3RhdGUgPSBSYW5kb20uU3RhdGUuZGVmYXVsdCkgbG8gaGkgPVxuICBvZl9pbnQ2NF9leG4gKFJhbmRvbS5TdGF0ZS5pbnQ2NF9pbmNsIHN0YXRlICh0b19pbnQ2NCBsbykgKHRvX2ludDY0IGhpKSlcbjs7XG5cbmxldCByYW5kb21faW5jbCA9XG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPiByYW5kb21faW5jbF9vZl9pbnRcbiAgfCBXMzIgLT4gcmFuZG9tX2luY2xfb2ZfaW50NjRcbjs7XG5cbmxldCBmbG9vcl9sb2cyIHQgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gdCB8PiB0b19pbnRfZXhuIHw+IEludC5mbG9vcl9sb2cyXG4gIHwgVzMyIC0+XG4gICAgaWYgdCA8PSB6ZXJvXG4gICAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSW50LmZsb29yX2xvZzJdIGdvdCBpbnZhbGlkIGlucHV0XCIgWyBcIlwiLCBzZXhwX29mX3QgdCBdKTtcbiAgICBsZXQgZmxvb3JfbG9nMiA9IHJlZiAoSW50LiggLSApIG51bV9iaXRzIDIpIGluXG4gICAgd2hpbGUgZXF1YWwgemVybyAoYml0X2FuZCB0IChzaGlmdF9sZWZ0IG9uZSAhZmxvb3JfbG9nMikpIGRvXG4gICAgICBmbG9vcl9sb2cyIDo9IEludC4oIC0gKSAhZmxvb3JfbG9nMiAxXG4gICAgZG9uZTtcbiAgICAhZmxvb3JfbG9nMlxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcHIgPSBSZXByXG5cbiAgbGV0IHJlcHIgPSByZXByXG5cbiAgbW9kdWxlIEVtdWwgPSBJbnQ2M19lbXVsXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBCYXNlLkhhc2h0YmwuS2V5ICopXG5tb2R1bGUgS2V5ID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFBweF9jb21wYXJlX2xpYi5Db21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHNleHBfb2ZfdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50XG5cbiAgICBbQEBAZW5kXVxuXG4gICAgKCoqIFR3byBbdF1zIHRoYXQgW2NvbXBhcmVdIGVxdWFsIG11c3QgaGF2ZSBlcXVhbCBoYXNoZXMgZm9yIHRoZSBoYXNodGFibGVcbiAgICAgICAgdG8gYmVoYXZlIHByb3Blcmx5LiAqKVxuICAgIHZhbCBoYXNoIDogdCAtPiBpbnRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID0gKG1vZHVsZSBTIHdpdGggdHlwZSB0ID0gJ2EpXG5lbmRcblxuKCoqIEBjYW5vbmljYWwgQmFzZS5IYXNodGJsLk1lcmdlX2ludG9fYWN0aW9uICopXG5tb2R1bGUgTWVyZ2VfaW50b19hY3Rpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJlbW92ZVxuICAgIHwgU2V0X3RvIG9mICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gc2lnXG4gICgqKiB7MiBBY2Nlc3NvcnN9ICopXG5cbiAgdHlwZSAoJ2EsICdiKSB0XG4gIHR5cGUgJ2Ega2V5XG5cbiAgdmFsIHNleHBfb2Zfa2V5IDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBTZXhwLnRcbiAgdmFsIGNsZWFyIDogKF8sIF8pIHQgLT4gdW5pdFxuICB2YWwgY29weSA6ICgnYSwgJ2IpIHQgLT4gKCdhLCAnYikgdFxuXG4gICgqKiBBdHRlbXB0aW5nIHRvIG1vZGlmeSAoW3NldF0sIFtyZW1vdmVdLCBldGMuKSB0aGUgaGFzaHRhYmxlIGR1cmluZyBpdGVyYXRpb24gKFtmb2xkXSxcbiAgICAgIFtpdGVyXSwgW2l0ZXJfa2V5c10sIFtpdGVyaV0pIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLiAqKVxuICB2YWwgZm9sZCA6ICgnYSwgJ2IpIHQgLT4gaW5pdDonYyAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MgLT4gJ2MpIC0+ICdjXG5cbiAgdmFsIGl0ZXJfa2V5cyA6ICgnYSwgXykgdCAtPiBmOignYSBrZXkgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgaXRlciA6IChfLCAnYikgdCAtPiBmOignYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCoqIEl0ZXJhdGVzIG92ZXIgYm90aCBrZXlzIGFuZCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLml0ZXJpIGggfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIHByaW50X2VuZGxpbmUgKFByaW50Zi5zcHJpbnRmIFwiJWQtJWRcIiBrZXkgZGF0YSkpOztcbiAgICAgIDEtNFxuICAgICAgNS02XG4gICAgICAtIDogdW5pdCA9ICgpXG4gICAgICB2fSAqKVxuICB2YWwgaXRlcmkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGV4aXN0c2kgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZm9yX2FsbGkgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiBib29sXG4gIHZhbCBmb3JfYWxsIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+IGludFxuICB2YWwgY291bnQgOiAoXywgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gaW50XG4gIHZhbCBsZW5ndGggOiAoXywgXykgdCAtPiBpbnRcbiAgdmFsIGlzX2VtcHR5IDogKF8sIF8pIHQgLT4gYm9vbFxuICB2YWwgbWVtIDogKCdhLCBfKSB0IC0+ICdhIGtleSAtPiBib29sXG4gIHZhbCByZW1vdmUgOiAoJ2EsIF8pIHQgLT4gJ2Ega2V5IC0+IHVuaXRcbiAgdmFsIGNob29zZSA6ICgnYSwgJ2IpIHQgLT4gKCdhIGtleSAqICdiKSBvcHRpb25cbiAgdmFsIGNob29zZV9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAqICdiXG5cbiAgKCoqIFNldHMgdGhlIGdpdmVuIFtrZXldIHRvIFtkYXRhXS4gKilcbiAgdmFsIHNldCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW2FkZF0gYW5kIFthZGRfZXhuXSBsZWF2ZSB0aGUgdGFibGUgdW5jaGFuZ2VkIGlmIHRoZSBrZXkgd2FzIGFscmVhZHkgcHJlc2VudC4gKilcbiAgdmFsIGFkZCA6ICgnYSwgJ2IpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IFsgYE9rIHwgYER1cGxpY2F0ZSBdXG5cbiAgdmFsIGFkZF9leG4gOiAoJ2EsICdiKSB0IC0+IGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiB1bml0XG5cbiAgKCoqIFtjaGFuZ2UgdCBrZXkgfmZdIGNoYW5nZXMgW3RdJ3MgdmFsdWUgZm9yIFtrZXldIHRvIGJlIFtmIChmaW5kIHQga2V5KV0uICopXG4gIHZhbCBjaGFuZ2UgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOignYiBvcHRpb24gLT4gJ2Igb3B0aW9uKSAtPiB1bml0XG5cbiAgKCoqIFt1cGRhdGUgdCBrZXkgfmZdIGlzIFtjaGFuZ2UgdCBrZXkgfmY6KGZ1biBvIC0+IFNvbWUgKGYgbykpXS4gKilcbiAgdmFsIHVwZGF0ZSA6ICgnYSwgJ2IpIHQgLT4gJ2Ega2V5IC0+IGY6KCdiIG9wdGlvbiAtPiAnYikgLT4gdW5pdFxuXG4gICgqKiBbdXBkYXRlX2FuZF9yZXR1cm4gdCBrZXkgfmZdIGlzIFt1cGRhdGVdLCBidXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIFtmIG9dLiAqKVxuICB2YWwgdXBkYXRlX2FuZF9yZXR1cm4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBmOignYiBvcHRpb24gLT4gJ2IpIC0+ICdiXG5cbiAgKCoqIFttYXAgdCBmXSByZXR1cm5zIGEgbmV3IHRhYmxlIHdpdGggdmFsdWVzIHJlcGxhY2VkIGJ5IHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgW2ZdXG4gICAgICB0byB0aGUgY3VycmVudCB2YWx1ZXMuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBsZXQgaCcgPSBIYXNodGJsLm1hcCBoIH5mOihmdW4geCAtPiB4ICogMikgaW5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaCc7O1xuICAgICAgLSA6IChpbnQgKiBpbnQpIGxpc3QgPSBbKDUsIDEyKTsgKDEsIDgpXVxuICAgICAgdn0gKilcbiAgdmFsIG1hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gJ2MpIC0+ICgnYSwgJ2MpIHRcblxuICAoKiogTGlrZSBbbWFwXSwgYnV0IHRoZSBmdW5jdGlvbiBbZl0gdGFrZXMgYm90aCBrZXkgYW5kIGRhdGEgYXMgYXJndW1lbnRzLiAqKVxuICB2YWwgbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIFJldHVybnMgYSBuZXcgdGFibGUgYnkgZmlsdGVyaW5nIHRoZSBnaXZlbiB0YWJsZSdzIHZhbHVlcyBieSBbZl06IHRoZSBrZXlzIGZvciB3aGljaFxuICAgICAgW2ZdIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgdmFsdWUgcmV0dXJucyBbU29tZV0gYXJlIGtlcHQsIGFuZCB0aG9zZSBmb3Igd2hpY2ggaXRcbiAgICAgIHJldHVybnMgW05vbmVdIGFyZSBkaXNjYXJkZWQuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICBsZXQgaCA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDQpOyAoNSwgNildIGluXG4gICAgICBIYXNodGJsLmZpbHRlcl9tYXAgaCB+ZjooZnVuIHggLT4gaWYgeCA+IDUgdGhlbiBTb21lIHggZWxzZSBOb25lKVxuICAgICAgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIGludCkgbGlzdCA9IFsoNSwgNildXG4gICAgICB2fSAqKVxuICB2YWwgZmlsdGVyX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gJ2Mgb3B0aW9uKSAtPiAoJ2EsICdjKSB0XG5cbiAgKCoqIExpa2UgW2ZpbHRlcl9tYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBmaWx0ZXJfbWFwaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdjIG9wdGlvbikgLT4gKCdhLCAnYykgdFxuXG4gIHZhbCBmaWx0ZXJfa2V5cyA6ICgnYSwgJ2IpIHQgLT4gZjooJ2Ega2V5IC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcbiAgdmFsIGZpbHRlciA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gYm9vbCkgLT4gKCdhLCAnYikgdFxuICB2YWwgZmlsdGVyaSA6ICgnYSwgJ2IpIHQgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHRcblxuICAoKiogUmV0dXJucyBuZXcgdGFibGVzIHdpdGggYm91bmQgdmFsdWVzIHBhcnRpdGlvbmVkIGJ5IFtmXSBhcHBsaWVkIHRvIHRoZSBib3VuZFxuICAgICAgdmFsdWVzLiAqKVxuICB2YWwgcGFydGl0aW9uX21hcCA6ICgnYSwgJ2IpIHQgLT4gZjooJ2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpIC0+ICgnYSwgJ2MpIHQgKiAoJ2EsICdkKSB0XG5cbiAgKCoqIExpa2UgW3BhcnRpdGlvbl9tYXBdLCBidXQgdGhlIGZ1bmN0aW9uIFtmXSB0YWtlcyBib3RoIGtleSBhbmQgZGF0YSBhcyBhcmd1bWVudHMuICopXG4gIHZhbCBwYXJ0aXRpb25fbWFwaVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gKCdjLCAnZCkgRWl0aGVyLnQpXG4gICAgLT4gKCdhLCAnYykgdCAqICgnYSwgJ2QpIHRcblxuICAoKiogUmV0dXJucyBhIHBhaXIgb2YgdGFibGVzIFsodDEsIHQyKV0sIHdoZXJlIFt0MV0gY29udGFpbnMgYWxsIHRoZSBlbGVtZW50cyBvZiB0aGVcbiAgICAgIGluaXRpYWwgdGFibGUgd2hpY2ggc2F0aXNmeSB0aGUgcHJlZGljYXRlIFtmXSwgYW5kIFt0Ml0gY29udGFpbnMgdGhlIHJlc3QuICopXG4gIHZhbCBwYXJ0aXRpb25fdGYgOiAoJ2EsICdiKSB0IC0+IGY6KCdiIC0+IGJvb2wpIC0+ICgnYSwgJ2IpIHQgKiAoJ2EsICdiKSB0XG5cbiAgKCoqIExpa2UgW3BhcnRpdGlvbl90Zl0sIGJ1dCB0aGUgZnVuY3Rpb24gW2ZdIHRha2VzIGJvdGgga2V5IGFuZCBkYXRhIGFzIGFyZ3VtZW50cy4gKilcbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsICdiKSB0XG4gICAgLT4gZjooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+IGJvb2wpXG4gICAgLT4gKCdhLCAnYikgdCAqICgnYSwgJ2IpIHRcblxuICAoKiogW2ZpbmRfb3JfYWRkIHQgayB+ZGVmYXVsdF0gcmV0dXJucyB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGgga2V5IFtrXSBpZiBpdCBpcyBpbiB0aGVcbiAgICAgIHRhYmxlIFt0XSwgYW5kIG90aGVyd2lzZSBhc3NpZ25zIFtrXSB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgW2RlZmF1bHQgKCldLiAqKVxuICB2YWwgZmluZF9vcl9hZGQgOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiBkZWZhdWx0Oih1bml0IC0+ICdiKSAtPiAnYlxuXG4gICgqKiBMaWtlIFtmaW5kX29yX2FkZF0gYnV0IFtkZWZhdWx0XSB0YWtlcyB0aGUga2V5IGFzIGFuIGFyZ3VtZW50LiAqKVxuICB2YWwgZmluZGlfb3JfYWRkIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gZGVmYXVsdDooJ2Ega2V5IC0+ICdiKSAtPiAnYlxuXG4gICgqKiBbZmluZCB0IGtdIHJldHVybnMgW1NvbWVdICh0aGUgY3VycmVudCBiaW5kaW5nKSBvZiBba10gaW4gW3RdLCBvciBbTm9uZV0gaWYgbm8gc3VjaFxuICAgICAgYmluZGluZyBleGlzdHMuICopXG4gIHZhbCBmaW5kIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIFtmaW5kX2V4biB0IGtdIHJldHVybnMgdGhlIGN1cnJlbnQgYmluZGluZyBvZiBba10gaW4gW3RdLCBvciByYWlzZXMgW0NhbWwuTm90X2ZvdW5kXVxuICAgICAgb3IgW05vdF9mb3VuZF9zXSBpZiBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9leG4gOiAoJ2EsICdiKSB0IC0+ICdhIGtleSAtPiAnYlxuXG4gICgqKiBbZmluZF9hbmRfY2FsbCB0IGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRdXG5cbiAgICAgIGlzIGVxdWl2YWxlbnQgdG86XG5cbiAgICAgIFttYXRjaCBmaW5kIHQgayB3aXRoIFNvbWUgdiAtPiBpZl9mb3VuZCB2IHwgTm9uZSAtPiBpZl9ub3RfZm91bmQga11cblxuICAgICAgZXhjZXB0IHRoYXQgaXQgZG9lc24ndCBhbGxvY2F0ZSB0aGUgb3B0aW9uLiAqKVxuICB2YWwgZmluZF9hbmRfY2FsbFxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBpZl9mb3VuZDooJ2IgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICAoKiogSnVzdCBsaWtlIFtmaW5kX2FuZF9jYWxsXSwgYnV0IHRha2VzIGFuIGV4dHJhIGFyZ3VtZW50IHdoaWNoIGlzIHBhc3NlZCB0byBbaWZfZm91bmRdXG4gICAgICBhbmQgW2lmX25vdF9mb3VuZF0sIHNvIHRoYXQgdGhlIGNsaWVudCBjb2RlIGNhbiBhdm9pZCBhbGxvY2F0aW5nIGNsb3N1cmVzIG9yIHVzaW5nXG4gICAgICByZWZzIHRvIHBhc3MgdGhpcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWZ1bCBpbiBjb2RlXG4gICAgICB3aGljaCB0cmllcyB0byBtaW5pbWl6ZSBoZWFwIGFsbG9jYXRpb24uICopXG4gIHZhbCBmaW5kX2FuZF9jYWxsMVxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gaWZfZm91bmQ6KCdiIC0+ICdkIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRfYW5kX2NhbGwyXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBiOidlXG4gICAgLT4gaWZfZm91bmQ6KCdiIC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdlIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGlmX2ZvdW5kOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICB2YWwgZmluZGlfYW5kX2NhbGwxXG4gICAgOiAgKCdhLCAnYikgdFxuICAgIC0+ICdhIGtleVxuICAgIC0+IGE6J2RcbiAgICAtPiBpZl9mb3VuZDooa2V5OidhIGtleSAtPiBkYXRhOidiIC0+ICdkIC0+ICdjKVxuICAgIC0+IGlmX25vdF9mb3VuZDooJ2Ega2V5IC0+ICdkIC0+ICdjKVxuICAgIC0+ICdjXG5cbiAgdmFsIGZpbmRpX2FuZF9jYWxsMlxuICAgIDogICgnYSwgJ2IpIHRcbiAgICAtPiAnYSBrZXlcbiAgICAtPiBhOidkXG4gICAgLT4gYjonZVxuICAgIC0+IGlmX2ZvdW5kOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2QgLT4gJ2UgLT4gJ2MpXG4gICAgLT4gaWZfbm90X2ZvdW5kOignYSBrZXkgLT4gJ2QgLT4gJ2UgLT4gJ2MpXG4gICAgLT4gJ2NcblxuICAoKiogW2ZpbmRfYW5kX3JlbW92ZSB0IGtdIHJldHVybnMgU29tZSAodGhlIGN1cnJlbnQgYmluZGluZykgb2YgayBpbiB0IGFuZCByZW1vdmVzIGl0LFxuICAgICAgb3IgTm9uZSBpcyBubyBzdWNoIGJpbmRpbmcgZXhpc3RzLiAqKVxuICB2YWwgZmluZF9hbmRfcmVtb3ZlIDogKCdhLCAnYikgdCAtPiAnYSBrZXkgLT4gJ2Igb3B0aW9uXG5cbiAgKCoqIE1lcmdlcyB0d28gaGFzaHRhYmxlcy5cblxuICAgICAgVGhlIHJlc3VsdCBvZiBbbWVyZ2UgZiBoMSBoMl0gaGFzIGFzIGtleXMgdGhlIHNldCBvZiBhbGwgW2tdIGluIHRoZSB1bmlvbiBvZiB0aGVcbiAgICAgIHNldHMgb2Yga2V5cyBvZiBbaDFdIGFuZCBbaDJdIGZvciB3aGljaCBbZChrKV0gaXMgbm90IE5vbmUsIHdoZXJlOlxuXG4gICAgICBkKGspID1cbiAgICAgIC0gW2YgfmtleTprIChgTGVmdCBkMSldXG4gICAgICAgIGlmIFtrXSBpbiBbaDFdIG1hcHMgdG8gZDEsIGFuZCBbaDJdIGRvZXMgbm90IGhhdmUgZGF0YSBmb3IgW2tdO1xuXG4gICAgICAtIFtmIH5rZXk6ayAoYFJpZ2h0IGQyKV1cbiAgICAgICAgaWYgW2tdIGluIFtoMl0gbWFwcyB0byBkMiwgYW5kIFtoMV0gZG9lcyBub3QgaGF2ZSBkYXRhIGZvciBba107XG5cbiAgICAgIC0gW2YgfmtleTprIChgQm90aCAoZDEsIGQyKSldXG4gICAgICAgIG90aGVyd2lzZSwgd2hlcmUgW2tdIGluIFtoMV0gbWFwcyB0byBbZDFdIGFuZCBba10gaW4gW2gyXSBtYXBzIHRvIFtkMl0uXG5cbiAgICAgIEVhY2gga2V5IFtrXSBpcyBtYXBwZWQgdG8gYSBzaW5nbGUgcGllY2Ugb2YgZGF0YSBbeF0sIHdoZXJlIFtkKGspID0gU29tZSB4XS5cblxuICAgICAgRXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9ICopXG4gIHZhbCBtZXJnZVxuICAgIDogICgnaywgJ2EpIHRcbiAgICAtPiAoJ2ssICdiKSB0XG4gICAgLT4gZjooa2V5OidrIGtleSAtPiBbIGBMZWZ0IG9mICdhIHwgYFJpZ2h0IG9mICdiIHwgYEJvdGggb2YgJ2EgKiAnYiBdIC0+ICdjIG9wdGlvbilcbiAgICAtPiAoJ2ssICdjKSB0XG5cblxuICAoKiogRXZlcnkgW2tleV0gaW4gW3NyY10gd2lsbCBiZSByZW1vdmVkIG9yIHNldCBpbiBbZHN0XSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZVxuICAgICAgb2YgW2ZdLiAqKVxuICB2YWwgbWVyZ2VfaW50b1xuICAgIDogIHNyYzooJ2ssICdhKSB0XG4gICAgLT4gZHN0OignaywgJ2IpIHRcbiAgICAtPiBmOihrZXk6J2sga2V5IC0+ICdhIC0+ICdiIG9wdGlvbiAtPiAnYiBNZXJnZV9pbnRvX2FjdGlvbi50KVxuICAgIC0+IHVuaXRcblxuICAoKiogUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwga2V5cyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwga2V5cyA6ICgnYSwgXykgdCAtPiAnYSBrZXkgbGlzdFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBkYXRhIGZvciBnaXZlbiBoYXNodGFibGUuICopXG4gIHZhbCBkYXRhIDogKF8sICdiKSB0IC0+ICdiIGxpc3RcblxuICAoKiogW2ZpbHRlcl9pbnBsYWNlIHQgfmZdIHJlbW92ZXMgYWxsIHRoZSBlbGVtZW50cyBmcm9tIFt0XSB0aGF0IGRvbid0IHNhdGlzZnkgW2ZdLiAqKVxuICB2YWwgZmlsdGVyX2tleXNfaW5wbGFjZSA6ICgnYSwgXykgdCAtPiBmOignYSBrZXkgLT4gYm9vbCkgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOignYiAtPiBib29sKSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiBib29sKSAtPiB1bml0XG5cbiAgKCoqIFttYXBfaW5wbGFjZSB0IH5mXSBhcHBsaWVzIFtmXSB0byBhbGwgZWxlbWVudHMgaW4gW3RdLCB0cmFuc2Zvcm1pbmcgdGhlbSBpblxuICAgICAgcGxhY2UuICopXG4gIHZhbCBtYXBfaW5wbGFjZSA6IChfLCAnYikgdCAtPiBmOignYiAtPiAnYikgLT4gdW5pdFxuXG4gIHZhbCBtYXBpX2lucGxhY2UgOiAoJ2EsICdiKSB0IC0+IGY6KGtleTonYSBrZXkgLT4gZGF0YTonYiAtPiAnYikgLT4gdW5pdFxuXG4gICgqKiBbZmlsdGVyX21hcF9pbnBsYWNlXSBjb21iaW5lcyB0aGUgZWZmZWN0cyBvZiBbbWFwX2lucGxhY2VdIGFuZCBbZmlsdGVyX2lucGxhY2VdLiAqKVxuICB2YWwgZmlsdGVyX21hcF9pbnBsYWNlIDogKF8sICdiKSB0IC0+IGY6KCdiIC0+ICdiIG9wdGlvbikgLT4gdW5pdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaV9pbnBsYWNlIDogKCdhLCAnYikgdCAtPiBmOihrZXk6J2Ega2V5IC0+IGRhdGE6J2IgLT4gJ2Igb3B0aW9uKSAtPiB1bml0XG5cbiAgKCoqIFtlcXVhbCBmIHQxIHQyXSBhbmQgW3NpbWlsYXIgZiB0MSB0Ml0gYm90aCByZXR1cm4gdHJ1ZSBpZmYgW3QxXSBhbmQgW3QyXSBoYXZlIHRoZVxuICAgICAgc2FtZSBrZXlzIGFuZCBmb3IgYWxsIGtleXMgW2tdLCBbZiAoZmluZF9leG4gdDEgaykgKGZpbmRfZXhuIHQyIGspXS4gIFtlcXVhbF0gYW5kXG4gICAgICBbc2ltaWxhcl0gb25seSBkaWZmZXIgaW4gdGhlaXIgdHlwZXMuICopXG4gIHZhbCBlcXVhbCA6ICgnYiAtPiAnYiAtPiBib29sKSAtPiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIHQgLT4gYm9vbFxuXG4gIHZhbCBzaW1pbGFyIDogKCdiMSAtPiAnYjIgLT4gYm9vbCkgLT4gKCdhLCAnYjEpIHQgLT4gKCdhLCAnYjIpIHQgLT4gYm9vbFxuXG4gICgqKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCAoa2V5LCBkYXRhKSBwYWlycyBmb3IgZ2l2ZW4gaGFzaHRhYmxlLiAqKVxuICB2YWwgdG9fYWxpc3QgOiAoJ2EsICdiKSB0IC0+ICgnYSBrZXkgKiAnYikgbGlzdFxuXG5cbiAgKCoqIFtyZW1vdmVfaWZfemVyb10ncyBkZWZhdWx0IGlzIFtmYWxzZV0uICopXG4gIHZhbCBpbmNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuXG4gIHZhbCBkZWNyIDogP2J5OmludCAtPiA/cmVtb3ZlX2lmX3plcm86Ym9vbCAtPiAoJ2EsIGludCkgdCAtPiAnYSBrZXkgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE11bHRpID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuICB0eXBlICdhIGtleVxuXG4gICgqKiBbYWRkX211bHRpIHQgfmtleSB+ZGF0YV0gaWYgW2tleV0gaXMgcHJlc2VudCBpbiB0aGUgdGFibGUgdGhlbiBjb25zXG4gICAgICBbZGF0YV0gb24gdGhlIGxpc3QsIG90aGVyd2lzZSBhZGQgW2tleV0gd2l0aCBhIHNpbmdsZSBlbGVtZW50IGxpc3QuICopXG4gIHZhbCBhZGRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4ga2V5OidhIGtleSAtPiBkYXRhOidiIC0+IHVuaXRcblxuICAoKiogW3JlbW92ZV9tdWx0aSB0IGtleV0gdXBkYXRlcyB0aGUgdGFibGUsIHJlbW92aW5nIHRoZSBoZWFkIG9mIHRoZSBsaXN0IGJvdW5kIHRvXG4gICAgICBba2V5XS4gSWYgdGhlIGxpc3QgaGFzIG9ubHkgb25lIGVsZW1lbnQgKG9yIGlzIGVtcHR5KSB0aGVuIHRoZSBiaW5kaW5nIGlzXG4gICAgICByZW1vdmVkLiAqKVxuICB2YWwgcmVtb3ZlX211bHRpIDogKCdhLCBfIGxpc3QpIHQgLT4gJ2Ega2V5IC0+IHVuaXRcblxuICAoKiogW2ZpbmRfbXVsdGkgdCBrZXldIHJldHVybnMgdGhlIGVtcHR5IGxpc3QgaWYgW2tleV0gaXMgbm90IHByZXNlbnQgaW4gdGhlIHRhYmxlLFxuICAgICAgcmV0dXJucyBbdF0ncyB2YWx1ZXMgZm9yIFtrZXldIG90aGVyd2lzZS4gKilcbiAgdmFsIGZpbmRfbXVsdGkgOiAoJ2EsICdiIGxpc3QpIHQgLT4gJ2Ega2V5IC0+ICdiIGxpc3RcbmVuZFxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ2tleSBLZXkudFxuICAtPiAnelxuXG50eXBlICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgLT4gJ3pcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSBrZXlcbiAgdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGUgOiAoJ2Ega2V5LCAnYiwgdW5pdCAtPiAoJ2EsICdiKSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgdmFsIG9mX2FsaXN0XG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIGtleSBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBrZXkgbGlzdCBdIClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcblxuICB2YWwgb2ZfYWxpc3Rfb3JfZXJyb3JcbiAgICA6ICgnYSBrZXksICdiLCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYikgdCBPcl9lcnJvci50KSBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBvZl9hbGlzdF9leG4gOiAoJ2Ega2V5LCAnYiwgKCdhIGtleSAqICdiKSBsaXN0IC0+ICgnYSwgJ2IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAoJ2Ega2V5LCAnYiBsaXN0LCAoJ2Ega2V5ICogJ2IpIGxpc3QgLT4gKCdhLCAnYiBsaXN0KSB0KSBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV9tYXBwZWQgZ2V0X2tleSBnZXRfZGF0YSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgZ2V0X2RhdGEgeDE7IC4uLjsgZ2V0X2tleSB4biwgZ2V0X2RhdGEgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfbWFwcGVkXG4gICAgOiAoICdhIGtleVxuICAgICAgLCAnYlxuICAgICAgLCBnZXRfa2V5OignciAtPiAnYSBrZXkpXG4gICAgICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdiKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG5cbiAgKCoqIHtbIGNyZWF0ZV93aXRoX2tleSB+Z2V0X2tleSBbeDEsLi4uLHhuXVxuICAgICAgICAgPSBvZl9hbGlzdCBbZ2V0X2tleSB4MSwgeDE7IC4uLjsgZ2V0X2tleSB4biwgeG5dIF19ICopXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSlcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGtleSBsaXN0IF0gKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdyXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSkgLT4gJ3IgbGlzdCAtPiAoJ2EsICdyKSB0IE9yX2Vycm9yLnQgKVxuICAgICAgICBjcmVhdGVfb3B0aW9uc1xuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfZXhuXG4gICAgOiAoJ2Ega2V5LCAnciwgZ2V0X2tleTooJ3IgLT4gJ2Ega2V5KSAtPiAnciBsaXN0IC0+ICgnYSwgJ3IpIHQpIGNyZWF0ZV9vcHRpb25zXG5cblxuICB2YWwgZ3JvdXBcbiAgICA6ICggJ2Ega2V5XG4gICAgICAsICdiXG4gICAgICAsIGdldF9rZXk6KCdyIC0+ICdhIGtleSlcbiAgICAgICAgLT4gZ2V0X2RhdGE6KCdyIC0+ICdiKVxuICAgICAgICAtPiBjb21iaW5lOignYiAtPiAnYiAtPiAnYilcbiAgICAgICAgLT4gJ3IgbGlzdFxuICAgICAgICAtPiAoJ2EsICdiKSB0IClcbiAgICAgICAgY3JlYXRlX29wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9ycyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHRcblxuICAoKiogezIgQ3JlYXRvcnN9ICopXG5cbiAgKCoqIFRoZSBtb2R1bGUgeW91IHBhc3MgdG8gW2NyZWF0ZV0gbXVzdCBoYXZlIGEgdHlwZSB0aGF0IGlzIGhhc2hhYmxlLCBzZXhwYWJsZSwgYW5kXG4gICAgICBjb21wYXJhYmxlLlxuXG4gICAgICBFeGFtcGxlOlxuXG4gICAgICB7dlxuICAgICAgICBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIEludCk7O1xuICAgICAgICAtIDogKGludCwgJ19hKSBIYXNodGJsLnQgPSA8YWJzdHI+OztcbiAgICAgIHZ9ICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLm9mX2FsaXN0IChtb2R1bGUgSW50KSBbKDMsIFwic29tZXRoaW5nXCIpOyAoMiwgXCJ3aGF0ZXZlclwiKV1cbiAgICAgICAgIC0gOiBbIGBEdXBsaWNhdGVfa2V5IG9mIGludCB8IGBPayBvZiAoaW50LCBzdHJpbmcpIEhhc2h0YmwudCBdID0gYE9rIDxhYnN0cj5cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+ICgnYSAqICdiKSBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5IG9mICdhIF1cblxuICAoKiogV2hlcmVhcyBbb2ZfYWxpc3RdIHdpbGwgcmVwb3J0IFtEdXBsaWNhdGVfa2V5XSBubyBtYXR0ZXIgaG93IG1hbnkgZHVwcyB0aGVyZSBhcmUgaW5cbiAgICAgIHlvdXIgbGlzdCwgW29mX2FsaXN0X3JlcG9ydF9hbGxfZHVwc10gd2lsbCByZXBvcnQgZWFjaCBhbmQgZXZlcnkgZHVwbGljYXRlIGVudHJ5LlxuXG4gICAgICBGb3IgZXhhbXBsZTpcblxuICAgICAge3ZcbiAgICAgICAgSGFzaHRibC5vZl9hbGlzdCAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleSBvZiBpbnQgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5IDFcblxuICAgICAgICBIYXNodGJsLm9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyAobW9kdWxlIEludCkgWygxLCBcImZvb1wiKTsgKDEsIFwiYmFyXCIpOyAoMiwgXCJmb29cIik7ICgyLCBcImJhclwiKV07O1xuICAgICAgICAtIDogWyBgRHVwbGljYXRlX2tleXMgb2YgaW50IGxpc3QgfCBgT2sgb2YgKGludCwgc3RyaW5nKSBIYXNodGJsLnQgXSA9IGBEdXBsaWNhdGVfa2V5cyBbMTsgMl1cbiAgICAgIHZ9ICopXG4gIHZhbCBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHNcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiAoJ2EgKiAnYikgbGlzdFxuICAgIC0+IFsgYE9rIG9mICgnYSwgJ2IpIHQgfCBgRHVwbGljYXRlX2tleXMgb2YgJ2EgbGlzdCBdXG5cbiAgdmFsIG9mX2FsaXN0X29yX2Vycm9yXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0IE9yX2Vycm9yLnRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5cbiAgKCoqIENyZWF0ZXMgYSB7eyFNdWx0aX0gXCJtdWx0aVwifSBoYXNodGFibGUsIGkuZS4sIGEgaGFzaHRhYmxlIHdoZXJlIGVhY2gga2V5IHBvaW50cyB0byBhXG4gICAgICBsaXN0IHBvdGVudGlhbGx5IGNvbnRhaW5pbmcgbXVsdGlwbGUgdmFsdWVzLiBTbyBpbnN0ZWFkIG9mIHNob3J0LWNpcmN1aXRpbmcgd2l0aCBhXG4gICAgICBbYER1cGxpY2F0ZV9rZXldIHZhcmlhbnQgb24gZHVwbGljYXRlcywgYXMgaW4gW29mX2FsaXN0XSwgW29mX2FsaXN0X211bHRpXSBmb2xkc1xuICAgICAgdGhvc2UgdmFsdWVzIGludG8gYSBsaXN0IGZvciB0aGUgZ2l2ZW4ga2V5OlxuXG4gICAgICB7dlxuICAgICAgbGV0IGggPSBIYXNodGJsLm9mX2FsaXN0X211bHRpIChtb2R1bGUgSW50KSBbKDEsIFwiYVwiKTsgKDEsIFwiYlwiKTsgKDIsIFwiY1wiKTsgKDIsIFwiZFwiKV07O1xuICAgICAgdmFsIGggOiAoaW50LCBzdHJpbmcgbGlzdCkgSGFzaHRibC50ID0gPGFic3RyPlxuXG4gICAgICBIYXNodGJsLmZpbmRfZXhuIGggMTs7XG4gICAgICAtIDogc3RyaW5nIGxpc3QgPSBbXCJiXCI7IFwiYVwiXVxuICAgICAgdn0gKilcbiAgdmFsIG9mX2FsaXN0X211bHRpXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gKCdhICogJ2IpIGxpc3RcbiAgICAtPiAoJ2EsICdiIGxpc3QpIHRcblxuICAoKiogQXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyIGxpc3RdIHRvIGNyZWF0ZSB0aGVcbiAgICAgIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZS5cblxuICAgICAge1sgY3JlYXRlX21hcHBlZCBnZXRfa2V5IGdldF9kYXRhIFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCBnZXRfZGF0YSB4MTsgLi4uOyBnZXRfa2V5IHhuLCBnZXRfZGF0YSB4bl1cbiAgICAgIF19XG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgIGxldCBoID1cbiAgICAgICAgICBIYXNodGJsLmNyZWF0ZV9tYXBwZWQgKG1vZHVsZSBJbnQpXG4gICAgICAgICAgICB+Z2V0X2tleTooZnVuIHggLT4geClcbiAgICAgICAgICAgIH5nZXRfZGF0YTooZnVuIHggLT4geCArIDEpXG4gICAgICAgICAgIFsxOyAyOyAzXTs7XG4gICAgICAgIHZhbCBoIDogWyBgRHVwbGljYXRlX2tleXMgb2YgaW50IGxpc3QgfCBgT2sgb2YgKGludCwgaW50KSBIYXNodGJsLnQgXSA9IGBPayA8YWJzdHI+XG5cbiAgICAgICAgbGV0IGggPVxuICAgICAgICAgIG1hdGNoIGggd2l0aFxuICAgICAgICAgIHwgYE9rIHggLT4geFxuICAgICAgICAgIHwgYER1cGxpY2F0ZV9rZXlzIF8gLT4gZmFpbHdpdGggXCJcIlxuICAgICAgICBpblxuICAgICAgICBIYXNodGJsLmZpbmRfZXhuIGggMTs7XG4gICAgICAgIC0gOiBpbnQgPSAyXG4gICAgICB2fSAqKVxuICB2YWwgY3JlYXRlX21hcHBlZFxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+IGdldF9kYXRhOignciAtPiAnYilcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gWyBgT2sgb2YgKCdhLCAnYikgdCB8IGBEdXBsaWNhdGVfa2V5cyBvZiAnYSBsaXN0IF1cblxuICAoKioge1sgY3JlYXRlX3dpdGhfa2V5IH5nZXRfa2V5IFt4MTsuLi47eG5dXG4gICAgICAgICA9IG9mX2FsaXN0IFtnZXRfa2V5IHgxLCB4MTsgLi4uOyBnZXRfa2V5IHhuLCB4bl0gXX0gKilcbiAgdmFsIGNyZWF0ZV93aXRoX2tleVxuICAgIDogID9ncm93dGhfYWxsb3dlZDpib29sICgqKiBkZWZhdWx0cyB0byBbdHJ1ZV0gKilcbiAgICAtPiA/c2l6ZTppbnQgKCoqIGluaXRpYWwgc2l6ZSAtLSBkZWZhdWx0IDAgKilcbiAgICAtPiAnYSBLZXkudFxuICAgIC0+IGdldF9rZXk6KCdyIC0+ICdhKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiBbIGBPayBvZiAoJ2EsICdyKSB0IHwgYER1cGxpY2F0ZV9rZXlzIG9mICdhIGxpc3QgXVxuXG4gIHZhbCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3JcbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdCBPcl9lcnJvci50XG5cbiAgdmFsIGNyZWF0ZV93aXRoX2tleV9leG5cbiAgICA6ICA/Z3Jvd3RoX2FsbG93ZWQ6Ym9vbCAoKiogZGVmYXVsdHMgdG8gW3RydWVdICopXG4gICAgLT4gP3NpemU6aW50ICgqKiBpbml0aWFsIHNpemUgLS0gZGVmYXVsdCAwICopXG4gICAgLT4gJ2EgS2V5LnRcbiAgICAtPiBnZXRfa2V5OignciAtPiAnYSlcbiAgICAtPiAnciBsaXN0XG4gICAgLT4gKCdhLCAncikgdFxuXG4gICgqKiBMaWtlIFtjcmVhdGVfbWFwcGVkXSwgYXBwbGllcyB0aGUgW2dldF9rZXldIGFuZCBbZ2V0X2RhdGFdIGZ1bmN0aW9ucyB0byB0aGUgWydyXG4gICAgICBsaXN0XSB0byBjcmVhdGUgdGhlIGluaXRpYWwga2V5cyBhbmQgdmFsdWVzLCByZXNwZWN0aXZlbHksIGZvciB0aGUgbmV3IGhhc2h0YWJsZSAtLVxuICAgICAgYW5kIHRoZW4sIGxpa2UgW2FkZF9tdWx0aV0sIGZvbGRzIHRvZ2V0aGVyIHZhbHVlcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUga2V5cy4gSGVyZSxcbiAgICAgIHRob3VnaCwgdGhlIGZ1bmN0aW9uIHVzZWQgZm9yIHRoZSBmb2xkaW5nIGlzIGdpdmVuIGJ5IFtjb21iaW5lXSAoaW5zdGVhZCBvZiBqdXN0XG4gICAgICBiZWluZyBhIFtjb25zXSkuXG5cbiAgICAgIEV4YW1wbGU6XG5cbiAgICAgIHt2XG4gICAgICAgICBIYXNodGJsLmdyb3VwIChtb2R1bGUgSW50KVxuICAgICAgICAgICB+Z2V0X2tleTooZnVuIHggLT4geCAvIDIpXG4gICAgICAgICAgIH5nZXRfZGF0YTooZnVuIHggLT4geClcbiAgICAgICAgICAgfmNvbWJpbmU6KGZ1biB4IHkgLT4geCAqIHkpXG4gICAgICAgICAgICBbIDE7IDI7IDM7IDRdXG4gICAgICAgICB8PiBIYXNodGJsLnRvX2FsaXN0OztcbiAgICAgICAgIC0gOiAoaW50ICogaW50KSBsaXN0ID0gWygyLCA0KTsgKDEsIDYpOyAoMCwgMSldXG4gICAgICAgdn0gKilcbiAgdmFsIGdyb3VwXG4gICAgOiAgP2dyb3d0aF9hbGxvd2VkOmJvb2wgKCoqIGRlZmF1bHRzIHRvIFt0cnVlXSAqKVxuICAgIC0+ID9zaXplOmludCAoKiogaW5pdGlhbCBzaXplIC0tIGRlZmF1bHQgMCAqKVxuICAgIC0+ICdhIEtleS50XG4gICAgLT4gZ2V0X2tleTooJ3IgLT4gJ2EpXG4gICAgLT4gZ2V0X2RhdGE6KCdyIC0+ICdiKVxuICAgIC0+IGNvbWJpbmU6KCdiIC0+ICdiIC0+ICdiKVxuICAgIC0+ICdyIGxpc3RcbiAgICAtPiAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBzaWdcbiAgdmFsIGhhc2ggOiAnYSAtPiBpbnRcbiAgdmFsIGhhc2hfcGFyYW0gOiBpbnQgLT4gaW50IC0+ICdhIC0+IGludFxuXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gICgqKiBXZSBwcm92aWRlIGEgW3NleHBfb2ZfdF0gYnV0IG5vdCBhIFt0X29mX3NleHBdIGZvciB0aGlzIHR5cGUgYmVjYXVzZSBvbmUgbmVlZHMgdG8gYmVcbiAgICAgIGV4cGxpY2l0IGFib3V0IHRoZSBoYXNoIGFuZCBjb21wYXJpc29uIGZ1bmN0aW9ucyB1c2VkIHdoZW4gY3JlYXRpbmcgYSBoYXNodGFibGUuXG4gICAgICBOb3RlIHRoYXQgW0hhc2h0YmwuUG9seS50XSBkb2VzIGhhdmUgW1tAQGRlcml2aW5nIHNleHBdXSwgYW5kIHVzZXMgT0NhbWwncyBidWlsdC1pblxuICAgICAgcG9seW1vcnBoaWMgY29tcGFyaXNvbiBhbmQgYW5kIHBvbHltb3JwaGljIGhhc2hpbmcuICopXG4gIHZhbCBzZXhwX29mX3QgOiAoJ2EgLT4gU2V4cC50KSAtPiAoJ2IgLT4gU2V4cC50KSAtPiAoJ2EsICdiKSB0IC0+IFNleHAudFxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCAoKiogQGlubGluZSAqKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA9ICdhXG4gICgqKiBAaW5saW5lICopXG5cblxuICBpbmNsdWRlIE11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgKCoqIEBpbmxpbmUgKilcblxuICB2YWwgaGFzaGFibGVfcyA6ICgna2V5LCBfKSB0IC0+ICdrZXkgS2V5LnRcblxuICBpbmNsdWRlIEludmFyaWFudC5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU19wb2x5ID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIHZhbCB0X3NleHBfZ3JhbW1hclxuICAgIDogICdhIFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG4gICAgLT4gJ2IgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2EsICdiKSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cblxuICB2YWwgaGFzaGFibGUgOiAnYSBIYXNoYWJsZS50XG5cbiAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAnYSBrZXkgPSAnYVxuICAgIHdpdGggdHlwZSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnNfd2l0aG91dF9maXJzdF9jbGFzc19tb2R1bGVcblxuICBpbmNsdWRlIEFjY2Vzc29ycyB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0IHdpdGggdHlwZSAnYSBrZXkgOj0gJ2Ega2V5XG4gIGluY2x1ZGUgTXVsdGkgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdCB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICB0eXBlICgnaywgJ3YpIHRcblxuICBtb2R1bGUgdHlwZSBTZXhwX29mX20gPSBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICAgIFtAQEBlbmRdXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgb2Zfc2V4cF1cblxuICAgIHZhbCB0X29mX3NleHAgOiBTZXhwbGliMC5TZXhwLnQgLT4gdFxuXG4gICAgW0BAQGVuZF1cblxuICAgIGluY2x1ZGUgS2V5LlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9ncmFtbWFyXVxuXG4gICAgdmFsIHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgRXF1YWxfbSA9IHNpZyBlbmRcblxuICB2YWwgc2V4cF9vZl9tX190XG4gICAgOiAgKG1vZHVsZSBTZXhwX29mX20gd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoJ3YgLT4gU2V4cC50KVxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBTZXhwLnRcblxuICB2YWwgbV9fdF9vZl9zZXhwXG4gICAgOiAgKG1vZHVsZSBNX29mX3NleHAgd2l0aCB0eXBlIHQgPSAnaylcbiAgICAtPiAoU2V4cC50IC0+ICd2KVxuICAgIC0+IFNleHAudFxuICAgIC0+ICgnaywgJ3YpIHRcblxuICB2YWwgbV9fdF9zZXhwX2dyYW1tYXJcbiAgICA6ICAobW9kdWxlIE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gJ2spXG4gICAgLT4gJ3YgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgdmFsIGVxdWFsX21fX3RcbiAgICA6ICAobW9kdWxlIEVxdWFsX20pXG4gICAgLT4gKCd2IC0+ICd2IC0+IGJvb2wpXG4gICAgLT4gKCdrLCAndikgdFxuICAgIC0+ICgnaywgJ3YpIHRcbiAgICAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaHRibCA9IHNpZ1xuICAoKiogQSBoYXNoIHRhYmxlIGlzIGEgbXV0YWJsZSBkYXRhIHN0cnVjdHVyZSBpbXBsZW1lbnRpbmcgYSBtYXAgYmV0d2VlbiBrZXlzIGFuZCB2YWx1ZXMuXG4gICAgICBJdCBzdXBwb3J0cyBjb25zdGFudC10aW1lIGxvb2t1cCBhbmQgaW4tcGxhY2UgbW9kaWZpY2F0aW9uLlxuXG4gICAgICB7MSBVc2FnZX1cblxuICAgICAgQXMgYSBzaW1wbGUgZXhhbXBsZSwgd2UnbGwgY3JlYXRlIGEgaGFzaCB0YWJsZSB3aXRoIHN0cmluZyBrZXlzIHVzaW5nIHRoZVxuICAgICAge3shY3JlYXRlfVtjcmVhdGVdfSBjb25zdHJ1Y3Rvciwgd2hpY2ggZXhwZWN0cyBhIG1vZHVsZSBkZWZpbmluZyB0aGUga2V5J3MgdHlwZTpcblxuICAgICAge1tcbiAgICAgICAgbGV0IGggPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFN0cmluZyk7O1xuICAgICAgICB2YWwgaCA6IChzdHJpbmcsICdfYSkgSGFzaHRibC50ID0gPGFic3RyPlxuICAgICAgXX1cblxuICAgICAgV2UgY2FuIHNldCB0aGUgdmFsdWVzIG9mIGluZGl2aWR1YWwga2V5cyB3aXRoIHt7IXNldH1bc2V0XX0uIElmIHRoZSBrZXkgYWxyZWFkeSBoYXNcbiAgICAgIGEgdmFsdWUsIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLnNldCBoIH5rZXk6XCJmb29cIiB+ZGF0YTo1OztcbiAgICAgIC0gOiB1bml0ID0gKClcblxuICAgICAgSGFzaHRibC5zZXQgaCB+a2V5OlwiZm9vXCIgfmRhdGE6Njs7XG4gICAgICAtIDogdW5pdCA9ICgpXG5cbiAgICAgIEhhc2h0Ymwuc2V0IGggfmtleTpcImJhclwiIH5kYXRhOjY7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuICAgICAgdn1cblxuICAgICAgV2UgY2FuIGFjY2VzcyB2YWx1ZXMgYnkga2V5LCBvciBkdW1wIGFsbCBvZiB0aGUgaGFzaCB0YWJsZSdzIGRhdGE6XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmZpbmQgaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgb3B0aW9uID0gU29tZSA2XG5cbiAgICAgIEhhc2h0YmwuZmluZF9leG4gaCBcImZvb1wiOztcbiAgICAgIC0gOiBpbnQgPSA2XG5cbiAgICAgIEhhc2h0YmwudG9fYWxpc3QgaDs7XG4gICAgICAtIDogKHN0cmluZyAqIGludCkgbGlzdCA9IFsoXCJmb29cIiwgNik7IChcImJhclwiLCA2KV1cbiAgICAgIHZ9XG5cbiAgICAgIHt7IWNoYW5nZX1bY2hhbmdlXX0gbGV0cyB1cyBjaGFuZ2UgYSBrZXkncyB2YWx1ZSBieSBhcHBseWluZyB0aGUgZ2l2ZW4gZnVuY3Rpb246XG5cbiAgICAgIHt2XG4gICAgICBIYXNodGJsLmNoYW5nZSBoIFwiZm9vXCIgKGZ1biB4IC0+XG4gICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgfCBTb21lIHggLT4gU29tZSAoeCAqIDIpXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICk7O1xuICAgICAgLSA6IHVuaXQgPSAoKVxuXG4gICAgICBIYXNodGJsLnRvX2FsaXN0IGg7O1xuICAgICAgLSA6IChzdHJpbmcgKiBpbnQpIGxpc3QgPSBbKFwiZm9vXCIsIDEyKTsgKFwiYmFyXCIsIDYpXVxuICAgICAgdn1cblxuXG4gICAgICBXZSBjYW4gdXNlIHt7IW1lcmdlfVttZXJnZV19IHRvIG1lcmdlIHR3byBoYXNodGFibGVzIHdpdGggZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlclxuICAgICAgaG93IHdlIGNob29zZSB2YWx1ZXMgd2hlbiBhIGtleSBpcyBwcmVzZW50IGluIHRoZSBmaXJzdCAoXCJsZWZ0XCIpIGhhc2h0YWJsZSwgdGhlXG4gICAgICBzZWNvbmQgKFwicmlnaHRcIiksIG9yIGJvdGguIEhlcmUsIHdlJ2xsIGNvbnMgdGhlIHZhbHVlcyB3aGVuIGJvdGggaGFzaHRhYmxlcyBoYXZlIGFcbiAgICAgIGtleTpcblxuICAgICAge3ZcbiAgICAgIGxldCBoMSA9IEhhc2h0Ymwub2ZfYWxpc3RfZXhuIChtb2R1bGUgSW50KSBbKDEsIDUpOyAoMiwgMzIzMildIGluXG4gICAgICBsZXQgaDIgPSBIYXNodGJsLm9mX2FsaXN0X2V4biAobW9kdWxlIEludCkgWygxLCAzKV0gaW5cbiAgICAgIEhhc2h0YmwubWVyZ2UgaDEgaDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgICAgfCBgTGVmdCB4IC0+IFNvbWUgKGBMZWZ0IHgpXG4gICAgICAgIHwgYFJpZ2h0IHggLT4gU29tZSAoYFJpZ2h0IHgpXG4gICAgICAgIHwgYEJvdGggKHgsIHkpIC0+IGlmIHg9eSB0aGVuIE5vbmUgZWxzZSBTb21lIChgQm90aCAoeCx5KSlcbiAgICAgICkgfD4gSGFzaHRibC50b19hbGlzdDs7XG4gICAgICAtIDogKGludCAqIFs+IGBCb3RoIG9mIGludCAqIGludCB8IGBMZWZ0IG9mIGludCB8IGBSaWdodCBvZiBpbnQgXSkgbGlzdCA9XG4gICAgICBbKDIsIGBMZWZ0IDMyMzIpOyAoMSwgYEJvdGggKDUsIDMpKV1cbiAgICAgIHZ9XG5cbiAgICAgIHsxIEludGVyZmFjZX0gKilcblxuICBpbmNsdWRlIFNfd2l0aG91dF9zdWJtb2R1bGVzICgqKiBAaW5saW5lICopXG5cbiAgbW9kdWxlIHR5cGUgQWNjZXNzb3JzID0gQWNjZXNzb3JzXG4gIG1vZHVsZSB0eXBlIENyZWF0b3JzID0gQ3JlYXRvcnNcbiAgbW9kdWxlIHR5cGUgTXVsdGkgPSBNdWx0aVxuICBtb2R1bGUgdHlwZSBTX3BvbHkgPSBTX3BvbHlcbiAgbW9kdWxlIHR5cGUgU193aXRob3V0X3N1Ym1vZHVsZXMgPSBTX3dpdGhvdXRfc3VibW9kdWxlc1xuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBGb3JfZGVyaXZpbmdcblxuICBtb2R1bGUgS2V5ID0gS2V5XG4gIG1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IE1lcmdlX2ludG9fYWN0aW9uXG5cbiAgdHlwZSBub25yZWMgKCdrZXksICdkYXRhLCAneikgY3JlYXRlX29wdGlvbnMgPSAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc1xuXG4gIG1vZHVsZSBDcmVhdG9ycyAoS2V5IDogc2lnXG4gICAgICB0eXBlICdhIHRcblxuICAgICAgdmFsIGhhc2hhYmxlIDogJ2EgdCBIYXNoYWJsZS50XG4gICAgZW5kKSA6IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgICB2YWwgdF9vZl9zZXhwIDogKFNleHAudCAtPiAnYSBLZXkudCkgLT4gKFNleHAudCAtPiAnYikgLT4gU2V4cC50IC0+ICgnYSwgJ2IpIHRfXG5cbiAgICBpbmNsdWRlXG4gICAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAgICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG4gIGVuZFxuXG4gIG1vZHVsZSBQb2x5IDogU19wb2x5IHdpdGggdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuXG4gICgqKiBbTV0gaXMgbWVhbnQgdG8gYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIE9DYW1sIGFwcGxpY2F0aXZlIGZ1bmN0b3IgdHlwZXM6XG5cbiAgICAgIHtbXG4gICAgICAgIHR5cGUgc3RyaW5nX3RvX2ludF90YWJsZSA9IGludCBIYXNodGJsLk0oU3RyaW5nKS50XG4gICAgICBdfVxuXG4gICAgICB3aGljaCBzdGFuZHMgZm9yOlxuXG4gICAgICB7W1xuICAgICAgICB0eXBlIHN0cmluZ190b19pbnRfdGFibGUgPSAoU3RyaW5nLnQsIGludCkgSGFzaHRibC50XG4gICAgICBdfVxuXG4gICAgICBUaGUgcG9pbnQgaXMgdGhhdCBbaW50IEhhc2h0YmwuTShTdHJpbmcpLnRdIHN1cHBvcnRzIGRlcml2aW5nLCB3aGVyZWFzIHRoZSBzZWNvbmRcbiAgICAgIHN5bnRheCBkb2Vzbid0IChiZWNhdXNlIFt0X29mX3NleHBdIGRvZXNuJ3Qga25vdyB3aGF0IGNvbXBhcmlzb24vaGFzaCBmdW5jdGlvbiB0b1xuICAgICAgdXNlKS4gKilcbiAgbW9kdWxlIE0gKEsgOiBULlQpIDogc2lnXG4gICAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2KSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAoKiovKiopXG5cbiAgKCpfIFNlZSB0aGUgSmFuZSBTdHJlZXQgU3R5bGUgR3VpZGUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIFtQcml2YXRlXSBzdWJtb2R1bGVzOlxuXG4gICAgaHR0cHM6Ly9vcGVuc291cmNlLmphbmVzdHJlZXQuY29tL3N0YW5kYXJkcy8jcHJpdmF0ZS1zdWJtb2R1bGVzICopXG4gIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcblxuICAgIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgICAgICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiAoJ2tleSwgXykgdCAtPiAna2V5IEhhc2hhYmxlLnRcbiAgZW5kXG5lbmRcbiIsIigqIEEgZmV3IHNtYWxsIHRoaW5ncyBjb3BpZWQgZnJvbSBvdGhlciBwYXJ0cyBvZiBCYXNlIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gdXMsIHNvIHdlXG4gICBjYW4ndCB1c2UgdGhlbS4gKilcblxub3BlbiEgSW1wb3J0XG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBtYXggKHggOiB0KSB5ID0gaWYgeCA+IHkgdGhlbiB4IGVsc2UgeVxuZW5kXG5cbigqIEl0cyBpbXBvcnRhbnQgdGhhdCBFbXB0eSBoYXZlIG5vIGFyZ3MuIEl0J3MgdGVtcHRpbmcgdG8gbWFrZSB0aGlzIHR5cGUgYSByZWNvcmRcbiAgIChlLmcuIHRvIGhvbGQgdGhlIGNvbXBhcmUgZnVuY3Rpb24pLCBidXQgYSBsb3Qgb2YgbWVtb3J5IGlzIHNhdmVkIGJ5IEVtcHR5IGJlaW5nIGFuXG4gICBpbW1lZGlhdGUsIHNpbmNlIGFsbCB1bnVzZWQgYnVja2V0cyBpbiB0aGUgaGFzaHRibCBkb24ndCB1c2UgYW55IG1lbW9yeSAoYmVzaWRlcyB0aGVcbiAgIGFycmF5IGNlbGwpICopXG50eXBlICgnaywgJ3YpIHQgPVxuICB8IEVtcHR5XG4gIHwgTm9kZSBvZlxuICAgICAgeyBtdXRhYmxlIGxlZnQgOiAoJ2ssICd2KSB0XG4gICAgICA7IGtleSA6ICdrXG4gICAgICA7IG11dGFibGUgdmFsdWUgOiAndlxuICAgICAgOyBtdXRhYmxlIGhlaWdodCA6IGludFxuICAgICAgOyBtdXRhYmxlIHJpZ2h0IDogKCdrLCAndikgdFxuICAgICAgfVxuICB8IExlYWYgb2ZcbiAgICAgIHsga2V5IDogJ2tcbiAgICAgIDsgbXV0YWJsZSB2YWx1ZSA6ICd2XG4gICAgICB9XG5cbmxldCBlbXB0eSA9IEVtcHR5XG5cbmxldCBpc19lbXB0eSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gdHJ1ZVxuICB8IExlYWYgXyB8IE5vZGUgXyAtPiBmYWxzZVxuOztcblxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IExlYWYgXyAtPiAxXG4gIHwgTm9kZSB7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodDsgcmlnaHQgPSBfIH0gLT4gaGVpZ2h0XG47O1xuXG5sZXQgaW52YXJpYW50IGNvbXBhcmUgPVxuICBsZXQgbGVnYWxfbGVmdF9rZXkga2V5ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+ICgpXG4gICAgfCBMZWFmIHsga2V5ID0gbGVmdF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IGxlZnRfa2V5OyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+XG4gICAgICBhc3NlcnQgKGNvbXBhcmUgbGVmdF9rZXkga2V5IDwgMClcbiAgaW5cbiAgbGV0IGxlZ2FsX3JpZ2h0X2tleSBrZXkgPSBmdW5jdGlvblxuICAgIHwgRW1wdHkgLT4gKClcbiAgICB8IExlYWYgeyBrZXkgPSByaWdodF9rZXk7IHZhbHVlID0gXyB9XG4gICAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IHJpZ2h0X2tleTsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSAtPlxuICAgICAgYXNzZXJ0IChjb21wYXJlIHJpZ2h0X2tleSBrZXkgPiAwKVxuICBpblxuICBsZXQgcmVjIGludiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSB8IExlYWYgXyAtPiAoKVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IGs7IHZhbHVlID0gXzsgaGVpZ2h0ID0gaDsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGhsLCBociA9IGhlaWdodCBsZWZ0LCBoZWlnaHQgcmlnaHQgaW5cbiAgICAgIGludiBsZWZ0O1xuICAgICAgaW52IHJpZ2h0O1xuICAgICAgbGVnYWxfbGVmdF9rZXkgayBsZWZ0O1xuICAgICAgbGVnYWxfcmlnaHRfa2V5IGsgcmlnaHQ7XG4gICAgICBhc3NlcnQgKGggPSBJbnQubWF4IGhsIGhyICsgMSk7XG4gICAgICBhc3NlcnQgKGFicyAoaGwgLSBocikgPD0gMilcbiAgaW5cbiAgaW52XG47O1xuXG5sZXQgaW52YXJpYW50IHQgfmNvbXBhcmUgPSBpbnZhcmlhbnQgY29tcGFyZSB0XG5cbigqIEluIHRoZSBmb2xsb3dpbmcgY29tbWVudHMsXG4gICAndCBpcyBiYWxhbmNlZCcgbWVhbnMgdGhhdCAnaW52YXJpYW50IHQnIGRvZXMgbm90XG4gICByYWlzZSBhbiBleGNlcHRpb24uICBUaGlzIGltcGxpZXMgb2YgY291cnNlIHRoYXQgZWFjaCBub2RlJ3MgaGVpZ2h0IGZpZWxkIGlzXG4gICBjb3JyZWN0LlxuICAgJ3QgaXMgYmFsYW5jZWFibGUnIG1lYW5zIHRoYXQgaGVpZ2h0IG9mIHRoZSBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBvZiB0XG4gICBkaWZmZXIgYnkgYXQgbW9zdCAzLiAqKVxuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBoYXZlIGNvcnJlY3QgaGVpZ2h0c1xuICAgQHBvc3Q6IG91dHB1dCBoYXMgdGhlIGNvcnJlY3QgaGVpZ2h0ICopXG5sZXQgdXBkYXRlX2hlaWdodCA9IGZ1bmN0aW9uXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IG9sZF9oZWlnaHQ7IHJpZ2h0IH0gYXMgeCkgLT5cbiAgICBsZXQgbmV3X2hlaWdodCA9IEludC5tYXggKGhlaWdodCBsZWZ0KSAoaGVpZ2h0IHJpZ2h0KSArIDEgaW5cbiAgICBpZiBuZXdfaGVpZ2h0IDw+IG9sZF9oZWlnaHQgdGhlbiB4LmhlaWdodCA8LSBuZXdfaGVpZ2h0XG4gIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiBsZWZ0IGFuZCByaWdodCBzdWJ0cmVlcyBhcmUgYmFsYW5jZWRcbiAgIEBwcmU6IHRyZWUgaXMgYmFsYW5jZWFibGVcbiAgIEBwb3N0OiBvdXRwdXQgaXMgYmFsYW5jZWQgKGluIHBhcnRpY3VsYXIsIGhlaWdodCBpcyBjb3JyZWN0KSAqKVxubGV0IGJhbGFuY2UgdHJlZSA9XG4gIG1hdGNoIHRyZWUgd2l0aFxuICB8IEVtcHR5IHwgTGVhZiBfIC0+IHRyZWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSBhcyByb290X25vZGUpIC0+XG4gICAgbGV0IGhsID0gaGVpZ2h0IGxlZnRcbiAgICBhbmQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAoKiArIDIgaXMgY3JpdGljYWxseSBpbXBvcnRhbnQsIGxvd2VyaW5nIGl0IHRvIDEgd2lsbCBicmVhayB0aGUgTGVhZlxuICAgICAgIGFzc3VtcHRpb25zIGluIHRoZSBjb2RlIGJlbG93LCBhbmQgd2lsbCBmb3JjZSB1cyB0byBwcm9tb3RlIGxlYWYgbm9kZXMgaW5cbiAgICAgICB0aGUgYmFsYW5jZSByb3V0aW5lLiBJdCdzIGFsc28gZmFzdGVyLCBzaW5jZSBpdCB3aWxsIGJhbGFuY2UgbGVzcyBvZnRlbi5cbiAgICAgICBOb3RlIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIGlzIGRlbGljYXRlLiAgVGhlIHVwZGF0ZV9oZWlnaHQgY2FsbHMgbXVzdFxuICAgICAgIG9jY3VyIGluIHRoZSBjb3JyZWN0IG9yZGVyLCBzaW5jZSB1cGRhdGVfaGVpZ2h0IGFzc3VtZXMgaXRzIGNoaWxkcmVuIGhhdmVcbiAgICAgICB0aGUgY29ycmVjdCBoZWlnaHRzLiAgKilcbiAgICBpZiBobCA+IGhyICsgMlxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggbGVmdCB3aXRoXG4gICAgICAoKiBJdCBjYW5ub3QgYmUgYSBsZWFmLCBiZWNhdXNlIGV2ZW4gaWYgcmlnaHQgaXMgZW1wdHksIGEgbGVhZlxuICAgICAgICAgaXMgb25seSBoZWlnaHQgMSAqKVxuICAgICAgfCBFbXB0eSB8IExlYWYgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgTm9kZVxuICAgICAgICAgICh7IGxlZnQgPSBsZWZ0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSBsZWZ0X25vZGVfcmlnaHRcbiAgICAgICAgICAgfSBhcyBsZWZ0X25vZGUpIC0+XG4gICAgICAgIGlmIGhlaWdodCBsZWZ0X25vZGVfbGVmdCA+PSBoZWlnaHQgbGVmdF9ub2RlX3JpZ2h0XG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJvb3Rfbm9kZS5sZWZ0IDwtIGxlZnRfbm9kZV9yaWdodDtcbiAgICAgICAgICBsZWZ0X25vZGUucmlnaHQgPC0gdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHRyZWU7XG4gICAgICAgICAgdXBkYXRlX2hlaWdodCBsZWZ0O1xuICAgICAgICAgIGxlZnQpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIGlmIHJpZ2h0IGlzIGEgbGVhZiwgdGhlbiBsZWZ0IG11c3QgYmUgZW1wdHkuIFRoYXQgbWVhbnNcbiAgICAgICAgICAgICBoZWlnaHQgaXMgMi4gRXZlbiBpZiBociBpcyBlbXB0eSB3ZSBzdGlsbCBjYW4ndCBnZXQgaGVyZS4gKilcbiAgICAgICAgICBtYXRjaCBsZWZ0X25vZGVfcmlnaHQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBscl9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gbHJfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgbHJfbm9kZSkgLT5cbiAgICAgICAgICAgIGxlZnRfbm9kZS5yaWdodCA8LSBscl9sZWZ0O1xuICAgICAgICAgICAgcm9vdF9ub2RlLmxlZnQgPC0gbHJfcmlnaHQ7XG4gICAgICAgICAgICBscl9ub2RlLnJpZ2h0IDwtIHRyZWU7XG4gICAgICAgICAgICBscl9ub2RlLmxlZnQgPC0gbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgbGVmdF9ub2RlX3JpZ2h0O1xuICAgICAgICAgICAgbGVmdF9ub2RlX3JpZ2h0KSlcbiAgICBlbHNlIGlmIGhyID4gaGwgKyAyXG4gICAgdGhlbiAoXG4gICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSByaWdodCBjYW5ub3QgYmUgYSBsZWFmICopXG4gICAgICBtYXRjaCByaWdodCB3aXRoXG4gICAgICB8IEVtcHR5IHwgTGVhZiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBOb2RlXG4gICAgICAgICAgKHsgbGVmdCA9IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICAgICA7IGtleSA9IF9cbiAgICAgICAgICAgOyB2YWx1ZSA9IF9cbiAgICAgICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICAgICAgIDsgcmlnaHQgPSByaWdodF9ub2RlX3JpZ2h0XG4gICAgICAgICAgIH0gYXMgcmlnaHRfbm9kZSkgLT5cbiAgICAgICAgaWYgaGVpZ2h0IHJpZ2h0X25vZGVfcmlnaHQgPj0gaGVpZ2h0IHJpZ2h0X25vZGVfbGVmdFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICByb290X25vZGUucmlnaHQgPC0gcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSB0cmVlO1xuICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICB1cGRhdGVfaGVpZ2h0IHJpZ2h0O1xuICAgICAgICAgIHJpZ2h0KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBzZWUgYWJvdmUgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIGNhbm5vdCBiZSBhIGxlYWYgKilcbiAgICAgICAgICBtYXRjaCByaWdodF9ub2RlX2xlZnQgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgfCBMZWFmIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBOb2RlXG4gICAgICAgICAgICAgICh7IGxlZnQgPSBybF9sZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gcmxfcmlnaHQgfSBhc1xuICAgICAgICAgICAgICAgcmxfbm9kZSkgLT5cbiAgICAgICAgICAgIHJpZ2h0X25vZGUubGVmdCA8LSBybF9yaWdodDtcbiAgICAgICAgICAgIHJvb3Rfbm9kZS5yaWdodCA8LSBybF9sZWZ0O1xuICAgICAgICAgICAgcmxfbm9kZS5sZWZ0IDwtIHRyZWU7XG4gICAgICAgICAgICBybF9ub2RlLnJpZ2h0IDwtIHJpZ2h0O1xuICAgICAgICAgICAgdXBkYXRlX2hlaWdodCByaWdodDtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgICAgICAgIHVwZGF0ZV9oZWlnaHQgcmlnaHRfbm9kZV9sZWZ0O1xuICAgICAgICAgICAgcmlnaHRfbm9kZV9sZWZ0KSlcbiAgICBlbHNlIChcbiAgICAgIHVwZGF0ZV9oZWlnaHQgdHJlZTtcbiAgICAgIHRyZWUpXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAocmlnaHQgbm9kZSkgLSBoZWlnaHQgKGJhbGFuY2UgdHJlZSkpIDw9IDNcbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWFibGUgKilcblxuKCogQHByZTogdHJlZSBpcyBiYWxhbmNlYWJsZVxuICAgQHByZTogYWJzIChoZWlnaHQgKHJpZ2h0IG5vZGUpIC0gaGVpZ2h0IChiYWxhbmNlIHRyZWUpKSA8PSAzXG4gICBAcG9zdDogcmVzdWx0IGlzIGJhbGFuY2VhYmxlICopXG5sZXQgc2V0X2xlZnQgbm9kZSB0cmVlID1cbiAgbGV0IHRyZWUgPSBiYWxhbmNlIHRyZWUgaW5cbiAgbWF0Y2ggbm9kZSB3aXRoXG4gIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIHIpIC0+XG4gICAgaWYgcGh5c19lcXVhbCBsZWZ0IHRyZWUgdGhlbiAoKSBlbHNlIHIubGVmdCA8LSB0cmVlO1xuICAgIHVwZGF0ZV9oZWlnaHQgbm9kZVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG4oKiBAcHJlOiB0cmVlIGlzIGJhbGFuY2VhYmxlXG4gICBAcHJlOiBhYnMgKGhlaWdodCAobGVmdCBub2RlKSAtIGhlaWdodCAoYmFsYW5jZSB0cmVlKSkgPD0gM1xuICAgQHBvc3Q6IHJlc3VsdCBpcyBiYWxhbmNlYWJsZSAqKVxubGV0IHNldF9yaWdodCBub2RlIHRyZWUgPVxuICBsZXQgdHJlZSA9IGJhbGFuY2UgdHJlZSBpblxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBOb2RlICh7IGxlZnQgPSBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgcikgLT5cbiAgICBpZiBwaHlzX2VxdWFsIHJpZ2h0IHRyZWUgdGhlbiAoKSBlbHNlIHIucmlnaHQgPC0gdHJlZTtcbiAgICB1cGRhdGVfaGVpZ2h0IG5vZGVcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuOztcblxuKCogQHByZTogdCBpcyBiYWxhbmNlZC5cbiAgIEBwb3N0OiByZXN1bHQgaXMgYmFsYW5jZWQsIHdpdGggbmV3IG5vZGUgaW5zZXJ0ZWRcbiAgIEBwb3N0OiAhYWRkZWQgPSB0cnVlIGlmZiB0aGUgc2hhcGUgb2YgdGhlIGlucHV0IHRyZWUgY2hhbmdlZC4gICopXG5sZXQgYWRkID1cbiAgbGV0IHJlYyBhZGQgdCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9XG4gICAgfCBMZWFmICh7IGtleSA9IGsnOyB2YWx1ZSA9IF8gfSBhcyByKSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsnIGsgaW5cbiAgICAgICgqIFRoaXMgY29tcGFyZSBpcyByZXZlcnNlZCBvbiBwdXJwb3NlLCB3ZSBhcmUgcHJldGVuZGluZ1xuICAgICAgICAgdGhhdCB0aGUgbGVhZiB3YXMganVzdCBpbnNlcnRlZCBpbnN0ZWFkIG9mIHRoZSBvdGhlciB3YXlcbiAgICAgICAgIHJvdW5kLCB0aGF0IHdheSB3ZSBvbmx5IGFsbG9jYXRlIG9uZSBub2RlLiAqKVxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdjtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBhZGRlZCA6PSB0cnVlO1xuICAgICAgICBpZiBjIDwgMFxuICAgICAgICB0aGVuIE5vZGUgeyBsZWZ0ID0gdDsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSAyOyByaWdodCA9IEVtcHR5IH1cbiAgICAgICAgZWxzZSBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IDI7IHJpZ2h0ID0gdCB9KVxuICAgIHwgTm9kZSAoeyBsZWZ0OyBrZXkgPSBrJzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCB9IGFzIHIpIC0+XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgayBrJyBpblxuICAgICAgaWYgYyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBhZGRlZCA6PSBmYWxzZTtcbiAgICAgICAgaWYgcmVwbGFjZSB0aGVuIHIudmFsdWUgPC0gdilcbiAgICAgIGVsc2UgaWYgYyA8IDBcbiAgICAgIHRoZW4gc2V0X2xlZnQgdCAoYWRkIGxlZnQgcmVwbGFjZSBhZGRlZCBjb21wYXJlIGsgdilcbiAgICAgIGVsc2Ugc2V0X3JpZ2h0IHQgKGFkZCByaWdodCByZXBsYWNlIGFkZGVkIGNvbXBhcmUgayB2KTtcbiAgICAgIHRcbiAgaW5cbiAgZnVuIHQgfnJlcGxhY2UgfmNvbXBhcmUgfmFkZGVkIH5rZXkgfmRhdGEgLT5cbiAgICBsZXQgdCA9IGFkZCB0IHJlcGxhY2UgYWRkZWQgY29tcGFyZSBrZXkgZGF0YSBpblxuICAgIGlmICFhZGRlZCB0aGVuIGJhbGFuY2UgdCBlbHNlIHRcbjs7XG5cbmxldCByZWMgZmlyc3QgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgfCBOb2RlIHsgbGVmdCA9IEVtcHR5OyBrZXkgPSBrOyB2YWx1ZSA9IHY7IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IFNvbWUgKGssIHYpXG4gIHwgTm9kZSB7IGxlZnQgPSBsOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IC0+IGZpcnN0IGxcbjs7XG5cbmxldCByZWMgbGFzdCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfVxuICB8IE5vZGUgeyBsZWZ0ID0gXzsga2V5ID0gazsgdmFsdWUgPSB2OyBoZWlnaHQgPSBfOyByaWdodCA9IEVtcHR5IH0gLT4gU29tZSAoaywgdilcbiAgfCBOb2RlIHsgbGVmdCA9IF87IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSByIH0gLT4gbGFzdCByXG47O1xuXG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVjIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBrXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFyZzFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMlxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmlmX2ZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5pZl9ub3RfZm91bmRcbiAgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGsgYXJnMSBhcmcyXG4gIHwgTGVhZiB7IGtleSA9IGsnOyB2YWx1ZSA9IHYgfSAtPlxuICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlIGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQgayBhcmcxIGFyZzJcbiAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGxldCBjID0gY29tcGFyZSBrIGsnIGluXG4gICAgaWYgYyA9IDBcbiAgICB0aGVuIGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6aycgfmRhdGE6diBhcmcxIGFyZzJcbiAgICBlbHNlXG4gICAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICAgIChpZiBjIDwgMCB0aGVuIGxlZnQgZWxzZSByaWdodClcbiAgICAgICAgfmNvbXBhcmVcbiAgICAgICAga1xuICAgICAgICBhcmcxXG4gICAgICAgIGFyZzJcbiAgICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICAgIH5pZl9mb3VuZFxuICAgICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbCA9XG4gIGxldCBjYWxsX2lmX2ZvdW5kIH5pZl9mb3VuZCB+a2V5Ol8gfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCBkYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgKCkgKCkgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGluXG4gIGxldCBjYWxsX2lmX25vdF9mb3VuZCB+aWZfbm90X2ZvdW5kIGtleSAoKSAoKSA9IGlmX25vdF9mb3VuZCBrZXkgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICAoKVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcgKCkgPSBpZl9mb3VuZCBkYXRhIGFyZyBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnICgpID0gaWZfbm90X2ZvdW5kIGtleSBhcmcgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICAoKVxuICAgICAgfmNhbGxfaWZfZm91bmRcbiAgICAgIH5jYWxsX2lmX25vdF9mb3VuZFxuICAgICAgfmlmX2ZvdW5kXG4gICAgICB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgZmluZGlfYW5kX2NhbGwxID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXkgfmRhdGEgYXJnICgpID0gaWZfZm91bmQgfmtleSB+ZGF0YSBhcmcgaW5cbiAgbGV0IGNhbGxfaWZfbm90X2ZvdW5kIH5pZl9ub3RfZm91bmQga2V5IGFyZyAoKSA9IGlmX25vdF9mb3VuZCBrZXkgYXJnIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgLT5cbiAgICBmaW5kaV9hbmRfY2FsbF9pbXBsXG4gICAgICB0XG4gICAgICB+Y29tcGFyZVxuICAgICAga1xuICAgICAgYVxuICAgICAgKClcbiAgICAgIH5jYWxsX2lmX2ZvdW5kXG4gICAgICB+Y2FsbF9pZl9ub3RfZm91bmRcbiAgICAgIH5pZl9mb3VuZFxuICAgICAgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRfYW5kX2NhbGwyID1cbiAgbGV0IGNhbGxfaWZfZm91bmQgfmlmX2ZvdW5kIH5rZXk6XyB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCBkYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbDIgPVxuICBsZXQgY2FsbF9pZl9mb3VuZCB+aWZfZm91bmQgfmtleSB+ZGF0YSBhcmcxIGFyZzIgPSBpZl9mb3VuZCB+a2V5IH5kYXRhIGFyZzEgYXJnMiBpblxuICBsZXQgY2FsbF9pZl9ub3RfZm91bmQgfmlmX25vdF9mb3VuZCBrZXkgYXJnMSBhcmcyID0gaWZfbm90X2ZvdW5kIGtleSBhcmcxIGFyZzIgaW5cbiAgZnVuIHQgfmNvbXBhcmUgayB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCAtPlxuICAgIGZpbmRpX2FuZF9jYWxsX2ltcGxcbiAgICAgIHRcbiAgICAgIH5jb21wYXJlXG4gICAgICBrXG4gICAgICBhXG4gICAgICBiXG4gICAgICB+Y2FsbF9pZl9mb3VuZFxuICAgICAgfmNhbGxfaWZfbm90X2ZvdW5kXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kID1cbiAgbGV0IGlmX2ZvdW5kIHYgPSBTb21lIHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gTm9uZSBpblxuICBmdW4gdCB+Y29tcGFyZSBrIC0+IGZpbmRfYW5kX2NhbGwgdCB+Y29tcGFyZSBrIH5pZl9mb3VuZCB+aWZfbm90X2ZvdW5kXG47O1xuXG5sZXQgbWVtID1cbiAgbGV0IGlmX2ZvdW5kIF8gPSB0cnVlIGluXG4gIGxldCBpZl9ub3RfZm91bmQgXyA9IGZhbHNlIGluXG4gIGZ1biB0IH5jb21wYXJlIGsgLT4gZmluZF9hbmRfY2FsbCB0IH5jb21wYXJlIGsgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCByZW1vdmUgPVxuICBsZXQgcmVjIG1pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiBfIC0+IHRyZWVcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gdHJlZVxuICAgIHwgTm9kZSB7IGxlZnQ7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBfIH0gLT4gbWluX2VsdCBsZWZ0XG4gIGluXG4gIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgdHJlZSA9XG4gICAgbWF0Y2ggdHJlZSB3aXRoXG4gICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IExlYWYgXyAtPiBFbXB0eSAoKiBUaGlzIG11c3QgYmUgdGhlIHJvb3QgKilcbiAgICB8IE5vZGUgeyBsZWZ0ID0gRW1wdHk7IGtleSA9IF87IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPiByaWdodFxuICAgIHwgTm9kZSB7IGxlZnQgPSBMZWFmIF87IGtleSA9IGs7IHZhbHVlID0gdjsgaGVpZ2h0ID0gXzsgcmlnaHQgPSBFbXB0eSB9IC0+XG4gICAgICBMZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH1cbiAgICB8IE5vZGUgeyBsZWZ0ID0gTGVhZiBfOyBrZXkgPSBfOyB2YWx1ZSA9IF87IGhlaWdodCA9IF87IHJpZ2h0ID0gXyB9IGFzIG5vZGUgLT5cbiAgICAgIHNldF9sZWZ0IG5vZGUgRW1wdHk7XG4gICAgICB0cmVlXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gXzsgdmFsdWUgPSBfOyBoZWlnaHQgPSBfOyByaWdodCA9IF8gfSBhcyBub2RlIC0+XG4gICAgICBzZXRfbGVmdCBub2RlIChyZW1vdmVfbWluX2VsdCBsZWZ0KTtcbiAgICAgIHRyZWVcbiAgaW5cbiAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgRW1wdHksIHQgLT4gdFxuICAgIHwgdCwgRW1wdHkgLT4gdFxuICAgIHwgXywgXyAtPlxuICAgICAgbGV0IHRyZWUgPSBtaW5fZWx0IHQyIGluXG4gICAgICAobWF0Y2ggdHJlZSB3aXRoXG4gICAgICAgfCBFbXB0eSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IExlYWYgeyBrZXkgPSBrOyB2YWx1ZSA9IHYgfSAtPlxuICAgICAgICAgbGV0IHQyID0gYmFsYW5jZSAocmVtb3ZlX21pbl9lbHQgdDIpIGluXG4gICAgICAgICBOb2RlXG4gICAgICAgICAgIHsgbGVmdCA9IHQxXG4gICAgICAgICAgIDsga2V5ID0ga1xuICAgICAgICAgICA7IHZhbHVlID0gdlxuICAgICAgICAgICA7IGhlaWdodCA9IEludC5tYXggKGhlaWdodCB0MSkgKGhlaWdodCB0MikgKyAxXG4gICAgICAgICAgIDsgcmlnaHQgPSB0MlxuICAgICAgICAgICB9XG4gICAgICAgfCBOb2RlIF8gYXMgbm9kZSAtPlxuICAgICAgICAgc2V0X3JpZ2h0IG5vZGUgKHJlbW92ZV9taW5fZWx0IHQyKTtcbiAgICAgICAgIHNldF9sZWZ0IG5vZGUgdDE7XG4gICAgICAgICBub2RlKVxuICBpblxuICBsZXQgcmVjIHJlbW92ZSB0IHJlbW92ZWQgY29tcGFyZSBrID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEVtcHR5IC0+XG4gICAgICByZW1vdmVkIDo9IGZhbHNlO1xuICAgICAgRW1wdHlcbiAgICB8IExlYWYgeyBrZXkgPSBrJzsgdmFsdWUgPSBfIH0gLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrJyA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZW1vdmVkIDo9IHRydWU7XG4gICAgICAgIEVtcHR5KVxuICAgICAgZWxzZSAoXG4gICAgICAgIHJlbW92ZWQgOj0gZmFsc2U7XG4gICAgICAgIHQpXG4gICAgfCBOb2RlIHsgbGVmdDsga2V5ID0gayc7IHZhbHVlID0gXzsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgICAgbGV0IGMgPSBjb21wYXJlIGsgaycgaW5cbiAgICAgIGlmIGMgPSAwXG4gICAgICB0aGVuIChcbiAgICAgICAgcmVtb3ZlZCA6PSB0cnVlO1xuICAgICAgICBtZXJnZSBsZWZ0IHJpZ2h0KVxuICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgdGhlbiAoXG4gICAgICAgIHNldF9sZWZ0IHQgKHJlbW92ZSBsZWZ0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgICAgIGVsc2UgKFxuICAgICAgICBzZXRfcmlnaHQgdCAocmVtb3ZlIHJpZ2h0IHJlbW92ZWQgY29tcGFyZSBrKTtcbiAgICAgICAgdClcbiAgaW5cbiAgZnVuIHQgfnJlbW92ZWQgfmNvbXBhcmUgayAtPiBiYWxhbmNlIChyZW1vdmUgdCByZW1vdmVkIGNvbXBhcmUgaylcbjs7XG5cbmxldCByZWMgZm9sZCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgRW1wdHkgLT4gaW5pdFxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YSBpbml0XG4gIHwgTm9kZVxuICAgICAgeyBsZWZ0ID0gTGVhZiB7IGtleSA9IGxrZXk7IHZhbHVlID0gbGRhdGEgfVxuICAgICAgOyBrZXlcbiAgICAgIDsgdmFsdWUgPSBkYXRhXG4gICAgICA7IGhlaWdodCA9IF9cbiAgICAgIDsgcmlnaHQgPSBMZWFmIHsga2V5ID0gcmtleTsgdmFsdWUgPSByZGF0YSB9XG4gICAgICB9IC0+IGYgfmtleTpya2V5IH5kYXRhOnJkYXRhIChmIH5rZXkgfmRhdGEgKGYgfmtleTpsa2V5IH5kYXRhOmxkYXRhIGluaXQpKVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IExlYWYgeyBrZXkgPSBsa2V5OyB2YWx1ZSA9IGxkYXRhIH1cbiAgICAgIDsga2V5XG4gICAgICA7IHZhbHVlID0gZGF0YVxuICAgICAgOyBoZWlnaHQgPSBfXG4gICAgICA7IHJpZ2h0ID0gRW1wdHlcbiAgICAgIH0gLT4gZiB+a2V5IH5kYXRhIChmIH5rZXk6bGtleSB+ZGF0YTpsZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdCA9IEVtcHR5XG4gICAgICA7IGtleVxuICAgICAgOyB2YWx1ZSA9IGRhdGFcbiAgICAgIDsgaGVpZ2h0ID0gX1xuICAgICAgOyByaWdodCA9IExlYWYgeyBrZXkgPSBya2V5OyB2YWx1ZSA9IHJkYXRhIH1cbiAgICAgIH0gLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSBpbml0KVxuICB8IE5vZGVcbiAgICAgIHsgbGVmdDsga2V5OyB2YWx1ZSA9IGRhdGE7IGhlaWdodCA9IF87IHJpZ2h0ID0gTGVhZiB7IGtleSA9IHJrZXk7IHZhbHVlID0gcmRhdGEgfSB9XG4gICAgLT4gZiB+a2V5OnJrZXkgfmRhdGE6cmRhdGEgKGYgfmtleSB+ZGF0YSAoZm9sZCBsZWZ0IH5pbml0IH5mKSlcbiAgfCBOb2RlXG4gICAgICB7IGxlZnQgPSBMZWFmIHsga2V5ID0gbGtleTsgdmFsdWUgPSBsZGF0YSB9OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfVxuICAgIC0+IGZvbGQgcmlnaHQgfmluaXQ6KGYgfmtleSB+ZGF0YSAoZiB+a2V5OmxrZXkgfmRhdGE6bGRhdGEgaW5pdCkpIH5mXG4gIHwgTm9kZSB7IGxlZnQ7IGtleTsgdmFsdWUgPSBkYXRhOyBoZWlnaHQgPSBfOyByaWdodCB9IC0+XG4gICAgZm9sZCByaWdodCB+aW5pdDooZiB+a2V5IH5kYXRhIChmb2xkIGxlZnQgfmluaXQgfmYpKSB+ZlxuOztcblxubGV0IHJlYyBpdGVyIHQgfmYgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICB8IE5vZGUgeyBsZWZ0OyBrZXk7IHZhbHVlID0gZGF0YTsgaGVpZ2h0ID0gXzsgcmlnaHQgfSAtPlxuICAgIGl0ZXIgbGVmdCB+ZjtcbiAgICBmIH5rZXkgfmRhdGE7XG4gICAgaXRlciByaWdodCB+ZlxuOztcblxubGV0IHJlYyBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTGVhZiAoeyBrZXk7IHZhbHVlIH0gYXMgdCkgLT4gdC52YWx1ZSA8LSBmIH5rZXkgfmRhdGE6dmFsdWVcbiAgfCBOb2RlICh7IGxlZnQ7IGtleTsgdmFsdWU7IGhlaWdodCA9IF87IHJpZ2h0IH0gYXMgdCkgLT5cbiAgICBtYXBpX2lucGxhY2UgfmYgbGVmdDtcbiAgICB0LnZhbHVlIDwtIGYgfmtleSB+ZGF0YTp2YWx1ZTtcbiAgICBtYXBpX2lucGxhY2UgfmYgcmlnaHRcbjs7XG5cbmxldCBjaG9vc2VfZXhuID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbQXZsdHJlZS5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pXG4gIHwgTGVhZiB7IGtleTsgdmFsdWU7IF8gfSB8IE5vZGUgeyBrZXk7IHZhbHVlOyBfIH0gLT4ga2V5LCB2YWx1ZVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNodGJsX2ludGZcblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5LlNcblxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCBoYXNoX3BhcmFtID0gSGFzaGFibGUuaGFzaF9wYXJhbVxubGV0IGhhc2ggPSBIYXNoYWJsZS5oYXNoXG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxudHlwZSAoJ2ssICd2KSB0ID1cbiAgeyBtdXRhYmxlIHRhYmxlIDogKCdrLCAndikgQXZsdHJlZS50IGFycmF5XG4gIDsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgKCogW3JlY2VudGx5X2FkZGVkXSBpcyB0aGUgcmVmZXJlbmNlIHBhc3NlZCB0byBbQXZsdHJlZS5hZGRdLiBXZSBwdXQgaXQgaW4gdGhlIGhhc2hcbiAgICAgdGFibGUgdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBhdCBldmVyeSBbc2V0XS4gKilcbiAgOyByZWNlbnRseV9hZGRlZCA6IGJvb2wgcmVmXG4gIDsgZ3Jvd3RoX2FsbG93ZWQgOiBib29sXG4gIDsgaGFzaGFibGUgOiAnayBIYXNoYWJsZS50XG4gIDsgbXV0YWJsZSBtdXRhdGlvbl9hbGxvd2VkIDogYm9vbCAoKiBTZXQgZHVyaW5nIGFsbCBpdGVyYXRpb24gb3BlcmF0aW9ucyAqKVxuICB9XG5cbnR5cGUgJ2Ega2V5ID0gJ2FcblxubGV0IHNleHBfb2Zfa2V5IHQgPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdFxubGV0IGNvbXBhcmVfa2V5IHQgPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLmNvbXBhcmVcblxubGV0IGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQgPVxuICBpZiBub3QgdC5tdXRhdGlvbl9hbGxvd2VkIHRoZW4gZmFpbHdpdGggXCJIYXNodGJsOiBtdXRhdGlvbiBub3QgYWxsb3dlZCBkdXJpbmcgaXRlcmF0aW9uXCJcbjs7XG5cbmxldCB3aXRob3V0X211dGF0aW5nIHQgZiA9XG4gIGlmIHQubXV0YXRpb25fYWxsb3dlZFxuICB0aGVuIChcbiAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgfCB4IC0+XG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gdHJ1ZTtcbiAgICAgIHhcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSB0cnVlO1xuICAgICAgcmFpc2UgZXhuKVxuICBlbHNlIGYgKClcbjs7XG5cbigqKiBJbnRlcm5hbGx5IHVzZSBhIG1heGltdW0gc2l6ZSB0aGF0IGlzIGEgcG93ZXIgb2YgMi4gUmV2ZXJzZXMgdGhlIGFib3ZlIHRvIGZpbmQgdGhlXG4gICAgZmxvb3IgcG93ZXIgb2YgMiBiZWxvdyB0aGUgc3lzdGVtIG1heCBhcnJheSBsZW5ndGggKilcbmxldCBtYXhfdGFibGVfbGVuZ3RoID0gSW50LmZsb29yX3BvdzIgQXJyYXkubWF4X2xlbmd0aFxuXG4oKiBUaGUgZGVmYXVsdCBzaXplIGlzIGNob3NlbiB0byBiZSAwIChhcyBvcHBvc2VkIHRvIDEyOCBhcyBpdCB3YXMgYmVmb3JlKSBiZWNhdXNlOlxuICAgLSAxMjggY2FuIGNyZWF0ZSBzdWJzdGFudGlhbCBtZW1vcnkgb3ZlcmhlYWQgKHgxMCkgd2hlbiBjcmVhdGluZyBtYW55IHRhYmxlcywgbW9zdFxuICAgICBvZiB3aGljaCBhcmUgbm90IGJpZyAoc2F5LCBpZiB5b3UgaGF2ZSBhIGhhc2h0Ymwgb2YgaGFzaHRibCkuIEFuZCBtZW1vcnkgb3ZlcmhlYWQgaXNcbiAgICAgbm90IHRoYXQgZWFzeSB0byBwcm9maWxlLlxuICAgLSBpZiBhIGhhc2h0YmwgaXMgZ29pbmcgdG8gZ3JvdywgaXQncyBub3QgY2xlYXIgd2h5IDEyOCBpcyBtYXJrZWRseSBiZXR0ZXIgdGhhbiBvdGhlclxuICAgICBzaXplcyAoaWYgeW91IGdvaW5nIHRvIHN0aWNrIDEwMDAgZWxlbWVudHMsIHlvdSdyZSBnb2luZyB0byBncm93IHRoZSBoYXNodGFibGUgb25jZVxuICAgICBvciB0d2ljZSBhbnl3YXkpXG4gICAtIGluIG90aGVyIGxhbmd1YWdlcyAobGlrZSBydXN0LCBweXRob24sIGFuZCBhcHBhcmVudGx5IGdvKSwgdGhlIGRlZmF1bHQgaXMgYWxzbyBhXG4gICAgIHNtYWxsIHNpemUuICopXG5sZXQgY3JlYXRlID8oZ3Jvd3RoX2FsbG93ZWQgPSB0cnVlKSA/KHNpemUgPSAwKSB+aGFzaGFibGUgKCkgPVxuICBsZXQgc2l6ZSA9IEludC5taW4gKEludC5tYXggMSBzaXplKSBtYXhfdGFibGVfbGVuZ3RoIGluXG4gIGxldCBzaXplID0gSW50LmNlaWxfcG93MiBzaXplIGluXG4gIHsgdGFibGUgPSBBcnJheS5jcmVhdGUgfmxlbjpzaXplIEF2bHRyZWUuZW1wdHlcbiAgOyBsZW5ndGggPSAwXG4gIDsgZ3Jvd3RoX2FsbG93ZWRcbiAgOyByZWNlbnRseV9hZGRlZCA9IHJlZiBmYWxzZVxuICA7IGhhc2hhYmxlXG4gIDsgbXV0YXRpb25fYWxsb3dlZCA9IHRydWVcbiAgfVxuOztcblxuKCoqIFN1cHBsZW1lbnRhbCBoYXNoLiBUaGlzIG1heSBub3QgYmUgbmVjZXNzYXJ5LCBpdCBpcyBpbnRlbmRlZCBhcyBhIGRlZmVuc2UgYWdhaW5zdCBwb29yXG4gICAgaGFzaCBmdW5jdGlvbnMsIGZvciB3aGljaCB0aGUgcG93ZXIgb2YgMiBzaXplZCB0YWJsZSB3aWxsIGJlIGVzcGVjaWFsbHkgc2Vuc2l0aXZlLlxuICAgIFdpdGggc29tZSB0ZXN0aW5nIHdlIG1heSBjaG9vc2UgdG8gYWRkIGl0LCBidXQgdGhpcyB0YWJsZSBpcyBkZXNpZ25lZCB0byBiZSByb2J1c3QgdG9cbiAgICBjb2xsaXNpb25zLCBhbmQgaW4gbW9zdCBvZiBteSB0ZXN0aW5nIHRoaXMgZGVncmFkZXMgcGVyZm9ybWFuY2UuICopXG5sZXQgX3N1cHBsZW1lbnRhbF9oYXNoIGggPVxuICBsZXQgaCA9IGggbHhvciAoKGggbHNyIDIwKSBseG9yIChoIGxzciAxMikpIGluXG4gIGggbHhvciAoaCBsc3IgNykgbHhvciAoaCBsc3IgNClcbjs7XG5cbmxldCBzbG90IHQga2V5ID1cbiAgbGV0IGhhc2ggPSB0Lmhhc2hhYmxlLkhhc2hhYmxlLmhhc2gga2V5IGluXG4gICgqIHRoaXMgaXMgYWx3YXlzIG5vbi1uZWdhdGl2ZSBiZWNhdXNlIHdlIGRvIFtsYW5kXSB3aXRoIG5vbi1uZWdhdGl2ZSBudW1iZXIgKilcbiAgaGFzaCBsYW5kIChBcnJheS5sZW5ndGggdC50YWJsZSAtIDEpXG47O1xuXG5sZXQgYWRkX3dvcmtlciB0IH5yZXBsYWNlIH5rZXkgfmRhdGEgPVxuICBsZXQgaSA9IHNsb3QgdCBrZXkgaW5cbiAgbGV0IHJvb3QgPSB0LnRhYmxlLihpKSBpblxuICBsZXQgYWRkZWQgPSB0LnJlY2VudGx5X2FkZGVkIGluXG4gIGFkZGVkIDo9IGZhbHNlO1xuICBsZXQgbmV3X3Jvb3QgPVxuICAgICgqIFRoZSBhdmwgdHJlZSBtaWdodCByZXBsYWNlIHRoZSB2YWx1ZSBbcmVwbGFjZT10cnVlXSBvciBkbyBub3RoaW5nIFtyZXBsYWNlPWZhbHNlXVxuICAgICAgIHRvIHRoZSBlbnRyeSwgaW4gdGhhdCBjYXNlIHRoZSB0YWJsZSBkaWQgbm90IGdldCBiaWdnZXIsIHNvIHdlIHNob3VsZCBub3RcbiAgICAgICBpbmNyZW1lbnQgbGVuZ3RoLCB3ZSBwYXNzIGluIHRoZSBib29sIHJlZiB0LmFkZGVkIHNvIHRoYXQgaXQgY2FuIHRlbGwgdXMgd2hldGhlclxuICAgICAgIGl0IGFkZGVkIG9yIHJlcGxhY2VkLiBXZSBkbyBpdCB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9uLiBTaW5jZSB0aGUgYm9vbFxuICAgICAgIGlzIGFuIGltbWVkaWF0ZSBpdCBkb2VzIG5vdCBnbyB0aHJvdWdoIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuICAgIEF2bHRyZWUuYWRkIH5yZXBsYWNlIHJvb3QgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIH5hZGRlZCB+a2V5IH5kYXRhXG4gIGluXG4gIGlmICFhZGRlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgKCogVGhpcyBsaXR0bGUgb3B0aW1pemF0aW9uIHNhdmVzIGEgY2FtbF9tb2RpZnkgd2hlbiB0aGUgdHJlZVxuICAgICBoYXNuJ3QgYmVlbiByZWJhbGFuY2VkLiAqKVxuICBpZiBub3QgKHBoeXNfZXF1YWwgbmV3X3Jvb3Qgcm9vdCkgdGhlbiB0LnRhYmxlLihpKSA8LSBuZXdfcm9vdFxuOztcblxubGV0IG1heWJlX3Jlc2l6ZV90YWJsZSB0ID1cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0LnRhYmxlIGluXG4gIGxldCBzaG91bGRfZ3JvdyA9IHQubGVuZ3RoID4gbGVuIGluXG4gIGlmIHNob3VsZF9ncm93ICYmIHQuZ3Jvd3RoX2FsbG93ZWRcbiAgdGhlbiAoXG4gICAgbGV0IG5ld19hcnJheV9sZW5ndGggPSBJbnQubWluIChsZW4gKiAyKSBtYXhfdGFibGVfbGVuZ3RoIGluXG4gICAgaWYgbmV3X2FycmF5X2xlbmd0aCA+IGxlblxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld190YWJsZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm5ld19hcnJheV9sZW5ndGggQXZsdHJlZS5lbXB0eSBpblxuICAgICAgbGV0IG9sZF90YWJsZSA9IHQudGFibGUgaW5cbiAgICAgIHQudGFibGUgPC0gbmV3X3RhYmxlO1xuICAgICAgdC5sZW5ndGggPC0gMDtcbiAgICAgIGxldCBmIH5rZXkgfmRhdGEgPSBhZGRfd29ya2VyIH5yZXBsYWNlOnRydWUgdCB+a2V5IH5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIG9sZF90YWJsZSAtIDEgZG9cbiAgICAgICAgQXZsdHJlZS5pdGVyIG9sZF90YWJsZS4oaSkgfmZcbiAgICAgIGRvbmUpKVxuOztcblxubGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBhZGRfd29ya2VyIH5yZXBsYWNlOnRydWUgdCB+a2V5IH5kYXRhO1xuICBtYXliZV9yZXNpemVfdGFibGUgdFxuOztcblxubGV0IGFkZCB0IH5rZXkgfmRhdGEgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBhZGRfd29ya2VyIH5yZXBsYWNlOmZhbHNlIHQgfmtleSB+ZGF0YTtcbiAgaWYgISh0LnJlY2VudGx5X2FkZGVkKVxuICB0aGVuIChcbiAgICBtYXliZV9yZXNpemVfdGFibGUgdDtcbiAgICBgT2spXG4gIGVsc2UgYER1cGxpY2F0ZVxuOztcblxubGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gIHwgYE9rIC0+ICgpXG4gIHwgYER1cGxpY2F0ZSAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IHNleHBfb2Zfa2V5IHQgaW5cbiAgICBsZXQgZXJyb3IgPSBFcnJvci5jcmVhdGUgXCJIYXNodGJsLmFkZF9leG4gZ290IGtleSBhbHJlYWR5IHByZXNlbnRcIiBrZXkgc2V4cF9vZl9rZXkgaW5cbiAgICBFcnJvci5yYWlzZSBlcnJvclxuOztcblxubGV0IGNsZWFyIHQgPVxuICBlbnN1cmVfbXV0YXRpb25fYWxsb3dlZCB0O1xuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgdC50YWJsZS4oaSkgPC0gQXZsdHJlZS5lbXB0eVxuICBkb25lO1xuICB0Lmxlbmd0aCA8LSAwXG47O1xuXG5sZXQgZmluZF9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gICgqIHdpdGggYSBnb29kIGhhc2ggZnVuY3Rpb24gdGhlc2UgZmlyc3QgdHdvIGNhc2VzIHdpbGwgYmUgdGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSxcbiAgICAgYW5kIEF2bHRyZWUuZmluZCBpcyByZWN1cnNpdmUsIHNvIGl0IGNhbid0IGJlIGlubGluZWQsIHNvIGRvaW5nIHRoaXMgYXZvaWRzIGFcbiAgICAgZnVuY3Rpb24gY2FsbCBpbiBtb3N0IGNhc2VzLiAqKVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5XG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgZWxzZSBpZl9ub3RfZm91bmQga2V5XG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZF9hbmRfY2FsbCB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMSB0IGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB2IGEgZWxzZSBpZl9ub3RfZm91bmQga2V5IGFcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsMSB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kX2FuZF9jYWxsMiB0IGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIHYgYSBiIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhIGJcbiAgfCB0cmVlIC0+XG4gICAgQXZsdHJlZS5maW5kX2FuZF9jYWxsMiB0cmVlIH5jb21wYXJlOihjb21wYXJlX2tleSB0KSBrZXkgfmEgfmIgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kaV9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gICgqIHdpdGggYSBnb29kIGhhc2ggZnVuY3Rpb24gdGhlc2UgZmlyc3QgdHdvIGNhc2VzIHdpbGwgYmUgdGhlIG92ZXJ3aGVsbWluZyBtYWpvcml0eSxcbiAgICAgYW5kIEF2bHRyZWUuZmluZCBpcyByZWN1cnNpdmUsIHNvIGl0IGNhbid0IGJlIGlubGluZWQsIHNvIGRvaW5nIHRoaXMgYXZvaWRzIGFcbiAgICAgZnVuY3Rpb24gY2FsbCBpbiBtb3N0IGNhc2VzLiAqKVxuICBtYXRjaCB0LnRhYmxlLihzbG90IHQga2V5KSB3aXRoXG4gIHwgQXZsdHJlZS5FbXB0eSAtPiBpZl9ub3RfZm91bmQga2V5XG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGVsc2UgaWZfbm90X2ZvdW5kIGtleVxuICB8IHRyZWUgLT5cbiAgICBBdmx0cmVlLmZpbmRpX2FuZF9jYWxsIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMSB0IGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYVxuICB8IEF2bHRyZWUuTGVhZiB7IGtleSA9IGs7IHZhbHVlID0gdiB9IC0+XG4gICAgaWYgY29tcGFyZV9rZXkgdCBrIGtleSA9IDAgdGhlbiBpZl9mb3VuZCB+a2V5OmsgfmRhdGE6diBhIGVsc2UgaWZfbm90X2ZvdW5kIGtleSBhXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwxIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleSB+YSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IGZpbmRpX2FuZF9jYWxsMiB0IGtleSB+YSB+YiB+aWZfZm91bmQgfmlmX25vdF9mb3VuZCA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSB2IH0gLT5cbiAgICBpZiBjb21wYXJlX2tleSB0IGsga2V5ID0gMCB0aGVuIGlmX2ZvdW5kIH5rZXk6ayB+ZGF0YTp2IGEgYiBlbHNlIGlmX25vdF9mb3VuZCBrZXkgYSBiXG4gIHwgdHJlZSAtPlxuICAgIEF2bHRyZWUuZmluZGlfYW5kX2NhbGwyXG4gICAgICB0cmVlXG4gICAgICB+Y29tcGFyZTooY29tcGFyZV9rZXkgdClcbiAgICAgIGtleVxuICAgICAgfmFcbiAgICAgIH5iXG4gICAgICB+aWZfZm91bmRcbiAgICAgIH5pZl9ub3RfZm91bmRcbjs7XG5cbmxldCBmaW5kID1cbiAgbGV0IGlmX2ZvdW5kIHYgPSBTb21lIHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBfID0gTm9uZSBpblxuICBmdW4gdCBrZXkgLT4gZmluZF9hbmRfY2FsbCB0IGtleSB+aWZfZm91bmQgfmlmX25vdF9mb3VuZFxuOztcblxubGV0IG1lbSB0IGtleSA9XG4gIG1hdGNoIHQudGFibGUuKHNsb3QgdCBrZXkpIHdpdGhcbiAgfCBBdmx0cmVlLkVtcHR5IC0+IGZhbHNlXG4gIHwgQXZsdHJlZS5MZWFmIHsga2V5ID0gazsgdmFsdWUgPSBfIH0gLT4gY29tcGFyZV9rZXkgdCBrIGtleSA9IDBcbiAgfCB0cmVlIC0+IEF2bHRyZWUubWVtIHRyZWUgfmNvbXBhcmU6KGNvbXBhcmVfa2V5IHQpIGtleVxuOztcblxubGV0IHJlbW92ZSB0IGtleSA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIGxldCBpID0gc2xvdCB0IGtleSBpblxuICBsZXQgcm9vdCA9IHQudGFibGUuKGkpIGluXG4gIGxldCBhZGRlZF9vcl9yZW1vdmVkID0gdC5yZWNlbnRseV9hZGRlZCBpblxuICBhZGRlZF9vcl9yZW1vdmVkIDo9IGZhbHNlO1xuICBsZXQgbmV3X3Jvb3QgPVxuICAgIEF2bHRyZWUucmVtb3ZlIHJvb3QgfnJlbW92ZWQ6YWRkZWRfb3JfcmVtb3ZlZCB+Y29tcGFyZTooY29tcGFyZV9rZXkgdCkga2V5XG4gIGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCByb290IG5ld19yb290KSB0aGVuIHQudGFibGUuKGkpIDwtIG5ld19yb290O1xuICBpZiAhYWRkZWRfb3JfcmVtb3ZlZCB0aGVuIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBpZiBsZW5ndGggdCA9IDBcbiAgdGhlbiBpbml0XG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgYWNjID0gcmVmIGluaXQgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGFjYyA6PSBmIH5rZXkgfmRhdGEgIWFjY1xuICAgICAgICB8IGJ1Y2tldCAtPiBhY2MgOj0gQXZsdHJlZS5mb2xkIGJ1Y2tldCB+aW5pdDohYWNjIH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgIWFjY1xuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG07XG4gICAgICByYWlzZSBleG4pXG47O1xuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGlmIHQubGVuZ3RoID0gMFxuICB0aGVuICgpXG4gIGVsc2UgKFxuICAgIGxldCBuID0gQXJyYXkubGVuZ3RoIHQudGFibGUgaW5cbiAgICBsZXQgbSA9IHQubXV0YXRpb25fYWxsb3dlZCBpblxuICAgIG1hdGNoXG4gICAgICB0Lm11dGF0aW9uX2FsbG93ZWQgPC0gZmFsc2U7XG4gICAgICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICAgICAgbWF0Y2ggQXJyYXkudW5zYWZlX2dldCB0LnRhYmxlIGkgd2l0aFxuICAgICAgICB8IEF2bHRyZWUuRW1wdHkgLT4gKClcbiAgICAgICAgfCBBdmx0cmVlLkxlYWYgeyBrZXk7IHZhbHVlID0gZGF0YSB9IC0+IGYgfmtleSB+ZGF0YVxuICAgICAgICB8IGJ1Y2tldCAtPiBBdmx0cmVlLml0ZXIgYnVja2V0IH5mXG4gICAgICBkb25lXG4gICAgd2l0aFxuICAgIHwgKCkgLT4gdC5tdXRhdGlvbl9hbGxvd2VkIDwtIG1cbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgIHQubXV0YXRpb25fYWxsb3dlZCA8LSBtO1xuICAgICAgcmFpc2UgZXhuKVxuOztcblxubGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGl0ZXJfa2V5cyB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGE6XyAtPiBmIGtleSlcblxubGV0IHJlYyBjaG9vc2Vfbm9uZW1wdHkgdGFibGUgaSA9XG4gIGxldCBhdmx0cmVlID0gdGFibGUuKGkpIGluXG4gIGlmIEF2bHRyZWUuaXNfZW1wdHkgYXZsdHJlZVxuICB0aGVuIGNob29zZV9ub25lbXB0eSB0YWJsZSAoaSArIDEpXG4gIGVsc2UgQXZsdHJlZS5jaG9vc2VfZXhuIGF2bHRyZWVcbjs7XG5cbmxldCBjaG9vc2VfZXhuIHQgPVxuICBpZiB0Lmxlbmd0aCA9IDAgdGhlbiByYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJbSGFzaHRibC5jaG9vc2VfZXhuXSBvZiBlbXB0eSBoYXNodGJsXCIgW10pO1xuICBjaG9vc2Vfbm9uZW1wdHkgdC50YWJsZSAwXG47O1xuXG5sZXQgY2hvb3NlIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGNob29zZV9ub25lbXB0eSB0LnRhYmxlIDApXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2tleSBpbnZhcmlhbnRfZGF0YSB0ID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCB0LnRhYmxlIC0gMSBkb1xuICAgIEF2bHRyZWUuaW52YXJpYW50IHQudGFibGUuKGkpIH5jb21wYXJlOihjb21wYXJlX2tleSB0KVxuICBkb25lO1xuICBsZXQgcmVhbF9sZW4gPVxuICAgIGZvbGQgdCB+aW5pdDowIH5mOihmdW4gfmtleSB+ZGF0YSBpIC0+XG4gICAgICBpbnZhcmlhbnRfa2V5IGtleTtcbiAgICAgIGludmFyaWFudF9kYXRhIGRhdGE7XG4gICAgICBpICsgMSlcbiAgaW5cbiAgYXNzZXJ0IChyZWFsX2xlbiA9IHQubGVuZ3RoKVxuOztcblxubGV0IGZpbmRfZXhuID1cbiAgbGV0IGlmX2ZvdW5kIHYgXyA9IHYgaW5cbiAgbGV0IGlmX25vdF9mb3VuZCBrIHQgPVxuICAgIHJhaXNlXG4gICAgICAoTm90X2ZvdW5kX3MgKExpc3QgWyBBdG9tIFwiSGFzaHRibC5maW5kX2V4bjogbm90IGZvdW5kXCI7IHQuaGFzaGFibGUuc2V4cF9vZl90IGsgXSkpXG4gIGluXG4gIGxldCBmaW5kX2V4biB0IGtleSA9IGZpbmRfYW5kX2NhbGwxIHQga2V5IH5hOnQgfmlmX2ZvdW5kIH5pZl9ub3RfZm91bmQgaW5cbiAgKCogbmFtZWQgdG8gcHJlc2VydmUgc3ltYm9sIGluIGNvbXBpbGVkIGJpbmFyeSAqKVxuICBmaW5kX2V4blxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIHdpdGhfcmV0dXJuIChmdW4gciAtPlxuICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIHIucmV0dXJuIHRydWUpO1xuICAgIGZhbHNlKVxuOztcblxubGV0IGV4aXN0cyB0IH5mID0gZXhpc3RzaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBmb3JfYWxsaSB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IG5vdCAoZiB+a2V5IH5kYXRhKSkpXG5sZXQgZm9yX2FsbCB0IH5mID0gbm90IChleGlzdHNpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gbm90IChmIGRhdGEpKSlcblxubGV0IGNvdW50aSB0IH5mID1cbiAgZm9sZCB0IH5pbml0OjAgfmY6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBhY2MgKyAxIGVsc2UgYWNjKVxuOztcblxubGV0IGNvdW50IHQgfmYgPVxuICBmb2xkIHQgfmluaXQ6MCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBhY2MgLT4gaWYgZiBkYXRhIHRoZW4gYWNjICsgMSBlbHNlIGFjYylcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBsZXQgbmV3X3QgPVxuICAgIGNyZWF0ZSB+Z3Jvd3RoX2FsbG93ZWQ6dC5ncm93dGhfYWxsb3dlZCB+aGFzaGFibGU6dC5oYXNoYWJsZSB+c2l6ZTp0Lmxlbmd0aCAoKVxuICBpblxuICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBzZXQgbmV3X3QgfmtleSB+ZGF0YTooZiB+a2V5IH5kYXRhKSk7XG4gIG5ld190XG47O1xuXG5sZXQgbWFwIHQgfmYgPSBtYXBpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGNvcHkgdCA9IG1hcCB0IH5mOkZuLmlkXG5cbmxldCBmaWx0ZXJfbWFwaSB0IH5mID1cbiAgbGV0IG5ld190ID1cbiAgICBjcmVhdGUgfmdyb3d0aF9hbGxvd2VkOnQuZ3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlOnQuaGFzaGFibGUgfnNpemU6dC5sZW5ndGggKClcbiAgaW5cbiAgaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgIHwgU29tZSBuZXdfZGF0YSAtPiBzZXQgbmV3X3QgfmtleSB+ZGF0YTpuZXdfZGF0YVxuICAgIHwgTm9uZSAtPiAoKSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcCB0IH5mID0gZmlsdGVyX21hcGkgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBmaWx0ZXJpIHQgfmYgPVxuICBmaWx0ZXJfbWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbmxldCBmaWx0ZXJfa2V5cyB0IH5mID0gZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KVxuXG5sZXQgcGFydGl0aW9uX21hcGkgdCB+ZiA9XG4gIGxldCB0MCA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGxldCB0MSA9XG4gICAgY3JlYXRlIH5ncm93dGhfYWxsb3dlZDp0Lmdyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZTp0Lmhhc2hhYmxlIH5zaXplOnQubGVuZ3RoICgpXG4gIGluXG4gIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbWF0Y2ggKGYgfmtleSB+ZGF0YSA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IG5ld19kYXRhIC0+IHNldCB0MCB+a2V5IH5kYXRhOm5ld19kYXRhXG4gICAgfCBTZWNvbmQgbmV3X2RhdGEgLT4gc2V0IHQxIH5rZXkgfmRhdGE6bmV3X2RhdGEpO1xuICB0MCwgdDFcbjs7XG5cbmxldCBwYXJ0aXRpb25fbWFwIHQgfmYgPSBwYXJ0aXRpb25fbWFwaSB0IH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcblxubGV0IHBhcnRpdGlvbmlfdGYgdCB+ZiA9XG4gIHBhcnRpdGlvbl9tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIEZpcnN0IGRhdGEgZWxzZSBTZWNvbmQgZGF0YSlcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IHBhcnRpdGlvbmlfdGYgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBmaW5kX29yX2FkZCB0IGlkIH5kZWZhdWx0ID1cbiAgZmluZF9hbmRfY2FsbDJcbiAgICB0XG4gICAgaWRcbiAgICB+YTp0XG4gICAgfmI6ZGVmYXVsdFxuICAgIH5pZl9mb3VuZDooZnVuIGRhdGEgXyBfIC0+IGRhdGEpXG4gICAgfmlmX25vdF9mb3VuZDooZnVuIGtleSB0IGRlZmF1bHQgLT5cbiAgICAgIGxldCBkZWZhdWx0ID0gZGVmYXVsdCAoKSBpblxuICAgICAgc2V0IHQgfmtleSB+ZGF0YTpkZWZhdWx0O1xuICAgICAgZGVmYXVsdClcbjs7XG5cbmxldCBmaW5kaV9vcl9hZGQgdCBpZCB+ZGVmYXVsdCA9XG4gIGZpbmRfYW5kX2NhbGwyXG4gICAgdFxuICAgIGlkXG4gICAgfmE6dFxuICAgIH5iOmRlZmF1bHRcbiAgICB+aWZfZm91bmQ6KGZ1biBkYXRhIF8gXyAtPiBkYXRhKVxuICAgIH5pZl9ub3RfZm91bmQ6KGZ1biBrZXkgdCBkZWZhdWx0IC0+XG4gICAgICBsZXQgZGVmYXVsdCA9IGRlZmF1bHQga2V5IGluXG4gICAgICBzZXQgdCB+a2V5IH5kYXRhOmRlZmF1bHQ7XG4gICAgICBkZWZhdWx0KVxuOztcblxuKCogU29tZSBoYXNodGJsIGltcGxlbWVudGF0aW9ucyBtYXkgYmUgYWJsZSB0byBwZXJmb3JtIHRoaXMgbW9yZSBlZmZpY2llbnRseSB0aGFuIHR3b1xuICAgc2VwYXJhdGUgbG9va3VwcyAqKVxubGV0IGZpbmRfYW5kX3JlbW92ZSB0IGlkID1cbiAgbGV0IHJlc3VsdCA9IGZpbmQgdCBpZCBpblxuICBpZiBPcHRpb24uaXNfc29tZSByZXN1bHQgdGhlbiByZW1vdmUgdCBpZDtcbiAgcmVzdWx0XG47O1xuXG5cbmxldCBjaGFuZ2UgdCBpZCB+ZiA9XG4gIG1hdGNoIGYgKGZpbmQgdCBpZCkgd2l0aFxuICB8IE5vbmUgLT4gcmVtb3ZlIHQgaWRcbiAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleTppZCB+ZGF0YVxuOztcblxubGV0IHVwZGF0ZV9hbmRfcmV0dXJuIHQgaWQgfmYgPVxuICBsZXQgZGF0YSA9IGYgKGZpbmQgdCBpZCkgaW5cbiAgc2V0IHQgfmtleTppZCB+ZGF0YTtcbiAgZGF0YVxuOztcblxubGV0IHVwZGF0ZSB0IGlkIH5mID0gaWdub3JlICh1cGRhdGVfYW5kX3JldHVybiB0IGlkIH5mIDogXylcblxubGV0IGluY3JfYnkgfnJlbW92ZV9pZl96ZXJvIHQga2V5IGJ5ID1cbiAgaWYgcmVtb3ZlX2lmX3plcm9cbiAgdGhlblxuICAgIGNoYW5nZSB0IGtleSB+ZjooZnVuIG9wdCAtPlxuICAgICAgbWF0Y2ggYnkgKyBPcHRpb24udmFsdWUgb3B0IH5kZWZhdWx0OjAgd2l0aFxuICAgICAgfCAwIC0+IE5vbmVcbiAgICAgIHwgbiAtPiBTb21lIG4pXG4gIGVsc2VcbiAgICB1cGRhdGUgdCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYnlcbiAgICAgIHwgU29tZSBpIC0+IGJ5ICsgaSlcbjs7XG5cbmxldCBpbmNyID8oYnkgPSAxKSA/KHJlbW92ZV9pZl96ZXJvID0gZmFsc2UpIHQga2V5ID0gaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgYnlcbmxldCBkZWNyID8oYnkgPSAxKSA/KHJlbW92ZV9pZl96ZXJvID0gZmFsc2UpIHQga2V5ID0gaW5jcl9ieSB+cmVtb3ZlX2lmX3plcm8gdCBrZXkgKC1ieSlcblxubGV0IGFkZF9tdWx0aSB0IH5rZXkgfmRhdGEgPVxuICB1cGRhdGUgdCBrZXkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFsgZGF0YSBdXG4gICAgfCBTb21lIGwgLT4gZGF0YSA6OiBsKVxuOztcblxubGV0IHJlbW92ZV9tdWx0aSB0IGtleSA9XG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIFtdIHwgU29tZSBbIF8gXSAtPiByZW1vdmUgdCBrZXlcbiAgfCBTb21lIChfIDo6IHRsKSAtPiBzZXQgdCB+a2V5IH5kYXRhOnRsXG47O1xuXG5sZXQgZmluZF9tdWx0aSB0IGtleSA9XG4gIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICB8IE5vbmUgLT4gW11cbiAgfCBTb21lIGwgLT4gbFxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgcm93cyA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBzXG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIHJvd3NcbiAgaW5cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlIH5zaXplICgpIGluXG4gIGxldCBkdXBlcyA9IHJlZiBbXSBpblxuICBMaXN0Lml0ZXIgcm93cyB+ZjooZnVuIHIgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByIGluXG4gICAgbGV0IGRhdGEgPSBnZXRfZGF0YSByIGluXG4gICAgaWYgbWVtIHJlcyBrZXkgdGhlbiBkdXBlcyA6PSBrZXkgOjogIWR1cGVzIGVsc2Ugc2V0IHJlcyB+a2V5IH5kYXRhKTtcbiAgbWF0Y2ggIWR1cGVzIHdpdGhcbiAgfCBbXSAtPiBgT2sgcmVzXG4gIHwga2V5cyAtPiBgRHVwbGljYXRlX2tleXMgKExpc3QuZGVkdXBfYW5kX3NvcnQgfmNvbXBhcmU6aGFzaGFibGUuSGFzaGFibGUuY29tcGFyZSBrZXlzKVxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWRfbXVsdGkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgcm93cyA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgcyAtPiBzXG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIHJvd3NcbiAgaW5cbiAgbGV0IHJlcyA9IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfnNpemUgfmhhc2hhYmxlICgpIGluXG4gIExpc3QuaXRlciByb3dzIH5mOihmdW4gciAtPlxuICAgIGxldCBrZXkgPSBnZXRfa2V5IHIgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHIgaW5cbiAgICBhZGRfbXVsdGkgcmVzIH5rZXkgfmRhdGEpO1xuICByZXNcbjs7XG5cbmxldCBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleTpmc3QgfmdldF9kYXRhOnNuZCBsc3Qgd2l0aFxuICB8IGBPayB0IC0+IGBPayB0XG4gIHwgYER1cGxpY2F0ZV9rZXlzIGsgLT4gYER1cGxpY2F0ZV9rZXkgKExpc3QuaGRfZXhuIGspXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdFxuOztcblxubGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgbWF0Y2ggb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsc3Qgd2l0aFxuICB8IGBPayB2IC0+IFJlc3VsdC5PayB2XG4gIHwgYER1cGxpY2F0ZV9rZXkga2V5IC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gaGFzaGFibGUuSGFzaGFibGUuc2V4cF9vZl90IGluXG4gICAgT3JfZXJyb3IuZXJyb3IgXCJIYXNodGJsLm9mX2FsaXN0X2V4bjogZHVwbGljYXRlIGtleVwiIGtleSBzZXhwX29mX2tleVxuOztcblxubGV0IG9mX2FsaXN0X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGxzdCA9XG4gIG1hdGNoIG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0IHdpdGhcbiAgfCBSZXN1bHQuT2sgdiAtPiB2XG4gIHwgUmVzdWx0LkVycm9yIGUgLT4gRXJyb3IucmFpc2UgZVxuOztcblxubGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbHN0ID1cbiAgY3JlYXRlX21hcHBlZF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5OmZzdCB+Z2V0X2RhdGE6c25kIGxzdFxuOztcblxubGV0IHRvX2FsaXN0IHQgPSBmb2xkIH5mOihmdW4gfmtleSB+ZGF0YSBsaXN0IC0+IChrZXksIGRhdGEpIDo6IGxpc3QpIH5pbml0OltdIHRcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2tleSBzZXhwX29mX2RhdGEgdCA9XG4gIHRcbiAgfD4gdG9fYWxpc3RcbiAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gKGsxLCBfKSAoazIsIF8pIC0+IHQuaGFzaGFibGUuY29tcGFyZSBrMSBrMilcbiAgfD4gc2V4cF9vZl9saXN0IChzZXhwX29mX3BhaXIgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhKVxuOztcblxubGV0IHRfb2Zfc2V4cCB+aGFzaGFibGUga19vZl9zZXhwIGRfb2Zfc2V4cCBzZXhwID1cbiAgbGV0IGFsaXN0ID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAga19vZl9zZXhwIGRfb2Zfc2V4cCkgc2V4cCBpblxuICBtYXRjaCBvZl9hbGlzdCB+aGFzaGFibGUgYWxpc3QgfnNpemU6KExpc3QubGVuZ3RoIGFsaXN0KSB3aXRoXG4gIHwgYE9rIHYgLT4gdlxuICB8IGBEdXBsaWNhdGVfa2V5IGsgLT5cbiAgICAoKiBmaW5kIHRoZSBzZXhwIG9mIGEgZHVwbGljYXRlIGtleSwgc28gdGhlIGVycm9yIGlzIG5hcnJvd2VkIHRvIGEga2V5IGFuZCBub3RcbiAgICAgICB0aGUgd2hvbGUgbWFwICopXG4gICAgbGV0IGFsaXN0X3NleHBzID0gbGlzdF9vZl9zZXhwIChwYWlyX29mX3NleHAgRm4uaWQgRm4uaWQpIHNleHAgaW5cbiAgICBsZXQgZm91bmRfZmlyc3RfayA9IHJlZiBmYWxzZSBpblxuICAgIExpc3QuaXRlcjJfZXhuIGFsaXN0IGFsaXN0X3NleHBzIH5mOihmdW4gKGsyLCBfKSAoazJfc2V4cCwgXykgLT5cbiAgICAgIGlmIGhhc2hhYmxlLmNvbXBhcmUgayBrMiA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgIWZvdW5kX2ZpcnN0X2tcbiAgICAgICAgdGhlbiBvZl9zZXhwX2Vycm9yIFwiSGFzaHRibC50X29mX3NleHA6IGR1cGxpY2F0ZSBrZXlcIiBrMl9zZXhwXG4gICAgICAgIGVsc2UgZm91bmRfZmlyc3RfayA6PSB0cnVlKTtcbiAgICBhc3NlcnQgZmFsc2Vcbjs7XG5cbmxldCB0X3NleHBfZ3JhbW1hclxuICAgICAgKHR5cGUgayB2KVxuICAgICAgKGtfZ3JhbW1hciA6IGsgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgICAodl9ncmFtbWFyIDogdiBTZXhwbGliMC5TZXhwX2dyYW1tYXIudClcbiAgOiAoaywgdikgdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudFxuICA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbjs7XG5cbmxldCBrZXlzIHQgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhOl8gYWNjIC0+IGtleSA6OiBhY2MpXG5sZXQgZGF0YSB0ID0gZm9sZCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSBsaXN0IC0+IGRhdGEgOjogbGlzdCkgfmluaXQ6W10gdFxuXG5sZXQgYWRkX3RvX2dyb3VwcyBncm91cHMgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIH5yb3dzID1cbiAgTGlzdC5pdGVyIHJvd3MgfmY6KGZ1biByb3cgLT5cbiAgICBsZXQga2V5ID0gZ2V0X2tleSByb3cgaW5cbiAgICBsZXQgZGF0YSA9IGdldF9kYXRhIHJvdyBpblxuICAgIGxldCBkYXRhID1cbiAgICAgIG1hdGNoIGZpbmQgZ3JvdXBzIGtleSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGF0YVxuICAgICAgfCBTb21lIG9sZCAtPiBjb21iaW5lIG9sZCBkYXRhXG4gICAgaW5cbiAgICBzZXQgZ3JvdXBzIH5rZXkgfmRhdGEpXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgcm93cyA9XG4gIGxldCByZXMgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSBpblxuICBhZGRfdG9fZ3JvdXBzIHJlcyB+Z2V0X2tleSB+Z2V0X2RhdGEgfmNvbWJpbmUgfnJvd3M7XG4gIHJlc1xuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgfmdldF9kYXRhOkZuLmlkIHJvd3Ncbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSB+Z2V0X2tleSByb3dzID1cbiAgbWF0Y2ggY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgfmdldF9rZXkgcm93cyB3aXRoXG4gIHwgYE9rIHQgLT4gUmVzdWx0Lk9rIHRcbiAgfCBgRHVwbGljYXRlX2tleXMga2V5cyAtPlxuICAgIGxldCBzZXhwX29mX2tleSA9IGhhc2hhYmxlLkhhc2hhYmxlLnNleHBfb2ZfdCBpblxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiSGFzaHRibC5jcmVhdGVfd2l0aF9rZXk6IGR1cGxpY2F0ZSBrZXlzXCJcbiAgICAgICAgIFsgXCJrZXlzXCIsIHNleHBfb2ZfbGlzdCBzZXhwX29mX2tleSBrZXlzIF0pXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MgPVxuICBPcl9lcnJvci5va19leG4gKGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IHJvd3MpXG47O1xuXG5sZXQgbWVyZ2UgPVxuICBsZXQgbWF5YmVfc2V0IHQgfmtleSB+ZiBkID1cbiAgICBtYXRjaCBmIH5rZXkgZCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHYgLT4gc2V0IHQgfmtleSB+ZGF0YTp2XG4gIGluXG4gIGZ1biB0X2xlZnQgdF9yaWdodCB+ZiAtPlxuICAgIGlmIG5vdCAoSGFzaGFibGUuZXF1YWwgdF9sZWZ0Lmhhc2hhYmxlIHRfcmlnaHQuaGFzaGFibGUpXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkhhc2h0YmwubWVyZ2U6IGRpZmZlcmVudCAnaGFzaGFibGUnIHZhbHVlc1wiO1xuICAgIGxldCBuZXdfdCA9XG4gICAgICBjcmVhdGVcbiAgICAgICAgfmdyb3d0aF9hbGxvd2VkOnRfbGVmdC5ncm93dGhfYWxsb3dlZFxuICAgICAgICB+aGFzaGFibGU6dF9sZWZ0Lmhhc2hhYmxlXG4gICAgICAgIH5zaXplOnRfbGVmdC5sZW5ndGhcbiAgICAgICAgKClcbiAgICBpblxuICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9sZWZ0IChmdW4gKCkgLT5cbiAgICAgIHdpdGhvdXRfbXV0YXRpbmcgdF9yaWdodCAoZnVuICgpIC0+XG4gICAgICAgIGl0ZXJpIHRfbGVmdCB+ZjooZnVuIH5rZXkgfmRhdGE6bGVmdCAtPlxuICAgICAgICAgIG1hdGNoIGZpbmQgdF9yaWdodCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYExlZnQgbGVmdClcbiAgICAgICAgICB8IFNvbWUgcmlnaHQgLT4gbWF5YmVfc2V0IG5ld190IH5rZXkgfmYgKGBCb3RoIChsZWZ0LCByaWdodCkpKTtcbiAgICAgICAgaXRlcmkgdF9yaWdodCB+ZjooZnVuIH5rZXkgfmRhdGE6cmlnaHQgLT5cbiAgICAgICAgICBtYXRjaCBmaW5kIHRfbGVmdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYXliZV9zZXQgbmV3X3QgfmtleSB+ZiAoYFJpZ2h0IHJpZ2h0KVxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgICAgKCogYWxyZWFkeSBkb25lIGFib3ZlICopKSkpO1xuICAgIG5ld190XG47O1xuXG5sZXQgbWVyZ2VfaW50byB+c3JjIH5kc3QgfmYgPVxuICBpdGVyaSBzcmMgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgbGV0IGRzdF9kYXRhID0gZmluZCBkc3Qga2V5IGluXG4gICAgbGV0IGFjdGlvbiA9IHdpdGhvdXRfbXV0YXRpbmcgZHN0IChmdW4gKCkgLT4gZiB+a2V5IGRhdGEgZHN0X2RhdGEpIGluXG4gICAgbWF0Y2ggKGFjdGlvbiA6IF8gTWVyZ2VfaW50b19hY3Rpb24udCkgd2l0aFxuICAgIHwgUmVtb3ZlIC0+IHJlbW92ZSBkc3Qga2V5XG4gICAgfCBTZXRfdG8gZGF0YSAtPlxuICAgICAgKG1hdGNoIGRzdF9kYXRhIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gc2V0IGRzdCB+a2V5IH5kYXRhXG4gICAgICAgfCBTb21lIGRzdF9kYXRhIC0+IGlmIG5vdCAocGh5c19lcXVhbCBkc3RfZGF0YSBkYXRhKSB0aGVuIHNldCBkc3QgfmtleSB+ZGF0YSkpXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFjIC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGFjIGVsc2Uga2V5IDo6IGFjKVxuICBpblxuICBMaXN0Lml0ZXIgdG9fcmVtb3ZlIH5mOihmdW4ga2V5IC0+IHJlbW92ZSB0IGtleSlcbjs7XG5cbmxldCBmaWx0ZXJfaW5wbGFjZSB0IH5mID0gZmlsdGVyaV9pbnBsYWNlIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxubGV0IGZpbHRlcl9rZXlzX2lucGxhY2UgdCB+ZiA9IGZpbHRlcmlfaW5wbGFjZSB0IH5mOihmdW4gfmtleSB+ZGF0YTpfIC0+IGYga2V5KVxuXG5sZXQgZmlsdGVyX21hcGlfaW5wbGFjZSB0IH5mID1cbiAgbGV0IG1hcF9yZXN1bHRzID0gZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhYyAtPiAoa2V5LCBmIH5rZXkgfmRhdGEpIDo6IGFjKSBpblxuICBMaXN0Lml0ZXIgbWFwX3Jlc3VsdHMgfmY6KGZ1biAoa2V5LCByZXN1bHQpIC0+XG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IE5vbmUgLT4gcmVtb3ZlIHQga2V5XG4gICAgfCBTb21lIGRhdGEgLT4gc2V0IHQgfmtleSB+ZGF0YSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwX2lucGxhY2UgdCB+ZiA9IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBtYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGVuc3VyZV9tdXRhdGlvbl9hbGxvd2VkIHQ7XG4gIHdpdGhvdXRfbXV0YXRpbmcgdCAoZnVuICgpIC0+IEFycmF5Lml0ZXIgdC50YWJsZSB+ZjooQXZsdHJlZS5tYXBpX2lucGxhY2UgfmYpKVxuOztcblxubGV0IG1hcF9pbnBsYWNlIHQgfmYgPSBtYXBpX2lucGxhY2UgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPiBmIGRhdGEpXG5cbmxldCBlcXVhbCBlcXVhbCB0IHQnID1cbiAgbGVuZ3RoIHQgPSBsZW5ndGggdCdcbiAgJiYgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgd2l0aG91dF9tdXRhdGluZyB0JyAoZnVuICgpIC0+XG4gICAgICBpdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgICAgICBtYXRjaCBmaW5kIHQnIGtleSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByLnJldHVybiBmYWxzZVxuICAgICAgICB8IFNvbWUgZGF0YScgLT4gaWYgbm90IChlcXVhbCBkYXRhIGRhdGEnKSB0aGVuIHIucmV0dXJuIGZhbHNlKSk7XG4gICAgdHJ1ZSlcbjs7XG5cbmxldCBzaW1pbGFyID0gZXF1YWxcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBjaG9vc2UgPSBjaG9vc2VcbiAgbGV0IGNob29zZV9leG4gPSBjaG9vc2VfZXhuXG4gIGxldCBjbGVhciA9IGNsZWFyXG4gIGxldCBjb3B5ID0gY29weVxuICBsZXQgcmVtb3ZlID0gcmVtb3ZlXG4gIGxldCBzZXQgPSBzZXRcbiAgbGV0IGFkZCA9IGFkZFxuICBsZXQgYWRkX2V4biA9IGFkZF9leG5cbiAgbGV0IGNoYW5nZSA9IGNoYW5nZVxuICBsZXQgdXBkYXRlID0gdXBkYXRlXG4gIGxldCB1cGRhdGVfYW5kX3JldHVybiA9IHVwZGF0ZV9hbmRfcmV0dXJuXG4gIGxldCBhZGRfbXVsdGkgPSBhZGRfbXVsdGlcbiAgbGV0IHJlbW92ZV9tdWx0aSA9IHJlbW92ZV9tdWx0aVxuICBsZXQgZmluZF9tdWx0aSA9IGZpbmRfbXVsdGlcbiAgbGV0IG1lbSA9IG1lbVxuICBsZXQgaXRlcl9rZXlzID0gaXRlcl9rZXlzXG4gIGxldCBpdGVyID0gaXRlclxuICBsZXQgaXRlcmkgPSBpdGVyaVxuICBsZXQgZXhpc3RzID0gZXhpc3RzXG4gIGxldCBleGlzdHNpID0gZXhpc3RzaVxuICBsZXQgZm9yX2FsbCA9IGZvcl9hbGxcbiAgbGV0IGZvcl9hbGxpID0gZm9yX2FsbGlcbiAgbGV0IGNvdW50ID0gY291bnRcbiAgbGV0IGNvdW50aSA9IGNvdW50aVxuICBsZXQgZm9sZCA9IGZvbGRcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXBpID0gbWFwaVxuICBsZXQgZmlsdGVyX21hcCA9IGZpbHRlcl9tYXBcbiAgbGV0IGZpbHRlcl9tYXBpID0gZmlsdGVyX21hcGlcbiAgbGV0IGZpbHRlcl9rZXlzID0gZmlsdGVyX2tleXNcbiAgbGV0IGZpbHRlciA9IGZpbHRlclxuICBsZXQgZmlsdGVyaSA9IGZpbHRlcmlcbiAgbGV0IHBhcnRpdGlvbl9tYXAgPSBwYXJ0aXRpb25fbWFwXG4gIGxldCBwYXJ0aXRpb25fbWFwaSA9IHBhcnRpdGlvbl9tYXBpXG4gIGxldCBwYXJ0aXRpb25fdGYgPSBwYXJ0aXRpb25fdGZcbiAgbGV0IHBhcnRpdGlvbmlfdGYgPSBwYXJ0aXRpb25pX3RmXG4gIGxldCBmaW5kX29yX2FkZCA9IGZpbmRfb3JfYWRkXG4gIGxldCBmaW5kaV9vcl9hZGQgPSBmaW5kaV9vcl9hZGRcbiAgbGV0IGZpbmQgPSBmaW5kXG4gIGxldCBmaW5kX2V4biA9IGZpbmRfZXhuXG4gIGxldCBmaW5kX2FuZF9jYWxsID0gZmluZF9hbmRfY2FsbFxuICBsZXQgZmluZF9hbmRfY2FsbDEgPSBmaW5kX2FuZF9jYWxsMVxuICBsZXQgZmluZF9hbmRfY2FsbDIgPSBmaW5kX2FuZF9jYWxsMlxuICBsZXQgZmluZGlfYW5kX2NhbGwgPSBmaW5kaV9hbmRfY2FsbFxuICBsZXQgZmluZGlfYW5kX2NhbGwxID0gZmluZGlfYW5kX2NhbGwxXG4gIGxldCBmaW5kaV9hbmRfY2FsbDIgPSBmaW5kaV9hbmRfY2FsbDJcbiAgbGV0IGZpbmRfYW5kX3JlbW92ZSA9IGZpbmRfYW5kX3JlbW92ZVxuICBsZXQgdG9fYWxpc3QgPSB0b19hbGlzdFxuICBsZXQgbWVyZ2UgPSBtZXJnZVxuICBsZXQgbWVyZ2VfaW50byA9IG1lcmdlX2ludG9cbiAgbGV0IGtleXMgPSBrZXlzXG4gIGxldCBkYXRhID0gZGF0YVxuICBsZXQgZmlsdGVyX2tleXNfaW5wbGFjZSA9IGZpbHRlcl9rZXlzX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9pbnBsYWNlID0gZmlsdGVyX2lucGxhY2VcbiAgbGV0IGZpbHRlcmlfaW5wbGFjZSA9IGZpbHRlcmlfaW5wbGFjZVxuICBsZXQgbWFwX2lucGxhY2UgPSBtYXBfaW5wbGFjZVxuICBsZXQgbWFwaV9pbnBsYWNlID0gbWFwaV9pbnBsYWNlXG4gIGxldCBmaWx0ZXJfbWFwX2lucGxhY2UgPSBmaWx0ZXJfbWFwX2lucGxhY2VcbiAgbGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgPSBmaWx0ZXJfbWFwaV9pbnBsYWNlXG4gIGxldCBlcXVhbCA9IGVxdWFsXG4gIGxldCBzaW1pbGFyID0gc2ltaWxhclxuICBsZXQgaW5jciA9IGluY3JcbiAgbGV0IGRlY3IgPSBkZWNyXG4gIGxldCBzZXhwX29mX2tleSA9IHNleHBfb2Zfa2V5XG5lbmRcblxubW9kdWxlIENyZWF0b3JzIChLZXkgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICBlbmQpIDogc2lnXG4gIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgdmFsIHRfb2Zfc2V4cCA6IChTZXhwLnQgLT4gJ2EgS2V5LnQpIC0+IChTZXhwLnQgLT4gJ2IpIC0+IFNleHAudCAtPiAoJ2EsICdiKSB0X1xuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdF9cbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICgna2V5LCAnZGF0YSwgJ2EpIGNyZWF0ZV9vcHRpb25zIDo9XG4gICAgICAoJ2tleSwgJ2RhdGEsICdhKSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuZW5kID0gc3RydWN0XG4gIGxldCBoYXNoYWJsZSA9IEtleS5oYXNoYWJsZVxuXG4gIHR5cGUgKCdhLCAnYikgdF8gPSAoJ2EgS2V5LnQsICdiKSB0XG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKVxuICBsZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIGwgPSBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcblxuICBsZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgfmhhc2hhYmxlID9zaXplIGxcbiAgOztcblxuICBsZXQgb2ZfYWxpc3RfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBrX29mX3NleHAgZF9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgfmhhc2hhYmxlIGtfb2Zfc2V4cCBkX29mX3NleHAgc2V4cFxuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbCA9XG4gICAgb2ZfYWxpc3RfbXVsdGkgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgICBjcmVhdGVfbWFwcGVkID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXkgP2dyb3d0aF9hbGxvd2VkIH5oYXNoYWJsZSA/c2l6ZSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgbCA9XG4gICAgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsID1cbiAgICBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICAgIGdyb3VwID9ncm93dGhfYWxsb3dlZCB+aGFzaGFibGUgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGxcbiAgOztcbmVuZFxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICB0eXBlICdhIGtleSA9ICdhXG5cbiAgbGV0IGhhc2hhYmxlID0gSGFzaGFibGUucG9seVxuXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBBY2Nlc3NvcnNcblxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgQ3JlYXRvcnNfZ2VuZXJpYyA9IENyZWF0b3JzX2dlbmVyaWNcbiAgbW9kdWxlIHR5cGUgSGFzaGFibGUgPSBIYXNoYWJsZS5IYXNoYWJsZVxuXG4gIHR5cGUgbm9ucmVjICgna2V5LCAnZGF0YSwgJ3opIGNyZWF0ZV9vcHRpb25zX3dpdGhvdXRfZmlyc3RfY2xhc3NfbW9kdWxlID1cbiAgICAoJ2tleSwgJ2RhdGEsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuXG4gIGxldCBoYXNoYWJsZSB0ID0gdC5oYXNoYWJsZVxuZW5kXG5cbmxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gPVxuICBjcmVhdGUgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpXG47O1xuXG5sZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0IH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsXG47O1xuXG5sZXQgb2ZfYWxpc3RfcmVwb3J0X2FsbF9kdXBzID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9yZXBvcnRfYWxsX2R1cHMgfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSBsID1cbiAgb2ZfYWxpc3Rfb3JfZXJyb3Igfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIGxcbjs7XG5cbmxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIG9mX2FsaXN0X2V4biB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIGwgPVxuICBvZl9hbGlzdF9tdWx0aSB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbFxuOztcblxubGV0IGNyZWF0ZV9tYXBwZWQgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgfmdldF9kYXRhIGwgPVxuICBjcmVhdGVfbWFwcGVkIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSB+Z2V0X2RhdGEgbFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSB+Z2V0X2tleSBsID1cbiAgY3JlYXRlX3dpdGhfa2V5IH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfa2V5X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXlfb3JfZXJyb3Igfmhhc2hhYmxlOihIYXNoYWJsZS5vZl9rZXkgbSkgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5nZXRfa2V5IGxcbjs7XG5cbmxldCBjcmVhdGVfd2l0aF9rZXlfZXhuID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtIH5nZXRfa2V5IGwgPVxuICBjcmVhdGVfd2l0aF9rZXlfZXhuIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IG0pID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+Z2V0X2tleSBsXG47O1xuXG5sZXQgZ3JvdXAgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGwgPVxuICBncm91cCB+aGFzaGFibGU6KEhhc2hhYmxlLm9mX2tleSBtKSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmdldF9rZXkgfmdldF9kYXRhIH5jb21iaW5lIGxcbjs7XG5cbmxldCBoYXNoYWJsZV9zIHQgPSBIYXNoYWJsZS50b19rZXkgdC5oYXNoYWJsZVxuXG5tb2R1bGUgTSAoSyA6IFQuVCkgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ3YgdCA9IChLLnQsICd2KSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V4cF9vZl9tID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcblxuICBbQEBAZW5kXVxuZW5kXG5cbm1vZHVsZSB0eXBlIE1fb2Zfc2V4cCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIG9mX3NleHBdXG5cbiAgdmFsIHRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB0XG5cbiAgW0BAQGVuZF1cblxuICBpbmNsdWRlIEtleS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBNX3NleHBfZ3JhbW1hciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfZ3JhbW1hcl1cblxuICB2YWwgdF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50XG5cbiAgW0BAQGVuZF1cbmVuZFxuXG5tb2R1bGUgdHlwZSBFcXVhbF9tID0gc2lnIGVuZFxuXG5sZXQgc2V4cF9vZl9tX190ICh0eXBlIGspIChtb2R1bGUgSyA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGspIHNleHBfb2ZfdiB0ID1cbiAgc2V4cF9vZl90IEsuc2V4cF9vZl90IHNleHBfb2ZfdiB0XG47O1xuXG5sZXQgbV9fdF9vZl9zZXhwICh0eXBlIGspIChtb2R1bGUgSyA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGspIHZfb2Zfc2V4cCBzZXhwID1cbiAgdF9vZl9zZXhwIH5oYXNoYWJsZTooSGFzaGFibGUub2Zfa2V5IChtb2R1bGUgSykpIEsudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgaykgKG1vZHVsZSBLIDogTV9zZXhwX2dyYW1tYXIgd2l0aCB0eXBlIHQgPSBrKSB2X2dyYW1tYXIgPVxuICB0X3NleHBfZ3JhbW1hciBLLnRfc2V4cF9ncmFtbWFyIHZfZ3JhbW1hclxuOztcblxubGV0IGVxdWFsX21fX3QgKG1vZHVsZSBfIDogRXF1YWxfbSkgZXF1YWxfdiB0MSB0MiA9IGVxdWFsIGVxdWFsX3YgdDEgdDJcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBIYXNoX3NldF9pbnRmXG5cbmxldCBoYXNoYWJsZV9zID0gSGFzaHRibC5oYXNoYWJsZV9zXG5sZXQgaGFzaGFibGUgPSBIYXNodGJsLlByaXZhdGUuaGFzaGFibGVcbmxldCBwb2x5X2hhc2hhYmxlID0gSGFzaHRibC5Qb2x5Lmhhc2hhYmxlXG5sZXQgd2l0aF9yZXR1cm4gPSBXaXRoX3JldHVybi53aXRoX3JldHVyblxuXG50eXBlICdhIHQgPSAoJ2EsIHVuaXQpIEhhc2h0YmwudFxudHlwZSAnYSBoYXNoX3NldCA9ICdhIHRcbnR5cGUgJ2EgZWx0ID0gJ2FcblxubW9kdWxlIEFjY2Vzc29ycyA9IHN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBoYXNoYWJsZVxuICBsZXQgY2xlYXIgPSBIYXNodGJsLmNsZWFyXG4gIGxldCBsZW5ndGggPSBIYXNodGJsLmxlbmd0aFxuICBsZXQgbWVtID0gSGFzaHRibC5tZW1cbiAgbGV0IGlzX2VtcHR5IHQgPSBIYXNodGJsLmlzX2VtcHR5IHRcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBIYXNodGJsLml0ZXJfa2V5cyB0IH5mOihmdW4gZWx0IC0+XG4gICAgICAgIG1hdGNoIGYgZWx0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBfIGFzIG8gLT4gci5yZXR1cm4gbyk7XG4gICAgICBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPSBmaW5kX21hcCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBTb21lIGEgZWxzZSBOb25lKVxuICBsZXQgYWRkIHQgayA9IEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpXG5cbiAgbGV0IHN0cmljdF9hZGQgdCBrID1cbiAgICBpZiBtZW0gdCBrXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJlbGVtZW50IGFscmVhZHkgZXhpc3RzXCJcbiAgICBlbHNlIChcbiAgICAgIEhhc2h0Ymwuc2V0IHQgfmtleTprIH5kYXRhOigpO1xuICAgICAgUmVzdWx0Lk9rICgpKVxuICA7O1xuXG4gIGxldCBzdHJpY3RfYWRkX2V4biB0IGsgPSBPcl9lcnJvci5va19leG4gKHN0cmljdF9hZGQgdCBrKVxuICBsZXQgcmVtb3ZlID0gSGFzaHRibC5yZW1vdmVcblxuICBsZXQgc3RyaWN0X3JlbW92ZSB0IGsgPVxuICAgIGlmIG1lbSB0IGtcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZSB0IGs7XG4gICAgICBSZXN1bHQuT2sgKCkpXG4gICAgZWxzZSBPcl9lcnJvci5lcnJvciBcImVsZW1lbnQgbm90IGluIHNldFwiIGsgKEhhc2h0Ymwuc2V4cF9vZl9rZXkgdClcbiAgOztcblxuICBsZXQgc3RyaWN0X3JlbW92ZV9leG4gdCBrID0gT3JfZXJyb3Iub2tfZXhuIChzdHJpY3RfcmVtb3ZlIHQgaylcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEhhc2h0YmwuZm9sZCB0IH5pbml0IH5mOihmdW4gfmtleSB+ZGF0YTooKSBhY2MgLT4gZiBhY2Mga2V5KVxuICBsZXQgaXRlciB0IH5mID0gSGFzaHRibC5pdGVyX2tleXMgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IENvbnRhaW5lci5jb3VudCB+Zm9sZCB0IH5mXG4gIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSB+Zm9sZCBtIHQgfmZcbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5taW5fZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IENvbnRhaW5lci5tYXhfZWx0IH5mb2xkIHQgfmNvbXBhcmVcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgZm9sZF91bnRpbCB0IH5pbml0IH5mID0gQ29udGFpbmVyLmZvbGRfdW50aWwgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgdG9fbGlzdCA9IEhhc2h0Ymwua2V5c1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lIHQgPVxuICAgIHNleHBfb2ZfbGlzdCBzZXhwX29mX2UgKHRvX2xpc3QgdCB8PiBMaXN0LnNvcnQgfmNvbXBhcmU6KGhhc2hhYmxlIHQpLmNvbXBhcmUpXG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBsZW4gPSBsZW5ndGggdCBpblxuICAgIGxldCBpbmRleCA9IHJlZiAobGVuIC0gMSkgaW5cbiAgICBmb2xkIHQgfmluaXQ6W3x8XSB+ZjooZnVuIGFjYyBrZXkgLT5cbiAgICAgIGlmIEFycmF5Lmxlbmd0aCBhY2MgPSAwXG4gICAgICB0aGVuIEFycmF5LmNyZWF0ZSB+bGVuIGtleVxuICAgICAgZWxzZSAoXG4gICAgICAgIGluZGV4IDo9ICFpbmRleCAtIDE7XG4gICAgICAgIGFjYy4oIWluZGV4KSA8LSBrZXk7XG4gICAgICAgIGFjYykpXG4gIDs7XG5cbiAgbGV0IGV4aXN0cyB0IH5mID0gSGFzaHRibC5leGlzdHNpIHQgfmY6KGZ1biB+a2V5IH5kYXRhOigpIC0+IGYga2V5KVxuICBsZXQgZm9yX2FsbCB0IH5mID0gbm90IChIYXNodGJsLmV4aXN0c2kgdCB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gbm90IChmIGtleSkpKVxuICBsZXQgZXF1YWwgdDEgdDIgPSBIYXNodGJsLmVxdWFsIChmdW4gKCkgKCkgLT4gdHJ1ZSkgdDEgdDJcbiAgbGV0IGNvcHkgdCA9IEhhc2h0YmwuY29weSB0XG4gIGxldCBmaWx0ZXIgdCB+ZiA9IEhhc2h0YmwuZmlsdGVyaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSlcbiAgbGV0IHVuaW9uIHQxIHQyID0gSGFzaHRibC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyBfIC0+IFNvbWUgKCkpXG4gIGxldCBkaWZmIHQxIHQyID0gZmlsdGVyIHQxIH5mOihmdW4ga2V5IC0+IG5vdCAoSGFzaHRibC5tZW0gdDIga2V5KSlcblxuICBsZXQgaW50ZXIgdDEgdDIgPVxuICAgIGxldCBzbWFsbGVyLCBsYXJnZXIgPSBpZiBsZW5ndGggdDEgPiBsZW5ndGggdDIgdGhlbiB0MiwgdDEgZWxzZSB0MSwgdDIgaW5cbiAgICBIYXNodGJsLmZpbHRlcmkgc21hbGxlciB+ZjooZnVuIH5rZXkgfmRhdGE6KCkgLT4gSGFzaHRibC5tZW0gbGFyZ2VyIGtleSlcbiAgOztcblxuICBsZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gICAgbGV0IHRvX3JlbW92ZSA9IGZvbGQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjIHggLT4gaWYgZiB4IHRoZW4gYWMgZWxzZSB4IDo6IGFjKSBpblxuICAgIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biB4IC0+IHJlbW92ZSB0IHgpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsID0gSGFzaHRibC5tYXAgaGFzaHRibCB+ZjppZ25vcmVcbiAgbGV0IHRvX2hhc2h0YmwgdCB+ZiA9IEhhc2h0YmwubWFwaSB0IH5mOihmdW4gfmtleSB+ZGF0YTooKSAtPiBmIGtleSlcbmVuZFxuXG5pbmNsdWRlIEFjY2Vzc29yc1xuXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID0gSGFzaHRibC5jcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIG1cblxubGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIG0gbCA9XG4gIGxldCBzaXplID1cbiAgICBtYXRjaCBzaXplIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IExpc3QubGVuZ3RoIGxcbiAgaW5cbiAgbGV0IHQgPSBIYXNodGJsLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgfnNpemUgbSBpblxuICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGsgLT4gYWRkIHQgayk7XG4gIHRcbjs7XG5cbmxldCB0X29mX3NleHAgbSBlX29mX3NleHAgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IFNleHAuQXRvbSBfIC0+IG9mX3NleHBfZXJyb3IgXCJIYXNoX3NldC50X29mX3NleHAgcmVxdWlyZXMgYSBsaXN0XCIgc2V4cFxuICB8IFNleHAuTGlzdCBsaXN0IC0+XG4gICAgbGV0IHQgPSBjcmVhdGUgbSB+c2l6ZTooTGlzdC5sZW5ndGggbGlzdCkgaW5cbiAgICBMaXN0Lml0ZXIgbGlzdCB+ZjooZnVuIHNleHAgLT5cbiAgICAgIGxldCBlID0gZV9vZl9zZXhwIHNleHAgaW5cbiAgICAgIG1hdGNoIHN0cmljdF9hZGQgdCBlIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgIHwgRXJyb3IgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSGFzaF9zZXQudF9vZl9zZXhwIGdvdCBhIGR1cGxpY2F0ZSBlbGVtZW50XCIgc2V4cCk7XG4gICAgdFxuOztcblxubW9kdWxlIENyZWF0b3JzIChFbHQgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBoYXNoYWJsZSA6ICdhIHQgSGFzaGFibGUudFxuICBlbmQpIDogc2lnXG4gIHZhbCB0X29mX3NleHAgOiAoU2V4cC50IC0+ICdhIEVsdC50KSAtPiBTZXhwLnQgLT4gJ2EgRWx0LnQgdFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgRWx0LnQgdFxuICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICB3aXRoIHR5cGUgKCdlbHQsICd6KSBjcmVhdGVfb3B0aW9ucyA6PVxuICAgICAgKCdlbHQsICd6KSBjcmVhdGVfb3B0aW9uc193aXRob3V0X2ZpcnN0X2NsYXNzX21vZHVsZVxuZW5kID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChIYXNoYWJsZS50b19rZXkgRWx0Lmhhc2hhYmxlKVxuICA7O1xuXG4gIGxldCBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBsID1cbiAgICBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoSGFzaGFibGUudG9fa2V5IEVsdC5oYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgZV9vZl9zZXhwIHNleHAgPSB0X29mX3NleHAgKEhhc2hhYmxlLnRvX2tleSBFbHQuaGFzaGFibGUpIGVfb2Zfc2V4cCBzZXhwXG5lbmRcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgaGFzaF9zZXRcbiAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gIGxldCBoYXNoYWJsZSA9IHBvbHlfaGFzaGFibGVcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IGhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgZ3JhbW1hciA9IFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QudF9zZXhwX2dyYW1tYXIgZ3JhbW1hcilcbmVuZFxuXG5tb2R1bGUgTSAoRWx0IDogVC5UKSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gRWx0LnQgdFxuZW5kXG5cbmxldCBzZXhwX29mX21fX3QgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IFNleHBfb2ZfbSB3aXRoIHR5cGUgdCA9IGVsdCkgdCA9XG4gIHNleHBfb2ZfdCBFbHQuc2V4cF9vZl90IHRcbjs7XG5cbmxldCBtX190X29mX3NleHAgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fb2Zfc2V4cCB3aXRoIHR5cGUgdCA9IGVsdCkgc2V4cCA9XG4gIHRfb2Zfc2V4cCAobW9kdWxlIEVsdCkgRWx0LnRfb2Zfc2V4cCBzZXhwXG47O1xuXG5sZXQgbV9fdF9zZXhwX2dyYW1tYXIgKHR5cGUgZWx0KSAobW9kdWxlIEVsdCA6IE1fc2V4cF9ncmFtbWFyIHdpdGggdHlwZSB0ID0gZWx0KSA9XG4gIFNleHBsaWIwLlNleHBfZ3JhbW1hci5jb2VyY2UgKGxpc3Rfc2V4cF9ncmFtbWFyIEVsdC50X3NleHBfZ3JhbW1hcilcbjs7XG5cbmxldCBlcXVhbF9tX190IChtb2R1bGUgXyA6IEVxdWFsX20pIHQxIHQyID0gZXF1YWwgdDEgdDJcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGhhc2hhYmxlID0gSGFzaHRibC5Qcml2YXRlLmhhc2hhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgUHJpbnRmXG5tb2R1bGUgQnl0ZXMgPSBCeXRlczBcbmluY2x1ZGUgRmxvYXQwXG5cbmxldCByYWlzZV9zID0gRXJyb3IucmFpc2Vfc1xuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZ19pbmxpbmUgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCAoaGFzaF9mb2xkX3QgOiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpID1cbiAgICBoYXNoX2ZvbGRfZmxvYXRcblxuICBhbmQgKGhhc2ggOiB0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBoYXNoX2Zsb2F0IGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IChmbG9hdF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIGxldCBzZXhwX29mX3QgPSAoc2V4cF9vZl9mbG9hdCA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKHRfc2V4cF9ncmFtbWFyIDogdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPSBmbG9hdF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIGxldCBoYXNoYWJsZSA6IHQgSGFzaGFibGUudCA9IHsgaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH1cbiAgbGV0IGNvbXBhcmUgPSBGbG9hdF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuY29tcGFyZVxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG5cbigqIE9wZW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGFmdGVyIGluY2x1ZGluZyBmdW5jdG9yIGluc3RhbnRpYXRpb25zIHNvIHRoZXkgZG8gbm90XG4gICBzaGFkb3cgaXRzIGRlZmluaXRpb25zLiBUaGlzIGlzIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb25cbiAgIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIG1vZHVsZS4gKilcbm9wZW4gRmxvYXRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbmxldCBpbnZhcmlhbnQgKF8gOiB0KSA9ICgpXG5sZXQgdG9fZmxvYXQgeCA9IHhcbmxldCBvZl9mbG9hdCB4ID0geFxuXG5sZXQgb2Zfc3RyaW5nIHMgPVxuICB0cnkgZmxvYXRfb2Zfc3RyaW5nIHMgd2l0aFxuICB8IF8gLT4gaW52YWxpZF9hcmdmIFwiRmxvYXQub2Zfc3RyaW5nICVzXCIgcyAoKVxuOztcblxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG4oKiBTdG9sZW4gZnJvbSBbcGVydmFzaXZlcy5tbF0uICBBZGRzIGEgXCIuXCIgYXQgdGhlIGVuZCBpZiBuZWVkZWQuICBJdCBpcyBpblxuICAgW3BlcnZhc2l2ZXMubWxpXSwgYnV0IGl0IGFsc28gc2F5cyBub3QgdG8gdXNlIGl0IGRpcmVjdGx5LCBzbyB3ZSBjb3B5IGFuZCBwYXN0ZSB0aGVcbiAgIGNvZGUuIEl0IG1ha2VzIHRoZSBhc3N1bXB0aW9uIG9uIHRoZSBzdHJpbmcgcGFzc2VkIGluIGFyZ3VtZW50IHRoYXQgaXQgd2FzIHJldHVybmVkIGJ5XG4gICBbZm9ybWF0X2Zsb2F0XS4gKilcbmxldCB2YWxpZF9mbG9hdF9sZXhlbSBzID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA+PSApIGkgbFxuICAgIHRoZW4gcyBeIFwiLlwiXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgICB8IF8gLT4gcylcbiAgaW5cbiAgbG9vcCAwXG47O1xuXG4oKiBMZXQgW3ldIGJlIGEgcG93ZXIgb2YgMi4gIFRoZW4gdGhlIG5leHQgcmVwcmVzZW50YWJsZSBmbG9hdCBpczpcbiAgIFt6ID0geSAqICgxICsgMiAqKiAtNTIpXVxuICAgYW5kIHRoZSBwcmV2aW91cyBvbmUgaXNcbiAgIFt4ID0geSAqICgxIC0gMiAqKiAtNTMpXVxuXG4gICBJbiBnZW5lcmFsLCBldmVyeSB0d28gYWRqYWNlbnQgZmxvYXRzIGFyZSB3aXRoaW4gYSBmYWN0b3Igb2YgYmV0d2VlbiBbMSArIDIqKi01M11cbiAgIGFuZCBbMSArIDIqKi01Ml0gZnJvbSBlYWNoIG90aGVyLCB0aGF0IGlzIHdpdGhpbiBbMSArIDEuMWUtMTZdIGFuZCBbMSArIDIuM2UtMTZdLlxuXG4gICBTbyBpZiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIGZsb2F0IHN0YXJ0cyB3aXRoIFwiMVwiLCB0aGVuIGl0cyBhZGphY2VudCBmbG9hdHNcbiAgIHdpbGwgdXN1YWxseSBkaWZmZXIgZnJvbSBpdCBieSAxLCBhbmQgc29tZXRpbWVzIGJ5IDIsIGF0IHRoZSAxN3RoIHNpZ25pZmljYW50IGRpZ2l0XG4gICAoY291bnRpbmcgZnJvbSAxKS5cblxuICAgT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIHN0YXJ0cyB3aXRoIFwiOVwiLCB0aGVuIHRoZSBhZGphY2VudFxuICAgZmxvYXRzIHdpbGwgYmUgb2ZmIGJ5IG5vIG1vcmUgdGhhbiAyMyBhdCB0aGUgMTZ0aCBhbmQgMTd0aCBzaWduaWZpY2FudCBkaWdpdHMuXG5cbiAgIEUuZy46XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTdnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1NjdcbiAgICAgLSA6IHN0cmluZyA9IFwiMTAyMy45OTk5OTk5OTk5OTk5XCJcbiAgIHZ9XG4gICBQcmludGluZyBhIGNvdXBsZSBvZiBleHRyYSBkaWdpdHMgcmV2ZWFscyB0aGF0IHRoZSBkaWZmZXJlbmNlIGluZGVlZCBpcyByb3VnaGx5IDExIGF0XG4gICBkaWdpdHMgMTd0aCBhbmQgMTh0aCAodGhhdCBpcywgMTN0aCBhbmQgMTR0aCBhZnRlciBcIi5cIik6XG5cbiAgIHt2XG4gICAgICMgc3ByaW50ZiBcIiUuMTlnXCIgKDEwMjQuICouICgxLiAtLiAyLioqICgtNTMuKSkpOztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTExMTExMVxuICAgICAgICAgICAgICAgICAgIDEyMzQgNTY3ODkwMTIzNDU2Nzg5XG4gICAgIC0gOiBzdHJpbmcgPSBcIjEwMjMuOTk5OTk5OTk5OTk5ODg2XCJcbiAgIHZ9XG5cbiAgIFRoZSB1bHAgKHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYWRqYWNlbnQgZmxvYXRzKSBpcyB0d2ljZSBhcyBiaWcgb24gdGhlIG90aGVyIHNpZGUgb2ZcbiAgIDEwMjQuOlxuXG4gICB7dlxuICAgICAjIHNwcmludGYgXCIlLjE5Z1wiICgxMDI0LiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpKTs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExMTExMTExMTFcbiAgICAgICAgICAgICAgICAgICAxMjM0IDU2Nzg5MDEyMzQ1Njc4OVxuICAgICAtIDogc3RyaW5nID0gXCIxMDI0LjAwMDAwMDAwMDAwMDIyN1wiXG4gICB2fVxuXG4gICBOb3cgdGFrZSBhIHBvd2VyIG9mIDIgd2hpY2ggc3RhcnRzIHdpdGggOTk6XG5cbiAgIHt2XG4gICAgICMgMi4qKjkzLiA7O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMTExMTExXG4gICAgICAgICAgICAgICAgIDEgMjM0NTY3ODkwMTIzNDU2NzhcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDIyZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gKy4gMi4qKiAoLTUyLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDQ0ZSsyN1xuXG4gICAgICMgMi4qKjkzLiAqLiAoMS4gLS4gMi4qKiAoLTUzLikpOztcbiAgICAgLSA6IGZsb2F0ID0gOS45MDM1MjAzMTQyODMwNDExZSsyN1xuICAgdn1cblxuICAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAyKio5MyBhbmQgaXRzIHR3byBuZWlnaGJvcnMgaXMgc2xpZ2h0bHkgbW9yZSB0aGFuLCByZXNwZWN0aXZlbHksXG4gICAxIGFuZCAyIGF0IHNpZ25pZmljYW50IGRpZ2l0IDE2LlxuXG4gICBUaG9zZSBleGFtcGxlcyBzaG93IHRoYXQ6XG4gICAtIDE3IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBhbHdheXMgc3VmZmljaWVudCB0byByZXByZXNlbnQgYSBmbG9hdCB3aXRob3V0IGFtYmlndWl0eVxuICAgLSAxNXRoIHNpZ25pZmljYW50IGRpZ2l0IGNhbiBhbHdheXMgYmUgcmVwcmVzZW50ZWQgYWNjdXJhdGVseVxuICAgLSBjb252ZXJ0aW5nIGEgZGVjaW1hbCBudW1iZXIgd2l0aCAxNiBzaWduaWZpY2FudCBkaWdpdHMgdG8gaXRzIG5lYXJlc3QgZmxvYXQgYW5kIGJhY2tcbiAgICAgY2FuIGNoYW5nZSB0aGUgbGFzdCBkZWNpbWFsIGRpZ2l0IGJ5IG5vIG1vcmUgdGhhbiAxXG5cbiAgIFRvIG1ha2Ugc3VyZSB0aGF0IGZsb2F0cyBvYnRhaW5lZCBieSBjb252ZXJzaW9uIGZyb20gZGVjaW1hbCBmcmFjdGlvbnMgKGUuZy4gXCIzLjE0XCIpXG4gICBhcmUgcHJpbnRlZCB3aXRob3V0IHRyYWlsaW5nIG5vbi16ZXJvIGRpZ2l0cywgb25lIHNob3VsZCBjaG9vc2UgdGhlIGZpcnN0IGFtb25nIHRoZVxuICAgJyUuMTVnJywgJyUuMTZnJywgYW5kICclLjE3ZycgcmVwcmVzZW50YXRpb25zIHdoaWNoIGRvZXMgcm91bmQtdHJpcDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNFwiICAgICAgICAgICAgICAgICAgICAgKCogcGljayB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE2Z1wiIDMuMTQ7O1xuICAgICAtIDogc3RyaW5nID0gXCIzLjE0XCJcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiAzLjE0OztcbiAgICAgLSA6IHN0cmluZyA9IFwiMy4xNDAwMDAwMDAwMDAwMDAxXCIgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUgKilcblxuICAgICAjIHNwcmludGYgXCIlLjE1Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOFwiICAgICAgICAgICAgICAgICAgICAgICAgKCogZG8gbm90IHBpY2sgdGhpcyBvbmUtLWRvZXMgbm90IHJvdW5kLXRyaXAgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA4LjAwMDAwMDAwMDAwMDAwMjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjguMDAwMDAwMDAwMDAwMDAyXCIgICAgICAgICgqIHByZWZlciB0aGlzIG9uZSAqKVxuICAgICAjIHNwcmludGYgXCIlLjE3Z1wiIDguMDAwMDAwMDAwMDAwMDAyOztcbiAgICAgLSA6IHN0cmluZyA9IFwiOC4wMDAwMDAwMDAwMDAwMDE4XCIgICAgICAgKCogdGhpcyBvbmUgaGFzIG9uZSBkaWdpdCBvZiBqdW5rIGF0IHRoZSBlbmQgKilcbiAgIHZ9XG5cbiAgIFNraXBwaW5nIHRoZSAnJS4xNmcnIGluIHRoZSBhYm92ZSBwcm9jZWR1cmUgc2F2ZXMgdXMgc29tZSB0aW1lLCBidXQgaXQgbWVhbnMgdGhhdCwgYXNcbiAgIHNlZW4gaW4gdGhlIHNlY29uZCBleGFtcGxlIGFib3ZlLCBvY2Nhc2lvbmFsbHkgbnVtYmVycyB3aXRoIGV4YWN0bHkgMTYgc2lnbmlmaWNhbnRcbiAgIGRpZ2l0cyB3aWxsIGhhdmUgYW4gZXJyb3IgaW50cm9kdWNlZCBhdCB0aGUgMTd0aCBkaWdpdC4gIFRoYXQgaXMgcHJvYmFibHkgT0sgZm9yXG4gICB0eXBpY2FsIHVzZSwgYmVjYXVzZSBhIG51bWJlciB3aXRoIDE2IHNpZ25pZmljYW50IGRpZ2l0cyBpcyBcInVnbHlcIiBhbHJlYWR5LiAgQWRkaW5nIG9uZVxuICAgbW9yZSBkb2Vzbid0IG1ha2UgaXQgbXVjaCB3b3JzZSBmb3IgYSBodW1hbiByZWFkZXIuXG5cbiAgIE9uIHRoZSBvdGhlciBoYW5kLCB3ZSBjYW5ub3Qgc2tpcCAnJS4xNWcnIGFuZCBvbmx5IGxvb2sgYXQgJyUuMTZnJyBhbmQgJyUuMTdnJywgc2luY2VcbiAgIHRoZSBpbmFjY3VyYWN5IGF0IHRoZSAxNnRoIGRpZ2l0IG1pZ2h0IGludHJvZHVjZSB0aGUgbm9pc2Ugd2Ugd2FudCB0byBhdm9pZDpcblxuICAge3ZcbiAgICAgIyBzcHJpbnRmIFwiJS4xNWdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyXCIgICAgICAgICAgICAgICAgICAgICgqIHBpY2sgdGhpcyBvbmUgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xNmdcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAxXCIgICAgICAgICgqIGRvIG5vdCBwaWNrIHRoaXMgb25lLS1qdW5rIGF0IHRoZSBlbmQgKilcbiAgICAgIyBzcHJpbnRmIFwiJS4xN2dcIiA5Ljk5Mjs7XG4gICAgIC0gOiBzdHJpbmcgPSBcIjkuOTkyMDAwMDAwMDAwMDAwOVwiXG4gICB2fVxuKilcbmxldCB0b19zdHJpbmcgeCA9XG4gIHZhbGlkX2Zsb2F0X2xleGVtXG4gICAgKGxldCB5ID0gZm9ybWF0X2Zsb2F0IFwiJS4xNWdcIiB4IGluXG4gICAgIGlmIGZsb2F0X29mX3N0cmluZyB5ID0geCB0aGVuIHkgZWxzZSBmb3JtYXRfZmxvYXQgXCIlLjE3Z1wiIHgpXG47O1xuXG5sZXQgbWF4X3ZhbHVlID0gaW5maW5pdHlcbmxldCBtaW5fdmFsdWUgPSBuZWdfaW5maW5pdHlcbmxldCBtaW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID0gMi4gKiogLTEwNzQuXG5sZXQgbWluX3Bvc2l0aXZlX25vcm1hbF92YWx1ZSA9IDIuICoqIC0xMDIyLlxubGV0IHplcm8gPSAwLlxubGV0IG9uZSA9IDEuXG5sZXQgbWludXNfb25lID0gLTEuXG5sZXQgcGkgPSAweDMuMjQzRjZBODg4NUEzMDhEMzEzMTk4QTJFMDM3MDczXG5sZXQgc3FydF9waSA9IDB4MS5DNUJGODkxQjRFRjZBQTc5QzNCMDUyMEQ1REI5MzhcbmxldCBzcXJ0XzJwaSA9IDB4Mi44MUIyNjNGRUM0RTBCMkNBRjk0ODNGNUNFNDU5RENcbmxldCBldWxlciA9IDB4MC45M0M0NjdFMzdEQjBDN0E0RDFCRTNGODEwMTUyQ0JcbmxldCBvZl9pbnQgPSBJbnQudG9fZmxvYXRcbmxldCB0b19pbnQgPSBJbnQub2ZfZmxvYXRcbmxldCBvZl9pbnQ2MyBpID0gSW50NjMudG9fZmxvYXQgaVxubGV0IG9mX2ludDY0IGkgPSBDYW1sLkludDY0LnRvX2Zsb2F0IGlcbmxldCB0b19pbnQ2NCA9IENhbWwuSW50NjQub2ZfZmxvYXRcbmxldCBpcm91bmRfbGJvdW5kID0gbG93ZXJfYm91bmRfZm9yX2ludCBJbnQubnVtX2JpdHNcbmxldCBpcm91bmRfdWJvdW5kID0gdXBwZXJfYm91bmRfZm9yX2ludCBJbnQubnVtX2JpdHNcblxuKCogVGhlIHBlcmZvcm1hbmNlIG9mIHRoZSBcImV4blwiIHJvdW5kaW5nIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQsIHNvIHRoZXkgYXJlIHdyaXR0ZW5cbiAgIG91dCBzZXBhcmF0ZWx5LCBhbmQgdHVuZWQgaW5kaXZpZHVhbGx5LiAgKFdlIGNvdWxkIGhhdmUgdGhlIG9wdGlvbiB2ZXJzaW9ucyBjYWxsXG4gICB0aGUgXCJleG5cIiB2ZXJzaW9ucywgYnV0IHRoYXQgaW1wb3NlcyBhcmd1YWJseSBncmF0dWl0b3VzIG92ZXJoZWFkLS0tZXNwZWNpYWxseVxuICAgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGNhcHR1cmUgb2YgYmFja3RyYWNlcyBpcyBlbmFibGVkIHVwb24gXCJ3aXRoXCItLS1hbmQgdGhhdCBzZWVtc1xuICAgbm90IHdvcnRoIGl0IHdoZW4gY29tcGFyZWQgdG8gdGhlIHJlbGF0aXZlbHkgc21hbGwgYW1vdW50IG9mIGNvZGUgZHVwbGljYXRpb24uKSAqKVxuXG4oKiBFcnJvciByZXBvcnRpbmcgYmVsb3cgaXMgdmVyeSBjYXJlZnVsbHkgYXJyYW5nZWQgc28gdGhhdCwgZS5nLiwgW2lyb3VuZF9uZWFyZXN0X2V4bl1cbiAgIGl0c2VsZiBjYW4gYmUgaW5saW5lZCBpbnRvIGNhbGxlcnMgc3VjaCB0aGF0IHRoZXkgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhIGJveCBmb3IgdGhlXG4gICBbZmxvYXRdIGFyZ3VtZW50LiAgVGhpcyBpcyBkb25lIHdpdGggYSBib3ggW2JveF0gZnVuY3Rpb24gY2FyZWZ1bGx5IGNob3NlbiB0byBhbGxvdyB0aGVcbiAgIGNvbXBpbGVyIHRvIGNyZWF0ZSBhIHNlcGFyYXRlIGJveCBmb3IgdGhlIGZsb2F0IG9ubHkgaW4gZXJyb3IgY2FzZXMuICBTZWUsIGUuZy4sXG4gICBbLi4vLi4vemVyby90ZXN0L3ByaWNlX3Rlc3QubWxdIGZvciBhIG1lY2hhbmljYWwgdGVzdCBvZiB0aGlzIHByb3BlcnR5IHdoZW4gYnVpbGRpbmdcbiAgIHdpdGggW1hfTElCUkFSWV9JTkxJTklORz10cnVlXS4gKilcblxubGV0IGlyb3VuZF91cCB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpcm91bmRfdWJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF91cF9leG4gdCA9XG4gIGlmIHQgPiAwLjBcbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gY2VpbCB0IGluXG4gICAgaWYgdCcgPD0gaXJvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF91cF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKClcbjs7XG5cbmxldCBpcm91bmRfZG93biB0ID1cbiAgaWYgdCA+PSAwLjBcbiAgdGhlbiBpZiB0IDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpIGVsc2UgTm9uZVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZCB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCcpIGVsc2UgTm9uZSlcbjs7XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gaXJvdW5kX2Rvd25fZXhuIHQgPVxuICBpZiB0ID49IDAuMFxuICB0aGVuXG4gICAgaWYgdCA8PSBpcm91bmRfdWJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yIHQgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnXG4gICAgZWxzZVxuICAgICAgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX2Rvd25fZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIiAoYm94IHQpICgpKVxuOztcblxubGV0IGlyb3VuZF90b3dhcmRzX3plcm8gdCA9XG4gIGlmIHQgPj0gaXJvdW5kX2xib3VuZCAmJiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQpXG4gIGVsc2UgTm9uZVxuOztcblxubGV0W0BvY2FtbC5pbmxpbmUgYWx3YXlzXSBpcm91bmRfdG93YXJkc196ZXJvX2V4biB0ID1cbiAgaWYgdCA+PSBpcm91bmRfbGJvdW5kICYmIHQgPD0gaXJvdW5kX3Vib3VuZFxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIkZsb2F0Lmlyb3VuZF90b3dhcmRzX3plcm9fZXhuOiBhcmd1bWVudCAoJWYpIGlzIG91dCBvZiByYW5nZSBvciBOYU5cIlxuICAgICAgKGJveCB0KVxuICAgICAgKClcbjs7XG5cbigqIE91dHNpZGUgb2YgdGhlIHJhbmdlIChyb3VuZF9uZWFyZXN0X2xiLi5yb3VuZF9uZWFyZXN0X3ViKSwgYWxsIHJlcHJlc2VudGFibGUgZG91Ymxlc1xuICAgYXJlIGludGVnZXJzIGluIHRoZSBtYXRoZW1hdGljYWwgc2Vuc2UsIGFuZCBbcm91bmRfbmVhcmVzdF0gc2hvdWxkIGJlIGlkZW50aXR5LlxuXG4gICBIb3dldmVyLCBmb3Igb2RkIG51bWJlcnMgd2l0aCB0aGUgYWJzb2x1dGUgdmFsdWUgYmV0d2VlbiAyKio1MiBhbmQgMioqNTMsIHRoZSBmb3JtdWxhXG4gICBbcm91bmRfbmVhcmVzdCB4ID0gZmxvb3IgKHggKyAwLjUpXSBkb2VzIG5vdCBob2xkOlxuXG4gICB7dlxuICAgICAjIGxldCBuYWl2ZV9yb3VuZF9uZWFyZXN0IHggPSBmbG9vciAoeCArLiAwLjUpOztcbiAgICAgIyBsZXQgeCA9IDIuICoqIDUyLiArLiAxLjs7XG4gICAgIHZhbCB4IDogZmxvYXQgPSA0NTAzNTk5NjI3MzcwNDk3LlxuICAgICAjIG5haXZlX3JvdW5kX25lYXJlc3QgeDs7XG4gICAgIC0gOiAgICAgZmxvYXQgPSA0NTAzNTk5NjI3MzcwNDk4LlxuICAgdn1cbiopXG5cbmxldCByb3VuZF9uZWFyZXN0X2xiID0gLS4oMi4gKiogNTIuKVxubGV0IHJvdW5kX25lYXJlc3RfdWIgPSAyLiAqKiA1Mi5cblxuKCogRm9yIFt4ID0gb25lX3VscCBgRG93biAwLjVdLCB0aGUgZm9ybXVsYSBbZmxvb3IgKHggKy4gMC41KV0gZm9yIHJvdW5kaW5nIHRvIG5lYXJlc3RcbiAgIGRvZXMgbm90IHdvcmssIGJlY2F1c2UgdGhlIGV4YWN0IHJlc3VsdCBpcyBoYWxmd2F5IGJldHdlZW4gW29uZV91bHAgYERvd24gMS5dIGFuZCBbMS5dLFxuICAgYW5kIGl0IGdldHMgcm91bmRlZCB1cCB0byBbMS5dIGR1ZSB0byB0aGUgcm91bmQtdGllcy10by1ldmVuIHJ1bGUuICopXG5sZXQgb25lX3VscF9sZXNzX3RoYW5faGFsZiA9IG9uZV91bHAgYERvd24gMC41XG5cbmxldFtAb2NhbWwuaW5saW5lIGFsd2F5c10gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCA9XG4gIHRcbiAgKy5cbiAgaWYgdCA9IG9uZV91bHBfbGVzc190aGFuX2hhbGZcbiAgdGhlbiBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmICgqIHNpbmNlIHQgPCAwLjUsIG1ha2Ugc3VyZSB0aGUgcmVzdWx0IGlzIDwgMS4wICopXG4gIGVsc2UgMC41XG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3RfMzIgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmQgdGhlbiBTb21lIChJbnQub2ZfZmxvYXRfdW5jaGVja2VkIHQnKSBlbHNlIE5vbmUpXG4gIGVsc2UgKFxuICAgIGxldCB0JyA9IGZsb29yICh0ICsuIDAuNSkgaW5cbiAgICBpZiB0JyA+PSBpcm91bmRfbGJvdW5kIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0JykgZWxzZSBOb25lKVxuOztcblxubGV0IGlyb3VuZF9uZWFyZXN0XzY0IHQgPVxuICBpZiB0ID49IDAuXG4gIHRoZW5cbiAgICBpZiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICAgIHRoZW4gU29tZSAoSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCAoYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCkpXG4gICAgZWxzZSBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgICBlbHNlIE5vbmVcbiAgZWxzZSBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYlxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGZsb29yICh0ICsuIDAuNSkpKVxuICBlbHNlIGlmIHQgPj0gaXJvdW5kX2xib3VuZFxuICB0aGVuIFNvbWUgKEludC5vZl9mbG9hdF91bmNoZWNrZWQgdClcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgaXJvdW5kX25lYXJlc3QgPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaXJvdW5kX25lYXJlc3RfNjRcbiAgfCBXMzIgLT4gaXJvdW5kX25lYXJlc3RfMzJcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF9leG5fMzIgdCA9XG4gIGlmIHQgPj0gMC5cbiAgdGhlbiAoXG4gICAgbGV0IHQnID0gYWRkX2hhbGZfZm9yX3JvdW5kX25lYXJlc3QgdCBpblxuICAgIGlmIHQnIDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlIGludmFsaWRfYXJnZiBcIkZsb2F0Lmlyb3VuZF9uZWFyZXN0X2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIiAoYm94IHQpICgpKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciAodCArLiAwLjUpIGluXG4gICAgaWYgdCcgPj0gaXJvdW5kX2xib3VuZFxuICAgIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbFwiIChib3ggdCkgKCkpXG47O1xuXG5sZXRbQG9jYW1sLmlubGluZSBhbHdheXNdIGlyb3VuZF9uZWFyZXN0X2V4bl82NCB0ID1cbiAgaWYgdCA+PSAwLlxuICB0aGVuXG4gICAgaWYgdCA8IHJvdW5kX25lYXJlc3RfdWJcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGFkZF9oYWxmX2Zvcl9yb3VuZF9uZWFyZXN0IHQpXG4gICAgZWxzZSBpZiB0IDw9IGlyb3VuZF91Ym91bmRcbiAgICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgdFxuICAgIGVsc2UgaW52YWxpZF9hcmdmIFwiRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBsYXJnZVwiIChib3ggdCkgKClcbiAgZWxzZSBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYlxuICB0aGVuIEludC5vZl9mbG9hdF91bmNoZWNrZWQgKGZsb29yICh0ICsuIDAuNSkpXG4gIGVsc2UgaWYgdCA+PSBpcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50Lm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2YgXCJGbG9hdC5pcm91bmRfbmVhcmVzdF9leG46IGFyZ3VtZW50ICglZikgaXMgdG9vIHNtYWxsIG9yIE5hTlwiIChib3ggdCkgKClcbjs7XG5cbmxldCBpcm91bmRfbmVhcmVzdF9leG4gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG4gIHwgVzMyIC0+IGlyb3VuZF9uZWFyZXN0X2V4bl8zMlxuOztcblxuKCogVGhlIGZvbGxvd2luZyBbaXJvdW5kX2V4bl0gYW5kIFtpcm91bmRdIGZ1bmN0aW9ucyBhcmUgc2xvd2VyIHRoYW4gdGhlIG9uZXMgYWJvdmUuXG4gICBUaGVpciBlcXVpdmFsZW5jZSB0byB0aG9zZSBmdW5jdGlvbnMgaXMgdGVzdGVkIGluIHRoZSB1bml0IHRlc3RzIGJlbG93LiAqKVxuXG5sZXRbQGlubGluZV0gaXJvdW5kX2V4biA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgbWF0Y2ggZGlyIHdpdGhcbiAgfCBgWmVybyAtPiBpcm91bmRfdG93YXJkc196ZXJvX2V4biB0XG4gIHwgYE5lYXJlc3QgLT4gaXJvdW5kX25lYXJlc3RfZXhuIHRcbiAgfCBgVXAgLT4gaXJvdW5kX3VwX2V4biB0XG4gIHwgYERvd24gLT4gaXJvdW5kX2Rvd25fZXhuIHRcbjs7XG5cbmxldCBpcm91bmQgPyhkaXIgPSBgTmVhcmVzdCkgdCA9XG4gIHRyeSBTb21lIChpcm91bmRfZXhuIH5kaXIgdCkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IGlzX2luZiB0ID0gMS4gLy4gdCA9IDAuXG5sZXQgaXNfZmluaXRlIHQgPSB0IC0uIHQgPSAwLlxuXG5sZXQgbWluX2luYW4gKHggOiB0KSB5ID1cbiAgaWYgaXNfbmFuIHkgdGhlbiB4IGVsc2UgaWYgaXNfbmFuIHggdGhlbiB5IGVsc2UgaWYgeCA8IHkgdGhlbiB4IGVsc2UgeVxuOztcblxubGV0IG1heF9pbmFuICh4IDogdCkgeSA9XG4gIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIGlmIHggPiB5IHRoZW4geCBlbHNlIHlcbjs7XG5cbmxldCBhZGQgPSAoICsuIClcbmxldCBzdWIgPSAoIC0uIClcbmxldCBuZWcgPSAoIH4tLiApXG5sZXQgYWJzID0gYWJzX2Zsb2F0XG5sZXQgc2NhbGUgPSAoICouIClcbmxldCBzcXVhcmUgeCA9IHggKi4geFxuXG5tb2R1bGUgUGFydHMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGZyYWN0aW9uYWwgOiB0IC0+IGZsb2F0XG4gIHZhbCBpbnRlZ3JhbCA6IHQgLT4gZmxvYXRcbiAgdmFsIG1vZGYgOiBmbG9hdCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXQgKiBmbG9hdFxuXG4gIGxldCBmcmFjdGlvbmFsIHQgPSBmc3QgdFxuICBsZXQgaW50ZWdyYWwgdCA9IHNuZCB0XG4gIGxldCBtb2RmID0gbW9kZlxuZW5kXG5cbmxldCBtb2RmID0gUGFydHMubW9kZlxubGV0IHJvdW5kX2Rvd24gPSBmbG9vclxubGV0IHJvdW5kX3VwID0gY2VpbFxubGV0IHJvdW5kX3Rvd2FyZHNfemVybyB0ID0gaWYgdCA+PSAwLiB0aGVuIHJvdW5kX2Rvd24gdCBlbHNlIHJvdW5kX3VwIHRcblxuKCogc2VlIHRoZSBjb21tZW50IGFib3ZlIFtyb3VuZF9uZWFyZXN0X2xiXSBhbmQgW3JvdW5kX25lYXJlc3RfdWJdIGZvciBhbiBleHBsYW5hdGlvbiAqKVxubGV0W0BvY2FtbC5pbmxpbmVdIHJvdW5kX25lYXJlc3RfaW5saW5lIHQgPVxuICBpZiB0ID4gcm91bmRfbmVhcmVzdF9sYiAmJiB0IDwgcm91bmRfbmVhcmVzdF91YlxuICB0aGVuIGZsb29yIChhZGRfaGFsZl9mb3Jfcm91bmRfbmVhcmVzdCB0KVxuICBlbHNlIHQgKy4gMC5cbjs7XG5cbmxldCByb3VuZF9uZWFyZXN0IHQgPSAocm91bmRfbmVhcmVzdF9pbmxpbmUgW0BvY2FtbC5pbmxpbmVkIGFsd2F5c10pIHRcblxubGV0IHJvdW5kX25lYXJlc3RfaGFsZl90b19ldmVuIHQgPVxuICBpZiB0IDw9IHJvdW5kX25lYXJlc3RfbGIgfHwgdCA+PSByb3VuZF9uZWFyZXN0X3ViXG4gIHRoZW4gdCArLiAwLlxuICBlbHNlIChcbiAgICBsZXQgZmxvb3IgPSBmbG9vciB0IGluXG4gICAgKCogW2NlaWxfb3Jfc3VjYyA9IGlmIHQgaXMgYW4gaW50ZWdlciB0aGVuIHQgKy4gMS4gZWxzZSBjZWlsIHRdLiAgRmFzdGVyIHRoYW4gW2NlaWxdLiAqKVxuICAgIGxldCBjZWlsX29yX3N1Y2MgPSBmbG9vciArLiAxLiBpblxuICAgIGxldCBkaWZmX2Zsb29yID0gdCAtLiBmbG9vciBpblxuICAgIGxldCBkaWZmX2NlaWwgPSBjZWlsX29yX3N1Y2MgLS4gdCBpblxuICAgIGlmIGRpZmZfZmxvb3IgPCBkaWZmX2NlaWxcbiAgICB0aGVuIGZsb29yXG4gICAgZWxzZSBpZiBkaWZmX2Zsb29yID4gZGlmZl9jZWlsXG4gICAgdGhlbiBjZWlsX29yX3N1Y2NcbiAgICBlbHNlIGlmICgqIGV4YWN0IHRpZSwgcGljayB0aGUgZXZlbiAqKVxuICAgICAgbW9kX2Zsb2F0IGZsb29yIDIuID0gMC5cbiAgICB0aGVuIGZsb29yXG4gICAgZWxzZSBjZWlsX29yX3N1Y2MpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbGJvdW5kID0gbG93ZXJfYm91bmRfZm9yX2ludCBJbnQ2My5udW1fYml0c1xubGV0IGludDYzX3JvdW5kX3Vib3VuZCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnQgSW50NjMubnVtX2JpdHNcblxubGV0IGludDYzX3JvdW5kX3VwX2V4biB0ID1cbiAgaWYgdCA+IDAuMFxuICB0aGVuIChcbiAgICBsZXQgdCcgPSBjZWlsIHQgaW5cbiAgICBpZiB0JyA8PSBpbnQ2M19yb3VuZF91Ym91bmRcbiAgICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0J1xuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnZlxuICAgICAgICBcIkZsb2F0LmludDYzX3JvdW5kX3VwX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKSlcbiAgZWxzZSBpZiB0ID49IGludDYzX3JvdW5kX2xib3VuZFxuICB0aGVuIEludDYzLm9mX2Zsb2F0X3VuY2hlY2tlZCB0XG4gIGVsc2VcbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiRmxvYXQuaW50NjNfcm91bmRfdXBfZXhuOiBhcmd1bWVudCAoJWYpIGlzIHRvbyBzbWFsbCBvciBOYU5cIlxuICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICgpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfZG93bl9leG4gdCA9XG4gIGlmIHQgPj0gMC4wXG4gIHRoZW5cbiAgICBpZiB0IDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoRmxvYXQwLmJveCB0KVxuICAgICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgdCcgPSBmbG9vciB0IGluXG4gICAgaWYgdCcgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gICAgdGhlbiBJbnQ2My5vZl9mbG9hdF91bmNoZWNrZWQgdCdcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgICAgKEZsb2F0MC5ib3ggdClcbiAgICAgICAgKCkpXG47O1xuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gdDAgPVxuICBsZXQgdCA9IChyb3VuZF9uZWFyZXN0X2lubGluZSBbQG9jYW1sLmlubGluZWQgYWx3YXlzXSkgdDAgaW5cbiAgaWYgdCA+IDAuXG4gIHRoZW5cbiAgICBpZiB0IDw9IGludDYzX3JvdW5kX3Vib3VuZFxuICAgIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgICBlbHNlXG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gbGFyZ2VcIlxuICAgICAgICAoYm94IHQwKVxuICAgICAgICAoKVxuICBlbHNlIGlmIHQgPj0gaW50NjNfcm91bmRfbGJvdW5kXG4gIHRoZW4gSW50NjMub2ZfZmxvYXRfdW5jaGVja2VkIHRcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5pbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4bjogYXJndW1lbnQgKCVmKSBpcyB0b28gc21hbGwgb3IgTmFOXCJcbiAgICAgIChib3ggdDApXG4gICAgICAoKVxuOztcblxubGV0IGludDYzX3JvdW5kX25lYXJlc3RfYXJjaDY0X25vYWxsb2NfZXhuIGYgPSBJbnQ2My5vZl9pbnQgKGlyb3VuZF9uZWFyZXN0X2V4biBmKVxuXG5sZXQgaW50NjNfcm91bmRfbmVhcmVzdF9leG4gPVxuICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgfCBXNjQgLT4gaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG5cbiAgfCBXMzIgLT4gaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG5cbjs7XG5cbmxldCByb3VuZCA/KGRpciA9IGBOZWFyZXN0KSB0ID1cbiAgbWF0Y2ggZGlyIHdpdGhcbiAgfCBgTmVhcmVzdCAtPiByb3VuZF9uZWFyZXN0IHRcbiAgfCBgRG93biAtPiByb3VuZF9kb3duIHRcbiAgfCBgVXAgLT4gcm91bmRfdXAgdFxuICB8IGBaZXJvIC0+IHJvdW5kX3Rvd2FyZHNfemVybyB0XG47O1xuXG5tb2R1bGUgQ2xhc3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEluZmluaXRlXG4gICAgfCBOYW5cbiAgICB8IE5vcm1hbFxuICAgIHwgU3Vibm9ybWFsXG4gICAgfCBaZXJvXG4gIFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZSA9IChQcHhfY29tcGFyZV9saWIucG9seW1vcnBoaWNfY29tcGFyZSA6IHQgLT4gdCAtPiBpbnQpXG4gIGxldCBhbGwgPSAoWyBJbmZpbml0ZTsgTmFuOyBOb3JtYWw7IFN1Ym5vcm1hbDsgWmVybyBdIDogdCBsaXN0KVxuXG4gIGxldCB0X29mX3NleHAgPVxuICAgIChsZXQgZXJyb3Jfc291cmNlX18wMDZfID0gXCJmbG9hdC5tbC5DbGFzcy50XCIgaW5cbiAgICAgZnVuY3Rpb25cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiaW5maW5pdGVcIiB8IFwiSW5maW5pdGVcIikgLT4gSW5maW5pdGVcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibmFuXCIgfCBcIk5hblwiKSAtPiBOYW5cbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwibm9ybWFsXCIgfCBcIk5vcm1hbFwiKSAtPiBOb3JtYWxcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwic3Vibm9ybWFsXCIgfCBcIlN1Ym5vcm1hbFwiKSAtPiBTdWJub3JtYWxcbiAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gKFwiemVyb1wiIHwgXCJaZXJvXCIpIC0+IFplcm9cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJpbmZpbml0ZVwiIHwgXCJJbmZpbml0ZVwiKSA6OiBfKSBhc1xuICAgICAgIHNleHBfXzAwN18gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcIm5hblwiIHwgXCJOYW5cIikgOjogXykgYXMgc2V4cF9fMDA3XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5zdGFnX25vX2FyZ3MgZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwN19cbiAgICAgfCBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSAoXCJub3JtYWxcIiB8IFwiTm9ybWFsXCIpIDo6IF8pIGFzIHNleHBfXzAwN18gLT5cbiAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Iuc3RhZ19ub19hcmdzIGVycm9yX3NvdXJjZV9fMDA2XyBzZXhwX18wMDdfXG4gICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gKFwic3Vibm9ybWFsXCIgfCBcIlN1Ym5vcm1hbFwiKSA6OiBfKSBhc1xuICAgICAgIHNleHBfXzAwN18gLT4gU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIChcInplcm9cIiB8IFwiWmVyb1wiKSA6OiBfKSBhcyBzZXhwX18wMDdfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA3X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5MaXN0IF8gOjogXykgYXMgc2V4cF9fMDA1XyAtPlxuICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgICB8IFNleHBsaWIwLlNleHAuTGlzdCBbXSBhcyBzZXhwX18wMDVfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9zdW0gZXJyb3Jfc291cmNlX18wMDZfIHNleHBfXzAwNV9cbiAgICAgfCBzZXhwX18wMDVfIC0+XG4gICAgICAgU2V4cGxpYjAuU2V4cF9jb252X2Vycm9yLnVuZXhwZWN0ZWRfc3RhZyBlcnJvcl9zb3VyY2VfXzAwNl8gc2V4cF9fMDA1X1xuICAgICAgIDogU2V4cGxpYjAuU2V4cC50IC0+IHQpXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9XG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEluZmluaXRlIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIkluZmluaXRlXCJcbiAgICAgIHwgTmFuIC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIk5hblwiXG4gICAgICB8IE5vcm1hbCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJOb3JtYWxcIlxuICAgICAgfCBTdWJub3JtYWwgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiU3Vibm9ybWFsXCJcbiAgICAgIHwgWmVybyAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJaZXJvXCJcbiAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICA7O1xuXG4gIGxldCAodF9zZXhwX2dyYW1tYXIgOiB0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgeyB1bnR5cGVkID1cbiAgICAgICAgVmFyaWFudFxuICAgICAgICAgIHsgY2FzZV9zZW5zaXRpdml0eSA9IENhc2Vfc2Vuc2l0aXZlX2V4Y2VwdF9maXJzdF9jaGFyYWN0ZXJcbiAgICAgICAgICA7IGNsYXVzZXMgPVxuICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcIkluZmluaXRlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIk5hblwiOyBjbGF1c2Vfa2luZCA9IEF0b21fY2xhdXNlIH1cbiAgICAgICAgICAgICAgOyBOb190YWcgeyBuYW1lID0gXCJOb3JtYWxcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIDsgTm9fdGFnIHsgbmFtZSA9IFwiU3Vibm9ybWFsXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcIlplcm9cIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgfVxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gc3RyaW5nX29mX3NleHAgKHNleHBfb2ZfdCB0KVxuICBsZXQgb2Zfc3RyaW5nIHMgPSB0X29mX3NleHAgKHNleHBfb2Zfc3RyaW5nIHMpXG5lbmRcblxubGV0IGNsYXNzaWZ5IHQgPVxuICBsZXQgbW9kdWxlIEMgPSBDbGFzcyBpblxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB0IHdpdGhcbiAgfCBGUF9ub3JtYWwgLT4gQy5Ob3JtYWxcbiAgfCBGUF9zdWJub3JtYWwgLT4gQy5TdWJub3JtYWxcbiAgfCBGUF96ZXJvIC0+IEMuWmVyb1xuICB8IEZQX2luZmluaXRlIC0+IEMuSW5maW5pdGVcbiAgfCBGUF9uYW4gLT4gQy5OYW5cbjs7XG5cbmxldCBpbnNlcnRfdW5kZXJzY29yZXMgPyhkZWxpbWl0ZXIgPSAnXycpID8oc3RyaXBfemVybyA9IGZhbHNlKSBzdHJpbmcgPVxuICBtYXRjaCBTdHJpbmcubHNwbGl0MiBzdHJpbmcgfm9uOicuJyB3aXRoXG4gIHwgTm9uZSAtPiBJbnRfY29udmVyc2lvbnMuaW5zZXJ0X2RlbGltaXRlciBzdHJpbmcgfmRlbGltaXRlclxuICB8IFNvbWUgKGxlZnQsIHJpZ2h0KSAtPlxuICAgIGxldCBsZWZ0ID0gSW50X2NvbnZlcnNpb25zLmluc2VydF9kZWxpbWl0ZXIgbGVmdCB+ZGVsaW1pdGVyIGluXG4gICAgbGV0IHJpZ2h0ID1cbiAgICAgIGlmIHN0cmlwX3plcm8gdGhlbiBTdHJpbmcucnN0cmlwIHJpZ2h0IH5kcm9wOihmdW4gYyAtPiBDaGFyLiggPSApIGMgJzAnKSBlbHNlIHJpZ2h0XG4gICAgaW5cbiAgICAobWF0Y2ggcmlnaHQgd2l0aFxuICAgICB8IFwiXCIgLT4gbGVmdFxuICAgICB8IF8gLT4gbGVmdCBeIFwiLlwiIF4gcmlnaHQpXG47O1xuXG5sZXQgdG9fc3RyaW5nX2h1bSA/ZGVsaW1pdGVyID8oZGVjaW1hbHMgPSAzKSA/c3RyaXBfemVybyA/KGV4cGxpY2l0X3BsdXMgPSBmYWxzZSkgZiA9XG4gIGlmIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUuKCA8ICkgZGVjaW1hbHMgMFxuICB0aGVuIGludmFsaWRfYXJnZiBcInRvX3N0cmluZ19odW06IGludmFsaWQgYXJndW1lbnQgfmRlY2ltYWxzPSVkXCIgZGVjaW1hbHMgKCk7XG4gIG1hdGNoIGNsYXNzaWZ5IGYgd2l0aFxuICB8IENsYXNzLkluZmluaXRlIC0+IGlmIGYgPiAwLiB0aGVuIFwiaW5mXCIgZWxzZSBcIi1pbmZcIlxuICB8IENsYXNzLk5hbiAtPiBcIm5hblwiXG4gIHwgQ2xhc3MuTm9ybWFsIHwgQ2xhc3MuU3Vibm9ybWFsIHwgQ2xhc3MuWmVybyAtPlxuICAgIGxldCBzID1cbiAgICAgIGlmIGV4cGxpY2l0X3BsdXMgdGhlbiBzcHJpbnRmIFwiJSsuKmZcIiBkZWNpbWFscyBmIGVsc2Ugc3ByaW50ZiBcIiUuKmZcIiBkZWNpbWFscyBmXG4gICAgaW5cbiAgICBpbnNlcnRfdW5kZXJzY29yZXMgcyA/ZGVsaW1pdGVyID9zdHJpcF96ZXJvXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPVxuICBsZXQgc2V4cCA9IHNleHBfb2ZfdCB0IGluXG4gIG1hdGNoICFTZXhwLm9mX2Zsb2F0X3N0eWxlIHdpdGhcbiAgfCBgTm9fdW5kZXJzY29yZXMgLT4gc2V4cFxuICB8IGBVbmRlcnNjb3JlcyAtPlxuICAgIChtYXRjaCBzZXhwIHdpdGhcbiAgICAgfCBMaXN0IF8gLT5cbiAgICAgICByYWlzZV9zXG4gICAgICAgICAoU2V4cC5tZXNzYWdlXG4gICAgICAgICAgICBcIltzZXhwX29mX2Zsb2F0XSBwcm9kdWNlZCBzdHJhbmdlIHNleHBcIlxuICAgICAgICAgICAgWyBcInNleHBcIiwgU2V4cC5zZXhwX29mX3Qgc2V4cCBdKVxuICAgICB8IEF0b20gc3RyaW5nIC0+XG4gICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHN0cmluZyAnRScgdGhlbiBzZXhwIGVsc2UgQXRvbSAoaW5zZXJ0X3VuZGVyc2NvcmVzIHN0cmluZykpXG47O1xuXG5sZXQgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nX2N1c3RvbSB0ID8ocHJlZml4ID0gXCJcIikgfmtpbG8gfm1lZ2EgfmdpZ2EgfnRlcmEgP3BldGEgKCkgPVxuICAoKiBSb3VuZCBhIHJhdGlvIHRvd2FyZCB0aGUgbmVhcmVzdCBpbnRlZ2VyLCByZXNvbHZpbmcgdGllcyB0b3dhcmQgdGhlIG5lYXJlc3QgZXZlblxuICAgICBudW1iZXIuICBGb3Igc2FuZSBpbnB1dHMgKGluIHBhcnRpY3VsYXIsIHdoZW4gW2Rlbm9taW5hdG9yXSBpcyBhbiBpbnRlZ2VyIGFuZFxuICAgICBbYWJzIG51bWVyYXRvciA8IDJlNTJdKSB0aGlzIHNob3VsZCBiZSBhY2N1cmF0ZS4gIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBtaWdodCBiZSBhXG4gICAgIGxpdHRsZSBiaXQgb2ZmLCBidXQgd2UgZG9uJ3QgcmVhbGx5IHVzZSB0aGF0IGNhc2UuICopXG4gIGxldCBpcm91bmRfcmF0aW9fZXhuIH5udW1lcmF0b3IgfmRlbm9taW5hdG9yID1cbiAgICBsZXQgayA9IGZsb29yIChudW1lcmF0b3IgLy4gZGVub21pbmF0b3IpIGluXG4gICAgKCogaWYgW2FicyBrIDwgMmU1M10sIHRoZW4gYm90aCBba10gYW5kIFtrICsuIDEuXSBhcmUgYWNjdXJhdGVseSByZXByZXNlbnRlZCwgYW5kIGluXG4gICAgICAgcGFydGljdWxhciBbayArLiAxLiA+IGtdLiAgSWYgW2Rlbm9taW5hdG9yXSBpcyBhbHNvIGFuIGludGVnZXIsIGFuZFxuICAgICAgIFthYnMgKGRlbm9taW5hdG9yICouIChrICsuIDEpKSA8IDJlNTNdIChhbmQgaW4gc29tZSBvdGhlciBjYXNlcywgdG9vKSwgdGhlbiBbbG93ZXJdXG4gICAgICAgYW5kIFtoaWdoZXJdIGFyZSBhY3R1YWxseSBib3RoIGFjY3VyYXRlLiAgU2luY2UgKHJvdWdobHkpXG4gICAgICAgW251bWVyYXRvciA9IGRlbm9taW5hdG9yICouIGtdIHRoZW4gZm9yIFthYnMgbnVtZXJhdG9yIDwgMmU1Ml0gd2Ugc2hvdWxkIGJlXG4gICAgICAgZmluZS4gKilcbiAgICBsZXQgbG93ZXIgPSBkZW5vbWluYXRvciAqLiBrIGluXG4gICAgbGV0IGhpZ2hlciA9IGRlbm9taW5hdG9yICouIChrICsuIDEuKSBpblxuICAgICgqIFN1YnRyYWN0aW5nIG51bWJlcnMgd2l0aGluIGEgZmFjdG9yIG9mIHR3byBmcm9tIGVhY2ggb3RoZXIgaXMgYWNjdXJhdGUuXG4gICAgICAgU28gZWl0aGVyIHRoZSB0d28gc3VidHJhY3Rpb25zIGJlbG93IGFyZSBhY2N1cmF0ZSwgb3IgayA9IDAsIG9yIGsgPSAtMS5cbiAgICAgICBJbiBjYXNlIG9mIGEgdGllLCByb3VuZCB0byBldmVuLiAqKVxuICAgIGxldCBkaWZmX3JpZ2h0ID0gaGlnaGVyIC0uIG51bWVyYXRvciBpblxuICAgIGxldCBkaWZmX2xlZnQgPSBudW1lcmF0b3IgLS4gbG93ZXIgaW5cbiAgICBsZXQgayA9IGlyb3VuZF9uZWFyZXN0X2V4biBrIGluXG4gICAgaWYgZGlmZl9yaWdodCA8IGRpZmZfbGVmdFxuICAgIHRoZW4gayArIDFcbiAgICBlbHNlIGlmIGRpZmZfcmlnaHQgPiBkaWZmX2xlZnRcbiAgICB0aGVuIGtcbiAgICBlbHNlIGlmICgqIGEgdGllICopXG4gICAgICBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLiggPSApIChrIG1vZCAyKSAwXG4gICAgdGhlbiBrXG4gICAgZWxzZSBrICsgMVxuICBpblxuICBtYXRjaCBjbGFzc2lmeSB0IHdpdGhcbiAgfCBDbGFzcy5JbmZpbml0ZSAtPiBpZiB0IDwgMC4wIHRoZW4gXCItaW5mICBcIiBlbHNlIFwiaW5mICBcIlxuICB8IENsYXNzLk5hbiAtPiBcIm5hbiAgXCJcbiAgfCBDbGFzcy5TdWJub3JtYWwgfCBDbGFzcy5Ob3JtYWwgfCBDbGFzcy5aZXJvIC0+XG4gICAgbGV0IGdvIHQgPVxuICAgICAgbGV0IGNvbnZfb25lIHQgPVxuICAgICAgICBhc3NlcnQgKDAuIDw9IHQgJiYgdCA8IDk5OS45NSk7XG4gICAgICAgIGxldCB4ID0gcHJlZml4IF4gZm9ybWF0X2Zsb2F0IFwiJS4xZlwiIHQgaW5cbiAgICAgICAgKCogRml4IHRoZSBcIi4wXCIgc3VmZml4ICopXG4gICAgICAgIGlmIFN0cmluZy5pc19zdWZmaXggeCB+c3VmZml4OlwiLjBcIlxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgeCA9IEJ5dGVzLm9mX3N0cmluZyB4IGluXG4gICAgICAgICAgbGV0IG4gPSBCeXRlcy5sZW5ndGggeCBpblxuICAgICAgICAgIEJ5dGVzLnNldCB4IChuIC0gMSkgJyAnO1xuICAgICAgICAgIEJ5dGVzLnNldCB4IChuIC0gMikgJyAnO1xuICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6eClcbiAgICAgICAgZWxzZSB4XG4gICAgICBpblxuICAgICAgbGV0IGNvbnYgbWFnIHQgZGVub21pbmF0b3IgPVxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIChkZW5vbWluYXRvciA9IDEwMC4gJiYgdCA+PSA5OTkuOTUpXG4gICAgICAgICAgfHwgKGRlbm9taW5hdG9yID49IDEwMF8wMDAuICYmIHQgPj0gcm91bmRfbmVhcmVzdCAoZGVub21pbmF0b3IgKi4gOS45OTlfNSkpKTtcbiAgICAgICAgYXNzZXJ0ICh0IDwgcm91bmRfbmVhcmVzdCAoZGVub21pbmF0b3IgKi4gOV85OTkuNSkpO1xuICAgICAgICBsZXQgaSwgZCA9XG4gICAgICAgICAgbGV0IGsgPSBpcm91bmRfcmF0aW9fZXhuIH5udW1lcmF0b3I6dCB+ZGVub21pbmF0b3IgaW5cbiAgICAgICAgICAoKiBbbW9kXSBpcyBva2F5IGhlcmUgYmVjYXVzZSB3ZSBrbm93IGkgPj0gMC4gKilcbiAgICAgICAgICBrIC8gMTAsIGsgbW9kIDEwXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICAgICAgYXNzZXJ0ICgwIDw9IGkgJiYgaSA8IDEwMDApO1xuICAgICAgICBhc3NlcnQgKDAgPD0gZCAmJiBkIDwgMTApO1xuICAgICAgICBpZiBkID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIlcyVkJXMgXCIgcHJlZml4IGkgbWFnXG4gICAgICAgIGVsc2Ugc3ByaW50ZiBcIiVzJWQlcyVkXCIgcHJlZml4IGkgbWFnIGRcbiAgICAgIGluXG4gICAgICAoKiBXaGlsZSB0aGUgc3RhbmRhcmQgbWV0cmljIHByZWZpeGVzIChlLmcuIGNhcGl0YWwgXCJNXCIgcmF0aGVyIHRoYW4gXCJtXCIsIFsxXSkgYXJlXG4gICAgICAgICBub21pbmFsbHkgbW9yZSBjb3JyZWN0LCB0aGlzIGhpbmRlcnMgcmVhZGFiaWxpdHkgaW4gb3VyIGNhc2UuICBFLmcuLCAxMEc2IGFuZFxuICAgICAgICAgMTA2NiBsb29rIHRvbyBzaW1pbGFyLiAgVGhhdCdzIGFuIGV4dHJlbWUgZXhhbXBsZSwgYnV0IGluIGdlbmVyYWwgayxtLGcsdCxwXG4gICAgICAgICBwcm9iYWJseSBzdGFuZCBvdXQgYmV0dGVyIHRoYW4gSyxNLEcsVCxQIHdoZW4gaW50ZXJzcGVyc2VkIHdpdGggZGlnaXRzLlxuXG4gICAgICAgICBbMV0gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NZXRyaWNfcHJlZml4ICopXG4gICAgICAoKiBUaGUgdHJpY2sgaGVyZSBpcyB0aGF0OlxuICAgICAgICAgLSB0aGUgZmlyc3QgYm91bmRhcnkgKDk5OS45NSkgYXMgYSBmbG9hdCBpcyBzbGlnaHRseSBvdmVyLXJlcHJlc2VudGVkIChzbyBpdCBpc1xuICAgICAgICAgICBiZXR0ZXIgYXBwcm94aW1hdGVkIGFzIFwiMWtcIiB0aGFuIGFzIFwiOTk5LjlcIiksXG4gICAgICAgICAtIHRoZSBvdGhlciBib3VuZGFyaWVzIGFyZSBhY2N1cmF0ZWx5IHJlcHJlc2VudGVkLCBiZWNhdXNlIHRoZXkgYXJlIGludGVnZXJzLlxuICAgICAgICAgICBUaGF0J3Mgd2h5IHRoZSBzdHJpY3QgZXF1YWxpdGllcyBiZWxvdyBkbyBleGFjdGx5IHdoYXQgd2Ugd2FudC4gKilcbiAgICAgIGlmIHQgPCA5OTkuOTVFMFxuICAgICAgdGhlbiBjb252X29uZSB0XG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFM1xuICAgICAgdGhlbiBjb252IGtpbG8gdCAxMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFNlxuICAgICAgdGhlbiBjb252IG1lZ2EgdCAxMDBfMDAwLlxuICAgICAgZWxzZSBpZiB0IDwgOTk5Ljk1RTlcbiAgICAgIHRoZW4gY29udiBnaWdhIHQgMTAwXzAwMF8wMDAuXG4gICAgICBlbHNlIGlmIHQgPCA5OTkuOTVFMTJcbiAgICAgIHRoZW4gY29udiB0ZXJhIHQgMTAwXzAwMF8wMDBfMDAwLlxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHBldGEgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3ByaW50ZiBcIiVzJS4xZVwiIHByZWZpeCB0XG4gICAgICAgIHwgU29tZSBwZXRhIC0+XG4gICAgICAgICAgaWYgdCA8IDk5OS45NUUxNVxuICAgICAgICAgIHRoZW4gY29udiBwZXRhIHQgMTAwXzAwMF8wMDBfMDAwXzAwMC5cbiAgICAgICAgICBlbHNlIHNwcmludGYgXCIlcyUuMWVcIiBwcmVmaXggdClcbiAgICBpblxuICAgIGlmIHQgPj0gMC4gdGhlbiBnbyB0IGVsc2UgXCItXCIgXiBnbyB+LS50XG47O1xuXG5sZXQgdG9fcGFkZGVkX2NvbXBhY3Rfc3RyaW5nIHQgPVxuICB0b19wYWRkZWRfY29tcGFjdF9zdHJpbmdfY3VzdG9tIHQgfmtpbG86XCJrXCIgfm1lZ2E6XCJtXCIgfmdpZ2E6XCJnXCIgfnRlcmE6XCJ0XCIgfnBldGE6XCJwXCIgKClcbjs7XG5cbigqIFBlcmZvcm1hbmNlIG5vdGU6IEluaXRpYWxpemluZyB0aGUgYWNjdW11bGF0b3IgdG8gMSByZXN1bHRzIGluIG9uZSBleHRyYVxuICAgbXVsdGlwbHk7IGUuZy4sIHRvIGNvbXB1dGUgeCAqKiA0LCB3ZSBpbiBwcmluY2lwbGUgb25seSBuZWVkIDIgbXVsdGlwbGllcyxcbiAgIGJ1dCB0aGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSAzIG11bHRpcGxpZXMuICBIb3dldmVyLCBhdHRlbXB0cyB0byBhdm9pZCB0aGlzXG4gICAobGlrZSBkZWNyZW1lbnRpbmcgbiBhbmQgaW5pdGlhbGl6aW5nIGFjY3VtIHRvIGJlIHgsIG9yIGhhbmRsaW5nIHNtYWxsXG4gICBleHBvbmVudHMgYXMgYSBzcGVjaWFsIGNhc2UpIGhhdmUgbm90IHlpZWxkZWQgYW55dGhpbmcgdGhhdCBpcyBhIG5ldFxuICAgaW1wcm92ZW1lbnQuXG4qKVxubGV0IGludF9wb3cgeCBuID1cbiAgbGV0IG9wZW4gSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSBpblxuICBpZiBuID0gMFxuICB0aGVuIDEuXG4gIGVsc2UgKFxuICAgICgqIFVzaW5nIFt4ICsuICgtMC4pXSBvbiB0aGUgZm9sbG93aW5nIGxpbmUgY29udmluY2VzIHRoZSBjb21waWxlciB0byBhdm9pZCBhIGNlcnRhaW5cbiAgICAgICBib3hpbmcgKHRoYXQgd291bGQgcmVzdWx0IGluIGFsbG9jYXRpb24gaW4gZWFjaCBpdGVyYXRpb24pLiAgU29vbiwgdGhlIGNvbXBpbGVyXG4gICAgICAgc2hvdWxkbid0IG5lZWQgdGhpcyBcImhpbnRcIiB0byBhdm9pZCB0aGUgYm94aW5nLiAgVGhlIHJlYXNvbiB3ZSBhZGQgLTAgcmF0aGVyIHRoYW4gMFxuICAgICAgIGlzIHRoYXQgW3ggKy4gKC0wLildIGlzIGFwcGFyZW50bHkgYWx3YXlzIHRoZSBzYW1lIGFzIFt4XSwgd2hlcmVhcyBbeCArLiAwLl0gaXNcbiAgICAgICBub3QsIGluIHRoYXQgaXQgc2VuZHMgWy0wLl0gdG8gWzAuXS4gIFRoaXMgbWFrZXMgYSBkaWZmZXJlbmNlIGJlY2F1c2Ugd2Ugd2FudFxuICAgICAgIFtpbnRfcG93ICgtMC4pICgtMSldIHRvIHJldHVybiBuZWdfaW5maW5pdHkganVzdCBsaWtlIFstMC4gKiogLTEuXSB3b3VsZC4gICopXG4gICAgbGV0IHggPSByZWYgKHggKy4gLTAuKSBpblxuICAgIGxldCBuID0gcmVmIG4gaW5cbiAgICBsZXQgYWNjdW0gPSByZWYgMS4gaW5cbiAgICBpZiAhbiA8IDBcbiAgICB0aGVuIChcbiAgICAgICgqIHggKiogbiA9ICgxL3gpICoqIC1uICopXG4gICAgICB4IDo9IDEuIC8uICF4O1xuICAgICAgbiA6PSB+LSAoIW4pO1xuICAgICAgaWYgIW4gPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogbiBtdXN0IGhhdmUgYmVlbiBtaW5faW50LCBzbyBpdCBpcyBub3cgc28gYmlnIHRoYXQgaXQgaGFzIHdyYXBwZWQgYXJvdW5kLlxuICAgICAgICAgICBXZSBkZWNyZW1lbnQgaXQgc28gdGhhdCBpdCBsb29rcyBwb3NpdGl2ZSBhZ2FpbiwgYnV0IGFjY29yZGluZ2x5IGhhdmVcbiAgICAgICAgICAgdG8gcHV0IGFuIGV4dHJhIGZhY3RvciBvZiB4IGluIHRoZSBhY2N1bXVsYXRvci5cbiAgICAgICAgKilcbiAgICAgICAgYWNjdW0gOj0gIXg7XG4gICAgICAgIGRlY3IgbikpO1xuICAgICgqIExldHRpbmcgW2FdIGRlbm90ZSAodGhlIG9yaWdpbmFsIHZhbHVlIG9mKSBbeCAqKiBuXSwgd2UgbWFpbnRhaW5cbiAgICAgICB0aGUgaW52YXJpYW50IHRoYXQgWyh4ICoqIG4pICouIGFjY3VtID0gYV0uICopXG4gICAgd2hpbGUgIW4gPiAxIGRvXG4gICAgICBpZiAhbiBsYW5kIDEgPD4gMCB0aGVuIGFjY3VtIDo9ICF4ICouICFhY2N1bTtcbiAgICAgIHggOj0gIXggKi4gIXg7XG4gICAgICBuIDo9ICFuIGxzciAxXG4gICAgZG9uZTtcbiAgICAoKiBuIGlzIG5lY2Vzc2FyaWx5IDEgYXQgdGhpcyBwb2ludCwgc28gdGhlcmUgaXMgb25lIGFkZGl0aW9uYWxcbiAgICAgICBtdWx0aXBsaWNhdGlvbiBieSB4LiAqKVxuICAgICF4ICouICFhY2N1bSlcbjs7XG5cbmxldCByb3VuZF9nZW4geCB+aG93ID1cbiAgaWYgeCA9IDAuXG4gIHRoZW4gMC5cbiAgZWxzZSBpZiBub3QgKGlzX2Zpbml0ZSB4KVxuICB0aGVuIHhcbiAgZWxzZSAoXG4gICAgKCogU2lnbmlmaWNhbnQgZGlnaXRzIGFuZCBkZWNpbWFsIGRpZ2l0cy4gKilcbiAgICBsZXQgc2QsIGRkID1cbiAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICB8IGBzaWduaWZpY2FudF9kaWdpdHMgc2QgLT5cbiAgICAgICAgbGV0IGRkID0gc2QgLSB0b19pbnQgKHJvdW5kX3VwIChsb2cxMCAoYWJzIHgpKSkgaW5cbiAgICAgICAgc2QsIGRkXG4gICAgICB8IGBkZWNpbWFsX2RpZ2l0cyBkZCAtPlxuICAgICAgICBsZXQgc2QgPSBkZCArIHRvX2ludCAocm91bmRfdXAgKGxvZzEwIChhYnMgeCkpKSBpblxuICAgICAgICBzZCwgZGRcbiAgICBpblxuICAgIGxldCBvcGVuIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgaW5cbiAgICBpZiBzZCA8IDBcbiAgICB0aGVuIDAuXG4gICAgZWxzZSBpZiBzZCA+PSAxN1xuICAgIHRoZW4geFxuICAgIGVsc2UgKFxuICAgICAgKCogQ2hvb3NlIHRoZSBvcmRlciB0aGF0IGlzIGV4YWN0bHkgcmVwcmVzZW50YWJsZSBhcyBhIGZsb2F0LiBTbWFsbCBwb3NpdGl2ZVxuICAgICAgICAgaW50ZWdlcnMgYXJlLCBidXQgdGhlaXIgaW52ZXJzZXMgaW4gbW9zdCBjYXNlcyBhcmUgbm90LiAqKVxuICAgICAgbGV0IGFic19kZCA9IEludC5hYnMgZGQgaW5cbiAgICAgIGlmIGFic19kZCA+IDIyIHx8IHNkID49IDE2XG4gICAgICAoKiAxMCoqMjIgaXMgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQsIGJ1dCAxMCoqMjMgaXMgbm90LCBzbyB1c2UgdGhlIHNsb3dcbiAgICAgICAgIHBhdGguICBTaW1pbGFybHksIGlmIHdlIG5lZWQgMTYgc2lnbmlmaWNhbnQgZGlnaXRzIGluIHRoZSByZXN1bHQsIHRoZW4gdGhlIGludGVnZXJcbiAgICAgICAgIFtyb3VuZF9uZWFyZXN0ICh4IDxvcD4gb3JkZXIpXSBtaWdodCBub3QgYmUgZXhhY3RseSByZXByZXNlbnRhYmxlIGFzIGEgZmxvYXQsIHNpbmNlXG4gICAgICAgICBmb3Igc29tZSByYW5nZXMgd2Ugb25seSBoYXZlIDE1IGRpZ2l0cyBvZiBwcmVjaXNpb24gZ3VhcmFudGVlZC5cblxuICAgICAgICAgVGhhdCBzYWlkLCB3ZSBhcmUgc3RpbGwgcm91bmRpbmcgdHdpY2UgaGVyZTpcblxuICAgICAgICAgMSkgZmlyc3QgdGltZSB3aGVuIHJvdW5kaW5nIFt4ICouIG9yZGVyXSBvciBbeCAvLiBvcmRlcl0gdG8gdGhlIG5lYXJlc3QgZmxvYXRcbiAgICAgICAgIChqdXN0IHRoZSBub3JtYWwgd2F5IGZsb2F0aW5nLXBvaW50IG11bHRpcGxpY2F0aW9uIG9yIGRpdmlzaW9uIHdvcmtzKSxcblxuICAgICAgICAgMikgc2Vjb25kIHRpbWUgd2hlbiBhcHBseWluZyBbcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW5dIHRvIHRoZSByZXN1bHQgb2YgdGhlXG4gICAgICAgICBhYm92ZSBvcGVyYXRpb25cblxuICAgICAgICAgU28gZm9yIGFyZ3VtZW50cyB3aXRoaW4gYW4gdWxwIGZyb20gYSB0aWUgd2UgbWlnaHQgc3RpbGwgcHJvZHVjZSBhbiBvZmYtYnktb25lXG4gICAgICAgICByZXN1bHQuICopXG4gICAgICB0aGVuIG9mX3N0cmluZyAoc3ByaW50ZiBcIiUuKmdcIiBzZCB4KVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBvcmRlciA9IGludF9wb3cgMTAuIGFic19kZCBpblxuICAgICAgICBpZiBkZCA+PSAwXG4gICAgICAgIHRoZW4gcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gKHggKi4gb3JkZXIpIC8uIG9yZGVyXG4gICAgICAgIGVsc2Ugcm91bmRfbmVhcmVzdF9oYWxmX3RvX2V2ZW4gKHggLy4gb3JkZXIpICouIG9yZGVyKSkpXG47O1xuXG5sZXQgcm91bmRfc2lnbmlmaWNhbnQgeCB+c2lnbmlmaWNhbnRfZGlnaXRzID1cbiAgaWYgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZS4oIDw9ICkgc2lnbmlmaWNhbnRfZGlnaXRzIDBcbiAgdGhlblxuICAgIGludmFsaWRfYXJnZlxuICAgICAgXCJGbG9hdC5yb3VuZF9zaWduaWZpY2FudDogaW52YWxpZCBhcmd1bWVudCBzaWduaWZpY2FudF9kaWdpdHM6JWRcIlxuICAgICAgc2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgICAoKVxuICBlbHNlIHJvdW5kX2dlbiB4IH5ob3c6KGBzaWduaWZpY2FudF9kaWdpdHMgc2lnbmlmaWNhbnRfZGlnaXRzKVxuOztcblxubGV0IHJvdW5kX2RlY2ltYWwgeCB+ZGVjaW1hbF9kaWdpdHMgPSByb3VuZF9nZW4geCB+aG93OihgZGVjaW1hbF9kaWdpdHMgZGVjaW1hbF9kaWdpdHMpXG5sZXQgYmV0d2VlbiB0IH5sb3cgfmhpZ2ggPSBsb3cgPD0gdCAmJiB0IDw9IGhpZ2hcblxubGV0IGNsYW1wX2V4biB0IH5taW4gfm1heCA9XG4gICgqIEFsc28gZmFpbHMgaWYgW21pbl0gb3IgW21heF0gaXMgbmFuICopXG4gIGFzc2VydCAobWluIDw9IG1heCk7XG4gICgqIGNsYW1wX3VuY2hlY2tlZCBpcyBpbiBmbG9hdDAubWwgKilcbiAgY2xhbXBfdW5jaGVja2VkIHQgfm1pbiB+bWF4XG47O1xuXG5sZXQgY2xhbXAgdCB+bWluIH5tYXggPVxuICAoKiBBbHNvIGZhaWxzIGlmIFttaW5dIG9yIFttYXhdIGlzIG5hbiAqKVxuICBpZiBtaW4gPD0gbWF4XG4gIHRoZW4gT2sgKGNsYW1wX3VuY2hlY2tlZCB0IH5taW4gfm1heClcbiAgZWxzZVxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIChTZXhwLm1lc3NhZ2VcbiAgICAgICAgIFwiY2xhbXAgcmVxdWlyZXMgW21pbiA8PSBtYXhdXCJcbiAgICAgICAgIFsgXCJtaW5cIiwgVC5zZXhwX29mX3QgbWluOyBcIm1heFwiLCBULnNleHBfb2ZfdCBtYXggXSlcbjs7XG5cbmxldCAoICsgKSA9ICggKy4gKVxubGV0ICggLSApID0gKCAtLiApXG5sZXQgKCAqICkgPSAoICouIClcbmxldCAoICoqICkgPSAoICoqIClcbmxldCAoIC8gKSA9ICggLy4gKVxubGV0ICggJSApID0gKCAlLiApXG5sZXQgKCB+LSApID0gKCB+LS4gKVxuXG5sZXQgc2lnbl9leG4gdCA6IFNpZ24udCA9XG4gIGlmIHQgPiAwLlxuICB0aGVuIFBvc1xuICBlbHNlIGlmIHQgPCAwLlxuICB0aGVuIE5lZ1xuICBlbHNlIGlmIHQgPSAwLlxuICB0aGVuIFplcm9cbiAgZWxzZSBFcnJvci5yYWlzZV9zIChTZXhwLm1lc3NhZ2UgXCJGbG9hdC5zaWduX2V4biBvZiBOQU5cIiBbIFwiXCIsIHNleHBfb2ZfdCB0IF0pXG47O1xuXG5sZXQgc2lnbl9vcl9uYW4gdCA6IFNpZ25fb3JfbmFuLnQgPVxuICBpZiB0ID4gMC4gdGhlbiBQb3MgZWxzZSBpZiB0IDwgMC4gdGhlbiBOZWcgZWxzZSBpZiB0ID0gMC4gdGhlbiBaZXJvIGVsc2UgTmFuXG47O1xuXG5sZXQgaWVlZV9uZWdhdGl2ZSB0ID1cbiAgbGV0IGJpdHMgPSBDYW1sLkludDY0LmJpdHNfb2ZfZmxvYXQgdCBpblxuICBQb2x5LihiaXRzIDwgQ2FtbC5JbnQ2NC56ZXJvKVxuOztcblxubGV0IGV4cG9uZW50X2JpdHMgPSAxMVxubGV0IG1hbnRpc3NhX2JpdHMgPSA1MlxubGV0IGV4cG9uZW50X21hc2s2NCA9IEludDY0LihzaGlmdF9sZWZ0IG9uZSBleHBvbmVudF9iaXRzIC0gb25lKVxubGV0IGV4cG9uZW50X21hc2sgPSBJbnQ2NC50b19pbnRfZXhuIGV4cG9uZW50X21hc2s2NFxubGV0IG1hbnRpc3NhX21hc2sgPSBJbnQ2My4oc2hpZnRfbGVmdCBvbmUgbWFudGlzc2FfYml0cyAtIG9uZSlcbmxldCBtYW50aXNzYV9tYXNrNjQgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYV9tYXNrXG5cbmxldCBpZWVlX2V4cG9uZW50IHQgPVxuICBsZXQgYml0cyA9IENhbWwuSW50NjQuYml0c19vZl9mbG9hdCB0IGluXG4gIEludDY0LihiaXRfYW5kIChzaGlmdF9yaWdodF9sb2dpY2FsIGJpdHMgbWFudGlzc2FfYml0cykgZXhwb25lbnRfbWFzazY0KVxuICB8PiBDYW1sLkludDY0LnRvX2ludFxuOztcblxubGV0IGllZWVfbWFudGlzc2EgdCA9XG4gIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC5iaXRzX29mX2Zsb2F0IHQgaW5cbiAgSW50NjMub2ZfaW50NjRfZXhuIENhbWwuSW50NjQuKGxvZ2FuZCBiaXRzIG1hbnRpc3NhX21hc2s2NClcbjs7XG5cbmxldCBjcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2EgPVxuICBpZiBJbnQuKGJpdF9hbmQgZXhwb25lbnQgZXhwb25lbnRfbWFzayA8PiBleHBvbmVudClcbiAgdGhlbiBmYWlsd2l0aGYgXCJleHBvbmVudCAlZCBvdXQgb2YgcmFuZ2UgWzAsICVkXVwiIGV4cG9uZW50IGV4cG9uZW50X21hc2sgKClcbiAgZWxzZSBpZiBJbnQ2My4oYml0X2FuZCBtYW50aXNzYSBtYW50aXNzYV9tYXNrIDw+IG1hbnRpc3NhKVxuICB0aGVuXG4gICAgZmFpbHdpdGhmXG4gICAgICBcIm1hbnRpc3NhICVzIG91dCBvZiByYW5nZSBbMCwgJXNdXCJcbiAgICAgIChJbnQ2My50b19zdHJpbmcgbWFudGlzc2EpXG4gICAgICAoSW50NjMudG9fc3RyaW5nIG1hbnRpc3NhX21hc2spXG4gICAgICAoKVxuICBlbHNlIChcbiAgICBsZXQgc2lnbl9iaXRzID0gaWYgbmVnYXRpdmUgdGhlbiBDYW1sLkludDY0Lm1pbl9pbnQgZWxzZSBDYW1sLkludDY0Lnplcm8gaW5cbiAgICBsZXQgZXhwdF9iaXRzID0gQ2FtbC5JbnQ2NC5zaGlmdF9sZWZ0IChDYW1sLkludDY0Lm9mX2ludCBleHBvbmVudCkgbWFudGlzc2FfYml0cyBpblxuICAgIGxldCBtYW50X2JpdHMgPSBJbnQ2My50b19pbnQ2NCBtYW50aXNzYSBpblxuICAgIGxldCBiaXRzID0gQ2FtbC5JbnQ2NC4obG9nb3Igc2lnbl9iaXRzIChsb2dvciBleHB0X2JpdHMgbWFudF9iaXRzKSkgaW5cbiAgICBDYW1sLkludDY0LmZsb2F0X29mX2JpdHMgYml0cylcbjs7XG5cbmxldCBjcmVhdGVfaWVlZSB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYSA9XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gY3JlYXRlX2llZWVfZXhuIH5uZWdhdGl2ZSB+ZXhwb25lbnQgfm1hbnRpc3NhKVxuOztcblxubW9kdWxlIFRlcnNlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdG9fc3RyaW5nIHggPSBQcmludGYuc3ByaW50ZiBcIiUuOEdcIiB4XG4gIGxldCBzZXhwX29mX3QgeCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHgpXG4gIGxldCBvZl9zdHJpbmcgeCA9IG9mX3N0cmluZyB4XG4gIGxldCB0X3NleHBfZ3JhbW1hciA9IHRfc2V4cF9ncmFtbWFyXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgemVybyA9IHplcm9cbiAgZW5kKVxuXG4oKiBUaGVzZSBhcmUgcGFydGx5IGhlcmUgYXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRvIGF2b2lkIHNvbWUgYm94aW5nIHdlJ3JlIGdldHRpbmcgd2l0aFxuICAgdGhlIHZlcnNpb25zIHdlIGdldCBmcm9tIFtXaXRoX3plcm9dLiAgVGhleSBhbHNvIG1ha2UgW0Zsb2F0LmlzX25lZ2F0aXZlIG5hbl0gYW5kXG4gICBbRmxvYXQuaXNfbm9uX3Bvc2l0aXZlIG5hbl0gcmV0dXJuIFtmYWxzZV07IHRoZSB2ZXJzaW9ucyB3ZSBnZXQgZnJvbSBbV2l0aF96ZXJvXSByZXR1cm5cbiAgIFt0cnVlXS4gKilcbmxldCBpc19wb3NpdGl2ZSB0ID0gdCA+IDAuXG5sZXQgaXNfbm9uX25lZ2F0aXZlIHQgPSB0ID49IDAuXG5sZXQgaXNfbmVnYXRpdmUgdCA9IHQgPCAwLlxubGV0IGlzX25vbl9wb3NpdGl2ZSB0ID0gdCA8PSAwLlxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQmFzZS5GbG9hdFwiXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICBlbmQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGxldCAoICsgKSA9ICggKyApXG4gIGxldCAoIC0gKSA9ICggLSApXG4gIGxldCAoICogKSA9ICggKiApXG4gIGxldCAoIC8gKSA9ICggLyApXG4gIGxldCAoICUgKSA9ICggJSApXG4gIGxldCAoIH4tICkgPSAoIH4tIClcbiAgbGV0ICggKiogKSA9ICggKiogKVxuXG4gIGluY2x1ZGUgKEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IENvbXBhcmlzb25zLkluZml4IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgbGV0IGFicyA9IGFic1xuICBsZXQgbmVnID0gbmVnXG4gIGxldCB6ZXJvID0gemVyb1xuICBsZXQgb2ZfaW50ID0gb2ZfaW50XG4gIGxldCBvZl9mbG9hdCB4ID0geFxuZW5kXG5cbm1vZHVsZSBPX2RvdCA9IHN0cnVjdFxuICBsZXQgKCAqLiApID0gKCAqIClcbiAgbGV0ICggKy4gKSA9ICggKyApXG4gIGxldCAoIC0uICkgPSAoIC0gKVxuICBsZXQgKCAvLiApID0gKCAvIClcbiAgbGV0ICggJS4gKSA9ICggJSApXG4gIGxldCAoIH4tLiApID0gKCB+LSApXG4gIGxldCAoICoqLiApID0gKCAqKiApXG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGJveCA9IGJveFxuICBsZXQgY2xhbXBfdW5jaGVja2VkID0gY2xhbXBfdW5jaGVja2VkXG4gIGxldCBsb3dlcl9ib3VuZF9mb3JfaW50ID0gbG93ZXJfYm91bmRfZm9yX2ludFxuICBsZXQgdXBwZXJfYm91bmRfZm9yX2ludCA9IHVwcGVyX2JvdW5kX2Zvcl9pbnRcbiAgbGV0IHNwZWNpYWxpemVkX2hhc2ggPSBoYXNoX2Zsb2F0XG4gIGxldCBvbmVfdWxwX2xlc3NfdGhhbl9oYWxmID0gb25lX3VscF9sZXNzX3RoYW5faGFsZlxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9wb3J0YWJsZV9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X3BvcnRhYmxlX2FsbG9jX2V4blxuICBsZXQgaW50NjNfcm91bmRfbmVhcmVzdF9hcmNoNjRfbm9hbGxvY19leG4gPSBpbnQ2M19yb3VuZF9uZWFyZXN0X2FyY2g2NF9ub2FsbG9jX2V4blxuICBsZXQgaXJvdW5kX25lYXJlc3RfZXhuXzY0ID0gaXJvdW5kX25lYXJlc3RfZXhuXzY0XG5lbmRcblxuKCogSW5jbHVkZSB0eXBlLXNwZWNpZmljIFtSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVdIGF0IHRoZSBlbmQsIGFmdGVyXG4gICBpbmNsdWRpbmcgZnVuY3RvciBhcHBsaWNhdGlvbiB0aGF0IGNvdWxkIHNoYWRvdyBpdHMgZGVmaW5pdGlvbnMuIFRoaXMgaXNcbiAgIGhlcmUgc28gdGhhdCBlZmZpY2llbnQgdmVyc2lvbnMgb2YgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb25zIGFyZSBleHBvcnRlZCBieVxuICAgdGhpcyBtb2R1bGUuICopXG5pbmNsdWRlIEZsb2F0X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4oKiBUaGVzZSBmdW5jdGlvbnMgc3BlY2lmaWNhbGx5IHJlcGxhY2UgZGVmYXVsdHMgaW4gcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlLlxuXG4gICBUaGUgZGVzaXJlZCBiZWhhdmlvciBoZXJlIGlzIHRvIHByb3BhZ2F0ZSBhIG5hbiBpZiBlaXRoZXIgYXJndW1lbnQgaXMgbmFuLiBCZWNhdXNlIHRoZVxuICAgZmlyc3QgY29tcGFyaXNvbiB3aWxsIGFsd2F5cyByZXR1cm4gZmFsc2UgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIG5hbiwgaXQgc3VmZmljZXMgdG9cbiAgIGNoZWNrIGlmIHggaXMgbmFuLiBUaGVuLCB3aGVuIHggaXMgbmFuIG9yIGJvdGggeCBhbmQgeSBhcmUgbmFuLCB3ZSByZXR1cm4geCA9IG5hbjsgYW5kXG4gICB3aGVuIHkgaXMgbmFuIGJ1dCBub3QgeCwgd2UgcmV0dXJuIHkgPSBuYW4uXG5cbiAgIFRoZXJlIGFyZSB2YXJpb3VzIHdheXMgdG8gaW1wbGVtZW50IHRoZXNlIGZ1bmN0aW9ucy4gIFRoZSBiZW5jaG1hcmsgYmVsb3cgc2hvd3MgYSBmZXdcbiAgIGRpZmZlcmVudCB2ZXJzaW9ucy4gIFRoaXMgYmVuY2htYXJrIHdhcyBydW4gb3ZlciBhbiBhcnJheSBvZiByYW5kb20gZmxvYXRzIChub25lIG9mXG4gICB3aGljaCBhcmUgbmFuKS5cblxuICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSs4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQXG4gICDilIIgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilIIgVGltZS9SdW4g4pSCXG4gICDilJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKRcbiAgIOKUgiBpZiBpc19uYW4geCB0aGVuIHggZWxzZSBpZiB4IDwgeSB0aGVuIHggZWxzZSB5IOKUgiAgIDIuNDJ1cyDilIJcbiAgIOKUgiBpZiBpc19uYW4geCB8fCB4IDwgeSB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDIuMDJ1cyDilIJcbiAgIOKUgiBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5ICAgICAgICAgICAgIOKUgiAgIDEuODh1cyDilIJcbiAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUtOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmFxuXG4gICBUaGUgYmVuY2htYXJrIGJlbG93IHdhcyBydW4gd2hlbiB4ID4geSBpcyBhbHdheXMgdHJ1ZSAoYWdhaW4sIG5vIG5hbiB2YWx1ZXMpLlxuXG4gICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJBcbiAgIOKUgiBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKUgiBUaW1lL1J1biDilIJcbiAgIOKUnOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUpFxuICAg4pSCIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIGlmIHggPCB5IHRoZW4geCBlbHNlIHkg4pSCICAgMi44M3VzIOKUglxuICAg4pSCIGlmIGlzX25hbiB4IHx8IHggPCB5IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS45N3VzIOKUglxuICAg4pSCIGlmIHggPCB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHkgICAgICAgICAgICAg4pSCICAgMS41NnVzIOKUglxuICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pS04pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYXG4qKVxubGV0IG1pbiAoeCA6IHQpIHkgPSBpZiB4IDwgeSB8fCBpc19uYW4geCB0aGVuIHggZWxzZSB5XG5sZXQgbWF4ICh4IDogdCkgeSA9IGlmIHggPiB5IHx8IGlzX25hbiB4IHRoZW4geCBlbHNlIHlcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCdWZmZXJfaW50ZlxuaW5jbHVkZSBDYW1sLkJ1ZmZlclxuXG5sZXQgY29udGVudHNfYnl0ZXMgPSB0b19ieXRlc1xubGV0IGFkZF9zdWJzdHJpbmcgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJzdHJpbmcgdCBzIHBvcyBsZW5cbmxldCBhZGRfc3ViYnl0ZXMgdCBzIH5wb3MgfmxlbiA9IGFkZF9zdWJieXRlcyB0IHMgcG9zIGxlblxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9zdHJpbmcgKGNvbnRlbnRzIHQpXG5cbm1vZHVsZSBUb19ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQnl0ZXMudFxuXG4gICAgICBsZXQgY3JlYXRlIH5sZW4gPSBCeXRlcy5jcmVhdGUgbGVuXG4gICAgICBsZXQgbGVuZ3RoID0gQnl0ZXMubGVuZ3RoXG5cbiAgICAgIGxldCB1bnNhZmVfYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgICAgIENhbWwuQnVmZmVyLmJsaXQgc3JjIHNyY19wb3MgZHN0IGRzdF9wb3MgbGVuXG4gICAgICA7O1xuICAgIGVuZClcblxuaW5jbHVkZSBUb19ieXRlc1xubW9kdWxlIFRvX3N0cmluZyA9IEJsaXQuTWFrZV90b19zdHJpbmcgKENhbWwuQnVmZmVyKSAoVG9fYnl0ZXMpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTeXMgPSBTeXMwXG5cbnR5cGUgdCA9IENhbWwuUHJpbnRleGMucmF3X2JhY2t0cmFjZVxuXG5sZXQgZWxpZGUgPSByZWYgZmFsc2VcbmxldCBlbGlkZWRfbWVzc2FnZSA9IFwiPGJhY2t0cmFjZSBlbGlkZWQgaW4gdGVzdD5cIlxuXG5sZXQgZ2V0ID8oYXRfbW9zdF9udW1fZnJhbWVzID0gSW50Lm1heF92YWx1ZSkgKCkgPVxuICBDYW1sLlByaW50ZXhjLmdldF9jYWxsc3RhY2sgYXRfbW9zdF9udW1fZnJhbWVzXG47O1xuXG5sZXQgdG9fc3RyaW5nIHQgPVxuICBpZiAhZWxpZGUgdGhlbiBlbGlkZWRfbWVzc2FnZSBlbHNlIENhbWwuUHJpbnRleGMucmF3X2JhY2t0cmFjZV90b19zdHJpbmcgdFxuOztcblxubGV0IHRvX3N0cmluZ19saXN0IHQgPSBTdHJpbmcuc3BsaXRfbGluZXMgKHRvX3N0cmluZyB0KVxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5MaXN0IChMaXN0Lm1hcCAodG9fc3RyaW5nX2xpc3QgdCkgfmY6KGZ1biB4IC0+IFNleHAuQXRvbSB4KSlcblxubW9kdWxlIEV4biA9IHN0cnVjdFxuICBsZXQgc2V0X3JlY29yZGluZyA9IENhbWwuUHJpbnRleGMucmVjb3JkX2JhY2t0cmFjZVxuICBsZXQgYW1fcmVjb3JkaW5nID0gQ2FtbC5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4gIGxldCBtb3N0X3JlY2VudCAoKSA9IENhbWwuUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKClcblxuICBsZXQgbW9zdF9yZWNlbnRfZm9yX2V4biBleG4gPVxuICAgIGlmIEV4bi5pc19waHlzX2VxdWFsX21vc3RfcmVjZW50IGV4biB0aGVuIFNvbWUgKG1vc3RfcmVjZW50ICgpKSBlbHNlIE5vbmVcbiAgOztcblxuICAoKiBXZSB0dXJuIG9uIGJhY2t0cmFjZXMgYnkgZGVmYXVsdCBpZiBPQ0FNTFJVTlBBUkFNIGRvZXNuJ3QgZXhwbGljaXRseSBtZW50aW9uIHRoZW0uICopXG4gIGxldCBtYXliZV9zZXRfcmVjb3JkaW5nICgpID1cbiAgICBsZXQgb2NhbWxydW5wYXJhbV9tZW50aW9uc19iYWNrdHJhY2VzID1cbiAgICAgIG1hdGNoIFN5cy5nZXRlbnYgXCJPQ0FNTFJVTlBBUkFNXCIgd2l0aFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICB8IFNvbWUgeCAtPiBMaXN0LmV4aXN0cyAoU3RyaW5nLnNwbGl0IHggfm9uOicsJykgfmY6KFN0cmluZy5pc19wcmVmaXggfnByZWZpeDpcImJcIilcbiAgICBpblxuICAgIGlmIG5vdCBvY2FtbHJ1bnBhcmFtX21lbnRpb25zX2JhY2t0cmFjZXMgdGhlbiBzZXRfcmVjb3JkaW5nIHRydWVcbiAgOztcblxuICAoKiB0aGUgY2FsbGVyIHNldCBzb21ldGhpbmcsIHRoZXkgYXJlIHJlc3BvbnNpYmxlICopXG5cbiAgbGV0IHdpdGhfcmVjb3JkaW5nIGIgfmYgPVxuICAgIGxldCBzYXZlZCA9IGFtX3JlY29yZGluZyAoKSBpblxuICAgIHNldF9yZWNvcmRpbmcgYjtcbiAgICBFeG4ucHJvdGVjdCB+ZiB+ZmluYWxseTooZnVuICgpIC0+IHNldF9yZWNvcmRpbmcgc2F2ZWQpXG4gIDs7XG5lbmRcblxubGV0IGluaXRpYWxpemVfbW9kdWxlICgpID0gRXhuLm1heWJlX3NldF9yZWNvcmRpbmcgKClcbiIsIigqKiBUaGlzIG1vZHVsZSBpcyB0aGUgdG9wbGV2ZWwgb2YgdGhlIEJhc2UgbGlicmFyeTsgaXQncyB3aGF0IHlvdSBnZXQgd2hlbiB5b3Ugd3JpdGVcbiAgICBbb3BlbiBCYXNlXS5cblxuICAgIFRoZSBnb2FsIG9mIEJhc2UgaXMgYm90aCB0byBiZSBhIG1vcmUgY29tcGxldGUgc3RhbmRhcmQgbGlicmFyeSwgd2l0aCByaWNoZXIgQVBJcyxcbiAgICBhbmQgdG8gYmUgbW9yZSBjb25zaXN0ZW50IGluIGl0cyBkZXNpZ24uIEZvciBpbnN0YW5jZSwgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnlcbiAgICBzb21lIHRoaW5ncyBoYXZlIG1vZHVsZXMgYW5kIG90aGVycyBkb24ndDsgaW4gQmFzZSwgZXZlcnl0aGluZyBpcyBhIG1vZHVsZS5cblxuICAgIEJhc2UgZXh0ZW5kcyBzb21lIG1vZHVsZXMgYW5kIGRhdGEgc3RydWN0dXJlcyBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBsaWtlIFtBcnJheV0sXG4gICAgW0J1ZmZlcl0sIFtCeXRlc10sIFtDaGFyXSwgW0hhc2h0YmxdLCBbSW50MzJdLCBbSW50NjRdLCBbTGF6eV0sIFtMaXN0XSwgW01hcF0sXG4gICAgW05hdGl2ZWludF0sIFtQcmludGZdLCBbUmFuZG9tXSwgW1NldF0sIFtTdHJpbmddLCBbU3lzXSwgYW5kIFtVY2hhcl0uIE9uZSBrZXlcbiAgICBkaWZmZXJlbmNlIGlzIHRoYXQgQmFzZSBkb2Vzbid0IHVzZSBleGNlcHRpb25zIGFzIG11Y2ggYXMgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYW5kXG4gICAgaW5zdGVhZCBtYWtlcyBoZWF2eSB1c2Ugb2YgdGhlIFtSZXN1bHRdIHR5cGUsIGFzIGluOlxuXG4gICAge1sgdHlwZSAoJ2EsJ2IpIHJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2IgXX1cblxuICAgIEJhc2UgYWxzbyBhZGRzIGVudGlyZWx5IG5ldyBtb2R1bGVzLCBtb3N0IG5vdGFibHk6XG5cbiAgICAtIFtDb21wYXJhYmxlXSwgW0NvbXBhcmF0b3JdLCBhbmQgW0NvbXBhcmlzb25zXSBpbiBsaWV1IG9mIHBvbHltb3JwaGljIGNvbXBhcmUuXG4gICAgLSBbQ29udGFpbmVyXSwgd2hpY2ggcHJvdmlkZXMgYSBjb25zaXN0ZW50IGludGVyZmFjZSBhY3Jvc3MgY29udGFpbmVyLWxpa2UgZGF0YVxuICAgICAgc3RydWN0dXJlcyAoYXJyYXlzLCBsaXN0cywgc3RyaW5ncykuXG4gICAgLSBbUmVzdWx0XSwgW0Vycm9yXSwgYW5kIFtPcl9lcnJvcl0sIHN1cHBvcnRpbmcgdGhlIG9yLWVycm9yIHBhdHRlcm4uXG4qKVxuXG4oKl8gV2UgaGlkZSB0aGlzIGZyb20gdGhlIHdlYiBkb2NzIGJlY2F1c2UgdGhlIGxpbmUgd3JhcHBpbmcgaXMgYmFkLCBtYWtpbmcgaXRcbiAgcHJldHR5IG11Y2ggaW5zY3J1dGFibGUuICopXG4oKiovKiopXG5cbigqIFRoZSBpbnRlbnQgaXMgdG8gc2hhZG93IGFsbCBvZiBJTlJJQSdzIHN0YW5kYXJkIGxpYnJhcnkuICBNb2R1bGVzIGJlbG93IHdvdWxkIGNhdXNlXG4gICBjb21waWxhdGlvbiBlcnJvcnMgd2l0aG91dCBiZWluZyByZW1vdmVkIGZyb20gW1NoYWRvd19zdGRsaWJdIGJlZm9yZSBpbmNsdXNpb24uICopXG5cbmluY2x1ZGUgKFxuICBTaGFkb3dfc3RkbGliIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNoYWRvd19zdGRsaWJcbiAgZW5kXG4gICgqIE1vZHVsZXMgZGVmaW5lZCBpbiBCYXNlICopXG4gIHdpdGggbW9kdWxlIEFycmF5IDo9IFNoYWRvd19zdGRsaWIuQXJyYXlcbiAgd2l0aCBtb2R1bGUgQXRvbWljIDo9IFNoYWRvd19zdGRsaWIuQXRvbWljXG4gIHdpdGggbW9kdWxlIEJvb2wgOj0gU2hhZG93X3N0ZGxpYi5Cb29sXG4gIHdpdGggbW9kdWxlIEJ1ZmZlciA6PSBTaGFkb3dfc3RkbGliLkJ1ZmZlclxuICB3aXRoIG1vZHVsZSBCeXRlcyA6PSBTaGFkb3dfc3RkbGliLkJ5dGVzXG4gIHdpdGggbW9kdWxlIENoYXIgOj0gU2hhZG93X3N0ZGxpYi5DaGFyXG4gIHdpdGggbW9kdWxlIEVpdGhlciA6PSBTaGFkb3dfc3RkbGliLkVpdGhlclxuICB3aXRoIG1vZHVsZSBGbG9hdCA6PSBTaGFkb3dfc3RkbGliLkZsb2F0XG4gIHdpdGggbW9kdWxlIEhhc2h0YmwgOj0gU2hhZG93X3N0ZGxpYi5IYXNodGJsXG4gIHdpdGggbW9kdWxlIEluX2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5Jbl9jaGFubmVsXG4gIHdpdGggbW9kdWxlIEludCA6PSBTaGFkb3dfc3RkbGliLkludFxuICB3aXRoIG1vZHVsZSBJbnQzMiA6PSBTaGFkb3dfc3RkbGliLkludDMyXG4gIHdpdGggbW9kdWxlIEludDY0IDo9IFNoYWRvd19zdGRsaWIuSW50NjRcbiAgd2l0aCBtb2R1bGUgTGF6eSA6PSBTaGFkb3dfc3RkbGliLkxhenlcbiAgd2l0aCBtb2R1bGUgTGlzdCA6PSBTaGFkb3dfc3RkbGliLkxpc3RcbiAgd2l0aCBtb2R1bGUgTWFwIDo9IFNoYWRvd19zdGRsaWIuTWFwXG4gIHdpdGggbW9kdWxlIE5hdGl2ZWludCA6PSBTaGFkb3dfc3RkbGliLk5hdGl2ZWludFxuICB3aXRoIG1vZHVsZSBPcHRpb24gOj0gU2hhZG93X3N0ZGxpYi5PcHRpb25cbiAgd2l0aCBtb2R1bGUgT3V0X2NoYW5uZWwgOj0gU2hhZG93X3N0ZGxpYi5PdXRfY2hhbm5lbFxuICB3aXRoIG1vZHVsZSBQcmludGYgOj0gU2hhZG93X3N0ZGxpYi5QcmludGZcbiAgd2l0aCBtb2R1bGUgUXVldWUgOj0gU2hhZG93X3N0ZGxpYi5RdWV1ZVxuICB3aXRoIG1vZHVsZSBSYW5kb20gOj0gU2hhZG93X3N0ZGxpYi5SYW5kb21cbiAgd2l0aCBtb2R1bGUgUmVzdWx0IDo9IFNoYWRvd19zdGRsaWIuUmVzdWx0XG4gIHdpdGggbW9kdWxlIFNldCA6PSBTaGFkb3dfc3RkbGliLlNldFxuICB3aXRoIG1vZHVsZSBTdGFjayA6PSBTaGFkb3dfc3RkbGliLlN0YWNrXG4gIHdpdGggbW9kdWxlIFN0cmluZyA6PSBTaGFkb3dfc3RkbGliLlN0cmluZ1xuICB3aXRoIG1vZHVsZSBTeXMgOj0gU2hhZG93X3N0ZGxpYi5TeXNcbiAgd2l0aCBtb2R1bGUgVWNoYXIgOj0gU2hhZG93X3N0ZGxpYi5VY2hhclxuICB3aXRoIG1vZHVsZSBVbml0IDo9IFNoYWRvd19zdGRsaWIuVW5pdFxuICAoKiBTdXBwb3J0IGZvciBnZW5lcmF0ZWQgbGV4ZXJzICopXG4gIHdpdGggbW9kdWxlIExleGluZyA6PSBTaGFkb3dfc3RkbGliLkxleGluZ1xuICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGZvcm1hdCA6PSAoJ2EsICdiLCAnYykgZm9ybWF0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgOj0gKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0XG4gIHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA6PSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuICB3aXRoIHR5cGUgJ2EgcmVmIDo9ICdhIHJlZikgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuKCoqLyoqKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEFwcGxpY2F0aXZlXG5tb2R1bGUgQXJyYXkgPSBBcnJheVxubW9kdWxlIEF2bHRyZWUgPSBBdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFja3RyYWNlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxpdCA9IEJsaXRcbm1vZHVsZSBCb29sID0gQm9vbFxubW9kdWxlIEJ1ZmZlciA9IEJ1ZmZlclxubW9kdWxlIEJ5dGVzID0gQnl0ZXNcbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3Jcbm1vZHVsZSBDb21wYXJpc29ucyA9IENvbXBhcmlzb25zXG5tb2R1bGUgQ29udGFpbmVyID0gQ29udGFpbmVyXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBFeG5cbm1vZHVsZSBGaWVsZCA9IEZpZWxkXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBIYXNoID0gSGFzaFxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaGVyID0gSGFzaGVyXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbmRleGVkX2NvbnRhaW5lciA9IEluZGV4ZWRfY29udGFpbmVyXG5tb2R1bGUgSW5mbyA9IEluZm9cbm1vZHVsZSBJbnQgPSBJbnRcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBJbnRfY29udmVyc2lvbnNcbm1vZHVsZSBJbnQzMiA9IEludDMyXG5tb2R1bGUgSW50NjMgPSBJbnQ2M1xubW9kdWxlIEludDY0ID0gSW50NjRcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnZhcmlhbnQgPSBJbnZhcmlhbnRcbm1vZHVsZSBMYXp5ID0gTGF6eVxubW9kdWxlIExpc3QgPSBMaXN0XG5tb2R1bGUgTWFwID0gTWFwXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZFxubW9kdWxlIE1vbmFkID0gTW9uYWRcbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb3RoaW5nID0gTm90aGluZ1xubW9kdWxlIE9wdGlvbiA9IE9wdGlvblxubW9kdWxlIE9wdGlvbl9hcnJheSA9IE9wdGlvbl9hcnJheVxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBQb2x5ID0gUG9seVxubW9kdWxlIFBvbHltb3JwaGljX2NvbXBhcmUgPSBQb2x5IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMV0gdXNlIFtQb2x5XSBpbnN0ZWFkXCJdXG5cbm1vZHVsZSBQb3Bjb3VudCA9IFBvcGNvdW50XG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTBdIHVzZSBbcG9wY291bnRdIGZ1bmN0aW9ucyBpbiB0aGUgaW5kaXZpZHVhbCBpbnQgbW9kdWxlc1wiXVxuXG5tb2R1bGUgUHJldHR5X3ByaW50ZXIgPSBQcmV0dHlfcHJpbnRlclxubW9kdWxlIFByaW50ZiA9IFByaW50ZlxubW9kdWxlIExpbmtlZF9xdWV1ZSA9IExpbmtlZF9xdWV1ZVxubW9kdWxlIFF1ZXVlID0gUXVldWVcbm1vZHVsZSBSYW5kb20gPSBSYW5kb21cbm1vZHVsZSBSZWYgPSBSZWZcbm1vZHVsZSBSZXN1bHQgPSBSZXN1bHRcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZVxubW9kdWxlIFNpZ24gPSBTaWduXG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBTaWduX29yX25hblxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb25cbm1vZHVsZSBTdGFjayA9IFN0YWNrXG5tb2R1bGUgU3RhZ2VkID0gU3RhZ2VkXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nYWJsZSA9IFN0cmluZ2FibGVcbm1vZHVsZSBTeXMgPSBTeXNcbm1vZHVsZSBUID0gVFxubW9kdWxlIFR5cGVfZXF1YWwgPSBUeXBlX2VxdWFsXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IFVuaWZvcm1fYXJyYXlcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVjaGFyID0gVWNoYXJcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBXb3JkX3NpemVcblxuKCogQXZvaWQgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiBmb3IgdXNlcyBvZiB0aGUgc2lnbmF0dXJlcyBkZWZpbmVkIGluIFtUXS4gKilcbmluY2x1ZGUgVFxuXG4oKiBUaGlzIGlzIGEgaGFjayBzbyB0aGF0IG9kb2MgY3JlYXRlcyBiZXR0ZXIgZG9jdW1lbnRhdGlvbi4gKilcbm1vZHVsZSBTZXhwID0gc3RydWN0XG4gIGluY2x1ZGUgU2V4cF93aXRoX2NvbXBhcmFibGUgKCoqIEBpbmxpbmUgKilcbmVuZFxuXG4oKiovKiopXG5cbm1vZHVsZSBFeHBvcnRlZF9mb3Jfc3BlY2lmaWNfdXNlcyA9IHN0cnVjdFxuICBtb2R1bGUgRmllbGRzbGliID0gRmllbGRzbGliXG4gIG1vZHVsZSBQcHhfaGFzaF9saWIgPSBQcHhfaGFzaF9saWJcbiAgbW9kdWxlIFZhcmlhbnRzbGliID0gVmFyaWFudHNsaWJcbiAgbW9kdWxlIFBweF9jb21wYXJlX2xpYiA9IFBweF9jb21wYXJlX2xpYlxuICBtb2R1bGUgUHB4X2VudW1lcmF0ZV9saWIgPSBQcHhfZW51bWVyYXRlX2xpYlxuXG4gIGxldCBhbV90ZXN0aW5nID0gYW1fdGVzdGluZ1xuZW5kXG5cbigqKi8qKilcblxubW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAoKiBbZGVyaXZpbmcgaGFzaF0gaXMgbWlzc2luZyBmb3IgW2FycmF5XSBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIGFycmF5IC0+ICdhIGFycmF5IC0+IGludCA9IEFycmF5LmNvbXBhcmVcbiAgbGV0IGVxdWFsX2FycmF5IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBhcnJheSAtPiAnYSBhcnJheSAtPiBib29sID0gQXJyYXkuZXF1YWxcblxuICBsZXQgYXJyYXlfb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2EgYXJyYXkgPVxuICAgIEFycmF5LnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX2FycmF5IDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIGFycmF5IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgQXJyYXkuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChhcnJheV9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgYXJyYXkgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpXG4gICAgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IEFycmF5LnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgYm9vbCA9IEJvb2wudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9ib29sID0gKEJvb2wuY29tcGFyZSA6IGJvb2wgLT4gYm9vbCAtPiBpbnQpXG4gIGxldCBlcXVhbF9ib29sID0gKEJvb2wuZXF1YWwgOiBib29sIC0+IGJvb2wgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9ib29sIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBib29sIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgQm9vbC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9ib29sIDogYm9vbCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gQm9vbC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGJvb2xfb2Zfc2V4cCA9IChCb29sLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBib29sKVxuICBsZXQgc2V4cF9vZl9ib29sID0gKEJvb2wuc2V4cF9vZl90IDogYm9vbCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoYm9vbF9zZXhwX2dyYW1tYXIgOiBib29sIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEJvb2wudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgY2hhciA9IENoYXIudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9jaGFyID0gKENoYXIuY29tcGFyZSA6IGNoYXIgLT4gY2hhciAtPiBpbnQpXG4gIGxldCBlcXVhbF9jaGFyID0gKENoYXIuZXF1YWwgOiBjaGFyIC0+IGNoYXIgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9jaGFyIDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBjaGFyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgQ2hhci5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9jaGFyIDogY2hhciAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gQ2hhci5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGNoYXJfb2Zfc2V4cCA9IChDaGFyLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBjaGFyKVxuICBsZXQgc2V4cF9vZl9jaGFyID0gKENoYXIuc2V4cF9vZl90IDogY2hhciAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoY2hhcl9zZXhwX2dyYW1tYXIgOiBjaGFyIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IENoYXIudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgZXhuID0gRXhuLnQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbiAgbGV0IHNleHBfb2ZfZXhuID0gKEV4bi5zZXhwX29mX3QgOiBleG4gLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfZmxvYXQgPSAoRmxvYXQuY29tcGFyZSA6IGZsb2F0IC0+IGZsb2F0IC0+IGludClcbiAgbGV0IGVxdWFsX2Zsb2F0ID0gKEZsb2F0LmVxdWFsIDogZmxvYXQgLT4gZmxvYXQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9mbG9hdCA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gZmxvYXQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBGbG9hdC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9mbG9hdCA6IGZsb2F0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBGbG9hdC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGZsb2F0X29mX3NleHAgPSAoRmxvYXQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGZsb2F0KVxuICBsZXQgc2V4cF9vZl9mbG9hdCA9IChGbG9hdC5zZXhwX29mX3QgOiBmbG9hdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoZmxvYXRfc2V4cF9ncmFtbWFyIDogZmxvYXQgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50ID0gSW50LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50ID0gKEludC5jb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQgPSAoSW50LmVxdWFsIDogaW50IC0+IGludCAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX2ludCA6IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKSA9XG4gICAgSW50Lmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX2ludCA6IGludCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50Lmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgaW50X29mX3NleHAgPSAoSW50LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQpXG4gIGxldCBzZXhwX29mX2ludCA9IChJbnQuc2V4cF9vZl90IDogaW50IC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChpbnRfc2V4cF9ncmFtbWFyIDogaW50IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludC50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBpbnQzMiA9IEludDMyLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfaW50MzIgPSAoSW50MzIuY29tcGFyZSA6IGludDMyIC0+IGludDMyIC0+IGludClcbiAgbGV0IGVxdWFsX2ludDMyID0gKEludDMyLmVxdWFsIDogaW50MzIgLT4gaW50MzIgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF9pbnQzMiA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gaW50MzIgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBJbnQzMi5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF9pbnQzMiA6IGludDMyIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBJbnQzMi5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IGludDMyX29mX3NleHAgPSAoSW50MzIudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGludDMyKVxuICBsZXQgc2V4cF9vZl9pbnQzMiA9IChJbnQzMi5zZXhwX29mX3QgOiBpbnQzMiAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoaW50MzJfc2V4cF9ncmFtbWFyIDogaW50MzIgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gSW50MzIudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgaW50NjQgPSBJbnQ2NC50IFtAQGRlcml2aW5nX2lubGluZSBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gIGxldCBjb21wYXJlX2ludDY0ID0gKEludDY0LmNvbXBhcmUgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQpXG4gIGxldCBlcXVhbF9pbnQ2NCA9IChJbnQ2NC5lcXVhbCA6IGludDY0IC0+IGludDY0IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfaW50NjQgOlxuICAgICAgICAgUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlIC0+IGludDY0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgSW50NjQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfaW50NjQgOiBpbnQ2NCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gSW50NjQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBpbnQ2NF9vZl9zZXhwID0gKEludDY0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBpbnQ2NClcbiAgbGV0IHNleHBfb2ZfaW50NjQgPSAoSW50NjQuc2V4cF9vZl90IDogaW50NjQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICBsZXQgKGludDY0X3NleHBfZ3JhbW1hciA6IGludDY0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IEludDY0LnRfc2V4cF9ncmFtbWFyXG5cbiAgW0BAQGVuZF1cblxuICB0eXBlICdhIGxpc3QgPSAnYSBMaXN0LnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfbGlzdCA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gaW50ID0gTGlzdC5jb21wYXJlXG4gIGxldCBlcXVhbF9saXN0IDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgLT4gYm9vbCA9IExpc3QuZXF1YWxcblxuICBsZXQgaGFzaF9mb2xkX2xpc3QgOlxuICAgICdhLlxuICAgIChQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gJ2EgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZVxuICAgIC0+ICdhIGxpc3RcbiAgICAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGVcbiAgICA9XG4gICAgTGlzdC5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCBsaXN0X29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIGxpc3QgPVxuICAgIExpc3QudF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfbGlzdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSBsaXN0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gICAgTGlzdC5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgKGxpc3Rfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgbGlzdCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIGZ1biBfJ2Ffc2V4cF9ncmFtbWFyIC0+IExpc3QudF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBuYXRpdmVpbnQgPSBOYXRpdmVpbnQudFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9uYXRpdmVpbnQgPSAoTmF0aXZlaW50LmNvbXBhcmUgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGludClcbiAgbGV0IGVxdWFsX25hdGl2ZWludCA9IChOYXRpdmVpbnQuZXF1YWwgOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IGJvb2wpXG5cbiAgbGV0IChoYXNoX2ZvbGRfbmF0aXZlaW50IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiBuYXRpdmVpbnQgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlKVxuICAgID1cbiAgICBOYXRpdmVpbnQuaGFzaF9mb2xkX3RcblxuICBhbmQgKGhhc2hfbmF0aXZlaW50IDogbmF0aXZlaW50IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5oYXNoX3ZhbHVlKSA9XG4gICAgbGV0IGZ1bmMgPSBOYXRpdmVpbnQuaGFzaCBpblxuICAgIGZ1biB4IC0+IGZ1bmMgeFxuICA7O1xuXG4gIGxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IChOYXRpdmVpbnQudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IG5hdGl2ZWludClcbiAgbGV0IHNleHBfb2ZfbmF0aXZlaW50ID0gKE5hdGl2ZWludC5zZXhwX29mX3QgOiBuYXRpdmVpbnQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG4gIGxldCAobmF0aXZlaW50X3NleHBfZ3JhbW1hciA6IG5hdGl2ZWludCBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCkgPVxuICAgIE5hdGl2ZWludC50X3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSBvcHRpb24gPSAnYSBPcHRpb24udFxuICBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9vcHRpb24gOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBpbnQgPVxuICAgIE9wdGlvbi5jb21wYXJlXG4gIDs7XG5cbiAgbGV0IGVxdWFsX29wdGlvbiA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2Egb3B0aW9uIC0+ICdhIG9wdGlvbiAtPiBib29sID1cbiAgICBPcHRpb24uZXF1YWxcbiAgOztcblxuICBsZXQgaGFzaF9mb2xkX29wdGlvbiA6XG4gICAgJ2EuXG4gICAgKFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiAnYSAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUpXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgLT4gJ2Egb3B0aW9uXG4gICAgLT4gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLnN0YXRlXG4gICAgPVxuICAgIE9wdGlvbi5oYXNoX2ZvbGRfdFxuICA7O1xuXG4gIGxldCBvcHRpb25fb2Zfc2V4cCA6ICdhLiAoU2V4cGxpYjAuU2V4cC50IC0+ICdhKSAtPiBTZXhwbGliMC5TZXhwLnQgLT4gJ2Egb3B0aW9uID1cbiAgICBPcHRpb24udF9vZl9zZXhwXG4gIDs7XG5cbiAgbGV0IHNleHBfb2Zfb3B0aW9uIDogJ2EuICgnYSAtPiBTZXhwbGliMC5TZXhwLnQpIC0+ICdhIG9wdGlvbiAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIE9wdGlvbi5zZXhwX29mX3RcbiAgOztcblxuICBsZXQgKG9wdGlvbl9zZXhwX2dyYW1tYXIgOlxuICAgICAgICAgJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2Egb3B0aW9uIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KVxuICAgID1cbiAgICBmdW4gXydhX3NleHBfZ3JhbW1hciAtPiBPcHRpb24udF9zZXhwX2dyYW1tYXIgXydhX3NleHBfZ3JhbW1hclxuICA7O1xuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV9yZWYgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgcmVmIC0+ICdhIHJlZiAtPiBpbnQgPSBSZWYuY29tcGFyZVxuICBsZXQgZXF1YWxfcmVmIDogJ2EuICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSByZWYgLT4gJ2EgcmVmIC0+IGJvb2wgPSBSZWYuZXF1YWxcblxuICBsZXQgcmVmX29mX3NleHAgOiAnYS4gKFNleHBsaWIwLlNleHAudCAtPiAnYSkgLT4gU2V4cGxpYjAuU2V4cC50IC0+ICdhIHJlZiA9XG4gICAgUmVmLnRfb2Zfc2V4cFxuICA7O1xuXG4gIGxldCBzZXhwX29mX3JlZiA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSByZWYgLT4gU2V4cGxpYjAuU2V4cC50ID1cbiAgICBSZWYuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IChyZWZfc2V4cF9ncmFtbWFyIDogJ2EgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQgLT4gJ2EgcmVmIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9XG4gICAgZnVuIF8nYV9zZXhwX2dyYW1tYXIgLT4gUmVmLnRfc2V4cF9ncmFtbWFyIF8nYV9zZXhwX2dyYW1tYXJcbiAgOztcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgc3RyaW5nID0gU3RyaW5nLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfc3RyaW5nID0gKFN0cmluZy5jb21wYXJlIDogc3RyaW5nIC0+IHN0cmluZyAtPiBpbnQpXG4gIGxldCBlcXVhbF9zdHJpbmcgPSAoU3RyaW5nLmVxdWFsIDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sKVxuXG4gIGxldCAoaGFzaF9mb2xkX3N0cmluZyA6XG4gICAgICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guc3RhdGUgLT4gc3RyaW5nIC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgU3RyaW5nLmhhc2hfZm9sZF90XG5cbiAgYW5kIChoYXNoX3N0cmluZyA6IHN0cmluZyAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gU3RyaW5nLmhhc2ggaW5cbiAgICBmdW4geCAtPiBmdW5jIHhcbiAgOztcblxuICBsZXQgc3RyaW5nX29mX3NleHAgPSAoU3RyaW5nLnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiBzdHJpbmcpXG4gIGxldCBzZXhwX29mX3N0cmluZyA9IChTdHJpbmcuc2V4cF9vZl90IDogc3RyaW5nIC0+IFNleHBsaWIwLlNleHAudClcbiAgbGV0IChzdHJpbmdfc2V4cF9ncmFtbWFyIDogc3RyaW5nIFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFN0cmluZy50X3NleHBfZ3JhbW1hclxuXG4gIFtAQEBlbmRdXG5cbiAgdHlwZSBieXRlcyA9IEJ5dGVzLnQgW0BAZGVyaXZpbmdfaW5saW5lIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgbGV0IGNvbXBhcmVfYnl0ZXMgPSAoQnl0ZXMuY29tcGFyZSA6IGJ5dGVzIC0+IGJ5dGVzIC0+IGludClcbiAgbGV0IGVxdWFsX2J5dGVzID0gKEJ5dGVzLmVxdWFsIDogYnl0ZXMgLT4gYnl0ZXMgLT4gYm9vbClcbiAgbGV0IGJ5dGVzX29mX3NleHAgPSAoQnl0ZXMudF9vZl9zZXhwIDogU2V4cGxpYjAuU2V4cC50IC0+IGJ5dGVzKVxuICBsZXQgc2V4cF9vZl9ieXRlcyA9IChCeXRlcy5zZXhwX29mX3QgOiBieXRlcyAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAoYnl0ZXNfc2V4cF9ncmFtbWFyIDogYnl0ZXMgU2V4cGxpYjAuU2V4cF9ncmFtbWFyLnQpID0gQnl0ZXMudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gIHR5cGUgdW5pdCA9IFVuaXQudCBbQEBkZXJpdmluZ19pbmxpbmUgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICBsZXQgY29tcGFyZV91bml0ID0gKFVuaXQuY29tcGFyZSA6IHVuaXQgLT4gdW5pdCAtPiBpbnQpXG4gIGxldCBlcXVhbF91bml0ID0gKFVuaXQuZXF1YWwgOiB1bml0IC0+IHVuaXQgLT4gYm9vbClcblxuICBsZXQgKGhhc2hfZm9sZF91bml0IDpcbiAgICAgICAgIFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSAtPiB1bml0IC0+IFBweF9oYXNoX2xpYi5TdGQuSGFzaC5zdGF0ZSlcbiAgICA9XG4gICAgVW5pdC5oYXNoX2ZvbGRfdFxuXG4gIGFuZCAoaGFzaF91bml0IDogdW5pdCAtPiBQcHhfaGFzaF9saWIuU3RkLkhhc2guaGFzaF92YWx1ZSkgPVxuICAgIGxldCBmdW5jID0gVW5pdC5oYXNoIGluXG4gICAgZnVuIHggLT4gZnVuYyB4XG4gIDs7XG5cbiAgbGV0IHVuaXRfb2Zfc2V4cCA9IChVbml0LnRfb2Zfc2V4cCA6IFNleHBsaWIwLlNleHAudCAtPiB1bml0KVxuICBsZXQgc2V4cF9vZl91bml0ID0gKFVuaXQuc2V4cF9vZl90IDogdW5pdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCAodW5pdF9zZXhwX2dyYW1tYXIgOiB1bml0IFNleHBsaWIwLlNleHBfZ3JhbW1hci50KSA9IFVuaXQudF9zZXhwX2dyYW1tYXJcblxuICBbQEBAZW5kXVxuXG4gICgqKiBGb3JtYXQgc3R1ZmYgKilcblxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MpIGZvcm1hdFxuICB0eXBlIG5vbnJlYyAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDRcbiAgdHlwZSBub25yZWMgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NlxuXG4gICgqKiBMaXN0IG9wZXJhdG9ycyAqKVxuXG4gIGluY2x1ZGUgTGlzdC5JbmZpeFxuXG4gICgqKiBJbnQgb3BlcmF0b3JzIGFuZCBjb21wYXJpc29ucyAqKVxuXG4gIGluY2x1ZGUgSW50Lk9cbiAgaW5jbHVkZSBJbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgKCoqIEZsb2F0IG9wZXJhdG9ycyAqKVxuXG4gIGluY2x1ZGUgRmxvYXQuT19kb3RcblxuICAoKiBUaGlzIGlzIGRlY2xhcmVkIGFzIGFuIGV4dGVybmFsIHRvIGJlIG9wdGltaXplZCBhd2F5IGluIG1vcmUgY29udGV4dHMuICopXG5cbiAgKCoqIFJldmVyc2UgYXBwbGljYXRpb24gb3BlcmF0b3IuIFt4IHw+IGcgfD4gZl0gaXMgZXF1aXZhbGVudCB0byBbZiAoZyAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcblxuICAoKiogQXBwbGljYXRpb24gb3BlcmF0b3IuIFtnIEBAIGYgQEAgeF0gaXMgZXF1aXZhbGVudCB0byBbZyAoZiAoeCkpXS4gKilcbiAgZXh0ZXJuYWwgKCBAQCApIDogKCdhIC0+ICdiKSAtPiAnYSAtPiAnYiA9IFwiJWFwcGx5XCJcblxuICAoKiogQm9vbGVhbiBvcGVyYXRpb25zICopXG5cbiAgKCogVGhlc2UgbmVlZCB0byBiZSBkZWNsYXJlZCBhcyBhbiBleHRlcm5hbCB0byBnZXQgdGhlIGxhenkgYmVoYXZpb3IgKilcbiAgZXh0ZXJuYWwgKCAmJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbiAgZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuICBleHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcblxuICAoKiBUaGlzIG11c3QgYmUgZGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgZm9yIHRoZSB3YXJuaW5ncyB0byB3b3JrIHByb3Blcmx5LiAqKVxuICBleHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4gICgqKiBDb21tb24gc3RyaW5nIG9wZXJhdGlvbnMgKilcbiAgbGV0ICggXiApID0gU3RyaW5nLiggXiApXG5cbiAgKCoqIFJlZmVyZW5jZSBvcGVyYXRpb25zICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWxzIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNraXBzIHRoZSBjYW1sX21vZGlmeSB3aGVuIHBvc3NpYmxlIGFuZFxuICAgICB0byBrZWVwIHJlZmVyZW5jZSB1bmJveGluZyB3b3JraW5nICopXG4gIGV4dGVybmFsICggISApIDogJ2EgcmVmIC0+ICdhID0gXCIlZmllbGQwXCJcbiAgZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuICBleHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5cbiAgKCoqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG4gIGxldCBmc3QgPSBmc3RcbiAgbGV0IHNuZCA9IHNuZFxuXG4gICgqKiBFeGNlcHRpb25zIHN0dWZmICopXG5cbiAgKCogRGVjbGFyZWQgYXMgYW4gZXh0ZXJuYWwgc28gdGhhdCB0aGUgY29tcGlsZXIgbWF5IHJld3JpdGUgJyVyYWlzZScgYXMgJyVyZXJhaXNlJy4gKilcbiAgZXh0ZXJuYWwgcmFpc2UgOiBleG4gLT4gXyA9IFwiJXJhaXNlXCJcblxuICBsZXQgZmFpbHdpdGggPSBmYWlsd2l0aFxuICBsZXQgaW52YWxpZF9hcmcgPSBpbnZhbGlkX2FyZ1xuICBsZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcblxuICAoKiogTWlzYyAqKVxuXG4gIGxldCBwaHlzX2VxdWFsID0gcGh5c19lcXVhbFxuXG4gIGV4dGVybmFsIGZvcmNlIDogJ2EgTGF6eS50IC0+ICdhID0gXCIlbGF6eV9mb3JjZVwiXG5lbmRcblxuaW5jbHVkZSBFeHBvcnRcblxuaW5jbHVkZSBDb250YWluZXJfaW50Zi5FeHBvcnQgKCoqIEBpbmxpbmUgKilcblxuZXhjZXB0aW9uIE5vdF9mb3VuZF9zID0gTm90X2ZvdW5kX3NcblxuKCogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgW0Jhc2VdLiAgSWYgdGhpcyB3ZXJlIGluIGFub3RoZXIgbW9kdWxlIGluIFtCYXNlXSB0aGF0IHdhcyBub3QgdXNlZCBpbiBzb21lIHByb2dyYW0sXG4gICB0aGVuIHRoZSBzaWRlIGVmZmVjdHMgbWlnaHQgbm90IGJlIHJ1biBpbiB0aGF0IHByb2dyYW0uICBUaGlzIHdpbGwgcnVuIGFzIGxvbmcgYXMgdGhlXG4gICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gW0Jhc2VdOyByZWZlcnJpbmcgdG8gdmFsdWVzIGluXG4gICBbQmFzZS5Cb29sXSwgZm9yIGV4YW1wbGUsIGlzIG5vdCBzdWZmaWNpZW50LiAqKVxubGV0ICgpID0gQmFja3RyYWNlLmluaXRpYWxpemVfbW9kdWxlICgpXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCJpbmNsdWRlIE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuXG5sZXQgc2V0X2lucHV0X25hbWUgbmFtZSA9IGlucHV0X25hbWUgOj0gbmFtZVxuXG5tb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgW0BAQHdhcm5pbmcgXCItMzdcIl1cblxuICB0eXBlIG9sZF90ICgqSUZfTk9UX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSA9IHtcbiAgICBsb2M6IHQ7XG4gICAgbXNnOiBzdHJpbmc7XG4gICAgc3ViOiBvbGRfdCBsaXN0O1xuICAgIGlmX2hpZ2hsaWdodDogc3RyaW5nO1xuICB9XG5cbiAgdHlwZSBsb2NhdGlvbl9yZXBvcnRfa2luZCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5yZXBvcnRfa2luZCAqKSA9XG4gIHwgUmVwb3J0X2Vycm9yXG4gIHwgUmVwb3J0X3dhcm5pbmcgb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X3dhcm5pbmdfYXNfZXJyb3Igb2Ygc3RyaW5nXG4gIHwgUmVwb3J0X2FsZXJ0IG9mIHN0cmluZ1xuICB8IFJlcG9ydF9hbGVydF9hc19lcnJvciBvZiBzdHJpbmdcblxuICB0eXBlIGxvY2F0aW9uX21zZyA9IChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpIGxvY1xuXG4gIHR5cGUgbG9jYXRpb25fcmVwb3J0ICgqSUZfQVRfTEVBU1QgNDA4ID0gT2NhbWxfY29tbW9uLkxvY2F0aW9uLnJlcG9ydCAqKSA9IHtcbiAgICBraW5kIDogbG9jYXRpb25fcmVwb3J0X2tpbmQ7XG4gICAgbWFpbiA6IGxvY2F0aW9uX21zZztcbiAgICBzdWIgOiBsb2NhdGlvbl9tc2cgbGlzdDtcbiAgfVxuXG4gIHR5cGUgdCAoKklGX0FUX0xFQVNUIDQwOCA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvbi5lcnJvciAqKSAoKklGX05PVF9BVF9MRUFTVCA0MDggPSBvbGRfdCAqKVxuICAoKiogT24gb2NhbWwgPj0gNC4wODogW3RdIGlzIGEgW2xvY2F0aW9uX3JlcG9ydF0gZm9yIHdoaWNoIFtsb2NhdGlvbl9yZXBvcnRfa2luZF0gbXVzdCBiZSBbUmVwb3J0X2Vycm9yXS4gKilcblxuICB0eXBlIHZlcnNpb25fc3BlY2lmaWNfdCA9IFtgTmV3X2Vycm9yIG9mIGxvY2F0aW9uX3JlcG9ydCB8IGBPbGRfZXJyb3Igb2Ygb2xkX3RdXG5cbiAgbGV0IHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IDogdCAtPiB2ZXJzaW9uX3NwZWNpZmljX3QgPSBmdW4geCAtPlxuICAgICgqSUZfQVRfTEVBU1QgNDA4IGBOZXdfZXJyb3IgeCAqKVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBgT2xkX2Vycm9yIHggKilcblxuICBsZXQgaXNfd2VsbF9mb3JtZWQgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBraW5kID0gUmVwb3J0X2Vycm9yOyBfIH0gLT4gdHJ1ZVxuICAgIHwgYE5ld19lcnJvciBfIC0+IGZhbHNlXG4gICAgfCBgT2xkX2Vycm9yIF8gLT4gdHJ1ZVxuXG4gIGxldCBzdHJpbmdfb2ZfbG9jYXRpb25fbXNnIChtc2cgOiBsb2NhdGlvbl9tc2cpID0gRm9ybWF0LmFzcHJpbnRmIFwiJXRcIiBtc2cudHh0XG5cbiAgbGV0IG1haW5fbXNnIGVycm9yID1cbiAgICBtYXRjaCB2ZXJzaW9uX3NwZWNpZmljX3Rfb2ZfdCBlcnJvciB3aXRoXG4gICAgfCBgTmV3X2Vycm9yIHsgbWFpbjsgXyB9IC0+XG4gICAgICAgIHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBtYWluOyBsb2MgPSBtYWluLmxvYyB9XG4gICAgfCBgT2xkX2Vycm9yIHsgbXNnOyBsb2M7IF8gfSAtPiB7IHR4dCA9IG1zZzsgbG9jIH1cblxuICBsZXQgc3ViX21zZ3MgZXJyb3IgPVxuICAgIG1hdGNoIHZlcnNpb25fc3BlY2lmaWNfdF9vZl90IGVycm9yIHdpdGhcbiAgICB8IGBOZXdfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gZXJyIC0+IHsgdHh0ID0gc3RyaW5nX29mX2xvY2F0aW9uX21zZyBlcnI7IGxvYyA9IGVyci5sb2MgfSlcbiAgICAgICAgICBzdWJcbiAgICB8IGBPbGRfZXJyb3IgeyBzdWI7IF8gfSAtPlxuICAgICAgICBsZXQgcmVjIGRlZXBseV9mbGF0dGVuZWRfc3ViX21zZ3MgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFtdIC0+IGFjY1xuICAgICAgICAgIHwgeyBsb2M7IG1zZzsgc3ViOyBfIH0gOjogdGFpbCAtPlxuICAgICAgICAgICAgICBkZWVwbHlfZmxhdHRlbmVkX3N1Yl9tc2dzICh7IHR4dCA9IG1zZzsgbG9jIH0gOjogYWNjKSAoc3ViIEAgdGFpbClcbiAgICAgICAgaW5cbiAgICAgICAgZGVlcGx5X2ZsYXR0ZW5lZF9zdWJfbXNncyBbXSBzdWJcblxuICBsZXQgb2ZfZXhuIGV4biA9XG4gICAgKCpJRl9BVF9MRUFTVCA0MDYgbWF0Y2ggZXJyb3Jfb2ZfZXhuIGV4biB3aXRoIHwgU29tZSAoYE9rIGUpIC0+IFNvbWUgZSB8IE5vbmUgfCBTb21lIGBBbHJlYWR5X2Rpc3BsYXllZCAtPiBOb25lICopXG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA2IGVycm9yX29mX2V4biBleG4qKVxuXG4gIGxldCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cgPSB7IGVycm9yIHdpdGggbXNnIH1cblxuICBsZXQgX3NldF9tYWluX21zZ19uZXcgZXJyb3IgbXNnID1cbiAgICBsZXQgdHh0IHBwZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmIG1zZyBpblxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggdHh0IH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX21zZyBlcnJvciBtc2cgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbXNnX29sZCBlcnJvciBtc2cqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9tc2dfbmV3IGVycm9yIG1zZyopXG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgc3ViID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geyBsb2M7IHR4dCB9IC0+IHsgbG9jOyBtc2cgPSB0eHQ7IHN1YiA9IFtdOyBpZl9oaWdobGlnaHQgPSB0eHQgfSlcbiAgICAgICAgc3ViXG4gICAgaW5cbiAgICB7IGxvYzsgbXNnID0gdHh0OyBzdWI7IGlmX2hpZ2hsaWdodCA9IHR4dCB9XG5cbiAgbGV0IF9tYWtlX2Vycm9yX29mX21lc3NhZ2VfbmV3IH5zdWIgeyBsb2M7IHR4dCB9ID1cbiAgICBsZXQgbWtfdHh0IHggcHBmID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBwcGYgeCBpblxuICAgIGxldCBtayBsb2MgeCA9IHsgbG9jOyB0eHQgPSBta190eHQgeCB9IGluXG4gICAge1xuICAgICAga2luZCA9IFJlcG9ydF9lcnJvcjtcbiAgICAgIG1haW4gPSBtayBsb2MgdHh0O1xuICAgICAgc3ViID0gTGlzdC5tYXAgKGZ1biB7IGxvYzsgdHh0IH0gLT4gbWsgbG9jIHR4dCkgc3ViO1xuICAgIH1cblxuICBsZXQgbWFrZSB+c3ViIG1zZyA9XG4gICAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4IF9tYWtlX2Vycm9yX29mX21lc3NhZ2Vfb2xkIH5zdWIgbXNnKilcbiAgICAoKklGX0FUX0xFQVNUIDQwOCBfbWFrZV9lcnJvcl9vZl9tZXNzYWdlX25ldyB+c3ViIG1zZyopXG5cbiAgbGV0IF9zZXRfbWFpbl9sb2Nfb2xkIGVycm9yIGxvYyA9IHsgZXJyb3Igd2l0aCBsb2MgfVxuXG4gIGxldCBfc2V0X21haW5fbG9jX25ldyBlcnJvciBsb2MgPVxuICAgIGxldCBtYWluID0geyBlcnJvci5tYWluIHdpdGggbG9jIH0gaW5cbiAgICB7IGVycm9yIHdpdGggbWFpbiB9XG5cbiAgbGV0IHNldF9tYWluX2xvYyBlcnJvciBsb2MgPVxuICAgICgqSUZfTk9UX0FUX0xFQVNUIDQwOCBfc2V0X21haW5fbG9jX29sZCBlcnJvciBsb2MqKVxuICAgICgqSUZfQVRfTEVBU1QgNDA4IF9zZXRfbWFpbl9sb2NfbmV3IGVycm9yIGxvYyopXG5lbmRcblxubGV0IHJhaXNlX2Vycm9yZiA/bG9jIG1zZyA9IHJhaXNlX2Vycm9yZiA/bG9jIG1zZ1xuIiwiaW5jbHVkZSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG5cbmxldCBwYXJzZSBzID1cbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDExIHBhcnNlIHMgKilcbiAgKCpJRl9BVF9MRUFTVCA0MTEgT2NhbWxfY29tbW9uLlBhcnNlLmxvbmdpZGVudCBAQCBMZXhpbmcuZnJvbV9zdHJpbmcgQEAgcyAqKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3QgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmdcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb24gICgqKiBbKHZhbCBFKV0gKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbRV0gKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFtQc3RyX3ZhbHVlKHJlYywgWyhQMSwgRTEgOyAuLi4gOyAoUG4sIEVuKSldKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTl1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuTm9ucmVjdXJzaXZlfVtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAgICAgLSBbbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiBdKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvbiAgKCoqIFt0eXBlIHQxICs9IC4uLl0gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAgICgqKiAtIFtleGNlcHRpb24gQyBvZiBUXVxuICAgICAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nICAoKiogW21vZHVsZSBYID0gTUVdICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAgKCoqIFtvcGVuIFhdICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLl0gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvbiAgKCoqIFtpbmNsdWRlIE1FXSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMxXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMxXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgVGhvbWFzIEdhemFnbmFpcmUsIE9DYW1sUHJvICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgRmFicmljZSBMZSBGZXNzYW50LCBJTlJJQSBTYWNsYXkgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBIb25nYm8gWmhhbmcsIFVuaXZlcnNpdHkgb2YgUGVubnN5bHZhbmlhICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBPcmlnaW5hbCBDb2RlIGZyb20gQmVyLW1ldGFvY2FtbCwgbW9kaWZpZWQgZm9yIDMuMTIuMCBhbmQgZml4ZWQgKilcbigqIFByaW50aW5nIGNvZGUgZXhwcmVzc2lvbnMgKilcbigqIEF1dGhvcnM6ICBFZCBQaXp6aSwgRmFicmljZSBMZSBGZXNzYW50ICopXG4oKiBFeHRlbnNpdmUgUmV3cml0ZTogSG9uZ2JvIFpoYW5nOiBVbml2ZXJzaXR5IG9mIFBlbm5zeWx2YW5pYSAqKVxuKCogVE9ETyBtb3JlIGZpbmUtZ3JhaW5lZCBwcmVjZWRlbmNlIHByZXR0eS1wcmludGluZyAqKVxuXG5vcGVuIEFzdF80MTRcbm9wZW4gQXN0dHlwZXNcbm9wZW4gRm9ybWF0XG5vcGVuIExvY2F0aW9uXG5vcGVuIExvbmdpZGVudFxub3BlbiBQYXJzZXRyZWVcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IGRlZmF1bHQgfCBTb21lIHggLT4geFxuZW5kXG5cbmxldCB2YXJpZnlfdHlwZV9jb25zdHJ1Y3RvcnMgdmFyX25hbWVzIHQgPVxuICBsZXQgY2hlY2tfdmFyaWFibGUgdmwgbG9jIHYgPVxuICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJ2YXJpYWJsZSBpbiBzY29wZSBzeW50YXggZXJyb3I6ICVzXCIgdlxuICBpblxuICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgbGV0IHJlYyBsb29wIHQgPVxuICAgIGxldCBkZXNjID1cbiAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgIHwgUHR5cF9hbnkgLT4gUHR5cF9hbnlcbiAgICAgIHwgUHR5cF92YXIgeCAtPlxuICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgUHR5cF92YXIgeFxuICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKSB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzXG4gICAgICAgIC0+XG4gICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+IFB0eXBfb2JqZWN0IChMaXN0Lm1hcCBsb29wX29iamVjdF9maWVsZCBsc3QsIG8pXG4gICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPiBQdHlwX2NsYXNzIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW4gdiAtPiBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyB2LnR4dClcbiAgICAgICAgICAgIHN0cmluZ19sc3Q7XG4gICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgTGlzdC5tYXAgKGZ1biAobiwgdHlwKSAtPiAobiwgbG9vcCB0eXApKSBsc3QpXG4gICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgaW5cbiAgICB7IHQgd2l0aCBwdHlwX2Rlc2MgPSBkZXNjIH1cbiAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgbWF0Y2ggZmllbGQucHJmX2Rlc2Mgd2l0aFxuICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgbGV0IHBvZl9kZXNjID1cbiAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgIHwgT3RhZyAobGFiZWwsIHQpIC0+IE90YWcgKGxhYmVsLCBsb29wIHQpXG4gICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICBpblxuICAgIHsgZmllbGQgd2l0aCBwb2ZfZGVzYyB9XG4gIGluXG4gIGxvb3AgdFxuXG5sZXQgcHJlZml4X3N5bWJvbHMgPSBbICchJzsgJz8nOyAnficgXVxuXG5sZXQgaW5maXhfc3ltYm9scyA9XG4gIFsgJz0nOyAnPCc7ICc+JzsgJ0AnOyAnXic7ICd8JzsgJyYnOyAnKyc7ICctJzsgJyonOyAnLyc7ICckJzsgJyUnOyAnIycgXVxuXG4oKiB0eXBlIGZpeGl0eSA9IEluZml4fCBQcmVmaXggICopXG5sZXQgc3BlY2lhbF9pbmZpeF9zdHJpbmdzID1cbiAgWyBcImFzclwiOyBcImxhbmRcIjsgXCJsb3JcIjsgXCJsc2xcIjsgXCJsc3JcIjsgXCJseG9yXCI7IFwibW9kXCI7IFwib3JcIjsgXCI6PVwiOyBcIiE9XCI7IFwiOjpcIiBdXG5cbmxldCBsZXRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdsJ1xuICAmJiBzLlsxXSA9ICdlJ1xuICAmJiBzLlsyXSA9ICd0J1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbmxldCBhbmRvcCBzID1cbiAgU3RyaW5nLmxlbmd0aCBzID4gM1xuICAmJiBzLlswXSA9ICdhJ1xuICAmJiBzLlsxXSA9ICduJ1xuICAmJiBzLlsyXSA9ICdkJ1xuICAmJiBMaXN0Lm1lbSBzLlszXSBpbmZpeF9zeW1ib2xzXG5cbigqIGRldGVybWluZXMgaWYgdGhlIHN0cmluZyBpcyBhbiBpbmZpeCBzdHJpbmcuXG4gICBjaGVja3MgYmFja3dhcmRzLCBmaXJzdCBhbGxvd2luZyBhIHJlbmFtaW5nIHBvc3RmaXggKFwiXzEwMlwiKSB3aGljaFxuICAgbWF5IGhhdmUgcmVzdWx0ZWQgZnJvbSBQZXhwIC0+IFRleHAgLT4gUGV4cCB0cmFuc2xhdGlvbiwgdGhlbiBjaGVja2luZ1xuICAgaWYgYWxsIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhcmUgdmFsaWQgaW5maXhcbiAgIGNoYXJhY3RlcnMuICopXG5sZXQgZml4aXR5X29mX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgXCJcIiAtPiBgTm9ybWFsXG4gIHwgcyB3aGVuIExpc3QubWVtIHMgc3BlY2lhbF9pbmZpeF9zdHJpbmdzIC0+IGBJbmZpeCBzXG4gIHwgcyB3aGVuIExpc3QubWVtIHMuWzBdIGluZml4X3N5bWJvbHMgLT4gYEluZml4IHNcbiAgfCBzIHdoZW4gTGlzdC5tZW0gcy5bMF0gcHJlZml4X3N5bWJvbHMgLT4gYFByZWZpeCBzXG4gIHwgcyB3aGVuIHMuWzBdID0gJy4nIC0+IGBNaXhmaXggc1xuICB8IHMgd2hlbiBsZXRvcCBzIC0+IGBMZXRvcCBzXG4gIHwgcyB3aGVuIGFuZG9wIHMgLT4gYEFuZG9wIHNcbiAgfCBfIC0+IGBOb3JtYWxcblxubGV0IHZpZXdfZml4aXR5X29mX2V4cCA9IGZ1bmN0aW9uXG4gIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgZml4aXR5X29mX3N0cmluZyBsXG4gIHwgXyAtPiBgTm9ybWFsXG5cbmxldCBpc19pbmZpeCA9IGZ1bmN0aW9uIGBJbmZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfbWl4Zml4ID0gZnVuY3Rpb24gYE1peGZpeCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgaXNfa3dkb3AgPSBmdW5jdGlvbiBgTGV0b3AgXyB8IGBBbmRvcCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlXG5sZXQgZmlyc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuWzBdID0gY1xubGV0IGxhc3RfaXMgYyBzdHIgPSBzdHIgPD4gXCJcIiAmJiBzdHIuW1N0cmluZy5sZW5ndGggc3RyIC0gMV0gPSBjXG5sZXQgZmlyc3RfaXNfaW4gY3Mgc3RyID0gc3RyIDw+IFwiXCIgJiYgTGlzdC5tZW0gc3RyLlswXSBjc1xuXG4oKiB3aGljaCBpZGVudGlmaWVycyBhcmUgaW4gZmFjdCBvcGVyYXRvcnMgbmVlZGluZyBwYXJlbnRoZXNlcyAqKVxubGV0IG5lZWRzX3BhcmVucyB0eHQgPVxuICBsZXQgZml4ID0gZml4aXR5X29mX3N0cmluZyB0eHQgaW5cbiAgaXNfaW5maXggZml4IHx8IGlzX21peGZpeCBmaXggfHwgaXNfa3dkb3AgZml4XG4gIHx8IGZpcnN0X2lzX2luIHByZWZpeF9zeW1ib2xzIHR4dFxuXG4oKiBzb21lIGluZml4ZXMgbmVlZCBzcGFjZXMgYXJvdW5kIHBhcmVucyB0byBhdm9pZCBjbGFzaGVzIHdpdGggY29tbWVudFxuICAgc3ludGF4ICopXG5sZXQgbmVlZHNfc3BhY2VzIHR4dCA9IGZpcnN0X2lzICcqJyB0eHQgfHwgbGFzdF9pcyAnKicgdHh0XG5sZXQgc3RyaW5nX2xvYyBwcGYgeCA9IGZwcmludGYgcHBmIFwiJXNcIiB4LnR4dFxuXG4oKiBhZGQgcGFyZW50aGVzZXMgdG8gYmluZGVycyB3aGVuIHRoZXkgYXJlIGluIGZhY3QgaW5maXggb3IgcHJlZml4IG9wZXJhdG9ycyAqKVxubGV0IHByb3RlY3RfaWRlbnQgcHBmIHR4dCA9XG4gIGxldCBmb3JtYXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICBpZiBub3QgKG5lZWRzX3BhcmVucyB0eHQpIHRoZW4gXCIlc1wiXG4gICAgZWxzZSBpZiBuZWVkc19zcGFjZXMgdHh0IHRoZW4gXCIoQDslc0A7KVwiXG4gICAgZWxzZSBcIiglcylcIlxuICBpblxuICBmcHJpbnRmIHBwZiBmb3JtYXQgdHh0XG5cbmxldCBwcm90ZWN0X2xvbmdpZGVudCBwcGYgcHJpbnRfbG9uZ2lkZW50IGxvbmdwcmVmaXggdHh0ID1cbiAgbGV0IGZvcm1hdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgIGlmIG5vdCAobmVlZHNfcGFyZW5zIHR4dCkgdGhlbiBcIiVhLiVzXCJcbiAgICBlbHNlIGlmIG5lZWRzX3NwYWNlcyB0eHQgdGhlbiBcIiVhLihAOyVzQDspXCJcbiAgICBlbHNlIFwiJWEuKCVzKVwiXG4gIGluXG4gIGZwcmludGYgcHBmIGZvcm1hdCBwcmludF9sb25naWRlbnQgbG9uZ3ByZWZpeCB0eHRcblxudHlwZSBzcGFjZV9mb3JtYXR0ZXIgPSAodW5pdCwgRm9ybWF0LmZvcm1hdHRlciwgdW5pdCkgZm9ybWF0XG5cbmxldCBvdmVycmlkZSA9IGZ1bmN0aW9uIE92ZXJyaWRlIC0+IFwiIVwiIHwgRnJlc2ggLT4gXCJcIlxuXG4oKiB2YXJpYW5jZSBlbmNvZGluZzogbmVlZCB0byBzeW5jIHVwIHdpdGggdGhlIFtwYXJzZXIubWx5XSAqKVxubGV0IHR5cGVfdmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IE5vVmFyaWFuY2UgLT4gXCJcIlxuICB8IENvdmFyaWFudCAtPiBcIitcIlxuICB8IENvbnRyYXZhcmlhbnQgLT4gXCItXCJcblxubGV0IHR5cGVfaW5qZWN0aXZpdHkgPSBmdW5jdGlvbiBOb0luamVjdGl2aXR5IC0+IFwiXCIgfCBJbmplY3RpdmUgLT4gXCIhXCJcblxudHlwZSBjb25zdHJ1Y3QgPVxuICBbIGBjb25zIG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBsaXN0IG9mIGV4cHJlc3Npb24gbGlzdFxuICB8IGBuaWxcbiAgfCBgbm9ybWFsXG4gIHwgYHNpbXBsZSBvZiBMb25naWRlbnQudFxuICB8IGB0dXBsZSBdXG5cbmxldCB2aWV3X2V4cHIgeCA9XG4gIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCIoKVwiOyBfIH0sIF8pIC0+IGB0dXBsZVxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXykgLT4gYG5pbFxuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBfKSAtPlxuICAgICAgbGV0IHJlYyBsb29wIGV4cCBhY2MgPVxuICAgICAgICBtYXRjaCBleHAgd2l0aFxuICAgICAgICB8IHtcbiAgICAgICAgIHBleHBfZGVzYyA9IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIltdXCI7IF8gfSwgXyk7XG4gICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgfSAtPlxuICAgICAgICAgICAgKExpc3QucmV2IGFjYywgdHJ1ZSlcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICBQZXhwX2NvbnN0cnVjdFxuICAgICAgICAgICAgICggeyB0eHQgPSBMaWRlbnQgXCI6OlwiOyBfIH0sXG4gICAgICAgICAgICAgICBTb21lIHsgcGV4cF9kZXNjID0gUGV4cF90dXBsZSBbIGUxOyBlMiBdOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgICAgKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBsb29wIGUyIChlMSA6OiBhY2MpXG4gICAgICAgIHwgZSAtPiAoTGlzdC5yZXYgKGUgOjogYWNjKSwgZmFsc2UpXG4gICAgICBpblxuICAgICAgbGV0IGxzLCBiID0gbG9vcCB4IFtdIGluXG4gICAgICBpZiBiIHRoZW4gYGxpc3QgbHMgZWxzZSBgY29ucyBsc1xuICB8IFBleHBfY29uc3RydWN0ICh4LCBOb25lKSAtPiBgc2ltcGxlIHgudHh0XG4gIHwgXyAtPiBgbm9ybWFsXG5cbmxldCBpc19zaW1wbGVfY29uc3RydWN0IDogY29uc3RydWN0IC0+IGJvb2wgPSBmdW5jdGlvblxuICB8IGBuaWwgfCBgdHVwbGUgfCBgbGlzdCBfIHwgYHNpbXBsZSBfIC0+IHRydWVcbiAgfCBgY29ucyBfIHwgYG5vcm1hbCAtPiBmYWxzZVxuXG5sZXQgcHAgPSBmcHJpbnRmXG5cbnR5cGUgY3R4dCA9IHsgcGlwZSA6IGJvb2w7IHNlbWkgOiBib29sOyBpZnRoZW5lbHNlIDogYm9vbCB9XG5cbmxldCByZXNldF9jdHh0ID0geyBwaXBlID0gZmFsc2U7IHNlbWkgPSBmYWxzZTsgaWZ0aGVuZWxzZSA9IGZhbHNlIH1cbmxldCB1bmRlcl9waXBlIGN0eHQgPSB7IGN0eHQgd2l0aCBwaXBlID0gdHJ1ZSB9XG5sZXQgdW5kZXJfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaSA9IHRydWUgfVxubGV0IHVuZGVyX2lmdGhlbmVsc2UgY3R4dCA9IHsgY3R4dCB3aXRoIGlmdGhlbmVsc2UgPSB0cnVlIH1cbigqXG5sZXQgcmVzZXRfc2VtaSBjdHh0ID0geyBjdHh0IHdpdGggc2VtaT1mYWxzZSB9XG5sZXQgcmVzZXRfaWZ0aGVuZWxzZSBjdHh0ID0geyBjdHh0IHdpdGggaWZ0aGVuZWxzZT1mYWxzZSB9XG5sZXQgcmVzZXRfcGlwZSBjdHh0ID0geyBjdHh0IHdpdGggcGlwZT1mYWxzZSB9XG4qKVxuXG5sZXQgbGlzdCA6XG4gICAgICAnYS5cbiAgICAgID9zZXA6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/Zmlyc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICA/bGFzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+XG4gICAgICBGb3JtYXQuZm9ybWF0dGVyIC0+XG4gICAgICAnYSBsaXN0IC0+XG4gICAgICB1bml0ID1cbiBmdW4gP3NlcCA/Zmlyc3QgP2xhc3QgZnUgZiB4cyAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KVxuICBhbmQgc2VwID0gbWF0Y2ggc2VwIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIkAgXCIgOiBfIGZvcm1hdDYpIGluXG4gIGxldCBhdXggZiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgWyB4IF0gLT4gZnUgZiB4XG4gICAgfCB4cyAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBbIHggXSAtPiBmdSBmIHhcbiAgICAgICAgICB8IHggOjogeHMgLT5cbiAgICAgICAgICAgICAgZnUgZiB4O1xuICAgICAgICAgICAgICBwcCBmIHNlcDtcbiAgICAgICAgICAgICAgbG9vcCBmIHhzXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIGZpcnN0O1xuICAgICAgICBsb29wIGYgeHM7XG4gICAgICAgIHBwIGYgbGFzdFxuICBpblxuICBhdXggZiB4c1xuXG5sZXQgb3B0aW9uIDpcbiAgICAgICdhLlxuICAgICAgP2ZpcnN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgP2xhc3Q6c3BhY2VfZm9ybWF0dGVyIC0+XG4gICAgICAoRm9ybWF0LmZvcm1hdHRlciAtPiAnYSAtPiB1bml0KSAtPlxuICAgICAgRm9ybWF0LmZvcm1hdHRlciAtPlxuICAgICAgJ2Egb3B0aW9uIC0+XG4gICAgICB1bml0ID1cbiBmdW4gP2ZpcnN0ID9sYXN0IGZ1IGYgYSAtPlxuICBsZXQgZmlyc3QgPSBtYXRjaCBmaXJzdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiAoXCJcIiA6IF8gZm9ybWF0NilcbiAgYW5kIGxhc3QgPSBtYXRjaCBsYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IChcIlwiIDogXyBmb3JtYXQ2KSBpblxuICBtYXRjaCBhIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBwcCBmIGZpcnN0O1xuICAgICAgZnUgZiB4O1xuICAgICAgcHAgZiBsYXN0XG5cbmxldCBwYXJlbiA6XG4gICAgICAnYS5cbiAgICAgID9maXJzdDpzcGFjZV9mb3JtYXR0ZXIgLT5cbiAgICAgID9sYXN0OnNwYWNlX2Zvcm1hdHRlciAtPlxuICAgICAgYm9vbCAtPlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdCkgLT5cbiAgICAgIEZvcm1hdC5mb3JtYXR0ZXIgLT5cbiAgICAgICdhIC0+XG4gICAgICB1bml0ID1cbiBmdW4gPyhmaXJzdCA9IChcIlwiIDogXyBmb3JtYXQ2KSkgPyhsYXN0ID0gKFwiXCIgOiBfIGZvcm1hdDYpKSBiIGZ1IGYgeCAtPlxuICBpZiBiIHRoZW4gKFxuICAgIHBwIGYgXCIoXCI7XG4gICAgcHAgZiBmaXJzdDtcbiAgICBmdSBmIHg7XG4gICAgcHAgZiBsYXN0O1xuICAgIHBwIGYgXCIpXCIpXG4gIGVsc2UgZnUgZiB4XG5cbmxldCByZWMgbG9uZ2lkZW50IGYgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHByb3RlY3RfaWRlbnQgZiBzXG4gIHwgTGRvdCAoeSwgcykgLT4gcHJvdGVjdF9sb25naWRlbnQgZiBsb25naWRlbnQgeSBzXG4gIHwgTGFwcGx5ICh5LCBzKSAtPiBwcCBmIFwiJWEoJWEpXCIgbG9uZ2lkZW50IHkgbG9uZ2lkZW50IHNcblxubGV0IGxvbmdpZGVudF9sb2MgZiB4ID0gcHAgZiBcIiVhXCIgbG9uZ2lkZW50IHgudHh0XG5cbmxldCBjb25zdGFudCBmID0gZnVuY3Rpb25cbiAgfCBQY29uc3RfY2hhciBpIC0+IHBwIGYgXCIlQ1wiIGlcbiAgfCBQY29uc3Rfc3RyaW5nIChpLCBfLCBOb25lKSAtPiBwcCBmIFwiJVNcIiBpXG4gIHwgUGNvbnN0X3N0cmluZyAoaSwgXywgU29tZSBkZWxpbSkgLT4gcHAgZiBcInslc3wlc3wlc31cIiBkZWxpbSBpIGRlbGltXG4gIHwgUGNvbnN0X2ludGVnZXIgKGksIE5vbmUpIC0+IHBhcmVuIChmaXJzdF9pcyAnLScgaSkgKGZ1biBmIC0+IHBwIGYgXCIlc1wiKSBmIGlcbiAgfCBQY29uc3RfaW50ZWdlciAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuICB8IFBjb25zdF9mbG9hdCAoaSwgTm9uZSkgLT4gcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgLT4gcHAgZiBcIiVzXCIpIGYgaVxuICB8IFBjb25zdF9mbG9hdCAoaSwgU29tZSBtKSAtPlxuICAgICAgcGFyZW4gKGZpcnN0X2lzICctJyBpKSAoZnVuIGYgKGksIG0pIC0+IHBwIGYgXCIlcyVjXCIgaSBtKSBmIChpLCBtKVxuXG4oKiB0cmFpbGluZyBzcGFjZSopXG5sZXQgbXV0YWJsZV9mbGFnIGYgPSBmdW5jdGlvbiBJbW11dGFibGUgLT4gKCkgfCBNdXRhYmxlIC0+IHBwIGYgXCJtdXRhYmxlQDtcIlxubGV0IHZpcnR1YWxfZmxhZyBmID0gZnVuY3Rpb24gQ29uY3JldGUgLT4gKCkgfCBWaXJ0dWFsIC0+IHBwIGYgXCJ2aXJ0dWFsQDtcIlxuXG4oKiB0cmFpbGluZyBzcGFjZSBhZGRlZCAqKVxubGV0IHJlY19mbGFnIGYgcmYgPVxuICBtYXRjaCByZiB3aXRoIE5vbnJlY3Vyc2l2ZSAtPiAoKSB8IFJlY3Vyc2l2ZSAtPiBwcCBmIFwicmVjIFwiXG5cbmxldCBub25yZWNfZmxhZyBmIHJmID1cbiAgbWF0Y2ggcmYgd2l0aCBOb25yZWN1cnNpdmUgLT4gcHAgZiBcIm5vbnJlYyBcIiB8IFJlY3Vyc2l2ZSAtPiAoKVxuXG5sZXQgZGlyZWN0aW9uX2ZsYWcgZiA9IGZ1bmN0aW9uXG4gIHwgVXB0byAtPiBwcCBmIFwidG9AIFwiXG4gIHwgRG93bnRvIC0+IHBwIGYgXCJkb3dudG9AIFwiXG5cbmxldCBwcml2YXRlX2ZsYWcgZiA9IGZ1bmN0aW9uIFB1YmxpYyAtPiAoKSB8IFByaXZhdGUgLT4gcHAgZiBcInByaXZhdGVAIFwiXG5sZXQgaXRlcl9sb2MgZiBjdHh0IHsgdHh0OyBsb2MgPSBfIH0gPSBmIGN0eHQgdHh0XG5sZXQgY29uc3RhbnRfc3RyaW5nIGYgcyA9IHBwIGYgXCIlU1wiIHNcblxubGV0IHR5dmFyIHBwZiBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDIgJiYgcy5bMV0gPSAnXFwnJyB0aGVuXG4gICAgKCogd2l0aG91dCB0aGUgc3BhY2UsIHRoaXMgd291bGQgYmUgcGFyc2VkIGFzXG4gICAgICAgYSBjaGFyYWN0ZXIgbGl0ZXJhbCAqKVxuICAgIEZvcm1hdC5mcHJpbnRmIHBwZiBcIicgJXNcIiBzXG4gIGVsc2UgRm9ybWF0LmZwcmludGYgcHBmIFwiJyVzXCIgc1xuXG5sZXQgdHl2YXJfbG9jIGYgc3RyID0gdHl2YXIgZiBzdHIudHh0XG5sZXQgc3RyaW5nX3F1b3QgZiB4ID0gcHAgZiBcImAlc1wiIHhcblxuKCogYyBbJ2EsJ2JdICopXG5sZXQgcmVjIGNsYXNzX3BhcmFtc19kZWYgY3R4dCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGwgLT4gcHAgZiBcIlslYV0gXCIgKCogc3BhY2UgKikgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfnNlcDpcIixcIikgbFxuXG5hbmQgdHlwZV93aXRoX2xhYmVsIGN0eHQgZiAobGFiZWwsIGMpID1cbiAgbWF0Y2ggbGFiZWwgd2l0aFxuICB8IE5vbGFiZWwgLT4gY29yZV90eXBlMSBjdHh0IGYgYyAoKiBvdGhlcndpc2UgcGFyZW50aGVzaXplICopXG4gIHwgTGFiZWxsZWQgcyAtPiBwcCBmIFwiJXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcbiAgfCBPcHRpb25hbCBzIC0+IHBwIGYgXCI/JXM6JWFcIiBzIChjb3JlX3R5cGUxIGN0eHQpIGNcblxuYW5kIGNvcmVfdHlwZSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSklYSlcIiAoY29yZV90eXBlIGN0eHQpXG4gICAgICB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnB0eXBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wdHlwX2Rlc2Mgd2l0aFxuICAgIHwgUHR5cF9hcnJvdyAobCwgY3QxLCBjdDIpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgICAodHlwZV93aXRoX2xhYmVsIGN0eHQpIChsLCBjdDEpIChjb3JlX3R5cGUgY3R4dCkgY3QyXG4gICAgfCBQdHlwX2FsaWFzIChjdCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgY3QgdHl2YXIgc1xuICAgIHwgUHR5cF9wb2x5IChbXSwgY3QpIC0+IGNvcmVfdHlwZSBjdHh0IGYgY3RcbiAgICB8IFB0eXBfcG9seSAoc2wsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQF1cIlxuICAgICAgICAgIChmdW4gZiBsIC0+XG4gICAgICAgICAgICBwcCBmIFwiJWFcIlxuICAgICAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICAgICAgICB8IF8gLT4gcHAgZiBcIiVhQDsuQDtcIiAobGlzdCB0eXZhcl9sb2MgfnNlcDpcIkA7XCIpIGwpXG4gICAgICAgICAgICAgIGwpXG4gICAgICAgICAgc2wgKGNvcmVfdHlwZSBjdHh0KSBjdFxuICAgIHwgXyAtPiBwcCBmIFwiQFs8Mj4lYUBdXCIgKGNvcmVfdHlwZTEgY3R4dCkgeFxuXG5hbmQgY29yZV90eXBlMSBjdHh0IGYgeCA9XG4gIGlmIHgucHR5cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gY29yZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQdHlwX3ZhciBzIC0+IHR5dmFyIGYgc1xuICAgIHwgUHR5cF90dXBsZSBsIC0+IHBwIGYgXCIoJWEpXCIgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpIGxcbiAgICB8IFB0eXBfY29uc3RyIChsaSwgbCkgLT5cbiAgICAgICAgcHAgZiAoKiBcIiVhJWFAO1wiICopIFwiJWElYVwiXG4gICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgfCBbIHggXSAtPiBwcCBmIFwiJWFAO1wiIChjb3JlX3R5cGUxIGN0eHQpIHhcbiAgICAgICAgICAgIHwgXyAtPiBsaXN0IH5maXJzdDpcIihcIiB+bGFzdDpcIilAO1wiIChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIixAO1wiIGYgbClcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfdmFyaWFudCAobCwgY2xvc2VkLCBsb3cpIC0+XG4gICAgICAgIGxldCBmaXJzdF9pc19pbmhlcml0ID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IHsgUGFyc2V0cmVlLnByZl9kZXNjID0gUmluaGVyaXQgXyB9IDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwZV92YXJpYW50X2hlbHBlciBmIHggPVxuICAgICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUnRhZyAobCwgXywgY3RsKSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSVhQDslYUBdXCIgKGl0ZXJfbG9jIHN0cmluZ19xdW90KSBsXG4gICAgICAgICAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBfIC0+IHBwIGYgXCJAO29mQDslYVwiIChsaXN0IChjb3JlX3R5cGUgY3R4dCkgfnNlcDpcIiZcIikgY3RsKVxuICAgICAgICAgICAgICAgIGN0bCAoYXR0cmlidXRlcyBjdHh0KSB4LnByZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBSaW5oZXJpdCBjdCAtPiBjb3JlX3R5cGUgY3R4dCBmIGN0XG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzwyPlslYSVhXUBdXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgbWF0Y2ggKGwsIGNsb3NlZCkgd2l0aFxuICAgICAgICAgICAgfCBbXSwgQ2xvc2VkIC0+ICgpXG4gICAgICAgICAgICB8IFtdLCBPcGVuIC0+IHBwIGYgXCI+XCIgKCogQ2YgIzcyMDA6IHByaW50IFs+XSBjb3JyZWN0bHkgKilcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIlc0A7JWFcIlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIChjbG9zZWQsIGxvdykgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBDbG9zZWQsIE5vbmUgLT4gaWYgZmlyc3RfaXNfaW5oZXJpdCB0aGVuIFwiIHxcIiBlbHNlIFwiXCJcbiAgICAgICAgICAgICAgICAgIHwgQ2xvc2VkLCBTb21lIF8gLT4gXCI8XCIgKCogRklYTUUgZGVzdWdhciB0aGUgc3ludGF4IHN1Z2FyKilcbiAgICAgICAgICAgICAgICAgIHwgT3BlbiwgXyAtPiBcIj5cIilcbiAgICAgICAgICAgICAgICAgIChsaXN0IHR5cGVfdmFyaWFudF9oZWxwZXIgfnNlcDpcIkA7PDEgLTI+fCBcIilcbiAgICAgICAgICAgICAgICAgIGwpXG4gICAgICAgICAgbFxuICAgICAgICAgIChmdW4gZiBsb3cgLT5cbiAgICAgICAgICAgIG1hdGNoIGxvdyB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgW10gfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgeHMgLT4gcHAgZiBcIj5AICVhXCIgKGxpc3Qgc3RyaW5nX3F1b3QpIHhzKVxuICAgICAgICAgIGxvd1xuICAgIHwgUHR5cF9vYmplY3QgKGwsIG8pIC0+XG4gICAgICAgIGxldCBjb3JlX2ZpZWxkX3R5cGUgZiB4ID1cbiAgICAgICAgICBtYXRjaCB4LnBvZl9kZXNjIHdpdGhcbiAgICAgICAgICB8IE90YWcgKGwsIGN0KSAtPlxuICAgICAgICAgICAgICAoKiBDZiAjNzIwMCAqKVxuICAgICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lczogJWFAICVhQCBAXVwiIGwudHh0IChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAgICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBvZl9hdHRyaWJ1dGVzXG4gICAgICAgICAgfCBPaW5oZXJpdCBjdCAtPiBwcCBmIFwiQFs8aG92Mj4lYUAgQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBmaWVsZF92YXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBBc3R0eXBlcy5DbG9zZWQgLT4gKClcbiAgICAgICAgICB8IEFzdHR5cGVzLk9wZW4gLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gcHAgZiBcIi4uXCIgfCBfIC0+IHBwIGYgXCIgOy4uXCIpXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPjxAICVhJWFAID4gQF1cIlxuICAgICAgICAgIChsaXN0IGNvcmVfZmllbGRfdHlwZSB+c2VwOlwiO1wiKVxuICAgICAgICAgIGwgZmllbGRfdmFyIG9cbiAgICAgICAgKCogQ2YgIzcyMDAgKilcbiAgICB8IFB0eXBfY2xhc3MgKGxpLCBsKSAtPlxuICAgICAgICAoKkZJWE1FKilcbiAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWEjJWFAXVwiXG4gICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZSBjdHh0KSB+c2VwOlwiLFwiIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIilcbiAgICAgICAgICBsIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFB0eXBfcGFja2FnZSAobGlkLCBjc3RycykgLT4gKFxuICAgICAgICBsZXQgYXV4IGYgKHMsIGN0KSA9XG4gICAgICAgICAgcHAgZiBcInR5cGUgJWFAID1AICVhXCIgbG9uZ2lkZW50X2xvYyBzIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggY3N0cnMgd2l0aFxuICAgICAgICB8IFtdIC0+IHBwIGYgXCJAWzxob3YyPihtb2R1bGVAICVhKUBdXCIgbG9uZ2lkZW50X2xvYyBsaWRcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4obW9kdWxlQCAlYUAgd2l0aEAgJWEpQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgICAgICAobGlzdCBhdXggfnNlcDpcIkAgYW5kQCBcIikgY3N0cnMpXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChjb3JlX3R5cGUgY3R4dCkgZiB4XG5cbigqKioqKioqKioqKioqKioqKioqKnBhdHRlcm4qKioqKioqKioqKioqKioqKioqKilcbigqIGJlIGNhdXRpb3VzIHdoZW4gdXNlIFtwYXR0ZXJuXSwgW3BhdHRlcm4xXSBpcyBwcmVmZXJyZWQgKilcbmFuZCBwYXR0ZXJuIGN0eHQgZiB4ID1cbiAgaWYgeC5wcGF0X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChwYXR0ZXJuIGN0eHQpXG4gICAgICB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBwYXRfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9hbGlhcyAocCwgcykgLT5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWFAO2FzQDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcCBwcm90ZWN0X2lkZW50IHMudHh0XG4gICAgfCBfIC0+IHBhdHRlcm5fb3IgY3R4dCBmIHhcblxuYW5kIHBhdHRlcm5fb3IgY3R4dCBmIHggPVxuICBsZXQgcmVjIGxlZnRfYXNzb2NpYXRpdmUgeCBhY2MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X29yIChwMSwgcDIpOyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgIGxlZnRfYXNzb2NpYXRpdmUgcDEgKHAyIDo6IGFjYylcbiAgICB8IHggLT4geCA6OiBhY2NcbiAgaW5cbiAgbWF0Y2ggbGVmdF9hc3NvY2lhdGl2ZSB4IFtdIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBbIHggXSAtPiBwYXR0ZXJuMSBjdHh0IGYgeFxuICB8IG9ycGF0cyAtPiBwcCBmIFwiQFs8aG92MD4lYUBdXCIgKGxpc3QgfnNlcDpcIkAgfCBcIiAocGF0dGVybjEgY3R4dCkpIG9ycGF0c1xuXG5hbmQgcGF0dGVybjEgY3R4dCAoZiA6IEZvcm1hdC5mb3JtYXR0ZXIpICh4IDogcGF0dGVybikgOiB1bml0ID1cbiAgbGV0IHJlYyBwYXR0ZXJuX2xpc3RfaGVscGVyIGYgPSBmdW5jdGlvblxuICAgIHwge1xuICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgIFBwYXRfY29uc3RydWN0XG4gICAgICAgICAgICAoIHsgdHh0ID0gTGlkZW50IFwiOjpcIjsgXyB9LFxuICAgICAgICAgICAgICBTb21lIChbXSwgeyBwcGF0X2Rlc2MgPSBQcGF0X3R1cGxlIFsgcGF0MTsgcGF0MiBdOyBfIH0pICk7XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWE6OiVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdDEgcGF0dGVybl9saXN0X2hlbHBlciBwYXQyICgqUkEqKVxuICAgIHwgcCAtPiBwYXR0ZXJuMSBjdHh0IGYgcFxuICBpblxuICBpZiB4LnBwYXRfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBhdHRlcm4gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucHBhdF9kZXNjIHdpdGhcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgU29tZSBwKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gICAgfCBQcGF0X2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgKFwiKClcIiB8IFwiW11cIik7IF8gfSwgXykgLT5cbiAgICAgICAgc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcbiAgICB8IFBwYXRfY29uc3RydWN0ICgoeyB0eHQ7IF8gfSBhcyBsaSksIHBvKSAtPiAoXG4gICAgICAgIGlmICgqIEZJWE1FIFRoZSB0aGlyZCBmaWVsZCBhbHdheXMgZmFsc2UgKilcbiAgICAgICAgICAgdHh0ID0gTGlkZW50IFwiOjpcIiB0aGVuIHBwIGYgXCIlYVwiIHBhdHRlcm5fbGlzdF9oZWxwZXIgeFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggcG8gd2l0aFxuICAgICAgICAgIHwgU29tZSAoW10sIHgpIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCIlYUA7JWFcIiBsb25naWRlbnRfbG9jIGxpIChzaW1wbGVfcGF0dGVybiBjdHh0KSB4XG4gICAgICAgICAgfCBTb21lICh2bCwgeCkgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVhQCAodHlwZSAlYSlAOyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgICAgICAgIChsaXN0IH5zZXA6XCJAIFwiIHN0cmluZ19sb2MpXG4gICAgICAgICAgICAgICAgdmwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHhcbiAgICAgICAgICB8IE5vbmUgLT4gcHAgZiBcIiVhXCIgbG9uZ2lkZW50X2xvYyBsaSlcbiAgICB8IF8gLT4gc2ltcGxlX3BhdHRlcm4gY3R4dCBmIHhcblxuYW5kIHNpbXBsZV9wYXR0ZXJuIGN0eHQgKGYgOiBGb3JtYXQuZm9ybWF0dGVyKSAoeCA6IHBhdHRlcm4pIDogdW5pdCA9XG4gIGlmIHgucHBhdF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gcGF0dGVybiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wcGF0X2Rlc2Mgd2l0aFxuICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50ICgoXCIoKVwiIHwgXCJbXVwiKSBhcyB4KTsgXyB9LCBOb25lKSAtPlxuICAgICAgICBwcCBmIFwiJXNcIiB4XG4gICAgfCBQcGF0X2FueSAtPiBwcCBmIFwiX1wiXG4gICAgfCBQcGF0X3ZhciB7IHR4dDsgXyB9IC0+IHByb3RlY3RfaWRlbnQgZiB0eHRcbiAgICB8IFBwYXRfYXJyYXkgbCAtPiBwcCBmIFwiQFs8Mj5bfCVhfF1AXVwiIChsaXN0IChwYXR0ZXJuMSBjdHh0KSB+c2VwOlwiO1wiKSBsXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IE5vbmUgfSAtPiBwcCBmIFwiKG1vZHVsZUAgXylAIFwiXG4gICAgfCBQcGF0X3VucGFjayB7IHR4dCA9IFNvbWUgcyB9IC0+IHBwIGYgXCIobW9kdWxlQCAlcylAIFwiIHNcbiAgICB8IFBwYXRfdHlwZSBsaSAtPiBwcCBmIFwiIyVhXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUHBhdF9yZWNvcmQgKGwsIGNsb3NlZCkgLT4gKFxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfcGF0dGVybiBmIChsaSwgcCkgPVxuICAgICAgICAgIG1hdGNoIChsaSwgcCkgd2l0aFxuICAgICAgICAgIHwgKCB7IHR4dCA9IExpZGVudCBzOyBfIH0sXG4gICAgICAgICAgICAgIHsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQ7IF8gfTsgcHBhdF9hdHRyaWJ1dGVzID0gW107IF8gfSApXG4gICAgICAgICAgICB3aGVuIHMgPSB0eHQgLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPDI+JWFAXVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICAgICAgICB8IF8gLT4gcHAgZiBcIkBbPDI+JWFAOz1AOyVhQF1cIiBsb25naWRlbnRfbG9jIGxpIChwYXR0ZXJuMSBjdHh0KSBwXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNsb3NlZCB3aXRoXG4gICAgICAgIHwgQ2xvc2VkIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8Mj57QDslYUA7fUBdXCIgKGxpc3QgbG9uZ2lkZW50X3hfcGF0dGVybiB+c2VwOlwiO0A7XCIpIGxcbiAgICAgICAgfCBfIC0+IHBwIGYgXCJAWzwyPntAOyVhO199QF1cIiAobGlzdCBsb25naWRlbnRfeF9wYXR0ZXJuIH5zZXA6XCI7QDtcIikgbClcbiAgICB8IFBwYXRfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8MT4oJWEpQF1cIiAobGlzdCB+c2VwOlwiLEA7XCIgKHBhdHRlcm4xIGN0eHQpKSBsICgqIGxldmVsMSopXG4gICAgfCBQcGF0X2NvbnN0YW50IGMgLT4gcHAgZiBcIiVhXCIgY29uc3RhbnQgY1xuICAgIHwgUHBhdF9pbnRlcnZhbCAoYzEsIGMyKSAtPiBwcCBmIFwiJWEuLiVhXCIgY29uc3RhbnQgYzEgY29uc3RhbnQgYzJcbiAgICB8IFBwYXRfdmFyaWFudCAobCwgTm9uZSkgLT4gcHAgZiBcImAlc1wiIGxcbiAgICB8IFBwYXRfY29uc3RyYWludCAocCwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPiglYUA7OkA7JWEpQF1cIiAocGF0dGVybjEgY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQcGF0X2xhenkgcCAtPiBwcCBmIFwiQFs8Mj4obGF6eUA7JWEpQF1cIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgIHwgUHBhdF9leGNlcHRpb24gcCAtPiBwcCBmIFwiQFs8Mj5leGNlcHRpb25AOyVhQF1cIiAocGF0dGVybjEgY3R4dCkgcFxuICAgIHwgUHBhdF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBwYXRfb3BlbiAobGlkLCBwKSAtPlxuICAgICAgICBsZXQgd2l0aF9wYXJlbiA9XG4gICAgICAgICAgbWF0Y2ggcC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUHBhdF9hcnJheSBfIHwgUHBhdF9yZWNvcmQgX1xuICAgICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKHsgdHh0ID0gTGlkZW50IChcIigpXCIgfCBcIltdXCIpOyBfIH0sIE5vbmUpIC0+XG4gICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgfCBfIC0+IHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JWEuJWEgQF1cIiBsb25naWRlbnRfbG9jIGxpZFxuICAgICAgICAgIChwYXJlbiB3aXRoX3BhcmVuIEBAIHBhdHRlcm4xIGN0eHQpXG4gICAgICAgICAgcFxuICAgIHwgXyAtPiBwYXJlbiB0cnVlIChwYXR0ZXJuIGN0eHQpIGYgeFxuXG5hbmQgbGFiZWxfZXhwIGN0eHQgZiAobCwgb3B0LCBwKSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IE5vbGFiZWwgLT5cbiAgICAgICgqIHNpbmdsZSBjYXNlIHBhdHRlcm4gcGFyZW5zIG5lZWRlZCBoZXJlICopXG4gICAgICBwcCBmIFwiJWFAIFwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwXG4gIHwgT3B0aW9uYWwgcmVzdCAtPiAoXG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciB7IHR4dDsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgIHdoZW4gdHh0ID0gcmVzdCAtPiAoXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgbyAtPiBwcCBmIFwiPyglcz1AOyVhKUA7XCIgcmVzdCAoZXhwcmVzc2lvbiBjdHh0KSBvXG4gICAgICAgICAgfCBOb25lIC0+IHBwIGYgXCI/JXNAIFwiIHJlc3QpXG4gICAgICB8IF8gLT4gKFxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIj8lczooJWE9QDslYSlAO1wiIHJlc3QgKHBhdHRlcm4xIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgb1xuICAgICAgICAgIHwgTm9uZSAtPiBwcCBmIFwiPyVzOiVhQDtcIiByZXN0IChzaW1wbGVfcGF0dGVybiBjdHh0KSBwKSlcbiAgfCBMYWJlbGxlZCBsIC0+IChcbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0OyBfIH07IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gd2hlbiB0eHQgPSBsXG4gICAgICAgIC0+XG4gICAgICAgICAgcHAgZiBcIn4lc0A7XCIgbFxuICAgICAgfCBfIC0+IHBwIGYgXCJ+JXM6JWFAO1wiIGwgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHApXG5cbmFuZCBzdWdhcl9leHByIGN0eHQgZiBlID1cbiAgaWYgZS5wZXhwX2F0dHJpYnV0ZXMgPD4gW10gdGhlbiBmYWxzZVxuICBlbHNlXG4gICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9hcHBseVxuICAgICAgICAoIHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IGlkOyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0sXG4gICAgICAgICAgYXJncyApXG4gICAgICB3aGVuIExpc3QuZm9yX2FsbCAoZnVuIChsYWIsIF8pIC0+IGxhYiA9IE5vbGFiZWwpIGFyZ3MgLT4gKFxuICAgICAgICBsZXQgcHJpbnRfaW5kZXhvcCBhIHBhdGhfcHJlZml4IGFzc2lnbiBsZWZ0IHNlcCByaWdodCBwcmludF9pbmRleFxuICAgICAgICAgICAgaW5kaWNlcyByZW1fYXJncyA9XG4gICAgICAgICAgbGV0IHByaW50X3BhdGggcHBmID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIG0gLT4gcHAgcHBmIFwiLiVhXCIgbG9uZ2lkZW50IG1cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIChhc3NpZ24sIHJlbV9hcmdzKSB3aXRoXG4gICAgICAgICAgfCBmYWxzZSwgW10gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0BdXCIgKHNpbXBsZV9leHByIGN0eHQpIGEgcHJpbnRfcGF0aCBwYXRoX3ByZWZpeFxuICAgICAgICAgICAgICAgIGxlZnQgKGxpc3QgfnNlcCBwcmludF9pbmRleCkgaW5kaWNlcyByaWdodDtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgdHJ1ZSwgWyB2IF0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbJWElYSVzJWElc0AgPC1AOzwxIDI+JWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBhIHByaW50X3BhdGhcbiAgICAgICAgICAgICAgICBwYXRoX3ByZWZpeCBsZWZ0IChsaXN0IH5zZXAgcHJpbnRfaW5kZXgpIGluZGljZXMgcmlnaHRcbiAgICAgICAgICAgICAgICAoc2ltcGxlX2V4cHIgY3R4dCkgdjtcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCAoaWQsIExpc3QubWFwIHNuZCBhcmdzKSB3aXRoXG4gICAgICAgIHwgTGlkZW50IFwiIVwiLCBbIGUgXSAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdj4hJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlO1xuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICB8IExkb3QgKHBhdGgsICgoXCJnZXRcIiB8IFwic2V0XCIpIGFzIGZ1bmMpKSwgYSA6OiBvdGhlcl9hcmdzIC0+IChcbiAgICAgICAgICAgIGxldCBhc3NpZ24gPSBmdW5jID0gXCJzZXRcIiBpblxuICAgICAgICAgICAgbGV0IHByaW50ID0gcHJpbnRfaW5kZXhvcCBhIE5vbmUgYXNzaWduIGluXG4gICAgICAgICAgICBtYXRjaCAocGF0aCwgb3RoZXJfYXJncykgd2l0aFxuICAgICAgICAgICAgfCBMaWRlbnQgXCJBcnJheVwiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi4oXCIgXCJcIiBcIilcIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExpZGVudCBcIlN0cmluZ1wiLCBpIDo6IHJlc3QgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi5bXCIgXCJcIiBcIl1cIiAoZXhwcmVzc2lvbiBjdHh0KSBbIGkgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkxXCIpLCBpMSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxIF0gcmVzdFxuICAgICAgICAgICAgfCBMZG90IChMaWRlbnQgXCJCaWdhcnJheVwiLCBcIkFycmF5MlwiKSwgaTEgOjogaTIgOjogcmVzdCAtPlxuICAgICAgICAgICAgICAgIHByaW50IFwiLntcIiBcIixcIiBcIn1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgWyBpMTsgaTIgXSByZXN0XG4gICAgICAgICAgICB8IExkb3QgKExpZGVudCBcIkJpZ2FycmF5XCIsIFwiQXJyYXkzXCIpLCBpMSA6OiBpMiA6OiBpMyA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgcHJpbnQgXCIue1wiIFwiLFwiIFwifVwiIChzaW1wbGVfZXhwciBjdHh0KSBbIGkxOyBpMjsgaTMgXSByZXN0XG4gICAgICAgICAgICB8ICggTGRvdCAoTGlkZW50IFwiQmlnYXJyYXlcIiwgXCJHZW5hcnJheVwiKSxcbiAgICAgICAgICAgICAgICB7IHBleHBfZGVzYyA9IFBleHBfYXJyYXkgaW5kZXhlczsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSA6OiByZXN0XG4gICAgICAgICAgICAgICkgLT5cbiAgICAgICAgICAgICAgICBwcmludCBcIi57XCIgXCIsXCIgXCJ9XCIgKHNpbXBsZV9leHByIGN0eHQpIGluZGV4ZXMgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICB8IChMaWRlbnQgcyB8IExkb3QgKF8sIHMpKSwgYSA6OiBpIDo6IHJlc3Qgd2hlbiBmaXJzdF9pcyAnLicgcyAtPlxuICAgICAgICAgICAgKCogZXh0cmFjdCBvcGVyYXRvcjpcbiAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgb3BlcmF0b3JzIGVuZCB3aXRoIFtyaWdodF9icmFja2V0IF4gXCI8LVwiXSxcbiAgICAgICAgICAgICAgIGFjY2VzcyBvcGVyYXRvcnMgZW5kIHdpdGggW3JpZ2h0X2JyYWNrZXRdIGRpcmVjdGx5XG4gICAgICAgICAgICAqKVxuICAgICAgICAgICAgbGV0IG11bHRpX2luZGljZXMgPSBTdHJpbmcuY29udGFpbnMgcyAnOycgaW5cbiAgICAgICAgICAgIGxldCBpID1cbiAgICAgICAgICAgICAgbWF0Y2ggaS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgbCB3aGVuIG11bHRpX2luZGljZXMgLT4gbFxuICAgICAgICAgICAgICB8IF8gLT4gWyBpIF1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYXNzaWduID0gbGFzdF9pcyAnLScgcyBpblxuICAgICAgICAgICAgbGV0IGtpbmQgPVxuICAgICAgICAgICAgICAoKiBleHRyYWN0IHRoZSByaWdodCBlbmQgYnJhY2tldCAqKVxuICAgICAgICAgICAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgICAgICAgICAgICBpZiBhc3NpZ24gdGhlbiBzLltuIC0gM10gZWxzZSBzLltuIC0gMV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGVmdCwgcmlnaHQgPVxuICAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICAgfCAnKScgLT4gKCcoJywgXCIpXCIpXG4gICAgICAgICAgICAgIHwgJ10nIC0+ICgnWycsIFwiXVwiKVxuICAgICAgICAgICAgICB8ICd9JyAtPiAoJ3snLCBcIn1cIilcbiAgICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwYXRoX3ByZWZpeCA9XG4gICAgICAgICAgICAgIG1hdGNoIGlkIHdpdGggTGRvdCAobSwgXykgLT4gU29tZSBtIHwgXyAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxlZnQgPSBTdHJpbmcuc3ViIHMgMCAoMSArIFN0cmluZy5pbmRleCBzIGxlZnQpIGluXG4gICAgICAgICAgICBwcmludF9pbmRleG9wIGEgcGF0aF9wcmVmaXggYXNzaWduIGxlZnQgXCI7XCIgcmlnaHRcbiAgICAgICAgICAgICAgKGlmIG11bHRpX2luZGljZXMgdGhlbiBleHByZXNzaW9uIGN0eHQgZWxzZSBzaW1wbGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICBpIHJlc3RcbiAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgXyAtPiBmYWxzZVxuXG5hbmQgZXhwcmVzc2lvbiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW5cbiAgICBwcCBmIFwiKCglYSlALCVhKVwiIChleHByZXNzaW9uIGN0eHQpXG4gICAgICB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAoYXR0cmlidXRlcyBjdHh0KSB4LnBleHBfYXR0cmlidXRlc1xuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9mdW5jdGlvbiBfIHwgUGV4cF9mdW4gXyB8IFBleHBfbWF0Y2ggXyB8IFBleHBfdHJ5IF8gfCBQZXhwX3NlcXVlbmNlIF9cbiAgICB8IFBleHBfbmV3dHlwZSBfXG4gICAgICB3aGVuIGN0eHQucGlwZSB8fCBjdHh0LnNlbWkgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IChQZXhwX2lmdGhlbmVsc2UgXyB8IFBleHBfc2VxdWVuY2UgXykgd2hlbiBjdHh0LmlmdGhlbmVsc2UgLT5cbiAgICAgICAgcGFyZW4gdHJ1ZSAoZXhwcmVzc2lvbiByZXNldF9jdHh0KSBmIHhcbiAgICB8IFBleHBfbGV0IF8gfCBQZXhwX2xldG1vZHVsZSBfIHwgUGV4cF9vcGVuIF8gfCBQZXhwX2xldGV4Y2VwdGlvbiBfXG4gICAgfCBQZXhwX2xldG9wIF9cbiAgICAgIHdoZW4gY3R4dC5zZW1pIC0+XG4gICAgICAgIHBhcmVuIHRydWUgKGV4cHJlc3Npb24gcmVzZXRfY3R4dCkgZiB4XG4gICAgfCBQZXhwX2Z1biAobCwgZTAsIHAsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmZ1bkA7JWEtPkA7JWFAXVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGUwLCBwKVxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfbmV3dHlwZSAobGlkLCBlKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5mdW5AOyh0eXBlQDslcylAOy0+QDslYUBdXCIgbGlkLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Z1bmN0aW9uIGwgLT4gcHAgZiBcIkBbPGh2PmZ1bmN0aW9uJWFAXVwiIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF9tYXRjaCAoZSwgbCkgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2MD5AWzxodjA+QFs8Mj5tYXRjaCAlYUBdQCB3aXRoQF0lYUBdXCIgKGV4cHJlc3Npb24gcmVzZXRfY3R4dClcbiAgICAgICAgICBlIChjYXNlX2xpc3QgY3R4dCkgbFxuICAgIHwgUGV4cF90cnkgKGUsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwwPkBbPGh2Mj50cnlAICVhQF1AIEBbPDA+d2l0aCVhQF1AXVwiXG4gICAgICAgICAgKCogXCJ0cnlAO0BbPDI+JWFAXUBcXG53aXRoQFxcbiVhXCIqKVxuICAgICAgICAgIChleHByZXNzaW9uIHJlc2V0X2N0eHQpXG4gICAgICAgICAgZSAoY2FzZV9saXN0IGN0eHQpIGxcbiAgICB8IFBleHBfbGV0IChyZiwgbCwgZSkgLT5cbiAgICAgICAgKCogcHAgZiBcIkBbPDI+bGV0ICVhJWEgaW5AOzwxIC0yPiVhQF1cIlxuICAgICAgICAgICAoKm5vIGluZGVudGF0aW9uIGhlcmUsIGEgbmV3IGxpbmUqKSAqKVxuICAgICAgICAoKiAgIHJlY19mbGFnIHJmICopXG4gICAgICAgIHBwIGYgXCJAWzwyPiVhIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdzIHJlc2V0X2N0eHQpIChyZiwgbClcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2FwcGx5IChlLCBsKSAtPiAoXG4gICAgICAgIGlmIG5vdCAoc3VnYXJfZXhwciBjdHh0IGYgeCkgdGhlblxuICAgICAgICAgIG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCBlIHdpdGhcbiAgICAgICAgICB8IGBJbmZpeCBzIC0+IChcbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoKE5vbGFiZWwsIF8pIGFzIGFyZzEpOyAoKE5vbGFiZWwsIF8pIGFzIGFyZzIpIF0gLT5cbiAgICAgICAgICAgICAgICAgICgqIEZJWE1FIGFzc29jaWF0aXZpdHkgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtICopXG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYUA7JXNAOyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIHJlc2V0X2N0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzEgc1xuICAgICAgICAgICAgICAgICAgICAobGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQpXG4gICAgICAgICAgICAgICAgICAgIGFyZzJcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IGBQcmVmaXggcyAtPiAoXG4gICAgICAgICAgICAgIGxldCBzID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTGlzdC5tZW0gcyBbIFwifitcIjsgXCJ+LVwiOyBcIn4rLlwiOyBcIn4tLlwiIF1cbiAgICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgICAgICgqIFNlZSAjNzIwMDogYXZvaWQgdHVybmluZyAofi0gMSkgaW50byAoLSAxKSB3aGljaCBpc1xuICAgICAgICAgICAgICAgICAgICAgcGFyc2VkIGFzIGFuIGludCBsaXRlcmFsICopXG4gICAgICAgICAgICAgICAgICB8IFsgKF8sIHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdGFudCBfIH0pIF0gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICAgICAgICAgICAgICBlbHNlIHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgWyAoTm9sYWJlbCwgeCkgXSAtPiBwcCBmIFwiQFs8Mj4lc0A7JWFAXVwiIHMgKHNpbXBsZV9leHByIGN0eHQpIHhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBwcCBmIFwiQFs8Mj4lYSAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAgICAgICAgICAgKGxpc3QgKGxhYmVsX3hfZXhwcmVzc2lvbl9wYXJhbSBjdHh0KSlcbiAgICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JWFAXVwiXG4gICAgICAgICAgICAgICAgKGZ1biBmIChlLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgcHAgZiBcIiVhQCAlYVwiIChleHByZXNzaW9uMiBjdHh0KSBlXG4gICAgICAgICAgICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gcmVzZXRfY3R4dCkpXG4gICAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgICAgICgqIHJlc2V0IGhlcmUgb25seSBiZWNhdXNlIFtmdW5jdGlvbixtYXRjaCx0cnksc2VxdWVuY2VdXG4gICAgICAgICAgICAgICAgICAgICBhcmUgbG93ZXIgcHJpb3JpdHkgKikpXG4gICAgICAgICAgICAgICAgKGUsIGwpKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGxpLCBTb21lIGVvKSB3aGVuIG5vdCAoaXNfc2ltcGxlX2NvbnN0cnVjdCAodmlld19leHByIHgpKVxuICAgICAgLT4gKFxuICAgICAgICAoKiBOb3QgZWZmaWNpZW50IEZJWE1FKilcbiAgICAgICAgbWF0Y2ggdmlld19leHByIHggd2l0aFxuICAgICAgICB8IGBjb25zIGxzIC0+IGxpc3QgKHNpbXBsZV9leHByIGN0eHQpIGYgbHMgfnNlcDpcIkA7OjpAO1wiXG4gICAgICAgIHwgYG5vcm1hbCAtPiBwcCBmIFwiQFs8Mj4lYUA7JWFAXVwiIGxvbmdpZGVudF9sb2MgbGkgKHNpbXBsZV9leHByIGN0eHQpIGVvXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBQZXhwX3NldGZpZWxkIChlMSwgbGksIGUyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj4lYS4lYUAgPC1AICVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZTEgbG9uZ2lkZW50X2xvYyBsaVxuICAgICAgICAgIChzaW1wbGVfZXhwciBjdHh0KSBlMlxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIChlMSwgZTIsIGVvKSAtPlxuICAgICAgICAoKiBAO0BbPDI+ZWxzZUAgJWFAXUBdICopXG4gICAgICAgIGxldCBmbXQgOiAoXywgXywgXykgZm9ybWF0ID1cbiAgICAgICAgICBcIkBbPGh2MD5AWzwyPmlmQCAlYUBdQDtAWzwyPnRoZW5AICVhQF0lYUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSA9IGV4cHJlc3Npb24gKHVuZGVyX2lmdGhlbmVsc2UgY3R4dCkgaW5cbiAgICAgICAgcHAgZiBmbXQgZXhwcmVzc2lvbl91bmRlcl9pZnRoZW5lbHNlIGUxIGV4cHJlc3Npb25fdW5kZXJfaWZ0aGVuZWxzZSBlMlxuICAgICAgICAgIChmdW4gZiBlbyAtPlxuICAgICAgICAgICAgbWF0Y2ggZW8gd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiQDtAWzwyPmVsc2VAOyVhQF1cIiAoZXhwcmVzc2lvbiAodW5kZXJfc2VtaSBjdHh0KSkgeFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAoKiBwcCBmIFwiKClcIiAqKSlcbiAgICAgICAgICBlb1xuICAgIHwgUGV4cF9zZXF1ZW5jZSBfIC0+XG4gICAgICAgIGxldCByZWMgc2VxdWVuY2VfaGVscGVyIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfc2VxdWVuY2UgKGUxLCBlMik7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgICAgc2VxdWVuY2VfaGVscGVyIChlMSA6OiBhY2MpIGUyXG4gICAgICAgICAgfCB2IC0+IExpc3QucmV2ICh2IDo6IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxzdCA9IHNlcXVlbmNlX2hlbHBlciBbXSB4IGluXG4gICAgICAgIHBwIGYgXCJAWzxodj4lYUBdXCIgKGxpc3QgKGV4cHJlc3Npb24gKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7QDtcIikgbHN0XG4gICAgfCBQZXhwX25ldyBsaSAtPiBwcCBmIFwiQFs8aG92Mj5uZXdAICVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NldGluc3R2YXIgKHMsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVzQCA8LUAgJWFAXVwiIHMudHh0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICB8IFBleHBfb3ZlcnJpZGUgbCAtPlxuICAgICAgICAoKiBGSVhNRSAqKVxuICAgICAgICBsZXQgc3RyaW5nX3hfZXhwcmVzc2lvbiBmIChzLCBlKSA9XG4gICAgICAgICAgcHAgZiBcIkBbPGhvdjI+JXNAID1AICVhQF1cIiBzLnR4dCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgIGluXG4gICAgICAgIHBwIGYgXCJAWzxob3YyPns8JWE+fUBdXCIgKGxpc3Qgc3RyaW5nX3hfZXhwcmVzc2lvbiB+c2VwOlwiO1wiKSBsXG4gICAgfCBQZXhwX2xldG1vZHVsZSAocywgbWUsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgbW9kdWxlQCAlc0AgPUAgJWFAIGluQCAlYUBdXCJcbiAgICAgICAgICAoT3B0aW9uLnZhbHVlIHMudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgIChtb2R1bGVfZXhwciByZXNldF9jdHh0KSBtZSAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoY2QsIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPmxldEAgZXhjZXB0aW9uQCAlYUAgaW5AICVhQF1cIlxuICAgICAgICAgIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dClcbiAgICAgICAgICBjZCAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBQZXhwX2Fzc2VydCBlIC0+IHBwIGYgXCJAWzxob3YyPmFzc2VydEAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX2xhenkgZSAtPiBwcCBmIFwiQFs8aG92Mj5sYXp5QCAlYUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAoKiBQZXhwX3BvbHk6IGltcG9zc2libGUgYnV0IHdlIHNob3VsZCBwcmludCBpdCBhbnl3YXksIHJhdGhlciB0aGFuXG4gICAgICAgYXNzZXJ0IGZhbHNlICopXG4gICAgfCBQZXhwX3BvbHkgKGUsIE5vbmUpIC0+IHBwIGYgXCJAWzxob3YyPiFwb2x5IUAgJWFAXVwiIChzaW1wbGVfZXhwciBjdHh0KSBlXG4gICAgfCBQZXhwX3BvbHkgKGUsIFNvbWUgY3QpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPighcG9seSFAICVhQCA6ICVhKUBdXCIgKHNpbXBsZV9leHByIGN0eHQpIGVcbiAgICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvLnBvcGVuX2V4cHIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUGV4cF92YXJpYW50IChsLCBTb21lIGVvKSAtPiBwcCBmIFwiQFs8Mj5gJXNAOyVhQF1cIiBsIChzaW1wbGVfZXhwciBjdHh0KSBlb1xuICAgIHwgUGV4cF9sZXRvcCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBwcCBmIFwiQFs8Mj5AWzx2PiVhQCwlYUBdIGluQDs8MSAtMj4lYUBdXCIgKGJpbmRpbmdfb3AgY3R4dCkgbGV0X1xuICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChiaW5kaW5nX29wIGN0eHQpKVxuICAgICAgICAgIGFuZHMgKGV4cHJlc3Npb24gY3R4dCkgYm9keVxuICAgIHwgUGV4cF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gcHAgZiBcIi5cIlxuICAgIHwgXyAtPiBleHByZXNzaW9uMSBjdHh0IGYgeFxuXG5hbmQgZXhwcmVzc2lvbjEgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfb2JqZWN0IGNzIC0+IHBwIGYgXCIlYVwiIChjbGFzc19zdHJ1Y3R1cmUgY3R4dCkgY3NcbiAgICB8IF8gLT4gZXhwcmVzc2lvbjIgY3R4dCBmIHhcbigqIHVzZWQgaW4gW1BleHBfYXBwbHldICopXG5cbmFuZCBleHByZXNzaW9uMiBjdHh0IGYgeCA9XG4gIGlmIHgucGV4cF9hdHRyaWJ1dGVzIDw+IFtdIHRoZW4gZXhwcmVzc2lvbiBjdHh0IGYgeFxuICBlbHNlXG4gICAgbWF0Y2ggeC5wZXhwX2Rlc2Mgd2l0aFxuICAgIHwgUGV4cF9maWVsZCAoZSwgbGkpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhLiVhQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQZXhwX3NlbmQgKGUsIHMpIC0+IHBwIGYgXCJAWzxob3YyPiVhIyVzQF1cIiAoc2ltcGxlX2V4cHIgY3R4dCkgZSBzLnR4dFxuICAgIHwgXyAtPiBzaW1wbGVfZXhwciBjdHh0IGYgeFxuXG5hbmQgc2ltcGxlX2V4cHIgY3R4dCBmIHggPVxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIGV4cHJlc3Npb24gY3R4dCBmIHhcbiAgZWxzZVxuICAgIG1hdGNoIHgucGV4cF9kZXNjIHdpdGhcbiAgICB8IFBleHBfY29uc3RydWN0IF8gd2hlbiBpc19zaW1wbGVfY29uc3RydWN0ICh2aWV3X2V4cHIgeCkgLT4gKFxuICAgICAgICBtYXRjaCB2aWV3X2V4cHIgeCB3aXRoXG4gICAgICAgIHwgYG5pbCAtPiBwcCBmIFwiW11cIlxuICAgICAgICB8IGB0dXBsZSAtPiBwcCBmIFwiKClcIlxuICAgICAgICB8IGBsaXN0IHhzIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aHYwPlslYV1AXVwiXG4gICAgICAgICAgICAgIChsaXN0IChleHByZXNzaW9uICh1bmRlcl9zZW1pIGN0eHQpKSB+c2VwOlwiO0A7XCIpXG4gICAgICAgICAgICAgIHhzXG4gICAgICAgIHwgYHNpbXBsZSB4IC0+IGxvbmdpZGVudCBmIHhcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICB8IFBleHBfaWRlbnQgbGkgLT4gbG9uZ2lkZW50X2xvYyBmIGxpXG4gICAgKCogKG1hdGNoIHZpZXdfZml4aXR5X29mX2V4cCB4IHdpdGggKilcbiAgICAoKiB8YE5vcm1hbCAtPiBsb25naWRlbnRfbG9jIGYgbGkgKilcbiAgICAoKiB8IGBQcmVmaXggXyB8IGBJbmZpeCBfIC0+IHBwIGYgXCIoICVhIClcIiBsb25naWRlbnRfbG9jIGxpKSAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBjIC0+IGNvbnN0YW50IGYgY1xuICAgIHwgUGV4cF9wYWNrIG1lIC0+IHBwIGYgXCIobW9kdWxlQDslYSlcIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBleHBfdHVwbGUgbCAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWEpQF1cIiAobGlzdCAoc2ltcGxlX2V4cHIgY3R4dCkgfnNlcDpcIixAO1wiKSBsXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhIDogJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZSAoY29yZV90eXBlIGN0eHQpIGN0XG4gICAgfCBQZXhwX2NvZXJjZSAoZSwgY3RvMSwgY3QpIC0+XG4gICAgICAgIHBwIGYgXCIoJWElYSA6PiAlYSlcIiAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgICAgICAgKG9wdGlvbiAoY29yZV90eXBlIGN0eHQpIH5maXJzdDpcIiA6IFwiIH5sYXN0OlwiIFwiKVxuICAgICAgICAgIGN0bzFcbiAgICAgICAgICAoKiBubyBzZXAgaGludCopIChjb3JlX3R5cGUgY3R4dClcbiAgICAgICAgICBjdFxuICAgIHwgUGV4cF92YXJpYW50IChsLCBOb25lKSAtPiBwcCBmIFwiYCVzXCIgbFxuICAgIHwgUGV4cF9yZWNvcmQgKGwsIGVvKSAtPlxuICAgICAgICBsZXQgbG9uZ2lkZW50X3hfZXhwcmVzc2lvbiBmIChsaSwgZSkgPVxuICAgICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0OyBfIH07IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH1cbiAgICAgICAgICAgIHdoZW4gbGkudHh0ID0gdHh0IC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQF1cIiBsb25naWRlbnRfbG9jIGxpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQDs9QDslYUBdXCIgbG9uZ2lkZW50X2xvYyBsaSAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj57QDslYSVhQF1AO31AXVwiICgqIFwiQFs8aG92Mj57JWElYX1AXVwiICopXG4gICAgICAgICAgKG9wdGlvbiB+bGFzdDpcIiB3aXRoQDtcIiAoc2ltcGxlX2V4cHIgY3R4dCkpXG4gICAgICAgICAgZW9cbiAgICAgICAgICAobGlzdCBsb25naWRlbnRfeF9leHByZXNzaW9uIH5zZXA6XCI7QDtcIilcbiAgICAgICAgICBsXG4gICAgfCBQZXhwX2FycmF5IGwgLT5cbiAgICAgICAgcHAgZiBcIkBbPDA+QFs8Mj5bfCVhfF1AXUBdXCJcbiAgICAgICAgICAobGlzdCAoc2ltcGxlX2V4cHIgKHVuZGVyX3NlbWkgY3R4dCkpIH5zZXA6XCI7XCIpXG4gICAgICAgICAgbFxuICAgIHwgUGV4cF93aGlsZSAoZTEsIGUyKSAtPlxuICAgICAgICBsZXQgZm10IDogKF8sIF8sIF8pIGZvcm1hdCA9IFwiQFs8Mj53aGlsZUA7JWFAO2RvQDslYUA7ZG9uZUBdXCIgaW5cbiAgICAgICAgcHAgZiBmbXQgKGV4cHJlc3Npb24gY3R4dCkgZTEgKGV4cHJlc3Npb24gY3R4dCkgZTJcbiAgICB8IFBleHBfZm9yIChzLCBlMSwgZTIsIGRmLCBlMykgLT5cbiAgICAgICAgbGV0IGZtdCA6IChfLCBfLCBfKSBmb3JtYXQgPVxuICAgICAgICAgIFwiQFs8aHYwPkBbPGh2Mj5AWzwyPmZvciAlYSA9QDslYUA7JWElYUA7ZG9AXUA7JWFAXUA7ZG9uZUBdXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGV4cHJlc3Npb24gPSBleHByZXNzaW9uIGN0eHQgaW5cbiAgICAgICAgcHAgZiBmbXQgKHBhdHRlcm4gY3R4dCkgcyBleHByZXNzaW9uIGUxIGRpcmVjdGlvbl9mbGFnIGRmIGV4cHJlc3Npb24gZTJcbiAgICAgICAgICBleHByZXNzaW9uIGUzXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKGV4cHJlc3Npb24gY3R4dCkgZiB4XG5cbmFuZCBhdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChhdHRyaWJ1dGUgY3R4dCBmKSBsXG5hbmQgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiBsID0gTGlzdC5pdGVyIChpdGVtX2F0dHJpYnV0ZSBjdHh0IGYpIGxcblxuYW5kIGF0dHJpYnV0ZSBjdHh0IGYgYSA9XG4gIHBwIGYgXCJAWzwyPltAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgaXRlbV9hdHRyaWJ1dGUgY3R4dCBmIGEgPVxuICBwcCBmIFwiQFs8Mj5bQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgZmxvYXRpbmdfYXR0cmlidXRlIGN0eHQgZiBhID1cbiAgcHAgZiBcIkBbPDI+W0BAQEBAQCVzQCAlYV1AXVwiIGEuYXR0cl9uYW1lLnR4dCAocGF5bG9hZCBjdHh0KSBhLmF0dHJfcGF5bG9hZFxuXG5hbmQgdmFsdWVfZGVzY3JpcHRpb24gY3R4dCBmIHggPVxuICAoKiBub3RlOiB2YWx1ZV9kZXNjcmlwdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICAgICAgICBidXQgdGhleSdyZSBhbHJlYWR5IHByaW50ZWQgYnkgdGhlIGNhbGxlcnMgdGhpcyBtZXRob2QgKilcbiAgcHAgZiBcIkBbPGhvdjI+JWElYUBdXCIgKGNvcmVfdHlwZSBjdHh0KSB4LnB2YWxfdHlwZVxuICAgIChmdW4gZiB4IC0+XG4gICAgICBpZiB4LnB2YWxfcHJpbSA8PiBbXSB0aGVuXG4gICAgICAgIHBwIGYgXCJAID1AICVhXCIgKGxpc3QgY29uc3RhbnRfc3RyaW5nKSB4LnB2YWxfcHJpbSlcbiAgICB4XG5cbmFuZCBleHRlbnNpb24gY3R4dCBmIChzLCBlKSA9IHBwIGYgXCJAWzwyPlslJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiAocywgZSkgPVxuICBwcCBmIFwiQFs8Mj5bJSUlJSVzQCAlYV1AXVwiIHMudHh0IChwYXlsb2FkIGN0eHQpIGVcblxuYW5kIGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgeCA9XG4gIHBwIGYgXCJAWzxob3YyPmV4Y2VwdGlvbkAgJWFAXSVhXCJcbiAgICAoZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eHQpXG4gICAgeC5wdHlleG5fY29uc3RydWN0b3IgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnB0eWV4bl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3RmX2Rlc2Mgd2l0aFxuICB8IFBjdGZfaW5oZXJpdCBjdCAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJWFAXSVhXCIgKGNsYXNzX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfdmFsIChzLCBtZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+dmFsIEAgJWElYSVzQCA6QCAlYUBdJWFcIiBtdXRhYmxlX2ZsYWcgbWYgdmlydHVhbF9mbGFnIHZmIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjdGZfYXR0cmlidXRlc1xuICB8IFBjdGZfbWV0aG9kIChzLCBwZiwgdmYsIGN0KSAtPlxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kICVhICVhJXMgOkA7JWFAXSVhXCIgcHJpdmF0ZV9mbGFnIHBmIHZpcnR1YWxfZmxhZyB2ZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2NvbnN0cmFpbnQgKGN0MSwgY3QyKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+Y29uc3RyYWludEAgJWFAID1AICVhQF0lYVwiIChjb3JlX3R5cGUgY3R4dCkgY3QxXG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY3RmX2F0dHJpYnV0ZXNcbiAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBjdGZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjdGZfYXR0cmlidXRlc1xuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlIGN0eHQgZiB7IHBjc2lnX3NlbGYgPSBjdDsgcGNzaWdfZmllbGRzID0gbDsgXyB9ID1cbiAgcHAgZiBcIkBbPGh2MD5AWzxodjI+b2JqZWN0QFs8MT4lYUBdQCAlYUBdQCBlbmRAXVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbnk7IHB0eXBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT4gKClcbiAgICAgIHwgY3QgLT4gcHAgZiBcIiAoJWEpXCIgKGNvcmVfdHlwZSBjdHh0KSBjdClcbiAgICBjdFxuICAgIChsaXN0IChjbGFzc190eXBlX2ZpZWxkIGN0eHQpIH5zZXA6XCJAO1wiKVxuICAgIGxcblxuKCogY2FsbCBbY2xhc3Nfc2lnbmF0dXJlXSBjYWxsZWQgYnkgW2NsYXNzX3NpZ25hdHVyZV0gKilcbmFuZCBjbGFzc190eXBlIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY3R5X2Rlc2Mgd2l0aFxuICB8IFBjdHlfc2lnbmF0dXJlIGNzIC0+XG4gICAgICBjbGFzc19zaWduYXR1cmUgY3R4dCBmIGNzO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X2NvbnN0ciAobGksIGwpIC0+XG4gICAgICBwcCBmIFwiJWElYSVhXCJcbiAgICAgICAgKGZ1biBmIGwgLT5cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgfCBfIC0+IHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgIGwgbG9uZ2lkZW50X2xvYyBsaSAoYXR0cmlidXRlcyBjdHh0KSB4LnBjdHlfYXR0cmlidXRlc1xuICB8IFBjdHlfYXJyb3cgKGwsIGNvLCBjbCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVhQDstPkA7JWFAXVwiICgqIEZJWE1FIHJlbW92ZSBwYXJlbnMgbGF0ZXIgKilcbiAgICAgICAgKHR5cGVfd2l0aF9sYWJlbCBjdHh0KSAobCwgY28pIChjbGFzc190eXBlIGN0eHQpIGNsXG4gIHwgUGN0eV9leHRlbnNpb24gZSAtPlxuICAgICAgZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgYXR0cmlidXRlcyBjdHh0IGYgeC5wY3R5X2F0dHJpYnV0ZXNcbiAgfCBQY3R5X29wZW4gKG8sIGUpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj5sZXQgb3BlbiVzICVhIGluQDslYUBdXCJcbiAgICAgICAgKG92ZXJyaWRlIG8ucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc190eXBlIGN0eHQpIGVcblxuKCogW2NsYXNzIHR5cGUgYSA9IG9iamVjdCBlbmRdICopXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsID1cbiAgbGV0IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24ga3dkIGYgeCA9XG4gICAgbGV0IHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSA9IHggaW5cbiAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAID1AICVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgKGNsYXNzX3BhcmFtc19kZWYgY3R4dCkgbHMgdHh0IChjbGFzc190eXBlIGN0eHQpIHgucGNpX2V4cHJcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2lfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gXCJjbGFzcyB0eXBlXCIgZiB4XG4gIHwgeCA6OiB4cyAtPlxuICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImNsYXNzIHR5cGVcIilcbiAgICAgICAgeFxuICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgeHNcblxuYW5kIGNsYXNzX2ZpZWxkIGN0eHQgZiB4ID1cbiAgbWF0Y2ggeC5wY2ZfZGVzYyB3aXRoXG4gIHwgUGNmX2luaGVyaXQgKG92ZiwgY2UsIHNvKSAtPlxuICAgICAgcHAgZiBcIkBbPDI+aW5oZXJpdEAgJXNAICVhJWFAXSVhXCIgKG92ZXJyaWRlIG92ZikgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICAgICAgKGZ1biBmIHNvIC0+XG4gICAgICAgICAgbWF0Y2ggc28gd2l0aCBOb25lIC0+ICgpIHwgU29tZSBzIC0+IHBwIGYgXCJAIGFzICVzXCIgcy50eHQpXG4gICAgICAgIHNvIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfY29uY3JldGUgKG92ZiwgZSkpIC0+XG4gICAgICBwcCBmIFwiQFs8Mj52YWwlcyAlYSVzID1AOyVhQF0lYVwiIChvdmVycmlkZSBvdmYpIG11dGFibGVfZmxhZyBtZiBzLnR4dFxuICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9tZXRob2QgKHMsIHBmLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPm1ldGhvZCB2aXJ0dWFsICVhICVzIDpAOyVhQF0lYVwiIHByaXZhdGVfZmxhZyBwZiBzLnR4dFxuICAgICAgICAoY29yZV90eXBlIGN0eHQpIGN0IChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl92YWwgKHMsIG1mLCBDZmtfdmlydHVhbCBjdCkgLT5cbiAgICAgIHBwIGYgXCJAWzwyPnZhbCB2aXJ0dWFsICVhJXMgOkAgJWFAXSVhXCIgbXV0YWJsZV9mbGFnIG1mIHMudHh0XG4gICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX21ldGhvZCAocywgcGYsIENma19jb25jcmV0ZSAob3ZmLCBlKSkgLT5cbiAgICAgIGxldCBiaW5kIGUgPVxuICAgICAgICBiaW5kaW5nIGN0eHQgZlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9wYXQgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgcztcbiAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IExvY2F0aW9uLm5vbmU7XG4gICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHB2Yl9leHByID0gZTtcbiAgICAgICAgICAgIHB2Yl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgICBwdmJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPDI+bWV0aG9kJXMgJWElYUBdJWFcIiAob3ZlcnJpZGUgb3ZmKSBwcml2YXRlX2ZsYWcgcGZcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBleHBfZGVzYyA9IFBleHBfcG9seSAoZSwgU29tZSBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdOyBfIH0gLT5cbiAgICAgICAgICAgICAgcHAgZiBcIiVzIDpAOyVhPUA7JWFcIiBzLnR4dCAoY29yZV90eXBlIGN0eHQpIGN0IChleHByZXNzaW9uIGN0eHQpIGVcbiAgICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9wb2x5IChlLCBOb25lKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSAtPlxuICAgICAgICAgICAgICBiaW5kIGVcbiAgICAgICAgICB8IF8gLT4gYmluZCBlKVxuICAgICAgICBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9jb25zdHJhaW50IChjdDEsIGN0MikgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmNvbnN0cmFpbnQgJWEgPUA7JWFAXSVhXCIgKGNvcmVfdHlwZSBjdHh0KSBjdDEgKGNvcmVfdHlwZSBjdHh0KVxuICAgICAgICBjdDIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjZl9hdHRyaWJ1dGVzXG4gIHwgUGNmX2luaXRpYWxpemVyIGUgLT5cbiAgICAgIHBwIGYgXCJAWzwyPmluaXRpYWxpemVyQCAlYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wY2ZfYXR0cmlidXRlc1xuICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBmbG9hdGluZ19hdHRyaWJ1dGUgY3R4dCBmIGFcbiAgfCBQY2ZfZXh0ZW5zaW9uIGUgLT5cbiAgICAgIGl0ZW1fZXh0ZW5zaW9uIGN0eHQgZiBlO1xuICAgICAgaXRlbV9hdHRyaWJ1dGVzIGN0eHQgZiB4LnBjZl9hdHRyaWJ1dGVzXG5cbmFuZCBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIHsgcGNzdHJfc2VsZiA9IHA7IHBjc3RyX2ZpZWxkcyA9IGwgfSA9XG4gIHBwIGYgXCJAWzxodjA+QFs8aHYyPm9iamVjdCVhQDslYUBdQDtlbmRAXVwiXG4gICAgKGZ1biBmIHAgLT5cbiAgICAgIG1hdGNoIHAucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF9hbnkgLT4gKClcbiAgICAgIHwgUHBhdF9jb25zdHJhaW50IF8gLT4gcHAgZiBcIiAlYVwiIChwYXR0ZXJuIGN0eHQpIHBcbiAgICAgIHwgXyAtPiBwcCBmIFwiICglYSlcIiAocGF0dGVybiBjdHh0KSBwKVxuICAgIHBcbiAgICAobGlzdCAoY2xhc3NfZmllbGQgY3R4dCkpXG4gICAgbFxuXG5hbmQgY2xhc3NfZXhwciBjdHh0IGYgeCA9XG4gIGlmIHgucGNsX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChjbGFzc19leHByIGN0eHQpXG4gICAgICB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IFtdIH1cbiAgICAgIChhdHRyaWJ1dGVzIGN0eHQpIHgucGNsX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucGNsX2Rlc2Mgd2l0aFxuICAgIHwgUGNsX3N0cnVjdHVyZSBjcyAtPiBjbGFzc19zdHJ1Y3R1cmUgY3R4dCBmIGNzXG4gICAgfCBQY2xfZnVuIChsLCBlbywgcCwgZSkgLT5cbiAgICAgICAgcHAgZiBcImZ1bkAgJWFAIC0+QCAlYVwiIChsYWJlbF9leHAgY3R4dCkgKGwsIGVvLCBwKSAoY2xhc3NfZXhwciBjdHh0KSBlXG4gICAgfCBQY2xfbGV0IChyZiwgbCwgY2UpIC0+XG4gICAgICAgIHBwIGYgXCIlYUAgaW5AICVhXCIgKGJpbmRpbmdzIGN0eHQpIChyZiwgbCkgKGNsYXNzX2V4cHIgY3R4dCkgY2VcbiAgICB8IFBjbF9hcHBseSAoY2UsIGwpIC0+XG4gICAgICAgIHBwIGYgXCIoKCVhKUAgJWEpXCJcbiAgICAgICAgICAoKiBDZjogIzcyMDAgKikgKGNsYXNzX2V4cHIgY3R4dClcbiAgICAgICAgICBjZVxuICAgICAgICAgIChsaXN0IChsYWJlbF94X2V4cHJlc3Npb25fcGFyYW0gY3R4dCkpXG4gICAgICAgICAgbFxuICAgIHwgUGNsX2NvbnN0ciAobGksIGwpIC0+XG4gICAgICAgIHBwIGYgXCIlYSVhXCJcbiAgICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgICAgaWYgbCA8PiBbXSB0aGVuIHBwIGYgXCJbJWFdQCBcIiAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIpIGwpXG4gICAgICAgICAgbCBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQY2xfY29uc3RyYWludCAoY2UsIGN0KSAtPlxuICAgICAgICBwcCBmIFwiKCVhQCA6QCAlYSlcIiAoY2xhc3NfZXhwciBjdHh0KSBjZSAoY2xhc3NfdHlwZSBjdHh0KSBjdFxuICAgIHwgUGNsX2V4dGVuc2lvbiBlIC0+IGV4dGVuc2lvbiBjdHh0IGYgZVxuICAgIHwgUGNsX29wZW4gKG8sIGUpIC0+XG4gICAgICAgIHBwIGYgXCJAWzwyPmxldCBvcGVuJXMgJWEgaW5AOyVhQF1cIlxuICAgICAgICAgIChvdmVycmlkZSBvLnBvcGVuX292ZXJyaWRlKVxuICAgICAgICAgIGxvbmdpZGVudF9sb2Mgby5wb3Blbl9leHByIChjbGFzc19leHByIGN0eHQpIGVcblxuYW5kIG1vZHVsZV90eXBlIGN0eHQgZiB4ID1cbiAgaWYgeC5wbXR5X2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfdHlwZSBjdHh0KVxuICAgICAgeyB4IHdpdGggcG10eV9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbXR5X2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfZnVuY3RvciAoVW5pdCwgbXQyKSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yICgpIC0+QCAlYUBdXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10MlxuICAgIHwgUG10eV9mdW5jdG9yIChOYW1lZCAocywgbXQxKSwgbXQyKSAtPiAoXG4gICAgICAgIG1hdGNoIHMudHh0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj4lYUAgLT5AICVhQF1cIiAobW9kdWxlX3R5cGUxIGN0eHQpIG10MVxuICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQyXG4gICAgICAgIHwgU29tZSBuYW1lIC0+XG4gICAgICAgICAgICBwcCBmIFwiQFs8aG92Mj5mdW5jdG9yQCAoJXNAIDpAICVhKUAgLT5AICVhQF1cIiBuYW1lXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSBtdDEgKG1vZHVsZV90eXBlIGN0eHQpIG10MilcbiAgICB8IFBtdHlfd2l0aCAobXQsIFtdKSAtPiBtb2R1bGVfdHlwZSBjdHh0IGYgbXRcbiAgICB8IFBtdHlfd2l0aCAobXQsIGwpIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPiVhQCB3aXRoQCAlYUBdXCIgKG1vZHVsZV90eXBlMSBjdHh0KSBtdFxuICAgICAgICAgIChsaXN0ICh3aXRoX2NvbnN0cmFpbnQgY3R4dCkgfnNlcDpcIkAgYW5kQCBcIilcbiAgICAgICAgICBsXG4gICAgfCBfIC0+IG1vZHVsZV90eXBlMSBjdHh0IGYgeFxuXG5hbmQgd2l0aF9jb25zdHJhaW50IGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUHdpdGhfdHlwZSAobGksICh7IHB0eXBlX3BhcmFtcyA9IGxzOyBfIH0gYXMgdGQpKSAtPlxuICAgICAgbGV0IGxzID0gTGlzdC5tYXAgZnN0IGxzIGluXG4gICAgICBwcCBmIFwidHlwZUAgJWEgJWEgPUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kdWxlIChsaSwgbGkyKSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSAlYSA9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlIChsaSwgbXR5KSAtPlxuICAgICAgcHAgZiBcIm1vZHVsZSB0eXBlICVhID1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG4gIHwgUHdpdGhfdHlwZXN1YnN0IChsaSwgKHsgcHR5cGVfcGFyYW1zID0gbHM7IF8gfSBhcyB0ZCkpIC0+XG4gICAgICBsZXQgbHMgPSBMaXN0Lm1hcCBmc3QgbHMgaW5cbiAgICAgIHBwIGYgXCJ0eXBlQCAlYSAlYSA6PUAgJWFcIlxuICAgICAgICAobGlzdCAoY29yZV90eXBlIGN0eHQpIH5zZXA6XCIsXCIgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiKVxuICAgICAgICBscyBsb25naWRlbnRfbG9jIGxpICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHRkXG4gIHwgUHdpdGhfbW9kc3Vic3QgKGxpLCBsaTIpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlICVhIDo9QCAlYVwiIGxvbmdpZGVudF9sb2MgbGkgbG9uZ2lkZW50X2xvYyBsaTJcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGxpLCBtdHkpIC0+XG4gICAgICBwcCBmIFwibW9kdWxlIHR5cGUgJWEgOj1AICVhXCIgbG9uZ2lkZW50X2xvYyBsaSAobW9kdWxlX3R5cGUgY3R4dCkgbXR5XG5cbmFuZCBtb2R1bGVfdHlwZTEgY3R4dCBmIHggPVxuICBpZiB4LnBtdHlfYXR0cmlidXRlcyA8PiBbXSB0aGVuIG1vZHVsZV90eXBlIGN0eHQgZiB4XG4gIGVsc2VcbiAgICBtYXRjaCB4LnBtdHlfZGVzYyB3aXRoXG4gICAgfCBQbXR5X2lkZW50IGxpIC0+IHBwIGYgXCIlYVwiIGxvbmdpZGVudF9sb2MgbGlcbiAgICB8IFBtdHlfYWxpYXMgbGkgLT4gcHAgZiBcIihtb2R1bGUgJWEpXCIgbG9uZ2lkZW50X2xvYyBsaVxuICAgIHwgUG10eV9zaWduYXR1cmUgcyAtPlxuICAgICAgICBwcCBmIFwiQFs8aHYwPkBbPGh2Mj5zaWdAICVhQF1AIGVuZEBdXCIgKCogXCJAWzxob3Y+c2lnQCAlYUAgZW5kQF1cIiAqKVxuICAgICAgICAgIChsaXN0IChzaWduYXR1cmVfaXRlbSBjdHh0KSlcbiAgICAgICAgICBzXG4gICAgICAgICgqIEZJWE1FIHdyb25nIGluZGVudGF0aW9uKilcbiAgICB8IFBtdHlfdHlwZW9mIG1lIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgb2ZAICVhQF1cIiAobW9kdWxlX2V4cHIgY3R4dCkgbWVcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIGUgLT4gZXh0ZW5zaW9uIGN0eHQgZiBlXG4gICAgfCBfIC0+IHBhcmVuIHRydWUgKG1vZHVsZV90eXBlIGN0eHQpIGYgeFxuXG5hbmQgc2lnbmF0dXJlIGN0eHQgZiB4ID0gbGlzdCB+c2VwOlwiQFxcblwiIChzaWduYXR1cmVfaXRlbSBjdHh0KSBmIHhcblxuYW5kIHNpZ25hdHVyZV9pdGVtIGN0eHQgZiB4IDogdW5pdCA9XG4gIG1hdGNoIHgucHNpZ19kZXNjIHdpdGhcbiAgfCBQc2lnX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHNpZ190eXBlc3Vic3QgbCAtPlxuICAgICAgKCogUHNpZ190eXBlc3Vic3QgaXMgbmV2ZXIgcmVjdXJzaXZlLCBidXQgd2Ugc3BlY2lmeSBbUmVjdXJzaXZlXSBoZXJlIHRvXG4gICAgICAgICBhdm9pZCBwcmludGluZyBhIFtub25yZWNdIGZsYWcsIHdoaWNoIHdvdWxkIGJlIHJlamVjdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAqKVxuICAgICAgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKFJlY3Vyc2l2ZSwgZmFsc2UsIGwpXG4gIHwgUHNpZ192YWx1ZSB2ZCAtPlxuICAgICAgbGV0IGludHJvID0gaWYgdmQucHZhbF9wcmltID0gW10gdGhlbiBcInZhbFwiIGVsc2UgXCJleHRlcm5hbFwiIGluXG4gICAgICBwcCBmIFwiQFs8Mj4lc0AgJWFAIDpAICVhQF0lYVwiIGludHJvIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX3R5cGV4dCB0ZSAtPiB0eXBlX2V4dGVuc2lvbiBjdHh0IGYgdGVcbiAgfCBQc2lnX2V4Y2VwdGlvbiBlZCAtPiBleGNlcHRpb25fZGVjbGFyYXRpb24gY3R4dCBmIGVkXG4gIHwgUHNpZ19jbGFzcyBsIC0+IChcbiAgICAgIGxldCBjbGFzc19kZXNjcmlwdGlvbiBrd2QgZlxuICAgICAgICAgICh7IHBjaV9wYXJhbXMgPSBsczsgcGNpX25hbWUgPSB7IHR4dDsgXyB9OyBfIH0gYXMgeCkgPVxuICAgICAgICBwcCBmIFwiQFs8Mj4lcyAlYSVhJXNAOzpAOyVhQF0lYVwiIGt3ZCB2aXJ0dWFsX2ZsYWcgeC5wY2lfdmlydFxuICAgICAgICAgIChjbGFzc19wYXJhbXNfZGVmIGN0eHQpIGxzIHR4dCAoY2xhc3NfdHlwZSBjdHh0KSB4LnBjaV9leHByXG4gICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB4LnBjaV9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IFsgeCBdIC0+IGNsYXNzX2Rlc2NyaXB0aW9uIFwiY2xhc3NcIiBmIHhcbiAgICAgIHwgeCA6OiB4cyAtPlxuICAgICAgICAgIHBwIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgICAgICAgIChjbGFzc19kZXNjcmlwdGlvbiBcImNsYXNzXCIpXG4gICAgICAgICAgICB4XG4gICAgICAgICAgICAobGlzdCB+c2VwOlwiQCxcIiAoY2xhc3NfZGVzY3JpcHRpb24gXCJhbmRcIikpXG4gICAgICAgICAgICB4cylcbiAgfCBQc2lnX21vZHVsZVxuICAgICAgKHtcbiAgICAgICAgIHBtZF90eXBlID0geyBwbXR5X2Rlc2MgPSBQbXR5X2FsaWFzIGFsaWFzOyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHBtZCkgLT5cbiAgICAgIHBwIGYgXCJAWzxob3Y+bW9kdWxlQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICBsb25naWRlbnRfbG9jIGFsaWFzIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgcG1kLnBtZF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R1bGUgcG1kIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDpAICVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgcG1kLnBtZF9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHBtZC5wbWRfdHlwZSAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpXG4gICAgICAgIHBtZC5wbWRfYXR0cmlidXRlc1xuICB8IFBzaWdfbW9kc3Vic3QgcG1zIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Pm1vZHVsZUAgJXNAIDo9QCAlYUBdJWFcIiBwbXMucG1zX25hbWUudHh0IGxvbmdpZGVudF9sb2NcbiAgICAgICAgcG1zLnBtc19tYW5pZmVzdCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHBtcy5wbXNfYXR0cmlidXRlc1xuICB8IFBzaWdfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+b3BlbiVzQCAlYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIGxvbmdpZGVudF9sb2Mgb2QucG9wZW5fZXhwciAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIG9kLnBvcGVuX2F0dHJpYnV0ZXNcbiAgfCBQc2lnX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHNpZ19tb2R0eXBlIHsgcG10ZF9uYW1lID0gczsgcG10ZF90eXBlID0gbWQ7IHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZUAgdHlwZUAgJXMlYUBdJWFcIiBzLnR4dFxuICAgICAgICAoZnVuIGYgbWQgLT5cbiAgICAgICAgICBtYXRjaCBtZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIHBwX3ByaW50X3NwYWNlIGYgKCk7XG4gICAgICAgICAgICAgIHBwIGYgXCJAID1AICVhXCIgKG1vZHVsZV90eXBlIGN0eHQpIG10KVxuICAgICAgICBtZCAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3QgeyBwbXRkX25hbWUgPSBzOyBwbXRkX3R5cGUgPSBtZDsgcG10ZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIC0+XG4gICAgICBsZXQgbWQgPVxuICAgICAgICBtYXRjaCBtZCB3aXRoIE5vbmUgLT4gYXNzZXJ0IGZhbHNlICgqIGFzdCBpbnZhcmlhbnQgKikgfCBTb21lIG10IC0+IG10XG4gICAgICBpblxuICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCB0eXBlQCAlc0AgOj1AICVhQF0lYVwiIHMudHh0IChtb2R1bGVfdHlwZSBjdHh0KSBtZFxuICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgUHNpZ19jbGFzc190eXBlIGwgLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbl9saXN0IGN0eHQgZiBsXG4gIHwgUHNpZ19yZWNtb2R1bGUgZGVjbHMgLT5cbiAgICAgIGxldCByZWMgc3RyaW5nX3hfbW9kdWxlX3R5cGVfbGlzdCBmID8oZmlyc3QgPSB0cnVlKSBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCBwbWQgOjogdGwgLT5cbiAgICAgICAgICAgIGlmIG5vdCBmaXJzdCB0aGVuXG4gICAgICAgICAgICAgIHBwIGYgXCJAIEBbPGhvdjI+YW5kQCAlczpAICVhQF0lYVwiXG4gICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWQucG1kX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAgIChtb2R1bGVfdHlwZTEgY3R4dCkgcG1kLnBtZF90eXBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgICBwbWQucG1kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOkAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtZC5wbWRfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgKG1vZHVsZV90eXBlMSBjdHh0KSBwbWQucG1kX3R5cGUgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgICAgIHBtZC5wbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHN0cmluZ194X21vZHVsZV90eXBlX2xpc3QgZiB+Zmlyc3Q6ZmFsc2UgdGxcbiAgICAgIGluXG4gICAgICBzdHJpbmdfeF9tb2R1bGVfdHlwZV9saXN0IGYgZGVjbHNcbiAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzaWdfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIG1vZHVsZV9leHByIGN0eHQgZiB4ID1cbiAgaWYgeC5wbW9kX2F0dHJpYnV0ZXMgPD4gW10gdGhlblxuICAgIHBwIGYgXCIoKCVhKSVhKVwiIChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgeyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfVxuICAgICAgKGF0dHJpYnV0ZXMgY3R4dCkgeC5wbW9kX2F0dHJpYnV0ZXNcbiAgZWxzZVxuICAgIG1hdGNoIHgucG1vZF9kZXNjIHdpdGhcbiAgICB8IFBtb2Rfc3RydWN0dXJlIHMgLT5cbiAgICAgICAgcHAgZiBcIkBbPGh2Mj5zdHJ1Y3RAO0BbPDA+JWFAXUA7PDEgLTI+ZW5kQF1cIlxuICAgICAgICAgIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSBjdHh0KSB+c2VwOlwiQFxcblwiKVxuICAgICAgICAgIHNcbiAgICB8IFBtb2RfY29uc3RyYWludCAobWUsIG10KSAtPlxuICAgICAgICBwcCBmIFwiQFs8aG92Mj4oJWFAIDpAICVhKUBdXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lIChtb2R1bGVfdHlwZSBjdHh0KSBtdFxuICAgIHwgUG1vZF9pZGVudCBsaSAtPiBwcCBmIFwiJWFcIiBsb25naWRlbnRfbG9jIGxpXG4gICAgfCBQbW9kX2Z1bmN0b3IgKFVuaXQsIG1lKSAtPiBwcCBmIFwiZnVuY3RvciAoKUA7LT5AOyVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2Z1bmN0b3IgKE5hbWVkIChzLCBtdCksIG1lKSAtPlxuICAgICAgICBwcCBmIFwiZnVuY3RvckAgKCVzQCA6QCAlYSlAOy0+QDslYVwiXG4gICAgICAgICAgKE9wdGlvbi52YWx1ZSBzLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQgKG1vZHVsZV9leHByIGN0eHQpIG1lXG4gICAgfCBQbW9kX2FwcGx5IChtZTEsIG1lMikgLT5cbiAgICAgICAgcHAgZiBcIiglYSkoJWEpXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lMSAobW9kdWxlX2V4cHIgY3R4dCkgbWUyXG4gICAgICAgICgqIENmOiAjNzIwMCAqKVxuICAgIHwgUG1vZF91bnBhY2sgZSAtPiBwcCBmIFwiKHZhbEAgJWEpXCIgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgUG1vZF9leHRlbnNpb24gZSAtPiBleHRlbnNpb24gY3R4dCBmIGVcblxuYW5kIHN0cnVjdHVyZSBjdHh0IGYgeCA9IGxpc3QgfnNlcDpcIkBcXG5cIiAoc3RydWN0dXJlX2l0ZW0gY3R4dCkgZiB4XG5cbmFuZCBwYXlsb2FkIGN0eHQgZiA9IGZ1bmN0aW9uXG4gIHwgUFN0ciBbIHsgcHN0cl9kZXNjID0gUHN0cl9ldmFsIChlLCBhdHRycykgfSBdIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQU3RyIHggLT4gc3RydWN0dXJlIGN0eHQgZiB4XG4gIHwgUFR5cCB4IC0+XG4gICAgICBwcCBmIFwiOkAgXCI7XG4gICAgICBjb3JlX3R5cGUgY3R4dCBmIHhcbiAgfCBQU2lnIHggLT5cbiAgICAgIHBwIGYgXCI6QCBcIjtcbiAgICAgIHNpZ25hdHVyZSBjdHh0IGYgeFxuICB8IFBQYXQgKHgsIE5vbmUpIC0+XG4gICAgICBwcCBmIFwiP0AgXCI7XG4gICAgICBwYXR0ZXJuIGN0eHQgZiB4XG4gIHwgUFBhdCAoeCwgU29tZSBlKSAtPlxuICAgICAgcHAgZiBcIj9AIFwiO1xuICAgICAgcGF0dGVybiBjdHh0IGYgeDtcbiAgICAgIHBwIGYgXCIgd2hlbiBcIjtcbiAgICAgIGV4cHJlc3Npb24gY3R4dCBmIGVcblxuKCogdHJhbnNmb3JtIFtmID0gZnVuIGcgaCAtPiAuLl0gdG8gW2YgZyBoID0gLi4uIF0gY291bGQgYmUgaW1wcm92ZWQgKilcbmFuZCBiaW5kaW5nIGN0eHQgZiB7IHB2Yl9wYXQgPSBwOyBwdmJfZXhwciA9IHg7IF8gfSA9XG4gICgqIC5wdmJfYXR0cmlidXRlcyBoYXZlIGFscmVhZHkgYmVlbiBwcmludGVkIGJ5IHRoZSBjYWxsZXIsICNiaW5kaW5ncyAqKVxuICBsZXQgcmVjIHBwX3ByaW50X3BleHBfZnVuY3Rpb24gZiB4ID1cbiAgICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuIHBwIGYgXCI9QDslYVwiIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICBlbHNlXG4gICAgICBtYXRjaCB4LnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfZnVuIChsYWJlbCwgZW8sIHAsIGUpIC0+XG4gICAgICAgICAgaWYgbGFiZWwgPSBOb2xhYmVsIHRoZW5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBwcCBmIFwiJWFAICVhXCIgKGxhYmVsX2V4cCBjdHh0KSAobGFiZWwsIGVvLCBwKSBwcF9wcmludF9wZXhwX2Z1bmN0aW9uXG4gICAgICAgICAgICAgIGVcbiAgICAgIHwgUGV4cF9uZXd0eXBlIChzdHIsIGUpIC0+XG4gICAgICAgICAgcHAgZiBcIih0eXBlQCAlcylAICVhXCIgc3RyLnR4dCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIGVcbiAgICAgIHwgXyAtPiBwcCBmIFwiPUA7JWFcIiAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gIGluXG4gIGxldCB0eXZhcnNfc3RyIHR5dmFycyA9IExpc3QubWFwIChmdW4gdiAtPiB2LnR4dCkgdHl2YXJzIGluXG4gIGxldCBpc19kZXN1Z2FyZWRfZ2FkdCBwIGUgPVxuICAgIGxldCBnYWR0X3BhdHRlcm4gPVxuICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICB8IHtcbiAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAgICggKHsgcHBhdF9kZXNjID0gUHBhdF92YXIgXyB9IGFzIHBhdCksXG4gICAgICAgICAgICAgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSApO1xuICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIFNvbWUgKHBhdCwgYXJnc190eXZhcnMsIHJ0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCByZWMgZ2FkdF9leHAgdHl2YXJzIGUgPVxuICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9uZXd0eXBlICh0eXZhciwgZSk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBnYWR0X2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCBnYWR0X2V4cCA9IGdhZHRfZXhwIFtdIGUgaW5cbiAgICBtYXRjaCAoZ2FkdF9wYXR0ZXJuLCBnYWR0X2V4cCkgd2l0aFxuICAgIHwgU29tZSAocCwgcHRfdHl2YXJzLCBwdF9jdCksIFNvbWUgKGVfdHl2YXJzLCBlLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV90eXBlX2NvbnN0cnVjdG9ycyBlX3R5dmFycyBlX2N0IGluXG4gICAgICAgIGlmIGV0eSA9IHB0X2N0IHRoZW4gU29tZSAocCwgcHRfdHl2YXJzLCBlX2N0LCBlKSBlbHNlIE5vbmVcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBpZiB4LnBleHBfYXR0cmlidXRlcyA8PiBbXSB0aGVuXG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCB7XG4gICAgIHBwYXRfZGVzYyA9XG4gICAgICAgUHBhdF9jb25zdHJhaW50XG4gICAgICAgICAoICh7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IF8gfSBhcyBwYXQpLFxuICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9IGFzIHR5cCkgKTtcbiAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgIF87XG4gICAgfSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogJWFAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBhdCAoY29yZV90eXBlIGN0eHQpIHR5cFxuICAgICAgICAgIChleHByZXNzaW9uIGN0eHQpIHhcbiAgICB8IF8gLT4gcHAgZiBcIiVhQDs9QDslYVwiIChwYXR0ZXJuIGN0eHQpIHAgKGV4cHJlc3Npb24gY3R4dCkgeFxuICBlbHNlXG4gICAgbWF0Y2ggaXNfZGVzdWdhcmVkX2dhZHQgcCB4IHdpdGhcbiAgICB8IFNvbWUgKHAsIFtdLCBjdCwgZSkgLT5cbiAgICAgICAgcHAgZiBcIiVhQDs6ICVhQDs9QDslYVwiIChzaW1wbGVfcGF0dGVybiBjdHh0KSBwIChjb3JlX3R5cGUgY3R4dCkgY3RcbiAgICAgICAgICAoZXhwcmVzc2lvbiBjdHh0KSBlXG4gICAgfCBTb21lIChwLCB0eXZhcnMsIGN0LCBlKSAtPlxuICAgICAgICBwcCBmIFwiJWFAOzogdHlwZUA7JWEuQDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcFxuICAgICAgICAgIChsaXN0IHBwX3ByaW50X3N0cmluZyB+c2VwOlwiQDtcIilcbiAgICAgICAgICAodHl2YXJzX3N0ciB0eXZhcnMpIChjb3JlX3R5cGUgY3R4dCkgY3QgKGV4cHJlc3Npb24gY3R4dCkgZVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICB8IHsgcHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwLCB0eSk7IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT4gKFxuICAgICAgICAgICAgKCogc3BlY2lhbCBjYXNlIGZvciB0aGUgZmlyc3QqKVxuICAgICAgICAgICAgbWF0Y2ggdHkgd2l0aFxuICAgICAgICAgICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBwdHlwX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgICAgcHAgZiBcIiVhQDs6QDslYUA7PUA7JWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCAoY29yZV90eXBlIGN0eHQpXG4gICAgICAgICAgICAgICAgICB0eSAoZXhwcmVzc2lvbiBjdHh0KSB4XG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBwcCBmIFwiKCVhQDs6QDslYSlAOz1AOyVhXCIgKHNpbXBsZV9wYXR0ZXJuIGN0eHQpIHBcbiAgICAgICAgICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgdHkgKGV4cHJlc3Npb24gY3R4dCkgeClcbiAgICAgICAgfCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIF87IHBwYXRfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICAgIHBwIGYgXCIlYUAgJWFcIiAoc2ltcGxlX3BhdHRlcm4gY3R4dCkgcCBwcF9wcmludF9wZXhwX2Z1bmN0aW9uIHhcbiAgICAgICAgfCBfIC0+IHBwIGYgXCIlYUA7PUA7JWFcIiAocGF0dGVybiBjdHh0KSBwIChleHByZXNzaW9uIGN0eHQpIHgpXG5cbigqIFtpbl0gaXMgbm90IHByaW50ZWQgKilcbmFuZCBiaW5kaW5ncyBjdHh0IGYgKHJmLCBsKSA9XG4gIGxldCBiaW5kaW5nIGt3ZCByZiBmIHggPVxuICAgIHBwIGYgXCJAWzwyPiVzICVhJWFAXSVhXCIga3dkIHJlY19mbGFnIHJmIChiaW5kaW5nIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdmJfYXR0cmlidXRlc1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IFsgeCBdIC0+IGJpbmRpbmcgXCJsZXRcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiIChiaW5kaW5nIFwibGV0XCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKGJpbmRpbmcgXCJhbmRcIiBOb25yZWN1cnNpdmUpKVxuICAgICAgICB4c1xuXG5hbmQgYmluZGluZ19vcCBjdHh0IGYgeCA9XG4gIG1hdGNoICh4LnBib3BfcGF0LCB4LnBib3BfZXhwKSB3aXRoXG4gIHwgKCB7IHBwYXRfZGVzYyA9IFBwYXRfdmFyIHsgdHh0ID0gcHZhcjsgXyB9OyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgXyB9LFxuICAgICAge1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGV2YXI7IF8gfTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIF87XG4gICAgICB9IClcbiAgICB3aGVuIHB2YXIgPSBldmFyIC0+XG4gICAgICBwcCBmIFwiQFs8Mj4lcyAlc0BdXCIgeC5wYm9wX29wLnR4dCBldmFyXG4gIHwgcGF0LCBleHAgLT5cbiAgICAgIHBwIGYgXCJAWzwyPiVzICVhQDs9QDslYUBdXCIgeC5wYm9wX29wLnR4dCAocGF0dGVybiBjdHh0KSBwYXRcbiAgICAgICAgKGV4cHJlc3Npb24gY3R4dCkgZXhwXG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbSBjdHh0IGYgeCA9XG4gIG1hdGNoIHgucHN0cl9kZXNjIHdpdGhcbiAgfCBQc3RyX2V2YWwgKGUsIGF0dHJzKSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+OzslYUBdJWFcIiAoZXhwcmVzc2lvbiBjdHh0KSBlIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgYXR0cnNcbiAgfCBQc3RyX3R5cGUgKF8sIFtdKSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBQc3RyX3R5cGUgKHJmLCBsKSAtPiB0eXBlX2RlZl9saXN0IGN0eHQgZiAocmYsIHRydWUsIGwpXG4gIHwgUHN0cl92YWx1ZSAocmYsIGwpIC0+XG4gICAgICAoKiBwcCBmIFwiQFs8aG92Mj5sZXQgJWElYUBdXCIgIHJlY19mbGFnIHJmIGJpbmRpbmdzIGwgKilcbiAgICAgIHBwIGYgXCJAWzwyPiVhQF1cIiAoYmluZGluZ3MgY3R4dCkgKHJmLCBsKVxuICB8IFBzdHJfdHlwZXh0IHRlIC0+IHR5cGVfZXh0ZW5zaW9uIGN0eHQgZiB0ZVxuICB8IFBzdHJfZXhjZXB0aW9uIGVkIC0+IGV4Y2VwdGlvbl9kZWNsYXJhdGlvbiBjdHh0IGYgZWRcbiAgfCBQc3RyX21vZHVsZSB4IC0+XG4gICAgICBsZXQgcmVjIG1vZHVsZV9oZWxwZXIgPSBmdW5jdGlvblxuICAgICAgICB8IHsgcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChhcmdfb3B0LCBtZScpOyBwbW9kX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAobWF0Y2ggYXJnX29wdCB3aXRoXG4gICAgICAgICAgICB8IFVuaXQgLT4gcHAgZiBcIigpXCJcbiAgICAgICAgICAgIHwgTmFtZWQgKHMsIG10KSAtPlxuICAgICAgICAgICAgICAgIHBwIGYgXCIoJXM6JWEpXCJcbiAgICAgICAgICAgICAgICAgIChPcHRpb24udmFsdWUgcy50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgICAgICAobW9kdWxlX3R5cGUgY3R4dCkgbXQpO1xuICAgICAgICAgICAgbW9kdWxlX2hlbHBlciBtZSdcbiAgICAgICAgfCBtZSAtPiBtZVxuICAgICAgaW5cbiAgICAgIHBwIGYgXCJAWzxob3YyPm1vZHVsZSAlcyVhQF0lYVwiXG4gICAgICAgIChPcHRpb24udmFsdWUgeC5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgIChmdW4gZiBtZSAtPlxuICAgICAgICAgIGxldCBtZSA9IG1vZHVsZV9oZWxwZXIgbWUgaW5cbiAgICAgICAgICBtYXRjaCBtZSB3aXRoXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgIHBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgUG1vZF9jb25zdHJhaW50XG4gICAgICAgICAgICAgICAobWUnLCAoeyBwbXR5X2Rlc2MgPSBQbXR5X2lkZW50IF8gfCBQbXR5X3NpZ25hdHVyZSBfOyBfIH0gYXMgbXQpKTtcbiAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBwcCBmIFwiIDpAOyVhQDs9QDslYUA7XCIgKG1vZHVsZV90eXBlIGN0eHQpIG10IChtb2R1bGVfZXhwciBjdHh0KVxuICAgICAgICAgICAgICAgIG1lJ1xuICAgICAgICAgIHwgXyAtPiBwcCBmIFwiID1AICVhXCIgKG1vZHVsZV9leHByIGN0eHQpIG1lKVxuICAgICAgICB4LnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wbWJfYXR0cmlidXRlc1xuICB8IFBzdHJfb3BlbiBvZCAtPlxuICAgICAgcHAgZiBcIkBbPDI+b3BlbiVzQDslYUBdJWFcIlxuICAgICAgICAob3ZlcnJpZGUgb2QucG9wZW5fb3ZlcnJpZGUpXG4gICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBvZC5wb3Blbl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgb2QucG9wZW5fYXR0cmlidXRlc1xuICB8IFBzdHJfbW9kdHlwZSB7IHBtdGRfbmFtZSA9IHM7IHBtdGRfdHlwZSA9IG1kOyBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9IC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5tb2R1bGVAIHR5cGVAICVzJWFAXSVhXCIgcy50eHRcbiAgICAgICAgKGZ1biBmIG1kIC0+XG4gICAgICAgICAgbWF0Y2ggbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBwcF9wcmludF9zcGFjZSBmICgpO1xuICAgICAgICAgICAgICBwcCBmIFwiQCA9QCAlYVwiIChtb2R1bGVfdHlwZSBjdHh0KSBtdClcbiAgICAgICAgbWQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBhdHRyc1xuICB8IFBzdHJfY2xhc3MgbCAtPiAoXG4gICAgICBsZXQgZXh0cmFjdF9jbGFzc19hcmdzIGNsID1cbiAgICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBjbF9kZXNjID0gUGNsX2Z1biAobCwgZW8sIHAsIGNsJyk7IHBjbF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICAgICAgICBsb29wICgobCwgZW8sIHApIDo6IGFjYykgY2wnXG4gICAgICAgICAgfCBjbCAtPiAoTGlzdC5yZXYgYWNjLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFyZ3MsIGNsID0gbG9vcCBbXSBjbCBpblxuICAgICAgICBsZXQgY29uc3RyLCBjbCA9XG4gICAgICAgICAgbWF0Y2ggY2wgd2l0aFxuICAgICAgICAgIHwgeyBwY2xfZGVzYyA9IFBjbF9jb25zdHJhaW50IChjbCcsIGN0KTsgcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IC0+XG4gICAgICAgICAgICAgIChTb21lIGN0LCBjbCcpXG4gICAgICAgICAgfCBfIC0+IChOb25lLCBjbClcbiAgICAgICAgaW5cbiAgICAgICAgKGFyZ3MsIGNvbnN0ciwgY2wpXG4gICAgICBpblxuICAgICAgbGV0IGNsYXNzX2NvbnN0cmFpbnQgZiBjdCA9IHBwIGYgXCI6IEBbJWFAXSBcIiAoY2xhc3NfdHlwZSBjdHh0KSBjdCBpblxuICAgICAgbGV0IGNsYXNzX2RlY2xhcmF0aW9uIGt3ZCBmXG4gICAgICAgICAgKHsgcGNpX3BhcmFtcyA9IGxzOyBwY2lfbmFtZSA9IHsgdHh0OyBfIH07IF8gfSBhcyB4KSA9XG4gICAgICAgIGxldCBhcmdzLCBjb25zdHIsIGNsID0gZXh0cmFjdF9jbGFzc19hcmdzIHgucGNpX2V4cHIgaW5cbiAgICAgICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzICVhJWE9QDslYUBdJWFcIiBrd2QgdmlydHVhbF9mbGFnIHgucGNpX3ZpcnRcbiAgICAgICAgICAoY2xhc3NfcGFyYW1zX2RlZiBjdHh0KSBscyB0eHRcbiAgICAgICAgICAobGlzdCAobGFiZWxfZXhwIGN0eHQpKVxuICAgICAgICAgIGFyZ3MgKG9wdGlvbiBjbGFzc19jb25zdHJhaW50KSBjb25zdHIgKGNsYXNzX2V4cHIgY3R4dCkgY2xcbiAgICAgICAgICAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucGNpX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgWyB4IF0gLT4gY2xhc3NfZGVjbGFyYXRpb24gXCJjbGFzc1wiIGYgeFxuICAgICAgfCB4IDo6IHhzIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPHY+JWFALCVhQF1cIlxuICAgICAgICAgICAgKGNsYXNzX2RlY2xhcmF0aW9uIFwiY2xhc3NcIilcbiAgICAgICAgICAgIHhcbiAgICAgICAgICAgIChsaXN0IH5zZXA6XCJALFwiIChjbGFzc19kZWNsYXJhdGlvbiBcImFuZFwiKSlcbiAgICAgICAgICAgIHhzKVxuICB8IFBzdHJfY2xhc3NfdHlwZSBsIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb25fbGlzdCBjdHh0IGYgbFxuICB8IFBzdHJfcHJpbWl0aXZlIHZkIC0+XG4gICAgICBwcCBmIFwiQFs8aG92Mj5leHRlcm5hbEAgJWFAIDpAICVhQF0lYVwiIHByb3RlY3RfaWRlbnQgdmQucHZhbF9uYW1lLnR4dFxuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb24gY3R4dCkgdmQgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSB2ZC5wdmFsX2F0dHJpYnV0ZXNcbiAgfCBQc3RyX2luY2x1ZGUgaW5jbCAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+aW5jbHVkZUAgJWFAXSVhXCIgKG1vZHVsZV9leHByIGN0eHQpIGluY2wucGluY2xfbW9kXG4gICAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgaW5jbC5waW5jbF9hdHRyaWJ1dGVzXG4gIHwgUHN0cl9yZWNtb2R1bGUgZGVjbHMgLT4gKFxuICAgICAgKCogMy4wNyAqKVxuICAgICAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICAgICAgfCB7IHBtYl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2NvbnN0cmFpbnQgKGV4cHIsIHR5cCkgfSB9IGFzIHBtYiAtPlxuICAgICAgICAgICAgcHAgZiBcIkBbPGhvdjI+QCBhbmRAICVzOiVhQCA9QCAlYUBdJWFcIlxuICAgICAgICAgICAgICAoT3B0aW9uLnZhbHVlIHBtYi5wbWJfbmFtZS50eHQgfmRlZmF1bHQ6XCJfXCIpXG4gICAgICAgICAgICAgIChtb2R1bGVfdHlwZSBjdHh0KSB0eXAgKG1vZHVsZV9leHByIGN0eHQpIGV4cHJcbiAgICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgfCBwbWIgLT5cbiAgICAgICAgICAgIHBwIGYgXCJAWzxob3YyPkAgYW5kQCAlc0AgPUAgJWFAXSVhXCJcbiAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgICAobW9kdWxlX2V4cHIgY3R4dCkgcG1iLnBtYl9leHByIChpdGVtX2F0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICBpblxuICAgICAgbWF0Y2ggZGVjbHMgd2l0aFxuICAgICAgfCAoeyBwbWJfZXhwciA9IHsgcG1vZF9kZXNjID0gUG1vZF9jb25zdHJhaW50IChleHByLCB0eXApIH0gfSBhcyBwbWIpXG4gICAgICAgIDo6IGwyIC0+XG4gICAgICAgICAgcHAgZiBcIkBbPGh2PkBbPGhvdjI+bW9kdWxlQCByZWNAICVzOiVhQCA9QCAlYUBdJWFAICVhQF1cIlxuICAgICAgICAgICAgKE9wdGlvbi52YWx1ZSBwbWIucG1iX25hbWUudHh0IH5kZWZhdWx0OlwiX1wiKVxuICAgICAgICAgICAgKG1vZHVsZV90eXBlIGN0eHQpIHR5cCAobW9kdWxlX2V4cHIgY3R4dCkgZXhwclxuICAgICAgICAgICAgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KSBwbWIucG1iX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIChmdW4gZiBsMiAtPiBMaXN0Lml0ZXIgKGF1eCBmKSBsMilcbiAgICAgICAgICAgIGwyXG4gICAgICB8IHBtYiA6OiBsMiAtPlxuICAgICAgICAgIHBwIGYgXCJAWzxodj5AWzxob3YyPm1vZHVsZUAgcmVjQCAlc0AgPUAgJWFAXSVhQCAlYUBdXCJcbiAgICAgICAgICAgIChPcHRpb24udmFsdWUgcG1iLnBtYl9uYW1lLnR4dCB+ZGVmYXVsdDpcIl9cIilcbiAgICAgICAgICAgIChtb2R1bGVfZXhwciBjdHh0KSBwbWIucG1iX2V4cHIgKGl0ZW1fYXR0cmlidXRlcyBjdHh0KVxuICAgICAgICAgICAgcG1iLnBtYl9hdHRyaWJ1dGVzXG4gICAgICAgICAgICAoZnVuIGYgbDIgLT4gTGlzdC5pdGVyIChhdXggZikgbDIpXG4gICAgICAgICAgICBsMlxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IGZsb2F0aW5nX2F0dHJpYnV0ZSBjdHh0IGYgYVxuICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBhKSAtPlxuICAgICAgaXRlbV9leHRlbnNpb24gY3R4dCBmIGU7XG4gICAgICBpdGVtX2F0dHJpYnV0ZXMgY3R4dCBmIGFcblxuYW5kIHR5cGVfcGFyYW0gY3R4dCBmIChjdCwgKGEsIGIpKSA9XG4gIHBwIGYgXCIlcyVzJWFcIiAodHlwZV92YXJpYW5jZSBhKSAodHlwZV9pbmplY3Rpdml0eSBiKSAoY29yZV90eXBlIGN0eHQpIGN0XG5cbmFuZCB0eXBlX3BhcmFtcyBjdHh0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgbCAtPiBwcCBmIFwiJWEgXCIgKGxpc3QgKHR5cGVfcGFyYW0gY3R4dCkgfmZpcnN0OlwiKFwiIH5sYXN0OlwiKVwiIH5zZXA6XCIsQDtcIikgbFxuXG5hbmQgdHlwZV9kZWZfbGlzdCBjdHh0IGYgKHJmLCBleHBvcnRlZCwgbCkgPVxuICBsZXQgdHlwZV9kZWNsIGt3ZCByZiBmIHggPVxuICAgIGxldCBlcSA9XG4gICAgICBpZiB4LnB0eXBlX2tpbmQgPSBQdHlwZV9hYnN0cmFjdCAmJiB4LnB0eXBlX21hbmlmZXN0ID0gTm9uZSB0aGVuIFwiXCJcbiAgICAgIGVsc2UgaWYgZXhwb3J0ZWQgdGhlbiBcIiA9XCJcbiAgICAgIGVsc2UgXCIgOj1cIlxuICAgIGluXG4gICAgcHAgZiBcIkBbPDI+JXMgJWElYSVzJXMlYUBdJWFcIiBrd2Qgbm9ucmVjX2ZsYWcgcmYgKHR5cGVfcGFyYW1zIGN0eHQpXG4gICAgICB4LnB0eXBlX3BhcmFtcyB4LnB0eXBlX25hbWUudHh0IGVxICh0eXBlX2RlY2xhcmF0aW9uIGN0eHQpIHhcbiAgICAgIChpdGVtX2F0dHJpYnV0ZXMgY3R4dCkgeC5wdHlwZV9hdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8IFsgeCBdIC0+IHR5cGVfZGVjbCBcInR5cGVcIiByZiBmIHhcbiAgfCB4IDo6IHhzIC0+XG4gICAgICBwcCBmIFwiQFs8dj4lYUAsJWFAXVwiICh0eXBlX2RlY2wgXCJ0eXBlXCIgcmYpIHhcbiAgICAgICAgKGxpc3QgfnNlcDpcIkAsXCIgKHR5cGVfZGVjbCBcImFuZFwiIFJlY3Vyc2l2ZSkpXG4gICAgICAgIHhzXG5cbmFuZCByZWNvcmRfZGVjbGFyYXRpb24gY3R4dCBmIGxibHMgPVxuICBsZXQgdHlwZV9yZWNvcmRfZmllbGQgZiBwbGQgPVxuICAgIHBwIGYgXCJAWzwyPiVhJXM6QDslYUA7JWFAXVwiIG11dGFibGVfZmxhZyBwbGQucGxkX211dGFibGUgcGxkLnBsZF9uYW1lLnR4dFxuICAgICAgKGNvcmVfdHlwZSBjdHh0KSBwbGQucGxkX3R5cGUgKGF0dHJpYnV0ZXMgY3R4dCkgcGxkLnBsZF9hdHRyaWJ1dGVzXG4gIGluXG4gIHBwIGYgXCJ7QFxcbiVhfVwiIChsaXN0IHR5cGVfcmVjb3JkX2ZpZWxkIH5zZXA6XCI7QFxcblwiKSBsYmxzXG5cbmFuZCB0eXBlX2RlY2xhcmF0aW9uIGN0eHQgZiB4ID1cbiAgKCogdHlwZV9kZWNsYXJhdGlvbiBoYXMgYW4gYXR0cmlidXRlIGZpZWxkLFxuICAgICBidXQgaXQncyBiZWVuIHByaW50ZWQgYnkgdGhlIGNhbGxlciBvZiB0aGlzIG1ldGhvZCAqKVxuICBsZXQgcHJpdiBmID1cbiAgICBtYXRjaCB4LnB0eXBlX3ByaXZhdGUgd2l0aCBQdWJsaWMgLT4gKCkgfCBQcml2YXRlIC0+IHBwIGYgXCJAO3ByaXZhdGVcIlxuICBpblxuICBsZXQgbWFuaWZlc3QgZiA9XG4gICAgbWF0Y2ggeC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHkgLT5cbiAgICAgICAgaWYgeC5wdHlwZV9raW5kID0gUHR5cGVfYWJzdHJhY3QgdGhlblxuICAgICAgICAgIHBwIGYgXCIldEA7JWFcIiBwcml2IChjb3JlX3R5cGUgY3R4dCkgeVxuICAgICAgICBlbHNlIHBwIGYgXCJAOyVhXCIgKGNvcmVfdHlwZSBjdHh0KSB5XG4gIGluXG4gIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBmIHBjZCA9XG4gICAgcHAgZiBcInxAO1wiO1xuICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgKCBwY2QucGNkX25hbWUudHh0LFxuICAgICAgICBwY2QucGNkX3ZhcnMsXG4gICAgICAgIHBjZC5wY2RfYXJncyxcbiAgICAgICAgcGNkLnBjZF9yZXMsXG4gICAgICAgIHBjZC5wY2RfYXR0cmlidXRlcyApXG4gIGluXG4gIGxldCByZXByIGYgPVxuICAgIGxldCBpbnRybyBmID0gaWYgeC5wdHlwZV9tYW5pZmVzdCA9IE5vbmUgdGhlbiAoKSBlbHNlIHBwIGYgXCJAOz1cIiBpblxuICAgIG1hdGNoIHgucHR5cGVfa2luZCB3aXRoXG4gICAgfCBQdHlwZV92YXJpYW50IHhzIC0+XG4gICAgICAgIGxldCB2YXJpYW50cyBmbXQgeHMgPVxuICAgICAgICAgIGlmIHhzID0gW10gdGhlbiBwcCBmbXQgXCIgfFwiXG4gICAgICAgICAgZWxzZSBwcCBmbXQgXCJAXFxuJWFcIiAobGlzdCB+c2VwOlwiQFxcblwiIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uKSB4c1xuICAgICAgICBpblxuICAgICAgICBwcCBmIFwiJXQldCVhXCIgaW50cm8gcHJpdiB2YXJpYW50cyB4c1xuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKClcbiAgICB8IFB0eXBlX3JlY29yZCBsIC0+IHBwIGYgXCIldCV0QDslYVwiIGludHJvIHByaXYgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsXG4gICAgfCBQdHlwZV9vcGVuIC0+IHBwIGYgXCIldCV0QDsuLlwiIGludHJvIHByaXZcbiAgaW5cbiAgbGV0IGNvbnN0cmFpbnRzIGYgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoY3QxLCBjdDIsIF8pIC0+XG4gICAgICAgIHBwIGYgXCJAWzxob3YyPkAgY29uc3RyYWludEAgJWFAID1AICVhQF1cIiAoY29yZV90eXBlIGN0eHQpIGN0MVxuICAgICAgICAgIChjb3JlX3R5cGUgY3R4dCkgY3QyKVxuICAgICAgeC5wdHlwZV9jc3Ryc1xuICBpblxuICBwcCBmIFwiJXQldCV0XCIgbWFuaWZlc3QgcmVwciBjb25zdHJhaW50c1xuXG5hbmQgdHlwZV9leHRlbnNpb24gY3R4dCBmIHggPVxuICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGYgeCA9XG4gICAgcHAgZiBcIkBcXG58QDslYVwiIChleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCkgeFxuICBpblxuICBwcCBmIFwiQFs8Mj50eXBlICVhJWEgKz0gJWFAICVhQF0lYVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IGwgLT5cbiAgICAgICAgICBwcCBmIFwiJWFAO1wiIChsaXN0ICh0eXBlX3BhcmFtIGN0eHQpIH5maXJzdDpcIihcIiB+bGFzdDpcIilcIiB+c2VwOlwiLFwiKSBsKVxuICAgIHgucHR5ZXh0X3BhcmFtcyBsb25naWRlbnRfbG9jIHgucHR5ZXh0X3BhdGggcHJpdmF0ZV9mbGFnXG4gICAgeC5wdHlleHRfcHJpdmF0ZSAoKiBDZjogIzcyMDAgKilcbiAgICAobGlzdCB+c2VwOlwiXCIgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yKVxuICAgIHgucHR5ZXh0X2NvbnN0cnVjdG9ycyAoaXRlbV9hdHRyaWJ1dGVzIGN0eHQpIHgucHR5ZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZiAobmFtZSwgdmFycywgYXJncywgcmVzLCBhdHRycykgPVxuICBsZXQgbmFtZSA9IG1hdGNoIG5hbWUgd2l0aCBcIjo6XCIgLT4gXCIoOjopXCIgfCBzIC0+IHMgaW5cbiAgbGV0IHBwX3ZhcnMgZiB2cyA9XG4gICAgbWF0Y2ggdnMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHZzIC0+IHBwIGYgXCIlYUA7LkA7XCIgKGxpc3QgdHl2YXJfbG9jIH5zZXA6XCJAO1wiKSB2c1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIHBwIGYgXCIlcyVhQDslYVwiIG5hbWVcbiAgICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBQY3N0cl90dXBsZSBbXSAtPiAoKVxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiQDtvZkA7JWFcIiAobGlzdCAoY29yZV90eXBlMSBjdHh0KSB+c2VwOlwiQDsqQDtcIikgbFxuICAgICAgICAgIHwgUGNzdHJfcmVjb3JkIGwgLT4gcHAgZiBcIkA7b2ZAOyVhXCIgKHJlY29yZF9kZWNsYXJhdGlvbiBjdHh0KSBsKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG4gIHwgU29tZSByIC0+XG4gICAgICBwcCBmIFwiJXM6QDslYSVhQDslYVwiIG5hbWUgcHBfdmFycyB2YXJzXG4gICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgW10gLT4gY29yZV90eXBlMSBjdHh0IGYgclxuICAgICAgICAgIHwgUGNzdHJfdHVwbGUgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiXG4gICAgICAgICAgICAgICAgKGxpc3QgKGNvcmVfdHlwZTEgY3R4dCkgfnNlcDpcIkA7KkA7XCIpXG4gICAgICAgICAgICAgICAgbCAoY29yZV90eXBlMSBjdHh0KSByXG4gICAgICAgICAgfCBQY3N0cl9yZWNvcmQgbCAtPlxuICAgICAgICAgICAgICBwcCBmIFwiJWFAOy0+QDslYVwiIChyZWNvcmRfZGVjbGFyYXRpb24gY3R4dCkgbCAoY29yZV90eXBlMSBjdHh0KSByKVxuICAgICAgICBhcmdzIChhdHRyaWJ1dGVzIGN0eHQpIGF0dHJzXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgY3R4dCBmIHggPVxuICAoKiBDZjogIzcyMDAgKilcbiAgbWF0Y2ggeC5wZXh0X2tpbmQgd2l0aFxuICB8IFBleHRfZGVjbCAodiwgbCwgcikgLT5cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eHQgZlxuICAgICAgICAoeC5wZXh0X25hbWUudHh0LCB2LCBsLCByLCB4LnBleHRfYXR0cmlidXRlcylcbiAgfCBQZXh0X3JlYmluZCBsaSAtPlxuICAgICAgcHAgZiBcIiVzQDs9QDslYSVhXCIgeC5wZXh0X25hbWUudHh0IGxvbmdpZGVudF9sb2MgbGkgKGF0dHJpYnV0ZXMgY3R4dClcbiAgICAgICAgeC5wZXh0X2F0dHJpYnV0ZXNcblxuYW5kIGNhc2VfbGlzdCBjdHh0IGYgbCA6IHVuaXQgPVxuICBsZXQgYXV4IGYgeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSA9XG4gICAgcHAgZiBcIkA7fCBAWzwyPiVhJWFAOy0+QDslYUBdXCIgKHBhdHRlcm4gY3R4dCkgcGNfbGhzXG4gICAgICAob3B0aW9uIChleHByZXNzaW9uIGN0eHQpIH5maXJzdDpcIkA7d2hlbkA7XCIpXG4gICAgICBwY19ndWFyZFxuICAgICAgKGV4cHJlc3Npb24gKHVuZGVyX3BpcGUgY3R4dCkpXG4gICAgICBwY19yaHNcbiAgaW5cbiAgbGlzdCBhdXggZiBsIH5zZXA6XCJcIlxuXG5hbmQgbGFiZWxfeF9leHByZXNzaW9uX3BhcmFtIGN0eHQgZiAobCwgZSkgPVxuICBsZXQgc2ltcGxlX25hbWUgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IHsgdHh0ID0gTGlkZW50IGw7IF8gfTsgcGV4cF9hdHRyaWJ1dGVzID0gW10gfSAtPlxuICAgICAgICBTb21lIGxcbiAgICB8IF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBOb2xhYmVsIC0+IGV4cHJlc3Npb24yIGN0eHQgZiBlICgqIGxldmVsIDIqKVxuICB8IE9wdGlvbmFsIHN0ciAtPlxuICAgICAgaWYgU29tZSBzdHIgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCI/JXNcIiBzdHJcbiAgICAgIGVsc2UgcHAgZiBcIj8lczolYVwiIHN0ciAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuICB8IExhYmVsbGVkIGxibCAtPlxuICAgICAgaWYgU29tZSBsYmwgPSBzaW1wbGVfbmFtZSB0aGVuIHBwIGYgXCJ+JXNcIiBsYmxcbiAgICAgIGVsc2UgcHAgZiBcIn4lczolYVwiIGxibCAoc2ltcGxlX2V4cHIgY3R4dCkgZVxuXG5hbmQgZGlyZWN0aXZlX2FyZ3VtZW50IGYgeCA9XG4gIG1hdGNoIHgucGRpcmFfZGVzYyB3aXRoXG4gIHwgUGRpcl9zdHJpbmcgcyAtPiBwcCBmIFwiQCAlU1wiIHNcbiAgfCBQZGlyX2ludCAobiwgTm9uZSkgLT4gcHAgZiBcIkAgJXNcIiBuXG4gIHwgUGRpcl9pbnQgKG4sIFNvbWUgbSkgLT4gcHAgZiBcIkAgJXMlY1wiIG4gbVxuICB8IFBkaXJfaWRlbnQgbGkgLT4gcHAgZiBcIkAgJWFcIiBsb25naWRlbnQgbGlcbiAgfCBQZGlyX2Jvb2wgYiAtPiBwcCBmIFwiQCAlc1wiIChzdHJpbmdfb2ZfYm9vbCBiKVxuXG5sZXQgdG9wbGV2ZWxfcGhyYXNlIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFB0b3BfZGVmIHMgLT4gcHAgZiBcIkBbPGhvdjA+JWFAXVwiIChsaXN0IChzdHJ1Y3R1cmVfaXRlbSByZXNldF9jdHh0KSkgc1xuICAoKiBwcF9vcGVuX2h2Ym94IGYgMDsgKilcbiAgKCogcHBfcHJpbnRfbGlzdCBzdHJ1Y3R1cmVfaXRlbSBmIHMgOyAqKVxuICAoKiBwcF9jbG9zZV9ib3ggZiAoKTsgKilcbiAgfCBQdG9wX2RpciB7IHBkaXJfbmFtZTsgcGRpcl9hcmcgPSBOb25lOyBfIH0gLT5cbiAgICAgIHBwIGYgXCJAWzxob3YyPiMlc0BdXCIgcGRpcl9uYW1lLnR4dFxuICB8IFB0b3BfZGlyIHsgcGRpcl9uYW1lOyBwZGlyX2FyZyA9IFNvbWUgcGRpcl9hcmc7IF8gfSAtPlxuICAgICAgcHAgZiBcIkBbPGhvdjI+IyVzQCAlYUBdXCIgcGRpcl9uYW1lLnR4dCBkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmdcblxubGV0IGV4cHJlc3Npb24gZiB4ID0gcHAgZiBcIkBbJWFAXVwiIChleHByZXNzaW9uIHJlc2V0X2N0eHQpIHhcblxubGV0IHN0cmluZ19vZl9leHByZXNzaW9uIHggPVxuICBpZ25vcmUgKGZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpO1xuICBsZXQgZiA9IHN0cl9mb3JtYXR0ZXIgaW5cbiAgZXhwcmVzc2lvbiBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHN0cmluZ19vZl9zdHJ1Y3R1cmUgeCA9XG4gIGlnbm9yZSAoZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSk7XG4gIGxldCBmID0gc3RyX2Zvcm1hdHRlciBpblxuICBzdHJ1Y3R1cmUgcmVzZXRfY3R4dCBmIHg7XG4gIGZsdXNoX3N0cl9mb3JtYXR0ZXIgKClcblxubGV0IHRvcF9waHJhc2UgZiB4ID1cbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpO1xuICB0b3BsZXZlbF9waHJhc2UgZiB4O1xuICBwcCBmIFwiOztcIjtcbiAgcHBfcHJpbnRfbmV3bGluZSBmICgpXG5cbmxldCBjb3JlX3R5cGUgPSBjb3JlX3R5cGUgcmVzZXRfY3R4dFxubGV0IHBhdHRlcm4gPSBwYXR0ZXJuIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmUgPSBzaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IHN0cnVjdHVyZSA9IHN0cnVjdHVyZSByZXNldF9jdHh0XG5sZXQgY2xhc3NfZXhwciA9IGNsYXNzX2V4cHIgcmVzZXRfY3R4dFxubGV0IGNsYXNzX2ZpZWxkID0gY2xhc3NfZmllbGQgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGUgPSBjbGFzc190eXBlIHJlc2V0X2N0eHRcbmxldCBjbGFzc19zaWduYXR1cmUgPSBjbGFzc19zaWduYXR1cmUgcmVzZXRfY3R4dFxubGV0IGNsYXNzX3R5cGVfZmllbGQgPSBjbGFzc190eXBlX2ZpZWxkIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfZXhwciA9IG1vZHVsZV9leHByIHJlc2V0X2N0eHRcbmxldCBtb2R1bGVfdHlwZSA9IG1vZHVsZV90eXBlIHJlc2V0X2N0eHRcbmxldCBzaWduYXR1cmVfaXRlbSA9IHNpZ25hdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCBzdHJ1Y3R1cmVfaXRlbSA9IHN0cnVjdHVyZV9pdGVtIHJlc2V0X2N0eHRcbmxldCB0eXBlX2RlY2xhcmF0aW9uID0gdHlwZV9kZWNsYXJhdGlvbiByZXNldF9jdHh0XG4iLCIoKiBUaGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gNC4xNCBhbmQgNS4wIGZyb20gYSBQYXJzZXRyZWUgcG9pbnQgb2YgdmlldyBhcmUgdGhlIG1hZ2ljIG51bWJlcnMgKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0XzQxNC5Bc3R0eXBlc1xuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3RfNDE0LlBhcnNldHJlZVxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMyXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMyXCJcbmVuZFxuIiwibW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiogW2xhYmVsOlQgLT4gLi4uXSAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgIHwgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgICBTdWZmaXhlcyBbW2ctel1bRy1aXV0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBleGNlcHQgWydsJ10sIFsnTCddIGFuZCBbJ24nXSBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXIgICgqKiBDaGFyYWN0ZXIgc3VjaCBhcyBbJ2MnXS4gKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogTG9jYXRpb24udCAqIHN0cmluZyBvcHRpb25cbiAgICAgICAgKCoqIENvbnN0YW50IHN0cmluZyBzdWNoIGFzIFtcImNvbnN0YW50XCJdIG9yXG4gICAgICAgICAgICBbe2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfV0uXG5cbiAgICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgICAgICBTdWZmaXhlcyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICopXG5cbiAgdHlwZSBsb2NhdGlvbl9zdGFjayA9IExvY2F0aW9uLnQgbGlzdFxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiogQXR0cmlidXRlcyBzdWNoIGFzIFtbXFxAaWQgQVJHXV0gYW5kIFtbXFxAXFxAaWQgQVJHXV0uXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqKiBFeHRlbnNpb24gcG9pbnRzIHN1Y2ggYXMgW1slaWQgQVJHXSBhbmQgWyUlaWQgQVJHXV0uXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICAoKiogWzogU0lHXSBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCoqIFs6IFRdIGluIGFuIGF0dHJpYnV0ZSBvciBhbiBleHRlbnNpb24gcG9pbnQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbPyBQXSAgb3IgIFs/IFAgd2hlbiBFXSwgaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55ICAoKiogW19dICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogW1B0eXBfYXJyb3cobGJsLCBUMSwgVDIpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUMSAtPiBUMl0gICAgd2hlbiBbbGJsXSBpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9W05vbGFiZWxdfSxcbiAgICAgICAgICAgICAgLSBbfmw6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1bTGFiZWxsZWRdfSxcbiAgICAgICAgICAgICAgLSBbP2w6VDEgLT4gVDJdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWxdfS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgKCoqIFtQdHlwX3R1cGxlKFtUMSA7IC4uLiA7IFRuXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIGEgcHJvZHVjdCB0eXBlIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jb25zdHIobGlkZW50LCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdGNvbnN0cl0gICAgICAgICAgICAgICB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAgICAgLSBbVCB0Y29uc3RyXSAgICAgICAgICAgICB3aGVuIFtsPVtUXV0sXG4gICAgICAgICAgICAgIC0gWyhUMSwgLi4uLCBUbikgdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG4gPl0gICAgIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgIC0gWzwgbDE6VDE7IC4uLjsgbG46VG47IC4uID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUHR5cF9jbGFzcyh0Y29uc3RyLCBsKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbI3Rjb25zdHJdICAgICAgICAgICAgICAgd2hlbiBbbD1bXV0sXG4gICAgICAgICAgICAgIC0gW1QgI3Rjb25zdHJdICAgICAgICAgICAgIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAgICAgLSBbKFQxLCAuLi4sIFRuKSAjdGNvbnN0cl0gd2hlbiBbbD1bVDEgOyAuLi4gOyBUbl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICgqKiBbUHR5cF92YXJpYW50KFtgQTtgQl0sIGZsYWcsIGxhYmVscyldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgIC0gW1sgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtbPiBgQXxgQiBdXVxuICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gICBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbWzwgYEF8YEIgXV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2ZsYWddICAgaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW1NvbWUgW11dLFxuICAgICAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSAgIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1bQ2xvc2VkXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLlxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAoKiogWydhMSAuLi4gJ2FuLiBUXVxuXG4gICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7IWNvcmVfdHlwZX0gb2YgYVxuICAgICAgICAgICAge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1bUHBhdF9jb25zdHJhaW50XX0gbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzpcblxuICAgICAgICAgICAge1tsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUID0gZSAuLi5dfVxuICAgICAgICAgICAgIC0gVW5kZXIge3shY2xhc3NfZmllbGRfa2luZC5DZmtfdmlydHVhbH1bQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGFcbiAgICAgICAgICAgICB7eyFjbGFzc190eXBlX2ZpZWxkX2Rlc2MuUGN0Zl9tZXRob2R9W1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9W1BleHBfcG9seV19XG4gICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfVtwbGRfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH1bUHR5cF9vYmplY3RdfVxuICAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9W3B2YWxfdHlwZV19IGZpZWxkIG9mIGFcbiAgICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS5cbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGUgICgqKiBbKG1vZHVsZSBTKV0uICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dLiAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICgqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuICAgICAgICAgICAtIFsoUywgW10pXSByZXByZXNlbnRzIFsobW9kdWxlIFMpXSxcbiAgICAgICAgICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldXG4gICAgICAgICAgICByZXByZXNlbnRzIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLlxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG4gICAgICAgICAgICAgLSBbYEFdICAgICAgICAgICAgICAgICAgIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW11dLFxuICAgICAgICAgICAgIC0gW2BBIG9mIFRdICAgICAgICAgICAgICB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgIHdoZW4gW2JdIGlzIFtmYWxzZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0sXG4gICAgICAgICAgICAgLSBbYEEgb2YgJiBUMSAmIC4uICYgVG5dIHdoZW4gW2JdIGlzIFt0cnVlXSAgYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAgIC0gVGhlIFtib29sXSBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCoqIHsyIFBhdHRlcm5zfSAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICB7XG4gICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHBhdF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2MgICgqKiBBIHZhcmlhYmxlIHBhdHRlcm4gc3VjaCBhcyBbeF0gKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sIFsxbl0gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbJ2EnLi4neiddLlxuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl1cbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfY29uc3RydWN0KEMsIGFyZ3MpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAgICAgLSBbQyBQXSAgICAgICAgICAgICB3aGVuIFthcmdzXSBpcyBbU29tZSAoW10sIFApXVxuICAgICAgICAgICAgICAtIFtDIChQMSwgLi4uLCBQbildIHdoZW4gW2FyZ3NdIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbU29tZSAoW10sIFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSldXG4gICAgICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSAgd2hlbiBbYXJnc10gaXMgW1NvbWUgKFthOyBiXSwgUCldXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAoKiogW1BwYXRfdmFyaWFudChgQSwgcGF0KV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbYEFdICAgd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2BBIFBdIHdoZW4gW3BhdF0gaXMgW1NvbWUgUF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgKCoqIFtQcGF0X3JlY29yZChbKGwxLCBQMSkgOyAuLi4gOyAobG4sIFBuKV0sIGZsYWcpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVtDbG9zZWRdfVxuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuOyBffV1cbiAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5PcGVufVtPcGVuXX1cblxuICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF1cbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0ICAoKiogUGF0dGVybiBbW3wgUDE7IC4uLjsgUG4gfF1dICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlICAoKiogUGF0dGVybiBbKFAgOiBUKV0gKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtsYXp5IFBdICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgb3B0aW9uIGxvY1xuICAgICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsobW9kdWxlIFApXSB3aGVuIFtzXSBpcyBbU29tZSBcIlBcIl1cbiAgICAgICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVybiAgKCoqIFBhdHRlcm4gW2V4Y2VwdGlvbiBQXSAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogUGF0dGVybiBbWyVpZF1dICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiAgKCoqIFBhdHRlcm4gW00uKFApXSAqKVxuXG4gICgqKiB7MiBWYWx1ZSBleHByZXNzaW9uc30gKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICgqKiBFeHByZXNzaW9ucyBjb25zdGFudCBzdWNoIGFzIFsxXSwgWydhJ10sIFtcInRydWVcIl0sIFsxLjBdLCBbMWxdLFxuICAgICAgICAgICAgICBbMUxdLCBbMW5dICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFXVxuICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9W1JlY3Vyc2l2ZV19LlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3QgICgqKiBbZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbl0gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV1cbiAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gRTFdXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seVxuICAgICAgICAgICAgICAge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbF19IGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBbZnVuIFAxIFAyIC4uIFBuIC0+IEUxXSBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWRcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgICAtIFtsZXQgZiBQID0gRV0gaXMgcmVwcmVzZW50ZWQgdXNpbmdcbiAgICAgICAgICAgICAgIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX2Z1bn1bUGV4cF9mdW5dfS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbUGV4cF9hcHBseShFMCwgWyhsMSwgRTEpIDsgLi4uIDsgKGxuLCBFbildKV1cbiAgICAgICAgICAgICAgcmVwcmVzZW50cyBbRTAgfmwxOkUxIC4uLiB+bG46RW5dXG5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmVcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH1bTm9sYWJlbF19ICAgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSxcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9W0xhYmVsbGVkXX0gKGxhYmVsbGVkIGFyZ3VtZW50cykgb3JcbiAgICAgICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9W09wdGlvbmFsXX0gKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICgqKiBbbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuXSAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAoKiogRXhwcmVzc2lvbnMgWyhFMSwgLi4uLCBFbildXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IFtuID49IDJdXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAtIFtDXSAgICAgICAgICAgICAgIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgIC0gW0MgRV0gICAgICAgICAgICAgd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG4gICAgICAgICAgICAgIC0gW2BBXSAgIHdoZW4gW2V4cF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW2BBIEVdIHdoZW4gW2V4cF0gaXMgW1NvbWUgRV1cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgKCoqIFtQZXhwX3JlY29yZChbKGwxLFAxKSA7IC4uLiA7IChsbixQbildLCBleHAwKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dICAgICAgICAgd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgICAgIC0gW3sgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9XSB3aGVuIFtleHAwXSBpcyBbU29tZSBFMF1cblxuICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICAoKiogW0UubF0gKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtFMS5sIDwtIEUyXSAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3QgICgqKiBbW3wgRTE7IC4uLjsgRW4gfF1dICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAoKiogW2lmIEUxIHRoZW4gRTIgZWxzZSBFM10gKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gICgqKiBbRTE7IEUyXSAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICAgIHwgUGV4cF9mb3Igb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICgqKiBbUGV4cF9mb3IoaSwgRTEsIEUyLCBkaXJlY3Rpb24sIEUzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXVxuICAgICAgICAgICAgICAgICAgIHdoZW4gW2RpcmVjdGlvbl0gaXMge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuVXB0b31bVXB0b119XG4gICAgICAgICAgICAgIC0gW2ZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmVdXG4gICAgICAgICAgICAgICAgICAgd2hlbiBbZGlyZWN0aW9uXSBpcyB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5Eb3dudG99W0Rvd250b119XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgKCoqIFtQZXhwX2NvZXJjZShFLCBmcm9tLCBUKV0gcmVwcmVzZW50c1xuICAgICAgICAgICAgICAtIFsoRSA6PiBUKV0gICAgICB3aGVuIFtmcm9tXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jICAoKiogW0UgIyBtXSAqKVxuICAgIHwgUGV4cF9uZXcgb2YgTG9uZ2lkZW50LnQgbG9jICAoKiogW25ldyBNLmNdICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvbiAgKCoqIFt4IDwtIDJdICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgKCoqIFtsZXQgbW9kdWxlIE0gPSBNRSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAoKiogW2xldCBleGNlcHRpb24gQyBpbiBFXSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvbiAgKCoqIFtsYXp5IEVdICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCoqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyXG4gICAgICAgICAgICAge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZV19IGZvciBtZXRob2RzIChub3RcbiAgICAgICAgICAgICB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uICAoKiogW2Z1biAodHlwZSB0KSAtPiBFXSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgICAgICgqKiAtIFtNLihFKV1cbiAgICAgICAgICAgICAgLSBbbGV0IG9wZW4gTSBpbiBFXVxuICAgICAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICAgICAoKiogLSBbbGV0KiBQID0gRTAgaW4gRTFdXG4gICAgICAgICAgICAgIC0gW2xldCogUDAgPSBFMDAgYW5kKiBQMSA9IEUwMSBpbiBFMV0gKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9XG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cbiAgKCoqIFZhbHVlcyBvZiB0eXBlIHshY2FzZX0gcmVwcmVzZW50cyBbKFAgLT4gRSldIG9yIFsoUCB3aGVuIEUwIC0+IEUpXSAqKVxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqKiB7MiBWYWx1ZSBkZXNjcmlwdGlvbnN9ICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IXZhbHVlX2Rlc2NyaXB0aW9ufSByZXByZXNlbnRzOlxuICAgICAgLSBbdmFsIHg6IFRdLFxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAgICB3aGVuIHt7IXZhbHVlX2Rlc2NyaXB0aW9uLnB2YWxfcHJpbX1bcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV1cbiAgKilcblxuICAoKiogezIgVHlwZSBkZWNsYXJhdGlvbnN9ICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiogWygnYTEsLi4uJ2FuKSB0XSAqKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl1dICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKipcbiAgICAgSGVyZSBhcmUgdHlwZSBkZWNsYXJhdGlvbnMgYW5kIHRoZWlyIHJlcHJlc2VudGF0aW9uLFxuICAgICBmb3IgdmFyaW91cyB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX2tpbmR9W3B0eXBlX2tpbmRdfVxuICAgICAgICAgICAgIGFuZCB7eyF0eXBlX2RlY2xhcmF0aW9uLnB0eXBlX21hbmlmZXN0fVtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcbiAgIC0gW3R5cGUgdF0gICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1bUHR5cGVfYWJzdHJhY3RdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX2Fic3RyYWN0fVtQdHlwZV9hYnN0cmFjdF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtOb25lXSxcbiAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3ZhcmlhbnR9W1B0eXBlX3ZhcmlhbnRdfSxcbiAgICAgICAgICAgICAgICAgYW5kIFttYW5pZmVzdF0gIGlzIFtTb21lIFQwXSxcbiAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XVxuICAgICAgICAgICAgICAgIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH1bUHR5cGVfcmVjb3JkXX0sXG4gICAgICAgICAgICAgICAgIGFuZCBbbWFuaWZlc3RdICBpcyBbTm9uZV0sXG4gICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV1cbiAgICAgICAgICAgICAgICB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9W1B0eXBlX3JlY29yZF19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW1NvbWUgVDBdLFxuICAgLSBbdHlwZSB0ID0gLi5dXG4gICAgICAgICAgICAgICAgd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfb3Blbn1bUHR5cGVfb3Blbl19LFxuICAgICAgICAgICAgICAgICBhbmQgW21hbmlmZXN0XSAgaXMgW05vbmVdLlxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdCAgKCoqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtsIDogVCBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKlxuICAgICAtIFt7IC4uLjsgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuSW1tdXRhYmxlfVtJbW11dGFibGVdfSxcbiAgICAgLSBbeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH1dXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4ge3shbGFiZWxfZGVjbGFyYXRpb24ucGxkX211dGFibGV9W3BsZF9tdXRhYmxlXX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19LlxuXG4gICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX3ZhcnM6IHN0cmluZyBsb2MgbGlzdDtcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFtDIG9mIC4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogVmFsdWVzIG9mIHR5cGUgeyFjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbn1cbiAgICAgIHJlcHJlc2VudHMgdGhlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBvZjpcbiAgICAtIFtDIG9mIFQxICogLi4uICogVG5dICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfdHVwbGUgW1QxOyAuLi4gOyBUbl1dLFxuICAgIC0gW0M6IFQwXSAgICAgICAgICAgICAgICAgIHdoZW4gW3JlcyA9IFNvbWUgVDBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbYXJncyA9IFBjc3RyX3R1cGxlIFtUMTsgLi4uIDsgVG5dXSxcbiAgICAtIFtDIG9mIHsuLi59XSAgICAgICAgICAgICB3aGVuIFtyZXMgPSBOb25lXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXSxcbiAgICAtIFtDOiB7Li4ufSAtPiBUMF0gICAgICAgICB3aGVuIFtyZXMgPSBTb21lIFQwXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS5cbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiAuLi4gW1xcQFxcQGlkMV0gW1xcQFxcQGlkMl0gKilcbiAgICB9XG4gICgqKlxuICAgICBEZWZpbml0aW9uIG9mIG5ldyBleHRlbnNpb25zIGNvbnN0cnVjdG9ycyBmb3IgdGhlIGV4dGVuc2l2ZSBzdW0gdHlwZSBbdF1cbiAgICAgKFt0eXBlIHQgKz0gLi4uXSkuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQ6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogW0Mgb2YgLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cbiAgKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICB8IFBleHRfZGVjbCBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqKiBbUGV4dF9kZWNsKGV4aXN0ZW50aWFscywgY19hcmdzLCB0X29wdCldXG4gICAgICAgICAgICBkZXNjcmliZXMgYSBuZXcgZXh0ZW5zaW9uIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG4gICAgICAgICAgICAtIFtDIG9mIFQxICogLi4uICogVG5dIHdoZW46XG4gICAgICAgICAgICAgICAgIHt1bCB7LSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtOb25lXS59fVxuICAgICAgICAgICAgLSBbQzogVDBdIHdoZW5cbiAgICAgICAgICAgICAgICAge3VsIHstIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW2NfYXJnc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbdF9vcHRdIGlzIFtTb21lIFQwXS59fVxuICAgICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi47IFRuXV0sfVxuICAgICAgICAgICAgICAgICAgICAgey0gW3Rfb3B0XSBpcyBbU29tZSBUMF0ufX1cbiAgICAgICAgICAgIC0gW0M6ICdhLi4uIC4gVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlblxuICAgICAgICAgICAgICAgICB7dWwgey0gW2V4aXN0ZW50aWFsc10gaXMgW1snYTsuLi5dXSx9XG4gICAgICAgICAgICAgICAgICAgICB7LSBbY19hcmdzXSBpcyBbW1QxOyAuLi4gOyBUbl1dLH1cbiAgICAgICAgICAgICAgICAgICAgIHstIFt0X29wdF0gaXMgW1NvbWUgVDBdLn19XG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuICAoKiogezIgVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlfSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW1xcQGlkMV0gW1xcQGlkMl1dICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAoKiogLSBbY11cbiAgICAgICAgICAgICAgLSBbWydhMSwgLi4uLCAnYW5dIGNdICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmUgICgqKiBbb2JqZWN0IC4uLiBlbmRdICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgKCoqIFtQY3R5X2Fycm93KGxibCwgVCwgQ1QpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtUIC0+IENUXVxuICAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX0sXG4gICAgICAgICAgICAgIC0gW35sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX0sXG4gICAgICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX0uXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlICAoKiogW2xldCBvcGVuIE0gaW4gQ1RdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3Nfc2lnbmF0dXJlXSByZXByZXNlbnRzOlxuICAgICAgLSBbb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9W3Bjc2lnX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shY29yZV90eXBlX2Rlc2MuUHR5cF9hbnl9W1B0eXBfYW55XX1cbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGUgICgqKiBbaW5oZXJpdCBDVF0gKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICgqKiBbdmFsIHg6IFRdICopXG4gICAgfCBQY3RmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgICAgIE5vdGU6IFtUXSBjYW4gYmUgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX3BvbHl9W1B0eXBfcG9seV19LlxuICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbY2xhc3NfZXhwciBjbGFzc19pbmZvc10gcmVwcmVzZW50czpcbiAgICAgIC0gW2NsYXNzIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5dXG4gICAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICAgVGhleSBhcmUgYWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBpZDFdIFtcXEBpZDJdXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICgqKiBbY10gYW5kIFtbJ2ExLCAuLi4sICdhbl0gY10gKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICgqKiBbUGNsX2Z1bihsYmwsIGV4cDAsIFAsIENFKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVtOb2xhYmVsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gfmw6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLkxhYmVsbGVkfVtMYWJlbGxlZCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBDRV1cbiAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBbbGJsXSAgaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVtPcHRpb25hbCBsXX1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdXG4gICAgICAgICAgICAgICAgICAgICAgIHdoZW4gW2xibF0gIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH1bT3B0aW9uYWwgbF19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbmQgW2V4cDBdIGlzIFtTb21lIEUwXS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAoKiogW1BjbF9hcHBseShDRSwgWyhsMSxFMSkgOyAuLi4gOyAobG4sRW4pXSldXG4gICAgICAgICAgICAgIHJlcHJlc2VudHMgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS5cbiAgICAgICAgICAgICAgW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoIFs/XVxuICAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgIEludmFyaWFudDogW24gPiAwXVxuICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAoKiogW1BjbF9sZXQocmVjLCBbKFAxLCBFMSk7IC4uLiA7IChQbiwgRW4pXSwgQ0UpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRV1cbiAgICAgICAgICAgICAgICAgIHdoZW4gW3JlY10gaXMge3shQXN0dHlwZXMucmVjX2ZsYWcuUmVjdXJzaXZlfVtSZWN1cnNpdmVdfS5cbiAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGUgICgqKiBbKENFIDogQ1QpXSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwciAgKCoqIFtsZXQgb3BlbiBNIGluIENFXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNsYXNzX3N0cnVjdHVyZX0gcmVwcmVzZW50czpcbiAgICAgIC0gW29iamVjdChzZWxmcGF0KSAuLi4gZW5kXVxuICAgICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9W3Bjc3RyX3NlbGZdfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMge3shcGF0dGVybl9kZXNjLlBwYXRfYW55fVtQcGF0X2FueV19XG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCBDRV1cbiAgICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBbc10gaXMgW05vbmVdLFxuICAgICAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofVtGcmVzaF19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XSxcbiAgICAgICAgICAgICAgLSBbaW5oZXJpdCEgQ0VdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgICAgIC0gW2luaGVyaXQhIENFIGFzIHhdXG4gICAgICAgICAgICAgICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVtPdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgICAgYW5kIFtzXSBpcyBbU29tZSB4XVxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAoKiogW1BjZl92YWwoeCxmbGFnLCBraW5kKV0gcmVwcmVzZW50czpcbiAgICAgICAgICAgICAgLSBbdmFsIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX1bSW1tdXRhYmxlXX1cbiAgICAgICAgICBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAgICAgLSBbdmFsIHZpcnR1YWwgeDogVF1cbiAgICAgICAgIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9W0ltbXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHggPSBFXVxuICAgICAgICAgd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9W011dGFibGVdfVxuICAgICAgICAgIGFuZCBba2luZF0gaXMge3shY2xhc3NfZmllbGRfa2luZC5DZmtfY29uY3JldGV9W0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgICAgICAtIFt2YWwgbXV0YWJsZSB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5tdXRhYmxlX2ZsYWcuTXV0YWJsZX1bTXV0YWJsZV19XG4gICAgICAgICAgYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfVtDZmtfdmlydHVhbChUKV19XG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1bUGV4cF9wb2x5XX0pXG4gICAgICAgICAgICAgIC0gW21ldGhvZCB2aXJ0dWFsIHg6IFRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fVtQdHlwX3BvbHldfSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSkgICgqKiBbY29uc3RyYWludCBUMSA9IFQyXSAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tcXEBcXEBcXEBpZF1dICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJSVpZF1dICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbiAgKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZSAgKCoqIFtzaWcgLi4uIGVuZF0gKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdCAgKCoqIFtNVCB3aXRoIC4uLl0gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByICAoKiogW21vZHVsZSB0eXBlIG9mIE1FXSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbKG1vZHVsZSBNKV0gKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXQgICgqKiBbKCldICopXG4gICAgfCBOYW1lZCBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV90eXBlXG4gICAgICAgICgqKiBbTmFtZWQobmFtZSwgTVQpXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgICAgIC0gWyhfIDogTVQpXSB3aGVuIFtuYW1lXSBpcyBbTm9uZV0gKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXVxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biAgPSAuLi5dICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvbiAgKCoqIFtleGNlcHRpb24gQyBvZiBUXSAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSBYID0gTV0gYW5kIFttb2R1bGUgWCA6IE1UXSAqKVxuICAgIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW21vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG5dICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFttb2R1bGUgdHlwZSBTID0gTVRdIGFuZCBbbW9kdWxlIHR5cGUgU10gKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uICAoKiogW2luY2x1ZGUgTVRdICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1kX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9kZWNsYXJhdGlvbl0gcmVwcmVzZW50cyBbUyA6IE1UXSAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAXFxAaWQxXSBbXFxAXFxAaWQyXV0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9zdWJzdGl0dXRpb25dIHJlcHJlc2VudHMgW1MgOj0gTV0gKilcblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqKiBbLi4uIFtcXEBcXEBpZDFdIFtcXEBcXEBpZDJdXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV90eXBlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuICAgICAtIFtTID0gTVRdLFxuICAgICAtIFtTXSBmb3IgYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sXG4gICAgICAgd2hlbiB7eyFtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbi5wbXRkX3R5cGV9W3BtdGRfdHlwZV19IGlzIFtOb25lXS5cbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgWydhIG9wZW5faW5mb3NdIHJlcHJlc2VudHM6XG4gICAgICAtIFtvcGVuISBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9W3BvcGVuX292ZXJyaWRlXX1cbiAgICAgICAgICAgICAgICAgICAgaXMge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX1bT3ZlcnJpZGVdfVxuICAgICAgKHNpbGVuY2VzIHRoZSBcInVzZWQgaWRlbnRpZmllciBzaGFkb3dpbmdcIiB3YXJuaW5nKVxuICAgICAgLSBbb3BlbiAgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfVtwb3Blbl9vdmVycmlkZV19XG4gICAgICAgICAgICAgICAgICAgIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9W0ZyZXNoXX1cbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZXNjcmlwdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbb3Blbl9kZWNsYXJhdGlvbl0gcmVwcmVzZW50czpcbiAgICAgIC0gW29wZW4gTS5OXVxuICAgICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgICAtIFtvcGVuIHN0cnVjdCAuLi4gZW5kXSAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqKiBWYWx1ZXMgb2YgdHlwZSBbaW5jbHVkZV9kZXNjcmlwdGlvbl0gcmVwcmVzZW50cyBbaW5jbHVkZSBNVF0gKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICAgIHwgUHdpdGhfbW9kdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgICB8IFB3aXRoX21vZHR5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgOj0gWl0gKilcblxuICAoKiogezIgVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbXFxAaWQxXSBbXFxAaWQyXV0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2MgICgqKiBbWF0gKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZSAgKCoqIFtzdHJ1Y3QgLi4uIGVuZF0gKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNRV0gKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwciAgKCoqIFtNRTEoTUUyKV0gKilcbiAgICB8IFBtb2RfYXBwbHlfdW5pdCBvZiBtb2R1bGVfZXhwciAoKiogW01FMSgpXSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGUgICgqKiBbKE1FIDogTVQpXSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvbiAgKCoqIFsodmFsIEUpXSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAoKiogW1BzdHJfdmFsdWUocmVjLCBbKFAxLCBFMSA7IC4uLiA7IChQbiwgRW4pKV0pXSByZXByZXNlbnRzOlxuICAgICAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXVxuICAgICAgICAgICAgICAgICAgd2hlbiBbcmVjXSBpcyB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9W05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdXG4gICAgICAgICAgICAgICAgICB3aGVuIFtyZWNdIGlzIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX1bUmVjdXJzaXZlXX0uXG4gICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICgqKiBbdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAgICAgKCoqIC0gW2V4Y2VwdGlvbiBDIG9mIFRdXG4gICAgICAgICAgICAgIC0gW2V4Y2VwdGlvbiBDID0gTS5YXSAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgICgqKiBbbW9kdWxlIFggPSBNRV0gKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgKCoqIFttb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuXSAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICAoKiogW21vZHVsZSB0eXBlIFMgPSBNVF0gKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uXSAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uICAoKiogW2luY2x1ZGUgTUVdICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW1xcQFxcQFxcQGlkXV0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMgICgqKiBbWyUlaWRdXSAqKVxuXG4gIGFuZCB2YWx1ZV9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9jb25zdHJhaW50ICopID1cbiAgICB8IFB2Y19jb25zdHJhaW50IG9mIHtcbiAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFyczpzdHJpbmcgbG9jIGxpc3Q7XG4gICAgICB0eXA6Y29yZV90eXBlO1xuICAgICAgfVxuICAgIHwgUHZjX2NvZXJjaW9uIG9mIHtncm91bmQ6Y29yZV90eXBlIG9wdGlvbjsgY29lcmNpb246Y29yZV90eXBlIH1cblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2NvbnN0cmFpbnQ6IHZhbHVlX2NvbnN0cmFpbnQgb3B0aW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4gICgqKiB7MSBUb3BsZXZlbH0gKilcblxuICAoKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlICAoKiogWyN1c2VdLCBbI2xvYWRdIC4uLiAqKVxuXG4gIGFuZCB0b3BsZXZlbF9kaXJlY3RpdmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAqKSA9XG4gICAge1xuICAgICAgcGRpcl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmc6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB7XG4gICAgICBwZGlyYV9kZXNjOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMzXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMzXCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF81MDFcbm1vZHVsZSBUbyA9IEFzdF81MDBcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzUwMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNTAxLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNTAwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUubGV0XzsgQXN0XzUwMS5QYXJzZXRyZWUuYW5kczsgQXN0XzUwMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF81MDAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzUwMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzUwMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF81MDAuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIGxldCBtZXJnZV9sb2MgbGVmdCByaWdodCA9XG4gICAgTG9jYXRpb24uXG4gICAgICB7IGxvY19zdGFydCA9IGxlZnQubG9jX3N0YXJ0OyBsb2NfZW5kID0gcmlnaHQubG9jX2VuZDsgbG9jX2dob3N0ID0gZmFsc2UgfVxuICBpblxuICBsZXQgZ2hvc3RfbG9jIGxvYyA9IHsgbG9jIHdpdGggTG9jYXRpb24ubG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCBnaG9zdF9jb25zdHJhaW50IHBhdCB0eXAgPVxuICAgIGxldCBwcGF0X2xvYyA9XG4gICAgICBnaG9zdF9sb2NcbiAgICAgICAgKG1lcmdlX2xvYyBwYXQuQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2MgdHlwLkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jKVxuICAgIGluXG4gICAge1xuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYztcbiAgICAgIHBwYXRfZGVzYyA9IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAocGF0LCB0eXApO1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICB9XG4gIGluXG4gIGxldCBwdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQgYW5kIHB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByIGluXG4gIGxldCBjb25zdHJhaW5fcGF0IHBhdCB0eXAgZXhwciA9XG4gICAgbGV0IHR5cCA9IGNvcHlfY29yZV90eXBlIHR5cCBpblxuICAgIGxldCBwdmJfcGF0ID0gZ2hvc3RfY29uc3RyYWludCBwYXQgdHlwIGluXG4gICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICBpblxuICBsZXQgcHZiX3BhdCwgcHZiX2V4cHIgPVxuICAgIG1hdGNoIChwdmJfY29uc3RyYWludCwgcHZiX3BhdCkgd2l0aFxuICAgIHwgKCBTb21lXG4gICAgICAgICAgKFB2Y19jb25zdHJhaW50XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IFtdO1xuICAgICAgICAgICAgICB0eXAgPSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSBfOyBfIH0gYXMgdHlwO1xuICAgICAgICAgICAgfSksXG4gICAgICAgIHsgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSApIC0+XG4gICAgICAgICgqIHRoZSBzdWdhcmluZyBvZiBbbGV0IHg6IHVuaXZhcnMgLiB0eXAgPSBleHAgXSB3YXMgZGVzdWdhcmVkIHRvXG4gICAgICAgICAgIFtsZXQgKHg6dW5pdmFycyAuIHR5cCkgPSBleHBdIGluIDUuMCB3aGljaCBkb2Vzbid0IGZpdCB0aGUgY2FzZSBiZWxvdyAqKVxuICAgICAgICBjb25zdHJhaW5fcGF0IHB2Yl9wYXQgdHlwIHB2Yl9leHByXG4gICAgfCAoIFNvbWUgKFB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzOyB0eXAgfSksXG4gICAgICAgIHsgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF92YXIgXzsgcHBhdF9hdHRyaWJ1dGVzID0gW10gfSApIC0+XG4gICAgICAgICgqIENvcGllZCBhbmQgYWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBBc3RfaGVscGVyICopXG4gICAgICAgIGxldCB2YXJpZnlfY29uc3RydWN0b3JzIHZhcl9uYW1lcyB0ID1cbiAgICAgICAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB2YXJfbmFtZXMgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICAgICAgICBsZXQgZGVzYyA9XG4gICAgICAgICAgICAgIG1hdGNoIHQuQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FueVxuICAgICAgICAgICAgICB8IFB0eXBfdmFyIHggLT4gUHR5cF92YXIgeFxuICAgICAgICAgICAgICB8IFB0eXBfYXJyb3cgKGxhYmVsLCBjb3JlX3R5cGUsIGNvcmVfdHlwZScpIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX2Fycm93IChsYWJlbCwgbG9vcCBjb3JlX3R5cGUsIGxvb3AgY29yZV90eXBlJylcbiAgICAgICAgICAgICAgfCBQdHlwX3R1cGxlIGxzdCAtPiBQdHlwX3R1cGxlIChMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IHMgfSwgW10pXG4gICAgICAgICAgICAgICAgd2hlbiBMaXN0Lm1lbSBzIHZhcl9uYW1lcyAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF92YXIgc1xuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfY29uc3RyIChsb25naWRlbnQsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0IChsc3QsIG8pIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfYWxpYXMgKGxvb3AgY29yZV90eXBlLCBzdHJpbmcpXG4gICAgICAgICAgICAgIHwgUHR5cF92YXJpYW50IChyb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pIC0+XG4gICAgICAgICAgICAgICAgICBQdHlwX3ZhcmlhbnRcbiAgICAgICAgICAgICAgICAgICAgKCBMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICBmbGFnLFxuICAgICAgICAgICAgICAgICAgICAgIGxibF9sc3Rfb3B0aW9uIClcbiAgICAgICAgICAgICAgfCBQdHlwX3BvbHkgKHN0cmluZ19sc3QsIGNvcmVfdHlwZSkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgbG9vcCBjb3JlX3R5cGUpXG4gICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIFB0eXBfcGFja2FnZVxuICAgICAgICAgICAgICAgICAgICAobG9uZ2lkZW50LCBMaXN0Lm1hcCAoZnVuIChuLCB0eXApIC0+IChuLCBsb29wIHR5cCkpIGxzdClcbiAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiAocywgYXJnKSAtPiBQdHlwX2V4dGVuc2lvbiAocywgYXJnKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHsgdCB3aXRoIHB0eXBfZGVzYyA9IGRlc2MgfVxuICAgICAgICAgIGFuZCBsb29wX3Jvd19maWVsZCBmaWVsZCA9XG4gICAgICAgICAgICBsZXQgcHJmX2Rlc2MgPVxuICAgICAgICAgICAgICBtYXRjaCBmaWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgICAgICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIGxzdCkgLT5cbiAgICAgICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKGxhYmVsLCBmbGFnLCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgICAgICAgfCBSaW5oZXJpdCB0IC0+IFJpbmhlcml0IChsb29wIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBmaWVsZCB3aXRoIHByZl9kZXNjIH1cbiAgICAgICAgICBhbmQgbG9vcF9vYmplY3RfZmllbGQgZmllbGQgPVxuICAgICAgICAgICAgbGV0IHBvZl9kZXNjID1cbiAgICAgICAgICAgICAgbWF0Y2ggZmllbGQucG9mX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IEFzdF81MDAuUGFyc2V0cmVlLk90YWcgKGxhYmVsLCB0KSAtPlxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgdFxuICAgICAgICBpblxuICAgICAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgICAgIGxldCBwZXhwX2xvYyA9IG1lcmdlX2xvYyBwdmJfcGF0LnBwYXRfbG9jIHB2Yl9leHByLnBleHBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9XG4gICAgICAgICAgbWF0Y2ggbG9jYWxseV9hYnN0cmFjdF91bml2YXJzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IGdob3N0X2xvYyB0eXAucHR5cF9sb2NcbiAgICAgICAgICB8IF8gOjogXyAtPiBnaG9zdF9sb2MgcGV4cF9sb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5cF9wb2x5ID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXAgd2l0aFxuICAgICAgICAgICAgcHR5cF9sb2M7XG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9XG4gICAgICAgICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAgICAgICAgICggbG9jYWxseV9hYnN0cmFjdF91bml2YXJzLFxuICAgICAgICAgICAgICAgICAgdmFyaWZ5X2NvbnN0cnVjdG9ycyBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMgdHlwICk7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuXG4gICAgICAgIGxldCBwcGF0X2xvYyA9XG4gICAgICAgICAgZ2hvc3RfbG9jXG4gICAgICAgICAgICAobWVyZ2VfbG9jIHB2Yl9wYXQuQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2NcbiAgICAgICAgICAgICAgIHR5cC5Bc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYylcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSB7IChnaG9zdF9jb25zdHJhaW50IHB2Yl9wYXQgdHlwX3BvbHkpIHdpdGggcHBhdF9sb2MgfVxuICAgICAgICBhbmQgcHZiX2V4cHIgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGV4cHIgdmFyIC0+XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBleHByIHdpdGhcbiAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh2YXIsIGV4cHIpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwdmJfZXhwciB3aXRoXG4gICAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChwdmJfZXhwciwgdHlwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChMaXN0LnJldiBsb2NhbGx5X2Fic3RyYWN0X3VuaXZhcnMpXG4gICAgICAgIGluXG4gICAgICAgIChwdmJfcGF0LCBwdmJfZXhwcilcbiAgICB8IFNvbWUgKFB2Y19jb25zdHJhaW50IHsgbG9jYWxseV9hYnN0cmFjdF91bml2YXJzID0gW107IHR5cCB9KSwgXyAtPlxuICAgICAgICBjb25zdHJhaW5fcGF0IHB2Yl9wYXQgdHlwIHB2Yl9leHByXG4gICAgfCBTb21lIChQdmNfY29lcmNpb24geyBncm91bmQ7IGNvZXJjaW9uIH0pLCBfIC0+XG4gICAgICAgIGxldCBjb2VyY2lvbiA9IGNvcHlfY29yZV90eXBlIGNvZXJjaW9uIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IGdob3N0X2xvYyBjb2VyY2lvbi5wdHlwX2xvYyBpblxuICAgICAgICBsZXQgdHlwID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb2VyY2lvbiB3aXRoXG4gICAgICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgIHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9kZXNjID0gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5IChbXSwgY29lcmNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBnaG9zdF9jb25zdHJhaW50IHB2Yl9wYXQgdHlwIGluXG4gICAgICAgIGxldCBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyb3VuZCBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBtZXJnZV9sb2MgcHZiX3BhdC5wcGF0X2xvYyBwdmJfZXhwci5wZXhwX2xvYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB2Yl9leHByIHdpdGhcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgcGV4cF9sb2M7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPVxuICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAocHZiX2V4cHIsIGdyb3VuZCwgY29lcmNpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgKHB2Yl9wYXQsIHB2Yl9leHByKVxuICAgIHwgXyAtPiAocHZiX3BhdCwgcHZiX2V4cHIpXG4gIGluXG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNTAwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF81MDEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNTAwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIGxldCBsb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgbG9jIHBtb2RfZGVzYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2xvYyA9IGxvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgbG9jIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeDEgPSBjb3B5X21vZHVsZV9leHByIHgxIGluXG4gICAgICBsZXQgeDEgPVxuICAgICAgICBtYXRjaCB4MS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIFtdIC0+XG4gICAgICAgICAgICBsZXQgbG9jID0geyB4MS5wbW9kX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX25hbWUgPVxuICAgICAgICAgICAgICAgICAgeyB0eHQgPSBcInBweGxpYi5taWdyYXRpb24ua2VlcF9zdHJ1Y3R1cmVcIjsgbG9jIH07XG4gICAgICAgICAgICAgICAgYXR0cl9wYXlsb2FkID0gQXN0XzUwMC5QYXJzZXRyZWUuUFN0ciBbXTtcbiAgICAgICAgICAgICAgICBhdHRyX2xvYyA9IGxvYztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6OiB4MS5wbW9kX2F0dHJpYnV0ZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IHgxIHdpdGggcG1vZF9hdHRyaWJ1dGVzIH1cbiAgICAgICAgfCBfIC0+IHgxXG4gICAgICBpblxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9hcHBseV91bml0IHgwIC0+XG4gICAgICBsZXQgZW1wdHlfc3RydWN0ID1cbiAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuXG4gICAgICAgICAge1xuICAgICAgICAgICAgcG1vZF9kZXNjID0gUG1vZF9zdHJ1Y3R1cmUgW107XG4gICAgICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBlbXB0eV9zdHJ1Y3QpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDAuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDEuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDAuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAwLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDAuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDAuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDEuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMC5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMC5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAwLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAxLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDEuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAwLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMS5Bc3R0eXBlcy50eHQ7IEFzdF81MDEuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAwLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID1cbiBmdW4geyBMb2NhdGlvbi5sb2Nfc3RhcnQ7IExvY2F0aW9uLmxvY19lbmQ7IExvY2F0aW9uLmxvY19naG9zdCB9IC0+XG4gIHtcbiAgICBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBjb3B5X3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICBMb2NhdGlvbi5sb2NfZW5kID0gY29weV9wb3NpdGlvbiBsb2NfZW5kO1xuICAgIExvY2F0aW9uLmxvY19naG9zdDtcbiAgfVxuXG5hbmQgY29weV9wb3NpdGlvbiA6IExleGluZy5wb3NpdGlvbiAtPiBMZXhpbmcucG9zaXRpb24gPVxuIGZ1biB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9IC0+XG4gIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH1cbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNTAwXG5tb2R1bGUgVG8gPSBBc3RfNTAxXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAxLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF81MDAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzUwMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzUwMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLmxldF87IEFzdF81MDAuUGFyc2V0cmVlLmFuZHM7IEFzdF81MDAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNTAxLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzUwMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF81MDEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF81MDAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF81MDEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNTAwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICAoKiBDb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbSBPQ2FtbCA1LjAgQXN0X2hlbHBlciAqKVxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IHZhcl9uYW1lcyA9IExpc3QubWFwIChmdW4gdiAtPiB2LkxvY2F0aW9uLnR4dCkgdmFyX25hbWVzIGluXG4gICAgbGV0IHJlYyBsb29wIHQgPVxuICAgICAgbGV0IGRlc2MgPVxuICAgICAgICBtYXRjaCB0LkFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgICAgICAgfCBQdHlwX3ZhciB4IC0+IFB0eXBfdmFyIHhcbiAgICAgICAgfCBQdHlwX2Fycm93IChsYWJlbCwgY29yZV90eXBlLCBjb3JlX3R5cGUnKSAtPlxuICAgICAgICAgICAgUHR5cF9hcnJvdyAobGFiZWwsIGxvb3AgY29yZV90eXBlLCBsb29wIGNvcmVfdHlwZScpXG4gICAgICAgIHwgUHR5cF90dXBsZSBsc3QgLT4gUHR5cF90dXBsZSAoTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCBzIH0sIFtdKVxuICAgICAgICAgIHdoZW4gTGlzdC5tZW0gcyB2YXJfbmFtZXMgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyIHNcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBsc3QpIC0+XG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX29iamVjdCAobHN0LCBvKSAtPiBQdHlwX29iamVjdCAoTGlzdC5tYXAgbG9vcF9vYmplY3RfZmllbGQgbHN0LCBvKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jbGFzcyAobG9uZ2lkZW50LCBMaXN0Lm1hcCBsb29wIGxzdClcbiAgICAgICAgfCBQdHlwX2FsaWFzIChjb3JlX3R5cGUsIHN0cmluZykgLT4gUHR5cF9hbGlhcyAobG9vcCBjb3JlX3R5cGUsIHN0cmluZylcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKHJvd19maWVsZF9saXN0LCBmbGFnLCBsYmxfbHN0X29wdGlvbikgLT5cbiAgICAgICAgICAgIFB0eXBfdmFyaWFudFxuICAgICAgICAgICAgICAoTGlzdC5tYXAgbG9vcF9yb3dfZmllbGQgcm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKVxuICAgICAgICB8IFB0eXBfcG9seSAoc3RyaW5nX2xzdCwgY29yZV90eXBlKSAtPlxuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBBc3RfNTAwLlBhcnNldHJlZS5SdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPlxuICAgICAgICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuUnRhZyAobGFiZWwsIGZsYWcsIExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFJpbmhlcml0IHQgLT4gUmluaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcHJmX2Rlc2MgfVxuICAgIGFuZCBsb29wX29iamVjdF9maWVsZCBmaWVsZCA9XG4gICAgICBsZXQgcG9mX2Rlc2MgPVxuICAgICAgICBtYXRjaCBmaWVsZC5wb2ZfZGVzYyB3aXRoXG4gICAgICAgIHwgQXN0XzUwMC5QYXJzZXRyZWUuT3RhZyAobGFiZWwsIHQpIC0+XG4gICAgICAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5PdGFnIChsYWJlbCwgbG9vcCB0KVxuICAgICAgICB8IE9pbmhlcml0IHQgLT4gT2luaGVyaXQgKGxvb3AgdClcbiAgICAgIGluXG4gICAgICB7IGZpZWxkIHdpdGggcG9mX2Rlc2MgfVxuICAgIGluXG4gICAgbG9vcCB0XG4gIGluXG4gICgqIE1hdGNoIHRoZSBmb3JtIG9mIHRoZSBleHByIGFuZCBwYXR0ZXJuIHRvIGRlY2lkZSB0aGUgdmFsdWUgb2ZcbiAgICAgW3B2Yl9jb25zdHJhaW50XS4gQWRhcHRlZCBmcm9tIE9DYW1sIDUuMCBQUHJpbnRlci4gKilcbiAgbGV0IHR5dmFyc19zdHIgdHl2YXJzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYuTG9jYXRpb24udHh0KSB0eXZhcnMgaW5cbiAgbGV0IHJlc3VnYXJhYmxlX3ZhbHVlX2JpbmRpbmcgcCBlID1cbiAgICBsZXQgdmFsdWVfcGF0dGVybiA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfZGVzYyA9XG4gICAgICAgICBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgKCAoeyBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBfIH0gYXMgcGF0KSxcbiAgICAgICAgICAgICAoeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKGFyZ3NfdHl2YXJzLCBydCkgfSBhcyB0eV9leHQpICk7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9IC0+XG4gICAgICAgICAgYXNzZXJ0IChtYXRjaCBydC5wdHlwX2Rlc2Mgd2l0aCBQdHlwX3BvbHkgXyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSk7XG4gICAgICAgICAgbGV0IHR5ID0gbWF0Y2ggYXJnc190eXZhcnMgd2l0aCBbXSAtPiBydCB8IF8gLT4gdHlfZXh0IGluXG4gICAgICAgICAgYFZhciAocGF0LCBhcmdzX3R5dmFycywgcnQsIHR5KVxuICAgICAgfCB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gUHBhdF9jb25zdHJhaW50IChwYXQsIHJ0KTtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgIH0gLT5cbiAgICAgICAgICBgTm9uVmFyIChwYXQsIHJ0KVxuICAgICAgfCBfIC0+IGBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVjIHZhbHVlX2V4cCB0eXZhcnMgZSA9XG4gICAgICBtYXRjaCBlIHdpdGhcbiAgICAgIHwge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHBfZGVzYyA9IFBleHBfbmV3dHlwZSAodHl2YXIsIGUpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgfSAtPlxuICAgICAgICAgIHZhbHVlX2V4cCAodHl2YXIgOjogdHl2YXJzKSBlXG4gICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb25zdHJhaW50IChlLCBjdCk7IHBleHBfYXR0cmlidXRlcyA9IFtdIH0gLT5cbiAgICAgICAgICBTb21lIChMaXN0LnJldiB0eXZhcnMsIGUsIGN0KVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCB2YWx1ZV9leHAgPSB2YWx1ZV9leHAgW10gZSBpblxuICAgIG1hdGNoICh2YWx1ZV9wYXR0ZXJuLCB2YWx1ZV9leHApIHdpdGhcbiAgICB8IGBWYXIgKHAsIHB0X3R5dmFycywgcHRfY3QsIGV4dGVybl9jdCksIFNvbWUgKGVfdHl2YXJzLCBpbm5lcl9lLCBlX2N0KVxuICAgICAgd2hlbiB0eXZhcnNfc3RyIHB0X3R5dmFycyA9IHR5dmFyc19zdHIgZV90eXZhcnMgLT5cbiAgICAgICAgbGV0IGV0eSA9IHZhcmlmeV9jb25zdHJ1Y3RvcnMgZV90eXZhcnMgZV9jdCBpblxuICAgICAgICBpZiBldHkgPSBwdF9jdCB0aGVuXG4gICAgICAgICAgYERlc3VnYXJlZF9sb2NhbGx5X2Fic3RyYWN0IChwLCBwdF90eXZhcnMsIGVfY3QsIGlubmVyX2UpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoKiB0aGUgZXhwcmVzc2lvbiBjb25zdHJhaW50IGFuZCB0aGUgcGF0dGVybiBjb25zdHJhaW50LFxuICAgICAgICAgICAgIGRvbid0IG1hdGNoLCBidXQgd2Ugc3RpbGwgaGF2ZSBhIFB0eXBfcG9seSBwYXR0ZXJuIGNvbnN0cmFpbnQgdGhhdFxuICAgICAgICAgICAgIHNob3VsZCBiZSByZXN1Z2FyZWQgdG8gYSB2YWx1ZSBiaW5kaW5nICopXG4gICAgICAgICAgYFVuaXZhcnMgKHAsIHB0X3R5dmFycywgZXh0ZXJuX2N0LCBlKVxuICAgIHwgYFZhciAocCwgcHRfdHl2YXJzLCBwdF9jdCwgZXh0ZXJuX2N0KSwgXyAtPlxuICAgICAgICBgVW5pdmFycyAocCwgcHRfdHl2YXJzLCBleHRlcm5fY3QsIGUpXG4gICAgfCBgTm9uVmFyIChwYXQsIGN0KSwgXyAtPiBgTm9uVmFyIChwYXQsIGN0LCBlKVxuICAgIHwgXyAtPiBgTm9uZVxuICBpblxuICBsZXQgd2l0aF9jb25zdHJhaW50IHR5X3ZhcnMgdHlwID1cbiAgICBsZXQgdHlwID0gY29weV9jb3JlX3R5cGUgdHlwIGluXG4gICAgU29tZVxuICAgICAgKEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb25zdHJhaW50XG4gICAgICAgICB7IGxvY2FsbHlfYWJzdHJhY3RfdW5pdmFycyA9IHR5X3ZhcnM7IHR5cCB9KVxuICBpblxuICBsZXQgcHZiX3BhdCwgcHZiX2V4cHIsIHB2Yl9jb25zdHJhaW50ID1cbiAgICBtYXRjaCByZXN1Z2FyYWJsZV92YWx1ZV9iaW5kaW5nIHB2Yl9wYXQgcHZiX2V4cHIgd2l0aFxuICAgIHwgYERlc3VnYXJlZF9sb2NhbGx5X2Fic3RyYWN0IChwLCB0eV92YXJzLCB0eXAsIGUpIC0+XG4gICAgICAgIChwLCBlLCB3aXRoX2NvbnN0cmFpbnQgdHlfdmFycyB0eXApXG4gICAgfCBgVW5pdmFycyAocGF0LCBbXSwgY3QsIGV4cHIpIC0+IChcbiAgICAgICAgKCogY2hlY2sgaWYgd2UgYXJlIGluIHRoZSBbbGV0IHggOiB0eT8gOj4gY29lciA9IGV4cHIgXSBjYXNlICopXG4gICAgICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9jb2VyY2UgKGV4cHIsIGdyLCBjb2VyY2UpOyBwZXhwX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgICAgICAgLT5cbiAgICAgICAgICAgIGxldCBncm91bmQgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIGdyIGluXG4gICAgICAgICAgICBsZXQgY29lcmNpb24gPSBjb3B5X2NvcmVfdHlwZSBjb2VyY2UgaW5cbiAgICAgICAgICAgIGxldCBwdmJfY29uc3RyYWludCA9XG4gICAgICAgICAgICAgIFNvbWUgKEFzdF81MDEuUGFyc2V0cmVlLlB2Y19jb2VyY2lvbiB7IGdyb3VuZDsgY29lcmNpb24gfSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAocGF0LCBleHByLCBwdmJfY29uc3RyYWludClcbiAgICAgICAgfCBfIC0+IChwYXQsIGV4cHIsIHdpdGhfY29uc3RyYWludCBbXSBjdCkpXG4gICAgfCBgVW5pdmFycyAocGF0LCBfLCBjdCwgZXhwcikgLT4gKHBhdCwgZXhwciwgd2l0aF9jb25zdHJhaW50IFtdIGN0KVxuICAgIHwgYE5vblZhciAocCwgdHlwLCBlKSAtPiAocCwgZSwgd2l0aF9jb25zdHJhaW50IFtdIHR5cClcbiAgICB8IGBOb25lIC0+IChwdmJfcGF0LCBwdmJfZXhwciwgTm9uZSlcbiAgaW5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfY29uc3RyYWludDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNTAwLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDEuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzUwMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF81MDAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzUwMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNTAxLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzUwMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNTAwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBsZXQgeDEsIGlzX3VuaXQgPVxuICAgICAgICBtYXRjaCB4MS5wbW9kX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIFtdIC0+XG4gICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0ciBhY2MgOiBBc3RfNTAwLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IF8gPVxuICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFtdIC0+IChMaXN0LnJldiBhY2MsIHRydWUpXG4gICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgYXR0cl9uYW1lID0geyB0eHQgPSBcInBweGxpYi5taWdyYXRpb24ua2VlcF9zdHJ1Y3R1cmVcIjsgXyB9O1xuICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogcSAtPlxuICAgICAgICAgICAgICAgICAgKExpc3QucmV2X2FwcGVuZCBhY2MgcSwgZmFsc2UpXG4gICAgICAgICAgICAgIHwgaGQgOjogdGwgLT4gZXh0cmFjdF9hdHRyIChoZCA6OiBhY2MpIHRsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYiA9IGV4dHJhY3RfYXR0ciBbXSB4MS5wbW9kX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgICAgICh7IHgxIHdpdGggcG1vZF9hdHRyaWJ1dGVzIH0sIGIpXG4gICAgICAgIHwgXyAtPiAoeDEsIGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3VuaXQgdGhlbiBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2FwcGx5X3VuaXQgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gICAgICBlbHNlXG4gICAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF81MDEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Vbml0IC0+IEFzdF81MDEuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNTAxLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF81MDEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNTAxLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzUwMC5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNTAwLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF81MDEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF81MDAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF81MDEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNTAwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzUwMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNTAxLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzUwMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF81MDEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKCBMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNTAwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF81MDEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF81MDEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNTAxLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzUwMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfdmFycztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF92YXJzID1cbiAgICAgIExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgcGNkX3ZhcnM7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNTAxLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF81MDEuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF81MDAuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzUwMS5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzUwMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNTAxLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF81MDAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzUwMS5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNTAwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNTAxLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF81MDAuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNTAwLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzUwMC5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF81MDEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzUwMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNTAxLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF81MDAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF81MDEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzUwMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNTAwLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNTAxLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzUwMC5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF81MDAuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzUwMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzUwMC5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNTAxLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF81MDAuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNTAxLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNTAwLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF81MDEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzUwMC5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNTAxLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNTAwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNTAxLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF81MDAuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF81MDEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzUwMC5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzUwMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNTAxLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF81MDAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzUwMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNTAwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF81MDEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuY3Rpb25cbiAgfCBMb25naWRlbnQuTGlkZW50IHgwIC0+IExvbmdpZGVudC5MaWRlbnQgeDBcbiAgfCBMb25naWRlbnQuTGRvdCAoeDAsIHgxKSAtPiBMb25naWRlbnQuTGRvdCAoY29weV9Mb25naWRlbnRfdCB4MCwgeDEpXG4gIHwgTG9uZ2lkZW50LkxhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgTG9uZ2lkZW50LkxhcHBseSAoY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF81MDAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNTAxLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzUwMC5Bc3R0eXBlcy50eHQ7IEFzdF81MDAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNTAxLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzUwMS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID1cbiBmdW4geyBMb2NhdGlvbi5sb2Nfc3RhcnQ7IExvY2F0aW9uLmxvY19lbmQ7IExvY2F0aW9uLmxvY19naG9zdCB9IC0+XG4gIHtcbiAgICBMb2NhdGlvbi5sb2Nfc3RhcnQgPSBjb3B5X3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICBMb2NhdGlvbi5sb2NfZW5kID0gY29weV9wb3NpdGlvbiBsb2NfZW5kO1xuICAgIExvY2F0aW9uLmxvY19naG9zdDtcbiAgfVxuXG5hbmQgY29weV9wb3NpdGlvbiA6IExleGluZy5wb3NpdGlvbiAtPiBMZXhpbmcucG9zaXRpb24gPVxuIGZ1biB7IExleGluZy5wb3NfZm5hbWU7IExleGluZy5wb3NfbG51bTsgTGV4aW5nLnBvc19ib2w7IExleGluZy5wb3NfY251bSB9IC0+XG4gIHsgTGV4aW5nLnBvc19mbmFtZTsgTGV4aW5nLnBvc19sbnVtOyBMZXhpbmcucG9zX2JvbDsgTGV4aW5nLnBvc19jbnVtIH1cbiIsIm1vZHVsZSBGcm9tID0gQXN0XzUwMFxubW9kdWxlIFRvID0gQXN0XzQxNFxuXG4oKiQgb3BlbiBBc3RsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgIFByaW50Zi5wcmludGZcbiAgICAgICAgXCJsZXQgY29weV8lc1xcblxcXG4gICAgICAgIFxcICA6IEFzdF81MDAuUGFyc2V0cmVlLiVzIC0+IEFzdF80MTQuUGFyc2V0cmVlLiVzXFxuXFxcbiAgICAgICAgXFwgID0gZnVuIHggLT4geFxcblxcblwiXG4gICAgICAgIHMgcyBzXG4gIClcbiopXG5sZXQgY29weV9zdHJ1Y3R1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90b3BsZXZlbF9waHJhc2VcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jb3JlX3R5cGVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByZXNzaW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9wYXR0ZXJuXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jYXNlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2RlY2xhcmF0aW9uXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV90eXBlX2V4dGVuc2lvblxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19leHByXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19maWVsZFxuICA6IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc19zaWduYXR1cmVcbiAgOiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9jbGFzc190eXBlX2ZpZWxkXG4gIDogQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfZXhwclxuICA6IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9tb2R1bGVfdHlwZVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zaWduYXR1cmVfaXRlbVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9zdHJ1Y3R1cmVfaXRlbVxuICA6IEFzdF81MDAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtXG4gID0gZnVuIHggLT4geFxuXG4oKiQqKVxuIiwibW9kdWxlIEZyb20gPSBBc3RfNDE0XG5tb2R1bGUgVG8gPSBBc3RfNTAwXG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVycyAkKilcblxuKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgUHJpbnRmLnByaW50ZlxuICAgICAgICBcImxldCBjb3B5XyVzXFxuXFxcbiAgICAgICAgXFwgIDogQXN0XzQxNC5QYXJzZXRyZWUuJXMgLT4gQXN0XzUwMC5QYXJzZXRyZWUuJXNcXG5cXFxuICAgICAgICBcXCAgPSBmdW4geCAtPiB4XFxuXFxuXCJcbiAgICAgICAgcyBzIHNcbiAgKVxuKilcbmxldCBjb3B5X3N0cnVjdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3RvcGxldmVsX3BocmFzZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNTAwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NvcmVfdHlwZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4cHJlc3Npb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLmV4cHJlc3Npb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3BhdHRlcm5cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF81MDAuUGFyc2V0cmVlLnBhdHRlcm5cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2Nhc2VcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jYXNlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNhc2VcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgOiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF81MDAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3R5cGVfZXh0ZW5zaW9uXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzUwMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb25cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBBc3RfNTAwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3JcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2V4cHJcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX2ZpZWxkXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzUwMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3NpZ25hdHVyZVxuICA6IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNTAwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgOiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF81MDAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV9leHByXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X21vZHVsZV90eXBlXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzUwMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbmxldCBjb3B5X3N0cnVjdHVyZV9pdGVtXG4gIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzUwMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbiAgPSBmdW4geCAtPiB4XG5cbigqJCopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSAoW10sIFApXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChbXSwgUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgIEMgKHR5cGUgYSBiKSBQICAgU29tZSAoW2E7IGJdLCBQKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA6PSAgLi4uICAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF9tb2R0eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIG1vZHVsZV90eXBlXG4gICAgKCogd2l0aCBtb2R1bGUgdHlwZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiB3aXRoIG1vZHVsZSB0eXBlIFguWSA6PSBzaWcgZW5kICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDMwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDMwXCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTRcbm1vZHVsZSBUbyA9IEFzdF80MTNcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xM1wiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDE0LlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTQuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5sZXRfOyBBc3RfNDE0LlBhcnNldHJlZS5hbmRzOyBBc3RfNDE0LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMy5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEzLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEzLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxNC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMy5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxNC5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTQuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxNC5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTQuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTMuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxLCB4MikgLT4gKFxuICAgICAgbWF0Y2ggeDAgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgxLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICAgICAgfCBoZCA6OiBfIC0+XG4gICAgICAgICAgbWlncmF0aW9uX2Vycm9yIGhkLmxvYyBcInR5cGUgcGFyYW1ldGVycyBpbiBleHRlbnNpb24gY29uc3RydWN0b3JzXCIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxNC5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF92YXJzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwY2RfdmFycyB3aXRoXG4gIHwgW10gLT5cbiAgICAgIHtcbiAgICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgfVxuICB8IGhkIDo6IF8gLT4gbWlncmF0aW9uX2Vycm9yIGhkLmxvYyBcInBjZF92YXJzIGluIGNvbnN0cnVjdG9yIGRlY2xhcmF0aW9uc1wiXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDE0LkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTMuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTQuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxNC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTQuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTQuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxNC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTQuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxNC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDE0LkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTQuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxNC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTQuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxNC5Bc3R0eXBlcy50eHQ7IEFzdF80MTQuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTNcbm1vZHVsZSBUbyA9IEFzdF80MTRcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDE0LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDE0LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDE0LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMy5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTQuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxNC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxNC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTQuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDE0LlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTQuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMy5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDE0LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTMuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEzLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTQuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDE0LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTQuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTQuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDE0LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTQuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlB3aXRoX21vZHR5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF9tb2R0eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDE0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlc3Vic3QgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTQuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTMuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTQuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxNC5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDE0LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxNC5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTQuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoW10sIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTQuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTQuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDE0LlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxNC5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF92YXJzID0gW107XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDE0LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTQuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDE0LkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxNC5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxNC5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMy5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDE0LkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTMuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxNC5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDE0LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTQuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxNC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDE0LlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTQuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxNC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDE0LkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTMuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxNC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxNC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDE0LkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDE0LkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEzLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTQuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMy5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDE0LkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDE0LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTQuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxNC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDE0LlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTQuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTQuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEzLkFzdHR5cGVzLnR4dDsgQXN0XzQxMy5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTQuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDE0LkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgTm9WYXJpYW5jZVxuXG4gIHR5cGUgaW5qZWN0aXZpdHkgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuaW5qZWN0aXZpdHkgKikgPVxuICAgIHwgSW5qZWN0aXZlXG4gICAgfCBOb0luamVjdGl2aXR5XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICBvcGVuIEFzdHR5cGVzXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RhbnQgKikgPVxuICAgICAgUGNvbnN0X2ludGVnZXIgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgICAoKiAzIDNsIDNMIDNuXG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGV4Y2VwdCAnbCcsICdMJyBhbmQgJ24nIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXJcbiAgICAqKVxuICAgIHwgUGNvbnN0X2NoYXIgb2YgY2hhclxuICAgICgqICdjJyAqKVxuICAgIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cblxuICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuXG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgIHBsZF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4oKlxuICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3R1cGxlKVxuICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDIG9mIHsuLi59IGFzIHQgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyOVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAyOVwiXG5lbmRcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEzXG5tb2R1bGUgVG8gPSBBc3RfNDEyXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMTNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEyLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMy5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMy5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKG1hdGNoIHgwIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgICB8IHR5IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB0eS5Bc3RfNDEzLkFzdHR5cGVzLmxvY1xuICAgICAgICAgICAgICAgICAgICBcImV4aXN0ZW50aWFscyBpbiBwYXR0ZXJuLW1hdGNoaW5nXCIpO1xuICAgICAgICAgICAgICBjb3B5X3BhdHRlcm4geDEpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbG9jYXRpb25fc3RhY2sgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMy5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMi5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMi5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZSAoX3gwLCB4MSkgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MS5Bc3RfNDEzLlBhcnNldHJlZS5wbXR5X2xvYyBcIm1vZHVsZSB0eXBlIHN1YnN0aXR1dGlvblwiXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdHlwZXN1YnN0IChfeDAsIHgxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIHgxLkFzdF80MTMuUGFyc2V0cmVlLnBtdHlfbG9jXG4gICAgICAgIFwiZGVzdHJ1Y3RpdmUgbW9kdWxlIHR5cGUgc3Vic3RpdHV0aW9uXCJcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTMuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDAuQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9sb2NcbiAgICAgICAgXCJsb2NhbCBtb2R1bGUgdHlwZSBzdWJzdGl0dXRpb25cIlxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMy5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIHgxID0geDEgaW5cbiAgICAgICAgICAgIChjb3B5X3ZhcmlhbmNlIHgwLCBjb3B5X2luamVjdGl2aXR5IHgxKSApKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTMuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X2luamVjdGl2aXR5IDpcbiAgICBBc3RfNDEzLkFzdHR5cGVzLmluamVjdGl2aXR5IC0+IEFzdF80MTIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgPSBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuSW5qZWN0aXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuSW5qZWN0aXZlXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5IC0+IEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTMuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9WYXJpYW5jZVxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTMuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMi5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMi5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMy5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTMuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMy5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEzLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDEyLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nXG4gICAgICAgICh4MCwgY29weV9sb2NhdGlvbiB4MSwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDIpXG4gIHwgQXN0XzQxMy5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTMuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDEyLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMy5Bc3R0eXBlcy50eHQ7IEFzdF80MTMuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTJcbm1vZHVsZSBUbyA9IEFzdF80MTNcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEzLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEzLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMi5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTMuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMy5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTMuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDEzLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiAoW10sIGNvcHlfcGF0dGVybiB4KSkgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEzLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEzLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTIuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTMuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMy5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEzLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTMuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTMuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEzLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTMuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMy5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTIuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTMuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMy5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDEzLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMy5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHgxIGluXG4gICAgICAgICAgICAoY29weV92YXJpYW5jZSB4MCwgY29weV9pbmplY3Rpdml0eSB4MSkgKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKCBjb3B5X2NvcmVfdHlwZSB4MCxcbiAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4MSBpblxuICAgICAgICAgICAgKGNvcHlfdmFyaWFuY2UgeDAsIGNvcHlfaW5qZWN0aXZpdHkgeDEpICkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMy5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTMuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTMuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEzLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTMuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfaW5qZWN0aXZpdHkgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMuaW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5pbmplY3Rpdml0eSA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5JbmplY3RpdmUgLT4gQXN0XzQxMy5Bc3R0eXBlcy5JbmplY3RpdmVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vSW5qZWN0aXZpdHkgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5XG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMi5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEzLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTIuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2UgLT4gQXN0XzQxMy5Bc3R0eXBlcy5Ob1ZhcmlhbmNlXG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEzLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTMuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMy5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEzLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTMuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMy5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEzLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMy5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEzLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEzLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTMuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEzLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEzLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTMuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMy5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEzLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTMuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTMuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTMuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDEzLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBMb2NhdGlvbi50ICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIExvY2F0aW9uLnQgKiBzdHJpbmcgb3B0aW9uXG4gICAgKCogXCJjb25zdGFudFwiXG4gICAgICAge2RlbGltfG90aGVyIGNvbnN0YW50fGRlbGltfVxuXG4gICAgICAgVGhlIGxvY2F0aW9uIHNwYW4gdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZywgd2l0aG91dCB0aGUgZGVsaW1pdGVycy5cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gIHR5cGUgbG9jYXRpb25fc3RhY2sgPSBMb2NhdGlvbi50IGxpc3RcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogdGNvbnN0clxuICAgICAgIFQgdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqICN0Y29uc3RyXG4gICAgICAgVCAjdGNvbnN0clxuICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAgICAobW9kdWxlIFMpXG4gICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID0ge1xuICAgIHByZl9kZXNjIDogcm93X2ZpZWxkX2Rlc2M7XG4gICAgcHJmX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcHJmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIHJvd19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBSdGFnIG9mIGxhYmVsIGxvYyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAtIFRoZSAnYm9vbCcgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIG9wdGlvbiBsb2NcbiAgICAoKiAobW9kdWxlIFApICAgICAgICBTb21lIFwiUFwiXG4gICAgICAgKG1vZHVsZSBfKSAgICAgICAgTm9uZVxuXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgb3B0aW9uIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4qKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgdHlwZSB0ICs9IC4uLlxuKilcblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgKikgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqIGV4Y2VwdGlvbiBFICopXG4gIGFuZCB0eXBlX2V4Y2VwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leGNlcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvcjogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqXG4gICAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICopXG4gICAgfCBQZXh0X3JlYmluZCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICgqXG4gICAgICAgICB8IEMgPSBEXG4gICAgICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV90eXBlXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyICopID1cbiAgICB8IFVuaXRcbiAgICAoKiAoKSAqKVxuICAgIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICgqIChYIDogTVQpICAgICAgICAgIFNvbWUgWCwgTVRcbiAgICAgICAoXyA6IE1UKSAgICAgICAgICBOb25lLCBNVCAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICB2YWwgeDogVFxuICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX2V4cHJcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgKCogIHZhbCB4OiBUXG4gICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAqKVxuICAgIHwgUHN0cl90eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwbWJfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI4XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI4XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTJcbm1vZHVsZSBUbyA9IEFzdF80MTFcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDExLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEyLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMi5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTIuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMi5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFja1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX2FueSAtPiBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2Rlc2MgPSBjb3B5X3Jvd19maWVsZF9kZXNjIHByZl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHByZl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcm93X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgeDEsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfZGVzYyA9IGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9mX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQ7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBhdHRyX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYyA9IGNvcHlfbG9jYXRpb24gYXR0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF5bG9hZCA6IEFzdF80MTIuUGFyc2V0cmVlLnBheWxvYWQgLT4gQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFN0ciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QU3RyIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QU2lnIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBUeXAgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEFzdF80MTIuUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl92YWx1ZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX2V4cHIgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGYgPSBjb3B5X3BhdHRlcm4gcGNzdHJfc2VsZjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2Rlc2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIE9wdGlvbi5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MiApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfb3Blbl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlVuaXQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuVW5pdFxuICB8IEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5OYW1lZFxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDEyLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTIuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTEuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICggY29weV9jb3JlX3R5cGUgeDAsXG4gICAgICAgICAgICBsZXQgeDAsIF8gPSB4MSBpblxuICAgICAgICAgICAgY29weV92YXJpYW5jZSB4MCApKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoIGNvcHlfY29yZV90eXBlIHgwLFxuICAgICAgICAgICAgbGV0IHgwLCBfID0geDEgaW5cbiAgICAgICAgICAgIGNvcHlfdmFyaWFuY2UgeDAgKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDExLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTIuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTIuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob1ZhcmlhbmNlIC0+IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEyLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTIuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMi5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTIuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDExLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDEyLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMi5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEyLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTIuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBjb3B5X2xvY2F0aW9uIHgxLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MilcbiAgfCBBc3RfNDEyLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEyLkFzdHR5cGVzLnR4dDsgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCJvcGVuIFN0ZGxpYjBcbm1vZHVsZSBGcm9tID0gQXN0XzQxMVxubW9kdWxlIFRvID0gQXN0XzQxMlxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gQXN0XzQxMi5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHRvcF9kZWYgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdG9wX2RpciAoY29weV90b3BsZXZlbF9kaXJlY3RpdmUgeDApXG5cbmFuZCBjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2FyZztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBkaXJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyX2FyZyA9IE9wdGlvbi5tYXAgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmc7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IEFzdF80MTIuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudFxuICAgID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGRpcmFfZGVzYyA9IGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZGlyYV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBkaXJhX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDBcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MTEuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MTIuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5sZXRfOyBBc3RfNDExLlBhcnNldHJlZS5hbmRzOyBBc3RfNDExLlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDEyLkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDEyLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMi5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTIuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEyLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTEuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDExLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTIuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEyLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMi5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDEyLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDEyLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDEyLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTIuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDExLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMi5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEyLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTIuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMi5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBtZF9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCAoY29weV92YXJpYW5jZSB4MSwgQXN0XzQxMi5Bc3R0eXBlcy5Ob0luamVjdGl2aXR5KSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTIuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgKGNvcHlfdmFyaWFuY2UgeDEsIEFzdF80MTIuQXN0dHlwZXMuTm9JbmplY3Rpdml0eSkpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTIuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTIuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDEyLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMi5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEyLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMi5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDEyLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDEyLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDEyLkFzdHR5cGVzLk5vVmFyaWFuY2VcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTIuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQxMi5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDEyLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTIuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMi5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEyLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MTIuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDEyLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MTIuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MTIuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTEuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQxMi5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDExLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MTIuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MTIuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQxMi5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDExLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDEyLlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTIuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZ1xuICAgICAgICAoeDAsIGNvcHlfbG9jYXRpb24geDEsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMi5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDExLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMi5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTEuQXN0dHlwZXMudHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMi5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTIuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciwgRmFjZWJvb2sgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICB0eXBlIGxvY2F0aW9uX3N0YWNrID0gTG9jYXRpb24udCBsaXN0XG5cbiAgKCoqIHsxIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSAqKSA9IHtcbiAgICBhdHRyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgIGF0dHJfcGF5bG9hZCA6IHBheWxvYWQ7XG4gICAgYXR0cl9sb2MgOiBMb2NhdGlvbi50O1xuICB9XG4gICgqIFtAaWQgQVJHXVxuICAgICBbQEBpZCBBUkddXG5cbiAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICgqIFslaWQgQVJHXVxuICAgICBbJSVpZCBBUkddXG5cbiAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBTaWcgb2Ygc2lnbmF0dXJlICgqIDogU0lHICopXG4gICAgfCBQVHlwIG9mIGNvcmVfdHlwZSAgKCogOiBUICopXG4gICAgfCBQUGF0IG9mIHBhdHRlcm4gKiBleHByZXNzaW9uIG9wdGlvbiAgKCogPyBQICBvciAgPyBQIHdoZW4gRSAqKVxuXG4gICgqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgY29yZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHB0eXBfZGVzYzogY29yZV90eXBlX2Rlc2M7XG4gICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eXBfbG9jX3N0YWNrOiBsb2NhdGlvbl9zdGFjaztcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICAgIHRvIGEgY29uc3RyYWludCBvbiBhIGxldC1iaW5kaW5nOiBsZXQgeCA6ICdhMSAuLi4gJ2FuLiBUXG4gICAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogbG9jYXRpb25fc3RhY2s7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgKCogKG1vZHVsZSBQKSAgICAgICAgU29tZSBcIlBcIlxuICAgICAgIChtb2R1bGUgXykgICAgICAgIE5vbmVcblxuICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICB7XG4gICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGV4cF9sb2Nfc3RhY2s6IGxvY2F0aW9uX3N0YWNrO1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgTm90ZXM6XG4gICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAoKiBhc3NlcnQgRVxuICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICgqIE0uKEUpXG4gICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRvcCBvZiBsZXRvcFxuICAgICgqIGxldCogUCA9IEUgaW4gRVxuICAgICAgIGxldCogUCA9IEUgYW5kKiBQID0gRSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgIHtcbiAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGxldG9wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sZXRvcCAqKSA9XG4gICAge1xuICAgICAgbGV0XyA6IGJpbmRpbmdfb3A7XG4gICAgICBhbmRzIDogYmluZGluZ19vcCBsaXN0O1xuICAgICAgYm9keSA6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBiaW5kaW5nX29wICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5iaW5kaW5nX29wICopID1cbiAgICB7XG4gICAgICBwYm9wX29wIDogc3RyaW5nIGxvYztcbiAgICAgIHBib3BfcGF0IDogcGF0dGVybjtcbiAgICAgIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgICAgIHBib3BfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4qKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4qKVxuXG4gIGFuZCB0eXBlX2V4dGVuc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9leHRlbnNpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoOiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgIHB0eWV4dF9wcml2YXRlOiBwcml2YXRlX2ZsYWc7XG4gICAgICBwdHlleHRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbigqXG4gIHR5cGUgdCArPSAuLi5cbiopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgICAgfCBDID0gRFxuICAgICAgICopXG5cbiAgKCoqIHsxIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICB7XG4gICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgIHBjdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgKikgPVxuICAgIHwgUGN0eV9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAoKiBUIC0+IENUICAgICAgIFNpbXBsZVxuICAgICAgIH5sOlQgLT4gQ1QgICAgTGFiZWxsZWQgbFxuICAgICAgID9sOlQgLT4gQ1QgICAgT3B0aW9uYWwgbFxuICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc190eXBlXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAge1xuICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBjXG4gICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb24gKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICB7XG4gICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAge1xuICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgbG9jIG9wdGlvblxuICAgICgqIGluaGVyaXQgQ0VcbiAgICAgICBpbmhlcml0IENFIGFzIHhcbiAgICAgICBpbmhlcml0ISBDRVxuICAgICAgIGluaGVyaXQhIENFIGFzIHhcbiAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiB2YWwgeCA9IEVcbiAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAqKVxuICAgIHwgUGNmX2NvbnN0cmFpbnQgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjZl9pbml0aWFsaXplciBvZiBleHByZXNzaW9uXG4gICAgKCogaW5pdGlhbGl6ZXIgRSAqKVxuICAgIHwgUGNmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY2ZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19maWVsZF9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kICopID1cbiAgICB8IENma192aXJ0dWFsIG9mIGNvcmVfdHlwZVxuICAgIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbiAgYW5kIGNsYXNzX2RlY2xhcmF0aW9uID0gY2xhc3NfZXhwciBjbGFzc19pbmZvc1xuXG4gICgqKiB7MSBNb2R1bGUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBtdHlfZGVzYzogbW9kdWxlX3R5cGVfZGVzYztcbiAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2YgZnVuY3Rvcl9wYXJhbWV0ZXIgKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIGZ1bmN0b3JfcGFyYW1ldGVyICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAqKSA9XG4gICAgfCBVbml0XG4gICAgKCogKCkgKilcbiAgICB8IE5hbWVkIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX3R5cGVcbiAgICAoKiAoWCA6IE1UKSAgICAgICAgICBTb21lIFgsIE1UXG4gICAgICAgKF8gOiBNVCkgICAgICAgICAgTm9uZSwgTVQgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIG9wdGlvbiBsb2M7XG4gICAgICBwbWRfdHlwZTogbW9kdWxlX3R5cGU7XG4gICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfc3Vic3RpdHV0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uICopID1cbiAgICB7XG4gICAgICBwbXNfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtc19tYW5pZmVzdDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcG1zX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtc19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgcG10ZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG4gICgqIFMgPSBNVFxuICAgICBTICAgICAgIChhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgcG10ZF90eXBlID0gTm9uZSlcbiAgKilcblxuICBhbmQgJ2Egb3Blbl9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUub3Blbl9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcG9wZW5fZXhwcjogJ2E7XG4gICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uID0gTG9uZ2lkZW50LnQgbG9jIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk8gKilcblxuICBhbmQgb3Blbl9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIG9wZW5faW5mb3NcbiAgKCogb3BlbiBNLk5cbiAgICAgb3BlbiBNKE4pLk9cbiAgICAgb3BlbiBzdHJ1Y3QgLi4uIGVuZCAqKVxuXG4gIGFuZCAnYSBpbmNsdWRlX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5pbmNsdWRlX2luZm9zICopID1cbiAgICB7XG4gICAgICBwaW5jbF9tb2Q6ICdhO1xuICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAge1xuICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBvcHRpb24gbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI3XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI3XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MTFcbm1vZHVsZSBUbyA9IEFzdF80MTBcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHIgeCA9IGNvcHlfZXhwcmVzc2lvbiB4XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDExLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMS5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkID0gT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXQgeCA9IGNvcHlfcGF0dGVybiB4XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEFzdF80MTEuUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwIHggPSBjb3B5X2NvcmVfdHlwZSB4XG5cbmFuZCBjb3B5X2xvY2F0aW9uX3N0YWNrIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayAtPiBBc3RfNDEwLlBhcnNldHJlZS5sb2NhdGlvbl9zdGFjayA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTEuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtYl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnRcbiAgICAgICAgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyIC0+IEFzdF80MTAuUGFyc2V0cmVlLmZ1bmN0b3JfcGFyYW1ldGVyID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Vbml0IC0+IEFzdF80MTAuUGFyc2V0cmVlLlVuaXRcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWRcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKGNvcHlfZnVuY3Rvcl9wYXJhbWV0ZXIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MTEuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MTEuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDExLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MTAuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDExLkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MTAuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbWRfbmFtZSA9XG4gICAgICBjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MTEuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MTEuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDExLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDExLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MTEuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDExLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MTEuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIF8sIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgyKVxuICB8IEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDExLkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MTEuQXN0dHlwZXMudHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbiIsIm9wZW4gU3RkbGliMFxubW9kdWxlIEZyb20gPSBBc3RfNDEwXG5tb2R1bGUgVG8gPSBBc3RfNDExXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDExLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJfYXJnID0gT3B0aW9uLm1hcCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByIHggPSBjb3B5X2V4cHJlc3Npb24geFxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHgwLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBleHBfcG9seVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX25ld3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4cF9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldG9wIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2xldG9wIChjb3B5X2xldG9wIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBBc3RfNDExLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2xldG9wIDogQXN0XzQxMC5QYXJzZXRyZWUubGV0b3AgLT4gQXN0XzQxMS5QYXJzZXRyZWUubGV0b3AgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLmxldF87IEFzdF80MTAuUGFyc2V0cmVlLmFuZHM7IEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUubGV0XyA9IGNvcHlfYmluZGluZ19vcCBsZXRfO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmFuZHMgPSBMaXN0Lm1hcCBjb3B5X2JpbmRpbmdfb3AgYW5kcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5ib2R5ID0gY29weV9leHByZXNzaW9uIGJvZHk7XG4gIH1cblxuYW5kIGNvcHlfYmluZGluZ19vcCA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYmluZGluZ19vcCAtPiBBc3RfNDExLlBhcnNldHJlZS5iaW5kaW5nX29wID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3Bfb3A7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9leHA7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBib3Bfb3AgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGJvcF9vcDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX3BhdCA9IGNvcHlfcGF0dGVybiBwYm9wX3BhdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2V4cCA9IGNvcHlfZXhwcmVzc2lvbiBwYm9wX2V4cDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wYm9wX2xvYyA9IGNvcHlfbG9jYXRpb24gcGJvcF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5VcHRvIC0+IEFzdF80MTEuQXN0dHlwZXMuVXB0b1xuICB8IEFzdF80MTAuQXN0dHlwZXMuRG93bnRvIC0+IEFzdF80MTEuQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY19ndWFyZCA9IE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2FzZSBsaXN0ID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBjb3B5X2xvY2F0aW9uX3N0YWNrIHBwYXRfbG9jX3N0YWNrO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0IHggPSBjb3B5X3BhdHRlcm4geFxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfdW5wYWNrXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cCB4ID0gY29weV9jb3JlX3R5cGUgeFxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgLT4gQXN0XzQxMS5QYXJzZXRyZWUubG9jYXRpb25fc3RhY2sgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbG9jYXRpb24geFxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MTAuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDEwLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQxMC5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDExLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTEuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgT3B0aW9uLm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtYl9uYW1lID1cbiAgICAgIGNvcHlfbG9jIChmdW4geCAtPiBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4KSBwbWJfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciAtPiBBc3RfNDExLlBhcnNldHJlZS5mdW5jdG9yX3BhcmFtZXRlciA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuVW5pdCAtPiBBc3RfNDExLlBhcnNldHJlZS5Vbml0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuTmFtZWQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk5hbWVkXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDExLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgIChjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDExLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MTEuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MTEuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTEuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MTEuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQxMS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MTEuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDExLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDExLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MTEuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2MgKGZ1biB4IC0+IE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgpIHBtZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleG5fbG9jID0gY29weV9sb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHB0eWV4dF9wYXRoO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4dF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgIChjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLnByaXZhdGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlIC0+IEFzdF80MTEuQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHVibGljIC0+IEFzdF80MTEuQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBBc3RfNDExLlBhcnNldHJlZS50eXBlX2tpbmRcbiAgICA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBBc3RfNDExLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IChMaXN0Lm1hcCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gQXN0XzQxMS5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDExLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfYXJncztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGNkX3JlcyA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGxkX25hbWU7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnBsZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBsZF9sb2M7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBBc3RfNDExLkFzdHR5cGVzLm11dGFibGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbW11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogQXN0XzQxMC5Bc3R0eXBlcy52YXJpYW5jZSAtPiBBc3RfNDExLkFzdHR5cGVzLnZhcmlhbmNlID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkludmFyaWFudCAtPiBBc3RfNDExLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gQXN0XzQxMS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBBc3RfNDExLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIEFzdF80MTEuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMS5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAtPiBBc3RfNDExLlBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT3RhZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuT3RhZyAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gQXN0XzQxMS5Bc3R0eXBlcy5hcmdfbGFiZWwgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLk5vbGFiZWxcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkxhYmVsbGVkIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IEFzdF80MTEuQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOlxuICAgIEFzdF80MTAuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5DbG9zZWQgLT4gQXN0XzQxMS5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk9wZW4gLT4gQXN0XzQxMS5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogQXN0XzQxMC5Bc3R0eXBlcy5sYWJlbCAtPiBBc3RfNDExLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEFzdF80MTAuQXN0dHlwZXMucmVjX2ZsYWcgLT4gQXN0XzQxMS5Bc3R0eXBlcy5yZWNfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gQXN0XzQxMS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBBc3RfNDExLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0YW50IC0+IEFzdF80MTEuUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBBc3RfNDExLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9zdHJpbmdcbiAgICAgICAgKHgwLCBMb2NhdGlvbi5ub25lLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTEuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE9wdGlvbi5tYXAgKGZ1biB4IC0+IHgpIHgxKVxuXG5hbmQgY29weV9Mb25naWRlbnRfdCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPiAnZjAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgLT4gJ2cwIEFzdF80MTEuQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBBc3RfNDEwLkFzdHR5cGVzLnR4dDsgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IEFzdF80MTEuQXN0dHlwZXMudHh0ID0gZjAgdHh0OyBBc3RfNDExLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIsIEZhY2Vib29rICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5cbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5hdHRyaWJ1dGUgKikgPSB7XG4gICAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgICBhdHRyX3BheWxvYWQgOiBwYXlsb2FkO1xuICAgIGF0dHJfbG9jIDogTG9jYXRpb24udDtcbiAgfVxuICAoKiBbQGlkIEFSR11cbiAgICAgW0BAaWQgQVJHXVxuXG4gICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAoKiBbJWlkIEFSR11cbiAgICAgWyUlaWQgQVJHXVxuXG4gICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgcHR5cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgdHlwID0gY29yZV90eXBlXG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIHRjb25zdHJcbiAgICAgICBUIHRjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2Ygb2JqZWN0X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiAjdGNvbnN0clxuICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAoKiAnYTEgLi4uICdhbi4gVFxuXG4gICAgICAgQ2FuIG9ubHkgYXBwZWFyIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dDpcblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBwYXRfY29uc3RyYWludCBub2RlIGNvcnJlc3BvbmRpbmdcbiAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgID0gZSAuLi5cblxuICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAoKlxuICAgICAobW9kdWxlIFMpXG4gICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAqKVxuXG4gIGFuZCByb3dfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZCAqKSA9IHtcbiAgICBwcmZfZGVzYyA6IHJvd19maWVsZF9kZXNjO1xuICAgIHByZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHByZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCByb3dfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgLSBUaGUgJ2Jvb2wnIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG4gICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID0ge1xuICAgIHBvZl9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2M7XG4gICAgcG9mX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgcG9mX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICB9XG5cbiAgYW5kIG9iamVjdF9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAge1xuICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBwYXRfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBwYXQgPSBwYXR0ZXJuXG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAoKiAnYScuLid6J1xuXG4gICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICgqIChtb2R1bGUgUClcbiAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBleHBfbG9jX3N0YWNrOiBMb2NhdGlvbi50IGxpc3Q7XG4gICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBleHByID0gZXhwcmVzc2lvblxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIHhcbiAgICAgICBNLnhcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlc1xuICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgIE5vdGVzOlxuICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgKCogYXNzZXJ0IEVcbiAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvbiAqIGV4cHJlc3Npb25cbiAgICAoKiBNLihFKVxuICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAoKiBsZXQqIFAgPSBFIGluIEVcbiAgICAgICBsZXQqIFAgPSBFIGFuZCogUCA9IEUgaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICB7XG4gICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgfVxuXG4gIGFuZCBjYXNlcyA9IGNhc2UgbGlzdFxuXG4gIGFuZCBsZXRvcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGV0b3AgKikgPVxuICAgIHtcbiAgICAgIGxldF8gOiBiaW5kaW5nX29wO1xuICAgICAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgICAgIGJvZHkgOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgYmluZGluZ19vcCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYmluZGluZ19vcCAqKSA9XG4gICAge1xuICAgICAgcGJvcF9vcCA6IHN0cmluZyBsb2M7XG4gICAgICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gICAgICBwYm9wX2V4cCA6IGV4cHJlc3Npb247XG4gICAgICBwYm9wX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgIHtcbiAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4oKlxuICAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgfCBQdHlwZV9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX29wZW5cblxuICBhbmQgbGFiZWxfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgcGxkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gICgqICB7IC4uLjsgbDogVDsgLi4uIH0gICAgICAgICAgICAobXV0YWJsZT1JbW11dGFibGUpXG4gICAgICB7IC4uLjsgbXV0YWJsZSBsOiBUOyAuLi4gfSAgICAobXV0YWJsZT1NdXRhYmxlKVxuXG4gICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgKilcblxuICBhbmQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwY2RfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqKSA9XG4gICAgfCBQY3N0cl90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcblxuKCpcbiAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgIHwgQzogVDAgICAgICAgICAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFtdKVxuICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEM6IHsuLi59IC0+IFQwICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICB7XG4gICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgcHR5ZXh0X3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgcHR5ZXh0X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG4oKlxuICAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICB7XG4gICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiBleGNlcHRpb24gRSAqKVxuICBhbmQgdHlwZV9leGNlcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlleG5fY29uc3RydWN0b3I6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICAgIHB0eWV4bl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleG5fYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAoKlxuICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgIHwgQzogVDEgKiAuLi4gKiBUbiAtPiBUMCAoW1QxOyAuLi47IFRuXSwgU29tZSBUMClcbiAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAoKlxuICAgICAgIHwgQyA9IERcbiAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAqKVxuICAgIHwgUGN0eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZVxuICAgICgqIGxldCBvcGVuIE0gaW4gQ1QgKilcblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICB7XG4gICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogY1xuICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY2xfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfZXhwclxuICAgICgqIGxldCBvcGVuIE0gaW4gQ0UgKilcblxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAge1xuICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgIHtcbiAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAoKiBpbmhlcml0IENFXG4gICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgKilcbiAgICB8IFBjZl92YWwgb2YgKGxhYmVsIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgKCogdmFsIHggPSBFXG4gICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICB7XG4gICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICBwbXR5X2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUG10eV9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBTICopXG4gICAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmVcbiAgICAoKiBzaWcgLi4uIGVuZCAqKVxuICAgIHwgUG10eV9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfdHlwZVxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTVQyICopXG4gICAgfCBQbXR5X3dpdGggb2YgbW9kdWxlX3R5cGUgKiB3aXRoX2NvbnN0cmFpbnQgbGlzdFxuICAgICgqIE1UIHdpdGggLi4uICopXG4gICAgfCBQbXR5X3R5cGVvZiBvZiBtb2R1bGVfZXhwclxuICAgICgqIG1vZHVsZSB0eXBlIG9mIE1FICopXG4gICAgfCBQbXR5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUG10eV9hbGlhcyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiAobW9kdWxlIE0pICopXG5cbiAgYW5kIHNpZ25hdHVyZSA9IHNpZ25hdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc2lnbmF0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc2lnX2Rlc2M6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHNpZ192YWx1ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAoKlxuICAgICAgIHZhbCB4OiBUXG4gICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiXG4gICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uICopXG4gICAgfCBQc2lnX3R5cGVzdWJzdCBvZiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi4gICopXG4gICAgfCBQc2lnX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc2lnX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSBYID0gTVxuICAgICAgIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfbW9kc3Vic3Qgb2YgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICgqIG1vZHVsZSBYIDo9IE0gKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgcG1kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTIDogTVQgKilcblxuICBhbmQgbW9kdWxlX3N1YnN0aXR1dGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAqKSA9XG4gICAge1xuICAgICAgcG1zX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXNfbWFuaWZlc3Q6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHBtc19hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbXNfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbXRkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG10ZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kICdhIG9wZW5faW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLm9wZW5faW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHI6ICdhO1xuICAgICAgcG9wZW5fb3ZlcnJpZGU6IG92ZXJyaWRlX2ZsYWc7XG4gICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgKilcblxuICBhbmQgb3Blbl9kZXNjcmlwdGlvbiA9IExvbmdpZGVudC50IGxvYyBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PICopXG5cbiAgYW5kIG9wZW5fZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBvcGVuX2luZm9zXG4gICgqIG9wZW4gTS5OXG4gICAgIG9wZW4gTShOKS5PXG4gICAgIG9wZW4gc3RydWN0IC4uLiBlbmQgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgIHBpbmNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gIGFuZCBpbmNsdWRlX2Rlc2NyaXB0aW9uID0gbW9kdWxlX3R5cGUgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1UICopXG5cbiAgYW5kIGluY2x1ZGVfZGVjbGFyYXRpb24gPSBtb2R1bGVfZXhwciBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTUUgKilcblxuICBhbmQgd2l0aF9jb25zdHJhaW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgKikgPVxuICAgIHwgUHdpdGhfdHlwZSBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA9IC4uLlxuXG4gICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaFxuICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICAgIHwgUHdpdGhfbW9kdWxlIG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA9IFogKilcbiAgICB8IFB3aXRoX3R5cGVzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogd2l0aCB0eXBlIFgudCA6PSAuLi4sIHNhbWUgZm9ybWF0IGFzIFtQd2l0aF90eXBlXSAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogd2l0aCBtb2R1bGUgWC5ZIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgIHtcbiAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgIHtcbiAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICgqICB2YWwgeDogVFxuICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgdG9wbGV2ZWxfZGlyZWN0aXZlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgKikgPVxuICAgIHtcbiAgICAgIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgICBwZGlyX2FyZyA6IGRpcmVjdGl2ZV9hcmd1bWVudCBvcHRpb247XG4gICAgICBwZGlyX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAge1xuICAgICAgcGRpcmFfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjO1xuICAgICAgcGRpcmFfbG9jIDogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAqKSA9XG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjZcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjZcIlxuZW5kXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MTBcbm1vZHVsZSBUbyA9IEFzdF80MDlcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4xMFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgbWFwX29wdGlvbiBmIHggPSBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmcgPSBtYXBfb3B0aW9uIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQxMC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudFxuICAgICAgICAoY29weV9sYWJlbCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhclxuICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKCBjb3B5X2xvY1xuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgeDAubG9jIFwiYW5vbnltb3VzIGxldCBtb2R1bGVcIlxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUubGV0XzsgQXN0XzQxMC5QYXJzZXRyZWUuYW5kczsgQXN0XzQxMC5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19saHM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfZ3VhcmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfcmhzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkID0gbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgbGlzdCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9jYXNlIHhcblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gY29weV9sb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2tcbiAgICAgICAgKGNvcHlfbG9jXG4gICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgeDAubG9jIFwiYW55bnltb3VzIHVucGFja1wiIHwgU29tZSB4IC0+IHgpXG4gICAgICAgICAgIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IGNvcHlfbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9sb2NhdGlvbl9zdGFjayA6IEFzdF80MTAuUGFyc2V0cmVlLmxvY2F0aW9uX3N0YWNrIC0+IExvY2F0aW9uLnQgbGlzdCA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9sb2NhdGlvbiB4XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MTAuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBtYXBfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWUgPVxuICAgICAgY29weV9sb2NcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgIHwgTm9uZSAtPiBtaWdyYXRpb25fZXJyb3IgcG1iX25hbWUubG9jIFwiYW5vbnltb3VzIG1vZHVsZSBiaW5kaW5nXCIpXG4gICAgICAgIHBtYl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxKSAtPlxuICAgICAgbGV0IHgsIHkgPSBjb3B5X2Z1bmN0b3JfcGFyYW1ldGVyIHgwIGluXG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgsIHksIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9mdW5jdG9yX3BhcmFtZXRlciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgLT5cbiAgICBzdHJpbmcgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgKiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSBvcHRpb24gPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlVuaXQgLT4gKHsgbG9jID0gTG9jYXRpb24ubm9uZTsgdHh0ID0gXCIqXCIgfSwgTm9uZSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5OYW1lZCAoeDAsIHgxKSAtPlxuICAgICAgKCBjb3B5X2xvYyAoZnVuY3Rpb24gTm9uZSAtPiBcIl9cIiB8IFNvbWUgeCAtPiB4KSB4MCxcbiAgICAgICAgU29tZSAoY29weV9tb2R1bGVfdHlwZSB4MSkgKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgIGxldCB4LCB5ID0gY29weV9mdW5jdG9yX3BhcmFtZXRlciB4MCBpblxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4LCB5LCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZVxuICAgID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IChMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgKGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBBc3RfNDEwLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvblxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBBc3RfNDA5LkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5WaXJ0dWFsIC0+IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbFxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X29wZW5faW5mb3MgKGZ1biB4IC0+IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeCkgeFxuXG5hbmQgY29weV9vcGVuX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBBc3RfNDEwLlBhcnNldHJlZS5vcGVuX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9leHByO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9leHByID0gZjAgcG9wZW5fZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZSAtPiBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaCAtPiBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZSA9IG1hcF9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3N1YnN0aXR1dGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1zX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtc19sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtc19uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcG1zX21hbmlmZXN0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtc19hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19sb2MgPSBjb3B5X2xvY2F0aW9uIHBtc19sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX25hbWUgPVxuICAgICAgY29weV9sb2NcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IG1pZ3JhdGlvbl9lcnJvciBwbWRfbmFtZS5sb2MgXCJhbm9ueW1vdXMgbW9kdWxlIGRlY2xhcmF0aW9uXCJcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgICBwbWRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXMgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQxMC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDEwLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MTAuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDEwLkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDkuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MTAuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQxMC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDEwLlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBtYXBfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MTAuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDlcbm1vZHVsZSBUbyA9IEFzdF80MTBcblxubGV0IG1hcF9vcHRpb24gZiB4ID0gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gTm9uZSB8IFNvbWUgeCAtPiBTb21lIChmIHgpXG5cbmxldCByZWMgY29weV90b3BsZXZlbF9waHJhc2UgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAtPiBBc3RfNDEwLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0b3BfZGlyIChjb3B5X3RvcGxldmVsX2RpcmVjdGl2ZSB4MClcblxuYW5kIGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGRpcl9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJfYXJnID0gbWFwX29wdGlvbiBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2M7IEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZGlyYV9kZXNjID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyBwZGlyYV9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBkaXJhX2xvYyA9IGNvcHlfbG9jYXRpb24gcGRpcmFfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBkaXJfYm9vbCB4MFxuXG5hbmQgY29weV9leHByZXNzaW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXhwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcGV4cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChjb3B5X2Nhc2VzIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY2FzZXMgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnRcbiAgICAgICAgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBtYXBfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9maWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGV4cF9wb2x5XG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIG1hcF9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbmV3dHlwZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXhwX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0b3AgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfbGV0b3AgKGNvcHlfbGV0b3AgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfbGV0b3AgOiBBc3RfNDA5LlBhcnNldHJlZS5sZXRvcCAtPiBBc3RfNDEwLlBhcnNldHJlZS5sZXRvcCA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUubGV0XzsgQXN0XzQwOS5QYXJzZXRyZWUuYW5kczsgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5sZXRfID0gY29weV9iaW5kaW5nX29wIGxldF87XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYW5kcyA9IExpc3QubWFwIGNvcHlfYmluZGluZ19vcCBhbmRzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmJvZHkgPSBjb3B5X2V4cHJlc3Npb24gYm9keTtcbiAgfVxuXG5hbmQgY29weV9iaW5kaW5nX29wIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5iaW5kaW5nX29wIC0+IEFzdF80MTAuUGFyc2V0cmVlLmJpbmRpbmdfb3AgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9vcDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX3BhdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2V4cDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGJvcF9vcCA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwYm9wX29wO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfcGF0ID0gY29weV9wYXR0ZXJuIHBib3BfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfZXhwID0gY29weV9leHByZXNzaW9uIHBib3BfZXhwO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBib3BfbG9jID0gY29weV9sb2NhdGlvbiBwYm9wX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlVwdG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5VcHRvXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Eb3dudG8gLT4gQXN0XzQxMC5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZXMgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlcyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jYXNlIGxpc3QgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfY2FzZSB4XG5cbmFuZCBjb3B5X2Nhc2UgOiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfbGhzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2d1YXJkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX3JocztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY19ndWFyZCA9IG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gLT4gQXN0XzQxMC5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2s7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwcGF0X2xvY19zdGFjaztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgbWFwX29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIG1hcF9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiBTb21lIHgpIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNvcmVfdHlwZVxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHR5cF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYW55IC0+IEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5yb3dfZmllbGRcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfZGVzYyA9IGNvcHlfcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHJmX2xvYyA9IGNvcHlfbG9jYXRpb24gcHJmX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9yb3dfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUucm93X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5SdGFnXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCB4MSwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gQXN0XzQxMC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9kZXNjID0gY29weV9vYmplY3RfZmllbGRfZGVzYyBwb2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wb2ZfbG9jID0gY29weV9sb2NhdGlvbiBwb2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuYXR0cmlidXRlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuYXR0cl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5hdHRyX3BheWxvYWQgPSBjb3B5X3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLmF0dHJfbG9jID0gY29weV9sb2NhdGlvbiBhdHRyX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogQXN0XzQwOS5QYXJzZXRyZWUucGF5bG9hZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5wYXlsb2FkID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QU3RyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTaWcgeDAgLT4gQXN0XzQxMC5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIG1hcF9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gQXN0XzQxMC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX3ZhbHVlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiAoY29weV90eXBlX2V4Y2VwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdHlwZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgbWFwX29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjbF9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDAsIGNvcHlfY2xhc3NfZXhwciB4MSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmOyBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9maWVsZHMgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2ZfbG9jID0gY29weV9sb2NhdGlvbiBwY2ZfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfaW5oZXJpdFxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCxcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDEsXG4gICAgICAgICAgbWFwX29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9vcGVuX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgcG1iX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggKG1hdGNoICh4MC50eHQsIHgxKSB3aXRoXG4gICAgICAgICAgfCBcIipcIiwgTm9uZSAtPiBVbml0XG4gICAgICAgICAgfCBcIl9cIiwgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biBfIC0+IE5vbmUpIHgwLCBjb3B5X21vZHVsZV90eXBlIG10KVxuICAgICAgICAgIHwgXywgU29tZSBtdCAtPlxuICAgICAgICAgICAgICBOYW1lZCAoY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludFxuICAgICAgICAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gQXN0XzQxMC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCAobWF0Y2ggKHgwLnR4dCwgeDEpIHdpdGhcbiAgICAgICAgICB8IFwiKlwiLCBOb25lIC0+IFVuaXRcbiAgICAgICAgICB8IFwiX1wiLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIF8gLT4gTm9uZSkgeDAsIGNvcHlfbW9kdWxlX3R5cGUgbXQpXG4gICAgICAgICAgfCBfLCBTb21lIG10IC0+XG4gICAgICAgICAgICAgIE5hbWVkIChjb3B5X2xvYyAoZnVuIHggLT4gU29tZSB4KSB4MCwgY29weV9tb2R1bGVfdHlwZSBtdClcbiAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBBc3RfNDEwLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCAoTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfdHlwZV9leGNlcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX21vZHN1YnN0IChjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZVxuICAgICAgICAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0eV9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NsYXNzX3R5cGUgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdHlfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgQXN0XzQwOS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25cbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDEwLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gQXN0XzQxMC5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVmlydHVhbCAtPiBBc3RfNDEwLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlIC0+IEFzdF80MTAuQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gQXN0XzQxMC5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIChmdW4geCAtPiBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgpIHhcblxuYW5kIGNvcHlfb3Blbl9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9pbmZvcyAtPlxuICAgICAgJ2cwIEFzdF80MTAuUGFyc2V0cmVlLm9wZW5faW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGYwIHBvcGVuX2V4cHI7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuRnJlc2ggLT4gQXN0XzQxMC5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBtYXBfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9zdWJzdGl0dXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtc19tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXNfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbWFuaWZlc3QgPSBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHBtc19tYW5pZmVzdDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbXNfbG9jID0gY29weV9sb2NhdGlvbiBwbXNfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IFNvbWUgeCkgcG1kX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leGNlcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgcHR5ZXh0X3BhdGg7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5ZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXh0X2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QZXh0X3JlYmluZCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdHlwZV9uYW1lO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfa2luZCA9IGNvcHlfdHlwZV9raW5kIHB0eXBlX2tpbmQ7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBtYXBfb3B0aW9uIGNvcHlfY29yZV90eXBlIHB0eXBlX21hbmlmZXN0O1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMucHJpdmF0ZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMucHJpdmF0ZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGUgLT4gQXN0XzQxMC5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5QdWJsaWMgLT4gQXN0XzQxMC5Bc3R0eXBlcy5QdWJsaWNcblxuYW5kIGNvcHlfdHlwZV9raW5kIDogQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kIC0+IEFzdF80MTAuUGFyc2V0cmVlLnR5cGVfa2luZFxuICAgID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgIEFzdF80MTAuUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5QdHlwZV9vcGVuXG5cbmFuZCBjb3B5X2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MTAuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2FyZ3MgPSBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wY2RfcmVzID0gbWFwX29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBjZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZF9sb2M7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT5cbiAgICBBc3RfNDEwLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbXV0YWJsZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnBsZF90eXBlID0gY29weV9jb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMubXV0YWJsZV9mbGFnIC0+IEFzdF80MTAuQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkltbXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk11dGFibGVcblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBBc3RfNDA5LkFzdHR5cGVzLnZhcmlhbmNlIC0+IEFzdF80MTAuQXN0dHlwZXMudmFyaWFuY2UgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ292YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW52YXJpYW50IC0+IEFzdF80MTAuQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBBc3RfNDEwLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIEFzdF80MTAuUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgQXN0XzQxMC5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBBc3RfNDEwLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfb2JqZWN0X2ZpZWxkX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjIC0+IEFzdF80MTAuUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5PdGFnIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBBc3RfNDEwLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMuTm9sYWJlbFxuICB8IEFzdF80MDkuQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gQXN0XzQxMC5Bc3R0eXBlcy5PcHRpb25hbCB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLmNsb3NlZF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNsb3NlZCAtPiBBc3RfNDEwLkFzdHR5cGVzLkNsb3NlZFxuICB8IEFzdF80MDkuQXN0dHlwZXMuT3BlbiAtPiBBc3RfNDEwLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBBc3RfNDA5LkFzdHR5cGVzLmxhYmVsIC0+IEFzdF80MTAuQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogQXN0XzQwOS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBBc3RfNDEwLkFzdHR5cGVzLnJlY19mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBBc3RfNDEwLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEFzdF80MDkuQXN0dHlwZXMuUmVjdXJzaXZlIC0+IEFzdF80MTAuQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gQXN0XzQxMC5QYXJzZXRyZWUuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDEwLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IEFzdF80MTAuUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIG1hcF9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQxMC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgbWFwX29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X0xvbmdpZGVudF90IDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X2xvYyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+ICdmMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyAtPiAnZzAgQXN0XzQxMC5Bc3R0eXBlcy5sb2MgPVxuIGZ1biBmMCB7IEFzdF80MDkuQXN0dHlwZXMudHh0OyBBc3RfNDA5LkFzdHR5cGVzLmxvYyB9IC0+XG4gIHsgQXN0XzQxMC5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IEFzdF80MTAuQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBUaHUgTWFyIDIxIDA5OjUwOjQyIEdNVCAyMDE5XG4gICBPQ2FtbCB3YXM6XG4gICBjb21taXQgNTVjOWJhNDY2MzYyZjMwM2ViNGQ1ZWQ1MTFmNmZkYTE0Mjg3OTEzNyAoSEVBRCAtPiA0LjA4LCBvcmlnaW4vNC4wOClcbiAgICAgQXV0aG9yOiBOaWNvbMOhcyBPamVkYSBCw6RyIDxuLm9qZS5iYXJAZ21haWwuY29tPlxuICAgICBEYXRlOiAgIFR1ZSBNYXIgMTkgMDg6MTE6MDIgMjAxOSArMDEwMFxuXG4gICAgICAgICBNZXJnZSBwdWxsIHJlcXVlc3QgIzg1MjEgZnJvbSBub2piL2ZpeF91bml4X3Rlc3RzXzQwOFxuXG4gICAgICAgICBBY3R1YWxseSBydW4gYWxsIGxpYi11bml4IHRlc3RzIFs0LjA4XVxuKilcblxubW9kdWxlIEFzdHR5cGVzID0gc3RydWN0XG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gICgqIE9yZGVyIG1hdHRlcnMsIHVzZWQgaW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbiAqKVxuICB0eXBlIHByaXZhdGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgKikgPSBQcml2YXRlIHwgUHVibGljXG5cbiAgdHlwZSBtdXRhYmxlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnICopID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuXG4gIHR5cGUgdmlydHVhbF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyAqKSA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuXG4gIHR5cGUgb3ZlcnJpZGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnICopID0gT3ZlcnJpZGUgfCBGcmVzaFxuXG4gIHR5cGUgY2xvc2VkX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgKikgPSBDbG9zZWQgfCBPcGVuXG5cbiAgdHlwZSBsYWJlbCA9IHN0cmluZ1xuXG4gIHR5cGUgYXJnX2xhYmVsICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmFyZ19sYWJlbCAqKSA9XG4gICAgICBOb2xhYmVsXG4gICAgfCBMYWJlbGxlZCBvZiBzdHJpbmcgKCogIGxhYmVsOlQgLT4gLi4uICopXG4gICAgfCBPcHRpb25hbCBvZiBzdHJpbmcgKCogP2xhYmVsOlQgLT4gLi4uICopXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuXG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezEgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuYXR0cmlidXRlICopID0ge1xuICAgIGF0dHJfbmFtZSA6IHN0cmluZyBsb2M7XG4gICAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgICBhdHRyX2xvYyA6IExvY2F0aW9uLnQ7XG4gIH1cbiAgKCogW0BpZCBBUkddXG4gICAgIFtAQGlkIEFSR11cblxuICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgKCogWyVpZCBBUkddXG4gICAgIFslJWlkIEFSR11cblxuICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsxIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5cF9sb2Nfc3RhY2s6IExvY2F0aW9uLnQgbGlzdDtcbiAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIHR5cCA9IGNvcmVfdHlwZVxuXG4gIGFuZCBjb3JlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgKikgPVxuICAgIHwgUHR5cF9hbnlcbiAgICAoKiAgXyAqKVxuICAgIHwgUHR5cF92YXIgb2Ygc3RyaW5nXG4gICAgKCogJ2EgKilcbiAgICB8IFB0eXBfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY29yZV90eXBlXG4gICAgKCogVDEgLT4gVDIgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VDEgLT4gVDIgICAgTGFiZWxsZWRcbiAgICAgICA/bDpUMSAtPiBUMiAgICBPcHRpb25hbFxuICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAoKiB0Y29uc3RyXG4gICAgICAgVCB0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogI3Rjb25zdHJcbiAgICAgICBUICN0Y29uc3RyXG4gICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICA9IGUgLi4uXG5cbiAgICAgICAtIFVuZGVyIENma192aXJ0dWFsIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS5cblxuICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBjdGZfbWV0aG9kIG5vZGUuXG5cbiAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQZXhwX3BvbHkgbm9kZS5cblxuICAgICAgIC0gQXMgdGhlIHBsZF90eXBlIGZpZWxkIG9mIGEgbGFiZWxfZGVjbGFyYXRpb24uXG5cbiAgICAgICAtIEFzIGEgY29yZV90eXBlIG9mIGEgUHR5cF9vYmplY3Qgbm9kZS5cbiAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgKCpcbiAgICAgKG1vZHVsZSBTKVxuICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPSB7XG4gICAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgICBwcmZfbG9jIDogTG9jYXRpb24udDtcbiAgICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG4gIH1cblxuICBhbmQgcm93X2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnJvd19maWVsZF9kZXNjICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgIC0gVGhlICdib29sJyBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAoKiBbIFQgXSAqKVxuXG4gIGFuZCBvYmplY3RfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZCAqKSA9IHtcbiAgICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICAgIHBvZl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbiAgfVxuXG4gIGFuZCBvYmplY3RfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBjb3JlX3R5cGVcbiAgICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwcGF0X2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgcGF0ID0gcGF0dGVyblxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgKCogJ2EnLi4neidcblxuICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAoKiAobW9kdWxlIFApXG4gICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgIHtcbiAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwZXhwX2xvY19zdGFjazogTG9jYXRpb24udCBsaXN0O1xuICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgZXhwciA9IGV4cHJlc3Npb25cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB4XG4gICAgICAgTS54XG4gICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZXNcbiAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICBOb3RlczpcbiAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZXNcbiAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICgqIGFzc2VydCBFXG4gICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG9wZW5fZGVjbGFyYXRpb24gKiBleHByZXNzaW9uXG4gICAgKCogTS4oRSlcbiAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2xldG9wIG9mIGxldG9wXG4gICAgKCogbGV0KiBQID0gRSBpbiBFXG4gICAgICAgbGV0KiBQID0gRSBhbmQqIFAgPSBFIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAge1xuICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgIH1cblxuICBhbmQgY2FzZXMgPSBjYXNlIGxpc3RcblxuICBhbmQgbGV0b3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmxldG9wICopID1cbiAgICB7XG4gICAgICBsZXRfIDogYmluZGluZ19vcDtcbiAgICAgIGFuZHMgOiBiaW5kaW5nX29wIGxpc3Q7XG4gICAgICBib2R5IDogZXhwcmVzc2lvbjtcbiAgICB9XG5cbiAgYW5kIGJpbmRpbmdfb3AgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgKikgPVxuICAgIHtcbiAgICAgIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICAgICAgcGJvcF9wYXQgOiBwYXR0ZXJuO1xuICAgICAgcGJvcF9leHAgOiBleHByZXNzaW9uO1xuICAgICAgcGJvcF9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICB7XG4gICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbigqXG4gICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuKCpcbiAgICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwbGRfbXV0YWJsZTogbXV0YWJsZV9mbGFnO1xuICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogbCA6IFQgW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICBwY2RfYXJnczogY29uc3RydWN0b3JfYXJndW1lbnRzO1xuICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbigqXG4gICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3R1cGxlIFtdKVxuICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgIHwgQyBvZiB7Li4ufSAgICAgICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciBsaXN0O1xuICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgIHB0eWV4dF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuKCpcbiAgICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICBwZXh0X2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgKCogZXhjZXB0aW9uIEUgKilcbiAgYW5kIHR5cGVfZXhjZXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiAqKSA9XG4gICAge1xuICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgICBwdHlleG5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqKSA9XG4gICAgICBQZXh0X2RlY2wgb2YgY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCpcbiAgICAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKFtUMTsgLi4uOyBUbl0sIE5vbmUpXG4gICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgKCpcbiAgICAgICB8IEMgPSBEXG4gICAgKilcblxuICAoKiogezEgQ2xhc3MgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgKikgPVxuICAgIHtcbiAgICAgIHBjdHlfZGVzYzogY2xhc3NfdHlwZV9kZXNjO1xuICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX3R5cGVcbiAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICB7XG4gICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAge1xuICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICB7XG4gICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICgqIGNcbiAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgIHtcbiAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICB7XG4gICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgKCogaW5oZXJpdCBDRVxuICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICgqIHZhbCB4ID0gRVxuICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAoKiBtZXRob2QgeCA9IEUgICAgICAgICAgICAoRSBjYW4gYmUgYSBQZXhwX3BvbHkpXG4gICAgICAgbWV0aG9kIHZpcnR1YWwgeDogVCAgICAgKFQgY2FuIGJlIGEgUHR5cF9wb2x5KVxuICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAge1xuICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwbXR5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAge1xuICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgcHNpZ19sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgKCpcbiAgICAgICB2YWwgeDogVFxuICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICopXG4gICAgfCBQc2lnX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuICA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogdHlwZSB0MSA6PSAuLi4gYW5kIC4uLiBhbmQgdG4gOj0gLi4uICAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb25cbiAgICAoKiBleGNlcHRpb24gQyBvZiBUICopXG4gICAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAoKiBtb2R1bGUgWCA9IE1cbiAgICAgICBtb2R1bGUgWCA6IE1UICopXG4gICAgfCBQc2lnX21vZHN1YnN0IG9mIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAoKiBtb2R1bGUgWCA6PSBNICopXG4gICAgfCBQc2lnX3JlY21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICgqIG1vZHVsZSByZWMgWDEgOiBNVDEgYW5kIC4uLiBhbmQgWG4gOiBNVG4gKilcbiAgICB8IFBzaWdfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVFxuICAgICAgIG1vZHVsZSB0eXBlIFMgKilcbiAgICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgKCogb3BlbiBYICopXG4gICAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvblxuICAgICgqIGluY2x1ZGUgTVQgKilcbiAgICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICgqIGNsYXNzIGMxIDogLi4uIGFuZCAuLi4gYW5kIGNuIDogLi4uICopXG4gICAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogWyUlaWRdICopXG5cbiAgYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uICopID1cbiAgICB7XG4gICAgICBwbWRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICBwbWRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9zdWJzdGl0dXRpb24gKikgPVxuICAgIHtcbiAgICAgIHBtc19uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1zX21hbmlmZXN0OiBMb25naWRlbnQudCBsb2M7XG4gICAgICBwbXNfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgcG1zX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG10ZF90eXBlOiBtb2R1bGVfdHlwZSBvcHRpb247XG4gICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCAnYSBvcGVuX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zICopID1cbiAgICB7XG4gICAgICBwb3Blbl9leHByOiAnYTtcbiAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgcG9wZW5fbG9jOiBMb2NhdGlvbi50O1xuICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICB9XG4gICgqIG9wZW4hIFggLSBwb3Blbl9vdmVycmlkZSA9IE92ZXJyaWRlIChzaWxlbmNlcyB0aGUgJ3VzZWQgaWRlbnRpZmllclxuICAgICBzaGFkb3dpbmcnIHdhcm5pbmcpXG4gICAgIG9wZW4gIFggLSBwb3Blbl9vdmVycmlkZSA9IEZyZXNoXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gPSBMb25naWRlbnQudCBsb2Mgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuTyAqKVxuXG4gIGFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuICAoKiBvcGVuIE0uTlxuICAgICBvcGVuIE0oTikuT1xuICAgICBvcGVuIHN0cnVjdCAuLi4gZW5kICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgIHtcbiAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICBwaW5jbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICB7XG4gICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICB7XG4gICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiB0eXBlX2V4Y2VwdGlvblxuICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZWNsYXJhdGlvblxuICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsxIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2YgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfZGlyZWN0aXZlICopID1cbiAgICB7XG4gICAgICBwZGlyX25hbWUgOiBzdHJpbmcgbG9jO1xuICAgICAgcGRpcl9hcmcgOiBkaXJlY3RpdmVfYXJndW1lbnQgb3B0aW9uO1xuICAgICAgcGRpcl9sb2MgOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHtcbiAgICAgIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgICAgIHBkaXJhX2xvYyA6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKikgPVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDI1XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDI1XCJcbmVuZFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MDlcbm1vZHVsZSBUbyA9IEFzdF80MDhcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA4LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA4LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X3R5cCA6IEFzdF80MDkuUGFyc2V0cmVlLnR5cCAtPiBBc3RfNDA4LlBhcnNldHJlZS50eXAgPVxuIGZ1biB4IC0+IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfcGF0IDogQXN0XzQwOS5QYXJzZXRyZWUucGF0IC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdCA9XG4gZnVuIHggLT4gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfZXhwciA6IEFzdF80MDkuUGFyc2V0cmVlLmV4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwciA9XG4gZnVuIHggLT4gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDguUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA5LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA5LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA5LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOC5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA4LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA4LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MDguUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOS5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOC5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDguUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA4LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDkuUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA5LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDguUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA4LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDguUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDkuUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOS5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDguUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA5LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDkuUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDkuUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDguQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDguQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA4LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA4LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA5LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDguQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDguQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDkuQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOC5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA5LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOC5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDkuUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDguQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA5LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA4LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA4LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA5LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDguQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDguQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDkuQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOC5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA5LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDguQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDguQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOC5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA4LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDguUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDkuQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA4LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOS5Bc3R0eXBlcy50eHQ7IEFzdF80MDkuQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA4LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOC5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwib3BlbiBTdGRsaWIwXG5tb2R1bGUgRnJvbSA9IEFzdF80MDhcbm1vZHVsZSBUbyA9IEFzdF80MDlcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdG9wX2RpciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHRvcF9kaXIgKGNvcHlfdG9wbGV2ZWxfZGlyZWN0aXZlIHgwKVxuXG5hbmQgY29weV90b3BsZXZlbF9kaXJlY3RpdmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnRvcGxldmVsX2RpcmVjdGl2ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9hcmc7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGRpcl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZGlyX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcl9hcmcgPSBPcHRpb24ubWFwIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHBkaXJfYXJnO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyX2xvYztcbiAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRcbiAgICA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucGRpcmFfbG9jIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBkaXJhX2Rlc2MgPSBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGRpcmFfbG9jID0gY29weV9sb2NhdGlvbiBwZGlyYV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwXG5cbmFuZCBjb3B5X3R5cCA6IEFzdF80MDguUGFyc2V0cmVlLnR5cCAtPiBBc3RfNDA5LlBhcnNldHJlZS50eXAgPVxuIGZ1biB4IC0+IGNvcHlfY29yZV90eXBlIHhcblxuYW5kIGNvcHlfcGF0IDogQXN0XzQwOC5QYXJzZXRyZWUucGF0IC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdCA9XG4gZnVuIHggLT4gY29weV9wYXR0ZXJuIHhcblxuYW5kIGNvcHlfZXhwciA6IEFzdF80MDguUGFyc2V0cmVlLmV4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwciA9XG4gZnVuIHggLT4gY29weV9leHByZXNzaW9uIHhcblxuYW5kIGNvcHlfZXhwcmVzc2lvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2xvY19zdGFjaztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBMaXN0Lm1hcCBjb3B5X2xvY2F0aW9uIHBleHBfbG9jX3N0YWNrO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoY29weV9jYXNlcyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2Nhc2VzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF92YXJpYW50XG4gICAgICAgIChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIE9wdGlvbi5tYXAgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QZXhwX3BvbHlcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgT3B0aW9uLm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHBfb3BlbiAoY29weV9vcGVuX2RlY2xhcmF0aW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4cF9sZXRvcCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9sZXRvcCAoY29weV9sZXRvcCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9sZXRvcCA6IEFzdF80MDguUGFyc2V0cmVlLmxldG9wIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxldG9wID1cbiBmdW4geyBBc3RfNDA4LlBhcnNldHJlZS5sZXRfOyBBc3RfNDA4LlBhcnNldHJlZS5hbmRzOyBBc3RfNDA4LlBhcnNldHJlZS5ib2R5IH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmxldF8gPSBjb3B5X2JpbmRpbmdfb3AgbGV0XztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hbmRzID0gTGlzdC5tYXAgY29weV9iaW5kaW5nX29wIGFuZHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYm9keSA9IGNvcHlfZXhwcmVzc2lvbiBib2R5O1xuICB9XG5cbmFuZCBjb3B5X2JpbmRpbmdfb3AgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmJpbmRpbmdfb3AgLT4gQXN0XzQwOS5QYXJzZXRyZWUuYmluZGluZ19vcCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wYm9wX29wO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfcGF0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfZXhwO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBib3BfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wYm9wX29wID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBib3Bfb3A7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9wYXQgPSBjb3B5X3BhdHRlcm4gcGJvcF9wYXQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9leHAgPSBjb3B5X2V4cHJlc3Npb24gcGJvcF9leHA7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGJvcF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBib3BfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuVXB0byAtPiBBc3RfNDA5LkFzdHR5cGVzLlVwdG9cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkRvd250byAtPiBBc3RfNDA5LkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlcyA6IEFzdF80MDguUGFyc2V0cmVlLmNhc2VzIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNhc2VzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxuXG5hbmQgY29weV9jYXNlIDogQXN0XzQwOC5QYXJzZXRyZWUuY2FzZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jYXNlID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjX2xocztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19ndWFyZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY19yaHM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNfZ3VhcmQgPSBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBBc3RfNDA4LlBhcnNldHJlZS5wYXR0ZXJuIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcGF0X2xvY19zdGFjayA9IExpc3QubWFwIGNvcHlfbG9jYXRpb24gcHBhdF9sb2Nfc3RhY2s7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfYW55IC0+IEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIE9wdGlvbi5tYXAgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBPcHRpb24ubWFwIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY29yZV90eXBlXG4gICAgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBfbG9jX3N0YWNrID0gTGlzdC5tYXAgY29weV9sb2NhdGlvbiBwdHlwX2xvY19zdGFjaztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogQXN0XzQwOC5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnJvd19maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnByZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHJmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9kZXNjID0gY29weV9yb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wcmZfbG9jID0gY29weV9sb2NhdGlvbiBwcmZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3Jvd19maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIHgxLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBBc3RfNDA5LlBhcnNldHJlZS5vYmplY3RfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9mX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2Rlc2MgPSBjb3B5X29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG9mX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9mX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEFzdF80MDguUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5hdHRyaWJ1dGVcbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLmF0dHJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5hdHRyX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgYXR0cl9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLmF0dHJfcGF5bG9hZCA9IGNvcHlfcGF5bG9hZCBhdHRyX3BheWxvYWQ7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuYXR0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIGF0dHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BheWxvYWQgOiBBc3RfNDA4LlBhcnNldHJlZS5wYXlsb2FkIC0+IEFzdF80MDkuUGFyc2V0cmVlLnBheWxvYWQgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBTdHIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUFNpZyB4MCAtPiBBc3RfNDA5LlBhcnNldHJlZS5QU2lnIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QVHlwIHgwIC0+IEFzdF80MDkuUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgT3B0aW9uLm1hcCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEFzdF80MDguUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVcbiAgICA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBBc3RfNDA5LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgQXN0XzQwOC5QYXJzZXRyZWUucHN0cl9kZXNjOyBBc3RfNDA4LlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfdmFsdWVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl90eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHVsZSAoY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX29wZW4gKGNvcHlfb3Blbl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlXG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNsX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc19leHByIHgxKVxuXG5hbmQgY29weV9jbGFzc19zdHJ1Y3R1cmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEFzdF80MDguUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNzdHJfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc19maWVsZCBwY3N0cl9maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9kZXNjID0gY29weV9jbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfaW5oZXJpdCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBPcHRpb24ubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X29wZW5fZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm9wZW5fZGVjbGFyYXRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUub3Blbl9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9vcGVuX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IEFzdF80MDkuUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIE9wdGlvbi5tYXAgY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50XG4gICAgICAgIChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBPcHRpb24ubWFwIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IEFzdF80MDkuUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwLCBjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBBc3RfNDA4LlBhcnNldHJlZS5zaWduYXR1cmUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlXG4gICAgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gQXN0XzQwOS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBzaWdfZGVzYzsgQXN0XzQwOC5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgKExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X3R5cGVfZXhjZXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19tb2RzdWJzdCAoY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGVcbiAgICAgICAgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfTG9uZ2lkZW50X3QgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0eV9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3R5X29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEFzdF80MDguUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgQXN0XzQwOS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOlxuICAgIEFzdF80MDguQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMudmlydHVhbF9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlZpcnR1YWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT5cbiAgICBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfb3Blbl9pbmZvcyAoZnVuIHggLT4gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCB4KSB4XG5cbmFuZCBjb3B5X29wZW5faW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEFzdF80MDguUGFyc2V0cmVlLm9wZW5faW5mb3MgLT5cbiAgICAgICdnMCBBc3RfNDA5LlBhcnNldHJlZS5vcGVuX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2V4cHI7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBmMCBwb3Blbl9leHByO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk92ZXJyaWRlIC0+IEFzdF80MDkuQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkZyZXNoIC0+IEFzdF80MDkuQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG10ZF90eXBlID0gT3B0aW9uLm1hcCBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfc3Vic3RpdHV0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5tb2R1bGVfc3Vic3RpdHV0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbXNfbWFuaWZlc3Q7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucG1zX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1zX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX21hbmlmZXN0ID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwbXNfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1zX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1zX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBBc3RfNDA5LlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4Y2VwdGlvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leGNlcHRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4bl9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5ZXhuX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eWV4dF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9Mb25naWRlbnRfdCBwdHlleHRfcGF0aDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlleHRfbG9jID0gY29weV9sb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X0xvbmdpZGVudF90IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wYXJhbXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfY3N0cnM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfa2luZDtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0O1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHR5cGVfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2NzdHJzID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfbG9jYXRpb24geDIpKVxuICAgICAgICBwdHlwZV9jc3RycztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdCA9IE9wdGlvbi5tYXAgY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB0eXBlX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cGVfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3ByaXZhdGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuUHJpdmF0ZSAtPiBBc3RfNDA5LkFzdHR5cGVzLlByaXZhdGVcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLlB1YmxpYyAtPiBBc3RfNDA5LkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBBc3RfNDA4LlBhcnNldHJlZS50eXBlX2tpbmQgLT4gQXN0XzQwOS5QYXJzZXRyZWUudHlwZV9raW5kXG4gICAgPSBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0IC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgQXN0XzQwOS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QdHlwZV9vcGVuIC0+IEFzdF80MDkuUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2RfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBjZF9yZXMgPSBPcHRpb24ubWFwIGNvcHlfY29yZV90eXBlIHBjZF9yZXM7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPlxuICAgIEFzdF80MDkuUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjc3RyX3JlY29yZCAoTGlzdC5tYXAgY29weV9sYWJlbF9kZWNsYXJhdGlvbiB4MClcblxuYW5kIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9tdXRhYmxlID0gY29weV9tdXRhYmxlX2ZsYWcgcGxkX211dGFibGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnBsZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X211dGFibGVfZmxhZyA6XG4gICAgQXN0XzQwOC5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gQXN0XzQwOS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuSW1tdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuSW1tdXRhYmxlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5NdXRhYmxlIC0+IEFzdF80MDkuQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEFzdF80MDguQXN0dHlwZXMudmFyaWFuY2UgLT4gQXN0XzQwOS5Bc3R0eXBlcy52YXJpYW5jZSA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBBc3RfNDA4LkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gQXN0XzQwOS5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEFzdF80MDguUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IEFzdF80MDkuUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgQXN0XzQwOC5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEFzdF80MDguUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBBc3RfNDA4LlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgQXN0XzQwOS5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBBc3RfNDA5LlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIEFzdF80MDkuUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9vYmplY3RfZmllbGRfZGVzYyA6XG4gICAgQXN0XzQwOC5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgLT4gQXN0XzQwOS5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguUGFyc2V0cmVlLk90YWcgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEFzdF80MDguUGFyc2V0cmVlLk9pbmhlcml0IHgwIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X2FyZ19sYWJlbCA6IEFzdF80MDguQXN0dHlwZXMuYXJnX2xhYmVsIC0+IEFzdF80MDkuQXN0dHlwZXMuYXJnX2xhYmVsID1cbiAgZnVuY3Rpb25cbiAgfCBBc3RfNDA4LkFzdHR5cGVzLk5vbGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLkxhYmVsbGVkIHgwXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PcHRpb25hbCB4MCAtPiBBc3RfNDA5LkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDpcbiAgICBBc3RfNDA4LkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuQ2xvc2VkIC0+IEFzdF80MDkuQXN0dHlwZXMuQ2xvc2VkXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5PcGVuIC0+IEFzdF80MDkuQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEFzdF80MDguQXN0dHlwZXMubGFiZWwgLT4gQXN0XzQwOS5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBBc3RfNDA4LkFzdHR5cGVzLnJlY19mbGFnIC0+IEFzdF80MDkuQXN0dHlwZXMucmVjX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEFzdF80MDguQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IEFzdF80MDkuQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgQXN0XzQwOC5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gQXN0XzQwOS5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBBc3RfNDA4LlBhcnNldHJlZS5jb25zdGFudCAtPiBBc3RfNDA5LlBhcnNldHJlZS5jb25zdGFudCA9XG4gIGZ1bmN0aW9uXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIEFzdF80MDkuUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDAgLT4gQXN0XzQwOS5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBBc3RfNDA4LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgT3B0aW9uLm1hcCAoZnVuIHggLT4geCkgeDEpXG4gIHwgQXN0XzQwOC5QYXJzZXRyZWUuUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICBBc3RfNDA5LlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBPcHRpb24ubWFwIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfTG9uZ2lkZW50X3QgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT4gJ2YwIEFzdF80MDguQXN0dHlwZXMubG9jIC0+ICdnMCBBc3RfNDA5LkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgQXN0XzQwOC5Bc3R0eXBlcy50eHQ7IEFzdF80MDguQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBBc3RfNDA5LkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgQXN0XzQwOS5Bc3R0eXBlcy5sb2MgPSBjb3B5X2xvY2F0aW9uIGxvYyB9XG5cbmFuZCBjb3B5X2xvY2F0aW9uIDogTG9jYXRpb24udCAtPiBMb2NhdGlvbi50ID0gZnVuIHggLT4geFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyLCBGYWNlYm9vayAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8gYW5kIExlbyBXaGl0ZSwgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQXN0IHBvcnRlZCBvbiBXZWQgQXByIDE4IDEwOjMzOjI5IEJTVCAyMDE4XG4gICBPQ2FtbCB0cnVuayB3YXM6XG4gICAgIGNvbW1pdCBjMGJkNmEyN2UxMzg5MTE1NjBmNDNkYzc1ZDVmZGUyYWRlNGQ2Y2ZlIChIRUFELCB0YWc6IDQuMDcuMCtiZXRhMilcbiAgICAgQXV0aG9yOiBEYW1pZW4gRG9saWdleiA8ZGFtaWVuLmRvbGlnZXpAaW5yaWEuZnI+XG4gICAgIERhdGU6ICAgVHVlIEFwciAxMCAxNDo1MDo0OCAyMDE4ICswMjAwXG5cbiAgICAgICAgIGNoYW5nZSBWRVJTSU9OIGZvciA0LjA3LjArYmV0YTJcbiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezEgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3B0aW9uYWxcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBUMSAqIC4uLiAqIFRuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQdHlwX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIHRjb25zdHJcbiAgICAgICAgICAgICBUIHRjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pIHRjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfb2JqZWN0IG9mIG9iamVjdF9maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICBhbmQgb2JqZWN0X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vYmplY3RfZmllbGQgKikgPVxuICAgIHwgT3RhZyBvZiBsYWJlbCBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlXG4gICAgfCBPaW5oZXJpdCBvZiBjb3JlX3R5cGVcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBNLihQKSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBsYWJlbCBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBsYWJlbCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogeCA8LSAyICopXG4gICAgfCBQZXhwX292ZXJyaWRlIG9mIChsYWJlbCBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biAodHlwZSB0KSAtPiBFICopXG4gICAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiAobW9kdWxlIE1FKVxuXG4gICAgICAgICAgICAgKG1vZHVsZSBNRSA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUGV4cF9jb25zdHJhaW50KFBleHBfcGFjaywgUHR5cF9wYWNrYWdlIFMpICopXG4gICAgfCBQZXhwX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBNLihFKVxuICAgICAgICAgICAgIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEUgKilcbiAgICB8IFBleHBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQZXhwX3VucmVhY2hhYmxlXG4gICAgICAgICAgKCogLiAqKVxuXG4gIGFuZCBjYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jYXNlICopID0gICAoKiAoUCAtPiBFKSBvciAoUCB3aGVuIEUwIC0+IEUpICopXG4gICAgICB7XG4gICAgICAgcGNfbGhzOiBwYXR0ZXJuO1xuICAgICAgIHBjX2d1YXJkOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgICAgICBwY19yaHM6IGV4cHJlc3Npb247XG4gICAgICB9XG5cbiAgKCogVmFsdWUgZGVzY3JpcHRpb25zICopXG5cbiAgYW5kIHZhbHVlX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHZhbF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB2YWxfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHB2YWxfcHJpbTogc3RyaW5nIGxpc3Q7XG4gICAgICAgcHZhbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB2YWxfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdmFsIHg6IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaW0gPSBbXSlcbiAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgICAgICAgKHByaW0gPSBbXCJzMVwiOy4uLlwic25cIl0pXG4gICopXG5cbiAgKCogVHlwZSBkZWNsYXJhdGlvbnMgKilcblxuICBhbmQgdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cGVfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdHlwZV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICAgICAgICAoKiAoJ2ExLC4uLidhbikgdDsgTm9uZSByZXByZXNlbnRzICBfKilcbiAgICAgICBwdHlwZV9jc3RyczogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gICAgICAgICAgICAgKCogLi4uIGNvbnN0cmFpbnQgVDE9VDEnICAuLi4gY29uc3RyYWludCBUbj1UbicgKilcbiAgICAgICBwdHlwZV9raW5kOiB0eXBlX2tpbmQ7XG4gICAgICAgcHR5cGVfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnOyAgICgqID0gcHJpdmF0ZSAuLi4gKilcbiAgICAgICBwdHlwZV9tYW5pZmVzdDogY29yZV90eXBlIG9wdGlvbjsgICgqID0gVCAqKVxuICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHB0eXBlX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHR5cGUgdCAgICAgICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSBDIG9mIFQgfCAuLi4gICAgICAodmFyaWFudCwgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uICh2YXJpYW50LCAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0ge2w6IFQ7IC4uLn0gICAgICAgKHJlY29yZCwgICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufSAocmVjb3JkLCAgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IC4uICAgICAgICAgICAgICAgIChvcGVuLCAgICAgbm8gbWFuaWZlc3QpXG4gICopXG5cbiAgYW5kIHR5cGVfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudHlwZV9raW5kICopID1cbiAgICB8IFB0eXBlX2Fic3RyYWN0XG4gICAgfCBQdHlwZV92YXJpYW50IG9mIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGxpc3RcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIDogVCBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIG9mIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGN0eV9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogbGV0IG9wZW4gTSBpbiBDVCAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGNsX29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX2V4cHJcbiAgICAoKiBsZXQgb3BlbiBNIGluIENFICopXG5cblxuICBhbmQgY2xhc3Nfc3RydWN0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc3RyX3NlbGY6IHBhdHRlcm47XG4gICAgICAgcGNzdHJfZmllbGRzOiBjbGFzc19maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3Qoc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgKHNlbGYgPSBQcGF0X2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGNmX2Rlc2M6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGNmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2ZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjICopID1cbiAgICB8IFBjZl9pbmhlcml0IG9mIG92ZXJyaWRlX2ZsYWcgKiBjbGFzc19leHByICogc3RyaW5nIGxvYyBvcHRpb25cbiAgICAgICAgICAoKiBpbmhlcml0IENFXG4gICAgICAgICAgICAgaW5oZXJpdCBDRSBhcyB4XG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0VcbiAgICAgICAgICAgICBpbmhlcml0ISBDRSBhcyB4XG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIHZhbCB4ID0gRVxuICAgICAgICAgICAgIHZhbCB2aXJ0dWFsIHg6IFRcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9tZXRob2Qgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezEgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV0gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFguWSA6PSBaICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByICopID1cbiAgICAgIHtcbiAgICAgICBwbW9kX2Rlc2M6IG1vZHVsZV9leHByX2Rlc2M7XG4gICAgICAgcG1vZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG1vZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjICopID1cbiAgICB8IFBtb2RfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogWCAqKVxuICAgIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlXG4gICAgICAgICAgKCogc3RydWN0IC4uLiBlbmQgKilcbiAgICB8IFBtb2RfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1FICopXG4gICAgfCBQbW9kX2FwcGx5IG9mIG1vZHVsZV9leHByICogbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBNRTEoTUUyKSAqKVxuICAgIHwgUG1vZF9jb25zdHJhaW50IG9mIG1vZHVsZV9leHByICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiAoTUUgOiBNVCkgKilcbiAgICB8IFBtb2RfdW5wYWNrIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiAodmFsIEUpICopXG4gICAgfCBQbW9kX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHN0cl9kZXNjOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzdHJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIEUgKilcbiAgICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQc3RyX3ByaW1pdGl2ZSBvZiB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICAgICgqICB2YWwgeDogVFxuICAgICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCIgKilcbiAgICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzdHJfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFRcbiAgICAgICAgICAgICBleGNlcHRpb24gQyA9IE0uWCAqKVxuICAgIHwgUHN0cl9tb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmdcbiAgICAgICAgICAoKiBtb2R1bGUgWCA9IE1FICopXG4gICAgfCBQc3RyX3JlY21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1FbiAqKVxuICAgIHwgUHN0cl9tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UICopXG4gICAgfCBQc3RyX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHN0cl9jbGFzcyBvZiBjbGFzc19kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi4gKilcbiAgICB8IFBzdHJfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzdHJfaW5jbHVkZSBvZiBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNRSAqKVxuICAgIHwgUHN0cl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHN0cl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCB2YWx1ZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nICopID1cbiAgICB7XG4gICAgICBwdmJfcGF0OiBwYXR0ZXJuO1xuICAgICAgcHZiX2V4cHI6IGV4cHJlc3Npb247XG4gICAgICBwdmJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIHB2Yl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgfVxuXG4gIGFuZCBtb2R1bGVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgKikgPVxuICAgICAge1xuICAgICAgIHBtYl9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtYl9leHByOiBtb2R1bGVfZXhwcjtcbiAgICAgICBwbWJfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgICBwbWJfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBYID0gTUUgKilcblxuICAoKiogezEgVG9wbGV2ZWx9ICopXG5cbiAgKCogVG9wbGV2ZWwgcGhyYXNlcyAqKVxuXG4gIHR5cGUgdG9wbGV2ZWxfcGhyYXNlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgKikgPVxuICAgIHwgUHRvcF9kZWYgb2Ygc3RydWN0dXJlXG4gICAgfCBQdG9wX2RpciBvZiBzdHJpbmcgKiBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAoKiAjdXNlLCAjbG9hZCAuLi4gKilcblxuICBhbmQgZGlyZWN0aXZlX2FyZ3VtZW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgKikgPVxuICAgIHwgUGRpcl9ub25lXG4gICAgfCBQZGlyX3N0cmluZyBvZiBzdHJpbmdcbiAgICB8IFBkaXJfaW50IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuXG5lbmRcblxubW9kdWxlIENvbmZpZyA9IHN0cnVjdFxuICBsZXQgYXN0X2ltcGxfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU0wMjNcIlxuICBsZXQgYXN0X2ludGZfbWFnaWNfbnVtYmVyID0gXCJDYW1sMTk5OU4wMjNcIlxuZW5kXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDhcbm1vZHVsZSBUbyA9IEFzdF80MDdcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wOFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAge1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX25hbWU7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBkaXJfYXJnO1xuICAgICAgICBGcm9tLlBhcnNldHJlZS5wZGlyX2xvYyA9IF87XG4gICAgICB9IC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHRvcF9kaXJcbiAgICAgICAgKCBwZGlyX25hbWUuTG9jYXRpb24udHh0LFxuICAgICAgICAgIG1hdGNoIHBkaXJfYXJnIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICAgICAgICAgIHwgU29tZSBhcmcgLT4gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgYXJnIClcblxuYW5kIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGRpcmFfZGVzYzsgRnJvbS5QYXJzZXRyZWUucGRpcmFfbG9jID0gX3BkaXJhX2xvYyB9IC0+XG4gIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzY1xuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5hbmQgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sYWJlbCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIuRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjIHdpdGhcbiAgICAgIHwgUG1vZF9pZGVudCBsaWQgLT5cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICAgICAgY29weV9sb2MgY29weV9sb25naWRlbnQgbGlkLFxuICAgICAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEgKVxuICAgICAgfCBQbW9kX3N0cnVjdHVyZSBfIHwgUG1vZF9mdW5jdG9yIF8gfCBQbW9kX2FwcGx5IF8gfCBQbW9kX2NvbnN0cmFpbnQgX1xuICAgICAgfCBQbW9kX3VucGFjayBfIHwgUG1vZF9leHRlbnNpb24gXyAtPlxuICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2MgXCJjb21wbGV4IG9wZW5cIilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG9wIHsgbGV0XzsgYW5kcyA9IF87IGJvZHkgPSBfIH0gLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsZXRfLnBib3Bfb3AubG9jIFwibGV0IG9wZXJhdG9yc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvY19zdGFjayA9IF87XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfbG9jID0gXztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICBtYXRjaCBwcmZfZGVzYyB3aXRoXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXMsXG4gICAgICAgICAgY29weV9ib29sIHgxLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIG1hdGNoIHBvZl9kZXNjIHdpdGhcbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5hdHRyX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLmF0dHJfbG9jID0gXztcbiAgICAgfSAtPlxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIGF0dHJfbmFtZSwgY29weV9wYXlsb2FkIGF0dHJfcGF5bG9hZClcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uXG4gICAgICAgIChsZXQgZSA9XG4gICAgICAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLkZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgZS5wZXh0X2F0dHJpYnV0ZXMgQCBjb3B5X2F0dHJpYnV0ZXMgeDAucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICB9KVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+IChcbiAgICAgIG1hdGNoIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIuRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjIHdpdGhcbiAgICAgIHwgUG1vZF9pZGVudCBsaWQgLT5cbiAgICAgICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsaWQ7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9XG4gICAgICAgICAgICAgICAgY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID1cbiAgICAgICAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgIH1cbiAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgXyB8IFBtb2RfZnVuY3RvciBfIHwgUG1vZF9hcHBseSBfIHwgUG1vZF9jb25zdHJhaW50IF9cbiAgICAgIHwgUG1vZF91bnBhY2sgXyB8IFBtb2RfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICBtaWdyYXRpb25fZXJyb3IgeDAuRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jIFwiY29tcGxleCBvcGVuXCIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLkZyb20uUGFyc2V0cmVlLnBvcGVuX2V4cHIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxIClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9tdXRhYmxlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV9jbGFzc19maWVsZF9raW5kIHgyKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlc3Vic3QgeDAgLT5cbiAgICAgIGxldCB4MF9sb2MgPVxuICAgICAgICBtYXRjaCB4MCB3aXRoXG4gICAgICAgIHwgW10gLT4gTG9jYXRpb24ubm9uZVxuICAgICAgICB8IHsgRnJvbS5QYXJzZXRyZWUucHR5cGVfbG9jOyBfIH0gOjogXyAtPiBwdHlwZV9sb2NcbiAgICAgIGluXG4gICAgICBtaWdyYXRpb25fZXJyb3IgeDBfbG9jIFwidHlwZSBzdWJzdGl0dXRpb24gaW4gc2lnbmF0dXJlc1wiXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uXG4gICAgICAgIChsZXQgZSA9XG4gICAgICAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLkZyb20uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvclxuICAgICAgICAgaW5cbiAgICAgICAgIHtcbiAgICAgICAgICAgZSB3aXRoXG4gICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9XG4gICAgICAgICAgICAgZS5wZXh0X2F0dHJpYnV0ZXMgQCBjb3B5X2F0dHJpYnV0ZXMgeDAucHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICB9KVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kc3Vic3QgeDAgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciB4MC5wbXNfbG9jIFwibW9kdWxlIHN1YnN0aXR1dGlvbiBpbiBzaWduYXR1cmVzXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfb3BlblxuICAgICAgICAoIGNvcHlfb3ZlcnJpZGVfZmxhZyB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSxcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MC5Gcm9tLlBhcnNldHJlZS5wb3Blbl9leHByLFxuICAgICAgICAgIGNvcHlfY2xhc3NfdHlwZSB4MSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICBsZXQgeDEgPVxuICAgIG1hdGNoIHgwLnR4dCB3aXRoXG4gICAgfCBcIm9jYW1sLmVycm9yXCIgfCBcImVycm9yXCIgLT4gKFxuICAgICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICAgIHwgUFN0ciAoaGQgOjogdGwpIC0+IEZyb20uUGFyc2V0cmVlLlBTdHIgKGhkIDo6IGhkIDo6IHRsKVxuICAgICAgICB8IF8gLT4geDEpXG4gICAgfCBfIC0+IHgxXG4gIGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbigqIGFuZCBjb3B5X3R5cGVfZXhjZXB0aW9uIDpcbiAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4Y2VwdGlvbiA9XG4gICBmdW5cbiAgICAgeyBGcm9tLlBhcnNldHJlZS5wdHlleG5fY29uc3RydWN0b3IgPSBwdHlleG5fY29uc3RydWN0b3I7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IHB0eWV4bl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBwdHlleG5fYXR0cmlidXRlcyB9XG4gICAgICAtPlxuICAgICB7XG4gICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2xvYyA9IChjb3B5X2xvY2F0aW9uIHB0eWV4bl9sb2MpO1xuICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fYXR0cmlidXRlcyA9XG4gICAgICAgICAoY29weV9hdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzKVxuICAgICB9KilcbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9sb2MgPSBfO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCJtb2R1bGUgRnJvbSA9IEFzdF80MDdcbm1vZHVsZSBUbyA9IEFzdF80MDhcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpclxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfbmFtZSA9XG4gICAgICAgICAgICB7IExvY2F0aW9uLnR4dCA9IHgwOyBMb2NhdGlvbi5sb2MgPSBMb2NhdGlvbi5ub25lIH07XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfYXJnID0gY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDE7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBkaXJfbG9jID0gTG9jYXRpb24ubm9uZTtcbiAgICAgICAgfVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvblxuICAgID1cbiAgbGV0IHdyYXAgcGRpcmFfZGVzYyA9XG4gICAgU29tZSB7IFRvLlBhcnNldHJlZS5wZGlyYV9kZXNjOyBUby5QYXJzZXRyZWUucGRpcmFfbG9jID0gTG9jYXRpb24ubm9uZSB9XG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ub25lIC0+IE5vbmVcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgfD4gd3JhcFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApIHw+IHdyYXBcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKSB8PiB3cmFwXG5cbmFuZCBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID1cbiAgICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSk7XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0geDEuTG9jYXRpb24ubG9jO1xuICAgICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgIChMaXN0Lm1hcCBjb3B5X29iamVjdF9maWVsZCB4MCwgY29weV9jbG9zZWRfZmxhZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfZGVzYyA9XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLCBjb3B5X2Jvb2wgeDIsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wcmZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyB4MTtcbiAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucHJmX2Rlc2MgPSBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnByZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICB7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfZGVzYyA9XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLk90YWcgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgyKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9sb2MgPSB4MC5Mb2NhdGlvbi5sb2M7XG4gICAgICAgIFRvLlBhcnNldHJlZS5wb2ZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyB4MTtcbiAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4MCAtPlxuICAgICAge1xuICAgICAgICBUby5QYXJzZXRyZWUucG9mX2Rlc2MgPSBUby5QYXJzZXRyZWUuT2luaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKTtcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICAgVG8uUGFyc2V0cmVlLnBvZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZXMgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGVzIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGVzID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2F0dHJpYnV0ZSB4XG5cbmFuZCBjb3B5X2F0dHJpYnV0ZSA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZSAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLmF0dHJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MDtcbiAgICBUby5QYXJzZXRyZWUuYXR0cl9wYXlsb2FkID0gY29weV9wYXlsb2FkIHgxO1xuICAgIFRvLlBhcnNldHJlZS5hdHRyX2xvYyA9IHgwLkxvY2F0aW9uLmxvYztcbiAgfVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBsZXQgYXRhdCwgYXQgPVxuICAgICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCB7IExvY2F0aW9uLnR4dCA9IFwib2NhbWwuZGVwcmVjYXRlZFwiIHwgXCJkZXByZWNhdGVkXCI7IF8gfSwgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgICB4MC5wZXh0X2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgeDAgPSB7IHgwIHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXQgfSBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uXG4gICAgICAgIHtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2NvbnN0cnVjdG9yID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDA7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9sb2MgPSB4MC5Gcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICAgICBUby5QYXJzZXRyZWUucHR5ZXhuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgYXRhdDtcbiAgICAgICAgfVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuXG4gICAgICB7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgIH0gLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX29wZW5cbiAgICAgICAge1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9leHByID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9XG4gICAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZCk7XG4gICAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IHBvcGVuX2xvYztcbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc19leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZXhwciA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHIgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9kZXNjID0gY29weV9jbGFzc19leHByX2Rlc2MgcGNsX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2FwcGx5XG4gICAgICAgICggY29weV9jbGFzc19leHByIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2NsYXNzX2V4cHIgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoY29weV9jbGFzc19leHByIHgwLCBjb3B5X2NsYXNzX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgICgge1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2V4cHIgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MTtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyB4MDtcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSB4MS5Mb2NhdGlvbi5sb2M7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgyIClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAgbGV0IGZpZWxkcyA9XG4gICAgTGlzdC5zb3J0XG4gICAgICAoZnVuIChhIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQpIChiIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQpIC0+XG4gICAgICAgIGNvbXBhcmUgYS5wY2ZfbG9jLmxvY19zdGFydC5wb3NfY251bSBiLnBjZl9sb2MubG9jX3N0YXJ0LnBvc19jbnVtKVxuICAgICAgcGNzdHJfZmllbGRzXG4gIGluXG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIGZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoY29weV9sb2MgY29weV9sYWJlbCB4MCwgY29weV9wcml2YXRlX2ZsYWcgeDEsIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MikpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIGxldCBhdGF0LCBhdCA9XG4gICAgICAgIExpc3QucGFydGl0aW9uXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IHsgTG9jYXRpb24udHh0ID0gXCJvY2FtbC5kZXByZWNhdGVkXCIgfCBcImRlcHJlY2F0ZWRcIjsgXyB9LCBfIC0+XG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgICAgIHgwLnBleHRfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIGxldCB4MCA9IHsgeDAgd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBhdCB9IGluXG5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvblxuICAgICAgICB7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwO1xuICAgICAgICAgIFRvLlBhcnNldHJlZS5wdHlleG5fbG9jID0geDAuRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgICAgVG8uUGFyc2V0cmVlLnB0eWV4bl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIGF0YXQ7XG4gICAgICAgIH1cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHgwO1xuICAgICAgICAgICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IHgxLkxvY2F0aW9uLmxvYztcbiAgICAgICAgICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICBsZXQgZmllbGRzID1cbiAgICBMaXN0LnNvcnRcbiAgICAgIChmdW4gKGEgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkKVxuICAgICAgICAgICAoYiA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQpIC0+XG4gICAgICAgIGNvbXBhcmUgYS5wY3RmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0gYi5wY3RmX2xvYy5sb2Nfc3RhcnQucG9zX2NudW0pXG4gICAgICBwY3NpZ19maWVsZHNcbiAgaW5cblxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgbGV0IHgxID1cbiAgICBtYXRjaCB4MC50eHQgd2l0aFxuICAgIHwgXCJvY2FtbC5lcnJvclwiIHwgXCJlcnJvclwiIC0+IChcbiAgICAgICAgbWF0Y2ggeDEgd2l0aFxuICAgICAgICB8IFBTdHIgKGhkIDo6IF8gOjogdGwpIC0+IEZyb20uUGFyc2V0cmVlLlBTdHIgKGhkIDo6IHRsKVxuICAgICAgICB8IF8gLT4geDEpXG4gICAgfCBfIC0+IHgxXG4gIGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fZXhwciA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfbG9jID0gcHR5ZXh0X3BhdGguTG9jYXRpb24ubG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEFzdCBwb3J0ZWQgb24gTW9uIE9jdCAgMiAxMToyNTo1NyBDRVNUIDIwMTdcbiAgIE9DYW1sIHRydW5rIHdhczpcbiAgICAgY29tbWl0IDY1OTQwYTJjNmJlNDNjNDJmNzVjNmM2YjI1NTk3NGY3ZTZkZTAzY2EgKEhFQUQgLT4gNC4wNiwgb3JpZ2luLzQuMDYpXG4gICAgIEF1dGhvcjogQ2hyaXN0b3BoZSBSYWZmYWxsaSA8Y2hyaXN0b3BoZUByYWZmYWxsaS5ldT5cbiAgICAgRGF0ZTogICBTdW4gT2N0IDEgMTg6Mjc6MDcgMjAxNyArMDIwMFxuXG4gICAgICAgICBmaXhlZCBwb3NpdGlvbiBvZiBsYXN0IG9wdGlvbmFsIGxhc3Qgc2VtaWNvbHVtbiBpbiBzZXF1ZW5jZSAoIzEzODcpXG4qKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCoqIEF1eGlsaWFyeSBBU1QgdHlwZXMgdXNlZCBieSBwYXJzZXRyZWUgYW5kIHR5cGVkdHJlZS4gKilcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNvbnN0YW50ICopID1cbiAgICAgIENvbnN0X2ludCBvZiBpbnRcbiAgICB8IENvbnN0X2NoYXIgb2YgY2hhclxuICAgIHwgQ29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICB8IENvbnN0X2Zsb2F0IG9mIHN0cmluZ1xuICAgIHwgQ29uc3RfaW50MzIgb2YgaW50MzJcbiAgICB8IENvbnN0X2ludDY0IG9mIGludDY0XG4gICAgfCBDb25zdF9uYXRpdmVpbnQgb2YgbmF0aXZlaW50XG5cbiAgdHlwZSByZWNfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5yZWNfZmxhZyAqKSA9IE5vbnJlY3Vyc2l2ZSB8IFJlY3Vyc2l2ZVxuXG4gIHR5cGUgZGlyZWN0aW9uX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgKikgPSBVcHRvIHwgRG93bnRvXG5cbiAgKCogT3JkZXIgbWF0dGVycywgdXNlZCBpbiBwb2x5bW9ycGhpYyBjb21wYXJpc29uICopXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSBhcmdfbGFiZWwgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuYXJnX2xhYmVsICopID1cbiAgICAgIE5vbGFiZWxcbiAgICB8IExhYmVsbGVkIG9mIHN0cmluZyAoKiAgbGFiZWw6VCAtPiAuLi4gKilcbiAgICB8IE9wdGlvbmFsIG9mIHN0cmluZyAoKiA/bGFiZWw6VCAtPiAuLi4gKilcblxuICB0eXBlICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHtcbiAgICB0eHQgOiAnYTtcbiAgICBsb2MgOiBMb2NhdGlvbi50O1xuICB9XG5cblxuICB0eXBlIHZhcmlhbmNlICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnZhcmlhbmNlICopID1cbiAgICB8IENvdmFyaWFudFxuICAgIHwgQ29udHJhdmFyaWFudFxuICAgIHwgSW52YXJpYW50XG5lbmRcblxubW9kdWxlIFBhcnNldHJlZSA9IHN0cnVjdFxuICAoKiogQWJzdHJhY3Qgc3ludGF4IHRyZWUgcHJvZHVjZWQgYnkgcGFyc2luZyAqKVxuXG4gIG9wZW4gQXN0dHlwZXNcblxuICB0eXBlIGNvbnN0YW50ICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdGFudCAqKSA9XG4gICAgICBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMgM2wgM0wgM25cblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgZXhjZXB0ICdsJywgJ0wnIGFuZCAnbicgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlclxuICAgICopXG4gICAgfCBQY29uc3RfY2hhciBvZiBjaGFyXG4gICAgKCogJ2MnICopXG4gICAgfCBQY29uc3Rfc3RyaW5nIG9mIHN0cmluZyAqIHN0cmluZyBvcHRpb25cbiAgICAoKiBcImNvbnN0YW50XCJcbiAgICAgICB7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XG4gICAgKilcbiAgICB8IFBjb25zdF9mbG9hdCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICgqIDMuNCAyZTUgMS40ZS00XG5cbiAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLlxuICAgICAgIFN1ZmZpeGVzIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgKilcblxuICAoKiogezIgRXh0ZW5zaW9uIHBvaW50c30gKilcblxuICB0eXBlIGF0dHJpYnV0ZSA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICAoKiBbQGlkIEFSR11cbiAgICAgICAgICAgIFtAQGlkIEFSR11cblxuICAgICAgICAgICAgTWV0YWRhdGEgY29udGFpbmVycyBwYXNzZWQgYXJvdW5kIHdpdGhpbiB0aGUgQVNULlxuICAgICAgICAgICAgVGhlIGNvbXBpbGVyIGlnbm9yZXMgdW5rbm93biBhdHRyaWJ1dGVzLlxuICAgICAgICAgKilcblxuICBhbmQgZXh0ZW5zaW9uID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgKCogWyVpZCBBUkddXG4gICAgICAgICAgIFslJWlkIEFSR11cblxuICAgICAgICAgICBTdWItbGFuZ3VhZ2UgcGxhY2Vob2xkZXIgLS0gcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyLlxuICAgICAgICAqKVxuXG4gIGFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuICBhbmQgcGF5bG9hZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF5bG9hZCAqKSA9XG4gICAgfCBQU3RyIG9mIHN0cnVjdHVyZVxuICAgIHwgUFNpZyBvZiBzaWduYXR1cmUgKCogOiBTSUcgKilcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBUMSAtPiBUMiAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUMSAtPiBUMiAgICBMYWJlbGxlZFxuICAgICAgICAgICAgID9sOlQxIC0+IFQyICAgIE9wdGlvbmFsXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogVDEgKiAuLi4gKiBUblxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiB0Y29uc3RyXG4gICAgICAgICAgICAgVCB0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSB0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogPCBsMTpUMTsgLi4uOyBsbjpUbiA+ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICA8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+IChmbGFnID0gT3BlbilcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfY2xhc3Mgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiAjdGNvbnN0clxuICAgICAgICAgICAgIFQgI3Rjb25zdHJcbiAgICAgICAgICAgICAoVDEsIC4uLiwgVG4pICN0Y29uc3RyXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2FsaWFzIG9mIGNvcmVfdHlwZSAqIHN0cmluZ1xuICAgICAgICAgICgqIFQgYXMgJ2EgKilcbiAgICB8IFB0eXBfdmFyaWFudCBvZiByb3dfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnICogbGFiZWwgbGlzdCBvcHRpb25cbiAgICAgICAgICAoKiBbIGBBfGBCIF0gICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPiBgQXxgQiBdICAgICAgICAoZmxhZyA9IE9wZW47ICAgbGFiZWxzID0gTm9uZSlcbiAgICAgICAgICAgICBbPCBgQXxgQiBdICAgICAgICAoZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXSlcbiAgICAgICAgICAgICBbPCBgQXxgQiA+IGBYIGBZIF0oZmxhZyA9IENsb3NlZDsgbGFiZWxzID0gU29tZSBbXCJYXCI7XCJZXCJdKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9wb2x5IG9mIHN0cmluZyBsb2MgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGJvb2wgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFtgQV0gICAgICAgICAgICAgICAgICAgKCB0cnVlLCAgW10gKVxuICAgICAgICAgICAgIFtgQSBvZiBUXSAgICAgICAgICAgICAgKCBmYWxzZSwgW1RdIClcbiAgICAgICAgICAgICBbYEEgb2YgVDEgJiAuLiAmIFRuXSAgICggZmFsc2UsIFtUMTsuLi5Ubl0gKVxuICAgICAgICAgICAgIFtgQSBvZiAmIFQxICYgLi4gJiBUbl0gKCB0cnVlLCAgW1QxOy4uLlRuXSApXG5cbiAgICAgICAgICAgIC0gVGhlIDJuZCBmaWVsZCBpcyB0cnVlIGlmIHRoZSB0YWcgY29udGFpbnMgYVxuICAgICAgICAgICAgICBjb25zdGFudCAoZW1wdHkpIGNvbnN0cnVjdG9yLlxuICAgICAgICAgICAgLSAnJicgb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgKHNlZSA0LjIgaW4gdGhlIG1hbnVhbClcblxuICAgICAgICAgICAgLSBUT0RPOiBzd2l0Y2ggdG8gYSByZWNvcmQgcmVwcmVzZW50YXRpb24sIGFuZCBrZWVwIGxvY2F0aW9uXG4gICAgICAgICAgKilcbiAgICB8IFJpbmhlcml0IG9mIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFsgVCBdICopXG5cbiAgYW5kIG9iamVjdF9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkICopID1cbiAgICB8IE90YWcgb2YgbGFiZWwgbG9jICogYXR0cmlidXRlcyAqIGNvcmVfdHlwZVxuICAgIHwgT2luaGVyaXQgb2YgY29yZV90eXBlXG5cbiAgKCogUGF0dGVybnMgKilcblxuICBhbmQgcGF0dGVybiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybiAqKSA9XG4gICAgICB7XG4gICAgICAgcHBhdF9kZXNjOiBwYXR0ZXJuX2Rlc2M7XG4gICAgICAgcHBhdF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcHBhdF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBwYXR0ZXJuX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAqKSA9XG4gICAgfCBQcGF0X2FueVxuICAgICAgICAgICgqIF8gKilcbiAgICB8IFBwYXRfdmFyIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiB4ICopXG4gICAgfCBQcGF0X2FsaWFzIG9mIHBhdHRlcm4gKiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogUCBhcyAnYSAqKVxuICAgIHwgUHBhdF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUHBhdF9pbnRlcnZhbCBvZiBjb25zdGFudCAqIGNvbnN0YW50XG4gICAgICAgICAgKCogJ2EnLi4neidcblxuICAgICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXJcbiAgICAgICAgICAgICBidXQgcmVqZWN0ZWQgYnkgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBwYXRfdHVwbGUgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogKFAxLCAuLi4sIFBuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUHBhdF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIFAgICAgICAgICAgICAgIFNvbWUgUFxuICAgICAgICAgICAgIEMgKFAxLCAuLi4sIFBuKSAgU29tZSAoUHBhdF90dXBsZSBbUDE7IC4uLjsgUG5dKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF92YXJpYW50IG9mIGxhYmVsICogcGF0dGVybiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBQICAgICAgICAgICAoU29tZSBQKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4pIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgeyBsMT1QMTsgLi4uOyBsbj1QbjsgX30gICAoZmxhZyA9IE9wZW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2FycmF5IG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIFt8IFAxOyAuLi47IFBuIHxdICopXG4gICAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuXG4gICAgICAgICAgKCogUDEgfCBQMiAqKVxuICAgIHwgUHBhdF9jb25zdHJhaW50IG9mIHBhdHRlcm4gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoUCA6IFQpICopXG4gICAgfCBQcGF0X3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogI3Rjb25zdCAqKVxuICAgIHwgUHBhdF9sYXp5IG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBsYXp5IFAgKilcbiAgICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAobW9kdWxlIFApXG4gICAgICAgICAgICAgTm90ZTogKG1vZHVsZSBQIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQoUHBhdF91bnBhY2ssIFB0eXBfcGFja2FnZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm5cbiAgICAgICAgICAoKiBleGNlcHRpb24gUCAqKVxuICAgIHwgUHBhdF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBwYXRfb3BlbiBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuXG4gICAgICAgICAgKCogTS4oUCkgKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogbGFiZWwgbG9jXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2YgbGFiZWwgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAobGFiZWwgbG9jICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIHs8IHgxID0gRTE7IC4uLjsgWG4gPSBFbiA+fSAqKVxuICAgIHwgUGV4cF9sZXRtb2R1bGUgb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV9leHByICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBtb2R1bGUgTSA9IE1FIGluIEUgKilcbiAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgZXhjZXB0aW9uIEMgaW4gRSAqKVxuICAgIHwgUGV4cF9hc3NlcnQgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGFzc2VydCBFXG4gICAgICAgICAgICAgTm90ZTogXCJhc3NlcnQgZmFsc2VcIiBpcyB0cmVhdGVkIGluIGEgc3BlY2lhbCB3YXkgYnkgdGhlXG4gICAgICAgICAgICAgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUGV4cF9sYXp5IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsYXp5IEUgKilcbiAgICB8IFBleHBfcG9seSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvblxuICAgICAgICAgICgqIFVzZWQgZm9yIG1ldGhvZCBib2RpZXMuXG5cbiAgICAgICAgICAgICBDYW4gb25seSBiZSB1c2VkIGFzIHRoZSBleHByZXNzaW9uIHVuZGVyIENma19jb25jcmV0ZVxuICAgICAgICAgICAgIGZvciBtZXRob2RzIChub3QgdmFsdWVzKS4gKilcbiAgICB8IFBleHBfb2JqZWN0IG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQZXhwX25ld3R5cGUgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gKHR5cGUgdCkgLT4gRSAqKVxuICAgIHwgUGV4cF9wYWNrIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogKG1vZHVsZSBNRSlcblxuICAgICAgICAgICAgIChtb2R1bGUgTUUgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBleHBfY29uc3RyYWludChQZXhwX3BhY2ssIFB0eXBfcGFja2FnZSBTKSAqKVxuICAgIHwgUGV4cF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogTS4oRSlcbiAgICAgICAgICAgICBsZXQgb3BlbiBNIGluIEVcbiAgICAgICAgICAgICBsZXQhIG9wZW4gTSBpbiBFICopXG4gICAgfCBQZXhwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUGV4cF91bnJlYWNoYWJsZVxuICAgICAgICAgICgqIC4gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgOiBUIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cztcbiAgICAgICBwY2RfcmVzOiBjb3JlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBjZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgb2YgLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29uc3RydWN0b3JfYXJndW1lbnRzICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKikgPVxuICAgIHwgUGNzdHJfdHVwbGUgb2YgY29yZV90eXBlIGxpc3RcbiAgICB8IFBjc3RyX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG5cbiAgKCpcbiAgICB8IEMgb2YgVDEgKiAuLi4gKiBUbiAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl90dXBsZSBbXSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBbXSlcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDAsIGFyZ3MgPSBQY3N0cl90dXBsZSlcbiAgICB8IEMgb2Ygey4uLn0gICAgICAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICAgfCBDOiB7Li4ufSAtPiBUMCAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQyBvZiB7Li4ufSBhcyB0ICAgICAgICAocmVzID0gTm9uZSwgICAgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgKilcblxuICBhbmQgdHlwZV9leHRlbnNpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlleHRfcGF0aDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHB0eWV4dF9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwdHlleHRfY29uc3RydWN0b3JzOiBleHRlbnNpb25fY29uc3RydWN0b3IgbGlzdDtcbiAgICAgICBwdHlleHRfcHJpdmF0ZTogcHJpdmF0ZV9mbGFnO1xuICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCpcbiAgICB0eXBlIHQgKz0gLi4uXG4gICopXG5cbiAgYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICopID1cbiAgICAgIHtcbiAgICAgICBwZXh0X25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGV4dF9raW5kIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQ7XG4gICAgICAgcGV4dF9sb2MgOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBvZiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKikgPVxuICAgICAgUGV4dF9kZWNsIG9mIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogVCAtPiBDVCAgICAgICBTaW1wbGVcbiAgICAgICAgICAgICB+bDpUIC0+IENUICAgIExhYmVsbGVkIGxcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIE9wdGlvbmFsIGxcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQY3R5X29wZW4gb2Ygb3ZlcnJpZGVfZmxhZyAqIExvbmdpZGVudC50IGxvYyAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBsZXQgb3BlbiBNIGluIENUICopXG5cblxuICBhbmQgY2xhc3Nfc2lnbmF0dXJlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKikgPVxuICAgICAge1xuICAgICAgIHBjc2lnX3NlbGY6IGNvcmVfdHlwZTtcbiAgICAgICBwY3NpZ19maWVsZHM6IGNsYXNzX3R5cGVfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KCdzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAgIChzZWxmID0gUHR5cF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY3RmX2Rlc2M6IGNsYXNzX3R5cGVfZmllbGRfZGVzYztcbiAgICAgICBwY3RmX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3RmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZF9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGN0Zl9pbmhlcml0IG9mIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBpbmhlcml0IENUICopXG4gICAgfCBQY3RmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKGxhYmVsIGxvYyAqIHByaXZhdGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBtZXRob2QgeDogVFxuXG4gICAgICAgICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICAgICAgICAgICopXG4gICAgfCBQY3RmX2NvbnN0cmFpbnQgIG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY3RmX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQY3RmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgJ2EgY2xhc3NfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zICopID1cbiAgICAgIHtcbiAgICAgICBwY2lfdmlydDogdmlydHVhbF9mbGFnO1xuICAgICAgIHBjaV9wYXJhbXM6IChjb3JlX3R5cGUgKiB2YXJpYW5jZSkgbGlzdDtcbiAgICAgICBwY2lfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwY2lfZXhwcjogJ2E7XG4gICAgICAgcGNpX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2lfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cbiAgKCogY2xhc3MgYyA9IC4uLlxuICAgICBjbGFzcyBbJ2ExLC4uLiwnYW5dIGMgPSAuLi5cbiAgICAgY2xhc3MgdmlydHVhbCBjID0gLi4uXG5cbiAgICAgQWxzbyB1c2VkIGZvciBcImNsYXNzIHR5cGVcIiBkZWNsYXJhdGlvbi5cbiAgKilcblxuICBhbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc19leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByICopID1cbiAgICAgIHtcbiAgICAgICBwY2xfZGVzYzogY2xhc3NfZXhwcl9kZXNjO1xuICAgICAgIHBjbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjICopID1cbiAgICB8IFBjbF9jb25zdHIgb2YgTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBjXG4gICAgICAgICAgICAgWydhMSwgLi4uLCAnYW5dIGMgKilcbiAgICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IENFICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIENFIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2NvbnN0cmFpbnQgb2YgY2xhc3NfZXhwciAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiAoQ0UgOiBDVCkgKilcbiAgICB8IFBjbF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgKCogWyVpZF0gKilcbiAgICB8IFBjbF9vcGVuIG9mIG92ZXJyaWRlX2ZsYWcgKiBMb25naWRlbnQudCBsb2MgKiBjbGFzc19leHByXG4gICAgKCogbGV0IG9wZW4gTSBpbiBDRSAqKVxuXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAobGFiZWwgbG9jICogbXV0YWJsZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICAgICAoKiB2YWwgeCA9IEVcbiAgICAgICAgICAgICB2YWwgdmlydHVhbCB4OiBUXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgICAgICgqIG1ldGhvZCB4ID0gRSAgICAgICAgICAgIChFIGNhbiBiZSBhIFBleHBfcG9seSlcbiAgICAgICAgICAgICBtZXRob2QgdmlydHVhbCB4OiBUICAgICAoVCBjYW4gYmUgYSBQdHlwX3BvbHkpXG4gICAgICAgICAgICopXG4gICAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBpbml0aWFsaXplciBFICopXG4gICAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgKikgPVxuICAgIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gICAgfCBDZmtfY29uY3JldGUgb2Ygb3ZlcnJpZGVfZmxhZyAqIGV4cHJlc3Npb25cblxuICBhbmQgY2xhc3NfZGVjbGFyYXRpb24gPSBjbGFzc19leHByIGNsYXNzX2luZm9zXG5cbiAgKCoqIHsyIE1vZHVsZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV90eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcG10eV9kZXNjOiBtb2R1bGVfdHlwZV9kZXNjO1xuICAgICAgIHBtdHlfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtdHlfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQbXR5X2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFMgKilcbiAgICB8IFBtdHlfc2lnbmF0dXJlIG9mIHNpZ25hdHVyZVxuICAgICAgICAgICgqIHNpZyAuLi4gZW5kICopXG4gICAgfCBQbXR5X2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNVDIgKilcbiAgICB8IFBtdHlfd2l0aCBvZiBtb2R1bGVfdHlwZSAqIHdpdGhfY29uc3RyYWludCBsaXN0XG4gICAgICAgICAgKCogTVQgd2l0aCAuLi4gKilcbiAgICB8IFBtdHlfdHlwZW9mIG9mIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgb2YgTUUgKilcbiAgICB8IFBtdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQbXR5X2FsaWFzIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgTSkgKilcblxuICBhbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzaWdfZGVzYzogc2lnbmF0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc2lnX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc2lnbmF0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc2lnX3ZhbHVlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCpcbiAgICAgICAgICAgIHZhbCB4OiBUXG4gICAgICAgICAgICBleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJcbiAgICAgICAgICAgKilcbiAgICB8IFBzaWdfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50IDo9IC4uLiwgc2FtZSBmb3JtYXQgYXMgW1B3aXRoX3R5cGVdICopXG4gICAgfCBQd2l0aF9tb2RzdWJzdCBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIyXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDIyXCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwN1xubW9kdWxlIFRvID0gQXN0XzQwNlxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29wZW4gKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKExpc3QubWFwIGNvcHlfb2JqZWN0X2ZpZWxkIHgwLCBjb3B5X2Nsb3NlZF9mbGFnIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sb2MgY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9vYmplY3RfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5vYmplY3RfZmllbGQgLT4gVG8uUGFyc2V0cmVlLm9iamVjdF9maWVsZFxuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5PaW5oZXJpdCB4IC0+IFRvLlBhcnNldHJlZS5PaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKG92ZiwgbG9jLCBjZSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIG92ZiwgY29weV9sb2MgY29weV9sb25naWRlbnQgbG9jLCBjb3B5X2NsYXNzX2V4cHIgY2UpXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X29wZW4gKG92ZiwgbG9jLCBjdHkpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9vcGVuXG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIG92ZixcbiAgICAgICAgICBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsXG4gICAgICAgICAgY29weV9jbGFzc190eXBlIGN0eSApXG5cbmFuZCBjb3B5X2NsYXNzX3NpZ25hdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc2lnX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfc2VsZiA9IGNvcHlfY29yZV90eXBlIHBjc2lnX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9kZXNjID0gY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0Zl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9pbmhlcml0IChjb3B5X2NsYXNzX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIsIHgzID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA2XG5tb2R1bGUgVG8gPSBBc3RfNDA3XG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoTGlzdC5tYXAgY29weV9vYmplY3RfZmllbGQgeDAsIGNvcHlfY2xvc2VkX2ZsYWcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHlcbiAgICAgICAgKExpc3QubWFwIChmdW4geCAtPiBjb3B5X2xvYyAoZnVuIHggLT4geCkgeCkgeDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcGFja2FnZSAoY29weV9wYWNrYWdlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X3BhY2thZ2VfdHlwZSA6IEZyb20uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZSAtPiBUby5QYXJzZXRyZWUucGFja2FnZV90eXBlXG4gICAgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gICggY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4geCAtPlxuICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgICAgIHgxIClcblxuYW5kIGNvcHlfcm93X2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUucm93X2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5yb3dfZmllbGQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlJ0YWcgKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlJ0YWdcbiAgICAgICAgKCBjb3B5X2xvYyBjb3B5X2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICBjb3B5X2Jvb2wgeDIsXG4gICAgICAgICAgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlJpbmhlcml0IHgwIC0+IFRvLlBhcnNldHJlZS5SaW5oZXJpdCAoY29weV9jb3JlX3R5cGUgeDApXG5cbmFuZCBjb3B5X29iamVjdF9maWVsZCA6IEZyb20uUGFyc2V0cmVlLm9iamVjdF9maWVsZCAtPiBUby5QYXJzZXRyZWUub2JqZWN0X2ZpZWxkXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLk90YWcgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuT3RhZ1xuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IHggLT4gVG8uUGFyc2V0cmVlLk9pbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4KVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfb3BlbiAob3ZmLCBsb2MsIGNlKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBsb2MsIGNvcHlfY2xhc3NfZXhwciBjZSlcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChjb3B5X2xvYyAoZnVuIHggLT4geCkpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX3ZhbFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX21ldGhvZFxuICAgICAgICAobGV0IHgwLCB4MSwgeDIgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgeDIgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbml0aWFsaXplciAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLkNma192aXJ0dWFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma19jb25jcmV0ZSAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X21vZHVsZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1iX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtYl9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfZXhwciA9IGNvcHlfbW9kdWxlX2V4cHIgcG1iX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbG9jID0gY29weV9sb2NhdGlvbiBwbWJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHIgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2Rlc2MgPSBjb3B5X21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1vZF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHJfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV9leHByIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9hcHBseSAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfZXhwciB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2NvbnN0cmFpbnQgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3VucGFjayAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10eV9kZXNjID0gY29weV9tb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIChjb3B5X3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfdHlwZSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV93aXRoXG4gICAgICAgIChjb3B5X21vZHVsZV90eXBlIHgwLCBMaXN0Lm1hcCBjb3B5X3dpdGhfY29uc3RyYWludCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfYWxpYXMgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2FsaWFzIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfd2l0aF9jb25zdHJhaW50IDpcbiAgICBGcm9tLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgLT4gVG8uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAob3ZmLCBsb2MsIGN0eSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X29wZW5cbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgb3ZmLFxuICAgICAgICAgIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IGxvYyxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgY3R5IClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyBsb2MgKiBhdHRyaWJ1dGVzICogY29yZV90eXBlKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiA8IGwxOlQxOyAuLi47IGxuOlRuID4gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIDwgbDE6VDE7IC4uLjsgbG46VG47IC4uID4gKGZsYWcgPSBPcGVuKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9jbGFzcyBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqICN0Y29uc3RyXG4gICAgICAgICAgICAgVCAjdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgI3Rjb25zdHJcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfYWxpYXMgb2YgY29yZV90eXBlICogc3RyaW5nXG4gICAgICAgICAgKCogVCBhcyAnYSAqKVxuICAgIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgICAgICgqIFsgYEF8YEIgXSAgICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs+IGBBfGBCIF0gICAgICAgIChmbGFnID0gT3BlbjsgICBsYWJlbHMgPSBOb25lKVxuICAgICAgICAgICAgIFs8IGBBfGBCIF0gICAgICAgIChmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtdKVxuICAgICAgICAgICAgIFs8IGBBfGBCID4gYFggYFkgXShmbGFnID0gQ2xvc2VkOyBsYWJlbHMgPSBTb21lIFtcIlhcIjtcIllcIl0pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX3BvbHkgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29yZV90eXBlXG4gICAgICAgICAgKCogJ2ExIC4uLiAnYW4uIFRcblxuICAgICAgICAgICAgIENhbiBvbmx5IGFwcGVhciBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQ6XG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQcGF0X2NvbnN0cmFpbnQgbm9kZSBjb3JyZXNwb25kaW5nXG4gICAgICAgICAgICAgICB0byBhIGNvbnN0cmFpbnQgb24gYSBsZXQtYmluZGluZzogbGV0IHggOiAnYTEgLi4uICdhbi4gVFxuICAgICAgICAgICAgICAgPSBlIC4uLlxuXG4gICAgICAgICAgICAgLSBVbmRlciBDZmtfdmlydHVhbCBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBjb3JlX3R5cGUgb2YgYSBQY3RmX21ldGhvZCBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGV4cF9wb2x5IG5vZGUuXG5cbiAgICAgICAgICAgICAtIEFzIHRoZSBwbGRfdHlwZSBmaWVsZCBvZiBhIGxhYmVsX2RlY2xhcmF0aW9uLlxuXG4gICAgICAgICAgICAgLSBBcyBhIGNvcmVfdHlwZSBvZiBhIFB0eXBfb2JqZWN0IG5vZGUuXG4gICAgICAgICAgICopXG5cbiAgICB8IFB0eXBfcGFja2FnZSBvZiBwYWNrYWdlX3R5cGVcbiAgICAgICAgICAoKiAobW9kdWxlIFMpICopXG4gICAgfCBQdHlwX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBwYWNrYWdlX3R5cGUgPSBMb25naWRlbnQudCBsb2MgKiAoTG9uZ2lkZW50LnQgbG9jICogY29yZV90eXBlKSBsaXN0XG4gICAgICAgICgqXG4gICAgICAgICAgKG1vZHVsZSBTKVxuICAgICAgICAgIChtb2R1bGUgUyB3aXRoIHR5cGUgdDEgPSBUMSBhbmQgLi4uIGFuZCB0biA9IFRuKVxuICAgICAgICAgKilcblxuICBhbmQgcm93X2ZpZWxkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5yb3dfZmllbGQgKikgPVxuICAgIHwgUnRhZyBvZiBsYWJlbCAqIGF0dHJpYnV0ZXMgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICAgICAoKiBbYEFdICAgICAgICAgICAgICAgICAgICggdHJ1ZSwgIFtdIClcbiAgICAgICAgICAgICBbYEEgb2YgVF0gICAgICAgICAgICAgICggZmFsc2UsIFtUXSApXG4gICAgICAgICAgICAgW2BBIG9mIFQxICYgLi4gJiBUbl0gICAoIGZhbHNlLCBbVDE7Li4uVG5dIClcbiAgICAgICAgICAgICBbYEEgb2YgJiBUMSAmIC4uICYgVG5dICggdHJ1ZSwgIFtUMTsuLi5Ubl0gKVxuXG4gICAgICAgICAgICAtIFRoZSAybmQgZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGFcbiAgICAgICAgICAgICAgY29uc3RhbnQgKGVtcHR5KSBjb25zdHJ1Y3Rvci5cbiAgICAgICAgICAgIC0gJyYnIG9jY3VycyB3aGVuIHNldmVyYWwgdHlwZXMgYXJlIHVzZWQgZm9yIHRoZSBzYW1lIGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgIChzZWUgNC4yIGluIHRoZSBtYW51YWwpXG5cbiAgICAgICAgICAgIC0gVE9ETzogc3dpdGNoIHRvIGEgcmVjb3JkIHJlcHJlc2VudGF0aW9uLCBhbmQga2VlcCBsb2NhdGlvblxuICAgICAgICAgICopXG4gICAgfCBSaW5oZXJpdCBvZiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiBbIFQgXSAqKVxuXG4gICgqIFBhdHRlcm5zICopXG5cbiAgYW5kIHBhdHRlcm4gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBhdHRlcm4gKikgPVxuICAgICAge1xuICAgICAgIHBwYXRfZGVzYzogcGF0dGVybl9kZXNjO1xuICAgICAgIHBwYXRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBwYXRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgcGF0dGVybl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgKikgPVxuICAgIHwgUHBhdF9hbnlcbiAgICAgICAgICAoKiBfICopXG4gICAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogeCAqKVxuICAgIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgICAgICgqIFAgYXMgJ2EgKilcbiAgICB8IFBwYXRfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgICAgICgqICdhJy4uJ3onXG5cbiAgICAgICAgICAgICBPdGhlciBmb3JtcyBvZiBpbnRlcnZhbCBhcmUgcmVjb2duaXplZCBieSB0aGUgcGFyc2VyXG4gICAgICAgICAgICAgYnV0IHJlamVjdGVkIGJ5IHRoZSB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgICAgICgqIChQMSwgLi4uLCBQbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBwYXRfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBQICAgICAgICAgICAgICBTb21lIFBcbiAgICAgICAgICAgICBDIChQMSwgLi4uLCBQbikgIFNvbWUgKFBwYXRfdHVwbGUgW1AxOyAuLi47IFBuXSlcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfdmFyaWFudCBvZiBsYWJlbCAqIHBhdHRlcm4gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgUCAgICAgICAgICAgKFNvbWUgUClcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuKSBsaXN0ICogY2xvc2VkX2ZsYWdcbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChmbGFnID0gQ2xvc2VkKVxuICAgICAgICAgICAgIHsgbDE9UDE7IC4uLjsgbG49UG47IF99ICAgKGZsYWcgPSBPcGVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiBbfCBQMTsgLi4uOyBQbiB8XSAqKVxuICAgIHwgUHBhdF9vciBvZiBwYXR0ZXJuICogcGF0dGVyblxuICAgICAgICAgICgqIFAxIHwgUDIgKilcbiAgICB8IFBwYXRfY29uc3RyYWludCBvZiBwYXR0ZXJuICogY29yZV90eXBlXG4gICAgICAgICAgKCogKFAgOiBUKSAqKVxuICAgIHwgUHBhdF90eXBlIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqICN0Y29uc3QgKilcbiAgICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogbGF6eSBQICopXG4gICAgfCBQcGF0X3VucGFjayBvZiBzdHJpbmcgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBQKVxuICAgICAgICAgICAgIE5vdGU6IChtb2R1bGUgUCA6IFMpIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgICAgUHBhdF9jb25zdHJhaW50KFBwYXRfdW5wYWNrLCBQdHlwX3BhY2thZ2UpXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X2V4Y2VwdGlvbiBvZiBwYXR0ZXJuXG4gICAgICAgICAgKCogZXhjZXB0aW9uIFAgKilcbiAgICB8IFBwYXRfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG4gICAgfCBQcGF0X29wZW4gb2YgTG9uZ2lkZW50LnQgbG9jICogcGF0dGVyblxuICAgICAgICAgICgqIE0uKFApICopXG5cbiAgKCogVmFsdWUgZXhwcmVzc2lvbnMgKilcblxuICBhbmQgZXhwcmVzc2lvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4cF9kZXNjOiBleHByZXNzaW9uX2Rlc2M7XG4gICAgICAgcGV4cF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGV4cF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBleHByZXNzaW9uX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAqKSA9XG4gICAgfCBQZXhwX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHhcbiAgICAgICAgICAgICBNLnhcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RhbnQgb2YgY29uc3RhbnRcbiAgICAgICAgICAoKiAxLCAnYScsIFwidHJ1ZVwiLCAxLjAsIDFsLCAxTCwgMW4gKilcbiAgICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2UgbGlzdFxuICAgICAgICAgICgqIGZ1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBFMSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIG9ubHkgT3B0aW9uYWwgaXMgYWxsb3dlZC5cbiAgICAgICAgICAgICAtIFwiZnVuIFAxIFAyIC4uIFBuIC0+IEUxXCIgaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkIFBleHBfZnVuLlxuICAgICAgICAgICAgIC0gXCJsZXQgZiBQID0gRVwiIGlzIHJlcHJlc2VudGVkIHVzaW5nIFBleHBfZnVuLlxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9hcHBseSBvZiBleHByZXNzaW9uICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBFMCB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfbWF0Y2ggb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIG1hdGNoIEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2UgbGlzdFxuICAgICAgICAgICgqIHRyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHVwbGUgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogKEUxLCAuLi4sIEVuKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID49IDJcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJ1Y3Qgb2YgTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBDICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICBDIEUgICAgICAgICAgICAgIFNvbWUgRVxuICAgICAgICAgICAgIEMgKEUxLCAuLi4sIEVuKSAgU29tZSAoUGV4cF90dXBsZVtFMTsuLi47RW5dKVxuICAgICAgICAgICopXG4gICAgfCBQZXhwX3ZhcmlhbnQgb2YgbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIEUgICAgICAgICAgIChTb21lIEUpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvbikgbGlzdCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoTm9uZSlcbiAgICAgICAgICAgICB7IEUwIHdpdGggbDE9UDE7IC4uLjsgbG49UG4gfSAgIChTb21lIEUwKVxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogRS5sICopXG4gICAgfCBQZXhwX3NldGZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTEubCA8LSBFMiAqKVxuICAgIHwgUGV4cF9hcnJheSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiBbfCBFMTsgLi4uOyBFbiB8XSAqKVxuICAgIHwgUGV4cF9pZnRoZW5lbHNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBpZiBFMSB0aGVuIEUyIGVsc2UgRTMgKilcbiAgICB8IFBleHBfc2VxdWVuY2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMTsgRTIgKilcbiAgICB8IFBleHBfd2hpbGUgb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB3aGlsZSBFMSBkbyBFMiBkb25lICopXG4gICAgfCBQZXhwX2ZvciBvZlxuICAgICAgICBwYXR0ZXJuICogIGV4cHJlc3Npb24gKiBleHByZXNzaW9uICogZGlyZWN0aW9uX2ZsYWcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lICAgICAgKGZsYWcgPSBVcHRvKVxuICAgICAgICAgICAgIGZvciBpID0gRTEgZG93bnRvIEUyIGRvIEUzIGRvbmUgIChmbGFnID0gRG93bnRvKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdHJhaW50IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6IFQpICopXG4gICAgfCBQZXhwX2NvZXJjZSBvZiBleHByZXNzaW9uICogY29yZV90eXBlIG9wdGlvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDo+IFQpICAgICAgICAoTm9uZSwgVClcbiAgICAgICAgICAgICAoRSA6IFQwIDo+IFQpICAgKFNvbWUgVDAsIFQpXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2xldGV4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3IgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IGV4Y2VwdGlvbiBDIGluIEUgKilcbiAgICB8IFBleHBfYXNzZXJ0IG9mIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBhc3NlcnQgRVxuICAgICAgICAgICAgIE5vdGU6IFwiYXNzZXJ0IGZhbHNlXCIgaXMgdHJlYXRlZCBpbiBhIHNwZWNpYWwgd2F5IGJ5IHRoZVxuICAgICAgICAgICAgIHR5cGUtY2hlY2tlci4gKilcbiAgICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGF6eSBFICopXG4gICAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgICAoKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlciBDZmtfY29uY3JldGVcbiAgICAgICAgICAgICBmb3IgbWV0aG9kcyAobm90IHZhbHVlcykuICopXG4gICAgfCBQZXhwX29iamVjdCBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGV4cF9uZXd0eXBlIG9mIHN0cmluZyBsb2MgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIE0uKEUpXG4gICAgICAgICAgICAgbGV0IG9wZW4gTSBpbiBFXG4gICAgICAgICAgICAgbGV0ISBvcGVuIE0gaW4gRSAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgbG9jICogbXV0YWJsZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIHZhbCB4OiBUICopXG4gICAgfCBQY3RmX21ldGhvZCAgb2YgKHN0cmluZyBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGFyZ19sYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGNsYXNzX2V4cHJcbiAgICAgICAgICAoKiBmdW4gUCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpbXBsZSwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKExhYmVsbGVkIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgU29tZSBFMClcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9hcHBseSBvZiBjbGFzc19leHByICogKGFyZ19sYWJlbCAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiBDRSB+bDE6RTEgLi4uIH5sbjpFblxuICAgICAgICAgICAgIGxpIGNhbiBiZSBlbXB0eSAobm9uIGxhYmVsZWQgYXJndW1lbnQpIG9yIHN0YXJ0IHdpdGggJz8nXG4gICAgICAgICAgICAgKG9wdGlvbmFsIGFyZ3VtZW50KS5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBjbGFzc19leHByXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjbF9jb25zdHJhaW50IG9mIGNsYXNzX2V4cHIgKiBjbGFzc190eXBlXG4gICAgICAgICAgKCogKENFIDogQ1QpICopXG4gICAgfCBQY2xfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3N0cnVjdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3N0cl9zZWxmOiBwYXR0ZXJuO1xuICAgICAgIHBjc3RyX2ZpZWxkczogY2xhc3NfZmllbGQgbGlzdDtcbiAgICAgIH1cbiAgKCogb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgIChzZWxmID0gUHBhdF9hbnkpXG4gICAqKVxuXG4gIGFuZCBjbGFzc19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjZl9kZXNjOiBjbGFzc19maWVsZF9kZXNjO1xuICAgICAgIHBjZl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNmX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcblxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDIwXCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE4XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwNlxubW9kdWxlIFRvID0gQXN0XzQwNVxuXG5sZXQgbWlncmF0aW9uX2Vycm9yIGxvYyBtaXNzaW5nX2ZlYXR1cmUgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvY1xuICAgIFwibWlncmF0aW9uIGVycm9yOiAlcyBpcyBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPQ2FtbCA0LjA2XCIgbWlzc2luZ19mZWF0dXJlXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvblxuICAgICAgICAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBGcm9tLlBhcnNldHJlZS5PdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgICAgICAgICAgIGNvcHlfYXR0cmlidXRlcyB4MSxcbiAgICAgICAgICAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICAgICAgICAgICAgICB8IEZyb20uUGFyc2V0cmVlLk9pbmhlcml0IF8gLT5cbiAgICAgICAgICAgICAgICAgIG1pZ3JhdGlvbl9lcnJvciBMb2NhdGlvbi5ub25lIFwiaW5oZXJpdGFuY2UgaW4gb2JqZWN0IHR5cGVcIilcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MC50eHQsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX29wZW4gKF8sIGxvYywgXykgLT5cbiAgICAgIG1pZ3JhdGlvbl9lcnJvciBsb2MuTG9jYXRpb24ubG9jIFwibW9kdWxlIG9wZW4gaW4gY2xhc3MgZXhwcmVzc2lvblwiXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IF87IF8gfSwgeDApIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0IChjb3B5X3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3QgKHsgdHh0ID0gTG9uZ2lkZW50LkxpZGVudCB4MDsgbG9jIH0sIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh7IHR4dCA9IHgwOyBsb2MgfSwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHdpdGhfdHlwZXN1YnN0ICh7IGxvYzsgXyB9LCBfeDApIC0+XG4gICAgICBtaWdyYXRpb25fZXJyb3IgbG9jIFwidHlwZSBzdWJzdGl0dXRpb24gaW5zaWRlIGEgc3VibW9kdWxlXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeyBsb2M7IF8gfSwgX3gxKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBzdWJzdGl0dXRpb24gaW5zaWRlIGEgc3VibW9kdWxlXCJcblxuYW5kIGNvcHlfc2lnbmF0dXJlIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc2lnbmF0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc2lnX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzaWdfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2Rlc2MgPSBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc2lnX2xvYyA9IGNvcHlfbG9jYXRpb24gcHNpZ19sb2M7XG4gIH1cblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ192YWx1ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdmFsdWUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ190eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIChjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIChMaXN0Lm1hcCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIChjb3B5X2NsYXNzX3NpZ25hdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jbGFzc190eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfb3BlbiAoXywgbG9jLCBfKSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYy5Mb2NhdGlvbi5sb2MgXCJtb2R1bGUgb3BlbiBpbiBjbGFzcyB0eXBlXCJcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDVcbm1vZHVsZSBUbyA9IEFzdF80MDZcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldGV4Y2VwdGlvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uXG4gICAgICAgIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlIC0+IFRvLlBhcnNldHJlZS5QZXhwX3VucmVhY2hhYmxlXG5cbmFuZCBjb3B5X2RpcmVjdGlvbl9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnIC0+IFRvLkFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlVwdG8gLT4gVG8uQXN0dHlwZXMuVXB0b1xuICB8IEZyb20uQXN0dHlwZXMuRG93bnRvIC0+IFRvLkFzdHR5cGVzLkRvd250b1xuXG5hbmQgY29weV9jYXNlIDogRnJvbS5QYXJzZXRyZWUuY2FzZSAtPiBUby5QYXJzZXRyZWUuY2FzZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNfbGhzOyBGcm9tLlBhcnNldHJlZS5wY19ndWFyZDsgRnJvbS5QYXJzZXRyZWUucGNfcmhzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY19saHMgPSBjb3B5X3BhdHRlcm4gcGNfbGhzO1xuICAgIFRvLlBhcnNldHJlZS5wY19ndWFyZCA9IGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiBwY19ndWFyZDtcbiAgICBUby5QYXJzZXRyZWUucGNfcmhzID0gY29weV9leHByZXNzaW9uIHBjX3JocztcbiAgfVxuXG5hbmQgY29weV92YWx1ZV9iaW5kaW5nIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9wYXQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9wYXQgPSBjb3B5X3BhdHRlcm4gcHZiX3BhdDtcbiAgICBUby5QYXJzZXRyZWUucHZiX2V4cHIgPSBjb3B5X2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfbG9jID0gY29weV9sb2NhdGlvbiBwdmJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm4gOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2Rlc2MgPSBjb3B5X3BhdHRlcm5fZGVzYyBwcGF0X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfbG9jID0gY29weV9sb2NhdGlvbiBwcGF0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuX2Rlc2MgOiBGcm9tLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5fZGVzY1xuICAgID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vcGVuIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKVxuXG5hbmQgY29weV9jb3JlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5cF9kZXNjID0gY29weV9jb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eXBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb3JlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FueSAtPiBUby5QYXJzZXRyZWUuUHR5cF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhciB4MCAtPiBUby5QYXJzZXRyZWUuUHR5cF92YXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYXJyb3dcbiAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdHVwbGUgKExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX29iamVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfb2JqZWN0XG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAgICAgVG8uUGFyc2V0cmVlLk90YWdcbiAgICAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEsIGNvcHlfY29yZV90eXBlIHgyKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NsYXNzXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKGNvcHlfY29yZV90eXBlIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF92YXJpYW50XG4gICAgICAgICggTGlzdC5tYXAgY29weV9yb3dfZmllbGQgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoZnVuIHggLT4gTGlzdC5tYXAgY29weV9sYWJlbCB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wb2x5XG4gICAgICAgIChMaXN0Lm1hcCAoZnVuIHggLT4gY29weV9sb2MgKGZ1biB4IC0+IHgpIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggeyB0eHQgPSBjb3B5X2xhYmVsIHgwOyBsb2MgPSBMb2NhdGlvbi5ub25lIH0sXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBTaWcgeDAgLT4gVG8uUGFyc2V0cmVlLlBTaWcgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl90eXBlXG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgICggY29weV9vdmVycmlkZV9mbGFnIHgwLFxuICAgICAgICAgIGNvcHlfY2xhc3NfZXhwciB4MSxcbiAgICAgICAgICBjb3B5X29wdGlvbiAoY29weV9sb2MgKGZ1biB4IC0+IHgpKSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdFxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiBMb25naWRlbnQuTGlkZW50IHgpIHgwLkZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWUsXG4gICAgICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgwIClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4gTG9uZ2lkZW50LkxpZGVudCB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfbXV0YWJsZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLFxuICAgICAgICAgICBjb3B5X3ZpcnR1YWxfZmxhZyB4MixcbiAgICAgICAgICAgY29weV9jb3JlX3R5cGUgeDMgKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiogQXV4aWxpYXJ5IEFTVCB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuICAgIHwgUHBhdF9vcGVuIG9mIExvbmdpZGVudC50IGxvYyAqIHBhdHRlcm5cblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBleHByZXNzaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uICopID1cbiAgICAgIHtcbiAgICAgICBwZXhwX2Rlc2M6IGV4cHJlc3Npb25fZGVzYztcbiAgICAgICBwZXhwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwZXhwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGV4cHJlc3Npb25fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjICopID1cbiAgICB8IFBleHBfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogeFxuICAgICAgICAgICAgIE0ueFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgICAgICgqIDEsICdhJywgXCJ0cnVlXCIsIDEuMCwgMWwsIDFMLCAxbiAqKVxuICAgIHwgUGV4cF9sZXQgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3QgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBFICAgICAgIChmbGFnID0gTm9ucmVjdXJzaXZlKVxuICAgICAgICAgICAgIGxldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZnVuY3Rpb24gb2YgY2FzZSBsaXN0XG4gICAgICAgICAgKCogZnVuY3Rpb24gUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZ1biBQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAgICAoU2ltcGxlLCBOb25lKVxuICAgICAgICAgICAgIGZ1biB+bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoTGFiZWxsZWQgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIE5vbmUpXG4gICAgICAgICAgICAgZnVuID9sOihQID0gRTApIC0+IEUxICAgICAgICAgICAgICAgIChPcHRpb25hbCBsLCBTb21lIEUwKVxuXG4gICAgICAgICAgICAgTm90ZXM6XG4gICAgICAgICAgICAgLSBJZiBFMCBpcyBwcm92aWRlZCwgb25seSBPcHRpb25hbCBpcyBhbGxvd2VkLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgICAgICgqIEUwIH5sMTpFMSAuLi4gfmxuOkVuXG4gICAgICAgICAgICAgbGkgY2FuIGJlIGVtcHR5IChub24gbGFiZWxlZCBhcmd1bWVudCkgb3Igc3RhcnQgd2l0aCAnPydcbiAgICAgICAgICAgICAob3B0aW9uYWwgYXJndW1lbnQpLlxuXG4gICAgICAgICAgICAgSW52YXJpYW50OiBuID4gMFxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9tYXRjaCBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogbWF0Y2ggRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3RyeSBvZiBleHByZXNzaW9uICogY2FzZSBsaXN0XG4gICAgICAgICAgKCogdHJ5IEUwIHdpdGggUDEgLT4gRTEgfCAuLi4gfCBQbiAtPiBFbiAqKVxuICAgIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICAgICAoKiAoRTEsIC4uLiwgRW4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgRSAgICAgICAgICAgICAgU29tZSBFXG4gICAgICAgICAgICAgQyAoRTEsIC4uLiwgRW4pICBTb21lIChQZXhwX3R1cGxlW0UxOy4uLjtFbl0pXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfdmFyaWFudCBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogYEEgICAgICAgICAgICAgKE5vbmUpXG4gICAgICAgICAgICAgYEEgRSAgICAgICAgICAgKFNvbWUgRSlcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfcmVjb3JkIG9mIChMb25naWRlbnQudCBsb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiB7IGwxPVAxOyAuLi47IGxuPVBuIH0gICAgIChOb25lKVxuICAgICAgICAgICAgIHsgRTAgd2l0aCBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgKFNvbWUgRTApXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2ZpZWxkIG9mIGV4cHJlc3Npb24gKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBFLmwgKilcbiAgICB8IFBleHBfc2V0ZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBFMS5sIDwtIEUyICopXG4gICAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIFt8IEUxOyAuLi47IEVuIHxdICopXG4gICAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIGlmIEUxIHRoZW4gRTIgZWxzZSBFMyAqKVxuICAgIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxOyBFMiAqKVxuICAgIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHdoaWxlIEUxIGRvIEUyIGRvbmUgKilcbiAgICB8IFBleHBfZm9yIG9mXG4gICAgICAgIHBhdHRlcm4gKiAgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBkaXJlY3Rpb25fZmxhZyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmb3IgaSA9IEUxIHRvIEUyIGRvIEUzIGRvbmUgICAgICAoZmxhZyA9IFVwdG8pXG4gICAgICAgICAgICAgZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZSAgKGZsYWcgPSBEb3dudG8pXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChFIDogVCkgKilcbiAgICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOj4gVCkgICAgICAgIChOb25lLCBUKVxuICAgICAgICAgICAgIChFIDogVDAgOj4gVCkgICAoU29tZSBUMCwgVClcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfc2VuZCBvZiBleHByZXNzaW9uICogc3RyaW5nXG4gICAgICAgICAgKCogIEUgIyBtICopXG4gICAgfCBQZXhwX25ldyBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBuZXcgTS5jICopXG4gICAgfCBQZXhwX3NldGluc3R2YXIgb2Ygc3RyaW5nIGxvYyAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiB4IDwtIDIgKilcbiAgICB8IFBleHBfb3ZlcnJpZGUgb2YgKHN0cmluZyBsb2MgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogezwgeDEgPSBFMTsgLi4uOyBYbiA9IEVuID59ICopXG4gICAgfCBQZXhwX2xldG1vZHVsZSBvZiBzdHJpbmcgbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogbGV0IG1vZHVsZSBNID0gTUUgaW4gRSAqKVxuICAgIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBleGNlcHRpb24gQyBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAyMFwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDVcbm1vZHVsZSBUbyA9IEFzdF80MDRcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxLkZyb20uQXN0dHlwZXMudHh0KVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAuRnJvbS5Bc3R0eXBlcy50eHQsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MC5Gcm9tLkFzdHR5cGVzLnR4dCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seVxuICAgICAgICAoTGlzdC5tYXAgKGZ1biB4IC0+IHguRnJvbS5Bc3R0eXBlcy50eHQpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4LkZyb20uQXN0dHlwZXMudHh0KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCB4MC5Gcm9tLkFzdHR5cGVzLnR4dCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIHgwLkZyb20uQXN0dHlwZXMudHh0LFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIEFsYWluIEZyaXNjaCwgTGV4aUZpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZSAoSU5SSUEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEZyb20gPSBBc3RfNDA0XG5tb2R1bGUgVG8gPSBBc3RfNDA1XG5cbmxldCBub2xvYyB4ID0geyBMb2NhdGlvbi50eHQgPSB4OyBsb2MgPSBMb2NhdGlvbi5ub25lIH1cblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIG5vbG9jIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRleGNlcHRpb25cbiAgICAgICAgKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAobm9sb2MgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPiBUby5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZVxuXG5hbmQgY29weV9kaXJlY3Rpb25fZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAtPiBUby5Bc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5VcHRvIC0+IFRvLkFzdHR5cGVzLlVwdG9cbiAgfCBGcm9tLkFzdHR5cGVzLkRvd250byAtPiBUby5Bc3R0eXBlcy5Eb3dudG9cblxuYW5kIGNvcHlfY2FzZSA6IEZyb20uUGFyc2V0cmVlLmNhc2UgLT4gVG8uUGFyc2V0cmVlLmNhc2UgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjX2xoczsgRnJvbS5QYXJzZXRyZWUucGNfZ3VhcmQ7IEZyb20uUGFyc2V0cmVlLnBjX3JocyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNfbGhzID0gY29weV9wYXR0ZXJuIHBjX2xocztcbiAgICBUby5QYXJzZXRyZWUucGNfZ3VhcmQgPSBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24gcGNfZ3VhcmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjX3JocyA9IGNvcHlfZXhwcmVzc2lvbiBwY19yaHM7XG4gIH1cblxuYW5kIGNvcHlfdmFsdWVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfYmluZGluZyAtPiBUby5QYXJzZXRyZWUudmFsdWVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfcGF0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2Yl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmJfcGF0ID0gY29weV9wYXR0ZXJuIHB2Yl9wYXQ7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9leHByID0gY29weV9leHByZXNzaW9uIHB2Yl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZiX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZiX2xvYztcbiAgfVxuXG5hbmQgY29weV9wYXR0ZXJuIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybiAtPiBUby5QYXJzZXRyZWUucGF0dGVybiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wcGF0X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHBhdF9kZXNjID0gY29weV9wYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2xvYyA9IGNvcHlfbG9jYXRpb24gcHBhdF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybl9kZXNjIDogRnJvbS5QYXJzZXRyZWUucGF0dGVybl9kZXNjIC0+IFRvLlBhcnNldHJlZS5wYXR0ZXJuX2Rlc2NcbiAgICA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbnkgLT4gVG8uUGFyc2V0cmVlLlBwYXRfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FsaWFzIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCAoY29weV9jb25zdGFudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCB4MCwgY29weV9jb25zdGFudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90dXBsZSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X3BhdHRlcm4geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYXJyYXkgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9vciAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X3BhdHRlcm4geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9jb25zdHJhaW50IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHlwZSAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QcGF0X2xhenkgKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3BlbiAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSlcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgIChub2xvYyB4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IG5vbG9jIHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKCBjb3B5X292ZXJyaWRlX2ZsYWcgeDAsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBub2xvYyB4KSB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKCBub2xvYyB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfdmlydHVhbF9mbGFnIHgyLFxuICAgICAgICAgICBjb3B5X2NvcmVfdHlwZSB4MyApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoIG5vbG9jIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV92aXJ0dWFsX2ZsYWcgeDIsXG4gICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgzICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9jb25zdHJhaW50XG4gICAgICAgIChsZXQgeDAsIHgxID0geDAgaW5cbiAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9leHRlbnNpb24gOiBGcm9tLlBhcnNldHJlZS5leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbiA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X2RlY2wgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXh0X2RlY2xcbiAgICAgICAgKGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9IGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNzdHJfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV92YXJpYW5jZSA6IEZyb20uQXN0dHlwZXMudmFyaWFuY2UgLT4gVG8uQXN0dHlwZXMudmFyaWFuY2UgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ292YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuQ29udHJhdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db250cmF2YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5JbnZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuSW52YXJpYW50XG5cbmFuZCBjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3ByaW07XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB2YWxfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF90eXBlID0gY29weV9jb3JlX3R5cGUgcHZhbF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3ByaW0gPSBMaXN0Lm1hcCAoZnVuIHggLT4geCkgcHZhbF9wcmltO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX2xvYyA9IGNvcHlfbG9jYXRpb24gcHZhbF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfYXJnX2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5hcmdfbGFiZWwgLT4gVG8uQXN0dHlwZXMuYXJnX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbGFiZWwgLT4gVG8uQXN0dHlwZXMuTm9sYWJlbFxuICB8IEZyb20uQXN0dHlwZXMuTGFiZWxsZWQgeDAgLT4gVG8uQXN0dHlwZXMuTGFiZWxsZWQgeDBcbiAgfCBGcm9tLkFzdHR5cGVzLk9wdGlvbmFsIHgwIC0+IFRvLkFzdHR5cGVzLk9wdGlvbmFsIHgwXG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9yZWNfZmxhZyA6IEZyb20uQXN0dHlwZXMucmVjX2ZsYWcgLT4gVG8uQXN0dHlwZXMucmVjX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9ucmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZVxuICB8IEZyb20uQXN0dHlwZXMuUmVjdXJzaXZlIC0+IFRvLkFzdHR5cGVzLlJlY3Vyc2l2ZVxuXG5hbmQgY29weV9jb25zdGFudCA6IEZyb20uUGFyc2V0cmVlLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNvbnN0X2ludGVnZXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MCAtPiBUby5QYXJzZXRyZWUuUGNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNvbnN0X3N0cmluZyAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfZmxvYXQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG5cbmFuZCBjb3B5X29wdGlvbiA6ICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgb3B0aW9uIC0+ICdnMCBvcHRpb24gPVxuIGZ1biBmMCAtPiBmdW5jdGlvbiBOb25lIC0+IE5vbmUgfCBTb21lIHgwIC0+IFNvbWUgKGYwIHgwKVxuXG5hbmQgY29weV9sb25naWRlbnQgOiBMb25naWRlbnQudCAtPiBMb25naWRlbnQudCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfbG9jIDpcbiAgICAgICdmMCAnZzAuICgnZjAgLT4gJ2cwKSAtPiAnZjAgRnJvbS5Bc3R0eXBlcy5sb2MgLT4gJ2cwIFRvLkFzdHR5cGVzLmxvYyA9XG4gZnVuIGYwIHsgRnJvbS5Bc3R0eXBlcy50eHQ7IEZyb20uQXN0dHlwZXMubG9jIH0gLT5cbiAgeyBUby5Bc3R0eXBlcy50eHQgPSBmMCB0eHQ7IFRvLkFzdHR5cGVzLmxvYyA9IGNvcHlfbG9jYXRpb24gbG9jIH1cblxuYW5kIGNvcHlfbG9jYXRpb24gOiBMb2NhdGlvbi50IC0+IExvY2F0aW9uLnQgPSBmdW4geCAtPiB4XG5hbmQgY29weV9ib29sIDogYm9vbCAtPiBib29sID0gZnVuY3Rpb24gZmFsc2UgLT4gZmFsc2UgfCB0cnVlIC0+IHRydWVcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pZGVudCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9pZGVudCAoY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9ib29sIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2Jvb2wgKGNvcHlfYm9vbCB4MClcblxubGV0IGNvcHlfY2FzZXMgeCA9IExpc3QubWFwIGNvcHlfY2FzZSB4XG5sZXQgY29weV9wYXQgPSBjb3B5X3BhdHRlcm5cbmxldCBjb3B5X2V4cHIgPSBjb3B5X2V4cHJlc3Npb25cbmxldCBjb3B5X3R5cCA9IGNvcHlfY29yZV90eXBlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubyBhbmQgTGVvIFdoaXRlLCBKYW5lIFN0cmVldCBFdXJvcGUgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgRGFuaWVsIGRlIFJhdWdsYXVkcmUsIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgQXN0dHlwZXMgPSBzdHJ1Y3RcbiAgKCogQXV4aWxpYXJ5IGEucy50LiB0eXBlcyB1c2VkIGJ5IHBhcnNldHJlZSBhbmQgdHlwZWR0cmVlLiAqKVxuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMuY29uc3RhbnQgKikgPVxuICAgICAgQ29uc3RfaW50IG9mIGludFxuICAgIHwgQ29uc3RfY2hhciBvZiBjaGFyXG4gICAgfCBDb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgIHwgQ29uc3RfZmxvYXQgb2Ygc3RyaW5nXG4gICAgfCBDb25zdF9pbnQzMiBvZiBpbnQzMlxuICAgIHwgQ29uc3RfaW50NjQgb2YgaW50NjRcbiAgICB8IENvbnN0X25hdGl2ZWludCBvZiBuYXRpdmVpbnRcblxuICB0eXBlIHJlY19mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnJlY19mbGFnICopID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbiAgdHlwZSBkaXJlY3Rpb25fZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZyAqKSA9IFVwdG8gfCBEb3dudG9cblxuICAoKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbiAgdHlwZSBwcml2YXRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucHJpdmF0ZV9mbGFnICopID0gUHJpdmF0ZSB8IFB1YmxpY1xuXG4gIHR5cGUgbXV0YWJsZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm11dGFibGVfZmxhZyAqKSA9IEltbXV0YWJsZSB8IE11dGFibGVcblxuICB0eXBlIHZpcnR1YWxfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52aXJ0dWFsX2ZsYWcgKikgPSBWaXJ0dWFsIHwgQ29uY3JldGVcblxuICB0eXBlIG92ZXJyaWRlX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAqKSA9IE92ZXJyaWRlIHwgRnJlc2hcblxuICB0eXBlIGNsb3NlZF9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmNsb3NlZF9mbGFnICopID0gQ2xvc2VkIHwgT3BlblxuXG4gIHR5cGUgbGFiZWwgPSBzdHJpbmdcblxuICB0eXBlIGFyZ19sYWJlbCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5hcmdfbGFiZWwgKikgPVxuICAgICAgTm9sYWJlbFxuICAgIHwgTGFiZWxsZWQgb2Ygc3RyaW5nICgqICBsYWJlbDpUIC0+IC4uLiAqKVxuICAgIHwgT3B0aW9uYWwgb2Ygc3RyaW5nICgqID9sYWJlbDpUIC0+IC4uLiAqKVxuXG4gIHR5cGUgJ2EgbG9jID0gJ2EgTG9jYXRpb24ubG9jID0ge1xuICAgIHR4dCA6ICdhO1xuICAgIGxvYyA6IExvY2F0aW9uLnQ7XG4gIH1cblxuXG4gIHR5cGUgdmFyaWFuY2UgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmFyaWFuY2UgKikgPVxuICAgIHwgQ292YXJpYW50XG4gICAgfCBDb250cmF2YXJpYW50XG4gICAgfCBJbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgUGFyc2V0cmVlID0gc3RydWN0XG4gICgqKiBBYnN0cmFjdCBzeW50YXggdHJlZSBwcm9kdWNlZCBieSBwYXJzaW5nICopXG5cbiAgb3BlbiBBc3R0eXBlc1xuXG4gIHR5cGUgY29uc3RhbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvbnN0YW50ICopID1cbiAgICAgIFBjb25zdF9pbnRlZ2VyIG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMyAzbCAzTCAzblxuXG4gICAgICAgU3VmZml4ZXMgW2ctel1bRy1aXSBhcmUgYWNjZXB0ZWQgYnkgdGhlIHBhcnNlci5cbiAgICAgICBTdWZmaXhlcyBleGNlcHQgJ2wnLCAnTCcgYW5kICduJyBhcmUgcmVqZWN0ZWQgYnkgdGhlIHR5cGVjaGVja2VyXG4gICAgKilcbiAgICB8IFBjb25zdF9jaGFyIG9mIGNoYXJcbiAgICAoKiAnYycgKilcbiAgICB8IFBjb25zdF9zdHJpbmcgb2Ygc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICgqIFwiY29uc3RhbnRcIlxuICAgICAgIHtkZWxpbXxvdGhlciBjb25zdGFudHxkZWxpbX1cbiAgICAqKVxuICAgIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgKCogMy40IDJlNSAxLjRlLTRcblxuICAgICAgIFN1ZmZpeGVzIFtnLXpdW0ctWl0gYXJlIGFjY2VwdGVkIGJ5IHRoZSBwYXJzZXIuXG4gICAgICAgU3VmZml4ZXMgYXJlIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAqKVxuXG4gICgqKiB7MiBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG4gIHR5cGUgYXR0cmlidXRlID0gc3RyaW5nIGxvYyAqIHBheWxvYWRcbiAgICAgICAgICgqIFtAaWQgQVJHXVxuICAgICAgICAgICAgW0BAaWQgQVJHXVxuXG4gICAgICAgICAgICBNZXRhZGF0YSBjb250YWluZXJzIHBhc3NlZCBhcm91bmQgd2l0aGluIHRoZSBBU1QuXG4gICAgICAgICAgICBUaGUgY29tcGlsZXIgaWdub3JlcyB1bmtub3duIGF0dHJpYnV0ZXMuXG4gICAgICAgICAqKVxuXG4gIGFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAoKiBbJWlkIEFSR11cbiAgICAgICAgICAgWyUlaWQgQVJHXVxuXG4gICAgICAgICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuXG4gICAgICAgICopXG5cbiAgYW5kIGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGUgbGlzdFxuXG4gIGFuZCBwYXlsb2FkICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXlsb2FkICopID1cbiAgICB8IFBTdHIgb2Ygc3RydWN0dXJlXG4gICAgfCBQU2lnIG9mIHNpZ25hdHVyZSAoKiA6IFNJRyAqKVxuICAgIHwgUFR5cCBvZiBjb3JlX3R5cGUgICgqIDogVCAqKVxuICAgIHwgUFBhdCBvZiBwYXR0ZXJuICogZXhwcmVzc2lvbiBvcHRpb24gICgqID8gUCAgb3IgID8gUCB3aGVuIEUgKilcblxuICAoKiogezIgQ29yZSBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGNvcmVfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29yZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwX2Rlc2M6IGNvcmVfdHlwZV9kZXNjO1xuICAgICAgIHB0eXBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHB0eXBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY29yZV90eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjICopID1cbiAgICB8IFB0eXBfYW55XG4gICAgICAgICAgKCogIF8gKilcbiAgICB8IFB0eXBfdmFyIG9mIHN0cmluZ1xuICAgICAgICAgICgqICdhICopXG4gICAgfCBQdHlwX2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIFNpbXBsZVxuICAgICAgICAgICAgIH5sOlQxIC0+IFQyICAgIExhYmVsbGVkXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgT3Rpb25hbFxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuIFAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IEUxICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG5cbiAgICAgICAgICAgICBOb3RlczpcbiAgICAgICAgICAgICAtIElmIEUwIGlzIHByb3ZpZGVkLCBvbmx5IE9wdGlvbmFsIGlzIGFsbG93ZWQuXG4gICAgICAgICAgICAgLSBcImZ1biBQMSBQMiAuLiBQbiAtPiBFMVwiIGlzIHJlcHJlc2VudGVkIGFzIG5lc3RlZCBQZXhwX2Z1bi5cbiAgICAgICAgICAgICAtIFwibGV0IGYgUCA9IEVcIiBpcyByZXByZXNlbnRlZCB1c2luZyBQZXhwX2Z1bi5cbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfYXBwbHkgb2YgZXhwcmVzc2lvbiAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBleHBfdW5yZWFjaGFibGVcbiAgICAgICAgICAoKiAuICopXG5cbiAgYW5kIGNhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNhc2UgKikgPSAgICgqIChQIC0+IEUpIG9yIChQIHdoZW4gRTAgLT4gRSkgKilcbiAgICAgIHtcbiAgICAgICBwY19saHM6IHBhdHRlcm47XG4gICAgICAgcGNfZ3VhcmQ6IGV4cHJlc3Npb24gb3B0aW9uO1xuICAgICAgIHBjX3JoczogZXhwcmVzc2lvbjtcbiAgICAgIH1cblxuICAoKiBWYWx1ZSBkZXNjcmlwdGlvbnMgKilcblxuICBhbmQgdmFsdWVfZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdmFsX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHZhbF90eXBlOiBjb3JlX3R5cGU7XG4gICAgICAgcHZhbF9wcmltOiBzdHJpbmcgbGlzdDtcbiAgICAgICBwdmFsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHZhbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB2YWwgeDogVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJpbSA9IFtdKVxuICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIiAgICAgICAocHJpbSA9IFtcInMxXCI7Li4uXCJzblwiXSlcbiAgKilcblxuICAoKiBUeXBlIGRlY2xhcmF0aW9ucyAqKVxuXG4gIGFuZCB0eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwdHlwZV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHB0eXBlX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgICAgICAgICgqICgnYTEsLi4uJ2FuKSB0OyBOb25lIHJlcHJlc2VudHMgIF8qKVxuICAgICAgIHB0eXBlX2NzdHJzOiAoY29yZV90eXBlICogY29yZV90eXBlICogTG9jYXRpb24udCkgbGlzdDtcbiAgICAgICAgICAgICAoKiAuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJyAqKVxuICAgICAgIHB0eXBlX2tpbmQ6IHR5cGVfa2luZDtcbiAgICAgICBwdHlwZV9wcml2YXRlOiBwcml2YXRlX2ZsYWc7ICAgKCogPSBwcml2YXRlIC4uLiAqKVxuICAgICAgIHB0eXBlX21hbmlmZXN0OiBjb3JlX3R5cGUgb3B0aW9uOyAgKCogPSBUICopXG4gICAgICAgcHR5cGVfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcHR5cGVfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gICgqXG4gICAgdHlwZSB0ICAgICAgICAgICAgICAgICAgICAgKGFic3RyYWN0LCBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IEMgb2YgVCB8IC4uLiAgICAgICh2YXJpYW50LCAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSBDIG9mIFQgfCAuLi4gKHZhcmlhbnQsICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSB7bDogVDsgLi4ufSAgICAgICAocmVjb3JkLCAgIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwID0ge2wgOiBUOyAuLi59IChyZWNvcmQsICAgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gLi4gICAgICAgICAgICAgICAgKG9wZW4sICAgICBubyBtYW5pZmVzdClcbiAgKilcblxuICBhbmQgdHlwZV9raW5kICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2tpbmQgKikgPVxuICAgIHwgUHR5cGVfYWJzdHJhY3RcbiAgICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIEludmFyaWFudDogbm9uLWVtcHR5IGxpc3QgKilcbiAgICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfb3BlblxuXG4gIGFuZCBsYWJlbF9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBsZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBsZF9tdXRhYmxlOiBtdXRhYmxlX2ZsYWc7XG4gICAgICAgcGxkX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwbGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBsZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBsIFtAaWQxXSBbQGlkMl0gOiBUICopXG4gICAgICB9XG5cbiAgKCogIHsgLi4uOyBsOiBUOyAuLi4gfSAgICAgICAgICAgIChtdXRhYmxlPUltbXV0YWJsZSlcbiAgICAgIHsgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9ICAgIChtdXRhYmxlPU11dGFibGUpXG5cbiAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAqKVxuXG4gIGFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBjZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjZF9hcmdzOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gICAgICAgcGNkX3JlczogY29yZV90eXBlIG9wdGlvbjtcbiAgICAgICBwY2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiBDIFtAaWQxXSBbQGlkMl0gb2YgLi4uICopXG4gICAgICB9XG5cbiAgYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzICopID1cbiAgICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgfCBQY3N0cl9yZWNvcmQgb2YgbGFiZWxfZGVjbGFyYXRpb24gbGlzdFxuXG4gICgqXG4gICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfdHVwbGUgW10pXG4gICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChyZXMgPSBTb21lIFQwLCBhcmdzID0gW10pXG4gICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChyZXMgPSBTb21lIFQwLCBhcmdzID0gUGNzdHJfdHVwbGUpXG4gICAgfCBDIG9mIHsuLi59ICAgICAgICAgICAgIChyZXMgPSBOb25lLCAgICBhcmdzID0gUGNzdHJfcmVjb3JkKVxuICAgIHwgQzogey4uLn0gLT4gVDAgICAgICAgICAocmVzID0gU29tZSBUMCwgYXJncyA9IFBjc3RyX3JlY29yZClcbiAgICB8IEMgb2Ygey4uLn0gYXMgdCAgICAgICAgKHJlcyA9IE5vbmUsICAgIGFyZ3MgPSBQY3N0cl9yZWNvcmQpXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAoW1QxOyAuLi47IFRuXSwgTm9uZSlcbiAgICAgICAgICAgfCBDOiBUMCAgICAgICAgICAgICAgICAgIChbXSwgU29tZSBUMClcbiAgICAgICAgICAgfCBDOiBUMSAqIC4uLiAqIFRuIC0+IFQwIChbVDE7IC4uLjsgVG5dLCBTb21lIFQwKVxuICAgICAgICAgKilcbiAgICB8IFBleHRfcmViaW5kIG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAoKlxuICAgICAgICAgICB8IEMgPSBEXG4gICAgICAgICAqKVxuXG4gICgqKiB7MiBDbGFzcyBsYW5ndWFnZX0gKilcblxuICAoKiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfdHlwZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0eV9kZXNjOiBjbGFzc190eXBlX2Rlc2M7XG4gICAgICAgcGN0eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQY3R5X2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGN0eV9zaWduYXR1cmUgb2YgY2xhc3Nfc2lnbmF0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBjdHlfYXJyb3cgb2YgYXJnX2xhYmVsICogY29yZV90eXBlICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIFQgLT4gQ1QgICAgICAgU2ltcGxlXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICBMYWJlbGxlZCBsXG4gICAgICAgICAgICAgP2w6VCAtPiBDVCAgICBPcHRpb25hbCBsXG4gICAgICAgICAgICopXG4gICAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zaWduYXR1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzaWdfc2VsZjogY29yZV90eXBlO1xuICAgICAgIHBjc2lnX2ZpZWxkczogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xuICAgICAgfVxuICAoKiBvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRcbiAgICAgb2JqZWN0IC4uLiBlbmQgICAgICAgICAgICAgKHNlbGYgPSBQdHlwX2FueSlcbiAgICopXG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgKikgPVxuICAgICAge1xuICAgICAgIHBjdGZfZGVzYzogY2xhc3NfdHlwZV9maWVsZF9kZXNjO1xuICAgICAgIHBjdGZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjdGZfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAqKSA9XG4gICAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZVxuICAgICAgICAgICgqIGluaGVyaXQgQ1QgKilcbiAgICB8IFBjdGZfdmFsIG9mIChzdHJpbmcgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogdmFsIHg6IFQgKilcbiAgICB8IFBjdGZfbWV0aG9kICBvZiAoc3RyaW5nICogcHJpdmF0ZV9mbGFnICogdmlydHVhbF9mbGFnICogY29yZV90eXBlKVxuICAgICAgICAgICgqIG1ldGhvZCB4OiBUXG5cbiAgICAgICAgICAgICBOb3RlOiBUIGNhbiBiZSBhIFB0eXBfcG9seS5cbiAgICAgICAgICAgKilcbiAgICB8IFBjdGZfY29uc3RyYWludCAgb2YgKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiBjb25zdHJhaW50IFQxID0gVDIgKilcbiAgICB8IFBjdGZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBjdGZfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCAnYSBjbGFzc19pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuY2xhc3NfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBjaV92aXJ0OiB2aXJ0dWFsX2ZsYWc7XG4gICAgICAgcGNpX3BhcmFtczogKGNvcmVfdHlwZSAqIHZhcmlhbmNlKSBsaXN0O1xuICAgICAgIHBjaV9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBjaV9leHByOiAnYTtcbiAgICAgICBwY2lfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjaV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgfVxuICAoKiBjbGFzcyBjID0gLi4uXG4gICAgIGNsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLlxuICAgICBjbGFzcyB2aXJ0dWFsIGMgPSAuLi5cblxuICAgICBBbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLlxuICAqKVxuXG4gIGFuZCBjbGFzc19kZXNjcmlwdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICBhbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIGNsYXNzIGxhbmd1YWdlICopXG5cbiAgYW5kIGNsYXNzX2V4cHIgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBjbF9kZXNjOiBjbGFzc19leHByX2Rlc2M7XG4gICAgICAgcGNsX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2xfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgY2xhc3NfZXhwcl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgKikgPVxuICAgIHwgUGNsX2NvbnN0ciBvZiBMb25naWRlbnQudCBsb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIGNcbiAgICAgICAgICAgICBbJ2ExLCAuLi4sICdhbl0gYyAqKVxuICAgIHwgUGNsX3N0cnVjdHVyZSBvZiBjbGFzc19zdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGNsX2Z1biBvZiBhcmdfbGFiZWwgKiBleHByZXNzaW9uIG9wdGlvbiAqIHBhdHRlcm4gKiBjbGFzc19leHByXG4gICAgICAgICAgKCogZnVuIFAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIChTaW1wbGUsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gQ0UgICAgICAgICAgICAgICAgICAgICAgIChMYWJlbGxlZCBsLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uYWwgbCwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gQ0UgICAgICAgICAgICAgICAgKE9wdGlvbmFsIGwsIFNvbWUgRTApXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfYXBwbHkgb2YgY2xhc3NfZXhwciAqIChhcmdfbGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHNpZ19leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVCAqKVxuICAgIHwgUHNpZ19tb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIFggOiBNVCAqKVxuICAgIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxIDogTVQxIGFuZCAuLi4gYW5kIFhuIDogTVRuICopXG4gICAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVRcbiAgICAgICAgICAgICBtb2R1bGUgdHlwZSBTICopXG4gICAgfCBQc2lnX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvblxuICAgICAgICAgICgqIG9wZW4gWCAqKVxuICAgIHwgUHNpZ19pbmNsdWRlIG9mIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1UICopXG4gICAgfCBQc2lnX2NsYXNzIG9mIGNsYXNzX2Rlc2NyaXB0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLiAqKVxuICAgIHwgUHNpZ19jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHNpZ19hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUHNpZ19leHRlbnNpb24gb2YgZXh0ZW5zaW9uICogYXR0cmlidXRlc1xuICAgICAgICAgICgqIFslJWlkXSAqKVxuXG4gIGFuZCBtb2R1bGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG1kX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1kX3R5cGU6IG1vZHVsZV90eXBlO1xuICAgICAgIHBtZF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICAgcG1kX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA6IE1UICopXG5cbiAgYW5kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcG10ZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtdGRfdHlwZTogbW9kdWxlX3R5cGUgb3B0aW9uO1xuICAgICAgIHBtdGRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtdGRfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuICAoKiBTID0gTVRcbiAgICAgUyAgICAgICAoYWJzdHJhY3QgbW9kdWxlIHR5cGUgZGVjbGFyYXRpb24sIHBtdGRfdHlwZSA9IE5vbmUpXG4gICopXG5cbiAgYW5kIG9wZW5fZGVzY3JpcHRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBvcGVuX2xpZDogTG9uZ2lkZW50LnQgbG9jO1xuICAgICAgIHBvcGVuX292ZXJyaWRlOiBvdmVycmlkZV9mbGFnO1xuICAgICAgIHBvcGVuX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwb3Blbl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgfVxuICAoKiBvcGVuISBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBPdmVycmlkZSAoc2lsZW5jZXMgdGhlICd1c2VkIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93aW5nJyB3YXJuaW5nKVxuICAgICBvcGVuICBYIC0gcG9wZW5fb3ZlcnJpZGUgPSBGcmVzaFxuICAgKilcblxuICBhbmQgJ2EgaW5jbHVkZV9pbmZvcyAoKklGX0NVUlJFTlQgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGluY2xfbW9kOiAnYTtcbiAgICAgICBwaW5jbF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGluY2xfYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cblxuICBhbmQgaW5jbHVkZV9kZXNjcmlwdGlvbiA9IG1vZHVsZV90eXBlIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNVCAqKVxuXG4gIGFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuICAoKiBpbmNsdWRlIE1FICopXG5cbiAgYW5kIHdpdGhfY29uc3RyYWludCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ICopID1cbiAgICB8IFB3aXRoX3R5cGUgb2YgTG9uZ2lkZW50LnQgbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSBYLnQgPSAuLi5cblxuICAgICAgICAgICAgIE5vdGU6IHRoZSBsYXN0IGNvbXBvbmVudCBvZiB0aGUgbG9uZ2lkZW50IG11c3QgbWF0Y2hcbiAgICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZV9kZWNsYXJhdGlvbi4gKilcbiAgICB8IFB3aXRoX21vZHVsZSBvZiBMb25naWRlbnQudCBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYLlkgPSBaICopXG4gICAgfCBQd2l0aF90eXBlc3Vic3Qgb2YgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIHdpdGggdHlwZSB0IDo9IC4uLiAqKVxuICAgIHwgUHdpdGhfbW9kc3Vic3Qgb2Ygc3RyaW5nIGxvYyAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIHdpdGggbW9kdWxlIFggOj0gWiAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlICopXG5cbiAgYW5kIG1vZHVsZV9leHByICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcG1vZF9kZXNjOiBtb2R1bGVfZXhwcl9kZXNjO1xuICAgICAgIHBtb2RfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBtb2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgbW9kdWxlX2V4cHJfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQbW9kX2lkZW50IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIFggKilcbiAgICB8IFBtb2Rfc3RydWN0dXJlIG9mIHN0cnVjdHVyZVxuICAgICAgICAgICgqIHN0cnVjdCAuLi4gZW5kICopXG4gICAgfCBQbW9kX2Z1bmN0b3Igb2Ygc3RyaW5nIGxvYyAqIG1vZHVsZV90eXBlIG9wdGlvbiAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogZnVuY3RvcihYIDogTVQxKSAtPiBNRSAqKVxuICAgIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByXG4gICAgICAgICAgKCogTUUxKE1FMikgKilcbiAgICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlXG4gICAgICAgICAgKCogKE1FIDogTVQpICopXG4gICAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogKHZhbCBFKSAqKVxuICAgIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG4gIGFuZCBzdHJ1Y3R1cmVfaXRlbSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gKikgPVxuICAgICAge1xuICAgICAgIHBzdHJfZGVzYzogc3RydWN0dXJlX2l0ZW1fZGVzYztcbiAgICAgICBwc3RyX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICBhbmQgc3RydWN0dXJlX2l0ZW1fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAqKSA9XG4gICAgfCBQc3RyX2V2YWwgb2YgZXhwcmVzc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBFICopXG4gICAgfCBQc3RyX3ZhbHVlIG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0XG4gICAgICAgICAgKCogbGV0IFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHN0cl9wcmltaXRpdmUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiAgdmFsIHg6IFRcbiAgICAgICAgICAgICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiB0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uICopXG4gICAgfCBQc3RyX3R5cGV4dCBvZiB0eXBlX2V4dGVuc2lvblxuICAgICAgICAgICgqIHR5cGUgdDEgKz0gLi4uICopXG4gICAgfCBQc3RyX2V4Y2VwdGlvbiBvZiBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgICAoKiBleGNlcHRpb24gQyBvZiBUXG4gICAgICAgICAgICAgZXhjZXB0aW9uIEMgPSBNLlggKilcbiAgICB8IFBzdHJfbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nXG4gICAgICAgICAgKCogbW9kdWxlIFggPSBNRSAqKVxuICAgIHwgUHN0cl9yZWNtb2R1bGUgb2YgbW9kdWxlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIG1vZHVsZSByZWMgWDEgPSBNRTEgYW5kIC4uLiBhbmQgWG4gPSBNRW4gKilcbiAgICB8IFBzdHJfbW9kdHlwZSBvZiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSB0eXBlIFMgPSBNVCAqKVxuICAgIHwgUHN0cl9vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzdHJfY2xhc3Mgb2YgY2xhc3NfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIGMxID0gLi4uIGFuZCAuLi4gYW5kIGNuID0gLi4uICopXG4gICAgfCBQc3RyX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgdHlwZSBjdDEgPSAuLi4gYW5kIC4uLiBhbmQgY3RuID0gLi4uICopXG4gICAgfCBQc3RyX2luY2x1ZGUgb2YgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIGluY2x1ZGUgTUUgKilcbiAgICB8IFBzdHJfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgdmFsdWVfYmluZGluZyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyAqKSA9XG4gICAge1xuICAgICAgcHZiX3BhdDogcGF0dGVybjtcbiAgICAgIHB2Yl9leHByOiBleHByZXNzaW9uO1xuICAgICAgcHZiX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICBwdmJfbG9jOiBMb2NhdGlvbi50O1xuICAgIH1cblxuICBhbmQgbW9kdWxlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nICopID1cbiAgICAgIHtcbiAgICAgICBwbWJfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbWJfZXhwcjogbW9kdWxlX2V4cHI7XG4gICAgICAgcG1iX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICAgcG1iX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogWCA9IE1FICopXG5cbiAgKCoqIHsyIFRvcGxldmVsfSAqKVxuXG4gICgqIFRvcGxldmVsIHBocmFzZXMgKilcblxuICB0eXBlIHRvcGxldmVsX3BocmFzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlICopID1cbiAgICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICAgIHwgUHRvcF9kaXIgb2Ygc3RyaW5nICogZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgKCogI3VzZSwgI2xvYWQgLi4uICopXG5cbiAgYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ICopID1cbiAgICB8IFBkaXJfbm9uZVxuICAgIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBQZGlyX2ludCBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgIHwgUGRpcl9pZGVudCBvZiBMb25naWRlbnQudFxuICAgIHwgUGRpcl9ib29sIG9mIGJvb2xcbmVuZFxuXG5tb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gIGxldCBhc3RfaW1wbF9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TTAxOVwiXG4gIGxldCBhc3RfaW50Zl9tYWdpY19udW1iZXIgPSBcIkNhbWwxOTk5TjAxOFwiXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDRcbm1vZHVsZSBUbyA9IEFzdF80MDNcblxubGV0IGZyb21fbG9jIHsgTG9jYXRpb24udHh0ID0gXzsgbG9jIH0gPSBsb2NcblxubGV0IG1pZ3JhdGlvbl9lcnJvciBsb2MgbWlzc2luZ19mZWF0dXJlID1cbiAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2NcbiAgICBcIm1pZ3JhdGlvbiBlcnJvcjogJXMgaXMgbm90IHN1cHBvcnRlZCBiZWZvcmUgT0NhbWwgNC4wNFwiIG1pc3NpbmdfZmVhdHVyZVxuXG5sZXQgcmVjIGNvcHlfZXhwcmVzc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb24gLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfZGVzYyA9IGNvcHlfZXhwcmVzc2lvbl9kZXNjIHBleHBfbG9jIHBleHBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4cHJlc3Npb25fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ZXhjZXB0aW9uIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcImxvY2FsIGV4Y2VwdGlvbnNcIlxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfbG9jIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2ludGVydmFsIChjb3B5X2NvbnN0YW50IHgwLCBjb3B5X2NvbnN0YW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vcGVuIF8gLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcIm1vZHVsZSBvcGVuIGluIHBhdHRlcm5zXCJcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgQWxhaW4gRnJpc2NoLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRnJvbSA9IEFzdF80MDNcbm1vZHVsZSBUbyA9IEFzdF80MDRcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIChMaXN0Lm1hcCBjb3B5X2Nhc2UgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FwcGx5XG4gICAgICAgICggY29weV9leHByZXNzaW9uIHgwLFxuICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfYXJnX2xhYmVsIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX21hdGNoIChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3RyeSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHJ5IChjb3B5X2V4cHJlc3Npb24geDAsIExpc3QubWFwIGNvcHlfY2FzZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90dXBsZSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3RcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF92YXJpYW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF92YXJpYW50IChjb3B5X2xhYmVsIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9yZWNvcmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3JlY29yZFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9maWVsZCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGRcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcnJheSAoTGlzdC5tYXAgY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfd2hpbGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3doaWxlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZm9yXG4gICAgICAgICggY29weV9wYXR0ZXJuIHgwLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDIsXG4gICAgICAgICAgY29weV9kaXJlY3Rpb25fZmxhZyB4MyxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDQgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RyYWludCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvZXJjZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9jb3JlX3R5cGUgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZW5kICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZW5kIChjb3B5X2V4cHJlc3Npb24geDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXcgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2V0aW5zdHZhciAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGVcbiAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9sZXRtb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9tb2R1bGVfZXhwciB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfbGF6eSAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcG9seSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29iamVjdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb2JqZWN0IChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ld3R5cGUgKHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wYWNrIHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX3BhY2sgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vcGVuICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfb3BlblxuICAgICAgICAoY29weV9vdmVycmlkZV9mbGFnIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGUgLT4gVG8uUGFyc2V0cmVlLlBleHBfdW5yZWFjaGFibGVcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIHgxKVxuXG5hbmQgY29weV9wYXlsb2FkIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyB4MCAtPiBUby5QYXJzZXRyZWUuUFNpZyAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFR5cCB4MCAtPiBUby5QYXJzZXRyZWUuUFR5cCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFBhdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBQYXQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9zdHJ1Y3R1cmUgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zdHJ1Y3R1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzdHJfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHN0cl9sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfZGVzYyA9IGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzdHJfbG9jID0gY29weV9sb2NhdGlvbiBwc3RyX2xvYztcbiAgfVxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V2YWwgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V2YWwgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ZhbHVlIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGVcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R1bGUgKGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfYmluZGluZyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX21vZHR5cGUgKGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9vcGVuIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9vcGVuIChjb3B5X29wZW5fZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3MgKExpc3QubWFwIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9jbGFzc190eXBlIChMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9pbmNsdWRlIChjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcblxuYW5kIGNvcHlfaW5jbHVkZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfZXhwciB4XG5cbmFuZCBjb3B5X2NsYXNzX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByIC0+IFRvLlBhcnNldHJlZS5jbGFzc19leHByID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2xfZGVzYyA9IGNvcHlfY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfbG9jID0gY29weV9sb2NhdGlvbiBwY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIChjb3B5X2NsYXNzX3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZnVuXG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfcGF0dGVybiB4MixcbiAgICAgICAgICBjb3B5X2NsYXNzX2V4cHIgeDMgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9hcHBseVxuICAgICAgICAoIGNvcHlfY2xhc3NfZXhwciB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9sZXRcbiAgICAgICAgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSwgY29weV9jbGFzc19leHByIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2NvbnN0cmFpbnQgKGNvcHlfY2xhc3NfZXhwciB4MCwgY29weV9jbGFzc190eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc3RydWN0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzdHJfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzdHJfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9zZWxmID0gY29weV9wYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgVG8uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyA9IExpc3QubWFwIGNvcHlfY2xhc3NfZmllbGQgcGNzdHJfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2ZfZGVzYyA9IGNvcHlfY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaGVyaXQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaGVyaXRcbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9jbGFzc19leHByIHgxLCBjb3B5X29wdGlvbiAoZnVuIHggLT4geCkgeDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X211dGFibGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyID0geDAgaW5cbiAgICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgICBjb3B5X3ByaXZhdGVfZmxhZyB4MSxcbiAgICAgICAgICAgY29weV9jbGFzc19maWVsZF9raW5kIHgyICkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfaW5pdGlhbGl6ZXIgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2ZfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19maWVsZF9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZF9raW5kID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfdmlydHVhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLkNma192aXJ0dWFsIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfY29uY3JldGUgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuXG5hbmQgY29weV9tb2R1bGVfYmluZGluZyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtYl9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWJfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWJfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1iX2V4cHIgPSBjb3B5X21vZHVsZV9leHByIHBtYl9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1iX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1iX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwciA6IEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbW9kX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1vZF9kZXNjID0gY29weV9tb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtb2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbW9kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9leHByX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfaWRlbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2lkZW50IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2Rfc3RydWN0dXJlIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2Z1bmN0b3IgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yXG4gICAgICAgICggY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgeDEsXG4gICAgICAgICAgY29weV9tb2R1bGVfZXhwciB4MiApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKGNvcHlfbW9kdWxlX2V4cHIgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9jb25zdHJhaW50IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF91bnBhY2sgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10eV9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfZGVzYyA9IGNvcHlfbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfbG9jID0gY29weV9sb2NhdGlvbiBwbXR5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucG10eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3NpZ25hdHVyZSAoY29weV9zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfd2l0aCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfd2l0aFxuICAgICAgICAoY29weV9tb2R1bGVfdHlwZSB4MCwgTGlzdC5tYXAgY29weV93aXRoX2NvbnN0cmFpbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV90eXBlb2YgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3R5cGVvZiAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X2FsaWFzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9hbGlhcyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG5cbmFuZCBjb3B5X3dpdGhfY29uc3RyYWludCA6XG4gICAgRnJvbS5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50IC0+IFRvLlBhcnNldHJlZS53aXRoX2NvbnN0cmFpbnQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHVsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHVsZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX3R5cGVzdWJzdCAoY29weV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfbW9kc3Vic3RcbiAgICAgICAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG5cbmFuZCBjb3B5X3NpZ25hdHVyZSA6IEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3NpZ25hdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc2lnbmF0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHNpZ19kZXNjOyBGcm9tLlBhcnNldHJlZS5wc2lnX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHNpZ19kZXNjID0gY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHNpZ19sb2MgPSBjb3B5X2xvY2F0aW9uIHBzaWdfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdmFsdWUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZVxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV90eXBlX2RlY2xhcmF0aW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY2xhc3NfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3Nfc2lnbmF0dXJlIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucGNzaWdfc2VsZjsgRnJvbS5QYXJzZXRyZWUucGNzaWdfZmllbGRzIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19zZWxmID0gY29weV9jb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICBUby5QYXJzZXRyZWUucGNzaWdfZmllbGRzID0gTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfbG9jID0gY29weV9sb2NhdGlvbiBwY3RmX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2luaGVyaXQgKGNvcHlfY2xhc3NfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX3ZhbCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X211dGFibGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX21ldGhvZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiwgeDMgPSB4MCBpblxuICAgICAgICAgKHgwLCBjb3B5X3ByaXZhdGVfZmxhZyB4MSwgY29weV92aXJ0dWFsX2ZsYWcgeDIsIGNvcHlfY29yZV90eXBlIHgzKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSAoY29weV9hdHRyaWJ1dGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2V4dGVuc2lvbiA6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X3BheWxvYWQgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5jbGFzc19pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5jbGFzc19pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfdmlydDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9leHByO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY2lfdmlydCA9IGNvcHlfdmlydHVhbF9mbGFnIHBjaV92aXJ0O1xuICAgIFRvLlBhcnNldHJlZS5wY2lfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcGNpX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucGNpX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNpX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9leHByID0gZjAgcGNpX2V4cHI7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjaV9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3ZpcnR1YWxfZmxhZyA6IEZyb20uQXN0dHlwZXMudmlydHVhbF9mbGFnIC0+IFRvLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5WaXJ0dWFsIC0+IFRvLkFzdHR5cGVzLlZpcnR1YWxcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbmNyZXRlIC0+IFRvLkFzdHR5cGVzLkNvbmNyZXRlXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVzY3JpcHRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV90eXBlIHhcblxuYW5kIGNvcHlfaW5jbHVkZV9pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgJ2cwIFRvLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX21vZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX21vZCA9IGYwIHBpbmNsX21vZDtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbG9jID0gY29weV9sb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vcGVuX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xpZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xpZCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHBvcGVuX2xpZDtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGUgPSBjb3B5X292ZXJyaWRlX2ZsYWcgcG9wZW5fb3ZlcnJpZGU7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2xvYyA9IGNvcHlfbG9jYXRpb24gcG9wZW5fbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3ZlcnJpZGVfZmxhZyA6XG4gICAgRnJvbS5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnIC0+IFRvLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuT3ZlcnJpZGUgLT4gVG8uQXN0dHlwZXMuT3ZlcnJpZGVcbiAgfCBGcm9tLkFzdHR5cGVzLkZyZXNoIC0+IFRvLkFzdHR5cGVzLkZyZXNoXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPlxuICAgIFRvLlBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbXRkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfdHlwZSA9IGNvcHlfb3B0aW9uIGNvcHlfbW9kdWxlX3R5cGUgcG10ZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX2xvYyA9IGNvcHlfbG9jYXRpb24gcG10ZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1kX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1kX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF90eXBlID0gY29weV9tb2R1bGVfdHlwZSBwbWRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1kX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtZF9sb2M7XG4gIH1cblxuYW5kIGNvcHlfdHlwZV9leHRlbnNpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGF0aDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGF0aCA9IGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHB0eWV4dF9wYXRoO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycyA9XG4gICAgICBMaXN0Lm1hcCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgOlxuICAgIEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBleHRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9raW5kID0gY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbG9jID0gY29weV9sb2NhdGlvbiBwZXh0X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgeDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID0gY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgcGNkX2FyZ3M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9yZXMgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwY2RfcmVzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfbG9jID0gY29weV9sb2NhdGlvbiBwY2RfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBUby5Bc3R0eXBlcy5hcmdfbGFiZWwgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBUby5Bc3R0eXBlcy5Ob2xhYmVsXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiBUby5Bc3R0eXBlcy5MYWJlbGxlZCB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gVG8uQXN0dHlwZXMuT3B0aW9uYWwgeDBcblxuYW5kIGNvcHlfY2xvc2VkX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLmNsb3NlZF9mbGFnIC0+IFRvLkFzdHR5cGVzLmNsb3NlZF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNsb3NlZCAtPiBUby5Bc3R0eXBlcy5DbG9zZWRcbiAgfCBGcm9tLkFzdHR5cGVzLk9wZW4gLT4gVG8uQXN0dHlwZXMuT3BlblxuXG5hbmQgY29weV9sYWJlbCA6IEZyb20uQXN0dHlwZXMubGFiZWwgLT4gVG8uQXN0dHlwZXMubGFiZWwgPSBmdW4geCAtPiB4XG5cbmFuZCBjb3B5X3JlY19mbGFnIDogRnJvbS5Bc3R0eXBlcy5yZWNfZmxhZyAtPiBUby5Bc3R0eXBlcy5yZWNfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Ob25yZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlXG4gIHwgRnJvbS5Bc3R0eXBlcy5SZWN1cnNpdmUgLT4gVG8uQXN0dHlwZXMuUmVjdXJzaXZlXG5cbmFuZCBjb3B5X2NvbnN0YW50IDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uUGFyc2V0cmVlLmNvbnN0YW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLlBhcnNldHJlZS5QY29uc3RfY2hhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZGlyX2ludCAoeDAsIGNvcHlfb3B0aW9uIChmdW4geCAtPiB4KSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2lkZW50IHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX2lkZW50IChjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX2Jvb2wgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfYm9vbCAoY29weV9ib29sIHgwKVxuXG5sZXQgY29weV9jYXNlcyB4ID0gTGlzdC5tYXAgY29weV9jYXNlIHhcbmxldCBjb3B5X3BhdCA9IGNvcHlfcGF0dGVyblxubGV0IGNvcHlfZXhwciA9IGNvcHlfZXhwcmVzc2lvblxubGV0IGNvcHlfdHlwID0gY29weV9jb3JlX3R5cGVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKw6lyw6ltaWUgRGltaW5vIGFuZCBMZW8gV2hpdGUsIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICBEYW5pZWwgZGUgUmF1Z2xhdWRyZSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBc3R0eXBlcyA9IHN0cnVjdFxuICAoKiBBdXhpbGlhcnkgYS5zLnQuIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbiAgdHlwZSBjb25zdGFudCAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jb25zdGFudCAqKSA9XG4gICAgICBDb25zdF9pbnQgb2YgaW50XG4gICAgfCBDb25zdF9jaGFyIG9mIGNoYXJcbiAgICB8IENvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG4gICAgfCBDb25zdF9mbG9hdCBvZiBzdHJpbmdcbiAgICB8IENvbnN0X2ludDMyIG9mIGludDMyXG4gICAgfCBDb25zdF9pbnQ2NCBvZiBpbnQ2NFxuICAgIHwgQ29uc3RfbmF0aXZlaW50IG9mIG5hdGl2ZWludFxuXG4gIHR5cGUgcmVjX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMucmVjX2ZsYWcgKikgPSBOb25yZWN1cnNpdmUgfCBSZWN1cnNpdmVcblxuICB0eXBlIGRpcmVjdGlvbl9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnICopID0gVXB0byB8IERvd250b1xuXG4gIHR5cGUgcHJpdmF0ZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLnByaXZhdGVfZmxhZyAqKSA9IFByaXZhdGUgfCBQdWJsaWNcblxuICB0eXBlIG11dGFibGVfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5tdXRhYmxlX2ZsYWcgKikgPSBJbW11dGFibGUgfCBNdXRhYmxlXG5cbiAgdHlwZSB2aXJ0dWFsX2ZsYWcgKCpJRl9DVVJSRU5UID0gQXN0dHlwZXMudmlydHVhbF9mbGFnICopID0gVmlydHVhbCB8IENvbmNyZXRlXG5cbiAgdHlwZSBvdmVycmlkZV9mbGFnICgqSUZfQ1VSUkVOVCA9IEFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgKikgPSBPdmVycmlkZSB8IEZyZXNoXG5cbiAgdHlwZSBjbG9zZWRfZmxhZyAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy5jbG9zZWRfZmxhZyAqKSA9IENsb3NlZCB8IE9wZW5cblxuICB0eXBlIGxhYmVsID0gc3RyaW5nXG5cbiAgdHlwZSAnYSBsb2MgPSAnYSBMb2NhdGlvbi5sb2MgPSB7XG4gICAgdHh0IDogJ2E7XG4gICAgbG9jIDogTG9jYXRpb24udDtcbiAgfVxuXG5cbiAgdHlwZSB2YXJpYW5jZSAoKklGX0NVUlJFTlQgPSBBc3R0eXBlcy52YXJpYW5jZSAqKSA9XG4gICAgfCBDb3ZhcmlhbnRcbiAgICB8IENvbnRyYXZhcmlhbnRcbiAgICB8IEludmFyaWFudFxuZW5kXG5cbm1vZHVsZSBQYXJzZXRyZWUgPSBzdHJ1Y3RcbiAgKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuICBvcGVuIEFzdHR5cGVzXG5cbiAgKCoqIHsyIEV4dGVuc2lvbiBwb2ludHN9ICopXG5cbiAgdHlwZSBhdHRyaWJ1dGUgPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuICAgICAgICAgKCogW0BpZCBBUkddXG4gICAgICAgICAgICBbQEBpZCBBUkddXG5cbiAgICAgICAgICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC5cbiAgICAgICAgICAgIFRoZSBjb21waWxlciBpZ25vcmVzIHVua25vd24gYXR0cmlidXRlcy5cbiAgICAgICAgICopXG5cbiAgYW5kIGV4dGVuc2lvbiA9IHN0cmluZyBsb2MgKiBwYXlsb2FkXG4gICAgICAgICgqIFslaWQgQVJHXVxuICAgICAgICAgICBbJSVpZCBBUkddXG5cbiAgICAgICAgICAgU3ViLWxhbmd1YWdlIHBsYWNlaG9sZGVyIC0tIHJlamVjdGVkIGJ5IHRoZSB0eXBlY2hlY2tlci5cbiAgICAgICAgKilcblxuICBhbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbiAgYW5kIHBheWxvYWQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnBheWxvYWQgKikgPVxuICAgIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiA6IFQgKilcbiAgICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uICAoKiA/IFAgIG9yICA/IFAgd2hlbiBFICopXG5cbiAgKCoqIHsyIENvcmUgbGFuZ3VhZ2V9ICopXG5cbiAgKCogVHlwZSBleHByZXNzaW9ucyAqKVxuXG4gIGFuZCBjb3JlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNvcmVfdHlwZSAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5cF9kZXNjOiBjb3JlX3R5cGVfZGVzYztcbiAgICAgICBwdHlwX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwdHlwX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNvcmVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAqKSA9XG4gICAgfCBQdHlwX2FueVxuICAgICAgICAgICgqICBfICopXG4gICAgfCBQdHlwX3ZhciBvZiBzdHJpbmdcbiAgICAgICAgICAoKiAnYSAqKVxuICAgIHwgUHR5cF9hcnJvdyBvZiBsYWJlbCAqIGNvcmVfdHlwZSAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIFQxIC0+IFQyICAgICAgIChsYWJlbCA9IFwiXCIpXG4gICAgICAgICAgICAgfmw6VDEgLT4gVDIgICAgKGxhYmVsID0gXCJsXCIpXG4gICAgICAgICAgICAgP2w6VDEgLT4gVDIgICAgKGxhYmVsID0gXCI/bFwiKVxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF90dXBsZSBvZiBjb3JlX3R5cGUgbGlzdFxuICAgICAgICAgICgqIFQxICogLi4uICogVG5cblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFB0eXBfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogdGNvbnN0clxuICAgICAgICAgICAgIFQgdGNvbnN0clxuICAgICAgICAgICAgIChUMSwgLi4uLCBUbikgdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9vYmplY3Qgb2YgKHN0cmluZyAqIGF0dHJpYnV0ZXMgKiBjb3JlX3R5cGUpIGxpc3QgKiBjbG9zZWRfZmxhZ1xuICAgICAgICAgICgqIDwgbDE6VDE7IC4uLjsgbG46VG4gPiAgICAgKGZsYWcgPSBDbG9zZWQpXG4gICAgICAgICAgICAgPCBsMTpUMTsgLi4uOyBsbjpUbjsgLi4gPiAoZmxhZyA9IE9wZW4pXG4gICAgICAgICAgICopXG4gICAgfCBQdHlwX2NsYXNzIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogI3Rjb25zdHJcbiAgICAgICAgICAgICBUICN0Y29uc3RyXG4gICAgICAgICAgICAgKFQxLCAuLi4sIFRuKSAjdGNvbnN0clxuICAgICAgICAgICAqKVxuICAgIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmdcbiAgICAgICAgICAoKiBUIGFzICdhICopXG4gICAgfCBQdHlwX3ZhcmlhbnQgb2Ygcm93X2ZpZWxkIGxpc3QgKiBjbG9zZWRfZmxhZyAqIGxhYmVsIGxpc3Qgb3B0aW9uXG4gICAgICAgICAgKCogWyBgQXxgQiBdICAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWz4gYEF8YEIgXSAgICAgICAgKGZsYWcgPSBPcGVuOyAgIGxhYmVscyA9IE5vbmUpXG4gICAgICAgICAgICAgWzwgYEF8YEIgXSAgICAgICAgKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW10pXG4gICAgICAgICAgICAgWzwgYEF8YEIgPiBgWCBgWSBdKGZsYWcgPSBDbG9zZWQ7IGxhYmVscyA9IFNvbWUgW1wiWFwiO1wiWVwiXSlcbiAgICAgICAgICAgKilcbiAgICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbGlzdCAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqICdhMSAuLi4gJ2FuLiBUXG5cbiAgICAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUHBhdF9jb25zdHJhaW50IG5vZGUgY29ycmVzcG9uZGluZ1xuICAgICAgICAgICAgICAgdG8gYSBjb25zdHJhaW50IG9uIGEgbGV0LWJpbmRpbmc6IGxldCB4IDogJ2ExIC4uLiAnYW4uIFRcbiAgICAgICAgICAgICAgID0gZSAuLi5cblxuICAgICAgICAgICAgIC0gVW5kZXIgQ2ZrX3ZpcnR1YWwgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgY29yZV90eXBlIG9mIGEgUGN0Zl9tZXRob2Qgbm9kZS5cblxuICAgICAgICAgICAgIC0gQXMgdGhlIGNvcmVfdHlwZSBvZiBhIFBleHBfcG9seSBub2RlLlxuXG4gICAgICAgICAgICAgLSBBcyB0aGUgcGxkX3R5cGUgZmllbGQgb2YgYSBsYWJlbF9kZWNsYXJhdGlvbi5cblxuICAgICAgICAgICAgIC0gQXMgYSBjb3JlX3R5cGUgb2YgYSBQdHlwX29iamVjdCBub2RlLlxuICAgICAgICAgICAqKVxuXG4gICAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlXG4gICAgICAgICAgKCogKG1vZHVsZSBTKSAqKVxuICAgIHwgUHR5cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgcGFja2FnZV90eXBlID0gTG9uZ2lkZW50LnQgbG9jICogKExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSkgbGlzdFxuICAgICAgICAoKlxuICAgICAgICAgIChtb2R1bGUgUylcbiAgICAgICAgICAobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbilcbiAgICAgICAgICopXG5cbiAgYW5kIHJvd19maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucm93X2ZpZWxkICopID1cbiAgICB8IFJ0YWcgb2YgbGFiZWwgKiBhdHRyaWJ1dGVzICogYm9vbCAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogW2BBXSAgICAgICAgICAgICAgICAgICAoIHRydWUsICBbXSApXG4gICAgICAgICAgICAgW2BBIG9mIFRdICAgICAgICAgICAgICAoIGZhbHNlLCBbVF0gKVxuICAgICAgICAgICAgIFtgQSBvZiBUMSAmIC4uICYgVG5dICAgKCBmYWxzZSwgW1QxOy4uLlRuXSApXG4gICAgICAgICAgICAgW2BBIG9mICYgVDEgJiAuLiAmIFRuXSAoIHRydWUsICBbVDE7Li4uVG5dIClcblxuICAgICAgICAgICAgLSBUaGUgMm5kIGZpZWxkIGlzIHRydWUgaWYgdGhlIHRhZyBjb250YWlucyBhXG4gICAgICAgICAgICAgIGNvbnN0YW50IChlbXB0eSkgY29uc3RydWN0b3IuXG4gICAgICAgICAgICAtICcmJyBvY2N1cnMgd2hlbiBzZXZlcmFsIHR5cGVzIGFyZSB1c2VkIGZvciB0aGUgc2FtZSBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAoc2VlIDQuMiBpbiB0aGUgbWFudWFsKVxuXG4gICAgICAgICAgICAtIFRPRE86IHN3aXRjaCB0byBhIHJlY29yZCByZXByZXNlbnRhdGlvbiwgYW5kIGtlZXAgbG9jYXRpb25cbiAgICAgICAgICAqKVxuICAgIHwgUmluaGVyaXQgb2YgY29yZV90eXBlXG4gICAgICAgICAgKCogWyBUIF0gKilcblxuICAoKiBQYXR0ZXJucyAqKVxuXG4gIGFuZCBwYXR0ZXJuICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5wYXR0ZXJuICopID1cbiAgICAgIHtcbiAgICAgICBwcGF0X2Rlc2M6IHBhdHRlcm5fZGVzYztcbiAgICAgICBwcGF0X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwcGF0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIHBhdHRlcm5fZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjICopID1cbiAgICB8IFBwYXRfYW55XG4gICAgICAgICAgKCogXyAqKVxuICAgIHwgUHBhdF92YXIgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIHggKilcbiAgICB8IFBwYXRfYWxpYXMgb2YgcGF0dGVybiAqIHN0cmluZyBsb2NcbiAgICAgICAgICAoKiBQIGFzICdhICopXG4gICAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQcGF0X2ludGVydmFsIG9mIGNvbnN0YW50ICogY29uc3RhbnRcbiAgICAgICAgICAoKiAnYScuLid6J1xuXG4gICAgICAgICAgICAgT3RoZXIgZm9ybXMgb2YgaW50ZXJ2YWwgYXJlIHJlY29nbml6ZWQgYnkgdGhlIHBhcnNlclxuICAgICAgICAgICAgIGJ1dCByZWplY3RlZCBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICAgIHwgUHBhdF90dXBsZSBvZiBwYXR0ZXJuIGxpc3RcbiAgICAgICAgICAoKiAoUDEsIC4uLiwgUG4pXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPj0gMlxuICAgICAgICAgICopXG4gICAgfCBQcGF0X2NvbnN0cnVjdCBvZiBMb25naWRlbnQudCBsb2MgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIEMgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIEMgUCAgICAgICAgICAgICAgU29tZSBQXG4gICAgICAgICAgICAgQyAoUDEsIC4uLiwgUG4pICBTb21lIChQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgICAgICgqIGBBICAgICAgICAgICAgIChOb25lKVxuICAgICAgICAgICAgIGBBIFAgICAgICAgICAgIChTb21lIFApXG4gICAgICAgICAgICopXG4gICAgfCBQcGF0X3JlY29yZCBvZiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAgICAgKCogeyBsMT1QMTsgLi4uOyBsbj1QbiB9ICAgICAoZmxhZyA9IENsb3NlZClcbiAgICAgICAgICAgICB7IGwxPVAxOyAuLi47IGxuPVBuOyBffSAgIChmbGFnID0gT3BlbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBwYXRfYXJyYXkgb2YgcGF0dGVybiBsaXN0XG4gICAgICAgICAgKCogW3wgUDE7IC4uLjsgUG4gfF0gKilcbiAgICB8IFBwYXRfb3Igb2YgcGF0dGVybiAqIHBhdHRlcm5cbiAgICAgICAgICAoKiBQMSB8IFAyICopXG4gICAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZVxuICAgICAgICAgICgqIChQIDogVCkgKilcbiAgICB8IFBwYXRfdHlwZSBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiAjdGNvbnN0ICopXG4gICAgfCBQcGF0X2xhenkgb2YgcGF0dGVyblxuICAgICAgICAgICgqIGxhenkgUCAqKVxuICAgIHwgUHBhdF91bnBhY2sgb2Ygc3RyaW5nIGxvY1xuICAgICAgICAgICgqIChtb2R1bGUgUClcbiAgICAgICAgICAgICBOb3RlOiAobW9kdWxlIFAgOiBTKSBpcyByZXByZXNlbnRlZCBhc1xuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludChQcGF0X3VucGFjaywgUHR5cF9wYWNrYWdlKVxuICAgICAgICAgICAqKVxuICAgIHwgUHBhdF9leGNlcHRpb24gb2YgcGF0dGVyblxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBQICopXG4gICAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zICopXG5cbiAgYW5kIGV4cHJlc3Npb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4cHJlc3Npb24gKikgPVxuICAgICAge1xuICAgICAgIHBleHBfZGVzYzogZXhwcmVzc2lvbl9kZXNjO1xuICAgICAgIHBleHBfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBleHBfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAaWQxXSBbQGlkMl0gKilcbiAgICAgIH1cblxuICBhbmQgZXhwcmVzc2lvbl9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgKikgPVxuICAgIHwgUGV4cF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB4XG4gICAgICAgICAgICAgTS54XG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAgICAgKCogMSwgJ2EnLCBcInRydWVcIiwgMS4wLCAxbCwgMUwsIDFuICopXG4gICAgfCBQZXhwX2xldCBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdCAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEUgICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRSAgIChmbGFnID0gUmVjdXJzaXZlKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9mdW5jdGlvbiBvZiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBmdW5jdGlvbiBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX2Z1biBvZiBsYWJlbCAqIGV4cHJlc3Npb24gb3B0aW9uICogcGF0dGVybiAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBmdW4gUCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiXCIsIE5vbmUpXG4gICAgICAgICAgICAgZnVuIH5sOlAgLT4gRTEgICAgICAgICAgICAgICAgICAgICAgIChsYWIgPSBcImxcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6UCAtPiBFMSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gP2w6KFAgPSBFMCkgLT4gRTEgICAgICAgICAgICAgICAgKGxhYiA9IFwiP2xcIiwgU29tZSBFMClcblxuICAgICAgICAgICAgIE5vdGVzOlxuICAgICAgICAgICAgIC0gSWYgRTAgaXMgcHJvdmlkZWQsIGxhYiBtdXN0IHN0YXJ0IHdpdGggJz8nLlxuICAgICAgICAgICAgIC0gXCJmdW4gUDEgUDIgLi4gUG4gLT4gRTFcIiBpcyByZXByZXNlbnRlZCBhcyBuZXN0ZWQgUGV4cF9mdW4uXG4gICAgICAgICAgICAgLSBcImxldCBmIFAgPSBFXCIgaXMgcmVwcmVzZW50ZWQgdXNpbmcgUGV4cF9mdW4uXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAobGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogRTAgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiBtYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW4gKilcbiAgICB8IFBleHBfdHJ5IG9mIGV4cHJlc3Npb24gKiBjYXNlIGxpc3RcbiAgICAgICAgICAoKiB0cnkgRTAgd2l0aCBQMSAtPiBFMSB8IC4uLiB8IFBuIC0+IEVuICopXG4gICAgfCBQZXhwX3R1cGxlIG9mIGV4cHJlc3Npb24gbGlzdFxuICAgICAgICAgICgqIChFMSwgLi4uLCBFbilcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+PSAyXG4gICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RydWN0IG9mIExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogQyAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgQyBFICAgICAgICAgICAgICBTb21lIEVcbiAgICAgICAgICAgICBDIChFMSwgLi4uLCBFbikgIFNvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSlcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICAgICAoKiBgQSAgICAgICAgICAgICAoTm9uZSlcbiAgICAgICAgICAgICBgQSBFICAgICAgICAgICAoU29tZSBFKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9yZWNvcmQgb2YgKExvbmdpZGVudC50IGxvYyAqIGV4cHJlc3Npb24pIGxpc3QgKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgICAgICgqIHsgbDE9UDE7IC4uLjsgbG49UG4gfSAgICAgKE5vbmUpXG4gICAgICAgICAgICAgeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH0gICAoU29tZSBFMClcblxuICAgICAgICAgICAgIEludmFyaWFudDogbiA+IDBcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfZmllbGQgb2YgZXhwcmVzc2lvbiAqIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIEUubCAqKVxuICAgIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIEUxLmwgPC0gRTIgKilcbiAgICB8IFBleHBfYXJyYXkgb2YgZXhwcmVzc2lvbiBsaXN0XG4gICAgICAgICAgKCogW3wgRTE7IC4uLjsgRW4gfF0gKilcbiAgICB8IFBleHBfaWZ0aGVuZWxzZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAgICAgKCogaWYgRTEgdGhlbiBFMiBlbHNlIEUzICopXG4gICAgfCBQZXhwX3NlcXVlbmNlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogRTE7IEUyICopXG4gICAgfCBQZXhwX3doaWxlIG9mIGV4cHJlc3Npb24gKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogd2hpbGUgRTEgZG8gRTIgZG9uZSAqKVxuICAgIHwgUGV4cF9mb3Igb2ZcbiAgICAgICAgcGF0dGVybiAqICBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGZvciBpID0gRTEgdG8gRTIgZG8gRTMgZG9uZSAgICAgIChmbGFnID0gVXB0bylcbiAgICAgICAgICAgICBmb3IgaSA9IEUxIGRvd250byBFMiBkbyBFMyBkb25lICAoZmxhZyA9IERvd250bylcbiAgICAgICAgICAgKilcbiAgICB8IFBleHBfY29uc3RyYWludCBvZiBleHByZXNzaW9uICogY29yZV90eXBlXG4gICAgICAgICAgKCogKEUgOiBUKSAqKVxuICAgIHwgUGV4cF9jb2VyY2Ugb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb24gKiBjb3JlX3R5cGVcbiAgICAgICAgICAoKiAoRSA6PiBUKSAgICAgICAgKE5vbmUsIFQpXG4gICAgICAgICAgICAgKEUgOiBUMCA6PiBUKSAgIChTb21lIFQwLCBUKVxuICAgICAgICAgICAqKVxuICAgIHwgUGV4cF9zZW5kIG9mIGV4cHJlc3Npb24gKiBzdHJpbmdcbiAgICAgICAgICAoKiAgRSAjIG0gKilcbiAgICB8IFBleHBfbmV3IG9mIExvbmdpZGVudC50IGxvY1xuICAgICAgICAgICgqIG5ldyBNLmMgKilcbiAgICB8IFBleHBfc2V0aW5zdHZhciBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIHggPC0gMiAqKVxuICAgIHwgUGV4cF9vdmVycmlkZSBvZiAoc3RyaW5nIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICAgICAoKiB7PCB4MSA9IEUxOyAuLi47IFhuID0gRW4gPn0gKilcbiAgICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfZXhwciAqIGV4cHJlc3Npb25cbiAgICAgICAgICAoKiBsZXQgbW9kdWxlIE0gPSBNRSBpbiBFICopXG4gICAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAgICAgKCogYXNzZXJ0IEVcbiAgICAgICAgICAgICBOb3RlOiBcImFzc2VydCBmYWxzZVwiIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGVcbiAgICAgICAgICAgICB0eXBlLWNoZWNrZXIuICopXG4gICAgfCBQZXhwX2xhenkgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxhenkgRSAqKVxuICAgIHwgUGV4cF9wb2x5IG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uXG4gICAgICAgICAgKCogVXNlZCBmb3IgbWV0aG9kIGJvZGllcy5cblxuICAgICAgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgYXMgdGhlIGV4cHJlc3Npb24gdW5kZXIgQ2ZrX2NvbmNyZXRlXG4gICAgICAgICAgICAgZm9yIG1ldGhvZHMgKG5vdCB2YWx1ZXMpLiAqKVxuICAgIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlXG4gICAgICAgICAgKCogb2JqZWN0IC4uLiBlbmQgKilcbiAgICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgKiBleHByZXNzaW9uXG4gICAgICAgICAgKCogZnVuICh0eXBlIHQpIC0+IEUgKilcbiAgICB8IFBleHBfcGFjayBvZiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIChtb2R1bGUgTUUpXG5cbiAgICAgICAgICAgICAobW9kdWxlIE1FIDogUykgaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICAgICBQZXhwX2NvbnN0cmFpbnQoUGV4cF9wYWNrLCBQdHlwX3BhY2thZ2UgUykgKilcbiAgICB8IFBleHBfb3BlbiBvZiBvdmVycmlkZV9mbGFnICogTG9uZ2lkZW50LnQgbG9jICogZXhwcmVzc2lvblxuICAgICAgICAgICgqIGxldCBvcGVuIE0gaW4gRVxuICAgICAgICAgICAgIGxldCEgb3BlbiBNIGluIEVcbiAgICAgICAgICAqKVxuICAgIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcblxuICBhbmQgY2FzZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2FzZSAqKSA9ICAgKCogKFAgLT4gRSkgb3IgKFAgd2hlbiBFMCAtPiBFKSAqKVxuICAgICAge1xuICAgICAgIHBjX2xoczogcGF0dGVybjtcbiAgICAgICBwY19ndWFyZDogZXhwcmVzc2lvbiBvcHRpb247XG4gICAgICAgcGNfcmhzOiBleHByZXNzaW9uO1xuICAgICAgfVxuXG4gICgqIFZhbHVlIGRlc2NyaXB0aW9ucyAqKVxuXG4gIGFuZCB2YWx1ZV9kZXNjcmlwdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB2YWxfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwdmFsX3R5cGU6IGNvcmVfdHlwZTtcbiAgICAgICBwdmFsX3ByaW06IHN0cmluZyBsaXN0O1xuICAgICAgIHB2YWxfYXR0cmlidXRlczogYXR0cmlidXRlczsgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdmFsX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cblxuICAoKlxuICAgIHZhbCB4OiBUICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmltID0gW10pXG4gICAgZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICAgICAgIChwcmltID0gW1wiczFcIjsuLi5cInNuXCJdKVxuXG4gICAgTm90ZTogd2hlbiB1c2VkIHVuZGVyIFBzdHJfcHJpbWl0aXZlLCBwcmltIGNhbm5vdCBiZSBlbXB0eVxuICAqKVxuXG4gICgqIFR5cGUgZGVjbGFyYXRpb25zICopXG5cbiAgYW5kIHR5cGVfZGVjbGFyYXRpb24gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHB0eXBlX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcHR5cGVfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgICAgICAgKCogKCdhMSwuLi4nYW4pIHQ7IE5vbmUgcmVwcmVzZW50cyAgXyopXG4gICAgICAgcHR5cGVfY3N0cnM6IChjb3JlX3R5cGUgKiBjb3JlX3R5cGUgKiBMb2NhdGlvbi50KSBsaXN0O1xuICAgICAgICAgICAgICgqIC4uLiBjb25zdHJhaW50IFQxPVQxJyAgLi4uIGNvbnN0cmFpbnQgVG49VG4nICopXG4gICAgICAgcHR5cGVfa2luZDogdHlwZV9raW5kO1xuICAgICAgIHB0eXBlX3ByaXZhdGU6IHByaXZhdGVfZmxhZzsgICAoKiA9IHByaXZhdGUgLi4uICopXG4gICAgICAgcHR5cGVfbWFuaWZlc3Q6IGNvcmVfdHlwZSBvcHRpb247ICAoKiA9IFQgKilcbiAgICAgICBwdHlwZV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAgICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwdHlwZV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgKCpcbiAgICB0eXBlIHQgICAgICAgICAgICAgICAgICAgICAoYWJzdHJhY3QsIG5vIG1hbmlmZXN0KVxuICAgIHR5cGUgdCA9IFQwICAgICAgICAgICAgICAgIChhYnN0cmFjdCwgbWFuaWZlc3Q9VDApXG4gICAgdHlwZSB0ID0gQyBvZiBUIHwgLi4uICAgICAgKHZhcmlhbnQsICBubyBtYW5pZmVzdClcbiAgICB0eXBlIHQgPSBUMCA9IEMgb2YgVCB8IC4uLiAodmFyaWFudCwgIG1hbmlmZXN0PVQwKVxuICAgIHR5cGUgdCA9IHtsOiBUOyAuLi59ICAgICAgIChyZWNvcmQsICAgbm8gbWFuaWZlc3QpXG4gICAgdHlwZSB0ID0gVDAgPSB7bCA6IFQ7IC4uLn0gKHJlY29yZCwgICBtYW5pZmVzdD1UMClcbiAgICB0eXBlIHQgPSAuLiAgICAgICAgICAgICAgICAob3BlbiwgICAgIG5vIG1hbmlmZXN0KVxuICAqKVxuXG4gIGFuZCB0eXBlX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnR5cGVfa2luZCAqKSA9XG4gICAgfCBQdHlwZV9hYnN0cmFjdFxuICAgIHwgUHR5cGVfdmFyaWFudCBvZiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICAgIHwgUHR5cGVfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBJbnZhcmlhbnQ6IG5vbi1lbXB0eSBsaXN0ICopXG4gICAgfCBQdHlwZV9vcGVuXG5cbiAgYW5kIGxhYmVsX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGxkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGxkX211dGFibGU6IG11dGFibGVfZmxhZztcbiAgICAgICBwbGRfdHlwZTogY29yZV90eXBlO1xuICAgICAgIHBsZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGxkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIGwgW0BpZDFdIFtAaWQyXSA6IFQgKilcbiAgICAgIH1cblxuICAoKiAgeyAuLi47IGw6IFQ7IC4uLiB9ICAgICAgICAgICAgKG11dGFibGU9SW1tdXRhYmxlKVxuICAgICAgeyAuLi47IG11dGFibGUgbDogVDsgLi4uIH0gICAgKG11dGFibGU9TXV0YWJsZSlcblxuICAgICAgTm90ZTogVCBjYW4gYmUgYSBQdHlwX3BvbHkuXG4gICopXG5cbiAgYW5kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcGNkX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNkX2FyZ3M6IGNvcmVfdHlwZSBsaXN0O1xuICAgICAgIHBjZF9yZXM6IGNvcmVfdHlwZSBvcHRpb247XG4gICAgICAgcGNkX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY2RfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogQyBbQGlkMV0gW0BpZDJdIG9mIC4uLiAqKVxuICAgICAgfVxuICAoKlxuICAgIHwgQyBvZiBUMSAqIC4uLiAqIFRuICAgICAocmVzID0gTm9uZSlcbiAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKGFyZ3MgPSBbXSwgcmVzID0gU29tZSBUMClcbiAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKHJlcyA9IFNvbWUgVDApXG4gICopXG5cbiAgYW5kIHR5cGVfZXh0ZW5zaW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAqKSA9XG4gICAgICB7XG4gICAgICAgcHR5ZXh0X3BhdGg6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwdHlleHRfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9yczogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gICAgICAgcHR5ZXh0X3ByaXZhdGU6IHByaXZhdGVfZmxhZztcbiAgICAgICBwdHlleHRfYXR0cmlidXRlczogYXR0cmlidXRlczsgICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqXG4gICAgdHlwZSB0ICs9IC4uLlxuICAqKVxuXG4gIGFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqKSA9XG4gICAgICB7XG4gICAgICAgcGV4dF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBleHRfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kO1xuICAgICAgIHBleHRfbG9jIDogTG9jYXRpb24udDtcbiAgICAgICBwZXh0X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIEMgW0BpZDFdIFtAaWQyXSBvZiAuLi4gKilcbiAgICAgIH1cblxuICBhbmQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kICopID1cbiAgICAgIFBleHRfZGVjbCBvZiBjb3JlX3R5cGUgbGlzdCAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICAgKCpcbiAgICAgICAgICAgfCBDIG9mIFQxICogLi4uICogVG4gICAgIChbVDE7IC4uLjsgVG5dLCBOb25lKVxuICAgICAgICAgICB8IEM6IFQwICAgICAgICAgICAgICAgICAgKFtdLCBTb21lIFQwKVxuICAgICAgICAgICB8IEM6IFQxICogLi4uICogVG4gLT4gVDAgKFtUMTsgLi4uOyBUbl0sIFNvbWUgVDApXG4gICAgICAgICAqKVxuICAgIHwgUGV4dF9yZWJpbmQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICgqXG4gICAgICAgICAgIHwgQyA9IERcbiAgICAgICAgICopXG5cbiAgKCoqIHsyIENsYXNzIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBjbGFzcyBsYW5ndWFnZSAqKVxuXG4gIGFuZCBjbGFzc190eXBlICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5jbGFzc190eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwY3R5X2Rlc2M6IGNsYXNzX3R5cGVfZGVzYztcbiAgICAgICBwY3R5X2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwY3R5X2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjICopID1cbiAgICB8IFBjdHlfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY3R5X3NpZ25hdHVyZSBvZiBjbGFzc19zaWduYXR1cmVcbiAgICAgICAgICAoKiBvYmplY3QgLi4uIGVuZCAqKVxuICAgIHwgUGN0eV9hcnJvdyBvZiBsYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICAgICAoKiBUIC0+IENUICAgICAgIChsYWJlbCA9IFwiXCIpXG4gICAgICAgICAgICAgfmw6VCAtPiBDVCAgICAobGFiZWwgPSBcImxcIilcbiAgICAgICAgICAgICA/bDpUIC0+IENUICAgIChsYWJlbCA9IFwiP2xcIilcbiAgICAgICAgICAgKilcbiAgICB8IFBjdHlfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIGNsYXNzX3NpZ25hdHVyZSAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlICopID1cbiAgICAgIHtcbiAgICAgICBwY3NpZ19zZWxmOiBjb3JlX3R5cGU7XG4gICAgICAgcGNzaWdfZmllbGRzOiBjbGFzc190eXBlX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdCgnc2VsZnBhdCkgLi4uIGVuZFxuICAgICBvYmplY3QgLi4uIGVuZCAgICAgICAgICAgICAoc2VsZiA9IFB0eXBfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfdHlwZV9maWVsZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCAqKSA9XG4gICAgICB7XG4gICAgICAgcGN0Zl9kZXNjOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gICAgICAgcGN0Zl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGN0Zl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjICopID1cbiAgICB8IFBjdGZfaW5oZXJpdCBvZiBjbGFzc190eXBlXG4gICAgICAgICAgKCogaW5oZXJpdCBDVCAqKVxuICAgIHwgUGN0Zl92YWwgb2YgKHN0cmluZyAqIG11dGFibGVfZmxhZyAqIHZpcnR1YWxfZmxhZyAqIGNvcmVfdHlwZSlcbiAgICAgICAgICAoKiB2YWwgeDogVCAqKVxuICAgIHwgUGN0Zl9tZXRob2QgIG9mIChzdHJpbmcgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogbWV0aG9kIHg6IFRcblxuICAgICAgICAgICAgIE5vdGU6IFQgY2FuIGJlIGEgUHR5cF9wb2x5LlxuICAgICAgICAgICAqKVxuICAgIHwgUGN0Zl9jb25zdHJhaW50ICBvZiAoY29yZV90eXBlICogY29yZV90eXBlKVxuICAgICAgICAgICgqIGNvbnN0cmFpbnQgVDEgPSBUMiAqKVxuICAgIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kICdhIGNsYXNzX2luZm9zICgqSUZfQ1VSUkVOVCA9ICdhIFBhcnNldHJlZS5jbGFzc19pbmZvcyAqKSA9XG4gICAgICB7XG4gICAgICAgcGNpX3ZpcnQ6IHZpcnR1YWxfZmxhZztcbiAgICAgICBwY2lfcGFyYW1zOiAoY29yZV90eXBlICogdmFyaWFuY2UpIGxpc3Q7XG4gICAgICAgcGNpX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcGNpX2V4cHI6ICdhO1xuICAgICAgIHBjaV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcGNpX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG4gICgqIGNsYXNzIGMgPSAuLi5cbiAgICAgY2xhc3MgWydhMSwuLi4sJ2FuXSBjID0gLi4uXG4gICAgIGNsYXNzIHZpcnR1YWwgYyA9IC4uLlxuXG4gICAgIEFsc28gdXNlZCBmb3IgXCJjbGFzcyB0eXBlXCIgZGVjbGFyYXRpb24uXG4gICopXG5cbiAgYW5kIGNsYXNzX2Rlc2NyaXB0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gIGFuZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uID0gY2xhc3NfdHlwZSBjbGFzc19pbmZvc1xuXG4gICgqIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2UgKilcblxuICBhbmQgY2xhc3NfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZXhwciAqKSA9XG4gICAgICB7XG4gICAgICAgcGNsX2Rlc2M6IGNsYXNzX2V4cHJfZGVzYztcbiAgICAgICBwY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjbF9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBjbGFzc19leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyAqKSA9XG4gICAgfCBQY2xfY29uc3RyIG9mIExvbmdpZGVudC50IGxvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAgICAgKCogY1xuICAgICAgICAgICAgIFsnYTEsIC4uLiwgJ2FuXSBjICopXG4gICAgfCBQY2xfc3RydWN0dXJlIG9mIGNsYXNzX3N0cnVjdHVyZVxuICAgICAgICAgICgqIG9iamVjdCAuLi4gZW5kICopXG4gICAgfCBQY2xfZnVuIG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGZ1biBQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCJcIiwgTm9uZSlcbiAgICAgICAgICAgICBmdW4gfmw6UCAtPiBDRSAgICAgICAgICAgICAgICAgICAgICAgKGxhYiA9IFwibFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDpQIC0+IENFICAgICAgICAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBOb25lKVxuICAgICAgICAgICAgIGZ1biA/bDooUCA9IEUwKSAtPiBDRSAgICAgICAgICAgICAgICAobGFiID0gXCI/bFwiLCBTb21lIEUwKVxuICAgICAgICAgICAqKVxuICAgIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAobGFiZWwgKiBleHByZXNzaW9uKSBsaXN0XG4gICAgICAgICAgKCogQ0UgfmwxOkUxIC4uLiB+bG46RW5cbiAgICAgICAgICAgICBsaSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvciBzdGFydCB3aXRoICc/J1xuICAgICAgICAgICAgIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICAgICBJbnZhcmlhbnQ6IG4gPiAwXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0UgICAgICAoZmxhZyA9IE5vbnJlY3Vyc2l2ZSlcbiAgICAgICAgICAgICBsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBpbiBDRSAgKGZsYWcgPSBSZWN1cnNpdmUpXG4gICAgICAgICAgICopXG4gICAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZVxuICAgICAgICAgICgqIChDRSA6IENUKSAqKVxuICAgIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJWlkXSAqKVxuXG4gIGFuZCBjbGFzc19zdHJ1Y3R1cmUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX3N0cnVjdHVyZSAqKSA9XG4gICAgICB7XG4gICAgICAgcGNzdHJfc2VsZjogcGF0dGVybjtcbiAgICAgICBwY3N0cl9maWVsZHM6IGNsYXNzX2ZpZWxkIGxpc3Q7XG4gICAgICB9XG4gICgqIG9iamVjdChzZWxmcGF0KSAuLi4gZW5kXG4gICAgIG9iamVjdCAuLi4gZW5kICAgICAgICAgICAoc2VsZiA9IFBwYXRfYW55KVxuICAgKilcblxuICBhbmQgY2xhc3NfZmllbGQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkICopID1cbiAgICAgIHtcbiAgICAgICBwY2ZfZGVzYzogY2xhc3NfZmllbGRfZGVzYztcbiAgICAgICBwY2ZfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBjZl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIGNsYXNzX2ZpZWxkX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgKikgPVxuICAgIHwgUGNmX2luaGVyaXQgb2Ygb3ZlcnJpZGVfZmxhZyAqIGNsYXNzX2V4cHIgKiBzdHJpbmcgb3B0aW9uXG4gICAgICAgICAgKCogaW5oZXJpdCBDRVxuICAgICAgICAgICAgIGluaGVyaXQgQ0UgYXMgeFxuICAgICAgICAgICAgIGluaGVyaXQhIENFXG4gICAgICAgICAgICAgaW5oZXJpdCEgQ0UgYXMgeFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX3ZhbCBvZiAoc3RyaW5nIGxvYyAqIG11dGFibGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogdmFsIHggPSBFXG4gICAgICAgICAgICAgdmFsIHZpcnR1YWwgeDogVFxuICAgICAgICAgICAqKVxuICAgIHwgUGNmX21ldGhvZCBvZiAoc3RyaW5nIGxvYyAqIHByaXZhdGVfZmxhZyAqIGNsYXNzX2ZpZWxkX2tpbmQpXG4gICAgICAgICAgKCogbWV0aG9kIHggPSBFICAgICAgICAgICAgKEUgY2FuIGJlIGEgUGV4cF9wb2x5KVxuICAgICAgICAgICAgIG1ldGhvZCB2aXJ0dWFsIHg6IFQgICAgIChUIGNhbiBiZSBhIFB0eXBfcG9seSlcbiAgICAgICAgICAgKilcbiAgICB8IFBjZl9jb25zdHJhaW50IG9mIChjb3JlX3R5cGUgKiBjb3JlX3R5cGUpXG4gICAgICAgICAgKCogY29uc3RyYWludCBUMSA9IFQyICopXG4gICAgfCBQY2ZfaW5pdGlhbGl6ZXIgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqIGluaXRpYWxpemVyIEUgKilcbiAgICB8IFBjZl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlXG4gICAgICAgICAgKCogW0BAQGlkXSAqKVxuICAgIHwgUGNmX2V4dGVuc2lvbiBvZiBleHRlbnNpb25cbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgY2xhc3NfZmllbGRfa2luZCAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAqKSA9XG4gICAgfCBDZmtfdmlydHVhbCBvZiBjb3JlX3R5cGVcbiAgICB8IENma19jb25jcmV0ZSBvZiBvdmVycmlkZV9mbGFnICogZXhwcmVzc2lvblxuXG4gIGFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuICAoKiogezIgTW9kdWxlIGxhbmd1YWdlfSAqKVxuXG4gICgqIFR5cGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBtb2R1bGUgbGFuZ3VhZ2UgKilcblxuICBhbmQgbW9kdWxlX3R5cGUgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV90eXBlICopID1cbiAgICAgIHtcbiAgICAgICBwbXR5X2Rlc2M6IG1vZHVsZV90eXBlX2Rlc2M7XG4gICAgICAgcG10eV9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG10eV9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzOyAoKiAuLi4gW0BpZDFdIFtAaWQyXSAqKVxuICAgICAgfVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjICopID1cbiAgICB8IFBtdHlfaWRlbnQgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogUyAqKVxuICAgIHwgUG10eV9zaWduYXR1cmUgb2Ygc2lnbmF0dXJlXG4gICAgICAgICAgKCogc2lnIC4uLiBlbmQgKilcbiAgICB8IFBtdHlfZnVuY3RvciBvZiBzdHJpbmcgbG9jICogbW9kdWxlX3R5cGUgb3B0aW9uICogbW9kdWxlX3R5cGVcbiAgICAgICAgICAoKiBmdW5jdG9yKFggOiBNVDEpIC0+IE1UMiAqKVxuICAgIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3RcbiAgICAgICAgICAoKiBNVCB3aXRoIC4uLiAqKVxuICAgIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHJcbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBvZiBNRSAqKVxuICAgIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uXG4gICAgICAgICAgKCogWyVpZF0gKilcbiAgICB8IFBtdHlfYWxpYXMgb2YgTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogKG1vZHVsZSBNKSAqKVxuXG4gIGFuZCBzaWduYXR1cmUgPSBzaWduYXR1cmVfaXRlbSBsaXN0XG5cbiAgYW5kIHNpZ25hdHVyZV9pdGVtICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAqKSA9XG4gICAgICB7XG4gICAgICAgcHNpZ19kZXNjOiBzaWduYXR1cmVfaXRlbV9kZXNjO1xuICAgICAgIHBzaWdfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgfVxuXG4gIGFuZCBzaWduYXR1cmVfaXRlbV9kZXNjICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjICopID1cbiAgICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAoKlxuICAgICAgICAgICAgdmFsIHg6IFRcbiAgICAgICAgICAgIGV4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIlxuICAgICAgICAgICAqKVxuICAgIHwgUHNpZ190eXBlIG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIHR5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uXG4gICAgICAgICAgKCogdHlwZSB0MSArPSAuLi4gKilcbiAgICB8IFBzaWdfZXhjZXB0aW9uIG9mIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICAgICgqIGV4Y2VwdGlvbiBDIG9mIFQgKilcbiAgICB8IFBzaWdfbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICAgICgqIG1vZHVsZSBYIDogTVQgKilcbiAgICB8IFBzaWdfcmVjbW9kdWxlIG9mIG1vZHVsZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1UbiAqKVxuICAgIHwgUHNpZ19tb2R0eXBlIG9mIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgICAgKCogbW9kdWxlIHR5cGUgUyA9IE1UXG4gICAgICAgICAgICAgbW9kdWxlIHR5cGUgUyAqKVxuICAgIHwgUHNpZ19vcGVuIG9mIG9wZW5fZGVzY3JpcHRpb25cbiAgICAgICAgICAoKiBvcGVuIFggKilcbiAgICB8IFBzaWdfaW5jbHVkZSBvZiBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogaW5jbHVkZSBNVCAqKVxuICAgIHwgUHNpZ19jbGFzcyBvZiBjbGFzc19kZXNjcmlwdGlvbiBsaXN0XG4gICAgICAgICAgKCogY2xhc3MgYzEgOiAuLi4gYW5kIC4uLiBhbmQgY24gOiAuLi4gKilcbiAgICB8IFBzaWdfY2xhc3NfdHlwZSBvZiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi4gKilcbiAgICB8IFBzaWdfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZVxuICAgICAgICAgICgqIFtAQEBpZF0gKilcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXNcbiAgICAgICAgICAoKiBbJSVpZF0gKilcblxuICBhbmQgbW9kdWxlX2RlY2xhcmF0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtZF9uYW1lOiBzdHJpbmcgbG9jO1xuICAgICAgIHBtZF90eXBlOiBtb2R1bGVfdHlwZTtcbiAgICAgICBwbWRfYXR0cmlidXRlczogYXR0cmlidXRlczsgKCogLi4uIFtAQGlkMV0gW0BAaWQyXSAqKVxuICAgICAgIHBtZF9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFMgOiBNVCAqKVxuXG4gIGFuZCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gKikgPVxuICAgICAge1xuICAgICAgIHBtdGRfbmFtZTogc3RyaW5nIGxvYztcbiAgICAgICBwbXRkX3R5cGU6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgICAgICBwbXRkX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQEBpZDFdIFtAQGlkMl0gKilcbiAgICAgICBwbXRkX2xvYzogTG9jYXRpb24udDtcbiAgICAgIH1cbiAgKCogUyA9IE1UXG4gICAgIFMgICAgICAgKGFic3RyYWN0IG1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uLCBwbXRkX3R5cGUgPSBOb25lKVxuICAqKVxuXG4gIGFuZCBvcGVuX2Rlc2NyaXB0aW9uICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5vcGVuX2Rlc2NyaXB0aW9uICopID1cbiAgICAgIHtcbiAgICAgICBwb3Blbl9saWQ6IExvbmdpZGVudC50IGxvYztcbiAgICAgICBwb3Blbl9vdmVycmlkZTogb3ZlcnJpZGVfZmxhZztcbiAgICAgICBwb3Blbl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICAgcG9wZW5fYXR0cmlidXRlczogYXR0cmlidXRlcztcbiAgICAgIH1cbiAgKCogb3BlbiEgWCAtIHBvcGVuX292ZXJyaWRlID0gT3ZlcnJpZGUgKHNpbGVuY2VzIHRoZSAndXNlZCBpZGVudGlmaWVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd2luZycgd2FybmluZylcbiAgICAgb3BlbiAgWCAtIHBvcGVuX292ZXJyaWRlID0gRnJlc2hcbiAgICopXG5cbiAgYW5kICdhIGluY2x1ZGVfaW5mb3MgKCpJRl9DVVJSRU5UID0gJ2EgUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgKikgPVxuICAgICAge1xuICAgICAgIHBpbmNsX21vZDogJ2E7XG4gICAgICAgcGluY2xfbG9jOiBMb2NhdGlvbi50O1xuICAgICAgIHBpbmNsX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7XG4gICAgICB9XG5cbiAgYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4gICgqIGluY2x1ZGUgTVQgKilcblxuICBhbmQgaW5jbHVkZV9kZWNsYXJhdGlvbiA9IG1vZHVsZV9leHByIGluY2x1ZGVfaW5mb3NcbiAgKCogaW5jbHVkZSBNRSAqKVxuXG4gIGFuZCB3aXRoX2NvbnN0cmFpbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAqKSA9XG4gICAgfCBQd2l0aF90eXBlIG9mIExvbmdpZGVudC50IGxvYyAqIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgWC50ID0gLi4uXG5cbiAgICAgICAgICAgICBOb3RlOiB0aGUgbGFzdCBjb21wb25lbnQgb2YgdGhlIGxvbmdpZGVudCBtdXN0IG1hdGNoXG4gICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHR5cGVfZGVjbGFyYXRpb24uICopXG4gICAgfCBQd2l0aF9tb2R1bGUgb2YgTG9uZ2lkZW50LnQgbG9jICogTG9uZ2lkZW50LnQgbG9jXG4gICAgICAgICAgKCogd2l0aCBtb2R1bGUgWC5ZID0gWiAqKVxuICAgIHwgUHdpdGhfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiB3aXRoIHR5cGUgdCA6PSAuLi4gKilcbiAgICB8IFB3aXRoX21vZHN1YnN0IG9mIHN0cmluZyBsb2MgKiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiB3aXRoIG1vZHVsZSBYIDo9IFogKilcblxuICAoKiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG4gIGFuZCBtb2R1bGVfZXhwciAoKklGX0NVUlJFTlQgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHIgKikgPVxuICAgICAge1xuICAgICAgIHBtb2RfZGVzYzogbW9kdWxlX2V4cHJfZGVzYztcbiAgICAgICBwbW9kX2xvYzogTG9jYXRpb24udDtcbiAgICAgICBwbW9kX2F0dHJpYnV0ZXM6IGF0dHJpYnV0ZXM7ICgqIC4uLiBbQGlkMV0gW0BpZDJdICopXG4gICAgICB9XG5cbiAgYW5kIG1vZHVsZV9leHByX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLm1vZHVsZV9leHByX2Rlc2MgKikgPVxuICAgIHwgUG1vZF9pZGVudCBvZiBMb25naWRlbnQudCBsb2NcbiAgICAgICAgICAoKiBYICopXG4gICAgfCBQbW9kX3N0cnVjdHVyZSBvZiBzdHJ1Y3R1cmVcbiAgICAgICAgICAoKiBzdHJ1Y3QgLi4uIGVuZCAqKVxuICAgIHwgUG1vZF9mdW5jdG9yIG9mIHN0cmluZyBsb2MgKiBtb2R1bGVfdHlwZSBvcHRpb24gKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIGZ1bmN0b3IoWCA6IE1UMSkgLT4gTUUgKilcbiAgICB8IFBtb2RfYXBwbHkgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfZXhwclxuICAgICAgICAgICgqIE1FMShNRTIpICopXG4gICAgfCBQbW9kX2NvbnN0cmFpbnQgb2YgbW9kdWxlX2V4cHIgKiBtb2R1bGVfdHlwZVxuICAgICAgICAgICgqIChNRSA6IE1UKSAqKVxuICAgIHwgUG1vZF91bnBhY2sgb2YgZXhwcmVzc2lvblxuICAgICAgICAgICgqICh2YWwgRSkgKilcbiAgICB8IFBtb2RfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblxuICAgICAgICAgICgqIFslaWRdICopXG5cbiAgYW5kIHN0cnVjdHVyZSA9IHN0cnVjdHVyZV9pdGVtIGxpc3RcblxuICBhbmQgc3RydWN0dXJlX2l0ZW0gKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtICopID1cbiAgICAgIHtcbiAgICAgICBwc3RyX2Rlc2M6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gICAgICAgcHN0cl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG5cbiAgYW5kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgKikgPVxuICAgIHwgUHN0cl9ldmFsIG9mIGV4cHJlc3Npb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogRSAqKVxuICAgIHwgUHN0cl92YWx1ZSBvZiByZWNfZmxhZyAqIHZhbHVlX2JpbmRpbmcgbGlzdFxuICAgICAgICAgICgqIGxldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAgICAgKGZsYWcgPSBOb25yZWN1cnNpdmUpXG4gICAgICAgICAgICAgbGV0IHJlYyBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gICAoZmxhZyA9IFJlY3Vyc2l2ZSlcbiAgICAgICAgICAgKilcbiAgICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiICopXG4gICAgfCBQc3RyX3R5cGUgb2YgdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAgICAgKCogdHlwZSB0MSA9IC4uLiBhbmQgLi4uIGFuZCB0biA9IC4uLiAqKVxuICAgIHwgUHN0cl90eXBleHQgb2YgdHlwZV9leHRlbnNpb25cbiAgICAgICAgICAoKiB0eXBlIHQxICs9IC4uLiAqKVxuICAgIHwgUHN0cl9leGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgKCogZXhjZXB0aW9uIEMgb2YgVFxuICAgICAgICAgICAgIGV4Y2VwdGlvbiBDID0gTS5YICopXG4gICAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZ1xuICAgICAgICAgICgqIG1vZHVsZSBYID0gTUUgKilcbiAgICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICAgICAoKiBtb2R1bGUgcmVjIFgxID0gTUUxIGFuZCAuLi4gYW5kIFhuID0gTUVuICopXG4gICAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBtb2R1bGUgdHlwZSBTID0gTVQgKilcbiAgICB8IFBzdHJfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgKCogb3BlbiBYICopXG4gICAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICAgICAoKiBjbGFzcyBjMSA9IC4uLiBhbmQgLi4uIGFuZCBjbiA9IC4uLiAqKVxuICAgIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgICAgICgqIGNsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLiAqKVxuICAgIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgICAoKiBpbmNsdWRlIE1FICopXG4gICAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVcbiAgICAgICAgICAoKiBbQEBAaWRdICopXG4gICAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzXG4gICAgICAgICAgKCogWyUlaWRdICopXG5cbiAgYW5kIHZhbHVlX2JpbmRpbmcgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgKikgPVxuICAgIHtcbiAgICAgIHB2Yl9wYXQ6IHBhdHRlcm47XG4gICAgICBwdmJfZXhwcjogZXhwcmVzc2lvbjtcbiAgICAgIHB2Yl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgcHZiX2xvYzogTG9jYXRpb24udDtcbiAgICB9XG5cbiAgYW5kIG1vZHVsZV9iaW5kaW5nICgqSUZfQ1VSUkVOVCA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyAqKSA9XG4gICAgICB7XG4gICAgICAgcG1iX25hbWU6IHN0cmluZyBsb2M7XG4gICAgICAgcG1iX2V4cHI6IG1vZHVsZV9leHByO1xuICAgICAgIHBtYl9hdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzO1xuICAgICAgIHBtYl9sb2M6IExvY2F0aW9uLnQ7XG4gICAgICB9XG4gICgqIFggPSBNRSAqKVxuXG4gICgqKiB7MiBUb3BsZXZlbH0gKilcblxuICAoKiBUb3BsZXZlbCBwaHJhc2VzICopXG5cbiAgdHlwZSB0b3BsZXZlbF9waHJhc2UgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSAqKSA9XG4gICAgfCBQdG9wX2RlZiBvZiBzdHJ1Y3R1cmVcbiAgICB8IFB0b3BfZGlyIG9mIHN0cmluZyAqIGRpcmVjdGl2ZV9hcmd1bWVudFxuICAgICAgICgqICN1c2UsICNsb2FkIC4uLiAqKVxuXG4gIGFuZCBkaXJlY3RpdmVfYXJndW1lbnQgKCpJRl9DVVJSRU5UID0gUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAqKSA9XG4gICAgfCBQZGlyX25vbmVcbiAgICB8IFBkaXJfc3RyaW5nIG9mIHN0cmluZ1xuICAgIHwgUGRpcl9pbnQgb2YgaW50XG4gICAgfCBQZGlyX2lkZW50IG9mIExvbmdpZGVudC50XG4gICAgfCBQZGlyX2Jvb2wgb2YgYm9vbFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGFzdF9pbXBsX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlNMDE2XCJcbiAgbGV0IGFzdF9pbnRmX21hZ2ljX251bWJlciA9IFwiQ2FtbDE5OTlOMDE1XCJcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwM1xubW9kdWxlIFRvID0gQXN0XzQwMlxuXG5sZXQgaW5qZWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgZCA9XG4gIGxldCBvcGVuIFRvIGluXG4gIGxldCBvcGVuIFBhcnNldHJlZSBpblxuICBtYXRjaCBsYWJlbCB3aXRoXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcHRpb25hbCBfIC0+XG4gICAgICBsZXQgbG9jID0geyBkLnB0eXBfbG9jIHdpdGggTG9jYXRpb24ubG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBsZXQgdHh0ID0gTG9uZ2lkZW50Lkxkb3QgKExvbmdpZGVudC5MaWRlbnQgXCIqcHJlZGVmKlwiLCBcIm9wdGlvblwiKSBpblxuICAgICAgbGV0IGlkZW50ID0geyBMb2NhdGlvbi50eHQ7IGxvYyB9IGluXG4gICAgICB7XG4gICAgICAgIHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZGVudCwgWyBkIF0pO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICB9XG4gIHwgXyAtPiBkXG5cbmxldCBmcm9tX2xvYyB7IExvY2F0aW9uLnR4dCA9IF87IGxvYyB9ID0gbG9jXG5cbmxldCBtaWdyYXRpb25fZXJyb3IgbG9jIG1pc3NpbmdfZmVhdHVyZSA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgXCJtaWdyYXRpb24gZXJyb3I6ICVzIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9DYW1sIDQuMDNcIiBtaXNzaW5nX2ZlYXR1cmVcblxubGV0IHJlYyBjb3B5X2V4cHJlc3Npb24gOiBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uIC0+IFRvLlBhcnNldHJlZS5leHByZXNzaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2Rlc2MgPSBjb3B5X2V4cHJlc3Npb25fZGVzYyBwZXhwX2xvYyBwZXhwX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfbG9jID0gY29weV9sb2NhdGlvbiBwZXhwX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9leHByZXNzaW9uX2Rlc2MgbG9jIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IGxvYyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldFxuICAgICAgICAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZnVuY3Rpb24gKExpc3QubWFwIGNvcHlfY2FzZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5cbiAgICAgICAgKCBjb3B5X2FyZ19sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9wYXR0ZXJuIHgyLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcHBseSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXBwbHlcbiAgICAgICAgKCBjb3B5X2V4cHJlc3Npb24geDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbWF0Y2ggKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF90cnkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgTGlzdC5tYXAgY29weV9jYXNlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZmllbGQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZpZWxkIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZFxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSwgY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2FycmF5IChMaXN0Lm1hcCBjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWZ0aGVuZWxzZVxuICAgICAgICAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXF1ZW5jZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfd2hpbGUgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mb3JcbiAgICAgICAgKCBjb3B5X3BhdHRlcm4geDAsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgxLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4MixcbiAgICAgICAgICBjb3B5X2RpcmVjdGlvbl9mbGFnIHgzLFxuICAgICAgICAgIGNvcHlfZXhwcmVzc2lvbiB4NCApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb25zdHJhaW50IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29lcmNlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29lcmNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2NvcmVfdHlwZSB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlbmQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXcgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX25ldyAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9zZXRpbnN0dmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vdmVycmlkZVxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpKVxuICAgICAgICAgICB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2xldG1vZHVsZVxuICAgICAgICAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X21vZHVsZV9leHByIHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hc3NlcnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Fzc2VydCAoY29weV9leHByZXNzaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9sYXp5IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9wb2x5IChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfb3B0aW9uIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb2JqZWN0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vYmplY3QgKGNvcHlfY2xhc3Nfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3dHlwZSAoeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BhY2sgeDAgLT4gVG8uUGFyc2V0cmVlLlBleHBfcGFjayAoY29weV9tb2R1bGVfZXhwciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX29wZW4gKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9vcGVuXG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgbWlncmF0aW9uX2Vycm9yIGxvYyBcInVucmVhY2hhYmxlIHBhdHRlcm5zXCJcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfbG9jIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyBsb2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FueSAtPiBUby5QYXJzZXRyZWUuUHBhdF9hbnlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhciB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfYWxpYXMgKGNvcHlfcGF0dGVybiB4MCwgY29weV9sb2MgKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0YW50IChjb3B5X2NvbnN0YW50IGxvYyB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2ludGVydmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoY29weV9jb25zdGFudCBsb2MgeDAsIGNvcHlfY29uc3RhbnQgbG9jIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R1cGxlIChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdHJ1Y3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdFxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3ZhcmlhbnQgKGNvcHlfbGFiZWwgeDAsIGNvcHlfb3B0aW9uIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfcmVjb3JkXG4gICAgICAgICggTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfcGF0dGVybiB4MSkpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FycmF5IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hcnJheSAoTGlzdC5tYXAgY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfb3IgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X29yIChjb3B5X3BhdHRlcm4geDAsIGNvcHlfcGF0dGVybiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2NvbnN0cmFpbnQgKGNvcHlfcGF0dGVybiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF90eXBlIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2xhenkgeDAgLT4gVG8uUGFyc2V0cmVlLlBwYXRfbGF6eSAoY29weV9wYXR0ZXJuIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdW5wYWNrIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF91bnBhY2sgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NvcmVfdHlwZSA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2Rlc2MgPSBjb3B5X2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHR5cF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NvcmVfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYW55IC0+IFRvLlBhcnNldHJlZS5QdHlwX2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyIHgwIC0+IFRvLlBhcnNldHJlZS5QdHlwX3ZhciB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGluamVjdF9wcmVkZWZfb3B0aW9uIHgwIChjb3B5X2NvcmVfdHlwZSB4MSksXG4gICAgICAgICAgY29weV9jb3JlX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdHVwbGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9vYmplY3QgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX29iamVjdFxuICAgICAgICAoIExpc3QubWFwXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgICAgICh4MCwgY29weV9hdHRyaWJ1dGVzIHgxLCBjb3B5X2NvcmVfdHlwZSB4MikpXG4gICAgICAgICAgICB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2NsYXNzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9jbGFzc1xuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2FsaWFzIChjb3B5X2NvcmVfdHlwZSB4MCwgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXJpYW50ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfdmFyaWFudFxuICAgICAgICAoIExpc3QubWFwIGNvcHlfcm93X2ZpZWxkIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEsXG4gICAgICAgICAgY29weV9vcHRpb24gKGZ1biB4IC0+IExpc3QubWFwIGNvcHlfbGFiZWwgeCkgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfcG9seSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfcG9seSAoTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BhY2thZ2UgKGNvcHlfcGFja2FnZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9wYWNrYWdlX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5wYWNrYWdlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLnBhY2thZ2VfdHlwZVxuICAgID1cbiBmdW4geCAtPlxuICBsZXQgeDAsIHgxID0geCBpblxuICAoIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLFxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIHggLT5cbiAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gICAgICB4MSApXG5cbmFuZCBjb3B5X3Jvd19maWVsZCA6IEZyb20uUGFyc2V0cmVlLnJvd19maWVsZCAtPiBUby5QYXJzZXRyZWUucm93X2ZpZWxkID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5SdGFnICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5SdGFnXG4gICAgICAgICggY29weV9sYWJlbCB4MCxcbiAgICAgICAgICBjb3B5X2F0dHJpYnV0ZXMgeDEsXG4gICAgICAgICAgY29weV9ib29sIHgyLFxuICAgICAgICAgIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5SaW5oZXJpdCB4MCAtPiBUby5QYXJzZXRyZWUuUmluaGVyaXQgKGNvcHlfY29yZV90eXBlIHgwKVxuXG5hbmQgY29weV9hdHRyaWJ1dGVzIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlcyAtPiBUby5QYXJzZXRyZWUuYXR0cmlidXRlcyA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9hdHRyaWJ1dGUgeFxuXG5hbmQgY29weV9hdHRyaWJ1dGUgOiBGcm9tLlBhcnNldHJlZS5hdHRyaWJ1dGUgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZSA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9wYXlsb2FkIChmcm9tX2xvYyB4MCkgeDEpXG5cbmFuZCBjb3B5X3BheWxvYWQgbG9jIDogRnJvbS5QYXJzZXRyZWUucGF5bG9hZCAtPiBUby5QYXJzZXRyZWUucGF5bG9hZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFN0ciB4MCAtPiBUby5QYXJzZXRyZWUuUFN0ciAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUFNpZyBfeDAgLT4gbWlncmF0aW9uX2Vycm9yIGxvYyBcInNpZ25hdHVyZXMgaW4gYXR0cmlidXRlXCJcbiAgfCBGcm9tLlBhcnNldHJlZS5QVHlwIHgwIC0+IFRvLlBhcnNldHJlZS5QVHlwIChjb3B5X2NvcmVfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QUGF0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUFBhdCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X29wdGlvbiBjb3B5X2V4cHJlc3Npb24geDEpXG5cbmFuZCBjb3B5X3N0cnVjdHVyZSA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlID1cbiBmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X3N0cnVjdHVyZV9pdGVtIHhcblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW0gOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSA9XG4gZnVuIHsgRnJvbS5QYXJzZXRyZWUucHN0cl9kZXNjOyBGcm9tLlBhcnNldHJlZS5wc3RyX2xvYyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHN0cl9kZXNjID0gY29weV9zdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHN0cl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBzdHJfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXZhbCAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdmFsdWUgKGNvcHlfcmVjX2ZsYWcgeDAsIExpc3QubWFwIGNvcHlfdmFsdWVfYmluZGluZyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ByaW1pdGl2ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIChjb3B5X3ZhbHVlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfdHlwZSAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZSAodHlwZV9kZWNsYXJhdGlvbnMgeDAgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3R5cGUgKHR5cGVfZGVjbGFyYXRpb25zIHgwIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBleHQgKGNvcHlfdHlwZV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2V4Y2VwdGlvbiAoY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX21vZHVsZSAoY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX3JlY21vZHVsZSAoTGlzdC5tYXAgY29weV9tb2R1bGVfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfaW5jbHVkZSAoY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc19kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2NsYXNzX2luZm9zIGNvcHlfY2xhc3NfdHlwZSB4XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGUgOiBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2Rlc2MgPSBjb3B5X2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfbG9jID0gY29weV9sb2NhdGlvbiBwY3R5X2xvYztcbiAgICBUby5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc190eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QY3R5X2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfY29uc3RyXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X3NpZ25hdHVyZSAoY29weV9jbGFzc19zaWduYXR1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2Fycm93XG4gICAgICAgICggY29weV9hcmdfbGFiZWwgeDAsXG4gICAgICAgICAgaW5qZWN0X3ByZWRlZl9vcHRpb24geDAgKGNvcHlfY29yZV90eXBlIHgxKSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCAoZnJvbV9sb2MgeDApIHgxKVxuXG5hbmQgY29weV9jbGFzc19pbmZvcyA6XG4gICAgICAnZjAgJ2cwLlxuICAgICAgKCdmMCAtPiAnZzApIC0+XG4gICAgICAnZjAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuY2xhc3NfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3ZpcnQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNpX3ZpcnQgPSBjb3B5X3ZpcnR1YWxfZmxhZyBwY2lfdmlydDtcbiAgICBUby5QYXJzZXRyZWUucGNpX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHBjaV9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjaV9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfZXhwciA9IGYwIHBjaV9leHByO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbG9jID0gY29weV9sb2NhdGlvbiBwY2lfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV92aXJ0dWFsX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnZpcnR1YWxfZmxhZyAtPiBUby5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVmlydHVhbCAtPiBUby5Bc3R0eXBlcy5WaXJ0dWFsXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25jcmV0ZSAtPiBUby5Bc3R0eXBlcy5Db25jcmV0ZVxuXG5hbmQgY29weV9pbmNsdWRlX2Rlc2NyaXB0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5pbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiBmdW4geCAtPiBjb3B5X2luY2x1ZGVfaW5mb3MgY29weV9tb2R1bGVfdHlwZSB4XG5cbmFuZCBjb3B5X2luY2x1ZGVfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgLT5cbiAgICAgICdnMCBUby5QYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9XG4gZnVuIGYwXG4gICAgIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9tb2Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9tb2QgPSBmMCBwaW5jbF9tb2Q7XG4gICAgVG8uUGFyc2V0cmVlLnBpbmNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGluY2xfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBpbmNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfb3Blbl9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUub3Blbl9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9saWQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fb3ZlcnJpZGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9saWQgPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwb3Blbl9saWQ7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlID0gY29weV9vdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBvcGVuX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X292ZXJyaWRlX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk92ZXJyaWRlIC0+IFRvLkFzdHR5cGVzLk92ZXJyaWRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5GcmVzaCAtPiBUby5Bc3R0eXBlcy5GcmVzaFxuXG5hbmQgY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfdHlwZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG10ZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbXRkX3R5cGUgPSBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHBtdGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG10ZF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtdGRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X21vZHVsZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1kX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfdHlwZSA9IGNvcHlfbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbG9jID0gY29weV9sb2NhdGlvbiBwbWRfbG9jO1xuICB9XG5cbmFuZCBjb3B5X3R5cGVfZXh0ZW5zaW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhdGg7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhdGggPSBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCBwdHlleHRfcGF0aDtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgTGlzdC5tYXAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X3ByaXZhdGUgPSBjb3B5X3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5ZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgLT4gVG8uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwZXh0X25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBleHRfa2luZCA9XG4gICAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIChmcm9tX2xvYyBwZXh0X25hbWUpIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT5cbiAgICBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfZGVjbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfZGVjbFxuICAgICAgICAoY29weV9jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgbG9jIHgwLCBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXh0X3JlYmluZCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHRfcmViaW5kIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcblxuYW5kIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9jc3RycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9raW5kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX3ByaXZhdGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHB0eXBlX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX3BhcmFtcyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgIChjb3B5X2NvcmVfdHlwZSB4MCwgY29weV92YXJpYW5jZSB4MSkpXG4gICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfY3N0cnMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSwgeDIgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSwgY29weV9sb2NhdGlvbiB4MikpXG4gICAgICAgIHB0eXBlX2NzdHJzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9raW5kID0gY29weV90eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZSA9IGNvcHlfcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX21hbmlmZXN0ID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbG9jID0gY29weV9sb2NhdGlvbiBwdHlwZV9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcHJpdmF0ZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMucHJpdmF0ZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlByaXZhdGUgLT4gVG8uQXN0dHlwZXMuUHJpdmF0ZVxuICB8IEZyb20uQXN0dHlwZXMuUHVibGljIC0+IFRvLkFzdHR5cGVzLlB1YmxpY1xuXG5hbmQgY29weV90eXBlX2tpbmQgOiBGcm9tLlBhcnNldHJlZS50eXBlX2tpbmQgLT4gVG8uUGFyc2V0cmVlLnR5cGVfa2luZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3QgLT4gVG8uUGFyc2V0cmVlLlB0eXBlX2Fic3RyYWN0XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBlX3ZhcmlhbnQgKExpc3QubWFwIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfcmVjb3JkIChMaXN0Lm1hcCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBlX29wZW4gLT4gVG8uUGFyc2V0cmVlLlB0eXBlX29wZW5cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hcmdzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9yZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBjZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfYXJncyA9XG4gICAgICBjb3B5X2NvbnN0cnVjdG9yX2FyZ3VtZW50cyAoZnJvbV9sb2MgcGNkX25hbWUpIHBjZF9hcmdzO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29uc3RydWN0b3JfYXJndW1lbnRzIGxvYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgbGlzdCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNzdHJfdHVwbGUgeDAgLT4gTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3N0cl9yZWNvcmQgX3gwIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJpbmxpbmUgcmVjb3Jkc1wiXG5cbmFuZCBjb3B5X2xhYmVsX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5sYWJlbF9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX211dGFibGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBsZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBsZF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbXV0YWJsZSA9IGNvcHlfbXV0YWJsZV9mbGFnIHBsZF9tdXRhYmxlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfdHlwZSA9IGNvcHlfY29yZV90eXBlIHBsZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbG9jID0gY29weV9sb2NhdGlvbiBwbGRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wbGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tdXRhYmxlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLm11dGFibGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuSW1tdXRhYmxlIC0+IFRvLkFzdHR5cGVzLkltbXV0YWJsZVxuICB8IEZyb20uQXN0dHlwZXMuTXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5NdXRhYmxlXG5cbmFuZCBjb3B5X3ZhcmlhbmNlIDogRnJvbS5Bc3R0eXBlcy52YXJpYW5jZSAtPiBUby5Bc3R0eXBlcy52YXJpYW5jZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db3ZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ292YXJpYW50XG4gIHwgRnJvbS5Bc3R0eXBlcy5Db250cmF2YXJpYW50IC0+IFRvLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkludmFyaWFudCAtPiBUby5Bc3R0eXBlcy5JbnZhcmlhbnRcblxuYW5kIGNvcHlfdmFsdWVfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS52YWx1ZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfcHJpbTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2F0dHJpYnV0ZXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHZhbF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wdmFsX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwdmFsX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfcHJpbSA9IExpc3QubWFwIChmdW4geCAtPiB4KSBwdmFsX3ByaW07XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbG9jID0gY29weV9sb2NhdGlvbiBwdmFsX2xvYztcbiAgfVxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmFyZ19sYWJlbCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuTm9sYWJlbCAtPiBcIlwiXG4gIHwgRnJvbS5Bc3R0eXBlcy5MYWJlbGxlZCB4MCAtPiB4MFxuICB8IEZyb20uQXN0dHlwZXMuT3B0aW9uYWwgeDAgLT4gXCI/XCIgXiB4MFxuXG5hbmQgY29weV9jbG9zZWRfZmxhZyA6IEZyb20uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgLT4gVG8uQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuQ2xvc2VkIC0+IFRvLkFzdHR5cGVzLkNsb3NlZFxuICB8IEZyb20uQXN0dHlwZXMuT3BlbiAtPiBUby5Bc3R0eXBlcy5PcGVuXG5cbmFuZCBjb3B5X2xhYmVsIDogRnJvbS5Bc3R0eXBlcy5sYWJlbCAtPiBUby5Bc3R0eXBlcy5sYWJlbCA9IGZ1biB4IC0+IHhcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgbG9jIDogRnJvbS5QYXJzZXRyZWUuY29uc3RhbnQgLT4gVG8uQXN0dHlwZXMuY29uc3RhbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyICh4MCwgeDEpIC0+IChcbiAgICAgIG1hdGNoIHgxIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBUby5Bc3R0eXBlcy5Db25zdF9pbnQgKGludF9vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ2wnIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludDMyIChJbnQzMi5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ0wnIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2ludDY0IChJbnQ2NC5vZl9zdHJpbmcgeDApXG4gICAgICB8IFNvbWUgJ24nIC0+IFRvLkFzdHR5cGVzLkNvbnN0X25hdGl2ZWludCAoTmF0aXZlaW50Lm9mX3N0cmluZyB4MClcbiAgICAgIHwgU29tZSBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJjdXN0b20gaW50ZWdlciBsaXRlcmFsc1wiKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwIC0+IFRvLkFzdHR5cGVzLkNvbnN0X2NoYXIgeDBcbiAgfCBGcm9tLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgeDEpIC0+IFRvLkFzdHR5cGVzLkNvbnN0X3N0cmluZyAoeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIHgxKSAtPiAoXG4gICAgICBtYXRjaCB4MSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVG8uQXN0dHlwZXMuQ29uc3RfZmxvYXQgeDBcbiAgICAgIHwgU29tZSBfIC0+IG1pZ3JhdGlvbl9lcnJvciBsb2MgXCJjdXN0b20gZmxvYXQgbGl0ZXJhbHNcIilcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbnMgcmVjZmxhZyB0eXBlcyA9XG4gIG1hdGNoIChyZWNmbGFnLCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gdHlwZXMpIHdpdGhcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSwgdHlwZXMgLT4gdHlwZXNcbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgW10gLT4gW11cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSwgeCA6OiB4cyAtPlxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gXCJfbm9uZV9cIjtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAtMTtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSB7IExvY2F0aW9uLmxvY19zdGFydCA9IHBvczsgbG9jX2VuZCA9IHBvczsgbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9XG4gICAgICAgICh7IFRvLkFzdHR5cGVzLnR4dCA9IFwibm9ucmVjXCI7IGxvYyB9LCBUby5QYXJzZXRyZWUuUFN0ciBbXSlcbiAgICAgICAgOjogeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlc1xuICAgICAgaW5cbiAgICAgIHsgeCB3aXRoIFRvLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzIH0gOjogeHNcblxubGV0IHJlYyBjb3B5X3RvcGxldmVsX3BocmFzZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIC0+IFRvLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlB0b3BfZGVmIHgwIC0+IFRvLlBhcnNldHJlZS5QdG9wX2RlZiAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kaXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIGNvcHlfZGlyZWN0aXZlX2FyZ3VtZW50IHgxKVxuXG5hbmQgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmRpcmVjdGl2ZV9hcmd1bWVudCAtPiBUby5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50ID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QZGlyX25vbmUgLT4gVG8uUGFyc2V0cmVlLlBkaXJfbm9uZVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwIC0+IFRvLlBhcnNldHJlZS5QZGlyX3N0cmluZyB4MFxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaW50ICh4MCwgX3gxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBkaXJfaW50IChpbnRfb2Zfc3RyaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgTWlncmF0ZSBQYXJzZXRyZWUgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyw6lkw6lyaWMgQm91ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBGcm9tID0gQXN0XzQwMlxubW9kdWxlIFRvID0gQXN0XzQwM1xuXG5sZXQgZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHR5cCA9XG4gIGxldCBvcGVuIEZyb20gaW5cbiAgbGV0IG9wZW4gTG9uZ2lkZW50IGluXG4gIG1hdGNoIChsYWJlbCwgdHlwLlBhcnNldHJlZS5wdHlwX2Rlc2MpIHdpdGhcbiAgfCAoIFRvLkFzdHR5cGVzLk9wdGlvbmFsIF8sXG4gICAgICBGcm9tLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoeyBMb2NhdGlvbi50eHQgPSBMZG90IChMaWRlbnQgXCIqcHJlZGVmKlwiLCBcIm9wdGlvblwiKTsgXyB9LCBbIGQgXSkgKSAtPlxuICAgICAgZFxuICB8IF8gLT4gdHlwXG5cbmxldCByZWMgY29weV9leHByZXNzaW9uIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvbiA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXhwX2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4cF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGV4cF9kZXNjID0gY29weV9leHByZXNzaW9uX2Rlc2MgcGV4cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wZXhwX2xvYyA9IGNvcHlfbG9jYXRpb24gcGV4cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBleHBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfZXhwcmVzc2lvbl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHByZXNzaW9uX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0YW50IChjb3B5X2NvbnN0YW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Z1bmN0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9mdW5jdGlvbiAoTGlzdC5tYXAgY29weV9jYXNlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9hcHBseVxuICAgICAgICAoIGNvcHlfZXhwcmVzc2lvbiB4MCxcbiAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2FyZ19sYWJlbCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgxIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9tYXRjaCAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90cnkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3RyeSAoY29weV9leHByZXNzaW9uIHgwLCBMaXN0Lm1hcCBjb3B5X2Nhc2UgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdHVwbGUgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9leHByZXNzaW9uIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9maWVsZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZmllbGQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGZpZWxkXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxLCBjb3B5X2V4cHJlc3Npb24geDIpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9hcnJheSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXJyYXkgKExpc3QubWFwIGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9pZnRoZW5lbHNlXG4gICAgICAgIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSwgY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VxdWVuY2UgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NlcXVlbmNlIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3doaWxlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF93aGlsZSAoY29weV9leHByZXNzaW9uIHgwLCBjb3B5X2V4cHJlc3Npb24geDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2ZvclxuICAgICAgICAoIGNvcHlfcGF0dGVybiB4MCxcbiAgICAgICAgICBjb3B5X2V4cHJlc3Npb24geDEsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHgyLFxuICAgICAgICAgIGNvcHlfZGlyZWN0aW9uX2ZsYWcgeDMsXG4gICAgICAgICAgY29weV9leHByZXNzaW9uIHg0IClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX2NvbnN0cmFpbnQgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9jb2VyY2VcbiAgICAgICAgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEsIGNvcHlfY29yZV90eXBlIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfc2VuZCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfc2VuZCAoY29weV9leHByZXNzaW9uIHgwLCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX25ldyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbmV3IChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3NldGluc3R2YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX292ZXJyaWRlXG4gICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfbGV0bW9kdWxlXG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbW9kdWxlX2V4cHIgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2Fzc2VydCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfYXNzZXJ0IChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9sYXp5IHgwIC0+IFRvLlBhcnNldHJlZS5QZXhwX2xhenkgKGNvcHlfZXhwcmVzc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX3BvbHkgKGNvcHlfZXhwcmVzc2lvbiB4MCwgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9vYmplY3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29iamVjdCAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4cF9uZXd0eXBlICh4MCwgY29weV9leHByZXNzaW9uIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfcGFjayB4MCAtPiBUby5QYXJzZXRyZWUuUGV4cF9wYWNrIChjb3B5X21vZHVsZV9leHByIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHBfb3BlbiAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QZXhwX29wZW5cbiAgICAgICAgKGNvcHlfb3ZlcnJpZGVfZmxhZyB4MCwgY29weV9sb2MgY29weV9sb25naWRlbnQgeDEsIGNvcHlfZXhwcmVzc2lvbiB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBleHBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZGlyZWN0aW9uX2ZsYWcgOlxuICAgIEZyb20uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgLT4gVG8uQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcgPSBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuVXB0byAtPiBUby5Bc3R0eXBlcy5VcHRvXG4gIHwgRnJvbS5Bc3R0eXBlcy5Eb3dudG8gLT4gVG8uQXN0dHlwZXMuRG93bnRvXG5cbmFuZCBjb3B5X2Nhc2UgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY19saHM7IEZyb20uUGFyc2V0cmVlLnBjX2d1YXJkOyBGcm9tLlBhcnNldHJlZS5wY19yaHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2xocyA9IGNvcHlfcGF0dGVybiBwY19saHM7XG4gICAgVG8uUGFyc2V0cmVlLnBjX2d1YXJkID0gY29weV9vcHRpb24gY29weV9leHByZXNzaW9uIHBjX2d1YXJkO1xuICAgIFRvLlBhcnNldHJlZS5wY19yaHMgPSBjb3B5X2V4cHJlc3Npb24gcGNfcmhzO1xuICB9XG5cbmFuZCBjb3B5X3ZhbHVlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2JpbmRpbmcgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZiX3BhdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucHZiX3BhdCA9IGNvcHlfcGF0dGVybiBwdmJfcGF0O1xuICAgIFRvLlBhcnNldHJlZS5wdmJfZXhwciA9IGNvcHlfZXhwcmVzc2lvbiBwdmJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucHZiX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnB2Yl9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2Yl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfcGF0dGVybiA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm4gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHBhdF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBwYXRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBwYXRfZGVzYyA9IGNvcHlfcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucHBhdF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBwYXRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wcGF0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X3BhdHRlcm5fZGVzYyA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm5fZGVzYyAtPiBUby5QYXJzZXRyZWUucGF0dGVybl9kZXNjXG4gICAgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYW55IC0+IFRvLlBhcnNldHJlZS5QcGF0X2FueVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF92YXIgKGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9hbGlhcyAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9jb25zdGFudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RhbnQgKGNvcHlfY29uc3RhbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfaW50ZXJ2YWwgKGNvcHlfY29uc3RhbnQgeDAsIGNvcHlfY29uc3RhbnQgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF90dXBsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdHVwbGUgKExpc3QubWFwIGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RydWN0XG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfdmFyaWFudCAoY29weV9sYWJlbCB4MCwgY29weV9vcHRpb24gY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfcmVjb3JkICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9yZWNvcmRcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9wYXR0ZXJuIHgxKSlcbiAgICAgICAgICAgIHgwLFxuICAgICAgICAgIGNvcHlfY2xvc2VkX2ZsYWcgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfYXJyYXkgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X2FycmF5IChMaXN0Lm1hcCBjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF9vciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfb3IgKGNvcHlfcGF0dGVybiB4MCwgY29weV9wYXR0ZXJuIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfY29uc3RyYWludCAoY29weV9wYXR0ZXJuIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3R5cGUgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfbGF6eSB4MCAtPiBUby5QYXJzZXRyZWUuUHBhdF9sYXp5IChjb3B5X3BhdHRlcm4geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHBhdF91bnBhY2sgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QcGF0X3VucGFjayAoY29weV9sb2MgKGZ1biB4IC0+IHgpIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBwYXRfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHBhdF9leGNlcHRpb24gKGNvcHlfcGF0dGVybiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QcGF0X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBwYXRfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY29yZV90eXBlIDogRnJvbS5QYXJzZXRyZWUuY29yZV90eXBlIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGUgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfZGVzYyA9IGNvcHlfY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwX2xvYyA9IGNvcHlfbG9jYXRpb24gcHR5cF9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY29yZV90eXBlX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZV9kZXNjIC0+IFRvLlBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hbnkgLT4gVG8uUGFyc2V0cmVlLlB0eXBfYW55XG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF92YXIgeDAgLT4gVG8uUGFyc2V0cmVlLlB0eXBfdmFyIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgIGxldCBsYWJlbCA9IGNvcHlfYXJnX2xhYmVsIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hcnJvd1xuICAgICAgICAoIGxhYmVsLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIChleHRyYWN0X3ByZWRlZl9vcHRpb24gbGFiZWwgeDEpLFxuICAgICAgICAgIGNvcHlfY29yZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3R1cGxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9vYmplY3RcbiAgICAgICAgKCBMaXN0Lm1hcFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCB4MCwgeDEsIHgyID0geCBpblxuICAgICAgICAgICAgICAoeDAsIGNvcHlfYXR0cmlidXRlcyB4MSwgY29weV9jb3JlX3R5cGUgeDIpKVxuICAgICAgICAgICAgeDAsXG4gICAgICAgICAgY29weV9jbG9zZWRfZmxhZyB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9jbGFzcyAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfY2xhc3NcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2FsaWFzICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9hbGlhcyAoY29weV9jb3JlX3R5cGUgeDAsIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3ZhcmlhbnRcbiAgICAgICAgKCBMaXN0Lm1hcCBjb3B5X3Jvd19maWVsZCB4MCxcbiAgICAgICAgICBjb3B5X2Nsb3NlZF9mbGFnIHgxLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIChmdW4geCAtPiBMaXN0Lm1hcCBjb3B5X2xhYmVsIHgpIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX3BvbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwX3BvbHkgKExpc3QubWFwIChmdW4geCAtPiB4KSB4MCwgY29weV9jb3JlX3R5cGUgeDEpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cF9wYWNrYWdlIChjb3B5X3BhY2thZ2VfdHlwZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0eXBfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfcGFja2FnZV90eXBlIDogRnJvbS5QYXJzZXRyZWUucGFja2FnZV90eXBlIC0+IFRvLlBhcnNldHJlZS5wYWNrYWdlX3R5cGVcbiAgICA9XG4gZnVuIHggLT5cbiAgbGV0IHgwLCB4MSA9IHggaW5cbiAgKCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCxcbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgIChjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MCwgY29weV9jb3JlX3R5cGUgeDEpKVxuICAgICAgeDEgKVxuXG5hbmQgY29weV9yb3dfZmllbGQgOiBGcm9tLlBhcnNldHJlZS5yb3dfZmllbGQgLT4gVG8uUGFyc2V0cmVlLnJvd19maWVsZCA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUnRhZyAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUnRhZ1xuICAgICAgICAoIGNvcHlfbGFiZWwgeDAsXG4gICAgICAgICAgY29weV9hdHRyaWJ1dGVzIHgxLFxuICAgICAgICAgIGNvcHlfYm9vbCB4MixcbiAgICAgICAgICBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MyApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUmluaGVyaXQgeDAgLT4gVG8uUGFyc2V0cmVlLlJpbmhlcml0IChjb3B5X2NvcmVfdHlwZSB4MClcblxuYW5kIGNvcHlfYXR0cmlidXRlcyA6IEZyb20uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgLT4gVG8uUGFyc2V0cmVlLmF0dHJpYnV0ZXMgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfYXR0cmlidXRlIHhcblxuYW5kIGNvcHlfYXR0cmlidXRlIDogRnJvbS5QYXJzZXRyZWUuYXR0cmlidXRlIC0+IFRvLlBhcnNldHJlZS5hdHRyaWJ1dGUgPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfcGF5bG9hZCA6IEZyb20uUGFyc2V0cmVlLnBheWxvYWQgLT4gVG8uUGFyc2V0cmVlLnBheWxvYWQgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBTdHIgeDAgLT4gVG8uUGFyc2V0cmVlLlBTdHIgKGNvcHlfc3RydWN0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBUeXAgeDAgLT4gVG8uUGFyc2V0cmVlLlBUeXAgKGNvcHlfY29yZV90eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBQYXQgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QUGF0IChjb3B5X3BhdHRlcm4geDAsIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfc3RydWN0dXJlIDogRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5zdHJ1Y3R1cmUgPVxuIGZ1biB4IC0+IExpc3QubWFwIGNvcHlfc3RydWN0dXJlX2l0ZW0geFxuXG5hbmQgY29weV9zdHJ1Y3R1cmVfaXRlbSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gLT4gVG8uUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wc3RyX2Rlc2M7IEZyb20uUGFyc2V0cmVlLnBzdHJfbG9jIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2Rlc2MgPSBjb3B5X3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wc3RyX2xvYyA9IGNvcHlfbG9jYXRpb24gcHN0cl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfc3RydWN0dXJlX2l0ZW1fZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1fZGVzYyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9ldmFsIChjb3B5X2V4cHJlc3Npb24geDAsIGNvcHlfYXR0cmlidXRlcyB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl92YWx1ZSAoY29weV9yZWNfZmxhZyB4MCwgTGlzdC5tYXAgY29weV92YWx1ZV9iaW5kaW5nIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcHJpbWl0aXZlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9wcmltaXRpdmUgKGNvcHlfdmFsdWVfZGVzY3JpcHRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBlIHgwIC0+XG4gICAgICBsZXQgcmVjZmxhZywgdHlwZXMgPSB0eXBlX2RlY2xhcmF0aW9ucyB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfdHlwZSAocmVjZmxhZywgdHlwZXMpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl90eXBleHQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX3R5cGV4dCAoY29weV90eXBlX2V4dGVuc2lvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX2V4Y2VwdGlvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfZXhjZXB0aW9uIChjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc3RyX21vZHVsZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfbW9kdWxlIChjb3B5X21vZHVsZV9iaW5kaW5nIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2JpbmRpbmcgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9tb2R0eXBlIChjb3B5X21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfb3BlbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfb3BlbiAoY29weV9vcGVuX2Rlc2NyaXB0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3MgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc3RyX2NsYXNzIChMaXN0Lm1hcCBjb3B5X2NsYXNzX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfY2xhc3NfdHlwZSAoTGlzdC5tYXAgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzdHJfaW5jbHVkZSAoY29weV9pbmNsdWRlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHN0cl9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwLCBjb3B5X2F0dHJpYnV0ZXMgeDEpXG5cbmFuZCBjb3B5X2luY2x1ZGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmluY2x1ZGVfZGVjbGFyYXRpb24gPVxuIGZ1biB4IC0+IGNvcHlfaW5jbHVkZV9pbmZvcyBjb3B5X21vZHVsZV9leHByIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZWNsYXJhdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX2V4cHIgeFxuXG5hbmQgY29weV9jbGFzc19leHByIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwciA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2xfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNsX2Rlc2MgPSBjb3B5X2NsYXNzX2V4cHJfZGVzYyBwY2xfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNsX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc19leHByX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2V4cHJfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfc3RydWN0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX3N0cnVjdHVyZSAoY29weV9jbGFzc19zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2Z1blxuICAgICAgICAoIGNvcHlfYXJnX2xhYmVsIHgwLFxuICAgICAgICAgIGNvcHlfb3B0aW9uIGNvcHlfZXhwcmVzc2lvbiB4MSxcbiAgICAgICAgICBjb3B5X3BhdHRlcm4geDIsXG4gICAgICAgICAgY29weV9jbGFzc19leHByIHgzIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfYXBwbHlcbiAgICAgICAgKCBjb3B5X2NsYXNzX2V4cHIgeDAsXG4gICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICBsZXQgeDAsIHgxID0geCBpblxuICAgICAgICAgICAgICAoY29weV9hcmdfbGFiZWwgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSkpXG4gICAgICAgICAgICB4MSApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2xfbGV0XG4gICAgICAgIChjb3B5X3JlY19mbGFnIHgwLCBMaXN0Lm1hcCBjb3B5X3ZhbHVlX2JpbmRpbmcgeDEsIGNvcHlfY2xhc3NfZXhwciB4MilcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjbF9jb25zdHJhaW50IChjb3B5X2NsYXNzX2V4cHIgeDAsIGNvcHlfY2xhc3NfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY2xfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNsX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X2NsYXNzX3N0cnVjdHVyZSA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3Nfc3RydWN0dXJlIC0+IFRvLlBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBjc3RyX3NlbGY7IEZyb20uUGFyc2V0cmVlLnBjc3RyX2ZpZWxkcyB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNzdHJfc2VsZiA9IGNvcHlfcGF0dGVybiBwY3N0cl9zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3N0cl9maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcztcbiAgfVxuXG5hbmQgY29weV9jbGFzc19maWVsZCA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZCA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2ZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNmX2Rlc2MgPSBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjZl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjZl9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX2ZpZWxkX2Rlc2MgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkX2Rlc2MgPSBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9pbmhlcml0XG4gICAgICAgIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfY2xhc3NfZXhwciB4MSwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgyKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl92YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfdmFsXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9tdXRhYmxlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9tZXRob2QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfbWV0aG9kXG4gICAgICAgIChsZXQgeDAsIHgxLCB4MiA9IHgwIGluXG4gICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICAgY29weV9wcml2YXRlX2ZsYWcgeDEsXG4gICAgICAgICAgIGNvcHlfY2xhc3NfZmllbGRfa2luZCB4MiApKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9jb25zdHJhaW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2NvbnN0cmFpbnRcbiAgICAgICAgKGxldCB4MCwgeDEgPSB4MCBpblxuICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X2NvcmVfdHlwZSB4MSkpXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGNmX2luaXRpYWxpemVyIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjZl9hdHRyaWJ1dGUgKGNvcHlfYXR0cmlidXRlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY2ZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfY2xhc3NfZmllbGRfa2luZCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5DZmtfdmlydHVhbCAoY29weV9jb3JlX3R5cGUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuQ2ZrX2NvbmNyZXRlIChjb3B5X292ZXJyaWRlX2ZsYWcgeDAsIGNvcHlfZXhwcmVzc2lvbiB4MSlcblxuYW5kIGNvcHlfbW9kdWxlX2JpbmRpbmcgOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9iaW5kaW5nIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfZXhwcjtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbWJfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG1iX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcG1iX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9leHByID0gY29weV9tb2R1bGVfZXhwciBwbWJfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucG1iX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtYl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBtYl9sb2M7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX2V4cHIgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG1vZF9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtb2RfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfZGVzYyA9IGNvcHlfbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtb2RfbG9jID0gY29weV9sb2NhdGlvbiBwbW9kX2xvYztcbiAgICBUby5QYXJzZXRyZWUucG1vZF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZXhwcl9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjIC0+IFRvLlBhcnNldHJlZS5tb2R1bGVfZXhwcl9kZXNjID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX2lkZW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG1vZF9pZGVudCAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX3N0cnVjdHVyZSAoY29weV9zdHJ1Y3R1cmUgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9mdW5jdG9yICh4MCwgeDEsIHgyKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfZnVuY3RvclxuICAgICAgICAoIGNvcHlfbG9jIChmdW4geCAtPiB4KSB4MCxcbiAgICAgICAgICBjb3B5X29wdGlvbiBjb3B5X21vZHVsZV90eXBlIHgxLFxuICAgICAgICAgIGNvcHlfbW9kdWxlX2V4cHIgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2FwcGx5IChjb3B5X21vZHVsZV9leHByIHgwLCBjb3B5X21vZHVsZV9leHByIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfY29uc3RyYWludCAoY29weV9tb2R1bGVfZXhwciB4MCwgY29weV9tb2R1bGVfdHlwZSB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QbW9kX3VucGFjayB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtb2RfdW5wYWNrIChjb3B5X2V4cHJlc3Npb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG1vZF9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbW9kX2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG5cbmFuZCBjb3B5X21vZHVsZV90eXBlIDogRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGUgLT4gVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdHlfZGVzYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2Rlc2MgPSBjb3B5X21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wbXR5X2xvYyA9IGNvcHlfbG9jYXRpb24gcG10eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBtdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9pZGVudCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfaWRlbnQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV9zaWduYXR1cmUgKGNvcHlfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfZnVuY3RvciAoeDAsIHgxLCB4MikgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2Z1bmN0b3JcbiAgICAgICAgKCBjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSB4MSxcbiAgICAgICAgICBjb3B5X21vZHVsZV90eXBlIHgyIClcbiAgfCBGcm9tLlBhcnNldHJlZS5QbXR5X3dpdGggKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X3dpdGhcbiAgICAgICAgKGNvcHlfbW9kdWxlX3R5cGUgeDAsIExpc3QubWFwIGNvcHlfd2l0aF9jb25zdHJhaW50IHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBtdHlfdHlwZW9mIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUG10eV90eXBlb2YgKGNvcHlfbW9kdWxlX2V4cHIgeDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9leHRlbnNpb24geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QbXR5X2V4dGVuc2lvbiAoY29weV9leHRlbnNpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUG10eV9hbGlhcyB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBtdHlfYWxpYXMgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV93aXRoX2NvbnN0cmFpbnQgOlxuICAgIEZyb20uUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCAtPiBUby5QYXJzZXRyZWUud2l0aF9jb25zdHJhaW50ID0gZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHdpdGhfdHlwZVxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGUgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF9tb2R1bGVcbiAgICAgICAgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwLCBjb3B5X2xvYyBjb3B5X2xvbmdpZGVudCB4MSlcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qd2l0aF90eXBlc3Vic3QgKGNvcHlfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB3aXRoX21vZHN1YnN0XG4gICAgICAgIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgxKVxuXG5hbmQgY29weV9zaWduYXR1cmUgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLnNpZ25hdHVyZSA9XG4gZnVuIHggLT4gTGlzdC5tYXAgY29weV9zaWduYXR1cmVfaXRlbSB4XG5cbmFuZCBjb3B5X3NpZ25hdHVyZV9pdGVtIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPVxuIGZ1biB7IEZyb20uUGFyc2V0cmVlLnBzaWdfZGVzYzsgRnJvbS5QYXJzZXRyZWUucHNpZ19sb2MgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfZGVzYyA9IGNvcHlfc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2M7XG4gICAgVG8uUGFyc2V0cmVlLnBzaWdfbG9jID0gY29weV9sb2NhdGlvbiBwc2lnX2xvYztcbiAgfVxuXG5hbmQgY29weV9zaWduYXR1cmVfaXRlbV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3ZhbHVlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ192YWx1ZSAoY29weV92YWx1ZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGUgeDAgLT5cbiAgICAgIGxldCByZWNmbGFnLCB0eXBlcyA9IHR5cGVfZGVjbGFyYXRpb25zIHgwIGluXG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ190eXBlIChyZWNmbGFnLCB0eXBlcylcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX3R5cGV4dCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfdHlwZXh0IChjb3B5X3R5cGVfZXh0ZW5zaW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19leGNlcHRpb24gKGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19tb2R1bGUgKGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19yZWNtb2R1bGUgKExpc3QubWFwIGNvcHlfbW9kdWxlX2RlY2xhcmF0aW9uIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfbW9kdHlwZSAoY29weV9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX29wZW4geDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX29wZW4gKGNvcHlfb3Blbl9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2luY2x1ZGUgKGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHNpZ19jbGFzcyAoTGlzdC5tYXAgY29weV9jbGFzc19kZXNjcmlwdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5Qc2lnX2NsYXNzX3R5cGUgKExpc3QubWFwIGNvcHlfY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5Qc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBzaWdfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MCwgY29weV9hdHRyaWJ1dGVzIHgxKVxuXG5hbmQgY29weV9jbGFzc190eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgPVxuIGZ1biB4IC0+IGNvcHlfY2xhc3NfaW5mb3MgY29weV9jbGFzc190eXBlIHhcblxuYW5kIGNvcHlfY2xhc3NfZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX2Rlc2NyaXB0aW9uIC0+IFRvLlBhcnNldHJlZS5jbGFzc19kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9jbGFzc19pbmZvcyBjb3B5X2NsYXNzX3R5cGUgeFxuXG5hbmQgY29weV9jbGFzc190eXBlIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZSAtPiBUby5QYXJzZXRyZWUuY2xhc3NfdHlwZSA9XG4gZnVuIHtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY3R5X2Rlc2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0eV9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGN0eV9kZXNjID0gY29weV9jbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgIFRvLlBhcnNldHJlZS5wY3R5X2xvYyA9IGNvcHlfbG9jYXRpb24gcGN0eV9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBjdHlfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwY3R5X2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfY2xhc3NfdHlwZV9kZXNjIDpcbiAgICBGcm9tLlBhcnNldHJlZS5jbGFzc190eXBlX2Rlc2MgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZGVzYyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGN0eV9jb25zdHIgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY3R5X2NvbnN0clxuICAgICAgICAoY29weV9sb2MgY29weV9sb25naWRlbnQgeDAsIExpc3QubWFwIGNvcHlfY29yZV90eXBlIHgxKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfc2lnbmF0dXJlIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9zaWduYXR1cmUgKGNvcHlfY2xhc3Nfc2lnbmF0dXJlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfYXJyb3cgKHgwLCB4MSwgeDIpIC0+XG4gICAgICBsZXQgbGFiZWwgPSBjb3B5X2FyZ19sYWJlbCB4MCBpblxuICAgICAgVG8uUGFyc2V0cmVlLlBjdHlfYXJyb3dcbiAgICAgICAgKCBsYWJlbCxcbiAgICAgICAgICBjb3B5X2NvcmVfdHlwZSAoZXh0cmFjdF9wcmVkZWZfb3B0aW9uIGxhYmVsIHgxKSxcbiAgICAgICAgICBjb3B5X2NsYXNzX3R5cGUgeDIgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdHlfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0eV9leHRlbnNpb24gKGNvcHlfZXh0ZW5zaW9uIHgwKVxuXG5hbmQgY29weV9jbGFzc19zaWduYXR1cmUgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSAtPiBUby5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID1cbiBmdW4geyBGcm9tLlBhcnNldHJlZS5wY3NpZ19zZWxmOyBGcm9tLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjc2lnX3NlbGYgPSBjb3B5X2NvcmVfdHlwZSBwY3NpZ19zZWxmO1xuICAgIFRvLlBhcnNldHJlZS5wY3NpZ19maWVsZHMgPSBMaXN0Lm1hcCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGQgOlxuICAgIEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGN0Zl9kZXNjO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjdGZfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjdGZfZGVzYyA9IGNvcHlfY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICBUby5QYXJzZXRyZWUucGN0Zl9sb2MgPSBjb3B5X2xvY2F0aW9uIHBjdGZfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wY3RmX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGN0Zl9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2NsYXNzX3R5cGVfZmllbGRfZGVzYyA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IFRvLlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkX2Rlc2MgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfaW5oZXJpdCAoY29weV9jbGFzc190eXBlIHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfdmFsIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl92YWxcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfbXV0YWJsZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfbWV0aG9kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGN0Zl9tZXRob2RcbiAgICAgICAgKGxldCB4MCwgeDEsIHgyLCB4MyA9IHgwIGluXG4gICAgICAgICAoeDAsIGNvcHlfcHJpdmF0ZV9mbGFnIHgxLCBjb3B5X3ZpcnR1YWxfZmxhZyB4MiwgY29weV9jb3JlX3R5cGUgeDMpKVxuICB8IEZyb20uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfY29uc3RyYWludFxuICAgICAgICAobGV0IHgwLCB4MSA9IHgwIGluXG4gICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxKSlcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfYXR0cmlidXRlIChjb3B5X2F0dHJpYnV0ZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QY3RmX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjdGZfZXh0ZW5zaW9uIChjb3B5X2V4dGVuc2lvbiB4MClcblxuYW5kIGNvcHlfZXh0ZW5zaW9uIDogRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb24gPVxuIGZ1biB4IC0+XG4gIGxldCB4MCwgeDEgPSB4IGluXG4gIChjb3B5X2xvYyAoZnVuIHggLT4geCkgeDAsIGNvcHlfcGF5bG9hZCB4MSlcblxuYW5kIGNvcHlfY2xhc3NfaW5mb3MgOlxuICAgICAgJ2YwICdnMC5cbiAgICAgICgnZjAgLT4gJ2cwKSAtPlxuICAgICAgJ2YwIEZyb20uUGFyc2V0cmVlLmNsYXNzX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmNsYXNzX2luZm9zID1cbiBmdW4gZjBcbiAgICAge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV92aXJ0O1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjaV9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2V4cHI7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNpX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2lfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV92aXJ0ID0gY29weV92aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgVG8uUGFyc2V0cmVlLnBjaV9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwY2lfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wY2lfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwY2lfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGNpX2V4cHIgPSBmMCBwY2lfZXhwcjtcbiAgICBUby5QYXJzZXRyZWUucGNpX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNpX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNpX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmlydHVhbF9mbGFnIDogRnJvbS5Bc3R0eXBlcy52aXJ0dWFsX2ZsYWcgLT4gVG8uQXN0dHlwZXMudmlydHVhbF9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLlZpcnR1YWwgLT4gVG8uQXN0dHlwZXMuVmlydHVhbFxuICB8IEZyb20uQXN0dHlwZXMuQ29uY3JldGUgLT4gVG8uQXN0dHlwZXMuQ29uY3JldGVcblxuYW5kIGNvcHlfaW5jbHVkZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBUby5QYXJzZXRyZWUuaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gZnVuIHggLT4gY29weV9pbmNsdWRlX2luZm9zIGNvcHlfbW9kdWxlX3R5cGUgeFxuXG5hbmQgY29weV9pbmNsdWRlX2luZm9zIDpcbiAgICAgICdmMCAnZzAuXG4gICAgICAoJ2YwIC0+ICdnMCkgLT5cbiAgICAgICdmMCBGcm9tLlBhcnNldHJlZS5pbmNsdWRlX2luZm9zIC0+XG4gICAgICAnZzAgVG8uUGFyc2V0cmVlLmluY2x1ZGVfaW5mb3MgPVxuIGZ1biBmMFxuICAgICB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGluY2xfbW9kO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBpbmNsX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5waW5jbF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGluY2xfbW9kID0gZjAgcGluY2xfbW9kO1xuICAgIFRvLlBhcnNldHJlZS5waW5jbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBpbmNsX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGluY2xfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X29wZW5fZGVzY3JpcHRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLm9wZW5fZGVzY3JpcHRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG9wZW5fbGlkO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX292ZXJyaWRlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBvcGVuX2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wb3Blbl9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbGlkID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcG9wZW5fbGlkO1xuICAgIFRvLlBhcnNldHJlZS5wb3Blbl9vdmVycmlkZSA9IGNvcHlfb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICBUby5QYXJzZXRyZWUucG9wZW5fbG9jID0gY29weV9sb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgVG8uUGFyc2V0cmVlLnBvcGVuX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcztcbiAgfVxuXG5hbmQgY29weV9vdmVycmlkZV9mbGFnIDpcbiAgICBGcm9tLkFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcgLT4gVG8uQXN0dHlwZXMub3ZlcnJpZGVfZmxhZyA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5PdmVycmlkZSAtPiBUby5Bc3R0eXBlcy5PdmVycmlkZVxuICB8IEZyb20uQXN0dHlwZXMuRnJlc2ggLT4gVG8uQXN0dHlwZXMuRnJlc2hcblxuYW5kIGNvcHlfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+XG4gICAgVG8uUGFyc2V0cmVlLm1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wbXRkX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtdGRfbG9jO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucG10ZF9uYW1lID0gY29weV9sb2MgKGZ1biB4IC0+IHgpIHBtdGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG10ZF90eXBlID0gY29weV9vcHRpb24gY29weV9tb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgVG8uUGFyc2V0cmVlLnBtdGRfbG9jID0gY29weV9sb2NhdGlvbiBwbXRkX2xvYztcbiAgfVxuXG5hbmQgY29weV9tb2R1bGVfZGVjbGFyYXRpb24gOlxuICAgIEZyb20uUGFyc2V0cmVlLm1vZHVsZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBtZF9sb2M7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbWRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbWRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucG1kX3R5cGUgPSBjb3B5X21vZHVsZV90eXBlIHBtZF90eXBlO1xuICAgIFRvLlBhcnNldHJlZS5wbWRfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucG1kX2xvYyA9IGNvcHlfbG9jYXRpb24gcG1kX2xvYztcbiAgfVxuXG5hbmQgY29weV90eXBlX2V4dGVuc2lvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudHlwZV9leHRlbnNpb24gLT4gVG8uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXRoO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXM7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlleHRfYXR0cmlidXRlcztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXRoID0gY29weV9sb2MgY29weV9sb25naWRlbnQgcHR5ZXh0X3BhdGg7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wYXJhbXMgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IHgwLCB4MSA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfdmFyaWFuY2UgeDEpKVxuICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgIExpc3QubWFwIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5ZXh0X3ByaXZhdGU7XG4gICAgVG8uUGFyc2V0cmVlLnB0eWV4dF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGV4dF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBleHRfa2luZDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2xvYztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGV4dF9uYW1lO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2tpbmQgPSBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZDtcbiAgICBUby5QYXJzZXRyZWUucGV4dF9sb2MgPSBjb3B5X2xvY2F0aW9uIHBleHRfbG9jO1xuICAgIFRvLlBhcnNldHJlZS5wZXh0X2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzO1xuICB9XG5cbmFuZCBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIDpcbiAgICBGcm9tLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgIFRvLlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGV4dF9kZWNsICh4MCwgeDEpIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9kZWNsXG4gICAgICAgICggVG8uUGFyc2V0cmVlLlBjc3RyX3R1cGxlIChMaXN0Lm1hcCBjb3B5X2NvcmVfdHlwZSB4MCksXG4gICAgICAgICAgY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgeDEgKVxuICB8IEZyb20uUGFyc2V0cmVlLlBleHRfcmViaW5kIHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUGV4dF9yZWJpbmQgKGNvcHlfbG9jIGNvcHlfbG9uZ2lkZW50IHgwKVxuXG5hbmQgY29weV90eXBlX2RlY2xhcmF0aW9uIDpcbiAgICBGcm9tLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcGFyYW1zO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2NzdHJzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2tpbmQ7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHR5cGVfcHJpdmF0ZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9tYW5pZmVzdDtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB0eXBlX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcHR5cGVfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfcGFyYW1zID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIGxldCB4MCwgeDEgPSB4IGluXG4gICAgICAgICAgKGNvcHlfY29yZV90eXBlIHgwLCBjb3B5X3ZhcmlhbmNlIHgxKSlcbiAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9jc3RycyA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBsZXQgeDAsIHgxLCB4MiA9IHggaW5cbiAgICAgICAgICAoY29weV9jb3JlX3R5cGUgeDAsIGNvcHlfY29yZV90eXBlIHgxLCBjb3B5X2xvY2F0aW9uIHgyKSlcbiAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgVG8uUGFyc2V0cmVlLnB0eXBlX2tpbmQgPSBjb3B5X3R5cGVfa2luZCBwdHlwZV9raW5kO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9wcml2YXRlID0gY29weV9wcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfbWFuaWZlc3QgPSBjb3B5X29wdGlvbiBjb3B5X2NvcmVfdHlwZSBwdHlwZV9tYW5pZmVzdDtcbiAgICBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyA9IGNvcHlfYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgIFRvLlBhcnNldHJlZS5wdHlwZV9sb2MgPSBjb3B5X2xvY2F0aW9uIHB0eXBlX2xvYztcbiAgfVxuXG5hbmQgY29weV9wcml2YXRlX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnByaXZhdGVfZmxhZyAtPiBUby5Bc3R0eXBlcy5wcml2YXRlX2ZsYWcgPVxuICBmdW5jdGlvblxuICB8IEZyb20uQXN0dHlwZXMuUHJpdmF0ZSAtPiBUby5Bc3R0eXBlcy5Qcml2YXRlXG4gIHwgRnJvbS5Bc3R0eXBlcy5QdWJsaWMgLT4gVG8uQXN0dHlwZXMuUHVibGljXG5cbmFuZCBjb3B5X3R5cGVfa2luZCA6IEZyb20uUGFyc2V0cmVlLnR5cGVfa2luZCAtPiBUby5QYXJzZXRyZWUudHlwZV9raW5kID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9hYnN0cmFjdCAtPiBUby5QYXJzZXRyZWUuUHR5cGVfYWJzdHJhY3RcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV92YXJpYW50IHgwIC0+XG4gICAgICBUby5QYXJzZXRyZWUuUHR5cGVfdmFyaWFudCAoTGlzdC5tYXAgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QdHlwZV9yZWNvcmQgKExpc3QubWFwIGNvcHlfbGFiZWxfZGVjbGFyYXRpb24geDApXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHR5cGVfb3BlbiAtPiBUby5QYXJzZXRyZWUuUHR5cGVfb3BlblxuXG5hbmQgY29weV9sYWJlbF9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUubGFiZWxfZGVjbGFyYXRpb24gLT4gVG8uUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9uYW1lO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9tdXRhYmxlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF90eXBlO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBsZF9sb2M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXM7XG4gICAgIH0gLT5cbiAge1xuICAgIFRvLlBhcnNldHJlZS5wbGRfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwbGRfbmFtZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX211dGFibGUgPSBjb3B5X211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX3R5cGUgPSBjb3B5X2NvcmVfdHlwZSBwbGRfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucGxkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGxkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGxkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfbXV0YWJsZV9mbGFnIDogRnJvbS5Bc3R0eXBlcy5tdXRhYmxlX2ZsYWcgLT4gVG8uQXN0dHlwZXMubXV0YWJsZV9mbGFnID1cbiAgZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkltbXV0YWJsZSAtPiBUby5Bc3R0eXBlcy5JbW11dGFibGVcbiAgfCBGcm9tLkFzdHR5cGVzLk11dGFibGUgLT4gVG8uQXN0dHlwZXMuTXV0YWJsZVxuXG5hbmQgY29weV9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT5cbiAgICBUby5QYXJzZXRyZWUuY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuIGZ1biB7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX25hbWU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX2FyZ3M7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucGNkX3JlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wY2RfbG9jO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnBjZF9hdHRyaWJ1dGVzO1xuICAgICB9IC0+XG4gIHtcbiAgICBUby5QYXJzZXRyZWUucGNkX25hbWUgPSBjb3B5X2xvYyAoZnVuIHggLT4geCkgcGNkX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnBjZF9hcmdzID1cbiAgICAgIFRvLlBhcnNldHJlZS5QY3N0cl90dXBsZSAoTGlzdC5tYXAgY29weV9jb3JlX3R5cGUgcGNkX2FyZ3MpO1xuICAgIFRvLlBhcnNldHJlZS5wY2RfcmVzID0gY29weV9vcHRpb24gY29weV9jb3JlX3R5cGUgcGNkX3JlcztcbiAgICBUby5QYXJzZXRyZWUucGNkX2xvYyA9IGNvcHlfbG9jYXRpb24gcGNkX2xvYztcbiAgICBUby5QYXJzZXRyZWUucGNkX2F0dHJpYnV0ZXMgPSBjb3B5X2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXM7XG4gIH1cblxuYW5kIGNvcHlfdmFyaWFuY2UgOiBGcm9tLkFzdHR5cGVzLnZhcmlhbmNlIC0+IFRvLkFzdHR5cGVzLnZhcmlhbmNlID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLkNvdmFyaWFudCAtPiBUby5Bc3R0eXBlcy5Db3ZhcmlhbnRcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnRyYXZhcmlhbnQgLT4gVG8uQXN0dHlwZXMuQ29udHJhdmFyaWFudFxuICB8IEZyb20uQXN0dHlwZXMuSW52YXJpYW50IC0+IFRvLkFzdHR5cGVzLkludmFyaWFudFxuXG5hbmQgY29weV92YWx1ZV9kZXNjcmlwdGlvbiA6XG4gICAgRnJvbS5QYXJzZXRyZWUudmFsdWVfZGVzY3JpcHRpb24gLT4gVG8uUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID1cbiBmdW4ge1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfbmFtZTtcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX3R5cGU7XG4gICAgICAgRnJvbS5QYXJzZXRyZWUucHZhbF9wcmltO1xuICAgICAgIEZyb20uUGFyc2V0cmVlLnB2YWxfYXR0cmlidXRlcztcbiAgICAgICBGcm9tLlBhcnNldHJlZS5wdmFsX2xvYztcbiAgICAgfSAtPlxuICB7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfbmFtZSA9IGNvcHlfbG9jIChmdW4geCAtPiB4KSBwdmFsX25hbWU7XG4gICAgVG8uUGFyc2V0cmVlLnB2YWxfdHlwZSA9IGNvcHlfY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9wcmltID0gTGlzdC5tYXAgKGZ1biB4IC0+IHgpIHB2YWxfcHJpbTtcbiAgICBUby5QYXJzZXRyZWUucHZhbF9hdHRyaWJ1dGVzID0gY29weV9hdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICBUby5QYXJzZXRyZWUucHZhbF9sb2MgPSBjb3B5X2xvY2F0aW9uIHB2YWxfbG9jO1xuICB9XG5cbmFuZCBjb3B5X2Nsb3NlZF9mbGFnIDogRnJvbS5Bc3R0eXBlcy5jbG9zZWRfZmxhZyAtPiBUby5Bc3R0eXBlcy5jbG9zZWRfZmxhZyA9XG4gIGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5DbG9zZWQgLT4gVG8uQXN0dHlwZXMuQ2xvc2VkXG4gIHwgRnJvbS5Bc3R0eXBlcy5PcGVuIC0+IFRvLkFzdHR5cGVzLk9wZW5cblxuYW5kIGNvcHlfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmxhYmVsID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9hcmdfbGFiZWwgOiBGcm9tLkFzdHR5cGVzLmxhYmVsIC0+IFRvLkFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gZnVuIHggLT5cbiAgaWYgeCA8PiBcIlwiIHRoZW5cbiAgICBpZiB4LlswXSA9ICc/JyB0aGVuXG4gICAgICBUby5Bc3R0eXBlcy5PcHRpb25hbCAoU3RyaW5nLnN1YiB4IDEgKFN0cmluZy5sZW5ndGggeCAtIDEpKVxuICAgIGVsc2UgVG8uQXN0dHlwZXMuTGFiZWxsZWQgeFxuICBlbHNlIFRvLkFzdHR5cGVzLk5vbGFiZWxcblxuYW5kIGNvcHlfcmVjX2ZsYWcgOiBGcm9tLkFzdHR5cGVzLnJlY19mbGFnIC0+IFRvLkFzdHR5cGVzLnJlY19mbGFnID0gZnVuY3Rpb25cbiAgfCBGcm9tLkFzdHR5cGVzLk5vbnJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5Ob25yZWN1cnNpdmVcbiAgfCBGcm9tLkFzdHR5cGVzLlJlY3Vyc2l2ZSAtPiBUby5Bc3R0eXBlcy5SZWN1cnNpdmVcblxuYW5kIGNvcHlfY29uc3RhbnQgOiBGcm9tLkFzdHR5cGVzLmNvbnN0YW50IC0+IFRvLlBhcnNldHJlZS5jb25zdGFudCA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoc3RyaW5nX29mX2ludCB4MCwgTm9uZSlcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X2NoYXIgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9jaGFyIHgwXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9zdHJpbmcgKHgwLCB4MSkgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3Rfc3RyaW5nICh4MCwgY29weV9vcHRpb24gKGZ1biB4IC0+IHgpIHgxKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfZmxvYXQgeDAgLT4gVG8uUGFyc2V0cmVlLlBjb25zdF9mbG9hdCAoeDAsIE5vbmUpXG4gIHwgRnJvbS5Bc3R0eXBlcy5Db25zdF9pbnQzMiB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChJbnQzMi50b19zdHJpbmcgeDAsIFNvbWUgJ2wnKVxuICB8IEZyb20uQXN0dHlwZXMuQ29uc3RfaW50NjQgeDAgLT5cbiAgICAgIFRvLlBhcnNldHJlZS5QY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHgwLCBTb21lICdMJylcbiAgfCBGcm9tLkFzdHR5cGVzLkNvbnN0X25hdGl2ZWludCB4MCAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHgwLCBTb21lICduJylcblxuYW5kIGNvcHlfb3B0aW9uIDogJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBvcHRpb24gLT4gJ2cwIG9wdGlvbiA9XG4gZnVuIGYwIC0+IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8IFNvbWUgeDAgLT4gU29tZSAoZjAgeDApXG5cbmFuZCBjb3B5X2xvbmdpZGVudCA6IExvbmdpZGVudC50IC0+IExvbmdpZGVudC50ID0gZnVuIHggLT4geFxuXG5hbmQgY29weV9sb2MgOlxuICAgICAgJ2YwICdnMC4gKCdmMCAtPiAnZzApIC0+ICdmMCBGcm9tLkFzdHR5cGVzLmxvYyAtPiAnZzAgVG8uQXN0dHlwZXMubG9jID1cbiBmdW4gZjAgeyBGcm9tLkFzdHR5cGVzLnR4dDsgRnJvbS5Bc3R0eXBlcy5sb2MgfSAtPlxuICB7IFRvLkFzdHR5cGVzLnR4dCA9IGYwIHR4dDsgVG8uQXN0dHlwZXMubG9jID0gY29weV9sb2NhdGlvbiBsb2MgfVxuXG5hbmQgY29weV9sb2NhdGlvbiA6IExvY2F0aW9uLnQgLT4gTG9jYXRpb24udCA9IGZ1biB4IC0+IHhcbmFuZCBjb3B5X2Jvb2wgOiBib29sIC0+IGJvb2wgPSBmdW5jdGlvbiBmYWxzZSAtPiBmYWxzZSB8IHRydWUgLT4gdHJ1ZVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbnMgdHlwZXMgPVxuICBsZXQgaXNfbm9ucmVjIChhdHRyLCBfKSA9IGF0dHIuTG9jYXRpb24udHh0ID0gXCJub25yZWNcIiBpblxuICBtYXRjaCBMaXN0Lm1hcCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gdHlwZXMgd2l0aFxuICB8IHggOjogeHMgd2hlbiBMaXN0LmV4aXN0cyBpc19ub25yZWMgeC5Uby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyAtPlxuICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPVxuICAgICAgICBMaXN0LmZpbHRlciAoZnVuIHggLT4gbm90IChpc19ub25yZWMgeCkpIHguVG8uUGFyc2V0cmVlLnB0eXBlX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICAoVG8uQXN0dHlwZXMuTm9ucmVjdXJzaXZlLCB7IHggd2l0aCBUby5QYXJzZXRyZWUucHR5cGVfYXR0cmlidXRlcyB9IDo6IHhzKVxuICB8IHR5cGVzIC0+IChUby5Bc3R0eXBlcy5SZWN1cnNpdmUsIHR5cGVzKVxuXG5sZXQgcmVjIGNvcHlfdG9wbGV2ZWxfcGhyYXNlIDpcbiAgICBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZSA9IGZ1bmN0aW9uXG4gIHwgRnJvbS5QYXJzZXRyZWUuUHRvcF9kZWYgeDAgLT4gVG8uUGFyc2V0cmVlLlB0b3BfZGVmIChjb3B5X3N0cnVjdHVyZSB4MClcbiAgfCBGcm9tLlBhcnNldHJlZS5QdG9wX2RpciAoeDAsIHgxKSAtPlxuICAgICAgVG8uUGFyc2V0cmVlLlB0b3BfZGlyICh4MCwgY29weV9kaXJlY3RpdmVfYXJndW1lbnQgeDEpXG5cbmFuZCBjb3B5X2RpcmVjdGl2ZV9hcmd1bWVudCA6XG4gICAgRnJvbS5QYXJzZXRyZWUuZGlyZWN0aXZlX2FyZ3VtZW50IC0+IFRvLlBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPVxuICBmdW5jdGlvblxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfbm9uZSAtPiBUby5QYXJzZXRyZWUuUGRpcl9ub25lXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9zdHJpbmcgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfc3RyaW5nIHgwXG4gIHwgRnJvbS5QYXJzZXRyZWUuUGRpcl9pbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaW50IChzdHJpbmdfb2ZfaW50IHgwLCBOb25lKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfaWRlbnQgeDAgLT4gVG8uUGFyc2V0cmVlLlBkaXJfaWRlbnQgKGNvcHlfbG9uZ2lkZW50IHgwKVxuICB8IEZyb20uUGFyc2V0cmVlLlBkaXJfYm9vbCB4MCAtPiBUby5QYXJzZXRyZWUuUGRpcl9ib29sIChjb3B5X2Jvb2wgeDApXG5cbmxldCBjb3B5X2Nhc2VzIHggPSBMaXN0Lm1hcCBjb3B5X2Nhc2UgeFxubGV0IGNvcHlfcGF0ID0gY29weV9wYXR0ZXJuXG5sZXQgY29weV9leHByID0gY29weV9leHByZXNzaW9uXG5sZXQgY29weV90eXAgPSBjb3B5X2NvcmVfdHlwZVxuIiwibGV0IGlzX2tleXdvcmQgPSBmdW5jdGlvblxuICB8IFwiYW5kXCIgLT4gdHJ1ZVxuICB8IFwiYXNcIiAtPiB0cnVlXG4gIHwgXCJhc3NlcnRcIiAtPiB0cnVlXG4gIHwgXCJiZWdpblwiIC0+IHRydWVcbiAgfCBcImNsYXNzXCIgLT4gdHJ1ZVxuICB8IFwiY29uc3RyYWludFwiIC0+IHRydWVcbiAgfCBcImRvXCIgLT4gdHJ1ZVxuICB8IFwiZG9uZVwiIC0+IHRydWVcbiAgfCBcImRvd250b1wiIC0+IHRydWVcbiAgfCBcImVsc2VcIiAtPiB0cnVlXG4gIHwgXCJlbmRcIiAtPiB0cnVlXG4gIHwgXCJleGNlcHRpb25cIiAtPiB0cnVlXG4gIHwgXCJleHRlcm5hbFwiIC0+IHRydWVcbiAgfCBcImZhbHNlXCIgLT4gdHJ1ZVxuICB8IFwiZm9yXCIgLT4gdHJ1ZVxuICB8IFwiZnVuXCIgLT4gdHJ1ZVxuICB8IFwiZnVuY3Rpb25cIiAtPiB0cnVlXG4gIHwgXCJmdW5jdG9yXCIgLT4gdHJ1ZVxuICB8IFwiaWZcIiAtPiB0cnVlXG4gIHwgXCJpblwiIC0+IHRydWVcbiAgfCBcImluY2x1ZGVcIiAtPiB0cnVlXG4gIHwgXCJpbmhlcml0XCIgLT4gdHJ1ZVxuICB8IFwiaW5pdGlhbGl6ZXJcIiAtPiB0cnVlXG4gIHwgXCJsYXp5XCIgLT4gdHJ1ZVxuICB8IFwibGV0XCIgLT4gdHJ1ZVxuICB8IFwibWF0Y2hcIiAtPiB0cnVlXG4gIHwgXCJtZXRob2RcIiAtPiB0cnVlXG4gIHwgXCJtb2R1bGVcIiAtPiB0cnVlXG4gIHwgXCJtdXRhYmxlXCIgLT4gdHJ1ZVxuICB8IFwibmV3XCIgLT4gdHJ1ZVxuICB8IFwibm9ucmVjXCIgLT4gdHJ1ZVxuICB8IFwib2JqZWN0XCIgLT4gdHJ1ZVxuICB8IFwib2ZcIiAtPiB0cnVlXG4gIHwgXCJvcGVuXCIgLT4gdHJ1ZVxuICB8IFwib3JcIiAtPiB0cnVlXG4gICgqIHwgXCJwYXJzZXJcIiAtPiB0cnVlICopXG4gIHwgXCJwcml2YXRlXCIgLT4gdHJ1ZVxuICB8IFwicmVjXCIgLT4gdHJ1ZVxuICB8IFwic2lnXCIgLT4gdHJ1ZVxuICB8IFwic3RydWN0XCIgLT4gdHJ1ZVxuICB8IFwidGhlblwiIC0+IHRydWVcbiAgfCBcInRvXCIgLT4gdHJ1ZVxuICB8IFwidHJ1ZVwiIC0+IHRydWVcbiAgfCBcInRyeVwiIC0+IHRydWVcbiAgfCBcInR5cGVcIiAtPiB0cnVlXG4gIHwgXCJ2YWxcIiAtPiB0cnVlXG4gIHwgXCJ2aXJ0dWFsXCIgLT4gdHJ1ZVxuICB8IFwid2hlblwiIC0+IHRydWVcbiAgfCBcIndoaWxlXCIgLT4gdHJ1ZVxuICB8IFwid2l0aFwiIC0+IHRydWVcbiAgfCBcImxvclwiIC0+IHRydWVcbiAgfCBcImx4b3JcIiAtPiB0cnVlXG4gIHwgXCJtb2RcIiAtPiB0cnVlXG4gIHwgXCJsYW5kXCIgLT4gdHJ1ZVxuICB8IFwibHNsXCIgLT4gdHJ1ZVxuICB8IFwibHNyXCIgLT4gdHJ1ZVxuICB8IFwiYXNyXCIgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sIE1pZ3JhdGUgUGFyc2V0cmVlICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcsOpZMOpcmljIEJvdXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSsOpcsOpbWllIERpbWlubywgSmFuZSBTdHJlZXQgRXVyb3BlICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUgKElOUklBKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqJCBvcGVuIEFzdGxpYl9jaW5hcHNfaGVscGVyc1xuICAgIG9wZW4gUHJpbnRmICQqKVxuXG4oKiBDb3B5IG9mIE9DYW1sIHBhcnNldHJlZXMgKilcbigqJFxuICBmb3JlYWNoX3ZlcnNpb24gKGZ1biBzdWZmaXggXyAtPlxuICAgICAgcHJpbnRmIFwibW9kdWxlIEFzdF8lcyA9IEFzdF8lc1xcblwiIHN1ZmZpeCBzdWZmaXgpXG4qKVxubW9kdWxlIEFzdF80MDIgPSBBc3RfNDAyXG5tb2R1bGUgQXN0XzQwMyA9IEFzdF80MDNcbm1vZHVsZSBBc3RfNDA0ID0gQXN0XzQwNFxubW9kdWxlIEFzdF80MDUgPSBBc3RfNDA1XG5tb2R1bGUgQXN0XzQwNiA9IEFzdF80MDZcbm1vZHVsZSBBc3RfNDA3ID0gQXN0XzQwN1xubW9kdWxlIEFzdF80MDggPSBBc3RfNDA4XG5tb2R1bGUgQXN0XzQwOSA9IEFzdF80MDlcbm1vZHVsZSBBc3RfNDEwID0gQXN0XzQxMFxubW9kdWxlIEFzdF80MTEgPSBBc3RfNDExXG5tb2R1bGUgQXN0XzQxMiA9IEFzdF80MTJcbm1vZHVsZSBBc3RfNDEzID0gQXN0XzQxM1xubW9kdWxlIEFzdF80MTQgPSBBc3RfNDE0XG5tb2R1bGUgQXN0XzUwMCA9IEFzdF81MDBcbm1vZHVsZSBBc3RfNTAxID0gQXN0XzUwMVxuKCokKilcblxuKCogTWFudWFsIG1pZ3JhdGlvbiBiZXR3ZWVuIHZlcnNpb25zICopXG4oKiRcbiAgZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biB4IHkgLT5cbiAgICAgIHByaW50ZiBcIm1vZHVsZSBNaWdyYXRlXyVzXyVzID0gTWlncmF0ZV8lc18lc1xcblwiIHggeSB4IHk7XG4gICAgICBwcmludGYgXCJtb2R1bGUgTWlncmF0ZV8lc18lcyA9IE1pZ3JhdGVfJXNfJXNcXG5cIiB5IHggeSB4KVxuKilcbm1vZHVsZSBNaWdyYXRlXzQwMl80MDMgPSBNaWdyYXRlXzQwMl80MDNcbm1vZHVsZSBNaWdyYXRlXzQwM180MDIgPSBNaWdyYXRlXzQwM180MDJcbm1vZHVsZSBNaWdyYXRlXzQwM180MDQgPSBNaWdyYXRlXzQwM180MDRcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDMgPSBNaWdyYXRlXzQwNF80MDNcbm1vZHVsZSBNaWdyYXRlXzQwNF80MDUgPSBNaWdyYXRlXzQwNF80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDQgPSBNaWdyYXRlXzQwNV80MDRcbm1vZHVsZSBNaWdyYXRlXzQwNV80MDYgPSBNaWdyYXRlXzQwNV80MDZcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDUgPSBNaWdyYXRlXzQwNl80MDVcbm1vZHVsZSBNaWdyYXRlXzQwNl80MDcgPSBNaWdyYXRlXzQwNl80MDdcbm1vZHVsZSBNaWdyYXRlXzQwN180MDYgPSBNaWdyYXRlXzQwN180MDZcbm1vZHVsZSBNaWdyYXRlXzQwN180MDggPSBNaWdyYXRlXzQwN180MDhcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDcgPSBNaWdyYXRlXzQwOF80MDdcbm1vZHVsZSBNaWdyYXRlXzQwOF80MDkgPSBNaWdyYXRlXzQwOF80MDlcbm1vZHVsZSBNaWdyYXRlXzQwOV80MDggPSBNaWdyYXRlXzQwOV80MDhcbm1vZHVsZSBNaWdyYXRlXzQwOV80MTAgPSBNaWdyYXRlXzQwOV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMF80MDkgPSBNaWdyYXRlXzQxMF80MDlcbm1vZHVsZSBNaWdyYXRlXzQxMF80MTEgPSBNaWdyYXRlXzQxMF80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTAgPSBNaWdyYXRlXzQxMV80MTBcbm1vZHVsZSBNaWdyYXRlXzQxMV80MTIgPSBNaWdyYXRlXzQxMV80MTJcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTEgPSBNaWdyYXRlXzQxMl80MTFcbm1vZHVsZSBNaWdyYXRlXzQxMl80MTMgPSBNaWdyYXRlXzQxMl80MTNcbm1vZHVsZSBNaWdyYXRlXzQxM180MTIgPSBNaWdyYXRlXzQxM180MTJcbm1vZHVsZSBNaWdyYXRlXzQxM180MTQgPSBNaWdyYXRlXzQxM180MTRcbm1vZHVsZSBNaWdyYXRlXzQxNF80MTMgPSBNaWdyYXRlXzQxNF80MTNcbm1vZHVsZSBNaWdyYXRlXzQxNF81MDAgPSBNaWdyYXRlXzQxNF81MDBcbm1vZHVsZSBNaWdyYXRlXzUwMF80MTQgPSBNaWdyYXRlXzUwMF80MTRcbm1vZHVsZSBNaWdyYXRlXzUwMF81MDEgPSBNaWdyYXRlXzUwMF81MDFcbm1vZHVsZSBNaWdyYXRlXzUwMV81MDAgPSBNaWdyYXRlXzUwMV81MDBcbigqJCopXG5cbigqIENvbXBpbGVyIG1vZHVsZXMgKilcbm1vZHVsZSBBc3RfbWV0YWRhdGEgPSBBc3RfbWV0YWRhdGFcbm1vZHVsZSBDb25maWcgPSBDb25maWdcbm1vZHVsZSBLZXl3b3JkID0gS2V5d29yZFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBQYXJzZSA9IFBhcnNlXG5tb2R1bGUgUHByaW50YXN0ID0gUHByaW50YXN0XG5cbmxldCBpbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKSA9XG4gICgqSUZfQVRfTEVBU1QgNDA4IE9jYW1sX2NvbW1vbi5Db21wbWlzYy5yZWFkX2NsZmxhZ3NfZnJvbV9lbnYgKCkgKilcbiAgKCpJRl9OT1RfQVRfTEVBU1QgNDA4ICgpICopXG4oKiogQWRqdXN0IHRoZSByZXBvcnRpbmcgc3R5bGUgb2YgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBPQ0FNTF9DT0xPUiBhbmQgT0NBTUxfRVJST1JfU1RZTEUuICopXG4iLCJtb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBsZXQgbWFwIGYgbyA9IG1hdGNoIG8gd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHYgLT4gU29tZSAoZiB2KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBBbGFpbiBGcmlzY2gsIExleGlGaSAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDEyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRPRE86IHJlbW92ZSB0aGlzIG9wZW4gKilcbm9wZW4gU3RkbGliMFxubW9kdWxlIExvY2F0aW9uID0gQXN0bGliLkxvY2F0aW9uXG5tb2R1bGUgTG9uZ2lkZW50ID0gQXN0bGliLkxvbmdpZGVudFxub3BlbiBBc3RsaWIuQXN0XzUwMFxuXG5bQEBAd2FybmluZyBcIi05XCJdXG5cbm9wZW4gQXN0dHlwZXNcbm9wZW4gUGFyc2V0cmVlXG5cbnR5cGUgJ2Egd2l0aF9sb2MgPSAnYSBMb2NhdGlvbi5sb2NcbnR5cGUgbG9jID0gTG9jYXRpb24udFxudHlwZSBsaWQgPSBMb25naWRlbnQudCB3aXRoX2xvY1xudHlwZSBzdHIgPSBzdHJpbmcgd2l0aF9sb2NcbnR5cGUgc3RyX29wdCA9IHN0cmluZyBvcHRpb24gd2l0aF9sb2NcbnR5cGUgYXR0cnMgPSBhdHRyaWJ1dGUgbGlzdFxuXG5sZXQgZGVmYXVsdF9sb2MgPSByZWYgTG9jYXRpb24ubm9uZVxuXG50eXBlIHJlZl9hbmRfdmFsdWUgPSBSIDogJ2EgcmVmICogJ2EgLT4gcmVmX2FuZF92YWx1ZVxuXG5sZXQgcHJvdGVjdF9yZWYgPVxuICBsZXQgc2V0X3JlZiAoUiAociwgdikpID0gciA6PSB2IGluXG4gIGZ1biByZWYgZiAtPlxuICAgIGxldCAoUiAociwgXykpID0gcmVmIGluXG4gICAgbGV0IGJhY2t1cCA9IFIgKHIsICFyKSBpblxuICAgIHNldF9yZWYgcmVmO1xuICAgIG1hdGNoIGYgKCkgd2l0aFxuICAgIHwgeCAtPlxuICAgICAgICBzZXRfcmVmIGJhY2t1cDtcbiAgICAgICAgeFxuICAgIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgICAgc2V0X3JlZiBiYWNrdXA7XG4gICAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfZGVmYXVsdF9sb2MgbCBmID0gcHJvdGVjdF9yZWYgKFIgKGRlZmF1bHRfbG9jLCBsKSkgZlxuXG5tb2R1bGUgQ29uc3QgPSBzdHJ1Y3RcbiAgbGV0IGludGVnZXIgP3N1ZmZpeCBpID0gUGNvbnN0X2ludGVnZXIgKGksIHN1ZmZpeClcbiAgbGV0IGludCA/c3VmZml4IGkgPSBpbnRlZ2VyID9zdWZmaXggKEludC50b19zdHJpbmcgaSlcbiAgbGV0IGludDMyID8oc3VmZml4ID0gJ2wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQzMi50b19zdHJpbmcgaSlcbiAgbGV0IGludDY0ID8oc3VmZml4ID0gJ0wnKSBpID0gaW50ZWdlciB+c3VmZml4IChJbnQ2NC50b19zdHJpbmcgaSlcbiAgbGV0IG5hdGl2ZWludCA/KHN1ZmZpeCA9ICduJykgaSA9IGludGVnZXIgfnN1ZmZpeCAoTmF0aXZlaW50LnRvX3N0cmluZyBpKVxuICBsZXQgZmxvYXQgP3N1ZmZpeCBmID0gUGNvbnN0X2Zsb2F0IChmLCBzdWZmaXgpXG4gIGxldCBjaGFyIGMgPSBQY29uc3RfY2hhciBjXG5cbiAgbGV0IHN0cmluZyA/cXVvdGF0aW9uX2RlbGltaXRlciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgcyA9XG4gICAgUGNvbnN0X3N0cmluZyAocywgbG9jLCBxdW90YXRpb25fZGVsaW1pdGVyKVxuZW5kXG5cbm1vZHVsZSBBdHRyID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgbmFtZSBwYXlsb2FkID1cbiAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgVHlwID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7XG4gICAgICBwdHlwX2Rlc2MgPSBkO1xuICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IGQucHR5cF9hdHRyaWJ1dGVzIEAgWyBhIF0gfVxuICBsZXQgYW55ID9sb2MgP2F0dHJzICgpID0gbWsgP2xvYyA/YXR0cnMgUHR5cF9hbnlcbiAgbGV0IHZhciA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfdmFyIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IHR1cGxlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHR5cF90dXBsZSBhKVxuICBsZXQgY29uc3RyID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2NvbnN0ciAoYSwgYikpXG4gIGxldCBvYmplY3RfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQdHlwX29iamVjdCAoYSwgYikpXG4gIGxldCBjbGFzc18gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfY2xhc3MgKGEsIGIpKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfYWxpYXMgKGEsIGIpKVxuICBsZXQgdmFyaWFudCA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUHR5cF9wb2x5IChhLCBiKSlcbiAgbGV0IHBhY2thZ2UgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFB0eXBfcGFja2FnZSAoYSwgYikpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQdHlwX2V4dGVuc2lvbiBhKVxuXG4gIGxldCBmb3JjZV9wb2x5IHQgPVxuICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGggUHR5cF9wb2x5IF8gLT4gdCB8IF8gLT4gcG9seSB+bG9jOnQucHR5cF9sb2MgW10gdFxuICAoKiAtPiBnaG9zdD8gKilcblxuICBsZXQgdmFyaWZ5X2NvbnN0cnVjdG9ycyB2YXJfbmFtZXMgdCA9XG4gICAgbGV0IGNoZWNrX3ZhcmlhYmxlIHZsIGxvYyB2ID1cbiAgICAgIGlmIExpc3QubWVtIHYgdmwgdGhlblxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInZhcmlhYmxlIGluIHNjb3BlIHN5bnRheCBlcnJvcjogJXNcIiB2XG4gICAgaW5cbiAgICBsZXQgdmFyX25hbWVzID0gTGlzdC5tYXAgKGZ1biB2IC0+IHYudHh0KSB2YXJfbmFtZXMgaW5cbiAgICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgICBsZXQgZGVzYyA9XG4gICAgICAgIG1hdGNoIHQucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIHggLT5cbiAgICAgICAgICAgIGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHg7XG4gICAgICAgICAgICBQdHlwX3ZhciB4XG4gICAgICAgIHwgUHR5cF9hcnJvdyAobGFiZWwsIGNvcmVfdHlwZSwgY29yZV90eXBlJykgLT5cbiAgICAgICAgICAgIFB0eXBfYXJyb3cgKGxhYmVsLCBsb29wIGNvcmVfdHlwZSwgbG9vcCBjb3JlX3R5cGUnKVxuICAgICAgICB8IFB0eXBfdHVwbGUgbHN0IC0+IFB0eXBfdHVwbGUgKExpc3QubWFwIGxvb3AgbHN0KVxuICAgICAgICB8IFB0eXBfY29uc3RyICh7IHR4dCA9IExvbmdpZGVudC5MaWRlbnQgcyB9LCBbXSlcbiAgICAgICAgICB3aGVuIExpc3QubWVtIHMgdmFyX25hbWVzIC0+XG4gICAgICAgICAgICBQdHlwX3ZhciBzXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGxzdCwgbykgLT4gUHR5cF9vYmplY3QgKExpc3QubWFwIGxvb3Bfb2JqZWN0X2ZpZWxkIGxzdCwgbylcbiAgICAgICAgfCBQdHlwX2NsYXNzIChsb25naWRlbnQsIGxzdCkgLT5cbiAgICAgICAgICAgIFB0eXBfY2xhc3MgKGxvbmdpZGVudCwgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoY29yZV90eXBlLCBzdHJpbmcpIC0+XG4gICAgICAgICAgICBjaGVja192YXJpYWJsZSB2YXJfbmFtZXMgdC5wdHlwX2xvYyBzdHJpbmc7XG4gICAgICAgICAgICBQdHlwX2FsaWFzIChsb29wIGNvcmVfdHlwZSwgc3RyaW5nKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkX2xpc3QsIGZsYWcsIGxibF9sc3Rfb3B0aW9uKSAtPlxuICAgICAgICAgICAgUHR5cF92YXJpYW50XG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBsb29wX3Jvd19maWVsZCByb3dfZmllbGRfbGlzdCwgZmxhZywgbGJsX2xzdF9vcHRpb24pXG4gICAgICAgIHwgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBjb3JlX3R5cGUpIC0+XG4gICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IGNoZWNrX3ZhcmlhYmxlIHZhcl9uYW1lcyB0LnB0eXBfbG9jIHYudHh0KVxuICAgICAgICAgICAgICBzdHJpbmdfbHN0O1xuICAgICAgICAgICAgUHR5cF9wb2x5IChzdHJpbmdfbHN0LCBsb29wIGNvcmVfdHlwZSlcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgKGxvbmdpZGVudCwgbHN0KSAtPlxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlXG4gICAgICAgICAgICAgIChsb25naWRlbnQsIExpc3QubWFwIChmdW4gKG4sIHR5cCkgLT4gKG4sIGxvb3AgdHlwKSkgbHN0KVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpIC0+IFB0eXBfZXh0ZW5zaW9uIChzLCBhcmcpXG4gICAgICBpblxuICAgICAgeyB0IHdpdGggcHR5cF9kZXNjID0gZGVzYyB9XG4gICAgYW5kIGxvb3Bfcm93X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwcmZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnByZl9kZXNjIHdpdGhcbiAgICAgICAgfCBSdGFnIChsYWJlbCwgZmxhZywgbHN0KSAtPiBSdGFnIChsYWJlbCwgZmxhZywgTGlzdC5tYXAgbG9vcCBsc3QpXG4gICAgICAgIHwgUmluaGVyaXQgdCAtPiBSaW5oZXJpdCAobG9vcCB0KVxuICAgICAgaW5cbiAgICAgIHsgZmllbGQgd2l0aCBwcmZfZGVzYyB9XG4gICAgYW5kIGxvb3Bfb2JqZWN0X2ZpZWxkIGZpZWxkID1cbiAgICAgIGxldCBwb2ZfZGVzYyA9XG4gICAgICAgIG1hdGNoIGZpZWxkLnBvZl9kZXNjIHdpdGhcbiAgICAgICAgfCBPdGFnIChsYWJlbCwgdCkgLT4gT3RhZyAobGFiZWwsIGxvb3AgdClcbiAgICAgICAgfCBPaW5oZXJpdCB0IC0+IE9pbmhlcml0IChsb29wIHQpXG4gICAgICBpblxuICAgICAgeyBmaWVsZCB3aXRoIHBvZl9kZXNjIH1cbiAgICBpblxuICAgIGxvb3AgdFxuZW5kXG5cbm1vZHVsZSBQYXQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHtcbiAgICAgIHBwYXRfZGVzYyA9IGQ7XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gZC5wcGF0X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBhbnkgP2xvYyA/YXR0cnMgKCkgPSBtayA/bG9jID9hdHRycyBQcGF0X2FueVxuICBsZXQgdmFyID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF92YXIgYSlcbiAgbGV0IGFsaWFzID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2FsaWFzIChhLCBiKSlcbiAgbGV0IGNvbnN0YW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9jb25zdGFudCBhKVxuICBsZXQgaW50ZXJ2YWwgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R1cGxlIGEpXG5cbiAgbGV0IGNvbnN0cnVjdCA/bG9jID9hdHRycyBhIGIgPVxuICAgIG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cnVjdCAoYSwgT3B0aW9uLm1hcCAoZnVuIGIgLT4gKFtdLCBiKSkgYikpXG5cbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGFycmF5ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9hcnJheSBhKVxuICBsZXQgb3JfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X29yIChhLCBiKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQcGF0X2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgdHlwZV8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3R5cGUgYSlcbiAgbGV0IGxhenlfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9sYXp5IGEpXG4gIGxldCB1bnBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQcGF0X3VucGFjayBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfb3BlbiAoYSwgYikpXG4gIGxldCBleGNlcHRpb25fID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUHBhdF9leGNlcHRpb24gYSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBwYXRfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIEV4cCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAge1xuICAgICAgcGV4cF9kZXNjID0gZDtcbiAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBleHBfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBkLnBleHBfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9pZGVudCBhKVxuICBsZXQgY29uc3RhbnQgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2NvbnN0YW50IGEpXG4gIGxldCBsZXRfID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0IChhLCBiLCBjKSlcbiAgbGV0IGZ1bl8gP2xvYyA/YXR0cnMgYSBiIGMgZCA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBmdW5jdGlvbl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2Z1bmN0aW9uIGEpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9hcHBseSAoYSwgYikpXG4gIGxldCBtYXRjaF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbWF0Y2ggKGEsIGIpKVxuICBsZXQgdHJ5XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF90cnkgKGEsIGIpKVxuICBsZXQgdHVwbGUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3R1cGxlIGEpXG4gIGxldCBjb25zdHJ1Y3QgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RydWN0IChhLCBiKSlcbiAgbGV0IHZhcmlhbnQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfdmFyaWFudCAoYSwgYikpXG4gIGxldCByZWNvcmQgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfcmVjb3JkIChhLCBiKSlcbiAgbGV0IGZpZWxkID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2ZpZWxkIChhLCBiKSlcbiAgbGV0IHNldGZpZWxkID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpKVxuICBsZXQgYXJyYXkgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX2FycmF5IGEpXG4gIGxldCBpZnRoZW5lbHNlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykpXG4gIGxldCBzZXF1ZW5jZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXF1ZW5jZSAoYSwgYikpXG4gIGxldCB3aGlsZV8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfd2hpbGUgKGEsIGIpKVxuICBsZXQgZm9yXyA/bG9jID9hdHRycyBhIGIgYyBkIGUgPSBtayA/bG9jID9hdHRycyAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfY29uc3RyYWludCAoYSwgYikpXG4gIGxldCBjb2VyY2UgP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGV4cF9jb2VyY2UgKGEsIGIsIGMpKVxuICBsZXQgc2VuZCA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZW5kIChhLCBiKSlcbiAgbGV0IG5ld18gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX25ldyBhKVxuICBsZXQgc2V0aW5zdHZhciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSlcbiAgbGV0IG92ZXJyaWRlID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGV4cF9vdmVycmlkZSBhKVxuICBsZXQgbGV0bW9kdWxlID9sb2MgP2F0dHJzIGEgYiBjID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSlcbiAgbGV0IGxldGV4Y2VwdGlvbiA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpKVxuICBsZXQgYXNzZXJ0XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfYXNzZXJ0IGEpXG4gIGxldCBsYXp5XyA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfbGF6eSBhKVxuICBsZXQgcG9seSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9wb2x5IChhLCBiKSlcbiAgbGV0IG9iamVjdF8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29iamVjdCBhKVxuICBsZXQgbmV3dHlwZSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGV4cF9uZXd0eXBlIChhLCBiKSlcbiAgbGV0IHBhY2sgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQZXhwX3BhY2sgYSlcbiAgbGV0IG9wZW5fID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQZXhwX29wZW4gKGEsIGIpKVxuXG4gIGxldCBsZXRvcCA/bG9jID9hdHRycyBsZXRfIGFuZHMgYm9keSA9XG4gICAgbWsgP2xvYyA/YXR0cnMgKFBleHBfbGV0b3AgeyBsZXRfOyBhbmRzOyBib2R5IH0pXG5cbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBleHBfZXh0ZW5zaW9uIGEpXG4gIGxldCB1bnJlYWNoYWJsZSA/bG9jID9hdHRycyAoKSA9IG1rID9sb2MgP2F0dHJzIFBleHBfdW5yZWFjaGFibGVcbiAgbGV0IGNhc2UgbGhzID9ndWFyZCByaHMgPSB7IHBjX2xocyA9IGxoczsgcGNfZ3VhcmQgPSBndWFyZDsgcGNfcmhzID0gcmhzIH1cblxuICBsZXQgYmluZGluZ19vcCBvcCBwYXQgZXhwIGxvYyA9XG4gICAgeyBwYm9wX29wID0gb3A7IHBib3BfcGF0ID0gcGF0OyBwYm9wX2V4cCA9IGV4cDsgcGJvcF9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBNdHkgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcG10eV9kZXNjID0gZDsgcG10eV9sb2MgPSBsb2M7IHBtdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBkLnBtdHlfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGlkZW50ID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9pZGVudCBhKVxuICBsZXQgYWxpYXMgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X2FsaWFzIGEpXG4gIGxldCBzaWduYXR1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3NpZ25hdHVyZSBhKVxuICBsZXQgZnVuY3Rvcl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBtdHlfZnVuY3RvciAoYSwgYikpXG4gIGxldCB3aXRoXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUG10eV93aXRoIChhLCBiKSlcbiAgbGV0IHR5cGVvZl8gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQbXR5X3R5cGVvZiBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUG10eV9leHRlbnNpb24gYSlcbmVuZFxuXG5tb2R1bGUgTW9kID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBtb2RfZGVzYyA9IGQ7IHBtb2RfbG9jID0gbG9jOyBwbW9kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gZC5wbW9kX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBpZGVudCA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfaWRlbnQgeClcbiAgbGV0IHN0cnVjdHVyZSA/bG9jID9hdHRycyB4ID0gbWsgP2xvYyA/YXR0cnMgKFBtb2Rfc3RydWN0dXJlIHgpXG4gIGxldCBmdW5jdG9yXyA/bG9jID9hdHRycyBhcmcgYm9keSA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2Z1bmN0b3IgKGFyZywgYm9keSkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBtMSBtMiA9IG1rID9sb2MgP2F0dHJzIChQbW9kX2FwcGx5IChtMSwgbTIpKVxuICBsZXQgY29uc3RyYWludF8gP2xvYyA/YXR0cnMgbSBtdHkgPSBtayA/bG9jID9hdHRycyAoUG1vZF9jb25zdHJhaW50IChtLCBtdHkpKVxuICBsZXQgdW5wYWNrID9sb2MgP2F0dHJzIGUgPSBtayA/bG9jID9hdHRycyAoUG1vZF91bnBhY2sgZSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBtb2RfZXh0ZW5zaW9uIGEpXG5lbmRcblxubW9kdWxlIFNpZyA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpIGQgPSB7IHBzaWdfZGVzYyA9IGQ7IHBzaWdfbG9jID0gbG9jIH1cbiAgbGV0IHZhbHVlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfdmFsdWUgYSlcbiAgbGV0IHR5cGVfID9sb2MgcmVjX2ZsYWcgYSA9IG1rID9sb2MgKFBzaWdfdHlwZSAocmVjX2ZsYWcsIGEpKVxuICBsZXQgdHlwZV9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX3R5cGVzdWJzdCBhKVxuICBsZXQgdHlwZV9leHRlbnNpb24gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ190eXBleHQgYSlcbiAgbGV0IGV4Y2VwdGlvbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19leGNlcHRpb24gYSlcbiAgbGV0IG1vZHVsZV8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19tb2R1bGUgYSlcbiAgbGV0IG1vZF9zdWJzdCA/bG9jIGEgPSBtayA/bG9jIChQc2lnX21vZHN1YnN0IGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHNpZ19vcGVuIGEpXG4gIGxldCBpbmNsdWRlXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2luY2x1ZGUgYSlcbiAgbGV0IGNsYXNzXyA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2NsYXNzIGEpXG4gIGxldCBjbGFzc190eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzaWdfY2xhc3NfdHlwZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHNpZ19leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc2lnX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBTdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSBkID0geyBwc3RyX2Rlc2MgPSBkOyBwc3RyX2xvYyA9IGxvYyB9XG4gIGxldCBldmFsID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9ldmFsIChhLCBhdHRycykpXG4gIGxldCB2YWx1ZSA/bG9jIGEgYiA9IG1rID9sb2MgKFBzdHJfdmFsdWUgKGEsIGIpKVxuICBsZXQgcHJpbWl0aXZlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcHJpbWl0aXZlIGEpXG4gIGxldCB0eXBlXyA/bG9jIHJlY19mbGFnIGEgPSBtayA/bG9jIChQc3RyX3R5cGUgKHJlY19mbGFnLCBhKSlcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfdHlwZXh0IGEpXG4gIGxldCBleGNlcHRpb25fID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfZXhjZXB0aW9uIGEpXG4gIGxldCBtb2R1bGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdWxlIGEpXG4gIGxldCByZWNfbW9kdWxlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfcmVjbW9kdWxlIGEpXG4gIGxldCBtb2R0eXBlID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfbW9kdHlwZSBhKVxuICBsZXQgb3Blbl8gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9vcGVuIGEpXG4gIGxldCBjbGFzc18gP2xvYyBhID0gbWsgP2xvYyAoUHN0cl9jbGFzcyBhKVxuICBsZXQgY2xhc3NfdHlwZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2NsYXNzX3R5cGUgYSlcbiAgbGV0IGluY2x1ZGVfID9sb2MgYSA9IG1rID9sb2MgKFBzdHJfaW5jbHVkZSBhKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgPyhhdHRycyA9IFtdKSBhID0gbWsgP2xvYyAoUHN0cl9leHRlbnNpb24gKGEsIGF0dHJzKSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQc3RyX2F0dHJpYnV0ZSBhKVxuZW5kXG5cbm1vZHVsZSBDbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgZCA9XG4gICAgeyBwY2xfZGVzYyA9IGQ7IHBjbF9sb2MgPSBsb2M7IHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuXG4gIGxldCBhdHRyIGQgYSA9IHsgZCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gZC5wY2xfYXR0cmlidXRlcyBAIFsgYSBdIH1cbiAgbGV0IGNvbnN0ciA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0ciAoYSwgYikpXG4gIGxldCBzdHJ1Y3R1cmUgP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2xfc3RydWN0dXJlIGEpXG4gIGxldCBmdW5fID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGNsX2Z1biAoYSwgYiwgYywgZCkpXG4gIGxldCBhcHBseSA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2FwcGx5IChhLCBiKSlcbiAgbGV0IGxldF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNsX2xldCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNsX2V4dGVuc2lvbiBhKVxuICBsZXQgb3Blbl8gP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjbF9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3R5ID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdHlfZGVzYyA9IGQ7IHBjdHlfbG9jID0gbG9jOyBwY3R5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGF0dHIgZCBhID0geyBkIHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gZC5wY3R5X2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG4gIGxldCBjb25zdHIgP2xvYyA/YXR0cnMgYSBiID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfY29uc3RyIChhLCBiKSlcbiAgbGV0IHNpZ25hdHVyZSA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfc2lnbmF0dXJlIGEpXG4gIGxldCBhcnJvdyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY3R5X2Fycm93IChhLCBiLCBjKSlcbiAgbGV0IGV4dGVuc2lvbiA/bG9jID9hdHRycyBhID0gbWsgP2xvYyA/YXR0cnMgKFBjdHlfZXh0ZW5zaW9uIGEpXG4gIGxldCBvcGVuXyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGN0eV9vcGVuIChhLCBiKSlcbmVuZFxuXG5tb2R1bGUgQ3RmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkID1cbiAgICB7IHBjdGZfZGVzYyA9IGQ7IHBjdGZfbG9jID0gbG9jOyBwY3RmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IGluaGVyaXRfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9pbmhlcml0IGEpXG4gIGxldCB2YWxfID9sb2MgP2F0dHJzIGEgYiBjIGQgPSBtayA/bG9jID9hdHRycyAoUGN0Zl92YWwgKGEsIGIsIGMsIGQpKVxuICBsZXQgbWV0aG9kXyA/bG9jID9hdHRycyBhIGIgYyBkID0gbWsgP2xvYyA/YXR0cnMgKFBjdGZfbWV0aG9kIChhLCBiLCBjLCBkKSlcbiAgbGV0IGNvbnN0cmFpbnRfID9sb2MgP2F0dHJzIGEgYiA9IG1rID9sb2MgP2F0dHJzIChQY3RmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgZXh0ZW5zaW9uID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGN0Zl9leHRlbnNpb24gYSlcbiAgbGV0IGF0dHJpYnV0ZSA/bG9jIGEgPSBtayA/bG9jIChQY3RmX2F0dHJpYnV0ZSBhKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSBkLnBjdGZfYXR0cmlidXRlcyBAIFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgQ2YgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIGQgPVxuICAgIHsgcGNmX2Rlc2MgPSBkOyBwY2ZfbG9jID0gbG9jOyBwY2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgaW5oZXJpdF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaGVyaXQgKGEsIGIsIGMpKVxuICBsZXQgdmFsXyA/bG9jID9hdHRycyBhIGIgYyA9IG1rID9sb2MgP2F0dHJzIChQY2ZfdmFsIChhLCBiLCBjKSlcbiAgbGV0IG1ldGhvZF8gP2xvYyA/YXR0cnMgYSBiIGMgPSBtayA/bG9jID9hdHRycyAoUGNmX21ldGhvZCAoYSwgYiwgYykpXG4gIGxldCBjb25zdHJhaW50XyA/bG9jID9hdHRycyBhIGIgPSBtayA/bG9jID9hdHRycyAoUGNmX2NvbnN0cmFpbnQgKGEsIGIpKVxuICBsZXQgaW5pdGlhbGl6ZXJfID9sb2MgP2F0dHJzIGEgPSBtayA/bG9jID9hdHRycyAoUGNmX2luaXRpYWxpemVyIGEpXG4gIGxldCBleHRlbnNpb24gP2xvYyA/YXR0cnMgYSA9IG1rID9sb2MgP2F0dHJzIChQY2ZfZXh0ZW5zaW9uIGEpXG4gIGxldCBhdHRyaWJ1dGUgP2xvYyBhID0gbWsgP2xvYyAoUGNmX2F0dHJpYnV0ZSBhKVxuICBsZXQgdmlydHVhbF8gY3QgPSBDZmtfdmlydHVhbCBjdFxuICBsZXQgY29uY3JldGUgbyBlID0gQ2ZrX2NvbmNyZXRlIChvLCBlKVxuICBsZXQgYXR0ciBkIGEgPSB7IGQgd2l0aCBwY2ZfYXR0cmlidXRlcyA9IGQucGNmX2F0dHJpYnV0ZXMgQCBbIGEgXSB9XG5lbmRcblxubW9kdWxlIFZhbCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwcmltID0gW10pIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgcHZhbF90eXBlID0gdHlwO1xuICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgICBwdmFsX2xvYyA9IGxvYztcbiAgICAgIHB2YWxfcHJpbSA9IHByaW07XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNZCA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSB0eXAgPVxuICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cDsgcG1kX2F0dHJpYnV0ZXMgPSBhdHRyczsgcG1kX2xvYyA9IGxvYyB9XG5lbmRcblxubW9kdWxlIE1zID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIHN5biA9XG4gICAge1xuICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgcG1zX21hbmlmZXN0ID0gc3luO1xuICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHBtc19sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNdGQgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID90eXAgbmFtZSA9XG4gICAge1xuICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgIHBtdGRfdHlwZSA9IHR5cDtcbiAgICAgIHBtdGRfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcG10ZF9sb2MgPSBsb2M7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBNYiA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgbmFtZSBleHByID1cbiAgICB7IHBtYl9uYW1lID0gbmFtZTsgcG1iX2V4cHIgPSBleHByOyBwbWJfYXR0cmlidXRlcyA9IGF0dHJzOyBwbWJfbG9jID0gbG9jIH1cbmVuZFxuXG5tb2R1bGUgT3BuID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSA/KG92ZXJyaWRlID0gRnJlc2gpIGV4cHIgPVxuICAgIHtcbiAgICAgIHBvcGVuX2V4cHIgPSBleHByO1xuICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgIHBvcGVuX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5lbmRcblxubW9kdWxlIEluY2wgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pIG1leHByID1cbiAgICB7IHBpbmNsX21vZCA9IG1leHByOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5lbmRcblxubW9kdWxlIFZiID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBwYXQgZXhwciA9XG4gICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gYXR0cnM7IHB2Yl9sb2MgPSBsb2MgfVxuZW5kXG5cbm1vZHVsZSBDaSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2aXJ0ID0gQ29uY3JldGUpID8ocGFyYW1zID0gW10pXG4gICAgICBuYW1lIGV4cHIgPVxuICAgIHtcbiAgICAgIHBjaV92aXJ0ID0gdmlydDtcbiAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwY2lfbmFtZSA9IG5hbWU7XG4gICAgICBwY2lfZXhwciA9IGV4cHI7XG4gICAgICBwY2lfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgICAgcGNpX2xvYyA9IGxvYztcbiAgICB9XG5lbmRcblxubW9kdWxlIFR5cGUgPSBzdHJ1Y3RcbiAgbGV0IG1rID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8ocGFyYW1zID0gW10pID8oY3N0cnMgPSBbXSlcbiAgICAgID8oa2luZCA9IFB0eXBlX2Fic3RyYWN0KSA/KHByaXYgPSBQdWJsaWMpID9tYW5pZmVzdCBuYW1lID1cbiAgICB7XG4gICAgICBwdHlwZV9uYW1lID0gbmFtZTtcbiAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICBwdHlwZV9raW5kID0ga2luZDtcbiAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICAgIHB0eXBlX2xvYyA9IGxvYztcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yID8obG9jID0gIWRlZmF1bHRfbG9jKSA/KGF0dHJzID0gW10pID8odmFycyA9IFtdKVxuICAgICAgPyhhcmdzID0gUGNzdHJfdHVwbGUgW10pID9yZXMgbmFtZSA9XG4gICAge1xuICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgcGNkX3ZhcnMgPSB2YXJzO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IGF0dHJzO1xuICAgIH1cblxuICBsZXQgZmllbGQgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhtdXQgPSBJbW11dGFibGUpIG5hbWUgdHlwID1cbiAgICB7XG4gICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICBwbGRfbXV0YWJsZSA9IG11dDtcbiAgICAgIHBsZF90eXBlID0gdHlwO1xuICAgICAgcGxkX2xvYyA9IGxvYztcbiAgICAgIHBsZF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbigqKiBUeXBlIGV4dGVuc2lvbnMgKilcbm1vZHVsZSBUZSA9IHN0cnVjdFxuICBsZXQgbWsgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyhwYXJhbXMgPSBbXSkgPyhwcml2ID0gUHVibGljKVxuICAgICAgcGF0aCBjb25zdHJ1Y3RvcnMgPVxuICAgIHtcbiAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICBwdHlleHRfY29uc3RydWN0b3JzID0gY29uc3RydWN0b3JzO1xuICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2O1xuICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBta19leGNlcHRpb24gPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgY29uc3RydWN0b3IgPVxuICAgIHtcbiAgICAgIHB0eWV4bl9jb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yO1xuICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuXG4gIGxldCBjb25zdHJ1Y3RvciA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGtpbmQgPVxuICAgIHtcbiAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IGRlY2wgPyhsb2MgPSAhZGVmYXVsdF9sb2MpID8oYXR0cnMgPSBbXSkgPyh2YXJzID0gW10pXG4gICAgICA/KGFyZ3MgPSBQY3N0cl90dXBsZSBbXSkgP3JlcyBuYW1lID1cbiAgICB7XG4gICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgcGV4dF9raW5kID0gUGV4dF9kZWNsICh2YXJzLCBhcmdzLCByZXMpO1xuICAgICAgcGV4dF9sb2MgPSBsb2M7XG4gICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBhdHRycztcbiAgICB9XG5cbiAgbGV0IHJlYmluZCA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBuYW1lIGxpZCA9XG4gICAge1xuICAgICAgcGV4dF9uYW1lID0gbmFtZTtcbiAgICAgIHBleHRfa2luZCA9IFBleHRfcmViaW5kIGxpZDtcbiAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnM7XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBDc2lnID0gc3RydWN0XG4gIGxldCBtayBzZWxmIGZpZWxkcyA9IHsgcGNzaWdfc2VsZiA9IHNlbGY7IHBjc2lnX2ZpZWxkcyA9IGZpZWxkcyB9XG5lbmRcblxubW9kdWxlIENzdHIgPSBzdHJ1Y3RcbiAgbGV0IG1rIHNlbGYgZmllbGRzID0geyBwY3N0cl9zZWxmID0gc2VsZjsgcGNzdHJfZmllbGRzID0gZmllbGRzIH1cbmVuZFxuXG4oKiogUm93IGZpZWxkcyAqKVxubW9kdWxlIFJmID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHByZl9kZXNjID0gZGVzYzsgcHJmX2xvYyA9IGxvYzsgcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCBjb25zdCB0eXMgPVxuICAgIG1rID9sb2MgP2F0dHJzIChSdGFnIChsYWJlbCwgY29uc3QsIHR5cykpXG5cbiAgbGV0IGluaGVyaXRfID9sb2MgdHkgPSBtayA/bG9jIChSaW5oZXJpdCB0eSlcbmVuZFxuXG4oKiogT2JqZWN0IGZpZWxkcyAqKVxubW9kdWxlIE9mID0gc3RydWN0XG4gIGxldCBtayA/KGxvYyA9ICFkZWZhdWx0X2xvYykgPyhhdHRycyA9IFtdKSBkZXNjID1cbiAgICB7IHBvZl9kZXNjID0gZGVzYzsgcG9mX2xvYyA9IGxvYzsgcG9mX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG5cbiAgbGV0IHRhZyA/bG9jID9hdHRycyBsYWJlbCB0eSA9IG1rID9sb2MgP2F0dHJzIChPdGFnIChsYWJlbCwgdHkpKVxuICBsZXQgaW5oZXJpdF8gP2xvYyB0eSA9IG1rID9sb2MgKE9pbmhlcml0IHR5KVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCBNaWdyYXRlIFBhcnNldHJlZSAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnLDqWTDqXJpYyBCb3VyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgIErDqXLDqW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlIChJTlJJQSkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBCRUdJTiBvZiBCTEFDSyBNQUdJQyAqKVxuKCokIG9wZW4gQXN0X2NpbmFwc19oZWxwZXJzICQqKVxuXG50eXBlIF8gd2l0bmVzc2VzID0gLi5cblxudHlwZSBfIG1pZ3JhdGlvbiA9IC4uXG50eXBlIF8gbWlncmF0aW9uICs9IFVuZGVmaW5lZCA6IF8gbWlncmF0aW9uXG5cbnR5cGUgJ2EgbWlncmF0aW9uX2luZm8gPSB7XG4gIG11dGFibGUgbmV4dF92ZXJzaW9uIDogJ2EgbWlncmF0aW9uO1xuICBtdXRhYmxlIHByZXZpb3VzX3ZlcnNpb24gOiAnYSBtaWdyYXRpb247XG59XG5cbigqKiBBYnN0cmFjdCB2aWV3IG9mIGEgdmVyc2lvbiBvZiBhbiBPQ2FtbCBBc3QgKilcbm1vZHVsZSB0eXBlIEFzdCA9IHNpZ1xuICAoKiQgZm9yZWFjaF9tb2R1bGUgKGZ1biBtIHR5cGVzIC0+XG4gICAgICBwcmludGYgXCIgIG1vZHVsZSAlcyA6IHNpZ1xcblwiIG07XG4gICAgICBMaXN0Lml0ZXIgdHlwZXMgfmY6KHByaW50ZiBcIiAgICB0eXBlICVzXFxuXCIpO1xuICAgICAgcHJpbnRmIFwiICBlbmRcXG5cIlxuICAgIClcbiAgKilcbiAgbW9kdWxlIFBhcnNldHJlZSA6IHNpZ1xuICAgIHR5cGUgc3RydWN0dXJlXG4gICAgdHlwZSBzaWduYXR1cmVcbiAgICB0eXBlIHRvcGxldmVsX3BocmFzZVxuICAgIHR5cGUgY29yZV90eXBlXG4gICAgdHlwZSBleHByZXNzaW9uXG4gICAgdHlwZSBwYXR0ZXJuXG4gICAgdHlwZSBjYXNlXG4gICAgdHlwZSB0eXBlX2RlY2xhcmF0aW9uXG4gICAgdHlwZSB0eXBlX2V4dGVuc2lvblxuICAgIHR5cGUgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgdHlwZSBjbGFzc19leHByXG4gICAgdHlwZSBjbGFzc19maWVsZFxuICAgIHR5cGUgY2xhc3NfdHlwZVxuICAgIHR5cGUgY2xhc3Nfc2lnbmF0dXJlXG4gICAgdHlwZSBjbGFzc190eXBlX2ZpZWxkXG4gICAgdHlwZSBtb2R1bGVfZXhwclxuICAgIHR5cGUgbW9kdWxlX3R5cGVcbiAgICB0eXBlIHNpZ25hdHVyZV9pdGVtXG4gICAgdHlwZSBzdHJ1Y3R1cmVfaXRlbVxuICBlbmRcbigqJCopXG4gIG1vZHVsZSBDb25maWcgOiBzaWdcbiAgICB2YWwgYXN0X2ltcGxfbWFnaWNfbnVtYmVyIDogc3RyaW5nXG4gICAgdmFsIGFzdF9pbnRmX21hZ2ljX251bWJlciA6IHN0cmluZ1xuICBlbmRcbmVuZFxuXG4oKiBTaG9ydGN1dHMgZm9yIHRhbGtpbmcgYWJvdXQgYXN0IHR5cGVzIG91dHNpZGUgb2YgdGhlIG1vZHVsZSBsYW5ndWFnZSAqKVxuXG50eXBlICdhIF90eXBlcyA9ICdhIGNvbnN0cmFpbnQgJ2FcbiAgPSA8XG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgJS0yMXMgOiBfO1xcblwiIHMpICopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogXztcbiAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBfO1xuICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IF87XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogXztcbiAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBfO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IF87XG4gICAgY2FzZSAgICAgICAgICAgICAgICAgIDogXztcbiAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiBfO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IF87XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogXztcbiAgICBjbGFzc19leHByICAgICAgICAgICAgOiBfO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IF87XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogXztcbiAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBfO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IF87XG4gICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogXztcbiAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBfO1xuICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IF87XG4gICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogXztcbigqJCopXG4gID5cbjs7XG5cbigqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICBwcmludGYgXCJ0eXBlICdhIGdldF8lcyA9XFxuXCIgcztcbiAgICBwcmludGYgXCIgICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCAlcyA6ICd4OyAuLiA+XFxuXCIgc1xuICApICopXG50eXBlICdhIGdldF9zdHJ1Y3R1cmUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3NpZ25hdHVyZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBzaWduYXR1cmUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfdG9wbGV2ZWxfcGhyYXNlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHRvcGxldmVsX3BocmFzZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jb3JlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY29yZV90eXBlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2V4cHJlc3Npb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXhwcmVzc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9wYXR0ZXJuID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IHBhdHRlcm4gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2FzZSA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjYXNlIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X3R5cGVfZGVjbGFyYXRpb24gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgdHlwZV9kZWNsYXJhdGlvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF90eXBlX2V4dGVuc2lvbiA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCB0eXBlX2V4dGVuc2lvbiA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogJ3g7IC4uID5cbnR5cGUgJ2EgZ2V0X2NsYXNzX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgY2xhc3NfZXhwciA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc19maWVsZCA9XG4gICd4IGNvbnN0cmFpbnQgJ2EgX3R5cGVzID0gPCBjbGFzc19maWVsZCA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfY2xhc3Nfc2lnbmF0dXJlID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3NpZ25hdHVyZSA6ICd4OyAuLiA+XG50eXBlICdhIGdldF9jbGFzc190eXBlX2ZpZWxkID1cbiAgJ3ggY29uc3RyYWludCAnYSBfdHlwZXMgPSA8IGNsYXNzX3R5cGVfZmllbGQgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX2V4cHIgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX2V4cHIgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfbW9kdWxlX3R5cGUgPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgbW9kdWxlX3R5cGUgOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc2lnbmF0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc2lnbmF0dXJlX2l0ZW0gOiAneDsgLi4gPlxudHlwZSAnYSBnZXRfc3RydWN0dXJlX2l0ZW0gPVxuICAneCBjb25zdHJhaW50ICdhIF90eXBlcyA9IDwgc3RydWN0dXJlX2l0ZW0gOiAneDsgLi4gPlxuKCokKilcblxubW9kdWxlIHR5cGUgT0NhbWxfdmVyc2lvbiA9IHNpZ1xuICBtb2R1bGUgQXN0IDogQXN0XG4gIHZhbCB2ZXJzaW9uIDogaW50XG4gIHZhbCBzdHJpbmdfdmVyc2lvbiA6IHN0cmluZ1xuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIHZhbCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvXG5lbmRcblxubW9kdWxlIE1ha2Vfd2l0bmVzcyhBc3QgOiBBc3QpID1cbnN0cnVjdFxuICB0eXBlIHR5cGVzID0gPFxuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBtIHMgLT4gcHJpbnRmIFwiICAgICUtMjFzIDogQXN0LiVzLiVzO1xcblwiIHMgbSBzKSopXG4gICAgc3RydWN0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmU7XG4gICAgc2lnbmF0dXJlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmU7XG4gICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2U7XG4gICAgY29yZV90eXBlICAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jb3JlX3R5cGU7XG4gICAgZXhwcmVzc2lvbiAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5leHByZXNzaW9uO1xuICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUucGF0dGVybjtcbiAgICBjYXNlICAgICAgICAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLmNhc2U7XG4gICAgdHlwZV9kZWNsYXJhdGlvbiAgICAgIDogQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uO1xuICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IEFzdC5QYXJzZXRyZWUudHlwZV9leHRlbnNpb247XG4gICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgY2xhc3NfZXhwciAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc19leHByO1xuICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfZmllbGQ7XG4gICAgY2xhc3NfdHlwZSAgICAgICAgICAgIDogQXN0LlBhcnNldHJlZS5jbGFzc190eXBlO1xuICAgIGNsYXNzX3NpZ25hdHVyZSAgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlO1xuICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IEFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZDtcbiAgICBtb2R1bGVfZXhwciAgICAgICAgICAgOiBBc3QuUGFyc2V0cmVlLm1vZHVsZV9leHByO1xuICAgIG1vZHVsZV90eXBlICAgICAgICAgICA6IEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGU7XG4gICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogQXN0LlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbTtcbiAgICBzdHJ1Y3R1cmVfaXRlbSAgICAgICAgOiBBc3QuUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgPiBfdHlwZXNcbiAgdHlwZSBfIHdpdG5lc3NlcyArPSBWZXJzaW9uIDogdHlwZXMgd2l0bmVzc2VzXG4gIGxldCBtaWdyYXRpb25faW5mbyA6IHR5cGVzIG1pZ3JhdGlvbl9pbmZvID1cbiAgICB7IG5leHRfdmVyc2lvbiA9IFVuZGVmaW5lZDsgcHJldmlvdXNfdmVyc2lvbiA9IFVuZGVmaW5lZCB9XG5lbmRcblxudHlwZSAndHlwZXMgb2NhbWxfdmVyc2lvbiA9XG4gIChtb2R1bGUgT0NhbWxfdmVyc2lvblxuICAgICgqJCBsZXQgc2VwID0gd2l0aF90aGVuX2FuZCAoKSBpblxuICAgICAgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICAgICAgcHJpbnRmIFwiICAgICV0IHR5cGUgQXN0LiVzLiVzID0gJ3R5cGVzIGdldF8lc1xcblwiIHNlcCBtIHMgcykgKilcbiAgICB3aXRoIHR5cGUgQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmUgPSAndHlwZXMgZ2V0X3N0cnVjdHVyZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSA9ICd0eXBlcyBnZXRfc2lnbmF0dXJlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlID0gJ3R5cGVzIGdldF90b3BsZXZlbF9waHJhc2VcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jb3JlX3R5cGUgPSAndHlwZXMgZ2V0X2NvcmVfdHlwZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gPSAndHlwZXMgZ2V0X2V4cHJlc3Npb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5wYXR0ZXJuID0gJ3R5cGVzIGdldF9wYXR0ZXJuXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2FzZSA9ICd0eXBlcyBnZXRfY2FzZVxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gPSAndHlwZXMgZ2V0X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS50eXBlX2V4dGVuc2lvbiA9ICd0eXBlcyBnZXRfdHlwZV9leHRlbnNpb25cbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5leHRlbnNpb25fY29uc3RydWN0b3IgPSAndHlwZXMgZ2V0X2V4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICBhbmQgdHlwZSBBc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSAndHlwZXMgZ2V0X2NsYXNzX2V4cHJcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc19maWVsZCA9ICd0eXBlcyBnZXRfY2xhc3NfZmllbGRcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlID0gJ3R5cGVzIGdldF9jbGFzc190eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuY2xhc3Nfc2lnbmF0dXJlID0gJ3R5cGVzIGdldF9jbGFzc19zaWduYXR1cmVcbiAgICAgYW5kIHR5cGUgQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0gJ3R5cGVzIGdldF9jbGFzc190eXBlX2ZpZWxkXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX2V4cHIgPSAndHlwZXMgZ2V0X21vZHVsZV9leHByXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgPSAndHlwZXMgZ2V0X21vZHVsZV90eXBlXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3NpZ25hdHVyZV9pdGVtXG4gICAgIGFuZCB0eXBlIEFzdC5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSAndHlwZXMgZ2V0X3N0cnVjdHVyZV9pdGVtXG4oKiQqKVxuICApXG5cbnR5cGUgKCdmcm9tLCAndG9fKSBtaWdyYXRpb25fZnVuY3Rpb25zID0ge1xuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICBwcmludGYgXCIgIGNvcHlfJXM6ICdmcm9tIGdldF8lcyAtPiAndG9fIGdldF8lcztcXG5cIiBzIHMgcykgKilcbiAgY29weV9zdHJ1Y3R1cmU6ICdmcm9tIGdldF9zdHJ1Y3R1cmUgLT4gJ3RvXyBnZXRfc3RydWN0dXJlO1xuICBjb3B5X3NpZ25hdHVyZTogJ2Zyb20gZ2V0X3NpZ25hdHVyZSAtPiAndG9fIGdldF9zaWduYXR1cmU7XG4gIGNvcHlfdG9wbGV2ZWxfcGhyYXNlOiAnZnJvbSBnZXRfdG9wbGV2ZWxfcGhyYXNlIC0+ICd0b18gZ2V0X3RvcGxldmVsX3BocmFzZTtcbiAgY29weV9jb3JlX3R5cGU6ICdmcm9tIGdldF9jb3JlX3R5cGUgLT4gJ3RvXyBnZXRfY29yZV90eXBlO1xuICBjb3B5X2V4cHJlc3Npb246ICdmcm9tIGdldF9leHByZXNzaW9uIC0+ICd0b18gZ2V0X2V4cHJlc3Npb247XG4gIGNvcHlfcGF0dGVybjogJ2Zyb20gZ2V0X3BhdHRlcm4gLT4gJ3RvXyBnZXRfcGF0dGVybjtcbiAgY29weV9jYXNlOiAnZnJvbSBnZXRfY2FzZSAtPiAndG9fIGdldF9jYXNlO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb246ICdmcm9tIGdldF90eXBlX2RlY2xhcmF0aW9uIC0+ICd0b18gZ2V0X3R5cGVfZGVjbGFyYXRpb247XG4gIGNvcHlfdHlwZV9leHRlbnNpb246ICdmcm9tIGdldF90eXBlX2V4dGVuc2lvbiAtPiAndG9fIGdldF90eXBlX2V4dGVuc2lvbjtcbiAgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6ICdmcm9tIGdldF9leHRlbnNpb25fY29uc3RydWN0b3IgLT4gJ3RvXyBnZXRfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICBjb3B5X2NsYXNzX2V4cHI6ICdmcm9tIGdldF9jbGFzc19leHByIC0+ICd0b18gZ2V0X2NsYXNzX2V4cHI7XG4gIGNvcHlfY2xhc3NfZmllbGQ6ICdmcm9tIGdldF9jbGFzc19maWVsZCAtPiAndG9fIGdldF9jbGFzc19maWVsZDtcbiAgY29weV9jbGFzc190eXBlOiAnZnJvbSBnZXRfY2xhc3NfdHlwZSAtPiAndG9fIGdldF9jbGFzc190eXBlO1xuICBjb3B5X2NsYXNzX3NpZ25hdHVyZTogJ2Zyb20gZ2V0X2NsYXNzX3NpZ25hdHVyZSAtPiAndG9fIGdldF9jbGFzc19zaWduYXR1cmU7XG4gIGNvcHlfY2xhc3NfdHlwZV9maWVsZDogJ2Zyb20gZ2V0X2NsYXNzX3R5cGVfZmllbGQgLT4gJ3RvXyBnZXRfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwcjogJ2Zyb20gZ2V0X21vZHVsZV9leHByIC0+ICd0b18gZ2V0X21vZHVsZV9leHByO1xuICBjb3B5X21vZHVsZV90eXBlOiAnZnJvbSBnZXRfbW9kdWxlX3R5cGUgLT4gJ3RvXyBnZXRfbW9kdWxlX3R5cGU7XG4gIGNvcHlfc2lnbmF0dXJlX2l0ZW06ICdmcm9tIGdldF9zaWduYXR1cmVfaXRlbSAtPiAndG9fIGdldF9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbTogJ2Zyb20gZ2V0X3N0cnVjdHVyZV9pdGVtIC0+ICd0b18gZ2V0X3N0cnVjdHVyZV9pdGVtO1xuKCokKilcbn1cblxubGV0IGlkIHggPSB4XG5sZXQgbWlncmF0aW9uX2lkZW50aXR5IDogKCdhLCAnYSkgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgIGNvcHlfJXMgPSBpZDtcXG5cIiBzKSAqKVxuICBjb3B5X3N0cnVjdHVyZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZSA9IGlkO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSA9IGlkO1xuICBjb3B5X2NvcmVfdHlwZSA9IGlkO1xuICBjb3B5X2V4cHJlc3Npb24gPSBpZDtcbiAgY29weV9wYXR0ZXJuID0gaWQ7XG4gIGNvcHlfY2FzZSA9IGlkO1xuICBjb3B5X3R5cGVfZGVjbGFyYXRpb24gPSBpZDtcbiAgY29weV90eXBlX2V4dGVuc2lvbiA9IGlkO1xuICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciA9IGlkO1xuICBjb3B5X2NsYXNzX2V4cHIgPSBpZDtcbiAgY29weV9jbGFzc19maWVsZCA9IGlkO1xuICBjb3B5X2NsYXNzX3R5cGUgPSBpZDtcbiAgY29weV9jbGFzc19zaWduYXR1cmUgPSBpZDtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkID0gaWQ7XG4gIGNvcHlfbW9kdWxlX2V4cHIgPSBpZDtcbiAgY29weV9tb2R1bGVfdHlwZSA9IGlkO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtID0gaWQ7XG4gIGNvcHlfc3RydWN0dXJlX2l0ZW0gPSBpZDtcbigqJCopXG59XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxubGV0IG1pZ3JhdGlvbl9jb21wb3NlIChhYiA6ICgnYSwgJ2IpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIChiYyA6ICgnYiwgJ2MpIG1pZ3JhdGlvbl9mdW5jdGlvbnMpIDogKCdhLCAnYykgbWlncmF0aW9uX2Z1bmN0aW9ucyA9IHtcbiAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPlxuICAgICAgcHJpbnRmIFwiICBjb3B5XyUtMjFzID0gY29tcG9zZSBiYy5jb3B5XyUtMjFzIGFiLmNvcHlfJXM7XFxuXCIgcyBzIHMpICopXG4gIGNvcHlfc3RydWN0dXJlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X3N0cnVjdHVyZSAgICAgICAgICAgICBhYi5jb3B5X3N0cnVjdHVyZTtcbiAgY29weV9zaWduYXR1cmUgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc2lnbmF0dXJlICAgICAgICAgICAgIGFiLmNvcHlfc2lnbmF0dXJlO1xuICBjb3B5X3RvcGxldmVsX3BocmFzZSAgICAgICA9IGNvbXBvc2UgYmMuY29weV90b3BsZXZlbF9waHJhc2UgICAgICAgYWIuY29weV90b3BsZXZlbF9waHJhc2U7XG4gIGNvcHlfY29yZV90eXBlICAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NvcmVfdHlwZSAgICAgICAgICAgICBhYi5jb3B5X2NvcmVfdHlwZTtcbiAgY29weV9leHByZXNzaW9uICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfZXhwcmVzc2lvbiAgICAgICAgICAgIGFiLmNvcHlfZXhwcmVzc2lvbjtcbiAgY29weV9wYXR0ZXJuICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfcGF0dGVybiAgICAgICAgICAgICAgIGFiLmNvcHlfcGF0dGVybjtcbiAgY29weV9jYXNlICAgICAgICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2FzZSAgICAgICAgICAgICAgICAgIGFiLmNvcHlfY2FzZTtcbiAgY29weV90eXBlX2RlY2xhcmF0aW9uICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9kZWNsYXJhdGlvbiAgICAgIGFiLmNvcHlfdHlwZV9kZWNsYXJhdGlvbjtcbiAgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfdHlwZV9leHRlbnNpb24gICAgICAgIGFiLmNvcHlfdHlwZV9leHRlbnNpb247XG4gIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gY29tcG9zZSBiYy5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhYi5jb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgY29weV9jbGFzc19leHByICAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZXhwciAgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZXhwcjtcbiAgY29weV9jbGFzc19maWVsZCAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfZmllbGQgICAgICAgICAgIGFiLmNvcHlfY2xhc3NfZmllbGQ7XG4gIGNvcHlfY2xhc3NfdHlwZSAgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3R5cGUgICAgICAgICAgICBhYi5jb3B5X2NsYXNzX3R5cGU7XG4gIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgID0gY29tcG9zZSBiYy5jb3B5X2NsYXNzX3NpZ25hdHVyZSAgICAgICBhYi5jb3B5X2NsYXNzX3NpZ25hdHVyZTtcbiAgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICAgPSBjb21wb3NlIGJjLmNvcHlfY2xhc3NfdHlwZV9maWVsZCAgICAgIGFiLmNvcHlfY2xhc3NfdHlwZV9maWVsZDtcbiAgY29weV9tb2R1bGVfZXhwciAgICAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgIGFiLmNvcHlfbW9kdWxlX2V4cHI7XG4gIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgID0gY29tcG9zZSBiYy5jb3B5X21vZHVsZV90eXBlICAgICAgICAgICBhYi5jb3B5X21vZHVsZV90eXBlO1xuICBjb3B5X3NpZ25hdHVyZV9pdGVtICAgICAgICA9IGNvbXBvc2UgYmMuY29weV9zaWduYXR1cmVfaXRlbSAgICAgICAgYWIuY29weV9zaWduYXR1cmVfaXRlbTtcbiAgY29weV9zdHJ1Y3R1cmVfaXRlbSAgICAgICAgPSBjb21wb3NlIGJjLmNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgIGFiLmNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxufVxuXG50eXBlIF8gbWlncmF0aW9uICs9IE1pZ3JhdGlvbiA6ICdmcm9tIG9jYW1sX3ZlcnNpb24gKiAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb24gLT4gJ2Zyb20gbWlncmF0aW9uXG5cbm1vZHVsZSB0eXBlIE1pZ3JhdGVfbW9kdWxlID0gc2lnXG4gIG1vZHVsZSBGcm9tIDogQXN0XG4gIG1vZHVsZSBUbyA6IEFzdFxuICAoKiQgZm9yZWFjaF90eXBlIChmdW4gbSBzIC0+XG4gICAgICBwcmludGYgXCIgIHZhbCBjb3B5XyUtMjFzOiBGcm9tLiVzLiVzIC0+IFRvLiVzLiVzXFxuXCIgcyBtIHMgbSBzKSAqKVxuICB2YWwgY29weV9zdHJ1Y3R1cmUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlXG4gIHZhbCBjb3B5X3NpZ25hdHVyZSAgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuc2lnbmF0dXJlIC0+IFRvLlBhcnNldHJlZS5zaWduYXR1cmVcbiAgdmFsIGNvcHlfdG9wbGV2ZWxfcGhyYXNlICAgICAgOiBGcm9tLlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgLT4gVG8uUGFyc2V0cmVlLnRvcGxldmVsX3BocmFzZVxuICB2YWwgY29weV9jb3JlX3R5cGUgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNvcmVfdHlwZSAtPiBUby5QYXJzZXRyZWUuY29yZV90eXBlXG4gIHZhbCBjb3B5X2V4cHJlc3Npb24gICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuZXhwcmVzc2lvbiAtPiBUby5QYXJzZXRyZWUuZXhwcmVzc2lvblxuICB2YWwgY29weV9wYXR0ZXJuICAgICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLnBhdHRlcm4gLT4gVG8uUGFyc2V0cmVlLnBhdHRlcm5cbiAgdmFsIGNvcHlfY2FzZSAgICAgICAgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5jYXNlIC0+IFRvLlBhcnNldHJlZS5jYXNlXG4gIHZhbCBjb3B5X3R5cGVfZGVjbGFyYXRpb24gICAgIDogRnJvbS5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvbiAtPiBUby5QYXJzZXRyZWUudHlwZV9kZWNsYXJhdGlvblxuICB2YWwgY29weV90eXBlX2V4dGVuc2lvbiAgICAgICA6IEZyb20uUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIC0+IFRvLlBhcnNldHJlZS50eXBlX2V4dGVuc2lvblxuICB2YWwgY29weV9leHRlbnNpb25fY29uc3RydWN0b3I6IEZyb20uUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBUby5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gIHZhbCBjb3B5X2NsYXNzX2V4cHIgICAgICAgICAgIDogRnJvbS5QYXJzZXRyZWUuY2xhc3NfZXhwciAtPiBUby5QYXJzZXRyZWUuY2xhc3NfZXhwclxuICB2YWwgY29weV9jbGFzc19maWVsZCAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIC0+IFRvLlBhcnNldHJlZS5jbGFzc19maWVsZFxuICB2YWwgY29weV9jbGFzc190eXBlICAgICAgICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVcbiAgdmFsIGNvcHlfY2xhc3Nfc2lnbmF0dXJlICAgICAgOiBGcm9tLlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZVxuICB2YWwgY29weV9jbGFzc190eXBlX2ZpZWxkICAgICA6IEZyb20uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGQgLT4gVG8uUGFyc2V0cmVlLmNsYXNzX3R5cGVfZmllbGRcbiAgdmFsIGNvcHlfbW9kdWxlX2V4cHIgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfZXhwciAtPiBUby5QYXJzZXRyZWUubW9kdWxlX2V4cHJcbiAgdmFsIGNvcHlfbW9kdWxlX3R5cGUgICAgICAgICAgOiBGcm9tLlBhcnNldHJlZS5tb2R1bGVfdHlwZSAtPiBUby5QYXJzZXRyZWUubW9kdWxlX3R5cGVcbiAgdmFsIGNvcHlfc2lnbmF0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zaWduYXR1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW1cbiAgdmFsIGNvcHlfc3RydWN0dXJlX2l0ZW0gICAgICAgOiBGcm9tLlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSAtPiBUby5QYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW1cbigqJCopXG5lbmRcblxubW9kdWxlIE1pZ3JhdGlvbl9mdW5jdGlvbnNcbiAgICAoQSA6IE9DYW1sX3ZlcnNpb24pIChCIDogT0NhbWxfdmVyc2lvbilcbiAgICAoQV90b19CIDogTWlncmF0ZV9tb2R1bGUgd2l0aCBtb2R1bGUgRnJvbSA9IEEuQXN0IGFuZCBtb2R1bGUgVG8gPSBCLkFzdClcbj1cbnN0cnVjdFxuICBsZXQgbWlncmF0aW9uX2Z1bmN0aW9ucyA6IChBLnR5cGVzLCBCLnR5cGVzKSBtaWdyYXRpb25fZnVuY3Rpb25zID1cbiAgICBsZXQgb3BlbiBBX3RvX0IgaW5cbiAgICB7XG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICAgIGNvcHlfc3RydWN0dXJlO1xuICAgICAgY29weV9zaWduYXR1cmU7XG4gICAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICAgIGNvcHlfY29yZV90eXBlO1xuICAgICAgY29weV9leHByZXNzaW9uO1xuICAgICAgY29weV9wYXR0ZXJuO1xuICAgICAgY29weV9jYXNlO1xuICAgICAgY29weV90eXBlX2RlY2xhcmF0aW9uO1xuICAgICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICAgIGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yO1xuICAgICAgY29weV9jbGFzc19leHByO1xuICAgICAgY29weV9jbGFzc19maWVsZDtcbiAgICAgIGNvcHlfY2xhc3NfdHlwZTtcbiAgICAgIGNvcHlfY2xhc3Nfc2lnbmF0dXJlO1xuICAgICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgICAgY29weV9tb2R1bGVfZXhwcjtcbiAgICAgIGNvcHlfbW9kdWxlX3R5cGU7XG4gICAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgICAgY29weV9zdHJ1Y3R1cmVfaXRlbTtcbigqJCopXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBSZWdpc3Rlcl9taWdyYXRpb24gKEEgOiBPQ2FtbF92ZXJzaW9uKSAoQiA6IE9DYW1sX3ZlcnNpb24pXG4gICAgKEFfdG9fQiA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBBLkFzdCBhbmQgbW9kdWxlIFRvID0gQi5Bc3QpXG4gICAgKEJfdG9fQSA6IE1pZ3JhdGVfbW9kdWxlIHdpdGggbW9kdWxlIEZyb20gPSBCLkFzdCBhbmQgbW9kdWxlIFRvID0gQS5Bc3QpXG49XG5zdHJ1Y3RcbiAgbGV0ICgpID0gKFxuICAgIGxldCBpc191bmRlZmluZWQgOiB0eXBlIGEuIGEgbWlncmF0aW9uIC0+IGJvb2wgPSBmdW5jdGlvblxuICAgICAgfCBVbmRlZmluZWQgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBhc3NlcnQgKEEudmVyc2lvbiA8IEIudmVyc2lvbik7XG4gICAgYXNzZXJ0IChpc191bmRlZmluZWQgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24pO1xuICAgIGFzc2VydCAoaXNfdW5kZWZpbmVkIEIubWlncmF0aW9uX2luZm8ucHJldmlvdXNfdmVyc2lvbik7XG4gICAgbGV0IG1vZHVsZSBBX3RvX0JfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhBKShCKShBX3RvX0IpIGluXG4gICAgbGV0IG1vZHVsZSBCX3RvX0FfZnVuID0gTWlncmF0aW9uX2Z1bmN0aW9ucyhCKShBKShCX3RvX0EpIGluXG4gICAgQS5taWdyYXRpb25faW5mby5uZXh0X3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBBKSwgQV90b19CX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEIpKTtcbiAgICBCLm1pZ3JhdGlvbl9pbmZvLnByZXZpb3VzX3ZlcnNpb24gPC1cbiAgICAgIE1pZ3JhdGlvbiAoKG1vZHVsZSBCKSwgQl90b19BX2Z1bi5taWdyYXRpb25fZnVuY3Rpb25zLCAobW9kdWxlIEEpKTtcbiAgKVxuZW5kXG5cbnR5cGUgJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvbiA9XG4gIHwgTm9fbWlncmF0aW9uIDogJ2Zyb20gaW1tZWRpYXRlX21pZ3JhdGlvblxuICB8IEltbWVkaWF0ZV9taWdyYXRpb25cbiAgICA6ICAoJ2Zyb20sICd0b18pIG1pZ3JhdGlvbl9mdW5jdGlvbnMgKiAndG9fIG9jYW1sX3ZlcnNpb25cbiAgICAgIC0+ICdmcm9tIGltbWVkaWF0ZV9taWdyYXRpb25cblxubGV0IGltbWVkaWF0ZV9taWdyYXRpb25cbiAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAodHlwZSAlcylcXG5cIiBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZSlcbiAgICAodHlwZSBzaWduYXR1cmUpXG4gICAgKHR5cGUgdG9wbGV2ZWxfcGhyYXNlKVxuICAgICh0eXBlIGNvcmVfdHlwZSlcbiAgICAodHlwZSBleHByZXNzaW9uKVxuICAgICh0eXBlIHBhdHRlcm4pXG4gICAgKHR5cGUgY2FzZSlcbiAgICAodHlwZSB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcilcbiAgICAodHlwZSBjbGFzc19leHByKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkKVxuICAgICh0eXBlIGNsYXNzX3R5cGUpXG4gICAgKHR5cGUgY2xhc3Nfc2lnbmF0dXJlKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQpXG4gICAgKHR5cGUgbW9kdWxlX2V4cHIpXG4gICAgKHR5cGUgbW9kdWxlX3R5cGUpXG4gICAgKHR5cGUgc2lnbmF0dXJlX2l0ZW0pXG4gICAgKHR5cGUgc3RydWN0dXJlX2l0ZW0pXG4oKiQqKVxuICAgICgobW9kdWxlIEEpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiAgXCIgICAgICUtMjFzIDogJXM7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmU7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTtcbiAgICAgdG9wbGV2ZWxfcGhyYXNlICAgICAgIDogdG9wbGV2ZWxfcGhyYXNlO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGU7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb247XG4gICAgIHBhdHRlcm4gICAgICAgICAgICAgICA6IHBhdHRlcm47XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2U7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb247XG4gICAgIHR5cGVfZXh0ZW5zaW9uICAgICAgICA6IHR5cGVfZXh0ZW5zaW9uO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHI7XG4gICAgIGNsYXNzX2ZpZWxkICAgICAgICAgICA6IGNsYXNzX2ZpZWxkO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmU7XG4gICAgIGNsYXNzX3R5cGVfZmllbGQgICAgICA6IGNsYXNzX3R5cGVfZmllbGQ7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTtcbiAgICAgc2lnbmF0dXJlX2l0ZW0gICAgICAgIDogc2lnbmF0dXJlX2l0ZW07XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgIGRpcmVjdGlvblxuICA9XG4gIGxldCB2ZXJzaW9uID0gbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBOZXh0IC0+IEEubWlncmF0aW9uX2luZm8ubmV4dF92ZXJzaW9uXG4gICAgfCBgUHJldmlvdXMgLT4gQS5taWdyYXRpb25faW5mby5wcmV2aW91c192ZXJzaW9uXG4gIGluXG4gIG1hdGNoIHZlcnNpb24gd2l0aFxuICB8IFVuZGVmaW5lZCAtPiBOb19taWdyYXRpb25cbiAgfCBNaWdyYXRpb24gKF8sIGZ1bnMsIHRvXykgLT4gSW1tZWRpYXRlX21pZ3JhdGlvbiAoZnVucywgdG9fKVxuICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBtaWdyYXRlXG4gICAgKCokIGZvcmVhY2hfdHlwZSAoZnVuIF8gcyAtPiBwcmludGYgXCIgICAgKHR5cGUgJXMxKSAodHlwZSAlczIpXFxuXCIgcyBzKSAqKVxuICAgICh0eXBlIHN0cnVjdHVyZTEpICh0eXBlIHN0cnVjdHVyZTIpXG4gICAgKHR5cGUgc2lnbmF0dXJlMSkgKHR5cGUgc2lnbmF0dXJlMilcbiAgICAodHlwZSB0b3BsZXZlbF9waHJhc2UxKSAodHlwZSB0b3BsZXZlbF9waHJhc2UyKVxuICAgICh0eXBlIGNvcmVfdHlwZTEpICh0eXBlIGNvcmVfdHlwZTIpXG4gICAgKHR5cGUgZXhwcmVzc2lvbjEpICh0eXBlIGV4cHJlc3Npb24yKVxuICAgICh0eXBlIHBhdHRlcm4xKSAodHlwZSBwYXR0ZXJuMilcbiAgICAodHlwZSBjYXNlMSkgKHR5cGUgY2FzZTIpXG4gICAgKHR5cGUgdHlwZV9kZWNsYXJhdGlvbjEpICh0eXBlIHR5cGVfZGVjbGFyYXRpb24yKVxuICAgICh0eXBlIHR5cGVfZXh0ZW5zaW9uMSkgKHR5cGUgdHlwZV9leHRlbnNpb24yKVxuICAgICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjEpICh0eXBlIGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjIpXG4gICAgKHR5cGUgY2xhc3NfZXhwcjEpICh0eXBlIGNsYXNzX2V4cHIyKVxuICAgICh0eXBlIGNsYXNzX2ZpZWxkMSkgKHR5cGUgY2xhc3NfZmllbGQyKVxuICAgICh0eXBlIGNsYXNzX3R5cGUxKSAodHlwZSBjbGFzc190eXBlMilcbiAgICAodHlwZSBjbGFzc19zaWduYXR1cmUxKSAodHlwZSBjbGFzc19zaWduYXR1cmUyKVxuICAgICh0eXBlIGNsYXNzX3R5cGVfZmllbGQxKSAodHlwZSBjbGFzc190eXBlX2ZpZWxkMilcbiAgICAodHlwZSBtb2R1bGVfZXhwcjEpICh0eXBlIG1vZHVsZV9leHByMilcbiAgICAodHlwZSBtb2R1bGVfdHlwZTEpICh0eXBlIG1vZHVsZV90eXBlMilcbiAgICAodHlwZSBzaWduYXR1cmVfaXRlbTEpICh0eXBlIHNpZ25hdHVyZV9pdGVtMilcbiAgICAodHlwZSBzdHJ1Y3R1cmVfaXRlbTEpICh0eXBlIHN0cnVjdHVyZV9pdGVtMilcbigqJCopXG4gICAgKChtb2R1bGUgQSkgOiA8XG4gICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgICAlLTIxcyA6ICVzMTtcXG5cIiBzIHMpICopXG4gICAgIHN0cnVjdHVyZSAgICAgICAgICAgICA6IHN0cnVjdHVyZTE7XG4gICAgIHNpZ25hdHVyZSAgICAgICAgICAgICA6IHNpZ25hdHVyZTE7XG4gICAgIHRvcGxldmVsX3BocmFzZSAgICAgICA6IHRvcGxldmVsX3BocmFzZTE7XG4gICAgIGNvcmVfdHlwZSAgICAgICAgICAgICA6IGNvcmVfdHlwZTE7XG4gICAgIGV4cHJlc3Npb24gICAgICAgICAgICA6IGV4cHJlc3Npb24xO1xuICAgICBwYXR0ZXJuICAgICAgICAgICAgICAgOiBwYXR0ZXJuMTtcbiAgICAgY2FzZSAgICAgICAgICAgICAgICAgIDogY2FzZTE7XG4gICAgIHR5cGVfZGVjbGFyYXRpb24gICAgICA6IHR5cGVfZGVjbGFyYXRpb24xO1xuICAgICB0eXBlX2V4dGVuc2lvbiAgICAgICAgOiB0eXBlX2V4dGVuc2lvbjE7XG4gICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvcjE7XG4gICAgIGNsYXNzX2V4cHIgICAgICAgICAgICA6IGNsYXNzX2V4cHIxO1xuICAgICBjbGFzc19maWVsZCAgICAgICAgICAgOiBjbGFzc19maWVsZDE7XG4gICAgIGNsYXNzX3R5cGUgICAgICAgICAgICA6IGNsYXNzX3R5cGUxO1xuICAgICBjbGFzc19zaWduYXR1cmUgICAgICAgOiBjbGFzc19zaWduYXR1cmUxO1xuICAgICBjbGFzc190eXBlX2ZpZWxkICAgICAgOiBjbGFzc190eXBlX2ZpZWxkMTtcbiAgICAgbW9kdWxlX2V4cHIgICAgICAgICAgIDogbW9kdWxlX2V4cHIxO1xuICAgICBtb2R1bGVfdHlwZSAgICAgICAgICAgOiBtb2R1bGVfdHlwZTE7XG4gICAgIHNpZ25hdHVyZV9pdGVtICAgICAgICA6IHNpZ25hdHVyZV9pdGVtMTtcbiAgICAgc3RydWN0dXJlX2l0ZW0gICAgICAgIDogc3RydWN0dXJlX2l0ZW0xO1xuKCokKilcbiAgICAgPiBvY2FtbF92ZXJzaW9uKVxuICAgICgobW9kdWxlIEIpIDogPFxuICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+IHByaW50ZiBcIiAgICAgJS0yMXMgOiAlczI7XFxuXCIgcyBzKSAqKVxuICAgICBzdHJ1Y3R1cmUgICAgICAgICAgICAgOiBzdHJ1Y3R1cmUyO1xuICAgICBzaWduYXR1cmUgICAgICAgICAgICAgOiBzaWduYXR1cmUyO1xuICAgICB0b3BsZXZlbF9waHJhc2UgICAgICAgOiB0b3BsZXZlbF9waHJhc2UyO1xuICAgICBjb3JlX3R5cGUgICAgICAgICAgICAgOiBjb3JlX3R5cGUyO1xuICAgICBleHByZXNzaW9uICAgICAgICAgICAgOiBleHByZXNzaW9uMjtcbiAgICAgcGF0dGVybiAgICAgICAgICAgICAgIDogcGF0dGVybjI7XG4gICAgIGNhc2UgICAgICAgICAgICAgICAgICA6IGNhc2UyO1xuICAgICB0eXBlX2RlY2xhcmF0aW9uICAgICAgOiB0eXBlX2RlY2xhcmF0aW9uMjtcbiAgICAgdHlwZV9leHRlbnNpb24gICAgICAgIDogdHlwZV9leHRlbnNpb24yO1xuICAgICBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IyO1xuICAgICBjbGFzc19leHByICAgICAgICAgICAgOiBjbGFzc19leHByMjtcbiAgICAgY2xhc3NfZmllbGQgICAgICAgICAgIDogY2xhc3NfZmllbGQyO1xuICAgICBjbGFzc190eXBlICAgICAgICAgICAgOiBjbGFzc190eXBlMjtcbiAgICAgY2xhc3Nfc2lnbmF0dXJlICAgICAgIDogY2xhc3Nfc2lnbmF0dXJlMjtcbiAgICAgY2xhc3NfdHlwZV9maWVsZCAgICAgIDogY2xhc3NfdHlwZV9maWVsZDI7XG4gICAgIG1vZHVsZV9leHByICAgICAgICAgICA6IG1vZHVsZV9leHByMjtcbiAgICAgbW9kdWxlX3R5cGUgICAgICAgICAgIDogbW9kdWxlX3R5cGUyO1xuICAgICBzaWduYXR1cmVfaXRlbSAgICAgICAgOiBzaWduYXR1cmVfaXRlbTI7XG4gICAgIHN0cnVjdHVyZV9pdGVtICAgICAgICA6IHN0cnVjdHVyZV9pdGVtMjtcbigqJCopXG4gICAgID4gb2NhbWxfdmVyc2lvbilcbiAgOiAoQS50eXBlcywgQi50eXBlcykgbWlncmF0aW9uX2Z1bmN0aW9uc1xuICA9XG4gIG1hdGNoIEEuVmVyc2lvbiB3aXRoXG4gIHwgQi5WZXJzaW9uIC0+IG1pZ3JhdGlvbl9pZGVudGl0eVxuICB8IF8gLT5cbiAgICBsZXQgZGlyZWN0aW9uID0gaWYgQS52ZXJzaW9uIDwgQi52ZXJzaW9uIHRoZW4gYE5leHQgZWxzZSBgUHJldmlvdXMgaW5cbiAgICBsZXQgcmVjIG1pZ3JhdGUgKG0gOiBBLnR5cGVzIGltbWVkaWF0ZV9taWdyYXRpb24pIDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgSW1tZWRpYXRlX21pZ3JhdGlvbiAoZiwgKG1vZHVsZSBUbykpIC0+XG4gICAgICAgIG1hdGNoIFRvLlZlcnNpb24gd2l0aFxuICAgICAgICB8IEIuVmVyc2lvbiAtPiBmXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1hdGNoIGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBUbykgZGlyZWN0aW9uIHdpdGhcbiAgICAgICAgICB8IE5vX21pZ3JhdGlvbiAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEltbWVkaWF0ZV9taWdyYXRpb24gKGcsIHRvMikgLT5cbiAgICAgICAgICAgIG1pZ3JhdGUgKEltbWVkaWF0ZV9taWdyYXRpb24gKG1pZ3JhdGlvbl9jb21wb3NlIGYgZywgdG8yKSlcbiAgICBpblxuICAgIG1pZ3JhdGUgKGltbWVkaWF0ZV9taWdyYXRpb24gKG1vZHVsZSBBKSBkaXJlY3Rpb24pXG5cbm1vZHVsZSBDb252ZXJ0IChBIDogT0NhbWxfdmVyc2lvbikgKEIgOiBPQ2FtbF92ZXJzaW9uKSA9IHN0cnVjdFxuICBsZXQge1xuICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT4gcHJpbnRmIFwiICAgIGNvcHlfJXM7XFxuXCIgcykgKilcbiAgICBjb3B5X3N0cnVjdHVyZTtcbiAgICBjb3B5X3NpZ25hdHVyZTtcbiAgICBjb3B5X3RvcGxldmVsX3BocmFzZTtcbiAgICBjb3B5X2NvcmVfdHlwZTtcbiAgICBjb3B5X2V4cHJlc3Npb247XG4gICAgY29weV9wYXR0ZXJuO1xuICAgIGNvcHlfY2FzZTtcbiAgICBjb3B5X3R5cGVfZGVjbGFyYXRpb247XG4gICAgY29weV90eXBlX2V4dGVuc2lvbjtcbiAgICBjb3B5X2V4dGVuc2lvbl9jb25zdHJ1Y3RvcjtcbiAgICBjb3B5X2NsYXNzX2V4cHI7XG4gICAgY29weV9jbGFzc19maWVsZDtcbiAgICBjb3B5X2NsYXNzX3R5cGU7XG4gICAgY29weV9jbGFzc19zaWduYXR1cmU7XG4gICAgY29weV9jbGFzc190eXBlX2ZpZWxkO1xuICAgIGNvcHlfbW9kdWxlX2V4cHI7XG4gICAgY29weV9tb2R1bGVfdHlwZTtcbiAgICBjb3B5X3NpZ25hdHVyZV9pdGVtO1xuICAgIGNvcHlfc3RydWN0dXJlX2l0ZW07XG4oKiQqKVxuICB9IDogKEEudHlwZXMsIEIudHlwZXMpIG1pZ3JhdGlvbl9mdW5jdGlvbnMgPVxuICAgIG1pZ3JhdGUgKG1vZHVsZSBBKSAobW9kdWxlIEIpXG5lbmRcblxuKCokIGZvcmVhY2hfdmVyc2lvbiAoZnVuIG4gdmVyc2lvbiAtPlxuICAgIHByaW50ZiBcIm1vZHVsZSBPQ2FtbF8lZCA9IHN0cnVjdFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBtb2R1bGUgQXN0ID0gQXN0bGliLkFzdF8lZFxcblwiIG47XG4gICAgcHJpbnRmIFwiICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XyVkKVxcblwiIG47XG4gICAgcHJpbnRmIFwiICBsZXQgdmVyc2lvbiA9ICVkXFxuXCIgbjtcbiAgICBwcmludGYgXCIgIGxldCBzdHJpbmdfdmVyc2lvbiA9ICVTXFxuXCIgdmVyc2lvbjtcbiAgICBwcmludGYgXCJlbmRcXG5cIjtcbiAgICBwcmludGYgXCJsZXQgb2NhbWxfJWQgOiBPQ2FtbF8lZC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF8lZClcXG5cIlxuICAgICAgbiBuIG47XG4gIClcbiopXG5tb2R1bGUgT0NhbWxfNDAyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMilcbiAgbGV0IHZlcnNpb24gPSA0MDJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAyXCJcbmVuZFxubGV0IG9jYW1sXzQwMiA6IE9DYW1sXzQwMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDIpXG5tb2R1bGUgT0NhbWxfNDAzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwMylcbiAgbGV0IHZlcnNpb24gPSA0MDNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjAzXCJcbmVuZFxubGV0IG9jYW1sXzQwMyA6IE9DYW1sXzQwMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDMpXG5tb2R1bGUgT0NhbWxfNDA0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNClcbiAgbGV0IHZlcnNpb24gPSA0MDRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA0XCJcbmVuZFxubGV0IG9jYW1sXzQwNCA6IE9DYW1sXzQwNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDQpXG5tb2R1bGUgT0NhbWxfNDA1ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNSlcbiAgbGV0IHZlcnNpb24gPSA0MDVcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA1XCJcbmVuZFxubGV0IG9jYW1sXzQwNSA6IE9DYW1sXzQwNS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDUpXG5tb2R1bGUgT0NhbWxfNDA2ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwNlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNilcbiAgbGV0IHZlcnNpb24gPSA0MDZcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA2XCJcbmVuZFxubGV0IG9jYW1sXzQwNiA6IE9DYW1sXzQwNi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDYpXG5tb2R1bGUgT0NhbWxfNDA3ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwN1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwNylcbiAgbGV0IHZlcnNpb24gPSA0MDdcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA3XCJcbmVuZFxubGV0IG9jYW1sXzQwNyA6IE9DYW1sXzQwNy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDcpXG5tb2R1bGUgT0NhbWxfNDA4ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOClcbiAgbGV0IHZlcnNpb24gPSA0MDhcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA4XCJcbmVuZFxubGV0IG9jYW1sXzQwOCA6IE9DYW1sXzQwOC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDgpXG5tb2R1bGUgT0NhbWxfNDA5ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQwOVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQwOSlcbiAgbGV0IHZlcnNpb24gPSA0MDlcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjA5XCJcbmVuZFxubGV0IG9jYW1sXzQwOSA6IE9DYW1sXzQwOS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MDkpXG5tb2R1bGUgT0NhbWxfNDEwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMClcbiAgbGV0IHZlcnNpb24gPSA0MTBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEwXCJcbmVuZFxubGV0IG9jYW1sXzQxMCA6IE9DYW1sXzQxMC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTApXG5tb2R1bGUgT0NhbWxfNDExID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMVxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMSlcbiAgbGV0IHZlcnNpb24gPSA0MTFcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjExXCJcbmVuZFxubGV0IG9jYW1sXzQxMSA6IE9DYW1sXzQxMS50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTEpXG5tb2R1bGUgT0NhbWxfNDEyID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxMlxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMilcbiAgbGV0IHZlcnNpb24gPSA0MTJcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEyXCJcbmVuZFxubGV0IG9jYW1sXzQxMiA6IE9DYW1sXzQxMi50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTIpXG5tb2R1bGUgT0NhbWxfNDEzID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxM1xuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxMylcbiAgbGV0IHZlcnNpb24gPSA0MTNcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjEzXCJcbmVuZFxubGV0IG9jYW1sXzQxMyA6IE9DYW1sXzQxMy50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTMpXG5tb2R1bGUgT0NhbWxfNDE0ID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzQxNFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzQxNClcbiAgbGV0IHZlcnNpb24gPSA0MTRcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI0LjE0XCJcbmVuZFxubGV0IG9jYW1sXzQxNCA6IE9DYW1sXzQxNC50eXBlcyBvY2FtbF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF80MTQpXG5tb2R1bGUgT0NhbWxfNTAwID0gc3RydWN0XG4gIG1vZHVsZSBBc3QgPSBBc3RsaWIuQXN0XzUwMFxuICBpbmNsdWRlIE1ha2Vfd2l0bmVzcyhBc3RsaWIuQXN0XzUwMClcbiAgbGV0IHZlcnNpb24gPSA1MDBcbiAgbGV0IHN0cmluZ192ZXJzaW9uID0gXCI1LjBcIlxuZW5kXG5sZXQgb2NhbWxfNTAwIDogT0NhbWxfNTAwLnR5cGVzIG9jYW1sX3ZlcnNpb24gPSAobW9kdWxlIE9DYW1sXzUwMClcbm1vZHVsZSBPQ2FtbF81MDEgPSBzdHJ1Y3RcbiAgbW9kdWxlIEFzdCA9IEFzdGxpYi5Bc3RfNTAxXG4gIGluY2x1ZGUgTWFrZV93aXRuZXNzKEFzdGxpYi5Bc3RfNTAxKVxuICBsZXQgdmVyc2lvbiA9IDUwMVxuICBsZXQgc3RyaW5nX3ZlcnNpb24gPSBcIjUuMVwiXG5lbmRcbmxldCBvY2FtbF81MDEgOiBPQ2FtbF81MDEudHlwZXMgb2NhbWxfdmVyc2lvbiA9IChtb2R1bGUgT0NhbWxfNTAxKVxuKCokKilcblxubGV0IGFsbF92ZXJzaW9ucyA6IChtb2R1bGUgT0NhbWxfdmVyc2lvbikgbGlzdCA9IFtcbiAgKCokZm9yZWFjaF92ZXJzaW9uIChmdW4gbiBfIC0+XG4gICAgICBwcmludGYgXCIobW9kdWxlIE9DYW1sXyVkIDogT0NhbWxfdmVyc2lvbik7XFxuXCIgbikqKVxuKG1vZHVsZSBPQ2FtbF80MDIgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDAzIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDUgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA2IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQwNyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MDggOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDA5IDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMCA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTEgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNDEyIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzQxMyA6IE9DYW1sX3ZlcnNpb24pO1xuKG1vZHVsZSBPQ2FtbF80MTQgOiBPQ2FtbF92ZXJzaW9uKTtcbihtb2R1bGUgT0NhbWxfNTAwIDogT0NhbWxfdmVyc2lvbik7XG4obW9kdWxlIE9DYW1sXzUwMSA6IE9DYW1sX3ZlcnNpb24pO1xuKCokKilcbl1cblxuKCokZm9yZWFjaF92ZXJzaW9uX3BhaXIgKGZ1biBhIGIgLT5cbiAgICBwcmludGYgXCJpbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF8lZCkoT0NhbWxfJWQpXFxuXCIgYSBiO1xuICAgIHByaW50ZiBcIiAgICAoQXN0bGliLk1pZ3JhdGVfJWRfJWQpKEFzdGxpYi5NaWdyYXRlXyVkXyVkKVxcblwiIGEgYiBiIGFcbiAgKVxuKilcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwMikoT0NhbWxfNDAzKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDJfNDAzKShBc3RsaWIuTWlncmF0ZV80MDNfNDAyKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDAzKShPQ2FtbF80MDQpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwM180MDQpKEFzdGxpYi5NaWdyYXRlXzQwNF80MDMpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDQpKE9DYW1sXzQwNSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA0XzQwNSkoQXN0bGliLk1pZ3JhdGVfNDA1XzQwNClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwNSkoT0NhbWxfNDA2KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDVfNDA2KShBc3RsaWIuTWlncmF0ZV80MDZfNDA1KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA2KShPQ2FtbF80MDcpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwNl80MDcpKEFzdGxpYi5NaWdyYXRlXzQwN180MDYpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MDcpKE9DYW1sXzQwOClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDA3XzQwOCkoQXN0bGliLk1pZ3JhdGVfNDA4XzQwNylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQwOCkoT0NhbWxfNDA5KVxuICAgIChBc3RsaWIuTWlncmF0ZV80MDhfNDA5KShBc3RsaWIuTWlncmF0ZV80MDlfNDA4KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDA5KShPQ2FtbF80MTApXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQwOV80MTApKEFzdGxpYi5NaWdyYXRlXzQxMF80MDkpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTApKE9DYW1sXzQxMSlcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEwXzQxMSkoQXN0bGliLk1pZ3JhdGVfNDExXzQxMClcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxMSkoT0NhbWxfNDEyKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTFfNDEyKShBc3RsaWIuTWlncmF0ZV80MTJfNDExKVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNDEyKShPQ2FtbF80MTMpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzQxMl80MTMpKEFzdGxpYi5NaWdyYXRlXzQxM180MTIpXG5pbmNsdWRlIFJlZ2lzdGVyX21pZ3JhdGlvbihPQ2FtbF80MTMpKE9DYW1sXzQxNClcbiAgICAoQXN0bGliLk1pZ3JhdGVfNDEzXzQxNCkoQXN0bGliLk1pZ3JhdGVfNDE0XzQxMylcbmluY2x1ZGUgUmVnaXN0ZXJfbWlncmF0aW9uKE9DYW1sXzQxNCkoT0NhbWxfNTAwKVxuICAgIChBc3RsaWIuTWlncmF0ZV80MTRfNTAwKShBc3RsaWIuTWlncmF0ZV81MDBfNDE0KVxuaW5jbHVkZSBSZWdpc3Rlcl9taWdyYXRpb24oT0NhbWxfNTAwKShPQ2FtbF81MDEpXG4gICAgKEFzdGxpYi5NaWdyYXRlXzUwMF81MDEpKEFzdGxpYi5NaWdyYXRlXzUwMV81MDApXG4oKiQqKVxuXG5tb2R1bGUgT0NhbWxfY3VycmVudCA9IE9DYW1sX09DQU1MX1ZFUlNJT05cblxubW9kdWxlIEZpbmRfdmVyc2lvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbXBsIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBJbnRmIG9mIChtb2R1bGUgT0NhbWxfdmVyc2lvbikgfCBVbmtub3duXG5cbiAgbGV0IGZyb21fbWFnaWMgbWFnaWMgPVxuICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFVua25vd25cbiAgICAgIHwgKG1vZHVsZSBWZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW1wbF9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbXBsIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlIGlmIFZlcnNpb24uQXN0LkNvbmZpZy5hc3RfaW50Zl9tYWdpY19udW1iZXIgPSBtYWdpYyB0aGVuXG4gICAgICAgICAgICBJbnRmIChtb2R1bGUgVmVyc2lvbilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsb29wIHRhaWxcbiAgICBpblxuICAgICgqIFRyYXZlcnNlIHRoZSB2ZXJzaW9ucyBmcm9tIGxhc3QgdG8gZmlyc3Q6XG4gICAgICAgaWYgdGhlIG1hZ2ljIG51bWJlcnMgYXJlbid0IHVuaXF1ZSBhbW9uZyB2ZXJzaW9ucyxcbiAgICAgICB3ZSB3YW50IHRoZSBsYXRlc3QgdmVyc2lvbiB3aXRoIGEgbWFnaWMgbnVtYmVyIG1hdGNoLlxuICAgICAgIFRoZSBzaXR1YXRpb24gaW4gbWluZCBpcyB0cnVuayBzdXBwb3J0LiAqKVxuICAgICAgbGV0IGFsbF92ZXJzaW9uc190b3BfZG93biA9IExpc3QucmV2IGFsbF92ZXJzaW9ucyBpblxuICAgICAgbG9vcCBhbGxfdmVyc2lvbnNfdG9wX2Rvd25cbmVuZFxuIiwiKCogVGhpcyBmaWxlIGlzIHVzZWQgdG8gY29udHJvbCB3aGF0IHdlIHVzZSBmcm9tIHRoZSBjdXJyZW50IGNvbXBpbGVyIGFuZCB3aGF0IGlzIGVtYmVkIGluXG4gICB0aGlzIGxpYnJhcnkuXG5cbiAgIEl0IG11c3QgYmUgb3BlbmVkIGluIGFsbCBtb2R1bGVzLCBlc3BlY2lhbGx5IHRoZSBvbmVzIGNvbWluZyBmcm9tIHRoZSBjb21waWxlci5cbiopXG5cbigqJCBvcGVuIEFzdF9jaW5hcHNfaGVscGVycyAkKilcblxubW9kdWxlIEpzID0gVmVyc2lvbnMuT0NhbWxfNTAwXG5tb2R1bGUgT2NhbWwgPSBWZXJzaW9ucy5PQ2FtbF9jdXJyZW50XG5cbm1vZHVsZSBTZWxlY3RfYXN0IChPY2FtbCA6IFZlcnNpb25zLk9DYW1sX3ZlcnNpb24pID0gc3RydWN0XG4gIGluY2x1ZGUgSnNcblxuICBtb2R1bGUgVHlwZSA9IHN0cnVjdFxuICAgIHR5cGUgKCdqcywgJ29jYW1sKSB0ID1cbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXNcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS4lcyxcXG5cXFxuICAgICAgICAgICAgICBcXCAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS4lcyApXFxuXFxcbiAgICAgICAgICAgICAgXFwgICAgICAgICAgICB0XFxuXCJcbiAgICAgICAgICAgICAgKGNhcGl0YWxpemVfYXNjaWkgcykgcyBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuc3RydWN0dXJlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnN0cnVjdHVyZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFNpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUb3BsZXZlbF9waHJhc2VcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUudG9wbGV2ZWxfcGhyYXNlIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ29yZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY29yZV90eXBlLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNvcmVfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IEV4cHJlc3Npb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5leHByZXNzaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4cHJlc3Npb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBQYXR0ZXJuXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUucGF0dGVybixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5wYXR0ZXJuIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2FzZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNhc2UsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2FzZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZGVjbGFyYXRpb24gKVxuICAgICAgICAgICAgdFxuICAgICAgfCBUeXBlX2V4dGVuc2lvblxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3RvciApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5jbGFzc19leHByLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2V4cHIgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc19maWVsZFxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLmNsYXNzX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgQ2xhc3NfdHlwZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZSApXG4gICAgICAgICAgICB0XG4gICAgICB8IENsYXNzX3NpZ25hdHVyZVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc19zaWduYXR1cmUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBDbGFzc190eXBlX2ZpZWxkXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZCxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgTW9kdWxlX2V4cHJcbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwcixcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5tb2R1bGVfZXhwciApXG4gICAgICAgICAgICB0XG4gICAgICB8IE1vZHVsZV90eXBlXG4gICAgICAgICAgOiAoIEpzLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUsXG4gICAgICAgICAgICAgIE9jYW1sLkFzdC5QYXJzZXRyZWUubW9kdWxlX3R5cGUgKVxuICAgICAgICAgICAgdFxuICAgICAgfCBTaWduYXR1cmVfaXRlbVxuICAgICAgICAgIDogKCBKcy5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtLFxuICAgICAgICAgICAgICBPY2FtbC5Bc3QuUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtIClcbiAgICAgICAgICAgIHRcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW1cbiAgICAgICAgICA6ICggSnMuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSxcbiAgICAgICAgICAgICAgT2NhbWwuQXN0LlBhcnNldHJlZS5zdHJ1Y3R1cmVfaXRlbSApXG4gICAgICAgICAgICB0XG4oKiQqKVxuICAgICAgfCBMaXN0IDogKCdhLCAnYikgdCAtPiAoJ2EgbGlzdCwgJ2IgbGlzdCkgdFxuICAgICAgfCBQYWlyIDogKCdhLCAnYikgdCAqICgnYywgJ2QpIHQgLT4gKCdhICogJ2MsICdiICogJ2QpIHRcbiAgZW5kXG5cbiAgb3BlbiBUeXBlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG4gIG1vZHVsZSBUb19vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKEpzKSAoT2NhbWwpXG5cbiAgbGV0IHJlYyBvZl9vY2FtbCA6IHR5cGUgb2NhbWwganMuIChqcywgb2NhbWwpIFR5cGUudCAtPiBvY2FtbCAtPiBqcyA9XG4gICAgbGV0IG9wZW4gT2Zfb2NhbWwgaW5cbiAgICBmdW4gbm9kZSAtPlxuICAgICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgICAoKiQgZm9yZWFjaF90eXBlIChmdW4gXyBzIC0+XG4gICAgICAgICAgICBwcmludGZcbiAgICAgICAgICAgICAgXCIgICAgICB8ICVzIC0+IGNvcHlfJXNcXG5cIlxuICAgICAgICAgICAgICAoY2FwaXRhbGl6ZV9hc2NpaSBzKSBzXG4gICAgICAgICAgKVxuICAgICAgKilcbiAgICAgIHwgU3RydWN0dXJlIC0+IGNvcHlfc3RydWN0dXJlXG4gICAgICB8IFNpZ25hdHVyZSAtPiBjb3B5X3NpZ25hdHVyZVxuICAgICAgfCBUb3BsZXZlbF9waHJhc2UgLT4gY29weV90b3BsZXZlbF9waHJhc2VcbiAgICAgIHwgQ29yZV90eXBlIC0+IGNvcHlfY29yZV90eXBlXG4gICAgICB8IEV4cHJlc3Npb24gLT4gY29weV9leHByZXNzaW9uXG4gICAgICB8IFBhdHRlcm4gLT4gY29weV9wYXR0ZXJuXG4gICAgICB8IENhc2UgLT4gY29weV9jYXNlXG4gICAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4gY29weV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IGNvcHlfdHlwZV9leHRlbnNpb25cbiAgICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGNvcHlfZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICB8IENsYXNzX2V4cHIgLT4gY29weV9jbGFzc19leHByXG4gICAgICB8IENsYXNzX2ZpZWxkIC0+IGNvcHlfY2xhc3NfZmllbGRcbiAgICAgIHwgQ2xhc3NfdHlwZSAtPiBjb3B5X2NsYXNzX3R5cGVcbiAgICAgIHwgQ2xhc3Nfc2lnbmF0dXJlIC0+IGNvcHlfY2xhc3Nfc2lnbmF0dXJlXG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4gY29weV9jbGFzc190eXBlX2ZpZWxkXG4gICAgICB8IE1vZHVsZV9leHByIC0+IGNvcHlfbW9kdWxlX2V4cHJcbiAgICAgIHwgTW9kdWxlX3R5cGUgLT4gY29weV9tb2R1bGVfdHlwZVxuICAgICAgfCBTaWduYXR1cmVfaXRlbSAtPiBjb3B5X3NpZ25hdHVyZV9pdGVtXG4gICAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IGNvcHlfc3RydWN0dXJlX2l0ZW1cbigqJCopXG4gICAgICB8IExpc3QgdCAtPiBMaXN0Lm1hcCAob2Zfb2NhbWwgdClcbiAgICAgIHwgUGFpciAoYSwgYikgLT5cbiAgICAgICAgICBsZXQgZiA9IG9mX29jYW1sIGEgaW5cbiAgICAgICAgICBsZXQgZyA9IG9mX29jYW1sIGIgaW5cbiAgICAgICAgICBmdW4gKHgsIHkpIC0+IChmIHgsIGcgeSlcblxuICBsZXQgcmVjIHRvX29jYW1sIDogdHlwZSBvY2FtbCBqcy4gKGpzLCBvY2FtbCkgVHlwZS50IC0+IGpzIC0+IG9jYW1sID1cbiAgICBsZXQgb3BlbiBUb19vY2FtbCBpblxuICAgIGZ1biBub2RlIC0+XG4gICAgICBtYXRjaCBub2RlIHdpdGhcbiAgICAgICgqJCBmb3JlYWNoX3R5cGUgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgIHByaW50ZlxuICAgICAgICAgICAgICBcIiAgICAgIHwgJXMgLT4gY29weV8lc1xcblwiXG4gICAgICAgICAgICAgIChjYXBpdGFsaXplX2FzY2lpIHMpIHNcbiAgICAgICAgICApXG4gICAgICAqKVxuICAgICAgfCBTdHJ1Y3R1cmUgLT4gY29weV9zdHJ1Y3R1cmVcbiAgICAgIHwgU2lnbmF0dXJlIC0+IGNvcHlfc2lnbmF0dXJlXG4gICAgICB8IFRvcGxldmVsX3BocmFzZSAtPiBjb3B5X3RvcGxldmVsX3BocmFzZVxuICAgICAgfCBDb3JlX3R5cGUgLT4gY29weV9jb3JlX3R5cGVcbiAgICAgIHwgRXhwcmVzc2lvbiAtPiBjb3B5X2V4cHJlc3Npb25cbiAgICAgIHwgUGF0dGVybiAtPiBjb3B5X3BhdHRlcm5cbiAgICAgIHwgQ2FzZSAtPiBjb3B5X2Nhc2VcbiAgICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBjb3B5X3R5cGVfZGVjbGFyYXRpb25cbiAgICAgIHwgVHlwZV9leHRlbnNpb24gLT4gY29weV90eXBlX2V4dGVuc2lvblxuICAgICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4gY29weV9leHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgIHwgQ2xhc3NfZXhwciAtPiBjb3B5X2NsYXNzX2V4cHJcbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4gY29weV9jbGFzc19maWVsZFxuICAgICAgfCBDbGFzc190eXBlIC0+IGNvcHlfY2xhc3NfdHlwZVxuICAgICAgfCBDbGFzc19zaWduYXR1cmUgLT4gY29weV9jbGFzc19zaWduYXR1cmVcbiAgICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiBjb3B5X2NsYXNzX3R5cGVfZmllbGRcbiAgICAgIHwgTW9kdWxlX2V4cHIgLT4gY29weV9tb2R1bGVfZXhwclxuICAgICAgfCBNb2R1bGVfdHlwZSAtPiBjb3B5X21vZHVsZV90eXBlXG4gICAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IGNvcHlfc2lnbmF0dXJlX2l0ZW1cbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gY29weV9zdHJ1Y3R1cmVfaXRlbVxuKCokKilcbiAgICAgIHwgTGlzdCB0IC0+IExpc3QubWFwICh0b19vY2FtbCB0KVxuICAgICAgfCBQYWlyIChhLCBiKSAtPlxuICAgICAgICAgIGxldCBmID0gdG9fb2NhbWwgYSBpblxuICAgICAgICAgIGxldCBnID0gdG9fb2NhbWwgYiBpblxuICAgICAgICAgIGZ1biAoeCwgeSkgLT4gKGYgeCwgZyB5KVxuXG4gIGxldCBvZl9vY2FtbF9tYXBwZXIgaXRlbSBmIGN0eHQgeCA9IHRvX29jYW1sIGl0ZW0geCB8PiBmIGN0eHQgfD4gb2Zfb2NhbWwgaXRlbVxuICBsZXQgdG9fb2NhbWxfbWFwcGVyIGl0ZW0gZiBjdHh0IHggPSBvZl9vY2FtbCBpdGVtIHggfD4gZiBjdHh0IHw+IHRvX29jYW1sIGl0ZW1cbmVuZFxuXG5tb2R1bGUgU2VsZWN0ZWRfYXN0ID0gU2VsZWN0X2FzdCAoT2NhbWwpXG5tb2R1bGUgQXN0X2hlbHBlciA9IEFzdF9oZWxwZXJfbGl0ZVxuXG4oKiBNb2R1bGVzIGZyb20gQXN0XzxuPiBvZiBBc3RsaWIsIHdoZXJlIDxuPiBpcyB0aGUgY29tcGlsZXIgdmVyc2lvbiB0aGUgcHB4bGliIGRyaXZlciBpcyBjb21waWxlZCB3aXRoICopXG5tb2R1bGUgUGFyc2V0cmVlID0gU2VsZWN0ZWRfYXN0LkFzdC5QYXJzZXRyZWVcbm1vZHVsZSBBc3R0eXBlcyA9IFNlbGVjdGVkX2FzdC5Bc3QuQXN0dHlwZXNcblxuKCogT3RoZXIgQXN0bGliIG1vZHVsZXMgKilcbm1vZHVsZSBMb2NhdGlvbiA9IEFzdGxpYi5Mb2NhdGlvblxubW9kdWxlIExvbmdpZGVudCA9IEFzdGxpYi5Mb25naWRlbnRcblxubW9kdWxlIFBhcnNlID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0bGliLlBhcnNlXG4gIG1vZHVsZSBPZl9vY2FtbCA9IFZlcnNpb25zLkNvbnZlcnQgKE9jYW1sKSAoSnMpXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uIGxleGJ1ZiA9IGltcGxlbWVudGF0aW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3N0cnVjdHVyZVxuICBsZXQgaW50ZXJmYWNlIGxleGJ1ZiA9IGludGVyZmFjZSBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9zaWduYXR1cmVcblxuICBsZXQgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiA9XG4gICAgdG9wbGV2ZWxfcGhyYXNlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCB1c2VfZmlsZSBsZXhidWYgPVxuICAgIHVzZV9maWxlIGxleGJ1ZiB8PiBMaXN0Lm1hcCBPZl9vY2FtbC5jb3B5X3RvcGxldmVsX3BocmFzZVxuXG4gIGxldCBjb3JlX3R5cGUgbGV4YnVmID0gY29yZV90eXBlIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2NvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiBsZXhidWYgPSBleHByZXNzaW9uIGxleGJ1ZiB8PiBPZl9vY2FtbC5jb3B5X2V4cHJlc3Npb25cbiAgbGV0IHBhdHRlcm4gbGV4YnVmID0gcGF0dGVybiBsZXhidWYgfD4gT2Zfb2NhbWwuY29weV9wYXR0ZXJuXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgZGVmYXVsdF9wcmludF93YXJuaW5nIF9sb2MgPSAoKVxubGV0IGFib3V0X2l0ZV9icmFuY2hfcmVmID0gcmVmIGRlZmF1bHRfcHJpbnRfd2FybmluZ1xubGV0IGNhcmVfYWJvdXRfaXRlX2JyYW5jaCA9IHJlZiBmYWxzZVxubGV0IGFib3V0X2l0ZV9icmFuY2ggbG9jID0gIWFib3V0X2l0ZV9icmFuY2hfcmVmIGxvY1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogRGVmaW5pdGlvbiBvZiB0aGUgT0NhbWwgQVNUICopXG5cbm9wZW4gSW1wb3J0XG5cbigqIFRoaXMgZmlsZSBpcyBvYnRhaW5lZCBieTpcblxuICAgLSBjb3B5aW5nIGEgc3Vic2V0IG9mIHRoZSBjb3JyZXNwb25kaW5nIGFzdF94eHgubWwgZmlsZSBmcm9tIEFzdGxpYlxuICAgKHN1Yi1tb2R1bGVzIEFzdHR5cGVzIGFuZCBQYXJzZXRyZWUpXG4gICAtIGFkZGluZyB0aGUgdHlwZSBkZWZpbml0aW9ucyBmb3IgcG9zaXRpb24sIGxvY2F0aW9uLCBsb2MgYW5kIGxvbmdpZGVudFxuICAgLSBmbGF0dGVuaW5nIGFsbCB0aGUgbW9kdWxlc1xuICAgLSByZW1vdmluZyBBc3R0eXBlcy5jb25zdGFudCAodW51c2VkIGFuZCBjb25mbGljdHMgd2l0aCBQYXJzZXRyZWUuY29uc3RhbnQpXG4gICAtIHJlbmFtaW5nIGEgZmV3IHR5cGVzOlxuICAgLSAtIExvY2F0aW9uLnQgLT4gbG9jYXRpb25cbiAgIC0gLSBMb25naWRlbnQudCAtPiBsb25naWRlbnRcbiAgIC0gYWRkaW5nIGEgdHlwZSBsb25naWRlbnRfbG9jID0gbG9uZ2lkZW50IGxvYyBhbmQgcmVwbGFjaW5nIGFsbCB0aGUgb2NjdXJyZW5jZXMgb2YgdGhlXG4gICBsYXR0ZXIgYnkgdGhlIGZvcm1lci4gVGhpcyBpcyBzbyB0aGF0IHdlIGNhbiBvdmVycmlkZSBpdGVyYXRpb24gYW4gdGhlIGxldmVsIG9mIGFcbiAgIGxvbmdpZGVudCBsb2NcbiAgIC0gYWRkaW5nIGEgdHlwZSBjYXNlcyA9IGNhc2UgbGlzdFxuICAgLSByZXBsYWNpbmcgYWxsIG9jY3VyZW5jZXMgb2YgXCJjYXNlIGxpc3RcIiBieSBcImNhc2VzXCJcbiAgIC0gcmVwbGFjaW5nIGFsbCB0aGUgKCpJRl9DVVJSRU5UID0gRm9vLmJhciopIGJ5OiA9IEZvby5iYXJcbiAgIC0gcmVtb3ZpbmcgdGhlIGV4dHJhIHZhbHVlcyBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlXG4gICAtIHJlcGxhY2luZyBhcHAgW3R5cGUgLi4uXSBieSBbYW5kIC4uLl0gdG8gbWFrZSBldmVyeXRoaW5nIG9uZSByZWN1cnNpdmUgYmxvY2tcbiAgIC0gYWRkaW5nIFtAQGRlcml2aW5nX2lubGluZSB0cmF2ZXJzZV1bQEBAZW5kXSBhdCB0aGUgZW5kXG5cbiAgIFRvIHVwZGF0ZSBpdCB0byBhIG5ld2VyIE9DYW1sIHZlcnNpb24sIGNyZWF0ZSBhIG5ldyBtb2R1bGUgd2l0aCB0aGUgYWJvdmUgZnJvbSB0aGVcbiAgIGxhdGVzdCBjb21waWxlciBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbW9kdWxlIGRlZmluaXRpb25zIGFuZCBvcGVucyB0byBnZXQgaXQgdG9cbiAgIGNvbXBpbGU6XG4gICBbe1xuICAgIG1vZHVsZSBBc3QgPSBWZXJzaW9ucy5PQ2FtbF80eHhcbiAgICBvcGVuIEFzdC5Bc3RcbiAgICBtb2R1bGUgTG9jYXRpb24gICA9IE9jYW1sX2NvbW1vbi5Mb2NhdGlvblxuICAgIG1vZHVsZSBMb25naWRlbnQgPSBPY2FtbF9jb21tb24uTG9uZ2lkZW50XG4gICB9XVxuXG4gICBPbmNlIHlvdSBoYXZlIGdlbmVyYXRlZCB0aGUgaW5saW5lZCBkZXJpdmVkIHRyYXZlcnNhbCBjbGFzc2VzIGJ5IHJ1bm5pbmdcbiAgIFt7IGR1bmUgYnVpbGQgQGxpbnQgfV0geW91IGNhbiByZXBsYWNlIHRoZSBhYm92ZSBtZW50aW9uZWQgbW9kdWxlIGRlZmluaXRpb25zIGJ5IGFcbiAgIFtvcGVuIEltcG9ydF0gYW5kIHVwZGF0ZSBbSW1wb3J0XSBzbyB0aGF0IHRoZSBbSnNdIG1vZHVsZSBwb2ludHMgdG9cbiAgIFtWZXJzaW9ucy5PQ2FtbF80eHhdLlxuKilcblxuKCogU291cmNlIGNvZGUgbG9jYXRpb25zIChyYW5nZXMgb2YgcG9zaXRpb25zKSwgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5cbnR5cGUgcG9zaXRpb24gPSBMZXhpbmcucG9zaXRpb24gPSB7XG4gIHBvc19mbmFtZSA6IHN0cmluZztcbiAgcG9zX2xudW0gOiBpbnQ7XG4gIHBvc19ib2wgOiBpbnQ7XG4gIHBvc19jbnVtIDogaW50O1xufVxuXG5hbmQgbG9jYXRpb24gPSBMb2NhdGlvbi50ID0ge1xuICBsb2Nfc3RhcnQgOiBwb3NpdGlvbjtcbiAgbG9jX2VuZCA6IHBvc2l0aW9uO1xuICBsb2NfZ2hvc3QgOiBib29sO1xufVxuXG5hbmQgbG9jYXRpb25fc3RhY2sgPSBsb2NhdGlvbiBsaXN0XG5cbigqIE5vdGUgb24gdGhlIHVzZSBvZiBMZXhpbmcucG9zaXRpb24gaW4gdGhpcyBtb2R1bGUuXG4gICBJZiBbcG9zX2ZuYW1lID0gXCJcIl0sIHRoZW4gdXNlIFshaW5wdXRfbmFtZV0gaW5zdGVhZC5cbiAgIElmIFtwb3NfbG51bSA9IC0xXSwgdGhlbiBbcG9zX2JvbCA9IDBdLiBVc2UgW3Bvc19jbnVtXSBhbmRcbiAgIHJlLXBhcnNlIHRoZSBmaWxlIHRvIGdldCB0aGUgbGluZSBhbmQgY2hhcmFjdGVyIG51bWJlcnMuXG4gICBFbHNlIGFsbCBmaWVsZHMgYXJlIGNvcnJlY3QuXG4qKVxuYW5kICdhIGxvYyA9ICdhIExvY2F0aW9uLmxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IGxvY2F0aW9uIH1cblxuKCogTG9uZyBpZGVudGlmaWVycywgdXNlZCBpbiBwYXJzZXRyZWUuICopXG5hbmQgbG9uZ2lkZW50ID0gTG9uZ2lkZW50LnQgPVxuICB8IExpZGVudCBvZiBzdHJpbmdcbiAgfCBMZG90IG9mIGxvbmdpZGVudCAqIHN0cmluZ1xuICB8IExhcHBseSBvZiBsb25naWRlbnQgKiBsb25naWRlbnRcblxuYW5kIGxvbmdpZGVudF9sb2MgPSBsb25naWRlbnQgbG9jXG5cbigqKiBBdXhpbGlhcnkgQVNUIHR5cGVzIHVzZWQgYnkgcGFyc2V0cmVlIGFuZCB0eXBlZHRyZWUuICopXG5cbmFuZCByZWNfZmxhZyA9IEFzdHR5cGVzLnJlY19mbGFnID0gTm9ucmVjdXJzaXZlIHwgUmVjdXJzaXZlXG5cbmFuZCBkaXJlY3Rpb25fZmxhZyA9IEFzdHR5cGVzLmRpcmVjdGlvbl9mbGFnID0gVXB0byB8IERvd250b1xuXG4oKiBPcmRlciBtYXR0ZXJzLCB1c2VkIGluIHBvbHltb3JwaGljIGNvbXBhcmlzb24gKilcbmFuZCBwcml2YXRlX2ZsYWcgPSBBc3R0eXBlcy5wcml2YXRlX2ZsYWcgPSBQcml2YXRlIHwgUHVibGljXG5hbmQgbXV0YWJsZV9mbGFnID0gQXN0dHlwZXMubXV0YWJsZV9mbGFnID0gSW1tdXRhYmxlIHwgTXV0YWJsZVxuYW5kIHZpcnR1YWxfZmxhZyA9IEFzdHR5cGVzLnZpcnR1YWxfZmxhZyA9IFZpcnR1YWwgfCBDb25jcmV0ZVxuYW5kIG92ZXJyaWRlX2ZsYWcgPSBBc3R0eXBlcy5vdmVycmlkZV9mbGFnID0gT3ZlcnJpZGUgfCBGcmVzaFxuYW5kIGNsb3NlZF9mbGFnID0gQXN0dHlwZXMuY2xvc2VkX2ZsYWcgPSBDbG9zZWQgfCBPcGVuXG5hbmQgbGFiZWwgPSBzdHJpbmdcblxuYW5kIGFyZ19sYWJlbCA9IEFzdHR5cGVzLmFyZ19sYWJlbCA9XG4gIHwgTm9sYWJlbFxuICB8IExhYmVsbGVkIG9mIHN0cmluZyAgKCoqIFtsYWJlbDpUIC0+IC4uLl0gKilcbiAgfCBPcHRpb25hbCBvZiBzdHJpbmcgICgqKiBbP2xhYmVsOlQgLT4gLi4uXSAqKVxuXG5hbmQgdmFyaWFuY2UgPSBBc3R0eXBlcy52YXJpYW5jZSA9IENvdmFyaWFudCB8IENvbnRyYXZhcmlhbnQgfCBOb1ZhcmlhbmNlXG5hbmQgaW5qZWN0aXZpdHkgPSBBc3R0eXBlcy5pbmplY3Rpdml0eSA9IEluamVjdGl2ZSB8IE5vSW5qZWN0aXZpdHlcblxuKCoqIEFic3RyYWN0IHN5bnRheCB0cmVlIHByb2R1Y2VkIGJ5IHBhcnNpbmcgKilcblxuYW5kIGNvbnN0YW50ID0gUGFyc2V0cmVlLmNvbnN0YW50ID1cbiAgfCBQY29uc3RfaW50ZWdlciBvZiBzdHJpbmcgKiBjaGFyIG9wdGlvblxuICAgICAgKCoqIEludGVnZXIgY29uc3RhbnRzIHN1Y2ggYXMgWzNdIFszbF0gWzNMXSBbM25dLlxuXG4gICAgICAgICAgU3VmZml4ZXMgW1tnLXpdW0ctWl1dIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBleGNlcHRcbiAgICAgICAgICBbJ2wnXSwgWydMJ10gYW5kIFsnbiddIGFyZSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIgKilcbiAgfCBQY29uc3RfY2hhciBvZiBjaGFyICAoKiogQ2hhcmFjdGVyIHN1Y2ggYXMgWydjJ10uICopXG4gIHwgUGNvbnN0X3N0cmluZyBvZiBzdHJpbmcgKiBsb2NhdGlvbiAqIHN0cmluZyBvcHRpb25cbiAgICAgICgqKiBDb25zdGFudCBzdHJpbmcgc3VjaCBhcyBbXCJjb25zdGFudFwiXSBvclxuICAgICAgICAgIFt7ZGVsaW18b3RoZXIgY29uc3RhbnR8ZGVsaW19XS5cblxuICAgICAgICAgIFRoZSBsb2NhdGlvbiBzcGFuIHRoZSBjb250ZW50IG9mIHRoZSBzdHJpbmcsIHdpdGhvdXQgdGhlIGRlbGltaXRlcnMuICopXG4gIHwgUGNvbnN0X2Zsb2F0IG9mIHN0cmluZyAqIGNoYXIgb3B0aW9uXG4gICAgICAoKiogRmxvYXQgY29uc3RhbnQgc3VjaCBhcyBbMy40XSwgWzJlNV0gb3IgWzEuNGUtNF0uXG5cbiAgICAgICAgICBTdWZmaXhlcyBbZy16XVtHLVpdIGFyZSBhY2NlcHRlZCBieSB0aGUgcGFyc2VyLiBTdWZmaXhlcyBhcmUgcmVqZWN0ZWRcbiAgICAgICAgICBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbigqKiB7MSBFeHRlbnNpb24gcG9pbnRzfSAqKVxuXG5hbmQgYXR0cmlidXRlID0gUGFyc2V0cmVlLmF0dHJpYnV0ZSA9IHtcbiAgYXR0cl9uYW1lIDogc3RyaW5nIGxvYztcbiAgYXR0cl9wYXlsb2FkIDogcGF5bG9hZDtcbiAgYXR0cl9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBBdHRyaWJ1dGVzIHN1Y2ggYXMgW1tAaWQgQVJHXV0gYW5kIFtbQEBpZCBBUkddXS5cblxuICAgIE1ldGFkYXRhIGNvbnRhaW5lcnMgcGFzc2VkIGFyb3VuZCB3aXRoaW4gdGhlIEFTVC4gVGhlIGNvbXBpbGVyIGlnbm9yZXNcbiAgICB1bmtub3duIGF0dHJpYnV0ZXMuICopXG5cbmFuZCBleHRlbnNpb24gPSBzdHJpbmcgbG9jICogcGF5bG9hZFxuKCoqIEV4dGVuc2lvbiBwb2ludHMgc3VjaCBhcyBbWyVpZCBBUkddIGFuZCBbJSVpZCBBUkddXS5cblxuICAgIFN1Yi1sYW5ndWFnZSBwbGFjZWhvbGRlciAtLSByZWplY3RlZCBieSB0aGUgdHlwZWNoZWNrZXIuICopXG5cbmFuZCBhdHRyaWJ1dGVzID0gYXR0cmlidXRlIGxpc3RcblxuYW5kIHBheWxvYWQgPSBQYXJzZXRyZWUucGF5bG9hZCA9XG4gIHwgUFN0ciBvZiBzdHJ1Y3R1cmVcbiAgfCBQU2lnIG9mIHNpZ25hdHVyZSAgKCoqIFs6IFNJR10gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBUeXAgb2YgY29yZV90eXBlICAoKiogWzogVF0gaW4gYW4gYXR0cmlidXRlIG9yIGFuIGV4dGVuc2lvbiBwb2ludCAqKVxuICB8IFBQYXQgb2YgcGF0dGVybiAqIGV4cHJlc3Npb24gb3B0aW9uXG4gICAgICAoKiogWz8gUF0gb3IgWz8gUCB3aGVuIEVdLCBpbiBhbiBhdHRyaWJ1dGUgb3IgYW4gZXh0ZW5zaW9uIHBvaW50ICopXG5cbigqKiB7MSBDb3JlIGxhbmd1YWdlfSAqKVxuKCoqIHsyIFR5cGUgZXhwcmVzc2lvbnN9ICopXG5cbmFuZCBjb3JlX3R5cGUgPSBQYXJzZXRyZWUuY29yZV90eXBlID0ge1xuICBwdHlwX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYztcbiAgcHR5cF9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5cF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHR5cF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjb3JlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5jb3JlX3R5cGVfZGVzYyA9XG4gIHwgUHR5cF9hbnkgICgqKiBbX10gKilcbiAgfCBQdHlwX3ZhciBvZiBzdHJpbmcgICgqKiBBIHR5cGUgdmFyaWFibGUgc3VjaCBhcyBbJ2FdICopXG4gIHwgUHR5cF9hcnJvdyBvZiBhcmdfbGFiZWwgKiBjb3JlX3R5cGUgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbUHR5cF9hcnJvdyhsYmwsIFQxLCBUMildIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTm9sYWJlbH0gW05vbGFiZWxdfSxcbiAgICAgICAgICAtIFt+bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWRdfSxcbiAgICAgICAgICAtIFs/bDpUMSAtPiBUMl0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfS4gKilcbiAgfCBQdHlwX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfdHVwbGUoW1QxIDsgLi4uIDsgVG5dKV0gcmVwcmVzZW50cyBhIHByb2R1Y3QgdHlwZVxuICAgICAgICAgIFtUMSAqIC4uLiAqIFRuXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0uICopXG4gIHwgUHR5cF9jb25zdHIgb2YgbG9uZ2lkZW50X2xvYyAqIGNvcmVfdHlwZSBsaXN0XG4gICAgICAoKiogW1B0eXBfY29uc3RyKGxpZGVudCwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt0Y29uc3RyXSB3aGVuIFtsPVtdXSxcbiAgICAgICAgICAtIFtUIHRjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pIHRjb25zdHJdIHdoZW4gW2w9W1QxIDsgLi4uIDsgVG5dXS4gKilcbiAgfCBQdHlwX29iamVjdCBvZiBvYmplY3RfZmllbGQgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1B0eXBfb2JqZWN0KFsgbDE6VDE7IC4uLjsgbG46VG4gXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuID5dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfSxcbiAgICAgICAgICAtIFs8IGwxOlQxOyAuLi47IGxuOlRuOyAuLiA+XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfS4gKilcbiAgfCBQdHlwX2NsYXNzIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtQdHlwX2NsYXNzKHRjb25zdHIsIGwpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbI3Rjb25zdHJdIHdoZW4gW2w9W11dLFxuICAgICAgICAgIC0gW1QgI3Rjb25zdHJdIHdoZW4gW2w9W1RdXSxcbiAgICAgICAgICAtIFsoVDEsIC4uLiwgVG4pICN0Y29uc3RyXSB3aGVuIFtsPVtUMSA7IC4uLiA7IFRuXV0uICopXG4gIHwgUHR5cF9hbGlhcyBvZiBjb3JlX3R5cGUgKiBzdHJpbmcgICgqKiBbVCBhcyAnYV0uICopXG4gIHwgUHR5cF92YXJpYW50IG9mIHJvd19maWVsZCBsaXN0ICogY2xvc2VkX2ZsYWcgKiBsYWJlbCBsaXN0IG9wdGlvblxuICAgICAgKCoqIFtQdHlwX3ZhcmlhbnQoW2BBO2BCXSwgZmxhZywgbGFiZWxzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1sgYEF8YEIgXV0gd2hlbiBbZmxhZ10gaXMge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuQ2xvc2VkfVxuICAgICAgICAgICAgW0Nsb3NlZF19LCBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s+IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLk9wZW59IFtPcGVuXX0sXG4gICAgICAgICAgICBhbmQgW2xhYmVsc10gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW1s8IGBBfGBCIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtdXSxcbiAgICAgICAgICAtIFtbPCBgQXxgQiA+IGBYIGBZIF1dIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLmNsb3NlZF9mbGFnLkNsb3NlZH1cbiAgICAgICAgICAgIFtDbG9zZWRdfSwgYW5kIFtsYWJlbHNdIGlzIFtTb21lIFtcIlhcIjtcIllcIl1dLiAqKVxuICB8IFB0eXBfcG9seSBvZiBzdHJpbmcgbG9jIGxpc3QgKiBjb3JlX3R5cGVcbiAgICAgICgqKiBbJ2ExIC4uLiAnYW4uIFRdXG5cbiAgICAgICAgICBDYW4gb25seSBhcHBlYXIgaW4gdGhlIGZvbGxvd2luZyBjb250ZXh0OlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shcGF0dGVybl9kZXNjLlBwYXRfY29uc3RyYWludH1cbiAgICAgICAgICAgIFtQcGF0X2NvbnN0cmFpbnRdfSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gYSBjb25zdHJhaW50IG9uIGFcbiAgICAgICAgICAgIGxldC1iaW5kaW5nOlxuXG4gICAgICAgICAge1tcbiAgICAgICAgICAgIGxldCB4IDogJ2ExIC4uLiAnYW4uIFQgPSBlIC4uLlxuICAgICAgICAgIF19XG4gICAgICAgICAgLSBVbmRlciB7eyFjbGFzc19maWVsZF9raW5kLkNma192aXJ0dWFsfSBbQ2ZrX3ZpcnR1YWxdfSBmb3IgbWV0aG9kc1xuICAgICAgICAgICAgKG5vdCB2YWx1ZXMpLlxuXG4gICAgICAgICAgLSBBcyB0aGUgeyFjb3JlX3R5cGV9IG9mIGEge3shY2xhc3NfdHlwZV9maWVsZF9kZXNjLlBjdGZfbWV0aG9kfVxuICAgICAgICAgICAgW1BjdGZfbWV0aG9kXX0gbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHshY29yZV90eXBlfSBvZiBhIHt7IWV4cHJlc3Npb25fZGVzYy5QZXhwX3BvbHl9IFtQZXhwX3BvbHldfVxuICAgICAgICAgICAgbm9kZS5cblxuICAgICAgICAgIC0gQXMgdGhlIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF90eXBlfSBbcGxkX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IWxhYmVsX2RlY2xhcmF0aW9ufS5cblxuICAgICAgICAgIC0gQXMgYSB7IWNvcmVfdHlwZX0gb2YgYSB7eyFjb3JlX3R5cGVfZGVzYy5QdHlwX29iamVjdH0gW1B0eXBfb2JqZWN0XX1cbiAgICAgICAgICAgIG5vZGUuXG5cbiAgICAgICAgICAtIEFzIHRoZSB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3R5cGV9IFtwdmFsX3R5cGVdfSBmaWVsZCBvZiBhXG4gICAgICAgICAgICB7IXZhbHVlX2Rlc2NyaXB0aW9ufS4gKilcbiAgfCBQdHlwX3BhY2thZ2Ugb2YgcGFja2FnZV90eXBlICAoKiogWyhtb2R1bGUgUyldLiAqKVxuICB8IFB0eXBfZXh0ZW5zaW9uIG9mIGV4dGVuc2lvbiAgKCoqIFtbJWlkXV0uICopXG5cbmFuZCBwYWNrYWdlX3R5cGUgPSBsb25naWRlbnRfbG9jICogKGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUpIGxpc3RcbigqKiBBcyB7IXBhY2thZ2VfdHlwZX0gdHlwZWQgdmFsdWVzOlxuXG4gICAgLSBbKFMsIFtdKV0gcmVwcmVzZW50cyBbKG1vZHVsZSBTKV0sXG4gICAgLSBbKFMsIFsodDEsIFQxKSA7IC4uLiA7ICh0biwgVG4pXSldIHJlcHJlc2VudHNcbiAgICAgIFsobW9kdWxlIFMgd2l0aCB0eXBlIHQxID0gVDEgYW5kIC4uLiBhbmQgdG4gPSBUbildLiAqKVxuXG5hbmQgcm93X2ZpZWxkID0gUGFyc2V0cmVlLnJvd19maWVsZCA9IHtcbiAgcHJmX2Rlc2MgOiByb3dfZmllbGRfZGVzYztcbiAgcHJmX2xvYyA6IGxvY2F0aW9uO1xuICBwcmZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7XG59XG5cbmFuZCByb3dfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5yb3dfZmllbGRfZGVzYyA9XG4gIHwgUnRhZyBvZiBsYWJlbCBsb2MgKiBib29sICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiBbUnRhZyhgQSwgYiwgbCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbYl0gaXMgW3RydWVdIGFuZCBbbF0gaXMgW1tdXSxcbiAgICAgICAgICAtIFtgQSBvZiBUXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUXV0sXG4gICAgICAgICAgLSBbYEEgb2YgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbZmFsc2VdIGFuZCBbbF0gaXMgW1tUMTsuLi5Ubl1dLFxuICAgICAgICAgIC0gW2BBIG9mICYgVDEgJiAuLiAmIFRuXSB3aGVuIFtiXSBpcyBbdHJ1ZV0gYW5kIFtsXSBpcyBbW1QxOy4uLlRuXV0uXG5cbiAgICAgICAgICAtIFRoZSBbYm9vbF0gZmllbGQgaXMgdHJ1ZSBpZiB0aGUgdGFnIGNvbnRhaW5zIGEgY29uc3RhbnQgKGVtcHR5KVxuICAgICAgICAgICAgY29uc3RydWN0b3IuXG4gICAgICAgICAgLSBbJl0gb2NjdXJzIHdoZW4gc2V2ZXJhbCB0eXBlcyBhcmUgdXNlZCBmb3IgdGhlIHNhbWUgY29uc3RydWN0b3IgKHNlZVxuICAgICAgICAgICAgNC4yIGluIHRoZSBtYW51YWwpICopXG4gIHwgUmluaGVyaXQgb2YgY29yZV90eXBlICAoKiogW1sgfCB0IF1dICopXG5cbmFuZCBvYmplY3RfZmllbGQgPSBQYXJzZXRyZWUub2JqZWN0X2ZpZWxkID0ge1xuICBwb2ZfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjO1xuICBwb2ZfbG9jIDogbG9jYXRpb247XG4gIHBvZl9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIG9iamVjdF9maWVsZF9kZXNjID0gUGFyc2V0cmVlLm9iamVjdF9maWVsZF9kZXNjID1cbiAgfCBPdGFnIG9mIGxhYmVsIGxvYyAqIGNvcmVfdHlwZVxuICB8IE9pbmhlcml0IG9mIGNvcmVfdHlwZVxuXG4oKiogezIgUGF0dGVybnN9ICopXG5cbmFuZCBwYXR0ZXJuID0gUGFyc2V0cmVlLnBhdHRlcm4gPSB7XG4gIHBwYXRfZGVzYyA6IHBhdHRlcm5fZGVzYztcbiAgcHBhdF9sb2MgOiBsb2NhdGlvbjtcbiAgcHBhdF9sb2Nfc3RhY2sgOiBsb2NhdGlvbl9zdGFjaztcbiAgcHBhdF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBwYXR0ZXJuX2Rlc2MgPSBQYXJzZXRyZWUucGF0dGVybl9kZXNjID1cbiAgfCBQcGF0X2FueSAgKCoqIFRoZSBwYXR0ZXJuIFtfXS4gKilcbiAgfCBQcGF0X3ZhciBvZiBzdHJpbmcgbG9jICAoKiogQSB2YXJpYWJsZSBwYXR0ZXJuIHN1Y2ggYXMgW3hdICopXG4gIHwgUHBhdF9hbGlhcyBvZiBwYXR0ZXJuICogc3RyaW5nIGxvY1xuICAgICAgKCoqIEFuIGFsaWFzIHBhdHRlcm4gc3VjaCBhcyBbUCBhcyAnYV0gKilcbiAgfCBQcGF0X2NvbnN0YW50IG9mIGNvbnN0YW50XG4gICAgICAoKiogUGF0dGVybnMgc3VjaCBhcyBbMV0sIFsnYSddLCBbXCJ0cnVlXCJdLCBbMS4wXSwgWzFsXSwgWzFMXSwgWzFuXSAqKVxuICB8IFBwYXRfaW50ZXJ2YWwgb2YgY29uc3RhbnQgKiBjb25zdGFudFxuICAgICAgKCoqIFBhdHRlcm5zIHN1Y2ggYXMgWydhJy4uJ3onXS5cblxuICAgICAgICAgIE90aGVyIGZvcm1zIG9mIGludGVydmFsIGFyZSByZWNvZ25pemVkIGJ5IHRoZSBwYXJzZXIgYnV0IHJlamVjdGVkIGJ5XG4gICAgICAgICAgdGhlIHR5cGUtY2hlY2tlci4gKilcbiAgfCBQcGF0X3R1cGxlIG9mIHBhdHRlcm4gbGlzdFxuICAgICAgKCoqIFBhdHRlcm5zIFsoUDEsIC4uLiwgUG4pXS5cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQcGF0X2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogKHN0cmluZyBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X2NvbnN0cnVjdChDLCBhcmdzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2FyZ3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtDIFBdIHdoZW4gW2FyZ3NdIGlzIFtTb21lIChbXSwgUCldXG4gICAgICAgICAgLSBbQyAoUDEsIC4uLiwgUG4pXSB3aGVuIFthcmdzXSBpc1xuICAgICAgICAgICAgW1NvbWUgKFtdLCBQcGF0X3R1cGxlIFtQMTsgLi4uOyBQbl0pXVxuICAgICAgICAgIC0gW0MgKHR5cGUgYSBiKSBQXSB3aGVuIFthcmdzXSBpcyBbU29tZSAoW2E7IGJdLCBQKV0gKilcbiAgfCBQcGF0X3ZhcmlhbnQgb2YgbGFiZWwgKiBwYXR0ZXJuIG9wdGlvblxuICAgICAgKCoqIFtQcGF0X3ZhcmlhbnQoYEEsIHBhdCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbcGF0XSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbYEEgUF0gd2hlbiBbcGF0XSBpcyBbU29tZSBQXSAqKVxuICB8IFBwYXRfcmVjb3JkIG9mIChsb25naWRlbnRfbG9jICogcGF0dGVybikgbGlzdCAqIGNsb3NlZF9mbGFnXG4gICAgICAoKiogW1BwYXRfcmVjb3JkKFsobDEsIFAxKSA7IC4uLiA7IChsbiwgUG4pXSwgZmxhZyldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt7IGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5jbG9zZWRfZmxhZy5DbG9zZWR9IFtDbG9zZWRdfVxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG47IF99XSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuY2xvc2VkX2ZsYWcuT3Blbn0gW09wZW5dfVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUHBhdF9hcnJheSBvZiBwYXR0ZXJuIGxpc3QgICgqKiBQYXR0ZXJuIFtbfCBQMTsgLi4uOyBQbiB8XV0gKilcbiAgfCBQcGF0X29yIG9mIHBhdHRlcm4gKiBwYXR0ZXJuICAoKiogUGF0dGVybiBbUDEgfCBQMl0gKilcbiAgfCBQcGF0X2NvbnN0cmFpbnQgb2YgcGF0dGVybiAqIGNvcmVfdHlwZSAgKCoqIFBhdHRlcm4gWyhQIDogVCldICopXG4gIHwgUHBhdF90eXBlIG9mIGxvbmdpZGVudF9sb2MgICgqKiBQYXR0ZXJuIFsjdGNvbnN0XSAqKVxuICB8IFBwYXRfbGF6eSBvZiBwYXR0ZXJuICAoKiogUGF0dGVybiBbbGF6eSBQXSAqKVxuICB8IFBwYXRfdW5wYWNrIG9mIHN0cmluZyBvcHRpb24gbG9jXG4gICAgICAoKiogW1BwYXRfdW5wYWNrKHMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbKG1vZHVsZSBQKV0gd2hlbiBbc10gaXMgW1NvbWUgXCJQXCJdXG4gICAgICAgICAgLSBbKG1vZHVsZSBfKV0gd2hlbiBbc10gaXMgW05vbmVdXG5cbiAgICAgICAgICBOb3RlOiBbKG1vZHVsZSBQIDogUyldIGlzIHJlcHJlc2VudGVkIGFzXG4gICAgICAgICAgW1BwYXRfY29uc3RyYWludChQcGF0X3VucGFjayhTb21lIFwiUFwiKSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBwYXRfZXhjZXB0aW9uIG9mIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtleGNlcHRpb24gUF0gKilcbiAgfCBQcGF0X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBQYXR0ZXJuIFtbJWlkXV0gKilcbiAgfCBQcGF0X29wZW4gb2YgbG9uZ2lkZW50X2xvYyAqIHBhdHRlcm4gICgqKiBQYXR0ZXJuIFtNLihQKV0gKilcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zfSAqKVxuXG5hbmQgZXhwcmVzc2lvbiA9IFBhcnNldHJlZS5leHByZXNzaW9uID0ge1xuICBwZXhwX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2M7XG4gIHBleHBfbG9jIDogbG9jYXRpb247XG4gIHBleHBfbG9jX3N0YWNrIDogbG9jYXRpb25fc3RhY2s7XG4gIHBleHBfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgZXhwcmVzc2lvbl9kZXNjID0gUGFyc2V0cmVlLmV4cHJlc3Npb25fZGVzYyA9XG4gIHwgUGV4cF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogSWRlbnRpZmllcnMgc3VjaCBhcyBbeF0gYW5kIFtNLnhdICopXG4gIHwgUGV4cF9jb25zdGFudCBvZiBjb25zdGFudFxuICAgICAgKCoqIEV4cHJlc3Npb25zIGNvbnN0YW50IHN1Y2ggYXMgWzFdLCBbJ2EnXSwgW1widHJ1ZVwiXSwgWzEuMF0sIFsxbF0sIFsxTF0sXG4gICAgICAgICAgWzFuXSAqKVxuICB8IFBleHBfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2xldChmbGFnLCBbKFAxLEUxKSA7IC4uLiA7IChQbixFbildLCBFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gRV0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIEVdIHdoZW4gW2ZsYWddIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQZXhwX2Z1bmN0aW9uIG9mIGNhc2VzICAoKiogW2Z1bmN0aW9uIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2Z1bihsYmwsIGV4cDAsIFAsIEUxKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2Z1biBQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5Ob2xhYmVsfVxuICAgICAgICAgICAgW05vbGFiZWxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXVxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IEUxXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtmdW4gP2w6UCAtPiBFMV0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWwgbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbZnVuID9sOihQID0gRTApIC0+IEUxXSB3aGVuIFtsYmxdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9IFtPcHRpb25hbCBsXX0gYW5kIFtleHAwXSBpc1xuICAgICAgICAgICAgW1NvbWUgRTBdXG5cbiAgICAgICAgICBOb3RlczpcblxuICAgICAgICAgIC0gSWYgW0UwXSBpcyBwcm92aWRlZCwgb25seSB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuT3B0aW9uYWx9XG4gICAgICAgICAgICBbT3B0aW9uYWxdfSBpcyBhbGxvd2VkLlxuICAgICAgICAgIC0gW2Z1biBQMSBQMiAuLiBQbiAtPiBFMV0gaXMgcmVwcmVzZW50ZWQgYXMgbmVzdGVkXG4gICAgICAgICAgICB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59IFtQZXhwX2Z1bl19LlxuICAgICAgICAgIC0gW2xldCBmIFAgPSBFXSBpcyByZXByZXNlbnRlZCB1c2luZyB7eyFleHByZXNzaW9uX2Rlc2MuUGV4cF9mdW59XG4gICAgICAgICAgICBbUGV4cF9mdW5dfS4gKilcbiAgfCBQZXhwX2FwcGx5IG9mIGV4cHJlc3Npb24gKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQZXhwX2FwcGx5KEUwLCBbKGwxLCBFMSkgOyAuLi4gOyAobG4sIEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0UwIH5sMTpFMSAuLi4gfmxuOkVuXVxuXG4gICAgICAgICAgW2xpXSBjYW4gYmUge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0gKG5vbiBsYWJlbGVkXG4gICAgICAgICAgYXJndW1lbnQpLCB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9IFtMYWJlbGxlZF19IChsYWJlbGxlZFxuICAgICAgICAgIGFyZ3VtZW50cykgb3Ige3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfSBbT3B0aW9uYWxdfSAob3B0aW9uYWxcbiAgICAgICAgICBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQZXhwX21hdGNoIG9mIGV4cHJlc3Npb24gKiBjYXNlc1xuICAgICAgKCoqIFttYXRjaCBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90cnkgb2YgZXhwcmVzc2lvbiAqIGNhc2VzXG4gICAgICAoKiogW3RyeSBFMCB3aXRoIFAxIC0+IEUxIHwgLi4uIHwgUG4gLT4gRW5dICopXG4gIHwgUGV4cF90dXBsZSBvZiBleHByZXNzaW9uIGxpc3RcbiAgICAgICgqKiBFeHByZXNzaW9ucyBbKEUxLCAuLi4sIEVuKV1cblxuICAgICAgICAgIEludmFyaWFudDogW24gPj0gMl0gKilcbiAgfCBQZXhwX2NvbnN0cnVjdCBvZiBsb25naWRlbnRfbG9jICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9jb25zdHJ1Y3QoQywgZXhwKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW0NdIHdoZW4gW2V4cF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW0MgRV0gd2hlbiBbZXhwXSBpcyBbU29tZSBFXSxcbiAgICAgICAgICAtIFtDIChFMSwgLi4uLCBFbildIHdoZW4gW2V4cF0gaXMgW1NvbWUgKFBleHBfdHVwbGVbRTE7Li4uO0VuXSldICopXG4gIHwgUGV4cF92YXJpYW50IG9mIGxhYmVsICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF92YXJpYW50KGBBLCBleHApXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFtgQV0gd2hlbiBbZXhwXSBpcyBbTm9uZV1cbiAgICAgICAgICAtIFtgQSBFXSB3aGVuIFtleHBdIGlzIFtTb21lIEVdICopXG4gIHwgUGV4cF9yZWNvcmQgb2YgKGxvbmdpZGVudF9sb2MgKiBleHByZXNzaW9uKSBsaXN0ICogZXhwcmVzc2lvbiBvcHRpb25cbiAgICAgICgqKiBbUGV4cF9yZWNvcmQoWyhsMSxQMSkgOyAuLi4gOyAobG4sUG4pXSwgZXhwMCldIHJlcHJlc2VudHNcblxuICAgICAgICAgIC0gW3sgbDE9UDE7IC4uLjsgbG49UG4gfV0gd2hlbiBbZXhwMF0gaXMgW05vbmVdXG4gICAgICAgICAgLSBbeyBFMCB3aXRoIGwxPVAxOyAuLi47IGxuPVBuIH1dIHdoZW4gW2V4cDBdIGlzIFtTb21lIEUwXVxuXG4gICAgICAgICAgSW52YXJpYW50OiBbbiA+IDBdICopXG4gIHwgUGV4cF9maWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAgKCoqIFtFLmxdICopXG4gIHwgUGV4cF9zZXRmaWVsZCBvZiBleHByZXNzaW9uICogbG9uZ2lkZW50X2xvYyAqIGV4cHJlc3Npb25cbiAgICAgICgqKiBbRTEubCA8LSBFMl0gKilcbiAgfCBQZXhwX2FycmF5IG9mIGV4cHJlc3Npb24gbGlzdCAgKCoqIFtbfCBFMTsgLi4uOyBFbiB8XV0gKilcbiAgfCBQZXhwX2lmdGhlbmVsc2Ugb2YgZXhwcmVzc2lvbiAqIGV4cHJlc3Npb24gKiBleHByZXNzaW9uIG9wdGlvblxuICAgICAgKCoqIFtpZiBFMSB0aGVuIEUyIGVsc2UgRTNdICopXG4gIHwgUGV4cF9zZXF1ZW5jZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFtFMTsgRTJdICopXG4gIHwgUGV4cF93aGlsZSBvZiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAgKCoqIFt3aGlsZSBFMSBkbyBFMiBkb25lXSAqKVxuICB8IFBleHBfZm9yIG9mIHBhdHRlcm4gKiBleHByZXNzaW9uICogZXhwcmVzc2lvbiAqIGRpcmVjdGlvbl9mbGFnICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtQZXhwX2ZvcihpLCBFMSwgRTIsIGRpcmVjdGlvbiwgRTMpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSB0byBFMiBkbyBFMyBkb25lXSB3aGVuIFtkaXJlY3Rpb25dIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5kaXJlY3Rpb25fZmxhZy5VcHRvfSBbVXB0b119XG4gICAgICAgICAgLSBbZm9yIGkgPSBFMSBkb3dudG8gRTIgZG8gRTMgZG9uZV0gd2hlbiBbZGlyZWN0aW9uXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMuZGlyZWN0aW9uX2ZsYWcuRG93bnRvfSBbRG93bnRvXX0gKilcbiAgfCBQZXhwX2NvbnN0cmFpbnQgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSAgKCoqIFsoRSA6IFQpXSAqKVxuICB8IFBleHBfY29lcmNlIG9mIGV4cHJlc3Npb24gKiBjb3JlX3R5cGUgb3B0aW9uICogY29yZV90eXBlXG4gICAgICAoKiogW1BleHBfY29lcmNlKEUsIGZyb20sIFQpXSByZXByZXNlbnRzXG5cbiAgICAgICAgICAtIFsoRSA6PiBUKV0gd2hlbiBbZnJvbV0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gWyhFIDogVDAgOj4gVCldIHdoZW4gW2Zyb21dIGlzIFtTb21lIFQwXS4gKilcbiAgfCBQZXhwX3NlbmQgb2YgZXhwcmVzc2lvbiAqIGxhYmVsIGxvYyAgKCoqIFtFICMgbV0gKilcbiAgfCBQZXhwX25ldyBvZiBsb25naWRlbnRfbG9jICAoKiogW25ldyBNLmNdICopXG4gIHwgUGV4cF9zZXRpbnN0dmFyIG9mIGxhYmVsIGxvYyAqIGV4cHJlc3Npb24gICgqKiBbeCA8LSAyXSAqKVxuICB8IFBleHBfb3ZlcnJpZGUgb2YgKGxhYmVsIGxvYyAqIGV4cHJlc3Npb24pIGxpc3RcbiAgICAgICgqKiBbezwgeDEgPSBFMTsgLi4uOyB4biA9IEVuID59XSAqKVxuICB8IFBleHBfbGV0bW9kdWxlIG9mIHN0cmluZyBvcHRpb24gbG9jICogbW9kdWxlX2V4cHIgKiBleHByZXNzaW9uXG4gICAgICAoKiogW2xldCBtb2R1bGUgTSA9IE1FIGluIEVdICopXG4gIHwgUGV4cF9sZXRleGNlcHRpb24gb2YgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yICogZXhwcmVzc2lvblxuICAgICAgKCoqIFtsZXQgZXhjZXB0aW9uIEMgaW4gRV0gKilcbiAgfCBQZXhwX2Fzc2VydCBvZiBleHByZXNzaW9uXG4gICAgICAoKiogW2Fzc2VydCBFXS5cblxuICAgICAgICAgIE5vdGU6IFthc3NlcnQgZmFsc2VdIGlzIHRyZWF0ZWQgaW4gYSBzcGVjaWFsIHdheSBieSB0aGUgdHlwZS1jaGVja2VyLiAqKVxuICB8IFBleHBfbGF6eSBvZiBleHByZXNzaW9uICAoKiogW2xhenkgRV0gKilcbiAgfCBQZXhwX3BvbHkgb2YgZXhwcmVzc2lvbiAqIGNvcmVfdHlwZSBvcHRpb25cbiAgICAgICgqKiBVc2VkIGZvciBtZXRob2QgYm9kaWVzLlxuXG4gICAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBhcyB0aGUgZXhwcmVzc2lvbiB1bmRlclxuICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfSBbQ2ZrX2NvbmNyZXRlXX0gZm9yIG1ldGhvZHMgKG5vdFxuICAgICAgICAgIHZhbHVlcykuICopXG4gIHwgUGV4cF9vYmplY3Qgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBleHBfbmV3dHlwZSBvZiBzdHJpbmcgbG9jICogZXhwcmVzc2lvbiAgKCoqIFtmdW4gKHR5cGUgdCkgLT4gRV0gKilcbiAgfCBQZXhwX3BhY2sgb2YgbW9kdWxlX2V4cHJcbiAgICAgICgqKiBbKG1vZHVsZSBNRSldLlxuXG4gICAgICAgICAgWyhtb2R1bGUgTUUgOiBTKV0gaXMgcmVwcmVzZW50ZWQgYXNcbiAgICAgICAgICBbUGV4cF9jb25zdHJhaW50KFBleHBfcGFjayBNRSwgUHR5cF9wYWNrYWdlIFMpXSAqKVxuICB8IFBleHBfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICogZXhwcmVzc2lvblxuICAgICAgKCoqIC0gW00uKEUpXVxuICAgICAgICAgIC0gW2xldCBvcGVuIE0gaW4gRV1cbiAgICAgICAgICAtIFtsZXQgb3BlbiEgTSBpbiBFXSAqKVxuICB8IFBleHBfbGV0b3Agb2YgbGV0b3BcbiAgICAgICgqKiAtIFtsZXQqIFAgPSBFMCBpbiBFMV1cbiAgICAgICAgICAtIFtsZXQqIFAwID0gRTAwIGFuZCogUDEgPSBFMDEgaW4gRTFdICopXG4gIHwgUGV4cF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBleHBfdW5yZWFjaGFibGUgICgqKiBbLl0gKilcblxuYW5kIGNhc2UgPSBQYXJzZXRyZWUuY2FzZSA9IHtcbiAgcGNfbGhzIDogcGF0dGVybjtcbiAgcGNfZ3VhcmQgOiBleHByZXNzaW9uIG9wdGlvbjtcbiAgcGNfcmhzIDogZXhwcmVzc2lvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSB7IWNhc2V9IHJlcHJlc2VudHMgWyhQIC0+IEUpXSBvciBbKFAgd2hlbiBFMCAtPiBFKV0gKilcblxuYW5kIGxldG9wID0gUGFyc2V0cmVlLmxldG9wID0ge1xuICBsZXRfIDogYmluZGluZ19vcDtcbiAgYW5kcyA6IGJpbmRpbmdfb3AgbGlzdDtcbiAgYm9keSA6IGV4cHJlc3Npb247XG59XG5cbmFuZCBiaW5kaW5nX29wID0gUGFyc2V0cmVlLmJpbmRpbmdfb3AgPSB7XG4gIHBib3Bfb3AgOiBzdHJpbmcgbG9jO1xuICBwYm9wX3BhdCA6IHBhdHRlcm47XG4gIHBib3BfZXhwIDogZXhwcmVzc2lvbjtcbiAgcGJvcF9sb2MgOiBsb2NhdGlvbjtcbn1cblxuKCoqIHsyIFZhbHVlIGRlc2NyaXB0aW9uc30gKilcblxuYW5kIHZhbHVlX2Rlc2NyaXB0aW9uID0gUGFyc2V0cmVlLnZhbHVlX2Rlc2NyaXB0aW9uID0ge1xuICBwdmFsX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwdmFsX3R5cGUgOiBjb3JlX3R5cGU7XG4gIHB2YWxfcHJpbSA6IHN0cmluZyBsaXN0O1xuICBwdmFsX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdmFsX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshdmFsdWVfZGVzY3JpcHRpb259IHJlcHJlc2VudHM6XG5cbiAgICAtIFt2YWwgeDogVF0sIHdoZW4ge3shdmFsdWVfZGVzY3JpcHRpb24ucHZhbF9wcmltfSBbcHZhbF9wcmltXX0gaXMgW1tdXVxuICAgIC0gW2V4dGVybmFsIHg6IFQgPSBcInMxXCIgLi4uIFwic25cIl0gd2hlbiB7eyF2YWx1ZV9kZXNjcmlwdGlvbi5wdmFsX3ByaW19XG4gICAgICBbcHZhbF9wcmltXX0gaXMgW1tcInMxXCI7Li4uXCJzblwiXV0gKilcblxuKCoqIHsyIFR5cGUgZGVjbGFyYXRpb25zfSAqKVxuXG5hbmQgdHlwZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS50eXBlX2RlY2xhcmF0aW9uID0ge1xuICBwdHlwZV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcHR5cGVfcGFyYW1zIDogKGNvcmVfdHlwZSAqICh2YXJpYW5jZSAqIGluamVjdGl2aXR5KSkgbGlzdDtcbiAgICAgICgqKiBbKCdhMSwuLi4nYW4pIHRdICopXG4gIHB0eXBlX2NzdHJzIDogKGNvcmVfdHlwZSAqIGNvcmVfdHlwZSAqIGxvY2F0aW9uKSBsaXN0O1xuICAgICAgKCoqIFsuLi4gY29uc3RyYWludCBUMT1UMScgIC4uLiBjb25zdHJhaW50IFRuPVRuJ10gKilcbiAgcHR5cGVfa2luZCA6IHR5cGVfa2luZDtcbiAgcHR5cGVfcHJpdmF0ZSA6IHByaXZhdGVfZmxhZzsgICgqKiBmb3IgWz0gcHJpdmF0ZSAuLi5dICopXG4gIHB0eXBlX21hbmlmZXN0IDogY29yZV90eXBlIG9wdGlvbjsgICgqKiByZXByZXNlbnRzIFs9IFRdICopXG4gIHB0eXBlX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxuICBwdHlwZV9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBIZXJlIGFyZSB0eXBlIGRlY2xhcmF0aW9ucyBhbmQgdGhlaXIgcmVwcmVzZW50YXRpb24sIGZvciB2YXJpb3VzXG4gICAge3shdHlwZV9kZWNsYXJhdGlvbi5wdHlwZV9raW5kfSBbcHR5cGVfa2luZF19IGFuZFxuICAgIHt7IXR5cGVfZGVjbGFyYXRpb24ucHR5cGVfbWFuaWZlc3R9IFtwdHlwZV9tYW5pZmVzdF19IHZhbHVlczpcblxuICAgIC0gW3R5cGUgdF0gd2hlbiBbdHlwZV9raW5kXSBpcyB7eyF0eXBlX2tpbmQuUHR5cGVfYWJzdHJhY3R9XG4gICAgICBbUHR5cGVfYWJzdHJhY3RdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9hYnN0cmFjdH1cbiAgICAgIFtQdHlwZV9hYnN0cmFjdF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV92YXJpYW50fVxuICAgICAgW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW05vbmVdLFxuICAgIC0gW3R5cGUgdCA9IFQwID0gQyBvZiBUIHwgLi4uXSB3aGVuIFt0eXBlX2tpbmRdIGlzXG4gICAgICB7eyF0eXBlX2tpbmQuUHR5cGVfdmFyaWFudH0gW1B0eXBlX3ZhcmlhbnRdfSwgYW5kIFttYW5pZmVzdF0gaXMgW1NvbWUgVDBdLFxuICAgIC0gW3R5cGUgdCA9IHtsOiBUOyAuLi59XSB3aGVuIFt0eXBlX2tpbmRdIGlzIHt7IXR5cGVfa2luZC5QdHlwZV9yZWNvcmR9XG4gICAgICBbUHR5cGVfcmVjb3JkXX0sIGFuZCBbbWFuaWZlc3RdIGlzIFtOb25lXSxcbiAgICAtIFt0eXBlIHQgPSBUMCA9IHtsIDogVDsgLi4ufV0gd2hlbiBbdHlwZV9raW5kXSBpc1xuICAgICAge3shdHlwZV9raW5kLlB0eXBlX3JlY29yZH0gW1B0eXBlX3JlY29yZF19LCBhbmQgW21hbmlmZXN0XSBpcyBbU29tZSBUMF0sXG4gICAgLSBbdHlwZSB0ID0gLi5dIHdoZW4gW3R5cGVfa2luZF0gaXMge3shdHlwZV9raW5kLlB0eXBlX29wZW59IFtQdHlwZV9vcGVuXX0sXG4gICAgICBhbmQgW21hbmlmZXN0XSBpcyBbTm9uZV0uICopXG5cbmFuZCB0eXBlX2tpbmQgPSBQYXJzZXRyZWUudHlwZV9raW5kID1cbiAgfCBQdHlwZV9hYnN0cmFjdFxuICB8IFB0eXBlX3ZhcmlhbnQgb2YgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gbGlzdFxuICB8IFB0eXBlX3JlY29yZCBvZiBsYWJlbF9kZWNsYXJhdGlvbiBsaXN0ICAoKiogSW52YXJpYW50OiBub24tZW1wdHkgbGlzdCAqKVxuICB8IFB0eXBlX29wZW5cblxuYW5kIGxhYmVsX2RlY2xhcmF0aW9uID0gUGFyc2V0cmVlLmxhYmVsX2RlY2xhcmF0aW9uID0ge1xuICBwbGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBsZF9tdXRhYmxlIDogbXV0YWJsZV9mbGFnO1xuICBwbGRfdHlwZSA6IGNvcmVfdHlwZTtcbiAgcGxkX2xvYyA6IGxvY2F0aW9uO1xuICBwbGRfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogW2wgOiBUIFtAaWQxXSBbQGlkMl1dICopXG59XG4oKiogLSBbeyAuLi47IGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfSBbcGxkX211dGFibGVdfVxuICAgICAgaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19LFxuICAgIC0gW3sgLi4uOyBtdXRhYmxlIGw6IFQ7IC4uLiB9XSB3aGVuIHt7IWxhYmVsX2RlY2xhcmF0aW9uLnBsZF9tdXRhYmxlfVxuICAgICAgW3BsZF9tdXRhYmxlXX0gaXMge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLk11dGFibGV9IFtNdXRhYmxlXX0uXG5cbiAgICBOb3RlOiBbVF0gY2FuIGJlIGEge3shY29yZV90eXBlX2Rlc2MuUHR5cF9wb2x5fSBbUHR5cF9wb2x5XX0uICopXG5cbmFuZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA9IHtcbiAgcGNkX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwY2RfdmFycyA6IHN0cmluZyBsb2MgbGlzdDtcbiAgcGNkX2FyZ3MgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHM7XG4gIHBjZF9yZXMgOiBjb3JlX3R5cGUgb3B0aW9uO1xuICBwY2RfbG9jIDogbG9jYXRpb247XG4gIHBjZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA9IFBhcnNldHJlZS5jb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICB8IFBjc3RyX3R1cGxlIG9mIGNvcmVfdHlwZSBsaXN0XG4gIHwgUGNzdHJfcmVjb3JkIG9mIGxhYmVsX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBWYWx1ZXMgb2YgdHlwZSB7IWNvbnN0cnVjdG9yX2RlY2xhcmF0aW9ufSByZXByZXNlbnRzIHRoZSBjb25zdHJ1Y3RvclxuICAgICAgICAgIGFyZ3VtZW50cyBvZjpcblxuICAgICAgICAgIC0gW0Mgb2YgVDEgKiAuLi4gKiBUbl0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQzogVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmQgW2FyZ3MgPSBQY3N0cl90dXBsZSBbXV0sXG4gICAgICAgICAgLSBbQzogVDEgKiAuLi4gKiBUbiAtPiBUMF0gd2hlbiBbcmVzID0gU29tZSBUMF0sIGFuZFxuICAgICAgICAgICAgW2FyZ3MgPSBQY3N0cl90dXBsZSBbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgLSBbQyBvZiB7Li4ufV0gd2hlbiBbcmVzID0gTm9uZV0sIGFuZCBbYXJncyA9IFBjc3RyX3JlY29yZCBbLi4uXV0sXG4gICAgICAgICAgLSBbQzogey4uLn0gLT4gVDBdIHdoZW4gW3JlcyA9IFNvbWUgVDBdLCBhbmRcbiAgICAgICAgICAgIFthcmdzID0gUGNzdHJfcmVjb3JkIFsuLi5dXS4gKilcblxuYW5kIHR5cGVfZXh0ZW5zaW9uID0gUGFyc2V0cmVlLnR5cGVfZXh0ZW5zaW9uID0ge1xuICBwdHlleHRfcGF0aCA6IGxvbmdpZGVudF9sb2M7XG4gIHB0eWV4dF9wYXJhbXMgOiAoY29yZV90eXBlICogKHZhcmlhbmNlICogaW5qZWN0aXZpdHkpKSBsaXN0O1xuICBwdHlleHRfY29uc3RydWN0b3JzIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGxpc3Q7XG4gIHB0eWV4dF9wcml2YXRlIDogcHJpdmF0ZV9mbGFnO1xuICBwdHlleHRfbG9jIDogbG9jYXRpb247XG4gIHB0eWV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiAuLi4gW0BAaWQxXSBbQEBpZDJdICopXG59XG4oKiogRGVmaW5pdGlvbiBvZiBuZXcgZXh0ZW5zaW9ucyBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBleHRlbnNpdmUgc3VtIHR5cGUgW3RdXG4gICAgKFt0eXBlIHQgKz0gLi4uXSkuICopXG5cbmFuZCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBQYXJzZXRyZWUuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0ge1xuICBwZXh0X25hbWUgOiBzdHJpbmcgbG9jO1xuICBwZXh0X2tpbmQgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZDtcbiAgcGV4dF9sb2MgOiBsb2NhdGlvbjtcbiAgcGV4dF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbQyBvZiAuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIHR5cGVfZXhjZXB0aW9uID0gUGFyc2V0cmVlLnR5cGVfZXhjZXB0aW9uID0ge1xuICBwdHlleG5fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3I7XG4gIHB0eWV4bl9sb2MgOiBsb2NhdGlvbjtcbiAgcHR5ZXhuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuKCoqIERlZmluaXRpb24gb2YgYSBuZXcgZXhjZXB0aW9uIChbZXhjZXB0aW9uIEVdKS4gKilcblxuYW5kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID0gUGFyc2V0cmVlLmV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kID1cbiAgfCBQZXh0X2RlY2wgb2Ygc3RyaW5nIGxvYyBsaXN0ICogY29uc3RydWN0b3JfYXJndW1lbnRzICogY29yZV90eXBlIG9wdGlvblxuICAgICAgKCoqIFtQZXh0X2RlY2woZXhpc3RlbnRpYWxzLCBjX2FyZ3MsIHRfb3B0KV0gZGVzY3JpYmVzIGEgbmV3IGV4dGVuc2lvblxuICAgICAgICAgIGNvbnN0cnVjdG9yLiBJdCBjYW4gYmU6XG5cbiAgICAgICAgICB7dWxcbiAgICAgICAgICAgey0gW0Mgb2YgVDEgKiAuLi4gKiBUbl1cbiAgICAgICAgICAgICAgd2hlbjpcblxuICAgICAgICAgICAgICAtIFtleGlzdGVudGlhbHNdIGlzIFtbXV0sXG4gICAgICAgICAgICAgIC0gW2NfYXJnc10gaXMgW1tUMTsgLi4uOyBUbl1dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW05vbmVdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMF1cbiAgICAgICAgICAgICAgd2hlblxuXG4gICAgICAgICAgICAgIC0gW2V4aXN0ZW50aWFsc10gaXMgW1tdXSxcbiAgICAgICAgICAgICAgLSBbY19hcmdzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFt0X29wdF0gaXMgW1NvbWUgVDBdLlxuICAgICAgICAgICB9XG4gICAgICAgICAgIHstIFtDOiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbW11dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLjsgVG5dXSxcbiAgICAgICAgICAgICAgLSBbdF9vcHRdIGlzIFtTb21lIFQwXS5cbiAgICAgICAgICAgfVxuICAgICAgICAgICB7LSBbQzogJ2EuLi4gLiBUMSAqIC4uLiAqIFRuIC0+IFQwXVxuICAgICAgICAgICAgICB3aGVuXG5cbiAgICAgICAgICAgICAgLSBbZXhpc3RlbnRpYWxzXSBpcyBbWydhOy4uLl1dLFxuICAgICAgICAgICAgICAtIFtjX2FyZ3NdIGlzIFtbVDE7IC4uLiA7IFRuXV0sXG4gICAgICAgICAgICAgIC0gW3Rfb3B0XSBpcyBbU29tZSBUMF0uXG4gICAgICAgICAgIH1cbiAgICAgICAgICB9ICopXG4gIHwgUGV4dF9yZWJpbmQgb2YgbG9uZ2lkZW50X2xvY1xuICAgICAgKCoqIFtQZXh0X3JlYmluZChEKV0gcmUtZXhwb3J0IHRoZSBjb25zdHJ1Y3RvciBbRF0gd2l0aCB0aGUgbmV3IG5hbWUgW0NdICopXG5cbigqKiB7MSBDbGFzcyBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc190eXBlID0gUGFyc2V0cmVlLmNsYXNzX3R5cGUgPSB7XG4gIHBjdHlfZGVzYyA6IGNsYXNzX3R5cGVfZGVzYztcbiAgcGN0eV9sb2MgOiBsb2NhdGlvbjtcbiAgcGN0eV9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9kZXNjID1cbiAgfCBQY3R5X2NvbnN0ciBvZiBsb25naWRlbnRfbG9jICogY29yZV90eXBlIGxpc3RcbiAgICAgICgqKiAtIFtjXVxuICAgICAgICAgIC0gW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjdHlfc2lnbmF0dXJlIG9mIGNsYXNzX3NpZ25hdHVyZSAgKCoqIFtvYmplY3QgLi4uIGVuZF0gKilcbiAgfCBQY3R5X2Fycm93IG9mIGFyZ19sYWJlbCAqIGNvcmVfdHlwZSAqIGNsYXNzX3R5cGVcbiAgICAgICgqKiBbUGN0eV9hcnJvdyhsYmwsIFQsIENUKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW1QgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9IFtOb2xhYmVsXX0sXG4gICAgICAgICAgLSBbfmw6VCAtPiBDVF0gd2hlbiBbbGJsXSBpcyB7eyFBc3R0eXBlcy5hcmdfbGFiZWwuTGFiZWxsZWR9XG4gICAgICAgICAgICBbTGFiZWxsZWQgbF19LFxuICAgICAgICAgIC0gWz9sOlQgLT4gQ1RdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfS4gKilcbiAgfCBQY3R5X2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbJWlkXSAqKVxuICB8IFBjdHlfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICogY2xhc3NfdHlwZSAgKCoqIFtsZXQgb3BlbiBNIGluIENUXSAqKVxuXG5hbmQgY2xhc3Nfc2lnbmF0dXJlID0gUGFyc2V0cmVlLmNsYXNzX3NpZ25hdHVyZSA9IHtcbiAgcGNzaWdfc2VsZiA6IGNvcmVfdHlwZTtcbiAgcGNzaWdfZmllbGRzIDogY2xhc3NfdHlwZV9maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFtjbGFzc19zaWduYXR1cmVdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtvYmplY3QoJ3NlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc2lnbmF0dXJlLnBjc2lnX3NlbGZ9IFtwY3NpZ19zZWxmXX0gaXNcbiAgICAgIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfYW55fSBbUHR5cF9hbnldfSAqKVxuXG5hbmQgY2xhc3NfdHlwZV9maWVsZCA9IFBhcnNldHJlZS5jbGFzc190eXBlX2ZpZWxkID0ge1xuICBwY3RmX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2M7XG4gIHBjdGZfbG9jIDogbG9jYXRpb247XG4gIHBjdGZfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfdHlwZV9maWVsZF9kZXNjID1cbiAgfCBQY3RmX2luaGVyaXQgb2YgY2xhc3NfdHlwZSAgKCoqIFtpbmhlcml0IENUXSAqKVxuICB8IFBjdGZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW3ZhbCB4OiBUXSAqKVxuICB8IFBjdGZfbWV0aG9kIG9mIChsYWJlbCBsb2MgKiBwcml2YXRlX2ZsYWcgKiB2aXJ0dWFsX2ZsYWcgKiBjb3JlX3R5cGUpXG4gICAgICAoKiogW21ldGhvZCB4OiBUXVxuXG4gICAgICAgICAgTm90ZTogW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX0gW1B0eXBfcG9seV19LiAqKVxuICB8IFBjdGZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGN0Zl9hdHRyaWJ1dGUgb2YgYXR0cmlidXRlICAoKiogW1tAQEBpZF1dICopXG4gIHwgUGN0Zl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kICdhIGNsYXNzX2luZm9zID0gJ2EgUGFyc2V0cmVlLmNsYXNzX2luZm9zID0ge1xuICBwY2lfdmlydCA6IHZpcnR1YWxfZmxhZztcbiAgcGNpX3BhcmFtcyA6IChjb3JlX3R5cGUgKiAodmFyaWFuY2UgKiBpbmplY3Rpdml0eSkpIGxpc3Q7XG4gIHBjaV9uYW1lIDogc3RyaW5nIGxvYztcbiAgcGNpX2V4cHIgOiAnYTtcbiAgcGNpX2xvYyA6IGxvY2F0aW9uO1xuICBwY2lfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW2NsYXNzX2V4cHIgY2xhc3NfaW5mb3NdIHJlcHJlc2VudHM6XG5cbiAgICAtIFtjbGFzcyBjID0gLi4uXVxuICAgIC0gW2NsYXNzIFsnYTEsLi4uLCdhbl0gYyA9IC4uLl1cbiAgICAtIFtjbGFzcyB2aXJ0dWFsIGMgPSAuLi5dXG5cbiAgICBUaGV5IGFyZSBhbHNvIHVzZWQgZm9yIFwiY2xhc3MgdHlwZVwiIGRlY2xhcmF0aW9uLiAqKVxuXG5hbmQgY2xhc3NfZGVzY3JpcHRpb24gPSBjbGFzc190eXBlIGNsYXNzX2luZm9zXG5hbmQgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9IGNsYXNzX3R5cGUgY2xhc3NfaW5mb3NcblxuKCoqIHsyIFZhbHVlIGV4cHJlc3Npb25zIGZvciB0aGUgY2xhc3MgbGFuZ3VhZ2V9ICopXG5cbmFuZCBjbGFzc19leHByID0gUGFyc2V0cmVlLmNsYXNzX2V4cHIgPSB7XG4gIHBjbF9kZXNjIDogY2xhc3NfZXhwcl9kZXNjO1xuICBwY2xfbG9jIDogbG9jYXRpb247XG4gIHBjbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAaWQxXSBbQGlkMl1dICopXG59XG5cbmFuZCBjbGFzc19leHByX2Rlc2MgPSBQYXJzZXRyZWUuY2xhc3NfZXhwcl9kZXNjID1cbiAgfCBQY2xfY29uc3RyIG9mIGxvbmdpZGVudF9sb2MgKiBjb3JlX3R5cGUgbGlzdFxuICAgICAgKCoqIFtjXSBhbmQgW1snYTEsIC4uLiwgJ2FuXSBjXSAqKVxuICB8IFBjbF9zdHJ1Y3R1cmUgb2YgY2xhc3Nfc3RydWN0dXJlICAoKiogW29iamVjdCAuLi4gZW5kXSAqKVxuICB8IFBjbF9mdW4gb2YgYXJnX2xhYmVsICogZXhwcmVzc2lvbiBvcHRpb24gKiBwYXR0ZXJuICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfZnVuKGxibCwgZXhwMCwgUCwgQ0UpXSByZXByZXNlbnRzOlxuXG4gICAgICAgICAgLSBbZnVuIFAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk5vbGFiZWx9XG4gICAgICAgICAgICBbTm9sYWJlbF19IGFuZCBbZXhwMF0gaXMgW05vbmVdLFxuICAgICAgICAgIC0gW2Z1biB+bDpQIC0+IENFXSB3aGVuIFtsYmxdIGlzIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5MYWJlbGxlZH1cbiAgICAgICAgICAgIFtMYWJlbGxlZCBsXX0gYW5kIFtleHAwXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbZnVuID9sOlAgLT4gQ0VdIHdoZW4gW2xibF0gaXMge3shQXN0dHlwZXMuYXJnX2xhYmVsLk9wdGlvbmFsfVxuICAgICAgICAgICAgW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtmdW4gP2w6KFAgPSBFMCkgLT4gQ0VdIHdoZW4gW2xibF0gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLmFyZ19sYWJlbC5PcHRpb25hbH0gW09wdGlvbmFsIGxdfSBhbmQgW2V4cDBdIGlzXG4gICAgICAgICAgICBbU29tZSBFMF0uICopXG4gIHwgUGNsX2FwcGx5IG9mIGNsYXNzX2V4cHIgKiAoYXJnX2xhYmVsICogZXhwcmVzc2lvbikgbGlzdFxuICAgICAgKCoqIFtQY2xfYXBwbHkoQ0UsIFsobDEsRTEpIDsgLi4uIDsgKGxuLEVuKV0pXSByZXByZXNlbnRzXG4gICAgICAgICAgW0NFIH5sMTpFMSAuLi4gfmxuOkVuXS4gW2xpXSBjYW4gYmUgZW1wdHkgKG5vbiBsYWJlbGVkIGFyZ3VtZW50KSBvclxuICAgICAgICAgIHN0YXJ0IHdpdGggWz9dIChvcHRpb25hbCBhcmd1bWVudCkuXG5cbiAgICAgICAgICBJbnZhcmlhbnQ6IFtuID4gMF0gKilcbiAgfCBQY2xfbGV0IG9mIHJlY19mbGFnICogdmFsdWVfYmluZGluZyBsaXN0ICogY2xhc3NfZXhwclxuICAgICAgKCoqIFtQY2xfbGV0KHJlYywgWyhQMSwgRTEpOyAuLi4gOyAoUG4sIEVuKV0sIENFKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2xldCBQMSA9IEUxIGFuZCAuLi4gYW5kIFBuID0gRU4gaW4gQ0VdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLk5vbnJlY3Vyc2l2ZX0gW05vbnJlY3Vyc2l2ZV19LFxuICAgICAgICAgIC0gW2xldCByZWMgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOIGluIENFXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5SZWN1cnNpdmV9IFtSZWN1cnNpdmVdfS4gKilcbiAgfCBQY2xfY29uc3RyYWludCBvZiBjbGFzc19leHByICogY2xhc3NfdHlwZSAgKCoqIFsoQ0UgOiBDVCldICopXG4gIHwgUGNsX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gICgqKiBbWyVpZF1dICopXG4gIHwgUGNsX29wZW4gb2Ygb3Blbl9kZXNjcmlwdGlvbiAqIGNsYXNzX2V4cHIgICgqKiBbbGV0IG9wZW4gTSBpbiBDRV0gKilcblxuYW5kIGNsYXNzX3N0cnVjdHVyZSA9IFBhcnNldHJlZS5jbGFzc19zdHJ1Y3R1cmUgPSB7XG4gIHBjc3RyX3NlbGYgOiBwYXR0ZXJuO1xuICBwY3N0cl9maWVsZHMgOiBjbGFzc19maWVsZCBsaXN0O1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIHshY2xhc3Nfc3RydWN0dXJlfSByZXByZXNlbnRzOlxuXG4gICAgLSBbb2JqZWN0KHNlbGZwYXQpIC4uLiBlbmRdXG4gICAgLSBbb2JqZWN0IC4uLiBlbmRdIHdoZW4ge3shY2xhc3Nfc3RydWN0dXJlLnBjc3RyX3NlbGZ9IFtwY3N0cl9zZWxmXX0gaXNcbiAgICAgIHt7IXBhdHRlcm5fZGVzYy5QcGF0X2FueX0gW1BwYXRfYW55XX0gKilcblxuYW5kIGNsYXNzX2ZpZWxkID0gUGFyc2V0cmVlLmNsYXNzX2ZpZWxkID0ge1xuICBwY2ZfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2M7XG4gIHBjZl9sb2MgOiBsb2NhdGlvbjtcbiAgcGNmX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BAaWQxXSBbQEBpZDJdXSAqKVxufVxuXG5hbmQgY2xhc3NfZmllbGRfZGVzYyA9IFBhcnNldHJlZS5jbGFzc19maWVsZF9kZXNjID1cbiAgfCBQY2ZfaW5oZXJpdCBvZiBvdmVycmlkZV9mbGFnICogY2xhc3NfZXhwciAqIHN0cmluZyBsb2Mgb3B0aW9uXG4gICAgICAoKiogW1BjZl9pbmhlcml0KGZsYWcsIENFLCBzKV0gcmVwcmVzZW50czpcblxuICAgICAgICAgIC0gW2luaGVyaXQgQ0VdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtOb25lXSxcbiAgICAgICAgICAtIFtpbmhlcml0IENFIGFzIHhdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuRnJlc2h9XG4gICAgICAgICAgICBbRnJlc2hdfSBhbmQgW3NdIGlzIFtTb21lIHhdLFxuICAgICAgICAgIC0gW2luaGVyaXQhIENFXSB3aGVuIFtmbGFnXSBpcyB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLk92ZXJyaWRlfVxuICAgICAgICAgICAgW092ZXJyaWRlXX0gYW5kIFtzXSBpcyBbTm9uZV0sXG4gICAgICAgICAgLSBbaW5oZXJpdCEgQ0UgYXMgeF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm92ZXJyaWRlX2ZsYWcuT3ZlcnJpZGV9IFtPdmVycmlkZV19IGFuZCBbc10gaXMgW1NvbWUgeF0gKilcbiAgfCBQY2ZfdmFsIG9mIChsYWJlbCBsb2MgKiBtdXRhYmxlX2ZsYWcgKiBjbGFzc19maWVsZF9raW5kKVxuICAgICAgKCoqIFtQY2ZfdmFsKHgsZmxhZywga2luZCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFt2YWwgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5JbW11dGFibGV9XG4gICAgICAgICAgICBbSW1tdXRhYmxlXX0gYW5kIFtraW5kXSBpcyB7eyFjbGFzc19maWVsZF9raW5kLkNma19jb25jcmV0ZX1cbiAgICAgICAgICAgIFtDZmtfY29uY3JldGUoRnJlc2gsIEUpXX1cbiAgICAgICAgICAtIFt2YWwgdmlydHVhbCB4OiBUXSB3aGVuIFtmbGFnXSBpc1xuICAgICAgICAgICAge3shQXN0dHlwZXMubXV0YWJsZV9mbGFnLkltbXV0YWJsZX0gW0ltbXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19XG4gICAgICAgICAgLSBbdmFsIG11dGFibGUgeCA9IEVdIHdoZW4gW2ZsYWddIGlzIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfVxuICAgICAgICAgICAgW011dGFibGVdfSBhbmQgW2tpbmRdIGlzIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX2NvbmNyZXRlfVxuICAgICAgICAgICAgW0Nma19jb25jcmV0ZShGcmVzaCwgRSldfVxuICAgICAgICAgIC0gW3ZhbCBtdXRhYmxlIHZpcnR1YWwgeDogVF0gd2hlbiBbZmxhZ10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLm11dGFibGVfZmxhZy5NdXRhYmxlfSBbTXV0YWJsZV19IGFuZCBba2luZF0gaXNcbiAgICAgICAgICAgIHt7IWNsYXNzX2ZpZWxkX2tpbmQuQ2ZrX3ZpcnR1YWx9IFtDZmtfdmlydHVhbChUKV19ICopXG4gIHwgUGNmX21ldGhvZCBvZiAobGFiZWwgbG9jICogcHJpdmF0ZV9mbGFnICogY2xhc3NfZmllbGRfa2luZClcbiAgICAgICgqKiAtIFttZXRob2QgeCA9IEVdIChbRV0gY2FuIGJlIGEge3shZXhwcmVzc2lvbl9kZXNjLlBleHBfcG9seX1cbiAgICAgICAgICAgIFtQZXhwX3BvbHldfSlcbiAgICAgICAgICAtIFttZXRob2QgdmlydHVhbCB4OiBUXSAoW1RdIGNhbiBiZSBhIHt7IWNvcmVfdHlwZV9kZXNjLlB0eXBfcG9seX1cbiAgICAgICAgICAgIFtQdHlwX3BvbHldfSkgKilcbiAgfCBQY2ZfY29uc3RyYWludCBvZiAoY29yZV90eXBlICogY29yZV90eXBlKSAgKCoqIFtjb25zdHJhaW50IFQxID0gVDJdICopXG4gIHwgUGNmX2luaXRpYWxpemVyIG9mIGV4cHJlc3Npb24gICgqKiBbaW5pdGlhbGl6ZXIgRV0gKilcbiAgfCBQY2ZfYXR0cmlidXRlIG9mIGF0dHJpYnV0ZSAgKCoqIFtbQEBAaWRdXSAqKVxuICB8IFBjZl9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slJWlkXV0gKilcblxuYW5kIGNsYXNzX2ZpZWxkX2tpbmQgPSBQYXJzZXRyZWUuY2xhc3NfZmllbGRfa2luZCA9XG4gIHwgQ2ZrX3ZpcnR1YWwgb2YgY29yZV90eXBlXG4gIHwgQ2ZrX2NvbmNyZXRlIG9mIG92ZXJyaWRlX2ZsYWcgKiBleHByZXNzaW9uXG5cbmFuZCBjbGFzc19kZWNsYXJhdGlvbiA9IGNsYXNzX2V4cHIgY2xhc3NfaW5mb3NcblxuKCoqIHsxIE1vZHVsZSBsYW5ndWFnZX0gKilcbigqKiB7MiBUeXBlIGV4cHJlc3Npb25zIGZvciB0aGUgbW9kdWxlIGxhbmd1YWdlfSAqKVxuXG5hbmQgbW9kdWxlX3R5cGUgPSBQYXJzZXRyZWUubW9kdWxlX3R5cGUgPSB7XG4gIHBtdHlfZGVzYyA6IG1vZHVsZV90eXBlX2Rlc2M7XG4gIHBtdHlfbG9jIDogbG9jYXRpb247XG4gIHBtdHlfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQGlkMV0gW0BpZDJdXSAqKVxufVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVzYyA9IFBhcnNldHJlZS5tb2R1bGVfdHlwZV9kZXNjID1cbiAgfCBQbXR5X2lkZW50IG9mIGxvbmdpZGVudF9sb2MgICgqKiBbUG10eV9pZGVudChTKV0gcmVwcmVzZW50cyBbU10gKilcbiAgfCBQbXR5X3NpZ25hdHVyZSBvZiBzaWduYXR1cmUgICgqKiBbc2lnIC4uLiBlbmRdICopXG4gIHwgUG10eV9mdW5jdG9yIG9mIGZ1bmN0b3JfcGFyYW1ldGVyICogbW9kdWxlX3R5cGVcbiAgICAgICgqKiBbZnVuY3RvcihYIDogTVQxKSAtPiBNVDJdICopXG4gIHwgUG10eV93aXRoIG9mIG1vZHVsZV90eXBlICogd2l0aF9jb25zdHJhaW50IGxpc3QgICgqKiBbTVQgd2l0aCAuLi5dICopXG4gIHwgUG10eV90eXBlb2Ygb2YgbW9kdWxlX2V4cHIgICgqKiBbbW9kdWxlIHR5cGUgb2YgTUVdICopXG4gIHwgUG10eV9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuICB8IFBtdHlfYWxpYXMgb2YgbG9uZ2lkZW50X2xvYyAgKCoqIFsobW9kdWxlIE0pXSAqKVxuXG5hbmQgZnVuY3Rvcl9wYXJhbWV0ZXIgPSBQYXJzZXRyZWUuZnVuY3Rvcl9wYXJhbWV0ZXIgPVxuICB8IFVuaXQgICgqKiBbKCldICopXG4gIHwgTmFtZWQgb2Ygc3RyaW5nIG9wdGlvbiBsb2MgKiBtb2R1bGVfdHlwZVxuICAgICAgKCoqIFtOYW1lZChuYW1lLCBNVCldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFsoWCA6IE1UKV0gd2hlbiBbbmFtZV0gaXMgW1NvbWUgWF0sXG4gICAgICAgICAgLSBbKF8gOiBNVCldIHdoZW4gW25hbWVdIGlzIFtOb25lXSAqKVxuXG5hbmQgc2lnbmF0dXJlID0gc2lnbmF0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc2lnbmF0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc2lnbmF0dXJlX2l0ZW0gPSB7XG4gIHBzaWdfZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2M7XG4gIHBzaWdfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzaWduYXR1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzaWdfdmFsdWUgb2YgdmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICgqKiAtIFt2YWwgeDogVF1cbiAgICAgICAgICAtIFtleHRlcm5hbCB4OiBUID0gXCJzMVwiIC4uLiBcInNuXCJdICopXG4gIHwgUHNpZ190eXBlIG9mIHJlY19mbGFnICogdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW3R5cGUgdDEgPSAuLi4gYW5kIC4uLiBhbmQgdG4gID0gLi4uXSAqKVxuICB8IFBzaWdfdHlwZXN1YnN0IG9mIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxIDo9IC4uLiBhbmQgLi4uIGFuZCB0biA6PSAuLi5dICopXG4gIHwgUHNpZ190eXBleHQgb2YgdHlwZV9leHRlbnNpb24gICgqKiBbdHlwZSB0MSArPSAuLi5dICopXG4gIHwgUHNpZ19leGNlcHRpb24gb2YgdHlwZV9leGNlcHRpb24gICgqKiBbZXhjZXB0aW9uIEMgb2YgVF0gKilcbiAgfCBQc2lnX21vZHVsZSBvZiBtb2R1bGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIFggPSBNXSBhbmQgW21vZHVsZSBYIDogTVRdICopXG4gIHwgUHNpZ19tb2RzdWJzdCBvZiBtb2R1bGVfc3Vic3RpdHV0aW9uICAoKiogW21vZHVsZSBYIDo9IE1dICopXG4gIHwgUHNpZ19yZWNtb2R1bGUgb2YgbW9kdWxlX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA6IE1UMSBhbmQgLi4uIGFuZCBYbiA6IE1Ubl0gKilcbiAgfCBQc2lnX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSBhbmQgW21vZHVsZSB0eXBlIFNdICopXG4gIHwgUHNpZ19tb2R0eXBlc3Vic3Qgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA6PSAgLi4uXSAqKVxuICB8IFBzaWdfb3BlbiBvZiBvcGVuX2Rlc2NyaXB0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc2lnX2luY2x1ZGUgb2YgaW5jbHVkZV9kZXNjcmlwdGlvbiAgKCoqIFtpbmNsdWRlIE1UXSAqKVxuICB8IFBzaWdfY2xhc3Mgb2YgY2xhc3NfZGVzY3JpcHRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyBjMSA6IC4uLiBhbmQgLi4uIGFuZCBjbiA6IC4uLl0gKilcbiAgfCBQc2lnX2NsYXNzX3R5cGUgb2YgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBsaXN0XG4gICAgICAoKiogW2NsYXNzIHR5cGUgY3QxID0gLi4uIGFuZCAuLi4gYW5kIGN0biA9IC4uLl0gKilcbiAgfCBQc2lnX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc2lnX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIG1vZHVsZV9kZWNsYXJhdGlvbiA9IFBhcnNldHJlZS5tb2R1bGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtZF9uYW1lIDogc3RyaW5nIG9wdGlvbiBsb2M7XG4gIHBtZF90eXBlIDogbW9kdWxlX3R5cGU7XG4gIHBtZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG1kX2xvYyA6IGxvY2F0aW9uO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFttb2R1bGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHMgW1MgOiBNVF0gKilcblxuYW5kIG1vZHVsZV9zdWJzdGl0dXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3N1YnN0aXR1dGlvbiA9IHtcbiAgcG1zX25hbWUgOiBzdHJpbmcgbG9jO1xuICBwbXNfbWFuaWZlc3QgOiBsb25naWRlbnRfbG9jO1xuICBwbXNfYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXM7ICAoKiogWy4uLiBbQEBpZDFdIFtAQGlkMl1dICopXG4gIHBtc19sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3N1YnN0aXR1dGlvbl0gcmVwcmVzZW50cyBbUyA6PSBNXSAqKVxuXG5hbmQgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSBQYXJzZXRyZWUubW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPSB7XG4gIHBtdGRfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBtdGRfdHlwZSA6IG1vZHVsZV90eXBlIG9wdGlvbjtcbiAgcG10ZF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlczsgICgqKiBbLi4uIFtAQGlkMV0gW0BAaWQyXV0gKilcbiAgcG10ZF9sb2MgOiBsb2NhdGlvbjtcbn1cbigqKiBWYWx1ZXMgb2YgdHlwZSBbbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25dIHJlcHJlc2VudHM6XG5cbiAgICAtIFtTID0gTVRdLFxuICAgIC0gW1NdIGZvciBhYnN0cmFjdCBtb2R1bGUgdHlwZSBkZWNsYXJhdGlvbiwgd2hlblxuICAgICAge3shbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24ucG10ZF90eXBlfSBbcG10ZF90eXBlXX0gaXMgW05vbmVdLiAqKVxuXG5hbmQgJ2Egb3Blbl9pbmZvcyA9ICdhIFBhcnNldHJlZS5vcGVuX2luZm9zID0ge1xuICBwb3Blbl9leHByIDogJ2E7XG4gIHBvcGVuX292ZXJyaWRlIDogb3ZlcnJpZGVfZmxhZztcbiAgcG9wZW5fbG9jIDogbG9jYXRpb247XG4gIHBvcGVuX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xufVxuKCoqIFZhbHVlcyBvZiB0eXBlIFsnYSBvcGVuX2luZm9zXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiEgWF0gd2hlbiB7eyFvcGVuX2luZm9zLnBvcGVuX292ZXJyaWRlfSBbcG9wZW5fb3ZlcnJpZGVdfSBpc1xuICAgICAge3shQXN0dHlwZXMub3ZlcnJpZGVfZmxhZy5PdmVycmlkZX0gW092ZXJyaWRlXX0gKHNpbGVuY2VzIHRoZSBcInVzZWRcbiAgICAgIGlkZW50aWZpZXIgc2hhZG93aW5nXCIgd2FybmluZylcbiAgICAtIFtvcGVuICBYXSB3aGVuIHt7IW9wZW5faW5mb3MucG9wZW5fb3ZlcnJpZGV9IFtwb3Blbl9vdmVycmlkZV19IGlzXG4gICAgICB7eyFBc3R0eXBlcy5vdmVycmlkZV9mbGFnLkZyZXNofSBbRnJlc2hdfSAqKVxuXG5hbmQgb3Blbl9kZXNjcmlwdGlvbiA9IGxvbmdpZGVudF9sb2Mgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2Rlc2NyaXB0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dICopXG5cbmFuZCBvcGVuX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgb3Blbl9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtvcGVuX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzOlxuXG4gICAgLSBbb3BlbiBNLk5dXG4gICAgLSBbb3BlbiBNKE4pLk9dXG4gICAgLSBbb3BlbiBzdHJ1Y3QgLi4uIGVuZF0gKilcblxuYW5kICdhIGluY2x1ZGVfaW5mb3MgPSAnYSBQYXJzZXRyZWUuaW5jbHVkZV9pbmZvcyA9IHtcbiAgcGluY2xfbW9kIDogJ2E7XG4gIHBpbmNsX2xvYyA6IGxvY2F0aW9uO1xuICBwaW5jbF9hdHRyaWJ1dGVzIDogYXR0cmlidXRlcztcbn1cblxuYW5kIGluY2x1ZGVfZGVzY3JpcHRpb24gPSBtb2R1bGVfdHlwZSBpbmNsdWRlX2luZm9zXG4oKiogVmFsdWVzIG9mIHR5cGUgW2luY2x1ZGVfZGVzY3JpcHRpb25dIHJlcHJlc2VudHMgW2luY2x1ZGUgTVRdICopXG5cbmFuZCBpbmNsdWRlX2RlY2xhcmF0aW9uID0gbW9kdWxlX2V4cHIgaW5jbHVkZV9pbmZvc1xuKCoqIFZhbHVlcyBvZiB0eXBlIFtpbmNsdWRlX2RlY2xhcmF0aW9uXSByZXByZXNlbnRzIFtpbmNsdWRlIE1FXSAqKVxuXG5hbmQgd2l0aF9jb25zdHJhaW50ID0gUGFyc2V0cmVlLndpdGhfY29uc3RyYWludCA9XG4gIHwgUHdpdGhfdHlwZSBvZiBsb25naWRlbnRfbG9jICogdHlwZV9kZWNsYXJhdGlvblxuICAgICAgKCoqIFt3aXRoIHR5cGUgWC50ID0gLi4uXVxuXG4gICAgICAgICAgTm90ZTogdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZSBsb25naWRlbnQgbXVzdCBtYXRjaCB0aGUgbmFtZSBvZiB0aGVcbiAgICAgICAgICB0eXBlX2RlY2xhcmF0aW9uLiAqKVxuICB8IFB3aXRoX21vZHVsZSBvZiBsb25naWRlbnRfbG9jICogbG9uZ2lkZW50X2xvYyAgKCoqIFt3aXRoIG1vZHVsZSBYLlkgPSBaXSAqKVxuICB8IFB3aXRoX21vZHR5cGUgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZID0gWl0gKilcbiAgfCBQd2l0aF9tb2R0eXBlc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIG1vZHVsZV90eXBlXG4gICAgICAoKiogW3dpdGggbW9kdWxlIHR5cGUgWC5ZIDo9IHNpZyBlbmRdICopXG4gIHwgUHdpdGhfdHlwZXN1YnN0IG9mIGxvbmdpZGVudF9sb2MgKiB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAoKiogW3dpdGggdHlwZSBYLnQgOj0gLi4uLCBzYW1lIGZvcm1hdCBhcyBbUHdpdGhfdHlwZV1dICopXG4gIHwgUHdpdGhfbW9kc3Vic3Qgb2YgbG9uZ2lkZW50X2xvYyAqIGxvbmdpZGVudF9sb2NcbiAgICAgICgqKiBbd2l0aCBtb2R1bGUgWC5ZIDo9IFpdICopXG5cbigqKiB7MiBWYWx1ZSBleHByZXNzaW9ucyBmb3IgdGhlIG1vZHVsZSBsYW5ndWFnZX0gKilcblxuYW5kIG1vZHVsZV9leHByID0gUGFyc2V0cmVlLm1vZHVsZV9leHByID0ge1xuICBwbW9kX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjO1xuICBwbW9kX2xvYyA6IGxvY2F0aW9uO1xuICBwbW9kX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzOyAgKCoqIFsuLi4gW0BpZDFdIFtAaWQyXV0gKilcbn1cblxuYW5kIG1vZHVsZV9leHByX2Rlc2MgPSBQYXJzZXRyZWUubW9kdWxlX2V4cHJfZGVzYyA9XG4gIHwgUG1vZF9pZGVudCBvZiBsb25naWRlbnRfbG9jICAoKiogW1hdICopXG4gIHwgUG1vZF9zdHJ1Y3R1cmUgb2Ygc3RydWN0dXJlICAoKiogW3N0cnVjdCAuLi4gZW5kXSAqKVxuICB8IFBtb2RfZnVuY3RvciBvZiBmdW5jdG9yX3BhcmFtZXRlciAqIG1vZHVsZV9leHByXG4gICAgICAoKiogW2Z1bmN0b3IoWCA6IE1UMSkgLT4gTUVdICopXG4gIHwgUG1vZF9hcHBseSBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV9leHByICAoKiogW01FMShNRTIpXSAqKVxuICB8IFBtb2RfY29uc3RyYWludCBvZiBtb2R1bGVfZXhwciAqIG1vZHVsZV90eXBlICAoKiogWyhNRSA6IE1UKV0gKilcbiAgfCBQbW9kX3VucGFjayBvZiBleHByZXNzaW9uICAoKiogWyh2YWwgRSldICopXG4gIHwgUG1vZF9leHRlbnNpb24gb2YgZXh0ZW5zaW9uICAoKiogW1slaWRdXSAqKVxuXG5hbmQgc3RydWN0dXJlID0gc3RydWN0dXJlX2l0ZW0gbGlzdFxuXG5hbmQgc3RydWN0dXJlX2l0ZW0gPSBQYXJzZXRyZWUuc3RydWN0dXJlX2l0ZW0gPSB7XG4gIHBzdHJfZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2M7XG4gIHBzdHJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjID0gUGFyc2V0cmVlLnN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICB8IFBzdHJfZXZhbCBvZiBleHByZXNzaW9uICogYXR0cmlidXRlcyAgKCoqIFtFXSAqKVxuICB8IFBzdHJfdmFsdWUgb2YgcmVjX2ZsYWcgKiB2YWx1ZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbUHN0cl92YWx1ZShyZWMsIFsoUDEsIEUxIDsgLi4uIDsgKFBuLCBFbikpXSldIHJlcHJlc2VudHM6XG5cbiAgICAgICAgICAtIFtsZXQgUDEgPSBFMSBhbmQgLi4uIGFuZCBQbiA9IEVOXSB3aGVuIFtyZWNdIGlzXG4gICAgICAgICAgICB7eyFBc3R0eXBlcy5yZWNfZmxhZy5Ob25yZWN1cnNpdmV9IFtOb25yZWN1cnNpdmVdfSxcbiAgICAgICAgICAtIFtsZXQgcmVjIFAxID0gRTEgYW5kIC4uLiBhbmQgUG4gPSBFTiBdIHdoZW4gW3JlY10gaXNcbiAgICAgICAgICAgIHt7IUFzdHR5cGVzLnJlY19mbGFnLlJlY3Vyc2l2ZX0gW1JlY3Vyc2l2ZV19LiAqKVxuICB8IFBzdHJfcHJpbWl0aXZlIG9mIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAoKiogLSBbdmFsIHg6IFRdXG4gICAgICAgICAgLSBbZXh0ZXJuYWwgeDogVCA9IFwiczFcIiAuLi4gXCJzblwiIF0qKVxuICB8IFBzdHJfdHlwZSBvZiByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFt0eXBlIHQxID0gLi4uIGFuZCAuLi4gYW5kIHRuID0gLi4uXSAqKVxuICB8IFBzdHJfdHlwZXh0IG9mIHR5cGVfZXh0ZW5zaW9uICAoKiogW3R5cGUgdDEgKz0gLi4uXSAqKVxuICB8IFBzdHJfZXhjZXB0aW9uIG9mIHR5cGVfZXhjZXB0aW9uXG4gICAgICAoKiogLSBbZXhjZXB0aW9uIEMgb2YgVF1cbiAgICAgICAgICAtIFtleGNlcHRpb24gQyA9IE0uWF0gKilcbiAgfCBQc3RyX21vZHVsZSBvZiBtb2R1bGVfYmluZGluZyAgKCoqIFttb2R1bGUgWCA9IE1FXSAqKVxuICB8IFBzdHJfcmVjbW9kdWxlIG9mIG1vZHVsZV9iaW5kaW5nIGxpc3RcbiAgICAgICgqKiBbbW9kdWxlIHJlYyBYMSA9IE1FMSBhbmQgLi4uIGFuZCBYbiA9IE1Fbl0gKilcbiAgfCBQc3RyX21vZHR5cGUgb2YgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gICgqKiBbbW9kdWxlIHR5cGUgUyA9IE1UXSAqKVxuICB8IFBzdHJfb3BlbiBvZiBvcGVuX2RlY2xhcmF0aW9uICAoKiogW29wZW4gWF0gKilcbiAgfCBQc3RyX2NsYXNzIG9mIGNsYXNzX2RlY2xhcmF0aW9uIGxpc3RcbiAgICAgICgqKiBbY2xhc3MgYzEgPSAuLi4gYW5kIC4uLiBhbmQgY24gPSAuLi5dICopXG4gIHwgUHN0cl9jbGFzc190eXBlIG9mIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gbGlzdFxuICAgICAgKCoqIFtjbGFzcyB0eXBlIGN0MSA9IC4uLiBhbmQgLi4uIGFuZCBjdG4gPSAuLi5dICopXG4gIHwgUHN0cl9pbmNsdWRlIG9mIGluY2x1ZGVfZGVjbGFyYXRpb24gICgqKiBbaW5jbHVkZSBNRV0gKilcbiAgfCBQc3RyX2F0dHJpYnV0ZSBvZiBhdHRyaWJ1dGUgICgqKiBbW0BAQGlkXV0gKilcbiAgfCBQc3RyX2V4dGVuc2lvbiBvZiBleHRlbnNpb24gKiBhdHRyaWJ1dGVzICAoKiogW1slJWlkXV0gKilcblxuYW5kIHZhbHVlX2JpbmRpbmcgPSBQYXJzZXRyZWUudmFsdWVfYmluZGluZyA9IHtcbiAgcHZiX3BhdCA6IHBhdHRlcm47XG4gIHB2Yl9leHByIDogZXhwcmVzc2lvbjtcbiAgcHZiX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwdmJfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBtb2R1bGVfYmluZGluZyA9IFBhcnNldHJlZS5tb2R1bGVfYmluZGluZyA9IHtcbiAgcG1iX25hbWUgOiBzdHJpbmcgb3B0aW9uIGxvYztcbiAgcG1iX2V4cHIgOiBtb2R1bGVfZXhwcjtcbiAgcG1iX2F0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzO1xuICBwbWJfbG9jIDogbG9jYXRpb247XG59XG4oKiogVmFsdWVzIG9mIHR5cGUgW21vZHVsZV9iaW5kaW5nXSByZXByZXNlbnRzIFttb2R1bGUgWCA9IE1FXSAqKVxuXG4oKiogezEgVG9wbGV2ZWx9ICopXG4oKiogezIgVG9wbGV2ZWwgcGhyYXNlc30gKilcblxuYW5kIHRvcGxldmVsX3BocmFzZSA9IFBhcnNldHJlZS50b3BsZXZlbF9waHJhc2UgPVxuICB8IFB0b3BfZGVmIG9mIHN0cnVjdHVyZVxuICB8IFB0b3BfZGlyIG9mIHRvcGxldmVsX2RpcmVjdGl2ZSAgKCoqIFsjdXNlXSwgWyNsb2FkXSAuLi4gKilcblxuYW5kIHRvcGxldmVsX2RpcmVjdGl2ZSA9IFBhcnNldHJlZS50b3BsZXZlbF9kaXJlY3RpdmUgPSB7XG4gIHBkaXJfbmFtZSA6IHN0cmluZyBsb2M7XG4gIHBkaXJfYXJnIDogZGlyZWN0aXZlX2FyZ3VtZW50IG9wdGlvbjtcbiAgcGRpcl9sb2MgOiBsb2NhdGlvbjtcbn1cblxuYW5kIGRpcmVjdGl2ZV9hcmd1bWVudCA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnQgPSB7XG4gIHBkaXJhX2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYztcbiAgcGRpcmFfbG9jIDogbG9jYXRpb247XG59XG5cbmFuZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9IFBhcnNldHJlZS5kaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA9XG4gIHwgUGRpcl9zdHJpbmcgb2Ygc3RyaW5nXG4gIHwgUGRpcl9pbnQgb2Ygc3RyaW5nICogY2hhciBvcHRpb25cbiAgfCBQZGlyX2lkZW50IG9mIGxvbmdpZGVudFxuICB8IFBkaXJfYm9vbCBvZiBib29sXG5cbmFuZCBjYXNlcyA9IGNhc2UgbGlzdCBbQEBkZXJpdmluZ19pbmxpbmUgdHJhdmVyc2VdXG5cbmNsYXNzIHZpcnR1YWwgbWFwID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+IGJvb2xcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+IGludFxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3QgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+IHN0cmluZ1xuXG4gICAgbWV0aG9kIHBvc2l0aW9uIDogcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IGxvY2F0aW9uID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gbG9jYXRpb25fc3RhY2sgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+ICdhKSAtPiAnYSBsb2MgLT4gJ2EgbG9jID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIHR4dCBpblxuICAgICAgICBsZXQgbG9jID0gc2VsZiNsb2NhdGlvbiBsb2MgaW5cbiAgICAgICAgeyB0eHQ7IGxvYyB9XG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogbG9uZ2lkZW50IC0+IGxvbmdpZGVudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgYiBpblxuICAgICAgICAgICAgTGRvdCAoYSwgYilcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgYiBpblxuICAgICAgICAgICAgTGFwcGx5IChhLCBiKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHJlY19mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IGRpcmVjdGlvbl9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiBtdXRhYmxlX2ZsYWcgLT4gbXV0YWJsZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gdmlydHVhbF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiBvdmVycmlkZV9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIHggLT4geFxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+IGxhYmVsID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gTm9sYWJlbFxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgTGFiZWxsZWQgYVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogdmFyaWFuY2UgLT4gdmFyaWFuY2UgPSBmdW4geCAtPiB4XG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4geCAtPiB4XG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiBjb25zdGFudCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgYiBpblxuICAgICAgICAgICAgUGNvbnN0X2ludGVnZXIgKGEsIGIpXG4gICAgICAgIHwgUGNvbnN0X2NoYXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NoYXIgYSBpblxuICAgICAgICAgICAgUGNvbnN0X2NoYXIgYVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQY29uc3RfZmxvYXQgKGEsIGIpXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lIGluXG4gICAgICAgIGxldCBhdHRyX3BheWxvYWQgPSBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gYXR0cl9sb2MgaW5cbiAgICAgICAgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogYXR0cmlidXRlcyAtPiBhdHRyaWJ1dGVzID0gc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gcGF5bG9hZCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUFN0ciBhXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIFBTaWcgYVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUFBhdCAoYSwgYilcblxuICAgIG1ldGhvZCBjb3JlX3R5cGUgOiBjb3JlX3R5cGUgLT4gY29yZV90eXBlID1cbiAgICAgIGZ1biB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwX2xvYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiBjb3JlX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUHR5cF92YXIgYVxuICAgICAgICB8IFB0eXBfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQdHlwX2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUHR5cF90dXBsZSBhXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQdHlwX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHR5cF9jbGFzcyAoYSwgYilcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIFB0eXBfYWxpYXMgKGEsIGIpXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBQdHlwX3BhY2thZ2UgYVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHR5cF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiBwYWNrYWdlX3R5cGUgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgKGEsIGIpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGluXG4gICAgICAgIGxldCBwcmZfbG9jID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNib29sIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGMgaW5cbiAgICAgICAgICAgIFJ0YWcgKGEsIGIsIGMpXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBSaW5oZXJpdCBhXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkIDogb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgT3RhZyAoYSwgYilcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIE9pbmhlcml0IGFcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiBwYXR0ZXJuID1cbiAgICAgIGZ1biB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHBhdF9sb2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiBwYXR0ZXJuX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdmFyIGFcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBwYXRfY29uc3RhbnQgYVxuICAgICAgICB8IFBwYXRfaW50ZXJ2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvbnN0YW50IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF90dXBsZSBhXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF92YXJpYW50IChhLCBiKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBpblxuICAgICAgICAgICAgUHBhdF9yZWNvcmQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgUHBhdF9hcnJheSBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3IgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHlwZSBhXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIFBwYXRfbGF6eSBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQcGF0X2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgUHBhdF9vcGVuIChhLCBiKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIHBleHBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbl9kZXNjIDogZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RhbnQgYVxuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjYXNlcyBhIGluXG4gICAgICAgICAgICBQZXhwX2Z1bmN0aW9uIGFcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQZXhwX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgUGV4cF9tYXRjaCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjYXNlcyBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX3R1cGxlIGFcbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfYXJyYXkgYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF93aGlsZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSlcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgUGV4cF9zZW5kIChhLCBiKVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgUGV4cF9zZXRpbnN0dmFyIChhLCBiKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfbGF6eSBhXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBQZXhwX29iamVjdCBhXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBQZXhwX3BhY2sgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBhIGluXG4gICAgICAgICAgICBQZXhwX2xldG9wIGFcbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBleHBfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQZXhwX3VucmVhY2hhYmxlIC0+IFBleHBfdW5yZWFjaGFibGVcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiBjYXNlID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9XG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiBsZXRvcCA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHsgbGV0XzsgYW5kczsgYm9keSB9XG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gYmluZGluZ19vcCA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBpblxuICAgICAgICBsZXQgcHZhbF9wcmltID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGluXG4gICAgICAgIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9XG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjIGluXG4gICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgfVxuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gUHR5cGVfYWJzdHJhY3RcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfdmFyaWFudCBhXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgaW5cbiAgICAgICAgbGV0IHBsZF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogY29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4gY29uc3RydWN0b3JfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNzdHJfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBjc3RyX3JlY29yZCBhXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoIGluXG4gICAgICAgIGxldCBwdHlleHRfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZXh0X25hbWUgaW5cbiAgICAgICAgbGV0IHBleHRfa2luZCA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgcGV4dF9raW5kIGluXG4gICAgICAgIGxldCBwZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4bl9jb25zdHJ1Y3RvciA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleG5fbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgUGV4dF9kZWNsIChhLCBiLCBjKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBleHRfcmViaW5kIGFcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiBjbGFzc190eXBlID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBpblxuICAgICAgICBsZXQgcGN0eV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IGNsYXNzX3R5cGVfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIFBjdHlfY29uc3RyIChhLCBiKVxuICAgICAgICB8IFBjdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBpblxuICAgICAgICAgICAgUGN0eV9zaWduYXR1cmUgYVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgUGN0eV9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY3R5X29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IGNsYXNzX3NpZ25hdHVyZSA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3RmX2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZF9kZXNjXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgUGN0Zl9pbmhlcml0IGFcbiAgICAgICAgfCBQY3RmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfdmFsIGFcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGQgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYywgZCkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjdGZfbWV0aG9kIGFcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjdGZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBjdGZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNpX3ZpcnQgPSBzZWxmI3ZpcnR1YWxfZmxhZyBwY2lfdmlydCBpblxuICAgICAgICBsZXQgcGNpX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICAgIGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiBjbGFzc19leHByID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2xfZGVzYyA9IHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2xfbG9jIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2xfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUGNsX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNsX2FwcGx5IChhLCBiKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19leHByIGMgaW5cbiAgICAgICAgICAgIFBjbF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBiIGluXG4gICAgICAgICAgICBQY2xfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQY2xfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUGNsX2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBQY2xfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3N0cl9zZWxmID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiBjbGFzc19maWVsZCAtPiBjbGFzc19maWVsZCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiBjbGFzc19maWVsZF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgYyBpblxuICAgICAgICAgICAgICAgIChhLCBiLCBjKSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX3ZhbCBhXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfbWV0aG9kIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfY29uc3RyYWludCBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBjZl9hdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBQY2ZfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kIDogY2xhc3NfZmllbGRfa2luZCAtPiBjbGFzc19maWVsZF9raW5kID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENma192aXJ0dWFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIENma19jb25jcmV0ZSAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvbiA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+IGNsYXNzX2RlY2xhcmF0aW9uID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG10eV9kZXNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBpblxuICAgICAgICBsZXQgcG10eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9pZGVudCBhXG4gICAgICAgIHwgUG10eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbXR5X2Z1bmN0b3IgKGEsIGIpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgaW5cbiAgICAgICAgICAgIFBtdHlfd2l0aCAoYSwgYilcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgUG10eV90eXBlb2YgYVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgUG10eV9hbGlhcyBhXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXIgOiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IFVuaXRcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSA9IHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSAtPiBzaWduYXR1cmVfaXRlbSA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBwc2lnX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBpblxuICAgICAgICB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc2lnX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUHNpZ190eXBleHQgYVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX2V4Y2VwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGVzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfb3BlbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzaWdfY2xhc3MgYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgUHNpZ19jbGFzc190eXBlIGFcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgUHNpZ19leHRlbnNpb24gKGEsIGIpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgeyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9XG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvcyA6ICdhLiAoJ2EgLT4gJ2EpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYSkgLT4gJ2EgaW5jbHVkZV9pbmZvcyAtPiAnYSBpbmNsdWRlX2luZm9zID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBpbmNsX21vZCA9IF9hIHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uIDogaW5jbHVkZV9kZXNjcmlwdGlvbiAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6IHdpdGhfY29uc3RyYWludCAtPiB3aXRoX2NvbnN0cmFpbnQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdWxlIChhLCBiKVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX3R5cGVzdWJzdCAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gbW9kdWxlX2V4cHIgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBtb2RfbG9jID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBpblxuICAgICAgICBsZXQgcG1vZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gbW9kdWxlX2V4cHJfZGVzYyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIFBtb2RfaWRlbnQgYVxuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgUG1vZF9zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgUG1vZF9mdW5jdG9yIChhLCBiKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBiIGluXG4gICAgICAgICAgICBQbW9kX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgUG1vZF9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MgPSBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjIDogc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXZhbCAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBQc3RyX3ZhbHVlIChhLCBiKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX3ByaW1pdGl2ZSBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBQc3RyX3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfdHlwZXh0IGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhIGluXG4gICAgICAgICAgICBQc3RyX3JlY21vZHVsZSBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX29wZW4gYVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBQc3RyX2NsYXNzIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIFBzdHJfaW5jbHVkZSBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBQc3RyX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIFBzdHJfZXh0ZW5zaW9uIChhLCBiKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH1cblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1iX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgcG1iX2V4cHIgaW5cbiAgICAgICAgbGV0IHBtYl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBtYl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWJfbG9jID0gc2VsZiNsb2NhdGlvbiBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+IHRvcGxldmVsX3BocmFzZSA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGVmIGFcbiAgICAgICAgfCBQdG9wX2RpciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdG9wbGV2ZWxfZGlyZWN0aXZlIGEgaW5cbiAgICAgICAgICAgIFB0b3BfZGlyIGFcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBpblxuICAgICAgICBsZXQgcGRpcl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGluXG4gICAgICAgIHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfVxuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gcGRpcmFfbG9jIGluXG4gICAgICAgIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgUGRpcl9zdHJpbmcgYVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBQZGlyX2ludCAoYSwgYilcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgUGRpcl9pZGVudCBhXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiBjYXNlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgaXRlciA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgbGlzdCAtPiB1bml0XG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcHRpb24gLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiB1bml0XG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiBwb3NpdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgc2VsZiNzdHJpbmcgcG9zX2ZuYW1lO1xuICAgICAgICBzZWxmI2ludCBwb3NfbG51bTtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2JvbDtcbiAgICAgICAgc2VsZiNpbnQgcG9zX2NudW1cblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydDtcbiAgICAgICAgc2VsZiNwb3NpdGlvbiBsb2NfZW5kO1xuICAgICAgICBzZWxmI2Jvb2wgbG9jX2dob3N0XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGxvYyAtPiB1bml0ID1cbiAgICAgIGZ1biBfYSB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgX2EgdHh0O1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGxvY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+IHNlbGYjc3RyaW5nIGFcbiAgICAgICAgfCBMZG90IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYTtcbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGJcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudCBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnQgYlxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+IHVuaXQgPSBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuICAgIG1ldGhvZCByZWNfZmxhZyA6IHJlY19mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiBwcml2YXRlX2ZsYWcgLT4gdW5pdCA9IGZ1biBfIC0+ICgpXG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6IG11dGFibGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+IHVuaXQgPSBmdW4gXyAtPiAoKVxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogb3ZlcnJpZGVfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiB1bml0ID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+ICgpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPiBzZWxmI3N0cmluZyBhXG5cbiAgICBtZXRob2QgdmFyaWFuY2UgOiB2YXJpYW5jZSAtPiB1bml0ID0gZnVuIF8gLT4gKClcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiB1bml0ID0gZnVuIF8gLT4gKClcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2xvY2F0aW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYXR0cl9uYW1lO1xuICAgICAgICBzZWxmI3BheWxvYWQgYXR0cl9wYXlsb2FkO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBhO1xuICAgICAgICBzZWxmI3BheWxvYWQgYlxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNhdHRyaWJ1dGVcblxuICAgIG1ldGhvZCBwYXlsb2FkIDogcGF5bG9hZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBTdHIgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGFcbiAgICAgICAgfCBQVHlwIGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFBQYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY29yZV90eXBlX2Rlc2MgcHR5cF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jO1xuICAgICAgICBzZWxmI2xvY2F0aW9uX3N0YWNrIHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5cF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiBjb3JlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+ICgpXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYVxuICAgICAgICB8IFB0eXBfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBhO1xuICAgICAgICAgICAgc2VsZiNjbG9zZWRfZmxhZyBiO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPiBzZWxmI3BhY2thZ2VfdHlwZSBhXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYilcbiAgICAgICAgICBiXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcmZfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHJmX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjYm9vbCBiO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGNcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+IHNlbGYjY29yZV90eXBlIGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBvZl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb2ZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBPdGFnIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiBwYXR0ZXJuIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwcGF0X2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBwYXRfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+ICgpXG4gICAgICAgIHwgUHBhdF92YXIgYSAtPiBzZWxmI2xvYyBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgYlxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBhO1xuICAgICAgICAgICAgc2VsZiNjb25zdGFudCBiXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYlxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGIpXG4gICAgICAgICAgICAgIGE7XG4gICAgICAgICAgICBzZWxmI2Nsb3NlZF9mbGFnIGJcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGJcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYTtcbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGJcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPiBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+IHNlbGYjcGF0dGVybiBhXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3BhdHRlcm4gYlxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZXhwX2xvYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBleHBfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPiBzZWxmI2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+IHNlbGYjY2FzZXMgYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gZFxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGIpXG4gICAgICAgICAgICAgIGJcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2Nhc2VzIGJcbiAgICAgICAgfCBQZXhwX3RyeSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNjYXNlcyBiXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF9maWVsZCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYjtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBjXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY1xuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG4gICAgICAgIHwgUGV4cF93aGlsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIHNlbGYjcGF0dGVybiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGI7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYztcbiAgICAgICAgICAgIHNlbGYjZGlyZWN0aW9uX2ZsYWcgZDtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGI7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGE7XG4gICAgICAgICAgICBzZWxmI2xvYyBzZWxmI2xhYmVsIGJcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUGV4cF9zZXRpbnN0dmFyIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYVxuICAgICAgICB8IFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGNcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPiBzZWxmI2V4cHJlc3Npb24gYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYlxuICAgICAgICB8IFBleHBfb2JqZWN0IGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIGE7XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYlxuICAgICAgICB8IFBleHBfcGFjayBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYVxuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhO1xuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGJcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT4gc2VsZiNsZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoKVxuXG4gICAgbWV0aG9kIGNhc2UgOiBjYXNlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjX2xocztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIHBjX2d1YXJkO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcGNfcmhzXG5cbiAgICBtZXRob2QgbGV0b3AgOiBsZXRvcCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBzZWxmI2JpbmRpbmdfb3AgbGV0XztcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzO1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gYm9keVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBib3Bfb3A7XG4gICAgICAgIHNlbGYjcGF0dGVybiBwYm9wX3BhdDtcbiAgICAgICAgc2VsZiNleHByZXNzaW9uIHBib3BfZXhwO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBib3BfbG9jXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2YWxfbmFtZTsgcHZhbF90eXBlOyBwdmFsX3ByaW07IHB2YWxfYXR0cmlidXRlczsgcHZhbF9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWU7XG4gICAgICAgIHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZTtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbTtcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmFsX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZTtcbiAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI3ZhcmlhbmNlIGE7XG4gICAgICAgICAgICAgIHNlbGYjaW5qZWN0aXZpdHkgYilcbiAgICAgICAgICAgICAgYilcbiAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYjtcbiAgICAgICAgICAgIHNlbGYjbG9jYXRpb24gYylcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZDtcbiAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHB0eXBlX2xvY1xuXG4gICAgbWV0aG9kIHR5cGVfa2luZCA6IHR5cGVfa2luZCAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+ICgpXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHR5cGVfb3BlbiAtPiAoKVxuXG4gICAgbWV0aG9kIGxhYmVsX2RlY2xhcmF0aW9uIDogbGFiZWxfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lO1xuICAgICAgICBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZTtcbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGU7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGxkX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNkX25hbWU7XG4gICAgICAgIHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzO1xuICAgICAgICBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncztcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY2RfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBhXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gdW5pdCA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIHB0eWV4dF9wYXRoO1xuICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYTtcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjdmFyaWFuY2UgYTtcbiAgICAgICAgICAgICAgc2VsZiNpbmplY3Rpdml0eSBiKVxuICAgICAgICAgICAgICBiKVxuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZTtcbiAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQ7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGV4dF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwZXh0X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCB0eXBlX2V4Y2VwdGlvbiA6IHR5cGVfZXhjZXB0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXhuX2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYTtcbiAgICAgICAgICAgIHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNjbGFzc190eXBlX2Rlc2MgcGN0eV9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPiBzZWxmI2NsYXNzX3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjYXJnX2xhYmVsIGE7XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiO1xuICAgICAgICAgICAgc2VsZiNjbGFzc190eXBlIGNcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfdHlwZSBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZjtcbiAgICAgICAgc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9maWVsZCBwY3NpZ19maWVsZHNcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkIDogY2xhc3NfdHlwZV9maWVsZCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHBjdGZfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwY3RmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI211dGFibGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgc2VsZiNsb2Mgc2VsZiNsYWJlbCBhO1xuICAgICAgICAgICAgICBzZWxmI3ByaXZhdGVfZmxhZyBiO1xuICAgICAgICAgICAgICBzZWxmI3ZpcnR1YWxfZmxhZyBjO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBkKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGE7XG4gICAgICAgICAgICAgIHNlbGYjY29yZV90eXBlIGIpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gdW5pdCkgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQ7XG4gICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgc2VsZiN2YXJpYW5jZSBhO1xuICAgICAgICAgICAgICBzZWxmI2luamVjdGl2aXR5IGIpXG4gICAgICAgICAgICAgIGIpXG4gICAgICAgICAgcGNpX3BhcmFtcztcbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGNpX25hbWU7XG4gICAgICAgIF9hIHBjaV9leHByO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjaV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gOiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc19leHByIDogY2xhc3NfZXhwciAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjY2xhc3NfZXhwcl9kZXNjIHBjbF9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBjbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwY2xfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiO1xuICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIGM7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgZFxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgc2VsZiNhcmdfbGFiZWwgYTtcbiAgICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYilcbiAgICAgICAgICAgICAgYlxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBzZWxmI3JlY19mbGFnIGE7XG4gICAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGI7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX2V4cHIgY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGE7XG4gICAgICAgICAgICBzZWxmI2NsYXNzX3R5cGUgYlxuICAgICAgICB8IFBjbF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI29wZW5fZGVzY3JpcHRpb24gYTtcbiAgICAgICAgICAgIHNlbGYjY2xhc3NfZXhwciBiXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogY2xhc3Nfc3RydWN0dXJlIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGY7XG4gICAgICAgIHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkc1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gdW5pdCA9XG4gICAgICBmdW4geyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgcGNmX2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcGNmX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzYyA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNjbGFzc19leHByIGI7XG4gICAgICAgICAgICBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGNcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNtdXRhYmxlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIHNlbGYjbG9jIHNlbGYjbGFiZWwgYTtcbiAgICAgICAgICAgICAgc2VsZiNwcml2YXRlX2ZsYWcgYjtcbiAgICAgICAgICAgICAgc2VsZiNjbGFzc19maWVsZF9raW5kIGMpXG4gICAgICAgICAgICAgIGFcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBhO1xuICAgICAgICAgICAgICBzZWxmI2NvcmVfdHlwZSBiKVxuICAgICAgICAgICAgICBhXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQY2ZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfa2luZCA6IGNsYXNzX2ZpZWxkX2tpbmQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+IHNlbGYjY29yZV90eXBlIGFcbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI292ZXJyaWRlX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBiXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiB1bml0ID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBwbXR5X2Rlc2M7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10eV9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXNcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPiBzZWxmI21vZHVsZV9leHByIGFcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQbXR5X2FsaWFzIGEgLT4gc2VsZiNsb25naWRlbnRfbG9jIGFcblxuICAgIG1ldGhvZCBmdW5jdG9yX3BhcmFtZXRlciA6IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfdHlwZSBiXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogc2lnbmF0dXJlIC0+IHVuaXQgPSBzZWxmI2xpc3Qgc2VsZiNzaWduYXR1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtIDogc2lnbmF0dXJlX2l0ZW0gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwc2lnX2xvY1xuXG4gICAgbWV0aG9kIHNpZ25hdHVyZV9pdGVtX2Rlc2MgOiBzaWduYXR1cmVfaXRlbV9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT4gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYVxuICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPiBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT4gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNleHRlbnNpb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWU7XG4gICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgcG1kX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbWRfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvbiA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lO1xuICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0O1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1zX2xvY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZTtcbiAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBwbXRkX3R5cGU7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwbXRkX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG10ZF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2luZm9zIDogJ2EuICgnYSAtPiB1bml0KSAtPiAnYSBvcGVuX2luZm9zIC0+IHVuaXQgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBvcGVuX2V4cHI7XG4gICAgICAgIHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6IG9wZW5fZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIGluY2x1ZGVfaW5mb3MgOiAnYS4gKCdhIC0+IHVuaXQpIC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gdW5pdCA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIF9hIHBpbmNsX21vZDtcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2M7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gdW5pdCA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb24gOiBpbmNsdWRlX2RlY2xhcmF0aW9uIC0+IHVuaXQgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCB3aXRoX2NvbnN0cmFpbnQgOiB3aXRoX2NvbnN0cmFpbnQgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQd2l0aF90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYlxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGE7XG4gICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlIGJcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2xvbmdpZGVudF9sb2MgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGJcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBhO1xuICAgICAgICAgICAgc2VsZiNsb25naWRlbnRfbG9jIGJcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIC0+IHVuaXQgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwbW9kX2xvYztcbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlc1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPiBzZWxmI3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhO1xuICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwciBiXG4gICAgICAgIHwgUG1vZF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYlxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX2V4cHIgYTtcbiAgICAgICAgICAgIHNlbGYjbW9kdWxlX3R5cGUgYlxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT4gc2VsZiNleHByZXNzaW9uIGFcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gdW5pdCA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBzZWxmI3N0cnVjdHVyZV9pdGVtX2Rlc2MgcHN0cl9kZXNjO1xuICAgICAgICBzZWxmI2xvY2F0aW9uIHBzdHJfbG9jXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzYyA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gdW5pdCA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc3RyX2V2YWwgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYTtcbiAgICAgICAgICAgIHNlbGYjYXR0cmlidXRlcyBiXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIHNlbGYjcmVjX2ZsYWcgYTtcbiAgICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYlxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgc2VsZiNyZWNfZmxhZyBhO1xuICAgICAgICAgICAgc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT4gc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfYmluZGluZyBhXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT4gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYVxuICAgICAgICB8IFBzdHJfaW5jbHVkZSBhIC0+IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI2V4dGVuc2lvbiBhO1xuICAgICAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogdmFsdWVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjcGF0dGVybiBwdmJfcGF0O1xuICAgICAgICBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHI7XG4gICAgICAgIHNlbGYjYXR0cmlidXRlcyBwdmJfYXR0cmlidXRlcztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwdmJfbG9jXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBtYl9uYW1lOyBwbWJfZXhwcjsgcG1iX2F0dHJpYnV0ZXM7IHBtYl9sb2MgfSAtPlxuICAgICAgICBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lO1xuICAgICAgICBzZWxmI21vZHVsZV9leHByIHBtYl9leHByO1xuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgcG1iX2F0dHJpYnV0ZXM7XG4gICAgICAgIHNlbGYjbG9jYXRpb24gcG1iX2xvY1xuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiB1bml0ID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6IHRvcGxldmVsX2RpcmVjdGl2ZSAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gLT5cbiAgICAgICAgc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGRpcl9uYW1lO1xuICAgICAgICBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyX2xvY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiB1bml0ID1cbiAgICAgIGZ1biB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9IC0+XG4gICAgICAgIHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYztcbiAgICAgICAgc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2NcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyA6IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IHVuaXQgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPiBzZWxmI3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBzZWxmI3N0cmluZyBhO1xuICAgICAgICAgICAgc2VsZiNvcHRpb24gc2VsZiNjaGFyIGJcbiAgICAgICAgfCBQZGlyX2lkZW50IGEgLT4gc2VsZiNsb25naWRlbnQgYVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+IHNlbGYjYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiB1bml0ID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2FjY10gZm9sZCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAnYWNjIC0+ICdhY2NcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiBpbnQgLT4gJ2FjYyAtPiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2FjY1xuXG4gICAgbWV0aG9kIHZpcnR1YWwgb3B0aW9uXG4gICAgICAgIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+ICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwb3NfZm5hbWU7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bSB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2xudW0gYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2ludCBwb3NfYm9sIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3Bvc2l0aW9uIGxvY19zdGFydCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX2VuZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBsb2NfZ2hvc3QgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAnYWNjIC0+ICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IF9hIHR4dCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiBsb25naWRlbnRfbG9jIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2Qgb3ZlcnJpZGVfZmxhZyA6IG92ZXJyaWRlX2ZsYWcgLT4gJ2FjYyAtPiAnYWNjID0gZnVuIF8gYWNjIC0+IGFjY1xuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6IGNsb3NlZF9mbGFnIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgbGFiZWwgOiBsYWJlbCAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI3N0cmluZ1xuXG4gICAgbWV0aG9kIGFyZ19sYWJlbCA6IGFyZ19sYWJlbCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbGFiZWwgLT4gYWNjXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPiBzZWxmI3N0cmluZyBhIGFjY1xuICAgICAgICB8IE9wdGlvbmFsIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gJ2FjYyA9IGZ1biBfIGFjYyAtPiBhY2NcbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+ICdhY2MgPSBmdW4gXyBhY2MgLT4gYWNjXG5cbiAgICBtZXRob2QgY29uc3RhbnQgOiBjb25zdGFudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY29uc3RfY2hhciBhIC0+IHNlbGYjY2hhciBhIGFjY1xuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjb25zdF9mbG9hdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF5bG9hZCBhdHRyX3BheWxvYWQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiBleHRlbnNpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXlsb2FkIGIgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+IHNlbGYjc3RydWN0dXJlIGEgYWNjXG4gICAgICAgIHwgUFNpZyBhIC0+IHNlbGYjc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUFR5cCBhIC0+IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBwdHlwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwdHlwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBhY2NcbiAgICAgICAgfCBQdHlwX3ZhciBhIC0+IHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYSBhY2NcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfb2JqZWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB0eXBfcGFja2FnZSBhIC0+IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIHBhY2thZ2VfdHlwZSA6IHBhY2thZ2VfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiByb3dfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBwcmZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHJmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYm9vbCBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUmluaGVyaXQgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29iamVjdF9maWVsZF9kZXNjIHBvZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwb2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6IG9iamVjdF9maWVsZF9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3RhZyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IE9pbmhlcml0IGEgLT4gc2VsZiNjb3JlX3R5cGUgYSBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuIDogcGF0dGVybiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgcHBhdF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwcGF0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHBhdF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBhY2NcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+IHNlbGYjY29uc3RhbnQgYSBhY2NcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0YW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT4gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+IHNlbGYjcGF0dGVybiBhIGFjY1xuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT4gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjY1xuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT4gc2VsZiNwYXR0ZXJuIGEgYWNjXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiBleHByZXNzaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb25fZGVzYyBwZXhwX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbl9zdGFjayBwZXhwX2xvY19zdGFjayBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0YW50IGEgLT4gc2VsZiNjb25zdGFudCBhIGFjY1xuICAgICAgICB8IFBleHBfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Z1bmN0aW9uIGEgLT4gc2VsZiNjYXNlcyBhIGFjY1xuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfdHVwbGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXRmaWVsZCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPiBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjXG4gICAgICAgIHwgUGV4cF9pZnRoZW5lbHNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfc2VuZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfbGF6eSBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPiBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT4gc2VsZiNtb2R1bGVfZXhwciBhIGFjY1xuICAgICAgICB8IFBleHBfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBleHBfbGV0b3AgYSAtPiBzZWxmI2xldG9wIGEgYWNjXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gYWNjXG5cbiAgICBtZXRob2QgY2FzZSA6IGNhc2UgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjX2xocyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwY19yaHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBib3BfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdmFsdWVfZGVzY3JpcHRpb24gOiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHZhbF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdmFsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdHlwZV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBwdHlwZV9jc3RycyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjdHlwZV9raW5kIHB0eXBlX2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlwZV9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiBhY2NcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT4gc2VsZiNsaXN0IHNlbGYjY29uc3RydWN0b3JfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPiBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFB0eXBlX29wZW4gLT4gYWNjXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBsZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgcGNkX3ZhcnMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT4gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjXG4gICAgICAgIHwgUGNzdHJfcmVjb3JkIGEgLT4gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2NcblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcHR5ZXh0X3BhdGggYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHB0eWV4dF9jb25zdHJ1Y3RvcnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIDogZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPiBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2NcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgYWNjXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3Nfc2lnbmF0dXJlIDogY2xhc3Nfc2lnbmF0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzYyA6IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+IHNlbGYjY2xhc3NfdHlwZSBhIGFjY1xuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBkIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ByaXZhdGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY3RmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT4gc2VsZiNhdHRyaWJ1dGUgYSBhY2NcbiAgICAgICAgfCBQY3RmX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biBfYVxuICAgICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuICAgICAgICAgIGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgcGNpX3BhcmFtcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gX2EgcGNpX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjaV9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogY2xhc3NfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6IGNsYXNzX2V4cHIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjbF9kZXNjOyBwY2xfbG9jOyBwY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNsX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT4gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIGMgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGQgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogY2xhc3NfZmllbGRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI211dGFibGVfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgIGFjYylcbiAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+IHNlbGYjZXhwcmVzc2lvbiBhIGFjY1xuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPiBzZWxmI2V4dGVuc2lvbiBhIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPiBzZWxmI2NvcmVfdHlwZSBhIGFjY1xuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogY2xhc3NfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbXR5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2MgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG10eV9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT4gc2VsZiNzaWduYXR1cmUgYSBhY2NcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQbXR5X3R5cGVvZiBhIC0+IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2NcbiAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IGFjY1xuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBzaWduYXR1cmUgOiBzaWduYXR1cmUgLT4gJ2FjYyAtPiAnYWNjID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwc2lnX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzYyA6IHNpZ25hdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT4gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPiBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ190eXBleHQgYSAtPiBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPiBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPiBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kc3Vic3QgYSAtPiBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX21vZHR5cGVzdWJzdCBhIC0+IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPiBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT4gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPiBzZWxmI2F0dHJpYnV0ZSBhIGFjY1xuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgcG1kX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbWRfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtdGRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2FjYykgLT4gJ2Egb3Blbl9pbmZvcyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIF9hIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcG9wZW5fZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG9wZW5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvcGVuX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBzZWxmI29wZW5faW5mb3Mgc2VsZiNsb25naWRlbnRfbG9jXG5cbiAgICBtZXRob2Qgb3Blbl9kZWNsYXJhdGlvbiA6IG9wZW5fZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYWNjKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4gX2EgeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gX2EgcGluY2xfbW9kIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZXNjcmlwdGlvbiA6IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvbiA6IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiBtb2R1bGVfZXhwciAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByX2Rlc2MgcG1vZF9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByX2Rlc2MgOiBtb2R1bGVfZXhwcl9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUG1vZF9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjY1xuICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIGEgLT4gc2VsZiNzdHJ1Y3R1cmUgYSBhY2NcbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUG1vZF91bnBhY2sgYSAtPiBzZWxmI2V4cHJlc3Npb24gYSBhY2NcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+IHNlbGYjZXh0ZW5zaW9uIGEgYWNjXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdhY2MgLT4gJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgYWNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHBzdHJfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcHN0cl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl92YWx1ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPiBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjXG4gICAgICAgIHwgUHN0cl90eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX21vZHVsZSBhIC0+IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2NcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT4gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPiBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZWNsYXJhdGlvbiBhIGFjY1xuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPiBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBhY2NcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+IHNlbGYjYXR0cmlidXRlIGEgYWNjXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGFjYyBpblxuICAgICAgICBhY2NcblxuICAgIG1ldGhvZCBtb2R1bGVfYmluZGluZyA6IG1vZHVsZV9iaW5kaW5nIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIHBtYl9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBwbWJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPiBzZWxmI3N0cnVjdHVyZSBhIGFjY1xuICAgICAgICB8IFB0b3BfZGlyIGEgLT4gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgYSBhY2NcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gcGRpcl9sb2MgYWNjIGluXG4gICAgICAgIGFjY1xuXG4gICAgbWV0aG9kIGRpcmVjdGl2ZV9hcmd1bWVudCA6IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHsgcGRpcmFfZGVzYzsgcGRpcmFfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIHBkaXJhX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJhX2xvYyBhY2MgaW5cbiAgICAgICAgYWNjXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+ICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT4gc2VsZiNzdHJpbmcgYSBhY2NcbiAgICAgICAgfCBQZGlyX2ludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+IHNlbGYjbG9uZ2lkZW50IGEgYWNjXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT4gc2VsZiNib29sIGEgYWNjXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+ICdhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjYXNlXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsnYWNjXSBmb2xkX21hcCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBib29sIDogYm9vbCAtPiAnYWNjIC0+IGJvb2wgKiAnYWNjXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6IGNoYXIgLT4gJ2FjYyAtPiBjaGFyICogJ2FjY1xuICAgIG1ldGhvZCB2aXJ0dWFsIGludCA6IGludCAtPiAnYWNjIC0+IGludCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGxpc3RcbiAgICAgICAgOiAnYS4gKCdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjKSAtPiAnYSBsaXN0IC0+ICdhY2MgLT4gJ2EgbGlzdCAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIG9wdGlvbiAtPiAnYWNjIC0+ICdhIG9wdGlvbiAqICdhY2NcblxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6IHN0cmluZyAtPiAnYWNjIC0+IHN0cmluZyAqICdhY2NcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdhY2MgLT4gcG9zaXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gYWNjIC0+XG4gICAgICAgIGxldCBwb3NfZm5hbWUsIGFjYyA9IHNlbGYjc3RyaW5nIHBvc19mbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtLCBhY2MgPSBzZWxmI2ludCBwb3NfbG51bSBhY2MgaW5cbiAgICAgICAgbGV0IHBvc19ib2wsIGFjYyA9IHNlbGYjaW50IHBvc19ib2wgYWNjIGluXG4gICAgICAgIGxldCBwb3NfY251bSwgYWNjID0gc2VsZiNpbnQgcG9zX2NudW0gYWNjIGluXG4gICAgICAgICh7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0sIGFjYylcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6IGxvY2F0aW9uIC0+ICdhY2MgLT4gbG9jYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gYWNjIC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQsIGFjYyA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGFjYyBpblxuICAgICAgICBsZXQgbG9jX2VuZCwgYWNjID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGFjYyBpblxuICAgICAgICBsZXQgbG9jX2dob3N0LCBhY2MgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGFjYyBpblxuICAgICAgICAoeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9LCBhY2MpXG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiBsb2NhdGlvbl9zdGFjayAtPiAnYWNjIC0+IGxvY2F0aW9uX3N0YWNrICogJ2FjYyA9XG4gICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvblxuXG4gICAgbWV0aG9kIGxvY1xuICAgICAgICA6ICdhLiAoJ2EgLT4gJ2FjYyAtPiAnYSAqICdhY2MpIC0+ICdhIGxvYyAtPiAnYWNjIC0+ICdhIGxvYyAqICdhY2MgPVxuICAgICAgZnVuIF9hIHsgdHh0OyBsb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHR4dCwgYWNjID0gX2EgdHh0IGFjYyBpblxuICAgICAgICBsZXQgbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGxvYyBhY2MgaW5cbiAgICAgICAgKHsgdHh0OyBsb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudCA6IGxvbmdpZGVudCAtPiAnYWNjIC0+IGxvbmdpZGVudCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChMaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3N0cmluZyBiIGFjYyBpblxuICAgICAgICAgICAgKExkb3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgTGFwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChMYXBwbHkgKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ2FjYyAtPiBsb25naWRlbnRfbG9jICogJ2FjYyA9XG4gICAgICBzZWxmI2xvYyBzZWxmI2xvbmdpZGVudFxuXG4gICAgbWV0aG9kIHJlY19mbGFnIDogcmVjX2ZsYWcgLT4gJ2FjYyAtPiByZWNfZmxhZyAqICdhY2MgPSBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdhY2MgLT4gZGlyZWN0aW9uX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIHByaXZhdGVfZmxhZyA6IHByaXZhdGVfZmxhZyAtPiAnYWNjIC0+IHByaXZhdGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdhY2MgLT4gbXV0YWJsZV9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiB2aXJ0dWFsX2ZsYWcgLT4gJ2FjYyAtPiB2aXJ0dWFsX2ZsYWcgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPiAoeCwgYWNjKVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdhY2MgLT4gb3ZlcnJpZGVfZmxhZyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAnYWNjIC0+IGNsb3NlZF9mbGFnICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbCA6IGxhYmVsIC0+ICdhY2MgLT4gbGFiZWwgKiAnYWNjID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiBhcmdfbGFiZWwgLT4gJ2FjYyAtPiBhcmdfbGFiZWwgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBhY2MpXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoTGFiZWxsZWQgYSwgYWNjKVxuICAgICAgICB8IE9wdGlvbmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKE9wdGlvbmFsIGEsIGFjYylcblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdhY2MgLT4gdmFyaWFuY2UgKiAnYWNjID0gZnVuIHggYWNjIC0+ICh4LCBhY2MpXG5cbiAgICBtZXRob2QgaW5qZWN0aXZpdHkgOiBpbmplY3Rpdml0eSAtPiAnYWNjIC0+IGluamVjdGl2aXR5ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT4gKHgsIGFjYylcblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdhY2MgLT4gY29uc3RhbnQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9pbnRlZ2VyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NoYXIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY29uc3RfY2hhciBhLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjIGFjYyBpblxuICAgICAgICAgICAgKFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNvbnN0X2Zsb2F0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSAtPiAnYWNjIC0+IGF0dHJpYnV0ZSAqICdhY2MgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBhdHRyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCwgYWNjID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBhY2MgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGFjYyBpblxuICAgICAgICAoeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbiA6IGV4dGVuc2lvbiAtPiAnYWNjIC0+IGV4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BheWxvYWQgYiBhY2MgaW5cbiAgICAgICAgKChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyaWJ1dGVzIC0+ICdhY2MgLT4gYXR0cmlidXRlcyAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6IHBheWxvYWQgLT4gJ2FjYyAtPiBwYXlsb2FkICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQU3RyIGEsIGFjYylcbiAgICAgICAgfCBQU2lnIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBTaWcgYSwgYWNjKVxuICAgICAgICB8IFBUeXAgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUFR5cCBhLCBhY2MpXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQUGF0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiAnYWNjIC0+IGNvcmVfdHlwZSAqICdhY2MgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZV9kZXNjIDogY29yZV90eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjb3JlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBfYW55IC0+IChQdHlwX2FueSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXJnX2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfYXJyb3cgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUHR5cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jb25zdHIgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbG9zZWRfZmxhZyBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfY2xhc3MgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9jbGFzcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNzdHJpbmcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2FsaWFzIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfdmFyaWFudCAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQdHlwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGFja2FnZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHR5cF9wYWNrYWdlIGEsIGFjYylcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwX2V4dGVuc2lvbiBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogcGFja2FnZV90eXBlIC0+ICdhY2MgLT4gcGFja2FnZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBiIGFjY1xuICAgICAgICBpblxuICAgICAgICAoKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkIDogcm93X2ZpZWxkIC0+ICdhY2MgLT4gcm93X2ZpZWxkICogJ2FjYyA9XG4gICAgICBmdW4geyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHByZl9kZXNjLCBhY2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIHByZl9kZXNjIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwcmZfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHJmX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcmZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6IHJvd19maWVsZF9kZXNjIC0+ICdhY2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2Jvb2wgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChSdGFnIChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFJpbmhlcml0IGEsIGFjYylcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiBvYmplY3RfZmllbGQgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG9mX2Rlc2MsIGFjYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwb2ZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb2ZfZGVzYzsgcG9mX2xvYzsgcG9mX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoT3RhZyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChPaW5oZXJpdCBhLCBhY2MpXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ2FjYyAtPiBwYXR0ZXJuICogJ2FjYyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MsIGFjYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBwYXRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6IHBhdHRlcm5fZGVzYyAtPiAnYWNjIC0+IHBhdHRlcm5fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgYWNjKVxuICAgICAgICB8IFBwYXRfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdmFyIGEsIGFjYylcbiAgICAgICAgfCBQcGF0X2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hbGlhcyAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2NvbnN0YW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdGFudCBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvbnN0YW50IGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb25zdGFudCBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfaW50ZXJ2YWwgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUHBhdF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwYXR0ZXJuIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xvc2VkX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X3JlY29yZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9hcnJheSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9vciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQcGF0X3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBwYXRfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHBhdF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBwYXRfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3BhdHRlcm4gYiBhY2MgaW5cbiAgICAgICAgICAgIChQcGF0X29wZW4gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ2FjYyAtPiBleHByZXNzaW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZXhwX2Rlc2MsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBleHBfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGFjYyA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgYWNjIGluXG4gICAgICAgIGxldCBwZXhwX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6IGV4cHJlc3Npb25fZGVzYyAtPiAnYWNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29uc3RhbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvbnN0YW50IGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBleHBfZnVuY3Rpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2FzZXMgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Z1bmN0aW9uIGEsIGFjYylcbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjcGF0dGVybiBjIGFjYyBpblxuICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBkIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9hcHBseSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX21hdGNoIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfdHJ5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2FzZXMgYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3RyeSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF90dXBsZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJ1Y3QgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3ZhcmlhbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcmVjb3JkIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9maWVsZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBjIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfYXJyYXkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX3NlcXVlbmNlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfd2hpbGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF93aGlsZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3BhdHRlcm4gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGQgYWNjIGluXG4gICAgICAgICAgICBsZXQgZSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpLCBhY2MpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9jb25zdHJhaW50IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfY29lcmNlIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2NvZXJjZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfc2VuZCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXcgYSwgYWNjKVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9zZXRpbnN0dmFyIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfb3ZlcnJpZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGV4cF9vdmVycmlkZSBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xldG1vZHVsZSAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldGV4Y2VwdGlvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2Fzc2VydCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX2xhenkgYSwgYWNjKVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcG9seSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZXhwX29iamVjdCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9uZXd0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNleHByZXNzaW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9uZXd0eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfcGFjayBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKFBleHBfb3BlbiAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xldG9wIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9sZXRvcCBhLCBhY2MpXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUGV4cF9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gKFBleHBfdW5yZWFjaGFibGUsIGFjYylcblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAnYWNjIC0+IGNhc2UgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNfbGhzLCBhY2MgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGFjYyBpblxuICAgICAgICBsZXQgcGNfZ3VhcmQsIGFjYyA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBhY2MgaW5cbiAgICAgICAgbGV0IHBjX3JocywgYWNjID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBhY2MgaW5cbiAgICAgICAgKHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0sIGFjYylcblxuICAgIG1ldGhvZCBsZXRvcCA6IGxldG9wIC0+ICdhY2MgLT4gbGV0b3AgKiAnYWNjID1cbiAgICAgIGZ1biB7IGxldF87IGFuZHM7IGJvZHkgfSBhY2MgLT5cbiAgICAgICAgbGV0IGxldF8sIGFjYyA9IHNlbGYjYmluZGluZ19vcCBsZXRfIGFjYyBpblxuICAgICAgICBsZXQgYW5kcywgYWNjID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBhbmRzIGFjYyBpblxuICAgICAgICBsZXQgYm9keSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGJvZHkgYWNjIGluXG4gICAgICAgICh7IGxldF87IGFuZHM7IGJvZHkgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGJpbmRpbmdfb3AgOiBiaW5kaW5nX29wIC0+ICdhY2MgLT4gYmluZGluZ19vcCAqICdhY2MgPVxuICAgICAgZnVuIHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGJvcF9vcCwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGJvcF9vcCBhY2MgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0LCBhY2MgPSBzZWxmI3BhdHRlcm4gcGJvcF9wYXQgYWNjIGluXG4gICAgICAgIGxldCBwYm9wX2V4cCwgYWNjID0gc2VsZiNleHByZXNzaW9uIHBib3BfZXhwIGFjYyBpblxuICAgICAgICBsZXQgcGJvcF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGJvcF9sb2MgYWNjIGluXG4gICAgICAgICh7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ2FjYyAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcHZhbF9uYW1lLCBhY2MgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwdmFsX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUsIGFjYyA9IHNlbGYjY29yZV90eXBlIHB2YWxfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjc3RyaW5nIHB2YWxfcHJpbSBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB2YWxfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2YWxfbG9jIGFjYyBpblxuICAgICAgICAoeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogdHlwZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IHR5cGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7XG4gICAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgICAgcHR5cGVfcGFyYW1zO1xuICAgICAgICAgICAgcHR5cGVfY3N0cnM7XG4gICAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgICAgcHR5cGVfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcHR5cGVfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YXJpYW5jZSBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjaW5qZWN0aXZpdHkgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfY3N0cnMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiLCBjKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNsb2NhdGlvbiBjIGFjYyBpblxuICAgICAgICAgICAgICAoKGEsIGIsIGMpLCBhY2MpKVxuICAgICAgICAgICAgcHR5cGVfY3N0cnMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kLCBhY2MgPSBzZWxmI3R5cGVfa2luZCBwdHlwZV9raW5kIGFjYyBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgcHR5cGVfcHJpdmF0ZSBhY2MgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0LCBhY2MgPVxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHB0eXBlX21hbmlmZXN0IGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHB0eXBlX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdHlwZV9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcHR5cGVfbG9jIGFjYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiB0eXBlX2tpbmQgLT4gJ2FjYyAtPiB0eXBlX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPiAoUHR5cGVfYWJzdHJhY3QsIGFjYylcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFB0eXBlX3ZhcmlhbnQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQdHlwZV9yZWNvcmQgYSwgYWNjKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gKFB0eXBlX29wZW4sIGFjYylcblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvblxuICAgICAgICA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbGFiZWxfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGxkX25hbWUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSwgYWNjID0gc2VsZiNtdXRhYmxlX2ZsYWcgcGxkX211dGFibGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGxkX3R5cGUgYWNjIGluXG4gICAgICAgIGxldCBwbGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBsZF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBsZF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNkX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMsIGFjYyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIHBjZF92YXJzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIHBjZF9hcmdzIGFjYyBpblxuICAgICAgICBsZXQgcGNkX3JlcywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcGNkX3JlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNkX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNkX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9hcmd1bWVudHNcbiAgICAgICAgOiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gJ2FjYyAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNzdHJfdHVwbGUgYSwgYWNjKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3N0cl9yZWNvcmQgYSwgYWNjKVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogdHlwZV9leHRlbnNpb24gLT4gJ2FjYyAtPiB0eXBlX2V4dGVuc2lvbiAqICdhY2MgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IGFjYyAtPlxuICAgICAgICBsZXQgcHR5ZXh0X3BhdGgsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBhY2MgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXJhbXMsIGFjYyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdmFyaWFuY2UgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2luamVjdGl2aXR5IGIgYWNjIGluXG4gICAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgICAgYiBhY2NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXMgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleHRfY29uc3RydWN0b3JzIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eWV4dF9wcml2YXRlIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleHRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleHRfcGF0aDtcbiAgICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgICBwdHlleHRfY29uc3RydWN0b3JzO1xuICAgICAgICAgICAgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhY2MgKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICAgICAgICA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAnYWNjIC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcGV4dF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9raW5kLCBhY2MgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIHBleHRfa2luZCBhY2MgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBleHRfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGV4dF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAnYWNjIC0+IHR5cGVfZXhjZXB0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IsIGFjYyA9XG4gICAgICAgICAgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXhuX2NvbnN0cnVjdG9yIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXhuX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwdHlleG5fbG9jIGFjYyBpblxuICAgICAgICBsZXQgcHR5ZXhuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwdHlleG5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmRcbiAgICAgICAgOiBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgIChQZXh0X2RlY2wgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGV4dF9yZWJpbmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBleHRfcmViaW5kIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlIDogY2xhc3NfdHlwZSAtPiAnYWNjIC0+IGNsYXNzX3R5cGUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0eV9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBwY3R5X2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3R5X2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiBjbGFzc190eXBlX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19zaWduYXR1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X3NpZ25hdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc190eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAoUGN0eV9hcnJvdyAoYSwgYiwgYyksIGFjYylcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY3R5X2V4dGVuc2lvbiBhLCBhY2MpXG4gICAgICAgIHwgUGN0eV9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBjdHlfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ2FjYyAtPiBjbGFzc19zaWduYXR1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgcGNzaWdfc2VsZiBhY2MgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcywgYWNjID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIHBjc2lnX2ZpZWxkcyBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgKHsgcGNzaWdfc2VsZjsgcGNzaWdfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIDogY2xhc3NfdHlwZV9maWVsZCAtPiAnYWNjIC0+IGNsYXNzX3R5cGVfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjdGZfZGVzYzsgcGN0Zl9sb2M7IHBjdGZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjLCBhY2MgPSBzZWxmI2NsYXNzX3R5cGVfZmllbGRfZGVzYyBwY3RmX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY3RmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjdGZfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2NcbiAgICAgICAgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY2xhc3NfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfaW5oZXJpdCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMsIGQpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjcHJpdmF0ZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjdmlydHVhbF9mbGFnIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQsIGFjYyA9IHNlbGYjY29yZV90eXBlIGQgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjLCBkKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY3RmX21ldGhvZCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPVxuICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICAoKGEsIGIpLCBhY2MpKVxuICAgICAgICAgICAgICAgIGEgYWNjXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjdGZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGN0Zl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBjdGZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAtPlxuICAgICAgICAgICdhY2MgLT5cbiAgICAgICAgICAnYSBjbGFzc19pbmZvcyAqICdhY2MgPVxuICAgICAgZnVuIF9hXG4gICAgICAgICAgeyBwY2lfdmlydDsgcGNpX3BhcmFtczsgcGNpX25hbWU7IHBjaV9leHByOyBwY2lfbG9jOyBwY2lfYXR0cmlidXRlcyB9XG4gICAgICAgICAgYWNjIC0+XG4gICAgICAgIGxldCBwY2lfdmlydCwgYWNjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgYWNjIGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zLCBhY2MgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NvcmVfdHlwZSBhIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYiwgYWNjID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhcmlhbmNlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNpbmplY3Rpdml0eSBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICAgIGIgYWNjXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgoYSwgYiksIGFjYykpXG4gICAgICAgICAgICBwY2lfcGFyYW1zIGFjY1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBjaV9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2V4cHIsIGFjYyA9IF9hIHBjaV9leHByIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwY2lfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwY2lfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKCB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0sXG4gICAgICAgICAgYWNjIClcblxuICAgIG1ldGhvZCBjbGFzc19kZXNjcmlwdGlvblxuICAgICAgICA6IGNsYXNzX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdhY2MgLT4gY2xhc3NfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwY2xfZGVzYywgYWNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwY2xfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwY2xfZGVzYzsgcGNsX2xvYzsgcGNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6IGNsYXNzX2V4cHJfZGVzYyAtPiAnYWNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0ciAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9zdHJ1Y3R1cmUgYSwgYWNjKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNhcmdfbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBhY2MgaW5cbiAgICAgICAgICAgIGxldCBjLCBhY2MgPSBzZWxmI3BhdHRlcm4gYyBhY2MgaW5cbiAgICAgICAgICAgIGxldCBkLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgZCBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZnVuIChhLCBiLCBjLCBkKSwgYWNjKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2FyZ19sYWJlbCBhIGFjYyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBiIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2xfYXBwbHkgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3JlY19mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGFjYyBpblxuICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjIGFjYyBpblxuICAgICAgICAgICAgKFBjbF9sZXQgKGEsIGIsIGMpLCBhY2MpXG4gICAgICAgIHwgUGNsX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjbGFzc19leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc190eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUGNsX2NvbnN0cmFpbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfZXh0ZW5zaW9uIGEsIGFjYylcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2NsYXNzX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQY2xfb3BlbiAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBjbGFzc19zdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiwgYWNjID0gc2VsZiNwYXR0ZXJuIHBjc3RyX3NlbGYgYWNjIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIHBjc3RyX2ZpZWxkcyBhY2MgaW5cbiAgICAgICAgKHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0sIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdhY2MgLT4gY2xhc3NfZmllbGQgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9IGFjYyAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfZGVzYyBwY2ZfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcGNmX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGNmX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICh7IHBjZl9kZXNjOyBwY2ZfbG9jOyBwY2ZfYXR0cmlidXRlcyB9LCBhY2MpXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGRfZGVzY1xuICAgICAgICA6IGNsYXNzX2ZpZWxkX2Rlc2MgLT4gJ2FjYyAtPiBjbGFzc19maWVsZF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNjbGFzc19leHByIGIgYWNjIGluXG4gICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNvcHRpb24gKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjIGFjYyBpblxuICAgICAgICAgICAgKFBjZl9pbmhlcml0IChhLCBiLCBjKSwgYWNjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGMsIGFjYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGFjYyBpblxuICAgICAgICAgICAgICAgICgoYSwgYiwgYyksIGFjYykpXG4gICAgICAgICAgICAgICAgYSBhY2NcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoUGNmX3ZhbCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBhY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgYywgYWNjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiLCBjKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfbWV0aG9kIGEsIGFjYylcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgYWNjIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjY29yZV90eXBlIGEgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjY29yZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAgICAgKChhLCBiKSwgYWNjKSlcbiAgICAgICAgICAgICAgICBhIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIChQY2ZfY29uc3RyYWludCBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2luaXRpYWxpemVyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfaW5pdGlhbGl6ZXIgYSwgYWNjKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUGNmX2F0dHJpYnV0ZSBhLCBhY2MpXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQY2ZfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogY2xhc3NfZmllbGRfa2luZCAtPiAnYWNjIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNjb3JlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIChDZmtfdmlydHVhbCBhLCBhY2MpXG4gICAgICAgIHwgQ2ZrX2NvbmNyZXRlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBiIGFjYyBpblxuICAgICAgICAgICAgKENma19jb25jcmV0ZSAoYSwgYiksIGFjYylcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6IGNsYXNzX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAnYWNjIC0+IG1vZHVsZV90eXBlICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYywgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZXNjIHBtdHlfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdHlfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdHlfbG9jIGFjYyBpblxuICAgICAgICBsZXQgcG10eV9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcG10eV9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwbXR5X2Rlc2M7IHBtdHlfbG9jOyBwbXR5X2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2Rlc2NcbiAgICAgICAgOiBtb2R1bGVfdHlwZV9kZXNjIC0+ICdhY2MgLT4gbW9kdWxlX3R5cGVfZGVzYyAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfaWRlbnQgYSwgYWNjKVxuICAgICAgICB8IFBtdHlfc2lnbmF0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3NpZ25hdHVyZSBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfc2lnbmF0dXJlIGEsIGFjYylcbiAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X2Z1bmN0b3IgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV93aXRoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGUgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3dpdGggKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbXR5X3R5cGVvZiBhLCBhY2MpXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG10eV9leHRlbnNpb24gYSwgYWNjKVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgKFBtdHlfYWxpYXMgYSwgYWNjKVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyXG4gICAgICAgIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ2FjYyAtPiBmdW5jdG9yX3BhcmFtZXRlciAqICdhY2MgPVxuICAgICAgZnVuIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFVuaXQgLT4gKFVuaXQsIGFjYylcbiAgICAgICAgfCBOYW1lZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKE5hbWVkIChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAnYWNjIC0+IHNpZ25hdHVyZSAqICdhY2MgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdhY2MgLT4gc2lnbmF0dXJlX2l0ZW0gKiAnYWNjID1cbiAgICAgIGZ1biB7IHBzaWdfZGVzYzsgcHNpZ19sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYywgYWNjID0gc2VsZiNzaWduYXR1cmVfaXRlbV9kZXNjIHBzaWdfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBzaWdfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBzaWdfbG9jIGFjYyBpblxuICAgICAgICAoeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0sIGFjYylcblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAnYWNjIC0+IHNpZ25hdHVyZV9pdGVtX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ192YWx1ZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBlc3Vic3QgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ190eXBleHQgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leGNlcHRpb24gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdWxlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9zdWJzdGl0dXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHN1YnN0IGEsIGFjYylcbiAgICAgICAgfCBQc2lnX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX21vZHR5cGVzdWJzdCBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc2lnX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzaWdfaW5jbHVkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19pbmNsdWRlIGEsIGFjYylcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3MgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzaWdfY2xhc3NfdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHNpZ19hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHNpZ19leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX2RlY2xhcmF0aW9uIC0+ICdhY2MgLT4gbW9kdWxlX2RlY2xhcmF0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWRfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF90eXBlLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGFjYyBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtZF9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1kX25hbWU7IHBtZF90eXBlOyBwbWRfYXR0cmlidXRlczsgcG1kX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ2FjYyA9XG4gICAgICBmdW4geyBwbXNfbmFtZTsgcG1zX21hbmlmZXN0OyBwbXNfYXR0cmlidXRlczsgcG1zX2xvYyB9IGFjYyAtPlxuICAgICAgICBsZXQgcG1zX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBtc19uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0LCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgcG1zX21hbmlmZXN0IGFjYyBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbXNfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtc19sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1zX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ2FjYyAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAqICdhY2MgPVxuICAgICAgZnVuIHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBtdGRfbmFtZSwgYWNjID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgcG10ZF9uYW1lIGFjYyBpblxuICAgICAgICBsZXQgcG10ZF90eXBlLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI21vZHVsZV90eXBlIHBtdGRfdHlwZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtdGRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtdGRfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBtdGRfbG9jIGFjYyBpblxuICAgICAgICAoeyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgb3Blbl9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBvcGVuX2V4cHI7IHBvcGVuX292ZXJyaWRlOyBwb3Blbl9sb2M7IHBvcGVuX2F0dHJpYnV0ZXMgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIsIGFjYyA9IF9hIHBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSwgYWNjID0gc2VsZiNvdmVycmlkZV9mbGFnIHBvcGVuX292ZXJyaWRlIGFjYyBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBvcGVuX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAoeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogb3Blbl9kZXNjcmlwdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogb3Blbl9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnYSAtPiAnYWNjIC0+ICdhICogJ2FjYykgLT5cbiAgICAgICAgICAnYSBpbmNsdWRlX2luZm9zIC0+XG4gICAgICAgICAgJ2FjYyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAnYWNjID1cbiAgICAgIGZ1biBfYSB7IHBpbmNsX21vZDsgcGluY2xfbG9jOyBwaW5jbF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QsIGFjYyA9IF9hIHBpbmNsX21vZCBhY2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwaW5jbF9sb2MgYWNjIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcGluY2xfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSwgYWNjKVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdhY2MgLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiAqICdhY2MgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAnYWNjIC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gKiAnYWNjID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdhY2MgLT4gd2l0aF9jb25zdHJhaW50ICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF90eXBlIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHVsZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBhY2MgaW5cbiAgICAgICAgICAgIChQd2l0aF9tb2R1bGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV90eXBlIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfbW9kdHlwZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHR5cGVzdWJzdCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQd2l0aF90eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgYWNjIGluXG4gICAgICAgICAgICAoUHdpdGhfdHlwZXN1YnN0IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFB3aXRoX21vZHN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBiIGFjYyBpblxuICAgICAgICAgICAgKFB3aXRoX21vZHN1YnN0IChhLCBiKSwgYWNjKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ2FjYyAtPiBtb2R1bGVfZXhwciAqICdhY2MgPVxuICAgICAgZnVuIHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbW9kX2Rlc2MsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBwbW9kX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwbW9kX2xvYyBhY2MgaW5cbiAgICAgICAgbGV0IHBtb2RfYXR0cmlidXRlcywgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHBtb2RfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgKHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0sIGFjYylcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogbW9kdWxlX2V4cHJfZGVzYyAtPiAnYWNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAnYWNjID1cbiAgICAgIGZ1biB4IGFjYyAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNzdHJ1Y3R1cmUgYSBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX3N0cnVjdHVyZSBhLCBhY2MpXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGIgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF9mdW5jdG9yIChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfZXhwciBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbW9kdWxlX2V4cHIgYiBhY2MgaW5cbiAgICAgICAgICAgIChQbW9kX2FwcGx5IChhLCBiKSwgYWNjKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZSBiIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfY29uc3RyYWludCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNleHByZXNzaW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUG1vZF91bnBhY2sgYSwgYWNjKVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2V4dGVuc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBtb2RfZXh0ZW5zaW9uIGEsIGFjYylcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiBzdHJ1Y3R1cmUgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmUgKiAnYWNjID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3N0cnVjdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSAtPiAnYWNjIC0+IHN0cnVjdHVyZV9pdGVtICogJ2FjYyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwc3RyX2Rlc2MsIGFjYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgYWNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcHN0cl9kZXNjOyBwc3RyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6IHN0cnVjdHVyZV9pdGVtX2Rlc2MgLT4gJ2FjYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBiIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfZXZhbCAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ZhbHVlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjcmVjX2ZsYWcgYSBhY2MgaW5cbiAgICAgICAgICAgIGxldCBiLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl92YWx1ZSAoYSwgYiksIGFjYylcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfcHJpbWl0aXZlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNyZWNfZmxhZyBhIGFjYyBpblxuICAgICAgICAgICAgbGV0IGIsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGUgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUHN0cl90eXBleHQgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leHRlbnNpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX3R5cGV4dCBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX2V4Y2VwdGlvbiBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX21vZHVsZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9yZWNtb2R1bGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfbW9kdHlwZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gYSBhY2MgaW5cbiAgICAgICAgICAgIChQc3RyX29wZW4gYSwgYWNjKVxuICAgICAgICB8IFBzdHJfY2xhc3MgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzcyBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9jbGFzc190eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9jbGFzc190eXBlIGEsIGFjYylcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjaW5jbHVkZV9kZWNsYXJhdGlvbiBhIGFjYyBpblxuICAgICAgICAgICAgKFBzdHJfaW5jbHVkZSBhLCBhY2MpXG4gICAgICAgIHwgUHN0cl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYXR0cmlidXRlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9hdHRyaWJ1dGUgYSwgYWNjKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjZXh0ZW5zaW9uIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIGIgYWNjIGluXG4gICAgICAgICAgICAoUHN0cl9leHRlbnNpb24gKGEsIGIpLCBhY2MpXG5cbiAgICBtZXRob2QgdmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgLT4gJ2FjYyAtPiB2YWx1ZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQsIGFjYyA9IHNlbGYjcGF0dGVybiBwdmJfcGF0IGFjYyBpblxuICAgICAgICBsZXQgcHZiX2V4cHIsIGFjYyA9IHNlbGYjZXhwcmVzc2lvbiBwdmJfZXhwciBhY2MgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgcHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgIGxldCBwdmJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHB2Yl9sb2MgYWNjIGluXG4gICAgICAgICh7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyAtPiAnYWNjIC0+IG1vZHVsZV9iaW5kaW5nICogJ2FjYyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSwgYWNjID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9leHByLCBhY2MgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGFjYyBpblxuICAgICAgICBsZXQgcG1iX2F0dHJpYnV0ZXMsIGFjYyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MsIGFjYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBhY2MgaW5cbiAgICAgICAgKHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogdG9wbGV2ZWxfcGhyYXNlIC0+ICdhY2MgLT4gdG9wbGV2ZWxfcGhyYXNlICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHRvcF9kZWYgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RydWN0dXJlIGEgYWNjIGluXG4gICAgICAgICAgICAoUHRvcF9kZWYgYSwgYWNjKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhLCBhY2MgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGFjYyBpblxuICAgICAgICAgICAgKFB0b3BfZGlyIGEsIGFjYylcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmVcbiAgICAgICAgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ2FjYyAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgKiAnYWNjID1cbiAgICAgIGZ1biB7IHBkaXJfbmFtZTsgcGRpcl9hcmc7IHBkaXJfbG9jIH0gYWNjIC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUsIGFjYyA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBkaXJfbmFtZSBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnLCBhY2MgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBwZGlyX2FyZyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jLCBhY2MgPSBzZWxmI2xvY2F0aW9uIHBkaXJfbG9jIGFjYyBpblxuICAgICAgICAoeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgIDogZGlyZWN0aXZlX2FyZ3VtZW50IC0+ICdhY2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50ICogJ2FjYyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSBhY2MgLT5cbiAgICAgICAgbGV0IHBkaXJhX2Rlc2MsIGFjYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBhY2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYywgYWNjID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgYWNjIGluXG4gICAgICAgICh7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9LCBhY2MpXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAnYWNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjICogJ2FjYyA9XG4gICAgICBmdW4geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGRpcl9zdHJpbmcgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9zdHJpbmcgYSwgYWNjKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjc3RyaW5nIGEgYWNjIGluXG4gICAgICAgICAgICBsZXQgYiwgYWNjID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgYWNjIGluXG4gICAgICAgICAgICAoUGRpcl9pbnQgKGEsIGIpLCBhY2MpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSwgYWNjID0gc2VsZiNsb25naWRlbnQgYSBhY2MgaW5cbiAgICAgICAgICAgIChQZGlyX2lkZW50IGEsIGFjYylcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEsIGFjYyA9IHNlbGYjYm9vbCBhIGFjYyBpblxuICAgICAgICAgICAgKFBkaXJfYm9vbCBhLCBhY2MpXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAnYWNjIC0+IGNhc2VzICogJ2FjYyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHhdIG1hcF93aXRoX2NvbnRleHQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sXG4gICAgbWV0aG9kIHZpcnR1YWwgY2hhciA6ICdjdHggLT4gY2hhciAtPiBjaGFyXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogJ2N0eCAtPiBpbnQgLT4gaW50XG4gICAgbWV0aG9kIHZpcnR1YWwgbGlzdCA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3RcblxuICAgIG1ldGhvZCB2aXJ0dWFsIG9wdGlvblxuICAgICAgICA6ICdhLiAoJ2N0eCAtPiAnYSAtPiAnYSkgLT4gJ2N0eCAtPiAnYSBvcHRpb24gLT4gJ2Egb3B0aW9uXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmdcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6ICdjdHggLT4gcG9zaXRpb24gLT4gcG9zaXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBvc19mbmFtZTsgcG9zX2xudW07IHBvc19ib2w7IHBvc19jbnVtIH0gLT5cbiAgICAgICAgbGV0IHBvc19mbmFtZSA9IHNlbGYjc3RyaW5nIGN0eCBwb3NfZm5hbWUgaW5cbiAgICAgICAgbGV0IHBvc19sbnVtID0gc2VsZiNpbnQgY3R4IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgY3R4IHBvc19ib2wgaW5cbiAgICAgICAgbGV0IHBvc19jbnVtID0gc2VsZiNpbnQgY3R4IHBvc19jbnVtIGluXG4gICAgICAgIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uIDogJ2N0eCAtPiBsb2NhdGlvbiAtPiBsb2NhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgbG9jX3N0YXJ0OyBsb2NfZW5kOyBsb2NfZ2hvc3QgfSAtPlxuICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBjdHggbG9jX2VuZCBpblxuICAgICAgICBsZXQgbG9jX2dob3N0ID0gc2VsZiNib29sIGN0eCBsb2NfZ2hvc3QgaW5cbiAgICAgICAgeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9XG5cbiAgICBtZXRob2QgbG9jYXRpb25fc3RhY2sgOiAnY3R4IC0+IGxvY2F0aW9uX3N0YWNrIC0+IGxvY2F0aW9uX3N0YWNrID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgPVxuICAgICAgZnVuIF9hIGN0eCB7IHR4dDsgbG9jIH0gLT5cbiAgICAgICAgbGV0IHR4dCA9IF9hIGN0eCB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGxvYyBpblxuICAgICAgICB7IHR4dDsgbG9jIH1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiAnY3R4IC0+IGxvbmdpZGVudCAtPiBsb25naWRlbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IExpZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMaWRlbnQgYVxuICAgICAgICB8IExkb3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBMZG90IChhLCBiKVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIExhcHBseSAoYSwgYilcblxuICAgIG1ldGhvZCBsb25naWRlbnRfbG9jIDogJ2N0eCAtPiBsb25naWRlbnRfbG9jIC0+IGxvbmdpZGVudF9sb2MgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogJ2N0eCAtPiBwcml2YXRlX2ZsYWcgLT4gcHJpdmF0ZV9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIG11dGFibGVfZmxhZyA6ICdjdHggLT4gbXV0YWJsZV9mbGFnIC0+IG11dGFibGVfZmxhZyA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgPVxuICAgICAgZnVuIF9jdHggeCAtPiB4XG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiAnY3R4IC0+IGNsb3NlZF9mbGFnIC0+IGNsb3NlZF9mbGFnID0gZnVuIF9jdHggeCAtPiB4XG4gICAgbWV0aG9kIGxhYmVsIDogJ2N0eCAtPiBsYWJlbCAtPiBsYWJlbCA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogJ2N0eCAtPiBhcmdfbGFiZWwgLT4gYXJnX2xhYmVsID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IE5vbGFiZWxcbiAgICAgICAgfCBMYWJlbGxlZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBMYWJlbGxlZCBhXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgT3B0aW9uYWwgYVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSA9IGZ1biBfY3R4IHggLT4geFxuICAgIG1ldGhvZCBpbmplY3Rpdml0eSA6ICdjdHggLT4gaW5qZWN0aXZpdHkgLT4gaW5qZWN0aXZpdHkgPSBmdW4gX2N0eCB4IC0+IHhcblxuICAgIG1ldGhvZCBjb25zdGFudCA6ICdjdHggLT4gY29uc3RhbnQgLT4gY29uc3RhbnQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjb25zdF9pbnRlZ2VyIChhLCBiKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICBQY29uc3RfY2hhciBhXG4gICAgICAgIHwgUGNvbnN0X3N0cmluZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiBzZWxmI3N0cmluZyBjdHggYyBpblxuICAgICAgICAgICAgUGNvbnN0X3N0cmluZyAoYSwgYiwgYylcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGNvbnN0X2Zsb2F0IChhLCBiKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZSA6ICdjdHggLT4gYXR0cmlidXRlIC0+IGF0dHJpYnV0ZSA9XG4gICAgICBmdW4gY3R4IHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhdHRyX25hbWUgaW5cbiAgICAgICAgbGV0IGF0dHJfcGF5bG9hZCA9IHNlbGYjcGF5bG9hZCBjdHggYXR0cl9wYXlsb2FkIGluXG4gICAgICAgIGxldCBhdHRyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IGF0dHJfbG9jIGluXG4gICAgICAgIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb24gOiAnY3R4IC0+IGV4dGVuc2lvbiAtPiBleHRlbnNpb24gPVxuICAgICAgZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9IHNlbGYjcGF5bG9hZCBjdHggYiBpblxuICAgICAgICAoYSwgYilcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGVzIDogJ2N0eCAtPiBhdHRyaWJ1dGVzIC0+IGF0dHJpYnV0ZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQU3RyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBTdHIgYVxuICAgICAgICB8IFBTaWcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUFNpZyBhXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQVHlwIGFcbiAgICAgICAgfCBQUGF0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQUGF0IChhLCBiKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIGN0eCBwdHlwX2Rlc2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cF9sb2MgaW5cbiAgICAgICAgbGV0IHB0eXBfbG9jX3N0YWNrID0gc2VsZiNsb2NhdGlvbl9zdGFjayBjdHggcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX2FueSAtPiBQdHlwX2FueVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFB0eXBfdmFyIGFcbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF9hcnJvdyAoYSwgYiwgYylcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX3R1cGxlIGFcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHR5cF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX29iamVjdCAoYSwgYilcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2NsYXNzIChhLCBiKVxuICAgICAgICB8IFB0eXBfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQdHlwX2FsaWFzIChhLCBiKVxuICAgICAgICB8IFB0eXBfdmFyaWFudCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcm93X2ZpZWxkIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjdHggYyBpblxuICAgICAgICAgICAgUHR5cF92YXJpYW50IChhLCBiLCBjKVxuICAgICAgICB8IFB0eXBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFB0eXBfcG9seSAoYSwgYilcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUHR5cF9wYWNrYWdlIGFcbiAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwX2V4dGVuc2lvbiBhXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlID1cbiAgICAgIGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgIGxldCBiID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgIGN0eCBiXG4gICAgICAgIGluXG4gICAgICAgIChhLCBiKVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6ICdjdHggLT4gcm93X2ZpZWxkIC0+IHJvd19maWVsZCA9XG4gICAgICBmdW4gY3R4IHsgcHJmX2Rlc2M7IHByZl9sb2M7IHByZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHByZl9kZXNjID0gc2VsZiNyb3dfZmllbGRfZGVzYyBjdHggcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcmZfbG9jIGluXG4gICAgICAgIGxldCBwcmZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHJmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHJvd19maWVsZF9kZXNjIDogJ2N0eCAtPiByb3dfZmllbGRfZGVzYyAtPiByb3dfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUnRhZyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBSdGFnIChhLCBiLCBjKVxuICAgICAgICB8IFJpbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFJpbmhlcml0IGFcblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGQgOiAnY3R4IC0+IG9iamVjdF9maWVsZCAtPiBvYmplY3RfZmllbGQgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9mX2Rlc2M7IHBvZl9sb2M7IHBvZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBvYmplY3RfZmllbGRfZGVzYyA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgLT4gb2JqZWN0X2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIE90YWcgKGEsIGIpXG4gICAgICAgIHwgT2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgT2luaGVyaXQgYVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiA9XG4gICAgICBmdW4gY3R4IHsgcHBhdF9kZXNjOyBwcGF0X2xvYzsgcHBhdF9sb2Nfc3RhY2s7IHBwYXRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcGF0X2Rlc2MgPSBzZWxmI3BhdHRlcm5fZGVzYyBjdHggcHBhdF9kZXNjIGluXG4gICAgICAgIGxldCBwcGF0X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHBwYXRfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwcGF0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBwYXRfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHBhdF9hbnkgLT4gUHBhdF9hbnlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3ZhciBhXG4gICAgICAgIHwgUHBhdF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2FsaWFzIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0YW50IGFcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdHVwbGUgYVxuICAgICAgICB8IFBwYXRfY29uc3RydWN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNvcHRpb25cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cnVjdCAoYSwgYilcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X3ZhcmlhbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xvc2VkX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfcmVjb3JkIChhLCBiKVxuICAgICAgICB8IFBwYXRfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X2FycmF5IGFcbiAgICAgICAgfCBQcGF0X29yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X29yIChhLCBiKVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQcGF0X3R5cGUgYVxuICAgICAgICB8IFBwYXRfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9sYXp5IGFcbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfdW5wYWNrIGFcbiAgICAgICAgfCBQcGF0X2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgUHBhdF9leGNlcHRpb24gYVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBwYXRfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgIFBwYXRfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBleHByZXNzaW9uIDogJ2N0eCAtPiBleHByZXNzaW9uIC0+IGV4cHJlc3Npb24gPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiAnY3R4IC0+IGV4cHJlc3Npb25fZGVzYyAtPiBleHByZXNzaW9uX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfaWRlbnQgYVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2NvbnN0YW50IGFcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgUGV4cF9sZXQgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfZnVuY3Rpb24gYVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgUGV4cF9mdW4gKGEsIGIsIGMsIGQpXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBleHBfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9tYXRjaCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbWF0Y2ggKGEsIGIpXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3RyeSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF90dXBsZSBhXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RydWN0IChhLCBiKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfdmFyaWFudCAoYSwgYilcbiAgICAgICAgfCBQZXhwX3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3JlY29yZCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX2ZpZWxkIChhLCBiKVxuICAgICAgICB8IFBleHBfc2V0ZmllbGQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX3NldGZpZWxkIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2FycmF5IGFcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgUGV4cF9zZXF1ZW5jZSAoYSwgYilcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3doaWxlIChhLCBiKVxuICAgICAgICB8IFBleHBfZm9yIChhLCBiLCBjLCBkLCBlKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2RpcmVjdGlvbl9mbGFnIGN0eCBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZSBpblxuICAgICAgICAgICAgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpXG4gICAgICAgIHwgUGV4cF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQZXhwX2NvZXJjZSAoYSwgYiwgYylcbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NlbmQgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9uZXcgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBleHBfbmV3IGFcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3NldGluc3R2YXIgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGV4cF9vdmVycmlkZSBhXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHBfbGV0bW9kdWxlIChhLCBiLCBjKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2Fzc2VydCBhXG4gICAgICAgIHwgUGV4cF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQZXhwX2xhenkgYVxuICAgICAgICB8IFBleHBfcG9seSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX3BvbHkgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9vYmplY3QgYVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQZXhwX25ld3R5cGUgKGEsIGIpXG4gICAgICAgIHwgUGV4cF9wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9wYWNrIGFcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBleHBfb3BlbiAoYSwgYilcbiAgICAgICAgfCBQZXhwX2xldG9wIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsZXRvcCBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9sZXRvcCBhXG4gICAgICAgIHwgUGV4cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGV4cF9leHRlbnNpb24gYVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gUGV4cF91bnJlYWNoYWJsZVxuXG4gICAgbWV0aG9kIGNhc2UgOiAnY3R4IC0+IGNhc2UgLT4gY2FzZSA9XG4gICAgICBmdW4gY3R4IHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH0gLT5cbiAgICAgICAgbGV0IHBjX2xocyA9IHNlbGYjcGF0dGVybiBjdHggcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfZ3VhcmQgaW5cbiAgICAgICAgbGV0IHBjX3JocyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcGNfcmhzIGluXG4gICAgICAgIHsgcGNfbGhzOyBwY19ndWFyZDsgcGNfcmhzIH1cblxuICAgIG1ldGhvZCBsZXRvcCA6ICdjdHggLT4gbGV0b3AgLT4gbGV0b3AgPVxuICAgICAgZnVuIGN0eCB7IGxldF87IGFuZHM7IGJvZHkgfSAtPlxuICAgICAgICBsZXQgbGV0XyA9IHNlbGYjYmluZGluZ19vcCBjdHggbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgY3R4IGFuZHMgaW5cbiAgICAgICAgbGV0IGJvZHkgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGJvZHkgaW5cbiAgICAgICAgeyBsZXRfOyBhbmRzOyBib2R5IH1cblxuICAgIG1ldGhvZCBiaW5kaW5nX29wIDogJ2N0eCAtPiBiaW5kaW5nX29wIC0+IGJpbmRpbmdfb3AgPVxuICAgICAgZnVuIGN0eCB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfSAtPlxuICAgICAgICBsZXQgcGJvcF9vcCA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBjdHggcGJvcF9wYXQgaW5cbiAgICAgICAgbGV0IHBib3BfZXhwID0gc2VsZiNleHByZXNzaW9uIGN0eCBwYm9wX2V4cCBpblxuICAgICAgICBsZXQgcGJvcF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwYm9wX2xvYyBpblxuICAgICAgICB7IHBib3Bfb3A7IHBib3BfcGF0OyBwYm9wX2V4cDsgcGJvcF9sb2MgfVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiB2YWx1ZV9kZXNjcmlwdGlvbiAtPiB2YWx1ZV9kZXNjcmlwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHZhbF9uYW1lOyBwdmFsX3R5cGU7IHB2YWxfcHJpbTsgcHZhbF9hdHRyaWJ1dGVzOyBwdmFsX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmFsX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHZhbF9uYW1lIGluXG4gICAgICAgIGxldCBwdmFsX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgY3R4IHB2YWxfcHJpbSBpblxuICAgICAgICBsZXQgcHZhbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmFsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB2YWxfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHZhbF9sb2MgaW5cbiAgICAgICAgeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH1cblxuICAgIG1ldGhvZCB0eXBlX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiB0eXBlX2RlY2xhcmF0aW9uIC0+IHR5cGVfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXM7XG4gICAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwdHlwZV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHR5cGVfbG9jO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eXBlX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcHR5cGVfbmFtZSBpblxuICAgICAgICBsZXQgcHR5cGVfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICBjdHggcHR5cGVfY3N0cnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2tpbmQgPSBzZWxmI3R5cGVfa2luZCBjdHggcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBwdHlwZV9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlwZV9tYW5pZmVzdCA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBwdHlwZV9tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcHR5cGVfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5cGVfbG9jIGluXG4gICAgICAgIHtcbiAgICAgICAgICBwdHlwZV9uYW1lO1xuICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICBwdHlwZV9jc3RycztcbiAgICAgICAgICBwdHlwZV9raW5kO1xuICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgcHR5cGVfbWFuaWZlc3Q7XG4gICAgICAgICAgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgIH1cblxuICAgIG1ldGhvZCB0eXBlX2tpbmQgOiAnY3R4IC0+IHR5cGVfa2luZCAtPiB0eXBlX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IFB0eXBlX2Fic3RyYWN0XG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQdHlwZV92YXJpYW50IGFcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNsYWJlbF9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHR5cGVfcmVjb3JkIGFcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IFB0eXBlX29wZW5cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6ICdjdHggLT4gbGFiZWxfZGVjbGFyYXRpb24gLT4gbGFiZWxfZGVjbGFyYXRpb24gPVxuICAgICAgZnVuIGN0eCB7IHBsZF9uYW1lOyBwbGRfbXV0YWJsZTsgcGxkX3R5cGU7IHBsZF9sb2M7IHBsZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBsZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBsZF9uYW1lIGluXG4gICAgICAgIGxldCBwbGRfbXV0YWJsZSA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBjdHggcGxkX3R5cGUgaW5cbiAgICAgICAgbGV0IHBsZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbGRfbG9jIGluXG4gICAgICAgIGxldCBwbGRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwbGRfbmFtZTsgcGxkX211dGFibGU7IHBsZF90eXBlOyBwbGRfbG9jOyBwbGRfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID1cbiAgICAgIGZ1biBjdHggeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY2RfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggcGNkX3ZhcnMgaW5cbiAgICAgICAgbGV0IHBjZF9hcmdzID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IHBjZF9hcmdzIGluXG4gICAgICAgIGxldCBwY2RfcmVzID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY2RfbG9jIGluXG4gICAgICAgIGxldCBwY2RfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGNkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY2RfbmFtZTsgcGNkX3ZhcnM7IHBjZF9hcmdzOyBwY2RfcmVzOyBwY2RfbG9jOyBwY2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgY29uc3RydWN0b3JfYXJndW1lbnRzXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgLT4gY29uc3RydWN0b3JfYXJndW1lbnRzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3N0cl90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgUGNzdHJfdHVwbGUgYVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY3N0cl9yZWNvcmQgYVxuXG4gICAgbWV0aG9kIHR5cGVfZXh0ZW5zaW9uIDogJ2N0eCAtPiB0eXBlX2V4dGVuc2lvbiAtPiB0eXBlX2V4dGVuc2lvbiA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgY3R4IHB0eWV4dF9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9jb25zdHJ1Y3RvcnMgPVxuICAgICAgICAgIHNlbGYjbGlzdCBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5ZXh0X3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleHRfbG9jIGluXG4gICAgICAgIGxldCBwdHlleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAge1xuICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgIHB0eWV4dF9wYXJhbXM7XG4gICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICBwdHlleHRfbG9jO1xuICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICB9XG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXG4gICAgICAgIDogJ2N0eCAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGV4dF9uYW1lOyBwZXh0X2tpbmQ7IHBleHRfbG9jOyBwZXh0X2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIHR5cGVfZXhjZXB0aW9uIDogJ2N0eCAtPiB0eXBlX2V4Y2VwdGlvbiAtPiB0eXBlX2V4Y2VwdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwdHlleG5fY29uc3RydWN0b3I7IHB0eWV4bl9sb2M7IHB0eWV4bl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZFxuICAgICAgICA6ICdjdHggLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgLT4gZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHRfZGVjbCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdHJ1Y3Rvcl9hcmd1bWVudHMgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgIFBleHRfZGVjbCAoYSwgYiwgYylcbiAgICAgICAgfCBQZXh0X3JlYmluZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgUGV4dF9yZWJpbmQgYVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIGN0eCBwY3R5X2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdHlfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0eV9sb2MgaW5cbiAgICAgICAgbGV0IHBjdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdHlfY29uc3RyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQY3R5X2NvbnN0ciAoYSwgYilcbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3R5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUGN0eV9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc190eXBlIGN0eCBjIGluXG4gICAgICAgICAgICBQY3R5X2Fycm93IChhLCBiLCBjKVxuICAgICAgICB8IFBjdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjdHlfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY3R5X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjdHlfb3BlbiAoYSwgYilcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgPVxuICAgICAgZnVuIGN0eCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9IC0+XG4gICAgICAgIGxldCBwY3NpZ19zZWxmID0gc2VsZiNjb3JlX3R5cGUgY3R4IHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgY3R4IHBjc2lnX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgY3R4IHBjdGZfZGVzYyBpblxuICAgICAgICBsZXQgcGN0Zl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwY3RmX2xvYyBpblxuICAgICAgICBsZXQgcGN0Zl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgeyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0Zl9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc190eXBlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2luaGVyaXQgYVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl92YWwgYVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMsIGQpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9tZXRob2QgYVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKGEsIGIpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGN0Zl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY3RmX2F0dHJpYnV0ZSBhXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUGN0Zl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGNsYXNzX2luZm9zIC0+ICdhIGNsYXNzX2luZm9zID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICBjdHggcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGNpX25hbWUgaW5cbiAgICAgICAgbGV0IHBjaV9leHByID0gX2EgY3R4IHBjaV9leHByIGluXG4gICAgICAgIGxldCBwY2lfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjaV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNpX3ZpcnQ7IHBjaV9wYXJhbXM7IHBjaV9uYW1lOyBwY2lfZXhwcjsgcGNpX2xvYzsgcGNpX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiAnY3R4IC0+IGNsYXNzX2V4cHIgLT4gY2xhc3NfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19leHByX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX2V4cHJfZGVzYyAtPiBjbGFzc19leHByX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBjbF9jb25zdHIgKGEsIGIpXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfc3RydWN0dXJlIGFcbiAgICAgICAgfCBQY2xfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjY2xhc3NfZXhwciBjdHggZCBpblxuICAgICAgICAgICAgUGNsX2Z1biAoYSwgYiwgYywgZClcbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoYSwgYikpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2xfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUGNsX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjdHggYyBpblxuICAgICAgICAgICAgUGNsX2xldCAoYSwgYiwgYylcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUGNsX2NvbnN0cmFpbnQgKGEsIGIpXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQY2xfZXh0ZW5zaW9uIGFcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgUGNsX29wZW4gKGEsIGIpXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlID1cbiAgICAgIGZ1biBjdHggeyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBjdHggcGNzdHJfc2VsZiBpblxuICAgICAgICBsZXQgcGNzdHJfZmllbGRzID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZmllbGQgY3R4IHBjc3RyX2ZpZWxkcyBpblxuICAgICAgICB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkID1cbiAgICAgIGZ1biBjdHggeyBwY2ZfZGVzYzsgcGNmX2xvYzsgcGNmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNmX2Rlc2MgPSBzZWxmI2NsYXNzX2ZpZWxkX2Rlc2MgY3R4IHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNmX2xvYyBpblxuICAgICAgICBsZXQgcGNmX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjZl9pbmhlcml0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI292ZXJyaWRlX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc19leHByIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgY3R4IGMgaW5cbiAgICAgICAgICAgIFBjZl9pbmhlcml0IChhLCBiLCBjKVxuICAgICAgICB8IFBjZl92YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoYSwgYiwgYykpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBQY2ZfdmFsIGFcbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKGEsIGIsIGMpKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgUGNmX21ldGhvZCBhXG4gICAgICAgIHwgUGNmX2NvbnN0cmFpbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAgIChhLCBiKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFBjZl9jb25zdHJhaW50IGFcbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9pbml0aWFsaXplciBhXG4gICAgICAgIHwgUGNmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICBQY2ZfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBjZl9leHRlbnNpb24gYVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkX2tpbmQgLT4gY2xhc3NfZmllbGRfa2luZCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgQ2ZrX3ZpcnR1YWwgYVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgQ2ZrX2NvbmNyZXRlIChhLCBiKVxuXG4gICAgbWV0aG9kIGNsYXNzX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBjbGFzc19kZWNsYXJhdGlvbiAtPiBjbGFzc19kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfZXhwclxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlIDogJ2N0eCAtPiBtb2R1bGVfdHlwZSAtPiBtb2R1bGVfdHlwZSA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVzYyA6ICdjdHggLT4gbW9kdWxlX3R5cGVfZGVzYyAtPiBtb2R1bGVfdHlwZV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X2lkZW50IGFcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3NpZ25hdHVyZSBhXG4gICAgICAgIHwgUG10eV9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtdHlfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbXR5X3dpdGggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjd2l0aF9jb25zdHJhaW50IGN0eCBiIGluXG4gICAgICAgICAgICBQbXR5X3dpdGggKGEsIGIpXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBQbXR5X3R5cGVvZiBhXG4gICAgICAgIHwgUG10eV9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG10eV9leHRlbnNpb24gYVxuICAgICAgICB8IFBtdHlfYWxpYXMgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIFBtdHlfYWxpYXMgYVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogJ2N0eCAtPiBmdW5jdG9yX3BhcmFtZXRlciAtPiBmdW5jdG9yX3BhcmFtZXRlciA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiBVbml0XG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgTmFtZWQgKGEsIGIpXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlIDogJ2N0eCAtPiBzaWduYXR1cmUgLT4gc2lnbmF0dXJlID1cbiAgICAgIHNlbGYjbGlzdCBzZWxmI3NpZ25hdHVyZV9pdGVtXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW0gOiAnY3R4IC0+IHNpZ25hdHVyZV9pdGVtIC0+IHNpZ25hdHVyZV9pdGVtID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9XG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQc2lnX3ZhbHVlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ192YWx1ZSBhXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQc2lnX3R5cGVzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXN1YnN0IGFcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfdHlwZXh0IGFcbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfZXhjZXB0aW9uIGFcbiAgICAgICAgfCBQc2lnX21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHVsZSBhXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2RzdWJzdCBhXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc2lnX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX21vZHR5cGUgYVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19tb2R0eXBlc3Vic3QgYVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHNpZ19vcGVuIGFcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfaW5jbHVkZSBhXG4gICAgICAgIHwgUHNpZ19jbGFzcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzIGFcbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc2lnX2NsYXNzX3R5cGUgYVxuICAgICAgICB8IFBzaWdfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzaWdfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc2lnX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiAnY3R4IC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfZGVjbGFyYXRpb25cbiAgICAgICAgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV9zdWJzdGl0dXRpb24gLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICB7IHBtdGRfbmFtZTsgcG10ZF90eXBlOyBwbXRkX2F0dHJpYnV0ZXM7IHBtdGRfbG9jIH1cblxuICAgIG1ldGhvZCBvcGVuX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIG9wZW5faW5mb3MgLT4gJ2Egb3Blbl9pbmZvcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2Qgb3Blbl9kZXNjcmlwdGlvbiA6ICdjdHggLT4gb3Blbl9kZXNjcmlwdGlvbiAtPiBvcGVuX2Rlc2NyaXB0aW9uID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zXG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhKSAtPiAnY3R4IC0+ICdhIGluY2x1ZGVfaW5mb3MgLT4gJ2EgaW5jbHVkZV9pbmZvc1xuICAgICAgICA9XG4gICAgICBmdW4gX2EgY3R4IHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgY3R4IHBpbmNsX21vZCBpblxuICAgICAgICBsZXQgcGluY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGluY2xfbG9jIGluXG4gICAgICAgIGxldCBwaW5jbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gLT4gaW5jbHVkZV9kZXNjcmlwdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfdHlwZVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGluY2x1ZGVfZGVjbGFyYXRpb24gLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHVsZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgUHdpdGhfbW9kdHlwZSAoYSwgYilcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICBQd2l0aF90eXBlc3Vic3QgKGEsIGIpXG4gICAgICAgIHwgUHdpdGhfbW9kc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgIFB3aXRoX21vZHN1YnN0IChhLCBiKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogJ2N0eCAtPiBtb2R1bGVfZXhwciAtPiBtb2R1bGVfZXhwciA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICB7IHBtb2RfZGVzYzsgcG1vZF9sb2M7IHBtb2RfYXR0cmlidXRlcyB9XG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6ICdjdHggLT4gbW9kdWxlX2V4cHJfZGVzYyAtPiBtb2R1bGVfZXhwcl9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX2lkZW50IGFcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQbW9kX3N0cnVjdHVyZSBhXG4gICAgICAgIHwgUG1vZF9mdW5jdG9yIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Z1bmN0b3JfcGFyYW1ldGVyIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfZnVuY3RvciAoYSwgYilcbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfYXBwbHkgKGEsIGIpXG4gICAgICAgIHwgUG1vZF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIFBtb2RfY29uc3RyYWludCAoYSwgYilcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUG1vZF91bnBhY2sgYVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBtb2RfZXh0ZW5zaW9uIGFcblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmUgOiAnY3R4IC0+IHN0cnVjdHVyZSAtPiBzdHJ1Y3R1cmUgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gPVxuICAgICAgZnVuIGN0eCB7IHBzdHJfZGVzYzsgcHN0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgcHN0cl9kZXNjID0gc2VsZiNzdHJ1Y3R1cmVfaXRlbV9kZXNjIGN0eCBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHN0cl9sb2MgaW5cbiAgICAgICAgeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+IHN0cnVjdHVyZV9pdGVtX2Rlc2MgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzdHJfZXZhbCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl9ldmFsIChhLCBiKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl92YWx1ZSAoYSwgYilcbiAgICAgICAgfCBQc3RyX3ByaW1pdGl2ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcHJpbWl0aXZlIGFcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgUHN0cl90eXBlIChhLCBiKVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl90eXBleHQgYVxuICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4Y2VwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9leGNlcHRpb24gYVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9tb2R1bGUgYVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfcmVjbW9kdWxlIGFcbiAgICAgICAgfCBQc3RyX21vZHR5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX21vZHR5cGUgYVxuICAgICAgICB8IFBzdHJfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgUHN0cl9vcGVuIGFcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3MgYVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfY2xhc3NfdHlwZSBhXG4gICAgICAgIHwgUHN0cl9pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBQc3RyX2luY2x1ZGUgYVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgY3R4IGEgaW5cbiAgICAgICAgICAgIFBzdHJfYXR0cmlidXRlIGFcbiAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICBQc3RyX2V4dGVuc2lvbiAoYSwgYilcblxuICAgIG1ldGhvZCB2YWx1ZV9iaW5kaW5nIDogJ2N0eCAtPiB2YWx1ZV9iaW5kaW5nIC0+IHZhbHVlX2JpbmRpbmcgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogJ2N0eCAtPiBtb2R1bGVfYmluZGluZyAtPiBtb2R1bGVfYmluZGluZyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgIHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9XG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfcGhyYXNlIDogJ2N0eCAtPiB0b3BsZXZlbF9waHJhc2UgLT4gdG9wbGV2ZWxfcGhyYXNlID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICBQdG9wX2RlZiBhXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBjdHggYSBpblxuICAgICAgICAgICAgUHRvcF9kaXIgYVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX2RpcmVjdGl2ZSA6ICdjdHggLT4gdG9wbGV2ZWxfZGlyZWN0aXZlIC0+IHRvcGxldmVsX2RpcmVjdGl2ZVxuICAgICAgICA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgeyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50IDogJ2N0eCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gZGlyZWN0aXZlX2FyZ3VtZW50XG4gICAgICAgID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICB7IHBkaXJhX2Rlc2M7IHBkaXJhX2xvYyB9XG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2NcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjIC0+IGRpcmVjdGl2ZV9hcmd1bWVudF9kZXNjID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX3N0cmluZyBhXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgUGRpcl9pbnQgKGEsIGIpXG4gICAgICAgIHwgUGRpcl9pZGVudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBQZGlyX2lkZW50IGFcbiAgICAgICAgfCBQZGlyX2Jvb2wgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2Jvb2wgY3R4IGEgaW5cbiAgICAgICAgICAgIFBkaXJfYm9vbCBhXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ3Jlc10gbGlmdCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGJvb2wgOiBib29sIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogY2hhciAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogaW50IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBsaXN0IDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsaXN0IC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb24gOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wdGlvbiAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogc3RyaW5nIC0+ICdyZXNcblxuICAgIG1ldGhvZCBwb3NpdGlvbiA6IHBvc2l0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgcG9zX2ZuYW1lIGluXG4gICAgICAgIGxldCBwb3NfbG51bSA9IHNlbGYjaW50IHBvc19sbnVtIGluXG4gICAgICAgIGxldCBwb3NfYm9sID0gc2VsZiNpbnQgcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBwb3NfY251bSBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvc19mbmFtZVwiLCBwb3NfZm5hbWUpO1xuICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgcG9zX2xudW0pO1xuICAgICAgICAgICAgKFwicG9zX2JvbFwiLCBwb3NfYm9sKTtcbiAgICAgICAgICAgIChcInBvc19jbnVtXCIsIHBvc19jbnVtKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbG9jYXRpb24gOiBsb2NhdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IGxvY19zdGFydDsgbG9jX2VuZDsgbG9jX2dob3N0IH0gLT5cbiAgICAgICAgbGV0IGxvY19zdGFydCA9IHNlbGYjcG9zaXRpb24gbG9jX3N0YXJ0IGluXG4gICAgICAgIGxldCBsb2NfZW5kID0gc2VsZiNwb3NpdGlvbiBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgbG9jX2dob3N0IGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwibG9jX3N0YXJ0XCIsIGxvY19zdGFydCk7XG4gICAgICAgICAgICAoXCJsb2NfZW5kXCIsIGxvY19lbmQpO1xuICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIGxvY19naG9zdCk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogbG9jYXRpb25fc3RhY2sgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2xvY2F0aW9uXG5cbiAgICBtZXRob2QgbG9jIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBsb2MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSB0eHQgaW5cbiAgICAgICAgbGV0IGxvYyA9IHNlbGYjbG9jYXRpb24gbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwidHh0XCIsIHR4dCk7IChcImxvY1wiLCBsb2MpIF1cblxuICAgIG1ldGhvZCBsb25naWRlbnQgOiBsb25naWRlbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBMaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxpZGVudFwiIFsgYSBdXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3N0cmluZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxkb3RcIiBbIGE7IGIgXVxuICAgICAgICB8IExhcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkxhcHBseVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50X2xvYyA6IGxvbmdpZGVudF9sb2MgLT4gJ3JlcyA9IHNlbGYjbG9jIHNlbGYjbG9uZ2lkZW50XG5cbiAgICBtZXRob2QgcmVjX2ZsYWcgOiByZWNfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBzZWxmI2NvbnN0ciBcIk5vbnJlY3Vyc2l2ZVwiIFtdXG4gICAgICAgIHwgUmVjdXJzaXZlIC0+IHNlbGYjY29uc3RyIFwiUmVjdXJzaXZlXCIgW11cblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6IGRpcmVjdGlvbl9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVXB0byAtPiBzZWxmI2NvbnN0ciBcIlVwdG9cIiBbXVxuICAgICAgICB8IERvd250byAtPiBzZWxmI2NvbnN0ciBcIkRvd250b1wiIFtdXG5cbiAgICBtZXRob2QgcHJpdmF0ZV9mbGFnIDogcHJpdmF0ZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZSAtPiBzZWxmI2NvbnN0ciBcIlByaXZhdGVcIiBbXVxuICAgICAgICB8IFB1YmxpYyAtPiBzZWxmI2NvbnN0ciBcIlB1YmxpY1wiIFtdXG5cbiAgICBtZXRob2QgbXV0YWJsZV9mbGFnIDogbXV0YWJsZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgSW1tdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiSW1tdXRhYmxlXCIgW11cbiAgICAgICAgfCBNdXRhYmxlIC0+IHNlbGYjY29uc3RyIFwiTXV0YWJsZVwiIFtdXG5cbiAgICBtZXRob2QgdmlydHVhbF9mbGFnIDogdmlydHVhbF9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVmlydHVhbCAtPiBzZWxmI2NvbnN0ciBcIlZpcnR1YWxcIiBbXVxuICAgICAgICB8IENvbmNyZXRlIC0+IHNlbGYjY29uc3RyIFwiQ29uY3JldGVcIiBbXVxuXG4gICAgbWV0aG9kIG92ZXJyaWRlX2ZsYWcgOiBvdmVycmlkZV9mbGFnIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgT3ZlcnJpZGUgLT4gc2VsZiNjb25zdHIgXCJPdmVycmlkZVwiIFtdXG4gICAgICAgIHwgRnJlc2ggLT4gc2VsZiNjb25zdHIgXCJGcmVzaFwiIFtdXG5cbiAgICBtZXRob2QgY2xvc2VkX2ZsYWcgOiBjbG9zZWRfZmxhZyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IENsb3NlZCAtPiBzZWxmI2NvbnN0ciBcIkNsb3NlZFwiIFtdXG4gICAgICAgIHwgT3BlbiAtPiBzZWxmI2NvbnN0ciBcIk9wZW5cIiBbXVxuXG4gICAgbWV0aG9kIGxhYmVsIDogbGFiZWwgLT4gJ3JlcyA9IHNlbGYjc3RyaW5nXG5cbiAgICBtZXRob2QgYXJnX2xhYmVsIDogYXJnX2xhYmVsIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9sYWJlbCAtPiBzZWxmI2NvbnN0ciBcIk5vbGFiZWxcIiBbXVxuICAgICAgICB8IExhYmVsbGVkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJMYWJlbGxlZFwiIFsgYSBdXG4gICAgICAgIHwgT3B0aW9uYWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk9wdGlvbmFsXCIgWyBhIF1cblxuICAgIG1ldGhvZCB2YXJpYW5jZSA6IHZhcmlhbmNlIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ292YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ292YXJpYW50XCIgW11cbiAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IHNlbGYjY29uc3RyIFwiQ29udHJhdmFyaWFudFwiIFtdXG4gICAgICAgIHwgTm9WYXJpYW5jZSAtPiBzZWxmI2NvbnN0ciBcIk5vVmFyaWFuY2VcIiBbXVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogaW5qZWN0aXZpdHkgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBJbmplY3RpdmUgLT4gc2VsZiNjb25zdHIgXCJJbmplY3RpdmVcIiBbXVxuICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gc2VsZiNjb25zdHIgXCJOb0luamVjdGl2aXR5XCIgW11cblxuICAgIG1ldGhvZCBjb25zdGFudCA6IGNvbnN0YW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNvbnN0X2ludGVnZXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2ludGVnZXJcIiBbIGE7IGIgXVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X2NoYXJcIiBbIGEgXVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2NhdGlvbiBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNvbnN0X3N0cmluZ1wiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNvbnN0X2Zsb2F0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjb25zdF9mbG9hdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlIDogYXR0cmlidXRlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IGF0dHJfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGF0dHJfcGF5bG9hZCBpblxuICAgICAgICBsZXQgYXR0cl9sb2MgPSBzZWxmI2xvY2F0aW9uIGF0dHJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwiYXR0cl9uYW1lXCIsIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAoXCJhdHRyX3BheWxvYWRcIiwgYXR0cl9wYXlsb2FkKTtcbiAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIGF0dHJfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgbGV0IGIgPSBzZWxmI3BheWxvYWQgYiBpblxuICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgYXR0cmlidXRlcyA6IGF0dHJpYnV0ZXMgLT4gJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2F0dHJpYnV0ZVxuXG4gICAgbWV0aG9kIHBheWxvYWQgOiBwYXlsb2FkIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFN0clwiIFsgYSBdXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFNpZ1wiIFsgYSBdXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFR5cFwiIFsgYSBdXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUFBhdFwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY29yZV90eXBlIDogY29yZV90eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHR5cF9kZXNjOyBwdHlwX2xvYzsgcHR5cF9sb2Nfc3RhY2s7IHB0eXBfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlwX2Rlc2MgPSBzZWxmI2NvcmVfdHlwZV9kZXNjIHB0eXBfZGVzYyBpblxuICAgICAgICBsZXQgcHR5cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHR5cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHB0eXBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwdHlwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwX2Rlc2NcIiwgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jXCIsIHB0eXBfbG9jKTtcbiAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIHB0eXBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInB0eXBfYXR0cmlidXRlc1wiLCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb3JlX3R5cGVfZGVzYyA6IGNvcmVfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gc2VsZiNjb25zdHIgXCJQdHlwX2FueVwiIFtdXG4gICAgICAgIHwgUHR5cF92YXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyXCIgWyBhIF1cbiAgICAgICAgfCBQdHlwX2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX29iamVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjb2JqZWN0X2ZpZWxkIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfb2JqZWN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwX2NsYXNzXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX2FsaWFzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHR5cF92YXJpYW50IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNyb3dfZmllbGQgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gKHNlbGYjbGlzdCBzZWxmI2xhYmVsKSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfdmFyaWFudFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cF9wb2x5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfcGFja2FnZVwiIFsgYSBdXG4gICAgICAgIHwgUHR5cF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBwYWNrYWdlX3R5cGUgOiBwYWNrYWdlX3R5cGUgLT4gJ3JlcyA9XG4gICAgICBmdW4gKGEsIGIpIC0+XG4gICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgbGV0IGIgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgIGJcbiAgICAgICAgaW5cbiAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHJvd19maWVsZCA6IHJvd19maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHByZl9kZXNjOyBwcmZfbG9jOyBwcmZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwcmZfZGVzYyA9IHNlbGYjcm93X2ZpZWxkX2Rlc2MgcHJmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHByZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHByZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgcHJmX2Rlc2MpO1xuICAgICAgICAgICAgKFwicHJmX2xvY1wiLCBwcmZfbG9jKTtcbiAgICAgICAgICAgIChcInByZl9hdHRyaWJ1dGVzXCIsIHByZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgcm93X2ZpZWxkX2Rlc2MgOiByb3dfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFJ0YWcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Jvb2wgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJSdGFnXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUmluaGVyaXRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6IG9iamVjdF9maWVsZCAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgcG9mX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBvZl9sb2MgPSBzZWxmI2xvY2F0aW9uIHBvZl9sb2MgaW5cbiAgICAgICAgbGV0IHBvZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG9mX2Rlc2NcIiwgcG9mX2Rlc2MpO1xuICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBwb2ZfbG9jKTtcbiAgICAgICAgICAgIChcInBvZl9hdHRyaWJ1dGVzXCIsIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2Qgb2JqZWN0X2ZpZWxkX2Rlc2MgOiBvYmplY3RfZmllbGRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIk90YWdcIiBbIGE7IGIgXVxuICAgICAgICB8IE9pbmhlcml0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJPaW5oZXJpdFwiIFsgYSBdXG5cbiAgICBtZXRob2QgcGF0dGVybiA6IHBhdHRlcm4gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwcGF0X2Rlc2M7IHBwYXRfbG9jOyBwcGF0X2xvY19zdGFjazsgcHBhdF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBwYXRfZGVzYyA9IHNlbGYjcGF0dGVybl9kZXNjIHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBwYXRfbG9jIGluXG4gICAgICAgIGxldCBwcGF0X2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcHBhdF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBwYXRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwcGF0X2Rlc2NcIiwgcHBhdF9kZXNjKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIHBwYXRfbG9jKTtcbiAgICAgICAgICAgIChcInBwYXRfbG9jX3N0YWNrXCIsIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBwYXRfYXR0cmlidXRlc1wiLCBwcGF0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBwYXR0ZXJuX2Rlc2MgOiBwYXR0ZXJuX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQcGF0X2FueSAtPiBzZWxmI2NvbnN0ciBcIlBwYXRfYW55XCIgW11cbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9hbGlhc1wiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb25zdGFudCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfaW50ZXJ2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHVwbGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF90dXBsZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjb3B0aW9uXG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IChzZWxmI2xvYyBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cnVjdFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHBhdF92YXJpYW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF92YXJpYW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X3JlY29yZCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQcGF0X2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBwYXRfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHBhdF9sYXp5XCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X3VucGFja1wiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhdHRlcm4gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQcGF0X2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHBhdF9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBhIF1cbiAgICAgICAgfCBQcGF0X29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBwYXRfb3BlblwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgZXhwcmVzc2lvbiA6IGV4cHJlc3Npb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHBfZGVzYyA9IHNlbGYjZXhwcmVzc2lvbl9kZXNjIHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBleHBfbG9jIGluXG4gICAgICAgIGxldCBwZXhwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgcGV4cF9sb2Nfc3RhY2sgaW5cbiAgICAgICAgbGV0IHBleHBfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwZXhwX2Rlc2NcIiwgcGV4cF9kZXNjKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIHBleHBfbG9jKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jX3N0YWNrXCIsIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgIChcInBleHBfYXR0cmlidXRlc1wiLCBwZXhwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHByZXNzaW9uX2Rlc2MgOiBleHByZXNzaW9uX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXhwX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9jb25zdGFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29uc3RhbnQgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2NvbnN0YW50XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3ZhbHVlX2JpbmRpbmcgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1bmN0aW9uXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2V4cHJlc3Npb24gZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2Z1blwiIFsgYTsgYjsgYzsgZCBdXG4gICAgICAgIHwgUGV4cF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX21hdGNoIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9tYXRjaFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2FzZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3RyeVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF90dXBsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3R1cGxlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJ1Y3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfdmFyaWFudFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcmVjb3JkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZpZWxkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2ZpZWxkXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NldGZpZWxkXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX2FycmF5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfYXJyYXlcIiBbIGEgXVxuICAgICAgICB8IFBleHBfaWZ0aGVuZWxzZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9pZnRoZW5lbHNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlcXVlbmNlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlcXVlbmNlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3doaWxlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2ZvciAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNkaXJlY3Rpb25fZmxhZyBkIGluXG4gICAgICAgICAgICBsZXQgZSA9IHNlbGYjZXhwcmVzc2lvbiBlIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfZm9yXCIgWyBhOyBiOyBjOyBkOyBlIF1cbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9jb25zdHJhaW50XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX2NvZXJjZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfY29lcmNlXCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQZXhwX3NlbmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX3NlbmRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfbmV3IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXdcIiBbIGEgXVxuICAgICAgICB8IFBleHBfc2V0aW5zdHZhciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfc2V0aW5zdHZhclwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vdmVycmlkZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX292ZXJyaWRlXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2xldG1vZHVsZSAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX2V4cHIgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG1vZHVsZVwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGV4cF9sZXRleGNlcHRpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIGE7IGIgXVxuICAgICAgICB8IFBleHBfYXNzZXJ0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9hc3NlcnRcIiBbIGEgXVxuICAgICAgICB8IFBleHBfbGF6eSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfbGF6eVwiIFsgYSBdXG4gICAgICAgIHwgUGV4cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfcG9seVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9vYmplY3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb2JqZWN0XCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX25ld3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9uZXd0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQZXhwX3BhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9wYWNrXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBleHBfb3BlblwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXhwX2xldG9wXCIgWyBhIF1cbiAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4cF9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBleHBfdW5yZWFjaGFibGUgLT4gc2VsZiNjb25zdHIgXCJQZXhwX3VucmVhY2hhYmxlXCIgW11cblxuICAgIG1ldGhvZCBjYXNlIDogY2FzZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBjX2xoczsgcGNfZ3VhcmQ7IHBjX3JocyB9IC0+XG4gICAgICAgIGxldCBwY19saHMgPSBzZWxmI3BhdHRlcm4gcGNfbGhzIGluXG4gICAgICAgIGxldCBwY19ndWFyZCA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIHBjX3JocyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFsgKFwicGNfbGhzXCIsIHBjX2xocyk7IChcInBjX2d1YXJkXCIsIHBjX2d1YXJkKTsgKFwicGNfcmhzXCIsIHBjX3JocykgXVxuXG4gICAgbWV0aG9kIGxldG9wIDogbGV0b3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBsZXRfOyBhbmRzOyBib2R5IH0gLT5cbiAgICAgICAgbGV0IGxldF8gPSBzZWxmI2JpbmRpbmdfb3AgbGV0XyBpblxuICAgICAgICBsZXQgYW5kcyA9IHNlbGYjbGlzdCBzZWxmI2JpbmRpbmdfb3AgYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBib2R5IGluXG4gICAgICAgIHNlbGYjcmVjb3JkIFsgKFwibGV0X1wiLCBsZXRfKTsgKFwiYW5kc1wiLCBhbmRzKTsgKFwiYm9keVwiLCBib2R5KSBdXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6IGJpbmRpbmdfb3AgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwYm9wX29wOyBwYm9wX3BhdDsgcGJvcF9leHA7IHBib3BfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBib3Bfb3AgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwYm9wX29wIGluXG4gICAgICAgIGxldCBwYm9wX3BhdCA9IHNlbGYjcGF0dGVybiBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gcGJvcF9leHAgaW5cbiAgICAgICAgbGV0IHBib3BfbG9jID0gc2VsZiNsb2NhdGlvbiBwYm9wX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBib3Bfb3BcIiwgcGJvcF9vcCk7XG4gICAgICAgICAgICAoXCJwYm9wX3BhdFwiLCBwYm9wX3BhdCk7XG4gICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBwYm9wX2V4cCk7XG4gICAgICAgICAgICAoXCJwYm9wX2xvY1wiLCBwYm9wX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB2YWxfbmFtZSBpblxuICAgICAgICBsZXQgcHZhbF90eXBlID0gc2VsZiNjb3JlX3R5cGUgcHZhbF90eXBlIGluXG4gICAgICAgIGxldCBwdmFsX3ByaW0gPSBzZWxmI2xpc3Qgc2VsZiNzdHJpbmcgcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHZhbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmFsX2xvYyA9IHNlbGYjbG9jYXRpb24gcHZhbF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdmFsX25hbWVcIiwgcHZhbF9uYW1lKTtcbiAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBwdmFsX3R5cGUpO1xuICAgICAgICAgICAgKFwicHZhbF9wcmltXCIsIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAoXCJwdmFsX2F0dHJpYnV0ZXNcIiwgcHZhbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIHB2YWxfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvbiA6IHR5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4ge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHB0eXBlX25hbWUgaW5cbiAgICAgICAgbGV0IHB0eXBlX3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlwZV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eXBlX2NzdHJzID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xvY2F0aW9uIGMgaW5cbiAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgcHR5cGVfa2luZCBpblxuICAgICAgICBsZXQgcHR5cGVfcHJpdmF0ZSA9IHNlbGYjcHJpdmF0ZV9mbGFnIHB0eXBlX3ByaXZhdGUgaW5cbiAgICAgICAgbGV0IHB0eXBlX21hbmlmZXN0ID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5cGVfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHR5cGVfbG9jID0gc2VsZiNsb2NhdGlvbiBwdHlwZV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlwZV9uYW1lXCIsIHB0eXBlX25hbWUpO1xuICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIHB0eXBlX3BhcmFtcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9jc3Ryc1wiLCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9raW5kXCIsIHB0eXBlX2tpbmQpO1xuICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBwdHlwZV9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eXBlX21hbmlmZXN0XCIsIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInB0eXBlX2F0dHJpYnV0ZXNcIiwgcHR5cGVfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgcHR5cGVfbG9jKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogdHlwZV9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9hYnN0cmFjdFwiIFtdXG4gICAgICAgIHwgUHR5cGVfdmFyaWFudCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHR5cGVfdmFyaWFudFwiIFsgYSBdXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdHlwZV9yZWNvcmRcIiBbIGEgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT4gc2VsZiNjb25zdHIgXCJQdHlwZV9vcGVuXCIgW11cblxuICAgIG1ldGhvZCBsYWJlbF9kZWNsYXJhdGlvbiA6IGxhYmVsX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbGRfbmFtZSBpblxuICAgICAgICBsZXQgcGxkX211dGFibGUgPSBzZWxmI211dGFibGVfZmxhZyBwbGRfbXV0YWJsZSBpblxuICAgICAgICBsZXQgcGxkX3R5cGUgPSBzZWxmI2NvcmVfdHlwZSBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gcGxkX2xvYyBpblxuICAgICAgICBsZXQgcGxkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGxkX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbGRfbmFtZVwiLCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbGRfbXV0YWJsZVwiLCBwbGRfbXV0YWJsZSk7XG4gICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBwbGRfdHlwZSk7XG4gICAgICAgICAgICAoXCJwbGRfbG9jXCIsIHBsZF9sb2MpO1xuICAgICAgICAgICAgKFwicGxkX2F0dHJpYnV0ZXNcIiwgcGxkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNkX25hbWU7IHBjZF92YXJzOyBwY2RfYXJnczsgcGNkX3JlczsgcGNkX2xvYzsgcGNkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGNkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2RfbmFtZSBpblxuICAgICAgICBsZXQgcGNkX3ZhcnMgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBwY2RfYXJncyBpblxuICAgICAgICBsZXQgcGNkX3JlcyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIHBjZF9yZXMgaW5cbiAgICAgICAgbGV0IHBjZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNkX25hbWVcIiwgcGNkX25hbWUpO1xuICAgICAgICAgICAgKFwicGNkX3ZhcnNcIiwgcGNkX3ZhcnMpO1xuICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgcGNkX2FyZ3MpO1xuICAgICAgICAgICAgKFwicGNkX3Jlc1wiLCBwY2RfcmVzKTtcbiAgICAgICAgICAgIChcInBjZF9sb2NcIiwgcGNkX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBwY2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50cyA6IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfdHVwbGVcIiBbIGEgXVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNzdHJfcmVjb3JkXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0eXBlX2V4dGVuc2lvbiA6IHR5cGVfZXh0ZW5zaW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHtcbiAgICAgICAgICAgIHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZTtcbiAgICAgICAgICAgIHB0eWV4dF9sb2M7XG4gICAgICAgICAgICBwdHlleHRfYXR0cmlidXRlcztcbiAgICAgICAgICB9IC0+XG4gICAgICAgIGxldCBwdHlleHRfcGF0aCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgICBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgcHR5ZXh0X2NvbnN0cnVjdG9yc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHR5ZXh0X3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBwdHlleHRfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5ZXh0X2xvYyA9IHNlbGYjbG9jYXRpb24gcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcHR5ZXh0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwdHlleHRfcGF0aFwiLCBwdHlleHRfcGF0aCk7XG4gICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIHB0eWV4dF9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicHR5ZXh0X2NvbnN0cnVjdG9yc1wiLCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9wcml2YXRlXCIsIHB0eWV4dF9wcml2YXRlKTtcbiAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgcHR5ZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwdHlleHRfYXR0cmlidXRlc1wiLCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3RvciA6IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBleHRfbmFtZTsgcGV4dF9raW5kOyBwZXh0X2xvYzsgcGV4dF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBleHRfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIHBleHRfbmFtZSBpblxuICAgICAgICBsZXQgcGV4dF9raW5kID0gc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBwZXh0X2xvYyBpblxuICAgICAgICBsZXQgcGV4dF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBleHRfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBwZXh0X25hbWUpO1xuICAgICAgICAgICAgKFwicGV4dF9raW5kXCIsIHBleHRfa2luZCk7XG4gICAgICAgICAgICAoXCJwZXh0X2xvY1wiLCBwZXh0X2xvYyk7XG4gICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgcGV4dF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiB0eXBlX2V4Y2VwdGlvbiAtPiAncmVzID1cbiAgICAgIGZ1biB7IHB0eWV4bl9jb25zdHJ1Y3RvcjsgcHR5ZXhuX2xvYzsgcHR5ZXhuX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5ZXhuX2NvbnN0cnVjdG9yID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIHB0eWV4bl9sb2MgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB0eWV4bl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIHB0eWV4bl9jb25zdHJ1Y3Rvcik7XG4gICAgICAgICAgICAoXCJwdHlleG5fbG9jXCIsIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgKFwicHR5ZXhuX2F0dHJpYnV0ZXNcIiwgcHR5ZXhuX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3Jfa2luZCA6IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGV4dF9kZWNsIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNjb3JlX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZXh0X2RlY2xcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGV4dF9yZWJpbmRcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiBjbGFzc190eXBlIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGN0eV9kZXNjOyBwY3R5X2xvYzsgcGN0eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdHlfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9kZXNjIHBjdHlfZGVzYyBpblxuICAgICAgICBsZXQgcGN0eV9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGN0eV9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIHBjdHlfZGVzYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2xvY1wiLCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAoXCJwY3R5X2F0dHJpYnV0ZXNcIiwgcGN0eV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZXNjIDogY2xhc3NfdHlwZV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGN0eV9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdHlfY29uc3RyXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBjdHlfYXJyb3cgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3R5X2Fycm93XCIgWyBhOyBiOyBjIF1cbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9leHRlbnNpb25cIiBbIGEgXVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbGFzc190eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0eV9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiBjbGFzc19zaWduYXR1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIHBjc2lnX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc2lnX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZmllbGQgcGNzaWdfZmllbGRzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgWyAoXCJwY3NpZ19zZWxmXCIsIHBjc2lnX3NlbGYpOyAoXCJwY3NpZ19maWVsZHNcIiwgcGNzaWdfZmllbGRzKSBdXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3RmX2Rlc2M7IHBjdGZfbG9jOyBwY3RmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGN0Zl9kZXNjID0gc2VsZiNjbGFzc190eXBlX2ZpZWxkX2Rlc2MgcGN0Zl9kZXNjIGluXG4gICAgICAgIGxldCBwY3RmX2xvYyA9IHNlbGYjbG9jYXRpb24gcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY3RmX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgcGN0Zl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjdGZfbG9jXCIsIHBjdGZfbG9jKTtcbiAgICAgICAgICAgIChcInBjdGZfYXR0cmlidXRlc1wiLCBwY3RmX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgOiBjbGFzc190eXBlX2ZpZWxkX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3RmX2luaGVyaXQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3R5cGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2luaGVyaXRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNtdXRhYmxlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl92YWxcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgYyBpblxuICAgICAgICAgICAgICAgIGxldCBkID0gc2VsZiNjb3JlX3R5cGUgZCBpblxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiOyBjOyBkIF0pXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGN0Zl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBiIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGIgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2NvbnN0cmFpbnRcIiBbIGEgXVxuICAgICAgICB8IFBjdGZfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY3RmX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUGN0Zl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBhIF1cblxuICAgIG1ldGhvZCBjbGFzc19pbmZvcyA6ICdhLiAoJ2EgLT4gJ3JlcykgLT4gJ2EgY2xhc3NfaW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2FcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgcGNpX3ZpcnQgaW5cbiAgICAgICAgbGV0IHBjaV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBiIGluXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgcGNpX3BhcmFtc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcGNpX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwY2lfbmFtZSBpblxuICAgICAgICBsZXQgcGNpX2V4cHIgPSBfYSBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gcGNpX2xvYyBpblxuICAgICAgICBsZXQgcGNpX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcGNpX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwY2lfdmlydFwiLCBwY2lfdmlydCk7XG4gICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIHBjaV9wYXJhbXMpO1xuICAgICAgICAgICAgKFwicGNpX25hbWVcIiwgcGNpX25hbWUpO1xuICAgICAgICAgICAgKFwicGNpX2V4cHJcIiwgcGNpX2V4cHIpO1xuICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBwY2lfbG9jKTtcbiAgICAgICAgICAgIChcInBjaV9hdHRyaWJ1dGVzXCIsIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVzY3JpcHRpb24gOiBjbGFzc19kZXNjcmlwdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9kZWNsYXJhdGlvbiA6IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBzZWxmI2NsYXNzX2luZm9zIHNlbGYjY2xhc3NfdHlwZVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHIgOiBjbGFzc19leHByIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgcGNsX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBjbF9sb2MgaW5cbiAgICAgICAgbGV0IHBjbF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGNsX2Rlc2NcIiwgcGNsX2Rlc2MpO1xuICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBwY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBjbF9hdHRyaWJ1dGVzXCIsIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwcl9kZXNjIDogY2xhc3NfZXhwcl9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNsX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2NvbnN0clwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX3N0cnVjdHVyZVwiIFsgYSBdXG4gICAgICAgIHwgUGNsX2Z1biAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gYyBpblxuICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NsYXNzX2V4cHIgZCBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfZnVuXCIgWyBhOyBiOyBjOyBkIF1cbiAgICAgICAgfCBQY2xfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGIgaW5cbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgWyBhOyBiIF0pXG4gICAgICAgICAgICAgICAgYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2FwcGx5XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQY2xfbGV0IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZXhwciBjIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9sZXRcIiBbIGE7IGI7IGMgXVxuICAgICAgICB8IFBjbF9jb25zdHJhaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX2V4cHIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NsYXNzX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2xfY29uc3RyYWludFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGNsX2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUGNsX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjbF9vcGVuXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBjbGFzc19zdHJ1Y3R1cmUgOiBjbGFzc19zdHJ1Y3R1cmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwY3N0cl9zZWxmOyBwY3N0cl9maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzdHJfc2VsZiA9IHNlbGYjcGF0dGVybiBwY3N0cl9zZWxmIGluXG4gICAgICAgIGxldCBwY3N0cl9maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc19maWVsZCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbIChcInBjc3RyX3NlbGZcIiwgcGNzdHJfc2VsZik7IChcInBjc3RyX2ZpZWxkc1wiLCBwY3N0cl9maWVsZHMpIF1cblxuICAgIG1ldGhvZCBjbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIHBjZl9kZXNjIGluXG4gICAgICAgIGxldCBwY2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBwY2ZfbG9jIGluXG4gICAgICAgIGxldCBwY2ZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBjZl9kZXNjXCIsIHBjZl9kZXNjKTtcbiAgICAgICAgICAgIChcInBjZl9sb2NcIiwgcGNmX2xvYyk7XG4gICAgICAgICAgICAoXCJwY2ZfYXR0cmlidXRlc1wiLCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2Rlc2MgOiBjbGFzc19maWVsZF9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUGNmX2luaGVyaXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xvYyBzZWxmI3N0cmluZykgYyBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5oZXJpdFwiIFsgYTsgYjsgYyBdXG4gICAgICAgIHwgUGNmX3ZhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjbXV0YWJsZV9mbGFnIGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjY2xhc3NfZmllbGRfa2luZCBjIGluXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBbIGE7IGI7IGMgXSlcbiAgICAgICAgICAgICAgICBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfdmFsXCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfbWV0aG9kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGMgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYjsgYyBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9tZXRob2RcIiBbIGEgXVxuICAgICAgICB8IFBjZl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGIgaW5cbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIFsgYTsgYiBdKVxuICAgICAgICAgICAgICAgIGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9jb25zdHJhaW50XCIgWyBhIF1cbiAgICAgICAgfCBQY2ZfaW5pdGlhbGl6ZXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQY2ZfaW5pdGlhbGl6ZXJcIiBbIGEgXVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBjZl9leHRlbnNpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBjZl9leHRlbnNpb25cIiBbIGEgXVxuXG4gICAgbWV0aG9kIGNsYXNzX2ZpZWxkX2tpbmQgOiBjbGFzc19maWVsZF9raW5kIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgQ2ZrX3ZpcnR1YWwgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma192aXJ0dWFsXCIgWyBhIF1cbiAgICAgICAgfCBDZmtfY29uY3JldGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIkNma19jb25jcmV0ZVwiIFsgYTsgYiBdXG5cbiAgICBtZXRob2QgY2xhc3NfZGVjbGFyYXRpb24gOiBjbGFzc19kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSAtPiAncmVzID1cbiAgICAgIGZ1biB7IHBtdHlfZGVzYzsgcG10eV9sb2M7IHBtdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwbXR5X2Rlc2MgPSBzZWxmI21vZHVsZV90eXBlX2Rlc2MgcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gcG10eV9sb2MgaW5cbiAgICAgICAgbGV0IHBtdHlfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbXR5X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXR5X2Rlc2NcIiwgcG10eV9kZXNjKTtcbiAgICAgICAgICAgIChcInBtdHlfbG9jXCIsIHBtdHlfbG9jKTtcbiAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBwbXR5X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjIDogbW9kdWxlX3R5cGVfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBtdHlfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2lkZW50XCIgWyBhIF1cbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV9zaWduYXR1cmVcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2Z1bmN0b3JcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3dpdGhfY29uc3RyYWludCBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfd2l0aFwiIFsgYTsgYiBdXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG10eV90eXBlb2ZcIiBbIGEgXVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbXR5X2V4dGVuc2lvblwiIFsgYSBdXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtdHlfYWxpYXNcIiBbIGEgXVxuXG4gICAgbWV0aG9kIGZ1bmN0b3JfcGFyYW1ldGVyIDogZnVuY3Rvcl9wYXJhbWV0ZXIgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBVbml0IC0+IHNlbGYjY29uc3RyIFwiVW5pdFwiIFtdXG4gICAgICAgIHwgTmFtZWQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiTmFtZWRcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6IHNpZ25hdHVyZSAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHNpZ19kZXNjOyBwc2lnX2xvYyB9IC0+XG4gICAgICAgIGxldCBwc2lnX2Rlc2MgPSBzZWxmI3NpZ25hdHVyZV9pdGVtX2Rlc2MgcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gcHNpZ19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwc2lnX2Rlc2NcIiwgcHNpZ19kZXNjKTsgKFwicHNpZ19sb2NcIiwgcHNpZ19sb2MpIF1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbV9kZXNjIDogc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBzaWdfdmFsdWUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ192YWx1ZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ190eXBlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3JlY19mbGFnIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHNpZ190eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ190eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdWxlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX21vZHN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfc3Vic3RpdHV0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2RzdWJzdFwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlc3Vic3QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfb3BlbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZXNjcmlwdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfb3BlblwiIFsgYSBdXG4gICAgICAgIHwgUHNpZ19pbmNsdWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNpbmNsdWRlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19pbmNsdWRlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc2lnX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHNpZ19hdHRyaWJ1dGVcIiBbIGEgXVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYXR0cmlidXRlcyBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzaWdfZXh0ZW5zaW9uXCIgWyBhOyBiIF1cblxuICAgIG1ldGhvZCBtb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWRfbmFtZTsgcG1kX3R5cGU7IHBtZF9hdHRyaWJ1dGVzOyBwbWRfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtZF9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIHBtZF90eXBlIGluXG4gICAgICAgIGxldCBwbWRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1kX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1kX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtZF9uYW1lXCIsIHBtZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtZF90eXBlXCIsIHBtZF90eXBlKTtcbiAgICAgICAgICAgIChcInBtZF9hdHRyaWJ1dGVzXCIsIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtZF9sb2NcIiwgcG1kX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9zdWJzdGl0dXRpb24gOiBtb2R1bGVfc3Vic3RpdHV0aW9uIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXNfbmFtZSBpblxuICAgICAgICBsZXQgcG1zX21hbmlmZXN0ID0gc2VsZiNsb25naWRlbnRfbG9jIHBtc19tYW5pZmVzdCBpblxuICAgICAgICBsZXQgcG1zX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIHBtc19sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXNfbmFtZVwiLCBwbXNfbmFtZSk7XG4gICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgcG1zX21hbmlmZXN0KTtcbiAgICAgICAgICAgIChcInBtc19hdHRyaWJ1dGVzXCIsIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtc19sb2NcIiwgcG1zX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIDogbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbXRkX25hbWU7IHBtdGRfdHlwZTsgcG10ZF9hdHRyaWJ1dGVzOyBwbXRkX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbXRkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwbXRkX25hbWUgaW5cbiAgICAgICAgbGV0IHBtdGRfdHlwZSA9IHNlbGYjb3B0aW9uIHNlbGYjbW9kdWxlX3R5cGUgcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG10ZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbXRkX2xvYyA9IHNlbGYjbG9jYXRpb24gcG10ZF9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmRcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgcG10ZF9uYW1lKTtcbiAgICAgICAgICAgIChcInBtdGRfdHlwZVwiLCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgKFwicG10ZF9hdHRyaWJ1dGVzXCIsIHBtdGRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBwbXRkX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3MgOiAnYS4gKCdhIC0+ICdyZXMpIC0+ICdhIG9wZW5faW5mb3MgLT4gJ3JlcyA9XG4gICAgICBmdW4gX2EgeyBwb3Blbl9leHByOyBwb3Blbl9vdmVycmlkZTsgcG9wZW5fbG9jOyBwb3Blbl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBvcGVuX2V4cHIgPSBfYSBwb3Blbl9leHByIGluXG4gICAgICAgIGxldCBwb3Blbl9vdmVycmlkZSA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBwb3Blbl9sb2MgaW5cbiAgICAgICAgbGV0IHBvcGVuX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG9wZW5fYXR0cmlidXRlcyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBvcGVuX2V4cHJcIiwgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAoXCJwb3Blbl9vdmVycmlkZVwiLCBwb3Blbl9vdmVycmlkZSk7XG4gICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgcG9wZW5fbG9jKTtcbiAgICAgICAgICAgIChcInBvcGVuX2F0dHJpYnV0ZXNcIiwgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG9wZW5fZGVzY3JpcHRpb24gOiBvcGVuX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbG9uZ2lkZW50X2xvY1xuXG4gICAgbWV0aG9kIG9wZW5fZGVjbGFyYXRpb24gOiBvcGVuX2RlY2xhcmF0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNvcGVuX2luZm9zIHNlbGYjbW9kdWxlX2V4cHJcblxuICAgIG1ldGhvZCBpbmNsdWRlX2luZm9zIDogJ2EuICgnYSAtPiAncmVzKSAtPiAnYSBpbmNsdWRlX2luZm9zIC0+ICdyZXMgPVxuICAgICAgZnVuIF9hIHsgcGluY2xfbW9kOyBwaW5jbF9sb2M7IHBpbmNsX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGluY2xfbW9kID0gX2EgcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBpbmNsX2xvYyBpblxuICAgICAgICBsZXQgcGluY2xfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwaW5jbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGluY2xfbW9kXCIsIHBpbmNsX21vZCk7XG4gICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgcGluY2xfbG9jKTtcbiAgICAgICAgICAgIChcInBpbmNsX2F0dHJpYnV0ZXNcIiwgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIGluY2x1ZGVfZGVzY3JpcHRpb24gOiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+ICdyZXMgPVxuICAgICAgc2VsZiNpbmNsdWRlX2luZm9zIHNlbGYjbW9kdWxlX3R5cGVcblxuICAgIG1ldGhvZCBpbmNsdWRlX2RlY2xhcmF0aW9uIDogaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2Qgd2l0aF9jb25zdHJhaW50IDogd2l0aF9jb25zdHJhaW50IC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHdpdGhfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHdpdGhfbW9kdWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R1bGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX21vZHR5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQd2l0aF9tb2R0eXBlc3Vic3RcIiBbIGE7IGIgXVxuICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfdHlwZXN1YnN0XCIgWyBhOyBiIF1cbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHdpdGhfbW9kc3Vic3RcIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbW9kX2Rlc2M7IHBtb2RfbG9jOyBwbW9kX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcG1vZF9kZXNjID0gc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHBtb2RfZGVzYyBpblxuICAgICAgICBsZXQgcG1vZF9sb2MgPSBzZWxmI2xvY2F0aW9uIHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgcG1vZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIHBtb2RfZGVzYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2xvY1wiLCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAoXCJwbW9kX2F0dHJpYnV0ZXNcIiwgcG1vZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICBdXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHJfZGVzYyA6IG1vZHVsZV9leHByX2Rlc2MgLT4gJ3JlcyA9XG4gICAgICBmdW4geCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9pZGVudFwiIFsgYSBdXG4gICAgICAgIHwgUG1vZF9zdHJ1Y3R1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cnVjdHVyZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2Rfc3RydWN0dXJlXCIgWyBhIF1cbiAgICAgICAgfCBQbW9kX2Z1bmN0b3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZnVuY3Rvcl9wYXJhbWV0ZXIgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF9mdW5jdG9yXCIgWyBhOyBiIF1cbiAgICAgICAgfCBQbW9kX2FwcGx5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBiIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBtb2RfYXBwbHlcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2NvbnN0cmFpbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBtb2RfdW5wYWNrIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHByZXNzaW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUG1vZF91bnBhY2tcIiBbIGEgXVxuICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQbW9kX2V4dGVuc2lvblwiIFsgYSBdXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlIDogc3RydWN0dXJlIC0+ICdyZXMgPSBzZWxmI2xpc3Qgc2VsZiNzdHJ1Y3R1cmVfaXRlbVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtIDogc3RydWN0dXJlX2l0ZW0gLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBwc3RyX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBzdHJfbG9jID0gc2VsZiNsb2NhdGlvbiBwc3RyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZCBbIChcInBzdHJfZGVzY1wiLCBwc3RyX2Rlc2MpOyAoXCJwc3RyX2xvY1wiLCBwc3RyX2xvYykgXVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZV9pdGVtX2Rlc2MgOiBzdHJ1Y3R1cmVfaXRlbV9kZXNjIC0+ICdyZXMgPVxuICAgICAgZnVuIHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V2YWxcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl92YWx1ZVwiIFsgYTsgYiBdXG4gICAgICAgIHwgUHN0cl9wcmltaXRpdmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhbHVlX2Rlc2NyaXB0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9wcmltaXRpdmVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI3R5cGVfZGVjbGFyYXRpb24gYiBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3R5cGVcIiBbIGE7IGIgXVxuICAgICAgICB8IFBzdHJfdHlwZXh0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0eXBlX2V4dGVuc2lvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfdHlwZXh0XCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2V4Y2VwdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leGNlcHRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2V4Y2VwdGlvblwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9iaW5kaW5nIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9tb2R1bGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbW9kdWxlX2JpbmRpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX3JlY21vZHVsZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBzdHJfbW9kdHlwZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9vcGVuIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9vcGVuXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2NsYXNzXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2RlY2xhcmF0aW9uIGEgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9jbGFzc190eXBlXCIgWyBhIF1cbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2luY2x1ZGVcIiBbIGEgXVxuICAgICAgICB8IFBzdHJfYXR0cmlidXRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhdHRyaWJ1dGUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQc3RyX2F0dHJpYnV0ZVwiIFsgYSBdXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUHN0cl9leHRlbnNpb25cIiBbIGE7IGIgXVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiB2YWx1ZV9iaW5kaW5nIC0+ICdyZXMgPVxuICAgICAgZnVuIHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2Yl9wYXQgPSBzZWxmI3BhdHRlcm4gcHZiX3BhdCBpblxuICAgICAgICBsZXQgcHZiX2V4cHIgPSBzZWxmI2V4cHJlc3Npb24gcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIHB2Yl9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwdmJfbG9jID0gc2VsZiNsb2NhdGlvbiBwdmJfbG9jIGluXG4gICAgICAgIHNlbGYjcmVjb3JkXG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicHZiX3BhdFwiLCBwdmJfcGF0KTtcbiAgICAgICAgICAgIChcInB2Yl9leHByXCIsIHB2Yl9leHByKTtcbiAgICAgICAgICAgIChcInB2Yl9hdHRyaWJ1dGVzXCIsIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInB2Yl9sb2NcIiwgcHZiX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIG1vZHVsZV9iaW5kaW5nIDogbW9kdWxlX2JpbmRpbmcgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwbWJfbmFtZTsgcG1iX2V4cHI7IHBtYl9hdHRyaWJ1dGVzOyBwbWJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBtYl9uYW1lID0gc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBwbWJfbmFtZSBpblxuICAgICAgICBsZXQgcG1iX2V4cHIgPSBzZWxmI21vZHVsZV9leHByIHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBwbWJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG1iX2xvYyA9IHNlbGYjbG9jYXRpb24gcG1iX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBtYl9uYW1lXCIsIHBtYl9uYW1lKTtcbiAgICAgICAgICAgIChcInBtYl9leHByXCIsIHBtYl9leHByKTtcbiAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIHBtYl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIChcInBtYl9sb2NcIiwgcG1iX2xvYyk7XG4gICAgICAgICAgXVxuXG4gICAgbWV0aG9kIHRvcGxldmVsX3BocmFzZSA6IHRvcGxldmVsX3BocmFzZSAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB0b3BfZGVmIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJ1Y3R1cmUgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQdG9wX2RlZlwiIFsgYSBdXG4gICAgICAgIHwgUHRvcF9kaXIgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3RvcGxldmVsX2RpcmVjdGl2ZSBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlB0b3BfZGlyXCIgWyBhIF1cblxuICAgIG1ldGhvZCB0b3BsZXZlbF9kaXJlY3RpdmUgOiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyX25hbWU7IHBkaXJfYXJnOyBwZGlyX2xvYyB9IC0+XG4gICAgICAgIGxldCBwZGlyX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBwZGlyX25hbWUgaW5cbiAgICAgICAgbGV0IHBkaXJfYXJnID0gc2VsZiNvcHRpb24gc2VsZiNkaXJlY3RpdmVfYXJndW1lbnQgcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyX2xvYyBpblxuICAgICAgICBzZWxmI3JlY29yZFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChcInBkaXJfbmFtZVwiLCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgKFwicGRpcl9hcmdcIiwgcGRpcl9hcmcpO1xuICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgcGRpcl9sb2MpO1xuICAgICAgICAgIF1cblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnQgOiBkaXJlY3RpdmVfYXJndW1lbnQgLT4gJ3JlcyA9XG4gICAgICBmdW4geyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgcGRpcmFfZGVzYyBpblxuICAgICAgICBsZXQgcGRpcmFfbG9jID0gc2VsZiNsb2NhdGlvbiBwZGlyYV9sb2MgaW5cbiAgICAgICAgc2VsZiNyZWNvcmQgWyAoXCJwZGlyYV9kZXNjXCIsIHBkaXJhX2Rlc2MpOyAoXCJwZGlyYV9sb2NcIiwgcGRpcmFfbG9jKSBdXG5cbiAgICBtZXRob2QgZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgOiBkaXJlY3RpdmVfYXJndW1lbnRfZGVzYyAtPiAncmVzID1cbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBkaXJfc3RyaW5nIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgYSBpblxuICAgICAgICAgICAgc2VsZiNjb25zdHIgXCJQZGlyX3N0cmluZ1wiIFsgYSBdXG4gICAgICAgIHwgUGRpcl9pbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNjaGFyIGIgaW5cbiAgICAgICAgICAgIHNlbGYjY29uc3RyIFwiUGRpcl9pbnRcIiBbIGE7IGIgXVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfaWRlbnRcIiBbIGEgXVxuICAgICAgICB8IFBkaXJfYm9vbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYm9vbCBhIGluXG4gICAgICAgICAgICBzZWxmI2NvbnN0ciBcIlBkaXJfYm9vbFwiIFsgYSBdXG5cbiAgICBtZXRob2QgY2FzZXMgOiBjYXNlcyAtPiAncmVzID0gc2VsZiNsaXN0IHNlbGYjY2FzZVxuICBlbmRcblxuY2xhc3MgdmlydHVhbCBbJ2N0eCwgJ3Jlc10gbGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICdjdHggLT4gYm9vbCAtPiBib29sICogJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAnY3R4IC0+IGNoYXIgLT4gY2hhciAqICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAnY3R4IC0+IGludCAtPiBpbnQgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBsaXN0XG4gICAgICAgIDogJ2EuICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT4gJ2N0eCAtPiAnYSBsaXN0IC0+ICdhIGxpc3QgKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBvcHRpb25cbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIG9wdGlvbiAtPiAnYSBvcHRpb24gKiAncmVzXG5cbiAgICBtZXRob2QgdmlydHVhbCBzdHJpbmcgOiAnY3R4IC0+IHN0cmluZyAtPiBzdHJpbmcgKiAncmVzXG5cbiAgICBtZXRob2QgcG9zaXRpb24gOiAnY3R4IC0+IHBvc2l0aW9uIC0+IHBvc2l0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG9zX2ZuYW1lOyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW0gfSAtPlxuICAgICAgICBsZXQgcG9zX2ZuYW1lID0gc2VsZiNzdHJpbmcgY3R4IHBvc19mbmFtZSBpblxuICAgICAgICBsZXQgcG9zX2xudW0gPSBzZWxmI2ludCBjdHggcG9zX2xudW0gaW5cbiAgICAgICAgbGV0IHBvc19ib2wgPSBzZWxmI2ludCBjdHggcG9zX2JvbCBpblxuICAgICAgICBsZXQgcG9zX2NudW0gPSBzZWxmI2ludCBjdHggcG9zX2NudW0gaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwb3NfZm5hbWUgPSBTdGRsaWIuZnN0IHBvc19mbmFtZTtcbiAgICAgICAgICAgIHBvc19sbnVtID0gU3RkbGliLmZzdCBwb3NfbG51bTtcbiAgICAgICAgICAgIHBvc19ib2wgPSBTdGRsaWIuZnN0IHBvc19ib2w7XG4gICAgICAgICAgICBwb3NfY251bSA9IFN0ZGxpYi5mc3QgcG9zX2NudW07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG9zX2ZuYW1lXCIsIFN0ZGxpYi5zbmQgcG9zX2ZuYW1lKTtcbiAgICAgICAgICAgICAgKFwicG9zX2xudW1cIiwgU3RkbGliLnNuZCBwb3NfbG51bSk7XG4gICAgICAgICAgICAgIChcInBvc19ib2xcIiwgU3RkbGliLnNuZCBwb3NfYm9sKTtcbiAgICAgICAgICAgICAgKFwicG9zX2NudW1cIiwgU3RkbGliLnNuZCBwb3NfY251bSk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBsb2NhdGlvbiA6ICdjdHggLT4gbG9jYXRpb24gLT4gbG9jYXRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBsb2Nfc3RhcnQ7IGxvY19lbmQ7IGxvY19naG9zdCB9IC0+XG4gICAgICAgIGxldCBsb2Nfc3RhcnQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2Nfc3RhcnQgaW5cbiAgICAgICAgbGV0IGxvY19lbmQgPSBzZWxmI3Bvc2l0aW9uIGN0eCBsb2NfZW5kIGluXG4gICAgICAgIGxldCBsb2NfZ2hvc3QgPSBzZWxmI2Jvb2wgY3R4IGxvY19naG9zdCBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxvY19zdGFydCA9IFN0ZGxpYi5mc3QgbG9jX3N0YXJ0O1xuICAgICAgICAgICAgbG9jX2VuZCA9IFN0ZGxpYi5mc3QgbG9jX2VuZDtcbiAgICAgICAgICAgIGxvY19naG9zdCA9IFN0ZGxpYi5mc3QgbG9jX2dob3N0O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImxvY19zdGFydFwiLCBTdGRsaWIuc25kIGxvY19zdGFydCk7XG4gICAgICAgICAgICAgIChcImxvY19lbmRcIiwgU3RkbGliLnNuZCBsb2NfZW5kKTtcbiAgICAgICAgICAgICAgKFwibG9jX2dob3N0XCIsIFN0ZGxpYi5zbmQgbG9jX2dob3N0KTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGxvY2F0aW9uX3N0YWNrIDogJ2N0eCAtPiBsb2NhdGlvbl9zdGFjayAtPiBsb2NhdGlvbl9zdGFjayAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjbG9jYXRpb25cblxuICAgIG1ldGhvZCBsb2NcbiAgICAgICAgOiAnYS4gKCdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzKSAtPiAnY3R4IC0+ICdhIGxvYyAtPiAnYSBsb2MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyB0eHQ7IGxvYyB9IC0+XG4gICAgICAgIGxldCB0eHQgPSBfYSBjdHggdHh0IGluXG4gICAgICAgIGxldCBsb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBsb2MgaW5cbiAgICAgICAgKCB7IHR4dCA9IFN0ZGxpYi5mc3QgdHh0OyBsb2MgPSBTdGRsaWIuZnN0IGxvYyB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eCBbIChcInR4dFwiLCBTdGRsaWIuc25kIHR4dCk7IChcImxvY1wiLCBTdGRsaWIuc25kIGxvYykgXVxuICAgICAgICApXG5cbiAgICBtZXRob2QgbG9uZ2lkZW50IDogJ2N0eCAtPiBsb25naWRlbnQgLT4gbG9uZ2lkZW50ICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTGlkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIChMaWRlbnQgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIkxpZGVudFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgTGRvdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnQgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggTGRvdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMZG90XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBMYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50IGN0eCBiIGluXG4gICAgICAgICAgICAoIExhcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJMYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGxvbmdpZGVudF9sb2MgOiAnY3R4IC0+IGxvbmdpZGVudF9sb2MgLT4gbG9uZ2lkZW50X2xvYyAqICdyZXMgPVxuICAgICAgc2VsZiNsb2Mgc2VsZiNsb25naWRlbnRcblxuICAgIG1ldGhvZCByZWNfZmxhZyA6ICdjdHggLT4gcmVjX2ZsYWcgLT4gcmVjX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBkaXJlY3Rpb25fZmxhZyA6ICdjdHggLT4gZGlyZWN0aW9uX2ZsYWcgLT4gZGlyZWN0aW9uX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBwcml2YXRlX2ZsYWcgOiAnY3R4IC0+IHByaXZhdGVfZmxhZyAtPiBwcml2YXRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBtdXRhYmxlX2ZsYWcgOiAnY3R4IC0+IG11dGFibGVfZmxhZyAtPiBtdXRhYmxlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCB2aXJ0dWFsX2ZsYWcgOiAnY3R4IC0+IHZpcnR1YWxfZmxhZyAtPiB2aXJ0dWFsX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBvdmVycmlkZV9mbGFnIDogJ2N0eCAtPiBvdmVycmlkZV9mbGFnIC0+IG92ZXJyaWRlX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBjbG9zZWRfZmxhZyA6ICdjdHggLT4gY2xvc2VkX2ZsYWcgLT4gY2xvc2VkX2ZsYWcgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPiAoeCwgc2VsZiNvdGhlciBjdHggeClcblxuICAgIG1ldGhvZCBsYWJlbCA6ICdjdHggLT4gbGFiZWwgLT4gbGFiZWwgKiAncmVzID0gc2VsZiNzdHJpbmdcblxuICAgIG1ldGhvZCBhcmdfbGFiZWwgOiAnY3R4IC0+IGFyZ19sYWJlbCAtPiBhcmdfbGFiZWwgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb2xhYmVsIC0+IChOb2xhYmVsLCBzZWxmI2NvbnN0ciBjdHggXCJOb2xhYmVsXCIgW10pXG4gICAgICAgIHwgTGFiZWxsZWQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBMYWJlbGxlZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTGFiZWxsZWRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBPcHRpb25hbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9wdGlvbmFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPcHRpb25hbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHZhcmlhbmNlIDogJ2N0eCAtPiB2YXJpYW5jZSAtPiB2YXJpYW5jZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGluamVjdGl2aXR5IDogJ2N0eCAtPiBpbmplY3Rpdml0eSAtPiBpbmplY3Rpdml0eSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+ICh4LCBzZWxmI290aGVyIGN0eCB4KVxuXG4gICAgbWV0aG9kIGNvbnN0YW50IDogJ2N0eCAtPiBjb25zdGFudCAtPiBjb25zdGFudCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjb25zdF9pbnRlZ2VyIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNvbnN0X2ludGVnZXIgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2ludGVnZXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjb25zdF9jaGFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjaGFyIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjb25zdF9jaGFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY29uc3RfY2hhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjb25zdF9zdHJpbmcgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9jYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNvbnN0X3N0cmluZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjb25zdF9zdHJpbmdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY29uc3RfZmxvYXQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjY2hhciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY29uc3RfZmxvYXQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNvbnN0X2Zsb2F0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBhdHRyaWJ1dGUgOiAnY3R4IC0+IGF0dHJpYnV0ZSAtPiBhdHRyaWJ1dGUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgfSAtPlxuICAgICAgICBsZXQgYXR0cl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGF0dHJfbmFtZSBpblxuICAgICAgICBsZXQgYXR0cl9wYXlsb2FkID0gc2VsZiNwYXlsb2FkIGN0eCBhdHRyX3BheWxvYWQgaW5cbiAgICAgICAgbGV0IGF0dHJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggYXR0cl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBhdHRyX25hbWUgPSBTdGRsaWIuZnN0IGF0dHJfbmFtZTtcbiAgICAgICAgICAgIGF0dHJfcGF5bG9hZCA9IFN0ZGxpYi5mc3QgYXR0cl9wYXlsb2FkO1xuICAgICAgICAgICAgYXR0cl9sb2MgPSBTdGRsaWIuZnN0IGF0dHJfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcImF0dHJfbmFtZVwiLCBTdGRsaWIuc25kIGF0dHJfbmFtZSk7XG4gICAgICAgICAgICAgIChcImF0dHJfcGF5bG9hZFwiLCBTdGRsaWIuc25kIGF0dHJfcGF5bG9hZCk7XG4gICAgICAgICAgICAgIChcImF0dHJfbG9jXCIsIFN0ZGxpYi5zbmQgYXR0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgZXh0ZW5zaW9uIDogJ2N0eCAtPiBleHRlbnNpb24gLT4gZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgIGxldCBiID0gc2VsZiNwYXlsb2FkIGN0eCBiIGluXG4gICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGF0dHJpYnV0ZXMgOiAnY3R4IC0+IGF0dHJpYnV0ZXMgLT4gYXR0cmlidXRlcyAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjYXR0cmlidXRlXG5cbiAgICBtZXRob2QgcGF5bG9hZCA6ICdjdHggLT4gcGF5bG9hZCAtPiBwYXlsb2FkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUFN0ciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFN0ciAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFN0clwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFNpZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFNpZyAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFNpZ1wiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFR5cCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoUFR5cCAoU3RkbGliLmZzdCBhKSwgc2VsZiNjb25zdHIgY3R4IFwiUFR5cFwiIFsgU3RkbGliLnNuZCBhIF0pXG4gICAgICAgIHwgUFBhdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQUGF0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBQYXRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGNvcmVfdHlwZSA6ICdjdHggLT4gY29yZV90eXBlIC0+IGNvcmVfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB0eXBfZGVzYzsgcHR5cF9sb2M7IHB0eXBfbG9jX3N0YWNrOyBwdHlwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHR5cF9kZXNjID0gc2VsZiNjb3JlX3R5cGVfZGVzYyBjdHggcHR5cF9kZXNjIGluXG4gICAgICAgIGxldCBwdHlwX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBfbG9jIGluXG4gICAgICAgIGxldCBwdHlwX2xvY19zdGFjayA9IHNlbGYjbG9jYXRpb25fc3RhY2sgY3R4IHB0eXBfbG9jX3N0YWNrIGluXG4gICAgICAgIGxldCBwdHlwX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBfZGVzYyA9IFN0ZGxpYi5mc3QgcHR5cF9kZXNjO1xuICAgICAgICAgICAgcHR5cF9sb2MgPSBTdGRsaWIuZnN0IHB0eXBfbG9jO1xuICAgICAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBTdGRsaWIuZnN0IHB0eXBfbG9jX3N0YWNrO1xuICAgICAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5cF9kZXNjXCIsIFN0ZGxpYi5zbmQgcHR5cF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicHR5cF9sb2NcIiwgU3RkbGliLnNuZCBwdHlwX2xvYyk7XG4gICAgICAgICAgICAgIChcInB0eXBfbG9jX3N0YWNrXCIsIFN0ZGxpYi5zbmQgcHR5cF9sb2Nfc3RhY2spO1xuICAgICAgICAgICAgICAoXCJwdHlwX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlwX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY29yZV90eXBlX2Rlc2MgOiAnY3R4IC0+IGNvcmVfdHlwZV9kZXNjIC0+IGNvcmVfdHlwZV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cF9hbnkgLT4gKFB0eXBfYW55LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FueVwiIFtdKVxuICAgICAgICB8IFB0eXBfdmFyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF92YXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdmFyXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cF9hcnJvdyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQdHlwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0eXBfdHVwbGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfdHVwbGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwX2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9vYmplY3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI29iamVjdF9maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfb2JqZWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfb2JqZWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX2NsYXNzIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB0eXBfY2xhc3MgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9jbGFzc1wiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHR5cF9hbGlhcyAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNzdHJpbmcgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHR5cF9hbGlhcyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwX2FsaWFzXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3ZhcmlhbnQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3Jvd19maWVsZCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nsb3NlZF9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIChzZWxmI2xpc3Qgc2VsZiNsYWJlbCkgY3R4IGMgaW5cbiAgICAgICAgICAgICggUHR5cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF92YXJpYW50XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUHR5cF9wb2x5IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQdHlwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHR5cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQdHlwX3BhY2thZ2UgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3BhY2thZ2VfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwX3BhY2thZ2UgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfcGFja2FnZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0eXBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0eXBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgcGFja2FnZV90eXBlIDogJ2N0eCAtPiBwYWNrYWdlX3R5cGUgLT4gcGFja2FnZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggYlxuICAgICAgICBpblxuICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGQgOiAnY3R4IC0+IHJvd19maWVsZCAtPiByb3dfZmllbGQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwcmZfZGVzYzsgcHJmX2xvYzsgcHJmX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHJmX2Rlc2MgPSBzZWxmI3Jvd19maWVsZF9kZXNjIGN0eCBwcmZfZGVzYyBpblxuICAgICAgICBsZXQgcHJmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHByZl9sb2MgaW5cbiAgICAgICAgbGV0IHByZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcmZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHByZl9kZXNjID0gU3RkbGliLmZzdCBwcmZfZGVzYztcbiAgICAgICAgICAgIHByZl9sb2MgPSBTdGRsaWIuZnN0IHByZl9sb2M7XG4gICAgICAgICAgICBwcmZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHJmX2Rlc2NcIiwgU3RkbGliLnNuZCBwcmZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInByZl9sb2NcIiwgU3RkbGliLnNuZCBwcmZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHJmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwcmZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCByb3dfZmllbGRfZGVzYyA6ICdjdHggLT4gcm93X2ZpZWxkX2Rlc2MgLT4gcm93X2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBSdGFnIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjYm9vbCBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUnRhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlJ0YWdcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBSaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFJpbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJSaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZCA6ICdjdHggLT4gb2JqZWN0X2ZpZWxkIC0+IG9iamVjdF9maWVsZCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBvZl9kZXNjOyBwb2ZfbG9jOyBwb2ZfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb2ZfZGVzYyA9IHNlbGYjb2JqZWN0X2ZpZWxkX2Rlc2MgY3R4IHBvZl9kZXNjIGluXG4gICAgICAgIGxldCBwb2ZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9mX2xvYyBpblxuICAgICAgICBsZXQgcG9mX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBvZl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9mX2Rlc2MgPSBTdGRsaWIuZnN0IHBvZl9kZXNjO1xuICAgICAgICAgICAgcG9mX2xvYyA9IFN0ZGxpYi5mc3QgcG9mX2xvYztcbiAgICAgICAgICAgIHBvZl9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb2ZfZGVzY1wiLCBTdGRsaWIuc25kIHBvZl9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG9mX2xvY1wiLCBTdGRsaWIuc25kIHBvZl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb2ZfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBvZl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9iamVjdF9maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBvYmplY3RfZmllbGRfZGVzYyAtPiBvYmplY3RfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE90YWcgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggT3RhZyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPdGFnXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBPaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIE9pbmhlcml0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJPaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm4gOiAnY3R4IC0+IHBhdHRlcm4gLT4gcGF0dGVybiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBwYXRfZGVzYzsgcHBhdF9sb2M7IHBwYXRfbG9jX3N0YWNrOyBwcGF0X2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcHBhdF9kZXNjID0gc2VsZiNwYXR0ZXJuX2Rlc2MgY3R4IHBwYXRfZGVzYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwcGF0X2xvYyBpblxuICAgICAgICBsZXQgcHBhdF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwcGF0X2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcHBhdF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwcGF0X2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwcGF0X2Rlc2MgPSBTdGRsaWIuZnN0IHBwYXRfZGVzYztcbiAgICAgICAgICAgIHBwYXRfbG9jID0gU3RkbGliLmZzdCBwcGF0X2xvYztcbiAgICAgICAgICAgIHBwYXRfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwcGF0X2xvY19zdGFjaztcbiAgICAgICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBwYXRfZGVzY1wiLCBTdGRsaWIuc25kIHBwYXRfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBwYXRfbG9jXCIsIFN0ZGxpYi5zbmQgcHBhdF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwcGF0X2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBwYXRfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicHBhdF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcHBhdF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIHBhdHRlcm5fZGVzYyA6ICdjdHggLT4gcGF0dGVybl9kZXNjIC0+IHBhdHRlcm5fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBwYXRfYW55IC0+IChQcGF0X2FueSwgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hbnlcIiBbXSlcbiAgICAgICAgfCBQcGF0X3ZhciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfYWxpYXMgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2FsaWFzIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfYWxpYXNcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQcGF0X2ludGVydmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RhbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9pbnRlcnZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2ludGVydmFsXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgKCBQcGF0X3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI29wdGlvblxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3QgKHNlbGYjbG9jIHNlbGYjc3RyaW5nKSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBwYXRfY29uc3RydWN0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfY29uc3RydWN0XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNvcHRpb24gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfdmFyaWFudCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3ZhcmlhbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBwYXRfcmVjb3JkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcGF0dGVybiBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNjbG9zZWRfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X3JlY29yZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3JlY29yZFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHBhdF9hcnJheSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI3BhdHRlcm4gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9hcnJheSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9hcnJheVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfb3IgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3BhdHRlcm4gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHBhdF9vciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29yXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQcGF0X2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUHBhdF90eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdHlwZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF90eXBlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9sYXp5IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfbGF6eSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHBhdF9sYXp5XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF91bnBhY2sgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfdW5wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X3VucGFja1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXhjZXB0aW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNwYXR0ZXJuIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBwYXRfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBwYXRfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHBhdF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBwYXRfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHBhdF9vcGVuIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNwYXR0ZXJuIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBwYXRfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQcGF0X29wZW5cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb24gOiAnY3R4IC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfbG9jX3N0YWNrOyBwZXhwX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGV4cF9kZXNjID0gc2VsZiNleHByZXNzaW9uX2Rlc2MgY3R4IHBleHBfZGVzYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwZXhwX2xvYyBpblxuICAgICAgICBsZXQgcGV4cF9sb2Nfc3RhY2sgPSBzZWxmI2xvY2F0aW9uX3N0YWNrIGN0eCBwZXhwX2xvY19zdGFjayBpblxuICAgICAgICBsZXQgcGV4cF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwZXhwX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZXhwX2Rlc2MgPSBTdGRsaWIuZnN0IHBleHBfZGVzYztcbiAgICAgICAgICAgIHBleHBfbG9jID0gU3RkbGliLmZzdCBwZXhwX2xvYztcbiAgICAgICAgICAgIHBleHBfbG9jX3N0YWNrID0gU3RkbGliLmZzdCBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHBfZGVzY1wiLCBTdGRsaWIuc25kIHBleHBfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBleHBfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4cF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXhwX2xvY19zdGFja1wiLCBTdGRsaWIuc25kIHBleHBfbG9jX3N0YWNrKTtcbiAgICAgICAgICAgICAgKFwicGV4cF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGV4cF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4cHJlc3Npb25fZGVzYyA6ICdjdHggLT4gZXhwcmVzc2lvbl9kZXNjIC0+IGV4cHJlc3Npb25fZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBleHBfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9pZGVudCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9pZGVudFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfY29uc3RhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvbnN0YW50IGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfY29uc3RhbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29uc3RhbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xldCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN2YWx1ZV9iaW5kaW5nIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfbGV0XCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9mdW5jdGlvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2FzZXMgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9mdW5jdGlvbiAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5jdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZnVuIChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNwYXR0ZXJuIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZXhwcmVzc2lvbiBjdHggZCBpblxuICAgICAgICAgICAgKCBQZXhwX2Z1biAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBleHBfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNhcmdfbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfbWF0Y2ggKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbWF0Y2ggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9tYXRjaFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF90cnkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2Nhc2VzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfdHJ5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdHJ5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3R1cGxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9jb25zdHJ1Y3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9jb25zdHJ1Y3QgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJ1Y3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfdmFyaWFudCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF92YXJpYW50IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdmFyaWFudFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9yZWNvcmQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9yZWNvcmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfZmllbGQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9maWVsZCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2ZpZWxkXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3NldGZpZWxkIChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX3NldGZpZWxkIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZXRmaWVsZFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfYXJyYXkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNleHByZXNzaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfYXJyYXkgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfYXJyYXlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHBfaWZ0aGVuZWxzZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfaWZ0aGVuZWxzZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfc2VxdWVuY2UgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9zZXF1ZW5jZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NlcXVlbmNlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX3doaWxlIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfd2hpbGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF93aGlsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9mb3IgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcGF0dGVybiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgIGxldCBjID0gc2VsZiNleHByZXNzaW9uIGN0eCBjIGluXG4gICAgICAgICAgICBsZXQgZCA9IHNlbGYjZGlyZWN0aW9uX2ZsYWcgY3R4IGQgaW5cbiAgICAgICAgICAgIGxldCBlID0gc2VsZiNleHByZXNzaW9uIGN0eCBlIGluXG4gICAgICAgICAgICAoIFBleHBfZm9yXG4gICAgICAgICAgICAgICAgKCBTdGRsaWIuZnN0IGEsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGIsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGMsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGQsXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuZnN0IGUgKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9mb3JcIlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYTtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYjtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgYztcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZDtcbiAgICAgICAgICAgICAgICAgIFN0ZGxpYi5zbmQgZTtcbiAgICAgICAgICAgICAgICBdIClcbiAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX2NvbnN0cmFpbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9jb25zdHJhaW50XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdXG4gICAgICAgICAgICApXG4gICAgICAgIHwgUGV4cF9jb2VyY2UgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NvcmVfdHlwZSBjdHggYyBpblxuICAgICAgICAgICAgKCBQZXhwX2NvZXJjZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfY29lcmNlXCJcbiAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApXG4gICAgICAgIHwgUGV4cF9zZW5kIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3NlbmQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9zZW5kXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX25ldyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX25ldyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9uZXdcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfc2V0aW5zdHZhciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3NldGluc3R2YXJcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX292ZXJyaWRlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQZXhwX292ZXJyaWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX292ZXJyaWRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGMgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRtb2R1bGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRleGNlcHRpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRleGNlcHRpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQZXhwX2Fzc2VydCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQZXhwX2Fzc2VydCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9hc3NlcnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX2xhenkgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sYXp5IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX2xhenlcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX3BvbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQZXhwX3BvbHkgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9wb2x5XCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQZXhwX29iamVjdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3Nfc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHBfb2JqZWN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX29iamVjdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfbmV3dHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNleHByZXNzaW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBleHBfbmV3dHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX25ld3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBleHBfcGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9wYWNrIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXhwX3BhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQZXhwX29wZW4gKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjb3Blbl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUGV4cF9vcGVuIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGV4cF9sZXRvcCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGV0b3AgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9sZXRvcCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGV4cF9sZXRvcFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGV4cF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPlxuICAgICAgICAgICAgKFBleHBfdW5yZWFjaGFibGUsIHNlbGYjY29uc3RyIGN0eCBcIlBleHBfdW5yZWFjaGFibGVcIiBbXSlcblxuICAgIG1ldGhvZCBjYXNlIDogJ2N0eCAtPiBjYXNlIC0+IGNhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY19saHM7IHBjX2d1YXJkOyBwY19yaHMgfSAtPlxuICAgICAgICBsZXQgcGNfbGhzID0gc2VsZiNwYXR0ZXJuIGN0eCBwY19saHMgaW5cbiAgICAgICAgbGV0IHBjX2d1YXJkID0gc2VsZiNvcHRpb24gc2VsZiNleHByZXNzaW9uIGN0eCBwY19ndWFyZCBpblxuICAgICAgICBsZXQgcGNfcmhzID0gc2VsZiNleHByZXNzaW9uIGN0eCBwY19yaHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY19saHMgPSBTdGRsaWIuZnN0IHBjX2xocztcbiAgICAgICAgICAgIHBjX2d1YXJkID0gU3RkbGliLmZzdCBwY19ndWFyZDtcbiAgICAgICAgICAgIHBjX3JocyA9IFN0ZGxpYi5mc3QgcGNfcmhzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjX2xoc1wiLCBTdGRsaWIuc25kIHBjX2xocyk7XG4gICAgICAgICAgICAgIChcInBjX2d1YXJkXCIsIFN0ZGxpYi5zbmQgcGNfZ3VhcmQpO1xuICAgICAgICAgICAgICAoXCJwY19yaHNcIiwgU3RkbGliLnNuZCBwY19yaHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbGV0b3AgOiAnY3R4IC0+IGxldG9wIC0+IGxldG9wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgbGV0XzsgYW5kczsgYm9keSB9IC0+XG4gICAgICAgIGxldCBsZXRfID0gc2VsZiNiaW5kaW5nX29wIGN0eCBsZXRfIGluXG4gICAgICAgIGxldCBhbmRzID0gc2VsZiNsaXN0IHNlbGYjYmluZGluZ19vcCBjdHggYW5kcyBpblxuICAgICAgICBsZXQgYm9keSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYm9keSBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIGxldF8gPSBTdGRsaWIuZnN0IGxldF87XG4gICAgICAgICAgICBhbmRzID0gU3RkbGliLmZzdCBhbmRzO1xuICAgICAgICAgICAgYm9keSA9IFN0ZGxpYi5mc3QgYm9keTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJsZXRfXCIsIFN0ZGxpYi5zbmQgbGV0Xyk7XG4gICAgICAgICAgICAgIChcImFuZHNcIiwgU3RkbGliLnNuZCBhbmRzKTtcbiAgICAgICAgICAgICAgKFwiYm9keVwiLCBTdGRsaWIuc25kIGJvZHkpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgYmluZGluZ19vcCA6ICdjdHggLT4gYmluZGluZ19vcCAtPiBiaW5kaW5nX29wICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGJvcF9vcDsgcGJvcF9wYXQ7IHBib3BfZXhwOyBwYm9wX2xvYyB9IC0+XG4gICAgICAgIGxldCBwYm9wX29wID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBib3Bfb3AgaW5cbiAgICAgICAgbGV0IHBib3BfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwYm9wX3BhdCBpblxuICAgICAgICBsZXQgcGJvcF9leHAgPSBzZWxmI2V4cHJlc3Npb24gY3R4IHBib3BfZXhwIGluXG4gICAgICAgIGxldCBwYm9wX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBib3BfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGJvcF9vcCA9IFN0ZGxpYi5mc3QgcGJvcF9vcDtcbiAgICAgICAgICAgIHBib3BfcGF0ID0gU3RkbGliLmZzdCBwYm9wX3BhdDtcbiAgICAgICAgICAgIHBib3BfZXhwID0gU3RkbGliLmZzdCBwYm9wX2V4cDtcbiAgICAgICAgICAgIHBib3BfbG9jID0gU3RkbGliLmZzdCBwYm9wX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwYm9wX29wXCIsIFN0ZGxpYi5zbmQgcGJvcF9vcCk7XG4gICAgICAgICAgICAgIChcInBib3BfcGF0XCIsIFN0ZGxpYi5zbmQgcGJvcF9wYXQpO1xuICAgICAgICAgICAgICAoXCJwYm9wX2V4cFwiLCBTdGRsaWIuc25kIHBib3BfZXhwKTtcbiAgICAgICAgICAgICAgKFwicGJvcF9sb2NcIiwgU3RkbGliLnNuZCBwYm9wX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB2YWx1ZV9kZXNjcmlwdGlvblxuICAgICAgICA6ICdjdHggLT4gdmFsdWVfZGVzY3JpcHRpb24gLT4gdmFsdWVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwdmFsX25hbWU7IHB2YWxfdHlwZTsgcHZhbF9wcmltOyBwdmFsX2F0dHJpYnV0ZXM7IHB2YWxfbG9jIH0gLT5cbiAgICAgICAgbGV0IHB2YWxfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdmFsX25hbWUgaW5cbiAgICAgICAgbGV0IHB2YWxfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwdmFsX3R5cGUgaW5cbiAgICAgICAgbGV0IHB2YWxfcHJpbSA9IHNlbGYjbGlzdCBzZWxmI3N0cmluZyBjdHggcHZhbF9wcmltIGluXG4gICAgICAgIGxldCBwdmFsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB2YWxfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZhbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdmFsX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB2YWxfbmFtZSA9IFN0ZGxpYi5mc3QgcHZhbF9uYW1lO1xuICAgICAgICAgICAgcHZhbF90eXBlID0gU3RkbGliLmZzdCBwdmFsX3R5cGU7XG4gICAgICAgICAgICBwdmFsX3ByaW0gPSBTdGRsaWIuZnN0IHB2YWxfcHJpbTtcbiAgICAgICAgICAgIHB2YWxfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHZhbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZhbF9sb2MgPSBTdGRsaWIuZnN0IHB2YWxfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB2YWxfbmFtZVwiLCBTdGRsaWIuc25kIHB2YWxfbmFtZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfdHlwZVwiLCBTdGRsaWIuc25kIHB2YWxfdHlwZSk7XG4gICAgICAgICAgICAgIChcInB2YWxfcHJpbVwiLCBTdGRsaWIuc25kIHB2YWxfcHJpbSk7XG4gICAgICAgICAgICAgIChcInB2YWxfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2YWxfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICAgIChcInB2YWxfbG9jXCIsIFN0ZGxpYi5zbmQgcHZhbF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gdHlwZV9kZWNsYXJhdGlvbiAtPiB0eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5cGVfbmFtZTtcbiAgICAgICAgICAgIHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzO1xuICAgICAgICAgICAgcHR5cGVfa2luZDtcbiAgICAgICAgICAgIHB0eXBlX3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlwZV9tYW5pZmVzdDtcbiAgICAgICAgICAgIHB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwdHlwZV9sb2M7XG4gICAgICAgICAgfSAtPlxuICAgICAgICBsZXQgcHR5cGVfbmFtZSA9IHNlbGYjbG9jIHNlbGYjc3RyaW5nIGN0eCBwdHlwZV9uYW1lIGluXG4gICAgICAgIGxldCBwdHlwZV9wYXJhbXMgPVxuICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgbGV0IGIgPVxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3ZhcmlhbmNlIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjaW5qZWN0aXZpdHkgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgICBjdHggYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICBjdHggcHR5cGVfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9jc3RycyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgIGxldCBjID0gc2VsZiNsb2NhdGlvbiBjdHggYyBpblxuICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgY3R4IHB0eXBlX2NzdHJzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlwZV9raW5kID0gc2VsZiN0eXBlX2tpbmQgY3R4IHB0eXBlX2tpbmQgaW5cbiAgICAgICAgbGV0IHB0eXBlX3ByaXZhdGUgPSBzZWxmI3ByaXZhdGVfZmxhZyBjdHggcHR5cGVfcHJpdmF0ZSBpblxuICAgICAgICBsZXQgcHR5cGVfbWFuaWZlc3QgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcHR5cGVfbWFuaWZlc3QgaW5cbiAgICAgICAgbGV0IHB0eXBlX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eXBlX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHB0eXBlX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB0eXBlX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHB0eXBlX25hbWUgPSBTdGRsaWIuZnN0IHB0eXBlX25hbWU7XG4gICAgICAgICAgICBwdHlwZV9wYXJhbXMgPSBTdGRsaWIuZnN0IHB0eXBlX3BhcmFtcztcbiAgICAgICAgICAgIHB0eXBlX2NzdHJzID0gU3RkbGliLmZzdCBwdHlwZV9jc3RycztcbiAgICAgICAgICAgIHB0eXBlX2tpbmQgPSBTdGRsaWIuZnN0IHB0eXBlX2tpbmQ7XG4gICAgICAgICAgICBwdHlwZV9wcml2YXRlID0gU3RkbGliLmZzdCBwdHlwZV9wcml2YXRlO1xuICAgICAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBTdGRsaWIuZnN0IHB0eXBlX21hbmlmZXN0O1xuICAgICAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5cGVfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHB0eXBlX2xvYyA9IFN0ZGxpYi5mc3QgcHR5cGVfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eXBlX25hbWVcIiwgU3RkbGliLnNuZCBwdHlwZV9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5cGVfcGFyYW1zKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfY3N0cnNcIiwgU3RkbGliLnNuZCBwdHlwZV9jc3Rycyk7XG4gICAgICAgICAgICAgIChcInB0eXBlX2tpbmRcIiwgU3RkbGliLnNuZCBwdHlwZV9raW5kKTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfcHJpdmF0ZVwiLCBTdGRsaWIuc25kIHB0eXBlX3ByaXZhdGUpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9tYW5pZmVzdFwiLCBTdGRsaWIuc25kIHB0eXBlX21hbmlmZXN0KTtcbiAgICAgICAgICAgICAgKFwicHR5cGVfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eXBlX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwdHlwZV9sb2NcIiwgU3RkbGliLnNuZCBwdHlwZV9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9raW5kIDogJ2N0eCAtPiB0eXBlX2tpbmQgLT4gdHlwZV9raW5kICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFB0eXBlX2Fic3RyYWN0LCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9hYnN0cmFjdFwiIFtdKVxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQdHlwZV92YXJpYW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV92YXJpYW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjbGFiZWxfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHR5cGVfcmVjb3JkIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9yZWNvcmRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChQdHlwZV9vcGVuLCBzZWxmI2NvbnN0ciBjdHggXCJQdHlwZV9vcGVuXCIgW10pXG5cbiAgICBtZXRob2QgbGFiZWxfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IGxhYmVsX2RlY2xhcmF0aW9uIC0+IGxhYmVsX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGxkX25hbWU7IHBsZF9tdXRhYmxlOyBwbGRfdHlwZTsgcGxkX2xvYzsgcGxkX2F0dHJpYnV0ZXMgfSAtPlxuICAgICAgICBsZXQgcGxkX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGxkX25hbWUgaW5cbiAgICAgICAgbGV0IHBsZF9tdXRhYmxlID0gc2VsZiNtdXRhYmxlX2ZsYWcgY3R4IHBsZF9tdXRhYmxlIGluXG4gICAgICAgIGxldCBwbGRfdHlwZSA9IHNlbGYjY29yZV90eXBlIGN0eCBwbGRfdHlwZSBpblxuICAgICAgICBsZXQgcGxkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBsZF9sb2MgaW5cbiAgICAgICAgbGV0IHBsZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwbGRfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBsZF9uYW1lID0gU3RkbGliLmZzdCBwbGRfbmFtZTtcbiAgICAgICAgICAgIHBsZF9tdXRhYmxlID0gU3RkbGliLmZzdCBwbGRfbXV0YWJsZTtcbiAgICAgICAgICAgIHBsZF90eXBlID0gU3RkbGliLmZzdCBwbGRfdHlwZTtcbiAgICAgICAgICAgIHBsZF9sb2MgPSBTdGRsaWIuZnN0IHBsZF9sb2M7XG4gICAgICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGxkX25hbWVcIiwgU3RkbGliLnNuZCBwbGRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBsZF9tdXRhYmxlXCIsIFN0ZGxpYi5zbmQgcGxkX211dGFibGUpO1xuICAgICAgICAgICAgICAoXCJwbGRfdHlwZVwiLCBTdGRsaWIuc25kIHBsZF90eXBlKTtcbiAgICAgICAgICAgICAgKFwicGxkX2xvY1wiLCBTdGRsaWIuc25kIHBsZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwbGRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBsZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjZF9uYW1lOyBwY2RfdmFyczsgcGNkX2FyZ3M7IHBjZF9yZXM7IHBjZF9sb2M7IHBjZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjZF9uYW1lIGluXG4gICAgICAgIGxldCBwY2RfdmFycyA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBwY2RfdmFycyBpblxuICAgICAgICBsZXQgcGNkX2FyZ3MgPSBzZWxmI2NvbnN0cnVjdG9yX2FyZ3VtZW50cyBjdHggcGNkX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBjZF9yZXMgPSBzZWxmI29wdGlvbiBzZWxmI2NvcmVfdHlwZSBjdHggcGNkX3JlcyBpblxuICAgICAgICBsZXQgcGNkX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZF9sb2MgaW5cbiAgICAgICAgbGV0IHBjZF9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZF9uYW1lID0gU3RkbGliLmZzdCBwY2RfbmFtZTtcbiAgICAgICAgICAgIHBjZF92YXJzID0gU3RkbGliLmZzdCBwY2RfdmFycztcbiAgICAgICAgICAgIHBjZF9hcmdzID0gU3RkbGliLmZzdCBwY2RfYXJncztcbiAgICAgICAgICAgIHBjZF9yZXMgPSBTdGRsaWIuZnN0IHBjZF9yZXM7XG4gICAgICAgICAgICBwY2RfbG9jID0gU3RkbGliLmZzdCBwY2RfbG9jO1xuICAgICAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjZF9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2RfdmFyc1wiLCBTdGRsaWIuc25kIHBjZF92YXJzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2FyZ3NcIiwgU3RkbGliLnNuZCBwY2RfYXJncyk7XG4gICAgICAgICAgICAgIChcInBjZF9yZXNcIiwgU3RkbGliLnNuZCBwY2RfcmVzKTtcbiAgICAgICAgICAgICAgKFwicGNkX2xvY1wiLCBTdGRsaWIuc25kIHBjZF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNvbnN0cnVjdG9yX2FyZ3VtZW50c1xuICAgICAgICA6ICdjdHggLT4gY29uc3RydWN0b3JfYXJndW1lbnRzIC0+IGNvbnN0cnVjdG9yX2FyZ3VtZW50cyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjc3RyX3R1cGxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3R1cGxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3N0cl90dXBsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjc3RyX3JlY29yZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2xhYmVsX2RlY2xhcmF0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjc3RyX3JlY29yZCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNzdHJfcmVjb3JkXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leHRlbnNpb24gOiAnY3R4IC0+IHR5cGVfZXh0ZW5zaW9uIC0+IHR5cGVfZXh0ZW5zaW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4XG4gICAgICAgICAge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGg7XG4gICAgICAgICAgICBwdHlleHRfcGFyYW1zO1xuICAgICAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycztcbiAgICAgICAgICAgIHB0eWV4dF9wcml2YXRlO1xuICAgICAgICAgICAgcHR5ZXh0X2xvYztcbiAgICAgICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IHB0eWV4dF9wYXRoID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBwdHlleHRfcGF0aCBpblxuICAgICAgICBsZXQgcHR5ZXh0X3BhcmFtcyA9XG4gICAgICAgICAgc2VsZiNsaXN0XG4gICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFyaWFuY2UgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNpbmplY3Rpdml0eSBjdHggYiBpblxuICAgICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICAgIGN0eCBiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgIGN0eCBwdHlleHRfcGFyYW1zXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwdHlleHRfY29uc3RydWN0b3JzID1cbiAgICAgICAgICBzZWxmI2xpc3Qgc2VsZiNleHRlbnNpb25fY29uc3RydWN0b3IgY3R4IHB0eWV4dF9jb25zdHJ1Y3RvcnNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4dF9wcml2YXRlID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IHB0eWV4dF9wcml2YXRlIGluXG4gICAgICAgIGxldCBwdHlleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcHR5ZXh0X2xvYyBpblxuICAgICAgICBsZXQgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHB0eWV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcHR5ZXh0X3BhdGggPSBTdGRsaWIuZnN0IHB0eWV4dF9wYXRoO1xuICAgICAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3BhcmFtcztcbiAgICAgICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBTdGRsaWIuZnN0IHB0eWV4dF9jb25zdHJ1Y3RvcnM7XG4gICAgICAgICAgICBwdHlleHRfcHJpdmF0ZSA9IFN0ZGxpYi5mc3QgcHR5ZXh0X3ByaXZhdGU7XG4gICAgICAgICAgICBwdHlleHRfbG9jID0gU3RkbGliLmZzdCBwdHlleHRfbG9jO1xuICAgICAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInB0eWV4dF9wYXRoXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhdGgpO1xuICAgICAgICAgICAgICAoXCJwdHlleHRfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcHR5ZXh0X3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9jb25zdHJ1Y3RvcnNcIiwgU3RkbGliLnNuZCBwdHlleHRfY29uc3RydWN0b3JzKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X3ByaXZhdGVcIiwgU3RkbGliLnNuZCBwdHlleHRfcHJpdmF0ZSk7XG4gICAgICAgICAgICAgIChcInB0eWV4dF9sb2NcIiwgU3RkbGliLnNuZCBwdHlleHRfbG9jKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwdHlleHRfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBleHRlbnNpb25fY29uc3RydWN0b3JcbiAgICAgICAgOiAnY3R4IC0+IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBleHRlbnNpb25fY29uc3RydWN0b3IgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZXh0X25hbWU7IHBleHRfa2luZDsgcGV4dF9sb2M7IHBleHRfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwZXh0X25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcGV4dF9uYW1lIGluXG4gICAgICAgIGxldCBwZXh0X2tpbmQgPSBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIGN0eCBwZXh0X2tpbmQgaW5cbiAgICAgICAgbGV0IHBleHRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGV4dF9sb2MgaW5cbiAgICAgICAgbGV0IHBleHRfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGV4dF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGV4dF9uYW1lID0gU3RkbGliLmZzdCBwZXh0X25hbWU7XG4gICAgICAgICAgICBwZXh0X2tpbmQgPSBTdGRsaWIuZnN0IHBleHRfa2luZDtcbiAgICAgICAgICAgIHBleHRfbG9jID0gU3RkbGliLmZzdCBwZXh0X2xvYztcbiAgICAgICAgICAgIHBleHRfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBleHRfbmFtZVwiLCBTdGRsaWIuc25kIHBleHRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBleHRfa2luZFwiLCBTdGRsaWIuc25kIHBleHRfa2luZCk7XG4gICAgICAgICAgICAgIChcInBleHRfbG9jXCIsIFN0ZGxpYi5zbmQgcGV4dF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwZXh0X2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwZXh0X2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgdHlwZV9leGNlcHRpb24gOiAnY3R4IC0+IHR5cGVfZXhjZXB0aW9uIC0+IHR5cGVfZXhjZXB0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcHR5ZXhuX2NvbnN0cnVjdG9yOyBwdHlleG5fbG9jOyBwdHlleG5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwdHlleG5fY29uc3RydWN0b3IgPVxuICAgICAgICAgIHNlbGYjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIGN0eCBwdHlleG5fY29uc3RydWN0b3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHB0eWV4bl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwdHlleG5fbG9jIGluXG4gICAgICAgIGxldCBwdHlleG5fYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcHR5ZXhuX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBTdGRsaWIuZnN0IHB0eWV4bl9jb25zdHJ1Y3RvcjtcbiAgICAgICAgICAgIHB0eWV4bl9sb2MgPSBTdGRsaWIuZnN0IHB0eWV4bl9sb2M7XG4gICAgICAgICAgICBwdHlleG5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcHR5ZXhuX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2NvbnN0cnVjdG9yXCIsIFN0ZGxpYi5zbmQgcHR5ZXhuX2NvbnN0cnVjdG9yKTtcbiAgICAgICAgICAgICAgKFwicHR5ZXhuX2xvY1wiLCBTdGRsaWIuc25kIHB0eWV4bl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwdHlleG5fYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB0eWV4bl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kXG4gICAgICAgIDogJ2N0eCAtPlxuICAgICAgICAgIGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9raW5kIC0+XG4gICAgICAgICAgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZXh0X2RlY2wgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29uc3RydWN0b3JfYXJndW1lbnRzIGN0eCBiIGluXG4gICAgICAgICAgICBsZXQgYyA9IHNlbGYjb3B0aW9uIHNlbGYjY29yZV90eXBlIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBleHRfZGVjbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBleHRfZGVjbFwiXG4gICAgICAgICAgICAgICAgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYjsgU3RkbGliLnNuZCBjIF0gKVxuICAgICAgICB8IFBleHRfcmViaW5kIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBleHRfcmViaW5kIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZXh0X3JlYmluZFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGUgOiAnY3R4IC0+IGNsYXNzX3R5cGUgLT4gY2xhc3NfdHlwZSAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBjdHlfZGVzYzsgcGN0eV9sb2M7IHBjdHlfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwY3R5X2Rlc2MgPSBzZWxmI2NsYXNzX3R5cGVfZGVzYyBjdHggcGN0eV9kZXNjIGluXG4gICAgICAgIGxldCBwY3R5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjdHlfbG9jIGluXG4gICAgICAgIGxldCBwY3R5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcGN0eV9kZXNjO1xuICAgICAgICAgICAgcGN0eV9sb2MgPSBTdGRsaWIuZnN0IHBjdHlfbG9jO1xuICAgICAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGN0eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGN0eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGN0eV9sb2NcIiwgU3RkbGliLnNuZCBwY3R5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBjdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2Rlc2MgOiAnY3R4IC0+IGNsYXNzX3R5cGVfZGVzYyAtPiBjbGFzc190eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY3R5X2NvbnN0ciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbGlzdCBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2NvbnN0clwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGN0eV9zaWduYXR1cmUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NsYXNzX3NpZ25hdHVyZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3R5X3NpZ25hdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9zaWduYXR1cmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3R5X2Fycm93IChhLCBiLCBjKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2NvcmVfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX3R5cGUgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGN0eV9hcnJvdyAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdHlfYXJyb3dcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdHlfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3R5X2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdHlfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY3R5X29wZW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0eV9vcGVuXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19zaWduYXR1cmUgOiAnY3R4IC0+IGNsYXNzX3NpZ25hdHVyZSAtPiBjbGFzc19zaWduYXR1cmUgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwY3NpZ19zZWxmOyBwY3NpZ19maWVsZHMgfSAtPlxuICAgICAgICBsZXQgcGNzaWdfc2VsZiA9IHNlbGYjY29yZV90eXBlIGN0eCBwY3NpZ19zZWxmIGluXG4gICAgICAgIGxldCBwY3NpZ19maWVsZHMgPSBzZWxmI2xpc3Qgc2VsZiNjbGFzc190eXBlX2ZpZWxkIGN0eCBwY3NpZ19maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3NpZ19zZWxmID0gU3RkbGliLmZzdCBwY3NpZ19zZWxmO1xuICAgICAgICAgICAgcGNzaWdfZmllbGRzID0gU3RkbGliLmZzdCBwY3NpZ19maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzaWdfc2VsZlwiLCBTdGRsaWIuc25kIHBjc2lnX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3NpZ19maWVsZHNcIiwgU3RkbGliLnNuZCBwY3NpZ19maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfdHlwZV9maWVsZFxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZCAtPiBjbGFzc190eXBlX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGN0Zl9kZXNjOyBwY3RmX2xvYzsgcGN0Zl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjdGZfZGVzYyA9IHNlbGYjY2xhc3NfdHlwZV9maWVsZF9kZXNjIGN0eCBwY3RmX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBjdGZfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGN0Zl9sb2MgaW5cbiAgICAgICAgbGV0IHBjdGZfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcGN0Zl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGN0Zl9kZXNjID0gU3RkbGliLmZzdCBwY3RmX2Rlc2M7XG4gICAgICAgICAgICBwY3RmX2xvYyA9IFN0ZGxpYi5mc3QgcGN0Zl9sb2M7XG4gICAgICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjdGZfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY3RmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY3RmX2Rlc2MpO1xuICAgICAgICAgICAgICAoXCJwY3RmX2xvY1wiLCBTdGRsaWIuc25kIHBjdGZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGN0Zl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGN0Zl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX3R5cGVfZmllbGRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gY2xhc3NfdHlwZV9maWVsZF9kZXNjIC0+IGNsYXNzX3R5cGVfZmllbGRfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjdGZfaW5oZXJpdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY3RmX2luaGVyaXQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfaW5oZXJpdFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICBsZXQgZCA9IHNlbGYjY29yZV90eXBlIGN0eCBkIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYywgU3RkbGliLmZzdCBkKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4XG4gICAgICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF1cbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBQY3RmX3ZhbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGN0Zl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX21ldGhvZCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiLCBjLCBkKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb2Mgc2VsZiNsYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNwcml2YXRlX2ZsYWcgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICBsZXQgYyA9IHNlbGYjdmlydHVhbF9mbGFnIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgbGV0IGQgPSBzZWxmI2NvcmVfdHlwZSBjdHggZCBpblxuICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eFxuICAgICAgICAgICAgICAgICAgICBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGM7IFN0ZGxpYi5zbmQgZCBdXG4gICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfbWV0aG9kXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGN0Zl9jb25zdHJhaW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2NvcmVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgICAgIGxldCBiID0gc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKSlcbiAgICAgICAgICAgICAgICBjdHggYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggUGN0Zl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY3RmX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjdGZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY3RmX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjdGZfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUGN0Zl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjdGZfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfaW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIGNsYXNzX2luZm9zIC0+XG4gICAgICAgICAgJ2EgY2xhc3NfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHhcbiAgICAgICAgICB7IHBjaV92aXJ0OyBwY2lfcGFyYW1zOyBwY2lfbmFtZTsgcGNpX2V4cHI7IHBjaV9sb2M7IHBjaV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjaV92aXJ0ID0gc2VsZiN2aXJ0dWFsX2ZsYWcgY3R4IHBjaV92aXJ0IGluXG4gICAgICAgIGxldCBwY2lfcGFyYW1zID1cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAgIGxldCBiID1cbiAgICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YXJpYW5jZSBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2luamVjdGl2aXR5IGN0eCBiIGluXG4gICAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApKVxuICAgICAgICAgICAgY3R4IHBjaV9wYXJhbXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBjaV9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBjaV9uYW1lIGluXG4gICAgICAgIGxldCBwY2lfZXhwciA9IF9hIGN0eCBwY2lfZXhwciBpblxuICAgICAgICBsZXQgcGNpX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjaV9sb2MgaW5cbiAgICAgICAgbGV0IHBjaV9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2lfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjaV92aXJ0ID0gU3RkbGliLmZzdCBwY2lfdmlydDtcbiAgICAgICAgICAgIHBjaV9wYXJhbXMgPSBTdGRsaWIuZnN0IHBjaV9wYXJhbXM7XG4gICAgICAgICAgICBwY2lfbmFtZSA9IFN0ZGxpYi5mc3QgcGNpX25hbWU7XG4gICAgICAgICAgICBwY2lfZXhwciA9IFN0ZGxpYi5mc3QgcGNpX2V4cHI7XG4gICAgICAgICAgICBwY2lfbG9jID0gU3RkbGliLmZzdCBwY2lfbG9jO1xuICAgICAgICAgICAgcGNpX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBjaV9hdHRyaWJ1dGVzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBjaV92aXJ0XCIsIFN0ZGxpYi5zbmQgcGNpX3ZpcnQpO1xuICAgICAgICAgICAgICAoXCJwY2lfcGFyYW1zXCIsIFN0ZGxpYi5zbmQgcGNpX3BhcmFtcyk7XG4gICAgICAgICAgICAgIChcInBjaV9uYW1lXCIsIFN0ZGxpYi5zbmQgcGNpX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwY2lfZXhwclwiLCBTdGRsaWIuc25kIHBjaV9leHByKTtcbiAgICAgICAgICAgICAgKFwicGNpX2xvY1wiLCBTdGRsaWIuc25kIHBjaV9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2lfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjaV9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19kZXNjcmlwdGlvbiAtPiBjbGFzc19kZXNjcmlwdGlvbiAqICdyZXMgPVxuICAgICAgc2VsZiNjbGFzc19pbmZvcyBzZWxmI2NsYXNzX3R5cGVcblxuICAgIG1ldGhvZCBjbGFzc190eXBlX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc190eXBlX2RlY2xhcmF0aW9uIC0+IGNsYXNzX3R5cGVfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc190eXBlXG5cbiAgICBtZXRob2QgY2xhc3NfZXhwciA6ICdjdHggLT4gY2xhc3NfZXhwciAtPiBjbGFzc19leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNsX2Rlc2M7IHBjbF9sb2M7IHBjbF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjbF9kZXNjID0gc2VsZiNjbGFzc19leHByX2Rlc2MgY3R4IHBjbF9kZXNjIGluXG4gICAgICAgIGxldCBwY2xfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGNsX2xvYyBpblxuICAgICAgICBsZXQgcGNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBjbF9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcGNsX2Rlc2MgPSBTdGRsaWIuZnN0IHBjbF9kZXNjO1xuICAgICAgICAgICAgcGNsX2xvYyA9IFN0ZGxpYi5mc3QgcGNsX2xvYztcbiAgICAgICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwY2xfZGVzY1wiLCBTdGRsaWIuc25kIHBjbF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicGNsX2xvY1wiLCBTdGRsaWIuc25kIHBjbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwY2xfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBjbF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIGNsYXNzX2V4cHJfZGVzYyA6ICdjdHggLT4gY2xhc3NfZXhwcl9kZXNjIC0+IGNsYXNzX2V4cHJfZGVzYyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFBjbF9jb25zdHIgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiNjb3JlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGNsX2NvbnN0ciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQY2xfc3RydWN0dXJlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19zdHJ1Y3R1cmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUGNsX3N0cnVjdHVyZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNsX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjbF9mdW4gKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXJnX2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI3BhdHRlcm4gY3R4IGMgaW5cbiAgICAgICAgICAgIGxldCBkID0gc2VsZiNjbGFzc19leHByIGN0eCBkIGluXG4gICAgICAgICAgICAoIFBjbF9mdW4gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiLCBTdGRsaWIuZnN0IGMsIFN0ZGxpYi5mc3QgZCksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9mdW5cIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYzsgU3RkbGliLnNuZCBkIF0gKVxuICAgICAgICB8IFBjbF9hcHBseSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9XG4gICAgICAgICAgICAgIHNlbGYjbGlzdFxuICAgICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2FyZ19sYWJlbCBjdHggYSBpblxuICAgICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGIgaW5cbiAgICAgICAgICAgICAgICAgICggKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjbF9hcHBseSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBjbF9sZXQgKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2V4cHIgY3R4IGMgaW5cbiAgICAgICAgICAgICggUGNsX2xldCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9sZXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2xfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNjbGFzc19leHByIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfdHlwZSBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUGNsX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjbF9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjbF9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2xfb3BlbiAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvcGVuX2Rlc2NyaXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQY2xfb3BlbiAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2xfb3BlblwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgY2xhc3Nfc3RydWN0dXJlIDogJ2N0eCAtPiBjbGFzc19zdHJ1Y3R1cmUgLT4gY2xhc3Nfc3RydWN0dXJlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNzdHJfc2VsZjsgcGNzdHJfZmllbGRzIH0gLT5cbiAgICAgICAgbGV0IHBjc3RyX3NlbGYgPSBzZWxmI3BhdHRlcm4gY3R4IHBjc3RyX3NlbGYgaW5cbiAgICAgICAgbGV0IHBjc3RyX2ZpZWxkcyA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX2ZpZWxkIGN0eCBwY3N0cl9maWVsZHMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwY3N0cl9zZWxmID0gU3RkbGliLmZzdCBwY3N0cl9zZWxmO1xuICAgICAgICAgICAgcGNzdHJfZmllbGRzID0gU3RkbGliLmZzdCBwY3N0cl9maWVsZHM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNzdHJfc2VsZlwiLCBTdGRsaWIuc25kIHBjc3RyX3NlbGYpO1xuICAgICAgICAgICAgICAoXCJwY3N0cl9maWVsZHNcIiwgU3RkbGliLnNuZCBwY3N0cl9maWVsZHMpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgY2xhc3NfZmllbGQgOiAnY3R4IC0+IGNsYXNzX2ZpZWxkIC0+IGNsYXNzX2ZpZWxkICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGNmX2Rlc2M7IHBjZl9sb2M7IHBjZl9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBjZl9kZXNjID0gc2VsZiNjbGFzc19maWVsZF9kZXNjIGN0eCBwY2ZfZGVzYyBpblxuICAgICAgICBsZXQgcGNmX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBjZl9sb2MgaW5cbiAgICAgICAgbGV0IHBjZl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwY2ZfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBjZl9kZXNjID0gU3RkbGliLmZzdCBwY2ZfZGVzYztcbiAgICAgICAgICAgIHBjZl9sb2MgPSBTdGRsaWIuZnN0IHBjZl9sb2M7XG4gICAgICAgICAgICBwY2ZfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicGNmX2Rlc2NcIiwgU3RkbGliLnNuZCBwY2ZfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBjZl9sb2NcIiwgU3RkbGliLnNuZCBwY2ZfbG9jKTtcbiAgICAgICAgICAgICAgKFwicGNmX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwY2ZfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9kZXNjIC0+IGNsYXNzX2ZpZWxkX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQY2ZfaW5oZXJpdCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjY2xhc3NfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgbGV0IGMgPSBzZWxmI29wdGlvbiAoc2VsZiNsb2Mgc2VsZiNzdHJpbmcpIGN0eCBjIGluXG4gICAgICAgICAgICAoIFBjZl9pbmhlcml0IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGNmX2luaGVyaXRcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdIClcbiAgICAgICAgfCBQY2ZfdmFsIGEgLT5cbiAgICAgICAgICAgIGxldCBhID1cbiAgICAgICAgICAgICAgKGZ1biBjdHggKGEsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyBzZWxmI2xhYmVsIGN0eCBhIGluXG4gICAgICAgICAgICAgICAgbGV0IGIgPSBzZWxmI211dGFibGVfZmxhZyBjdHggYiBpblxuICAgICAgICAgICAgICAgIGxldCBjID0gc2VsZiNjbGFzc19maWVsZF9raW5kIGN0eCBjIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIsIFN0ZGxpYi5mc3QgYyksXG4gICAgICAgICAgICAgICAgICBzZWxmI3R1cGxlIGN0eCBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiOyBTdGRsaWIuc25kIGMgXSApKVxuICAgICAgICAgICAgICAgIGN0eCBhXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBjZl92YWwgKFN0ZGxpYi5mc3QgYSksIHNlbGYjY29uc3RyIGN0eCBcIlBjZl92YWxcIiBbIFN0ZGxpYi5zbmQgYSBdKVxuICAgICAgICB8IFBjZl9tZXRob2QgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPVxuICAgICAgICAgICAgICAoZnVuIGN0eCAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9jIHNlbGYjbGFiZWwgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjcHJpdmF0ZV9mbGFnIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgbGV0IGMgPSBzZWxmI2NsYXNzX2ZpZWxkX2tpbmQgY3R4IGMgaW5cbiAgICAgICAgICAgICAgICAoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiwgU3RkbGliLmZzdCBjKSxcbiAgICAgICAgICAgICAgICAgIHNlbGYjdHVwbGUgY3R4IFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGI7IFN0ZGxpYi5zbmQgYyBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9tZXRob2QgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9tZXRob2RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQY2ZfY29uc3RyYWludCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9XG4gICAgICAgICAgICAgIChmdW4gY3R4IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgIGxldCBhID0gc2VsZiNjb3JlX3R5cGUgY3R4IGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNlbGYjY29yZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAgICAgKCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICAgICAgc2VsZiN0dXBsZSBjdHggWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdICkpXG4gICAgICAgICAgICAgICAgY3R4IGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIFBjZl9jb25zdHJhaW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfY29uc3RyYWludFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9pbml0aWFsaXplciBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfaW5pdGlhbGl6ZXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9pbml0aWFsaXplclwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBjZl9hdHRyaWJ1dGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2F0dHJpYnV0ZSBjdHggYSBpblxuICAgICAgICAgICAgKCBQY2ZfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQY2ZfYXR0cmlidXRlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGNmX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBjZl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBjZl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYSBdIClcblxuICAgIG1ldGhvZCBjbGFzc19maWVsZF9raW5kXG4gICAgICAgIDogJ2N0eCAtPiBjbGFzc19maWVsZF9raW5kIC0+IGNsYXNzX2ZpZWxkX2tpbmQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBDZmtfdmlydHVhbCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjY29yZV90eXBlIGN0eCBhIGluXG4gICAgICAgICAgICAoIENma192aXJ0dWFsIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJDZmtfdmlydHVhbFwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IENma19jb25jcmV0ZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBDZmtfY29uY3JldGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiQ2ZrX2NvbmNyZXRlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcblxuICAgIG1ldGhvZCBjbGFzc19kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gY2xhc3NfZGVjbGFyYXRpb24gLT4gY2xhc3NfZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjY2xhc3NfaW5mb3Mgc2VsZiNjbGFzc19leHByXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGUgOiAnY3R4IC0+IG1vZHVsZV90eXBlIC0+IG1vZHVsZV90eXBlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10eV9kZXNjOyBwbXR5X2xvYzsgcG10eV9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtdHlfZGVzYyA9IHNlbGYjbW9kdWxlX3R5cGVfZGVzYyBjdHggcG10eV9kZXNjIGluXG4gICAgICAgIGxldCBwbXR5X2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtdHlfbG9jIGluXG4gICAgICAgIGxldCBwbXR5X2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdHlfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdHlfZGVzYyA9IFN0ZGxpYi5mc3QgcG10eV9kZXNjO1xuICAgICAgICAgICAgcG10eV9sb2MgPSBTdGRsaWIuZnN0IHBtdHlfbG9jO1xuICAgICAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG10eV9kZXNjXCIsIFN0ZGxpYi5zbmQgcG10eV9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG10eV9sb2NcIiwgU3RkbGliLnNuZCBwbXR5X2xvYyk7XG4gICAgICAgICAgICAgIChcInBtdHlfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtdHlfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfdHlwZV9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfdHlwZV9kZXNjIC0+IG1vZHVsZV90eXBlX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbXR5X2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbXR5X3NpZ25hdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc2lnbmF0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfc2lnbmF0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3NpZ25hdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtdHlfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtdHlfd2l0aCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZSBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN3aXRoX2NvbnN0cmFpbnQgY3R4IGIgaW5cbiAgICAgICAgICAgICggUG10eV93aXRoIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfd2l0aFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUG10eV90eXBlb2YgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI21vZHVsZV9leHByIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtdHlfdHlwZW9mIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X3R5cGVvZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtdHlfZXh0ZW5zaW9uIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNleHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUG10eV9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtdHlfZXh0ZW5zaW9uXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUG10eV9hbGlhcyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgKCBQbXR5X2FsaWFzIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbXR5X2FsaWFzXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgZnVuY3Rvcl9wYXJhbWV0ZXJcbiAgICAgICAgOiAnY3R4IC0+IGZ1bmN0b3JfcGFyYW1ldGVyIC0+IGZ1bmN0b3JfcGFyYW1ldGVyICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgVW5pdCAtPiAoVW5pdCwgc2VsZiNjb25zdHIgY3R4IFwiVW5pdFwiIFtdKVxuICAgICAgICB8IE5hbWVkIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggTmFtZWQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiTmFtZWRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHNpZ25hdHVyZSA6ICdjdHggLT4gc2lnbmF0dXJlIC0+IHNpZ25hdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc2lnbmF0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzaWduYXR1cmVfaXRlbSA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW0gLT4gc2lnbmF0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc2lnX2Rlc2M7IHBzaWdfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzaWdfZGVzYyA9IHNlbGYjc2lnbmF0dXJlX2l0ZW1fZGVzYyBjdHggcHNpZ19kZXNjIGluXG4gICAgICAgIGxldCBwc2lnX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzaWdfbG9jIGluXG4gICAgICAgICggeyBwc2lnX2Rlc2MgPSBTdGRsaWIuZnN0IHBzaWdfZGVzYzsgcHNpZ19sb2MgPSBTdGRsaWIuZnN0IHBzaWdfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzaWdfZGVzY1wiLCBTdGRsaWIuc25kIHBzaWdfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzaWdfbG9jXCIsIFN0ZGxpYi5zbmQgcHNpZ19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc2lnbmF0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc2lnbmF0dXJlX2l0ZW1fZGVzYyAtPiBzaWduYXR1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHNpZ192YWx1ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdmFsdWVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ192YWx1ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ192YWx1ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNyZWNfZmxhZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xpc3Qgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzaWdfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ190eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ190eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19tb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2RzdWJzdCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3N1YnN0aXR1dGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHN1YnN0IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX21vZHN1YnN0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19yZWNtb2R1bGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xpc3Qgc2VsZiNtb2R1bGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19yZWNtb2R1bGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfcmVjbW9kdWxlXCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHNpZ19tb2R0eXBlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGUgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzaWdfbW9kdHlwZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc2lnX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19tb2R0eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVzY3JpcHRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHNpZ19jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc2lnX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzaWdfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc2lnX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHNpZ19leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHNpZ19leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIG1vZHVsZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV9kZWNsYXJhdGlvbiAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHBtZF9uYW1lOyBwbWRfdHlwZTsgcG1kX2F0dHJpYnV0ZXM7IHBtZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG1kX25hbWUgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGN0eCBwbWRfbmFtZSBpblxuICAgICAgICBsZXQgcG1kX3R5cGUgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBwbWRfdHlwZSBpblxuICAgICAgICBsZXQgcG1kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtZF9hdHRyaWJ1dGVzIGluXG4gICAgICAgIGxldCBwbWRfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG1kX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtZF9uYW1lID0gU3RkbGliLmZzdCBwbWRfbmFtZTtcbiAgICAgICAgICAgIHBtZF90eXBlID0gU3RkbGliLmZzdCBwbWRfdHlwZTtcbiAgICAgICAgICAgIHBtZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbWRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtZF9sb2MgPSBTdGRsaWIuZnN0IHBtZF9sb2M7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1kX25hbWVcIiwgU3RkbGliLnNuZCBwbWRfbmFtZSk7XG4gICAgICAgICAgICAgIChcInBtZF90eXBlXCIsIFN0ZGxpYi5zbmQgcG1kX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbWRfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtZF9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1kX2xvY1wiLCBTdGRsaWIuc25kIHBtZF9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3N1YnN0aXR1dGlvblxuICAgICAgICA6ICdjdHggLT4gbW9kdWxlX3N1YnN0aXR1dGlvbiAtPiBtb2R1bGVfc3Vic3RpdHV0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1zX25hbWU7IHBtc19tYW5pZmVzdDsgcG1zX2F0dHJpYnV0ZXM7IHBtc19sb2MgfSAtPlxuICAgICAgICBsZXQgcG1zX25hbWUgPSBzZWxmI2xvYyBzZWxmI3N0cmluZyBjdHggcG1zX25hbWUgaW5cbiAgICAgICAgbGV0IHBtc19tYW5pZmVzdCA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggcG1zX21hbmlmZXN0IGluXG4gICAgICAgIGxldCBwbXNfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1zX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtc19sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXNfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1zX25hbWUgPSBTdGRsaWIuZnN0IHBtc19uYW1lO1xuICAgICAgICAgICAgcG1zX21hbmlmZXN0ID0gU3RkbGliLmZzdCBwbXNfbWFuaWZlc3Q7XG4gICAgICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICBwbXNfbG9jID0gU3RkbGliLmZzdCBwbXNfbG9jO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBtc19uYW1lXCIsIFN0ZGxpYi5zbmQgcG1zX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXNfbWFuaWZlc3RcIiwgU3RkbGliLnNuZCBwbXNfbWFuaWZlc3QpO1xuICAgICAgICAgICAgICAoXCJwbXNfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtc19hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicG1zX2xvY1wiLCBTdGRsaWIuc25kIHBtc19sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgICAgICAgOiAnY3R4IC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG10ZF9uYW1lOyBwbXRkX3R5cGU7IHBtdGRfYXR0cmlidXRlczsgcG10ZF9sb2MgfSAtPlxuICAgICAgICBsZXQgcG10ZF9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBtdGRfbmFtZSBpblxuICAgICAgICBsZXQgcG10ZF90eXBlID0gc2VsZiNvcHRpb24gc2VsZiNtb2R1bGVfdHlwZSBjdHggcG10ZF90eXBlIGluXG4gICAgICAgIGxldCBwbXRkX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtdGRfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcG10ZF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbXRkX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtdGRfbmFtZSA9IFN0ZGxpYi5mc3QgcG10ZF9uYW1lO1xuICAgICAgICAgICAgcG10ZF90eXBlID0gU3RkbGliLmZzdCBwbXRkX3R5cGU7XG4gICAgICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtdGRfYXR0cmlidXRlcztcbiAgICAgICAgICAgIHBtdGRfbG9jID0gU3RkbGliLmZzdCBwbXRkX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbXRkX25hbWVcIiwgU3RkbGliLnNuZCBwbXRkX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX3R5cGVcIiwgU3RkbGliLnNuZCBwbXRkX3R5cGUpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2F0dHJpYnV0ZXNcIiwgU3RkbGliLnNuZCBwbXRkX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbXRkX2xvY1wiLCBTdGRsaWIuc25kIHBtdGRfbG9jKTtcbiAgICAgICAgICAgIF0gKVxuXG4gICAgbWV0aG9kIG9wZW5faW5mb3NcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCAtPiAnYSAtPiAnYSAqICdyZXMpIC0+XG4gICAgICAgICAgJ2N0eCAtPlxuICAgICAgICAgICdhIG9wZW5faW5mb3MgLT5cbiAgICAgICAgICAnYSBvcGVuX2luZm9zICogJ3JlcyA9XG4gICAgICBmdW4gX2EgY3R4IHsgcG9wZW5fZXhwcjsgcG9wZW5fb3ZlcnJpZGU7IHBvcGVuX2xvYzsgcG9wZW5fYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwb3Blbl9leHByID0gX2EgY3R4IHBvcGVuX2V4cHIgaW5cbiAgICAgICAgbGV0IHBvcGVuX292ZXJyaWRlID0gc2VsZiNvdmVycmlkZV9mbGFnIGN0eCBwb3Blbl9vdmVycmlkZSBpblxuICAgICAgICBsZXQgcG9wZW5fbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcG9wZW5fbG9jIGluXG4gICAgICAgIGxldCBwb3Blbl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwb3Blbl9hdHRyaWJ1dGVzIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG9wZW5fZXhwciA9IFN0ZGxpYi5mc3QgcG9wZW5fZXhwcjtcbiAgICAgICAgICAgIHBvcGVuX292ZXJyaWRlID0gU3RkbGliLmZzdCBwb3Blbl9vdmVycmlkZTtcbiAgICAgICAgICAgIHBvcGVuX2xvYyA9IFN0ZGxpYi5mc3QgcG9wZW5fbG9jO1xuICAgICAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwb3Blbl9leHByXCIsIFN0ZGxpYi5zbmQgcG9wZW5fZXhwcik7XG4gICAgICAgICAgICAgIChcInBvcGVuX292ZXJyaWRlXCIsIFN0ZGxpYi5zbmQgcG9wZW5fb3ZlcnJpZGUpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9sb2NcIiwgU3RkbGliLnNuZCBwb3Blbl9sb2MpO1xuICAgICAgICAgICAgICAoXCJwb3Blbl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG9wZW5fYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBvcGVuX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2Rlc2NyaXB0aW9uIC0+IG9wZW5fZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI2xvbmdpZGVudF9sb2NcblxuICAgIG1ldGhvZCBvcGVuX2RlY2xhcmF0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBvcGVuX2RlY2xhcmF0aW9uIC0+IG9wZW5fZGVjbGFyYXRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjb3Blbl9pbmZvcyBzZWxmI21vZHVsZV9leHByXG5cbiAgICBtZXRob2QgaW5jbHVkZV9pbmZvc1xuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4IC0+ICdhIC0+ICdhICogJ3JlcykgLT5cbiAgICAgICAgICAnY3R4IC0+XG4gICAgICAgICAgJ2EgaW5jbHVkZV9pbmZvcyAtPlxuICAgICAgICAgICdhIGluY2x1ZGVfaW5mb3MgKiAncmVzID1cbiAgICAgIGZ1biBfYSBjdHggeyBwaW5jbF9tb2Q7IHBpbmNsX2xvYzsgcGluY2xfYXR0cmlidXRlcyB9IC0+XG4gICAgICAgIGxldCBwaW5jbF9tb2QgPSBfYSBjdHggcGluY2xfbW9kIGluXG4gICAgICAgIGxldCBwaW5jbF9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwaW5jbF9sb2MgaW5cbiAgICAgICAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBpbmNsX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwaW5jbF9tb2QgPSBTdGRsaWIuZnN0IHBpbmNsX21vZDtcbiAgICAgICAgICAgIHBpbmNsX2xvYyA9IFN0ZGxpYi5mc3QgcGluY2xfbG9jO1xuICAgICAgICAgICAgcGluY2xfYXR0cmlidXRlcyA9IFN0ZGxpYi5mc3QgcGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwaW5jbF9tb2RcIiwgU3RkbGliLnNuZCBwaW5jbF9tb2QpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9sb2NcIiwgU3RkbGliLnNuZCBwaW5jbF9sb2MpO1xuICAgICAgICAgICAgICAoXCJwaW5jbF9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcGluY2xfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBpbmNsdWRlX2Rlc2NyaXB0aW9uXG4gICAgICAgIDogJ2N0eCAtPiBpbmNsdWRlX2Rlc2NyaXB0aW9uIC0+IGluY2x1ZGVfZGVzY3JpcHRpb24gKiAncmVzID1cbiAgICAgIHNlbGYjaW5jbHVkZV9pbmZvcyBzZWxmI21vZHVsZV90eXBlXG5cbiAgICBtZXRob2QgaW5jbHVkZV9kZWNsYXJhdGlvblxuICAgICAgICA6ICdjdHggLT4gaW5jbHVkZV9kZWNsYXJhdGlvbiAtPiBpbmNsdWRlX2RlY2xhcmF0aW9uICogJ3JlcyA9XG4gICAgICBzZWxmI2luY2x1ZGVfaW5mb3Mgc2VsZiNtb2R1bGVfZXhwclxuXG4gICAgbWV0aG9kIHdpdGhfY29uc3RyYWludCA6ICdjdHggLT4gd2l0aF9jb25zdHJhaW50IC0+IHdpdGhfY29uc3RyYWludCAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IFB3aXRoX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI3R5cGVfZGVjbGFyYXRpb24gY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R1bGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdWxlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB3aXRoX21vZHVsZVwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfbW9kdHlwZSAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbW9kdWxlX3R5cGUgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHdpdGhfbW9kdHlwZSAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX21vZHR5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2R0eXBlc3Vic3RcIlxuICAgICAgICAgICAgICAgIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG4gICAgICAgIHwgUHdpdGhfdHlwZXN1YnN0IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudF9sb2MgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiN0eXBlX2RlY2xhcmF0aW9uIGN0eCBiIGluXG4gICAgICAgICAgICAoIFB3aXRoX3R5cGVzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF90eXBlc3Vic3RcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICBsZXQgYiA9IHNlbGYjbG9uZ2lkZW50X2xvYyBjdHggYiBpblxuICAgICAgICAgICAgKCBQd2l0aF9tb2RzdWJzdCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQd2l0aF9tb2RzdWJzdFwiIFsgU3RkbGliLnNuZCBhOyBTdGRsaWIuc25kIGIgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2V4cHIgOiAnY3R4IC0+IG1vZHVsZV9leHByIC0+IG1vZHVsZV9leHByICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1vZF9kZXNjOyBwbW9kX2xvYzsgcG1vZF9hdHRyaWJ1dGVzIH0gLT5cbiAgICAgICAgbGV0IHBtb2RfZGVzYyA9IHNlbGYjbW9kdWxlX2V4cHJfZGVzYyBjdHggcG1vZF9kZXNjIGluXG4gICAgICAgIGxldCBwbW9kX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBtb2RfbG9jIGluXG4gICAgICAgIGxldCBwbW9kX2F0dHJpYnV0ZXMgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IHBtb2RfYXR0cmlidXRlcyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBtb2RfZGVzYyA9IFN0ZGxpYi5mc3QgcG1vZF9kZXNjO1xuICAgICAgICAgICAgcG1vZF9sb2MgPSBTdGRsaWIuZnN0IHBtb2RfbG9jO1xuICAgICAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gU3RkbGliLmZzdCBwbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxmI3JlY29yZCBjdHhcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKFwicG1vZF9kZXNjXCIsIFN0ZGxpYi5zbmQgcG1vZF9kZXNjKTtcbiAgICAgICAgICAgICAgKFwicG1vZF9sb2NcIiwgU3RkbGliLnNuZCBwbW9kX2xvYyk7XG4gICAgICAgICAgICAgIChcInBtb2RfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHBtb2RfYXR0cmlidXRlcyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBtb2R1bGVfZXhwcl9kZXNjXG4gICAgICAgIDogJ2N0eCAtPiBtb2R1bGVfZXhwcl9kZXNjIC0+IG1vZHVsZV9leHByX2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQbW9kX2lkZW50IGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsb25naWRlbnRfbG9jIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfaWRlbnQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfaWRlbnRcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX3N0cnVjdHVyZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2Rfc3RydWN0dXJlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX3N0cnVjdHVyZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBtb2RfZnVuY3RvciAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNmdW5jdG9yX3BhcmFtZXRlciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV9leHByIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfZnVuY3RvciAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2Z1bmN0b3JcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfYXBwbHkgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYiBpblxuICAgICAgICAgICAgKCBQbW9kX2FwcGx5IChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBtb2RfYXBwbHlcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBtb2RfY29uc3RyYWludCAoYSwgYikgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfZXhwciBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI21vZHVsZV90eXBlIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBtb2RfY29uc3RyYWludCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2NvbnN0cmFpbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgfCBQbW9kX3VucGFjayBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXhwcmVzc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQbW9kX3VucGFjayAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUG1vZF91bnBhY2tcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQbW9kX2V4dGVuc2lvbiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjZXh0ZW5zaW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBtb2RfZXh0ZW5zaW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQbW9kX2V4dGVuc2lvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuXG4gICAgbWV0aG9kIHN0cnVjdHVyZSA6ICdjdHggLT4gc3RydWN0dXJlIC0+IHN0cnVjdHVyZSAqICdyZXMgPVxuICAgICAgc2VsZiNsaXN0IHNlbGYjc3RydWN0dXJlX2l0ZW1cblxuICAgIG1ldGhvZCBzdHJ1Y3R1cmVfaXRlbSA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW0gLT4gc3RydWN0dXJlX2l0ZW0gKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwc3RyX2Rlc2M7IHBzdHJfbG9jIH0gLT5cbiAgICAgICAgbGV0IHBzdHJfZGVzYyA9IHNlbGYjc3RydWN0dXJlX2l0ZW1fZGVzYyBjdHggcHN0cl9kZXNjIGluXG4gICAgICAgIGxldCBwc3RyX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBzdHJfbG9jIGluXG4gICAgICAgICggeyBwc3RyX2Rlc2MgPSBTdGRsaWIuZnN0IHBzdHJfZGVzYzsgcHN0cl9sb2MgPSBTdGRsaWIuZnN0IHBzdHJfbG9jIH0sXG4gICAgICAgICAgc2VsZiNyZWNvcmQgY3R4XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChcInBzdHJfZGVzY1wiLCBTdGRsaWIuc25kIHBzdHJfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBzdHJfbG9jXCIsIFN0ZGxpYi5zbmQgcHN0cl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2Qgc3RydWN0dXJlX2l0ZW1fZGVzY1xuICAgICAgICA6ICdjdHggLT4gc3RydWN0dXJlX2l0ZW1fZGVzYyAtPiBzdHJ1Y3R1cmVfaXRlbV9kZXNjICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHggLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4cHJlc3Npb24gY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBiIGluXG4gICAgICAgICAgICAoIFBzdHJfZXZhbCAoU3RkbGliLmZzdCBhLCBTdGRsaWIuZnN0IGIpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V2YWxcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfdmFsdWUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdmFsdWVfYmluZGluZyBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3ZhbHVlIChTdGRsaWIuZnN0IGEsIFN0ZGxpYi5mc3QgYiksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdmFsdWVcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBzdHJfcHJpbWl0aXZlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN2YWx1ZV9kZXNjcmlwdGlvbiBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX3ByaW1pdGl2ZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9wcmltaXRpdmVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3R5cGUgKGEsIGIpIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjcmVjX2ZsYWcgY3R4IGEgaW5cbiAgICAgICAgICAgIGxldCBiID0gc2VsZiNsaXN0IHNlbGYjdHlwZV9kZWNsYXJhdGlvbiBjdHggYiBpblxuICAgICAgICAgICAgKCBQc3RyX3R5cGUgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl90eXBlXCIgWyBTdGRsaWIuc25kIGE7IFN0ZGxpYi5zbmQgYiBdIClcbiAgICAgICAgfCBQc3RyX3R5cGV4dCBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjdHlwZV9leHRlbnNpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl90eXBleHQgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlBzdHJfdHlwZXh0XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUHN0cl9leGNlcHRpb24gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3R5cGVfZXhjZXB0aW9uIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfZXhjZXB0aW9uIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2V4Y2VwdGlvblwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdWxlIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNtb2R1bGVfYmluZGluZyBjdHggYSBpblxuICAgICAgICAgICAgKCBQc3RyX21vZHVsZSAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9tb2R1bGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX3JlY21vZHVsZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI21vZHVsZV9iaW5kaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfcmVjbW9kdWxlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX3JlY21vZHVsZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfbW9kdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9tb2R0eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX21vZHR5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX29wZW4gYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI29wZW5fZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9vcGVuIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX29wZW5cIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2NsYXNzIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNsaXN0IHNlbGYjY2xhc3NfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzcyAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9jbGFzc1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfY2xhc3NfdHlwZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjbGlzdCBzZWxmI2NsYXNzX3R5cGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9jbGFzc190eXBlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2NsYXNzX3R5cGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2luY2x1ZGUgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2luY2x1ZGVfZGVjbGFyYXRpb24gY3R4IGEgaW5cbiAgICAgICAgICAgICggUHN0cl9pbmNsdWRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2luY2x1ZGVcIiBbIFN0ZGxpYi5zbmQgYSBdIClcbiAgICAgICAgfCBQc3RyX2F0dHJpYnV0ZSBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjYXR0cmlidXRlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBzdHJfYXR0cmlidXRlIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQc3RyX2F0dHJpYnV0ZVwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2V4dGVuc2lvbiBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI2F0dHJpYnV0ZXMgY3R4IGIgaW5cbiAgICAgICAgICAgICggUHN0cl9leHRlbnNpb24gKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUHN0cl9leHRlbnNpb25cIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuXG4gICAgbWV0aG9kIHZhbHVlX2JpbmRpbmcgOiAnY3R4IC0+IHZhbHVlX2JpbmRpbmcgLT4gdmFsdWVfYmluZGluZyAqICdyZXMgPVxuICAgICAgZnVuIGN0eCB7IHB2Yl9wYXQ7IHB2Yl9leHByOyBwdmJfYXR0cmlidXRlczsgcHZiX2xvYyB9IC0+XG4gICAgICAgIGxldCBwdmJfcGF0ID0gc2VsZiNwYXR0ZXJuIGN0eCBwdmJfcGF0IGluXG4gICAgICAgIGxldCBwdmJfZXhwciA9IHNlbGYjZXhwcmVzc2lvbiBjdHggcHZiX2V4cHIgaW5cbiAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzID0gc2VsZiNhdHRyaWJ1dGVzIGN0eCBwdmJfYXR0cmlidXRlcyBpblxuICAgICAgICBsZXQgcHZiX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHB2Yl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwdmJfcGF0ID0gU3RkbGliLmZzdCBwdmJfcGF0O1xuICAgICAgICAgICAgcHZiX2V4cHIgPSBTdGRsaWIuZnN0IHB2Yl9leHByO1xuICAgICAgICAgICAgcHZiX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcHZiX2xvYyA9IFN0ZGxpYi5mc3QgcHZiX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIFN0ZGxpYi5zbmQgcHZiX3BhdCk7XG4gICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIFN0ZGxpYi5zbmQgcHZiX2V4cHIpO1xuICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBTdGRsaWIuc25kIHB2Yl9hdHRyaWJ1dGVzKTtcbiAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBTdGRsaWIuc25kIHB2Yl9sb2MpO1xuICAgICAgICAgICAgXSApXG5cbiAgICBtZXRob2QgbW9kdWxlX2JpbmRpbmcgOiAnY3R4IC0+IG1vZHVsZV9iaW5kaW5nIC0+IG1vZHVsZV9iaW5kaW5nICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcG1iX25hbWU7IHBtYl9leHByOyBwbWJfYXR0cmlidXRlczsgcG1iX2xvYyB9IC0+XG4gICAgICAgIGxldCBwbWJfbmFtZSA9IHNlbGYjbG9jIChzZWxmI29wdGlvbiBzZWxmI3N0cmluZykgY3R4IHBtYl9uYW1lIGluXG4gICAgICAgIGxldCBwbWJfZXhwciA9IHNlbGYjbW9kdWxlX2V4cHIgY3R4IHBtYl9leHByIGluXG4gICAgICAgIGxldCBwbWJfYXR0cmlidXRlcyA9IHNlbGYjYXR0cmlidXRlcyBjdHggcG1iX2F0dHJpYnV0ZXMgaW5cbiAgICAgICAgbGV0IHBtYl9sb2MgPSBzZWxmI2xvY2F0aW9uIGN0eCBwbWJfbG9jIGluXG4gICAgICAgICgge1xuICAgICAgICAgICAgcG1iX25hbWUgPSBTdGRsaWIuZnN0IHBtYl9uYW1lO1xuICAgICAgICAgICAgcG1iX2V4cHIgPSBTdGRsaWIuZnN0IHBtYl9leHByO1xuICAgICAgICAgICAgcG1iX2F0dHJpYnV0ZXMgPSBTdGRsaWIuZnN0IHBtYl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgcG1iX2xvYyA9IFN0ZGxpYi5mc3QgcG1iX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwbWJfbmFtZVwiLCBTdGRsaWIuc25kIHBtYl9uYW1lKTtcbiAgICAgICAgICAgICAgKFwicG1iX2V4cHJcIiwgU3RkbGliLnNuZCBwbWJfZXhwcik7XG4gICAgICAgICAgICAgIChcInBtYl9hdHRyaWJ1dGVzXCIsIFN0ZGxpYi5zbmQgcG1iX2F0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAoXCJwbWJfbG9jXCIsIFN0ZGxpYi5zbmQgcG1iX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCB0b3BsZXZlbF9waHJhc2UgOiAnY3R4IC0+IHRvcGxldmVsX3BocmFzZSAtPiB0b3BsZXZlbF9waHJhc2UgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdG9wX2RlZiBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RydWN0dXJlIGN0eCBhIGluXG4gICAgICAgICAgICAoIFB0b3BfZGVmIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQdG9wX2RlZlwiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFB0b3BfZGlyIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiN0b3BsZXZlbF9kaXJlY3RpdmUgY3R4IGEgaW5cbiAgICAgICAgICAgICggUHRvcF9kaXIgKFN0ZGxpYi5mc3QgYSksXG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eCBcIlB0b3BfZGlyXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgdG9wbGV2ZWxfZGlyZWN0aXZlXG4gICAgICAgIDogJ2N0eCAtPiB0b3BsZXZlbF9kaXJlY3RpdmUgLT4gdG9wbGV2ZWxfZGlyZWN0aXZlICogJ3JlcyA9XG4gICAgICBmdW4gY3R4IHsgcGRpcl9uYW1lOyBwZGlyX2FyZzsgcGRpcl9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcl9uYW1lID0gc2VsZiNsb2Mgc2VsZiNzdHJpbmcgY3R4IHBkaXJfbmFtZSBpblxuICAgICAgICBsZXQgcGRpcl9hcmcgPSBzZWxmI29wdGlvbiBzZWxmI2RpcmVjdGl2ZV9hcmd1bWVudCBjdHggcGRpcl9hcmcgaW5cbiAgICAgICAgbGV0IHBkaXJfbG9jID0gc2VsZiNsb2NhdGlvbiBjdHggcGRpcl9sb2MgaW5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBwZGlyX25hbWUgPSBTdGRsaWIuZnN0IHBkaXJfbmFtZTtcbiAgICAgICAgICAgIHBkaXJfYXJnID0gU3RkbGliLmZzdCBwZGlyX2FyZztcbiAgICAgICAgICAgIHBkaXJfbG9jID0gU3RkbGliLmZzdCBwZGlyX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyX25hbWVcIiwgU3RkbGliLnNuZCBwZGlyX25hbWUpO1xuICAgICAgICAgICAgICAoXCJwZGlyX2FyZ1wiLCBTdGRsaWIuc25kIHBkaXJfYXJnKTtcbiAgICAgICAgICAgICAgKFwicGRpcl9sb2NcIiwgU3RkbGliLnNuZCBwZGlyX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRcbiAgICAgICAgOiAnY3R4IC0+IGRpcmVjdGl2ZV9hcmd1bWVudCAtPiBkaXJlY3RpdmVfYXJndW1lbnQgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeyBwZGlyYV9kZXNjOyBwZGlyYV9sb2MgfSAtPlxuICAgICAgICBsZXQgcGRpcmFfZGVzYyA9IHNlbGYjZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgY3R4IHBkaXJhX2Rlc2MgaW5cbiAgICAgICAgbGV0IHBkaXJhX2xvYyA9IHNlbGYjbG9jYXRpb24gY3R4IHBkaXJhX2xvYyBpblxuICAgICAgICAoIHtcbiAgICAgICAgICAgIHBkaXJhX2Rlc2MgPSBTdGRsaWIuZnN0IHBkaXJhX2Rlc2M7XG4gICAgICAgICAgICBwZGlyYV9sb2MgPSBTdGRsaWIuZnN0IHBkaXJhX2xvYztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlbGYjcmVjb3JkIGN0eFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoXCJwZGlyYV9kZXNjXCIsIFN0ZGxpYi5zbmQgcGRpcmFfZGVzYyk7XG4gICAgICAgICAgICAgIChcInBkaXJhX2xvY1wiLCBTdGRsaWIuc25kIHBkaXJhX2xvYyk7XG4gICAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCBkaXJlY3RpdmVfYXJndW1lbnRfZGVzY1xuICAgICAgICA6ICdjdHggLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgLT4gZGlyZWN0aXZlX2FyZ3VtZW50X2Rlc2MgKiAncmVzID1cbiAgICAgIGZ1biBjdHggeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQZGlyX3N0cmluZyBhIC0+XG4gICAgICAgICAgICBsZXQgYSA9IHNlbGYjc3RyaW5nIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfc3RyaW5nIChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX3N0cmluZ1wiIFsgU3RkbGliLnNuZCBhIF0gKVxuICAgICAgICB8IFBkaXJfaW50IChhLCBiKSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI3N0cmluZyBjdHggYSBpblxuICAgICAgICAgICAgbGV0IGIgPSBzZWxmI29wdGlvbiBzZWxmI2NoYXIgY3R4IGIgaW5cbiAgICAgICAgICAgICggUGRpcl9pbnQgKFN0ZGxpYi5mc3QgYSwgU3RkbGliLmZzdCBiKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9pbnRcIiBbIFN0ZGxpYi5zbmQgYTsgU3RkbGliLnNuZCBiIF0gKVxuICAgICAgICB8IFBkaXJfaWRlbnQgYSAtPlxuICAgICAgICAgICAgbGV0IGEgPSBzZWxmI2xvbmdpZGVudCBjdHggYSBpblxuICAgICAgICAgICAgKCBQZGlyX2lkZW50IChTdGRsaWIuZnN0IGEpLFxuICAgICAgICAgICAgICBzZWxmI2NvbnN0ciBjdHggXCJQZGlyX2lkZW50XCIgWyBTdGRsaWIuc25kIGEgXSApXG4gICAgICAgIHwgUGRpcl9ib29sIGEgLT5cbiAgICAgICAgICAgIGxldCBhID0gc2VsZiNib29sIGN0eCBhIGluXG4gICAgICAgICAgICAoIFBkaXJfYm9vbCAoU3RkbGliLmZzdCBhKSxcbiAgICAgICAgICAgICAgc2VsZiNjb25zdHIgY3R4IFwiUGRpcl9ib29sXCIgWyBTdGRsaWIuc25kIGEgXSApXG5cbiAgICBtZXRob2QgY2FzZXMgOiAnY3R4IC0+IGNhc2VzIC0+IGNhc2VzICogJ3JlcyA9IHNlbGYjbGlzdCBzZWxmI2Nhc2VcbiAgZW5kXG5cbltAQEBlbmRdXG5bQEBAZW5kXVxuIiwib3BlbiBJbXBvcnRcblxudHlwZSB0ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnRcblxubGV0IHRvX2V4dGVuc2lvbiAoZXJyb3IgOiBBc3RsaWIuTG9jYXRpb24uRXJyb3IudCkgPVxuICBsZXQgb3BlbiBBc3RsaWIuTG9jYXRpb24uRXJyb3IgaW5cbiAgbGV0IG9wZW4gQXN0X2hlbHBlciBpblxuICBpZiBub3QgKGlzX3dlbGxfZm9ybWVkIGVycm9yKSB0aGVuXG4gICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJ0b19leHRlbnNpb246IGV4cGVjdGVkIGtpbmQgUmVwb3J0X2Vycm9yXCIpO1xuICBsZXQgc3ViX21zZ3MgPSBzdWJfbXNncyBlcnJvciBpblxuICBsZXQgbWFpbl9tc2cgPSBtYWluX21zZyBlcnJvciBpblxuICBsZXQgZXJyX2V4dGVuc2lvbl9uYW1lIGxvYyA9IHsgTG9jYXRpb24ubG9jOyB0eHQgPSBcIm9jYW1sLmVycm9yXCIgfSBpblxuICBsZXQgbWtfc3RyaW5nX2NvbnN0YW50IHggPSBTdHIuZXZhbCAoRXhwLmNvbnN0YW50IChDb25zdC5zdHJpbmcgeCkpIGluXG4gIGxldCBleHRlbnNpb25fb2Zfc3ViX21zZyAoc3ViX21zZyA6IHN0cmluZyBMb2NhdGlvbi5sb2MpID1cbiAgICBTdHIuZXh0ZW5zaW9uXG4gICAgICAoZXJyX2V4dGVuc2lvbl9uYW1lIHN1Yl9tc2cubG9jLCBQU3RyIFsgbWtfc3RyaW5nX2NvbnN0YW50IHN1Yl9tc2cudHh0IF0pXG4gIGluXG4gICggZXJyX2V4dGVuc2lvbl9uYW1lIG1haW5fbXNnLmxvYyxcbiAgICBQYXJzZXRyZWUuUFN0clxuICAgICAgKG1rX3N0cmluZ19jb25zdGFudCBtYWluX21zZy50eHQgOjogTGlzdC5tYXAgZXh0ZW5zaW9uX29mX3N1Yl9tc2cgc3ViX21zZ3MpXG4gIClcblxubGV0IHJlZ2lzdGVyX2Vycm9yX29mX2V4biA9IEFzdGxpYi5Mb2NhdGlvbi5yZWdpc3Rlcl9lcnJvcl9vZl9leG5cblxubGV0IG1lc3NhZ2UgZXJyb3IgPVxuICBsZXQgeyBBc3RsaWIuTG9jYXRpb24udHh0OyBfIH0gPSBBc3RsaWIuTG9jYXRpb24uRXJyb3IubWFpbl9tc2cgZXJyb3IgaW5cbiAgdHh0XG5cbmxldCBzZXRfbWVzc2FnZSA9IEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5zZXRfbWFpbl9tc2dcblxubGV0IG1ha2UgfmxvYyB0eHQgfnN1YiA9XG4gIGxldCBzdWIgPSBMaXN0Lm1hcCAoZnVuIChsb2MsIHR4dCkgLT4geyBBc3RsaWIuTG9jYXRpb24ubG9jOyB0eHQgfSkgc3ViIGluXG4gIEFzdGxpYi5Mb2NhdGlvbi5FcnJvci5tYWtlIH5zdWIgeyBsb2M7IHR4dCB9XG5cbmxldCB1cGRhdGVfbG9jID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLnNldF9tYWluX2xvY1xuXG5sZXQgZ2V0X2xvY2F0aW9uIGVycm9yID1cbiAgbGV0IHsgQXN0bGliLkxvY2F0aW9uLmxvYzsgXyB9ID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm1haW5fbXNnIGVycm9yIGluXG4gIGxvY1xuXG5sZXQgb2ZfZXhuID0gQXN0bGliLkxvY2F0aW9uLkVycm9yLm9mX2V4blxubGV0IHJhaXNlIGVycm9yID0gcmFpc2UgKEFzdGxpYi5Mb2NhdGlvbi5FcnJvciBlcnJvcilcbiIsIm1vZHVsZSBEb19ub3RfdXNlX2RpcmVjdGx5ID0gc3RydWN0IGVuZFxubW9kdWxlIEFmbF9pbnN0cnVtZW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFmbF9pbnN0cnVtZW50IGluc3RlYWRcIl1cbm1vZHVsZSBBbGlhc19hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5BbGlhc19hbmFseXNpcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQWxsb2NhdGVkX2NvbnN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkFsbG9jYXRlZF9jb25zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQW5ub3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEFyY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXJjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgQXJnX2hlbHBlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFyZ19oZWxwZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21nZW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpYnJhcmlhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Bc21saWJyYXJpYW4gaW5zdGVhZFwiXVxubW9kdWxlIEFzbWxpbmsgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtbGluayBpbnN0ZWFkXCJdXG5tb2R1bGUgQXNtcGFja2FnZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQXNtcGFja2FnZXIgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaGVscGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkFzdF9pbnZhcmlhbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBBc3RfaXRlcmF0b3IgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIEFzdF9tYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Bc3RfbWFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBBc3R0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQXR0cl9oZWxwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5BdHRyX2hlbHBlciBpbnN0ZWFkXCJdXG5tb2R1bGUgQXVnbWVudF9zcGVjaWFsaXNlZF9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkF1Z21lbnRfc3BlY2lhbGlzZWRfYXJncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQmFja2VuZF9pbnRmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBCYWNrZW5kX3ZhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5CYWNrZW5kX3ZhciBpbnN0ZWFkXCJdXG5tb2R1bGUgQmludXRpbHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CaW51dGlscyBpbnN0ZWFkXCJdXG5tb2R1bGUgQnJhbmNoX3JlbGF4YXRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb24gaW5zdGVhZFwiXVxubW9kdWxlIEJyYW5jaF9yZWxheGF0aW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnJhbmNoX3JlbGF4YXRpb25faW50ZiBpbnN0ZWFkXCJdXG5tb2R1bGUgQnR5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbGRfZXhwb3J0X2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQnVpbGRfZXhwb3J0X2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIEJ1aWxkX3BhdGhfcHJlZml4X21hcCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkJ1aWxkX3BhdGhfcHJlZml4X21hcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQnVpbHRpbl9hdHRyaWJ1dGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQnVpbHRpbl9hdHRyaWJ1dGVzIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlZ2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGlicmFyaWFuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5CeXRlbGlicmFyaWFuIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlbGluayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZWxpbmsgaW5zdGVhZFwiXVxubW9kdWxlIEJ5dGVwYWNrYWdlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQnl0ZXBhY2thZ2VyIGluc3RlYWRcIl1cbm1vZHVsZSBCeXRlc2VjdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5CeXRlc2VjdGlvbnMgaW5zdGVhZFwiXVxubW9kdWxlIENTRSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0UgaW5zdGVhZFwiXVxubW9kdWxlIENTRWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DU0VnZW4gaW5zdGVhZFwiXVxubW9kdWxlIENhbWxpbnRlcm5hbE1lbmhpckxpYiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNhbWxpbnRlcm5hbE1lbmhpckxpYiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2NvbXAgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DY29tcCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBDbGFtYmRhX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBDbGZsYWdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ2xmbGFncyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9jb252ZXJzaW9uIGluc3RlYWRcIl1cbm1vZHVsZSBDbG9zdXJlX2NvbnZlcnNpb25fYXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfY29udmVyc2lvbl9hdXggaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfZWxlbWVudCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbG9zdXJlX2VsZW1lbnQgaW5zdGVhZFwiXVxubW9kdWxlIENsb3N1cmVfaWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9pZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9taWRkbGVfZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfbWlkZGxlX2VuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vZmZzZXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNsb3N1cmVfb2Zmc2V0cyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ2xvc3VyZV9vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ2xvc3VyZV9vcmlnaW4gaW5zdGVhZFwiXVxubW9kdWxlIENtaV9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DbWlfZm9ybWF0IGluc3RlYWRcIl1cbm1vZHVsZSBDbW0gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tIGluc3RlYWRcIl1cbm1vZHVsZSBDbW1faGVscGVycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1faGVscGVycyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ21tX2ludmFyaWFudHMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ21tX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW4gaW5zdGVhZFwiXVxubW9kdWxlIENtbWdlbl9zdGF0ZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5DbW1nZW5fc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIENtb19mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENtdDJhbm5vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdDJhbm5vdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ210X2Zvcm1hdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNtdF9mb3JtYXQgaW5zdGVhZFwiXVxubW9kdWxlIENteF9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENteHNfZm9ybWF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBDb2xvcmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Db2xvcmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tYmFsbG9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbWJhbGxvYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbXBlbnYgaW5zdGVhZFwiXVxubW9kdWxlIENvbXBpbGF0aW9uX3VuaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuQ29tcGlsYXRpb25fdW5pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuQ29tcGlsZSBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZV9jb21tb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21waWxlX2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcGlsZW52ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbXBpbGVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29tcG1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Db21wbWlzYyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29uZmlnID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uQ29uZmlnIGluc3RlYWRcIl1cbm1vZHVsZSBDb25maWdfYm9vdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgQ29uZmlnX21haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIENvbnNpc3RibCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkNvbnNpc3RibCBpbnN0ZWFkXCJdXG5tb2R1bGUgQ29udmVydF9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkNvbnZlcnRfcHJpbWl0aXZlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgQ3R5cGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5DdHlwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgRGF0YWZsb3cgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRGF0YWZsb3cgaW5zdGVhZFwiXVxubW9kdWxlIERhdGFyZXByID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGF0YXJlcHIgaW5zdGVhZFwiXVxubW9kdWxlIERlYWRjb2RlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkRlYWRjb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBEZWJ1Z2luZm8gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5EZWJ1Z2luZm8gaW5zdGVhZFwiXVxubW9kdWxlIERlcGVuZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgRGlmZmluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRpZmZpbmcgaW5zdGVhZFwiXVxubW9kdWxlIERpZmZpbmdfd2l0aF9rZXlzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRGlmZmluZ193aXRoX2tleXMgaW5zdGVhZFwiXVxubW9kdWxlIERsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgRG9jc3RyaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkRvY3N0cmluZ3MgaW5zdGVhZFwiXVxubW9kdWxlIERvbWFpbnN0YXRlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRG9tYWluc3RhdGUgaW5zdGVhZFwiXVxubW9kdWxlIEVmZmVjdF9hbmFseXNpcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FZmZlY3RfYW5hbHlzaXMgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRW1pdCBpbnN0ZWFkXCJdXG5tb2R1bGUgRW1pdGF1eCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FbWl0YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFbWl0Y29kZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuRW1pdGNvZGUgaW5zdGVhZFwiXVxubW9kdWxlIEVtaXRlbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIEVudiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVudiBpbnN0ZWFkXCJdXG5tb2R1bGUgRW52YXV4ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uRW52YXV4IGluc3RlYWRcIl1cbm1vZHVsZSBFcnJvcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2J5dGVjb21wLkVycm9ycyBpbnN0ZWFkXCJdXG5tb2R1bGUgRXJyb3J0cmFjZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkVycm9ydHJhY2UgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaWQgaW5zdGVhZFwiXVxubW9kdWxlIEV4cG9ydF9pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkV4cG9ydF9pbmZvIGluc3RlYWRcIl1cbm1vZHVsZSBFeHBvcnRfaW5mb19mb3JfcGFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHBvcnRfaW5mb19mb3JfcGFjayBpbnN0ZWFkXCJdXG5tb2R1bGUgRXhwdW5nZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgRXh0cmFjdF9wcm9qZWN0aW9ucyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5FeHRyYWN0X3Byb2plY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGaW5kX3JlY3Vyc2l2ZV9mdW5jdGlvbnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmluZF9yZWN1cnNpdmVfZnVuY3Rpb25zIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaW52YXJpYW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5GbGFtYmRhX2ludmFyaWFudHMgaW5zdGVhZFwiXVxubW9kdWxlIEZsYW1iZGFfaXRlcmF0b3JzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfaXRlcmF0b3JzIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX21pZGRsZV9lbmQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV9taWRkbGVfZW5kIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3RvX2NsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRmxhbWJkYV90b19jbGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBGbGFtYmRhX3V0aWxzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkZsYW1iZGFfdXRpbHMgaW5zdGVhZFwiXVxubW9kdWxlIEZyZXNoZW5pbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuRnJlc2hlbmluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgR2VucHJpbnR2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLkdlbnByaW50dmFsIGluc3RlYWRcIl1cbm1vZHVsZSBJZF90eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JZF90eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JZGVudCBpbnN0ZWFkXCJdXG5tb2R1bGUgSWRlbnRpZmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSWRlbnRpZmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBJbXBvcnRfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkltcG9ydF9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVjbGFzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVjbGFzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZWNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbmNsdWRlY29yZSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5jbHVkZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkluY2x1ZGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIEluY2x1ZGVtb2RfZXJyb3JwcmludGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uSW5jbHVkZW1vZF9lcnJvcnByaW50ZXIgaW5zdGVhZFwiXVxubW9kdWxlIEluY29uc3RhbnRfaWRlbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluY29uc3RhbnRfaWRlbnRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbml0aWFsaXplX3N5bWJvbF90b19sZXRfc3ltYm9sID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkluaXRpYWxpemVfc3ltYm9sX3RvX2xldF9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIElubGluZV9hbmRfc2ltcGxpZnkgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeSBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5lX2FuZF9zaW1wbGlmeV9hdXggaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2Nvc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfY29zdCBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfZGVjaXNpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW5saW5pbmdfZGVjaXNpb24gaW5zdGVhZFwiXVxubW9kdWxlIElubGluaW5nX2RlY2lzaW9uX2ludGYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIElubGluaW5nX3N0YXRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLklubGluaW5nX3N0YXRzIGluc3RlYWRcIl1cbm1vZHVsZSBJbmxpbmluZ19zdGF0c190eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ19zdGF0c190eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW5saW5pbmdfdHJhbnNmb3JtcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbmxpbmluZ190cmFuc2Zvcm1zIGluc3RlYWRcIl1cbm1vZHVsZSBJbnN0cnVjdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuSW5zdHJ1Y3QgaW5zdGVhZFwiXVxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5JbnRfcmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJmIGluc3RlYWRcIl1cbm1vZHVsZSBJbnRlcm5hbF92YXJpYWJsZV9uYW1lcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5JbnRlcm5hbF92YXJpYWJsZV9uYW1lcyBpbnN0ZWFkXCJdXG5tb2R1bGUgSW50ZXJ2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW50ZXJ2YWwgaW5zdGVhZFwiXVxubW9kdWxlIEludmFyaWFudF9wYXJhbXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuSW52YXJpYW50X3BhcmFtcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGFtYmRhID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTGFtYmRhIGluc3RlYWRcIl1cbm1vZHVsZSBMYXp5X2JhY2t0cmFjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxhenlfYmFja3RyYWNrIGluc3RlYWRcIl1cbm1vZHVsZSBMZXhlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxleGVyIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvZGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9jb2RlIGluc3RlYWRcIl1cbm1vZHVsZSBMaWZ0X2NvbnN0YW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaWZ0X2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGlmdF9sZXRfdG9faW5pdGlhbGl6ZV9zeW1ib2wgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIExpbmVhcl9mb3JtYXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTGluZWFyX2Zvcm1hdCBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluZWFyaXplID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmVhcml6ZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGlua2FnZV9uYW1lID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLkxpbmthZ2VfbmFtZSBpbnN0ZWFkXCJdXG5tb2R1bGUgTGluc2NhbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaW5zY2FuIGluc3RlYWRcIl1cbm1vZHVsZSBMaXZlbmVzcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5MaXZlbmVzcyBpbnN0ZWFkXCJdXG5tb2R1bGUgTG9hZF9wYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTG9hZF9wYXRoIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhbF9zdG9yZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2FsX3N0b3JlIGluc3RlYWRcIl1cbm1vZHVsZSBMb2NhdGlvbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLkxvY2F0aW9uIGluc3RlYWRcIl1cbm1vZHVsZSBMb25naWRlbnQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Mb25naWRlbnQgaW5zdGVhZFwiXVxubW9kdWxlIE1hY2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuTWFjaCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWFpbiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgTWFpbl9hcmdzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFpbl9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBNYWluZHJpdmVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9ieXRlY29tcC5NYWluZHJpdmVyIGluc3RlYWRcIl1cbm1vZHVsZSBNYWtlZGVwZW5kID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uTWFrZWRlcGVuZCBpbnN0ZWFkXCJdXG5tb2R1bGUgTWF0Y2hpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NYXRjaGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgTWV0YSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk1ldGEgaW5zdGVhZFwiXVxubW9kdWxlIE1pc2MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5NaXNjIGluc3RlYWRcIl1cbm1vZHVsZSBNdHlwZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLk10eXBlIGluc3RlYWRcIl1cbm1vZHVsZSBNdXRhYmxlX3ZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk11dGFibGVfdmFyaWFibGUgaW5zdGVhZFwiXVxubW9kdWxlIE51bWJlcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5OdW1iZXJzIGluc3RlYWRcIl1cbm1vZHVsZSBPcGNvZGVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3Bjb2RlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgT3ByaW50ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uT3ByaW50IGluc3RlYWRcIl1cbm1vZHVsZSBPcHRjb21waWxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLk9wdGNvbXBpbGUgaW5zdGVhZFwiXVxubW9kdWxlIE9wdGVycm9ycyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5PcHRlcnJvcnMgaW5zdGVhZFwiXVxubW9kdWxlIE9wdG1haW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIE9wdG1haW5kcml2ZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuT3B0bWFpbmRyaXZlciBpbnN0ZWFkXCJdXG5tb2R1bGUgT3V0Y29tZXRyZWUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZFwiXVxubW9kdWxlIFBhcmFtZXRlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QYXJhbWV0ZXIgaW5zdGVhZFwiXVxubW9kdWxlIFBhcm1hdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBhcnNlciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBhcnNlciBpbnN0ZWFkXCJdXG5tb2R1bGUgUGFyc2V0cmVlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBQYXNzX3dyYXBwZXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUGFzc193cmFwcGVyIGluc3RlYWRcIl1cbm1vZHVsZSBQYXRoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUGF0aCBpbnN0ZWFkXCJdXG5tb2R1bGUgUGF0dGVybnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QYXR0ZXJucyBpbnN0ZWFkXCJdXG5tb2R1bGUgUGVyc2lzdGVudF9lbnYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QZXJzaXN0ZW50X2VudiBpbnN0ZWFkXCJdXG5tb2R1bGUgUG9sbGluZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5Qb2xsaW5nIGluc3RlYWRcIl1cbm1vZHVsZSBQcGFyc2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcGFyc2UgaW5zdGVhZFwiXVxubW9kdWxlIFBwcmludGFzdCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlBwcmludGFzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJlZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJlZGVmIGluc3RlYWRcIl1cbm1vZHVsZSBQcmltaXRpdmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmltaXRpdmUgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50YXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNsYW1iZGEgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50Y2xhbWJkYV9wcmltaXRpdmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByaW50Y2xhbWJkYV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBQcmludGNtbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludGNtbSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRpbnN0ciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfYnl0ZWNvbXAuUHJpbnRpbnN0ciBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsYW1iZGEgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludGxhbWJkYSBpbnN0ZWFkXCJdXG5tb2R1bGUgUHJpbnRsaW5lYXIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUHJpbnRsaW5lYXIgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50bWFjaCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5QcmludG1hY2ggaW5zdGVhZFwiXVxubW9kdWxlIFByaW50cGF0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnRwYXQgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUHJpbnR0eXAgaW5zdGVhZFwiXVxubW9kdWxlIFByaW50dHlwZWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5QcmludHR5cGVkIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2MgaW5zdGVhZFwiXVxubW9kdWxlIFByb2ZpbGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5Qcm9maWxlIGluc3RlYWRcIl1cbm1vZHVsZSBQcm9qZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlByb2plY3Rpb24gaW5zdGVhZFwiXVxubW9kdWxlIFJlY19jaGVjayA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlJlY19jaGVjayBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVmX3RvX3ZhcmlhYmxlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZWZfdG9fdmFyaWFibGVzIGluc3RlYWRcIl1cbm1vZHVsZSBSZWcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVnIGluc3RlYWRcIl1cbm1vZHVsZSBSZWxvYWQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVsb2FkIGluc3RlYWRcIl1cbm1vZHVsZSBSZWxvYWRnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVsb2FkZ2VuIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfZnJlZV92YXJzX2VxdWFsX3RvX2FyZ3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX2ZyZWVfdmFyc19lcXVhbF90b19hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBSZW1vdmVfdW51c2VkX2FyZ3VtZW50cyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5SZW1vdmVfdW51c2VkX2FyZ3VtZW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgUmVtb3ZlX3VudXNlZF9jbG9zdXJlX3ZhcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuUmVtb3ZlX3VudXNlZF9jbG9zdXJlX3ZhcnMgaW5zdGVhZFwiXVxubW9kdWxlIFJlbW92ZV91bnVzZWRfcHJvZ3JhbV9jb25zdHJ1Y3RzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlJlbW92ZV91bnVzZWRfcHJvZ3JhbV9jb25zdHJ1Y3RzIGluc3RlYWRcIl1cbm1vZHVsZSBSdW50aW1lZGVmID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uUnVudGltZWRlZiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2NoZWRnZW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2NoZWRnZW4gaW5zdGVhZFwiXVxubW9kdWxlIFNjaGVkdWxpbmcgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2NoZWR1bGluZyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VsZWN0Z2VuID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbGVjdGdlbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VsZWN0aW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNlbGVjdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2VtYW50aWNzX29mX3ByaW1pdGl2ZXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2VtYW50aWNzX29mX3ByaW1pdGl2ZXMgaW5zdGVhZFwiXVxubW9kdWxlIFNldF9vZl9jbG9zdXJlc19pZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TZXRfb2ZfY2xvc3VyZXNfaWQgaW5zdGVhZFwiXVxubW9kdWxlIFNldF9vZl9jbG9zdXJlc19vcmlnaW4gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU2V0X29mX2Nsb3N1cmVzX29yaWdpbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaGFwZSBpbnN0ZWFkXCJdXG5tb2R1bGUgU2hhcmVfY29uc3RhbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNoYXJlX2NvbnN0YW50cyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2lnbmF0dXJlX2dyb3VwID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU2lnbmF0dXJlX2dyb3VwIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGVfdmFsdWVfYXBwcm94ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsZV92YWx1ZV9hcHByb3ggaW5zdGVhZFwiXVxubW9kdWxlIFNpbXBsaWYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TaW1wbGlmIGluc3RlYWRcIl1cbm1vZHVsZSBTaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9ib3hlZF9pbnRlZ2VyX29wcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfYm94ZWRfaW50ZWdlcl9vcHNfaW50ZiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgU2ltcGxpZnlfY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlNpbXBsaWZ5X2NvbW1vbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU2ltcGxpZnlfcHJpbWl0aXZlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TaW1wbGlmeV9wcmltaXRpdmVzIGluc3RlYWRcIl1cbm1vZHVsZSBTcGlsbCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5TcGlsbCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3BsaXQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3BsaXQgaW5zdGVhZFwiXVxubW9kdWxlIFN0YXRpY19leGNlcHRpb24gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RhdGljX2V4Y2VwdGlvbiBpbnN0ZWFkXCJdXG5tb2R1bGUgU3RybWF0Y2ggPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3RybWF0Y2ggaW5zdGVhZFwiXVxubW9kdWxlIFN0cm9uZ2x5X2Nvbm5lY3RlZF9jb21wb25lbnRzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3Ryb25nbHlfY29ubmVjdGVkX2NvbXBvbmVudHMgaW5zdGVhZFwiXVxubW9kdWxlIFN0eXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN0eXBlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgU3Vic3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TdWJzdCBpbnN0ZWFkXCJdXG5tb2R1bGUgU3dpdGNoID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uU3dpdGNoIGluc3RlYWRcIl1cbm1vZHVsZSBTeW1ib2wgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuU3ltYm9sIGluc3RlYWRcIl1cbm1vZHVsZSBTeW10YWJsZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlN5bXRhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBTeW50YXhlcnIgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5TeW50YXhlcnIgaW5zdGVhZFwiXVxubW9kdWxlIFRhZyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5UYWcgaW5zdGVhZFwiXVxubW9kdWxlIFRhcmdldGludCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhcmdldGludCBpbnN0ZWFkXCJdXG5tb2R1bGUgVGFzdF9pdGVyYXRvciA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRhc3RfaXRlcmF0b3IgaW5zdGVhZFwiXVxubW9kdWxlIFRhc3RfbWFwcGVyID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGFzdF9tYXBwZXIgaW5zdGVhZFwiXVxubW9kdWxlIFRlcm1pbmZvID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVGVybWluZm8gaW5zdGVhZFwiXVxubW9kdWxlIFRtYyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRtYyBpbnN0ZWFkXCJdXG5tb2R1bGUgVG9wY29tbW9uID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bjb21tb24gaW5zdGVhZFwiXVxubW9kdWxlIFRvcGRpcnMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGRpcnMgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGV2YWwgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRvcGV2YWwgaW5zdGVhZFwiXVxubW9kdWxlIFRvcGhvb2tzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBUb3Bsb29wID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3Bsb29wIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BtYWluID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF90b3BsZXZlbC5Ub3BtYWluIGluc3RlYWRcIl1cbm1vZHVsZSBUb3BzdGFydCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkXCJdXG5tb2R1bGUgVHJhY2UgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX3RvcGxldmVsLlRyYWNlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xhdHRyaWJ1dGUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xhdHRyaWJ1dGUgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNsYXNzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHJhbnNsY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbGNvcmUgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xjb3JlIGluc3RlYWRcIl1cbm1vZHVsZSBUcmFuc2xtb2QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UcmFuc2xtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFRyYW5zbG9iaiA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbG9iaiBpbnN0ZWFkXCJdXG5tb2R1bGUgVHJhbnNscHJpbSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlRyYW5zbHByaW0gaW5zdGVhZFwiXVxubW9kdWxlIFRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlRyYXZlcnNlX2Zvcl9leHBvcnRlZF9zeW1ib2xzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVfaW1tZWRpYWN5IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlY2xhc3MgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlY2xhc3MgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVjb3JlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWNvcmUgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2wgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX2ltbWVkaWFjeSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX2ltbWVkaWFjeSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfcHJvcGVydGllcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3Byb3BlcnRpZXMgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3NlcGFyYWJpbGl0eSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3NlcGFyYWJpbGl0eSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZWRlY2xfdW5ib3hlZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkZWNsX3VuYm94ZWQgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkZWNsX3ZhcmlhbmNlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9jb21tb24uVHlwZWRlY2xfdmFyaWFuY2UgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVkdHJlZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVkdHJlZSBpbnN0ZWFkXCJdXG5tb2R1bGUgVHlwZW1vZCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVtb2QgaW5zdGVhZFwiXVxubW9kdWxlIFR5cGVvcHQgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5UeXBlb3B0IGluc3RlYWRcIl1cbm1vZHVsZSBUeXBlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGVzIGluc3RlYWRcIl1cbm1vZHVsZSBUeXBldGV4cCA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLlR5cGV0ZXhwIGluc3RlYWRcIl1cbm1vZHVsZSBVbl9hbmYgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuVW5fYW5mIGluc3RlYWRcIl1cbm1vZHVsZSBVbmJveF9jbG9zdXJlcyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfZnJlZV92YXJzX29mX2Nsb3N1cmVzID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlVuYm94X2ZyZWVfdmFyc19vZl9jbG9zdXJlcyBpbnN0ZWFkXCJdXG5tb2R1bGUgVW5ib3hfc3BlY2lhbGlzZWRfYXJncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5VbmJveF9zcGVjaWFsaXNlZF9hcmdzIGluc3RlYWRcIl1cbm1vZHVsZSBVbnR5cGVhc3QgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX2NvbW1vbi5VbnR5cGVhc3QgaW5zdGVhZFwiXVxubW9kdWxlIFZhcl93aXRoaW5fY2xvc3VyZSA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfb3B0Y29tcC5WYXJfd2l0aGluX2Nsb3N1cmUgaW5zdGVhZFwiXVxubW9kdWxlIFZhcmlhYmxlID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlZhcmlhYmxlIGluc3RlYWRcIl1cbm1vZHVsZSBXYXJuaW5ncyA9IERvX25vdF91c2VfZGlyZWN0bHkgW0BAZGVwcmVjYXRlZCBcIkFjY2Vzc2luZyB0aGlzIG1vZHVsZSBkaXJlY3RseSBpcyBkZXByZWNhdGVkLCB1c2UgT2NhbWxfY29tbW9uLldhcm5pbmdzIGluc3RlYWRcIl1cbm1vZHVsZSBYODZfYXN0ID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWRcIl1cbm1vZHVsZSBYODZfZHNsID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9kc2wgaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9nYXMgPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X2dhcyBpbnN0ZWFkXCJdXG5tb2R1bGUgWDg2X21hc20gPSBEb19ub3RfdXNlX2RpcmVjdGx5IFtAQGRlcHJlY2F0ZWQgXCJBY2Nlc3NpbmcgdGhpcyBtb2R1bGUgZGlyZWN0bHkgaXMgZGVwcmVjYXRlZCwgdXNlIE9jYW1sX29wdGNvbXAuWDg2X21hc20gaW5zdGVhZFwiXVxubW9kdWxlIFg4Nl9wcm9jID0gRG9fbm90X3VzZV9kaXJlY3RseSBbQEBkZXByZWNhdGVkIFwiQWNjZXNzaW5nIHRoaXMgbW9kdWxlIGRpcmVjdGx5IGlzIGRlcHJlY2F0ZWQsIHVzZSBPY2FtbF9vcHRjb21wLlg4Nl9wcm9jIGluc3RlYWRcIl1cbiIsIm9wZW4gU3RkTGFiZWxzXG5cbmxldCBwYXRkaWZmX2NtZCB+dXNlX2NvbG9yIH5leHRyYV9wYXRkaWZmX2FyZ3MgPVxuICBsZXQgYXJncyA9XG4gICAgTGlzdC5jb25jYXRcbiAgICAgIFtcbiAgICAgICAgWyBcIi1rZWVwLXdoaXRlc3BhY2VcIiBdO1xuICAgICAgICBbIFwiLWxvY2F0aW9uLXN0eWxlIG9tYWtlXCIgXTtcbiAgICAgICAgKGlmIHVzZV9jb2xvciB0aGVuIFtdIGVsc2UgWyBcIi1hc2NpaVwiIF0pO1xuICAgICAgICBleHRyYV9wYXRkaWZmX2FyZ3M7XG4gICAgICBdXG4gIGluXG4gIFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiAoXCJwYXRkaWZmXCIgOjogYXJncylcblxubGV0IHByaW50ID9kaWZmX2NvbW1hbmQgPyhleHRyYV9wYXRkaWZmX2FyZ3MgPSBbXSkgPyh1c2VfY29sb3IgPSBmYWxzZSkgfmZpbGUxXG4gICAgfmZpbGUyICgpID1cbiAgbGV0IGV4ZWMgY21kID1cbiAgICBsZXQgY21kID1cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgMT4mMlwiIGNtZCAoRmlsZW5hbWUucXVvdGUgZmlsZTEpXG4gICAgICAgIChGaWxlbmFtZS5xdW90ZSBmaWxlMilcbiAgICBpblxuICAgIG1hdGNoIFN5cy5jb21tYW5kIGNtZCB3aXRoXG4gICAgfCAwIC0+IGBTYW1lXG4gICAgfCAxIC0+IGBEaWZmZXJlbnRcbiAgICB8IG4gLT4gYEVycm9yIChuLCBjbWQpXG4gIGluXG4gIG1hdGNoIGRpZmZfY29tbWFuZCB3aXRoXG4gIHwgU29tZSBzIC0+IGlnbm9yZSAoZXhlYyBzIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKVxuICB8IE5vbmUgLT4gKFxuICAgICAgbWF0Y2ggZXhlYyAocGF0ZGlmZl9jbWQgfnVzZV9jb2xvciB+ZXh0cmFfcGF0ZGlmZl9hcmdzKSB3aXRoXG4gICAgICB8IGBTYW1lIC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiBwcm9kdWNlZCBubyBvdXRwdXQsIGZhbGxiYWNrIHRvIGRpZmYgLXUgKilcbiAgICAgICAgICBQcmludGYuZXByaW50ZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAxLCBjaGFyYWN0ZXJzIDAtMDpcXG4lIVwiIGZpbGUxO1xuICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgKGV4ZWMgXCJkaWZmIC11XCIgOiBbPiBgU2FtZSB8IGBEaWZmZXJlbnQgfCBgRXJyb3Igb2YgaW50ICogc3RyaW5nIF0pXG4gICAgICB8IGBEaWZmZXJlbnQgLT5cbiAgICAgICAgICAoKiBwYXRkaWZmIHN1Y2Nlc3NmdWxseSBmb3VuZCBhIGRpZmZlcmVuY2UgKilcbiAgICAgICAgICAoKVxuICAgICAgfCBgRXJyb3IgKGVycl9jb2RlLCBjbWQpIC0+XG4gICAgICAgICAgKCogcGF0ZGlmZiB0aHJldyBhbiBlcnJvci4uLiBwZXJoYXBzIGl0IHdhc24ndCBpbnN0YWxsZWQ/IGZhbGxiYWNrIHRvIGRpZmYgLXUgKilcbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJFcnJvcjpcXG5cXFxuICAgICAgICAgICAgID4gJVMgZXhpdGVkIHdpdGggY29kZSAlZFxcblxcXG4gICAgICAgICAgICAgPiBQZXJoYXBzIHBhdGRpZmYgaXMgbm90IGluc3RhbGxlZD8gSGludCwgdHJ5OiBvcGFtIGluc3RhbGwgcGF0ZGlmZlxcblxcXG4gICAgICAgICAgICAgPiBGYWxsaW5nIGJhY2sgdG8gZGlmZiAtdVxcblxcblwiXG4gICAgICAgICAgICBjbWQgZXJyX2NvZGU7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgMSwgY2hhcmFjdGVycyAwLTA6XFxuJSFcIiBmaWxlMTtcbiAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgIChleGVjIFwiZGlmZiAtdVwiIDogWz4gYFNhbWUgfCBgRGlmZmVyZW50IHwgYEVycm9yIG9mIGludCAqIHN0cmluZyBdKSlcbiIsInR5cGUgZGVyaXZlciA9IC4uXG5cbmxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSA0MlxuXG5sZXQgcmVnaXN0ZXIgbmFtZSBkZXJpdmVyID1cbiAgaWYgSGFzaHRibC5tZW0gYWxsIG5hbWUgdGhlblxuICAgIFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aFxuICAgICAgXCJQcHhfZGVyaXZpZXJzLnJlZ2lzdGVyOiAlUyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcIiBuYW1lO1xuICBIYXNodGJsLmFkZCBhbGwgbmFtZSBkZXJpdmVyXG5cbmxldCBsb29rdXAgbmFtZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCBhbGwgbmFtZSB3aXRoXG4gIHwgZHJ2IC0+IFNvbWUgZHJ2XG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbmxldCBkZXJpdmVycyAoKSA9XG4gIEhhc2h0YmwuZm9sZCAoZnVuIG5hbWUgZHJ2IGFjYyAtPiAobmFtZSwgZHJ2KSA6OiBhY2MpIGFsbCBbXVxuIiwibW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBtYXAgPSAnYSAtPiAnYVxuICB0eXBlICdhIGl0ZXIgPSAnYSAtPiB1bml0XG4gIHR5cGUgKCdhLCAnYWNjKSBmb2xkID0gJ2EgLT4gJ2FjYyAtPiAnYWNjXG4gIHR5cGUgKCdhLCAnYWNjKSBmb2xkX21hcCA9ICdhIC0+ICdhY2MgLT4gJ2EgKiAnYWNjXG4gIHR5cGUgKCdjdHgsICdhKSBtYXBfd2l0aF9jb250ZXh0ID0gJ2N0eCAtPiAnYSAtPiAnYVxuICB0eXBlICgnYSwgJ3JlcykgbGlmdCA9ICdhIC0+ICdyZXNcbiAgdHlwZSAoJ2N0eCwgJ2EsICdyZXMpIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9ICdjdHggLT4gJ2EgLT4gJ2EgKiAncmVzXG5lbmRcblxuY2xhc3MgbWFwID1cbiAgbGV0IGFueSB4ID0geCBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogaW50IFQubWFwID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IHN0cmluZyBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogYm9vbCBULm1hcCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogY2hhciBULm1hcCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAnYSBULm1hcCAtPiAnYSBvcHRpb24gVC5tYXAgPVxuICAgICAgZnVuIGYgeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICdhIFQubWFwIC0+ICdhIGxpc3QgVC5tYXAgPSBMaXN0Lm1hcFxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAnYSBULm1hcCAtPiAnYSBhcnJheSBULm1hcCA9IEFycmF5Lm1hcFxuICBlbmRcblxuY2xhc3MgaXRlciA9XG4gIGxldCBhbnkgPSBpZ25vcmUgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IGludCBULml0ZXIgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogc3RyaW5nIFQuaXRlciA9IGFueVxuICAgIG1ldGhvZCBib29sIDogYm9vbCBULml0ZXIgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IGNoYXIgVC5pdGVyID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICdhIFQuaXRlciAtPiAnYSBvcHRpb24gVC5pdGVyID1cbiAgICAgIGZ1biBmIHggLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gKCkgfCBTb21lIHggLT4gZiB4XG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAnYSBULml0ZXIgLT4gJ2EgbGlzdCBULml0ZXIgPSBMaXN0Lml0ZXJcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gJ2EgVC5pdGVyIC0+ICdhIGFycmF5IFQuaXRlciA9IEFycmF5Lml0ZXJcbiAgZW5kXG5cbmNsYXNzIFsnYWNjXSBmb2xkID1cbiAgbGV0IGFueSBfIGFjYyA9IGFjYyBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKGludCwgJ2FjYykgVC5mb2xkID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKGJvb2wsICdhY2MpIFQuZm9sZCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKGNoYXIsICdhY2MpIFQuZm9sZCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2Egb3B0aW9uLCAnYWNjKSBULmZvbGQgPVxuICAgICAgZnVuIGYgeCBhY2MgLT4gbWF0Y2ggeCB3aXRoIE5vbmUgLT4gYWNjIHwgU29tZSB4IC0+IGYgeCBhY2NcblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkIC0+ICgnYSBsaXN0LCAnYWNjKSBULmZvbGQgPVxuICAgICAgbGV0IHJlYyBsb29wIGYgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGggW10gLT4gYWNjIHwgeCA6OiBsIC0+IGxvb3AgZiBsIChmIHggYWNjKVxuICAgICAgaW5cbiAgICAgIGxvb3BcblxuICAgIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZCAtPiAoJ2EgYXJyYXksICdhY2MpIFQuZm9sZCA9XG4gICAgICBmdW4gZiBhIGFjYyAtPlxuICAgICAgICBsZXQgciA9IHJlZiBhY2MgaW5cbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIHIgOj0gZiAoQXJyYXkudW5zYWZlX2dldCBhIGkpICFyXG4gICAgICAgIGRvbmU7XG4gICAgICAgICFyXG4gIGVuZFxuXG5jbGFzcyBbJ2FjY10gZm9sZF9tYXAgPVxuICBsZXQgYW55IHggYWNjID0gKHgsIGFjYykgaW5cbiAgb2JqZWN0XG4gICAgbWV0aG9kIGludCA6IChpbnQsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2Qgc3RyaW5nIDogKHN0cmluZywgJ2FjYykgVC5mb2xkX21hcCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKGJvb2wsICdhY2MpIFQuZm9sZF9tYXAgPSBhbnlcbiAgICBtZXRob2QgY2hhciA6IChjaGFyLCAnYWNjKSBULmZvbGRfbWFwID0gYW55XG5cbiAgICBtZXRob2Qgb3B0aW9uIDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2Egb3B0aW9uLCAnYWNjKSBULmZvbGRfbWFwID1cbiAgICAgIGZ1biBmIHggYWNjIC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKE5vbmUsIGFjYylcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIHggYWNjIGluXG4gICAgICAgICAgICAoU29tZSB4LCBhY2MpXG5cbiAgICBtZXRob2QgbGlzdCA6ICdhLiAoJ2EsICdhY2MpIFQuZm9sZF9tYXAgLT4gKCdhIGxpc3QsICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgbGV0IHJlYyBsb29wIGYgbCBhY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoW10sIGFjYylcbiAgICAgICAgfCB4IDo6IGwgLT5cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIHggYWNjIGluXG4gICAgICAgICAgICBsZXQgbCwgYWNjID0gbG9vcCBmIGwgYWNjIGluXG4gICAgICAgICAgICAoeCA6OiBsLCBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcFxuXG4gICAgbWV0aG9kIGFycmF5IDogJ2EuICgnYSwgJ2FjYykgVC5mb2xkX21hcCAtPiAoJ2EgYXJyYXksICdhY2MpIFQuZm9sZF9tYXAgPVxuICAgICAgZnVuIGYgYSBhY2MgLT5cbiAgICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgICAgIGlmIGxlbiA9IDAgdGhlbiAoYSwgYWNjKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHgsIGFjYyA9IGYgKEFycmF5LnVuc2FmZV9nZXQgYSAwKSBhY2MgaW5cbiAgICAgICAgICBsZXQgYScgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgYWNjIGluXG4gICAgICAgICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICAgIGxldCB4LCBhY2MgPSBmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkgIXIgaW5cbiAgICAgICAgICAgIEFycmF5LnVuc2FmZV9zZXQgYScgaSB4O1xuICAgICAgICAgICAgciA6PSBhY2NcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIChhJywgIXIpXG4gIGVuZFxuXG5jbGFzcyBbJ2N0eF0gbWFwX3dpdGhfY29udGV4dCA9XG4gIGxldCBhbnkgXyB4ID0geCBpblxuICBvYmplY3RcbiAgICBtZXRob2QgaW50IDogKCdjdHgsIGludCkgVC5tYXBfd2l0aF9jb250ZXh0ID0gYW55XG4gICAgbWV0aG9kIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBib29sIDogKCdjdHgsIGJvb2wpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuICAgIG1ldGhvZCBjaGFyIDogKCdjdHgsIGNoYXIpIFQubWFwX3dpdGhfY29udGV4dCA9IGFueVxuXG4gICAgbWV0aG9kIG9wdGlvblxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBvcHRpb24pIFQubWFwX3dpdGhfY29udGV4dFxuICAgICAgICA9XG4gICAgICBmdW4gZiBjdHggeCAtPiBtYXRjaCB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgY3R4IHgpXG5cbiAgICBtZXRob2QgbGlzdFxuICAgICAgICA6ICdhLlxuICAgICAgICAgICgnY3R4LCAnYSkgVC5tYXBfd2l0aF9jb250ZXh0IC0+ICgnY3R4LCAnYSBsaXN0KSBULm1hcF93aXRoX2NvbnRleHQgPVxuICAgICAgZnVuIGYgY3R4IGwgLT4gTGlzdC5tYXAgKGYgY3R4KSBsXG5cbiAgICBtZXRob2QgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoJ2N0eCwgJ2EpIFQubWFwX3dpdGhfY29udGV4dCAtPiAoJ2N0eCwgJ2EgYXJyYXkpIFQubWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggYSAtPiBBcnJheS5tYXAgKGYgY3R4KSBhXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIFsncmVzXSBsaWZ0ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCB2aXJ0dWFsIG90aGVyIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgaW50IDogKGludCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgc3RyaW5nIDogKHN0cmluZywgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6IChib29sLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBjaGFyIDogKGNoYXIsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGFycmF5IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBhcnJheSwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgZmxvYXQgOiAoZmxvYXQsICdyZXMpIFQubGlmdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDMyIDogKGludDMyLCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCBpbnQ2NCA6IChpbnQ2NCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgbmF0aXZlaW50IDogKG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0XG4gICAgbWV0aG9kIHZpcnR1YWwgdW5pdCA6ICh1bml0LCAncmVzKSBULmxpZnRcbiAgICBtZXRob2QgdmlydHVhbCByZWNvcmQgOiAoc3RyaW5nICogJ3JlcykgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAncmVzIGxpc3QgLT4gJ3Jlc1xuXG4gICAgbWV0aG9kIG9wdGlvbiA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2Egb3B0aW9uLCAncmVzKSBULmxpZnQgPVxuICAgICAgZnVuIGYgeCAtPlxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHNlbGYjY29uc3RyIFwiTm9uZVwiIFtdXG4gICAgICAgIHwgU29tZSB4IC0+IHNlbGYjY29uc3RyIFwiU29tZVwiIFsgZiB4IF1cblxuICAgIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBsaXN0LCAncmVzKSBULmxpZnQgPVxuICAgICAgZnVuIGYgbCAtPlxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiBzZWxmI2NvbnN0ciBcIltdXCIgW11cbiAgICAgICAgfCB4IDo6IGwgLT4gc2VsZiNjb25zdHIgXCI6OlwiIFsgZiB4OyBzZWxmI2xpc3QgZiBsIF1cbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgdmlydHVhbCBvdGhlciA6ICdhLiAnY3R4IC0+ICdhIC0+ICdyZXNcbiAgICBtZXRob2QgdmlydHVhbCBpbnQgOiAoJ2N0eCwgaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHN0cmluZyA6ICgnY3R4LCBzdHJpbmcsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgYm9vbCA6ICgnY3R4LCBib29sLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGNoYXIgOiAoJ2N0eCwgY2hhciwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGFycmF5XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBhcnJheSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICAgIG1ldGhvZCB2aXJ0dWFsIGZsb2F0IDogKCdjdHgsIGZsb2F0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDMyIDogKCdjdHgsIGludDMyLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIGludDY0IDogKCdjdHgsIGludDY0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIG5hdGl2ZWludCA6ICgnY3R4LCBuYXRpdmVpbnQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gICAgbWV0aG9kIHZpcnR1YWwgdW5pdCA6ICgnY3R4LCB1bml0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICAgIG1ldGhvZCB2aXJ0dWFsIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICAgIG1ldGhvZCB2aXJ0dWFsIGNvbnN0ciA6ICdjdHggLT4gc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gICAgbWV0aG9kIHZpcnR1YWwgdHVwbGUgOiAnY3R4IC0+ICdyZXMgbGlzdCAtPiAncmVzXG5cbiAgICBtZXRob2Qgb3B0aW9uXG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBvcHRpb24sICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0ID1cbiAgICAgIGZ1biBmIGN0eCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKE5vbmUsIHNlbGYjY29uc3RyIGN0eCBcIk5vbmVcIiBbXSlcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICAgIGxldCB4LCByZXMgPSBmIGN0eCB4IGluXG4gICAgICAgICAgICAoU29tZSB4LCBzZWxmI2NvbnN0ciBjdHggXCJTb21lXCIgWyByZXMgXSlcblxuICAgIG1ldGhvZCBsaXN0XG4gICAgICAgIDogJ2EuXG4gICAgICAgICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICAgICAgICgnY3R4LCAnYSBsaXN0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gICAgICBmdW4gZiBjdHggbCAtPlxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiAoW10sIHNlbGYjY29uc3RyIGN0eCBcIltdXCIgW10pXG4gICAgICAgIHwgeCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgeCwgcmVzX2hlYWQgPSBmIGN0eCB4IGluXG4gICAgICAgICAgICBsZXQgbCwgcmVzX3RhaWwgPSBzZWxmI2xpc3QgZiBjdHggbCBpblxuICAgICAgICAgICAgKHggOjogbCwgc2VsZiNjb25zdHIgY3R4IFwiOjpcIiBbIHJlc19oZWFkOyByZXNfdGFpbCBdKVxuICBlbmRcblxuY2xhc3MgdHlwZSBbJ3Jlc10gc3RkX2xpZnRlcnMgPSBvYmplY3RcbiAgbWV0aG9kIG90aGVyIDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQgOiAoaW50LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHN0cmluZyA6IChzdHJpbmcsICdyZXMpIFQubGlmdFxuICBtZXRob2QgYm9vbCA6IChib29sLCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIGNoYXIgOiAoY2hhciwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBhcnJheSA6ICdhLiAoJ2EsICdyZXMpIFQubGlmdCAtPiAoJ2EgYXJyYXksICdyZXMpIFQubGlmdFxuICBtZXRob2QgcmVjb3JkIDogKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgY29uc3RyIDogc3RyaW5nIC0+ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCB0dXBsZSA6ICdyZXMgbGlzdCAtPiAncmVzXG4gIG1ldGhvZCBmbG9hdCA6IChmbG9hdCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQzMiA6IChpbnQzMiwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBpbnQ2NCA6IChpbnQ2NCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBuYXRpdmVpbnQgOiAobmF0aXZlaW50LCAncmVzKSBULmxpZnRcbiAgbWV0aG9kIHVuaXQgOiAodW5pdCwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBvcHRpb24gOiAnYS4gKCdhLCAncmVzKSBULmxpZnQgLT4gKCdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0XG4gIG1ldGhvZCBsaXN0IDogJ2EuICgnYSwgJ3JlcykgVC5saWZ0IC0+ICgnYSBsaXN0LCAncmVzKSBULmxpZnRcbmVuZFxuXG5jbGFzcyB0eXBlIFsnY3R4LCAncmVzXSBzdGRfbGlmdF9tYXBwZXJzX3dpdGhfY29udGV4dCA9IG9iamVjdFxuICBtZXRob2Qgb3RoZXIgOiAnYS4gJ2N0eCAtPiAnYSAtPiAncmVzXG4gIG1ldGhvZCBpbnQgOiAoJ2N0eCwgaW50LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2Qgc3RyaW5nIDogKCdjdHgsIHN0cmluZywgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGJvb2wgOiAoJ2N0eCwgYm9vbCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGNoYXIgOiAoJ2N0eCwgY2hhciwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgYXJyYXkgOlxuICAgICdhLlxuICAgICgnY3R4LCAnYSwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHQgLT5cbiAgICAoJ2N0eCwgJ2EgYXJyYXksICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG5cbiAgbWV0aG9kIHJlY29yZCA6ICdjdHggLT4gKHN0cmluZyAqICdyZXMpIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgY29uc3RyIDogJ2N0eCAtPiBzdHJpbmcgLT4gJ3JlcyBsaXN0IC0+ICdyZXNcbiAgbWV0aG9kIHR1cGxlIDogJ2N0eCAtPiAncmVzIGxpc3QgLT4gJ3Jlc1xuICBtZXRob2QgZmxvYXQgOiAoJ2N0eCwgZmxvYXQsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIG1ldGhvZCBpbnQzMiA6ICgnY3R4LCBpbnQzMiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIGludDY0IDogKCdjdHgsIGludDY0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuICBtZXRob2QgbmF0aXZlaW50IDogKCdjdHgsIG5hdGl2ZWludCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgbWV0aG9kIHVuaXQgOiAoJ2N0eCwgdW5pdCwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2Qgb3B0aW9uIDpcbiAgICAnYS5cbiAgICAoJ2N0eCwgJ2EsICdyZXMpIFQubGlmdF9tYXBfd2l0aF9jb250ZXh0IC0+XG4gICAgKCdjdHgsICdhIG9wdGlvbiwgJ3JlcykgVC5saWZ0X21hcF93aXRoX2NvbnRleHRcblxuICBtZXRob2QgbGlzdCA6XG4gICAgJ2EuXG4gICAgKCdjdHgsICdhLCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dCAtPlxuICAgICgnY3R4LCAnYSBsaXN0LCAncmVzKSBULmxpZnRfbWFwX3dpdGhfY29udGV4dFxuZW5kXG4iLCJtb2R1bGUgQ2FtbCA9IFN0ZGxpYiBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjMtMDZdIHVzZSBTdGRsaWIgaW5zdGVhZFwiXVxub3BlbiBTdGRsaWJcbm9wZW4gU3RkTGFiZWxzXG5tb2R1bGUgU2V4cCA9IFNleHBsaWIwLlNleHBcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBsaWIwLlNleHBhYmxlXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxuXG5tb2R1bGUgdHlwZSBDb21wYXJpc29ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgY29tcGFyZSA6IHQgLT4gdCAtPiBpbnRcbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPCApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPiApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsICggPD4gKSA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCAoIDw9ICkgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgKCA+PSApIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIG1pbiA6IHQgLT4gdCAtPiB0XG4gIHZhbCBtYXggOiB0IC0+IHQgLT4gdFxuZW5kXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgZXF1YWwgPSAoID0gKVxuICBsZXQgKCA9ICkgPSAoID0gKVxuICBsZXQgKCA8ICkgPSAoIDwgKVxuICBsZXQgKCA+ICkgPSAoID4gKVxuICBsZXQgKCA8PiApID0gKCA8PiApXG4gIGxldCAoIDw9ICkgPSAoIDw9IClcbiAgbGV0ICggPj0gKSA9ICggPj0gKVxuICBsZXQgbWluID0gbWluXG4gIGxldCBtYXggPSBtYXhcbmVuZFxuXG5pbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gaW50KVxubW9kdWxlIEFycmF5ID0gQXJyYXlcblxubW9kdWxlIEJvb2wgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9ib29sXG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGJvb2wpXG5lbmRcblxubW9kdWxlIEJ5dGVzID0gc3RydWN0XG4gIGluY2x1ZGUgQnl0ZXNcblxuICBsZXQgc3ViX3N0cmluZyB0IH5wb3MgfmxlbiA9IFN0ZGxpYi5CeXRlcy5zdWJfc3RyaW5nIHQgcG9zIGxlblxuXG4gIGxldCBibGl0X3N0cmluZyB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gICAgU3RkbGliLkJ5dGVzLmJsaXRfc3RyaW5nIHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlblxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gY2hhcilcbmVuZFxuXG5tb2R1bGUgRXhuID0gc3RydWN0XG4gIGxldCBwcm90ZWN0eCB4IH5mIH5maW5hbGx5ID1cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgIHwgeSAtPlxuICAgICAgICBmaW5hbGx5IHg7XG4gICAgICAgIHlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgZmluYWxseSB4O1xuICAgICAgICByYWlzZSBleG5cbmVuZFxuXG5tb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgbGV0IHRvX3N0cmluZyA9IHN0cmluZ19vZl9mbG9hdFxuXG4gIGluY2x1ZGUgKFBvbHkgOiBDb21wYXJpc29ucyB3aXRoIHR5cGUgdCA6PSBmbG9hdClcbmVuZFxuXG5tb2R1bGUgRm4gPSBzdHJ1Y3RcbiAgbGV0IGlkIHggPSB4XG5lbmRcblxubW9kdWxlIEhhc2h0YmwgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsXG5cbiAgbGV0IHNldCB0IH5rZXkgfmRhdGEgPVxuICAgIHdoaWxlIG1lbSB0IGtleSBkb1xuICAgICAgcmVtb3ZlIHQga2V5XG4gICAgZG9uZTtcbiAgICBhZGQgdCBrZXkgZGF0YVxuXG4gIGxldCBhZGQgdCB+a2V5IH5kYXRhID1cbiAgICBpZiBtZW0gdCBrZXkgdGhlbiBFcnJvciAoSW52YWxpZF9hcmd1bWVudCBcIkhhc2h0YmwuYWRkX2V4blwiKVxuICAgIGVsc2UgKFxuICAgICAgYWRkIHQga2V5IGRhdGE7XG4gICAgICBPayAoKSlcblxuICBsZXQgYWRkX2V4biB0IH5rZXkgfmRhdGEgPVxuICAgIG1hdGNoIGFkZCB0IH5rZXkgfmRhdGEgd2l0aCBPayAoKSAtPiAoKSB8IEVycm9yIGV4biAtPiByYWlzZSBleG5cblxuICBsZXQgZmluZF9vcHQgdCBrZXkgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aCBkYXRhIC0+IFNvbWUgZGF0YSB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBmaW5kX29yX2FkZCB0IGtleSB+ZGVmYXVsdCA9XG4gICAgbWF0Y2ggZmluZF9vcHQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IGRhdGFcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgICAgIGFkZF9leG4gdCB+a2V5IH5kYXRhO1xuICAgICAgICBkYXRhXG5cbiAgbGV0IHJlYyBhZGRfYWxpc3QgdCBhbGlzdCA9XG4gICAgbWF0Y2ggYWxpc3Qgd2l0aFxuICAgIHwgW10gLT4gT2sgKClcbiAgICB8IChrZXksIGRhdGEpIDo6IHRhaWwgLT4gKFxuICAgICAgICBtYXRjaCBhZGQgdCB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBhZGRfYWxpc3QgdCB0YWlsXG4gICAgICAgIHwgRXJyb3IgKF8gOiBleG4pIC0+IEVycm9yIGtleSlcblxuICBsZXQgb2ZfYWxpc3QgP3NpemUgYWxpc3QgPVxuICAgIGxldCBzaXplID1cbiAgICAgIG1hdGNoIHNpemUgd2l0aCBTb21lIHNpemUgLT4gc2l6ZSB8IE5vbmUgLT4gTGlzdC5sZW5ndGggYWxpc3RcbiAgICBpblxuICAgIGxldCB0ID0gY3JlYXRlIHNpemUgaW5cbiAgICBtYXRjaCBhZGRfYWxpc3QgdCBhbGlzdCB3aXRoIE9rICgpIC0+IE9rIHQgfCBFcnJvciBfIGFzIGVycm9yIC0+IGVycm9yXG5cbiAgbGV0IG9mX2FsaXN0X2V4biA/c2l6ZSBhbGlzdCA9XG4gICAgbWF0Y2ggb2ZfYWxpc3QgP3NpemUgYWxpc3Qgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciBfIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiSGFzaHRibC5vZl9hbGlzdF9leG5cIilcbmVuZFxuXG5tb2R1bGUgSW5fY2hhbm5lbCA9IHN0cnVjdFxuICBsZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gICAgbGV0IGZsYWdzID0gWyBPcGVuX3Jkb25seSBdIGluXG4gICAgbGV0IGZsYWdzID0gaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICAgIG9wZW5faW5fZ2VuIGZsYWdzIDBvMDAwIGZpbGVcblxuICBsZXQgd2l0aF9maWxlID9iaW5hcnkgZmlsZW5hbWUgfmYgPVxuICAgIGxldCB0ID0gY3JlYXRlID9iaW5hcnkgZmlsZW5hbWUgaW5cbiAgICBFeG4ucHJvdGVjdHggdCB+ZiB+ZmluYWxseTpjbG9zZV9pblxuXG4gIGxldCBpbnB1dF9hbGwgdCA9XG4gICAgbGV0IHJlYyByZWFkX2FsbF9pbnRvIHQgYnVmID1cbiAgICAgIG1hdGNoIGlucHV0X2NoYXIgdCB3aXRoXG4gICAgICB8IGNoYXIgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNoYXI7XG4gICAgICAgICAgcmVhZF9hbGxfaW50byB0IGJ1ZlxuICAgICAgfCBleGNlcHRpb24gRW5kX29mX2ZpbGUgLT4gKClcbiAgICBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgcmVhZF9hbGxfaW50byB0IGJ1ZjtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHJlYWRfYWxsIGZpbGVuYW1lID0gd2l0aF9maWxlIGZpbGVuYW1lIH5mOmlucHV0X2FsbFxuZW5kXG5cbm1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgbGV0IG1heF9pbnQgPSBtYXhfaW50XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5cbiAgaW5jbHVkZSAoUG9seSA6IENvbXBhcmlzb25zIHdpdGggdHlwZSB0IDo9IGludClcbmVuZFxuXG5tb2R1bGUgRWl0aGVyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IExlZnQgb2YgJ2EgfCBSaWdodCBvZiAnYlxuZW5kXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTGlzdFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgKCogc2hhZG93IG5vbi10YWlsLXJlY3Vyc2l2ZSBmdW5jdGlvbnMgKilcbiAgICBsZXQgbWVyZ2UgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG4gICAgbGV0IHJlbW92ZV9hc3NvYyA9IGBub3RfdGFpbF9yZWN1cnNpdmVcbiAgICBsZXQgcmVtb3ZlX2Fzc3EgPSBgbm90X3RhaWxfcmVjdXJzaXZlXG5cbiAgICBsZXQgcmV2X21hcGkgbGlzdCB+ZiA9XG4gICAgICBsZXQgcmVjIHJldl9tYXBpX2F0IGxpc3QgaSB+ZiB+YWNjID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+IHJldl9tYXBpX2F0IHRhaWwgKGkgKyAxKSB+ZiB+YWNjOihmIGkgaGVhZCA6OiBhY2MpXG4gICAgICBpblxuICAgICAgcmV2X21hcGlfYXQgbGlzdCAwIH5mIH5hY2M6W11cblxuICAgIGxldCBmb2xkX3JpZ2h0MiBsaXN0MSBsaXN0MiB+aW5pdCB+ZiA9XG4gICAgICBmb2xkX2xlZnQyIChyZXYgbGlzdDEpIChyZXYgbGlzdDIpIH5pbml0IH5mOihmdW4gYWNjIHggeSAtPiBmIHggeSBhY2MpXG5cbiAgICBsZXQgbWFwIGxpc3QgfmYgPSByZXYgKHJldl9tYXAgbGlzdCB+ZilcbiAgICBsZXQgbWFwaSBsaXN0IH5mID0gcmV2IChyZXZfbWFwaSBsaXN0IH5mKVxuXG4gICAgbGV0IGZvbGRfcmlnaHQgbGlzdCB+aW5pdCB+ZiA9XG4gICAgICBmb2xkX2xlZnQgKExpc3QucmV2IGxpc3QpIH5pbml0IH5mOihmdW4gYWNjIHggLT4gZiB4IGFjYylcblxuICAgIGxldCBhcHBlbmQgeCB5ID0gcmV2X2FwcGVuZCAocmV2IHgpIHlcbiAgICBsZXQgY29uY2F0IGxpc3QgPSBmb2xkX3JpZ2h0IGxpc3QgfmluaXQ6W10gfmY6YXBwZW5kXG5cbiAgICBsZXQgcmV2X2NvbWJpbmUgbGlzdDEgbGlzdDIgPVxuICAgICAgZm9sZF9sZWZ0MiBsaXN0MSBsaXN0MiB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IHkgLT4gKHgsIHkpIDo6IGFjYylcblxuICAgIGxldCBjb21iaW5lIGxpc3QxIGxpc3QyID0gcmV2IChyZXZfY29tYmluZSBsaXN0MSBsaXN0MilcblxuICAgIGxldCBzcGxpdCBsaXN0ID1cbiAgICAgIGZvbGRfcmlnaHQgbGlzdCB+aW5pdDooW10sIFtdKSB+ZjooZnVuICh4LCB5KSAoeHMsIHlzKSAtPlxuICAgICAgICAgICh4IDo6IHhzLCB5IDo6IHlzKSlcblxuICAgIGxldCBtYXAyIGxpc3QxIGxpc3QyIH5mID1cbiAgICAgIHJldiAoZm9sZF9sZWZ0MiBsaXN0MSBsaXN0MiB+aW5pdDpbXSB+ZjooZnVuIGFjYyB4IHkgLT4gZiB4IHkgOjogYWNjKSlcbiAgZW5kXG5cbiAgbGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgICBsZXQgcmVjIHBhcnQgbGVmdCByaWdodCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICAgICAgfCB4IDo6IGwgLT4gKFxuICAgICAgICAgIG1hdGNoIHAgeCB3aXRoXG4gICAgICAgICAgfCBFaXRoZXIuTGVmdCB2IC0+IHBhcnQgKHYgOjogbGVmdCkgcmlnaHQgbFxuICAgICAgICAgIHwgRWl0aGVyLlJpZ2h0IHYgLT4gcGFydCBsZWZ0ICh2IDo6IHJpZ2h0KSBsKVxuICAgIGluXG4gICAgcGFydCBbXSBbXSBsXG5cbiAgbGV0IGluaXQgfmxlbiB+ZiA9XG4gICAgbGV0IHJlYyBsb29wIH5sZW4gfnBvcyB+ZiB+YWNjID1cbiAgICAgIGlmIHBvcyA+PSBsZW4gdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgIGVsc2UgbG9vcCB+bGVuIH5wb3M6KHBvcyArIDEpIH5mIH5hY2M6KGYgcG9zIDo6IGFjYylcbiAgICBpblxuICAgIGxvb3AgfmxlbiB+cG9zOjAgfmYgfmFjYzpbXVxuXG4gIGxldCBpc19lbXB0eSA9IGZ1bmN0aW9uIFtdIC0+IHRydWUgfCBfIDo6IF8gLT4gZmFsc2VcblxuICBsZXQgcmV2X2ZpbHRlcl9vcHQgbGlzdCA9XG4gICAgZm9sZF9sZWZ0IGxpc3QgfmluaXQ6W10gfmY6KGZ1biB0YWlsIG9wdGlvbiAtPlxuICAgICAgICBtYXRjaCBvcHRpb24gd2l0aCBOb25lIC0+IHRhaWwgfCBTb21lIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuXG4gIGxldCBmaWx0ZXJfb3B0IGxpc3QgPSByZXYgKHJldl9maWx0ZXJfb3B0IGxpc3QpXG4gIGxldCBmaWx0ZXJfbWFwIGxpc3QgfmYgPSByZXZfZmlsdGVyX29wdCAocmV2X21hcCBsaXN0IH5mKVxuICBsZXQgY29uY2F0X21hcCBsaXN0IH5mID0gY29uY2F0IChtYXAgbGlzdCB+ZilcblxuICBsZXQgcmVjIGZpbmRfbWFwIGxpc3QgfmYgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgaGVhZCA6OiB0YWlsIC0+IChcbiAgICAgICAgbWF0Y2ggZiBoZWFkIHdpdGggU29tZSBfIGFzIHNvbWUgLT4gc29tZSB8IE5vbmUgLT4gZmluZF9tYXAgdGFpbCB+ZilcblxuICBsZXQgZmluZF9tYXBfZXhuIGxpc3QgfmYgPVxuICAgIG1hdGNoIGZpbmRfbWFwIGxpc3QgfmYgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbiAgbGV0IHJlYyBsYXN0ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IFsgeCBdIC0+IFNvbWUgeFxuICAgIHwgXyA6OiAoXyA6OiBfIGFzIHJlc3QpIC0+IGxhc3QgcmVzdFxuXG4gIGxldCBzcGxpdF93aGlsZSBsaXN0IH5mID1cbiAgICBsZXQgcmVjIHNwbGl0X3doaWxlX2ludG8gbGlzdCB+ZiB+YWNjID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBmIGhlYWQgLT4gc3BsaXRfd2hpbGVfaW50byB0YWlsIH5mIH5hY2M6KGhlYWQgOjogYWNjKVxuICAgICAgfCBfIDo6IF8gfCBbXSAtPiAoTGlzdC5yZXYgYWNjLCBsaXN0KVxuICAgIGluXG4gICAgc3BsaXRfd2hpbGVfaW50byBsaXN0IH5mIH5hY2M6W11cblxuICBsZXQgZmluZF9hX2R1cCAodHlwZSBlbHQpIGxpc3QgfmNvbXBhcmUgPVxuICAgIGxldCBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBlbHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgZW5kIGluXG4gICAgbGV0IG1vZHVsZSBFbHRfc2V0ID0gU2V0Lk1ha2UgKEVsdCkgaW5cbiAgICBsZXQgcmVjIGZpbmRfYV9kdXBfaW4gbGlzdCB+c2V0ID1cbiAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgIGlmIEVsdF9zZXQubWVtIGhlYWQgc2V0IHRoZW4gU29tZSBoZWFkXG4gICAgICAgICAgZWxzZSBmaW5kX2FfZHVwX2luIHRhaWwgfnNldDooRWx0X3NldC5hZGQgaGVhZCBzZXQpXG4gICAgaW5cbiAgICBmaW5kX2FfZHVwX2luIGxpc3QgfnNldDpFbHRfc2V0LmVtcHR5XG5cbiAgbGV0IGFzc29jX29wdCBrZXkgYWxpc3QgPVxuICAgIG1hdGNoIGFzc29jIGtleSBhbGlzdCB3aXRoIHggLT4gU29tZSB4IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgKCogcmVvcmRlcnMgYXJndW1lbnRzIHRvIGltcHJvdmUgdHlwZSBpbmZlcmVuY2UgKilcbiAgbGV0IGl0ZXIgbGlzdCB+ZiA9IGl0ZXIgbGlzdCB+ZlxuZW5kXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgbGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcbiAgbGV0IGl0ZXIgdCB+ZiA9IG1hdGNoIHQgd2l0aCBOb25lIC0+ICgpIHwgU29tZSB4IC0+IGYgeFxuICBsZXQgbWFwIHQgfmYgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbiAgbGV0IHZhbHVlIHQgfmRlZmF1bHQgPSBtYXRjaCB0IHdpdGggTm9uZSAtPiBkZWZhdWx0IHwgU29tZSB4IC0+IHhcbiAgbGV0IHRvX2xpc3QgdCA9IG1hdGNoIHQgd2l0aCBOb25lIC0+IFtdIHwgU29tZSB4IC0+IFsgeCBdXG5lbmRcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICBsZXQgYmluZCB0IH5mID0gbWF0Y2ggdCB3aXRoIE9rIGEgLT4gZiBhIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCBtYXAgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IE9rIChmIGEpIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCBtYXBfZXJyb3IgdCB+ZiA9IG1hdGNoIHQgd2l0aCBPayBhIC0+IE9rIChmIGEpIHwgRXJyb3IgZSAtPiBFcnJvciBlXG4gIGxldCAoID4+PSApIHQgZiA9IGJpbmQgdCB+ZlxuICBsZXQgKCA+PnwgKSB0IGYgPSBtYXAgdCB+ZlxuICBsZXQgaGFuZGxlX2Vycm9yIHQgfmYgPSBtYXRjaCB0IHdpdGggT2sgYSAtPiBhIHwgRXJyb3IgZSAtPiBmIGVcbmVuZFxuXG5tb2R1bGUgTm9uRW1wdHlMaXN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogJ2EgbGlzdFxuXG4gIGxldCAoIEAgKSAodDEsIHExKSAodDIsIHEyKSA9ICh0MSwgcTEgQCAodDIgOjogcTIpKVxuICBsZXQgaGQgPSBmc3RcbiAgbGV0IHRvX2xpc3QgKHQsIHEpID0gdCA6OiBxXG4gIGxldCBtYXAgfmYgKHQsIHEpID0gKGYgdCwgTGlzdC5tYXAgfmYgcSlcbmVuZFxuXG5tb2R1bGUgT3V0X2NoYW5uZWwgPSBzdHJ1Y3RcbiAgbGV0IGNyZWF0ZSA/KGJpbmFyeSA9IHRydWUpID8oYXBwZW5kID0gZmFsc2UpID8oZmFpbF9pZl9leGlzdHMgPSBmYWxzZSlcbiAgICAgID8ocGVybSA9IDBvNjY2KSBmaWxlID1cbiAgICBsZXQgZmxhZ3MgPSBbIE9wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0IF0gaW5cbiAgICBsZXQgZmxhZ3MgPSAoaWYgYmluYXJ5IHRoZW4gT3Blbl9iaW5hcnkgZWxzZSBPcGVuX3RleHQpIDo6IGZsYWdzIGluXG4gICAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPSBpZiBmYWlsX2lmX2V4aXN0cyB0aGVuIE9wZW5fZXhjbCA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gICAgb3Blbl9vdXRfZ2VuIGZsYWdzIHBlcm0gZmlsZVxuXG4gIGxldCB3aXRoX2ZpbGUgP2JpbmFyeSA/YXBwZW5kID9mYWlsX2lmX2V4aXN0cyA/cGVybSBmaWxlIH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgaW5cbiAgICBFeG4ucHJvdGVjdHggdCB+ZiB+ZmluYWxseTpjbG9zZV9vdXRcblxuICBsZXQgd3JpdGVfYWxsIGZpbGVuYW1lIH5kYXRhID1cbiAgICB3aXRoX2ZpbGUgZmlsZW5hbWUgfmY6KGZ1biB0IC0+IG91dHB1dF9zdHJpbmcgdCBkYXRhKVxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdHJpbmdcblxuICBsZXQgaXNfZW1wdHkgKHQgOiB0KSA9IGxlbmd0aCB0ID0gMFxuICBsZXQgcHJlZml4IHQgbGVuID0gc3ViIHQgfnBvczowIH5sZW5cbiAgbGV0IHN1ZmZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6KGxlbmd0aCB0IC0gbGVuKSB+bGVuXG4gIGxldCBkcm9wX3ByZWZpeCB0IGxlbiA9IHN1YiB0IH5wb3M6bGVuIH5sZW46KGxlbmd0aCB0IC0gbGVuKVxuICBsZXQgZHJvcF9zdWZmaXggdCBsZW4gPSBzdWIgdCB+cG9zOjAgfmxlbjoobGVuZ3RoIHQgLSBsZW4pXG5cbiAgbGV0IGlzX3ByZWZpeCB0IH5wcmVmaXggPVxuICAgIGxldCByZWMgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPj0gbGVuXG4gICAgICB8fCBDaGFyLmVxdWFsIChnZXQgdCBwb3MpIChnZXQgcHJlZml4IHBvcylcbiAgICAgICAgICYmIGlzX3ByZWZpeF9mcm9tIHQgfnByZWZpeCB+cG9zOihwb3MgKyAxKSB+bGVuXG4gICAgaW5cbiAgICBsZW5ndGggdCA+PSBsZW5ndGggcHJlZml4XG4gICAgJiYgaXNfcHJlZml4X2Zyb20gdCB+cHJlZml4IH5wb3M6MCB+bGVuOihsZW5ndGggcHJlZml4KVxuXG4gIGxldCBpc19zdWZmaXggdCB+c3VmZml4ID1cbiAgICBsZXQgcmVjIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXggfnBvcyB+c3VmZml4X29mZnNldCA9XG4gICAgICBwb3MgPCAwXG4gICAgICB8fCBDaGFyLmVxdWFsIChnZXQgdCAoc3VmZml4X29mZnNldCArIHBvcykpIChnZXQgc3VmZml4IHBvcylcbiAgICAgICAgICYmIGlzX3N1ZmZpeF91cF90byB0IH5zdWZmaXggfnBvczoocG9zIC0gMSkgfnN1ZmZpeF9vZmZzZXRcbiAgICBpblxuICAgIGxlbmd0aCB0ID49IGxlbmd0aCBzdWZmaXhcbiAgICAmJiBpc19zdWZmaXhfdXBfdG8gdCB+c3VmZml4XG4gICAgICAgICB+cG9zOihsZW5ndGggc3VmZml4IC0gMSlcbiAgICAgICAgIH5zdWZmaXhfb2Zmc2V0OihsZW5ndGggdCAtIGxlbmd0aCBzdWZmaXgpXG5cbiAgbGV0IGV4aXN0cyB0IH5mID1cbiAgICBsZXQgcmVjIGV4aXN0c19hdCB0IH5mIH5wb3MgfmxlbiA9XG4gICAgICBwb3MgPCBsZW4gJiYgKGYgKGdldCB0IHBvcykgfHwgZXhpc3RzX2F0IHQgfmYgfnBvczoocG9zICsgMSkgfmxlbilcbiAgICBpblxuICAgIGV4aXN0c19hdCB0IH5mIH5wb3M6MCB+bGVuOihsZW5ndGggdClcblxuICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICBsZXQgcmVjIGZvcl9hbGxfYXQgdCB+ZiB+cG9zIH5sZW4gPVxuICAgICAgcG9zID49IGxlbiB8fCAoZiAoZ2V0IHQgcG9zKSAmJiBmb3JfYWxsX2F0IHQgfmYgfnBvczoocG9zICsgMSkgfmxlbilcbiAgICBpblxuICAgIGZvcl9hbGxfYXQgdCB+ZiB+cG9zOjAgfmxlbjoobGVuZ3RoIHQpXG5cbiAgbGV0IGluZGV4X29wdCB0IGNoYXIgPVxuICAgIG1hdGNoIGluZGV4IHQgY2hhciB3aXRoIGkgLT4gU29tZSBpIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHJpbmRleF9vcHQgdCBjaGFyID1cbiAgICBtYXRjaCByaW5kZXggdCBjaGFyIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgaW5kZXhfZnJvbV9vcHQgdCBjaGFyIHBvcyA9XG4gICAgbWF0Y2ggaW5kZXhfZnJvbSB0IGNoYXIgcG9zIHdpdGggaSAtPiBTb21lIGkgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmVcblxuICBsZXQgcmluZGV4X2Zyb21fb3B0IHQgY2hhciBwb3MgPVxuICAgIG1hdGNoIHJpbmRleF9mcm9tIHQgY2hhciBwb3Mgd2l0aFxuICAgIHwgaSAtPiBTb21lIGlcbiAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZVxuXG4gIGxldCBsc3BsaXQyIHQgfm9uID1cbiAgICBtYXRjaCBpbmRleF9vcHQgdCBvbiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgaSAtPlxuICAgICAgICBTb21lIChzdWIgdCB+cG9zOjAgfmxlbjppLCBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSkpXG5cbiAgbGV0IGNhcGl0YWxpemVfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbiAgbGV0IGxvd2VyY2FzZV9hc2NpaSA9IFN0ZGxpYi5TdHJpbmcubG93ZXJjYXNlX2FzY2lpXG4gIGxldCB1bmNhcGl0YWxpemVfYXNjaWkgPSBTdGRsaWIuU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaVxuICBsZXQgc3BsaXRfb25fY2hhciB0IH5zZXAgPSBTdGRsaWIuU3RyaW5nLnNwbGl0X29uX2NoYXIgc2VwIHRcblxuICBpbmNsdWRlIChQb2x5IDogQ29tcGFyaXNvbnMgd2l0aCB0eXBlIHQgOj0gc3RyaW5nKVxuXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1hcC5NYWtlIChTdHJpbmcpXG5cbiAgICBsZXQgZmluZF9vcHQga2V5IHQgPVxuICAgICAgbWF0Y2ggZmluZCBrZXkgdCB3aXRoIHggLT4gU29tZSB4IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lXG4gIGVuZFxuXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoU3RyaW5nKVxuZW5kXG5cbmxldCAoIEAgKSA9IExpc3QuYXBwZW5kXG5sZXQgb3V0cHV0IG9jIGJ5dGVzIH5wb3MgfmxlbiA9IG91dHB1dCBvYyBieXRlcyBwb3MgbGVuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzdHJpbmcgfnBvcyB+bGVuID0gb3V0cHV0X3N1YnN0cmluZyBvYyBzdHJpbmcgcG9zIGxlblxuIiwib3BlbiBJbXBvcnRcbm1vZHVsZSBMID0gQXN0bGliLkxvY2F0aW9uXG5cbnR5cGUgdCA9IGxvY2F0aW9uID0ge1xuICBsb2Nfc3RhcnQgOiBMZXhpbmcucG9zaXRpb247XG4gIGxvY19lbmQgOiBMZXhpbmcucG9zaXRpb247XG4gIGxvY19naG9zdCA6IGJvb2w7XG59XG5cbmxldCBpbl9maWxlIG5hbWUgPVxuICBsZXQgbG9jID0geyBwb3NfZm5hbWUgPSBuYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IC0xIH0gaW5cbiAgeyBsb2Nfc3RhcnQgPSBsb2M7IGxvY19lbmQgPSBsb2M7IGxvY19naG9zdCA9IHRydWUgfVxuXG5sZXQgc2V0X2ZpbGVuYW1lIGxvYyBmbiA9XG4gIGxldCBsb2Nfc3RhcnQgPSB7IGxvYy5sb2Nfc3RhcnQgd2l0aCBwb3NfZm5hbWUgPSBmbiB9IGluXG4gIGxldCBsb2NfZW5kID0geyBsb2MubG9jX2VuZCB3aXRoIHBvc19mbmFtZSA9IGZuIH0gaW5cbiAgeyBsb2Mgd2l0aCBsb2Nfc3RhcnQ7IGxvY19lbmQgfVxuXG5sZXQgbm9uZSA9IGluX2ZpbGUgXCJfbm9uZV9cIlxuXG5sZXQgaW5pdCBsZXhidWYgZm5hbWUgPVxuICBsZXQgb3BlbiBMZXhpbmcgaW5cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC1cbiAgICB7IHBvc19mbmFtZSA9IGZuYW1lOyBwb3NfbG51bSA9IDE7IHBvc19ib2wgPSAwOyBwb3NfY251bSA9IDAgfVxuXG5sZXQgcmFpc2VfZXJyb3JmID9sb2MgZm10ID0gTC5yYWlzZV9lcnJvcmYgP2xvYyBmbXRcbmxldCByZXBvcnRfZXhjZXB0aW9uID0gTC5yZXBvcnRfZXhjZXB0aW9uXG5cbmxldCBvZl9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAge1xuICAgIGxvY19zdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcDtcbiAgICBsb2NfZW5kID0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgbG9jX2dob3N0ID0gZmFsc2U7XG4gIH1cblxubGV0IHByaW50IHBwZiB0ID1cbiAgU3RkbGliLkZvcm1hdC5mcHJpbnRmIHBwZiBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcIlxuICAgIHQubG9jX3N0YXJ0LnBvc19mbmFtZSB0LmxvY19zdGFydC5wb3NfbG51bVxuICAgICh0LmxvY19zdGFydC5wb3NfY251bSAtIHQubG9jX3N0YXJ0LnBvc19ib2wpXG4gICAgKHQubG9jX2VuZC5wb3NfY251bSAtIHQubG9jX3N0YXJ0LnBvc19ib2wpXG5cbnR5cGUgbm9ucmVjICdhIGxvYyA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IHQgfVxuXG5sZXQgY29tcGFyZV9wb3MgcDEgcDIgPVxuICBsZXQgb3BlbiBMZXhpbmcgaW5cbiAgbGV0IGNvbHVtbiBwID1cbiAgICAoKiBNYW51YWwgZXh0cmFjdDpcbiAgICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHBvc19jbnVtIGFuZCBwb3NfYm9sIGlzIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0XG4gICAgICAgd2l0aGluIHRoZSBsaW5lIChpLmUuIHRoZSBjb2x1bW4gbnVtYmVyLCBhc3N1bWluZyBlYWNoIGNoYXJhY3RlciBpc1xuICAgICAgIG9uZSBjb2x1bW4gd2lkZSkuICopXG4gICAgcC5wb3NfY251bSAtIHAucG9zX2JvbFxuICBpblxuICBtYXRjaCBJbnQuY29tcGFyZSBwMS5wb3NfbG51bSBwMi5wb3NfbG51bSB3aXRoXG4gIHwgMCAtPiBJbnQuY29tcGFyZSAoY29sdW1uIHAxKSAoY29sdW1uIHAyKVxuICB8IG4gLT4gblxuXG5sZXQgbWluX3BvcyBwMSBwMiA9IGlmIGNvbXBhcmVfcG9zIHAxIHAyIDw9IDAgdGhlbiBwMSBlbHNlIHAyXG5sZXQgbWF4X3BvcyBwMSBwMiA9IGlmIGNvbXBhcmVfcG9zIHAxIHAyID49IDAgdGhlbiBwMSBlbHNlIHAyXG5cbmxldCBjb21wYXJlIGxvYzEgbG9jMiA9XG4gIG1hdGNoIGNvbXBhcmVfcG9zIGxvYzEubG9jX3N0YXJ0IGxvYzIubG9jX3N0YXJ0IHdpdGhcbiAgfCAwIC0+IGNvbXBhcmVfcG9zIGxvYzEubG9jX2VuZCBsb2MyLmxvY19lbmRcbiAgfCBuIC0+IG5cblxubW9kdWxlIEVycm9yID0gc3RydWN0XG4gIGluY2x1ZGUgUHB4bGliX2FzdC5Mb2NhdGlvbl9lcnJvclxuXG4gIGxldCBjcmVhdGVmIH5sb2MgZm10ID0gRm9ybWF0Lmthc3ByaW50ZiAoZnVuIHN0ciAtPiBtYWtlIH5sb2MgfnN1YjpbXSBzdHIpIGZtdFxuZW5kXG5cbmxldCBlcnJvcl9leHRlbnNpb25mIH5sb2MgZm10ID1cbiAgRm9ybWF0Lmthc3ByaW50ZlxuICAgIChmdW4gc3RyIC0+IEVycm9yLnRvX2V4dGVuc2lvbiBAQCBFcnJvci5tYWtlIH5sb2MgfnN1YjpbXSBzdHIpXG4gICAgZm10XG5cbmV4Y2VwdGlvbiBFcnJvciA9IEwuRXJyb3JcblxubGV0ICgpID1cbiAgU3RkbGliLlByaW50ZXhjLnJlZ2lzdGVyX3ByaW50ZXIgKGZ1bmN0aW9uXG4gICAgfCBFcnJvciBlIC0+IFNvbWUgKEVycm9yLm1lc3NhZ2UgZSlcbiAgICB8IF8gLT4gTm9uZSlcbiIsIm9wZW4hIEltcG9ydFxuXG5leGNlcHRpb24gRXhwZWN0ZWQgb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG5sZXQgZmFpbCBsb2MgZXhwZWN0ZWQgPSByYWlzZSAoRXhwZWN0ZWQgKGxvYywgZXhwZWN0ZWQpKVxuXG50eXBlIGNvbnRleHQgPSB7XG4gICgqIFttYXRjaGVkXSBjb3VudHMgaG93IG1hbnkgY29uc3RydWN0b3JzIGhhdmUgYmVlbiBtYXRjaGVkLiBUaGlzIGlzIHVzZWQgdG8gZmluZCB3aGF0XG4gICAgIHBhdHRlcm4gbWF0Y2hlcyB0aGUgbW9zdCBzb21lIHBpZWNlIG9mIGFzdCBpbiBbQXN0X3BhdHRlcm4uYWx0XS4gSW4gdGhlIGNhc2Ugd2hlcmVcbiAgICAgYWxsIGJyYW5jaGVzIGZhaWwgdG8gbWF0Y2gsIHdlIHJlcG9ydCB0aGUgZXJyb3IgZnJvbSB0aGUgb25lIHRoYXQgbWF0Y2hlcyB0aGVcbiAgICAgbW9zdC5cblxuICAgICBUaGlzIGlzIG9ubHkgaW5jcmVtZW50ZWQgYnkgY29tYmluYXRvcnMgdGhhdCBjYW4gZmFpbC4gKilcbiAgbXV0YWJsZSBtYXRjaGVkIDogaW50O1xufVxuXG50eXBlICgnbWF0Y2hlZF92YWx1ZSwgJ2ssICdrX3Jlc3VsdCkgdCA9XG4gIHwgVCBvZiAoY29udGV4dCAtPiBMb2NhdGlvbi50IC0+ICdtYXRjaGVkX3ZhbHVlIC0+ICdrIC0+ICdrX3Jlc3VsdClcbiIsIm9wZW4gSW1wb3J0XG5tb2R1bGUgTSA9XG4gIHN0cnVjdFxuICAgIGxldCBhdHRyaWJ1dGUgfmxvYyAgfm5hbWUgIH5wYXlsb2FkICA9XG4gICAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbiAgICBsZXQgYmluZGluZ19vcCB+bG9jICB+b3AgIH5wYXQgIH5leHAgID1cbiAgICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbiAgICBsZXQgY2FzZSB+bGhzICB+Z3VhcmQgIH5yaHMgID1cbiAgICAgIHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuICAgIGxldCBwY2xfY29uc3RyIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB+bG9jICB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBjbF9sZXQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2ZfaW5oZXJpdCB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNmX3ZhbCB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgfmxvYyAgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB+bG9jICB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfmxvYyAgfnZpcnQgIH5wYXJhbXMgIH5uYW1lICB+ZXhwciAgPVxuICAgICAge1xuICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmICB+ZmllbGRzICA9XG4gICAgICB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuICAgIGxldCBwY3R5X2NvbnN0ciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB+bG9jICB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjdHlfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfb3BlbiB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9pbmhlcml0IH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgfmxvYyAgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dmFycyAgfmFyZ3MgIH5yZXMgID1cbiAgICAgIHtcbiAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FueSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB+bG9jICB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3R1cGxlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jb25zdHIgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9vYmplY3QgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jbGFzcyB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY2xhc3MgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYWxpYXMgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BvbHkgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfcGFja2FnZSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgfmxvYyAgeDAgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9zdHJpbmcgeDApIH1cbiAgICBsZXQgcGRpcl9pbnQgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pbnQgKHgwLCB4MSkpIH1cbiAgICBsZXQgcGRpcl9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2lkZW50IHgwKSB9XG4gICAgbGV0IHBkaXJfYm9vbCB+bG9jICB4MCA9IHsgcGRpcmFfbG9jID0gbG9jOyBwZGlyYV9kZXNjID0gKFBkaXJfYm9vbCB4MCkgfVxuICAgIGxldCBwZXhwX2lkZW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZGVudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdGFudCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0IH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Z1bmN0aW9uIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW5jdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW4gfmxvYyAgeDAgeDEgeDIgeDMgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcHBseSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9tYXRjaCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbWF0Y2ggKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdHJ5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90cnkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfdHVwbGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cnVjdCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3ZhcmlhbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfcmVjb3JkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZmllbGQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2ZpZWxkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NldGZpZWxkIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRmaWVsZCAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXJyYXkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2lmdGhlbmVsc2UgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlcXVlbmNlIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXF1ZW5jZSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF93aGlsZSB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfd2hpbGUgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfZm9yIH5sb2MgIHgwIHgxIHgyIHgzIHg0ID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mb3IgKHgwLCB4MSwgeDIsIHgzLCB4NCkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RyYWludCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb2VyY2UgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2VuZCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VuZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXcgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ldyB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRpbnN0dmFyIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9zZXRpbnN0dmFyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX292ZXJyaWRlIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vdmVycmlkZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRtb2R1bGUgfmxvYyAgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xldG1vZHVsZSAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0ZXhjZXB0aW9uIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRleGNlcHRpb24gKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfYXNzZXJ0IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hc3NlcnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGF6eSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9wb2x5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9wb2x5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX29iamVjdCB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb2JqZWN0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX25ld3R5cGUgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX25ld3R5cGUgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfcGFjayB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldG9wIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRvcCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF91bnJlYWNoYWJsZSB+bG9jICA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gUGV4cF91bnJlYWNoYWJsZVxuICAgICAgfVxuICAgIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgfmxvYyAgfm5hbWUgIH5raW5kICA9XG4gICAgICB7XG4gICAgICAgIHBleHRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBleHRfa2luZCA9IGtpbmQ7XG4gICAgICAgIHBleHRfbG9jID0gbG9jO1xuICAgICAgICBwZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBpbmNsdWRlX2luZm9zIH5sb2MgIG1vZF8gPVxuICAgICAgeyBwaW5jbF9tb2QgPSBtb2RfOyBwaW5jbF9sb2MgPSBsb2M7IHBpbmNsX2F0dHJpYnV0ZXMgPSBbXSB9XG4gICAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+bXV0YWJsZV8gIH50eXBlXyAgPVxuICAgICAge1xuICAgICAgICBwbGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBsZF9tdXRhYmxlID0gbXV0YWJsZV87XG4gICAgICAgIHBsZF90eXBlID0gdHlwZV87XG4gICAgICAgIHBsZF9sb2MgPSBsb2M7XG4gICAgICAgIHBsZF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgbGV0b3AgfmxldF8gIH5hbmRzICB+Ym9keSAgPSB7IGxldF87IGFuZHM7IGJvZHkgfVxuICAgIGxldCBsb2NhdGlvbiB+c3RhcnQgIH5lbmRfICB+Z2hvc3QgID1cbiAgICAgIHsgbG9jX3N0YXJ0ID0gc3RhcnQ7IGxvY19lbmQgPSBlbmRfOyBsb2NfZ2hvc3QgPSBnaG9zdCB9XG4gICAgbGV0IG1vZHVsZV9iaW5kaW5nIH5sb2MgIH5uYW1lICB+ZXhwciAgPVxuICAgICAgeyBwbWJfbmFtZSA9IG5hbWU7IHBtYl9leHByID0gZXhwcjsgcG1iX2F0dHJpYnV0ZXMgPSBbXTsgcG1iX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gfmxvYyAgfm5hbWUgIH50eXBlXyAgPVxuICAgICAgeyBwbWRfbmFtZSA9IG5hbWU7IHBtZF90eXBlID0gdHlwZV87IHBtZF9hdHRyaWJ1dGVzID0gW107IHBtZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9pZGVudCB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfaWRlbnQgeDApIH1cbiAgICBsZXQgcG1vZF9zdHJ1Y3R1cmUgfmxvYyAgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3N0cnVjdHVyZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9mdW5jdG9yIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9mdW5jdG9yICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX2FwcGx5IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9hcHBseSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG1vZF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtb2RfbG9jID0gbG9jO1xuICAgICAgICBwbW9kX2Rlc2MgPSAoUG1vZF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbW9kX3VucGFjayB+bG9jICB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfdW5wYWNrIHgwKSB9XG4gICAgbGV0IHBtb2RfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfmxvYyAgfm5hbWUgIH5tYW5pZmVzdCAgPVxuICAgICAge1xuICAgICAgICBwbXNfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtc19tYW5pZmVzdCA9IG1hbmlmZXN0O1xuICAgICAgICBwbXNfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXNfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtdHlfaWRlbnQgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2lkZW50IHgwKSB9XG4gICAgbGV0IHBtdHlfc2lnbmF0dXJlIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9zaWduYXR1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfZnVuY3RvciB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV93aXRoIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcG10eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBtdHlfbG9jID0gbG9jO1xuICAgICAgICBwbXR5X2Rlc2MgPSAoUG10eV93aXRoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwbXR5X3R5cGVvZiB+bG9jICB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfdHlwZW9mIHgwKSB9XG4gICAgbGV0IHBtdHlfZXh0ZW5zaW9uIH5sb2MgIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBtdHlfYWxpYXMgfmxvYyAgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X2FsaWFzIHgwKSB9XG4gICAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcG10ZF9uYW1lID0gbmFtZTtcbiAgICAgICAgcG10ZF90eXBlID0gdHlwZV87XG4gICAgICAgIHBtdGRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXRkX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBvdGFnIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcG9mX2F0dHJpYnV0ZXMgPSBbXTsgcG9mX2xvYyA9IGxvYzsgcG9mX2Rlc2MgPSAoT3RhZyAoeDAsIHgxKSkgfVxuICAgIGxldCBvaW5oZXJpdCB+bG9jICB4MCA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE9pbmhlcml0IHgwKSB9XG4gICAgbGV0IG9wZW5faW5mb3MgfmxvYyAgfmV4cHIgIH5vdmVycmlkZSAgPVxuICAgICAge1xuICAgICAgICBwb3Blbl9leHByID0gZXhwcjtcbiAgICAgICAgcG9wZW5fb3ZlcnJpZGUgPSBvdmVycmlkZTtcbiAgICAgICAgcG9wZW5fbG9jID0gbG9jO1xuICAgICAgICBwb3Blbl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgcHBhdF9hbnkgfmxvYyAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IFBwYXRfYW55XG4gICAgICB9XG4gICAgbGV0IHBwYXRfdmFyIH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXIgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYWxpYXMgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0YW50IH5sb2MgIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdGFudCB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9pbnRlcnZhbCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfaW50ZXJ2YWwgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdHVwbGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R1cGxlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jICB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RydWN0ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhcmlhbnQgfmxvYyAgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3ZhcmlhbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfcmVjb3JkIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9yZWNvcmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYXJyYXkgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2FycmF5IHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X29yIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJhaW50IH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9jb25zdHJhaW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R5cGUgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3R5cGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfbGF6eSB+bG9jICB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfbGF6eSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF91bnBhY2sgfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X3VucGFjayB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leGNlcHRpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4Y2VwdGlvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9leHRlbnNpb24gfmxvYyAgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vcGVuIH5sb2MgIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9vcGVuICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwb3NpdGlvbiB+Zm5hbWUgIH5sbnVtICB+Ym9sICB+Y251bSAgPVxuICAgICAgeyBwb3NfZm5hbWUgPSBmbmFtZTsgcG9zX2xudW0gPSBsbnVtOyBwb3NfYm9sID0gYm9sOyBwb3NfY251bSA9IGNudW0gfVxuICAgIGxldCBydGFnIH5sb2MgIHgwIHgxIHgyID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUnRhZyAoeDAsIHgxLCB4MikpIH1cbiAgICBsZXQgcmluaGVyaXQgfmxvYyAgeDAgPVxuICAgICAgeyBwcmZfYXR0cmlidXRlcyA9IFtdOyBwcmZfbG9jID0gbG9jOyBwcmZfZGVzYyA9IChSaW5oZXJpdCB4MCkgfVxuICAgIGxldCBwc2lnX3ZhbHVlIH5sb2MgIHgwID0geyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdmFsdWUgeDApIH1cbiAgICBsZXQgcHNpZ190eXBlIH5sb2MgIHgwIHgxID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHNpZ190eXBlc3Vic3QgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfdHlwZXN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZXh0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kc3Vic3QgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfbW9kc3Vic3QgeDApIH1cbiAgICBsZXQgcHNpZ19yZWNtb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfcmVjbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IH5sb2MgIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4gfmxvYyAgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19pbmNsdWRlIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3MgfmxvYyAgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzcyB4MCkgfVxuICAgIGxldCBwc2lnX2NsYXNzX3R5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc2lnX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHNpZ19leHRlbnNpb24gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc2lnX2xvYyA9IGxvYzsgcHNpZ19kZXNjID0gKFBzaWdfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfZXZhbCB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9ldmFsICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdmFsdWUgfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfdmFsdWUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9wcmltaXRpdmUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfcHJpbWl0aXZlIHgwKSB9XG4gICAgbGV0IHBzdHJfdHlwZSB+bG9jICB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzdHJfdHlwZXh0IH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc3RyX2V4Y2VwdGlvbiB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHN0cl9tb2R1bGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIH5sb2MgIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX29wZW4gfmxvYyAgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9vcGVuIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3MgfmxvYyAgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzcyB4MCkgfVxuICAgIGxldCBwc3RyX2NsYXNzX3R5cGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfY2xhc3NfdHlwZSB4MCkgfVxuICAgIGxldCBwc3RyX2luY2x1ZGUgfmxvYyAgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfaW5jbHVkZSB4MCkgfVxuICAgIGxldCBwc3RyX2F0dHJpYnV0ZSB+bG9jICB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcHN0cl9leHRlbnNpb24gfmxvYyAgeDAgeDEgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXh0ZW5zaW9uICh4MCwgeDEpKSB9XG4gICAgbGV0IHRvcGxldmVsX2RpcmVjdGl2ZSB+bG9jICB+bmFtZSAgfmFyZyAgPVxuICAgICAgeyBwZGlyX25hbWUgPSBuYW1lOyBwZGlyX2FyZyA9IGFyZzsgcGRpcl9sb2MgPSBsb2MgfVxuICAgIGxldCB0eXBlX2RlY2xhcmF0aW9uIH5sb2MgIH5uYW1lICB+cGFyYW1zICB+Y3N0cnMgIH5raW5kICB+cHJpdmF0ZV8gXG4gICAgICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcHR5cGVfbmFtZSA9IG5hbWU7XG4gICAgICAgIHB0eXBlX3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcHR5cGVfY3N0cnMgPSBjc3RycztcbiAgICAgICAgcHR5cGVfa2luZCA9IGtpbmQ7XG4gICAgICAgIHB0eXBlX3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgcHR5cGVfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcHR5cGVfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwZV9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leGNlcHRpb24gfmxvYyAgY29uc3RydWN0b3IgPVxuICAgICAge1xuICAgICAgICBwdHlleG5fY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcjtcbiAgICAgICAgcHR5ZXhuX2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXhuX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB0eXBlX2V4dGVuc2lvbiB+bG9jICB+cGF0aCAgfnBhcmFtcyAgfmNvbnN0cnVjdG9ycyAgfnByaXZhdGVfICA9XG4gICAgICB7XG4gICAgICAgIHB0eWV4dF9wYXRoID0gcGF0aDtcbiAgICAgICAgcHR5ZXh0X3BhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcHR5ZXh0X2NvbnN0cnVjdG9ycyA9IGNvbnN0cnVjdG9ycztcbiAgICAgICAgcHR5ZXh0X3ByaXZhdGUgPSBwcml2YXRlXztcbiAgICAgICAgcHR5ZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCB2YWx1ZV9iaW5kaW5nIH5sb2MgIH5wYXQgIH5leHByICA9XG4gICAgICB7IHB2Yl9wYXQgPSBwYXQ7IHB2Yl9leHByID0gZXhwcjsgcHZiX2F0dHJpYnV0ZXMgPSBbXTsgcHZiX2xvYyA9IGxvYyB9XG4gICAgbGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5sb2MgIH5uYW1lICB+dHlwZV8gIH5wcmltICA9XG4gICAgICB7XG4gICAgICAgIHB2YWxfbmFtZSA9IG5hbWU7XG4gICAgICAgIHB2YWxfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwdmFsX3ByaW0gPSBwcmltO1xuICAgICAgICBwdmFsX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHZhbF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgZW5kXG5tb2R1bGUgTWFrZShMb2M6c2lnIHZhbCBsb2MgOiBMb2NhdGlvbi50IGVuZCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgbG9jID0gTG9jLmxvY1xuICAgIGxldCBhdHRyaWJ1dGUgfm5hbWUgIH5wYXlsb2FkICA9XG4gICAgICB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IGF0dHJfbG9jID0gbG9jIH1cbiAgICBsZXQgYmluZGluZ19vcCB+b3AgIH5wYXQgIH5leHAgID1cbiAgICAgIHsgcGJvcF9vcCA9IG9wOyBwYm9wX3BhdCA9IHBhdDsgcGJvcF9leHAgPSBleHA7IHBib3BfbG9jID0gbG9jIH1cbiAgICBsZXQgY2FzZSB+bGhzICB+Z3VhcmQgIH5yaHMgID1cbiAgICAgIHsgcGNfbGhzID0gbGhzOyBwY19ndWFyZCA9IGd1YXJkOyBwY19yaHMgPSByaHMgfVxuICAgIGxldCBwY2xfY29uc3RyIHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX3N0cnVjdHVyZSB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9zdHJ1Y3R1cmUgeDApIH1cbiAgICBsZXQgcGNsX2Z1biB4MCB4MSB4MiB4MyA9XG4gICAgICB7XG4gICAgICAgIHBjbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjbF9sb2MgPSBsb2M7XG4gICAgICAgIHBjbF9kZXNjID0gKFBjbF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2FwcGx5IHgwIHgxID1cbiAgICAgIHsgcGNsX2F0dHJpYnV0ZXMgPSBbXTsgcGNsX2xvYyA9IGxvYzsgcGNsX2Rlc2MgPSAoUGNsX2FwcGx5ICh4MCwgeDEpKSB9XG4gICAgbGV0IHBjbF9sZXQgeDAgeDEgeDIgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwY2xfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY2xfbG9jID0gbG9jO1xuICAgICAgICBwY2xfZGVzYyA9IChQY2xfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGNsX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjbF9hdHRyaWJ1dGVzID0gW107IHBjbF9sb2MgPSBsb2M7IHBjbF9kZXNjID0gKFBjbF9leHRlbnNpb24geDApIH1cbiAgICBsZXQgcGNsX29wZW4geDAgeDEgPVxuICAgICAgeyBwY2xfYXR0cmlidXRlcyA9IFtdOyBwY2xfbG9jID0gbG9jOyBwY2xfZGVzYyA9IChQY2xfb3BlbiAoeDAsIHgxKSkgfVxuICAgIGxldCBwY2ZfaW5oZXJpdCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBjZl9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjZl9sb2MgPSBsb2M7XG4gICAgICAgIHBjZl9kZXNjID0gKFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGNmX3ZhbCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl92YWwgeDApIH1cbiAgICBsZXQgcGNmX21ldGhvZCB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9tZXRob2QgeDApIH1cbiAgICBsZXQgcGNmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfY29uc3RyYWludCB4MCkgfVxuICAgIGxldCBwY2ZfaW5pdGlhbGl6ZXIgeDAgPVxuICAgICAgeyBwY2ZfYXR0cmlidXRlcyA9IFtdOyBwY2ZfbG9jID0gbG9jOyBwY2ZfZGVzYyA9IChQY2ZfaW5pdGlhbGl6ZXIgeDApIH1cbiAgICBsZXQgcGNmX2F0dHJpYnV0ZSB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9hdHRyaWJ1dGUgeDApIH1cbiAgICBsZXQgcGNmX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBjZl9hdHRyaWJ1dGVzID0gW107IHBjZl9sb2MgPSBsb2M7IHBjZl9kZXNjID0gKFBjZl9leHRlbnNpb24geDApIH1cbiAgICBsZXQgY2xhc3NfaW5mb3MgfnZpcnQgIH5wYXJhbXMgIH5uYW1lICB+ZXhwciAgPVxuICAgICAge1xuICAgICAgICBwY2lfdmlydCA9IHZpcnQ7XG4gICAgICAgIHBjaV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHBjaV9uYW1lID0gbmFtZTtcbiAgICAgICAgcGNpX2V4cHIgPSBleHByO1xuICAgICAgICBwY2lfbG9jID0gbG9jO1xuICAgICAgICBwY2lfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGNsYXNzX3NpZ25hdHVyZSB+c2VsZiAgfmZpZWxkcyAgPVxuICAgICAgeyBwY3NpZ19zZWxmID0gc2VsZjsgcGNzaWdfZmllbGRzID0gZmllbGRzIH1cbiAgICBsZXQgY2xhc3Nfc3RydWN0dXJlIH5zZWxmICB+ZmllbGRzICA9XG4gICAgICB7IHBjc3RyX3NlbGYgPSBzZWxmOyBwY3N0cl9maWVsZHMgPSBmaWVsZHMgfVxuICAgIGxldCBwY3R5X2NvbnN0ciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfY29uc3RyICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwY3R5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBjdHlfYXR0cmlidXRlcyA9IFtdOyBwY3R5X2xvYyA9IGxvYzsgcGN0eV9kZXNjID0gKFBjdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwY3R5X2Fycm93IHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGN0eV9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBjdHlfbG9jID0gbG9jO1xuICAgICAgICBwY3R5X2Rlc2MgPSAoUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikpXG4gICAgICB9XG4gICAgbGV0IHBjdHlfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0eV9hdHRyaWJ1dGVzID0gW107IHBjdHlfbG9jID0gbG9jOyBwY3R5X2Rlc2MgPSAoUGN0eV9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBjdHlfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBjdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwY3R5X2xvYyA9IGxvYztcbiAgICAgICAgcGN0eV9kZXNjID0gKFBjdHlfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGN0Zl9pbmhlcml0IHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9pbmhlcml0IHgwKSB9XG4gICAgbGV0IHBjdGZfdmFsIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl92YWwgeDApIH1cbiAgICBsZXQgcGN0Zl9tZXRob2QgeDAgPVxuICAgICAgeyBwY3RmX2F0dHJpYnV0ZXMgPSBbXTsgcGN0Zl9sb2MgPSBsb2M7IHBjdGZfZGVzYyA9IChQY3RmX21ldGhvZCB4MCkgfVxuICAgIGxldCBwY3RmX2NvbnN0cmFpbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwY3RmX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGN0Zl9sb2MgPSBsb2M7XG4gICAgICAgIHBjdGZfZGVzYyA9IChQY3RmX2NvbnN0cmFpbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9hdHRyaWJ1dGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBjdGZfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHsgcGN0Zl9hdHRyaWJ1dGVzID0gW107IHBjdGZfbG9jID0gbG9jOyBwY3RmX2Rlc2MgPSAoUGN0Zl9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lICB+dmFycyAgfmFyZ3MgIH5yZXMgID1cbiAgICAgIHtcbiAgICAgICAgcGNkX25hbWUgPSBuYW1lO1xuICAgICAgICBwY2RfdmFycyA9IHZhcnM7XG4gICAgICAgIHBjZF9hcmdzID0gYXJncztcbiAgICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgICAgcGNkX2F0dHJpYnV0ZXMgPSBbXVxuICAgICAgfVxuICAgIGxldCBwdHlwX2FueSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gUHR5cF9hbnlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF92YXIgeDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhciB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9hcnJvdyB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfYXJyb3cgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHR5cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHR5cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB0eXBfbG9jID0gbG9jO1xuICAgICAgICBwdHlwX2Rlc2MgPSAoUHR5cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jb25zdHIgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2NvbnN0ciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9vYmplY3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX29iamVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9jbGFzcyB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfY2xhc3MgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfYWxpYXMgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2FsaWFzICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3ZhcmlhbnQgeDAgeDEgeDIgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3ZhcmlhbnQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwdHlwX3BvbHkgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX3BvbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHB0eXBfcGFja2FnZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHB0eXBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHB0eXBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwdHlwX2xvYyA9IGxvYztcbiAgICAgICAgcHR5cF9kZXNjID0gKFB0eXBfcGFja2FnZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHR5cF9leHRlbnNpb24geDAgPVxuICAgICAge1xuICAgICAgICBwdHlwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwdHlwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eXBfZGVzYyA9IChQdHlwX2V4dGVuc2lvbiB4MClcbiAgICAgIH1cbiAgICBsZXQgcGRpcl9zdHJpbmcgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX3N0cmluZyB4MCkgfVxuICAgIGxldCBwZGlyX2ludCB4MCB4MSA9XG4gICAgICB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2ludCAoeDAsIHgxKSkgfVxuICAgIGxldCBwZGlyX2lkZW50IHgwID0geyBwZGlyYV9sb2MgPSBsb2M7IHBkaXJhX2Rlc2MgPSAoUGRpcl9pZGVudCB4MCkgfVxuICAgIGxldCBwZGlyX2Jvb2wgeDAgPSB7IHBkaXJhX2xvYyA9IGxvYzsgcGRpcmFfZGVzYyA9IChQZGlyX2Jvb2wgeDApIH1cbiAgICBsZXQgcGV4cF9pZGVudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfaWRlbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29uc3RhbnQgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0YW50IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9mdW5jdGlvbiB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZnVuY3Rpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZnVuIHgwIHgxIHgyIHgzID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9mdW4gKHgwLCB4MSwgeDIsIHgzKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9hcHBseSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbWF0Y2ggeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX21hdGNoICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3RyeSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfdHJ5ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9jb25zdHJ1Y3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF92YXJpYW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3JlY29yZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZpZWxkIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9maWVsZCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXRmaWVsZCB4MCB4MSB4MiA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0ZmllbGQgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9pZnRoZW5lbHNlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9pZnRoZW5lbHNlICh4MCwgeDEsIHgyKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9zZXF1ZW5jZSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2VxdWVuY2UgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfd2hpbGUgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3doaWxlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2ZvciB4MCB4MSB4MiB4MyB4NCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfZm9yICh4MCwgeDEsIHgyLCB4MywgeDQpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2NvbnN0cmFpbnQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2NvbnN0cmFpbnQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfY29lcmNlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9jb2VyY2UgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3NlbmQgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3NlbmQgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBleHBfbmV3IHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXcgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfc2V0aW5zdHZhciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfc2V0aW5zdHZhciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vdmVycmlkZSB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3ZlcnJpZGUgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfbGV0bW9kdWxlIHgwIHgxIHgyID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9sZXRtb2R1bGUgKHgwLCB4MSwgeDIpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xldGV4Y2VwdGlvbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2Fzc2VydCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfYXNzZXJ0IHgwKVxuICAgICAgfVxuICAgIGxldCBwZXhwX2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfcG9seSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfcG9seSAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9vYmplY3QgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX29iamVjdCB4MClcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9uZXd0eXBlIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9uZXd0eXBlICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwZXhwX3BhY2sgeDAgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IChQZXhwX3BhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcGV4cF9sZXRvcCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBleHBfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwZXhwX2xvYyA9IGxvYztcbiAgICAgICAgcGV4cF9kZXNjID0gKFBleHBfbGV0b3AgeDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBleHBfbG9jID0gbG9jO1xuICAgICAgICBwZXhwX2Rlc2MgPSAoUGV4cF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICAgICAge1xuICAgICAgICBwZXhwX2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcGV4cF9sb2MgPSBsb2M7XG4gICAgICAgIHBleHBfZGVzYyA9IFBleHBfdW5yZWFjaGFibGVcbiAgICAgIH1cbiAgICBsZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIH5uYW1lICB+a2luZCAgPVxuICAgICAge1xuICAgICAgICBwZXh0X25hbWUgPSBuYW1lO1xuICAgICAgICBwZXh0X2tpbmQgPSBraW5kO1xuICAgICAgICBwZXh0X2xvYyA9IGxvYztcbiAgICAgICAgcGV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgaW5jbHVkZV9pbmZvcyBtb2RfID1cbiAgICAgIHsgcGluY2xfbW9kID0gbW9kXzsgcGluY2xfbG9jID0gbG9jOyBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfVxuICAgIGxldCBsYWJlbF9kZWNsYXJhdGlvbiB+bmFtZSAgfm11dGFibGVfICB+dHlwZV8gID1cbiAgICAgIHtcbiAgICAgICAgcGxkX25hbWUgPSBuYW1lO1xuICAgICAgICBwbGRfbXV0YWJsZSA9IG11dGFibGVfO1xuICAgICAgICBwbGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbGRfbG9jID0gbG9jO1xuICAgICAgICBwbGRfYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IGxldG9wIH5sZXRfICB+YW5kcyAgfmJvZHkgID0geyBsZXRfOyBhbmRzOyBib2R5IH1cbiAgICBsZXQgbG9jYXRpb24gfnN0YXJ0ICB+ZW5kXyAgfmdob3N0ICA9XG4gICAgICB7IGxvY19zdGFydCA9IHN0YXJ0OyBsb2NfZW5kID0gZW5kXzsgbG9jX2dob3N0ID0gZ2hvc3QgfVxuICAgIGxldCBtb2R1bGVfYmluZGluZyB+bmFtZSAgfmV4cHIgID1cbiAgICAgIHsgcG1iX25hbWUgPSBuYW1lOyBwbWJfZXhwciA9IGV4cHI7IHBtYl9hdHRyaWJ1dGVzID0gW107IHBtYl9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lICB+dHlwZV8gID1cbiAgICAgIHsgcG1kX25hbWUgPSBuYW1lOyBwbWRfdHlwZSA9IHR5cGVfOyBwbWRfYXR0cmlidXRlcyA9IFtdOyBwbWRfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHBtb2RfaWRlbnQgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX2lkZW50IHgwKSB9XG4gICAgbGV0IHBtb2Rfc3RydWN0dXJlIHgwID1cbiAgICAgIHsgcG1vZF9hdHRyaWJ1dGVzID0gW107IHBtb2RfbG9jID0gbG9jOyBwbW9kX2Rlc2MgPSAoUG1vZF9zdHJ1Y3R1cmUgeDApXG4gICAgICB9XG4gICAgbGV0IHBtb2RfZnVuY3RvciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfZnVuY3RvciAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF9hcHBseSB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfYXBwbHkgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtb2RfY29uc3RyYWludCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtb2RfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbW9kX2xvYyA9IGxvYztcbiAgICAgICAgcG1vZF9kZXNjID0gKFBtb2RfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG1vZF91bnBhY2sgeDAgPVxuICAgICAgeyBwbW9kX2F0dHJpYnV0ZXMgPSBbXTsgcG1vZF9sb2MgPSBsb2M7IHBtb2RfZGVzYyA9IChQbW9kX3VucGFjayB4MCkgfVxuICAgIGxldCBwbW9kX2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtb2RfYXR0cmlidXRlcyA9IFtdOyBwbW9kX2xvYyA9IGxvYzsgcG1vZF9kZXNjID0gKFBtb2RfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBtb2R1bGVfc3Vic3RpdHV0aW9uIH5uYW1lICB+bWFuaWZlc3QgID1cbiAgICAgIHtcbiAgICAgICAgcG1zX25hbWUgPSBuYW1lO1xuICAgICAgICBwbXNfbWFuaWZlc3QgPSBtYW5pZmVzdDtcbiAgICAgICAgcG1zX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG1zX2xvYyA9IGxvY1xuICAgICAgfVxuICAgIGxldCBwbXR5X2lkZW50IHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9pZGVudCB4MCkgfVxuICAgIGxldCBwbXR5X3NpZ25hdHVyZSB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfc2lnbmF0dXJlIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2Z1bmN0b3IgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwbXR5X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10eV9sb2MgPSBsb2M7XG4gICAgICAgIHBtdHlfZGVzYyA9IChQbXR5X2Z1bmN0b3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBtdHlfd2l0aCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBtdHlfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwbXR5X2xvYyA9IGxvYztcbiAgICAgICAgcG10eV9kZXNjID0gKFBtdHlfd2l0aCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG10eV90eXBlb2YgeDAgPVxuICAgICAgeyBwbXR5X2F0dHJpYnV0ZXMgPSBbXTsgcG10eV9sb2MgPSBsb2M7IHBtdHlfZGVzYyA9IChQbXR5X3R5cGVvZiB4MCkgfVxuICAgIGxldCBwbXR5X2V4dGVuc2lvbiB4MCA9XG4gICAgICB7IHBtdHlfYXR0cmlidXRlcyA9IFtdOyBwbXR5X2xvYyA9IGxvYzsgcG10eV9kZXNjID0gKFBtdHlfZXh0ZW5zaW9uIHgwKVxuICAgICAgfVxuICAgIGxldCBwbXR5X2FsaWFzIHgwID1cbiAgICAgIHsgcG10eV9hdHRyaWJ1dGVzID0gW107IHBtdHlfbG9jID0gbG9jOyBwbXR5X2Rlc2MgPSAoUG10eV9hbGlhcyB4MCkgfVxuICAgIGxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnR5cGVfICA9XG4gICAgICB7XG4gICAgICAgIHBtdGRfbmFtZSA9IG5hbWU7XG4gICAgICAgIHBtdGRfdHlwZSA9IHR5cGVfO1xuICAgICAgICBwbXRkX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcG10ZF9sb2MgPSBsb2NcbiAgICAgIH1cbiAgICBsZXQgb3RhZyB4MCB4MSA9XG4gICAgICB7IHBvZl9hdHRyaWJ1dGVzID0gW107IHBvZl9sb2MgPSBsb2M7IHBvZl9kZXNjID0gKE90YWcgKHgwLCB4MSkpIH1cbiAgICBsZXQgb2luaGVyaXQgeDAgPVxuICAgICAgeyBwb2ZfYXR0cmlidXRlcyA9IFtdOyBwb2ZfbG9jID0gbG9jOyBwb2ZfZGVzYyA9IChPaW5oZXJpdCB4MCkgfVxuICAgIGxldCBvcGVuX2luZm9zIH5leHByICB+b3ZlcnJpZGUgID1cbiAgICAgIHtcbiAgICAgICAgcG9wZW5fZXhwciA9IGV4cHI7XG4gICAgICAgIHBvcGVuX292ZXJyaWRlID0gb3ZlcnJpZGU7XG4gICAgICAgIHBvcGVuX2xvYyA9IGxvYztcbiAgICAgICAgcG9wZW5fYXR0cmlidXRlcyA9IFtdXG4gICAgICB9XG4gICAgbGV0IHBwYXRfYW55ID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X2FueVxuICAgICAgfVxuICAgIGxldCBwcGF0X3ZhciB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfdmFyIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FsaWFzIHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hbGlhcyAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdGFudCB4MCA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RhbnQgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfaW50ZXJ2YWwgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2ludGVydmFsICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3R1cGxlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90dXBsZSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9jb25zdHJ1Y3QgeDAgeDEgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF92YXJpYW50IHgwIHgxID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF92YXJpYW50ICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X3JlY29yZCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfcmVjb3JkICh4MCwgeDEpKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2FycmF5IHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9hcnJheSB4MClcbiAgICAgIH1cbiAgICBsZXQgcHBhdF9vciB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3IgKHgwLCB4MSkpXG4gICAgICB9XG4gICAgbGV0IHBwYXRfY29uc3RyYWludCB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfY29uc3RyYWludCAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcHBhdF90eXBlIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF90eXBlIHgwKVxuICAgICAgfVxuICAgIGxldCBwcGF0X2xhenkgeDAgPVxuICAgICAge1xuICAgICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICAgIHBwYXRfZGVzYyA9IChQcGF0X2xhenkgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfdW5wYWNrIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF91bnBhY2sgeDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXhjZXB0aW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leGNlcHRpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfZXh0ZW5zaW9uIHgwID1cbiAgICAgIHtcbiAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHBwYXRfbG9jID0gbG9jO1xuICAgICAgICBwcGF0X2Rlc2MgPSAoUHBhdF9leHRlbnNpb24geDApXG4gICAgICB9XG4gICAgbGV0IHBwYXRfb3BlbiB4MCB4MSA9XG4gICAgICB7XG4gICAgICAgIHBwYXRfbG9jX3N0YWNrID0gW107XG4gICAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgICAgcHBhdF9kZXNjID0gKFBwYXRfb3BlbiAoeDAsIHgxKSlcbiAgICAgIH1cbiAgICBsZXQgcG9zaXRpb24gfmZuYW1lICB+bG51bSAgfmJvbCAgfmNudW0gID1cbiAgICAgIHsgcG9zX2ZuYW1lID0gZm5hbWU7IHBvc19sbnVtID0gbG51bTsgcG9zX2JvbCA9IGJvbDsgcG9zX2NudW0gPSBjbnVtIH1cbiAgICBsZXQgcnRhZyB4MCB4MSB4MiA9XG4gICAgICB7IHByZl9hdHRyaWJ1dGVzID0gW107IHByZl9sb2MgPSBsb2M7IHByZl9kZXNjID0gKFJ0YWcgKHgwLCB4MSwgeDIpKSB9XG4gICAgbGV0IHJpbmhlcml0IHgwID1cbiAgICAgIHsgcHJmX2F0dHJpYnV0ZXMgPSBbXTsgcHJmX2xvYyA9IGxvYzsgcHJmX2Rlc2MgPSAoUmluaGVyaXQgeDApIH1cbiAgICBsZXQgcHNpZ192YWx1ZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3ZhbHVlIHgwKSB9XG4gICAgbGV0IHBzaWdfdHlwZSB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ190eXBlICh4MCwgeDEpKSB9XG4gICAgbGV0IHBzaWdfdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX3R5cGV4dCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3R5cGV4dCB4MCkgfVxuICAgIGxldCBwc2lnX2V4Y2VwdGlvbiB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leGNlcHRpb24geDApIH1cbiAgICBsZXQgcHNpZ19tb2R1bGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R1bGUgeDApIH1cbiAgICBsZXQgcHNpZ19tb2RzdWJzdCB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHN1YnN0IHgwKSB9XG4gICAgbGV0IHBzaWdfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc2lnX21vZHR5cGUgeDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfbW9kdHlwZXN1YnN0IHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX21vZHR5cGVzdWJzdCB4MCkgfVxuICAgIGxldCBwc2lnX29wZW4geDAgPSB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19vcGVuIHgwKSB9XG4gICAgbGV0IHBzaWdfaW5jbHVkZSB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHNpZ19jbGFzcyB4MCA9IHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzaWdfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzaWdfYXR0cmlidXRlIHgwID1cbiAgICAgIHsgcHNpZ19sb2MgPSBsb2M7IHBzaWdfZGVzYyA9IChQc2lnX2F0dHJpYnV0ZSB4MCkgfVxuICAgIGxldCBwc2lnX2V4dGVuc2lvbiB4MCB4MSA9XG4gICAgICB7IHBzaWdfbG9jID0gbG9jOyBwc2lnX2Rlc2MgPSAoUHNpZ19leHRlbnNpb24gKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl9ldmFsIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V2YWwgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl92YWx1ZSB4MCB4MSA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl92YWx1ZSAoeDAsIHgxKSkgfVxuICAgIGxldCBwc3RyX3ByaW1pdGl2ZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9wcmltaXRpdmUgeDApIH1cbiAgICBsZXQgcHN0cl90eXBlIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3R5cGUgKHgwLCB4MSkpIH1cbiAgICBsZXQgcHN0cl90eXBleHQgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl90eXBleHQgeDApIH1cbiAgICBsZXQgcHN0cl9leGNlcHRpb24geDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfZXhjZXB0aW9uIHgwKSB9XG4gICAgbGV0IHBzdHJfbW9kdWxlIHgwID0geyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfbW9kdWxlIHgwKSB9XG4gICAgbGV0IHBzdHJfcmVjbW9kdWxlIHgwID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX3JlY21vZHVsZSB4MCkgfVxuICAgIGxldCBwc3RyX21vZHR5cGUgeDAgPSB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9tb2R0eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfb3BlbiB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX29wZW4geDApIH1cbiAgICBsZXQgcHN0cl9jbGFzcyB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2NsYXNzIHgwKSB9XG4gICAgbGV0IHBzdHJfY2xhc3NfdHlwZSB4MCA9XG4gICAgICB7IHBzdHJfbG9jID0gbG9jOyBwc3RyX2Rlc2MgPSAoUHN0cl9jbGFzc190eXBlIHgwKSB9XG4gICAgbGV0IHBzdHJfaW5jbHVkZSB4MCA9IHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2luY2x1ZGUgeDApIH1cbiAgICBsZXQgcHN0cl9hdHRyaWJ1dGUgeDAgPVxuICAgICAgeyBwc3RyX2xvYyA9IGxvYzsgcHN0cl9kZXNjID0gKFBzdHJfYXR0cmlidXRlIHgwKSB9XG4gICAgbGV0IHBzdHJfZXh0ZW5zaW9uIHgwIHgxID1cbiAgICAgIHsgcHN0cl9sb2MgPSBsb2M7IHBzdHJfZGVzYyA9IChQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSkgfVxuICAgIGxldCB0b3BsZXZlbF9kaXJlY3RpdmUgfm5hbWUgIH5hcmcgID1cbiAgICAgIHsgcGRpcl9uYW1lID0gbmFtZTsgcGRpcl9hcmcgPSBhcmc7IHBkaXJfbG9jID0gbG9jIH1cbiAgICBsZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZSAgfnBhcmFtcyAgfmNzdHJzICB+a2luZCAgfnByaXZhdGVfICB+bWFuaWZlc3QgXG4gICAgICA9XG4gICAgICB7XG4gICAgICAgIHB0eXBlX25hbWUgPSBuYW1lO1xuICAgICAgICBwdHlwZV9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eXBlX2NzdHJzID0gY3N0cnM7XG4gICAgICAgIHB0eXBlX2tpbmQgPSBraW5kO1xuICAgICAgICBwdHlwZV9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eXBlX21hbmlmZXN0ID0gbWFuaWZlc3Q7XG4gICAgICAgIHB0eXBlX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgcHR5cGVfbG9jID0gbG9jXG4gICAgICB9XG4gICAgbGV0IHR5cGVfZXhjZXB0aW9uIGNvbnN0cnVjdG9yID1cbiAgICAgIHtcbiAgICAgICAgcHR5ZXhuX2NvbnN0cnVjdG9yID0gY29uc3RydWN0b3I7XG4gICAgICAgIHB0eWV4bl9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4bl9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdHlwZV9leHRlbnNpb24gfnBhdGggIH5wYXJhbXMgIH5jb25zdHJ1Y3RvcnMgIH5wcml2YXRlXyAgPVxuICAgICAge1xuICAgICAgICBwdHlleHRfcGF0aCA9IHBhdGg7XG4gICAgICAgIHB0eWV4dF9wYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHB0eWV4dF9jb25zdHJ1Y3RvcnMgPSBjb25zdHJ1Y3RvcnM7XG4gICAgICAgIHB0eWV4dF9wcml2YXRlID0gcHJpdmF0ZV87XG4gICAgICAgIHB0eWV4dF9sb2MgPSBsb2M7XG4gICAgICAgIHB0eWV4dF9hdHRyaWJ1dGVzID0gW11cbiAgICAgIH1cbiAgICBsZXQgdmFsdWVfYmluZGluZyB+cGF0ICB+ZXhwciAgPVxuICAgICAgeyBwdmJfcGF0ID0gcGF0OyBwdmJfZXhwciA9IGV4cHI7IHB2Yl9hdHRyaWJ1dGVzID0gW107IHB2Yl9sb2MgPSBsb2MgfVxuICAgIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiB+bmFtZSAgfnR5cGVfICB+cHJpbSAgPVxuICAgICAge1xuICAgICAgICBwdmFsX25hbWUgPSBuYW1lO1xuICAgICAgICBwdmFsX3R5cGUgPSB0eXBlXztcbiAgICAgICAgcHZhbF9wcmltID0gcHJpbTtcbiAgICAgICAgcHZhbF9hdHRyaWJ1dGVzID0gW107XG4gICAgICAgIHB2YWxfbG9jID0gbG9jXG4gICAgICB9XG4gIGVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIGxvYyA9IHsgdHh0IDogJ2E7IGxvYyA6IExvY2F0aW9uLnQgfVxuXG5sZXQgdHh0IHQgPSB0LnR4dFxubGV0IGxvYyB0ID0gdC5sb2NcbmxldCBtYWtlIH5sb2MgdHh0ID0geyBsb2M7IHR4dCB9XG5sZXQgbWFwIHQgfmYgPSB7IHQgd2l0aCB0eHQgPSBmIHQudHh0IH1cbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBsb25naWRlbnQgPSBMaWRlbnQgb2Ygc3RyaW5nIHwgTGRvdCBvZiB0ICogc3RyaW5nIHwgTGFwcGx5IG9mIHQgKiB0XG5cbiAgbGV0IGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50ID0gUG9seS5jb21wYXJlXG5cbiAgbGV0IGlzX25vcm1hbF9pZGVudF9jaGFyID0gZnVuY3Rpb25cbiAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJzAnIC4uICc5JyB8ICdfJyB8ICdcXCcnIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcblxuICBsZXQgaXNfbm9ybWFsX2lkZW50ID0gZnVuY3Rpb25cbiAgICB8IFwiYXNyXCIgfCBcImxhbmRcIiB8IFwibG9yXCIgfCBcImxzbFwiIHwgXCJsc3JcIiB8IFwibHhvclwiIHwgXCJtb2RcIiB8IFwib3JcIiAtPiBmYWxzZVxuICAgIHwgc3RyaW5nIC0+IFN0cmluZy5mb3JfYWxsIHN0cmluZyB+Zjppc19ub3JtYWxfaWRlbnRfY2hhclxuXG4gIGxldCBzaG9ydF9uYW1lIHN0cmluZyA9XG4gICAgaWYgaXNfbm9ybWFsX2lkZW50IHN0cmluZyB0aGVuIHN0cmluZyBlbHNlIFwiKCBcIiBeIHN0cmluZyBeIFwiIClcIlxuXG4gIGxldCByZWMgbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBMaWRlbnQgcyAtPiBzaG9ydF9uYW1lIHNcbiAgICB8IExkb3QgKGEsIGIpIC0+IG5hbWUgYSBeIFwiLlwiIF4gc2hvcnRfbmFtZSBiXG4gICAgfCBMYXBwbHkgKGEsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwiJXMoJXMpXCIgKG5hbWUgYSkgKG5hbWUgYilcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKG5hbWUgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHJlYyBmbGF0IGFjY3UgPSBmdW5jdGlvblxuICB8IExpZGVudCBzIC0+IHMgOjogYWNjdVxuICB8IExkb3QgKGxpZCwgcykgLT4gZmxhdCAocyA6OiBhY2N1KSBsaWRcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IGZsYXR0ZW5fZXhuIGxpZCA9IGZsYXQgW10gbGlkXG5cbmxldCBsYXN0X2V4biA9IGZ1bmN0aW9uXG4gIHwgTGlkZW50IHMgLT4gc1xuICB8IExkb3QgKF8sIHMpIC0+IHNcbiAgfCBMYXBwbHkgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiUHB4bGliLkxvbmdpZGVudC5mbGF0dGVuXCJcblxubGV0IHVuZmxhdHRlbiB+aW5pdCBsID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjooZnVuIGFjYyBzIC0+IExkb3QgKGFjYywgcykpXG5cbigqIGZvciBjYXNlcyB3aXRob3V0IGRvdHRlZCBvcGVyYXRvcnMgKGUuZy4gW3BhcnNlIFwiQS5CLkNcIl0pICopXG5sZXQgcGFyc2Vfc2ltcGxlIHMgPVxuICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6Jy4nIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBzIDo6IGwgLT4gdW5mbGF0dGVuIH5pbml0OihMaWRlbnQgcykgbFxuXG4oKiBoYW5kbGUgW1wiQS5CLigrLispXCJdIG9yIFtcIlZlYy4oLiUuKCk8LSlcIl0gKilcbmxldCBwYXJzZSBzID1cbiAgbGV0IGludmFsaWQgKCkgPVxuICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIlBweGxpYi5Mb25naWRlbnQucGFyc2U6ICVTXCIgcylcbiAgaW5cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDwgMSB0aGVuIGludmFsaWQgKCk7XG4gIGxldCBvcGVuX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKCcgaW5cbiAgbGV0IGNsb3NlX3BhciA9IFN0cmluZy5pbmRleF9vcHQgcyAnKScgaW5cbiAgbWF0Y2ggKHMuWzBdLCBvcGVuX3BhciwgY2xvc2VfcGFyKSB3aXRoXG4gIHwgKCdBJyAuLiAnWicgfCAnYScgLi4gJ3onIHwgJ18nKSwgTm9uZSwgTm9uZSAtPiBwYXJzZV9zaW1wbGUgc1xuICB8IF8sIE5vbmUsIE5vbmUgLT4gTGlkZW50IHMgKCogVGhpcyBpcyBhIHJhdyBvcGVyYXRvciwgbm8gbW9kdWxlIHBhdGggKilcbiAgfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBpbnZhbGlkICgpXG4gIHwgXywgU29tZSBsLCBTb21lIHIgLT4gKFxuICAgICAgaWYgSW50LihyIDw+IFN0cmluZy5sZW5ndGggcyAtIDEpIHRoZW4gaW52YWxpZCAoKTtcbiAgICAgIGxldCBncm91cCA9XG4gICAgICAgIGlmIEludC4ociA9IGwgKyAxKSB0aGVuIFwiKClcIlxuICAgICAgICBlbHNlIFN0cmluZy50cmltIChTdHJpbmcuc3ViIHMgfnBvczoobCArIDEpIH5sZW46KHIgLSBsIC0gMSkpXG4gICAgICBpblxuICAgICAgaWYgSW50LihsID0gMCkgdGhlbiBMaWRlbnQgZ3JvdXBcbiAgICAgIGVsc2UgaWYgQ2hhci4ocy5bbCAtIDFdIDw+ICcuJykgdGhlbiBpbnZhbGlkICgpXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBiZWZvcmUgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KGwgLSAxKSBpblxuICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXRfb25fY2hhciBiZWZvcmUgfnNlcDonLicgd2l0aFxuICAgICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IHMgOjogbCAtPiBMZG90ICh1bmZsYXR0ZW4gfmluaXQ6KExpZGVudCBzKSBsLCBncm91cCkpXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZSAoVClcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZSAoVClcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVmYXVsdCA9IHN0cnVjdFxuICBtb2R1bGUgTG9jYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIExvYy50XG5cbiAgICBsZXQgbG9jICh4IDogXyB0KSA9IHgubG9jXG4gICAgbGV0IG1rIH5sb2MgeCA9IHsgbG9jOyB0eHQgPSB4IH1cbiAgICBsZXQgbWFwIGYgdCA9IHsgdCB3aXRoIHR4dCA9IGYgdC50eHQgfVxuICAgIGxldCBtYXBfbGlkZW50IHggPSBtYXAgKGZ1biB4IC0+IExvbmdpZGVudC5MaWRlbnQgeCkgeFxuICAgIGxldCBsaWRlbnQgfmxvYyB4ID0gbWsgfmxvYyAoTG9uZ2lkZW50LnBhcnNlIHgpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1cblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH52YXJzIH5hcmdzIH5yZXMgKCkgPVxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+dmFycyB+YXJncyB+cmVzXG4gIGVuZFxuXG4gICgqLS0tLS0tIHN0YWJsZSBsYXllciBhYm92ZSBBc3RfYnVpbGRlcl9nZW5lcmF0ZWQuTSAtLS0tLSopXG4gIGxldCBwcGF0X2NvbnN0cnVjdCB+bG9jIGxpZCBwID1cbiAgICB7XG4gICAgICBwcGF0X2xvY19zdGFjayA9IFtdO1xuICAgICAgcHBhdF9hdHRyaWJ1dGVzID0gW107XG4gICAgICBwcGF0X2xvYyA9IGxvYztcbiAgICAgIHBwYXRfZGVzYyA9IFBwYXRfY29uc3RydWN0IChsaWQsIE9wdGlvbi5tYXAgcCB+ZjooZnVuIHAgLT4gKFtdLCBwKSkpO1xuICAgIH1cblxuICBsZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gfmxvYyB+bmFtZSB+YXJncyB+cmVzID1cbiAgICB7XG4gICAgICBwY2RfbmFtZSA9IG5hbWU7XG4gICAgICBwY2RfdmFycyA9IFtdO1xuICAgICAgcGNkX2FyZ3MgPSBhcmdzO1xuICAgICAgcGNkX3JlcyA9IHJlcztcbiAgICAgIHBjZF9sb2MgPSBsb2M7XG4gICAgICBwY2RfYXR0cmlidXRlcyA9IFtdO1xuICAgIH1cblxuICAoKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG4gIGxldCBwc3RyX3ZhbHVlX2xpc3QgfmxvYyByZWNfZmxhZyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdmJzIC0+IFsgcHN0cl92YWx1ZSB+bG9jIHJlY19mbGFnIHZicyBdXG5cbiAgbGV0IG5vbnJlY190eXBlX2RlY2xhcmF0aW9uIH5sb2M6XyB+bmFtZTpfIH5wYXJhbXM6XyB+Y3N0cnM6XyB+a2luZDpfXG4gICAgICB+cHJpdmF0ZV86XyB+bWFuaWZlc3Q6XyA9XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiUHB4bGliLkFzdF9idWlsZGVyLm5vbnJlY190eXBlX2RlY2xhcmF0aW9uOiBkb24ndCB1c2UgdGhpcyBmdW5jdGlvblwiXG5cbiAgbGV0IGVpbnQgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50LnRvX3N0cmluZyB0LCBOb25lKSlcbiAgbGV0IGVjaGFyIH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2NoYXIgdClcbiAgbGV0IGVzdHJpbmcgfmxvYyB0ID0gcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3Rfc3RyaW5nICh0LCBsb2MsIE5vbmUpKVxuICBsZXQgZWZsb2F0IH5sb2MgdCA9IHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2Zsb2F0ICh0LCBOb25lKSlcblxuICBsZXQgZWludDMyIH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50MzIudG9fc3RyaW5nIHQsIFNvbWUgJ2wnKSlcblxuICBsZXQgZWludDY0IH5sb2MgdCA9XG4gICAgcGV4cF9jb25zdGFudCB+bG9jIChQY29uc3RfaW50ZWdlciAoSW50NjQudG9fc3RyaW5nIHQsIFNvbWUgJ0wnKSlcblxuICBsZXQgZW5hdGl2ZWludCB+bG9jIHQgPVxuICAgIHBleHBfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKE5hdGl2ZWludC50b19zdHJpbmcgdCwgU29tZSAnbicpKVxuXG4gIGxldCBwaW50IH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludC50b19zdHJpbmcgdCwgTm9uZSkpXG4gIGxldCBwY2hhciB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9jaGFyIHQpXG4gIGxldCBwc3RyaW5nIH5sb2MgdCA9IHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X3N0cmluZyAodCwgbG9jLCBOb25lKSlcbiAgbGV0IHBmbG9hdCB+bG9jIHQgPSBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9mbG9hdCAodCwgTm9uZSkpXG5cbiAgbGV0IHBpbnQzMiB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDMyLnRvX3N0cmluZyB0LCBTb21lICdsJykpXG5cbiAgbGV0IHBpbnQ2NCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RhbnQgfmxvYyAoUGNvbnN0X2ludGVnZXIgKEludDY0LnRvX3N0cmluZyB0LCBTb21lICdMJykpXG5cbiAgbGV0IHBuYXRpdmVpbnQgfmxvYyB0ID1cbiAgICBwcGF0X2NvbnN0YW50IH5sb2MgKFBjb25zdF9pbnRlZ2VyIChOYXRpdmVpbnQudG9fc3RyaW5nIHQsIFNvbWUgJ24nKSlcblxuICBsZXQgZWJvb2wgfmxvYyB0ID1cbiAgICBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIChCb29sLnRvX3N0cmluZyB0KSkgTm9uZVxuXG4gIGxldCBwYm9vbCB+bG9jIHQgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgKEJvb2wudG9fc3RyaW5nIHQpKSBOb25lXG5cbiAgbGV0IGV2YXIgfmxvYyB2ID0gcGV4cF9pZGVudCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5wYXJzZSB2KSlcbiAgbGV0IHB2YXIgfmxvYyB2ID0gcHBhdF92YXIgfmxvYyAoTG9jYXRlZC5tayB+bG9jIHYpXG4gIGxldCBldW5pdCB+bG9jID0gcGV4cF9jb25zdHJ1Y3QgfmxvYyAoTG9jYXRlZC5saWRlbnQgfmxvYyBcIigpXCIpIE5vbmVcbiAgbGV0IHB1bml0IH5sb2MgPSBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIikgTm9uZVxuICBsZXQgcGV4cF90dXBsZSB+bG9jIGwgPSBtYXRjaCBsIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gcGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgfmxvYyBsID0gbWF0Y2ggbCB3aXRoIFsgeCBdIC0+IHggfCBfIC0+IHBwYXRfdHVwbGUgfmxvYyBsXG4gIGxldCBwdHlwX3R1cGxlIH5sb2MgbCA9IG1hdGNoIGwgd2l0aCBbIHggXSAtPiB4IHwgXyAtPiBwdHlwX3R1cGxlIH5sb2MgbFxuXG4gIGxldCBwZXhwX3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBleHBfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwcGF0X3R1cGxlX29wdCB+bG9jIGwgPVxuICAgIG1hdGNoIGwgd2l0aCBbXSAtPiBOb25lIHwgXyA6OiBfIC0+IFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBsKVxuXG4gIGxldCBwdHlwX3BvbHkgfmxvYyB2YXJzIHR5ID1cbiAgICBtYXRjaCB2YXJzIHdpdGggW10gLT4gdHkgfCBfIC0+IHB0eXBfcG9seSB+bG9jIHZhcnMgdHlcblxuICBsZXQgcGV4cF9hcHBseSB+bG9jIGUgZWwgPVxuICAgIG1hdGNoIChlLCBlbCkgd2l0aFxuICAgIHwgXywgW10gLT4gZVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzKTsgcGV4cF9hdHRyaWJ1dGVzID0gW107IF8gfSwgXyAtPlxuICAgICAgICB7IGUgd2l0aCBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChlLCBhcmdzIEAgZWwpIH1cbiAgICB8IF8gLT4gcGV4cF9hcHBseSB+bG9jIGUgZWxcblxuICBsZXQgZWFwcGx5IH5sb2MgZSBlbCA9XG4gICAgcGV4cF9hcHBseSB+bG9jIGUgKExpc3QubWFwIGVsIH5mOihmdW4gZSAtPiAoQXN0dHlwZXMuTm9sYWJlbCwgZSkpKVxuXG4gIGxldCBlYWJzdHJhY3QgfmxvYyBwcyBlID1cbiAgICBMaXN0LmZvbGRfcmlnaHQgcHMgfmluaXQ6ZSB+ZjooZnVuIHAgZSAtPlxuICAgICAgICBwZXhwX2Z1biB+bG9jIEFzdHR5cGVzLk5vbGFiZWwgTm9uZSBwIGUpXG5cbiAgbGV0IGVzZXF1ZW5jZSB+bG9jIGVsID1cbiAgICBtYXRjaCBMaXN0LnJldiBlbCB3aXRoXG4gICAgfCBbXSAtPiBldW5pdCB+bG9jXG4gICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdCB0bCB+aW5pdDpoZCB+ZjooZnVuIGFjYyBlIC0+IHBleHBfc2VxdWVuY2UgfmxvYyBlIGFjYylcblxuICBsZXQgcGNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBwYXRfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgZWNvbnN0cnVjdCBjZCBhcmcgPVxuICAgIHBleHBfY29uc3RydWN0IH5sb2M6Y2QucGNkX2xvYyAoTG9jYXRlZC5tYXBfbGlkZW50IGNkLnBjZF9uYW1lKSBhcmdcblxuICBsZXQgcmVjIGVsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBleHBfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBleHBfdHVwbGUgfmxvYyBbIHg7IGVsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgcmVjIHBsaXN0IH5sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBwcGF0X2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLm1rIH5sb2MgKExvbmdpZGVudC5MaWRlbnQgXCJbXVwiKSkgTm9uZVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIHBwYXRfY29uc3RydWN0IH5sb2NcbiAgICAgICAgICAoTG9jYXRlZC5tayB+bG9jIChMb25naWRlbnQuTGlkZW50IFwiOjpcIikpXG4gICAgICAgICAgKFNvbWUgKHBwYXRfdHVwbGUgfmxvYyBbIHg7IHBsaXN0IH5sb2MgbCBdKSlcblxuICBsZXQgdW5hcHBsaWVkX3R5cGVfY29uc3RyX2NvbnZfd2l0aG91dF9hcHBseSB+bG9jIChpZGVudCA6IExvbmdpZGVudC50KSB+ZiA9XG4gICAgbWF0Y2ggaWRlbnQgd2l0aFxuICAgIHwgTGlkZW50IG4gLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGlkZW50IChmIG4pOyBsb2MgfVxuICAgIHwgTGRvdCAocGF0aCwgbikgLT4gcGV4cF9pZGVudCB+bG9jIHsgdHh0ID0gTGRvdCAocGF0aCwgZiBuKTsgbG9jIH1cbiAgICB8IExhcHBseSBfIC0+XG4gICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwidW5leHBlY3RlZCBhcHBsaWNhdGl2ZSBmdW5jdG9yIHR5cGVcIlxuXG4gIGxldCB0eXBlX2NvbnN0cl9jb252IH5sb2M6YXBwbHlfbG9jIHsgTG9jLmxvYzsgdHh0ID0gbG9uZ2lkZW50IH0gfmYgYXJncyA9XG4gICAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbWF0Y2ggKGxvbmdpZGVudCA6IExvbmdpZGVudC50KSB3aXRoXG4gICAgfCBMaWRlbnQgXyB8IExkb3QgKChMaWRlbnQgXyB8IExkb3QgXyksIF8pIHwgTGFwcGx5IF8gLT4gKFxuICAgICAgICBsZXQgaWRlbnQgPVxuICAgICAgICAgIHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgbG9uZ2lkZW50IH5sb2MgfmZcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gaWRlbnRcbiAgICAgICAgfCBfIDo6IF8gLT4gZWFwcGx5IH5sb2M6YXBwbHlfbG9jIGlkZW50IGFyZ3MpXG4gICAgfCBMZG90ICgoTGFwcGx5IF8gYXMgbW9kdWxlX3BhdGgpLCBuKSAtPlxuICAgICAgICBsZXQgc3VmZml4X24gZnVuY3Rvcl8gPSBTdHJpbmcudW5jYXBpdGFsaXplX2FzY2lpIGZ1bmN0b3JfIF4gXCJfX1wiIF4gbiBpblxuICAgICAgICBsZXQgcmVjIGdhdGhlcl9sYXBwbHkgZnVuY3Rvcl9hcmdzIDogTG9uZ2lkZW50LnQgLT4gTG9uZ2lkZW50LnQgKiBfID1cbiAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgIHwgTGFwcGx5IChyZXN0LCBhcmcpIC0+IGdhdGhlcl9sYXBwbHkgKGFyZyA6OiBmdW5jdG9yX2FyZ3MpIHJlc3RcbiAgICAgICAgICB8IExpZGVudCBmdW5jdG9yXyAtPiAoTGlkZW50IChzdWZmaXhfbiBmdW5jdG9yXyksIGZ1bmN0b3JfYXJncylcbiAgICAgICAgICB8IExkb3QgKGZ1bmN0b3JfcGF0aCwgZnVuY3Rvcl8pIC0+XG4gICAgICAgICAgICAgIChMZG90IChmdW5jdG9yX3BhdGgsIHN1ZmZpeF9uIGZ1bmN0b3JfKSwgZnVuY3Rvcl9hcmdzKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaWRlbnQsIGZ1bmN0b3JfYXJncyA9IGdhdGhlcl9sYXBwbHkgW10gbW9kdWxlX3BhdGggaW5cbiAgICAgICAgZWFwcGx5IH5sb2M6YXBwbHlfbG9jXG4gICAgICAgICAgKHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252X3dpdGhvdXRfYXBwbHkgaWRlbnQgfmxvYyB+ZilcbiAgICAgICAgICAoTGlzdC5tYXAgZnVuY3Rvcl9hcmdzIH5mOihmdW4gcGF0aCAtPlxuICAgICAgICAgICAgICAgcGV4cF9wYWNrIH5sb2MgKHBtb2RfaWRlbnQgfmxvYyB7IHR4dCA9IHBhdGg7IGxvYyB9KSlcbiAgICAgICAgICBAIGFyZ3MpXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgbG9uZ2lkZW50IH5mID1cbiAgICB0eXBlX2NvbnN0cl9jb252IGxvbmdpZGVudCB+bG9jIH5mIFtdXG5cbiAgbGV0IGV0YV9yZWR1Y2UgPVxuICAgIGxldCByZWMgZ2F0aGVyX3BhcmFtcyBhY2MgZXhwciA9XG4gICAgICBtYXRjaCBleHByIHdpdGhcbiAgICAgIHwge1xuICAgICAgIHBleHBfZGVzYyA9XG4gICAgICAgICBQZXhwX2Z1biAobGFiZWwsIE5vbmUgKCogbm8gZGVmYXVsdCBleHByZXNzaW9uICopLCBzdWJwYXQsIGJvZHkpO1xuICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgIHBleHBfbG9jID0gXztcbiAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICB9IC0+IChcbiAgICAgICAgICBtYXRjaCBzdWJwYXQgd2l0aFxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPSBQcGF0X3ZhciBuYW1lO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICBnYXRoZXJfcGFyYW1zICgobGFiZWwsIG5hbWUsIE5vbmUpIDo6IGFjYykgYm9keVxuICAgICAgICAgIHwge1xuICAgICAgICAgICBwcGF0X2Rlc2MgPVxuICAgICAgICAgICAgIFBwYXRfY29uc3RyYWludFxuICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgcHBhdF9kZXNjID0gUHBhdF92YXIgbmFtZTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBwcGF0X2xvYyA9IF87XG4gICAgICAgICAgICAgICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICB0eSApO1xuICAgICAgICAgICBwcGF0X2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgcHBhdF9sb2MgPSBfO1xuICAgICAgICAgICBwcGF0X2xvY19zdGFjayA9IF87XG4gICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAoKiBXZSByZWR1Y2UgW2Z1biAoeCA6IHR5KSAtPiBmIHhdIGJ5IHJld3JpdGluZyBpdCBbKGYgOiB0eSAtPiBfKV0uICopXG4gICAgICAgICAgICAgIGdhdGhlcl9wYXJhbXMgKChsYWJlbCwgbmFtZSwgU29tZSB0eSkgOjogYWNjKSBib2R5XG4gICAgICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpKVxuICAgICAgfCBfIC0+IChMaXN0LnJldiBhY2MsIGV4cHIpXG4gICAgaW5cbiAgICBsZXQgYW5ub3RhdGUgfmxvYyBleHByIHBhcmFtcyA9XG4gICAgICBpZiBMaXN0LmV4aXN0cyBwYXJhbXMgfmY6KGZ1biAoXywgXywgdHkpIC0+IE9wdGlvbi5pc19zb21lIHR5KSB0aGVuXG4gICAgICAgIGxldCB0eSA9XG4gICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHBhcmFtcyB+aW5pdDoocHR5cF9hbnkgfmxvYylcbiAgICAgICAgICAgIH5mOihmdW4gKHBhcmFtX2xhYmVsLCBwYXJhbSwgdHlfb3B0KSBhY2MgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYyA9IHBhcmFtLmxvYyBpblxuICAgICAgICAgICAgICBsZXQgdHkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHR5X29wdCB3aXRoIE5vbmUgLT4gcHR5cF9hbnkgfmxvYyB8IFNvbWUgdHkgLT4gdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgcHR5cF9hcnJvdyB+bG9jIHBhcmFtX2xhYmVsIHR5IGFjYylcbiAgICAgICAgaW5cbiAgICAgICAgcGV4cF9jb25zdHJhaW50IH5sb2MgZXhwciB0eVxuICAgICAgZWxzZSBleHByXG4gICAgaW5cbiAgICBsZXQgcmVjIGdhdGhlcl9hcmdzIG4geCA9XG4gICAgICBpZiBuID0gMCB0aGVuIFNvbWUgKHgsIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCB7XG4gICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChib2R5LCBhcmdzKTtcbiAgICAgICAgIHBleHBfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgcGV4cF9sb2Nfc3RhY2sgPSBfO1xuICAgICAgICB9IC0+XG4gICAgICAgICAgICBpZiBMaXN0Lmxlbmd0aCBhcmdzIDw9IG4gdGhlblxuICAgICAgICAgICAgICBtYXRjaCBnYXRoZXJfYXJncyAobiAtIExpc3QubGVuZ3RoIGFyZ3MpIGJvZHkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgKGJvZHksIGFyZ3MnKSAtPiBTb21lIChib2R5LCBhcmdzJyBAIGFyZ3MpXG4gICAgICAgICAgICBlbHNlIE5vbmVcbiAgICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGZ1biBleHByIC0+XG4gICAgICBsZXQgcGFyYW1zLCBib2R5ID0gZ2F0aGVyX3BhcmFtcyBbXSBleHByIGluXG4gICAgICBtYXRjaCBnYXRoZXJfYXJncyAoTGlzdC5sZW5ndGggcGFyYW1zKSBib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgKCh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgXzsgXyB9IGFzIGZfaWRlbnQpLCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIExpc3QuZm9yX2FsbDIgYXJncyBwYXJhbXNcbiAgICAgICAgICAgICAgfmY6KGZ1biAoYXJnX2xhYmVsLCBhcmcpIChwYXJhbV9sYWJlbCwgcGFyYW0sIF8pIC0+XG4gICAgICAgICAgICAgICAgUG9seS4oID0gKSAoYXJnX2xhYmVsIDogYXJnX2xhYmVsKSBwYXJhbV9sYWJlbFxuICAgICAgICAgICAgICAgICYmXG4gICAgICAgICAgICAgICAgbWF0Y2ggYXJnIHdpdGhcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgcGV4cF9kZXNjID0gUGV4cF9pZGVudCB7IHR4dCA9IExpZGVudCBuYW1lJzsgXyB9O1xuICAgICAgICAgICAgICAgICBwZXhwX2F0dHJpYnV0ZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgcGV4cF9sb2MgPSBfO1xuICAgICAgICAgICAgICAgICBwZXhwX2xvY19zdGFjayA9IF87XG4gICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgICBTdHJpbmcuKCA9ICkgbmFtZScgcGFyYW0udHh0XG4gICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT4gU29tZSAoYW5ub3RhdGUgfmxvYzpleHByLnBleHBfbG9jIGZfaWRlbnQgcGFyYW1zKSlcbiAgICAgIHwgXyAtPiBOb25lXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgZXhwciA9IE9wdGlvbi52YWx1ZSAoZXRhX3JlZHVjZSBleHByKSB+ZGVmYXVsdDpleHByXG5cbiAgbGV0IGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyBleHByIH5yZWNfZmxhZyA9XG4gICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgIHwgUmVjdXJzaXZlIC0+IGV4cHJcbiAgICB8IE5vbnJlY3Vyc2l2ZSAtPiBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlIGV4cHJcbmVuZFxuXG5tb2R1bGUgdHlwZSBMb2MgPSBBc3RfYnVpbGRlcl9pbnRmLkxvY1xuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfaW50Zi5TXG5cbiAgbW9kdWxlIExhdGVzdCA6IHNpZ1xuICAgIHZhbCBwcGF0X2NvbnN0cnVjdCA6XG4gICAgICBsb25naWRlbnQgbG9jIC0+IChsYWJlbCBsb2MgbGlzdCAqIHBhdHRlcm4pIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgICB2YWwgY29uc3RydWN0b3JfZGVjbGFyYXRpb24gOlxuICAgICAgbmFtZTpsYWJlbCBsb2MgLT5cbiAgICAgIHZhcnM6bGFiZWwgbG9jIGxpc3QgLT5cbiAgICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgICByZXM6Y29yZV90eXBlIG9wdGlvbiAtPlxuICAgICAgdW5pdCAtPlxuICAgICAgY29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgZW5kXG5cbiAgdmFsIHBwYXRfY29uc3RydWN0IDogbG9uZ2lkZW50IGxvYyAtPiBwYXR0ZXJuIG9wdGlvbiAtPiBwYXR0ZXJuXG5cbiAgdmFsIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIDpcbiAgICBuYW1lOmxhYmVsIGxvYyAtPlxuICAgIGFyZ3M6Y29uc3RydWN0b3JfYXJndW1lbnRzIC0+XG4gICAgcmVzOmNvcmVfdHlwZSBvcHRpb24gLT5cbiAgICBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuZW5kXG5cbm1vZHVsZSBNYWtlIChMb2MgOiBzaWdcbiAgdmFsIGxvYyA6IExvY2F0aW9uLnRcbmVuZCkgOiBTID0gc3RydWN0XG4gIGluY2x1ZGUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYylcblxuICBtb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gICAgbGV0IHBwYXRfY29uc3RydWN0ID0gcHBhdF9jb25zdHJ1Y3RcblxuICAgIGxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZSB+dmFycyB+YXJncyB+cmVzICgpID1cbiAgICAgIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH52YXJzIH5hcmdzIH5yZXNcbiAgZW5kXG5cbiAgKCotLS0tLSBzdGFibGUgbGF5ZXIgYWJvdmUgQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk1ha2UgKExvYykgLS0tLS0qKVxuXG4gIGxldCBwcGF0X2NvbnN0cnVjdCBsaWQgcCA9XG4gICAge1xuICAgICAgcHBhdF9sb2Nfc3RhY2sgPSBbXTtcbiAgICAgIHBwYXRfYXR0cmlidXRlcyA9IFtdO1xuICAgICAgcHBhdF9sb2MgPSBsb2M7XG4gICAgICBwcGF0X2Rlc2MgPSBQcGF0X2NvbnN0cnVjdCAobGlkLCBPcHRpb24ubWFwIHAgfmY6KGZ1biBwIC0+IChbXSwgcCkpKTtcbiAgICB9XG5cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIH5uYW1lIH5hcmdzIH5yZXMgPVxuICAgIHtcbiAgICAgIHBjZF9uYW1lID0gbmFtZTtcbiAgICAgIHBjZF92YXJzID0gW107XG4gICAgICBwY2RfYXJncyA9IGFyZ3M7XG4gICAgICBwY2RfcmVzID0gcmVzO1xuICAgICAgcGNkX2xvYyA9IGxvYztcbiAgICAgIHBjZF9hdHRyaWJ1dGVzID0gW107XG4gICAgfVxuXG4gICgqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKilcblxuICBsZXQgcHN0cl92YWx1ZV9saXN0ID0gRGVmYXVsdC5wc3RyX3ZhbHVlX2xpc3RcblxuICBsZXQgbm9ucmVjX3R5cGVfZGVjbGFyYXRpb24gfm5hbWUgfnBhcmFtcyB+Y3N0cnMgfmtpbmQgfnByaXZhdGVfIH5tYW5pZmVzdCA9XG4gICAgRGVmYXVsdC5ub25yZWNfdHlwZV9kZWNsYXJhdGlvbiB+bG9jIH5uYW1lIH5wYXJhbXMgfmNzdHJzIH5raW5kIH5wcml2YXRlX1xuICAgICAgfm1hbmlmZXN0XG5cbiAgbW9kdWxlIExvY2F0ZWQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERlZmF1bHQuTG9jYXRlZFxuXG4gICAgbGV0IGxvYyBfID0gTG9jLmxvY1xuICAgIGxldCBtayB4ID0gbWsgfmxvYzpMb2MubG9jIHhcbiAgICBsZXQgbGlkZW50IHggPSBsaWRlbnQgfmxvYzpMb2MubG9jIHhcbiAgZW5kXG5cbiAgbGV0IHBleHBfdHVwbGUgbCA9IERlZmF1bHQucGV4cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBwYXRfdHVwbGUgbCA9IERlZmF1bHQucHBhdF90dXBsZSB+bG9jIGxcbiAgbGV0IHB0eXBfdHVwbGUgbCA9IERlZmF1bHQucHR5cF90dXBsZSB+bG9jIGxcbiAgbGV0IHBleHBfdHVwbGVfb3B0IGwgPSBEZWZhdWx0LnBleHBfdHVwbGVfb3B0IH5sb2MgbFxuICBsZXQgcHBhdF90dXBsZV9vcHQgbCA9IERlZmF1bHQucHBhdF90dXBsZV9vcHQgfmxvYyBsXG4gIGxldCBwdHlwX3BvbHkgdmFycyB0eSA9IERlZmF1bHQucHR5cF9wb2x5IH5sb2MgdmFycyB0eVxuICBsZXQgcGV4cF9hcHBseSBlIGVsID0gRGVmYXVsdC5wZXhwX2FwcGx5IH5sb2MgZSBlbFxuICBsZXQgZWludCB0ID0gRGVmYXVsdC5laW50IH5sb2MgdFxuICBsZXQgZWNoYXIgdCA9IERlZmF1bHQuZWNoYXIgfmxvYyB0XG4gIGxldCBlc3RyaW5nIHQgPSBEZWZhdWx0LmVzdHJpbmcgfmxvYyB0XG4gIGxldCBlZmxvYXQgdCA9IERlZmF1bHQuZWZsb2F0IH5sb2MgdFxuICBsZXQgZWludDMyIHQgPSBEZWZhdWx0LmVpbnQzMiB+bG9jIHRcbiAgbGV0IGVpbnQ2NCB0ID0gRGVmYXVsdC5laW50NjQgfmxvYyB0XG4gIGxldCBlbmF0aXZlaW50IHQgPSBEZWZhdWx0LmVuYXRpdmVpbnQgfmxvYyB0XG4gIGxldCBlYm9vbCB0ID0gRGVmYXVsdC5lYm9vbCB+bG9jIHRcbiAgbGV0IGV2YXIgdCA9IERlZmF1bHQuZXZhciB+bG9jIHRcbiAgbGV0IHBpbnQgdCA9IERlZmF1bHQucGludCB+bG9jIHRcbiAgbGV0IHBjaGFyIHQgPSBEZWZhdWx0LnBjaGFyIH5sb2MgdFxuICBsZXQgcHN0cmluZyB0ID0gRGVmYXVsdC5wc3RyaW5nIH5sb2MgdFxuICBsZXQgcGZsb2F0IHQgPSBEZWZhdWx0LnBmbG9hdCB+bG9jIHRcbiAgbGV0IHBpbnQzMiB0ID0gRGVmYXVsdC5waW50MzIgfmxvYyB0XG4gIGxldCBwaW50NjQgdCA9IERlZmF1bHQucGludDY0IH5sb2MgdFxuICBsZXQgcG5hdGl2ZWludCB0ID0gRGVmYXVsdC5wbmF0aXZlaW50IH5sb2MgdFxuICBsZXQgcGJvb2wgdCA9IERlZmF1bHQucGJvb2wgfmxvYyB0XG4gIGxldCBwdmFyIHQgPSBEZWZhdWx0LnB2YXIgfmxvYyB0XG4gIGxldCBldW5pdCA9IERlZmF1bHQuZXVuaXQgfmxvY1xuICBsZXQgcHVuaXQgPSBEZWZhdWx0LnB1bml0IH5sb2NcbiAgbGV0IGVjb25zdHJ1Y3QgPSBEZWZhdWx0LmVjb25zdHJ1Y3RcbiAgbGV0IHBjb25zdHJ1Y3QgPSBEZWZhdWx0LnBjb25zdHJ1Y3RcbiAgbGV0IGVhcHBseSBlIGVsID0gRGVmYXVsdC5lYXBwbHkgfmxvYyBlIGVsXG4gIGxldCBlYWJzdHJhY3QgcHMgZSA9IERlZmF1bHQuZWFic3RyYWN0IH5sb2MgcHMgZVxuICBsZXQgZXNlcXVlbmNlIGVsID0gRGVmYXVsdC5lc2VxdWVuY2UgfmxvYyBlbFxuICBsZXQgZWxpc3QgbCA9IERlZmF1bHQuZWxpc3QgfmxvYyBsXG4gIGxldCBwbGlzdCBsID0gRGVmYXVsdC5wbGlzdCB+bG9jIGxcblxuICBsZXQgdHlwZV9jb25zdHJfY29udiBpZGVudCB+ZiBhcmdzID1cbiAgICBEZWZhdWx0LnR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZGVudCB+ZiBhcmdzXG5cbiAgbGV0IHVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IGlkZW50IH5mID1cbiAgICBEZWZhdWx0LnVuYXBwbGllZF90eXBlX2NvbnN0cl9jb252IH5sb2MgaWRlbnQgfmZcblxuICBsZXQgZXRhX3JlZHVjZSA9IERlZmF1bHQuZXRhX3JlZHVjZVxuICBsZXQgZXRhX3JlZHVjZV9pZl9wb3NzaWJsZSA9IERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZVxuXG4gIGxldCBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgPVxuICAgIERlZmF1bHQuZXRhX3JlZHVjZV9pZl9wb3NzaWJsZV9hbmRfbm9ucmVjXG5lbmRcblxubGV0IG1ha2UgbG9jID1cbiAgKG1vZHVsZSBNYWtlIChzdHJ1Y3RcbiAgICBsZXQgbG9jID0gbG9jXG4gIGVuZCkgOiBTKVxuIiwiKCoqIFNtYWxsIGhlbHBlciB0byBmaW5kIG91dCB3aG8gaXMgdGhlIGNhbGxlciBvZiBhIGZ1bmN0aW9uICopXG5cbm9wZW4hIEltcG9ydFxubW9kdWxlIFByaW50ZXhjID0gU3RkbGliLlByaW50ZXhjXG5cbnR5cGUgdCA9IFByaW50ZXhjLmxvY2F0aW9uIG9wdGlvblxuXG5sZXQgZ2V0IH5za2lwID1cbiAgbGV0IHNraXAgPSBfX0ZJTEVfXyA6OiBza2lwIGluXG4gIGxldCBzdGFjayA9IFByaW50ZXhjLmdldF9jYWxsc3RhY2sgMTYgaW5cbiAgbGV0IGxlbiA9IFByaW50ZXhjLnJhd19iYWNrdHJhY2VfbGVuZ3RoIHN0YWNrIGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA9IGxlbiB0aGVuIE5vbmVcbiAgICBlbHNlXG4gICAgICBtYXRjaFxuICAgICAgICBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZV9zbG90IHN0YWNrIHBvc1xuICAgICAgICB8PiBQcmludGV4Yy5jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdCB8PiBQcmludGV4Yy5TbG90LmxvY2F0aW9uXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGxvYyAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIH5zZXQ6c2tpcCBsb2MuZmlsZW5hbWUgdGhlbiBsb29wIChwb3MgKyAxKSBlbHNlIFNvbWUgbG9jXG4gIGluXG4gIGxvb3AgMFxuIiwiKCoqIEhlbHBlcnMgdG8gcHJvdmlkZSBoaW50cyB0byBQUFggdXNlcnMgZm9yIHR5cG9zIG9yIHNwZWxsY2hlY2tzLiAqKVxuXG5vcGVuISBJbXBvcnRcblxuZXhjZXB0aW9uIEN1dG9mZl9tZXRcblxuKCogQXMgZm91bmQgaGVyZSBodHRwOi8vcm9zZXR0YWNvZGUub3JnL3dpa2kvTGV2ZW5zaHRlaW5fZGlzdGFuY2UjT0NhbWwgKilcbmxldCBsZXZlbnNodGVpbl9kaXN0YW5jZSBzIHQgY3V0b2ZmID1cbiAgbGV0IG0gPSBTdHJpbmcubGVuZ3RoIHMgYW5kIG4gPSBTdHJpbmcubGVuZ3RoIHQgaW5cbiAgaWYgY3V0b2ZmID0gMCB8fCBhYnMgKG0gLSBuKSA+PSBjdXRvZmYgdGhlbiBOb25lXG4gIGVsc2VcbiAgICAoKiBmb3IgYWxsIGkgYW5kIGosIGQuKGkpLihqKSB3aWxsIGhvbGQgdGhlIExldmVuc2h0ZWluIGRpc3RhbmNlIGJldHdlZW4gdGhlXG4gICAgICAgZmlyc3QgaSBjaGFyYWN0ZXJzIG9mIHMgYW5kIHRoZSBmaXJzdCBqIGNoYXJhY3RlcnMgb2YgdCAqKVxuICAgIGxldCBkID0gQXJyYXkubWFrZV9tYXRyaXggfmRpbXg6KG0gKyAxKSB+ZGlteToobiArIDEpIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbSBkb1xuICAgICAgKCogdGhlIGRpc3RhbmNlIG9mIGFueSBmaXJzdCBzdHJpbmcgdG8gYW4gZW1wdHkgc2Vjb25kIHN0cmluZyAqKVxuICAgICAgZC4oaSkuKDApIDwtIGlcbiAgICBkb25lO1xuICAgIGZvciBqID0gMCB0byBuIGRvXG4gICAgICAoKiB0aGUgZGlzdGFuY2Ugb2YgYW55IHNlY29uZCBzdHJpbmcgdG8gYW4gZW1wdHkgZmlyc3Qgc3RyaW5nICopXG4gICAgICBkLigwKS4oaikgPC0galxuICAgIGRvbmU7XG4gICAgKCogdGhlIG1pbmltdW0gb2YgZWFjaCBsaW5lIHRvZ2V0aGVyIHdpdGggdGhlIGNvbHVtbiBpbmRleCB3aWxsIGJlIHVzZWRcbiAgICAgICB0byBub3RpY2UgY3V0b2ZmIGV4Y2VlZGluZyBhbmQgcmV0dXJuIGVhcmx5IGluIHRoYXQgY2FzZSAqKVxuICAgIGxldCBsaW5lX21pbiA9IHJlZiAwIGluXG4gICAgbGV0IGRpc3RhbmNlID1cbiAgICAgIHRyeVxuICAgICAgICBmb3IgaiA9IDEgdG8gbiBkb1xuICAgICAgICAgIGlmICFsaW5lX21pbiA+PSBjdXRvZmYgLSAxICYmIGogPj0gY3V0b2ZmIC0gMSB0aGVuIHJhaXNlIEN1dG9mZl9tZXQ7XG4gICAgICAgICAgbGluZV9taW4gOj0gbWF4IG0gbjtcbiAgICAgICAgICBmb3IgaSA9IDEgdG8gbSBkb1xuICAgICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBzLltpIC0gMV0gdC5baiAtIDFdIHRoZW4gZC4oaSAtIDEpLihqIC0gMSlcbiAgICAgICAgICAgICAgICAoKiBubyBvcGVyYXRpb24gcmVxdWlyZWQgKilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG1pblxuICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaikgKyAxKSAoKiBhIGRlbGV0aW9uICopXG4gICAgICAgICAgICAgICAgICAobWluXG4gICAgICAgICAgICAgICAgICAgICAoZC4oaSkuKGogLSAxKSArIDEpICgqIGFuIGluc2VydGlvbiAqKVxuICAgICAgICAgICAgICAgICAgICAgKGQuKGkgLSAxKS4oaiAtIDEpICsgMSkgKCogYSBzdWJzdGl0dXRpb24gKikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZC4oaSkuKGopIDwtIHZhbHVlO1xuICAgICAgICAgICAgbGluZV9taW4gOj0gbWluICFsaW5lX21pbiB2YWx1ZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgZC4obSkuKG4pIDwgY3V0b2ZmIHRoZW4gU29tZSBkLihtKS4obikgZWxzZSBOb25lXG4gICAgICB3aXRoIEN1dG9mZl9tZXQgLT4gTm9uZVxuICAgIGluXG4gICAgZGlzdGFuY2VcblxubGV0IHNwZWxsY2hlY2sgbmFtZXMgbmFtZSA9XG4gIGxldCBjdXRvZmYgPVxuICAgIG1hdGNoIFN0cmluZy5sZW5ndGggbmFtZSB3aXRoXG4gICAgfCAxIHwgMiAtPiAwXG4gICAgfCAzIHwgNCAtPiAxXG4gICAgfCA1IHwgNiAtPiAyXG4gICAgfCBfIC0+IDNcbiAgaW5cbiAgbGV0IF8sIHN1Z2dlc3Rpb25zID1cbiAgICBMaXN0LmZvbGRfbGVmdCBuYW1lcyB+aW5pdDooSW50Lm1heF9pbnQsIFtdKVxuICAgICAgfmY6KGZ1blxuICAgICAgICAgICgoYmVzdF9kaXN0YW5jZSwgbmFtZXNfYXRfYmVzdF9kaXN0YW5jZSkgYXMgYWNjKSByZWdpc3RlcmVkX25hbWUgLT5cbiAgICAgICAgbWF0Y2ggbGV2ZW5zaHRlaW5fZGlzdGFuY2UgbmFtZSByZWdpc3RlcmVkX25hbWUgY3V0b2ZmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgZGlzdCAtPlxuICAgICAgICAgICAgaWYgZGlzdCA8IGJlc3RfZGlzdGFuY2UgdGhlbiAoZGlzdCwgWyByZWdpc3RlcmVkX25hbWUgXSlcbiAgICAgICAgICAgIGVsc2UgaWYgZGlzdCA+IGJlc3RfZGlzdGFuY2UgdGhlbiBhY2NcbiAgICAgICAgICAgIGVsc2UgKGRpc3QsIHJlZ2lzdGVyZWRfbmFtZSA6OiBuYW1lc19hdF9iZXN0X2Rpc3RhbmNlKSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgc3VnZ2VzdGlvbnMgfD4gTGlzdC5maWx0ZXIgfmY6KFN0cmluZy4oIDw+ICkgbmFtZSkgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBsYXN0IDo6IHJldl9yZXN0IC0+XG4gICAgICBTb21lXG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcIkhpbnQ6IERpZCB5b3UgbWVhbiAlcyVzJXM/XCJcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QucmV2IHJldl9yZXN0KSlcbiAgICAgICAgICAgKGlmIExpc3QuaXNfZW1wdHkgcmV2X3Jlc3QgdGhlbiBcIlwiIGVsc2UgXCIgb3IgXCIpXG4gICAgICAgICAgIGxhc3QpXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBGb3JtYXQgPSBTdGRsaWIuRm9ybWF0XG5cbmxldCBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZiA9XG4gIGxldCByZWMgY29sbGFwc2VfYWZ0ZXJfYXQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gW11cbiAgICB8IHBhcnQgOjogcGFydHMgLT5cbiAgICAgICAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHBhcnQpKSAmJiBDaGFyLmVxdWFsIHBhcnQuWzBdICdAJyB0aGVuXG4gICAgICAgICAgWyBTdHJpbmcuY29uY2F0IChTdHJpbmcuZHJvcF9wcmVmaXggcGFydCAxIDo6IHBhcnRzKSB+c2VwOlwiLlwiIF1cbiAgICAgICAgZWxzZSBwYXJ0IDo6IGNvbGxhcHNlX2FmdGVyX2F0IHBhcnRzXG4gIGluXG4gIGxldCByZWMgbG9vcCBhY2MgcGFydHMgPVxuICAgIG1hdGNoIHBhcnRzIHdpdGhcbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgcGFydCA6OiBwYXJ0cyAtPlxuICAgICAgICBsb29wIChmIChTdHJpbmcuY29uY2F0IChwYXJ0IDo6IHBhcnRzKSB+c2VwOlwiLlwiKSBhY2MpIHBhcnRzXG4gIGluXG4gIFN0cmluZy5zcGxpdF9vbl9jaGFyIG5hbWUgfnNlcDonLicgfD4gY29sbGFwc2VfYWZ0ZXJfYXQgfD4gbG9vcCBhY2NcblxubGV0IGRvdF9zdWZmaXhlcyBuYW1lID1cbiAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDpbXSB+ZjooZnVuIHggYWNjIC0+IHggOjogYWNjKVxuXG5sZXQgc3BsaXRfcGF0aCA9XG4gIGxldCByZWMgbG9vcCBzIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlbiAocywgTm9uZSlcbiAgICBlbHNlIG1hdGNoIHMuW2ldIHdpdGggJy4nIC0+IGFmdGVyX2RvdCBzIChpICsgMSkgfCBfIC0+IGxvb3AgcyAoaSArIDEpXG4gIGFuZCBhZnRlcl9kb3QgcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gKHMsIE5vbmUpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnQScgLi4gJ1onIC0+IChTdHJpbmcucHJlZml4IHMgKGkgLSAxKSwgU29tZSAoU3RyaW5nLmRyb3BfcHJlZml4IHMgaSkpXG4gICAgICB8ICcuJyAtPiBhZnRlcl9kb3QgcyAoaSArIDEpXG4gICAgICB8IF8gLT4gbG9vcCBzIChpICsgMSlcbiAgaW5cbiAgZnVuIHMgLT4gbG9vcCBzIDBcblxubW9kdWxlIFBhdHRlcm4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBuYW1lIDogc3RyaW5nOyBkb3Rfc3VmZml4ZXMgOiBTdHJpbmcuU2V0LnQgfVxuXG4gIGxldCBtYWtlIG5hbWUgPVxuICAgIHsgbmFtZTsgZG90X3N1ZmZpeGVzID0gU3RyaW5nLlNldC5vZl9saXN0IChkb3Rfc3VmZml4ZXMgbmFtZSkgfVxuXG4gIGxldCBuYW1lIHQgPSB0Lm5hbWVcbiAgbGV0IG1hdGNoZXMgdCBtYXRjaGVkID0gU3RyaW5nLlNldC5tZW0gbWF0Y2hlZCB0LmRvdF9zdWZmaXhlc1xuZW5kXG5cbigqIE9uIHRoZSBuYW1lc3BhY2UgXCJhLk5BTUVTUEFDRVwiLCByZXR1cm4gdGhlIHBhaXIgKFwiYVwiLCBOQU1FU1BBQ0UpICopXG5sZXQgc3BsaXRfb3V0ZXJfbmFtZXNwYWNlIG5hbWUgPVxuICBtYXRjaCBTdHJpbmcuaW5kZXhfb3B0IG5hbWUgJy4nIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGkgLT5cbiAgICAgIGxldCBuID0gU3RyaW5nLmxlbmd0aCBuYW1lIGluXG4gICAgICBsZXQgYmVmb3JlX2RvdCA9IFN0cmluZy5zdWIgbmFtZSB+cG9zOjAgfmxlbjppIGluXG4gICAgICBsZXQgYWZ0ZXJfZG90ID0gU3RyaW5nLnN1YiBuYW1lIH5wb3M6KGkgKyAxKSB+bGVuOihuIC0gaSAtIDEpIGluXG4gICAgICBTb21lIChiZWZvcmVfZG90LCBhZnRlcl9kb3QpXG5cbm1vZHVsZSBBbGxvd2xpc3RlZCA9IHN0cnVjdFxuICAoKiBBbGxvdyBsaXN0IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcywgYXMgd2VsbCBhcyBhbGwgdGhlaXIgZG90IHN1ZmZpeGVzLlxuXG4gICAgIFNpbmNlIHRoZXNlIGF0dHJpYnV0ZXMgYXJlIGludGVycHJldGVkIGJ5IHRoZSBjb21waWxlciBpdHNlbGYsIHdlIGNhbm5vdCBjaGVja1xuICAgICBhdCB0aGUgbGV2ZWwgb2YgYSBwcHggcmV3cml0ZXIgdGhhdCB0aGV5IGhhdmUgYmVlbiBwcm9wZXJseSBpbnRlcnByZXRlZCwgc29cbiAgICAgd2UganVzdCBhY2NlcHQgdGhlbSBhbnl3aGVyZS5cblxuICAgICBTYWRseSwgdGhlIGNvbXBpbGVyIHNpbGVudGx5IGlnbm9yZXMgdGhlbSBpZiB0aGV5IGFyZSBtaXNwbGFjZWQuLi5cbiAgKilcbiAgbGV0IGNyZWF0ZV9zZXQgZnVsbHlfcXVhbGlmaWVkX25hbWVzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgfmY6KGZ1biBhY2MgbmFtZSAtPlxuICAgICAgICBmb2xkX2RvdF9zdWZmaXhlcyBuYW1lIH5pbml0OmFjYyB+ZjooZnVuIHggYWNjIC0+IFN0cmluZy5TZXQuYWRkIHggYWNjKSlcbiAgICAgIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgZnVsbHlfcXVhbGlmaWVkX25hbWVzXG5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGNyZWF0ZV9zZXRcbiAgICAgIFtcbiAgICAgICAgXCJvY2FtbC5hbGVydFwiO1xuICAgICAgICBcIm9jYW1sLmJveGVkXCI7XG4gICAgICAgIFwib2NhbWwuZGVwcmVjYXRlZFwiO1xuICAgICAgICBcIm9jYW1sLmRlcHJlY2F0ZWRfbXV0YWJsZVwiO1xuICAgICAgICBcIm9jYW1sLmRvY1wiO1xuICAgICAgICBcIm9jYW1sLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZVwiO1xuICAgICAgICBcIm9jYW1sLmltbWVkaWF0ZTY0XCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lXCI7XG4gICAgICAgIFwib2NhbWwuaW5saW5lZFwiO1xuICAgICAgICBcIm9jYW1sLmxvY2FsXCI7XG4gICAgICAgIFwib2NhbWwubm9hbGxvY1wiO1xuICAgICAgICBcIm9jYW1sLnBwd2FybmluZ1wiO1xuICAgICAgICBcIm9jYW1sLnJlbW92ZV9hbGlhc2VzXCI7XG4gICAgICAgIFwib2NhbWwuc3BlY2lhbGlzZVwiO1xuICAgICAgICBcIm9jYW1sLnNwZWNpYWxpc2VkXCI7XG4gICAgICAgIFwib2NhbWwudGFpbGNhbGxcIjtcbiAgICAgICAgXCJvY2FtbC50ZXh0XCI7XG4gICAgICAgIFwib2NhbWwudW5ib3hlZFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbFwiO1xuICAgICAgICBcIm9jYW1sLnVucm9sbGVkXCI7XG4gICAgICAgIFwib2NhbWwudW50YWdnZWRcIjtcbiAgICAgICAgXCJvY2FtbC53YXJuX29uX2xpdGVyYWxfcGF0dGVyblwiO1xuICAgICAgICBcIm9jYW1sLndhcm5lcnJvclwiO1xuICAgICAgICBcIm9jYW1sLndhcm5pbmdcIjtcbiAgICAgICAgXCJvY2FtbC50b3BsZXZlbF9wcmludGVyXCIgKCpJbnRlcnByZXRlZCBieSB0aGUgdG9wbGV2ZWwvdXRvcCopO1xuICAgICAgICBcInRvcGxldmVsX3ByaW50ZXJcIiAoKkludGVycHJldGVkIGJ5IHRoZSB0b3BsZXZlbC91dG9wKik7XG4gICAgICBdXG5cbiAgKCogQWxsb3cgbGlzdCB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbnMuXG5cbiAgICAgU2luY2UgdGhlc2UgZXh0ZW5zaW9ucyBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGNvbXBpbGVyIGl0c2VsZiwgd2UgY2Fubm90IGNoZWNrXG4gICAgIGF0IHRoZSBsZXZlbCBvZiBhIHBweCByZXdyaXRlciB0aGF0IHRoZXkgaGF2ZSBiZWVuIHByb3Blcmx5IGludGVycHJldGVkLCBzb1xuICAgICB3ZSBqdXN0IGFjY2VwdCB0aGVtIGFueXdoZXJlLlxuICAqKVxuICBsZXQgZXh0ZW5zaW9ucyA9IGNyZWF0ZV9zZXQgWyBcIm9jYW1sLmVycm9yXCI7IFwib2NhbWwuZXh0ZW5zaW9uX2NvbnN0cnVjdG9yXCIgXVxuXG4gIGxldCBpc19hbGxvd2xpc3RlZCB+a2luZCBuYW1lID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBdHRyaWJ1dGUgLT4gU3RyaW5nLlNldC5tZW0gbmFtZSBhdHRyaWJ1dGVzXG4gICAgfCBgRXh0ZW5zaW9uIC0+IFN0cmluZy5TZXQubWVtIG5hbWUgZXh0ZW5zaW9uc1xuXG4gIGxldCBnZXRfYXR0cmlidXRlX2xpc3QgKCkgPSBTdHJpbmcuU2V0LmVsZW1lbnRzIGF0dHJpYnV0ZXNcbiAgbGV0IGdldF9leHRlbnNpb25fbGlzdCAoKSA9IFN0cmluZy5TZXQuZWxlbWVudHMgZXh0ZW5zaW9uc1xuZW5kXG5cbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gc3RydWN0XG4gIHR5cGUgcmVzZXJ2ZWQgPSAoc3RyaW5nLCBzdWJfbmFtZXNwYWNlcykgSGFzaHRibC50XG4gIGFuZCBzdWJfbmFtZXNwYWNlcyA9IEFsbCB8IFN1Yl9uYW1lc3BhY2VzIG9mIHJlc2VydmVkXG5cbiAgKCogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW0FsbF0sIHRoZW4gXCJ4XCIgYW5kIGFsbCBwYXRocyB0aGF0XG4gICAqIHN0YXJ0IHdpdGggXCJ4LlwiIGFyZSByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibF1cbiAgICpcbiAgICogSWYgW3RibF0gY29udGFpbnMgYSBtYXBwaW5nIGZyb20gXCJ4XCIgdG8gW1N1Yl9uYW1lc3BhY2VzIHRibCddLCBhbmQgUCBpc1xuICAgKiByZXNlcnZlZCB3aXRoIHJlc3BlY3QgdG8gW3RibCddLCB0aGVuIGFsbCBwYXRocyBcInguUFwiIGFyZSByZXNlcnZlZCB3aXRoXG4gICAqIHJlc3BlY3QgdG8gW3RibF0uXG4gICAqKVxuICBsZXQgY3JlYXRlX3Jlc2VydmVkICgpIDogcmVzZXJ2ZWQgPSBIYXNodGJsLmNyZWF0ZSAxNlxuXG4gIGxldCByZWMgcmVzZXJ2ZSBucyB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBucyB3aXRoXG4gICAgfCBOb25lIC0+IEhhc2h0YmwuYWRkX2V4biB0YmwgfmtleTpucyB+ZGF0YTpBbGxcbiAgICB8IFNvbWUgKG91dGVyX25zLCByZXN0X25zKSAtPiAoXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaHRibC5maW5kX29yX2FkZCB0Ymwgb3V0ZXJfbnMgfmRlZmF1bHQ6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBTdWJfbmFtZXNwYWNlcyAoY3JlYXRlX3Jlc2VydmVkICgpKSlcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFN1Yl9uYW1lc3BhY2VzIHJlc3RfdGJsIC0+IHJlc2VydmUgcmVzdF9ucyByZXN0X3RibFxuICAgICAgICB8IEFsbCAtPiAoKSlcblxuICBsZXQgcmVjIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZSB0YmwgPVxuICAgIG1hdGNoIHNwbGl0X291dGVyX25hbWVzcGFjZSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgKG5zLCByZXN0KSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5zIHdpdGhcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyByZXN0X3RibCkgLT5cbiAgICAgICAgICAgIGlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgcmVzdCByZXN0X3RibFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlKVxuICAgIHwgTm9uZSAtPiAoXG4gICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZF9vcHQgdGJsIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgQWxsIC0+IHRydWVcbiAgICAgICAgfCBTb21lIChTdWJfbmFtZXNwYWNlcyBfKSB8IE5vbmUgLT4gZmFsc2UpXG5cbiAgbGV0IHRibCA9IGNyZWF0ZV9yZXNlcnZlZCAoKVxuICBsZXQgcmVzZXJ2ZSBucyA9IHJlc2VydmUgbnMgdGJsXG4gIGxldCBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgPSBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGJsXG4gIGxldCAoKSA9IHJlc2VydmUgXCJtZXJsaW5cIlxuICBsZXQgKCkgPSByZXNlcnZlIFwicmVhc29uXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInJlZm10XCIgKCogcmVhc29uICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJuc1wiICgqIHJlc2NyaXB0ICopXG4gIGxldCAoKSA9IHJlc2VydmUgXCJyZXNcIiAoKiByZXNjcmlwdCAqKVxuICBsZXQgKCkgPSByZXNlcnZlIFwibWV0YW9jYW1sXCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcIm9jYW1sZm9ybWF0XCJcbiAgbGV0ICgpID0gcmVzZXJ2ZSBcInBweGxpYi5taWdyYXRpb25cIlxuXG4gIGxldCBjaGVja19ub3RfcmVzZXJ2ZWQgfmtpbmQgbmFtZSA9XG4gICAgbGV0IGtpbmQsIGxpc3QgPVxuICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICB8IGBBdHRyaWJ1dGUgLT4gKFwiYXR0cmlidXRlXCIsIEFsbG93bGlzdGVkLmF0dHJpYnV0ZXMpXG4gICAgICB8IGBFeHRlbnNpb24gLT4gKFwiZXh0ZW5zaW9uXCIsIEFsbG93bGlzdGVkLmV4dGVuc2lvbnMpXG4gICAgaW5cbiAgICBpZiBTdHJpbmcuU2V0Lm1lbSBuYW1lIGxpc3QgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0IG1hdGNoZXMgYW4gJXMgcmVzZXJ2ZWQgYnkgdGhlIFxcXG4gICAgICAgICBjb21waWxlclwiXG4gICAgICAgIGtpbmQgbmFtZSBraW5kXG4gICAgZWxzZSBpZiBpc19pbl9yZXNlcnZlZF9uYW1lc3BhY2VzIG5hbWUgdGhlblxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGZhaWx3aXRoXG4gICAgICAgIFwiQ2Fubm90IHJlZ2lzdGVyICVzIHdpdGggbmFtZSAnJXMnIGFzIGl0cyBuYW1lc3BhY2UgaXMgbWFya2VkIGFzIFxcXG4gICAgICAgICByZXNlcnZlZFwiXG4gICAgICAgIGtpbmQgbmFtZVxuZW5kXG5cbmxldCBpZ25vcmVfY2hlY2tzIG5hbWUgPVxuICBSZXNlcnZlZF9uYW1lc3BhY2VzLmlzX2luX3Jlc2VydmVkX25hbWVzcGFjZXMgbmFtZVxuICB8fCBTdHJpbmcuaXNfcHJlZml4IG5hbWUgfnByZWZpeDpcIl9cIlxuXG5tb2R1bGUgUmVnaXN0cmFyID0gc3RydWN0XG4gIHR5cGUgZWxlbWVudCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgOiBzdHJpbmc7IGRlY2xhcmVkX2F0IDogQ2FsbGVyX2lkLnQgfVxuICB0eXBlIGFsbF9mb3JfY29udGV4dCA9IHsgbXV0YWJsZSBhbGwgOiBlbGVtZW50IFN0cmluZy5NYXAudCB9XG5cbiAgdHlwZSAnYSB0ID0ge1xuICAgIGFsbF9ieV9jb250ZXh0IDogKCdhLCBhbGxfZm9yX2NvbnRleHQpIEhhc2h0YmwudDtcbiAgICBza2lwIDogc3RyaW5nIGxpc3Q7XG4gICAga2luZCA6IHN0cmluZztcbiAgICBzdHJpbmdfb2ZfY29udGV4dCA6ICdhIC0+IHN0cmluZyBvcHRpb247XG4gIH1cblxuICBsZXQgY3JlYXRlIH5raW5kIH5jdXJyZW50X2ZpbGUgfnN0cmluZ19vZl9jb250ZXh0ID1cbiAgICB7XG4gICAgICBhbGxfYnlfY29udGV4dCA9IEhhc2h0YmwuY3JlYXRlIDE2O1xuICAgICAgc2tpcCA9IFsgY3VycmVudF9maWxlOyBfX0ZJTEVfXyBdO1xuICAgICAga2luZDtcbiAgICAgIHN0cmluZ19vZl9jb250ZXh0O1xuICAgIH1cblxuICBsZXQgZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgPVxuICAgIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5hbGxfYnlfY29udGV4dCBjb250ZXh0IH5kZWZhdWx0OihmdW4gKCkgLT5cbiAgICAgICAgeyBhbGwgPSBTdHJpbmcuTWFwLmVtcHR5IH0pXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lID1cbiAgICBtYXRjaCBTdHJpbmcuTWFwLmZpbmRfb3B0IG5hbWUgYWxsX2Zvcl9jb250ZXh0LmFsbCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGUgLT5cbiAgICAgICAgbGV0IGRlY2xhcmVkX2F0ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobG9jIDogU3RkbGliLlByaW50ZXhjLmxvY2F0aW9uKSAtPlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZiBcIiBkZWNsYXJlZCBhdCAlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNvbnRleHQgPVxuICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY29udGV4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgcyAtPiBcIiBvbiBcIiBeIHMgXiBcInNcIlxuICAgICAgICBpblxuICAgICAgICBQcmludGYua3NwcmludGYgZmFpbHdpdGhcbiAgICAgICAgICBcIlNvbWUgcHB4LWVzIHRyaWVkIHRvIHJlZ2lzdGVyIGNvbmZsaWN0aW5nIHRyYW5zZm9ybWF0aW9uczogJXMgXFxcbiAgICAgICAgICAgJyVzJyVzJXMgbWF0Y2hlcyAlcyAnJXMnJXNcIlxuICAgICAgICAgIChTdHJpbmcuY2FwaXRhbGl6ZV9hc2NpaSB0LmtpbmQpXG4gICAgICAgICAgbmFtZSBjb250ZXh0IChkZWNsYXJlZF9hdCBjYWxsZXIpIHQua2luZCBlLmZ1bGx5X3F1YWxpZmllZF9uYW1lXG4gICAgICAgICAgKGRlY2xhcmVkX2F0IGUuZGVjbGFyZWRfYXQpXG5cbiAgbGV0IGNoZWNrX2NvbGxpc2lvbnMgdCBjb250ZXh0IG5hbWUgPVxuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGxfZm9yX2NvbnRleHQgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBuYW1lXG5cbiAgbGV0IHJlZ2lzdGVyIH5raW5kIHQgY29udGV4dCBuYW1lID1cbiAgICBSZXNlcnZlZF9uYW1lc3BhY2VzLmNoZWNrX25vdF9yZXNlcnZlZCB+a2luZCBuYW1lO1xuICAgIGxldCBjYWxsZXIgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOnQuc2tpcCBpblxuICAgIGxldCBhbGwgPSBnZXRfYWxsX2Zvcl9jb250ZXh0IHQgY29udGV4dCBpblxuICAgIGNoZWNrX2NvbGxpc2lvbnNfbG9jYWwgfmNhbGxlciB+YWxsX2Zvcl9jb250ZXh0OmFsbCB0IGNvbnRleHQgbmFtZTtcbiAgICBsZXQgdCA9IHsgZnVsbHlfcXVhbGlmaWVkX25hbWUgPSBuYW1lOyBkZWNsYXJlZF9hdCA9IGNhbGxlciB9IGluXG4gICAgYWxsLmFsbCA8LVxuICAgICAgZm9sZF9kb3Rfc3VmZml4ZXMgbmFtZSB+aW5pdDphbGwuYWxsIH5mOihmdW4gbmFtZSBhY2MgLT5cbiAgICAgICAgICBTdHJpbmcuTWFwLmFkZCBuYW1lIHQgYWNjKVxuXG4gIGxldCBzcGVsbGNoZWNrIHQgY29udGV4dCA/KGFsbG93bGlzdCA9IFtdKSBuYW1lID1cbiAgICBsZXQgYWxsX2Zvcl9jb250ZXh0ID0gZ2V0X2FsbF9mb3JfY29udGV4dCB0IGNvbnRleHQgaW5cbiAgICBsZXQgYWxsID1cbiAgICAgIFN0cmluZy5NYXAuZm9sZCAoZnVuIGtleSBfIGFjYyAtPiBrZXkgOjogYWNjKSBhbGxfZm9yX2NvbnRleHQuYWxsIFtdXG4gICAgaW5cbiAgICBtYXRjaCBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKGFsbCBAIGFsbG93bGlzdCkgbmFtZSB3aXRoXG4gICAgfCBTb21lIF8gYXMgeCAtPiB4XG4gICAgfCBOb25lIHdoZW4gU3RyaW5nLk1hcC5tZW0gbmFtZSBhbGxfZm9yX2NvbnRleHQuYWxsIC0+IE5vbmVcbiAgICB8IE5vbmUgLT4gKFxuICAgICAgICBsZXQgb3RoZXJfY29udGV4dHMgPVxuICAgICAgICAgIEhhc2h0YmwuZm9sZFxuICAgICAgICAgICAgKGZ1biBjdHggYWxsX2Zyb21fY29udGV4dCBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBQb2x5LiggPD4gKSBjb250ZXh0IGN0eFxuICAgICAgICAgICAgICAgICYmIFN0cmluZy5NYXAubWVtIG5hbWUgYWxsX2Zyb21fY29udGV4dC5hbGxcbiAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgIG1hdGNoIHQuc3RyaW5nX29mX2NvbnRleHQgY3R4IHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHMgLT4gKHMgXiBcInNcIikgOjogYWNjXG4gICAgICAgICAgICAgIGVsc2UgYWNjKVxuICAgICAgICAgICAgdC5hbGxfYnlfY29udGV4dCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHBfdGV4dCA9IEZvcm1hdC5wcF9wcmludF90ZXh0IGluXG4gICAgICAgIGxldCBjdXJyZW50X2NvbnRleHQgcHBmID1cbiAgICAgICAgICBtYXRjaCB0LnN0cmluZ19vZl9jb250ZXh0IGNvbnRleHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSB8IFNvbWUgXCJcIiAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgIGxldCBhX29yX2FuID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgICAgICAgICAgICAgfCAnYScgfCAnZScgfCAnaScgfCAnbycgfCAndScgfCAneScgLT4gXCJhblwiXG4gICAgICAgICAgICAgICAgfCBfIC0+IFwiYVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHBwZlxuICAgICAgICAgICAgICAgIFwiQCBidXRAIGlzQCB1c2VkQCBoZXJlQCBpbkAgdGhlQCBjb250ZXh0QCBvZkAgJXNAICVhXCIgYV9vcl9hblxuICAgICAgICAgICAgICAgIHBwX3RleHQgc1xuICAgICAgICBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3Quc29ydCB+Y21wOihmdW4geCB5IC0+IC1TdHJpbmcuY29tcGFyZSB4IHkpIG90aGVyX2NvbnRleHRzXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgWyBjIF0gLT5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcIkBbSGludDpAIGAlcydAIGlzQCBhdmFpbGFibGVAIGZvckAgJWEldC5AXUBcXG5cXFxuICAgICAgICAgICAgICAgICAgRGlkIHlvdSBwdXQgaXQgYXQgdGhlIHdyb25nIGxldmVsP1wiIG5hbWUgcHBfdGV4dCBjXG4gICAgICAgICAgICAgICAgIGN1cnJlbnRfY29udGV4dClcbiAgICAgICAgfCBsYXN0IDo6IHJldl9vdGhlcnMgLT5cbiAgICAgICAgICAgIGxldCBvdGhlcnMgPSBMaXN0LnJldiByZXZfb3RoZXJzIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJAW0hpbnQ6QCBgJXMnQCBpc0AgYXZhaWxhYmxlQCBmb3JAICVhQCBhbmRAICVhJXQuQF1AXFxuXFxcbiAgICAgICAgICAgICAgICAgIERpZCB5b3UgcHV0IGl0IGF0IHRoZSB3cm9uZyBsZXZlbD9cIiBuYW1lXG4gICAgICAgICAgICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCBwcF90ZXh0IH5wcF9zZXA6KGZ1biBwcGYgKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBwcGYgXCIsQCBcIikpXG4gICAgICAgICAgICAgICAgIG90aGVycyBwcF90ZXh0IGxhc3QgY3VycmVudF9jb250ZXh0KSlcblxuICBtb2R1bGUgRXJyb3IgPSBzdHJ1Y3RcbiAgICAoKiBUT0RPOiBoaW50IHNwZWxsaW5nIGVycm9ycyByZWdhcmRpbmcgcmVzZXJ2ZWQgbmFtZXNwYWNlcyBuYW1lcyBhbmQgYWxsb3dsaXN0ZWRcbiAgICAgICBuYW1lcyBpbnN0ZWFkIG9mIHRha2luZyBhbiBvcHRpb25hbCBbYWxsb3dsaXN0XSBwYXJhbWV0ZXIuICopXG4gICAgbGV0IGNyZWF0ZWYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBQcmludGYua3NwcmludGZcbiAgICAgICAgKGZ1biBtc2cgLT5cbiAgICAgICAgICBtYXRjaCBzcGVsbGNoZWNrIHQgY29udGV4dCBuYW1lLnR4dCA/YWxsb3dsaXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOm5hbWUubG9jIFwiJXNcIiBtc2dcbiAgICAgICAgICB8IFNvbWUgcyAtPiBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCIlcy5cXG4lc1wiIG1zZyBzKVxuICAgICAgICBmbXQgbmFtZS50eHRcblxuICAgIGxldCByYWlzZV9lcnJvcmYgdCBjb250ZXh0ID9hbGxvd2xpc3QgZm10IChuYW1lIDogc3RyaW5nIExvYy50KSA9XG4gICAgICBMb2NhdGlvbi5FcnJvci5yYWlzZSBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG5cbiAgICBsZXQgZXJyb3JfZXh0ZW5zaW9uZiB0IGNvbnRleHQgP2FsbG93bGlzdCBmbXQgKG5hbWUgOiBzdHJpbmcgTG9jLnQpID1cbiAgICAgIExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBAQCBjcmVhdGVmIHQgY29udGV4dCA/YWxsb3dsaXN0IGZtdCBuYW1lXG4gIGVuZFxuXG4gIGxldCByYWlzZV9lcnJvcmYgPSBFcnJvci5yYWlzZV9lcnJvcmZcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEFzdF9idWlsZGVyLkRlZmF1bHRcbm1vZHVsZSBCdWZmZXIgPSBTdGRsaWIuQnVmZmVyXG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxuXG5sZXQgbGlkZW50IHggPSBMb25naWRlbnQuTGlkZW50IHhcblxubGV0IGNvcmVfdHlwZV9vZl90eXBlX2RlY2xhcmF0aW9uIHRkID1cbiAgbGV0IGxvYyA9IHRkLnB0eXBlX25hbWUubG9jIGluXG4gIHB0eXBfY29uc3RyIH5sb2NcbiAgICAoTG9jYXRlZC5tYXAgbGlkZW50IHRkLnB0eXBlX25hbWUpXG4gICAgKExpc3QubWFwIHRkLnB0eXBlX3BhcmFtcyB+Zjpmc3QpXG5cbmxldCBzdHJpcF9nZW5fc3ltYm9sX3N1ZmZpeCA9XG4gIGxldCBjaG9wIG4gfm9yX21vcmUgc3RyaW5nIHBvcyBmID1cbiAgICBsZXQgdGFyZ2V0ID0gIXBvcyAtIG4gaW5cbiAgICB3aGlsZSAhcG9zID4gMCAmJiAob3JfbW9yZSB8fCAhcG9zID4gdGFyZ2V0KSAmJiBmIHN0cmluZy5bIXBvcyAtIDFdIGRvXG4gICAgICBwb3MgOj0gIXBvcyAtIDFcbiAgICBkb25lO1xuICAgICFwb3MgPD0gdGFyZ2V0XG4gIGluXG4gIGZ1biBzdHJpbmcgLT5cbiAgICBsZXQgcG9zID0gcmVmIChTdHJpbmcubGVuZ3RoIHN0cmluZykgaW5cbiAgICBpZlxuICAgICAgY2hvcCAxIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgICAgJiYgY2hvcCAzIH5vcl9tb3JlOnRydWUgc3RyaW5nIHBvcyAoZnVuY3Rpb25cbiAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+IHRydWVcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgJiYgY2hvcCAyIH5vcl9tb3JlOmZhbHNlIHN0cmluZyBwb3MgKENoYXIuZXF1YWwgJ18nKVxuICAgIHRoZW4gU3RyaW5nLnByZWZpeCBzdHJpbmcgIXBvc1xuICAgIGVsc2Ugc3RyaW5nXG5cbmxldCBnZW5fc3ltYm9sID1cbiAgbGV0IGNudCA9IHJlZiAwIGluXG4gIGZ1biA/KHByZWZpeCA9IFwiX3hcIikgKCkgLT5cbiAgICBjbnQgOj0gIWNudCArIDE7XG4gICAgbGV0IHByZWZpeCA9IHN0cmlwX2dlbl9zeW1ib2xfc3VmZml4IHByZWZpeCBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXNfXyUwM2lfXCIgcHJlZml4ICFjbnRcblxubGV0IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGRfcmVzICh0ZCA6IHR5cGVfZGVjbGFyYXRpb24pIDpcbiAgICAodHlwZV9kZWNsYXJhdGlvbiwgXykgcmVzdWx0ID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBwcmVmaXhfc3RyaW5nIGkgPVxuICAgICgqIGEsIGIsIC4uLiwgeSwgeiwgYWEsIGJiLCAuLi4gKilcbiAgICBTdHJpbmcubWFrZSAoKGkgLyAyNikgKyAxKSAoQ2hhci5jaHIgKENoYXIuY29kZSAnYScgKyAoaSBtb2QgMjYpKSlcbiAgaW5cbiAgbGV0IG5hbWVfcGFyYW0gaSAodHAsIHZhcmlhbmNlKSA9XG4gICAgKG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgfCBQdHlwX2FueSAtPiBPayAoUHR5cF92YXIgKGdlbl9zeW1ib2wgfnByZWZpeDoocHJlZml4X3N0cmluZyBpKSAoKSkpXG4gICAgfCBQdHlwX3ZhciBfIGFzIHYgLT4gT2sgdlxuICAgIHwgXyAtPlxuICAgICAgICBFcnJvciAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jOnRwLnB0eXBfbG9jIFwibm90IGEgdHlwZSBwYXJhbWV0ZXJcIikpXG4gICAgPj58IGZ1biBwdHlwX2Rlc2MgLT4gKHsgdHAgd2l0aCBwdHlwX2Rlc2MgfSwgdmFyaWFuY2UpXG4gIGluXG4gIGxldCBwdHlwZV9wYXJhbXMsIGVycm9ycyA9XG4gICAgdGQucHR5cGVfcGFyYW1zIHw+IExpc3QubWFwaSB+ZjpuYW1lX3BhcmFtXG4gICAgfD4gTGlzdC5wYXJ0aXRpb25fbWFwIChmdW5jdGlvblxuICAgICAgICAgfCBPayBvIC0+IEVpdGhlci5MZWZ0IG9cbiAgICAgICAgIHwgRXJyb3IgZSAtPiBFaXRoZXIuUmlnaHQgZSlcbiAgaW5cbiAgbWF0Y2ggZXJyb3JzIHdpdGggW10gLT4gT2sgeyB0ZCB3aXRoIHB0eXBlX3BhcmFtcyB9IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKVxuXG5sZXQgbmFtZV90eXBlX3BhcmFtc19pbl90ZCAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKSA6IHR5cGVfZGVjbGFyYXRpb24gPVxuICBtYXRjaCBuYW1lX3R5cGVfcGFyYW1zX2luX3RkX3JlcyB0ZCB3aXRoXG4gIHwgT2sgcmVzIC0+IHJlc1xuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgY29tYmluYXRvcl90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfmYgPVxuICBsZXQgdGQgPSBuYW1lX3R5cGVfcGFyYW1zX2luX3RkIHRkIGluXG4gIGxldCByZXN1bHRfdHlwZSA9XG4gICAgZiB+bG9jOnRkLnB0eXBlX25hbWUubG9jIChjb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZClcbiAgaW5cbiAgTGlzdC5mb2xkX3JpZ2h0IHRkLnB0eXBlX3BhcmFtcyB+aW5pdDpyZXN1bHRfdHlwZVxuICAgIH5mOihmdW4gKHRwLCBfdmFyaWFuY2UpIGFjYyAtPlxuICAgICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgICBwdHlwX2Fycm93IH5sb2MgTm9sYWJlbCAoZiB+bG9jIHRwKSBhY2MpXG5cbmxldCBzdHJpbmdfb2ZfY29yZV90eXBlIGN0ID1cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCBwcGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgUHByaW50YXN0LmNvcmVfdHlwZSBwcGYgY3Q7XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCk7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWVfcmVzICh0eSwgXykgPVxuICBsZXQgbG9jID0gdHkucHR5cF9sb2MgaW5cbiAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgfCBQdHlwX3ZhciBuYW1lIC0+IE9rIChMb2NhdGVkLm1rIH5sb2MgbmFtZSlcbiAgfCBfIC0+IEVycm9yIChMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJub3QgYSB0eXBlIHBhcmFtZXRlclwiLCBbXSlcblxubGV0IGdldF90eXBlX3BhcmFtX25hbWUgdCA9XG4gIG1hdGNoIGdldF90eXBlX3BhcmFtX25hbWVfcmVzIHQgd2l0aFxuICB8IE9rIGUgLT4gZVxuICB8IEVycm9yIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5leGNlcHRpb24gVHlwZV9pc19yZWN1cnNpdmVcblxuY2xhc3MgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG4gICAgdmFsIHR5cGVfbmFtZXMgOiBzdHJpbmcgbGlzdCA9IExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KVxuICAgIG1ldGhvZCByZXR1cm5fdHJ1ZSAoKSA9IHJhaXNlX25vdHJhY2UgVHlwZV9pc19yZWN1cnNpdmVcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGN0eXBlID1cbiAgICAgIG1hdGNoIGN0eXBlLnB0eXBfZGVzYyB3aXRoXG4gICAgICB8IFB0eXBfYXJyb3cgXyAtPiAoKVxuICAgICAgfCBQdHlwX2NvbnN0ciAoeyB0eHQgPSBMb25naWRlbnQuTGlkZW50IGlkOyBfIH0sIF8pXG4gICAgICAgIHdoZW4gTGlzdC5tZW0gfnNldDp0eXBlX25hbWVzIGlkIC0+XG4gICAgICAgICAgc2VsZiNyZXR1cm5fdHJ1ZSAoKVxuICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSBjdHlwZVxuXG4gICAgbWV0aG9kISBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCA9XG4gICAgICAoKiBEb24ndCByZWN1cnNlIHRocm91Z2ggY2QucGNkX3JlcyAqKVxuICAgICAgbWF0Y2ggY2QucGNkX2FyZ3Mgd2l0aFxuICAgICAgfCBQY3N0cl90dXBsZSBhcmdzIC0+IExpc3QuaXRlciBhcmdzIH5mOnNlbGYjY29yZV90eXBlXG4gICAgICB8IFBjc3RyX3JlY29yZCBmaWVsZHMgLT4gTGlzdC5pdGVyIGZpZWxkcyB+ZjpzZWxmI2xhYmVsX2RlY2xhcmF0aW9uXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZXMgXyA9ICgqIERvbid0IHJlY3Vyc2UgdGhyb3VnaCBhdHRyaWJ1dGVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKVxuXG4gICAgbWV0aG9kIGdvICgpID1cbiAgICAgIG1hdGNoIHJlY19mbGFnIHdpdGhcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+IE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT4gKFxuICAgICAgICAgIG1hdGNoIExpc3QuaXRlciB0ZHMgfmY6c2VsZiN0eXBlX2RlY2xhcmF0aW9uIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBUeXBlX2lzX3JlY3Vyc2l2ZSAtPiBSZWN1cnNpdmVcbiAgICAgICAgICB8ICgpIC0+IE5vbnJlY3Vyc2l2ZSlcbiAgZW5kXG5cbmxldCByZWFsbHlfcmVjdXJzaXZlIHJlY19mbGFnIHRkcyA9IChuZXcgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzKSNnbyAoKVxubGV0IHJlYyBsYXN0IHggbCA9IG1hdGNoIGwgd2l0aCBbXSAtPiB4IHwgeCA6OiBsIC0+IGxhc3QgeCBsXG5cbmxldCBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBuYW1lIHBheWxvYWQgPVxuICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgfCBQU3RyIFtdIC0+IG5hbWUubG9jXG4gIHwgUFN0ciAoeCA6OiBsKSAtPiB7IHgucHN0cl9sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc3RyX2xvYy5sb2NfZW5kIH1cbiAgfCBQU2lnIFtdIC0+IG5hbWUubG9jXG4gIHwgUFNpZyAoeCA6OiBsKSAtPiB7IHgucHNpZ19sb2Mgd2l0aCBsb2NfZW5kID0gKGxhc3QgeCBsKS5wc2lnX2xvYy5sb2NfZW5kIH1cbiAgfCBQVHlwIHQgLT4gdC5wdHlwX2xvY1xuICB8IFBQYXQgKHgsIE5vbmUpIC0+IHgucHBhdF9sb2NcbiAgfCBQUGF0ICh4LCBTb21lIGUpIC0+IHsgeC5wcGF0X2xvYyB3aXRoIGxvY19lbmQgPSBlLnBleHBfbG9jLmxvY19lbmQgfVxuXG5sZXQgbG9jX29mX3BheWxvYWQgeyBhdHRyX25hbWU7IGF0dHJfcGF5bG9hZDsgYXR0cl9sb2MgPSBfIH0gPVxuICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG5cbmxldCBsb2Nfb2ZfYXR0cmlidXRlIHsgYXR0cl9uYW1lOyBhdHRyX3BheWxvYWQ7IGF0dHJfbG9jID0gXyB9ID1cbiAgKCogVE9ETzogZml4IHRoaXMgaW4gdGhlIGNvbXBpbGVyLCBhbmQgbW92ZSB0aGUgbG9naWMgdG8gb21wIHdoZW4gY29udmVydGluZ1xuICAgICBmcm9tIG9sZGVyIGFzdHMuICopXG4gICgqIFwib2NhbWwuZG9jXCIgYXR0cmlidXRlcyBhcmUgZ2VuZXJhdGVkIHdpdGggW0xvY2F0aW9uLm5vbmVdLCB3aGljaCBpcyBub3QgaGVscGZ1bCBmb3JcbiAgICAgZXJyb3IgbWVzc2FnZXMuICopXG4gIGlmIFBvbHkuKCA9ICkgYXR0cl9uYW1lLmxvYyBMb2NhdGlvbi5ub25lIHRoZW5cbiAgICBsb2Nfb2ZfbmFtZV9hbmRfcGF5bG9hZCBhdHRyX25hbWUgYXR0cl9wYXlsb2FkXG4gIGVsc2VcbiAgICB7XG4gICAgICBhdHRyX25hbWUubG9jIHdpdGhcbiAgICAgIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgYXR0cl9uYW1lIGF0dHJfcGF5bG9hZCkubG9jX2VuZDtcbiAgICB9XG5cbmxldCBsb2Nfb2ZfZXh0ZW5zaW9uIChuYW1lLCBwYXlsb2FkKSA9XG4gIGlmIFBvbHkuKCA9ICkgbmFtZS5sb2MgTG9jYXRpb24ubm9uZSB0aGVuIGxvY19vZl9uYW1lX2FuZF9wYXlsb2FkIG5hbWUgcGF5bG9hZFxuICBlbHNlXG4gICAgeyBuYW1lLmxvYyB3aXRoIGxvY19lbmQgPSAobG9jX29mX25hbWVfYW5kX3BheWxvYWQgbmFtZSBwYXlsb2FkKS5sb2NfZW5kIH1cblxubGV0IGN1cnJ5X2FwcGxpY2F0aW9ucyBleHByID1cbiAgbGV0IG9wZW4gQXN0X2J1aWxkZXJfZ2VuZXJhdGVkLk0gaW5cbiAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfYXBwbHkgKGYsIG9yaWdfZm9yd2FyZF9hcmdzKSAtPlxuICAgICAgbGV0IGxvYyA9IGV4cHIucGV4cF9sb2MgaW5cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gZlxuICAgICAgICB8IGxhc3RfYXJnIDo6IHJldl9mcm9udF9hcmdzIC0+XG4gICAgICAgICAgICBwZXhwX2FwcGx5IH5sb2MgKGxvb3AgcmV2X2Zyb250X2FyZ3MpIFsgbGFzdF9hcmcgXVxuICAgICAgaW5cbiAgICAgIGxvb3AgKExpc3QucmV2IG9yaWdfZm9yd2FyZF9hcmdzKVxuICB8IF8gLT4gZXhwclxuXG5sZXQgYXR0cmlidXRlc19lcnJvcnMgPVxuICBMaXN0LmZpbHRlcl9tYXAgfmY6KGZ1bmN0aW9uXG4gICAgfCB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfbG9jID0gXzsgYXR0cl9wYXlsb2FkID0gXyB9XG4gICAgICB3aGVuIE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLkxvY2F0aW9uLnR4dCAtPlxuICAgICAgICBOb25lXG4gICAgfCBhdHRyIC0+XG4gICAgICAgIGxldCBsb2MgPSBsb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgICAgU29tZSAoTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlcyBub3QgYWxsb3dlZCBoZXJlXCIpKVxuXG5sZXQgY29sbGVjdF9hdHRyaWJ1dGVzX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlMC5mb2xkXG4gICAgbWV0aG9kISBhdHRyaWJ1dGUgYSBhY2MgPSBhdHRyaWJ1dGVzX2Vycm9ycyBbIGEgXSBAIGFjY1xuICBlbmRcblxubGV0IGFzc2VydF9ub19hdHRyaWJ1dGVzIGwgPVxuICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBsIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgYXNzZXJ0X25vX2F0dHJpYnV0ZXNfaW4gPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZTAuaXRlclxuICAgIG1ldGhvZCEgYXR0cmlidXRlIGEgPSBhc3NlcnRfbm9fYXR0cmlidXRlcyBbIGEgXVxuICBlbmRcblxubGV0IGF0dHJpYnV0ZV9vZl93YXJuaW5nIGxvYyBzID1cbiAge1xuICAgIGF0dHJfbmFtZSA9IHsgbG9jOyB0eHQgPSBcIm9jYW1sLnBwd2FybmluZ1wiIH07XG4gICAgYXR0cl9wYXlsb2FkID0gUFN0ciBbIHBzdHJfZXZhbCB+bG9jIChlc3RyaW5nIH5sb2MgcykgW10gXTtcbiAgICBhdHRyX2xvYyA9IGxvYztcbiAgfVxuXG5sZXQgaXNfcG9seW1vcnBoaWNfdmFyaWFudCA9XG4gIGxldCByZWMgY2hlY2sgPSBmdW5jdGlvblxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3ZhcmlhbnQgXzsgXyB9IC0+IGBEZWZpbml0ZWx5XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYWxpYXMgKHR5cCwgXyk7IF8gfSAtPiBjaGVjayB0eXBcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgXzsgXyB9IC0+IGBNYXliZVxuICAgIHwgXyAtPiBgU3VyZWx5X25vdFxuICAgICgqIFR5cGUgdmFycyBnbyBoZXJlIGV2ZW4gdGhvdWdoIHRoZXkgY291bGQgYmUgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cywgaG93ZXZlciB3ZSBkb24ndCBoYW5kbGUgaXQgaWYgdGhleSBnZXQgc3Vic3RpdHV0ZWRcbiAgICAgICBieSBhIHBvbHltb3JwaGljIHZhcmlhbnQgdGhhdCBpcyB0aGVuIGluY2x1ZGVkLiAqKVxuICBpblxuICBmdW4gdGQgfnNpZ18gLT5cbiAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX3JlY29yZCBfIHwgUHR5cGVfb3BlbiAtPiBgU3VyZWx5X25vdFxuICAgIHwgUHR5cGVfYWJzdHJhY3QgLT4gKFxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpZiBzaWdfIHRoZW4gYE1heWJlIGVsc2UgYFN1cmVseV9ub3RcbiAgICAgICAgfCBTb21lIHR5cCAtPiBjaGVjayB0eXApXG5cbmxldCBta19uYW1lZF9zaWcgfmxvYyB+c2dfbmFtZSB+aGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFsgdGQgXVxuICAgIHdoZW4gU3RyaW5nLmVxdWFsIHRkLnB0eXBlX25hbWUudHh0IFwidFwiICYmIExpc3QuaXNfZW1wdHkgdGQucHR5cGVfY3N0cnMgLT5cbiAgICAgIGlmXG4gICAgICAgIChub3QgaGFuZGxlX3BvbHltb3JwaGljX3ZhcmlhbnQpXG4gICAgICAgICYmIFBvbHkuKCA9ICkgKGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186dHJ1ZSkgYERlZmluaXRlbHlcbiAgICAgIHRoZW4gTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgYXJpdHkgPSBMaXN0Lmxlbmd0aCB0ZC5wdHlwZV9wYXJhbXMgaW5cbiAgICAgICAgaWYgYXJpdHkgPj0gNCB0aGVuIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBtdHkgPVxuICAgICAgICAgICAgaWYgYXJpdHkgPSAwIHRoZW4gc2dfbmFtZSBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJXMlZFwiIHNnX25hbWUgYXJpdHlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICAgICAgICBsZXQgZm9yX3N1YnN0ID1cbiAgICAgICAgICAgIEFzdF9oZWxwZXIuVHlwZS5tayB+bG9jIHRkLnB0eXBlX25hbWUgfnBhcmFtczp0ZC5wdHlwZV9wYXJhbXNcbiAgICAgICAgICAgICAgfm1hbmlmZXN0OlxuICAgICAgICAgICAgICAgIChwdHlwX2NvbnN0ciB+bG9jXG4gICAgICAgICAgICAgICAgICAgKExvY2F0ZWQubWFwX2xpZGVudCB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCB+Zjpmc3QgdGQucHR5cGVfcGFyYW1zKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChpbmNsdWRlX2luZm9zIH5sb2NcbiAgICAgICAgICAgICAgIChwbXR5X3dpdGggfmxvY1xuICAgICAgICAgICAgICAgICAgKHBtdHlfaWRlbnQgfmxvYyAoTG9jYXRlZC5saWRlbnQgbXR5IH5sb2MpKVxuICAgICAgICAgICAgICAgICAgWyBQd2l0aF90eXBlc3Vic3QgKExvY2F0ZWQubGlkZW50IH5sb2MgXCJ0XCIsIGZvcl9zdWJzdCkgXSkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBleG5fdG9fbG9jX2Vycm9yIGV4biA9XG4gIG1hdGNoIExvY2F0aW9uLkVycm9yLm9mX2V4biBleG4gd2l0aCBTb21lIGVycm9yIC0+IGVycm9yIHwgTm9uZSAtPiByYWlzZSBleG5cblxubW9kdWxlIFdpdGhfZXJyb3JzID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0XG5cbiAgbGV0IHJldHVybiBlID0gKGUsIFtdKVxuXG4gIGxldCAoID4+PSApICh4LCBlcnJvcnMxKSBmID1cbiAgICBsZXQgeSwgZXJyb3JzMiA9IGYgeCBpblxuICAgICh5LCBlcnJvcnMxIEAgZXJyb3JzMilcblxuICBsZXQgKCA+PnwgKSAoeCwgZXJyb3JzKSBmID0gKGYgeCwgZXJyb3JzKVxuXG4gIGxldCBvZl9yZXN1bHQgcmVzdWx0IH5kZWZhdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgT2sgeCAtPiAoeCwgW10pXG4gICAgfCBFcnJvciBlcnJvcnMgLT4gKGRlZmF1bHQsIE5vbkVtcHR5TGlzdC50b19saXN0IGVycm9ycylcblxuICBsZXQgY29tYmluZV9lcnJvcnMgbGlzdCA9IChMaXN0Lm1hcCBsaXN0IH5mOmZzdCwgTGlzdC5jb25jYXRfbWFwIGxpc3QgfmY6c25kKVxuZW5kXG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfcGF0dGVybjBcbmxldCBub2xhYmVsID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vbGFiZWwgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbGFiZWxcIilcbmxldCBsYWJlbGxlZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGFiZWxsZWQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkxhYmVsbGVkXCIpXG5sZXQgb3B0aW9uYWwgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE9wdGlvbmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcHRpb25hbFwiKVxubGV0IGF0dHJpYnV0ZSB+bmFtZTooVCBuYW1lKSAgfnBheWxvYWQ6KFQgcGF5bG9hZCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LmF0dHJfbmFtZSkubG9jICh4LmF0dHJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IHBheWxvYWQgY3R4IGxvYyB4LmF0dHJfcGF5bG9hZCBrIGluIGspXG5sZXQgYmluZGluZ19vcCB+b3A6KFQgb3ApICB+cGF0OihUIHBhdCkgIH5leHA6KFQgZXhwKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gb3AgY3R4ICh4LnBib3Bfb3ApLmxvYyAoeC5wYm9wX29wKS50eHQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gcGF0IGN0eCBsb2MgeC5wYm9wX3BhdCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBleHAgY3R4IGxvYyB4LnBib3BfZXhwIGsgaW4gaylcbmxldCBjYXNlIH5saHM6KFQgbGhzKSAgfmd1YXJkOihUIGd1YXJkKSAgfnJoczooVCByaHMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBsaHMgY3R4IGxvYyB4LnBjX2xocyBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBndWFyZCBjdHggbG9jIHgucGNfZ3VhcmQgayBpblxuICAgICAgICAgICAgIGxldCBrID0gcmhzIGN0eCBsb2MgeC5wY19yaHMgayBpbiBrKVxubGV0IHBjbF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNsX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjbF9jb25zdHIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxubGV0IHBjbF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9zdHJ1Y3R1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInN0cnVjdHVyZVwiKSlcbmxldCBwY2xfZnVuIChUIGYwKSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfZnVuICh4MCwgeDEsIHgyLCB4MykgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gbGV0IGsgPSBmMyBjdHggbG9jIHgzIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1blwiKSlcbmxldCBwY2xfYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjbF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2xfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2xfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2xfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxubGV0IHBjbF9sZXQgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNsX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNsX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNsX2xldCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldFwiKSlcbmxldCBwY2xfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9jb25zdHJhaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdHJhaW50XCIpKVxubGV0IHBjbF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwY2xfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNsX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjbF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjbF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjbF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBjZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGNmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjZl9pbmhlcml0IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9pbmhlcml0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbmxldCBwY2ZfdmFsIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfdmFsIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWxcIikpXG5sZXQgcGNmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX21ldGhvZCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibWV0aG9kXCIpKVxubGV0IHBjZl9jb25zdHJhaW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY2ZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwY2ZfaW5pdGlhbGl6ZXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9pbml0aWFsaXplciB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5pdGlhbGl6ZXJcIikpXG5sZXQgcGNmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGNmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGNmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGNmX2F0dHJpYnV0ZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXR0cmlidXRlXCIpKVxubGV0IHBjZl9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGNmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjZl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBjZmtfdmlydHVhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ2ZrX3ZpcnR1YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZpcnR1YWxcIilcbmxldCBjZmtfY29uY3JldGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDZmtfY29uY3JldGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbmNyZXRlXCIpXG5sZXQgY2xhc3NfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNpX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjaV9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjaV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjbGFzc19pbmZvcyB+dmlydDooVCB2aXJ0KSAgfnBhcmFtczooVCBwYXJhbXMpICB+bmFtZTooVCBuYW1lKSAgfmV4cHI6KFRcbiAgZXhwcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2lfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSB2aXJ0IGN0eCBsb2MgeC5wY2lfdmlydCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wY2lfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBuYW1lIGN0eCAoeC5wY2lfbmFtZSkubG9jICh4LnBjaV9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBjaV9leHByIGsgaW4gaykpXG5sZXQgY2xhc3Nfc2lnbmF0dXJlIH5zZWxmOihUIHNlbGYpICB+ZmllbGRzOihUIGZpZWxkcykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IHNlbGYgY3R4IGxvYyB4LnBjc2lnX3NlbGYgayBpblxuICAgICAgICAgICAgIGxldCBrID0gZmllbGRzIGN0eCBsb2MgeC5wY3NpZ19maWVsZHMgayBpbiBrKVxubGV0IGNsYXNzX3N0cnVjdHVyZSB+c2VsZjooVCBzZWxmKSAgfmZpZWxkczooVCBmaWVsZHMpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGsgPSBzZWxmIGN0eCBsb2MgeC5wY3N0cl9zZWxmIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGZpZWxkcyBjdHggbG9jIHgucGNzdHJfZmllbGRzIGsgaW4gaylcbmxldCBwY3R5X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdHlfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3R5X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0eV9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3R5X2NvbnN0ciAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfY29uc3RyICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyXCIpKVxubGV0IHBjdHlfc2lnbmF0dXJlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X3NpZ25hdHVyZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic2lnbmF0dXJlXCIpKVxubGV0IHBjdHlfYXJyb3cgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3R5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3R5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0eV9hcnJvdyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycm93XCIpKVxubGV0IHBjdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBjdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGN0eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBjdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQY3R5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBjdHlfb3BlbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3R5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdHlfb3BlbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib3BlblwiKSlcbmxldCBwY3RmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBjdGZfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGN0Zl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wY3RmX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwY3RmX2luaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfaW5oZXJpdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW5oZXJpdFwiKSlcbmxldCBwY3RmX3ZhbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl92YWwgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhbFwiKSlcbmxldCBwY3RmX21ldGhvZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9tZXRob2QgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1ldGhvZFwiKSlcbmxldCBwY3RmX2NvbnN0cmFpbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGN0Zl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wY3RmX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGN0Zl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBjdGZfY29uc3RyYWludCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwY3RmX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9hdHRyaWJ1dGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImF0dHJpYnV0ZVwiKSlcbmxldCBwY3RmX2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY3RmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBjdGZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wY3RmX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGN0Zl9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBjbG9zZWQgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgQ2xvc2VkIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDbG9zZWRcIilcbmxldCBvcGVuXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBPcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJPcGVuXCIpXG5sZXQgcGNvbnN0X2ludGVnZXIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3RfaW50ZWdlciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZWdlclwiKVxubGV0IHBjb25zdF9jaGFyIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY29uc3RfY2hhciB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2hhclwiKVxubGV0IHBjb25zdF9zdHJpbmcgKFQgZjApIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X3N0cmluZyAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwic3RyaW5nXCIpXG5sZXQgcGNvbnN0X2Zsb2F0IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGNvbnN0X2Zsb2F0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmbG9hdFwiKVxubGV0IHBjc3RyX3R1cGxlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQY3N0cl90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIilcbmxldCBwY3N0cl9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBjc3RyX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG5sZXQgY29uc3RydWN0b3JfZGVjbGFyYXRpb25fYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGNkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBjZF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBjZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBjb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnZhcnM6KFQgdmFycykgIH5hcmdzOihUIGFyZ3MpIFxuICB+cmVzOihUIHJlcykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wY2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wY2RfbmFtZSkubG9jICh4LnBjZF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHZhcnMgY3R4IGxvYyB4LnBjZF92YXJzIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBhcmdzIGN0eCBsb2MgeC5wY2RfYXJncyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcmVzIGN0eCBsb2MgeC5wY2RfcmVzIGsgaW4gaykpXG5sZXQgcHR5cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwdHlwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHB0eXBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHR5cF9hbnkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9hbnkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbnlcIikpXG5sZXQgcHR5cF92YXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfdmFyIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG5sZXQgcHR5cF9hcnJvdyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2Fycm93ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYXJyb3dcIikpXG5sZXQgcHR5cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcHR5cF9jb25zdHIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2NvbnN0ciAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0clwiKSlcbmxldCBwdHlwX29iamVjdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfb2JqZWN0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvYmplY3RcIikpXG5sZXQgcHR5cF9jbGFzcyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfY2xhc3MgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjbGFzc1wiKSlcbmxldCBwdHlwX2FsaWFzIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9hbGlhcyAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiYWxpYXNcIikpXG5sZXQgcHR5cF92YXJpYW50IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wdHlwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHR5cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFB0eXBfdmFyaWFudCAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcHR5cF9wb2x5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxubGV0IHB0eXBfcGFja2FnZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wdHlwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnB0eXBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wdHlwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHR5cF9wYWNrYWdlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwYWNrYWdlXCIpKVxubGV0IHB0eXBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHR5cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnB0eXBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQdHlwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHVwdG8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgVXB0byAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVXB0b1wiKVxubGV0IGRvd250b18gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgRG93bnRvIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJEb3dudG9cIilcbmxldCBwZGlyYV9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGRpcl9zdHJpbmcgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfc3RyaW5nIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJpbmdcIilcbmxldCBwZGlyX2ludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGRpcmFfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBkaXJhX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBkaXJfaW50ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpbnRcIilcbmxldCBwZGlyX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBkaXJhX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wZGlyYV9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZGlyX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKVxubGV0IHBkaXJfYm9vbCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZGlyYV9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucGRpcmFfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGRpcl9ib29sIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJib29sXCIpXG5sZXQgcGV4cF9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwZXhwX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGV4cF9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBleHBfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcGV4cF9pZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9pZGVudCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImlkZW50XCIpKVxubGV0IHBleHBfY29uc3RhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29uc3RhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0YW50XCIpKVxubGV0IHBleHBfbGV0IChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0ICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibGV0XCIpKVxubGV0IHBleHBfZnVuY3Rpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfZnVuY3Rpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0aW9uXCIpKVxubGV0IHBleHBfZnVuIChUIGYwKSAoVCBmMSkgKFQgZjIpIChUIGYzKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2Z1biAoeDAsIHgxLCB4MiwgeDMpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5cIikpXG5sZXQgcGV4cF9hcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXBwbHkgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFwcGx5XCIpKVxubGV0IHBleHBfbWF0Y2ggKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX21hdGNoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtYXRjaFwiKSlcbmxldCBwZXhwX3RyeSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfdHJ5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0cnlcIikpXG5sZXQgcGV4cF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcGV4cF9jb25zdHJ1Y3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbmxldCBwZXhwX3ZhcmlhbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcGV4cF9yZWNvcmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxubGV0IHBleHBfZmllbGQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2ZpZWxkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IHgxLmxvYyB4MS50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmllbGRcIikpXG5sZXQgcGV4cF9zZXRmaWVsZCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NldGZpZWxkICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNldGZpZWxkXCIpKVxubGV0IHBleHBfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxubGV0IHBleHBfaWZ0aGVuZWxzZSAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2lmdGhlbmVsc2UgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZnRoZW5lbHNlXCIpKVxubGV0IHBleHBfc2VxdWVuY2UgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NlcXVlbmNlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXF1ZW5jZVwiKSlcbmxldCBwZXhwX3doaWxlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF93aGlsZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwid2hpbGVcIikpXG5sZXQgcGV4cF9mb3IgKFQgZjApIChUIGYxKSAoVCBmMikgKFQgZjMpIChUIGY0KSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2ZvciAoeDAsIHgxLCB4MiwgeDMsIHg0KSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeDIgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYzIGN0eCBsb2MgeDMgayBpbiBsZXQgayA9IGY0IGN0eCBsb2MgeDQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZm9yXCIpKVxubGV0IHBleHBfY29uc3RyYWludCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfY29uc3RyYWludCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY29uc3RyYWludFwiKSlcbmxldCBwZXhwX2NvZXJjZSAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2NvZXJjZSAoeDAsIHgxLCB4MikgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvZXJjZVwiKSlcbmxldCBwZXhwX3NlbmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NlbmQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZW5kXCIpKVxubGV0IHBleHBfbmV3IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX25ldyB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld1wiKSlcbmxldCBwZXhwX3NldGluc3R2YXIgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3NldGluc3R2YXIgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzZXRpbnN0dmFyXCIpKVxubGV0IHBleHBfb3ZlcnJpZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfb3ZlcnJpZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm92ZXJyaWRlXCIpKVxubGV0IHBleHBfbGV0bW9kdWxlIChUIGYwKSAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0bW9kdWxlICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG1vZHVsZVwiKSlcbmxldCBwZXhwX2xldGV4Y2VwdGlvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0ZXhjZXB0aW9uICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsZXRleGNlcHRpb25cIikpXG5sZXQgcGV4cF9hc3NlcnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfYXNzZXJ0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhc3NlcnRcIikpXG5sZXQgcGV4cF9sYXp5IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2xhenkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxhenlcIikpXG5sZXQgcGV4cF9wb2x5IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9wb2x5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJwb2x5XCIpKVxubGV0IHBleHBfb2JqZWN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX29iamVjdCB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwib2JqZWN0XCIpKVxubGV0IHBleHBfbmV3dHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbmV3dHlwZSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm5ld3R5cGVcIikpXG5sZXQgcGV4cF9wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX3BhY2sgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInBhY2tcIikpXG5sZXQgcGV4cF9vcGVuIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF9vcGVuICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBleHBfbGV0b3AgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wZXhwX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucGV4cF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBleHBfbGV0b3AgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImxldG9wXCIpKVxubGV0IHBleHBfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucGV4cF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBleHBfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQZXhwX2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBleHBfdW5yZWFjaGFibGUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXhwX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBleHBfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wZXhwX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUGV4cF91bnJlYWNoYWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucmVhY2hhYmxlXCIpKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3Rvcl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wZXh0X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBleHRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGV4dGVuc2lvbl9jb25zdHJ1Y3RvciB+bmFtZTooVCBuYW1lKSAgfmtpbmQ6KFQga2luZCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wZXh0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucGV4dF9uYW1lKS5sb2MgKHgucGV4dF9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGtpbmQgY3R4IGxvYyB4LnBleHRfa2luZCBrIGluIGspKVxubGV0IHBleHRfZGVjbCAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQZXh0X2RlY2wgKHgwLCB4MSwgeDIpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4MiBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImRlY2xcIilcbmxldCBwZXh0X3JlYmluZCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUGV4dF9yZWJpbmQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWJpbmRcIilcbmxldCB1bml0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFVuaXQgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlVuaXRcIilcbmxldCBuYW1lZCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5hbWVkICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOYW1lZFwiKVxubGV0IGluY2x1ZGVfaW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucGluY2xfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGluY2xfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBpbmNsdWRlX2luZm9zIH5tb2RfOihUIG1vZF8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGluY2xfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBtb2RfIGN0eCBsb2MgeC5waW5jbF9tb2QgayBpbiBrKSlcbmxldCBpbmplY3RpdmUgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgSW5qZWN0aXZlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJJbmplY3RpdmVcIilcbmxldCBub2luamVjdGl2aXR5ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vSW5qZWN0aXZpdHkgLT4gKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpOyBrKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vSW5qZWN0aXZpdHlcIilcbmxldCBsYWJlbF9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbGRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucGxkX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IGxhYmVsX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+bXV0YWJsZV86KFQgbXV0YWJsZV8pICB+dHlwZV86KFRcbiAgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucGxkX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucGxkX25hbWUpLmxvYyAoeC5wbGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBtdXRhYmxlXyBjdHggbG9jIHgucGxkX211dGFibGUgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHR5cGVfIGN0eCBsb2MgeC5wbGRfdHlwZSBrIGluIGspKVxubGV0IGxldG9wIH5sZXRfOihUIGxldF8pICB+YW5kczooVCBhbmRzKSAgfmJvZHk6KFQgYm9keSkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IGxldF8gY3R4IGxvYyB4LmxldF8gayBpblxuICAgICAgICAgICAgIGxldCBrID0gYW5kcyBjdHggbG9jIHguYW5kcyBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBib2R5IGN0eCBsb2MgeC5ib2R5IGsgaW4gaylcbmxldCBsb2NhdGlvbiB+c3RhcnQ6KFQgc3RhcnQpICB+ZW5kXzooVCBlbmRfKSAgfmdob3N0OihUIGdob3N0KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBrID0gc3RhcnQgY3R4IGxvYyB4LmxvY19zdGFydCBrIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBlbmRfIGN0eCBsb2MgeC5sb2NfZW5kIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGdob3N0IGN0eCBsb2MgeC5sb2NfZ2hvc3QgayBpbiBrKVxubGV0IGxpZGVudCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGlkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJMaWRlbnRcIilcbmxldCBsZG90IChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTGRvdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGRvdFwiKVxubGV0IGxhcHBseSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IExhcHBseSAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTGFwcGx5XCIpXG5sZXQgbW9kdWxlX2JpbmRpbmdfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1iX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtYl9hdHRyaWJ1dGVzIGsgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBtb2R1bGVfYmluZGluZyB+bmFtZTooVCBuYW1lKSAgfmV4cHI6KFQgZXhwcikgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbWJfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wbWJfbmFtZSkubG9jICh4LnBtYl9uYW1lKS50eHQgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGV4cHIgY3R4IGxvYyB4LnBtYl9leHByIGsgaW4gaykpXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBtZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbWRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbWRfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgbW9kdWxlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1kX25hbWUpLmxvYyAoeC5wbWRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG1kX3R5cGUgayBpbiBrKSlcbmxldCBwbW9kX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtb2RfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wbW9kX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwbW9kX2lkZW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2lkZW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaWRlbnRcIikpXG5sZXQgcG1vZF9zdHJ1Y3R1cmUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2Rfc3RydWN0dXJlIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJzdHJ1Y3R1cmVcIikpXG5sZXQgcG1vZF9mdW5jdG9yIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtb2RfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbW9kX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG1vZF9mdW5jdG9yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJmdW5jdG9yXCIpKVxubGV0IHBtb2RfYXBwbHkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2FwcGx5ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhcHBseVwiKSlcbmxldCBwbW9kX2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtb2RfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG1vZF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtb2RfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbW9kX2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcG1vZF91bnBhY2sgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfdW5wYWNrIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ1bnBhY2tcIikpXG5sZXQgcG1vZF9leHRlbnNpb24gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1vZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbW9kX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG1vZF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtb2RfZXh0ZW5zaW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleHRlbnNpb25cIikpXG5sZXQgbW9kdWxlX3N1YnN0aXR1dGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXNfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG1zX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG1zX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV9zdWJzdGl0dXRpb24gfm5hbWU6KFQgbmFtZSkgIH5tYW5pZmVzdDooVCBtYW5pZmVzdCkgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG1zX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucG1zX25hbWUpLmxvYyAoeC5wbXNfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPVxuICAgICAgICAgICAgICAgIG1hbmlmZXN0IGN0eCAoeC5wbXNfbWFuaWZlc3QpLmxvYyAoeC5wbXNfbWFuaWZlc3QpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGspKVxubGV0IHBtdHlfbG9jIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcG10eV9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdHlfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBtdHlfaWRlbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfaWRlbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJpZGVudFwiKSlcbmxldCBwbXR5X3NpZ25hdHVyZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV9zaWduYXR1cmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInNpZ25hdHVyZVwiKSlcbmxldCBwbXR5X2Z1bmN0b3IgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2Z1bmN0b3IgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImZ1bmN0b3JcIikpXG5sZXQgcG10eV93aXRoIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wbXR5X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBtdHlfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wbXR5X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUG10eV93aXRoICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ3aXRoXCIpKVxubGV0IHBtdHlfdHlwZW9mIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X3R5cGVvZiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZW9mXCIpKVxubGV0IHBtdHlfZXh0ZW5zaW9uIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG10eV9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBtdHlfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQbXR5X2V4dGVuc2lvbiB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpKVxubGV0IHBtdHlfYWxpYXMgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10eV9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wbXR5X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG10eV9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBtdHlfYWxpYXMgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbmxldCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wbXRkX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnBtdGRfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG10ZF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IG5hbWUgY3R4ICh4LnBtdGRfbmFtZSkubG9jICh4LnBtdGRfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSB0eXBlXyBjdHggbG9jIHgucG10ZF90eXBlIGsgaW4gaykpXG5sZXQgaW1tdXRhYmxlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IEltbXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiSW1tdXRhYmxlXCIpXG5sZXQgbXV0YWJsZV8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgTXV0YWJsZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTXV0YWJsZVwiKVxubGV0IHBvZl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBvZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBvZl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9mX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcG9mX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IG90YWcgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBvZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wb2ZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wb2ZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBPdGFnICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3RhZ1wiKSlcbmxldCBvaW5oZXJpdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wb2ZfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucG9mX2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucG9mX2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgT2luaGVyaXQgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk9pbmhlcml0XCIpKVxubGV0IG9wZW5faW5mb3NfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucG9wZW5fbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucG9wZW5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBvcGVuX2luZm9zIH5leHByOihUIGV4cHIpICB+b3ZlcnJpZGU6KFQgb3ZlcnJpZGUpICA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucG9wZW5fYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBleHByIGN0eCBsb2MgeC5wb3Blbl9leHByIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBvdmVycmlkZSBjdHggbG9jIHgucG9wZW5fb3ZlcnJpZGUgayBpbiBrKSlcbmxldCBvdmVycmlkZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBPdmVycmlkZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiT3ZlcnJpZGVcIilcbmxldCBmcmVzaCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBGcmVzaCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiRnJlc2hcIilcbmxldCBwcGF0X2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBwYXRfYXR0cmlidXRlcyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcGF0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gW10gfSBpblxuICAgICAgICAgICAgIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwcGF0X2FueSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2FueSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFueVwiKSlcbmxldCBwcGF0X3ZhciAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF92YXIgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YXJcIikpXG5sZXQgcHBhdF9hbGlhcyAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfYWxpYXMgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhbGlhc1wiKSlcbmxldCBwcGF0X2NvbnN0YW50IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0YW50IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJjb25zdGFudFwiKSlcbmxldCBwcGF0X2ludGVydmFsIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9pbnRlcnZhbCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiaW50ZXJ2YWxcIikpXG5sZXQgcHBhdF90dXBsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF90dXBsZSB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHVwbGVcIikpXG5sZXQgcHBhdF9jb25zdHJ1Y3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cnVjdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cnVjdFwiKSlcbmxldCBwcGF0X3ZhcmlhbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3ZhcmlhbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIikpXG5sZXQgcHBhdF9yZWNvcmQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3JlY29yZCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpKVxubGV0IHBwYXRfYXJyYXkgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHBhdF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcGF0X2xvYyBpblxuICAgICAgICAgICAgICBsZXQgeCA9IHgucHBhdF9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFBwYXRfYXJyYXkgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImFycmF5XCIpKVxubGV0IHBwYXRfb3IgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X29yICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvclwiKSlcbmxldCBwcGF0X2NvbnN0cmFpbnQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNvbnN0cmFpbnRcIikpXG5sZXQgcHBhdF90eXBlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpKVxubGV0IHBwYXRfbGF6eSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9sYXp5IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJsYXp5XCIpKVxubGV0IHBwYXRfdW5wYWNrIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X3VucGFjayB4MCAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInVucGFja1wiKSlcbmxldCBwcGF0X2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9leGNlcHRpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4Y2VwdGlvblwiKSlcbmxldCBwcGF0X2V4dGVuc2lvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgeC5wcGF0X2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnBwYXRfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcGF0X2Rlc2MgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgIHwgUHBhdF9leHRlbnNpb24geDAgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImV4dGVuc2lvblwiKSlcbmxldCBwcGF0X29wZW4gKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGxvYyA9IHgucHBhdF9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnBwYXRfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBQcGF0X29wZW4gKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpKVxubGV0IHBzdHIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBTdHIgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlBTdHJcIilcbmxldCBwc2lnIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQU2lnIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQU2lnXCIpXG5sZXQgcHR5cCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUFR5cCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUFR5cFwiKVxubGV0IHBwYXQgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQUGF0ICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQUGF0XCIpXG5sZXQgcG9zaXRpb24gfmZuYW1lOihUIGZuYW1lKSAgfmxudW06KFQgbG51bSkgIH5ib2w6KFQgYm9sKSAgfmNudW06KFQgY251bSkgXG4gID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IGZuYW1lIGN0eCBsb2MgeC5wb3NfZm5hbWUgayBpblxuICAgICAgICAgICAgIGxldCBrID0gbG51bSBjdHggbG9jIHgucG9zX2xudW0gayBpblxuICAgICAgICAgICAgIGxldCBrID0gYm9sIGN0eCBsb2MgeC5wb3NfYm9sIGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGNudW0gY3R4IGxvYyB4LnBvc19jbnVtIGsgaW4gaylcbmxldCBwcml2YXRlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQcml2YXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJQcml2YXRlXCIpXG5sZXQgcHVibGljID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB1YmxpYyAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUHVibGljXCIpXG5sZXQgbm9ucmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IE5vbnJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiTm9ucmVjdXJzaXZlXCIpXG5sZXQgcmVjdXJzaXZlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFJlY3Vyc2l2ZSAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiUmVjdXJzaXZlXCIpXG5sZXQgcHJmX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHJmX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyBsb2MgayBpbiBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcHJmX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wcmZfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwcmZfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgcnRhZyAoVCBmMCkgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnByZl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgbG9jID0geC5wcmZfbG9jIGluXG4gICAgICAgICAgICAgIGxldCB4ID0geC5wcmZfZGVzYyBpblxuICAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICAgfCBSdGFnICh4MCwgeDEsIHgyKSAtPlxuICAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW4gaykpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIlJ0YWdcIikpXG5sZXQgcmluaGVyaXQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgQ29tbW9uLmFzc2VydF9ub19hdHRyaWJ1dGVzIHgucHJmX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBsb2MgPSB4LnByZl9sb2MgaW5cbiAgICAgICAgICAgICAgbGV0IHggPSB4LnByZl9kZXNjIGluXG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IFJpbmhlcml0IHgwIC0+XG4gICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJSaW5oZXJpdFwiKSlcbmxldCBwc2lnX2xvYyAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgbG9jIGsgaW4gbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHBzaWdfdmFsdWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3ZhbHVlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxubGV0IHBzaWdfdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbmxldCBwc2lnX3R5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlc3Vic3RcIilcbmxldCBwc2lnX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbmxldCBwc2lnX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbmxldCBwc2lnX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbmxldCBwc2lnX21vZHN1YnN0IChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19tb2RzdWJzdCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kc3Vic3RcIilcbmxldCBwc2lnX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbmxldCBwc2lnX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwc2lnX21vZHR5cGVzdWJzdCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfbW9kdHlwZXN1YnN0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R0eXBlc3Vic3RcIilcbmxldCBwc2lnX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbmxldCBwc2lnX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbmxldCBwc2lnX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzaWdfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzaWdfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHNpZ19jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbmxldCBwc2lnX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbmxldCBwc2lnX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc2lnX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc2lnX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzaWdfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbmxldCBwc2lnX2V4dGVuc2lvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHNpZ19kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG5sZXQgcHN0cl9sb2MgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIGxvYyBrIGluIGxldCBrID0gZjIgY3R4IGxvYyB4IGsgaW4gaylcbmxldCBwc3RyX2V2YWwgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9ldmFsICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJldmFsXCIpXG5sZXQgcHN0cl92YWx1ZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3ZhbHVlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ2YWx1ZVwiKVxubGV0IHBzdHJfcHJpbWl0aXZlIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9wcmltaXRpdmUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInByaW1pdGl2ZVwiKVxubGV0IHBzdHJfdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX3R5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInR5cGVcIilcbmxldCBwc3RyX3R5cGV4dCAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfdHlwZXh0IHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBleHRcIilcbmxldCBwc3RyX2V4Y2VwdGlvbiAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfZXhjZXB0aW9uIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJleGNlcHRpb25cIilcbmxldCBwc3RyX21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJtb2R1bGVcIilcbmxldCBwc3RyX3JlY21vZHVsZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfcmVjbW9kdWxlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJyZWNtb2R1bGVcIilcbmxldCBwc3RyX21vZHR5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX21vZHR5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwc3RyX29wZW4gKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX29wZW4geDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm9wZW5cIilcbmxldCBwc3RyX2NsYXNzIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IHggPSB4LnBzdHJfZGVzYyBpblxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHN0cl9jbGFzcyB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiY2xhc3NcIilcbmxldCBwc3RyX2NsYXNzX3R5cGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2NsYXNzX3R5cGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImNsYXNzX3R5cGVcIilcbmxldCBwc3RyX2luY2x1ZGUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2luY2x1ZGUgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcImluY2x1ZGVcIilcbmxldCBwc3RyX2F0dHJpYnV0ZSAoVCBmMCkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wc3RyX2xvYyBpblxuICAgICAgICAgICAgIGxldCB4ID0geC5wc3RyX2Rlc2MgaW5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFBzdHJfYXR0cmlidXRlIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhdHRyaWJ1dGVcIilcbmxldCBwc3RyX2V4dGVuc2lvbiAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIF9sb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbGV0IGxvYyA9IHgucHN0cl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgeCA9IHgucHN0cl9kZXNjIGluXG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQc3RyX2V4dGVuc2lvbiAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZXh0ZW5zaW9uXCIpXG5sZXQgdG9wbGV2ZWxfZGlyZWN0aXZlIH5uYW1lOihUIG5hbWUpICB+YXJnOihUIGFyZykgID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgayA9IG5hbWUgY3R4ICh4LnBkaXJfbmFtZSkubG9jICh4LnBkaXJfbmFtZSkudHh0IGsgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGFyZyBjdHggbG9jIHgucGRpcl9hcmcgayBpbiBrKVxubGV0IHB0b3BfZGVmIChUIGYwKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdG9wX2RlZiB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZGVmXCIpXG5sZXQgcHRvcF9kaXIgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0b3BfZGlyIHgwIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCBsb2MgeDAgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJkaXJcIilcbmxldCB0eXBlX2RlY2xhcmF0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eXBlX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB0eXBlX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9kZWNsYXJhdGlvbiB+bmFtZTooVCBuYW1lKSAgfnBhcmFtczooVCBwYXJhbXMpICB+Y3N0cnM6KFQgY3N0cnMpIFxuICB+a2luZDooVCBraW5kKSAgfnByaXZhdGVfOihUIHByaXZhdGVfKSAgfm1hbmlmZXN0OihUIG1hbmlmZXN0KSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eXBlX2F0dHJpYnV0ZXM7XG4gICAgICAgICAgICAgKGxldCBrID0gbmFtZSBjdHggKHgucHR5cGVfbmFtZSkubG9jICh4LnB0eXBlX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wdHlwZV9wYXJhbXMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IGNzdHJzIGN0eCBsb2MgeC5wdHlwZV9jc3RycyBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0ga2luZCBjdHggbG9jIHgucHR5cGVfa2luZCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcHJpdmF0ZV8gY3R4IGxvYyB4LnB0eXBlX3ByaXZhdGUgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IG1hbmlmZXN0IGN0eCBsb2MgeC5wdHlwZV9tYW5pZmVzdCBrIGluIGspKVxubGV0IHR5cGVfZXhjZXB0aW9uX2F0dHJpYnV0ZXMgKFQgZjEpIChUIGYyKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBfbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIGxldCBsb2MgPSB4LnB0eWV4bl9sb2MgaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeC5wdHlleG5fYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdHlleG5fYXR0cmlidXRlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICBsZXQgayA9IGYyIGN0eCBsb2MgeCBrIGluIGspXG5sZXQgdHlwZV9leGNlcHRpb24gfmNvbnN0cnVjdG9yOihUIGNvbnN0cnVjdG9yKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4bl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IGNvbnN0cnVjdG9yIGN0eCBsb2MgeC5wdHlleG5fY29uc3RydWN0b3IgayBpbiBrKSlcbmxldCB0eXBlX2V4dGVuc2lvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdHlleHRfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHR5ZXh0X2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHR5ZXh0X2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHR5cGVfZXh0ZW5zaW9uIH5wYXRoOihUIHBhdGgpICB+cGFyYW1zOihUIHBhcmFtcykgIH5jb25zdHJ1Y3RvcnM6KFRcbiAgY29uc3RydWN0b3JzKSAgfnByaXZhdGVfOihUIHByaXZhdGVfKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB0eWV4dF9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IHBhdGggY3R4ICh4LnB0eWV4dF9wYXRoKS5sb2MgKHgucHR5ZXh0X3BhdGgpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcGFyYW1zIGN0eCBsb2MgeC5wdHlleHRfcGFyYW1zIGsgaW5cbiAgICAgICAgICAgICAgbGV0IGsgPSBjb25zdHJ1Y3RvcnMgY3R4IGxvYyB4LnB0eWV4dF9jb25zdHJ1Y3RvcnMgayBpblxuICAgICAgICAgICAgICBsZXQgayA9IHByaXZhdGVfIGN0eCBsb2MgeC5wdHlleHRfcHJpdmF0ZSBrIGluIGspKVxubGV0IHB0eXBlX2Fic3RyYWN0ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX2Fic3RyYWN0IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJhYnN0cmFjdFwiKVxubGV0IHB0eXBlX3ZhcmlhbnQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgeDAgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInZhcmlhbnRcIilcbmxldCBwdHlwZV9yZWNvcmQgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB0eXBlX3JlY29yZCB4MCAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwicmVjb3JkXCIpXG5sZXQgcHR5cGVfb3BlbiA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQdHlwZV9vcGVuIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJvcGVuXCIpXG5sZXQgdmFsdWVfYmluZGluZ19hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmJfbG9jIGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgucHZiX2F0dHJpYnV0ZXMgayBpblxuICAgICAgICAgICAgIGxldCB4ID0geyB4IHdpdGggcHZiX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2JpbmRpbmcgfnBhdDooVCBwYXQpICB+ZXhwcjooVCBleHByKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB2Yl9hdHRyaWJ1dGVzO1xuICAgICAgICAgICAgIChsZXQgayA9IHBhdCBjdHggbG9jIHgucHZiX3BhdCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gZXhwciBjdHggbG9jIHgucHZiX2V4cHIgayBpbiBrKSlcbmxldCB2YWx1ZV9kZXNjcmlwdGlvbl9hdHRyaWJ1dGVzIChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gX2xvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBsZXQgbG9jID0geC5wdmFsX2xvYyBpblxuICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4LnB2YWxfYXR0cmlidXRlcyBrIGluXG4gICAgICAgICAgICAgbGV0IHggPSB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBbXSB9IGluXG4gICAgICAgICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHggayBpbiBrKVxubGV0IHZhbHVlX2Rlc2NyaXB0aW9uIH5uYW1lOihUIG5hbWUpICB+dHlwZV86KFQgdHlwZV8pICB+cHJpbTooVCBwcmltKSAgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyB4LnB2YWxfYXR0cmlidXRlcztcbiAgICAgICAgICAgICAobGV0IGsgPSBuYW1lIGN0eCAoeC5wdmFsX25hbWUpLmxvYyAoeC5wdmFsX25hbWUpLnR4dCBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gdHlwZV8gY3R4IGxvYyB4LnB2YWxfdHlwZSBrIGluXG4gICAgICAgICAgICAgIGxldCBrID0gcHJpbSBjdHggbG9jIHgucHZhbF9wcmltIGsgaW4gaykpXG5sZXQgY292YXJpYW50ID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENvdmFyaWFudCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiQ292YXJpYW50XCIpXG5sZXQgY29udHJhdmFyaWFudCA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBDb250cmF2YXJpYW50IC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb250cmF2YXJpYW50XCIpXG5sZXQgbm92YXJpYW5jZSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBOb1ZhcmlhbmNlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJOb1ZhcmlhbmNlXCIpXG5sZXQgdmlydHVhbF8gPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgVmlydHVhbCAtPiAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7IGspXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiVmlydHVhbFwiKVxubGV0IGNvbmNyZXRlID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IENvbmNyZXRlIC0+IChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTsgaylcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJDb25jcmV0ZVwiKVxubGV0IHB3aXRoX3R5cGUgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF90eXBlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpbiBrKSlcbiAgICAgICAgICAgICB8IF8gLT4gZmFpbCBsb2MgXCJ0eXBlXCIpXG5sZXQgcHdpdGhfbW9kdWxlIChUIGYwKSAoVCBmMSkgPVxuICBUXG4gICAgKGZ1biBjdHggLT5cbiAgICAgICBmdW4gbG9jIC0+XG4gICAgICAgICBmdW4geCAtPlxuICAgICAgICAgICBmdW4gayAtPlxuICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgIHwgUHdpdGhfbW9kdWxlICh4MCwgeDEpIC0+XG4gICAgICAgICAgICAgICAgIChjdHgubWF0Y2hlZCA8LSAoY3R4Lm1hdGNoZWQgKyAxKTtcbiAgICAgICAgICAgICAgICAgIChsZXQgayA9IGYwIGN0eCB4MC5sb2MgeDAudHh0IGsgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgayA9IGYxIGN0eCB4MS5sb2MgeDEudHh0IGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwibW9kdWxlXCIpXG5sZXQgcHdpdGhfbW9kdHlwZSAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX21vZHR5cGUgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVcIilcbmxldCBwd2l0aF9tb2R0eXBlc3Vic3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2R0eXBlc3Vic3QgKHgwLCB4MSkgLT5cbiAgICAgICAgICAgICAgICAgKGN0eC5tYXRjaGVkIDwtIChjdHgubWF0Y2hlZCArIDEpO1xuICAgICAgICAgICAgICAgICAgKGxldCBrID0gZjAgY3R4IHgwLmxvYyB4MC50eHQgayBpblxuICAgICAgICAgICAgICAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4MSBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHR5cGVzdWJzdFwiKVxubGV0IHB3aXRoX3R5cGVzdWJzdCAoVCBmMCkgKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IC0+XG4gICAgICAgZnVuIGxvYyAtPlxuICAgICAgICAgZnVuIHggLT5cbiAgICAgICAgICAgZnVuIGsgLT5cbiAgICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgICB8IFB3aXRoX3R5cGVzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggbG9jIHgxIGsgaW4gaykpXG4gICAgICAgICAgICAgfCBfIC0+IGZhaWwgbG9jIFwidHlwZXN1YnN0XCIpXG5sZXQgcHdpdGhfbW9kc3Vic3QgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCAtPlxuICAgICAgIGZ1biBsb2MgLT5cbiAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgIGZ1biBrIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBQd2l0aF9tb2RzdWJzdCAoeDAsIHgxKSAtPlxuICAgICAgICAgICAgICAgICAoY3R4Lm1hdGNoZWQgPC0gKGN0eC5tYXRjaGVkICsgMSk7XG4gICAgICAgICAgICAgICAgICAobGV0IGsgPSBmMCBjdHggeDAubG9jIHgwLnR4dCBrIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGsgPSBmMSBjdHggeDEubG9jIHgxLnR4dCBrIGluIGspKVxuICAgICAgICAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIm1vZHN1YnN0XCIpXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXN0X3BhdHRlcm4wXG5cbmxldCBzYXZlX2NvbnRleHQgY3R4ID0gY3R4Lm1hdGNoZWRcbmxldCByZXN0b3JlX2NvbnRleHQgY3R4IGJhY2t1cCA9IGN0eC5tYXRjaGVkIDwtIGJhY2t1cFxubGV0IGluY3JfbWF0Y2hlZCBjID0gYy5tYXRjaGVkIDwtIGMubWF0Y2hlZCArIDFcblxubGV0IHBhcnNlX3JlcyAoVCBmKSBsb2MgP29uX2Vycm9yIHggayA9XG4gIHRyeSBPayAoZiB7IG1hdGNoZWQgPSAwIH0gbG9jIHggaylcbiAgd2l0aCBFeHBlY3RlZCAobG9jLCBleHBlY3RlZCkgLT4gKFxuICAgIG1hdGNoIG9uX2Vycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gRXJyb3IgKExvY2F0aW9uLkVycm9yLmNyZWF0ZWYgfmxvYyBcIiVzIGV4cGVjdGVkXCIgZXhwZWN0ZWQsIFtdKVxuICAgIHwgU29tZSBmIC0+IE9rIChmICgpKSlcblxubGV0IHBhcnNlIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrID1cbiAgbWF0Y2ggcGFyc2VfcmVzIChUIGYpIGxvYyA/b25fZXJyb3IgeCBrIHdpdGhcbiAgfCBPayByIC0+IHJcbiAgfCBFcnJvciAociwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgclxuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9IFQgOiAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4wLnQgKiAnYiAtPiAoJ2EsICdjKSB0XG5cbiAgbGV0IGNyZWF0ZSB0IGYgPSBUICh0LCBmKVxuICBsZXQgcGFyc2VfcmVzIChUICh0LCBmKSkgbG9jIHggPSBwYXJzZV9yZXMgdCBsb2MgeCBmXG4gIGxldCBwYXJzZSAoVCAodCwgZikpIGxvYyB4ID0gcGFyc2UgdCBsb2MgeCBmXG5lbmRcblxubGV0IF9fID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgeCBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayB4KVxuXG5sZXQgX18nID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGluY3JfbWF0Y2hlZCBjdHg7XG4gICAgICBrIHsgbG9jOyB0eHQgPSB4IH0pXG5cbmxldCBkcm9wID1cbiAgVFxuICAgIChmdW4gY3R4IF9sb2MgXyBrIC0+XG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgaylcblxubGV0IGFzX18gKFQgZjEpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGxldCBrID0gZjEgY3R4IGxvYyB4IChrIHgpIGluXG4gICAgICBrKVxuXG5sZXQgY3N0IH50b19zdHJpbmcgPyhlcXVhbCA9IFBvbHkuZXF1YWwpIHYgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgaWYgZXF1YWwgeCB2IHRoZW4gKFxuICAgICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgICBrKVxuICAgICAgZWxzZSBmYWlsIGxvYyAodG9fc3RyaW5nIHYpKVxuXG5sZXQgaW50IHYgPSBjc3QgfnRvX3N0cmluZzpJbnQudG9fc3RyaW5nIHZcbmxldCBjaGFyIHYgPSBjc3QgfnRvX3N0cmluZzooUHJpbnRmLnNwcmludGYgXCIlQ1wiKSB2XG5sZXQgc3RyaW5nIHYgPSBjc3QgfnRvX3N0cmluZzooUHJpbnRmLnNwcmludGYgXCIlU1wiKSB2XG5sZXQgZmxvYXQgdiA9IGNzdCB+dG9fc3RyaW5nOkZsb2F0LnRvX3N0cmluZyB2XG5sZXQgaW50MzIgdiA9IGNzdCB+dG9fc3RyaW5nOkludDMyLnRvX3N0cmluZyB2XG5sZXQgaW50NjQgdiA9IGNzdCB+dG9fc3RyaW5nOkludDY0LnRvX3N0cmluZyB2XG5sZXQgbmF0aXZlaW50IHYgPSBjc3QgfnRvX3N0cmluZzpOYXRpdmVpbnQudG9fc3RyaW5nIHZcbmxldCBib29sIHYgPSBjc3QgfnRvX3N0cmluZzpCb29sLnRvX3N0cmluZyB2XG5cbmxldCBib29sJyAoVCBmdW5jKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgXCJ0cnVlXCIgLT4gZnVuYyBjdHggbG9jIHRydWUga1xuICAgICAgfCBcImZhbHNlXCIgLT4gZnVuYyBjdHggbG9jIGZhbHNlIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIkJvb2xcIilcblxubGV0IGZhbHNlXyA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiZmFsc2VcIilcblxubGV0IHRydWVfID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcInRydWVcIilcblxubGV0IG5pbCA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiW11cIilcblxubGV0ICggXjo6ICkgKFQgZjApIChUIGYxKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBsb2MgeCBrIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgeDAgOjogeDEgLT5cbiAgICAgICAgICBjdHgubWF0Y2hlZCA8LSBjdHgubWF0Y2hlZCArIDE7XG4gICAgICAgICAgbGV0IGsgPSBmMCBjdHggbG9jIHgwIGsgaW5cbiAgICAgICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIjo6XCIpXG5cbmxldCBub25lID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGtcbiAgICAgIHwgXyAtPiBmYWlsIGxvYyBcIk5vbmVcIilcblxubGV0IHNvbWUgKFQgZjApID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBTb21lIHgwIC0+XG4gICAgICAgICAgY3R4Lm1hdGNoZWQgPC0gY3R4Lm1hdGNoZWQgKyAxO1xuICAgICAgICAgIGxldCBrID0gZjAgY3R4IGxvYyB4MCBrIGluXG4gICAgICAgICAga1xuICAgICAgfCBfIC0+IGZhaWwgbG9jIFwiU29tZVwiKVxuXG5sZXQgcGFpciAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoeDEsIHgyKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgIGspXG5cbmxldCAoICoqICkgPSBwYWlyXG5cbmxldCB0cmlwbGUgKFQgZjEpIChUIGYyKSAoVCBmMykgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jICh4MSwgeDIsIHgzKSBrIC0+XG4gICAgICBsZXQgayA9IGYxIGN0eCBsb2MgeDEgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHgyIGsgaW5cbiAgICAgIGxldCBrID0gZjMgY3R4IGxvYyB4MyBrIGluXG4gICAgICBrKVxuXG5sZXQgYWx0IChUIGYxKSAoVCBmMikgPVxuICBUXG4gICAgKGZ1biBjdHggbG9jIHggayAtPlxuICAgICAgbGV0IGJhY2t1cCA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgIHRyeSBmMSBjdHggbG9jIHgga1xuICAgICAgd2l0aCBlMSAtPiAoXG4gICAgICAgIGxldCBtMSA9IHNhdmVfY29udGV4dCBjdHggaW5cbiAgICAgICAgcmVzdG9yZV9jb250ZXh0IGN0eCBiYWNrdXA7XG4gICAgICAgIHRyeSBmMiBjdHggbG9jIHgga1xuICAgICAgICB3aXRoIGUyIC0+XG4gICAgICAgICAgbGV0IG0yID0gc2F2ZV9jb250ZXh0IGN0eCBpblxuICAgICAgICAgIGlmIG0xID49IG0yIHRoZW4gKFxuICAgICAgICAgICAgcmVzdG9yZV9jb250ZXh0IGN0eCBtMTtcbiAgICAgICAgICAgIHJhaXNlIGUxKVxuICAgICAgICAgIGVsc2UgcmFpc2UgZTIpKVxuXG5sZXQgKCB8fHwgKSA9IGFsdFxubGV0IG1hcCAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZiBrKSlcbmxldCBtYXAnIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChmIGxvYyBrKSlcbmxldCBtYXBfcmVzdWx0IChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGYgKGZ1bmMgY3R4IGxvYyB4IGspKVxubGV0ICggPj58ICkgdCBmID0gbWFwIHQgfmZcbmxldCBtYXAwIChUIGZ1bmMpIH5mID0gVCAoZnVuIGN0eCBsb2MgeCBrIC0+IGZ1bmMgY3R4IGxvYyB4IChrIGYpKVxubGV0IG1hcDEgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIC0+IGsgKGYgYSkpKVxuXG5sZXQgbWFwMiAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgYiAtPiBrIChmIGEgYikpKVxuXG5sZXQgbWFwMCcgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGsgKGYgbG9jKSkpXG5cbmxldCBtYXAxJyAoVCBmdW5jKSB+ZiA9XG4gIFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgeCAoZnVuIGEgLT4gayAoZiBsb2MgYSkpKVxuXG5sZXQgbWFwMicgKFQgZnVuYykgfmYgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIHggKGZ1biBhIGIgLT4gayAoZiBsb2MgYSBiKSkpXG5cbmxldCBtYXBfdmFsdWUgKFQgZnVuYykgfmYgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZnVuYyBjdHggbG9jIChmIHgpIGspXG5sZXQgbWFwX3ZhbHVlJyAoVCBmdW5jKSB+ZiA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmdW5jIGN0eCBsb2MgKGYgbG9jIHgpIGspXG5cbmxldCBhbHRfb3B0aW9uIHNvbWUgbm9uZSA9XG4gIGFsdCAobWFwMSBzb21lIH5mOihmdW4geCAtPiBTb21lIHgpKSAobWFwMCBub25lIH5mOk5vbmUpXG5cbmxldCBtYW55IChUIGYpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyBsIGsgLT5cbiAgICAgIGxldCByZWMgYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+IGsgKExpc3QucmV2IGFjY3UpXG4gICAgICAgIHwgeCA6OiB4cyAtPiBmIGN0eCBsb2MgeCAoZnVuIHggLT4gYXV4ICh4IDo6IGFjY3UpIHhzKVxuICAgICAgaW5cbiAgICAgIGF1eCBbXSBsKVxuXG5sZXQgbG9jIChUIGYpID0gVCAoZnVuIGN0eCBfbG9jICh4IDogXyBMb2MudCkgayAtPiBmIGN0eCB4LmxvYyB4LnR4dCBrKVxubGV0IHBhY2swIHQgPSBtYXAgdCB+ZjooZnVuIGYgLT4gZiAoKSlcbmxldCBwYWNrMiB0ID0gbWFwIHQgfmY6KGZ1biBmIHggeSAtPiBmICh4LCB5KSlcbmxldCBwYWNrMyB0ID0gbWFwIHQgfmY6KGZ1biBmIHggeSB6IC0+IGYgKHgsIHksIHopKVxuXG5pbmNsdWRlIEFzdF9wYXR0ZXJuX2dlbmVyYXRlZFxuXG5sZXQgZWNoYXIgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9jaGFyIHQpXG5sZXQgZXN0cmluZyB0ID0gcGV4cF9jb25zdGFudCAocGNvbnN0X3N0cmluZyB0IGRyb3AgZHJvcClcbmxldCBlZmxvYXQgdCA9IHBleHBfY29uc3RhbnQgKHBjb25zdF9mbG9hdCB0IGRyb3ApXG5sZXQgcGNoYXIgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9jaGFyIHQpXG5sZXQgcHN0cmluZyB0ID0gcHBhdF9jb25zdGFudCAocGNvbnN0X3N0cmluZyB0IGRyb3AgZHJvcClcbmxldCBwZmxvYXQgdCA9IHBwYXRfY29uc3RhbnQgKHBjb25zdF9mbG9hdCB0IGRyb3ApXG5sZXQgaW50JyAoVCBmKSA9IFQgKGZ1biBjdHggbG9jIHggayAtPiBmIGN0eCBsb2MgKGludF9vZl9zdHJpbmcgeCkgaylcbmxldCBpbnQzMicgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChJbnQzMi5vZl9zdHJpbmcgeCkgaylcbmxldCBpbnQ2NCcgKFQgZikgPSBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChJbnQ2NC5vZl9zdHJpbmcgeCkgaylcblxubGV0IG5hdGl2ZWludCcgKFQgZikgPVxuICBUIChmdW4gY3R4IGxvYyB4IGsgLT4gZiBjdHggbG9jIChOYXRpdmVpbnQub2Zfc3RyaW5nIHgpIGspXG5cbmxldCBjb25zdF9pbnQgdCA9IHBjb25zdF9pbnRlZ2VyIChpbnQnIHQpIG5vbmVcbmxldCBjb25zdF9pbnQzMiB0ID0gcGNvbnN0X2ludGVnZXIgKGludDMyJyB0KSAoc29tZSAoY2hhciAnbCcpKVxubGV0IGNvbnN0X2ludDY0IHQgPSBwY29uc3RfaW50ZWdlciAoaW50NjQnIHQpIChzb21lIChjaGFyICdMJykpXG5sZXQgY29uc3RfbmF0aXZlaW50IHQgPSBwY29uc3RfaW50ZWdlciAobmF0aXZlaW50JyB0KSAoc29tZSAoY2hhciAnbicpKVxubGV0IGVpbnQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludCB0KVxubGV0IGVpbnQzMiB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfaW50MzIgdClcbmxldCBlaW50NjQgdCA9IHBleHBfY29uc3RhbnQgKGNvbnN0X2ludDY0IHQpXG5sZXQgZW5hdGl2ZWludCB0ID0gcGV4cF9jb25zdGFudCAoY29uc3RfbmF0aXZlaW50IHQpXG5sZXQgcGludCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50IHQpXG5sZXQgcGludDMyIHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9pbnQzMiB0KVxubGV0IHBpbnQ2NCB0ID0gcHBhdF9jb25zdGFudCAoY29uc3RfaW50NjQgdClcbmxldCBwbmF0aXZlaW50IHQgPSBwcGF0X2NvbnN0YW50IChjb25zdF9uYXRpdmVpbnQgdClcbmxldCBzaW5nbGVfZXhwcl9wYXlsb2FkIHQgPSBwc3RyIChwc3RyX2V2YWwgdCBuaWwgXjo6IG5pbClcbmxldCBub19sYWJlbCB0ID0gY3N0IEFzdHR5cGVzLk5vbGFiZWwgfnRvX3N0cmluZzooZnVuIF8gLT4gXCJOb2xhYmVsXCIpICoqIHRcbmxldCBlYm9vbCB0ID0gcGV4cF9jb25zdHJ1Y3QgKGxpZGVudCAoYm9vbCcgdCkpIG5vbmVcbmxldCBwYm9vbCB0ID0gcHBhdF9jb25zdHJ1Y3QgKGxpZGVudCAoYm9vbCcgdCkpIG5vbmVcblxubGV0IGV4dGVuc2lvbiAoVCBmMSkgKFQgZjIpID1cbiAgVFxuICAgIChmdW4gY3R4IGxvYyAoKG5hbWUgOiBfIExvYy50KSwgcGF5bG9hZCkgayAtPlxuICAgICAgbGV0IGsgPSBmMSBjdHggbmFtZS5sb2MgbmFtZS50eHQgayBpblxuICAgICAgbGV0IGsgPSBmMiBjdHggbG9jIHBheWxvYWQgayBpblxuICAgICAgaylcblxubGV0IHJlYyBwYXJzZV9lbGlzdCAoZSA6IFBhcnNldHJlZS5leHByZXNzaW9uKSBhY2MgPVxuICBDb21tb24uYXNzZXJ0X25vX2F0dHJpYnV0ZXMgZS5wZXhwX2F0dHJpYnV0ZXM7XG4gIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgfCBQZXhwX2NvbnN0cnVjdCAoeyB0eHQgPSBMaWRlbnQgXCJbXVwiOyBfIH0sIE5vbmUpIC0+IExpc3QucmV2IGFjY1xuICB8IFBleHBfY29uc3RydWN0ICh7IHR4dCA9IExpZGVudCBcIjo6XCI7IF8gfSwgU29tZSBhcmcpIC0+IChcbiAgICAgIENvbW1vbi5hc3NlcnRfbm9fYXR0cmlidXRlcyBhcmcucGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgbWF0Y2ggYXJnLnBleHBfZGVzYyB3aXRoXG4gICAgICB8IFBleHBfdHVwbGUgWyBoZDsgdGwgXSAtPiBwYXJzZV9lbGlzdCB0bCAoaGQgOjogYWNjKVxuICAgICAgfCBfIC0+IGZhaWwgYXJnLnBleHBfbG9jIFwibGlzdFwiKVxuICB8IF8gLT4gZmFpbCBlLnBleHBfbG9jIFwibGlzdFwiXG5cbmxldCBlbGlzdCAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIGUgayAtPlxuICAgICAgbGV0IGwgPSBwYXJzZV9lbGlzdCBlIFtdIGluXG4gICAgICBpbmNyX21hdGNoZWQgY3R4O1xuICAgICAgayAoTGlzdC5tYXAgbCB+ZjooZnVuIHggLT4gZiBjdHggeC5QYXJzZXRyZWUucGV4cF9sb2MgeCAoZnVuIHggLT4geCkpKSlcblxubGV0IGVzZXF1ZW5jZSAoVCBmKSA9XG4gIFRcbiAgICAoZnVuIGN0eCBfbG9jIGUgayAtPlxuICAgICAgbGV0IHJlYyBwYXJzZV9zZXEgZXhwciBhY2MgPVxuICAgICAgICBtYXRjaCBleHByLnBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9zZXF1ZW5jZSAoZXhwciwgbmV4dCkgLT4gcGFyc2Vfc2VxIG5leHQgKGV4cHIgOjogYWNjKVxuICAgICAgICB8IF8gLT4gZXhwciA6OiBhY2NcbiAgICAgIGluXG4gICAgICBrXG4gICAgICAgIChMaXN0LnJldl9tYXAgKHBhcnNlX3NlcSBlIFtdKSB+ZjooZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICBmIGN0eCBleHByLnBleHBfbG9jIGV4cHIgKGZ1biB4IC0+IHgpKSkpXG5cbmxldCBvZl9mdW5jIGYgPSBUIGZcbmxldCB0b19mdW5jIChUIGYpID0gZlxuIiwib3BlbiEgSW1wb3J0XG5cbmxldCBwb2x5X2VxdWFsIGEgYiA9XG4gIGxldCBtb2R1bGUgUG9seSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQgOiBfIC0+IHRcbiAgZW5kIGluXG4gIFN0ZHBweC5Qb2x5LmVxdWFsIChQb2x5LlQgYSkgKFBvbHkuVCBiKVxuXG5tb2R1bGUgQ29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gOiBsYWJlbF9kZWNsYXJhdGlvbiB0XG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiA6IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHRcbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gOiB0eXBlX2RlY2xhcmF0aW9uIHRcbiAgICB8IFR5cGVfZXhjZXB0aW9uIDogdHlwZV9leGNlcHRpb24gdFxuICAgIHwgVHlwZV9leHRlbnNpb24gOiB0eXBlX2V4dGVuc2lvbiB0XG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgOiBleHRlbnNpb25fY29uc3RydWN0b3IgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgQ29yZV90eXBlIDogY29yZV90eXBlIHRcbiAgICB8IEV4cHJlc3Npb24gOiBleHByZXNzaW9uIHRcbiAgICB8IFZhbHVlX2Rlc2NyaXB0aW9uIDogdmFsdWVfZGVzY3JpcHRpb24gdFxuICAgIHwgQ2xhc3NfdHlwZSA6IGNsYXNzX3R5cGUgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuICAgIHwgQ2xhc3NfaW5mb3MgOiBfIGNsYXNzX2luZm9zIHRcbiAgICB8IENsYXNzX2V4cHIgOiBjbGFzc19leHByIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgTW9kdWxlX3R5cGUgOiBtb2R1bGVfdHlwZSB0XG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfZGVjbGFyYXRpb24gdFxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gOiBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB0XG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIDogbW9kdWxlX3N1YnN0aXR1dGlvbiB0XG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIDogb3Blbl9kZXNjcmlwdGlvbiB0XG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIDogb3Blbl9kZWNsYXJhdGlvbiB0XG4gICAgfCBJbmNsdWRlX2luZm9zIDogXyBpbmNsdWRlX2luZm9zIHRcbiAgICB8IE1vZHVsZV9leHByIDogbW9kdWxlX2V4cHIgdFxuICAgIHwgVmFsdWVfYmluZGluZyA6IHZhbHVlX2JpbmRpbmcgdFxuICAgIHwgTW9kdWxlX2JpbmRpbmcgOiBtb2R1bGVfYmluZGluZyB0XG4gICAgfCBQc3RyX2V2YWwgOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBQc3RyX2V4dGVuc2lvbiA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBzaWdfZXh0ZW5zaW9uIDogc2lnbmF0dXJlX2l0ZW0gdFxuICAgIHwgUnRhZyA6IHJvd19maWVsZCB0XG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCA6IG9iamVjdF9maWVsZCB0XG5cbiAgbGV0IGxhYmVsX2RlY2xhcmF0aW9uID0gTGFiZWxfZGVjbGFyYXRpb25cbiAgbGV0IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uID0gQ29uc3RydWN0b3JfZGVjbGFyYXRpb25cbiAgbGV0IHR5cGVfZGVjbGFyYXRpb24gPSBUeXBlX2RlY2xhcmF0aW9uXG4gIGxldCB0eXBlX2V4dGVuc2lvbiA9IFR5cGVfZXh0ZW5zaW9uXG4gIGxldCB0eXBlX2V4Y2VwdGlvbiA9IFR5cGVfZXhjZXB0aW9uXG4gIGxldCBleHRlbnNpb25fY29uc3RydWN0b3IgPSBFeHRlbnNpb25fY29uc3RydWN0b3JcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBjb3JlX3R5cGUgPSBDb3JlX3R5cGVcbiAgbGV0IGV4cHJlc3Npb24gPSBFeHByZXNzaW9uXG4gIGxldCB2YWx1ZV9kZXNjcmlwdGlvbiA9IFZhbHVlX2Rlc2NyaXB0aW9uXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNsYXNzX2luZm9zID0gQ2xhc3NfaW5mb3NcbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBtb2R1bGVfdHlwZSA9IE1vZHVsZV90eXBlXG4gIGxldCBtb2R1bGVfZGVjbGFyYXRpb24gPSBNb2R1bGVfZGVjbGFyYXRpb25cbiAgbGV0IG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uID0gTW9kdWxlX3R5cGVfZGVjbGFyYXRpb25cbiAgbGV0IG9wZW5fZGVzY3JpcHRpb24gPSBPcGVuX2Rlc2NyaXB0aW9uXG4gIGxldCBpbmNsdWRlX2luZm9zID0gSW5jbHVkZV9pbmZvc1xuICBsZXQgbW9kdWxlX2V4cHIgPSBNb2R1bGVfZXhwclxuICBsZXQgdmFsdWVfYmluZGluZyA9IFZhbHVlX2JpbmRpbmdcbiAgbGV0IG1vZHVsZV9iaW5kaW5nID0gTW9kdWxlX2JpbmRpbmdcbiAgbGV0IHBzdHJfZXZhbCA9IFBzdHJfZXZhbFxuICBsZXQgcHN0cl9leHRlbnNpb24gPSBQc3RyX2V4dGVuc2lvblxuICBsZXQgcHNpZ19leHRlbnNpb24gPSBQc2lnX2V4dGVuc2lvblxuICBsZXQgcnRhZyA9IFJ0YWdcbiAgbGV0IG9iamVjdF90eXBlX2ZpZWxkID0gT2JqZWN0X3R5cGVfZmllbGRcblxuICBsZXQgZ2V0X3BzdHJfZXZhbCBzdCA9XG4gICAgbWF0Y2ggc3QucHN0cl9kZXNjIHdpdGhcbiAgICB8IFBzdHJfZXZhbCAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzdHJfZXZhbFwiXG5cbiAgbGV0IGdldF9wc3RyX2V4dGVuc2lvbiBzdCA9XG4gICAgbWF0Y2ggc3QucHN0cl9kZXNjIHdpdGhcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIChlLCBsKSAtPiAoZSwgbClcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuQ29udGV4dC5nZXRfcHN0cl9leHRlbnNpb25cIlxuXG4gIGxldCBnZXRfcHNpZ19leHRlbnNpb24gc3QgPVxuICAgIG1hdGNoIHN0LnBzaWdfZGVzYyB3aXRoXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAoZSwgbCkgLT4gKGUsIGwpXG4gICAgfCBfIC0+IGZhaWx3aXRoIFwiQXR0cmlidXRlLkNvbnRleHQuZ2V0X3BzaWdfZXh0ZW5zaW9uXCJcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZXMgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZXMgPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4geC5wbGRfYXR0cmlidXRlc1xuICAgIHwgQ29uc3RydWN0b3JfZGVjbGFyYXRpb24gLT4geC5wY2RfYXR0cmlidXRlc1xuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiB4LnB0eXBlX2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IHgucHR5ZXh0X2F0dHJpYnV0ZXNcbiAgICB8IFR5cGVfZXhjZXB0aW9uIC0+IHgucHR5ZXhuX2F0dHJpYnV0ZXNcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiB4LnBleHRfYXR0cmlidXRlc1xuICAgIHwgUGF0dGVybiAtPiB4LnBwYXRfYXR0cmlidXRlc1xuICAgIHwgQ29yZV90eXBlIC0+IHgucHR5cF9hdHRyaWJ1dGVzXG4gICAgfCBFeHByZXNzaW9uIC0+IHgucGV4cF9hdHRyaWJ1dGVzXG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiB4LnB2YWxfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfdHlwZSAtPiB4LnBjdHlfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPiB4LnBjdGZfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfaW5mb3MgLT4geC5wY2lfYXR0cmlidXRlc1xuICAgIHwgQ2xhc3NfZXhwciAtPiB4LnBjbF9hdHRyaWJ1dGVzXG4gICAgfCBDbGFzc19maWVsZCAtPiB4LnBjZl9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfdHlwZSAtPiB4LnBtdHlfYXR0cmlidXRlc1xuICAgIHwgTW9kdWxlX2RlY2xhcmF0aW9uIC0+IHgucG1kX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIC0+IHgucG10ZF9hdHRyaWJ1dGVzXG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHgucG1zX2F0dHJpYnV0ZXNcbiAgICB8IE9wZW5fZGVzY3JpcHRpb24gLT4geC5wb3Blbl9hdHRyaWJ1dGVzXG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IHgucG9wZW5fYXR0cmlidXRlc1xuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiB4LnBpbmNsX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9leHByIC0+IHgucG1vZF9hdHRyaWJ1dGVzXG4gICAgfCBWYWx1ZV9iaW5kaW5nIC0+IHgucHZiX2F0dHJpYnV0ZXNcbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IHgucG1iX2F0dHJpYnV0ZXNcbiAgICB8IFBzdHJfZXZhbCAtPiBzbmQgKGdldF9wc3RyX2V2YWwgeClcbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+IHNuZCAoZ2V0X3BzdHJfZXh0ZW5zaW9uIHgpXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPiBzbmQgKGdldF9wc2lnX2V4dGVuc2lvbiB4KVxuICAgIHwgUnRhZyAtPiB4LnByZl9hdHRyaWJ1dGVzXG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiB4LnBvZl9hdHRyaWJ1dGVzXG5cbiAgbGV0IHNldF9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcGxkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwY2RfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcHR5cGVfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IFR5cGVfZXh0ZW5zaW9uIC0+IHsgeCB3aXRoIHB0eWV4dF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVHlwZV9leGNlcHRpb24gLT4geyB4IHdpdGggcHR5ZXhuX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBFeHRlbnNpb25fY29uc3RydWN0b3IgLT4geyB4IHdpdGggcGV4dF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDb3JlX3R5cGUgLT4geyB4IHdpdGggcHR5cF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgRXhwcmVzc2lvbiAtPiB7IHggd2l0aCBwZXhwX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBWYWx1ZV9kZXNjcmlwdGlvbiAtPiB7IHggd2l0aCBwdmFsX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geyB4IHdpdGggcGN0Zl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfaW5mb3MgLT4geyB4IHdpdGggcGNpX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBDbGFzc19leHByIC0+IHsgeCB3aXRoIHBjbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgQ2xhc3NfZmllbGQgLT4geyB4IHdpdGggcGNmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZSAtPiB7IHggd2l0aCBwbXR5X2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4geyB4IHdpdGggcG1kX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwbXRkX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IHsgeCB3aXRoIHBtc19hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT3Blbl9kZXNjcmlwdGlvbiAtPiB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgT3Blbl9kZWNsYXJhdGlvbiAtPiB7IHggd2l0aCBwb3Blbl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgSW5jbHVkZV9pbmZvcyAtPiB7IHggd2l0aCBwaW5jbF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgTW9kdWxlX2V4cHIgLT4geyB4IHdpdGggcG1vZF9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgVmFsdWVfYmluZGluZyAtPiB7IHggd2l0aCBwdmJfYXR0cmlidXRlcyA9IGF0dHJzIH1cbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IHsgeCB3aXRoIHBtYl9hdHRyaWJ1dGVzID0gYXR0cnMgfVxuICAgIHwgUHN0cl9ldmFsIC0+XG4gICAgICAgIHsgeCB3aXRoIHBzdHJfZGVzYyA9IFBzdHJfZXZhbCAoZ2V0X3BzdHJfZXZhbCB4IHw+IGZzdCwgYXR0cnMpIH1cbiAgICB8IFBzdHJfZXh0ZW5zaW9uIC0+XG4gICAgICAgIHtcbiAgICAgICAgICB4IHdpdGhcbiAgICAgICAgICBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZ2V0X3BzdHJfZXh0ZW5zaW9uIHggfD4gZnN0LCBhdHRycyk7XG4gICAgICAgIH1cbiAgICB8IFBzaWdfZXh0ZW5zaW9uIC0+XG4gICAgICAgIHtcbiAgICAgICAgICB4IHdpdGhcbiAgICAgICAgICBwc2lnX2Rlc2MgPSBQc2lnX2V4dGVuc2lvbiAoZ2V0X3BzaWdfZXh0ZW5zaW9uIHggfD4gZnN0LCBhdHRycyk7XG4gICAgICAgIH1cbiAgICB8IFJ0YWcgLT4geyB4IHdpdGggcHJmX2F0dHJpYnV0ZXMgPSBhdHRycyB9XG4gICAgfCBPYmplY3RfdHlwZV9maWVsZCAtPiB7IHggd2l0aCBwb2ZfYXR0cmlidXRlcyA9IGF0dHJzIH1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBMYWJlbF9kZWNsYXJhdGlvbiAtPiBcImxhYmVsIGRlY2xhcmF0aW9uXCJcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IFwiY29uc3RydWN0b3IgZGVjbGFyYXRpb25cIlxuICAgIHwgVHlwZV9kZWNsYXJhdGlvbiAtPiBcInR5cGUgZGVjbGFyYXRpb25cIlxuICAgIHwgVHlwZV9leHRlbnNpb24gLT4gXCJ0eXBlIGV4dGVuc2lvblwiXG4gICAgfCBUeXBlX2V4Y2VwdGlvbiAtPiBcInR5cGUgZXhjZXB0aW9uXCJcbiAgICB8IEV4dGVuc2lvbl9jb25zdHJ1Y3RvciAtPiBcImV4dGVuc2lvbiBjb25zdHJ1Y3RvclwiXG4gICAgfCBQYXR0ZXJuIC0+IFwicGF0dGVyblwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgVmFsdWVfZGVzY3JpcHRpb24gLT4gXCJ2YWx1ZVwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDbGFzc19pbmZvcyAtPiBcImNsYXNzIGRlY2xhcmF0aW9uXCJcbiAgICB8IENsYXNzX2V4cHIgLT4gXCJjbGFzcyBleHByZXNzaW9uXCJcbiAgICB8IENsYXNzX2ZpZWxkIC0+IFwiY2xhc3MgZmllbGRcIlxuICAgIHwgTW9kdWxlX3R5cGUgLT4gXCJtb2R1bGUgdHlwZVwiXG4gICAgfCBNb2R1bGVfZGVjbGFyYXRpb24gLT4gXCJtb2R1bGUgZGVjbGFyYXRpb25cIlxuICAgIHwgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gLT4gXCJtb2R1bGUgdHlwZSBkZWNsYXJhdGlvblwiXG4gICAgfCBNb2R1bGVfc3Vic3RpdHV0aW9uIC0+IFwibW9kdWxlIHN1YnN0aXR1dGlvblwiXG4gICAgfCBPcGVuX2Rlc2NyaXB0aW9uIC0+IFwib3BlblwiXG4gICAgfCBPcGVuX2RlY2xhcmF0aW9uIC0+IFwib3BlblwiXG4gICAgfCBJbmNsdWRlX2luZm9zIC0+IFwiaW5jbHVkZVwiXG4gICAgfCBNb2R1bGVfZXhwciAtPiBcIm1vZHVsZSBleHByZXNzaW9uXCJcbiAgICB8IFZhbHVlX2JpbmRpbmcgLT4gXCJ2YWx1ZSBiaW5kaW5nXCJcbiAgICB8IE1vZHVsZV9iaW5kaW5nIC0+IFwibW9kdWxlIGJpbmRpbmdcIlxuICAgIHwgUHN0cl9ldmFsIC0+IFwidG9wbGV2ZWwgZXhwcmVzc2lvblwiXG4gICAgfCBQc3RyX2V4dGVuc2lvbiAtPiBcInRvcGxldmVsIGV4dGVuc2lvblwiXG4gICAgfCBQc2lnX2V4dGVuc2lvbiAtPiBcInRvcGxldmVsIHNpZ25hdHVyZSBleHRlbnNpb25cIlxuICAgIHwgUnRhZyAtPiBcInBvbHltb3JwaGljIHZhcmlhbnQgdGFnXCJcbiAgICB8IE9iamVjdF90eXBlX2ZpZWxkIC0+IFwib2JqZWN0IHR5cGUgZmllbGRcIlxuXG4gICgqXG4gIGxldCBwYXR0ZXJuIDogdHlwZSBhIGIgYyBkLiBhIHRcbiAgICAtPiAoYXR0cmlidXRlcywgYiwgYykgQXN0X3BhdHRlcm4udFxuICAgIC0+IChhLCBjLCBkKSBBc3RfcGF0dGVybi50XG4gICAgLT4gKGEsIGIsIGQpIEFzdF9wYXR0ZXJuLnQgPSBmdW5jdGlvblxuICAgIHwgTGFiZWxfZGVjbGFyYXRpb24gICAgICAgLT4gQXN0X3BhdHRlcm4ucGxkX2F0dHJpYnV0ZXNcbiAgICB8IENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IEFzdF9wYXR0ZXJuLnBjZF9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2RlY2xhcmF0aW9uICAgICAgICAtPiBBc3RfcGF0dGVybi5wdHlwZV9hdHRyaWJ1dGVzXG4gICAgfCBUeXBlX2V4dGVuc2lvbiAgICAgICAgICAtPiBBc3RfcGF0dGVybi5wdHlleHRfYXR0cmlidXRlc1xuICAgIHwgRXh0ZW5zaW9uX2NvbnN0cnVjdG9yICAgLT4gQXN0X3BhdHRlcm4ucGV4dF9hdHRyaWJ1dGVzXG4qKVxuXG4gIGxldCBlcXVhbCA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IHBvbHlfZXF1YWxcbmVuZFxuXG5tb2R1bGUgRmxvYXRpbmdfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHwgU3RydWN0dXJlX2l0ZW0gOiBzdHJ1Y3R1cmVfaXRlbSB0XG4gICAgfCBTaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIHRcbiAgICB8IENsYXNzX2ZpZWxkIDogY2xhc3NfZmllbGQgdFxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCA6IGNsYXNzX3R5cGVfZmllbGQgdFxuXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlX2ZpZWxkID0gQ2xhc3NfdHlwZV9maWVsZFxuXG4gIGxldCBnZXRfYXR0cmlidXRlX2lmX2lzX2Zsb2F0aW5nX25vZGUgOiB0eXBlIGEuIGEgdCAtPiBhIC0+IGF0dHJpYnV0ZSBvcHRpb24gPVxuICAgZnVuIHQgeCAtPlxuICAgIG1hdGNoICh0LCB4KSB3aXRoXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBTaWduYXR1cmVfaXRlbSwgeyBwc2lnX2Rlc2MgPSBQc2lnX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9hdHRyaWJ1dGUgYTsgXyB9IC0+IFNvbWUgYVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCwgeyBwY3RmX2Rlc2MgPSBQY3RmX2F0dHJpYnV0ZSBhOyBfIH0gLT4gU29tZSBhXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2F0dHJpYnV0ZSB0IHggPVxuICAgIG1hdGNoIGdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSB0IHggd2l0aFxuICAgIHwgU29tZSBhIC0+IGFcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dC5nZXRfYXR0cmlidXRlXCJcblxuICBsZXQgcmVwbGFjZV9ieV9kdW1teSA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gYSA9XG4gICAgbGV0IGR1bW15X2V4dCA9ICh7IHR4dCA9IFwiXCI7IGxvYyA9IExvY2F0aW9uLm5vbmUgfSwgUFN0ciBbXSkgaW5cbiAgICBmdW4gdCB4IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4geyB4IHdpdGggcHN0cl9kZXNjID0gUHN0cl9leHRlbnNpb24gKGR1bW15X2V4dCwgW10pIH1cbiAgICAgIHwgU2lnbmF0dXJlX2l0ZW0gLT4geyB4IHdpdGggcHNpZ19kZXNjID0gUHNpZ19leHRlbnNpb24gKGR1bW15X2V4dCwgW10pIH1cbiAgICAgIHwgQ2xhc3NfZmllbGQgLT4geyB4IHdpdGggcGNmX2Rlc2MgPSBQY2ZfZXh0ZW5zaW9uIGR1bW15X2V4dCB9XG4gICAgICB8IENsYXNzX3R5cGVfZmllbGQgLT4geyB4IHdpdGggcGN0Zl9kZXNjID0gUGN0Zl9leHRlbnNpb24gZHVtbXlfZXh0IH1cblxuICBsZXQgZGVzYyA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSAtPiBcInN0cnVjdHVyZSBpdGVtXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG5cbiAgbGV0IGVxdWFsIDogXyB0IC0+IF8gdCAtPiBib29sID0gcG9seV9lcXVhbFxuZW5kXG5cbnR5cGUgcGFja2VkX2NvbnRleHQgPVxuICB8IE9uX2l0ZW0gOiBfIENvbnRleHQudCAtPiBwYWNrZWRfY29udGV4dFxuICB8IEZsb2F0aW5nIDogXyBGbG9hdGluZ19jb250ZXh0LnQgLT4gcGFja2VkX2NvbnRleHRcblxudHlwZSBfIHBheWxvYWRfcGFyc2VyID1cbiAgfCBQYXlsb2FkX3BhcnNlciA6XG4gICAgICAocGF5bG9hZCwgJ2EsICdiKSBBc3RfcGF0dGVybi50XG4gICAgICAqIChhdHRyX2xvYzpMb2NhdGlvbi50IC0+IG5hbWVfbG9jOkxvY2F0aW9uLnQgLT4gJ2EpXG4gICAgICAtPiAnYiBwYXlsb2FkX3BhcnNlclxuXG50eXBlICgnYSwgJ2IpIHQgPSB7XG4gIG5hbWUgOiBOYW1lLlBhdHRlcm4udDtcbiAgY29udGV4dCA6ICdhIENvbnRleHQudDtcbiAgcGF5bG9hZCA6ICdiIHBheWxvYWRfcGFyc2VyO1xufVxuXG50eXBlIHBhY2tlZCA9IFQgOiAoXywgXykgdCAtPiBwYWNrZWRcblxubGV0IG5hbWUgdCA9IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZVxubGV0IGNvbnRleHQgdCA9IHQuY29udGV4dFxuXG5sZXQgcmVnaXN0cmFyID1cbiAgTmFtZS5SZWdpc3RyYXIuY3JlYXRlIH5raW5kOlwiYXR0cmlidXRlXCIgfmN1cnJlbnRfZmlsZTpfX0ZJTEVfX1xuICAgIH5zdHJpbmdfb2ZfY29udGV4dDooZnVuY3Rpb25cbiAgICB8IE9uX2l0ZW0gdCAtPiBTb21lIChDb250ZXh0LmRlc2MgdClcbiAgICB8IEZsb2F0aW5nIHQgLT4gU29tZSAoRmxvYXRpbmdfY29udGV4dC5kZXNjIHQgXiBcIiAoZmxvYXRpbmcpXCIpKVxuXG5sZXQgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBOYW1lLlJlZ2lzdHJhci5yZWdpc3RlciB+a2luZDpgQXR0cmlidXRlIHJlZ2lzdHJhciAoT25faXRlbSBjb250ZXh0KSBuYW1lO1xuICB7XG4gICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgY29udGV4dDtcbiAgICBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspO1xuICB9XG5cbmxldCBkZWNsYXJlIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2M6XyAtPiBrKVxuXG5sZXQgZGVjbGFyZV93aXRoX25hbWVfbG9jIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2M6XyB+bmFtZV9sb2MgLT5cbiAgICAgIGsgfm5hbWVfbG9jKVxuXG5sZXQgZGVjbGFyZV93aXRoX2F0dHJfbG9jIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBkZWNsYXJlX3dpdGhfYWxsX2FyZ3MgbmFtZSBjb250ZXh0IHBhdHRlcm4gKGZ1biB+YXR0cl9sb2Mgfm5hbWVfbG9jOl8gLT5cbiAgICAgIGsgfmF0dHJfbG9jKVxuXG50eXBlICdhIGZsYWcgPSAoJ2EsIHVuaXQpIHRcblxubGV0IGRlY2xhcmVfZmxhZyBuYW1lIGNvbnRleHQgPVxuICBsZXQgcGF5bG9hZF9wYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgbmlsKSBpblxuICBsZXQgY29udGludWF0aW9uIH5hdHRyX2xvYzpfIH5uYW1lX2xvYzpfID0gKCkgaW5cbiAgZGVjbGFyZV93aXRoX2FsbF9hcmdzIG5hbWUgY29udGV4dCBwYXlsb2FkX3BhdHRlcm4gY29udGludWF0aW9uXG5cbm1vZHVsZSBBdHRyaWJ1dGVfdGFibGUgPSBTdGRsaWIuSGFzaHRibC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxvY1xuXG4gIGxldCBub3JtYWxpemUgdCA9IHsgdCB3aXRoIGxvYyA9IHsgdC5sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gfVxuICBsZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIChub3JtYWxpemUgdClcbiAgbGV0IGVxdWFsIHggeSA9IFBvbHkuZXF1YWwgKG5vcm1hbGl6ZSB4KSAobm9ybWFsaXplIHkpXG5lbmQpXG5cbmxldCBub3Rfc2VlbiA9IEF0dHJpYnV0ZV90YWJsZS5jcmVhdGUgMTI4XG5sZXQgbWFya19hc19zZWVuIHsgYXR0cl9uYW1lOyBfIH0gPSBBdHRyaWJ1dGVfdGFibGUucmVtb3ZlIG5vdF9zZWVuIGF0dHJfbmFtZVxubGV0IG1hcmtfYXNfaGFuZGxlZF9tYW51YWxseSA9IG1hcmtfYXNfc2VlblxuXG5sZXQgZXhwbGljaXRseV9kcm9wID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXJcbiAgICBtZXRob2QhIGF0dHJpYnV0ZSA9IG1hcmtfYXNfc2VlblxuICBlbmRcblxubGV0IGdldF9pbnRlcm5hbCA9XG4gIGxldCByZWMgZmluZF9iZXN0X21hdGNoIHQgYXR0cmlidXRlcyBsb25nZXN0X21hdGNoID1cbiAgICBtYXRjaCBhdHRyaWJ1dGVzIHdpdGhcbiAgICB8IFtdIC0+IE9rIGxvbmdlc3RfbWF0Y2hcbiAgICB8ICh7IGF0dHJfbmFtZSA9IG5hbWU7IF8gfSBhcyBhdHRyKSA6OiByZXN0IC0+XG4gICAgICAgIGlmIE5hbWUuUGF0dGVybi5tYXRjaGVzIHQubmFtZSBuYW1lLnR4dCB0aGVuXG4gICAgICAgICAgbWF0Y2ggbG9uZ2VzdF9tYXRjaCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgKFNvbWUgYXR0cilcbiAgICAgICAgICB8IFNvbWUgeyBhdHRyX25hbWUgPSBuYW1lJzsgXyB9IC0+XG4gICAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIG5hbWUudHh0IGluXG4gICAgICAgICAgICAgIGxldCBsZW4nID0gU3RyaW5nLmxlbmd0aCBuYW1lJy50eHQgaW5cbiAgICAgICAgICAgICAgaWYgbGVuID4gbGVuJyB0aGVuIGZpbmRfYmVzdF9tYXRjaCB0IHJlc3QgKFNvbWUgYXR0cilcbiAgICAgICAgICAgICAgZWxzZSBpZiBsZW4gPCBsZW4nIHRoZW4gZmluZF9iZXN0X21hdGNoIHQgcmVzdCBsb25nZXN0X21hdGNoXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2MgXCJEdXBsaWNhdGVkIGF0dHJpYnV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2UgZmluZF9iZXN0X21hdGNoIHQgcmVzdCBsb25nZXN0X21hdGNoXG4gIGluXG4gIGZ1biB0IGF0dHJpYnV0ZXMgLT4gZmluZF9iZXN0X21hdGNoIHQgYXR0cmlidXRlcyBOb25lXG5cbmxldCBjb252ZXJ0ID8oZG9fbWFya19hc19zZWVuID0gdHJ1ZSkgcGF0dGVybiBhdHRyID1cbiAgaWYgZG9fbWFya19hc19zZWVuIHRoZW4gbWFya19hc19zZWVuIGF0dHI7XG4gIGxldCAoUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGspKSA9IHBhdHRlcm4gaW5cbiAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm5cbiAgICAoQ29tbW9uLmxvY19vZl9wYXlsb2FkIGF0dHIpXG4gICAgYXR0ci5hdHRyX3BheWxvYWRcbiAgICAoayB+YXR0cl9sb2M6YXR0ci5hdHRyX2xvYyB+bmFtZV9sb2M6YXR0ci5hdHRyX25hbWUubG9jKVxuXG5sZXQgZ2V0X3JlcyB0ID9tYXJrX2FzX3NlZW46ZG9fbWFya19hc19zZWVuIHggPVxuICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgbGV0IGF0dHJzID0gQ29udGV4dC5nZXRfYXR0cmlidXRlcyB0LmNvbnRleHQgeCBpblxuICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICBtYXRjaCByZXMgd2l0aFxuICB8IE5vbmUgLT4gT2sgTm9uZVxuICB8IFNvbWUgYXR0ciAtPlxuICAgICAgY29udmVydCB0LnBheWxvYWQgYXR0ciA/ZG9fbWFya19hc19zZWVuID4+fCBmdW4gdmFsdWUgLT4gU29tZSB2YWx1ZVxuXG5sZXQgZ2V0IHQgP21hcmtfYXNfc2Vlbjpkb19tYXJrX2FzX3NlZW4geCA9XG4gIGdldF9yZXMgdCA/bWFya19hc19zZWVuOmRvX21hcmtfYXNfc2VlbiB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCBoYXNfZmxhZ19yZXMgdCA/bWFya19hc19zZWVuIHggPVxuICBtYXRjaCBnZXRfcmVzID9tYXJrX2FzX3NlZW4gdCB4IHdpdGhcbiAgfCBPayAoU29tZSAoKSkgLT4gT2sgdHJ1ZVxuICB8IE9rIE5vbmUgLT4gT2sgZmFsc2VcbiAgfCBFcnJvciBfIGFzIGUgLT4gZVxuXG5sZXQgaGFzX2ZsYWcgdCA/bWFya19hc19zZWVuIHggPVxuICBoYXNfZmxhZ19yZXMgdCA/bWFya19hc19zZWVuIHhcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IGNvbnN1bWVfcmVzIHQgeCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgYXR0cnMgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGVzIHQuY29udGV4dCB4IGluXG4gIGdldF9pbnRlcm5hbCB0IGF0dHJzID4+PSBmdW4gcmVzIC0+XG4gIG1hdGNoIHJlcyB3aXRoXG4gIHwgTm9uZSAtPiBPayBOb25lXG4gIHwgU29tZSBhdHRyIC0+XG4gICAgICBsZXQgYXR0cnMgPSBMaXN0LmZpbHRlciBhdHRycyB+ZjooZnVuIGF0dHInIC0+IG5vdCAoYXR0ciA9PSBhdHRyJykpIGluXG4gICAgICBsZXQgeCA9IENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgdC5jb250ZXh0IHggYXR0cnMgaW5cbiAgICAgIGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgPj58IGZ1biB2YWx1ZSAtPiBTb21lICh4LCB2YWx1ZSlcblxubGV0IGNvbnN1bWUgdCB4ID1cbiAgY29uc3VtZV9yZXMgdCB4XG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5cbmxldCByZW1vdmVfc2Vlbl9yZXMgKHR5cGUgYSkgKGNvbnRleHQgOiBhIENvbnRleHQudCkgcGFja2VkcyAoeCA6IGEpID1cbiAgbGV0IG9wZW4gUmVzdWx0IGluXG4gIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCB4IGluXG4gIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gT2sgYWNjXG4gICAgfCBUIHQgOjogcmVzdCAtPlxuICAgICAgICBpZiBDb250ZXh0LmVxdWFsIHQuY29udGV4dCBjb250ZXh0IHRoZW5cbiAgICAgICAgICBnZXRfaW50ZXJuYWwgdCBhdHRycyA+Pj0gZnVuIHJlcyAtPlxuICAgICAgICAgIG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgYWNjIHJlc3RcbiAgICAgICAgICB8IFNvbWUgYXR0ciAtPlxuICAgICAgICAgICAgICBsZXQgbmFtZSA9IGF0dHIuYXR0cl9uYW1lIGluXG4gICAgICAgICAgICAgIGlmIEF0dHJpYnV0ZV90YWJsZS5tZW0gbm90X3NlZW4gbmFtZSB0aGVuIGxvb3AgYWNjIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBsb29wIChhdHRyIDo6IGFjYykgcmVzdFxuICAgICAgICBlbHNlIGxvb3AgYWNjIHJlc3RcbiAgaW5cbiAgbG9vcCBbXSBwYWNrZWRzID4+fCBmdW4gbWF0Y2hlZCAtPlxuICBsZXQgYXR0cnMgPVxuICAgIExpc3QuZmlsdGVyIGF0dHJzIH5mOihmdW4gYXR0cicgLT4gbm90IChMaXN0Lm1lbXEgfnNldDptYXRjaGVkIGF0dHInKSlcbiAgaW5cbiAgQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IHggYXR0cnNcblxubGV0IHJlbW92ZV9zZWVuICh0eXBlIGEpIChjb250ZXh0IDogYSBDb250ZXh0LnQpIHBhY2tlZHMgKHggOiBhKSA9XG4gIHJlbW92ZV9zZWVuX3JlcyAoY29udGV4dCA6IGEgQ29udGV4dC50KSBwYWNrZWRzICh4IDogYSlcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IHBhdHRlcm5fcmVzIHQgcCA9XG4gIGxldCBvcGVuIFJlc3VsdCBpblxuICBsZXQgZiA9IEFzdF9wYXR0ZXJuLnRvX2Z1bmMgcCBpblxuICBBc3RfcGF0dGVybi5vZl9mdW5jIChmdW4gY3R4IGxvYyB4IGsgLT5cbiAgICAgIGNvbnN1bWVfcmVzIHQgeCA+PnwgZnVuIHJlcyAtPlxuICAgICAgbWF0Y2ggcmVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmIGN0eCBsb2MgeCAoayBOb25lKVxuICAgICAgfCBTb21lICh4LCB2KSAtPiBmIGN0eCBsb2MgeCAoayAoU29tZSB2KSkpXG5cbmxldCBwYXR0ZXJuIHQgcCA9XG4gIHBhdHRlcm5fcmVzIHQgcCB8PiBBc3RfcGF0dGVybi50b19mdW5jXG4gIHw+IChmdW4gZiBhIGIgYyBkIC0+XG4gICAgICAgZiBhIGIgYyBkXG4gICAgICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycikpXG4gIHw+IEFzdF9wYXR0ZXJuLm9mX2Z1bmNcblxubW9kdWxlIEZsb2F0aW5nID0gc3RydWN0XG4gIG1vZHVsZSBDb250ZXh0ID0gRmxvYXRpbmdfY29udGV4dFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9IHtcbiAgICBuYW1lIDogTmFtZS5QYXR0ZXJuLnQ7XG4gICAgY29udGV4dCA6ICdhIENvbnRleHQudDtcbiAgICBwYXlsb2FkIDogJ2IgcGF5bG9hZF9wYXJzZXI7XG4gIH1cblxuICBsZXQgbmFtZSB0ID0gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEF0dHJpYnV0ZSByZWdpc3RyYXIgKEZsb2F0aW5nIGNvbnRleHQpIG5hbWU7XG4gICAge1xuICAgICAgbmFtZSA9IE5hbWUuUGF0dGVybi5tYWtlIG5hbWU7XG4gICAgICBjb250ZXh0O1xuICAgICAgcGF5bG9hZCA9IFBheWxvYWRfcGFyc2VyIChwYXR0ZXJuLCBmdW4gfmF0dHJfbG9jOl8gfm5hbWVfbG9jOl8gLT4gayk7XG4gICAgfVxuXG4gIGxldCBjb252ZXJ0X3JlcyB0cyB4ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBtYXRjaCB0cyB3aXRoXG4gICAgfCBbXSAtPiBPayBOb25lXG4gICAgfCB7IGNvbnRleHQ7IF8gfSA6OiBfIC0+IChcbiAgICAgICAgYXNzZXJ0IChMaXN0LmZvcl9hbGwgdHMgfmY6KGZ1biB0IC0+IENvbnRleHQuZXF1YWwgdC5jb250ZXh0IGNvbnRleHQpKTtcbiAgICAgICAgbGV0IGF0dHIgPSBDb250ZXh0LmdldF9hdHRyaWJ1dGUgY29udGV4dCB4IGluXG4gICAgICAgIGxldCBuYW1lID0gYXR0ci5hdHRyX25hbWUgaW5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBMaXN0LmZpbHRlciB0cyB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm1hdGNoZXMgdC5uYW1lIG5hbWUudHh0KVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgW10gLT4gT2sgTm9uZVxuICAgICAgICB8IFsgdCBdIC0+IGNvbnZlcnQgdC5wYXlsb2FkIGF0dHIgPj58IGZ1biB2YWx1ZSAtPiBTb21lIHZhbHVlXG4gICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGZsb2F0aW5nIGF0dHJpYnV0ZXM6ICVzXCJcbiAgICAgICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIsIFwiXG4gICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIHQgLT4gTmFtZS5QYXR0ZXJuLm5hbWUgdC5uYW1lKSkpLFxuICAgICAgICAgICAgICAgIFtdICkpXG5cbiAgbGV0IGNvbnZlcnQgdHMgeCA9XG4gICAgY29udmVydF9yZXMgdHMgeFxuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IGNvbGxlY3RfYXR0cmlidXRlX2Vycm9ycyByZWdpc3RyYXIgY29udGV4dCBuYW1lID1cbiAgaWZcbiAgICAobm90XG4gICAgICAgKE5hbWUuQWxsb3dsaXN0ZWQuaXNfYWxsb3dsaXN0ZWQgfmtpbmQ6YEF0dHJpYnV0ZSBuYW1lLnR4dFxuICAgICAgIHx8IE5hbWUuaWdub3JlX2NoZWNrcyBuYW1lLnR4dCkpXG4gICAgJiYgQXR0cmlidXRlX3RhYmxlLm1lbSBub3Rfc2VlbiBuYW1lXG4gIHRoZW5cbiAgICBsZXQgYWxsb3dsaXN0ID0gTmFtZS5BbGxvd2xpc3RlZC5nZXRfYXR0cmlidXRlX2xpc3QgKCkgaW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciBjb250ZXh0IH5hbGxvd2xpc3RcbiAgICAgICAgXCJBdHRyaWJ1dGUgYCVzJyB3YXMgbm90IHVzZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBbTG9jYXRpb24uRXJyb3IudCBsaXN0XSBBc3RfdHJhdmVyc2UwLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9IF8gPVxuICAgICAgW1xuICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICBcImF0dHJpYnV0ZSBub3QgZXhwZWN0ZWQgaGVyZSwgUHB4bGliLkF0dHJpYnV0ZSBuZWVkcyB1cGRhdGluZyFcIjtcbiAgICAgIF1cblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX25vZGUgOiB0eXBlIGEuXG4gICAgICAgIGEgQ29udGV4dC50IC0+IGEgLT4gYSAqIExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIGluXG4gICAgICAgIG1hdGNoIGF0dHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiAobm9kZSwgW10pXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICAgIExpc3QubWFwIGF0dHJzXG4gICAgICAgICAgICAgICAgfmY6KGZ1blxuICAgICAgICAgICAgICAgICAgICAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBjb2xsZWN0ZWRfZXJyb3JzID1cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXlsb2FkIHBheWxvYWQgW11cbiAgICAgICAgICAgICAgICAgICAgQCBjb2xsZWN0X2F0dHJpYnV0ZV9lcnJvcnMgcmVnaXN0cmFyIChPbl9pdGVtIGNvbnRleHQpIG5hbWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAoKiBJZiB3ZSBhbGxvdyB0aGUgYXR0cmlidXRlIHRvIHBhc3MgdGhyb3VnaCwgbWFyayBpdCBhcyBzZWVuICopXG4gICAgICAgICAgICAgICAgICBtYXJrX2FzX3NlZW4gYXR0cjtcbiAgICAgICAgICAgICAgICAgIGNvbGxlY3RlZF9lcnJvcnMpXG4gICAgICAgICAgICAgIHw+IExpc3QuY29uY2F0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKENvbnRleHQuc2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIFtdLCBlcnJvcnMpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBjaGVja19mbG9hdGluZyA6IHR5cGUgYS5cbiAgICAgICAgYSBGbG9hdGluZy5Db250ZXh0LnQgLT4gYSAtPiBhICogTG9jYXRpb24uRXJyb3IudCBsaXN0ID1cbiAgICAgIGZ1biBjb250ZXh0IG5vZGUgLT5cbiAgICAgICAgbWF0Y2hcbiAgICAgICAgICBGbG9hdGluZy5Db250ZXh0LmdldF9hdHRyaWJ1dGVfaWZfaXNfZmxvYXRpbmdfbm9kZSBjb250ZXh0IG5vZGVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKG5vZGUsIFtdKVxuICAgICAgICB8IFNvbWUgKHsgYXR0cl9uYW1lID0gbmFtZTsgYXR0cl9wYXlsb2FkID0gcGF5bG9hZDsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICBsZXQgY29sbGVjdGVkX2Vycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkIFtdXG4gICAgICAgICAgICAgIEAgY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciAoRmxvYXRpbmcgY29udGV4dCkgbmFtZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hcmtfYXNfc2VlbiBhdHRyO1xuICAgICAgICAgICAgKEZsb2F0aW5nLkNvbnRleHQucmVwbGFjZV9ieV9kdW1teSBjb250ZXh0IG5vZGUsIGNvbGxlY3RlZF9lcnJvcnMpXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBMYWJlbF9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNsYWJlbF9kZWNsYXJhdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIENvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISB0eXBlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2RlY2xhcmF0aW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBUeXBlX2V4dGVuc2lvbiB4IGluXG4gICAgICBzdXBlciN0eXBlX2V4dGVuc2lvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFR5cGVfZXhjZXB0aW9uIHggaW5cbiAgICAgIHN1cGVyI3R5cGVfZXhjZXB0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEV4dGVuc2lvbl9jb25zdHJ1Y3RvciB4IGluXG4gICAgICBzdXBlciNleHRlbnNpb25fY29uc3RydWN0b3IgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHBhdHRlcm4geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFBhdHRlcm4geCBpblxuICAgICAgc3VwZXIjcGF0dGVybiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDb3JlX3R5cGUgeCBpblxuICAgICAgc3VwZXIjY29yZV90eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBFeHByZXNzaW9uIHggaW5cbiAgICAgIHN1cGVyI2V4cHJlc3Npb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHZhbHVlX2Rlc2NyaXB0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBWYWx1ZV9kZXNjcmlwdGlvbiB4IGluXG4gICAgICBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfdHlwZSB4IGluXG4gICAgICBzdXBlciNjbGFzc190eXBlIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19pbmZvcyBmIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19pbmZvcyB4IGluXG4gICAgICBzdXBlciNjbGFzc19pbmZvcyBmIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19leHByIHggaW5cbiAgICAgIHN1cGVyI2NsYXNzX2V4cHIgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfdHlwZSB4IGluXG4gICAgICBzdXBlciNtb2R1bGVfdHlwZSByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggYWNjID1cbiAgICAgIGxldCByZXMsIGVycm9ycyA9IHNlbGYjY2hlY2tfbm9kZSBNb2R1bGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCBpblxuICAgICAgc3VwZXIjbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIG9wZW5fZGVzY3JpcHRpb24geCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE9wZW5fZGVzY3JpcHRpb24geCBpblxuICAgICAgc3VwZXIjb3Blbl9kZXNjcmlwdGlvbiByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgb3Blbl9kZWNsYXJhdGlvbiB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgT3Blbl9kZWNsYXJhdGlvbiB4IGluXG4gICAgICBzdXBlciNvcGVuX2RlY2xhcmF0aW9uIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIEluY2x1ZGVfaW5mb3MgeCBpblxuICAgICAgc3VwZXIjaW5jbHVkZV9pbmZvcyBmIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwciB4IGFjYyA9XG4gICAgICBsZXQgcmVzLCBlcnJvcnMgPSBzZWxmI2NoZWNrX25vZGUgTW9kdWxlX2V4cHIgeCBpblxuICAgICAgc3VwZXIjbW9kdWxlX2V4cHIgcmVzIChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIFZhbHVlX2JpbmRpbmcgeCBpblxuICAgICAgc3VwZXIjdmFsdWVfYmluZGluZyByZXMgKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCBhY2MgPVxuICAgICAgbGV0IHJlcywgZXJyb3JzID0gc2VsZiNjaGVja19ub2RlIE1vZHVsZV9iaW5kaW5nIHggaW5cbiAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIHJlcyAoYWNjIEAgZXJyb3JzKVxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4IGFjYyA9XG4gICAgICBsZXQgeCwgZXJyb3JzMSA9IHNlbGYjY2hlY2tfbm9kZSBDbGFzc19maWVsZCB4IGluXG4gICAgICBsZXQgeCwgZXJyb3JzMiA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgQ2xhc3NfZmllbGQgeCBpblxuICAgICAgc3VwZXIjY2xhc3NfZmllbGQgeCAoYWNjIEAgZXJyb3JzMSBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9yczEgPSBzZWxmI2NoZWNrX25vZGUgQ2xhc3NfdHlwZV9maWVsZCB4IGluXG4gICAgICBsZXQgeCwgZXJyb3JzMiA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgQ2xhc3NfdHlwZV9maWVsZCB4IGluXG4gICAgICBzdXBlciNjbGFzc190eXBlX2ZpZWxkIHggKGFjYyBAIGVycm9yczEgQCBlcnJvcnMyKVxuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCBhY2MgPVxuICAgICAgbGV0IHgsIGVycm9ycyA9XG4gICAgICAgIG1hdGNoIHgucHJmX2Rlc2Mgd2l0aCBSdGFnIF8gLT4gc2VsZiNjaGVja19ub2RlIFJ0YWcgeCB8IF8gLT4gKHgsIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3Jvd19maWVsZCB4IChhY2MgQCBlcnJvcnMpXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIGxldCB4LCBlcnJvcnMgPVxuICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgfCBQdHlwX29iamVjdCAoZmllbGRzLCBjbG9zZWRfZmxhZykgLT5cbiAgICAgICAgICAgIGxldCBmaWVsZHMsIGVycm9ycyA9XG4gICAgICAgICAgICAgIExpc3QubWFwIGZpZWxkcyB+Zjooc2VsZiNjaGVja19ub2RlIE9iamVjdF90eXBlX2ZpZWxkKVxuICAgICAgICAgICAgICB8PiBMaXN0LnNwbGl0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFB0eXBfb2JqZWN0IChmaWVsZHMsIGNsb3NlZF9mbGFnKSwgTGlzdC5jb25jYXQgZXJyb3JzKVxuICAgICAgICB8IF8gLT4gKHgsIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI2NvcmVfdHlwZV9kZXNjIHggKGFjYyBAIGVycm9ycylcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0gaXRlbSBhY2MgPVxuICAgICAgbGV0IGl0ZW0sIGVycm9ycyA9IHNlbGYjY2hlY2tfZmxvYXRpbmcgU3RydWN0dXJlX2l0ZW0gaXRlbSBpblxuICAgICAgbGV0IGl0ZW0sIGVycm9yczIgPVxuICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgIHwgUHN0cl9ldmFsIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzdHJfZXZhbCBpdGVtXG4gICAgICAgIHwgUHN0cl9leHRlbnNpb24gXyAtPiBzZWxmI2NoZWNrX25vZGUgUHN0cl9leHRlbnNpb24gaXRlbVxuICAgICAgICB8IF8gLT4gKGl0ZW0sIFtdKVxuICAgICAgaW5cbiAgICAgIHN1cGVyI3N0cnVjdHVyZV9pdGVtIGl0ZW0gKGFjYyBAIGVycm9ycyBAIGVycm9yczIpXG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGl0ZW0gYWNjID1cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMgPSBzZWxmI2NoZWNrX2Zsb2F0aW5nIFNpZ25hdHVyZV9pdGVtIGl0ZW0gaW5cbiAgICAgIGxldCBpdGVtLCBlcnJvcnMyID1cbiAgICAgICAgbWF0Y2ggaXRlbS5wc2lnX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBzaWdfZXh0ZW5zaW9uIF8gLT4gc2VsZiNjaGVja19ub2RlIFBzaWdfZXh0ZW5zaW9uIGl0ZW1cbiAgICAgICAgfCBfIC0+IChpdGVtLCBbXSlcbiAgICAgIGluXG4gICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBpdGVtIChhY2MgQCBlcnJvcnMgQCBlcnJvcnMyKVxuICBlbmRcblxubGV0IGNoZWNrX2F0dHJpYnV0ZSByZWdpc3RyYXIgY29udGV4dCBuYW1lID1cbiAgbWF0Y2ggY29sbGVjdF9hdHRyaWJ1dGVfZXJyb3JzIHJlZ2lzdHJhciBjb250ZXh0IG5hbWUgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCByYWlzZV9pZl9ub25fZW1wdHkgPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UwLml0ZXIgYXMgc3VwZXJcblxuICAgIG1ldGhvZCBwcml2YXRlIGNoZWNrX25vZGUgOiB0eXBlIGEuIGEgQ29udGV4dC50IC0+IGEgLT4gYSA9XG4gICAgICBmdW4gY29udGV4dCBub2RlIC0+XG4gICAgICAgIGxldCBhdHRycyA9IENvbnRleHQuZ2V0X2F0dHJpYnV0ZXMgY29udGV4dCBub2RlIGluXG4gICAgICAgIG1hdGNoIGF0dHJzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBub2RlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgTGlzdC5pdGVyIGF0dHJzXG4gICAgICAgICAgICAgIH5mOihmdW5cbiAgICAgICAgICAgICAgICAgICh7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSBhcyBhdHRyKSAtPlxuICAgICAgICAgICAgICAgIHNlbGYjcGF5bG9hZCBwYXlsb2FkO1xuICAgICAgICAgICAgICAgIGNoZWNrX2F0dHJpYnV0ZSByZWdpc3RyYXIgKE9uX2l0ZW0gY29udGV4dCkgbmFtZTtcbiAgICAgICAgICAgICAgICAoKiBJZiB3ZSBhbGxvdyB0aGUgYXR0cmlidXRlIHRvIHBhc3MgdGhyb3VnaCwgbWFyayBpdCBhcyBzZWVuICopXG4gICAgICAgICAgICAgICAgbWFya19hc19zZWVuIGF0dHIpO1xuICAgICAgICAgICAgQ29udGV4dC5zZXRfYXR0cmlidXRlcyBjb250ZXh0IG5vZGUgW11cblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHsgYXR0cl9uYW1lID0gbmFtZTsgXyB9ID1cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5hbWUubG9jXG4gICAgICAgIFwiYXR0cmlidXRlIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuQXR0cmlidXRlIG5lZWRzIHVwZGF0aW5nIVwiXG5cbiAgICBtZXRob2QhIGxhYmVsX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbGFiZWxfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN0eXBlX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISB0eXBlX2V4dGVuc2lvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3R5cGVfZXh0ZW5zaW9uIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIHR5cGVfZXhjZXB0aW9uIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjdHlwZV9leGNlcHRpb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjcGF0dGVybiB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb3JlX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2V4cHJlc3Npb24geCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyN2YWx1ZV9kZXNjcmlwdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX3R5cGUgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY2xhc3NfaW5mb3MgZiB4ID1cbiAgICAgIHN1cGVyI2NsYXNzX2luZm9zIGYgKHNlbGYjY2hlY2tfbm9kZSBDbGFzc19pbmZvcyB4KVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjY2xhc3NfZXhwciB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZSB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV90eXBlIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI21vZHVsZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IFtdXG4gICAgICB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgb3Blbl9kZXNjcmlwdGlvbiB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI29wZW5fZGVzY3JpcHRpb24geCBbXVxuICAgICAgfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIG9wZW5fZGVjbGFyYXRpb24geCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNvcGVuX2RlY2xhcmF0aW9uIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBpbmNsdWRlX2luZm9zIGYgeCA9XG4gICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgKHNlbGYjY2hlY2tfbm9kZSBJbmNsdWRlX2luZm9zIHgpXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggPVxuICAgICAgY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjbW9kdWxlX2V4cHIgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3ZhbHVlX2JpbmRpbmcgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgbW9kdWxlX2JpbmRpbmcgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNtb2R1bGVfYmluZGluZyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZCB4ID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI2NsYXNzX2ZpZWxkIHggW10gfD4gcmFpc2VfaWZfbm9uX2VtcHR5XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjbGFzc190eXBlX2ZpZWxkIHggW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISByb3dfZmllbGQgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNyb3dfZmllbGQgeCBbXSB8PiByYWlzZV9pZl9ub25fZW1wdHlcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNjb3JlX3R5cGVfZGVzYyB4IFtdIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBpdGVtID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3N0cnVjdHVyZV9pdGVtIGl0ZW0gW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSBpdGVtID1cbiAgICAgIGNvbGxlY3RfdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzI3NpZ25hdHVyZV9pdGVtIGl0ZW0gW11cbiAgICAgIHw+IHJhaXNlX2lmX25vbl9lbXB0eVxuICBlbmRcblxubGV0IHJlc2V0X2NoZWNrcyAoKSA9IEF0dHJpYnV0ZV90YWJsZS5jbGVhciBub3Rfc2VlblxuXG5sZXQgY29sbGVjdCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSAoeyBhdHRyX25hbWUgPSBuYW1lOyBhdHRyX3BheWxvYWQgPSBwYXlsb2FkOyBfIH0gYXMgYXR0cilcbiAgICAgICAgPVxuICAgICAgbGV0IGxvYyA9IENvbW1vbi5sb2Nfb2ZfYXR0cmlidXRlIGF0dHIgaW5cbiAgICAgIHN1cGVyI3BheWxvYWQgcGF5bG9hZDtcbiAgICAgIEF0dHJpYnV0ZV90YWJsZS5hZGQgbm90X3NlZW4gbmFtZSBsb2NcbiAgZW5kXG5cbmxldCBjb2xsZWN0X3Vuc2Vlbl9lcnJvcnMgKCkgPVxuICBsZXQgZmFpbCBuYW1lIGxvYyBhY2MgPVxuICAgIGxldCB0eHQgPSBuYW1lLnR4dCBpblxuICAgIGlmIG5vdCAoTmFtZS5pZ25vcmVfY2hlY2tzIHR4dCkgdGhlblxuICAgICAgTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiQXR0cmlidXRlIGAlcycgd2FzIHNpbGVudGx5IGRyb3BwZWRcIiB0eHRcbiAgICAgIDo6IGFjY1xuICAgIGVsc2UgYWNjXG4gIGluXG4gIEF0dHJpYnV0ZV90YWJsZS5mb2xkIGZhaWwgbm90X3NlZW4gW11cblxubGV0IGNoZWNrX2FsbF9zZWVuICgpID1cbiAgbWF0Y2ggY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGVyciA6OiBfIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVyclxuXG5sZXQgcmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlMC5pdGVyIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGF0dHJpYnV0ZSB7IGF0dHJfbmFtZSA9IG5hbWU7IGF0dHJfcGF5bG9hZCA9IHBheWxvYWQ7IF8gfSA9XG4gICAgICBzdXBlciNwYXlsb2FkIHBheWxvYWQ7XG4gICAgICBBdHRyaWJ1dGVfdGFibGUucmVtb3ZlIHRhYmxlIG5hbWVcbiAgZW5kXG5cbmxldCBjb3B5X29mX25vdF9zZWVuICgpID1cbiAgbGV0IGNvcHkgPSBBdHRyaWJ1dGVfdGFibGUuY3JlYXRlIChBdHRyaWJ1dGVfdGFibGUubGVuZ3RoIG5vdF9zZWVuKSBpblxuICBBdHRyaWJ1dGVfdGFibGUuaXRlciAoQXR0cmlidXRlX3RhYmxlLmFkZCBjb3B5KSBub3Rfc2VlbjtcbiAgY29weVxuXG5sZXQgZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIHN0ID1cbiAgbGV0IHRhYmxlID0gY29weV9vZl9ub3Rfc2VlbiAoKSBpblxuICAocmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSkjc3RydWN0dXJlIHN0O1xuICBBdHRyaWJ1dGVfdGFibGUuZm9sZFxuICAgIChmdW4gbmFtZSBsb2MgYWNjIC0+IHsgdHh0ID0gbmFtZS50eHQ7IGxvYyB9IDo6IGFjYylcbiAgICB0YWJsZSBbXVxuXG5sZXQgZHJvcHBlZF9zb19mYXJfc2lnbmF0dXJlIHNnID1cbiAgbGV0IHRhYmxlID0gY29weV9vZl9ub3Rfc2VlbiAoKSBpblxuICAocmVtb3ZlX2F0dHJpYnV0ZXNfcHJlc2VudF9pbiB0YWJsZSkjc2lnbmF0dXJlIHNnO1xuICBBdHRyaWJ1dGVfdGFibGUuZm9sZFxuICAgIChmdW4gbmFtZSBsb2MgYWNjIC0+IHsgdHh0ID0gbmFtZS50eHQ7IGxvYyB9IDo6IGFjYylcbiAgICB0YWJsZSBbXVxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IHtcbiAgZmlsZV9wYXRoIDogc3RyaW5nO1xuICBtYWluX21vZHVsZV9uYW1lIDogc3RyaW5nO1xuICBzdWJtb2R1bGVfcGF0aCA6IHN0cmluZyBsb2MgbGlzdDtcbiAgZW5jbG9zaW5nX21vZHVsZSA6IHN0cmluZztcbiAgZW5jbG9zaW5nX3ZhbHVlIDogc3RyaW5nIG9wdGlvbjtcbiAgdmFsdWUgOiBzdHJpbmcgbG9jIG9wdGlvbjtcbiAgaW5fZXhwciA6IGJvb2w7XG59XG5cbmxldCB0b3BfbGV2ZWwgfmZpbGVfcGF0aCA9XG4gIGxldCBtYWluX21vZHVsZV9uYW1lID1cbiAgICBmaWxlX3BhdGggfD4gU3RkbGliLkZpbGVuYW1lLmJhc2VuYW1lIHw+IFN0ZGxpYi5GaWxlbmFtZS5yZW1vdmVfZXh0ZW5zaW9uXG4gICAgfD4gU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcbiAgaW5cbiAge1xuICAgIGZpbGVfcGF0aDtcbiAgICBtYWluX21vZHVsZV9uYW1lO1xuICAgIHN1Ym1vZHVsZV9wYXRoID0gW107XG4gICAgZW5jbG9zaW5nX21vZHVsZSA9IG1haW5fbW9kdWxlX25hbWU7XG4gICAgZW5jbG9zaW5nX3ZhbHVlID0gTm9uZTtcbiAgICB2YWx1ZSA9IE5vbmU7XG4gICAgaW5fZXhwciA9IGZhbHNlO1xuICB9XG5cbmxldCBmaWxlX3BhdGggdCA9IHQuZmlsZV9wYXRoXG5sZXQgbWFpbl9tb2R1bGVfbmFtZSB0ID0gdC5tYWluX21vZHVsZV9uYW1lXG5sZXQgZW5jbG9zaW5nX21vZHVsZSB0ID0gdC5lbmNsb3NpbmdfbW9kdWxlXG5sZXQgZW5jbG9zaW5nX3ZhbHVlIHQgPSB0LmVuY2xvc2luZ192YWx1ZVxuXG5sZXQgc3VibW9kdWxlX3BhdGggdCA9XG4gIExpc3QucmV2X21hcCB+ZjooZnVuIGxvY2F0ZWQgLT4gbG9jYXRlZC50eHQpIHQuc3VibW9kdWxlX3BhdGhcblxubGV0IHZhbHVlIHQgPSBPcHRpb24ubWFwIH5mOihmdW4gbG9jYXRlZCAtPiBsb2NhdGVkLnR4dCkgdC52YWx1ZVxuXG5sZXQgZnVsbHlfcXVhbGlmaWVkX3BhdGggdCA9XG4gIGxldCB2YWx1ZSA9IHZhbHVlIHQgaW5cbiAgbGV0IHN1Ym1vZHVsZV9wYXRoID1cbiAgICBMaXN0LnJldl9tYXAgfmY6KGZ1biBsb2NhdGVkIC0+IFNvbWUgbG9jYXRlZC50eHQpIHQuc3VibW9kdWxlX3BhdGhcbiAgaW5cbiAgbGV0IG5hbWVzID0gKFNvbWUgdC5tYWluX21vZHVsZV9uYW1lIDo6IHN1Ym1vZHVsZV9wYXRoKSBAIFsgdmFsdWUgXSBpblxuICBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgQEAgTGlzdC5maWx0ZXJfb3B0IG5hbWVzXG5cbmxldCBlbnRlcl9leHByIHQgPSB7IHQgd2l0aCBpbl9leHByID0gdHJ1ZSB9XG5cbmxldCBlbnRlcl9tb2R1bGUgfmxvYyBtb2R1bGVfbmFtZSB0ID1cbiAgaWYgdC5pbl9leHByIHRoZW4geyB0IHdpdGggZW5jbG9zaW5nX21vZHVsZSA9IG1vZHVsZV9uYW1lIH1cbiAgZWxzZVxuICAgIHtcbiAgICAgIHQgd2l0aFxuICAgICAgc3VibW9kdWxlX3BhdGggPSB7IHR4dCA9IG1vZHVsZV9uYW1lOyBsb2MgfSA6OiB0LnN1Ym1vZHVsZV9wYXRoO1xuICAgICAgZW5jbG9zaW5nX21vZHVsZSA9IG1vZHVsZV9uYW1lO1xuICAgIH1cblxubGV0IGVudGVyX3ZhbHVlIH5sb2MgdmFsdWVfbmFtZSB0ID1cbiAgaWYgdC5pbl9leHByIHRoZW4geyB0IHdpdGggZW5jbG9zaW5nX3ZhbHVlID0gU29tZSB2YWx1ZV9uYW1lIH1cbiAgZWxzZVxuICAgIHtcbiAgICAgIHQgd2l0aFxuICAgICAgdmFsdWUgPSBTb21lIHsgdHh0ID0gdmFsdWVfbmFtZTsgbG9jIH07XG4gICAgICBlbmNsb3NpbmdfdmFsdWUgPSBTb21lIHZhbHVlX25hbWU7XG4gICAgfVxuXG5sZXQgdG9fc3RyaW5nX3BhdGggdCA9IFN0cmluZy5jb25jYXQgfnNlcDpcIi5cIiAodC5maWxlX3BhdGggOjogc3VibW9kdWxlX3BhdGggdClcbmxldCB3aXRoX3N0cmluZ19wYXRoIGYgfmxvYyB+cGF0aCA9IGYgfmxvYyB+cGF0aDoodG9fc3RyaW5nX3BhdGggcGF0aCk7O1xuXG5sZXQgbW9kdWxlIE0gPSBzdHJ1Y3RcbiAgbGV0IGEgPSBcImxvbFwiXG5lbmQgaW5cbk0uYVxuIiwibW9kdWxlIEJhc2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyB0b29sX25hbWUgOiBzdHJpbmc7IGNvZGVfcGF0aCA6IENvZGVfcGF0aC50OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICBsZXQgdG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZSA9XG4gICAgbGV0IGNvZGVfcGF0aCA9IENvZGVfcGF0aC50b3BfbGV2ZWwgfmZpbGVfcGF0aCBpblxuICAgIHsgdG9vbF9uYW1lOyBjb2RlX3BhdGg7IGlucHV0X25hbWUgfVxuXG4gIGxldCBjb2RlX3BhdGggdCA9IHQuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmlucHV0X25hbWVcbiAgbGV0IHRvb2xfbmFtZSB0ID0gdC50b29sX25hbWVcbiAgbGV0IGVudGVyX2V4cHIgdCA9IHsgdCB3aXRoIGNvZGVfcGF0aCA9IENvZGVfcGF0aC5lbnRlcl9leHByIHQuY29kZV9wYXRoIH1cblxuICBsZXQgZW50ZXJfbW9kdWxlIH5sb2MgbmFtZSB0ID1cbiAgICB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfbW9kdWxlIH5sb2MgbmFtZSB0LmNvZGVfcGF0aCB9XG5cbiAgbGV0IGVudGVyX3ZhbHVlIH5sb2MgbmFtZSB0ID1cbiAgICB7IHQgd2l0aCBjb2RlX3BhdGggPSBDb2RlX3BhdGguZW50ZXJfdmFsdWUgfmxvYyBuYW1lIHQuY29kZV9wYXRoIH1cbmVuZFxuXG5tb2R1bGUgRXh0ZW5zaW9uID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXh0ZW5zaW9uX3BvaW50X2xvYyA6IExvY2F0aW9uLnQ7IGJhc2UgOiBCYXNlLnQgfVxuXG4gIGxldCBtYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jIH5iYXNlICgpID0geyBleHRlbnNpb25fcG9pbnRfbG9jOyBiYXNlIH1cbiAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgdCA9IHQuZXh0ZW5zaW9uX3BvaW50X2xvY1xuICBsZXQgY29kZV9wYXRoIHQgPSB0LmJhc2UuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmJhc2UuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LmJhc2UudG9vbF9uYW1lXG5cbiAgbGV0IHdpdGhfbG9jX2FuZF9wYXRoIGYgfmN0eHQgPVxuICAgIGYgfmxvYzpjdHh0LmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgIH5wYXRoOihDb2RlX3BhdGgudG9fc3RyaW5nX3BhdGggY3R4dC5iYXNlLmNvZGVfcGF0aClcbmVuZFxuXG5tb2R1bGUgRGVyaXZlciA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGRlcml2ZWRfaXRlbV9sb2MgOiBMb2NhdGlvbi50OyBpbmxpbmUgOiBib29sOyBiYXNlIDogQmFzZS50IH1cblxuICBsZXQgbWFrZSB+ZGVyaXZlZF9pdGVtX2xvYyB+aW5saW5lIH5iYXNlICgpID1cbiAgICB7IGRlcml2ZWRfaXRlbV9sb2M7IGJhc2U7IGlubGluZSB9XG5cbiAgbGV0IGRlcml2ZWRfaXRlbV9sb2MgdCA9IHQuZGVyaXZlZF9pdGVtX2xvY1xuICBsZXQgY29kZV9wYXRoIHQgPSB0LmJhc2UuY29kZV9wYXRoXG4gIGxldCBpbnB1dF9uYW1lIHQgPSB0LmJhc2UuaW5wdXRfbmFtZVxuICBsZXQgdG9vbF9uYW1lIHQgPSB0LmJhc2UudG9vbF9uYW1lXG4gIGxldCBpbmxpbmUgdCA9IHQuaW5saW5lXG5cbiAgbGV0IHdpdGhfbG9jX2FuZF9wYXRoIGYgfmN0eHQgPVxuICAgIGYgfmxvYzpjdHh0LmRlcml2ZWRfaXRlbV9sb2NcbiAgICAgIH5wYXRoOihDb2RlX3BhdGgudG9fc3RyaW5nX3BhdGggY3R4dC5iYXNlLmNvZGVfcGF0aClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIENvbW1vbi5XaXRoX2Vycm9yc1xuaW5jbHVkZSBBc3RfdHJhdmVyc2UwXG5cbmNsYXNzIHZpcnR1YWwgWydjdHgsICdyZXNdIGxpZnRfbWFwX3dpdGhfY29udGV4dCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgWydjdHgsICdyZXNdIFBweGxpYl90cmF2ZXJzZV9idWlsdGlucy5saWZ0X21hcF93aXRoX2NvbnRleHRcbiAgICBpbmhlcml0IFsnY3R4LCAncmVzXSBBc3QubGlmdF9tYXBfd2l0aF9jb250ZXh0XG4gIGVuZFxuXG5sZXQgbW9kdWxlX25hbWUgPSBmdW5jdGlvbiBOb25lIC0+IFwiX1wiIHwgU29tZSBuYW1lIC0+IG5hbWVcbmxldCBlbnRlciBuYW1lIHBhdGggPSBpZiBTdHJpbmcuaXNfZW1wdHkgcGF0aCB0aGVuIG5hbWUgZWxzZSBwYXRoIF4gXCIuXCIgXiBuYW1lXG5sZXQgZW50ZXJfb3B0IG5hbWVfb3B0IHBhdGggPSBlbnRlciAobW9kdWxlX25hbWUgbmFtZV9vcHQpIHBhdGhcblxuY2xhc3MgbWFwX3dpdGhfcGF0aCA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW3N0cmluZ10gbWFwX3dpdGhfY29udGV4dCBhcyBzdXBlclxuXG4gICAgKCogV0FTOlxuICAgICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyBwYXRoIHggPVxuICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgIHwgUHN0cl9tb2R1bGUgbWIgLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyAoZW50ZXIgbWIucG1iX25hbWUudHh0IHBhdGgpIHhcbiAgICAgICB8IF8gLT4gc3VwZXIjc3RydWN0dXJlX2l0ZW1fZGVzYyBwYXRoIHhcblxuICAgICAgIE92ZXJyaWRpbmcgW21vZHVsZV9iaW5kaW5nXSBzZWVtcyB0byBiZSBPSyBiZWNhdXNlIGl0IGRvZXMgbm90IGNhdGNoXG4gICAgICAgbG9jYWwgbW9kdWxlIGJpbmRpbmdzIGJlY2F1c2UgYXQgdGhlIG1vbWVudCB0aGUgcGFyc2V0cmVlIGRvZXNuJ3QgbWFrZVxuICAgICAgIHVzZSBvZiBbbW9kdWxlX2JpbmRpbmddIGZvciBsb2NhbCBtb2R1bGVzLCBidXQgdGhhdCBtaWdodCBjaGFuZ2UgaW4gdGhlXG4gICAgICAgZnV0dXJlLCBzbyB0aGlzIG1pZ2h0IGJlIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuXG5cbiAgICAgICBUaGUgZm9sbG93aW5nOlxuXG4gICAgICAgICAgIG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZFxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcblxuICAgICAgIGlzIGRpc2FsbG93ZWQsIGJ1dFxuXG4gICAgICAgICAgIGxldCBfID0gLi4gbGV0IG1vZHVsZSBBID0gc3RydWN0IC4uIGVuZCBpbiAuLlxuICAgICAgICAgICBtb2R1bGUgQSA9IHN0cnVjdCAuLiBlbmRcbiAgICAgICAgICAgbGV0IF8gPSAuLiBsZXQgbW9kdWxlIEEgPSBzdHJ1Y3QgLi4gZW5kIGluIC4uXG5cbiAgICAgICBpc24ndCwgYW5kIHRoZSBcInBhdGhcIiBjb25zdHJ1Y3RlZCBoZXJlIHdvdWxkIGJlIGFibGUgdG8gZGlmZmVyZW50aWF0ZVxuICAgICAgIGJldHdlZW4gdGhlbS4gKilcbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHBhdGggbWIgPVxuICAgICAgc3VwZXIjbW9kdWxlX2JpbmRpbmcgKGVudGVyX29wdCBtYi5wbWJfbmFtZS50eHQgcGF0aCkgbWJcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHBhdGggbWQgPVxuICAgICAgc3VwZXIjbW9kdWxlX2RlY2xhcmF0aW9uIChlbnRlcl9vcHQgbWQucG1kX25hbWUudHh0IHBhdGgpIG1kXG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHBhdGggbXRkID1cbiAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIChlbnRlciBtdGQucG10ZF9uYW1lLnR4dCBwYXRoKSBtdGRcbiAgZW5kXG5cbmxldCB2YXJfbmFtZXNfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtzdHJpbmcgbGlzdF0gZm9sZCBhcyBzdXBlclxuXG4gICAgbWV0aG9kISBwYXR0ZXJuIHAgYWNjID1cbiAgICAgIGxldCBhY2MgPSBzdXBlciNwYXR0ZXJuIHAgYWNjIGluXG4gICAgICBtYXRjaCBwLnBwYXRfZGVzYyB3aXRoIFBwYXRfdmFyIHsgdHh0OyBfIH0gLT4gdHh0IDo6IGFjYyB8IF8gLT4gYWNjXG4gIGVuZFxuXG5sZXQgZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jIG5hbWVfb3B0IGN0eHQgPVxuICBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIChtb2R1bGVfbmFtZSBuYW1lX29wdCkgY3R4dFxuXG5sZXQgZW50ZXJfdmFsdWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5lbnRlcl92YWx1ZVwiIEV4cHJlc3Npb25cbiAgICBBc3RfcGF0dGVybi4oc2luZ2xlX2V4cHJfcGF5bG9hZCAocGV4cF9pZGVudCAobGlkZW50IF9fJykpKVxuICAgIEZuLmlkXG5cbmxldCBlbnRlcl9tb2R1bGUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5lbnRlcl9tb2R1bGVcIiBNb2R1bGVfZXhwclxuICAgIEFzdF9wYXR0ZXJuLihzaW5nbGVfZXhwcl9wYXlsb2FkIChwZXhwX2NvbnN0cnVjdCAobGlkZW50IF9fJykgbm9uZSkpXG4gICAgRm4uaWRcblxubGV0IGRvX25vdF9lbnRlcl92YWx1ZV9iaW5kaW5nID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX3ZhbHVlXCIgVmFsdWVfYmluZGluZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgQXR0cmlidXRlLmRlY2xhcmUgXCJwcHhsaWIuZG9fbm90X2VudGVyX3ZhbHVlXCIgVmFsdWVfZGVzY3JpcHRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfYmluZGluZyA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfYmluZGluZ1xuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX21vZHVsZV9kZWNsYXJhdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlIFwicHB4bGliLmRvX25vdF9lbnRlcl9tb2R1bGVcIiBNb2R1bGVfdHlwZV9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5sZXQgZG9fbm90X2VudGVyX2xldF9tb2R1bGUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInBweGxpYi5kb19ub3RfZW50ZXJfbW9kdWxlXCIgRXhwcmVzc2lvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5jbGFzcyBtYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzID1cbiAgbGV0IHJldHVybiBfY3R4IHggPSAoeCwgW10pIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0XG4gICAgICBbRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50LCBMb2NhdGlvbi5FcnJvci50IGxpc3RdIGxpZnRfbWFwX3dpdGhfY29udGV4dCBhcyBzdXBlclxuXG4gICAgbWV0aG9kIGludCA9IHJldHVyblxuICAgIG1ldGhvZCBzdHJpbmcgPSByZXR1cm5cbiAgICBtZXRob2QgYm9vbCA9IHJldHVyblxuICAgIG1ldGhvZCBjaGFyID0gcmV0dXJuXG4gICAgbWV0aG9kIGZsb2F0ID0gcmV0dXJuXG4gICAgbWV0aG9kIGludDMyID0gcmV0dXJuXG4gICAgbWV0aG9kIGludDY0ID0gcmV0dXJuXG4gICAgbWV0aG9kIG5hdGl2ZWludCA9IHJldHVyblxuICAgIG1ldGhvZCB1bml0ID0gcmV0dXJuXG5cbiAgICBtZXRob2QgYXJyYXlcbiAgICAgICAgOiAnYS5cbiAgICAgICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+ICdhICogTG9jYXRpb24uRXJyb3IudCBsaXN0KSAtPlxuICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgICAgICdhIGFycmF5IC0+XG4gICAgICAgICAgJ2EgYXJyYXkgKiBMb2NhdGlvbi5FcnJvci50IGxpc3QgPVxuICAgICAgZnVuIGYgY3R4IGEgLT5cbiAgICAgICAgbGV0IGxpc3QsIGVycm9ycyA9IHNlbGYjbGlzdCBmIGN0eCAoQXJyYXkudG9fbGlzdCBhKSBpblxuICAgICAgICAoQXJyYXkub2ZfbGlzdCBsaXN0LCBlcnJvcnMpXG5cbiAgICBtZXRob2Qgb3RoZXIgOiAnYS4gRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+ICdhIC0+IExvY2F0aW9uLkVycm9yLnQgbGlzdCA9XG4gICAgICBmdW4gXyBfIC0+IFtdXG5cbiAgICBtZXRob2QgcmVjb3JkIF9jdHggZmllbGRzID0gTGlzdC5jb25jYXRfbWFwIGZpZWxkcyB+ZjpzbmRcbiAgICBtZXRob2QgY29uc3RyIF9jdHggX3RhZyBhcmdzID0gTGlzdC5jb25jYXQgYXJnc1xuICAgIG1ldGhvZCB0dXBsZSBfY3R4IGwgPSBMaXN0LmNvbmNhdCBsXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gY3R4dFxuICAgICAgICAoeyBwZXhwX2Rlc2M7IHBleHBfbG9jOyBwZXhwX2xvY19zdGFjazsgcGV4cF9hdHRyaWJ1dGVzIH0gYXMgZXhwcikgPVxuICAgICAgbGV0IHdpdGhfdmFsdWUgPVxuICAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBlbnRlcl92YWx1ZSBleHByIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3R4dFxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYyB0eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfdmFsdWUgPj49IGZ1biBjdHh0IC0+XG4gICAgICBsZXQgY3R4dCA9IEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfZXhwciBjdHh0IGluXG4gICAgICBsZXQgcGV4cF9kZXNjLCBkZXNjX2Vycm9ycyA9XG4gICAgICAgIG1hdGNoIHBleHBfZGVzYyB3aXRoXG4gICAgICAgIHwgUGV4cF9sZXRtb2R1bGUgKG5hbWUsIG1vZHVsZV9leHByLCBib2R5KSAtPlxuICAgICAgICAgICAgbGV0IG5hbWUsIG5hbWVfZXJyb3JzID1cbiAgICAgICAgICAgICAgc2VsZiNsb2MgKHNlbGYjb3B0aW9uIHNlbGYjc3RyaW5nKSBjdHh0IG5hbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbW9kdWxlX2V4cHIsIG1vZHVsZV9leHByX2Vycm9ycyA9XG4gICAgICAgICAgICAgIGxldCB3aXRoX2xldF9tb2R1bGUgPVxuICAgICAgICAgICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9sZXRfbW9kdWxlIGV4cHJcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIGVjX2VudGVyX21vZHVsZV9vcHQgfmxvYzptb2R1bGVfZXhwci5wbW9kX2xvYyBuYW1lLnR4dCBjdHh0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHdpdGhfbGV0X21vZHVsZSA+Pj0gZnVuIGN0eHQgLT4gc2VsZiNtb2R1bGVfZXhwciBjdHh0IG1vZHVsZV9leHByXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGJvZHksIGJvZHlfZXJyb3JzID0gc2VsZiNleHByZXNzaW9uIGN0eHQgYm9keSBpblxuICAgICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICAgIHNlbGYjY29uc3RyIGN0eHQgXCJQZXhwX2xldG1vZHVsZVwiXG4gICAgICAgICAgICAgICAgWyBuYW1lX2Vycm9yczsgbW9kdWxlX2V4cHJfZXJyb3JzOyBib2R5X2Vycm9ycyBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKFBleHBfbGV0bW9kdWxlIChuYW1lLCBtb2R1bGVfZXhwciwgYm9keSksIGVycm9ycylcbiAgICAgICAgfCBfIC0+IHNlbGYjZXhwcmVzc2lvbl9kZXNjIGN0eHQgcGV4cF9kZXNjXG4gICAgICBpblxuICAgICAgbGV0IHBleHBfbG9jLCBsb2NfZXJyb3JzID0gc2VsZiNsb2NhdGlvbiBjdHh0IHBleHBfbG9jIGluXG4gICAgICBsZXQgcGV4cF9sb2Nfc3RhY2ssIGxvY19zdGFja19lcnJvcnMgPVxuICAgICAgICBzZWxmI2xpc3Qgc2VsZiNsb2NhdGlvbiBjdHh0IHBleHBfbG9jX3N0YWNrXG4gICAgICBpblxuICAgICAgbGV0IHBleHBfYXR0cmlidXRlcywgYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgY3R4dCBwZXhwX2F0dHJpYnV0ZXNcbiAgICAgIGluXG4gICAgICAoIHsgcGV4cF9kZXNjOyBwZXhwX2xvYzsgcGV4cF9sb2Nfc3RhY2s7IHBleHBfYXR0cmlidXRlcyB9LFxuICAgICAgICBzZWxmI3JlY29yZCBjdHh0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgKFwicGV4cF9kZXNjXCIsIGRlc2NfZXJyb3JzKTtcbiAgICAgICAgICAgIChcInBleHBfbG9jXCIsIGxvY19lcnJvcnMpO1xuICAgICAgICAgICAgKFwicGV4cF9sb2Nfc3RhY2tcIiwgbG9jX3N0YWNrX2Vycm9ycyk7XG4gICAgICAgICAgICAoXCJhdHRyaWJ1dGVzXCIsIGF0dHJpYnV0ZXNfZXJyb3JzKTtcbiAgICAgICAgICBdIClcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgY3R4dCBtZSA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfZXhwciA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGVudGVyX21vZHVsZSBtZSB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICA+PnwgZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IGN0eHRcbiAgICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPiBFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBjdHh0XG4gICAgICBpblxuICAgICAgd2l0aF9tb2R1bGVfZXhwciA+Pj0gZnVuIGN0eHQgLT4gc3VwZXIjbW9kdWxlX2V4cHIgY3R4dCBtZVxuXG4gICAgbWV0aG9kISBtb2R1bGVfYmluZGluZyBjdHh0IG1iID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9iaW5kaW5nID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX21vZHVsZV9iaW5kaW5nIG1iXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT4gZWNfZW50ZXJfbW9kdWxlX29wdCB+bG9jOm1iLnBtYl9sb2MgbWIucG1iX25hbWUudHh0IGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX21vZHVsZV9iaW5kaW5nID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfYmluZGluZyBjdHh0IG1iXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBjdHh0IG1kID1cbiAgICAgIGxldCB3aXRoX21vZHVsZV9kZWNsYXJhdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfZGVjbGFyYXRpb24gbWRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPiBlY19lbnRlcl9tb2R1bGVfb3B0IH5sb2M6bWQucG1kX2xvYyBtZC5wbWRfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX2RlY2xhcmF0aW9uID4+PSBmdW4gY3R4dCAtPiBzdXBlciNtb2R1bGVfZGVjbGFyYXRpb24gY3R4dCBtZFxuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHh0IG10ZCA9XG4gICAgICBsZXQgd2l0aF9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiA9XG4gICAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGRvX25vdF9lbnRlcl9tb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBtdGRcbiAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICAgIHwgU29tZSAoKSAtPiBjdHh0XG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuQmFzZS5lbnRlcl9tb2R1bGUgfmxvYzptdGQucG10ZF9sb2NcbiAgICAgICAgICAgICAgbXRkLnBtdGRfbmFtZS50eHQgY3R4dFxuICAgICAgaW5cbiAgICAgIHdpdGhfbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24gPj49IGZ1biBjdHh0IC0+XG4gICAgICBzdXBlciNtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiBjdHh0IG10ZFxuXG4gICAgbWV0aG9kISB2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IHZkID1cbiAgICAgIGxldCB3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uID1cbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX3ZhbHVlX2Rlc2NyaXB0aW9uIHZkXG4gICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgID4+fCBmdW5jdGlvblxuICAgICAgICB8IFNvbWUgKCkgLT4gY3R4dFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYzp2ZC5wdmFsX2xvYyB2ZC5wdmFsX25hbWUudHh0XG4gICAgICAgICAgICAgIGN0eHRcbiAgICAgIGluXG4gICAgICB3aXRoX3ZhbHVlX2Rlc2NyaXB0aW9uID4+PSBmdW4gY3R4dCAtPiBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiBjdHh0IHZkXG5cbiAgICBtZXRob2QhIHZhbHVlX2JpbmRpbmcgY3R4dFxuICAgICAgICAoeyBwdmJfcGF0OyBwdmJfZXhwcjsgcHZiX2F0dHJpYnV0ZXM7IHB2Yl9sb2MgfSBhcyB2YikgPVxuICAgICAgQXR0cmlidXRlLmdldF9yZXMgZG9fbm90X2VudGVyX3ZhbHVlX2JpbmRpbmcgdmIgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lICgpIC0+IHN1cGVyI3ZhbHVlX2JpbmRpbmcgY3R4dCB2YlxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGluX2JpbmRpbmdfY3R4dCA9XG4gICAgICAgICAgICBtYXRjaCB2YXJfbmFtZXNfb2YjcGF0dGVybiBwdmJfcGF0IFtdIHdpdGhcbiAgICAgICAgICAgIHwgW10gfCBfIDo6IF8gOjogXyAtPiBjdHh0XG4gICAgICAgICAgICB8IFsgdmFyX25hbWUgXSAtPlxuICAgICAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UuZW50ZXJfdmFsdWUgfmxvYzpwdmJfbG9jIHZhcl9uYW1lIGN0eHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwdmJfcGF0LCBwYXRfZXJyb3JzID0gc2VsZiNwYXR0ZXJuIGN0eHQgcHZiX3BhdCBpblxuICAgICAgICAgIGxldCBwdmJfZXhwciwgZXhwcl9lcnJvcnMgPVxuICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGluX2JpbmRpbmdfY3R4dCBwdmJfZXhwclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHB2Yl9hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzX2Vycm9ycyA9XG4gICAgICAgICAgICBzZWxmI2F0dHJpYnV0ZXMgaW5fYmluZGluZ19jdHh0IHB2Yl9hdHRyaWJ1dGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHZiX2xvYywgbG9jX2Vycm9ycyA9IHNlbGYjbG9jYXRpb24gY3R4dCBwdmJfbG9jIGluXG4gICAgICAgICAgbGV0IGVycm9ycyA9XG4gICAgICAgICAgICBzZWxmI3JlY29yZCBjdHh0XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoXCJwdmJfcGF0XCIsIHBhdF9lcnJvcnMpO1xuICAgICAgICAgICAgICAgIChcInB2Yl9leHByXCIsIGV4cHJfZXJyb3JzKTtcbiAgICAgICAgICAgICAgICAoXCJwdmJfYXR0cmlidXRlc1wiLCBhdHRyaWJ1dGVzX2Vycm9ycyk7XG4gICAgICAgICAgICAgICAgKFwicHZiX2xvY1wiLCBsb2NfZXJyb3JzKTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgIGluXG4gICAgICAgICAgKHsgcHZiX3BhdDsgcHZiX2V4cHI7IHB2Yl9hdHRyaWJ1dGVzOyBwdmJfbG9jIH0sIGVycm9ycylcbiAgZW5kXG5cbmNsYXNzIHNleHBfb2YgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IFtTZXhwLnRdIEFzdC5saWZ0XG4gICAgbWV0aG9kIGludCA9IHNleHBfb2ZfaW50XG4gICAgbWV0aG9kIHN0cmluZyA9IHNleHBfb2Zfc3RyaW5nXG4gICAgbWV0aG9kIGJvb2wgPSBzZXhwX29mX2Jvb2xcbiAgICBtZXRob2QgY2hhciA9IHNleHBfb2ZfY2hhclxuICAgIG1ldGhvZCBmbG9hdCA9IHNleHBfb2ZfZmxvYXRcbiAgICBtZXRob2QgaW50MzIgPSBzZXhwX29mX2ludDMyXG4gICAgbWV0aG9kIGludDY0ID0gc2V4cF9vZl9pbnQ2NFxuICAgIG1ldGhvZCBuYXRpdmVpbnQgPSBzZXhwX29mX25hdGl2ZWludFxuICAgIG1ldGhvZCB1bml0ID0gc2V4cF9vZl91bml0XG4gICAgbWV0aG9kIG9wdGlvbiA9IHNleHBfb2Zfb3B0aW9uXG4gICAgbWV0aG9kIGxpc3QgPSBzZXhwX29mX2xpc3RcbiAgICBtZXRob2QgYXJyYXkgOiAnYS4gKCdhIC0+IFNleHAudCkgLT4gJ2EgYXJyYXkgLT4gU2V4cC50ID0gc2V4cF9vZl9hcnJheVxuICAgIG1ldGhvZCBvdGhlciA6ICdhLiAnYSAtPiBTZXhwLnQgPSBmdW4gXyAtPiBTZXhwLkF0b20gXCJfXCJcblxuICAgIG1ldGhvZCByZWNvcmQgZmllbGRzID1cbiAgICAgIExpc3RcbiAgICAgICAgKExpc3QubWFwIGZpZWxkcyB+ZjooZnVuIChsYWJlbCwgc2V4cCkgLT5cbiAgICAgICAgICAgICBTZXhwLkxpc3QgWyBBdG9tIGxhYmVsOyBzZXhwIF0pKVxuXG4gICAgbWV0aG9kIGNvbnN0ciB0YWcgYXJncyA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGggW10gLT4gQXRvbSB0YWcgfCBfIC0+IExpc3QgKEF0b20gdGFnIDo6IGFyZ3MpXG5cbiAgICBtZXRob2QgdHVwbGUgbCA9IExpc3QgbFxuICBlbmRcblxubGV0IHNleHBfb2YgPSBuZXcgc2V4cF9vZlxuIiwiIyAxIFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gXG5vcGVuIExleGluZ1xuXG5sZXQgdXBkYXRlX2xvYyBsZXhidWYgbGluZXNfdG9fc2tpcCA9XG4gIGxldCBwb3MgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBsZXhidWYubGV4X2N1cnJfcCA8LSB7IHBvcyB3aXRoXG4gICAgcG9zX2xudW0gPSBwb3MucG9zX2xudW0gKyBsaW5lc190b19za2lwO1xuICAgIHBvc19ib2wgPSBwb3MucG9zX2NudW07XG4gIH1cblxuIyAxMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDZcXDAwMFxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyBza2lwX2hhc2hfYmFuZyBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9oYXNoX2JhbmdfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTQgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxsXCJcbiAgICAgICggdXBkYXRlX2xvYyBsZXhidWYgMyApXG4jIDExMyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbFwiXG5cbiAgfCAxIC0+XG4jIDE2IFwic3JjL3NraXBfaGFzaF9iYW5nLm1sbFwiXG4gICAgICAoIHVwZGF0ZV9sb2MgbGV4YnVmIDEgKVxuIyAxMTggXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgMiAtPlxuIyAxNyBcInNyYy9za2lwX2hhc2hfYmFuZy5tbGxcIlxuICAgICAgICggKCkgKVxuIyAxMjMgXCJzcmMvc2tpcF9oYXNoX2JhbmcubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2hhc2hfYmFuZ19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiIsIm9wZW4gSW1wb3J0XG5cbmxldCB3aXRoX291dHB1dCBmbiB+YmluYXJ5IH5mID1cbiAgbWF0Y2ggZm4gd2l0aFxuICB8IE5vbmUgfCBTb21lIFwiLVwiIC0+XG4gICAgICAoKiBGbGlwcGluZyBiYWNrIGFuZCBmb3J0aCBmcm9tIGJpbmFyeSB0byB0ZXh0IGlzIG5vdFxuICAgICAgICAgYSBnb29kIGlkZWEsIHNvIHdlJ2xsIG1ha2UgdHdvIHNpbXBsaWZ5aW5nIGFzc3VtcHRpb25zOlxuICAgICAgICAgMS4gQXNzdW1lIHRoYXQgbm90aGluZyBpcyBidWZmZXJlZCBvbiBzdGRvdXQgYmVmb3JlXG4gICAgICAgICAgICBlbnRlcmluZyBbd2l0aF9vdXRwdXRdLiBUaGF0IG1lYW5zIHdlIGRvbid0IG5lZWQgdG9cbiAgICAgICAgICAgIGZsdXNoIHRoZSBzdGRvdXQgb24gZW50cnkuXG4gICAgICAgICAyLiBBc3N1bWUgdGhhdCBub3RoaW5nIGVsc2UgaXMgc2VudCB0byBzdGRvdXQgYWZ0ZXJcbiAgICAgICAgICAgIFt3aXRoX291dHB1dF0uIFRoYXQgbWVhbnMgaXQgaXMgc2FmZSB0byBsZWF2ZSBzdGRvdXRcbiAgICAgICAgICAgIGNoYW5uZWwgaW4gYmluYXJ5IG1vZGUgKG9yIHRleHQgbW9kZSBpZiBbYmluYXJ5PXRydWVdKVxuICAgICAgICAgICAgYWZ0ZXIgdGhlIGZ1bmN0aW9uIGlzIGRvbmUuICopXG4gICAgICBzZXRfYmluYXJ5X21vZGVfb3V0IHN0ZG91dCBiaW5hcnk7XG4gICAgICBmIHN0ZG91dFxuICB8IFNvbWUgZm4gLT4gT3V0X2NoYW5uZWwud2l0aF9maWxlIGZuIH5iaW5hcnkgfmZcblxubW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50ZiB8IEltcGxcblxuICBsZXQgb2ZfZmlsZW5hbWUgZm4gOiB0IG9wdGlvbiA9XG4gICAgaWYgU3RkbGliLkZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmbiBcIi5tbFwiIHRoZW4gU29tZSBJbXBsXG4gICAgZWxzZSBpZiBTdGRsaWIuRmlsZW5hbWUuY2hlY2tfc3VmZml4IGZuIFwiLm1saVwiIHRoZW4gU29tZSBJbnRmXG4gICAgZWxzZSBOb25lXG5cbiAgbGV0IGRlc2NyaWJlID0gZnVuY3Rpb24gSW1wbCAtPiBcImltcGxlbWVudGF0aW9uXCIgfCBJbnRmIC0+IFwiaW50ZXJmYWNlXCJcbiAgbGV0IGVxdWFsIDogdCAtPiB0IC0+IGJvb2wgPSBQb2x5LmVxdWFsXG5lbmRcblxubW9kdWxlIEludGZfb3JfaW1wbCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnRmIG9mIHNpZ25hdHVyZSB8IEltcGwgb2Ygc3RydWN0dXJlXG5cbiAgbGV0IG1hcCB0IChtYXAgOiBBc3RfdHJhdmVyc2UubWFwKSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBJbXBsIHggLT4gSW1wbCAobWFwI3N0cnVjdHVyZSB4KVxuICAgIHwgSW50ZiB4IC0+IEludGYgKG1hcCNzaWduYXR1cmUgeClcblxuICBsZXQgbWFwX3dpdGhfY29udGV4dCB0IChtYXAgOiBfIEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9jb250ZXh0KSBjdHggPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgSW1wbCB4IC0+IEltcGwgKG1hcCNzdHJ1Y3R1cmUgY3R4IHgpXG4gICAgfCBJbnRmIHggLT4gSW50ZiAobWFwI3NpZ25hdHVyZSBjdHggeClcblxuICBsZXQga2luZCA6IF8gLT4gS2luZC50ID0gZnVuY3Rpb24gSW50ZiBfIC0+IEludGYgfCBJbXBsIF8gLT4gSW1wbFxuZW5kXG5cbm1vZHVsZSBBc3RfaW8gPSBzdHJ1Y3RcbiAgdHlwZSBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBPQ2FtbF92ZXJzaW9uKVxuXG4gIGxldCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgQ29tcGlsZXJfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pXG4gICgqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBpbnB1dCB2ZXJzaW9uIGNhbid0IGJlIGRldGVybWluZWQgZHVlIHRvXG4gICAgICBsb2FkaW5nIG9yIHByZXByb2Nlc3NpbmcgZXJyb3JzICopXG5cbiAgdHlwZSB0ID0ge1xuICAgIGlucHV0X25hbWUgOiBzdHJpbmc7XG4gICAgaW5wdXRfdmVyc2lvbiA6IGlucHV0X3ZlcnNpb247XG4gICAgYXN0IDogSW50Zl9vcl9pbXBsLnQ7XG4gIH1cblxuICB0eXBlIHJlYWRfZXJyb3IgPVxuICAgIHwgTm90X2FfYmluYXJ5X2FzdFxuICAgIHwgVW5rbm93bl92ZXJzaW9uIG9mIHN0cmluZyAqIGlucHV0X3ZlcnNpb25cbiAgICB8IFNvdXJjZV9wYXJzZV9lcnJvciBvZiBMb2NhdGlvbi5FcnJvci50ICogaW5wdXRfdmVyc2lvblxuICAgIHwgU3lzdGVtX2Vycm9yIG9mIExvY2F0aW9uLkVycm9yLnQgKiBpbnB1dF92ZXJzaW9uXG5cbiAgdHlwZSBpbnB1dF9zb3VyY2UgPSBTdGRpbiB8IEZpbGUgb2Ygc3RyaW5nXG4gIHR5cGUgaW5wdXRfa2luZCA9IFBvc3NpYmx5X3NvdXJjZSBvZiBLaW5kLnQgKiBzdHJpbmcgfCBOZWNlc3NhcmlseV9iaW5hcnlcblxuICBsZXQgcmVhZF9lcnJvcl90b19zdHJpbmcgKGVycm9yIDogcmVhZF9lcnJvcikgPVxuICAgIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vdF9hX2JpbmFyeV9hc3QgLT4gXCJFcnJvcjogTm90IGEgYmluYXJ5IGFzdFwiXG4gICAgfCBVbmtub3duX3ZlcnNpb24gKHMsIF8pIC0+IFwiRXJyb3I6IFVua25vd24gdmVyc2lvbiBcIiBeIHNcbiAgICB8IFNvdXJjZV9wYXJzZV9lcnJvciAobG9jLCBfKSAtPlxuICAgICAgICBcIlNvdXJjZSBwYXJzZSBlcnJvcjpcIiBeIExvY2F0aW9uLkVycm9yLm1lc3NhZ2UgbG9jXG4gICAgfCBTeXN0ZW1fZXJyb3IgKGxvYywgXykgLT4gXCJTeXN0ZW0gZXJyb3I6IFwiIF4gTG9jYXRpb24uRXJyb3IubWVzc2FnZSBsb2NcblxuICBsZXQgcGFyc2Vfc291cmNlX2NvZGUgfihraW5kIDogS2luZC50KSB+aW5wdXRfbmFtZSB+cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgaWNcbiAgICAgID1cbiAgICAoKiBUaGUgaW5wdXQgdmVyc2lvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmYWN0IHRoYXQgdGhlIGlucHV0IHdpbGwgZ2V0IHBhcnNlZCBieVxuICAgICAgIHRoZSBjdXJyZW50IGNvbXBpbGVyIFBhcnNlIG1vZHVsZSAqKVxuICAgIGxldCBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBDb21waWxlcl92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgaW5cbiAgICB0cnlcbiAgICAgICgqIFRvIHRlc3QgaWYgYSBmaWxlIGlzIGFuIEFTVCBmaWxlLCB3ZSBoYXZlIHRvIHJlYWQgdGhlIGZpcnN0IGZldyBieXRlcyBvZiB0aGVcbiAgICAgICAgICBmaWxlLiBJZiBpdCBpcyBub3QsIHdlIGhhdmUgdG8gcGFyc2UgdGhlc2UgYnl0ZXMgYW5kIHRoZSByZXN0IG9mIHRoZSBmaWxlIGFzXG4gICAgICAgICAgc291cmNlIGNvZGUuXG5cbiAgICAgICAgICBUaGUgY29tcGlsZXIganVzdCBkb2VzIFtzZWVrX29uIDBdIGluIHRoaXMgY2FzZSwgaG93ZXZlciB0aGlzIGRvZXNuJ3Qgd29yayB3aGVuXG4gICAgICAgICAgdGhlIGlucHV0IGlzIGEgcGlwZS5cblxuICAgICAgICAgIFdoYXQgd2UgZG8gaW5zdGVhZCBpcyBjcmVhdGUgYSBsZXhpbmcgYnVmZmVyIGZyb20gdGhlIGlucHV0IGNoYW5uZWwgYW5kIHByZS1maWxsXG4gICAgICAgICAgaXQgd2l0aCB3aGF0IHdlIHJlYWQgdG8gZG8gdGhlIHRlc3QuICopXG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgaW5cbiAgICAgIEJ5dGVzLmJsaXRfc3RyaW5nIH5zcmM6cHJlZml4X3JlYWRfZnJvbV9zb3VyY2UgfnNyY19wb3M6MFxuICAgICAgICB+ZHN0OmxleGJ1Zi5sZXhfYnVmZmVyIH5kc3RfcG9zOjAgfmxlbjtcbiAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiA8LSBsZW47XG4gICAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgICB7IHBvc19mbmFtZSA9IGlucHV0X25hbWU7IHBvc19sbnVtID0gMTsgcG9zX2JvbCA9IDA7IHBvc19jbnVtID0gMCB9O1xuICAgICAgU2tpcF9oYXNoX2Jhbmcuc2tpcF9oYXNoX2JhbmcgbGV4YnVmO1xuICAgICAgbGV0IGFzdCA6IEludGZfb3JfaW1wbC50ID1cbiAgICAgICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICAgIHwgSW50ZiAtPiBJbnRmIChQYXJzZS5pbnRlcmZhY2UgbGV4YnVmKVxuICAgICAgICB8IEltcGwgLT4gSW1wbCAoUGFyc2UuaW1wbGVtZW50YXRpb24gbGV4YnVmKVxuICAgICAgaW5cbiAgICAgIE9rIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH1cbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgaW5wdXRfdmVyc2lvbikpKVxuXG4gIGxldCBtYWdpY19sZW5ndGggPSBTdHJpbmcubGVuZ3RoIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyXG5cbiAgbGV0IHJlYWRfbWFnaWMgaWMgPVxuICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbWFnaWNfbGVuZ3RoIGluXG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIG1hZ2ljX2xlbmd0aCBpblxuICAgIGxldCBzID0gQnl0ZXMuc3ViX3N0cmluZyBidWYgfnBvczowIH5sZW4gaW5cbiAgICBpZiBsZW4gPSBtYWdpY19sZW5ndGggdGhlbiBPayBzIGVsc2UgRXJyb3Igc1xuXG4gIGxldCBmcm9tX2NoYW5uZWwgY2ggfmlucHV0X2tpbmQgPVxuICAgIGxldCBoYW5kbGVfbm9uX2JpbmFyeSBwcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSA9XG4gICAgICBtYXRjaCBpbnB1dF9raW5kIHdpdGhcbiAgICAgIHwgUG9zc2libHlfc291cmNlIChraW5kLCBpbnB1dF9uYW1lKSAtPlxuICAgICAgICAgIHBhcnNlX3NvdXJjZV9jb2RlIH5raW5kIH5pbnB1dF9uYW1lIH5wcmVmaXhfcmVhZF9mcm9tX3NvdXJjZSBjaFxuICAgICAgfCBOZWNlc3NhcmlseV9iaW5hcnkgLT4gRXJyb3IgTm90X2FfYmluYXJ5X2FzdFxuICAgIGluXG4gICAgKCogTWFyc2hhbGxlZCBBU1QgbXVzdCBiZSByZWFkIGluIGJpbmFyeSBtb2RlLiBFdmVuIHRob3VnaCB3ZSBkb24ndCBrbm93XG4gICAgICAgYmVmb3JlIHJlYWRpbmcgdGhlIG1hZ2ljIG51bWJlciB3aGVuIHRoZSBmaWxlIGhhcyBhIG1hcnNoYWxsZWQgQVNULFxuICAgICAgIGl0IGlzIHNhZmUgdG8gcmVhZCBzb3VyY2UgZmlsZXMgaW4gYmluYXJ5IG1vZGUuICopXG4gICAgc2V0X2JpbmFyeV9tb2RlX2luIGNoIHRydWU7XG4gICAgbWF0Y2ggcmVhZF9tYWdpYyBjaCB3aXRoXG4gICAgfCBFcnJvciBzIC0+IGhhbmRsZV9ub25fYmluYXJ5IHNcbiAgICB8IE9rIHMgLT4gKFxuICAgICAgICBtYXRjaCBGaW5kX3ZlcnNpb24uZnJvbV9tYWdpYyBzIHdpdGhcbiAgICAgICAgfCBJbnRmIChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pIC0+XG4gICAgICAgICAgICBsZXQgaW5wdXRfbmFtZSA6IHN0cmluZyA9IGlucHV0X3ZhbHVlIGNoIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBtb2R1bGUgSW5wdXRfdG9fcHB4bGliID0gQ29udmVydCAoSW5wdXRfdmVyc2lvbikgKEpzKSBpblxuICAgICAgICAgICAgbGV0IGFzdCA9IEludGZfb3JfaW1wbC5JbnRmIChJbnB1dF90b19wcHhsaWIuY29weV9zaWduYXR1cmUgYXN0KSBpblxuICAgICAgICAgICAgT2tcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlucHV0X25hbWU7XG4gICAgICAgICAgICAgICAgaW5wdXRfdmVyc2lvbiA9IChtb2R1bGUgSW5wdXRfdmVyc2lvbiA6IE9DYW1sX3ZlcnNpb24pO1xuICAgICAgICAgICAgICAgIGFzdDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICB8IEltcGwgKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbikgLT5cbiAgICAgICAgICAgIGxldCBpbnB1dF9uYW1lIDogc3RyaW5nID0gaW5wdXRfdmFsdWUgY2ggaW5cbiAgICAgICAgICAgIGxldCBhc3QgPSBpbnB1dF92YWx1ZSBjaCBpblxuICAgICAgICAgICAgbGV0IG1vZHVsZSBJbnB1dF90b19wcHhsaWIgPSBDb252ZXJ0IChJbnB1dF92ZXJzaW9uKSAoSnMpIGluXG4gICAgICAgICAgICBsZXQgYXN0ID0gSW50Zl9vcl9pbXBsLkltcGwgKElucHV0X3RvX3BweGxpYi5jb3B5X3N0cnVjdHVyZSBhc3QpIGluXG4gICAgICAgICAgICBPa1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW5wdXRfbmFtZTtcbiAgICAgICAgICAgICAgICBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uIDogT0NhbWxfdmVyc2lvbik7XG4gICAgICAgICAgICAgICAgYXN0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgIHwgVW5rbm93biAtPlxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgU3RyaW5nLmVxdWFsXG4gICAgICAgICAgICAgICAgKFN0cmluZy5zdWIgcyB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIEFzdGxpYi5Db25maWcuYXN0X2ltcGxfbWFnaWNfbnVtYmVyIH5wb3M6MCB+bGVuOjkpXG4gICAgICAgICAgICAgIHx8IFN0cmluZy5lcXVhbFxuICAgICAgICAgICAgICAgICAgIChTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46OSlcbiAgICAgICAgICAgICAgICAgICAoU3RyaW5nLnN1YiBBc3RsaWIuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICAgICAgICAgICAgdGhlbiBFcnJvciAoVW5rbm93bl92ZXJzaW9uIChzLCBmYWxsX2JhY2tfaW5wdXRfdmVyc2lvbikpXG4gICAgICAgICAgICBlbHNlIGhhbmRsZV9ub25fYmluYXJ5IHMpXG5cbiAgbGV0IHJlYWQgaW5wdXRfc291cmNlIH5pbnB1dF9raW5kID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIGlucHV0X3NvdXJjZSB3aXRoXG4gICAgICB8IFN0ZGluIC0+XG4gICAgICAgICAgc2V0X2JpbmFyeV9tb2RlX2luIHN0ZGluIHRydWU7XG4gICAgICAgICAgZnJvbV9jaGFubmVsIHN0ZGluIH5pbnB1dF9raW5kXG4gICAgICB8IEZpbGUgZm4gLT4gSW5fY2hhbm5lbC53aXRoX2ZpbGUgZm4gfmY6KGZyb21fY2hhbm5lbCB+aW5wdXRfa2luZClcbiAgICB3aXRoIGV4biAtPiAoXG4gICAgICBtYXRjaCBMb2NhdGlvbi5FcnJvci5vZl9leG4gZXhuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBleG5cbiAgICAgIHwgU29tZSBlcnJvciAtPiBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX2lucHV0X3ZlcnNpb24pKSlcblxuICBsZXQgd3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uID0gKG1vZHVsZSBJbnB1dF92ZXJzaW9uKTsgYXN0IH1cbiAgICAgIH5hZGRfcHB4X2NvbnRleHQgPVxuICAgIGxldCBtb2R1bGUgUHB4bGliX3RvX2lucHV0ID0gQ29udmVydCAoSnMpIChJbnB1dF92ZXJzaW9uKSBpblxuICAgIGxldCBtb2R1bGUgT2NhbWxfdG9faW5wdXQgPSBDb252ZXJ0IChDb21waWxlcl92ZXJzaW9uKSAoSW5wdXRfdmVyc2lvbikgaW5cbiAgICBtYXRjaCBhc3Qgd2l0aFxuICAgIHwgSW50ZiBzZyAtPlxuICAgICAgICBsZXQgc2cgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zaWduYXR1cmUgc2dcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3NpZyB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3NpZ25hdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc2lnbmF0dXJlIHNnXG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbnRmX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzZ1xuICAgIHwgSW1wbCBzdCAtPlxuICAgICAgICBsZXQgc3QgPVxuICAgICAgICAgIGlmIGFkZF9wcHhfY29udGV4dCB0aGVuXG4gICAgICAgICAgICBTZWxlY3RlZF9hc3QuVG9fb2NhbWwuY29weV9zdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgIHw+IEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4X2RyaXZlclwiXG4gICAgICAgICAgICB8PiBPY2FtbF90b19pbnB1dC5jb3B5X3N0cnVjdHVyZVxuICAgICAgICAgIGVsc2UgUHB4bGliX3RvX2lucHV0LmNvcHlfc3RydWN0dXJlIHN0XG4gICAgICAgIGluXG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgSW5wdXRfdmVyc2lvbi5Bc3QuQ29uZmlnLmFzdF9pbXBsX21hZ2ljX251bWJlcjtcbiAgICAgICAgb3V0cHV0X3ZhbHVlIG9jIGlucHV0X25hbWU7XG4gICAgICAgIG91dHB1dF92YWx1ZSBvYyBzdFxuXG4gIG1vZHVsZSBSZWFkX2JpbiA9IHN0cnVjdFxuICAgIHR5cGUgYXN0ID0gSW50ZiBvZiBzaWduYXR1cmUgfCBJbXBsIG9mIHN0cnVjdHVyZVxuICAgIHR5cGUgdCA9IHsgYXN0IDogYXN0OyBpbnB1dF9uYW1lIDogc3RyaW5nIH1cblxuICAgIGxldCByZWFkX2JpbmFyeSBmbiA9XG4gICAgICBtYXRjaFxuICAgICAgICBJbl9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnJvbV9jaGFubmVsIH5pbnB1dF9raW5kOk5lY2Vzc2FyaWx5X2JpbmFyeSlcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgeyBhc3Q7IGlucHV0X25hbWU7IF8gfSAtPlxuICAgICAgICAgIGxldCBhc3QgPVxuICAgICAgICAgICAgbWF0Y2ggYXN0IHdpdGhcbiAgICAgICAgICAgIHwgSW1wbCBzdHJ1Y3R1cmUgLT4gSW1wbCBzdHJ1Y3R1cmVcbiAgICAgICAgICAgIHwgSW50ZiBzaWduYXR1cmUgLT4gSW50ZiBzaWduYXR1cmVcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgYXN0OyBpbnB1dF9uYW1lIH1cbiAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAocmVhZF9lcnJvcl90b19zdHJpbmcgZSlcblxuICAgIGxldCBnZXRfYXN0IHQgPSB0LmFzdFxuICAgIGxldCBnZXRfaW5wdXRfbmFtZSB0ID0gdC5pbnB1dF9uYW1lXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTeXN0ZW0gPSBzdHJ1Y3RcbiAgbGV0IHJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dCB+b3V0cHV0ID1cbiAgICBsZXQgY29tbWFuZCA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIiVzICVzID4gJXNcIiBwcFxuICAgICAgICAoaWYgU3RyaW5nLmVxdWFsIGlucHV0IFwiLVwiIHRoZW4gXCJcIiBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBpbnB1dClcbiAgICAgICAgKFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBvdXRwdXQpXG4gICAgaW5cbiAgICBpZiBTdGRsaWIuU3lzLmNvbW1hbmQgY29tbWFuZCA9IDAgdGhlbiBPayAoKVxuICAgIGVsc2UgRXJyb3IgKGNvbW1hbmQsIEFzdF9pby5mYWxsX2JhY2tfaW5wdXRfdmVyc2lvbilcbmVuZFxuIiwiKCokIG9wZW4gUHB4bGliX2NpbmFwc19oZWxwZXJzICQqKVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRm9ybWF0ID0gU3RkbGliLkZvcm1hdFxubW9kdWxlIEZpbGVuYW1lID0gU3RkbGliLkZpbGVuYW1lXG5cbigqIFRPRE86IG1ha2UgdGhlIFwiZGVyaXZpbmcuXCIgZGVwZW5kIG9uIHRoZSBtYXRjaGluZyBhdHRyaWJ1dGUgbmFtZS4gKilcbmxldCBlbmRfbWFya2VyX3NpZyA9XG4gIEF0dHJpYnV0ZS5GbG9hdGluZy5kZWNsYXJlIFwiZGVyaXZpbmcuZW5kXCIgU2lnbmF0dXJlX2l0ZW1cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcblxubGV0IGVuZF9tYXJrZXJfc3RyID1cbiAgQXR0cmlidXRlLkZsb2F0aW5nLmRlY2xhcmUgXCJkZXJpdmluZy5lbmRcIiBTdHJ1Y3R1cmVfaXRlbVxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuXG5tb2R1bGUgdHlwZSBUMSA9IHNpZ1xuICB0eXBlICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoTSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZ2V0X2xvYyA6IHQgLT4gTG9jYXRpb24udFxuICB2YWwgZW5kX21hcmtlciA6ICh0LCB1bml0KSBBdHRyaWJ1dGUuRmxvYXRpbmcudFxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgOiBzaWdcbiAgICB2YWwgYXBwbHkgOlxuICAgICAgPCBzdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIFQudFxuICAgICAgOyBzaWduYXR1cmVfaXRlbSA6IHNpZ25hdHVyZV9pdGVtIFQudFxuICAgICAgOyAuLiA+IC0+XG4gICAgICB0IFQudFxuICBlbmRcblxuICB2YWwgcGFyc2UgOiBMZXhpbmcubGV4YnVmIC0+IHQgbGlzdFxuICB2YWwgcHAgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IHQgLT4gdW5pdFxuICB2YWwgdG9fc2V4cCA6IHQgLT4gU2V4cC50XG5lbmQpID1cbnN0cnVjdFxuICBsZXQgZXh0cmFjdF9wcmVmaXggfnBvcyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgbG9jID1cbiAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2MgXCJwcHhsaWI6IFtAQEBAQEAlc10gYXR0cmlidXRlIG1pc3NpbmdcIlxuICAgICAgICAgICAgICAgIChBdHRyaWJ1dGUuRmxvYXRpbmcubmFtZSBNLmVuZF9tYXJrZXIpLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICB8IHggOjogbCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXR0cmlidXRlLkZsb2F0aW5nLmNvbnZlcnRfcmVzIFsgTS5lbmRfbWFya2VyIF0geCB3aXRoXG4gICAgICAgICAgfCBPayBOb25lIC0+IGxvb3AgKHggOjogYWNjKSBsXG4gICAgICAgICAgfCBPayAoU29tZSAoKSkgLT4gT2sgKExpc3QucmV2IGFjYywgKE0uZ2V0X2xvYyB4KS5sb2Nfc3RhcnQpXG4gICAgICAgICAgfCBFcnJvciBlIC0+IEVycm9yIGVcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBGYWlsdXJlIF8gLT4gbG9vcCAoeCA6OiBhY2MpIGwpXG4gICAgaW5cbiAgICBsb29wIFtdIGxcblxuICBsZXQgcmVtb3ZlX2xvYyA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBcbiAgICAgIG1ldGhvZCEgbG9jYXRpb24gXyA9IExvY2F0aW9uLm5vbmVcbiAgICAgIG1ldGhvZCEgbG9jYXRpb25fc3RhY2sgXyA9IFtdXG4gICAgZW5kXG5cbiAgbW9kdWxlIE1fbWFwID0gTS5UcmFuc2Zvcm0gKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIC0+ICdhXG4gIGVuZClcblxuICBsZXQgcmVtb3ZlX2xvYyB4ID0gTV9tYXAuYXBwbHkgcmVtb3ZlX2xvYyB4XG4gIGxldCByZWMgbGFzdCBwcmV2ID0gZnVuY3Rpb24gW10gLT4gcHJldiB8IHggOjogbCAtPiBsYXN0IHggbFxuXG4gIGxldCBkaWZmX2FzdHMgfmdlbmVyYXRlZCB+cm91bmRfdHJpcCA9XG4gICAgbGV0IHdpdGhfdGVtcF9maWxlIGYgPVxuICAgICAgRXhuLnByb3RlY3R4XG4gICAgICAgIChGaWxlbmFtZS50ZW1wX2ZpbGUgXCJwcHhsaWJcIiBcIlwiKVxuICAgICAgICB+ZmluYWxseTpTdGRsaWIuU3lzLnJlbW92ZSB+ZlxuICAgIGluXG4gICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjEgLT5cbiAgICAgICAgd2l0aF90ZW1wX2ZpbGUgKGZ1biBmbjIgLT5cbiAgICAgICAgICAgIHdpdGhfdGVtcF9maWxlIChmdW4gb3V0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGR1bXAgZm4gYXN0ID1cbiAgICAgICAgICAgICAgICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmbiB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0IHBwZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICBTZXhwLnBwX2h1bSBwcGYgKE0udG9fc2V4cCBhc3QpO1xuICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9mbHVzaCBwcGYgKCkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBkdW1wIGZuMSBnZW5lcmF0ZWQ7XG4gICAgICAgICAgICAgICAgZHVtcCBmbjIgcm91bmRfdHJpcDtcbiAgICAgICAgICAgICAgICBsZXQgY21kID1cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIFwicGF0ZGlmZiAtYXNjaWkgLWFsdC1vbGQgZ2VuZXJhdGVkIC1hbHQtbmV3IFxcXG4gICAgICAgICAgICAgICAgICAgICAnZ2VuZXJhdGVkLT5wcmludGVkLT5wYXJzZWQnICVzICVzICY+ICVzXCJcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIGZuMSkgKEZpbGVuYW1lLnF1b3RlIGZuMilcbiAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvayA9XG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgIGxldCBjbWQgPVxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIFwiZGlmZiAtLWxhYmVsIGdlbmVyYXRlZCAtLWxhYmVsIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICdnZW5lcmF0ZWQtPnByaW50ZWQtPnBhcnNlZCcgJXMgJXMgJj4gJXNcIlxuICAgICAgICAgICAgICAgICAgICAgIChGaWxlbmFtZS5xdW90ZSBmbjEpIChGaWxlbmFtZS5xdW90ZSBmbjIpXG4gICAgICAgICAgICAgICAgICAgICAgKEZpbGVuYW1lLnF1b3RlIG91dClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuU3lzLmNvbW1hbmQgY21kID0gMVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWYgb2sgdGhlbiBJbl9jaGFubmVsLnJlYWRfYWxsIG91dFxuICAgICAgICAgICAgICAgIGVsc2UgXCI8bm8gZGlmZmVyZW5jZXMgcHJvZHVjZWQgYnkgZGlmZj5cIikpKVxuXG4gIGxldCBwYXJzZV9zdHJpbmcgcyA9XG4gICAgbWF0Y2ggTS5wYXJzZSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpIHdpdGggWyB4IF0gLT4geCB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IHJlYyBtYXRjaF9sb29wIH5lbmRfcG9zIH5taXNtYXRjaF9oYW5kbGVyIH5leHBlY3RlZCB+c291cmNlID1cbiAgICBtYXRjaCAoZXhwZWN0ZWQsIHNvdXJjZSkgd2l0aFxuICAgIHwgW10sIFtdIC0+ICgpXG4gICAgfCBbXSwgeCA6OiBsIC0+XG4gICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgIHsgKE0uZ2V0X2xvYyB4KSB3aXRoIGxvY19lbmQgPSAoTS5nZXRfbG9jIChsYXN0IHggbCkpLmxvY19lbmQgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbXVxuICAgIHwgXywgW10gLT5cbiAgICAgICAgbGV0IGxvYyA9XG4gICAgICAgICAgeyBMb2NhdGlvbi5sb2NfZ2hvc3QgPSBmYWxzZTsgbG9jX3N0YXJ0ID0gZW5kX3BvczsgbG9jX2VuZCA9IGVuZF9wb3MgfVxuICAgICAgICBpblxuICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBleHBlY3RlZFxuICAgIHwgeCA6OiBleHBlY3RlZCwgeSA6OiBzb3VyY2UgLT5cbiAgICAgICAgbGV0IGxvYyA9IE0uZ2V0X2xvYyB5IGluXG4gICAgICAgIGxldCB4ID0gcmVtb3ZlX2xvYyB4IGluXG4gICAgICAgIGxldCB5ID0gcmVtb3ZlX2xvYyB5IGluXG4gICAgICAgIGlmIFBvbHkuKCA8PiApIHggeSB0aGVuIChcbiAgICAgICAgICBsZXQgcm91bmRfdHJpcCA9XG4gICAgICAgICAgICByZW1vdmVfbG9jIChwYXJzZV9zdHJpbmcgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiBNLnBwIHgpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgUG9seS4oIDw+ICkgeCByb3VuZF90cmlwIHRoZW5cbiAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jXG4gICAgICAgICAgICAgIFwicHB4bGliOiB0aGUgY29ycmVjdGVkIGNvZGUgZG9lc24ndCByb3VuZC10cmlwLlxcblxcXG4gICAgICAgICAgICAgICBUaGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHRoZSBPQ2FtbCBwcmludGVyOlxcblxcXG4gICAgICAgICAgICAgICAlc1wiXG4gICAgICAgICAgICAgIChkaWZmX2FzdHMgfmdlbmVyYXRlZDp4IH5yb3VuZF90cmlwKTtcbiAgICAgICAgICBtaXNtYXRjaF9oYW5kbGVyIGxvYyBbIHggXSk7XG4gICAgICAgIG1hdGNoX2xvb3AgfmVuZF9wb3Mgfm1pc21hdGNoX2hhbmRsZXIgfmV4cGVjdGVkIH5zb3VyY2VcblxuICBsZXQgZG9fbWF0Y2ggfnBvcyB+ZXhwZWN0ZWQgfm1pc21hdGNoX2hhbmRsZXIgc291cmNlID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBleHRyYWN0X3ByZWZpeCB+cG9zIHNvdXJjZSA+PnwgZnVuIChzb3VyY2UsIGVuZF9wb3MpIC0+XG4gICAgbWF0Y2hfbG9vcCB+ZW5kX3BvcyB+bWlzbWF0Y2hfaGFuZGxlciB+ZXhwZWN0ZWQgfnNvdXJjZVxuZW5kXG5cbigqJCopXG5tb2R1bGUgU3RyID0gTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGdldF9sb2MgeCA9IHgucHN0cl9sb2NcbiAgbGV0IGVuZF9tYXJrZXIgPSBlbmRfbWFya2VyX3N0clxuXG4gIG1vZHVsZSBUcmFuc2Zvcm0gKFQgOiBUMSkgPSBzdHJ1Y3RcbiAgICBsZXQgYXBwbHkgbyA9IG8jc3RydWN0dXJlX2l0ZW1cbiAgZW5kXG5cbiAgbGV0IHBhcnNlID0gUGFyc2UuaW1wbGVtZW50YXRpb25cbiAgbGV0IHBwID0gUHByaW50YXN0LnN0cnVjdHVyZV9pdGVtXG4gIGxldCB0b19zZXhwID0gQXN0X3RyYXZlcnNlLnNleHBfb2Yjc3RydWN0dXJlX2l0ZW1cbmVuZClcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxubW9kdWxlIFNpZyA9IE1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBzaWduYXR1cmVfaXRlbVxuXG4gIGxldCBnZXRfbG9jIHggPSB4LnBzaWdfbG9jXG4gIGxldCBlbmRfbWFya2VyID0gZW5kX21hcmtlcl9zaWdcblxuICBtb2R1bGUgVHJhbnNmb3JtIChUIDogVDEpID0gc3RydWN0XG4gICAgbGV0IGFwcGx5IG8gPSBvI3NpZ25hdHVyZV9pdGVtXG4gIGVuZFxuXG4gIGxldCBwYXJzZSA9IFBhcnNlLmludGVyZmFjZVxuICBsZXQgcHAgPSBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgbGV0IHRvX3NleHAgPSBBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmVfaXRlbVxuZW5kKVxuXG4oKiQqKVxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlX3JlcyA9IFN0ci5kb19tYXRjaFxuXG5sZXQgbWF0Y2hfc3RydWN0dXJlIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGwgPVxuICBtYXRjaF9zdHJ1Y3R1cmVfcmVzIH5wb3MgfmV4cGVjdGVkIH5taXNtYXRjaF9oYW5kbGVyIGxcbiAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcblxubGV0IG1hdGNoX3NpZ25hdHVyZV9yZXMgPSBTaWcuZG9fbWF0Y2hcblxubGV0IG1hdGNoX3NpZ25hdHVyZSB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsID1cbiAgbWF0Y2hfc2lnbmF0dXJlX3JlcyB+cG9zIH5leHBlY3RlZCB+bWlzbWF0Y2hfaGFuZGxlciBsXG4gIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5cbnR5cGUgKF8sIF8pIGVxdWFsaXR5ID0gRXEgOiAoJ2EsICdhKSBlcXVhbGl0eSB8IE5lIDogKF8sIF8pIGVxdWFsaXR5XG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBDbGFzc19leHByIDogY2xhc3NfZXhwciB0XG4gICAgfCBDbGFzc19maWVsZCA6IGNsYXNzX2ZpZWxkIHRcbiAgICB8IENsYXNzX3R5cGUgOiBjbGFzc190eXBlIHRcbiAgICB8IENsYXNzX3R5cGVfZmllbGQgOiBjbGFzc190eXBlX2ZpZWxkIHRcbiAgICB8IENvcmVfdHlwZSA6IGNvcmVfdHlwZSB0XG4gICAgfCBFeHByZXNzaW9uIDogZXhwcmVzc2lvbiB0XG4gICAgfCBNb2R1bGVfZXhwciA6IG1vZHVsZV9leHByIHRcbiAgICB8IE1vZHVsZV90eXBlIDogbW9kdWxlX3R5cGUgdFxuICAgIHwgUGF0dGVybiA6IHBhdHRlcm4gdFxuICAgIHwgU2lnbmF0dXJlX2l0ZW0gOiBzaWduYXR1cmVfaXRlbSB0XG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSA6IHN0cnVjdHVyZV9pdGVtIHRcbiAgICB8IFBweF9pbXBvcnQgOiB0eXBlX2RlY2xhcmF0aW9uIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiBfIHQgLT4gcGFja2VkXG5cbiAgbGV0IGNsYXNzX2V4cHIgPSBDbGFzc19leHByXG4gIGxldCBjbGFzc19maWVsZCA9IENsYXNzX2ZpZWxkXG4gIGxldCBjbGFzc190eXBlID0gQ2xhc3NfdHlwZVxuICBsZXQgY2xhc3NfdHlwZV9maWVsZCA9IENsYXNzX3R5cGVfZmllbGRcbiAgbGV0IGNvcmVfdHlwZSA9IENvcmVfdHlwZVxuICBsZXQgZXhwcmVzc2lvbiA9IEV4cHJlc3Npb25cbiAgbGV0IG1vZHVsZV9leHByID0gTW9kdWxlX2V4cHJcbiAgbGV0IG1vZHVsZV90eXBlID0gTW9kdWxlX3R5cGVcbiAgbGV0IHBhdHRlcm4gPSBQYXR0ZXJuXG4gIGxldCBzaWduYXR1cmVfaXRlbSA9IFNpZ25hdHVyZV9pdGVtXG4gIGxldCBzdHJ1Y3R1cmVfaXRlbSA9IFN0cnVjdHVyZV9pdGVtXG5cbiAgbGV0IGRlc2MgOiB0eXBlIGEuIGEgdCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQ2xhc3NfZXhwciAtPiBcImNsYXNzIGV4cHJlc3Npb25cIlxuICAgIHwgQ2xhc3NfZmllbGQgLT4gXCJjbGFzcyBmaWVsZFwiXG4gICAgfCBDbGFzc190eXBlIC0+IFwiY2xhc3MgdHlwZVwiXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkIC0+IFwiY2xhc3MgdHlwZSBmaWVsZFwiXG4gICAgfCBDb3JlX3R5cGUgLT4gXCJjb3JlIHR5cGVcIlxuICAgIHwgRXhwcmVzc2lvbiAtPiBcImV4cHJlc3Npb25cIlxuICAgIHwgTW9kdWxlX2V4cHIgLT4gXCJtb2R1bGUgZXhwcmVzc2lvblwiXG4gICAgfCBNb2R1bGVfdHlwZSAtPiBcIm1vZHVsZSB0eXBlXCJcbiAgICB8IFBhdHRlcm4gLT4gXCJwYXR0ZXJuXCJcbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IFwic2lnbmF0dXJlIGl0ZW1cIlxuICAgIHwgU3RydWN0dXJlX2l0ZW0gLT4gXCJzdHJ1Y3R1cmUgaXRlbVwiXG4gICAgfCBQcHhfaW1wb3J0IC0+IFwidHlwZSBkZWNsYXJhdGlvblwiXG5cbiAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgIGZ1biBhIGIgLT5cbiAgICBtYXRjaCAoYSwgYikgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciwgQ2xhc3NfZXhwciAtPiBFcVxuICAgIHwgQ2xhc3NfZmllbGQsIENsYXNzX2ZpZWxkIC0+IEVxXG4gICAgfCBDbGFzc190eXBlLCBDbGFzc190eXBlIC0+IEVxXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCBDbGFzc190eXBlX2ZpZWxkIC0+IEVxXG4gICAgfCBDb3JlX3R5cGUsIENvcmVfdHlwZSAtPiBFcVxuICAgIHwgRXhwcmVzc2lvbiwgRXhwcmVzc2lvbiAtPiBFcVxuICAgIHwgTW9kdWxlX2V4cHIsIE1vZHVsZV9leHByIC0+IEVxXG4gICAgfCBNb2R1bGVfdHlwZSwgTW9kdWxlX3R5cGUgLT4gRXFcbiAgICB8IFBhdHRlcm4sIFBhdHRlcm4gLT4gRXFcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCBTaWduYXR1cmVfaXRlbSAtPiBFcVxuICAgIHwgU3RydWN0dXJlX2l0ZW0sIFN0cnVjdHVyZV9pdGVtIC0+IEVxXG4gICAgfCBQcHhfaW1wb3J0LCBQcHhfaW1wb3J0IC0+IEVxXG4gICAgfCBfIC0+XG4gICAgICAgIGFzc2VydCAoUG9seS4oIDw+ICkgKFQgYSkgKFQgYikpO1xuICAgICAgICBOZVxuXG4gIGxldCBnZXRfcHB4X2ltcG9ydF9leHRlbnNpb24gdHlwZV9kZWNsID1cbiAgICBtYXRjaCB0eXBlX2RlY2wgd2l0aFxuICAgIHwgeyBwdHlwZV9tYW5pZmVzdCA9IFNvbWUgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiAobmFtZSwgXyk7IF8gfTsgXyB9XG4gICAgICAtPlxuICAgICAgICBsZXQgdmlydHVhbF9wYXlsb2FkID1cbiAgICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfdHlwZSB+bG9jOnR5cGVfZGVjbC5wdHlwZV9sb2MgUmVjdXJzaXZlXG4gICAgICAgICAgICBbIHR5cGVfZGVjbCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyID0gW10gaW5cbiAgICAgICAgU29tZSAoKG5hbWUsIFBTdHIgWyB2aXJ0dWFsX3BheWxvYWQgXSksIGF0dHIpXG4gICAgfCBfIC0+IE5vbmVcblxuICBsZXQgZ2V0X2V4dGVuc2lvbiA6IHR5cGUgYS4gYSB0IC0+IGEgLT4gKGV4dGVuc2lvbiAqIGF0dHJpYnV0ZXMpIG9wdGlvbiA9XG4gICBmdW4gdCB4IC0+XG4gICAgbWF0Y2ggKHQsIHgpIHdpdGhcbiAgICB8IENsYXNzX2V4cHIsIHsgcGNsX2Rlc2MgPSBQY2xfZXh0ZW5zaW9uIGU7IHBjbF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc19maWVsZCwgeyBwY2ZfZGVzYyA9IFBjZl9leHRlbnNpb24gZTsgcGNmX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENsYXNzX3R5cGUsIHsgcGN0eV9kZXNjID0gUGN0eV9leHRlbnNpb24gZTsgcGN0eV9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBDbGFzc190eXBlX2ZpZWxkLCB7IHBjdGZfZGVzYyA9IFBjdGZfZXh0ZW5zaW9uIGU7IHBjdGZfYXR0cmlidXRlcyA9IGE7IF8gfVxuICAgICAgLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IENvcmVfdHlwZSwgeyBwdHlwX2Rlc2MgPSBQdHlwX2V4dGVuc2lvbiBlOyBwdHlwX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IEV4cHJlc3Npb24sIHsgcGV4cF9kZXNjID0gUGV4cF9leHRlbnNpb24gZTsgcGV4cF9hdHRyaWJ1dGVzID0gYTsgXyB9IC0+XG4gICAgICAgIFNvbWUgKGUsIGEpXG4gICAgfCBNb2R1bGVfZXhwciwgeyBwbW9kX2Rlc2MgPSBQbW9kX2V4dGVuc2lvbiBlOyBwbW9kX2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IE1vZHVsZV90eXBlLCB7IHBtdHlfZGVzYyA9IFBtdHlfZXh0ZW5zaW9uIGU7IHBtdHlfYXR0cmlidXRlcyA9IGE7IF8gfSAtPlxuICAgICAgICBTb21lIChlLCBhKVxuICAgIHwgUGF0dGVybiwgeyBwcGF0X2Rlc2MgPSBQcGF0X2V4dGVuc2lvbiBlOyBwcGF0X2F0dHJpYnV0ZXMgPSBhOyBfIH0gLT5cbiAgICAgICAgU29tZSAoZSwgYSlcbiAgICB8IFNpZ25hdHVyZV9pdGVtLCB7IHBzaWdfZGVzYyA9IFBzaWdfZXh0ZW5zaW9uIChlLCBhKTsgXyB9IC0+IFNvbWUgKGUsIGEpXG4gICAgfCBTdHJ1Y3R1cmVfaXRlbSwgeyBwc3RyX2Rlc2MgPSBQc3RyX2V4dGVuc2lvbiAoZSwgYSk7IF8gfSAtPiBTb21lIChlLCBhKVxuICAgIHwgUHB4X2ltcG9ydCwgdHlwZV9kZWNsIC0+IGdldF9wcHhfaW1wb3J0X2V4dGVuc2lvbiB0eXBlX2RlY2xcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzX3JlcyA6XG4gICAgICB0eXBlIGEuXG4gICAgICBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IChhLCBMb2NhdGlvbi5FcnJvci50IE5vbkVtcHR5TGlzdC50KSByZXN1bHQgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQ2xhc3NfZXhwciAtPiBPayB7IHggd2l0aCBwY2xfYXR0cmlidXRlcyA9IHgucGNsX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc19maWVsZCAtPiBPayB7IHggd2l0aCBwY2ZfYXR0cmlidXRlcyA9IHgucGNmX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBDbGFzc190eXBlIC0+IE9rIHsgeCB3aXRoIHBjdHlfYXR0cmlidXRlcyA9IHgucGN0eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgQ2xhc3NfdHlwZV9maWVsZCAtPlxuICAgICAgICBPayB7IHggd2l0aCBwY3RmX2F0dHJpYnV0ZXMgPSB4LnBjdGZfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IENvcmVfdHlwZSAtPiBPayB7IHggd2l0aCBwdHlwX2F0dHJpYnV0ZXMgPSB4LnB0eXBfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IEV4cHJlc3Npb24gLT4gT2sgeyB4IHdpdGggcGV4cF9hdHRyaWJ1dGVzID0geC5wZXhwX2F0dHJpYnV0ZXMgQCBhdHRycyB9XG4gICAgfCBNb2R1bGVfZXhwciAtPiBPayB7IHggd2l0aCBwbW9kX2F0dHJpYnV0ZXMgPSB4LnBtb2RfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IE1vZHVsZV90eXBlIC0+IE9rIHsgeCB3aXRoIHBtdHlfYXR0cmlidXRlcyA9IHgucG10eV9hdHRyaWJ1dGVzIEAgYXR0cnMgfVxuICAgIHwgUGF0dGVybiAtPiBPayB7IHggd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSB4LnBwYXRfYXR0cmlidXRlcyBAIGF0dHJzIH1cbiAgICB8IFNpZ25hdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFN0cnVjdHVyZV9pdGVtIC0+IChcbiAgICAgICAgbWF0Y2ggYXR0cmlidXRlc19lcnJvcnMgYXR0cnMgd2l0aCBbXSAtPiBPayB4IHwgdCA6OiBxIC0+IEVycm9yICh0LCBxKSlcbiAgICB8IFBweF9pbXBvcnQgLT4gKFxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzX2Vycm9ycyBhdHRycyB3aXRoIFtdIC0+IE9rIHggfCB0IDo6IHEgLT4gRXJyb3IgKHQsIHEpKVxuXG4gIGxldCBtZXJnZV9hdHRyaWJ1dGVzIDogdHlwZSBhLiBhIHQgLT4gYSAtPiBhdHRyaWJ1dGVzIC0+IGEgPVxuICAgZnVuIHQgeCBhdHRycyAtPlxuICAgIG1lcmdlX2F0dHJpYnV0ZXNfcmVzIHQgeCBhdHRyc1xuICAgIHw+IFJlc3VsdC5oYW5kbGVfZXJyb3IgfmY6KGZ1biAoZXJyLCBfKSAtPiBMb2NhdGlvbi5FcnJvci5yYWlzZSBlcnIpXG5lbmRcblxubGV0IHJlZ2lzdHJhciA9XG4gIE5hbWUuUmVnaXN0cmFyLmNyZWF0ZSB+a2luZDpcImV4dGVuc2lvblwiIH5jdXJyZW50X2ZpbGU6X19GSUxFX19cbiAgICB+c3RyaW5nX29mX2NvbnRleHQ6KGZ1biAoQ29udGV4dC5UIGN0eCkgLT4gU29tZSAoQ29udGV4dC5kZXNjIGN0eCkpXG5cbm1vZHVsZSBNYWtlIChDYWxsYmFjayA6IHNpZ1xuICB0eXBlICdhIHRcbmVuZCkgPVxuc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgcGF5bG9hZF9wYXJzZXIgPVxuICAgIHwgUGF5bG9hZF9wYXJzZXIgOlxuICAgICAgICAoJ2EsICdiLCAnYykgQXN0X3BhdHRlcm4udCAqICdiIENhbGxiYWNrLnRcbiAgICAgICAgLT4gKCdhLCAnYykgcGF5bG9hZF9wYXJzZXJcblxuICB0eXBlICgnY29udGV4dCwgJ3BheWxvYWQpIHQgPSB7XG4gICAgbmFtZSA6IE5hbWUuUGF0dGVybi50O1xuICAgIGNvbnRleHQgOiAnY29udGV4dCBDb250ZXh0LnQ7XG4gICAgcGF5bG9hZCA6IChwYXlsb2FkLCAncGF5bG9hZCkgcGF5bG9hZF9wYXJzZXI7XG4gICAgd2l0aF9hcmcgOiBib29sO1xuICB9XG5cbiAgbGV0IGRlY2xhcmUgOlxuICAgICAgdHlwZSBhLlxuICAgICAgd2l0aF9hcmc6Ym9vbCAtPlxuICAgICAgc3RyaW5nIC0+XG4gICAgICBhIENvbnRleHQudCAtPlxuICAgICAgKHBheWxvYWQsICdiLCAncGF5bG9hZCkgQXN0X3BhdHRlcm4udCAtPlxuICAgICAgJ2IgQ2FsbGJhY2sudCAtPlxuICAgICAgKGEsICdwYXlsb2FkKSB0ID1cbiAgIGZ1biB+d2l0aF9hcmcgbmFtZSBjb250ZXh0IHBhdHRlcm4gayAtPlxuICAgICgqIENoZWNrIHRoYXQgdGhlcmUgaXMgbm8gY29sbGlzaW9ucyBiZXR3ZWVuIHBweF9pbXBvcnQgYW5kIGNvcmVfdHlwZVxuICAgICAgIGV4dGVuc2lvbnMgKilcbiAgICAobWF0Y2ggY29udGV4dCB3aXRoXG4gICAgfCBDb250ZXh0LlBweF9pbXBvcnQgLT5cbiAgICAgICAgTmFtZS5SZWdpc3RyYXIuY2hlY2tfY29sbGlzaW9ucyByZWdpc3RyYXIgKENvbnRleHQuVCBDb3JlX3R5cGUpIG5hbWVcbiAgICB8IENvbnRleHQuQ29yZV90eXBlIC0+XG4gICAgICAgIE5hbWUuUmVnaXN0cmFyLmNoZWNrX2NvbGxpc2lvbnMgcmVnaXN0cmFyIChDb250ZXh0LlQgUHB4X2ltcG9ydCkgbmFtZVxuICAgIHwgXyAtPiAoKSk7XG4gICAgTmFtZS5SZWdpc3RyYXIucmVnaXN0ZXIgfmtpbmQ6YEV4dGVuc2lvbiByZWdpc3RyYXIgKENvbnRleHQuVCBjb250ZXh0KSBuYW1lO1xuICAgIHtcbiAgICAgIG5hbWUgPSBOYW1lLlBhdHRlcm4ubWFrZSBuYW1lO1xuICAgICAgY29udGV4dDtcbiAgICAgIHBheWxvYWQgPSBQYXlsb2FkX3BhcnNlciAocGF0dGVybiwgayk7XG4gICAgICB3aXRoX2FyZztcbiAgICB9XG5cbiAgbGV0IGZpbmQgdHMgKGV4dCA6IGV4dGVuc2lvbikgPVxuICAgIGxldCB7IHR4dCA9IG5hbWU7IGxvYyB9ID0gZnN0IGV4dCBpblxuICAgIGxldCBuYW1lLCBhcmcgPSBOYW1lLnNwbGl0X3BhdGggbmFtZSBpblxuICAgIG1hdGNoIExpc3QuZmlsdGVyIHRzIH5mOihmdW4gdCAtPiBOYW1lLlBhdHRlcm4ubWF0Y2hlcyB0Lm5hbWUgbmFtZSkgd2l0aFxuICAgIHwgW10gLT4gT2sgTm9uZVxuICAgIHwgXyA6OiBfIDo6IF8gYXMgbCAtPlxuICAgICAgICBFcnJvclxuICAgICAgICAgICggTG9jYXRpb24uRXJyb3IuY3JlYXRlZiB+bG9jIFwiTXVsdGlwbGUgbWF0Y2ggZm9yIGV4dGVuc2lvbnM6ICVzXCJcbiAgICAgICAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgICAgKExpc3QubWFwIGwgfmY6KGZ1biB0IC0+IE5hbWUuUGF0dGVybi5uYW1lIHQubmFtZSkpKSxcbiAgICAgICAgICAgIFtdIClcbiAgICB8IFsgdCBdIC0+XG4gICAgICAgIGlmIChub3QgdC53aXRoX2FyZykgJiYgT3B0aW9uLmlzX3NvbWUgYXJnIHRoZW5cbiAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2NcbiAgICAgICAgICAgICAgICBcIkV4dGVuc2lvbiAlcyBkb2Vzbid0IGV4cGVjdCBhIHBhdGggYXJndW1lbnRcIiBuYW1lLFxuICAgICAgICAgICAgICBbXSApXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgYXJnID1cbiAgICAgICAgICAgIE9wdGlvbi5tYXAgYXJnIH5mOihmdW4gcyAtPlxuICAgICAgICAgICAgICAgIGxldCBzaGlmdCA9IFN0cmluZy5sZW5ndGggbmFtZSArIDEgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3RhcnQgPSBsb2MubG9jX3N0YXJ0IGluXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHh0ID0gTG9uZ2lkZW50LnBhcnNlIHM7XG4gICAgICAgICAgICAgICAgICBsb2MgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgbG9jIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBsb2Nfc3RhcnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGFydCB3aXRoIHBvc19jbnVtID0gc3RhcnQucG9zX2NudW0gKyBzaGlmdCB9O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBPayAoU29tZSAodCwgYXJnKSlcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuICBlbmQpXG5cbiAgbGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGN0eCBwYXR0IGYgPVxuICAgIGRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjdHggcGF0dCBmXG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjdHggcGF0dCBmID1cbiAgICBkZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGN0eCBwYXR0IChmdW4gfmFyZzpfIC0+IGYpXG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0ID1cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBmaW5kIHRzIGV4dCA+Pj0gZnVuIHIgLT5cbiAgICBtYXRjaCByIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT5cbiAgICAgICAgQXN0X3BhdHRlcm4ucGFyc2VfcmVzIHBhdHRlcm4gbG9jIChzbmQgZXh0KSAoZiB+YXJnKSA+PnwgZnVuIHBheWxvYWQgLT5cbiAgICAgICAgU29tZSBwYXlsb2FkXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmxvYyBleHQgPVxuICAgIGNvbnZlcnRfcmVzIHRzIH5sb2MgZXh0XG4gICAgfD4gUmVzdWx0LmhhbmRsZV9lcnJvciB+ZjooZnVuIChlcnIsIF8pIC0+IExvY2F0aW9uLkVycm9yLnJhaXNlIGVycilcbmVuZFxuXG5tb2R1bGUgTSA9IE1ha2UgKHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLnQgLT4gYXJnOkxvbmdpZGVudC50IExvYy50IG9wdGlvbiAtPiAnYVxuZW5kKVxuXG50eXBlICdhIGV4cGFuZGVyX3Jlc3VsdCA9IFNpbXBsZSBvZiAnYSB8IElubGluZSBvZiAnYSBsaXN0XG5cbm1vZHVsZSBGb3JfY29udGV4dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsICdhIGV4cGFuZGVyX3Jlc3VsdCkgTS50XG5cbiAgbGV0IGNvbnZlcnRfcmVzIHRzIH5jdHh0IGV4dCA9XG4gICAgbGV0IGxvYyA9IEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5leHRlbnNpb25fcG9pbnRfbG9jIGN0eHQgaW5cbiAgICBsZXQgb3BlbiBSZXN1bHQgaW5cbiAgICBNLmZpbmQgdHMgZXh0ID4+PSBmdW4gZm91bmQgLT5cbiAgICBtYXRjaCBmb3VuZCB3aXRoXG4gICAgfCBOb25lIC0+IE9rIE5vbmVcbiAgICB8IFNvbWUgKHsgcGF5bG9hZCA9IE0uUGF5bG9hZF9wYXJzZXIgKHBhdHRlcm4sIGYpOyBfIH0sIGFyZykgLT4gKFxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBsb2MgKHNuZCBleHQpIChmIH5jdHh0IH5hcmcpXG4gICAgICAgID4+fCBmdW4gcGF5bG9hZCAtPlxuICAgICAgICBtYXRjaCBwYXlsb2FkIHdpdGhcbiAgICAgICAgfCBTaW1wbGUgeCAtPiBTb21lIHhcbiAgICAgICAgfCBJbmxpbmUgXyAtPiBmYWlsd2l0aCBcIkV4dGVuc2lvbi5jb252ZXJ0XCIpXG5cbiAgbGV0IGNvbnZlcnQgdHMgfmN0eHQgZXh0ID1cbiAgICBjb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0ID1cbiAgICBsZXQgbG9jID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLmV4dGVuc2lvbl9wb2ludF9sb2MgY3R4dCBpblxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIE0uZmluZCB0cyBleHQgPj49IGZ1biBmb3VuZCAtPlxuICAgIG1hdGNoIGZvdW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gT2sgTm9uZVxuICAgIHwgU29tZSAoeyBwYXlsb2FkID0gTS5QYXlsb2FkX3BhcnNlciAocGF0dGVybiwgZik7IF8gfSwgYXJnKSAtPiAoXG4gICAgICAgIEFzdF9wYXR0ZXJuLnBhcnNlX3JlcyBwYXR0ZXJuIGxvYyAoc25kIGV4dCkgKGYgfmN0eHQgfmFyZylcbiAgICAgICAgPj58IGZ1biBwYXlsb2FkIC0+XG4gICAgICAgIG1hdGNoIHBheWxvYWQgd2l0aCBTaW1wbGUgeCAtPiBTb21lIFsgeCBdIHwgSW5saW5lIGwgLT4gU29tZSBsKVxuXG4gIGxldCBjb252ZXJ0X2lubGluZSB0cyB+Y3R4dCBleHQgPVxuICAgIGNvbnZlcnRfaW5saW5lX3JlcyB0cyB+Y3R4dCBleHRcbiAgICB8PiBSZXN1bHQuaGFuZGxlX2Vycm9yIH5mOihmdW4gKGVyciwgXykgLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyKVxuZW5kXG5cbnR5cGUgdCA9IFQgOiBfIEZvcl9jb250ZXh0LnQgLT4gdFxuXG5sZXQgY2hlY2tfY29udGV4dF9mb3JfaW5saW5lIDogdHlwZSBhLiBmdW5jOnN0cmluZyAtPiBhIENvbnRleHQudCAtPiB1bml0ID1cbiBmdW4gfmZ1bmMgY3R4IC0+XG4gIG1hdGNoIGN0eCB3aXRoXG4gIHwgQ29udGV4dC5DbGFzc19maWVsZCAtPiAoKVxuICB8IENvbnRleHQuQ2xhc3NfdHlwZV9maWVsZCAtPiAoKVxuICB8IENvbnRleHQuU2lnbmF0dXJlX2l0ZW0gLT4gKClcbiAgfCBDb250ZXh0LlN0cnVjdHVyZV9pdGVtIC0+ICgpXG4gIHwgY29udGV4dCAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiJXM6ICVzIGNhbid0IGJlIGlubGluZWRcIiBmdW5jXG4gICAgICAgIChDb250ZXh0LmRlc2MgY29udGV4dClcblxubGV0IHJlYyBmaWx0ZXJfYnlfY29udGV4dCA6XG4gICAgdHlwZSBhLiBhIENvbnRleHQudCAtPiB0IGxpc3QgLT4gYSBGb3JfY29udGV4dC50IGxpc3QgPVxuIGZ1biBjb250ZXh0IGV4cGFuZGVycyAtPlxuICBtYXRjaCBleHBhbmRlcnMgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgVCB0IDo6IHJlc3QgLT4gKFxuICAgICAgbWF0Y2ggQ29udGV4dC5lcSBjb250ZXh0IHQuY29udGV4dCB3aXRoXG4gICAgICB8IEVxIC0+IHQgOjogZmlsdGVyX2J5X2NvbnRleHQgY29udGV4dCByZXN0XG4gICAgICB8IE5lIC0+IGZpbHRlcl9ieV9jb250ZXh0IGNvbnRleHQgcmVzdClcblxubGV0IHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgY3R4IChuYW1lLCBfKSA9XG4gIGlmXG4gICAgbm90XG4gICAgICAoTmFtZS5BbGxvd2xpc3RlZC5pc19hbGxvd2xpc3RlZCB+a2luZDpgRXh0ZW5zaW9uIG5hbWUudHh0XG4gICAgICB8fCBOYW1lLmlnbm9yZV9jaGVja3MgbmFtZS50eHQpXG4gIHRoZW5cbiAgICBbXG4gICAgICBOYW1lLlJlZ2lzdHJhci5FcnJvci5jcmVhdGVmIHJlZ2lzdHJhciAoQ29udGV4dC5UIGN0eClcbiAgICAgICAgXCJFeHRlbnNpb24gYCVzJyB3YXMgbm90IHRyYW5zbGF0ZWRcIiBuYW1lO1xuICAgIF1cbiAgZWxzZSBbXVxuXG5sZXQgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW0xvY2F0aW9uLkVycm9yLnQgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgZXh0ZW5zaW9uIChuYW1lLCBfKSBhY2MgPVxuICAgICAgYWNjXG4gICAgICBAIFtcbiAgICAgICAgICBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgIFwiZXh0ZW5zaW9uIG5vdCBleHBlY3RlZCBoZXJlLCBQcHhsaWIuRXh0ZW5zaW9uIG5lZWRzIHVwZGF0aW5nIVwiO1xuICAgICAgICBdXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQdHlwX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDb3JlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgcGF0dGVybl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQcGF0X2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBQYXR0ZXJuIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI3BhdHRlcm5fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBleHByZXNzaW9uX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBleHBfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIEV4cHJlc3Npb24gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGN0eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgQ2xhc3NfdHlwZSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNjbGFzc190eXBlX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY3RmX2V4dGVuc2lvbiBleHQgLT5cbiAgICAgICAgICBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX3R5cGVfZmllbGQgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUGNsX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBDbGFzc19leHByIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBjbGFzc19maWVsZF9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQY2ZfZXh0ZW5zaW9uIGV4dCAtPiBhY2MgQCB1bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9yIENsYXNzX2ZpZWxkIGV4dFxuICAgICAgfCB4IC0+IHN1cGVyI2NsYXNzX2ZpZWxkX2Rlc2MgeCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUG10eV9leHRlbnNpb24gZXh0IC0+IGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgTW9kdWxlX3R5cGUgZXh0XG4gICAgICB8IHggLT4gc3VwZXIjbW9kdWxlX3R5cGVfZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQc2lnX2V4dGVuc2lvbiAoZXh0LCBfKSAtPlxuICAgICAgICAgIGFjYyBAIHVuaGFuZGxlZF9leHRlbnNpb25fZXJyb3IgU2lnbmF0dXJlX2l0ZW0gZXh0XG4gICAgICB8IHggLT4gc3VwZXIjc2lnbmF0dXJlX2l0ZW1fZGVzYyB4IGFjY1xuXG4gICAgbWV0aG9kISBtb2R1bGVfZXhwcl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQbW9kX2V4dGVuc2lvbiBleHQgLT4gYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBNb2R1bGVfZXhwciBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNtb2R1bGVfZXhwcl9kZXNjIHggYWNjXG5cbiAgICBtZXRob2QhIHN0cnVjdHVyZV9pdGVtX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIF8pIC0+XG4gICAgICAgICAgYWNjIEAgdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvciBTdHJ1Y3R1cmVfaXRlbSBleHRcbiAgICAgIHwgeCAtPiBzdXBlciNzdHJ1Y3R1cmVfaXRlbV9kZXNjIHggYWNjXG4gIGVuZFxuXG5sZXQgZXJyb3JfbGlzdF90b19leGNlcHRpb24gPSBmdW5jdGlvblxuICB8IFtdIC0+ICgpXG4gIHwgZXJyIDo6IF8gLT4gTG9jYXRpb24uRXJyb3IucmFpc2UgZXJyXG5cbmxldCBjaGVja191bnVzZWQgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyXG5cbiAgICBtZXRob2QhIGV4dGVuc2lvbiAobmFtZSwgXykgPVxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgXCJleHRlbnNpb24gbm90IGV4cGVjdGVkIGhlcmUsIFBweGxpYi5FeHRlbnNpb24gbmVlZHMgdXBkYXRpbmchXCJcblxuICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NvcmVfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjcGF0dGVybl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb25fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjZXhwcmVzc2lvbl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGVfZmllbGRfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfdHlwZV9maWVsZF9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHJfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjY2xhc3NfZXhwcl9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIGNsYXNzX2ZpZWxkX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI2NsYXNzX2ZpZWxkX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGVfZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjbW9kdWxlX3R5cGVfZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbV9kZXNjIHggPVxuICAgICAgY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzaWduYXR1cmVfaXRlbV9kZXNjIHggW11cbiAgICAgIHw+IGVycm9yX2xpc3RfdG9fZXhjZXB0aW9uXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCA9XG4gICAgICBjb2xsZWN0X3VuaGFuZGxlZF9leHRlbnNpb25fZXJyb3JzI21vZHVsZV9leHByX2Rlc2MgeCBbXVxuICAgICAgfD4gZXJyb3JfbGlzdF90b19leGNlcHRpb25cblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW1fZGVzYyB4ID1cbiAgICAgIGNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc3RydWN0dXJlX2l0ZW1fZGVzYyB4IFtdXG4gICAgICB8PiBlcnJvcl9saXN0X3RvX2V4Y2VwdGlvblxuICBlbmRcblxubW9kdWxlIFYzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGRlY2xhcmUgbmFtZSBjb250ZXh0IHBhdHRlcm4gayA9XG4gICAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICAgIFRcbiAgICAgIChNLmRlY2xhcmUgfndpdGhfYXJnOmZhbHNlIG5hbWUgY29udGV4dCBwYXR0ZXJuIChmdW4gfmN0eHQgfmFyZzpfIC0+XG4gICAgICAgICAgIGsgfmN0eHQpKVxuXG4gIGxldCBkZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dCB+ZnVuYzpcIkV4dGVuc2lvbi5kZWNsYXJlX2lubGluZVwiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUXG4gICAgICAoTS5kZWNsYXJlIH53aXRoX2FyZzpmYWxzZSBuYW1lIGNvbnRleHQgcGF0dGVybiAoZnVuIH5jdHh0IH5hcmc6XyAtPlxuICAgICAgICAgICBrIH5jdHh0KSlcblxuICBsZXQgZGVjbGFyZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBTaW1wbGUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcblxuICBsZXQgZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgICAgfmZ1bmM6XCJFeHRlbnNpb24uZGVjbGFyZV9pbmxpbmVfd2l0aF9wYXRoX2FyZ1wiO1xuICAgIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4ubWFwX3Jlc3VsdCBwYXR0ZXJuIH5mOihmdW4geCAtPiBJbmxpbmUgeCkgaW5cbiAgICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaylcbmVuZFxuXG5sZXQgZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVybiBmID1cbiAgVjMuZGVjbGFyZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfaW5saW5lIG5hbWUgY29udGV4dCBwYXR0ZXJuIGYgPVxuICBWMy5kZWNsYXJlX2lubGluZSBuYW1lIGNvbnRleHQgcGF0dGVyblxuICAgIChFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggZilcblxubGV0IGRlY2xhcmVfd2l0aF9wYXRoX2FyZyBuYW1lIGNvbnRleHQgcGF0dGVybiBrID1cbiAgbGV0IGsnID0gRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLndpdGhfbG9jX2FuZF9wYXRoIGsgaW5cbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IFNpbXBsZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBkZWNsYXJlX2lubGluZV93aXRoX3BhdGhfYXJnIG5hbWUgY29udGV4dCBwYXR0ZXJuIGsgPVxuICBsZXQgaycgPSBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ud2l0aF9sb2NfYW5kX3BhdGggayBpblxuICBjaGVja19jb250ZXh0X2Zvcl9pbmxpbmUgY29udGV4dFxuICAgIH5mdW5jOlwiRXh0ZW5zaW9uLmRlY2xhcmVfaW5saW5lX3dpdGhfcGF0aF9hcmdcIjtcbiAgbGV0IHBhdHRlcm4gPSBBc3RfcGF0dGVybi5tYXBfcmVzdWx0IHBhdHRlcm4gfmY6KGZ1biB4IC0+IElubGluZSB4KSBpblxuICBUIChNLmRlY2xhcmUgfndpdGhfYXJnOnRydWUgbmFtZSBjb250ZXh0IHBhdHRlcm4gaycpXG5cbmxldCBfX2RlY2xhcmVfcHB4X2ltcG9ydCBuYW1lIGV4cGFuZCA9XG4gICgqIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIHVud3JhcCB0aGUgdHlwZSBkZWNsYXJhdGlvbiBmcm9tIHRoZSBwYXlsb2FkXG4gICAgIGFzc2VtYmxlZCBieSBbQ29udGV4dC5nZXRfcHB4X2ltcG9ydF9leHRlbnNpb25dICopXG4gIGxldCBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfdHlwZSByZWN1cnNpdmUgKF9fIF46OiBuaWwpIF46OiBuaWwpKSBpblxuICBWMy5kZWNsYXJlIG5hbWUgQ29udGV4dC5QcHhfaW1wb3J0IHBhdHRlcm4gZXhwYW5kXG5cbm1vZHVsZSBWMiA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBkZWNsYXJlID0gZGVjbGFyZVxuICBsZXQgZGVjbGFyZV9pbmxpbmUgPSBkZWNsYXJlX2lubGluZVxuZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuISBJbXBvcnRcbm9wZW4gQ29tbW9uXG5vcGVuIFdpdGhfZXJyb3JzXG5tb2R1bGUgRSA9IEV4dGVuc2lvblxubW9kdWxlIEVDID0gRXh0ZW5zaW9uLkNvbnRleHRcbm1vZHVsZSBBID0gQXR0cmlidXRlXG5tb2R1bGUgQUMgPSBBdHRyaWJ1dGUuQ29udGV4dFxuXG5tb2R1bGUgUnVsZSA9IHN0cnVjdFxuICBtb2R1bGUgQXR0cl9ncm91cF9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6XG4gICAgICAgIGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+XG4gICAgICAgIEFzdHR5cGVzLnJlY19mbGFnIC0+XG4gICAgICAgICdiIGxpc3QgLT5cbiAgICAgICAgJ2Mgb3B0aW9uIGxpc3QgLT5cbiAgICAgICAgJ2EgbGlzdDtcbiAgICB9XG5cbiAgICB0eXBlICgnYSwgJ2IpIHQgPSBUIDogKCdhLCAnYiwgXykgdW5wYWNrZWQgLT4gKCdhLCAnYikgdFxuXG4gICAgbGV0IGF0dHJfbmFtZSAoVCB0KSA9IEF0dHJpYnV0ZS5uYW1lIHQuYXR0cmlidXRlXG5cbiAgICBsZXQgc3BsaXRfbm9ybWFsX2FuZF9leHBlY3QgbCA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiBsIH5mOihmdW4gKFQgdCkgLT4gbm90IHQuZXhwZWN0KVxuICBlbmRcblxuICBtb2R1bGUgQXR0cl9pbmxpbmUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB1bnBhY2tlZCA9IHtcbiAgICAgIGF0dHJpYnV0ZSA6ICgnYiwgJ2MpIEF0dHJpYnV0ZS50O1xuICAgICAgZXhwZWN0IDogYm9vbDtcbiAgICAgIGV4cGFuZCA6IGN0eHQ6RXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci50IC0+ICdiIC0+ICdjIC0+ICdhIGxpc3Q7XG4gICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSB0ID0gVCA6ICgnYSwgJ2IsIF8pIHVucGFja2VkIC0+ICgnYSwgJ2IpIHRcblxuICAgIGxldCBhdHRyX25hbWUgKFQgdCkgPSBBdHRyaWJ1dGUubmFtZSB0LmF0dHJpYnV0ZVxuXG4gICAgbGV0IHNwbGl0X25vcm1hbF9hbmRfZXhwZWN0IGwgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gbCB+ZjooZnVuIChUIHQpIC0+IG5vdCB0LmV4cGVjdClcbiAgZW5kXG5cbiAgbW9kdWxlIFNwZWNpYWxfZnVuY3Rpb24gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBuYW1lIDogc3RyaW5nO1xuICAgICAgaWRlbnQgOiBMb25naWRlbnQudDtcbiAgICAgIGV4cGFuZCA6IFBhcnNldHJlZS5leHByZXNzaW9uIC0+IFBhcnNldHJlZS5leHByZXNzaW9uIG9wdGlvbjtcbiAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudF9raW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID0gRmxvYXQgfCBJbnRlZ2VyXG4gIGVuZFxuXG4gIG1vZHVsZSBDb25zdGFudCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIHN1ZmZpeCA6IGNoYXI7XG4gICAgICBraW5kIDogQ29uc3RhbnRfa2luZC50O1xuICAgICAgZXhwYW5kIDogTG9jYXRpb24udCAtPiBzdHJpbmcgLT4gUGFyc2V0cmVlLmV4cHJlc3Npb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBFeHRlbnNpb24gOiBFeHRlbnNpb24udCB0XG4gICAgICB8IFNwZWNpYWxfZnVuY3Rpb24gOiBTcGVjaWFsX2Z1bmN0aW9uLnQgdFxuICAgICAgfCBDb25zdGFudCA6IENvbnN0YW50LnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2RlY2xcbiAgICAgICAgICA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9ncm91cF9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2RlY2xhcmF0aW9uKSBBdHRyX2dyb3VwX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgICAgIDogKHN0cnVjdHVyZV9pdGVtLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgQXR0cl9pbmxpbmUudCB0XG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgICAgICA6IChzaWduYXR1cmVfaXRlbSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3NpZ190eXBlX2V4dCA6IChzaWduYXR1cmVfaXRlbSwgdHlwZV9leHRlbnNpb24pIEF0dHJfaW5saW5lLnQgdFxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24gOiAoc3RydWN0dXJlX2l0ZW0sIHR5cGVfZXhjZXB0aW9uKSBBdHRyX2lubGluZS50IHRcbiAgICAgIHwgQXR0cl9zaWdfZXhjZXB0aW9uIDogKHNpZ25hdHVyZV9pdGVtLCB0eXBlX2V4Y2VwdGlvbikgQXR0cl9pbmxpbmUudCB0XG5cbiAgICB0eXBlIChfLCBfKSBlcXVhbGl0eSA9IEVxIDogKCdhLCAnYSkgZXF1YWxpdHkgfCBOZSA6IChfLCBfKSBlcXVhbGl0eVxuXG4gICAgbGV0IGVxIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIGVxdWFsaXR5ID1cbiAgICAgZnVuIGEgYiAtPlxuICAgICAgbWF0Y2ggKGEsIGIpIHdpdGhcbiAgICAgIHwgRXh0ZW5zaW9uLCBFeHRlbnNpb24gLT4gRXFcbiAgICAgIHwgU3BlY2lhbF9mdW5jdGlvbiwgU3BlY2lhbF9mdW5jdGlvbiAtPiBFcVxuICAgICAgfCBDb25zdGFudCwgQ29uc3RhbnQgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9kZWNsLCBBdHRyX3N0cl90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zaWdfdHlwZV9kZWNsLCBBdHRyX3NpZ190eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgQXR0cl9zdHJfdHlwZV9leHQsIEF0dHJfc3RyX3R5cGVfZXh0IC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX3R5cGVfZXh0LCBBdHRyX3NpZ190eXBlX2V4dCAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9leGNlcHRpb24sIEF0dHJfc3RyX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3NpZ19leGNlcHRpb24sIEF0dHJfc2lnX2V4Y2VwdGlvbiAtPiBFcVxuICAgICAgfCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsIC0+IEVxXG4gICAgICB8IEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wsIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgLT4gRXFcbiAgICAgIHwgXyAtPiBOZVxuICBlbmRcblxuICB0eXBlIHQgPSBUIDogJ2EgRmllbGQudCAqICdhIC0+IHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBhdHRyX2dyb3VwX2lubGluZSA9XG4gICAgKCdiLCAnYykgQXR0cmlidXRlLnQgLT5cbiAgICAoY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT5cbiAgICBBc3R0eXBlcy5yZWNfZmxhZyAtPlxuICAgICdiIGxpc3QgLT5cbiAgICAnYyBvcHRpb24gbGlzdCAtPlxuICAgICdhIGxpc3QpIC0+XG4gICAgdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGF0dHJfaW5saW5lID1cbiAgICAoJ2IsICdjKSBBdHRyaWJ1dGUudCAtPlxuICAgIChjdHh0OkV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIudCAtPiAnYiAtPiAnYyAtPiAnYSBsaXN0KSAtPlxuICAgIHRcblxuICBsZXQgcmVjIGZpbHRlciA6IHR5cGUgYS4gYSBGaWVsZC50IC0+IHQgbGlzdCAtPiBhIGxpc3QgPVxuICAgZnVuIGZpZWxkIGwgLT5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBUIChmaWVsZCcsIHgpIDo6IGwgLT4gKFxuICAgICAgICBtYXRjaCBGaWVsZC5lcSBmaWVsZCBmaWVsZCcgd2l0aFxuICAgICAgICB8IEZpZWxkLkVxIC0+IHggOjogZmlsdGVyIGZpZWxkIGxcbiAgICAgICAgfCBGaWVsZC5OZSAtPiBmaWx0ZXIgZmllbGQgbClcblxuICBsZXQgZXh0ZW5zaW9uIGV4dCA9IFQgKEV4dGVuc2lvbiwgZXh0KVxuXG4gIGxldCBzcGVjaWFsX2Z1bmN0aW9uIGlkIGYgPVxuICAgIFQgKFNwZWNpYWxfZnVuY3Rpb24sIHsgbmFtZSA9IGlkOyBpZGVudCA9IExvbmdpZGVudC5wYXJzZSBpZDsgZXhwYW5kID0gZiB9KVxuXG4gIGxldCBjb25zdGFudCBraW5kIHN1ZmZpeCBleHBhbmQgPSBUIChDb25zdGFudCwgeyBzdWZmaXg7IGtpbmQ7IGV4cGFuZCB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfbW9kdWxlX3R5cGVfZGVjbCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zaWdfbW9kdWxlX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2V4dCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ190eXBlX2V4dCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSBmYWxzZSB9KVxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb24gYXR0cmlidXRlIGV4cGFuZCA9XG4gICAgVCAoQXR0cl9zdHJfZXhjZXB0aW9uLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IGZhbHNlIH0pXG5cbiAgbGV0IGF0dHJfc2lnX2V4Y2VwdGlvbiBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gZmFsc2UgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZGVjbCwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wsIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsLCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc3RyX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRfZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX3R5cGVfZXh0LCBUIHsgYXR0cmlidXRlOyBleHBhbmQ7IGV4cGVjdCA9IHRydWUgfSlcblxuICBsZXQgYXR0cl9zdHJfZXhjZXB0aW9uX2V4cGVjdCBhdHRyaWJ1dGUgZXhwYW5kID1cbiAgICBUIChBdHRyX3N0cl9leGNlcHRpb24sIFQgeyBhdHRyaWJ1dGU7IGV4cGFuZDsgZXhwZWN0ID0gdHJ1ZSB9KVxuXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25fZXhwZWN0IGF0dHJpYnV0ZSBleHBhbmQgPVxuICAgIFQgKEF0dHJfc2lnX2V4Y2VwdGlvbiwgVCB7IGF0dHJpYnV0ZTsgZXhwYW5kOyBleHBlY3QgPSB0cnVlIH0pXG5lbmRcblxubW9kdWxlIEdlbmVyYXRlZF9jb2RlX2hvb2sgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBzaW5nbGVfb3JfbWFueSA9IFNpbmdsZSBvZiAnYSB8IE1hbnkgb2YgJ2EgbGlzdFxuXG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEV4dGVuc2lvbi5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBzaW5nbGVfb3JfbWFueSAtPiB1bml0O1xuICB9XG5cbiAgbGV0IG5vcCA9IHsgZiA9IChmdW4gXyBfIF8gLT4gKCkpIH1cbiAgbGV0IHJlcGxhY2UgdCBjb250ZXh0IGxvYyB4ID0gdC5mIGNvbnRleHQgbG9jIHhcblxuICBsZXQgaW5zZXJ0X2FmdGVyIHQgY29udGV4dCAobG9jIDogTG9jYXRpb24udCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBNYW55IFtdIC0+ICgpXG4gICAgfCBfIC0+IHQuZiBjb250ZXh0IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSB4XG5lbmRcblxubGV0IHJlYyBtYXBfbm9kZV9yZWMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGxvYyBiYXNlX2N0eHQgeCB+ZW1iZWRfZXJyb3JzID1cbiAgbGV0IGN0eHQgPVxuICAgIEV4cGFuc2lvbl9jb250ZXh0LkV4dGVuc2lvbi5tYWtlIH5leHRlbnNpb25fcG9pbnRfbG9jOmxvYyB+YmFzZTpiYXNlX2N0eHQgKClcbiAgaW5cbiAgbWF0Y2ggRUMuZ2V0X2V4dGVuc2lvbiBjb250ZXh0IHggd2l0aFxuICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICB8IFNvbWUgKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICh0cnlcbiAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChOb25lLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgPj49IGZ1biBjb252ZXJ0ZWQgLT5cbiAgICAgIG1hdGNoIGNvbnZlcnRlZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gc3VwZXJfY2FsbCBiYXNlX2N0eHQgeFxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBFQy5tZXJnZV9hdHRyaWJ1dGVzX3JlcyBjb250ZXh0IHggYXR0cnNcbiAgICAgICAgICB8PiBXaXRoX2Vycm9ycy5vZl9yZXN1bHQgfmRlZmF1bHQ6eFxuICAgICAgICAgID4+PSBmdW4geCAtPlxuICAgICAgICAgIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5lbWJlZF9lcnJvcnMpXG5cbmxldCBtYXBfbm9kZSBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dCB4IH5ob29rIH5lbWJlZF9lcnJvcnMgPVxuICBsZXQgY3R4dCA9XG4gICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2M6bG9jIH5iYXNlOmJhc2VfY3R4dCAoKVxuICBpblxuICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgKHRyeVxuICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X3JlcyB0cyB+Y3R4dCBleHRcbiAgICAgICAgIHw+IFdpdGhfZXJyb3JzLm9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpXG4gICAgICA+Pj0gZnVuIGNvbnZlcnRlZCAtPlxuICAgICAgbWF0Y2ggY29udmVydGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBzdXBlcl9jYWxsIGJhc2VfY3R4dCB4XG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIG1hcF9ub2RlX3JlYyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgbG9jIGJhc2VfY3R4dFxuICAgICAgICAgICAgKEVDLm1lcmdlX2F0dHJpYnV0ZXMgY29udGV4dCB4IGF0dHJzKVxuICAgICAgICAgICAgfmVtYmVkX2Vycm9yc1xuICAgICAgICAgID4+fCBmdW4gZ2VuZXJhdGVkX2NvZGUgLT5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBjb250ZXh0IGxvYyAoU2luZ2xlIGdlbmVyYXRlZF9jb2RlKTtcbiAgICAgICAgICBnZW5lcmF0ZWRfY29kZSlcblxubGV0IHJlYyBtYXBfbm9kZXMgY29udGV4dCB0cyBzdXBlcl9jYWxsIGdldF9sb2MgYmFzZV9jdHh0IGwgfmhvb2sgfmVtYmVkX2Vycm9yc1xuICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IHJldHVybiBbXVxuICB8IHggOjogbCAtPiAoXG4gICAgICBtYXRjaCBFQy5nZXRfZXh0ZW5zaW9uIGNvbnRleHQgeCB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAoKiBUaGVzZSB0d28gbGV0cyBmb3JjZSB0aGUgZXZhbHVhdGlvbiBvcmRlciwgc28gdGhhdCBlcnJvcnMgYXJlIHJlcG9ydGVkIGluIHRoZVxuICAgICAgICAgICAgIHNhbWUgb3JkZXIgYXMgdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBmaWxlLiAqKVxuICAgICAgICAgIHN1cGVyX2NhbGwgYmFzZV9jdHh0IHggPj49IGZ1biB4IC0+XG4gICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgID4+fCBmdW4gbCAtPiB4IDo6IGxcbiAgICAgIHwgU29tZSAoZXh0LCBhdHRycykgLT4gKFxuICAgICAgICAgIGxldCBleHRlbnNpb25fcG9pbnRfbG9jID0gZ2V0X2xvYyB4IGluXG4gICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgRS5Gb3JfY29udGV4dC5jb252ZXJ0X2lubGluZV9yZXMgdHMgfmN0eHQgZXh0XG4gICAgICAgICAgICAgfD4gV2l0aF9lcnJvcnMub2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT4gKE5vbmUsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpXG4gICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHN1cGVyX2NhbGwgYmFzZV9jdHh0IHggPj49IGZ1biB4IC0+XG4gICAgICAgICAgICAgIG1hcF9ub2RlcyBjb250ZXh0IHRzIHN1cGVyX2NhbGwgZ2V0X2xvYyBiYXNlX2N0eHQgbCB+aG9va1xuICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnMgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgID4+fCBmdW4gbCAtPiB4IDo6IGxcbiAgICAgICAgICB8IFNvbWUgY29udmVydGVkIC0+XG4gICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBjb252ZXJ0ZWQgfmhvb2tcbiAgICAgICAgICAgICAgICB+ZW1iZWRfZXJyb3JzIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgICAgICAgID4+PSBmdW4gZ2VuZXJhdGVkX2NvZGUgLT5cbiAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBjb250ZXh0IGV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgIChNYW55IGdlbmVyYXRlZF9jb2RlKTtcbiAgICAgICAgICAgICAgbWFwX25vZGVzIGNvbnRleHQgdHMgc3VwZXJfY2FsbCBnZXRfbG9jIGJhc2VfY3R4dCBsIH5ob29rXG4gICAgICAgICAgICAgICAgfmVtYmVkX2Vycm9ycyB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgPj58IGZ1biBjb2RlIC0+IGdlbmVyYXRlZF9jb2RlIEAgY29kZSkpXG5cbmxldCBtYXBfbm9kZXMgPSBtYXBfbm9kZXMgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbmxldCB0YWJsZV9vZl9zcGVjaWFsX2Z1bmN0aW9ucyBzcGVjaWFsX2Z1bmN0aW9ucyA9XG4gIG1hdGNoXG4gICAgTGlzdC5tYXAgc3BlY2lhbF9mdW5jdGlvbnNcbiAgICAgIH5mOihmdW4geyBSdWxlLlNwZWNpYWxfZnVuY3Rpb24uaWRlbnQ7IGV4cGFuZDsgXyB9IC0+IChpZGVudCwgZXhwYW5kKSlcbiAgICAoKiBXZSBleHBlY3QgdGhlIGxvb2t1cCB0byBmYWlsIG1vc3Qgb2YgdGhlIHRpbWUsIGJ5IG1ha2luZyB0aGUgdGFibGUgYmlnIChhbmRcbiAgICAgICBzcGFyc2UpLCB3ZSBtYWtlIGl0IG1vcmUgbGlrZWx5IHRvIGZhaWwgcXVpY2tseSAqKVxuICAgIHw+IEhhc2h0Ymwub2ZfYWxpc3QgfnNpemU6KG1heCAxMDI0IChMaXN0Lmxlbmd0aCBzcGVjaWFsX2Z1bmN0aW9ucyAqIDIpKVxuICB3aXRoXG4gIHwgT2sgdGFibGUgLT4gdGFibGVcbiAgfCBFcnJvciBpZGVudCAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnXG4gICAgICAgIFwiQ29udGV4dF9mcmVlLlYxLm1hcF90b3BfZG93bjogJXMgcHJlc2VudCB0d2ljZSBpbiBsaXN0IG9mIHNwZWNpYWwgXFxcbiAgICAgICAgIGZ1bmN0aW9uc1wiXG4gICAgICAgIChMaXN0LmZpbmRfbWFwX2V4biBzcGVjaWFsX2Z1bmN0aW9ucyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICBpZiBQb2x5LmVxdWFsIHIuaWRlbnQgaWRlbnQgdGhlbiBTb21lIHIubmFtZSBlbHNlIE5vbmUpKVxuXG4oKiBbZ2V0X2dyb3VwIGF0dHIgbF0gcmV0dXJucyB0aGUgbGlzdCBvZiB0aGUgYXR0cmlidXRlcyBmb3IgZWFjaFxuICAgbm9kZSBpbiBbbF0uXG4gICBJZiBbbF0gaXMgZW1wdHkgb3IgaWYgbm9uZSBvZiB0aGUgbm9kZXMgaW4gW2xdIGhhdmUgYW4gYXR0cmlidXRlIGF0dGFjaGVkLFxuICAgW2dldF9ncm91cF0gcmV0dXJucyBbTm9uZV0uXG4gICBJZiBbbF0gaXMgbm90IGVtcHR5IGFuZCBhdCBsZWFzdCBvbmUgb2YgdGhlIG5vZGVzIGluIFtsXSBoYXMgYW4gYXR0cmlidWVcbiAgIGF0dGFjaGVkLCBbZ2V0X2dyb3VwXSByZXR1cm5zIHRoZSBlcXVpdmFsZW50IG9mXG4gICBbU29tZSAoTGlzdC5tYXAgfmY6KEF0dHJpYnV0ZS5nZXQgYXR0cikgbCldLiAqKVxubGV0IHJlYyBnZXRfZ3JvdXAgYXR0ciBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgfCB4IDo6IGwgLT4gKFxuICAgICAgZ2V0X2dyb3VwIGF0dHIgbCA+Pj0gZnVuIGdyb3VwIC0+XG4gICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBhdHRyIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmUgPj58IGZ1biBhdHRyMiAtPlxuICAgICAgbWF0Y2ggKGF0dHIyLCBncm91cCkgd2l0aFxuICAgICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICAgIHwgTm9uZSwgU29tZSB2YWxzIC0+IFNvbWUgKE5vbmUgOjogdmFscylcbiAgICAgIHwgU29tZSB2YWx1ZSwgTm9uZSAtPiBTb21lIChTb21lIHZhbHVlIDo6IExpc3QubWFwIGwgfmY6KGZ1biBfIC0+IE5vbmUpKVxuICAgICAgfCBTb21lIHZhbHVlLCBTb21lIHZhbHMgLT4gU29tZSAoU29tZSB2YWx1ZSA6OiB2YWxzKSlcblxuKCogU2FtZSBhcyBbTGlzdC5yZXZdIHRoZW4gW0xpc3QuY29uY2F0XSBidXQgZXhwZWN0aW5nIHRoZSBpbnB1dCB0byBiZSBvZiBsZW5ndGggPD0gMiAqKVxubGV0IHJldl9jb25jYXQgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgWyB4IF0gLT4geFxuICB8IFsgeDsgeSBdIC0+IHkgQCB4XG4gIHwgbCAtPiBMaXN0LmNvbmNhdCAoTGlzdC5yZXYgbClcblxubGV0IHNvcnRfYXR0cl9ncm91cF9pbmxpbmUgbCA9XG4gIExpc3Quc29ydCBsIH5jbXA6KGZ1biBhIGIgLT5cbiAgICAgIFN0cmluZy5jb21wYXJlXG4gICAgICAgIChSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLmF0dHJfbmFtZSBhKVxuICAgICAgICAoUnVsZS5BdHRyX2dyb3VwX2lubGluZS5hdHRyX25hbWUgYikpXG5cbmxldCBzb3J0X2F0dHJfaW5saW5lIGwgPVxuICBMaXN0LnNvcnQgbCB+Y21wOihmdW4gYSBiIC0+XG4gICAgICBTdHJpbmcuY29tcGFyZVxuICAgICAgICAoUnVsZS5BdHRyX2lubGluZS5hdHRyX25hbWUgYSlcbiAgICAgICAgKFJ1bGUuQXR0cl9pbmxpbmUuYXR0cl9uYW1lIGIpKVxuXG5sZXQgY29udGV4dF9mcmVlX2F0dHJpYnV0ZV9tb2RpZmljYXRpb24gfmxvYyA9XG4gIEVycm9yXG4gICAgKCBMb2NhdGlvbi5FcnJvci5jcmVhdGVmIH5sb2NcbiAgICAgICAgXCJBIGNvbnRleHQtZnJlZSBydWxlIGRlbGV0ZWQgb3IgYWRkZWQgYXR0cmlidWVzIG9mIGEgc3RyL3NpZyBpdGVtXCIsXG4gICAgICBbXSApXG5cbigqIFJldHVybnMgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGF0dHJpYnV0ZSBoYW5kbGVycy4gV2UgZG9uJ3QgcmVtb3ZlIHRoZXNlIGF0dHJpYnV0ZXMsIGFzXG4gICBhbm90aGVyIHBhc3MgbWlnaHQgaW50ZXJwcmV0IHRoZW0gbGF0ZXIuIEZvciBpbnN0YW5jZSBib3RoIHBweF9kZXJpdmluZyBhbmRcbiAgIHBweGxpYl9kZXJpdmluZyBpbnRlcnByZXRzIFtAQGRlcml2aW5nXSBhdHRyaWJ1dGVzLlxuXG4gICBUaGlzIGNvbXBsZXhpdHkgaXMgaG9ycmlibGUsIGJ1dCBpbiBwcmFjdGljZSB3ZSBkb24ndCBjYXJlIGFzIFthdHRyc10gaXMgYWx3YXlzIGEgbGlzdFxuICAgb2Ygb25lIGVsZW1lbnQ7IGl0IG9ubHkgaGFzIFtAQGRlcml2aW5nXS5cbiopXG5sZXQgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJzIHJmIH5pdGVtcyB+ZXhwYW5kZWRfaXRlbXMgfmxvYyB+YmFzZV9jdHh0XG4gICAgfmVtYmVkX2Vycm9ycyA9XG4gIExpc3QuZm9sZF9sZWZ0IGF0dHJzIH5pbml0OihyZXR1cm4gW10pXG4gICAgfmY6KGZ1biBhY2MgKFJ1bGUuQXR0cl9ncm91cF9pbmxpbmUuVCBncm91cCkgLT5cbiAgICAgIGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZ2V0X2dyb3VwIGdyb3VwLmF0dHJpYnV0ZSBpdGVtcyA+Pj0gZnVuIGcxIC0+XG4gICAgICBnZXRfZ3JvdXAgZ3JvdXAuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW1zID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlcywgU29tZSBfIC0+IChcbiAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLm1ha2UgfmRlcml2ZWRfaXRlbV9sb2M6bG9jXG4gICAgICAgICAgICAgIH5pbmxpbmU6Z3JvdXAuZXhwZWN0IH5iYXNlOmJhc2VfY3R4dCAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgZXhwZWN0X2l0ZW1zID0gZ3JvdXAuZXhwYW5kIH5jdHh0IHJmIGV4cGFuZGVkX2l0ZW1zIHZhbHVlcyBpblxuICAgICAgICAgICAgcmV0dXJuIChleHBlY3RfaXRlbXMgOjogYWNjKVxuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChhY2MsIFsgZXhuX3RvX2xvY19lcnJvciBleG4gXSkpKVxuXG5sZXQgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJzIH5pdGVtIH5leHBhbmRlZF9pdGVtIH5sb2MgfmJhc2VfY3R4dCB+ZW1iZWRfZXJyb3JzXG4gICAgPVxuICBMaXN0LmZvbGRfbGVmdCBhdHRycyB+aW5pdDoocmV0dXJuIFtdKSB+ZjooZnVuIGFjYyAoUnVsZS5BdHRyX2lubGluZS5UIGEpIC0+XG4gICAgICBhY2MgPj49IGZ1biBhY2MgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGEuYXR0cmlidXRlIGl0ZW0gfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW4gZzEgLT5cbiAgICAgIEF0dHJpYnV0ZS5nZXRfcmVzIGEuYXR0cmlidXRlIGV4cGFuZGVkX2l0ZW0gfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgID4+PSBmdW4gZzIgLT5cbiAgICAgIG1hdGNoIChnMSwgZzIpIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiByZXR1cm4gYWNjXG4gICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPlxuICAgICAgICAgIGNvbnRleHRfZnJlZV9hdHRyaWJ1dGVfbW9kaWZpY2F0aW9uIH5sb2MgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OmFjY1xuICAgICAgfCBTb21lIHZhbHVlLCBTb21lIF8gLT4gKFxuICAgICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIubWFrZSB+ZGVyaXZlZF9pdGVtX2xvYzpsb2NcbiAgICAgICAgICAgICAgfmlubGluZTphLmV4cGVjdCB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGV4cGVjdF9pdGVtcyA9IGEuZXhwYW5kIH5jdHh0IGV4cGFuZGVkX2l0ZW0gdmFsdWUgaW5cbiAgICAgICAgICAgIHJldHVybiAoZXhwZWN0X2l0ZW1zIDo6IGFjYylcbiAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoYWNjLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKSlcblxubW9kdWxlIEV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBmIDogJ2EuICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnQgLT4gTG9jYXRpb24udCAtPiAnYSBsaXN0IC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgbm9wID0geyBmID0gKGZ1biBfIF8gXyAtPiAoKSkgfVxuZW5kXG5cbmNsYXNzIG1hcF90b3BfZG93biA/KGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wKVxuICA/KGdlbmVyYXRlZF9jb2RlX2hvb2sgPSBHZW5lcmF0ZWRfY29kZV9ob29rLm5vcCkgPyhlbWJlZF9lcnJvcnMgPSBmYWxzZSkgcnVsZXNcbiAgPVxuICBsZXQgaG9vayA9IGdlbmVyYXRlZF9jb2RlX2hvb2sgaW5cblxuICBsZXQgc3BlY2lhbF9mdW5jdGlvbnMgPVxuICAgIFJ1bGUuZmlsdGVyIFNwZWNpYWxfZnVuY3Rpb24gcnVsZXMgfD4gdGFibGVfb2Zfc3BlY2lhbF9mdW5jdGlvbnNcbiAgaW5cbiAgbGV0IGNvbnN0YW50cyA9XG4gICAgUnVsZS5maWx0ZXIgQ29uc3RhbnQgcnVsZXNcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChjIDogUnVsZS5Db25zdGFudC50KSAtPiAoKGMuc3VmZml4LCBjLmtpbmQpLCBjLmV4cGFuZCkpXG4gICAgfD4gSGFzaHRibC5vZl9hbGlzdF9leG5cbiAgaW5cbiAgbGV0IGV4dGVuc2lvbnMgPSBSdWxlLmZpbHRlciBFeHRlbnNpb24gcnVsZXMgaW5cbiAgbGV0IGNsYXNzX2V4cHIgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2V4cHIgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfZmllbGQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX2ZpZWxkIGV4dGVuc2lvbnNcbiAgYW5kIGNsYXNzX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNsYXNzX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgY2xhc3NfdHlwZV9maWVsZCA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuY2xhc3NfdHlwZV9maWVsZCBleHRlbnNpb25zXG4gIGFuZCBjb3JlX3R5cGUgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLmNvcmVfdHlwZSBleHRlbnNpb25zXG4gIGFuZCBleHByZXNzaW9uID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5leHByZXNzaW9uIGV4dGVuc2lvbnNcbiAgYW5kIG1vZHVsZV9leHByID0gRS5maWx0ZXJfYnlfY29udGV4dCBFQy5tb2R1bGVfZXhwciBleHRlbnNpb25zXG4gIGFuZCBtb2R1bGVfdHlwZSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMubW9kdWxlX3R5cGUgZXh0ZW5zaW9uc1xuICBhbmQgcGF0dGVybiA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMucGF0dGVybiBleHRlbnNpb25zXG4gIGFuZCBzaWduYXR1cmVfaXRlbSA9IEUuZmlsdGVyX2J5X2NvbnRleHQgRUMuc2lnbmF0dXJlX2l0ZW0gZXh0ZW5zaW9uc1xuICBhbmQgc3RydWN0dXJlX2l0ZW0gPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLnN0cnVjdHVyZV9pdGVtIGV4dGVuc2lvbnNcbiAgYW5kIHBweF9pbXBvcnQgPSBFLmZpbHRlcl9ieV9jb250ZXh0IEVDLlBweF9pbXBvcnQgZXh0ZW5zaW9ucyBpblxuXG4gIGxldCBhdHRyX3N0cl90eXBlX2RlY2xzLCBhdHRyX3N0cl90eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ190eXBlX2RlY2xzLCBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfdHlwZV9kZWNsIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2dyb3VwX2lubGluZSB8PiBSdWxlLkF0dHJfZ3JvdXBfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IGF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cbiAgbGV0IGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzLCBhdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsc19leHBlY3QgPVxuICAgIFJ1bGUuZmlsdGVyIEF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2wgcnVsZXNcbiAgICB8PiBzb3J0X2F0dHJfaW5saW5lIHw+IFJ1bGUuQXR0cl9pbmxpbmUuc3BsaXRfbm9ybWFsX2FuZF9leHBlY3RcbiAgaW5cblxuICBsZXQgYXR0cl9zdHJfdHlwZV9leHRzLCBhdHRyX3N0cl90eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3N0cl90eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuICBsZXQgYXR0cl9zaWdfdHlwZV9leHRzLCBhdHRyX3NpZ190eXBlX2V4dHNfZXhwZWN0ID1cbiAgICBSdWxlLmZpbHRlciBBdHRyX3NpZ190eXBlX2V4dCBydWxlc1xuICAgIHw+IHNvcnRfYXR0cl9pbmxpbmUgfD4gUnVsZS5BdHRyX2lubGluZS5zcGxpdF9ub3JtYWxfYW5kX2V4cGVjdFxuICBpblxuXG4gIGxldCBhdHRyX3N0cl9leGNlcHRpb25zLCBhdHRyX3N0cl9leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zdHJfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG4gIGxldCBhdHRyX3NpZ19leGNlcHRpb25zLCBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCA9XG4gICAgUnVsZS5maWx0ZXIgQXR0cl9zaWdfZXhjZXB0aW9uIHJ1bGVzXG4gICAgfD4gc29ydF9hdHRyX2lubGluZSB8PiBSdWxlLkF0dHJfaW5saW5lLnNwbGl0X25vcm1hbF9hbmRfZXhwZWN0XG4gIGluXG5cbiAgbGV0IG1hcF9ub2RlID0gbWFwX25vZGUgfmhvb2sgfmVtYmVkX2Vycm9ycyBpblxuICBsZXQgbWFwX25vZGVzID0gbWFwX25vZGVzIH5ob29rIH5lbWJlZF9lcnJvcnMgaW5cbiAgbGV0IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSA9IGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSB+ZW1iZWRfZXJyb3JzIGluXG4gIGxldCBoYW5kbGVfYXR0cl9pbmxpbmUgPSBoYW5kbGVfYXR0cl9pbmxpbmUgfmVtYmVkX2Vycm9ycyBpblxuXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXBfd2l0aF9leHBhbnNpb25fY29udGV4dF9hbmRfZXJyb3JzIGFzIHN1cGVyXG5cbiAgICAoKiBObyBwb2ludCByZWN1cnNpbmcgaW50byBldmVyeSBsb2NhdGlvbiAqKVxuICAgIG1ldGhvZCEgbG9jYXRpb24gXyB4ID0gcmV0dXJuIHhcblxuICAgIG1ldGhvZCEgY29yZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNvcmVfdHlwZSBjb3JlX3R5cGUgc3VwZXIjY29yZV90eXBlIHgucHR5cF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgcGF0dGVybiBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5wYXR0ZXJuIHBhdHRlcm4gc3VwZXIjcGF0dGVybiB4LnBwYXRfbG9jIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gYmFzZV9jdHh0IGUgPVxuICAgICAgbGV0IHdpdGhfY29udGV4dCA9XG4gICAgICAgICgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICAgQXR0cmlidXRlLmdldF9yZXMgQXN0X3RyYXZlcnNlLmVudGVyX3ZhbHVlIGUgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICAgPj49IGZ1biBvcHRpb24gLT5cbiAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJldHVybiAoYmFzZV9jdHh0LCBlKVxuICAgICAgICB8IFNvbWUgeyBsb2M7IHR4dCB9IC0+XG4gICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIEV4cHJlc3Npb25cbiAgICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl92YWx1ZSBdXG4gICAgICAgICAgICAgIGVcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDplXG4gICAgICAgICAgICA+PnwgZnVuIGUgLT5cbiAgICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX3ZhbHVlIH5sb2MgdHh0IGJhc2VfY3R4dCwgZSlcbiAgICAgIGluXG4gICAgICB3aXRoX2NvbnRleHQgPj49IGZ1biAoYmFzZV9jdHh0LCBlKSAtPlxuICAgICAgbGV0IGV4cGFuZGVkID1cbiAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICB8IFBleHBfZXh0ZW5zaW9uIF8gLT5cbiAgICAgICAgICAgIG1hcF9ub2RlIEVDLmV4cHJlc3Npb24gZXhwcmVzc2lvblxuICAgICAgICAgICAgICAoZnVuIF8gZSAtPiByZXR1cm4gZSlcbiAgICAgICAgICAgICAgZS5wZXhwX2xvYyBiYXNlX2N0eHQgZVxuICAgICAgICB8IF8gLT4gcmV0dXJuIGVcbiAgICAgIGluXG4gICAgICBleHBhbmRlZCA+Pj0gZnVuIGUgLT5cbiAgICAgIGxldCBleHBhbmRfY29uc3RhbnQga2luZCBjaGFyIHRleHQgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IGNvbnN0YW50cyAoY2hhciwga2luZCkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZVxuICAgICAgICB8IFNvbWUgZXhwYW5kIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgKGV4cGFuZCBlLnBleHBfbG9jIHRleHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2FwcGx5ICgoeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IGlkOyBfIH0gYXMgZnVuYyksIGFyZ3MpIC0+IChcbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmRfb3B0IHNwZWNpYWxfZnVuY3Rpb25zIGlkLnR4dCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIHNlbGYjcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoTm9uZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgc2VsZiNwZXhwX2FwcGx5X3dpdGhvdXRfdHJhdmVyc2luZ19mdW5jdGlvbiBiYXNlX2N0eHQgZSBmdW5jXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgICAgICAgfCBTb21lIGUgLT4gc2VsZiNleHByZXNzaW9uIGJhc2VfY3R4dCBlKSlcbiAgICAgIHwgUGV4cF9pZGVudCBpZCAtPiAoXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX29wdCBzcGVjaWFsX2Z1bmN0aW9ucyBpZC50eHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgfCBTb21lIHBhdHRlcm4gLT4gKFxuICAgICAgICAgICAgICBsZXQgZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICAgICAgICAgIHRyeSByZXR1cm4gKHBhdHRlcm4gZSlcbiAgICAgICAgICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPiAoTm9uZSwgWyBleG5fdG9fbG9jX2Vycm9yIGV4biBdKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBnZW5lcmF0ZWRfY29kZSA+Pj0gZnVuIGV4cHIgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNleHByZXNzaW9uIGJhc2VfY3R4dCBlXG4gICAgICAgICAgICAgIHwgU29tZSBlIC0+IHNlbGYjZXhwcmVzc2lvbiBiYXNlX2N0eHQgZSkpXG4gICAgICB8IFBleHBfY29uc3RhbnQgKFBjb25zdF9pbnRlZ2VyIChzLCBTb21lIGMpKSAtPiAoXG4gICAgICAgICAgdHJ5IGV4cGFuZF9jb25zdGFudCBJbnRlZ2VyIGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChlLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgfCBQZXhwX2NvbnN0YW50IChQY29uc3RfZmxvYXQgKHMsIFNvbWUgYykpIC0+IChcbiAgICAgICAgICB0cnkgZXhwYW5kX2NvbnN0YW50IEZsb2F0IGMgc1xuICAgICAgICAgIHdpdGggZXhuIHdoZW4gZW1iZWRfZXJyb3JzIC0+IChlLCBbIGV4bl90b19sb2NfZXJyb3IgZXhuIF0pKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb24gYmFzZV9jdHh0IGVcblxuICAgICgqIFByZS1jb25kaXRpb25zOlxuICAgICAgIC0gZS5wZXhwX2Rlc2MgPSBQZXhwX2FwcGx5KGZ1bmMsIGFyZ3MpXG4gICAgICAgLSBmdW5jLnBleHBfZGVzYyA9IFBleHBfaWRlbnQgX1xuICAgICopXG4gICAgbWV0aG9kIHByaXZhdGUgcGV4cF9hcHBseV93aXRob3V0X3RyYXZlcnNpbmdfZnVuY3Rpb24gYmFzZV9jdHh0IGUgZnVuYyBhcmdzXG4gICAgICAgID1cbiAgICAgIGxldCB7IHBleHBfZGVzYyA9IF87IHBleHBfbG9jOyBwZXhwX2F0dHJpYnV0ZXM7IHBleHBfbG9jX3N0YWNrIH0gPSBlIGluXG4gICAgICBsZXQgZnVuYyA9XG4gICAgICAgIGxldCB7IHBleHBfZGVzYzsgcGV4cF9sb2M7IHBleHBfYXR0cmlidXRlczsgcGV4cF9sb2Nfc3RhY2sgfSA9IGZ1bmMgaW5cbiAgICAgICAgc2VsZiNhdHRyaWJ1dGVzIGJhc2VfY3R4dCBwZXhwX2F0dHJpYnV0ZXMgPj58IGZ1biBwZXhwX2F0dHJpYnV0ZXMgLT5cbiAgICAgICAge1xuICAgICAgICAgIHBleHBfZGVzYztcbiAgICAgICAgICBwZXhwX2xvYyAoKiBsb2NhdGlvbiBkb2Vzbid0IG5lZWQgdG8gYmUgdHJhdmVyc2VkICopO1xuICAgICAgICAgIHBleHBfYXR0cmlidXRlcztcbiAgICAgICAgICBwZXhwX2xvY19zdGFjaztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGZ1bmMgPj49IGZ1biBmdW5jIC0+XG4gICAgICBsZXQgYXJncyA9XG4gICAgICAgIExpc3QubWFwIGFyZ3MgfmY6KGZ1biAobGFiLCBleHApIC0+XG4gICAgICAgICAgICBzZWxmI2V4cHJlc3Npb24gYmFzZV9jdHh0IGV4cCA+PnwgZnVuIGV4cCAtPiAobGFiLCBleHApKVxuICAgICAgICB8PiBjb21iaW5lX2Vycm9yc1xuICAgICAgaW5cbiAgICAgIGFyZ3MgPj49IGZ1biBhcmdzIC0+XG4gICAgICBzZWxmI2F0dHJpYnV0ZXMgYmFzZV9jdHh0IHBleHBfYXR0cmlidXRlcyA+PnwgZnVuIHBleHBfYXR0cmlidXRlcyAtPlxuICAgICAge1xuICAgICAgICBwZXhwX2xvYztcbiAgICAgICAgcGV4cF9hdHRyaWJ1dGVzO1xuICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX2FwcGx5IChmdW5jLCBhcmdzKTtcbiAgICAgICAgcGV4cF9sb2Nfc3RhY2s7XG4gICAgICB9XG5cbiAgICBtZXRob2QhIGNsYXNzX3R5cGUgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfdHlwZSBjbGFzc190eXBlIHN1cGVyI2NsYXNzX3R5cGUgeC5wY3R5X2xvYyBiYXNlX2N0eHQgeFxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2ZpZWxkIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIHgucGN0Zl9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZXhwciBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5jbGFzc19leHByIGNsYXNzX2V4cHIgc3VwZXIjY2xhc3NfZXhwciB4LnBjbF9sb2MgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuY2xhc3NfZmllbGQgY2xhc3NfZmllbGQgc3VwZXIjY2xhc3NfZmllbGQgeC5wY2ZfbG9jIGJhc2VfY3R4dFxuICAgICAgICB4XG5cbiAgICBtZXRob2QhIG1vZHVsZV90eXBlIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLm1vZHVsZV90eXBlIG1vZHVsZV90eXBlIHN1cGVyI21vZHVsZV90eXBlIHgucG10eV9sb2MgYmFzZV9jdHh0XG4gICAgICAgIHhcblxuICAgIG1ldGhvZCEgbW9kdWxlX2V4cHIgYmFzZV9jdHh0IHggPVxuICAgICAgKCgqIE1ha2Ugc3VyZSBjb2RlLXBhdGggYXR0cmlidXRlIGlzIGFwcGxpZWQgYmVmb3JlIGV4cGFuZGluZy4gKilcbiAgICAgICBBdHRyaWJ1dGUuZ2V0X3JlcyBBc3RfdHJhdmVyc2UuZW50ZXJfbW9kdWxlIHggfD4gb2ZfcmVzdWx0IH5kZWZhdWx0Ok5vbmVcbiAgICAgICA+Pj0gZnVuY3Rpb25cbiAgICAgICB8IE5vbmUgLT4gcmV0dXJuIChiYXNlX2N0eHQsIHgpXG4gICAgICAgfCBTb21lIHsgbG9jOyB0eHQgfSAtPlxuICAgICAgICAgICBBdHRyaWJ1dGUucmVtb3ZlX3NlZW5fcmVzIE1vZHVsZV9leHByXG4gICAgICAgICAgICAgWyBUIEFzdF90cmF2ZXJzZS5lbnRlcl9tb2R1bGUgXVxuICAgICAgICAgICAgIHhcbiAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OnhcbiAgICAgICAgICAgPj58IGZ1biB4IC0+XG4gICAgICAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLmVudGVyX21vZHVsZSB+bG9jIHR4dCBiYXNlX2N0eHQsIHgpKVxuICAgICAgPj49IGZ1biAoYmFzZV9jdHh0LCB4KSAtPlxuICAgICAgbWFwX25vZGUgRUMubW9kdWxlX2V4cHIgbW9kdWxlX2V4cHIgc3VwZXIjbW9kdWxlX2V4cHIgeC5wbW9kX2xvYyBiYXNlX2N0eHRcbiAgICAgICAgeFxuXG4gICAgbWV0aG9kISBzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgeCA9XG4gICAgICBtYXBfbm9kZSBFQy5zdHJ1Y3R1cmVfaXRlbSBzdHJ1Y3R1cmVfaXRlbSBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4LnBzdHJfbG9jXG4gICAgICAgIGJhc2VfY3R4dCB4XG5cbiAgICBtZXRob2QhIHNpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCB4ID1cbiAgICAgIG1hcF9ub2RlIEVDLnNpZ25hdHVyZV9pdGVtIHNpZ25hdHVyZV9pdGVtIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHgucHNpZ19sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc3RydWN0dXJlIGJhc2VfY3R4dCB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjcGF0dGVybiBiYXNlX2N0eHQgcGNzdHJfc2VsZiA+Pj0gZnVuIHBjc3RyX3NlbGYgLT5cbiAgICAgIG1hcF9ub2RlcyBFQy5jbGFzc19maWVsZCBjbGFzc19maWVsZCBzdXBlciNjbGFzc19maWVsZFxuICAgICAgICAoZnVuIHggLT4geC5wY2ZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzdHJfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc3RyX2ZpZWxkcyAtPiB7IHBjc3RyX3NlbGY7IHBjc3RyX2ZpZWxkcyB9XG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24gYmFzZV9jdHh0IHggPVxuICAgICAgbWFwX25vZGUgRUMuUHB4X2ltcG9ydCBwcHhfaW1wb3J0IHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geC5wdHlwZV9sb2NcbiAgICAgICAgYmFzZV9jdHh0IHhcblxuICAgIG1ldGhvZCEgY2xhc3Nfc2lnbmF0dXJlIGJhc2VfY3R4dCB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9ID1cbiAgICAgIHNlbGYjY29yZV90eXBlIGJhc2VfY3R4dCBwY3NpZ19zZWxmID4+PSBmdW4gcGNzaWdfc2VsZiAtPlxuICAgICAgbWFwX25vZGVzIEVDLmNsYXNzX3R5cGVfZmllbGQgY2xhc3NfdHlwZV9maWVsZCBzdXBlciNjbGFzc190eXBlX2ZpZWxkXG4gICAgICAgIChmdW4geCAtPiB4LnBjdGZfbG9jKVxuICAgICAgICBiYXNlX2N0eHQgcGNzaWdfZmllbGRzXG4gICAgICA+PnwgZnVuIHBjc2lnX2ZpZWxkcyAtPiB7IHBjc2lnX3NlbGY7IHBjc2lnX2ZpZWxkcyB9XG5cbiAgICAoKiBUT0RPOiB0cnkgdG8gZmFjdG9yaXplICNzdHJ1Y3R1cmUgYW5kICNzaWduYXR1cmUgd2l0aG91dCBtZXRhLXByb2dyYW1taW5nICopXG4gICAgKCokKilcbiAgICBtZXRob2QhIHN0cnVjdHVyZSBiYXNlX2N0eHQgc3QgPVxuICAgICAgbGV0IHJlYyB3aXRoX2V4dHJhX2l0ZW1zIGl0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXMgfnJlc3RcbiAgICAgICAgICB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBsb29wIChyZXZfY29uY2F0IGV4dHJhX2l0ZW1zKSB+aW5fZ2VuZXJhdGVkX2NvZGU6dHJ1ZVxuICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgIGlmIG5vdCBpbl9nZW5lcmF0ZWRfY29kZSB0aGVuXG4gICAgICAgICAgR2VuZXJhdGVkX2NvZGVfaG9vay5pbnNlcnRfYWZ0ZXIgaG9vayBTdHJ1Y3R1cmVfaXRlbSBpdGVtLnBzdHJfbG9jXG4gICAgICAgICAgICAoTWFueSBleHRyYV9pdGVtcyk7XG4gICAgICAgIGxldCBvcmlnaW5hbF9yZXN0ID0gcmVzdCBpblxuICAgICAgICBsb29wIHJlc3QgfmluX2dlbmVyYXRlZF9jb2RlID4+PSBmdW4gcmVzdCAtPlxuICAgICAgICAobWF0Y2ggZXhwZWN0X2l0ZW1zIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gKClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgZXhwZWN0ZWQgPSByZXZfY29uY2F0IGV4cGVjdF9pdGVtcyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IGl0ZW0ucHN0cl9sb2MubG9jX2VuZCBpblxuICAgICAgICAgICAgQ29kZV9tYXRjaGVyLm1hdGNoX3N0cnVjdHVyZV9yZXMgb3JpZ2luYWxfcmVzdCB+cG9zIH5leHBlY3RlZFxuICAgICAgICAgICAgICB+bWlzbWF0Y2hfaGFuZGxlcjooZnVuIGxvYyByZXBsIC0+XG4gICAgICAgICAgICAgICAgZXhwZWN0X21pc21hdGNoX2hhbmRsZXIuZiBTdHJ1Y3R1cmVfaXRlbSBsb2MgcmVwbClcbiAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDooKSlcbiAgICAgICAgPj58IGZ1biAoKSAtPiBpdGVtIDo6IChleHRyYV9pdGVtcyBAIHJlc3QpXG4gICAgICBhbmQgbG9vcCBzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmV0dXJuIFtdXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IChcbiAgICAgICAgICAgIGxldCBsb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICBtYXRjaCBpdGVtLnBzdHJfZGVzYyB3aXRoXG4gICAgICAgICAgICB8IFBzdHJfZXh0ZW5zaW9uIChleHQsIGF0dHJzKSAtPiAoXG4gICAgICAgICAgICAgICAgbGV0IGV4dGVuc2lvbl9wb2ludF9sb2MgPSBpdGVtLnBzdHJfbG9jIGluXG4gICAgICAgICAgICAgICAgbGV0IGN0eHQgPVxuICAgICAgICAgICAgICAgICAgRXhwYW5zaW9uX2NvbnRleHQuRXh0ZW5zaW9uLm1ha2UgfmV4dGVuc2lvbl9wb2ludF9sb2NcbiAgICAgICAgICAgICAgICAgICAgfmJhc2U6YmFzZV9jdHh0ICgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBFLkZvcl9jb250ZXh0LmNvbnZlcnRfaW5saW5lX3JlcyBzdHJ1Y3R1cmVfaXRlbSB+Y3R4dCBleHRcbiAgICAgICAgICAgICAgICB8PiBvZl9yZXN1bHQgfmRlZmF1bHQ6Tm9uZVxuICAgICAgICAgICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGl0ZW0gLT5cbiAgICAgICAgICAgICAgICAgICAgc2VsZiNzdHJ1Y3R1cmUgYmFzZV9jdHh0IHJlc3QgPj58IGZ1biByZXN0IC0+IGl0ZW0gOjogcmVzdFxuICAgICAgICAgICAgICAgIHwgU29tZSBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICAoKCksIGF0dHJpYnV0ZXNfZXJyb3JzIGF0dHJzKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIGFzc2VydF9ub19hdHRyaWJ1dGVzIGF0dHJzOyAqKVxuICAgICAgICAgICAgICAgICAgICBsb29wIGl0ZW1zIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlID4+PSBmdW4gaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLnJlcGxhY2UgaG9vayBTdHJ1Y3R1cmVfaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wc3RyX2xvYyAoTWFueSBpdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj58IGZ1biByZXN0IC0+IGl0ZW1zIEAgcmVzdClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgc3VwZXIjc3RydWN0dXJlX2l0ZW0gYmFzZV9jdHh0IGl0ZW0gPj49IGZ1biBleHBhbmRlZF9pdGVtIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggKGl0ZW0ucHN0cl9kZXNjLCBleHBhbmRlZF9pdGVtLnBzdHJfZGVzYykgd2l0aFxuICAgICAgICAgICAgICAgIHwgUHN0cl90eXBlIChyZiwgdGRzKSwgUHN0cl90eXBlIChleHBfcmYsIGV4cF90ZHMpIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIE5vIGNvbnRleHQtZnJlZSBydWxlIGNhbiByZXdyaXRlIHJlYyBmbGFncyBhdG0sIHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGFjdHMgYXMgYSBmYWlsc2FmZSBpbiBjYXNlIGl0IGV2ZXIgY2hhbmdlcyAqKVxuICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFBvbHkuKHJmID0gZXhwX3JmKSk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3N0cl90eXBlX2RlY2xzIHJmIH5pdGVtczp0ZHNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbXM6ZXhwX3RkcyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9ncm91cF9pbmxpbmUgYXR0cl9zdHJfdHlwZV9kZWNsc19leHBlY3QgcmZcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbXM6dGRzIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzdHJfbW9kdHlwZSBtdGQsIFBzdHJfbW9kdHlwZSBleHBfbXRkIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNscyB+aXRlbTptdGRcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsc19leHBlY3RcbiAgICAgICAgICAgICAgICAgICAgICB+aXRlbTptdGQgfmV4cGFuZGVkX2l0ZW06ZXhwX210ZCB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc3RyX3R5cGV4dCB0ZSwgUHN0cl90eXBleHQgZXhwX3RlIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3N0cl90eXBlX2V4dHMgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc3RyX3R5cGVfZXh0c19leHBlY3Qgfml0ZW06dGVcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfdGUgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHN0cl9leGNlcHRpb24gZWMsIFBzdHJfZXhjZXB0aW9uIGV4cF9lYyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9ucyB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zdHJfZXhjZXB0aW9uc19leHBlY3Qgfml0ZW06ZWNcbiAgICAgICAgICAgICAgICAgICAgICB+ZXhwYW5kZWRfaXRlbTpleHBfZWMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgXywgXyAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3N0cnVjdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRfaXRlbSA6OiByZXN0KSlcbiAgICAgIGluXG4gICAgICBsb29wIHN0IH5pbl9nZW5lcmF0ZWRfY29kZTpmYWxzZVxuXG4gICAgKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuICAgIG1ldGhvZCEgc2lnbmF0dXJlIGJhc2VfY3R4dCBzZyA9XG4gICAgICBsZXQgcmVjIHdpdGhfZXh0cmFfaXRlbXMgaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtcyB+cmVzdFxuICAgICAgICAgIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIGxvb3AgKHJldl9jb25jYXQgZXh0cmFfaXRlbXMpIH5pbl9nZW5lcmF0ZWRfY29kZTp0cnVlXG4gICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgaWYgbm90IGluX2dlbmVyYXRlZF9jb2RlIHRoZW5cbiAgICAgICAgICBHZW5lcmF0ZWRfY29kZV9ob29rLmluc2VydF9hZnRlciBob29rIFNpZ25hdHVyZV9pdGVtIGl0ZW0ucHNpZ19sb2NcbiAgICAgICAgICAgIChNYW55IGV4dHJhX2l0ZW1zKTtcbiAgICAgICAgbGV0IG9yaWdpbmFsX3Jlc3QgPSByZXN0IGluXG4gICAgICAgIGxvb3AgcmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGUgPj49IGZ1biByZXN0IC0+XG4gICAgICAgIChtYXRjaCBleHBlY3RfaXRlbXMgd2l0aFxuICAgICAgICB8IFtdIC0+IHJldHVybiAoKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIGxldCBleHBlY3RlZCA9IHJldl9jb25jYXQgZXhwZWN0X2l0ZW1zIGluXG4gICAgICAgICAgICBsZXQgcG9zID0gaXRlbS5wc2lnX2xvYy5sb2NfZW5kIGluXG4gICAgICAgICAgICBDb2RlX21hdGNoZXIubWF0Y2hfc2lnbmF0dXJlX3JlcyBvcmlnaW5hbF9yZXN0IH5wb3MgfmV4cGVjdGVkXG4gICAgICAgICAgICAgIH5taXNtYXRjaF9oYW5kbGVyOihmdW4gbG9jIHJlcGwgLT5cbiAgICAgICAgICAgICAgICBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5mIFNpZ25hdHVyZV9pdGVtIGxvYyByZXBsKVxuICAgICAgICAgICAgfD4gb2ZfcmVzdWx0IH5kZWZhdWx0OigpKVxuICAgICAgICA+PnwgZnVuICgpIC0+IGl0ZW0gOjogKGV4dHJhX2l0ZW1zIEAgcmVzdClcbiAgICAgIGFuZCBsb29wIHNnIH5pbl9nZW5lcmF0ZWRfY29kZSA9XG4gICAgICAgIG1hdGNoIHNnIHdpdGhcbiAgICAgICAgfCBbXSAtPiByZXR1cm4gW11cbiAgICAgICAgfCBpdGVtIDo6IHJlc3QgLT4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgIG1hdGNoIGl0ZW0ucHNpZ19kZXNjIHdpdGhcbiAgICAgICAgICAgIHwgUHNpZ19leHRlbnNpb24gKGV4dCwgYXR0cnMpIC0+IChcbiAgICAgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uX3BvaW50X2xvYyA9IGl0ZW0ucHNpZ19sb2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgY3R4dCA9XG4gICAgICAgICAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5FeHRlbnNpb24ubWFrZSB+ZXh0ZW5zaW9uX3BvaW50X2xvY1xuICAgICAgICAgICAgICAgICAgICB+YmFzZTpiYXNlX2N0eHQgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEUuRm9yX2NvbnRleHQuY29udmVydF9pbmxpbmVfcmVzIHNpZ25hdHVyZV9pdGVtIH5jdHh0IGV4dFxuICAgICAgICAgICAgICAgIHw+IG9mX3Jlc3VsdCB+ZGVmYXVsdDpOb25lXG4gICAgICAgICAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIGJhc2VfY3R4dCBpdGVtID4+PSBmdW4gaXRlbSAtPlxuICAgICAgICAgICAgICAgICAgICBzZWxmI3NpZ25hdHVyZSBiYXNlX2N0eHQgcmVzdCA+PnwgZnVuIHJlc3QgLT4gaXRlbSA6OiByZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIGl0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgICgoKSwgYXR0cmlidXRlc19lcnJvcnMgYXR0cnMpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogYXNzZXJ0X25vX2F0dHJpYnV0ZXMgYXR0cnM7ICopXG4gICAgICAgICAgICAgICAgICAgIGxvb3AgaXRlbXMgfmluX2dlbmVyYXRlZF9jb2RlOnRydWUgPj49IGZ1biBpdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBub3QgaW5fZ2VuZXJhdGVkX2NvZGUgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlZF9jb2RlX2hvb2sucmVwbGFjZSBob29rIFNpZ25hdHVyZV9pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBzaWdfbG9jIChNYW55IGl0ZW1zKTtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCByZXN0IH5pbl9nZW5lcmF0ZWRfY29kZSA+PnwgZnVuIHJlc3QgLT4gaXRlbXMgQCByZXN0KVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBzdXBlciNzaWduYXR1cmVfaXRlbSBiYXNlX2N0eHQgaXRlbSA+Pj0gZnVuIGV4cGFuZGVkX2l0ZW0gLT5cbiAgICAgICAgICAgICAgICBtYXRjaCAoaXRlbS5wc2lnX2Rlc2MsIGV4cGFuZGVkX2l0ZW0ucHNpZ19kZXNjKSB3aXRoXG4gICAgICAgICAgICAgICAgfCBQc2lnX3R5cGUgKHJmLCB0ZHMpLCBQc2lnX3R5cGUgKGV4cF9yZiwgZXhwX3RkcykgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogTm8gY29udGV4dC1mcmVlIHJ1bGUgY2FuIHJld3JpdGUgcmVjIGZsYWdzIGF0bSwgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWN0cyBhcyBhIGZhaWxzYWZlIGluIGNhc2UgaXQgZXZlciBjaGFuZ2VzICopXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydCAoUG9seS4ocmYgPSBleHBfcmYpKTtcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfZ3JvdXBfaW5saW5lIGF0dHJfc2lnX3R5cGVfZGVjbHMgcmYgfml0ZW1zOnRkc1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtczpleHBfdGRzIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2dyb3VwX2lubGluZSBhdHRyX3NpZ190eXBlX2RlY2xzX2V4cGVjdCByZlxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtczp0ZHMgfmV4cGFuZGVkX2l0ZW1zOmV4cF90ZHMgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXhwZWN0X2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIHdpdGhfZXh0cmFfaXRlbXMgZXhwYW5kZWRfaXRlbSB+ZXh0cmFfaXRlbXMgfmV4cGVjdF9pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgIH5yZXN0IH5pbl9nZW5lcmF0ZWRfY29kZVxuICAgICAgICAgICAgICAgIHwgUHNpZ19tb2R0eXBlIG10ZCwgUHNpZ19tb2R0eXBlIGV4cF9tdGQgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzIH5pdGVtOm10ZFxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9tdGQgfmxvYyB+YmFzZV9jdHh0XG4gICAgICAgICAgICAgICAgICAgID4+PSBmdW4gZXh0cmFfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xzX2V4cGVjdFxuICAgICAgICAgICAgICAgICAgICAgIH5pdGVtOm10ZCB+ZXhwYW5kZWRfaXRlbTpleHBfbXRkIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4cGVjdF9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICB3aXRoX2V4dHJhX2l0ZW1zIGV4cGFuZGVkX2l0ZW0gfmV4dHJhX2l0ZW1zIH5leHBlY3RfaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICB+cmVzdCB+aW5fZ2VuZXJhdGVkX2NvZGVcbiAgICAgICAgICAgICAgICB8IFBzaWdfdHlwZXh0IHRlLCBQc2lnX3R5cGV4dCBleHBfdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2F0dHJfaW5saW5lIGF0dHJfc2lnX3R5cGVfZXh0cyB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHRyYV9pdGVtcyAtPlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVfYXR0cl9pbmxpbmUgYXR0cl9zaWdfdHlwZV9leHRzX2V4cGVjdCB+aXRlbTp0ZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF90ZSB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBQc2lnX2V4Y2VwdGlvbiBlYywgUHNpZ19leGNlcHRpb24gZXhwX2VjIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zIH5pdGVtOmVjXG4gICAgICAgICAgICAgICAgICAgICAgfmV4cGFuZGVkX2l0ZW06ZXhwX2VjIH5sb2MgfmJhc2VfY3R4dFxuICAgICAgICAgICAgICAgICAgICA+Pj0gZnVuIGV4dHJhX2l0ZW1zIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9hdHRyX2lubGluZSBhdHRyX3NpZ19leGNlcHRpb25zX2V4cGVjdCB+aXRlbTplY1xuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRlZF9pdGVtOmV4cF9lYyB+bG9jIH5iYXNlX2N0eHRcbiAgICAgICAgICAgICAgICAgICAgPj49IGZ1biBleHBlY3RfaXRlbXMgLT5cbiAgICAgICAgICAgICAgICAgICAgd2l0aF9leHRyYV9pdGVtcyBleHBhbmRlZF9pdGVtIH5leHRyYV9pdGVtcyB+ZXhwZWN0X2l0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgfnJlc3QgfmluX2dlbmVyYXRlZF9jb2RlXG4gICAgICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIHNlbGYjc2lnbmF0dXJlIGJhc2VfY3R4dCByZXN0ID4+fCBmdW4gcmVzdCAtPlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZF9pdGVtIDo6IHJlc3QpKVxuICAgICAgaW5cbiAgICAgIGxvb3Agc2cgfmluX2dlbmVyYXRlZF9jb2RlOmZhbHNlXG5cbiAgICAoKiQqKVxuICBlbmRcbiIsIm9wZW4gSW1wb3J0XG5vcGVuIFV0aWxzXG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFeHRlbnNpb24gb2YgJ2EgRXh0ZW5zaW9uLkNvbnRleHQudFxuICAgIHwgRmxvYXRpbmdfYXR0cmlidXRlIG9mICdhIEF0dHJpYnV0ZS5GbG9hdGluZy5Db250ZXh0LnRcblxuICBsZXQgcGFyZW4gcHAgcHBmIHggPSBTdGRsaWIuRm9ybWF0LmZwcmludGYgcHBmIFwiKCVhKVwiIHBwIHhcblxuICBsZXQgcHJpbnRlciA6IHR5cGUgYS4gYSB0IC0+IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyIC0+IGEgLT4gdW5pdCA9XG4gICAgbGV0IG9wZW4gRXh0ZW5zaW9uLkNvbnRleHQgaW5cbiAgICBsZXQgb3BlbiBBdHRyaWJ1dGUuRmxvYXRpbmcuQ29udGV4dCBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBFeHRlbnNpb24gQ2xhc3NfZXhwciAtPiBQcHJpbnRhc3QuY2xhc3NfZXhwclxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc19maWVsZFxuICAgIHwgRXh0ZW5zaW9uIENsYXNzX3R5cGUgLT4gUHByaW50YXN0LmNsYXNzX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBDbGFzc190eXBlX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc190eXBlX2ZpZWxkXG4gICAgfCBFeHRlbnNpb24gQ29yZV90eXBlIC0+IHBhcmVuIFBwcmludGFzdC5jb3JlX3R5cGVcbiAgICB8IEV4dGVuc2lvbiBFeHByZXNzaW9uIC0+IHBhcmVuIFBwcmludGFzdC5leHByZXNzaW9uXG4gICAgfCBFeHRlbnNpb24gTW9kdWxlX2V4cHIgLT4gUHByaW50YXN0Lm1vZHVsZV9leHByXG4gICAgfCBFeHRlbnNpb24gTW9kdWxlX3R5cGUgLT4gUHByaW50YXN0Lm1vZHVsZV90eXBlXG4gICAgfCBFeHRlbnNpb24gUGF0dGVybiAtPiBwYXJlbiBQcHJpbnRhc3QucGF0dGVyblxuICAgIHwgRXh0ZW5zaW9uIFNpZ25hdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zaWduYXR1cmVfaXRlbVxuICAgIHwgRXh0ZW5zaW9uIFN0cnVjdHVyZV9pdGVtIC0+IFBwcmludGFzdC5zdHJ1Y3R1cmVfaXRlbVxuICAgIHwgRXh0ZW5zaW9uIFBweF9pbXBvcnQgLT4gUHByaW50YXN0LnR5cGVfZGVjbGFyYXRpb25cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBTdHJ1Y3R1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc3RydWN0dXJlX2l0ZW1cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBTaWduYXR1cmVfaXRlbSAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlX2l0ZW1cbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBDbGFzc19maWVsZCAtPiBQcHJpbnRhc3QuY2xhc3NfZmllbGRcbiAgICB8IEZsb2F0aW5nX2F0dHJpYnV0ZSBDbGFzc190eXBlX2ZpZWxkIC0+IFBwcmludGFzdC5jbGFzc190eXBlX2ZpZWxkXG5lbmRcblxubW9kdWxlIFJlcGxhY2VtZW50ID0gc3RydWN0XG4gIHR5cGUgZGF0YSA9XG4gICAgfCBWYWx1ZXMgOlxuICAgICAgICAnYSBDb250ZXh0LnQgKiAnYSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5zaW5nbGVfb3JfbWFueVxuICAgICAgICAtPiBkYXRhXG4gICAgfCBUZXh0IG9mIHN0cmluZ1xuXG4gIHR5cGUgdCA9IHsgc3RhcnQgOiBMZXhpbmcucG9zaXRpb247IHN0b3AgOiBMZXhpbmcucG9zaXRpb247IGRhdGEgOiBkYXRhIH1cblxuICBsZXQgbWFrZSB+Y29udGV4dCB+c3RhcnQgfnN0b3AgfnJlcGwgKCkgPVxuICAgIHsgc3RhcnQ7IHN0b3A7IGRhdGEgPSBWYWx1ZXMgKGNvbnRleHQsIHJlcGwpIH1cblxuICBsZXQgbWFrZV90ZXh0IH5zdGFydCB+c3RvcCB+cmVwbCAoKSA9IHsgc3RhcnQ7IHN0b3A7IGRhdGEgPSBUZXh0IHJlcGwgfVxuXG4gIGxldCB0ZXh0IGJsb2NrID1cbiAgICBtYXRjaCBibG9jay5kYXRhIHdpdGhcbiAgICB8IFRleHQgcyAtPiBzXG4gICAgfCBWYWx1ZXMgKGNvbnRleHQsIGdlbmVyYXRlZCkgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBwcmludGVyID0gQ29udGV4dC5wcmludGVyIGNvbnRleHQgaW5cbiAgICAgICAgICBtYXRjaCBnZW5lcmF0ZWQgd2l0aFxuICAgICAgICAgIHwgU2luZ2xlIHggLT4gU3RkbGliLkZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHJpbnRlciB4XG4gICAgICAgICAgfCBNYW55IGwgLT5cbiAgICAgICAgICAgICAgU3RkbGliLkZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAoZnVuIHBwZiBsIC0+XG4gICAgICAgICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICBwcmludGVyIHBwZiB4O1xuICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5Gb3JtYXQucHBfcHJpbnRfbmV3bGluZSBwcGYgKCkpKVxuICAgICAgICAgICAgICAgIGxcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlzX3dzID0gZnVuY3Rpb24gJyAnIHwgJ1xcdCcgfCAnXFxyJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSBpblxuICAgICAgICBsZXQgc3RyaXBfd3MgcyBpIGxlbiA9XG4gICAgICAgICAgbGV0IGxlbiA9IHJlZiBsZW4gaW5cbiAgICAgICAgICB3aGlsZSAhbGVuID4gMCAmJiBpc193cyBzLltpICsgIWxlbiAtIDFdIGRvXG4gICAgICAgICAgICBsZW4gOj0gIWxlbiAtIDFcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIFN0cmluZy5zdWIgcyB+cG9zOmkgfmxlbjohbGVuXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIHBvcyA9XG4gICAgICAgICAgaWYgcG9zID49IFN0cmluZy5sZW5ndGggcyB0aGVuIFtdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IGlkeCA9XG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy5pbmRleF9mcm9tX29wdCBzIHBvcyAnXFxuJyB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHN0cmlwX3dzIHMgcG9zIChpZHggLSBwb3MpIDo6IFwiXFxuXCIgOjogbG9vcCBzIChpZHggKyAxKVxuICAgICAgICBpblxuICAgICAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiAobG9vcCBzIDApXG5lbmRcblxub3BlbiBSZXBsYWNlbWVudFxuXG5tb2R1bGUgUmVwbGFjZW1lbnRzID0gc3RydWN0XG4gIHR5cGUgdCA9IFJlcGxhY2VtZW50LnQgbGlzdFxuXG4gICgqIE1lcmdlIGxvY2F0aW9ucyBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIE92ZXJsYXBwaW5nIGxvY2F0aW9ucyBhcmUgbWVyZ2VkIGludG8gb25lLiBUaGVcbiAgICAgcmVzdWx0IGlzIHNvcnRlZCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgdG8gdGhlIGVuZC4gKilcbiAgbGV0IGNoZWNrX2FuZF9zb3J0IH5pbnB1dF9maWxlbmFtZSB+aW5wdXRfbmFtZSByZXBscyA9XG4gICAgTGlzdC5pdGVyIHJlcGxzIH5mOihmdW4gcmVwbCAtPlxuICAgICAgICBpZlxuICAgICAgICAgIFN0cmluZy4oIDw+ICkgcmVwbC5zdGFydC5wb3NfZm5hbWUgaW5wdXRfbmFtZVxuICAgICAgICAgIHx8IFN0cmluZy4oIDw+ICkgcmVwbC5zdG9wLnBvc19mbmFtZSBpbnB1dF9uYW1lXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgaW5wdXRfZmlsZW5hbWUpXG4gICAgICAgICAgICBcInBweGxpYl9kcml2ZXI6IHRoZSByZXdyaXRpbmcgY29udGFpbnMgcGFydHMgZnJvbSBhbm90aGVyIGZpbGUuXFxuXFxcbiAgICAgICAgICAgICBJdCBpcyB0b28gY29tcGxpY2F0ZWQgdG8gcmVjb25jaWxlIGl0IHdpdGggdGhlIHNvdXJjZTogJXMgb3IgJXMgXFxcbiAgICAgICAgICAgICBhbmQgJXNcIlxuICAgICAgICAgICAgcmVwbC5zdGFydC5wb3NfZm5hbWUgcmVwbC5zdG9wLnBvc19mbmFtZSBpbnB1dF9uYW1lO1xuICAgICAgICBhc3NlcnQgKHJlcGwuc3RhcnQucG9zX2NudW0gPD0gcmVwbC5zdG9wLnBvc19jbnVtKSk7XG4gICAgbGV0IHJlcGxzID1cbiAgICAgIExpc3Quc29ydCByZXBscyB+Y21wOihmdW4gYSBiIC0+XG4gICAgICAgICAgbGV0IGQgPSBjb21wYXJlIGEuc3RhcnQucG9zX2NudW0gYi5zdG9wLnBvc19jbnVtIGluXG4gICAgICAgICAgaWYgZCA9IDAgdGhlblxuICAgICAgICAgICAgKCogUHV0IHRoZSBsYXJnZXN0IGZpcnN0LCBzbyB0aGF0IHRoZSBmb2xsb3dpbmcgW2ZpbHRlcl0gZnVuY3Rpb25zIGFsd2F5cyBwaWNrcyB1cFxuICAgICAgICAgICAgICAgdGhlIGxhcnRlc3QgZmlyc3Qgd2hlbiBzZXZlcmFsIGdlbmVyYXRlZCByZXBscyBzdGFydCBhdCB0aGUgc2FtZSBwb3NpdGlvbiAqKVxuICAgICAgICAgICAgY29tcGFyZSBiLnN0b3AucG9zX2NudW0gYS5zdG9wLnBvc19jbnVtXG4gICAgICAgICAgZWxzZSBkKVxuICAgIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgcHJldiByZXBscyB+YWNjID1cbiAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgKHByZXYgOjogYWNjKVxuICAgICAgfCByZXBsIDo6IHJlcGxzIC0+XG4gICAgICAgICAgaWYgcHJldi5zdG9wLnBvc19jbnVtID4gcmVwbC5zdGFydC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICBpZiBwcmV2LnN0b3AucG9zX2NudW0gPj0gcmVwbC5zdG9wLnBvc19jbnVtIHRoZW5cbiAgICAgICAgICAgICAgKCogW3JlcGxdIGlzIGluY2x1ZGVkIGluIFtwcmV2XSA9PiBza2lwIFtyZXBsXSAqKVxuICAgICAgICAgICAgICBmaWx0ZXIgcHJldiByZXBscyB+YWNjXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgIFwicHB4bGliX2RyaXZlcjogbG9jYXRpb25zIG9mIGdlbmVyYXRlZCBjb2RlIGFyZSBvdmVybGFwcGluZywgXFxcbiAgICAgICAgICAgICAgICAgY2Fubm90IHJlY29uY2lsZVwiXG4gICAgICAgICAgICAgICAgfmxvYzpcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbG9jX3N0YXJ0ID0gcmVwbC5zdGFydDtcbiAgICAgICAgICAgICAgICAgICAgbG9jX2VuZCA9IHByZXYuc3RvcDtcbiAgICAgICAgICAgICAgICAgICAgbG9jX2dob3N0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBmaWx0ZXIgcmVwbCByZXBscyB+YWNjOihwcmV2IDo6IGFjYylcbiAgICBpblxuICAgIG1hdGNoIHJlcGxzIHdpdGggW10gLT4gW10gfCByZXBsIDo6IHJlcGxzIC0+IGZpbHRlciByZXBsIHJlcGxzIH5hY2M6W11cbmVuZFxuXG5sZXQgY291bnRfbmV3bGluZXMgcyA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgU3RyaW5nLml0ZXIgcyB+ZjooZnVuY3Rpb24gJ1xcbicgLT4gbiA6PSAhbiArIDEgfCBfIC0+ICgpKTtcbiAgIW5cblxubGV0IGdlbmVyYXRlZF9jb2RlX2JlZ2luID1cbiAgXCIoKiAtLS0tLXsgR0VORVJBVEVEIENPREUgQkVHSU4gfS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcIlxuXG5sZXQgZ2VuZXJhdGVkX2NvZGVfZW5kID1cbiAgXCIoKiAtLS0tLXsgR0VORVJBVEVEIENPREUgRU5EICAgfS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcIlxuXG50eXBlIG1vZGUgPSBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3NcbnR5cGUgdGFyZ2V0ID0gT3V0cHV0IG9mIG1vZGUgfCBDb3JyZWN0ZWRcblxubGV0IHNraXBfYmxhbmtfZW9sIGNvbnRlbnRzIChwb3MgOiBMZXhpbmcucG9zaXRpb24pID1cbiAgbGV0IHJlYyBsb29wIGNudW0gPVxuICAgIGlmIGNudW0gPSBTdHJpbmcubGVuZ3RoIGNvbnRlbnRzIHRoZW4geyBwb3Mgd2l0aCBwb3NfY251bSA9IGNudW0gfVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGNvbnRlbnRzLltjbnVtXSB3aXRoXG4gICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xccicgLT4gbG9vcCAoY251bSArIDEpXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgICAge1xuICAgICAgICAgICAgcG9zIHdpdGhcbiAgICAgICAgICAgIHBvc19jbnVtID0gY251bSArIDE7XG4gICAgICAgICAgICBwb3NfbG51bSA9IHBvcy5wb3NfbG51bSArIDE7XG4gICAgICAgICAgICBwb3NfYm9sID0gY251bSArIDE7XG4gICAgICAgICAgfVxuICAgICAgfCBfIC0+IHBvc1xuICBpblxuICBsb29wIHBvcy5wb3NfY251bVxuXG5sZXQgd2l0aF9vdXRwdXQgfnN0eWxlciB+KGtpbmQgOiBLaW5kLnQpIGZuIH5mID1cbiAgbWF0Y2ggc3R5bGVyIHdpdGhcbiAgfCBOb25lIC0+IHdpdGhfb3V0cHV0IGZuIH5iaW5hcnk6ZmFsc2UgfmZcbiAgfCBTb21lIGNtZCAtPlxuICAgICAgbGV0IHRtcF9mbiwgb2MgPVxuICAgICAgICBTdGRsaWIuRmlsZW5hbWUub3Blbl90ZW1wX2ZpbGUgXCJwcHhsaWJfZHJpdmVyXCJcbiAgICAgICAgICAobWF0Y2gga2luZCB3aXRoIEltcGwgLT4gXCIubWxcIiB8IEludGYgLT4gXCIubWxpXCIpXG4gICAgICBpblxuICAgICAgbGV0IGNtZCA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMlc1wiIGNtZFxuICAgICAgICAgIChTdGRsaWIuRmlsZW5hbWUucXVvdGUgdG1wX2ZuKVxuICAgICAgICAgIChtYXRjaCBmbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICB8IFNvbWUgZm4gLT4gXCIgPiBcIiBeIFN0ZGxpYi5GaWxlbmFtZS5xdW90ZSBmbilcbiAgICAgIGluXG4gICAgICBsZXQgbiA9XG4gICAgICAgIEV4bi5wcm90ZWN0eCB0bXBfZm4gfmZpbmFsbHk6U3RkbGliLlN5cy5yZW1vdmUgfmY6KGZ1biBfIC0+XG4gICAgICAgICAgICBFeG4ucHJvdGVjdHggb2MgfmZpbmFsbHk6Y2xvc2Vfb3V0IH5mO1xuICAgICAgICAgICAgU3RkbGliLlN5cy5jb21tYW5kIGNtZClcbiAgICAgIGluXG4gICAgICBpZiBuIDw+IDAgdGhlbiAoXG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiY29tbWFuZCBleGl0ZWQgd2l0aCBjb2RlICVkOiAlc1xcblwiIG4gY21kO1xuICAgICAgICBTdGRsaWIuZXhpdCAxKVxuXG5sZXQgcmVjb25jaWxlID9zdHlsZXIgKHJlcGxzIDogUmVwbGFjZW1lbnRzLnQpIH5raW5kIH5jb250ZW50cyB+aW5wdXRfZmlsZW5hbWVcbiAgICB+b3V0cHV0IH5pbnB1dF9uYW1lIH50YXJnZXQgPVxuICBsZXQgcmVwbHMgPSBSZXBsYWNlbWVudHMuY2hlY2tfYW5kX3NvcnQgfmlucHV0X2ZpbGVuYW1lIH5pbnB1dF9uYW1lIHJlcGxzIGluXG4gIGxldCBvdXRwdXRfbmFtZSA9IG1hdGNoIG91dHB1dCB3aXRoIE5vbmUgLT4gXCI8c3Rkb3V0PlwiIHwgU29tZSBmbiAtPiBmbiBpblxuICB3aXRoX291dHB1dCBvdXRwdXQgfnN0eWxlciB+a2luZCB+ZjooZnVuIG9jIC0+XG4gICAgICBsZXQgY29weV9pbnB1dCBwb3MgfnVwX3RvIH5saW5lIH5sYXN0X2lzX3RleHQgfmlzX3RleHQgPVxuICAgICAgICBsZXQgcG9zID0gaWYgbGFzdF9pc190ZXh0IHRoZW4gcG9zIGVsc2Ugc2tpcF9ibGFua19lb2wgY29udGVudHMgcG9zIGluXG4gICAgICAgIGlmIHBvcy5wb3NfY251bSA8IHVwX3RvIHRoZW4gKFxuICAgICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPlxuICAgICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiMgJWQgJVNcXG4lKnNcIiBwb3MucG9zX2xudW0gaW5wdXRfbmFtZVxuICAgICAgICAgICAgICAgIChwb3MucG9zX2NudW0gLSBwb3MucG9zX2JvbClcbiAgICAgICAgICAgICAgICBcIlwiXG4gICAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIHwgQ29ycmVjdGVkIC0+ICgpKTtcbiAgICAgICAgICBvdXRwdXRfc3Vic3RyaW5nIG9jIGNvbnRlbnRzIH5wb3M6cG9zLnBvc19jbnVtXG4gICAgICAgICAgICB+bGVuOih1cF90byAtIHBvcy5wb3NfY251bSk7XG4gICAgICAgICAgbGV0IGxpbmUgPSByZWYgKGxpbmUgKyAxKSBpblxuICAgICAgICAgIGZvciBpID0gcG9zLnBvc19jbnVtIHRvIHVwX3RvIC0gMSBkb1xuICAgICAgICAgICAgaWYgQ2hhci5lcXVhbCBjb250ZW50cy5baV0gJ1xcbicgdGhlbiBsaW5lIDo9ICFsaW5lICsgMVxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgbGV0IGxpbmUgPSAhbGluZSBpblxuICAgICAgICAgIGlmIChub3QgaXNfdGV4dCkgJiYgQ2hhci4oIDw+ICkgY29udGVudHMuW3VwX3RvIC0gMV0gJ1xcbicgdGhlbiAoXG4gICAgICAgICAgICBvdXRwdXRfY2hhciBvYyAnXFxuJztcbiAgICAgICAgICAgIGxpbmUgKyAxKVxuICAgICAgICAgIGVsc2UgbGluZSlcbiAgICAgICAgZWxzZSBsaW5lXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wIGxpbmUgKHBvcyA6IExleGluZy5wb3NpdGlvbikgcmVwbHMgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChjb3B5X2lucHV0IHBvcyB+dXBfdG86KFN0cmluZy5sZW5ndGggY29udGVudHMpIH5saW5lXG4gICAgICAgICAgICAgICAgIH5sYXN0X2lzX3RleHQgfmlzX3RleHQ6ZmFsc2VcbiAgICAgICAgICAgICAgICA6IGludClcbiAgICAgICAgfCByZXBsIDo6IHJlcGxzIC0+XG4gICAgICAgICAgICBsZXQgaXNfdGV4dCA9XG4gICAgICAgICAgICAgIG1hdGNoIHJlcGwuZGF0YSB3aXRoIFRleHQgXyAtPiB0cnVlIHwgVmFsdWVzIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbGluZSA9XG4gICAgICAgICAgICAgIGNvcHlfaW5wdXQgcG9zIH51cF90bzpyZXBsLnN0YXJ0LnBvc19jbnVtIH5saW5lIH5sYXN0X2lzX3RleHRcbiAgICAgICAgICAgICAgICB+aXNfdGV4dFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBzID0gUmVwbGFjZW1lbnQudGV4dCByZXBsIGluXG4gICAgICAgICAgICBsZXQgbGluZSA9XG4gICAgICAgICAgICAgIG1hdGNoIHRhcmdldCB3aXRoXG4gICAgICAgICAgICAgIHwgT3V0cHV0IFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIjICVkICVTXFxuXCIgKGxpbmUgKyAxKSBvdXRwdXRfbmFtZTtcbiAgICAgICAgICAgICAgICAgIGxpbmUgKyAxXG4gICAgICAgICAgICAgIHwgT3V0cHV0IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcyAtPlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2JlZ2luO1xuICAgICAgICAgICAgICAgICAgbGluZSArIDFcbiAgICAgICAgICAgICAgfCBDb3JyZWN0ZWQgLT4gbGluZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG91dHB1dF9zdHJpbmcgb2MgcztcbiAgICAgICAgICAgIGxldCBsaW5lID0gbGluZSArIGNvdW50X25ld2xpbmVzIHMgaW5cbiAgICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSByZXBsLnN0b3AgcmVwbHMgfmxhc3RfaXNfdGV4dDppc190ZXh0XG4gICAgICBhbmQgbG9vcF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIChwb3MgOiBMZXhpbmcucG9zaXRpb24pIHJlcGxzXG4gICAgICAgICAgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIG1hdGNoIHJlcGxzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dFxuICAgICAgICB8IHJlcGwgOjogcmVwbHMnIC0+XG4gICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgaWYgbGFzdF9pc190ZXh0IHRoZW4gcG9zIGVsc2Ugc2tpcF9ibGFua19lb2wgY29udGVudHMgcG9zXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgcG9zLnBvc19jbnVtIDwgcmVwbC5zdGFydC5wb3NfY251bSB0aGVuXG4gICAgICAgICAgICAgIGVuZF9jb25zZWN1dGl2ZV9yZXBscyBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBzID0gUmVwbGFjZW1lbnQudGV4dCByZXBsIGluXG4gICAgICAgICAgICAgIG91dHB1dF9zdHJpbmcgb2MgcztcbiAgICAgICAgICAgICAgbGV0IGxpbmUgPSBsaW5lICsgY291bnRfbmV3bGluZXMgcyBpblxuICAgICAgICAgICAgICBsZXQgbGFzdF9pc190ZXh0ID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXBsLmRhdGEgd2l0aCBUZXh0IF8gLT4gdHJ1ZSB8IFZhbHVlcyBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxvb3BfY29uc2VjdXRpdmVfcmVwbHMgbGluZSByZXBsLnN0b3AgcmVwbHMnIH5sYXN0X2lzX3RleHRcbiAgICAgIGFuZCBlbmRfY29uc2VjdXRpdmVfcmVwbHMgbGluZSBwb3MgcmVwbHMgfmxhc3RfaXNfdGV4dCA9XG4gICAgICAgIChtYXRjaCB0YXJnZXQgd2l0aFxuICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBDb3JyZWN0ZWQgLT4gKClcbiAgICAgICAgfCBPdXRwdXQgRGVsaW1pdGluZ19nZW5lcmF0ZWRfYmxvY2tzIC0+XG4gICAgICAgICAgICBQcmludGYuZnByaW50ZiBvYyBcIiVzXFxuXCIgZ2VuZXJhdGVkX2NvZGVfZW5kKTtcbiAgICAgICAgbG9vcCBsaW5lIHBvcyByZXBscyB+bGFzdF9pc190ZXh0XG4gICAgICBpblxuICAgICAgbGV0IHBvcyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMZXhpbmcucG9zX2ZuYW1lID0gaW5wdXRfbmFtZTtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbWF0Y2ggcmVwbHMgd2l0aFxuICAgICAgfCB7IHN0YXJ0ID0geyBwb3NfY251bSA9IDA7IF8gfTsgXyB9IDo6IF8gLT5cbiAgICAgICAgICAobWF0Y2ggdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IE91dHB1dCBVc2luZ19saW5lX2RpcmVjdGl2ZXMgfCBDb3JyZWN0ZWQgLT4gKClcbiAgICAgICAgICB8IE91dHB1dCBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT5cbiAgICAgICAgICAgICAgUHJpbnRmLmZwcmludGYgb2MgXCIlc1xcblwiIGdlbmVyYXRlZF9jb2RlX2JlZ2luKTtcbiAgICAgICAgICBsb29wX2NvbnNlY3V0aXZlX3JlcGxzIDEgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQ6ZmFsc2VcbiAgICAgIHwgXyAtPiBsb29wIDEgcG9zIHJlcGxzIH5sYXN0X2lzX3RleHQ6ZmFsc2UpXG4iLCJvcGVuIEltcG9ydFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgbmV4dF9pZCA6IGludDtcbiAgbXV0YWJsZSBiaW5kaW5ncyA6IFBhcnNldHJlZS52YWx1ZV9iaW5kaW5nIGxpc3Q7XG59XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHRfaWQgPSAwOyBiaW5kaW5ncyA9IFtdIH1cblxubGV0IHNhbml0aXplIHQgZSA9XG4gIG1hdGNoIHQuYmluZGluZ3Mgd2l0aFxuICB8IFtdIC0+IGVcbiAgfCBiaW5kaW5ncyAtPlxuICAgICAgbGV0IChtb2R1bGUgQXN0KSA9IEFzdF9idWlsZGVyLm1ha2UgZS5wZXhwX2xvYyBpblxuICAgICAgQXN0LnBleHBfbGV0IE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBlXG5cbmxldCBxdW90ZSB0IChlIDogZXhwcmVzc2lvbikgPVxuICBsZXQgbG9jID0gZS5wZXhwX2xvYyBpblxuICBsZXQgKG1vZHVsZSBBc3QpID0gQXN0X2J1aWxkZXIubWFrZSBsb2MgaW5cbiAgbGV0IG5hbWUgPSBcIl9fXCIgXiBJbnQudG9fc3RyaW5nIHQubmV4dF9pZCBpblxuICBsZXQgYmluZGluZ19leHByLCBxdW90ZWRfZXhwciA9XG4gICAgbWF0Y2ggZSB3aXRoXG4gICAgKCogT3B0aW1pemUgaWRlbnRpZmllciBxdW90aW5nIGJ5IGF2b2lkaW5nIGNsb3N1cmUuXG4gICAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC1wcHgvcHB4X2Rlcml2aW5nL3B1bGwvMjUyLiAqKVxuICAgIHwgeyBwZXhwX2Rlc2MgPSBQZXhwX2lkZW50IF87IF8gfSAtPiAoZSwgQXN0LmV2YXIgbmFtZSlcbiAgICB8IF8gLT5cbiAgICAgICAgbGV0IGJpbmRpbmdfZXhwciA9XG4gICAgICAgICAgQXN0LnBleHBfZnVuIE5vbGFiZWwgTm9uZVxuICAgICAgICAgICAgKGxldCB1bml0ID0gQXN0X2J1aWxkZXIuRGVmYXVsdC5Mb2NhdGVkLmxpZGVudCB+bG9jIFwiKClcIiBpblxuICAgICAgICAgICAgIEFzdC5wcGF0X2NvbnN0cnVjdCB1bml0IE5vbmUpXG4gICAgICAgICAgICBlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBxdW90ZWRfZXhwciA9IEFzdC5lYXBwbHkgKEFzdC5ldmFyIG5hbWUpIFsgQXN0LmV1bml0IF0gaW5cbiAgICAgICAgKGJpbmRpbmdfZXhwciwgcXVvdGVkX2V4cHIpXG4gIGluXG4gIGxldCBiaW5kaW5nID1cbiAgICBsZXQgcGF0ID0gQXN0LnB2YXIgbmFtZSBpblxuICAgIEFzdC52YWx1ZV9iaW5kaW5nIH5wYXQgfmV4cHI6YmluZGluZ19leHByXG4gIGluXG4gIHQuYmluZGluZ3MgPC0gYmluZGluZyA6OiB0LmJpbmRpbmdzO1xuICB0Lm5leHRfaWQgPC0gdC5uZXh0X2lkICsgMTtcbiAgcXVvdGVkX2V4cHJcbiIsIm9wZW4hIEltcG9ydFxuXG5sZXQgbWtfYXR0cl9ub2xvYyB0eHQgPSBBc3RfaGVscGVyLkF0dHIubWsgTG9jYXRpb24ueyB0eHQ7IGxvYyA9IG5vbmUgfVxubGV0IGhpZGVfYXR0cmlidXRlIDogYXR0cmlidXRlID0gbWtfYXR0cl9ub2xvYyBcIm1lcmxpbi5oaWRlXCIgKFBTdHIgW10pXG5sZXQgZm9jdXNfYXR0cmlidXRlIDogYXR0cmlidXRlID0gbWtfYXR0cl9ub2xvYyBcIm1lcmxpbi5mb2N1c1wiIChQU3RyIFtdKVxuXG5sZXQgaGlkZV9wYXR0ZXJuICh7IHBwYXRfYXR0cmlidXRlczsgXyB9IGFzIHApID1cbiAgeyBwIHdpdGggcHBhdF9hdHRyaWJ1dGVzID0gaGlkZV9hdHRyaWJ1dGUgOjogcHBhdF9hdHRyaWJ1dGVzIH1cblxubGV0IGZvY3VzX3BhdHRlcm4gKHsgcHBhdF9hdHRyaWJ1dGVzOyBfIH0gYXMgcCkgPVxuICB7IHAgd2l0aCBwcGF0X2F0dHJpYnV0ZXMgPSBmb2N1c19hdHRyaWJ1dGUgOjogcHBhdF9hdHRyaWJ1dGVzIH1cblxubGV0IGhpZGVfZXhwcmVzc2lvbiAoeyBwZXhwX2F0dHJpYnV0ZXM7IF8gfSBhcyBlKSA9XG4gIHsgZSB3aXRoIHBleHBfYXR0cmlidXRlcyA9IGhpZGVfYXR0cmlidXRlIDo6IHBleHBfYXR0cmlidXRlcyB9XG5cbmxldCBmb2N1c19leHByZXNzaW9uICh7IHBleHBfYXR0cmlidXRlczsgXyB9IGFzIGUpID1cbiAgeyBlIHdpdGggcGV4cF9hdHRyaWJ1dGVzID0gZm9jdXNfYXR0cmlidXRlIDo6IHBleHBfYXR0cmlidXRlcyB9XG4iLCJvcGVuIEltcG9ydFxuXG5tb2R1bGUgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaW5zZXJ0IDogbm9kZV9uYW1lOnN0cmluZyAtPiBMb2NhdGlvbi50IC0+IHQgLT4gdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuXG4gIHZhbCBjb3ZlcmVkX2J5IDogdCAtPiBsb2M6TG9jYXRpb24udCAtPiBib29sXG4gICgqKiBbY292ZXJlZF9ieSB0IH5sb2MgPSB0cnVlXSBpZmYgW3RdIGlzIGNvdmVyZWQgYnkgW2xvY10gKilcblxuICB2YWwgZmluZF9vdXRzaWRlIDogTG9jYXRpb24udCAtPiB0IC0+IHN0cmluZyAqIExvY2F0aW9uLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbWluX3BvcyA6IExleGluZy5wb3NpdGlvbiBvcHRpb247XG4gICAgbWF4X3BvcyA6IExleGluZy5wb3NpdGlvbiBvcHRpb247XG4gICAgcmFuZ2VzIDogKHN0cmluZyAqIExvY2F0aW9uLnQpIGxpc3Q7XG4gIH1cblxuICBsZXQgZW1wdHkgPSB7IG1pbl9wb3MgPSBOb25lOyBtYXhfcG9zID0gTm9uZTsgcmFuZ2VzID0gW10gfVxuXG4gIGxldCByZWMgaW5zZXJ0IHJhbmdlcyAoKG5vZGVfbmFtZSwgbm9kZV9sb2MpIGFzIG5vZGUpID1cbiAgICBtYXRjaCByYW5nZXMgd2l0aFxuICAgIHwgW10gLT4gWyBub2RlIF1cbiAgICB8ICgoeF9uYW1lLCB4X2xvYykgYXMgeCkgOjogeHMgLT5cbiAgICAgICAgbGV0IG9wZW4gTG9jYXRpb24gaW5cbiAgICAgICAgaWYgY29tcGFyZV9wb3Mgbm9kZV9sb2MubG9jX3N0YXJ0IHhfbG9jLmxvY19lbmQgPj0gMCB0aGVuXG4gICAgICAgICAgbm9kZSA6OiB4IDo6IHhzXG4gICAgICAgIGVsc2UgaWYgY29tcGFyZV9wb3MgeF9sb2MubG9jX3N0YXJ0IG5vZGVfbG9jLmxvY19lbmQgPj0gMCB0aGVuXG4gICAgICAgICAgeCA6OiBpbnNlcnQgeHMgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcmFpc2VfZXJyb3JmIH5sb2M6bm9kZV9sb2NcbiAgICAgICAgICAgIFwiaW52YWxpZCBvdXRwdXQgZnJvbSBwcHgsICVzIG92ZXJsYXBzIHdpdGggJXMgYXQgbG9jYXRpb246QC4lYVwiXG4gICAgICAgICAgICBub2RlX25hbWUgeF9uYW1lIExvY2F0aW9uLnByaW50IHhfbG9jXG5cbiAgbGV0IG1pbl9wb3MgcDEgcDIgPVxuICAgIG1hdGNoIChwMSwgcDIpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgKFNvbWUgXyBhcyBwKSwgTm9uZSB8IE5vbmUsIChTb21lIF8gYXMgcCkgLT4gcFxuICAgIHwgU29tZSBwMSwgU29tZSBwMiAtPiBTb21lIChMb2NhdGlvbi5taW5fcG9zIHAxIHAyKVxuXG4gIGxldCBtYXhfcG9zIHAxIHAyID1cbiAgICBtYXRjaCAocDEsIHAyKSB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IChTb21lIF8gYXMgcCksIE5vbmUgfCBOb25lLCAoU29tZSBfIGFzIHApIC0+IHBcbiAgICB8IFNvbWUgcDEsIFNvbWUgcDIgLT4gU29tZSAoTG9jYXRpb24ubWF4X3BvcyBwMSBwMilcblxuICBsZXQgbG9uZ2VzdF9maXJzdCBsMSBsMiB+c3RvcF9hZnRlciA9XG4gICAgbGV0IHJlYyBsb29wIHhzIHlzIG4gPVxuICAgICAgbWF0Y2ggKHhzLCB5cywgbikgd2l0aFxuICAgICAgfCBbXSwgXywgXyB8IF8sIF8sIDAgLT4gKGwyLCBsMSlcbiAgICAgIHwgXywgW10sIF8gLT4gKGwxLCBsMilcbiAgICAgIHwgXyA6OiB4cywgXyA6OiB5cywgbiAtPiBsb29wIHhzIHlzIChuIC0gMSlcbiAgICBpblxuICAgIGxvb3AgbDEgbDIgc3RvcF9hZnRlclxuXG4gIGxldCB1bmlvbiB0MSB0MiA9XG4gICAgbGV0IGluaXQsIGwgPSBsb25nZXN0X2ZpcnN0IHQxLnJhbmdlcyB0Mi5yYW5nZXMgfnN0b3BfYWZ0ZXI6NDIgaW5cbiAgICBsZXQgcmFuZ2VzID0gTGlzdC5mb2xkX2xlZnQgbCB+aW5pdCB+ZjppbnNlcnQgaW5cbiAgICB7XG4gICAgICBtaW5fcG9zID0gbWluX3BvcyB0MS5taW5fcG9zIHQyLm1pbl9wb3M7XG4gICAgICBtYXhfcG9zID0gbWF4X3BvcyB0MS5tYXhfcG9zIHQyLm1heF9wb3M7XG4gICAgICByYW5nZXM7XG4gICAgfVxuXG4gIGxldCBpbnNlcnQgfm5vZGVfbmFtZSBsb2MgdCA9XG4gICAge1xuICAgICAgbWluX3BvcyA9IG1pbl9wb3MgKFNvbWUgbG9jLmxvY19zdGFydCkgdC5taW5fcG9zO1xuICAgICAgbWF4X3BvcyA9IG1heF9wb3MgKFNvbWUgbG9jLmxvY19lbmQpIHQubWF4X3BvcztcbiAgICAgIHJhbmdlcyA9IGluc2VydCB0LnJhbmdlcyAobm9kZV9uYW1lLCBsb2MpO1xuICAgIH1cblxuICBsZXQgY292ZXJlZF9ieSB0IH5sb2MgPVxuICAgIG1hdGNoICh0Lm1pbl9wb3MsIHQubWF4X3Bvcykgd2l0aFxuICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgfCBTb21lIG1pbl9wb3MsIFNvbWUgbWF4X3BvcyAtPlxuICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBtaW5fcG9zIGxvYy5sb2Nfc3RhcnQgPj0gMFxuICAgICAgICAmJiBMb2NhdGlvbi5jb21wYXJlX3BvcyBtYXhfcG9zIGxvYy5sb2NfZW5kIDw9IDBcbiAgICB8IF8sIF8gLT5cbiAgICAgICAgKCogdGhlcmUgYXJlIG5vIG9wZW4gcmFuZ2VzICopXG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4gIGxldCBmaW5kX291dHNpZGUgbG9jIHQgPVxuICAgIExpc3QuZmluZCB0LnJhbmdlcyB+ZjooZnVuIChfLCBsKSAtPlxuICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX3N0YXJ0IGwubG9jX3N0YXJ0ID4gMFxuICAgICAgICB8fCBMb2NhdGlvbi5jb21wYXJlX3BvcyBsb2MubG9jX2VuZCBsLmxvY19lbmQgPCAwKVxuZW5kXG5cbmxldCByZWxvY19wbXR5X2Z1bmN0b3JzIHggPVxuICBsZXQgb3V0bW9zdF9sb2MgPSB4LnBtdHlfbG9jIGluXG4gIGxldCByZWMgYXV4IHggPVxuICAgIG1hdGNoIHgucG10eV9kZXNjIHdpdGhcbiAgICB8IFBtdHlfZnVuY3RvciAoVW5pdCwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoVW5pdCwgcmVzKSB9XG4gICAgfCBQbXR5X2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBvdXRtb3N0X2xvYyByZXMucG10eV9sb2MgPSAwIHRoZW5cbiAgICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gbXR5LnBtdHlfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICBsZXQgcmVzID0geyByZXMgd2l0aCBwbXR5X2xvYyA9IHsgcmVzLnBtdHlfbG9jIHdpdGggbG9jX3N0YXJ0IH0gfSBpblxuICAgICAgICAgIHsgeCB3aXRoIHBtdHlfZGVzYyA9IFBtdHlfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICAgICAgZWxzZSBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG10eV9kZXNjID0gUG10eV9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgIHwgXyAtPiB4XG4gIGluXG4gIGF1eCB4XG5cbmxldCByZWxvY19wbW9kX2Z1bmN0b3JzIHggPVxuICBsZXQgb3V0bW9zdF9sb2MgPSB4LnBtb2RfbG9jIGluXG4gIGxldCByZWMgYXV4IHggPVxuICAgIG1hdGNoIHgucG1vZF9kZXNjIHdpdGhcbiAgICB8IFBtb2RfZnVuY3RvciAoVW5pdCwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgcmVzID09IGluaXRpYWxfcmVzIHRoZW4geFxuICAgICAgICBlbHNlIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoVW5pdCwgcmVzKSB9XG4gICAgfCBQbW9kX2Z1bmN0b3IgKE5hbWVkIChpZCwgbXR5KSwgaW5pdGlhbF9yZXMpIC0+XG4gICAgICAgIGxldCByZXMgPSBhdXggaW5pdGlhbF9yZXMgaW5cbiAgICAgICAgaWYgTG9jYXRpb24uY29tcGFyZSBvdXRtb3N0X2xvYyByZXMucG1vZF9sb2MgPSAwIHRoZW5cbiAgICAgICAgICBsZXQgbG9jX3N0YXJ0ID0gbXR5LnBtdHlfbG9jLmxvY19lbmQgaW5cbiAgICAgICAgICBsZXQgcmVzID0geyByZXMgd2l0aCBwbW9kX2xvYyA9IHsgcmVzLnBtb2RfbG9jIHdpdGggbG9jX3N0YXJ0IH0gfSBpblxuICAgICAgICAgIHsgeCB3aXRoIHBtb2RfZGVzYyA9IFBtb2RfZnVuY3RvciAoTmFtZWQgKGlkLCBtdHkpLCByZXMpIH1cbiAgICAgICAgZWxzZSBpZiByZXMgPT0gaW5pdGlhbF9yZXMgdGhlbiB4XG4gICAgICAgIGVsc2UgeyB4IHdpdGggcG1vZF9kZXNjID0gUG1vZF9mdW5jdG9yIChOYW1lZCAoaWQsIG10eSksIHJlcykgfVxuICAgIHwgXyAtPiB4XG4gIGluXG4gIGF1eCB4XG5cbmxldCBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jID1cbiAgTGlzdC5mb3JfYWxsIH5mOihmdW4gYXR0ciAtPlxuICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbG9jLmxvY19lbmQgYXR0ci5hdHRyX2xvYy5sb2NfZW5kID49IDApXG5cbmxldCBmaWxlIDogc3RyaW5nIG9wdGlvbiByZWYgPSByZWYgTm9uZVxubGV0IHNhbWVfZmlsZV9zb19mYXIgPSByZWYgdHJ1ZVxuXG5sZXQgc3RheWVkX2luX3RoZV9zYW1lX2ZpbGUgZm5hbWUgPVxuICAoKiBUT0RPOiByZW1vdmUgdXNlcyBvZiBMb2NhdGlvbi5ub25lIGZyb20gdGhlIHBweGVzLiAqKVxuICBpZiBTdHJpbmcuZXF1YWwgZm5hbWUgXCJfbm9uZV9cIiB0aGVuIHRydWUgKCogZG8gbm90aGluZyBmb3Igbm93LiAqKVxuICBlbHNlXG4gICAgbWF0Y2ggIWZpbGUgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgICBmaWxlIDo9IFNvbWUgZm5hbWU7XG4gICAgICAgIHRydWVcbiAgICB8IFNvbWUgb3JpZ19mbmFtZSAtPlxuICAgICAgICBTdHJpbmcuZXF1YWwgb3JpZ19mbmFtZSBmbmFtZVxuICAgICAgICB8fFxuICAgICAgICAoc2FtZV9maWxlX3NvX2ZhciA6PSBmYWxzZTtcbiAgICAgICAgIGZhbHNlKVxuXG5sZXQgc2hvdWxkX2lnbm9yZSBsb2MgYXR0cnMgPVxuICAoKiBJZiB0aGUgZmlsZW5hbWUgY2hhbmdlZCwgdGhlbiB0aGVyZSB3ZXJlIGxpbmUgZGlyZWN0aXZlcywgYW5kIHRoZSBsb2NhdGlvbnNcbiAgICAgYXJlIGFsbCBtZXNzZWQgdXAuICopXG4gIChub3QgKHN0YXllZF9pbl90aGVfc2FtZV9maWxlIGxvYy5sb2Nfc3RhcnQucG9zX2ZuYW1lKSlcbiAgfHwgKCogSWdub3JlIHRoaW5ncyBleHBsaWNpdGx5IG1hcmtlZC4gKilcbiAgTGlzdC5leGlzdHNcbiAgICB+ZjooZnVuIGF0dHIgLT5cbiAgICAgIFN0cmluZy5lcXVhbCBhdHRyLmF0dHJfbmFtZS50eHRcbiAgICAgICAgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUuYXR0cl9uYW1lLnR4dClcbiAgICBhdHRyc1xuXG5sZXQgcmVjIGV4dHJhY3RfY29uc3RyYWludCBlID1cbiAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICB8IFBleHBfY29uc3RyYWludCAoZSwgY3QpIHwgUGV4cF9jb2VyY2UgKGUsIF8sIGN0KSAtPiBTb21lIChlLCBjdClcbiAgfCBQZXhwX25ld3R5cGUgKG5hbWUsIGV4cCkgLT5cbiAgICAgIE9wdGlvbi5tYXAgKGV4dHJhY3RfY29uc3RyYWludCBleHApIH5mOihmdW4gKGV4cCwgY3QpIC0+XG4gICAgICAgICAgKCB7XG4gICAgICAgICAgICAgIGUgd2l0aFxuICAgICAgICAgICAgICBwZXhwX2Rlc2MgPSBQZXhwX25ld3R5cGUgKG5hbWUsIGV4cCk7XG4gICAgICAgICAgICAgIHBleHBfbG9jID0geyBlLnBleHBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGN0ICkpXG4gIHwgXyAtPiBOb25lXG5cbmxldCBkb19jaGVjayB+bm9kZV9uYW1lIG5vZGVfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3MgPVxuICBpZiBub3QgIXNhbWVfZmlsZV9zb19mYXIgdGhlbiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICBlbHNlIGlmIG5vZGVfbG9jLmxvY19naG9zdCB0aGVuXG4gICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudW5pb24gY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuICBlbHNlIGlmIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmNvdmVyZWRfYnkgY2hpbGRyZW5zX2xvY3MgfmxvYzpub2RlX2xvYyB0aGVuXG4gICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuaW5zZXJ0IH5ub2RlX25hbWUgbm9kZV9sb2Mgc2libGluZ3NfbG9jc1xuICBlbHNlXG4gICAgbGV0IGNoaWxkX25hbWUsIGNoaWxkX2xvYyA9XG4gICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5maW5kX291dHNpZGUgbm9kZV9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICBpblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOm5vZGVfbG9jXG4gICAgICBcImludmFsaWQgb3V0cHV0IGZyb20gcHB4OkAgdGhpcyAlcyBpcyBidWlsdCBmcm9tIGElcyB3aG9zZSBsb2NhdGlvbiBpcyBcXFxuICAgICAgIG91dHNpZGUgb2YgdGhpcyBub2RlJ3MuQC5DaGlsZCAlcyBmb3VuZCBhdDpAICVhXCJcbiAgICAgIG5vZGVfbmFtZVxuICAgICAgKChtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBjaGlsZF9uYW1lIDAgd2l0aFxuICAgICAgIHwgJ2EnIHwgJ2UnIHwgJ2knIHwgJ28nIHwgJ3UnIC0+IFwibiBcIlxuICAgICAgIHwgXyAtPiBcIiBcIilcbiAgICAgIF4gY2hpbGRfbmFtZSlcbiAgICAgIGNoaWxkX25hbWUgTG9jYXRpb24ucHJpbnQgY2hpbGRfbG9jXG5cbmxldCBlbmZvcmNlX2ludmFyaWFudHMgZm5hbWUgPVxuICBsZXQgKCkgPSBmaWxlIDo9IGZuYW1lIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbmhlcml0IFtOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50XSBBc3RfdHJhdmVyc2UuZm9sZCBhcyBzdXBlclxuXG4gICAgKCogVE9ETzogd2Ugc2hvdWxkIGdlbmVyYXRlIGEgY2xhc3Mgd2hpY2ggZW5mb3JjZXMgdGhlIGxvY2F0aW9uIGludmFyaWFudC5cbiAgICAgICBBbmQgdGhlbiB3ZSBzaG91bGQgb25seSBvdmVycmlkZSB0aGUgbWV0aG9kcyB3aGVyZSB3ZSBuZWVkIGFuIGVzY2FwZVxuICAgICAgIGhhdGNoIGJlY2F1c2UgdGhlIHBhcnNlciBpc24ndCBkb2luZyB0aGUgcmlnaHQgdGhpbmcuXG5cbiAgICAgICBUaGF0IHdvdWxkIGVuc3VyZSB0aGF0IHdlIHN0YXkgdXAgdG8gZGF0ZSBhcyB0aGUgQVNUIGNoYW5nZXMuICopXG5cbiAgICBtZXRob2QhIGxvbmdpZGVudF9sb2MgeCBzaWJsaW5ncyA9XG4gICAgICBpZiB4LmxvYy5sb2NfZ2hvc3QgdGhlbiBzaWJsaW5nc1xuICAgICAgZWxzZSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5pbnNlcnQgfm5vZGVfbmFtZTpcImlkZW50XCIgeC5sb2Mgc2libGluZ3NcblxuICAgIG1ldGhvZCEgcm93X2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHJmX2xvYyB4LnByZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNyb3dfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwicm93IGZpZWxkXCIgeC5wcmZfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgb2JqZWN0X2ZpZWxkIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG9mX2xvYyB4LnBvZl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI29iamVjdF9maWVsZCB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJvYmplY3QgZmllbGRcIiB4LnBvZl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGJpbmRpbmdfb3AgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2JpbmRpbmdfb3AgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImJpbmRpbmcgb3BlcmF0b3JcIiB4LnBib3BfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgdmFsdWVfZGVzY3JpcHRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdmFsX2xvYyB4LnB2YWxfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciN2YWx1ZV9kZXNjcmlwdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJ2YWx1ZSBkZXNjcmlwdGlvblwiIHgucHZhbF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHR5cGVfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlwZV9sb2MgeC5wdHlwZV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3R5cGVfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwidHlwZSBkZWNsYXJhdGlvblwiIHgucHR5cGVfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBsYWJlbF9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBsZF9sb2MgeC5wbGRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNsYWJlbF9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJsYWJlbCBkZWNsYXJhdGlvblwiIHgucGxkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2RfbG9jIHgucGNkX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY29uc3RydWN0b3JfZGVjbGFyYXRpb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY29uc3RydWN0b3IgZGVjbGFyYXRpb25cIiB4LnBjZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIHR5cGVfZXh0ZW5zaW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucHR5ZXh0X2xvYyB4LnB0eWV4dF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3R5cGVfZXh0ZW5zaW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInR5cGUgZXh0ZW5zaW9uXCIgeC5wdHlleHRfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBleHRlbnNpb25fY29uc3RydWN0b3IgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wZXh0X2xvYyB4LnBleHRfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNleHRlbnNpb25fY29uc3RydWN0b3IgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXh0ZW5zaW9uIGNvbnN0cnVjdG9yXCIgeC5wZXh0X2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjdHlfbG9jIHgucGN0eV9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPSBzdXBlciNjbGFzc190eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcImNsYXNzIHR5cGVcIiB4LnBjdHlfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfdHlwZV9maWVsZCB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBjdGZfbG9jIHgucGN0Zl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI2NsYXNzX3R5cGVfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgdHlwZSBmaWVsZFwiIHgucGN0Zl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2luZm9zIGYgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2lfbG9jIHgucGNpX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfaW5mb3MgZiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjbGFzc1wiIHgucGNpX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIGNsYXNzX2V4cHIgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2xfbG9jIHgucGNsX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9IHN1cGVyI2NsYXNzX2V4cHIgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgZXhwcmVzc2lvblwiIHgucGNsX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgY2xhc3NfZmllbGQgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wY2ZfbG9jIHgucGNmX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjY2xhc3NfZmllbGQgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiY2xhc3MgZmllbGRcIiB4LnBjZl9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBzaWduYXR1cmVfaXRlbSB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBzaWdfbG9jIFtdIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI3NpZ25hdHVyZV9pdGVtIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInNpZ25hdHVyZSBpdGVtXCIgeC5wc2lnX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgbW9kdWxlX2RlY2xhcmF0aW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1kX2xvYyB4LnBtZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgZGVjbGFyYXRpb25cIiB4LnBtZF9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9zdWJzdGl0dXRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXNfbG9jIHgucG1zX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgc3VwZXIjbW9kdWxlX3N1YnN0aXR1dGlvbiB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJtb2R1bGUgc3Vic3RpdHV0aW9uXCIgeC5wbXNfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgbWV0aG9kISBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBtdGRfbG9jIHgucG10ZF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV90eXBlX2RlY2xhcmF0aW9uIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSB0eXBlIGRlY2xhcmF0aW9uXCIgeC5wbXRkX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgb3Blbl9pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG9wZW5fbG9jIHgucG9wZW5fYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNvcGVuX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwib3BlblwiIHgucG9wZW5fbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgaW5jbHVkZV9pbmZvcyBmIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGluY2xfbG9jIHgucGluY2xfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNpbmNsdWRlX2luZm9zIGYgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiaW5jbHVkZVwiIHgucGluY2xfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlX2l0ZW0geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wc3RyX2xvYyBbXSB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBzdXBlciNzdHJ1Y3R1cmVfaXRlbSB4IE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJzdHJ1Y3R1cmUgaXRlbVwiIHgucHN0cl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1iX2xvYyB4LnBtYl9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIHN1cGVyI21vZHVsZV9iaW5kaW5nIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBiaW5kaW5nXCIgeC5wbWJfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSAqKVxuICAgICgqIHRoZSB0eXBlIGNvbnN0cmFpbnQgaXMgZHVwbGljYXRlZC4gICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgdmFsdWVfYmluZGluZyB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnB2Yl9sb2MgeC5wdmJfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBtYXRjaCAoeC5wdmJfcGF0LnBwYXRfZGVzYywgZXh0cmFjdF9jb25zdHJhaW50IHgucHZiX2V4cHIpIHdpdGhcbiAgICAgICAgICAoKiBsZXQgeCA6IHR5cGUgYSBiIGMuIGN0ID0gZSAqKVxuICAgICAgICAgIHwgKCBQcGF0X2NvbnN0cmFpbnRcbiAgICAgICAgICAgICAgICAocHZiX3BhdCwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKF8gOjogXywgY3RwKTsgXyB9KSxcbiAgICAgICAgICAgICAgU29tZSAocHZiX2V4cHIsIGN0ZSkgKVxuICAgICAgICAgICgqIGxldCB4IDogIGN0ID0gZVxuICAgICAgICAgICAgIGxldCB4IDo+IGN0ID0gZSAqKVxuICAgICAgICAgIHwgKCBQcGF0X2NvbnN0cmFpbnQgKHB2Yl9wYXQsIHsgcHR5cF9kZXNjID0gUHR5cF9wb2x5IChbXSwgY3RwKTsgXyB9KSxcbiAgICAgICAgICAgICAgU29tZSAocHZiX2V4cHIsIGN0ZSkgKVxuICAgICAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlIGN0cC5wdHlwX2xvYyBjdGUucHR5cF9sb2MgPSAwIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eSBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNwYXR0ZXJuIHB2Yl9wYXQgYWNjIGluXG4gICAgICAgICAgICAgIGxldCBfYWNjID0gc2VsZiNjb3JlX3R5cGUgY3RwIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIHB2Yl9leHByIGFjYyBpblxuICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNhdHRyaWJ1dGVzIHgucHZiX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgIHwgXyAtPiBzdXBlciN2YWx1ZV9iaW5kaW5nIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcInZhbHVlIGJpbmRpbmdcIiB4LnB2Yl9sb2MgY2hpbGRyZW5zX2xvY3NcbiAgICAgICAgICBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIHNwZWNpYWwgY2FzZWQgYmVjYXVzZSBvZjogKilcbiAgICAoKiAgICAgTVQgW0BhdHRyIHBheWxvYWRdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIHBheWxvYWQgaXMgb3V0c2lkZSB0aGUgICAgKilcbiAgICAoKiBsb2Mgb2YgdGhlIG1vZHVsZSB0eXBlLi4uLiAgICAgICAgICAgICAgICAgKilcbiAgICAoKiBhbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAgICAgZnVuY3RvciAoQSA6IFMpIChCIDogUykgLi4uICAgICAgICAgICAgKilcbiAgICAoKiB3aGVyZSB0aGUgbG9jIG9mIFsoQiA6IFMpIC4uLl0gaXMgdGhlIHNhbWUgKilcbiAgICAoKiBhcyB0aGUgbG9jIG9mIHRoZSBvdXRlcm1vc3QgbW9kdWxlIHR5cGUuICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgbW9kdWxlX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wbXR5X2xvYyB4LnBtdHlfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHggPSByZWxvY19wbXR5X2Z1bmN0b3JzIHggaW5cbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucG10eV9sb2MgeC5wbXR5X2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjbW9kdWxlX3R5cGUgeCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI21vZHVsZV90eXBlX2Rlc2MgeC5wbXR5X2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBtdHlfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwibW9kdWxlIHR5cGVcIiB4LnBtdHlfbG9jIGNoaWxkcmVuc19sb2NzXG4gICAgICAgICAgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBzcGVjaWFsIGNhc2VkIGJlY2F1c2Ugb2Y6ICopXG4gICAgKCogICAgIE1FIFtAYXR0ciBwYXlsb2FkXSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBwYXlsb2FkIGlzIG91dHNpZGUgdGhlICAgICopXG4gICAgKCogbG9jIG9mIHRoZSBtb2R1bGUgZXhwci4uLi4gICAgICAgICAgICAgICAgICopXG4gICAgKCogYW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogICAgIGZ1bmN0b3IgKEEgOiBTKSAoQiA6IFMpIC4uLiAgICAgICAgICAgICopXG4gICAgKCogd2hlcmUgdGhlIGxvYyBvZiBbKEIgOiBTKSAuLi5dIGlzIHRoZSBzYW1lICopXG4gICAgKCogYXMgdGhlIGxvYyBvZiB0aGUgb3V0ZXJtb3N0IG1vZHVsZSBleHByLiAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucG1vZF9sb2MgeC5wbW9kX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCB4ID0gcmVsb2NfcG1vZF9mdW5jdG9ycyB4IGluXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBtb2RfbG9jIHgucG1vZF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI21vZHVsZV9leHByIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNtb2R1bGVfZXhwcl9kZXNjIHgucG1vZF9kZXNjIE5vbl9pbnRlcnNlY3RpbmdfcmFuZ2VzLmVtcHR5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IF8gPSBzZWxmI2F0dHJpYnV0ZXMgeC5wbW9kX2F0dHJpYnV0ZXMgYWNjIGluXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgaW5cbiAgICAgICAgZG9fY2hlY2sgfm5vZGVfbmFtZTpcIm1vZHVsZSBleHByZXNzaW9uXCIgeC5wbW9kX2xvYyBjaGlsZHJlbnNfbG9jc1xuICAgICAgICAgIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogU2FtZSBhcyBhYm92ZSAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjb3JlX3R5cGUgeCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlwX2xvYyB4LnB0eXBfYXR0cmlidXRlcyB0aGVuIHNpYmxpbmdzX2xvY3NcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNoaWxkcmVuc19sb2NzID1cbiAgICAgICAgICBpZiBhbGxfcGF5bG9hZHNfaW5zaWRlX3BhcmVudCB+bG9jOngucHR5cF9sb2MgeC5wdHlwX2F0dHJpYnV0ZXMgdGhlblxuICAgICAgICAgICAgc3VwZXIjY29yZV90eXBlIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNjb3JlX3R5cGVfZGVzYyB4LnB0eXBfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucHR5cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJjb3JlIHR5cGVcIiB4LnB0eXBfbG9jIGNoaWxkcmVuc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKilcbiAgICAoKiBBbmQgYWdhaW4gLi4uICopXG4gICAgKCoqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBleHByZXNzaW9uIHggc2libGluZ3NfbG9jcyA9XG4gICAgICBpZiBzaG91bGRfaWdub3JlIHgucGV4cF9sb2MgeC5wZXhwX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBjaGlsZHJlbnNfbG9jcyA9XG4gICAgICAgICAgaWYgYWxsX3BheWxvYWRzX2luc2lkZV9wYXJlbnQgfmxvYzp4LnBleHBfbG9jIHgucGV4cF9hdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgICAgIHN1cGVyI2V4cHJlc3Npb24geCBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBhY2MgPVxuICAgICAgICAgICAgICBzZWxmI2V4cHJlc3Npb25fZGVzYyB4LnBleHBfZGVzYyBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBfID0gc2VsZiNhdHRyaWJ1dGVzIHgucGV4cF9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICAgYWNjXG4gICAgICAgIGluXG4gICAgICAgIGRvX2NoZWNrIH5ub2RlX25hbWU6XCJleHByZXNzaW9uXCIgeC5wZXhwX2xvYyBjaGlsZHJlbnNfbG9jcyBzaWJsaW5nc19sb2NzXG5cbiAgICAoKioqKioqKioqKioqKioqKiopXG4gICAgKCogLi4uIGFuZCBhZ2FpbiAqKVxuICAgICgqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgcGF0dGVybiB4IHNpYmxpbmdzX2xvY3MgPVxuICAgICAgaWYgc2hvdWxkX2lnbm9yZSB4LnBwYXRfbG9jIHgucHBhdF9hdHRyaWJ1dGVzIHRoZW4gc2libGluZ3NfbG9jc1xuICAgICAgZWxzZVxuICAgICAgICBsZXQgY2hpbGRyZW5zX2xvY3MgPVxuICAgICAgICAgIGlmIGFsbF9wYXlsb2Fkc19pbnNpZGVfcGFyZW50IH5sb2M6eC5wcGF0X2xvYyB4LnBwYXRfYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICAgICBzdXBlciNwYXR0ZXJuIHggTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuX2Rlc2MgeC5wcGF0X2Rlc2MgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9IHNlbGYjYXR0cmlidXRlcyB4LnBwYXRfYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICBpblxuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwicGF0dGVyblwiIHgucHBhdF9sb2MgY2hpbGRyZW5zX2xvY3Mgc2libGluZ3NfbG9jc1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgc3BlY2lhbCBjYXNlZCBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiAgKilcbiAgICAoKiB0aGUgY29uc3RydWN0IGVxdWFscyB0aGUgbG9jYXRpb24gb2YgdGhlIHR5cGVfZXhjZXB0aW9uICopXG4gICAgKCogKGFuZCBzbyBjb3ZlcnMgdGhlIGxvY2F0aW9uIG9mIHRoZSBhdHRyaWJ1dGVzKS4gICAgICAgICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgdHlwZV9leGNlcHRpb24geCBzaWJsaW5nc19sb2NzID1cbiAgICAgIGlmIHNob3VsZF9pZ25vcmUgeC5wdHlleG5fbG9jIHgucHR5ZXhuX2F0dHJpYnV0ZXMgdGhlbiBzaWJsaW5nc19sb2NzXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBpbml0ID0gTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHkgaW5cbiAgICAgICAgbGV0IGNoaWxkc19sb2NzID1cbiAgICAgICAgICBzZWxmI2V4dGVuc2lvbl9jb25zdHJ1Y3RvciB4LnB0eWV4bl9jb25zdHJ1Y3RvciBpbml0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdHRyc19sb2NzID0gc2VsZiNhdHRyaWJ1dGVzIHgucHR5ZXhuX2F0dHJpYnV0ZXMgaW5pdCBpblxuICAgICAgICBpZ25vcmVcbiAgICAgICAgICAoZG9fY2hlY2sgfm5vZGVfbmFtZTpcImV4Y2VwdGlvblwiIHgucHR5ZXhuX2xvYyBhdHRyc19sb2NzIHNpYmxpbmdzX2xvY3MpO1xuICAgICAgICBkb19jaGVjayB+bm9kZV9uYW1lOlwiZXhjZXB0aW9uXCIgeC5wdHlleG5fbG9jIGNoaWxkc19sb2NzIHNpYmxpbmdzX2xvY3NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSAqKVxuICAgICgqIGxocyBpcyBzb21ldGltZXMgaW5jbHVkZWQgaW4gdGhlIHJocy4gICAqKVxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISB3aXRoX2NvbnN0cmFpbnQgeCBzaWJsaW5nc19sb2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFB3aXRoX3R5cGUgKF8sIHRkZWNsKSB8IFB3aXRoX3R5cGVzdWJzdCAoXywgdGRlY2wpIC0+XG4gICAgICAgICAgc2VsZiN0eXBlX2RlY2xhcmF0aW9uIHRkZWNsIHNpYmxpbmdzX2xvY1xuICAgICAgfCBfIC0+IHN1cGVyI3dpdGhfY29uc3RyYWludCB4IHNpYmxpbmdzX2xvY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBvZjoqKVxuICAgICgqIC0gRm9vLnsgYmFyOyAuLi4gfSAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBGb28uWyBiYXI7IC4uLiBdICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIEZvby4oIGJhcjsgLi4uICkgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gbWV0aG9kIHggOiB0eXBlIGEuIC4uLiA9IC4uLiAgICAgICAgICopXG4gICAgKCogLSBmb28uQChiYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby5AKGJhcikgPC0gYmF6ICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUue2Jhcn0gICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSBmb28uJS57YmFyfSA8LSBiYXogICAgICAgICAgICAgICAgICAgKilcbiAgICAoKiAtIGZvby4lLltiYXJdICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuICAgICgqIC0gZm9vLiUuW2Jhcl0gPC0gYmF6ICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgZXhwcmVzc2lvbl9kZXNjIHggYWNjID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBQZXhwX3JlY29yZCAobGFiZWxzLCBleHByX28pIC0+XG4gICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgICAgKGZ1biAobGlkLCBlKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTG9jYXRpb24uY29tcGFyZV9wb3MgbGlkLmxvYy5sb2Nfc3RhcnQgZS5wZXhwX2xvYy5sb2Nfc3RhcnRcbiAgICAgICAgICAgICAgICAgID0gMFxuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIExvY2F0aW9uLmNvbXBhcmUgbGlkLmxvYyBlLnBleHBfbG9jID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICgqIHB1bm5pbmcuICopXG4gICAgICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGUucGV4cF9kZXNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBQZXhwX2NvbnN0cmFpbnQgKGUsIGMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoKiB7IGZvbyA6IGludCB9IGFuZCB7IGZvbyA6IGludCA9IHggfSAuLi4gKilcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gc2VsZiNjb3JlX3R5cGUgYyBhY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjZXhwcmVzc2lvbiBlIGFjY1xuICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIE5vIGlkZWEgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNleHByZXNzaW9uIGUgYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjIGluXG4gICAgICAgICAgICAgICAgICBsZXQgYWNjID0gc2VsZiNleHByZXNzaW9uIGUgYWNjIGluXG4gICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgIGxhYmVscyBhY2NcbiAgICAgICAgICBpblxuICAgICAgICAgIHNlbGYjb3B0aW9uIHNlbGYjZXhwcmVzc2lvbiBleHByX28gYWNjXG4gICAgICB8IFBleHBfb3BlblxuICAgICAgICAgICgoeyBwb3Blbl9leHByID0geyBwbW9kX2Rlc2MgPSBQbW9kX2lkZW50IGxpZDsgXyB9OyBfIH0gYXMgb3BuKSwgZSlcbiAgICAgICAgd2hlbiBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBlLnBleHBfbG9jLmxvY19zdGFydCA9IDBcbiAgICAgICAgICAgICAmJiBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19lbmQgZS5wZXhwX2xvYy5sb2NfZW5kIDw+IDAgLT5cbiAgICAgICAgICAoKiBsZXQncyByZWxvY2F0ZSAuLi4gKilcbiAgICAgICAgICBsZXQgZV9sb2MgPSB7IGUucGV4cF9sb2Mgd2l0aCBsb2Nfc3RhcnQgPSBsaWQubG9jLmxvY19lbmQgfSBpblxuICAgICAgICAgIHN1cGVyI2V4cHJlc3Npb25fZGVzY1xuICAgICAgICAgICAgKFBleHBfb3BlbiAob3BuLCB7IGUgd2l0aCBwZXhwX2xvYyA9IGVfbG9jIH0pKVxuICAgICAgICAgICAgYWNjXG4gICAgICB8IFBleHBfcG9seSAoZSwgU29tZSB7IHB0eXBfZGVzYyA9IFB0eXBfcG9seSAoXywgY3QpOyBfIH0pIC0+IChcbiAgICAgICAgICBtYXRjaCBleHRyYWN0X2NvbnN0cmFpbnQgZSB3aXRoXG4gICAgICAgICAgfCBTb21lIChlLCBjdGUpIHdoZW4gTG9jYXRpb24uY29tcGFyZSBjdGUucHR5cF9sb2MgY3QucHR5cF9sb2MgPSAwIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2V4cHJlc3Npb24gZSBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY29yZV90eXBlIGN0IGFjYyBpblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjKVxuICAgICAgfCBQZXhwX2FwcGx5ICh7IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBsaWQ7IF8gfTsgXyB9LCBhcmdzKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggTG9uZ2lkZW50Lmxhc3RfZXhuIGxpZCB3aXRoXG4gICAgICAgICAgfCBpZFxuICAgICAgICAgICAgd2hlbiBTdHJpbmcuaXNfcHJlZml4IGlkIH5wcmVmaXg6XCIuXCJcbiAgICAgICAgICAgICAgICAgJiYgKFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIigpXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiKCk8LVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcIltdXCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4OlwiW108LVwiXG4gICAgICAgICAgICAgICAgICAgIHx8IFN0cmluZy5pc19zdWZmaXggaWQgfnN1ZmZpeDpcInt9XCJcbiAgICAgICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3N1ZmZpeCBpZCB+c3VmZml4Olwie308LVwiKSAtPlxuICAgICAgICAgICAgICBzZWxmI2xpc3QgKGZ1biAoXywgZSkgLT4gc2VsZiNleHByZXNzaW9uIGUpIGFyZ3MgYWNjXG4gICAgICAgICAgfCBleGNlcHRpb24gXyAtPiBzdXBlciNleHByZXNzaW9uX2Rlc2MgeCBhY2NcbiAgICAgICAgICB8IF8gLT4gc3VwZXIjZXhwcmVzc2lvbl9kZXNjIHggYWNjKVxuICAgICAgfCBfIC0+IHN1cGVyI2V4cHJlc3Npb25fZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogVGhlIGZvbGxvd2luZyBpcyBvdmVycmlkZGVuIGJlY2F1c2Ugb2Y6ICAgICAgICAgICAgICopXG4gICAgKCogLSBwdW5uaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCogLSByZWNvcmQgZmllbGQgd2l0aCB0eXBlIGNvbnN0cmFpbnQuICAgICAgICAgICAgICAgICopXG4gICAgKCogLSB1bnBhY2sgbG9jYXRpb25zIGJlaW5nIGluY29ycmVjdCB3aGVuIGNvbnN0cmFpbmVkICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIHBhdHRlcm5fZGVzYyB4IGFjYyA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgUHBhdF9yZWNvcmQgKGxhYmVscywgXykgLT5cbiAgICAgICAgICBzZWxmI2xpc3RcbiAgICAgICAgICAgIChmdW4gKGxpZCwgcGF0KSBhY2MgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICBMb2NhdGlvbi5jb21wYXJlX3BvcyBsaWQubG9jLmxvY19zdGFydCBwYXQucHBhdF9sb2MubG9jX3N0YXJ0XG4gICAgICAgICAgICAgICAgPSAwXG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBpZiBMb2NhdGlvbi5jb21wYXJlIGxpZC5sb2MgcGF0LnBwYXRfbG9jID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAoKiBzaW1wbGUgcHVubmluZyEgKilcbiAgICAgICAgICAgICAgICAgIHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggcGF0LnBwYXRfZGVzYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFBwYXRfY29uc3RyYWludCAocCwgYykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKiB7IGZvbyA6IGludCB9IGFuZCB7IGZvbyA6IGludCA9IHggfSAuLi4gKilcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHNlbGYjY29yZV90eXBlIGMgYWNjIGluXG4gICAgICAgICAgICAgICAgICAgICAgc2VsZiNwYXR0ZXJuIHAgYWNjXG4gICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAoKiBObyBpZGVhIHdoYXQncyBnb2luZyBvbiB0aGVyZS4gKilcbiAgICAgICAgICAgICAgICAgICAgICBzZWxmI3BhdHRlcm4gcGF0IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBsaWQgYWNjIGluXG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9IHNlbGYjcGF0dGVybiBwYXQgYWNjIGluXG4gICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgbGFiZWxzIGFjY1xuICAgICAgfCBQcGF0X2NvbnN0cmFpbnQgKHsgcHBhdF9kZXNjID0gUHBhdF91bnBhY2sgYTsgXyB9LCBiKSAtPlxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2xvYyAoc2VsZiNvcHRpb24gc2VsZiNzdHJpbmcpIGEgYWNjIGluXG4gICAgICAgICAgc2VsZiNjb3JlX3R5cGUgYiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNwYXR0ZXJuX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSB0aGUgbG9jYXRpb24gb2YgdGhlICopXG4gICAgKCogZmFrZSBzdHJ1Y3R1cmUgZm9yIGEgZ2VuZXJhdGl2ZSBhcmd1bWVudCBjb3ZlcnMgdGhlICAgICAqKVxuICAgICgqIGxvY2F0aW9uIG9mIHRoZSBmdW5jdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbiAgICBtZXRob2QhIG1vZHVsZV9leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBtb2RfYXBwbHkgKG0sIHsgcG1vZF9kZXNjID0gUG1vZF9zdHJ1Y3R1cmUgW107IHBtb2RfbG9jOyBfIH0pXG4gICAgICAgIHdoZW4gTG9jYXRpb24uY29tcGFyZV9wb3MgbS5wbW9kX2xvYy5sb2Nfc3RhcnQgcG1vZF9sb2MubG9jX3N0YXJ0ID0gMCAtPlxuICAgICAgICAgIHN1cGVyI21vZHVsZV9leHByIG0gYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjbW9kdWxlX2V4cHJfZGVzYyB4IGFjY1xuXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICgqIFRoZSBmb2xsb3dpbmcgaXMgb3ZlcnJpZGRlbiBiZWNhdXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgKilcbiAgICAoKiBvcGVuX2luZm9zIGZvciBQY2xfb3BlbiBvbmx5IGNvdmVycyB0aGUgXCJvcGVuXCIga2V5d29yZCAgKilcbiAgICAoKiBhbmQgbm90IHRoZSBtb2R1bGUgb3BlbmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4gICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjbGFzc19leHByX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjbF9vcGVuIChvZCwgY2UpIC0+XG4gICAgICAgICAgKCogaW5saW5lIG9mIG9wZW5fZGVzY3JpcHRpb24gKHdoaWNoIGVmZmVjdGl2ZWx5IG1ha2VzIHRoYXQgbm9kZVxuICAgICAgICAgICAgIGRpc2FwcGVhcikgKilcbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb25naWRlbnRfbG9jIG9kLnBvcGVuX2V4cHIgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjb3ZlcnJpZGVfZmxhZyBvZC5wb3Blbl9vdmVycmlkZSBhY2MgaW5cbiAgICAgICAgICBsZXQgYWNjID0gc2VsZiNsb2NhdGlvbiBvZC5wb3Blbl9sb2MgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjYXR0cmlidXRlcyBvZC5wb3Blbl9hdHRyaWJ1dGVzIGFjYyBpblxuICAgICAgICAgICgqIGNvbnRpbnVlICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjY2xhc3NfZXhwciBjZSBhY2MgaW5cbiAgICAgICAgICBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNjbGFzc19leHByX2Rlc2MgeCBhY2NcblxuICAgICgqKioqKioqKioqKioqKioqKioqKiopXG4gICAgKCogU2FtZSBhcyBhYm92ZSAuLi4gKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKVxuXG4gICAgbWV0aG9kISBjbGFzc190eXBlX2Rlc2MgeCBhY2MgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IFBjdHlfb3BlbiAob2QsIGN0KSAtPlxuICAgICAgICAgICgqIGlubGluZSBvZiBvcGVuX2Rlc2NyaXB0aW9uICh3aGljaCBlZmZlY3RpdmVseSBtYWtlcyB0aGF0IG5vZGVcbiAgICAgICAgICAgICBkaXNhcHBlYXIpICopXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9uZ2lkZW50X2xvYyBvZC5wb3Blbl9leHByIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI292ZXJyaWRlX2ZsYWcgb2QucG9wZW5fb3ZlcnJpZGUgYWNjIGluXG4gICAgICAgICAgbGV0IGFjYyA9IHNlbGYjbG9jYXRpb24gb2QucG9wZW5fbG9jIGFjYyBpblxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2F0dHJpYnV0ZXMgb2QucG9wZW5fYXR0cmlidXRlcyBhY2MgaW5cbiAgICAgICAgICAoKiBjb250aW51ZSAqKVxuICAgICAgICAgIGxldCBhY2MgPSBzZWxmI2NsYXNzX3R5cGUgY3QgYWNjIGluXG4gICAgICAgICAgYWNjXG4gICAgICB8IF8gLT4gc3VwZXIjY2xhc3NfdHlwZV9kZXNjIHggYWNjXG5cbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAoKiBUaGUgZm9sbG93aW5nIGlzIG92ZXJyaWRkZW4gYmVjYXVzZSBkb2NzdHJpbmdzIGhhdmUgICAgKilcbiAgICAoKiB0aGUgc2FtZSBsb2NhdGlvbiBhcyB0aGUgaXRlbSB0aGV5IGdldCBhdHRhY2hlZCB0by4gICAgKilcbiAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuICAgIG1ldGhvZCEgYXR0cmlidXRlIHggYWNjID1cbiAgICAgIG1hdGNoIHguYXR0cl9uYW1lLnR4dCB3aXRoXG4gICAgICB8IFwib2NhbWwuZG9jXCIgfCBcIm9jYW1sLnRleHRcIiAtPiBhY2NcbiAgICAgIHwgXyAtPiBzdXBlciNhdHRyaWJ1dGUgeCBhY2NcbiAgZW5kXG4iLCIoKiQgb3BlbiBQcHhsaWJfY2luYXBzX2hlbHBlcnMgJCopXG5vcGVuIEltcG9ydFxub3BlbiBVdGlsc1xub3BlbiBDb21tb25cbm9wZW4gV2l0aF9lcnJvcnNcbm1vZHVsZSBBcmcgPSBTdGRsaWIuQXJnXG5cbmxldCBleGVfbmFtZSA9IFN0ZGxpYi5GaWxlbmFtZS5iYXNlbmFtZSBTdGRsaWIuU3lzLmV4ZWN1dGFibGVfbmFtZVxubGV0IGFyZ3MgPSByZWYgW11cbmxldCBhZGRfYXJnIGtleSBzcGVjIH5kb2MgPSBhcmdzIDo9IChrZXksIHNwZWMsIGRvYykgOjogIWFyZ3NcbmxldCBsb2NfZm5hbWUgPSByZWYgTm9uZVxubGV0IHBlcmZvcm1fY2hlY2tzID0gcmVmIE9wdGlvbnMucGVyZm9ybV9jaGVja3NcbmxldCBwZXJmb3JtX2NoZWNrc19vbl9leHRlbnNpb25zID0gcmVmIE9wdGlvbnMucGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9uc1xubGV0IHBlcmZvcm1fbG9jYXRpb25zX2NoZWNrID0gcmVmIE9wdGlvbnMucGVyZm9ybV9sb2NhdGlvbnNfY2hlY2tcbmxldCBkZWJ1Z19hdHRyaWJ1dGVfZHJvcCA9IHJlZiBmYWxzZVxubGV0IGFwcGx5X2xpc3QgPSByZWYgTm9uZVxubGV0IHByZXByb2Nlc3NvciA9IHJlZiBOb25lXG5sZXQgbm9fbWVyZ2UgPSByZWYgZmFsc2VcbmxldCByZXF1ZXN0X3ByaW50X3Bhc3NlcyA9IHJlZiBmYWxzZVxubGV0IHJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zID0gcmVmIGZhbHNlXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBkaWZmX2NvbW1hbmQgPSByZWYgT3B0aW9ucy5kaWZmX2NvbW1hbmRcbmxldCBwcmV0dHkgPSByZWYgZmFsc2VcbmxldCBzdHlsZXIgPSByZWYgTm9uZVxubGV0IG91dHB1dF9tZXRhZGF0YV9maWxlbmFtZSA9IHJlZiBOb25lXG5sZXQgY29ycmVjdGVkX3N1ZmZpeCA9IHJlZiBcIi5wcHgtY29ycmVjdGVkXCJcblxubGV0IGdob3N0ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwXG4gICAgbWV0aG9kISBsb2NhdGlvbiBsb2MgPSB7IGxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfVxuICBlbmRcblxubGV0IGNob3BfcHJlZml4IH5wcmVmaXggeCA9XG4gIGlmIFN0cmluZy5pc19wcmVmaXggfnByZWZpeCB4IHRoZW5cbiAgICBTb21lIChTdHJpbmcuZHJvcF9wcmVmaXggeCAoU3RyaW5nLmxlbmd0aCBwcmVmaXgpKVxuICBlbHNlIE5vbmVcblxubGV0IGdldF9kZWZhdWx0X3BhdGggKGxvYyA6IExvY2F0aW9uLnQpID1cbiAgbGV0IGZuYW1lID0gbG9jLmxvY19zdGFydC5wb3NfZm5hbWUgaW5cbiAgbWF0Y2ggY2hvcF9wcmVmaXggfnByZWZpeDpcIi4vXCIgZm5hbWUgd2l0aFxuICB8IFNvbWUgZm5hbWUgLT4gZm5hbWVcbiAgfCBOb25lIC0+IGZuYW1lXG5cbmxldCBnZXRfZGVmYXVsdF9wYXRoX3N0ciA6IHN0cnVjdHVyZSAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFtdIC0+IFwiXCJcbiAgfCB7IHBzdHJfbG9jID0gbG9jOyBfIH0gOjogXyAtPiBnZXRfZGVmYXVsdF9wYXRoIGxvY1xuXG5sZXQgZ2V0X2RlZmF1bHRfcGF0aF9zaWcgOiBzaWduYXR1cmUgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBcIlwiXG4gIHwgeyBwc2lnX2xvYyA9IGxvYzsgXyB9IDo6IF8gLT4gZ2V0X2RlZmF1bHRfcGF0aCBsb2NcblxubW9kdWxlIExpbnRfZXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gTG9jYXRpb24udCAqIHN0cmluZ1xuXG4gIGxldCBvZl9zdHJpbmcgbG9jIHMgPSAobG9jLCBzKVxuZW5kXG5cbm1vZHVsZSBDb29raWVzID0gc3RydWN0XG4gIHR5cGUgdCA9IFRcblxuICBsZXQgZ2l2ZW5fdGhyb3VnaF9jbGkgPSByZWYgW11cblxuICBsZXQgZ2V0IFQgbmFtZSBwYXR0ZXJuID1cbiAgICBPcHRpb24ubWFwIChBc3RsaWIuQXN0X21ldGFkYXRhLmdldF9jb29raWUgbmFtZSkgfmY6KGZ1biBlIC0+XG4gICAgICAgIGxldCBlID0gU2VsZWN0ZWRfYXN0Lm9mX29jYW1sIEV4cHJlc3Npb24gZSBpblxuICAgICAgICBBc3RfcGF0dGVybi5wYXJzZSBwYXR0ZXJuIGUucGV4cF9sb2MgZSBGbi5pZClcblxuICBsZXQgZ2V0X3JlcyBUIG5hbWUgcGF0dGVybiA9XG4gICAgbWF0Y2hcbiAgICAgIE9wdGlvbi5tYXAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZ2V0X2Nvb2tpZSBuYW1lKSB+ZjooZnVuIGUgLT5cbiAgICAgICAgICBsZXQgZSA9IFNlbGVjdGVkX2FzdC5vZl9vY2FtbCBFeHByZXNzaW9uIGUgaW5cbiAgICAgICAgICBBc3RfcGF0dGVybi5wYXJzZV9yZXMgcGF0dGVybiBlLnBleHBfbG9jIGUgRm4uaWQpXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPiBPayBOb25lXG4gICAgfCBTb21lIChPayBlKSAtPiBPayAoU29tZSBlKVxuICAgIHwgU29tZSAoRXJyb3IgZSkgLT4gRXJyb3IgZVxuXG4gIGxldCBzZXQgVCBuYW1lIGV4cHIgPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuc2V0X2Nvb2tpZSBuYW1lIChTZWxlY3RlZF9hc3QudG9fb2NhbWwgRXhwcmVzc2lvbiBleHByKVxuXG4gIGxldCBoYW5kbGVycyA9IHJlZiBbXVxuICBsZXQgYWRkX2hhbmRsZXIgZiA9IGhhbmRsZXJzIDo9ICFoYW5kbGVycyBAIFsgZiBdXG5cbiAgbGV0IGFkZF9zaW1wbGVfaGFuZGxlciBuYW1lIHBhdHRlcm4gfmYgPVxuICAgIGFkZF9oYW5kbGVyIChmdW4gVCAtPiBmIChnZXQgVCBuYW1lIHBhdHRlcm4pKVxuXG4gIGxldCBhY2tub3dsZWRnZV9jb29raWVzIFQgPSBMaXN0Lml0ZXIgIWhhbmRsZXJzIH5mOihmdW4gZiAtPiBmIFQpXG4gIGxldCBwb3N0X2hhbmRsZXJzID0gcmVmIFtdXG4gIGxldCBhZGRfcG9zdF9oYW5kbGVyIGYgPSBwb3N0X2hhbmRsZXJzIDo9ICFwb3N0X2hhbmRsZXJzIEAgWyBmIF1cbiAgbGV0IGNhbGxfcG9zdF9oYW5kbGVycyBUID0gTGlzdC5pdGVyICFwb3N0X2hhbmRsZXJzIH5mOihmdW4gZiAtPiBmIFQpXG5lbmRcblxubW9kdWxlIEluc3RydW1lbnQgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBCZWZvcmUgfCBBZnRlclxuXG4gIHR5cGUgdCA9IHtcbiAgICB0cmFuc2Zvcm1hdGlvbiA6XG4gICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgV2l0aF9lcnJvcnMudDtcbiAgICBwb3NpdGlvbiA6IHBvcztcbiAgfVxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIGxldCBtYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvbiA9XG4gICAgICBsZXQgdHJhbnNmb3JtYXRpb24gY3R4IHN0ID0gcmV0dXJuICh0cmFuc2Zvcm1hdGlvbiBjdHggc3QpIGluXG4gICAgICB7IHRyYW5zZm9ybWF0aW9uOyBwb3NpdGlvbiB9XG4gIGVuZFxuXG4gIGxldCBtYWtlIHRyYW5zZm9ybWF0aW9uIH5wb3NpdGlvbiA9XG4gICAgbGV0IHRyYW5zZm9ybWF0aW9uIF8gc3QgPSB0cmFuc2Zvcm1hdGlvbiBzdCBpblxuICAgIFYyLm1ha2UgdHJhbnNmb3JtYXRpb24gfnBvc2l0aW9uXG5lbmRcblxubW9kdWxlIFRyYW5zZm9ybSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgbmFtZSA6IHN0cmluZztcbiAgICBhbGlhc2VzIDogc3RyaW5nIGxpc3Q7XG4gICAgaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc2lnbmF0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgbGludF9pbXBsIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gUGFyc2V0cmVlLnN0cnVjdHVyZSAtPiBMaW50X2Vycm9yLnQgbGlzdClcbiAgICAgIG9wdGlvbjtcbiAgICBsaW50X2ludGYgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPiBQYXJzZXRyZWUuc2lnbmF0dXJlIC0+IExpbnRfZXJyb3IudCBsaXN0KVxuICAgICAgb3B0aW9uO1xuICAgIHByZXByb2Nlc3NfaW1wbCA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIC0+XG4gICAgICBQYXJzZXRyZWUuc3RydWN0dXJlIFdpdGhfZXJyb3JzLnQpXG4gICAgICBvcHRpb247XG4gICAgcHJlcHJvY2Vzc19pbnRmIDpcbiAgICAgIChFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgLT5cbiAgICAgIFBhcnNldHJlZS5zaWduYXR1cmUgV2l0aF9lcnJvcnMudClcbiAgICAgIG9wdGlvbjtcbiAgICBlbmNsb3NlX2ltcGwgOlxuICAgICAgKEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudCAtPlxuICAgICAgTG9jYXRpb24udCBvcHRpb24gLT5cbiAgICAgIFBhcnNldHJlZS5zdHJ1Y3R1cmUgKiBQYXJzZXRyZWUuc3RydWN0dXJlKVxuICAgICAgb3B0aW9uO1xuICAgIGVuY2xvc2VfaW50ZiA6XG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuQmFzZS50IC0+XG4gICAgICBMb2NhdGlvbi50IG9wdGlvbiAtPlxuICAgICAgUGFyc2V0cmVlLnNpZ25hdHVyZSAqIFBhcnNldHJlZS5zaWduYXR1cmUpXG4gICAgICBvcHRpb247XG4gICAgaW5zdHJ1bWVudCA6IEluc3RydW1lbnQudCBvcHRpb247XG4gICAgcnVsZXMgOiBDb250ZXh0X2ZyZWUuUnVsZS50IGxpc3Q7XG4gICAgcmVnaXN0ZXJlZF9hdCA6IENhbGxlcl9pZC50O1xuICB9XG5cbiAgbGV0IGhhc19uYW1lIHQgbmFtZSA9XG4gICAgU3RyaW5nLmVxdWFsIG5hbWUgdC5uYW1lIHx8IExpc3QuZXhpc3RzIH5mOihTdHJpbmcuZXF1YWwgbmFtZSkgdC5hbGlhc2VzXG5cbiAgbGV0IGFsbCA6IHQgbGlzdCByZWYgPSByZWYgW11cblxuICBsZXQgcHJpbnRfY2FsbGVyX2lkIG9jIChjYWxsZXJfaWQgOiBDYWxsZXJfaWQudCkgPVxuICAgIG1hdGNoIGNhbGxlcl9pZCB3aXRoXG4gICAgfCBOb25lIC0+IG91dHB1dF9zdHJpbmcgb2MgXCI8dW5rbm93biBsb2NhdGlvbj5cIlxuICAgIHwgU29tZSBsb2MgLT4gUHJpbnRmLmZwcmludGYgb2MgXCIlczolZFwiIGxvYy5maWxlbmFtZSBsb2MubGluZV9udW1iZXJcblxuICBsZXQgcmVnaXN0ZXIgPyhleHRlbnNpb25zID0gW10pID8ocnVsZXMgPSBbXSkgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmXG4gICAgICA/aW1wbCA/aW50ZiA/bGludF9pbXBsID9saW50X2ludGYgP3ByZXByb2Nlc3NfaW1wbCA/cHJlcHJvY2Vzc19pbnRmXG4gICAgICA/aW5zdHJ1bWVudCA/KGFsaWFzZXMgPSBbXSkgbmFtZSA9XG4gICAgbGV0IHJ1bGVzID0gTGlzdC5tYXAgZXh0ZW5zaW9ucyB+ZjpDb250ZXh0X2ZyZWUuUnVsZS5leHRlbnNpb24gQCBydWxlcyBpblxuICAgIGxldCBjYWxsZXJfaWQgPSBDYWxsZXJfaWQuZ2V0IH5za2lwOlsgU3RkbGliLl9fRklMRV9fIF0gaW5cbiAgICAobWF0Y2ggTGlzdC5maWx0ZXIgIWFsbCB+ZjooZnVuIGN0IC0+IGhhc19uYW1lIGN0IG5hbWUpIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCBjdCA6OiBfIC0+XG4gICAgICAgIFByaW50Zi5lcHJpbnRmIFwiV2FybmluZzogY29kZSB0cmFuc2Zvcm1hdGlvbiAlcyByZWdpc3RlcmVkIHR3aWNlLlxcblwiXG4gICAgICAgICAgbmFtZTtcbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCIgIC0gZmlyc3QgdGltZSB3YXMgYXQgJWFcXG5cIiBwcmludF9jYWxsZXJfaWRcbiAgICAgICAgICBjdC5yZWdpc3RlcmVkX2F0O1xuICAgICAgICBQcmludGYuZXByaW50ZiBcIiAgLSBzZWNvbmQgdGltZSBpcyBhdCAlYVxcblwiIHByaW50X2NhbGxlcl9pZCBjYWxsZXJfaWQpO1xuICAgIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSkgaW5cbiAgICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpIGluXG4gICAgbGV0IHByZXByb2Nlc3NfaW1wbCA9XG4gICAgICBPcHRpb24ubWFwIHByZXByb2Nlc3NfaW1wbCB+ZjooZnVuIGYgY3R4IGFzdCAtPiByZXR1cm4gKGYgY3R4IGFzdCkpXG4gICAgaW5cbiAgICBsZXQgcHJlcHJvY2Vzc19pbnRmID1cbiAgICAgIE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbnRmIH5mOihmdW4gZiBjdHggYXN0IC0+IHJldHVybiAoZiBjdHggYXN0KSlcbiAgICBpblxuICAgIGxldCBjdCA9XG4gICAgICB7XG4gICAgICAgIG5hbWU7XG4gICAgICAgIGFsaWFzZXM7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICBlbmNsb3NlX2ltcGw7XG4gICAgICAgIGVuY2xvc2VfaW50ZjtcbiAgICAgICAgaW1wbDtcbiAgICAgICAgaW50ZjtcbiAgICAgICAgbGludF9pbXBsO1xuICAgICAgICBwcmVwcm9jZXNzX2ltcGw7XG4gICAgICAgIHByZXByb2Nlc3NfaW50ZjtcbiAgICAgICAgbGludF9pbnRmO1xuICAgICAgICBpbnN0cnVtZW50O1xuICAgICAgICByZWdpc3RlcmVkX2F0ID0gY2FsbGVyX2lkO1xuICAgICAgfVxuICAgIGluXG4gICAgYWxsIDo9IGN0IDo6ICFhbGxcblxuICBsZXQgcmVjIGxhc3QgcHJldiBsID0gbWF0Y2ggbCB3aXRoIFtdIC0+IHByZXYgfCB4IDo6IGwgLT4gbGFzdCB4IGxcblxuICBsZXQgbG9jX29mX2xpc3QgfmdldF9sb2MgbCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICAgbGV0IGZpcnN0IDogTG9jYXRpb24udCA9IGdldF9sb2MgeCBpblxuICAgICAgICBsZXQgbGFzdCA9IGdldF9sb2MgKGxhc3QgeCBsKSBpblxuICAgICAgICBTb21lIHsgZmlyc3Qgd2l0aCBsb2NfZW5kID0gbGFzdC5sb2NfZW5kIH1cblxuICBsZXQgbWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgdCB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgfnRvb2xfbmFtZSB+aW5wdXRfbmFtZSA9XG4gICAgbGV0IHsgcnVsZXM7IGVuY2xvc2VfaW1wbDsgZW5jbG9zZV9pbnRmOyBpbXBsOyBpbnRmOyBfIH0gPSB0IGluXG4gICAgbGV0IG1hcCA9XG4gICAgICBuZXcgQ29udGV4dF9mcmVlLm1hcF90b3BfZG93blxuICAgICAgICBydWxlcyB+ZW1iZWRfZXJyb3JzIH5nZW5lcmF0ZWRfY29kZV9ob29rOmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgaW5cbiAgICBsZXQgZ2VuX2hlYWRlcl9hbmRfZm9vdGVyIGNvbnRleHQgd2hvbGVfbG9jIGYgPVxuICAgICAgbGV0IGhlYWRlciwgZm9vdGVyID0gZiB3aG9sZV9sb2MgaW5cbiAgICAgIChtYXRjaCB3aG9sZV9sb2Mgd2l0aFxuICAgICAgfCBTb21lIChsb2MgOiBMb2NhdGlvbi50KSAtPiAoXG4gICAgICAgICAgbGV0IGxvY19oZWFkZXIgPSB7IGxvYyB3aXRoIGxvY19lbmQgPSBsb2MubG9jX3N0YXJ0IH0gaW5cbiAgICAgICAgICBsZXQgbG9jX2Zvb3RlciA9IHsgbG9jIHdpdGggbG9jX3N0YXJ0ID0gbG9jLmxvY19lbmQgfSBpblxuICAgICAgICAgIChtYXRjaCBoZWFkZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gaG9vay5mIGNvbnRleHQgbG9jX2hlYWRlciAoTWFueSBoZWFkZXIpKTtcbiAgICAgICAgICBtYXRjaCBmb290ZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IF8gLT4gaG9vay5mIGNvbnRleHQgbG9jX2Zvb3RlciAoTWFueSBmb290ZXIpKVxuICAgICAgfCBOb25lIC0+IChcbiAgICAgICAgICBtYXRjaCBoZWFkZXIgQCBmb290ZXIgd2l0aFxuICAgICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgICB8IGwgLT5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgICAgICAgICBwb3NfYm9sID0gMDtcbiAgICAgICAgICAgICAgICAgIHBvc19jbnVtID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2MgPVxuICAgICAgICAgICAgICAgIHsgTG9jYXRpb24ubG9jX3N0YXJ0ID0gcG9zOyBsb2NfZW5kID0gcG9zOyBsb2NfZ2hvc3QgPSBmYWxzZSB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGhvb2suZiBjb250ZXh0IGxvYyAoTWFueSBsKSkpO1xuICAgICAgKGhlYWRlciwgZm9vdGVyKVxuICAgIGluXG4gICAgbGV0IGlucHV0X25hbWUgPVxuICAgICAgbWF0Y2ggaW5wdXRfbmFtZSB3aXRoIFNvbWUgaW5wdXRfbmFtZSAtPiBpbnB1dF9uYW1lIHwgTm9uZSAtPiBcIl9ub25lX1wiXG4gICAgaW5cbiAgICBsZXQgbWFwX2ltcGwgY3R4dCBzdF93aXRoX2F0dHJzID1cbiAgICAgIGxldCBhdHRycywgc3QgPVxuICAgICAgICBMaXN0LnNwbGl0X3doaWxlIHN0X3dpdGhfYXR0cnMgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBzdHJfZGVzYyA9IFBzdHJfYXR0cmlidXRlIF87IF8gfSAtPiB0cnVlXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3N0ciBzdCBpblxuICAgICAgbGV0IGJhc2VfY3R4dCA9XG4gICAgICAgIEV4cGFuc2lvbl9jb250ZXh0LkJhc2UudG9wX2xldmVsIH50b29sX25hbWUgfmZpbGVfcGF0aCB+aW5wdXRfbmFtZVxuICAgICAgaW5cbiAgICAgIGxldCBoZWFkZXIsIGZvb3RlciA9XG4gICAgICAgIG1hdGNoIGVuY2xvc2VfaW1wbCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoW10sIFtdKVxuICAgICAgICB8IFNvbWUgZiAtPlxuICAgICAgICAgICAgbGV0IHdob2xlX2xvYyA9XG4gICAgICAgICAgICAgIGxvY19vZl9saXN0IHN0IH5nZXRfbG9jOihmdW4gc3QgLT4gc3QuUGFyc2V0cmVlLnBzdHJfbG9jKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGdlbl9oZWFkZXJfYW5kX2Zvb3RlciBTdHJ1Y3R1cmVfaXRlbSB3aG9sZV9sb2MgKGYgYmFzZV9jdHh0KVxuICAgICAgaW5cbiAgICAgIG1hcCNzdHJ1Y3R1cmUgYmFzZV9jdHh0IChMaXN0LmNvbmNhdCBbIGF0dHJzOyBoZWFkZXI7IHN0OyBmb290ZXIgXSlcbiAgICAgID4+PSBmdW4gc3QgLT4gbWF0Y2ggaW1wbCB3aXRoIE5vbmUgLT4gcmV0dXJuIHN0IHwgU29tZSBmIC0+IGYgY3R4dCBzdFxuICAgIGluXG4gICAgbGV0IG1hcF9pbnRmIGN0eHQgc2dfd2l0aF9hdHRycyA9XG4gICAgICBsZXQgYXR0cnMsIHNnID1cbiAgICAgICAgTGlzdC5zcGxpdF93aGlsZSBzZ193aXRoX2F0dHJzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgeyBwc2lnX2Rlc2MgPSBQc2lnX2F0dHJpYnV0ZSBfOyBfIH0gLT4gdHJ1ZVxuICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgIGluXG4gICAgICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zaWcgc2cgaW5cbiAgICAgIGxldCBiYXNlX2N0eHQgPVxuICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgIGluXG4gICAgICBsZXQgaGVhZGVyLCBmb290ZXIgPVxuICAgICAgICBtYXRjaCBlbmNsb3NlX2ludGYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKFtdLCBbXSlcbiAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgIGxldCB3aG9sZV9sb2MgPVxuICAgICAgICAgICAgICBsb2Nfb2ZfbGlzdCBzZyB+Z2V0X2xvYzooZnVuIHNnIC0+IHNnLlBhcnNldHJlZS5wc2lnX2xvYylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBnZW5faGVhZGVyX2FuZF9mb290ZXIgU2lnbmF0dXJlX2l0ZW0gd2hvbGVfbG9jIChmIGJhc2VfY3R4dClcbiAgICAgIGluXG4gICAgICBtYXAjc2lnbmF0dXJlIGJhc2VfY3R4dCAoTGlzdC5jb25jYXQgWyBhdHRyczsgaGVhZGVyOyBzZzsgZm9vdGVyIF0pXG4gICAgICA+Pj0gZnVuIHNnIC0+IG1hdGNoIGludGYgd2l0aCBOb25lIC0+IHJldHVybiBzZyB8IFNvbWUgZiAtPiBmIGN0eHQgc2dcbiAgICBpblxuICAgIHsgdCB3aXRoIGltcGwgPSBTb21lIG1hcF9pbXBsOyBpbnRmID0gU29tZSBtYXBfaW50ZiB9XG5cbiAgbGV0IGJ1aWx0aW5fb2ZfY29udGV4dF9mcmVlX3Jld3JpdGVycyB+aG9vayB+cnVsZXMgfmVuY2xvc2VfaW1wbCB+ZW5jbG9zZV9pbnRmXG4gICAgICB+aW5wdXRfbmFtZSA9XG4gICAgbWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgfmhvb2sgfmlucHV0X25hbWVcbiAgICAgIHtcbiAgICAgICAgbmFtZSA9IFwiPGJ1aWx0aW46Y29udGV4dC1mcmVlPlwiO1xuICAgICAgICBhbGlhc2VzID0gW107XG4gICAgICAgIGltcGwgPSBOb25lO1xuICAgICAgICBpbnRmID0gTm9uZTtcbiAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgZW5jbG9zZV9pbXBsO1xuICAgICAgICBlbmNsb3NlX2ludGY7XG4gICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICBydWxlcztcbiAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IENhbGxlcl9pZC5nZXQgfnNraXA6W107XG4gICAgICB9XG5cbiAgbGV0IHBhcnRpdGlvbl90cmFuc2Zvcm1hdGlvbnMgdHMgPVxuICAgIGxldCBiZWZvcmVfaW5zdHJzLCBhZnRlcl9pbnN0cnMsIHJlc3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgdHMgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKGJlZl9pLCBhZnRfaSwgcmVzdCkgdCAtPlxuICAgICAgICAgIGxldCByZWR1Y2VkX3QgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0IHdpdGhcbiAgICAgICAgICAgICAgbGludF9pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbnRmID0gTm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmIGluc3RyID1cbiAgICAgICAgICAgIChpbnN0ci5JbnN0cnVtZW50LnBvc2l0aW9uLCBpbnN0ci5JbnN0cnVtZW50LnRyYW5zZm9ybWF0aW9uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggT3B0aW9uLm1hcCB0Lmluc3RydW1lbnQgfmYgd2l0aFxuICAgICAgICAgIHwgU29tZSAoQmVmb3JlLCB0cmFuc2YpIC0+XG4gICAgICAgICAgICAgICggeyByZWR1Y2VkX3Qgd2l0aCBpbXBsID0gU29tZSB0cmFuc2Y7IHJ1bGVzID0gW10gfSA6OiBiZWZfaSxcbiAgICAgICAgICAgICAgICBhZnRfaSxcbiAgICAgICAgICAgICAgICByZWR1Y2VkX3QgOjogcmVzdCApXG4gICAgICAgICAgfCBTb21lIChBZnRlciwgdHJhbnNmKSAtPlxuICAgICAgICAgICAgICAoIGJlZl9pLFxuICAgICAgICAgICAgICAgIHsgcmVkdWNlZF90IHdpdGggaW1wbCA9IFNvbWUgdHJhbnNmOyBydWxlcyA9IFtdIH0gOjogYWZ0X2ksXG4gICAgICAgICAgICAgICAgcmVkdWNlZF90IDo6IHJlc3QgKVxuICAgICAgICAgIHwgTm9uZSAtPiAoYmVmX2ksIGFmdF9pLCByZWR1Y2VkX3QgOjogcmVzdCkpXG4gICAgaW5cbiAgICAoIGBMaW50ZXJzXG4gICAgICAgIChMaXN0LmZpbHRlcl9tYXAgdHMgfmY6KGZ1biB0IC0+XG4gICAgICAgICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgdC5saW50X2ltcGwgfHwgT3B0aW9uLmlzX3NvbWUgdC5saW50X2ludGYgdGhlblxuICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiPGxpbnQ6JXM+XCIgdC5uYW1lO1xuICAgICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBpbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBpbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ltcGwgPSB0LmxpbnRfaW1wbDtcbiAgICAgICAgICAgICAgICAgICBsaW50X2ludGYgPSB0LmxpbnRfaW50ZjtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IHQucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgTm9uZSkpLFxuICAgICAgYFByZXByb2Nlc3NcbiAgICAgICAgKExpc3QuZmlsdGVyX21hcCB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgT3B0aW9uLmlzX3NvbWUgdC5wcmVwcm9jZXNzX2ltcGxcbiAgICAgICAgICAgICAgIHx8IE9wdGlvbi5pc19zb21lIHQucHJlcHJvY2Vzc19pbnRmXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbmFtZSA9IFByaW50Zi5zcHJpbnRmIFwiPHByZXByb2Nlc3M6JXM+XCIgdC5uYW1lO1xuICAgICAgICAgICAgICAgICAgIGFsaWFzZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICBpbXBsID0gdC5wcmVwcm9jZXNzX2ltcGw7XG4gICAgICAgICAgICAgICAgICAgaW50ZiA9IHQucHJlcHJvY2Vzc19pbnRmO1xuICAgICAgICAgICAgICAgICAgIGxpbnRfaW1wbCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgbGludF9pbnRmID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBlbmNsb3NlX2ltcGwgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGVuY2xvc2VfaW50ZiA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc19pbXBsID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzX2ludGYgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIGluc3RydW1lbnQgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgIHJ1bGVzID0gW107XG4gICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9hdCA9IHQucmVnaXN0ZXJlZF9hdDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGVsc2UgTm9uZSkpLFxuICAgICAgYEJlZm9yZV9pbnN0cnMgYmVmb3JlX2luc3RycyxcbiAgICAgIGBBZnRlcl9pbnN0cnMgYWZ0ZXJfaW5zdHJzLFxuICAgICAgYFJlc3QgcmVzdCApXG5lbmRcblxubW9kdWxlIFYyID0gc3RydWN0XG4gIGxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA9IFRyYW5zZm9ybS5yZWdpc3RlclxuXG4gIGxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbl91c2luZ19vY2FtbF9jdXJyZW50X2FzdCA/aW1wbCA/aW50ZiA/YWxpYXNlcyBuYW1lXG4gICAgICA9XG4gICAgbGV0IGltcGwgPVxuICAgICAgT3B0aW9uLm1hcCBpbXBsIH5mOihQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbF9tYXBwZXIgU3RydWN0dXJlKVxuICAgIGluXG4gICAgbGV0IGludGYgPVxuICAgICAgT3B0aW9uLm1hcCBpbnRmIH5mOihQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbF9tYXBwZXIgU2lnbmF0dXJlKVxuICAgIGluXG4gICAgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2ltcGwgP2ludGYgP2FsaWFzZXMgbmFtZVxuZW5kXG5cbmxldCBhZGRfY3R4dF9hcmcgKGYgOiAnYSAtPiAnYikgOiBFeHBhbnNpb25fY29udGV4dC5CYXNlLnQgLT4gJ2EgLT4gJ2IgPVxuIGZ1biBfIHggLT4gZiB4XG5cbmxldCByZWdpc3Rlcl90cmFuc2Zvcm1hdGlvbiA/ZXh0ZW5zaW9ucyA/cnVsZXMgP2VuY2xvc2VfaW1wbCA/ZW5jbG9zZV9pbnRmID9pbXBsXG4gICAgP2ludGYgP2xpbnRfaW1wbCA/bGludF9pbnRmID9wcmVwcm9jZXNzX2ltcGwgP3ByZXByb2Nlc3NfaW50ZiA9XG4gIGxldCBpbXBsID0gT3B0aW9uLm1hcCBpbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgaW50ZiA9IE9wdGlvbi5tYXAgaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IHByZXByb2Nlc3NfaW1wbCA9IE9wdGlvbi5tYXAgcHJlcHJvY2Vzc19pbXBsIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgcHJlcHJvY2Vzc19pbnRmID0gT3B0aW9uLm1hcCBwcmVwcm9jZXNzX2ludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBsaW50X2ltcGwgPSBPcHRpb24ubWFwIGxpbnRfaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGxpbnRfaW50ZiA9IE9wdGlvbi5tYXAgbGludF9pbnRmIH5mOmFkZF9jdHh0X2FyZyBpblxuICBsZXQgZW5jbG9zZV9pbXBsID0gT3B0aW9uLm1hcCBlbmNsb3NlX2ltcGwgfmY6YWRkX2N0eHRfYXJnIGluXG4gIGxldCBlbmNsb3NlX2ludGYgPSBPcHRpb24ubWFwIGVuY2xvc2VfaW50ZiB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgVjIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gP2V4dGVuc2lvbnMgP3J1bGVzID9lbmNsb3NlX2ltcGwgP2VuY2xvc2VfaW50ZlxuICAgID9pbXBsID9pbnRmID9saW50X2ltcGwgP2xpbnRfaW50ZiA/cHJlcHJvY2Vzc19pbXBsID9wcmVwcm9jZXNzX2ludGZcblxubGV0IHJlZ2lzdGVyX2NvZGVfdHJhbnNmb3JtYXRpb24gfm5hbWUgPyhhbGlhc2VzID0gW10pIH5pbXBsIH5pbnRmID1cbiAgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gbmFtZSB+aW1wbCB+aW50ZiB+YWxpYXNlc1xuW0BAd2FybmluZyBcIi0xNlwiXVxuKCogVGhpcyBmdW5jdGlvbiB0cmlnZ2VycyBhIHdhcm5pbmcgMTYgYXMgb2Ygb2NhbWwgNC4xMiAqKVxuXG5sZXQgcmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25fdXNpbmdfb2NhbWxfY3VycmVudF9hc3QgP2ltcGwgP2ludGYgPVxuICBsZXQgaW1wbCA9IE9wdGlvbi5tYXAgaW1wbCB+ZjphZGRfY3R4dF9hcmcgaW5cbiAgbGV0IGludGYgPSBPcHRpb24ubWFwIGludGYgfmY6YWRkX2N0eHRfYXJnIGluXG4gIFYyLnJlZ2lzdGVyX3RyYW5zZm9ybWF0aW9uX3VzaW5nX29jYW1sX2N1cnJlbnRfYXN0ID9pbXBsID9pbnRmXG5cbmxldCBkZWJ1Z19kcm9wcGVkX2F0dHJpYnV0ZSBuYW1lIH5vbGRfZHJvcHBlZCB+bmV3X2Ryb3BwZWQgPVxuICBsZXQgcHJpbnRfZGlmZiB3aGF0IGEgYiA9XG4gICAgbGV0IGRpZmYgPVxuICAgICAgTGlzdC5maWx0ZXIgYSB+ZjooZnVuIChuYW1lIDogXyBMb2MudCkgLT5cbiAgICAgICAgICBub3RcbiAgICAgICAgICAgIChMaXN0LmV4aXN0cyBiIH5mOihmdW4gKG5hbWUnIDogXyBMb2NhdGlvbi5sb2MpIC0+XG4gICAgICAgICAgICAgICAgIG5hbWUudHh0ID09IG5hbWUnLnR4dCkpKVxuICAgIGluXG4gICAgaWYgbm90IChMaXN0LmlzX2VtcHR5IGRpZmYpIHRoZW4gKFxuICAgICAgUHJpbnRmLmVwcmludGYgXCJUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgJXMgYWZ0ZXIgYXBwbHlpbmcgJXM6XFxuXCIgd2hhdFxuICAgICAgICBuYW1lO1xuICAgICAgTGlzdC5pdGVyIGRpZmYgfmY6KGZ1biB7IExvY2F0aW9uLnR4dDsgbG9jIH0gLT5cbiAgICAgICAgICBTdGRsaWIuRm9ybWF0LmVwcmludGYgXCItICVhOiAlc1xcblwiIExvY2F0aW9uLnByaW50IGxvYyB0eHQpO1xuICAgICAgU3RkbGliLkZvcm1hdC5lcHJpbnRmIFwiQC5cIilcbiAgaW5cbiAgcHJpbnRfZGlmZiBcImRpc2FwcGVhcmVkXCIgbmV3X2Ryb3BwZWQgb2xkX2Ryb3BwZWQ7XG4gIHByaW50X2RpZmYgXCJyZWFwcGVhcmVkXCIgb2xkX2Ryb3BwZWQgbmV3X2Ryb3BwZWRcblxubGV0IGdldF93aG9sZV9hc3RfcGFzc2VzIH5lbWJlZF9lcnJvcnMgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH50b29sX25hbWVcbiAgICB+aW5wdXRfbmFtZSA9XG4gIGxldCBjdHMgPVxuICAgIG1hdGNoICFhcHBseV9saXN0IHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5yZXYgIVRyYW5zZm9ybS5hbGxcbiAgICB8IFNvbWUgbmFtZXMgLT5cbiAgICAgICAgTGlzdC5tYXAgbmFtZXMgfmY6KGZ1biBuYW1lIC0+XG4gICAgICAgICAgICBMaXN0LmZpbmQgIVRyYW5zZm9ybS5hbGwgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm0uaGFzX25hbWUgY3QgbmFtZSkpXG4gIGluXG4gIGxldCAoIGBMaW50ZXJzIGxpbnRlcnMsXG4gICAgICAgIGBQcmVwcm9jZXNzIHByZXByb2Nlc3MsXG4gICAgICAgIGBCZWZvcmVfaW5zdHJzIGJlZm9yZV9pbnN0cnMsXG4gICAgICAgIGBBZnRlcl9pbnN0cnMgYWZ0ZXJfaW5zdHJzLFxuICAgICAgICBgUmVzdCBjdHMgKSA9XG4gICAgVHJhbnNmb3JtLnBhcnRpdGlvbl90cmFuc2Zvcm1hdGlvbnMgY3RzXG4gIGluXG4gICgqIEFsbG93IG9ubHkgb25lIHByZXByb2Nlc3NvciB0byBhc3N1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlciAqKVxuICAoaWYgTGlzdC5sZW5ndGggcHJlcHJvY2VzcyA+IDEgdGhlblxuICAgICBsZXQgcHAgPVxuICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKExpc3QubWFwIHByZXByb2Nlc3MgfmY6KGZ1biB0IC0+IHQubmFtZSkpXG4gICAgIGluXG4gICAgIGxldCBlcnIgPVxuICAgICAgIFByaW50Zi5zcHJpbnRmIFwiQXQgbW9zdCBvbmUgcHJlcHJvY2Vzc29yIGlzIGFsbG93ZWQsIHdoaWxlIGdvdDogJXNcIiBwcFxuICAgICBpblxuICAgICBmYWlsd2l0aCBlcnIpO1xuICBsZXQgbWFrZV9nZW5lcmljIHRyYW5zZm9ybXMgPVxuICAgIGlmICFub19tZXJnZSB0aGVuXG4gICAgICBMaXN0Lm1hcCB0cmFuc2Zvcm1zXG4gICAgICAgIH5mOlxuICAgICAgICAgIChUcmFuc2Zvcm0ubWVyZ2VfaW50b19nZW5lcmljX21hcHBlcnMgfmVtYmVkX2Vycm9ycyB+aG9vayB+dG9vbF9uYW1lXG4gICAgICAgICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lKVxuICAgIGVsc2VcbiAgICAgIChsZXQgZ2V0X2VuY2xvc2VycyB+ZiA9XG4gICAgICAgICBMaXN0LmZpbHRlcl9tYXAgdHJhbnNmb3JtcyB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIGYgY3Qgd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoY3QubmFtZSwgeCkpXG4gICAgICAgICAoKiBTb3J0IHRoZW0gdG8gZW5zdXJlIGRldGVybWluaXN0aWMgb3JkZXJpbmcgKilcbiAgICAgICAgIHw+IExpc3Quc29ydCB+Y21wOihmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpXG4gICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgICBpblxuXG4gICAgICAgbGV0IHJ1bGVzID1cbiAgICAgICAgIExpc3QubWFwIHRyYW5zZm9ybXMgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QucnVsZXMpXG4gICAgICAgICB8PiBMaXN0LmNvbmNhdFxuICAgICAgIGFuZCBpbXBsX2VuY2xvc2VycyA9IGdldF9lbmNsb3NlcnMgfmY6KGZ1biBjdCAtPiBjdC5lbmNsb3NlX2ltcGwpXG4gICAgICAgYW5kIGludGZfZW5jbG9zZXJzID0gZ2V0X2VuY2xvc2VycyB+ZjooZnVuIGN0IC0+IGN0LmVuY2xvc2VfaW50ZikgaW5cbiAgICAgICBtYXRjaCAocnVsZXMsIGltcGxfZW5jbG9zZXJzLCBpbnRmX2VuY2xvc2Vycykgd2l0aFxuICAgICAgIHwgW10sIFtdLCBbXSAtPiB0cmFuc2Zvcm1zXG4gICAgICAgfCBfIC0+XG4gICAgICAgICAgIGxldCBtZXJnZV9lbmNsb3NlciA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgfCBlbmNsb3NlcnMgLT5cbiAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgIChmdW4gY3R4dCBsb2MgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBoZWFkZXJzLCBmb290ZXJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXAgZW5jbG9zZXJzIH5mOihmdW4gZiAtPiBmIGN0eHQgbG9jKSB8PiBMaXN0LnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcnMgPSBMaXN0LmNvbmNhdCBoZWFkZXJzIGluXG4gICAgICAgICAgICAgICAgICAgICBsZXQgZm9vdGVycyA9IExpc3QuY29uY2F0IChMaXN0LnJldiBmb290ZXJzKSBpblxuICAgICAgICAgICAgICAgICAgICAgKGhlYWRlcnMsIGZvb3RlcnMpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBUcmFuc2Zvcm0uYnVpbHRpbl9vZl9jb250ZXh0X2ZyZWVfcmV3cml0ZXJzIH5ydWxlcyB+ZW1iZWRfZXJyb3JzXG4gICAgICAgICAgICAgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICAgfmVuY2xvc2VfaW1wbDoobWVyZ2VfZW5jbG9zZXIgaW1wbF9lbmNsb3NlcnMpXG4gICAgICAgICAgICAgfmVuY2xvc2VfaW50ZjoobWVyZ2VfZW5jbG9zZXIgaW50Zl9lbmNsb3NlcnMpXG4gICAgICAgICAgICAgfnRvb2xfbmFtZSB+aW5wdXRfbmFtZVxuICAgICAgICAgICA6OiB0cmFuc2Zvcm1zKVxuICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT5cbiAgICAgICAgICAgICBtYXRjaCAoY3QuaW1wbCwgY3QuaW50Zikgd2l0aCBOb25lLCBOb25lIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICBpblxuICBsaW50ZXJzIEAgcHJlcHJvY2VzcyBAIGJlZm9yZV9pbnN0cnMgQCBtYWtlX2dlbmVyaWMgY3RzIEAgYWZ0ZXJfaW5zdHJzXG5cbmxldCBhcHBseV90cmFuc2Zvcm1zIH50b29sX25hbWUgfmZpbGVfcGF0aCB+ZmllbGQgfmxpbnRfZmllbGQgfmRyb3BwZWRfc29fZmFyXG4gICAgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnMgYXN0ID1cbiAgbGV0IGN0cyA9XG4gICAgZ2V0X3dob2xlX2FzdF9wYXNzZXMgfnRvb2xfbmFtZSB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgfmlucHV0X25hbWVcbiAgaW5cbiAgbGV0IGZpbmlzaCAoYXN0LCBfZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycykgPVxuICAgICggYXN0LFxuICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnMgfmY6KGZ1biAobG9jLCBzKSAtPlxuICAgICAgICAgIENvbW1vbi5hdHRyaWJ1dGVfb2Zfd2FybmluZyBsb2MgcyksXG4gICAgICBlcnJvcnMgKVxuICBpblxuICBsZXQgYWNjID1cbiAgICBMaXN0LmZvbGRfbGVmdCBjdHMgfmluaXQ6KGFzdCwgW10sIFtdLCBbXSlcbiAgICAgIH5mOihmdW5cbiAgICAgICAgICAoYXN0LCBkcm9wcGVkLCAobGludF9lcnJvcnMgOiBfIGxpc3QpLCBlcnJvcnMpIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICBsZXQgaW5wdXRfbmFtZSA9XG4gICAgICAgICAgbWF0Y2ggaW5wdXRfbmFtZSB3aXRoXG4gICAgICAgICAgfCBTb21lIGlucHV0X25hbWUgLT4gaW5wdXRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiBcIl9ub25lX1wiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjdHh0ID1cbiAgICAgICAgICBFeHBhbnNpb25fY29udGV4dC5CYXNlLnRvcF9sZXZlbCB+dG9vbF9uYW1lIH5maWxlX3BhdGggfmlucHV0X25hbWVcbiAgICAgICAgaW5cblxuICAgICAgICBsZXQgbGludF9lcnJvcnMsIGVycm9ycyA9XG4gICAgICAgICAgbWF0Y2ggbGludF9maWVsZCBjdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IChsaW50X2Vycm9ycywgZXJyb3JzKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IChsaW50X2Vycm9ycyBAIGYgY3R4dCBhc3QsIGVycm9ycylcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAobGludF9lcnJvcnMsIGV4bl90b19sb2NfZXJyb3IgZXhuIDo6IGVycm9ycykpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGZpZWxkIGN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChhc3QsIGRyb3BwZWQsIGxpbnRfZXJyb3JzLCBlcnJvcnMpXG4gICAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgICAgICBsZXQgKGFzdCwgbW9yZV9lcnJvcnMpLCBlcnJvcnMgPVxuICAgICAgICAgICAgICB0cnkgKGYgY3R4dCBhc3QsIGVycm9ycylcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBlbWJlZF9lcnJvcnMgLT5cbiAgICAgICAgICAgICAgICAoKGFzdCwgW10pLCBleG5fdG9fbG9jX2Vycm9yIGV4biA6OiBlcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGRyb3BwZWQgPVxuICAgICAgICAgICAgICBpZiAhZGVidWdfYXR0cmlidXRlX2Ryb3AgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IG5ld19kcm9wcGVkID0gZHJvcHBlZF9zb19mYXIgYXN0IGluXG4gICAgICAgICAgICAgICAgZGVidWdfZHJvcHBlZF9hdHRyaWJ1dGUgY3QubmFtZSB+b2xkX2Ryb3BwZWQ6ZHJvcHBlZFxuICAgICAgICAgICAgICAgICAgfm5ld19kcm9wcGVkO1xuICAgICAgICAgICAgICAgIG5ld19kcm9wcGVkKVxuICAgICAgICAgICAgICBlbHNlIFtdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKGFzdCwgZHJvcHBlZCwgbGludF9lcnJvcnMsIGVycm9ycyBAIG1vcmVfZXJyb3JzKSlcbiAgaW5cbiAgZmluaXNoIGFjY1xuXG4oKiQqKVxuXG5sZXQgZXJyb3JfdG9fc3RyX2V4dGVuc2lvbiBlcnJvciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBleHQgPSBMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IgaW5cbiAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jIGV4dCBbXVxuXG4oKiQgc3RyX3RvX3NpZyBfbGFzdF90ZXh0X2Jsb2NrICopXG5cbmxldCBlcnJvcl90b19zaWdfZXh0ZW5zaW9uIGVycm9yID1cbiAgbGV0IGxvYyA9IExvY2F0aW9uLm5vbmUgaW5cbiAgbGV0IGV4dCA9IExvY2F0aW9uLkVycm9yLnRvX2V4dGVuc2lvbiBlcnJvciBpblxuICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2MgZXh0IFtdXG5cbigqJCopXG5cbmxldCBlcnJvcl90b19leHRlbnNpb24gZXJyb3IgfihraW5kIDogS2luZC50KSA9XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IEludGYgLT4gSW50Zl9vcl9pbXBsLkludGYgWyBlcnJvcl90b19zaWdfZXh0ZW5zaW9uIGVycm9yIF1cbiAgfCBJbXBsIC0+IEludGZfb3JfaW1wbC5JbXBsIFsgZXJyb3JfdG9fc3RyX2V4dGVuc2lvbiBlcnJvciBdXG5cbmxldCBleG5fdG9fZXh0ZW5zaW9uIGV4biB+KGtpbmQgOiBLaW5kLnQpID1cbiAgZXhuX3RvX2xvY19lcnJvciBleG4gfD4gZXJyb3JfdG9fZXh0ZW5zaW9uIH5raW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgQWN0dWFsIHJld3JpdGluZyBvZiBzdHJ1Y3R1cmUvc2lnbmF0dXJlcyAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHByaW50X3Bhc3NlcyAoKSA9XG4gIGxldCB0b29sX25hbWUgPSBcInBweGxpYl9kcml2ZXJcIiBpblxuICBsZXQgZW1iZWRfZXJyb3JzID0gZmFsc2UgaW5cbiAgbGV0IGhvb2sgPSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3AgaW5cbiAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyID0gQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcCBpblxuICBsZXQgY3RzID1cbiAgICBnZXRfd2hvbGVfYXN0X3Bhc3NlcyB+ZW1iZWRfZXJyb3JzIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+dG9vbF9uYW1lXG4gICAgICB+aW5wdXRfbmFtZTpOb25lXG4gIGluXG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuXG4gICAgUHJpbnRmLnByaW50ZiBcIjxidWlsdGluOmZyZXNoZW4tYW5kLWNvbGxlY3QtYXR0cmlidXRlcz5cXG5cIjtcbiAgTGlzdC5pdGVyIGN0cyB+ZjooZnVuIGN0IC0+IFByaW50Zi5wcmludGYgXCIlc1xcblwiIGN0LlRyYW5zZm9ybS5uYW1lKTtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIFByaW50Zi5wcmludGYgXCI8YnVpbHRpbjpjaGVjay11bnVzZWQtYXR0cmlidXRlcz5cXG5cIjtcbiAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICBQcmludGYucHJpbnRmIFwiPGJ1aWx0aW46Y2hlY2stdW51c2VkLWV4dGVuc2lvbnM+XFxuXCIpXG5cbmxldCBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzID1cbiAgTGlzdC5zb3J0IGVycm9ycyB+Y21wOihmdW4gZXJyb3IgZXJyb3InIC0+XG4gICAgICBsZXQgbG9jID0gTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yIGluXG4gICAgICBsZXQgbG9jJyA9IExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcicgaW5cbiAgICAgIExvY2F0aW9uLmNvbXBhcmUgbG9jIGxvYycpXG5cbigqJCopXG5cbmxldCBtYXBfc3RydWN0dXJlX2dlbiBzdCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlciB+aW5wdXRfbmFtZVxuICAgIH5lbWJlZF9lcnJvcnMgPVxuICBDb29raWVzLmFja25vd2xlZGdlX2Nvb2tpZXMgVDtcbiAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgIEF0dHJpYnV0ZS5yZXNldF9jaGVja3MgKCk7XG4gICAgQXR0cmlidXRlLmNvbGxlY3Qjc3RydWN0dXJlIHN0KTtcbiAgbGV0IGxpbnQgbGludF9lcnJvcnMgc3QgPVxuICAgIGxldCBzdCA9XG4gICAgICBtYXRjaCBsaW50X2Vycm9ycyB3aXRoXG4gICAgICB8IFtdIC0+IHN0XG4gICAgICB8IF8gLT5cbiAgICAgICAgICBMaXN0Lm1hcCBsaW50X2Vycm9yc1xuICAgICAgICAgICAgfmY6KGZ1biAoeyBhdHRyX25hbWUgPSB7IGxvYzsgXyB9OyBfIH0gYXMgYXR0cikgLT5cbiAgICAgICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2F0dHJpYnV0ZSB+bG9jIGF0dHIpXG4gICAgICAgICAgQCBzdFxuICAgIGluXG4gICAgc3RcbiAgaW5cbiAgbGV0IHdpdGhfZXJyb3JzIGVycm9ycyBzdCA9XG4gICAgbGV0IHNvcnRlZCA9IHNvcnRfZXJyb3JzX2J5X2xvYyBlcnJvcnMgaW5cbiAgICBMaXN0Lm1hcCBzb3J0ZWQgfmY6KGZ1biBlcnJvciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgICAgICAgfmxvYzooTG9jYXRpb24uRXJyb3IuZ2V0X2xvY2F0aW9uIGVycm9yKVxuICAgICAgICAgIChMb2NhdGlvbi5FcnJvci50b19leHRlbnNpb24gZXJyb3IpXG4gICAgICAgICAgW11cbiAgICAgICAgfD4gZ2hvc3Qjc3RydWN0dXJlX2l0ZW0pXG4gICAgQCBzdFxuICBpblxuICBsZXQgY29va2llc19hbmRfY2hlY2sgc3QgPVxuICAgIENvb2tpZXMuY2FsbF9wb3N0X2hhbmRsZXJzIFQ7XG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBpZiAhcGVyZm9ybV9jaGVja3MgdGhlbiAoXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR3byBwYXNzZXMgY291bGQgYmUgbWVyZ2VkLCB3ZSBub3cgaGF2ZSBtb3JlIHBhc3NlcyBmb3JcbiAgICAgICAgICAgY2hlY2tzIHRoYW4gZm9yIGFjdHVhbCByZXdyaXRpbmcuICopXG4gICAgICAgIGxldCB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgPVxuICAgICAgICAgIEF0dHJpYnV0ZS5jb2xsZWN0X3VudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyNzdHJ1Y3R1cmUgc3QgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVudXNlZF9leHRlbnNpb25fZXJyb3JzID1cbiAgICAgICAgICBpZiAhcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyB0aGVuXG4gICAgICAgICAgICBFeHRlbnNpb24uY29sbGVjdF91bmhhbmRsZWRfZXh0ZW5zaW9uX2Vycm9ycyNzdHJ1Y3R1cmUgc3QgW11cbiAgICAgICAgICBlbHNlIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBub3Rfc2Vlbl9lcnJvcnMgPSBBdHRyaWJ1dGUuY29sbGVjdF91bnNlZW5fZXJyb3JzICgpIGluXG4gICAgICAgIChpZiAhcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgdGhlblxuICAgICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbl9jaGVjayBpblxuICAgICAgICAgICBpZ25vcmVcbiAgICAgICAgICAgICAoKGVuZm9yY2VfaW52YXJpYW50cyAhbG9jX2ZuYW1lKSNzdHJ1Y3R1cmUgc3RcbiAgICAgICAgICAgICAgICBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy5lbXB0eVxuICAgICAgICAgICAgICAgOiBOb25faW50ZXJzZWN0aW5nX3Jhbmdlcy50KSk7XG4gICAgICAgIHVudXNlZF9hdHRyaWJ1dGVzX2Vycm9ycyBAIHVudXNlZF9leHRlbnNpb25fZXJyb3JzIEAgbm90X3NlZW5fZXJyb3JzKVxuICAgICAgZWxzZSBbXVxuICAgIGluXG4gICAgd2l0aF9lcnJvcnMgZXJyb3JzIHN0XG4gIGluXG4gIGxldCBmaWxlX3BhdGggPSBnZXRfZGVmYXVsdF9wYXRoX3N0ciBzdCBpblxuICBsZXQgc3QsIGxpbnRfZXJyb3JzLCBlcnJvcnMgPVxuICAgIGFwcGx5X3RyYW5zZm9ybXMgc3QgfnRvb2xfbmFtZSB+ZmlsZV9wYXRoXG4gICAgICB+ZmllbGQ6KGZ1biAoY3QgOiBUcmFuc2Zvcm0udCkgLT4gY3QuaW1wbClcbiAgICAgIH5saW50X2ZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmxpbnRfaW1wbClcbiAgICAgIH5kcm9wcGVkX3NvX2ZhcjpBdHRyaWJ1dGUuZHJvcHBlZF9zb19mYXJfc3RydWN0dXJlIH5ob29rXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWUgfmVtYmVkX2Vycm9yc1xuICBpblxuICBzdCB8PiBsaW50IGxpbnRfZXJyb3JzIHw+IGNvb2tpZXNfYW5kX2NoZWNrIHw+IHdpdGhfZXJyb3JzIChMaXN0LnJldiBlcnJvcnMpXG5cbmxldCBtYXBfc3RydWN0dXJlIHN0ID1cbiAgbWF0Y2hcbiAgICBtYXBfc3RydWN0dXJlX2dlbiBzdFxuICAgICAgfnRvb2xfbmFtZTooQXN0bGliLkFzdF9tZXRhZGF0YS50b29sX25hbWUgKCkpXG4gICAgICB+aG9vazpDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgICAgIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlcjpDb250ZXh0X2ZyZWUuRXhwZWN0X21pc21hdGNoX2hhbmRsZXIubm9wXG4gICAgICB+aW5wdXRfbmFtZTpOb25lIH5lbWJlZF9lcnJvcnM6ZmFsc2VcbiAgd2l0aFxuICB8IGFzdCAtPiBhc3RcblxuKCokIHN0cl90b19zaWcgX2xhc3RfdGV4dF9ibG9jayAqKVxuXG5sZXQgbWFwX3NpZ25hdHVyZV9nZW4gc2cgfnRvb2xfbmFtZSB+aG9vayB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXIgfmlucHV0X25hbWVcbiAgICB+ZW1iZWRfZXJyb3JzID1cbiAgQ29va2llcy5hY2tub3dsZWRnZV9jb29raWVzIFQ7XG4gIGlmICFwZXJmb3JtX2NoZWNrcyB0aGVuIChcbiAgICBBdHRyaWJ1dGUucmVzZXRfY2hlY2tzICgpO1xuICAgIEF0dHJpYnV0ZS5jb2xsZWN0I3NpZ25hdHVyZSBzZyk7XG4gIGxldCBsaW50IGxpbnRfZXJyb3JzIHNnID1cbiAgICBsZXQgc2cgPVxuICAgICAgbWF0Y2ggbGludF9lcnJvcnMgd2l0aFxuICAgICAgfCBbXSAtPiBzZ1xuICAgICAgfCBfIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbGludF9lcnJvcnNcbiAgICAgICAgICAgIH5mOihmdW4gKHsgYXR0cl9uYW1lID0geyBsb2M7IF8gfTsgXyB9IGFzIGF0dHIpIC0+XG4gICAgICAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHNpZ19hdHRyaWJ1dGUgfmxvYyBhdHRyKVxuICAgICAgICAgIEAgc2dcbiAgICBpblxuICAgIHNnXG4gIGluXG4gIGxldCB3aXRoX2Vycm9ycyBlcnJvcnMgc2cgPVxuICAgIGxldCBzb3J0ZWQgPSBzb3J0X2Vycm9yc19ieV9sb2MgZXJyb3JzIGluXG4gICAgTGlzdC5tYXAgc29ydGVkIH5mOihmdW4gZXJyb3IgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgICAgICAgIH5sb2M6KExvY2F0aW9uLkVycm9yLmdldF9sb2NhdGlvbiBlcnJvcilcbiAgICAgICAgICAoTG9jYXRpb24uRXJyb3IudG9fZXh0ZW5zaW9uIGVycm9yKVxuICAgICAgICAgIFtdXG4gICAgICAgIHw+IGdob3N0I3NpZ25hdHVyZV9pdGVtKVxuICAgIEAgc2dcbiAgaW5cbiAgbGV0IGNvb2tpZXNfYW5kX2NoZWNrIHNnID1cbiAgICBDb29raWVzLmNhbGxfcG9zdF9oYW5kbGVycyBUO1xuICAgIGxldCBlcnJvcnMgPVxuICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzIHRoZW4gKFxuICAgICAgICAoKiBUT0RPOiB0aGVzZSB0d28gcGFzc2VzIGNvdWxkIGJlIG1lcmdlZCwgd2Ugbm93IGhhdmUgbW9yZSBwYXNzZXMgZm9yXG4gICAgICAgICAgIGNoZWNrcyB0aGFuIGZvciBhY3R1YWwgcmV3cml0aW5nLiAqKVxuICAgICAgICBsZXQgdW51c2VkX2F0dHJpYnV0ZXNfZXJyb3JzID1cbiAgICAgICAgICBBdHRyaWJ1dGUuY29sbGVjdF91bnVzZWRfYXR0cmlidXRlc19lcnJvcnMjc2lnbmF0dXJlIHNnIFtdXG4gICAgICAgIGluXG4gICAgICAgIGxldCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyA9XG4gICAgICAgICAgaWYgIXBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgdGhlblxuICAgICAgICAgICAgRXh0ZW5zaW9uLmNvbGxlY3RfdW5oYW5kbGVkX2V4dGVuc2lvbl9lcnJvcnMjc2lnbmF0dXJlIHNnIFtdXG4gICAgICAgICAgZWxzZSBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgbm90X3NlZW5fZXJyb3JzID0gQXR0cmlidXRlLmNvbGxlY3RfdW5zZWVuX2Vycm9ycyAoKSBpblxuICAgICAgICAoaWYgIXBlcmZvcm1fbG9jYXRpb25zX2NoZWNrIHRoZW5cbiAgICAgICAgICAgbGV0IG9wZW4gTG9jYXRpb25fY2hlY2sgaW5cbiAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgKChlbmZvcmNlX2ludmFyaWFudHMgIWxvY19mbmFtZSkjc2lnbmF0dXJlIHNnXG4gICAgICAgICAgICAgICAgTm9uX2ludGVyc2VjdGluZ19yYW5nZXMuZW1wdHlcbiAgICAgICAgICAgICAgIDogTm9uX2ludGVyc2VjdGluZ19yYW5nZXMudCkpO1xuICAgICAgICB1bnVzZWRfYXR0cmlidXRlc19lcnJvcnMgQCB1bnVzZWRfZXh0ZW5zaW9uX2Vycm9ycyBAIG5vdF9zZWVuX2Vycm9ycylcbiAgICAgIGVsc2UgW11cbiAgICBpblxuICAgIHdpdGhfZXJyb3JzIGVycm9ycyBzZ1xuICBpblxuICBsZXQgZmlsZV9wYXRoID0gZ2V0X2RlZmF1bHRfcGF0aF9zaWcgc2cgaW5cbiAgbGV0IHNnLCBsaW50X2Vycm9ycywgZXJyb3JzID1cbiAgICBhcHBseV90cmFuc2Zvcm1zIHNnIH50b29sX25hbWUgfmZpbGVfcGF0aFxuICAgICAgfmZpZWxkOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+IGN0LmludGYpXG4gICAgICB+bGludF9maWVsZDooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPiBjdC5saW50X2ludGYpXG4gICAgICB+ZHJvcHBlZF9zb19mYXI6QXR0cmlidXRlLmRyb3BwZWRfc29fZmFyX3NpZ25hdHVyZSB+aG9va1xuICAgICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5pbnB1dF9uYW1lIH5lbWJlZF9lcnJvcnNcbiAgaW5cbiAgc2cgfD4gbGludCBsaW50X2Vycm9ycyB8PiBjb29raWVzX2FuZF9jaGVjayB8PiB3aXRoX2Vycm9ycyAoTGlzdC5yZXYgZXJyb3JzKVxuXG5sZXQgbWFwX3NpZ25hdHVyZSBzZyA9XG4gIG1hdGNoXG4gICAgbWFwX3NpZ25hdHVyZV9nZW4gc2dcbiAgICAgIH50b29sX25hbWU6KEFzdGxpYi5Bc3RfbWV0YWRhdGEudG9vbF9uYW1lICgpKVxuICAgICAgfmhvb2s6Q29udGV4dF9mcmVlLkdlbmVyYXRlZF9jb2RlX2hvb2subm9wXG4gICAgICB+ZXhwZWN0X21pc21hdGNoX2hhbmRsZXI6Q29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLm5vcFxuICAgICAgfmlucHV0X25hbWU6Tm9uZSB+ZW1iZWRfZXJyb3JzOmZhbHNlXG4gIHdpdGhcbiAgfCBhc3QgLT4gYXN0XG5cbigqJCopXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgRW50cnkgcG9pbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IHN0cmluZ19jb250YWluc19iaW5hcnlfYXN0IHMgPVxuICBsZXQgdGVzdCBtYWdpY19udW1iZXIgPVxuICAgIFN0cmluZy5pc19wcmVmaXggcyB+cHJlZml4OihTdHJpbmcuc3ViIG1hZ2ljX251bWJlciB+cG9zOjAgfmxlbjo5KVxuICBpblxuICB0ZXN0IEFzdF9tYWdpYy5hc3RfaW50Zl9tYWdpY19udW1iZXIgfHwgdGVzdCBBc3RfbWFnaWMuYXN0X2ltcGxfbWFnaWNfbnVtYmVyXG5cbmxldCB2ZXJzaW9uZWRfZXJyb3JmIGlucHV0X3ZlcnNpb24gaW5wdXRfZmlsZV9uYW1lID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gbXNnIC0+XG4gICAgICBsZXQgZXJyID1cbiAgICAgICAgTG9jYXRpb24uRXJyb3IubWFrZSB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGlucHV0X2ZpbGVfbmFtZSkgbXNnIH5zdWI6W11cbiAgICAgIGluXG4gICAgICBFcnJvciAoZXJyLCBpbnB1dF92ZXJzaW9uKSlcblxubGV0IHJlbW92ZV9ub19lcnJvciBmbiA9IHRyeSBTdGRsaWIuU3lzLnJlbW92ZSBmbiB3aXRoIFN5c19lcnJvciBfIC0+ICgpXG5cbmxldCBwcm90ZWN0eCB4IH5mIH5maW5hbGx5ID1cbiAgbWF0Y2ggZiB4IHdpdGhcbiAgfCB2IC0+XG4gICAgICBmaW5hbGx5IHg7XG4gICAgICB2XG4gIHwgZXhjZXB0aW9uIGUgLT5cbiAgICAgIGZpbmFsbHkgeDtcbiAgICAgIHJhaXNlIGVcblxubGV0IHdpdGhfcHJlcHJvY2Vzc2VkX2ZpbGUgZm4gfmYgPVxuICBtYXRjaCAhcHJlcHJvY2Vzc29yIHdpdGhcbiAgfCBOb25lIC0+IGYgZm5cbiAgfCBTb21lIHBwIC0+XG4gICAgICBwcm90ZWN0eCAoU3RkbGliLkZpbGVuYW1lLnRlbXBfZmlsZSBcIm9jYW1scHBcIiBcIlwiKSB+ZmluYWxseTpyZW1vdmVfbm9fZXJyb3JcbiAgICAgICAgfmY6KGZ1biB0bXBmaWxlIC0+XG4gICAgICAgICAgbWF0Y2ggU3lzdGVtLnJ1bl9wcmVwcm9jZXNzb3IgfnBwIH5pbnB1dDpmbiB+b3V0cHV0OnRtcGZpbGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gZiB0bXBmaWxlXG4gICAgICAgICAgfCBFcnJvciAoZmFpbGVkX2NvbW1hbmQsIGZhbGxfYmFja192ZXJzaW9uKSAtPlxuICAgICAgICAgICAgICB2ZXJzaW9uZWRfZXJyb3JmIGZhbGxfYmFja192ZXJzaW9uIGZuXG4gICAgICAgICAgICAgICAgXCJFcnJvciB3aGlsZSBydW5uaW5nIGV4dGVybmFsIHByZXByb2Nlc3NvclxcbkNvbW1hbmQgbGluZTogJXNcXG5cIlxuICAgICAgICAgICAgICAgIGZhaWxlZF9jb21tYW5kKVxuXG5sZXQgcmVsb2NhdGVfbWFwcGVyID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbc3RyaW5nICogc3RyaW5nXSBBc3RfdHJhdmVyc2UubWFwX3dpdGhfY29udGV4dFxuXG4gICAgbWV0aG9kISBwb3NpdGlvbiAob2xkX2ZuLCBuZXdfZm4pIHBvcyA9XG4gICAgICBpZiBTdHJpbmcuZXF1YWwgcG9zLnBvc19mbmFtZSBvbGRfZm4gdGhlbiB7IHBvcyB3aXRoIHBvc19mbmFtZSA9IG5ld19mbiB9XG4gICAgICBlbHNlIHBvc1xuICBlbmRcblxuKCogU2V0IHRoZSBpbnB1dCBuYW1lIGdsb2JhbGx5LiBUaGlzIGlzIHVzZWQgYnkgc29tZSBwcHggcmV3cml0ZXJzXG4gICBzdWNoIGFzIGJpc2VjdF9wcHguICopXG5sZXQgc2V0X2lucHV0X25hbWUgPSBBc3RsaWIuTG9jYXRpb24uc2V0X2lucHV0X25hbWVcblxubGV0IGxvYWRfaW5wdXQgfihraW5kIDogS2luZC50KSB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgZm4gPVxuICBzZXRfaW5wdXRfbmFtZSBpbnB1dF9uYW1lO1xuICBsZXQgaW5wdXRfc291cmNlID0gaWYgU3RyaW5nLmVxdWFsIGZuIFwiLVwiIHRoZW4gQXN0X2lvLlN0ZGluIGVsc2UgRmlsZSBmbiBpblxuICBsZXQgaW5wdXRfa2luZCA9IEFzdF9pby5Qb3NzaWJseV9zb3VyY2UgKGtpbmQsIGlucHV0X25hbWUpIGluXG4gIG1hdGNoIEFzdF9pby5yZWFkIGlucHV0X3NvdXJjZSB+aW5wdXRfa2luZCB3aXRoXG4gIHwgT2sgeyBpbnB1dF9uYW1lID0gYXN0X2lucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IC0+XG4gICAgICBsZXQgYXN0X2tpbmQgPSBJbnRmX29yX2ltcGwua2luZCBhc3QgaW5cbiAgICAgIGlmIG5vdCAoS2luZC5lcXVhbCBraW5kIGFzdF9raW5kKSB0aGVuXG4gICAgICAgIHZlcnNpb25lZF9lcnJvcmYgaW5wdXRfdmVyc2lvbiBmblxuICAgICAgICAgIFwiRmlsZSBjb250YWlucyBhIGJpbmFyeSAlcyBBU1QgYnV0IGFuICVzIHdhcyBleHBlY3RlZFwiXG4gICAgICAgICAgKEtpbmQuZGVzY3JpYmUgYXN0X2tpbmQpIChLaW5kLmRlc2NyaWJlIGtpbmQpXG4gICAgICBlbHNlIGlmIFN0cmluZy5lcXVhbCBhc3RfaW5wdXRfbmFtZSBpbnB1dF9uYW1lIHx8IG5vdCByZWxvY2F0ZSB0aGVuIChcbiAgICAgICAgc2V0X2lucHV0X25hbWUgYXN0X2lucHV0X25hbWU7XG4gICAgICAgIE9rIChhc3RfaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KSlcbiAgICAgIGVsc2VcbiAgICAgICAgT2tcbiAgICAgICAgICAoIGlucHV0X25hbWUsXG4gICAgICAgICAgICBpbnB1dF92ZXJzaW9uLFxuICAgICAgICAgICAgSW50Zl9vcl9pbXBsLm1hcF93aXRoX2NvbnRleHQgYXN0IHJlbG9jYXRlX21hcHBlclxuICAgICAgICAgICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X25hbWUpIClcbiAgfCBFcnJvciAoVW5rbm93bl92ZXJzaW9uICh1bmtub3duX21hZ2ljLCBmYWxsX2JhY2tfdmVyc2lvbikpIC0+XG4gICAgICB2ZXJzaW9uZWRfZXJyb3JmIGZhbGxfYmFja192ZXJzaW9uIGZuXG4gICAgICAgIFwiRmlsZSBpcyBhIGJpbmFyeSBhc3QgZm9yIGFuIHVua25vd24gdmVyc2lvbiBvZiBPQ2FtbCB3aXRoIG1hZ2ljIFxcXG4gICAgICAgICBudW1iZXIgJyVzJ1wiXG4gICAgICAgIHVua25vd25fbWFnaWNcbiAgfCBFcnJvciAoU3lzdGVtX2Vycm9yIChlcnJvciwgZmFsbF9iYWNrX3ZlcnNpb24pKVxuICB8IEVycm9yIChTb3VyY2VfcGFyc2VfZXJyb3IgKGVycm9yLCBmYWxsX2JhY2tfdmVyc2lvbikpIC0+XG4gICAgICBFcnJvciAoZXJyb3IsIGZhbGxfYmFja192ZXJzaW9uKVxuICB8IEVycm9yIE5vdF9hX2JpbmFyeV9hc3QgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBsb2FkX2lucHV0X3J1bl9hc19wcHggZm4gPVxuICAoKiBJZiB0aGVyZSdzIGFuIGVycm9yIHdoaWxlIGxvYWRpbmcgaW4gcnVuX2FzX3BweCBtb2RlLCB0aGUga2luZCBvZiBBU1QgKGltcGwvaW50ZikgaXMgc3RpbGwgdW5rbm93bi5cbiAgICAgVGhhdCdzIHdoeSwgYXMgb3Bwb3NlZCB0byBsb2FkX2lucHV0LCB0aGlzIGZ1bmN0aW9uIHJhaXNlcyBlcnJvcnMgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSByZXN1bHQ6XG4gICAgIGhhbmRsaW5nIGFuIGVycm9yIGJ5IHJldHVybmluZyBhbiBBU1Qgd2l0aCB0aGUgZXJyb3IgcGFja2VkIGFzIGV4dGVuc2lvbiBub2RlIHdvdWxkbid0IGJlIHBvc3NpYmxlLiAqKVxuICBtYXRjaCBBc3RfaW8ucmVhZCAoRmlsZSBmbikgfmlucHV0X2tpbmQ6QXN0X2lvLk5lY2Vzc2FyaWx5X2JpbmFyeSB3aXRoXG4gIHwgT2sgeyBpbnB1dF9uYW1lID0gYXN0X2lucHV0X25hbWU7IGlucHV0X3ZlcnNpb247IGFzdCB9IC0+XG4gICAgICBsZXQgYXN0ID1cbiAgICAgICAgbWF0Y2ggIWxvY19mbmFtZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgc2V0X2lucHV0X25hbWUgYXN0X2lucHV0X25hbWU7XG4gICAgICAgICAgICBhc3RcbiAgICAgICAgfCBTb21lIGlucHV0X25hbWUgLT5cbiAgICAgICAgICAgIHNldF9pbnB1dF9uYW1lIGlucHV0X25hbWU7XG4gICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgYXN0X2lucHV0X25hbWUgaW5wdXRfbmFtZSB0aGVuIGFzdFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBJbnRmX29yX2ltcGwubWFwX3dpdGhfY29udGV4dCBhc3QgcmVsb2NhdGVfbWFwcGVyXG4gICAgICAgICAgICAgICAgKGFzdF9pbnB1dF9uYW1lLCBpbnB1dF9uYW1lKVxuICAgICAgaW5cbiAgICAgICgqIFdpdGggYC0tYXMtcHB4YCwgb2NhbWwgY2FsbHMgdGhlIHN0YW5kYWxvbmUgc2VwYXJhdGVseSBmb3IgZXZlcnkgc3RydWN0dXJlL3NpZ25hdHVyZSBpdGVtXG4gICAgICAgICB3aXRoIHRoZSBmaWxlbmFtZSBhcyBtZXRhZGF0YSB0aGF0IGl0IGdldHMgZnJvbSB0aGUgcHJldmlvdXMgY2FsbC4gcmVsb2NhdGVfbWFwcGVyIG9ubHlcbiAgICAgICAgIHJlbG9jYXRlcyBwb3NpdGlvbnMgd2hvc2UgcG9zaXRpb24gZmlsZW5hbWUgY29pbmNpZGVzIHdpdGggdGhhdCBtZXRhZGF0YSBmaWxlbmFtZS5cbiAgICAgICAgIFNvIGFsd2F5cyByZXR1cm4gdGhlIG1ldGFkYXRhIGZpbGVuYW1lIGl0c2VsZiwgZXZlbiBpZiBgLWxvYy1maWxlbmFtZWAgaXMgcHJvdmlkZWQuICopXG4gICAgICAoYXN0X2lucHV0X25hbWUsIGlucHV0X3ZlcnNpb24sIGFzdClcbiAgfCBFcnJvciAoVW5rbm93bl92ZXJzaW9uICh1bmtub3duX21hZ2ljLCBfKSkgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jOihMb2NhdGlvbi5pbl9maWxlIGZuKVxuICAgICAgICBcIlRoZSBpbnB1dCBpcyBhIGJpbmFyeSBhc3QgZm9yIGFuIHVua25vd24gdmVyc2lvbiBvZiBPQ2FtbCB3aXRoIG1hZ2ljIFxcXG4gICAgICAgICBudW1iZXIgJyVzJ1wiXG4gICAgICAgIHVua25vd25fbWFnaWNcbiAgfCBFcnJvciBOb3RfYV9iaW5hcnlfYXN0IC0+XG4gICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYzooTG9jYXRpb24uaW5fZmlsZSBmbilcbiAgICAgICAgXCJFeHBlY3RlZCBhIGJpbmFyeSBBU1QgYXMgaW5wdXRcIlxuICB8IEVycm9yIChTeXN0ZW1fZXJyb3IgKGVycm9yLCBfKSkgfCBFcnJvciAoU291cmNlX3BhcnNlX2Vycm9yIChlcnJvciwgXykpIC0+XG4gICAgICBsZXQgb3BlbiBMb2NhdGlvbi5FcnJvciBpblxuICAgICAgTG9jYXRpb24uc2V0X2ZpbGVuYW1lIChnZXRfbG9jYXRpb24gZXJyb3IpIGZuIHw+IHVwZGF0ZV9sb2MgZXJyb3IgfD4gcmFpc2VcblxubGV0IGxvYWRfc291cmNlX2ZpbGUgZm4gPVxuICBsZXQgcyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZm4gaW5cbiAgaWYgc3RyaW5nX2NvbnRhaW5zX2JpbmFyeV9hc3QgcyB0aGVuXG4gICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2M6KExvY2F0aW9uLmluX2ZpbGUgZm4pXG4gICAgICBcInBweGxpYl9kcml2ZXI6IGNhbm5vdCB1c2UgLXJlY29uY2lsZSB3aXRoIGJpbmFyeSBBU1QgZmlsZXNcIjtcbiAgc1xuXG50eXBlIG91dHB1dF9tb2RlID1cbiAgfCBQcmV0dHlfcHJpbnRcbiAgfCBEdW1wX2FzdFxuICB8IERwYXJzZXRyZWVcbiAgfCBSZWNvbmNpbGUgb2YgUmVjb25jaWxlLm1vZGVcbiAgfCBOdWxsXG5cbigqJCopXG5sZXQgZXh0cmFjdF9jb29raWVzX3N0ciBzdCA9XG4gIGxldCBzdCA9XG4gICAgbWF0Y2ggc3Qgd2l0aFxuICAgIHwgKHtcbiAgICAgICAgIHBzdHJfZGVzYyA9XG4gICAgICAgICAgIFBzdHJfYXR0cmlidXRlIHsgYXR0cl9uYW1lID0geyB0eHQgPSBcIm9jYW1sLnBweC5jb250ZXh0XCI7IF8gfTsgXyB9O1xuICAgICAgICAgXztcbiAgICAgICB9IGFzIHByZWZpeClcbiAgICAgIDo6IHN0IC0+XG4gICAgICAgIGxldCBwcmVmaXggPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC50b19vY2FtbCBTdHJ1Y3R1cmUgWyBwcmVmaXggXSBpblxuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIExpc3QuaXNfZW1wdHlcbiAgICAgICAgICAgIChBc3RsaWIuQXN0X21ldGFkYXRhLmRyb3BfcHB4X2NvbnRleHRfc3RyIH5yZXN0b3JlOnRydWUgcHJlZml4KSk7XG4gICAgICAgIHN0XG4gICAgfCBfIC0+IHN0XG4gIGluXG4gICgqIFRoZSBjbGkgY29va2llcyBoYXZlIHRvIGJlIHNldCBhZnRlciByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0LFxuICAgICBzaW5jZSByZXN0b3JpbmcgdGhlIHBweCBjb250ZXh0IHJlc2V0cyB0aGUgY29va2llcyAqKVxuICBMaXN0Lml0ZXIgIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGkgfmY6KGZ1biAobmFtZSwgZXhwcikgLT5cbiAgICAgIENvb2tpZXMuc2V0IFQgbmFtZSBleHByKTtcbiAgc3RcblxubGV0IGFkZF9jb29raWVzX3N0ciBzdCA9XG4gIGxldCBwcmVmaXggPVxuICAgIEFzdGxpYi5Bc3RfbWV0YWRhdGEuYWRkX3BweF9jb250ZXh0X3N0ciB+dG9vbF9uYW1lOlwicHB4bGliX2RyaXZlclwiIFtdXG4gICAgfD4gUHB4bGliX2FzdC5TZWxlY3RlZF9hc3Qub2Zfb2NhbWwgU3RydWN0dXJlXG4gIGluXG4gIHByZWZpeCBAIHN0XG5cbigqJCBzdHJfdG9fc2lnIF9sYXN0X3RleHRfYmxvY2sgKilcbmxldCBleHRyYWN0X2Nvb2tpZXNfc2lnIHNnID1cbiAgbGV0IHNnID1cbiAgICBtYXRjaCBzZyB3aXRoXG4gICAgfCAoe1xuICAgICAgICAgcHNpZ19kZXNjID1cbiAgICAgICAgICAgUHNpZ19hdHRyaWJ1dGUgeyBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwucHB4LmNvbnRleHRcIjsgXyB9OyBfIH07XG4gICAgICAgICBfO1xuICAgICAgIH0gYXMgcHJlZml4KVxuICAgICAgOjogc2cgLT5cbiAgICAgICAgbGV0IHByZWZpeCA9IFBweGxpYl9hc3QuU2VsZWN0ZWRfYXN0LnRvX29jYW1sIFNpZ25hdHVyZSBbIHByZWZpeCBdIGluXG4gICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgTGlzdC5pc19lbXB0eVxuICAgICAgICAgICAgKEFzdGxpYi5Bc3RfbWV0YWRhdGEuZHJvcF9wcHhfY29udGV4dF9zaWcgfnJlc3RvcmU6dHJ1ZSBwcmVmaXgpKTtcbiAgICAgICAgc2dcbiAgICB8IF8gLT4gc2dcbiAgaW5cbiAgKCogVGhlIGNsaSBjb29raWVzIGhhdmUgdG8gYmUgc2V0IGFmdGVyIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQsXG4gICAgIHNpbmNlIHJlc3RvcmluZyB0aGUgcHB4IGNvbnRleHQgcmVzZXRzIHRoZSBjb29raWVzICopXG4gIExpc3QuaXRlciAhQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSB+ZjooZnVuIChuYW1lLCBleHByKSAtPlxuICAgICAgQ29va2llcy5zZXQgVCBuYW1lIGV4cHIpO1xuICBzZ1xuXG5sZXQgYWRkX2Nvb2tpZXNfc2lnIHNnID1cbiAgbGV0IHByZWZpeCA9XG4gICAgQXN0bGliLkFzdF9tZXRhZGF0YS5hZGRfcHB4X2NvbnRleHRfc2lnIH50b29sX25hbWU6XCJwcHhsaWJfZHJpdmVyXCIgW11cbiAgICB8PiBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdC5vZl9vY2FtbCBTaWduYXR1cmVcbiAgaW5cbiAgcHJlZml4IEAgc2dcblxuKCokKilcblxubGV0IGV4dHJhY3RfY29va2llcyAoYXN0IDogSW50Zl9vcl9pbXBsLnQpIDogSW50Zl9vcl9pbXBsLnQgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPiBJbnRmIChleHRyYWN0X2Nvb2tpZXNfc2lnIHgpXG4gIHwgSW1wbCB4IC0+IEltcGwgKGV4dHJhY3RfY29va2llc19zdHIgeClcblxubGV0IGFkZF9jb29raWVzIChhc3QgOiBJbnRmX29yX2ltcGwudCkgOiBJbnRmX29yX2ltcGwudCA9XG4gIG1hdGNoIGFzdCB3aXRoXG4gIHwgSW50ZiB4IC0+IEludGYgKGFkZF9jb29raWVzX3NpZyB4KVxuICB8IEltcGwgeCAtPiBJbXBsIChhZGRfY29va2llc19zdHIgeClcblxubGV0IGNvcnJlY3Rpb25zID0gcmVmIFtdXG5sZXQgYWRkX3RvX2xpc3QgciB4ID0gciA6PSB4IDo6ICFyXG5cbmxldCByZWdpc3Rlcl9jb3JyZWN0aW9uIH5sb2MgfnJlcGwgPVxuICBhZGRfdG9fbGlzdCBjb3JyZWN0aW9uc1xuICAgIChSZWNvbmNpbGUuUmVwbGFjZW1lbnQubWFrZV90ZXh0ICgpIH5zdGFydDpsb2MubG9jX3N0YXJ0IH5zdG9wOmxvYy5sb2NfZW5kXG4gICAgICAgfnJlcGwpXG5cbmxldCBwcm9jZXNzX2ZpbGVfaG9va3MgPSByZWYgW11cbmxldCByZWdpc3Rlcl9wcm9jZXNzX2ZpbGVfaG9vayBmID0gYWRkX3RvX2xpc3QgcHJvY2Vzc19maWxlX2hvb2tzIGZcblxubW9kdWxlIEZpbGVfcHJvcGVydHkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgbXV0YWJsZSBkYXRhIDogJ2Egb3B0aW9uO1xuICAgIHNleHBfb2ZfdCA6ICdhIC0+IFNleHAudDtcbiAgfVxuXG4gIHR5cGUgcGFja2VkID0gVCA6IF8gdCAtPiBwYWNrZWRcblxuICBsZXQgYWxsID0gcmVmIFtdXG4gIGxldCByZWdpc3RlciB0ID0gYWRkX3RvX2xpc3QgYWxsIChUIHQpXG4gIGxldCByZXNldF9hbGwgKCkgPSBMaXN0Lml0ZXIgIWFsbCB+ZjooZnVuIChUIHQpIC0+IHQuZGF0YSA8LSBOb25lKVxuXG4gIGxldCBkdW1wX2FuZF9yZXNldF9hbGwgKCkgPVxuICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC5yZXYgIWFsbCkgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICBtYXRjaCB0LmRhdGEgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgICAgdC5kYXRhIDwtIE5vbmU7XG4gICAgICAgICAgICBTb21lICh0Lm5hbWUsIHQuc2V4cF9vZl90IHYpKVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZmlsZV9wcm9wZXJ0eVxuICAgIChOYW1lIDogc2lnXG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZClcbiAgICAoVCA6IFNleHBhYmxlLlMpID1cbnN0cnVjdFxuICBsZXQgdCA6IF8gRmlsZV9wcm9wZXJ0eS50ID1cbiAgICB7IG5hbWUgPSBOYW1lLm5hbWU7IGRhdGEgPSBOb25lOyBzZXhwX29mX3QgPSBULnNleHBfb2ZfdCB9XG5cbiAgbGV0ICgpID0gRmlsZV9wcm9wZXJ0eS5yZWdpc3RlciB0XG4gIGxldCBzZXQgeCA9IHQuZGF0YSA8LSBTb21lIHhcbmVuZFxuXG5sZXQgcHJvY2Vzc19hc3QgKGFzdCA6IEludGZfb3JfaW1wbC50KSB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rXG4gICAgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIH5lbWJlZF9lcnJvcnMgPVxuICBtYXRjaCBhc3Qgd2l0aFxuICB8IEludGYgeCAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbWFwX3NpZ25hdHVyZV9nZW4geCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgfmlucHV0X25hbWU6KFNvbWUgaW5wdXRfbmFtZSkgfmVtYmVkX2Vycm9yc1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgYXN0IC0+IGFzdFxuICAgICAgaW5cbiAgICAgIEludGZfb3JfaW1wbC5JbnRmIGFzdFxuICB8IEltcGwgeCAtPlxuICAgICAgbGV0IGFzdCA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgbWFwX3N0cnVjdHVyZV9nZW4geCB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICAgICAgfmlucHV0X25hbWU6KFNvbWUgaW5wdXRfbmFtZSkgfmVtYmVkX2Vycm9yc1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgYXN0IC0+IGFzdFxuICAgICAgaW5cbiAgICAgIEludGZfb3JfaW1wbC5JbXBsIGFzdFxuXG5sZXQgcHJvY2Vzc19maWxlIChraW5kIDogS2luZC50KSBmbiB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgfm91dHB1dF9tb2RlXG4gICAgfmVtYmVkX2Vycm9ycyB+b3V0cHV0ID1cbiAgRmlsZV9wcm9wZXJ0eS5yZXNldF9hbGwgKCk7XG4gIExpc3QuaXRlciAoTGlzdC5yZXYgIXByb2Nlc3NfZmlsZV9ob29rcykgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBjb3JyZWN0aW9ucyA6PSBbXTtcbiAgbGV0IHJlcGxhY2VtZW50cyA9IHJlZiBbXSBpblxuICBsZXQgdG9vbF9uYW1lID0gXCJwcHhfZHJpdmVyXCIgaW5cbiAgbGV0IGhvb2sgOiBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay50ID1cbiAgICBtYXRjaCBvdXRwdXRfbW9kZSB3aXRoXG4gICAgfCBSZWNvbmNpbGUgKFVzaW5nX2xpbmVfZGlyZWN0aXZlcyB8IERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcykgLT5cbiAgICAgICAge1xuICAgICAgICAgIGYgPVxuICAgICAgICAgICAgKGZ1biBjb250ZXh0IChsb2MgOiBMb2NhdGlvbi50KSBnZW5lcmF0ZWQgLT5cbiAgICAgICAgICAgICAgYWRkX3RvX2xpc3QgcmVwbGFjZW1lbnRzXG4gICAgICAgICAgICAgICAgKFJlY29uY2lsZS5SZXBsYWNlbWVudC5tYWtlICgpIH5jb250ZXh0OihFeHRlbnNpb24gY29udGV4dClcbiAgICAgICAgICAgICAgICAgICB+c3RhcnQ6bG9jLmxvY19zdGFydCB+c3RvcDpsb2MubG9jX2VuZCB+cmVwbDpnZW5lcmF0ZWQpKTtcbiAgICAgICAgfVxuICAgIHwgXyAtPiBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3BcbiAgaW5cbiAgbGV0IGV4cGVjdF9taXNtYXRjaF9oYW5kbGVyIDogQ29udGV4dF9mcmVlLkV4cGVjdF9taXNtYXRjaF9oYW5kbGVyLnQgPVxuICAgIHtcbiAgICAgIGYgPVxuICAgICAgICAoZnVuIGNvbnRleHQgKGxvYyA6IExvY2F0aW9uLnQpIGdlbmVyYXRlZCAtPlxuICAgICAgICAgIGFkZF90b19saXN0IGNvcnJlY3Rpb25zXG4gICAgICAgICAgICAoUmVjb25jaWxlLlJlcGxhY2VtZW50Lm1ha2UgKCkgfmNvbnRleHQ6KEZsb2F0aW5nX2F0dHJpYnV0ZSBjb250ZXh0KVxuICAgICAgICAgICAgICAgfnN0YXJ0OmxvYy5sb2Nfc3RhcnQgfnN0b3A6bG9jLmxvY19lbmQgfnJlcGw6KE1hbnkgZ2VuZXJhdGVkKSkpO1xuICAgIH1cbiAgaW5cblxuICBsZXQgaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0ID1cbiAgICBsZXQgcHJlcHJvY2Vzc2VkX2FuZF9sb2FkZWQgPVxuICAgICAgd2l0aF9wcmVwcm9jZXNzZWRfZmlsZSBmbiB+ZjoobG9hZF9pbnB1dCB+a2luZCB+aW5wdXRfbmFtZSB+cmVsb2NhdGUpXG4gICAgaW5cbiAgICBtYXRjaCBwcmVwcm9jZXNzZWRfYW5kX2xvYWRlZCB3aXRoXG4gICAgfCBPayAoaW5wdXRfZm5hbWUsIGlucHV0X3ZlcnNpb24sIGFzdCkgLT4gKFxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgYXN0ID1cbiAgICAgICAgICAgIGV4dHJhY3RfY29va2llcyBhc3RcbiAgICAgICAgICAgIHw+IHByb2Nlc3NfYXN0IH5pbnB1dF9uYW1lIH50b29sX25hbWUgfmhvb2sgfmV4cGVjdF9taXNtYXRjaF9oYW5kbGVyXG4gICAgICAgICAgICAgICAgIH5lbWJlZF9lcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0KVxuICAgICAgICB3aXRoIGV4biB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAgIChpbnB1dF9mbmFtZSwgaW5wdXRfdmVyc2lvbiwgZXhuX3RvX2V4dGVuc2lvbiBleG4gfmtpbmQpKVxuICAgIHwgRXJyb3IgKGVycm9yLCBpbnB1dF92ZXJzaW9uKSB3aGVuIGVtYmVkX2Vycm9ycyAtPlxuICAgICAgICAoaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgZXJyb3JfdG9fZXh0ZW5zaW9uIGVycm9yIH5raW5kKVxuICAgIHwgRXJyb3IgKGVycm9yLCBfKSAtPlxuICAgICAgICBsZXQgb3BlbiBMb2NhdGlvbi5FcnJvciBpblxuICAgICAgICBMb2NhdGlvbi5zZXRfZmlsZW5hbWUgKGdldF9sb2NhdGlvbiBlcnJvcikgZm5cbiAgICAgICAgfD4gdXBkYXRlX2xvYyBlcnJvciB8PiByYWlzZVxuICBpblxuICBPcHRpb24uaXRlciAhb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIH5mOihmdW4gZm4gLT5cbiAgICAgIGxldCBtZXRhZGF0YSA9IEZpbGVfcHJvcGVydHkuZHVtcF9hbmRfcmVzZXRfYWxsICgpIGluXG4gICAgICBPdXRfY2hhbm5lbC53cml0ZV9hbGwgZm5cbiAgICAgICAgfmRhdGE6XG4gICAgICAgICAgKExpc3QubWFwIG1ldGFkYXRhIH5mOihmdW4gKHMsIHNleHApIC0+XG4gICAgICAgICAgICAgICBTZXhwLnRvX3N0cmluZ19odW0gKFNleHAuTGlzdCBbIEF0b20gczsgc2V4cCBdKSBeIFwiXFxuXCIpXG4gICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIpKTtcblxuICBsZXQgaW5wdXRfY29udGVudHMgPSBsYXp5IChsb2FkX3NvdXJjZV9maWxlIGZuKSBpblxuICBsZXQgY29ycmVjdGVkID0gZm4gXiAhY29ycmVjdGVkX3N1ZmZpeCBpblxuICBsZXQgbWlzbWF0Y2hlc19mb3VuZCA9XG4gICAgbWF0Y2ggIWNvcnJlY3Rpb25zIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAgIGlmIFN0ZGxpYi5TeXMuZmlsZV9leGlzdHMgY29ycmVjdGVkIHRoZW4gU3RkbGliLlN5cy5yZW1vdmUgY29ycmVjdGVkO1xuICAgICAgICBmYWxzZVxuICAgIHwgY29ycmVjdGlvbnMgLT5cbiAgICAgICAgUmVjb25jaWxlLnJlY29uY2lsZSBjb3JyZWN0aW9uc1xuICAgICAgICAgIH5jb250ZW50czooTGF6eS5mb3JjZSBpbnB1dF9jb250ZW50cylcbiAgICAgICAgICB+b3V0cHV0OihTb21lIGNvcnJlY3RlZCkgfmlucHV0X2ZpbGVuYW1lOmZuIH5pbnB1dF9uYW1lXG4gICAgICAgICAgfnRhcmdldDpDb3JyZWN0ZWQgP3N0eWxlcjohc3R5bGVyIH5raW5kO1xuICAgICAgICB0cnVlXG4gIGluXG5cbiAgKG1hdGNoIG91dHB1dF9tb2RlIHdpdGhcbiAgfCBOdWxsIC0+ICgpXG4gIHwgUHJldHR5X3ByaW50IC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTpmYWxzZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgbGV0IHBwZiA9IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgKG1hdGNoIGFzdCB3aXRoXG4gICAgICAgICAgfCBJbnRmIGFzdCAtPiBQcHJpbnRhc3Quc2lnbmF0dXJlIHBwZiBhc3RcbiAgICAgICAgICB8IEltcGwgYXN0IC0+IFBwcmludGFzdC5zdHJ1Y3R1cmUgcHBmIGFzdCk7XG4gICAgICAgICAgbGV0IG51bGxfYXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFzdCB3aXRoIEludGYgW10gfCBJbXBsIFtdIC0+IHRydWUgfCBfIC0+IGZhbHNlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBub3QgbnVsbF9hc3QgdGhlbiBTdGRsaWIuRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgcHBmICgpKVxuICB8IER1bXBfYXN0IC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTp0cnVlIH5mOihmdW4gb2MgLT5cbiAgICAgICAgICBBc3RfaW8ud3JpdGUgb2NcbiAgICAgICAgICAgIHsgaW5wdXRfbmFtZTsgaW5wdXRfdmVyc2lvbjsgYXN0IH1cbiAgICAgICAgICAgIH5hZGRfcHB4X2NvbnRleHQ6dHJ1ZSlcbiAgfCBEcGFyc2V0cmVlIC0+XG4gICAgICB3aXRoX291dHB1dCBvdXRwdXQgfmJpbmFyeTpmYWxzZSB+ZjooZnVuIG9jIC0+XG4gICAgICAgICAgbGV0IHBwZiA9IFN0ZGxpYi5Gb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gICAgICAgICAgbGV0IGFzdCA9IGFkZF9jb29raWVzIGFzdCBpblxuICAgICAgICAgIChtYXRjaCBhc3Qgd2l0aFxuICAgICAgICAgIHwgSW50ZiBhc3QgLT4gU2V4cC5wcF9odW0gcHBmIChBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzaWduYXR1cmUgYXN0KVxuICAgICAgICAgIHwgSW1wbCBhc3QgLT4gU2V4cC5wcF9odW0gcHBmIChBc3RfdHJhdmVyc2Uuc2V4cF9vZiNzdHJ1Y3R1cmUgYXN0KSk7XG4gICAgICAgICAgU3RkbGliLkZvcm1hdC5wcF9wcmludF9uZXdsaW5lIHBwZiAoKSlcbiAgfCBSZWNvbmNpbGUgbW9kZSAtPlxuICAgICAgUmVjb25jaWxlLnJlY29uY2lsZSAhcmVwbGFjZW1lbnRzXG4gICAgICAgIH5jb250ZW50czooTGF6eS5mb3JjZSBpbnB1dF9jb250ZW50cylcbiAgICAgICAgfm91dHB1dCB+aW5wdXRfZmlsZW5hbWU6Zm4gfmlucHV0X25hbWUgfnRhcmdldDooT3V0cHV0IG1vZGUpXG4gICAgICAgID9zdHlsZXI6IXN0eWxlciB+a2luZCk7XG5cbiAgaWZcbiAgICBtaXNtYXRjaGVzX2ZvdW5kICYmIG1hdGNoICFkaWZmX2NvbW1hbmQgd2l0aCBTb21lIFwiLVwiIC0+IGZhbHNlIHwgXyAtPiB0cnVlXG4gIHRoZW4gKFxuICAgIFBweGxpYl9wcmludF9kaWZmLnByaW50ICgpIH5maWxlMTpmbiB+ZmlsZTI6Y29ycmVjdGVkIH51c2VfY29sb3I6IXVzZV9jb2xvclxuICAgICAgP2RpZmZfY29tbWFuZDohZGlmZl9jb21tYW5kO1xuICAgIFN0ZGxpYi5leGl0IDEpXG5cbmxldCBvdXRwdXRfbW9kZSA9IHJlZiBQcmV0dHlfcHJpbnRcbmxldCBvdXRwdXQgPSByZWYgTm9uZVxubGV0IGtpbmQgPSByZWYgTm9uZVxubGV0IGlucHV0ID0gcmVmIE5vbmVcbmxldCBlbWJlZF9lcnJvcnMgPSByZWYgZmFsc2VcblxubGV0IHNldF9pbnB1dCBmbiA9XG4gIG1hdGNoICFpbnB1dCB3aXRoXG4gIHwgTm9uZSAtPiBpbnB1dCA6PSBTb21lIGZuXG4gIHwgU29tZSBfIC0+IHJhaXNlIChBcmcuQmFkIFwidG9vIG1hbnkgaW5wdXQgZmlsZXNcIilcblxubGV0IHNldF9raW5kIGsgPVxuICBtYXRjaCAha2luZCB3aXRoXG4gIHwgU29tZSBrJyB3aGVuIG5vdCAoS2luZC5lcXVhbCBrIGsnKSAtPlxuICAgICAgcmFpc2UgKEFyZy5CYWQgXCJtdXN0IHNwZWNpZnkgYXQgbW9zdCBvbmUgb2YgLWltcGwgb3IgLWludGZcIilcbiAgfCBfIC0+IGtpbmQgOj0gU29tZSBrXG5cbmxldCBzZXRfb3V0cHV0X21vZGUgbW9kZSA9XG4gIG1hdGNoICghb3V0cHV0X21vZGUsIG1vZGUpIHdpdGhcbiAgfCBQcmV0dHlfcHJpbnQsIF8gLT4gb3V0cHV0X21vZGUgOj0gbW9kZVxuICB8IF8sIFByZXR0eV9wcmludCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBEdW1wX2FzdCwgRHVtcF9hc3QgfCBEcGFyc2V0cmVlLCBEcGFyc2V0cmVlIC0+ICgpXG4gIHwgUmVjb25jaWxlIGEsIFJlY29uY2lsZSBiIHdoZW4gUG9seS5lcXVhbCBhIGIgLT4gKClcbiAgfCB4LCB5IC0+XG4gICAgICBsZXQgYXJnX29mX291dHB1dF9tb2RlID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcmV0dHlfcHJpbnQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgRHVtcF9hc3QgLT4gXCItZHVtcC1hc3RcIlxuICAgICAgICB8IERwYXJzZXRyZWUgLT4gXCItZHBhcnNldHJlZVwiXG4gICAgICAgIHwgUmVjb25jaWxlIFVzaW5nX2xpbmVfZGlyZWN0aXZlcyAtPiBcIi1yZWNvbmNpbGVcIlxuICAgICAgICB8IFJlY29uY2lsZSBEZWxpbWl0aW5nX2dlbmVyYXRlZF9ibG9ja3MgLT4gXCItcmVjb25jaWxlLXdpdGgtY29tbWVudHNcIlxuICAgICAgICB8IE51bGwgLT4gXCItbnVsbFwiXG4gICAgICBpblxuICAgICAgcmFpc2VcbiAgICAgICAgKEFyZy5CYWRcbiAgICAgICAgICAgKFByaW50Zi5zcHJpbnRmIFwiJXMgYW5kICVzIGFyZSBpbmNvbXBhdGlibGVcIiAoYXJnX29mX291dHB1dF9tb2RlIHgpXG4gICAgICAgICAgICAgIChhcmdfb2Zfb3V0cHV0X21vZGUgeSkpKVxuXG5sZXQgcHJpbnRfdHJhbnNmb3JtYXRpb25zICgpID1cbiAgTGlzdC5pdGVyICFUcmFuc2Zvcm0uYWxsIH5mOihmdW4gKGN0IDogVHJhbnNmb3JtLnQpIC0+XG4gICAgICBQcmludGYucHJpbnRmIFwiJXNcXG5cIiBjdC5uYW1lKVxuXG5sZXQgcGFyc2VfYXBwbHlfbGlzdCBzID1cbiAgbGV0IG5hbWVzID1cbiAgICBpZiBTdHJpbmcuZXF1YWwgcyBcIlwiIHRoZW4gW10gZWxzZSBTdHJpbmcuc3BsaXRfb25fY2hhciBzIH5zZXA6JywnXG4gIGluXG4gIExpc3QuaXRlciBuYW1lcyB+ZjooZnVuIG5hbWUgLT5cbiAgICAgIGlmXG4gICAgICAgIG5vdFxuICAgICAgICAgIChMaXN0LmV4aXN0cyAhVHJhbnNmb3JtLmFsbCB+ZjooZnVuIChjdCA6IFRyYW5zZm9ybS50KSAtPlxuICAgICAgICAgICAgICAgVHJhbnNmb3JtLmhhc19uYW1lIGN0IG5hbWUpKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChTdGRsaWIuQXJnLkJhZFxuICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZiBcImNvZGUgdHJhbnNmb3JtYXRpb24gJyVzJyBkb2VzIG5vdCBleGlzdFwiIG5hbWUpKSk7XG4gIG5hbWVzXG5cbnR5cGUgbWFzayA9IHtcbiAgbXV0YWJsZSBhcHBseSA6IHN0cmluZyBsaXN0IG9wdGlvbjtcbiAgbXV0YWJsZSBkb250X2FwcGx5IDogc3RyaW5nIGxpc3Qgb3B0aW9uO1xufVxuXG5sZXQgbWFzayA9IHsgYXBwbHkgPSBOb25lOyBkb250X2FwcGx5ID0gTm9uZSB9XG5cbmxldCBoYW5kbGVfYXBwbHkgcyA9XG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IGNhbGxlZCB0b28gbWFueSB0aW1lc1wiKTtcbiAgKCogVGhpcyBpcyBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5IGJ1dCBpdCdzIG1vcmUgaW50dWl0aXZlICopXG4gIGlmIE9wdGlvbi5pc19zb21lIG1hc2suZG9udF9hcHBseSB0aGVuXG4gICAgcmFpc2UgKEFyZy5CYWQgXCItYXBwbHkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIC1kb250LWFwcGx5XCIpO1xuICBtYXNrLmFwcGx5IDwtIFNvbWUgKHBhcnNlX2FwcGx5X2xpc3QgcylcblxubGV0IGhhbmRsZV9kb250X2FwcGx5IHMgPVxuICBpZiBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIHJhaXNlIChBcmcuQmFkIFwiLWFwcGx5IGNhbGxlZCB0b28gbWFueSB0aW1lc1wiKTtcbiAgbWFzay5kb250X2FwcGx5IDwtIFNvbWUgKHBhcnNlX2FwcGx5X2xpc3QgcylcblxubGV0IGludGVycHJldF9tYXNrICgpID1cbiAgaWYgT3B0aW9uLmlzX3NvbWUgbWFzay5hcHBseSB8fCBPcHRpb24uaXNfc29tZSBtYXNrLmRvbnRfYXBwbHkgdGhlblxuICAgIGxldCBzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSBjdCA9XG4gICAgICBsZXQgaXNfY2FuZGlkYXRlID1cbiAgICAgICAgbWF0Y2ggbWFzay5hcHBseSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBuYW1lcyAtPiBMaXN0LmV4aXN0cyBuYW1lcyB+ZjooVHJhbnNmb3JtLmhhc19uYW1lIGN0KVxuICAgICAgaW5cbiAgICAgIGxldCBpc19zZWxlY3RlZCA9XG4gICAgICAgIG1hdGNoIG1hc2suZG9udF9hcHBseSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBpc19jYW5kaWRhdGVcbiAgICAgICAgfCBTb21lIG5hbWVzIC0+XG4gICAgICAgICAgICBpc19jYW5kaWRhdGUgJiYgbm90IChMaXN0LmV4aXN0cyBuYW1lcyB+ZjooVHJhbnNmb3JtLmhhc19uYW1lIGN0KSlcbiAgICAgIGluXG4gICAgICBpZiBpc19zZWxlY3RlZCB0aGVuIFNvbWUgY3QubmFtZSBlbHNlIE5vbmVcbiAgICBpblxuICAgIGFwcGx5X2xpc3QgOj1cbiAgICAgIFNvbWUgKExpc3QuZmlsdGVyX21hcCAhVHJhbnNmb3JtLmFsbCB+ZjpzZWxlY3RlZF90cmFuc2Zvcm1fbmFtZSlcblxubGV0IHNldF9jb29raWUgcyA9XG4gIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOic9JyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICAgcmFpc2UgKEFyZy5CYWQgXCJpbnZhbGlkIGNvb2tpZSwgbXVzdCBiZSBvZiB0aGUgZm9ybSBcXFwiPG5hbWU+PTxleHByPlxcXCJcIilcbiAgfCBTb21lIChuYW1lLCB2YWx1ZSkgLT5cbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgdmFsdWUgaW5cbiAgICAgIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAgICB7XG4gICAgICAgICAgTGV4aW5nLnBvc19mbmFtZSA9IFwiPGNvbW1hbmQtbGluZT5cIjtcbiAgICAgICAgICBwb3NfbG51bSA9IDE7XG4gICAgICAgICAgcG9zX2JvbCA9IDA7XG4gICAgICAgICAgcG9zX2NudW0gPSAwO1xuICAgICAgICB9O1xuICAgICAgbGV0IGV4cHIgPSBQYXJzZS5leHByZXNzaW9uIGxleGJ1ZiBpblxuICAgICAgQ29va2llcy5naXZlbl90aHJvdWdoX2NsaSA6PSAobmFtZSwgZXhwcikgOjogIUNvb2tpZXMuZ2l2ZW5fdGhyb3VnaF9jbGlcblxubGV0IHNoYXJlZF9hcmdzID1cbiAgW1xuICAgICggXCItbG9jLWZpbGVuYW1lXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBsb2NfZm5hbWUgOj0gU29tZSBzKSxcbiAgICAgIFwiPHN0cmluZz4gRmlsZSBuYW1lIHRvIHVzZSBpbiBsb2NhdGlvbnNcIiApO1xuICAgICggXCItcmVzZXJ2ZS1uYW1lc3BhY2VcIixcbiAgICAgIEFyZy5TdHJpbmcgTmFtZS5SZXNlcnZlZF9uYW1lc3BhY2VzLnJlc2VydmUsXG4gICAgICBcIjxzdHJpbmc+IE1hcmsgdGhlIGdpdmVuIG5hbWVzcGFjZSBhcyByZXNlcnZlZFwiICk7XG4gICAgKFwiLW5vLWNoZWNrXCIsIEFyZy5DbGVhciBwZXJmb3JtX2NoZWNrcywgXCIgRGlzYWJsZSBjaGVja3MgKHVuc2FmZSlcIik7XG4gICAgKFwiLWNoZWNrXCIsIEFyZy5TZXQgcGVyZm9ybV9jaGVja3MsIFwiIEVuYWJsZSBjaGVja3NcIik7XG4gICAgKCBcIi1uby1jaGVjay1vbi1leHRlbnNpb25zXCIsXG4gICAgICBBcmcuQ2xlYXIgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyxcbiAgICAgIFwiIERpc2FibGUgY2hlY2tzIG9uIGV4dGVuc2lvbiBwb2ludCBvbmx5XCIgKTtcbiAgICAoIFwiLWNoZWNrLW9uLWV4dGVuc2lvbnNcIixcbiAgICAgIEFyZy5TZXQgcGVyZm9ybV9jaGVja3Nfb25fZXh0ZW5zaW9ucyxcbiAgICAgIFwiIEVuYWJsZSBjaGVja3Mgb24gZXh0ZW5zaW9uIHBvaW50IG9ubHlcIiApO1xuICAgICggXCItbm8tbG9jYXRpb25zLWNoZWNrXCIsXG4gICAgICBBcmcuQ2xlYXIgcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2ssXG4gICAgICBcIiBEaXNhYmxlIGxvY2F0aW9ucyBjaGVjayBvbmx5XCIgKTtcbiAgICAoIFwiLWxvY2F0aW9ucy1jaGVja1wiLFxuICAgICAgQXJnLlNldCBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayxcbiAgICAgIFwiIEVuYWJsZSBsb2NhdGlvbnMgY2hlY2sgb25seVwiICk7XG4gICAgKCBcIi1hcHBseVwiLFxuICAgICAgQXJnLlN0cmluZyBoYW5kbGVfYXBwbHksXG4gICAgICBcIjxuYW1lcz4gQXBwbHkgdGhlc2UgdHJhbnNmb3JtYXRpb25zIGluIG9yZGVyIChjb21tYS1zZXBhcmF0ZWQgbGlzdClcIiApO1xuICAgICggXCItZG9udC1hcHBseVwiLFxuICAgICAgQXJnLlN0cmluZyBoYW5kbGVfZG9udF9hcHBseSxcbiAgICAgIFwiPG5hbWVzPiBFeGNsdWRlIHRoZXNlIHRyYW5zZm9ybWF0aW9uc1wiICk7XG4gICAgKCBcIi1uby1tZXJnZVwiLFxuICAgICAgQXJnLlNldCBub19tZXJnZSxcbiAgICAgIFwiIERvIG5vdCBtZXJnZSBjb250ZXh0IGZyZWUgdHJhbnNmb3JtYXRpb25zIChiZXR0ZXIgZm9yIGRlYnVnZ2luZyBcXFxuICAgICAgIHJld3JpdGVycykuIEFzIGEgcmVzdWx0LCB0aGUgY29udGV4dC1mcmVlIHRyYW5zZm9ybWF0aW9ucyBhcmUgbm90IGFsbCBcXFxuICAgICAgIGFwcGxpZWQgYmVmb3JlIGFsbCBpbXBsIGFuZCBpbnRmLlwiICk7XG4gICAgKFwiLWNvb2tpZVwiLCBBcmcuU3RyaW5nIHNldF9jb29raWUsIFwiTkFNRT1FWFBSIFNldCB0aGUgY29va2llIE5BTUUgdG8gRVhQUlwiKTtcbiAgICAoXCItLWNvb2tpZVwiLCBBcmcuU3RyaW5nIHNldF9jb29raWUsIFwiIFNhbWUgYXMgLWNvb2tpZVwiKTtcbiAgXVxuXG5sZXQgKCkgPVxuICBMaXN0Lml0ZXIgc2hhcmVkX2FyZ3MgfmY6KGZ1biAoa2V5LCBzcGVjLCBkb2MpIC0+IGFkZF9hcmcga2V5IHNwZWMgfmRvYylcblxubGV0IGFzX3BwICgpID1cbiAgc2V0X291dHB1dF9tb2RlIER1bXBfYXN0O1xuICBlbWJlZF9lcnJvcnMgOj0gdHJ1ZVxuXG5sZXQgc3RhbmRhbG9uZV9hcmdzID1cbiAgW1xuICAgICggXCItYXMtcHB4XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHJhaXNlIChBcmcuQmFkIFwiLWFzLXBweCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudFwiKSksXG4gICAgICBcIiBSdW4gYXMgYSAtcHB4IHJld3JpdGVyIChtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudClcIiApO1xuICAgICggXCItLWFzLXBweFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiByYWlzZSAoQXJnLkJhZCBcIi0tYXMtcHB4IG11c3QgYmUgdGhlIGZpcnN0IGFyZ3VtZW50XCIpKSxcbiAgICAgIFwiIFNhbWUgYXMgLWFzLXBweFwiICk7XG4gICAgKFwiLWFzLXBwXCIsIEFyZy5Vbml0IGFzX3BwLCBcIiBTaG9ydGhhbmQgZm9yOiAtZHVtcC1hc3QgLWVtYmVkLWVycm9yc1wiKTtcbiAgICAoXCItLWFzLXBwXCIsIEFyZy5Vbml0IGFzX3BwLCBcIiBTYW1lIGFzIC1hcy1wcFwiKTtcbiAgICAoIFwiLW9cIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IG91dHB1dCA6PSBTb21lIHMpLFxuICAgICAgXCI8ZmlsZW5hbWU+IE91dHB1dCBmaWxlICh1c2UgJy0nIGZvciBzdGRvdXQpXCIgKTtcbiAgICAoXCItXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2lucHV0IFwiLVwiKSwgXCIgUmVhZCBpbnB1dCBmcm9tIHN0ZGluXCIpO1xuICAgICggXCItZHVtcC1hc3RcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X291dHB1dF9tb2RlIER1bXBfYXN0KSxcbiAgICAgIFwiIER1bXAgdGhlIG1hcnNoYWxlZCBhc3QgdG8gdGhlIG91dHB1dCBmaWxlIGluc3RlYWQgb2YgcHJldHR5LXByaW50aW5nIGl0XCJcbiAgICApO1xuICAgICggXCItLWR1bXAtYXN0XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEdW1wX2FzdCksXG4gICAgICBcIiBTYW1lIGFzIC1kdW1wLWFzdFwiICk7XG4gICAgKCBcIi1kcGFyc2V0cmVlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSBEcGFyc2V0cmVlKSxcbiAgICAgIFwiIFByaW50IHRoZSBwYXJzZXRyZWUgKHNhbWUgYXMgb2NhbWxjIC1kcGFyc2V0cmVlKVwiICk7XG4gICAgKCBcIi1lbWJlZC1lcnJvcnNcIixcbiAgICAgIEFyZy5TZXQgZW1iZWRfZXJyb3JzLFxuICAgICAgXCIgRW1iZWQgZXJyb3JzIGluIHRoZSBvdXRwdXQgQVNUIChkZWZhdWx0OiB0cnVlIHdoZW4gLWFzLXBwLCBmYWxzZSBcXFxuICAgICAgIG90aGVyd2lzZSlcIiApO1xuICAgICggXCItbnVsbFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgTnVsbCksXG4gICAgICBcIiBQcm9kdWNlIG5vIG91dHB1dCwgZXhjZXB0IGZvciBlcnJvcnNcIiApO1xuICAgICggXCItaW1wbFwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbXBsKSxcbiAgICAgIFwiPGZpbGU+IFRyZWF0IHRoZSBpbnB1dCBhcyBhIC5tbCBmaWxlXCIgKTtcbiAgICAoXCItLWltcGxcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfa2luZCBJbXBsKSwgXCI8ZmlsZT4gU2FtZSBhcyAtaW1wbFwiKTtcbiAgICAoIFwiLWludGZcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gc2V0X2tpbmQgSW50ZiksXG4gICAgICBcIjxmaWxlPiBUcmVhdCB0aGUgaW5wdXQgYXMgYSAubWxpIGZpbGVcIiApO1xuICAgIChcIi0taW50ZlwiLCBBcmcuVW5pdCAoZnVuICgpIC0+IHNldF9raW5kIEludGYpLCBcIjxmaWxlPiBTYW1lIGFzIC1pbnRmXCIpO1xuICAgICggXCItZGVidWctYXR0cmlidXRlLWRyb3BcIixcbiAgICAgIEFyZy5TZXQgZGVidWdfYXR0cmlidXRlX2Ryb3AsXG4gICAgICBcIiBEZWJ1ZyBhdHRyaWJ1dGUgZHJvcHBpbmdcIiApO1xuICAgICggXCItcHJpbnQtdHJhbnNmb3JtYXRpb25zXCIsXG4gICAgICBBcmcuU2V0IHJlcXVlc3RfcHJpbnRfdHJhbnNmb3JtYXRpb25zLFxuICAgICAgXCIgUHJpbnQgbGlua2VkLWluIGNvZGUgdHJhbnNmb3JtYXRpb25zLCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgYXBwbGllZFwiICk7XG4gICAgKCBcIi1wcmludC1wYXNzZXNcIixcbiAgICAgIEFyZy5TZXQgcmVxdWVzdF9wcmludF9wYXNzZXMsXG4gICAgICBcIiBQcmludCB0aGUgYWN0dWFsIHBhc3NlcyBvdmVyIHRoZSB3aG9sZSBBU1QgaW4gdGhlIG9yZGVyIHRoZXkgYXJlIFxcXG4gICAgICAgYXBwbGllZFwiICk7XG4gICAgKCBcIi1pdGUtY2hlY2tcIixcbiAgICAgIEFyZy5Vbml0XG4gICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICBQcmludGYuZXByaW50ZlxuICAgICAgICAgICAgXCJXYXJuaW5nOiB0aGUgLWl0ZS1jaGVjayBmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIGhhcyBubyBlZmZlY3QuXFxuJSFcIjtcbiAgICAgICAgICBFeHRyYV93YXJuaW5ncy5jYXJlX2Fib3V0X2l0ZV9icmFuY2ggOj0gdHJ1ZSksXG4gICAgICBcIiAobm8gZWZmZWN0IC0tIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkpXCIgKTtcbiAgICAoIFwiLXBwXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gcyAtPiBwcmVwcm9jZXNzb3IgOj0gU29tZSBzKSxcbiAgICAgIFwiPGNvbW1hbmQ+ICBQaXBlIHNvdXJjZXMgdGhyb3VnaCBwcmVwcm9jZXNzb3IgPGNvbW1hbmQ+IChpbmNvbXBhdGlibGUgXFxcbiAgICAgICB3aXRoIC1hcy1wcHgpXCIgKTtcbiAgICAoIFwiLXJlY29uY2lsZVwiLFxuICAgICAgQXJnLlVuaXQgKGZ1biAoKSAtPiBzZXRfb3V0cHV0X21vZGUgKFJlY29uY2lsZSBVc2luZ19saW5lX2RpcmVjdGl2ZXMpKSxcbiAgICAgIFwiIChXSVApIFByZXR0eSBwcmludCB0aGUgb3V0cHV0IHVzaW5nIGEgbWl4IG9mIHRoZSBpbnB1dCBzb3VyY2UgYW5kIHRoZSBcXFxuICAgICAgIGdlbmVyYXRlZCBjb2RlXCIgKTtcbiAgICAoIFwiLXJlY29uY2lsZS13aXRoLWNvbW1lbnRzXCIsXG4gICAgICBBcmcuVW5pdFxuICAgICAgICAoZnVuICgpIC0+IHNldF9vdXRwdXRfbW9kZSAoUmVjb25jaWxlIERlbGltaXRpbmdfZ2VuZXJhdGVkX2Jsb2NrcykpLFxuICAgICAgXCIgKFdJUCkgc2FtZSBhcyAtcmVjb25jaWxlIGJ1dCB1c2VzIGNvbW1lbnRzIHRvIGVuY2xvc2UgdGhlIGdlbmVyYXRlZCBcXFxuICAgICAgIGNvZGVcIiApO1xuICAgIChcIi1uby1jb2xvclwiLCBBcmcuQ2xlYXIgdXNlX2NvbG9yLCBcIiBEb24ndCB1c2UgY29sb3JzIHdoZW4gcHJpbnRpbmcgZXJyb3JzXCIpO1xuICAgICggXCItZGlmZi1jbWRcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBzIC0+IGRpZmZfY29tbWFuZCA6PSBTb21lIHMpLFxuICAgICAgXCIgRGlmZiBjb21tYW5kIHdoZW4gdXNpbmcgY29kZSBleHBlY3RhdGlvbnMgKHVzZSAtIHRvIGRpc2FibGUgZGlmZmluZylcIiApO1xuICAgICggXCItcHJldHR5XCIsXG4gICAgICBBcmcuU2V0IHByZXR0eSxcbiAgICAgIFwiIEluc3RydWN0IGNvZGUgZ2VuZXJhdG9ycyB0byBpbXByb3ZlIHRoZSBwcmV0dGluZXNzIG9mIHRoZSBnZW5lcmF0ZWQgXFxcbiAgICAgICBjb2RlXCIgKTtcbiAgICAoXCItc3R5bGVyXCIsIEFyZy5TdHJpbmcgKGZ1biBzIC0+IHN0eWxlciA6PSBTb21lIHMpLCBcIiBDb2RlIHN0eWxlclwiKTtcbiAgICAoIFwiLW91dHB1dC1tZXRhZGF0YVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIHMgLT4gb3V0cHV0X21ldGFkYXRhX2ZpbGVuYW1lIDo9IFNvbWUgcyksXG4gICAgICBcIkZJTEUgV2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBtZXRhZGF0YVwiICk7XG4gICAgKCBcIi1jb3JyZWN0ZWQtc3VmZml4XCIsXG4gICAgICBBcmcuU2V0X3N0cmluZyBjb3JyZWN0ZWRfc3VmZml4LFxuICAgICAgXCJTVUZGSVggU3VmZml4IHRvIGFwcGVuZCB0byBjb3JyZWN0ZWQgZmlsZXNcIiApO1xuICBdXG5cbmxldCBnZXRfYXJncyA/KHN0YW5kYWxvbmVfYXJncyA9IHN0YW5kYWxvbmVfYXJncykgKCkgPVxuICBzdGFuZGFsb25lX2FyZ3MgQCBMaXN0LnJldiAhYXJnc1xuXG5sZXQgc3RhbmRhbG9uZV9tYWluICgpID1cbiAgbGV0IHVzYWdlID0gUHJpbnRmLnNwcmludGYgXCIlcyBbZXh0cmFfYXJnc10gWzxmaWxlcz5dXCIgZXhlX25hbWUgaW5cbiAgbGV0IGFyZ3MgPSBnZXRfYXJncyAoKSBpblxuICBBcmcucGFyc2UgKEFyZy5hbGlnbiBhcmdzKSBzZXRfaW5wdXQgdXNhZ2U7XG4gIGludGVycHJldF9tYXNrICgpO1xuICBpZiAhcmVxdWVzdF9wcmludF90cmFuc2Zvcm1hdGlvbnMgdGhlbiAoXG4gICAgcHJpbnRfdHJhbnNmb3JtYXRpb25zICgpO1xuICAgIFN0ZGxpYi5leGl0IDApO1xuICBpZiAhcmVxdWVzdF9wcmludF9wYXNzZXMgdGhlbiAoXG4gICAgcHJpbnRfcGFzc2VzICgpO1xuICAgIFN0ZGxpYi5leGl0IDApO1xuICBtYXRjaCAhaW5wdXQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXM6IG5vIGlucHV0IGZpbGUgZ2l2ZW5cXG4lIVwiIGV4ZV9uYW1lO1xuICAgICAgU3RkbGliLmV4aXQgMlxuICB8IFNvbWUgZm4gLT5cbiAgICAgIGxldCBraW5kID1cbiAgICAgICAgbWF0Y2ggIWtpbmQgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPiBrXG4gICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICBtYXRjaCBLaW5kLm9mX2ZpbGVuYW1lIGZuIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBrIC0+IGtcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICAgICAgICBcIiVzOiBkb24ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCAnJXMnLCB1c2UgLWltcGwgb3IgLWludGYuXFxuXCJcbiAgICAgICAgICAgICAgICAgIGV4ZV9uYW1lIGZuO1xuICAgICAgICAgICAgICAgIFN0ZGxpYi5leGl0IDIpXG4gICAgICBpblxuICAgICAgbGV0IGlucHV0X25hbWUsIHJlbG9jYXRlID1cbiAgICAgICAgbWF0Y2ggIWxvY19mbmFtZSB3aXRoIE5vbmUgLT4gKGZuLCBmYWxzZSkgfCBTb21lIGZuIC0+IChmbiwgdHJ1ZSlcbiAgICAgIGluXG4gICAgICBwcm9jZXNzX2ZpbGUga2luZCBmbiB+aW5wdXRfbmFtZSB+cmVsb2NhdGUgfm91dHB1dF9tb2RlOiFvdXRwdXRfbW9kZVxuICAgICAgICB+b3V0cHV0OiFvdXRwdXQgfmVtYmVkX2Vycm9yczohZW1iZWRfZXJyb3JzXG5cbmxldCByZXdyaXRlX2JpbmFyeV9hc3RfZmlsZSBpbnB1dF9mbiBvdXRwdXRfZm4gPVxuICBsZXQgaW5wdXRfbmFtZSwgaW5wdXRfdmVyc2lvbiwgYXN0ID0gbG9hZF9pbnB1dF9ydW5fYXNfcHB4IGlucHV0X2ZuIGluXG4gIGxldCBhc3QgPVxuICAgIHRyeVxuICAgICAgbGV0IGFzdCA9IGV4dHJhY3RfY29va2llcyBhc3QgaW5cbiAgICAgIGxldCB0b29sX25hbWUgPSBBc3RsaWIuQXN0X21ldGFkYXRhLnRvb2xfbmFtZSAoKSBpblxuICAgICAgbGV0IGhvb2sgPSBDb250ZXh0X2ZyZWUuR2VuZXJhdGVkX2NvZGVfaG9vay5ub3AgaW5cbiAgICAgIGxldCBleHBlY3RfbWlzbWF0Y2hfaGFuZGxlciA9IENvbnRleHRfZnJlZS5FeHBlY3RfbWlzbWF0Y2hfaGFuZGxlci5ub3AgaW5cbiAgICAgIHByb2Nlc3NfYXN0IGFzdCB+aW5wdXRfbmFtZSB+dG9vbF9uYW1lIH5ob29rIH5leHBlY3RfbWlzbWF0Y2hfaGFuZGxlclxuICAgICAgICB+ZW1iZWRfZXJyb3JzOnRydWVcbiAgICB3aXRoIGV4biAtPiBleG5fdG9fZXh0ZW5zaW9uIGV4biB+a2luZDooSW50Zl9vcl9pbXBsLmtpbmQgYXN0KVxuICBpblxuICB3aXRoX291dHB1dCAoU29tZSBvdXRwdXRfZm4pIH5iaW5hcnk6dHJ1ZSB+ZjooZnVuIG9jIC0+XG4gICAgICBBc3RfaW8ud3JpdGUgb2MgeyBpbnB1dF9uYW1lOyBpbnB1dF92ZXJzaW9uOyBhc3QgfSB+YWRkX3BweF9jb250ZXh0OnRydWUpXG5cbmxldCBwYXJzZV9pbnB1dCBwYXNzZWRfaW5fYXJncyB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZyA9XG4gIHRyeVxuICAgIEFyZy5wYXJzZV9hcmd2IHBhc3NlZF9pbl9hcmdzIChBcmcuYWxpZ24gdmFsaWRfYXJncylcbiAgICAgIChmdW4gXyAtPiByYWlzZSAoQXJnLkJhZCBcImFub255bW91cyBhcmd1bWVudHMgbm90IGFjY2VwdGVkXCIpKVxuICAgICAgaW5jb3JyZWN0X2lucHV0X21zZ1xuICB3aXRoXG4gIHwgQXJnLkJhZCBtc2cgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXNcIiBtc2c7XG4gICAgICBTdGRsaWIuZXhpdCAyXG4gIHwgQXJnLkhlbHAgbXNnIC0+XG4gICAgICBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnO1xuICAgICAgU3RkbGliLmV4aXQgMFxuXG5sZXQgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3MgfnVzYWdlIGlucHV0ID1cbiAgbGV0IHZhbGlkX2FyZ3MgPSBnZXRfYXJncyB+c3RhbmRhbG9uZV9hcmdzICgpIGluXG4gIG1hdGNoIExpc3QucmV2IEBAIEFycmF5LnRvX2xpc3QgQEAgaW5wdXQgd2l0aFxuICB8IG91dHB1dF9mbiA6OiBpbnB1dF9mbiA6OiBmbGFnc19hbmRfcHJvZ19uYW1lXG4gICAgd2hlbiBMaXN0Lmxlbmd0aCBmbGFnc19hbmRfcHJvZ19uYW1lID4gMCAtPlxuICAgICAgbGV0IHByb2dfbmFtZV9hbmRfZmxhZ3MgPSBMaXN0LnJldiBmbGFnc19hbmRfcHJvZ19uYW1lIHw+IEFycmF5Lm9mX2xpc3QgaW5cbiAgICAgIHBhcnNlX2lucHV0IHByb2dfbmFtZV9hbmRfZmxhZ3MgfnZhbGlkX2FyZ3MgfmluY29ycmVjdF9pbnB1dF9tc2c6dXNhZ2U7XG4gICAgICBpbnRlcnByZXRfbWFzayAoKTtcbiAgICAgIHJld3JpdGVfYmluYXJ5X2FzdF9maWxlIGlucHV0X2ZuIG91dHB1dF9mbjtcbiAgICAgIFN0ZGxpYi5leGl0IDBcbiAgfCBbIGhlbHA7IF8gXSB3aGVuIFN0cmluZy5lcXVhbCBoZWxwIFwiLWhlbHBcIiB8fCBTdHJpbmcuZXF1YWwgaGVscCBcIi0taGVscFwiIC0+XG4gICAgICBwYXJzZV9pbnB1dCBpbnB1dCB+dmFsaWRfYXJncyB+aW5jb3JyZWN0X2lucHV0X21zZzp1c2FnZTtcbiAgICAgIGFzc2VydCBmYWxzZVxuICB8IF8gLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiVXNhZ2U6ICVzXFxuJSFcIiB1c2FnZTtcbiAgICAgIFN0ZGxpYi5leGl0IDJcblxubGV0IHN0YW5kYWxvbmVfcnVuX2FzX3BweF9yZXdyaXRlciAoKSA9XG4gIGxldCBuID0gQXJyYXkubGVuZ3RoIFN0ZGxpYi5TeXMuYXJndiBpblxuICBsZXQgdXNhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgLWFzLXBweCBbZXh0cmFfYXJnc10gPGluZmlsZT4gPG91dGZpbGU+XCIgZXhlX25hbWVcbiAgaW5cbiAgbGV0IGFyZ3YgPSBBcnJheS5tYWtlIChuIC0gMSkgXCJcIiBpblxuICBhcmd2LigwKSA8LSBTdGRsaWIuU3lzLmFyZ3YuKDApO1xuICBmb3IgaSA9IDEgdG8gbiAtIDIgZG9cbiAgICBhcmd2LihpKSA8LSBTdGRsaWIuU3lzLmFyZ3YuKGkgKyAxKVxuICBkb25lO1xuICBsZXQgc3RhbmRhbG9uZV9hcmdzID1cbiAgICBMaXN0Lm1hcCBzdGFuZGFsb25lX2FyZ3MgfmY6KGZ1biAoYXJnLCBzcGVjLCBfZG9jKSAtPlxuICAgICAgICAoYXJnLCBzcGVjLCBcIiBVbnVzZWQgd2l0aCAtYXMtcHB4XCIpKVxuICBpblxuICBydW5fYXNfcHB4X3Jld3JpdGVyX21haW4gfnN0YW5kYWxvbmVfYXJncyB+dXNhZ2UgYXJndlxuXG5sZXQgc3RhbmRhbG9uZSAoKSA9XG4gIEFzdGxpYi5pbml0X2Vycm9yX3JlcG9ydGluZ19zdHlsZV91c2luZ19lbnZfdmFycyAoKTtcbiAgdHJ5XG4gICAgaWZcbiAgICAgIEFycmF5Lmxlbmd0aCBTdGRsaWIuU3lzLmFyZ3YgPj0gMlxuICAgICAgJiZcbiAgICAgIG1hdGNoIFN0ZGxpYi5TeXMuYXJndi4oMSkgd2l0aFxuICAgICAgfCBcIi1hcy1wcHhcIiB8IFwiLS1hcy1wcHhcIiAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICB0aGVuIHN0YW5kYWxvbmVfcnVuX2FzX3BweF9yZXdyaXRlciAoKVxuICAgIGVsc2Ugc3RhbmRhbG9uZV9tYWluICgpO1xuICAgIFN0ZGxpYi5leGl0IDBcbiAgd2l0aCBleG4gLT5cbiAgICBMb2NhdGlvbi5yZXBvcnRfZXhjZXB0aW9uIFN0ZGxpYi5Gb3JtYXQuZXJyX2Zvcm1hdHRlciBleG47XG4gICAgU3RkbGliLmV4aXQgMVxuXG5sZXQgcnVuX2FzX3BweF9yZXdyaXRlciAoKSA9XG4gIGxldCB1c2FnZSA9IFByaW50Zi5zcHJpbnRmIFwiJXMgW2V4dHJhX2FyZ3NdIDxpbmZpbGU+IDxvdXRmaWxlPlwiIGV4ZV9uYW1lIGluXG4gIGxldCBpbnB1dCA9IFN0ZGxpYi5TeXMuYXJndiBpblxuICB0cnkgcnVuX2FzX3BweF9yZXdyaXRlcl9tYWluIH5zdGFuZGFsb25lX2FyZ3M6W10gfnVzYWdlIGlucHV0XG4gIHdpdGggZXhuIC0+XG4gICAgTG9jYXRpb24ucmVwb3J0X2V4Y2VwdGlvbiBTdGRsaWIuRm9ybWF0LmVycl9mb3JtYXR0ZXIgZXhuO1xuICAgIFN0ZGxpYi5leGl0IDFcblxubGV0IHByZXR0eSAoKSA9ICFwcmV0dHlcblxubGV0IGVuYWJsZV9jaGVja3MgKCkgPVxuICAoKiBXZSBkbyBub3QgZW5hYmxlIHRoZSBsb2NhdGlvbnMgY2hlY2sgaGVyZSwgd2UgY3VycmVudGx5IHJlcXVpcmUgdGhhdCBvbmVcbiAgICAgdG8gYmUgc3BlY2lmaWNhbGx5IGVuYWJsZWQuICopXG4gIHBlcmZvcm1fY2hlY2tzIDo9IHRydWU7XG4gIHBlcmZvcm1fY2hlY2tzX29uX2V4dGVuc2lvbnMgOj0gdHJ1ZVxuXG5sZXQgZW5hYmxlX2xvY2F0aW9uX2NoZWNrICgpID0gcGVyZm9ybV9sb2NhdGlvbnNfY2hlY2sgOj0gdHJ1ZVxubGV0IGRpc2FibGVfbG9jYXRpb25fY2hlY2sgKCkgPSBwZXJmb3JtX2xvY2F0aW9uc19jaGVjayA6PSBmYWxzZVxubGV0IG1hcF9zdHJ1Y3R1cmUgc3QgPSBtYXBfc3RydWN0dXJlIHN0XG4iLCJvcGVuIEltcG9ydFxub3BlbiBBc3RfYnVpbGRlci5EZWZhdWx0XG5cbmxldCB1bmRlcnNjb3JlX2JpbmRpbmcgZXhwID1cbiAgbGV0IGxvYyA9IGV4cC5wZXhwX2xvYyBpblxuICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHBhdF9hbnkgfmxvYykgfmV4cHI6ZXhwXG5cbmxldCB2YXJzX29mID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBbTG9uZ2lkZW50LnQgTG9jYXRlZC50IGxpc3RdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcGF0dCBhY2MgPVxuICAgICAgbWF0Y2ggcGF0dC5wcGF0X2Rlc2Mgd2l0aFxuICAgICAgfCBQcGF0X3ZhciB2IC0+IExvY2F0ZWQubWFwIChmdW4gdmFyIC0+IExvbmdpZGVudC5MaWRlbnQgdmFyKSB2IDo6IGFjY1xuICAgICAgfCBfIC0+IHN1cGVyI3BhdHRlcm4gcGF0dCBhY2NcbiAgZW5kXG5cbigqIEZvciBldmVyeSBbbGV0IHggPSAuLi5dIHN0cnVjdHVyZSBpdGVtLCBhZGQgYSBbbGV0IF8gPSB4XSAqKVxubGV0IGFkZF9kdW1teV91c2VyX2Zvcl92YWx1ZXMgPVxuICBvYmplY3RcbiAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5tYXAgYXMgc3VwZXJcblxuICAgIG1ldGhvZCEgc3RydWN0dXJlIHN0ID1cbiAgICAgIGxldCByZWMgbG9vcCBzdCBhY2MgPVxuICAgICAgICBtYXRjaCBzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gICAgICAgIHwgKHsgcHN0cl9kZXNjID0gUHN0cl92YWx1ZSAoXywgdmJzKTsgcHN0cl9sb2MgPSBsb2MgfSBhcyBpdGVtKSA6OiByZXN0XG4gICAgICAgICAgLT5cbiAgICAgICAgICAgIGxldCB2YXJzID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgdmJzIH5pbml0OltdIH5mOihmdW4gYWNjIHZiIC0+XG4gICAgICAgICAgICAgICAgICB2YXJzX29mI3BhdHRlcm4gdmIucHZiX3BhdCBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGlnbiA9XG4gICAgICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgIChMaXN0LnJldl9tYXAgdmFycyB+ZjooZnVuIHYgLT5cbiAgICAgICAgICAgICAgICAgICAgIHVuZGVyc2NvcmVfYmluZGluZyAocGV4cF9pZGVudCB+bG9jOnYubG9jIHYpKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsb29wIHJlc3QgKGlnbiBAIChpdGVtIDo6IGFjYykpXG4gICAgICAgIHwgaXRlbSA6OiByZXN0IC0+IGxvb3AgcmVzdCAoaXRlbSA6OiBhY2MpXG4gICAgICBpblxuICAgICAgbG9vcCAoc3VwZXIjc3RydWN0dXJlIHN0KSBbXVxuICBlbmRcblxubGV0IGJpbmRzX21vZHVsZV9uYW1lcyA9XG4gIG9iamVjdFxuICAgIGluaGVyaXQgW2Jvb2xdIEFzdF90cmF2ZXJzZS5mb2xkIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIG1vZHVsZV9iaW5kaW5nIG1iIGFjYyA9XG4gICAgICBtYXRjaCBtYi5wbWJfbmFtZS50eHQgd2l0aFxuICAgICAgfCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlXG4gICAgICB8IE5vbmUgLT4gc3VwZXIjbW9kdWxlX2JpbmRpbmcgbWIgYWNjXG5cbiAgICBtZXRob2QhIG1vZHVsZV9kZWNsYXJhdGlvbiBtZCBhY2MgPVxuICAgICAgbWF0Y2ggbWQucG1kX25hbWUudHh0IHdpdGhcbiAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgfCBOb25lIC0+IHN1cGVyI21vZHVsZV9kZWNsYXJhdGlvbiBtZCBhY2NcblxuICAgIG1ldGhvZCEgbW9kdWxlX3N1YnN0aXR1dGlvbiBtcyBfID1cbiAgICAgIG1hdGNoIG1zLnBtc19uYW1lLnR4dCB3aXRoIChfIDogc3RyaW5nKSAtPiB0cnVlXG5cbiAgICBtZXRob2QhIGZ1bmN0b3JfcGFyYW1ldGVyIGZwIGFjYyA9XG4gICAgICBtYXRjaCBmcCB3aXRoXG4gICAgICB8IFVuaXQgLT4gYWNjXG4gICAgICB8IE5hbWVkIChuYW1lLCBfKSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoXyA6IHN0cmluZykgLT4gdHJ1ZVxuICAgICAgICAgIHwgTm9uZSAtPiBzdXBlciNmdW5jdG9yX3BhcmFtZXRlciBmcCBhY2MpXG5cbiAgICBtZXRob2QhIHBhdHRlcm4gcGF0IGFjYyA9XG4gICAgICBtYXRjaCBwYXQucHBhdF9kZXNjIHdpdGhcbiAgICAgIHwgUHBhdF91bnBhY2sgbmFtZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggbmFtZS50eHQgd2l0aCBTb21lIChfIDogc3RyaW5nKSAtPiB0cnVlIHwgTm9uZSAtPiBhY2MpXG4gICAgICB8IF8gLT4gc3VwZXIjcGF0dGVybiBwYXQgYWNjXG5cbiAgICBtZXRob2QhIGV4cHJlc3Npb24gZXhwciBhY2MgPVxuICAgICAgbWF0Y2ggZXhwci5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgfCBQZXhwX2xldG1vZHVsZSAobmFtZSwgXywgXykgLT4gKFxuICAgICAgICAgIG1hdGNoIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IFNvbWUgKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICB8IE5vbmUgLT4gc3VwZXIjZXhwcmVzc2lvbiBleHByIGFjYylcbiAgICAgIHwgXyAtPiBzdXBlciNleHByZXNzaW9uIGV4cHIgYWNjXG4gIGVuZFxuIiwib3BlbiBJbXBvcnRcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxuXG4oKiBbZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZV0gLS0gSWYgdHJ1ZSwgZ2VuZXJhdGVkIGNvZGVcbiAgIGNvbnRhaW5zIGNvbXBpbGVyIGF0dHJpYnV0ZSB0byBkaXNhYmxlIHVudXNlZCB3YXJuaW5ncywgaW5zdGVhZCBvZlxuICAgaW5zZXJ0aW5nIFtsZXQgXyA9IC4uLiBdLiAqKVxubGV0IGRvX2luc2VydF91bnVzZWRfd2FybmluZ19hdHRyaWJ1dGUgPSByZWYgZmFsc2VcbmxldCBrZWVwX3czMl9pbXBsID0gcmVmIGZhbHNlXG5sZXQga2VlcF93MzJfaW50ZiA9IHJlZiBmYWxzZVxuXG5sZXQgKCkgPVxuICBsZXQga2VlcF93MzJfc3BlYyA9XG4gICAgU3RkbGliLkFyZy5TeW1ib2xcbiAgICAgICggWyBcImltcGxcIjsgXCJpbnRmXCI7IFwiYm90aFwiIF0sXG4gICAgICAgIGZ1bmN0aW9uXG4gICAgICAgIHwgXCJpbXBsXCIgLT4ga2VlcF93MzJfaW1wbCA6PSB0cnVlXG4gICAgICAgIHwgXCJpbnRmXCIgLT4ga2VlcF93MzJfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXCJib3RoXCIgLT5cbiAgICAgICAgICAgIGtlZXBfdzMyX2ltcGwgOj0gdHJ1ZTtcbiAgICAgICAgICAgIGtlZXBfdzMyX2ludGYgOj0gdHJ1ZVxuICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlIClcbiAgaW5cbiAgbGV0IGNvbnZfdzMyX3NwZWMgPVxuICAgIFN0ZGxpYi5BcmcuU3ltYm9sXG4gICAgICAoIFsgXCJjb2RlXCI7IFwiYXR0cmlidXRlXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImNvZGVcIiAtPiBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIDo9IGZhbHNlXG4gICAgICAgIHwgXCJhdHRyaWJ1dGVcIiAtPiBkb19pbnNlcnRfdW51c2VkX3dhcm5pbmdfYXR0cmlidXRlIDo9IHRydWVcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSApXG4gIGluXG4gIERyaXZlci5hZGRfYXJnIFwiLWRlcml2aW5nLWtlZXAtdzMyXCIga2VlcF93MzJfc3BlY1xuICAgIH5kb2M6XCIgRG8gbm90IHRyeSB0byBkaXNhYmxlIHdhcm5pbmcgMzIgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZVwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1kaXNhYmxlLXczMi1tZXRob2RcIiBjb252X3czMl9zcGVjXG4gICAgfmRvYzpcIiBIb3cgdG8gZGlzYWJsZSB3YXJuaW5nIDMyIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIjtcbiAgRHJpdmVyLmFkZF9hcmcgXCItdHlwZS1jb252LWtlZXAtdzMyXCIga2VlcF93MzJfc3BlY1xuICAgIH5kb2M6XCIgRGVwcmVjYXRlZCwgdXNlIC1kZXJpdmluZy1rZWVwLXczMlwiO1xuICBEcml2ZXIuYWRkX2FyZyBcIi10eXBlLWNvbnYtdzMyXCIgY29udl93MzJfc3BlY1xuICAgIH5kb2M6XCIgRGVwcmVjYXRlZCwgdXNlIC1kZXJpdmluZy1kaXNhYmxlLXczMi1tZXRob2RcIlxuXG5sZXQga2VlcF93MzJfaW1wbCAoKSA9ICFrZWVwX3czMl9pbXBsIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3czMl9pbnRmICgpID0gIWtlZXBfdzMyX2ludGYgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGtlZXBfdzYwX2ltcGwgPSByZWYgZmFsc2VcbmxldCBrZWVwX3c2MF9pbnRmID0gcmVmIGZhbHNlXG5cbmxldCAoKSA9XG4gIGxldCBrZWVwX3c2MF9zcGVjID1cbiAgICBTdGRsaWIuQXJnLlN5bWJvbFxuICAgICAgKCBbIFwiaW1wbFwiOyBcImludGZcIjsgXCJib3RoXCIgXSxcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBcImltcGxcIiAtPiBrZWVwX3c2MF9pbXBsIDo9IHRydWVcbiAgICAgICAgfCBcImludGZcIiAtPiBrZWVwX3c2MF9pbnRmIDo9IHRydWVcbiAgICAgICAgfCBcImJvdGhcIiAtPlxuICAgICAgICAgICAga2VlcF93NjBfaW1wbCA6PSB0cnVlO1xuICAgICAgICAgICAga2VlcF93NjBfaW50ZiA6PSB0cnVlXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKVxuICBpblxuICBEcml2ZXIuYWRkX2FyZyBcIi1kZXJpdmluZy1rZWVwLXc2MFwiIGtlZXBfdzYwX3NwZWNcbiAgICB+ZG9jOlwiIERvIG5vdCB0cnkgdG8gZGlzYWJsZSB3YXJuaW5nIDYwIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGVcIlxuXG5sZXQga2VlcF93NjBfaW1wbCAoKSA9ICFrZWVwX3c2MF9pbXBsIHx8IERyaXZlci5wcmV0dHkgKClcbmxldCBrZWVwX3c2MF9pbnRmICgpID0gIWtlZXBfdzYwX2ludGYgfHwgRHJpdmVyLnByZXR0eSAoKVxubGV0IGFsbG93X3VudXNlZF9jb2RlX3dhcm5pbmdzID0gcmVmIE9wdGlvbnMuZGVmYXVsdF9hbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5sZXQgKCkgPVxuICBEcml2ZXIuYWRkX2FyZyBcIi11bnVzZWQtY29kZS13YXJuaW5nc1wiXG4gICAgKEJvb2wgKCggOj0gKSBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncykpXG4gICAgfmRvYzpcIl8gQWxsb3cgcHB4IGRlcml2ZXJzIHRvIGVuYWJsZSB1bnVzZWQgY29kZSB3YXJuaW5nc1wiXG5cbmxldCBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKSA9ICFhbGxvd191bnVzZWRfY29kZV93YXJuaW5nc1xuXG5tb2R1bGUgQXJncyA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBBc3RfcGF0dGVybiA6XG4gICAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBBc3RfcGF0dGVyblxuICAgICAgZW5kXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIEFzdF9wYXR0ZXJuLnQpXG5cbiAgdHlwZSAnYSBwYXJhbSA9IHtcbiAgICBuYW1lIDogc3RyaW5nO1xuICAgIHBhdHRlcm4gOiAoZXhwcmVzc2lvbiwgJ2EpIEFzdF9wYXR0ZXJuLlBhY2tlZC50O1xuICAgIGRlZmF1bHQgOiAnYTtcbiAgfVxuXG4gIGxldCBhcmcgbmFtZSBwYXR0ZXJuID1cbiAgICB7XG4gICAgICBuYW1lO1xuICAgICAgZGVmYXVsdCA9IE5vbmU7XG4gICAgICBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uUGFja2VkLmNyZWF0ZSBwYXR0ZXJuIChmdW4geCAtPiBTb21lIHgpO1xuICAgIH1cblxuICBsZXQgZmxhZyBuYW1lID1cbiAgICBsZXQgcGF0dGVybiA9IHBleHBfaWRlbnQgKGxpZGVudCAoc3RyaW5nIG5hbWUpKSBpblxuICAgIHsgbmFtZTsgZGVmYXVsdCA9IGZhbHNlOyBwYXR0ZXJuID0gQXN0X3BhdHRlcm4uUGFja2VkLmNyZWF0ZSBwYXR0ZXJuIHRydWUgfVxuXG4gIHR5cGUgKF8sIF8pIHQgPVxuICAgIHwgTmlsIDogKCdtLCAnbSkgdFxuICAgIHwgQ29ucyA6ICgnbTEsICdhIC0+ICdtMikgdCAqICdhIHBhcmFtIC0+ICgnbTEsICdtMikgdFxuXG4gIGxldCBlbXB0eSA9IE5pbFxuICBsZXQgKCArPiApIGEgYiA9IENvbnMgKGEsIGIpXG5cbiAgbGV0IHJlYyBuYW1lcyA6IHR5cGUgYSBiLiAoYSwgYikgdCAtPiBzdHJpbmcgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gW11cbiAgICB8IENvbnMgKHQsIHApIC0+IHAubmFtZSA6OiBuYW1lcyB0XG5cbiAgbW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gICAgdHlwZSAoXywgXykgaW5zdGFuY2UgPVxuICAgICAgfCBJX25pbCA6ICgnbSwgJ20pIGluc3RhbmNlXG4gICAgICB8IElfY29ucyA6ICgnbTEsICdhIC0+ICdtMikgaW5zdGFuY2UgKiAnYSAtPiAoJ20xLCAnbTIpIGluc3RhbmNlXG5cbiAgICBsZXQgcmVjIGNyZWF0ZSA6XG4gICAgICAgIHR5cGUgYSBiLiAoYSwgYikgdCAtPiAoc3RyaW5nICogZXhwcmVzc2lvbikgbGlzdCAtPiAoYSwgYikgaW5zdGFuY2UgPVxuICAgICBmdW4gc3BlYyBhcmdzIC0+XG4gICAgICBtYXRjaCBzcGVjIHdpdGhcbiAgICAgIHwgTmlsIC0+IElfbmlsXG4gICAgICB8IENvbnMgKHQsIHApIC0+XG4gICAgICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIExpc3QuYXNzb2Nfb3B0IHAubmFtZSBhcmdzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwLmRlZmF1bHRcbiAgICAgICAgICAgIHwgU29tZSBleHByIC0+IEFzdF9wYXR0ZXJuLlBhY2tlZC5wYXJzZSBwLnBhdHRlcm4gZXhwci5wZXhwX2xvYyBleHByXG4gICAgICAgICAgaW5cbiAgICAgICAgICBJX2NvbnMgKGNyZWF0ZSB0IGFyZ3MsIHZhbHVlKVxuXG4gICAgbGV0IHJlYyBhcHBseSA6IHR5cGUgYSBiLiAoYSwgYikgaW5zdGFuY2UgLT4gYSAtPiBiID1cbiAgICAgZnVuIHQgZiAtPiBtYXRjaCB0IHdpdGggSV9uaWwgLT4gZiB8IElfY29ucyAodCwgeCkgLT4gYXBwbHkgdCBmIHhcbiAgZW5kXG5cbiAgbGV0IGFwcGx5IHQgYXJncyBmID0gSW5zdGFuY2UuYXBwbHkgKEluc3RhbmNlLmNyZWF0ZSB0IGFyZ3MpIGZcbmVuZFxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IEdlbmVyYXRvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuXG5sZXQgaWdub3JlIChfIDogdCkgPSAoKVxuXG50eXBlIHBhcnNlZF9hcmdzID1cbiAgfCBBcmdzIG9mIChzdHJpbmcgKiBleHByZXNzaW9uKSBsaXN0XG4gIHwgVW5rbm93bl9zeW50YXggb2YgTG9jYXRpb24udCAqIHN0cmluZ1xuXG50eXBlICdpdGVtIGRlcml2ZWRfY29kZSA9IHsgaXRlbXMgOiAnaXRlbSBsaXN0OyB1bnVzZWRfY29kZV93YXJuaW5ncyA6IGJvb2wgfVxuXG5tb2R1bGUgR2VuZXJhdG9yID0gc3RydWN0XG4gIHR5cGUgZGVyaXZlciA9IHRcblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgVCA6IHtcbiAgICAgICAgc3BlYyA6ICgnYywgJ2EpIEFyZ3MudDtcbiAgICAgICAgZ2VuIDogY3R4dDpFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLnQgLT4gJ2IgLT4gJ2M7XG4gICAgICAgIGFyZ19uYW1lcyA6IFN0cmluZy5TZXQudDtcbiAgICAgICAgZGVwcyA6IGRlcml2ZXIgbGlzdDtcbiAgICAgICAgdW51c2VkX2NvZGVfd2FybmluZ3MgOiBib29sO1xuICAgICAgfVxuICAgICAgICAtPiAoJ2EsICdiKSB0XG5cbiAgbGV0IGRlcHMgKFQgdCkgPSB0LmRlcHNcblxuICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICBsZXQgbWFrZSA/YXR0cmlidXRlczooXyA9IFtdKSA/KGRlcHMgPSBbXSkgPyh1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlKVxuICAgICAgICBzcGVjIGdlbiA9XG4gICAgICBsZXQgYXJnX25hbWVzID0gU3RyaW5nLlNldC5vZl9saXN0IChBcmdzLm5hbWVzIHNwZWMpIGluXG4gICAgICBUIHsgc3BlYzsgZ2VuOyBhcmdfbmFtZXM7IGRlcHM7IHVudXNlZF9jb2RlX3dhcm5pbmdzIH1cblxuICAgIGxldCBtYWtlX25vYXJnID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBnZW4gPVxuICAgICAgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgQXJncy5lbXB0eSBnZW5cbiAgZW5kXG5cbiAgbGV0IG1ha2UgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIHNwZWMgZ2VuID1cbiAgICBWMi5tYWtlID9hdHRyaWJ1dGVzID9kZXBzID91bnVzZWRfY29kZV93YXJuaW5ncyBzcGVjXG4gICAgICAoRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci53aXRoX2xvY19hbmRfcGF0aCBnZW4pXG5cbiAgbGV0IG1ha2Vfbm9hcmcgP2F0dHJpYnV0ZXMgP2RlcHMgP3VudXNlZF9jb2RlX3dhcm5pbmdzIGdlbiA9XG4gICAgbWFrZSA/YXR0cmlidXRlcyA/ZGVwcyA/dW51c2VkX2NvZGVfd2FybmluZ3MgQXJncy5lbXB0eSBnZW5cblxuICBsZXQgbWVyZ2VfYWNjZXB0ZWRfYXJncyBsID1cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYWNjXG4gICAgICB8IFQgdCA6OiByZXN0IC0+IGxvb3AgKFN0cmluZy5TZXQudW5pb24gYWNjIHQuYXJnX25hbWVzKSByZXN0XG4gICAgaW5cbiAgICBsb29wIFN0cmluZy5TZXQuZW1wdHkgbFxuXG4gIGxldCBjaGVja19hcmd1bWVudHMgbmFtZSBnZW5lcmF0b3JzIChhcmdzIDogKHN0cmluZyAqIGV4cHJlc3Npb24pIGxpc3QpID1cbiAgICBsZXQgZW1wdHlfbGFiZWxfZXJyb3IgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwIGFyZ3MgfmY6KGZ1biAobGFiZWwsIGUpIC0+XG4gICAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IGxhYmVsIHRoZW5cbiAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYzplLnBleHBfbG9jXG4gICAgICAgICAgICAgICAgIFwiUHB4bGliLkRlcml2aW5nOiBnZW5lcmF0b3IgYXJndW1lbnRzIG11c3QgYmUgbGFiZWxsZWRcIilcbiAgICAgICAgICBlbHNlIE5vbmUpXG4gICAgaW5cbiAgICBsZXQgZHVwbGljYXRlX2FyZ3VtZW50X2Vycm9yID1cbiAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgKExpc3QuZmluZF9hX2R1cCBhcmdzIH5jb21wYXJlOihmdW4gKGEsIF8pIChiLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBhIGIpKVxuICAgICAgICB+ZjooZnVuIChsYWJlbCwgZSkgLT5cbiAgICAgICAgICBMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgXCJQcHhsaWIuRGVyaXZpbmc6IGFyZ3VtZW50IGxhYmVsbGVkICclcycgYXBwZWFycyBtb3JlIHRoYW4gb25jZVwiXG4gICAgICAgICAgICBsYWJlbClcbiAgICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgaW5cbiAgICBsZXQgYWNjZXB0ZWRfYXJncyA9IG1lcmdlX2FjY2VwdGVkX2FyZ3MgZ2VuZXJhdG9ycyBpblxuICAgIGxldCB1bmFjY2VwdGVkX2FyZ3VtZW50ID1cbiAgICAgIExpc3QuZmlsdGVyX21hcCBhcmdzIH5mOihmdW4gKGxhYmVsLCBlKSAtPlxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLlNldC5tZW0gbGFiZWwgYWNjZXB0ZWRfYXJncykgdGhlblxuICAgICAgICAgICAgbGV0IHNwZWxsY2hlY2tfbXNnID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBTcGVsbGNoZWNrLnNwZWxsY2hlY2sgKFN0cmluZy5TZXQuZWxlbWVudHMgYWNjZXB0ZWRfYXJncykgbGFiZWxcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgcyAtPiBcIi5cXG5cIiBeIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6ZS5wZXhwX2xvY1xuICAgICAgICAgICAgICAgICBcIlBweGxpYi5EZXJpdmluZzogZ2VuZXJhdG9yICclcycgZG9lc24ndCBhY2NlcHQgYXJndW1lbnQgXFxcbiAgICAgICAgICAgICAgICAgICclcyclc1wiXG4gICAgICAgICAgICAgICAgIG5hbWUgbGFiZWwgc3BlbGxjaGVja19tc2cpXG4gICAgICAgICAgZWxzZSBOb25lKVxuICAgIGluXG4gICAgbGV0IGVycm9ycyA9XG4gICAgICBlbXB0eV9sYWJlbF9lcnJvciBAIGR1cGxpY2F0ZV9hcmd1bWVudF9lcnJvciBAIHVuYWNjZXB0ZWRfYXJndW1lbnRcbiAgICBpblxuICAgIGlmIExpc3QubGVuZ3RoIGVycm9ycyA9IDAgdGhlbiBPayAoKSBlbHNlIEVycm9yIGVycm9yc1xuXG4gIGxldCBhcHBseSAoVCB0KSB+bmFtZTpfIH5jdHh0IHggYXJncyA9IEFyZ3MuYXBwbHkgdC5zcGVjIGFyZ3MgKHQuZ2VuIH5jdHh0IHgpXG5cbiAgbGV0IGFwcGx5X2FsbCB+Y3R4dCBlbnRyeSAobmFtZSwgZ2VuZXJhdG9ycywgYXJncykgPVxuICAgIGxldCBvcGVuIFJlc3VsdCBpblxuICAgIGNoZWNrX2FyZ3VtZW50cyBuYW1lLnR4dCBnZW5lcmF0b3JzIGFyZ3MgPj58IGZ1biAoKSAtPlxuICAgIExpc3QubWFwIGdlbmVyYXRvcnMgfmY6KGZ1biAoVCB0KSAtPlxuICAgICAgICB7XG4gICAgICAgICAgaXRlbXMgPSBhcHBseSAoVCB0KSB+bmFtZTpuYW1lLnR4dCB+Y3R4dCBlbnRyeSBhcmdzO1xuICAgICAgICAgIHVudXNlZF9jb2RlX3dhcm5pbmdzID0gdC51bnVzZWRfY29kZV93YXJuaW5ncztcbiAgICAgICAgfSlcblxuICBsZXQgYXBwbHlfYWxsIH5jdHh0IGVudHJ5IGdlbmVyYXRvcnMgZXh0X3RvX2l0ZW0gPVxuICAgIGxldCBsID0gTGlzdC5tYXAgZ2VuZXJhdG9ycyB+ZjooYXBwbHlfYWxsIH5jdHh0IGVudHJ5KSBpblxuICAgIGxldCBsMSwgbGVyciA9XG4gICAgICBMaXN0LnBhcnRpdGlvbl9tYXAgKGZ1bmN0aW9uIE9rIGUgLT4gTGVmdCBlIHwgRXJyb3IgZSAtPiBSaWdodCBlKSBsXG4gICAgaW5cbiAgICBsZXQgbGVyciA9XG4gICAgICBMaXN0LmNvbmNhdCBsZXJyXG4gICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGVyciAtPiBleHRfdG9faXRlbSB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgIGluXG4gICAgTGlzdC5jb25jYXQgbDEgQCBbIHsgaXRlbXMgPSBsZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH0gXVxuZW5kXG5cbm1vZHVsZSBEZXJpdmVyID0gc3RydWN0XG4gIG1vZHVsZSBBY3R1YWxfZGVyaXZlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBzdHJfdHlwZV9kZWNsIDpcbiAgICAgICAgKHN0cnVjdHVyZSwgcmVjX2ZsYWcgKiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl90eXBlX2V4dCA6IChzdHJ1Y3R1cmUsIHR5cGVfZXh0ZW5zaW9uKSBHZW5lcmF0b3IudCBvcHRpb247XG4gICAgICBzdHJfZXhjZXB0aW9uIDogKHN0cnVjdHVyZSwgdHlwZV9leGNlcHRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsIDpcbiAgICAgICAgKHN0cnVjdHVyZSwgbW9kdWxlX3R5cGVfZGVjbGFyYXRpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ190eXBlX2RlY2wgOlxuICAgICAgICAoc2lnbmF0dXJlLCByZWNfZmxhZyAqIHR5cGVfZGVjbGFyYXRpb24gbGlzdCkgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX3R5cGVfZXh0IDogKHNpZ25hdHVyZSwgdHlwZV9leHRlbnNpb24pIEdlbmVyYXRvci50IG9wdGlvbjtcbiAgICAgIHNpZ19leGNlcHRpb24gOiAoc2lnbmF0dXJlLCB0eXBlX2V4Y2VwdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgOlxuICAgICAgICAoc2lnbmF0dXJlLCBtb2R1bGVfdHlwZV9kZWNsYXJhdGlvbikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgZXh0ZW5zaW9uIDpcbiAgICAgICAgKGxvYzpMb2NhdGlvbi50IC0+IHBhdGg6c3RyaW5nIC0+IGNvcmVfdHlwZSAtPiBleHByZXNzaW9uKSBvcHRpb247XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgQWxpYXMgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB7XG4gICAgICBzdHJfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzdHJfdHlwZV9leHQgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl9leGNlcHRpb24gOiBzdHJpbmcgbGlzdDtcbiAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgICBzaWdfdHlwZV9leHQgOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ19leGNlcHRpb24gOiBzdHJpbmcgbGlzdDtcbiAgICAgIHNpZ19tb2R1bGVfdHlwZV9kZWNsIDogc3RyaW5nIGxpc3Q7XG4gICAgfVxuICBlbmRcblxuICBtb2R1bGUgRmllbGQgPSBzdHJ1Y3RcbiAgICB0eXBlIGtpbmQgPSBTdHIgfCBTaWdcblxuICAgIHR5cGUgKCdhLCAnYikgdCA9IHtcbiAgICAgIG5hbWUgOiBzdHJpbmc7XG4gICAgICBraW5kIDoga2luZDtcbiAgICAgIGdldCA6IEFjdHVhbF9kZXJpdmVyLnQgLT4gKCdhLCAnYikgR2VuZXJhdG9yLnQgb3B0aW9uO1xuICAgICAgZ2V0X3NldCA6IEFsaWFzLnQgLT4gc3RyaW5nIGxpc3Q7XG4gICAgfVxuXG4gICAgbGV0IHN0cl90eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU3RyO1xuICAgICAgICBuYW1lID0gXCJ0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZGVjbCk7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX3R5cGVfZXh0ID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwidHlwZSBleHRlbnNpb25cIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX3R5cGVfZXh0KTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl90eXBlX2V4dCk7XG4gICAgICB9XG5cbiAgICBsZXQgc3RyX2V4Y2VwdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTdHI7XG4gICAgICAgIG5hbWUgPSBcImV4Y2VwdGlvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zdHJfZXhjZXB0aW9uKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnN0cl9leGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgbGV0IHN0cl9tb2R1bGVfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFN0cjtcbiAgICAgICAgbmFtZSA9IFwibW9kdWxlIHR5cGVcIjtcbiAgICAgICAgZ2V0ID0gKGZ1biB0IC0+IHQuc3RyX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc3RyX21vZHVsZV90eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ190eXBlX2RlY2wgPVxuICAgICAge1xuICAgICAgICBraW5kID0gU2lnO1xuICAgICAgICBuYW1lID0gXCJzaWduYXR1cmUgdHlwZVwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ190eXBlX2RlY2wpO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ190eXBlX2V4dCA9XG4gICAgICB7XG4gICAgICAgIGtpbmQgPSBTaWc7XG4gICAgICAgIG5hbWUgPSBcInNpZ25hdHVyZSB0eXBlIGV4dGVuc2lvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfdHlwZV9leHQpO1xuICAgICAgICBnZXRfc2V0ID0gKGZ1biB0IC0+IHQuc2lnX3R5cGVfZXh0KTtcbiAgICAgIH1cblxuICAgIGxldCBzaWdfZXhjZXB0aW9uID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIGV4Y2VwdGlvblwiO1xuICAgICAgICBnZXQgPSAoZnVuIHQgLT4gdC5zaWdfZXhjZXB0aW9uKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ19leGNlcHRpb24pO1xuICAgICAgfVxuXG4gICAgbGV0IHNpZ19tb2R1bGVfdHlwZV9kZWNsID1cbiAgICAgIHtcbiAgICAgICAga2luZCA9IFNpZztcbiAgICAgICAgbmFtZSA9IFwic2lnbmF0dXJlIG1vZHVsZSB0eXBlXCI7XG4gICAgICAgIGdldCA9IChmdW4gdCAtPiB0LnNpZ19tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgICAgZ2V0X3NldCA9IChmdW4gdCAtPiB0LnNpZ19tb2R1bGVfdHlwZV9kZWNsKTtcbiAgICAgIH1cbiAgZW5kXG5cbiAgdHlwZSB0ID0gQWN0dWFsX2Rlcml2ZXIgb2YgQWN0dWFsX2Rlcml2ZXIudCB8IEFsaWFzIG9mIEFsaWFzLnRcbiAgdHlwZSBQcHhfZGVyaXZlcnMuZGVyaXZlciArPSBUIG9mIHRcblxuICBsZXQgZGVyaXZlcnMgKCkgPVxuICAgIExpc3QuZmlsdGVyX21hcCAoUHB4X2Rlcml2ZXJzLmRlcml2ZXJzICgpKSB+ZjooZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgVCB0IC0+IFNvbWUgKG5hbWUsIHQpXG4gICAgICB8IF8gLT4gTm9uZSlcblxuICBleGNlcHRpb24gTm90X3N1cHBvcnRlZCBvZiBzdHJpbmdcblxuICBsZXQgcmVzb2x2ZV9hY3R1YWxfZGVyaXZlcnMgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpIG5hbWUgPVxuICAgIGxldCByZWMgbG9vcCBuYW1lIGNvbGxlY3RlZCA9XG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0cyBjb2xsZWN0ZWQgfmY6KGZ1biAoZCA6IEFjdHVhbF9kZXJpdmVyLnQpIC0+XG4gICAgICAgICAgICBTdHJpbmcuZXF1YWwgZC5uYW1lIG5hbWUpXG4gICAgICB0aGVuIGNvbGxlY3RlZFxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCBQcHhfZGVyaXZlcnMubG9va3VwIG5hbWUgd2l0aFxuICAgICAgICB8IFNvbWUgKFQgKEFjdHVhbF9kZXJpdmVyIGRydikpIC0+IGRydiA6OiBjb2xsZWN0ZWRcbiAgICAgICAgfCBTb21lIChUIChBbGlhcyBhbGlhcykpIC0+XG4gICAgICAgICAgICBsZXQgc2V0ID0gZmllbGQuZ2V0X3NldCBhbGlhcyBpblxuICAgICAgICAgICAgTGlzdC5mb2xkX3JpZ2h0IHNldCB+aW5pdDpjb2xsZWN0ZWQgfmY6bG9vcFxuICAgICAgICB8IF8gLT4gcmFpc2UgKE5vdF9zdXBwb3J0ZWQgbmFtZSlcbiAgICBpblxuICAgIExpc3QucmV2IChsb29wIG5hbWUgW10pXG5cbiAgbGV0IHJlc29sdmVfaW50ZXJuYWwgKGZpZWxkIDogKF8sIF8pIEZpZWxkLnQpIG5hbWUgPVxuICAgIExpc3QubWFwIChyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyBmaWVsZCBuYW1lKSB+ZjooZnVuIGRydiAtPlxuICAgICAgICBtYXRjaCBmaWVsZC5nZXQgZHJ2IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IHJhaXNlIChOb3Rfc3VwcG9ydGVkIG5hbWUpXG4gICAgICAgIHwgU29tZSBnIC0+IChkcnYubmFtZSwgZykpXG5cbiAgbGV0IHN1cHBvcnRlZF9mb3IgZmllbGQgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChkZXJpdmVycyAoKSkgfmluaXQ6U3RyaW5nLlNldC5lbXB0eSB+ZjooZnVuIGFjYyAobmFtZSwgXykgLT5cbiAgICAgICAgbWF0Y2ggcmVzb2x2ZV9pbnRlcm5hbCBmaWVsZCBuYW1lIHdpdGhcbiAgICAgICAgfCBfIC0+IFN0cmluZy5TZXQuYWRkIG5hbWUgYWNjXG4gICAgICAgIHwgZXhjZXB0aW9uIE5vdF9zdXBwb3J0ZWQgXyAtPiBhY2MpXG4gICAgfD4gU3RyaW5nLlNldC5lbGVtZW50c1xuXG4gIGxldCBub3Rfc3VwcG9ydGVkIChmaWVsZCA6IChfLCBfKSBGaWVsZC50KSA/KHNwZWxsY2hlY2sgPSB0cnVlKSBuYW1lID1cbiAgICBsZXQgc3BlbGxjaGVja19tc2cgPVxuICAgICAgaWYgc3BlbGxjaGVjayB0aGVuXG4gICAgICAgIG1hdGNoIFNwZWxsY2hlY2suc3BlbGxjaGVjayAoc3VwcG9ydGVkX2ZvciBmaWVsZCkgbmFtZS50eHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgcyAtPiBcIi5cXG5cIiBeIHNcbiAgICAgIGVsc2UgXCJcIlxuICAgIGluXG4gICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICBcIlBweGxpYi5EZXJpdmluZzogJyVzJyBpcyBub3QgYSBzdXBwb3J0ZWQgJXMgZGVyaXZpbmcgZ2VuZXJhdG9yJXNcIlxuICAgICAgbmFtZS50eHQgZmllbGQubmFtZSBzcGVsbGNoZWNrX21zZ1xuXG4gIGxldCByZXNvbHZlIGZpZWxkIG5hbWUgPVxuICAgIHRyeSBPayAocmVzb2x2ZV9pbnRlcm5hbCBmaWVsZCBuYW1lLnR4dClcbiAgICB3aXRoIE5vdF9zdXBwb3J0ZWQgbmFtZScgLT5cbiAgICAgIEVycm9yIChub3Rfc3VwcG9ydGVkIGZpZWxkIH5zcGVsbGNoZWNrOihTdHJpbmcuZXF1YWwgbmFtZS50eHQgbmFtZScpIG5hbWUpXG5cbiAgbGV0IHJlc29sdmVfYWxsIGZpZWxkIGRlcml2ZXJzID1cbiAgICBsZXQgZGVyaXZlcnNfYW5kX2FyZ3MsIGRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyA9XG4gICAgICBMaXN0LnBhcnRpdGlvbl9tYXBcbiAgICAgICAgKGZ1biAobmFtZSwgYXJncykgLT5cbiAgICAgICAgICBtYXRjaCBQcHhfZGVyaXZlcnMubG9va3VwIG5hbWUudHh0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gRWl0aGVyLlJpZ2h0IChub3Rfc3VwcG9ydGVkIGZpZWxkIG5hbWUpXG4gICAgICAgICAgfCBTb21lIChUIF8pIC0+IChcbiAgICAgICAgICAgICAgKCogSXQncyBvbmUgb2Ygb3VycywgcGFyc2UgdGhlIGFyZ3VtZW50cyBub3cuIFdlIGNhbid0IGRvIGl0IGJlZm9yZSBzaW5jZVxuICAgICAgICAgICAgICAgICBwcHhfZGVyaXZpbmcgdXNlcyBhIGRpZmZlcmVudCBzeW50YXggZm9yIGFyZ3VtZW50cy4gKilcbiAgICAgICAgICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICAgICAgICAgIHwgQXJncyBsIC0+IEVpdGhlci5MZWZ0IChTb21lIChuYW1lLCBsKSlcbiAgICAgICAgICAgICAgfCBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpIC0+XG4gICAgICAgICAgICAgICAgICBFaXRoZXIuUmlnaHRcbiAgICAgICAgICAgICAgICAgICAgKExvY2F0aW9uLmVycm9yX2V4dGVuc2lvbmYgfmxvYyBcIlBweGxpYi5EZXJpdmluZzogJXNcIiBtc2cpKVxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICgqIEl0J3Mgbm90IG9uZSBvZiBvdXJzLCBpZ25vcmUgaXQuICopXG4gICAgICAgICAgICAgIEVpdGhlci5MZWZ0IE5vbmUpXG4gICAgICAgIGRlcml2ZXJzXG4gICAgICB8PiBmdW4gKGwxLCBsMikgLT4gKExpc3QuZmlsdGVyX29wdCBsMSwgbDIpXG4gICAgaW5cbiAgICAoKiBTZXQgb2YgYWN0dWFsIGRlcml2ZXIgbmFtZXMgKilcbiAgICBsZXQgc2VlbiA9IEhhc2h0YmwuY3JlYXRlIDE2IGluXG4gICAgbGV0IHJlc3VsdCwgZGVwX2Vycm9ycyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdCB+aW5pdDooW10sIFtdKSBkZXJpdmVyc19hbmRfYXJnc1xuICAgICAgICB+ZjooZnVuIChyZXN1bHQsIGVycm9ycykgKG5hbWUsIGFyZ3MpIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzb2x2ZSBmaWVsZCBuYW1lIHdpdGhcbiAgICAgICAgICB8IEVycm9yIGUgLT4gKHJlc3VsdCwgZXJyb3JzIEAgWyBlIF0pXG4gICAgICAgICAgfCBPayBuYW1lZF9nZW5lcmF0b3JzIC0+XG4gICAgICAgICAgICAgIGxldCBsX2VyciA9XG4gICAgICAgICAgICAgICAgTGlzdC5jb25jYXRfbWFwIG5hbWVkX2dlbmVyYXRvcnNcbiAgICAgICAgICAgICAgICAgIH5mOihmdW4gKGFjdHVhbF9kZXJpdmVyX25hbWUsIGdlbikgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGR1cF9lcnJvciA9XG4gICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbnMuZmFpbF9vbl9kdXBsaWNhdGVfZGVyaXZlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIEhhc2h0YmwubWVtIHNlZW4gYWN0dWFsX2Rlcml2ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYXRpb24uZXJyb3JfZXh0ZW5zaW9uZiB+bG9jOm5hbWUubG9jXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZXJpdmVyICVzIGFwcGVhcnMgdHdpY2VcIiBhY3R1YWxfZGVyaXZlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxfZXJyID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmNvbmNhdF9tYXAgKEdlbmVyYXRvci5kZXBzIGdlbikgfmY6KGZ1biBkZXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJfbWFwIChyZXNvbHZlX2FjdHVhbF9kZXJpdmVycyBmaWVsZCBkZXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmY6KGZ1biBkcnYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkZXBfbmFtZSA9IGRydi5uYW1lIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEhhc2h0YmwubWVtIHNlZW4gZGVwX25hbWUpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2NhdGlvbi5lcnJvcl9leHRlbnNpb25mIH5sb2M6bmFtZS5sb2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkRlcml2ZXIgJXMgaXMgbmVlZGVkIGZvciAlcywgeW91IG5lZWQgdG8gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIGl0IGJlZm9yZSBpbiB0aGUgbGlzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwX25hbWUgbmFtZS50eHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE5vbmUpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBIYXNodGJsLnNldCBzZWVuIH5rZXk6YWN0dWFsX2Rlcml2ZXJfbmFtZSB+ZGF0YTooKTtcbiAgICAgICAgICAgICAgICAgICAgZHVwX2Vycm9yIEAgbF9lcnIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggcmVzdWx0IEAgWyAobmFtZSwgTGlzdC5tYXAgbmFtZWRfZ2VuZXJhdG9ycyB+ZjpzbmQsIGFyZ3MpIF0sXG4gICAgICAgICAgICAgICAgZXJyb3JzIEAgbF9lcnIgKSlcbiAgICBpblxuICAgIChyZXN1bHQsIGRlcml2ZXJzX2FuZF9hcmdzX2Vycm9ycyBAIGRlcF9lcnJvcnMpXG5cbiAgbGV0IGFkZCA/c3RyX3R5cGVfZGVjbCA/c3RyX3R5cGVfZXh0ID9zdHJfZXhjZXB0aW9uID9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgICAgP3NpZ190eXBlX2RlY2wgP3NpZ190eXBlX2V4dCA/c2lnX2V4Y2VwdGlvbiA/c2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICAgID9leHRlbnNpb24gbmFtZSA9XG4gICAgbGV0IGFjdHVhbF9kZXJpdmVyIDogQWN0dWFsX2Rlcml2ZXIudCA9XG4gICAgICB7XG4gICAgICAgIG5hbWU7XG4gICAgICAgIHN0cl90eXBlX2RlY2w7XG4gICAgICAgIHN0cl90eXBlX2V4dDtcbiAgICAgICAgc3RyX2V4Y2VwdGlvbjtcbiAgICAgICAgc3RyX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2V4dDtcbiAgICAgICAgc2lnX2V4Y2VwdGlvbjtcbiAgICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICAgIGV4dGVuc2lvbjtcbiAgICAgIH1cbiAgICBpblxuICAgIFBweF9kZXJpdmVycy5yZWdpc3RlciBuYW1lIChUIChBY3R1YWxfZGVyaXZlciBhY3R1YWxfZGVyaXZlcikpO1xuICAgIChtYXRjaCBleHRlbnNpb24gd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGxldCBleHRlbnNpb24gPVxuICAgICAgICAgIEV4dGVuc2lvbi5kZWNsYXJlIG5hbWUgRXhwcmVzc2lvbiBBc3RfcGF0dGVybi4ocHR5cCBfXykgZlxuICAgICAgICBpblxuICAgICAgICBEcml2ZXIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb25cbiAgICAgICAgICAoXCJQcHhsaWIuRGVyaXZpbmcuXCIgXiBuYW1lKVxuICAgICAgICAgIH5ydWxlczpbIENvbnRleHRfZnJlZS5SdWxlLmV4dGVuc2lvbiBleHRlbnNpb24gXSk7XG4gICAgbmFtZVxuXG4gIGxldCBhZGRfYWxpYXMgbmFtZSA/c3RyX3R5cGVfZGVjbCA/c3RyX3R5cGVfZXh0ID9zdHJfZXhjZXB0aW9uXG4gICAgICA/c3RyX21vZHVsZV90eXBlX2RlY2wgP3NpZ190eXBlX2RlY2wgP3NpZ190eXBlX2V4dCA/c2lnX2V4Y2VwdGlvblxuICAgICAgP3NpZ19tb2R1bGVfdHlwZV9kZWNsIHNldCA9XG4gICAgbGV0IGFsaWFzIDogQWxpYXMudCA9XG4gICAgICBsZXQgZ2V0ID0gZnVuY3Rpb24gTm9uZSAtPiBzZXQgfCBTb21lIHNldCAtPiBzZXQgaW5cbiAgICAgIHtcbiAgICAgICAgc3RyX3R5cGVfZGVjbCA9IGdldCBzdHJfdHlwZV9kZWNsO1xuICAgICAgICBzdHJfdHlwZV9leHQgPSBnZXQgc3RyX3R5cGVfZXh0O1xuICAgICAgICBzdHJfZXhjZXB0aW9uID0gZ2V0IHN0cl9leGNlcHRpb247XG4gICAgICAgIHN0cl9tb2R1bGVfdHlwZV9kZWNsID0gZ2V0IHN0cl9tb2R1bGVfdHlwZV9kZWNsO1xuICAgICAgICBzaWdfdHlwZV9kZWNsID0gZ2V0IHNpZ190eXBlX2RlY2w7XG4gICAgICAgIHNpZ190eXBlX2V4dCA9IGdldCBzaWdfdHlwZV9leHQ7XG4gICAgICAgIHNpZ19leGNlcHRpb24gPSBnZXQgc2lnX2V4Y2VwdGlvbjtcbiAgICAgICAgc2lnX21vZHVsZV90eXBlX2RlY2wgPSBnZXQgc2lnX21vZHVsZV90eXBlX2RlY2w7XG4gICAgICB9XG4gICAgaW5cbiAgICBQcHhfZGVyaXZlcnMucmVnaXN0ZXIgbmFtZSAoVCAoQWxpYXMgYWxpYXMpKTtcbiAgICBuYW1lXG5lbmRcblxubGV0IGFkZCA9IERlcml2ZXIuYWRkXG5sZXQgYWRkX2FsaWFzID0gRGVyaXZlci5hZGRfYWxpYXNcblxuKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBbQEBkZXJpdmluZyBdIHBhcnNpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAqKVxuXG5sZXQgaW52YWxpZF93aXRoIH5sb2MgPVxuICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcImludmFsaWQgW0BAZGVyaXZpbmcgXSBhdHRyaWJ1dGUgc3ludGF4XCJcblxubGV0IGdlbmVyYXRvcl9uYW1lX29mX2lkIGxvYyBpZCA9XG4gIG1hdGNoIExvbmdpZGVudC5mbGF0dGVuX2V4biBpZCB3aXRoXG4gIHwgbCAtPiB7IGxvYzsgdHh0ID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLlwiIGwgfVxuICB8IGV4Y2VwdGlvbiBfIC0+IGludmFsaWRfd2l0aCB+bG9jXG5cbmV4Y2VwdGlvbiBVbmtub3duX3N5bnRheCBvZiBMb2NhdGlvbi50ICogc3RyaW5nXG5cbmxldCBwYXJzZV9hcmd1bWVudHMgbCA9XG4gIHRyeVxuICAgIEFyZ3NcbiAgICAgIChtYXRjaCBsIHdpdGhcbiAgICAgIHwgWyAoTm9sYWJlbCwgZSkgXSAtPiAoXG4gICAgICAgICAgbWF0Y2ggZS5wZXhwX2Rlc2Mgd2l0aFxuICAgICAgICAgIHwgUGV4cF9yZWNvcmQgKGZpZWxkcywgTm9uZSkgLT5cbiAgICAgICAgICAgICAgTGlzdC5tYXAgZmllbGRzIH5mOihmdW4gKGlkLCBleHByKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBpZC50eHQgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IExpZGVudCBzIC0+IHNcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9ub3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheCAoaWQubG9jLCBcInNpbXBsZSBpZGVudGlmaWVyIGV4cGVjdGVkXCIpKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIChuYW1lLCBleHByKSlcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgIChVbmtub3duX3N5bnRheFxuICAgICAgICAgICAgICAgICAgICggZS5wZXhwX2xvYyxcbiAgICAgICAgICAgICAgICAgICAgIFwibm9uLW9wdGlvbmFsIGxhYmVsbGVkIGFyZ3VtZW50IG9yIHJlY29yZCBleHBlY3RlZFwiICkpKVxuICAgICAgfCBsIC0+XG4gICAgICAgICAgTGlzdC5tYXAgbCB+ZjooZnVuIChsYWJlbCwgZXhwcikgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggbGFiZWwgd2l0aFxuICAgICAgICAgICAgICB8IExhYmVsbGVkIHMgLT4gKHMsIGV4cHIpXG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2Vfbm90cmFjZVxuICAgICAgICAgICAgICAgICAgICAoVW5rbm93bl9zeW50YXhcbiAgICAgICAgICAgICAgICAgICAgICAgKGV4cHIucGV4cF9sb2MsIFwibm9uLW9wdGlvbmFsIGxhYmVsbGVkIGFyZ3VtZW50IGV4cGVjdGVkXCIpKSkpXG4gIHdpdGggVW5rbm93bl9zeW50YXggKGxvYywgbXNnKSAtPiBVbmtub3duX3N5bnRheCAobG9jLCBtc2cpXG5cbmxldCBta19kZXJpdmluZ19hdHRyIGNvbnRleHQgfnByZWZpeCB+c3VmZml4ID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICAocHJlZml4IF4gXCJkZXJpdmluZ1wiIF4gc3VmZml4KVxuICAgIGNvbnRleHRcbiAgICBBc3RfcGF0dGVybi4oXG4gICAgICBsZXQgZ2VuZXJhdG9yX25hbWUgKCkgPVxuICAgICAgICBtYXAnIChwZXhwX2lkZW50IF9fKSB+ZjooZnVuIGxvYyBmIGlkIC0+XG4gICAgICAgICAgICBmIChnZW5lcmF0b3JfbmFtZV9vZl9pZCBsb2MgaWQpKVxuICAgICAgaW5cbiAgICAgIGxldCBnZW5lcmF0b3IgKCkgPVxuICAgICAgICBtYXAgKGdlbmVyYXRvcl9uYW1lICgpKSB+ZjooZnVuIGYgeCAtPiBmICh4LCBBcmdzIFtdKSlcbiAgICAgICAgfHx8IHBhY2syXG4gICAgICAgICAgICAgIChwZXhwX2FwcGx5IChnZW5lcmF0b3JfbmFtZSAoKSlcbiAgICAgICAgICAgICAgICAgKG1hcDEgKG1hbnkgX18pIH5mOnBhcnNlX2FyZ3VtZW50cykpXG4gICAgICBpblxuICAgICAgbGV0IGdlbmVyYXRvcnMgPVxuICAgICAgICBwZXhwX3R1cGxlIChtYW55IChnZW5lcmF0b3IgKCkpKVxuICAgICAgICB8fHwgbWFwIChnZW5lcmF0b3IgKCkpIH5mOihmdW4gZiB4IC0+IGYgWyB4IF0pXG4gICAgICBpblxuICAgICAgcHN0ciAocHN0cl9ldmFsIGdlbmVyYXRvcnMgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFVudXNlZCB3YXJuaW5nIHN0dWZmICsgbG9jYXRpb25zIGNoZWNrIHNpbGVuY2luZyAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCBkaXNhYmxlX3dhcm5pbmdzX2F0dHJpYnV0ZSB3YXJuaW5ncyA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIGxldCBzdHJpbmcgPVxuICAgIExpc3Quc29ydCB3YXJuaW5ncyB+Y21wOkludC5jb21wYXJlXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biB3YXJuaW5nIC0+IFwiLVwiIF4gSW50LnRvX3N0cmluZyB3YXJuaW5nKVxuICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIlwiXG4gIGluXG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwud2FybmluZ1wiOyBsb2MgfTtcbiAgICBhdHRyX3BheWxvYWQgPSBQU3RyIFsgcHN0cl9ldmFsIH5sb2MgKGVzdHJpbmcgfmxvYyBzdHJpbmcpIFtdIF07XG4gICAgYXR0cl9sb2MgPSBsb2M7XG4gIH1cblxubGV0IGlubGluZV9kb2NfYXR0ciA9XG4gIGxldCBsb2MgPSBMb2NhdGlvbi5ub25lIGluXG4gIHtcbiAgICBhdHRyX25hbWUgPSB7IHR4dCA9IFwib2NhbWwuZG9jXCI7IGxvYyB9O1xuICAgIGF0dHJfcGF5bG9hZCA9IFBTdHIgWyBwc3RyX2V2YWwgfmxvYyAoZXN0cmluZyB+bG9jIFwiQGlubGluZVwiKSBbXSBdO1xuICAgIGF0dHJfbG9jID0gbG9jO1xuICB9XG5cbigqIHdyYXAgYSBzdHJ1Y3R1cmUgaW4gZXh0cmEgYXR0cmlidXRlcyAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgc3QgPVxuICBsZXQgaW5jbHVkZV9pbmZvcyA9IGluY2x1ZGVfaW5mb3MgfmxvYyAocG1vZF9zdHJ1Y3R1cmUgfmxvYyBzdCkgaW5cbiAgbGV0IHBpbmNsX2F0dHJpYnV0ZXMgPVxuICAgIGlmIGhpZGUgdGhlbiBbIGlubGluZV9kb2NfYXR0cjsgTWVybGluX2hlbHBlcnMuaGlkZV9hdHRyaWJ1dGUgXVxuICAgIGVsc2UgWyBpbmxpbmVfZG9jX2F0dHIgXVxuICBpblxuICBbIHBzdHJfaW5jbHVkZSB+bG9jIHsgaW5jbHVkZV9pbmZvcyB3aXRoIHBpbmNsX2F0dHJpYnV0ZXMgfSBdXG5cbigqIGRlY2lkZSB3aGF0IHRvIHdyYXAgYSBzdHJ1Y3R1cmUgaW4sIHRoZW4gY2FsbCBhYm92ZSBbd3JhcF9zdHJdICopXG5sZXQgd3JhcF9zdHIgfmxvYyB+aGlkZSB+dW51c2VkX2NvZGVfd2FybmluZ3Mgc3QgPVxuICBsZXQgbG9jID0geyBsb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgbGV0IHVudXNlZF9jb2RlX3dhcm5pbmdzID1cbiAgICB1bnVzZWRfY29kZV93YXJuaW5ncyAmJiBhbGxvd191bnVzZWRfY29kZV93YXJuaW5ncyAoKVxuICBpblxuICBsZXQgd2FybmluZ3MsIHN0ID1cbiAgICBpZiBrZWVwX3czMl9pbXBsICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzIHRoZW4gKFtdLCBzdClcbiAgICBlbHNlIGlmIG5vdCAhZG9faW5zZXJ0X3VudXNlZF93YXJuaW5nX2F0dHJpYnV0ZSB0aGVuXG4gICAgICAoW10sIElnbm9yZV91bnVzZWRfd2FybmluZy5hZGRfZHVtbXlfdXNlcl9mb3JfdmFsdWVzI3N0cnVjdHVyZSBzdClcbiAgICBlbHNlIChbIDMyIF0sIHN0KVxuICBpblxuICBsZXQgd2FybmluZ3MsIHN0ID1cbiAgICBpZlxuICAgICAga2VlcF93NjBfaW1wbCAoKSB8fCB1bnVzZWRfY29kZV93YXJuaW5nc1xuICAgICAgfHwgbm90IChJZ25vcmVfdW51c2VkX3dhcm5pbmcuYmluZHNfbW9kdWxlX25hbWVzI3N0cnVjdHVyZSBzdCBmYWxzZSlcbiAgICB0aGVuICh3YXJuaW5ncywgc3QpXG4gICAgZWxzZSAoNjAgOjogd2FybmluZ3MsIHN0KVxuICBpblxuICBsZXQgd3JhcCwgc3QgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgd2FybmluZ3MgdGhlbiAoaGlkZSwgc3QpXG4gICAgZWxzZSAodHJ1ZSwgcHN0cl9hdHRyaWJ1dGUgfmxvYyAoZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MpIDo6IHN0KVxuICBpblxuICBpZiB3cmFwIHRoZW4gd3JhcF9zdHIgfmxvYyB+aGlkZSBzdCBlbHNlIHN0XG5cbigqIHdyYXAgYmxvY2tzIHRoYXQgc2hhcmUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXSwgdXNpbmcgYWJvdmUgW3dyYXBfc3RyXSBhYm92ZSAqKVxubGV0IHdyYXBfc3RyIH5sb2MgfmhpZGUgbGlzdCA9XG4gIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOihmdW4geyBpdGVtczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfSAtPlxuICAgICAgaWYgTGlzdC5pc19lbXB0eSBpdGVtcyB0aGVuIFtdXG4gICAgICBlbHNlIHdyYXBfc3RyIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIGl0ZW1zKVxuXG4oKiB3cmFwIGEgc2lnbmF0dXJlIGluIGV4dHJhIGF0dHJpYnV0ZXMgKilcbmxldCB3cmFwX3NpZyB+bG9jIH5oaWRlIHN0ID1cbiAgbGV0IGluY2x1ZGVfaW5mb3MgPSBpbmNsdWRlX2luZm9zIH5sb2MgKHBtdHlfc2lnbmF0dXJlIH5sb2Mgc3QpIGluXG4gIGxldCBwaW5jbF9hdHRyaWJ1dGVzID1cbiAgICBpZiBoaWRlIHRoZW4gWyBpbmxpbmVfZG9jX2F0dHI7IE1lcmxpbl9oZWxwZXJzLmhpZGVfYXR0cmlidXRlIF1cbiAgICBlbHNlIFsgaW5saW5lX2RvY19hdHRyIF1cbiAgaW5cbiAgWyBwc2lnX2luY2x1ZGUgfmxvYyB7IGluY2x1ZGVfaW5mb3Mgd2l0aCBwaW5jbF9hdHRyaWJ1dGVzIH0gXVxuXG4oKiBkZWNpZGUgd2hhdCB0byB3cmFwIGEgc2lnbmF0dXJlIGluLCB0aGVuIGNhbGwgYWJvdmUgW3dyYXBfc2lnXSAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIHNnID1cbiAgbGV0IGxvYyA9IHsgbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gIGxldCB1bnVzZWRfY29kZV93YXJuaW5ncyA9XG4gICAgdW51c2VkX2NvZGVfd2FybmluZ3MgJiYgYWxsb3dfdW51c2VkX2NvZGVfd2FybmluZ3MgKClcbiAgaW5cbiAgbGV0IHdhcm5pbmdzID1cbiAgICBpZiBrZWVwX3czMl9pbnRmICgpIHx8IHVudXNlZF9jb2RlX3dhcm5pbmdzIHRoZW4gW10gZWxzZSBbIDMyIF1cbiAgaW5cbiAgbGV0IHdhcm5pbmdzID1cbiAgICBpZlxuICAgICAga2VlcF93NjBfaW50ZiAoKVxuICAgICAgfHwgKG5vdCAoSWdub3JlX3VudXNlZF93YXJuaW5nLmJpbmRzX21vZHVsZV9uYW1lcyNzaWduYXR1cmUgc2cgZmFsc2UpKVxuICAgICAgfHwgdW51c2VkX2NvZGVfd2FybmluZ3NcbiAgICB0aGVuIHdhcm5pbmdzXG4gICAgZWxzZSA2MCA6OiB3YXJuaW5nc1xuICBpblxuICBsZXQgd3JhcCwgc2cgPVxuICAgIGlmIExpc3QuaXNfZW1wdHkgd2FybmluZ3MgdGhlbiAoaGlkZSwgc2cpXG4gICAgZWxzZSAodHJ1ZSwgcHNpZ19hdHRyaWJ1dGUgfmxvYyAoZGlzYWJsZV93YXJuaW5nc19hdHRyaWJ1dGUgd2FybmluZ3MpIDo6IHNnKVxuICBpblxuICBpZiB3cmFwIHRoZW4gd3JhcF9zaWcgfmxvYyB+aGlkZSBzZyBlbHNlIHNnXG5cbigqIHdyYXAgYmxvY2tzIHRoYXQgc2hhcmUgW3VudXNlZF9jb2RlX3dhcm5pbmdzXSwgdXNpbmcgYWJvdmUgW3dyYXBfc2lnXSBhYm92ZSAqKVxubGV0IHdyYXBfc2lnIH5sb2MgfmhpZGUgbGlzdCA9XG4gIExpc3QuY29uY2F0X21hcCBsaXN0IH5mOihmdW4geyBpdGVtczsgdW51c2VkX2NvZGVfd2FybmluZ3MgfSAtPlxuICAgICAgaWYgTGlzdC5pc19lbXB0eSBpdGVtcyB0aGVuIFtdXG4gICAgICBlbHNlIHdyYXBfc2lnIH5sb2MgfmhpZGUgfnVudXNlZF9jb2RlX3dhcm5pbmdzIGl0ZW1zKVxuXG4oKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE1haW4gZXhwYW5zaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbmxldCB0eXBlc191c2VkX2J5X2Rlcml2aW5nICh0ZHMgOiB0eXBlX2RlY2xhcmF0aW9uIGxpc3QpIDogc3RydWN0dXJlX2l0ZW0gbGlzdCA9XG4gIGlmIGtlZXBfdzMyX2ltcGwgKCkgdGhlbiBbXVxuICBlbHNlXG4gICAgTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgICAgbGV0IHR5cCA9IENvbW1vbi5jb3JlX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCBpblxuICAgICAgICBsZXQgbG9jID0gdGQucHR5cGVfbG9jIGluXG4gICAgICAgIHBzdHJfdmFsdWUgfmxvYyBOb25yZWN1cnNpdmVcbiAgICAgICAgICBbXG4gICAgICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHBhdF9hbnkgfmxvYylcbiAgICAgICAgICAgICAgfmV4cHI6XG4gICAgICAgICAgICAgICAgKHBleHBfZnVuIH5sb2MgTm9sYWJlbCBOb25lXG4gICAgICAgICAgICAgICAgICAgKHBwYXRfY29uc3RyYWludCB+bG9jIChwcGF0X2FueSB+bG9jKSB0eXApXG4gICAgICAgICAgICAgICAgICAgKGV1bml0IH5sb2MpKTtcbiAgICAgICAgICBdKVxuXG5sZXQgbWVyZ2VfZ2VuZXJhdG9ycyBmaWVsZCBsID1cbiAgTGlzdC5maWx0ZXJfbWFwIGwgfmY6KGZ1biB4IC0+IHgpIHw+IExpc3QuY29uY2F0IHw+IERlcml2ZXIucmVzb2x2ZV9hbGwgZmllbGRcblxuKCogVGhpcyBmdW5jdGlvbiBtZXJnZXMgWydhIGRlcml2ZWRdIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBbdW51c2VkX2NvZGVfd2FybmluZ3NdLiBUaGlzXG4gICByZWR1Y2VzIHRoZSBudW1iZXIgb2YgdGltZXMgd2UgYWRkIFtpbmNsdWRlIHN0cnVjdCAuLi4gZW5kXSB0byBkaXNhYmxlIHdhcm5pbmdzLiAqKVxubGV0IG1lcmdlX2Rlcml2ZWQgbGlzdHMgPVxuICBMaXN0LmZvbGRfcmlnaHQgbGlzdHMgfmluaXQ6W10gfmY6KGZ1biBkZXJpdmVkIGFjYyAtPlxuICAgICAgbWF0Y2ggYWNjIHdpdGhcbiAgICAgIHwgb3RoZXIgOjogb3RoZXJzXG4gICAgICAgIHdoZW4gQm9vbC5lcXVhbCBkZXJpdmVkLnVudXNlZF9jb2RlX3dhcm5pbmdzIG90aGVyLnVudXNlZF9jb2RlX3dhcm5pbmdzXG4gICAgICAgIC0+XG4gICAgICAgICAgeyBvdGhlciB3aXRoIGl0ZW1zID0gZGVyaXZlZC5pdGVtcyBAIG90aGVyLml0ZW1zIH0gOjogb3RoZXJzXG4gICAgICB8IF8gLT4gZGVyaXZlZCA6OiBhY2MpXG5cbmxldCBleHBhbmRfc3RyX3R5cGVfZGVjbHMgfmN0eHQgcmVjX2ZsYWcgdGRzIHZhbHVlcyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9IG1lcmdlX2dlbmVyYXRvcnMgRGVyaXZlci5GaWVsZC5zdHJfdHlwZV9kZWNsIHZhbHVlcyBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICAoKiBUT0RPOiBpbnN0ZWFkIG9mIGRpc2FibGluZyB0aGUgdW51c2VkIHdhcm5pbmcgZm9yIHR5cGVzIHRoZW1zZWx2ZXMsIHdlXG4gICAgIHNob3VsZCBhZGQgYSB0YWcgW0BAdW51c2VkXS4gKilcbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IHR5cGVzX3VzZWRfYnlfZGVyaXZpbmcgdGRzIEAgbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgKHJlY19mbGFnLCB0ZHMpIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ190eXBlX2RlY2xzIH5jdHh0IHJlY19mbGFnIHRkcyB2YWx1ZXMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPSBtZXJnZV9nZW5lcmF0b3JzIERlcml2ZXIuRmllbGQuc2lnX3R5cGVfZGVjbCB2YWx1ZXMgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IChyZWNfZmxhZywgdGRzKSBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfbW9kdWxlX3R5cGVfZGVjbCB+Y3R4dCBtdGQgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnN0cl9tb2R1bGVfdHlwZV9kZWNsIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IG10ZCBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3N0clxuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zaWdfbW9kdWxlX3R5cGVfZGVjbCB+Y3R4dCBtdGQgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ19tb2R1bGVfdHlwZV9kZWNsIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IG10ZCBnZW5lcmF0b3JzXG4gICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uXG4gICAgfD4gbWVyZ2VfZGVyaXZlZFxuICBpblxuICB3cmFwX3NpZ1xuICAgIH5sb2M6KEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuZGVyaXZlZF9pdGVtX2xvYyBjdHh0KVxuICAgIH5oaWRlOihub3QgQEAgRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5pbmxpbmUgY3R4dClcbiAgICBnZW5lcmF0ZWRcblxubGV0IGV4cGFuZF9zdHJfZXhjZXB0aW9uIH5jdHh0IGVjIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfZXhjZXB0aW9uIGdlbmVyYXRvcnNcbiAgaW5cbiAgbGV0IGxfZXJyID1cbiAgICBMaXN0Lm1hcFxuICAgICAgfmY6KGZ1biBlcnIgLT5cbiAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvbiB+bG9jOkxvY2F0aW9uLm5vbmUgZXJyIFtdKVxuICAgICAgbF9lcnJcbiAgaW5cbiAgbGV0IGdlbmVyYXRlZCA9XG4gICAgeyBpdGVtcyA9IGxfZXJyOyB1bnVzZWRfY29kZV93YXJuaW5ncyA9IGZhbHNlIH1cbiAgICA6OiBHZW5lcmF0b3IuYXBwbHlfYWxsIH5jdHh0IGVjIGdlbmVyYXRvcnNcbiAgICAgICAgIEFzdF9idWlsZGVyLkRlZmF1bHQucHN0cl9leHRlbnNpb25cbiAgICB8PiBtZXJnZV9kZXJpdmVkXG4gIGluXG4gIHdyYXBfc3RyXG4gICAgfmxvYzooRXhwYW5zaW9uX2NvbnRleHQuRGVyaXZlci5kZXJpdmVkX2l0ZW1fbG9jIGN0eHQpXG4gICAgfmhpZGU6KG5vdCBAQCBFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmlubGluZSBjdHh0KVxuICAgIGdlbmVyYXRlZFxuXG5sZXQgZXhwYW5kX3NpZ19leGNlcHRpb24gfmN0eHQgZWMgZ2VuZXJhdG9ycyA9XG4gIGxldCBnZW5lcmF0b3JzLCBsX2VyciA9XG4gICAgRGVyaXZlci5yZXNvbHZlX2FsbCBEZXJpdmVyLkZpZWxkLnNpZ19leGNlcHRpb24gZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgZWMgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc3RyX3R5cGVfZXh0IH5jdHh0IHRlIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zdHJfdHlwZV9leHQgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzdHJfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgdGUgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc3RyX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zdHJcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBleHBhbmRfc2lnX3R5cGVfZXh0IH5jdHh0IHRlIGdlbmVyYXRvcnMgPVxuICBsZXQgZ2VuZXJhdG9ycywgbF9lcnIgPVxuICAgIERlcml2ZXIucmVzb2x2ZV9hbGwgRGVyaXZlci5GaWVsZC5zaWdfdHlwZV9leHQgZ2VuZXJhdG9yc1xuICBpblxuICBsZXQgbF9lcnIgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuIGVyciAtPlxuICAgICAgICBBc3RfYnVpbGRlci5EZWZhdWx0LnBzaWdfZXh0ZW5zaW9uIH5sb2M6TG9jYXRpb24ubm9uZSBlcnIgW10pXG4gICAgICBsX2VyclxuICBpblxuICBsZXQgZ2VuZXJhdGVkID1cbiAgICB7IGl0ZW1zID0gbF9lcnI7IHVudXNlZF9jb2RlX3dhcm5pbmdzID0gZmFsc2UgfVxuICAgIDo6IEdlbmVyYXRvci5hcHBseV9hbGwgfmN0eHQgdGUgZ2VuZXJhdG9yc1xuICAgICAgICAgQXN0X2J1aWxkZXIuRGVmYXVsdC5wc2lnX2V4dGVuc2lvblxuICAgIHw+IG1lcmdlX2Rlcml2ZWRcbiAgaW5cbiAgd3JhcF9zaWdcbiAgICB+bG9jOihFeHBhbnNpb25fY29udGV4dC5EZXJpdmVyLmRlcml2ZWRfaXRlbV9sb2MgY3R4dClcbiAgICB+aGlkZToobm90IEBAIEV4cGFuc2lvbl9jb250ZXh0LkRlcml2ZXIuaW5saW5lIGN0eHQpXG4gICAgZ2VuZXJhdGVkXG5cbmxldCBydWxlcyB+dHlwIH5leHBhbmRfc2lnIH5leHBhbmRfc3RyIH5ydWxlX3N0ciB+cnVsZV9zaWcgfnJ1bGVfc3RyX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3QgPVxuICBsZXQgcHJlZml4ID0gXCJwcHhsaWIuXCIgaW5cbiAgbGV0IGRlcml2aW5nX2F0dHIgPSBta19kZXJpdmluZ19hdHRyIH5zdWZmaXg6XCJcIiB+cHJlZml4IHR5cCBpblxuICBsZXQgZGVyaXZpbmdfYXR0cl9leHBlY3QgPSBta19kZXJpdmluZ19hdHRyIH5zdWZmaXg6XCJfaW5saW5lXCIgfnByZWZpeCB0eXAgaW5cbiAgW1xuICAgIHJ1bGVfc2lnIGRlcml2aW5nX2F0dHIgZXhwYW5kX3NpZztcbiAgICBydWxlX3N0ciBkZXJpdmluZ19hdHRyIGV4cGFuZF9zdHI7XG4gICAgcnVsZV9zdHJfZXhwZWN0IGRlcml2aW5nX2F0dHJfZXhwZWN0IGV4cGFuZF9zdHI7XG4gICAgcnVsZV9zaWdfZXhwZWN0IGRlcml2aW5nX2F0dHJfZXhwZWN0IGV4cGFuZF9zaWc7XG4gIF1cblxubGV0IHJ1bGVzX3R5cGVfZGVjbCA9XG4gIHJ1bGVzIH50eXA6VHlwZV9kZWNsYXJhdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX3R5cGVfZGVjbHNcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX3R5cGVfZGVjbHNcbiAgICB+cnVsZV9zdHI6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cl9leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zdHJfdHlwZV9kZWNsX2V4cGVjdFxuICAgIH5ydWxlX3NpZ19leHBlY3Q6Q29udGV4dF9mcmVlLlJ1bGUuYXR0cl9zaWdfdHlwZV9kZWNsX2V4cGVjdFxuXG5sZXQgcnVsZXNfdHlwZV9leHQgPVxuICBydWxlcyB+dHlwOlR5cGVfZXh0ZW5zaW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfdHlwZV9leHRcbiAgICB+ZXhwYW5kX3NpZzpleHBhbmRfc2lnX3R5cGVfZXh0XG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX3R5cGVfZXh0XG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZXh0XG4gICAgfnJ1bGVfc3RyX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl90eXBlX2V4dF9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX3R5cGVfZXh0X2V4cGVjdFxuXG5sZXQgcnVsZXNfZXhjZXB0aW9uID1cbiAgcnVsZXMgfnR5cDpUeXBlX2V4Y2VwdGlvbiB+ZXhwYW5kX3N0cjpleHBhbmRfc3RyX2V4Y2VwdGlvblxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfZXhjZXB0aW9uXG4gICAgfnJ1bGVfc3RyOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX2V4Y2VwdGlvblxuICAgIH5ydWxlX3NpZzpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19leGNlcHRpb25cbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX2V4Y2VwdGlvbl9leHBlY3RcbiAgICB+cnVsZV9zaWdfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX2V4Y2VwdGlvbl9leHBlY3RcblxubGV0IHJ1bGVzX21vZHVsZV90eXBlX2RlY2wgPVxuICBydWxlcyB+dHlwOk1vZHVsZV90eXBlX2RlY2xhcmF0aW9uIH5leHBhbmRfc3RyOmV4cGFuZF9zdHJfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5leHBhbmRfc2lnOmV4cGFuZF9zaWdfbW9kdWxlX3R5cGVfZGVjbFxuICAgIH5ydWxlX3N0cjpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3N0cl9tb2R1bGVfdHlwZV9kZWNsXG4gICAgfnJ1bGVfc2lnOkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc2lnX21vZHVsZV90eXBlX2RlY2xcbiAgICB+cnVsZV9zdHJfZXhwZWN0OkNvbnRleHRfZnJlZS5SdWxlLmF0dHJfc3RyX21vZHVsZV90eXBlX2RlY2xfZXhwZWN0XG4gICAgfnJ1bGVfc2lnX2V4cGVjdDpDb250ZXh0X2ZyZWUuUnVsZS5hdHRyX3NpZ19tb2R1bGVfdHlwZV9kZWNsX2V4cGVjdFxuXG5sZXQgKCkgPVxuICBsZXQgcnVsZXMgPVxuICAgIFsgcnVsZXNfdHlwZV9kZWNsOyBydWxlc190eXBlX2V4dDsgcnVsZXNfZXhjZXB0aW9uOyBydWxlc19tb2R1bGVfdHlwZV9kZWNsIF1cbiAgICB8PiBMaXN0LmNvbmNhdFxuICBpblxuICBEcml2ZXIucmVnaXN0ZXJfdHJhbnNmb3JtYXRpb24gXCJkZXJpdmluZ1wiIH5hbGlhc2VzOlsgXCJ0eXBlX2NvbnZcIiBdIH5ydWxlc1xuIiwib3BlbiBJbXBvcnRcblxudHlwZSBhZmZpeCA9XG4gIHwgUHJlZml4IG9mIHN0cmluZ1xuICB8IFN1ZmZpeCBvZiBzdHJpbmdcbiAgfCBQcmVmaXhTdWZmaXggb2Ygc3RyaW5nICogc3RyaW5nXG5cbmxldCBtYW5nbGUgPyhmaXhwb2ludCA9IFwidFwiKSBhZmZpeCBuYW1lID1cbiAgbWF0Y2ggKFN0cmluZy4obmFtZSA9IGZpeHBvaW50KSwgYWZmaXgpIHdpdGhcbiAgfCB0cnVlLCAoUHJlZml4IHggfCBTdWZmaXggeCkgLT4geFxuICB8IHRydWUsIFByZWZpeFN1ZmZpeCAocCwgcykgLT4gcCBeIFwiX1wiIF4gc1xuICB8IGZhbHNlLCBQcmVmaXhTdWZmaXggKHAsIHMpIC0+IHAgXiBcIl9cIiBeIG5hbWUgXiBcIl9cIiBeIHNcbiAgfCBmYWxzZSwgUHJlZml4IHggLT4geCBeIFwiX1wiIF4gbmFtZVxuICB8IGZhbHNlLCBTdWZmaXggeCAtPiBuYW1lIF4gXCJfXCIgXiB4XG5cbmxldCBtYW5nbGVfdHlwZV9kZWNsID9maXhwb2ludCBhZmZpeCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IG5hbWU7IF8gfTsgXyB9ID1cbiAgbWFuZ2xlID9maXhwb2ludCBhZmZpeCBuYW1lXG5cbmxldCBtYW5nbGVfbGlkID9maXhwb2ludCBhZmZpeCBsaWQgPVxuICBtYXRjaCBsaWQgd2l0aFxuICB8IExpZGVudCBzIC0+IExpZGVudCAobWFuZ2xlID9maXhwb2ludCBhZmZpeCBzKVxuICB8IExkb3QgKHAsIHMpIC0+IExkb3QgKHAsIG1hbmdsZSA/Zml4cG9pbnQgYWZmaXggcylcbiAgfCBMYXBwbHkgXyAtPiBpbnZhbGlkX2FyZyBcIlBweGxpYi5FeHBhbnNpb25faGVscGVycy5tYW5nbGVfbGlkOiBMYXBwbHlcIlxuXG5tb2R1bGUgUXVvdGVyID0gUXVvdGVyXG4iLCIoKiogU3RhbmRhcmQgbGlicmFyeSBmb3IgcHB4IHJld3JpdGVycyAqKVxuXG4oKiogW3BweGxpYl0gaXMgbWVhbnQgdG8gYmUgb3BlbmVkIGdsb2JhbGx5IGluIHlvdXIgUFBYIHNvdXJjZSBmaWxlcy5cblxuICAgIE9wZW5pbmcgaXQgY29tZXMgd2l0aCB0d28gYWR2YW50YWdlcy4gRmlyc3QsIGl0IHdpbGwgc2hhZG93IHRoZVxuICAgIFtjb21waWxlci1saWJzXSBtb2R1bGVzLiBUaGUgW2NvbXBpbGVyLWxpYnNdIG1vZHVsZXMgYXJlIHVuc3RhYmxlIGFuZCBhcmVuJ3RcbiAgICBtZWFudCB0byBiZSB1c2VkLCBzbyBzaGFkb3dpbmcgdGhlbSBpcyBhIGdvb2QgcHJvdGVjdGlvbiBtZWNoYW5pc20uIEluIGNhc2VcbiAgICB5b3UgZG9uJ3Qgd2FudCB0byBvcGVuIFtQcHhsaWJdLCB5b3UgY2FuIG9wZW4gW09jYW1sX3NoYWRvd10gdG8gZ2V0IHRoZSBzYW1lXG4gICAgcHJvdGVjdGlvbi4gU2Vjb25kLCBpdCB3aWxsIGJyaW5nIHNldmVyYWwgbW9kdWxlcyBpbiBzY29wZSwgdGhhdCBhcmUgdXNlZnVsXG4gICAgdG8gaGF2ZSB3aGVuIHdyaXRpbmcgYSByZXdyaXRlcjpcblxuICAgIC0gVGhlIG1haW4gW3BweGxpYl0gbW9kdWxlcywgc3VjaCBhcyBtb2R1bGVzIHRvIGhlbHAgbWFuaXB1bGF0ZSB0aGUgQVNUXG4gICAgICAoeyFBc3RfYnVpbGRlcn0sIHshQXN0X3BhdHRlcm59KSwgYW5kIGEgZmV3IGZ1bmN0aW9ucy5cbiAgICAtIE1vZHVsZXMgZnJvbSBvdGhlciBsaWJyYXJpZXMsIHN1Y2ggYXMgeyFBc3RfaGVscGVyfSBvciB7IVBwcmludGFzdH0sXG4gICAgLSBUaGUgd2hvbGUgQVNUIHR5cGVzIChieSBbaW5jbHVkaW5nXSB0aGUgeyFBc3R9IG1vZHVsZSkuXG5cbiAgICB7MSBUaGUgY29yZSBbcHB4bGliXSBlbnRyaWVzfSAqKVxuXG4oKiogezIgTWFuaXB1bGF0aW5nIHRoZSBBU1R9ICopXG5cbm1vZHVsZSBBc3RfYnVpbGRlciA9IEFzdF9idWlsZGVyXG5tb2R1bGUgQXN0X3BhdHRlcm4gPSBBc3RfcGF0dGVyblxubW9kdWxlIEFzdF90cmF2ZXJzZSA9IEFzdF90cmF2ZXJzZVxuXG4oKiogezIgQ29udGV4dC1mcmVlIHJld3JpdGluZ30gKilcblxubW9kdWxlIENvbnRleHRfZnJlZSA9IENvbnRleHRfZnJlZVxubW9kdWxlIERlcml2aW5nID0gRGVyaXZpbmdcbm1vZHVsZSBFeHRlbnNpb24gPSBFeHRlbnNpb25cbm1vZHVsZSBFeHBhbnNpb25fY29udGV4dCA9IEV4cGFuc2lvbl9jb250ZXh0XG5tb2R1bGUgQ29kZV9wYXRoID0gQ29kZV9wYXRoXG5cbigqKiB7MiBPdGhlciBoZWxwZXJzfSAqKVxuXG5tb2R1bGUgRXhwYW5zaW9uX2hlbHBlcnMgPSBFeHBhbnNpb25faGVscGVyc1xubW9kdWxlIE1lcmxpbl9oZWxwZXJzID0gTWVybGluX2hlbHBlcnNcbm1vZHVsZSBTcGVsbGNoZWNrID0gU3BlbGxjaGVja1xubW9kdWxlIEtleXdvcmQgPSBLZXl3b3JkXG5cbigqKiB7MiBEcml2ZXItcmVsYXRlZCBtb2R1bGVzfSAqKVxuXG5tb2R1bGUgRHJpdmVyID0gRHJpdmVyXG5tb2R1bGUgQ2FsbGVyX2lkID0gQ2FsbGVyX2lkXG5tb2R1bGUgQXN0X2lvID0gVXRpbHMuQXN0X2lvLlJlYWRfYmluXG5cbigqKiB7MiBDaGVja3N9ICopXG5cbm1vZHVsZSBBdHRyaWJ1dGUgPSBBdHRyaWJ1dGVcbm1vZHVsZSBSZXNlcnZlZF9uYW1lc3BhY2VzID0gTmFtZS5SZXNlcnZlZF9uYW1lc3BhY2VzXG5cbigqKiB7MiBDb21tb24gaGVscGVyIGZ1bmN0aW9uc30gKilcblxuaW5jbHVkZSBDb21tb25cblxuKCoqIHsxIE1vZHVsZXMgZnJvbSBvdGhlciBsaWJyYXJpZXN9XG5cbiAgICBFeHBvc2Ugc29tZSBtb2R1bGVzIGZyb20geyFQcHhsaWJfYXN0fS4gKilcblxubW9kdWxlIEFzdCA9IFBweGxpYl9hc3QuQXN0XG5tb2R1bGUgQXN0X2hlbHBlciA9IFBweGxpYl9hc3QuQXN0X2hlbHBlclxubW9kdWxlIEFzdHR5cGVzID0gUHB4bGliX2FzdC5Bc3R0eXBlc1xubW9kdWxlIFBhcnNlID0gUHB4bGliX2FzdC5QYXJzZVxubW9kdWxlIFBhcnNldHJlZSA9IFBweGxpYl9hc3QuUGFyc2V0cmVlXG5tb2R1bGUgUHByaW50YXN0ID0gUHB4bGliX2FzdC5QcHJpbnRhc3Rcbm1vZHVsZSBTZWxlY3RlZF9hc3QgPSBQcHhsaWJfYXN0LlNlbGVjdGVkX2FzdFxubW9kdWxlIExvY2F0aW9uID0gTG9jYXRpb25cbm1vZHVsZSBMb25naWRlbnQgPSBMb25naWRlbnRcbm1vZHVsZSBMb2MgPSBMb2NcblxuKCoqIHsxIFRoZSB3aG9sZSBBU1QgdHlwZXN9ICopXG5cbmluY2x1ZGUgQXN0XG4oKiogSW5jbHVkZSBhbGwgdGhlIEFzdCBkZWZpbml0aW9ucyBzaW5jZSB3ZSBuZWVkIHRoZW0gaW4gZXZlcnkgc2luZ2xlIHBweFxuXG4gICAgQGNsb3NlZCAqKVxuXG4oKiogTWFrZSBzdXJlIGNvZGUgdXNpbmcgUHB4bGliIGRvZXNuJ3QgcmVmZXIgdG8gY29tcGlsZXItbGlicyB3aXRob3V0IGJlaW5nXG4gICAgZXhwbGljaXQgYWJvdXQgaXQ6XG5cbiAgICBAY2xvc2VkICopXG5pbmNsdWRlIHN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgb3BlbiBPY2FtbF9zaGFkb3dcblxuICBpbmNsdWRlIChcbiAgICBPY2FtbF9zaGFkb3cgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICAgIGluY2x1ZGUgT2NhbWxfc2hhZG93XG4gICAgICBlbmRcbiAgICAgIHdpdGggbW9kdWxlIEFzdF9oZWxwZXIgOj0gQXN0X2hlbHBlclxuICAgICAgd2l0aCBtb2R1bGUgQXN0dHlwZXMgOj0gQXN0dHlwZXNcbiAgICAgIHdpdGggbW9kdWxlIERvY3N0cmluZ3MgOj0gRG9jc3RyaW5nc1xuICAgICAgd2l0aCBtb2R1bGUgSWRlbnRpZmlhYmxlIDo9IElkZW50aWZpYWJsZVxuICAgICAgd2l0aCBtb2R1bGUgTGV4ZXIgOj0gTGV4ZXJcbiAgICAgIHdpdGggbW9kdWxlIExvY2F0aW9uIDo9IExvY2F0aW9uXG4gICAgICB3aXRoIG1vZHVsZSBMb25naWRlbnQgOj0gTG9uZ2lkZW50XG4gICAgICB3aXRoIG1vZHVsZSBQYXJzZSA6PSBQYXJzZVxuICAgICAgd2l0aCBtb2R1bGUgUGFyc2V0cmVlIDo9IFBhcnNldHJlZVxuICAgICAgd2l0aCBtb2R1bGUgUHByaW50YXN0IDo9IFBwcmludGFzdFxuICAgICAgd2l0aCBtb2R1bGUgU3ludGF4ZXJyIDo9IFN5bnRheGVycilcbmVuZFxuXG4oKiovKiopXG5cbigqIEZvciB0ZXN0cyBhbmQgUHB4X2NvcmUgY29tcGF0aWJpbGl0eSBsYXllciAqKVxubW9kdWxlIFBweGxpYl9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBDb21tb24gPSBDb21tb25cbiAgbW9kdWxlIE5hbWUgPSBOYW1lXG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIFBweGxpYlxuXG5sZXQgZGVmYXVsdCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uZGVmYXVsdFwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHQgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLnlvanNvbl9kcm9wX2RlZmF1bHRcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmxhYmVsX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKGFsdF9vcHRpb24gKHBzdHJfZXZhbCBfXyBuaWwgXjo6IG5pbCkgbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBkcm9wX2RlZmF1bHRfZXF1YWwgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LmVxdWFsXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF9jb21wYXJlID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5AeW9qc29uX2Ryb3BfZGVmYXVsdC5jb21wYXJlXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGRyb3BfZGVmYXVsdF95b2pzb24gPVxuICBBdHRyaWJ1dGUuZGVjbGFyZVxuICAgIFwieW9qc29uLkB5b2pzb25fZHJvcF9kZWZhdWx0LnlvanNvblwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciBuaWwpXG4gICAgKClcbjs7XG5cbmxldCBkcm9wX2lmID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi55b2pzb25fZHJvcF9pZlwiXG4gICAgQXR0cmlidXRlLkNvbnRleHQubGFiZWxfZGVjbGFyYXRpb25cbiAgICBBc3RfcGF0dGVybi4ocHN0ciAocHN0cl9ldmFsIF9fIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCBvcGFxdWUgPVxuICBBdHRyaWJ1dGUuZGVjbGFyZSBcInlvanNvbi5vcGFxdWVcIiBBdHRyaWJ1dGUuQ29udGV4dC5jb3JlX3R5cGUgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKSAoKVxuOztcblxubGV0IG9wdGlvbiA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ub3B0aW9uXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIG5pbClcbiAgICAoKVxuOztcblxubGV0IGFsbG93X2V4dHJhX2ZpZWxkc190ZCA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24uYWxsb3dfZXh0cmFfZmllbGRzXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC50eXBlX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgYWxsb3dfZXh0cmFfZmllbGRzX2NkID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5hbGxvd19leHRyYV9maWVsZHNcIlxuICAgIEF0dHJpYnV0ZS5Db250ZXh0LmNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgbmlsKVxuICAgICgpXG47O1xuXG5sZXQgeW9qc29uX2tleSA9XG4gIEF0dHJpYnV0ZS5kZWNsYXJlXG4gICAgXCJ5b2pzb24ua2V5XCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5sYWJlbF9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCB5b2pzb25fdmFyaWFudF9uYW1lID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5uYW1lXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvblxuICAgIEFzdF9wYXR0ZXJuLihwc3RyIChwc3RyX2V2YWwgKGVzdHJpbmcgX18pIG5pbCBeOjogbmlsKSlcbiAgICAoZnVuIHggLT4geClcbjs7XG5cbmxldCB5b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lID1cbiAgQXR0cmlidXRlLmRlY2xhcmVcbiAgICBcInlvanNvbi5uYW1lXCJcbiAgICBBdHRyaWJ1dGUuQ29udGV4dC5ydGFnXG4gICAgQXN0X3BhdHRlcm4uKHBzdHIgKHBzdHJfZXZhbCAoZXN0cmluZyBfXykgbmlsIF46OiBuaWwpKVxuICAgIChmdW4geCAtPiB4KVxuOztcblxubGV0IGludmFsaWRfYXR0cmlidXRlIH5sb2MgYXR0ciBkZXNjcmlwdGlvbiA9XG4gIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgIH5sb2NcbiAgICBcInBweF95b2pzb25fY29udjogW0Alc10gaXMgb25seSBhbGxvd2VkIG9uIHR5cGUgWyVzXS5cIlxuICAgIChBdHRyaWJ1dGUubmFtZSBhdHRyKVxuICAgIGRlc2NyaXB0aW9uXG47O1xuXG5sZXQgZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIHggPVxuICBpZiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBhbGxvd19leHRyYV9maWVsZHNfY2QgeClcbiAgdGhlblxuICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgfmxvY1xuICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IFtAQGFsbG93X2V4dHJhX2ZpZWxkc10gaXMgb25seSBhbGxvd2VkIG9uIGlubGluZSByZWNvcmRzLlwiXG47O1xuXG5sZXQgZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF90ZCB+bG9jIHggPVxuICBpZiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBhbGxvd19leHRyYV9maWVsZHNfdGQgeClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggeC5wdHlwZV9raW5kIHdpdGhcbiAgICB8IFB0eXBlX3ZhcmlhbnQgY2RzXG4gICAgICB3aGVuIExpc3QuZXhpc3RzIGNkcyB+ZjooZnVuIGNkIC0+XG4gICAgICAgIG1hdGNoIGNkLnBjZF9hcmdzIHdpdGhcbiAgICAgICAgfCBQY3N0cl9yZWNvcmQgXyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBAQGFsbG93X2V4dHJhX2ZpZWxkc10gb25seSB3b3JrcyBvbiByZWNvcmRzLiBGb3IgaW5saW5lIFxcXG4gICAgICAgICByZWNvcmRzLCBkbzogdHlwZSB0ID0gQSBvZiB7IGEgOiBpbnQgfSBbQEBhbGxvd19leHRyYV9maWVsZHNdIHwgQiBbQEBAQGRlcml2aW5nIFxcXG4gICAgICAgICB5b2pzb25dXCJcbiAgICB8IF8gLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwicHB4X3lvanNvbl9jb252OiBbQEBAQGFsbG93X2V4dHJhX2ZpZWxkc10gaXMgb25seSBhbGxvd2VkIG9uIHJlY29yZHMuXCIpXG47O1xuXG5tb2R1bGUgUmVjb3JkX2ZpZWxkX2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSBjb21tb24gPSBbIGB5b2pzb25fb3B0aW9uIG9mIGNvcmVfdHlwZSBdXG5cbiAgbGV0IGdldF9hdHRyaWJ1dGUgYXR0ciBsZCB+ZiA9XG4gICAgT3B0aW9uLm1hcCAoQXR0cmlidXRlLmdldCBhdHRyIGxkKSB+ZjooZnVuIHggLT4gZiB4LCBBdHRyaWJ1dGUubmFtZSBhdHRyKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfmxvYyBnZXR0ZXJzIGxkID1cbiAgICBsZXQgY29tbW9uX2dldHRlcnMgPVxuICAgICAgWyAoZnVuIGxkIC0+XG4gICAgICAgICAgbWF0Y2ggQXR0cmlidXRlLmdldCBvcHRpb24gbGQgd2l0aFxuICAgICAgICAgIHwgU29tZSAoKSAtPlxuICAgICAgICAgICAgKG1hdGNoIGxkLnBsZF90eXBlIHdpdGhcbiAgICAgICAgICAgICB8IFsldHlwZTogWyV0PyB0eV0gb3B0aW9uXSAtPiBTb21lIChgeW9qc29uX29wdGlvbiB0eSwgXCJbQHlvanNvbi5vcHRpb25dXCIpXG4gICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfYXR0cmlidXRlIH5sb2Mgb3B0aW9uIFwiXyBvcHRpb25cIilcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICAgIF1cbiAgICBpblxuICAgIG1hdGNoIExpc3QuZmlsdGVyX21hcCAoZ2V0dGVycyBAIGNvbW1vbl9nZXR0ZXJzKSB+ZjooZnVuIGYgLT4gZiBsZCkgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgWyAodiwgXykgXSAtPiBTb21lIHZcbiAgICB8IF8gOjogXyA6OiBfIGFzIGF0dHJpYnV0ZXMgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwiVGhlIGZvbGxvd2luZyBlbGVtZW50cyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlOiAlc1wiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IH5zZXA6XCIgXCIgKExpc3QubWFwIGF0dHJpYnV0ZXMgfmY6c25kKSlcbiAgOztcblxuICBtb2R1bGUgT2ZfeW9qc29uID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIFsgY29tbW9uXG4gICAgICB8IGBkZWZhdWx0IG9mIGV4cHJlc3Npb25cbiAgICAgIF1cblxuICAgIGxldCBjcmVhdGUgfmxvYyBsZCA9XG4gICAgICBjcmVhdGUgfmxvYyBbIGdldF9hdHRyaWJ1dGUgZGVmYXVsdCB+ZjooZnVuIGRlZmF1bHQgLT4gYGRlZmF1bHQgZGVmYXVsdCkgXSBsZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBZb2pzb25fb2YgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBjb21tb25cbiAgICAgIHwgYGRyb3BfZGVmYXVsdCBvZiBbIGBub19hcmcgfCBgY29tcGFyZSB8IGBlcXVhbCB8IGB5b2pzb24gfCBgZnVuYyBvZiBleHByZXNzaW9uIF1cbiAgICAgIHwgYGRyb3BfaWYgb2YgZXhwcmVzc2lvblxuICAgICAgfCBga2VlcFxuICAgICAgXVxuXG4gICAgbGV0IGNyZWF0ZSB+bG9jIGxkID1cbiAgICAgIGNyZWF0ZVxuICAgICAgICB+bG9jXG4gICAgICAgIFsgZ2V0X2F0dHJpYnV0ZSBkcm9wX2RlZmF1bHQgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT4gYGRyb3BfZGVmYXVsdCBgbm9fYXJnXG4gICAgICAgICAgICB8IFNvbWUgZSAtPiBgZHJvcF9kZWZhdWx0IChgZnVuYyBlKSlcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfZGVmYXVsdF9lcXVhbCB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYGVxdWFsKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X2NvbXBhcmUgfmY6KGZ1biAoKSAtPiBgZHJvcF9kZWZhdWx0IGBjb21wYXJlKVxuICAgICAgICA7IGdldF9hdHRyaWJ1dGUgZHJvcF9kZWZhdWx0X3lvanNvbiB+ZjooZnVuICgpIC0+IGBkcm9wX2RlZmF1bHQgYHlvanNvbilcbiAgICAgICAgOyBnZXRfYXR0cmlidXRlIGRyb3BfaWYgfmY6KGZ1biB4IC0+IGBkcm9wX2lmIHgpXG4gICAgICAgIF1cbiAgICAgICAgbGRcbiAgICAgIHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpga2VlcFxuICAgIDs7XG4gIGVuZFxuZW5kXG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9XG4gIHsgbGFiZWwgOiBzdHJpbmdcbiAgOyBuYW1lX292ZXJyaWRlIDogc3RyaW5nIG9wdGlvblxuICB9XG5cbmxldCBjcmVhdGUgfmxhYmVsIH5uYW1lX292ZXJyaWRlID0geyBsYWJlbDsgbmFtZV9vdmVycmlkZSB9XG5cbmxldCBvZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiAoY2QgOiBQcHhsaWIuY29uc3RydWN0b3JfZGVjbGFyYXRpb24pID1cbiAgbGV0IGxhYmVsID0gY2QucGNkX25hbWUudHh0IGluXG4gIGxldCBuYW1lX292ZXJyaWRlID0gUHB4bGliLkF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX3ZhcmlhbnRfbmFtZSBjZCBpblxuICBjcmVhdGUgfmxhYmVsIH5uYW1lX292ZXJyaWRlXG47O1xuXG5sZXQgbGFiZWwgdCA9IHQubGFiZWxcbmxldCBuYW1lIHQgPSBPcHRpb24udmFsdWUgdC5uYW1lX292ZXJyaWRlIH5kZWZhdWx0OnQubGFiZWxcbiIsIm9wZW4gQmFzZVxub3BlbiBQcHhsaWJcbm9wZW4gQXN0X2J1aWxkZXIuRGVmYXVsdFxubW9kdWxlIEF0dHJzID0gQXR0cnNcblxubGV0ICggLS0+ICkgbGhzIHJocyA9IGNhc2Ugfmd1YXJkOk5vbmUgfmxocyB+cmhzXG5cbigqIFNpbXBsaWZpZXMgbWF0Y2ggY2FzZXMsIGZvciByZWFkYWJpbGl0eSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIEl0J3Mgbm90IG9idmlvdXMgd2UgY2FuXG4gICBzdGljayB0aGlzIGluIHBweF9jb3JlLCBhcyAobWF0Y2ggZTEgd2l0aCBwIC0+IGUyKSBhbmQgKGxldCBwID0gZTEgaW4gZTIpIGFyZSBub3QgdHlwZWRcbiAgIGV4YWN0bHkgdGhlIHNhbWUgKHR5cGUgaW5mZXJlbmNlIGdvZXMgaW4gZGlmZmVyZW50IG9yZGVyLCBtZWFuaW5nIHR5cGUgZGlzYW1iaWd1YXRpb25cbiAgIGRpZmZlcnMpLiAqKVxubGV0IHBleHBfbWF0Y2ggfmxvYyBleHByIGNhc2VzID1cbiAgbWF0Y2ggY2FzZXMgd2l0aFxuICB8IFsgeyBwY19saHM7IHBjX2d1YXJkID0gTm9uZTsgcGNfcmhzIH0gXSAtPlxuICAgIChtYXRjaCBwY19saHMsIGV4cHIgd2l0aFxuICAgICB8ICggeyBwcGF0X2F0dHJpYnV0ZXMgPSBbXTsgcHBhdF9kZXNjID0gUHBhdF92YXIgeyB0eHQgPSBpZGVudDsgXyB9OyBfIH1cbiAgICAgICAsIHsgcGV4cF9hdHRyaWJ1dGVzID0gW107IHBleHBfZGVzYyA9IFBleHBfaWRlbnQgeyB0eHQgPSBMaWRlbnQgaWRlbnQnOyBfIH07IF8gfSApXG4gICAgICAgd2hlbiBTdHJpbmcuZXF1YWwgaWRlbnQgaWRlbnQnIC0+IHBjX3Joc1xuICAgICB8IF8gLT4gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpwY19saHMgfmV4cHIgXSBwY19yaHMpXG4gIHwgXyAtPiBwZXhwX21hdGNoIH5sb2MgZXhwciBjYXNlc1xuOztcblxubW9kdWxlIEZ1bl9vcl9tYXRjaCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgRnVuIG9mIGV4cHJlc3Npb25cbiAgICB8IE1hdGNoIG9mIGNhc2UgbGlzdFxuXG4gIGxldCBleHByIH5sb2MgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBGdW4gZiAtPiBmXG4gICAgfCBNYXRjaCBjYXNlcyAtPiBwZXhwX2Z1bmN0aW9uIH5sb2MgY2FzZXNcbiAgOztcblxuICBsZXQgdW5yb2xsIH5sb2MgZSB0ID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEZ1biBmIC0+IGVhcHBseSB+bG9jIGYgWyBlIF1cbiAgICB8IE1hdGNoIGNhc2VzIC0+IHBleHBfbWF0Y2ggfmxvYyBlIGNhc2VzXG4gIDs7XG5cbiAgbGV0IG1hcF90bXBfdmFycyB+bG9jIHRzID1cbiAgICBsZXQgdmFycyA9IExpc3QubWFwaSB0cyB+ZjooZnVuIGkgXyAtPiBcInZcIiBeIEludC50b19zdHJpbmcgaSkgaW5cbiAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgTGlzdC5tYXAyX2V4biB2YXJzIHRzIH5mOihmdW4gdmFyIHQgLT5cbiAgICAgICAgbGV0IGV4cHIgPSB1bnJvbGwgfmxvYyAoZXZhciB+bG9jIHZhcikgdCBpblxuICAgICAgICB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDoocHZhciB+bG9jIHZhcikgfmV4cHIpXG4gICAgaW5cbiAgICBiaW5kaW5ncywgTGlzdC5tYXAgdmFycyB+ZjoocHZhciB+bG9jKSwgTGlzdC5tYXAgdmFycyB+ZjooZXZhciB+bG9jKVxuICA7O1xuZW5kXG5cbigqIEEgcmVuYW1pbmcgaXMgYSBtYXBwaW5nIGZyb20gdHlwZSB2YXJpYWJsZSBuYW1lIHRvIHR5cGUgdmFyaWFibGUgbmFtZS5cbiAgIEluIGRlZmluaXRpb25zIHN1Y2ggYXM6XG5cbiAgIHR5cGUgJ2EgdCA9XG4gICB8IEEgOiA8dHlwZT4gLT4gJ2IgdFxuICAgfCBCIG9mICdhXG5cbiAgIHdlIGdlbmVyYXRlIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiB5b2pzb25fb2YgcGFyYW1ldGVyIG5hbWVkIGFmdGVyICdhLCBidXQgJ2EgaXMgbm90IGluXG4gICBzY29wZSBpbiA8dHlwZT4gd2hlbiBoYW5kbGluZyB0aGUgY29uc3RydWN0b3IgQSAoYmVjYXVzZSBBIGlzIGEgZ2FkdCBjb25zdHJ1Y3RvcikuXG4gICBJbnN0ZWFkIHRoZSB0eXBlIHZhcmlhYmxlcyBpbiBzY29wZSBhcmUgdGhlIG9uZXMgZGVmaW5lZCBpbiB0aGUgcmV0dXJuIHR5cGUgb2YgQSxcbiAgIG5hbWVseSAnYi4gVGhlcmUgY291bGQgYmUgbGVzcyBvciBtb3JlIHR5cGUgdmFyaWFibGUgaW4gY2FzZXMgc3VjaCBhczpcblxuICAgdHlwZSBfIGxlc3MgPSBMZXNzIDogaW50IGxlc3NcbiAgIHR5cGUgXyBtb3JlID0gTW9yZSA6ICgnYSAqICdhKSBtb3JlXG5cbiAgIElmIGZvciBpbnN0YW5jZSwgPHR5cGU+IGlzIFsnYiAqICdjXSwgd2hlbiB3ZSBmaW5kICdiLCB3ZSB3aWxsIGxvb2sgZm9yIFsnYl0gaW4gdGhlXG4gICByZW5hbWluZyBhbmQgZmluZCBbJ2FdIChvbmx5IGluIHRoYXQgZ2FkdCBicmFuY2gsIGl0IGNvdWxkIGJlIHNvbWV0aGluZyBlbHNlIGluIG90aGVyXG4gICBicmFuY2hlcyksIGF0IHdoaWNoIHBvaW50IHdlIGNhbiBjYWxsIHRoZSBwcmV2aW91c2x5IGJvdW5kIHlvanNvbl9vZiBwYXJhbWV0ZXIgbmFtZWRcbiAgIGFmdGVyICdhLlxuICAgSWYgd2UgY2FuJ3QgZmluZCBhIHJlc3VsdGluZyBuYW1lLCBsaWtlIHdoZW4gbG9va2luZyB1cCBbJ2NdIGluIHRoZSByZW5hbWluZywgdGhlbiB3ZVxuICAgYXNzdW1lIHRoZSB2YXJpYWJsZSBpcyBleGlzdGVudGlhbGx5IHF1YW50aWZpZWQgYW5kIHRyZWF0IGl0IGFzIFtfXSAod2hpY2ggaXMgb2ssXG4gICBhc3N1bWluZyB0aGVyZSBhcmUgbm8gY29uc3RyYWludHMpLiAqKVxubW9kdWxlIFJlbmFtaW5nIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBpZGVudGl0eSA6IHRcbiAgdmFsIGFkZF91bml2ZXJzYWxseV9ib3VuZCA6IHQgLT4gc3RyaW5nIGxvYyAtPiB0XG5cbiAgdHlwZSBiaW5kaW5nX2tpbmQgPVxuICAgIHwgVW5pdmVyc2FsbHlfYm91bmQgb2Ygc3RyaW5nXG4gICAgfCBFeGlzdGVudGlhbGx5X2JvdW5kXG5cbiAgdmFsIGJpbmRpbmdfa2luZCA6IHQgLT4gc3RyaW5nIC0+IGJpbmRpbmdfa2luZFxuICB2YWwgb2ZfZ2FkdCA6IHN0cmluZyBsaXN0IC0+IGNvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGVycm9yID0gc3RyaW5nIExvYy50XG4gIHR5cGUgdCA9IChzdHJpbmcsIGVycm9yKSBSZXN1bHQudCBNYXAuTShTdHJpbmcpLnQgb3B0aW9uXG5cbiAgbGV0IGlkZW50aXR5ID0gTm9uZVxuXG4gIHR5cGUgYmluZGluZ19raW5kID1cbiAgICB8IFVuaXZlcnNhbGx5X2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZFxuXG4gIGxldCBhZGRfdW5pdmVyc2FsbHlfYm91bmQgKHQgOiB0KSBuYW1lIDogdCA9XG4gICAgbGV0IG5hbWUgPSBuYW1lLnR4dCBpblxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIG1hcCAtPiBTb21lIChNYXAuc2V0IH5rZXk6bmFtZSB+ZGF0YTooT2sgbmFtZSkgbWFwKVxuICA7O1xuXG4gIGxldCBiaW5kaW5nX2tpbmQgdCB2YXIgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBVbml2ZXJzYWxseV9ib3VuZCB2YXJcbiAgICB8IFNvbWUgbWFwIC0+XG4gICAgICAobWF0Y2ggTWFwLmZpbmQgbWFwIHZhciB3aXRoXG4gICAgICAgfCBOb25lIC0+IEV4aXN0ZW50aWFsbHlfYm91bmRcbiAgICAgICB8IFNvbWUgKE9rIHZhbHVlKSAtPiBVbml2ZXJzYWxseV9ib3VuZCB2YWx1ZVxuICAgICAgIHwgU29tZSAoRXJyb3IgeyBsb2M7IHR4dCB9KSAtPiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIiVzXCIgdHh0KVxuICA7O1xuXG4gICgqIFJldHVybiBhIG1hcCB0cmFuc2xhdGluZyB0eXBlIHZhcmlhYmxlcyBhcHBlYXJpbmcgaW4gdGhlIHJldHVybiB0eXBlIG9mIGEgR0FEVFxuICAgICBjb25zdHJ1Y3RvciB0byB0aGVpciBuYW1lIGluIHRoZSB0eXBlIHBhcmFtZXRlciBsaXN0LlxuXG4gICAgIEZvciBpbnN0YW5jZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgKCdhLCAnYikgdCA9IFggOiAneCAqICd5IC0+ICgneCwgJ3kpIHRcbiAgICAgXX1cblxuICAgICB3aWxsIHByb2R1Y2U6XG5cbiAgICAge1tcbiAgICAgICBcInhcIiAtPiBPayBcImFcIlxuICAgICAgICAgICAgICAgIFwieVwiIC0+IE9rIFwiYlwiXG4gICAgIF19XG5cbiAgICAgSWYgYSB2YXJpYWJsZSBhcHBlYXJzIHR3aWNlIGluIHRoZSByZXR1cm4gdHlwZSBpdCB3aWxsIG1hcCB0byBbRXJyb3IgX10uIElmIGFcbiAgICAgdmFyaWFibGUgY2Fubm90IGJlIG1hcHBlZCB0byBhIHBhcmFtZXRlciBvZiB0aGUgdHlwZSBkZWNsYXJhdGlvbiwgaXQgd2lsbCBtYXAgdG9cbiAgICAgW0Vycm9yXSAoZm9yIGluc3RhbmNlIFtBIDogJ2EgLT4gJ2EgbGlzdCB0XSkuXG5cbiAgICAgSXQgcmV0dXJucyBOb25lIG9uIHVzZXIgZXJyb3IsIHRvIGxldCB0aGUgdHlwZXIgZ2l2ZSB0aGUgZXJyb3IgbWVzc2FnZSAqKVxuICBsZXQgb2ZfZ2FkdCA9XG4gICAgKCogQWRkIGFsbCB0eXBlIHZhcmlhYmxlcyBvZiBhIHR5cGUgdG8gYSBtYXAuICopXG4gICAgbGV0IGFkZF90eXBldmFycyA9XG4gICAgICBvYmplY3RcbiAgICAgICAgaW5oZXJpdCBbKHN0cmluZywgZXJyb3IpIFJlc3VsdC50IE1hcC5NKFN0cmluZykudF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICAgICBtZXRob2QhIGNvcmVfdHlwZSB0eSBtYXAgPVxuICAgICAgICAgIG1hdGNoIHR5LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3ZhciB2YXIgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIHsgbG9jID0gdHkucHR5cF9sb2NcbiAgICAgICAgICAgICAgOyB0eHQgPVxuICAgICAgICAgICAgICAgICAgXCJwcHhfeW9qc29uX2NvbnY6IHZhcmlhYmxlIGlzIG5vdCBhIHBhcmFtZXRlciBvZiB0aGUgdHlwZSBjb25zdHJ1Y3RvclwiXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBNYXAuc2V0IG1hcCB+a2V5OnZhciB+ZGF0YTooRXJyb3IgZXJyb3IpXG4gICAgICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSB0eSBtYXBcbiAgICAgIGVuZFxuICAgIGluXG4gICAgbGV0IGF1eCBtYXAgdHBfbmFtZSB0cF9pbl9yZXR1cm5fdHlwZSA9XG4gICAgICBtYXRjaCB0cF9pbl9yZXR1cm5fdHlwZS5wdHlwX2Rlc2Mgd2l0aFxuICAgICAgfCBQdHlwX3ZhciB2YXIgLT5cbiAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgIGlmIE1hcC5tZW0gbWFwIHZhclxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGxvYyA9IHRwX2luX3JldHVybl90eXBlLnB0eXBfbG9jIGluXG4gICAgICAgICAgICBFcnJvciB7IGxvYzsgdHh0ID0gXCJwcHhfeW9qc29uX2NvbnY6IGR1cGxpY2F0ZSB2YXJpYWJsZVwiIH0pXG4gICAgICAgICAgZWxzZSBPayB0cF9uYW1lXG4gICAgICAgIGluXG4gICAgICAgIE1hcC5zZXQgbWFwIH5rZXk6dmFyIH5kYXRhXG4gICAgICB8IF8gLT4gYWRkX3R5cGV2YXJzI2NvcmVfdHlwZSB0cF9pbl9yZXR1cm5fdHlwZSBtYXBcbiAgICBpblxuICAgIGZ1biB0cHMgY2QgLT5cbiAgICAgIG1hdGNoIGNkLnBjZF9yZXMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB0eSAtPlxuICAgICAgICAobWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgIHwgUHR5cF9jb25zdHIgKF8sIHBhcmFtcykgLT5cbiAgICAgICAgICAgaWYgTGlzdC5sZW5ndGggcGFyYW1zIDw+IExpc3QubGVuZ3RoIHRwc1xuICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgIChTdGRsaWIuTGlzdExhYmVscy5mb2xkX2xlZnQyXG4gICAgICAgICAgICAgICAgICB0cHNcbiAgICAgICAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgICAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZykpXG4gICAgICAgICAgICAgICAgICB+ZjphdXgpXG4gICAgICAgICB8IF8gLT4gTm9uZSlcbiAgOztcbmVuZFxuXG4oKiBVdGlsaXR5IGZ1bmN0aW9ucyAqKVxuXG5sZXQgcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXMgPVxuICBsZXQgbWFwID1cbiAgICBvYmplY3RcbiAgICAgIGluaGVyaXQgQXN0X3RyYXZlcnNlLm1hcCBhcyBzdXBlclxuXG4gICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgfCBQdHlwX3ZhciBfIC0+IFB0eXBfYW55XG4gICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgZW5kXG4gIGluXG4gIG1hcCNjb3JlX3R5cGVcbjs7XG5cbmxldCByaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHggPVxuICBsZXQgcHJlZml4ID0gXCJyaWdpZF9cIiBpblxuICBpZiBTdHJpbmcuZXF1YWwgeCB0eXBlX25hbWUgfHwgU3RyaW5nLmlzX3ByZWZpeCB4IH5wcmVmaXhcbiAgdGhlbiBwcmVmaXggXiB4IF4gXCJfb2ZfdHlwZV9cIiBeIHR5cGVfbmFtZVxuICBlbHNlIHhcbjs7XG5cbmxldCBtYWtlX3R5cGVfcmlnaWQgfnR5cGVfbmFtZSA9XG4gIGxldCBtYXAgPVxuICAgIG9iamVjdFxuICAgICAgaW5oZXJpdCBBc3RfdHJhdmVyc2UubWFwIGFzIHN1cGVyXG5cbiAgICAgIG1ldGhvZCEgY29yZV90eXBlIHR5ID1cbiAgICAgICAgbGV0IHB0eXBfZGVzYyA9XG4gICAgICAgICAgbWF0Y2ggdHkucHR5cF9kZXNjIHdpdGhcbiAgICAgICAgICB8IFB0eXBfdmFyIHMgLT5cbiAgICAgICAgICAgIFB0eXBfY29uc3RyIChMb2NhdGVkLmxpZGVudCB+bG9jOnR5LnB0eXBfbG9jIChyaWdpZF90eXBlX3ZhciB+dHlwZV9uYW1lIHMpLCBbXSlcbiAgICAgICAgICB8IGRlc2MgLT4gc3VwZXIjY29yZV90eXBlX2Rlc2MgZGVzY1xuICAgICAgICBpblxuICAgICAgICB7IHR5IHdpdGggcHR5cF9kZXNjIH1cbiAgICBlbmRcbiAgaW5cbiAgbWFwI2NvcmVfdHlwZVxuOztcblxuKCogR2VuZXJhdGVzIHRoZSBxdWFudGlmaWVkIHR5cGUgWyAhICdhIC4uICd6IC4gKG1ha2VfbW9ub190eXBlIHQgKCdhIC4uICd6KSkgXSBvclxuICAgW3R5cGUgYSAuLiB6LiBtYWtlX21vbm9fdHlwZSB0IChhIC4uIHopXSB3aGVuIFt1c2VfcmlnaWRfdmFyaWFibGVzXSBpcyB0cnVlLlxuICAgQW5ub3RhdGlvbiBhcmUgbmVlZGVkIGZvciBub24gcmVndWxhciByZWN1cnNpdmUgZGF0YXR5cGVzIGFuZCBnYWR0IHdoZW4gdGhlIHJldHVybiB0eXBlXG4gICBvZiBjb25zdHJ1Y3RvcnMgYXJlIGNvbnN0cmFpbmVkLiBVbmZvcnR1bmF0ZWx5LCBwdXR0aW5nIHJpZ2lkIHZhcmlhYmxlcyBldmVyeXdoZXJlIGRvZXNcbiAgIG5vdCB3b3JrIGJlY2F1c2Ugb2YgY2VydGFpbnMgdHlwZXMgd2l0aCBjb25zdHJhaW50cy4gV2UgdGh1cyBvbmx5IHVzZSByaWdpZCB2YXJpYWJsZXNcbiAgIGZvciBzdW0gdHlwZXMsIHdoaWNoIGluY2x1ZGVzIGFsbCBHQURUcy4gKilcblxubGV0IHR2YXJzX29mX2NvcmVfdHlwZSA6IGNvcmVfdHlwZSAtPiBzdHJpbmcgbGlzdCA9XG4gIGxldCB0dmFycyA9XG4gICAgb2JqZWN0XG4gICAgICBpbmhlcml0IFtzdHJpbmcgbGlzdF0gQXN0X3RyYXZlcnNlLmZvbGQgYXMgc3VwZXJcblxuICAgICAgbWV0aG9kISBjb3JlX3R5cGUgeCBhY2MgPVxuICAgICAgICBtYXRjaCB4LnB0eXBfZGVzYyB3aXRoXG4gICAgICAgIHwgUHR5cF92YXIgeCAtPiBpZiBMaXN0Lm1lbSBhY2MgeCB+ZXF1YWw6U3RyaW5nLmVxdWFsIHRoZW4gYWNjIGVsc2UgeCA6OiBhY2NcbiAgICAgICAgfCBfIC0+IHN1cGVyI2NvcmVfdHlwZSB4IGFjY1xuICAgIGVuZFxuICBpblxuICBmdW4gdHlwIC0+IExpc3QucmV2ICh0dmFycyNjb3JlX3R5cGUgdHlwIFtdKVxuOztcblxubGV0IGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmdcbiAgICAgICgqIHBsYWNpbmcgYSBzdWl0YWJseSBwb2x5bW9ycGhpYyBvciByaWdpZCB0eXBlIGNvbnN0cmFpbnQgb24gdGhlIHBhdHRlcm4gb3IgYm9keSAqKVxuICAgICAgKGxvYyA6IExvY2F0aW9uLnQpXG4gICAgICAodGQgOiB0eXBlX2RlY2xhcmF0aW9uKVxuICAgICAgKHR5cCA6IGNvcmVfdHlwZSlcbiAgICAgIH4odHBzIDogc3RyaW5nIGxvYyBsaXN0KVxuICAgICAgfihmdW5jX25hbWUgOiBzdHJpbmcpXG4gICAgICAoYm9keSA6IGV4cHJlc3Npb24pXG4gID1cbiAgbGV0IHZhcnMgPSB0dmFyc19vZl9jb3JlX3R5cGUgdHlwIGluXG4gIGxldCBoYXNfdmFycyA9XG4gICAgbWF0Y2ggdmFycyB3aXRoXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgXyA6OiBfIC0+IHRydWVcbiAgaW5cbiAgbGV0IHBhdCA9XG4gICAgbGV0IHBhdCA9IHB2YXIgfmxvYyBmdW5jX25hbWUgaW5cbiAgICBpZiBub3QgaGFzX3ZhcnNcbiAgICB0aGVuIHBhdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHZhcnMgPSBMaXN0Lm1hcCB+ZjooZnVuIHR4dCAtPiB7IHR4dDsgbG9jIH0pIHZhcnMgaW5cbiAgICAgIHBwYXRfY29uc3RyYWludCB+bG9jIHBhdCAocHR5cF9wb2x5IH5sb2MgdmFycyB0eXApKVxuICBpblxuICBsZXQgYm9keSA9XG4gICAgbGV0IHVzZV9yaWdpZF92YXJpYWJsZXMgPVxuICAgICAgbWF0Y2ggdGQucHR5cGVfa2luZCB3aXRoXG4gICAgICB8IFB0eXBlX3ZhcmlhbnQgXyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIGlmIHVzZV9yaWdpZF92YXJpYWJsZXNcbiAgICB0aGVuIChcbiAgICAgIGxldCB0eXBlX25hbWUgPSB0ZC5wdHlwZV9uYW1lLnR4dCBpblxuICAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgIHRwc1xuICAgICAgICB+ZjooZnVuIHRwIGJvZHkgLT5cbiAgICAgICAgICBwZXhwX25ld3R5cGUgfmxvYyB7IHR4dCA9IHJpZ2lkX3R5cGVfdmFyIH50eXBlX25hbWUgdHAudHh0OyBsb2MgPSB0cC5sb2MgfSBib2R5KVxuICAgICAgICB+aW5pdDoocGV4cF9jb25zdHJhaW50IH5sb2MgYm9keSAobWFrZV90eXBlX3JpZ2lkIH50eXBlX25hbWUgdHlwKSkpXG4gICAgZWxzZSBpZiBoYXNfdmFyc1xuICAgIHRoZW4gYm9keVxuICAgIGVsc2UgcGV4cF9jb25zdHJhaW50IH5sb2MgYm9keSB0eXBcbiAgaW5cbiAgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQgfmV4cHI6Ym9keVxuOztcblxubGV0IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzID1cbiAgKG9iamVjdFxuICAgIGluaGVyaXQgdHlwZV9pc19yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGFzIHN1cGVyXG5cbiAgICBtZXRob2QhIGNvcmVfdHlwZSBjdHlwZSA9XG4gICAgICBtYXRjaCBjdHlwZSB3aXRoXG4gICAgICB8IF8gd2hlbiBPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCB+bWFya19hc19zZWVuOmZhbHNlIEF0dHJzLm9wYXF1ZSBjdHlwZSkgLT5cbiAgICAgICAgKClcbiAgICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIC0+ICgpXG4gICAgICB8IF8gLT4gc3VwZXIjY29yZV90eXBlIGN0eXBlXG4gIGVuZClcbiAgI2dvXG4gICAgKClcbjs7XG5cbigqIEdlbmVyYXRlcyB0aGUgc2lnbmF0dXJlIGZvciB0eXBlIGNvbnZlcnNpb24gdG8gWW9qc29ucyAqKVxubW9kdWxlIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YgPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfb2ZfeW9qc29uX29mIH5sb2MgdCA9IFsldHlwZTogWyV0IHRdIC0+IFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudF1cbiAgbGV0IG1rX3R5cGUgdGQgPSBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+Zjp0eXBlX29mX3lvanNvbl9vZlxuXG4gIGxldCBta19zaWcgfmxvYzpfIH5wYXRoOl8gKF9yZiwgdGRzKSA9XG4gICAgTGlzdC5tYXAgdGRzIH5mOihmdW4gdGQgLT5cbiAgICAgIGxldCBsb2MgPSB0ZC5wdHlwZV9sb2MgaW5cbiAgICAgIHBzaWdfdmFsdWVcbiAgICAgICAgfmxvY1xuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKCggXiApIFwieW9qc29uX29mX1wiKSB0ZC5wdHlwZV9uYW1lKVxuICAgICAgICAgICB+dHlwZV86KG1rX3R5cGUgdGQpXG4gICAgICAgICAgIH5wcmltOltdKSlcbiAgOztcbmVuZFxuXG4oKiBHZW5lcmF0ZXMgdGhlIHNpZ25hdHVyZSBmb3IgdHlwZSBjb252ZXJzaW9uIGZyb20gWW9qc29ucyAqKVxubW9kdWxlIFNpZ19nZW5lcmF0ZV9vZl95b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfb2Zfb2ZfeW9qc29uIH5sb2MgdCA9IFsldHlwZTogUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb24uU2FmZS50IC0+IFsldCB0XV1cbiAgbGV0IG1rX3R5cGUgdGQgPSBjb21iaW5hdG9yX3R5cGVfb2ZfdHlwZV9kZWNsYXJhdGlvbiB0ZCB+Zjp0eXBlX29mX29mX3lvanNvblxuXG4gIGxldCBzaWdfb2ZfdGQgd2l0aF9wb2x5IHRkID1cbiAgICBsZXQgb2ZfeW9qc29uX3R5cGUgPSBta190eXBlIHRkIGluXG4gICAgbGV0IGxvYyA9IHsgdGQucHR5cGVfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IG9mX3lvanNvbl9pdGVtID1cbiAgICAgIHBzaWdfdmFsdWVcbiAgICAgICAgfmxvY1xuICAgICAgICAodmFsdWVfZGVzY3JpcHRpb25cbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICB+bmFtZTooTG9jYXRlZC5tYXAgKGZ1biBzIC0+IHMgXiBcIl9vZl95b2pzb25cIikgdGQucHR5cGVfbmFtZSlcbiAgICAgICAgICAgfnR5cGVfOm9mX3lvanNvbl90eXBlXG4gICAgICAgICAgIH5wcmltOltdKVxuICAgIGluXG4gICAgbWF0Y2ggd2l0aF9wb2x5LCBpc19wb2x5bW9ycGhpY192YXJpYW50IHRkIH5zaWdfOnRydWUgd2l0aFxuICAgIHwgdHJ1ZSwgYFN1cmVseV9ub3QgLT5cbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICB+bG9jXG4gICAgICAgIFwiU2lnX2dlbmVyYXRlX29mX3lvanNvbi5zaWdfb2ZfdGQ6IHlvanNvbl9wb2x5IGFubm90YXRpb24gYnV0IHR5cGUgaXMgc3VyZWx5IG5vdCBcXFxuICAgICAgICAgYSBwb2x5bW9ycGhpYyB2YXJpYW50XCJcbiAgICB8IGZhbHNlLCAoYFN1cmVseV9ub3QgfCBgTWF5YmUpIC0+IFsgb2ZfeW9qc29uX2l0ZW0gXVxuICAgIHwgKHRydWUgfCBmYWxzZSksIGBEZWZpbml0ZWx5IHwgdHJ1ZSwgYE1heWJlIC0+XG4gICAgICBbIG9mX3lvanNvbl9pdGVtXG4gICAgICA7IHBzaWdfdmFsdWVcbiAgICAgICAgICB+bG9jXG4gICAgICAgICAgKHZhbHVlX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgIH5uYW1lOihMb2NhdGVkLm1hcCAoZnVuIHMgLT4gXCJfX1wiIF4gcyBeIFwiX29mX3lvanNvbl9fXCIpIHRkLnB0eXBlX25hbWUpXG4gICAgICAgICAgICAgfnR5cGVfOm9mX3lvanNvbl90eXBlXG4gICAgICAgICAgICAgfnByaW06W10pXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IG1rX3NpZyB+cG9seSB+bG9jOl8gfnBhdGg6XyAoX3JmLCB0ZHMpID0gTGlzdC5jb25jYXRfbWFwIHRkcyB+Zjooc2lnX29mX3RkIHBvbHkpXG5lbmRcblxubW9kdWxlIFN0cl9nZW5lcmF0ZV95b2pzb25fb2YgPSBzdHJ1Y3RcbiAgKCogSGFuZGxpbmcgb2YgcmVjb3JkIGRlZmF1bHRzICopXG5cbiAgbGV0IHlvanNvbl9vZl90eXBlX2NvbnN0ciB+bG9jIGlkIGFyZ3MgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgfmxvYyBpZCB+ZjooZnVuIHMgLT4gXCJ5b2pzb25fb2ZfXCIgXiBzKSBhcmdzXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiB0eXBlcyAqKVxuICBsZXQgcmVjIHlvanNvbl9vZl90eXBlXG4gICAgICAgICAgICB+KHR5cGV2YXJfaGFuZGxpbmcgOiBbIGBvayBvZiBSZW5hbWluZy50IHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIF0pXG4gICAgICAgICAgICB0eXBcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBsb2MgPSB7IHR5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIHR5cCB3aXRoXG4gICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMub3BhcXVlIHR5cCkgLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgIHwgWyV0eXBlOiBfXSAtPiBGdW4gWyVleHByIGZ1biBfIC0+IGBTdHJpbmcgXCJfXCJdXG4gICAgfCBbJXR5cGU6IFsldD8gX10geW9qc29uX29wYXF1ZV0gLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3R1cGxlIHRwOyBfIH0gLT5cbiAgICAgIE1hdGNoIFsgeW9qc29uX29mX3R1cGxlIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIHRwKSBdXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyIHBhcm07IF8gfSAtPlxuICAgICAgKG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBcIlR5cGUgdmFyaWFibGVzIG5vdCBhbGxvd2VkIGluIFslJXlvanNvbl9vZjogXS4gUGxlYXNlIHVzZSBsb2NhbGx5IGFic3RyYWN0IFxcXG4gICAgICAgICAgICB0eXBlcyBpbnN0ZWFkLlwiXG4gICAgICAgfCBgb2sgcmVuYW1pbmcgLT5cbiAgICAgICAgIChtYXRjaCBSZW5hbWluZy5iaW5kaW5nX2tpbmQgcmVuYW1pbmcgcGFybSB3aXRoXG4gICAgICAgICAgfCBVbml2ZXJzYWxseV9ib3VuZCBwYXJtIC0+IEZ1biAoZXZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0pKVxuICAgICAgICAgIHwgRXhpc3RlbnRpYWxseV9ib3VuZCAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyBbJXR5cGU6IF9dKSlcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9jb25zdHIgKGlkLCBhcmdzKTsgXyB9IC0+XG4gICAgICBGdW5cbiAgICAgICAgKHlvanNvbl9vZl90eXBlX2NvbnN0clxuICAgICAgICAgICB+bG9jXG4gICAgICAgICAgIGlkXG4gICAgICAgICAgIChMaXN0Lm1hcCBhcmdzIH5mOihmdW4gdHAgLT5cbiAgICAgICAgICAgICAgRnVuX29yX21hdGNoLmV4cHIgfmxvYyAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHApKSkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfYXJyb3cgKF8sIF8sIF8pOyBfIH0gLT5cbiAgICAgIEZ1blxuICAgICAgICBbJWV4cHJcbiAgICAgICAgICBmdW4gX2YgLT5cbiAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYueW9qc29uX29mX2Z1biBQcHhfeW9qc29uX2NvbnZfbGliLmlnbm9yZV1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF92YXJpYW50IChyb3dfZmllbGRzLCBfLCBfKTsgXyB9IC0+XG4gICAgICB5b2pzb25fb2ZfdmFyaWFudCB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCByb3dfZmllbGRzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKHBhcm1zLCBwb2x5X3RwKTsgXyB9IC0+XG4gICAgICB5b2pzb25fb2ZfcG9seSB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyBwb2x5X3RwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfb2JqZWN0IChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY2xhc3MgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BhY2thZ2UgXzsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIF87IF8gfSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJUeXBlIHVuc3VwcG9ydGVkIGZvciBwcHggW3lvanNvbl9vZl0gY29udmVyc2lvblwiXG5cbiAgKCogQ29udmVyc2lvbiBvZiB0dXBsZXMgKilcbiAgYW5kIHlvanNvbl9vZl90dXBsZSB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cHMpID1cbiAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KGZ1biB0cCAtPiB5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZyB0cCkgdHBzIGluXG4gICAgbGV0IGJpbmRpbmdzLCBwdmFycywgZXZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgbGV0IGluX2V4cHIgPSBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgZXZhcnNdXSBpblxuICAgIGxldCBleHByID0gcGV4cF9sZXQgfmxvYyBOb25yZWN1cnNpdmUgYmluZGluZ3MgaW5fZXhwciBpblxuICAgIHBwYXRfdHVwbGUgfmxvYyBwdmFycyAtLT4gZXhwclxuXG4gICgqIENvbnZlcnNpb24gb2YgdmFyaWFudCB0eXBlcyAqKVxuICBhbmQgeW9qc29uX29mX3ZhcmlhbnRcbiAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgKChsb2MsIHJvd19maWVsZHMpIDogTG9jYXRpb24udCAqIHJvd19maWVsZCBsaXN0KVxuICAgIDogRnVuX29yX21hdGNoLnRcbiAgICA9XG4gICAgbGV0IGl0ZW0gcm93ID1cbiAgICAgIGxldCBuYW1lX292ZXJyaWRlID0gQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lIHJvdyBpblxuICAgICAgbWF0Y2ggcm93LnByZl9kZXNjIHdpdGhcbiAgICAgIHwgUnRhZyAoY25zdHIsIHRydWUsIFtdKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgICAgcHBhdF92YXJpYW50IH5sb2MgKExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCkgTm9uZVxuICAgICAgICAtLT4gWyVleHByIGBMaXN0IFsgYFN0cmluZyBbJWUgZXN0cmluZyB+bG9jIChMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCldIF1dXG4gICAgICB8IFJ0YWcgKGNuc3RyLCBmYWxzZSwgWyB0cCBdKSAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgIG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3R1cGxlIHRwcyAtPiB0cHNcbiAgICAgICAgICB8IF8gLT4gWyB0cCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGVzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXV0gaW5cbiAgICAgICAgbGV0IHlvanNvbl9vZl9hcmdzID0gTGlzdC5tYXAgfmY6KHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nKSBhcmdzIGluXG4gICAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgeW9qc29uX29mX2FyZ3MgaW5cbiAgICAgICAgbGV0IHBhdHQgPVxuICAgICAgICAgIG1hdGNoIHBhdHRzIHdpdGhcbiAgICAgICAgICB8IFsgcGF0dCBdIC0+IHBhdHRcbiAgICAgICAgICB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIHBhdHRzXG4gICAgICAgIGluXG4gICAgICAgIHBwYXRfdmFyaWFudCAoTGFiZWxfd2l0aF9uYW1lLmxhYmVsIGxhYmVsKSB+bG9jIChTb21lIHBhdHQpXG4gICAgICAgIC0tPiBwZXhwX2xldFxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICBiaW5kaW5nc1xuICAgICAgICAgICAgICBbJWV4cHIgYExpc3QgWyVlIGVsaXN0IH5sb2MgKGNuc3RyX2V4cHIgOjogdmFycyldXVxuICAgICAgfCBSaW5oZXJpdCB7IHB0eXBfZGVzYyA9IFB0eXBfY29uc3RyIChpZCwgW10pOyBfIH0gLT5cbiAgICAgICAgcHBhdF9hbGlhcyB+bG9jIChwcGF0X3R5cGUgfmxvYyBpZCkgKExvYy5tYWtlIFwidlwiIH5sb2MpXG4gICAgICAgIC0tPiB5b2pzb25fb2ZfdHlwZV9jb25zdHIgfmxvYyBpZCBbIFslZXhwciB2XSBdXG4gICAgICB8IFJ0YWcgKF8sIHRydWUsIFsgXyBdKSB8IFJ0YWcgKF8sIF8sIF8gOjogXyA6OiBfKSAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuc3VwcG9ydGVkOiB5b2pzb25fb2ZfdmFyaWFudC9SdGFnLyZcIlxuICAgICAgfCBSaW5oZXJpdCAoeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIF8gOjogXyk7IF8gfSBhcyB0eXApIC0+XG4gICAgICAgIGxldCBjYWxsID0gRnVuX29yX21hdGNoLmV4cHIgfmxvYyAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmcgdHlwKSBpblxuICAgICAgICBwcGF0X2FsaWFzIH5sb2MgKHBwYXRfdHlwZSB+bG9jIGlkKSAoTG9jLm1ha2UgXCJ2XCIgfmxvYykgLS0+IFslZXhwciBbJWUgY2FsbF0gdl1cbiAgICAgIHwgUmluaGVyaXQgXyAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInVuc3VwcG9ydGVkOiB5b2pzb25fb2ZfdmFyaWFudC9SaW5oZXJpdC9ub24taWRcIlxuICAgICAgKCogaW1wb3NzaWJsZT8qKVxuICAgICAgfCBSdGFnIChfLCBmYWxzZSwgW10pIC0+IGFzc2VydCBmYWxzZVxuICAgIGluXG4gICAgTWF0Y2ggKExpc3QubWFwIH5mOml0ZW0gcm93X2ZpZWxkcylcblxuICAoKiBQb2x5bW9ycGhpYyByZWNvcmQgZmllbGRzICopXG4gIGFuZCB5b2pzb25fb2ZfcG9seSB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyB0cCA9XG4gICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgbWF0Y2ggdHlwZXZhcl9oYW5kbGluZyB3aXRoXG4gICAgfCBgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgLT5cbiAgICAgICgqIFNob3VsZCBiZSBpbXBvc3NpYmxlIGJlY2F1c2UgW3lvanNvbl9vZl9wb2x5XSBpcyBvbmx5IGNhbGxlZCBvbiBwb2x5bW9ycGhpYyByZWNvcmRcbiAgICAgICAgIGZpZWxkcyBhbmQgcmVjb3JkIHR5cGUgZGVmaW5pdGlvbnMgY2FuJ3Qgb2NjdXIgaW4gdHlwZSBleHByZXNzaW9ucy4gKilcbiAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwicG9seW1vcnBoaWMgdHlwZSBpbiBhIHR5cGUgZXhwcmVzc2lvblwiXG4gICAgfCBgb2sgcmVuYW1pbmcgLT5cbiAgICAgIGxldCBiaW5kaW5ncyA9XG4gICAgICAgIGxldCBta19iaW5kaW5nIHBhcm0gPVxuICAgICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtLnR4dCkpXG4gICAgICAgICAgICB+ZXhwcjpbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi55b2pzb25fb2Zfb3BhcXVlXVxuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCB+Zjpta19iaW5kaW5nIHBhcm1zXG4gICAgICBpblxuICAgICAgbGV0IHJlbmFtaW5nID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgcGFybXMgfmluaXQ6cmVuYW1pbmcgfmY6UmVuYW1pbmcuYWRkX3VuaXZlcnNhbGx5X2JvdW5kXG4gICAgICBpblxuICAgICAgKG1hdGNoIHlvanNvbl9vZl90eXBlIH50eXBldmFyX2hhbmRsaW5nOihgb2sgcmVuYW1pbmcpIHRwIHdpdGhcbiAgICAgICB8IEZ1biBmdW5fZXhwciAtPiBGdW4gKHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIGZ1bl9leHByKVxuICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+XG4gICAgICAgICBNYXRjaFxuICAgICAgICAgICBbIFslcGF0PyBhcmddXG4gICAgICAgICAgICAgLS0+IHBleHBfbGV0XG4gICAgICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgICAgIGJpbmRpbmdzXG4gICAgICAgICAgICAgICAgICAgKHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgYXJnXSBtYXRjaGluZ3MpXG4gICAgICAgICAgIF0pXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiByZWNvcmQgdHlwZXMgKilcblxuICBsZXQgbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSA9XG4gICAgbGV0IHAgPSBMb2MubWFrZSAoTG9uZ2lkZW50LkxpZGVudCBuYW1lKSB+bG9jLCBwdmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpIGluXG4gICAgcGF0dCBAIFsgcCBdXG4gIDs7XG5cbiAgdHlwZSBpc19lbXB0eV9leHByID1cbiAgICB8IEluc3BlY3RfdmFsdWUgb2YgKGxvY2F0aW9uIC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbilcbiAgICB8IEluc3BlY3RfeW9qc29uIG9mIChjbnZfZXhwcjpleHByZXNzaW9uIC0+IGxvY2F0aW9uIC0+IGV4cHJlc3Npb24gLT4gZXhwcmVzc2lvbilcblxuICBsZXQgeW9qc29uX29mX3JlY29yZF9maWVsZCB+cmVuYW1pbmcgcGF0dCBleHByIG5hbWUgdHAgP3lvanNvbl9vZiBpc19lbXB0eV9leHByIGtleSA9XG4gICAgbGV0IGxvYyA9IHsgdHAucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH0gaW5cbiAgICBsZXQgcGF0dCA9IG1rX3JlY19wYXR0IGxvYyBwYXR0IG5hbWUgaW5cbiAgICBsZXQgY252X2V4cHIgPVxuICAgICAgbWF0Y2ggeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHAgd2l0aFxuICAgICAgfCBGdW4gZXhwIC0+IGV4cFxuICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gWyVleHByIGZ1biBlbCAtPiBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciBlbF0gbWF0Y2hpbmdzXV1cbiAgICBpblxuICAgIGxldCBjbnZfZXhwciA9XG4gICAgICBtYXRjaCB5b2pzb25fb2Ygd2l0aFxuICAgICAgfCBOb25lIC0+IGNudl9leHByXG4gICAgICB8IFNvbWUgeW9qc29uX29mIC0+IFslZXhwciBbJWUgeW9qc29uX29mXSBbJWUgY252X2V4cHJdXVxuICAgIGluXG4gICAgbGV0IGV4cHIgPVxuICAgICAgbGV0IHZfbmFtZSA9IFwidl9cIiBeIG5hbWUgaW5cbiAgICAgIFslZXhwclxuICAgICAgICBsZXQgYm5kcyA9XG4gICAgICAgICAgWyVlXG4gICAgICAgICAgICBtYXRjaCBpc19lbXB0eV9leHByIHdpdGhcbiAgICAgICAgICAgIHwgSW5zcGVjdF92YWx1ZSBpc19lbXB0eV9leHByIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIGlmIFslZSBpc19lbXB0eV9leHByIGxvYyAoZXZhciB+bG9jIHZfbmFtZSldXG4gICAgICAgICAgICAgICAgdGhlbiBibmRzXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBbJWUgZXZhciB+bG9jIHZfbmFtZV0gaW5cbiAgICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgICAgYm5kIDo6IGJuZHMpXVxuICAgICAgICAgICAgfCBJbnNwZWN0X3lvanNvbiBpc19lbXB0eV9leHByIC0+XG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIGxldCBhcmcgPSBbJWUgY252X2V4cHJdIFslZSBldmFyIH5sb2Mgdl9uYW1lXSBpblxuICAgICAgICAgICAgICAgIGlmIFslZSBpc19lbXB0eV9leHByIH5jbnZfZXhwciBsb2MgWyVleHByIGFyZ11dXG4gICAgICAgICAgICAgICAgdGhlbiBibmRzXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYm5kID0gWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcgaW5cbiAgICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzKV1dXG4gICAgICAgIGluXG4gICAgICAgIFslZSBleHByXV1cbiAgICBpblxuICAgIHBhdHQsIGV4cHJcbiAgOztcblxuICBsZXQgZGlzYWxsb3dfdHlwZV92YXJpYWJsZXNfYW5kX3JlY3Vyc2l2ZV9vY2N1cnJlbmNlcyB+dHlwZXNfYmVpbmdfZGVmaW5lZCB+bG9jIH53aHkgdHAgPVxuICAgIGxldCBkaXNhbGxvd192YXJpYWJsZXMgPVxuICAgICAgbGV0IGl0ZXIgPVxuICAgICAgICBvYmplY3RcbiAgICAgICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyIGFzIHN1cGVyXG5cbiAgICAgICAgICBtZXRob2QhIGNvcmVfdHlwZV9kZXNjID1cbiAgICAgICAgICAgIGZ1bmN0aW9uXG4gICAgICAgICAgICB8IFB0eXBfdmFyIHYgLT5cbiAgICAgICAgICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmXG4gICAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0LiVzXSB3YXMgdXNlZCwgYnV0IHRoZSB0eXBlIG9mIHRoZSBmaWVsZCBjb250YWlucyBcXFxuICAgICAgICAgICAgICAgICBhIHR5cGUgdmFyaWFibGU6ICclcy5cXG5cXFxuICAgICAgICAgICAgICAgICBDb21wYXJpc29uIGlzIG5vdCBhdmFpYWJsZSBmb3IgdHlwZSB2YXJpYWJsZXMuXFxuXFxcbiAgICAgICAgICAgICAgICAgQ29uc2lkZXIgdXNpbmcgW0B5b2pzb25fZHJvcF9pZiBfXSBvciBbQHlvanNvbl9kcm9wX2RlZmF1bHQueW9qc29uXSBcXFxuICAgICAgICAgICAgICAgICBpbnN0ZWFkLlwiXG4gICAgICAgICAgICAgICAgKG1hdGNoIHdoeSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYGNvbXBhcmUgLT4gXCJjb21wYXJlXCJcbiAgICAgICAgICAgICAgICAgfCBgZXF1YWwgLT4gXCJlcXVhbFwiKVxuICAgICAgICAgICAgICAgIHZcbiAgICAgICAgICAgIHwgdCAtPiBzdXBlciNjb3JlX3R5cGVfZGVzYyB0XG4gICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGl0ZXIjY29yZV90eXBlXG4gICAgaW5cbiAgICBsZXQgZGlzYWxsb3dfcmVjdXJzaXZlX29jY3VycmVuY2VzID1cbiAgICAgIG1hdGNoIHR5cGVzX2JlaW5nX2RlZmluZWQgd2l0aFxuICAgICAgfCBgTm9ucmVjdXJzaXZlIC0+IGZ1biBfIC0+ICgpXG4gICAgICB8IGBSZWN1cnNpdmUgdHlwZXNfYmVpbmdfZGVmaW5lZCAtPlxuICAgICAgICBsZXQgaXRlciA9XG4gICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICBpbmhlcml0IEFzdF90cmF2ZXJzZS5pdGVyIGFzIHN1cGVyXG5cbiAgICAgICAgICAgIG1ldGhvZCEgY29yZV90eXBlX2Rlc2MgPVxuICAgICAgICAgICAgICBmdW5jdGlvblxuICAgICAgICAgICAgICB8IFB0eXBfY29uc3RyICh7IGxvYyA9IF87IHR4dCA9IExpZGVudCBzIH0sIF8pIGFzIHQgLT5cbiAgICAgICAgICAgICAgICBpZiBTZXQubWVtIHR5cGVzX2JlaW5nX2RlZmluZWQgc1xuICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgICAgICAgIFwiW0B5b2pzb25fZHJvcF9kZWZhdWx0LiVzXSB3YXMgdXNlZCwgYnV0IHRoZSB0eXBlIG9mIHRoZSBmaWVsZCBcXFxuICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYSB0eXBlIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgcmVjdXJzaXZlIGJsb2NrOiAlcy5cXG5cXFxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBub3Qgc3VwcG9ydGVkLlxcblxcXG4gICAgICAgICAgICAgICAgICAgICBDb25zaWRlciB1c2luZyBbQHlvanNvbl9kcm9wX2lmIF9dIG9yIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIFxcXG4gICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLlwiXG4gICAgICAgICAgICAgICAgICAgIChtYXRjaCB3aHkgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBgY29tcGFyZSAtPiBcImNvbXBhcmVcIlxuICAgICAgICAgICAgICAgICAgICAgfCBgZXF1YWwgLT4gXCJlcXVhbFwiKVxuICAgICAgICAgICAgICAgICAgICBzO1xuICAgICAgICAgICAgICAgIHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgICAgICAgfCB0IC0+IHN1cGVyI2NvcmVfdHlwZV9kZXNjIHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgaW5cbiAgICAgICAgaXRlciNjb3JlX3R5cGVcbiAgICBpblxuICAgIGRpc2FsbG93X3ZhcmlhYmxlcyB0cDtcbiAgICBkaXNhbGxvd19yZWN1cnNpdmVfb2NjdXJyZW5jZXMgdHBcbiAgOztcblxuICBsZXQgeW9qc29uX29mX2RlZmF1bHRfZmllbGRcbiAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgaG93XG4gICAgICAgIH5yZW5hbWluZ1xuICAgICAgICBwYXR0XG4gICAgICAgIGV4cHJcbiAgICAgICAgbmFtZVxuICAgICAgICB0cFxuICAgICAgICA/eW9qc29uX29mXG4gICAgICAgIGRlZmF1bHRcbiAgICAgICAga2V5XG4gICAgPVxuICAgIGxldCBpc19lbXB0eSA9XG4gICAgICBtYXRjaCBob3cgd2l0aFxuICAgICAgfCBgeW9qc29uIC0+XG4gICAgICAgIEluc3BlY3RfeW9qc29uXG4gICAgICAgICAgKGZ1biB+Y252X2V4cHIgbG9jIHlvanNvbl9leHByIC0+XG4gICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLnBvbHlfZXF1YWwgKFslZSBjbnZfZXhwcl0gWyVlIGRlZmF1bHRdKSBbJWUgeW9qc29uX2V4cHJdXSlcbiAgICAgIHwgKGBub19hcmcgfCBgZnVuYyBfIHwgYGNvbXBhcmUgfCBgZXF1YWwpIGFzIGhvdyAtPlxuICAgICAgICBsZXQgZXF1YWxpdHlfZiBsb2MgPVxuICAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICAgfCBgbm9fYXJnIC0+XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5wb2x5X2VxdWFsIFtAb2NhbWwucHB3YXJuaW5nXG4gICAgICAgICAgICAgICAgXCJbQHlvanNvbl9kcm9wX2RlZmF1bHRdIGlzIGRlcHJlY2F0ZWQ6IFxcXG4gICAgICAgICAgICAgICAgIHBsZWFzZSB1c2Ugb25lIG9mOlxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0IGZdIGFuZCBnaXZlIGFuIFxcXG4gICAgICAgICAgICAgICAgIGV4cGxpY2l0IGVxdWFsaXR5IGZ1bmN0aW9uIChbZiA9IFxcXG4gICAgICAgICAgICAgICAgIFBvbHkuKD0pXSBjb3JyZXNwb25kcyB0byB0aGUgb2xkIFxcXG4gICAgICAgICAgICAgICAgIGJlaGF2aW9yKVxcblxcXG4gICAgICAgICAgICAgICAgIC0gW0B5b2pzb25fZHJvcF9kZWZhdWx0LmNvbXBhcmVdIGlmIHRoZSBcXFxuICAgICAgICAgICAgICAgICB0eXBlIHN1cHBvcnRzIFslY29tcGFyZV1cXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC5lcXVhbF0gaWYgdGhlIFxcXG4gICAgICAgICAgICAgICAgIHR5cGUgc3VwcG9ydHMgWyVlcXVhbF1cXG5cXFxuICAgICAgICAgICAgICAgICAtIFtAeW9qc29uX2Ryb3BfZGVmYXVsdC55b2pzb25dIGlmIHlvdSBcXFxuICAgICAgICAgICAgICAgICB3YW50IHRvIGNvbXBhcmUgdGhlIHlvanNvbiBcXFxuICAgICAgICAgICAgICAgICByZXByZXNlbnRhdGlvbnNcXG5cIl1dXG4gICAgICAgICAgfCBgZnVuYyBmIC0+IGZcbiAgICAgICAgICB8IGBjb21wYXJlIC0+XG4gICAgICAgICAgICBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53aHk6YGNvbXBhcmVcbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICB0cDtcbiAgICAgICAgICAgIFslZXhwciBbJWNvbXBhcmUuZXF1YWw6IFsldCB0cF1dXVxuICAgICAgICAgIHwgYGVxdWFsIC0+XG4gICAgICAgICAgICBkaXNhbGxvd190eXBlX3ZhcmlhYmxlc19hbmRfcmVjdXJzaXZlX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgIH50eXBlc19iZWluZ19kZWZpbmVkXG4gICAgICAgICAgICAgIH53aHk6YGVxdWFsXG4gICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgdHA7XG4gICAgICAgICAgICBbJWV4cHIgWyVlcXVhbDogWyV0IHRwXV1dXG4gICAgICAgIGluXG4gICAgICAgIEluc3BlY3RfdmFsdWUgKGZ1biBsb2MgZXhwciAtPiBbJWV4cHIgWyVlIGVxdWFsaXR5X2YgbG9jXSBbJWUgZGVmYXVsdF0gWyVlIGV4cHJdXSlcbiAgICBpblxuICAgIHlvanNvbl9vZl9yZWNvcmRfZmllbGQgfnJlbmFtaW5nIHBhdHQgZXhwciBuYW1lIHRwID95b2pzb25fb2YgaXNfZW1wdHkga2V5XG4gIDs7XG5cbiAgbGV0IHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0IH50eXBlc19iZWluZ19kZWZpbmVkIH5yZW5hbWluZyBsb2MgZmxkcyB+d3JhcF9leHByID1cbiAgICBsZXQgY29sbCAoKHBhdHQgOiAoTG9uZ2lkZW50LnQgbG9jICogcGF0dGVybikgbGlzdCksIGV4cHIpIGxkID1cbiAgICAgIGxldCBuYW1lID0gbGQucGxkX25hbWUudHh0IGluXG4gICAgICBsZXQga2V5ID1cbiAgICAgICAgT3B0aW9uLnZhbHVlIH5kZWZhdWx0OmxkLnBsZF9uYW1lLnR4dCAoQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fa2V5IGxkKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2MgPSB7IGxkLnBsZF9uYW1lLmxvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuWW9qc29uX29mLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgIHwgYHlvanNvbl9vcHRpb24gdHAgLT5cbiAgICAgICAgbGV0IHBhdHQgPSBta19yZWNfcGF0dCBsb2MgcGF0dCBuYW1lIGluXG4gICAgICAgIGxldCB2bmFtZSA9IFslZXhwciB2XSBpblxuICAgICAgICBsZXQgY252X2V4cHIgPVxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIHZuYW1lXG4gICAgICAgICAgICAoeW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayByZW5hbWluZykgdHApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgIGxldCBibmRzID1cbiAgICAgICAgICAgICAgbWF0Y2ggWyVlIGV2YXIgfmxvYyAoXCJ2X1wiIF4gbmFtZSldIHdpdGhcbiAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lIC0+IGJuZHNcbiAgICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIHYgLT5cbiAgICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBpblxuICAgICAgICAgICAgICAgIGxldCBibmQgPSBbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZyBpblxuICAgICAgICAgICAgICAgIGJuZCA6OiBibmRzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgWyVlIGV4cHJdXVxuICAgICAgICBpblxuICAgICAgICBwYXR0LCBleHByXG4gICAgICB8IGBkcm9wX2RlZmF1bHQgaG93IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIChtYXRjaCBBdHRyaWJ1dGUuZ2V0IEF0dHJzLmRlZmF1bHQgbGQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwibm8gZGVmYXVsdCB0byBkcm9wXCJcbiAgICAgICAgIHwgU29tZSBkZWZhdWx0IC0+XG4gICAgICAgICAgIHlvanNvbl9vZl9kZWZhdWx0X2ZpZWxkXG4gICAgICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICAgICBob3dcbiAgICAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICAgICBwYXR0XG4gICAgICAgICAgICAgZXhwclxuICAgICAgICAgICAgIG5hbWVcbiAgICAgICAgICAgICB0cFxuICAgICAgICAgICAgIGRlZmF1bHRcbiAgICAgICAgICAgICBrZXkpXG4gICAgICB8IGBkcm9wX2lmIHRlc3QgLT5cbiAgICAgICAgbGV0IHRwID0gbGQucGxkX3R5cGUgaW5cbiAgICAgICAgeW9qc29uX29mX3JlY29yZF9maWVsZFxuICAgICAgICAgIH5yZW5hbWluZ1xuICAgICAgICAgIHBhdHRcbiAgICAgICAgICBleHByXG4gICAgICAgICAgbmFtZVxuICAgICAgICAgIHRwXG4gICAgICAgICAgKEluc3BlY3RfdmFsdWUgKGZ1biBsb2MgZXhwciAtPiBbJWV4cHIgWyVlIHRlc3RdIFslZSBleHByXV0pKVxuICAgICAgICAgIGtleVxuICAgICAgfCBga2VlcCBhcyB0ZXN0IC0+XG4gICAgICAgIGxldCB0cCA9IGxkLnBsZF90eXBlIGluXG4gICAgICAgIGxldCBwYXR0ID0gbWtfcmVjX3BhdHQgbG9jIHBhdHQgbmFtZSBpblxuICAgICAgICBsZXQgdm5hbWUgPSBldmFyIH5sb2MgKFwidl9cIiBeIG5hbWUpIGluXG4gICAgICAgIGxldCBjbnZfZXhwciA9XG4gICAgICAgICAgRnVuX29yX21hdGNoLnVucm9sbFxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgdm5hbWVcbiAgICAgICAgICAgICh5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSB0cClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHMgPVxuICAgICAgICAgIG1hdGNoIHRlc3Qgd2l0aFxuICAgICAgICAgIHwgYGtlZXAgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBsZXQgYXJnID0gWyVlIGNudl9leHByXSBpblxuICAgICAgICAgICAgICAoWyVlIGVzdHJpbmcgfmxvYyBrZXldLCBhcmcpIDo6IGJuZHNdXG4gICAgICAgICAgfCBgb21pdF9uaWwgLT5cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBtYXRjaCBbJWUgY252X2V4cHJdIHdpdGhcbiAgICAgICAgICAgICAgfCBgTnVsbCAtPiBibmRzXG4gICAgICAgICAgICAgIHwgYXJnIC0+IChbJWUgZXN0cmluZyB+bG9jIGtleV0sIGFyZykgOjogYm5kc11cbiAgICAgICAgaW5cbiAgICAgICAgKCBwYXR0XG4gICAgICAgICwgWyVleHByXG4gICAgICAgICAgbGV0IGJuZHMgPSBbJWUgYm5kc10gaW5cbiAgICAgICAgICBbJWUgZXhwcl1dIClcbiAgICBpblxuICAgIGxldCBpbml0X2V4cHIgPSB3cmFwX2V4cHIgWyVleHByIGJuZHNdIGluXG4gICAgbGV0IHBhdHQsIGV4cHIgPSBMaXN0LmZvbGRfbGVmdCB+Zjpjb2xsIH5pbml0OihbXSwgaW5pdF9leHByKSBmbGRzIGluXG4gICAgKCBwcGF0X3JlY29yZCB+bG9jIHBhdHQgQ2xvc2VkXG4gICAgLCBbJWV4cHJcbiAgICAgIGxldCBibmRzIDogKHN0cmluZyAqIFBweF95b2pzb25fY29udl9saWIuWW9qc29uLlNhZmUudCkgbGlzdCA9IFtdIGluXG4gICAgICBbJWUgZXhwcl1dIClcbiAgOztcblxuICAoKiBDb252ZXJzaW9uIG9mIHN1bSB0eXBlcyAqKVxuXG4gIGxldCBicmFuY2hfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIHJlbmFtaW5nIH5sb2MgY29uc3RyX2xpZCBjb25zdHJfc3RyIGFyZ3MgPVxuICAgIG1hdGNoIGFyZ3Mgd2l0aFxuICAgIHwgUGNzdHJfcmVjb3JkIGxkcyAtPlxuICAgICAgbGV0IGNuc3RyX2V4cHIgPSBbJWV4cHIgYFN0cmluZyBbJWUgY29uc3RyX3N0cl1dIGluXG4gICAgICBsZXQgcGF0dCwgZXhwciA9XG4gICAgICAgIHlvanNvbl9vZl9sYWJlbF9kZWNsYXJhdGlvbl9saXN0XG4gICAgICAgICAgfnR5cGVzX2JlaW5nX2RlZmluZWRcbiAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICBsb2NcbiAgICAgICAgICBsZHNcbiAgICAgICAgICB+d3JhcF9leHByOihmdW4gZXhwciAtPiBbJWV4cHIgYExpc3QgWyBbJWUgY25zdHJfZXhwcl07IGBBc3NvYyBbJWUgZXhwcl0gXV0pXG4gICAgICBpblxuICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIChTb21lIHBhdHQpIC0tPiBleHByXG4gICAgfCBQY3N0cl90dXBsZSBwY2RfYXJncyAtPlxuICAgICAgKG1hdGNoIHBjZF9hcmdzIHdpdGhcbiAgICAgICB8IFtdIC0+XG4gICAgICAgICBwcGF0X2NvbnN0cnVjdCB+bG9jIGNvbnN0cl9saWQgTm9uZSAtLT4gWyVleHByIGBMaXN0IFsgYFN0cmluZyBbJWUgY29uc3RyX3N0cl0gXV1cbiAgICAgICB8IGFyZ3MgLT5cbiAgICAgICAgIGxldCB5b2pzb25fb2ZfYXJncyA9XG4gICAgICAgICAgIExpc3QubWFwIH5mOih5b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzooYG9rIHJlbmFtaW5nKSkgYXJnc1xuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBjbnN0cl9leHByID0gWyVleHByIGBTdHJpbmcgWyVlIGNvbnN0cl9zdHJdXSBpblxuICAgICAgICAgbGV0IGJpbmRpbmdzLCBwYXR0cywgdmFycyA9IEZ1bl9vcl9tYXRjaC5tYXBfdG1wX3ZhcnMgfmxvYyB5b2pzb25fb2ZfYXJncyBpblxuICAgICAgICAgbGV0IHBhdHQgPVxuICAgICAgICAgICBtYXRjaCBwYXR0cyB3aXRoXG4gICAgICAgICAgIHwgWyBwYXR0IF0gLT4gcGF0dFxuICAgICAgICAgICB8IF8gLT4gcHBhdF90dXBsZSB+bG9jIHBhdHRzXG4gICAgICAgICBpblxuICAgICAgICAgcHBhdF9jb25zdHJ1Y3QgfmxvYyBjb25zdHJfbGlkIChTb21lIHBhdHQpXG4gICAgICAgICAtLT4gcGV4cF9sZXRcbiAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgICAgICAgICAgYmluZGluZ3NcbiAgICAgICAgICAgICAgIFslZXhwciBgTGlzdCBbJWUgZWxpc3QgfmxvYyAoY25zdHJfZXhwciA6OiB2YXJzKV1dKVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2Zfc3VtIH50eXBlc19iZWluZ19kZWZpbmVkIHRwcyBjZHMgPVxuICAgIEZ1bl9vcl9tYXRjaC5NYXRjaFxuICAgICAgKExpc3QubWFwIGNkcyB+ZjooZnVuIGNkIC0+XG4gICAgICAgICBsZXQgcmVuYW1pbmcgPSBSZW5hbWluZy5vZl9nYWR0IHRwcyBjZCBpblxuICAgICAgICAgbGV0IGNvbnN0cl9saWQgPSBMb2NhdGVkLm1hcCBsaWRlbnQgY2QucGNkX25hbWUgaW5cbiAgICAgICAgIGxldCBjb25zdHJfbmFtZSA9XG4gICAgICAgICAgIGxldCBsYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5vZl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbiBjZCBpblxuICAgICAgICAgICBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCB8PiBlc3RyaW5nIH5sb2M6Y2QucGNkX25hbWUubG9jXG4gICAgICAgICBpblxuICAgICAgICAgYnJhbmNoX3N1bVxuICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICByZW5hbWluZ1xuICAgICAgICAgICB+bG9jOmNkLnBjZF9sb2NcbiAgICAgICAgICAgY29uc3RyX2xpZFxuICAgICAgICAgICBjb25zdHJfbmFtZVxuICAgICAgICAgICBjZC5wY2RfYXJncykpXG4gIDs7XG5cbiAgKCogRW1wdHkgdHlwZSAqKVxuICBsZXQgeW9qc29uX29mX25pbCBsb2MgPSBGdW5fb3JfbWF0Y2guRnVuIFslZXhwciBmdW4gX3YgLT4gYXNzZXJ0IGZhbHNlXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG5cbiAgbGV0IHlvanNvbl9vZl90ZCB+dHlwZXNfYmVpbmdfZGVmaW5lZCB0ZCA9XG4gICAgbGV0IHRkID0gbmFtZV90eXBlX3BhcmFtc19pbl90ZCB0ZCBpblxuICAgIGxldCB0cHMgPSBMaXN0Lm1hcCB0ZC5wdHlwZV9wYXJhbXMgfmY6Z2V0X3R5cGVfcGFyYW1fbmFtZSBpblxuICAgIGxldCB7IHB0eXBlX25hbWUgPSB7IHR4dCA9IHR5cGVfbmFtZTsgbG9jID0gXyB9OyBwdHlwZV9sb2MgPSBsb2M7IF8gfSA9IHRkIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IGJvZHkgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kIHdpdGhcbiAgICAgICAgfCBQdHlwZV92YXJpYW50IGNkcyAtPlxuICAgICAgICAgIHlvanNvbl9vZl9zdW0gfnR5cGVzX2JlaW5nX2RlZmluZWQgKExpc3QubWFwIHRwcyB+ZjooZnVuIHggLT4geC50eHQpKSBjZHNcbiAgICAgICAgfCBQdHlwZV9yZWNvcmQgbGRzIC0+XG4gICAgICAgICAgbGV0IHJlbmFtaW5nID0gUmVuYW1pbmcuaWRlbnRpdHkgaW5cbiAgICAgICAgICBsZXQgcGF0dCwgZXhwciA9XG4gICAgICAgICAgICB5b2pzb25fb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdFxuICAgICAgICAgICAgICB+cmVuYW1pbmdcbiAgICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICAgIGxkc1xuICAgICAgICAgICAgICB+dHlwZXNfYmVpbmdfZGVmaW5lZFxuICAgICAgICAgICAgICB+d3JhcF9leHByOihmdW4gZXhwciAtPiBbJWV4cHIgYEFzc29jIFslZSBleHByXV0pXG4gICAgICAgICAgaW5cbiAgICAgICAgICBNYXRjaCBbIHBhdHQgLS0+IGV4cHIgXVxuICAgICAgICB8IFB0eXBlX29wZW4gLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogb3BlbiB0eXBlcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICAgIChtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiB5b2pzb25fb2ZfbmlsIGxvY1xuICAgICAgICAgICB8IFNvbWUgdHkgLT4geW9qc29uX29mX3R5cGUgfnR5cGV2YXJfaGFuZGxpbmc6KGBvayBSZW5hbWluZy5pZGVudGl0eSkgdHkpXG4gICAgICBpblxuICAgICAgbGV0IGlzX3ByaXZhdGVfYWxpYXMgPVxuICAgICAgICBtYXRjaCB0ZC5wdHlwZV9raW5kLCB0ZC5wdHlwZV9tYW5pZmVzdCwgdGQucHR5cGVfcHJpdmF0ZSB3aXRoXG4gICAgICAgIHwgUHR5cGVfYWJzdHJhY3QsIFNvbWUgXywgUHJpdmF0ZSAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGlmIGlzX3ByaXZhdGVfYWxpYXNcbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiBSZXBsYWNlIGFsbCB0eXBlIHZhcmlhYmxlIGJ5IF8gdG8gYXZvaWQgZ2VuZXJhbGl6YXRpb24gcHJvYmxlbXMgKilcbiAgICAgICAgbGV0IHR5X3NyYyA9XG4gICAgICAgICAgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfD4gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1hbmlmZXN0ID1cbiAgICAgICAgICBtYXRjaCB0ZC5wdHlwZV9tYW5pZmVzdCB3aXRoXG4gICAgICAgICAgfCBTb21lIG1hbmlmZXN0IC0+IG1hbmlmZXN0XG4gICAgICAgICAgfCBOb25lIC0+IExvY2F0aW9uLnJhaXNlX2Vycm9yZiB+bG9jIFwieW9qc29uX29mX3RkL25vLW1hbmlmZXN0XCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHR5X2RzdCA9IHJlcGxhY2VfdmFyaWFibGVzX2J5X3VuZGVyc2NvcmVzIG1hbmlmZXN0IGluXG4gICAgICAgIGxldCBjb2VyY2lvbiA9IFslZXhwciAodiA6IFsldCB0eV9zcmNdIDo+IFsldCB0eV9kc3RdKV0gaW5cbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBjb2VyY2lvbiBdXV1cbiAgICAgICAgfCBNYXRjaCBtYXRjaGluZ3MgLT4gWyVleHByIGZ1biB2IC0+IFslZSBwZXhwX21hdGNoIH5sb2MgY29lcmNpb24gbWF0Y2hpbmdzXV0pXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICgqIFByZXZlbnQgdmlvbGF0aW9uIG9mIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCBwcm9ibGVtcyB3aXRoIHJlY3Vyc2l2ZSB0eXBlcyBieVxuICAgICAgICAgICBldGEtZXhwYW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zICopXG4gICAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBmdW4gdiAtPiBbJWUgZWFwcGx5IH5sb2MgZnVuX2V4cHIgWyBbJWV4cHIgdl0gXV1dXG4gICAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBtYXRjaGluZ3MpXG4gICAgaW5cbiAgICBsZXQgdHlwID0gU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta190eXBlIHRkIGluXG4gICAgbGV0IGZ1bmNfbmFtZSA9IFwieW9qc29uX29mX1wiIF4gdHlwZV9uYW1lIGluXG4gICAgbGV0IGJvZHkgPVxuICAgICAgbGV0IHBhdHRzID0gTGlzdC5tYXAgdHBzIH5mOihmdW4gaWQgLT4gcHZhciB+bG9jIChcIl9vZl9cIiBeIGlkLnR4dCkpIGluXG4gICAgICBsZXQgcmVjX2ZsYWcgPVxuICAgICAgICBtYXRjaCB0eXBlc19iZWluZ19kZWZpbmVkIHdpdGhcbiAgICAgICAgfCBgUmVjdXJzaXZlIF8gLT4gUmVjdXJzaXZlXG4gICAgICAgIHwgYE5vbnJlY3Vyc2l2ZSAtPiBOb25yZWN1cnNpdmVcbiAgICAgIGluXG4gICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWMgfnJlY19mbGFnIChlYWJzdHJhY3QgfmxvYyBwYXR0cyBib2R5KVxuICAgIGluXG4gICAgWyBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHkgXVxuICA7O1xuXG4gIGxldCB5b2pzb25fb2ZfdGRzIH5sb2MgfnBhdGg6XyAocmVjX2ZsYWcsIHRkcykgPVxuICAgIGxldCByZWNfZmxhZyA9IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGluXG4gICAgbGV0IHR5cGVzX2JlaW5nX2RlZmluZWQgPVxuICAgICAgbWF0Y2ggcmVjX2ZsYWcgd2l0aFxuICAgICAgfCBOb25yZWN1cnNpdmUgLT4gYE5vbnJlY3Vyc2l2ZVxuICAgICAgfCBSZWN1cnNpdmUgLT5cbiAgICAgICAgYFJlY3Vyc2l2ZVxuICAgICAgICAgIChTZXQub2ZfbGlzdCAobW9kdWxlIFN0cmluZykgKExpc3QubWFwIHRkcyB+ZjooZnVuIHRkIC0+IHRkLnB0eXBlX25hbWUudHh0KSkpXG4gICAgaW5cbiAgICBsZXQgYmluZGluZ3MgPSBMaXN0LmNvbmNhdF9tYXAgdGRzIH5mOih5b2pzb25fb2ZfdGQgfnR5cGVzX2JlaW5nX2RlZmluZWQpIGluXG4gICAgcHN0cl92YWx1ZV9saXN0IH5sb2MgcmVjX2ZsYWcgYmluZGluZ3NcbiAgOztcbmVuZFxuXG5tb2R1bGUgU3RyX2dlbmVyYXRlX3lvanNvbl9maWVsZHMgPSBzdHJ1Y3RcbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCBsb2MgZmxkcyA9XG4gICAgbGV0IGNvbGwgbGQgPVxuICAgICAgbGV0IGtleSA9XG4gICAgICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpsZC5wbGRfbmFtZS50eHQgKEF0dHJpYnV0ZS5nZXQgQXR0cnMueW9qc29uX2tleSBsZClcbiAgICAgIGluXG4gICAgICBsZXQgbG9jID0gbGQucGxkX25hbWUubG9jIGluXG4gICAgICBlc3RyaW5nIH5sb2Mga2V5XG4gICAgaW5cbiAgICBlbGlzdCB+bG9jIChMaXN0Lm1hcCB+Zjpjb2xsIGZsZHMpXG4gIDs7XG5cbiAgbGV0IHlvanNvbl9maWVsZHNfb2ZfdGQgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgfCBQdHlwZV9yZWNvcmQgbGRzIC0+IHlvanNvbl9maWVsZHNfb2ZfbGFiZWxfZGVjbGFyYXRpb25fbGlzdCBsb2MgbGRzXG4gICAgICB8IFB0eXBlX3ZhcmlhbnQgXyB8IFB0eXBlX29wZW4gfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogeW9qc29uX2ZpZWxkcyBvbmx5IHdvcmtzIG9uIHJlY29yZHNcIlxuICAgIGluXG4gICAgbGV0IHR5cCA9IFsldHlwZTogc3RyaW5nIGxpc3RdIGluXG4gICAgbGV0IGZ1bmNfbmFtZSA9IFwieW9qc29uX2ZpZWxkc19vZl9cIiBeIHR5cGVfbmFtZSBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIGxldCBwYXR0cyA9IExpc3QubWFwIHRwcyB+ZjooZnVuIGlkIC0+IHB2YXIgfmxvYyAoXCJfZmllbGRzX29mX1wiIF4gaWQudHh0KSkgaW5cbiAgICAgIGV0YV9yZWR1Y2VfaWZfcG9zc2libGUgKGVhYnN0cmFjdCB+bG9jIHBhdHRzIGJvZHkpXG4gICAgaW5cbiAgICBjb25zdHJhaW5lZF9mdW5jdGlvbl9iaW5kaW5nIGxvYyB0ZCB0eXAgfnRwcyB+ZnVuY19uYW1lIGJvZHlcbiAgOztcblxuICBsZXQgeW9qc29uX2ZpZWxkc19vZl90ZHMgfmxvYyB+cGF0aDpfIChfLCB0ZHMpID1cbiAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBOb25yZWN1cnNpdmUgKExpc3QubWFwIHRkcyB+Zjp5b2pzb25fZmllbGRzX29mX3RkKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTdHJfZ2VuZXJhdGVfb2ZfeW9qc29uID0gc3RydWN0XG4gICgqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKVxuXG4gICgqIEhhbmRsZSBiYWNrdHJhY2tpbmcgd2hlbiB2YXJpYW50cyBkbyBub3QgbWF0Y2ggKilcbiAgbGV0IGhhbmRsZV9ub192YXJpYW50X21hdGNoIGxvYyBleHByID1cbiAgICBbIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2hdIC0tPiBleHByIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRvIGdlbmVyYXRlIGEgbWF0Y2ggZm9yIHRoZSBsYXN0XG4gICAgIGNhc2Ugb2YgbWF0Y2hpbmcgYSB2YXJpYW50ICopXG4gIGxldCBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaGVzID1cbiAgICBtYXRjaCBtYXRjaF9sYXN0LCBtYXRjaGVzIHdpdGhcbiAgICB8IHRydWUsIFsgeyBwY19saHMgPSBfOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyA9IGV4cHIgfSBdXG4gICAgfCBfLCBbIHsgcGNfbGhzID0gWyVwYXQ/IF9dOyBwY19ndWFyZCA9IE5vbmU7IHBjX3JocyA9IGV4cHIgfSBdIC0+IGV4cHJcbiAgICB8IF8gLT4gcGV4cF9tYXRjaCB+bG9jIFslZXhwciBhdG9tXSBtYXRjaGVzXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgbWF0Y2hpbmcgbWFsZm9ybWVkIFlvanNvbnMgKilcbiAgbGV0IG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHMgY2FsbCA9XG4gICAgbGV0IGNvbGxfc3RydWN0cyBhY2MgKGxvYywgbGFiZWwpID1cbiAgICAgIChwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKVxuICAgICAgIC0tPlxuICAgICAgIG1hdGNoIGNhbGwgd2l0aFxuICAgICAgIHwgYHB0YWdfbm9fYXJncyAtPlxuICAgICAgICAgWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ19ub19hcmdzIF90cF9sb2MgX3lvanNvbl1cbiAgICAgICB8IGBwdGFnX3Rha2VzX2FyZ3MgLT5cbiAgICAgICAgIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnB0YWdfdGFrZXNfYXJncyBfdHBfbG9jIF95b2pzb25dKVxuICAgICAgOjogYWNjXG4gICAgaW5cbiAgICBsZXQgZXhjX25vX3ZhcmlhbnRfbWF0Y2ggPVxuICAgICAgWyVwYXQ/IF9dIC0tPiBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub192YXJpYW50X21hdGNoICgpXVxuICAgIGluXG4gICAgTGlzdC5mb2xkX2xlZnQgfmY6Y29sbF9zdHJ1Y3RzIH5pbml0OlsgZXhjX25vX3ZhcmlhbnRfbWF0Y2ggXSByZXZfZWxzXG4gIDs7XG5cbiAgKCogU3BsaXQgdGhlIHJvdyBmaWVsZHMgb2YgYSB2YXJpYW50IHR5cGUgaW50byBsaXN0cyBvZiBhdG9taWMgdmFyaWFudHMsXG4gICAgIHN0cnVjdHVyZWQgdmFyaWFudHMsIGF0b21pYyB2YXJpYW50cyArIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMsXG4gICAgIGFuZCBzdHJ1Y3R1cmVkIHZhcmlhbnRzICsgaW5jbHVkZWQgdmFyaWFudCB0eXBlcy4gKilcbiAgbGV0IHNwbGl0X3Jvd19maWVsZCB+bG9jIChhdG9tcywgc3RydWN0cywgYWluaHMsIHNpbmhzKSByb3dfZmllbGQgPVxuICAgIGxldCBuYW1lX292ZXJyaWRlID0gQXR0cmlidXRlLmdldCBBdHRycy55b2pzb25fcG9seW1vcnBoaWNfdmFyaWFudF9uYW1lIHJvd19maWVsZCBpblxuICAgIG1hdGNoIHJvd19maWVsZC5wcmZfZGVzYyB3aXRoXG4gICAgfCBSdGFnIChjbnN0ciwgdHJ1ZSwgW10pIC0+XG4gICAgICBsZXQgbGFiZWwgPSBMYWJlbF93aXRoX25hbWUuY3JlYXRlIH5sYWJlbDpjbnN0ci50eHQgfm5hbWVfb3ZlcnJpZGUgaW5cbiAgICAgIGxldCB0cGwgPSBsb2MsIGxhYmVsIGluXG4gICAgICB0cGwgOjogYXRvbXMsIHN0cnVjdHMsIGBBIHRwbCA6OiBhaW5ocywgc2luaHNcbiAgICB8IFJ0YWcgKGNuc3RyLCBmYWxzZSwgWyB0cCBdKSAtPlxuICAgICAgbGV0IGxhYmVsID0gTGFiZWxfd2l0aF9uYW1lLmNyZWF0ZSB+bGFiZWw6Y25zdHIudHh0IH5uYW1lX292ZXJyaWRlIGluXG4gICAgICBsZXQgbG9jID0gdHAucHR5cF9sb2MgaW5cbiAgICAgIGF0b21zLCAobG9jLCBsYWJlbCkgOjogc3RydWN0cywgYWluaHMsIGBTIChsb2MsIGxhYmVsLCB0cCwgcm93X2ZpZWxkKSA6OiBzaW5oc1xuICAgIHwgUmluaGVyaXQgaW5oIC0+XG4gICAgICBsZXQgaWluaCA9IGBJIGluaCBpblxuICAgICAgYXRvbXMsIHN0cnVjdHMsIGlpbmggOjogYWluaHMsIGlpbmggOjogc2luaHNcbiAgICB8IFJ0YWcgKF8sIHRydWUsIFsgXyBdKSB8IFJ0YWcgKF8sIF8sIF8gOjogXyA6OiBfKSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJzcGxpdF9yb3dfZmllbGQvJlwiXG4gICAgfCBSdGFnIChfLCBmYWxzZSwgW10pIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCB0eXBlX2NvbnN0cl9vZl95b2pzb24gPyhpbnRlcm5hbCA9IGZhbHNlKSB+bG9jIGlkIGFyZ3MgPVxuICAgIHR5cGVfY29uc3RyX2NvbnYgaWQgYXJncyB+bG9jIH5mOihmdW4gcyAtPlxuICAgICAgbGV0IHMgPSBzIF4gXCJfb2ZfeW9qc29uXCIgaW5cbiAgICAgIGlmIGludGVybmFsIHRoZW4gXCJfX1wiIF4gcyBeIFwiX19cIiBlbHNlIHMpXG4gIDs7XG5cbiAgKCogQ29udmVyc2lvbiBvZiB0eXBlcyAqKVxuICBsZXQgcmVjIHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nID9mdWxsX3R5cGUgPyhpbnRlcm5hbCA9IGZhbHNlKSB0eXBcbiAgICA6IEZ1bl9vcl9tYXRjaC50XG4gICAgPVxuICAgIGxldCBsb2MgPSB7IHR5cC5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSBpblxuICAgIG1hdGNoIHR5cCB3aXRoXG4gICAgfCBfIHdoZW4gT3B0aW9uLmlzX3NvbWUgKEF0dHJpYnV0ZS5nZXQgQXR0cnMub3BhcXVlIHR5cCkgLT5cbiAgICAgIEZ1biBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udi5vcGFxdWVfb2ZfeW9qc29uXVxuICAgIHwgWyV0eXBlOiBbJXQ/IF9dIHlvanNvbl9vcGFxdWVdIHwgWyV0eXBlOiBfXSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252Lm9wYXF1ZV9vZl95b2pzb25dXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdHVwbGUgdHA7IF8gfSAtPlxuICAgICAgTWF0Y2ggKHR1cGxlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cCkpXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyIHBhcm07IF8gfSAtPlxuICAgICAgKG1hdGNoIHR5cGV2YXJfaGFuZGxpbmcgd2l0aFxuICAgICAgIHwgYG9rIC0+IEZ1biAoZXZhciB+bG9jIChcIl9vZl9cIiBeIHBhcm0pKVxuICAgICAgIHwgYGRpc2FsbG93ZWRfaW5fdHlwZV9leHByIC0+XG4gICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmZcbiAgICAgICAgICAgfmxvY1xuICAgICAgICAgICBcIlR5cGUgdmFyaWFibGVzIG5vdCBhbGxvd2VkIGluIFslJW9mX3lvanNvbjogXS4gUGxlYXNlIHVzZSBsb2NhbGx5IGFic3RyYWN0IFxcXG4gICAgICAgICAgICB0eXBlcyBpbnN0ZWFkLlwiKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX2NvbnN0ciAoaWQsIGFyZ3MpOyBfIH0gLT5cbiAgICAgIGxldCBhcmdzID1cbiAgICAgICAgTGlzdC5tYXAgYXJncyB+ZjooZnVuIGFyZyAtPlxuICAgICAgICAgIEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIGFyZykpXG4gICAgICBpblxuICAgICAgRnVuICh0eXBlX2NvbnN0cl9vZl95b2pzb24gfmxvYyB+aW50ZXJuYWwgaWQgYXJncylcbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hcnJvdyAoXywgXywgXyk7IF8gfSAtPlxuICAgICAgRnVuIFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252LmZ1bl9vZl95b2pzb25dXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfdmFyaWFudCAocm93X2ZpZWxkcywgXywgXyk7IF8gfSAtPlxuICAgICAgdmFyaWFudF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSAobG9jLCByb3dfZmllbGRzKVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgKHBhcm1zLCBwb2x5X3RwKTsgXyB9IC0+XG4gICAgICBwb2x5X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyBwb2x5X3RwXG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfb2JqZWN0IChfLCBfKTsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfY2xhc3MgKF8sIF8pOyBfIH1cbiAgICB8IHsgcHR5cF9kZXNjID0gUHR5cF9hbGlhcyAoXywgXyk7IF8gfVxuICAgIHwgeyBwdHlwX2Rlc2MgPSBQdHlwX3BhY2thZ2UgXzsgXyB9XG4gICAgfCB7IHB0eXBfZGVzYyA9IFB0eXBfZXh0ZW5zaW9uIF87IF8gfSAtPlxuICAgICAgTG9jYXRpb24ucmFpc2VfZXJyb3JmIH5sb2MgXCJUeXBlIHVuc3VwcG9ydGVkIGZvciBwcHggW29mX3lvanNvbl0gY29udmVyc2lvblwiXG5cbiAgKCogQ29udmVyc2lvbiBvZiB0dXBsZXMgKilcbiAgYW5kIHR1cGxlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyAobG9jLCB0cHMpID1cbiAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nKSB0cHMgaW5cbiAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCB2YXJzID0gRnVuX29yX21hdGNoLm1hcF90bXBfdmFycyB+bG9jIGZwcyBpblxuICAgIGxldCBuID0gTGlzdC5sZW5ndGggZnBzIGluXG4gICAgWyBbJXBhdD8gYExpc3QgWyVwIHBsaXN0IH5sb2MgcGF0dHNdXVxuICAgICAgLS0+IHBleHBfbGV0IH5sb2MgTm9ucmVjdXJzaXZlIGJpbmRpbmdzIChwZXhwX3R1cGxlIH5sb2MgdmFycylcbiAgICA7IFslcGF0PyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkXG4gICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgIFslZSBlaW50IH5sb2Mgbl1cbiAgICAgICAgICB5b2pzb25dXG4gICAgXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMgKilcbiAgYW5kIGhhbmRsZV92YXJpYW50X2luaCB+dHlwZXZhcl9oYW5kbGluZyBmdWxsX3R5cGUgfm1hdGNoX2xhc3Qgb3RoZXJfbWF0Y2hlcyBpbmggPVxuICAgIGxldCBsb2MgPSBpbmgucHR5cF9sb2MgaW5cbiAgICBsZXQgZnVuY19leHByID0gdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmludGVybmFsOnRydWUgaW5oIGluXG4gICAgbGV0IGFwcCA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICAgIGxldCBmdW5fZXhwciA9IEZ1bl9vcl9tYXRjaC5leHByIH5sb2MgZnVuY19leHByIGluXG4gICAgICBGdW4gWyVleHByIFslZSBmdW5fZXhwcl0gX3lvanNvbl1cbiAgICBpblxuICAgIGxldCBtYXRjaF9leGMgPVxuICAgICAgaGFuZGxlX25vX3ZhcmlhbnRfbWF0Y2hcbiAgICAgICAgbG9jXG4gICAgICAgIChoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBvdGhlcl9tYXRjaGVzKVxuICAgIGluXG4gICAgbGV0IG5ld19vdGhlcl9tYXRjaGVzID1cbiAgICAgIFsgWyVwYXQ/IF9dXG4gICAgICAgIC0tPiBwZXhwX3RyeVxuICAgICAgICAgICAgICB+bG9jXG4gICAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAgIChbJWUgRnVuX29yX21hdGNoLmV4cHIgfmxvYyBhcHBdXG4gICAgICAgICAgICAgICAgIDo+IFsldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBmdWxsX3R5cGVdKV1cbiAgICAgICAgICAgICAgbWF0Y2hfZXhjXG4gICAgICBdXG4gICAgaW5cbiAgICBuZXdfb3RoZXJfbWF0Y2hlcywgdHJ1ZVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIGF0b21pYyB2YXJpYW50cyAqKVxuICBhbmQgbWtfdmFyaWFudF9tYXRjaF9hdG9tIH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9hdG9tc19pbmhzIH5yZXZfc3RydWN0cyA9XG4gICAgbGV0IGNvbGwgKG90aGVyX21hdGNoZXMsIG1hdGNoX2xhc3QpID0gZnVuY3Rpb25cbiAgICAgIHwgYEEgKGxvYywgbGFiZWwpIC0+XG4gICAgICAgIGxldCBuZXdfbWF0Y2ggPVxuICAgICAgICAgIHBzdHJpbmcgfmxvYyAoTGFiZWxfd2l0aF9uYW1lLm5hbWUgbGFiZWwpXG4gICAgICAgICAgLS0+IHBleHBfdmFyaWFudCB+bG9jIChMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwpIE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgbmV3X21hdGNoIDo6IG90aGVyX21hdGNoZXMsIGZhbHNlXG4gICAgICB8IGBJIGluaCAtPlxuICAgICAgICBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oXG4gICAgaW5cbiAgICBsZXQgb3RoZXJfbWF0Y2hlcyA9XG4gICAgICBta192YXJpYW50X290aGVyX21hdGNoZXMgbG9jIH5yZXZfZWxzOnJldl9zdHJ1Y3RzIGBwdGFnX3Rha2VzX2FyZ3NcbiAgICBpblxuICAgIGxldCBtYXRjaF9hdG9tc19pbmhzLCBtYXRjaF9sYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KG90aGVyX21hdGNoZXMsIGZhbHNlKSByZXZfYXRvbXNfaW5oc1xuICAgIGluXG4gICAgaGFuZGxlX3ZhcmlhbnRfbWF0Y2hfbGFzdCBsb2Mgfm1hdGNoX2xhc3QgbWF0Y2hfYXRvbXNfaW5oc1xuXG4gICgqIFZhcmlhbnQgY29udmVyc2lvbnMgKilcblxuICAoKiBNYXRjaCBhcmd1bWVudHMgb2YgY29uc3RydWN0b3JzICh2YXJpYW50cyBvciBzdW0gdHlwZXMpICopXG4gIGFuZCBta19jbnN0cl9hcmdzX21hdGNoIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfmlzX3ZhcmlhbnQgbGFiZWwgdHBzID1cbiAgICBsZXQgY25zdHJfbGFiZWwgPSBMYWJlbF93aXRoX25hbWUubGFiZWwgbGFiZWwgaW5cbiAgICBsZXQgY25zdHIgdmFyc19leHByID1cbiAgICAgIGlmIGlzX3ZhcmlhbnRcbiAgICAgIHRoZW4gcGV4cF92YXJpYW50IH5sb2MgY25zdHJfbGFiZWwgKFNvbWUgdmFyc19leHByKVxuICAgICAgZWxzZSBwZXhwX2NvbnN0cnVjdCB+bG9jIChMb2NhdGVkLmxpZGVudCB+bG9jIGNuc3RyX2xhYmVsKSAoU29tZSB2YXJzX2V4cHIpXG4gICAgaW5cbiAgICBsZXQgYmluZGluZ3MsIHBhdHRzLCBnb29kX2FyZ19tYXRjaCA9XG4gICAgICBsZXQgZnBzID0gTGlzdC5tYXAgfmY6KHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nKSB0cHMgaW5cbiAgICAgIGxldCBiaW5kaW5ncywgcGF0dHMsIHZhcnMgPSBGdW5fb3JfbWF0Y2gubWFwX3RtcF92YXJzIH5sb2MgZnBzIGluXG4gICAgICBsZXQgZ29vZF9hcmdfbWF0Y2ggPVxuICAgICAgICBsZXQgdmFyc19leHByID1cbiAgICAgICAgICBtYXRjaCB2YXJzIHdpdGhcbiAgICAgICAgICB8IFsgdmFyX2V4cHIgXSAtPiB2YXJfZXhwclxuICAgICAgICAgIHwgXyAtPiBwZXhwX3R1cGxlIH5sb2MgdmFyc1xuICAgICAgICBpblxuICAgICAgICBjbnN0ciB2YXJzX2V4cHJcbiAgICAgIGluXG4gICAgICBiaW5kaW5ncywgcGF0dHMsIGdvb2RfYXJnX21hdGNoXG4gICAgaW5cbiAgICBbJWV4cHJcbiAgICAgIG1hdGNoIHlvanNvbl9hcmdzIHdpdGhcbiAgICAgIHwgWyVwIHBsaXN0IH5sb2MgcGF0dHNdIC0+IFslZSBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBnb29kX2FyZ19tYXRjaF1cbiAgICAgIHwgXyAtPlxuICAgICAgICBbJWVcbiAgICAgICAgICBpZiBpc192YXJpYW50XG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucHRhZ19pbmNvcnJlY3Rfbl9hcmdzXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIF90YWdcbiAgICAgICAgICAgICAgICBfeW9qc29uXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfaW5jb3JyZWN0X25fYXJnc1xuICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICBfdGFnXG4gICAgICAgICAgICAgICAgX3lvanNvbl1dXVxuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIG1hdGNoaW5nIHN0cnVjdHVyZWQgdmFyaWFudHMgKilcbiAgYW5kIG1rX3ZhcmlhbnRfbWF0Y2hfc3RydWN0IH50eXBldmFyX2hhbmRsaW5nIGxvYyBmdWxsX3R5cGUgfnJldl9zdHJ1Y3RzX2luaHMgfnJldl9hdG9tc1xuICAgID1cbiAgICBsZXQgaGFzX3N0cnVjdHNfcmVmID0gcmVmIGZhbHNlIGluXG4gICAgbGV0IGNvbGwgKG90aGVyX21hdGNoZXMsIG1hdGNoX2xhc3QpID0gZnVuY3Rpb25cbiAgICAgIHwgYFMgKGxvYywgbGFiZWwsIHRwLCBfcm93KSAtPlxuICAgICAgICBoYXNfc3RydWN0c19yZWYgOj0gdHJ1ZTtcbiAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgIG1hdGNoIHRwLnB0eXBfZGVzYyB3aXRoXG4gICAgICAgICAgfCBQdHlwX3R1cGxlIHRwcyAtPiB0cHNcbiAgICAgICAgICB8IF8gLT4gWyB0cCBdXG4gICAgICAgIGluXG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBta19jbnN0cl9hcmdzX21hdGNoXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmxvYzp0cC5wdHlwX2xvY1xuICAgICAgICAgICAgfmlzX3ZhcmlhbnQ6dHJ1ZVxuICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5ld19tYXRjaCA9XG4gICAgICAgICAgWyVwYXQ/IFslcCBwc3RyaW5nIH5sb2MgKExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsKV0gYXMgX3RhZ10gLS0+IGV4cHJcbiAgICAgICAgaW5cbiAgICAgICAgbmV3X21hdGNoIDo6IG90aGVyX21hdGNoZXMsIGZhbHNlXG4gICAgICB8IGBJIGluaCAtPlxuICAgICAgICBoYW5kbGVfdmFyaWFudF9pbmggfnR5cGV2YXJfaGFuZGxpbmcgZnVsbF90eXBlIH5tYXRjaF9sYXN0IG90aGVyX21hdGNoZXMgaW5oXG4gICAgaW5cbiAgICBsZXQgb3RoZXJfbWF0Y2hlcyA9IG1rX3ZhcmlhbnRfb3RoZXJfbWF0Y2hlcyBsb2MgfnJldl9lbHM6cmV2X2F0b21zIGBwdGFnX25vX2FyZ3MgaW5cbiAgICBsZXQgbWF0Y2hfc3RydWN0c19pbmhzLCBtYXRjaF9sYXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOmNvbGwgfmluaXQ6KG90aGVyX21hdGNoZXMsIGZhbHNlKSByZXZfc3RydWN0c19pbmhzXG4gICAgaW5cbiAgICBoYW5kbGVfdmFyaWFudF9tYXRjaF9sYXN0IGxvYyB+bWF0Y2hfbGFzdCBtYXRjaF9zdHJ1Y3RzX2luaHMsICFoYXNfc3RydWN0c19yZWZcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBoYW5kbGluZyBhdG9taWMgYW5kIHN0cnVjdHVyZWQgdmFyaWFudHMgKGkuZS4gbm90XG4gICAgIGluY2x1ZGVkIHZhcmlhbnQgdHlwZXMpICopXG4gIGFuZCBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRfbGlzdCA9XG4gICAgbGV0IHJldl9hdG9tcywgcmV2X3N0cnVjdHMsIHJldl9hdG9tc19pbmhzLCByZXZfc3RydWN0c19pbmhzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IH5mOihzcGxpdF9yb3dfZmllbGQgfmxvYykgfmluaXQ6KFtdLCBbXSwgW10sIFtdKSByb3dfZmllbGRfbGlzdFxuICAgIGluXG4gICAgbGV0IG1hdGNoX3N0cnVjdCwgaGFzX3N0cnVjdHMgPVxuICAgICAgbWtfdmFyaWFudF9tYXRjaF9zdHJ1Y3QgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSB+cmV2X3N0cnVjdHNfaW5ocyB+cmV2X2F0b21zXG4gICAgaW5cbiAgICBsZXQgbWF5YmVfeW9qc29uX2FyZ3NfcGF0dCA9IGlmIGhhc19zdHJ1Y3RzIHRoZW4gWyVwYXQ/IHlvanNvbl9hcmdzXSBlbHNlIFslcGF0PyBfXSBpblxuICAgIFsgWyVwYXQ/IGBMaXN0IFsgYFN0cmluZyBhdG9tIF0gYXMgX3lvanNvbl1cbiAgICAgIC0tPiBta192YXJpYW50X21hdGNoX2F0b21cbiAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGZ1bGxfdHlwZVxuICAgICAgICAgICAgfnJldl9hdG9tc19pbmhzXG4gICAgICAgICAgICB+cmV2X3N0cnVjdHNcbiAgICA7IFslcGF0PyBgTGlzdCAoYFN0cmluZyBhdG9tIDo6IFslcCBtYXliZV95b2pzb25fYXJnc19wYXR0XSkgYXMgX3lvanNvbl1cbiAgICAgIC0tPiBtYXRjaF9zdHJ1Y3RcbiAgICA7IFslcGF0PyBgTGlzdCAoYExpc3QgXyA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByXG4gICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IubmVzdGVkX2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICB5b2pzb25dXG4gICAgOyBbJXBhdD8gYExpc3QgW10gYXMgeW9qc29uXVxuICAgICAgLS0+IFslZXhwclxuICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X2xpc3RfaW52YWxpZF9wb2x5X3ZhclxuICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICB5b2pzb25dXG4gICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAtLT4gWyVleHByIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IudW5leHBlY3RlZF9zdGFnIF90cF9sb2MgeW9qc29uXVxuICAgIF1cblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciB2YXJpYW50cyAqKVxuICBhbmQgdmFyaWFudF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgP2Z1bGxfdHlwZSAobG9jLCByb3dfZmllbGRzKSA9XG4gICAgbGV0IGlzX2NvbnRhaW5lZCwgZnVsbF90eXBlID1cbiAgICAgIG1hdGNoIGZ1bGxfdHlwZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgcHR5cF92YXJpYW50IH5sb2Mgcm93X2ZpZWxkcyBDbG9zZWQgTm9uZVxuICAgICAgfCBTb21lIGZ1bGxfdHlwZSAtPiBmYWxzZSwgZnVsbF90eXBlXG4gICAgaW5cbiAgICBsZXQgdG9wX21hdGNoID1cbiAgICAgIG1hdGNoIHJvd19maWVsZHMgd2l0aFxuICAgICAgfCB7IHByZl9kZXNjID0gUmluaGVyaXQgaW5oOyBfIH0gOjogcmVzdCAtPlxuICAgICAgICBsZXQgcmVjIGxvb3AgaW5oIHJvd19maWVsZHMgPVxuICAgICAgICAgIGxldCBjYWxsID1cbiAgICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgICAoWyVlXG4gICAgICAgICAgICAgICAgRnVuX29yX21hdGNoLmV4cHJcbiAgICAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgICAgICh0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+aW50ZXJuYWw6dHJ1ZSBpbmgpXVxuICAgICAgICAgICAgICAgICB5b2pzb25cbiAgICAgICAgICAgICAgIDo+IFsldCByZXBsYWNlX3ZhcmlhYmxlc19ieV91bmRlcnNjb3JlcyBmdWxsX3R5cGVdKV1cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJvd19maWVsZHMgd2l0aFxuICAgICAgICAgIHwgW10gLT4gY2FsbFxuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICBsZXQgZXhwciA9XG4gICAgICAgICAgICAgIG1hdGNoIGgucHJmX2Rlc2Mgd2l0aFxuICAgICAgICAgICAgICB8IFJpbmhlcml0IGluaCAtPiBsb29wIGluaCB0XG4gICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgIGxldCByZnRhZ19tYXRjaGVzID1cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV92YXJpYW50X3RhZyB+dHlwZXZhcl9oYW5kbGluZyBsb2MgZnVsbF90eXBlIHJvd19maWVsZHNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSByZnRhZ19tYXRjaGVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcGV4cF90cnkgfmxvYyBjYWxsIChoYW5kbGVfbm9fdmFyaWFudF9tYXRjaCBsb2MgZXhwcilcbiAgICAgICAgaW5cbiAgICAgICAgWyBbJXBhdD8geW9qc29uXSAtLT4gbG9vcCBpbmggcmVzdCBdXG4gICAgICB8IF8gOjogXyAtPiBoYW5kbGVfdmFyaWFudF90YWcgfnR5cGV2YXJfaGFuZGxpbmcgbG9jIGZ1bGxfdHlwZSByb3dfZmllbGRzXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKCogaW1wb3NzaWJsZSAqKVxuICAgIGluXG4gICAgaWYgaXNfY29udGFpbmVkXG4gICAgdGhlblxuICAgICAgRnVuXG4gICAgICAgIFslZXhwclxuICAgICAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgICAgIHRyeSBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciB5b2pzb25dIHRvcF9tYXRjaF0gd2l0aFxuICAgICAgICAgICAgfCBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2ggLT5cbiAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5ub19tYXRjaGluZ192YXJpYW50X2ZvdW5kXG4gICAgICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICBlbHNlIE1hdGNoIHRvcF9tYXRjaFxuXG4gIGFuZCBwb2x5X29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyBwYXJtcyB0cCA9XG4gICAgbGV0IGxvYyA9IHRwLnB0eXBfbG9jIGluXG4gICAgbGV0IGJpbmRpbmdzID1cbiAgICAgIGxldCBta19iaW5kaW5nIHBhcm0gPVxuICAgICAgICB2YWx1ZV9iaW5kaW5nXG4gICAgICAgICAgfmxvY1xuICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAoXCJfb2ZfXCIgXiBwYXJtLnR4dCkpXG4gICAgICAgICAgfmV4cHI6XG4gICAgICAgICAgICBbJWV4cHJcbiAgICAgICAgICAgICAgZnVuIHlvanNvbiAtPlxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IucmVjb3JkX3BvbHlfZmllbGRfdmFsdWVcbiAgICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgIGluXG4gICAgICBMaXN0Lm1hcCB+Zjpta19iaW5kaW5nIHBhcm1zXG4gICAgaW5cbiAgICBtYXRjaCB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB0cCB3aXRoXG4gICAgfCBGdW4gZnVuX2V4cHIgLT4gRnVuIChwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyBmdW5fZXhwcilcbiAgICB8IE1hdGNoIG1hdGNoaW5ncyAtPlxuICAgICAgTWF0Y2hcbiAgICAgICAgWyBbJXBhdD8gYXJnXVxuICAgICAgICAgIC0tPiBwZXhwX2xldCB+bG9jIE5vbnJlY3Vyc2l2ZSBiaW5kaW5ncyAocGV4cF9tYXRjaCB+bG9jIFslZXhwciBhcmddIG1hdGNoaW5ncylcbiAgICAgICAgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZm9yIGV4dHJhY3RpbmcgcmVjb3JkIGZpZWxkcyAqKVxuICBsZXQgbWtfZXh0cmFjdF9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKSA9XG4gICAgbGV0IHJlYyBsb29wIGluaXRzIG5vX2FyZ3MgYXJncyA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IGluaXRzLCBub19hcmdzLCBhcmdzXG4gICAgICB8IGxkIDo6IG1vcmVfZmxkcyAtPlxuICAgICAgICBsZXQgbG9jID0gbGQucGxkX25hbWUubG9jIGluXG4gICAgICAgIGxldCBubSA9IGxkLnBsZF9uYW1lLnR4dCBpblxuICAgICAgICBsZXQga2V5ID0gT3B0aW9uLnZhbHVlIH5kZWZhdWx0Om5tIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLnlvanNvbl9rZXkgbGQpIGluXG4gICAgICAgIChtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQsIGxkLnBsZF90eXBlIHdpdGhcbiAgICAgICAgIHwgU29tZSAoYHlvanNvbl9vcHRpb24gdHApLCBfIHwgKE5vbmUgfCBTb21lIChgZGVmYXVsdCBfKSksIHRwIC0+XG4gICAgICAgICAgIGxldCBpbml0cyA9IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lXSA6OiBpbml0cyBpblxuICAgICAgICAgICBsZXQgdW5yb2xsZWQgPVxuICAgICAgICAgICAgIEZ1bl9vcl9tYXRjaC51bnJvbGxcbiAgICAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgICAgIFslZXhwciBfZmllbGRfeW9qc29uXVxuICAgICAgICAgICAgICAgKHR5cGVfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIHRwKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgICAgKHBzdHJpbmcgfmxvYyBrZXlcbiAgICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgIG1hdGNoIFBweF95b2pzb25fY29udl9saWIuKCAhICkgWyVlIGV2YXIgfmxvYyAobm0gXiBcIl9maWVsZFwiKV0gd2l0aFxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZSA9IFslZSB1bnJvbGxlZF0gaW5cbiAgICAgICAgICAgICAgICAgIFslZSBldmFyIH5sb2MgKG5tIF4gXCJfZmllbGRcIildXG4gICAgICAgICAgICAgICAgICA6PSBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZVxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzIDo9IGZpZWxkX25hbWUgOjogUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzXSlcbiAgICAgICAgICAgICA6OiBhcmdzXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxvb3AgaW5pdHMgbm9fYXJncyBhcmdzIG1vcmVfZmxkcylcbiAgICBpblxuICAgIGxldCBoYW5kbGVfZXh0cmEgPVxuICAgICAgWyAoWyVwYXQ/IF9dXG4gICAgICAgICAtLT5cbiAgICAgICAgIGlmIGFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICAgdGhlbiBbJWV4cHIgKCldXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgIGlmIFBweF95b2pzb25fY29udl9saWIuKCAhIClcbiAgICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnYucmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgIHRoZW4gZXh0cmEgOj0gZmllbGRfbmFtZSA6OiBQcHhfeW9qc29uX2NvbnZfbGliLiggISApIGV4dHJhXG4gICAgICAgICAgICAgZWxzZSAoKV0pXG4gICAgICBdXG4gICAgaW5cbiAgICBsb29wIFtdIGhhbmRsZV9leHRyYSBoYW5kbGVfZXh0cmEgKExpc3QucmV2IGZsZHMpXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmb3IgaGFuZGxpbmcgdGhlIHJlc3VsdCBvZiBtYXRjaGluZyByZWNvcmQgZmllbGRzICopXG4gIGxldCBta19oYW5kbGVfcmVjb3JkX21hdGNoX3Jlc3VsdCBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByID1cbiAgICBsZXQgaGFzX25vbm9wdF9maWVsZHMgPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgcmVzX3RwbHMsIGJpX2xzdCwgZ29vZF9wYXR0cyA9XG4gICAgICBsZXQgcmVjIGxvb3AgKChyZXNfdHBscywgYmlfbHN0LCBnb29kX3BhdHRzKSBhcyBhY2MpID0gZnVuY3Rpb25cbiAgICAgICAgfCAoeyBwbGRfbmFtZSA9IHsgdHh0ID0gbm07IGxvYyB9OyBfIH0gYXMgbGQpIDo6IG1vcmVfZmxkcyAtPlxuICAgICAgICAgIGxldCBmbGQgPSBbJWV4cHIgUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBbJWUgZXZhciB+bG9jIChubSBeIFwiX2ZpZWxkXCIpXV0gaW5cbiAgICAgICAgICBsZXQgbWtfZGVmYXVsdCBsb2MgPVxuICAgICAgICAgICAgYmlfbHN0LCBbJXBhdD8gWyVwIHB2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV1dIDo6IGdvb2RfcGF0dHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuZXdfYmlfbHN0LCBuZXdfZ29vZF9wYXR0cyA9XG4gICAgICAgICAgICBtYXRjaCBBdHRycy5SZWNvcmRfZmllbGRfaGFuZGxlci5PZl95b2pzb24uY3JlYXRlIH5sb2MgbGQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChgZGVmYXVsdCBfIHwgYHlvanNvbl9vcHRpb24gXykgLT4gbWtfZGVmYXVsdCBsb2NcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBoYXNfbm9ub3B0X2ZpZWxkcyA6PSB0cnVlO1xuICAgICAgICAgICAgICAoIFslZXhwclxuICAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIucG9seV9lcXVhbCBbJWUgZmxkXSBQcHhfeW9qc29uX2NvbnZfbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICwgWyVlIGVzdHJpbmcgfmxvYyBubV1dXG4gICAgICAgICAgICAgICAgOjogYmlfbHN0XG4gICAgICAgICAgICAgICwgWyVwYXQ/IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgWyVwIHB2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV1dXG4gICAgICAgICAgICAgICAgOjogZ29vZF9wYXR0cyApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYWNjID0gWyVleHByIFslZSBmbGRdXSA6OiByZXNfdHBscywgbmV3X2JpX2xzdCwgbmV3X2dvb2RfcGF0dHMgaW5cbiAgICAgICAgICBsb29wIGFjYyBtb3JlX2ZsZHNcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIChbXSwgW10sIFtdKSAoTGlzdC5yZXYgZmxkcylcbiAgICBpblxuICAgIGxldCBtYXRjaF9nb29kX2V4cHIgPVxuICAgICAgaWYgaGFzX3BvbHlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY252dCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCB7IHBsZF9uYW1lID0geyB0eHQgPSBubTsgXyB9OyBfIH0gLT4gZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIExpc3QubWFwIH5mOmNudnQgZmxkcyB3aXRoXG4gICAgICAgIHwgWyBtYXRjaF9nb29kX2V4cHIgXSAtPiBtYXRjaF9nb29kX2V4cHJcbiAgICAgICAgfCBtYXRjaF9nb29kX2V4cHJzIC0+IHBleHBfdHVwbGUgfmxvYyBtYXRjaF9nb29kX2V4cHJzKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjbnZ0IGxkID1cbiAgICAgICAgICBsZXQgbm0gPSBsZC5wbGRfbmFtZS50eHQgaW5cbiAgICAgICAgICBsZXQgdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggQXR0cnMuUmVjb3JkX2ZpZWxkX2hhbmRsZXIuT2ZfeW9qc29uLmNyZWF0ZSB+bG9jIGxkIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAoYGRlZmF1bHQgZGVmYXVsdCkgLT5cbiAgICAgICAgICAgICAgWyVleHByXG4gICAgICAgICAgICAgICAgbWF0Y2ggWyVlIGV2YXIgfmxvYyAobm0gXiBcIl92YWx1ZVwiKV0gd2l0aFxuICAgICAgICAgICAgICAgIHwgUHB4X3lvanNvbl9jb252X2xpYi5PcHRpb24uTm9uZSAtPiBbJWUgZGVmYXVsdF1cbiAgICAgICAgICAgICAgICB8IFBweF95b2pzb25fY29udl9saWIuT3B0aW9uLlNvbWUgdiAtPiB2XVxuICAgICAgICAgICAgfCBTb21lIChgeW9qc29uX29wdGlvbiBfKSB8IE5vbmUgLT4gZXZhciB+bG9jIChubSBeIFwiX3ZhbHVlXCIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMb2NhdGVkLmxpZGVudCB+bG9jIG5tLCB2YWx1ZVxuICAgICAgICBpblxuICAgICAgICB3cmFwX2V4cHIgKHBleHBfcmVjb3JkIH5sb2MgKExpc3QubWFwIH5mOmNudnQgZmxkcykgTm9uZSkpXG4gICAgaW5cbiAgICBsZXQgZXhwciwgcGF0dCA9XG4gICAgICBtYXRjaCByZXNfdHBscywgZ29vZF9wYXR0cyB3aXRoXG4gICAgICB8IFsgcmVzX2V4cHIgXSwgWyByZXNfcGF0dCBdIC0+IHJlc19leHByLCByZXNfcGF0dFxuICAgICAgfCBfIC0+IHBleHBfdHVwbGUgfmxvYyByZXNfdHBscywgcHBhdF90dXBsZSB+bG9jIGdvb2RfcGF0dHNcbiAgICBpblxuICAgIGlmICFoYXNfbm9ub3B0X2ZpZWxkc1xuICAgIHRoZW5cbiAgICAgIHBleHBfbWF0Y2hcbiAgICAgICAgfmxvY1xuICAgICAgICBleHByXG4gICAgICAgIFsgcGF0dCAtLT4gbWF0Y2hfZ29vZF9leHByXG4gICAgICAgIDsgWyVwYXQ/IF9dXG4gICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfdW5kZWZpbmVkX2VsZW1lbnRzXG4gICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgeW9qc29uXG4gICAgICAgICAgICAgIFslZSBlbGlzdCB+bG9jIGJpX2xzdF1dXG4gICAgICAgIF1cbiAgICBlbHNlIHBleHBfbWF0Y2ggfmxvYyBleHByIFsgcGF0dCAtLT4gbWF0Y2hfZ29vZF9leHByIF1cbiAgOztcblxuICAoKiBHZW5lcmF0ZSBjb2RlIGZvciBjb252ZXJ0aW5nIHJlY29yZCBmaWVsZHMgKilcblxuICBsZXQgbWtfY252X2ZpZWxkcyB+dHlwZXZhcl9oYW5kbGluZyB+YWxsb3dfZXh0cmFfZmllbGRzIGhhc19wb2x5IChsb2MsIGZsZHMpIH53cmFwX2V4cHIgPVxuICAgIGxldCBleHByX3JlZl9pbml0cywgX21jX25vX2FyZ3NfZmllbGRzLCBtY19maWVsZHNfd2l0aF9hcmdzID1cbiAgICAgIG1rX2V4dHJhY3RfZmllbGRzIH50eXBldmFyX2hhbmRsaW5nIH5hbGxvd19leHRyYV9maWVsZHMgKGxvYywgZmxkcylcbiAgICBpblxuICAgIGxldCBmaWVsZF9yZWZzID1cbiAgICAgIExpc3QubWFwMl9leG5cbiAgICAgICAgZmxkc1xuICAgICAgICBleHByX3JlZl9pbml0c1xuICAgICAgICB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gaW5pdCAtPlxuICAgICAgICAgIHZhbHVlX2JpbmRpbmdcbiAgICAgICAgICAgIH5sb2NcbiAgICAgICAgICAgIH5wYXQ6KHB2YXIgfmxvYyAobmFtZSBeIFwiX2ZpZWxkXCIpKVxuICAgICAgICAgICAgfmV4cHI6WyVleHByIHJlZiBbJWUgaW5pdF1dKVxuICAgIGluXG4gICAgcGV4cF9sZXRcbiAgICAgIH5sb2NcbiAgICAgIE5vbnJlY3Vyc2l2ZVxuICAgICAgKGZpZWxkX3JlZnNcbiAgICAgICBAIFsgdmFsdWVfYmluZGluZyB+bG9jIH5wYXQ6WyVwYXQ/IGR1cGxpY2F0ZXNdIH5leHByOlslZXhwciByZWYgW11dXG4gICAgICAgICA7IHZhbHVlX2JpbmRpbmcgfmxvYyB+cGF0OlslcGF0PyBleHRyYV0gfmV4cHI6WyVleHByIHJlZiBbXV1cbiAgICAgICAgIF0pXG4gICAgICBbJWV4cHJcbiAgICAgICAgbGV0IHJlYyBpdGVyID1cbiAgICAgICAgICBbJWVcbiAgICAgICAgICAgIHBleHBfZnVuY3Rpb25cbiAgICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgICBbIFslcGF0PyAoZmllbGRfbmFtZSwgX2ZpZWxkX3lvanNvbikgOjogdGFpbF1cbiAgICAgICAgICAgICAgICAtLT4gWyVleHByXG4gICAgICAgICAgICAgICAgICBbJWUgcGV4cF9tYXRjaCB+bG9jIFslZXhwciBmaWVsZF9uYW1lXSBtY19maWVsZHNfd2l0aF9hcmdzXTtcbiAgICAgICAgICAgICAgICAgIGl0ZXIgdGFpbF1cbiAgICAgICAgICAgICAgOyBbJXBhdD8gW11dIC0tPiBbJWV4cHIgKCldXG4gICAgICAgICAgICAgIF1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgZmllbGRfeW9qc29ucztcbiAgICAgICAgbWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzIHdpdGhcbiAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9kdXBsaWNhdGVfZmllbGRzXG4gICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAoUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBkdXBsaWNhdGVzKVxuICAgICAgICAgICAgeW9qc29uXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAobWF0Y2ggUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYSB3aXRoXG4gICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5yZWNvcmRfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAoUHB4X3lvanNvbl9jb252X2xpYi4oICEgKSBleHRyYSlcbiAgICAgICAgICAgICAgIHlvanNvblxuICAgICAgICAgICB8IFtdIC0+IFslZSBta19oYW5kbGVfcmVjb3JkX21hdGNoX3Jlc3VsdCBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByXSldXG4gIDs7XG5cbiAgbGV0IGlzX3BvbHkgKF8sIGZsZHMpID1cbiAgICBMaXN0LmV4aXN0cyBmbGRzIH5mOihmdW5jdGlvblxuICAgICAgfCB7IHBsZF90eXBlID0geyBwdHlwX2Rlc2MgPSBQdHlwX3BvbHkgXzsgXyB9OyBfIH0gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICA7O1xuXG4gIGxldCBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICB+YWxsb3dfZXh0cmFfZmllbGRzXG4gICAgICAgIGxvY1xuICAgICAgICBmbGRzXG4gICAgICAgIH53cmFwX2V4cHJcbiAgICA9XG4gICAgbGV0IGhhc19wb2x5ID0gaXNfcG9seSAobG9jLCBmbGRzKSBpblxuICAgIGxldCBjbnZfZmllbGRzID1cbiAgICAgIG1rX2Nudl9maWVsZHMgfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyBoYXNfcG9seSAobG9jLCBmbGRzKSB+d3JhcF9leHByXG4gICAgaW5cbiAgICBpZiBoYXNfcG9seVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHBhdHQgPVxuICAgICAgICBsZXQgcGF0cyA9XG4gICAgICAgICAgTGlzdC5tYXAgZmxkcyB+ZjooZnVuIHsgcGxkX25hbWUgPSB7IHR4dCA9IG5hbWU7IGxvYyB9OyBfIH0gLT4gcHZhciB+bG9jIG5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHBhdHMgd2l0aFxuICAgICAgICB8IFsgcGF0IF0gLT4gcGF0XG4gICAgICAgIHwgcGF0cyAtPiBwcGF0X3R1cGxlIH5sb2MgcGF0c1xuICAgICAgaW5cbiAgICAgIGxldCByZWNvcmRfZGVmID1cbiAgICAgICAgd3JhcF9leHByXG4gICAgICAgICAgKHBleHBfcmVjb3JkXG4gICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgIChMaXN0Lm1hcCBmbGRzIH5mOihmdW4geyBwbGRfbmFtZSA9IHsgdHh0ID0gbmFtZTsgbG9jIH07IF8gfSAtPlxuICAgICAgICAgICAgICAgIExvY2F0ZWQubGlkZW50IH5sb2MgbmFtZSwgZXZhciB+bG9jIG5hbWUpKVxuICAgICAgICAgICAgIE5vbmUpXG4gICAgICBpblxuICAgICAgcGV4cF9sZXRcbiAgICAgICAgfmxvY1xuICAgICAgICBOb25yZWN1cnNpdmVcbiAgICAgICAgWyB2YWx1ZV9iaW5kaW5nIH5sb2MgfnBhdDpwYXR0IH5leHByOmNudl9maWVsZHMgXVxuICAgICAgICByZWNvcmRfZGVmKVxuICAgIGVsc2UgY252X2ZpZWxkc1xuICA7O1xuXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHJlY29yZHMgKilcbiAgbGV0IHJlY29yZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmFsbG93X2V4dHJhX2ZpZWxkcyAobG9jLCBmbGRzKSA6IEZ1bl9vcl9tYXRjaC50ID1cbiAgICBNYXRjaFxuICAgICAgWyBbJXBhdD8gYEFzc29jIGZpZWxkX3lvanNvbnMgYXMgeW9qc29uXVxuICAgICAgICAtLT4gbGFiZWxfZGVjbGFyYXRpb25fbGlzdF9vZl95b2pzb25cbiAgICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkc1xuICAgICAgICAgICAgICBsb2NcbiAgICAgICAgICAgICAgZmxkc1xuICAgICAgICAgICAgICB+d3JhcF9leHByOihmdW4geCAtPiB4KVxuICAgICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnJlY29yZF9saXN0X2luc3RlYWRfYXRvbVxuICAgICAgICAgICAgX3RwX2xvY1xuICAgICAgICAgICAgeW9qc29uXVxuICAgICAgXVxuICA7O1xuXG4gICgqIFN1bSB0eXBlIGNvbnZlcnNpb25zICopXG4gICgqIEdlbmVyYXRlIG1hdGNoaW5nIGNvZGUgZm9yIHdlbGwtZm9ybWVkIFlvanNvbnMgd3J0LiBzdW0gdHlwZXMgKilcbiAgbGV0IG1rX2dvb2Rfc3VtX21hdGNoZXMgfnR5cGV2YXJfaGFuZGxpbmcgKGxvYywgY2RzKSA9XG4gICAgTGlzdC5tYXAgY2RzIH5mOihmdW4gKGNkLCBsYWJlbCkgLT5cbiAgICAgIGxldCBjbnN0cl9sYWJlbCA9IExhYmVsX3dpdGhfbmFtZS5sYWJlbCBsYWJlbCBpblxuICAgICAgbGV0IGNuc3RyX25hbWUgPSBMYWJlbF93aXRoX25hbWUubmFtZSBsYWJlbCBpblxuICAgICAgbWF0Y2ggY2Qgd2l0aFxuICAgICAgfCB7IHBjZF9hcmdzID0gUGNzdHJfcmVjb3JkIGZpZWxkczsgXyB9IC0+XG4gICAgICAgIGxldCBleHByID1cbiAgICAgICAgICBsYWJlbF9kZWNsYXJhdGlvbl9saXN0X29mX3lvanNvblxuICAgICAgICAgICAgfnR5cGV2YXJfaGFuZGxpbmdcbiAgICAgICAgICAgIH5hbGxvd19leHRyYV9maWVsZHM6XG4gICAgICAgICAgICAgIChPcHRpb24uaXNfc29tZSAoQXR0cmlidXRlLmdldCBBdHRycy5hbGxvd19leHRyYV9maWVsZHNfY2QgY2QpKVxuICAgICAgICAgICAgbG9jXG4gICAgICAgICAgICBmaWVsZHNcbiAgICAgICAgICAgIH53cmFwX2V4cHI6KGZ1biBlIC0+XG4gICAgICAgICAgICAgIHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIChTb21lIGUpKVxuICAgICAgICBpblxuICAgICAgICBbJXBhdD9cbiAgICAgICAgICAgICAgIGBMaXN0IFsgYFN0cmluZyAoWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyBfdGFnKTsgYEFzc29jIGZpZWxkX3lvanNvbnMgXVxuICAgICAgICAgIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IGV4cHJcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIFtdOyBfIH0gLT5cbiAgICAgICAgQXR0cnMuZmFpbF9pZl9hbGxvd19leHRyYV9maWVsZF9jZCB+bG9jIGNkO1xuICAgICAgICBbJXBhdD8gYExpc3QgWyBgU3RyaW5nIFslcCBwc3RyaW5nIH5sb2MgY25zdHJfbmFtZV0gXV1cbiAgICAgICAgLS0+IHBleHBfY29uc3RydWN0IH5sb2MgKExvY2F0ZWQubGlkZW50IH5sb2MgY25zdHJfbGFiZWwpIE5vbmVcbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIChfIDo6IF8gYXMgdHBzKTsgXyB9IC0+XG4gICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfY2QgfmxvYyBjZDtcbiAgICAgICAgWyVwYXQ/XG4gICAgICAgICAgICAgICBgTGlzdCAoYFN0cmluZyAoWyVwIHBzdHJpbmcgfmxvYyBjbnN0cl9uYW1lXSBhcyBfdGFnKSA6OiB5b2pzb25fYXJncykgYXNcbiAgICAgICAgICBfeW9qc29uXVxuICAgICAgICAtLT4gbWtfY25zdHJfYXJnc19tYXRjaCB+dHlwZXZhcl9oYW5kbGluZyB+bG9jIH5pc192YXJpYW50OmZhbHNlIGxhYmVsIHRwcylcbiAgOztcblxuICAoKiBHZW5lcmF0ZSBtYXRjaGluZyBjb2RlIGZvciBtYWxmb3JtZWQgWW9qc29ucyB3aXRoIGdvb2QgdGFnc1xuICAgICB3cnQuIHN1bSB0eXBlcyAqKVxuICBsZXQgbWtfYmFkX3N1bV9tYXRjaGVzIChsb2MsIGNkcykgPVxuICAgIExpc3QubWFwIGNkcyB+ZjooZnVuIChjZCwgbGFiZWwpIC0+XG4gICAgICBsZXQgY25zdHJfbmFtZSA9IExhYmVsX3dpdGhfbmFtZS5uYW1lIGxhYmVsIGluXG4gICAgICBtYXRjaCBjZCB3aXRoXG4gICAgICB8IHsgcGNkX2FyZ3MgPSBQY3N0cl90dXBsZSBbXTsgXyB9IC0+XG4gICAgICAgIFslcGF0PyBgTGlzdCAoYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIDo6IF8pIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfbm9fYXJncyBfdHBfbG9jIHlvanNvbl1cbiAgICAgIHwgeyBwY2RfYXJncyA9IFBjc3RyX3R1cGxlIChfIDo6IF8pIHwgUGNzdHJfcmVjb3JkIF87IF8gfSAtPlxuICAgICAgICBbJXBhdD8gYFN0cmluZyBbJXAgcHN0cmluZyB+bG9jIGNuc3RyX25hbWVdIGFzIHlvanNvbl1cbiAgICAgICAgLS0+IFslZXhwciBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLnN0YWdfdGFrZXNfYXJncyBfdHBfbG9jIHlvanNvbl0pXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgbWF0Y2hpbmcgY29kZSBmb3Igc3VtIHR5cGVzICopXG4gIGxldCBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpIDogRnVuX29yX21hdGNoLnQgPVxuICAgIGxldCBhbHRzID1cbiAgICAgIExpc3QubWFwIGFsdHMgfmY6KGZ1biBjZCAtPiBjZCwgTGFiZWxfd2l0aF9uYW1lLm9mX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uIGNkKVxuICAgIGluXG4gICAgTWF0Y2hcbiAgICAgIChMaXN0LmNvbmNhdFxuICAgICAgICAgWyBta19nb29kX3N1bV9tYXRjaGVzIH50eXBldmFyX2hhbmRsaW5nIChsb2MsIGFsdHMpXG4gICAgICAgICA7IG1rX2JhZF9zdW1fbWF0Y2hlcyAobG9jLCBhbHRzKVxuICAgICAgICAgOyBbIFslcGF0PyBgTGlzdCAoYExpc3QgXyA6OiBfKSBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci5uZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gYExpc3QgW10gYXMgeW9qc29uXVxuICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgIFBweF95b2pzb25fY29udl9saWIuWW9qc29uX2NvbnZfZXJyb3IuZW1wdHlfbGlzdF9pbnZhbGlkX3N1bVxuICAgICAgICAgICAgICAgICBfdHBfbG9jXG4gICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgOyBbJXBhdD8gXyBhcyB5b2pzb25dXG4gICAgICAgICAgICAgLS0+IFslZXhwclxuICAgICAgICAgICAgICAgUHB4X3lvanNvbl9jb252X2xpYi5Zb2pzb25fY29udl9lcnJvci51bmV4cGVjdGVkX3N0YWcgX3RwX2xvYyB5b2pzb25dXG4gICAgICAgICAgIF1cbiAgICAgICAgIF0pXG4gIDs7XG5cbiAgKCogRW1wdHkgdHlwZSAqKVxuICBsZXQgbmlsX29mX3lvanNvbiBsb2MgOiBGdW5fb3JfbWF0Y2gudCA9XG4gICAgRnVuXG4gICAgICBbJWV4cHJcbiAgICAgICAgZnVuIHlvanNvbiAtPiBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLmVtcHR5X3R5cGUgX3RwX2xvYyB5b2pzb25dXG4gIDs7XG5cbiAgKCogR2VuZXJhdGUgY29kZSBmcm9tIHR5cGUgZGVmaW5pdGlvbnMgKilcblxuICBsZXQgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2M6XyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGQgPVxuICAgIGxldCB0ZCA9IG5hbWVfdHlwZV9wYXJhbXNfaW5fdGQgdGQgaW5cbiAgICBsZXQgdHBzID0gTGlzdC5tYXAgdGQucHR5cGVfcGFyYW1zIH5mOmdldF90eXBlX3BhcmFtX25hbWUgaW5cbiAgICBsZXQgeyBwdHlwZV9uYW1lID0geyB0eHQgPSB0eXBlX25hbWU7IGxvYyA9IF8gfTsgcHR5cGVfbG9jID0gbG9jOyBfIH0gPSB0ZCBpblxuICAgIGxldCBmdWxsX3R5cGUgPVxuICAgICAgY29yZV90eXBlX29mX3R5cGVfZGVjbGFyYXRpb24gdGQgfD4gcmVwbGFjZV92YXJpYWJsZXNfYnlfdW5kZXJzY29yZXNcbiAgICBpblxuICAgIGxldCBpc19wcml2YXRlID1cbiAgICAgIG1hdGNoIHRkLnB0eXBlX3ByaXZhdGUgd2l0aFxuICAgICAgfCBQcml2YXRlIC0+IHRydWVcbiAgICAgIHwgUHVibGljIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBpc19wcml2YXRlXG4gICAgdGhlbiBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcIm9mX3lvanNvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwcml2YXRlIHR5cGVcIjtcbiAgICBsZXQgY3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uID1cbiAgICAgIG1hdGNoIGlzX3BvbHltb3JwaGljX3ZhcmlhbnQgdGQgfnNpZ186ZmFsc2Ugd2l0aFxuICAgICAgfCBgRGVmaW5pdGVseSAtPiB0cnVlXG4gICAgICB8IGBNYXliZSAtPiBwb2x5XG4gICAgICB8IGBTdXJlbHlfbm90IC0+XG4gICAgICAgIGlmIHBvbHlcbiAgICAgICAgdGhlblxuICAgICAgICAgIExvY2F0aW9uLnJhaXNlX2Vycm9yZlxuICAgICAgICAgICAgfmxvY1xuICAgICAgICAgICAgXCJ5b2pzb25fcG9seSBhbm5vdGF0aW9uIG9uIGEgdHlwZSB0aGF0IGlzIHN1cmVseSBub3QgYSBwb2x5bW9ycGhpYyB2YXJpYW50XCI7XG4gICAgICAgIGZhbHNlXG4gICAgaW5cbiAgICBsZXQgYm9keSA9XG4gICAgICBsZXQgYm9keSA9XG4gICAgICAgIG1hdGNoIHRkLnB0eXBlX2tpbmQgd2l0aFxuICAgICAgICB8IFB0eXBlX3ZhcmlhbnQgYWx0cyAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICBzdW1fb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nICh0ZC5wdHlwZV9sb2MsIGFsdHMpXG4gICAgICAgIHwgUHR5cGVfcmVjb3JkIGxibHMgLT5cbiAgICAgICAgICByZWNvcmRfb2ZfeW9qc29uXG4gICAgICAgICAgICB+dHlwZXZhcl9oYW5kbGluZ1xuICAgICAgICAgICAgfmFsbG93X2V4dHJhX2ZpZWxkczpcbiAgICAgICAgICAgICAgKE9wdGlvbi5pc19zb21lIChBdHRyaWJ1dGUuZ2V0IEF0dHJzLmFsbG93X2V4dHJhX2ZpZWxkc190ZCB0ZCkpXG4gICAgICAgICAgICAobG9jLCBsYmxzKVxuICAgICAgICB8IFB0eXBlX29wZW4gLT5cbiAgICAgICAgICBMb2NhdGlvbi5yYWlzZV9lcnJvcmYgfmxvYyBcInBweF95b2pzb25fY29udjogb3BlbiB0eXBlcyBub3Qgc3VwcG9ydGVkXCJcbiAgICAgICAgfCBQdHlwZV9hYnN0cmFjdCAtPlxuICAgICAgICAgIEF0dHJzLmZhaWxfaWZfYWxsb3dfZXh0cmFfZmllbGRfdGQgfmxvYyB0ZDtcbiAgICAgICAgICAobWF0Y2ggdGQucHR5cGVfbWFuaWZlc3Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbmlsX29mX3lvanNvbiB0ZC5wdHlwZV9sb2NcbiAgICAgICAgICAgfCBTb21lIHR5IC0+XG4gICAgICAgICAgICAgdHlwZV9vZl95b2pzb25cbiAgICAgICAgICAgICAgIH5mdWxsX3R5cGVcbiAgICAgICAgICAgICAgIH50eXBldmFyX2hhbmRsaW5nXG4gICAgICAgICAgICAgICB+aW50ZXJuYWw6Y3JlYXRlX2ludGVybmFsX2Z1bmN0aW9uXG4gICAgICAgICAgICAgICB0eSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICgqIFByZXZlbnQgdmlvbGF0aW9uIG9mIHZhbHVlIHJlc3RyaWN0aW9uIGFuZCBwcm9ibGVtcyB3aXRoXG4gICAgICAgICByZWN1cnNpdmUgdHlwZXMgYnkgZXRhLWV4cGFuZGluZyBmdW5jdGlvbiBkZWZpbml0aW9ucyAqKVxuICAgICAgfCBGdW4gZnVuX2V4cHIgLT4gWyVleHByIGZ1biB0IC0+IFslZSBlYXBwbHkgfmxvYyBmdW5fZXhwciBbIFslZXhwciB0XSBdXV1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfZnVuY3Rpb24gfmxvYyBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9uYW1lID0gdHlwZV9uYW1lIF4gXCJfb2ZfeW9qc29uXCIgaW5cbiAgICBsZXQgaW50ZXJuYWxfbmFtZSA9IFwiX19cIiBeIHR5cGVfbmFtZSBeIFwiX29mX3lvanNvbl9fXCIgaW5cbiAgICBsZXQgYXJnX3BhdHRzLCBhcmdfZXhwcnMgPVxuICAgICAgTGlzdC51bnppcFxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgfmY6KGZ1biB0cCAtPlxuICAgICAgICAgICAgIGxldCBuYW1lID0gXCJfb2ZfXCIgXiB0cC50eHQgaW5cbiAgICAgICAgICAgICBwdmFyIH5sb2MgbmFtZSwgZXZhciB+bG9jIG5hbWUpXG4gICAgICAgICAgIHRwcylcbiAgICBpblxuICAgIGxldCBiaW5kX3RwX2xvY19pbiA9XG4gICAgICBsZXQgZnVsbF90eXBlX25hbWUgPSBQcmludGYuc3ByaW50ZiBcIiVzLiVzXCIgcGF0aCB0eXBlX25hbWUgaW5cbiAgICAgIGZ1biBlIC0+XG4gICAgICAgIG1hdGNoIGUgd2l0aFxuICAgICAgICB8IHsgcGV4cF9kZXNjID0gUGV4cF9pZGVudCBfOyBfIH0gLT5cbiAgICAgICAgICAoKiB3ZSBkZWZpbml0ZWx5IGRvbid0IHVzZSB0aGUgc3RyaW5nLCBzbyBjbGVhbiB1cCB0aGUgZ2VuZXJhdGVkIGNvZGUgYSBiaXQgKilcbiAgICAgICAgICBlXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIFslZXhwclxuICAgICAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICAgICAgWyVlIGVdXVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2Z1bl9ib2R5ID1cbiAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgdGhlblxuICAgICAgICBTb21lXG4gICAgICAgICAgKGJpbmRfdHBfbG9jX2luXG4gICAgICAgICAgICAgKGV0YV9yZWR1Y2VfaWZfcG9zc2libGVfYW5kX25vbnJlYyB+cmVjX2ZsYWcgKGVhYnN0cmFjdCB+bG9jIGFyZ19wYXR0cyBib2R5KSkpXG4gICAgICBlbHNlIE5vbmVcbiAgICBpblxuICAgIGxldCBleHRlcm5hbF9mdW5fYm9keSA9XG4gICAgICBsZXQgbmVlZF90cF9sb2MsIGJvZHlfYmVsb3dfbGFtYmRhcyA9XG4gICAgICAgIGlmIGNyZWF0ZV9pbnRlcm5hbF9mdW5jdGlvblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbm9fdmFyaWFudF9tYXRjaF9tYyA9XG4gICAgICAgICAgICBbIFslcGF0PyBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLk5vX3ZhcmlhbnRfbWF0Y2hdXG4gICAgICAgICAgICAgIC0tPiBbJWV4cHJcbiAgICAgICAgICAgICAgICBQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbl9jb252X2Vycm9yLm5vX21hdGNoaW5nX3ZhcmlhbnRfZm91bmRcbiAgICAgICAgICAgICAgICAgIF90cF9sb2NcbiAgICAgICAgICAgICAgICAgIHlvanNvbl1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBpbnRlcm5hbF9jYWxsID1cbiAgICAgICAgICAgIGxldCBpbnRlcm5hbF9leHByID0gZXZhciB+bG9jIGludGVybmFsX25hbWUgaW5cbiAgICAgICAgICAgIGVhcHBseSB+bG9jIGludGVybmFsX2V4cHIgKGFyZ19leHBycyBAIFsgWyVleHByIHlvanNvbl0gXSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cnlfd2l0aCA9IHBleHBfdHJ5IH5sb2MgaW50ZXJuYWxfY2FsbCBub192YXJpYW50X21hdGNoX21jIGluXG4gICAgICAgICAgZmFsc2UsIGJpbmRfdHBfbG9jX2luIFslZXhwciBmdW4geW9qc29uIC0+IFslZSB0cnlfd2l0aF1dKVxuICAgICAgICBlbHNlIHRydWUsIGJvZHlcbiAgICAgIGluXG4gICAgICBsZXQgYm9keV93aXRoX2xhbWJkYXMgPVxuICAgICAgICBldGFfcmVkdWNlX2lmX3Bvc3NpYmxlX2FuZF9ub25yZWNcbiAgICAgICAgICB+cmVjX2ZsYWdcbiAgICAgICAgICAoZWFic3RyYWN0IH5sb2MgYXJnX3BhdHRzIGJvZHlfYmVsb3dfbGFtYmRhcylcbiAgICAgIGluXG4gICAgICBpZiBuZWVkX3RwX2xvYyB0aGVuIGJpbmRfdHBfbG9jX2luIGJvZHlfd2l0aF9sYW1iZGFzIGVsc2UgYm9keV93aXRoX2xhbWJkYXNcbiAgICBpblxuICAgIGxldCBta19iaW5kaW5nIGZ1bmNfbmFtZSBib2R5ID1cbiAgICAgIGxldCB0eXAgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3R5cGUgdGQgaW5cbiAgICAgIGNvbnN0cmFpbmVkX2Z1bmN0aW9uX2JpbmRpbmcgbG9jIHRkIHR5cCB+dHBzIH5mdW5jX25hbWUgYm9keVxuICAgIGluXG4gICAgbGV0IGludGVybmFsX2JpbmRpbmdzID1cbiAgICAgIG1hdGNoIGludGVybmFsX2Z1bl9ib2R5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIGJvZHkgLT4gWyBta19iaW5kaW5nIGludGVybmFsX25hbWUgYm9keSBdXG4gICAgaW5cbiAgICBsZXQgZXh0ZXJuYWxfYmluZGluZyA9IG1rX2JpbmRpbmcgZXh0ZXJuYWxfbmFtZSBleHRlcm5hbF9mdW5fYm9keSBpblxuICAgIGludGVybmFsX2JpbmRpbmdzLCBbIGV4dGVybmFsX2JpbmRpbmcgXVxuICA7O1xuXG4gICgqIEdlbmVyYXRlIGNvZGUgZnJvbSB0eXBlIGRlZmluaXRpb25zICopXG4gIGxldCB0ZHNfb2ZfeW9qc29uIH5sb2MgfnBvbHkgfnBhdGggKHJlY19mbGFnLCB0ZHMpID1cbiAgICBsZXQgdHlwZXZhcl9oYW5kbGluZyA9IGBvayBpblxuICAgIGxldCBzaW5nbGV0b24gPVxuICAgICAgbWF0Y2ggdGRzIHdpdGhcbiAgICAgIHwgWyBfIF0gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBzaW5nbGV0b25cbiAgICB0aGVuIChcbiAgICAgIGxldCByZWNfZmxhZyA9IHJlYWxseV9yZWN1cnNpdmUgcmVjX2ZsYWcgdGRzIGluXG4gICAgICBtYXRjaCByZWNfZmxhZyB3aXRoXG4gICAgICB8IFJlY3Vyc2l2ZSAtPlxuICAgICAgICBsZXQgYmluZGluZ3MgPVxuICAgICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgICAgdGRfb2ZfeW9qc29uIH50eXBldmFyX2hhbmRsaW5nIH5sb2MgfnBvbHkgfnBhdGggfnJlY19mbGFnIHRkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgICBpblxuICAgICAgICBwc3RyX3ZhbHVlX2xpc3QgfmxvYyBSZWN1cnNpdmUgYmluZGluZ3NcbiAgICAgIHwgTm9ucmVjdXJzaXZlIC0+XG4gICAgICAgIExpc3QuY29uY2F0X21hcCB0ZHMgfmY6KGZ1biB0ZCAtPlxuICAgICAgICAgIGxldCBpbnRlcm5hbHMsIGV4dGVybmFscyA9XG4gICAgICAgICAgICB0ZF9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgfmxvYyB+cG9seSB+cGF0aCB+cmVjX2ZsYWcgdGRcbiAgICAgICAgICBpblxuICAgICAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBpbnRlcm5hbHNcbiAgICAgICAgICBAIHBzdHJfdmFsdWVfbGlzdCB+bG9jIE5vbnJlY3Vyc2l2ZSBleHRlcm5hbHMpKVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGJpbmRpbmdzID1cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIHRkcyB+ZjooZnVuIHRkIC0+XG4gICAgICAgICAgbGV0IGludGVybmFscywgZXh0ZXJuYWxzID1cbiAgICAgICAgICAgIHRkX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cG9seSB+bG9jIH5wYXRoIH5yZWNfZmxhZyB0ZFxuICAgICAgICAgIGluXG4gICAgICAgICAgaW50ZXJuYWxzIEAgZXh0ZXJuYWxzKVxuICAgICAgaW5cbiAgICAgIHBzdHJfdmFsdWVfbGlzdCB+bG9jIHJlY19mbGFnIGJpbmRpbmdzKVxuICA7O1xuXG4gIGxldCB0eXBlX29mX3lvanNvbiB+dHlwZXZhcl9oYW5kbGluZyB+cGF0aCBjdHlwID1cbiAgICBsZXQgbG9jID0geyBjdHlwLnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IGluXG4gICAgbGV0IGZwID0gdHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmcgY3R5cCBpblxuICAgIGxldCBib2R5ID1cbiAgICAgIG1hdGNoIGZwIHdpdGhcbiAgICAgIHwgRnVuIGZ1bl9leHByIC0+IFslZXhwciBbJWUgZnVuX2V4cHJdIHlvanNvbl1cbiAgICAgIHwgTWF0Y2ggbWF0Y2hpbmdzIC0+IHBleHBfbWF0Y2ggfmxvYyBbJWV4cHIgeW9qc29uXSBtYXRjaGluZ3NcbiAgICBpblxuICAgIGxldCBmdWxsX3R5cGVfbmFtZSA9XG4gICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICBcIiVzIGxpbmUgJWk6ICVzXCJcbiAgICAgICAgcGF0aFxuICAgICAgICBsb2MubG9jX3N0YXJ0LnBvc19sbnVtXG4gICAgICAgIChzdHJpbmdfb2ZfY29yZV90eXBlIGN0eXApXG4gICAgaW5cbiAgICBbJWV4cHJcbiAgICAgIGZ1biB5b2pzb24gLT5cbiAgICAgICAgbGV0IF90cF9sb2MgPSBbJWUgZXN0cmluZyB+bG9jIGZ1bGxfdHlwZV9uYW1lXSBpblxuICAgICAgICBbJWUgYm9keV1dXG4gIDs7XG5lbmRcblxubW9kdWxlIFlvanNvbl9vZiA9IHN0cnVjdFxuICBsZXQgdHlwZV9leHRlbnNpb24gdHkgPVxuICAgIFNpZ19nZW5lcmF0ZV95b2pzb25fb2YudHlwZV9vZl95b2pzb25fb2YgfmxvYzp7IHR5LnB0eXBfbG9jIHdpdGggbG9jX2dob3N0ID0gdHJ1ZSB9IHR5XG4gIDs7XG5cbiAgbGV0IGNvcmVfdHlwZSB0eSA9XG4gICAgU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdHlwZSB+dHlwZXZhcl9oYW5kbGluZzpgZGlzYWxsb3dlZF9pbl90eXBlX2V4cHIgdHlcbiAgICB8PiBGdW5fb3JfbWF0Y2guZXhwciB+bG9jOnsgdHkucHR5cF9sb2Mgd2l0aCBsb2NfZ2hvc3QgPSB0cnVlIH1cbiAgOztcblxuICBsZXQgc2lnX3R5cGVfZGVjbCA9IFNpZ19nZW5lcmF0ZV95b2pzb25fb2YubWtfc2lnXG4gIGxldCBzdHJfdHlwZV9kZWNsID0gU3RyX2dlbmVyYXRlX3lvanNvbl9vZi55b2pzb25fb2ZfdGRzXG5lbmRcblxubW9kdWxlIFlvanNvbl9maWVsZHMgPSBzdHJ1Y3RcbiAgbGV0IHN0cl90eXBlX2RlY2wgPSBTdHJfZ2VuZXJhdGVfeW9qc29uX2ZpZWxkcy55b2pzb25fZmllbGRzX29mX3Rkc1xuZW5kXG5cbm1vZHVsZSBPZl95b2pzb24gPSBzdHJ1Y3RcbiAgbGV0IHR5cGVfZXh0ZW5zaW9uIHR5ID1cbiAgICBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLnR5cGVfb2Zfb2ZfeW9qc29uIH5sb2M6eyB0eS5wdHlwX2xvYyB3aXRoIGxvY19naG9zdCA9IHRydWUgfSB0eVxuICA7O1xuXG4gIGxldCBjb3JlX3R5cGUgPVxuICAgIFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udHlwZV9vZl95b2pzb24gfnR5cGV2YXJfaGFuZGxpbmc6YGRpc2FsbG93ZWRfaW5fdHlwZV9leHByXG4gIDs7XG5cbiAgbGV0IHNpZ190eXBlX2RlY2wgPSBTaWdfZ2VuZXJhdGVfb2ZfeW9qc29uLm1rX3NpZ1xuICBsZXQgc3RyX3R5cGVfZGVjbCA9IFN0cl9nZW5lcmF0ZV9vZl95b2pzb24udGRzX29mX3lvanNvblxuZW5kXG5cbm1vZHVsZSBTaWdfeW9qc29uID0gc3RydWN0XG4gIGxldCBta19zaWcgfmxvYyB+cGF0aCBkZWNscyA9XG4gICAgU2lnX2dlbmVyYXRlX3lvanNvbl9vZi5ta19zaWcgfmxvYyB+cGF0aCBkZWNsc1xuICAgIEAgU2lnX2dlbmVyYXRlX29mX3lvanNvbi5ta19zaWcgfnBvbHk6ZmFsc2UgfmxvYyB+cGF0aCBkZWNsc1xuICA7O1xuXG4gIGxldCBzaWdfdHlwZV9kZWNsIH5sb2MgfnBhdGggKChfcmYsIHRkcykgYXMgZGVjbHMpID1cbiAgICBtYXRjaFxuICAgICAgbWtfbmFtZWRfc2lnXG4gICAgICAgIH5sb2NcbiAgICAgICAgfnNnX25hbWU6XCJQcHhfeW9qc29uX2NvbnZfbGliLllvanNvbmFibGUuU1wiXG4gICAgICAgIH5oYW5kbGVfcG9seW1vcnBoaWNfdmFyaWFudDpmYWxzZVxuICAgICAgICB0ZHNcbiAgICB3aXRoXG4gICAgfCBTb21lIGluY2x1ZGVfaW5mb3MgLT4gWyBwc2lnX2luY2x1ZGUgfmxvYyBpbmNsdWRlX2luZm9zIF1cbiAgICB8IE5vbmUgLT4gbWtfc2lnIH5sb2MgfnBhdGggZGVjbHNcbiAgOztcbmVuZFxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNvb19ydW50aW1lLlJ1bnRpbWVfdmVyc2lvbiAqKVxubW9kdWxlIFJ1bnRpbWVfdmVyc2lvbiA9IEpzb29fcnVudGltZV9fUnVudGltZV92ZXJzaW9uXG5cbm1vZHVsZSBKc29vX3J1bnRpbWVfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwibW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwgZWZmZWN0cyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcIlxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFzU2NyaXB0IGVycm9yIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbi4gIGlmIFtmb3JjZSA9IGZhbHNlXSBhbmQgYVxuICAgIEphdmFzU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YXNTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHN0cmFjZSwgZXNwZWNpYWxseSB3aGVuIHNvdXJjZW1hcCBpcyBlbmFibGVkLiAqKVxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuICAoKiogVGhlIFtFcnJvcl0gZXhjZXB0aW9uIHdyYXAgamF2YXNjcmlwdCBleGNlcHRpb25zIHdoZW4gY2F1Z2h0IGJ5IE9DYW1sIGNvZGUuXG4gICAgICBJbiBjYXNlIHRoZSBqYXZhc2NyaXB0IGV4Y2VwdGlvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgamF2YXNjcmlwdCBbRXJyb3JdLFxuICAgICAgaXQgd2lsbCBiZSBzZXJpYWxpemVkIGFuZCB3cmFwcGVkIGludG8gYSBbRmFpbHVyZV0gZXhjZXB0aW9uLlxuICAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuXG4gIGxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwianNFcnJvclwiIChFeG4gKE9iai5tYWdpYyBbfHxdKSlcblxuICBsZXQgcmFpc2VfIDogdCAtPiAnYSA9IEpzLmpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb250IHdhbnQgdGhlIG9jYW1sIGNvbXBpbGVyXG4gICAgIHRvIGNvbXBsYWluIGFib3V0IHRoZXNlcyBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkNTUyAqKVxubW9kdWxlIENTUyA9IEpzX29mX29jYW1sX19DU1NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tICopXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWxfX0RvbVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fZXZlbnRzICopXG5tb2R1bGUgRG9tX2V2ZW50cyA9IEpzX29mX29jYW1sX19Eb21fZXZlbnRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9odG1sICopXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbF9fRG9tX2h0bWxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX3N2ZyAqKVxubW9kdWxlIERvbV9zdmcgPSBKc19vZl9vY2FtbF9fRG9tX3N2Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5FdmVudFNvdXJjZSAqKVxubW9kdWxlIEV2ZW50U291cmNlID0gSnNfb2Zfb2NhbWxfX0V2ZW50U291cmNlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpbGUgKilcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWxfX0ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlyZWJ1ZyAqKVxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbF9fRmlyZWJ1Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Gb3JtICopXG5tb2R1bGUgRm9ybSA9IEpzX29mX29jYW1sX19Gb3JtXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkdlb2xvY2F0aW9uICopXG5tb2R1bGUgR2VvbG9jYXRpb24gPSBKc19vZl9vY2FtbF9fR2VvbG9jYXRpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRlcnNlY3Rpb25PYnNlcnZlciAqKVxubW9kdWxlIEludGVyc2VjdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGwgKilcbm1vZHVsZSBJbnRsID0gSnNfb2Zfb2NhbWxfX0ludGxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnMgKilcbm1vZHVsZSBKcyA9IEpzX29mX29jYW1sX19Kc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc29uICopXG5tb2R1bGUgSnNvbiA9IEpzX29mX29jYW1sX19Kc29uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzdGFibGUgKilcbm1vZHVsZSBKc3RhYmxlID0gSnNfb2Zfb2NhbWxfX0pzdGFibGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTGliX3ZlcnNpb24gKilcbm1vZHVsZSBMaWJfdmVyc2lvbiA9IEpzX29mX29jYW1sX19MaWJfdmVyc2lvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5NdXRhdGlvbk9ic2VydmVyICopXG5tb2R1bGUgTXV0YXRpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19NdXRhdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlBlcmZvcm1hbmNlT2JzZXJ2ZXIgKilcbm1vZHVsZSBQZXJmb3JtYW5jZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVnZXhwICopXG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWxfX1JlZ2V4cFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZXNpemVPYnNlcnZlciAqKVxubW9kdWxlIFJlc2l6ZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1Jlc2l6ZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlN5c19qcyAqKVxubW9kdWxlIFN5c19qcyA9IEpzX29mX29jYW1sX19TeXNfanNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXkgKilcbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sX19UeXBlZF9hcnJheVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5VcmwgKilcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbF9fVXJsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYkdMICopXG5tb2R1bGUgV2ViR0wgPSBKc19vZl9vY2FtbF9fV2ViR0xcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViU29ja2V0cyAqKVxubW9kdWxlIFdlYlNvY2tldHMgPSBKc19vZl9vY2FtbF9fV2ViU29ja2V0c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Xb3JrZXIgKilcbm1vZHVsZSBXb3JrZXIgPSBKc19vZl9vY2FtbF9fV29ya2VyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0ICopXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9fWG1sSHR0cFJlcXVlc3RcblxubW9kdWxlIEpzX29mX29jYW1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVGhpcyBsb2NhbCBtb2R1bGUgW0pzXSBpcyBuZWVkZWQgc28gdGhhdCB0aGUgcHB4X2pzIGV4dGVuc2lvbiB3b3JrIHdpdGhpbiB0aGF0IGZpbGUuICopXG5tb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuXG4gIHR5cGUgKC0nYSwgKydiKSBtZXRoX2NhbGxiYWNrXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIHR5cGUgdG9wXG5cbiAgICB0eXBlIGFueSA9IHRvcCB0XG5cbiAgICB0eXBlIGFueV9qc19hcnJheSA9IGFueVxuXG4gICAgZXh0ZXJuYWwgaW5qZWN0IDogJ2EgLT4gYW55ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgY29lcmNlIDogXyB0IC0+IF8gdCA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGdldCA6ICdhIC0+ICdiIC0+ICdjID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXQgOiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgICBleHRlcm5hbCBkZWxldGUgOiAnYSAtPiAnYiAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsIDogJ2EgLT4gJ2IgLT4gYW55IGFycmF5IC0+ICdjID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgZnVuX2NhbGwgOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogJ2EgLT4gc3RyaW5nIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29iaiA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19uZXdcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiAnYSAtPiBhbnlfanNfYXJyYXkgLT4gJ2IgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gICAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIGFueSkgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICAgIGV4dGVybmFsIGVxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgICBsZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKGFueV9qc19hcnJheSAtPiAnYikgLT4gKCdjLCBhbnlfanNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoJ2IgLT4gYW55X2pzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIGFueV9qc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICAoKiBERVBSRUNBVEVEICopXG4gICAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBvcHQgPSAnYVxuXG4gIHR5cGUgJ2Egb3B0ZGVmID0gJ2FcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGxldCBudWxsIDogJ2Egb3B0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSBvcHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IHVuZGVmaW5lZCA6ICdhIG9wdGRlZiA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIG9wdGRlZiA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgdHlwZSBPUFQgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlbXB0eSA6ICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcblxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICAgdmFsIHRlc3QgOiAnYSB0IC0+IGJvb2xcblxuICAgIHZhbCBpdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGNhc2UgOiAnYSB0IC0+ICh1bml0IC0+ICdiKSAtPiAoJ2EgLT4gJ2IpIC0+ICdiXG5cbiAgICB2YWwgZ2V0IDogJ2EgdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FcblxuICAgIHZhbCBvcHRpb24gOiAnYSBvcHRpb24gLT4gJ2EgdFxuXG4gICAgdmFsIHRvX29wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHQgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRcblxuICAgIGxldCBlbXB0eSA9IG51bGxcblxuICAgIGxldCByZXR1cm4gPSBzb21lXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoZXF1YWxzIHggbnVsbClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoZXF1YWxzIHggbnVsbCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICBtb2R1bGUgT3B0ZGVmIDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmXG5cbiAgICBsZXQgZW1wdHkgPSB1bmRlZmluZWRcblxuICAgIGxldCByZXR1cm4gPSBkZWZcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICAoKioqKilcblxuICBsZXQgY29lcmNlIHggZiBnID0gT3B0LmdldCAoZiB4KSAoZnVuICgpIC0+IGcgeClcblxuICBsZXQgY29lcmNlX29wdCB4IGYgZyA9IE9wdC5nZXQgKE9wdC5iaW5kIHggZikgKGZ1biAoKSAtPiBnIHgpXG5cbiAgKCoqKiopXG5cbiAgdHlwZSArJ2EgbWV0aFxuXG4gIHR5cGUgKydhIGdlbl9wcm9wXG5cbiAgdHlwZSAnYSByZWFkb25seV9wcm9wID0gPCBnZXQgOiAnYSA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSB3cml0ZW9ubHlfcHJvcCA9IDwgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBwcm9wID0gPCBnZXQgOiAnYSA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egb3B0ZGVmX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgKydhIGNvbnN0clxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAodW5pdCwgJ2EpIG1ldGhfY2FsbGJhY2tcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICAoKioqKilcblxuICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICgqKioqKVxuXG4gIGxldCBfdHJ1ZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0cnVlXCJcblxuICBsZXQgX2ZhbHNlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcImZhbHNlXCJcblxuICB0eXBlIG1hdGNoX3Jlc3VsdF9oYW5kbGVcblxuICB0eXBlIHN0cmluZ19hcnJheVxuXG4gIHR5cGUgbnVtYmVyX3QgPSBmbG9hdFxuXG4gIGNsYXNzIHR5cGUgbnVtYmVyID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nX3JhZGl4IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0ZpeGVkIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWxfZGlnaXRzIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1ByZWNpc2lvbiA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIGVuZFxuXG4gIGFuZCBqc19zdHJpbmcgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdmFsdWVPZiA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQXQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJDb2RlQXQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgKCogVGhpcyBtYXkgcmV0dXJuIE5hTi4uLiAqKVxuICAgIG1ldGhvZCBjb25jYXQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzQgOlxuICAgICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbG9jYWxlQ29tcGFyZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICAgIG1ldGhvZCBfbWF0Y2ggOiByZWdFeHAgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemUgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplX2Zvcm0gOiBub3JtYWxpemF0aW9uIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2UgOiByZWdFeHAgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZV9zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2VhcmNoIDogcmVnRXhwIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXQgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfbGltaXRlZCA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwIDogcmVnRXhwIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cExpbWl0ZWQgOiByZWdFeHAgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZyA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZ190b0VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVMb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9VcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVVcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdHJpbSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBhbmQgcmVnRXhwID0gb2JqZWN0XG4gICAgbWV0aG9kIGV4ZWMgOiBqc19zdHJpbmcgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCB0ZXN0IDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzb3VyY2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZ2xvYmFsIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVDYXNlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtdWx0aWxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleCA6IGludCBwcm9wXG4gIGVuZFxuXG4gIGFuZCBub3JtYWxpemF0aW9uID0ganNfc3RyaW5nXG5cbiAgKCogc3RyaW5nIGlzIHVzZWQgYnkgcHB4X2pzLCBpdCBuZWVkcyB0byBjb21lIGJlZm9yZSBhbnkgdXNlIG9mIHRoZVxuICAgICBuZXcgc3ludGF4IGluIHRoaXMgZmlsZSAqKVxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBsZXQgbmZjID0gc3RyaW5nIFwiTkZDXCJcblxuICBsZXQgbmZkID0gc3RyaW5nIFwiTkZEXCJcblxuICBsZXQgbmZrYyA9IHN0cmluZyBcIk5GS0NcIlxuXG4gIGxldCBuZmtkID0gc3RyaW5nIFwiTkZLRFwiXG5lbmRcblxuaW5jbHVkZSBKc1xuXG5jbGFzcyB0eXBlIHN0cmluZ19jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIGZyb21DaGFyQ29kZSA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IHN0cmluZ19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX1N0cmluZ1xuXG5sZXQgcmVnRXhwID0gVW5zYWZlLmdsb2JhbCMjLl9SZWdFeHBcblxubGV0IHJlZ0V4cF9jb3B5ID0gcmVnRXhwXG5cbmxldCByZWdFeHBfd2l0aEZsYWdzID0gcmVnRXhwXG5cbmNsYXNzIHR5cGUgWydhXSBqc19hcnJheSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25jYXQgOiAnYSBqc19hcnJheSB0IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBqb2luIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBwb3AgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcmV2ZXJzZSA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzaGlmdCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0IDogKCdhIC0+ICdhIC0+IG51bWJlcl90KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydF9hc1N0cmluZ3MgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzEgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMiA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8zIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzQgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0IDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc29tZSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGV2ZXJ5IDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9yRWFjaCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWFwIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZmlsdGVyIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZV9pbml0IDogKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZSA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodF9pbml0IDpcbiAgICAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHQgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcbmVuZFxuXG5sZXQgb2JqZWN0X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IG9iamVjdF9rZXlzIG8gOiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gb2JqZWN0X2NvbnN0cnVjdG9yIyNrZXlzIG9cblxubGV0IGFycmF5X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9BcnJheVxuXG5sZXQgYXJyYXlfZW1wdHkgPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfbGVuZ3RoID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2dldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBVbnNhZmUuZ2V0XG5cbmxldCBhcnJheV9zZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFVuc2FmZS5zZXRcblxubGV0IGFycmF5X21hcF9wb2x5IDpcbiAgICAnYSAjanNfYXJyYXkgdCAtPiAoJ2EgLT4gaW50IC0+ICdhICNqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAjanNfYXJyYXkgdCA9XG4gZnVuIGEgY2IgLT4gKFVuc2FmZS5jb2VyY2UgYSkjI21hcCBjYlxuXG5sZXQgYXJyYXlfbWFwIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IF9pZHggXyAtPiBmIHgpKVxuXG5sZXQgYXJyYXlfbWFwaSBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBpZHggXyAtPiBmIGlkeCB4KSlcblxuY2xhc3MgdHlwZSBtYXRjaF9yZXN1bHQgPSBvYmplY3RcbiAgaW5oZXJpdCBbanNfc3RyaW5nIHRdIGpzX2FycmF5XG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5wdXQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHN0cl9hcnJheSA6IHN0cmluZ19hcnJheSB0IC0+IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBVbnNhZmUuY29lcmNlXG5cbmxldCBtYXRjaF9yZXN1bHQgOiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgLT4gbWF0Y2hfcmVzdWx0IHQgPSBVbnNhZmUuY29lcmNlXG5cbmNsYXNzIHR5cGUgZGF0ZSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9UaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVEYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVRpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHZhbHVlT2YgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZ1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0hvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDU2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWV6b25lT2Zmc2V0IDogaW50IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZSA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEhvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDSG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdG9VVENTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSVNPU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0pTT04gOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkYXRlX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbW9udGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19kYXkgOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19ob3VyIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19taW4gOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19zZWMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbXMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBub3cgOiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IGRhdGVfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9EYXRlXG5cbmxldCBkYXRlIDogZGF0ZV9jb25zdHIgdCA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX25vdyA6IGRhdGUgdCBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9mcm9tVGltZVZhbHVlIDogKG51bWJlcl90IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbW9udGggOiAoaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2RheSA6IChpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2hvdXIgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbWluIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9zZWMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tcyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPVxuICBkYXRlX2NvbnN0clxuXG5jbGFzcyB0eXBlIG1hdGggPSBvYmplY3RcbiAgbWV0aG9kIF9FIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4yIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4xMCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzJFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMTBFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMV8yXyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQyIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjZWlsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGV4cCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZmxvb3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGxvZyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBwb3cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJhbmRvbSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgcm91bmQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc3FydCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBtYXRoID0gVW5zYWZlLmdsb2JhbCMjLl9NYXRoXG5cbmNsYXNzIHR5cGUgZXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YWNrIDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGVycm9yX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRXJyb3JcblxubW9kdWxlIEpzX2Vycm9yID0gc3RydWN0XG4gIHR5cGUgZXJyb3JfdCA9IGVycm9yIHRcblxuICBpbmNsdWRlIEpzb29fcnVudGltZS5FcnJvclxuXG4gIGV4dGVybmFsIG9mX2Vycm9yIDogZXJyb3JfdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGV4dGVybmFsIHRvX2Vycm9yIDogdCAtPiBlcnJvcl90ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBuYW1lIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubmFtZVxuXG4gIGxldCBtZXNzYWdlIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubWVzc2FnZVxuXG4gIGxldCBzdGFjayAoZSA6IHQpIDogc3RyaW5nIG9wdGlvbiA9XG4gICAgT3B0LnRvX29wdGlvbiAoT3B0Lm1hcCAodG9fZXJyb3IgZSkjIy5zdGFjayB0b19zdHJpbmcpXG5cbiAgbGV0IHRvX3N0cmluZyBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjdG9TdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFnaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIGV4Y2VwdGlvbiBFcnJvciBvZiBlcnJvciB0XG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnYikgZXEgPSBFcSA6ICgnYSwgJ2EpIGVxXG5cbiAgbGV0IChlcSA6IChlcnJvciB0LCBKc19lcnJvci50KSBlcSkgPSBPYmoubWFnaWMgRXFcblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggZXEgd2l0aFxuICAgIHwgRXEgLT5cbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICBleGNlcHRpb24gRXJyb3IgPSBKc19lcnJvci5FeG5cbiAgICAgICAgZW5kIDogVClcblxuICBtb2R1bGUgRXJyb3IgPSAodmFsIG0gOiBUKVxuZW5kXG5cbmluY2x1ZGUgTWFnaWMuRXJyb3JcblxubGV0IHJhaXNlX2pzX2Vycm9yIGUgPSBKc19lcnJvci5yYWlzZV8gKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgZSA9IEpzX2Vycm9yLnRvX3N0cmluZyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IGV4bl93aXRoX2pzX2JhY2t0cmFjZSA9IEpzX2Vycm9yLmF0dGFjaF9qc19iYWNrdHJhY2VcblxuZXh0ZXJuYWwganNfZXJyb3Jfb2ZfZXhuIDogZXhuIC0+IGVycm9yIHQgb3B0ID0gXCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblwiXG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgX0pTT04gOiBqc29uIHQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGRlY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBkZWNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgdW5lc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMudW5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmV4dGVybmFsIGJvb2wgOiBib29sIC0+IGJvb2wgdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCB0b19ib29sIDogYm9vbCB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbmV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gJ2EganNfYXJyYXkgdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fYXJyYXkgOiAnYSBqc19hcnJheSB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG5leHRlcm5hbCBmbG9hdCA6IGZsb2F0IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCB0b19mbG9hdCA6IG51bWJlcl90IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gbnVtYmVyIHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IG51bWJlciB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgaW50MzIgOiBpbnQzMiAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBudW1iZXJfdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbmV4dGVybmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IG51bWJlcl90IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0eXBlb2YgOiBfIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IF8gdCAtPiBfIGNvbnN0ciAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG5sZXQgaXNOYU4gKGkgOiAnYSkgOiBib29sID1cbiAgdG9fYm9vbCAoVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5pc05hTiBbfCBVbnNhZmUuaW5qZWN0IGkgfF0pXG5cbmxldCBwYXJzZUludCAocyA6IGpzX3N0cmluZyB0KSA6IGludCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUludCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VJbnRcIiBlbHNlIHNcblxubGV0IHBhcnNlRmxvYXQgKHMgOiBqc19zdHJpbmcgdCkgOiBudW1iZXJfdCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUZsb2F0IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUZsb2F0XCIgZWxzZSBzXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgSnNfZXJyb3IuRXhuIGUgLT4gU29tZSAoSnNfZXJyb3IudG9fc3RyaW5nIGUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZSAtPlxuICAgICAgbGV0IGUgOiA8IC4uID4gdCA9IE9iai5tYWdpYyBlIGluXG4gICAgICBpZiBpbnN0YW5jZW9mIGUgYXJyYXlfY29uc3RydWN0b3IgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fc3RyaW5nIGUjI3RvU3RyaW5nKSlcblxubGV0IGV4cG9ydF9qcyAoZmllbGQgOiBqc19zdHJpbmcgdCkgeCA9XG4gIFVuc2FmZS5zZXRcbiAgICAoVW5zYWZlLnB1cmVfanNfZXhwciBcImpzb29fZXhwb3J0c1wiKVxuICAgIGZpZWxkXG4gICAgKGlmIFN0cmluZy5lcXVhbCAoSnMudG9fc3RyaW5nICh0eXBlb2YgKE9iai5tYWdpYyB4KSkpIFwiZnVuY3Rpb25cIlxuICAgICAgICAoKiBmdW5jdGlvbiB3aXRoIGFyaXR5L2xlbmd0aCBlcXVhbCB0byB6ZXJvIGFyZSBhbHJlYWR5IHdyYXBwZWQgKilcbiAgICAgICAgJiYgVW5zYWZlLmdldCAoT2JqLm1hZ2ljIHgpIChKcy5zdHJpbmcgXCJsZW5ndGhcIikgPiAwXG4gICAgIHRoZW4gT2JqLm1hZ2ljICh3cmFwX2NhbGxiYWNrIChPYmoubWFnaWMgeCkpXG4gICAgIGVsc2UgeClcblxubGV0IGV4cG9ydCBmaWVsZCB4ID0gZXhwb3J0X2pzIChzdHJpbmcgZmllbGQpIHhcblxubGV0IGV4cG9ydF9hbGwgb2JqID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvYmogaW5cbiAga2V5cyMjZm9yRWFjaFxuICAgICh3cmFwX2NhbGxiYWNrIChmdW4gKGtleSA6IGpzX3N0cmluZyB0KSBfIF8gLT4gZXhwb3J0X2pzIGtleSAoVW5zYWZlLmdldCBvYmoga2V5KSkpXG5cbigqKioqKVxuXG4oKiBERVBSRUNBVEVEICopXG5cbnR5cGUgZmxvYXRfcHJvcCA9IG51bWJlcl90IHByb3BcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIG5vZGVMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbGlzdF9vZl9ub2RlTGlzdCAobm9kZUxpc3QgOiAnYSBub2RlTGlzdCB0KSA9XG4gIGxldCBsZW5ndGggPSBub2RlTGlzdCMjLmxlbmd0aCBpblxuICBsZXQgcmVjIGFkZF9pdGVtIGFjYyBpID1cbiAgICBpZiBpIDwgbGVuZ3RoXG4gICAgdGhlblxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobm9kZUxpc3QjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFkZF9pdGVtIGFjYyAoaSArIDEpXG4gICAgICB8IFNvbWUgZSAtPiBhZGRfaXRlbSAoZSA6OiBhY2MpIChpICsgMSlcbiAgICBlbHNlIExpc3QucmV2IGFjY1xuICBpblxuICBhZGRfaXRlbSBbXSAwXG5cbnR5cGUgbm9kZVR5cGUgPVxuICB8IE9USEVSXG4gICgqIFdpbGwgbm90IGhhcHBlbiAqKVxuICB8IEVMRU1FTlRcbiAgfCBBVFRSSUJVVEVcbiAgfCBURVhUXG4gIHwgQ0RBVEFfU0VDVElPTlxuICB8IEVOVElUWV9SRUZFUkVOQ0VcbiAgfCBFTlRJVFlcbiAgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OXG4gIHwgQ09NTUVOVFxuICB8IERPQ1VNRU5UXG4gIHwgRE9DVU1FTlRfVFlQRVxuICB8IERPQ1VNRU5UX0ZSQUdNRU5UXG4gIHwgTk9UQVRJT05cblxubW9kdWxlIERvY3VtZW50UG9zaXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgdHlwZSBtYXNrID0gaW50XG5cbiAgbGV0IGRpc2Nvbm5lY3RlZCA9IDB4MDFcblxuICBsZXQgcHJlY2VkaW5nID0gMHgwMlxuXG4gIGxldCBmb2xsb3dpbmcgPSAweDA0XG5cbiAgbGV0IGNvbnRhaW5zID0gMHgwOFxuXG4gIGxldCBjb250YWluZWRfYnkgPSAweDEwXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uX3NwZWNpZmljID0gMHgyMFxuXG4gIGxldCBoYXMgdCBtYXNrID0gdCBsYW5kIG1hc2sgPSBtYXNrXG5cbiAgbGV0IGFkZCB4IHkgPSB4IGxvciB5XG5cbiAgbGV0ICggKyApID0gYWRkXG5lbmRcblxuY2xhc3MgdHlwZSBub2RlID0gb2JqZWN0XG4gIG1ldGhvZCBub2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVR5cGUgOiBub2RlVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IG5vZGUgbm9kZUxpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRCZWZvcmUgOiBub2RlIHQgLT4gbm9kZSB0IG9wdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZENoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0NoaWxkTm9kZXMgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZU5vZGUgOiBib29sIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgY29tcGFyZURvY3VtZW50UG9zaXRpb24gOiBub2RlIHQgLT4gRG9jdW1lbnRQb3NpdGlvbi50IG1ldGhcblxuICBtZXRob2QgbG9va3VwTmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbG9va3VwUHJlZml4IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgYXBwZW5kQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNhcHBlbmRDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVtb3ZlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNyZW1vdmVDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVwbGFjZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQpID1cbiAgaWdub3JlIChwIyNyZXBsYWNlQ2hpbGQgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQpKVxuXG5sZXQgaW5zZXJ0QmVmb3JlIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQgb3B0KSA9XG4gIGlnbm9yZSAocCMjaW5zZXJ0QmVmb3JlIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0IG9wdCkpXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtBdHRyXSBvYmplY3RzLiAqKVxuY2xhc3MgdHlwZSBhdHRyID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVjaWZpZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJFbGVtZW50IDogZWxlbWVudCB0IHByb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbTmFtZWROb2RlTWFwXSBvYmplY3RzLiAqKVxuYW5kIFsnbm9kZV0gbmFtZWROb2RlTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBnZXROYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldE5hbWVkSXRlbSA6ICdub2RlIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVOYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtFbGVtZW50XSBvYmplY3RzLiAqKVxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIHRhZ05hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZU5TIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyIG5hbWVkTm9kZU1hcCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGNoYXJhY3RlckRhdGEgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YmpzX3N0cmluZ0RhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnREYXRhIDogaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVEYXRhIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZURhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgY29tbWVudCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSB0ZXh0ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIGRvY3VtZW50RnJhZ21lbnQgPSBub2RlXG5cbmNsYXNzIHR5cGUgWydlbGVtZW50XSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogJ2VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQgOiBkb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50IDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnROUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0Tm9kZSA6IGpzX3N0cmluZyB0IC0+IHRleHQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNvbW1lbnQgOiBqc19zdHJpbmcgdCAtPiBjb21tZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgaW1wb3J0Tm9kZSA6IGVsZW1lbnQgdCAtPiBib29sIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGFkb3B0Tm9kZSA6IGVsZW1lbnQgdCAtPiAnZWxlbWVudCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vZGVfdHlwZSA9XG4gIHwgRWxlbWVudCBvZiBlbGVtZW50IHRcbiAgfCBBdHRyIG9mIGF0dHIgdFxuICB8IFRleHQgb2YgdGV4dCB0XG4gIHwgT3RoZXIgb2Ygbm9kZSB0XG5cbmxldCBub2RlVHlwZSBlID1cbiAgbWF0Y2ggZSMjLm5vZGVUeXBlIHdpdGhcbiAgfCBFTEVNRU5UIC0+IEVsZW1lbnQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBBVFRSSUJVVEUgLT4gQXR0ciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IENEQVRBX1NFQ1RJT04gfCBURVhUIC0+IFRleHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBfIC0+IE90aGVyIChlIDo+IG5vZGUgdClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBjYXN0IChlIDogI25vZGUgSnMudCkgdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IHQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBlbGVtZW50IGUgOiBlbGVtZW50IEpzLnQgSnMub3B0ID0gY2FzdCBlIEVMRU1FTlRcblxuICBsZXQgdGV4dCBlIDogdGV4dCBKcy50IEpzLm9wdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IFRFWFQgfHwgZSMjLm5vZGVUeXBlID09IENEQVRBX1NFQ1RJT05cbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXR0ciBlIDogYXR0ciBKcy50IEpzLm9wdCA9IGNhc3QgZSBBVFRSSUJVVEVcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYiAtPiBib29sIHQpIG1ldGhfY2FsbGJhY2sgb3B0XG4oKiogVGhlIHR5cGUgb2YgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zLiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyXG4gICAgICBbJ2FdIGlzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQgb2JqZWN0OyB0aGUgc2Vjb25kIHBhcmFtZXRlclxuICAgICAgWydiXSBpcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgb2JqZWN0LiAqKVxuXG5jbGFzcyB0eXBlIFsnYV0gZXZlbnQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUYXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgKCogTGVnYWN5IG1ldGhvZHMgKilcbiAgbWV0aG9kIHNyY0VsZW1lbnQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogJ2IgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gSnMubnVsbFxuXG5sZXQgd2luZG93X2V2ZW50ICgpIDogJ2EgI2V2ZW50IHQgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiZXZlbnRcIlxuXG4oKiBUaGUgZnVuY3Rpb24gcHJldmVudERlZmF1bHQgbXVzdCBiZSBjYWxsZWQgZXhwbGljaXRseSB3aGVuXG4gICB1c2luZyBhZGRFdmVudExpc3RlbmVyLi4uICopXG5sZXQgaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUuY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkLiAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgZnVsbF9oYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5tZXRoX2NhbGxiYWNrIChmdW4gdGhpcyBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgaW52b2tlX2hhbmRsZXIgKGYgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lcikgKHRoaXMgOiAnYSkgKGV2ZW50IDogJ2IpIDogYm9vbCB0ID1cbiAgSnMuVW5zYWZlLmNhbGwgZiB0aGlzIFt8IEpzLlVuc2FmZS5pbmplY3QgZXZlbnQgfF1cblxubGV0IGV2ZW50VGFyZ2V0IChlIDogKDwgLi4gPiBhcyAnYSkgI2V2ZW50IHQpIDogJ2EgdCA9XG4gIGxldCB0YXJnZXQgPVxuICAgIE9wdC5nZXQgZSMjLnRhcmdldCAoZnVuICgpIC0+IE9wdC5nZXQgZSMjLnNyY0VsZW1lbnQgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpKVxuICBpblxuICBpZiBKcy5pbnN0YW5jZW9mIHRhcmdldCBKcy5VbnNhZmUuZ2xvYmFsIyMuX05vZGVcbiAgdGhlblxuICAgICgqIFdvcmthcm91bmQgZm9yIFNhZmFyaSBidWcgKilcbiAgICBsZXQgdGFyZ2V0JyA6IG5vZGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2UgdGFyZ2V0IGluXG4gICAgaWYgdGFyZ2V0JyMjLm5vZGVUeXBlID09IFRFWFRcbiAgICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKE9wdC5nZXQgdGFyZ2V0JyMjLnBhcmVudE5vZGUgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgIGVsc2UgdGFyZ2V0XG4gIGVsc2UgdGFyZ2V0XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IG1ha2UgcyA9IEpzLnN0cmluZyBzXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IHVuaXQgLT4gdW5pdFxuXG5jbGFzcyB0eXBlIGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGNhcHR1cmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXNzaXZlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmFkZEV2ZW50TGlzdGVuZXIpXG4gIHRoZW5cbiAgICBsZXQgZXYgPSAoSnMuc3RyaW5nIFwib25cIikjI2NvbmNhdCB0eXAgaW5cbiAgICBsZXQgY2FsbGJhY2sgZSA9IEpzLlVuc2FmZS5jYWxsIChoLCBlLCBbfHxdKSBpblxuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhdHRhY2hFdmVudCBldiBjYWxsYmFjayBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjZGV0YWNoRXZlbnQgZXYgY2FsbGJhY2tcbiAgZWxzZVxuICAgIGxldCBvcHRzIDogZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyB0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgbGV0IGl0ZXIgdCBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYiAtPiBmIGJcbiAgICBpblxuICAgIGl0ZXIgY2FwdHVyZSAoZnVuIGIgLT4gb3B0cyMjLmNhcHR1cmUgOj0gYik7XG4gICAgaXRlciBvbmNlIChmdW4gYiAtPiBvcHRzIyMub25jZSA6PSBiKTtcbiAgICBpdGVyIHBhc3NpdmUgKGZ1biBiIC0+IG9wdHMjIy5wYXNzaXZlIDo9IGIpO1xuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhZGRFdmVudExpc3RlbmVyIHR5cCBoIG9wdHMgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3JlbW92ZUV2ZW50TGlzdGVuZXIgdHlwIGggb3B0c1xuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCBoIGNhcHQgPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSB0eXAgfmNhcHR1cmU6Y2FwdCBoXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyIGlkID0gaWQgKClcblxubGV0IHByZXZlbnREZWZhdWx0IGV2ID1cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucHJldmVudERlZmF1bHQgKCogSUUgaGFjayAqKVxuICB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjcHJldmVudERlZmF1bHRcbiAgZWxzZSAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5yZXR1cm5WYWx1ZSA6PSBKcy5ib29sIGZhbHNlXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/ZGV0YWlsIHR5cCA9XG4gIGxldCBvcHRfaXRlciBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9wdHMgPSBVbnNhZmUub2JqIFt8fF0gaW5cbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5idWJibGVzIDo9IGJvb2wgeCkgYnViYmxlcztcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5jYW5jZWxhYmxlIDo9IGJvb2wgeCkgY2FuY2VsYWJsZTtcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5kZXRhaWwgOj0gc29tZSB4KSBkZXRhaWw7XG4gIGxldCBjb25zdHIgOlxuICAgICAgKCAgICgnYSwgJ2IpICNjdXN0b21FdmVudCBKcy50IEV2ZW50LnR5cFxuICAgICAgIC0+IDwgZGV0YWlsIDogJ2Igb3B0IHByb3AgPiB0XG4gICAgICAgLT4gKCdhLCAnYikgY3VzdG9tRXZlbnQgdClcbiAgICAgIGNvbnN0ciA9XG4gICAgVW5zYWZlLmdsb2JhbCMjLl9DdXN0b21FdmVudFxuICBpblxuICBuZXclanMgY29uc3RyIHR5cCBvcHRzXG5cbigqIElFIDwgOSAqKVxuXG5jbGFzcyB0eXBlIHN0cmluZ0xpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBKc1xuXG50eXBlIHVpbnQzMiA9IGZsb2F0XG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuZW5kXG5cbmxldCBhcnJheUJ1ZmZlciA6IChpbnQgLT4gYXJyYXlCdWZmZXIgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9BcnJheUJ1ZmZlclxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyVmlldyA9IG9iamVjdFxuICBtZXRob2QgYnVmZmVyIDogYXJyYXlCdWZmZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHR5cGVkQXJyYXkgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgX0JZVEVTX1BFUl9FTEVNRU5UIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0X2Zyb21BcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRfZnJvbVR5cGVkQXJyYXkgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXlfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgKCogVGhpcyBmYWtlIG1ldGhvZCBpcyBuZWVkZWQgZm9yIHR5cGluZyBwdXJwb3Nlcy5cbiAgICAgV2l0aG91dCBpdCwgWydiXSB3b3VsZCBub3QgYmUgY29uc3RyYWluZWQuICopXG4gIG1ldGhvZCBfY29udGVudF90eXBlXyA6ICdiIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxudHlwZSBpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0MzJBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDY0QXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlZEFycmF5XG5cbmV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdFxuICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG5sZXQgaW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9pbkJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgdWludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9pbkJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IGludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfaW5CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21BcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2luQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IGludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfaW5CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21BcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2luQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfaW5CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0NjRBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfaW5CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IHNldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9XG4gZnVuIGEgaSB2IC0+IGFycmF5X3NldCAoVW5zYWZlLmNvZXJjZSBhKSBpIHZcblxubGV0IGdldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5sZXQgdW5zYWZlX2dldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmNsYXNzIHR5cGUgZGF0YVZpZXcgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgZ2V0SW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMiA6IGludCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjRfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzIgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyIDogaW50IC0+IHVpbnQzMiAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyXyA6IGludCAtPiB1aW50MzIgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyXyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjRfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZGF0YVZpZXcgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0RhdGFWaWV3XG5cbmxldCBkYXRhVmlld19pbkJ1ZmZlciA9IGRhdGFWaWV3XG5cbm1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgSnMudCA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSBKcy50ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuXG4gIGxldCBvZl9hcnJheUJ1ZmZlciBhYiA9XG4gICAgbGV0IHVpbnQ4ID0gbmV3JWpzIHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciBhYiBpblxuICAgIG9mX3VpbnQ4QXJyYXkgdWludDhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgYmxvYiA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYmxvYiB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2Vfd2l0aENvbnRlbnRUeXBlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiBibG9iIHQgbWV0aFxuZW5kXG5cbmxldCBibG9iX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fQmxvYlxuXG50eXBlICdhIG1ha2VfYmxvYiA9XG4gID9jb250ZW50VHlwZTpzdHJpbmcgLT4gP2VuZGluZ3M6WyBgVHJhbnNwYXJlbnQgfCBgTmF0aXZlIF0gLT4gJ2EgLT4gYmxvYiB0XG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmxldCBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzID1cbiAgbGV0IG9wdGlvbnMgPVxuICAgIGZpbHRlcl9tYXBcbiAgICAgIChmdW4gKG5hbWUsIHYpIC0+XG4gICAgICAgIG1hdGNoIHYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBTb21lIChuYW1lLCBVbnNhZmUuaW5qZWN0IChzdHJpbmcgdikpKVxuICAgICAgWyBcInR5cGVcIiwgY29udGVudFR5cGVcbiAgICAgIDsgKCBcImVuZGluZ3NcIlxuICAgICAgICAsIG1hdGNoIGVuZGluZ3Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGBUcmFuc3BhcmVudCAtPiBTb21lIFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgIHwgU29tZSBgTmF0aXZlIC0+IFNvbWUgXCJuYXRpdmVcIiApXG4gICAgICBdXG4gIGluXG4gIG1hdGNoIG9wdGlvbnMgd2l0aFxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGwgLT4gVW5zYWZlLm9iaiAoQXJyYXkub2ZfbGlzdCBsKVxuXG5sZXQgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGEgPVxuICBsZXQgb3B0aW9ucyA9IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgaW5cbiAgbmV3JWpzIGJsb2JfY29uc3RyIChhcnJheSBhKSBvcHRpb25zXG5cbmxldCBibG9iX2Zyb21fc3RyaW5nID9jb250ZW50VHlwZSA/ZW5kaW5ncyBzID1cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIFt8IHN0cmluZyBzIHxdXG5cbmxldCBibG9iX2Zyb21fYW55ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBsID1cbiAgbGV0IGwgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBgYXJyYXlCdWZmZXIgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgYXJyYXlCdWZmZXJWaWV3IGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYHN0cmluZyBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKVxuICAgICAgICB8IGBqc19zdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IHNcbiAgICAgICAgfCBgYmxvYiBiIC0+IFVuc2FmZS5pbmplY3QgYilcbiAgICAgIGxcbiAgaW5cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIChBcnJheS5vZl9saXN0IGwpXG5cbmNsYXNzIHR5cGUgZmlsZSA9IG9iamVjdFxuICBpbmhlcml0IGJsb2JcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdE1vZGlmaWVkRGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbiBmaXJlZm94IDMuMC0zLjUgZmlsZS5uYW1lIGlzIG5vdCBhdmFpbGFibGUsIHdlIHVzZSB0aGUgbm9uc3RhbmRhcmQgZmlsZU5hbWUgaW5zdGVhZCAqKVxuY2xhc3MgdHlwZSBmaWxlX25hbWVfb25seSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVOYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZmlsZW5hbWUgZmlsZSA9XG4gIGxldCBmaWxlIDogZmlsZV9uYW1lX29ubHkgdCA9IEpzLlVuc2FmZS5jb2VyY2UgZmlsZSBpblxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5uYW1lIHdpdGhcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLmZpbGVOYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbid0IHJldHJpZXZlIGZpbGUgbmFtZTogbm90IGltcGxlbWVudGVkXCJcbiAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWUpXG4gIHwgU29tZSBuYW1lIC0+IG5hbWVcblxudHlwZSBmaWxlX2FueSA9IDwgPiB0XG5cbmxldCBkb2NfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9Eb2N1bWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwganNvbiA6IGZpbGVfYW55IC0+ICdhIE9wdC50ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBkb2N1bWVudCAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGRvY19jb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGVsZW1lbnQgZG9jdW1lbnQgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYmxvYiAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGJsb2JfY29uc3RyIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogI2Jsb2IgdCkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHN0cmluZyAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDoganNfc3RyaW5nIHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGFycmF5QnVmZmVyIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQpXG4gICAgZWxzZSBKcy5udWxsXG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFtmaWxlXSBEb20ubm9kZUxpc3RcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVFcnJvciA9IG9iamVjdFxuICBtZXRob2QgY29kZSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb2dyZXNzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGxlbmd0aENvbXB1dGFibGUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2FkZWQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3RhbCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcm9ncmVzc0V2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZW5kIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEVNUFRZXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxuY2xhc3MgdHlwZSBmaWxlUmVhZGVyID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHJlYWRBc0FycmF5QnVmZmVyIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzQmluYXJ5U3RyaW5nIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIDogI2Jsb2IgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzRGF0YVVSTCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzdWx0IDogZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IGZpbGVFcnJvciB0IHJlYWRvbmx5X3Byb3BcblxuICBpbmhlcml0IHByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgUmVhZGVyRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSBmaWxlUmVhZGVyIHByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGxvYWRzdGFydCA9IEV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IEV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBFdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCBsb2FkZW5kID0gRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmxldCBmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmlsZVJlYWRlclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNhbWxfanNfb25faWUgOiB1bml0IC0+IGJvb2wgdCA9IFwiY2FtbF9qc19vbl9pZVwiXG5cbmxldCBvbklFID0gSnMudG9fYm9vbCAoY2FtbF9qc19vbl9pZSAoKSlcblxuZXh0ZXJuYWwgaHRtbF9lc2NhcGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VzY2FwZVwiXG5cbmV4dGVybmFsIGRlY29kZV9odG1sX2VudGl0aWVzIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lbnRpdGllc1wiXG5cbmNsYXNzIHR5cGUgY3NzU3R5bGVEZWNsYXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2Qgc2V0UHJvcGVydHkgOlxuICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5VmFsdWUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5UHJpb3JpdHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVByb3BlcnR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRlbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkR1cmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25GaWxsTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblBsYXlTdGF0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRBdHRhY2htZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUmVwZWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sbGFwc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSYWRpdXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjYXB0aW9uU2lkZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVySW5jcmVtZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVyUmVzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc0Zsb2F0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJzb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzcGxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW1wdHlDZWxscyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udEZhbWlseSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFNpemUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFZhcmlhbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRXZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGV0dGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5MZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5SaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGFjaXR5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2Qgb3V0bGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lT2Zmc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3cgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dZIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1JpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtBZnRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQmVmb3JlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyRXZlbnRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYmxlTGF5b3V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbmNob3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHREZWNvcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0SW5kZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0VHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmVydGljYWxBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmlzaWJpbGl0eSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2hpdGVTcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdvcmRTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB6SW5kZXggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IpIERvbS5ldmVudF9saXN0ZW5lclxuXG50eXBlIG1vdXNlX2J1dHRvbiA9XG4gIHwgTm9fYnV0dG9uXG4gIHwgTGVmdF9idXR0b25cbiAgfCBNaWRkbGVfYnV0dG9uXG4gIHwgUmlnaHRfYnV0dG9uXG5cbnR5cGUgZGVsdGFfbW9kZSA9XG4gIHwgRGVsdGFfcGl4ZWxcbiAgfCBEZWx0YV9saW5lXG4gIHwgRGVsdGFfcGFnZVxuXG5jbGFzcyB0eXBlIGV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5ldmVudFxuZW5kXG5cbmFuZCBbJ2FdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnQsICdhXSBEb20uY3VzdG9tRXZlbnRcbmVuZFxuXG5hbmQgZm9jdXNFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnV0dG9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBtb3VzZV9idXR0b24gb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJvbUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQga2V5Ym9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyQ29kZSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXlDb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TW9kaWZpZXJTdGF0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGtleUlkZW50aWZpZXIgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZXdoZWVsRXZlbnQgPSBvYmplY3RcbiAgKCogQWxsIG1vZGVybiBicm93c2VycyAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2Qgd2hlZWxEZWx0YSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVogOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhTW9kZSA6IGRlbHRhX21vZGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZVNjcm9sbEV2ZW50ID0gb2JqZWN0XG4gICgqIEZpcmVmb3ggKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hPUklaT05UQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVElDQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgdG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0VG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhbmdlZFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gdG91Y2ggdCBvcHRkZWYgbWV0aFxuZW5kXG5cbmFuZCB0b3VjaCA9IG9iamVjdFxuICBtZXRob2QgaWRlbnRpZmllciA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN1Ym1pdEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3VibWl0dGVyIDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRyYWdFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGF0YVRyYW5zZmVyIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGlwYm9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGNsaXBib2FyZERhdGEgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRhdGFUcmFuc2ZlciA9IG9iamVjdFxuICBtZXRob2QgZHJvcEVmZmVjdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZWZmZWN0QWxsb3dlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0eXBlcyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRFbGVtZW50IDogZWxlbWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhX2FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldERyYWdJbWFnZSA6IGVsZW1lbnQgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBldmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kYmxjbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vkb3duIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZXVwIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW92ZXIgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlbW92ZSA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdXQgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXByZXNzIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlkb3duIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXl1cCA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Nyb2xsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2hlZWwgOiAoJ3NlbGYgdCwgbW91c2V3aGVlbEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ3N0YXJ0IDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbmQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VudGVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdvdmVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdsZWF2ZSA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyb3AgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25lbmQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25pdGVyYXRpb24gOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9ucnVuIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25zdGFydCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uZW5kIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZ290cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9zdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJlbnRlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyY2FuY2VsIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJkb3duIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJsZWF2ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybW92ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3V0IDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdmVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJ1cCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzcGF0Y2hFdmVudCA6IGV2ZW50IHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG5hbmQgcG9wU3RhdGVFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHBvaW50ZXJFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgcG9pbnRlcklkIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhbmdlbnRpYWxQcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR3aXN0IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9pbnRlclR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzUHJpbWFyeSA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cmwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3JhZ2VBcmVhIDogc3RvcmFnZSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGhhc2hDaGFuZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG9sZFVSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBhbmltYXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0cmFuc2l0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBwcm9wZXJ0eU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtZWRpYUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcbmVuZFxuXG5hbmQgbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc291cmNlIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBub2RlU2VsZWN0b3IgPSBvYmplY3RcbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3IgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgcXVlcnlTZWxlY3RvckFsbCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuZW5kXG5cbmFuZCB0b2tlbkxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBhZGQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRvZ2dsZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmaWVyIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NOYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc0xpc3QgOiB0b2tlbkxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3Nlc3QgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc3R5bGUgOiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dENvbnRlbnQgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lclRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaWVudExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRQYXJlbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxMZWZ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsVG9wIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsV2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxIZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBnZXRDbGllbnRSZWN0cyA6IGNsaWVudFJlY3RMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgOiBjbGllbnRSZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxJbnRvVmlldyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5hbmQgY2xpZW50UmVjdCA9IG9iamVjdFxuICBtZXRob2QgdG9wIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm90dG9tIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaWVudFJlY3RMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGNsaWVudFJlY3QgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBEb20ubm9faGFuZGxlclxuXG5sZXQgaGFuZGxlciA9IERvbS5oYW5kbGVyXG5cbmxldCBmdWxsX2hhbmRsZXIgPSBEb20uZnVsbF9oYW5kbGVyXG5cbmxldCBpbnZva2VfaGFuZGxlciA9IERvbS5pbnZva2VfaGFuZGxlclxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSAnYSBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJjbGlja1wiXG5cbiAgbGV0IGNvcHkgPSBEb20uRXZlbnQubWFrZSBcImNvcHlcIlxuXG4gIGxldCBjdXQgPSBEb20uRXZlbnQubWFrZSBcImN1dFwiXG5cbiAgbGV0IHBhc3RlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXN0ZVwiXG5cbiAgbGV0IGRibGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJkYmxjbGlja1wiXG5cbiAgbGV0IG1vdXNlZG93biA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vkb3duXCJcblxuICBsZXQgbW91c2V1cCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V1cFwiXG5cbiAgbGV0IG1vdXNlb3ZlciA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdmVyXCJcblxuICBsZXQgbW91c2Vtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW1vdmVcIlxuXG4gIGxldCBtb3VzZW91dCA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdXRcIlxuXG4gIGxldCBrZXlwcmVzcyA9IERvbS5FdmVudC5tYWtlIFwia2V5cHJlc3NcIlxuXG4gIGxldCBrZXlkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlkb3duXCJcblxuICBsZXQga2V5dXAgPSBEb20uRXZlbnQubWFrZSBcImtleXVwXCJcblxuICBsZXQgbW91c2V3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V3aGVlbFwiXG5cbiAgbGV0IHdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJ3aGVlbFwiXG5cbiAgbGV0IF9ET01Nb3VzZVNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwiRE9NTW91c2VTY3JvbGxcIlxuXG4gIGxldCB0b3VjaHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaHN0YXJ0XCJcblxuICBsZXQgdG91Y2htb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaG1vdmVcIlxuXG4gIGxldCB0b3VjaGVuZCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hlbmRcIlxuXG4gIGxldCB0b3VjaGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hjYW5jZWxcIlxuXG4gIGxldCBkcmFnc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdzdGFydFwiXG5cbiAgbGV0IGRyYWdlbmQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbmRcIlxuXG4gIGxldCBkcmFnZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbnRlclwiXG5cbiAgbGV0IGRyYWdvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnb3ZlclwiXG5cbiAgbGV0IGRyYWdsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2xlYXZlXCJcblxuICBsZXQgZHJhZyA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ1wiXG5cbiAgbGV0IGRyb3AgPSBEb20uRXZlbnQubWFrZSBcImRyb3BcIlxuXG4gIGxldCBoYXNoY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICBsZXQgY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGFuZ2VcIlxuXG4gIGxldCBpbnB1dCA9IERvbS5FdmVudC5tYWtlIFwiaW5wdXRcIlxuXG4gIGxldCB0aW1ldXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1ldXBkYXRlXCJcblxuICBsZXQgc3VibWl0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzdWJtaXRcIlxuXG4gIGxldCBzY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcInNjcm9sbFwiXG5cbiAgbGV0IGZvY3VzID0gRG9tLkV2ZW50Lm1ha2UgXCJmb2N1c1wiXG5cbiAgbGV0IGJsdXIgPSBEb20uRXZlbnQubWFrZSBcImJsdXJcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJ1bmxvYWRcIlxuXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcImJlZm9yZXVubG9hZFwiXG5cbiAgbGV0IHJlc2l6ZSA9IERvbS5FdmVudC5tYWtlIFwicmVzaXplXCJcblxuICBsZXQgb3JpZW50YXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcIm9yaWVudGF0aW9uY2hhbmdlXCJcblxuICBsZXQgcG9wc3RhdGUgPSBEb20uRXZlbnQubWFrZSBcInBvcHN0YXRlXCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgc2VsZWN0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWxlY3RcIlxuXG4gIGxldCBvbmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9ubGluZVwiXG5cbiAgbGV0IG9mZmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9mZmxpbmVcIlxuXG4gIGxldCBjaGVja2luZyA9IERvbS5FdmVudC5tYWtlIFwiY2hlY2tpbmdcIlxuXG4gIGxldCBub3VwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwibm91cGRhdGVcIlxuXG4gIGxldCBkb3dubG9hZGluZyA9IERvbS5FdmVudC5tYWtlIFwiZG93bmxvYWRpbmdcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCB1cGRhdGVyZWFkeSA9IERvbS5FdmVudC5tYWtlIFwidXBkYXRlcmVhZHlcIlxuXG4gIGxldCBjYWNoZWQgPSBEb20uRXZlbnQubWFrZSBcImNhY2hlZFwiXG5cbiAgbGV0IG9ic29sZXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJvYnNvbGV0ZVwiXG5cbiAgbGV0IGRvbUNvbnRlbnRMb2FkZWQgPSBEb20uRXZlbnQubWFrZSBcIkRPTUNvbnRlbnRMb2FkZWRcIlxuXG4gIGxldCBhbmltYXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uc3RhcnRcIlxuXG4gIGxldCBhbmltYXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmVuZFwiXG5cbiAgbGV0IGFuaW1hdGlvbml0ZXJhdGlvbiA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uaXRlcmF0aW9uXCJcblxuICBsZXQgYW5pbWF0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25jYW5jZWxcIlxuXG4gIGxldCB0cmFuc2l0aW9ucnVuID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9ucnVuXCJcblxuICBsZXQgdHJhbnNpdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uc3RhcnRcIlxuXG4gIGxldCB0cmFuc2l0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uZW5kXCJcblxuICBsZXQgdHJhbnNpdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmNhbmNlbFwiXG5cbiAgbGV0IGNhbnBsYXkgPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXlcIlxuXG4gIGxldCBjYW5wbGF5dGhyb3VnaCA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheXRocm91Z2hcIlxuXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiZHVyYXRpb25jaGFuZ2VcIlxuXG4gIGxldCBlbXB0aWVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbXB0aWVkXCJcblxuICBsZXQgZW5kZWQgPSBEb20uRXZlbnQubWFrZSBcImVuZGVkXCJcblxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImdvdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbG9hZGVkZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkZGF0YVwiXG5cbiAgbGV0IGxvYWRlZG1ldGFkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRtZXRhZGF0YVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBtZXNzYWdlID0gRG9tLkV2ZW50Lm1ha2UgXCJtZXNzYWdlXCJcblxuICBsZXQgcGF1c2UgPSBEb20uRXZlbnQubWFrZSBcInBhdXNlXCJcblxuICBsZXQgcGxheSA9IERvbS5FdmVudC5tYWtlIFwicGxheVwiXG5cbiAgbGV0IHBsYXlpbmcgPSBEb20uRXZlbnQubWFrZSBcInBsYXlpbmdcIlxuXG4gIGxldCBwb2ludGVyZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJlbnRlclwiXG5cbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJjYW5jZWxcIlxuXG4gIGxldCBwb2ludGVyZG93biA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmRvd25cIlxuXG4gIGxldCBwb2ludGVybGVhdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJsZWF2ZVwiXG5cbiAgbGV0IHBvaW50ZXJtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybW92ZVwiXG5cbiAgbGV0IHBvaW50ZXJvdXQgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdXRcIlxuXG4gIGxldCBwb2ludGVyb3ZlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm92ZXJcIlxuXG4gIGxldCBwb2ludGVydXAgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJ1cFwiXG5cbiAgbGV0IHJhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJhdGVjaGFuZ2VcIlxuXG4gIGxldCBzZWVrZWQgPSBEb20uRXZlbnQubWFrZSBcInNlZWtlZFwiXG5cbiAgbGV0IHNlZWtpbmcgPSBEb20uRXZlbnQubWFrZSBcInNlZWtpbmdcIlxuXG4gIGxldCBzdGFsbGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJzdGFsbGVkXCJcblxuICBsZXQgc3VzcGVuZCA9IERvbS5FdmVudC5tYWtlIFwic3VzcGVuZFwiXG5cbiAgbGV0IHZvbHVtZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwidm9sdW1lY2hhbmdlXCJcblxuICBsZXQgd2FpdGluZyA9IERvbS5FdmVudC5tYWtlIFwid2FpdGluZ1wiXG5cbiAgbGV0IG1ha2UgPSBEb20uRXZlbnQubWFrZVxuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSBEb20uZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IERvbS5yZW1vdmVFdmVudExpc3RlbmVyXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA9IERvbS5jcmVhdGVDdXN0b21FdmVudFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gY29sbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIG5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGh0bWxFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBwcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGlua0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Jvc3NvcmlnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtZXRhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHR0cEVxdWl2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY2hlbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBiYXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJvZHlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGZvcm1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBlbGVtZW50cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0Q2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbmN0eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfbWV0aG9kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1Ym1pdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXNldCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbnN1Ym1pdCA6ICgnc2VsZiB0LCBzdWJtaXRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0R3JvdXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGxhYmVsIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG9wdEdyb3VwRWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0U2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzZWxlY3RFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZEluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wdGlvbnMgOiBvcHRpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBhZGQgOiAjb3B0R3JvdXBFbGVtZW50IHQgLT4gI29wdEdyb3VwRWxlbWVudCB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW5wdXRFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmYXVsdENoZWNrZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGVja2VkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhMZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRleHRBcmVhRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29scyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJ1dHRvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxhYmVsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodG1sRm9yIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZmllbGRTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGVnZW5kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdUxpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG9MaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbGlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRpdkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcGFyYWdyYXBoRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkaW5nRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBxdW90ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcmVFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGJyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBockVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbW9kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0ZVRpbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhbmNob3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG93bmxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGltYWdlRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpc01hcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgbmF0dXJhbFdpZHRoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxIZWlnaHQgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29tcGxldGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhcmNoaXZlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlQmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlY2xhcmUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YW5kYnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBhcmFtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcmVhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9IcmVmIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWFwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYXJlYXMgOiBhcmVhRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBlbWJlZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNlbGxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjZWxsSW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYmJyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXhpcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xTcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgaGVhZGVycyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93U3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjb3BlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVJvd0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VjdGlvblJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2VsbHMgOiB0YWJsZUNlbGxFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0Q2VsbCA6IGludCAtPiB0YWJsZUNlbGxFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDZWxsIDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDb2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlU2VjdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNhcHRpb25FbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRCb2RpZXMgOiB0YWJsZVNlY3Rpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxQYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZnJhbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJ1bGVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdW1tYXJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3JlYXRlVEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUSGVhZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVURm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRGb290IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDYXB0aW9uIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRpbWVSYW5nZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZW5kXyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxudHlwZSBuZXR3b3JrU3RhdGUgPVxuICB8IE5FVFdPUktfRU1QVFlcbiAgfCBORVRXT1JLX0lETEVcbiAgfCBORVRXT1JLX0xPQURJTkdcbiAgfCBORVRXT1JLX05PX1NPVVJDRVxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEhBVkVfTk9USElOR1xuICB8IEhBVkVfTUVUQURBVEFcbiAgfCBIQVZFX0NVUlJFTlRfREFUQVxuICB8IEhBVkVfRlVUVVJFX0RBVEFcbiAgfCBIQVZFX0VOT1VHSF9EQVRBXG5cbigqIGh0dHA6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL3JlZl9hdl9kb20uYXNwICopXG4oKiBvbmx5IGZlYXR1cmVzIHN1cHBvcnRlZCBieSBhbGwgYnJvd3Nlci4gKElFOSspICopXG5jbGFzcyB0eXBlIG1lZGlhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FuUGxheVR5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGxvYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGxheSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhdXRvcGxheSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udHJvbHMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U3JjIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGltZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9vcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhZ3JvdXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG11dGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZSA6IG5ldHdvcmtTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdXNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXliYWNrUmF0ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcGxheWVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlbG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWthYmxlIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2luZyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdm9sdW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXl0aHJvdWdoIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kdXJhdGlvbmNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW1wdGllZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW5kZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZGRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZG1ldGFkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBhdXNlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25yYXRlY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVrZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN0YWxsZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN1c3BlbmQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnZvbHVtZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2FpdGluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhdWRpb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG5jbGFzcyB0eXBlIHZpZGVvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbnR5cGUgY29udGV4dCA9IGpzX3N0cmluZyB0XG5cbmxldCBfMmRfID0gSnMuc3RyaW5nIFwiMmRcIlxuXG50eXBlIGNhbnZhc1BhdHRlcm5cblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRvRGF0YVVSTCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlX2NvbXByZXNzaW9uIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgPSBvYmplY3RcbiAgbWV0aG9kIGNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNhdmUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzdG9yZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdsb2JhbEFscGhhIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVMaW5lYXJHcmFkaWVudCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhZGlhbEdyYWRpZW50IDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybiA6IGltYWdlRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21WaWRlbyA6IHZpZGVvRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGluZUNhcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUpvaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pdGVyTGltaXQgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0JsdXIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0NvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhclJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZWdpblBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VQYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vdmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcXVhZHJhdGljQ3VydmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZXppZXJDdXJ2ZVRvIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc1BvaW50SW5QYXRoIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ZvY3VzUmluZyA6ICNlbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEJhc2VsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsVGV4dF93aXRoV2lkdGggOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0X3dpdGhXaWR0aCA6XG4gICAganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1lYXN1cmVUZXh0IDoganNfc3RyaW5nIHQgLT4gdGV4dE1ldHJpY3MgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZSA6IGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2Vfd2l0aFNpemUgOlxuICAgIGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbCA6XG4gICAgICAgaW1hZ2VFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhc1dpdGhTaXplIDpcbiAgICBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbUNhbnZhcyA6XG4gICAgICAgY2FudmFzRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFZpZGVvIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhTaXplIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tVmlkZW8gOlxuICAgICAgIHZpZGVvRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVJbWFnZURhdGEgOiBpbnQgLT4gaW50IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgZ2V0SW1hZ2VEYXRhIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBwdXRJbWFnZURhdGEgOiBpbWFnZURhdGEgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzR3JhZGllbnQgPSBvYmplY3RcbiAgbWV0aG9kIGFkZENvbG9yU3RvcCA6IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCB0ZXh0TWV0cmljcyA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGltYWdlRGF0YSA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDogY2FudmFzUGl4ZWxBcnJheSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2FudmFzUGl4ZWxBcnJheSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leHRlcm5hbCBwaXhlbF9nZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9qc19nZXRcIlxuXG5leHRlcm5hbCBwaXhlbF9zZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbmNsYXNzIHR5cGUgcmFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGNvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kQ29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFN0YXJ0IDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBleHRyYWN0Q29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ29udGVudHMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1cnJvdW5kQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbigqKiBJbmZvcm1hdGlvbiBvbiBjdXJyZW50IHNlbGVjdGlvbiAqKVxuY2xhc3MgdHlwZSBzZWxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGFuY2hvck5vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9yT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNDb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZUNvdW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmFuZ2VBdCA6IGludCAtPiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4dGVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb2RpZnkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb1N0YXJ0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9FbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0QWxsQ2hpbGRyZW4gOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhZGRSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQWxsUmFuZ2VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyb21Eb2N1bWVudCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb250YWluc05vZGUgOiBEb20ubm9kZSB0IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZCA6IGhlYWRFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBib2R5IDogYm9keUVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6IGh0bWxFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbWFnZXMgOiBpbWFnZUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGV0cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGlua3MgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvcm1zIDogZm9ybUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9ycyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXNpZ25Nb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3cml0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleGVjQ29tbWFuZCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeU5hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYWN0aXZlRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaWRkZW4gOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbnR5cGUgaW50ZXJ2YWxfaWRcblxudHlwZSB0aW1lb3V0X2lkXG5cbnR5cGUgYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3RuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3J0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYXRobmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VhcmNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoYXNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3NpZ24gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWxvYWQgOiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgbG9jYXRpb25fb3JpZ2luIChsb2MgOiBsb2NhdGlvbiB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgbG9jIyMub3JpZ2luXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0IHByb3RvY29sID0gbG9jIyMucHJvdG9jb2wgaW5cbiAgICAgIGxldCBob3N0bmFtZSA9IGxvYyMjLmhvc3RuYW1lIGluXG4gICAgICBsZXQgcG9ydCA9IGxvYyMjLnBvcnQgaW5cbiAgICAgIGlmIHByb3RvY29sIyMubGVuZ3RoID0gMCAmJiBob3N0bmFtZSMjLmxlbmd0aCA9IDBcbiAgICAgIHRoZW4gSnMuc3RyaW5nIFwiXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IG9yaWdpbiA9IHByb3RvY29sIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiLy9cIikgaG9zdG5hbWUgaW5cbiAgICAgICAgaWYgcG9ydCMjLmxlbmd0aCA+IDAgdGhlbiBvcmlnaW4jI2NvbmNhdF8yIChKcy5zdHJpbmcgXCI6XCIpIGxvYyMjLnBvcnQgZWxzZSBvcmlnaW4pXG4gICAgKGZ1biBvIC0+IG8pXG5cbmNsYXNzIHR5cGUgaGlzdG9yeSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ28gOiBpbnQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiYWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcndhcmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcHVzaFN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZVN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHVuZG9NYW5hZ2VyID0gb2JqZWN0IGVuZFxuXG5jbGFzcyB0eXBlIG5hdmlnYXRvciA9IG9iamVjdFxuICBtZXRob2QgYXBwQ29kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcE5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcFZlcnNpb24gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZUVuYWJsZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbkxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF0Zm9ybSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmVuZG9yIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyQWdlbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4VG91Y2hQb2ludHMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyZWVuID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcHBsaWNhdGlvbkNhY2hlID0gb2JqZWN0XG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGRhdGUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3dhcENhY2hlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2hlY2tpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ubm91cGRhdGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZG93bmxvYWRpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udXBkYXRlcmVhZHkgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2FjaGVkIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ic29sZXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5jbGFzcyB0eXBlIF9VUkwgPSBvYmplY3RcbiAgbWV0aG9kIGNyZWF0ZU9iamVjdFVSTCA6ICNGaWxlLmJsb2IgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJldm9rZU9iamVjdFVSTCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgd2luZG93ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgZG9jdW1lbnQgOiBkb2N1bWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGljYXRpb25DYWNoZSA6IGFwcGxpY2F0aW9uQ2FjaGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpc3RvcnkgOiBoaXN0b3J5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1bmRvTWFuYWdlciA6IHVuZG9NYW5hZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXZpZ2F0b3IgOiBuYXZpZ2F0b3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFNlbGVjdGlvbiA6IHNlbGVjdGlvbiB0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEJ5IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Vzc2lvblN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYWxTdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvcCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcmFtZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3Blbl8gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gd2luZG93IHQgb3B0IG1ldGhcblxuICBtZXRob2QgYWxlcnQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29uZmlybSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHByb21wdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHByaW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludGVydmFsIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gaW50ZXJ2YWxfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckludGVydmFsIDogaW50ZXJ2YWxfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWVvdXQgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiB0aW1lb3V0X2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJUaW1lb3V0IDogdGltZW91dF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDpcbiAgICAobnVtYmVyX3QgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgbWV0aFxuXG4gIG1ldGhvZCBjYW5jZWxBbmltYXRpb25GcmFtZSA6IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JlZW4gOiBzY3JlZW4gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGUgOiAjZWxlbWVudCB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGVfcHNldWRvRWx0IDpcbiAgICAjZWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGF0b2IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGJ0b2EgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJlZm9yZXVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25yZXNpemUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vcmllbnRhdGlvbmNoYW5nZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnBvcHN0YXRlIDogKHdpbmRvdyB0LCBwb3BTdGF0ZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25oYXNoY2hhbmdlIDogKHdpbmRvdyB0LCBoYXNoQ2hhbmdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ubGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vZmZsaW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDogX1VSTCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGV2aWNlUGl4ZWxSYXRpbyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2luZG93IDogd2luZG93IHQgPSBKcy5VbnNhZmUuZ2xvYmFsXG5cbigqIFRoZSB0b3BsZXZlbCBvYmplY3QgKilcblxubGV0IGRvY3VtZW50ID0gd2luZG93IyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9leG4gaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJnZXRFbGVtZW50QnlJZF9leG46ICVTIG5vdCBmb3VuZFwiIGlkKSlcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfb3B0IGlkID0gSnMuT3B0LnRvX29wdGlvbiAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfY29lcmNlIGlkIGNvZXJjZSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgKGZ1biBlIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjZSBlKSlcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgZnJhbWVTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb2xzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vUmVzaXplIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlGcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFdpbmRvdyA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKioqKilcblxuKCpYWFggU2hvdWxkIHByb3ZpZGUgY3JlYXRpb24gZnVuY3Rpb25zIGEgbGEgbGFibGd0ay4uLiAqKVxuXG5sZXQgb3B0X2l0ZXIgeCBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgdiAtPiBmIHZcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVFbGVtZW50U3ludGF4ID0gcmVmIGBVbmtub3duXG5cbmxldCByZWMgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0ID1cbiAgaWYgUG9seS4oX3R5cGUgPSBOb25lKSAmJiBQb2x5LihuYW1lID0gTm9uZSlcbiAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpXG4gIGVsc2VcbiAgICBtYXRjaCAhY3JlYXRlRWxlbWVudFN5bnRheCB3aXRoXG4gICAgfCBgU3RhbmRhcmQgLT5cbiAgICAgICAgbGV0IHJlcyA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdCkgaW5cbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+IHJlcyMjLl90eXBlIDo9IHQpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPiByZXMjIy5uYW1lIDo9IG4pO1xuICAgICAgICByZXNcbiAgICB8IGBFeHRlbmRlZCAtPlxuICAgICAgICBsZXQgYSA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMiAoSnMuc3RyaW5nIFwiPFwiKSAoSnMuc3RyaW5nIGVsdCkpO1xuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgdHlwZT1cXFwiXCIpIChodG1sX2VzY2FwZSB0KSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiBuYW1lPVxcXCJcIikgKGh0bWxfZXNjYXBlIG4pIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaCAoSnMuc3RyaW5nIFwiPlwiKSk7XG4gICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgKGRvYyMjY3JlYXRlRWxlbWVudCAoYSMjam9pbiAoSnMuc3RyaW5nIFwiXCIpKSlcbiAgICB8IGBVbmtub3duIC0+XG4gICAgICAgIGNyZWF0ZUVsZW1lbnRTeW50YXggOj1cbiAgICAgICAgICBpZiB0cnlcbiAgICAgICAgICAgICAgIGxldCBlbCA6IGlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgICAgICAgICAgICAgIChkb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIFwiPGlucHV0IG5hbWU9XFxcInhcXFwiPlwiKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5lcXVhbHMgZWwjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIFwiaW5wdXRcIilcbiAgICAgICAgICAgICAgICYmIEpzLmVxdWFscyBlbCMjLm5hbWUgKEpzLnN0cmluZyBcInhcIilcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICB0aGVuIGBFeHRlbmRlZFxuICAgICAgICAgIGVsc2UgYFN0YW5kYXJkO1xuICAgICAgICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHRcblxubGV0IGNyZWF0ZUh0bWwgZG9jIDogaHRtbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHRtbFwiXG5cbmxldCBjcmVhdGVIZWFkIGRvYyA6IGhlYWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhlYWRcIlxuXG5sZXQgY3JlYXRlTGluayBkb2MgOiBsaW5rRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5rXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVNZXRhIGRvYyA6IG1ldGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFcIlxuXG5sZXQgY3JlYXRlQmFzZSBkb2MgOiBiYXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiYXNlXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVCb2R5IGRvYyA6IGJvZHlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJvZHlcIlxuXG5sZXQgY3JlYXRlRm9ybSBkb2MgOiBmb3JtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JtXCJcblxubGV0IGNyZWF0ZU9wdGdyb3VwIGRvYyA6IG9wdEdyb3VwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRncm91cFwiXG5cbmxldCBjcmVhdGVPcHRpb24gZG9jIDogb3B0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRpb25cIlxuXG5sZXQgY3JlYXRlU2VsZWN0ID9fdHlwZSA/bmFtZSBkb2MgOiBzZWxlY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInNlbGVjdFwiXG5cbmxldCBjcmVhdGVJbnB1dCA/X3R5cGUgP25hbWUgZG9jIDogaW5wdXRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImlucHV0XCJcblxubGV0IGNyZWF0ZVRleHRhcmVhID9fdHlwZSA/bmFtZSBkb2MgOiB0ZXh0QXJlYUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwidGV4dGFyZWFcIlxuXG5sZXQgY3JlYXRlQnV0dG9uID9fdHlwZSA/bmFtZSBkb2MgOiBidXR0b25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImJ1dHRvblwiXG5cbmxldCBjcmVhdGVMYWJlbCBkb2MgOiBsYWJlbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGFiZWxcIlxuXG5sZXQgY3JlYXRlRmllbGRzZXQgZG9jIDogZmllbGRTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpZWxkc2V0XCJcblxubGV0IGNyZWF0ZUxlZ2VuZCBkb2MgOiBsZWdlbmRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxlZ2VuZFwiXG5cbmxldCBjcmVhdGVVbCBkb2MgOiB1TGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidWxcIlxuXG5sZXQgY3JlYXRlT2wgZG9jIDogb0xpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9sXCJcblxubGV0IGNyZWF0ZURsIGRvYyA6IGRMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkbFwiXG5cbmxldCBjcmVhdGVMaSBkb2MgOiBsaUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlcIlxuXG5sZXQgY3JlYXRlRGl2IGRvYyA6IGRpdkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGl2XCJcblxubGV0IGNyZWF0ZUVtYmVkIGRvYyA6IGVtYmVkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbWJlZFwiXG5cbmxldCBjcmVhdGVQIGRvYyA6IHBhcmFncmFwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicFwiXG5cbmxldCBjcmVhdGVIMSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMVwiXG5cbmxldCBjcmVhdGVIMiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMlwiXG5cbmxldCBjcmVhdGVIMyBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoM1wiXG5cbmxldCBjcmVhdGVINCBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNFwiXG5cbmxldCBjcmVhdGVINSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNVwiXG5cbmxldCBjcmVhdGVINiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNlwiXG5cbmxldCBjcmVhdGVRIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJxXCJcblxubGV0IGNyZWF0ZUJsb2NrcXVvdGUgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJsb2NrcXVvdGVcIlxuXG5sZXQgY3JlYXRlUHJlIGRvYyA6IHByZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicHJlXCJcblxubGV0IGNyZWF0ZUJyIGRvYyA6IGJyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiclwiXG5cbmxldCBjcmVhdGVIciBkb2MgOiBockVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHJcIlxuXG5sZXQgY3JlYXRlSW5zIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW5zXCJcblxubGV0IGNyZWF0ZURlbCBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlbFwiXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFuY2hvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVJbWcgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltZ1wiXG5cbmxldCBjcmVhdGVPYmplY3QgZG9jIDogb2JqZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvYmplY3RcIlxuXG5sZXQgY3JlYXRlUGFyYW0gZG9jIDogcGFyYW1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhcmFtXCJcblxubGV0IGNyZWF0ZU1hcCBkb2MgOiBtYXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hcFwiXG5cbmxldCBjcmVhdGVBcmVhIGRvYyA6IGFyZWFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFyZWFcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVRhYmxlIGRvYyA6IHRhYmxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0YWJsZVwiXG5cbmxldCBjcmVhdGVDYXB0aW9uIGRvYyA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FwdGlvblwiXG5cbmxldCBjcmVhdGVDb2wgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbFwiXG5cbmxldCBjcmVhdGVDb2xncm91cCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sZ3JvdXBcIlxuXG5sZXQgY3JlYXRlVGhlYWQgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aGVhZFwiXG5cbmxldCBjcmVhdGVUZm9vdCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRmb290XCJcblxubGV0IGNyZWF0ZVRib2R5IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGJvZHlcIlxuXG5sZXQgY3JlYXRlVHIgZG9jIDogdGFibGVSb3dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyXCJcblxubGV0IGNyZWF0ZVRoIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhcIlxuXG5sZXQgY3JlYXRlVGQgZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZFwiXG5cbmxldCBjcmVhdGVTdWIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdWJcIlxuXG5sZXQgY3JlYXRlU3VwIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3VwXCJcblxubGV0IGNyZWF0ZVNwYW4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzcGFuXCJcblxubGV0IGNyZWF0ZVR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidHRcIlxuXG5sZXQgY3JlYXRlSSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImlcIlxuXG5sZXQgY3JlYXRlQiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJcIlxuXG5sZXQgY3JlYXRlQmlnIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYmlnXCJcblxubGV0IGNyZWF0ZVNtYWxsIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic21hbGxcIlxuXG5sZXQgY3JlYXRlRW0gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJlbVwiXG5cbmxldCBjcmVhdGVTdHJvbmcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdHJvbmdcIlxuXG5sZXQgY3JlYXRlQ2l0ZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNpdGVcIlxuXG5sZXQgY3JlYXRlRGZuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGZuXCJcblxubGV0IGNyZWF0ZUNvZGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjb2RlXCJcblxubGV0IGNyZWF0ZVNhbXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzYW1wXCJcblxubGV0IGNyZWF0ZUtiZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImtiZFwiXG5cbmxldCBjcmVhdGVWYXIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ2YXJcIlxuXG5sZXQgY3JlYXRlQWJiciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFiYnJcIlxuXG5sZXQgY3JlYXRlRGQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZFwiXG5cbmxldCBjcmVhdGVEdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImR0XCJcblxubGV0IGNyZWF0ZU5vc2NyaXB0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwibm9zY3JpcHRcIlxuXG5sZXQgY3JlYXRlQWRkcmVzcyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFkZHJlc3NcIlxuXG5sZXQgY3JlYXRlRnJhbWVzZXQgZG9jIDogZnJhbWVTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lc2V0XCJcblxubGV0IGNyZWF0ZUZyYW1lIGRvYyA6IGZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZVwiXG5cbmxldCBjcmVhdGVJZnJhbWUgZG9jIDogaUZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpZnJhbWVcIlxuXG5sZXQgY3JlYXRlQXVkaW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImF1ZGlvXCJcblxubGV0IGNyZWF0ZVZpZGVvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWRlb1wiXG5cbmV4Y2VwdGlvbiBDYW52YXNfbm90X2F2YWlsYWJsZVxuXG5sZXQgY3JlYXRlQ2FudmFzIGRvYyA6IGNhbnZhc0VsZW1lbnQgdCA9XG4gIGxldCBjID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYW52YXNcIiBpblxuICBpZiBub3QgKE9wdC50ZXN0IGMjIy5nZXRDb250ZXh0KSB0aGVuIHJhaXNlIENhbnZhc19ub3RfYXZhaWxhYmxlO1xuICBjXG5cbmxldCBodG1sX2VsZW1lbnQgOiBodG1sRWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSFRNTEVsZW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IDogI0RvbS5ub2RlIEpzLnQgLT4gZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIGh0bWxfZWxlbWVudCkpXG4gICAgdGhlblxuICAgICAgKCogaWUgPCA5IGRvZXMgbm90IGhhdmUgSFRNTEVsZW1lbnQ6IHdlIGhhdmUgdG8gY2hlYXQgdG8gY2hlY2tcbiAgICAgICAgIHRoYXQgc29tZXRoaW5nIGlzIGFuIGh0bWwgZWxlbWVudCAqKVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmlubmVySFRNTCkpXG4gICAgICB0aGVuIEpzLm51bGxcbiAgICAgIGVsc2UgSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2VcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBKcy5pbnN0YW5jZW9mIGUgaHRtbF9lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIHRhZyAoZSA6ICNlbGVtZW50IHQpID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgPSB1bnNhZmVDb2VyY2UgXCJhXCIgZVxuXG4gIGxldCBhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJhcmVhXCIgZVxuXG4gIGxldCBiYXNlIGUgPSB1bnNhZmVDb2VyY2UgXCJiYXNlXCIgZVxuXG4gIGxldCBibG9ja3F1b3RlIGUgPSB1bnNhZmVDb2VyY2UgXCJibG9ja3F1b3RlXCIgZVxuXG4gIGxldCBib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJib2R5XCIgZVxuXG4gIGxldCBiciBlID0gdW5zYWZlQ29lcmNlIFwiYnJcIiBlXG5cbiAgbGV0IGJ1dHRvbiBlID0gdW5zYWZlQ29lcmNlIFwiYnV0dG9uXCIgZVxuXG4gIGxldCBjYW52YXMgZSA9IHVuc2FmZUNvZXJjZSBcImNhbnZhc1wiIGVcblxuICBsZXQgY2FwdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwiY2FwdGlvblwiIGVcblxuICBsZXQgY29sIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xcIiBlXG5cbiAgbGV0IGNvbGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xncm91cFwiIGVcblxuICBsZXQgZGVsIGUgPSB1bnNhZmVDb2VyY2UgXCJkZWxcIiBlXG5cbiAgbGV0IGRpdiBlID0gdW5zYWZlQ29lcmNlIFwiZGl2XCIgZVxuXG4gIGxldCBkbCBlID0gdW5zYWZlQ29lcmNlIFwiZGxcIiBlXG5cbiAgbGV0IGZpZWxkc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmaWVsZHNldFwiIGVcblxuICBsZXQgZW1iZWQgZSA9IHVuc2FmZUNvZXJjZSBcImVtYmVkXCIgZVxuXG4gIGxldCBmb3JtIGUgPSB1bnNhZmVDb2VyY2UgXCJmb3JtXCIgZVxuXG4gIGxldCBmcmFtZXNldCBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVzZXRcIiBlXG5cbiAgbGV0IGZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZVwiIGVcblxuICBsZXQgaDEgZSA9IHVuc2FmZUNvZXJjZSBcImgxXCIgZVxuXG4gIGxldCBoMiBlID0gdW5zYWZlQ29lcmNlIFwiaDJcIiBlXG5cbiAgbGV0IGgzIGUgPSB1bnNhZmVDb2VyY2UgXCJoM1wiIGVcblxuICBsZXQgaDQgZSA9IHVuc2FmZUNvZXJjZSBcImg0XCIgZVxuXG4gIGxldCBoNSBlID0gdW5zYWZlQ29lcmNlIFwiaDVcIiBlXG5cbiAgbGV0IGg2IGUgPSB1bnNhZmVDb2VyY2UgXCJoNlwiIGVcblxuICBsZXQgaGVhZCBlID0gdW5zYWZlQ29lcmNlIFwiaGVhZFwiIGVcblxuICBsZXQgaHIgZSA9IHVuc2FmZUNvZXJjZSBcImhyXCIgZVxuXG4gIGxldCBodG1sIGUgPSB1bnNhZmVDb2VyY2UgXCJodG1sXCIgZVxuXG4gIGxldCBpZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImlmcmFtZVwiIGVcblxuICBsZXQgaW1nIGUgPSB1bnNhZmVDb2VyY2UgXCJpbWdcIiBlXG5cbiAgbGV0IGlucHV0IGUgPSB1bnNhZmVDb2VyY2UgXCJpbnB1dFwiIGVcblxuICBsZXQgaW5zIGUgPSB1bnNhZmVDb2VyY2UgXCJpbnNcIiBlXG5cbiAgbGV0IGxhYmVsIGUgPSB1bnNhZmVDb2VyY2UgXCJsYWJlbFwiIGVcblxuICBsZXQgbGVnZW5kIGUgPSB1bnNhZmVDb2VyY2UgXCJsZWdlbmRcIiBlXG5cbiAgbGV0IGxpIGUgPSB1bnNhZmVDb2VyY2UgXCJsaVwiIGVcblxuICBsZXQgbGluayBlID0gdW5zYWZlQ29lcmNlIFwibGlua1wiIGVcblxuICBsZXQgbWFwIGUgPSB1bnNhZmVDb2VyY2UgXCJtYXBcIiBlXG5cbiAgbGV0IG1ldGEgZSA9IHVuc2FmZUNvZXJjZSBcIm1ldGFcIiBlXG5cbiAgbGV0IF9vYmplY3QgZSA9IHVuc2FmZUNvZXJjZSBcIm9iamVjdFwiIGVcblxuICBsZXQgb2wgZSA9IHVuc2FmZUNvZXJjZSBcIm9sXCIgZVxuXG4gIGxldCBvcHRncm91cCBlID0gdW5zYWZlQ29lcmNlIFwib3B0Z3JvdXBcIiBlXG5cbiAgbGV0IG9wdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwib3B0aW9uXCIgZVxuXG4gIGxldCBwIGUgPSB1bnNhZmVDb2VyY2UgXCJwXCIgZVxuXG4gIGxldCBwYXJhbSBlID0gdW5zYWZlQ29lcmNlIFwicGFyYW1cIiBlXG5cbiAgbGV0IHByZSBlID0gdW5zYWZlQ29lcmNlIFwicHJlXCIgZVxuXG4gIGxldCBxIGUgPSB1bnNhZmVDb2VyY2UgXCJxXCIgZVxuXG4gIGxldCBzY3JpcHQgZSA9IHVuc2FmZUNvZXJjZSBcInNjcmlwdFwiIGVcblxuICBsZXQgc2VsZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJzZWxlY3RcIiBlXG5cbiAgbGV0IHN0eWxlIGUgPSB1bnNhZmVDb2VyY2UgXCJzdHlsZVwiIGVcblxuICBsZXQgdGFibGUgZSA9IHVuc2FmZUNvZXJjZSBcInRhYmxlXCIgZVxuXG4gIGxldCB0Ym9keSBlID0gdW5zYWZlQ29lcmNlIFwidGJvZHlcIiBlXG5cbiAgbGV0IHRkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZFwiIGVcblxuICBsZXQgdGV4dGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcInRleHRhcmVhXCIgZVxuXG4gIGxldCB0Zm9vdCBlID0gdW5zYWZlQ29lcmNlIFwidGZvb3RcIiBlXG5cbiAgbGV0IHRoIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aFwiIGVcblxuICBsZXQgdGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcInRoZWFkXCIgZVxuXG4gIGxldCB0aXRsZSBlID0gdW5zYWZlQ29lcmNlIFwidGl0bGVcIiBlXG5cbiAgbGV0IHRyIGUgPSB1bnNhZmVDb2VyY2UgXCJ0clwiIGVcblxuICBsZXQgdWwgZSA9IHVuc2FmZUNvZXJjZSBcInVsXCIgZVxuXG4gIGxldCBhdWRpbyBlID0gdW5zYWZlQ29lcmNlIFwiYXVkaW9cIiBlXG5cbiAgbGV0IHZpZGVvIGUgPSB1bnNhZmVDb2VyY2UgXCJ2aWRlb1wiIGVcblxuICBsZXQgdW5zYWZlQ29lcmNlRXZlbnQgY29uc3RyIChldiA6ICNldmVudCB0KSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKGRlZiBjb25zdHIpICYmIEpzLmluc3RhbmNlb2YgZXYgY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGV2KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBtb3VzZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZUV2ZW50IGV2XG5cbiAgbGV0IGtleWJvYXJkRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX0tleWJvYXJkRXZlbnQgZXZcblxuICBsZXQgd2hlZWxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2hlZWxFdmVudCBldlxuXG4gIGxldCBtb3VzZVNjcm9sbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZVNjcm9sbEV2ZW50IGV2XG5cbiAgbGV0IHBvcFN0YXRlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BvcFN0YXRlRXZlbnQgZXZcblxuICBsZXQgbWVzc2FnZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9NZXNzYWdlRXZlbnQgZXZcbmVuZFxuXG4oKioqKilcblxubGV0IGV2ZW50VGFyZ2V0ID0gRG9tLmV2ZW50VGFyZ2V0XG5cbmxldCBldmVudFJlbGF0ZWRUYXJnZXQgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5nZXQgZSMjLnJlbGF0ZWRUYXJnZXQgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggSnMudG9fc3RyaW5nIGUjIy5fdHlwZSB3aXRoXG4gICAgICB8IFwibW91c2VvdmVyXCIgLT4gT3B0ZGVmLmdldCBlIyMuZnJvbUVsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IFwibW91c2VvdXRcIiAtPiBPcHRkZWYuZ2V0IGUjIy50b0VsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IF8gLT4gSnMubnVsbClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCBlIyMuY2xpZW50WCArIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnRcbiAgLCBlIyMuY2xpZW50WSArIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wIClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbiAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMucGFnZVhcbiAgICAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSlcbiAgICAoZnVuIHggLT4gT3B0ZGVmLmNhc2UgZSMjLnBhZ2VZIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKSAoZnVuIHkgLT4geCwgeSkpXG5cbmxldCBlbGVtZW50Q2xpZW50UG9zaXRpb24gKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCByID0gZSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLmxlZnQpIC0gYm9keSMjLmNsaWVudExlZnQgLSBodG1sIyMuY2xpZW50TGVmdFxuICAsIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMudG9wKSAtIGJvZHkjIy5jbGllbnRUb3AgLSBodG1sIyMuY2xpZW50VG9wIClcblxubGV0IGdldERvY3VtZW50U2Nyb2xsICgpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0LCBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcFxuXG5sZXQgYnV0dG9uUHJlc3NlZCAoZXYgOiAjbW91c2VFdmVudCBKcy50KSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgZXYjIy53aGljaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIGV2IyMuYnV0dG9uIHdpdGhcbiAgICAgIHwgMSAtPiBMZWZ0X2J1dHRvblxuICAgICAgfCAyIC0+IFJpZ2h0X2J1dHRvblxuICAgICAgfCA0IC0+IE1pZGRsZV9idXR0b25cbiAgICAgIHwgXyAtPiBOb19idXR0b24pXG4gICAgKGZ1biB4IC0+IHgpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgID9jYXB0dXJlXG4gICAgP29uY2VcbiAgICA/cGFzc2l2ZVxuICAgIGVcbiAgICBFdmVudC53aGVlbFxuICAgIChoYW5kbGVyIChmdW4gKGUgOiBtb3VzZXdoZWVsRXZlbnQgdCkgLT5cbiAgICAgICAgIGxldCBkeCA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWCAoZnVuICgpIC0+IDApIC8gNDAgaW5cbiAgICAgICAgIGxldCBkeSA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWSAoZnVuICgpIC0+IGUjIy53aGVlbERlbHRhKSAvIDQwIGluXG4gICAgICAgICBoIChlIDo+IG1vdXNlRXZlbnQgdCkgfmR4IH5keSkpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lciBlIGggY2FwdCA9XG4gIGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgfmNhcHR1cmU6Y2FwdCBlIGhcblxuKCoqKioqKVxuXG5tb2R1bGUgS2V5Ym9hcmRfY29kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVW5pZGVudGlmaWVkXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBLZXlBXG4gICAgfCBLZXlCXG4gICAgfCBLZXlDXG4gICAgfCBLZXlEXG4gICAgfCBLZXlFXG4gICAgfCBLZXlGXG4gICAgfCBLZXlHXG4gICAgfCBLZXlIXG4gICAgfCBLZXlJXG4gICAgfCBLZXlKXG4gICAgfCBLZXlLXG4gICAgfCBLZXlMXG4gICAgfCBLZXlNXG4gICAgfCBLZXlOXG4gICAgfCBLZXlPXG4gICAgfCBLZXlQXG4gICAgfCBLZXlRXG4gICAgfCBLZXlSXG4gICAgfCBLZXlTXG4gICAgfCBLZXlUXG4gICAgfCBLZXlVXG4gICAgfCBLZXlWXG4gICAgfCBLZXlXXG4gICAgfCBLZXlYXG4gICAgfCBLZXlZXG4gICAgfCBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBEaWdpdDBcbiAgICB8IERpZ2l0MVxuICAgIHwgRGlnaXQyXG4gICAgfCBEaWdpdDNcbiAgICB8IERpZ2l0NFxuICAgIHwgRGlnaXQ1XG4gICAgfCBEaWdpdDZcbiAgICB8IERpZ2l0N1xuICAgIHwgRGlnaXQ4XG4gICAgfCBEaWdpdDlcbiAgICB8IE1pbnVzXG4gICAgfCBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFRhYlxuICAgIHwgRW50ZXJcbiAgICB8IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgRXNjYXBlXG4gICAgfCBCYWNrc3BhY2VcbiAgICB8IEluc2VydFxuICAgIHwgRGVsZXRlXG4gICAgfCBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBCcmFja2V0TGVmdFxuICAgIHwgQnJhY2tldFJpZ2h0XG4gICAgfCBTZW1pY29sb25cbiAgICB8IFF1b3RlXG4gICAgfCBCYWNrcXVvdGVcbiAgICB8IEJhY2tzbGFzaFxuICAgIHwgQ29tbWFcbiAgICB8IFBlcmlvZFxuICAgIHwgU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBGMVxuICAgIHwgRjJcbiAgICB8IEYzXG4gICAgfCBGNFxuICAgIHwgRjVcbiAgICB8IEY2XG4gICAgfCBGN1xuICAgIHwgRjhcbiAgICB8IEY5XG4gICAgfCBGMTBcbiAgICB8IEYxMVxuICAgIHwgRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IE51bXBhZDBcbiAgICB8IE51bXBhZDFcbiAgICB8IE51bXBhZDJcbiAgICB8IE51bXBhZDNcbiAgICB8IE51bXBhZDRcbiAgICB8IE51bXBhZDVcbiAgICB8IE51bXBhZDZcbiAgICB8IE51bXBhZDdcbiAgICB8IE51bXBhZDhcbiAgICB8IE51bXBhZDlcbiAgICB8IE51bXBhZE11bHRpcGx5XG4gICAgfCBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgTnVtcGFkQWRkXG4gICAgfCBOdW1wYWREZWNpbWFsXG4gICAgfCBOdW1wYWRFcXVhbFxuICAgIHwgTnVtcGFkRW50ZXJcbiAgICB8IE51bXBhZERpdmlkZVxuICAgIHwgTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IENvbnRyb2xMZWZ0XG4gICAgfCBDb250cm9sUmlnaHRcbiAgICB8IE1ldGFMZWZ0XG4gICAgfCBNZXRhUmlnaHRcbiAgICB8IFNoaWZ0TGVmdFxuICAgIHwgU2hpZnRSaWdodFxuICAgIHwgQWx0TGVmdFxuICAgIHwgQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBBcnJvd0xlZnRcbiAgICB8IEFycm93UmlnaHRcbiAgICB8IEFycm93VXBcbiAgICB8IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFBhZ2VVcFxuICAgIHwgUGFnZURvd25cbiAgICB8IEhvbWVcbiAgICB8IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBWb2x1bWVNdXRlXG4gICAgfCBWb2x1bWVEb3duXG4gICAgfCBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBNZWRpYVBsYXlQYXVzZVxuICAgIHwgTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBDb250ZXh0TWVudVxuICAgIHwgQnJvd3NlclNlYXJjaFxuICAgIHwgQnJvd3NlckhvbWVcbiAgICB8IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBCcm93c2VyU3RvcFxuICAgIHwgQnJvd3NlckZvcndhcmRcbiAgICB8IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgT1NMZWZ0XG4gICAgfCBPU1JpZ2h0XG4gICAgfCBTY3JvbGxMb2NrXG4gICAgfCBQcmludFNjcmVlblxuICAgIHwgSW50bEJhY2tzbGFzaFxuICAgIHwgSW50bFllblxuICAgIHwgUGF1c2VcblxuICBsZXQgdHJ5X2NvZGUgdiA9XG4gICAgbWF0Y2ggSnMudG9fc3RyaW5nIHYgd2l0aFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgXCJLZXlBXCIgLT4gS2V5QVxuICAgIHwgXCJLZXlCXCIgLT4gS2V5QlxuICAgIHwgXCJLZXlDXCIgLT4gS2V5Q1xuICAgIHwgXCJLZXlEXCIgLT4gS2V5RFxuICAgIHwgXCJLZXlFXCIgLT4gS2V5RVxuICAgIHwgXCJLZXlGXCIgLT4gS2V5RlxuICAgIHwgXCJLZXlHXCIgLT4gS2V5R1xuICAgIHwgXCJLZXlIXCIgLT4gS2V5SFxuICAgIHwgXCJLZXlJXCIgLT4gS2V5SVxuICAgIHwgXCJLZXlKXCIgLT4gS2V5SlxuICAgIHwgXCJLZXlLXCIgLT4gS2V5S1xuICAgIHwgXCJLZXlMXCIgLT4gS2V5TFxuICAgIHwgXCJLZXlNXCIgLT4gS2V5TVxuICAgIHwgXCJLZXlOXCIgLT4gS2V5TlxuICAgIHwgXCJLZXlPXCIgLT4gS2V5T1xuICAgIHwgXCJLZXlQXCIgLT4gS2V5UFxuICAgIHwgXCJLZXlRXCIgLT4gS2V5UVxuICAgIHwgXCJLZXlSXCIgLT4gS2V5UlxuICAgIHwgXCJLZXlTXCIgLT4gS2V5U1xuICAgIHwgXCJLZXlUXCIgLT4gS2V5VFxuICAgIHwgXCJLZXlVXCIgLT4gS2V5VVxuICAgIHwgXCJLZXlWXCIgLT4gS2V5VlxuICAgIHwgXCJLZXlXXCIgLT4gS2V5V1xuICAgIHwgXCJLZXlYXCIgLT4gS2V5WFxuICAgIHwgXCJLZXlZXCIgLT4gS2V5WVxuICAgIHwgXCJLZXlaXCIgLT4gS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgXCJEaWdpdDBcIiAtPiBEaWdpdDBcbiAgICB8IFwiRGlnaXQxXCIgLT4gRGlnaXQxXG4gICAgfCBcIkRpZ2l0MlwiIC0+IERpZ2l0MlxuICAgIHwgXCJEaWdpdDNcIiAtPiBEaWdpdDNcbiAgICB8IFwiRGlnaXQ0XCIgLT4gRGlnaXQ0XG4gICAgfCBcIkRpZ2l0NVwiIC0+IERpZ2l0NVxuICAgIHwgXCJEaWdpdDZcIiAtPiBEaWdpdDZcbiAgICB8IFwiRGlnaXQ3XCIgLT4gRGlnaXQ3XG4gICAgfCBcIkRpZ2l0OFwiIC0+IERpZ2l0OFxuICAgIHwgXCJEaWdpdDlcIiAtPiBEaWdpdDlcbiAgICB8IFwiTWludXNcIiAtPiBNaW51c1xuICAgIHwgXCJFcXVhbFwiIC0+IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgXCJUYWJcIiAtPiBUYWJcbiAgICB8IFwiRW50ZXJcIiAtPiBFbnRlclxuICAgIHwgXCJTcGFjZVwiIC0+IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgXCJFc2NhcGVcIiAtPiBFc2NhcGVcbiAgICB8IFwiQmFja3NwYWNlXCIgLT4gQmFja3NwYWNlXG4gICAgfCBcIkluc2VydFwiIC0+IEluc2VydFxuICAgIHwgXCJEZWxldGVcIiAtPiBEZWxldGVcbiAgICB8IFwiQ2Fwc0xvY2tcIiAtPiBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBcIkJyYWNrZXRMZWZ0XCIgLT4gQnJhY2tldExlZnRcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCBcIlNlbWljb2xvblwiIC0+IFNlbWljb2xvblxuICAgIHwgXCJRdW90ZVwiIC0+IFF1b3RlXG4gICAgfCBcIkJhY2txdW90ZVwiIC0+IEJhY2txdW90ZVxuICAgIHwgXCJCYWNrc2xhc2hcIiAtPiBCYWNrc2xhc2hcbiAgICB8IFwiQ29tbWFcIiAtPiBDb21tYVxuICAgIHwgXCJQZXJpb2RcIiAtPiBQZXJpb2RcbiAgICB8IFwiU2xhc2hcIiAtPiBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IFwiRjFcIiAtPiBGMVxuICAgIHwgXCJGMlwiIC0+IEYyXG4gICAgfCBcIkYzXCIgLT4gRjNcbiAgICB8IFwiRjRcIiAtPiBGNFxuICAgIHwgXCJGNVwiIC0+IEY1XG4gICAgfCBcIkY2XCIgLT4gRjZcbiAgICB8IFwiRjdcIiAtPiBGN1xuICAgIHwgXCJGOFwiIC0+IEY4XG4gICAgfCBcIkY5XCIgLT4gRjlcbiAgICB8IFwiRjEwXCIgLT4gRjEwXG4gICAgfCBcIkYxMVwiIC0+IEYxMVxuICAgIHwgXCJGMTJcIiAtPiBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgXCJOdW1wYWQwXCIgLT4gTnVtcGFkMFxuICAgIHwgXCJOdW1wYWQxXCIgLT4gTnVtcGFkMVxuICAgIHwgXCJOdW1wYWQyXCIgLT4gTnVtcGFkMlxuICAgIHwgXCJOdW1wYWQzXCIgLT4gTnVtcGFkM1xuICAgIHwgXCJOdW1wYWQ0XCIgLT4gTnVtcGFkNFxuICAgIHwgXCJOdW1wYWQ1XCIgLT4gTnVtcGFkNVxuICAgIHwgXCJOdW1wYWQ2XCIgLT4gTnVtcGFkNlxuICAgIHwgXCJOdW1wYWQ3XCIgLT4gTnVtcGFkN1xuICAgIHwgXCJOdW1wYWQ4XCIgLT4gTnVtcGFkOFxuICAgIHwgXCJOdW1wYWQ5XCIgLT4gTnVtcGFkOVxuICAgIHwgXCJOdW1wYWRNdWx0aXBseVwiIC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCBcIk51bXBhZFN1YnRyYWN0XCIgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IFwiTnVtcGFkQWRkXCIgLT4gTnVtcGFkQWRkXG4gICAgfCBcIk51bXBhZERlY2ltYWxcIiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCBcIk51bXBhZEVxdWFsXCIgLT4gTnVtcGFkRXF1YWxcbiAgICB8IFwiTnVtcGFkRW50ZXJcIiAtPiBOdW1wYWRFbnRlclxuICAgIHwgXCJOdW1wYWREaXZpZGVcIiAtPiBOdW1wYWREaXZpZGVcbiAgICB8IFwiTnVtTG9ja1wiIC0+IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBcIkNvbnRyb2xMZWZ0XCIgLT4gQ29udHJvbExlZnRcbiAgICB8IFwiQ29udHJvbFJpZ2h0XCIgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCBcIk1ldGFMZWZ0XCIgLT4gTWV0YUxlZnRcbiAgICB8IFwiTWV0YVJpZ2h0XCIgLT4gTWV0YVJpZ2h0XG4gICAgfCBcIlNoaWZ0TGVmdFwiIC0+IFNoaWZ0TGVmdFxuICAgIHwgXCJTaGlmdFJpZ2h0XCIgLT4gU2hpZnRSaWdodFxuICAgIHwgXCJBbHRMZWZ0XCIgLT4gQWx0TGVmdFxuICAgIHwgXCJBbHRSaWdodFwiIC0+IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgXCJBcnJvd0xlZnRcIiAtPiBBcnJvd0xlZnRcbiAgICB8IFwiQXJyb3dSaWdodFwiIC0+IEFycm93UmlnaHRcbiAgICB8IFwiQXJyb3dVcFwiIC0+IEFycm93VXBcbiAgICB8IFwiQXJyb3dEb3duXCIgLT4gQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgXCJQYWdlVXBcIiAtPiBQYWdlVXBcbiAgICB8IFwiUGFnZURvd25cIiAtPiBQYWdlRG93blxuICAgIHwgXCJIb21lXCIgLT4gSG9tZVxuICAgIHwgXCJFbmRcIiAtPiBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgXCJWb2x1bWVNdXRlXCIgLT4gVm9sdW1lTXV0ZVxuICAgIHwgXCJWb2x1bWVEb3duXCIgLT4gVm9sdW1lRG93blxuICAgIHwgXCJWb2x1bWVVcFwiIC0+IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IFwiTWVkaWFUcmFja1ByZXZpb3VzXCIgLT4gTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBcIk1lZGlhVHJhY2tOZXh0XCIgLT4gTWVkaWFUcmFja05leHRcbiAgICB8IFwiTWVkaWFQbGF5UGF1c2VcIiAtPiBNZWRpYVBsYXlQYXVzZVxuICAgIHwgXCJNZWRpYVN0b3BcIiAtPiBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IFwiQ29udGV4dE1lbnVcIiAtPiBDb250ZXh0TWVudVxuICAgIHwgXCJCcm93c2VyU2VhcmNoXCIgLT4gQnJvd3NlclNlYXJjaFxuICAgIHwgXCJCcm93c2VySG9tZVwiIC0+IEJyb3dzZXJIb21lXG4gICAgfCBcIkJyb3dzZXJGYXZvcml0ZXNcIiAtPiBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBcIkJyb3dzZXJSZWZyZXNoXCIgLT4gQnJvd3NlclJlZnJlc2hcbiAgICB8IFwiQnJvd3NlclN0b3BcIiAtPiBCcm93c2VyU3RvcFxuICAgIHwgXCJCcm93c2VyRm9yd2FyZFwiIC0+IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBcIkJyb3dzZXJCYWNrXCIgLT4gQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBcIk9TTGVmdFwiIC0+IE9TTGVmdFxuICAgIHwgXCJPU1JpZ2h0XCIgLT4gT1NSaWdodFxuICAgIHwgXCJTY3JvbGxMb2NrXCIgLT4gU2Nyb2xsTG9ja1xuICAgIHwgXCJQcmludFNjcmVlblwiIC0+IFByaW50U2NyZWVuXG4gICAgfCBcIkludGxCYWNrc2xhc2hcIiAtPiBJbnRsQmFja3NsYXNoXG4gICAgfCBcIkludGxZZW5cIiAtPiBJbnRsWWVuXG4gICAgfCBcIlBhdXNlXCIgLT4gUGF1c2VcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9sZWZ0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0TGVmdFxuICAgIHwgMTcgLT4gQ29udHJvbExlZnRcbiAgICB8IDE4IC0+IEFsdExlZnRcbiAgICB8IDkxIC0+IE1ldGFMZWZ0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRSaWdodFxuICAgIHwgMTcgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCAxOCAtPiBBbHRSaWdodFxuICAgIHwgOTEgLT4gTWV0YVJpZ2h0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbnVtcGFkID0gZnVuY3Rpb25cbiAgICB8IDQ2IC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDQ1IC0+IE51bXBhZDBcbiAgICB8IDM1IC0+IE51bXBhZDFcbiAgICB8IDQwIC0+IE51bXBhZDJcbiAgICB8IDM0IC0+IE51bXBhZDNcbiAgICB8IDM3IC0+IE51bXBhZDRcbiAgICB8IDEyIC0+IE51bXBhZDVcbiAgICB8IDM5IC0+IE51bXBhZDZcbiAgICB8IDM2IC0+IE51bXBhZDdcbiAgICB8IDM4IC0+IE51bXBhZDhcbiAgICB8IDMzIC0+IE51bXBhZDlcbiAgICB8IDEzIC0+IE51bXBhZEVudGVyXG4gICAgfCAxMTEgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCAxMDcgLT4gTnVtcGFkQWRkXG4gICAgfCAxMDkgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IDEwNiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgMTEwIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDk2IC0+IE51bXBhZDBcbiAgICB8IDk3IC0+IE51bXBhZDFcbiAgICB8IDk4IC0+IE51bXBhZDJcbiAgICB8IDk5IC0+IE51bXBhZDNcbiAgICB8IDEwMCAtPiBOdW1wYWQ0XG4gICAgfCAxMDEgLT4gTnVtcGFkNVxuICAgIHwgMTAyIC0+IE51bXBhZDZcbiAgICB8IDEwMyAtPiBOdW1wYWQ3XG4gICAgfCAxMDQgLT4gTnVtcGFkOFxuICAgIHwgMTA1IC0+IE51bXBhZDlcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9ub3JtYWwgPSBmdW5jdGlvblxuICAgIHwgMjcgLT4gRXNjYXBlXG4gICAgfCAxMTIgLT4gRjFcbiAgICB8IDExMyAtPiBGMlxuICAgIHwgMTE0IC0+IEYzXG4gICAgfCAxMTUgLT4gRjRcbiAgICB8IDExNiAtPiBGNVxuICAgIHwgMTE3IC0+IEY2XG4gICAgfCAxMTggLT4gRjdcbiAgICB8IDExOSAtPiBGOFxuICAgIHwgMTIwIC0+IEY5XG4gICAgfCAxMjEgLT4gRjEwXG4gICAgfCAxMjIgLT4gRjExXG4gICAgfCAxMjMgLT4gRjEyXG4gICAgfCA0MiAtPiBQcmludFNjcmVlblxuICAgIHwgMTQ1IC0+IFNjcm9sbExvY2tcbiAgICB8IDE5IC0+IFBhdXNlXG4gICAgfCAxOTIgLT4gQmFja3F1b3RlXG4gICAgfCA0OSAtPiBEaWdpdDFcbiAgICB8IDUwIC0+IERpZ2l0MlxuICAgIHwgNTEgLT4gRGlnaXQzXG4gICAgfCA1MiAtPiBEaWdpdDRcbiAgICB8IDUzIC0+IERpZ2l0NVxuICAgIHwgNTQgLT4gRGlnaXQ2XG4gICAgfCA1NSAtPiBEaWdpdDdcbiAgICB8IDU2IC0+IERpZ2l0OFxuICAgIHwgNTcgLT4gRGlnaXQ5XG4gICAgfCA0OCAtPiBEaWdpdDBcbiAgICB8IDE4OSAtPiBNaW51c1xuICAgIHwgMTg3IC0+IEVxdWFsXG4gICAgfCA4IC0+IEJhY2tzcGFjZVxuICAgIHwgOSAtPiBUYWJcbiAgICB8IDgxIC0+IEtleVFcbiAgICB8IDg3IC0+IEtleVdcbiAgICB8IDY5IC0+IEtleUVcbiAgICB8IDgyIC0+IEtleVJcbiAgICB8IDg0IC0+IEtleVRcbiAgICB8IDg5IC0+IEtleVlcbiAgICB8IDg1IC0+IEtleVVcbiAgICB8IDczIC0+IEtleUlcbiAgICB8IDc5IC0+IEtleU9cbiAgICB8IDgwIC0+IEtleVBcbiAgICB8IDIxOSAtPiBCcmFja2V0TGVmdFxuICAgIHwgMjIxIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgMjIwIC0+IEJhY2tzbGFzaFxuICAgIHwgMjAgLT4gQ2Fwc0xvY2tcbiAgICB8IDY1IC0+IEtleUFcbiAgICB8IDgzIC0+IEtleVNcbiAgICB8IDY4IC0+IEtleURcbiAgICB8IDcwIC0+IEtleUZcbiAgICB8IDcxIC0+IEtleUdcbiAgICB8IDcyIC0+IEtleUhcbiAgICB8IDc0IC0+IEtleUpcbiAgICB8IDc1IC0+IEtleUtcbiAgICB8IDc2IC0+IEtleUxcbiAgICB8IDE4NiAtPiBTZW1pY29sb25cbiAgICB8IDIyMiAtPiBRdW90ZVxuICAgIHwgMTMgLT4gRW50ZXJcbiAgICB8IDkwIC0+IEtleVpcbiAgICB8IDg4IC0+IEtleVhcbiAgICB8IDY3IC0+IEtleUNcbiAgICB8IDg2IC0+IEtleVZcbiAgICB8IDY2IC0+IEtleUJcbiAgICB8IDc4IC0+IEtleU5cbiAgICB8IDc3IC0+IEtleU1cbiAgICB8IDE4OCAtPiBDb21tYVxuICAgIHwgMTkwIC0+IFBlcmlvZFxuICAgIHwgMTkxIC0+IFNsYXNoXG4gICAgfCAzMiAtPiBTcGFjZVxuICAgIHwgOTMgLT4gQ29udGV4dE1lbnVcbiAgICB8IDQ1IC0+IEluc2VydFxuICAgIHwgMzYgLT4gSG9tZVxuICAgIHwgMzMgLT4gUGFnZVVwXG4gICAgfCA0NiAtPiBEZWxldGVcbiAgICB8IDM1IC0+IEVuZFxuICAgIHwgMzQgLT4gUGFnZURvd25cbiAgICB8IDM3IC0+IEFycm93TGVmdFxuICAgIHwgNDAgLT4gQXJyb3dEb3duXG4gICAgfCAzOSAtPiBBcnJvd1JpZ2h0XG4gICAgfCAzOCAtPiBBcnJvd1VwXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCBtYWtlX3VuaWRlbnRpZmllZCBfID0gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IE9wdGRlZi5jYXNlIHZhbHVlIG1ha2VfdW5pZGVudGlmaWVkIGZcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBydW5fbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBmIHZhbHVlXG4gICAgfCB2IC0+IHZcblxuICBsZXQgZ2V0X2tleV9jb2RlIGV2dCA9IGV2dCMjLmtleUNvZGVcblxuICBsZXQgdHJ5X2tleV9sb2NhdGlvbiBldnQgPVxuICAgIG1hdGNoIGV2dCMjLmxvY2F0aW9uIHdpdGhcbiAgICB8IDEgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9sZWZ0XG4gICAgfCAyIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfcmlnaHRcbiAgICB8IDMgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9udW1wYWRcbiAgICB8IF8gLT4gbWFrZV91bmlkZW50aWZpZWRcblxuICBsZXQgKCB8PiApIHggZiA9IGYgeFxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIFVuaWRlbnRpZmllZFxuICAgIHw+IHRyeV9uZXh0IGV2dCMjLmNvZGUgdHJ5X2NvZGVcbiAgICB8PiB0cnlfa2V5X2xvY2F0aW9uIGV2dFxuICAgIHw+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5cbiAgbGV0IG9mX2tleV9jb2RlID0gdHJ5X2tleV9jb2RlX25vcm1hbFxuZW5kXG5cbm1vZHVsZSBLZXlib2FyZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVWNoYXIudCBvcHRpb25cblxuICBsZXQgY2hhcl9vZl9pbnQgdmFsdWUgPVxuICAgIGlmIDAgPCB2YWx1ZSB0aGVuIHRyeSBTb21lIChVY2hhci5vZl9pbnQgdmFsdWUpIHdpdGggXyAtPiBOb25lIGVsc2UgTm9uZVxuXG4gIGxldCBlbXB0eV9zdHJpbmcgXyA9IEpzLnN0cmluZyBcIlwiXG5cbiAgbGV0IG5vbmUgXyA9IE5vbmVcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBsZXQga2V5ID0gT3B0ZGVmLmdldCBldnQjIy5rZXkgZW1wdHlfc3RyaW5nIGluXG4gICAgbWF0Y2gga2V5IyMubGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gT3B0ZGVmLmNhc2UgZXZ0IyMuY2hhckNvZGUgbm9uZSBjaGFyX29mX2ludFxuICAgIHwgMSAtPiBjaGFyX29mX2ludCAoaW50X29mX2Zsb2F0IChKcy50b19mbG9hdCAoa2V5IyNjaGFyQ29kZUF0IDApKSlcbiAgICB8IF8gLT4gTm9uZVxuZW5kXG5cbigqKioqKilcblxubGV0IGVsZW1lbnQgOiAjRG9tLmVsZW1lbnQgdCAtPiBlbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbnR5cGUgdGFnZ2VkRWxlbWVudCA9XG4gIHwgQSBvZiBhbmNob3JFbGVtZW50IHRcbiAgfCBBcmVhIG9mIGFyZWFFbGVtZW50IHRcbiAgfCBBdWRpbyBvZiBhdWRpb0VsZW1lbnQgdFxuICB8IEJhc2Ugb2YgYmFzZUVsZW1lbnQgdFxuICB8IEJsb2NrcXVvdGUgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBCb2R5IG9mIGJvZHlFbGVtZW50IHRcbiAgfCBCciBvZiBickVsZW1lbnQgdFxuICB8IEJ1dHRvbiBvZiBidXR0b25FbGVtZW50IHRcbiAgfCBDYW52YXMgb2YgY2FudmFzRWxlbWVudCB0XG4gIHwgQ2FwdGlvbiBvZiB0YWJsZUNhcHRpb25FbGVtZW50IHRcbiAgfCBDb2wgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBDb2xncm91cCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IERlbCBvZiBtb2RFbGVtZW50IHRcbiAgfCBEaXYgb2YgZGl2RWxlbWVudCB0XG4gIHwgRGwgb2YgZExpc3RFbGVtZW50IHRcbiAgfCBFbWJlZCBvZiBlbWJlZEVsZW1lbnQgdFxuICB8IEZpZWxkc2V0IG9mIGZpZWxkU2V0RWxlbWVudCB0XG4gIHwgRm9ybSBvZiBmb3JtRWxlbWVudCB0XG4gIHwgRnJhbWVzZXQgb2YgZnJhbWVTZXRFbGVtZW50IHRcbiAgfCBGcmFtZSBvZiBmcmFtZUVsZW1lbnQgdFxuICB8IEgxIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDMgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg0IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDYgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEhlYWQgb2YgaGVhZEVsZW1lbnQgdFxuICB8IEhyIG9mIGhyRWxlbWVudCB0XG4gIHwgSHRtbCBvZiBodG1sRWxlbWVudCB0XG4gIHwgSWZyYW1lIG9mIGlGcmFtZUVsZW1lbnQgdFxuICB8IEltZyBvZiBpbWFnZUVsZW1lbnQgdFxuICB8IElucHV0IG9mIGlucHV0RWxlbWVudCB0XG4gIHwgSW5zIG9mIG1vZEVsZW1lbnQgdFxuICB8IExhYmVsIG9mIGxhYmVsRWxlbWVudCB0XG4gIHwgTGVnZW5kIG9mIGxlZ2VuZEVsZW1lbnQgdFxuICB8IExpIG9mIGxpRWxlbWVudCB0XG4gIHwgTGluayBvZiBsaW5rRWxlbWVudCB0XG4gIHwgTWFwIG9mIG1hcEVsZW1lbnQgdFxuICB8IE1ldGEgb2YgbWV0YUVsZW1lbnQgdFxuICB8IE9iamVjdCBvZiBvYmplY3RFbGVtZW50IHRcbiAgfCBPbCBvZiBvTGlzdEVsZW1lbnQgdFxuICB8IE9wdGdyb3VwIG9mIG9wdEdyb3VwRWxlbWVudCB0XG4gIHwgT3B0aW9uIG9mIG9wdGlvbkVsZW1lbnQgdFxuICB8IFAgb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQYXJhbSBvZiBwYXJhbUVsZW1lbnQgdFxuICB8IFByZSBvZiBwcmVFbGVtZW50IHRcbiAgfCBRIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgU2NyaXB0IG9mIHNjcmlwdEVsZW1lbnQgdFxuICB8IFNlbGVjdCBvZiBzZWxlY3RFbGVtZW50IHRcbiAgfCBTdHlsZSBvZiBzdHlsZUVsZW1lbnQgdFxuICB8IFRhYmxlIG9mIHRhYmxlRWxlbWVudCB0XG4gIHwgVGJvZHkgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGQgb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGV4dGFyZWEgb2YgdGV4dEFyZWFFbGVtZW50IHRcbiAgfCBUZm9vdCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUaGVhZCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaXRsZSBvZiB0aXRsZUVsZW1lbnQgdFxuICB8IFRyIG9mIHRhYmxlUm93RWxlbWVudCB0XG4gIHwgVWwgb2YgdUxpc3RFbGVtZW50IHRcbiAgfCBWaWRlbyBvZiB2aWRlb0VsZW1lbnQgdFxuICB8IE90aGVyIG9mIGVsZW1lbnQgdFxuXG5sZXQgb3RoZXIgZSA9IE90aGVyIChlIDogI2VsZW1lbnQgdCA6PiBlbGVtZW50IHQpXG5cbmxldCB0YWdnZWQgKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCB0YWcgPSBKcy50b19ieXRlc3RyaW5nIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDBcbiAgdGhlbiBvdGhlciBlXG4gIGVsc2VcbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCB0YWcgMCB3aXRoXG4gICAgfCAnYScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYVwiIC0+IEEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImFyZWFcIiAtPiBBcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhdWRpb1wiIC0+IEF1ZGlvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2InIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImJhc2VcIiAtPiBCYXNlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJibG9ja3F1b3RlXCIgLT4gQmxvY2txdW90ZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYm9keVwiIC0+IEJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJyXCIgLT4gQnIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJ1dHRvblwiIC0+IEJ1dHRvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdjJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJjYW52YXNcIiAtPiBDYW52YXMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNhcHRpb25cIiAtPiBDYXB0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xcIiAtPiBDb2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbGdyb3VwXCIgLT4gQ29sZ3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZGVsXCIgLT4gRGVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkaXZcIiAtPiBEaXYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRsXCIgLT4gRGwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZW1iZWRcIiAtPiBFbWJlZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdmJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJmaWVsZHNldFwiIC0+IEZpZWxkc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmb3JtXCIgLT4gRm9ybSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVzZXRcIiAtPiBGcmFtZXNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVcIiAtPiBGcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdoJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJoMVwiIC0+IEgxIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoMlwiIC0+IEgyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoM1wiIC0+IEgzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNFwiIC0+IEg0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNVwiIC0+IEg1IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNlwiIC0+IEg2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoZWFkXCIgLT4gSGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHJcIiAtPiBIciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHRtbFwiIC0+IEh0bWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaWZyYW1lXCIgLT4gSWZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbWdcIiAtPiBJbWcgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImlucHV0XCIgLT4gSW5wdXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImluc1wiIC0+IElucyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdsJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJsYWJlbFwiIC0+IExhYmVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsZWdlbmRcIiAtPiBMZWdlbmQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpXCIgLT4gTGkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpbmtcIiAtPiBMaW5rIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ20nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm1hcFwiIC0+IE1hcCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibWV0YVwiIC0+IE1ldGEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwib2JqZWN0XCIgLT4gT2JqZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvbFwiIC0+IE9sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRncm91cFwiIC0+IE9wdGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRpb25cIiAtPiBPcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicFwiIC0+IFAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInBhcmFtXCIgLT4gUGFyYW0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInByZVwiIC0+IFByZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdxJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJxXCIgLT4gUSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdzJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJzY3JpcHRcIiAtPiBTY3JpcHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInNlbGVjdFwiIC0+IFNlbGVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic3R5bGVcIiAtPiBTdHlsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd0JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ0YWJsZVwiIC0+IFRhYmxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Ym9keVwiIC0+IFRib2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZFwiIC0+IFRkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZXh0YXJlYVwiIC0+IFRleHRhcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Zm9vdFwiIC0+IFRmb290IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aFwiIC0+IFRoIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aGVhZFwiIC0+IFRoZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aXRsZVwiIC0+IFRpdGxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0clwiIC0+IFRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInVsXCIgLT4gVWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidmlkZW9cIiAtPiBWaWRlbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8IF8gLT4gb3RoZXIgZVxuXG5sZXQgb3B0X3RhZ2dlZCBlID0gT3B0LmNhc2UgZSAoZnVuICgpIC0+IE5vbmUpIChmdW4gZSAtPiBTb21lICh0YWdnZWQgZSkpXG5cbnR5cGUgdGFnZ2VkRXZlbnQgPVxuICB8IE1vdXNlRXZlbnQgb2YgbW91c2VFdmVudCB0XG4gIHwgS2V5Ym9hcmRFdmVudCBvZiBrZXlib2FyZEV2ZW50IHRcbiAgfCBNZXNzYWdlRXZlbnQgb2YgbWVzc2FnZUV2ZW50IHRcbiAgfCBNb3VzZXdoZWVsRXZlbnQgb2YgbW91c2V3aGVlbEV2ZW50IHRcbiAgfCBNb3VzZVNjcm9sbEV2ZW50IG9mIG1vdXNlU2Nyb2xsRXZlbnQgdFxuICB8IFBvcFN0YXRlRXZlbnQgb2YgcG9wU3RhdGVFdmVudCB0XG4gIHwgT3RoZXJFdmVudCBvZiBldmVudCB0XG5cbmxldCB0YWdnZWRFdmVudCAoZXYgOiAjZXZlbnQgSnMudCkgPVxuICBKcy5PcHQuY2FzZVxuICAgIChDb2VyY2VUby5tb3VzZUV2ZW50IGV2KVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChDb2VyY2VUby5rZXlib2FyZEV2ZW50IGV2KVxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChDb2VyY2VUby53aGVlbEV2ZW50IGV2KVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgIChDb2VyY2VUby5tb3VzZVNjcm9sbEV2ZW50IGV2KVxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5wb3BTdGF0ZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5tZXNzYWdlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IE90aGVyRXZlbnQgKGV2IDo+IGV2ZW50IHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNZXNzYWdlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IFBvcFN0YXRlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2VTY3JvbGxFdmVudCBldikpXG4gICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNld2hlZWxFdmVudCBldikpXG4gICAgICAgIChmdW4gZXYgLT4gS2V5Ym9hcmRFdmVudCBldikpXG4gICAgKGZ1biBldiAtPiBNb3VzZUV2ZW50IGV2KVxuXG5sZXQgb3B0X3RhZ2dlZEV2ZW50IGV2ID0gT3B0LmNhc2UgZXYgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGV2IC0+IFNvbWUgKHRhZ2dlZEV2ZW50IGV2KSlcblxubGV0IHN0b3BQcm9wYWdhdGlvbiBldiA9XG4gIGxldCBlID0gSnMuVW5zYWZlLmNvZXJjZSBldiBpblxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5zdG9wUHJvcGFnYXRpb25cbiAgICAoZnVuICgpIC0+IGUjIy5jYW5jZWxCdWJibGUgOj0gSnMuX3RydWUpXG4gICAgKGZ1biBfIC0+IGUjI19zdG9wUHJvcGFnYXRpb24pXG5cbmxldCBfcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdCA9XG4gIEpzLlVuc2FmZS5wdXJlX2V4cHIgKGZ1biBfIC0+XG4gICAgICBsZXQgdyA9IEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IGluXG4gICAgICBsZXQgbCA9XG4gICAgICAgIFsgdyMjLnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgcmVxID0gTGlzdC5maW5kIChmdW4gYyAtPiBKcy5PcHRkZWYudGVzdCBjKSBsIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgcmVxIFt8IEpzLlVuc2FmZS5pbmplY3QgY2FsbGJhY2sgfF1cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBub3cgKCkgPSBKcy50b19mbG9hdCAobmV3JWpzIEpzLmRhdGVfbm93KSMjZ2V0VGltZSBpblxuICAgICAgICBsZXQgbGFzdCA9IHJlZiAobm93ICgpKSBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT5cbiAgICAgICAgICBsZXQgdCA9IG5vdyAoKSBpblxuICAgICAgICAgIGxldCBkdCA9ICFsYXN0ICsuICgxMDAwLiAvLiA2MC4pIC0uIHQgaW5cbiAgICAgICAgICBsZXQgZHQgPSBpZiBQb2x5LihkdCA8IDAuKSB0aGVuIDAuIGVsc2UgZHQgaW5cbiAgICAgICAgICBsYXN0IDo9IHQ7XG4gICAgICAgICAgaWdub3JlICh3aW5kb3cjI3NldFRpbWVvdXQgY2FsbGJhY2sgKEpzLmZsb2F0IGR0KSkpXG5cbigqKioqKVxuXG5sZXQgaGFzUHVzaFN0YXRlICgpID0gSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IyMuaGlzdG9yeSkjIy5wdXNoU3RhdGVcblxubGV0IGhhc1BsYWNlaG9sZGVyICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnBsYWNlaG9sZGVyXG5cbmxldCBoYXNSZXF1aXJlZCAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5yZXF1aXJlZFxuXG5sZXQgb3ZlcmZsb3dfbGltaXQgPSAyMTQ3NDgzXzAwMC5cblxuKCogbXMgKilcblxudHlwZSB0aW1lb3V0X2lkX3NhZmUgPSB0aW1lb3V0X2lkIG9wdGlvbiByZWZcblxubGV0IHNldFRpbWVvdXQgY2FsbGJhY2sgZCA6IHRpbWVvdXRfaWRfc2FmZSA9XG4gIGxldCBpZCA9IHJlZiBOb25lIGluXG4gIGxldCByZWMgbG9vcCBkICgpID1cbiAgICBsZXQgc3RlcCwgcmVtYWluID1cbiAgICAgIGlmIFBvbHkuKGQgPiBvdmVyZmxvd19saW1pdCkgdGhlbiBvdmVyZmxvd19saW1pdCwgZCAtLiBvdmVyZmxvd19saW1pdCBlbHNlIGQsIDAuXG4gICAgaW5cbiAgICBsZXQgY2IgPSBpZiBQb2x5LihyZW1haW4gPSAwLikgdGhlbiBjYWxsYmFjayBlbHNlIGxvb3AgcmVtYWluIGluXG4gICAgaWQgOj0gU29tZSAod2luZG93IyNzZXRUaW1lb3V0IChKcy53cmFwX2NhbGxiYWNrIGNiKSAoSnMuZmxvYXQgc3RlcCkpXG4gIGluXG4gIGxvb3AgZCAoKTtcbiAgaWRcblxubGV0IGNsZWFyVGltZW91dCAoaWQgOiB0aW1lb3V0X2lkX3NhZmUpID1cbiAgbWF0Y2ggIWlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBpZCA6PSBOb25lO1xuICAgICAgd2luZG93IyNjbGVhclRpbWVvdXQgeFxuXG5sZXQganNfYXJyYXlfb2ZfY29sbGVjdGlvbiAoYyA6ICNlbGVtZW50IGNvbGxlY3Rpb24gSnMudCkgOiAjZWxlbWVudCBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICA9XG4gIEpzLlVuc2FmZS4obWV0aF9jYWxsIChqc19leHByIFwiW10uc2xpY2VcIikgXCJjYWxsXCIgW3wgaW5qZWN0IGMgfF0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGZvcm1EYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBlbmQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kX2Jsb2IgOiBqc19zdHJpbmcgdCAtPiBGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZm9ybURhdGEgOiBmb3JtRGF0YSB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxubGV0IGZvcm1EYXRhX2Zvcm0gOiAoZm9ybUVsZW1lbnQgdCAtPiBmb3JtRGF0YSB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbnR5cGUgZm9ybV9lbHQgPVxuICBbIGBTdHJpbmcgb2YganNfc3RyaW5nIHRcbiAgfCBgRmlsZSBvZiBGaWxlLmZpbGUgdFxuICBdXG5cbnR5cGUgZm9ybV9jb250ZW50cyA9XG4gIFsgYEZpZWxkcyBvZiAoc3RyaW5nICogZm9ybV9lbHQpIGxpc3QgcmVmXG4gIHwgYEZvcm1EYXRhIG9mIGZvcm1EYXRhIHRcbiAgXVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5jbGFzcyB0eXBlIHN1Ym1pdHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5sZXQgaGF2ZV9jb250ZW50IChlbHQgOiBzdWJtaXR0YWJsZUVsZW1lbnQgdCkgPVxuICBlbHQjIy5uYW1lIyMubGVuZ3RoID4gMCAmJiBub3QgKEpzLnRvX2Jvb2wgZWx0IyMuZGlzYWJsZWQpXG5cbmxldCBnZXRfdGV4dGFyZWFfdmFsIChlbHQgOiB0ZXh0QXJlYUVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfc2VsZWN0X3ZhbCAoZWx0IDogc2VsZWN0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGlmIHRvX2Jvb2wgZWx0IyMubXVsdGlwbGVcbiAgICB0aGVuXG4gICAgICBsZXQgb3B0aW9ucyA9XG4gICAgICAgIEFycmF5LmluaXQgZWx0IyMub3B0aW9ucyMjLmxlbmd0aCAoZnVuIGkgLT4gT3B0LnRvX29wdGlvbiAoZWx0IyMub3B0aW9ucyMjaXRlbSBpKSlcbiAgICAgIGluXG4gICAgICBmaWx0ZXJfbWFwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICAgICAgaWYgSnMudG9fYm9vbCBlIyMuc2VsZWN0ZWQgdGhlbiBTb21lIChuYW1lLCBgU3RyaW5nIGUjIy52YWx1ZSkgZWxzZSBOb25lKVxuICAgICAgICAoQXJyYXkudG9fbGlzdCBvcHRpb25zKVxuICAgIGVsc2UgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5jbGFzcyB0eXBlIGZpbGVfaW5wdXQgPSBvYmplY3RcbiAgaW5oZXJpdCBpbnB1dEVsZW1lbnRcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGdldF9pbnB1dF92YWwgPyhnZXQgPSBmYWxzZSkgKGVsdCA6IGlucHV0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGxldCB2YWx1ZSA9IGVsdCMjLnZhbHVlIGluXG4gICAgbWF0Y2ggdG9fYnl0ZXN0cmluZyBlbHQjIy5fdHlwZSMjdG9Mb3dlckNhc2Ugd2l0aFxuICAgIHwgXCJjaGVja2JveFwiIHwgXCJyYWRpb1wiIC0+XG4gICAgICAgIGlmIHRvX2Jvb2wgZWx0IyMuY2hlY2tlZCB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdIGVsc2UgW11cbiAgICB8IFwic3VibWl0XCIgfCBcInJlc2V0XCIgLT4gW11cbiAgICB8IFwidGV4dFwiIHwgXCJwYXNzd29yZFwiIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgfCBcImZpbGVcIiAtPiAoXG4gICAgICAgIGlmIGdldFxuICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgZWx0IDogZmlsZV9pbnB1dCB0ID0gVW5zYWZlLmNvZXJjZSBlbHQgaW5cbiAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLmZpbGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgbGlzdCAtPiAoXG4gICAgICAgICAgICAgIGlmIGxpc3QjIy5sZW5ndGggPSAwXG4gICAgICAgICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIChKcy5zdHJpbmcgXCJcIikgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5tdWx0aXBsZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGxpc3QjI2l0ZW0gMCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gWyBuYW1lLCBgRmlsZSBmaWxlIF0pXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyX21hcFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiBmIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBTb21lIChuYW1lLCBgRmlsZSBmaWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkudG9fbGlzdCAoQXJyYXkuaW5pdCBsaXN0IyMubGVuZ3RoIChmdW4gaSAtPiBsaXN0IyNpdGVtIGkpKSkpKVxuICAgIHwgXyAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfZm9ybV9lbGVtZW50cyAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID1cbiAgICBpZiBpIDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAoZm9ybSMjLmVsZW1lbnRzIyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyAoaSAtIGkpXG4gICAgICB8IFNvbWUgeCAtPiBsb29wICh4IDo6IGFjYykgKGkgLSAxKVxuICBpblxuICBsb29wIFtdIChmb3JtIyMuZWxlbWVudHMjIy5sZW5ndGggLSAxKVxuXG5sZXQgZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYgPVxuICBtYXRjaCB0YWdnZWQgdiB3aXRoXG4gIHwgU2VsZWN0IHYgLT4gZ2V0X3NlbGVjdF92YWwgdlxuICB8IElucHV0IHYgLT4gZ2V0X2lucHV0X3ZhbCA/Z2V0IHZcbiAgfCBUZXh0YXJlYSB2IC0+IGdldF90ZXh0YXJlYV92YWwgdlxuICB8IF8gLT4gW11cblxubGV0IGZvcm1fZWxlbWVudHMgP2dldCAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHYgLT4gZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYpIChnZXRfZm9ybV9lbGVtZW50cyBmb3JtKSlcblxubGV0IGFwcGVuZCAoZm9ybV9jb250ZW50cyA6IGZvcm1fY29udGVudHMpIChmb3JtX2VsdCA6IHN0cmluZyAqIGZvcm1fZWx0KSA9XG4gIG1hdGNoIGZvcm1fY29udGVudHMgd2l0aFxuICB8IGBGaWVsZHMgbGlzdCAtPiBsaXN0IDo9IGZvcm1fZWx0IDo6ICFsaXN0XG4gIHwgYEZvcm1EYXRhIGYgLT4gKFxuICAgICAgbWF0Y2ggZm9ybV9lbHQgd2l0aFxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gZiMjYXBwZW5kIChzdHJpbmcgbmFtZSkgc1xuICAgICAgfCBuYW1lLCBgRmlsZSBmaWxlIC0+IGYjI2FwcGVuZF9ibG9iIChzdHJpbmcgbmFtZSkgKGZpbGUgOj4gRmlsZS5ibG9iIHQpKVxuXG5sZXQgZW1wdHlfZm9ybV9jb250ZW50cyAoKSA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gKEpzLmRlZiBmb3JtRGF0YSkgd2l0aFxuICB8IE5vbmUgLT4gYEZpZWxkcyAocmVmIFtdKVxuICB8IFNvbWUgY29uc3RyIC0+IGBGb3JtRGF0YSAobmV3JWpzIGNvbnN0cilcblxubGV0IHBvc3RfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgbGV0IGNvbnRlbnRzID0gZW1wdHlfZm9ybV9jb250ZW50cyAoKSBpblxuICBMaXN0Lml0ZXIgKGFwcGVuZCBjb250ZW50cykgKGZvcm1fZWxlbWVudHMgZm9ybSk7XG4gIGNvbnRlbnRzXG5cbmxldCBnZXRfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IG5hbWUsIHRvX3N0cmluZyBzXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIChmb3JtX2VsZW1lbnRzIH5nZXQ6dHJ1ZSBmb3JtKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IFVOU0VOVFxuICB8IE9QRU5FRFxuICB8IEhFQURFUlNfUkVDRUlWRURcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG50eXBlIF8gcmVzcG9uc2UgPVxuICB8IEFycmF5QnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCBPcHQudCByZXNwb25zZVxuICB8IEJsb2IgOiAjRmlsZS5ibG9iIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IE9wdC50IHJlc3BvbnNlXG4gIHwgSlNPTiA6ICdhIE9wdC50IHJlc3BvbnNlXG4gIHwgVGV4dCA6IGpzX3N0cmluZyB0IHJlc3BvbnNlXG4gIHwgRGVmYXVsdCA6IHN0cmluZyByZXNwb25zZVxuXG5jbGFzcyB0eXBlIHhtbEh0dHBSZXF1ZXN0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ucmVhZHlzdGF0ZWNoYW5nZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX29wZW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIF9vcGVuX2Z1bGwgOlxuICAgICAgIGpzX3N0cmluZyB0XG4gICAgLT4ganNfc3RyaW5nIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UmVxdWVzdEhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvdmVycmlkZU1pbWVUeXBlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmQgOiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6ICNGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9kb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Zvcm1EYXRhIDogRm9ybS5mb3JtRGF0YSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0dXNUZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSZXNwb25zZUhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFsbFJlc3BvbnNlSGVhZGVycyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVzcG9uc2UgOiBGaWxlLmZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUZXh0IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VYTUwgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9udGltZW91dCA6XG4gICAgKCdzZWxmIHQsICdzZWxmIEZpbGUucHJvZ3Jlc3NFdmVudCB0KSBEb20uZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdXBsb2FkIDogeG1sSHR0cFJlcXVlc3RVcGxvYWQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB4bWxIdHRwUmVxdWVzdFVwbG9hZCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0geG1sSHR0cFJlcXVlc3QgRmlsZS5wcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyZWFkeXN0YXRlY2hhbmdlXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdGltZW91dCA9IERvbS5FdmVudC5tYWtlIFwidGltZW91dFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmV4dGVybmFsIGNyZWF0ZSA6IHVuaXQgLT4geG1sSHR0cFJlcXVlc3QgSnMudCA9IFwiY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcIlxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBPQ2FtbFBybzogR3LDqWdvaXJlIEhlbnJ5LCDDh2HEn2RhxZ8gQm96bWFuLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB3b3JrZXIgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXJyb3JFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ2IgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvc3RNZXNzYWdlIDogJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRlcm1pbmF0ZSA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBlcnJvckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZW5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmVubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbG5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBVbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogJ2EgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3b3JrZXIgPSBVbnNhZmUuZ2xvYmFsIyMuX1dvcmtlclxuXG5sZXQgY3JlYXRlIHNjcmlwdCA9IG5ldyVqcyB3b3JrZXIgKHN0cmluZyBzY3JpcHQpXG5cbmxldCBpbXBvcnRfc2NyaXB0cyBzY3JpcHRzIDogdW5pdCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHMpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIuaW1wb3J0X3NjcmlwdHMgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5mdW5fY2FsbFxuICAgIFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzXG4gICAgKEFycmF5Lm1hcCAoZnVuIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpKSAoQXJyYXkub2ZfbGlzdCBzY3JpcHRzKSlcblxubGV0IHNldF9vbm1lc3NhZ2UgaGFuZGxlciA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIGxldCBqc19oYW5kbGVyIChldiA6ICdhIG1lc3NhZ2VFdmVudCBKcy50KSA9IGhhbmRsZXIgZXYjIy5kYXRhIGluXG4gIFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UgOj0gd3JhcF9jYWxsYmFjayBqc19oYW5kbGVyXG5cbmxldCBwb3N0X21lc3NhZ2UgbXNnID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMucG9zdE1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZ2xvYmFsIyNwb3N0TWVzc2FnZSBtc2dcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSmFjcXVlcy1QYXNjYWwgRGVwbGFpeFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0lOR1xuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gY2xvc2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGNvZGUgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFzb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdhc0NsZWFuIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9ibG9iIDogRmlsZS5ibG9iIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgd2ViU29ja2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB1cmwgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnVmZmVyZWRBbW91bnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNsb3NlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgY2xvc2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGV4dGVuc2lvbnMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZSA6IGludCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGVBbmRSZWFzb24gOiBpbnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIG1lc3NhZ2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYmluYXJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICBtZXRob2Qgc2VuZCA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6IEZpbGUuYmxvYiBKcy50IC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCB3ZWJTb2NrZXQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1dlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbCA9IHdlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbHMgPSB3ZWJTb2NrZXRcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHdlYlNvY2tldFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG4oKiogNS4xIFR5cGVzICopXG5cbnR5cGUgc2l6ZWkgPSBpbnRcblxudHlwZSBzaXplaXB0ciA9IGludFxuXG50eXBlIGludHB0ciA9IGludFxuXG50eXBlIHVpbnQgPSBpbnRcblxudHlwZSBjbGFtcGYgPSBudW1iZXJfdFxuXG50eXBlIHZvaWRcblxudHlwZSBjbGVhckJ1ZmZlck1hc2sgPSBpbnRcblxudHlwZSBiZWdpbk1vZGVcblxudHlwZSBibGVuZGluZ0ZhY3RvclxuXG50eXBlIGJsZW5kTW9kZVxuXG50eXBlIGJ1ZmZlclRhcmdldFxuXG50eXBlIGJ1ZmZlclVzYWdlXG5cbnR5cGUgY3VsbEZhY2VNb2RlXG5cbnR5cGUgZGVwdGhGdW5jdGlvblxuXG50eXBlIGVuYWJsZUNhcFxuXG50eXBlIGVycm9yQ29kZVxuXG50eXBlIGZyb250RmFjZURpclxuXG50eXBlIGhpbnRUYXJnZXRcblxudHlwZSBoaW50TW9kZVxuXG50eXBlIHRleHR1cmVVbml0ID0gaW50XG5cbnR5cGUgJ2EgcGl4ZWxTdG9yZVBhcmFtXG5cbnR5cGUgc3RlbmNpbE9wXG5cbnR5cGUgZmJUYXJnZXRcblxudHlwZSBhdHRhY2htZW50UG9pbnRcblxudHlwZSByYlRhcmdldFxuXG50eXBlIHRleFRhcmdldFxuXG50eXBlICdhIHBhcmFtZXRlclxuXG50eXBlICdhIGJ1ZmZlclBhcmFtZXRlclxuXG50eXBlICdhIHZlcnRleEF0dHJpYlBhcmFtXG5cbnR5cGUgdmVydGV4QXR0cmliUG9pbnRlclBhcmFtXG5cbnR5cGUgJ2EgYXR0YWNoUGFyYW1cblxudHlwZSBmcmFtZWJ1ZmZlclN0YXR1c1xuXG50eXBlICdhIHJlbmRlcmJ1ZmZlclBhcmFtXG5cbnR5cGUgZm9ybWF0XG5cbnR5cGUgcGl4ZWxGb3JtYXRcblxudHlwZSBwaXhlbFR5cGVcblxudHlwZSAnYSB0ZXhQYXJhbVxuXG50eXBlIGRhdGFUeXBlXG5cbnR5cGUgc2hhZGVyVHlwZVxuXG50eXBlICdhIHByb2dyYW1QYXJhbVxuXG50eXBlICdhIHNoYWRlclBhcmFtXG5cbnR5cGUgdGV4dHVyZUZpbHRlclxuXG50eXBlIHdyYXBNb2RlXG5cbnR5cGUgdGV4RmlsdGVyXG5cbnR5cGUgdW5pZm9ybVR5cGVcblxudHlwZSBjb2xvcnNwYWNlQ29udmVyc2lvblxuXG50eXBlIHNoYWRlclByZWNpc2lvblR5cGVcblxudHlwZSBvYmplY3RUeXBlXG5cbigqKiA1LjIgV2ViR0xDb250ZXh0QXR0cmlidXRlcyAqKVxuY2xhc3MgdHlwZSBjb250ZXh0QXR0cmlidXRlcyA9IG9iamVjdFxuICBtZXRob2QgYWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXB0aCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN0ZW5jaWwgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBhbnRpYWxpYXMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVtdWx0aXBsaWVkQWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCA6IGJvb2wgdCBwcm9wXG5lbmRcblxubGV0IGRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyA9XG4gIEpzLlVuc2FmZS4oXG4gICAgb2JqXG4gICAgICBbfCBcImFscGhhXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJkZXB0aFwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwic3RlbmNpbFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImFudGlhbGlhc1wiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwicHJlbXVsdGlwbGllZEFscGhhXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlc2VydmVEcmF3aW5nQnVmZmVyXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgfF0pXG5cbnR5cGUgYnVmZmVyXG5cbnR5cGUgZnJhbWVidWZmZXJcblxudHlwZSBwcm9ncmFtXG5cbnR5cGUgcmVuZGVyYnVmZmVyXG5cbnR5cGUgc2hhZGVyXG5cbnR5cGUgdGV4dHVyZVxuXG50eXBlICdhIHVuaWZvcm1Mb2NhdGlvblxuXG5jbGFzcyB0eXBlIGFjdGl2ZUluZm8gPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNoYWRlclByZWNpc2lvbkZvcm1hdCA9IG9iamVjdFxuICBtZXRob2QgcmFuZ2VNaW4gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZU1heCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWNpc2lvbiA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZW5kZXJpbmdDb250ZXh0ID0gb2JqZWN0XG4gICgqKiA1LjEzLjEgQXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBjYW52YXMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVyV2lkdGggOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJIZWlnaHQgOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgKCoqIDUuMTMuMiBHZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0ICopXG5cbiAgbWV0aG9kIGdldENvbnRleHRBdHRyaWJ1dGVzIDogY29udGV4dEF0dHJpYnV0ZXMgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMyBTZXR0aW5nIGFuZCBnZXR0aW5nIHN0YXRlICopXG5cbiAgbWV0aG9kIGFjdGl2ZVRleHR1cmUgOiB0ZXh0dXJlVW5pdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvbiA6IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvblNlcGFyYXRlIDogYmxlbmRNb2RlIC0+IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jIDogYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuY1NlcGFyYXRlIDpcbiAgICBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEZXB0aCA6IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJTdGVuY2lsIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xvck1hc2sgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGN1bGxGYWNlIDogY3VsbEZhY2VNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aE1hc2sgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoUmFuZ2UgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXNhYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyb250RmFjZSA6IGZyb250RmFjZURpciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UGFyYW1ldGVyIDogJ2EuICdhIHBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEVycm9yIDogZXJyb3JDb2RlIG1ldGhcblxuICBtZXRob2QgaGludCA6IGhpbnRUYXJnZXQgLT4gaGludE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzRW5hYmxlZCA6IGVuYWJsZUNhcCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcGl4ZWxTdG9yZWkgOiAnYS4gJ2EgcGl4ZWxTdG9yZVBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwb2x5Z29uT2Zmc2V0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNhbXBsZUNvdmVyYWdlIDogY2xhbXBmIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuY1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrIDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2tTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3AgOiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wU2VwYXJhdGUgOlxuICAgIGN1bGxGYWNlTW9kZSAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy40IFZpZXdpbmcgYW5kIGNsaXBwaW5nICopXG5cbiAgbWV0aG9kIHNjaXNzb3IgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNSBCdWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyXyA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfY3JlYXRlIDogYnVmZmVyVGFyZ2V0IC0+IHNpemVpcHRyIC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVCdWZmZXIgOiBidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUJ1ZmZlciA6IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCdWZmZXJQYXJhbWV0ZXIgOiAnYS4gYnVmZmVyVGFyZ2V0IC0+ICdhIGJ1ZmZlclBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzQnVmZmVyIDogYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy42IEZyYW1lYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyXyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXJTdGF0dXMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyVGV4dHVyZTJEIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciA6XG4gICAgJ2EuIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiAnYSBhdHRhY2hQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNyBSZW5kZXJidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXJfIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIgOiAnYS4gcmJUYXJnZXQgLT4gJ2EgcmVuZGVyYnVmZmVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1JlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbmRlcmJ1ZmZlclN0b3JhZ2UgOiByYlRhcmdldCAtPiBmb3JtYXQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOCBUZXh0dXJlIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFRleHR1cmUgOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZV8gOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleEltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IHBpeGVsRm9ybWF0IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4U3ViSW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUZXh0dXJlIDogdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZW5lcmF0ZU1pcG1hcCA6IHRleFRhcmdldCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0VGV4UGFyYW1ldGVyIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNUZXh0dXJlIDogdGV4dHVyZSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfbmV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IHZvaWQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiB7W1xuICAgICAgbWV0aG9kIHRleFBhcmFtZXRlcmYgOiB0ZXhUYXJnZXQgLT4gdGV4UGFyYW0gLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG4gICAgIF19XG4gICopXG4gIG1ldGhvZCB0ZXhQYXJhbWV0ZXJpIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy45IFByb2dyYW1zIGFuZCBTaGFkZXJzICopXG5cbiAgbWV0aG9kIGF0dGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBpbGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNoYWRlciA6IHNoYWRlclR5cGUgLT4gc2hhZGVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGV0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRhY2hlZFNoYWRlcnMgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1QYXJhbWV0ZXIgOiAnYS4gcHJvZ3JhbSB0IC0+ICdhIHByb2dyYW1QYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1JbmZvTG9nIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUGFyYW1ldGVyIDogJ2EuIHNoYWRlciB0IC0+ICdhIHNoYWRlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IDpcbiAgICBzaGFkZXJUeXBlIC0+IHNoYWRlclByZWNpc2lvblR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uRm9ybWF0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJJbmZvTG9nIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGlzUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1NoYWRlciA6IHNoYWRlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmtQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdXNlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmFsaWRhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEwIFVuaWZvcm1zIGFuZCBhdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlQXR0cmliIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlVW5pZm9ybSA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm0gOiAnYSAnYi4gcHJvZ3JhbSB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IC0+ICdiIG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybUxvY2F0aW9uIDogJ2EuIHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYiA6ICdhLiB1aW50IC0+ICdhIHZlcnRleEF0dHJpYlBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliT2Zmc2V0IDogdWludCAtPiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gLT4gc2l6ZWlwdHIgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdl90eXBlZCA6XG4gICAgbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWkgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2X3R5cGVkIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdiA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmIDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2X3R5cGVkIDpcbiAgICBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpIDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2IDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdl90eXBlZCA6XG4gICAgWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZiA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2X3R5cGVkIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnYgOiBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpIDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdiA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGYgOlxuICAgICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnZfdHlwZWQgOlxuICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdiA6IFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGkgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdiA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXZfdHlwZWQgOlxuICAgIFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2IDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnZfdHlwZWQgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnYgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdl90eXBlZCA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdiA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2X3R5cGVkIDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmYgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZiA6XG4gICAgdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyIDpcbiAgICB1aW50IC0+IGludCAtPiBkYXRhVHlwZSAtPiBib29sIHQgLT4gc2l6ZWkgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjExIFdyaXRpbmcgdG8gdGhlIGRyYXdpbmcgYnVmZmVyICopXG5cbiAgbWV0aG9kIGNsZWFyIDogY2xlYXJCdWZmZXJNYXNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3QXJyYXlzIDogYmVnaW5Nb2RlIC0+IGludCAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0VsZW1lbnRzIDogYmVnaW5Nb2RlIC0+IHNpemVpIC0+IGRhdGFUeXBlIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmluaXNoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZsdXNoIDogdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTIgUmVhZGluZyBiYWNrIHBpeGVscyAqKVxuXG4gIG1ldGhvZCByZWFkUGl4ZWxzIDpcbiAgICAgICBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMyBEZXRlY3RpbmcgY29udGV4dCBsb3N0IGV2ZW50cyAqKVxuXG4gIG1ldGhvZCBpc0NvbnRleHRMb3N0IDogYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy4xNCBEZXRlY3RpbmcgYW5kIGVuYWJsaW5nIGV4dGVuc2lvbnMgKilcblxuICBtZXRob2QgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnNpb24gOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgdCBvcHQgbWV0aFxuXG4gICgqIFVudHlwZWQhICopXG4gICgqKiBDb25zdGFudHMgKilcblxuICBtZXRob2QgX0RFUFRIX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9JTlRTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfTE9PUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9GQU5fIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkUgOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfU0FUVVJBVEVfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19BRERfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RSRUFNX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RBVElDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFlOQU1JQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JBQ0sgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfQU5EX0JBQ0tfIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkQgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9fRVJST1JfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRU5VTV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9WQUxVRV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09VVF9PRl9NRU1PUllfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlRFWFRfTE9TVF9XRUJHTF8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NDVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ET05UX0NBUkVfIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkFTVEVTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05JQ0VTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UXyA6IGhpbnRUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9SR0JfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9BTFBIQV8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9DT0xPUl8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9XSURUSF8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9NT0RFXyA6IGN1bGxGYWNlTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfRkFDRV8gOiBmcm9udEZhY2VEaXIgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9XUklURU1BU0tfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DTEVBUl9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfRlVOQ18gOiBkZXB0aEZ1bmN0aW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0NMRUFSX1ZBTFVFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVklFV1BPUlQgOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfQk9YXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQ0xFQVJfVkFMVUVfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX1dSSVRFTUFTS18gOiBib29sIHQganNfYXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF9QQVJBTSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEFDS19BTElHTk1FTlRfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZJRVdQT1JUX0RJTVNfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVUJQSVhFTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVEX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVFTl9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxVRV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEFfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9VTklUU18gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRkFDVE9SXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfMkRfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9CVUZGRVJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX0lOVkVSVF8gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IFR5cGVkX2FycmF5LnVpbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UX1BBUkFNXyA6IGhpbnRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfU0laRV8gOiBpbnQgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9VU0FHRV8gOiBidWZmZXJVc2FnZSBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQllURSA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfRFQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSE9SVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0lOVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNV81XzFfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNl81XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQiA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0UgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0VfQUxQSEFfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFHTUVOVF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9BVFRSSUJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkFSWUlOR19WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFERVJfVFlQRV8gOiBzaGFkZXJUeXBlIHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBJTEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTX1BST0cgOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTktfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkFMSURBVEVfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVRUQUNIRURfU0hBREVSU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9VTklGT1JNU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9BVFRSSUJVVEVTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OXyA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1BST0dSQU1fIDogcHJvZ3JhbSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVORE9SIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkVSIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlNJT04gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9URVhUVVJFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQklORElOR18gOiBmcmFtZWJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JJTkRJTkdfIDogcmVuZGVyYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfUkVOREVSQlVGRkVSX1NJWkUgOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FVkVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVNTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVBVEVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT1RFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFdBWVMgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0tFRVAgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQTEFDRSA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WRVJUIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUiA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUFHX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NSU5fRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfU18gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfVF8gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfMkRfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTExIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQRUFUIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0xBTVBfVE9fRURHRV8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NSVJST1JFRF9SRVBFQVRfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl8yRF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSX0NVQkVfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSXyA6IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6XG4gICAgYnVmZmVyIHQgb3B0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfVkVSVEVYX0FUVFJJQl8gOlxuICAgIFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVIgOiBmYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVIgOiByYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBNCA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1X0ExXyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1NjUgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UMTZfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVg4XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfV0lEVEhfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9IRUlHSFRfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfIDogZm9ybWF0IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9SRURfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CTFVFX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRV8gOiBvYmplY3RUeXBlIGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfUkVOREVSQlVGRkVSIDpcbiAgICByZW5kZXJidWZmZXIgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1RFWFRVUkUgOiB0ZXh0dXJlIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRV8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQVRUQUNITUVOVDBfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9DT01QTEVURV8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF9QQVJBTSA6XG4gICAgY29sb3JzcGFjZUNvbnZlcnNpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkUgOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CUk9XU0VSX0RFRkFVTFRfV0VCR0xfIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiA1LjE0IFdlYkdMQ29udGV4dEV2ZW50ICopXG5cbmNsYXNzIHR5cGUgY29udGV4dEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRcblxuICBtZXRob2Qgc3RhdHVzTWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbGV0IHdlYmdsY29udGV4dGxvc3QgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0bG9zdFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dHJlc3RvcmVkID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dHJlc3RvcmVkXCJcblxuICBsZXQgd2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yXCJcbmVuZFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHRfIDoganNfc3RyaW5nIHQgLT4gY29udGV4dEF0dHJpYnV0ZXMgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgZ2V0Q29udGV4dCAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwid2ViZ2xcIikgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyAjIyAoZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpKVxuXG5sZXQgZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSBhdHRyaWJzID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBhdHRyaWJzIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikgYXR0cmlic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3QsIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlZ2V4cCA9IEpzLnJlZ0V4cCBKcy50XG5cbnR5cGUgcmVzdWx0ID0gSnMubWF0Y2hfcmVzdWx0IEpzLnRcblxubGV0IHJlZ2V4cCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnaVwiKVxuXG5sZXQgcmVnZXhwX3dpdGhfZmxhZyBzIGYgPVxuICBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIChcImdcIiBeIGYpKVxuXG5sZXQgYmx1bnRfc3RyX2FycmF5X2dldCBhIGkgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgYSBpKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCBzdHJpbmdfbWF0Y2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5tYXAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpIEpzLm1hdGNoX3Jlc3VsdClcblxubGV0IHNlYXJjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvblxuICAgIChKcy5PcHQubWFwXG4gICAgICAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgKGZ1biByZXNfcHJlIC0+XG4gICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IHJlc19wcmUgaW5cbiAgICAgICAgIHJlcyMjLmluZGV4LCByZXMpKVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgPSBzZWFyY2hcblxubGV0IG1hdGNoZWRfc3RyaW5nIHIgPSBibHVudF9zdHJfYXJyYXlfZ2V0IHIgMFxuXG5sZXQgbWF0Y2hlZF9ncm91cCByIGkgPVxuICBKcy5PcHRkZWYudG9fb3B0aW9uIChKcy5PcHRkZWYubWFwIChKcy5hcnJheV9nZXQgciBpKSBKcy50b19ieXRlc3RyaW5nKVxuXG5sZXQgcXVvdGVfcmVwbF9yZSA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJbJF1cIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHF1b3RlX3JlcGwgcyA9IChKcy5ieXRlc3RyaW5nIHMpIyNyZXBsYWNlIHF1b3RlX3JlcGxfcmUgKEpzLnN0cmluZyBcIiQkJCRcIilcblxubGV0IGdsb2JhbF9yZXBsYWNlIHIgcyBzX2J5ID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHIgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCByZXBsYWNlX2ZpcnN0IHIgcyBzX2J5ID1cbiAgbGV0IGZsYWdzID1cbiAgICBtYXRjaCBKcy50b19ib29sIHIjIy5pZ25vcmVDYXNlLCBKcy50b19ib29sIHIjIy5tdWx0aWxpbmUgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEpzLnN0cmluZyBcIlwiXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtXCJcbiAgICB8IHRydWUsIGZhbHNlIC0+IEpzLnN0cmluZyBcImlcIlxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtaVwiXG4gIGluXG4gIGxldCByJyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIHIjIy5zb3VyY2UgZmxhZ3MgaW5cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByJyAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IGxpc3Rfb2ZfanNfYXJyYXkgYSA9XG4gIGxldCByZWMgYXV4IGFjY3UgaWR4ID1cbiAgICBpZiBpZHggPCAwIHRoZW4gYWNjdSBlbHNlIGF1eCAoYmx1bnRfc3RyX2FycmF5X2dldCBhIGlkeCA6OiBhY2N1KSAoaWR4IC0gMSlcbiAgaW5cbiAgYXV4IFtdIChhIyMubGVuZ3RoIC0gMSlcblxubGV0IHNwbGl0IHIgcyA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHAgcikpXG5cbmxldCBib3VuZGVkX3NwbGl0IHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cExpbWl0ZWQgciBpKSlcblxuKCogTW9yZSBjb25zdHJ1Y3RvcnMgKilcblxubGV0IHF1b3RlX3JlID0gcmVnZXhwIFwiW1xcXFxdWygpXFxcXFxcXFx8KyouP3t9XiRdXCJcblxubGV0IHF1b3RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHF1b3RlX3JlIChKcy5zdHJpbmcgXCJcXFxcJCZcIikpXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSByZWdleHAgKHF1b3RlIHMpXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gcmVnZXhwX2Nhc2VfZm9sZCAocXVvdGUgcylcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBVcmwgdGFtcGVyaW5nLiAqKVxuXG5sZXQgc3BsaXQgYyBzID0gSnMuc3RyX2FycmF5IChzIyNzcGxpdCAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSlcblxubGV0IHNwbGl0XzIgYyBzID1cbiAgbGV0IGluZGV4ID0gcyMjaW5kZXhPZiAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSBpblxuICBpZiBpbmRleCA8IDAgdGhlbiBKcy51bmRlZmluZWQgZWxzZSBKcy5kZWYgKHMjI3NsaWNlIDAgaW5kZXgsIHMjI3NsaWNlX2VuZCAoaW5kZXggKyAxKSlcblxuZXhjZXB0aW9uIExvY2FsX2V4blxuXG5sZXQgaW50ZXJydXB0ICgpID0gcmFpc2UgTG9jYWxfZXhuXG5cbigqIHVybCAoQUtBIHBlcmNlbnQpIGVuY29kaW5nL2RlY29kaW5nICopXG5cbmxldCBwbHVzX3JlID0gUmVnZXhwLnJlZ2V4cF9zdHJpbmcgXCIrXCJcblxubGV0IGVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiJTJCXCJcblxubGV0IHVuZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIgXCJcblxubGV0IHBsdXNfcmVfanNfc3RyaW5nID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlxcXFwrXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCB1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzID1cbiAgcGx1c19yZV9qc19zdHJpbmcjIy5sYXN0SW5kZXggOj0gMDtcbiAgcyMjcmVwbGFjZSBwbHVzX3JlX2pzX3N0cmluZyAoSnMuc3RyaW5nIFwiIFwiKVxuXG5sZXQgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlICh1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzKSlcblxubGV0IHVybGRlY29kZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgKHVuZXNjYXBlX3BsdXMgcykpKVxuXG4oKmxldCB1cmxlbmNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIHMpKilcblxubGV0IHVybGVuY29kZSA/KHdpdGhfcGx1cyA9IHRydWUpIHMgPVxuICBpZiB3aXRoX3BsdXNcbiAgdGhlbiBlc2NhcGVfcGx1cyAoSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKSlcbiAgZWxzZSBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpXG5cbnR5cGUgaHR0cF91cmwgPVxuICB7IGh1X2hvc3QgOiBzdHJpbmcgICgqKiBUaGUgaG9zdCBwYXJ0IG9mIHRoZSB1cmwuICopXG4gIDsgaHVfcG9ydCA6IGludCAgKCoqIFRoZSBwb3J0IGZvciB0aGUgY29ubmVjdGlvbiBpZiBhbnkuICopXG4gIDsgaHVfcGF0aCA6IHN0cmluZyBsaXN0ICAoKiogVGhlIHBhdGggc3BsaXQgb24gWycvJ10gY2hhcmFjdGVycy4gKilcbiAgOyBodV9wYXRoX3N0cmluZyA6IHN0cmluZyAgKCoqIFRoZSBvcmlnaW5hbCBlbnRpcmUgcGF0aC4gKilcbiAgOyBodV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgICAgICgqKiBBcmd1bWVudHMgYXMgYSBmaWVsZC12YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRpb24gbGlzdC4qKVxuICA7IGh1X2ZyYWdtZW50IDogc3RyaW5nICAoKiogVGhlIGZyYWdtZW50IHBhcnQgKGFmdGVyIHRoZSBbJyMnXSBjaGFyYWN0ZXIpLiAqKVxuICB9XG4oKiogVGhlIHR5cGUgZm9yIEhUVFAgdXJsLiAqKVxuXG50eXBlIGZpbGVfdXJsID1cbiAgeyBmdV9wYXRoIDogc3RyaW5nIGxpc3RcbiAgOyBmdV9wYXRoX3N0cmluZyA6IHN0cmluZ1xuICA7IGZ1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgOyBmdV9mcmFnbWVudCA6IHN0cmluZ1xuICB9XG4oKiogVGhlIHR5cGUgZm9yIGxvY2FsIGZpbGUgdXJscy4gKilcblxudHlwZSB1cmwgPVxuICB8IEh0dHAgb2YgaHR0cF91cmxcbiAgfCBIdHRwcyBvZiBodHRwX3VybFxuICB8IEZpbGUgb2YgZmlsZV91cmxcbiAgICAgICgqKiBUaGUgdHlwZSBmb3IgdXJscy4gW0ZpbGVdIGlzIGZvciBsb2NhbCBmaWxlcyBhbmQgW0V4b3RpYyBzXSBpcyBmb3JcbiAgICB1bmtub3duL3Vuc3VwcG9ydGVkIHByb3RvY29scy4gKilcblxuZXhjZXB0aW9uIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbmxldCBpc19zZWN1cmUgcHJvdF9zdHJpbmcgPVxuICBtYXRjaCBKcy50b19ieXRlc3RyaW5nIHByb3Rfc3RyaW5nIyN0b0xvd2VyQ2FzZSB3aXRoXG4gIHwgXCJodHRwczpcIiB8IFwiaHR0cHNcIiAtPiB0cnVlXG4gIHwgXCJodHRwOlwiIHwgXCJodHRwXCIgLT4gZmFsc2VcbiAgfCBcImZpbGU6XCIgfCBcImZpbGVcIiB8IF8gLT4gcmFpc2UgTm90X2FuX2h0dHBfcHJvdG9jb2xcblxuKCogcG9ydCBudW1iZXIgKilcbmxldCBkZWZhdWx0X2h0dHBfcG9ydCA9IDgwXG5cbmxldCBkZWZhdWx0X2h0dHBzX3BvcnQgPSA0NDNcblxuKCogcGF0aCAqKVxubGV0IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGxldCBqID0gdHJ5IFN0cmluZy5pbmRleF9mcm9tIHMgaSAnLycgd2l0aCBOb3RfZm91bmQgLT4gbCBpblxuICAgIGxldCB3b3JkID0gU3RyaW5nLnN1YiBzIGkgKGogLSBpKSBpblxuICAgIGlmIGogPj0gbCB0aGVuIFsgd29yZCBdIGVsc2Ugd29yZCA6OiBhdXggKGogKyAxKVxuICBpblxuICBtYXRjaCBhdXggMCB3aXRoXG4gIHwgWyBcIlwiIF0gLT4gW11cbiAgfCBbIFwiXCI7IFwiXCIgXSAtPiBbIFwiXCIgXVxuICB8IGEgLT4gYVxuXG4oKiBBcmd1bWVudHMgKilcbmxldCBlbmNvZGVfYXJndW1lbnRzIGwgPVxuICBTdHJpbmcuY29uY2F0IFwiJlwiIChMaXN0Lm1hcCAoZnVuIChuLCB2KSAtPiB1cmxlbmNvZGUgbiBeIFwiPVwiIF4gdXJsZW5jb2RlIHYpIGwpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyBzID1cbiAgbGV0IGFyciA9IHNwbGl0ICcmJyBzIGluXG4gIGxldCBsZW4gPSBhcnIjIy5sZW5ndGggaW5cbiAgbGV0IG5hbWVfdmFsdWVfc3BsaXQgcyA9IHNwbGl0XzIgJz0nIHMgaW5cbiAgbGV0IHJlYyBhdXggYWNjIGlkeCA9XG4gICAgaWYgaWR4IDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGF1eFxuICAgICAgICAgIChKcy5PcHRkZWYuY2FzZSAoSnMuYXJyYXlfZ2V0IGFyciBpZHgpIGludGVycnVwdCAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgIEpzLk9wdGRlZi5jYXNlIChuYW1lX3ZhbHVlX3NwbGl0IHMpIGludGVycnVwdCAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBnZXQgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBpblxuICAgICAgICAgICAgICAgICAgIGdldCB4LCBnZXQgeSkpXG4gICAgICAgICAgOjogYWNjKVxuICAgICAgICAgIChwcmVkIGlkeClcbiAgICAgIHdpdGggTG9jYWxfZXhuIC0+IGF1eCBhY2MgKHByZWQgaWR4KVxuICBpblxuICBhdXggW10gKGxlbiAtIDEpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzIHMgPSBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgdXJsX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nXG4gICAgICAgXCJeKFtIaF1bVHRdW1R0XVtQcF1bU3NdPyk6Ly8oWzAtOWEtekEtWi4tXSt8XFxcXFtbMC05YS16QS1aLi1dK1xcXFxdfFxcXFxbWzAtOUEtRmEtZjouXStcXFxcXSk/KDooWzAtOV0rKSk/KC8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyk/JFwiKVxuXG5sZXQgZmlsZV9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZyBcIl4oW0ZmXVtJaV1bTGxdW0VlXSk6Ly8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyRcIilcblxubGV0IHVybF9vZl9qc19zdHJpbmcgcyA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKHVybF9yZSMjZXhlYyBzKVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChmaWxlX3JlIyNleGVjIHMpXG4gICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoRmlsZVxuICAgICAgICAgICAgICAgeyBmdV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIDsgZnVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgICAgICAgIEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIH0pKSlcbiAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgIGxldCBzc2wgPSBpc19zZWN1cmUgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMSkgaW50ZXJydXB0KSBpblxuICAgICAgbGV0IHBvcnRfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IGlmIHNzbCB0aGVuIDQ0MyBlbHNlIDgwXG4gICAgICAgIHwgcyAtPiBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgIGluXG4gICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgdXJsID1cbiAgICAgICAgeyBodV9ob3N0ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgOyBodV9wb3J0ID1cbiAgICAgICAgICAgIHBvcnRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSkpXG4gICAgICAgIDsgaHVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgOyBodV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgIDsgaHVfYXJndW1lbnRzID1cbiAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDgpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgOyBodV9mcmFnbWVudCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxMCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgU29tZSAoaWYgc3NsIHRoZW4gSHR0cHMgdXJsIGVsc2UgSHR0cCB1cmwpKVxuXG5sZXQgdXJsX29mX3N0cmluZyBzID0gdXJsX29mX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgc3RyaW5nX29mX3VybCA9IGZ1bmN0aW9uXG4gIHwgRmlsZSB7IGZ1X3BhdGggPSBwYXRoOyBmdV9hcmd1bWVudHMgPSBhcmdzOyBmdV9mcmFnbWVudCA9IGZyYWc7IF8gfSAtPiAoXG4gICAgICBcImZpbGU6Ly9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHA6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgODAgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cHNcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHBzOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDQ0MyAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcblxubW9kdWxlIEN1cnJlbnQgPSBzdHJ1Y3RcbiAgbGV0IGwgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5PcHRkZWYucmV0dXJuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uKVxuICAgIHRoZW4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb25cbiAgICBlbHNlXG4gICAgICBsZXQgZW1wdHkgPSBKcy5zdHJpbmcgXCJcIiBpblxuICAgICAgb2JqZWN0JWpzXG4gICAgICAgIHZhbCBtdXRhYmxlIGhyZWYgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHByb3RvY29sID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0bmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcG9ydCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcGF0aG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHNlYXJjaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaGFzaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG9yaWdpbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICAgIG1ldGhvZCByZWxvYWQgPSAoKVxuXG4gICAgICAgIG1ldGhvZCByZXBsYWNlIF8gPSAoKVxuXG4gICAgICAgIG1ldGhvZCBhc3NpZ24gXyA9ICgpXG4gICAgICBlbmRcblxuICBsZXQgaG9zdCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ob3N0bmFtZVxuXG4gIGxldCBwcm90b2NvbCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wcm90b2NvbFxuXG4gIGxldCBwb3J0ID1cbiAgICAoZnVuICgpIC0+XG4gICAgICB0cnkgU29tZSAoaW50X29mX3N0cmluZyAoSnMudG9fYnl0ZXN0cmluZyBsIyMucG9ydCkpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmUpXG4gICAgICAoKVxuXG4gIGxldCBwYXRoX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wYXRobmFtZVxuXG4gIGxldCBwYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0cmluZ1xuXG4gIGxldCBhcmd1bWVudHMgPVxuICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAoaWYgSnMuZXF1YWxzIChsIyMuc2VhcmNoIyNjaGFyQXQgMCkgKEpzLnN0cmluZyBcIj9cIilcbiAgICAgICB0aGVuIGwjIy5zZWFyY2gjI3NsaWNlX2VuZCAxXG4gICAgICAgZWxzZSBsIyMuc2VhcmNoKVxuXG4gIGxldCBnZXRfZnJhZ21lbnQgKCkgPVxuICAgIGxldCBzID0gSnMudG9fYnl0ZXN0cmluZyBsIyMuaGFzaCBpblxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgQ2hhci5lcXVhbCBzLlswXSAnIydcbiAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIGVsc2Ugc1xuXG4gIGxldCBzZXRfZnJhZ21lbnQgcyA9IGwjIy5oYXNoIDo9IEpzLmJ5dGVzdHJpbmcgc1xuXG4gIGxldCBnZXQgKCkgPSB1cmxfb2ZfanNfc3RyaW5nIGwjIy5ocmVmXG5cbiAgbGV0IHNldCB1ID0gbCMjLmhyZWYgOj0gSnMuYnl0ZXN0cmluZyAoc3RyaW5nX29mX3VybCB1KVxuXG4gIGxldCBhc19zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaHJlZlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbmV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbmxldCB1cGRhdGVfZmlsZSB+bmFtZSB+Y29udGVudCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IG5hbWUgaW5cbiAgb3V0cHV0X3N0cmluZyBvYyBjb250ZW50O1xuICBjbG9zZV9vdXQgb2NcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6XG4gIG91dF9jaGFubmVsIC0+IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbmxldCBzZXRfY2hhbm5lbF9mbHVzaGVyIChvdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsKSAoZiA6IHN0cmluZyAtPiB1bml0KSA9XG4gIGxldCBmJyA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayA9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIHMgLT4gZiAoSnMudG9fYnl0ZXN0cmluZyBzKSlcbiAgaW5cbiAgc2V0X2NoYW5uZWxfb3V0cHV0JyBvdXRfY2hhbm5lbCBmJ1xuXG5sZXQgc2V0X2NoYW5uZWxfZmlsbGVyIChpbl9jaGFubmVsIDogaW5fY2hhbm5lbCkgKGYgOiB1bml0IC0+IHN0cmluZykgPVxuICBsZXQgZicgOiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayBmIGluXG4gIHNldF9jaGFubmVsX2lucHV0JyBpbl9jaGFubmVsIGYnXG5cbmV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOlxuICBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbmV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxubGV0IG1vdW50IH5wYXRoIGYgPVxuICBtb3VudF9hdXRvbG9hZCBwYXRoIChKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJlZml4IHBhdGggLT4gZiB+cHJlZml4IH5wYXRoKSlcblxubGV0IHVubW91bnQgfnBhdGggPSB1bm1vdW50IHBhdGhcblxubGV0IGpzX29mX29jYW1sX3ZlcnNpb24gPVxuICBpZiBTdHJpbmcuZXF1YWwgTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb24gXCJcIlxuICB0aGVuIExpYl92ZXJzaW9uLnNcbiAgZWxzZSBMaWJfdmVyc2lvbi5zIF4gXCIrXCIgXiBMaWJfdmVyc2lvbi5naXRfdmVyc2lvblxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOSBBbGV4YW5kZXIgWWFuaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyU2l6ZSA9IG9iamVjdFxuICBtZXRob2QgaW5saW5lU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYmxvY2tTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm9yZGVyQm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50Qm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBib3ggOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb2JzZXJ2ZV93aXRoT3B0aW9ucyA6XG4gICAgI0RvbS5ub2RlIEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIDogcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IHJlc2l6ZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9SZXNpemVPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcmVzaXplT2JzZXJ2ZXJcblxubGV0IHJlc2l6ZU9ic2VydmVyIDpcbiAgICAoICAgKHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICByZXNpemVPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGJveCA6IEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbilcbiAgICAoKSA6IHJlc2l6ZU9ic2VydmVyIEpzLnQgPVxuICBsZXQgb2JzID0gbmV3JWpzIHJlc2l6ZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIChtYXRjaCBib3ggd2l0aFxuICB8IE5vbmUgLT4gb2JzIyNvYnNlcnZlIG5vZGVcbiAgfCBTb21lIGJveCAtPlxuICAgICAgbGV0IG9wdHMgPSBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSBpblxuICAgICAgb3B0cyMjLmJveCA6PSBib3g7XG4gICAgICBvYnMjI29ic2VydmVfd2l0aE9wdGlvbnMgbm9kZSBvcHRzKTtcbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDIxIFBoaWxpcCBXaGl0ZVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgZW50cnlUeXBlcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVudHJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRUaW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGdldEVudHJpZXMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA6XG4gICAgKCAgIChwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0IEpzLnQgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlIH5lbnRyeV90eXBlcyB+ZiA9XG4gIGxldCBlbnRyeV90eXBlcyA9IGVudHJ5X3R5cGVzIHw+IExpc3QubWFwIEpzLnN0cmluZyB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IGluXG4gIGxldCBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBsZXQgKCkgPSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IyMuZW50cnlUeXBlcyA6PSBlbnRyeV90eXBlcyBpblxuICBsZXQgb2JzID0gbmV3JWpzIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgY2hpbGRMaXN0IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJ0cmVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVGaWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvblJlY29yZCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZW1vdmVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lc3BhY2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgOiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9NdXRhdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhjaGlsZF9saXN0IDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVzIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YSA6IGJvb2wgb3B0aW9uKVxuICAgID8oc3VidHJlZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfZmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCBvcHRpb24pXG4gICAgKCkgOiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgPVxuICBsZXQgb3B0X2l0ZXIgeCBmID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBtdXRhdGlvbk9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCBjZmcgPSBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoaWxkX2xpc3QgKGZ1biB2IC0+IGNmZyMjLmNoaWxkTGlzdCA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVzIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVzIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIHN1YnRyZWUgKGZ1biB2IC0+IGNmZyMjLnN1YnRyZWUgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlT2xkVmFsdWUgOj0gdikgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6PSB2KVxuICBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGF0dHJpYnV0ZV9maWx0ZXIgKGZ1biBsIC0+XG4gICAgICAgIGNmZyMjLmF0dHJpYnV0ZUZpbHRlciA6PSBKcy5hcnJheSAoQXJyYXkub2ZfbGlzdCBsKSlcbiAgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIG5vZGUgY2ZnIGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBQaWVycmUgQ2hhbWJhcnQgMjAxMi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSA8ID4gSnMudFxuXG5sZXQgb2JqID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSAodiA6ICdhKSA9XG4gICgqICdfJyBpcyBhZGRlZCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvYmplY3RzIG1ldGhvZHMgKilcbiAgSnMuVW5zYWZlLnNldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpIHZcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpID1cbiAgSnMuVW5zYWZlLmRlbGV0ZSB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgOiAnYSBKcy5PcHRkZWYudCA9XG4gIEpzLlVuc2FmZS5nZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCA9XG4gIGxldCBrZXlfYXJyYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50ID1cbiAgICBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdCMja2V5cyB0XG4gIGluXG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgZm9yIGkgPSAwIHRvIHByZWQga2V5X2FycmF5IyMubGVuZ3RoIGRvXG4gICAgbGV0IGtleSA9XG4gICAgICBKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQga2V5X2FycmF5IGkpIChmdW4gKCkgLT4gZmFpbHdpdGggXCJKc3RhYmxlLmtleXNcIilcbiAgICBpblxuICAgIHJlcyA6PSBrZXkjI3N1YnN0cmluZyAwIChwcmVkIGtleSMjLmxlbmd0aCkgOjogIXJlc1xuICBkb25lO1xuICBMaXN0LnJldiAhcmVzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IEdyw6lnb2lyZSBIZW5yeSAyMDEwLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHBhcnNlXyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuIGpzX3N0cmluZyB0IC0+ICgnYiB0LCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeV8gOlxuICAgICdhICdiICdjICdkLiAnYSAtPiAoJ2IsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQganNvbiA6IGpzb24gSnMudCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgaW5wdXRfcmV2aXZlciA9XG4gIGxldCByZXZpdmVyIF90aGlzIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgdmFsdWUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIE9iai5yZXByICh0b19ieXRlc3RyaW5nIChVbnNhZmUuY29lcmNlIHZhbHVlKSlcbiAgICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgSnMuYXJyYXlfZW1wdHlcbiAgICAgICAgICAgICYmIChVbnNhZmUuY29lcmNlIHZhbHVlKSMjLmxlbmd0aCA9PSA0XG4gICAgICAgICAgICAmJiBVbnNhZmUuZ2V0IHZhbHVlIDAgPT0gMjU1XG4gICAgdGhlblxuICAgICAgT2JqLnJlcHJcbiAgICAgICAgKEpzb29fcnVudGltZS5JbnQ2NC5jcmVhdGVfaW50NjRfbG9fbWlfaGlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMSlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMilcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMykpXG4gICAgZWxzZSBPYmoucmVwciB2YWx1ZVxuICBpblxuICB3cmFwX21ldGhfY2FsbGJhY2sgcmV2aXZlclxuXG5sZXQgdW5zYWZlX2lucHV0IHMgPSBqc29uIyNwYXJzZV8gcyBpbnB1dF9yZXZpdmVyXG5cbmNsYXNzIHR5cGUgb2JqID0gb2JqZWN0XG4gIG1ldGhvZCBjb25zdHJ1Y3RvciA6ICdhLiAnYSBjb25zdHIgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBtbEludDY0X2NvbnN0ciA9XG4gIGxldCBkdW1teV9pbnQ2NCA9IDFMIGluXG4gIGxldCBkdW1teV9vYmogOiBvYmogdCA9IE9iai5tYWdpYyBkdW1teV9pbnQ2NCBpblxuICBkdW1teV9vYmojIy5jb25zdHJ1Y3RvclxuXG5sZXQgb3V0cHV0X3Jldml2ZXIgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgdmFsdWUpID0gT2JqLnN0cmluZ190YWdcbiAgdGhlbiBPYmoucmVwciAoYnl0ZXN0cmluZyAoT2JqLm1hZ2ljIHZhbHVlIDogc3RyaW5nKSlcbiAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIG1sSW50NjRfY29uc3RyXG4gIHRoZW5cbiAgICBsZXQgdmFsdWUgPSBVbnNhZmUuY29lcmNlIHZhbHVlIGluXG4gICAgT2JqLnJlcHIgKGFycmF5IFt8IDI1NTsgdmFsdWUjIy5sbzsgdmFsdWUjIy5taTsgdmFsdWUjIy5oaSB8XSlcbiAgZWxzZSBPYmoucmVwciB2YWx1ZVxuXG5sZXQgb3V0cHV0IG9iaiA9IGpzb24jI3N0cmluZ2lmeV8gb2JqIChKcy53cmFwX2NhbGxiYWNrIG91dHB1dF9yZXZpdmVyKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gICgqIFRoZSB0eXBlIG9mIENTUyBjb2xvcnMuIEZpcnN0IGJ5IG5hbWUgYW5kIHRoZW4gYnkgY29uc3RydWN0b3IuICopXG4gIHR5cGUgbmFtZSA9XG4gICAgfCBBbGljZWJsdWVcbiAgICB8IEFudGlxdWV3aGl0ZVxuICAgIHwgQXF1YVxuICAgIHwgQXF1YW1hcmluZVxuICAgIHwgQXp1cmVcbiAgICB8IEJlaWdlXG4gICAgfCBCaXNxdWVcbiAgICB8IEJsYWNrXG4gICAgfCBCbGFuY2hlZGFsbW9uZFxuICAgIHwgQmx1ZVxuICAgIHwgQmx1ZXZpb2xldFxuICAgIHwgQnJvd25cbiAgICB8IEJ1cmx5d29vZFxuICAgIHwgQ2FkZXRibHVlXG4gICAgfCBDaGFydHJldXNlXG4gICAgfCBDaG9jb2xhdGVcbiAgICB8IENvcmFsXG4gICAgfCBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgQ29ybnNpbGtcbiAgICB8IENyaW1zb25cbiAgICB8IEN5YW5cbiAgICB8IERhcmtibHVlXG4gICAgfCBEYXJrY3lhblxuICAgIHwgRGFya2dvbGRlbnJvZFxuICAgIHwgRGFya2dyYXlcbiAgICB8IERhcmtncmVlblxuICAgIHwgRGFya2dyZXlcbiAgICB8IERhcmtraGFraVxuICAgIHwgRGFya21hZ2VudGFcbiAgICB8IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBEYXJrb3JhbmdlXG4gICAgfCBEYXJrb3JjaGlkXG4gICAgfCBEYXJrcmVkXG4gICAgfCBEYXJrc2FsbW9uXG4gICAgfCBEYXJrc2VhZ3JlZW5cbiAgICB8IERhcmtzbGF0ZWJsdWVcbiAgICB8IERhcmtzbGF0ZWdyYXlcbiAgICB8IERhcmtzbGF0ZWdyZXlcbiAgICB8IERhcmt0dXJxdW9pc2VcbiAgICB8IERhcmt2aW9sZXRcbiAgICB8IERlZXBwaW5rXG4gICAgfCBEZWVwc2t5Ymx1ZVxuICAgIHwgRGltZ3JheVxuICAgIHwgRGltZ3JleVxuICAgIHwgRG9kZ2VyYmx1ZVxuICAgIHwgRmlyZWJyaWNrXG4gICAgfCBGbG9yYWx3aGl0ZVxuICAgIHwgRm9yZXN0Z3JlZW5cbiAgICB8IEZ1Y2hzaWFcbiAgICB8IEdhaW5zYm9yb1xuICAgIHwgR2hvc3R3aGl0ZVxuICAgIHwgR29sZFxuICAgIHwgR29sZGVucm9kXG4gICAgfCBHcmF5XG4gICAgfCBHcmV5XG4gICAgfCBHcmVlblxuICAgIHwgR3JlZW55ZWxsb3dcbiAgICB8IEhvbmV5ZGV3XG4gICAgfCBIb3RwaW5rXG4gICAgfCBJbmRpYW5yZWRcbiAgICB8IEluZGlnb1xuICAgIHwgSXZvcnlcbiAgICB8IEtoYWtpXG4gICAgfCBMYXZlbmRlclxuICAgIHwgTGF2ZW5kZXJibHVzaFxuICAgIHwgTGF3bmdyZWVuXG4gICAgfCBMZW1vbmNoaWZmb25cbiAgICB8IExpZ2h0Ymx1ZVxuICAgIHwgTGlnaHRjb3JhbFxuICAgIHwgTGlnaHRjeWFuXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgTGlnaHRncmF5XG4gICAgfCBMaWdodGdyZWVuXG4gICAgfCBMaWdodGdyZXlcbiAgICB8IExpZ2h0cGlua1xuICAgIHwgTGlnaHRzYWxtb25cbiAgICB8IExpZ2h0c2VhZ3JlZW5cbiAgICB8IExpZ2h0c2t5Ymx1ZVxuICAgIHwgTGlnaHRzbGF0ZWdyYXlcbiAgICB8IExpZ2h0c2xhdGVncmV5XG4gICAgfCBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgTGlnaHR5ZWxsb3dcbiAgICB8IExpbWVcbiAgICB8IExpbWVncmVlblxuICAgIHwgTGluZW5cbiAgICB8IE1hZ2VudGFcbiAgICB8IE1hcm9vblxuICAgIHwgTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgTWVkaXVtYmx1ZVxuICAgIHwgTWVkaXVtb3JjaGlkXG4gICAgfCBNZWRpdW1wdXJwbGVcbiAgICB8IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBNZWRpdW10dXJxdW9pc2VcbiAgICB8IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgTWlkbmlnaHRibHVlXG4gICAgfCBNaW50Y3JlYW1cbiAgICB8IE1pc3R5cm9zZVxuICAgIHwgTW9jY2FzaW5cbiAgICB8IE5hdmFqb3doaXRlXG4gICAgfCBOYXZ5XG4gICAgfCBPbGRsYWNlXG4gICAgfCBPbGl2ZVxuICAgIHwgT2xpdmVkcmFiXG4gICAgfCBPcmFuZ2VcbiAgICB8IE9yYW5nZXJlZFxuICAgIHwgT3JjaGlkXG4gICAgfCBQYWxlZ29sZGVucm9kXG4gICAgfCBQYWxlZ3JlZW5cbiAgICB8IFBhbGV0dXJxdW9pc2VcbiAgICB8IFBhbGV2aW9sZXRyZWRcbiAgICB8IFBhcGF5YXdoaXBcbiAgICB8IFBlYWNocHVmZlxuICAgIHwgUGVydVxuICAgIHwgUGlua1xuICAgIHwgUGx1bVxuICAgIHwgUG93ZGVyYmx1ZVxuICAgIHwgUHVycGxlXG4gICAgfCBSZWRcbiAgICB8IFJvc3licm93blxuICAgIHwgUm95YWxibHVlXG4gICAgfCBTYWRkbGVicm93blxuICAgIHwgU2FsbW9uXG4gICAgfCBTYW5keWJyb3duXG4gICAgfCBTZWFncmVlblxuICAgIHwgU2Vhc2hlbGxcbiAgICB8IFNpZW5uYVxuICAgIHwgU2lsdmVyXG4gICAgfCBTa3libHVlXG4gICAgfCBTbGF0ZWJsdWVcbiAgICB8IFNsYXRlZ3JheVxuICAgIHwgU2xhdGVncmV5XG4gICAgfCBTbm93XG4gICAgfCBTcHJpbmdncmVlblxuICAgIHwgU3RlZWxibHVlXG4gICAgfCBUYW5cbiAgICB8IFRlYWxcbiAgICB8IFRoaXN0bGVcbiAgICB8IFRvbWF0b1xuICAgIHwgVHVycXVvaXNlXG4gICAgfCBWaW9sZXRcbiAgICB8IFdoZWF0XG4gICAgfCBXaGl0ZVxuICAgIHwgV2hpdGVzbW9rZVxuICAgIHwgWWVsbG93XG4gICAgfCBZZWxsb3dncmVlblxuXG4gIGxldCBzdHJpbmdfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gXCJhbGljZWJsdWVcIlxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IFwiYW50aXF1ZXdoaXRlXCJcbiAgICB8IEFxdWEgLT4gXCJhcXVhXCJcbiAgICB8IEFxdWFtYXJpbmUgLT4gXCJhcXVhbWFyaW5lXCJcbiAgICB8IEF6dXJlIC0+IFwiYXp1cmVcIlxuICAgIHwgQmVpZ2UgLT4gXCJiZWlnZVwiXG4gICAgfCBCaXNxdWUgLT4gXCJiaXNxdWVcIlxuICAgIHwgQmxhY2sgLT4gXCJibGFja1wiXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiBcImJsYW5jaGVkYWxtb25kXCJcbiAgICB8IEJsdWUgLT4gXCJibHVlXCJcbiAgICB8IEJsdWV2aW9sZXQgLT4gXCJibHVldmlvbGV0XCJcbiAgICB8IEJyb3duIC0+IFwiYnJvd25cIlxuICAgIHwgQnVybHl3b29kIC0+IFwiYnVybHl3b29kXCJcbiAgICB8IENhZGV0Ymx1ZSAtPiBcImNhZGV0Ymx1ZVwiXG4gICAgfCBDaGFydHJldXNlIC0+IFwiY2hhcnRyZXVzZVwiXG4gICAgfCBDaG9jb2xhdGUgLT4gXCJjaG9jb2xhdGVcIlxuICAgIHwgQ29yYWwgLT4gXCJjb3JhbFwiXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiBcImNvcm5mbG93ZXJibHVlXCJcbiAgICB8IENvcm5zaWxrIC0+IFwiY29ybnNpbGtcIlxuICAgIHwgQ3JpbXNvbiAtPiBcImNyaW1zb25cIlxuICAgIHwgQ3lhbiAtPiBcImN5YW5cIlxuICAgIHwgRGFya2JsdWUgLT4gXCJkYXJrYmx1ZVwiXG4gICAgfCBEYXJrY3lhbiAtPiBcImRhcmtjeWFuXCJcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gXCJkYXJrZ29sZGVucm9kXCJcbiAgICB8IERhcmtncmF5IC0+IFwiZGFya2dyYXlcIlxuICAgIHwgRGFya2dyZWVuIC0+IFwiZGFya2dyZWVuXCJcbiAgICB8IERhcmtncmV5IC0+IFwiZGFya2dyZXlcIlxuICAgIHwgRGFya2toYWtpIC0+IFwiZGFya2toYWtpXCJcbiAgICB8IERhcmttYWdlbnRhIC0+IFwiZGFya21hZ2VudGFcIlxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gXCJkYXJrb2xpdmVncmVlblwiXG4gICAgfCBEYXJrb3JhbmdlIC0+IFwiZGFya29yYW5nZVwiXG4gICAgfCBEYXJrb3JjaGlkIC0+IFwiZGFya29yY2hpZFwiXG4gICAgfCBEYXJrcmVkIC0+IFwiZGFya3JlZFwiXG4gICAgfCBEYXJrc2FsbW9uIC0+IFwiZGFya3NhbG1vblwiXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gXCJkYXJrc2VhZ3JlZW5cIlxuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiBcImRhcmtzbGF0ZWJsdWVcIlxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiBcImRhcmtzbGF0ZWdyYXlcIlxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiBcImRhcmtzbGF0ZWdyZXlcIlxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiBcImRhcmt0dXJxdW9pc2VcIlxuICAgIHwgRGFya3Zpb2xldCAtPiBcImRhcmt2aW9sZXRcIlxuICAgIHwgRGVlcHBpbmsgLT4gXCJkZWVwcGlua1wiXG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiBcImRlZXBza3libHVlXCJcbiAgICB8IERpbWdyYXkgLT4gXCJkaW1ncmF5XCJcbiAgICB8IERpbWdyZXkgLT4gXCJkaW1ncmV5XCJcbiAgICB8IERvZGdlcmJsdWUgLT4gXCJkb2RnZXJibHVlXCJcbiAgICB8IEZpcmVicmljayAtPiBcImZpcmVicmlja1wiXG4gICAgfCBGbG9yYWx3aGl0ZSAtPiBcImZsb3JhbHdoaXRlXCJcbiAgICB8IEZvcmVzdGdyZWVuIC0+IFwiZm9yZXN0Z3JlZW5cIlxuICAgIHwgRnVjaHNpYSAtPiBcImZ1Y2hzaWFcIlxuICAgIHwgR2FpbnNib3JvIC0+IFwiZ2FpbnNib3JvXCJcbiAgICB8IEdob3N0d2hpdGUgLT4gXCJnaG9zdHdoaXRlXCJcbiAgICB8IEdvbGQgLT4gXCJnb2xkXCJcbiAgICB8IEdvbGRlbnJvZCAtPiBcImdvbGRlbnJvZFwiXG4gICAgfCBHcmF5IC0+IFwiZ3JheVwiXG4gICAgfCBHcmVlbiAtPiBcImdyZWVuXCJcbiAgICB8IEdyZWVueWVsbG93IC0+IFwiZ3JlZW55ZWxsb3dcIlxuICAgIHwgR3JleSAtPiBcImdyZXlcIlxuICAgIHwgSG9uZXlkZXcgLT4gXCJob25leWRld1wiXG4gICAgfCBIb3RwaW5rIC0+IFwiaG90cGlua1wiXG4gICAgfCBJbmRpYW5yZWQgLT4gXCJpbmRpYW5yZWRcIlxuICAgIHwgSW5kaWdvIC0+IFwiaW5kaWdvXCJcbiAgICB8IEl2b3J5IC0+IFwiaXZvcnlcIlxuICAgIHwgS2hha2kgLT4gXCJraGFraVwiXG4gICAgfCBMYXZlbmRlciAtPiBcImxhdmVuZGVyXCJcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gXCJsYXZlbmRlcmJsdXNoXCJcbiAgICB8IExhd25ncmVlbiAtPiBcImxhd25ncmVlblwiXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gXCJsZW1vbmNoaWZmb25cIlxuICAgIHwgTGlnaHRibHVlIC0+IFwibGlnaHRibHVlXCJcbiAgICB8IExpZ2h0Y29yYWwgLT4gXCJsaWdodGNvcmFsXCJcbiAgICB8IExpZ2h0Y3lhbiAtPiBcImxpZ2h0Y3lhblwiXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICB8IExpZ2h0Z3JheSAtPiBcImxpZ2h0Z3JheVwiXG4gICAgfCBMaWdodGdyZWVuIC0+IFwibGlnaHRncmVlblwiXG4gICAgfCBMaWdodGdyZXkgLT4gXCJsaWdodGdyZXlcIlxuICAgIHwgTGlnaHRwaW5rIC0+IFwibGlnaHRwaW5rXCJcbiAgICB8IExpZ2h0c2FsbW9uIC0+IFwibGlnaHRzYWxtb25cIlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgIHwgTGlnaHRza3libHVlIC0+IFwibGlnaHRza3libHVlXCJcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICB8IExpZ2h0eWVsbG93IC0+IFwibGlnaHR5ZWxsb3dcIlxuICAgIHwgTGltZSAtPiBcImxpbWVcIlxuICAgIHwgTGltZWdyZWVuIC0+IFwibGltZWdyZWVuXCJcbiAgICB8IExpbmVuIC0+IFwibGluZW5cIlxuICAgIHwgTWFnZW50YSAtPiBcIm1hZ2VudGFcIlxuICAgIHwgTWFyb29uIC0+IFwibWFyb29uXCJcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICB8IE1lZGl1bWJsdWUgLT4gXCJtZWRpdW1ibHVlXCJcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiBcIm1lZGl1bW9yY2hpZFwiXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gXCJtZWRpdW1wdXJwbGVcIlxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gXCJtZWRpdW1zZWFncmVlblwiXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgfCBNaW50Y3JlYW0gLT4gXCJtaW50Y3JlYW1cIlxuICAgIHwgTWlzdHlyb3NlIC0+IFwibWlzdHlyb3NlXCJcbiAgICB8IE1vY2Nhc2luIC0+IFwibW9jY2FzaW5cIlxuICAgIHwgTmF2YWpvd2hpdGUgLT4gXCJuYXZham93aGl0ZVwiXG4gICAgfCBOYXZ5IC0+IFwibmF2eVwiXG4gICAgfCBPbGRsYWNlIC0+IFwib2xkbGFjZVwiXG4gICAgfCBPbGl2ZSAtPiBcIm9saXZlXCJcbiAgICB8IE9saXZlZHJhYiAtPiBcIm9saXZlZHJhYlwiXG4gICAgfCBPcmFuZ2UgLT4gXCJvcmFuZ2VcIlxuICAgIHwgT3JhbmdlcmVkIC0+IFwib3JhbmdlcmVkXCJcbiAgICB8IE9yY2hpZCAtPiBcIm9yY2hpZFwiXG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgfCBQYWxlZ3JlZW4gLT4gXCJwYWxlZ3JlZW5cIlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiBcInBhbGV0dXJxdW9pc2VcIlxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiBcInBhbGV2aW9sZXRyZWRcIlxuICAgIHwgUGFwYXlhd2hpcCAtPiBcInBhcGF5YXdoaXBcIlxuICAgIHwgUGVhY2hwdWZmIC0+IFwicGVhY2hwdWZmXCJcbiAgICB8IFBlcnUgLT4gXCJwZXJ1XCJcbiAgICB8IFBpbmsgLT4gXCJwaW5rXCJcbiAgICB8IFBsdW0gLT4gXCJwbHVtXCJcbiAgICB8IFBvd2RlcmJsdWUgLT4gXCJwb3dkZXJibHVlXCJcbiAgICB8IFB1cnBsZSAtPiBcInB1cnBsZVwiXG4gICAgfCBSZWQgLT4gXCJyZWRcIlxuICAgIHwgUm9zeWJyb3duIC0+IFwicm9zeWJyb3duXCJcbiAgICB8IFJveWFsYmx1ZSAtPiBcInJveWFsYmx1ZVwiXG4gICAgfCBTYWRkbGVicm93biAtPiBcInNhZGRsZWJyb3duXCJcbiAgICB8IFNhbG1vbiAtPiBcInNhbG1vblwiXG4gICAgfCBTYW5keWJyb3duIC0+IFwic2FuZHlicm93blwiXG4gICAgfCBTZWFncmVlbiAtPiBcInNlYWdyZWVuXCJcbiAgICB8IFNlYXNoZWxsIC0+IFwic2Vhc2hlbGxcIlxuICAgIHwgU2llbm5hIC0+IFwic2llbm5hXCJcbiAgICB8IFNpbHZlciAtPiBcInNpbHZlclwiXG4gICAgfCBTa3libHVlIC0+IFwic2t5Ymx1ZVwiXG4gICAgfCBTbGF0ZWJsdWUgLT4gXCJzbGF0ZWJsdWVcIlxuICAgIHwgU2xhdGVncmF5IC0+IFwic2xhdGVncmF5XCJcbiAgICB8IFNsYXRlZ3JleSAtPiBcInNsYXRlZ3JleVwiXG4gICAgfCBTbm93IC0+IFwic25vd1wiXG4gICAgfCBTcHJpbmdncmVlbiAtPiBcInNwcmluZ2dyZWVuXCJcbiAgICB8IFN0ZWVsYmx1ZSAtPiBcInN0ZWVsYmx1ZVwiXG4gICAgfCBUYW4gLT4gXCJ0YW5cIlxuICAgIHwgVGVhbCAtPiBcInRlYWxcIlxuICAgIHwgVGhpc3RsZSAtPiBcInRoaXN0bGVcIlxuICAgIHwgVG9tYXRvIC0+IFwidG9tYXRvXCJcbiAgICB8IFR1cnF1b2lzZSAtPiBcInR1cnF1b2lzZVwiXG4gICAgfCBWaW9sZXQgLT4gXCJ2aW9sZXRcIlxuICAgIHwgV2hlYXQgLT4gXCJ3aGVhdFwiXG4gICAgfCBXaGl0ZSAtPiBcIndoaXRlXCJcbiAgICB8IFdoaXRlc21va2UgLT4gXCJ3aGl0ZXNtb2tlXCJcbiAgICB8IFllbGxvdyAtPiBcInllbGxvd1wiXG4gICAgfCBZZWxsb3dncmVlbiAtPiBcInllbGxvd2dyZWVuXCJcblxuICBsZXQgbmFtZV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJhbGljZWJsdWVcIiAtPiBBbGljZWJsdWVcbiAgICB8IFwiYW50aXF1ZXdoaXRlXCIgLT4gQW50aXF1ZXdoaXRlXG4gICAgfCBcImFxdWFcIiAtPiBBcXVhXG4gICAgfCBcImFxdWFtYXJpbmVcIiAtPiBBcXVhbWFyaW5lXG4gICAgfCBcImF6dXJlXCIgLT4gQXp1cmVcbiAgICB8IFwiYmVpZ2VcIiAtPiBCZWlnZVxuICAgIHwgXCJiaXNxdWVcIiAtPiBCaXNxdWVcbiAgICB8IFwiYmxhY2tcIiAtPiBCbGFja1xuICAgIHwgXCJibGFuY2hlZGFsbW9uZFwiIC0+IEJsYW5jaGVkYWxtb25kXG4gICAgfCBcImJsdWVcIiAtPiBCbHVlXG4gICAgfCBcImJsdWV2aW9sZXRcIiAtPiBCbHVldmlvbGV0XG4gICAgfCBcImJyb3duXCIgLT4gQnJvd25cbiAgICB8IFwiYnVybHl3b29kXCIgLT4gQnVybHl3b29kXG4gICAgfCBcImNhZGV0Ymx1ZVwiIC0+IENhZGV0Ymx1ZVxuICAgIHwgXCJjaGFydHJldXNlXCIgLT4gQ2hhcnRyZXVzZVxuICAgIHwgXCJjaG9jb2xhdGVcIiAtPiBDaG9jb2xhdGVcbiAgICB8IFwiY29yYWxcIiAtPiBDb3JhbFxuICAgIHwgXCJjb3JuZmxvd2VyYmx1ZVwiIC0+IENvcm5mbG93ZXJibHVlXG4gICAgfCBcImNvcm5zaWxrXCIgLT4gQ29ybnNpbGtcbiAgICB8IFwiY3JpbXNvblwiIC0+IENyaW1zb25cbiAgICB8IFwiY3lhblwiIC0+IEN5YW5cbiAgICB8IFwiZGFya2JsdWVcIiAtPiBEYXJrYmx1ZVxuICAgIHwgXCJkYXJrY3lhblwiIC0+IERhcmtjeWFuXG4gICAgfCBcImRhcmtnb2xkZW5yb2RcIiAtPiBEYXJrZ29sZGVucm9kXG4gICAgfCBcImRhcmtncmF5XCIgLT4gRGFya2dyYXlcbiAgICB8IFwiZGFya2dyZWVuXCIgLT4gRGFya2dyZWVuXG4gICAgfCBcImRhcmtncmV5XCIgLT4gRGFya2dyZXlcbiAgICB8IFwiZGFya2toYWtpXCIgLT4gRGFya2toYWtpXG4gICAgfCBcImRhcmttYWdlbnRhXCIgLT4gRGFya21hZ2VudGFcbiAgICB8IFwiZGFya29saXZlZ3JlZW5cIiAtPiBEYXJrb2xpdmVncmVlblxuICAgIHwgXCJkYXJrb3JhbmdlXCIgLT4gRGFya29yYW5nZVxuICAgIHwgXCJkYXJrb3JjaGlkXCIgLT4gRGFya29yY2hpZFxuICAgIHwgXCJkYXJrcmVkXCIgLT4gRGFya3JlZFxuICAgIHwgXCJkYXJrc2FsbW9uXCIgLT4gRGFya3NhbG1vblxuICAgIHwgXCJkYXJrc2VhZ3JlZW5cIiAtPiBEYXJrc2VhZ3JlZW5cbiAgICB8IFwiZGFya3NsYXRlYmx1ZVwiIC0+IERhcmtzbGF0ZWJsdWVcbiAgICB8IFwiZGFya3NsYXRlZ3JheVwiIC0+IERhcmtzbGF0ZWdyYXlcbiAgICB8IFwiZGFya3NsYXRlZ3JleVwiIC0+IERhcmtzbGF0ZWdyZXlcbiAgICB8IFwiZGFya3R1cnF1b2lzZVwiIC0+IERhcmt0dXJxdW9pc2VcbiAgICB8IFwiZGFya3Zpb2xldFwiIC0+IERhcmt2aW9sZXRcbiAgICB8IFwiZGVlcHBpbmtcIiAtPiBEZWVwcGlua1xuICAgIHwgXCJkZWVwc2t5Ymx1ZVwiIC0+IERlZXBza3libHVlXG4gICAgfCBcImRpbWdyYXlcIiAtPiBEaW1ncmF5XG4gICAgfCBcImRpbWdyZXlcIiAtPiBEaW1ncmV5XG4gICAgfCBcImRvZGdlcmJsdWVcIiAtPiBEb2RnZXJibHVlXG4gICAgfCBcImZpcmVicmlja1wiIC0+IEZpcmVicmlja1xuICAgIHwgXCJmbG9yYWx3aGl0ZVwiIC0+IEZsb3JhbHdoaXRlXG4gICAgfCBcImZvcmVzdGdyZWVuXCIgLT4gRm9yZXN0Z3JlZW5cbiAgICB8IFwiZnVjaHNpYVwiIC0+IEZ1Y2hzaWFcbiAgICB8IFwiZ2FpbnNib3JvXCIgLT4gR2FpbnNib3JvXG4gICAgfCBcImdob3N0d2hpdGVcIiAtPiBHaG9zdHdoaXRlXG4gICAgfCBcImdvbGRcIiAtPiBHb2xkXG4gICAgfCBcImdvbGRlbnJvZFwiIC0+IEdvbGRlbnJvZFxuICAgIHwgXCJncmF5XCIgLT4gR3JheVxuICAgIHwgXCJncmVlblwiIC0+IEdyZWVuXG4gICAgfCBcImdyZWVueWVsbG93XCIgLT4gR3JlZW55ZWxsb3dcbiAgICB8IFwiZ3JleVwiIC0+IEdyZXlcbiAgICB8IFwiaG9uZXlkZXdcIiAtPiBIb25leWRld1xuICAgIHwgXCJob3RwaW5rXCIgLT4gSG90cGlua1xuICAgIHwgXCJpbmRpYW5yZWRcIiAtPiBJbmRpYW5yZWRcbiAgICB8IFwiaW5kaWdvXCIgLT4gSW5kaWdvXG4gICAgfCBcIml2b3J5XCIgLT4gSXZvcnlcbiAgICB8IFwia2hha2lcIiAtPiBLaGFraVxuICAgIHwgXCJsYXZlbmRlclwiIC0+IExhdmVuZGVyXG4gICAgfCBcImxhdmVuZGVyYmx1c2hcIiAtPiBMYXZlbmRlcmJsdXNoXG4gICAgfCBcImxhd25ncmVlblwiIC0+IExhd25ncmVlblxuICAgIHwgXCJsZW1vbmNoaWZmb25cIiAtPiBMZW1vbmNoaWZmb25cbiAgICB8IFwibGlnaHRibHVlXCIgLT4gTGlnaHRibHVlXG4gICAgfCBcImxpZ2h0Y29yYWxcIiAtPiBMaWdodGNvcmFsXG4gICAgfCBcImxpZ2h0Y3lhblwiIC0+IExpZ2h0Y3lhblxuICAgIHwgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiIC0+IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBcImxpZ2h0Z3JheVwiIC0+IExpZ2h0Z3JheVxuICAgIHwgXCJsaWdodGdyZWVuXCIgLT4gTGlnaHRncmVlblxuICAgIHwgXCJsaWdodGdyZXlcIiAtPiBMaWdodGdyZXlcbiAgICB8IFwibGlnaHRwaW5rXCIgLT4gTGlnaHRwaW5rXG4gICAgfCBcImxpZ2h0c2FsbW9uXCIgLT4gTGlnaHRzYWxtb25cbiAgICB8IFwibGlnaHRzZWFncmVlblwiIC0+IExpZ2h0c2VhZ3JlZW5cbiAgICB8IFwibGlnaHRza3libHVlXCIgLT4gTGlnaHRza3libHVlXG4gICAgfCBcImxpZ2h0c2xhdGVncmF5XCIgLT4gTGlnaHRzbGF0ZWdyYXlcbiAgICB8IFwibGlnaHRzbGF0ZWdyZXlcIiAtPiBMaWdodHNsYXRlZ3JleVxuICAgIHwgXCJsaWdodHN0ZWVsYmx1ZVwiIC0+IExpZ2h0c3RlZWxibHVlXG4gICAgfCBcImxpZ2h0eWVsbG93XCIgLT4gTGlnaHR5ZWxsb3dcbiAgICB8IFwibGltZVwiIC0+IExpbWVcbiAgICB8IFwibGltZWdyZWVuXCIgLT4gTGltZWdyZWVuXG4gICAgfCBcImxpbmVuXCIgLT4gTGluZW5cbiAgICB8IFwibWFnZW50YVwiIC0+IE1hZ2VudGFcbiAgICB8IFwibWFyb29uXCIgLT4gTWFyb29uXG4gICAgfCBcIm1lZGl1bWFxdWFtYXJpbmVcIiAtPiBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBcIm1lZGl1bWJsdWVcIiAtPiBNZWRpdW1ibHVlXG4gICAgfCBcIm1lZGl1bW9yY2hpZFwiIC0+IE1lZGl1bW9yY2hpZFxuICAgIHwgXCJtZWRpdW1wdXJwbGVcIiAtPiBNZWRpdW1wdXJwbGVcbiAgICB8IFwibWVkaXVtc2VhZ3JlZW5cIiAtPiBNZWRpdW1zZWFncmVlblxuICAgIHwgXCJtZWRpdW1zbGF0ZWJsdWVcIiAtPiBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IFwibWVkaXVtc3ByaW5nZ3JlZW5cIiAtPiBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgXCJtZWRpdW10dXJxdW9pc2VcIiAtPiBNZWRpdW10dXJxdW9pc2VcbiAgICB8IFwibWVkaXVtdmlvbGV0cmVkXCIgLT4gTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBcIm1pZG5pZ2h0Ymx1ZVwiIC0+IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgXCJtaW50Y3JlYW1cIiAtPiBNaW50Y3JlYW1cbiAgICB8IFwibWlzdHlyb3NlXCIgLT4gTWlzdHlyb3NlXG4gICAgfCBcIm1vY2Nhc2luXCIgLT4gTW9jY2FzaW5cbiAgICB8IFwibmF2YWpvd2hpdGVcIiAtPiBOYXZham93aGl0ZVxuICAgIHwgXCJuYXZ5XCIgLT4gTmF2eVxuICAgIHwgXCJvbGRsYWNlXCIgLT4gT2xkbGFjZVxuICAgIHwgXCJvbGl2ZVwiIC0+IE9saXZlXG4gICAgfCBcIm9saXZlZHJhYlwiIC0+IE9saXZlZHJhYlxuICAgIHwgXCJvcmFuZ2VcIiAtPiBPcmFuZ2VcbiAgICB8IFwib3JhbmdlcmVkXCIgLT4gT3JhbmdlcmVkXG4gICAgfCBcIm9yY2hpZFwiIC0+IE9yY2hpZFxuICAgIHwgXCJwYWxlZ29sZGVucm9kXCIgLT4gUGFsZWdvbGRlbnJvZFxuICAgIHwgXCJwYWxlZ3JlZW5cIiAtPiBQYWxlZ3JlZW5cbiAgICB8IFwicGFsZXR1cnF1b2lzZVwiIC0+IFBhbGV0dXJxdW9pc2VcbiAgICB8IFwicGFsZXZpb2xldHJlZFwiIC0+IFBhbGV2aW9sZXRyZWRcbiAgICB8IFwicGFwYXlhd2hpcFwiIC0+IFBhcGF5YXdoaXBcbiAgICB8IFwicGVhY2hwdWZmXCIgLT4gUGVhY2hwdWZmXG4gICAgfCBcInBlcnVcIiAtPiBQZXJ1XG4gICAgfCBcInBpbmtcIiAtPiBQaW5rXG4gICAgfCBcInBsdW1cIiAtPiBQbHVtXG4gICAgfCBcInBvd2RlcmJsdWVcIiAtPiBQb3dkZXJibHVlXG4gICAgfCBcInB1cnBsZVwiIC0+IFB1cnBsZVxuICAgIHwgXCJyZWRcIiAtPiBSZWRcbiAgICB8IFwicm9zeWJyb3duXCIgLT4gUm9zeWJyb3duXG4gICAgfCBcInJveWFsYmx1ZVwiIC0+IFJveWFsYmx1ZVxuICAgIHwgXCJzYWRkbGVicm93blwiIC0+IFNhZGRsZWJyb3duXG4gICAgfCBcInNhbG1vblwiIC0+IFNhbG1vblxuICAgIHwgXCJzYW5keWJyb3duXCIgLT4gU2FuZHlicm93blxuICAgIHwgXCJzZWFncmVlblwiIC0+IFNlYWdyZWVuXG4gICAgfCBcInNlYXNoZWxsXCIgLT4gU2Vhc2hlbGxcbiAgICB8IFwic2llbm5hXCIgLT4gU2llbm5hXG4gICAgfCBcInNpbHZlclwiIC0+IFNpbHZlclxuICAgIHwgXCJza3libHVlXCIgLT4gU2t5Ymx1ZVxuICAgIHwgXCJzbGF0ZWJsdWVcIiAtPiBTbGF0ZWJsdWVcbiAgICB8IFwic2xhdGVncmF5XCIgLT4gU2xhdGVncmF5XG4gICAgfCBcInNsYXRlZ3JleVwiIC0+IFNsYXRlZ3JleVxuICAgIHwgXCJzbm93XCIgLT4gU25vd1xuICAgIHwgXCJzcHJpbmdncmVlblwiIC0+IFNwcmluZ2dyZWVuXG4gICAgfCBcInN0ZWVsYmx1ZVwiIC0+IFN0ZWVsYmx1ZVxuICAgIHwgXCJ0YW5cIiAtPiBUYW5cbiAgICB8IFwidGVhbFwiIC0+IFRlYWxcbiAgICB8IFwidGhpc3RsZVwiIC0+IFRoaXN0bGVcbiAgICB8IFwidG9tYXRvXCIgLT4gVG9tYXRvXG4gICAgfCBcInR1cnF1b2lzZVwiIC0+IFR1cnF1b2lzZVxuICAgIHwgXCJ2aW9sZXRcIiAtPiBWaW9sZXRcbiAgICB8IFwid2hlYXRcIiAtPiBXaGVhdFxuICAgIHwgXCJ3aGl0ZVwiIC0+IFdoaXRlXG4gICAgfCBcIndoaXRlc21va2VcIiAtPiBXaGl0ZXNtb2tlXG4gICAgfCBcInllbGxvd1wiIC0+IFllbGxvd1xuICAgIHwgXCJ5ZWxsb3dncmVlblwiIC0+IFllbGxvd2dyZWVuXG4gICAgfCBzIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3IgbmFtZVwiKSlcblxuICBsZXQgcmdiX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IDI0MCwgMjQ4LCAyNTVcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiAyNTAsIDIzNSwgMjE1XG4gICAgfCBBcXVhIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBBcXVhbWFyaW5lIC0+IDEyNywgMjU1LCAyMTJcbiAgICB8IEF6dXJlIC0+IDI0MCwgMjU1LCAyNTVcbiAgICB8IEJlaWdlIC0+IDI0NSwgMjQ1LCAyMjBcbiAgICB8IEJpc3F1ZSAtPiAyNTUsIDIyOCwgMTk2XG4gICAgfCBCbGFjayAtPiAwLCAwLCAwXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiAyNTUsIDIzNSwgMjA1XG4gICAgfCBCbHVlIC0+IDAsIDAsIDI1NVxuICAgIHwgQmx1ZXZpb2xldCAtPiAxMzgsIDQzLCAyMjZcbiAgICB8IEJyb3duIC0+IDE2NSwgNDIsIDQyXG4gICAgfCBCdXJseXdvb2QgLT4gMjIyLCAxODQsIDEzNVxuICAgIHwgQ2FkZXRibHVlIC0+IDk1LCAxNTgsIDE2MFxuICAgIHwgQ2hhcnRyZXVzZSAtPiAxMjcsIDI1NSwgMFxuICAgIHwgQ2hvY29sYXRlIC0+IDIxMCwgMTA1LCAzMFxuICAgIHwgQ29yYWwgLT4gMjU1LCAxMjcsIDgwXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiAxMDAsIDE0OSwgMjM3XG4gICAgfCBDb3Juc2lsayAtPiAyNTUsIDI0OCwgMjIwXG4gICAgfCBDcmltc29uIC0+IDIyMCwgMjAsIDYwXG4gICAgfCBDeWFuIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBEYXJrYmx1ZSAtPiAwLCAwLCAxMzlcbiAgICB8IERhcmtjeWFuIC0+IDAsIDEzOSwgMTM5XG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IDE4NCwgMTM0LCAxMVxuICAgIHwgRGFya2dyYXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2dyZWVuIC0+IDAsIDEwMCwgMFxuICAgIHwgRGFya2dyZXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2toYWtpIC0+IDE4OSwgMTgzLCAxMDdcbiAgICB8IERhcmttYWdlbnRhIC0+IDEzOSwgMCwgMTM5XG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiA4NSwgMTA3LCA0N1xuICAgIHwgRGFya29yYW5nZSAtPiAyNTUsIDE0MCwgMFxuICAgIHwgRGFya29yY2hpZCAtPiAxNTMsIDUwLCAyMDRcbiAgICB8IERhcmtyZWQgLT4gMTM5LCAwLCAwXG4gICAgfCBEYXJrc2FsbW9uIC0+IDIzMywgMTUwLCAxMjJcbiAgICB8IERhcmtzZWFncmVlbiAtPiAxNDMsIDE4OCwgMTQzXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IDcyLCA2MSwgMTM5XG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiAwLCAyMDYsIDIwOVxuICAgIHwgRGFya3Zpb2xldCAtPiAxNDgsIDAsIDIxMVxuICAgIHwgRGVlcHBpbmsgLT4gMjU1LCAyMCwgMTQ3XG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiAwLCAxOTEsIDI1NVxuICAgIHwgRGltZ3JheSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEaW1ncmV5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERvZGdlcmJsdWUgLT4gMzAsIDE0NCwgMjU1XG4gICAgfCBGaXJlYnJpY2sgLT4gMTc4LCAzNCwgMzRcbiAgICB8IEZsb3JhbHdoaXRlIC0+IDI1NSwgMjUwLCAyNDBcbiAgICB8IEZvcmVzdGdyZWVuIC0+IDM0LCAxMzksIDM0XG4gICAgfCBGdWNoc2lhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBHYWluc2Jvcm8gLT4gMjIwLCAyMjAsIDIyMFxuICAgIHwgR2hvc3R3aGl0ZSAtPiAyNDgsIDI0OCwgMjU1XG4gICAgfCBHb2xkIC0+IDI1NSwgMjE1LCAwXG4gICAgfCBHb2xkZW5yb2QgLT4gMjE4LCAxNjUsIDMyXG4gICAgfCBHcmF5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEdyZWVuIC0+IDAsIDEyOCwgMFxuICAgIHwgR3JlZW55ZWxsb3cgLT4gMTczLCAyNTUsIDQ3XG4gICAgfCBHcmV5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEhvbmV5ZGV3IC0+IDI0MCwgMjU1LCAyNDBcbiAgICB8IEhvdHBpbmsgLT4gMjU1LCAxMDUsIDE4MFxuICAgIHwgSW5kaWFucmVkIC0+IDIwNSwgOTIsIDkyXG4gICAgfCBJbmRpZ28gLT4gNzUsIDAsIDEzMFxuICAgIHwgSXZvcnkgLT4gMjU1LCAyNTUsIDI0MFxuICAgIHwgS2hha2kgLT4gMjQwLCAyMzAsIDE0MFxuICAgIHwgTGF2ZW5kZXIgLT4gMjMwLCAyMzAsIDI1MFxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiAyNTUsIDI0MCwgMjQ1XG4gICAgfCBMYXduZ3JlZW4gLT4gMTI0LCAyNTIsIDBcbiAgICB8IExlbW9uY2hpZmZvbiAtPiAyNTUsIDI1MCwgMjA1XG4gICAgfCBMaWdodGJsdWUgLT4gMTczLCAyMTYsIDIzMFxuICAgIHwgTGlnaHRjb3JhbCAtPiAyNDAsIDEyOCwgMTI4XG4gICAgfCBMaWdodGN5YW4gLT4gMjI0LCAyNTUsIDI1NVxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gMjUwLCAyNTAsIDIxMFxuICAgIHwgTGlnaHRncmF5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0Z3JlZW4gLT4gMTQ0LCAyMzgsIDE0NFxuICAgIHwgTGlnaHRncmV5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0cGluayAtPiAyNTUsIDE4MiwgMTkzXG4gICAgfCBMaWdodHNhbG1vbiAtPiAyNTUsIDE2MCwgMTIyXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IDMyLCAxNzgsIDE3MFxuICAgIHwgTGlnaHRza3libHVlIC0+IDEzNSwgMjA2LCAyNTBcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IDE3NiwgMTk2LCAyMjJcbiAgICB8IExpZ2h0eWVsbG93IC0+IDI1NSwgMjU1LCAyMjRcbiAgICB8IExpbWUgLT4gMCwgMjU1LCAwXG4gICAgfCBMaW1lZ3JlZW4gLT4gNTAsIDIwNSwgNTBcbiAgICB8IExpbmVuIC0+IDI1MCwgMjQwLCAyMzBcbiAgICB8IE1hZ2VudGEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IE1hcm9vbiAtPiAxMjgsIDAsIDBcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gMTAyLCAyMDUsIDE3MFxuICAgIHwgTWVkaXVtYmx1ZSAtPiAwLCAwLCAyMDVcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiAxODYsIDg1LCAyMTFcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiAxNDcsIDExMiwgMjE5XG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiA2MCwgMTc5LCAxMTNcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiAxMjMsIDEwNCwgMjM4XG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiAwLCAyNTAsIDE1NFxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IDcyLCAyMDksIDIwNFxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IDE5OSwgMjEsIDEzM1xuICAgIHwgTWlkbmlnaHRibHVlIC0+IDI1LCAyNSwgMTEyXG4gICAgfCBNaW50Y3JlYW0gLT4gMjQ1LCAyNTUsIDI1MFxuICAgIHwgTWlzdHlyb3NlIC0+IDI1NSwgMjI4LCAyMjVcbiAgICB8IE1vY2Nhc2luIC0+IDI1NSwgMjI4LCAxODFcbiAgICB8IE5hdmFqb3doaXRlIC0+IDI1NSwgMjIyLCAxNzNcbiAgICB8IE5hdnkgLT4gMCwgMCwgMTI4XG4gICAgfCBPbGRsYWNlIC0+IDI1MywgMjQ1LCAyMzBcbiAgICB8IE9saXZlIC0+IDEyOCwgMTI4LCAwXG4gICAgfCBPbGl2ZWRyYWIgLT4gMTA3LCAxNDIsIDM1XG4gICAgfCBPcmFuZ2UgLT4gMjU1LCAxNjUsIDBcbiAgICB8IE9yYW5nZXJlZCAtPiAyNTUsIDY5LCAwXG4gICAgfCBPcmNoaWQgLT4gMjE4LCAxMTIsIDIxNFxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiAyMzgsIDIzMiwgMTcwXG4gICAgfCBQYWxlZ3JlZW4gLT4gMTUyLCAyNTEsIDE1MlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiAxNzUsIDIzOCwgMjM4XG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IDIxOSwgMTEyLCAxNDdcbiAgICB8IFBhcGF5YXdoaXAgLT4gMjU1LCAyMzksIDIxM1xuICAgIHwgUGVhY2hwdWZmIC0+IDI1NSwgMjE4LCAxODVcbiAgICB8IFBlcnUgLT4gMjA1LCAxMzMsIDYzXG4gICAgfCBQaW5rIC0+IDI1NSwgMTkyLCAyMDNcbiAgICB8IFBsdW0gLT4gMjIxLCAxNjAsIDIyMVxuICAgIHwgUG93ZGVyYmx1ZSAtPiAxNzYsIDIyNCwgMjMwXG4gICAgfCBQdXJwbGUgLT4gMTI4LCAwLCAxMjhcbiAgICB8IFJlZCAtPiAyNTUsIDAsIDBcbiAgICB8IFJvc3licm93biAtPiAxODgsIDE0MywgMTQzXG4gICAgfCBSb3lhbGJsdWUgLT4gNjUsIDEwNSwgMjI1XG4gICAgfCBTYWRkbGVicm93biAtPiAxMzksIDY5LCAxOVxuICAgIHwgU2FsbW9uIC0+IDI1MCwgMTI4LCAxMTRcbiAgICB8IFNhbmR5YnJvd24gLT4gMjQ0LCAxNjQsIDk2XG4gICAgfCBTZWFncmVlbiAtPiA0NiwgMTM5LCA4N1xuICAgIHwgU2Vhc2hlbGwgLT4gMjU1LCAyNDUsIDIzOFxuICAgIHwgU2llbm5hIC0+IDE2MCwgODIsIDQ1XG4gICAgfCBTaWx2ZXIgLT4gMTkyLCAxOTIsIDE5MlxuICAgIHwgU2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjM1XG4gICAgfCBTbGF0ZWJsdWUgLT4gMTA2LCA5MCwgMjA1XG4gICAgfCBTbGF0ZWdyYXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU2xhdGVncmV5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNub3cgLT4gMjU1LCAyNTAsIDI1MFxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gMCwgMjU1LCAxMjdcbiAgICB8IFN0ZWVsYmx1ZSAtPiA3MCwgMTMwLCAxODBcbiAgICB8IFRhbiAtPiAyMTAsIDE4MCwgMTQwXG4gICAgfCBUZWFsIC0+IDAsIDEyOCwgMTI4XG4gICAgfCBUaGlzdGxlIC0+IDIxNiwgMTkxLCAyMTZcbiAgICB8IFRvbWF0byAtPiAyNTUsIDk5LCA3MVxuICAgIHwgVHVycXVvaXNlIC0+IDY0LCAyMjQsIDIwOFxuICAgIHwgVmlvbGV0IC0+IDIzOCwgMTMwLCAyMzhcbiAgICB8IFdoZWF0IC0+IDI0NSwgMjIyLCAxNzlcbiAgICB8IFdoaXRlIC0+IDI1NSwgMjU1LCAyNTVcbiAgICB8IFdoaXRlc21va2UgLT4gMjQ1LCAyNDUsIDI0NVxuICAgIHwgWWVsbG93IC0+IDI1NSwgMjU1LCAwXG4gICAgfCBZZWxsb3dncmVlbiAtPiAxNTQsIDIwNSwgNTBcblxuICB0eXBlIHQgPVxuICAgIHwgTmFtZSBvZiBuYW1lXG4gICAgfCBSR0Igb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJlZCwgR3JlZW4gYW5kIEJsdWUgdmFsdWVzLiBDbGlwcGVkIHRvIFtbMC4uMjU1XV0gYnkgbW9zdCAoQWxsPylcbiAgICAgICAgICAgIGJyb3dzZXJzLiAqKVxuICAgIHwgUkdCX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBhcmUgc3BlY2lmaWVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiAqKVxuICAgIHwgUkdCQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIFJHQiB3aXRoIGFkZGl0aW9uYWwgdHJhbnNwYXJlbmN5IGFyZ3VtZW50LiBPcGFjaXR5IHNob3VsZCBiZSBpblxuICAgICAgICAgICAgWzAuXSAoY29tcGxldGVseSB0cmFuc3BhcmVudCkgYW5kIFsxLl0gKGNvbXBsZXRlbHkgb3BhcXVlKS4gKilcbiAgICB8IFJHQkFfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgc3BlY2lmaWVkIGFzIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gQWxwaGFcbiAgICAgICAgICAgIGNoYW5uZWwgKG9wYWNpdHkpIGlzIHN0aWxsIGEgWzAuXSB0byBbMS5dIGZsb2F0LiAqKVxuICAgIHwgSFNMIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBIdWUsIFNhdHVyYXRpb24gYW5kIExpZ2h0bmVzcyB2YWx1ZXMuIEh1ZSBpcyBhbiBhbmdsZSBpbiBkZWdyZWUgKGluXG4gICAgICAgICAgICBpbnRlcnZhbCBbWzAuLjM2MFtdKS4gU2F0dXJhdGlvbiBpcyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBjb2xvcmxlc3MuIExpZ2h0bmVzcyBpcyBhbHNvIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGJsYWNrLiAqKVxuICAgIHwgSFNMQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIEhTTCB3aXRoIGFuIG9wYWNpdHkgYXJndW1lbnQgYmV0d2VlbiBbMC5dIGFuZCBbMS5dLiAqKVxuXG4gIGxldCByZ2IgP2EgciBnIGIgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBSR0IgKHIsIGcsIGIpXG4gICAgfCBTb21lIGEgLT4gUkdCQSAociwgZywgYiwgYSlcblxuICBsZXQgaHNsID9hIGggcyBsID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gSFNMIChoLCBzLCBsKVxuICAgIHwgU29tZSBhIC0+IEhTTEEgKGgsIHMsIGwsIGEpXG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBzdHJpbmdfb2ZfbmFtZSBuXG4gICAgfCBSR0IgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkLCVkLCVkKVwiIHIgZyBiXG4gICAgfCBSR0JfcGVyY2VudCAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQlJSwlZCUlLCVkJSUpXCIgciBnIGJcbiAgICB8IFJHQkEgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCwlZCwlZCwlZilcIiByIGcgYiBhXG4gICAgfCBSR0JBX3BlcmNlbnQgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCUlLCVkJSUsJWQlJSwlZilcIiByIGcgYiBhXG4gICAgfCBIU0wgKGgsIHMsIGwpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsKCVkLCVkJSUsJWQlJSlcIiBoIHMgbFxuICAgIHwgSFNMQSAoaCwgcywgbCwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2xhKCVkLCVkJSUsJWQlJSwlZilcIiBoIHMgbCBhXG5cbiAgbGV0IGhleF9vZl9yZ2IgKHJlZCwgZ3JlZW4sIGJsdWUpID1cbiAgICBsZXQgaW5fcmFuZ2UgaSA9XG4gICAgICBpZiBpIDwgMCB8fCBpID4gMjU1XG4gICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzdHJpbmdfb2ZfaW50IGkgXiBcIiBpcyBvdXQgb2YgdmFsaWQgcmFuZ2VcIikpXG4gICAgaW5cbiAgICBpbl9yYW5nZSByZWQ7XG4gICAgaW5fcmFuZ2UgZ3JlZW47XG4gICAgaW5fcmFuZ2UgYmx1ZTtcbiAgICBQcmludGYuc3ByaW50ZiBcIiMlMDJYJTAyWCUwMlhcIiByZWQgZ3JlZW4gYmx1ZVxuXG4gICgqIE9jYW1sIDwtPiBKUyByZXByZXNlbnRhdGlvbiAqKVxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gICgqIFRPRE8/IGJlIG1vcmUgcmVzdHJpY3RpdmUsIGNsaXAgdmFsdWVzIGludG8gc3RhbmRhcmQgcmFuZ2UgKilcbiAgbGV0IGpzX3Rfb2ZfanNfc3RyaW5nIHMgPVxuICAgIGxldCByZ2JfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5oc2xcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGlmIEpzLnRvX2Jvb2wgKHJnYl9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xhX3JlIyN0ZXN0IHMpXG4gICAgdGhlbiBzXG4gICAgZWxzZSBpZiBMaXN0Lm1lbVxuICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIHMpXG4gICAgICAgICAgICAgIFsgXCJhbGljZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYW50aXF1ZXdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFcIlxuICAgICAgICAgICAgICA7IFwiYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJhenVyZVwiXG4gICAgICAgICAgICAgIDsgXCJiZWlnZVwiXG4gICAgICAgICAgICAgIDsgXCJiaXNxdWVcIlxuICAgICAgICAgICAgICA7IFwiYmxhY2tcIlxuICAgICAgICAgICAgICA7IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibHVldmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImJyb3duXCJcbiAgICAgICAgICAgICAgOyBcImJ1cmx5d29vZFwiXG4gICAgICAgICAgICAgIDsgXCJjYWRldGJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY2hhcnRyZXVzZVwiXG4gICAgICAgICAgICAgIDsgXCJjaG9jb2xhdGVcIlxuICAgICAgICAgICAgICA7IFwiY29yYWxcIlxuICAgICAgICAgICAgICA7IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY29ybnNpbGtcIlxuICAgICAgICAgICAgICA7IFwiY3JpbXNvblwiXG4gICAgICAgICAgICAgIDsgXCJjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrbWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb2xpdmVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3JlZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmt2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRvZGdlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZmlyZWJyaWNrXCJcbiAgICAgICAgICAgICAgOyBcImZsb3JhbHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImZvcmVzdGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImZ1Y2hzaWFcIlxuICAgICAgICAgICAgICA7IFwiZ2FpbnNib3JvXCJcbiAgICAgICAgICAgICAgOyBcImdob3N0d2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZ29sZFwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJncmVlbnllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJncmV5XCJcbiAgICAgICAgICAgICAgOyBcImhvbmV5ZGV3XCJcbiAgICAgICAgICAgICAgOyBcImhvdHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWFucmVkXCJcbiAgICAgICAgICAgICAgOyBcImluZGlnb1wiXG4gICAgICAgICAgICAgIDsgXCJpdm9yeVwiXG4gICAgICAgICAgICAgIDsgXCJraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlclwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlcmJsdXNoXCJcbiAgICAgICAgICAgICAgOyBcImxhd25ncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsZW1vbmNoaWZmb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y29yYWxcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHBpbmtcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHR5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGltZVwiXG4gICAgICAgICAgICAgIDsgXCJsaW1lZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGluZW5cIlxuICAgICAgICAgICAgICA7IFwibWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJtYXJvb25cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1ibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bW9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1wdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwibWlkbmlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1pbnRjcmVhbVwiXG4gICAgICAgICAgICAgIDsgXCJtaXN0eXJvc2VcIlxuICAgICAgICAgICAgICA7IFwibW9jY2FzaW5cIlxuICAgICAgICAgICAgICA7IFwibmF2YWpvd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwibmF2eVwiXG4gICAgICAgICAgICAgIDsgXCJvbGRsYWNlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlZHJhYlwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlcmVkXCJcbiAgICAgICAgICAgICAgOyBcIm9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV2aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwicGFwYXlhd2hpcFwiXG4gICAgICAgICAgICAgIDsgXCJwZWFjaHB1ZmZcIlxuICAgICAgICAgICAgICA7IFwicGVydVwiXG4gICAgICAgICAgICAgIDsgXCJwaW5rXCJcbiAgICAgICAgICAgICAgOyBcInBsdW1cIlxuICAgICAgICAgICAgICA7IFwicG93ZGVyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJwdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwicmVkXCJcbiAgICAgICAgICAgICAgOyBcInJvc3licm93blwiXG4gICAgICAgICAgICAgIDsgXCJyb3lhbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2FkZGxlYnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcInNhbmR5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic2Vhc2hlbGxcIlxuICAgICAgICAgICAgICA7IFwic2llbm5hXCJcbiAgICAgICAgICAgICAgOyBcInNpbHZlclwiXG4gICAgICAgICAgICAgIDsgXCJza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcInNub3dcIlxuICAgICAgICAgICAgICA7IFwic3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInRhblwiXG4gICAgICAgICAgICAgIDsgXCJ0ZWFsXCJcbiAgICAgICAgICAgICAgOyBcInRoaXN0bGVcIlxuICAgICAgICAgICAgICA7IFwidG9tYXRvXCJcbiAgICAgICAgICAgICAgOyBcInR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJ2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwid2hlYXRcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVzbW9rZVwiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93Z3JlZW5cIlxuICAgICAgICAgICAgICBdXG4gICAgdGhlbiBzXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoSnMudG9fc3RyaW5nIHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSlcblxuICBsZXQgbmFtZSBjbiA9IEpzLnN0cmluZyAoc3RyaW5nX29mX25hbWUgY24pXG5cbiAgbGV0IGpzID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBuYW1lIG5cbiAgICB8IChSR0IgXyB8IFJHQl9wZXJjZW50IF8gfCBSR0JBIF8gfCBSR0JBX3BlcmNlbnQgXyB8IEhTTCBfIHwgSFNMQSBfKSBhcyBjIC0+XG4gICAgICAgIEpzLnN0cmluZyAoc3RyaW5nX29mX3QgYylcblxuICBsZXQgbWwgYyA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgYyBpblxuICAgIHRyeSBOYW1lIChuYW1lX29mX3N0cmluZyBzKVxuICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IChcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSkgaW5cbiAgICAgIGxldCByZV9yZ2IgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiksKFxcXFxkKikoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9yZ2JfcGN0ID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopJSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfaHNsID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihoc2xhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCBpX29mX3NfbyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgIHwgU29tZSBpIC0+IChcbiAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGlcbiAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gaSBeIFwiKTogXCIgXiBzKSkpXG4gICAgICBpblxuICAgICAgbGV0IGZfb2ZfcyBmID1cbiAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBmIF4gXCIpOiBcIiBeIHMpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiIHMgMCB3aXRoXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IFJHQkEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2JfcGN0IHMgMCB3aXRoXG4gICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQl9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgIFJHQkFfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfaHNsIHMgMCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbFwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBIU0wgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBIU0xBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKCkpKSlcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gICgqIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdmFsdWVzLyNsZW5ndGhzICopXG5cbiAgKCogVE9ETzpcbiAgICAge1tcbiAgICAgICB0eXBlIGpzX3QgPSBwcml2YXRlIEpzLnN0cmluZyBKcy50XG4gICAgICAgdmFsIGpzX3Rfb2ZfdFxuICAgICAgIHZhbCB0X29mX2pzX3RcbiAgICAgICB2YWwgdF9vZl9zdHJpbmdcbiAgICAgXX1cbiAgKilcblxuICB0eXBlIHQgPVxuICAgIHwgWmVyb1xuICAgICgqIHJlbGF0aXZlICopXG4gICAgfCBFbSBvZiBmbG9hdFxuICAgIHwgRXggb2YgZmxvYXRcbiAgICB8IFB4IG9mIGZsb2F0XG4gICAgfCBHZCBvZiBmbG9hdFxuICAgIHwgUmVtIG9mIGZsb2F0XG4gICAgfCBWdyBvZiBmbG9hdFxuICAgIHwgVmggb2YgZmxvYXRcbiAgICB8IFZtIG9mIGZsb2F0XG4gICAgfCBDaCBvZiBmbG9hdFxuICAgICgqIGFic29sdXRlICopXG4gICAgfCBNbSBvZiBmbG9hdFxuICAgIHwgQ20gb2YgZmxvYXRcbiAgICB8IEluIG9mIGZsb2F0XG4gICAgfCBQdCBvZiBmbG9hdFxuICAgIHwgUGMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgWmVybyAtPiBcIjBcIlxuICAgIHwgRW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZW1cIlxuICAgIHwgRXggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZXhcIlxuICAgIHwgUHggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHhcIlxuICAgIHwgR2QgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ2RcIlxuICAgIHwgUmVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJlbVwiXG4gICAgfCBWdyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2d1wiXG4gICAgfCBWaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2aFwiXG4gICAgfCBWbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2bVwiXG4gICAgfCBDaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjaFwiXG4gICAgfCBNbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJtbVwiXG4gICAgfCBDbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjbVwiXG4gICAgfCBJbiBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJpblwiXG4gICAgfCBQdCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwdFwiXG4gICAgfCBQYyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwY1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgdCA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgdCBpblxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiMFwiXG4gICAgdGhlbiBaZXJvXG4gICAgZWxzZVxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pXFxcXHMqKFxcXFxTKikkXCIgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IGYgPVxuICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgXCJlbVwiIC0+IEVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJleFwiIC0+IEV4IGZcbiAgICAgICAgICB8IFNvbWUgXCJweFwiIC0+IFB4IGZcbiAgICAgICAgICB8IFNvbWUgXCJnZFwiIC0+IEdkIGZcbiAgICAgICAgICB8IFNvbWUgXCJyZW1cIiAtPiBSZW0gZlxuICAgICAgICAgIHwgU29tZSBcInZ3XCIgLT4gVncgZlxuICAgICAgICAgIHwgU29tZSBcInZoXCIgLT4gVmggZlxuICAgICAgICAgIHwgU29tZSBcInZtXCIgLT4gVm0gZlxuICAgICAgICAgIHwgU29tZSBcImNoXCIgLT4gQ2ggZlxuICAgICAgICAgIHwgU29tZSBcIm1tXCIgLT4gTW0gZlxuICAgICAgICAgIHwgU29tZSBcImNtXCIgLT4gQ20gZlxuICAgICAgICAgIHwgU29tZSBcImluXCIgLT4gSW4gZlxuICAgICAgICAgIHwgU29tZSBcInB0XCIgLT4gUHQgZlxuICAgICAgICAgIHwgU29tZSBcInBjXCIgLT4gUGMgZlxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKCkpXG5lbmRcblxubW9kdWxlIEFuZ2xlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBEZWcgb2YgZmxvYXRcbiAgICB8IEdyYWQgb2YgZmxvYXRcbiAgICB8IFJhZCBvZiBmbG9hdFxuICAgIHwgVHVybnMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgRGVnIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImRlZ1wiXG4gICAgfCBHcmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdyYWRcIlxuICAgIHwgUmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJhZFwiXG4gICAgfCBUdXJucyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ0dXJuc1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgaiA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgaiBpblxuICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKSkoZGVnfGdyYWR8cmFkfHR1cm5zKSRcIiBpblxuICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgfCBTb21lIHIgLT4gKFxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICB8IFNvbWUgXCJkZWdcIiAtPiBEZWcgZlxuICAgICAgICB8IFNvbWUgXCJncmFkXCIgLT4gR3JhZCBmXG4gICAgICAgIHwgU29tZSBcInJhZFwiIC0+IFJhZCBmXG4gICAgICAgIHwgU29tZSBcInR1cm5zXCIgLT4gVHVybnMgZlxuICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqKiBKYXZhc2NyaXB0IGV2ZW50cy4gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVHlwID0gRG9tX2h0bWwuRXZlbnRcblxudHlwZSBsaXN0ZW5lciA9IERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBsaXN0ZW4gPyhjYXB0dXJlID0gZmFsc2UpIHRhcmdldCB0eXAgY2IgPVxuICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyXG4gICAgdGFyZ2V0XG4gICAgdHlwXG4gICAgKERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIG4gZSAtPiBKcy5ib29sIChjYiBuIGUpKSlcbiAgICAoSnMuYm9vbCBjYXB0dXJlKVxuXG5sZXQgc3RvcF9saXN0ZW4gPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICogQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5sZXQgeG1sbnMgPSBKcy5zdHJpbmcgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG5cbigqIHRyYW5zbGF0ZSBzcGVjIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2lkbC5odG1sICopXG4oKiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwgKilcblxudHlwZSBlcnJvcl9jb2RlID1cbiAgfCBXUk9OR19UWVBFX0VSUlxuICB8IElOVkFMSURfVkFMVUVfRVJSXG4gIHwgTUFUUklYX05PVF9JTlZFUlRBQkxFXG5cbmNsYXNzIHR5cGUgc3ZnX2Vycm9yID0gb2JqZWN0XG4gIGluaGVyaXQgSnMuZXJyb3JcblxuICBtZXRob2QgY29kZSA6IGVycm9yX2NvZGUgdCByZWFkb25seV9wcm9wXG5lbmRcblxuZXhjZXB0aW9uIFNWR0Vycm9yIG9mIHN2Z19lcnJvclxuXG50eXBlIGxlbmd0aFVuaXRUeXBlID1cbiAgfCBMRU5HVEhUWVBFX1VOS05PV05cbiAgfCBMRU5HVEhUWVBFX05VTUJFUlxuICB8IExFTkdUSFRZUEVfUEVSQ0VOVEFHRVxuICB8IExFTkdUSFRZUEVfRU1TXG4gIHwgTEVOR1RIVFlQRV9FWFNcbiAgfCBMRU5HVEhUWVBFX1BYXG4gIHwgTEVOR1RIVFlQRV9DTVxuICB8IExFTkdUSFRZUEVfTU1cbiAgfCBMRU5HVEhUWVBFX0lOXG4gIHwgTEVOR1RIVFlQRV9QVFxuICB8IExFTkdUSFRZUEVfUENcblxudHlwZSBhbmdsZVVuaXRUeXBlID1cbiAgfCBBTkdMRVRZUEVfVU5LTk9XTlxuICB8IEFOR0xFVFlQRV9VTlNQRUNJRklFRFxuICB8IEFOR0xFVFlQRV9ERUdcbiAgfCBBTkdMRVRZUEVfUkFEXG4gIHwgQU5HTEVUWVBFX0dSQURcblxudHlwZSBjb2xvclR5cGUgPVxuICB8IENPTE9SVFlQRV9VTktOT1dOXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SXG4gIHwgQ09MT1JUWVBFX0NVUlJFTlRDT0xPUlxuXG50eXBlIGFsaWdubWVudFR5cGUgPVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9XTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWFxuXG50eXBlIG1lZXRPclNsaWNlVHlwZSA9XG4gIHwgTUVFVE9SU0xJQ0VfVU5LTk9XTlxuICB8IE1FRVRPUlNMSUNFX01FRVRcbiAgfCBNRUVUT1JTTElDRV9TTElDRVxuXG50eXBlIHRyYW5zZm9ybVR5cGUgPVxuICB8IFRSQU5TRk9STV9VTktOT1dOXG4gIHwgVFJBTlNGT1JNX01BVFJJWFxuICB8IFRSQU5TRk9STV9UUkFOU0xBVEVcbiAgfCBUUkFOU0ZPUk1fU0NBTEVcbiAgfCBUUkFOU0ZPUk1fUk9UQVRFXG4gIHwgVFJBTlNGT1JNX1NLRVdYXG4gIHwgVFJBTlNGT1JNX1NLRVdZXG5cbnR5cGUgem9vbUFuZFBhblR5cGUgPVxuICB8IFpPT01BTkRQQU5fVU5LTk9XTlxuICB8IFpPT01BTkRQQU5fRElTQUJMRVxuICB8IFpPT01BTkRQQU5fTUFHTklGWVxuXG50eXBlIGxlbmd0aEFkanVzdCA9XG4gIHwgTEVOR1RIQURKVVNUX1VOS05PV05cbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR1xuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTXG5cbnR5cGUgdW5pdFR5cGUgPVxuICB8IFVOSVRfVFlQRV9VTktOT1dOXG4gIHwgVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFXG4gIHwgVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YXG5cbigqIGludGVyZmFjZSBTVkdSZW5kZXJpbmdJbnRlbnQgKilcbnR5cGUgaW50ZW50VHlwZSA9XG4gIHwgUkVOREVSSU5HX0lOVEVOVF9VTktOT1dOXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BVVRPXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9QRVJDRVBUVUFMXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUNcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1NBVFVSQVRJT05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQ1xuXG4oKiBQYXRoIFNlZ21lbnQgVHlwZXMgKilcbnR5cGUgcGF0aFNlZ21lbnRUeXBlID1cbiAgfCBQQVRIU0VHX1VOS05PV05cbiAgfCBQQVRIU0VHX0NMT1NFUEFUSFxuICB8IFBBVEhTRUdfTU9WRVRPX0FCU1xuICB8IFBBVEhTRUdfTU9WRVRPX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTFxuICB8IFBBVEhTRUdfQVJDX0FCU1xuICB8IFBBVEhTRUdfQVJDX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMXG5cbigqIHRleHRQYXRoIE1ldGhvZCBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aE1ldGhvZFR5cGUgPVxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfQUxJR05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0hcblxuKCogdGV4dFBhdGggU3BhY2luZyBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aFNwYWNpbmdUeXBlID1cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUT1xuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUXG5cbigqIFNwcmVhZCBNZXRob2QgVHlwZXMgKilcbnR5cGUgc3ByZWFkTWV0aG9kVHlwZSA9XG4gIHwgU1BSRUFETUVUSE9EX1VOS05PV05cbiAgfCBTUFJFQURNRVRIT0RfUEFEXG4gIHwgU1BSRUFETUVUSE9EX1JFRkxFQ1RcbiAgfCBTUFJFQURNRVRIT0RfUkVQRUFUXG5cbnR5cGUgc3VzcGVuZEhhbmRsZUlEXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIFsnYV0gYW5pbWF0ZWQgPSBvYmplY3RcbiAgbWV0aG9kIGJhc2VWYWwgOiAnYSBwcm9wXG5cbiAgbWV0aG9kIGFuaW1WYWwgOiAnYSBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIGxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIG51bWJlck9mSXRlbXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbml0aWFsaXplIDogJ2EgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgaW5zZXJ0SXRlbUJlZm9yZSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VJdGVtIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZEl0ZW0gOiAnYSAtPiAnYSBtZXRoXG5lbmRcblxuKCoqKiopXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50ICopXG5jbGFzcyB0eXBlIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sYmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJTVkdFbGVtZW50IDogc3ZnRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRTdHJpbmcgKilcbmFuZCBhbmltYXRlZFN0cmluZyA9IFtqc19zdHJpbmcgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQm9vbGVhbiAqKVxuYW5kIGFuaW1hdGVkQm9vbGVhbiA9IFtib29sIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHJpbmdMaXN0ICopXG5hbmQgc3RyaW5nTGlzdCA9IFtqc19zdHJpbmcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiAqKVxuYW5kIGFuaW1hdGVkRW51bWVyYXRpb24gPSBbaW50ICgqc2hvcnQqKV0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkSW50ZWdlciAqKVxuYW5kIGFuaW1hdGVkSW50ZWdlciA9IFtpbnRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlciAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyID0gW251bWJlcl90XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTnVtYmVyTGlzdCAqKVxuYW5kIG51bWJlckxpc3QgPSBbbnVtYmVyIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyTGlzdCA9IFtudW1iZXJMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGggKilcbmFuZCBsZW5ndGggPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogbGVuZ3RoVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoICopXG5hbmQgYW5pbWF0ZWRMZW5ndGggPSBbbGVuZ3RoIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGhMaXN0ICopXG5hbmQgbGVuZ3RoTGlzdCA9IFtsZW5ndGggdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0ICopXG5hbmQgYW5pbWF0ZWRMZW5ndGhMaXN0ID0gW2xlbmd0aExpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuZ2xlICopXG5hbmQgYW5nbGUgPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogYW5nbGVVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQW5nbGUgKilcbmFuZCBhbmltYXRlZEFuZ2xlID0gW2FuZ2xlIHRdIGFuaW1hdGVkXG5cbigqIFhYWFhYIE1vdmUgaXQgKilcbmFuZCByZ2JDb2xvciA9IG9iamVjdCBlbmRcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yICopXG5hbmQgY29sb3IgPSBvYmplY3RcbiAgKCogWFhYIGluaGVyaXQgY3NzVmFsdWUgKilcbiAgbWV0aG9kIGNvbG9yVHlwZSA6IGNvbG9yVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJnYkNvbG9yIDogcmdiQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGljY0NvbG9yIDogaWNjQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9yIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9ySUNDQ29sb3IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Q29sb3IgOiBjb2xvclR5cGUgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0lDQ0NvbG9yICopXG5hbmQgaWNjQ29sb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvbG9yUHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3JzIDogbnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdCAqKVxuYW5kIHJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUmVjdCAqKVxuYW5kIGFuaW1hdGVkUmVjdCA9IFtyZWN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHlsYWJsZSAqKVxuYW5kIHN0eWxhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBjbGFzc05hbWUgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3R5bGUgOiBEb21faHRtbC5jc3NTdHlsZURlY2xhcmF0aW9uIHQgcmVhZG9ubHlfcHJvcFxuICAoKiAgIENTU1ZhbHVlIGdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xvY2F0YWJsZSAqKVxuYW5kIGxvY2F0YWJsZSA9IG9iamVjdFxuICBtZXRob2QgbmVhcmVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QkJveCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2NyZWVuQ1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQgOiBlbGVtZW50IHQgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1hYmxlICopXG5hbmQgdHJhbnNmb3JtYWJsZSA9IG9iamVjdFxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1Rlc3RzICopXG5hbmQgdGVzdHMgPSBvYmplY3RcbiAgbWV0aG9kIHJlcXVpcmVkRmVhdHVyZXMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZEV4dGVuc2lvbnMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzeXN0ZW1MYW5ndWFnZSA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhhc0V4dGVuc2lvbiA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xhbmdTcGFjZSAqKVxuYW5kIGxhbmdTcGFjZSA9IG9iamVjdFxuICBtZXRob2QgeG1sbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sc3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgKilcbmFuZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gb2JqZWN0XG4gIG1ldGhvZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIDogYW5pbWF0ZWRCb29sZWFuIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaXRUb1ZpZXdCb3ggKilcbmFuZCBmaXRUb1ZpZXdCb3ggPSBvYmplY3RcbiAgbWV0aG9kIHZpZXdCb3ggOiBhbmltYXRlZFJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW8gOiBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21BbmRQYW4gKilcbmFuZCB6b29tQW5kUGFuID0gb2JqZWN0XG4gIG1ldGhvZCB6b29tQW5kUGFuIDogem9vbUFuZFBhblR5cGUgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3U3BlYyAqKVxuYW5kIHZpZXdTcGVjID0gb2JqZWN0XG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IHRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3Qm94U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm1TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXRTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VSSVJlZmVyZW5jZSAqKVxuYW5kIHVyaVJlZmVyZW5jZSA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDU1NSdWxlIDogQ1NTUnVsZSAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDT0xPUl9QUk9GSUxFX1JVTEUgPSA3OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0RvY3VtZW50ICopXG5hbmQgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudEV2ZW50ICopXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEVsZW1lbnQgOiBzdmdFbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbiAgKCogcm9vdEVsZW1lbnQgd2lsbCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbiBhbiBodG1sIGNvbnRleHQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU1ZHRWxlbWVudCAqKVxuYW5kIHN2Z0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50ZXZlbnQsIHZpZXdjc3MsIGRvY3VtZW50Y3NzICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTY3JpcHRUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IHJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZUN1cnJlbnRWaWV3IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFZpZXcgOiB2aWV3U3BlYyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFNjYWxlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VHJhbnNsYXRlIDogcG9pbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1c3BlbmRSZWRyYXcgOiBpbnQgLT4gc3VzcGVuZEhhbmRsZUlEIG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3IDogc3VzcGVuZEhhbmRsZUlEIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXdBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yY2VSZWRyYXcgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVucGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbnNQYXVzZWQgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0Q3VycmVudFRpbWUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEludGVyc2VjdGlvbkxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmNsb3N1cmVMaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgY2hlY2tJbnRlcnNlY3Rpb24gOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBjaGVja0VuY2xvc3VyZSA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGRlc2VsZWN0QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR051bWJlciA6IG51bWJlciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTGVuZ3RoIDogbGVuZ3RoIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdBbmdsZSA6IGFuZ2xlIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQb2ludCA6IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdNYXRyaXggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1JlY3QgOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm0gOiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggdCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gRG9tLmVsZW1lbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dFbGVtZW50ICopXG5hbmQgZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVmc0VsZW1lbnQgKilcbmFuZCBkZWZzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0Rlc2NFbGVtZW50ICopXG5hbmQgZGVzY0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RpdGxlRWxlbWVudCAqKVxuYW5kIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3ltYm9sRWxlbWVudCAqKVxuYW5kIHN5bWJvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VzZUVsZW1lbnQgKilcbmFuZCB1c2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRJbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGVsZW1lbnRJbnN0YW5jZSA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgOiB1c2VFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogZWxlbWVudEluc3RhbmNlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50SW5zdGFuY2VMaXN0ICopXG5hbmQgZWxlbWVudEluc3RhbmNlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBlbGVtZW50SW5zdGFuY2UgdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJbWFnZUVsZW1lbnQgKilcbmFuZCBpbWFnZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbiAgKCogcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5lbmRcblxuYW5kIHN3aXRjaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbigqIFhYWCBkZXByZWNhdGVkID0+IGludGVyZmFjZSBHZXRTVkdEb2N1bWVudCA9PiBTVkdEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpICopXG5cbigqIGludGVyZmFjZSBTVkdTdHlsZUVsZW1lbnQgKilcbmFuZCBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnQgKilcbmFuZCBwb2ludCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4VHJhbnNmb3JtIDogbWF0cml4IHQgLT4gcG9pbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50TGlzdCAqKVxuYW5kIHBvaW50TGlzdCA9IFtwb2ludCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdNYXRyaXggKilcbmFuZCBtYXRyaXggPSBvYmplY3RcbiAgbWV0aG9kIGEgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGMgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGYgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGx5IDogbWF0cml4IHQgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBpbnZlcnNlIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZU5vblVuaWZvcm0gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlRnJvbVZlY3RvciA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBZIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WCA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1kgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybSAqKVxuYW5kIHRyYW5zZm9ybSA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiB0cmFuc2Zvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4IDogbWF0cml4IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0TWF0cml4IDogbWF0cml4IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSb3RhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1ggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1kgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtTGlzdCAqKVxuYW5kIHRyYW5zZm9ybUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbdHJhbnNmb3JtIHRdIGxpc3RcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnNvbGlkYXRlIDogdHJhbnNmb3JtIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QgKilcbmFuZCBhbmltYXRlZFRyYW5zZm9ybUxpc3QgPSBbdHJhbnNmb3JtTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIHByZXNlcnZlQXNwZWN0UmF0aW8gPSBvYmplY3RcbiAgbWV0aG9kIGFsaWduIDogYWxpZ25tZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lZXRPclNsaWNlIDogbWVldE9yU2xpY2VUeXBlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gW3ByZXNlcnZlQXNwZWN0UmF0aW8gdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWcgKilcbmFuZCBwYXRoU2VnID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnVHlwZSA6IHBhdGhTZWdtZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdGhTZWdUeXBlQXNMZXR0ZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDbG9zZVBhdGggKilcbmFuZCBwYXRoU2VnQ2xvc2VQYXRoID0gcGF0aFNlZ1xuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9SZWwgKilcbmFuZCBwYXRoU2VnTW92ZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY1JlbCopXG5hbmQgcGF0aFNlZ0FyYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGFyZ2VBcmNGbGFnIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3dlZXBGbGFnIDogYm9vbCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCAgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnTGlzdCA9IFtwYXRoU2VnIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUGF0aERhdGEgKilcbmFuZCBhbmltYXRlZFBhdGhEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBub3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoRWxlbWVudCAqKVxuYW5kIHBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUGF0aERhdGFcblxuICBtZXRob2QgcGF0aExlbmd0aCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRUb3RhbExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0UG9pbnRBdExlbmd0aCA6IG51bWJlcl90IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXRoU2VnQXRMZW5ndGggOiBudW1iZXJfdCAtPiBpbnRcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aCA6IHBhdGhTZWdDbG9zZVBhdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0RWxlbWVudCAqKVxuYW5kIHJlY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDaXJjbGVFbGVtZW50ICopXG5hbmQgY2lyY2xlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxsaXBzZUVsZW1lbnQgKilcbmFuZCBlbGxpcHNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUG9pbnRzICopXG5hbmQgYW5pbWF0ZWRQb2ludHMgPSBvYmplY3RcbiAgbWV0aG9kIHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlsaW5lRWxlbWVudCAqKVxuYW5kIHBvbHlMaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5Z29uRWxlbWVudCAqKVxuYW5kIHBvbHlnb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRDb250ZW50RWxlbWVudCAqKVxuYW5kIHRleHRDb250ZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0ZXh0TGVuZ3RoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aEFkanVzdCA6IGxlbmd0aEFkanVzdCBhbmltYXRlZCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TnVtYmVyT2ZDaGFycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkVGV4dExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3ViU3RyaW5nTGVuZ3RoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN0YXJ0UG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuZFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnRPZkNoYXIgOiBpbnQgLT4gcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Um90YXRpb25PZkNoYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDaGFyTnVtQXRQb3NpdGlvbiA6IHBvaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdFN1YlN0cmluZyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQgKilcbmFuZCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm90YXRlIDogYW5pbWF0ZWROdW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0RWxlbWVudCAqKVxuYW5kIHRleHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbmFuZCB0c3BhbkVsZW1lbnQgPSB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbmFuZCB0cmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UGF0aEVsZW1lbnQgKilcbmFuZCB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgPSBbdGV4dFBhdGhNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50U3BhY2luZyA9IFt0ZXh0UGF0aFNwYWNpbmdUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0aG9kXyA6IHRleHRQYXRoRWxlbWVudE1ldGhvZCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwYWNpbmcgOiB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRGVmRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRGVmRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEl0ZW1FbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhSZWZFbGVtZW50ICopXG5hbmQgZ2x5cGhSZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhaW50IDogU1ZHQ29sb3IgeyAqKVxuXG4oKiAgIC8vIFBhaW50IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9OT05FID0gMTAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUiA9IDEwMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSA9IDEwMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SID0gMTA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiA9IDEwNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09MT1IgPSAxMDY7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJID0gMTA3OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOyAqKVxuXG4oKiAgIHZvaWQgc2V0VXJpKGluIERPTVN0cmluZyB1cmkpOyAqKVxuKCogICB2b2lkIHNldFBhaW50KGluIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZSwgaW4gRE9NU3RyaW5nIHVyaSwgaW4gRE9NU3RyaW5nIHJnYkNvbG9yLCBpbiBET01TdHJpbmcgaWNjQ29sb3IpIHJhaXNlcyhTVkdFeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR01hcmtlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1N0eWxhYmxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaXRUb1ZpZXdCb3ggeyAqKVxuXG4oKiAgIC8vIE1hcmtlciBVbml0IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIID0gMjsgKilcblxuKCogICAvLyBNYXJrZXIgT3JpZW50YXRpb24gVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FVVE8gPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BTkdMRSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXJrZXJVbml0czsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlcldpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VySGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcmllbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRBbmdsZSBvcmllbnRBbmdsZTsgKilcblxuKCogICB2b2lkIHNldE9yaWVudFRvQXV0bygpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICB2b2lkIHNldE9yaWVudFRvQW5nbGUoaW4gU1ZHQW5nbGUgYW5nbGUpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWw7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVSdWxlIDogU1ZHQ1NTUnVsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmMgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZSBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudCBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBhbmltYXRlZFNwcmVhZE1ldGhvZCA9IFtzcHJlYWRNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgZ3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZ3JhZGllbnRVbml0czsgKilcbiAgbWV0aG9kIGdyYWRpZW50VHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcHJlYWRNZXRob2QgOiBhbmltYXRlZFNwcmVhZE1ldGhvZCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50ICopXG5hbmQgbGluZWFyR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCAqKVxuYW5kIHJhZGlhbEdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N0b3BFbGVtZW50ICopXG5hbmQgc3RvcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBvZmZzZXQgOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0dGVybkVsZW1lbnQgKilcbmFuZCBwYXR0ZXJuRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVyblVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Db250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCBwYXR0ZXJuVHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NsaXBQYXRoRWxlbWVudCAqKVxuYW5kIGNsaXBQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gY2xpcFBhdGhVbml0czsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFza0VsZW1lbnQgKilcbmFuZCBtYXNrRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza0NvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyRWxlbWVudCAqKVxuYW5kIGZpbHRlckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGZpbHRlclVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHByaW1pdGl2ZVVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNYIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNZIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRGaWx0ZXJSZXMgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBTVkdTdHlsYWJsZSB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHdpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggaGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgcmVzdWx0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQmxlbmRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQmxlbmQgTW9kZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX05PUk1BTCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTVVMVElQTFkgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1NDUkVFTiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfREFSS0VOID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9MSUdIVEVOID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtb2RlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29sb3IgTWF0cml4IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTUFUUklYID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHZhbHVlczsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG5cbigqICAgLy8gQ29tcG9uZW50IFRyYW5zZmVyIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQSA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB0YWJsZVZhbHVlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNsb3BlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgaW50ZXJjZXB0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYW1wbGl0dWRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBvZmZzZXQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jUkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jR0VsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQUVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb3NpdGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbXBvc2l0ZSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9JTiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUCA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9YT1IgPSA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQyA9IDY7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsyOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrNDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEVkZ2UgTW9kZSBWYWx1ZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1dSQVAgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfTk9ORSA9IDM7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IGtlcm5lbE1hdHJpeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpdmlzb3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiaWFzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZWRnZU1vZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRCb29sZWFuIHByZXNlcnZlQWxwaGE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGlmZnVzZUNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGF6aW11dGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBlbGV2YXRpb247ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVQb2ludExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BvdExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRaOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGxpbWl0aW5nQ29uZUFuZ2xlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDaGFubmVsIFNlbGVjdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0cgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9CID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB4Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB5Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRmxvb2RFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25YOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWTsgKilcblxuKCogICB2b2lkIHNldFN0ZERldmlhdGlvbihpbiBmbG9hdCBzdGREZXZpYXRpb25YLCBpbiBmbG9hdCBzdGREZXZpYXRpb25ZKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUltYWdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZU5vZGVFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gTW9ycGhvbG9neSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1g7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFT2Zmc2V0RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUaWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gVHVyYnVsZW5jZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSA9IDI7ICopXG5cbigqICAgLy8gU3RpdGNoIE9wdGlvbnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1NUSVRDSCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBudW1PY3RhdmVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2VlZDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gc3RpdGNoVGlsZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ3Vyc29yRWxlbWVudCAqKVxuYW5kIGN1cnNvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBRWxlbWVudCAqKVxuYW5kIGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB0YXJnZXQgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld0VsZW1lbnQgKilcbmFuZCB2aWV3RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2NyaXB0RWxlbWVudCAqKVxuYW5kIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21FdmVudCA6IFVJRXZlbnQgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1JlY3Qgem9vbVJlY3RTY3JlZW47ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBwcmV2aW91c1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgcHJldmlvdXNUcmFuc2xhdGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBuZXdTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IG5ld1RyYW5zbGF0ZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgKCogaW5oZXJpdCBlbGVtZW50VGltZUNvbnRyb2wgKilcbiAgbWV0aG9kIHRhcmdldEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTdGFydFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaW1wbGVEdXJhdGlvbiA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUVsZW1lbnQgKilcbmFuZCBhbmltYXRlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NldEVsZW1lbnQgKilcbmFuZCBzZXRFbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRlTW90aW9uRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01QYXRoRWxlbWVudCAqKVxuYW5kIG1QYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlQ29sb3JFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUNvbG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ICopXG5hbmQgYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RWxlbWVudCAqKVxuYW5kIGZvbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCopXG5hbmQgZ2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSEtlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR1ZLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVNyY0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VTcmNFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VVcmlFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlVXJpRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUZvcm1hdEVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZU5hbWVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlTmFtZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNZXRhZGF0YUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbWV0YWRhdGFFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9yZWlnbk9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnROUyB4bWxucyAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUEgZG9jIDogYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaCBkb2MgOiBhbHRHbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhEZWYgZG9jIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoZGVmXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoSXRlbSBkb2MgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoaXRlbVwiXG5cbmxldCBjcmVhdGVBbmltYXRlIGRvYyA6IGFuaW1hdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZUNvbG9yIGRvYyA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZWNvbG9yXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVNb3Rpb24gZG9jIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZW1vdGlvblwiXG5cbmxldCBjcmVhdGVBbmltYXRlVHJhbnNmb3JtIGRvYyA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG5sZXQgY3JlYXRlQ2lyY2xlIGRvYyA6IGNpcmNsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2lyY2xlXCJcblxubGV0IGNyZWF0ZUNsaXBQYXRoIGRvYyA6IGNsaXBQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjbGlwcGF0aFwiXG5cbigqIGxldCBjcmVhdGVDb2xvclByb2ZpbGUgZG9jIDogY29sb3JQcm9maWxlIHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbG9yLXByb2ZpbGVcIiAqKVxubGV0IGNyZWF0ZUN1cnNvciBkb2MgOiBjdXJzb3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImN1cnNvclwiXG5cbmxldCBjcmVhdGVEZWZzIGRvYyA6IGRlZnNFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlZnNcIlxuXG5sZXQgY3JlYXRlRGVzYyBkb2MgOiBkZXNjRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZXNjXCJcblxubGV0IGNyZWF0ZUVsbGlwc2UgZG9jIDogZWxsaXBzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZWxsaXBzZVwiXG5cbigqIGxldCBjcmVhdGVGZSogKilcbmxldCBjcmVhdGVGaWx0ZXIgZG9jIDogZmlsdGVyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWx0ZXJcIlxuXG5sZXQgY3JlYXRlRm9udCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZUZvcm1hdCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtZm9ybWF0XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlTmFtZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtbmFtZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZVNyYyBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2Utc3JjXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlVXJpIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS11cmlcIlxuXG5sZXQgY3JlYXRlRm9yZWlnbk9iamVjdCBkb2MgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JlaWduT2JqZWN0XCJcblxubGV0IGNyZWF0ZUcgZG9jIDogZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ1wiXG5cbmxldCBjcmVhdGVHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhcIlxuXG5sZXQgY3JlYXRlR2x5cGhSZWYgZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBocmVmXCJcblxubGV0IGNyZWF0ZWhrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGtlcm5cIlxuXG5sZXQgY3JlYXRlSW1hZ2UgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltYWdlXCJcblxubGV0IGNyZWF0ZUxpbmVFbGVtZW50IGRvYyA6IGxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVcIlxuXG5sZXQgY3JlYXRlTGluZWFyRWxlbWVudCBkb2MgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZWFyZ3JhZGllbnRcIlxuXG4oKiBsZXQgY3JlYXRlTWFya2VyIGRvYyA6IG1hcmtlckVsZW1lbnQgKilcbmxldCBjcmVhdGVNYXNrIGRvYyA6IG1hc2tFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hc2tcIlxuXG5sZXQgY3JlYXRlTWV0YURhdGEgZG9jIDogbWV0YWRhdGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFkYXRhXCJcblxubGV0IGNyZWF0ZU1pc3NpbmdHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWlzc2luZy1nbHlwaFwiXG5cbmxldCBjcmVhdGVNUGF0aCBkb2MgOiBtUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibXBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0aCBkb2MgOiBwYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXRoXCJcblxubGV0IGNyZWF0ZVBhdHRlcm4gZG9jIDogcGF0dGVybkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0dGVyblwiXG5cbmxldCBjcmVhdGVQb2x5Z29uIGRvYyA6IHBvbHlnb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlnb25cIlxuXG5sZXQgY3JlYXRlUG9seWxpbmUgZG9jIDogcG9seUxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlsaW5lXCJcblxubGV0IGNyZWF0ZVJhZGlhbGdyYWRpZW50IGRvYyA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyYWRpYWxncmFkaWVudFwiXG5cbmxldCBjcmVhdGVSZWN0IGRvYyA6IHJlY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJlY3RcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVNldCBkb2MgOiBzZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNldFwiXG5cbmxldCBjcmVhdGVTdG9wIGRvYyA6IHN0b3BFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0b3BcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZVN2ZyBkb2MgOiBzdmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN2Z1wiXG5cbmxldCBjcmVhdGVTd2l0Y2ggZG9jIDogc3dpdGNoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzd2l0Y2hcIlxuXG5sZXQgY3JlYXRlU3ltYm9sIGRvYyA6IHN5bWJvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ltYm9sXCJcblxubGV0IGNyZWF0ZVRleHRFbGVtZW50IGRvYyA6IHRleHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRcIlxuXG5sZXQgY3JlYXRlVGV4dHBhdGggZG9jIDogdGV4dFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRwYXRoXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVUcmVmIGRvYyA6IHRyZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyZWZcIlxuXG5sZXQgY3JlYXRlVHNwYW4gZG9jIDogdHNwYW5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRzcGFuXCJcblxubGV0IGNyZWF0ZVVzZSBkb2MgOiB1c2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVzZVwiXG5cbmxldCBjcmVhdGVWaWV3IGRvYyA6IHZpZXdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZXdcIlxuXG5sZXQgY3JlYXRldmtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2a2VyblwiXG5cbigqKioqKVxuXG5sZXQgc3ZnX2VsZW1lbnQgOiBlbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9TVkdFbGVtZW50XG5cbmxldCBkb2N1bWVudCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgOiBlbGVtZW50IHQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gZSAtPiBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBlIGVsc2UgcmFpc2UgTm90X2ZvdW5kKVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgKGUgOiAjRG9tLm5vZGUgSnMudCkgOiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgKGUgOiAjZWxlbWVudCB0KSB0YWcgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA6IGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhXCJcblxuICBsZXQgYWx0R2x5cGggZSA6IGFsdEdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhcIlxuXG4gIGxldCBhbHRHbHlwaERlZiBlIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGRlZlwiXG5cbiAgbGV0IGFsdEdseXBoSXRlbSBlIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhpdGVtXCJcblxuICBsZXQgYW5pbWF0ZSBlIDogYW5pbWF0ZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVcIlxuXG4gIGxldCBhbmltYXRlQ29sb3IgZSA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVjb2xvclwiXG5cbiAgbGV0IGFuaW1hdGVNb3Rpb24gZSA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlbW90aW9uXCJcblxuICBsZXQgYW5pbWF0ZVRyYW5zZm9ybSBlIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCBvcHQgPVxuICAgIHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbiAgbGV0IGNpcmNsZSBlIDogY2lyY2xlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2lyY2xlXCJcblxuICBsZXQgY2xpcFBhdGggZSA6IGNsaXBQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2xpcHBhdGhcIlxuXG4gICgqIGxldCBDb2xvclByb2ZpbGUgZSA6IGNvbG9yUHJvZmlsZSB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY29sb3ItcHJvZmlsZVwiICopXG4gIGxldCBjdXJzb3IgZSA6IGN1cnNvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImN1cnNvclwiXG5cbiAgbGV0IGRlZnMgZSA6IGRlZnNFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZWZzXCJcblxuICBsZXQgZGVzYyBlIDogZGVzY0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlc2NcIlxuXG4gIGxldCBlbGxpcHNlIGUgOiBlbGxpcHNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZWxsaXBzZVwiXG5cbiAgKCogbGV0IEZlKiAqKVxuICBsZXQgZmlsdGVyIGUgOiBmaWx0ZXJFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmaWx0ZXJcIlxuXG4gIGxldCBmb250IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udFwiXG5cbiAgbGV0IGZvbnRGYWNlIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlXCJcblxuICBsZXQgZm9udEZhY2VGb3JtYXQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtZm9ybWF0XCJcblxuICBsZXQgZm9udEZhY2VOYW1lIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLW5hbWVcIlxuXG4gIGxldCBmb250RmFjZVNyYyBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1zcmNcIlxuXG4gIGxldCBmb250RmFjZVVyaSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb3JlaWduT2JqZWN0IGUgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9yZWlnbm9iamVjdFwiXG5cbiAgbGV0IGcgZSA6IGdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnXCJcblxuICBsZXQgZ2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhcIlxuXG4gIGxldCBnbHlwaFJlZiBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaHJlZlwiXG5cbiAgbGV0IGhrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJoa2VyblwiXG5cbiAgbGV0IGltYWdlIGUgOiBpbWFnZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImltYWdlXCJcblxuICBsZXQgbGluZUVsZW1lbnQgZSA6IGxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lXCJcblxuICBsZXQgbGluZWFyRWxlbWVudCBlIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lYXJncmFkaWVudFwiXG5cbiAgKCogbGV0IE1hcmtlciBlIDogbWFya2VyRWxlbWVudCAqKVxuICBsZXQgbWFzayBlIDogbWFza0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1hc2tcIlxuXG4gIGxldCBtZXRhRGF0YSBlIDogbWV0YWRhdGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtZXRhZGF0YVwiXG5cbiAgbGV0IG1pc3NpbmdHbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtaXNzaW5nLWdseXBoXCJcblxuICBsZXQgbVBhdGggZSA6IG1QYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibXBhdGhcIlxuXG4gIGxldCBwYXRoIGUgOiBwYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0aFwiXG5cbiAgbGV0IHBhdHRlcm4gZSA6IHBhdHRlcm5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXR0ZXJuXCJcblxuICBsZXQgcG9seWdvbiBlIDogcG9seWdvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlnb25cIlxuXG4gIGxldCBwb2x5bGluZSBlIDogcG9seUxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5bGluZVwiXG5cbiAgbGV0IHJhZGlhbGdyYWRpZW50IGUgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJhZGlhbGdyYWRpZW50XCJcblxuICBsZXQgcmVjdCBlIDogcmVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJlY3RcIlxuXG4gIGxldCBzY3JpcHQgZSA6IHNjcmlwdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNjcmlwdFwiXG5cbiAgbGV0IHNldCBlIDogc2V0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2V0XCJcblxuICBsZXQgc3RvcCBlIDogc3RvcEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0b3BcIlxuXG4gIGxldCBzdHlsZSBlIDogc3R5bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdHlsZVwiXG5cbiAgbGV0IHN2ZyBlIDogc3ZnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ZnXCJcblxuICBsZXQgc3dpdGNoIGUgOiBzd2l0Y2hFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzd2l0Y2hcIlxuXG4gIGxldCBzeW1ib2wgZSA6IHN5bWJvbEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN5bWJvbFwiXG5cbiAgbGV0IHRleHRFbGVtZW50IGUgOiB0ZXh0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dFwiXG5cbiAgbGV0IHRleHRwYXRoIGUgOiB0ZXh0UGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRwYXRoXCJcblxuICBsZXQgdGl0bGUgZSA6IHRpdGxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGl0bGVcIlxuXG4gIGxldCB0cmVmIGUgOiB0cmVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHJlZlwiXG5cbiAgbGV0IHRzcGFuIGUgOiB0c3BhbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRzcGFuXCJcblxuICBsZXQgdXNlIGUgOiB1c2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ1c2VcIlxuXG4gIGxldCB2aWV3IGUgOiB2aWV3RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmlld1wiXG5cbiAgbGV0IHZrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2a2VyblwiXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFNvdXJjZSAqKVxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG50eXBlIHN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0RXZlbnRJZCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbiAgKCogbWV0aG9kIHNvdXJjZSA6IHVuaXQgKilcbmVuZFxuXG5jbGFzcyB0eXBlIGV2ZW50U291cmNlID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHVybCA6IHN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2l0aENyZWRlbnRpYWxzIGIgOiBvcHRpb25zIHQgPVxuICBsZXQgaW5pdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBpbml0IyMud2l0aENyZWRlbnRpYWxzIDo9IEpzLmJvb2wgYjtcbiAgaW5pdFxuXG5sZXQgZXZlbnRTb3VyY2UgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBldmVudFNvdXJjZV9vcHRpb25zID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgY29uc29sZSA9IG9iamVjdFxuICBtZXRob2QgbG9nIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ182IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ183IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzggOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mbyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2FybiA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3IgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMSA6IGJvb2wgdCAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMiA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8zIDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNCA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNSA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpcnhtbCA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYWNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWQgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cEVuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWVFbmQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5leHRlcm5hbCBnZXRfY29uc29sZSA6IHVuaXQgLT4gY29uc29sZSB0ID0gXCJjYW1sX2pzX2dldF9jb25zb2xlXCJcblxubGV0IGNvbnNvbGUgPSBnZXRfY29uc29sZSAoKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zaXRpb25FcnJvckNvZGVcblxudHlwZSB3YXRjaElkXG5cbmNsYXNzIHR5cGUgY29vcmRpbmF0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxhdGl0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb25naXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlQWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkaW5nIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlZWQgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNvb3JkcyA6IGNvb3JkaW5hdGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lc3RhbXAgOiBKcy5kYXRlIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgZW5hYmxlSGlnaEFjY3VyYWN5IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lb3V0IDogaW50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heGltdW1BZ2UgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIF9QRVJNSVNTSU9OX0RFTklFRF8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT1NJVElPTl9VTkFWQUlMQUJMRV8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9USU1FT1VUIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZ2VvbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGdldEN1cnJlbnRQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgd2F0Y2hQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB3YXRjaElkIEpzLm1ldGhcblxuICBtZXRob2QgY2xlYXJXYXRjaCA6IHdhdGNoSWQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Bvc2l0aW9uX29wdGlvbnMgKCkgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGdlb2xvY2F0aW9uID1cbiAgbGV0IHggPSBKcy5VbnNhZmUuZ2xvYmFsIyMubmF2aWdhdG9yIGluXG4gIGlmIEpzLk9wdGRlZi50ZXN0IHggdGhlbiB4IyMuZ2VvbG9jYXRpb24gZWxzZSB4XG5cbigqIHVuZGVmaW5lZCAqKVxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgZ2VvbG9jYXRpb25cbiIsImNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdW5kaW5nQ2xpZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RCb3VuZHMgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJhdGlvIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0ludGVyc2VjdGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGQgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkcyA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wdGlvbnMgKCkgOiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudCA9XG4gIEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlciA6XG4gICAgKCAgICggICBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudFxuICAgICAgICAgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnRcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTaGFyZWQgPSBzaWdcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICB2YWwgb2JqZWN0X29wdGlvbnMgOiB1bml0IC0+IG9iamVjdF9vcHRpb25zIEpzLnRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNoYXJlZCA6IFNoYXJlZCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvYmplY3Rfb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29sbGF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjb2xsYXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2FnZSA9IEpzLnN0cmluZyBcInNvcnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBzZW5zaXRpdml0eSA9IEpzLnN0cmluZyBcInZhcmlhbnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBpZ25vcmVQdW5jdHVhdGlvbiA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1lcmljID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhc2VGaXJzdCA9IEpzLnN0cmluZyBcImZhbHNlXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFyZSA6IChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiBpbnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBEYXRlVGltZUZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5UGVyaW9kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXJDeWNsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0TWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgZGF0ZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjYWxlbmRhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXlQZXJpb2QgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIxMiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyQ3ljbGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZm9ybWF0TWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgd2Vla2RheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBlcmEgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgeWVhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtb250aCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW51dGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2Vjb25kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmVOYW1lID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMuZGF0ZSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5kYXRlIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTnVtYmVyRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYWN0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lTaWduIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG5vdGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNpZ25EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nTW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdQcmlvcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdJbmNyZW1lbnQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRyYWlsaW5nWmVyb0Rpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGNvbXBhY3REaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeVNpZ24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgbm90YXRpb24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNpZ25EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHN0eWxlID0gSnMuc3RyaW5nIFwiZGVjaW1hbFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdW5pdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdXNlR3JvdXBpbmcgPSBKcy5fdHJ1ZVxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ01vZGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdQcmlvcml0eSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ0luY3JlbWVudCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0cmFpbGluZ1plcm9EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQbHVyYWxSdWxlcyA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcGx1cmFsQ2F0ZWdvcmllcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBfdHlwZSA9IEpzLnN0cmluZyBcImNhcmRpbmFsXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2Qgc2VsZWN0IDogSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRsID0gb2JqZWN0XG4gIG1ldGhvZCBfQ29sbGF0b3IgOiBDb2xsYXRvci5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRGF0ZVRpbWVGb3JtYXQgOiBEYXRlVGltZUZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTnVtYmVyRm9ybWF0IDogTnVtYmVyRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QbHVyYWxSdWxlcyA6IFBsdXJhbFJ1bGVzLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENhbm9uaWNhbExvY2FsZXMgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGludGwgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGxcblxubGV0IGNvbGxhdG9yX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9Db2xsYXRvclxuXG5sZXQgZGF0ZVRpbWVGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0RhdGVUaW1lRm9ybWF0XG5cbmxldCBudW1iZXJGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX051bWJlckZvcm1hdFxuXG5sZXQgcGx1cmFsUnVsZXNfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX1BsdXJhbFJ1bGVzXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRsXG4iLCJpbmNsdWRlIEpzX29mX29jYW1sLkpzXG5tb2R1bGUgVXJsID0gSnNfb2Zfb2NhbWwuVXJsXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbC5Eb21faHRtbFxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbC5GaXJlYnVnXG5tb2R1bGUgRmlsZSA9IEpzX29mX29jYW1sLkZpbGVcbm1vZHVsZSBEb20gPSBKc19vZl9vY2FtbC5Eb21cbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sLlR5cGVkX2FycmF5XG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWwuUmVnZXhwXG5cbnR5cGUgKCdhLCAnYikgcmVzdWx0ID0gKCdhLCAnYikgU3RkbGliLnJlc3VsdCA9IE9rIG9mICdhIHwgRXJyb3Igb2YgJ2JcblxudHlwZSB3aW5kb3cgPSBEb21faHRtbC53aW5kb3dcblxubGV0IHRvX2FycmF5ZiBmIGEgPSBBcnJheS5tYXAgZiAodG9fYXJyYXkgYSlcblxubGV0IG9mX2FycmF5ZiBmIGEgPSBhcnJheSAoQXJyYXkubWFwIGYgYSlcblxubGV0IHRvX2xpc3QgYSA9IEFycmF5LnRvX2xpc3QgQEAgdG9fYXJyYXkgYVxuXG5sZXQgb2ZfbGlzdCBsID0gYXJyYXkgQEAgQXJyYXkub2ZfbGlzdCBAQCBsXG5cbmxldCB0b19saXN0ZiBmIGEgPSBBcnJheS50b19saXN0IEBAIHRvX2FycmF5ZiBmIGFcblxubGV0IG9mX2xpc3RmIGYgYSA9IG9mX2FycmF5ZiBmIEBAIEFycmF5Lm9mX2xpc3QgYVxuXG5sZXQgb3B0ZGVmIGYgPSBmdW5jdGlvbiBOb25lIC0+IHVuZGVmaW5lZCB8IFNvbWUgeCAtPiBkZWYgKGYgeClcblxubGV0IHRvX29wdGRlZiBmIHggPVxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIHggd2l0aCBOb25lIC0+IE5vbmUgfCBTb21lIHggLT4gU29tZSAoZiB4KVxuXG5sZXQgdW5vcHRkZWZfZiBkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBkZWYgfCBTb21lIHggLT4gZiB4XG5cbmxldCB1bm9wdGRlZiBkZWYgeCA9IG1hdGNoIE9wdGRlZi50b19vcHRpb24geCB3aXRoIE5vbmUgLT4gZGVmIHwgU29tZSB4IC0+IHhcblxubGV0IGNvbnZkZWYgZiB4ID1cbiAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiB1bmRlZmluZWQgfCBTb21lIHggLT4gZGVmIChmIHgpXG5cbmxldCB0b19vcHQgZiB4ID1cbiAgbWF0Y2ggT3B0LnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IG9wdCBmID0gZnVuY3Rpb24gTm9uZSAtPiBudWxsIHwgU29tZSB4IC0+IHNvbWUgKGYgeClcblxubGV0IGNvbnZvcHQgZiB4ID1cbiAgbWF0Y2ggT3B0LnRvX29wdGlvbiB4IHdpdGggTm9uZSAtPiBudWxsIHwgU29tZSB4IC0+IHNvbWUgKGYgeClcblxubGV0IGpzX2xvZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgb1xuXG5sZXQgbG9nX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKHN0cmluZyBzKVxuXG5sZXQgbG9nIGZtdCA9XG4gIEZvcm1hdC5rZnByaW50ZlxuICAgIChmdW4gX2ZtdCAtPiBqc19sb2cgKHN0cmluZyAoRm9ybWF0LmZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpKSlcbiAgICBGb3JtYXQuc3RyX2Zvcm1hdHRlciBmbXRcblxubGV0IGVycm9yX29mX3N0cmluZyBzID0gbmV3JWpzIGVycm9yX2NvbnN0ciAoc3RyaW5nIHMpXG5sZXQgY2F0Y2hfZXhuIGYgPSBmdW5jdGlvblxuICB8IEpzX2Vycm9yLkV4biBlIC0+IGYgKEpzX2Vycm9yLnRvX2Vycm9yIGUpXG4gIHwgZXhuIC0+IGYgQEAgZXJyb3Jfb2Zfc3RyaW5nIEBAIFByaW50ZXhjLnRvX3N0cmluZyBleG5cblxubW9kdWxlIEFPcHQgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuICBsZXQgbnVsbCA6ICdhIHQgPSBVbnNhZmUucHVyZV9qc19leHByIFwibnVsbFwiXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBsZXQgdW5kZWZpbmVkIDogJ2EgdCA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuICBleHRlcm5hbCBkZWYgOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCByZXR1cm4gOiAnYSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBjb2VyY2UgOiAnYSB0IC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBleHRlcm5hbCBqc19lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG4gIGxldCBpc19ub25lICh4IDogJ2EgdCkgOiBib29sID0geCA9PSB1bmRlZmluZWQgfHwganNfZXF1YWxzIHggbnVsbFxuICBsZXQgbWFwID8obm9uZT11bmRlZmluZWQpICh4IDogJ2EgdCkgKGYgOiAnYSAtPiAnYikgOiAnYiB0ID1cbiAgICBpZiBpc19ub25lIHggdGhlbiBub25lIGVsc2UgcmV0dXJuIChmIChjb2VyY2UgeCkpXG4gIGxldCBiaW5kID8obm9uZT11bmRlZmluZWQpICh4IDogJ2EgdCkgKGYgOiAnYSAtPiAnYiB0KSA6ICdiIHQgPVxuICAgIGlmIGlzX25vbmUgeCB0aGVuIG5vbmUgZWxzZSBmIChjb2VyY2UgeClcbiAgbGV0IHRlc3QgKHggOiAnYSB0KSA6IGJvb2wgPSBub3QgKGlzX25vbmUgeClcbiAgbGV0IGl0ZXIgKHggOiAnYSB0KSAoZiA6ICdhIC0+IHVuaXQpIDogdW5pdCA9IGlmIG5vdCAoaXNfbm9uZSB4KSB0aGVuIGYgKGNvZXJjZSB4KVxuICBsZXQgY2FzZSAoeCA6ICdhIHQpIChmIDogdW5pdCAtPiAnYikgKGcgOiAnYSAtPiAnYikgOiAnYiA9IGlmIGlzX25vbmUgeCB0aGVuIGYgKCkgZWxzZSBnIChjb2VyY2UgeClcbiAgbGV0IGdldCAoeCA6ICdhIHQpIChmIDogdW5pdCAtPiAnYSkgOiAnYSA9IGlmIGlzX25vbmUgeCB0aGVuIGYgKCkgZWxzZSAoY29lcmNlIHgpXG4gIGxldCBvcHRpb24gPyhub25lPXVuZGVmaW5lZCkgKHggOiAnYSBvcHRpb24pIDogJ2EgdCA9IG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBub25lXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgbGV0IHRvX29wdGlvbiAoeCA6ICdhIHQpIDogJ2Egb3B0aW9uID0gY2FzZSB4IChmdW4gKCkgLT4gTm9uZSkgKGZ1biB4IC0+IFNvbWUgeClcbiAgbGV0IGFvcHQgPyhub25lPSh1bmRlZmluZWQgOiAnYiB0KSkgKGYgOiAnYSAtPiAnYikgOiAnYSBvcHRpb24gLT4gJ2IgdCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IG5vbmVcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4gKGYgeClcbiAgbGV0IHRvX2FvcHQgKGYgOiAnYSAtPiAnYikgKHggOiAnYSB0KSA6ICdiIG9wdGlvbiA9IGNhc2UgeCAoZnVuICgpIC0+IE5vbmUpIChmdW4geCAtPiBTb21lIChmIHgpKVxuZW5kXG50eXBlICdhIGFvcHQgPSAnYSBBT3B0LnRcblxudHlwZSAnYSBjYXNlX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA+IGdlbl9wcm9wXG5cbmxldCByZWMgY2hvb3NlX2Nhc2Vfb3B0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB1bmRlZmluZWRcbiAgfCBoIDo6IHQgLT4gbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBoIHdpdGggTm9uZSAtPiBjaG9vc2VfY2FzZV9vcHQgdCB8IFNvbWUgXyAtPiBoXG5cbmxldCBjaG9vc2VfY2FzZSBsID0gY2hvb3NlX2Nhc2Vfb3B0IChMaXN0Lm1hcCBPcHRkZWYucmV0dXJuIGwpXG5cbmxldCBvYmplY3RfY3MgPSBVbnNhZmUuZ2xvYmFsIyMuX09iamVjdFxubGV0IGFzc2lnbiAobzEgOiBfIHQpIChvMiA6IF8gdCkgPSBVbnNhZmUuY29lcmNlIChvYmplY3RfY3MjI2Fzc2lnbiBvMSBvMilcbmxldCBhc3NpZ25fbGlzdCBsID0gVW5zYWZlLmNvZXJjZSAoVW5zYWZlLm1ldGhfY2FsbCBvYmplY3RfY3MgXCJhc3NpZ25cIiAoQXJyYXkub2ZfbGlzdCBsKSlcblxubGV0IHJlbW92ZV91bmRlZmluZWQgbyA9XG4gIGxldCBrZXlzID0gb2JqZWN0X2tleXMgbyBpblxuICBrZXlzIyNmb3JFYWNoICh3cmFwX2NhbGxiYWNrIChmdW4gayBfIF8gLT5cbiAgICAgIGlmIG5vdCAoT3B0ZGVmLnRlc3QgKFVuc2FmZS5nZXQgbyBrKSkgdGhlbiBVbnNhZmUuZGVsZXRlIG8gaykpXG4iLCJvcGVuIEpzXG5cbnR5cGUgbm9ucmVjICdhIHQgPSA8ID4gdFxuXG5sZXQgb2JqID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgKHYgOiAnYSkgPSBVbnNhZmUuc2V0IHQgKHN0cmluZyBrKSB2XG5cbmxldCBhZGRfbGlzdCAodCA6ICdhIHQpIChsIDogKHN0cmluZyAqICdhKSBsaXN0KSA9XG4gIExpc3QuaXRlciAoZnVuIChrLCB2KSAtPiBhZGQgdCBrIHYpIGxcblxubGV0IGFkZF9saXN0ZiAodCA6ICdiIHQpIChmIDogKCdhIC0+ICdiKSkgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpID1cbiAgTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgKGYgdikpIGxcblxubGV0IG1ha2UgKGwgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2EgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIGFkZF9saXN0IHQgbDtcbiAgdFxuXG5sZXQgbWFrZWYgKGYgOiAoJ2EgLT4gJ2IpKSAobCA6IChzdHJpbmcgKiAnYSkgbGlzdCkgOiAnYiB0ID1cbiAgbGV0IHQgPSBjcmVhdGUgKCkgaW5cbiAgYWRkX2xpc3RmIHQgZiBsO1xuICB0XG5cbmxldCByZW1vdmUgKHQgOiAnYSB0KSAoayA6IHN0cmluZykgPSBVbnNhZmUuZGVsZXRlIHQgKHN0cmluZyBrKVxuXG5sZXQgZmluZCAodCA6ICdhIHQpIChrIDogc3RyaW5nKSA6ICdhIG9wdGlvbiA9XG4gIE9wdGRlZi50b19vcHRpb24gKFVuc2FmZS5nZXQgdCAoc3RyaW5nIGspKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogc3RyaW5nIGxpc3QgPVxuICB0b19saXN0ZiB0b19zdHJpbmcgQEAgb2JqIyNrZXlzIHRcblxubGV0IGl0ZW1zICh0IDogJ2EgdCkgOiAoc3RyaW5nICogJ2EpIGxpc3QgPVxuICB0b19saXN0ZiAoZnVuIGsgLT4gdG9fc3RyaW5nIGssIFVuc2FmZS5nZXQgdCBrKSBAQCBvYmojI2tleXMgdFxuXG5sZXQgaXRlbXNmIChmIDogKCdhIC0+ICdiKSkgKHQgOiAnYSB0KSA6IChzdHJpbmcgKiAnYikgbGlzdCA9XG4gIHRvX2xpc3RmIChmdW4gayAtPiB0b19zdHJpbmcgaywgZiBAQCBVbnNhZmUuZ2V0IHQgaykgQEAgb2JqIyNrZXlzIHRcblxubGV0IGxlbmd0aCAodCA6ICdhIHQpID0gKG9iaiMja2V5cyB0KSMjLmxlbmd0aFxuXG5sZXQgbWVyZ2UgKGwgOiAnYSB0IGxpc3QpIDogJ2EgdCA9XG4gIGxldCB0ID0gY3JlYXRlICgpIGluXG4gIExpc3QuaXRlciAoZnVuIHggLT4gTGlzdC5pdGVyIChmdW4gKGssIHYpIC0+IGFkZCB0IGsgdikgKGl0ZW1zIHgpKSBsO1xuICB0XG4iLCJvcGVuIEpzXG5cbmNsYXNzIHR5cGUgWydhLCAnYl0gcHJvbWlzZTAgPVxuICBvYmplY3RcbiAgICBtZXRob2QgdGhlbl8gOiAoJ2EgLT4gdW5pdCkgY2FsbGJhY2sgLT4gKCdhLCAnYikgcHJvbWlzZTAgdCBtZXRoXG4gICAgbWV0aG9kIGNhdGNoIDogKCdiIC0+IHVuaXQpIGNhbGxiYWNrIC0+ICgnYSwgJ2IpIHByb21pc2UwIHQgbWV0aFxuICBlbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb21pc2UgPSBbJ2EsIGVycm9yIHRdIHByb21pc2UwXG5cbnR5cGUgKCdhLCAnYikgcHJvbWlzZV9jcyA9XG4gICgoKCdhIC0+IHVuaXQpIC0+ICgnYiAtPiB1bml0KSAtPiB1bml0KSBjYWxsYmFjayAtPiAoJ2EsICdiKSBwcm9taXNlMCB0KVxuICBjb25zdHJcblxubGV0IHByb21pc2UgZiA9XG4gIGxldCBjcyA6ICgnYSwgJ2IpIHByb21pc2VfY3MgPSBVbnNhZmUuZ2xvYmFsIyMuX1Byb21pc2UgaW5cbiAgbmV3JWpzIGNzICh3cmFwX2NhbGxiYWNrIGYpXG5cbmxldCBqdGhlbjAgP2Vycm9yIChwcm9tIDogKCdhLCAnYiB0KSBwcm9taXNlMCB0KSBmID1cbiAgbGV0IGNhdGNoX2V4biBleG4gPVxuICAgIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZWYgLT4gY2F0Y2hfZXhuIChmdW4geCAtPiBlZiAoVW5zYWZlLmNvZXJjZSB4KSkgZXhuIGluXG4gIGxldCBwID0gcHJvbSMjdGhlbl8gKHdyYXBfY2FsbGJhY2sgKGZ1biB4IC0+IHRyeSBmIHggd2l0aCBleG4gLT4gY2F0Y2hfZXhuIGV4bikpIGluXG4gIG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZXJyb3IgLT4gaWdub3JlIChwIyNjYXRjaCAod3JhcF9jYWxsYmFjayBlcnJvcikpXG5cbmxldCBqdGhlbiA/ZXJyb3IgKHByb20gOiAnYSBwcm9taXNlIHQpIGYgPVxuICBsZXQgY2F0Y2hfZXhuIGV4biA9IG1hdGNoIGVycm9yIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZWYgLT4gY2F0Y2hfZXhuIGVmIGV4biBpblxuICBsZXQgcCA9IHByb20jI3RoZW5fICh3cmFwX2NhbGxiYWNrIChmdW4geCAtPiB0cnkgZiB4IHdpdGggZXhuIC0+IGNhdGNoX2V4biBleG4pKSBpblxuICBtYXRjaCBlcnJvciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGVycm9yIC0+IGlnbm9yZSAocCMjY2F0Y2ggKHdyYXBfY2FsbGJhY2sgZXJyb3IpKVxuXG5sZXQganRoZW4wX29wdCBwcm9tID0gZnVuY3Rpb24gTm9uZSAtPiBpZ25vcmUgcHJvbSB8IFNvbWUgZiAtPiBqdGhlbjAgcHJvbSBmXG5sZXQganRoZW5fb3B0IHByb20gPSBmdW5jdGlvbiBOb25lIC0+IGlnbm9yZSBwcm9tIHwgU29tZSBmIC0+IGp0aGVuIHByb20gZlxuXG5sZXQgcnRoZW4gcHJvbSBmID1cbiAganRoZW4gfmVycm9yOihmdW4gZSAtPiBmIEBAIEVycm9yIGUpIHByb20gKGZ1biB4IC0+IGYgKE9rIHgpKVxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgbG9nIG8gPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyBvXG5cbmxldCBsb2cyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMiBvMSBvMlxuXG5sZXQgbG9nMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjbG9nXzMgbzEgbzIgbzNcblxubGV0IGxvZ19zdHIgcyA9IEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgcylcblxubGV0IGxvZ19zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2dfMiAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKVxuXG5sZXQgbG9nX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2xvZ18zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG5cbmxldCBkZWJ1ZyBvID0gRmlyZWJ1Zy5jb25zb2xlIyNkZWJ1ZyBvXG5cbmxldCBkZWJ1ZzIgbzEgbzIgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzIgbzEgbzJcblxubGV0IGRlYnVnMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjZGVidWdfMyBvMSBvMiBvM1xuXG5sZXQgZGVidWdfc3RyIHMgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgcylcblxubGV0IGRlYnVnX3N0cjIgczEgczIgPSBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzIgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMilcblxubGV0IGRlYnVnX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnXzMgKEpzLnN0cmluZyBzMSkgKEpzLnN0cmluZyBzMikgKEpzLnN0cmluZyBzMylcblxubGV0IHdhcm4gbyA9IEZpcmVidWcuY29uc29sZSMjd2FybiBvXG5cbmxldCB3YXJuMiBvMSBvMiA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8yIG8xIG8yXG5cbmxldCB3YXJuMyBvMSBvMiBvMyA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8zIG8xIG8yIG8zXG5cbmxldCB3YXJuX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyN3YXJuIChKcy5zdHJpbmcgcylcblxubGV0IHdhcm5fc3RyMiBzMSBzMiA9IEZpcmVidWcuY29uc29sZSMjd2Fybl8yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCB3YXJuX3N0cjMgczEgczIgczMgPVxuICBGaXJlYnVnLmNvbnNvbGUjI3dhcm5fMyAoSnMuc3RyaW5nIHMxKSAoSnMuc3RyaW5nIHMyKSAoSnMuc3RyaW5nIHMzKVxuXG5sZXQgZXJyb3IgbyA9IEZpcmVidWcuY29uc29sZSMjZXJyb3Igb1xuXG5sZXQgZXJyb3IyIG8xIG8yID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIG8xIG8yXG5cbmxldCBlcnJvcjMgbzEgbzIgbzMgPSBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzMgbzEgbzIgbzNcblxubGV0IGVycm9yX3N0ciBzID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvciAoSnMuc3RyaW5nIHMpXG5cbmxldCBlcnJvcl9zdHIyIHMxIHMyID0gRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8yIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpXG5cbmxldCBlcnJvcl9zdHIzIHMxIHMyIHMzID1cbiAgRmlyZWJ1Zy5jb25zb2xlIyNlcnJvcl8zIChKcy5zdHJpbmcgczEpIChKcy5zdHJpbmcgczIpIChKcy5zdHJpbmcgczMpXG4iLCJvcGVuIEpzXG5cbmNsYXNzIHR5cGUgYmlnSW50ID0gb2JqZWN0XG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBfIHQgb3B0ZGVmIC0+IGpzX3N0cmluZyB0IG1ldGhcbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuICBtZXRob2QgdmFsdWVPZiA6IGJpZ0ludCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vbnJlYyB0ID0gYmlnSW50IHRcblxubGV0IGJpZ0ludCA6IChVbnNhZmUuYW55IC0+IHQpID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIkJpZ0ludFwiXG5cbmxldCBvZl9zdHJpbmcgcyA9IGJpZ0ludCAoVW5zYWZlLmluamVjdCBAQCBzdHJpbmcgcylcbmxldCBvZl9pbnQgKGkgOiBpbnQpID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIGkpXG5sZXQgb2ZfaW50NjQgKGkgOiBpbnQ2NCkgPSBvZl9zdHJpbmcgKEludDY0LnRvX3N0cmluZyBpKVxubGV0IG9mX25hdGl2ZSAoaSA6IG5hdGl2ZWludCkgPSBvZl9zdHJpbmcgKE5hdGl2ZWludC50b19zdHJpbmcgaSlcbmxldCBvZl9mbG9hdCBmID0gYmlnSW50IChVbnNhZmUuaW5qZWN0IEBAIG51bWJlcl9vZl9mbG9hdCBmKVxuXG5sZXQgdG9fbG9jYWxlX3N0cmluZyA/Zm10ID9vcHRpb25zIChuIDogdCkgPVxuICB0b19zdHJpbmcgKG4jI3RvTG9jYWxlU3RyaW5nIChvcHRkZWYgc3RyaW5nIGZtdCkgKE9wdGRlZi5vcHRpb24gb3B0aW9ucykpXG5sZXQgdG9fc3RyaW5nIChuIDogdCkgPSB0b19zdHJpbmcgbiMjdG9TdHJpbmdcbiIsIm9wZW4gSnNcblxubGV0IHNldElubmVySHRtbCBlbHQgcyA9IGVsdCMjLmlubmVySFRNTCA6PSBzdHJpbmcgc1xuXG5sZXQgc2V0VGV4dCBlbHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICAgICgpXG4gIHwgU29tZSBzIC0+XG4gICAgICBlbHQjIy50ZXh0Q29udGVudCA6PSBzb21lIChzdHJpbmcgcylcblxubGV0IGFkZENsYXNzIGVsdCBzID0gZWx0IyMuY2xhc3NMaXN0IyNhZGQgKHN0cmluZyBzKVxuXG5sZXQgYWRkQ2xhc3NlcyBlbHQgbCA9IExpc3QuaXRlciAoYWRkQ2xhc3MgZWx0KSBsXG5cbmxldCByZW1vdmVDbGFzcyBlbHQgcyA9IGVsdCMjLmNsYXNzTGlzdCMjcmVtb3ZlIChzdHJpbmcgcylcblxubGV0IGNvbnRhaW5zQ2xhc3MgZWx0IHMgPSBlbHQjIy5jbGFzc0xpc3QjI2NvbnRhaW5zIChzdHJpbmcgcylcblxubGV0IHNldEF0dHJpYnV0ZSBlbHQga2V5IHZhbHVlID0gZWx0IyNzZXRBdHRyaWJ1dGUgKHN0cmluZyBrZXkpIChzdHJpbmcgdmFsdWUpXG5cbmxldCByZW1vdmVBdHRyaWJ1dGUgZWx0IGtleSA9IGVsdCMjcmVtb3ZlQXR0cmlidXRlIChzdHJpbmcga2V5KVxuXG5sZXQgZ2V0QXR0cmlidXRlIGVsdCBrZXkgPSBPcHQudG9fb3B0aW9uIChlbHQjI2dldEF0dHJpYnV0ZSAoc3RyaW5nIGtleSkpXG5cbmxldCBzZXRDU1MgZWx0IHN0eWxlcyA9XG4gIGxldCBzdHlsZXMgPVxuICAgIFN0cmluZy5jb25jYXQgXCI7IFwiIChMaXN0Lm1hcCAoZnVuIChrLCB2KSAtPiBrIF4gXCI6IFwiIF4gdikgc3R5bGVzKVxuICBpblxuICBzZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiBzdHlsZXNcblxubGV0IGFkZENTUyBlbHQgc3R5bGVzID1cbiAgbGV0IHN0eWxlcyA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIjsgXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGsgXiBcIjogXCIgXiB2KSBzdHlsZXMpXG4gIGluXG4gIGxldCBzdHlsZXMgPVxuICAgIG1hdGNoIGdldEF0dHJpYnV0ZSBlbHQgXCJzdHlsZVwiIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgc3R5bGVzXG4gICAgfCBTb21lIG9sZF9zdHlsZXMgLT5cbiAgICAgICAgb2xkX3N0eWxlcyBeIFwiOyBcIiBeIHN0eWxlc1xuICBpblxuICBzZXRBdHRyaWJ1dGUgZWx0IFwic3R5bGVcIiBzdHlsZXNcblxubGV0IGFwcGVuZENoaWxkID0gRG9tLmFwcGVuZENoaWxkXG5cbmxldCByZW1vdmVDaGlsZCA9IERvbS5yZW1vdmVDaGlsZFxuXG5sZXQgYXBwZW5kQ2hpbGRyZW4gcGFyZW50IGNoaWxkcmVuID0gTGlzdC5pdGVyIChEb20uYXBwZW5kQ2hpbGQgcGFyZW50KSBjaGlsZHJlblxuXG5sZXQgY2hpbGRyZW4gcGFyZW50ID0gRG9tLmxpc3Rfb2Zfbm9kZUxpc3QgcGFyZW50IyMuY2hpbGROb2Rlc1xuXG5sZXQgcmVtb3ZlQ2hpbGRpIHBhcmVudCBpID1cbiAgbWF0Y2ggTGlzdC5udGhfb3B0IChjaGlsZHJlbiBwYXJlbnQpIGkgd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgICgpXG4gIHwgU29tZSBjaGlsZCAtPlxuICAgICAgcmVtb3ZlQ2hpbGQgcGFyZW50IGNoaWxkXG5cbmxldCByZW1vdmVDaGlsZHJlbiBwYXJlbnQgPSBMaXN0Lml0ZXIgKHJlbW92ZUNoaWxkIHBhcmVudCkgKGNoaWxkcmVuIHBhcmVudClcblxubGV0IHJlcGxhY2VDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW4gPVxuICByZW1vdmVDaGlsZHJlbiBwYXJlbnQgO1xuICBhcHBlbmRDaGlsZHJlbiBwYXJlbnQgY2hpbGRyZW5cblxubGV0IGJ5X2lkIHMgPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZCBzXG5cbmxldCBhZGRMaXN0ZW5lciA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBlbHQgZXYgZiA9XG4gIGxldCBjYXB0dXJlID0gT3B0aW9uLm1hcCBib29sIGNhcHR1cmUgaW5cbiAgbGV0IG9uY2UgPSBPcHRpb24ubWFwIGJvb2wgb25jZSBpblxuICBsZXQgcGFzc2l2ZSA9IE9wdGlvbi5tYXAgYm9vbCBwYXNzaXZlIGluXG4gIGlnbm9yZSBAQFxuICBEb20uYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID9jYXB0dXJlID9vbmNlID9wYXNzaXZlIGVsdCAoRG9tLkV2ZW50Lm1ha2UgZXYpXG4gICAgKERvbS5oYW5kbGVyIChmdW4gZSAtPiBib29sIChmIGUpKSlcblxubW9kdWxlIEVsID0gc3RydWN0XG4gIGxldCBjcmVhdGUgPyhjbGFzc2VzID0gW10pID8oc3R5bGVzID0gW10pID8obGlzdGVuID0gW10pID8oYXR0ciA9IFtdKSA/dGV4dCBmXG4gICAgICBjaGlsZHJlbiA9XG4gICAgbGV0IGVsdCA9IGYgRG9tX2h0bWwuZG9jdW1lbnQgaW5cbiAgICBMaXN0Lml0ZXIgKGZ1biAoZXYsIGYpIC0+IGFkZExpc3RlbmVyIGVsdCBldiBmKSBsaXN0ZW4gO1xuICAgIGFkZENsYXNzZXMgZWx0IGNsYXNzZXMgO1xuICAgIHNldENTUyBlbHQgc3R5bGVzIDtcbiAgICBMaXN0Lml0ZXIgKGZ1biAoaywgdikgLT4gc2V0QXR0cmlidXRlIGVsdCBrIHYpIGF0dHIgO1xuICAgIHNldFRleHQgZWx0IHRleHQgO1xuICAgIGFwcGVuZENoaWxkcmVuIGVsdCBjaGlsZHJlbiA7XG4gICAgZWx0XG5cbiAgbGV0IGJ1dHRvbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlQnV0dG9uIGNoaWxkcmVuXG5cbiAgbGV0IGRpdiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlRGl2IGNoaWxkcmVuXG5cbiAgbGV0IGEgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUEgY2hpbGRyZW5cblxuICBsZXQgc3BhbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU3BhbiBjaGlsZHJlblxuXG4gIGxldCBmb3JtID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVGb3JtIGNoaWxkcmVuXG5cbiAgbGV0IG9wdGlvbiA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlT3B0aW9uIGNoaWxkcmVuXG5cbiAgbGV0IHNlbGVjdCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlU2VsZWN0IGNoaWxkcmVuXG5cbiAgbGV0IGlucHV0ID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCAoKSA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVJbnB1dCBbXVxuXG4gIGxldCBpZnJhbWUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUlmcmFtZSBjaGlsZHJlblxuXG4gIGxldCBsYWJlbCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlTGFiZWwgY2hpbGRyZW5cblxuICBsZXQgdWwgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVVsIGNoaWxkcmVuXG5cbiAgbGV0IGxpID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVMaSBjaGlsZHJlblxuXG4gIGxldCBpbWcgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZUltZyBjaGlsZHJlblxuXG4gIGxldCBzY3JpcHQgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVNjcmlwdCBjaGlsZHJlblxuXG4gIGxldCB0YWJsZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGFibGUgY2hpbGRyZW5cblxuICBsZXQgdHIgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IGNoaWxkcmVuID1cbiAgICBjcmVhdGUgP2NsYXNzZXMgP3N0eWxlcyA/bGlzdGVuID9hdHRyID90ZXh0IERvbV9odG1sLmNyZWF0ZVRyIGNoaWxkcmVuXG5cbiAgbGV0IHRoID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBjaGlsZHJlbiA9XG4gICAgY3JlYXRlID9jbGFzc2VzID9zdHlsZXMgP2xpc3RlbiA/YXR0ciA/dGV4dCBEb21faHRtbC5jcmVhdGVUaCBjaGlsZHJlblxuXG4gIGxldCB0ZCA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgY2hpbGRyZW4gPVxuICAgIGNyZWF0ZSA/Y2xhc3NlcyA/c3R5bGVzID9saXN0ZW4gP2F0dHIgP3RleHQgRG9tX2h0bWwuY3JlYXRlVGQgY2hpbGRyZW5cbmVuZFxuXG5sZXQgZW5jYXBzZSBzID0gXCJcXFwiXCIgXiBzIF4gXCJcXFwiXCJcblxubGV0IHN0cmluZ3NfdG9fYXJyYXkgbCA9IFwiW1wiIF4gU3RyaW5nLmNvbmNhdCBcIixcIiBsIF4gXCJdXCJcblxubGV0IHN0cmluZ3NfdG9fb2JqZWN0IGwgPVxuICBsZXQgcyA9XG4gICAgXCJ7XCJcbiAgICBeIFN0cmluZy5jb25jYXQgXCIsXCIgKExpc3QubWFwIChmdW4gKGssIHYpIC0+IGVuY2Fwc2UgayBeIFwiOlwiIF4gdikgbClcbiAgICBeIFwifVwiXG4gIGluXG4gIHRyeSBfSlNPTiMjcGFyc2UgKHN0cmluZyBzKVxuICB3aXRoIF8gLT5cbiAgICBsb2dfc3RyIChcImNhbm5vdCBwYXJzZSBqc29uIFwiIF4gcykgO1xuICAgIFVuc2FmZS5vYmogW3x8XVxuIiwib3BlbiBFempzX21pblxuXG5tb2R1bGUgVHlwZXMgPSBFempzX2lkYl90eXBlc1xub3BlbiBUeXBlc1xuXG50eXBlIG1vZGUgPSBSRUFET05MWSB8IFJFQURXUklURSB8IFZFUlNJT05DSEFOR0VcbnR5cGUgZGlyZWN0aW9uID0gTkVYVCB8IFBSRVYgfCBORVhUVU5JUVVFIHwgUFJFVlVOSVFVRVxuXG50eXBlIGRiX29wdGlvbnMgPSB7IGtleV9wYXRoIDogc3RyaW5nIG9wdGlvbjsgYXV0b19pbmNyZW1lbnQgOiBib29sIG9wdGlvbiB9XG5cbnR5cGUgZGJfdXBncmFkZSA9IHsgb2xkX3ZlcnNpb24gOiBpbnQ7IG5ld192ZXJzaW9uIDogaW50IH1cblxudHlwZSBpbmRleF9vcHRpb25zID0geyB1bmlxdWUgOiBib29sIG9wdGlvbjsgbXVsdGlfZW50cnkgOiBib29sIG9wdGlvbjsgbG9jYWxlIDogYm9vbCBvcHRpb24gfVxuXG5tb2R1bGUgdHlwZSBUcl9zaWcgPSBzaWdcbiAgdHlwZSB0XG4gIHR5cGUganNcbiAgdmFsIHRvX2pzIDogdCAtPiBqc1xuICB2YWwgb2ZfanMgOiBqcyAtPiB0XG5lbmRcblxubGV0IHN0cl9vZl9tb2RlID0gZnVuY3Rpb25cbiAgfCBSRUFET05MWSAtPiBzdHJpbmcgXCJyZWFkb25seVwiXG4gIHwgUkVBRFdSSVRFIC0+IHN0cmluZyBcInJlYWR3cml0ZVwiXG4gIHwgVkVSU0lPTkNIQU5HRSAtPiBzdHJpbmcgXCJ2ZXJzaW9uY2hhbmdlXCJcblxubGV0IHN0cl9vZl9kaXJlY3Rpb24gPSBmdW5jdGlvblxuICB8IE5FWFQgLT4gc3RyaW5nIFwibmV4dFwiXG4gIHwgUFJFViAtPiBzdHJpbmcgXCJwcmV2XCJcbiAgfCBORVhUVU5JUVVFIC0+IHN0cmluZyBcIm5leHR1bmlxdWVcIlxuICB8IFBSRVZVTklRVUUgLT4gc3RyaW5nIFwicHJldnVuaXF1ZVwiXG5cbmxldCBpREJLZXlSYW5nZSA6IFVuc2FmZS5hbnkgaURCS2V5UmFuZ2UgdCA9IFVuc2FmZS52YXJpYWJsZSBcIklEQktleVJhbmdlXCJcbmxldCBpbmRleGVkREIgOiBqc19zdHJpbmcgdCBpREJGYWN0b3J5IHQgPSBVbnNhZmUudmFyaWFibGUgXCJ3aW5kb3cuaW5kZXhlZERCXCJcblxubGV0IHJlc3VsdCByID0gciMjLnJlc3VsdFxuXG5sZXQgd3JhcCA/ZXJyb3IgP2NhbGxiYWNrIHIgPVxuICB0cnlcbiAgICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICAgIHIjIy5vbnN1Y2Nlc3MgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiAocmVzdWx0IHIpKSkgY2FsbGJhY2s7XG4gICAgciMjLm9uZXJyb3IgOj0gQU9wdC5hb3B0IChmdW4gZiAtPiB3cmFwX2NhbGxiYWNrIChmdW4gX2UgLT4gZiByKSkgZXJyb3JcbiAgd2l0aCBleG4gLT5cbiAgICBtYXRjaCBlcnJvciB3aXRoIE5vbmUgLT4gcmFpc2UgZXhuIHwgU29tZSBmIC0+IGNhdGNoX2V4biAoZnVuIGUgLT4gZiAoVW5zYWZlLmNvZXJjZSBlKSkgZXhuXG5cbmxldCB3cmFwZiA/ZXJyb3IgP2NhbGxiYWNrIGcgciA9XG4gIHRyeVxuICAgIGxldCByID0gTGF6eS5mb3JjZSByIGluXG4gICAgciMjLm9uc3VjY2VzcyA6PSBBT3B0LmFvcHQgKGZ1biBmIC0+IHdyYXBfY2FsbGJhY2sgKGZ1biBfZSAtPiBmIChnIEBAIHJlc3VsdCByKSkpIGNhbGxiYWNrO1xuICAgIHIjIy5vbmVycm9yIDo9IEFPcHQuYW9wdCAoZnVuIGYgLT4gd3JhcF9jYWxsYmFjayAoZnVuIF9lIC0+IGYgcikpIGVycm9yXG4gIHdpdGggZXhuIC0+XG4gICAgbWF0Y2ggZXJyb3Igd2l0aCBOb25lIC0+IHJhaXNlIGV4biB8IFNvbWUgZiAtPiBjYXRjaF9leG4gKGZ1biBlIC0+IGYgKFVuc2FmZS5jb2VyY2UgZSkpIGV4blxuXG5sZXQgZGJfdXBncmFkZV9ldmVudCAoZSA6IGlEQlZlcnNpb25DaGFuZ2VFdmVudCB0KSA9IHtcbiAgb2xkX3ZlcnNpb24gPSBlIyMub2xkVmVyc2lvbjtcbiAgbmV3X3ZlcnNpb24gPSBlIyMubmV3VmVyc2lvbjtcbn1cblxubGV0IG9wZW5EQiA/dXBncmFkZSA/ZXJyb3IgP3ZlcnNpb24gbmFtZSBjYWxsYmFjayA9XG4gIGxldCBpbmRleGVkREIgOiBfIGlEQkZhY3RvcnkgdCA9IFVuc2FmZS52YXJpYWJsZSBcIndpbmRvdy5pbmRleGVkREJcIiBpblxuICBsZXQgciA9IGxhenkgKGluZGV4ZWREQiMjX29wZW4gKHN0cmluZyBuYW1lKSAoQU9wdC5vcHRpb24gdmVyc2lvbikpIGluXG4gIHdyYXAgP2Vycm9yIH5jYWxsYmFjayByO1xuICBsZXQgciA9IExhenkuZm9yY2UgciBpblxuICByIyMub251cGdyYWRlbmVlZGVkIDo9XG4gICAgQU9wdC5hb3B0IChmdW4gdSAtPiB3cmFwX2NhbGxiYWNrIChmdW4gZSAtPlxuICAgICAgICBsZXQgdiA9IGRiX3VwZ3JhZGVfZXZlbnQgZSBpblxuICAgICAgICBsZXQgZGIgPSByZXN1bHQgciBpblxuICAgICAgICB1IGRiIHYpKSB1cGdyYWRlXG5cbmxldCB0cmFuc2FjdGlvbiByIDogaURCVHJhbnNhY3Rpb24gdCA9IHIjIy50cmFuc2FjdGlvblxuXG5sZXQgY3JlYXRlX2RiX29wdGlvbnMge2tleV9wYXRoOyBhdXRvX2luY3JlbWVudH0gOiBjcmVhdGVfZGJfb3B0aW9ucyB0ID0gb2JqZWN0JWpzXG4gIHZhbCBrZXlQYXRoID0gQU9wdC5hb3B0IHN0cmluZyBrZXlfcGF0aFxuICB2YWwgYXV0b0luY3JlbWVudCA9IEFPcHQuYW9wdCBib29sIGF1dG9faW5jcmVtZW50XG5lbmRcblxubGV0IGNyZWF0ZV9zdG9yZSA/b3B0aW9ucyAoZGIgOiBpREJEYXRhYmFzZSB0KSBuYW1lID1cbiAgVW5zYWZlLmNvZXJjZSBAQFxuICBkYiMjY3JlYXRlT2JqZWN0U3RvcmUgKHN0cmluZyBuYW1lKSAoQU9wdC5hb3B0IGNyZWF0ZV9kYl9vcHRpb25zIG9wdGlvbnMpXG5cbmxldCBnZXRfc3RvcmUgP21vZGUgKGRiIDogaURCRGF0YWJhc2UgdCkgbmFtZSA6IChfLCBfKSBpREJPYmplY3RTdG9yZSB0ID1cbiAgbGV0IHRyID0gZGIjI3RyYW5zYWN0aW9uIChhcnJheSBbfCBzdHJpbmcgbmFtZSB8XSkgKEFPcHQuYW9wdCBzdHJfb2ZfbW9kZSBtb2RlKSBpblxuICBVbnNhZmUuY29lcmNlIEBAIHRyIyNvYmplY3RTdG9yZSAoc3RyaW5nIG5hbWUpXG5cbm1vZHVsZSBTdG9yZShLIDogVHJfc2lnKShEIDogVHJfc2lnKSA9IHN0cnVjdFxuXG4gIHR5cGUgc3RvcmUgPSAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdFxuICB0eXBlIGtleXMgPSBLIG9mIEsudCB8IEtSIG9mIEsuanMgaURCS2V5UmFuZ2UgdFxuXG4gIGxldCBjcmVhdGUgP29wdGlvbnMgZGIgbmFtZSA6IHN0b3JlID1cbiAgICBjcmVhdGVfc3RvcmUgP29wdGlvbnMgZGIgbmFtZVxuXG4gIGxldCBzdG9yZSA/bW9kZSBkYiBuYW1lIDogc3RvcmUgPVxuICAgIGdldF9zdG9yZSA/bW9kZSBkYiBuYW1lXG5cbiAgbGV0IGFkZCA/Y2FsbGJhY2sgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpICh4IDogRC50KSA9XG4gICAgd3JhcGYgP2NhbGxiYWNrID9lcnJvciBLLm9mX2pzIEBAIGxhenkgKHN0IyNhZGQgKEQudG9fanMgeCkgKEFPcHQuYW9wdCBLLnRvX2pzIGtleSkpXG5cbiAgbGV0IHB1dCA/Y2FsbGJhY2sgP2Vycm9yID9rZXkgKHN0IDogc3RvcmUpICh4IDogRC50KSA9XG4gICAgd3JhcCA/Y2FsbGJhY2sgP2Vycm9yIEBAIGxhenkgKHN0IyNwdXQgKEQudG9fanMgeCkgKEFPcHQuYW9wdCBLLnRvX2pzIGtleSkpXG5cbiAgbGV0IHJhbmdlID9vbG93ZXIgP291cHBlciA/bG93ZXIgP3VwcGVyICgpID1cbiAgICBsZXQgaURCS2V5UmFuZ2UgOiBLLmpzIGlEQktleVJhbmdlIHQgPSBVbnNhZmUudmFyaWFibGUgXCJJREJLZXlSYW5nZVwiIGluXG4gICAgbWF0Y2ggbG93ZXIsIHVwcGVyIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGxvd2VyLCBOb25lIC0+XG4gICAgICBLUiAoaURCS2V5UmFuZ2UjI2xvd2VyQm91bmQgKEsudG9fanMgbG93ZXIpIChBT3B0LmFvcHQgYm9vbCBvbG93ZXIpKVxuICAgIHwgTm9uZSwgU29tZSB1cHBlciAtPlxuICAgICAgS1IgKGlEQktleVJhbmdlIyN1cHBlckJvdW5kIChLLnRvX2pzIHVwcGVyKSAoQU9wdC5hb3B0IGJvb2wgb3VwcGVyKSlcbiAgICB8IFNvbWUgbG93ZXIsIFNvbWUgdXBwZXIgLT5cbiAgICAgIEtSIChpREJLZXlSYW5nZSMjYm91bmRcbiAgICAgICAgICAgIChLLnRvX2pzIGxvd2VyKSAoSy50b19qcyB1cHBlcilcbiAgICAgICAgICAgIChBT3B0LmFvcHQgYm9vbCBvbG93ZXIpIChBT3B0LmFvcHQgYm9vbCBvdXBwZXIpKVxuXG4gIGxldCBjb3VudCA/ZXJyb3IgP2tleSAoc3QgOiBzdG9yZSkgKGNhbGxiYWNrIDogaW50IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50IEFPcHQudW5kZWZpbmVkKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50IChBT3B0LmRlZiAoSy50b19qcyBrKSkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEAgbGF6eSAoc3QjI2NvdW50X3JhbmdlIChBT3B0LmRlZiByKSlcblxuICBsZXQgZ2V0ID9lcnJvciAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgKGNhbGxiYWNrIDogRC50IG9wdGlvbiAtPiB1bml0KSBrID1cbiAgICBsZXQgb2ZfanMganMgPSBtYXRjaCBBT3B0LnRvX29wdGlvbiBqcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGpzIC0+IFNvbWUgKEQub2ZfanMganMpIGluXG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBLIGtleSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXQgKEsudG9fanMga2V5KSlcbiAgICB8IEtSIHJhbmdlIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3Igb2ZfanMgQEAgbGF6eSAoc3QjI2dldF9yYW5nZSByYW5nZSlcblxuICBsZXQgZ2V0X2FsbCA/ZXJyb3IgP2tleSA/Y291bnQgKHN0IDogKEsuanMsIEQuanMpIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEQudCBsaXN0IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBELm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsIEFPcHQudW5kZWZpbmVkIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLIGspIC0+IHdyYXBmIH5jYWxsYmFjayA/ZXJyb3IgKHRvX2xpc3RmIEQub2ZfanMpIEBAIGxhenkgKHN0IyNnZXRBbGwgKEFPcHQuZGVmIChLLnRvX2pzIGspKSAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciAodG9fbGlzdGYgRC5vZl9qcykgQEAgbGF6eSAoc3QjI2dldEFsbF9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQub3B0aW9uIGNvdW50KSlcblxuICBsZXQgZ2V0X2tleSA/ZXJyb3IgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEsudCBvcHRpb24gLT4gdW5pdCkgayA9XG4gICAgbGV0IG9mX2pzIGpzID0gbWF0Y2ggQU9wdC50b19vcHRpb24ganMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBqcyAtPiBTb21lIChLLm9mX2pzIGpzKSBpblxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgSyBrZXkgLT4gd3JhcGYgfmNhbGxiYWNrID9lcnJvciBvZl9qcyBAQCBsYXp5IChzdCMjZ2V0S2V5IChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yIG9mX2pzIEBAIGxhenkgKHN0IyNnZXRLZXlfcmFuZ2UgcmFuZ2UpXG5cbiAgbGV0IGdldF9hbGxfa2V5cyA/ZXJyb3IgP2tleSA/Y291bnQgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpIChjYWxsYmFjayA6IEsudCBsaXN0IC0+IHVuaXQpID1cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5cyBBT3B0LnVuZGVmaW5lZCAoQU9wdC5vcHRpb24gY291bnQpKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5cyAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0Lm9wdGlvbiBjb3VudCkpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwZiB+Y2FsbGJhY2sgP2Vycm9yICh0b19saXN0ZiBLLm9mX2pzKSBAQCBsYXp5IChzdCMjZ2V0QWxsS2V5c19yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQub3B0aW9uIGNvdW50KSlcblxuICBsZXQgZGVsZXRlID9jYWxsYmFjayA/ZXJyb3IgKHN0IDogKEsuanMsIF8pIGlEQk9iamVjdFN0b3JlIHQpID0gZnVuY3Rpb25cbiAgICB8IEsga2V5IC0+IHdyYXAgP2Vycm9yID9jYWxsYmFjayBAQCBsYXp5IChzdCMjZGVsZXRlIChLLnRvX2pzIGtleSkpXG4gICAgfCBLUiByYW5nZSAtPiB3cmFwID9lcnJvciA/Y2FsbGJhY2sgQEAgbGF6eSAoc3QjI2RlbGV0ZV9yYW5nZSByYW5nZSlcblxuICBsZXQgaXRlciA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gRC50IC0+IHVuaXQpID1cbiAgICBsZXQgY2FsbGJhY2sgYyA9XG4gICAgICBtYXRjaCBBT3B0LnRvX29wdGlvbiBjIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgZiBrIChELm9mX2pzIGMjIy52YWx1ZSk7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGZvbGQgP2Vycm9yID9rZXkgP2RpcmVjdGlvbiAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdClcbiAgICAgIChmIDogSy50IC0+IEQudCAtPiAnYSAtPiAnYSkgKHN0YXJ0IDogJ2EpIChjYWxsYmFjayA6ICdhIC0+IHVuaXQpID1cbiAgICBsZXQgYWNjID0gcmVmIHN0YXJ0IGluXG4gICAgbGV0IGNhbGxiYWNrIGMgPVxuICAgICAgbWF0Y2ggQU9wdC50b19vcHRpb24gYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2FsbGJhY2sgIWFjY1xuICAgICAgfCBTb21lIGMgLT5cbiAgICAgICAgbWF0Y2ggQU9wdC50b19hb3B0IEsub2ZfanMgYyMjLmtleSB3aXRoXG4gICAgICAgIHwgU29tZSBrIC0+XG4gICAgICAgICAgYWNjIDo9IGYgayAoRC5vZl9qcyBjIyMudmFsdWUpICFhY2M7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbkN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGl0ZXJfa2V5cyA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gdW5pdCkgPVxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYyAtPlxuICAgICAgICBtYXRjaCBBT3B0LnRvX2FvcHQgSy5vZl9qcyBjIyMua2V5IHdpdGhcbiAgICAgICAgfCBTb21lIGsgLT5cbiAgICAgICAgICBmIGs7XG4gICAgICAgICAgYyMjY29udGludWUgQU9wdC51bmRlZmluZWRcbiAgICAgICAgfCBOb25lIC0+IGMjI2NvbnRpbnVlIEFPcHQudW5kZWZpbmVkIGluXG4gICAgbWF0Y2gga2V5IHdpdGhcbiAgICB8IE5vbmUgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciBBT3B0LnVuZGVmaW5lZCAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcbiAgICB8IFNvbWUgKEsgaykgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvciAoQU9wdC5kZWYgKEsudG9fanMgaykpIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoS1IgcikgLT4gd3JhcCB+Y2FsbGJhY2sgP2Vycm9yIEBAXG4gICAgICBsYXp5IChzdCMjb3BlbktleUN1cnNvcl9yYW5nZSAoQU9wdC5kZWYgcikgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG5cbiAgbGV0IGZvbGRfa2V5cyA/ZXJyb3IgP2tleSA/ZGlyZWN0aW9uIChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KVxuICAgICAgKGYgOiBLLnQgLT4gJ2EgLT4gJ2EpIChzdGFydCA6ICdhKSAoY2FsbGJhY2sgOiAnYSAtPiB1bml0KSA9XG4gICAgbGV0IGFjYyA9IHJlZiBzdGFydCBpblxuICAgIGxldCBjYWxsYmFjayBjID1cbiAgICAgIG1hdGNoIEFPcHQudG9fb3B0aW9uIGMgd2l0aFxuICAgICAgfCBOb25lIC0+IGNhbGxiYWNrICFhY2NcbiAgICAgIHwgU29tZSBjIC0+XG4gICAgICAgIG1hdGNoIEFPcHQudG9fYW9wdCBLLm9mX2pzIGMjIy5rZXkgd2l0aFxuICAgICAgICB8IFNvbWUgayAtPlxuICAgICAgICAgIGFjYyA6PSBmIGsgIWFjYztcbiAgICAgICAgICBjIyNjb250aW51ZSBBT3B0LnVuZGVmaW5lZFxuICAgICAgICB8IE5vbmUgLT4gYyMjY29udGludWUgQU9wdC51bmRlZmluZWQgaW5cbiAgICBtYXRjaCBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIEFPcHQudW5kZWZpbmVkIChBT3B0LmFvcHQgc3RyX29mX2RpcmVjdGlvbiBkaXJlY3Rpb24pKVxuICAgIHwgU29tZSAoSyBrKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yIChBT3B0LmRlZiAoSy50b19qcyBrKSkgKEFPcHQuYW9wdCBzdHJfb2ZfZGlyZWN0aW9uIGRpcmVjdGlvbikpXG4gICAgfCBTb21lIChLUiByKSAtPiB3cmFwIH5jYWxsYmFjayA/ZXJyb3IgQEBcbiAgICAgIGxhenkgKHN0IyNvcGVuS2V5Q3Vyc29yX3JhbmdlIChBT3B0LmRlZiByKSAoQU9wdC5hb3B0IHN0cl9vZl9kaXJlY3Rpb24gZGlyZWN0aW9uKSlcblxuICBsZXQgY2xlYXIgP2Vycm9yID9jYWxsYmFjayAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgPVxuICAgIHdyYXBmID9jYWxsYmFjayA/ZXJyb3IgKGZ1biBfIC0+ICgpKSBAQCBsYXp5IHN0IyNjbGVhclxuXG4gIGxldCBjcmVhdGVfaW5kZXhfb3B0aW9ucyB7dW5pcXVlOyBtdWx0aV9lbnRyeTsgbG9jYWxlfSA6IGNyZWF0ZV9pbmRleF9vcHRpb25zIHQgPSBvYmplY3QlanNcbiAgICB2YWwgdW5pcXVlID0gQU9wdC5hb3B0IGJvb2wgdW5pcXVlXG4gICAgdmFsIG11bHRpRW50cnkgPSBBT3B0LmFvcHQgYm9vbCBtdWx0aV9lbnRyeVxuICAgIHZhbCBsb2NhbGUgPSBBT3B0LmFvcHQgYm9vbCBsb2NhbGVcbiAgZW5kXG5cbiAgbGV0IGNyZWF0ZV9pbmRleCA/b3B0aW9ucyAoc3QgOiAoSy5qcywgRC5qcykgaURCT2JqZWN0U3RvcmUgdCkgbmFtZSBrZXlfcGF0aCA9XG4gICAgbGV0IG9wdGlvbnMgPSBBT3B0LmFvcHQgY3JlYXRlX2luZGV4X29wdGlvbnMgb3B0aW9ucyBpblxuICAgIHN0IyNjcmVhdGVJbmRleCAoc3RyaW5nIG5hbWUpIChzdHJpbmcga2V5X3BhdGgpIG9wdGlvbnNcblxuICBsZXQgZGVsZXRlX2luZGV4IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lID1cbiAgICBpZ25vcmUgQEAgc3QjI2RlbGV0ZUluZGV4IChzdHJpbmcgbmFtZSlcblxuICBsZXQgZ2V0X2luZGV4IChzdCA6IChLLmpzLCBELmpzKSBpREJPYmplY3RTdG9yZSB0KSBuYW1lID1cbiAgICBzdCMjaW5kZXggKHN0cmluZyBuYW1lKVxuXG5lbmRcblxubW9kdWxlIE5vVHIoUyA6IHNpZyB0eXBlIHQgZW5kKSA6IFRyX3NpZyB3aXRoIHR5cGUgdCA9IFMudCBhbmQgdHlwZSBqcyA9IFMudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBTLnRcbiAgdHlwZSBqcyA9IFMudFxuICBsZXQgdG9fanMgeCA9IHhcbiAgbGV0IG9mX2pzIHggPSB4XG5lbmRcblxubW9kdWxlIEludFRyIDogKFRyX3NpZyB3aXRoIHR5cGUganMgPSBpbnQgYW5kIHR5cGUgdCA9IGludCkgPSBOb1RyKHN0cnVjdCB0eXBlIHQgPSBpbnQgZW5kKVxuXG5tb2R1bGUgU3RyaW5nVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0ganNfc3RyaW5nIHQgYW5kIHR5cGUgdCA9IHN0cmluZyA9IHN0cnVjdFxuICB0eXBlIGpzID0ganNfc3RyaW5nIHRcbiAgdHlwZSB0ID0gc3RyaW5nXG4gIGxldCB0b19qcyB4ID0gc3RyaW5nIHhcbiAgbGV0IG9mX2pzIHggPSB0b19zdHJpbmcgeFxuZW5kXG5cbm1vZHVsZSBOdW1iZXJUciA6IFRyX3NpZyB3aXRoIHR5cGUganMgPSBudW1iZXIgdCBhbmQgdHlwZSB0ID0gZmxvYXQgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IG51bWJlciB0XG4gIHR5cGUgdCA9IGZsb2F0XG4gIGxldCB0b19qcyB4ID0gbnVtYmVyX29mX2Zsb2F0IHhcbiAgbGV0IG9mX2pzIHggPSBmbG9hdF9vZl9udW1iZXIgeFxuZW5kXG5cbm1vZHVsZSBEYXRlVHIgOiBUcl9zaWcgd2l0aCB0eXBlIGpzID0gZGF0ZSB0IGFuZCB0eXBlIHQgPSBzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSBqcyA9IGRhdGUgdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRvX2pzIHggPSBuZXclanMgZGF0ZV9mcm9tVGltZVZhbHVlIChkYXRlIyNwYXJzZSAoc3RyaW5nIHgpKVxuICBsZXQgb2ZfanMgeCA9IHRvX3N0cmluZyB4IyN0b0xvY2FsZVN0cmluZ1xuZW5kXG4iLCJtb2R1bGUgQ29udiA9IFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3Jcbm1vZHVsZSBTZXhwX2dyYW1tYXIgPSBTZXhwbGliMC5TZXhwX2dyYW1tYXJcblxubW9kdWxlIFNleHAgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTZXhwbGliMC5TZXhwXG5cbiAgbGV0IHRfc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG5lbmRcblxubW9kdWxlIFNleHBhYmxlID0gU2V4cGxpYjAuU2V4cGFibGVcbiIsIm1vZHVsZSBMaXN0ID0gTGlzdFxuXG5tb2R1bGUgRW51bWVyYWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgYWxsIDogdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYWxsIDogJ2EgbGlzdCAtPiAnYSB0IGxpc3RcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIHZhbCBhbGwgOiAnYSBsaXN0IC0+ICdiIGxpc3QgLT4gKCdhLCAnYikgdCBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGFsbCA6ICdhIGxpc3QgLT4gJ2IgbGlzdCAtPiAnYyBsaXN0IC0+ICgnYSwgJ2IsICdjKSB0IGxpc3RcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQmFzZVxuXG50eXBlICdhIHRlc3RfcHJlZFxuICA9ID9oZXJlOkxleGluZy5wb3NpdGlvbiBsaXN0XG4gIC0+ID9tZXNzYWdlOnN0cmluZ1xuICAtPiAoJ2EgLT4gYm9vbClcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG50eXBlICdhIHRlc3RfZXFcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiAnYVxuICAtPiAnYVxuICAtPiB1bml0XG5cbnR5cGUgJ2EgdGVzdF9yZXN1bHRcbiAgPSA/aGVyZTpMZXhpbmcucG9zaXRpb24gbGlzdFxuICAtPiA/bWVzc2FnZTpzdHJpbmdcbiAgLT4gP2VxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAtPiBleHBlY3Q6J2FcbiAgLT4gJ2FcbiAgLT4gdW5pdFxuXG5leGNlcHRpb24gRSBvZiBzdHJpbmcgKiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZyBib2R5ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiB0YWdcbiAgICB8IFNvbWUgcyAtPiBzIF4gXCI6IFwiIF4gdGFnXG4gIGluXG4gIGxldCBzZXhwID1cbiAgICBTZXhwLkxpc3QgKFxuICAgICAgYm9keVxuICAgICAgQCBbIFNleHAuTGlzdCBbIFNleHAuQXRvbSBcIkxvY1wiOyBTZXhwLkF0b20gcG9zIF0gXVxuICAgICAgQCBiZWdpbiBtYXRjaCBoZXJlIHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICB8IF8gLT4gWyBTZXhwLkxpc3QgWyBTZXhwLkF0b20gXCJTdGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA7IFslc2V4cF9vZjogU291cmNlX2NvZGVfcG9zaXRpb24udCBsaXN0XSBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdIF1cbiAgICAgIGVuZFxuICAgIClcbiAgaW5cbiAgKCogSGVyZSBhbmQgaW4gb3RoZXIgcGxhY2VzIHdlIHJldHVybiBleGNlcHRpb25zLCByYXRoZXIgdGhhbiBkaXJlY3RseSByYWlzaW5nLCBhbmRcbiAgICAgaW5zdGVhZCByYWlzZSBhdCB0aGUgbGF0ZXN0IG1vbWVudCBwb3NzaWJsZSwgc28gYmFja3RyYWNlIGRvbid0IGluY2x1ZGUgbm9pc2UgZnJvbVxuICAgICB0aGVzZSBmdW5jdGlvbnMgdGhhdCBjb25zdHJ1Y3QgZXhjZXB0aW9ucy4gKilcbiAgRSAobWVzc2FnZSwgc2V4cClcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcInByZWRpY2F0ZSBmYWlsZWRcIiBbXG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJWYWx1ZVwiOyBzZXhwaWZpZXIgdF1cbiAgXVxuXG5sZXQgdGVzdF9wcmVkIH5wb3MgfnNleHBpZmllciB+aGVyZSA/bWVzc2FnZSBwcmVkaWNhdGUgdCA9XG4gIGlmIG5vdCAocHJlZGljYXRlIHQpIHRoZW5cbiAgICByYWlzZSAoZXhuX3Rlc3RfcHJlZCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5zZXhwaWZpZXIgdClcblxubGV0IHJfZGlmZiA6IChmcm9tXzpzdHJpbmcgLT4gdG9fOnN0cmluZyAtPiB1bml0KSBvcHRpb24gcmVmID0gcmVmICAgTm9uZVxubGV0IHNldF9kaWZmX2Z1bmN0aW9uIGYgPSByX2RpZmYgOj0gZlxuXG5sZXQgW0Bjb2xkXSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3QgPVxuICBsZXQgZ290ID0gc2V4cGlmaWVyIGdvdCBpblxuICBsZXQgZXhwZWN0ID0gc2V4cGlmaWVyIGV4cGVjdCBpblxuICBiZWdpbiBtYXRjaCAhcl9kaWZmIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBkaWZmIC0+XG4gICAgbGV0IGZyb21fID0gU2V4cC50b19zdHJpbmdfaHVtIGV4cGVjdCBpblxuICAgIGxldCB0b18gICA9IFNleHAudG9fc3RyaW5nX2h1bSBnb3QgaW5cbiAgICBkaWZmIH5mcm9tXyB+dG9fXG4gIGVuZDtcbiAgYEZhaWwgKGV4cGVjdCwgZ290KVxuXG5sZXQgdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdCB+Z290ID1cbiAgbGV0IHBhc3MgPVxuICAgIG1hdGNoIGVxdWFsIHdpdGhcbiAgICB8IE5vbmUgLT4gY29tcGFyYXRvciBnb3QgZXhwZWN0ID0gMFxuICAgIHwgU29tZSBmIC0+IGYgZ290IGV4cGVjdFxuICBpblxuICBpZiBwYXNzXG4gIHRoZW4gYFBhc3NcbiAgZWxzZSB0ZXN0X3Jlc3VsdF9vcl9lcV9mYWlsZWQgfnNleHBpZmllciB+ZXhwZWN0IH5nb3RcblxubGV0IFtAY29sZF0gZXhuX3Rlc3RfZXEgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dDEgfnQyID1cbiAgZXhuX3NleHBfc3R5bGUgfm1lc3NhZ2UgfnBvcyB+aGVyZSB+dGFnOlwiY29tcGFyaXNvbiBmYWlsZWRcIiBbXG4gICAgdDE7XG4gICAgU2V4cC5BdG9tIFwidnNcIjtcbiAgICB0MjtcbiAgXVxuXG5sZXQgdGVzdF9lcSB+cG9zIH5zZXhwaWZpZXIgfmNvbXBhcmF0b3IgfmhlcmUgP21lc3NhZ2UgP2VxdWFsIHQxIHQyID1cbiAgbWF0Y2ggdGVzdF9yZXN1bHRfb3JfZXEgfnNleHBpZmllciB+Y29tcGFyYXRvciB+ZXF1YWwgfmV4cGVjdDp0MSB+Z290OnQyIHdpdGhcbiAgfCBgUGFzcyAtPiAoKVxuICB8IGBGYWlsICh0MSwgdDIpIC0+IHJhaXNlIChleG5fdGVzdF9lcSB+bWVzc2FnZSB+cG9zIH5oZXJlIH50MSB+dDIpXG5cbmxldCBbQGNvbGRdIGV4bl90ZXN0X3Jlc3VsdCB+bWVzc2FnZSB+cG9zIH5oZXJlIH5leHBlY3QgfmdvdCA9XG4gIGV4bl9zZXhwX3N0eWxlIH5tZXNzYWdlIH5wb3MgfmhlcmUgfnRhZzpcImdvdCB1bmV4cGVjdGVkIHJlc3VsdFwiIFtcbiAgICBTZXhwLkxpc3QgW1NleHAuQXRvbSBcImV4cGVjdGVkXCI7IGV4cGVjdF07XG4gICAgU2V4cC5MaXN0IFtTZXhwLkF0b20gXCJnb3RcIjsgZ290XTtcbiAgXVxuXG5sZXRbQHdhcm5pbmcgXCItMTZcIl0gdGVzdF9yZXN1bHQgfnBvcyB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5oZXJlID9tZXNzYWdlID9lcXVhbCB+ZXhwZWN0IH5nb3QgPVxuICBtYXRjaCB0ZXN0X3Jlc3VsdF9vcl9lcSB+c2V4cGlmaWVyIH5jb21wYXJhdG9yIH5lcXVhbCB+ZXhwZWN0IH5nb3Qgd2l0aFxuICB8IGBQYXNzIC0+ICgpXG4gIHwgYEZhaWwgKGV4cGVjdCwgZ290KSAtPiByYWlzZSAoZXhuX3Rlc3RfcmVzdWx0IH5tZXNzYWdlIH5wb3MgfmhlcmUgfmV4cGVjdCB+Z290KVxuIiwibGV0IHVuaXF1ZV9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG4oKiBVc2VkIHRvIHRyYWNrIHRoZSBjdXJyZW50IGxpYm5hbWUgaW4gc3VjaCBhIHdheSB0aGF0IGZvciBmdW5jdG9yIGFwcGxpY2F0aW9ucywgaXQgaXNcbiAgIHRoZSBjYWxsaW5nIGxpYnJhcmllcyBuYW1lIHRoYXQgZ2V0cyByZWdpc3RlcmVkLiAqKVxubW9kdWxlIEN1cnJlbnRfbGlibmFtZSA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiPHVua25vd24+XCJcbiAgbGV0IGxpYm5hbWVfcmVmID0gcmVmIG51bGxcbiAgbGV0IHNldCBzdHIgPSBsaWJuYW1lX3JlZiA6PSBzdHJcbiAgbGV0IHVuc2V0ICgpID0gbGlibmFtZV9yZWYgOj0gbnVsbFxuICBsZXQgZ2V0ICgpID0gIWxpYm5hbWVfcmVmXG5lbmRcblxubW9kdWxlIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrID0gc3RydWN0XG4gIGxldCB0ID0gcmVmIFtdXG4gIGxldCBwdXNoIHMgPSB0IDo9IHMgOjogIXRcbiAgbGV0IHBvcF9leG4gKCkgPSB0IDo9IExpc3QudGwgIXRcblxuICBsZXQgdG9fbmFtZSAoKSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbXMgLT4gU29tZSAoU3RyaW5nLmNvbmNhdCBcIi5cIiAoTGlzdC5yZXYgbXMpKVxuICA7O1xuZW5kXG5cbigqIFRoaXMgaXMgdGhlIG1haW4gZGF0YSBzdHJ1Y3R1cmUgb2YgdGhpcyBtb2R1bGUuIEFuIFtFbnRyeS50XSByZXByZXNlbnRzIGEgYmVuY2htYXJrXG4gICBhbG9uZyB3aXRoIHNvbWUgbWV0YWRhdGEgYWJvdXQgaXMgcG9zaXRpb24sIGFyZ3VtZW50cyBldGMuICopXG5tb2R1bGUgRW50cnkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3BhcmFtLCAnYSkgcGFyYW1ldGVyaXNlZF9zcGVjID1cbiAgICB7IGFyZ19uYW1lIDogc3RyaW5nXG4gICAgOyBwYXJhbXMgOiAoc3RyaW5nICogJ3BhcmFtKSBsaXN0XG4gICAgOyB0aHVuayA6ICdwYXJhbSAtPiB1bml0IC0+ICdhXG4gICAgfVxuXG4gIHR5cGUgdGVzdF9zcGVjID1cbiAgICB8IFJlZ3VsYXJfdGh1bmsgOiAoWyBgaW5pdCBdIC0+IHVuaXQgLT4gJ2EpIC0+IHRlc3Rfc3BlY1xuICAgIHwgUGFyYW1ldGVyaXNlZF90aHVuayA6ICgncGFyYW0sICdhKSBwYXJhbWV0ZXJpc2VkX3NwZWMgLT4gdGVzdF9zcGVjXG5cbiAgdHlwZSB0ID1cbiAgICB7IHVuaXF1ZV9pZCA6IGludFxuICAgIDsgY29kZSA6IHN0cmluZ1xuICAgIDsgdHlwZV9jb252X3BhdGggOiBzdHJpbmdcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICA7IGZpbGVuYW1lIDogc3RyaW5nXG4gICAgOyBsaW5lIDogaW50XG4gICAgOyBzdGFydHBvcyA6IGludFxuICAgIDsgZW5kcG9zIDogaW50XG4gICAgOyB0ZXN0X3NwZWMgOiB0ZXN0X3NwZWNcbiAgICA7IGJlbmNoX21vZHVsZV9uYW1lIDogc3RyaW5nIG9wdGlvblxuICAgIH1cblxuICBsZXQgY29tcGFyZSB0MSB0MiA9IGNvbXBhcmUgdDEudW5pcXVlX2lkIHQyLnVuaXF1ZV9pZFxuXG4gICgqIEV4dHJhY3RzIG1vZHVsZSBuYW1lIGZyb20gW1wiZmlsZW5hbWUubWwuTW9kdWxlXCJdLCB3aGljaCBpcyB0aGUgZm9ybWF0IG9mIFtleHRfbmFtZV1cbiAgICAgYXMgc2V0IGJ5IFt0eXBlY29udl0uICopXG4gIGxldCBnZXRfbW9kdWxlX25hbWVfb3B0IHQgPVxuICAgIGxldCBzdHIgPSB0LnR5cGVfY29udl9wYXRoIGluXG4gICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSArIDQgPD0gbGVuXG4gICAgICB0aGVuXG4gICAgICAgIGlmIFN0cmluZy5zdWIgc3RyIGkgNCA9IFwiLm1sLlwiXG4gICAgICAgIHRoZW4gU29tZSAoU3RyaW5nLnN1YiBzdHIgKGkgKyA0KSAobGVuIC0gaSAtIDQpKVxuICAgICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBOb25lXG4gICAgaW5cbiAgICBsb29wIDBcbiAgOztcblxuICBsZXQgd2l0aF90ZXN0X3NwZWMgdCB0ZXN0X3NwZWMgPSB7IHQgd2l0aCB0ZXN0X3NwZWMgfVxuZW5kXG5cbigqIEluc3BlY3Qgc3lzdGVtIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBkZWNpZGUgaWYgYmVuY2htYXJrcyBhcmUgYmVpbmcgcnVuLiBUaGlzIGlzXG4gICBjYWxsZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBbcGFfYmVuY2hdIHN5bnRheCB0byBkZWNpZGUgaWYgdGhlIGdsb2JhbCBoYXNodGFibGVcbiAgIHNob3VsZCBiZSBwb3B1bGF0ZWQuICopXG5sZXQgYWRkX2Vudmlyb25tZW50X3ZhciA9XG4gIGxldCB2ID1cbiAgICB0cnkgU3lzLmdldGVudiBcIkJFTkNITUFSS1NfUlVOTkVSXCIgd2l0aFxuICAgIHwgTm90X2ZvdW5kIC0+IFwiXCJcbiAgaW5cbiAgdiA9IFwiVFJVRVwiXG47O1xuXG4oKiBUaGlzIGhhc2h0YWJsZSBjb250YWlucyBhbGwgdGhlIGJlbmNobWFya3MgZnJvbSBhbGwgdGhlIG9mIGxpYnJhcmllcyB0aGF0IGhhdmUgYmVlblxuICAgbG9hZGVkLiBBdCB0aGUgdGltZSB0aGUgYmVuY2htYXJrcyBhcmUgcmVnaXN0ZXJpbmcgdGhlbXNlbHZlcyB3aXRoIFtwcHhfYmVuY2hfbGliXSB3ZVxuICAgZG9uJ3QgeWV0IGtub3cgd2hpY2ggbGlicmFyaWVzIHdpbGwgbmVlZCB0byBiZSBydW4uICAqKVxubGV0IGxpYnNfdG9fZW50cmllcyA6IChzdHJpbmcsIEVudHJ5LnQgbGlzdCkgSGFzaHRibC50ID0gSGFzaHRibC5jcmVhdGUgMTBcblxubGV0IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lID1cbiAgdHJ5IEhhc2h0YmwuZmluZCBsaWJzX3RvX2VudHJpZXMgbGlibmFtZSB3aXRoXG4gIHwgTm90X2ZvdW5kIC0+IFtdXG47O1xuXG5sZXQgbG9va3VwX2xpYiB+bGlibmFtZSA9IExpc3QucmV2IChsb29rdXBfcmV2X2xpYiB+bGlibmFtZSlcblxubGV0IGZvcmNlX2Ryb3AgPVxuICAoKiBVc2VmdWwgZm9yIGpzX29mX29jYW1sIHRvIHBlcmZvcm0gZGVhZGNvZGUgZWxpbWluYXRpb24uXG4gICAgIHNlZSBwcHgvcHB4X2lubGluZV90ZXN0L3J1bnRpbWUtbGliL3J1bnRpbWUubWwgW0FjdGlvbi5nZXRdIGZvciBtb3JlIGRldGFpbHMgKilcbiAgdHJ5XG4gICAgaWdub3JlIChTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9CRU5DSFwiIDogc3RyaW5nKTtcbiAgICB0cnVlXG4gIHdpdGhcbiAgfCBOb3RfZm91bmQgLT4gZmFsc2Vcbjs7XG5cbmxldCBnZXRfbW9kZSAoKSA9IGlmIGZvcmNlX2Ryb3AgdGhlbiBgSWdub3JlIGVsc2UgYENvbGxlY3RcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaFxuICAgICAgICAgICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH5jb2RlXG4gICAgICAgICAgICAgICAgICAgICB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgICAgICAgIH50eXBlX2NvbnZfcGF0aFxuICAgICAgICAgICAgICAgICAgICAgfmxpbmVcbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvc1xuICAgICAgICAgICAgICAgICAgICAgfmVuZHBvc1xuICAgICAgICAgICAgICAgICAgICAgdGVzdF9zcGVjXG4gID1cbiAgbWF0Y2ggZ2V0X21vZGUgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgQ29sbGVjdCAtPlxuICAgIGxldCBsaWJuYW1lID0gQ3VycmVudF9saWJuYW1lLmdldCAoKSBpblxuICAgIGxldCBlbnRyeSA9XG4gICAgICB7IEVudHJ5LmNvZGVcbiAgICAgIDsgdW5pcXVlX2lkID0gdW5pcXVlX2lkICgpXG4gICAgICA7IHR5cGVfY29udl9wYXRoXG4gICAgICA7IGJlbmNoX21vZHVsZV9uYW1lID0gQ3VycmVudF9iZW5jaF9tb2R1bGVfc3RhY2sudG9fbmFtZSAoKVxuICAgICAgOyBuYW1lXG4gICAgICA7IGZpbGVuYW1lXG4gICAgICA7IGxpbmVcbiAgICAgIDsgc3RhcnRwb3NcbiAgICAgIDsgZW5kcG9zXG4gICAgICA7IHRlc3Rfc3BlY1xuICAgICAgfVxuICAgIGluXG4gICAgSGFzaHRibC5hZGQgbGlic190b19lbnRyaWVzIGxpYm5hbWUgKGVudHJ5IDo6IGxvb2t1cF9yZXZfbGliIH5saWJuYW1lKVxuOztcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGFkZF9iZW5jaF9tb2R1bGVcbiAgICAgICAgICAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICAgICAgICAgICB+Y29kZTpfXG4gICAgICAgICAgICAgICAgICAgICB+dHlwZV9jb252X3BhdGg6X1xuICAgICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5saW5lOl9cbiAgICAgICAgICAgICAgICAgICAgIH5zdGFydHBvczpfXG4gICAgICAgICAgICAgICAgICAgICB+ZW5kcG9zOl9cbiAgICAgICAgICAgICAgICAgICAgIGZcbiAgPVxuICBtYXRjaCBnZXRfbW9kZSAoKSB3aXRoXG4gIHwgYElnbm9yZSAtPiAoKVxuICB8IGBDb2xsZWN0IC0+XG4gICAgKCogUnVubmluZyBmIHJlZ2lzdGVycyB0aGUgYmVuY2htYXJrcyB1c2luZyBCRU5DSCAqKVxuICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnB1c2ggbmFtZTtcbiAgICAodHJ5XG4gICAgICAgZiAoKTtcbiAgICAgICBDdXJyZW50X2JlbmNoX21vZHVsZV9zdGFjay5wb3BfZXhuICgpXG4gICAgIHdpdGhcbiAgICAgfCBleCAtPlxuICAgICAgIEN1cnJlbnRfYmVuY2hfbW9kdWxlX3N0YWNrLnBvcF9leG4gKCk7XG4gICAgICAgcmFpc2UgZXgpXG47O1xuIiwidHlwZSB0ID0gc3RyaW5nXG5cbigqIFNoYXJlIHRoZSBkaWdlc3Qgb2YgdGhlIGVtcHR5IHN0cmluZyAqKVxubGV0IGVtcHR5ID0gRGlnZXN0LnN0cmluZyBcIlwiXG5sZXQgbWFrZSBzID1cbiAgaWYgcyA9IGVtcHR5IHRoZW5cbiAgICBlbXB0eVxuICBlbHNlXG4gICAgc1xuXG5sZXQgY29tcGFyZSA9IGNvbXBhcmVcblxubGV0IGxlbmd0aCA9IDE2XG5cbmxldCB0b19iaW5hcnkgcyA9IHNcbmxldCBvZl9iaW5hcnlfZXhuIHMgPSBhc3NlcnQgKFN0cmluZy5sZW5ndGggcyA9IGxlbmd0aCk7IG1ha2Ugc1xubGV0IHVuc2FmZV9vZl9iaW5hcnkgPSBtYWtlXG5cbmxldCB0b19oZXggPSBEaWdlc3QudG9faGV4XG5sZXQgb2ZfaGV4X2V4biBzID0gbWFrZSAoRGlnZXN0LmZyb21faGV4IHMpXG5cbmxldCBzdHJpbmcgcyA9IG1ha2UgKERpZ2VzdC5zdHJpbmcgcylcblxubGV0IGJ5dGVzIHMgPSBtYWtlIChEaWdlc3QuYnl0ZXMgcylcblxubGV0IHN1YmJ5dGVzIGJ5dGVzIH5wb3MgfmxlbiA9IG1ha2UgKERpZ2VzdC5zdWJieXRlcyBieXRlcyBwb3MgbGVuKVxuIiwib3BlbiEgQmFzZVxuXG5tb2R1bGUgTG9jYXRpb24gOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIFV1aWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubGV0IGV2YWxfZmFpbCBsb2MgZm10ID1cbiAgUHJpbnRmLmtzcHJpbnRmIChmdW4gcyAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgIVwiJXtMb2NhdGlvbn06ICVzXCIgbG9jIHMpKSBmbXRcbjs7XG5cbmxldCBlcXVhbF9vcHRpb24gZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgU29tZSBfLCBOb25lIHwgTm9uZSwgU29tZSBfIC0+IGZhbHNlXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG47O1xuXG5tb2R1bGUgU29ydGVkX3RhYmxlIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gIHZhbCBjcmVhdGUgOiBMb2NhdGlvbi50IC0+IGVxOignYSAtPiAnYSAtPiBib29sKSAtPiAoc3RyaW5nICogJ2EpIGxpc3QgLT4gJ2EgdFxuICB2YWwgZXhwb3NlIDogJ2EgdCAtPiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7IHNvcnRlZCA6IChzdHJpbmcgKiAnYSkgbGlzdCB9IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHNcbiAgICA6ICBlcTooJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgICAtPiBbIGBPayBvZiAoc3RyaW5nICogJ2EpIGxpc3QgfCBgTWlzbWF0Y2ggb2Ygc3RyaW5nIF1cbiAgICA9XG4gICAgZnVuIH5lcSAtPlxuICAgIGxldCByZWMgbG9vcCBhY2Mgfmxhc3Rfa2V5IH5sYXN0X3ZhbHVlID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gYE9rIChMaXN0LnJldiBhY2MpXG4gICAgICB8IChrZXksIHZhbHVlKSA6OiB4cyAtPlxuICAgICAgICBpZiBTdHJpbmcuKGxhc3Rfa2V5ID0ga2V5KVxuICAgICAgICB0aGVuXG4gICAgICAgICAgaWYgZXEgbGFzdF92YWx1ZSB2YWx1ZSB0aGVuIGxvb3AgYWNjIH5sYXN0X2tleSB+bGFzdF92YWx1ZSB4cyBlbHNlIGBNaXNtYXRjaCBrZXlcbiAgICAgICAgZWxzZSBsb29wICgoa2V5LCB2YWx1ZSkgOjogYWNjKSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gICAgaW5cbiAgICBmdW5jdGlvblxuICAgIHwgW10gLT4gYE9rIFtdXG4gICAgfCAoa2V5LCB2YWx1ZSkgOjogeHMgLT4gbG9vcCBbIGtleSwgdmFsdWUgXSB+bGFzdF9rZXk6a2V5IH5sYXN0X3ZhbHVlOnZhbHVlIHhzXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBsb2MgfmVxIHhzID1cbiAgICBsZXQgc29ydGVkID0gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gKHMxLCBfKSAoczIsIF8pIC0+IFN0cmluZy5jb21wYXJlIHMxIHMyKSB4cyBpblxuICAgIG1hdGNoIG1lcmdlX2NoZWNrX2FkamFjZW50X2R1cHMgfmVxIHNvcnRlZCB3aXRoXG4gICAgfCBgT2sgc29ydGVkIC0+IHsgc29ydGVkIH1cbiAgICB8IGBNaXNtYXRjaCBzIC0+XG4gICAgICBldmFsX2ZhaWwgbG9jIFwiRGlmZmVyZW50IHNoYXBlcyBmb3IgZHVwbGljYXRlZCBwb2x5bW9ycGhpYyBjb25zdHJ1Y3RvcjogYCVzXCIgcyAoKVxuICA7O1xuXG4gIGxldCBleHBvc2UgdCA9IHQuc29ydGVkXG4gIGxldCBtYXAgdCB+ZiA9IHsgc29ydGVkID0gTGlzdC5tYXAgdC5zb3J0ZWQgfmY6KGZ1biAoaywgdikgLT4gaywgZiB2KSB9XG5lbmRcblxubW9kdWxlIERpZ2VzdCA6IHNpZ1xuICB0eXBlIHQgPSBNZDVfbGliLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICB2YWwgdG9fbWQ1IDogdCAtPiBNZDVfbGliLnRcbiAgdmFsIG9mX21kNSA6IE1kNV9saWIudCAtPiB0XG4gIHZhbCB0b19oZXggOiB0IC0+IHN0cmluZ1xuICB2YWwgY29uc3RydWN0b3IgOiBzdHJpbmcgLT4gdCBsaXN0IC0+IHRcbiAgdmFsIGxpc3QgOiB0IGxpc3QgLT4gdFxuICB2YWwgcGFpciA6IHQgLT4gdCAtPiB0XG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgLT4gdFxuICB2YWwgdXVpZCA6IFV1aWQudCAtPiB0XG4gIHZhbCBpbnQgOiBpbnQgLT4gdFxuICB2YWwgb3B0aW9uIDogdCBvcHRpb24gLT4gdFxuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgTWQ1X2xpYlxuXG4gIGxldCB0b19tZDUgdCA9IHRcbiAgbGV0IG9mX21kNSB0ID0gdFxuICBsZXQgc2V4cF9vZl90IHQgPSB0IHw+IHRvX2hleCB8PiBzZXhwX29mX3N0cmluZ1xuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IHN0cmluZ19vZl9zZXhwIHw+IG9mX2hleF9leG5cbiAgbGV0IHV1aWQgdSA9IHN0cmluZyAoVXVpZC50b19zdHJpbmcgdSlcbiAgbGV0IGludCB4ID0gc3RyaW5nIChJbnQudG9fc3RyaW5nIHgpXG4gIGxldCBwYWlyIHggeSA9IHN0cmluZyAodG9fYmluYXJ5IHggXiB0b19iaW5hcnkgeSlcbiAgbGV0IGxpc3QgbCA9IHN0cmluZyAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgKExpc3QubWFwIH5mOnRvX2JpbmFyeSBsKSlcbiAgbGV0IGNvbnN0cnVjdG9yIHMgbCA9IHN0cmluZyAocyBeIHRvX2JpbmFyeSAobGlzdCBsKSlcblxuICBsZXQgb3B0aW9uID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gY29uc3RydWN0b3IgXCJub25lXCIgW11cbiAgICB8IFNvbWUgeCAtPiBjb25zdHJ1Y3RvciBcInNvbWVcIiBbIHggXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yID0gc3RydWN0XG4gICgqIFsnYSB0XSBpcyBhIG5vbi1yZWN1cnNpdmUgdHlwZSwgdXNlZCB0byByZXByZXNlbnQgMS1sYXllciBvZiBleHByZXNzaW9uLiAgVGhlXG4gICAgIHJlY3Vyc2l2ZSBrbm90IGlzIHRpZWQgYmVsb3cgaW4gW0Nhbm9uaWNhbF9mdWxsLkV4cC50XS4gKilcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEFubm90YXRlIG9mIFV1aWQudCAqICdhXG4gICAgfCBCYXNlIG9mIFV1aWQudCAqICdhIGxpc3RcbiAgICB8IFR1cGxlIG9mICdhIGxpc3RcbiAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogJ2EpIGxpc3RcbiAgICB8IFZhcmlhbnQgb2YgKHN0cmluZyAqICdhIGxpc3QpIGxpc3RcbiAgICAoKiBQb2x5bW9ycGhpYyB2YXJpYW50cyBhcmUgaW5zZW5zaXRpdmUgdG8gdGhlIG9yZGVyIHRoZSBjb25zdHJ1Y3RvcnMgYXJlIGxpc3RlZCAqKVxuICAgIHwgUG9seV92YXJpYW50IG9mICdhIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICgqIExlZnQtaGFuZC1zaWRlIG9mIFtBcHBsaWNhdGlvbl0gaXMgYSBwb3RlbnRpYWxseSByZWN1cnNpdmUgZGVmaW5pdGlvbjogaXRcbiAgICAgICBjYW4gcmVmZXIgdG8gaXRzZWxmIHVzaW5nIFtSZWNfYXBwIChpLCBfKV0gd2hlcmUgW2ldIGlzIHRoZSBkZXB0aCBvZiB0aGlzXG4gICAgICAgYXBwbGljYXRpb24gbm9kZSAoaG93IG1hbnkgYXBwbGljYXRpb24gbm9kZXMgYXJlIGFib3ZlIGl0KS5cbiAgICAgICBJdCBhbHNvIGhhcyBpdHMgb3duIHNjb3BlIG9mIHR5cGUgdmFyaWFibGVzIHNvIGl0IGNhbiBub3QgcmVmZXIgdG8gdHlwZSB2YXJpYWJsZXNcbiAgICAgICBvZiB0aGUgZW5jbG9zaW5nIHNjb3BlLlxuICAgICopXG4gICAgfCBBcHBsaWNhdGlvbiBvZiAnYSAqICdhIGxpc3RcbiAgICB8IFJlY19hcHAgb2YgaW50ICogJ2EgbGlzdFxuICAgIHwgVmFyIG9mIGludFxuICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuXG4gIGxldCBtYXAgeCB+ZiA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBbm5vdGF0ZSAodSwgeCkgLT4gQW5ub3RhdGUgKHUsIGYgeClcbiAgICB8IEJhc2UgKHMsIHhzKSAtPiBCYXNlIChzLCBMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFR1cGxlIHhzIC0+IFR1cGxlIChMaXN0Lm1hcCB+ZiB4cylcbiAgICB8IFJlY29yZCBsIC0+IFJlY29yZCAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCB4KSAtPiBzLCBmIHgpKVxuICAgIHwgVmFyaWFudCBsIC0+IFZhcmlhbnQgKExpc3QubWFwIGwgfmY6KGZ1biAocywgeHMpIC0+IHMsIExpc3QubWFwIH5mIHhzKSlcbiAgICB8IFBvbHlfdmFyaWFudCB0IC0+IFBvbHlfdmFyaWFudCAoU29ydGVkX3RhYmxlLm1hcCB0IH5mOihPcHRpb24ubWFwIH5mKSlcbiAgICB8IEFwcGxpY2F0aW9uICh4LCBsKSAtPiBBcHBsaWNhdGlvbiAoZiB4LCBMaXN0Lm1hcCB+ZiBsKVxuICAgIHwgUmVjX2FwcCAodCwgbCkgLT4gUmVjX2FwcCAodCwgTGlzdC5tYXAgfmYgbClcbiAgICB8IFZhciB2IC0+IFZhciB2XG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCAoZnVuIF8gLT4gQXRvbSBcIi4uLlwiKSB0KVxuZW5kXG5cbm1vZHVsZSBDcmVhdGVfZGlnZXN0IDogc2lnXG4gICgqIERpZ2VzdCB2YXJpb3VzIGV4cHJlc3Npb24gZm9ybXMgKilcblxuICB2YWwgZGlnZXN0X2xheWVyIDogRGlnZXN0LnQgQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci50IC0+IERpZ2VzdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbGV0IGRpZ2VzdF9sYXllciA9IGZ1bmN0aW9uXG4gICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLkFubm90YXRlICh1LCB4KSAtPlxuICAgICAgRGlnZXN0LmNvbnN0cnVjdG9yIFwiYW5ub3RhdGVcIiBbIERpZ2VzdC51dWlkIHU7IHggXVxuICAgIHwgQmFzZSAodSwgbCkgLT4gRGlnZXN0LmNvbnN0cnVjdG9yIFwiYmFzZVwiIFsgRGlnZXN0LnV1aWQgdTsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBUdXBsZSBsIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInR1cGxlXCIgWyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY29yZCBsIC0+XG4gICAgICBEaWdlc3QuY29uc3RydWN0b3JcbiAgICAgICAgXCJyZWNvcmRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0IChMaXN0Lm1hcCBsIH5mOihmdW4gKHMsIHQpIC0+IERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHMpIHQpKSBdXG4gICAgfCBWYXJpYW50IGwgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInZhcmlhbnRcIlxuICAgICAgICBbIERpZ2VzdC5saXN0XG4gICAgICAgICAgICAoTGlzdC5tYXAgbCB+ZjooZnVuIChzLCBsKSAtPiBEaWdlc3QucGFpciAoRGlnZXN0LnN0cmluZyBzKSAoRGlnZXN0Lmxpc3QgbCkpKVxuICAgICAgICBdXG4gICAgfCBQb2x5X3ZhcmlhbnQgdGFibGUgLT5cbiAgICAgIERpZ2VzdC5jb25zdHJ1Y3RvclxuICAgICAgICBcInBvbHlfdmFyaWFudFwiXG4gICAgICAgIFsgRGlnZXN0Lmxpc3RcbiAgICAgICAgICAgIChMaXN0Lm1hcCAoU29ydGVkX3RhYmxlLmV4cG9zZSB0YWJsZSkgfmY6KGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgIERpZ2VzdC5wYWlyIChEaWdlc3Quc3RyaW5nIHgpIChEaWdlc3Qub3B0aW9uIHkpKSlcbiAgICAgICAgXVxuICAgIHwgQXBwbGljYXRpb24gKHgsIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcImFwcGxpY2F0aW9uXCIgWyB4OyBEaWdlc3QubGlzdCBsIF1cbiAgICB8IFJlY19hcHAgKG4sIGwpIC0+IERpZ2VzdC5jb25zdHJ1Y3RvciBcInJlY19hcHBcIiBbIERpZ2VzdC5pbnQgbjsgRGlnZXN0Lmxpc3QgbCBdXG4gICAgfCBWYXIgbiAtPiBEaWdlc3QuY29uc3RydWN0b3IgXCJ2YXJcIiBbIERpZ2VzdC5pbnQgbiBdXG4gIDs7XG5lbmRcblxubW9kdWxlIFZpc2liaWxpdHkgPSBzdHJ1Y3RcbiAgdHlwZSB2aXNpYmxlID0gVmlzaWJsZVxuICB0eXBlIG9wYXF1ZSA9IE9wYXF1ZVxuXG4gIGxldCBfID0gVmlzaWJsZVxuICBsZXQgXyA9IE9wYXF1ZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENhbm9uaWNhbCA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9fZGlnZXN0IDogdCAtPiBEaWdlc3QudFxuXG4gIG1vZHVsZSBFeHAxIDogc2lnXG4gICAgdHlwZSBfIHRcblxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyB0XG4gICAgdmFsIHJlY3Vyc2UgOiBpbnQgLT4gXyB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIGFwcGx5IDogJ2EgdCAtPiAnYSB0IGxpc3QgLT4gXyB0XG4gICAgdmFsIG9wYXF1ZSA6IF8gdCAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICB2YWwgZ2V0X3BvbHlfdmFyaWFudFxuICAgICAgOiAgVmlzaWJpbGl0eS52aXNpYmxlIHRcbiAgICAgIC0+IChWaXNpYmlsaXR5Lm9wYXF1ZSB0IG9wdGlvbiBTb3J0ZWRfdGFibGUudCwgc3RyaW5nKSBSZXN1bHQudFxuICBlbmRcblxuICBtb2R1bGUgRGVmIDogc2lnXG4gICAgdHlwZSB0ID0gVmlzaWJpbGl0eS52aXNpYmxlIEV4cDEudFxuICBlbmRcblxuICBtb2R1bGUgQ3JlYXRlIDogc2lnXG4gICAgdmFsIGFubm90YXRlIDogVXVpZC50IC0+IF8gRXhwMS50IC0+IF8gRXhwMS50XG4gICAgdmFsIGJhc2V0eXBlIDogVXVpZC50IC0+IF8gRXhwMS50IGxpc3QgLT4gXyBFeHAxLnRcbiAgICB2YWwgdHVwbGUgOiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHBvbHlfdmFyaWFudCA6IExvY2F0aW9uLnQgLT4gKHN0cmluZyAqIF8gRXhwMS50IG9wdGlvbikgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCB2YXIgOiBpbnQgLT4gXyBFeHAxLnRcbiAgICB2YWwgcmVjdXJzZSA6IGludCAtPiBfIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGFwcGx5IDogJ2EgRXhwMS50IC0+ICdhIEV4cDEudCBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIGRlZmluZSA6IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnQgLT4gRGVmLnRcbiAgICB2YWwgcmVjb3JkIDogKHN0cmluZyAqIF8gRXhwMS50KSBsaXN0IC0+IF8gRXhwMS50XG4gICAgdmFsIHZhcmlhbnQgOiAoc3RyaW5nICogXyBFeHAxLnQgbGlzdCkgbGlzdCAtPiBfIEV4cDEudFxuICAgIHZhbCBjcmVhdGUgOiBfIEV4cDEudCAtPiB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDYW5vbmljYWxfZGlnZXN0IDogQ2Fub25pY2FsID0gc3RydWN0XG4gIHR5cGUgdCA9IENhbm9uaWNhbCBvZiBEaWdlc3QudFxuXG4gIGxldCB0b19kaWdlc3QgKENhbm9uaWNhbCB4KSA9IHhcblxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIG9wYXF1ZSA9IERpZ2VzdC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBQb2x5X3ZhcmlhbnQgb2Ygb3BhcXVlIG9wdGlvbiBTb3J0ZWRfdGFibGUudFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IG9mIChzdHJpbmcgKiBvcGFxdWUpXG4gICAgICB8IE9wYXF1ZSA6IG9wYXF1ZSAtPiBWaXNpYmlsaXR5Lm9wYXF1ZSB0XG5cbiAgICBsZXQgdG9fZGlnZXN0ICh0eXBlIGEpICh4IDogYSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgT3BhcXVlIHggLT4geFxuICAgICAgfCBOb25fcG9seV92YXJpYW50IChfLCB4KSAtPiB4XG4gICAgICB8IFBvbHlfdmFyaWFudCB4IC0+IENELmRpZ2VzdF9sYXllciAoUG9seV92YXJpYW50IHgpXG4gICAgOztcblxuICAgIGxldCBlcXVhbCAodHlwZSBhKSAoeCA6IGEgdCkgKHkgOiBhIHQpID1cbiAgICAgIERpZ2VzdC5jb21wYXJlICh0b19kaWdlc3QgeCkgKHRvX2RpZ2VzdCB5KSA9IDBcbiAgICA7O1xuXG4gICAgbGV0IG9wYXF1ZSB4ID0gT3BhcXVlICh0b19kaWdlc3QgeClcblxuICAgIGxldCBjcmVhdGUgeCA9XG4gICAgICBsZXQgeCA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IubWFwIH5mOnRvX2RpZ2VzdCB4IGluXG4gICAgICBsZXQgZGVzYyA9IENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudCBsIC0+IFBvbHlfdmFyaWFudCBsXG4gICAgICB8IEJhc2UgXyAtPiBOb25fcG9seV92YXJpYW50IChkZXNjLCBDRC5kaWdlc3RfbGF5ZXIgeClcbiAgICAgIHwgQW5ub3RhdGUgXyAtPlxuICAgICAgICAoKiBJdCdzIHVuc2FmZSB0byB1c2UgZGVyaXZpbmcgYmluX2lvIHdoZW4gaW5oZXJpdGluZyBmcm9tIGEgcG9seW1vcnBoaWMgdmFyaWFudFxuICAgICAgICAgICB0aGF0IGhhcyBhIGN1c3RvbSBiaW5faW8uICBJZiB3ZSBmb3JiaWQgdGhhdCwgd2UgY2FuIGhhcHBpbHkgcmVqZWN0IGhlcmVcbiAgICAgICAgICAgYW55dGhpbmcgdGhhdCdzIGFubm90YXRlZC4gKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IEFwcGxpY2F0aW9uIF8gLT5cbiAgICAgICAgKCogQXBwbGljYXRpb24gY2FuIHJlYWxseSBiZSBhIHBvbHktdmFyaWFudCB5b3UgY2FuIGluaGVyaXQgZnJvbSEgIEJ1dCBpdCdzIGFcbiAgICAgICAgICAgcmFyZSBzaXR1YXRpb24gdGhhdCBtb3N0bHkgKG9ubHk/KSBhcmlzZXMgd2l0aCBpbmhlcml0YW5jZSBmcm9tIHJlY3Vyc2l2ZVxuICAgICAgICAgICBwb2x5bW9ycGljIHZhcmlhbnRzLCB3aGljaCB3ZSd2ZSBub3Qgc2VlbiBhbnl3aGVyZSB5ZXQuICBTbyB3ZSByZWplY3QgaXQuICopXG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgICAgfCBSZWNfYXBwIF8gLT5cbiAgICAgICAgKCogWW91IGNhbiBvbmx5IGdldCB0aGUgW1JlY19hcHBdIGNvbnN0cnVjdG9yIGZvciB0eXBlLXJlZmVyZW5jZXMgd2l0aGluIHRoZVxuICAgICAgICAgICBtdXR1YWwgZ3JvdXAgYmVpbmcgZGVmaW5lZC4gUmVmZXJlbmNlcyB3aGljaFxuICAgICAgICAgICBmb2xsb3cgYWZ0ZXIgdGhlIGN1cnJlbnQgZ3JvdXAgd2lsbCBhbHdheXMgYmUgW0FwcGxpY2F0aW9uXXMuXG5cbiAgICAgICAgICAgQW5kIHNpbmNlIG9jYW1sIHJlamVjdHMgcmVmZXJlbmNlcyBpbiBgaW5oZXJpdGFuY2UnIHBvc2l0aW9uIHRvIHR5cGVzIHdpdGhpblxuICAgICAgICAgICB0aGUgY3VycmVudCBncm91cCAoc2VlIGV4YW1wbGUpIHdpdGg6XG5cbiAgICAgICAgICAgRXJyb3I6IFRoZSB0eXBlIGNvbnN0cnVjdG9yIHRcbiAgICAgICAgICAgaXMgbm90IHlldCBjb21wbGV0ZWx5IGRlZmluZWRcblxuICAgICAgICAgICB0aGVuIGl0cyBvayB0byBzYXkgdGhhdCBhIHJlYy1hcHAgaXMgc29tZXRoaW5nIHRoYXQgY2FuJ3QgYmUgaW5oZXJpdGVkIGZyb20gYW5kXG4gICAgICAgICAgIHJldHVybiBbTm9uX3BvbHlfdmFyaWFudF0uXG5cbiAgICAgICAgICAgQW5kIHVubGlrZSB0aGUgW0FwcGxpY2F0aW9uXSBjYXNlLCBpdCBzaG91bGQgbmV2ZXIgYmUgcG9zc2libGUgdG8gc2VlXG4gICAgICAgICAgIGFuIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgW2Rlc2NdID0gW1JlY19hcHBdLlxuXG4gICAgICAgICAgIEV4YW1wbGU6IFt0eXBlIHQgPSBbYGEgb2YgWyB8IHRdIF1dXG4gICAgICAgICAgIEhlcmUsIFt8IHRdIHdvdWxkIGJlIGFuIGV4YW1wbGUgb2YgaW5oZXJpdGFuY2UgZnJvbSBhIFJlY19hcHAsIHdoaWNoXG4gICAgICAgICAgIGlzIHJlamVjdGVkIGJ5IHRoZSBjb21waWxlci5cbiAgICAgICAgKilcbiAgICAgICAgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgQ0QuZGlnZXN0X2xheWVyIHgpXG4gICAgICB8IFZhciBfIHwgVHVwbGUgXyB8IFJlY29yZCBfIHwgVmFyaWFudCBfIC0+XG4gICAgICAgIE5vbl9wb2x5X3ZhcmlhbnQgKGRlc2MsIENELmRpZ2VzdF9sYXllciB4KVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBjcmVhdGUgKFZhciB4KVxuICAgIGxldCBhcHBseSBkZWYgbCA9IGNyZWF0ZSAoQXBwbGljYXRpb24gKGRlZiwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdGlkIGwgPSBjcmVhdGUgKFJlY19hcHAgKHRpZCwgbCkpXG5cbiAgICBsZXQgZ2V0X3BvbHlfdmFyaWFudCAoeCA6IFZpc2liaWxpdHkudmlzaWJsZSB0KSA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uX3BvbHlfdmFyaWFudCAoZGVzYywgXykgLT4gRXJyb3IgZGVzY1xuICAgICAgfCBQb2x5X3ZhcmlhbnQgbCAtPiBPayAoU29ydGVkX3RhYmxlLm1hcCB+ZjooT3B0aW9uLm1hcCB+ZjooZnVuIHggLT4gT3BhcXVlIHgpKSBsKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWYgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBWaXNpYmlsaXR5LnZpc2libGUgRXhwMS50XG4gIGVuZFxuXG4gIG1vZHVsZSBDcmVhdGUgPSBzdHJ1Y3RcbiAgICBsZXQgYW5ub3RhdGUgdSB4ID0gRXhwMS5jcmVhdGUgKEFubm90YXRlICh1LCB4KSlcbiAgICBsZXQgYmFzZXR5cGUgdSBsID0gRXhwMS5jcmVhdGUgKEJhc2UgKHUsIGwpKVxuICAgIGxldCB0dXBsZSBsID0gRXhwMS5jcmVhdGUgKFR1cGxlIGwpXG5cbiAgICBsZXQgcG9seV92YXJpYW50IGxvYyBsID1cbiAgICAgIEV4cDEuY3JlYXRlIChQb2x5X3ZhcmlhbnQgKFNvcnRlZF90YWJsZS5jcmVhdGUgbG9jIH5lcTooZXF1YWxfb3B0aW9uIEV4cDEuZXF1YWwpIGwpKVxuICAgIDs7XG5cbiAgICBsZXQgdmFyIHggPSBFeHAxLmNyZWF0ZSAoVmFyIHgpXG4gICAgbGV0IGFwcGx5IHggbCA9IEV4cDEuY3JlYXRlIChBcHBsaWNhdGlvbiAoeCwgbCkpXG4gICAgbGV0IHJlY3Vyc2UgdCBsID0gRXhwMS5jcmVhdGUgKFJlY19hcHAgKHQsIGwpKVxuICAgIGxldCBkZWZpbmUgeCA9IHhcbiAgICBsZXQgcmVjb3JkIGwgPSBFeHAxLmNyZWF0ZSAoUmVjb3JkIGwpXG4gICAgbGV0IHZhcmlhbnQgbCA9IEV4cDEuY3JlYXRlIChWYXJpYW50IGwpXG4gICAgbGV0IGNyZWF0ZSBlID0gQ2Fub25pY2FsIChFeHAxLnRvX2RpZ2VzdCBlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ2Fub25pY2FsX2Z1bGwgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgaW5jbHVkZSBDYW5vbmljYWwgd2l0aCB0eXBlIHQgOj0gdFxuXG4gIHZhbCB0b19zdHJpbmdfaHVtIDogdCAtPiBzdHJpbmdcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgQ0QgPSBDcmVhdGVfZGlnZXN0XG5cbiAgbW9kdWxlIEV4cDEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQwID0gRXhwIG9mIHQwIENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsX3QwIHggeSA9IGNvbXBhcmVfdDAgeCB5ID0gMFxuXG4gICAgdHlwZSAnYSB0ID0gdDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB2YXIgeCA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5WYXIgeClcbiAgICBsZXQgYXBwbHkgZCB4cyA9IEV4cCAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5BcHBsaWNhdGlvbiAoZCwgeHMpKVxuICAgIGxldCByZWN1cnNlIHIgeHMgPSBFeHAgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IuUmVjX2FwcCAociwgeHMpKVxuXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPVxuICAgICAgRXhwXG4gICAgICAgIChDYW5vbmljYWxfZXhwX2NvbnN0cnVjdG9yLlBvbHlfdmFyaWFudFxuICAgICAgICAgICAoU29ydGVkX3RhYmxlLmNyZWF0ZSBsb2MgfmVxOihlcXVhbF9vcHRpb24gZXF1YWxfdDApIHhzKSlcbiAgICA7O1xuXG4gICAgbGV0IGdldF9wb2x5X3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgICAgfCBFeHAgKFBvbHlfdmFyaWFudCB0YWIpIC0+IE9rIHRhYlxuICAgICAgfCBFeHAgY2MgLT4gRXJyb3IgKENhbm9uaWNhbF9leHBfY29uc3RydWN0b3IudG9fc3RyaW5nIGNjKVxuICAgIDs7XG5cbiAgICBsZXQgb3BhcXVlIHQgPSB0XG5cbiAgICBsZXQgcmVjIHRvX2RpZ2VzdCA9IGZ1bmN0aW9uXG4gICAgICB8IEV4cCBlIC0+IENELmRpZ2VzdF9sYXllciAoQ2Fub25pY2FsX2V4cF9jb25zdHJ1Y3Rvci5tYXAgfmY6dG9fZGlnZXN0IGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIERlZiA9IHN0cnVjdFxuICAgICgqIEEgW0RlZi50XSBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG1heSBiZSBhcHBsaWVkICopXG4gICAgdHlwZSB0ID0gRXhwMS50MCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuICBlbmRcblxuICAoKiBBIGNhbm9uaWNhbCBzaGFwZSBbdF0gaXMgYW4gW0V4cDEudF0uICopXG4gIHR5cGUgdCA9IEV4cDEudDAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgdG9fZGlnZXN0IGUgPSBFeHAxLnRvX2RpZ2VzdCBlXG5cbiAgbW9kdWxlIENyZWF0ZSA9IHN0cnVjdFxuICAgIGxldCBhbm5vdGF0ZSB1IHggPSBFeHAxLkV4cCAoQW5ub3RhdGUgKHUsIHgpKVxuICAgIGxldCBiYXNldHlwZSB1IHhzID0gRXhwMS5FeHAgKEJhc2UgKHUsIHhzKSlcbiAgICBsZXQgdHVwbGUgeHMgPSBFeHAxLkV4cCAoVHVwbGUgeHMpXG4gICAgbGV0IHBvbHlfdmFyaWFudCBsb2MgeHMgPSBFeHAxLnBvbHlfdmFyaWFudCBsb2MgeHNcbiAgICBsZXQgdmFyIG4gPSBFeHAxLkV4cCAoVmFyIG4pXG4gICAgbGV0IHJlY3Vyc2UgciB4cyA9IEV4cDEucmVjdXJzZSByIHhzXG4gICAgbGV0IGFwcGx5IGQgeHMgPSBFeHAxLmFwcGx5IGQgeHNcbiAgICBsZXQgZGVmaW5lIHggPSB4XG4gICAgbGV0IHJlY29yZCB4cyA9IEV4cDEuRXhwIChSZWNvcmQgeHMpXG4gICAgbGV0IHZhcmlhbnQgeHMgPSBFeHAxLkV4cCAoVmFyaWFudCB4cylcbiAgICBsZXQgY3JlYXRlIGV4cCA9IGV4cFxuICBlbmRcblxuICBsZXQgdG9fc3RyaW5nX2h1bSB0ID0gU2V4cC50b19zdHJpbmdfaHVtIChzZXhwX29mX3QgdClcbmVuZFxuXG5tb2R1bGUgVGlkIDogc2lnXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlNcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuZW5kXG5cbm1vZHVsZSBWaWQgOiBzaWdcbiAgaW5jbHVkZSBJZGVudGlmaWFibGUuU1xuZW5kID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5lbmRcblxubW9kdWxlIEdpZCA6IHNpZ1xuICAoKiB1bmlxdWUgZ3JvdXAtaWQsIHVzZWQgYXMga2V5IGZvciBUZW52IGJlbG93ICopXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgciA9IHJlZiAwXG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgbGV0IHUgPSAhciBpblxuICAgIHIgOj0gMSArIHU7XG4gICAgdVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFeHByZXNzaW9uID0gc3RydWN0XG4gIHR5cGUgJ3QgcG9seV9jb25zdHIgPVxuICAgIFsgYENvbnN0ciBvZiBzdHJpbmcgKiAndCBvcHRpb25cbiAgICB8IGBJbmhlcml0IG9mIExvY2F0aW9uLnQgKiAndFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBtb2R1bGUgR3JvdXAgOiBzaWdcbiAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgIHZhbCBjcmVhdGUgOiBMb2NhdGlvbi50IC0+IChUaWQudCAqIFZpZC50IGxpc3QgKiAnYSkgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGlkIDogJ2EgdCAtPiBHaWQudFxuICAgIHZhbCBsb29rdXAgOiAnYSB0IC0+IFRpZC50IC0+IFZpZC50IGxpc3QgKiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBnaWQgOiBHaWQudFxuICAgICAgOyBsb2MgOiBMb2NhdGlvbi50XG4gICAgICA7IG1lbWJlcnMgOiAoVGlkLnQgKiAoVmlkLnQgbGlzdCAqICdhKSkgbGlzdFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIGxvYyB0cmlwcyA9XG4gICAgICBsZXQgZ2lkID0gR2lkLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IG1lbWJlcnMgPSBMaXN0Lm1hcCB0cmlwcyB+ZjooZnVuICh4LCB2cywgdCkgLT4geCwgKHZzLCB0KSkgaW5cbiAgICAgIHsgZ2lkOyBsb2M7IG1lbWJlcnMgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgZyA9IGcuZ2lkXG5cbiAgICBsZXQgbG9va3VwIGcgdGlkID1cbiAgICAgIG1hdGNoIExpc3QuQXNzb2MuZmluZCBnLm1lbWJlcnMgfmVxdWFsOlRpZC4oID0gKSB0aWQgd2l0aFxuICAgICAgfCBTb21lIHNjaGVtZSAtPiBzY2hlbWVcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBldmFsX2ZhaWxcbiAgICAgICAgICBnLmxvY1xuICAgICAgICAgICFcImltcG9zc2libGU6IGxvb2t1cF9ncm91cCwgdW5ib3VuZCB0eXBlLWlkZW50aWZpZXI6ICV7VGlkfVwiXG4gICAgICAgICAgdGlkXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHwgQW5ub3RhdGUgb2YgVXVpZC50ICogdFxuICAgIHwgQmFzZSBvZiBVdWlkLnQgKiB0IGxpc3RcbiAgICB8IFJlY29yZCBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgVmFyaWFudCBvZiAoc3RyaW5nICogdCBsaXN0KSBsaXN0XG4gICAgfCBUdXBsZSBvZiB0IGxpc3RcbiAgICB8IFBvbHlfdmFyaWFudCBvZiAoTG9jYXRpb24udCAqIHQgcG9seV9jb25zdHIgbGlzdClcbiAgICB8IFZhciBvZiAoTG9jYXRpb24udCAqIFZpZC50KVxuICAgIHwgUmVjX2FwcCBvZiBUaWQudCAqIHQgbGlzdFxuICAgIHwgVG9wX2FwcCBvZiB0IEdyb3VwLnQgKiBUaWQudCAqIHQgbGlzdFxuICBbQEBkZXJpdmluZyB2YXJpYW50cywgc2V4cF9vZl1cblxuICB0eXBlIGdyb3VwID0gdCBHcm91cC50XG5cbiAgbGV0IGdyb3VwID0gR3JvdXAuY3JlYXRlXG5cbiAgdHlwZSBwb2x5X3ZhcmlhbnRfcm93ID0gdCBwb2x5X2NvbnN0clxuXG4gIGxldCBjb25zdHIgcyB0ID0gYENvbnN0ciAocywgdClcbiAgbGV0IGluaGVyaXRfIGxvYyB0ID0gYEluaGVyaXQgKGxvYywgdClcbiAgbGV0IHZhciBsb2MgdCA9IFZhciAobG9jLCB0KVxuICBsZXQgcG9seV92YXJpYW50IGxvYyB4cyA9IFBvbHlfdmFyaWFudCAobG9jLCB4cylcbiAgbGV0IGJhc2V0eXBlID0gYmFzZVxuXG4gICgqIFwiVlJcIiBzdGFuZHMgZm9yIFwidmFyaWFudCBvciByZWNvcmRcIiAqKVxuXG4gIGxldCBpc19jeWNsaWNfMCB+KHZpYV9WUiA6IGJvb2wpIDogZ3JvdXAgLT4gVGlkLnQgLT4gYm9vbCA9XG4gICAgZnVuIGdyb3VwIHRpZCAtPlxuICAgIGxldCBzZXQgPSByZWYgW10gaW5cbiAgICBsZXQgdmlzaXRlZCB0aWQgPSBMaXN0Lm1lbSAhc2V0IHRpZCB+ZXF1YWw6VGlkLmVxdWFsIGluXG4gICAgbGV0IGFkZCB0aWQgPSBzZXQgOj0gdGlkIDo6ICFzZXQgaW5cbiAgICBsZXQgcmVjIHRyYXYgPSBmdW5jdGlvblxuICAgICAgKCogV2UgbG9vayBmb3IgY3ljbGVzIGJ5IHRyYXZlcnNpbmcgdGhlIHN0cnVjdHVyZSBvZiB0eXBlLWV4cHJlc3Npb25zICopXG4gICAgICB8IEFubm90YXRlIChfLCB0KSAtPiB0cmF2IHRcbiAgICAgIHwgQmFzZSAoXywgdHMpIHwgVHVwbGUgdHMgfCBUb3BfYXBwIChfLCBfLCB0cykgLT4gTGlzdC5pdGVyIHRzIH5mOnRyYXZcbiAgICAgICgqIC4uaW5jbHVkaW5nIHBvbHktdmFyaWFudHMgKilcbiAgICAgIHwgUG9seV92YXJpYW50IChfLCBjcykgLT5cbiAgICAgICAgTGlzdC5pdGVyIGNzIH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgYENvbnN0ciAoXywgTm9uZSkgLT4gKClcbiAgICAgICAgICB8IGBDb25zdHIgKF8sIFNvbWUgdCkgLT4gdHJhdiB0XG4gICAgICAgICAgfCBgSW5oZXJpdCAoX2xvYywgdCkgLT4gdHJhdiB0KVxuICAgICAgKCogLi4gYW5kIHJlY29yZHMgJiAobm9ybWFsKSB2YXJpYW50cyAqKVxuICAgICAgfCBSZWNvcmQgeHMgLT4gaWYgdmlhX1ZSIHRoZW4gTGlzdC5pdGVyIHhzIH5mOihmdW4gKF8sIHQpIC0+IHRyYXYgdCkgZWxzZSAoKVxuICAgICAgfCBWYXJpYW50IHhzIC0+XG4gICAgICAgIGlmIHZpYV9WUiB0aGVuIExpc3QuaXRlciB4cyB+ZjooZnVuIChfLCB0cykgLT4gTGlzdC5pdGVyIH5mOnRyYXYgdHMpIGVsc2UgKClcbiAgICAgICgqIFdlIGRvbnQgZm9sbG93IHR5cGUtdmFycyAqKVxuICAgICAgfCBWYXIgXyAtPiAoKVxuICAgICAgKCogdHJhdmVyc2UgKHJlY3Vyc2l2ZSkgdHlwZS1hcHBzIHdoZW4gZmlyc3QgZW5jb3VudGVyZWQgKilcbiAgICAgIHwgUmVjX2FwcCAodGlkLCB0cykgLT5cbiAgICAgICAgaWYgdmlzaXRlZCB0aWRcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBhZGQgdGlkO1xuICAgICAgICAgIHRyYXZfdGlkIHRpZCk7XG4gICAgICAgIExpc3QuaXRlciB0cyB+Zjp0cmF2XG4gICAgYW5kIHRyYXZfdGlkIHRpZCA9XG4gICAgICBsZXQgXywgYm9keSA9IEdyb3VwLmxvb2t1cCBncm91cCB0aWQgaW5cbiAgICAgIHRyYXYgYm9keVxuICAgIGluXG4gICAgdHJhdl90aWQgdGlkO1xuICAgIGxldCByZXMgPSB2aXNpdGVkIHRpZCBpblxuICAgICgqbGV0IF9zcyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIiAoTGlzdC5tYXAgKCFzZXQpIH5mOihzcHJpbnRmICFcIiV7VGlkfVwiKSkgaW4qKVxuICAgICgqUHJpbnRmLnByaW50ZiAhXCJpc19jeWxpYzogJXtUaWR9IC0tPiAoJXMpICViICAtLSAlcyUhXCIgdGlkIF9zcyByZXMgKEdyb3VwLmxvYyBncm91cCk7KilcbiAgICByZXNcbiAgOztcblxuICBsZXQgaXNfY3ljbGljID0gaXNfY3ljbGljXzAgfnZpYV9WUjp0cnVlXG4gIGxldCBpc19jeWNsaWNfd2l0aF9ub19pbnRlcnZlbmluZ19WUiA9IGlzX2N5Y2xpY18wIH52aWFfVlI6ZmFsc2VcbmVuZFxuXG5pbmNsdWRlIEV4cHJlc3Npb25cblxubW9kdWxlIEV2YWx1YXRpb24gKENhbm9uaWNhbCA6IENhbm9uaWNhbCkgPSBzdHJ1Y3RcbiAgKCogW1ZlbnYudF1cbiAgICAgRW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyB0eXBlLXZhcnMgKilcbiAgbW9kdWxlIFZlbnYgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBsb29rdXAgOiB0IC0+IFZpZC50IC0+IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IG9wdGlvblxuICAgIHZhbCBjcmVhdGUgOiAoVmlkLnQgKiBWaXNpYmlsaXR5LnZpc2libGUgQ2Fub25pY2FsLkV4cDEudCkgbGlzdCAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IE1hcC5NKFZpZCkudFxuXG4gICAgbGV0IGNyZWF0ZSA9XG4gICAgICBMaXN0LmZvbGRcbiAgICAgICAgfmluaXQ6KE1hcC5lbXB0eSAobW9kdWxlIFZpZCkpXG4gICAgICAgIH5mOihmdW4gdCAoaywgdikgLT4gTWFwLnNldCB+a2V5OmsgfmRhdGE6diB0KVxuICAgIDs7XG5cbiAgICBsZXQgbG9va3VwIHQgayA9IE1hcC5maW5kIHQga1xuICBlbmRcblxuICBtb2R1bGUgQXBwbGljYW5kID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgUmVjdXJzaW9uX2xldmVsIG9mIGludFxuICAgICAgfCBEZWZpbml0aW9uIG9mIENhbm9uaWNhbC5EZWYudFxuICBlbmRcblxuICAoKiBbVGVudi50XVxuICAgICBFbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIHR5cGUtZGVmaW5pdGlvbnMgKilcbiAgbW9kdWxlIFRlbnYgOiBzaWdcbiAgICB0eXBlIGtleSA9IEdpZC50ICogVGlkLnRcbiAgICB0eXBlIHRcblxuICAgIHZhbCBmaW5kIDogdCAtPiBrZXkgLT4gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIG9wdGlvblxuICAgIHZhbCBlbXB0eSA6IHRcbiAgICB2YWwgZXh0ZW5kIDogdCAtPiBrZXkgLT4gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIC0+IHRcbiAgZW5kID0gc3RydWN0XG4gICAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gR2lkLnQgKiBUaWQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kXG5cbiAgICB0eXBlIGtleSA9IEtleS50XG4gICAgdHlwZSB0ID0gWyBgUmVjdXJzaW9uX2xldmVsIG9mIGludCBdIE1hcC5NKEtleSkudFxuXG4gICAgbGV0IGZpbmQgdCBrID0gTWFwLmZpbmQgdCBrXG4gICAgbGV0IGVtcHR5ID0gTWFwLmVtcHR5IChtb2R1bGUgS2V5KVxuICAgIGxldCBleHRlbmQgdCBrIHYgPSBNYXAuc2V0IH5rZXk6ayB+ZGF0YTp2IHRcbiAgZW5kXG5cbiAgKCogW0RlZmluaW5nLnRdXG4gICAgIE1vbmFkIGZvciBtYW5hZ2luZyB1bi1yb2xsaW5nIGRlcHRoLCBhbmQgbWFpbnRhaW5nIGEgW1RlbnYudF0gKilcbiAgbW9kdWxlIERlZmluaW5nIDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICAgIHZhbCBsb29rX2VudiA6IFRlbnYua2V5IC0+IEFwcGxpY2FuZC50IG9wdGlvbiB0XG4gICAgdmFsIGV4dGVuZF9uZXdfdGlkIDogVGVudi5rZXkgLT4gQ2Fub25pY2FsLkRlZi50IHQgLT4gQXBwbGljYW5kLnQgdFxuICAgIHZhbCBleGVjIDogJ2EgdCAtPiAnYVxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBkZXB0aDppbnQgLT4gVGVudi50IC0+ICdhXG5cbiAgICBsZXQgcmV0dXJuIHggfmRlcHRoOl8gX3RlbnYgPSB4XG5cbiAgICBsZXQgYmluZCB0IGYgfmRlcHRoIHRlbnYgPVxuICAgICAgbGV0IHggPSB0IH5kZXB0aCB0ZW52IGluXG4gICAgICAoZiB4KSB+ZGVwdGggdGVudlxuICAgIDs7XG5cbiAgICBsZXQgbG9va19lbnYga2V5IH5kZXB0aDpfIHRlbnYgPVxuICAgICAgbGV0IHJlc3VsdCA9IFRlbnYuZmluZCB0ZW52IGtleSBpblxuICAgICAgT3B0aW9uLm1hcCB+ZjooZnVuIChgUmVjdXJzaW9uX2xldmVsIHgpIC0+IEFwcGxpY2FuZC5SZWN1cnNpb25fbGV2ZWwgeCkgcmVzdWx0XG4gICAgOztcblxuICAgIGxldCBleHRlbmRfbmV3X3RpZCBrZXkgZGVmX3QgfmRlcHRoIHRlbnYgPVxuICAgICAgQXBwbGljYW5kLkRlZmluaXRpb25cbiAgICAgICAgKGxldCB2YWx1ZSA9IGBSZWN1cnNpb25fbGV2ZWwgZGVwdGggaW5cbiAgICAgICAgIGxldCB0ZW52ID0gVGVudi5leHRlbmQgdGVudiBrZXkgdmFsdWUgaW5cbiAgICAgICAgIGRlZl90IH5kZXB0aDooZGVwdGggKyAxKSB0ZW52KVxuICAgIDs7XG5cbiAgICBsZXQgZXhlYyB0ID0gdCB+ZGVwdGg6MCBUZW52LmVtcHR5XG4gIGVuZFxuXG4gIHR5cGUgJ2EgZGVmaW5pbmcgPSAnYSBEZWZpbmluZy50XG5cbiAgbGV0ICggPj49ICkgPSBEZWZpbmluZy5iaW5kXG4gIGxldCByZXR1cm4gPSBEZWZpbmluZy5yZXR1cm5cblxuICBsZXQgc2VxdWVuY2VfZGVmaW5pbmcgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiIGRlZmluaW5nKSAtPiAnYiBsaXN0IGRlZmluaW5nID1cbiAgICBmdW4geHMgfmYgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjX3lzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmV0dXJuIChMaXN0LnJldiBhY2NfeXMpXG4gICAgICB8IHggOjogeHMgLT4gZiB4ID4+PSBmdW4geSAtPiBsb29wICh5IDo6IGFjY195cykgeHNcbiAgICBpblxuICAgIGxvb3AgW10geHNcbiAgOztcblxuICAoKlxuICAgICBTaGFwZSBldmFsdWF0aW9uLlxuXG4gICAgIFNoYXBlcyBhcmUgZXZhbHVhdGVkIHRvIGNhbm9uaWNhbC1zaGFwZSAoZXhwcmVzc2lvbnMpLCB3aXRoIGFkZGl0aW9uYWwgZGVmcyBjb2xsZWN0ZWRcbiAgICAgaW4gdGhlIFtkZWZpbmluZ10gbW9uYWQsIHdoaWNoIGFsc28gbWFuYWdlcyBnZW5lcmF0aW9uL21hcHBpbmcgdG8gW0Nhbm9uaWNhbC5UaWQudF1cblxuICAgICBUaGVyZSBpcyBkb3dud2FyZHMgY29udGV4dCBvZiBbZ3JvdXBdIGFuZCBbVmVudi50XVxuICAgICBUaGUgKGN1cnJlbnQpIFtncm91cF0gY2hhbmdlcyB3aGVuIHRoZSBjYXNlIGZvciBbVG9wX2FwcF0gY2FsbHMgW2V2YWxfYXBwXS5cblxuICAgICBUaGUgY3VycmVudCBbVmVudi50XSBpcyBhYmFuZG9uZWQgd2hlbiBbZXZhbF9hcHBdIGlzIGNhbGxlZCwgYW5kIHRoZW4gcmUtY3JlYXRlZCBhZnRlclxuICAgICB0aGUgZGVjaXNpb24gaGFzIGJlZW4gbWFkZSB0byBlaXRoZXIgaW5saW5lIHRoZSB0eXBlLWFwcGxpY2F0aW9uLCBvciBtYWtlIGEgcmVmZXJlbmNlXG4gICAgIHRvIGEgdHlwZS1kZWZpbml0aW9uLCB3aGljaCBpcyBjcmVhdGVkIGF0IG1vc3Qgb25jZSBmb3IgZWFjaCAoR2lkLnQgKiBUaWQudCkuXG5cbiAgICAgV2UgbWFrZSBhIHR5cGUtZGVmaW5pdGlvbiBhbHdheXMgZm9yIFJlY29yZHMgYW5kIFZhcmlhbnRzLCBhbmQgaW4gYWRkaXRpb24gZm9yIGFueVxuICAgICBvdGhlciBjeWNsaWMgdHlwZS1kZWZpbml0aW9uLlxuICAqKVxuXG4gIGxldCByZWMgZXZhbCA6IGdyb3VwIC0+IFZlbnYudCAtPiB0IC0+IFZpc2liaWxpdHkudmlzaWJsZSBDYW5vbmljYWwuRXhwMS50IGRlZmluaW5nID1cbiAgICBmdW4gZ3JvdXAgdmVudiB0IC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgUmVjb3JkIGJpbmRzIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIGJpbmRzIH5mOihmdW4gKHMsIHgpIC0+XG4gICAgICAgICAgZXZhbCBncm91cCB2ZW52IHggPj49IGZ1biB5IC0+IHJldHVybiAocywgeSkpXG4gICAgICAgID4+PSBmdW4gYmluZHMgLT4gcmV0dXJuIChDYW5vbmljYWwuQ3JlYXRlLnJlY29yZCBiaW5kcylcbiAgICAgIHwgVmFyaWFudCBhbHRzIC0+XG4gICAgICAgIHNlcXVlbmNlX2RlZmluaW5nIGFsdHMgfmY6KGZ1biAocywgeHMpIC0+XG4gICAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgeHMgPj49IGZ1biB5cyAtPiByZXR1cm4gKHMsIHlzKSlcbiAgICAgICAgPj49IGZ1biBhbHRzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS52YXJpYW50IGFsdHMpXG4gICAgICB8IFZhciAobG9jLCB2aWQpIC0+XG4gICAgICAgIChtYXRjaCBWZW52Lmxvb2t1cCB2ZW52IHZpZCB3aXRoXG4gICAgICAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgICAgICAgfCBOb25lIC0+IGV2YWxfZmFpbCBsb2MgIVwiRnJlZSB0eXBlIHZhcmlhYmxlOiAnJXtWaWR9XCIgdmlkICgpKVxuICAgICAgfCBBbm5vdGF0ZSAocywgdCkgLT5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IHQgPj49IGZ1biB2IC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5hbm5vdGF0ZSBzIHYpXG4gICAgICB8IEJhc2UgKHMsIHRzKSAtPlxuICAgICAgICBldmFsX2xpc3QgZ3JvdXAgdmVudiB0cyA+Pj0gZnVuIHZzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5iYXNldHlwZSBzIHZzKVxuICAgICAgfCBUdXBsZSB0cyAtPiBldmFsX2xpc3QgZ3JvdXAgdmVudiB0cyA+Pj0gZnVuIHZzIC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS50dXBsZSB2cylcbiAgICAgIHwgVG9wX2FwcCAoaW5fZ3JvdXAsIHRpZCwgYXJncykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgYXJnc1xuICAgICAgICA+Pj0gZnVuIGFyZ3MgLT5cbiAgICAgICAgKCogYXJncyBldmFsdWF0ZWQgaW4gY3VycmVudCBncm91cCAqKVxuICAgICAgICBldmFsX2FwcCBpbl9ncm91cCB0aWQgYXJnc1xuICAgICAgKCogZ3JvdXAgY2hhbmdlZCBoZXJlICopXG4gICAgICB8IFJlY19hcHAgKHRpZCwgYXJncykgLT5cbiAgICAgICAgZXZhbF9saXN0IGdyb3VwIHZlbnYgYXJncyA+Pj0gZnVuIGFyZ3MgLT4gZXZhbF9hcHAgZ3JvdXAgdGlkIGFyZ3NcbiAgICAgIHwgUG9seV92YXJpYW50IChsb2MsIGNzKSAtPlxuICAgICAgICBzZXF1ZW5jZV9kZWZpbmluZyB+ZjooZXZhbF9wb2x5X2NvbnN0ciBncm91cCB2ZW52KSBjc1xuICAgICAgICA+Pj0gZnVuIHhzcyAtPiByZXR1cm4gKENhbm9uaWNhbC5DcmVhdGUucG9seV92YXJpYW50IGxvYyAoTGlzdC5jb25jYXQgeHNzKSlcblxuICBhbmQgZXZhbF9saXN0IDogZ3JvdXAgLT4gVmVudi50IC0+IHQgbGlzdCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgbGlzdCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIHZlbnYgdHMgLT4gc2VxdWVuY2VfZGVmaW5pbmcgdHMgfmY6KGV2YWwgZ3JvdXAgdmVudilcblxuICBhbmQgZXZhbF9wb2x5X2NvbnN0clxuICAgIDogIGdyb3VwIC0+IFZlbnYudCAtPiB0IHBvbHlfY29uc3RyXG4gICAgICAtPiAoc3RyaW5nICogVmlzaWJpbGl0eS5vcGFxdWUgQ2Fub25pY2FsLkV4cDEudCBvcHRpb24pIGxpc3QgZGVmaW5pbmdcbiAgICA9XG4gICAgZnVuIGdyb3VwIHZlbnYgYyAtPlxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8IGBDb25zdHIgKHMsIE5vbmUpIC0+IHJldHVybiBbIHMsIE5vbmUgXVxuICAgICAgfCBgQ29uc3RyIChzLCBTb21lIHQpIC0+XG4gICAgICAgIGV2YWwgZ3JvdXAgdmVudiB0ID4+PSBmdW4gdiAtPiByZXR1cm4gWyBzLCBTb21lIChDYW5vbmljYWwuRXhwMS5vcGFxdWUgdikgXVxuICAgICAgfCBgSW5oZXJpdCAobG9jLCB0KSAtPlxuICAgICAgICBldmFsIGdyb3VwIHZlbnYgdFxuICAgICAgICA+Pj0gZnVuIHYgLT5cbiAgICAgICAgKG1hdGNoIENhbm9uaWNhbC5FeHAxLmdldF9wb2x5X3ZhcmlhbnQgdiB3aXRoXG4gICAgICAgICB8IE9rIHRhYiAtPiByZXR1cm4gKFNvcnRlZF90YWJsZS5leHBvc2UgdGFiKVxuICAgICAgICAgfCBFcnJvciBkZXNjIC0+XG4gICAgICAgICAgIGV2YWxfZmFpbFxuICAgICAgICAgICAgIGxvY1xuICAgICAgICAgICAgIFwiVGhlIHNoYXBlIGZvciBhbiBpbmhlcml0ZWQgdHlwZSBpcyBub3QgZGVzY3JpYmVkIGFzIGEgcG9seW1vcnBoaWMtdmFyaWFudDogJXNcIlxuICAgICAgICAgICAgIGRlc2NcbiAgICAgICAgICAgICAoKSlcblxuICBhbmQgZXZhbF9kZWZpbml0aW9uIDogZ3JvdXAgLT4gVmlkLnQgbGlzdCAtPiB0IC0+IENhbm9uaWNhbC5EZWYudCBkZWZpbmluZyA9XG4gICAgZnVuIGdyb3VwIGZvcm1hbHMgYm9keSAtPlxuICAgICAgbGV0IHZlbnYgPSBWZW52LmNyZWF0ZSAoTGlzdC5tYXBpIGZvcm1hbHMgfmY6KGZ1biBpIHggLT4geCwgQ2Fub25pY2FsLkV4cDEudmFyIGkpKSBpblxuICAgICAgZXZhbCBncm91cCB2ZW52IGJvZHkgPj49IGZ1biB2IC0+IHJldHVybiAoQ2Fub25pY2FsLkNyZWF0ZS5kZWZpbmUgdilcblxuICBhbmQgZXZhbF9hcHAgOiBncm91cCAtPiBUaWQudCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgbGlzdCAtPiBfIENhbm9uaWNhbC5FeHAxLnQgZGVmaW5pbmcgPVxuICAgIGZ1biBncm91cCB0aWQgYXJncyAtPlxuICAgICAgbGV0IGdpZCA9IEdyb3VwLmlkIGdyb3VwIGluXG4gICAgICBsZXQgZm9ybWFscywgYm9keSA9IEdyb3VwLmxvb2t1cCBncm91cCB0aWQgaW5cbiAgICAgIGxldCByZWNvcmRfb3Jfbm9ybWFsX3ZhcmlhbnQgPVxuICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgfCBSZWNvcmQgXyB8IFZhcmlhbnQgXyAtPiB0cnVlXG4gICAgICAgIHwgVHVwbGUgXyB8IEFubm90YXRlIF8gfCBCYXNlIF8gfCBQb2x5X3ZhcmlhbnQgXyB8IFZhciBfIHwgUmVjX2FwcCBfIHwgVG9wX2FwcCBfIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgIGluXG4gICAgICBsZXQgY3ljbGljID0gaXNfY3ljbGljIGdyb3VwIHRpZCBpblxuICAgICAgbGV0IGN5Y2xpY19ub19WUiA9IGlzX2N5Y2xpY193aXRoX25vX2ludGVydmVuaW5nX1ZSIGdyb3VwIHRpZCBpblxuICAgICAgaWYgKHJlY29yZF9vcl9ub3JtYWxfdmFyaWFudCAmJiBjeWNsaWMpIHx8IGN5Y2xpY19ub19WUlxuICAgICAgdGhlblxuICAgICAgICBEZWZpbmluZy5sb29rX2VudiAoZ2lkLCB0aWQpXG4gICAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgICB8IFNvbWUgcmVjdXJzZSAtPiByZXR1cm4gcmVjdXJzZVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgRGVmaW5pbmcuZXh0ZW5kX25ld190aWQgKGdpZCwgdGlkKSAoZXZhbF9kZWZpbml0aW9uIGdyb3VwIGZvcm1hbHMgYm9keSkpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IFJlY3Vyc2lvbl9sZXZlbCByIC0+IHJldHVybiAoQ2Fub25pY2FsLkV4cDEucmVjdXJzZSByIGFyZ3MpXG4gICAgICAgIHwgRGVmaW5pdGlvbiBkZWYgLT4gcmV0dXJuIChDYW5vbmljYWwuRXhwMS5hcHBseSBkZWYgYXJncylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgdmVudiA9XG4gICAgICAgICAgbWF0Y2ggTGlzdC56aXAgZm9ybWFscyBhcmdzIHdpdGhcbiAgICAgICAgICB8IE9rIHggLT4gVmVudi5jcmVhdGUgeFxuICAgICAgICAgIHwgVW5lcXVhbF9sZW5ndGhzIC0+IGZhaWx3aXRoIFwiYXBwbHksIGluY29ycmVjdCB0eXBlIGFwcGxpY2F0aW9uIGFyaXR5XCJcbiAgICAgICAgaW5cbiAgICAgICAgZXZhbCBncm91cCB2ZW52IGJvZHkpXG4gIDs7XG5cbiAgKCogdG9wIGxldmVsIGVudHJ5IHBvaW50IGZvciBldmFsdWF0aW9uICopXG4gIGxldCBldmFsIDogdCAtPiBDYW5vbmljYWwudCA9XG4gICAgZnVuIHQgLT5cbiAgICAgIGxldCBncm91cCA9IGdyb3VwIChMb2NhdGlvbi5vZl9zdHJpbmcgXCJ0b3AtbGV2ZWxcIikgW10gaW5cbiAgICAgIGxldCB2ZW52ID0gVmVudi5jcmVhdGUgW10gaW5cbiAgICAgIGxldCB2ID0gRGVmaW5pbmcuZXhlYyAoZXZhbCBncm91cCB2ZW52IHQpIGluXG4gICAgICBDYW5vbmljYWwuQ3JlYXRlLmNyZWF0ZSB2XG4gIDs7XG5lbmRcblxubW9kdWxlIENhbm9uaWNhbCA9IHN0cnVjdFxuICBpbmNsdWRlIENhbm9uaWNhbF9mdWxsXG5cbiAgbW9kdWxlIEV4cCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFZpc2liaWxpdHkudmlzaWJsZSBFeHAxLnRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBFdmFsdWF0aW9uIChDYW5vbmljYWxfZnVsbClcbm1vZHVsZSBDYW5vbmljYWxfc2VsZWN0ZWQgPSBDYW5vbmljYWxfZGlnZXN0XG5tb2R1bGUgRXZhbHVhdGlvbl90b19kaWdlc3QgPSBFdmFsdWF0aW9uIChDYW5vbmljYWxfc2VsZWN0ZWQpXG5cbmxldCBldmFsX3RvX2RpZ2VzdCBleHAgPSBDYW5vbmljYWxfc2VsZWN0ZWQudG9fZGlnZXN0IChFdmFsdWF0aW9uX3RvX2RpZ2VzdC5ldmFsIGV4cClcbmxldCBldmFsX3RvX2RpZ2VzdF9zdHJpbmcgZXhwID0gRGlnZXN0LnRvX2hleCAoZXZhbF90b19kaWdlc3QgZXhwKVxuXG5tb2R1bGUgRm9yX3R5cGVyZXAgPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIE5vdF9hX3R1cGxlIG9mIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZGVjb25zdHJ1Y3RfdHVwbGVfZXhuIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgVHVwbGUgdHMgLT4gdHNcbiAgICB8IF8gLT4gcmFpc2UgKE5vdF9hX3R1cGxlIHQpXG4gIDs7XG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTk9URTpcbiAgIElmIHRoaXMgZmlsZSBpcyBzdHJpbmdMYWJlbHMubWxpLCBydW4gdG9vbHMvc3luY19zdGRsaWJfZG9jcyBhZnRlciBlZGl0aW5nXG4gICBpdCB0byBnZW5lcmF0ZSBzdHJpbmcubWxpLlxuXG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nLm1saSwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkgLS0gZWRpdFxuICAgc3RyaW5nTGFiZWxzLm1saSBpbnN0ZWFkLlxuICopXG5cbigqKiBTdHJpbmdzLlxuXG4gICAgQSBzdHJpbmcgW3NdIG9mIGxlbmd0aCBbbl0gaXMgYW4gaW5kZXhhYmxlIGFuZCBpbW11dGFibGUgc2VxdWVuY2VcbiAgICBvZiBbbl0gYnl0ZXMuIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMgdGhlc2UgYnl0ZXMgYXJlIHJlZmVycmVkIHRvXG4gICAgYXMgY2hhcmFjdGVycy5cblxuICAgIFRoZSBzZW1hbnRpY3Mgb2Ygc3RyaW5nIGZ1bmN0aW9ucyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mXG4gICAgaW5kaWNlcyBhbmQgcG9zaXRpb25zLiBUaGVzZSBhcmUgZGVwaWN0ZWQgYW5kIGRlc2NyaWJlZFxuICAgIGFzIGZvbGxvd3MuXG5cbnt2XG5wb3NpdGlvbnMgIDAgICAxICAgMiAgIDMgICA0ICAgIG4tMSAgICBuXG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG4gIGluZGljZXMgIHwgMCB8IDEgfCAyIHwgMyB8IC4uLiB8IG4tMSB8XG4gICAgICAgICAgICstLS0rLS0tKy0tLSstLS0rICAgICArLS0tLS0rXG52fVxuICAgIHt1bFxuICAgIHstIEFuIHtlIGluZGV4fSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFxcW1swXTtbbi0xXVxcXS5cbiAgICAgICBJdCByZXByZXNlbnRzIHRoZSBbaV10aCBieXRlIChjaGFyYWN0ZXIpIG9mIFtzXSB3aGljaCBjYW4gYmVcbiAgICAgICBhY2Nlc3NlZCB1c2luZyB0aGUgY29uc3RhbnQgdGltZSBzdHJpbmcgaW5kZXhpbmcgb3BlcmF0b3JcbiAgICAgICBbcy5baV1dLn1cbiAgICB7LSBBIHtlIHBvc2l0aW9ufSBbaV0gb2YgW3NdIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICAgICAgXFxbWzBdO1tuXVxcXS4gSXQgcmVwcmVzZW50cyBlaXRoZXIgdGhlIHBvaW50IGF0IHRoZSBiZWdpbm5pbmcgb2ZcbiAgICAgICB0aGUgc3RyaW5nLCBvciB0aGUgcG9pbnQgYmV0d2VlbiB0d28gaW5kaWNlcywgb3IgdGhlIHBvaW50IGF0XG4gICAgICAgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGUgW2lddGggYnl0ZSBpbmRleCBpcyBiZXR3ZWVuIHBvc2l0aW9uXG4gICAgICAgW2ldIGFuZCBbaSsxXS59fVxuXG4gICAgVHdvIGludGVnZXJzIFtzdGFydF0gYW5kIFtsZW5dIGFyZSBzYWlkIHRvIGRlZmluZSBhIHtlIHZhbGlkXG4gICAgc3Vic3RyaW5nfSBvZiBbc10gaWYgW2xlbiA+PSAwXSBhbmQgW3N0YXJ0XSwgW3N0YXJ0K2xlbl0gYXJlXG4gICAgcG9zaXRpb25zIG9mIFtzXS5cblxuICAgIHtiIFVuaWNvZGUgdGV4dC59IFN0cmluZ3MgYmVpbmcgYXJiaXRyYXJ5IHNlcXVlbmNlcyBvZiBieXRlcywgdGhleVxuICAgIGNhbiBob2xkIGFueSBraW5kIG9mIHRleHR1YWwgZW5jb2RpbmcuIEhvd2V2ZXIgdGhlIHJlY29tbWVuZGVkXG4gICAgZW5jb2RpbmcgZm9yIHN0b3JpbmcgVW5pY29kZSB0ZXh0IGluIE9DYW1sIHN0cmluZ3MgaXMgVVRGLTguIFRoaXNcbiAgICBpcyB0aGUgZW5jb2RpbmcgdXNlZCBieSBVbmljb2RlIGVzY2FwZXMgaW4gc3RyaW5nIGxpdGVyYWxzLiBGb3JcbiAgICBleGFtcGxlIHRoZSBzdHJpbmcgW1wiXFx1ezFGNDJCfVwiXSBpcyB0aGUgVVRGLTggZW5jb2Rpbmcgb2YgdGhlXG4gICAgVW5pY29kZSBjaGFyYWN0ZXIgVSsxRjQyQi5cblxuICAgIHtiIFBhc3QgbXV0YWJpbGl0eS59IEJlZm9yZSBPQ2FtbCA0LjAyLCBzdHJpbmdzIHVzZWQgdG8gYmUgbW9kaWZpYWJsZSBpblxuICAgIHBsYWNlIGxpa2UgeyFCeXRlcy50fSBtdXRhYmxlIHNlcXVlbmNlcyBvZiBieXRlcy5cbiAgICBPQ2FtbCA0IGhhZCB2YXJpb3VzIGNvbXBpbGVyIGZsYWdzIGFuZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gc3VwcG9ydCB0aGVcbiAgICB0cmFuc2l0aW9uIHBlcmlvZCBmcm9tIG11dGFibGUgdG8gaW1tdXRhYmxlIHN0cmluZ3MuXG4gICAgVGhvc2Ugb3B0aW9ucyBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSwgYW5kIHN0cmluZ3MgYXJlIG5vdyBhbHdheXNcbiAgICBpbW11dGFibGUuXG5cbiAgICBUaGUgbGFiZWxlZCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlIGNhbiBiZSB1c2VkIGFzIGRlc2NyaWJlZCBpbiB0aGVcbiAgICB7IVN0ZExhYmVsc30gbW9kdWxlLlxuKilcblxuKCoqIHsxOnN0cmluZ3MgU3RyaW5nc30gKilcblxudHlwZSB0ID0gc3RyaW5nXG4oKiogVGhlIHR5cGUgZm9yIHN0cmluZ3MuICopXG5cbnZhbCBtYWtlIDogaW50IC0+IGNoYXIgLT4gc3RyaW5nXG4oKiogW21ha2UgbiBjXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggZWFjaCBpbmRleCBob2xkaW5nIHRoZVxuICAgIGNoYXJhY3RlciBbY10uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS4gKilcblxudmFsIGluaXQgOiBpbnQgLT4gKGludCAtPiBjaGFyKSAtPiBzdHJpbmdcbigqKiBbaW5pdCBuIGZdIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbl0gd2l0aCBpbmRleFxuICAgIFtpXSBob2xkaW5nIHRoZSBjaGFyYWN0ZXIgW2YgaV0gKGNhbGxlZCBpbiBpbmNyZWFzaW5nIGluZGV4IG9yZGVyKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuIDwgMF0gb3IgW24gPiBdeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9LlxuICAgIEBzaW5jZSA0LjAyLjAgKilcblxudmFsIGVtcHR5IDogc3RyaW5nXG4oKiogVGhlIGVtcHR5IHN0cmluZy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBvZl9ieXRlcyA6IGJ5dGVzIC0+IHN0cmluZ1xuKCoqIFJldHVybiBhIG5ldyBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW4gYnl0ZVxuICAgIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIHRvX2J5dGVzIDogc3RyaW5nIC0+IGJ5dGVzXG4oKiogUmV0dXJuIGEgbmV3IGJ5dGUgc2VxdWVuY2UgdGhhdCBjb250YWlucyB0aGUgc2FtZSBieXRlcyBhcyB0aGUgZ2l2ZW5cbiAgICBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG4oKiogW2xlbmd0aCBzXSBpcyB0aGUgbGVuZ3RoIChudW1iZXIgb2YgYnl0ZXMvY2hhcmFjdGVycykgb2YgW3NdLiAqKVxuXG5leHRlcm5hbCBnZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuKCoqIFtnZXQgcyBpXSBpcyB0aGUgY2hhcmFjdGVyIGF0IGluZGV4IFtpXSBpbiBbc10uIFRoaXMgaXMgdGhlIHNhbWVcbiAgICBhcyB3cml0aW5nIFtzLltpXV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gbm90IGFuIGluZGV4IG9mIFtzXS4gKilcblxuKCoqIHsxOmNvbmNhdCBDb25jYXRlbmF0aW5nfVxuXG4gICAge2IgTm90ZS59IFRoZSB7IVN0ZGxpYi4oIF4gKX0gYmluYXJ5IG9wZXJhdG9yIGNvbmNhdGVuYXRlcyB0d29cbiAgICBzdHJpbmdzLiAqKVxuXG52YWwgY29uY2F0IDogc3RyaW5nIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuKCoqIFtjb25jYXQgc2VwIHNzXSBjb25jYXRlbmF0ZXMgdGhlIGxpc3Qgb2Ygc3RyaW5ncyBbc3NdLCBpbnNlcnRpbmdcbiAgICB0aGUgc2VwYXJhdG9yIHN0cmluZyBbc2VwXSBiZXR3ZWVuIGVhY2guXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgY2F0IDogc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbY2F0IHMxIHMyXSBjb25jYXRlbmF0ZXMgczEgYW5kIHMyIChbczEgXiBzMl0pLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbigqKiB7MTpwcmVkaWNhdGVzIFByZWRpY2F0ZXMgYW5kIGNvbXBhcmlzb25zfSAqKVxuXG52YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuKCoqIFtlcXVhbCBzMCBzMV0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzMF0gYW5kIFtzMV0gYXJlIGNoYXJhY3Rlci13aXNlXG4gICAgZXF1YWwuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4oKiogW2NvbXBhcmUgczAgczFdIHNvcnRzIFtzMF0gYW5kIFtzMV0gaW4gbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLiBbY29tcGFyZV1cbiAgICBiZWhhdmVzIGxpa2UgeyFTdGRsaWIuY29tcGFyZX0gb24gc3RyaW5ncyBidXQgbWF5IGJlIG1vcmUgZWZmaWNpZW50LiAqKVxuXG52YWwgc3RhcnRzX3dpdGggOlxuICBwcmVmaXggKCogY29tbWVudCB0aHdhcnRzIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgKikgOnN0cmluZyAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtzdGFydHNfd2l0aCBdW35wcmVmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBzdGFydHMgd2l0aFxuICAgIFtwcmVmaXhdLlxuXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZW5kc193aXRoIDpcbiAgc3VmZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZW5kc193aXRoIF1bfnN1ZmZpeCBzXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW3NdIGVuZHMgd2l0aCBbc3VmZml4XS5cblxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGNvbnRhaW5zX2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWluc19mcm9tIHMgc3RhcnQgY10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtjXSBhcHBlYXJzIGluIFtzXVxuICAgIGFmdGVyIHBvc2l0aW9uIFtzdGFydF0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RhcnRdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbcmNvbnRhaW5zX2Zyb20gcyBzdG9wIGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBiZWZvcmUgcG9zaXRpb24gW3N0b3ArMV0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3RvcCA8IDBdIG9yIFtzdG9wKzFdIGlzIG5vdCBhIHZhbGlkXG4gICAgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgY29udGFpbnMgOiBzdHJpbmcgLT4gY2hhciAtPiBib29sXG4oKiogW2NvbnRhaW5zIHMgY10gaXMgeyFTdHJpbmcuY29udGFpbnNfZnJvbX1bIHMgMCBjXS4gKilcblxuKCoqIHsxOmV4dHJhY3QgRXh0cmFjdGluZyBzdWJzdHJpbmdzfSAqKVxuXG52YWwgc3ViIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gc3RyaW5nXG4oKiogW3N1YiBzIHBvcyBsZW5dIGlzIGEgc3RyaW5nIG9mIGxlbmd0aCBbbGVuXSwgY29udGFpbmluZyB0aGVcbiAgICBzdWJzdHJpbmcgb2YgW3NdIHRoYXQgc3RhcnRzIGF0IHBvc2l0aW9uIFtwb3NdIGFuZCBoYXMgbGVuZ3RoXG4gICAgW2xlbl0uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbcG9zXSBhbmQgW2xlbl0gZG8gbm90IGRlc2lnbmF0ZSBhIHZhbGlkXG4gICAgc3Vic3RyaW5nIG9mIFtzXS4gKilcblxudmFsIHNwbGl0X29uX2NoYXIgOiBjaGFyIC0+IHN0cmluZyAtPiBzdHJpbmcgbGlzdFxuKCoqIFtzcGxpdF9vbl9jaGFyIHNlcCBzXSBpcyB0aGUgbGlzdCBvZiBhbGwgKHBvc3NpYmx5IGVtcHR5KVxuICAgIHN1YnN0cmluZ3Mgb2YgW3NdIHRoYXQgYXJlIGRlbGltaXRlZCBieSB0aGUgY2hhcmFjdGVyIFtzZXBdLlxuXG4gICAgVGhlIGZ1bmN0aW9uJ3MgcmVzdWx0IGlzIHNwZWNpZmllZCBieSB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6XG4gICAge3VsXG4gICAgey0gVGhlIGxpc3QgaXMgbm90IGVtcHR5Ln1cbiAgICB7LSBDb25jYXRlbmF0aW5nIGl0cyBlbGVtZW50cyB1c2luZyBbc2VwXSBhcyBhIHNlcGFyYXRvciByZXR1cm5zIGFcbiAgICAgIHN0cmluZyBlcXVhbCB0byB0aGUgaW5wdXQgKFtjb25jYXQgKG1ha2UgMSBzZXApXG4gICAgICAoc3BsaXRfb25fY2hhciBzZXAgcykgPSBzXSkufVxuICAgIHstIE5vIHN0cmluZyBpbiB0aGUgcmVzdWx0IGNvbnRhaW5zIHRoZSBbc2VwXSBjaGFyYWN0ZXIufX1cblxuICAgIEBzaW5jZSA0LjA0LjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmFuc2Zvcm1pbmcgVHJhbnNmb3JtaW5nfSAqKVxuXG52YWwgbWFwIDogKGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXAgZiBzXSBpcyB0aGUgc3RyaW5nIHJlc3VsdGluZyBmcm9tIGFwcGx5aW5nIFtmXSB0byBhbGwgdGhlXG4gICAgY2hhcmFjdGVycyBvZiBbc10gaW4gaW5jcmVhc2luZyBvcmRlci5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxudmFsIG1hcGkgOiAoaW50IC0+IGNoYXIgLT4gY2hhcikgLT4gc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFttYXBpIGYgc10gaXMgbGlrZSB7IW1hcH0gYnV0IHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGlzIGFsc29cbiAgICBwYXNzZWQgdG8gW2ZdLlxuXG4gICAgQHNpbmNlIDQuMDIuMCAqKVxuXG52YWwgZm9sZF9sZWZ0IDogKCdhIC0+IGNoYXIgLT4gJ2EpIC0+ICdhIC0+IHN0cmluZyAtPiAnYVxuKCoqIFtmb2xkX2xlZnQgZiB4IHNdIGNvbXB1dGVzIFtmICguLi4gKGYgKGYgeCBzLlswXSkgcy5bMV0pIC4uLikgcy5bbi0xXV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZm9sZF9yaWdodCA6IChjaGFyIC0+ICdhIC0+ICdhKSAtPiBzdHJpbmcgLT4gJ2EgLT4gJ2FcbigqKiBbZm9sZF9yaWdodCBmIHMgeF0gY29tcHV0ZXMgW2Ygcy5bMF0gKGYgcy5bMV0gKCAuLi4gKGYgcy5bbi0xXSB4KSAuLi4pKV0sXG4gICAgd2hlcmUgW25dIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBbc10uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZm9yX2FsbCA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2Zvcl9hbGwgcCBzXSBjaGVja3MgaWYgYWxsIGNoYXJhY3RlcnMgaW4gW3NdIHNhdGlzZnkgdGhlIHByZWRpY2F0ZSBbcF0uXG4gICAgQHNpbmNlIDQuMTMuMCAqKVxuXG52YWwgZXhpc3RzIDogKGNoYXIgLT4gYm9vbCkgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbZXhpc3RzIHAgc10gY2hlY2tzIGlmIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb2YgW3NdIHNhdGlzZmllcyB0aGUgcHJlZGljYXRlXG4gICAgW3BdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIHRyaW0gOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3RyaW0gc10gaXMgW3NdIHdpdGhvdXQgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gV2hpdGVzcGFjZVxuICAgIGNoYXJhY3RlcnMgYXJlOiBbJyAnXSwgWydcXHgwQyddIChmb3JtIGZlZWQpLCBbJ1xcbiddLCBbJ1xcciddLCBhbmQgWydcXHQnXS5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxudmFsIGVzY2FwZWQgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2VzY2FwZWQgc10gaXMgW3NdIHdpdGggc3BlY2lhbCBjaGFyYWN0ZXJzIHJlcHJlc2VudGVkIGJ5IGVzY2FwZVxuICAgIHNlcXVlbmNlcywgZm9sbG93aW5nIHRoZSBsZXhpY2FsIGNvbnZlbnRpb25zIG9mIE9DYW1sLlxuXG4gICAgQWxsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgVVMtQVNDSUkgcHJpbnRhYmxlIHJhbmdlIFxcWzB4MjA7MHg3RVxcXSBhcmVcbiAgICBlc2NhcGVkLCBhcyB3ZWxsIGFzIGJhY2tzbGFzaCAoMHgyRikgYW5kIGRvdWJsZS1xdW90ZSAoMHgyMikuXG5cbiAgICBUaGUgZnVuY3Rpb24geyFTY2FuZi51bmVzY2FwZWR9IGlzIGEgbGVmdCBpbnZlcnNlIG9mIFtlc2NhcGVkXSxcbiAgICBpLmUuIFtTY2FuZi51bmVzY2FwZWQgKGVzY2FwZWQgcykgPSBzXSBmb3IgYW55IHN0cmluZyBbc10gKHVubGVzc1xuICAgIFtlc2NhcGVkIHNdIGZhaWxzKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuICopXG5cbnZhbCB1cHBlcmNhc2VfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VwcGVyY2FzZV9hc2NpaSBzXSBpcyBbc10gd2l0aCBhbGwgbG93ZXJjYXNlIGxldHRlcnNcbiAgICB0cmFuc2xhdGVkIHRvIHVwcGVyY2FzZSwgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG52YWwgbG93ZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtsb3dlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIHVwcGVyY2FzZSBsZXR0ZXJzIHRyYW5zbGF0ZWRcbiAgICB0byBsb3dlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhcGl0YWxpemVfYXNjaWkgc10gaXMgW3NdIHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBzZXQgdG9cbiAgICB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIHVuY2FwaXRhbGl6ZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbdW5jYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvIGxvd2VyY2FzZSxcbiAgICB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbigqKiB7MTp0cmF2ZXJzaW5nIFRyYXZlcnNpbmd9ICopXG5cbnZhbCBpdGVyIDogKGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlciBmIHNdIGFwcGxpZXMgZnVuY3Rpb24gW2ZdIGluIHR1cm4gdG8gYWxsIHRoZSBjaGFyYWN0ZXJzIG9mIFtzXS5cbiAgICBJdCBpcyBlcXVpdmFsZW50IHRvIFtmIHMuWzBdOyBmIHMuWzFdOyAuLi47IGYgcy5bbGVuZ3RoIHMgLSAxXTsgKCldLiAqKVxuXG52YWwgaXRlcmkgOiAoaW50IC0+IGNoYXIgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IHVuaXRcbigqKiBbaXRlcmldIGlzIGxpa2UgeyFpdGVyfSwgYnV0IHRoZSBmdW5jdGlvbiBpcyBhbHNvIGdpdmVuIHRoZVxuICAgIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDAuMCAqKVxuXG4oKiogezE6c2VhcmNoaW5nIFNlYXJjaGluZ30gKilcblxudmFsIGluZGV4X2Zyb20gOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50XG4oKiogW2luZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBbY10gaW5cbiAgICBbc10gYWZ0ZXIgcG9zaXRpb24gW2ldLlxuXG4gICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBbY10gZG9lcyBub3Qgb2NjdXIgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG5cbnZhbCBpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGFmdGVyIHBvc2l0aW9uIFtpXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpXSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXhfZnJvbSBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLiAqKVxuXG52YWwgcmluZGV4X2Zyb21fb3B0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X2Zyb21fb3B0IHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBbY11cbiAgICBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdIChpZiBhbnkpLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2krMV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCBpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb219WyBzIDAgY10uICopXG5cbnZhbCBpbmRleF9vcHQgOiBzdHJpbmcgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW2luZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLmluZGV4X2Zyb21fb3B0fVsgcyAwIGNdLlxuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHJpbmRleCA6IHN0cmluZyAtPiBjaGFyIC0+IGludFxuKCoqIFtyaW5kZXggcyBjXSBpcyB7IVN0cmluZy5yaW5kZXhfZnJvbX1bIHMgKGxlbmd0aCBzIC0gMSkgY10uICopXG5cbnZhbCByaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtyaW5kZXhfb3B0IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb21fb3B0fVsgcyAobGVuZ3RoIHMgLSAxKSBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbigqKiB7MSBTdHJpbmdzIGFuZCBTZXF1ZW5jZXN9ICopXG5cbnZhbCB0b19zZXEgOiB0IC0+IGNoYXIgU2VxLnRcbigqKiBbdG9fc2VxIHNdIGlzIGEgc2VxdWVuY2UgbWFkZSBvZiB0aGUgc3RyaW5nJ3MgY2hhcmFjdGVycyBpblxuICAgIGluY3JlYXNpbmcgb3JkZXIuIEluIFtcInVuc2FmZS1zdHJpbmdcIl0gbW9kZSwgbW9kaWZpY2F0aW9ucyBvZiB0aGUgc3RyaW5nXG4gICAgZHVyaW5nIGl0ZXJhdGlvbiB3aWxsIGJlIHJlZmxlY3RlZCBpbiB0aGUgc2VxdWVuY2UuXG5cbiAgICBAc2luY2UgNC4wNyAqKVxuXG52YWwgdG9fc2VxaSA6IHQgLT4gKGludCAqIGNoYXIpIFNlcS50XG4oKiogW3RvX3NlcWkgc10gaXMgbGlrZSB7IXRvX3NlcX0gYnV0IGFsc28gdHVwbGVzIHRoZSBjb3JyZXNwb25kaW5nIGluZGV4LlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIG9mX3NlcSA6IGNoYXIgU2VxLnQgLT4gdFxuKCoqIFtvZl9zZXEgc10gaXMgYSBzdHJpbmcgbWFkZSBvZiB0aGUgc2VxdWVuY2UncyBjaGFyYWN0ZXJzLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxuKCoqIHsxOnV0ZiBVVEYgZGVjb2RpbmcgYW5kIHZhbGlkYXRpb25zfVxuXG4gICAgQHNpbmNlIDQuMTQgKilcblxuKCoqIHsyOnV0Zl84IFVURi04fSAqKVxuXG52YWwgZ2V0X3V0Zl84X3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzhfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi04IGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW5cbiAgICBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfOCA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfOCBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTggZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmJlIFVURi0xNkJFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmJlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2YmVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkJFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZiZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZiZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2QkUgZGF0YS4gKilcblxuKCoqIHsyOnV0Zl8xNmxlIFVURi0xNkxFfSAqKVxuXG52YWwgZ2V0X3V0Zl8xNmxlX3VjaGFyIDogdCAtPiBpbnQgLT4gVWNoYXIudXRmX2RlY29kZVxuKCoqIFtnZXRfdXRmXzE2bGVfdWNoYXIgYiBpXSBkZWNvZGVzIGFuIFVURi0xNkxFIGNoYXJhY3RlciBhdCBpbmRleFxuICAgIFtpXSBpbiBbYl0uICopXG5cbnZhbCBpc192YWxpZF91dGZfMTZsZSA6IHQgLT4gYm9vbFxuKCoqIFtpc192YWxpZF91dGZfMTZsZSBiXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2JdIGNvbnRhaW5zIHZhbGlkXG4gICAgVVRGLTE2TEUgZGF0YS4gKilcblxudmFsIGJsaXQgOlxuICBzdHJpbmcgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuKCoqIFtibGl0IHNyYyBzcmNfcG9zIGRzdCBkc3RfcG9zIGxlbl0gY29waWVzIFtsZW5dIGJ5dGVzXG4gICAgZnJvbSB0aGUgc3RyaW5nIFtzcmNdLCBzdGFydGluZyBhdCBpbmRleCBbc3JjX3Bvc10sXG4gICAgdG8gYnl0ZSBzZXF1ZW5jZSBbZHN0XSwgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIG51bWJlciBbZHN0X3Bvc10uXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbc3JjX3Bvc10gYW5kIFtsZW5dIGRvIG5vdFxuICAgIGRlc2lnbmF0ZSBhIHZhbGlkIHJhbmdlIG9mIFtzcmNdLCBvciBpZiBbZHN0X3Bvc10gYW5kIFtsZW5dXG4gICAgZG8gbm90IGRlc2lnbmF0ZSBhIHZhbGlkIHJhbmdlIG9mIFtkc3RdLiAqKVxuXG4oKiogezEgQmluYXJ5IGRlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIHNlY3Rpb24gYmluYXJ5IGRlY29kZSBpbnRlZ2VycyBmcm9tIHN0cmluZ3MuXG5cbiAgICBBbGwgZm9sbG93aW5nIGZ1bmN0aW9ucyByYWlzZSBbSW52YWxpZF9hcmd1bWVudF0gaWYgdGhlIGNoYXJhY3RlcnNcbiAgICBuZWVkZWQgYXQgaW5kZXggW2ldIHRvIGRlY29kZSB0aGUgaW50ZWdlciBhcmUgbm90IGF2YWlsYWJsZS5cblxuICAgIExpdHRsZS1lbmRpYW4gKHJlc3AuIGJpZy1lbmRpYW4pIGVuY29kaW5nIG1lYW5zIHRoYXQgbGVhc3RcbiAgICAocmVzcC4gbW9zdCkgc2lnbmlmaWNhbnQgYnl0ZXMgYXJlIHN0b3JlZCBmaXJzdC4gIEJpZy1lbmRpYW4gaXNcbiAgICBhbHNvIGtub3duIGFzIG5ldHdvcmsgYnl0ZSBvcmRlci4gIE5hdGl2ZS1lbmRpYW4gZW5jb2RpbmcgaXNcbiAgICBlaXRoZXIgbGl0dGxlLWVuZGlhbiBvciBiaWctZW5kaWFuIGRlcGVuZGluZyBvbiB7IVN5cy5iaWdfZW5kaWFufS5cblxuICAgIDMyLWJpdCBhbmQgNjQtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludDMyXSBhbmRcbiAgICBbaW50NjRdIHR5cGVzLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgZWl0aGVyIGFzIHNpZ25lZCBvclxuICAgIHVuc2lnbmVkIG51bWJlcnMuXG5cbiAgICA4LWJpdCBhbmQgMTYtYml0IGludGVnZXJzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgW2ludF0gdHlwZSxcbiAgICB3aGljaCBoYXMgbW9yZSBiaXRzIHRoYW4gdGhlIGJpbmFyeSBlbmNvZGluZy4gIFRoZXNlIGV4dHJhIGJpdHNcbiAgICBhcmUgc2lnbi1leHRlbmRlZCAob3IgemVyby1leHRlbmRlZCkgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZWNvZGUgOC1iaXRcbiAgICBvciAxNi1iaXQgaW50ZWdlcnMgYW5kIHJlcHJlc2VudGVkIHRoZW0gd2l0aCBbaW50XSB2YWx1ZXMuXG4qKVxuXG52YWwgZ2V0X3VpbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQ4IGIgaV0gaXMgW2JdJ3MgdW5zaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDggOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50OCBiIGldIGlzIFtiXSdzIHNpZ25lZCA4LWJpdCBpbnRlZ2VyIHN0YXJ0aW5nIGF0IGNoYXJhY3RlclxuICAgIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9sZSBiIGldIGlzIFtiXSdzIGxpdHRsZS1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGhhc2ggOiB0IC0+IGludFxuKCoqIEFuIHVuc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLmhhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXMgYXJndW1lbnRcbiAgICB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZX0uXG5cbiAgICBAc2luY2UgNS4wLjAgKilcblxudmFsIHNlZWRlZF9oYXNoIDogaW50IC0+IHQgLT4gaW50XG4oKiogQSBzZWVkZWQgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncywgd2l0aCB0aGUgc2FtZSBvdXRwdXQgdmFsdWUgYXNcbiAgICB7IUhhc2h0Ymwuc2VlZGVkX2hhc2h9LiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZSBwYXNzZWQgYXNcbiAgICBhcmd1bWVudCB0byB0aGUgZnVuY3RvciB7IUhhc2h0YmwuTWFrZVNlZWRlZH0uXG5cbiAgICBAc2luY2UgNS4wLjAgKilcblxudmFsIGdldF9pbnQzMl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDMyX2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9uZSBiIGldIGlzIFtiXSdzIG5hdGl2ZS1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2JlIGIgaV0gaXMgW2JdJ3MgYmlnLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X2xlIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbigqKi8qKilcblxuKCogVGhlIGZvbGxvd2luZyBpcyBmb3Igc3lzdGVtIHVzZSBvbmx5LiBEbyBub3QgY2FsbCBkaXJlY3RseS4gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+XG4gICAgdW5pdCA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG4iLCIoKiBDb21tb246IGNvbW1vbiBkZWZpbml0aW9ucyB1c2VkIGJ5IGJpbmFyeSBwcm90b2NvbCBjb252ZXJ0ZXJzICopXG5cbm9wZW4gQmFzZVxub3BlbiBQcmludGZcbm9wZW4gQmlnYXJyYXlcblxudHlwZSBwb3MgPSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogRXJyb3JzIGFuZCBleGNlcHRpb25zICopXG5cbmV4Y2VwdGlvbiBCdWZmZXJfc2hvcnRcbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbm1vZHVsZSBSZWFkRXJyb3IgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5lZ19pbnQ4XG4gICAgfCBJbnRfY29kZVxuICAgIHwgSW50X292ZXJmbG93XG4gICAgfCBOYXQwX2NvZGVcbiAgICB8IE5hdDBfb3ZlcmZsb3dcbiAgICB8IEludDMyX2NvZGVcbiAgICB8IEludDY0X2NvZGVcbiAgICB8IE5hdGl2ZWludF9jb2RlXG4gICAgfCBVbml0X2NvZGVcbiAgICB8IEJvb2xfY29kZVxuICAgIHwgT3B0aW9uX2NvZGVcbiAgICB8IFN0cmluZ190b29fbG9uZ1xuICAgIHwgVmFyaWFudF90YWdcbiAgICB8IEFycmF5X3Rvb19sb25nXG4gICAgfCBMaXN0X3Rvb19sb25nIG9mXG4gICAgICAgIHsgbGVuIDogaW50XG4gICAgICAgIDsgbWF4X2xlbiA6IGludFxuICAgICAgICB9XG4gICAgfCBIYXNodGJsX3Rvb19sb25nXG4gICAgfCBTdW1fdGFnIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudCBvZiBzdHJpbmdcbiAgICB8IFBvbHlfcmVjX2JvdW5kIG9mIHN0cmluZ1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIG9mIHN0cmluZ1xuICAgIHwgU2lsbHlfdHlwZSBvZiBzdHJpbmdcbiAgICB8IEVtcHR5X3R5cGUgb2Ygc3RyaW5nXG5cbiAgbGV0IHRvX3N0cmluZyA9IGZ1bmN0aW9uXG4gICAgfCBOZWdfaW50OCAtPiBcIk5lZ19pbnQ4XCJcbiAgICB8IEludF9jb2RlIC0+IFwiSW50X2NvZGVcIlxuICAgIHwgSW50X292ZXJmbG93IC0+IFwiSW50X292ZXJmbG93XCJcbiAgICB8IE5hdDBfY29kZSAtPiBcIk5hdDBfY29kZVwiXG4gICAgfCBOYXQwX292ZXJmbG93IC0+IFwiTmF0MF9vdmVyZmxvd1wiXG4gICAgfCBJbnQzMl9jb2RlIC0+IFwiSW50MzJfY29kZVwiXG4gICAgfCBJbnQ2NF9jb2RlIC0+IFwiSW50NjRfY29kZVwiXG4gICAgfCBOYXRpdmVpbnRfY29kZSAtPiBcIk5hdGl2ZWludF9jb2RlXCJcbiAgICB8IFVuaXRfY29kZSAtPiBcIlVuaXRfY29kZVwiXG4gICAgfCBCb29sX2NvZGUgLT4gXCJCb29sX2NvZGVcIlxuICAgIHwgT3B0aW9uX2NvZGUgLT4gXCJPcHRpb25fY29kZVwiXG4gICAgfCBTdHJpbmdfdG9vX2xvbmcgLT4gXCJTdHJpbmdfdG9vX2xvbmdcIlxuICAgIHwgVmFyaWFudF90YWcgLT4gXCJWYXJpYW50X3RhZ1wiXG4gICAgfCBBcnJheV90b29fbG9uZyAtPiBcIkFycmF5X3Rvb19sb25nXCJcbiAgICB8IExpc3RfdG9vX2xvbmcgeyBsZW47IG1heF9sZW4gfSAtPiBzcHJpbnRmIFwiTGlzdF90b29fbG9uZyAvICVkIChtYXggJWQpXCIgbGVuIG1heF9sZW5cbiAgICB8IEhhc2h0YmxfdG9vX2xvbmcgLT4gXCJIYXNodGJsX3Rvb19sb25nXCJcbiAgICB8IFN1bV90YWcgbG9jIC0+IFwiU3VtX3RhZyAvIFwiIF4gbG9jXG4gICAgfCBWYXJpYW50IGxvYyAtPiBcIlZhcmlhbnQgLyBcIiBeIGxvY1xuICAgIHwgUG9seV9yZWNfYm91bmQgbG9jIC0+IFwiUG9seV9yZWNfYm91bmQgLyBcIiBeIGxvY1xuICAgIHwgVmFyaWFudF93cm9uZ190eXBlIGxvYyAtPiBcIlZhcmlhbnRfd3JvbmdfdHlwZSAvIFwiIF4gbG9jXG4gICAgfCBTaWxseV90eXBlIGxvYyAtPiBcIlNpbGx5X3R5cGUgLyBcIiBeIGxvY1xuICAgIHwgRW1wdHlfdHlwZSBsb2MgLT4gXCJFbXB0eV90eXBlIC8gXCIgXiBsb2NcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuZW5kXG5cbmV4Y2VwdGlvbiBSZWFkX2Vycm9yIG9mIFJlYWRFcnJvci50ICogcG9zIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5leGNlcHRpb24gUG9seV9yZWNfd3JpdGUgb2Ygc3RyaW5nXG5leGNlcHRpb24gRW1wdHlfdHlwZSBvZiBzdHJpbmdcblxubGV0IHJhaXNlX3JlYWRfZXJyb3IgZXJyIHBvcyA9IHJhaXNlIChSZWFkX2Vycm9yIChlcnIsIHBvcykpXG5cbmxldCByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgbmFtZSBwb3MgPVxuICByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lLCBwb3MpKVxuOztcblxubGV0IHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIGxvYyA9IGZhaWx3aXRoIChsb2MgXiBcIjogY29uY3VycmVudCBtb2RpZmljYXRpb25cIilcbmxldCBhcnJheV9ib3VuZF9lcnJvciAoKSA9IGludmFsaWRfYXJnIFwiaW5kZXggb3V0IG9mIGJvdW5kc1wiXG5cbigqIEJ1ZmZlcnMgKilcblxudHlwZSBwb3NfcmVmID0gcG9zIHJlZlxudHlwZSBidWYgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5sZXQgY3JlYXRlX2J1ZiBuID0gQXJyYXkxLmNyZWF0ZSBCaWdhcnJheS5jaGFyIGNfbGF5b3V0IG5cbmxldCBidWZfbGVuIGJ1ZiA9IEFycmF5MS5kaW0gYnVmXG5sZXQgYXNzZXJ0X3BvcyBwb3MgPSBpZiBwb3MgPCAwIHRoZW4gYXJyYXlfYm91bmRfZXJyb3IgKClcbmxldCBjaGVja19wb3MgKGJ1ZiA6IGJ1ZikgcG9zID0gaWYgcG9zID49IEFycmF5MS5kaW0gYnVmIHRoZW4gcmFpc2UgQnVmZmVyX3Nob3J0XG5cbmxldCBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHBvc1xuOztcblxubGV0IGNoZWNrX25leHQgKGJ1ZiA6IGJ1ZikgbmV4dCA9IGlmIG5leHQgPiBBcnJheTEuZGltIGJ1ZiB0aGVuIHJhaXNlIEJ1ZmZlcl9zaG9ydFxuXG5sZXQgZ2V0X29wdF9wb3MgfmxvYyB+dmFyID0gZnVuY3Rpb25cbiAgfCBTb21lIHBvcyAtPlxuICAgIGlmIHBvcyA8IDAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIkJpbl9wcm90LkNvbW1vbi4lczogJXMgPCAwXCIgbG9jIHZhcik7XG4gICAgcG9zXG4gIHwgTm9uZSAtPiAwXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gc3JjOmJ1ZlxuICAtPiBkc3RfcG9zOmludFxuICAtPiBkc3Q6YnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9idWZfc3R1YlwiXG5cbmxldCBibGl0X2J1ZiA/c3JjX3BvcyB+c3JjID9kc3RfcG9zIH5kc3QgbGVuID1cbiAgbGV0IGxvYyA9IFwiYmxpdF9idWZcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBBcnJheTEuZGltIHNyY1xuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWY6IHNyY19wb3MgPiBzcmNfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gZHN0XG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1ZjogZHN0X3BvcyA+IGRzdF9sZW5cIilcbiAgZWxzZSBpZiBzcmNfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBzcmNcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J1Zjogc3JjX3BvcyArIGxlbiA+IHNyY19sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBBcnJheTEuZGltIGRzdFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmOiBkc3RfcG9zICsgbGVuID4gZHN0X2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmIH5zcmNfcG9zIH5zcmMgfmRzdF9wb3MgfmRzdCB+bGVuXG47O1xuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IHN0cmluZ1xuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X3N0cmluZ19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9ieXRlc19idWZcbiAgOiAgc3JjX3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9ieXRlc19idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgYmxpdF9zdHJpbmdfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfc3RyaW5nX2J1ZlwiIGluXG4gIGxldCBzcmNfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwic3JjX3Bvc1wiIHNyY19wb3MgaW5cbiAgbGV0IGRzdF9wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJkc3RfcG9zXCIgZHN0X3BvcyBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBsZW4gPCAwXCJcbiAgZWxzZSBpZiBsZW4gPSAwXG4gIHRoZW4gKFxuICAgIGlmIHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gc3RyX2xlblwiO1xuICAgIGlmIGRzdF9wb3MgPiBBcnJheTEuZGltIGJ1ZlxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zID4gYnVmXCIpXG4gIGVsc2UgaWYgc3JjX3BvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgaWYgZHN0X3BvcyArIGxlbiA+IEFycmF5MS5kaW0gYnVmXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9zdHJpbmdfYnVmOiBzcmNfcG9zICsgbGVuID4gYnVmXCJcbiAgZWxzZSB1bnNhZmVfYmxpdF9zdHJpbmdfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxubGV0IGJsaXRfYnl0ZXNfYnVmID9zcmNfcG9zIHN0ciA/ZHN0X3BvcyBidWYgfmxlbiA9XG4gIGxldCBsb2MgPSBcImJsaXRfYnl0ZXNfYnVmXCIgaW5cbiAgbGV0IHNyY19wb3MgPSBnZXRfb3B0X3BvcyB+bG9jIH52YXI6XCJzcmNfcG9zXCIgc3JjX3BvcyBpblxuICBsZXQgZHN0X3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcImRzdF9wb3NcIiBkc3RfcG9zIGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1ZjogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgPiBzdHJfbGVuXCI7XG4gICAgaWYgZHN0X3BvcyA+IEFycmF5MS5kaW0gYnVmXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyA+IGJ1ZlwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9ieXRlc19idWY6IHNyY19wb3MgKyBsZW4gPiBzdHJfbGVuXCJcbiAgZWxzZSBpZiBkc3RfcG9zICsgbGVuID4gQXJyYXkxLmRpbSBidWZcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkJpbl9wcm90LkNvbW1vbi5ibGl0X2J5dGVzX2J1Zjogc3JjX3BvcyArIGxlbiA+IGJ1ZlwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnl0ZXNfYnVmIH5zcmNfcG9zIHN0ciB+ZHN0X3BvcyBidWYgfmxlblxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfYnVmX3N0cmluZ1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9ieXRlc1xuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnl0ZXNcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9ieXRlc19zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBibGl0X2J1Zl9ieXRlcyA/c3JjX3BvcyBidWYgP2RzdF9wb3Mgc3RyIH5sZW4gPVxuICBsZXQgbG9jID0gXCJibGl0X2J1Zl9zdHJpbmdcIiBpblxuICBsZXQgc3JjX3BvcyA9IGdldF9vcHRfcG9zIH5sb2MgfnZhcjpcInNyY19wb3NcIiBzcmNfcG9zIGluXG4gIGxldCBkc3RfcG9zID0gZ2V0X29wdF9wb3MgfmxvYyB+dmFyOlwiZHN0X3Bvc1wiIGRzdF9wb3MgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogbGVuIDwgMFwiXG4gIGVsc2UgaWYgbGVuID0gMFxuICB0aGVuIChcbiAgICBpZiBzcmNfcG9zID4gQXJyYXkxLmRpbSBidWZcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyA+IGJ1Zl9sZW5cIjtcbiAgICBpZiBkc3RfcG9zID4gQnl0ZXMubGVuZ3RoIHN0clxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zID4gc3RyX2xlblwiKVxuICBlbHNlIGlmIHNyY19wb3MgKyBsZW4gPiBBcnJheTEuZGltIGJ1ZlxuICB0aGVuIGludmFsaWRfYXJnIFwiQmluX3Byb3QuQ29tbW9uLmJsaXRfYnVmX3N0cmluZzogc3JjX3BvcyArIGxlbiA+IGJ1Zl9sZW5cIlxuICBlbHNlIGlmIGRzdF9wb3MgKyBsZW4gPiBCeXRlcy5sZW5ndGggc3RyXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCaW5fcHJvdC5Db21tb24uYmxpdF9idWZfc3RyaW5nOiBzcmNfcG9zICsgbGVuID4gc3RyX2xlblwiXG4gIGVsc2UgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zIGJ1ZiB+ZHN0X3BvcyBzdHIgfmxlblxuOztcblxubGV0IGJsaXRfYnVmX3N0cmluZyA9IGJsaXRfYnVmX2J5dGVzXG5cbigqIE1pc2NlbGxhbmVvdXMgKilcblxubGV0IHJlYyBjb3B5X2h0YmxfbGlzdCBodGJsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBodGJsXG4gIHwgKGssIHYpIDo6IHJlc3QgLT5cbiAgICBDYW1sLkhhc2h0YmwuYWRkIGh0YmwgayB2O1xuICAgIGNvcHlfaHRibF9saXN0IGh0YmwgcmVzdFxuOztcblxuKCogQmlnYXJyYXlzICopXG5cbnR5cGUgdmVjMzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjNjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkxLnRcbnR5cGUgdmVjID0gdmVjNjRcbnR5cGUgbWF0MzIgPSAoZmxvYXQsIGZsb2F0MzJfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0NjQgPSAoZmxvYXQsIGZsb2F0NjRfZWx0LCBmb3J0cmFuX2xheW91dCkgQXJyYXkyLnRcbnR5cGUgbWF0ID0gbWF0NjRcblxuKCogRmxvYXQgYXJyYXlzICopXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0X2FycmF5X2J1ZlxuICA6ICBzcmNfcG9zOmludFxuICAtPiBmbG9hdCBhcnJheVxuICAtPiBkc3RfcG9zOmludFxuICAtPiBidWZcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2Zsb2F0X2FycmF5X2J1Zl9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2J1Zl9mbG9hdF9hcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXQgYXJyYXlcbiAgLT4gbGVuOmludFxuICAtPiB1bml0XG4gID0gXCJiaW5fcHJvdF9ibGl0X2J1Zl9mbG9hdF9hcnJheV9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zsb2F0YXJyYXlfYnVmXG4gIDogIHNyY19wb3M6aW50XG4gIC0+IGZsb2F0YXJyYXlcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gYnVmXG4gIC0+IGxlbjppbnRcbiAgLT4gdW5pdFxuICA9IFwiYmluX3Byb3RfYmxpdF9mbG9hdF9hcnJheV9idWZfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdF9idWZfZmxvYXRhcnJheVxuICA6ICBzcmNfcG9zOmludFxuICAtPiBidWZcbiAgLT4gZHN0X3BvczppbnRcbiAgLT4gZmxvYXRhcnJheVxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpbl9wcm90X2JsaXRfYnVmX2Zsb2F0X2FycmF5X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuKCoqKilcblxubGV0ICggKyApID0gKCArIClcbiIsIigqIE5hdDA6IG5hdHVyYWwgbnVtYmVycyAoaW5jbHVkaW5nIHplcm8pICopXG5cbnR5cGUgdCA9IGludFxuXG5sZXQgb2ZfaW50IG4gPVxuICBpZiBuIDwgMCB0aGVuIGZhaWx3aXRoIFwiQmluX3Byb3QuTmF0MC5vZl9pbnQ6IG4gPCAwXCI7XG4gIG5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbiIsIigqIFdyaXRlX21sOiB3cml0aW5nIHZhbHVlcyB0byB0aGUgYmluYXJ5IHByb3RvY29sIHVzaW5nIChtb3N0bHkpIE9DYW1sLiAqKVxuXG4oKiBOb3RlOiB0aGUgY29kZSBpcyB0aGlzIGZpbGUgaXMgY2FyZWZ1bGx5IHdyaXR0ZW4gdG8gYXZvaWQgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuIFdoZW5cbiAgIHRvdWNoaW5nIHRoaXMgY29kZSwgYmUgc3VyZSB0byBydW4gdGhlIGJlbmNobWFya3MgdG8gY2hlY2sgZm9yIHJlZ3Jlc3Npb25zLiAqKVxuXG5vcGVuIEJpZ2FycmF5XG5vcGVuIENvbW1vblxuXG50eXBlICdhIHdyaXRlciA9IGJ1ZiAtPiBwb3M6cG9zIC0+ICdhIC0+IHBvc1xudHlwZSAoJ2EsICdiKSB3cml0ZXIxID0gJ2Egd3JpdGVyIC0+ICdiIHdyaXRlclxudHlwZSAoJ2EsICdiLCAnYykgd3JpdGVyMiA9ICdhIHdyaXRlciAtPiAoJ2IsICdjKSB3cml0ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgd3JpdGVyMyA9ICdhIHdyaXRlciAtPiAoJ2IsICdjLCAnZCkgd3JpdGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnVmIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OCA6IGJ1ZiAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0MTYgOiBidWYgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfc2V0NjQgOiBidWYgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIGJzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIGJzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuKCokIG9wZW4gQmluX3Byb3RfY2luYXBzICQqKVxuXG5sZXQgY29kZV9ORUdfSU5UOCA9ICgqJCBDb2RlLmNoYXIgTkVHX0lOVDggKikgJ1xceGZmJyAoKiQqKVxuXG5sZXQgY29kZV9JTlQxNiA9ICgqJCBDb2RlLmNoYXIgSU5UMTYgKikgJ1xceGZlJyAoKiQqKVxuXG5sZXQgY29kZV9JTlQzMiA9ICgqJCBDb2RlLmNoYXIgSU5UMzIgKikgJ1xceGZkJyAoKiQqKVxuXG5sZXQgY29kZV9JTlQ2NCA9ICgqJCBDb2RlLmNoYXIgSU5UNjQgKikgJ1xceGZjJyAoKiQqKVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcbmxldCBhcmNoX2JpZ19lbmRpYW4gPSBTeXMuYmlnX2VuZGlhblxuXG5sZXQgdW5zYWZlX3NldDE2YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MTZcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0MzJcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiB1bnNhZmVfc2V0NjRcbiAgZWxzZSBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG47O1xuXG5sZXQgdW5zYWZlX3NldDE2bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQxNiBidWYgcG9zIChic3dhcDE2IHgpXG4gIGVsc2UgdW5zYWZlX3NldDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQzMiBidWYgcG9zIChic3dhcDMyIHgpXG4gIGVsc2UgdW5zYWZlX3NldDMyXG47O1xuXG5sZXQgdW5zYWZlX3NldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW5cbiAgdGhlbiBmdW4gYnVmIHBvcyB4IC0+IHVuc2FmZV9zZXQ2NCBidWYgcG9zIChic3dhcDY0IHgpXG4gIGVsc2UgdW5zYWZlX3NldDY0XG47O1xuXG5sZXQgYmluX3dyaXRlX3VuaXQgYnVmIH5wb3MgKCkgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyAnXFwwMDAnO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgYiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBjaGVja19wb3MgYnVmIHBvcztcbiAgdW5zYWZlX3NldCBidWYgcG9zIChpZiBiIHRoZW4gJ1xcMDAxJyBlbHNlICdcXDAwMCcpO1xuICBwb3MgKyAxXG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuID1cbiAgY2hlY2tfcG9zIGJ1ZiBwb3M7XG4gIHVuc2FmZV9zZXQ4IGJ1ZiBwb3MgbjtcbiAgcG9zICsgMVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX05FR19JTlQ4O1xuICB1bnNhZmVfc2V0OCBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbjs7XG5cbmxldCBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgbiA9XG4gIGxldCBuZXh0ID0gcG9zICsgMyBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgY29kZV9JTlQxNjtcbiAgdW5zYWZlX3NldDE2bGUgYnVmIChwb3MgKyAxKSBuO1xuICBuZXh0XG47O1xuXG5sZXQgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIG4gPVxuICBsZXQgbmV4dCA9IHBvcyArIDUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldCBidWYgcG9zIGNvZGVfSU5UMzI7XG4gIHVuc2FmZV9zZXQzMmxlIGJ1ZiAocG9zICsgMSkgbjtcbiAgbmV4dFxuW0BAaW5saW5lXVxuOztcblxubGV0IGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyBuID1cbiAgbGV0IG5leHQgPSBwb3MgKyA5IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQgYnVmIHBvcyBjb2RlX0lOVDY0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgKHBvcyArIDEpIG47XG4gIG5leHRcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfY2hhciBidWYgfnBvcyBjID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0IGJ1ZiBwb3MgYztcbiAgcG9zICsgMVxuOztcblxubGV0IGJpbl93cml0ZV9pbnQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBpZiBuID49IDBcbiAgdGhlblxuICAgIGlmIG4gPCAweDAwMDAwMDgwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX3NtYWxsX2ludCBidWYgcG9zIG5cbiAgICBlbHNlIGlmIG4gPCAweDAwMDA4MDAwXG4gICAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICAgIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAxIGxzbCAzMVxuICAgIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwMDA4MFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfbmVnX2ludDggYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIGFsbF9iaW5fd3JpdGVfaW50MTYgYnVmIHBvcyBuXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA8IC0oMSBsc2wgMzEpXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbilcbiAgZWxzZSBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKEludDMyLm9mX2ludCBuKVxuOztcblxubGV0IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIG5hdDAgPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gYWxsX2Jpbl93cml0ZV9zbWFsbF9pbnQgYnVmIHBvcyBuXG4gIGVsc2UgaWYgbiA8IDB4MDAwMTAwMDBcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDE2IGJ1ZiBwb3MgblxuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gMSBsc2wgMzJcbiAgdGhlbiBhbGxfYmluX3dyaXRlX2ludDY0IGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKVxuICBlbHNlIGFsbF9iaW5fd3JpdGVfaW50MzIgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX3N0cmluZyBidWYgfnBvcyBzdHIgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBuZXdfcG9zID0gYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbiBpblxuICBsZXQgbmV4dCA9IG5ld19wb3MgKyBsZW4gaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgKCogVE9ETzogb3B0aW1pemUgZm9yIHNtYWxsIHN0cmluZ3MgKilcbiAgdW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3BvczpuZXdfcG9zIGJ1ZiB+bGVuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2J5dGVzIGJ1ZiB+cG9zIHN0ciA9XG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggc3RyIGluXG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBsZXQgbmV3X3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IG5leHQgPSBuZXdfcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICgqIFRPRE86IG9wdGltaXplIGZvciBzbWFsbCBieXRlcyAqKVxuICB1bnNhZmVfYmxpdF9ieXRlc19idWYgfnNyY19wb3M6MCBzdHIgfmRzdF9wb3M6bmV3X3BvcyBidWYgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5iaXRzX29mX2Zsb2F0IHgpO1xuICBuZXh0XG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT4gYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmVdIGJ1ZiB+cG9zIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbFxuICAgICAgdGhlbiAoXG4gICAgICAgIGFzc2VydF9wb3MgcG9zO1xuICAgICAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgbilcbiAgICAgIGVsc2UgYmluX3dyaXRlX2ludCBidWYgfnBvcyAoSW50MzIudG9faW50IG4pXG47O1xuXG5sZXQgYmluX3dyaXRlX2ludDY0IGJ1ZiB+cG9zIG4gPVxuICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQ2NCBidWYgcG9zIG4pXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbiAgZWxzZSBpZiBuID49IDB4MDAwMDgwMDBMIHx8IG4gPCAtMHgwMDAwODAwMExcbiAgdGhlbiAoXG4gICAgYXNzZXJ0X3BvcyBwb3M7XG4gICAgYWxsX2Jpbl93cml0ZV9pbnQzMiBidWYgcG9zIChJbnQ2NC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChJbnQ2NC50b19pbnQgbilcbltAQGlubGluZV1cbjs7XG5cbmxldCBiaW5fd3JpdGVfbmF0aXZlaW50IGJ1ZiB+cG9zIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICAmJiAobiA+PSAoKiAweDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMVxuICAgICAgfHwgbiA8ICgqIC0weDgwMDAwMDAwbiAqKSBOYXRpdmVpbnQubmVnIChOYXRpdmVpbnQuc2hpZnRfbGVmdCAxbiAzMSkpXG4gIHRoZW4gKFxuICAgIGFzc2VydF9wb3MgcG9zO1xuICAgIGFsbF9iaW5fd3JpdGVfaW50NjQgYnVmIHBvcyAoSW50NjQub2ZfbmF0aXZlaW50IG4pKVxuICBlbHNlIGlmICgobm90IGFyY2hfc2l4dHlmb3VyKSAmJiBuID49IDB4ODAwMG4pIHx8IG4gPCAtMHg4MDAwblxuICB0aGVuIChcbiAgICBhc3NlcnRfcG9zIHBvcztcbiAgICBhbGxfYmluX3dyaXRlX2ludDMyIGJ1ZiBwb3MgKE5hdGl2ZWludC50b19pbnQzMiBuKSlcbiAgZWxzZSBiaW5fd3JpdGVfaW50IGJ1ZiB+cG9zIChOYXRpdmVpbnQudG9faW50IG4pXG5bQEBpbmxpbmVdXG47O1xuXG5sZXQgYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgciA9IGJpbl93cml0ZV9lbCBidWYgfnBvcyAhclxuXG5sZXQgYmluX3dyaXRlX2xhenkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGx2ID1cbiAgbGV0IHYgPSBMYXp5LmZvcmNlIGx2IGluXG4gIGJpbl93cml0ZV9lbCBidWYgfnBvcyB2XG47O1xuXG5sZXQgYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYmluX3dyaXRlX2Jvb2wgYnVmIH5wb3MgZmFsc2VcbiAgfCBTb21lIHYgLT5cbiAgICBsZXQgbmV4dCA9IGJpbl93cml0ZV9ib29sIGJ1ZiB+cG9zIHRydWUgaW5cbiAgICBiaW5fd3JpdGVfZWwgYnVmIH5wb3M6bmV4dCB2XG47O1xuXG5sZXQgYmluX3dyaXRlX3BhaXIgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgKGEsIGIpID1cbiAgbGV0IG5leHQgPSBiaW5fd3JpdGVfYSBidWYgfnBvcyBhIGluXG4gIGJpbl93cml0ZV9iIGJ1ZiB+cG9zOm5leHQgYlxuOztcblxubGV0IGJpbl93cml0ZV90cmlwbGUgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYmluX3dyaXRlX2MgYnVmIH5wb3MgKGEsIGIsIGMpID1cbiAgbGV0IG5leHQxID0gYmluX3dyaXRlX2EgYnVmIH5wb3MgYSBpblxuICBsZXQgbmV4dDIgPSBiaW5fd3JpdGVfYiBidWYgfnBvczpuZXh0MSBiIGluXG4gIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOm5leHQyIGNcbjs7XG5cbmxldCBiaW5fd3JpdGVfbGlzdCA9XG4gIGxldCByZWMgbG9vcCB+YmluX3dyaXRlX2VsIH5idWYgfmVsc19wb3MgbHN0ID1cbiAgICBtYXRjaCBsc3Qgd2l0aFxuICAgIHwgW10gLT4gZWxzX3Bvc1xuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9lbCBidWYgfnBvczplbHNfcG9zIGhkIGluXG4gICAgICBsb29wIH5iaW5fd3JpdGVfZWwgfmJ1ZiB+ZWxzX3BvczpuZXdfZWxzX3BvcyB0bFxuICBpblxuICBmdW4gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGxzdCAtPlxuICAgIGxldCBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKExpc3QubGVuZ3RoIGxzdCkgaW5cbiAgICBsZXQgZWxzX3BvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIGxlbiBpblxuICAgIGxvb3AgfmJpbl93cml0ZV9lbCB+YnVmIH5lbHNfcG9zIGxzdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBiaW5fd3JpdGVfZmxvYXRfYXJyYXlfZ2VuIH5sZW5ndGggfmJsaXQgYnVmIH5wb3MgYSA9XG4gIGxldCBsZW4gPSBsZW5ndGggYSBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4gaW5cbiAgbGV0IHNpemUgPSBsZW4gKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBibGl0IH5zcmNfcG9zOjAgYSB+ZHN0X3Bvczpwb3MgYnVmIH5sZW47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXRhcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6RmxvYXQuQXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRhcnJheV9idWZcbiAgICBidWZcbiAgICB+cG9zXG4gICAgYVxuOztcblxubGV0IGJpbl93cml0ZV9mbG9hdF9hcnJheSBidWYgfnBvcyBhID1cbiAgYmluX3dyaXRlX2Zsb2F0X2FycmF5X2dlblxuICAgIH5sZW5ndGg6QXJyYXkubGVuZ3RoXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfZmxvYXRfYXJyYXlfYnVmXG4gICAgYnVmXG4gICAgfnBvc1xuICAgIGFcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zIH5uIGFyID1cbiAgbGV0IGVsc19wb3NfcmVmID0gcmVmIGVsc19wb3MgaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgZWxzX3Bvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFlbHNfcG9zX3JlZiAoQXJyYXkudW5zYWZlX2dldCBhciBpKVxuICBkb25lO1xuICAhZWxzX3Bvc19yZWZcbjs7XG5cbmxldCBiaW5fd3JpdGVfYXJyYXkgKHR5cGUgYSkgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIGFyID1cbiAgaWYgKE9iai5tYWdpYyAoYmluX3dyaXRlX2VsIDogYSB3cml0ZXIpIDogZmxvYXQgd3JpdGVyKSA9PSBiaW5fd3JpdGVfZmxvYXRcbiAgdGhlbiBiaW5fd3JpdGVfZmxvYXRfYXJyYXkgYnVmIH5wb3MgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCBwbiA9IE5hdDAudW5zYWZlX29mX2ludCBuIGluXG4gICAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbiBpblxuICAgIGJpbl93cml0ZV9hcnJheV9sb29wIGJpbl93cml0ZV9lbCBidWYgfmVsc19wb3Mgfm4gYXIpXG47O1xuXG5sZXQgYmluX3dyaXRlX2hhc2h0YmwgYmluX3dyaXRlX2tleSBiaW5fd3JpdGVfdmFsIGJ1ZiB+cG9zIGh0YmwgPVxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IGVsc19wb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgZWxzX3BvcyA9XG4gICAgaW5jciBjbnRfcmVmO1xuICAgIGxldCBuZXdfZWxzX3BvcyA9IGJpbl93cml0ZV9rZXkgYnVmIH5wb3M6ZWxzX3BvcyBrIGluXG4gICAgYmluX3dyaXRlX3ZhbCBidWYgfnBvczpuZXdfZWxzX3BvcyB2XG4gIGluXG4gIGxldCByZXNfcG9zID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIGVsc19wb3MgaW5cbiAgaWYgIWNudF9yZWYgPD4gbGVuIHRoZW4gcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb24gXCJiaW5fd3JpdGVfaGFzaHRibFwiO1xuICByZXNfcG9zXG47O1xuXG5leHRlcm5hbCBidWZfb2ZfdmVjMzIgOiB2ZWMzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfdmVjNjQgOiB2ZWM2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0MzIgOiBtYXQzMiAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBidWZfb2ZfbWF0NjQgOiBtYXQ2NCAtPiBidWYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogNCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWMzMiB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgYnVmIH5wb3MgdiA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHYgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBzaXplID0gbGVuICogOCBpblxuICBsZXQgbmV4dCA9IHBvcyArIHNpemUgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX2JsaXRfYnVmIH5zcmM6KGJ1Zl9vZl92ZWM2NCB2KSB+c3JjX3BvczowIH5kc3Q6YnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfdmVjID0gYmluX3dyaXRlX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgYnVmIH5wb3MgbSA9XG4gIGxldCBsZW4xID0gQXJyYXkyLmRpbTEgbSBpblxuICBsZXQgbGVuMiA9IEFycmF5Mi5kaW0yIG0gaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMSkgaW5cbiAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIChOYXQwLnVuc2FmZV9vZl9pbnQgbGVuMikgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOihidWZfb2ZfbWF0MzIgbSkgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjpzaXplO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zIG0gPVxuICBsZXQgbGVuMSA9IEFycmF5Mi5kaW0xIG0gaW5cbiAgbGV0IGxlbjIgPSBBcnJheTIuZGltMiBtIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjEpIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbjIpIGluXG4gIGxldCBzaXplID0gbGVuMSAqIGxlbjIgKiA4IGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfYmxpdF9idWYgfnNyYzooYnVmX29mX21hdDY0IG0pIH5zcmNfcG9zOjAgfmRzdDpidWYgfmRzdF9wb3M6cG9zIH5sZW46c2l6ZTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9tYXQgPSBiaW5fd3JpdGVfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl93cml0ZV9iaWdzdHJpbmcgYnVmIH5wb3MgcyA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHMgaW5cbiAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MCBidWYgfnBvcyBwbGVuIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOnMgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3MgfmxlbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV92YXJpYW50X2ludCBidWYgfnBvcyB4ID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJsZSBidWYgcG9zIChJbnQzMi5sb2dvciAoSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IHgpIDEpIDFsKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfOGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGNoZWNrX3BvcyBidWYgcG9zO1xuICB1bnNhZmVfc2V0OCBidWYgcG9zIG47XG4gIHBvcyArIDFcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50XzE2Yml0IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQxNmxlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9pbnRfMzJiaXQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDMybGUgYnVmIHBvcyAoSW50MzIub2ZfaW50IG4pO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2ludF82NGJpdCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIChJbnQ2NC5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfaW50NjRfYml0cyBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0NjRsZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazE2X2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MTZiZSBidWYgcG9zIG47XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludCBidWYgfnBvcyBuID1cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICB1bnNhZmVfc2V0MzJiZSBidWYgcG9zIChJbnQzMi5vZl9pbnQgbik7XG4gIG5leHRcbjs7XG5cbmxldCBiaW5fd3JpdGVfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQzMmJlIGJ1ZiBwb3MgbjtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50IGJ1ZiB+cG9zIG4gPVxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHVuc2FmZV9zZXQ2NGJlIGJ1ZiBwb3MgKEludDY0Lm9mX2ludCBuKTtcbiAgbmV4dFxuOztcblxubGV0IGJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3MgbiA9XG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgdW5zYWZlX3NldDY0YmUgYnVmIHBvcyBuO1xuICBuZXh0XG47O1xuXG5sZXQgYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCBiaW5fd3JpdGVfZWwgYnVmIH5wb3MgYXIgPVxuICBiaW5fd3JpdGVfYXJyYXlfbG9vcCBiaW5fd3JpdGVfZWwgYnVmIH5lbHNfcG9zOnBvcyB+bjooQXJyYXkubGVuZ3RoIGFyKSBhclxuOztcblxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQzMiA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3N0cmluZ19nZXQ2NCA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NHVcIlxuXG5sZXQgYmluX3dyaXRlX21kNSBidWYgfnBvcyB4ID1cbiAgbGV0IHggPSBNZDVfbGliLnRvX2JpbmFyeSB4IGluXG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCB4ID0gMTYpO1xuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAxNiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuIChcbiAgICBsZXQgYSA9IHVuc2FmZV9zdHJpbmdfZ2V0NjQgeCAwIGluXG4gICAgbGV0IGIgPSB1bnNhZmVfc3RyaW5nX2dldDY0IHggOCBpblxuICAgIHVuc2FmZV9zZXQ2NCBidWYgcG9zIGE7XG4gICAgdW5zYWZlX3NldDY0IGJ1ZiAocG9zICsgOCkgYilcbiAgZWxzZSAoXG4gICAgbGV0IGEgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMCBpblxuICAgIGxldCBiID0gdW5zYWZlX3N0cmluZ19nZXQzMiB4IDQgaW5cbiAgICBsZXQgYyA9IHVuc2FmZV9zdHJpbmdfZ2V0MzIgeCA4IGluXG4gICAgbGV0IGQgPSB1bnNhZmVfc3RyaW5nX2dldDMyIHggMTIgaW5cbiAgICB1bnNhZmVfc2V0MzIgYnVmIHBvcyBhO1xuICAgIHVuc2FmZV9zZXQzMiBidWYgKHBvcyArIDQpIGI7XG4gICAgdW5zYWZlX3NldDMyIGJ1ZiAocG9zICsgOCkgYztcbiAgICB1bnNhZmVfc2V0MzIgYnVmIChwb3MgKyAxMikgZCk7XG4gIG5leHRcbjs7XG4iLCIoKiBSZWFkX21sOiByZWFkaW5nIHZhbHVlcyBmcm9tIHRoZSBiaW5hcnkgcHJvdG9jb2wgdXNpbmcgKG1vc3RseSkgT0NhbWwuICopXG5cbigqIE5vdGU6IHRoZSBjb2RlIGlzIHRoaXMgZmlsZSBpcyBjYXJlZnVsbHkgd3JpdHRlbiB0byBhdm9pZCB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4gV2hlblxuICAgdG91Y2hpbmcgdGhpcyBjb2RlLCBiZSBzdXJlIHRvIHJ1biB0aGUgYmVuY2htYXJrcyB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuICopXG5cbm9wZW4gQmlnYXJyYXlcbm9wZW4gQ29tbW9uXG5cbnR5cGUgJ2EgcmVhZGVyID0gYnVmIC0+IHBvc19yZWY6cG9zX3JlZiAtPiAnYVxudHlwZSAoJ2EsICdiKSByZWFkZXIxID0gJ2EgcmVhZGVyIC0+ICdiIHJlYWRlclxudHlwZSAoJ2EsICdiLCAnYykgcmVhZGVyMiA9ICdhIHJlYWRlciAtPiAoJ2IsICdjKSByZWFkZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgcmVhZGVyMyA9ICdhIHJlYWRlciAtPiAoJ2IsICdjLCAnZCkgcmVhZGVyMlxuXG5leHRlcm5hbCB1bnNhZmVfZ2V0IDogYnVmIC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzFcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDggOiBidWYgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcblxubGV0IHVuc2FmZV9nZXQ4X3NpZ25lZCBidWYgcG9zID1cbiAgbGV0IGMgPSB1bnNhZmVfZ2V0OCBidWYgcG9zIGluXG4gIGlmIGMgPj0gMTI4IHRoZW4gYyAtIDI1NiBlbHNlIGNcbjs7XG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcyAkKilcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gU3lzLmJpZ19lbmRpYW5cbmxldCBtYXhfaW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDMyID0gaWYgYXJjaF9zaXh0eWZvdXIgdGhlbiBJbnQzMi5tYXhfaW50IGVsc2UgSW50MzIub2ZfaW50IG1pbl9pbnRcbmxldCBtYXhfaW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1heF9pbnRcbmxldCBtaW5faW50X2ludDY0ID0gSW50NjQub2ZfaW50IG1pbl9pbnRcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBzYWZlX2ludF9vZl9pbnQzMiBwb3MgeCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSBpZiB4ID49IG1pbl9pbnRfaW50MzIgJiYgeCA8PSBtYXhfaW50X2ludDMyXG4gIHRoZW4gSW50MzIudG9faW50IHhcbiAgZWxzZSByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5JbnRfb3ZlcmZsb3cgcG9zXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHNhZmVfaW50X29mX2ludDY0IHBvcyB4ID1cbiAgaWYgeCA+PSBtaW5faW50X2ludDY0ICYmIHggPD0gbWF4X2ludF9pbnQ2NFxuICB0aGVuIEludDY0LnRvX2ludCB4XG4gIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X292ZXJmbG93IHBvc1xuOztcblxubGV0IHNhZmVfbmF0aXZlaW50X29mX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gX3BvcyB4IC0+IEludDY0LnRvX25hdGl2ZWludCB4XG4gIGVsc2VcbiAgICBmdW4gW0BpbmxpbmUgYWx3YXlzXSBwb3MgeCAtPlxuICAgICAgaWYgeCA+PSBJbnQ2NC5vZl9uYXRpdmVpbnQgTmF0aXZlaW50Lm1pbl9pbnRcbiAgICAgICYmIHggPD0gSW50NjQub2ZfbmF0aXZlaW50IE5hdGl2ZWludC5tYXhfaW50XG4gICAgICB0aGVuIEludDY0LnRvX25hdGl2ZWludCB4XG4gICAgICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3Ncbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9nZXQxNiA6IGJ1ZiAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXQzMiA6IGJ1ZiAtPiBpbnQgLT4gaW50MzIgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDY0IDogYnVmIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5leHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgYnN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgYnN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgdW5zYWZlX2dldDE2YmVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MTYgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMyYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0MzIgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0YmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfZ2V0NjQgZWxzZSBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MTYgYnVmIHBvcyB8PiBic3dhcDE2IGVsc2UgdW5zYWZlX2dldDE2XG47O1xuXG5sZXQgdW5zYWZlX2dldDMybGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0MzIgYnVmIHBvcyB8PiBic3dhcDMyIGVsc2UgdW5zYWZlX2dldDMyXG47O1xuXG5sZXQgdW5zYWZlX2dldDY0bGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiBmdW4gYnVmIHBvcyAtPiB1bnNhZmVfZ2V0NjQgYnVmIHBvcyB8PiBic3dhcDY0IGVsc2UgdW5zYWZlX2dldDY0XG47O1xuXG5sZXQgdW5zYWZlX2dldDE2bGVfc2lnbmVkIGJ1ZiBwb3MgPVxuICBsZXQgeCA9IHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MgaW5cbiAgaWYgeCA+IDMyNzY3IHRoZW4geCAtIDY1NTM2IGVsc2UgeFxuOztcblxubGV0IGJpbl9yZWFkX3VuaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgaWYgdW5zYWZlX2dldCBidWYgcG9zID0gJ1xcMDAwJ1xuICB0aGVuIHBvc19yZWYgOj0gcG9zICsgMVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLlVuaXRfY29kZSBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9ib29sIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xcMDAwJyAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBmYWxzZVxuICB8ICdcXDAwMScgLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgdHJ1ZVxuICB8IF8gLT4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQm9vbF9jb2RlIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDEgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0OF9zaWduZWQgYnVmIHBvcyBpblxuICBpZiBuID49IDAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OZWdfaW50OCAhcG9zX3JlZjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIENhbiBiZSBhYm92ZSBuZXh0IGxpbmUgKG5vIGVycm9ycyBwb3NzaWJsZSB3aXRoIDE2Yml0KS5cbiAgICAgVGhpcyBzaG91bGQgaW1wcm92ZSB0aGUgZ2VuZXJhdGVkIGNvZGUuICopXG4gIHVuc2FmZV9nZXQxNmxlX3NpZ25lZCBidWYgcG9zXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgdW5zYWZlX2dldDMybGUgYnVmIHBvc1xuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICAoKiBObyBlcnJvciBwb3NzaWJsZSBlaXRoZXIuICopXG4gIHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3Ncbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDMyX2FzX2ludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX2ludF9vZl9pbnQzMiAhcG9zX3JlZiBuIGluXG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgblxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zID1cbiAgbGV0IG5leHQgPSBwb3MgKyA4IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBsZXQgbiA9IHNhZmVfaW50X29mX2ludDY0ICFwb3NfcmVmIG4gaW5cbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBJbnQ2NC5vZl9pbnQzMiBuXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgTmF0aXZlaW50Lm9mX2ludDMyIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX2ludDY0X2FzX25hdGl2ZWludCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgbGV0IG4gPSBzYWZlX25hdGl2ZWludF9vZl9pbnQ2NCBwb3MgbiBpblxuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG5cbjs7XG5cbmxldCBzYWZlX2Jpbl9yZWFkX25hdDBfMTYgYnVmIH5wb3NfcmVmIH5wb3MgPVxuICBsZXQgbmV4dCA9IHBvcyArIDIgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBOYXQwLnVuc2FmZV9vZl9pbnQgKHVuc2FmZV9nZXQxNmxlX3Vuc2lnbmVkIGJ1ZiBwb3MpXG47O1xuXG5sZXQgc2FmZV9iaW5fcmVhZF9uYXQwXzMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiAoXG4gICAgbGV0IG1hc2tfMzJiaXQgPSBJbnQ2NC50b19pbnQgMHhmZmZmX2ZmZmZMIGluXG4gICAgZnVuIGJ1ZiB+cG9zX3JlZiB+cG9zIC0+XG4gICAgICBsZXQgbmV4dCA9IHBvcyArIDQgaW5cbiAgICAgIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBwb3NfcmVmIDo9IG5leHQ7XG4gICAgICBsZXQgbiA9IEludDMyLnRvX2ludCAodW5zYWZlX2dldDMybGUgYnVmIHBvcykgaW5cbiAgICAgIGlmIG4gPj0gMFxuICAgICAgdGhlbiBOYXQwLnVuc2FmZV9vZl9pbnQgblxuICAgICAgZWxzZVxuICAgICAgICAoKiBFcmFzZSB0aGUgdXBwZXIgYml0cyB0aGF0IHdlcmUgc2V0IHRvIDEgZHVyaW5nIHRoZSBpbnQzMiAtPiBpbnQgY29udmVyc2lvbi4gKilcbiAgICAgICAgTmF0MC51bnNhZmVfb2ZfaW50IChuIGxhbmQgbWFza18zMmJpdCkpXG4gIGVsc2VcbiAgICBmdW4gYnVmIH5wb3NfcmVmIH5wb3MgLT5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgICAgIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICAgICAgaWYgbiA+PSAwbCAmJiBuIDw9IG1heF9pbnRfaW50MzJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbiA9IE5hdDAudW5zYWZlX29mX2ludCAoSW50MzIudG9faW50IG4pIGluXG4gICAgICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICAgICAgbilcbiAgICAgIGVsc2UgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuTmF0MF9vdmVyZmxvdyAhcG9zX3JlZlxuOztcblxubGV0IHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvcyA9XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGxlIGJ1ZiBwb3MgaW5cbiAgaWYgbiA+PSAwTCAmJiBuIDw9IG1heF9pbnRfaW50NjRcbiAgdGhlbiAoXG4gICAgbGV0IG4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgKEludDY0LnRvX2ludCBuKSBpblxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBuKVxuICBlbHNlIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdDBfb3ZlcmZsb3cgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXQwLnVuc2FmZV9vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uYXQwXzE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMzIgKiknXFx4ZmQnKCokKikgLT5cbiAgICBzYWZlX2Jpbl9yZWFkX25hdDBfMzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfbmF0MF82NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgICBlbHNlXG4gICAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX292ZXJmbG93IHBvc1xuICB8IF8gLT5cbiAgICByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5OYXQwX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2J5dGVzIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdGFydF9wb3MgPSAhcG9zX3JlZiBpblxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgaWYgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuU3RyaW5nX3Rvb19sb25nIHN0YXJ0X3BvcztcbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfYnVmX2J5dGVzIH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBzdHIgfmxlbjtcbiAgc3RyXG47O1xuXG5sZXQgYmluX3JlYWRfc3RyaW5nIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBzdHIgPSBiaW5fcmVhZF9ieXRlcyBidWYgfnBvc19yZWYgaW5cbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF9jaGFyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgdW5zYWZlX2dldCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBDaGFyLmNvZGUgY2hcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSAtPlxuICAgIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW5cbiAgICAgIHNhZmVfYmluX3JlYWRfaW50NjRfYXNfaW50IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKVxuICAgIGVsc2VcbiAgICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludF9vdmVyZmxvdyBwb3NcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50X2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2Zsb2F0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gICgqIE5vIGVycm9yIHBvc3NpYmxlIGVpdGhlci4gKilcbiAgSW50NjQuZmxvYXRfb2ZfYml0cyAodW5zYWZlX2dldDY0bGUgYnVmIHBvcylcbjs7XG5cbmxldCBiaW5fcmVhZF9pbnQzMiBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gc2FmZV9nZXRfcG9zIGJ1ZiBwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBtYXRjaCB1bnNhZmVfZ2V0IGJ1ZiBwb3Mgd2l0aFxuICB8ICdcXHgwMCcuLidcXHg3ZicgYXMgY2ggLT5cbiAgICBwb3NfcmVmIDo9IHBvcyArIDE7XG4gICAgSW50MzIub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9uZWdfaW50OCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQxNiAqKSdcXHhmZScoKiQqKSAtPlxuICAgIEludDMyLm9mX2ludCAoc2FmZV9iaW5fcmVhZF9pbnQxNiBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSkpXG4gIHwgKCokIENvZGUuY2hhciBJTlQzMiAqKSdcXHhmZCcoKiQqKSAtPlxuICAgIHNhZmVfYmluX3JlYWRfaW50MzIgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLkludDMyX2NvZGUgcG9zXG5bQEBvY2FtbGZvcm1hdCBcImRpc2FibGVcIl1cblxubGV0IGJpbl9yZWFkX2ludDY0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBJbnQ2NC5vZl9pbnQgKENoYXIuY29kZSBjaClcbiAgfCAoKiQgQ29kZS5jaGFyIE5FR19JTlQ4ICopJ1xceGZmJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX25lZ19pbnQ4IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDE2ICopJ1xceGZlJygqJCopIC0+XG4gICAgSW50NjQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDY0ICopJ1xceGZjJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NCBidWYgfnBvc19yZWYgfnBvczoocG9zICsgMSlcbiAgfCBfIC0+XG4gICAgcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuSW50NjRfY29kZSBwb3NcbltAQG9jYW1sZm9ybWF0IFwiZGlzYWJsZVwiXVxuXG5sZXQgYmluX3JlYWRfbmF0aXZlaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSBzYWZlX2dldF9wb3MgYnVmIHBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIG1hdGNoIHVuc2FmZV9nZXQgYnVmIHBvcyB3aXRoXG4gIHwgJ1xceDAwJy4uJ1xceDdmJyBhcyBjaCAtPlxuICAgIHBvc19yZWYgOj0gcG9zICsgMTtcbiAgICBOYXRpdmVpbnQub2ZfaW50IChDaGFyLmNvZGUgY2gpXG4gIHwgKCokIENvZGUuY2hhciBORUdfSU5UOCAqKSdcXHhmZicoKiQqKSAtPlxuICAgIE5hdGl2ZWludC5vZl9pbnQgKHNhZmVfYmluX3JlYWRfbmVnX2ludDggYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpKVxuICB8ICgqJCBDb2RlLmNoYXIgSU5UMTYgKiknXFx4ZmUnKCokKikgLT5cbiAgICBOYXRpdmVpbnQub2ZfaW50IChzYWZlX2Jpbl9yZWFkX2ludDE2IGJ1ZiB+cG9zX3JlZiB+cG9zOihwb3MgKyAxKSlcbiAgfCAoKiQgQ29kZS5jaGFyIElOVDMyICopJ1xceGZkJygqJCopIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQzMl9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgKCokIENvZGUuY2hhciBJTlQ2NCAqKSdcXHhmYycoKiQqKSB3aGVuIGFyY2hfc2l4dHlmb3VyIC0+XG4gICAgc2FmZV9iaW5fcmVhZF9pbnQ2NF9hc19uYXRpdmVpbnQgYnVmIH5wb3NfcmVmIH5wb3M6KHBvcyArIDEpXG4gIHwgXyAtPlxuICAgIHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk5hdGl2ZWludF9jb2RlIHBvc1xuW0BAb2NhbWxmb3JtYXQgXCJkaXNhYmxlXCJdXG5cbmxldCBiaW5fcmVhZF9yZWYgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIHJlZiBlbFxuOztcblxubGV0IGJpbl9yZWFkX2xhenkgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGVsID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gIExhenkuZnJvbV92YWwgZWxcbjs7XG5cbmxldCBiaW5fcmVhZF9vcHRpb24gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbWF0Y2ggdW5zYWZlX2dldCBidWYgcG9zIHdpdGhcbiAgfCAnXFwwMDAnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIE5vbmVcbiAgfCAnXFwwMDEnIC0+XG4gICAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgIFNvbWUgZWxcbiAgfCBfIC0+IHJhaXNlX3JlYWRfZXJyb3IgUmVhZEVycm9yLk9wdGlvbl9jb2RlIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX3BhaXIgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBhLCBiXG47O1xuXG5sZXQgYmluX3JlYWRfdHJpcGxlIGJpbl9yZWFkX2EgYmluX3JlYWRfYiBiaW5fcmVhZF9jIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBhID0gYmluX3JlYWRfYSBidWYgfnBvc19yZWYgaW5cbiAgbGV0IGIgPSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiBpblxuICBsZXQgYyA9IGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmIGluXG4gIGEsIGIsIGNcbjs7XG5cbmxldCBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gPVxuICBsZXQgcmVjIGxvb3AgbiBhY2MgPVxuICAgIGlmIG4gPSAwIHRoZW4gYWNjIGVsc2UgbG9vcCAobiAtIDEpIChiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgOjogYWNjKVxuICBpblxuICBsb29wIGxlbiBbXVxuOztcblxubGV0IGJpbl9yZWFkX2xpc3Rfd2l0aF9tYXhfbGVuIH5tYXhfbGVuIGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfbGVuIHRoZW4gcmFpc2VfcmVhZF9lcnJvciAoTGlzdF90b29fbG9uZyB7IGxlbjsgbWF4X2xlbiB9KSAhcG9zX3JlZjtcbiAgbGV0IHJldl9sc3QgPSBiaW5fcmVhZF9uX3Jldl9saXN0IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgTGlzdC5yZXYgcmV2X2xzdFxuOztcblxubGV0IGJpbl9yZWFkX2xpc3QgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmID1cbiAgYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW46bWF4X2ludCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWZcbjs7XG5cbmxldCBkdW1teV9mbG9hdF9idWYgPSBjcmVhdGVfYnVmIDhcbmxldCAoKSA9IGlnbm9yZSAoV3JpdGUuYmluX3dyaXRlX2Zsb2F0IGR1bW15X2Zsb2F0X2J1ZiB+cG9zOjAgMy4xKVxuXG5sZXQgbWF4X2Zsb2F0X2FycmF5X2xlbmd0aCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gU3lzLm1heF9hcnJheV9sZW5ndGggZWxzZSBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gYmluX3JlYWRfZmxvYXRfYXJyYXlfZ2VuIH5jcmVhdGUgfmJsaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBpZiBsZW4gPiBtYXhfZmxvYXRfYXJyYXlfbGVuZ3RoIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgcG9zO1xuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgYXJyID0gY3JlYXRlIGxlbiBpblxuICBibGl0IH5zcmNfcG9zOnBvcyBidWYgfmRzdF9wb3M6MCBhcnIgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBhcnJcbjs7XG5cbmxldCBiaW5fcmVhZF9mbG9hdGFycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6RmxvYXQuQXJyYXkuY3JlYXRlXG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0YXJyYXlcbiAgICBidWZcbiAgICB+cG9zX3JlZlxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0X2FycmF5IGJ1ZiB+cG9zX3JlZiA9XG4gIGJpbl9yZWFkX2Zsb2F0X2FycmF5X2dlblxuICAgIH5jcmVhdGU6QXJyYXkuY3JlYXRlX2Zsb2F0XG4gICAgfmJsaXQ6dW5zYWZlX2JsaXRfYnVmX2Zsb2F0X2FycmF5XG4gICAgYnVmXG4gICAgfnBvc19yZWZcbjs7XG5cbmxldCBiaW5fcmVhZF9hcnJheSAodHlwZSBhKSBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9lbCA6IGEgcmVhZGVyKSA6IGZsb2F0IHJlYWRlcikgPT0gYmluX3JlYWRfZmxvYXRcbiAgdGhlbiAoT2JqLm1hZ2ljIChiaW5fcmVhZF9mbG9hdF9hcnJheSBidWYgfnBvc19yZWYgOiBmbG9hdCBhcnJheSkgOiBhIGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgc3RhcnRfcG9zID0gIXBvc19yZWYgaW5cbiAgICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbfHxdXG4gICAgZWxzZSAoXG4gICAgICBpZiBhcmNoX3NpeHR5Zm91clxuICAgICAgdGhlbiAoXG4gICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zKVxuICAgICAgZWxzZSBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aCAvIDJcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgbWF5YmVfZmxvYXQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGVsID0gYmluX3JlYWRfZWwgZHVtbXlfZmxvYXRfYnVmIH5wb3NfcmVmOihyZWYgMCkgaW5cbiAgICAgICAgICAgIFNvbWUgZWxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggbWF5YmVfZmxvYXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsZW4gPiBTeXMubWF4X2FycmF5X2xlbmd0aFxuICAgICAgICAgIHRoZW4gcmFpc2VfcmVhZF9lcnJvciBSZWFkRXJyb3IuQXJyYXlfdG9vX2xvbmcgc3RhcnRfcG9zXG4gICAgICAgIHwgU29tZSBlbCAtPlxuICAgICAgICAgIGlmIE9iai50YWcgKE9iai5yZXByIGVsKSA9IE9iai5kb3VibGVfdGFnIHx8IGxlbiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoXG4gICAgICAgICAgdGhlbiByYWlzZV9yZWFkX2Vycm9yIFJlYWRFcnJvci5BcnJheV90b29fbG9uZyBzdGFydF9wb3MpO1xuICAgICAgbGV0IGZpcnN0ID0gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIGluXG4gICAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gZmlyc3QgaW5cbiAgICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCBlbCA9IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiBpblxuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHJlcyBpIGVsXG4gICAgICBkb25lO1xuICAgICAgcmVzKSlcbjs7XG5cbmxldCBiaW5fcmVhZF9oYXNodGJsIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgYnVmIH5wb3NfcmVmID1cbiAgbGV0IGxlbiA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBodGJsID0gSGFzaHRibC5jcmVhdGUgbGVuIGluXG4gIGxldCByZWFkX2t2X3BhaXIgPSBiaW5fcmVhZF9wYWlyIGJpbl9yZWFkX2tleSBiaW5fcmVhZF92YWwgaW5cbiAgbGV0IGVscyA9IGJpbl9yZWFkX25fcmV2X2xpc3QgcmVhZF9rdl9wYWlyIGJ1ZiB+cG9zX3JlZiBsZW4gaW5cbiAgY29weV9odGJsX2xpc3QgaHRibCBlbHNcbjs7XG5cbmV4dGVybmFsIGJ1Zl9vZl92ZWMzMiA6IHZlYzMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl92ZWM2NCA6IHZlYzY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQzMiA6IG1hdDMyIC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGJ1Zl9vZl9tYXQ2NCA6IG1hdDY0IC0+IGJ1ZiA9IFwiJWlkZW50aXR5XCJcblxubGV0IGJpbl9yZWFkX2Zsb2F0MzJfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWMzMiB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfdmVjIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4gPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbiAqIDggaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgdmVjID0gQXJyYXkxLmNyZWF0ZSBmbG9hdDY0IGZvcnRyYW5fbGF5b3V0IGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl92ZWM2NCB2ZWMpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHZlY1xuOztcblxubGV0IGJpbl9yZWFkX3ZlYyA9IGJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBiaW5fcmVhZF9mbG9hdDMyX21hdCBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuMSA9IChiaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gIGxldCBsZW4yID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHNpemUgPSBsZW4xICogbGVuMiAqIDQgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgc2l6ZSBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbWF0ID0gQXJyYXkyLmNyZWF0ZSBmbG9hdDMyIGZvcnRyYW5fbGF5b3V0IGxlbjEgbGVuMiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6KGJ1Zl9vZl9tYXQzMiBtYXQpIH5kc3RfcG9zOjAgfmxlbjpzaXplO1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIG1hdFxuOztcblxubGV0IGJpbl9yZWFkX2Zsb2F0NjRfbWF0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBsZW4xID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IGxlbjIgPSAoYmluX3JlYWRfbmF0MCBidWYgfnBvc19yZWYgOj4gaW50KSBpblxuICBsZXQgc2l6ZSA9IGxlbjEgKiBsZW4yICogOCBpblxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgbGV0IG5leHQgPSBwb3MgKyBzaXplIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBtYXQgPSBBcnJheTIuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXQgbGVuMSBsZW4yIGluXG4gIHVuc2FmZV9ibGl0X2J1ZiB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDooYnVmX29mX21hdDY0IG1hdCkgfmRzdF9wb3M6MCB+bGVuOnNpemU7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbWF0XG47O1xuXG5sZXQgYmluX3JlYWRfbWF0ID0gYmluX3JlYWRfZmxvYXQ2NF9tYXRcblxubGV0IGJpbl9yZWFkX2JpZ3N0cmluZyBidWYgfnBvc19yZWYgPVxuICBsZXQgbGVuID0gKGJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGxldCBuZXh0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIGxldCBzdHIgPSBjcmVhdGVfYnVmIGxlbiBpblxuICB1bnNhZmVfYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6cG9zIH5kc3Q6c3RyIH5kc3RfcG9zOjAgfmxlbjtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBzdHJcbjs7XG5cbmxldCBiaW5fcmVhZF92YXJpYW50X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQzMmxlIGJ1ZiBwb3MgaW5cbiAgKCogW25dIG11c3QgY29udGFpbiBhbiBpbnRlZ2VyIGFscmVhZHkgZW5jb2RlZCwgaS5lLiBbbiA9IDIgKiBrICsgMV0uICopXG4gIGlmIEludDMyLmxvZ2FuZCBuIDFsID0gMGxcbiAgdGhlbiByYWlzZSAoUmVhZF9lcnJvciAoUmVhZEVycm9yLlZhcmlhbnRfdGFnLCBwb3MpKVxuICBlbHNlIChcbiAgICAoKiBXZSBzaGlmdCBpdCBieSBvbmUgYml0IHRvIHRoZSByaWdodCBzZSB3ZSBnZXQgYmFjayBbMiAqIGsgKyAxXSBpbiB0aGUgZW5kLiAqKVxuICAgIHBvc19yZWYgOj0gbmV4dDtcbiAgICBJbnQzMi50b19pbnQgKEludDMyLnNoaWZ0X3JpZ2h0IG4gMSkpXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzhiaXQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9IHNhZmVfZ2V0X3BvcyBidWYgcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgcG9zX3JlZiA6PSBwb3MgKyAxO1xuICB1bnNhZmVfZ2V0OCBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfaW50XzE2Yml0IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyAyIGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDE2bGVfdW5zaWduZWQgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX2ludF8zMmJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDMybGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQzMiBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludF82NGJpdCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgOCBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIGxldCBuID0gdW5zYWZlX2dldDY0bGUgYnVmIHBvcyBpblxuICBzYWZlX2ludF9vZl9pbnQ2NCBwb3MgblxuOztcblxubGV0IGJpbl9yZWFkX2ludDY0X2JpdHMgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRsZSBidWYgcG9zXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazE2X2ludCBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMiBpblxuICBjaGVja19uZXh0IGJ1ZiBuZXh0O1xuICBwb3NfcmVmIDo9IG5leHQ7XG4gIHVuc2FmZV9nZXQxNmJlX3Vuc2lnbmVkIGJ1ZiBwb3Ncbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrMzJfaW50IGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgbGV0IG4gPSB1bnNhZmVfZ2V0MzJiZSBidWYgcG9zIGluXG4gIHNhZmVfaW50X29mX2ludDMyIHBvcyBuXG47O1xuXG5sZXQgYmluX3JlYWRfbmV0d29yazMyX2ludDMyIGJ1ZiB+cG9zX3JlZiA9XG4gIGxldCBwb3MgPSAhcG9zX3JlZiBpblxuICBhc3NlcnRfcG9zIHBvcztcbiAgbGV0IG5leHQgPSBwb3MgKyA0IGluXG4gIGNoZWNrX25leHQgYnVmIG5leHQ7XG4gIHBvc19yZWYgOj0gbmV4dDtcbiAgdW5zYWZlX2dldDMyYmUgYnVmIHBvc1xuOztcblxubGV0IGJpbl9yZWFkX25ldHdvcms2NF9pbnQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgbiA9IHVuc2FmZV9nZXQ2NGJlIGJ1ZiBwb3MgaW5cbiAgc2FmZV9pbnRfb2ZfaW50NjQgcG9zIG5cbjs7XG5cbmxldCBiaW5fcmVhZF9uZXR3b3JrNjRfaW50NjQgYnVmIH5wb3NfcmVmID1cbiAgbGV0IHBvcyA9ICFwb3NfcmVmIGluXG4gIGFzc2VydF9wb3MgcG9zO1xuICBsZXQgbmV4dCA9IHBvcyArIDggaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICB1bnNhZmVfZ2V0NjRiZSBidWYgcG9zXG47O1xuXG5bJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDA3LCAwKV1cblxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDMyIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX2J5dGVzX3NldDY0IDogYnl0ZXMgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX3N0cmluZ19zZXQ2NHVcIlxuXG5bJSVlbHNlXVxuXG5leHRlcm5hbCB1bnNhZmVfYnl0ZXNfc2V0MzIgOiBieXRlcyAtPiBpbnQgLT4gaW50MzIgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9ieXRlc19zZXQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuXG5bJSVlbmRpZl1cblxubGV0IGJpbl9yZWFkX21kNSBidWYgfnBvc19yZWYgPVxuICBsZXQgcG9zID0gIXBvc19yZWYgaW5cbiAgYXNzZXJ0X3BvcyBwb3M7XG4gIGxldCBuZXh0ID0gcG9zICsgMTYgaW5cbiAgY2hlY2tfbmV4dCBidWYgbmV4dDtcbiAgcG9zX3JlZiA6PSBuZXh0O1xuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDY0IGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQ2NCBidWYgKHBvcyArIDgpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDY0IHJlcyA4IGIpXG4gIGVsc2UgKFxuICAgIGxldCBhID0gdW5zYWZlX2dldDMyIGJ1ZiBwb3MgaW5cbiAgICBsZXQgYiA9IHVuc2FmZV9nZXQzMiBidWYgKHBvcyArIDQpIGluXG4gICAgbGV0IGMgPSB1bnNhZmVfZ2V0MzIgYnVmIChwb3MgKyA4KSBpblxuICAgIGxldCBkID0gdW5zYWZlX2dldDMyIGJ1ZiAocG9zICsgMTIpIGluXG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAwIGE7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA0IGI7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyA4IGM7XG4gICAgdW5zYWZlX2J5dGVzX3NldDMyIHJlcyAxMiBkKTtcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5IChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcylcbjs7XG4iLCJpbmNsdWRlIEJpbl9zaGFwZV9saWIuU3RkLlNoYXBlXG5cbigqIG5ldyBiYXNlIHNoYXBlcyAqKVxubGV0IGJpbl9zaGFwZV91bml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwidW5pdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9ib29sID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiYm9vbFwiKSBbXVxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJieXRlc1wiKSBbXVxubGV0IGJpbl9zaGFwZV9jaGFyID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiY2hhclwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludDMyXCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDYzID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50NjNcIikgW11cbmxldCBiaW5fc2hhcGVfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uYXRpdmVpbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuYXRpdmVpbnRcIikgW11cbmxldCBiaW5fc2hhcGVfbmF0MCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5hdDBcIikgW11cbmxldCBiaW5fc2hhcGVfZGlnZXN0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZGlnZXN0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2Zsb2F0MzJfdmVjID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiZmxvYXQzMl92ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDY0X3ZlY1wiKSBbXVxubGV0IGJpbl9zaGFwZV92ZWMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2ZWNcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJmbG9hdDMyX21hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0NjRfbWF0XCIpIFtdXG5sZXQgYmluX3NoYXBlX21hdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm1hdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJiaWdzdHJpbmdcIikgW11cbmxldCBiaW5fc2hhcGVfZmxvYXRhcnJheSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImZsb2F0YXJyYXlcIikgW11cbmxldCBiaW5fc2hhcGVfdmFyaWFudF9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJ2YXJpYW50X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfOGJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF84Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludF8xNmJpdCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImludF8xNmJpdFwiKSBbXVxubGV0IGJpbl9zaGFwZV9pbnRfMzJiaXQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnRfMzJiaXRcIikgW11cbmxldCBiaW5fc2hhcGVfaW50XzY0Yml0ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwiaW50XzY0Yml0XCIpIFtdXG5sZXQgYmluX3NoYXBlX2ludDY0X2JpdHMgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJpbnQ2NF9iaXRzXCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmsxNl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMTZfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrMzJfaW50XCIpIFtdXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMiA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm5ldHdvcmszMl9pbnQzMlwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gYmFzZXR5cGUgKFV1aWQub2Zfc3RyaW5nIFwibmV0d29yazY0X2ludFwiKSBbXVxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjQgPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJuZXR3b3JrNjRfaW50NjRcIikgW11cblxuKCogbmV3IHNoYXBlIGNvbnN0cnVjdG9ycyAqKVxubGV0IGJpbl9zaGFwZV9yZWYgeCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcInJlZlwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9vcHRpb24geCA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIm9wdGlvblwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9saXN0IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJsaXN0XCIpIFsgeCBdXG5sZXQgYmluX3NoYXBlX2FycmF5IHggPSBiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCJhcnJheVwiKSBbIHggXVxubGV0IGJpbl9zaGFwZV9oYXNodGJsIHggeSA9IGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcImhhc2h0YmxcIikgWyB4OyB5IF1cblxuKCogc2hhcGUgYWxpYXMgKilcbmxldCBiaW5fc2hhcGVfZmxvYXRfYXJyYXkgPSBiaW5fc2hhcGVfYXJyYXkgYmluX3NoYXBlX2Zsb2F0XG5bQEBvY2FtbC5kZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSBcXFxuICAgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXVxuOztcblxuKCogc2hhcGUtY29uc3RydWN0b3IgYWxpYXNlcyAqKVxubGV0IGJpbl9zaGFwZV9sYXp5IHggPSB4XG5sZXQgYmluX3NoYXBlX3BhaXIgeCB5ID0gdHVwbGUgWyB4OyB5IF1cbmxldCBiaW5fc2hhcGVfdHJpcGxlIHggeSB6ID0gdHVwbGUgWyB4OyB5OyB6IF1cbiIsIigqIFNpemU6IGNvbXB1dGUgc2l6ZSBvZiB2YWx1ZXMgaW4gdGhlIGJpbmFyeSBwcm90b2NvbC4gKilcblxub3BlbiBCaWdhcnJheVxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplID0gNjRcblxub3BlbiBDb21tb25cblxubW9kdWxlIE1heGltdW0gPSBzdHJ1Y3RcbiAgbGV0IGJpbl9zaXplX3VuaXQgPSAxXG4gIGxldCBiaW5fc2l6ZV9ib29sID0gMVxuICBsZXQgYmluX3NpemVfY2hhciA9IDFcbiAgbGV0IGJpbl9zaXplX21kNSA9IDE2XG4gIGxldCBiaW5fc2l6ZV9pbnRfbmF0MCA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludF9uZWdhdGl2ZSA9IGlmIGFyY2hfc2l4dHlmb3VyIHRoZW4gOSBlbHNlIDVcbiAgbGV0IGJpbl9zaXplX2ludCA9IG1heCBiaW5fc2l6ZV9pbnRfbmF0MCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmVcbiAgbGV0IGJpbl9zaXplX2Zsb2F0ID0gOFxuICBsZXQgYmluX3NpemVfaW50MzIgPSA1XG4gIGxldCBiaW5fc2l6ZV9pbnQ2NCA9IDlcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IGJpbl9zaXplX2ludF9uYXQwXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IDRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gMVxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gMlxuICBsZXQgYmluX3NpemVfaW50XzMyYml0ID0gNFxuICBsZXQgYmluX3NpemVfaW50XzY0Yml0ID0gOFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgPSAyXG4gIGxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50ID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gNFxuICBsZXQgYmluX3NpemVfbmV0d29yazY0X2ludCA9IDhcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IDhcbmVuZFxuXG5tb2R1bGUgTWluaW11bSA9IHN0cnVjdFxuICBsZXQgYmluX3NpemVfdW5pdCA9IE1heGltdW0uYmluX3NpemVfdW5pdFxuICBsZXQgYmluX3NpemVfYm9vbCA9IE1heGltdW0uYmluX3NpemVfYm9vbFxuICBsZXQgYmluX3NpemVfY2hhciA9IE1heGltdW0uYmluX3NpemVfY2hhclxuICBsZXQgYmluX3NpemVfbWQ1ID0gMTZcbiAgbGV0IGJpbl9zaXplX2ludF9uYXQwID0gMVxuICBsZXQgYmluX3NpemVfaW50X25lZ2F0aXZlID0gMlxuICBsZXQgYmluX3NpemVfaW50ID0gbWluIGJpbl9zaXplX2ludF9uYXQwIGJpbl9zaXplX2ludF9uZWdhdGl2ZVxuICBsZXQgYmluX3NpemVfZmxvYXQgPSBNYXhpbXVtLmJpbl9zaXplX2Zsb2F0XG4gIGxldCBiaW5fc2l6ZV9pbnQzMiA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfaW50NjQgPSBiaW5fc2l6ZV9pbnRcbiAgbGV0IGJpbl9zaXplX25hdGl2ZWludCA9IGJpbl9zaXplX2ludFxuICBsZXQgYmluX3NpemVfbmF0MCA9IDFcbiAgbGV0IGJpbl9zaXplX3JlZiA9IDFcbiAgbGV0IGJpbl9zaXplX2xhenlfdCA9IDFcbiAgbGV0IGJpbl9zaXplX29wdGlvbiA9IDFcbiAgbGV0IGJpbl9zaXplX3BhaXIgPSAxICsgMVxuICBsZXQgYmluX3NpemVfdHJpcGxlID0gMSArIDEgKyAxXG4gIGxldCBiaW5fc2l6ZV9sZW4gPSBiaW5fc2l6ZV9uYXQwXG4gIGxldCBiaW5fc2l6ZV9saXN0ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9hcnJheSA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfaGFzaHRibCA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfc3RyaW5nID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9ieXRlcyA9IGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfdmVjID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV9mbG9hdDMyX3ZlYyA9IGJpbl9zaXplX3ZlY1xuICBsZXQgYmluX3NpemVfZmxvYXQ2NF92ZWMgPSBiaW5fc2l6ZV92ZWNcbiAgbGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2xlbiArIGJpbl9zaXplX2xlblxuICBsZXQgYmluX3NpemVfZmxvYXQzMl9tYXQgPSBiaW5fc2l6ZV9tYXRcbiAgbGV0IGJpbl9zaXplX2Zsb2F0NjRfbWF0ID0gYmluX3NpemVfbWF0XG4gIGxldCBiaW5fc2l6ZV9iaWdzdHJpbmcgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0YXJyYXkgPSBiaW5fc2l6ZV9sZW5cbiAgbGV0IGJpbl9zaXplX2Zsb2F0X2FycmF5ID0gYmluX3NpemVfbGVuXG4gIGxldCBiaW5fc2l6ZV92YXJpYW50X2ludCA9IE1heGltdW0uYmluX3NpemVfdmFyaWFudF9pbnRcbiAgbGV0IGJpbl9zaXplX2ludF84Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfOGJpdFxuICBsZXQgYmluX3NpemVfaW50XzE2Yml0ID0gTWF4aW11bS5iaW5fc2l6ZV9pbnRfMTZiaXRcbiAgbGV0IGJpbl9zaXplX2ludF8zMmJpdCA9IE1heGltdW0uYmluX3NpemVfaW50XzMyYml0XG4gIGxldCBiaW5fc2l6ZV9pbnRfNjRiaXQgPSBNYXhpbXVtLmJpbl9zaXplX2ludF82NGJpdFxuICBsZXQgYmluX3NpemVfaW50NjRfYml0cyA9IE1heGltdW0uYmluX3NpemVfaW50NjRfYml0c1xuICBsZXQgYmluX3NpemVfbmV0d29yazE2X2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazE2X2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazMyX2ludFxuICBsZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyID0gTWF4aW11bS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzJcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQgPSBNYXhpbXVtLmJpbl9zaXplX25ldHdvcms2NF9pbnRcbiAgbGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCA9IE1heGltdW0uYmluX3NpemVfbmV0d29yazY0X2ludDY0XG5lbmRcblxudHlwZSAnYSBzaXplciA9ICdhIC0+IGludFxudHlwZSAoJ2EsICdiKSBzaXplcjEgPSAnYSBzaXplciAtPiAnYiBzaXplclxudHlwZSAoJ2EsICdiLCAnYykgc2l6ZXIyID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYykgc2l6ZXIxXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2l6ZXIzID0gJ2Egc2l6ZXIgLT4gKCdiLCAnYywgJ2QpIHNpemVyMlxuXG5sZXQgYmluX3NpemVfdW5pdCAoKSA9IDFcbmxldCBiaW5fc2l6ZV9ib29sIF8gPSAxXG5cbmxldCBiaW5fc2l6ZV9pbnRfbmF0MCBuID1cbiAgaWYgbiA8IDB4MDAwMDAwODBcbiAgdGhlbiAxXG4gIGVsc2UgaWYgbiA8IDB4MDAwMDgwMDBcbiAgdGhlbiAzXG4gIGVsc2UgaWYgYXJjaF9zaXh0eWZvdXIgJiYgbiA+PSAoKiAweDgwMDAwMDAwICopIDEgbHNsIDMxXG4gIHRoZW4gOVxuICBlbHNlIDVcbjs7XG5cbmxldCBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgbiA9XG4gIGlmIG4gPj0gLTB4MDAwMDAwODBcbiAgdGhlbiAyXG4gIGVsc2UgaWYgbiA+PSAtMHgwMDAwODAwMFxuICB0aGVuIDNcbiAgZWxzZSBpZiBhcmNoX3NpeHR5Zm91ciAmJiBuIDwgKCogLTB4ODAwMDAwMDAgKikgLSgxIGxzbCAzMSlcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX2NoYXIgXyA9IDFcbmxldCBiaW5fc2l6ZV9pbnQgbiA9IGlmIG4gPj0gMCB0aGVuIGJpbl9zaXplX2ludF9uYXQwIG4gZWxzZSBiaW5fc2l6ZV9pbnRfbmVnYXRpdmUgblxuXG5sZXQgYmluX3NpemVfbmF0MCBuYXQwID1cbiAgbGV0IG4gPSAobmF0MCA6IE5hdDAudCA6PiBpbnQpIGluXG4gIGlmIG4gPCAweDAwMDAwMDgwXG4gIHRoZW4gMVxuICBlbHNlIGlmIG4gPCAweDAwMDEwMDAwXG4gIHRoZW4gM1xuICBlbHNlIGlmIGFyY2hfc2l4dHlmb3VyICYmIG4gPj0gKCogMHgxMDAwMDAwMDAgKikgMSBsc2wgMzJcbiAgdGhlbiA5XG4gIGVsc2UgNVxuOztcblxubGV0IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyBsZW4gPVxuICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgbGV0IHNpemVfbGVuID0gYmluX3NpemVfbmF0MCBwbGVuIGluXG4gIHNpemVfbGVuICsgbGVuXG47O1xuXG5sZXQgYmluX3NpemVfc3RyaW5nIHN0ciA9IGJpbl9zaXplX3N0cmluZ19vcl9ieXRlcyAoU3RyaW5nLmxlbmd0aCBzdHIpXG5sZXQgYmluX3NpemVfYnl0ZXMgc3RyID0gYmluX3NpemVfc3RyaW5nX29yX2J5dGVzIChCeXRlcy5sZW5ndGggc3RyKVxubGV0IGJpbl9zaXplX21kNSBfID0gMTZcblxubGV0IGJpbl9zaXplX2Zsb2F0IGYgPVxuICAoKiBJZiB3ZSBqdXN0IGlnbm9yZSB0aGUgYXJndW1lbnQgdGhlIGNvbXBpbGVyIHdpbGwgc3RpbGwgcmVxdWlyZSBpdCB0byBleGlzdCBhbmQgYmVcbiAgICAgYm94ZWQuIFRoaXMgbWVhbnMgdGhhdCBpZiBmb3IgaW5zdGFuY2Ugd2UgY2FsbCB0aGlzIGZvciBhIGZpZWxkIG9mIGEgZmxvYXQgcmVjb3JkLFxuICAgICB0aGUgY29tcGlsZXIgd2lsbCBhbGxvY2F0ZSB0aGUgZmxvYXQgZm9yIG5vdGhpbmcuXG5cbiAgICAgV2l0aCB0aGlzIGxpbmUgdGhlIGNvbXBpbGVyIHJlYWxseSBpZ25vcmVzIHRoZSBmbG9hdC4gKilcbiAgaWdub3JlICh0cnVuY2F0ZSBmKTtcbiAgOFxuOztcblxubGV0IGJpbl9zaXplX2ludDMyID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuICBlbHNlXG4gICAgZnVuIG4gLT5cbiAgICAgIGlmIG4gPj0gMHgwMDAwODAwMGwgfHwgbiA8IC0weDAwMDA4MDAwbCB0aGVuIDUgZWxzZSBiaW5fc2l6ZV9pbnQgKEludDMyLnRvX2ludCBuKVxuOztcblxubGV0IGJpbl9zaXplX2ludDY0ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50IChJbnQ2NC50b19pbnQgbilcbiAgZWxzZVxuICAgIGZ1biBuIC0+XG4gICAgICBpZiBuID49IDB4ODAwMDAwMDBMIHx8IG4gPCAtMHg4MDAwMDAwMEwgdGhlbiA5IGVsc2UgYmluX3NpemVfaW50MzIgKEludDY0LnRvX2ludDMyIG4pXG47O1xuXG5sZXQgYmluX3NpemVfbmF0aXZlaW50ID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlbiBmdW4gbiAtPiBiaW5fc2l6ZV9pbnQ2NCAoSW50NjQub2ZfbmF0aXZlaW50IG4pXG4gIGVsc2UgZnVuIG4gLT4gYmluX3NpemVfaW50MzIgKE5hdGl2ZWludC50b19pbnQzMiBuKVxuOztcblxubGV0IGJpbl9zaXplX3JlZiBiaW5fc2l6ZV9lbCByID0gYmluX3NpemVfZWwgIXJcbmxldCBiaW5fc2l6ZV9sYXp5X3QgYmluX3NpemVfZWwgbHYgPSBiaW5fc2l6ZV9lbCAoTGF6eS5mb3JjZSBsdilcbmxldCBiaW5fc2l6ZV9sYXp5ID0gYmluX3NpemVfbGF6eV90XG5cbmxldCBiaW5fc2l6ZV9vcHRpb24gYmluX3NpemVfZWwgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gMVxuICB8IFNvbWUgdiAtPiAxICsgYmluX3NpemVfZWwgdlxuOztcblxubGV0IGJpbl9zaXplX3BhaXIgYmluX3NpemVfYSBiaW5fc2l6ZV9iIChhLCBiKSA9IGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYlxuXG5sZXQgYmluX3NpemVfdHJpcGxlIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIChhLCBiLCBjKSA9XG4gIGJpbl9zaXplX2EgYSArIGJpbl9zaXplX2IgYiArIGJpbl9zaXplX2MgY1xuOztcblxubGV0IGJpbl9zaXplX2xpc3QgPVxuICBsZXQgcmVjIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYyB+bGVuX2FjYyBsc3QgPVxuICAgIG1hdGNoIGxzdCB3aXRoXG4gICAgfCBbXSAtPiBzaXplX2FjYyArIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW5fYWNjKVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzooc2l6ZV9hY2MgKyBiaW5fc2l6ZV9lbCBoZCkgfmxlbl9hY2M6KGxlbl9hY2MgKyAxKSB0bFxuICBpblxuICBmdW4gYmluX3NpemVfZWwgbHN0IC0+IGxvb3AgfmJpbl9zaXplX2VsIH5zaXplX2FjYzowIH5sZW5fYWNjOjAgbHN0XG47O1xuXG5sZXQgYmluX3NpemVfbGVuIGxlbiA9XG4gIGxldCBwbGVuID0gTmF0MC51bnNhZmVfb2ZfaW50IGxlbiBpblxuICBiaW5fc2l6ZV9uYXQwIHBsZW5cbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdGFycmF5IGFyID1cbiAgbGV0IGxlbiA9IEZsb2F0LkFycmF5Lmxlbmd0aCBhciBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKDggKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXRfYXJyYXkgYXIgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGFyIGluXG4gIGJpbl9zaXplX2xlbiBsZW4gKyAoOCAqIGxlbilcbjs7XG5cbmxldCBiaW5fc2l6ZV9hcnJheV9sb29wIGJpbl9zaXplX2VsIGFyIH50b3RhbF9sZW4gfm4gPVxuICBsZXQgdG90YWxfbGVuX3JlZiA9IHJlZiB0b3RhbF9sZW4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgbGV0IGVsID0gQXJyYXkudW5zYWZlX2dldCBhciBpIGluXG4gICAgdG90YWxfbGVuX3JlZiA6PSAhdG90YWxfbGVuX3JlZiArIGJpbl9zaXplX2VsIGVsXG4gIGRvbmU7XG4gICF0b3RhbF9sZW5fcmVmXG47O1xuXG5sZXQgYmluX3NpemVfYXJyYXkgKHR5cGUgYSkgYmluX3NpemVfZWwgYXIgPVxuICBpZiAoT2JqLm1hZ2ljIChiaW5fc2l6ZV9lbCA6IGEgc2l6ZXIpIDogZmxvYXQgc2l6ZXIpID09IGJpbl9zaXplX2Zsb2F0XG4gIHRoZW4gYmluX3NpemVfZmxvYXRfYXJyYXkgKE9iai5tYWdpYyAoYXIgOiBhIGFycmF5KSA6IGZsb2F0IGFycmF5KVxuICBlbHNlIChcbiAgICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhciBpblxuICAgIGxldCB0b3RhbF9sZW4gPSBiaW5fc2l6ZV9sZW4gbiBpblxuICAgIGJpbl9zaXplX2FycmF5X2xvb3AgYmluX3NpemVfZWwgYXIgfnRvdGFsX2xlbiB+bilcbjs7XG5cbmxldCBiaW5fc2l6ZV9oYXNodGJsIGJpbl9zaXplX2tleSBiaW5fc2l6ZV92YWwgaHRibCA9XG4gIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgbGV0IGNvbGxfaHRibCBrIHYgdG90YWxfbGVuID1cbiAgICBpbmNyIGNudF9yZWY7XG4gICAgdG90YWxfbGVuICsgYmluX3NpemVfa2V5IGsgKyBiaW5fc2l6ZV92YWwgdlxuICBpblxuICBsZXQgbGVuID0gSGFzaHRibC5sZW5ndGggaHRibCBpblxuICBsZXQgdG90YWxfbGVuID0gSGFzaHRibC5mb2xkIGNvbGxfaHRibCBodGJsIChiaW5fc2l6ZV9sZW4gbGVuKSBpblxuICBpZiAhY250X3JlZiA8PiBsZW4gdGhlbiByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiBcImJpbl9zaXplX2hhc2h0YmxcIjtcbiAgdG90YWxfbGVuXG47O1xuXG5sZXQgYmluX3NpemVfZ2VuX3ZlYyB2ZWMgbXVsdGlwbGllciA9XG4gIGxldCBsZW4gPSBBcnJheTEuZGltIHZlYyBpblxuICBiaW5fc2l6ZV9sZW4gbGVuICsgKG11bHRpcGxpZXIgKiBsZW4pXG47O1xuXG5sZXQgYmluX3NpemVfZmxvYXQzMl92ZWMgdmVjID0gYmluX3NpemVfZ2VuX3ZlYyB2ZWMgNFxubGV0IGJpbl9zaXplX2Zsb2F0NjRfdmVjIHZlYyA9IGJpbl9zaXplX2dlbl92ZWMgdmVjIDhcbmxldCBiaW5fc2l6ZV92ZWMgPSBiaW5fc2l6ZV9mbG9hdDY0X3ZlY1xuXG5sZXQgYmluX3NpemVfZ2VuX21hdCBtYXQgbXVsdGlwbGllciA9XG4gIGxldCBkaW0xID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBkaW0yID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBzaXplID0gZGltMSAqIGRpbTIgaW5cbiAgYmluX3NpemVfbGVuIGRpbTEgKyBiaW5fc2l6ZV9sZW4gZGltMiArIChtdWx0aXBsaWVyICogc2l6ZSlcbjs7XG5cbmxldCBiaW5fc2l6ZV9mbG9hdDMyX21hdCBtYXQgPSBiaW5fc2l6ZV9nZW5fbWF0IG1hdCA0XG5sZXQgYmluX3NpemVfZmxvYXQ2NF9tYXQgbWF0ID0gYmluX3NpemVfZ2VuX21hdCBtYXQgOFxubGV0IGJpbl9zaXplX21hdCA9IGJpbl9zaXplX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3NpemVfYmlnc3RyaW5nIGJ1ZiA9IGJpbl9zaXplX2dlbl92ZWMgYnVmIDFcbmxldCBiaW5fc2l6ZV92YXJpYW50X2ludCBfID0gNFxubGV0IGJpbl9zaXplX2ludF84Yml0IF8gPSAxXG5sZXQgYmluX3NpemVfaW50XzE2Yml0IF8gPSAyXG5sZXQgYmluX3NpemVfaW50XzMyYml0IF8gPSA0XG5sZXQgYmluX3NpemVfaW50XzY0Yml0IF8gPSA4XG5sZXQgYmluX3NpemVfaW50NjRfYml0cyBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcmsxNl9pbnQgXyA9IDJcbmxldCBiaW5fc2l6ZV9uZXR3b3JrMzJfaW50IF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazMyX2ludDMyIF8gPSA0XG5sZXQgYmluX3NpemVfbmV0d29yazY0X2ludCBfID0gOFxubGV0IGJpbl9zaXplX25ldHdvcms2NF9pbnQ2NCBfID0gOFxuXG5sZXQgYmluX3NpemVfYXJyYXlfbm9fbGVuZ3RoIGJpbl9zaXplX2VsIGFyID1cbiAgYmluX3NpemVfYXJyYXlfbG9vcCBiaW5fc2l6ZV9lbCBhciB+dG90YWxfbGVuOjAgfm46KEFycmF5Lmxlbmd0aCBhcilcbjs7XG4iLCIoKiBUcF9jbGFzczogc2l6ZXJzLCB3cml0ZXJzLCBhbmQgcmVhZGVycyBpbiByZWNvcmRzICopXG5cbnR5cGUgJ2Egd3JpdGVyID1cbiAgeyBzaXplIDogJ2EgU2l6ZS5zaXplclxuICA7IHdyaXRlIDogJ2EgV3JpdGUud3JpdGVyXG4gIH1cblxudHlwZSAnYSByZWFkZXIgPVxuICB7IHJlYWQgOiAnYSBSZWFkLnJlYWRlclxuICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gIH1cblxudHlwZSAnYSB0ID1cbiAgeyBzaGFwZSA6IFNoYXBlLnRcbiAgOyB3cml0ZXIgOiAnYSB3cml0ZXJcbiAgOyByZWFkZXIgOiAnYSByZWFkZXJcbiAgfVxuXG50eXBlICdhIHdyaXRlcjAgPSAnYSB3cml0ZXJcbnR5cGUgJ2EgcmVhZGVyMCA9ICdhIHJlYWRlclxudHlwZSAnYSB0MCA9ICdhIHRcblxubW9kdWxlIFMxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgd3JpdGVyID0gJ2Egd3JpdGVyMCAtPiAnYiB3cml0ZXIwXG4gIHR5cGUgKCdhLCAnYikgcmVhZGVyID0gJ2EgcmVhZGVyMCAtPiAnYiByZWFkZXIwXG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhIHQwIC0+ICdiIHQwXG5lbmRcblxubW9kdWxlIFMyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHdyaXRlciA9ICdhIHdyaXRlcjAgLT4gKCdiLCAnYykgUzEud3JpdGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gKCdiLCAnYykgUzEucmVhZGVyXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSB0MCAtPiAoJ2IsICdjKSBTMS50XG5lbmRcblxubW9kdWxlIFMzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB3cml0ZXIgPSAnYSB3cml0ZXIwIC0+ICgnYiwgJ2MsICdkKSBTMi53cml0ZXJcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHJlYWRlciA9ICdhIHJlYWRlcjAgLT4gKCdiLCAnYywgJ2QpIFMyLnJlYWRlclxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICdhIHQwIC0+ICgnYiwgJ2MsICdkKSBTMi50XG5lbmRcblxubGV0IHZhcmlhbnRfd3JvbmdfdHlwZSBuYW1lIF9idWYgfnBvc19yZWYgX3ggPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIG5hbWUgIXBvc19yZWZcbjs7XG5cbigqJCBvcGVuIEJpbl9wcm90X2NpbmFwcy5TdHIgKilcbigqJCBta19iYXNlIFwidW5pdFwiICopXG5sZXQgYmluX3dyaXRlcl91bml0ID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV91bml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV91bml0IH1cbmxldCBiaW5fcmVhZGVyX3VuaXQgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3VuaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInVuaXRcIiB9XG5sZXQgYmluX3NoYXBlX3VuaXQgPSBTaGFwZS5iaW5fc2hhcGVfdW5pdFxuXG5sZXQgYmluX3VuaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3VuaXQ7IHdyaXRlciA9IGJpbl93cml0ZXJfdW5pdDsgcmVhZGVyID0gYmluX3JlYWRlcl91bml0IH1cbjs7XG5cbigqJCBta19iYXNlIFwiYm9vbFwiICopXG5sZXQgYmluX3dyaXRlcl9ib29sID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9ib29sOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9ib29sIH1cbmxldCBiaW5fcmVhZGVyX2Jvb2wgPSB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Jvb2w7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJvb2xcIiB9XG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBTaGFwZS5iaW5fc2hhcGVfYm9vbFxuXG5sZXQgYmluX2Jvb2wgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Jvb2w7IHdyaXRlciA9IGJpbl93cml0ZXJfYm9vbDsgcmVhZGVyID0gYmluX3JlYWRlcl9ib29sIH1cbjs7XG5cbigqJCBta19iYXNlIFwic3RyaW5nXCIgKilcbmxldCBiaW5fd3JpdGVyX3N0cmluZyA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfc3RyaW5nOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9zdHJpbmcgfVxuXG5sZXQgYmluX3JlYWRlcl9zdHJpbmcgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX3N0cmluZzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwic3RyaW5nXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9zdHJpbmcgPSBTaGFwZS5iaW5fc2hhcGVfc3RyaW5nXG5cbmxldCBiaW5fc3RyaW5nID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9zdHJpbmc7IHdyaXRlciA9IGJpbl93cml0ZXJfc3RyaW5nOyByZWFkZXIgPSBiaW5fcmVhZGVyX3N0cmluZyB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImJ5dGVzXCIgKilcbmxldCBiaW5fd3JpdGVyX2J5dGVzID0geyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9ieXRlczsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfYnl0ZXMgfVxuXG5sZXQgYmluX3JlYWRlcl9ieXRlcyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfYnl0ZXM7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImJ5dGVzXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9ieXRlcyA9IFNoYXBlLmJpbl9zaGFwZV9ieXRlc1xuXG5sZXQgYmluX2J5dGVzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9ieXRlczsgd3JpdGVyID0gYmluX3dyaXRlcl9ieXRlczsgcmVhZGVyID0gYmluX3JlYWRlcl9ieXRlcyB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImNoYXJcIiAqKVxubGV0IGJpbl93cml0ZXJfY2hhciA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfY2hhcjsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfY2hhciB9XG5sZXQgYmluX3JlYWRlcl9jaGFyID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9jaGFyOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJjaGFyXCIgfVxubGV0IGJpbl9zaGFwZV9jaGFyID0gU2hhcGUuYmluX3NoYXBlX2NoYXJcblxubGV0IGJpbl9jaGFyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9jaGFyOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2NoYXI7IHJlYWRlciA9IGJpbl9yZWFkZXJfY2hhciB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50IH1cbmxldCBiaW5fcmVhZGVyX2ludCA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRcIiB9XG5sZXQgYmluX3NoYXBlX2ludCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRcbmxldCBiaW5faW50ID0geyBzaGFwZSA9IGJpbl9zaGFwZV9pbnQ7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50OyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludCB9XG5cbigqJCBta19iYXNlIFwiZmxvYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdCB9XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9mbG9hdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0XG5cbmxldCBiaW5fZmxvYXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0OyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0IH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50MzJcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50MzIgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDMyOyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQzMiB9XG5cbmxldCBiaW5fcmVhZGVyX2ludDMyID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQzMjsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDMyID0gU2hhcGUuYmluX3NoYXBlX2ludDMyXG5cbmxldCBiaW5faW50MzIgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDMyOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDMyOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDMyIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50NjRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50NjQgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDY0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnQ2NCB9XG5cbmxldCBiaW5fcmVhZGVyX2ludDY0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnQ2NDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludDY0ID0gU2hhcGUuYmluX3NoYXBlX2ludDY0XG5cbmxldCBiaW5faW50NjQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludDY0OyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludDY0OyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludDY0IH1cbjs7XG5cbigqJCBta19iYXNlIFwibmF0aXZlaW50XCIgKilcbmxldCBiaW5fd3JpdGVyX25hdGl2ZWludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmF0aXZlaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmF0aXZlaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uYXRpdmVpbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gU2hhcGUuYmluX3NoYXBlX25hdGl2ZWludFxuXG5sZXQgYmluX25hdGl2ZWludCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmF0aXZlaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uYXRpdmVpbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25hdGl2ZWludFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5hdDBcIiAqKVxubGV0IGJpbl93cml0ZXJfbmF0MCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmF0MDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmF0MCB9XG5sZXQgYmluX3JlYWRlcl9uYXQwID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9uYXQwOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuYXQwXCIgfVxubGV0IGJpbl9zaGFwZV9uYXQwID0gU2hhcGUuYmluX3NoYXBlX25hdDBcblxubGV0IGJpbl9uYXQwID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uYXQwOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25hdDA7IHJlYWRlciA9IGJpbl9yZWFkZXJfbmF0MCB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJyZWZcIiAqKVxubGV0IGJpbl93cml0ZXJfcmVmIGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9yZWYgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX3JlZiBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3JlZiBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9yZWYgYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJyZWZcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3JlZiB4MSA9IFNoYXBlLmJpbl9zaGFwZV9yZWYgeDFcblxubGV0IGJpbl9yZWYgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9yZWYgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9yZWYgYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfcmVmIGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwibGF6eVwiICopXG5sZXQgYmluX3dyaXRlcl9sYXp5IGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9sYXp5IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9sYXp5IGJpbl93cml0ZXJfZWwud3JpdGUgYnVmIH5wb3MgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbGF6eSBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9sYXp5IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbGF6eSB4MSA9IFNoYXBlLmJpbl9zaGFwZV9sYXp5IHgxXG5cbmxldCBiaW5fbGF6eSBiaW5fZWwgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2xhenkgYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9sYXp5IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2xhenkgYmluX2VsLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTEgXCJvcHRpb25cIiAqKVxubGV0IGJpbl93cml0ZXJfb3B0aW9uIGJpbl93cml0ZXJfZWwgPVxuICB7IHNpemUgPSAoZnVuIHYgLT4gU2l6ZS5iaW5fc2l6ZV9vcHRpb24gYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gV3JpdGUuYmluX3dyaXRlX29wdGlvbiBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX29wdGlvbiBiaW5fcmVhZGVyX2VsID1cbiAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gUmVhZC5iaW5fcmVhZF9vcHRpb24gYmluX3JlYWRlcl9lbC5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJvcHRpb25cIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX29wdGlvbiB4MSA9IFNoYXBlLmJpbl9zaGFwZV9vcHRpb24geDFcblxubGV0IGJpbl9vcHRpb24gYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9vcHRpb24gYmluX2VsLnNoYXBlXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9vcHRpb24gYmluX2VsLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfb3B0aW9uIGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UyIFwicGFpclwiICopXG5sZXQgYmluX3dyaXRlcl9wYWlyIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfcGFpciBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV9wYWlyIGJpbl93cml0ZXJfZWwxLndyaXRlIGJpbl93cml0ZXJfZWwyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3BhaXIgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfcGFpciBiaW5fcmVhZGVyX2VsMS5yZWFkIGJpbl9yZWFkZXJfZWwyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcInBhaXJcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3BhaXIgeDEgeDIgPSBTaGFwZS5iaW5fc2hhcGVfcGFpciB4MSB4MlxuXG5sZXQgYmluX3BhaXIgYmluX2VsMSBiaW5fZWwyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9wYWlyIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfcGFpciBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfcGFpciBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZTMgXCJ0cmlwbGVcIiAqKVxubGV0IGJpbl93cml0ZXJfdHJpcGxlIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyIGJpbl93cml0ZXJfZWwzID1cbiAgeyBzaXplID1cbiAgICAgIChmdW4gdiAtPlxuICAgICAgICAgU2l6ZS5iaW5fc2l6ZV90cmlwbGUgYmluX3dyaXRlcl9lbDEuc2l6ZSBiaW5fd3JpdGVyX2VsMi5zaXplIGJpbl93cml0ZXJfZWwzLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV90cmlwbGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDEud3JpdGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDIud3JpdGVcbiAgICAgICAgICAgYmluX3dyaXRlcl9lbDMud3JpdGVcbiAgICAgICAgICAgYnVmXG4gICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgdilcbiAgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfdHJpcGxlIGJpbl9yZWFkZXJfZWwxIGJpbl9yZWFkZXJfZWwyIGJpbl9yZWFkZXJfZWwzID1cbiAgeyByZWFkID1cbiAgICAgIChmdW4gYnVmIH5wb3NfcmVmIC0+XG4gICAgICAgICBSZWFkLmJpbl9yZWFkX3RyaXBsZVxuICAgICAgICAgICBiaW5fcmVhZGVyX2VsMS5yZWFkXG4gICAgICAgICAgIGJpbl9yZWFkZXJfZWwyLnJlYWRcbiAgICAgICAgICAgYmluX3JlYWRlcl9lbDMucmVhZFxuICAgICAgICAgICBidWZcbiAgICAgICAgICAgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidHJpcGxlXCJcbiAgfVxuOztcblxubGV0IGJpbl9zaGFwZV90cmlwbGUgeDEgeDIgeDMgPSBTaGFwZS5iaW5fc2hhcGVfdHJpcGxlIHgxIHgyIHgzXG5cbmxldCBiaW5fdHJpcGxlIGJpbl9lbDEgYmluX2VsMiBiaW5fZWwzID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV90cmlwbGUgYmluX2VsMS5zaGFwZSBiaW5fZWwyLnNoYXBlIGJpbl9lbDMuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3RyaXBsZSBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlciBiaW5fZWwzLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdHJpcGxlIGJpbl9lbDEucmVhZGVyIGJpbl9lbDIucmVhZGVyIGJpbl9lbDMucmVhZGVyXG4gIH1cbjs7XG5cbigqJCBta19iYXNlMSBcImxpc3RcIiAqKVxubGV0IGJpbl93cml0ZXJfbGlzdCBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfbGlzdCBiaW5fd3JpdGVyX2VsLnNpemUgdilcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBXcml0ZS5iaW5fd3JpdGVfbGlzdCBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2xpc3QgYmluX3JlYWRlcl9lbCA9XG4gIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IFJlYWQuYmluX3JlYWRfbGlzdCBiaW5fcmVhZGVyX2VsLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImxpc3RcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2xpc3QgeDEgPSBTaGFwZS5iaW5fc2hhcGVfbGlzdCB4MVxuXG5sZXQgYmluX2xpc3QgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9saXN0IGJpbl9lbC5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbGlzdCBiaW5fZWwud3JpdGVyXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9saXN0IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UxIFwiYXJyYXlcIiAqKVxubGV0IGJpbl93cml0ZXJfYXJyYXkgYmluX3dyaXRlcl9lbCA9XG4gIHsgc2l6ZSA9IChmdW4gdiAtPiBTaXplLmJpbl9zaXplX2FycmF5IGJpbl93cml0ZXJfZWwuc2l6ZSB2KVxuICA7IHdyaXRlID0gKGZ1biBidWYgfnBvcyB2IC0+IFdyaXRlLmJpbl93cml0ZV9hcnJheSBiaW5fd3JpdGVyX2VsLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2FycmF5IGJpbl9yZWFkZXJfZWwgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBSZWFkLmJpbl9yZWFkX2FycmF5IGJpbl9yZWFkZXJfZWwucmVhZCBidWYgfnBvc19yZWYpXG4gIDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYXJyYXlcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2FycmF5IHgxID0gU2hhcGUuYmluX3NoYXBlX2FycmF5IHgxXG5cbmxldCBiaW5fYXJyYXkgYmluX2VsID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9hcnJheSBiaW5fZWwuc2hhcGVcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2FycmF5IGJpbl9lbC53cml0ZXJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2FycmF5IGJpbl9lbC5yZWFkZXJcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UyIFwiaGFzaHRibFwiICopXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsIGJpbl93cml0ZXJfZWwxIGJpbl93cml0ZXJfZWwyID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IFNpemUuYmluX3NpemVfaGFzaHRibCBiaW5fd3JpdGVyX2VsMS5zaXplIGJpbl93cml0ZXJfZWwyLnNpemUgdilcbiAgOyB3cml0ZSA9XG4gICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgIFdyaXRlLmJpbl93cml0ZV9oYXNodGJsIGJpbl93cml0ZXJfZWwxLndyaXRlIGJpbl93cml0ZXJfZWwyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gIH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2hhc2h0YmwgYmluX3JlYWRlcl9lbDEgYmluX3JlYWRlcl9lbDIgPVxuICB7IHJlYWQgPVxuICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgIFJlYWQuYmluX3JlYWRfaGFzaHRibCBiaW5fcmVhZGVyX2VsMS5yZWFkIGJpbl9yZWFkZXJfZWwyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgeDEgeDIgPSBTaGFwZS5iaW5fc2hhcGVfaGFzaHRibCB4MSB4MlxuXG5sZXQgYmluX2hhc2h0YmwgYmluX2VsMSBiaW5fZWwyID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9oYXNodGJsIGJpbl9lbDEuc2hhcGUgYmluX2VsMi5zaGFwZVxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaGFzaHRibCBiaW5fZWwxLndyaXRlciBiaW5fZWwyLndyaXRlclxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaGFzaHRibCBiaW5fZWwxLnJlYWRlciBiaW5fZWwyLnJlYWRlclxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0MzJfdmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDMyX3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQzMl92ZWMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQzMl92ZWNcblxubGV0IGJpbl9mbG9hdDMyX3ZlYyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQzMl92ZWNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0MzJfdmVjXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDMyX3ZlY1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImZsb2F0NjRfdmVjXCIgKilcbmxldCBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdDY0X3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfZmxvYXQ2NF92ZWMgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXQ2NF92ZWNcblxubGV0IGJpbl9mbG9hdDY0X3ZlYyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfZmxvYXQ2NF92ZWNcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0NjRfdmVjXG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdDY0X3ZlY1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcInZlY1wiICopXG5sZXQgYmluX3dyaXRlcl92ZWMgPSB7IHNpemUgPSBTaXplLmJpbl9zaXplX3ZlYzsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfdmVjIH1cbmxldCBiaW5fcmVhZGVyX3ZlYyA9IHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfdmVjOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJ2ZWNcIiB9XG5sZXQgYmluX3NoYXBlX3ZlYyA9IFNoYXBlLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fdmVjID0geyBzaGFwZSA9IGJpbl9zaGFwZV92ZWM7IHdyaXRlciA9IGJpbl93cml0ZXJfdmVjOyByZWFkZXIgPSBiaW5fcmVhZGVyX3ZlYyB9XG5cbigqJCBta19iYXNlIFwiZmxvYXQzMl9tYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0MzJfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDMyX21hdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDMyX21hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQzMl9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0MzJfbWF0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDMyX21hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxuXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDMyX21hdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXQ2NF9tYXRcIiAqKVxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2Zsb2F0NjRfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdDY0X21hdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9mbG9hdDY0X21hdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfZmxvYXQ2NF9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0NjRfbWF0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9mbG9hdDY0X21hdCA9IFNoYXBlLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdDY0X21hdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibWF0XCIgKilcbmxldCBiaW5fd3JpdGVyX21hdCA9IHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbWF0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9tYXQgfVxubGV0IGJpbl9yZWFkZXJfbWF0ID0geyByZWFkID0gUmVhZC5iaW5fcmVhZF9tYXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiIH1cbmxldCBiaW5fc2hhcGVfbWF0ID0gU2hhcGUuYmluX3NoYXBlX21hdFxubGV0IGJpbl9tYXQgPSB7IHNoYXBlID0gYmluX3NoYXBlX21hdDsgd3JpdGVyID0gYmluX3dyaXRlcl9tYXQ7IHJlYWRlciA9IGJpbl9yZWFkZXJfbWF0IH1cblxuKCokIG1rX2Jhc2UgXCJiaWdzdHJpbmdcIiAqKVxubGV0IGJpbl93cml0ZXJfYmlnc3RyaW5nID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9iaWdzdHJpbmc7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2JpZ3N0cmluZyB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9iaWdzdHJpbmcgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZzsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiYmlnc3RyaW5nXCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9iaWdzdHJpbmcgPSBTaGFwZS5iaW5fc2hhcGVfYmlnc3RyaW5nXG5cbmxldCBiaW5fYmlnc3RyaW5nID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9iaWdzdHJpbmdcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2JpZ3N0cmluZ1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfYmlnc3RyaW5nXG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiZmxvYXRhcnJheVwiICopXG5sZXQgYmluX3dyaXRlcl9mbG9hdGFycmF5ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdGFycmF5OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9mbG9hdGFycmF5IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2Zsb2F0YXJyYXkgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0YXJyYXk7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0YXJyYXlcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2Zsb2F0YXJyYXkgPSBTaGFwZS5iaW5fc2hhcGVfZmxvYXRhcnJheVxuXG5sZXQgYmluX2Zsb2F0YXJyYXkgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2Zsb2F0YXJyYXlcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2Zsb2F0YXJyYXlcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2Zsb2F0YXJyYXlcbiAgfVxuOztcblxuKCokKilcblxudHlwZSBmbG9hdF9hcnJheSA9IGZsb2F0IGFycmF5XG5cbmluY2x1ZGUgc3RydWN0XG4gICgqJCBta19iYXNlIFwiZmxvYXRfYXJyYXlcIiAqKVxuICBsZXQgYmluX3dyaXRlcl9mbG9hdF9hcnJheSA9XG4gICAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9mbG9hdF9hcnJheTsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRfYXJyYXkgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX2Zsb2F0X2FycmF5ID1cbiAgICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0X2FycmF5OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdF9hcnJheVwiIH1cbiAgOztcblxuICBsZXQgYmluX3NoYXBlX2Zsb2F0X2FycmF5ID0gU2hhcGUuYmluX3NoYXBlX2Zsb2F0X2FycmF5XG5cbiAgbGV0IGJpbl9mbG9hdF9hcnJheSA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV9mbG9hdF9hcnJheVxuICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl9mbG9hdF9hcnJheVxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl9mbG9hdF9hcnJheVxuICAgIH1cbiAgOztcbiAgKCokKilcbmVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuKCokIG1rX2Jhc2UgXCJ2YXJpYW50X2ludFwiICopXG5sZXQgYmluX3dyaXRlcl92YXJpYW50X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfdmFyaWFudF9pbnQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX3ZhcmlhbnRfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX3ZhcmlhbnRfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF92YXJpYW50X2ludDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwidmFyaWFudF9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX3ZhcmlhbnRfaW50ID0gU2hhcGUuYmluX3NoYXBlX3ZhcmlhbnRfaW50XG5cbmxldCBiaW5fdmFyaWFudF9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX3ZhcmlhbnRfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl92YXJpYW50X2ludFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdmFyaWFudF9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfOGJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfOGJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzhiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF84Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF84Yml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfOGJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzhiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF84Yml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF84Yml0XG5cbmxldCBiaW5faW50XzhiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF84Yml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfOGJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzhiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnRfMTZiaXRcIiAqKVxubGV0IGJpbl93cml0ZXJfaW50XzE2Yml0ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9pbnRfMTZiaXQ7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludF8xNmJpdCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9pbnRfMTZiaXQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX2ludF8xNmJpdDsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50XzE2Yml0XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9pbnRfMTZiaXQgPSBTaGFwZS5iaW5fc2hhcGVfaW50XzE2Yml0XG5cbmxldCBiaW5faW50XzE2Yml0ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9pbnRfMTZiaXRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX2ludF8xNmJpdFxuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50XzE2Yml0XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwiaW50XzMyYml0XCIgKilcbmxldCBiaW5fd3JpdGVyX2ludF8zMmJpdCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfaW50XzMyYml0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9pbnRfMzJiaXQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50XzMyYml0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9pbnRfMzJiaXQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcImludF8zMmJpdFwiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50XzMyYml0ID0gU2hhcGUuYmluX3NoYXBlX2ludF8zMmJpdFxuXG5sZXQgYmluX2ludF8zMmJpdCA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50XzMyYml0XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9pbnRfMzJiaXRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX2ludF8zMmJpdFxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcImludF82NGJpdFwiICopXG5sZXQgYmluX3dyaXRlcl9pbnRfNjRiaXQgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludF82NGJpdDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfaW50XzY0Yml0IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX2ludF82NGJpdCA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50XzY0Yml0OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJpbnRfNjRiaXRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX2ludF82NGJpdCA9IFNoYXBlLmJpbl9zaGFwZV9pbnRfNjRiaXRcblxubGV0IGJpbl9pbnRfNjRiaXQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX2ludF82NGJpdFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50XzY0Yml0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9pbnRfNjRiaXRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJpbnQ2NF9iaXRzXCIgKilcbmxldCBiaW5fd3JpdGVyX2ludDY0X2JpdHMgPVxuICB7IHNpemUgPSBTaXplLmJpbl9zaXplX2ludDY0X2JpdHM7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX2ludDY0X2JpdHMgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfaW50NjRfYml0cyA9XG4gIHsgcmVhZCA9IFJlYWQuYmluX3JlYWRfaW50NjRfYml0czsgdnRhZ19yZWFkID0gdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRfYml0c1wiIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfaW50NjRfYml0cyA9IFNoYXBlLmJpbl9zaGFwZV9pbnQ2NF9iaXRzXG5cbmxldCBiaW5faW50NjRfYml0cyA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfaW50NjRfYml0c1xuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfaW50NjRfYml0c1xuICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfaW50NjRfYml0c1xuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcmsxNl9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazE2X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazE2X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazE2X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrMTZfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrMTZfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmsxNl9pbnRcblxubGV0IGJpbl9uZXR3b3JrMTZfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrMTZfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMTZfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrMTZfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazMyX2ludFwiICopXG5sZXQgYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50ID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrMzJfaW50IH1cbjs7XG5cbmxldCBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmszMl9pbnQ7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmszMl9pbnRcIiB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcmszMl9pbnQgPSBTaGFwZS5iaW5fc2hhcGVfbmV0d29yazMyX2ludFxuXG5sZXQgYmluX25ldHdvcmszMl9pbnQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcmszMl9pbnRcbiAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX25ldHdvcmszMl9pbnRcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnRcbiAgfVxuOztcblxuKCokIG1rX2Jhc2UgXCJuZXR3b3JrMzJfaW50MzJcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazMyX2ludDMyID1cbiAgeyBzaXplID0gU2l6ZS5iaW5fc2l6ZV9uZXR3b3JrMzJfaW50MzI7IHdyaXRlID0gV3JpdGUuYmluX3dyaXRlX25ldHdvcmszMl9pbnQzMiB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrMzJfaW50MzIgPVxuICB7IHJlYWQgPSBSZWFkLmJpbl9yZWFkX25ldHdvcmszMl9pbnQzMlxuICA7IHZ0YWdfcmVhZCA9IHZhcmlhbnRfd3JvbmdfdHlwZSBcIm5ldHdvcmszMl9pbnQzMlwiXG4gIH1cbjs7XG5cbmxldCBiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcmszMl9pbnQzMlxuXG5sZXQgYmluX25ldHdvcmszMl9pbnQzMiA9XG4gIHsgc2hhcGUgPSBiaW5fc2hhcGVfbmV0d29yazMyX2ludDMyXG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrMzJfaW50MzJcbiAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX25ldHdvcmszMl9pbnQzMlxuICB9XG47O1xuXG4oKiQgbWtfYmFzZSBcIm5ldHdvcms2NF9pbnRcIiAqKVxubGV0IGJpbl93cml0ZXJfbmV0d29yazY0X2ludCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazY0X2ludDsgd3JpdGUgPSBXcml0ZS5iaW5fd3JpdGVfbmV0d29yazY0X2ludCB9XG47O1xuXG5sZXQgYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrNjRfaW50OyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrNjRfaW50XCIgfVxuOztcblxubGV0IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50ID0gU2hhcGUuYmluX3NoYXBlX25ldHdvcms2NF9pbnRcblxubGV0IGJpbl9uZXR3b3JrNjRfaW50ID1cbiAgeyBzaGFwZSA9IGJpbl9zaGFwZV9uZXR3b3JrNjRfaW50XG4gIDsgd3JpdGVyID0gYmluX3dyaXRlcl9uZXR3b3JrNjRfaW50XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50XG4gIH1cbjs7XG5cbigqJCBta19iYXNlIFwibmV0d29yazY0X2ludDY0XCIgKilcbmxldCBiaW5fd3JpdGVyX25ldHdvcms2NF9pbnQ2NCA9XG4gIHsgc2l6ZSA9IFNpemUuYmluX3NpemVfbmV0d29yazY0X2ludDY0OyB3cml0ZSA9IFdyaXRlLmJpbl93cml0ZV9uZXR3b3JrNjRfaW50NjQgfVxuOztcblxubGV0IGJpbl9yZWFkZXJfbmV0d29yazY0X2ludDY0ID1cbiAgeyByZWFkID0gUmVhZC5iaW5fcmVhZF9uZXR3b3JrNjRfaW50NjRcbiAgOyB2dGFnX3JlYWQgPSB2YXJpYW50X3dyb25nX3R5cGUgXCJuZXR3b3JrNjRfaW50NjRcIlxuICB9XG47O1xuXG5sZXQgYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NCA9IFNoYXBlLmJpbl9zaGFwZV9uZXR3b3JrNjRfaW50NjRcblxubGV0IGJpbl9uZXR3b3JrNjRfaW50NjQgPVxuICB7IHNoYXBlID0gYmluX3NoYXBlX25ldHdvcms2NF9pbnQ2NFxuICA7IHdyaXRlciA9IGJpbl93cml0ZXJfbmV0d29yazY0X2ludDY0XG4gIDsgcmVhZGVyID0gYmluX3JlYWRlcl9uZXR3b3JrNjRfaW50NjRcbiAgfVxuOztcblxuKCokKilcbmxldCBiaW5fd3JpdGVyX2FycmF5X25vX2xlbmd0aCBiaW5fd3JpdGVyX2VsID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IChTaXplLmJpbl9zaXplX2FycmF5X25vX2xlbmd0aCBbQHdhcm5pbmcgXCItM1wiXSkgYmluX3dyaXRlcl9lbC5zaXplIHYpXG4gIDsgd3JpdGUgPVxuICAgICAgKGZ1biBidWYgfnBvcyB2IC0+XG4gICAgICAgICAoV3JpdGUuYmluX3dyaXRlX2FycmF5X25vX2xlbmd0aCBbQHdhcm5pbmcgXCItM1wiXSkgYmluX3dyaXRlcl9lbC53cml0ZSBidWYgfnBvcyB2KVxuICB9XG47O1xuXG4oKiBDb252ZXJzaW9uIG9mIGJpbmFibGUgdHlwZXMgKilcblxubGV0IGNudl93cml0ZXIgY252IHRwX2NsYXNzID1cbiAgeyBzaXplID0gKGZ1biB2IC0+IHRwX2NsYXNzLnNpemUgKGNudiB2KSlcbiAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiB0cF9jbGFzcy53cml0ZSBidWYgfnBvcyAoY252IHYpKVxuICB9XG47O1xuXG5sZXQgY252X3JlYWRlciBjbnYgdHBfY2xhc3MgPVxuICB7IHJlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiAtPiBjbnYgKHRwX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmKSlcbiAgOyB2dGFnX3JlYWQgPSAoZnVuIGJ1ZiB+cG9zX3JlZiB2dGFnIC0+IGNudiAodHBfY2xhc3MudnRhZ19yZWFkIGJ1ZiB+cG9zX3JlZiB2dGFnKSlcbiAgfVxuOztcblxubGV0IGNudiBmb3Jfc2hhcGUgZm9yX3dyaXRlciBmb3JfcmVhZGVyIHRwX2NsYXNzID1cbiAgeyBzaGFwZSA9IGZvcl9zaGFwZSB0cF9jbGFzcy5zaGFwZVxuICA7IHdyaXRlciA9IGNudl93cml0ZXIgZm9yX3dyaXRlciB0cF9jbGFzcy53cml0ZXJcbiAgOyByZWFkZXIgPSBjbnZfcmVhZGVyIGZvcl9yZWFkZXIgdHBfY2xhc3MucmVhZGVyXG4gIH1cbjs7XG4iLCIoKiBCaW5hYmxlOiBzaWduYXR1cmVzIGRlZmluaW5nIGdlbmVyYXRlZCBmdW5jdGlvbnMgZm9yIHRoZSBiaW5hcnkgcHJvdG9jb2wuXG4gICBbUywgUzEsIGV0Y10gYXJlIHRoZSBzaWduYXR1cmVzIHNhdGlzZmllZCBieSB0aGUgZ2VuZXJhdGVkIGNvZGUgYW5kXG4gICBbTWluaW1hbC5TLCBNaW5pbWFsLlMxLCBldGNdIGFyZSB0aGUgc2lnbmF0dXJlcyB0aGF0IGdlbmVyYXRlZCBjb2RlIHVzZXMuICopXG5cbigqIHRoZSBzdWJzZXQgb2YgUyBjb250YWluaW5nIG9ubHkgZnVuY3Rpb25zLCBzbyB0aGF0IG9uZSBjYW4gcmVjdXJzaXZlbHkgZGVmaW5lIG1vZHVsZXNcbiAgIGltcGxlbWVudGluZyB0aGlzIGludGVyZmFjZSAqKVxubW9kdWxlIHR5cGUgU19vbmx5X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgYmluX3NpemVfdCA6IHQgU2l6ZS5zaXplclxuICB2YWwgYmluX3dyaXRlX3QgOiB0IFdyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcblxuICAoKipcbiAgICAgVGhpcyBmdW5jdGlvbiBvbmx5IG5lZWRzIGltcGxlbWVudGF0aW9uIGlmIFt0XSBleHBvc2VkIHRvIGJlIGEgcG9seW1vcnBoaWMgdmFyaWFudC5cbiAgICAgRGVzcGl0ZSB3aGF0IHRoZSB0eXBlIHJlYWRzLCB0aGlzIGRvZXMgKm5vdCogcHJvZHVjZSBhIGZ1bmN0aW9uIGFmdGVyIHJlYWRpbmc7XG4gICAgIGluc3RlYWQgaXQgdGFrZXMgdGhlIGNvbnN0cnVjdG9yIHRhZyAoaW50KSBiZWZvcmUgcmVhZGluZyBhbmQgcmVhZHMgdGhlIHJlc3Qgb2YgdGhlXG4gICAgIHZhcmlhbnQgW3RdIGFmdGVyd2FyZHMuXG4gICopXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6IChpbnQgLT4gdCkgUmVhZC5yZWFkZXJcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgdFxuXG4gIGluY2x1ZGUgU19vbmx5X2Z1bmN0aW9ucyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICB2YWwgYmluX3dyaXRlcl90IDogdCBUeXBlX2NsYXNzLndyaXRlclxuICB2YWwgYmluX3JlYWRlcl90IDogdCBUeXBlX2NsYXNzLnJlYWRlclxuICB2YWwgYmluX3QgOiB0IFR5cGVfY2xhc3MudFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBiaW5fc2hhcGVfdCA6IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYSB0KSBXcml0ZS53cml0ZXIxXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYSB0KSBSZWFkLnJlYWRlcjFcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdhIHQpIFR5cGVfY2xhc3MuUzEucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2EgdCkgVHlwZV9jbGFzcy5TMS50XG5lbmRcblxubW9kdWxlIHR5cGUgUzIgPSBzaWdcbiAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBTaXplLnNpemVyMlxuICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIHZhbCBfX2Jpbl9yZWFkX3RfXyA6ICgnYSwgJ2IsIGludCAtPiAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgdmFsIGJpbl93cml0ZXJfdCA6ICgnYSwgJ2IsICgnYSwgJ2IpIHQpIFR5cGVfY2xhc3MuUzIud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnJlYWRlclxuICB2YWwgYmluX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBUeXBlX2NsYXNzLlMyLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgU2l6ZS5zaXplcjNcbiAgdmFsIGJpbl93cml0ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBXcml0ZS53cml0ZXIzXG4gIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCAnYiwgJ2MsIGludCAtPiAoJ2EsICdiLCAnYykgdCkgUmVhZC5yZWFkZXIzXG4gIHZhbCBiaW5fd3JpdGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMud3JpdGVyXG4gIHZhbCBiaW5fcmVhZGVyX3QgOiAoJ2EsICdiLCAnYywgKCdhLCAnYiwgJ2MpIHQpIFR5cGVfY2xhc3MuUzMucmVhZGVyXG4gIHZhbCBiaW5fdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgVHlwZV9jbGFzcy5TMy50XG5lbmRcblxubW9kdWxlIE1pbmltYWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogdCBTaXplLnNpemVyXG4gICAgdmFsIGJpbl93cml0ZV90IDogdCBXcml0ZS53cml0ZXJcbiAgICB2YWwgYmluX3JlYWRfdCA6IHQgUmVhZC5yZWFkZXJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoaW50IC0+IHQpIFJlYWQucmVhZGVyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnRcbiAgICB2YWwgYmluX3NpemVfdCA6ICgnYSwgJ2EgdCkgU2l6ZS5zaXplcjFcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdhIHQpIFdyaXRlLndyaXRlcjFcbiAgICB2YWwgYmluX3JlYWRfdCA6ICgnYSwgJ2EgdCkgUmVhZC5yZWFkZXIxXG4gICAgdmFsIF9fYmluX3JlYWRfdF9fIDogKCdhLCBpbnQgLT4gJ2EgdCkgUmVhZC5yZWFkZXIxXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgYmluX3NoYXBlX3QgOiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgKCdhLCAnYikgdCkgU2l6ZS5zaXplcjJcbiAgICB2YWwgYmluX3dyaXRlX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBXcml0ZS53cml0ZXIyXG4gICAgdmFsIGJpbl9yZWFkX3QgOiAoJ2EsICdiLCAoJ2EsICdiKSB0KSBSZWFkLnJlYWRlcjJcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCBpbnQgLT4gKCdhLCAnYikgdCkgUmVhZC5yZWFkZXIyXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMzID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudCAtPiBTaGFwZS50IC0+IFNoYXBlLnQgLT4gU2hhcGUudFxuICAgIHZhbCBiaW5fc2l6ZV90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBTaXplLnNpemVyM1xuICAgIHZhbCBiaW5fd3JpdGVfdCA6ICgnYSwgJ2IsICdjLCAoJ2EsICdiLCAnYykgdCkgV3JpdGUud3JpdGVyM1xuICAgIHZhbCBiaW5fcmVhZF90IDogKCdhLCAnYiwgJ2MsICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgICB2YWwgX19iaW5fcmVhZF90X18gOiAoJ2EsICdiLCAnYywgaW50IC0+ICgnYSwgJ2IsICdjKSB0KSBSZWFkLnJlYWRlcjNcbiAgZW5kXG5lbmRcbiIsIigqIFV0aWxzOiB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgdXNlciBjb252ZW5pZW5jZSAqKVxuXG5vcGVuIENvbW1vblxub3BlbiBTaXplXG5vcGVuIFR5cGVfY2xhc3NcbmluY2x1ZGUgVXRpbHNfaW50ZlxuXG5sZXQgc2l6ZV9oZWFkZXJfbGVuZ3RoID0gOFxubGV0IGJpbl93cml0ZV9zaXplX2hlYWRlciA9IFdyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXRcbmxldCBiaW5fcmVhZF9zaXplX2hlYWRlciA9IFJlYWQuYmluX3JlYWRfaW50XzY0Yml0XG5cbmxldCBiaW5fZHVtcCA/KGhlYWRlciA9IGZhbHNlKSB3cml0ZXIgdiA9XG4gIGxldCBidWYsIHBvcywgcG9zX2xlbiA9XG4gICAgbGV0IHZfbGVuID0gd3JpdGVyLnNpemUgdiBpblxuICAgIGlmIGhlYWRlclxuICAgIHRoZW4gKFxuICAgICAgbGV0IHRvdF9sZW4gPSB2X2xlbiArIHNpemVfaGVhZGVyX2xlbmd0aCBpblxuICAgICAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgdG90X2xlbiBpblxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zaXplX2hlYWRlciBidWYgfnBvczowIHZfbGVuIGluXG4gICAgICBidWYsIHBvcywgcG9zICsgdl9sZW4pXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYnVmID0gY3JlYXRlX2J1ZiB2X2xlbiBpblxuICAgICAgYnVmLCAwLCB2X2xlbilcbiAgaW5cbiAgbGV0IHBvcyA9IHdyaXRlci53cml0ZSBidWYgfnBvcyB2IGluXG4gIGlmIHBvcyA9IHBvc19sZW5cbiAgdGhlbiBidWZcbiAgZWxzZSBmYWlsd2l0aCBcIkJpbl9wcm90LlV0aWxzLmJpbl9kdW1wOiBzaXplIGNoYW5nZWQgZHVyaW5nIHdyaXRpbmdcIlxuOztcblxuKCogUmVhZGluZyBmcm9tIHN0cmVhbXMgKilcblxubGV0IGJpbl9yZWFkX3N0cmVhbSA/bWF4X3NpemUgfnJlYWQgcmVhZGVyID1cbiAgbGV0IGJ1ZiA9IGNyZWF0ZV9idWYgc2l6ZV9oZWFkZXJfbGVuZ3RoIGluXG4gIHJlYWQgYnVmIH5wb3M6MCB+bGVuOnNpemVfaGVhZGVyX2xlbmd0aDtcbiAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICBsZXQgbGVuID0gYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gIG1hdGNoIG1heF9zaXplIHdpdGhcbiAgfCBTb21lIG1heF9zaXplIHdoZW4gbGVuID4gbWF4X3NpemUgLT5cbiAgICBmYWlsd2l0aFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcIkJpbl9wcm90LlV0aWxzLmJpbl9yZWFkX3N0cmVhbTogc2l6ZSBleGNlZWRzIG1heF9zaXplOiAlZCA+ICVkXCJcbiAgICAgICAgIGxlblxuICAgICAgICAgbWF4X3NpemUpXG4gIHwgXyAtPlxuICAgIGxldCBidWYgPSBpZiBsZW4gPiBzaXplX2hlYWRlcl9sZW5ndGggdGhlbiBjcmVhdGVfYnVmIGxlbiBlbHNlIGJ1ZiBpblxuICAgIHJlYWQgYnVmIH5wb3M6MCB+bGVuO1xuICAgIHBvc19yZWYgOj0gMDtcbiAgICBsZXQgcmVzID0gcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgaWYgIXBvc19yZWYgPSBsZW5cbiAgICB0aGVuIHJlc1xuICAgIGVsc2UgKFxuICAgICAgbGV0IG1zZyA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgXCJCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zdHJlYW06IHByb3RvY29sIGxpZWQgYWJvdXQgbGVuZ3RoIG9mIHZhbHVlOiBleHBlY3RlZCBcXFxuICAgICAgICAgICAlZCwgcmVjZWl2ZWQgJWRcIlxuICAgICAgICAgIGxlblxuICAgICAgICAgICFwb3NfcmVmXG4gICAgICBpblxuICAgICAgZmFpbHdpdGggbXNnKVxuOztcblxuKCogQ29udmVyc2lvbiBvZiBiaW5hYmxlIHR5cGVzICopXG5cbm1vZHVsZSBPZl9taW5pbWFsIChTIDogQmluYWJsZS5NaW5pbWFsLlMpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgYmluX3dyaXRlcl90ID0geyBzaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IHJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gIGxldCBiaW5fdCA9IHsgc2hhcGUgPSBiaW5fc2hhcGVfdDsgd3JpdGVyID0gYmluX3dyaXRlcl90OyByZWFkZXIgPSBiaW5fcmVhZGVyX3QgfVxuZW5kXG5cbmxldCBtYXliZV9hbm5vdGF0ZV9zaGFwZSBtYXliZV91dWlkIHNoYXBlID1cbiAgbWF0Y2ggbWF5YmVfdXVpZCB3aXRoXG4gIHwgTm9uZSAtPiBzaGFwZVxuICB8IFNvbWUgdXVpZCAtPiBTaGFwZS5hbm5vdGF0ZSB1dWlkIHNoYXBlXG47O1xuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE9mX21pbmltYWwgKHN0cnVjdFxuICAgICAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICAgICAgdHlwZSB0ID0gUy50XG5cbiAgICAgIGxldCBiaW5fc2hhcGVfdCA9IG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IEIuYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBCLmJpbl9zaXplX3QgKFMudG9fYmluYWJsZSB0KVxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPSBCLmJpbl93cml0ZV90IGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9IFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZilcbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbiA9IFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBidWYgfnBvc19yZWYgbilcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwgPVxuICAgIG1heWJlX2Fubm90YXRlX3NoYXBlIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5IChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbClcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbCB0ID0gQi5iaW5fc2l6ZV90IGJpbl9zaXplX2VsIChTLnRvX2JpbmFibGUgdClcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbCBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPSAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlci53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIgPVxuICAgIHsgcmVhZCA9IChmdW4gYnVmIH5wb3NfcmVmIC0+IGJpbl9yZWFkX3QgYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gX2J1ZiB+cG9zX3JlZiBfbiAtPlxuICAgICAgICAgICByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxLmJpbl9yZWFkZXJfdFwiICFwb3NfcmVmKVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgdHlwZV9jbGFzcyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3Muc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX2dlbiAoUyA6IHNpZ1xuICAgIGluY2x1ZGUgTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRfc3BlY1xuXG4gICAgdmFsIG1heWJlX2NhbGxlcl9pZGVudGl0eSA6IFNoYXBlLlV1aWQudCBvcHRpb25cbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBTLkJpbmFibGVcblxuICBsZXQgYmluX3NoYXBlX3QgYmluX3NoYXBlX2VsMSBiaW5fc2hhcGVfZWwyID1cbiAgICBtYXliZV9hbm5vdGF0ZV9zaGFwZVxuICAgICAgUy5tYXliZV9jYWxsZXJfaWRlbnRpdHlcbiAgICAgIChCLmJpbl9zaGFwZV90IGJpbl9zaGFwZV9lbDEgYmluX3NoYXBlX2VsMilcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIHQgPVxuICAgIEIuYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIHQgPVxuICAgIEIuYmluX3dyaXRlX3QgYmluX3dyaXRlX2VsMSBiaW5fd3JpdGVfZWwyIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiA9XG4gICAgUy5vZl9iaW5hYmxlIChCLmJpbl9yZWFkX3QgYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBidWYgfnBvc19yZWYpXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJ1ZiB+cG9zX3JlZiBuKVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBfYnVmIH5wb3NfcmVmIF9uIC0+XG4gICAgICAgICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTIuYmluX3JlYWRlcl90XCIgIXBvc19yZWYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZTNfZ2VuIChTIDogc2lnXG4gICAgaW5jbHVkZSBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjXG5cbiAgICB2YWwgbWF5YmVfY2FsbGVyX2lkZW50aXR5IDogU2hhcGUuVXVpZC50IG9wdGlvblxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IFMuQmluYWJsZVxuXG4gIGxldCBiaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMyA9XG4gICAgbWF5YmVfYW5ub3RhdGVfc2hhcGVcbiAgICAgIFMubWF5YmVfY2FsbGVyX2lkZW50aXR5XG4gICAgICAoQi5iaW5fc2hhcGVfdCBiaW5fc2hhcGVfZWwxIGJpbl9zaGFwZV9lbDIgYmluX3NoYXBlX2VsMylcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9lbDEgYmluX3NpemVfZWwyIGJpbl9zaXplX2VsMyB0ID1cbiAgICBCLmJpbl9zaXplX3QgYmluX3NpemVfZWwxIGJpbl9zaXplX2VsMiBiaW5fc2l6ZV9lbDMgKFMudG9fYmluYWJsZSB0KVxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfZWwxIGJpbl93cml0ZV9lbDIgYmluX3dyaXRlX2VsMyBidWYgfnBvcyB0ID1cbiAgICBCLmJpbl93cml0ZV90IGJpbl93cml0ZV9lbDEgYmluX3dyaXRlX2VsMiBiaW5fd3JpdGVfZWwzIGJ1ZiB+cG9zIChTLnRvX2JpbmFibGUgdClcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgPVxuICAgIFMub2ZfYmluYWJsZSAoQi5iaW5fcmVhZF90IGJpbl9yZWFkX2VsMSBiaW5fcmVhZF9lbDIgYmluX3JlYWRfZWwzIGJ1ZiB+cG9zX3JlZilcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gYmluX3JlYWRfZWwxIGJpbl9yZWFkX2VsMiBiaW5fcmVhZF9lbDMgYnVmIH5wb3NfcmVmIG4gPVxuICAgIFMub2ZfYmluYWJsZSAoQi5fX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZF9lbDEgYmluX3JlYWRfZWwyIGJpbl9yZWFkX2VsMyBidWYgfnBvc19yZWYgbilcbiAgOztcblxuICBsZXQgYmluX3dyaXRlcl90IGJpbl93cml0ZXIxIGJpbl93cml0ZXIyIGJpbl93cml0ZXIzID1cbiAgICB7IHNpemUgPSAoZnVuIHYgLT4gYmluX3NpemVfdCBiaW5fd3JpdGVyMS5zaXplIGJpbl93cml0ZXIyLnNpemUgYmluX3dyaXRlcjMuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT5cbiAgICAgICAgICAgYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYmluX3dyaXRlcjMud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiBiaW5fcmVhZGVyMyA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT5cbiAgICAgICAgICAgYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYmluX3JlYWRlcjMucmVhZCBidWYgfnBvc19yZWYpXG4gICAgOyB2dGFnX3JlYWQgPVxuICAgICAgICAoZnVuIF9idWYgfnBvc19yZWYgX24gLT5cbiAgICAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMy5iaW5fcmVhZGVyX3RcIiAhcG9zX3JlZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MxIHR5cGVfY2xhc3MyIHR5cGVfY2xhc3MzID1cbiAgICB7IHNoYXBlID0gYmluX3NoYXBlX3QgdHlwZV9jbGFzczEuc2hhcGUgdHlwZV9jbGFzczIuc2hhcGUgdHlwZV9jbGFzczMuc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCB0eXBlX2NsYXNzMS53cml0ZXIgdHlwZV9jbGFzczIud3JpdGVyIHR5cGVfY2xhc3MzLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXIgdHlwZV9jbGFzczMucmVhZGVyXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlX3dpdGhfdXVpZF9zcGVjKSA9IE1ha2VfYmluYWJsZV9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlMV93aXRoX3V1aWQgKFMgOiBNYWtlX2JpbmFibGUxX3dpdGhfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTFfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBTb21lIFMuY2FsbGVyX2lkZW50aXR5XG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChTIDogTWFrZV9iaW5hYmxlMl93aXRoX3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUyX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gU29tZSBTLmNhbGxlcl9pZGVudGl0eVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTNfd2l0aF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlM19nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IFNvbWUgUy5jYWxsZXJfaWRlbnRpdHlcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGVfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZTFfd2l0aG91dF91dWlkIChTIDogTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRfc3BlYykgPVxuICBNYWtlX2JpbmFibGUxX2dlbiAoc3RydWN0XG4gICAgaW5jbHVkZSBTXG5cbiAgICBsZXQgbWF5YmVfY2FsbGVyX2lkZW50aXR5ID0gTm9uZVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUyX3dpdGhvdXRfdXVpZCAoUyA6IE1ha2VfYmluYWJsZTJfd2l0aG91dF91dWlkX3NwZWMpID1cbiAgTWFrZV9iaW5hYmxlMl9nZW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgU1xuXG4gICAgbGV0IG1heWJlX2NhbGxlcl9pZGVudGl0eSA9IE5vbmVcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKFMgOiBNYWtlX2JpbmFibGUzX3dpdGhvdXRfdXVpZF9zcGVjKSA9XG4gIE1ha2VfYmluYWJsZTNfZ2VuIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFNcblxuICAgIGxldCBtYXliZV9jYWxsZXJfaWRlbnRpdHkgPSBOb25lXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZSA9IE1ha2VfYmluYWJsZV93aXRob3V0X3V1aWRcbm1vZHVsZSBNYWtlX2JpbmFibGUxID0gTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWRcbm1vZHVsZSBNYWtlX2JpbmFibGUyID0gTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWRcbm1vZHVsZSBNYWtlX2JpbmFibGUzID0gTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWRcblxubGV0IHdpdGhfbW9kdWxlX25hbWUgZiB+bW9kdWxlX25hbWUgZnVuY3Rpb25fbmFtZSA9XG4gIG1hdGNoIG1vZHVsZV9uYW1lIHdpdGhcbiAgfCBOb25lIC0+IGYgZnVuY3Rpb25fbmFtZVxuICB8IFNvbWUgbW9kdWxlX25hbWUgLT4gUHJpbnRmLmtzcHJpbnRmIGYgXCIlcy4lc1wiIG1vZHVsZV9uYW1lIGZ1bmN0aW9uX25hbWVcbjs7XG5cbmxldCByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiA9IHdpdGhfbW9kdWxlX25hbWUgcmFpc2VfY29uY3VycmVudF9tb2RpZmljYXRpb25cblxubGV0IHJhaXNlX3JlYWRfdG9vX211Y2ggPVxuICB3aXRoX21vZHVsZV9uYW1lXG4gICAgKFByaW50Zi5rc3ByaW50ZiBmYWlsd2l0aCBcIiVzOiB0cmllZCB0byByZWFkIG1vcmUgZWxlbWVudHMgdGhhbiBhdmFpbGFibGVcIilcbjs7XG5cbmxldCByYWlzZV9yZWFkX25vdF9lbm91Z2ggPVxuICB3aXRoX21vZHVsZV9uYW1lIChQcmludGYua3NwcmludGYgZmFpbHdpdGggXCIlczogZGlkbid0IHJlYWQgYWxsIGVsZW1lbnRzXCIpXG47O1xuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlIChTIDogTWFrZV9pdGVyYWJsZV9iaW5hYmxlX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcIjY1OTIzNzFhLTQ5OTQtMTFlNi05MjNhLTc3NDhlNDE4Mjc2NFwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9idWYgfnBvc19yZWYgX24gPSByYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbiAgbGV0IGJpbl93cml0ZXJfdCA9IHsgc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuICBsZXQgYmluX3JlYWRlcl90ID0geyByZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICBsZXQgYmluX3QgPSB7IHNoYXBlID0gYmluX3NoYXBlX3Q7IHdyaXRlciA9IGJpbl93cml0ZXJfdDsgcmVhZGVyID0gYmluX3JlYWRlcl90IH1cbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTFfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQgPVxuICAgIFNoYXBlLihcbiAgICAgIGJhc2V0eXBlXG4gICAgICAgIGNhbGxlcl9pZGVudGl0eVxuICAgICAgICBbIGJhc2V0eXBlXG4gICAgICAgICAgICAoVXVpZC5vZl9zdHJpbmcgXCJhYzhhOWZmNC00OTk0LTExZTYtOWExYi05ZmI0ZTkzM2JkOWRcIilcbiAgICAgICAgICAgIFsgUy5iaW5fc2hhcGVfZWwgdCBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSB0ID1cbiAgICBsZXQgc2l6ZV9yZWYgPSByZWYgMCBpblxuICAgIGxldCBjbnRfcmVmID0gcmVmIDAgaW5cbiAgICBpdGVyIHQgfmY6KGZ1biBlbCAtPlxuICAgICAgc2l6ZV9yZWYgOj0gIXNpemVfcmVmICsgYmluX3NpemVfZWwgYmluX3NpemVfYSBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBidWYgfnBvc19yZWZcbiAgICBpblxuICAgIGxldCByZXN1bHQgPSBpbml0IH5sZW4gfm5leHQgaW5cbiAgICBpZiAhaWR4IDwgbGVuIHRoZW4gcmFpc2VfcmVhZF9ub3RfZW5vdWdoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICByZXN1bHRcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gX2Jpbl9yZWFkX2EgX2J1ZiB+cG9zX3JlZiBfbiA9IHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlciA9XG4gICAgeyBzaXplID0gKGZ1biB2IC0+IGJpbl9zaXplX3QgYmluX3dyaXRlci5zaXplIHYpXG4gICAgOyB3cml0ZSA9IChmdW4gYnVmIH5wb3MgdiAtPiBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyLndyaXRlIGJ1ZiB+cG9zIHYpXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgYmluX3JlYWRlciA9XG4gICAgeyByZWFkID0gKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID0gKGZ1biBidWYgfnBvc19yZWYgX24gLT4gX19iaW5fcmVhZF90X18gYmluX3JlYWRlci5yZWFkIGJ1ZiB+cG9zX3JlZiBfbilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl90IHR5cGVfY2xhc3MgPVxuICAgIHsgc2hhcGUgPSBiaW5fc2hhcGVfdCB0eXBlX2NsYXNzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzcy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoUyA6IE1ha2VfaXRlcmFibGVfYmluYWJsZTJfc3BlYykgPSBzdHJ1Y3RcbiAgb3BlbiBTXG5cbiAgbGV0IGJpbl9zaGFwZV90IHQxIHQyID1cbiAgICBTaGFwZS4oXG4gICAgICBiYXNldHlwZVxuICAgICAgICBjYWxsZXJfaWRlbnRpdHlcbiAgICAgICAgWyBiYXNldHlwZVxuICAgICAgICAgICAgKFV1aWQub2Zfc3RyaW5nIFwiYjRlNTRhZDItNDk5NC0xMWU2LWI4ZGYtODdjMjk5N2Y5ZjUyXCIpXG4gICAgICAgICAgICBbIFMuYmluX3NoYXBlX2VsIHQxIHQyIF1cbiAgICAgICAgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGJpbl9zaXplX2IgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuIGJpbl9zaXplX25hdDAgKE5hdDAudW5zYWZlX29mX2ludCBsZW4pICsgIXNpemVfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fc2l6ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYmluX3dyaXRlX2IgYnVmIH5wb3MgdCA9XG4gICAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gICAgbGV0IHBsZW4gPSBOYXQwLnVuc2FmZV9vZl9pbnQgbGVuIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgKFdyaXRlLmJpbl93cml0ZV9uYXQwIGJ1ZiB+cG9zIHBsZW4pIGluXG4gICAgbGV0IGNudF9yZWYgPSByZWYgMCBpblxuICAgIGl0ZXIgdCB+ZjooZnVuIGVsIC0+XG4gICAgICBwb3NfcmVmIDo9IGJpbl93cml0ZV9lbCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBidWYgfnBvczohcG9zX3JlZiBlbDtcbiAgICAgIGluY3IgY250X3JlZik7XG4gICAgaWYgIWNudF9yZWYgPSBsZW5cbiAgICB0aGVuICFwb3NfcmVmXG4gICAgZWxzZSByYWlzZV9jb25jdXJyZW50X21vZGlmaWNhdGlvbiB+bW9kdWxlX25hbWUgXCJiaW5fd3JpdGVfdFwiXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJ1ZiB+cG9zX3JlZiA9XG4gICAgbGV0IGxlbiA9IChSZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIDo+IGludCkgaW5cbiAgICBsZXQgaWR4ID0gcmVmIDAgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaWR4ID49IGxlbiB0aGVuIHJhaXNlX3JlYWRfdG9vX211Y2ggfm1vZHVsZV9uYW1lIFwiYmluX3JlYWRfdFwiO1xuICAgICAgaW5jciBpZHg7XG4gICAgICBiaW5fcmVhZF9lbCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSB2KVxuICAgIDsgd3JpdGUgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zIHYgLT4gYmluX3dyaXRlX3QgYmluX3dyaXRlcjEud3JpdGUgYmluX3dyaXRlcjIud3JpdGUgYnVmIH5wb3MgdilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCBiaW5fcmVhZGVyMSBiaW5fcmVhZGVyMiA9XG4gICAgeyByZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgLT4gYmluX3JlYWRfdCBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmKVxuICAgIDsgdnRhZ19yZWFkID1cbiAgICAgICAgKGZ1biBidWYgfnBvc19yZWYgbiAtPlxuICAgICAgICAgICBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyMS5yZWFkIGJpbl9yZWFkZXIyLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlclxuICAgIDsgcmVhZGVyID0gYmluX3JlYWRlcl90IHR5cGVfY2xhc3MxLnJlYWRlciB0eXBlX2NsYXNzMi5yZWFkZXJcbiAgICB9XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfaXRlcmFibGVfYmluYWJsZTMgKFMgOiBNYWtlX2l0ZXJhYmxlX2JpbmFibGUzX3NwZWMpID0gc3RydWN0XG4gIG9wZW4gU1xuXG4gIGxldCBiaW5fc2hhcGVfdCB0MSB0MiB0MyA9XG4gICAgU2hhcGUuKFxuICAgICAgYmFzZXR5cGVcbiAgICAgICAgY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIFsgYmFzZXR5cGVcbiAgICAgICAgICAgIChVdWlkLm9mX3N0cmluZyBcImYyMTEyZWRhLWU3ZDctMTFlNi1iYjM2LTA3MmU5Y2UxNTlkYlwiKVxuICAgICAgICAgICAgWyBTLmJpbl9zaGFwZV9lbCB0MSB0MiB0MyBdXG4gICAgICAgIF0pXG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX3QgYmluX3NpemVfYSBiaW5fc2l6ZV9iIGJpbl9zaXplX2MgdCA9XG4gICAgbGV0IHNpemVfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHNpemVfcmVmIDo9ICFzaXplX3JlZiArIGJpbl9zaXplX2VsIGJpbl9zaXplX2EgYmluX3NpemVfYiBiaW5fc2l6ZV9jIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gYmluX3NpemVfbmF0MCAoTmF0MC51bnNhZmVfb2ZfaW50IGxlbikgKyAhc2l6ZV9yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl9zaXplX3RcIlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVfdCBiaW5fd3JpdGVfYSBiaW5fd3JpdGVfYiBiaW5fd3JpdGVfYyBidWYgfnBvcyB0ID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHQgaW5cbiAgICBsZXQgcGxlbiA9IE5hdDAudW5zYWZlX29mX2ludCBsZW4gaW5cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiAoV3JpdGUuYmluX3dyaXRlX25hdDAgYnVmIH5wb3MgcGxlbikgaW5cbiAgICBsZXQgY250X3JlZiA9IHJlZiAwIGluXG4gICAgaXRlciB0IH5mOihmdW4gZWwgLT5cbiAgICAgIHBvc19yZWYgOj0gYmluX3dyaXRlX2VsIGJpbl93cml0ZV9hIGJpbl93cml0ZV9iIGJpbl93cml0ZV9jIGJ1ZiB+cG9zOiFwb3NfcmVmIGVsO1xuICAgICAgaW5jciBjbnRfcmVmKTtcbiAgICBpZiAhY250X3JlZiA9IGxlblxuICAgIHRoZW4gIXBvc19yZWZcbiAgICBlbHNlIHJhaXNlX2NvbmN1cnJlbnRfbW9kaWZpY2F0aW9uIH5tb2R1bGVfbmFtZSBcImJpbl93cml0ZV90XCJcbiAgOztcblxuICBsZXQgYmluX3JlYWRfdCBiaW5fcmVhZF9hIGJpbl9yZWFkX2IgYmluX3JlYWRfYyBidWYgfnBvc19yZWYgPVxuICAgIGxldCBsZW4gPSAoUmVhZC5iaW5fcmVhZF9uYXQwIGJ1ZiB+cG9zX3JlZiA6PiBpbnQpIGluXG4gICAgbGV0IGlkeCA9IHJlZiAwIGluXG4gICAgbGV0IG5leHQgKCkgPVxuICAgICAgaWYgIWlkeCA+PSBsZW4gdGhlbiByYWlzZV9yZWFkX3Rvb19tdWNoIH5tb2R1bGVfbmFtZSBcImJpbl9yZWFkX3RcIjtcbiAgICAgIGluY3IgaWR4O1xuICAgICAgYmluX3JlYWRfZWwgYmluX3JlYWRfYSBiaW5fcmVhZF9iIGJpbl9yZWFkX2MgYnVmIH5wb3NfcmVmXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID0gaW5pdCB+bGVuIH5uZXh0IGluXG4gICAgaWYgIWlkeCA8IGxlbiB0aGVuIHJhaXNlX3JlYWRfbm90X2Vub3VnaCB+bW9kdWxlX25hbWUgXCJiaW5fcmVhZF90XCI7XG4gICAgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF9iaW5fcmVhZF9hIF9iaW5fcmVhZF9iIF9iaW5fcmVhZF9jIF9idWYgfnBvc19yZWYgX24gPVxuICAgIHJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fd3JpdGVyX3QgYmluX3dyaXRlcjEgYmluX3dyaXRlcjIgYmluX3dyaXRlcjMgPVxuICAgIHsgc2l6ZSA9IChmdW4gdiAtPiBiaW5fc2l6ZV90IGJpbl93cml0ZXIxLnNpemUgYmluX3dyaXRlcjIuc2l6ZSBiaW5fd3JpdGVyMy5zaXplIHYpXG4gICAgOyB3cml0ZSA9XG4gICAgICAgIChmdW4gYnVmIH5wb3MgdiAtPlxuICAgICAgICAgICBiaW5fd3JpdGVfdCBiaW5fd3JpdGVyMS53cml0ZSBiaW5fd3JpdGVyMi53cml0ZSBiaW5fd3JpdGVyMy53cml0ZSBidWYgfnBvcyB2KVxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3JlYWRlcl90IGJpbl9yZWFkZXIxIGJpbl9yZWFkZXIyIGJpbl9yZWFkZXIzID1cbiAgICB7IHJlYWQgPVxuICAgICAgICAoZnVuIGJ1ZiB+cG9zX3JlZiAtPlxuICAgICAgICAgICBiaW5fcmVhZF90IGJpbl9yZWFkZXIxLnJlYWQgYmluX3JlYWRlcjIucmVhZCBiaW5fcmVhZGVyMy5yZWFkIGJ1ZiB+cG9zX3JlZilcbiAgICA7IHZ0YWdfcmVhZCA9XG4gICAgICAgIChmdW4gYnVmIH5wb3NfcmVmIG4gLT5cbiAgICAgICAgICAgX19iaW5fcmVhZF90X18gYmluX3JlYWRlcjEucmVhZCBiaW5fcmVhZGVyMi5yZWFkIGJpbl9yZWFkZXIzLnJlYWQgYnVmIH5wb3NfcmVmIG4pXG4gICAgfVxuICA7O1xuXG4gIGxldCBiaW5fdCB0eXBlX2NsYXNzMSB0eXBlX2NsYXNzMiB0eXBlX2NsYXNzMyA9XG4gICAgeyBzaGFwZSA9IGJpbl9zaGFwZV90IHR5cGVfY2xhc3MxLnNoYXBlIHR5cGVfY2xhc3MyLnNoYXBlIHR5cGVfY2xhc3MzLnNoYXBlXG4gICAgOyB3cml0ZXIgPSBiaW5fd3JpdGVyX3QgdHlwZV9jbGFzczEud3JpdGVyIHR5cGVfY2xhc3MyLndyaXRlciB0eXBlX2NsYXNzMy53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCB0eXBlX2NsYXNzMS5yZWFkZXIgdHlwZV9jbGFzczIucmVhZGVyIHR5cGVfY2xhc3MzLnJlYWRlclxuICAgIH1cbiAgOztcbmVuZFxuIiwiKCoqXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIGRlZmF1bHQgY29udmVydGVycyBmb3IgdGhlIHR5cGVzIGRlZmluZWQgaW4gdGhlIE9DYW1sXG4gICBzdGFuZGFyZCBsaWJyYXJ5LlxuKilcblxuaW5jbHVkZSBTaXplXG5cbmxldCBiaW5fdW5pdCA9IFR5cGVfY2xhc3MuYmluX3VuaXRcbmxldCBiaW5fc2hhcGVfdW5pdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX3VuaXRcbmxldCBiaW5fd3JpdGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfdW5pdFxubGV0IGJpbl93cml0ZV91bml0ID0gV3JpdGUuYmluX3dyaXRlX3VuaXRcbmxldCBiaW5fcmVhZGVyX3VuaXQgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfdW5pdFxubGV0IGJpbl9yZWFkX3VuaXQgPSBSZWFkLmJpbl9yZWFkX3VuaXRcblxubGV0IF9fYmluX3JlYWRfdW5pdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwidW5pdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9ib29sXG5sZXQgYmluX3NoYXBlX2Jvb2wgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ib29sXG5sZXQgYmluX3dyaXRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Jvb2xcbmxldCBiaW5fd3JpdGVfYm9vbCA9IFdyaXRlLmJpbl93cml0ZV9ib29sXG5sZXQgYmluX3JlYWRlcl9ib29sID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Jvb2xcbmxldCBiaW5fcmVhZF9ib29sID0gUmVhZC5iaW5fcmVhZF9ib29sXG5cbmxldCBfX2Jpbl9yZWFkX2Jvb2xfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJvb2xcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9zdHJpbmdcbmxldCBiaW5fc2hhcGVfc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9zdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfc3RyaW5nXG5sZXQgYmluX3dyaXRlX3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9zdHJpbmdcbmxldCBiaW5fcmVhZGVyX3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmdcbmxldCBiaW5fcmVhZF9zdHJpbmcgPSBSZWFkLmJpbl9yZWFkX3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9zdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInN0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fYnl0ZXNcbmxldCBiaW5fc2hhcGVfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9ieXRlc1xubGV0IGJpbl93cml0ZXJfYnl0ZXMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYnl0ZXNcbmxldCBiaW5fd3JpdGVfYnl0ZXMgPSBXcml0ZS5iaW5fd3JpdGVfYnl0ZXNcbmxldCBiaW5fcmVhZGVyX2J5dGVzID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2J5dGVzXG5sZXQgYmluX3JlYWRfYnl0ZXMgPSBSZWFkLmJpbl9yZWFkX2J5dGVzXG5cbmxldCBfX2Jpbl9yZWFkX2J5dGVzX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJieXRlc1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9jaGFyXG5sZXQgYmluX3NoYXBlX2NoYXIgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9jaGFyXG5sZXQgYmluX3dyaXRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2NoYXJcbmxldCBiaW5fd3JpdGVfY2hhciA9IFdyaXRlLmJpbl93cml0ZV9jaGFyXG5sZXQgYmluX3JlYWRlcl9jaGFyID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2NoYXJcbmxldCBiaW5fcmVhZF9jaGFyID0gUmVhZC5iaW5fcmVhZF9jaGFyXG5cbmxldCBfX2Jpbl9yZWFkX2NoYXJfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImNoYXJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQgPSBUeXBlX2NsYXNzLmJpbl9pbnRcbmxldCBiaW5fc2hhcGVfaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50XG5sZXQgYmluX3dyaXRlcl9pbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfaW50XG5sZXQgYmluX3dyaXRlX2ludCA9IFdyaXRlLmJpbl93cml0ZV9pbnRcbmxldCBiaW5fcmVhZGVyX2ludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnRcbmxldCBiaW5fcmVhZF9pbnQgPSBSZWFkLmJpbl9yZWFkX2ludFxubGV0IF9fYmluX3JlYWRfaW50X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9IENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJpbnRcIiAhcG9zX3JlZlxubGV0IGJpbl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX2Zsb2F0XG5sZXQgYmluX3NoYXBlX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRcbmxldCBiaW5fd3JpdGVyX2Zsb2F0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2Zsb2F0XG5sZXQgYmluX3dyaXRlX2Zsb2F0ID0gV3JpdGUuYmluX3dyaXRlX2Zsb2F0XG5sZXQgYmluX3JlYWRlcl9mbG9hdCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdFxubGV0IGJpbl9yZWFkX2Zsb2F0ID0gUmVhZC5iaW5fcmVhZF9mbG9hdFxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiZmxvYXRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXRhcnJheVxubGV0IGJpbl9zaGFwZV9mbG9hdGFycmF5ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfZmxvYXRhcnJheVxubGV0IGJpbl93cml0ZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3dyaXRlX2Zsb2F0YXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXRhcnJheVxubGV0IGJpbl9yZWFkZXJfZmxvYXRhcnJheSA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9mbG9hdGFycmF5XG5sZXQgYmluX3JlYWRfZmxvYXRhcnJheSA9IFJlYWQuYmluX3JlYWRfZmxvYXRhcnJheVxuXG5sZXQgX19iaW5fcmVhZF9mbG9hdGFycmF5X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdGFycmF5XCIgIXBvc19yZWZcbjs7XG5cbmluY2x1ZGUgc3RydWN0XG4gIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheVxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDldIFVzZSBbZmxvYXQgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBpbnN0ZWFkXCJdXG5cbiAgbGV0IChiaW5fc2hhcGVfZmxvYXRfYXJyYXkgW0BkZXByZWNhdGVkXG4gICAgICAgICBcIltzaW5jZSAyMDIxLTA5XSB1c2UgcHB4X2Jpbl9wcm90IHdpdGggdHlwZSBbZmxvYXQgYXJyYXldIFxcXG4gICAgICAgICAgb3IgW2Zsb2F0YXJyYXldIG9yIHRoZSAnZmxvYXRhcnJheScgZnVuY3Rpb25zXCJdKVxuICAgID1cbiAgICBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCAoYmluX3dyaXRlcl9mbG9hdF9hcnJheSBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBcXFxuICAgICAgICAgIGFycmF5XSBvciBbZmxvYXRhcnJheV0gb3IgdGhlICdmbG9hdGFycmF5JyBmdW5jdGlvbnNcIl0pXG4gICAgPVxuICAgIFR5cGVfY2xhc3MuYmluX3dyaXRlcl9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCAoYmluX3dyaXRlX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IGFycmF5XSBcXFxuICAgICAgICAgIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgV3JpdGUuYmluX3dyaXRlX2Zsb2F0X2FycmF5XG4gIDs7XG5cbiAgbGV0IChiaW5fcmVhZGVyX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IFxcXG4gICAgICAgICAgYXJyYXldIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9ucyBcXFxuICAgICAgICAgIGRpcmVjdGx5XCJdKVxuICAgID1cbiAgICBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfZmxvYXRfYXJyYXlcbiAgOztcblxuICBsZXQgKGJpbl9yZWFkX2Zsb2F0X2FycmF5IFtAZGVwcmVjYXRlZFxuICAgICAgICAgXCJbc2luY2UgMjAyMS0wOV0gdXNlIHBweF9iaW5fcHJvdCB3aXRoIHR5cGUgW2Zsb2F0IGFycmF5XSBcXFxuICAgICAgICAgIG9yIFtmbG9hdGFycmF5XSBvciB0aGUgJ2Zsb2F0YXJyYXknIGZ1bmN0aW9uc1wiXSlcbiAgICA9XG4gICAgUmVhZC5iaW5fcmVhZF9mbG9hdF9hcnJheVxuICA7O1xuXG4gIGxldCBfX2Jpbl9yZWFkX2Zsb2F0X2FycmF5X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gICAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImZsb2F0X2FycmF5XCIgIXBvc19yZWZcbiAgOztcblxuICBsZXQgKF9fYmluX3JlYWRfZmxvYXRfYXJyYXlfXyBbQGRlcHJlY2F0ZWRcbiAgICAgICAgIFwiW3NpbmNlIDIwMjEtMDldIHVzZSBwcHhfYmluX3Byb3Qgd2l0aCB0eXBlIFtmbG9hdCBcXFxuICAgICAgICAgIGFycmF5XSBvciBbZmxvYXRhcnJheV0gb3IgdGhlIGZsb2F0YXJyYXkgZnVuY3Rpb25zXCJdKVxuICAgID1cbiAgICBfX2Jpbl9yZWFkX2Zsb2F0X2FycmF5X19cbiAgOztcbmVuZCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxubGV0IGJpbl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX2ludDMyXG5sZXQgYmluX3NoYXBlX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50MzJcbmxldCBiaW5fd3JpdGVyX2ludDMyID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDMyXG5sZXQgYmluX3dyaXRlX2ludDMyID0gV3JpdGUuYmluX3dyaXRlX2ludDMyXG5sZXQgYmluX3JlYWRlcl9pbnQzMiA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQzMlxubGV0IGJpbl9yZWFkX2ludDMyID0gUmVhZC5iaW5fcmVhZF9pbnQzMlxuXG5sZXQgX19iaW5fcmVhZF9pbnQzMl9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50MzJcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX2ludDY0XG5sZXQgYmluX3NoYXBlX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfaW50NjRcbmxldCBiaW5fd3JpdGVyX2ludDY0ID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2ludDY0XG5sZXQgYmluX3dyaXRlX2ludDY0ID0gV3JpdGUuYmluX3dyaXRlX2ludDY0XG5sZXQgYmluX3JlYWRlcl9pbnQ2NCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9pbnQ2NFxubGV0IGJpbl9yZWFkX2ludDY0ID0gUmVhZC5iaW5fcmVhZF9pbnQ2NFxuXG5sZXQgX19iaW5fcmVhZF9pbnQ2NF9fIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiaW50NjRcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl9uYXRpdmVpbnRcbmxldCBiaW5fc2hhcGVfbmF0aXZlaW50ID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlcl9uYXRpdmVpbnQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbmF0aXZlaW50XG5sZXQgYmluX3dyaXRlX25hdGl2ZWludCA9IFdyaXRlLmJpbl93cml0ZV9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZGVyX25hdGl2ZWludCA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9uYXRpdmVpbnRcbmxldCBiaW5fcmVhZF9uYXRpdmVpbnQgPSBSZWFkLmJpbl9yZWFkX25hdGl2ZWludFxuXG5sZXQgX19iaW5fcmVhZF9uYXRpdmVpbnRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm5hdGl2ZWludFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3JlZiA9IFR5cGVfY2xhc3MuYmluX3JlZlxubGV0IGJpbl9zaGFwZV9yZWYgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9yZWZcbmxldCBiaW5fd3JpdGVyX3JlZiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9yZWZcbmxldCBiaW5fd3JpdGVfcmVmID0gV3JpdGUuYmluX3dyaXRlX3JlZlxubGV0IGJpbl9yZWFkZXJfcmVmID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3JlZlxubGV0IGJpbl9yZWFkX3JlZiA9IFJlYWQuYmluX3JlYWRfcmVmXG5cbmxldCBfX2Jpbl9yZWFkX3JlZl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwicmVmXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fbGF6eVxubGV0IGJpbl9zaGFwZV9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9sYXp5XG5sZXQgYmluX3dyaXRlcl9sYXp5X3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5X3QgPSBXcml0ZS5iaW5fd3JpdGVfbGF6eVxubGV0IGJpbl9yZWFkZXJfbGF6eV90ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2xhenlcbmxldCBiaW5fcmVhZF9sYXp5X3QgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV90X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJsYXp5XCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGF6eSA9IFR5cGVfY2xhc3MuYmluX2xhenlcbmxldCBiaW5fc2hhcGVfbGF6eSA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xhenlcbmxldCBiaW5fd3JpdGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGF6eVxubGV0IGJpbl93cml0ZV9sYXp5ID0gV3JpdGUuYmluX3dyaXRlX2xhenlcbmxldCBiaW5fcmVhZGVyX2xhenkgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGF6eVxubGV0IGJpbl9yZWFkX2xhenkgPSBSZWFkLmJpbl9yZWFkX2xhenlcblxubGV0IF9fYmluX3JlYWRfbGF6eV9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGF6eVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX29wdGlvblxubGV0IGJpbl9zaGFwZV9vcHRpb24gPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9vcHRpb25cbmxldCBiaW5fd3JpdGVyX29wdGlvbiA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9vcHRpb25cbmxldCBiaW5fd3JpdGVfb3B0aW9uID0gV3JpdGUuYmluX3dyaXRlX29wdGlvblxubGV0IGJpbl9yZWFkZXJfb3B0aW9uID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX29wdGlvblxubGV0IGJpbl9yZWFkX29wdGlvbiA9IFJlYWQuYmluX3JlYWRfb3B0aW9uXG5cbmxldCBfX2Jpbl9yZWFkX29wdGlvbl9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwib3B0aW9uXCIgIXBvc19yZWZcbjs7XG5cbmxldCBiaW5fbGlzdCA9IFR5cGVfY2xhc3MuYmluX2xpc3RcbmxldCBiaW5fc2hhcGVfbGlzdCA9IFR5cGVfY2xhc3MuYmluX3NoYXBlX2xpc3RcbmxldCBiaW5fd3JpdGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfbGlzdFxubGV0IGJpbl93cml0ZV9saXN0ID0gV3JpdGUuYmluX3dyaXRlX2xpc3RcbmxldCBiaW5fcmVhZGVyX2xpc3QgPSBUeXBlX2NsYXNzLmJpbl9yZWFkZXJfbGlzdFxubGV0IGJpbl9yZWFkX2xpc3QgPSBSZWFkLmJpbl9yZWFkX2xpc3RcblxubGV0IF9fYmluX3JlYWRfbGlzdF9fIF9mIF9idWYgfnBvc19yZWYgX3ZpbnQgPVxuICBDb21tb24ucmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwibGlzdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fYXJyYXlcbmxldCBiaW5fc2hhcGVfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9hcnJheVxubGV0IGJpbl93cml0ZXJfYXJyYXkgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYXJyYXlcbmxldCBiaW5fd3JpdGVfYXJyYXkgPSBXcml0ZS5iaW5fd3JpdGVfYXJyYXlcbmxldCBiaW5fcmVhZGVyX2FycmF5ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2FycmF5XG5sZXQgYmluX3JlYWRfYXJyYXkgPSBSZWFkLmJpbl9yZWFkX2FycmF5XG5cbmxldCBfX2Jpbl9yZWFkX2FycmF5X18gX2YgX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJhcnJheVwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9oYXNodGJsXG5sZXQgYmluX3NoYXBlX2hhc2h0YmwgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9oYXNodGJsXG5sZXQgYmluX3dyaXRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fd3JpdGVyX2hhc2h0YmxcbmxldCBiaW5fd3JpdGVfaGFzaHRibCA9IFdyaXRlLmJpbl93cml0ZV9oYXNodGJsXG5sZXQgYmluX3JlYWRlcl9oYXNodGJsID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2hhc2h0YmxcbmxldCBiaW5fcmVhZF9oYXNodGJsID0gUmVhZC5iaW5fcmVhZF9oYXNodGJsXG5cbmxldCBfX2Jpbl9yZWFkX2hhc2h0YmxfXyBfZiBfZyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImhhc2h0YmxcIiAhcG9zX3JlZlxuOztcblxubGV0IGJpbl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl9iaWdzdHJpbmdcbmxldCBiaW5fc2hhcGVfYmlnc3RyaW5nID0gVHlwZV9jbGFzcy5iaW5fc2hhcGVfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlcl9iaWdzdHJpbmcgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfYmlnc3RyaW5nXG5sZXQgYmluX3dyaXRlX2JpZ3N0cmluZyA9IFdyaXRlLmJpbl93cml0ZV9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZGVyX2JpZ3N0cmluZyA9IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9iaWdzdHJpbmdcbmxldCBiaW5fcmVhZF9iaWdzdHJpbmcgPSBSZWFkLmJpbl9yZWFkX2JpZ3N0cmluZ1xuXG5sZXQgX19iaW5fcmVhZF9iaWdzdHJpbmdfXyBfYnVmIH5wb3NfcmVmIF92aW50ID1cbiAgQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcImJpZ3N0cmluZ1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX21hdCA9IFR5cGVfY2xhc3MuYmluX21hdFxubGV0IGJpbl9zaGFwZV9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9tYXRcbmxldCBiaW5fd3JpdGVyX21hdCA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl9tYXRcbmxldCBiaW5fd3JpdGVfbWF0ID0gV3JpdGUuYmluX3dyaXRlX21hdFxubGV0IGJpbl9yZWFkZXJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX21hdFxubGV0IGJpbl9yZWFkX21hdCA9IFJlYWQuYmluX3JlYWRfbWF0XG5sZXQgX19iaW5fcmVhZF9tYXRfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIm1hdFwiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQzMl9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQzMl9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF9tYXRcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X21hdFxubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF9tYXQgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF9tYXRcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF9tYXQgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF9tYXRcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfbWF0ID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfbWF0XG5sZXQgYmluX3JlYWRfZmxvYXQ2NF9tYXQgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfbWF0XG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfbWF0X18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X21hdFwiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3ZlY1xubGV0IGJpbl9zaGFwZV92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV92ZWNcbmxldCBiaW5fd3JpdGVyX3ZlYyA9IFR5cGVfY2xhc3MuYmluX3dyaXRlcl92ZWNcbmxldCBiaW5fd3JpdGVfdmVjID0gV3JpdGUuYmluX3dyaXRlX3ZlY1xubGV0IGJpbl9yZWFkZXJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX3ZlY1xubGV0IGJpbl9yZWFkX3ZlYyA9IFJlYWQuYmluX3JlYWRfdmVjXG5sZXQgX19iaW5fcmVhZF92ZWNfXyBfYnVmIH5wb3NfcmVmIF92aW50ID0gQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcInZlY1wiICFwb3NfcmVmXG5sZXQgYmluX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQzMl92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDMyX3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQzMl92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQzMl92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQzMl92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQzMl92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0MzJfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0MzJfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQzMl92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0MzJfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0MzJfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDMyX3ZlY1wiICFwb3NfcmVmXG47O1xuXG5sZXQgYmluX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fZmxvYXQ2NF92ZWNcbmxldCBiaW5fc2hhcGVfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl9zaGFwZV9mbG9hdDY0X3ZlY1xubGV0IGJpbl93cml0ZXJfZmxvYXQ2NF92ZWMgPSBUeXBlX2NsYXNzLmJpbl93cml0ZXJfZmxvYXQ2NF92ZWNcbmxldCBiaW5fd3JpdGVfZmxvYXQ2NF92ZWMgPSBXcml0ZS5iaW5fd3JpdGVfZmxvYXQ2NF92ZWNcbmxldCBiaW5fcmVhZGVyX2Zsb2F0NjRfdmVjID0gVHlwZV9jbGFzcy5iaW5fcmVhZGVyX2Zsb2F0NjRfdmVjXG5sZXQgYmluX3JlYWRfZmxvYXQ2NF92ZWMgPSBSZWFkLmJpbl9yZWFkX2Zsb2F0NjRfdmVjXG5cbmxldCBfX2Jpbl9yZWFkX2Zsb2F0NjRfdmVjX18gX2J1ZiB+cG9zX3JlZiBfdmludCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJmbG9hdDY0X3ZlY1wiICFwb3NfcmVmXG47O1xuIiwiaW5jbHVkZSBNZDVfbGliXG5cbmxldCBiaW5fc2hhcGVfdCA9XG4gIFNoYXBlLmJhc2V0eXBlIChTaGFwZS5VdWlkLm9mX3N0cmluZyBcImY2YmRjZGQwLTlmNzUtMTFlNi05YTdlLWQzMDIwNDI4ZWZlZFwiKSBbXVxuOztcblxubGV0IGJpbl9zaXplX3QgPSBTaXplLmJpbl9zaXplX21kNVxubGV0IGJpbl93cml0ZV90ID0gV3JpdGUuYmluX3dyaXRlX21kNVxubGV0IGJpbl9yZWFkX3QgPSBSZWFkLmJpbl9yZWFkX21kNVxuXG5sZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfdmRpZ2VzdCA9XG4gIENvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJTaGFwZS5NZDUudFwiICFwb3NfcmVmXG47O1xuIiwib3BlbiBDb21tb25cblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgYmluX3NoYXBlX3QgdCA9XG4gICAgU2hhcGUuKGJhc2V0eXBlIChVdWlkLm9mX3N0cmluZyBcIjg1YTI1NTdlLTQ5MGEtMTFlNi05OGFjLTRiODk1M2Q1MjVmZVwiKSBbIHQgXSlcbiAgOztcblxuICBsZXQgYmluX3NpemVfdCBiaW5fc2l6ZV9hIGEgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBiaW5fc2l6ZV9hIGFcblxuICBsZXQgYmluX3dyaXRlX3QgYmluX3dyaXRlX2EgYnVmIH5wb3MgYSA9XG4gICAgbGV0IHN0YXJ0X2EgPSBwb3MgKyBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgICBsZXQgZW5kX2EgPSBiaW5fd3JpdGVfYSBidWYgfnBvczpzdGFydF9hIGEgaW5cbiAgICBsZXQgc2l6ZSA9IGVuZF9hIC0gc3RhcnRfYSBpblxuICAgIGxldCB3cml0dGVuID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICBhc3NlcnQgKHdyaXR0ZW4gPSBzdGFydF9hKTtcbiAgICBlbmRfYVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgZXhwZWN0ZWRfc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBzdGFydF9hID0gIXBvc19yZWYgaW5cbiAgICBsZXQgYSA9IGJpbl9yZWFkX2EgYnVmIH5wb3NfcmVmIGluXG4gICAgbGV0IGVuZF9hID0gIXBvc19yZWYgaW5cbiAgICBpZiBlbmRfYSAtIHN0YXJ0X2EgPD4gZXhwZWN0ZWRfc2l6ZVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoXG4gICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICBcIkJpbl9wcm90LkJsb2IuYmluX3JlYWRfdDogc2l6ZSAoJWQpIDw+IGV4cGVjdGVkICglZClcIlxuICAgICAgICAgICAoZW5kX2EgLSBzdGFydF9hKVxuICAgICAgICAgICBleHBlY3RlZF9zaXplKTtcbiAgICBhXG4gIDs7XG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fIF8gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi50XCIgIXBvc19yZWZcbiAgOztcbmVuZFxuXG50eXBlICdhIGlkID0gJ2FcblxuaW5jbHVkZSBUXG5cbmluY2x1ZGUgVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gVFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgb2ZfYmluYWJsZSB0ID0gdFxuICAgIGxldCB0b19iaW5hYmxlIHQgPSB0XG4gIGVuZClcblxubW9kdWxlIE9wYXF1ZSA9IHN0cnVjdFxuICAoKiBbQmlnc3RyaW5nXSBhbmQgW1N0cmluZ10gc2hhcmUgW2Jpbl9zaGFwZV90XSBiZWNhdXNlIHRoZXkgaGF2ZSBleGFjdGx5IHRoZSBzYW1lXG4gICAgIHNlcmlhbGl6YXRpb24gZm9ybWF0IGFuZCB0aGV5IGRlbm90ZSB0aGUgc2FtZSB2YWx1ZXMuXG5cbiAgICAgSW4gZmFjdCBhbG1vc3QgY2VydGFpbmx5IFtCbG9iLnRdIGl0c2VsZiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBiaW5fc2hhcGVfdCBhcyB3ZWxsLiAqKVxuICBsZXQgYmluX3NoYXBlX3QgPVxuICAgIFNoYXBlLihiYXNldHlwZSAoVXVpZC5vZl9zdHJpbmcgXCI4NWExZjc2ZS00OTBhLTExZTYtODZhOS01YmVmNTg1ZjI2MDJcIikgW10pXG4gIDs7XG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgICgqIFtidWZdIGlzIHRoZSBiaW4taW8gZGF0YSBleGNsdWRpbmcgdGhlIHNpemUgaGVhZGVyLiBXaGVuIChkZS0pc2VyaWFsaXplZCwgdGhlIHNpemVcbiAgICAgICBoZWFkZXIgaXMgaW5jbHVkZWQuICopXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGJ1ZlxuXG4gICAgICBsZXQgYmluX3NoYXBlX3QgPSBiaW5fc2hhcGVfdFxuICAgICAgbGV0IGJpbl9zaXplX3QgdCA9IFV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aCArIGJ1Zl9sZW4gdFxuXG4gICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgIGxldCBzaXplID0gYnVmX2xlbiB0IGluXG4gICAgICAgIGxldCBwb3MgPSBVdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgYnVmIH5wb3Mgc2l6ZSBpblxuICAgICAgICBibGl0X2J1ZiB+c3JjOnQgfnNyY19wb3M6MCB+ZHN0OmJ1ZiB+ZHN0X3Bvczpwb3Mgc2l6ZTtcbiAgICAgICAgcG9zICsgc2l6ZVxuICAgICAgOztcblxuICAgICAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICAgICAgbGV0IHNpemUgPSBVdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGVfYnVmIHNpemUgaW5cbiAgICAgICAgYmxpdF9idWYgfnNyYzpidWYgfnNyY19wb3M6IXBvc19yZWYgfmRzdDp0IH5kc3RfcG9zOjAgc2l6ZTtcbiAgICAgICAgcG9zX3JlZiA6PSAhcG9zX3JlZiArIHNpemU7XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IHRvX29wYXF1ZSBibG9iIGJpbl93cml0ZXIgPSBVdGlscy5iaW5fZHVtcCBiaW5fd3JpdGVyIGJsb2JcbiAgICBsZXQgb2Zfb3BhcXVlX2V4biAodCA6IHQpIGJpbl9yZWFkZXIgPSBiaW5fcmVhZGVyLlR5cGVfY2xhc3MucmVhZCB0IH5wb3NfcmVmOihyZWYgMClcblxuICAgICgqIEJpZ3N0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IGJ1ZiAtPiBidWYgLT4gaW50KVxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID1cbiAgICAgIFBweF9zZXhwX2NvbnZfbGliLlNleHAuQXRvbSAob2Zfb3BhcXVlX2V4biB0IFR5cGVfY2xhc3MuYmluX3JlYWRlcl9zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGJpbl9zaGFwZV90ID0gYmluX3NoYXBlX3RcbiAgICAgIGxldCBiaW5fc2l6ZV90IHQgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBTdHJpbmcubGVuZ3RoIHRcblxuICAgICAgbGV0IGJpbl93cml0ZV90IGJ1ZiB+cG9zIHQgPVxuICAgICAgICBsZXQgc2l6ZSA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgICBsZXQgcG9zID0gVXRpbHMuYmluX3dyaXRlX3NpemVfaGVhZGVyIGJ1ZiB+cG9zIHNpemUgaW5cbiAgICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IH5zcmNfcG9zOjAgYnVmIH5kc3RfcG9zOnBvcyB+bGVuOnNpemU7XG4gICAgICAgIHBvcyArIHNpemVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdHJpbmdfb2ZfYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBsZXQgc3RyID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICBibGl0X2J1Zl9ieXRlcyB+c3JjX3Bvczpwb3MgYnVmIH5kc3RfcG9zOjAgc3RyIH5sZW47XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG4gICAgICA7O1xuXG4gICAgICBsZXQgYmluX3JlYWRfdCBidWYgfnBvc19yZWYgPVxuICAgICAgICBsZXQgbGVuID0gVXRpbHMuYmluX3JlYWRfc2l6ZV9oZWFkZXIgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgIGxldCB0ID0gc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvczohcG9zX3JlZiB+bGVuIGluXG4gICAgICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBsZW47XG4gICAgICAgIHRcbiAgICAgIDs7XG5cbiAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfIH5wb3NfcmVmID1cbiAgICAgICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5PcGFxdWUudFwiICFwb3NfcmVmXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBVdGlscy5PZl9taW5pbWFsIChUKVxuXG4gICAgbGV0IGxlbmd0aCB0ID0gU3RyaW5nLmxlbmd0aCB0XG5cbiAgICBsZXQgdG9fb3BhcXVlIH5idWYgdiBiaW5fd3JpdGVyX3YgOiB0ID1cbiAgICAgIGxldCBwb3MgPSAwIGluXG4gICAgICBsZXQgbGVuID0gYmluX3dyaXRlcl92LlR5cGVfY2xhc3Mud3JpdGUgYnVmIH5wb3MgdiBpblxuICAgICAgc3RyaW5nX29mX2JpZ3N0cmluZyBidWYgfnBvcyB+bGVuXG4gICAgOztcblxuICAgIGxldCBvZl9vcGFxdWVfZXhuIH5idWYgKHQgOiB0KSBiaW5fcmVhZGVyX3YgPVxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggdCBpblxuICAgICAgQ29tbW9uLmJsaXRfc3RyaW5nX2J1ZiB0IGJ1ZiB+bGVuO1xuICAgICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgICAgbGV0IHJlcyA9IGJpbl9yZWFkZXJfdi5UeXBlX2NsYXNzLnJlYWQgYnVmIH5wb3NfcmVmIGluXG4gICAgICBpZiAhcG9zX3JlZiA8PiBsZW5cbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICBcIk9wYXF1ZSBibG9iIGhhcyAlZCBieXRlcyBidXQgW29mX29wYXF1ZV9leG5dIHJlYWQgJWRcIlxuICAgICAgICAgICAgbGVuXG4gICAgICAgICAgICAhcG9zX3JlZlxuICAgICAgICBpblxuICAgICAgICBmYWlsd2l0aCBlcnJvcilcbiAgICAgIGVsc2UgcmVzXG4gICAgOztcblxuICAgICgqIFN0cmluZ3MgYXJlIGEgcHJpbWl0aXZlIHR5cGUgdGhhdCBwb2x5bW9ycGhpYyBjb21wYXJlIGhhbmRsZXMgd2VsbC4gKilcbiAgICBsZXQgY29tcGFyZSA9IChTdGRsaWIuY29tcGFyZSA6IHN0cmluZyAtPiBzdHJpbmcgLT4gaW50KVxuICAgIGxldCBzZXhwX29mX3QgPSBQcHhfc2V4cF9jb252X2xpYi5Db252LnNleHBfb2Zfc3RyaW5nXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJZ25vcmVkID0gc3RydWN0XG4gICgqIFRoZSByZXByZXNlbnRhdGlvbiBvZiBhbiBpZ25vcmVkIHZhbHVlIGlzIGp1c3QgdGhlIHNpemUgb2YgdGhlIHZhbHVlIGl0IHdhcyBjcmVhdGVkXG4gICAgIGZyb20gKGkuZS4sIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB3ZXJlIGlnbm9yZWQgZnJvbSB0aGUgYnVmZmVyIHdlIHdlcmUgcmVhZGluZ1xuICAgICAtLSB3ZSBleGNsdWRlIHRoZSA4IGJ5dGUgc2l6ZSBoZWFkZXIgZnJvbSB3aGljaCB0aGUgc2l6ZSB3YXMgcmVhZCkuICopXG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBiaW5fc2l6ZV90IHNpemUgPSBVdGlscy5zaXplX2hlYWRlcl9sZW5ndGggKyBzaXplXG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgc2l6ZSA9IFV0aWxzLmJpbl9yZWFkX3NpemVfaGVhZGVyIGJ1ZiB+cG9zX3JlZiBpblxuICAgIHBvc19yZWYgOj0gIXBvc19yZWYgKyBzaXplO1xuICAgIHNpemVcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF90X18gXyB+cG9zX3JlZiA9XG4gICAgcmFpc2VfdmFyaWFudF93cm9uZ190eXBlIFwiQmluX3Byb3QuQmxvYi5JZ25vcmVkLnRcIiAhcG9zX3JlZlxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgPSB7IFR5cGVfY2xhc3MucmVhZCA9IGJpbl9yZWFkX3Q7IHZ0YWdfcmVhZCA9IF9fYmluX3JlYWRfdF9fIH1cbmVuZFxuIiwibW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB2YWwgcHJlX3Rlc3RfaG9vayA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbmxldCBwcmVfdGVzdF9ob29rID0gaWdub3JlXG4iLCJbJSVpbXBvcnQgXCJjb25maWcuaFwiXVxuXG5vcGVuISBCYXNlXG5cblslJWlmZGVmIEpTQ19BUkNIX1NJWFRZRk9VUl1cblxuZXh0ZXJuYWwgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXG4gIDogIHVuaXRcbiAgLT4gSW50NjMudFxuICA9IFwidGltZV9ub3dfbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvXCJcbltAQG5vYWxsb2NdXG5cblslJWVsc2VdXG5cbmV4dGVybmFsIG5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1xuICA6ICB1bml0XG4gIC0+IEludDYzLnRcbiAgPSBcInRpbWVfbm93X25hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2hfb3JfemVyb1wiXG5cblslJWVuZGlmXVxuWyUlaWZkZWYgSlNDX1BPU0lYX1RJTUVSU11cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSkgZmFpbGVkXCJcblxuWyUlZWxzZV1cblxubGV0W0Bjb2xkXSBnZXR0aW1lX2ZhaWxlZCAoKSA9IGZhaWx3aXRoIFwiZ2V0dGltZW9mZGF5IGZhaWxlZFwiXG5cblslJWVuZGlmXVxuXG5sZXQgbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSA9XG4gIGxldCB0ID0gbmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaF9vcl96ZXJvICgpIGluXG4gIGlmIEludDYzLiggPD4gKSB0IEludDYzLnplcm8gdGhlbiB0IGVsc2UgZ2V0dGltZV9mYWlsZWQgKClcbjs7XG4iLCJtb2R1bGUgVGVzdF9yZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3VjY2VzcyB8IEZhaWx1cmUgfCBFcnJvclxuXG4gIGxldCB0b19leGl0X2NvZGUgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiAwXG4gICAgfCBGYWlsdXJlIC0+IDJcbiAgICB8IEVycm9yICAgLT4gMVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3VjY2VzcyAtPiBcInN1Y2Nlc3NcIlxuICAgIHwgRmFpbHVyZSAtPiBcImZhaWx1cmVcIlxuICAgIHwgRXJyb3IgICAtPiBcImVycm9yXCJcbiAgOztcblxuICBsZXQgY29tYmluZSB0MSB0MiA9XG4gICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICB8IFN1Y2Nlc3MsIFN1Y2Nlc3MgICAgICAgIC0+IFN1Y2Nlc3NcbiAgICB8IEVycm9yICAsIF8gfCBfLCBFcnJvciAgIC0+IEVycm9yXG4gICAgfCBGYWlsdXJlLCBfIHwgXywgRmFpbHVyZSAtPiBGYWlsdXJlXG4gIDs7XG5cbiAgbGV0IGNvbWJpbmVfYWxsIHRzID0gTGlzdC5mb2xkX2xlZnQgY29tYmluZSBTdWNjZXNzIHRzXG5lbmRcblxubGV0IHBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnID1cbiAgdHJ5XG4gICAgQXJnLnBhcnNlX2FyZ3YgYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBBcmcuQmFkIG1zZyAtPiBQcmludGYuZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDFcbiAgfCBBcmcuSGVscCBtc2cgLT4gUHJpbnRmLnByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDBcbjs7XG5cbnR5cGUgZGVzY3IgPSBzdHJpbmdcbmxldCB0ZXN0X21vZHVsZXNfcmFuID0gcmVmIDBcbmxldCB0ZXN0X21vZHVsZXNfZmFpbGVkID0gcmVmIDBcbmxldCB0ZXN0c19yYW4gPSByZWYgMFxubGV0IHRlc3RzX2ZhaWxlZCA9IHJlZiAwXG5sZXQgZHluYW1pY19saWIgOiBzdHJpbmcgb3B0aW9uIHJlZiA9IHJlZiBOb25lXG50eXBlIGZpbGVuYW1lID0gc3RyaW5nXG50eXBlIGxpbmVfbnVtYmVyID0gaW50XG50eXBlIHN0YXJ0X3BvcyA9IGludFxudHlwZSBlbmRfcG9zID0gaW50XG50eXBlIGNvbmZpZyA9IChtb2R1bGUgSW5saW5lX3Rlc3RfY29uZmlnLlMpXG50eXBlICdhIHRlc3RfZnVuY3Rpb25fYXJnc1xuICA9IGNvbmZpZzpjb25maWdcbiAgLT4gZGVzY3I6ZGVzY3IgTGF6eS50XG4gIC0+IHRhZ3M6c3RyaW5nIGxpc3RcbiAgLT4gZmlsZW5hbWU6ZmlsZW5hbWVcbiAgLT4gbGluZV9udW1iZXI6bGluZV9udW1iZXJcbiAgLT4gc3RhcnRfcG9zOnN0YXJ0X3Bvc1xuICAtPiBlbmRfcG9zOmVuZF9wb3NcbiAgLT4gJ2FcblxubW9kdWxlIFRhZ19wcmVkaWNhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJlcXVpcmVkX3RhZ3MgIDogc3RyaW5nIGxpc3RcbiAgICA7IGRyb3BwZWRfdGFncyA6IHN0cmluZyBsaXN0XG4gICAgfVxuXG4gIGxldCBlbmFibGVfZXZlcnl0aGluZyA9IHsgcmVxdWlyZWRfdGFncyA9IFtdOyBkcm9wcGVkX3RhZ3MgPSBbXSB9XG5cbiAgbGV0IGRyb3AgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gdGFnIDo6IHQuZHJvcHBlZF90YWdzXG4gICAgOyByZXF1aXJlZF90YWdzID0gTGlzdC5maWx0ZXIgKCg8PikgdGFnKSB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG5cbiAgbGV0IHJlcXVpcmUgdCB0YWcgPVxuICAgIHsgZHJvcHBlZF90YWdzID0gTGlzdC5maWx0ZXIgKCg8PikgdGFnKSB0LmRyb3BwZWRfdGFnc1xuICAgIDsgcmVxdWlyZWRfdGFncyA9IHRhZyA6OiB0LnJlcXVpcmVkX3RhZ3NcbiAgICB9XG5cbiAgbGV0IGVudGlyZV9tb2R1bGVfZGlzYWJsZWQgdCB+cGFydGlhbF90YWdzOnRhZ3MgPVxuICAgIExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG5cbiAgbGV0IGRpc2FibGVkIHQgfmNvbXBsZXRlX3RhZ3M6dGFncyA9XG4gICAgTGlzdC5leGlzdHMgKGZ1biByZXEgLT4gbm90IChMaXN0Lm1lbSByZXEgdGFncykpIHQucmVxdWlyZWRfdGFnc1xuICAgIHx8IExpc3QuZXhpc3RzIChmdW4gZHJvcHBlZCAtPiBMaXN0Lm1lbSBkcm9wcGVkIHRhZ3MpIHQuZHJvcHBlZF90YWdzXG5lbmRcblxuXG50eXBlIHdoaWNoX3Rlc3RzID1cbiAgeyBsaWJuYW1lIDogc3RyaW5nXG4gIDsgb25seV90ZXN0X2xvY2F0aW9uIDogKGZpbGVuYW1lICogbGluZV9udW1iZXIgb3B0aW9uICogYm9vbCByZWYpIGxpc3RcbiAgOyBuYW1lX2ZpbHRlciA6IHN0cmluZyBsaXN0XG4gIDsgd2hpY2hfdGFncyA6IFRhZ19wcmVkaWNhdGUudFxuICB9XG50eXBlIHRlc3RfbW9kZSA9XG4gIHsgd2hpY2hfdGVzdHMgOiB3aGljaF90ZXN0c1xuICA7IHdoYXRfdG9fZG8gOlxuICAgICAgWyBgUnVuX3BhcnRpdGlvbiBvZiBzdHJpbmcgb3B0aW9uXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnNcbiAgICAgIF1cbiAgfVxuXG5tb2R1bGUgQWN0aW9uIDogc2lnXG4gIHR5cGUgdCA9IFtcbiAgICB8IGBJZ25vcmVcbiAgICB8IGBUZXN0X21vZGUgb2YgdGVzdF9tb2RlXG4gIF1cbiAgdmFsIGdldCA6IHVuaXQgLT4gdFxuICB2YWwgc2V0IDogdCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gW1xuICAgIHwgYElnbm9yZVxuICAgIHwgYFRlc3RfbW9kZSBvZiB0ZXN0X21vZGVcbiAgXVxuICBsZXQgYWN0aW9uIDogdCByZWYgPSByZWYgYElnbm9yZVxuICBsZXQgZm9yY2VfZHJvcCA9XG4gICAgdHJ5IGlnbm9yZSAoU3lzLmdldGVudiBcIkZPUkNFX0RST1BfSU5MSU5FX1RFU1RcIiA6IHN0cmluZyk7IHRydWVcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZVxuICBsZXQgZ2V0ICgpID1cbiAgICAoKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGNvbXBpbGluZyB0byBqYXZhc2NyaXB0LlxuICAgICAgIEpzX29mX29jYW1sIGNhbiBzdGF0aWNhbGx5IGV2YWx1YXRlIFtTeXMuZ2V0ZW52IFwiRk9SQ0VfRFJPUF9JTkxJTkVfVEVTVFwiXVxuICAgICAgIGFuZCBpbmxpbmUgdGhlIHJlc3VsdCAoW2BJZ25vcmVdKSB3aGVuZXZlciBbZ2V0ICgpXSBpcyBjYWxsZWQuXG4gICAgICAgVW5pdCB0ZXN0cyBjYW4gdGhlbiBiZSB0cmVhdGVkIGFzIGRlYWRjb2RlIHNpbmNlIHRoZSBhcmd1bWVudCBbZl0gb2YgdGhlIFt0ZXN0XVxuICAgICAgIGZ1bmN0aW9uIGJlbG93IGlzIG5ldmVyIHVzZWQuICopXG4gICAgaWYgZm9yY2VfZHJvcFxuICAgIHRoZW4gYElnbm9yZVxuICAgIGVsc2UgIWFjdGlvblxuXG4gIGxldCBzZXQgdiA9IGFjdGlvbiA6PSB2XG5lbmRcblxubW9kdWxlIFBhcnRpdGlvbiA6IHNpZ1xuICB2YWwgZm91bmRfdGVzdCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgc2V0X2N1cnJlbnQgOiBzdHJpbmcgLT4gdW5pdFxuICB2YWwgaXNfY3VycmVudCA6IHN0cmluZyBvcHRpb24gLT4gYm9vbFxuICB2YWwgYWxsIDogdW5pdCAtPiBzdHJpbmcgbGlzdFxuZW5kID0gc3RydWN0XG4gIGxldCBhbGwgPSBIYXNodGJsLmNyZWF0ZSAyM1xuICBsZXQgY3VycmVudCA9IHJlZiBcIlwiICBsZXQgc2V0X2N1cnJlbnQgeCA9IGN1cnJlbnQgOj0geFxuICBsZXQgZm91bmRfdGVzdCAoKSA9XG4gICAgaWYgIWN1cnJlbnQgPD4gXCJcIiAmJiBub3QgKEhhc2h0YmwubWVtIGFsbCAhY3VycmVudCkgdGhlblxuICAgICAgSGFzaHRibC5hZGQgYWxsICFjdXJyZW50ICgpXG4gIDs7XG4gIGxldCBpc19jdXJyZW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBwIC0+IHAgPSAhY3VycmVudFxuICA7O1xuICBsZXQgYWxsICgpID1cbiAgICBMaXN0LnNvcnQgU3RyaW5nLmNvbXBhcmVcbiAgICAgIChIYXNodGJsLmZvbGQgKGZ1biBrICgpIGFjYyAtPiBrIDo6IGFjYykgYWxsIFtdKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNb2R1bGVfY29udGV4dCA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgb25lX21vZHVsZSA9XG4gICAgICB7IGRlc2NyIDogc3RyaW5nXG4gICAgICA7IHRhZ3MgOiBzdHJpbmcgbGlzdFxuICAgICAgfVxuXG4gICAgdHlwZSB0ID0gb25lX21vZHVsZSBsaXN0XG5cbiAgICBsZXQgZGVzY3IgdCA9IExpc3QubWFwIChmdW4gbSAtPiBtLmRlc2NyKSB0XG4gICAgbGV0IHRhZ3MgdCA9IExpc3QuY29uY2F0IChMaXN0Lm1hcCAoZnVuIG0gLT4gbS50YWdzKSB0KVxuICBlbmRcblxuICBsZXQgY3VycmVudCA6IFQudCByZWYgPSByZWYgW11cblxuICBsZXQgd2l0aF8gfmRlc2NyIH50YWdzIGYgPVxuICAgIGxldCBwcmV2ID0gIWN1cnJlbnQgaW5cbiAgICBjdXJyZW50IDo9IHsgVC4gZGVzY3I7IHRhZ3MgfSA6OiBwcmV2O1xuICAgIHRyeVxuICAgICAgbGV0IHggPSBmICgpIGluXG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjdXJyZW50IDo9IHByZXY7XG4gICAgICByYWlzZSBlXG5cbiAgbGV0IGN1cnJlbnRfZGVzY3IgKCkgPSBULmRlc2NyICFjdXJyZW50XG4gIGxldCBjdXJyZW50X3RhZ3MgICgpID0gVC50YWdzICAhY3VycmVudFxuZW5kXG5cbmxldCB2ZXJib3NlID0gcmVmIGZhbHNlXG5sZXQgc3RyaWN0ID0gcmVmIGZhbHNlXG5sZXQgc2hvd19jb3VudHMgPSByZWYgZmFsc2VcbmxldCBsaXN0X3Rlc3RfbmFtZXMgPSByZWYgZmFsc2VcbmxldCBkZWxheWVkX2Vycm9ycyA9IHJlZiBbXVxubGV0IHN0b3Bfb25fZXJyb3IgPSByZWYgZmFsc2VcblxubGV0IGxvZyA9IHJlZiBOb25lXG5cbmxldCB0aW1lX3NlYyA9IHJlZiAwLlxuXG5sZXQgdXNlX2NvbG9yID0gcmVmIHRydWVcbmxldCBpbl9wbGFjZSAgPSByZWYgZmFsc2VcbmxldCBkaWZmX2NvbW1hbmQgPSByZWYgTm9uZVxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSByZWYgTm9uZVxubGV0IGFsbG93X291dHB1dF9wYXR0ZXJucyA9IHJlZiBmYWxzZVxuXG5sZXQgZGlzcGxheWVkX2Rlc2NyIChsYXp5IGRlc2NyKSBmaWxlbmFtZSBsaW5lIHN0YXJ0X3BvcyBlbmRfcG9zID1cbiAgUHJpbnRmLnNwcmludGYgXCJGaWxlICVTLCBsaW5lICVkLCBjaGFyYWN0ZXJzICVkLSVkJXNcIlxuICAgIGZpbGVuYW1lIGxpbmUgc3RhcnRfcG9zIGVuZF9wb3NcbiAgICAoaWYgZGVzY3IgPSBcIlwiIHRoZW4gXCJcIiBlbHNlIFwiOiBcIiBeIGRlc2NyKVxubGV0IHBhcnNlX2Rlc2NyIHN0ciA9XG4gIHRyeSBTb21lIChTY2FuZi5zc2NhbmYgc3RyIFwiIEZpbGUgJVMgLCBsaW5lICVkICwgY2hhcmFjdGVycyAlZCAtICVkICUhXCJcbiAgICAgICAgICAgICAgKGZ1biBmaWxlIGxpbmUgX3N0YXJ0X3BvcyBfZW5kX3BvcyAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoIF8gLT5cbiAgdHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAsIGxpbmUgJWQgJSFcIiAoZnVuIGZpbGUgbGluZSAtPiBmaWxlLCBTb21lIGxpbmUpKVxuICB3aXRoIF8gLT5cbiAgdHJ5IFNvbWUgKFNjYW5mLnNzY2FuZiBzdHIgXCIgRmlsZSAlUyAlIVwiIChmdW4gZmlsZSAtPiBmaWxlLCBOb25lKSlcbiAgd2l0aCBfIC0+IE5vbmVcblxubGV0ICgpID1cbiAgbWF0Y2ggQXJyYXkudG9fbGlzdCBTeXMuYXJndiB3aXRoXG4gIHwgbmFtZSA6OiBcImlubGluZS10ZXN0LXJ1bm5lclwiIDo6IGxpYiA6OiByZXN0XG4gICAgd2hlbiBCYXNlLkV4cG9ydGVkX2Zvcl9zcGVjaWZpY191c2VzLmFtX3Rlc3RpbmcgLT4gYmVnaW5cbiAgICAgICgqIHdoZW4gd2Ugc2VlIHRoaXMgYXJndW1lbnQsIHdlIHN3aXRjaCB0byB0ZXN0IG1vZGUgKilcbiAgICAgIGxldCB0ZXN0cyA9IHJlZiBbXSBpblxuICAgICAgbGV0IGxpc3RfcGFydGl0aW9ucyA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IHBhcnRpdGlvbiA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgdGFnX3ByZWRpY2F0ZSA9IHJlZiBUYWdfcHJlZGljYXRlLmVuYWJsZV9ldmVyeXRoaW5nIGluXG4gICAgICBsZXQgbmFtZV9maWx0ZXIgPSByZWYgW10gaW5cbiAgICAgIHBhcnNlX2FyZ3YgKEFycmF5Lm9mX2xpc3QgKG5hbWUgOjogcmVzdCkpIChBcmcuYWxpZ24gW1xuICAgICAgICBcIi1saXN0LXRlc3QtbmFtZXNcIiwgQXJnLlVuaXQgKGZ1biAoKSAtPiBsaXN0X3Rlc3RfbmFtZXMgOj0gdHJ1ZTsgdmVyYm9zZSA6PSB0cnVlKSxcbiAgICAgICAgXCIgRG8gbm90IHJ1biB0ZXN0cyBidXQgc2hvdyB3aGF0IHdvdWxkIGhhdmUgYmVlbiBydW5cIjtcbiAgICAgICAgXCItbGlzdC1wYXJ0aXRpb25zXCIsIEFyZy5Vbml0IChmdW4gKCkgLT4gbGlzdF9wYXJ0aXRpb25zIDo9IHRydWUpLFxuICAgICAgICBcIiBMaXN0cyBhbGwgdGhlIHBhcnRpdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0IG9uZSB0ZXN0IG9yIHRlc3RfbW9kdWxlXCI7XG4gICAgICAgIFwiLXBhcnRpdGlvblwiLCBBcmcuU3RyaW5nIChmdW4gaSAtPiBwYXJ0aXRpb24gOj0gU29tZSBpKSxcbiAgICAgICAgXCIgT25seSBydW4gdGhlIHRlc3RzIGluIHRoZSBnaXZlbiBwYXJ0aXRpb25cIjtcbiAgICAgICAgXCItdmVyYm9zZVwiLCBBcmcuU2V0IHZlcmJvc2UsIFwiIFNob3cgdGhlIHRlc3RzIGFzIHRoZXkgcnVuXCI7XG4gICAgICAgIFwiLXN0b3Atb24tZXJyb3JcIiwgQXJnLlNldCBzdG9wX29uX2Vycm9yLCBcIiBSdW4gdGVzdHMgb25seSB1cCB0byB0aGUgZmlyc3QgZXJyb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvZXNuJ3Qgd29yayBmb3IgZXhwZWN0IHRlc3RzKVwiO1xuICAgICAgICBcIi1zdHJpY3RcIiwgQXJnLlNldCBzdHJpY3QsIFwiIEVuZCB3aXRoIGFuIGVycm9yIGlmIG5vIHRlc3RzIHdlcmUgcnVuXCI7XG4gICAgICAgIFwiLXNob3ctY291bnRzXCIsIEFyZy5TZXQgc2hvd19jb3VudHMsIFwiIFNob3cgdGhlIG51bWJlciBvZiB0ZXN0cyByYW5cIjtcbiAgICAgICAgXCItbG9nXCIsIEFyZy5Vbml0IChmdW4gKCkgLT5cbiAgICAgICAgICAodHJ5IFN5cy5yZW1vdmUgXCJpbmxpbmVfdGVzdHMubG9nXCIgd2l0aCBfIC0+ICgpKTtcbiAgICAgICAgICBsb2cgOj0gU29tZSAob3Blbl9vdXQgXCJpbmxpbmVfdGVzdHMubG9nXCIpXG4gICAgICAgICksIFwiIExvZyB0aGUgdGVzdHMgcnVuIGluIGlubGluZV90ZXN0cy5sb2dcIjtcbiAgICAgICAgXCItZHJvcC10YWdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUuZHJvcCAhdGFnX3ByZWRpY2F0ZSBzXG4gICAgICAgICksIFwidGFnIE9ubHkgcnVuIHRlc3RzIG5vdCB0YWdnZWQgd2l0aCBbdGFnXSAob3ZlcnJpZGVzIHByZXZpb3VzIC1yZXF1aXJlLXRhZylcIjtcbiAgICAgICAgXCItcmVxdWlyZS10YWdcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICB0YWdfcHJlZGljYXRlIDo9IFRhZ19wcmVkaWNhdGUucmVxdWlyZSAhdGFnX3ByZWRpY2F0ZSBzXG4gICAgICAgICksIFwidGFnIE9ubHkgcnVuIHRlc3RzIHRhZ2dlZCB3aXRoIFt0YWddIChvdmVycmlkZXMgcHJldmlvdXMgLWRyb3AtdGFnKVwiO1xuICAgICAgICBcIi1tYXRjaGluZ1wiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBuYW1lX2ZpbHRlciA6PSBzIDo6ICFuYW1lX2ZpbHRlciksXG4gICAgICAgIFwic3Vic3RyaW5nIE9ubHkgcnVuIHRlc3RzIHdob3NlIG5hbWVzIGNvbnRhaW4gdGhlIGdpdmVuIHN1YnN0cmluZ1wiO1xuICAgICAgICBcIi1vbmx5LXRlc3RcIiwgQXJnLlN0cmluZyAoZnVuIHMgLT5cbiAgICAgICAgICBsZXQgZmlsZW5hbWUsIGluZGV4ID1cbiAgICAgICAgICAgIG1hdGNoIHBhcnNlX2Rlc2NyIHMgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChmaWxlLCBpbmRleCkgLT4gZmlsZSwgaW5kZXhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcyAnOicgdGhlblxuICAgICAgICAgICAgICAgIGxldCBpID0gU3RyaW5nLmluZGV4IHMgJzonIGluXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gU3RyaW5nLnN1YiBzIDAgaSBpblxuICAgICAgICAgICAgICAgIGxldCBpbmRleF9zdHJpbmcgPSBTdHJpbmcuc3ViIHMgKGkgKyAxKSAoU3RyaW5nLmxlbmd0aCBzIC0gaSAtIDEpIGluXG4gICAgICAgICAgICAgICAgbGV0IGluZGV4ID1cbiAgICAgICAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGluZGV4X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIkFyZ3VtZW50ICVzIGRvZXNuJ3QgZml0IHRoZSBmb3JtYXQgZmlsZW5hbWVbOmxpbmVfbnVtYmVyXVxcbiUhXCIgcztcbiAgICAgICAgICAgICAgICAgICAgZXhpdCAxXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBmaWxlbmFtZSwgU29tZSBpbmRleFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcywgTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgdGVzdHMgOj0gKGZpbGVuYW1lLCBpbmRleCwgcmVmIGZhbHNlKSA6OiAhdGVzdHNcbiAgICAgICAgKSwgXCJsb2NhdGlvbiBSdW4gb25seSB0aGUgdGVzdHMgc3BlY2lmaWVkIGJ5IGFsbCB0aGUgLW9ubHktdGVzdCBvcHRpb25zLlxuICAgICAgICAgICAgICAgICAgICAgIExvY2F0aW9ucyBjYW4gYmUgb25lIG9mIHRoZXNlIGZvcm1zOlxuICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbFxuICAgICAgICAgICAgICAgICAgICAgIC0gZmlsZS5tbDpsaW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgIC0gRmlsZSBcXFwiZmlsZS5tbFxcXCJcbiAgICAgICAgICAgICAgICAgICAgICAtIEZpbGUgXFxcImZpbGUubWxcXFwiLCBsaW5lIDIzXG4gICAgICAgICAgICAgICAgICAgICAgLSBGaWxlIFxcXCJmaWxlLm1sXFxcIiwgbGluZSAyMywgY2hhcmFjdGVycyAyLTNcIjtcbiAgICAgICAgXCItbm8tY29sb3JcIiwgQXJnLkNsZWFyIHVzZV9jb2xvciwgXCIgU3VtbWFyaXplIHRlc3RzIHdpdGhvdXQgdXNpbmcgY29sb3JcIjtcbiAgICAgICAgXCItaW4tcGxhY2VcIiwgQXJnLlNldCBpbl9wbGFjZSwgXCIgVXBkYXRlIGV4cGVjdCB0ZXN0cyBpbiBwbGFjZVwiO1xuICAgICAgICBcIi1kaWZmLWNtZFwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBkaWZmX2NvbW1hbmQgOj0gU29tZSBzKSxcbiAgICAgICAgXCIgRGlmZiBjb21tYW5kIGZvciB0ZXN0cyB0aGF0IHJlcXVpcmUgZGlmZmluZyAodXNlIC0gdG8gZGlzYWJsZSBkaWZmaW5nKVwiO1xuICAgICAgICBcIi1hbGxvdy1vdXRwdXQtcGF0dGVybnNcIiwgQXJnLlNldCBhbGxvd19vdXRwdXRfcGF0dGVybnMsXG4gICAgICAgIFwiIEFsbG93IG91dHB1dCBwYXR0ZXJucyBpbiB0ZXN0cyBleHBlY3RhdGlvbnNcIjtcbiAgICAgICAgXCItc291cmNlLXRyZWUtcm9vdFwiLCBBcmcuU3RyaW5nIChmdW4gcyAtPiBzb3VyY2VfdHJlZV9yb290IDo9IFNvbWUgcyksXG4gICAgICAgIFwiIFBhdGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlXCJcbiAgICAgIF0pIChmdW4gYW5vbiAtPlxuICAgICAgICBQcmludGYuZXByaW50ZiBcIiVzOiB1bmV4cGVjdGVkIGFub255bW91cyBhcmd1bWVudCAlc1xcbiUhXCIgbmFtZSBhbm9uO1xuICAgICAgICBleGl0IDFcbiAgICAgICkgKFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgW2FyZ3NdXCIgbmFtZSBcImlubGluZS10ZXN0LXJ1bm5lclwiIGxpYik7XG4gICAgICBBY3Rpb24uc2V0IChcbiAgICAgICAgYFRlc3RfbW9kZVxuICAgICAgICAgIHsgd2hpY2hfdGVzdHMgPVxuICAgICAgICAgICAgICB7IGxpYm5hbWUgPSBsaWJcbiAgICAgICAgICAgICAgOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSAhdGVzdHM7XG4gICAgICAgICAgICAgICAgd2hpY2hfdGFncyA9ICF0YWdfcHJlZGljYXRlO1xuICAgICAgICAgICAgICAgIG5hbWVfZmlsdGVyID0gIW5hbWVfZmlsdGVyXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICA7IHdoYXRfdG9fZG8gPVxuICAgICAgICAgICAgICBpZiAhbGlzdF9wYXJ0aXRpb25zXG4gICAgICAgICAgICAgIHRoZW4gYExpc3RfcGFydGl0aW9uc1xuICAgICAgICAgICAgICBlbHNlIGBSdW5fcGFydGl0aW9uICFwYXJ0aXRpb25cbiAgICAgICAgICB9KVxuICAgIGVuZFxuICB8IF8gLT5cbiAgICAoKVxuXG5sZXQgYW1fdGVzdF9ydW5uZXIgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgVGVzdF9tb2RlIF8gLT4gdHJ1ZVxuICB8IGBJZ25vcmUgLT4gZmFsc2VcblxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RfZW52X3ZhciA9XG4gICgqIGZvciBhcHByb3hpbWF0ZSBjb21wYXRpYmlsaXR5LCBnaXZlbiB0aGF0IHRoZSB2YXJpYWJsZSBpcyBub3QgZXhhY3RseSBlcXVpdmFsZW50XG4gICAgIHRvIHdoYXQgUFBYX0lOTElORV9URVNUX0xJQl9BTV9SVU5OSU5HX0lOTElORV9URVNUIHVzZWQgdG8gYmUgKilcbiAgXCJURVNUSU5HX0ZSQU1FV09SS1wiXG5cbigqIFRoaXMgdmFsdWUgaXMgZGVwcmVjYXRlZCBpbiBwcmluY2lwbGUsIGluIGZhdm9yIG9mIENvcmUuYW1fcnVubmluZ190ZXN0LCBzb1xuICAgd2UncmUgZ29pbmcgdG8gbGl2ZSB3aXRoIHRoZSB1Z2x5IHBhdHRlcm4gbWF0Y2guICopXG5sZXQgYW1fcnVubmluZ19pbmxpbmVfdGVzdCA9XG4gIG1hdGNoIFN5cy5nZXRlbnYgXCJQUFhfSU5MSU5FX1RFU1RfTElCX0FNX1JVTk5JTkdfSU5MSU5FX1RFU1RcIiB3aXRoXG4gIHwgKF8gOiBzdHJpbmcpIC0+IHRydWUgKCogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwZW9wbGUgc2V0dGluZyB0aGlzIHZhcmlhYmxlIGRpcmVjdGx5ICopXG4gIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPlxuICAgIG1hdGNoIFN5cy5nZXRlbnYgYW1fcnVubmluZ19pbmxpbmVfdGVzdF9lbnZfdmFyIHdpdGhcbiAgICB8IFwiaW5saW5lLXRlc3RcIiAtPiB0cnVlXG4gICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IGZhbHNlXG4gICAgfCBfIC0+IGZhbHNlXG5cbmxldCB0ZXN0aW5nID1cbiAgaWYgYW1fdGVzdF9ydW5uZXJcbiAgdGhlbiBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXJcbiAgZWxzZVxuICAgIChpZiBhbV9ydW5uaW5nX2lubGluZV90ZXN0XG4gICAgIHRoZW4gYFRlc3RpbmcgYEFtX2NoaWxkX29mX3Rlc3RfcnVubmVyXG4gICAgIGVsc2UgYE5vdF90ZXN0aW5nKVxuXG5sZXQgd2FsbF90aW1lX2Nsb2NrX25zICgpID1cbiAgVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKVxuXG5cbmxldCB3aGVyZV90b19jdXRfYmFja3RyYWNlID0gbGF6eSAoXG4gIEJhc2UuU3RyaW5nLlNlYXJjaF9wYXR0ZXJuLmNyZWF0ZSAoX19NT0RVTEVfXyBeIFwiLlwiIF4gXCJ0aW1lX3dpdGhvdXRfcmVzZXR0aW5nX3JhbmRvbV9zZWVkc1wiKSlcblxubGV0IHRpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgYmVmb3JlX25zID0gd2FsbF90aW1lX2Nsb2NrX25zICgpIGluXG4gIGxldCByZXMgPVxuICAgICgqIFRvIGF2b2lkIG5vaXNlIGluIGJhY2t0cmFjZXMsIHdlIGRvIHR3byB0aGluZ3MuXG5cbiAgICAgICBXZSB1c2UgW3doZXJlX3RvX2N1dF9iYWNrdHJhY2VdIGFib3ZlIHRvIHJlbW92ZSB0aGUgc3RhY2sgZnJhbWVzIGZvciB0aGUgY3VycmVudFxuICAgICAgIGZ1bmN0aW9uIGFuZCBhbnkgZnVuY3Rpb24gaXQgZ2V0cyBpbmxpbmVkIGludG8sIGFzIGl0J3Mgbm90IG9mIGFueSBpbnRlcmVzdCB0byB0aGVcbiAgICAgICB1c2VyLCBzaW5jZSBpdCdzIG5vdCB0YWxraW5nIGFib3V0IHRoZWlyIHRlc3QgYnV0IGluc3RlYWQgdGFsa2luZyBhYm91dCB0aGVcbiAgICAgICBwcHhfaW5saW5lX3Rlc3QgbWFjaGluZXJ5LlxuXG4gICAgICAgV2UgYWxzbyBhdm9pZCBpbnNlcnRpbmcgYW55IGNvZGUgYmV0d2VlbiB0aGUgW2ZdIHRoYXQgY29tZXMgZnJvbSB0aGUgdXNlcidzIGZpbGVcbiAgICAgICBhbmQgZ3JhYmJpbmcgdGhlIGJhY2t0cmFjZSBmcm9tIGl0cyBleGNlcHRpb25zIChubyB3cmFwcGluZyBvZiBbZl0gd2l0aCBoaWdoIG9yZGVyXG4gICAgICAgZnVuY3Rpb25zIGxpa2UgRXhuLnByb3RlY3QsIG9yIChmdW4gKCkgLT4gZiAoKTsgdHJ1ZSkpLiAqKVxuICAgIHRyeSBPayAoZiAoKSlcbiAgICB3aXRoIGV4biAtPiBFcnJvciAoZXhuLCBQcmludGV4Yy5nZXRfYmFja3RyYWNlICgpKVxuICBpblxuICB0aW1lX3NlYyA6PSBCYXNlLkludDYzLih3YWxsX3RpbWVfY2xvY2tfbnMgKCkgLSBiZWZvcmVfbnMgfD4gdG9fZmxvYXQpICAvLiAxZTk7XG4gIHJlc1xuXG5cbmxldCBzYXZlZF9jYW1sX3JhbmRvbV9zdGF0ZSA9IGxhenkgKFN0ZGxpYi5SYW5kb20uU3RhdGUubWFrZSBbfCAxMDA7IDIwMDsgMzAwIHxdKVxubGV0IHNhdmVkX2Jhc2VfcmFuZG9tX3N0YXRlID0gbGF6eSAoQmFzZS5SYW5kb20uU3RhdGUubWFrZSBbfCAxMTE7IDIyMjsgMzMzIHxdKVxuXG5sZXQgdGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYgPVxuICBsZXQgY2FtbF9yYW5kb21fc3RhdGUgPSBTdGRsaWIuUmFuZG9tLmdldF9zdGF0ZSAoKSBpblxuICBsZXQgYmFzZV9yYW5kb21fc3RhdGUgPSBCYXNlLlJhbmRvbS5TdGF0ZS5jb3B5IEJhc2UuUmFuZG9tLlN0YXRlLmRlZmF1bHQgaW5cbiAgU3RkbGliLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfY2FtbF9yYW5kb21fc3RhdGUpO1xuICBCYXNlLlJhbmRvbS5zZXRfc3RhdGUgKExhenkuZm9yY2Ugc2F2ZWRfYmFzZV9yYW5kb21fc3RhdGUpO1xuICBsZXQgcmVzdWx0ID0gdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZiBpblxuICBTdGRsaWIuUmFuZG9tLnNldF9zdGF0ZSBjYW1sX3JhbmRvbV9zdGF0ZTtcbiAgQmFzZS5SYW5kb20uc2V0X3N0YXRlIGJhc2VfcmFuZG9tX3N0YXRlO1xuICByZXN1bHRcblxubGV0IHN0cmluZ19vZl9tb2R1bGVfZGVzY3IgKCkgPVxuICBTdHJpbmcuY29uY2F0IFwiXCIgKFxuICAgIExpc3QubWFwIChmdW4gcyAtPiBcIiAgaW4gVEVTXCIgXiBcIlRfTU9EVUxFIGF0IFwiIF4gU3RyaW5nLnVuY2FwaXRhbGl6ZV9hc2NpaSBzIF4gXCJcXG5cIilcbiAgICAgIChNb2R1bGVfY29udGV4dC5jdXJyZW50X2Rlc2NyICgpKVxuICApXG5cbmxldCBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIGwgPVxuICBMaXN0LmV4aXN0cyAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCB1c2VkKSAtPlxuICAgIGxldCBwb3NpdGlvbl9zdGFydCA9XG4gICAgICBTdHJpbmcubGVuZ3RoIGRlZl9maWxlbmFtZSAtIFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBsZXQgZm91bmQgPVxuICAgICAgcG9zaXRpb25fc3RhcnQgPj0gMCAmJlxuICAgICAgbGV0IGVuZF9vZl9kZWZfZmlsZW5hbWUgPVxuICAgICAgICBTdHJpbmcuc3ViIGRlZl9maWxlbmFtZVxuICAgICAgICAgIHBvc2l0aW9uX3N0YXJ0XG4gICAgICAgICAgKFN0cmluZy5sZW5ndGggZmlsZW5hbWUpIGluXG4gICAgICBlbmRfb2ZfZGVmX2ZpbGVuYW1lID0gZmlsZW5hbWVcbiAgICAgICYmIChwb3NpdGlvbl9zdGFydCA9IDAgfHwgZGVmX2ZpbGVuYW1lLltwb3NpdGlvbl9zdGFydCAtIDFdID0gJy8nKVxuICAgICAgJiYgKG1hdGNoIGxpbmVfbnVtYmVyX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBsaW5lX251bWJlciAtPiBkZWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlcilcbiAgICBpblxuICAgIGlmIGZvdW5kIHRoZW4gdXNlZCA6PSB0cnVlO1xuICAgIGZvdW5kXG4gICkgbFxuXG5sZXQgbmFtZV9maWx0ZXJfbWF0Y2ggfm5hbWVfZmlsdGVyIGRlc2NyID1cbiAgbWF0Y2ggbmFtZV9maWx0ZXIgd2l0aFxuICB8IFtdIC0+IHRydWVcbiAgfCBfIDo6IF8gLT5cbiAgICBMaXN0LmV4aXN0cyAoZnVuIHN1YnN0cmluZyAtPiBCYXNlLlN0cmluZy5pc19zdWJzdHJpbmcgfnN1YnN0cmluZyBkZXNjcikgbmFtZV9maWx0ZXJcblxubGV0IHByaW50X2RlbGF5ZWRfZXJyb3JzICgpID1cbiAgbWF0Y2ggTGlzdC5yZXYgIWRlbGF5ZWRfZXJyb3JzIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IF8gOjogXyBhcyBkZWxheWVkX2Vycm9ycyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwiXFxuJXNcXG4lIVwiIChTdHJpbmcubWFrZSA3MCAnPScpO1xuICAgIExpc3QuaXRlciAoZnVuIG1lc3NhZ2UgLT5cbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiJXMlIVwiIG1lc3NhZ2VcbiAgICApIGRlbGF5ZWRfZXJyb3JzXG5cbmxldCBlcHJpbnRmX29yX2RlbGF5IGZtdCA9XG4gIFByaW50Zi5rc3ByaW50ZiAoZnVuIHMgLT5cbiAgICBpZiAhdmVyYm9zZSB0aGVuIGRlbGF5ZWRfZXJyb3JzIDo9IHMgOjogIWRlbGF5ZWRfZXJyb3JzXG4gICAgZWxzZSBQcmludGYuZXByaW50ZiBcIiVzJSFcIiBzO1xuICAgIGlmICFzdG9wX29uX2Vycm9yIHRoZW4gYmVnaW5cbiAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgZXhpdCAyXG4gICAgZW5kXG4gICkgZm10XG5cbmxldCBhZGRfaG9va3MgKChtb2R1bGUgQykgOiBjb25maWcpIGYgPVxuICBmdW4gKCkgLT4gQy5wcmVfdGVzdF9ob29rICgpOyBmICgpXG5cbmxldCBodW1fYmFja3RyYWNlIGJhY2t0cmFjZSA9XG4gIGxldCBvcGVuIEJhc2UgaW5cbiAgYmFja3RyYWNlXG4gIHw+IFN0cmluZy5zcGxpdF9saW5lc1xuICB8PiBMaXN0LnRha2Vfd2hpbGUgfmY6KGZ1biBzdHIgLT5cbiAgICBub3QgKFN0cmluZy5TZWFyY2hfcGF0dGVybi5tYXRjaGVzIChmb3JjZSB3aGVyZV90b19jdXRfYmFja3RyYWNlKSBzdHIpKVxuICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHN0ciAtPiBcIiAgXCIgXiBzdHIgXiBcIlxcblwiKVxuICB8PiBTdHJpbmcuY29uY2F0XG5cbmxldFtAaW5saW5lIG5ldmVyXSB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZTpkZWZfZmlsZW5hbWUgfmxpbmVfbnVtYmVyOmRlZl9saW5lX251bWJlclxuICAgICAgICAgICAgICAgICAgICAgfnN0YXJ0X3BvcyB+ZW5kX3BvcyBmIGJvb2xfb2ZfZiA9XG4gIG1hdGNoIEFjdGlvbi5nZXQgKCkgd2l0aFxuICB8IGBJZ25vcmUgLT4gKClcbiAgfCBgVGVzdF9tb2RlIHsgd2hpY2hfdGVzdHMgPSB7IGxpYm5hbWU7IG9ubHlfdGVzdF9sb2NhdGlvbjsgd2hpY2hfdGFnczsgbmFtZV9maWx0ZXIgfTsgd2hhdF90b19kbyB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgPSBsYXp5IChkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcykgaW5cbiAgICBsZXQgY29tcGxldGVfdGFncyA9IHRhZ3MgQCBNb2R1bGVfY29udGV4dC5jdXJyZW50X3RhZ3MgKCkgaW5cbiAgICBsZXQgc2hvdWxkX3J1biA9XG4gICAgICBTb21lIGxpYm5hbWUgPSAhZHluYW1pY19saWJcbiAgICAgICYmIGJlZ2luIG1hdGNoIG9ubHlfdGVzdF9sb2NhdGlvbiB3aXRoXG4gICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICB8IF8gOjogXyAtPiBwb3NpdGlvbl9tYXRjaCBkZWZfZmlsZW5hbWUgZGVmX2xpbmVfbnVtYmVyIG9ubHlfdGVzdF9sb2NhdGlvblxuICAgICAgZW5kXG4gICAgICAmJiBub3QgKFRhZ19wcmVkaWNhdGUuZGlzYWJsZWQgd2hpY2hfdGFncyB+Y29tcGxldGVfdGFncylcbiAgICAgICYmIG5hbWVfZmlsdGVyX21hdGNoIH5uYW1lX2ZpbHRlciAoTGF6eS5mb3JjZSBkZXNjcilcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW4gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgLT4gUGFydGl0aW9uLmZvdW5kX3Rlc3QgKClcbiAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gcGFydGl0aW9uIC0+XG4gICAgICAgIGlmIFBhcnRpdGlvbi5pc19jdXJyZW50IHBhcnRpdGlvbiB0aGVuIGJlZ2luXG4gICAgICAgICAgbGV0IGRlc2NyID0gTGF6eS5mb3JjZSBkZXNjciBpblxuICAgICAgICAgIGluY3IgdGVzdHNfcmFuO1xuICAgICAgICAgIGJlZ2luIG1hdGNoICFsb2cgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBjaCAtPiBQcmludGYuZnByaW50ZiBjaCBcIiVzXFxuJXNcIiBkZXNjciAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgaWYgIXZlcmJvc2UgdGhlbiBiZWdpblxuICAgICAgICAgICAgUHJpbnRmLnByaW50ZiBcIiVzJSFcIiBkZXNjclxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGlmICFsaXN0X3Rlc3RfbmFtZXNcbiAgICAgICAgICAgIHRoZW4gT2sgdHJ1ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoKiBTZWUgW3RpbWVfd2l0aG91dF9yZXNldHRpbmdfcmFuZG9tX3NlZWRzXSBmb3Igd2h5IHdlIHVzZSBbYm9vbF9vZl9mXVxuICAgICAgICAgICAgICAgICByYXRoZXIgaGF2ZSB0aGUgY2FsbGVyIHdyYXAgW2ZdIHRvIGFkanVzdCBpdHMgcmV0dXJuIHZhbHVlLiAqKVxuICAgICAgICAgICAgICBSZXN1bHQubWFwIGJvb2xfb2ZfZiAodGltZV9hbmRfcmVzZXRfcmFuZG9tX3NlZWRzIGYpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKiBJZiAhbGlzdF90ZXN0X25hbWVzLCB0aGlzIGlzIGlzIGEgaGFybWxlc3MgemVyby4gKilcbiAgICAgICAgICBpZiAhdmVyYm9zZSB0aGVuIFByaW50Zi5wcmludGYgXCIgKCUuM2Ygc2VjKVxcbiUhXCIgIXRpbWVfc2VjO1xuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayB0cnVlIC0+ICgpXG4gICAgICAgICAgfCBPayBmYWxzZSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgaXMgZmFsc2UuXFxuJXNcXG4lIVwiIGRlc2NyXG4gICAgICAgICAgICAgIChzdHJpbmdfb2ZfbW9kdWxlX2Rlc2NyICgpKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0c19mYWlsZWQ7XG4gICAgICAgICAgICBsZXQgYmFja3RyYWNlID0gaHVtX2JhY2t0cmFjZSBiYWNrdHJhY2UgaW5cbiAgICAgICAgICAgIGxldCBleG5fc3RyID0gU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIGV4biBpblxuICAgICAgICAgICAgbGV0IHNlcCA9IGlmIFN0cmluZy5jb250YWlucyBleG5fc3RyICdcXG4nIHRoZW4gXCJcXG5cIiBlbHNlIFwiIFwiIGluXG4gICAgICAgICAgICBlcHJpbnRmX29yX2RlbGF5IFwiJXMgdGhyZXclcyVzLlxcbiVzJXNcXG4lIVwiIGRlc2NyIHNlcCBleG5fc3RyXG4gICAgICAgICAgICAgIGJhY2t0cmFjZSAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgZW5kXG4gICAgZW5kXG5cbmxldCBzZXRfbGliX2FuZF9wYXJ0aXRpb24gc3RhdGljX2xpYiBwYXJ0aXRpb24gPVxuICBtYXRjaCAhZHluYW1pY19saWIgd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICgqIHBvc3NpYmxlIGlmIHRoZSBpbnRlcmZhY2UgaXMgdXNlZCBleHBsaWNpdGx5IG9yIGlmIHdlIGhhcHBlbiB0byBkeW5saW5rIHNvbWV0aGluZ1xuICAgICAgIHRoYXQgY29udGFpbiB0ZXN0cyAqKVxuICAgICgpXG4gIHwgTm9uZSAtPlxuICAgIGR5bmFtaWNfbGliIDo9IFNvbWUgc3RhdGljX2xpYjtcbiAgICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgICB8IGBJZ25vcmUgLT4gKClcbiAgICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0czsgd2hhdF90b19kbyB9IC0+XG4gICAgICBpZiB3aGljaF90ZXN0cy5saWJuYW1lID0gc3RhdGljX2xpYiB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByZXF1aXJlc19wYXJ0aXRpb24gPVxuICAgICAgICAgIG1hdGNoIHdoYXRfdG9fZG8gd2l0aFxuICAgICAgICAgIHwgYExpc3RfcGFydGl0aW9ucyB8IGBSdW5fcGFydGl0aW9uIChTb21lIF8pIC0+IHRydWVcbiAgICAgICAgICB8IGBSdW5fcGFydGl0aW9uIE5vbmUgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgaWYgcGFydGl0aW9uID0gXCJcIiAmJiByZXF1aXJlc19wYXJ0aXRpb25cbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcInBweF9pbmxpbmVfdGVzdDogY2Fubm90IHVzZSAtbGlzdC1wYXJ0aXRpb24gb3IgLXBhcnRpdGlvbiBcXFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IHNwZWNpZnlpbmcgYSBwYXJ0aXRpb24gYXQgcHJlcHJvY2Vzc2luZyB0aW1lXCJcbiAgICAgICAgZWxzZSBQYXJ0aXRpb24uc2V0X2N1cnJlbnQgcGFydGl0aW9uXG4gICAgICBlbmRcblxubGV0IHVuc2V0X2xpYiBzdGF0aWNfbGliID1cbiAgbWF0Y2ggIWR5bmFtaWNfbGliIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKCogbm90IGdpdmluZyBhbiBlcnJvciwgYmVjYXVzZSB3aGVuIHNvbWUgYW5ub3lpbmcgcGVvcGxlIHB1dCBwYV9vdW5pdCBpbiB0aGVpciBsaXN0XG4gICAgICAgb2YgcHJlcHJvY2Vzc29ycywgcGFfb3VuaXQgaXMgc2V0IHVwIHR3aWNlIGFuZCB3ZSBoYXZlIHR3byBjYWxscyB0byB1bnNldF9saWIgYXRcbiAgICAgICB0aGUgZW5kIG9mIHRoZSBmaWxlLCBhbmQgdGhlIHNlY29uZCBvbmUgY29tZXMgaW4gdGhpcyBicmFuY2ggKilcbiAgICAoKVxuICB8IFNvbWUgbGliIC0+XG4gICAgaWYgbGliID0gc3RhdGljX2xpYiB0aGVuIGR5bmFtaWNfbGliIDo9IE5vbmVcblxubGV0IHRlc3QgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3Bvc1xuICAgIGYgKGZ1biBiIC0+IGIpXG5cbmxldCB0ZXN0X3VuaXQgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lIH5saW5lX251bWJlciB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICB0ZXN0X2lubmVyIH5jb25maWcgfmRlc2NyIH50YWdzIH5maWxlbmFtZSB+bGluZV9udW1iZXIgfnN0YXJ0X3BvcyB+ZW5kX3Bvc1xuICAgIGYgKGZ1biAoKSAtPiB0cnVlKVxuXG5sZXRbQGlubGluZSBuZXZlcl0gdGVzdF9tb2R1bGUgfmNvbmZpZyB+ZGVzY3IgfnRhZ3MgfmZpbGVuYW1lOmRlZl9maWxlbmFtZSB+bGluZV9udW1iZXI6ZGVmX2xpbmVfbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICB+c3RhcnRfcG9zIH5lbmRfcG9zIGYgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+ICgpXG4gIHwgYFRlc3RfbW9kZSB7IHdoaWNoX3Rlc3RzID0geyBsaWJuYW1lOyBvbmx5X3Rlc3RfbG9jYXRpb24gPSBfOyBuYW1lX2ZpbHRlciA9IF87IHdoaWNoX3RhZ3MgfTsgd2hhdF90b19kbyB9IC0+XG4gICAgbGV0IGYgPSBhZGRfaG9va3MgY29uZmlnIGYgaW5cbiAgICBsZXQgZGVzY3IgKCkgPSBkaXNwbGF5ZWRfZGVzY3IgZGVzY3IgZGVmX2ZpbGVuYW1lIGRlZl9saW5lX251bWJlciBzdGFydF9wb3MgZW5kX3BvcyBpblxuICAgIGxldCBwYXJ0aWFsX3RhZ3MgPSB0YWdzIEAgTW9kdWxlX2NvbnRleHQuY3VycmVudF90YWdzICgpIGluXG4gICAgbGV0IHNob3VsZF9ydW4gPVxuICAgICAgU29tZSBsaWJuYW1lID0gIWR5bmFtaWNfbGliXG4gICAgICAoKiBJZiwgbm8gbWF0dGVyIHdoYXQgdGFncyBhIHRlc3QgZGVmaW5lcywgd2UgY2VydGFpbmx5IHdpbGwgZHJvcCBhbGwgdGVzdHMgd2l0aGluXG4gICAgICAgICB0aGlzIG1vZHVsZSwgdGhlbiBkb24ndCBydW4gdGhlIG1vZHVsZSBhdCBhbGwuIFRoaXMgbWVhbnMgcGVvcGxlIGNhbiB3cml0ZVxuICAgICAgICAgdGhpbmdzIGxpa2UgdGhlIGZvbGxvd2luZyB3aXRob3V0IGJyZWFraW5nIHRoZSAzMi1iaXQgYnVpbGQ6XG4gICAgICAgICBsZXQldGVzdF9tb2R1bGUgW0B0YWdzIFwiNjQtYml0cy1vbmx5XCJdID0gKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgIGxldCBpID0gSW50NjQudG9faW50X2V4biAuLi4uXG4gICAgICAgICBlbmQpXG4gICAgICAgICBXZSBkb24ndCBzaG9ydGN1dCBiYXNlZCBvbiBwb3NpdGlvbiwgYXMgd2UgY2FuJ3QgdGVsbCB3aGF0IHBvc2l0aW9ucyB0aGVcbiAgICAgICAgIGlubmVyIHRlc3RzIHdpbGwgaGF2ZS4gKilcbiAgICAgICYmIG5vdCAoVGFnX3ByZWRpY2F0ZS5lbnRpcmVfbW9kdWxlX2Rpc2FibGVkIHdoaWNoX3RhZ3MgfnBhcnRpYWxfdGFncylcbiAgICBpblxuICAgIGlmIHNob3VsZF9ydW4gdGhlbiBiZWdpblxuICAgICAgbWF0Y2ggd2hhdF90b19kbyB3aXRoXG4gICAgICB8IGBMaXN0X3BhcnRpdGlvbnMgLT4gUGFydGl0aW9uLmZvdW5kX3Rlc3QgKClcbiAgICAgIHwgYFJ1bl9wYXJ0aXRpb24gcGFydGl0aW9uIC0+XG4gICAgICAgIGlmIFBhcnRpdGlvbi5pc19jdXJyZW50IHBhcnRpdGlvbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfcmFuO1xuICAgICAgICAgIGxldCBkZXNjciA9IGRlc2NyICgpIGluXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1vZHVsZV9jb250ZXh0LndpdGhfIH5kZXNjciB+dGFncyAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICgqIFdlIGRvIG5vdCByZXNldCByYW5kb20gc3RhdGVzIHVwb24gZW50ZXJpbmcgW2xldCV0ZXN0X21vZHVsZV0uXG5cbiAgICAgICAgICAgICAgICAgQ29uOiBDb2RlIGluIHRlc3QgbW9kdWxlcyBjYW4gYWNjaWRlbnRhbGx5IGRlcGVuZCBvbiB0b3AtbGV2ZWwgcmFuZG9tXG4gICAgICAgICAgICAgICAgIHN0YXRlIGVmZmVjdHMuXG5cbiAgICAgICAgICAgICAgICAgUHJvczogKDEpIFdlIGRvbid0IHJlc2V0IHRvIHRoZSBzYW1lIHNlZWQgb24gZW50ZXJpbmcgYSBbbGV0JXRlc3RfbW9kdWxlXVxuICAgICAgICAgICAgICAgICBhbmQgdGhlbiBhIFtsZXQldGVzdF0gaW5zaWRlIHRoYXQgbW9kdWxlLCB3aGljaCBjb3VsZCBsZWFkIHRvXG4gICAgICAgICAgICAgICAgIGFjY2lkZW50YWxseSByYW5kb21seSBnZW5lcmF0aW5nIHRoZSBzYW1lIHZhbHVlcyBpbiBzb21lIHRlc3QuICgyKSBNb3ZpbmdcbiAgICAgICAgICAgICAgICAgY29kZSBpbnRvIGFuZCBvdXQgb2YgW2xldCV0ZXN0X21vZHVsZV0gZG9lcyBub3QgY2hhbmdlIGl0cyByYW5kb20gc2VlZC5cbiAgICAgICAgICAgICAgKilcbiAgICAgICAgICAgICAgdGltZV93aXRob3V0X3Jlc2V0dGluZ19yYW5kb21fc2VlZHMgZilcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiAoKVxuICAgICAgICAgIHwgRXJyb3IgKGV4biwgYmFja3RyYWNlKSAtPlxuICAgICAgICAgICAgaW5jciB0ZXN0X21vZHVsZXNfZmFpbGVkO1xuICAgICAgICAgICAgbGV0IGJhY2t0cmFjZSA9IGh1bV9iYWNrdHJhY2UgYmFja3RyYWNlIGluXG4gICAgICAgICAgICBsZXQgZXhuX3N0ciA9IFNleHBsaWIwLlNleHBfY29udi5wcmludGV4Y19wcmVmZXJfc2V4cCBleG4gaW5cbiAgICAgICAgICAgIGxldCBzZXAgPSBpZiBTdHJpbmcuY29udGFpbnMgZXhuX3N0ciAnXFxuJyB0aGVuIFwiXFxuXCIgZWxzZSBcIiBcIiBpblxuICAgICAgICAgICAgZXByaW50Zl9vcl9kZWxheSAoXCJURVNcIiBeXiBcIlRfTU9EVUxFIGF0ICVzIHRocmV3JXMlcy5cXG4lcyVzXFxuJSFcIilcbiAgICAgICAgICAgICAgKFN0cmluZy51bmNhcGl0YWxpemVfYXNjaWkgZGVzY3IpIHNlcCBleG5fc3RyIGJhY2t0cmFjZSAoc3RyaW5nX29mX21vZHVsZV9kZXNjciAoKSlcbiAgICAgICAgZW5kXG4gICAgZW5kXG5cbmxldCBzdW1tYXJpemUgKCkgPVxuICBtYXRjaCBBY3Rpb24uZ2V0ICgpIHdpdGhcbiAgfCBgSWdub3JlIC0+XG4gICAgaWYgU3lzLmFyZ3YgPD4gW3x8XSAmJiBGaWxlbmFtZS5iYXNlbmFtZSBTeXMuYXJndi4oMCkgPSBcImlubGluZV90ZXN0c19ydW5uZXIuZXhlXCIgdGhlblxuICAgICAgUHJpbnRmLmVwcmludGYgXCJpbmxpbmVfdGVzdHNfcnVubmVyLmV4ZSBpcyBub3Qgc3VwcG9zZWQgdG8gYmUgcnVuIGJ5IGhhbmQsIHlvdSBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBydW4gdGhlIGlubGluZV90ZXN0c19ydW5uZXIgc2NyaXB0IGluc3RlYWQuXFxuJSFcIlxuICAgIGVsc2VcbiAgICAgIFByaW50Zi5lcHJpbnRmIFwiWW91IGFyZSBkb2luZyBzb21ldGhpbmcgdW5leHBlY3RlZCB3aXRoIHRoZSB0ZXN0cy4gTm8gdGVzdHMgaGF2ZSBcXG5cXFxuICAgICAgICAgICAgICAgICAgICAgIGJlZW4gcnVuLiBZb3Ugc2hvdWxkIHVzZSB0aGUgaW5saW5lX3Rlc3RzX3J1bm5lciBzY3JpcHQgdG8gcnVuIFxcblxcXG4gICAgICAgICAgICAgICAgICAgICAgdGVzdHMuXFxuJSFcIjtcbiAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICB8IGBUZXN0X21vZGUgeyB3aGljaF90ZXN0cyA9IF87IHdoYXRfdG9fZG8gPSBgTGlzdF9wYXJ0aXRpb25zIH0gLT5cbiAgICBMaXN0Lml0ZXIgKFByaW50Zi5wcmludGYgXCIlc1xcblwiKSAoUGFydGl0aW9uLmFsbCAoKSk7XG4gICAgVGVzdF9yZXN1bHQuU3VjY2Vzc1xuICB8IGBUZXN0X21vZGUgeyB3aGF0X3RvX2RvID0gYFJ1bl9wYXJ0aXRpb24gXzsgd2hpY2hfdGVzdHMgfSAtPiBiZWdpblxuICAgICAgYmVnaW4gbWF0Y2ggIWxvZyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBjaCAtPiBjbG9zZV9vdXQgY2hcbiAgICAgIGVuZDtcbiAgICAgIHByaW50X2RlbGF5ZWRfZXJyb3JzICgpO1xuICAgICAgbWF0Y2ggIXRlc3RzX2ZhaWxlZCwgIXRlc3RfbW9kdWxlc19mYWlsZWQgd2l0aFxuICAgICAgfCAwLCAwIC0+IGJlZ2luXG4gICAgICAgICAgaWYgIXNob3dfY291bnRzIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiJWQgdGVzdHMgcmFuLCAlZCB0ZXN0X21vZHVsZXMgcmFuXFxuJSFcIiAhdGVzdHNfcmFuICF0ZXN0X21vZHVsZXNfcmFuXG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGxldCBlcnJvcnMgPVxuICAgICAgICAgICAgbGV0IHVudXNlZF90ZXN0cyA9XG4gICAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gKF8sIF8sIHVzZWQpIC0+IG5vdCAhdXNlZCkgd2hpY2hfdGVzdHMub25seV90ZXN0X2xvY2F0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggdW51c2VkX3Rlc3RzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgfCBfIDo6IF8gLT4gU29tZSB1bnVzZWRfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGVycm9ycyB3aXRoXG4gICAgICAgICAgfCBTb21lIHRlc3RzIC0+XG4gICAgICAgICAgICBQcmludGYuZXByaW50ZiBcInBweF9pbmxpbmVfdGVzdCBlcnJvcjogdGhlIGZvbGxvd2luZyAtb25seS10ZXN0IGZsYWdzIG1hdGNoZWQgbm90aGluZzpcIjtcbiAgICAgICAgICAgIExpc3QuaXRlciAoZnVuIChmaWxlbmFtZSwgbGluZV9udW1iZXJfb3B0LCBfKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBsaW5lX251bWJlcl9vcHQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUHJpbnRmLmVwcmludGYgXCIgJXNcIiBmaWxlbmFtZVxuICAgICAgICAgICAgICB8IFNvbWUgbGluZV9udW1iZXIgLT4gUHJpbnRmLmVwcmludGYgXCIgJXM6JWRcIiBmaWxlbmFtZSBsaW5lX251bWJlclxuICAgICAgICAgICAgKSB0ZXN0cztcbiAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwiLlxcbiUhXCI7XG4gICAgICAgICAgICBUZXN0X3Jlc3VsdC5FcnJvclxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgaWYgIXRlc3RzX3JhbiA9IDAgJiYgIXN0cmljdCB0aGVuIGJlZ2luXG4gICAgICAgICAgICAgIFByaW50Zi5lcHJpbnRmIFwicHB4X2lubGluZV90ZXN0IGVycm9yOiBubyB0ZXN0cyBoYXZlIGJlZW4gcnVuLlxcbiUhXCI7XG4gICAgICAgICAgICAgIFRlc3RfcmVzdWx0LkVycm9yXG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBUZXN0X3Jlc3VsdC5TdWNjZXNzXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICB8IGNvdW50LCBjb3VudF90ZXN0X21vZHVsZXMgLT5cbiAgICAgICAgUHJpbnRmLmVwcmludGYgXCJGQUlMRUQgJWQgLyAlZCB0ZXN0cyVzXFxuJSFcIiBjb3VudCAhdGVzdHNfcmFuXG4gICAgICAgICAgKGlmIGNvdW50X3Rlc3RfbW9kdWxlcyA9IDAgdGhlbiBcIlwiIGVsc2UgUHJpbnRmLnNwcmludGYgKFwiLCAlZCBURVNcIiBeXiBcIlRfTU9EVUxFU1wiKSBjb3VudF90ZXN0X21vZHVsZXMpO1xuICAgICAgICBUZXN0X3Jlc3VsdC5GYWlsdXJlXG4gICAgZW5kXG5cbmxldCB1c2VfY29sb3IgPSAhdXNlX2NvbG9yXG5sZXQgaW5fcGxhY2UgID0gIWluX3BsYWNlXG5sZXQgZGlmZl9jb21tYW5kID0gIWRpZmZfY29tbWFuZFxubGV0IHNvdXJjZV90cmVlX3Jvb3QgPSAhc291cmNlX3RyZWVfcm9vdFxubGV0IGFsbG93X291dHB1dF9wYXR0ZXJucyA9ICFhbGxvd19vdXRwdXRfcGF0dGVybnNcblxubGV0IGV2YWx1YXRvcnMgPSByZWYgW3N1bW1hcml6ZV1cbmxldCBhZGRfZXZhbHVhdG9yIH5mID0gZXZhbHVhdG9ycyA6PSBmIDo6ICFldmFsdWF0b3JzXG5sZXQgZXhpdCAoKSA9XG4gIExpc3QubWFwIChmdW4gZiAtPiBmICgpKSAoTGlzdC5yZXYgIWV2YWx1YXRvcnMpXG4gIHw+IFRlc3RfcmVzdWx0LmNvbWJpbmVfYWxsXG4gIHw+IFRlc3RfcmVzdWx0LnRvX2V4aXRfY29kZVxuICB8PiBleGl0XG4iLCJvcGVuISBCYXNlXG5cbnR5cGUgdCA9IENhbWwuaW5fY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IENhbWwuTGFyZ2VGaWxlLnNlZWtfaW5cbmxldCBwb3MgPSBDYW1sLkxhcmdlRmlsZS5wb3NfaW5cbmxldCBsZW5ndGggPSBDYW1sLkxhcmdlRmlsZS5pbl9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZGluID0gQ2FtbC5zdGRpblxuXG5sZXQgY3JlYXRlID8oYmluYXJ5ID0gdHJ1ZSkgZmlsZSA9XG4gIGxldCBmbGFncyA9IFsgT3Blbl9yZG9ubHkgXSBpblxuICBsZXQgZmxhZ3MgPSBpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSA6OiBmbGFncyBlbHNlIGZsYWdzIGluXG4gIENhbWwub3Blbl9pbl9nZW4gZmxhZ3MgMG8wMDAgZmlsZVxuOztcblxubGV0IGNsb3NlID0gQ2FtbC5jbG9zZV9pblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5IGZpbGUgfmYgPSBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5IGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG5cbmxldCBtYXlfZW9mIGYgPVxuICB0cnkgU29tZSAoZiAoKSkgd2l0aFxuICB8IEVuZF9vZl9maWxlIC0+IE5vbmVcbjs7XG5cbmxldCBpbnB1dCB0IH5idWYgfnBvcyB+bGVuID0gQ2FtbC5pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgcmVhbGx5X2lucHV0IHQgfmJ1ZiB+cG9zIH5sZW4gPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5yZWFsbHlfaW5wdXQgdCBidWYgcG9zIGxlbilcbmxldCByZWFsbHlfaW5wdXRfZXhuIHQgfmJ1ZiB+cG9zIH5sZW4gPSBDYW1sLnJlYWxseV9pbnB1dCB0IGJ1ZiBwb3MgbGVuXG5sZXQgaW5wdXRfYnl0ZSB0ID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfYnl0ZSB0KVxubGV0IGlucHV0X2NoYXIgdCA9IG1heV9lb2YgKGZ1biAoKSAtPiBDYW1sLmlucHV0X2NoYXIgdClcbmxldCBpbnB1dF9iaW5hcnlfaW50IHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5pbnB1dF9iaW5hcnlfaW50IHQpXG5sZXQgdW5zYWZlX2lucHV0X3ZhbHVlIHQgPSBtYXlfZW9mIChmdW4gKCkgLT4gQ2FtbC5pbnB1dF92YWx1ZSB0KVxubGV0IGlucHV0X2J1ZmZlciB0IGJ1ZiB+bGVuID0gbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuQnVmZmVyLmFkZF9jaGFubmVsIGJ1ZiB0IGxlbilcbmxldCBzZXRfYmluYXJ5X21vZGUgPSBDYW1sLnNldF9iaW5hcnlfbW9kZV9pblxuXG5sZXQgaW5wdXRfYWxsIHQgPVxuICAoKiBXZSB1c2UgNjU1MzYgYmVjYXVzZSB0aGF0IGlzIHRoZSBzaXplIG9mIE9DYW1sJ3MgSU8gYnVmZmVycy4gKilcbiAgbGV0IGNodW5rX3NpemUgPSA2NTUzNiBpblxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSBjaHVua19zaXplIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgQ2FtbC5CdWZmZXIuYWRkX2NoYW5uZWwgYnVmZmVyIHQgY2h1bmtfc2l6ZTtcbiAgICBsb29wICgpXG4gIGluXG4gIHRyeSBsb29wICgpIHdpdGhcbiAgfCBFbmRfb2ZfZmlsZSAtPiBCdWZmZXIuY29udGVudHMgYnVmZmVyXG47O1xuXG5sZXQgdHJpbSB+Zml4X3dpbl9lb2wgbGluZSA9XG4gIGlmIGZpeF93aW5fZW9sXG4gIHRoZW4gKFxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGxpbmUgaW5cbiAgICBpZiBsZW4gPiAwICYmIENoYXIuZXF1YWwgKFN0cmluZy5nZXQgbGluZSAobGVuIC0gMSkpICdcXHInXG4gICAgdGhlbiBTdHJpbmcuc3ViIGxpbmUgfnBvczowIH5sZW46KGxlbiAtIDEpXG4gICAgZWxzZSBsaW5lKVxuICBlbHNlIGxpbmVcbjs7XG5cbmxldCBpbnB1dF9saW5lID8oZml4X3dpbl9lb2wgPSB0cnVlKSB0ID1cbiAgbWF0Y2ggbWF5X2VvZiAoZnVuICgpIC0+IENhbWwuaW5wdXRfbGluZSB0KSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBsaW5lIC0+IFNvbWUgKHRyaW0gfmZpeF93aW5fZW9sIGxpbmUpXG47O1xuXG5sZXQgaW5wdXRfbGluZV9leG4gPyhmaXhfd2luX2VvbCA9IHRydWUpIHQgPVxuICBsZXQgbGluZSA9IENhbWwuaW5wdXRfbGluZSB0IGluXG4gIHRyaW0gfmZpeF93aW5fZW9sIGxpbmVcbjs7XG5cbmxldCBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0IH5mID1cbiAgbGV0IHJlYyBsb29wIGFjID1cbiAgICBtYXRjaCBpbnB1dF9saW5lID9maXhfd2luX2VvbCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gYWNcbiAgICB8IFNvbWUgbGluZSAtPiBsb29wIChmIGFjIGxpbmUpXG4gIGluXG4gIGxvb3AgaW5pdFxuOztcblxubGV0IGlucHV0X2xpbmVzID9maXhfd2luX2VvbCB0ID1cbiAgTGlzdC5yZXYgKGZvbGRfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmluaXQ6W10gfmY6KGZ1biBsaW5lcyBsaW5lIC0+IGxpbmUgOjogbGluZXMpKVxuOztcblxubGV0IGl0ZXJfbGluZXMgP2ZpeF93aW5fZW9sIHQgfmYgPVxuICBmb2xkX2xpbmVzID9maXhfd2luX2VvbCB0IH5pbml0OigpIH5mOihmdW4gKCkgbGluZSAtPiBmIGxpbmUpXG47O1xuXG5sZXQgcmVhZF9saW5lcyA/Zml4X3dpbl9lb2wgZm5hbWUgPSB3aXRoX2ZpbGUgZm5hbWUgfmY6KGlucHV0X2xpbmVzID9maXhfd2luX2VvbClcbmxldCByZWFkX2FsbCBmbmFtZSA9IHdpdGhfZmlsZSBmbmFtZSB+ZjppbnB1dF9hbGxcbiIsIm9wZW4hIEJhc2VcblxudHlwZSB0ID0gQ2FtbC5vdXRfY2hhbm5lbFxuXG5sZXQgZXF1YWwgKHQxIDogdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgc2VlayA9IENhbWwuTGFyZ2VGaWxlLnNlZWtfb3V0XG5sZXQgcG9zID0gQ2FtbC5MYXJnZUZpbGUucG9zX291dFxubGV0IGxlbmd0aCA9IENhbWwuTGFyZ2VGaWxlLm91dF9jaGFubmVsX2xlbmd0aFxubGV0IHN0ZG91dCA9IENhbWwuc3Rkb3V0XG5sZXQgc3RkZXJyID0gQ2FtbC5zdGRlcnJcblxubGV0IHNleHBfb2ZfdCB0ID1cbiAgaWYgcGh5c19lcXVhbCB0IHN0ZGVyclxuICB0aGVuIFNleHAuQXRvbSBcIjxzdGRlcnI+XCJcbiAgZWxzZSBpZiBwaHlzX2VxdWFsIHQgc3Rkb3V0XG4gIHRoZW4gU2V4cC5BdG9tIFwiPHN0ZG91dD5cIlxuICBlbHNlIFNleHAuQXRvbSBcIjxPdXRfY2hhbm5lbC50PlwiXG47O1xuXG50eXBlICdhIHdpdGhfY3JlYXRlX2FyZ3MgPVxuICA/YmluYXJ5OmJvb2wgLT4gP2FwcGVuZDpib29sIC0+ID9mYWlsX2lmX2V4aXN0czpib29sIC0+ID9wZXJtOmludCAtPiAnYVxuXG5sZXQgY3JlYXRlXG4gICAgICA/KGJpbmFyeSA9IHRydWUpXG4gICAgICA/KGFwcGVuZCA9IGZhbHNlKVxuICAgICAgPyhmYWlsX2lmX2V4aXN0cyA9IGZhbHNlKVxuICAgICAgPyhwZXJtID0gMG82NjYpXG4gICAgICBmaWxlXG4gID1cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdCBdIGluXG4gIGxldCBmbGFncyA9IChpZiBiaW5hcnkgdGhlbiBPcGVuX2JpbmFyeSBlbHNlIE9wZW5fdGV4dCkgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gKGlmIGFwcGVuZCB0aGVuIE9wZW5fYXBwZW5kIGVsc2UgT3Blbl90cnVuYykgOjogZmxhZ3MgaW5cbiAgbGV0IGZsYWdzID0gaWYgZmFpbF9pZl9leGlzdHMgdGhlbiBPcGVuX2V4Y2wgOjogZmxhZ3MgZWxzZSBmbGFncyBpblxuICBDYW1sLm9wZW5fb3V0X2dlbiBmbGFncyBwZXJtIGZpbGVcbjs7XG5cbmxldCBzZXRfYmluYXJ5X21vZGUgPSBDYW1sLnNldF9iaW5hcnlfbW9kZV9vdXRcbmxldCBmbHVzaCA9IENhbWwuZmx1c2hcbmxldCBjbG9zZSA9IENhbWwuY2xvc2Vfb3V0XG5sZXQgY2xvc2Vfbm9fZXJyID0gQ2FtbC5jbG9zZV9vdXRfbm9lcnJcbmxldCBvdXRwdXQgdCB+YnVmIH5wb3MgfmxlbiA9IENhbWwub3V0cHV0IHQgYnVmIHBvcyBsZW5cbmxldCBvdXRwdXRfc3Vic3RyaW5nIHQgfmJ1ZiB+cG9zIH5sZW4gPSBDYW1sLm91dHB1dF9zdWJzdHJpbmcgdCBidWYgcG9zIGxlblxubGV0IG91dHB1dF9zdHJpbmcgPSBDYW1sLm91dHB1dF9zdHJpbmdcbmxldCBvdXRwdXRfYnl0ZXMgPSBDYW1sLm91dHB1dF9ieXRlc1xubGV0IG91dHB1dF9jaGFyID0gQ2FtbC5vdXRwdXRfY2hhclxubGV0IG91dHB1dF9ieXRlID0gQ2FtbC5vdXRwdXRfYnl0ZVxubGV0IG91dHB1dF9iaW5hcnlfaW50ID0gQ2FtbC5vdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF9idWZmZXIgPSBDYW1sLkJ1ZmZlci5vdXRwdXRfYnVmZmVyXG5sZXQgb3V0cHV0X3ZhbHVlID0gQ2FtbC5vdXRwdXRfdmFsdWVcbmxldCBuZXdsaW5lIHQgPSBvdXRwdXRfc3RyaW5nIHQgXCJcXG5cIlxuXG5sZXQgb3V0cHV0X2xpbmVzIHQgbGluZXMgPVxuICBMaXN0Lml0ZXIgbGluZXMgfmY6KGZ1biBsaW5lIC0+XG4gICAgb3V0cHV0X3N0cmluZyB0IGxpbmU7XG4gICAgbmV3bGluZSB0KVxuOztcblxubGV0IHByaW50ZiA9IENhbWwuUHJpbnRmLnByaW50ZlxubGV0IGVwcmludGYgPSBDYW1sLlByaW50Zi5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IENhbWwuUHJpbnRmLmZwcmludGZcbmxldCBrZnByaW50ZiA9IENhbWwuUHJpbnRmLmtmcHJpbnRmXG5sZXQgcHJpbnRfc3RyaW5nID0gQ2FtbC5wcmludF9zdHJpbmdcbmxldCBwcmludF9lbmRsaW5lID0gQ2FtbC5wcmludF9lbmRsaW5lXG5sZXQgcHJlcnJfZW5kbGluZSA9IENhbWwucHJlcnJfZW5kbGluZVxuXG5sZXQgcHJpbnRfcyA/bWFjaCBzZXhwID1cbiAgcHJpbnRfZW5kbGluZVxuICAgIChtYXRjaCBtYWNoIHdpdGhcbiAgICAgfCBTb21lICgpIC0+IFNleHAudG9fc3RyaW5nX21hY2ggc2V4cFxuICAgICB8IE5vbmUgLT4gU2V4cC50b19zdHJpbmdfaHVtIHNleHApXG47O1xuXG5sZXQgZXByaW50X3MgP21hY2ggc2V4cCA9XG4gIHByZXJyX2VuZGxpbmVcbiAgICAobWF0Y2ggbWFjaCB3aXRoXG4gICAgIHwgU29tZSAoKSAtPiBTZXhwLnRvX3N0cmluZ19tYWNoIHNleHBcbiAgICAgfCBOb25lIC0+IFNleHAudG9fc3RyaW5nX2h1bSBzZXhwKVxuOztcblxubGV0IHdpdGhfZmlsZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUgfmYgPVxuICBFeG4ucHJvdGVjdHggKGNyZWF0ZSA/YmluYXJ5ID9hcHBlbmQgP2ZhaWxfaWZfZXhpc3RzID9wZXJtIGZpbGUpIH5mIH5maW5hbGx5OmNsb3NlXG47O1xuXG5sZXQgd3JpdGVfbGluZXMgZmlsZSBsaW5lcyA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfbGluZXMgdCBsaW5lcylcbmxldCB3cml0ZV9hbGwgZmlsZSB+ZGF0YSA9IHdpdGhfZmlsZSBmaWxlIH5mOihmdW4gdCAtPiBvdXRwdXRfc3RyaW5nIHQgZGF0YSlcbiIsIm9wZW4hIEJhc2Vcbm1vZHVsZSBHYyA9IFN0ZGxpYi5HY1xuXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5cbmxldCBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgPSBcIlBQWF9NT0RVTEVfVElNRVJcIlxuXG5sZXQgZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKSA9XG4gICgqIGF2b2lkIFN0ZGxpYi5TeXMuZ2V0ZW52X29wdCB0byBwcmVzZXJ2ZSA0LjA0LnggY29tcGF0aWJpbGl0eSAqKVxuICBtYXRjaCBTdGRsaWIuU3lzLmdldGVudiBhbV9yZWNvcmRpbmdfZW52aXJvbm1lbnRfdmFyaWFibGUgd2l0aFxuICB8IHZhbHVlIC0+IFNvbWUgdmFsdWVcbiAgfCBleGNlcHRpb24gXyAtPiBOb25lXG47O1xuXG5sZXQgYW1fcmVjb3JkaW5nX3ZhbHVlID0gZ2V0X2FtX3JlY29yZGluZ19lbnZpcm9ubWVudF92YXJpYWJsZSAoKVxubGV0IGFtX3JlY29yZGluZyA9IE9wdGlvbi5pc19zb21lIGFtX3JlY29yZGluZ192YWx1ZVxuXG5tb2R1bGUgRHVyYXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gSW50NjMudFxuXG4gIGxldCB0b19uYW5vc2Vjb25kcyB0ID0gdFxuICBsZXQgb2ZfbmFub3NlY29uZHMgdCA9IHRcblxuICBtb2R1bGUgdHlwZSBGb3JtYXQgPSBzaWdcbiAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IDogdCBsaXN0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA9IHN0cnVjdFxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBzdHJpbmcgfnN1ZmZpeDpcIm5zXCIgfD4gSW50NjMub2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyBuYW5vcyA9IEludDYzLnRvX3N0cmluZyBuYW5vcyBeIFwibnNcIlxuICAgIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgbGlzdCA9IExpc3QubWFwIGxpc3QgfmY6dG9fc3RyaW5nXG4gIGVuZFxuXG4gIGxldCBmb3JtYXQgPSByZWYgKG1vZHVsZSBEZWZhdWx0X2Zvcm1hdCA6IEZvcm1hdClcblxuICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgbGV0IChtb2R1bGUgRm9ybWF0KSA9ICFmb3JtYXQgaW5cbiAgICBGb3JtYXQub2Zfc3RyaW5nIHN0cmluZ1xuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nID1cbiAgICBsZXQgKG1vZHVsZSBGb3JtYXQpID0gIWZvcm1hdCBpblxuICAgIEZvcm1hdC50b19zdHJpbmdfd2l0aF9zYW1lX3VuaXQgc3RyaW5nXG4gIDs7XG5lbmRcblxubW9kdWxlIEdjX2V2ZW50cyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWlub3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltaW5nX2V2ZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBkZXNjcmlwdGlvbiA6IHN0cmluZ1xuICAgIDsgcnVudGltZSA6IER1cmF0aW9uLnRcbiAgICA7IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50XG4gICAgOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyA6IHQgbGlzdFxuICAgIH1cbmVuZFxuXG5tb2R1bGUgVGltZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gOiBzdHJpbmdcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSA6IER1cmF0aW9uLnRcbiAgICA7IG11dGFibGUgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgOiBHYy5zdGF0XG4gICAgOyBtdXRhYmxlIG5lc3RlZF90aW1lciA6IHQgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyIDogVGltaW5nX2V2ZW50LnQgbGlzdFxuICAgIH1cblxuICBsZXQgY3JlYXRlID9uZXN0ZWRfdGltZXIgKCkgPVxuICAgIHsgY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPSBcIlwiXG4gICAgOyBjdXJyZW50bHlfcnVubmluZ19zdGFydF90aW1lID0gSW50NjMuemVyb1xuICAgIDsgY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgPSBHYy5xdWlja19zdGF0ICgpXG4gICAgOyBuZXN0ZWRfdGltZXJcbiAgICA7IHRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyID0gW11cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0IHQgPVxuICAgIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gPC0gXCJcIjtcbiAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gSW50NjMuemVybztcbiAgICBtYXRjaCB0Lm5lc3RlZF90aW1lciB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5lc3RlZCAtPiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXIgPC0gW11cbiAgOztcblxuICBsZXQgcmVjb3JkX3N0YXJ0IHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0IChTdHJpbmcuaXNfZW1wdHkgdC5jdXJyZW50bHlfcnVubmluZ19kZXNjcmlwdGlvbik7XG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX2Rlc2NyaXB0aW9uIDwtIGRlc2NyaXB0aW9uO1xuICAgICAgdC5jdXJyZW50bHlfcnVubmluZ19nY19zdGF0cyA8LSBHYy5xdWlja19zdGF0ICgpO1xuICAgICAgKCogY2FsbCBbVGltZV9ub3ddIGFzIGxhdGUgYXMgcG9zc2libGUgYmVmb3JlIHJ1bm5pbmcgdGhlIG1vZHVsZSBib2R5ICopXG4gICAgICB0LmN1cnJlbnRseV9ydW5uaW5nX3N0YXJ0X3RpbWUgPC0gVGltZV9ub3cubmFub3NlY29uZHNfc2luY2VfdW5peF9lcG9jaCAoKSlcbiAgOztcblxuICBsZXQgcmVjb3JkX3VudGlsIHQgZGVzY3JpcHRpb24gPVxuICAgIGlmIGFtX3JlY29yZGluZ1xuICAgIHRoZW4gKFxuICAgICAgKCogY29tcHV0ZSBbVGltZV9ub3ddIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgcnVubmluZyB0aGUgbW9kdWxlIGJvZHkgKilcbiAgICAgIGxldCB1bnRpbCA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgaW5cbiAgICAgIGxldCBzdGFydCA9IHQuY3VycmVudGx5X3J1bm5pbmdfc3RhcnRfdGltZSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2FmdGVyID0gR2MucXVpY2tfc3RhdCAoKSBpblxuICAgICAgbGV0IGdjX3N0YXRzX2JlZm9yZSA9IHQuY3VycmVudGx5X3J1bm5pbmdfZ2Nfc3RhdHMgaW5cbiAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAtICkgdW50aWwgc3RhcnQgaW5cbiAgICAgIGFzc2VydCAoU3RyaW5nLmVxdWFsIHQuY3VycmVudGx5X3J1bm5pbmdfZGVzY3JpcHRpb24gZGVzY3JpcHRpb24pO1xuICAgICAgbGV0IGdjX2V2ZW50cyA6IEdjX2V2ZW50cy50ID1cbiAgICAgICAgeyBtaW5vcl9jb2xsZWN0aW9ucyA9XG4gICAgICAgICAgICBnY19zdGF0c19hZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zID1cbiAgICAgICAgICAgIGdjX3N0YXRzX2FmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gZ2Nfc3RhdHNfYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgICAgIDsgY29tcGFjdGlvbnMgPSBnY19zdGF0c19hZnRlci5jb21wYWN0aW9ucyAtIGdjX3N0YXRzX2JlZm9yZS5jb21wYWN0aW9uc1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgbWF0Y2ggdC5uZXN0ZWRfdGltZXIgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgfCBTb21lIG5lc3RlZCAtPiBMaXN0LnJldiBuZXN0ZWQudGltaW5nX2V2ZW50c19pbl9yZXZlcnNlX2Nocm9ub2xvZ2ljYWxfb3JkZXJcbiAgICAgIGluXG4gICAgICBsZXQgdGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQgPVxuICAgICAgICB7IGRlc2NyaXB0aW9uOyBydW50aW1lOyBnY19ldmVudHM7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH1cbiAgICAgIGluXG4gICAgICB0LnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyXG4gICAgICA8LSB0aW1pbmdfZXZlbnQgOjogdC50aW1pbmdfZXZlbnRzX2luX3JldmVyc2VfY2hyb25vbG9naWNhbF9vcmRlcjtcbiAgICAgIHJlc2V0IHQpXG4gIDs7XG5lbmRcblxubGV0IGRlZmluaXRpb25fdGltZXIgPSBUaW1lci5jcmVhdGUgKClcbmxldCBtb2R1bGVfdGltZXIgPSBUaW1lci5jcmVhdGUgfm5lc3RlZF90aW1lcjpkZWZpbml0aW9uX3RpbWVyICgpXG5sZXQgcmVjb3JkX3N0YXJ0IG1vZHVsZV9uYW1lID0gVGltZXIucmVjb3JkX3N0YXJ0IG1vZHVsZV90aW1lciBtb2R1bGVfbmFtZVxubGV0IHJlY29yZF91bnRpbCBtb2R1bGVfbmFtZSA9IFRpbWVyLnJlY29yZF91bnRpbCBtb2R1bGVfdGltZXIgbW9kdWxlX25hbWVcbmxldCByZWNvcmRfZGVmaW5pdGlvbl9zdGFydCBsb2MgPSBUaW1lci5yZWNvcmRfc3RhcnQgZGVmaW5pdGlvbl90aW1lciBsb2NcbmxldCByZWNvcmRfZGVmaW5pdGlvbl91bnRpbCBsb2MgPSBUaW1lci5yZWNvcmRfdW50aWwgZGVmaW5pdGlvbl90aW1lciBsb2NcblxubGV0IGdjX2V2ZW50c19zdWZmaXhfc3RyaW5nXG4gICAgICAoeyBtaW5vcl9jb2xsZWN0aW9uczsgbWFqb3JfY29sbGVjdGlvbnM7IGNvbXBhY3Rpb25zIH0gOiBHY19ldmVudHMudClcbiAgPVxuICBsZXQgdG9fbGlzdCBkZXNjcmlwdGlvbiBjb3VudCA9XG4gICAgaWYgY291bnQgPSAwIHRoZW4gW10gZWxzZSBbIEludC50b19zdHJpbmcgY291bnQgXiBcIiBcIiBeIGRlc2NyaXB0aW9uIF1cbiAgaW5cbiAgbGV0IHN0cmluZ3MgPVxuICAgIHRvX2xpc3QgXCJtaW5vciBjb2xsZWN0aW9uc1wiIG1pbm9yX2NvbGxlY3Rpb25zXG4gICAgQCB0b19saXN0IFwibWFqb3IgY29sbGVjdGlvbnNcIiBtYWpvcl9jb2xsZWN0aW9uc1xuICAgIEAgdG9fbGlzdCBcImNvbXBhY3Rpb25zXCIgY29tcGFjdGlvbnNcbiAgaW5cbiAgaWYgTGlzdC5pc19lbXB0eSBzdHJpbmdzIHRoZW4gXCJcIiBlbHNlIFwiOyBHQzogXCIgXiBTdHJpbmcuY29uY2F0IHN0cmluZ3MgfnNlcDpcIiwgXCJcbjs7XG5cbmxldCB3aXRoX2xlZnRfY29sdW1uX3JpZ2h0X2p1c3RpZmllZCBsaXN0ID1cbiAgbGV0IGxlZnRfY29sdW1uX3dpZHRoID1cbiAgICBMaXN0LmZvbGQgbGlzdCB+aW5pdDowIH5mOihmdW4gd2lkdGggKGxlZnQsIF8pIC0+IEludC5tYXggd2lkdGggKFN0cmluZy5sZW5ndGggbGVmdCkpXG4gIGluXG4gIExpc3QubWFwIGxpc3QgfmY6KGZ1biAobGVmdCwgcmlnaHQpIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCIlKnMgJXNcIiBsZWZ0X2NvbHVtbl93aWR0aCBsZWZ0IHJpZ2h0KVxuOztcblxubGV0IHJlYyB0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbGlzdCB+aW5kZW50ID1cbiAgbGV0IGR1cmF0aW9uX3N0cmluZ3MgPVxuICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+IHRpbWluZ19ldmVudC5ydW50aW1lKVxuICAgIHw+IER1cmF0aW9uLnRvX3N0cmluZ193aXRoX3NhbWVfdW5pdFxuICBpblxuICBsZXQgcHJlZml4ID0gU3RyaW5nLm1ha2UgaW5kZW50ICcgJyBpblxuICBMaXN0Lm1hcDJfZXhuXG4gICAgZHVyYXRpb25fc3RyaW5nc1xuICAgIGxpc3RcbiAgICB+ZjooZnVuIGR1cmF0aW9uX3N0cmluZyB7IHJ1bnRpbWUgPSBfOyBkZXNjcmlwdGlvbjsgZ2NfZXZlbnRzOyBuZXN0ZWRfdGltaW5nX2V2ZW50cyB9XG4gICAgICAgICAtPlxuICAgICAgICAgICAoIGR1cmF0aW9uX3N0cmluZ1xuICAgICAgICAgICAsIGRlc2NyaXB0aW9uXG4gICAgICAgICAgICAgXiBnY19ldmVudHNfc3VmZml4X3N0cmluZyBnY19ldmVudHNcbiAgICAgICAgICAgICBeIFN0cmluZy5jb25jYXRcbiAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICh0aW1pbmdfZXZlbnRzX3RvX3N0cmluZ3MgbmVzdGVkX3RpbWluZ19ldmVudHMgfmluZGVudDooaW5kZW50ICsgNCkpXG4gICAgICAgICAgICAgICAgICAgIH5mOihmdW4gbGluZSAtPiBcIlxcblwiIF4gbGluZSkpICkpXG4gIHw+IHdpdGhfbGVmdF9jb2x1bW5fcmlnaHRfanVzdGlmaWVkXG4gIHw+IExpc3QubWFwIH5mOihmdW4gbGluZSAtPiBwcmVmaXggXiBsaW5lKVxuOztcblxubGV0IGZha2VfdGltaW5nX2V2ZW50cyA9XG4gIGxldCBnY19ldmVudHMgaSA6IEdjX2V2ZW50cy50ID1cbiAgICB7IG1pbm9yX2NvbGxlY3Rpb25zID0gKGlmIGkgJSAyID0gMSB0aGVuIDEgZWxzZSAwKVxuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSAoaWYgaSAlIDQgPSAzIHRoZW4gMSBlbHNlIDApXG4gICAgOyBjb21wYWN0aW9ucyA9IChpZiBpICUgOCA9IDcgdGhlbiAxIGVsc2UgMClcbiAgICB9XG4gIGluXG4gIGxhenlcbiAgICAoTGlzdC5pbml0IDEyIH5mOihmdW4gaSA6IFRpbWluZ19ldmVudC50IC0+XG4gICAgICAgeyBkZXNjcmlwdGlvbiA9IFByaW50Zi5zcHJpbnRmIFwiRmFrZV9fRGVwZW5kZW5jeV8lZFwiIChpICsgMSlcbiAgICAgICA7IHJ1bnRpbWUgPSBJbnQ2My5vZl9pbnQgKDkwMCAqIChpICsgMSkpXG4gICAgICAgOyBnY19ldmVudHMgPSBnY19ldmVudHMgaVxuICAgICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgPVxuICAgICAgICAgICAoaWYgKGkgKyAxKSAlIDQgPSAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIExpc3QuaW5pdCAoaSArIDEpIH5mOihmdW4gaiA6IFRpbWluZ19ldmVudC50IC0+XG4gICAgICAgICAgICAgICAgeyBkZXNjcmlwdGlvbiA9IFByaW50Zi5zcHJpbnRmIFwiTGluZSAlZFwiIChqICsgMSlcbiAgICAgICAgICAgICAgICA7IHJ1bnRpbWUgPSBJbnQ2My5vZl9pbnQgKDkwMCAqIChqICsgMSkpXG4gICAgICAgICAgICAgICAgOyBnY19ldmVudHMgPSBnY19ldmVudHMgalxuICAgICAgICAgICAgICAgIDsgbmVzdGVkX3RpbWluZ19ldmVudHMgPSBbXVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBlbHNlIFtdKVxuICAgICAgIH0pKVxuOztcblxubGV0IHByaW50X3JlY29yZGVkX3RpbWluZ19ldmVudHMgdGltaW5nX2V2ZW50cyA9XG4gIGxldCBub3RpZnlfb2Zfb3ZlcnJpZGluZyAoKSA9XG4gICAgU3RkaW8ucHJpbnRfZW5kbGluZSBcInBweF9tb2R1bGVfdGltZXI6IG92ZXJyaWRpbmcgdGltZSBtZWFzdXJlbWVudHMgZm9yIHRlc3RpbmdcIlxuICBpblxuICBsZXQgdGltaW5nX2V2ZW50cyA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlX2V4biBhbV9yZWNvcmRpbmdfdmFsdWUgd2l0aFxuICAgIHwgXCJGQUtFX01PRFVMRVNcIiAtPlxuICAgICAgbm90aWZ5X29mX292ZXJyaWRpbmcgKCk7XG4gICAgICBmb3JjZSBmYWtlX3RpbWluZ19ldmVudHNcbiAgICB8IHN0cmluZyAtPlxuICAgICAgKG1hdGNoIER1cmF0aW9uLm9mX3N0cmluZyBzdHJpbmcgd2l0aFxuICAgICAgIHwgb3ZlcnJpZGUgLT5cbiAgICAgICAgIG5vdGlmeV9vZl9vdmVycmlkaW5nICgpO1xuICAgICAgICAgTGlzdC5tYXBpIHRpbWluZ19ldmVudHMgfmY6KGZ1biBpbmRleCAodGltaW5nX2V2ZW50IDogVGltaW5nX2V2ZW50LnQpIC0+XG4gICAgICAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAqICkgb3ZlcnJpZGUgKEludDYzLm9mX2ludCAoaW5kZXggKyAxKSkgaW5cbiAgICAgICAgICAgbGV0IG5lc3RlZF90aW1pbmdfZXZlbnRzID1cbiAgICAgICAgICAgICBMaXN0Lm1hcGlcbiAgICAgICAgICAgICAgIHRpbWluZ19ldmVudC5uZXN0ZWRfdGltaW5nX2V2ZW50c1xuICAgICAgICAgICAgICAgfmY6KGZ1biBpbmRleCBuZXN0ZWRfdGltaW5nX2V2ZW50IC0+XG4gICAgICAgICAgICAgICAgIGxldCBydW50aW1lID0gSW50NjMuKCAqICkgb3ZlcnJpZGUgKEludDYzLm9mX2ludCAoaW5kZXggKyAxKSkgaW5cbiAgICAgICAgICAgICAgICAgeyBuZXN0ZWRfdGltaW5nX2V2ZW50IHdpdGggcnVudGltZSB9KVxuICAgICAgICAgICBpblxuICAgICAgICAgICB7IHRpbWluZ19ldmVudCB3aXRoIHJ1bnRpbWU7IG5lc3RlZF90aW1pbmdfZXZlbnRzIH0pXG4gICAgICAgfCBleGNlcHRpb24gXyAtPiB0aW1pbmdfZXZlbnRzKVxuICBpblxuICB0aW1pbmdfZXZlbnRzIHw+IHRpbWluZ19ldmVudHNfdG9fc3RyaW5ncyB+aW5kZW50OjAgfD4gTGlzdC5pdGVyIH5mOlN0ZGlvLnByaW50X2VuZGxpbmVcbjs7XG5cbmxldCAoKSA9XG4gIGlmIGFtX3JlY29yZGluZ1xuICB0aGVuXG4gICAgU3RkbGliLmF0X2V4aXQgKGZ1biAoKSAtPlxuICAgICAgcHJpbnRfcmVjb3JkZWRfdGltaW5nX2V2ZW50c1xuICAgICAgICAoTGlzdC5yZXYgbW9kdWxlX3RpbWVyLnRpbWluZ19ldmVudHNfaW5fcmV2ZXJzZV9jaHJvbm9sb2dpY2FsX29yZGVyKSlcbjs7XG4iLCJ0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBCYXNlLlR5cGVfZXF1YWwudCA9IFQgOiAoJ2EsICdhKSB0XG50eXBlICgnYSwgJ2IpIGVxdWFsID0gKCdhLCAnYikgdFxuXG5sZXQgcmVmbCA9IFRcbmxldCBjb252IDogdHlwZSBhIGIuIChhLCBiKSB0IC0+IGEgLT4gYiA9IGZ1biBUIHggLT4geFxuXG5tb2R1bGUgTGlmdCAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgbGlmdCAodHlwZSBhIGIpIChUIDogKGEsIGIpIHQpIDogKGEgWC50LCBiIFgudCkgdCA9IFRcbmVuZFxuIiwiKCogdGhpcyBsaWIgc2hvdWxkIG5vdCBkZXBlbmQgb24gY29yZSAqKVxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBMaXN0XG5cbiAgbGV0IGNvbXBhcmUgY21wIGEgYiA9XG4gICAgbGV0IHJlYyBsb29wIGEgYiA9XG4gICAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+IDBcbiAgICAgIHwgW10sIF8gLT4gLTFcbiAgICAgIHwgXywgW10gLT4gMVxuICAgICAgfCB4IDo6IHhzLCB5IDo6IHlzIC0+XG4gICAgICAgIGxldCBuID0gY21wIHggeSBpblxuICAgICAgICBpZiBuID0gMCB0aGVuIGxvb3AgeHMgeXMgZWxzZSBuXG4gICAgaW5cbiAgICBsb29wIGEgYlxuICA7O1xuZW5kXG5cbm1vZHVsZSBVaWQgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBuZXh0IDogc3RyaW5nIC0+IHRcbiAgdmFsIGhhc2ggOiB0IC0+IGludFxuICB2YWwgbmFtZSA6IHQgLT4gc3RyaW5nXG4gIHZhbCBzdGF0aWMgOiB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGNvZGUgOiBpbnRcbiAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgbGV0IGNvbXBhcmUgYSBiID0gY29tcGFyZSAoYS5jb2RlIDogaW50KSBiLmNvZGVcbiAgbGV0IGVxdWFsIGEgYiA9IChhLmNvZGUgOiBpbnQpID0gYi5jb2RlXG4gIGxldCB1aWQgPSByZWYgMFxuXG4gIGxldCBuZXh0IG5hbWUgPVxuICAgIGxldCBjb2RlID0gIXVpZCBpblxuICAgIGluY3IgdWlkO1xuICAgIHsgY29kZTsgbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGhhc2ggYSA9IEhhc2h0YmwuaGFzaCBhLmNvZGVcbiAgbGV0IG5hbWUgYSA9IGEubmFtZVxuICBsZXQgc3RhdGljID0gbmV4dCBcInN0YXRpY1wiXG5lbmRcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdWlkIDogVWlkLnRcbiAgICA7IHBhcmFtcyA6IHQgbGlzdFxuICAgIH1cblxuICBsZXQgcmVjIGNvbXBhcmUgazEgazIgPVxuICAgIGlmIGsxID09IGsyXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgY21wID0gVWlkLmNvbXBhcmUgazEudWlkIGsyLnVpZCBpblxuICAgICAgaWYgY21wIDw+IDAgdGhlbiBjbXAgZWxzZSBMaXN0LmNvbXBhcmUgY29tcGFyZSBrMS5wYXJhbXMgazIucGFyYW1zKVxuICA7O1xuXG4gIGxldCBlcXVhbCBhIGIgPSBjb21wYXJlIGEgYiA9IDBcbiAgbGV0IGhhc2ggPSAoSGFzaHRibC5oYXNoIDogdCAtPiBpbnQpXG4gIGxldCBzdGF0aWMgPSB7IHVpZCA9IFVpZC5zdGF0aWM7IHBhcmFtcyA9IFtdIH1cbmVuZFxuXG50eXBlICdhIHQgPSBLZXkudFxudHlwZSAnYSB0eXBlbmFtZSA9ICdhIHRcblxubGV0IGtleSB0ID0gdFxubGV0IHVpZCB0ID0gdC5LZXkudWlkXG5sZXQgbmFtZSB0ID0gVWlkLm5hbWUgdC5LZXkudWlkXG5sZXQgc3RhdGljID0gS2V5LnN0YXRpY1xubGV0IGNyZWF0ZSA/KG5hbWUgPSBcIlR5cGVuYW1lLmNyZWF0ZVwiKSAoKSA9IHsgS2V5LnVpZCA9IFVpZC5uZXh0IG5hbWU7IHBhcmFtcyA9IFtdIH1cblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCogVGhlIGFyZ3VtZW50IGZvciBPYmoubWFnaWMgaGVyZSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIGluIGNvcmUvdHlwZV9lcXVhbCAqKVxuXG4gIGxldCBzYW1lICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPSBLZXkuY29tcGFyZSBubTEgbm0yID0gMFxuXG4gIGxldCBzYW1lX3dpdG5lc3MgKHR5cGUgYSBiKSAobm0xIDogYSB0KSAobm0yIDogYiB0KSA9XG4gICAgaWYgS2V5LmNvbXBhcmUgbm0xIG5tMiA9IDBcbiAgICB0aGVuIFNvbWUgKE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgOiAoYSwgYikgVHlwZV9lcXVhbC50KVxuICAgIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCBzYW1lX3dpdG5lc3NfZXhuICh0eXBlIGEgYikgKG5tMSA6IGEgdCkgKG5tMiA6IGIgdCkgPVxuICAgIGlmIEtleS5jb21wYXJlIG5tMSBubTIgPSAwXG4gICAgdGhlbiAoT2JqLm1hZ2ljIFR5cGVfZXF1YWwucmVmbCA6IChhLCBiKSBUeXBlX2VxdWFsLnQpXG4gICAgZWxzZSBmYWlsd2l0aCBcIlR5cGVuYW1lLnNhbWVfd2l0bmVzc19leG5cIlxuICA7O1xuZW5kXG5cbm1vZHVsZSB0eXBlIFMwID0gc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMxID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2EgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMyID0gc2lnXG4gIHR5cGUgKCdhLCAnYikgdFxuXG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdHlwZW5hbWUgLT4gJ2IgdHlwZW5hbWUgLT4gKCdhLCAnYikgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMzID0gc2lnXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHR5cGVuYW1lIC0+ICdiIHR5cGVuYW1lIC0+ICdjIHR5cGVuYW1lIC0+ICgnYSwgJ2IsICdjKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzQgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICB2YWwgdHlwZW5hbWVfb2ZfdFxuICAgIDogICdhIHR5cGVuYW1lXG4gICAgLT4gJ2IgdHlwZW5hbWVcbiAgICAtPiAnYyB0eXBlbmFtZVxuICAgIC0+ICdkIHR5cGVuYW1lXG4gICAgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IHR5cGVuYW1lXG5lbmRcblxubW9kdWxlIHR5cGUgUzUgPSBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgdmFsIHR5cGVuYW1lX29mX3RcbiAgICA6ICAnYSB0eXBlbmFtZVxuICAgIC0+ICdiIHR5cGVuYW1lXG4gICAgLT4gJ2MgdHlwZW5hbWVcbiAgICAtPiAnZCB0eXBlbmFtZVxuICAgIC0+ICdlIHR5cGVuYW1lXG4gICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCB0eXBlbmFtZVxuZW5kXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFtdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYSBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiIF0gfVxuZW5kXG5cbm1vZHVsZSBNYWtlMyAoWCA6IE5hbWVkX2ludGYuUzMpID0gc3RydWN0XG4gIGxldCB1aWQgPSBVaWQubmV4dCBYLm5hbWVcbiAgbGV0IHR5cGVuYW1lX29mX3QgYSBiIGMgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYyBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTQgKFggOiBOYW1lZF9pbnRmLlM0KSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjIGQgPSB7IEtleS51aWQ7IHBhcmFtcyA9IFsgYTsgYjsgYzsgZCBdIH1cbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBsZXQgdWlkID0gVWlkLm5leHQgWC5uYW1lXG4gIGxldCB0eXBlbmFtZV9vZl90IGEgYiBjIGQgZSA9IHsgS2V5LnVpZDsgcGFyYW1zID0gWyBhOyBiOyBjOyBkOyBlIF0gfVxuZW5kXG5cbm1vZHVsZSBLZXlfdGFibGUgPSBIYXNodGJsLk1ha2UgKEtleSlcblxubW9kdWxlIFRhYmxlIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIHR5cGUgZGF0YSA9IERhdGEgOiAnYSB0ICogJ2EgWC50IC0+IGRhdGFcbiAgdHlwZSB0ID0gZGF0YSBLZXlfdGFibGUudFxuXG4gIGxldCBjcmVhdGUgaW50ID0gS2V5X3RhYmxlLmNyZWF0ZSBpbnRcbiAgbGV0IG1lbSB0YWJsZSBuYW1lID0gS2V5X3RhYmxlLm1lbSB0YWJsZSAoa2V5IG5hbWUpXG4gIGxldCBzZXQgdGFibGUgbmFtZSBkYXRhID0gS2V5X3RhYmxlLnJlcGxhY2UgdGFibGUgKGtleSBuYW1lKSAoRGF0YSAobmFtZSwgZGF0YSkpXG5cbiAgbGV0IGZpbmQgKHR5cGUgYSkgdGFibGUgKG5hbWUgOiBhIHR5cGVuYW1lKSA9XG4gICAgbGV0IGRhdGEgPVxuICAgICAgdHJ5IFNvbWUgKEtleV90YWJsZS5maW5kIHRhYmxlIChrZXkgbmFtZSkpIHdpdGhcbiAgICAgIHwgQmFzZS5Ob3RfZm91bmRfcyBfIHwgQ2FtbC5Ob3RfZm91bmQgLT4gTm9uZVxuICAgIGluXG4gICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKERhdGEgKG5hbWUnLCBkYXRhKSkgLT5cbiAgICAgIChmdW4gKHR5cGUgYikgKG5hbWUnIDogYiB0eXBlbmFtZSkgKGRhdGEgOiBiIFgudCkgLT5cbiAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPSAoc2FtZV93aXRuZXNzX2V4biBuYW1lJyBuYW1lIDogKGIsIGEpIFR5cGVfZXF1YWwudCkgaW5cbiAgICAgICAgIFNvbWUgKGRhdGEgOiBhIFgudCkpXG4gICAgICAgIG5hbWUnXG4gICAgICAgIGRhdGFcbiAgOztcbmVuZFxuXG5sZXQgZmFpbCB1aWRfYSB1aWRfYiA9XG4gIGxldCBtc2cgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4biAlUyAlU1wiIChVaWQubmFtZSB1aWRfYSkgKFVpZC5uYW1lIHVpZF9iKVxuICBpblxuICBmYWlsd2l0aCBtc2dcbjs7XG5cbm1vZHVsZSBTYW1lX3dpdG5lc3NfZXhuXzEgKEEgOiBTMSkgKEIgOiBTMSkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0geyBlcSA6ICdhLiAoJ2EgQS50LCAnYSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8yIChBIDogUzIpIChCIDogUzIpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYi4gKCgnYSwgJ2IpIEEudCwgKCdhLCAnYikgQi50KSBUeXBlX2VxdWFsLnQgfVxuXG4gIGxldCB3aXRuZXNzID1cbiAgICBsZXQgdWlkX2EgPSB1aWQgKEEudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl8zIChBIDogUzMpIChCIDogUzMpID0gc3RydWN0XG4gIHR5cGUgdCA9IHsgZXEgOiAnYSAnYiAnYy4gKCgnYSwgJ2IsICdjKSBBLnQsICgnYSwgJ2IsICdjKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGxldCB1aWRfYiA9IHVpZCAoQi50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcblxubW9kdWxlIFNhbWVfd2l0bmVzc19leG5fNCAoQSA6IFM0KSAoQiA6IFM0KSA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IGVxIDogJ2EgJ2IgJ2MgJ2QuICgoJ2EsICdiLCAnYywgJ2QpIEEudCwgKCdhLCAnYiwgJ2MsICdkKSBCLnQpIFR5cGVfZXF1YWwudCB9XG5cbiAgbGV0IHdpdG5lc3MgPVxuICAgIGxldCB1aWRfYSA9IHVpZCAoQS50eXBlbmFtZV9vZl90IHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMpIGluXG4gICAgaWYgVWlkLmVxdWFsIHVpZF9hIHVpZF9iIHRoZW4geyBlcSA9IE9iai5tYWdpYyBUeXBlX2VxdWFsLnJlZmwgfSBlbHNlIGZhaWwgdWlkX2EgdWlkX2JcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2FtZV93aXRuZXNzX2V4bl81IChBIDogUzUpIChCIDogUzUpID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBlcSA6XG4gICAgICAgICdhICdiICdjICdkICdlLiAoKCdhLCAnYiwgJ2MsICdkLCAnZSkgQS50LCAoJ2EsICdiLCAnYywgJ2QsICdlKSBCLnQpIFR5cGVfZXF1YWwudFxuICAgIH1cblxuICBsZXQgd2l0bmVzcyA9XG4gICAgbGV0IHVpZF9hID0gdWlkIChBLnR5cGVuYW1lX29mX3Qgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljIHN0YXRpYykgaW5cbiAgICBsZXQgdWlkX2IgPSB1aWQgKEIudHlwZW5hbWVfb2ZfdCBzdGF0aWMgc3RhdGljIHN0YXRpYyBzdGF0aWMgc3RhdGljKSBpblxuICAgIGlmIFVpZC5lcXVhbCB1aWRfYSB1aWRfYiB0aGVuIHsgZXEgPSBPYmoubWFnaWMgVHlwZV9lcXVhbC5yZWZsIH0gZWxzZSBmYWlsIHVpZF9hIHVpZF9iXG4gIDs7XG5lbmRcbiIsIigqKlxuICAgUGxhY2UgaG9sZGVyIGZvciBjb21tb24gVmFyaWFudHMgYW5kIEZpZWxkcyBpbnRlcmZhY2VcbiopXG5cbm1vZHVsZSBNIChYIDogc2lnXG4gICAgKCoqXG4gICAgICAgVGhpcyBmdW5jdG9yIGlzIGVzc2VudGlhbGx5IHRoZXJlIGJlY2F1c2Ugd2UgdXNlIHRoaXMgc2FtZSBpbnRlcmZhY2UgaW4gZGlmZmVyZW50XG4gICAgICAgY29udGV4dHMsIHdpdGggZGlmZmVyZW50IHR5cGVzIGZvciBbJ2EgdF0uXG5cbiAgICAgICAxKSBPbmUgdXNlIGNhc2UgZm9yIGl0IGlzIHdoZXJlIFsnYSBYLnQgPSAnYSBUeXBlcmVwLnRdLiAgVGhlc2UgaW50ZXJmYWNlcyBhcmUgdGhlblxuICAgICAgIHBhcnQgb2YgdGhlIHR5cGUgd2l0bmVzcyBidWlsdCBmb3IgYSB0eXBlIGNvbnRhaW5pbmcgYSByZWNvcmQgb3IgYSB2YXJpYW50IGluIGl0c1xuICAgICAgIHN0cnVjdHVyZS4gW3RyYXZlcnNlXSB3aWxsIGdpdmUgYSB3YXkgb2YgYWNjZXNzaW5nIHRoZSB0eXBlIHJlcHJlc2VudGF0aW9uIGZvciB0aGVcbiAgICAgICBhcmd1bWVudHMgb2YgYSB2YXJpYW50IG9yIHJlY29yZCB0eXBlLlxuXG4gICAgICAgMikgQW5vdGhlciB1c2UgY2FzZSBpcyBmb3IgYnVpbGRpbmcgXCJzdGFnZWQgZ2VuZXJpYyBjb21wdXRhdGlvbnNcIi4gSW4gdGhhdCBjYXNlLCB0aGVcbiAgICAgICB0eXBlIFsnYSBYLnRdIGlzIHRoZSB0eXBlIG9mIHRoZSBjb21wdXRhdGlvbiB0aGF0IGlzIGJlaW5nIGJ1aWx0LiAgW3RyYXZlcnNlXVxuICAgICAgIHJldHVybnMgdGhlIGNvbXB1dGF0aW9uIGJ1aWx0IGZvciB0aGUgYXJndW1lbnQuIFRoZSBpbnRlcmZhY2Ugbm8gbG9uZ2VyIGV4cG9ydHNcbiAgICAgICB0aGUgdHlwZXJlcCBvZiB0aGUgYXJndW1lbnRzIGluIGhvcGVzIG9mIGVuZm9yY2luZyB0aGF0IG5vIHR5cGVyZXAgdHJhdmVyc2FsXG4gICAgICAgaGFwcGVucyBhdCBydW50aW1lIGlmIHRoZSBjb21wdXRhdGlvbiBoYXBwZW4gdG8gYmUgYSBmdW5jdGlvbi5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICAoKiBUaGUgZnVuY3Rpb25zIHByZWZpeGVkIGJ5IFtpbnRlcm5hbF0gYXMgd2VsbCBhcyB0aGUgbW9kdWxlIHN1ZmZpeGVkIGJ5IFtfaW50ZXJuYWxdXG4gICAgIGFyZSB1c2VkIGJ5IHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgY2FtbHA0IGV4dGVuc2lvbiBbd2l0aCB0eXBlcmVwXSBhcyB3ZWxsIGFzIHNvbWVcbiAgICAgaW50ZXJuYWxzIG9mIHRoZSB0eXBlcmVwIGxpYnJhcnkuIERvIG5vdCBjb25zaWRlciB1c2luZyB0aGVzZSBzb21ld2hlcmUgZWxzZS4gIFRoZXlcbiAgICAgc2hvdWxkIGlkZWFsbHkgbm90IGJlIGV4cG9ydGVkIG91dHNpZGUgdGhlIHR5cGVyZXAgbGlicmFyeSwgYnV0IHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgICBuZWVkcyBzb21laG93IHRvIGFjY2VzcyB0aGlzLCBldmVuIG91dHNpZGUuICopXG5cbiAgbW9kdWxlIFRhZ19pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgY3JlYXRlID1cbiAgICAgIHwgQXJncyBvZiAoJ2FyZ3MgLT4gJ3ZhcmlhbnQpXG4gICAgICB8IENvbnN0IG9mICd2YXJpYW50XG5cbiAgICB0eXBlICgndmFyaWFudCwgJ2FyZ3MpIHQgPVxuICAgICAgeyBsYWJlbCA6IHN0cmluZ1xuICAgICAgOyByZXAgOiAnYXJncyBYLnRcbiAgICAgIDsgYXJpdHkgOiBpbnRcbiAgICAgIDsgYXJnc19sYWJlbHMgOiBzdHJpbmcgbGlzdFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyBvY2FtbF9yZXByIDogaW50XG4gICAgICA7IHR5aWQgOiAnYXJncyBUeXBlbmFtZS50XG4gICAgICA7IGNyZWF0ZSA6ICgndmFyaWFudCwgJ2FyZ3MpIGNyZWF0ZVxuICAgICAgfVxuICBlbmRcblxuICAoKipcbiAgICAgV2l0bmVzcyBvZiBhIHRhZywgdGhhdCBpcyBhbiBpdGVtIGluIGEgdmFyaWFudCB0eXBlLCBhbHNvIGNhbGxlZCBhbiBcImFwcGxpZWRcbiAgICAgdmFyaWFudCBDb25zdHJ1Y3RvclwiXG5cbiAgICAgVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgdmFyaWFudCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSB0YWdcbiAgICAgcGFyYW1ldGVycy4gIEV4YW1wbGU6XG5cbiAgICAge1tcbiAgICAgICB0eXBlIHQgPVxuICAgICAgICAgfCBBIG9mIChpbnQgKiBzdHJpbmcpXG4gICAgICAgICB8IEIgb2Ygc3RyaW5nXG4gICAgICAgICB8IEMgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgXX1cblxuICAgICB0aGlzIHR5cGUgaGFzIHRocmVlIGNvbnN0cnVjdG9ycy4gRm9yIGVhY2ggb2YgdGhlbSB3ZSdsbCBoYXZlIGEgY29ycmVzcG9uZGluZ1xuICAgICBbVGFnLnRdOlxuXG4gICAgIHtbXG4gICAgICAgdmFsIHRhZ19BIDogKHQsIChpbnQgKiBzdHJpbmcpKSBUYWcudFxuICAgICAgIHZhbCB0YWdfQiA6ICh0LCBzdHJpbmcgICAgICAgICkgVGFnLnRcbiAgICAgICB2YWwgdGFnX0MgOiAodCwgKGludCAqIHN0cmluZykpIFRhZy50XG4gICAgIF19XG5cbiAgICAgTm90ZSwgaW5saW5lIHJlY29yZCBpbiB2YXJpYW50IGFyZSB0eXBlZCBhcyBpZiB0aGVpciBkZWZpbml0aW9uIHdhcyB1c2luZyB0dXBsZXMsXG4gICAgIHdpdGhvdXQgdGhlIHBhcmVudGhlc2lzLiAgVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlaXIgcnVudGltZSByZXByZXNlbnRhdGlvbi4gIEJ1dFxuICAgICB0aGUgZGlzdGluY3Rpb24gaXMgY2FycmllZCBhbmQgYXZhaWxhYmxlIGZvciBpbnRyb3NwZWN0aW9uIGFzIHBhcnQgb2YgdGhlIFtUYWcudF0uXG4gICAgIFNlZSBbYXJnc19sYWJlbHNdLiAqKVxuICBtb2R1bGUgVGFnIDogc2lnXG4gICAgdHlwZSAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGUgPVxuICAgICAgfCBBcmdzIG9mICgnYXJncyAtPiAndmFyaWFudClcbiAgICAgIHwgQ29uc3Qgb2YgJ3ZhcmlhbnRcblxuICAgIHR5cGUgKCd2YXJpYW50LCAnYXJncykgdFxuXG4gICAgKCoqXG4gICAgICAgVGhlIG5hbWUgb2YgdGhlIGNvbnN0cnVjdG9yIGFzIGl0IGlzIGdpdmVuIGluIHRoZSBjb25jcmV0ZSBzeW50YXhcbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHt2XG4gICAgICAgICBDb25zdHJ1Y3RvciAgICAgICAgfCBsYWJlbFxuICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgfCBBIG9mIGludCAgICAgICAgIHwgIFwiQVwiXG4gICAgICAgICB8IGBhIG9mIGludCAgICAgICAgfCAgXCJhXCJcbiAgICAgICAgIHwgYEEgb2YgaW50ICAgICAgICB8ICBcIkFcIlxuICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9IHwgIFwiQVwiXG4gICAgICAgdn1cblxuICAgICAgIGZvciBzdGFuZGFyZCB2YXJpYW50LCB0aGUgb2NhbWwgc3ludGF4IGltcGxpZXMgdGhhdCB0aGlzIGxhYmVsIHdpbGwgYWx3YXlzIHN0YXJ0c1xuICAgICAgIHdpdGggYSBjYXBpdGFsIGxldHRlci4gRm9yIHBvbHltb3JwaGljIHZhcmlhbnRzLCB0aGlzIG1pZ2h0IGJlIGEgbG93ZXJjYXNlIGNoYXIuXG4gICAgICAgRm9yIHBvbHltb3JwaGljIHZhcmlhbnQsIHRoaXMgbGFiZWwgZG9lcyBub3QgaW5jbHVkZSB0aGUgW2BdIGNoYXJhY3Rlci5cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIHNpemUgb2YgdGhlIG9jYW1sIGhlYXAgYmxvY2sgY29udGFpbmluZyB0aGUgYXJndW1lbnRzXG5cbiAgICAgICBFeGFtcGxlczpcbiAgICAgICB7dlxuICAgICAgICAgIDA6IHwgQSB8ICdBXG4gICAgICAgICAgMTogfCBBIG9mIGludCB8IGBBIG9mIGludCB8IEEgb2YgKGludCAqIGludCkgfCBgQSBvZiAoaW50ICogaW50KVxuICAgICAgICAgICAgIHwgYEEgb2YgaW50ICogaW50XG4gICAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludH1cbiAgICAgICAgICAyOiB8IEEgb2YgaW50ICogZmxvYXRcbiAgICAgICAgICAgICB8IEEgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICAgICBldGMuXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcml0eSA6IChfLCBfKSB0IC0+IGludFxuXG4gICAgKCoqIFRoZSBsYWJlbCBvZiB0aGUgZmllbGRzIGZvciBpbmxpbmUgcmVjb3Jkcy4gIEZvciBvdGhlciBmb3JtcyBvZiB0YWdzLCB0aGlzIGlzIHRoZVxuICAgICAgICBlbXB0eSBsaXN0LiAgV2hlbiB0aGlzIHJldHVybnMgYSBub24gZW1wdHkgbGlzdCwgdGhlIGxlbmd0aCBvZiB0aGUgcmV0dXJuZWQgbGlzdFxuICAgICAgICBpcyBlcXVhbCB0byB0aGUgYXJpdHkuXG5cbiAgICAgICAgRXhhbXBsZTpcblxuICAgICAgICB7dlxuICAgICAgICAgKDEpIEVtcHR5OlxuXG4gICAgICAgICAgIHwgQSB8ICdBXG4gICAgICAgICAgIHwgQSBvZiBpbnQgfCBgQSBvZiBpbnQgfCBBIG9mIChpbnQgKiBpbnQpIHwgYEEgb2YgKGludCAqIGludClcbiAgICAgICAgICAgfCBgQSBvZiBpbnQgKiBpbnRcbiAgICAgICAgICAgfCBBIG9mIGludCAqIGZsb2F0XG5cbiAgICAgICAgICgyKSBOb24gZW1wdHk6XG5cbiAgICAgICAgICAgfCBBIG9mIHsgeCA6IGludCB9ICAgICAgICAgICAgICAgLT4gWyBcInhcIiBdXG4gICAgICAgICAgIHwgQSBvZiB7IHggOiBpbnQ7IHkgOiBzdHJpbmcgfSAgIC0+IFsgXCJ4XCIgOyBcInlcIiBdXG4gICAgICAgdn1cbiAgICAqKVxuICAgIHZhbCBhcmdzX2xhYmVscyA6IChfLCBfKSB0IC0+IHN0cmluZyBsaXN0XG5cbiAgICAoKipcbiAgICAgICBUaGUgaW5kZXggb2YgdGhlIGNvbnN0cnVjdG9yIGluIHRoZSBsaXN0IG9mIGFsbCB0aGUgdmFyaWFudCB0eXBlJ3MgY29uc3RydWN0b3JzXG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgIHwgQSBvZiBpbnQgICAgICAgICAgKCogMCAqKVxuICAgICAgICAgICB8IEIgICAgICAgICAgICAgICAgICgqIDEgKilcbiAgICAgICAgICAgfCBDIG9mIGludCAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgRCBvZiBjaGFyICAgICAgICAgKCogMyAqKVxuICAgICAgICAgICB8IEUgb2YgeyB4IDogaW50IH0gICgqIDQgKilcbiAgICAgICBdfVxuICAgICopXG4gICAgdmFsIGluZGV4IDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBvY2FtbF9yZXByIGlzIHJlbGF0ZWQgdG8gdGhlIHJ1bnRpbWUgb2Ygb2JqZWN0cy4gdGhpcyBpcyBlc3NlbnRpYWxseSBhIHdheSBvZlxuICAgICAgIGdpdmluZyBvbmUgdGhlIGFiaWxpdHkgdG8gcmVidWlsZCBkeW5hbWljYWxseSBhbiBbT2JqLnRdIHJlcHJlc2VudGluZyBhIHRhZy5cblxuICAgICAgIFBvbHltb3JwaGljIHZhcmlhbnRzOlxuICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSBoYXNoIG9mIHRoZSBsYWJlbCwgYXMgZG9uZSBieSB0aGUgY29tcGlsZXIuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICBwcmludF9pbnQgKE9iai5tYWdpYyBgYmFyKSAgKCogNDg5NTE4NyAqKVxuICAgICAgIHByaW50X2ludCAoT2JqLm1hZ2ljICdmb28pICAoKiA1MDk3MjIyICopXG5cbiAgICAgICBTdGFuZGFyZHMgdmFyaWFudHM6XG4gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgICAgW29jYW1sX3JlcHJdIGlzIHRoZSB0YWcgY29ycmVzcG9uZGluZyB0byB0aGUgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlLlxuICAgICAgIHRoZSB3YXkgaXQgd29ya3MgaW4gdGhlIG9jYW1sIHJ1bnRpbWUgaXMgYnkgcGFydGl0aW9uaW5nIHRoZSBjb25zdHJ1Y3RvcnMgcmVnYXJkaW5nXG4gICAgICAgaWYgdGhleSBoYXZlIHNvbWUgYXJndW1lbnRzIG9yIG5vdCwgcHJlc2VydmluZyB0aGUgb3JkZXIsIHRoZW4gYXNzaWduIGluY3JlYXNpbmdcbiAgICAgICBpbmRleCB3aXRoaW5nIGVhY2ggcGFydGl0aW9uLlxuICAgICAgIEV4YW1wbGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0gICAgICAgICAgICAgICAgICAoKiBubyBhcmcgKikgICgqIGFyZ3MgKilcbiAgICAgICAgICAgfCBBICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQiBvZiBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAwICopXG4gICAgICAgICAgIHwgQyAgICAgICAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEQgb2YgKGZsb2F0ICogc3RyaW5nKSAgICAgICAgICAgICAgICAgKCogMSAqKVxuICAgICAgICAgICB8IEUgICAgICAgICAgICAgICAgICAgICAgICgqIDIgKilcbiAgICAgICAgICAgfCBGICAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgICAgIHwgRyBvZiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAyICopXG4gICAgICAgICAgIHwgSCBvZiB7IHggOiBpbnQgfSAgICAgICAgICAgICAgICAgICAgICAoKiAzICopXG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBvY2FtbF9yZXByIDogKF8sIF8pIHQgLT4gaW50XG5cbiAgICAoKipcbiAgICAgICBHaXZlIGJhY2sgYSB3YXkgb2YgY29uc3RydWN0aW5nIGEgdmFsdWUgb2YgdGhhdCBjb25zdHJ1Y3RvciBmcm9tIGl0cyBhcmd1bWVudHMuXG5cbiAgICAgICBFeGFtcGxlczpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICB8IEEgb2YgKGludCAqIHN0cmluZylcbiAgICAgICAgICAgfCBCIG9mIGludCAqIGZsb2F0XG4gICAgICAgICAgIHwgQ1xuICAgICAgICAgICB8IEQgb2YgeyB4IDogaW50OyB5IDogc3RyaW5nIH1cbiAgICAgICBdfVxuXG4gICAgICAgW2NyZWF0ZV0gd2lsbCByZXR1cm4gc29tZXRoaW5nIGVxdWl2YWxlbnQgdG86XG4gICAgICAgdGFnX0EgOiBbQXJncyAoZnVuIChkIDogKGludCAqIHN0cmluZykgLT4gQSBkKV1cbiAgICAgICB0YWdfQiA6IFtBcmdzIChmdW4gKGksIGYpIC0+IEIgKGksIGYpKV1cbiAgICAgICB0YWdfQyA6IFtDb25zdCBDXVxuICAgICAgIHRhZ19EIDogW0FyZ3MgKGZ1biAoeCwgeSkgLT4gRCB7IHg7IHkgfSldXG4gICAgKilcbiAgICB2YWwgY3JlYXRlIDogKCd2YXJpYW50LCAnYXJncykgdCAtPiAoJ3ZhcmlhbnQsICdhcmdzKSBjcmVhdGVcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiBtaWdodCBiZSB1c2VkIHRvIHBlcmZvcm0gc29tZSBsb29rdXAgYmFzZWRcbiAgICAgICAgb24gaXQgd2hpbGUgYnVpbGRpbmcgYSBjb21wdXRhdGlvbiBmb3IgZXhhbXBsZSAqKVxuICAgIHZhbCB0eWlkIDogKF8sICdhcmdzKSB0IC0+ICdhcmdzIFR5cGVuYW1lLnRcblxuICAgICgqKiBnZXQgdGhlIHJlcHJlc2VudGF0aW9uL2NvbXB1dGF0aW9uIG9mIHRoZSBhcmd1bWVudHMgKilcbiAgICB2YWwgdHJhdmVyc2UgOiAoXywgJ2FyZ3MpIHQgLT4gJ2FyZ3MgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBUYWdfaW50ZXJuYWwudCAtPiAoJ2EsICdiKSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVGFnX2ludGVybmFsXG5cbiAgICBsZXQgbGFiZWwgdCA9IHQubGFiZWxcbiAgICBsZXQgYXJpdHkgdCA9IHQuYXJpdHlcbiAgICBsZXQgYXJnc19sYWJlbHMgdCA9IHQuYXJnc19sYWJlbHNcbiAgICBsZXQgaW5kZXggdCA9IHQuaW5kZXhcbiAgICBsZXQgb2NhbWxfcmVwciB0ID0gdC5vY2FtbF9yZXByXG4gICAgbGV0IGNyZWF0ZSB0ID0gdC5jcmVhdGVcbiAgICBsZXQgdHlpZCB0ID0gdC50eWlkXG4gICAgbGV0IHRyYXZlcnNlIHQgPSB0LnJlcFxuICAgIGxldCBpbnRlcm5hbF91c2Vfb25seSB0ID0gdFxuICBlbmRcblxuICBtb2R1bGUgVmFyaWFudF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyB0YWcgPSBUYWcgOiAoJ3ZhcmlhbnQsICdhKSBUYWcudCAtPiAndmFyaWFudCB0YWdcbiAgICB0eXBlIF8gdmFsdWUgPSBWYWx1ZSA6ICgndmFyaWFudCwgJ2EpIFRhZy50ICogJ2EgLT4gJ3ZhcmlhbnQgdmFsdWVcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyB0YWdzIDogJ2EgdGFnIGFycmF5XG4gICAgICA7IHBvbHltb3JwaGljIDogYm9vbFxuICAgICAgOyB2YWx1ZSA6ICdhIC0+ICdhIHZhbHVlXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBWYXJpYW50IDogc2lnXG4gICAgKCoqXG4gICAgICAgQW4gZXhpc3RlbnRpYWwgdHlwZSB1c2VkIHRvIGdhdGhlciBhbGwgdGhlIHRhZ3MgY29uc3RpdHVpbmcgYSB2YXJpYW50XG4gICAgICAgdHlwZS4gdGhlIFsndmFyaWFudF0gcGFyYW1ldGVyIGlzIHRoZSB2YXJpYW50IHR5cGUsIGl0IGlzIHRoZSBzYW1lIGZvciBhbGwgdGhlXG4gICAgICAgY29uc3RydWN0b3JzIG9mIHRoYXQgdmFyaWFudCB0eXBlLiBUaGUgdHlwZSBvZiB0aGUgcGFyYW1ldGVycyBtaWdodCBiZSBkaWZmZXJlbnRcbiAgICAgICBmb3IgZWFjaCBjb25zdHJ1Y3RvciBhbmQgaXMgdGh1cyBleGlzdGVudGlhbFxuICAgICopXG4gICAgdHlwZSBfIHRhZyA9IFRhZyA6ICgndmFyaWFudCwgJ2FyZ3MpIFRhZy50IC0+ICd2YXJpYW50IHRhZ1xuXG4gICAgKCoqXG4gICAgICAgQSBzaW1pbGFyIGV4aXN0ZW50aWFsIGNvbnN0cnVjdG9yIHRvIFtfIHRhZ10gYnV0IHRoaXMgb25lIGhvbGRzIGEgdmFsdWUgd2hvc2UgdHlwZVxuICAgICAgIGlzIHRoZSBhcmd1bWVudHMgb2YgdGhlIHRhZyBjb25zdHJ1Y3Rvci4gIEEgdmFsdWUgb2YgdHlwZSBbJ2EgdmFsdWVdIGlzIGEgcGFpciBvZlxuICAgICAgICgxKSBhIHZhbHVlIG9mIHZhcmlhbnQgdHlwZSBbJ2FdIGFsb25nIHdpdGggKDIpIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAgICAgY29uc3RydWN0b3Igd2l0aGluIHRoZSB0eXBlIFsnYV1cbiAgICAqKVxuICAgIHR5cGUgXyB2YWx1ZSA9IFZhbHVlIDogKCd2YXJpYW50LCAnYXJncykgVGFnLnQgKiAnYXJncyAtPiAndmFyaWFudCB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgV2l0bmVzcyBvZiBhIHZhcmlhbnQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgdmFyaWFudCB0eXBlIHdpdG5lc3NlZC5cbiAgICAqKVxuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHR5cGVuYW1lX29mX3QgOiAnYSB0IC0+ICdhIFR5cGVuYW1lLnRcblxuICAgICgqKlxuICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB0YWdzIG9mIHRoaXMgdmFyaWFudCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIHRhZyBvZiB0aGlzIHZhcmlhbnQgdHlwZSwgaW5kZXhlZCBmcm9tIDAuXG4gICAgKilcbiAgICB2YWwgdGFnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgdGFnXG5cbiAgICAoKipcbiAgICAgICBEaXN0aW5ndWlzaCBwb2x5bW9ycGhpYyB2YXJpYW50cyBhbmQgc3RhbmRhcmQgdmFyaWFudHMuIFR5cGljYWxseSwgcG9seW1vcnBoaWNcbiAgICAgICB2YXJpYW50cyB0YWdzIHN0YXJ0cyB3aXRoIHRoZSBbYF0gY2hhcmFjdGVyLlxuICAgICAgIEV4YW1wbGVcbiAgICAgICBwb2x5bW9ycGhpYyB2YXJpYW50OiB0eXBlIHQgPSBbIGBBIHwgYEIgXVxuICAgICAgIHN0YW5kYXJkIHZhcmlhbnQ6ICAgIHR5cGUgdCA9IEEgfCBCXG4gICAgKilcbiAgICB2YWwgaXNfcG9seW1vcnBoaWMgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgUGF0dGVybiBtYXRjaGluZyBvbiBhIHZhbHVlIG9mIHRoaXMgdmFyaWFudCB0eXBlLlxuICAgICopXG4gICAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYSAtPiAnYSB2YWx1ZVxuXG4gICAgKCoqXG4gICAgICAgZm9sZGluZyBhbG9uZyB0aGUgdGFncyBvZiB0aGUgdmFyaWFudCB0eXBlXG4gICAgKilcbiAgICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYWNjIC0+IGY6KCdhY2MgLT4gJ2EgdGFnIC0+ICdhY2MpIC0+ICdhY2NcblxuICAgICgqIHVzZWQgYnkgdGhlIGNhbWxwNCBleHRlbnNpb24gdG8gYnVpbGQgdHlwZSB3aXRuZXNzZXMsIG9yIGJ5IHNvbWUgaW50ZXJuYWwgcGFydHMgb2ZcbiAgICAgICB0eXBlcmVwLiB5b3Ugc2hvdWxkIGZlZWwgYmFkIGlmIHlvdSBuZWVkIHRvIHVzZSBpdCBpbiBzb21lIHVzZXIgY29kZSAqKVxuICAgIHZhbCBpbnRlcm5hbF91c2Vfb25seSA6ICdhIFZhcmlhbnRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVmFyaWFudF9pbnRlcm5hbFxuXG4gICAgbGV0IHR5cGVuYW1lX29mX3QgdCA9IHQudHlwZW5hbWVcbiAgICBsZXQgbGVuZ3RoIHQgPSBBcnJheS5sZW5ndGggdC50YWdzXG4gICAgbGV0IHRhZyB0IGluZGV4ID0gdC50YWdzLihpbmRleClcbiAgICBsZXQgaXNfcG9seW1vcnBoaWMgdCA9IHQucG9seW1vcnBoaWNcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gQXJyYXkuZm9sZF9sZWZ0IGYgaW5pdCB0LnRhZ3NcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIEZpZWxkX2ludGVybmFsID0gc3RydWN0XG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0ID1cbiAgICAgIHsgbGFiZWwgOiBzdHJpbmdcbiAgICAgIDsgcmVwIDogJ2ZpZWxkIFgudFxuICAgICAgOyBpbmRleCA6IGludFxuICAgICAgOyB0eWlkIDogJ2ZpZWxkIFR5cGVuYW1lLnRcbiAgICAgIDsgZ2V0IDogJ3JlY29yZCAtPiAnZmllbGRcbiAgICAgIDsgKCogc2V0IDogKCdyZWNvcmQgLT4gJ2ZpZWxkIC0+IHVuaXQpIG9wdGlvbjsgKFxcKiBtdXRhYmxlIGZpZWxkICpcXCkgKilcbiAgICAgICAgaXNfbXV0YWJsZSA6IGJvb2xcbiAgICAgIH1cbiAgZW5kXG5cbiAgKCoqXG4gICAgIFdpdG5lc3Mgb2YgYSBmaWVsZCwgdGhhdCBpcyBhbiBpdGVtIGluIGEgcmVjb3JkIHR5cGUuXG4gICAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCB0aGUgc2Vjb25kIGlzIHRoZSB0eXBlIG9mIHRoZSBmaWVsZC5cbiAgICAgRXhhbXBsZTpcbiAgICAge1tcbiAgICAgICB0eXBlIHQgPSB7IHggOiBpbnQgOyB5IDogc3RyaW5nIH1cbiAgICAgXX1cbiAgICAgVGhpcyB0eXBlIGhhcyB0d28gZmllbGRzLiBmb3IgZWFjaCBvZiB0aGVtIHdlJ2xsIGhhdmUgYSBjb3JyZXNwb25kaW5nIFtGaWVsZC50XVxuXG4gICAgIHZhbCBmaWVsZF94IDogKHQsIGludCkgRmllbGQudFxuICAgICB2YWwgZmllbGRfeSA6ICh0LCBzdHJpbmcpIEZpZWxkLnRcbiAgKilcbiAgbW9kdWxlIEZpZWxkIDogc2lnXG4gICAgdHlwZSAoJ3JlY29yZCwgJ2ZpZWxkKSB0XG5cblxuICAgICgqKlxuICAgICAgIFRoZSBuYW1lIG9mIHRoZSBmaWVsZCBhcyBpdCBpcyBnaXZlbiBpbiB0aGUgY29uY3JldGUgc3ludGF4XG4gICAgICAgRXhhbXBsZXM6XG4gICAgICAge1tcbiAgICAgICAgIHsgeCAgIDogaW50OyAgICAgKCogXCJ4XCIgKilcbiAgICAgICAgICAgZm9vIDogc3RyaW5nOyAgKCogXCJmb29cIiAqKVxuICAgICAgICAgICBiYXIgOiBmbG9hdDsgICAoKiBcImJhclwiICopXG4gICAgICAgICB9XG4gICAgICAgXX1cbiAgICAqKVxuICAgIHZhbCBsYWJlbCA6IChfLCBfKSB0IC0+IHN0cmluZ1xuXG4gICAgKCoqXG4gICAgICAgVGhlIDAtYmFzZWQgaW5kZXggb2YgdGhlIGZpZWxkIGluIHRoZSBsaXN0IG9mIGFsbCBmaWVsZHMgZm9yIHRoaXMgcmVjb3JkIHR5cGUuXG4gICAgICAgRXhhbXBsZTpcbiAgICAgICB7W1xuICAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgICB4ICAgOiBpbnQ7ICAgICAoKiAwICopXG4gICAgICAgICAgIGZvbyA6IHN0cmluZzsgICgqIDEgKilcbiAgICAgICAgICAgYmFyIDogc3RyaW5nOyAgKCogMiAqKVxuICAgICAgICAgfVxuICAgICAgIF19XG4gICAgKilcbiAgICB2YWwgaW5kZXggOiAoXywgXykgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEZpZWxkIGFjY2Vzc29ycy4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgZG90IG9wZXJhdGlvbi5cbiAgICAgICBbRmllbGQuZ2V0IGJhcl9maWVsZCB0XSByZXR1cm5zIHRoZSBmaWVsZCBbYmFyXSBvZiB0aGUgcmVjb3JkIHZhbHVlIFt0XSwganVzdCB0aGVcbiAgICAgICBzYW1lIGFzIFt0LmJhcl1cbiAgICAqKVxuICAgIHZhbCBnZXQgOiAoJ3JlY29yZCwgJ2ZpZWxkKSB0IC0+ICdyZWNvcmQgLT4gJ2ZpZWxkXG5cbiAgICAoKiogcmV0dXJuIHdoZXRoZXIgdGhlIGZpZWxkIGlzIG11dGFibGUsIGkuZS4gd2hldGhlciBpdHMgZGVjbGFyYXRpb24gaXMgcHJlZml4ZWQgd2l0aFxuICAgICAgICB0aGUga2V5d29yZCBbbXV0YWJsZV0gKilcbiAgICB2YWwgaXNfbXV0YWJsZSA6IChfLCBfKSB0IC0+IGJvb2xcblxuICAgICgqKiByZXR1cm4gdGhlIHR5cGVfbmFtZSBvZiB0aGUgYXJndW1lbnRzLiAgTWlnaHQgYmUgdXNlZCB0byBwZXJmb3JtIHNvbWUgbG9va3VwIGJhc2VkXG4gICAgICAgIG9uIGl0ICopXG4gICAgdmFsIHR5aWQgOiAoXywgJ2ZpZWxkKSB0IC0+ICdmaWVsZCBUeXBlbmFtZS50XG5cbiAgICAoKiogZ2V0IHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgYXJndW1lbnRzICopXG4gICAgdmFsIHRyYXZlcnNlIDogKF8sICdmaWVsZCkgdCAtPiAnZmllbGQgWC50XG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAoJ2EsICdiKSBGaWVsZF9pbnRlcm5hbC50IC0+ICgnYSwgJ2IpIHRcbiAgZW5kID0gc3RydWN0XG4gICAgaW5jbHVkZSBGaWVsZF9pbnRlcm5hbFxuXG4gICAgbGV0IGxhYmVsIHQgPSB0LmxhYmVsXG4gICAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gICAgbGV0IGdldCB0ID0gdC5nZXRcbiAgICBsZXQgaXNfbXV0YWJsZSB0ID0gdC5pc19tdXRhYmxlXG4gICAgbGV0IHR5aWQgdCA9IHQudHlpZFxuICAgIGxldCB0cmF2ZXJzZSB0ID0gdC5yZXBcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFJlY29yZF9pbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgXyBmaWVsZCA9IEZpZWxkIDogKCdyZWNvcmQsICdhKSBGaWVsZC50IC0+ICdyZWNvcmQgZmllbGRcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IHR5cGVuYW1lIDogJ2EgVHlwZW5hbWUudFxuICAgICAgOyBmaWVsZHMgOiAnYSBmaWVsZCBhcnJheVxuICAgICAgOyBoYXNfZG91YmxlX2FycmF5X3RhZyA6IGJvb2xcbiAgICAgIDsgY3JlYXRlIDogJ2EgZmllbGRzIC0+ICdhXG4gICAgICB9XG4gIGVuZFxuXG4gIG1vZHVsZSBSZWNvcmQgOiBzaWdcbiAgICAoKipcbiAgICAgICBBbiBleGlzdGVudGlhbCB0eXBlIHVzZWQgdG8gZ2F0aGVyIGFsbCB0aGUgZmllbGRzIGNvbnN0aXR1aW5nIGEgcmVjb3JkIHR5cGUuIHRoZVxuICAgICAgIFsncmVjb3JkXSBwYXJhbWV0ZXIgaXMgdGhlIHJlY29yZCB0eXBlLCBpdCBpcyB0aGUgc2FtZSBmb3IgYWxsIHRoZSBmaWVsZCBvZiB0aGF0XG4gICAgICAgcmVjb3JkIHR5cGUuIFRoZSB0eXBlIG9mIHRoZSBmaWVsZHMgbWlnaHQgYmUgZGlmZmVyZW50IGZvciBlYWNoIGZpZWxkIGFuZCBpcyB0aHVzXG4gICAgICAgZXhpc3RlbnRpYWwuXG4gICAgKilcbiAgICB0eXBlIF8gZmllbGQgPSBGaWVsZCA6ICgncmVjb3JkLCAnYSkgRmllbGQudCAtPiAncmVjb3JkIGZpZWxkXG5cbiAgICAoKipcbiAgICAgICBbJ3JlY29yZCBmaWVsZHNdIGlzIGEgdHlwZSBpc29tb3JwaGljIHRvIFsncmVjb3JkXS4gIFRoaXMgZ2l2ZXMgYSB3YXkgdG8gZ2V0IHRoZVxuICAgICAgIGZpZWxkIHZhbHVlIGZvciBlYWNoIGZpZWxkIG9mIHRoZSByZWNvcmQuICBUaGUgYWR2YW50YWdlIG9mIHRoaXMgcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICB0aGF0IGl0IGlzIGNvbnZlbmllbnQgZm9yIHdyaXRpbmcgZ2VuZXJpYyBjb21wdXRhdGlvbnMuXG4gICAgKilcbiAgICB0eXBlICdyZWNvcmQgZmllbGRzID0geyBnZXQgOiAnZmllbGQuICgncmVjb3JkLCAnZmllbGQpIEZpZWxkLnQgLT4gJ2ZpZWxkIH1cblxuICAgICgqKlxuICAgICAgIFdpdG5lc3Mgb2YgYSByZWNvcmQgdHlwZS4gVGhlIHBhcmFtZXRlciBpcyB0aGUgdHlwZSBvZiB0aGUgcmVjb3JkIHR5cGUgd2l0bmVzc2VkLlxuICAgICopXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuXG4gICAgKCoqXG4gICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZpZWxkcyBvZiB0aGlzIHJlY29yZCB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcblxuICAgICgqKlxuICAgICAgIEdldCB0aGUgbnRoIGZpZWxkIG9mIHRoaXMgcmVjb3JkIHR5cGUsIGluZGV4ZWQgZnJvbSAwLlxuICAgICopXG4gICAgdmFsIGZpZWxkIDogJ2EgdCAtPiBpbnQgLT4gJ2EgZmllbGRcblxuICAgICgqKlxuICAgICAgIFRoaXMgaXMgYSBsb3cgbGV2ZWwgbWV0YWRhdGEgcmVnYXJkaW5nIHRoZSB3YXkgdGhlIG9jYW1sIGNvbXBpbGVyIHJlcHJlc2VudCB0aGVcbiAgICAgICBhcnJheSB1bmRlcm5lYXRoIHRoYXQgaXMgdGhlIHJ1bnRpbWUgdmFsdWUgb2YgYSByZWNvcmQgb2YgdHlwZSBbJ2FdIGdpdmVuIGEgd2l0bmVzc1xuICAgICAgIG9mIHR5cGUgWydhIHRdLiBbaGFzX2RvdWJsZV9hcnJheV90YWcgd10gcmV0dXJucyBbdHJ1ZV0gaWYgdGhlIGFycmF5IHRoYXRcbiAgICAgICByZXByZXNlbnRzIHJ1bnRpbWUgdmFsdWVzIG9mIHRoaXMgdHlwZSBpcyBhbiBvcHRpbWl6ZWQgb2NhbWwgZmxvYXQgYXJyYXkuXG4gICAgICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgYmUgdHJ1ZSBmb3IgcmVjb3JkIHdoZXJlIGFsbCBmaWVsZHMgYXJlIHN0YXRpY2FsbHkga25vd24gYXMgdG9cbiAgICAgICBiZSBbZmxvYXRzXS5cblxuICAgICAgIE5vdGUgdGhhdCB5b3UgY2FuJ3QgZ2V0IHRoaXMgaW5mb3JtYXRpb24gZHluYW1pY2FsbHkgYnkgaW5zcGVjdGluZyB0aGUgdHlwZXJlcCBvbmNlXG4gICAgICAgaXQgaXMgYXBwbGllZCwgYmVjYXVzZSB0aGVyZSBpcyBhdCB0aGlzIHBvaW50IG5vIHdheSB0byB0ZWxsIHdoZXRoZXIgb25lIG9mIHRoZVxuICAgICAgIGZpZWxkIGlzIHBvbHltb3JwaGljIGluIHRoZSB0eXBlIGRlZmluaXRpb24uXG4gICAgKilcbiAgICB2YWwgaGFzX2RvdWJsZV9hcnJheV90YWcgOiBfIHQgLT4gYm9vbFxuXG4gICAgKCoqXG4gICAgICAgRXhwb3NlIG9uZSBkaXJlY3Rpb24gb2YgdGhlIGlzb21vcnBoaXNtIGJldHdlZW4gYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYW5kIGEgdmFsdWUgb2ZcbiAgICAgICB0eXBlIFsnYSBmaWVsZHNdLiBCYXNpY2FsbHksIGdpdmVuIGFuIGVuY29kaW5nIHdheSBvZiBhY2Nlc3NpbmcgdGhlIHZhbHVlIG9mIGFsbFxuICAgICAgIHRoZSBmaWVsZHMgb2YgYSByZWNvcmQsIGNyZWF0ZSB0aGF0IHJlY29yZCBhbmQgcmV0dXJuIGl0LlxuICAgICopXG4gICAgdmFsIGNyZWF0ZSA6ICdhIHQgLT4gJ2EgZmllbGRzIC0+ICdhXG5cbiAgICAoKipcbiAgICAgICBmb2xkaW5nIGFsb25nIHRoZSB0YWdzIG9mIHRoZSB2YXJpYW50IHR5cGVcbiAgICAqKVxuICAgIHZhbCBmb2xkIDogJ2EgdCAtPiBpbml0OidhY2MgLT4gZjooJ2FjYyAtPiAnYSBmaWVsZCAtPiAnYWNjKSAtPiAnYWNjXG5cbiAgICAoKiB1c2VkIGJ5IHRoZSBjYW1scDQgZXh0ZW5zaW9uIHRvIGJ1aWxkIHR5cGUgd2l0bmVzc2VzLCBvciBieSBzb21lIGludGVybmFsIHBhcnRzIG9mXG4gICAgICAgdHlwZXJlcC4geW91IHNob3VsZCBmZWVsIGJhZCBpZiB5b3UgbmVlZCB0byB1c2UgaXQgaW4gc29tZSB1c2VyIGNvZGUgKilcbiAgICB2YWwgaW50ZXJuYWxfdXNlX29ubHkgOiAnYSBSZWNvcmRfaW50ZXJuYWwudCAtPiAnYSB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUmVjb3JkX2ludGVybmFsXG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCB0ID0gdC50eXBlbmFtZVxuICAgIGxldCBsZW5ndGggdCA9IEFycmF5Lmxlbmd0aCB0LmZpZWxkc1xuICAgIGxldCBmaWVsZCB0IGluZGV4ID0gdC5maWVsZHMuKGluZGV4KVxuICAgIGxldCBoYXNfZG91YmxlX2FycmF5X3RhZyB0ID0gdC5oYXNfZG91YmxlX2FycmF5X3RhZ1xuICAgIGxldCBjcmVhdGUgdCA9IHQuY3JlYXRlXG4gICAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IEFycmF5LmZvbGRfbGVmdCBmIGluaXQgdC5maWVsZHNcbiAgICBsZXQgaW50ZXJuYWxfdXNlX29ubHkgdCA9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXAgPSAnYSB0XG4gICAgICB0eXBlICdhIHQgPSAnYSByZXBcbiAgICBlbmQpXG5lbmRcbiIsIm1vZHVsZSBOYW1lX29mID0gc3RydWN0XG4gIGxldCB0eXBlbmFtZV9vZl9pbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2ludDMyID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBpbnQzMlxuXG4gICAgICAgIGxldCBuYW1lID0gXCJpbnQzMlwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfaW50NjQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludDY0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImludDY0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9uYXRpdmVpbnQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IG5hdGl2ZWludFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJuYXRpdmVpbnRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2NoYXIgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGNoYXJcblxuICAgICAgICBsZXQgbmFtZSA9IFwiY2hhclwiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfZmxvYXQgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcImZsb2F0XCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl9zdHJpbmcgPVxuICAgIGxldCBtb2R1bGUgTSA9XG4gICAgICBUeXBlbmFtZS5NYWtlMCAoc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJzdHJpbmdcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX2J5dGVzID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgICAgIGxldCBuYW1lID0gXCJieXRlc1wiXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBNLnR5cGVuYW1lX29mX3RcbiAgOztcblxuICBsZXQgdHlwZW5hbWVfb2ZfYm9vbCA9XG4gICAgbGV0IG1vZHVsZSBNID1cbiAgICAgIFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYm9vbFxuXG4gICAgICAgIGxldCBuYW1lID0gXCJib29sXCJcbiAgICAgIGVuZClcbiAgICBpblxuICAgIE0udHlwZW5hbWVfb2ZfdFxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl91bml0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgVHlwZW5hbWUuTWFrZTAgKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgICAgbGV0IG5hbWUgPSBcInVuaXRcIlxuICAgICAgZW5kKVxuICAgIGluXG4gICAgTS50eXBlbmFtZV9vZl90XG4gIDs7XG5cbiAgbW9kdWxlIE1fb3B0aW9uID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uXG5cbiAgICAgIGxldCBuYW1lID0gXCJvcHRpb25cIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2Zfb3B0aW9uID0gTV9vcHRpb24udHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2xpc3QgPSBUeXBlbmFtZS5NYWtlMSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0XG5cbiAgICAgIGxldCBuYW1lID0gXCJsaXN0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2xpc3QgPSBNX2xpc3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX2FycmF5ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICAgICAgbGV0IG5hbWUgPSBcImFycmF5XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX2FycmF5ID0gTV9hcnJheS50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fbGF6eV90ID0gVHlwZW5hbWUuTWFrZTEgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90XG5cbiAgICAgIGxldCBuYW1lID0gXCJsYXp5X3RcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfbGF6eV90ID0gTV9sYXp5X3QudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3JlZiA9IFR5cGVuYW1lLk1ha2UxIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlZlxuXG4gICAgICBsZXQgbmFtZSA9IFwicmVmXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3JlZiA9IE1fcmVmLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV9mdW5jdGlvbiA9IFR5cGVuYW1lLk1ha2UyIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIC0+ICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJmdW5jdGlvblwiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl9mdW5jdGlvbiA9IE1fZnVuY3Rpb24udHlwZW5hbWVfb2ZfdFxuXG4gIHR5cGUgdHVwbGUwID0gdW5pdFxuXG4gIG1vZHVsZSBNX3R1cGxlMCA9IFR5cGVuYW1lLk1ha2UwIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHR1cGxlMFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGUwXCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlMCA9IE1fdHVwbGUwLnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTIgPSBUeXBlbmFtZS5NYWtlMiAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSAqICdiXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTJcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGUyID0gTV90dXBsZTIudHlwZW5hbWVfb2ZfdFxuXG4gIG1vZHVsZSBNX3R1cGxlMyA9IFR5cGVuYW1lLk1ha2UzIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2NcblxuICAgICAgbGV0IG5hbWUgPSBcInR1cGxlM1wiXG4gICAgZW5kKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90dXBsZTMgPSBNX3R1cGxlMy50eXBlbmFtZV9vZl90XG5cbiAgbW9kdWxlIE1fdHVwbGU0ID0gVHlwZW5hbWUuTWFrZTQgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgPSAnYSAqICdiICogJ2MgKiAnZFxuXG4gICAgICBsZXQgbmFtZSA9IFwidHVwbGU0XCJcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3R1cGxlNCA9IE1fdHVwbGU0LnR5cGVuYW1lX29mX3RcblxuICBtb2R1bGUgTV90dXBsZTUgPSBUeXBlbmFtZS5NYWtlNSAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlXG5cbiAgICAgIGxldCBuYW1lID0gXCJ0dXBsZTVcIlxuICAgIGVuZClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdHVwbGU1ID0gTV90dXBsZTUudHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSByZWMgVHlwZXJlcCA6IHNpZ1xuICB0eXBlIF8gdCA9XG4gICAgfCBJbnQgOiBpbnQgdFxuICAgIHwgSW50MzIgOiBpbnQzMiB0XG4gICAgfCBJbnQ2NCA6IGludDY0IHRcbiAgICB8IE5hdGl2ZWludCA6IG5hdGl2ZWludCB0XG4gICAgfCBDaGFyIDogY2hhciB0XG4gICAgfCBGbG9hdCA6IGZsb2F0IHRcbiAgICB8IFN0cmluZyA6IHN0cmluZyB0XG4gICAgfCBCeXRlcyA6IGJ5dGVzIHRcbiAgICB8IEJvb2wgOiBib29sIHRcbiAgICB8IFVuaXQgOiB1bml0IHRcbiAgICB8IE9wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uIHRcbiAgICB8IExpc3QgOiAnYSB0IC0+ICdhIGxpc3QgdFxuICAgIHwgQXJyYXkgOiAnYSB0IC0+ICdhIGFycmF5IHRcbiAgICB8IExhenkgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gICAgfCBSZWYgOiAnYSB0IC0+ICdhIHJlZiB0XG4gICAgfCBGdW5jdGlvbiA6ICgnZG9tIHQgKiAncm5nIHQpIC0+ICgnZG9tIC0+ICdybmcpIHRcbiAgICB8IFR1cGxlIDogJ2EgVHlwZXJlcC5UdXBsZS50IC0+ICdhIHRcbiAgICB8IFJlY29yZCA6ICdhIFR5cGVyZXAuUmVjb3JkLnQgLT4gJ2EgdFxuICAgIHwgVmFyaWFudCA6ICdhIFR5cGVyZXAuVmFyaWFudC50IC0+ICdhIHRcbiAgICB8IE5hbWVkIDogKCdhIFR5cGVyZXAuTmFtZWQudCAqICdhIHQgbGF6eV90IG9wdGlvbikgLT4gJ2EgdFxuXG4gIHR5cGUgcGFja2VkID0gVCA6ICdhIHQgLT4gcGFja2VkXG5cbiAgbW9kdWxlIE5hbWVkIDogc2lnXG4gICAgbW9kdWxlIHR5cGUgVDAgPSBzaWdcbiAgICAgIHR5cGUgbmFtZWRcbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDEgPSBzaWdcbiAgICAgIHR5cGUgJ2EgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWQgOiAnYSBUeXBlbmFtZS50IC0+ICdhIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCBhIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQyID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYiBUeXBlbmFtZS50IC0+ICgnYSwgJ2IpIG5hbWVkIFR5cGVuYW1lLnRcbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYikgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDMgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYykgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIHR5cGUgVDQgPSBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ1ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGJcblxuICAgICAgdmFsIGIgOiBiIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGNcblxuICAgICAgdmFsIGMgOiBjIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGRcblxuICAgICAgdmFsIGQgOiBkIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIGVcblxuICAgICAgdmFsIGUgOiBlIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgIDogICdhIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2IgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYyBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdkIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2UgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZCBUeXBlbmFtZS50XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl90IDogdCBUeXBlbmFtZS50XG4gICAgICB2YWwgd2l0bmVzcyA6ICh0LCAoYSwgYiwgYywgZCwgZSkgbmFtZWQpIFR5cGVfZXF1YWwudFxuICAgIGVuZFxuXG4gICAgKCogdGhlcmUgdGhlIG1vZHVsZSBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBuZWVkIHRvIGRlYWwgd2l0aCBhIHR5cGUgW3RdIHdpdGhcbiAgICAgICBwYXJhbWV0ZXJzIHdob3NlIGtpbmQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSB0eXBlIHZhcmlhYmxlOiBbJ2EgJ3RdLCBldmVuIHdpdGhcbiAgICAgICBhIGdhZHQuICopXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgVDAgb2YgKG1vZHVsZSBUMCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMSBvZiAobW9kdWxlIFQxIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQyIG9mIChtb2R1bGUgVDIgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDMgb2YgKG1vZHVsZSBUMyB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNCBvZiAobW9kdWxlIFQ0IHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQ1IG9mIChtb2R1bGUgVDUgd2l0aCB0eXBlIHQgPSAnYSlcblxuICAgIHZhbCBhcml0eSA6IF8gdCAtPiBpbnRcbiAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6ICdhIHQgLT4gJ2EgVHlwZW5hbWUudFxuICAgIHZhbCBuYW1lIDogXyB0IC0+IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgVHVwbGUgOiBzaWdcbiAgICAoKiB0aGVzZSBjb25zdHJ1Y3RvcnMgY291bGQgYmUgcGx1bmdlZCBhdCB0b3BsZXZlbCBvZiBUeXBlcmVwLnQsIGhvd2V2ZXIgaXQgaXMgbGVzc1xuICAgICAgIHZlcmJvc2UgdGhhdCB3YXkgKilcbiAgICB0eXBlIF8gdCA9XG4gICAgICB8IFQyIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCkgLT4gKCdhICogJ2IpIHRcbiAgICAgIHwgVDMgOiAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50KSAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gICAgICB8IFQ0IDpcbiAgICAgICAgICAoJ2EgVHlwZXJlcC50ICogJ2IgVHlwZXJlcC50ICogJ2MgVHlwZXJlcC50ICogJ2QgVHlwZXJlcC50KVxuICAgICAgICAgIC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICAgICAgfCBUNSA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudCAqICdlIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QgKiAnZSkgdFxuXG4gICAgdmFsIGFyaXR5IDogXyB0IC0+IGludFxuICAgIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUyB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBUeXBlcmVwLnRcblxuICB2YWwgc2FtZSA6IF8gdCAtPiBfIHQgLT4gYm9vbFxuICB2YWwgc2FtZV93aXRuZXNzIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbiAgdmFsIHNhbWVfd2l0bmVzc19leG4gOiAnYSB0IC0+ICdiIHQgLT4gKCdhLCAnYikgVHlwZV9lcXVhbC50XG4gIHZhbCB0eXBlbmFtZV9vZl90IDogJ2EgdCAtPiAnYSBUeXBlbmFtZS50XG4gIHZhbCBoZWFkIDogJ2EgdCAtPiAnYSB0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBfIHQgPVxuICAgIHwgSW50IDogaW50IHRcbiAgICB8IEludDMyIDogaW50MzIgdFxuICAgIHwgSW50NjQgOiBpbnQ2NCB0XG4gICAgfCBOYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHwgQ2hhciA6IGNoYXIgdFxuICAgIHwgRmxvYXQgOiBmbG9hdCB0XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQnl0ZXMgOiBieXRlcyB0XG4gICAgfCBCb29sIDogYm9vbCB0XG4gICAgfCBVbml0IDogdW5pdCB0XG4gICAgfCBPcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gICAgfCBMaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgICB8IEFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gICAgfCBMYXp5IDogJ2EgdCAtPiAnYSBsYXp5X3QgdFxuICAgIHwgUmVmIDogJ2EgdCAtPiAnYSByZWYgdFxuICAgIHwgRnVuY3Rpb24gOiAoJ2RvbSB0ICogJ3JuZyB0KSAtPiAoJ2RvbSAtPiAncm5nKSB0XG4gICAgfCBUdXBsZSA6ICdhIFR5cGVyZXAuVHVwbGUudCAtPiAnYSB0XG4gICAgfCBSZWNvcmQgOiAnYSBUeXBlcmVwLlJlY29yZC50IC0+ICdhIHRcbiAgICB8IFZhcmlhbnQgOiAnYSBUeXBlcmVwLlZhcmlhbnQudCAtPiAnYSB0XG4gICAgfCBOYW1lZCA6ICgnYSBUeXBlcmVwLk5hbWVkLnQgKiAnYSB0IGxhenlfdCBvcHRpb24pIC0+ICdhIHRcblxuICB0eXBlIHBhY2tlZCA9IFQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFQwID0gc2lnXG4gICAgICB0eXBlIG5hbWVkXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogbmFtZWQgVHlwZW5hbWUudFxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQxID0gc2lnXG4gICAgICB0eXBlICdhIG5hbWVkXG4gICAgICB0eXBlIGFcblxuICAgICAgdmFsIGEgOiBhIFR5cGVyZXAudFxuXG4gICAgICB0eXBlIHRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX25hbWVkIDogJ2EgVHlwZW5hbWUudCAtPiAnYSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgYSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUMiA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZCA6ICdhIFR5cGVuYW1lLnQgLT4gJ2IgVHlwZW5hbWUudCAtPiAoJ2EsICdiKSBuYW1lZCBUeXBlbmFtZS50XG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQzID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYykgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFQ0ID0gc2lnXG4gICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgbmFtZWRcbiAgICAgIHR5cGUgYVxuXG4gICAgICB2YWwgYSA6IGEgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgYlxuXG4gICAgICB2YWwgYiA6IGIgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgY1xuXG4gICAgICB2YWwgYyA6IGMgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgZFxuXG4gICAgICB2YWwgZCA6IGQgVHlwZXJlcC50XG5cbiAgICAgIHR5cGUgdFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgOiAgJ2EgVHlwZW5hbWUudFxuICAgICAgICAtPiAnYiBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdjIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2QgVHlwZW5hbWUudFxuICAgICAgICAtPiAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkIFR5cGVuYW1lLnRcblxuICAgICAgdmFsIHR5cGVuYW1lX29mX3QgOiB0IFR5cGVuYW1lLnRcbiAgICAgIHZhbCB3aXRuZXNzIDogKHQsIChhLCBiLCBjLCBkKSBuYW1lZCkgVHlwZV9lcXVhbC50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgdHlwZSBUNSA9IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBuYW1lZFxuICAgICAgdHlwZSBhXG5cbiAgICAgIHZhbCBhIDogYSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBiXG5cbiAgICAgIHZhbCBiIDogYiBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBjXG5cbiAgICAgIHZhbCBjIDogYyBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBkXG5cbiAgICAgIHZhbCBkIDogZCBUeXBlcmVwLnRcblxuICAgICAgdHlwZSBlXG5cbiAgICAgIHZhbCBlIDogZSBUeXBlcmVwLnRcblxuICAgICAgdHlwZSB0XG5cbiAgICAgIHZhbCB0eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICA6ICAnYSBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdiIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gJ2MgVHlwZW5hbWUudFxuICAgICAgICAtPiAnZCBUeXBlbmFtZS50XG4gICAgICAgIC0+ICdlIFR5cGVuYW1lLnRcbiAgICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgbmFtZWQgVHlwZW5hbWUudFxuXG4gICAgICB2YWwgdHlwZW5hbWVfb2ZfdCA6IHQgVHlwZW5hbWUudFxuICAgICAgdmFsIHdpdG5lc3MgOiAodCwgKGEsIGIsIGMsIGQsIGUpIG5hbWVkKSBUeXBlX2VxdWFsLnRcbiAgICBlbmRcblxuICAgICgqIHRoZXJlIHRoZSBtb2R1bGUgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UgbmVlZCB0byBkZWFsIHdpdGggYSB0eXBlIFt0XSB3aXRoXG4gICAgICAgcGFyYW1ldGVycyB3aG9zZSBraW5kIGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgdHlwZSB2YXJpYWJsZTogWydhICd0XSwgZXZlbiB3aXRoXG4gICAgICAgYSBnYWR0LiAqKVxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFQwIG9mIChtb2R1bGUgVDAgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDEgb2YgKG1vZHVsZSBUMSB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUMiBvZiAobW9kdWxlIFQyIHdpdGggdHlwZSB0ID0gJ2EpXG4gICAgICB8IFQzIG9mIChtb2R1bGUgVDMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAgIHwgVDQgb2YgKG1vZHVsZSBUNCB3aXRoIHR5cGUgdCA9ICdhKVxuICAgICAgfCBUNSBvZiAobW9kdWxlIFQ1IHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgICBsZXQgYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBUMCBfIC0+IDBcbiAgICAgIHwgVDEgXyAtPiAxXG4gICAgICB8IFQyIF8gLT4gMlxuICAgICAgfCBUMyBfIC0+IDNcbiAgICAgIHwgVDQgXyAtPiA0XG4gICAgICB8IFQ1IF8gLT4gNVxuICAgIDs7XG5cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCAodHlwZSBhKSA9IGZ1bmN0aW9uXG4gICAgICB8IFQwIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQwIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQxIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQxIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQyIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQyIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQzIHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQzIHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ0IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ0IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgICB8IFQ1IHJlcCAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFQ1IHdpdGggdHlwZSB0ID0gYSkgaW5cbiAgICAgICAgVC50eXBlbmFtZV9vZl90XG4gICAgOztcblxuICAgIGxldCBuYW1lIHJlcCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgKHR5cGVuYW1lX29mX3QgcmVwKSlcbiAgZW5kXG5cbiAgbW9kdWxlIFR1cGxlID0gc3RydWN0XG4gICAgKCogdGhlc2UgY29uc3RydWN0b3JzIGNvdWxkIGJlIHBsdW5nZWQgYXQgdG9wbGV2ZWwgb2YgVHlwZXJlcC50LCBob3dldmVyIGl0IGlzIGxlc3NcbiAgICAgICB2ZXJib3NlIHRoaXMgd2F5ICopXG4gICAgdHlwZSBfIHQgPVxuICAgICAgfCBUMiA6ICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQpIC0+ICgnYSAqICdiKSB0XG4gICAgICB8IFQzIDogKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCkgLT4gKCdhICogJ2IgKiAnYykgdFxuICAgICAgfCBUNCA6XG4gICAgICAgICAgKCdhIFR5cGVyZXAudCAqICdiIFR5cGVyZXAudCAqICdjIFR5cGVyZXAudCAqICdkIFR5cGVyZXAudClcbiAgICAgICAgICAtPiAoJ2EgKiAnYiAqICdjICogJ2QpIHRcbiAgICAgIHwgVDUgOlxuICAgICAgICAgICgnYSBUeXBlcmVwLnQgKiAnYiBUeXBlcmVwLnQgKiAnYyBUeXBlcmVwLnQgKiAnZCBUeXBlcmVwLnQgKiAnZSBUeXBlcmVwLnQpXG4gICAgICAgICAgLT4gKCdhICogJ2IgKiAnYyAqICdkICogJ2UpIHRcblxuICAgIGxldCBhcml0eSA6IHR5cGUgYS4gYSB0IC0+IGludCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgXyAtPiAyXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDMgXyAtPiAzXG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDQgXyAtPiA0XG4gICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgXyAtPiA1XG4gICAgOztcblxuICAgIGxldCB0eXBlbmFtZV9vZl90IDogdHlwZSBhLiBhIHQgLT4gYSBUeXBlbmFtZS50ID0gZnVuY3Rpb25cbiAgICAgIHwgVDIgKGEsIGIpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGUyIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYSkgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgfCBUMyAoYSwgYiwgYykgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTNcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgIHwgVDQgKGEsIGIsIGMsIGQpIC0+XG4gICAgICAgIE5hbWVfb2YudHlwZW5hbWVfb2ZfdHVwbGU0XG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBhKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYilcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGMpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBkKVxuICAgICAgfCBUNSAoYSwgYiwgYywgZCwgZSkgLT5cbiAgICAgICAgTmFtZV9vZi50eXBlbmFtZV9vZl90dXBsZTVcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGEpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBiKVxuICAgICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3QgYylcbiAgICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IGQpXG4gICAgICAgICAgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuTSAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIHJlcFxuICAgIGVuZClcblxuICBsZXQgcmVjIHR5cGVuYW1lX29mX3QgOiB0eXBlIGEuIGEgdCAtPiBhIFR5cGVuYW1lLnQgPSBmdW5jdGlvblxuICAgIHwgSW50IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfaW50XG4gICAgfCBJbnQzMiAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDMyXG4gICAgfCBJbnQ2NCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2ludDY0XG4gICAgfCBOYXRpdmVpbnQgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICB8IENoYXIgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9jaGFyXG4gICAgfCBGbG9hdCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2Zsb2F0XG4gICAgfCBTdHJpbmcgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9zdHJpbmdcbiAgICB8IEJ5dGVzIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYnl0ZXNcbiAgICB8IEJvb2wgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9ib29sXG4gICAgfCBVbml0IC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfdW5pdFxuICAgIHwgT3B0aW9uIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX29wdGlvbiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBMaXN0IHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX2xpc3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgQXJyYXkgcmVwIC0+IE5hbWVfb2YudHlwZW5hbWVfb2ZfYXJyYXkgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgTGF6eSByZXAgLT4gTmFtZV9vZi50eXBlbmFtZV9vZl9sYXp5X3QgKHR5cGVuYW1lX29mX3QgcmVwKVxuICAgIHwgUmVmIHJlcCAtPiBOYW1lX29mLnR5cGVuYW1lX29mX3JlZiAodHlwZW5hbWVfb2ZfdCByZXApXG4gICAgfCBGdW5jdGlvbiAoZG9tLCBybmcpIC0+XG4gICAgICBOYW1lX29mLnR5cGVuYW1lX29mX2Z1bmN0aW9uICh0eXBlbmFtZV9vZl90IGRvbSkgKHR5cGVuYW1lX29mX3Qgcm5nKVxuICAgIHwgVHVwbGUgcmVwIC0+IFR5cGVyZXAuVHVwbGUudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFJlY29yZCByZXAgLT4gVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZXBcbiAgICB8IFZhcmlhbnQgcmVwIC0+IFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHJlcFxuICAgIHwgTmFtZWQgKG5hbWUsIF8pIC0+IE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZVxuICA7O1xuXG4gIGxldCByZWMgc2FtZV93aXRuZXNzIDogdHlwZSBhIGIuIGEgdCAtPiBiIHQgLT4gKGEsIGIpIFR5cGVfZXF1YWwudCBvcHRpb24gPVxuICAgIGZ1biB0MSB0MiAtPlxuICAgICAgbGV0IG1vZHVsZSBFID0gVHlwZV9lcXVhbCBpblxuICAgICAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgICAgIHwgTmFtZWQgKG5hbWUxLCByMSksIE5hbWVkIChuYW1lMiwgcjIpIC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3MgKE5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZTEpIChOYW1lZC50eXBlbmFtZV9vZl90IG5hbWUyKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAobWF0Y2ggcjEsIHIyIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAobGF6eSB0MSksIFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgICAgfCBTb21lIChsYXp5IHQxKSwgTm9uZSAtPiBzYW1lX3dpdG5lc3MgdDEgdDJcbiAgICAgICAgICAgIHwgTm9uZSwgU29tZSAobGF6eSB0MikgLT4gc2FtZV93aXRuZXNzIHQxIHQyXG4gICAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZSkpXG4gICAgICB8IE5hbWVkIChfLCByMSksIHQyIC0+XG4gICAgICAgIChtYXRjaCByMSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDEpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IHQxLCBOYW1lZCAoXywgcjIpIC0+XG4gICAgICAgIChtYXRjaCByMiB3aXRoXG4gICAgICAgICB8IFNvbWUgKGxhenkgdDIpIC0+IHNhbWVfd2l0bmVzcyB0MSB0MlxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IEludCwgSW50IC0+IFNvbWUgRS5UXG4gICAgICB8IEludDMyLCBJbnQzMiAtPiBTb21lIEUuVFxuICAgICAgfCBJbnQ2NCwgSW50NjQgLT4gU29tZSBFLlRcbiAgICAgIHwgTmF0aXZlaW50LCBOYXRpdmVpbnQgLT4gU29tZSBFLlRcbiAgICAgIHwgQ2hhciwgQ2hhciAtPiBTb21lIEUuVFxuICAgICAgfCBGbG9hdCwgRmxvYXQgLT4gU29tZSBFLlRcbiAgICAgIHwgU3RyaW5nLCBTdHJpbmcgLT4gU29tZSBFLlRcbiAgICAgIHwgQnl0ZXMsIEJ5dGVzIC0+IFNvbWUgRS5UXG4gICAgICB8IEJvb2wsIEJvb2wgLT4gU29tZSBFLlRcbiAgICAgIHwgVW5pdCwgVW5pdCAtPiBTb21lIEUuVFxuICAgICAgfCBPcHRpb24gcjEsIE9wdGlvbiByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMaXN0IHIxLCBMaXN0IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEFycmF5IHIxLCBBcnJheSByMiAtPlxuICAgICAgICAobWF0Y2ggc2FtZV93aXRuZXNzIHIxIHIyIHdpdGhcbiAgICAgICAgIHwgTm9uZSBhcyB4IC0+IHhcbiAgICAgICAgIHwgU29tZSBFLlQgYXMgeCAtPiB4KVxuICAgICAgfCBMYXp5IHIxLCBMYXp5IHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IFJlZiByMSwgUmVmIHIyIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgcjEgcjIgd2l0aFxuICAgICAgICAgfCBOb25lIGFzIHggLT4geFxuICAgICAgICAgfCBTb21lIEUuVCBhcyB4IC0+IHgpXG4gICAgICB8IEZ1bmN0aW9uIChkb20xLCBybmcxKSwgRnVuY3Rpb24gKGRvbTIsIHJuZzIpIC0+XG4gICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgZG9tMSBkb20yLCBzYW1lX3dpdG5lc3Mgcm5nMSBybmcyIHdpdGhcbiAgICAgICAgIHwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICB8IFR1cGxlIHQxLCBUdXBsZSB0MiAtPlxuICAgICAgICBsZXQgbW9kdWxlIFQgPSBUeXBlcmVwLlR1cGxlIGluXG4gICAgICAgIChtYXRjaCB0MSwgdDIgd2l0aFxuICAgICAgICAgfCBULlQyIChhMSwgYjEpLCBULlQyIChhMiwgYjIpIC0+XG4gICAgICAgICAgIChtYXRjaCBzYW1lX3dpdG5lc3MgYTEgYTIsIHNhbWVfd2l0bmVzcyBiMSBiMiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCAtPiBTb21lIEUuVFxuICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQzIChhMSwgYjEsIGMxKSwgVC5UMyAoYTIsIGIyLCBjMikgLT5cbiAgICAgICAgICAgKG1hdGNoIHNhbWVfd2l0bmVzcyBhMSBhMiwgc2FtZV93aXRuZXNzIGIxIGIyLCBzYW1lX3dpdG5lc3MgYzEgYzIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8gfCBfLCBOb25lLCBfIHwgXywgXywgTm9uZSAtPiBOb25lKVxuICAgICAgICAgfCBULlQ0IChhMSwgYjEsIGMxLCBkMSksIFQuVDQgKGEyLCBiMiwgYzIsIGQyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgc2FtZV93aXRuZXNzIGExIGEyLCBzYW1lX3dpdG5lc3MgYjEgYjIsIHNhbWVfd2l0bmVzcyBjMSBjMiwgc2FtZV93aXRuZXNzIGQxIGQyXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5UIC0+IFNvbWUgRS5UXG4gICAgICAgICAgICB8IE5vbmUsIF8sIF8sIF8gfCBfLCBOb25lLCBfLCBfIHwgXywgXywgTm9uZSwgXyB8IF8sIF8sIF8sIE5vbmUgLT4gTm9uZSlcbiAgICAgICAgIHwgVC5UNSAoYTEsIGIxLCBjMSwgZDEsIGUxKSwgVC5UNSAoYTIsIGIyLCBjMiwgZDIsIGUyKSAtPlxuICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgKCBzYW1lX3dpdG5lc3MgYTEgYTJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYjEgYjJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgYzEgYzJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZDEgZDJcbiAgICAgICAgICAgICAgLCBzYW1lX3dpdG5lc3MgZTEgZTIgKVxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBTb21lIEUuVCwgU29tZSBFLlQsIFNvbWUgRS5ULCBTb21lIEUuVCwgU29tZSBFLlQgLT4gU29tZSBFLlRcbiAgICAgICAgICAgIHwgTm9uZSwgXywgXywgXywgX1xuICAgICAgICAgICAgfCBfLCBOb25lLCBfLCBfLCBfXG4gICAgICAgICAgICB8IF8sIF8sIE5vbmUsIF8sIF9cbiAgICAgICAgICAgIHwgXywgXywgXywgTm9uZSwgX1xuICAgICAgICAgICAgfCBfLCBfLCBfLCBfLCBOb25lIC0+IE5vbmUpXG4gICAgICAgICB8IFQuVDIgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDMgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDQgXywgXyAtPiBOb25lXG4gICAgICAgICB8IFQuVDUgXywgXyAtPiBOb25lKVxuICAgICAgfCBSZWNvcmQgcjEsIFJlY29yZCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMSlcbiAgICAgICAgICAoVHlwZXJlcC5SZWNvcmQudHlwZW5hbWVfb2ZfdCByMilcbiAgICAgIHwgVmFyaWFudCByMSwgVmFyaWFudCByMiAtPlxuICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NcbiAgICAgICAgICAoVHlwZXJlcC5WYXJpYW50LnR5cGVuYW1lX29mX3QgcjEpXG4gICAgICAgICAgKFR5cGVyZXAuVmFyaWFudC50eXBlbmFtZV9vZl90IHIyKVxuICAgICAgfCBJbnQsIF8gLT4gTm9uZVxuICAgICAgfCBJbnQzMiwgXyAtPiBOb25lXG4gICAgICB8IEludDY0LCBfIC0+IE5vbmVcbiAgICAgIHwgTmF0aXZlaW50LCBfIC0+IE5vbmVcbiAgICAgIHwgQ2hhciwgXyAtPiBOb25lXG4gICAgICB8IEZsb2F0LCBfIC0+IE5vbmVcbiAgICAgIHwgU3RyaW5nLCBfIC0+IE5vbmVcbiAgICAgIHwgQnl0ZXMsIF8gLT4gTm9uZVxuICAgICAgfCBCb29sLCBfIC0+IE5vbmVcbiAgICAgIHwgVW5pdCwgXyAtPiBOb25lXG4gICAgICB8IE9wdGlvbiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgTGlzdCBfLCBfIC0+IE5vbmVcbiAgICAgIHwgQXJyYXkgXywgXyAtPiBOb25lXG4gICAgICB8IExhenkgXywgXyAtPiBOb25lXG4gICAgICB8IFJlZiBfLCBfIC0+IE5vbmVcbiAgICAgIHwgRnVuY3Rpb24gXywgXyAtPiBOb25lXG4gICAgICB8IFR1cGxlIF8sIF8gLT4gTm9uZVxuICAgICAgfCBSZWNvcmQgXywgXyAtPiBOb25lXG4gICAgICB8IFZhcmlhbnQgXywgXyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IHNhbWUgYSBiID0gc2FtZV93aXRuZXNzIGEgYiA8PiBOb25lXG5cbiAgbGV0IHNhbWVfd2l0bmVzc19leG4gYSBiID1cbiAgICBtYXRjaCBzYW1lX3dpdG5lc3MgYSBiIHdpdGhcbiAgICB8IFNvbWUgcHJvb2YgLT4gcHJvb2ZcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHJlYyBoZWFkID0gZnVuY3Rpb25cbiAgICB8IFR5cGVyZXAuTmFtZWQgKF8sIFNvbWUgKGxhenkgdCkpIC0+IGhlYWQgdFxuICAgIHwgdCAtPiB0XG4gIDs7XG5lbmRcblxubGV0IHR5cGVyZXBfb2ZfaW50ID0gVHlwZXJlcC5JbnRcbmxldCB0eXBlcmVwX29mX2ludDMyID0gVHlwZXJlcC5JbnQzMlxubGV0IHR5cGVyZXBfb2ZfaW50NjQgPSBUeXBlcmVwLkludDY0XG5sZXQgdHlwZXJlcF9vZl9uYXRpdmVpbnQgPSBUeXBlcmVwLk5hdGl2ZWludFxubGV0IHR5cGVyZXBfb2ZfY2hhciA9IFR5cGVyZXAuQ2hhclxubGV0IHR5cGVyZXBfb2ZfZmxvYXQgPSBUeXBlcmVwLkZsb2F0XG5sZXQgdHlwZXJlcF9vZl9zdHJpbmcgPSBUeXBlcmVwLlN0cmluZ1xubGV0IHR5cGVyZXBfb2ZfYnl0ZXMgPSBUeXBlcmVwLkJ5dGVzXG5sZXQgdHlwZXJlcF9vZl9ib29sID0gVHlwZXJlcC5Cb29sXG5sZXQgdHlwZXJlcF9vZl91bml0ID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl9vcHRpb24gcmVwID0gVHlwZXJlcC5PcHRpb24gcmVwXG5sZXQgdHlwZXJlcF9vZl9saXN0IHJlcCA9IFR5cGVyZXAuTGlzdCByZXBcbmxldCB0eXBlcmVwX29mX2FycmF5IHJlcCA9IFR5cGVyZXAuQXJyYXkgcmVwXG5sZXQgdHlwZXJlcF9vZl9sYXp5X3QgcmVwID0gVHlwZXJlcC5MYXp5IHJlcFxubGV0IHR5cGVyZXBfb2ZfcmVmIHJlcCA9IFR5cGVyZXAuUmVmIHJlcFxubGV0IHR5cGVyZXBfb2ZfZnVuY3Rpb24gZG9tIHJuZyA9IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKVxubGV0IHR5cGVyZXBfb2ZfdHVwbGUwID0gVHlwZXJlcC5Vbml0XG5sZXQgdHlwZXJlcF9vZl90dXBsZTIgYSBiID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UMiAoYSwgYikpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTMgYSBiIGMgPSBUeXBlcmVwLlR1cGxlIChUeXBlcmVwLlR1cGxlLlQzIChhLCBiLCBjKSlcbmxldCB0eXBlcmVwX29mX3R1cGxlNCBhIGIgYyBkID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkpXG5sZXQgdHlwZXJlcF9vZl90dXBsZTUgYSBiIGMgZCBlID0gVHlwZXJlcC5UdXBsZSAoVHlwZXJlcC5UdXBsZS5UNSAoYSwgYiwgYywgZCwgZSkpXG5cbmluY2x1ZGUgTmFtZV9vZlxuXG5sZXQgdmFsdWVfdHVwbGUwID0gKClcblxubGV0IHR5cGVyZXBfb2ZfaW50NjMsIHR5cGVuYW1lX29mX2ludDYzID1cbiAgbGV0IHR5cGVyZXBfYW5kX3R5cGVuYW1lX29mX2ludDYzX3JlcHJcbiAgICA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBhIFR5cGVyZXAudCAqIGEgVHlwZW5hbWUudFxuICAgID0gZnVuY3Rpb25cbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IHR5cGVyZXBfb2ZfaW50LCB0eXBlbmFtZV9vZl9pbnRcbiAgICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gdHlwZXJlcF9vZl9pbnQ2NCwgdHlwZW5hbWVfb2ZfaW50NjRcbiAgaW5cbiAgdHlwZXJlcF9hbmRfdHlwZW5hbWVfb2ZfaW50NjNfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuOztcbiIsIigqIHVzaW5nIHRoZSBoYXNoX3ZhcmlhbnQgb2YgcGFfdHlwZV9jb252IGF0IGNvbXBpbGUgdGltZSAqKVxubGV0IHJlcHJfb2ZfcG9seV92YXJpYW50IDogWz4gXSAtPiBpbnQgPVxuICBmdW4gdmFyaWFudCAtPlxuICBsZXQgb2JqID0gT2JqLnJlcHIgdmFyaWFudCBpblxuICBpZiBPYmouaXNfaW50IG9ialxuICB0aGVuIE9iai5vYmogb2JqXG4gIGVsc2UgKFxuICAgIGxldCBzaXplID0gT2JqLnNpemUgb2JqIGluXG4gICAgYXNzZXJ0IChzaXplID0gMik7XG4gICAgbGV0IHJlcHIgPSBPYmouZmllbGQgb2JqIDAgaW5cbiAgICBhc3NlcnQgKE9iai5pc19pbnQgcmVwcik7XG4gICAgT2JqLm9iaiByZXByKVxuOztcblxubGV0IGhhc2hfdmFyaWFudCBzID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gKDIyMyAqICFhY2N1KSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKCgxIGxzbCAzMSkgLSAxKTtcbiAgKCogbWFrZSBpdCBzaWduZWQgZm9yIDY0IGJpdHMgYXJjaGl0ZWN0dXJlcyAqKVxuICBpZiAhYWNjdSA+IDB4M0ZGRkZGRkYgdGhlbiAhYWNjdSAtICgxIGxzbCAzMSkgZWxzZSAhYWNjdVxuOztcblxuKCogYSBmZXcgdW5pdCB0ZXN0cyBvZiBjYXNlcyB0aGF0IGhhdmUgdHJpZ2dlcmVkIGRpZmZzIGluIHRoZSBwYXN0IG9mIHRoaXNcbiAgIGxpYiAqKVxubGV0ICgpID0gYXNzZXJ0IChyZXByX29mX3BvbHlfdmFyaWFudCBgTGF0ZW5jeV9zdGF0cyA9IGhhc2hfdmFyaWFudCBcIkxhdGVuY3lfc3RhdHNcIilcbmxldCAoKSA9IGFzc2VydCAocmVwcl9vZl9wb2x5X3ZhcmlhbnQgYHplcm8gPSBoYXNoX3ZhcmlhbnQgXCJ6ZXJvXCIpXG5sZXQgZG91YmxlX2FycmF5X3ZhbHVlID0gT2JqLm1hZ2ljIDAuXG5sZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgYSA9IE9iai5kb3VibGVfYXJyYXlfdGFnID0gT2JqLnRhZyAoT2JqLnJlcHIgYSlcblxubGV0ICgpID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSBkb3VibGUgPVxuICAgICAgeyBhIDogZmxvYXRcbiAgICAgIDsgYiA6IGZsb2F0XG4gICAgICB9XG5cbiAgICB0eXBlIHNpbXBsZSA9XG4gICAgICB7IGMgOiBmbG9hdFxuICAgICAgOyBkIDogaW50XG4gICAgICB9XG5cbiAgICBsZXQgZG91YmxlID0geyBhID0gZG91YmxlX2FycmF5X3ZhbHVlOyBiID0gZG91YmxlX2FycmF5X3ZhbHVlIH1cbiAgICBsZXQgc2ltcGxlID0geyBjID0gZG91YmxlX2FycmF5X3ZhbHVlOyBkID0gZG91YmxlX2FycmF5X3ZhbHVlIH1cbiAgZW5kXG4gIGluXG4gIGFzc2VydCAoaGFzX2RvdWJsZV9hcnJheV90YWcgTS5kb3VibGUpO1xuICBhc3NlcnQgKG5vdCAoaGFzX2RvdWJsZV9hcnJheV90YWcgTS5zaW1wbGUpKVxuOztcbiIsIm1vZHVsZSBNIChYIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6IHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdhIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMyID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgWC50IC0+ICdiIFgudCAtPiAoJ2EsICdiKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMyA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gJ2MgWC50IC0+ICgnYSwgJ2IsICdjKSB0IFgudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTNCA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM0IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHQgOj0gKCdhLCAnYiwgJ2MsICdkKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIFgudCAtPiAnYiBYLnQgLT4gJ2MgWC50IC0+ICdkIFgudCAtPiAoJ2EsICdiLCAnYywgJ2QpIHQgWC50XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM1IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBYLnRcbiAgICAgIC0+ICdiIFgudFxuICAgICAgLT4gJ2MgWC50XG4gICAgICAtPiAnZCBYLnRcbiAgICAgIC0+ICdlIFgudFxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCBYLnRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlICdhIHRcblxuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIE0gKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmID0gVmFyaWFudF9hbmRfcmVjb3JkX2ludGZcblxubW9kdWxlIEhlbHBlciAoQSA6IFZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLlMpIChCIDogVmFyaWFudF9hbmRfcmVjb3JkX2ludGYuUykgPSBzdHJ1Y3RcbiAgdHlwZSBtYXAgPSB7IG1hcCA6ICdhLiAnYSBBLnQgLT4gJ2EgQi50IH1cblxuICBsZXQgbWFwX3ZhcmlhbnQgKHR5cGUgdmFyaWFudCkgeyBtYXAgfSAodmFyaWFudCA6IHZhcmlhbnQgQS5WYXJpYW50LnQpID1cbiAgICBsZXQgbWFwX2NyZWF0ZSA9IGZ1bmN0aW9uXG4gICAgICB8IEEuVGFnLkFyZ3MgZmN0IC0+IEIuVGFnX2ludGVybmFsLkFyZ3MgZmN0XG4gICAgICB8IEEuVGFnLkNvbnN0IGsgLT4gQi5UYWdfaW50ZXJuYWwuQ29uc3Qga1xuICAgIGluXG4gICAgbGV0IG1hcF90YWcgdGFnID1cbiAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICB8IEEuVmFyaWFudC5UYWcgdGFnIC0+XG4gICAgICAgIGxldCBsYWJlbCA9IEEuVGFnLmxhYmVsIHRhZyBpblxuICAgICAgICBsZXQgcmVwID0gbWFwIChBLlRhZy50cmF2ZXJzZSB0YWcpIGluXG4gICAgICAgIGxldCBhcml0eSA9IEEuVGFnLmFyaXR5IHRhZyBpblxuICAgICAgICBsZXQgYXJnc19sYWJlbHMgPSBBLlRhZy5hcmdzX2xhYmVscyB0YWcgaW5cbiAgICAgICAgbGV0IGluZGV4ID0gQS5UYWcuaW5kZXggdGFnIGluXG4gICAgICAgIGxldCBvY2FtbF9yZXByID0gQS5UYWcub2NhbWxfcmVwciB0YWcgaW5cbiAgICAgICAgbGV0IHR5aWQgPSBBLlRhZy50eWlkIHRhZyBpblxuICAgICAgICBsZXQgY3JlYXRlID0gbWFwX2NyZWF0ZSAoQS5UYWcuY3JlYXRlIHRhZykgaW5cbiAgICAgICAgQi5WYXJpYW50X2ludGVybmFsLlRhZ1xuICAgICAgICAgIChCLlRhZy5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgICAgICAgIHsgQi5UYWdfaW50ZXJuYWwubGFiZWxcbiAgICAgICAgICAgICA7IHJlcFxuICAgICAgICAgICAgIDsgYXJpdHlcbiAgICAgICAgICAgICA7IGFyZ3NfbGFiZWxzXG4gICAgICAgICAgICAgOyBpbmRleFxuICAgICAgICAgICAgIDsgb2NhbWxfcmVwclxuICAgICAgICAgICAgIDsgdHlpZFxuICAgICAgICAgICAgIDsgY3JlYXRlXG4gICAgICAgICAgICAgfSlcbiAgICBpblxuICAgIGxldCB0eXBlbmFtZSA9IEEuVmFyaWFudC50eXBlbmFtZV9vZl90IHZhcmlhbnQgaW5cbiAgICBsZXQgcG9seW1vcnBoaWMgPSBBLlZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCBpblxuICAgIGxldCB0YWdzID1cbiAgICAgIEFycmF5LmluaXQgKEEuVmFyaWFudC5sZW5ndGggdmFyaWFudCkgKGZ1biBpbmRleCAtPlxuICAgICAgICBtYXBfdGFnIChBLlZhcmlhbnQudGFnIHZhcmlhbnQgaW5kZXgpKVxuICAgIGluXG4gICAgbGV0IHZhbHVlIChhIDogdmFyaWFudCkgPVxuICAgICAgbWF0Y2ggQS5WYXJpYW50LnZhbHVlIHZhcmlhbnQgYSB3aXRoXG4gICAgICB8IEEuVmFyaWFudC5WYWx1ZSAoYXRhZywgYSkgLT5cbiAgICAgICAgKGZ1biAodHlwZSBhcmdzKSAoYXRhZyA6ICh2YXJpYW50LCBhcmdzKSBBLlRhZy50KSAoYSA6IGFyZ3MpIC0+XG4gICAgICAgICAgIGxldCAoQi5WYXJpYW50X2ludGVybmFsLlRhZyBidGFnKSA9IHRhZ3MuKEEuVGFnLmluZGV4IGF0YWcpIGluXG4gICAgICAgICAgIChmdW4gKHR5cGUgZXgpIChidGFnIDogKHZhcmlhbnQsIGV4KSBCLlRhZy50KSAtPlxuICAgICAgICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID1cbiAgICAgICAgICAgICAgICBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIChBLlRhZy50eWlkIGF0YWcpIChCLlRhZy50eWlkIGJ0YWcpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBidGFnID0gKGJ0YWcgOiAodmFyaWFudCwgYXJncykgQi5UYWcudCkgaW5cbiAgICAgICAgICAgICAgQi5WYXJpYW50X2ludGVybmFsLlZhbHVlIChidGFnLCBhKSlcbiAgICAgICAgICAgICBidGFnKVxuICAgICAgICAgIGF0YWdcbiAgICAgICAgICBhXG4gICAgaW5cbiAgICBCLlZhcmlhbnQuaW50ZXJuYWxfdXNlX29ubHkgeyBCLlZhcmlhbnRfaW50ZXJuYWwudHlwZW5hbWU7IHRhZ3M7IHBvbHltb3JwaGljOyB2YWx1ZSB9XG4gIDs7XG5cbiAgbGV0IG1hcF9yZWNvcmQgKHR5cGUgcmVjb3JkKSB7IG1hcCB9IChyZWNvcmQgOiByZWNvcmQgQS5SZWNvcmQudCkgPVxuICAgIGxldCBtYXBfZmllbGQgZmllbGQgPVxuICAgICAgbWF0Y2ggZmllbGQgd2l0aFxuICAgICAgfCBBLlJlY29yZC5GaWVsZCBmaWVsZCAtPlxuICAgICAgICBsZXQgbGFiZWwgPSBBLkZpZWxkLmxhYmVsIGZpZWxkIGluXG4gICAgICAgIGxldCByZXAgPSBtYXAgKEEuRmllbGQudHJhdmVyc2UgZmllbGQpIGluXG4gICAgICAgIGxldCBpbmRleCA9IEEuRmllbGQuaW5kZXggZmllbGQgaW5cbiAgICAgICAgbGV0IGlzX211dGFibGUgPSBBLkZpZWxkLmlzX211dGFibGUgZmllbGQgaW5cbiAgICAgICAgbGV0IHR5aWQgPSBBLkZpZWxkLnR5aWQgZmllbGQgaW5cbiAgICAgICAgbGV0IGdldCA9IEEuRmllbGQuZ2V0IGZpZWxkIGluXG4gICAgICAgIEIuUmVjb3JkX2ludGVybmFsLkZpZWxkXG4gICAgICAgICAgKEIuRmllbGQuaW50ZXJuYWxfdXNlX29ubHlcbiAgICAgICAgICAgICB7IEIuRmllbGRfaW50ZXJuYWwubGFiZWw7IHJlcDsgaW5kZXg7IGlzX211dGFibGU7IHR5aWQ7IGdldCB9KVxuICAgIGluXG4gICAgbGV0IHR5cGVuYW1lID0gQS5SZWNvcmQudHlwZW5hbWVfb2ZfdCByZWNvcmQgaW5cbiAgICBsZXQgaGFzX2RvdWJsZV9hcnJheV90YWcgPSBBLlJlY29yZC5oYXNfZG91YmxlX2FycmF5X3RhZyByZWNvcmQgaW5cbiAgICBsZXQgZmllbGRzID1cbiAgICAgIEFycmF5LmluaXQgKEEuUmVjb3JkLmxlbmd0aCByZWNvcmQpIChmdW4gaW5kZXggLT5cbiAgICAgICAgbWFwX2ZpZWxkIChBLlJlY29yZC5maWVsZCByZWNvcmQgaW5kZXgpKVxuICAgIGluXG4gICAgbGV0IGNyZWF0ZSB7IEIuUmVjb3JkX2ludGVybmFsLmdldCB9ID1cbiAgICAgIGxldCBnZXQgKHR5cGUgYSkgKGFmaWVsZCA6IChfLCBhKSBBLkZpZWxkLnQpID1cbiAgICAgICAgbWF0Y2ggZmllbGRzLihBLkZpZWxkLmluZGV4IGFmaWVsZCkgd2l0aFxuICAgICAgICB8IEIuUmVjb3JkX2ludGVybmFsLkZpZWxkIGJmaWVsZCAtPlxuICAgICAgICAgIChmdW4gKHR5cGUgZXgpIChiZmllbGQgOiAocmVjb3JkLCBleCkgQi5GaWVsZC50KSAtPlxuICAgICAgICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgICAgICAgVHlwZW5hbWUuc2FtZV93aXRuZXNzX2V4biAoQS5GaWVsZC50eWlkIGFmaWVsZCkgKEIuRmllbGQudHlpZCBiZmllbGQpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgYmZpZWxkID0gKGJmaWVsZCA6IChyZWNvcmQsIGEpIEIuRmllbGQudCkgaW5cbiAgICAgICAgICAgICBnZXQgYmZpZWxkKVxuICAgICAgICAgICAgYmZpZWxkXG4gICAgICBpblxuICAgICAgQS5SZWNvcmQuY3JlYXRlIHJlY29yZCB7IEEuUmVjb3JkLmdldCB9XG4gICAgaW5cbiAgICBCLlJlY29yZC5pbnRlcm5hbF91c2Vfb25seVxuICAgICAgeyBCLlJlY29yZF9pbnRlcm5hbC50eXBlbmFtZTsgZmllbGRzOyBoYXNfZG91YmxlX2FycmF5X3RhZzsgY3JlYXRlIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBOYW1lZCA9IHNpZ1xuICB0eXBlICdhIGNvbXB1dGF0aW9uXG5cbiAgbW9kdWxlIENvbnRleHQgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgZW5kXG5cbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGluaXQgOiBDb250ZXh0LnQgLT4gJ2EgVHlwZW5hbWUudCAtPiAnYSB0XG4gIHZhbCBnZXRfd2lwX2NvbXB1dGF0aW9uIDogJ2EgdCAtPiAnYSBjb21wdXRhdGlvblxuICB2YWwgc2V0X2ZpbmFsX2NvbXB1dGF0aW9uIDogJ2EgdCAtPiAnYSBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICB2YWwgc2hhcmUgOiBfIFR5cGVyZXAudCAtPiBib29sXG5lbmRcblxubW9kdWxlIHR5cGUgQ29tcHV0YXRpb24gPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBWYXJpYW50X2FuZF9yZWNvcmRfaW50Zi5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgaW50IDogaW50IHRcbiAgdmFsIGludDMyIDogaW50MzIgdFxuICB2YWwgaW50NjQgOiBpbnQ2NCB0XG4gIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICB2YWwgY2hhciA6IGNoYXIgdFxuICB2YWwgZmxvYXQgOiBmbG9hdCB0XG4gIHZhbCBzdHJpbmcgOiBzdHJpbmcgdFxuICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gIHZhbCBib29sIDogYm9vbCB0XG4gIHZhbCB1bml0IDogdW5pdCB0XG4gIHZhbCBvcHRpb24gOiAnYSB0IC0+ICdhIG9wdGlvbiB0XG4gIHZhbCBsaXN0IDogJ2EgdCAtPiAnYSBsaXN0IHRcbiAgdmFsIGFycmF5IDogJ2EgdCAtPiAnYSBhcnJheSB0XG4gIHZhbCBsYXp5X3QgOiAnYSB0IC0+ICdhIGxhenlfdCB0XG4gIHZhbCByZWZfIDogJ2EgdCAtPiAnYSByZWYgdFxuICB2YWwgZnVuY3Rpb25fIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAtPiAnYikgdFxuICB2YWwgdHVwbGUyIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB0dXBsZTMgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAoJ2EgKiAnYiAqICdjKSB0XG4gIHZhbCB0dXBsZTQgOiAnYSB0IC0+ICdiIHQgLT4gJ2MgdCAtPiAnZCB0IC0+ICgnYSAqICdiICogJ2MgKiAnZCkgdFxuICB2YWwgdHVwbGU1IDogJ2EgdCAtPiAnYiB0IC0+ICdjIHQgLT4gJ2QgdCAtPiAnZSB0IC0+ICgnYSAqICdiICogJ2MgKiAnZCAqICdlKSB0XG4gIHZhbCByZWNvcmQgOiAnYSBSZWNvcmQudCAtPiAnYSB0XG4gIHZhbCB2YXJpYW50IDogJ2EgVmFyaWFudC50IC0+ICdhIHRcblxuICBtb2R1bGUgTmFtZWQgOiBOYW1lZCB3aXRoIHR5cGUgJ2EgY29tcHV0YXRpb24gOj0gJ2EgdFxuZW5kXG5cbigqIHNwZWNpYWwgZnVuY3RvciBhcHBsaWNhdGlvbiBmb3IgY29tcHV0YXRpb24gYXMgY2xvc3VyZSBvZiB0aGUgZm9ybSBbYSAtPiBiXSAqKVxubW9kdWxlIE1ha2VfbmFtZWRfZm9yX2Nsb3N1cmUgKFggOiBzaWdcbiAgICB0eXBlICdhIGlucHV0XG4gICAgdHlwZSAnYSBvdXRwdXRcbiAgICB0eXBlICdhIHQgPSAnYSBpbnB1dCAtPiAnYSBvdXRwdXRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIENvbnRleHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSB1bml0XG5cbiAgICBsZXQgY3JlYXRlID0gaWdub3JlXG4gIGVuZFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBydW50aW1lX2RlcmVmZXJlbmNlIDogJ2EgWC50XG4gICAgOyBydW50aW1lX3JlZmVyZW5jZSA6ICdhIFgudCByZWZcbiAgICA7IGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIDogJ2EgWC50IG9wdGlvbiByZWZcbiAgICB9XG5cbiAgZXhjZXB0aW9uIFVuZGVmaW5lZCBvZiBzdHJpbmdcblxuICBsZXQgaW5pdCAoKSBuYW1lID1cbiAgICBsZXQgcGF0aCA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgbmFtZSkgaW5cbiAgICBsZXQgciA9IHJlZiAoZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZCBwYXRoKSkgaW5cbiAgICB7IHJ1bnRpbWVfZGVyZWZlcmVuY2UgPSAoZnVuIGlucHV0IC0+ICFyIGlucHV0KVxuICAgIDsgcnVudGltZV9yZWZlcmVuY2UgPSByXG4gICAgOyBjb21waWxldGltZV9kZXJlZmVyZW5jZSA9IHJlZiBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBnZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZCA9XG4gICAgbWF0Y2ggc2hhcmVkLmNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlLmNvbnRlbnRzIHdpdGhcbiAgICB8IFNvbWUgY2xvcyAtPiBjbG9zXG4gICAgfCBOb25lIC0+IHNoYXJlZC5ydW50aW1lX2RlcmVmZXJlbmNlXG4gIDs7XG5cbiAgbGV0IHNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24gPVxuICAgIGxldCBjb21waWxldGltZV9kZXJlZmVyZW5jZSA9IHNoYXJlZC5jb21waWxldGltZV9kZXJlZmVyZW5jZSBpblxuICAgIG1hdGNoIGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlLmNvbnRlbnRzIHdpdGhcbiAgICB8IFNvbWUgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IE5vbmUgLT5cbiAgICAgIGlmIEJhc2UucGh5c19lcXVhbCBzaGFyZWQucnVudGltZV9kZXJlZmVyZW5jZSBjb21wdXRhdGlvbiB0aGVuIGFzc2VydCBmYWxzZTtcbiAgICAgIGNvbXBpbGV0aW1lX2RlcmVmZXJlbmNlIDo9IFNvbWUgY29tcHV0YXRpb247XG4gICAgICBzaGFyZWQucnVudGltZV9yZWZlcmVuY2UgOj0gY29tcHV0YXRpb247XG4gICAgICBjb21wdXRhdGlvblxuICA7O1xuXG4gIGxldCBzaGFyZSBfID0gdHJ1ZVxuZW5kXG5cbm1vZHVsZSBJZGVudCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgaW1wbGVtZW50cyA6IFR5cGVuYW1lLlVpZC50IC0+IGJvb2xcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEJyb2tlbl9kZXBlbmRlbmN5IG9mIHN0cmluZ1xuXG4gIGxldCBjaGVja19kZXBlbmRlbmNpZXMgbmFtZSByZXF1aXJlZCA9XG4gICAgbWF0Y2ggcmVxdWlyZWQgd2l0aFxuICAgIHwgW10gLT4gZnVuIF8gLT4gKClcbiAgICB8IF8gLT5cbiAgICAgIGZ1biB1aWQgLT5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biB7IG5hbWUgPSBuYW1lJzsgaW1wbGVtZW50cyB9IC0+XG4gICAgICAgICAgICAgaWYgbm90IChpbXBsZW1lbnRzIHVpZClcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICgqIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoIHRoZSBzZXQgdXAsIHRoaXMgaXMgYW4gZXJyb3IgZHVyaW5nIHRoZVxuICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHByb2dyYW0sIHdlIHJhdGhlciBmYWlsIHdpdGggYSBodW1hblxuICAgICAgICAgICAgICAgICAgcmVhZGFibGUgb3V0cHV0ICopXG4gICAgICAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgXCJUeXBlX2dlbmVyaWMgJVMgcmVxdWlyZXMgJVMgZm9yIHVpZCAlU1xcblwiXG4gICAgICAgICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgICAgICAgIG5hbWUnXG4gICAgICAgICAgICAgICAgICAgKFR5cGVuYW1lLlVpZC5uYW1lIHVpZClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBwcmVycl9lbmRsaW5lIG1lc3NhZ2U7XG4gICAgICAgICAgICAgICByYWlzZSAoQnJva2VuX2RlcGVuZGVuY3kgbWVzc2FnZSkpKVxuICAgICAgICAgIHJlcXVpcmVkXG4gIDs7XG5lbmRcblxuKCogRXh0ZW5kaW5nIGFuIGV4aXN0aW5nIGdlbmVyaWMgKilcbm1vZHVsZSB0eXBlIEV4dGVuZGluZyA9IHNpZ1xuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBjb21wdXRhdGlvbiA9ICdhIHRcblxuICB2YWwgaWRlbnQgOiBJZGVudC50XG5cbiAgKCogZ2VuZXJpY19pZGVudCAqIHR5cGVuYW1lIG9yIGluZm8gKilcbiAgZXhjZXB0aW9uIE5vdF9pbXBsZW1lbnRlZCBvZiBzdHJpbmcgKiBzdHJpbmdcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGNvbXB1dGUgOiB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMxID0gc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBjb21wdXRlIDogJ2EgY29tcHV0YXRpb24gLT4gJ2EgdCBjb21wdXRhdGlvblxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgaW5jbHVkZSBUeXBlcmVwYWJsZS5TMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG5cbiAgICB2YWwgY29tcHV0ZSA6ICdhIGNvbXB1dGF0aW9uIC0+ICdiIGNvbXB1dGF0aW9uIC0+ICgnYSwgJ2IpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogICdhIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnYiBjb21wdXRhdGlvblxuICAgICAgLT4gJ2MgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM0ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIGluY2x1ZGUgVHlwZXJlcGFibGUuUzQgd2l0aCB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA6PSAoJ2EsICdiLCAnYywgJ2QpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZCBjb21wdXRhdGlvblxuICAgICAgLT4gKCdhLCAnYiwgJ2MsICdkKSB0IGNvbXB1dGF0aW9uXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFM1ID0gc2lnXG4gICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0XG5cbiAgICBpbmNsdWRlIFR5cGVyZXBhYmxlLlM1IHdpdGggdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHRcblxuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICAnYSBjb21wdXRhdGlvblxuICAgICAgLT4gJ2IgY29tcHV0YXRpb25cbiAgICAgIC0+ICdjIGNvbXB1dGF0aW9uXG4gICAgICAtPiAnZCBjb21wdXRhdGlvblxuICAgICAgLT4gJ2UgY29tcHV0YXRpb25cbiAgICAgIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgY29tcHV0YXRpb25cbiAgZW5kXG5cbiAgdmFsIHJlZ2lzdGVyMCA6IChtb2R1bGUgUykgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIxIDogKG1vZHVsZSBTMSkgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIyIDogKG1vZHVsZSBTMikgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXIzIDogKG1vZHVsZSBTMykgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXI0IDogKG1vZHVsZSBTNCkgLT4gdW5pdFxuICB2YWwgcmVnaXN0ZXI1IDogKG1vZHVsZSBTNSkgLT4gdW5pdFxuXG4gICgqIHNwZWNpYWwgbGVzcyBzY2FyeSB0eXBlIHdoZW4gdGhlIHR5cGUgaGFzIG5vIHBhcmFtZXRlcnMgKilcbiAgdmFsIHJlZ2lzdGVyIDogJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIC0+IHVuaXRcblxuICAoKlxuICAgICBFc3NlbnRpYWxseSBiZWNhdXNlIHdlIGNhbm5vdCB0YWxrIGFib3V0IGEgdmFyaWFibGUgb2Yga2luZCAqIC0+IGtcbiAgICAgdmFsIHJlZ2lzdGVyMSA6ICdhICd0IFR5cGVyZXAudCAtPiAoJ2EgY29tcHV0YXRpb24gLT4gJ2EgJ3QgY29tcHV0YXRpb24pIC0+IHVuaXRcbiAgICAgLi4uXG4gICopXG5lbmRcblxuKCogSW1wbGVtZW50aW5nIGEgbmV3IGdlbmVyaWMgKilcbm1vZHVsZSB0eXBlIFNfaW1wbGVtZW50YXRpb24gPSBzaWdcbiAgaW5jbHVkZSBFeHRlbmRpbmdcblxuICAoKiByYWlzZSB1c2luZyB0aGUgY3VycmVudCBpZGVudCAqKVxuICB2YWwgcmFpc2Vfbm90X2ltcGxlbWVudGVkIDogc3RyaW5nIC0+ICdhXG5cbiAgdHlwZSBpbXBsZW1lbnRhdGlvbiA9IHsgZ2VuZXJpYyA6ICdhLiAnYSBUeXBlcmVwLnQgLT4gJ2EgY29tcHV0YXRpb24gfVxuXG4gICgqXG4gICAgIFN0YW5kYXJkIGNhc2UsIGZpbmQgYSBleHRlbmRlZF9pbXBsZW1lbnRhdGlvbiwgb3IgbG9vayBpbiB0aGUgY29udGVudFxuICAqKVxuICB2YWwgX3VzaW5nX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uXG4gICAgOiAgaW1wbGVtZW50YXRpb25cbiAgICAtPiAnYSBUeXBlcmVwLk5hbWVkLnRcbiAgICAtPiAnYSBUeXBlcmVwLnQgbGF6eV90IG9wdGlvblxuICAgIC0+ICdhIGNvbXB1dGF0aW9uXG5cbiAgKCpcbiAgICAgVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IG1vcmUgY29udHJvbCBvbiB3aGF0IHlvdSB3YW50IHRvIGRvXG4gICopXG4gIHZhbCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uXG4gICAgOiAgaW1wbGVtZW50YXRpb25cbiAgICAtPiAnYSBUeXBlcmVwLk5hbWVkLnRcbiAgICAtPiAnYSBjb21wdXRhdGlvbiBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgRXh0ZW5kaW5nXG5cbiAgdmFsIG9mX3R5cGVyZXAgOiAnYSBUeXBlcmVwLnQgLT4gWyBgZ2VuZXJpYyBvZiAnYSBjb21wdXRhdGlvbiBdXG5cbiAgbW9kdWxlIENvbXB1dGF0aW9uIDogQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgPSAnYSB0XG5lbmRcblxubW9kdWxlIE1ha2VfU19pbXBsZW1lbnRhdGlvbiAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcbiAgZW5kKSA6IFNfaW1wbGVtZW50YXRpb24gd2l0aCB0eXBlICdhIHQgPSAnYSBYLnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgWC50XG4gIHR5cGUgJ2EgY29tcHV0YXRpb24gPSAnYSB0XG5cbiAgaW5jbHVkZSBUeXBlX2dlbmVyaWNfaW50Zi5NIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgZW5kKVxuXG4gICgqIHdlIGRvIG5vdCB1c2UgY29yZSBzaW5jZSB3ZSBhcmUgZWFybGllciBpbiB0aGUgZGVwZW5kZW5jaWVzIGdyYXBoICopXG4gIG1vZHVsZSBVaWRfdGFibGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuVWlkKVxuXG4gICAgbGV0IGZpbmQgdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICB0cnkgU29tZSAoZmluZCB0YWJsZSBrZXkpIHdpdGhcbiAgICAgICAgfCBCYXNlLk5vdF9mb3VuZF9zIF8gfCBDYW1sLk5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgZWxzZSBOb25lXG4gICAgOztcblxuICAgIGxldCBjaGVja19kZXBlbmRlbmNpZXMgPSBJZGVudC5jaGVja19kZXBlbmRlbmNpZXMgWC5uYW1lIFgucmVxdWlyZWRcblxuICAgIGxldCByZXBsYWNlIHRhYmxlIGtleSB2YWx1ZSA9XG4gICAgICBjaGVja19kZXBlbmRlbmNpZXMga2V5O1xuICAgICAgcmVwbGFjZSAoTGF6eS5mb3JjZSB0YWJsZSkga2V5IHZhbHVlXG4gICAgOztcblxuICAgIGxldCBtZW0gdGFibGUga2V5ID1cbiAgICAgIGlmIExhenkuaXNfdmFsIHRhYmxlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRhYmxlID0gTGF6eS5mb3JjZSB0YWJsZSBpblxuICAgICAgICBtZW0gdGFibGUga2V5KVxuICAgICAgZWxzZSBmYWxzZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzaXplID0gMjU2XG4gIGxldCB0YWJsZTAgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTEgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTIgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTMgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTQgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG4gIGxldCB0YWJsZTUgPSBsYXp5IChVaWRfdGFibGUuY3JlYXRlIHNpemUpXG5cbiAgbGV0IGlzX3JlZ2lzdGVyZWQgdWlkID1cbiAgICBVaWRfdGFibGUubWVtIHRhYmxlMCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMSB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMiB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlMyB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNCB1aWRcbiAgICB8fCBVaWRfdGFibGUubWVtIHRhYmxlNSB1aWRcbiAgOztcblxuICBsZXQgaWRlbnQgPSB7IElkZW50Lm5hbWUgPSBYLm5hbWU7IGltcGxlbWVudHMgPSBpc19yZWdpc3RlcmVkIH1cblxuICBtb2R1bGUgRmluZDAgKFQgOiBUeXBlcmVwLk5hbWVkLlQwKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlIDogdW5pdCAtPiBULm5hbWVkIGNvbXB1dGF0aW9uIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTAgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUyA9ICh2YWwgcmVwIDogUykgaW5cbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlbmFtZS5zYW1lX3dpdG5lc3NfZXhuIFMudHlwZW5hbWVfb2ZfdCBULnR5cGVuYW1lX29mX25hbWVkIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCB3aXRuZXNzKSBTLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQxIChUIDogVHlwZXJlcC5OYW1lZC5UMSkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZSA6IHVuaXQgLT4gKFQuYSBjb21wdXRhdGlvbiAtPiBULmEgVC5uYW1lZCBjb21wdXRhdGlvbikgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMSAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMSA9ICh2YWwgcmVwIDogUzEpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8xXG4gICAgICAgICAgICAoUzEpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgJ2EgdCA9ICdhIFQubmFtZWRcblxuICAgICAgICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFQudHlwZW5hbWVfb2ZfbmFtZWRcbiAgICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vZHVsZSBMID1cbiAgICAgICAgICBUeXBlX2VxdWFsLkxpZnQgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSAnYSB0ID0gVC5hIGNvbXB1dGF0aW9uIC0+ICdhIGNvbXB1dGF0aW9uXG4gICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBTb21lIChUeXBlX2VxdWFsLmNvbnYgKEwubGlmdCBDb252Lih3aXRuZXNzLmVxKSkgUzEuY29tcHV0ZSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRmluZDIgKFQgOiBUeXBlcmVwLk5hbWVkLlQyKSA6IHNpZ1xuICAgIHZhbCBjb21wdXRlXG4gICAgICA6ICB1bml0XG4gICAgICAtPiAoVC5hIGNvbXB1dGF0aW9uIC0+IFQuYiBjb21wdXRhdGlvbiAtPiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTIgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzIgPSAodmFsIHJlcCA6IFMyKSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fMlxuICAgICAgICAgICAgKFMyKVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9IFQuYSBjb21wdXRhdGlvbiAtPiBULmIgY29tcHV0YXRpb24gLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTMi5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kMyAoVCA6IFR5cGVyZXAuTmFtZWQuVDMpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYykgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgICAgb3B0aW9uXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBjb21wdXRlICgpID1cbiAgICAgIG1hdGNoIFVpZF90YWJsZS5maW5kIHRhYmxlMyAoVHlwZW5hbWUudWlkIFQudHlwZW5hbWVfb2ZfdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSByZXAgLT5cbiAgICAgICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgcmVwIDogUzMpIGluXG4gICAgICAgIGxldCBtb2R1bGUgQ29udiA9XG4gICAgICAgICAgVHlwZW5hbWUuU2FtZV93aXRuZXNzX2V4bl8zXG4gICAgICAgICAgICAoUzMpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb24gLT4gVC5iIGNvbXB1dGF0aW9uIC0+IFQuYyBjb21wdXRhdGlvbiAtPiAnYSBjb21wdXRhdGlvblxuICAgICAgICAgIGVuZClcbiAgICAgICAgaW5cbiAgICAgICAgU29tZSAoVHlwZV9lcXVhbC5jb252IChMLmxpZnQgQ29udi4od2l0bmVzcy5lcSkpIFMzLmNvbXB1dGUpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEZpbmQ0IChUIDogVHlwZXJlcC5OYW1lZC5UNCkgOiBzaWdcbiAgICB2YWwgY29tcHV0ZVxuICAgICAgOiAgdW5pdFxuICAgICAgLT4gKFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYiBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgIC0+IChULmEsIFQuYiwgVC5jLCBULmQpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTQgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzQgPSAodmFsIHJlcCA6IFM0KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNFxuICAgICAgICAgICAgKFM0KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdCA9ICgnYSwgJ2IsICdjLCAnZCkgVC5uYW1lZFxuXG4gICAgICAgICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVC50eXBlbmFtZV9vZl9uYW1lZFxuICAgICAgICAgICAgZW5kKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbW9kdWxlIEwgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuTGlmdCAoc3RydWN0XG4gICAgICAgICAgICB0eXBlICdhIHQgPVxuICAgICAgICAgICAgICBULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5iIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuYyBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNC5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBGaW5kNSAoVCA6IFR5cGVyZXAuTmFtZWQuVDUpIDogc2lnXG4gICAgdmFsIGNvbXB1dGVcbiAgICAgIDogIHVuaXRcbiAgICAgIC0+IChULmEgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmMgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmQgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAtPiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICBsZXQgY29tcHV0ZSAoKSA9XG4gICAgICBtYXRjaCBVaWRfdGFibGUuZmluZCB0YWJsZTUgKFR5cGVuYW1lLnVpZCBULnR5cGVuYW1lX29mX3QpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgcmVwIC0+XG4gICAgICAgIGxldCBtb2R1bGUgUzUgPSAodmFsIHJlcCA6IFM1KSBpblxuICAgICAgICBsZXQgbW9kdWxlIENvbnYgPVxuICAgICAgICAgIFR5cGVuYW1lLlNhbWVfd2l0bmVzc19leG5fNVxuICAgICAgICAgICAgKFM1KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHQgPSAoJ2EsICdiLCAnYywgJ2QsICdlKSBULm5hbWVkXG5cbiAgICAgICAgICAgICAgbGV0IHR5cGVuYW1lX29mX3QgPSBULnR5cGVuYW1lX29mX25hbWVkXG4gICAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBtb2R1bGUgTCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5MaWZ0IChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgICAgICAgIFQuYSBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmIgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gVC5jIGNvbXB1dGF0aW9uXG4gICAgICAgICAgICAgIC0+IFQuZCBjb21wdXRhdGlvblxuICAgICAgICAgICAgICAtPiBULmUgY29tcHV0YXRpb25cbiAgICAgICAgICAgICAgLT4gJ2EgY29tcHV0YXRpb25cbiAgICAgICAgICBlbmQpXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKFR5cGVfZXF1YWwuY29udiAoTC5saWZ0IENvbnYuKHdpdG5lc3MuZXEpKSBTNS5jb21wdXRlKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB1bml0ID0gVHlwZW5hbWUuc3RhdGljXG5cbiAgbGV0IHJlZ2lzdGVyMCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMgPSAodmFsIGNvbXB1dGUgOiBTKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgUy50eXBlbmFtZV9vZl90IGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUwIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyMSBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFMxID0gKHZhbCBjb21wdXRlIDogUzEpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzEudHlwZW5hbWVfb2ZfdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjIgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMiA9ICh2YWwgY29tcHV0ZSA6IFMyKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMyLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlMiB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjMgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTMyA9ICh2YWwgY29tcHV0ZSA6IFMzKSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFMzLnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQpIGluXG4gICAgVWlkX3RhYmxlLnJlcGxhY2UgdGFibGUzIHVpZCBjb21wdXRlXG4gIDs7XG5cbiAgbGV0IHJlZ2lzdGVyNCBjb21wdXRlID1cbiAgICBsZXQgbW9kdWxlIFM0ID0gKHZhbCBjb21wdXRlIDogUzQpIGluXG4gICAgbGV0IHVpZCA9IFR5cGVuYW1lLnVpZCAoUzQudHlwZW5hbWVfb2ZfdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNCB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlcjUgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTNSA9ICh2YWwgY29tcHV0ZSA6IFM1KSBpblxuICAgIGxldCB1aWQgPSBUeXBlbmFtZS51aWQgKFM1LnR5cGVuYW1lX29mX3QgdW5pdCB1bml0IHVuaXQgdW5pdCB1bml0KSBpblxuICAgIFVpZF90YWJsZS5yZXBsYWNlIHRhYmxlNSB1aWQgY29tcHV0ZVxuICA7O1xuXG4gIGxldCByZWdpc3RlciAodHlwZSBhKSB0eXBlcmVwX29mX2EgY29tcHV0ZSA9XG4gICAgbGV0IG1vZHVsZSBTID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IHR5cGVyZXBfb2ZfdCA9IHR5cGVyZXBfb2ZfYVxuICAgICAgbGV0IGNvbXB1dGUgPSBjb21wdXRlXG4gICAgZW5kXG4gICAgaW5cbiAgICByZWdpc3RlcjAgKG1vZHVsZSBTIDogUylcbiAgOztcblxuICAoKiBJTVBMRU1FTlRBVElPTiAqKVxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb24gPSB7IGdlbmVyaWMgOiAnYS4gJ2EgVHlwZXJlcC50IC0+ICdhIGNvbXB1dGF0aW9uIH1cblxuICBsZXQgZmluZF9leHRlbmRlZF9pbXBsZW1lbnRhdGlvbiAodHlwZSBhKSBhdXggPSBmdW5jdGlvblxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMCByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMCB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQwIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UMSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UMSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQxIChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID0gKGN1c3RvbSAoYXV4LmdlbmVyaWMgVC5hKSA6IFQuYSBULm5hbWVkIGNvbXB1dGF0aW9uKSBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDIgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDIgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMiAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgOiAoVC5hLCBULmIpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDMgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDMgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kMyAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYylcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgICB8IFR5cGVyZXAuTmFtZWQuVDQgcmVwIC0+XG4gICAgICBsZXQgbW9kdWxlIFQgPSAodmFsIHJlcCA6IFR5cGVyZXAuTmFtZWQuVDQgd2l0aCB0eXBlIHQgPSBhKSBpblxuICAgICAgbGV0IG1vZHVsZSBDdXN0b20gPSBGaW5kNCAoVCkgaW5cbiAgICAgIChtYXRjaCBDdXN0b20uY29tcHV0ZSAoKSB3aXRoXG4gICAgICAgfCBTb21lIGN1c3RvbSAtPlxuICAgICAgICAgbGV0IGN1c3RvbSA9XG4gICAgICAgICAgIChjdXN0b20gKGF1eC5nZW5lcmljIFQuYSkgKGF1eC5nZW5lcmljIFQuYikgKGF1eC5nZW5lcmljIFQuYykgKGF1eC5nZW5lcmljIFQuZClcbiAgICAgICAgICAgIDogKFQuYSwgVC5iLCBULmMsIFQuZCkgVC5uYW1lZCBjb21wdXRhdGlvbilcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgVHlwZV9lcXVhbC5UID0gVC53aXRuZXNzIGluXG4gICAgICAgICBTb21lIChjdXN0b20gOiBhIGNvbXB1dGF0aW9uKVxuICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICAgIHwgVHlwZXJlcC5OYW1lZC5UNSByZXAgLT5cbiAgICAgIGxldCBtb2R1bGUgVCA9ICh2YWwgcmVwIDogVHlwZXJlcC5OYW1lZC5UNSB3aXRoIHR5cGUgdCA9IGEpIGluXG4gICAgICBsZXQgbW9kdWxlIEN1c3RvbSA9IEZpbmQ1IChUKSBpblxuICAgICAgKG1hdGNoIEN1c3RvbS5jb21wdXRlICgpIHdpdGhcbiAgICAgICB8IFNvbWUgY3VzdG9tIC0+XG4gICAgICAgICBsZXQgY3VzdG9tID1cbiAgICAgICAgICAgKGN1c3RvbVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5hKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5iKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5jKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5kKVxuICAgICAgICAgICAgICAoYXV4LmdlbmVyaWMgVC5lKVxuICAgICAgICAgICAgOiAoVC5hLCBULmIsIFQuYywgVC5kLCBULmUpIFQubmFtZWQgY29tcHV0YXRpb24pXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9IFQud2l0bmVzcyBpblxuICAgICAgICAgU29tZSAoY3VzdG9tIDogYSBjb21wdXRhdGlvbilcbiAgICAgICB8IE5vbmUgLT4gTm9uZSlcbiAgOztcblxuICBleGNlcHRpb24gTm90X2ltcGxlbWVudGVkIG9mIHN0cmluZyAqIHN0cmluZ1xuXG4gIGxldCByYWlzZV9ub3RfaW1wbGVtZW50ZWQgc3RyaW5nID0gcmFpc2UgKE5vdF9pbXBsZW1lbnRlZCAoWC5uYW1lLCBzdHJpbmcpKVxuXG4gIGxldCBfdXNpbmdfZXh0ZW5kZWRfaW1wbGVtZW50YXRpb24gYXV4IHJlcCBjb250ZW50ID1cbiAgICBtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIGF1eCByZXAgd2l0aFxuICAgIHwgU29tZSBjb21wdXRhdGlvbiAtPiBjb21wdXRhdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIGNvbnRlbnQgd2l0aFxuICAgICAgIHwgU29tZSAobGF6eSBjb250ZW50KSAtPiBhdXguZ2VuZXJpYyBjb250ZW50XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgcmVwIGluXG4gICAgICAgICBsZXQgbmFtZSA9IFR5cGVuYW1lLlVpZC5uYW1lIChUeXBlbmFtZS51aWQgdHlwZW5hbWUpIGluXG4gICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgXyA9IEhhc2h0YmwuTWFrZSAoVHlwZW5hbWUuS2V5KVxuXG5tb2R1bGUgTWFrZSAoWCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICB2YWwgcmVxdWlyZWQgOiBJZGVudC50IGxpc3RcblxuICAgIGluY2x1ZGUgQ29tcHV0YXRpb24gd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQ29tcHV0YXRpb24gPSBYXG4gIGluY2x1ZGUgTWFrZV9TX2ltcGxlbWVudGF0aW9uIChYKVxuXG4gIG1vZHVsZSBNZW1vID0gVHlwZW5hbWUuVGFibGUgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgWC5OYW1lZC50XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIZWxwZXIgPSBIZWxwZXIgKFR5cGVyZXApIChDb21wdXRhdGlvbilcblxuICBsZXQgb2ZfdHlwZXJlcCByZXAgPVxuICAgIGxldCBjb250ZXh0ID0gWC5OYW1lZC5Db250ZXh0LmNyZWF0ZSAoKSBpblxuICAgIGxldCBtZW1vX3RhYmxlID0gTWVtby5jcmVhdGUgMzIgaW5cbiAgICBsZXQgcmVjIG9mX3R5cGVyZXAgOiB0eXBlIGEuIGEgVHlwZXJlcC50IC0+IGEgdCA9IGZ1bmN0aW9uXG4gICAgICB8IFR5cGVyZXAuSW50IC0+IFguaW50XG4gICAgICB8IFR5cGVyZXAuSW50MzIgLT4gWC5pbnQzMlxuICAgICAgfCBUeXBlcmVwLkludDY0IC0+IFguaW50NjRcbiAgICAgIHwgVHlwZXJlcC5OYXRpdmVpbnQgLT4gWC5uYXRpdmVpbnRcbiAgICAgIHwgVHlwZXJlcC5DaGFyIC0+IFguY2hhclxuICAgICAgfCBUeXBlcmVwLkZsb2F0IC0+IFguZmxvYXRcbiAgICAgIHwgVHlwZXJlcC5TdHJpbmcgLT4gWC5zdHJpbmdcbiAgICAgIHwgVHlwZXJlcC5CeXRlcyAtPiBYLmJ5dGVzXG4gICAgICB8IFR5cGVyZXAuQm9vbCAtPiBYLmJvb2xcbiAgICAgIHwgVHlwZXJlcC5Vbml0IC0+IFgudW5pdFxuICAgICAgfCBUeXBlcmVwLk9wdGlvbiByZXAgLT4gWC5vcHRpb24gKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxpc3QgcmVwIC0+IFgubGlzdCAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuQXJyYXkgcmVwIC0+IFguYXJyYXkgKG9mX3R5cGVyZXAgcmVwKVxuICAgICAgfCBUeXBlcmVwLkxhenkgcmVwIC0+IFgubGF6eV90IChvZl90eXBlcmVwIHJlcClcbiAgICAgIHwgVHlwZXJlcC5SZWYgcmVwIC0+IFgucmVmXyAob2ZfdHlwZXJlcCByZXApXG4gICAgICB8IFR5cGVyZXAuRnVuY3Rpb24gKGRvbSwgcm5nKSAtPiBYLmZ1bmN0aW9uXyAob2ZfdHlwZXJlcCBkb20pIChvZl90eXBlcmVwIHJuZylcbiAgICAgIHwgVHlwZXJlcC5UdXBsZSB0dXBsZSAtPlxuICAgICAgICAoKiBkbyBOT1Qgd3JpdGUgW1gudHVwbGUyIChvZl90eXBlcmVwIGEpIChvZl90eXBlcmVwIGIpXVxuICAgICAgICAgICBiZWNhdXNlIG9mX3R5cGVyZXAgY2FuIGNvbnRhaW4gYSBzaWRlIGVmZmVjdCBhbmQgW2FdIHNob3VsZCBiZSBleGVjdXRlZFxuICAgICAgICAgICBiZWZvcmUgW2JdICopXG4gICAgICAgIChtYXRjaCB0dXBsZSB3aXRoXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDIgKGEsIGIpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgWC50dXBsZTIgcmEgcmJcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UMyAoYSwgYiwgYykgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgWC50dXBsZTMgcmEgcmIgcmNcbiAgICAgICAgIHwgVHlwZXJlcC5UdXBsZS5UNCAoYSwgYiwgYywgZCkgLT5cbiAgICAgICAgICAgbGV0IHJhID0gb2ZfdHlwZXJlcCBhIGluXG4gICAgICAgICAgIGxldCByYiA9IG9mX3R5cGVyZXAgYiBpblxuICAgICAgICAgICBsZXQgcmMgPSBvZl90eXBlcmVwIGMgaW5cbiAgICAgICAgICAgbGV0IHJkID0gb2ZfdHlwZXJlcCBkIGluXG4gICAgICAgICAgIFgudHVwbGU0IHJhIHJiIHJjIHJkXG4gICAgICAgICB8IFR5cGVyZXAuVHVwbGUuVDUgKGEsIGIsIGMsIGQsIGUpIC0+XG4gICAgICAgICAgIGxldCByYSA9IG9mX3R5cGVyZXAgYSBpblxuICAgICAgICAgICBsZXQgcmIgPSBvZl90eXBlcmVwIGIgaW5cbiAgICAgICAgICAgbGV0IHJjID0gb2ZfdHlwZXJlcCBjIGluXG4gICAgICAgICAgIGxldCByZCA9IG9mX3R5cGVyZXAgZCBpblxuICAgICAgICAgICBsZXQgcmUgPSBvZl90eXBlcmVwIGUgaW5cbiAgICAgICAgICAgWC50dXBsZTUgcmEgcmIgcmMgcmQgcmUpXG4gICAgICB8IFR5cGVyZXAuUmVjb3JkIHJlY29yZCAtPlxuICAgICAgICBYLnJlY29yZCAoSGVscGVyLm1hcF9yZWNvcmQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHJlY29yZClcbiAgICAgIHwgVHlwZXJlcC5WYXJpYW50IHZhcmlhbnQgLT5cbiAgICAgICAgWC52YXJpYW50IChIZWxwZXIubWFwX3ZhcmlhbnQgeyBIZWxwZXIubWFwID0gb2ZfdHlwZXJlcCB9IHZhcmlhbnQpXG4gICAgICB8IFR5cGVyZXAuTmFtZWQgKG5hbWVkLCBjb250ZW50KSAtPlxuICAgICAgICBsZXQgdHlwZW5hbWUgPSBUeXBlcmVwLk5hbWVkLnR5cGVuYW1lX29mX3QgbmFtZWQgaW5cbiAgICAgICAgKG1hdGNoIE1lbW8uZmluZCBtZW1vX3RhYmxlIHR5cGVuYW1lIHdpdGhcbiAgICAgICAgIHwgU29tZSBzaGFyZWQgLT4gWC5OYW1lZC5nZXRfd2lwX2NvbXB1dGF0aW9uIHNoYXJlZFxuICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgIChtYXRjaCBmaW5kX2V4dGVuZGVkX2ltcGxlbWVudGF0aW9uIHsgZ2VuZXJpYyA9IG9mX3R5cGVyZXAgfSBuYW1lZCB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgY29tcHV0YXRpb24gLT4gY29tcHV0YXRpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY29udGVudCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBUeXBlbmFtZS5VaWQubmFtZSAoVHlwZW5hbWUudWlkIHR5cGVuYW1lKSBpblxuICAgICAgICAgICAgICAgICByYWlzZV9ub3RfaW1wbGVtZW50ZWQgbmFtZVxuICAgICAgICAgICAgICAgfCBTb21lIChsYXp5IGNvbnRlbnQpIC0+XG4gICAgICAgICAgICAgICAgIGlmIFguTmFtZWQuc2hhcmUgY29udGVudFxuICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgc2hhcmVkID0gWC5OYW1lZC5pbml0IGNvbnRleHQgdHlwZW5hbWUgaW5cbiAgICAgICAgICAgICAgICAgICBNZW1vLnNldCBtZW1vX3RhYmxlIHR5cGVuYW1lIHNoYXJlZDtcbiAgICAgICAgICAgICAgICAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIGNvbnRlbnQgaW5cbiAgICAgICAgICAgICAgICAgICBYLk5hbWVkLnNldF9maW5hbF9jb21wdXRhdGlvbiBzaGFyZWQgY29tcHV0YXRpb24pXG4gICAgICAgICAgICAgICAgIGVsc2Ugb2ZfdHlwZXJlcCBjb250ZW50KSkpXG4gICAgaW5cbiAgICBsZXQgY29tcHV0YXRpb24gPSBvZl90eXBlcmVwIHJlcCBpblxuICAgIGBnZW5lcmljIGNvbXB1dGF0aW9uXG4gIDs7XG5lbmRcbiIsIm9wZW4gU3RkX2ludGVybmFsXG5cbm1vZHVsZSBNYWtlMCAoWCA6IE5hbWVkX2ludGYuUzApID0gc3RydWN0XG4gIG1vZHVsZSBOYW1lX29mX3ggPSBUeXBlbmFtZS5NYWtlMCAoWClcblxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG5cbiAgbGV0IG5hbWVkID1cbiAgICBUeXBlcmVwLk5hbWVkLlQwXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlIG5hbWVkID0gWC50XG4gICAgICAgIHR5cGUgdCA9IFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMFxuICAgICAgICB3aXRoIHR5cGUgdCA9IFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTEgKFggOiBOYW1lZF9pbnRmLlMxKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTEgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSkgb2ZfcDEgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3QgKFR5cGVyZXAudHlwZW5hbWVfb2ZfdCBvZl9wMSkgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQxXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICdhIG5hbWVkID0gJ2EgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgdCA9IHAxIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMVxuICAgICAgICB3aXRoIHR5cGUgdCA9IHAxIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTIgKFggOiBOYW1lZF9pbnRmLlMyKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMikgb2ZfcDEgb2ZfcDIgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90IChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQyXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IpIG5hbWVkID0gKCdhLCAnYikgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UMlxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTMgKFggOiBOYW1lZF9pbnRmLlMzKSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMykgb2ZfcDEgb2ZfcDIgb2ZfcDMgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQzXG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjKSBuYW1lZCA9ICgnYSwgJ2IsICdjKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UM1xuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzKSBYLnQpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIE5hbWVfb2ZfeCA9IFR5cGVuYW1lLk1ha2U0IChYKVxuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTmFtZV9vZl94LnR5cGVuYW1lX29mX3RcblxuICBsZXQgbmFtZWQgKHR5cGUgcDEgcDIgcDMgcDQpIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9XG4gICAgICBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AxKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AyKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3AzKVxuICAgICAgICAoVHlwZXJlcC50eXBlbmFtZV9vZl90IG9mX3A0KVxuICAgIGluXG4gICAgVHlwZXJlcC5OYW1lZC5UNFxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkKSBYLnRcbiAgICAgICAgdHlwZSBhID0gcDFcblxuICAgICAgICBsZXQgYSA9IG9mX3AxXG5cbiAgICAgICAgdHlwZSBiID0gcDJcblxuICAgICAgICBsZXQgYiA9IG9mX3AyXG5cbiAgICAgICAgdHlwZSBjID0gcDNcblxuICAgICAgICBsZXQgYyA9IG9mX3AzXG5cbiAgICAgICAgdHlwZSBkID0gcDRcblxuICAgICAgICBsZXQgZCA9IG9mX3A0XG5cbiAgICAgICAgdHlwZSB0ID0gKHAxLCBwMiwgcDMsIHA0KSBYLnRcblxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfbmFtZWQgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX3RcbiAgICAgICAgbGV0IHdpdG5lc3MgPSBUeXBlX2VxdWFsLnJlZmxcbiAgICAgIGVuZCA6IFR5cGVyZXAuTmFtZWQuVDRcbiAgICAgICAgd2l0aCB0eXBlIHQgPSAocDEsIHAyLCBwMywgcDQpIFgudClcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZTUgKFggOiBOYW1lZF9pbnRmLlM1KSA9IHN0cnVjdFxuICBtb2R1bGUgTmFtZV9vZl94ID0gVHlwZW5hbWUuTWFrZTUgKFgpXG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBOYW1lX29mX3gudHlwZW5hbWVfb2ZfdFxuXG4gIGxldCBuYW1lZCAodHlwZSBwMSBwMiBwMyBwNCBwNSkgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIGxldCB0eXBlbmFtZV9vZl90ID1cbiAgICAgIE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDEpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDIpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDMpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDQpXG4gICAgICAgIChUeXBlcmVwLnR5cGVuYW1lX29mX3Qgb2ZfcDUpXG4gICAgaW5cbiAgICBUeXBlcmVwLk5hbWVkLlQ1XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIG5hbWVkID0gKCdhLCAnYiwgJ2MsICdkLCAnZSkgWC50XG4gICAgICAgIHR5cGUgYSA9IHAxXG5cbiAgICAgICAgbGV0IGEgPSBvZl9wMVxuXG4gICAgICAgIHR5cGUgYiA9IHAyXG5cbiAgICAgICAgbGV0IGIgPSBvZl9wMlxuXG4gICAgICAgIHR5cGUgYyA9IHAzXG5cbiAgICAgICAgbGV0IGMgPSBvZl9wM1xuXG4gICAgICAgIHR5cGUgZCA9IHA0XG5cbiAgICAgICAgbGV0IGQgPSBvZl9wNFxuXG4gICAgICAgIHR5cGUgZSA9IHA1XG5cbiAgICAgICAgbGV0IGUgPSBvZl9wNVxuXG4gICAgICAgIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudFxuXG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl9uYW1lZCA9IE5hbWVfb2ZfeC50eXBlbmFtZV9vZl90XG4gICAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gdHlwZW5hbWVfb2ZfdFxuICAgICAgICBsZXQgd2l0bmVzcyA9IFR5cGVfZXF1YWwucmVmbFxuICAgICAgZW5kIDogVHlwZXJlcC5OYW1lZC5UNVxuICAgICAgICB3aXRoIHR5cGUgdCA9IChwMSwgcDIsIHAzLCBwNCwgcDUpIFgudClcbiAgOztcbmVuZFxuIiwib3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIE1ha2UwIChYIDogTmFtZWRfaW50Zi5TMCkgOiBUeXBlcmVwYWJsZS5TIHdpdGggdHlwZSB0IDo9IFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTAgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UxIChYIDogTmFtZWRfaW50Zi5TMSkgOiBUeXBlcmVwYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2UxIChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgPSBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxLCBOb25lKVxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IE0udHlwZW5hbWVfb2ZfdFxuZW5kXG5cbm1vZHVsZSBNYWtlMiAoWCA6IE5hbWVkX2ludGYuUzIpIDogVHlwZXJlcGFibGUuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgWC50ID1cbnN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTIgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2UzIChYIDogTmFtZWRfaW50Zi5TMykgOlxuICBUeXBlcmVwYWJsZS5TMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIFgudCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE1ha2VfdHlwZW5hbWUuTWFrZTMgKFgpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCBvZl9wMSBvZl9wMiBvZl9wMyA9IFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMsIE5vbmUpXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U0IChYIDogTmFtZWRfaW50Zi5TNCkgOlxuICBUeXBlcmVwYWJsZS5TNCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkKSB0IDo9ICgnYSwgJ2IsICdjLCAnZCkgWC50ID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFrZV90eXBlbmFtZS5NYWtlNCAoWClcblxuICBsZXQgdHlwZXJlcF9vZl90IG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0ID1cbiAgICBUeXBlcmVwLk5hbWVkIChNLm5hbWVkIG9mX3AxIG9mX3AyIG9mX3AzIG9mX3A0LCBOb25lKVxuICA7O1xuXG4gIGxldCB0eXBlbmFtZV9vZl90ID0gTS50eXBlbmFtZV9vZl90XG5lbmRcblxubW9kdWxlIE1ha2U1IChYIDogTmFtZWRfaW50Zi5TNSkgOlxuICBUeXBlcmVwYWJsZS5TNSB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdCA6PSAoJ2EsICdiLCAnYywgJ2QsICdlKSBYLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSBNYWtlX3R5cGVuYW1lLk1ha2U1IChYKVxuXG4gIGxldCB0eXBlcmVwX29mX3Qgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUgPVxuICAgIFR5cGVyZXAuTmFtZWQgKE0ubmFtZWQgb2ZfcDEgb2ZfcDIgb2ZfcDMgb2ZfcDQgb2ZfcDUsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBNLnR5cGVuYW1lX29mX3RcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcblxubW9kdWxlIE5hbWUgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIGluY2x1ZGUgU2V4cGxpYjAuU2V4cGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCByZWxhdGl2ZV90byA6IGRpcjpzdHJpbmcgLT4gdCAtPiBzdHJpbmdcblxuICBpbmNsdWRlIElkZW50aWZpYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCByZWxhdGl2ZV90byB+ZGlyIHQgPVxuICAgIGlmIG5vdCAoU3RkbGliLkZpbGVuYW1lLmlzX3JlbGF0aXZlIHQpIHRoZW4gdCBlbHNlIFN0ZGxpYi5GaWxlbmFtZS5jb25jYXQgZGlyIHRcbiAgOztcbmVuZFxuXG5sZXQgaW5pdGlhbF9kaXIgPVxuICBsZXQgZGlyX29yX2Vycm9yID1cbiAgICBtYXRjaCBTdGRsaWIuU3lzLmdldGN3ZCAoKSB3aXRoXG4gICAgfCB2IC0+IGBPayB2XG4gICAgfCBleGNlcHRpb24gZXhuIC0+IGBFeG4gZXhuXG4gIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoIGRpcl9vcl9lcnJvciB3aXRoXG4gICAgfCBgT2sgdiAtPiB2XG4gICAgfCBgRXhuIGV4biAtPiByYWlzZSBleG5cbjs7XG5cbm1vZHVsZSBMb2NhdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGZpbGVuYW1lIDogTmFtZS50XG4gICAgICA7IGxpbmVfbnVtYmVyIDogaW50XG4gICAgICA7IGxpbmVfc3RhcnQgOiBpbnRcbiAgICAgIDsgc3RhcnRfcG9zIDogaW50XG4gICAgICA7IGVuZF9wb3MgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCBfID0gZnVuIChfIDogdCkgLT4gKClcblxuICAgIGxldCB0X29mX3NleHAgPVxuICAgICAgKGxldCBlcnJvcl9zb3VyY2VfXzAyNF8gPSBcImZpbGUubWwuTG9jYXRpb24uVC50XCIgaW5cbiAgICAgICBmdW5jdGlvblxuICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0IGZpZWxkX3NleHBzX18wMDNfIGFzIHNleHBfXzAwMl8gLT5cbiAgICAgICAgIGxldCBmaWxlbmFtZV9fMDA0XyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgbGluZV9udW1iZXJfXzAwNl8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIGxpbmVfc3RhcnRfXzAwOF8gPSBTdGRsaWIucmVmIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgYW5kIHN0YXJ0X3Bvc19fMDEwXyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgZW5kX3Bvc19fMDEyXyA9IFN0ZGxpYi5yZWYgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICBhbmQgZHVwbGljYXRlc19fMDE0XyA9IFN0ZGxpYi5yZWYgW11cbiAgICAgICAgIGFuZCBleHRyYV9fMDE1XyA9IFN0ZGxpYi5yZWYgW10gaW5cbiAgICAgICAgIGxldCByZWMgaXRlcl9fMDI1XyA9IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgU2V4cGxpYjAuU2V4cC5MaXN0XG4gICAgICAgICAgICAgICAoU2V4cGxpYjAuU2V4cC5BdG9tIGZpZWxkX25hbWVfXzAxNl9cbiAgICAgICAgICAgICAgICA6OiAoKFtdIHwgWyBfIF0pIGFzIF9maWVsZF9zZXhwc19fMDE4XykpXG4gICAgICAgICAgICAgOjogdGFpbF9fMDI2XyAtPlxuICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyAoKSA9XG4gICAgICAgICAgICAgICBtYXRjaCBfZmllbGRfc2V4cHNfXzAxOF8gd2l0aFxuICAgICAgICAgICAgICAgfCBbIHhfXzAyN18gXSAtPiB4X18wMjdfXG4gICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfb25seV9wYWlyc19leHBlY3RlZFxuICAgICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAgICAgIHNleHBfXzAwMl9cbiAgICAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChtYXRjaCBmaWVsZF9uYW1lX18wMTZfIHdpdGhcbiAgICAgICAgICAgICAgfCBcImZpbGVuYW1lXCIgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGZpbGVuYW1lX18wMDRfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAyM18gPSBOYW1lLnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgZmlsZW5hbWVfXzAwNF8gKFN0ZGxpYi5PcHRpb24uU29tZSBmdmFsdWVfXzAyM18pXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApXG4gICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzX18wMTRfXG4gICAgICAgICAgICAgICAgICAgICAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XykpXG4gICAgICAgICAgICAgIHwgXCJsaW5lX251bWJlclwiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBsaW5lX251bWJlcl9fMDA2XyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Ob25lIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IF9maWVsZF9zZXhwX18wMTdfID0gX2ZpZWxkX3NleHBfXzAxN18gKCkgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgZnZhbHVlX18wMjJfID0gaW50X29mX3NleHAgX2ZpZWxkX3NleHBfXzAxN18gaW5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGxpbmVfbnVtYmVyX18wMDZfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMjJfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IFwibGluZV9zdGFydFwiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBsaW5lX3N0YXJ0X18wMDhfIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLk5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgX2ZpZWxkX3NleHBfXzAxN18gPSBfZmllbGRfc2V4cF9fMDE3XyAoKSBpblxuICAgICAgICAgICAgICAgICAgIGxldCBmdmFsdWVfXzAyMV8gPSBpbnRfb2Zfc2V4cCBfZmllbGRfc2V4cF9fMDE3XyBpblxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9ICkgbGluZV9zdGFydF9fMDA4XyAoU3RkbGliLk9wdGlvbi5Tb21lIGZ2YWx1ZV9fMDIxXylcbiAgICAgICAgICAgICAgICAgfCBTdGRsaWIuT3B0aW9uLlNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgIFN0ZGxpYi4oIDo9IClcbiAgICAgICAgICAgICAgICAgICAgIGR1cGxpY2F0ZXNfXzAxNF9cbiAgICAgICAgICAgICAgICAgICAgIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKSlcbiAgICAgICAgICAgICAgfCBcInN0YXJ0X3Bvc1wiIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBzdGFydF9wb3NfXzAxMF8gd2l0aFxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyA9IF9maWVsZF9zZXhwX18wMTdfICgpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZV9fMDIwXyA9IGludF9vZl9zZXhwIF9maWVsZF9zZXhwX18wMTdfIGluXG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBzdGFydF9wb3NfXzAxMF8gKFN0ZGxpYi5PcHRpb24uU29tZSBmdmFsdWVfXzAyMF8pXG4gICAgICAgICAgICAgICAgIHwgU3RkbGliLk9wdGlvbi5Tb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApXG4gICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzX18wMTRfXG4gICAgICAgICAgICAgICAgICAgICAoZmllbGRfbmFtZV9fMDE2XyA6OiBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XykpXG4gICAgICAgICAgICAgIHwgXCJlbmRfcG9zXCIgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggU3RkbGliLiggISApIGVuZF9wb3NfXzAxMl8gd2l0aFxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBfZmllbGRfc2V4cF9fMDE3XyA9IF9maWVsZF9zZXhwX18wMTdfICgpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGZ2YWx1ZV9fMDE5XyA9IGludF9vZl9zZXhwIF9maWVsZF9zZXhwX18wMTdfIGluXG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKSBlbmRfcG9zX18wMTJfIChTdGRsaWIuT3B0aW9uLlNvbWUgZnZhbHVlX18wMTlfKVxuICAgICAgICAgICAgICAgICB8IFN0ZGxpYi5PcHRpb24uU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgU3RkbGliLiggOj0gKVxuICAgICAgICAgICAgICAgICAgICAgZHVwbGljYXRlc19fMDE0X1xuICAgICAgICAgICAgICAgICAgICAgKGZpZWxkX25hbWVfXzAxNl8gOjogU3RkbGliLiggISApIGR1cGxpY2F0ZXNfXzAxNF8pKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBpZiBTdGRsaWIuKCAhICkgU2V4cGxpYjAuU2V4cF9jb252LnJlY29yZF9jaGVja19leHRyYV9maWVsZHNcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBTdGRsaWIuKCA6PSApIGV4dHJhX18wMTVfIChmaWVsZF9uYW1lX18wMTZfIDo6IFN0ZGxpYi4oICEgKSBleHRyYV9fMDE1XylcbiAgICAgICAgICAgICAgICBlbHNlICgpKTtcbiAgICAgICAgICAgICBpdGVyX18wMjVfIHRhaWxfXzAyNl9cbiAgICAgICAgICAgfCAoKFNleHBsaWIwLlNleHAuQXRvbSBfIHwgU2V4cGxpYjAuU2V4cC5MaXN0IF8pIGFzIHNleHBfXzAwMl8pIDo6IF8gLT5cbiAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX29ubHlfcGFpcnNfZXhwZWN0ZWRcbiAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICBpblxuICAgICAgICAgaXRlcl9fMDI1XyBmaWVsZF9zZXhwc19fMDAzXztcbiAgICAgICAgIChtYXRjaCBTdGRsaWIuKCAhICkgZHVwbGljYXRlc19fMDE0XyB3aXRoXG4gICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfZHVwbGljYXRlX2ZpZWxkc1xuICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBkdXBsaWNhdGVzX18wMTRfKVxuICAgICAgICAgICAgICBzZXhwX18wMDJfXG4gICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgKG1hdGNoIFN0ZGxpYi4oICEgKSBleHRyYV9fMDE1XyB3aXRoXG4gICAgICAgICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgIFNleHBsaWIwLlNleHBfY29udl9lcnJvci5yZWNvcmRfZXh0cmFfZmllbGRzXG4gICAgICAgICAgICAgICAgIGVycm9yX3NvdXJjZV9fMDI0X1xuICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGV4dHJhX18wMTVfKVxuICAgICAgICAgICAgICAgICBzZXhwX18wMDJfXG4gICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAoIFN0ZGxpYi4oICEgKSBmaWxlbmFtZV9fMDA0X1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuKCAhICkgbGluZV9udW1iZXJfXzAwNl9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLiggISApIGxpbmVfc3RhcnRfXzAwOF9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLiggISApIHN0YXJ0X3Bvc19fMDEwX1xuICAgICAgICAgICAgICAgICAgLCBTdGRsaWIuKCAhICkgZW5kX3Bvc19fMDEyXyApXG4gICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgIHwgKCBTdGRsaWIuT3B0aW9uLlNvbWUgZmlsZW5hbWVfXzAwNV9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLk9wdGlvbi5Tb21lIGxpbmVfbnVtYmVyX18wMDdfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi5PcHRpb24uU29tZSBsaW5lX3N0YXJ0X18wMDlfXG4gICAgICAgICAgICAgICAgICAsIFN0ZGxpYi5PcHRpb24uU29tZSBzdGFydF9wb3NfXzAxMV9cbiAgICAgICAgICAgICAgICAgICwgU3RkbGliLk9wdGlvbi5Tb21lIGVuZF9wb3NfXzAxM18gKSAtPlxuICAgICAgICAgICAgICAgICAgeyBmaWxlbmFtZSA9IGZpbGVuYW1lX18wMDVfXG4gICAgICAgICAgICAgICAgICA7IGxpbmVfbnVtYmVyID0gbGluZV9udW1iZXJfXzAwN19cbiAgICAgICAgICAgICAgICAgIDsgbGluZV9zdGFydCA9IGxpbmVfc3RhcnRfXzAwOV9cbiAgICAgICAgICAgICAgICAgIDsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMTFfXG4gICAgICAgICAgICAgICAgICA7IGVuZF9wb3MgPSBlbmRfcG9zX18wMTNfXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX3VuZGVmaW5lZF9lbGVtZW50c1xuICAgICAgICAgICAgICAgICAgICBlcnJvcl9zb3VyY2VfXzAyNF9cbiAgICAgICAgICAgICAgICAgICAgc2V4cF9fMDAyX1xuICAgICAgICAgICAgICAgICAgICBbICggU2V4cGxpYjAuU2V4cF9jb252LiggPSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdGRsaWIuKCAhICkgZmlsZW5hbWVfXzAwNF8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICwgXCJmaWxlbmFtZVwiIClcbiAgICAgICAgICAgICAgICAgICAgOyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGxpbmVfbnVtYmVyX18wMDZfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwibGluZV9udW1iZXJcIiApXG4gICAgICAgICAgICAgICAgICAgIDsgKCBTZXhwbGliMC5TZXhwX2NvbnYuKCA9IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0ZGxpYi4oICEgKSBsaW5lX3N0YXJ0X18wMDhfKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTdGRsaWIuT3B0aW9uLk5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAsIFwibGluZV9zdGFydFwiIClcbiAgICAgICAgICAgICAgICAgICAgOyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIHN0YXJ0X3Bvc19fMDEwXylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkbGliLk9wdGlvbi5Ob25lXG4gICAgICAgICAgICAgICAgICAgICAgLCBcInN0YXJ0X3Bvc1wiIClcbiAgICAgICAgICAgICAgICAgICAgOyAoIFNleHBsaWIwLlNleHBfY29udi4oID0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU3RkbGliLiggISApIGVuZF9wb3NfXzAxMl8pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZGxpYi5PcHRpb24uTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICwgXCJlbmRfcG9zXCIgKVxuICAgICAgICAgICAgICAgICAgICBdKSkpXG4gICAgICAgfCBTZXhwbGliMC5TZXhwLkF0b20gXyBhcyBzZXhwX18wMDJfIC0+XG4gICAgICAgICBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3IucmVjb3JkX2xpc3RfaW5zdGVhZF9hdG9tIGVycm9yX3NvdXJjZV9fMDI0XyBzZXhwX18wMDJfXG4gICAgICAgICA6IFNleHBsaWIwLlNleHAudCAtPiB0KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IHRfb2Zfc2V4cFxuXG4gICAgbGV0IHNleHBfb2ZfdCA9XG4gICAgICAoZnVuIHsgZmlsZW5hbWUgPSBmaWxlbmFtZV9fMDI5X1xuICAgICAgICAgICA7IGxpbmVfbnVtYmVyID0gbGluZV9udW1iZXJfXzAzMV9cbiAgICAgICAgICAgOyBsaW5lX3N0YXJ0ID0gbGluZV9zdGFydF9fMDMzX1xuICAgICAgICAgICA7IHN0YXJ0X3BvcyA9IHN0YXJ0X3Bvc19fMDM1X1xuICAgICAgICAgICA7IGVuZF9wb3MgPSBlbmRfcG9zX18wMzdfXG4gICAgICAgICAgIH0gLT5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPSBbXSBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDM4XyA9IHNleHBfb2ZfaW50IGVuZF9wb3NfXzAzN18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJlbmRfcG9zXCI7IGFyZ19fMDM4XyBdIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzNl8gPSBzZXhwX29mX2ludCBzdGFydF9wb3NfXzAzNV8gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJzdGFydF9wb3NcIjsgYXJnX18wMzZfIF0gOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDM0XyA9IHNleHBfb2ZfaW50IGxpbmVfc3RhcnRfXzAzM18gaW5cbiAgICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsaW5lX3N0YXJ0XCI7IGFyZ19fMDM0XyBdIDo6IGJuZHNfXzAyOF9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJuZHNfXzAyOF8gPVxuICAgICAgICAgIGxldCBhcmdfXzAzMl8gPSBzZXhwX29mX2ludCBsaW5lX251bWJlcl9fMDMxXyBpblxuICAgICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImxpbmVfbnVtYmVyXCI7IGFyZ19fMDMyXyBdXG4gICAgICAgICAgOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm5kc19fMDI4XyA9XG4gICAgICAgICAgbGV0IGFyZ19fMDMwXyA9IE5hbWUuc2V4cF9vZl90IGZpbGVuYW1lX18wMjlfIGluXG4gICAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZmlsZW5hbWVcIjsgYXJnX18wMzBfIF0gOjogYm5kc19fMDI4X1xuICAgICAgICBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDI4X1xuICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuICAgIDs7XG5cbiAgICBsZXQgXyA9IHNleHBfb2ZfdFxuXG4gICAgbGV0IGNvbXBhcmUgPVxuICAgICAgKGZ1biBhX18wMzlfIGJfXzA0MF8gLT5cbiAgICAgICAgIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAzOV8gYl9fMDQwX1xuICAgICAgICAgdGhlbiAwXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbWF0Y2ggTmFtZS5jb21wYXJlIGFfXzAzOV8uZmlsZW5hbWUgYl9fMDQwXy5maWxlbmFtZSB3aXRoXG4gICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMzlfLmxpbmVfbnVtYmVyIGJfXzA0MF8ubGluZV9udW1iZXIgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICAobWF0Y2ggY29tcGFyZV9pbnQgYV9fMDM5Xy5saW5lX3N0YXJ0IGJfXzA0MF8ubGluZV9zdGFydCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlX2ludCBhX18wMzlfLnN0YXJ0X3BvcyBiX18wNDBfLnN0YXJ0X3BvcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgMCAtPiBjb21wYXJlX2ludCBhX18wMzlfLmVuZF9wb3MgYl9fMDQwXy5lbmRfcG9zXG4gICAgICAgICAgICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICAgICAgICB8IG4gLT4gbilcbiAgICAgICAgICAgICAgfCBuIC0+IG4pXG4gICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgICAgICA6IHQgLT4gdCAtPiBpbnQpXG4gICAgOztcblxuICAgIGxldCBfID0gY29tcGFyZVxuXG4gICAgW0BAQGVuZF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlIChUKVxuXG4gIGxldCBiZWdpbm5pbmdfb2ZfZmlsZSBmaWxlbmFtZSA9XG4gICAgeyBmaWxlbmFtZTsgbGluZV9udW1iZXIgPSAxOyBsaW5lX3N0YXJ0ID0gMDsgc3RhcnRfcG9zID0gMDsgZW5kX3BvcyA9IDAgfVxuICA7O1xuXG4gIGxldCBvZl9zb3VyY2VfY29kZV9wb3NpdGlvbiAocG9zIDogU291cmNlX2NvZGVfcG9zaXRpb24udCkgPVxuICAgIHsgZmlsZW5hbWUgPSBOYW1lLm9mX3N0cmluZyAoQ2FtbC5GaWxlbmFtZS5iYXNlbmFtZSBwb3MucG9zX2ZuYW1lKVxuICAgIDsgbGluZV9udW1iZXIgPSBwb3MucG9zX2xudW1cbiAgICA7IGxpbmVfc3RhcnQgPSBwb3MucG9zX2JvbFxuICAgIDsgc3RhcnRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgOyBlbmRfcG9zID0gcG9zLnBvc19jbnVtXG4gICAgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaWdlc3QgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mLCBjb21wYXJlXVxuXG4gIGluY2x1ZGUgc2lnXG4gICAgW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFNleHBsaWIwLlNleHAudFxuXG4gICAgaW5jbHVkZSBQcHhfY29tcGFyZV9saWIuQ29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2Zfc3RyaW5nIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG4gIGxldCBjb21wYXJlID0gKGNvbXBhcmVfc3RyaW5nIDogdCAtPiB0IC0+IGludClcbiAgbGV0IF8gPSBjb21wYXJlXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgdG9fc3RyaW5nIHQgPSB0XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgZXhwZWN0ZWRfbGVuZ3RoID0gMzIgaW5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHMgPD4gZXhwZWN0ZWRfbGVuZ3RoXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmcsIHVuZXhwZWN0ZWQgbGVuZ3RoXCI7XG4gICAgZm9yIGkgPSAwIHRvIGV4cGVjdGVkX2xlbmd0aCAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJzAnIC4uICc5JyB8ICdhJyAuLiAnZicgLT4gKClcbiAgICAgIHwgXyAtPiBpbnZhbGlkX2FyZyBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5GaWxlLkRpZ2VzdC5vZl9zdHJpbmdcIlxuICAgIGRvbmU7XG4gICAgc1xuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE5PVEU6XG4gICBJZiB0aGlzIGZpbGUgaXMgc3RyaW5nTGFiZWxzLm1saSwgcnVuIHRvb2xzL3N5bmNfc3RkbGliX2RvY3MgYWZ0ZXIgZWRpdGluZ1xuICAgaXQgdG8gZ2VuZXJhdGUgc3RyaW5nLm1saS5cblxuICAgSWYgdGhpcyBmaWxlIGlzIHN0cmluZy5tbGksIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IC0tIGVkaXRcbiAgIHN0cmluZ0xhYmVscy5tbGkgaW5zdGVhZC5cbiAqKVxuXG4oKiogU3RyaW5ncy5cblxuICAgIEEgc3RyaW5nIFtzXSBvZiBsZW5ndGggW25dIGlzIGFuIGluZGV4YWJsZSBhbmQgaW1tdXRhYmxlIHNlcXVlbmNlXG4gICAgb2YgW25dIGJ5dGVzLiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZXNlIGJ5dGVzIGFyZSByZWZlcnJlZCB0b1xuICAgIGFzIGNoYXJhY3RlcnMuXG5cbiAgICBUaGUgc2VtYW50aWNzIG9mIHN0cmluZyBmdW5jdGlvbnMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZlxuICAgIGluZGljZXMgYW5kIHBvc2l0aW9ucy4gVGhlc2UgYXJlIGRlcGljdGVkIGFuZCBkZXNjcmliZWRcbiAgICBhcyBmb2xsb3dzLlxuXG57dlxucG9zaXRpb25zICAwICAgMSAgIDIgICAzICAgNCAgICBuLTEgICAgblxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xuICBpbmRpY2VzICB8IDAgfCAxIHwgMiB8IDMgfCAuLi4gfCBuLTEgfFxuICAgICAgICAgICArLS0tKy0tLSstLS0rLS0tKyAgICAgKy0tLS0tK1xudn1cbiAgICB7dWxcbiAgICB7LSBBbiB7ZSBpbmRleH0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBcXFtbMF07W24tMV1cXF0uXG4gICAgICAgSXQgcmVwcmVzZW50cyB0aGUgW2lddGggYnl0ZSAoY2hhcmFjdGVyKSBvZiBbc10gd2hpY2ggY2FuIGJlXG4gICAgICAgYWNjZXNzZWQgdXNpbmcgdGhlIGNvbnN0YW50IHRpbWUgc3RyaW5nIGluZGV4aW5nIG9wZXJhdG9yXG4gICAgICAgW3MuW2ldXS59XG4gICAgey0gQSB7ZSBwb3NpdGlvbn0gW2ldIG9mIFtzXSBpcyBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZVxuICAgICAgIFxcW1swXTtbbl1cXF0uIEl0IHJlcHJlc2VudHMgZWl0aGVyIHRoZSBwb2ludCBhdCB0aGUgYmVnaW5uaW5nIG9mXG4gICAgICAgdGhlIHN0cmluZywgb3IgdGhlIHBvaW50IGJldHdlZW4gdHdvIGluZGljZXMsIG9yIHRoZSBwb2ludCBhdFxuICAgICAgIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gVGhlIFtpXXRoIGJ5dGUgaW5kZXggaXMgYmV0d2VlbiBwb3NpdGlvblxuICAgICAgIFtpXSBhbmQgW2krMV0ufX1cblxuICAgIFR3byBpbnRlZ2VycyBbc3RhcnRdIGFuZCBbbGVuXSBhcmUgc2FpZCB0byBkZWZpbmUgYSB7ZSB2YWxpZFxuICAgIHN1YnN0cmluZ30gb2YgW3NdIGlmIFtsZW4gPj0gMF0gYW5kIFtzdGFydF0sIFtzdGFydCtsZW5dIGFyZVxuICAgIHBvc2l0aW9ucyBvZiBbc10uXG5cbiAgICB7YiBVbmljb2RlIHRleHQufSBTdHJpbmdzIGJlaW5nIGFyYml0cmFyeSBzZXF1ZW5jZXMgb2YgYnl0ZXMsIHRoZXlcbiAgICBjYW4gaG9sZCBhbnkga2luZCBvZiB0ZXh0dWFsIGVuY29kaW5nLiBIb3dldmVyIHRoZSByZWNvbW1lbmRlZFxuICAgIGVuY29kaW5nIGZvciBzdG9yaW5nIFVuaWNvZGUgdGV4dCBpbiBPQ2FtbCBzdHJpbmdzIGlzIFVURi04LiBUaGlzXG4gICAgaXMgdGhlIGVuY29kaW5nIHVzZWQgYnkgVW5pY29kZSBlc2NhcGVzIGluIHN0cmluZyBsaXRlcmFscy4gRm9yXG4gICAgZXhhbXBsZSB0aGUgc3RyaW5nIFtcIlxcdXsxRjQyQn1cIl0gaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZVxuICAgIFVuaWNvZGUgY2hhcmFjdGVyIFUrMUY0MkIuXG5cbiAgICB7YiBQYXN0IG11dGFiaWxpdHkufSBCZWZvcmUgT0NhbWwgNC4wMiwgc3RyaW5ncyB1c2VkIHRvIGJlIG1vZGlmaWFibGUgaW5cbiAgICBwbGFjZSBsaWtlIHshQnl0ZXMudH0gbXV0YWJsZSBzZXF1ZW5jZXMgb2YgYnl0ZXMuXG4gICAgT0NhbWwgNCBoYWQgdmFyaW91cyBjb21waWxlciBmbGFncyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHN1cHBvcnQgdGhlXG4gICAgdHJhbnNpdGlvbiBwZXJpb2QgZnJvbSBtdXRhYmxlIHRvIGltbXV0YWJsZSBzdHJpbmdzLlxuICAgIFRob3NlIG9wdGlvbnMgYXJlIG5vIGxvbmdlciBhdmFpbGFibGUsIGFuZCBzdHJpbmdzIGFyZSBub3cgYWx3YXlzXG4gICAgaW1tdXRhYmxlLlxuXG4gICAgVGhlIGxhYmVsZWQgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZCBhcyBkZXNjcmliZWQgaW4gdGhlXG4gICAgeyFTdGRMYWJlbHN9IG1vZHVsZS5cbiopXG5cbigqKiB7MTpzdHJpbmdzIFN0cmluZ3N9ICopXG5cbnR5cGUgdCA9IHN0cmluZ1xuKCoqIFRoZSB0eXBlIGZvciBzdHJpbmdzLiAqKVxuXG52YWwgbWFrZSA6IGludCAtPiBjaGFyIC0+IHN0cmluZ1xuKCoqIFttYWtlIG4gY10gaXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFtuXSB3aXRoIGVhY2ggaW5kZXggaG9sZGluZyB0aGVcbiAgICBjaGFyYWN0ZXIgW2NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW24gPCAwXSBvciBbbiA+IF17IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0uICopXG5cbnZhbCBpbml0IDogaW50IC0+IChpbnQgLT4gY2hhcikgLT4gc3RyaW5nXG4oKiogW2luaXQgbiBmXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW25dIHdpdGggaW5kZXhcbiAgICBbaV0gaG9sZGluZyB0aGUgY2hhcmFjdGVyIFtmIGldIChjYWxsZWQgaW4gaW5jcmVhc2luZyBpbmRleCBvcmRlcikuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbbiA8IDBdIG9yIFtuID4gXXshU3lzLm1heF9zdHJpbmdfbGVuZ3RofS5cbiAgICBAc2luY2UgNC4wMi4wICopXG5cbnZhbCBlbXB0eSA6IHN0cmluZ1xuKCoqIFRoZSBlbXB0eSBzdHJpbmcuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgb2ZfYnl0ZXMgOiBieXRlcyAtPiBzdHJpbmdcbigqKiBSZXR1cm4gYSBuZXcgc3RyaW5nIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuIGJ5dGVcbiAgICBzZXF1ZW5jZS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCB0b19ieXRlcyA6IHN0cmluZyAtPiBieXRlc1xuKCoqIFJldHVybiBhIG5ldyBieXRlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdGhlIHNhbWUgYnl0ZXMgYXMgdGhlIGdpdmVuXG4gICAgc3RyaW5nLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuKCoqIFtsZW5ndGggc10gaXMgdGhlIGxlbmd0aCAobnVtYmVyIG9mIGJ5dGVzL2NoYXJhY3RlcnMpIG9mIFtzXS4gKilcblxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbigqKiBbZ2V0IHMgaV0gaXMgdGhlIGNoYXJhY3RlciBhdCBpbmRleCBbaV0gaW4gW3NdLiBUaGlzIGlzIHRoZSBzYW1lXG4gICAgYXMgd3JpdGluZyBbcy5baV1dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIG5vdCBhbiBpbmRleCBvZiBbc10uICopXG5cbigqKiB7MTpjb25jYXQgQ29uY2F0ZW5hdGluZ31cblxuICAgIHtiIE5vdGUufSBUaGUgeyFTdGRsaWIuKCBeICl9IGJpbmFyeSBvcGVyYXRvciBjb25jYXRlbmF0ZXMgdHdvXG4gICAgc3RyaW5ncy4gKilcblxudmFsIGNvbmNhdCA6IHN0cmluZyAtPiBzdHJpbmcgbGlzdCAtPiBzdHJpbmdcbigqKiBbY29uY2F0IHNlcCBzc10gY29uY2F0ZW5hdGVzIHRoZSBsaXN0IG9mIHN0cmluZ3MgW3NzXSwgaW5zZXJ0aW5nXG4gICAgdGhlIHNlcGFyYXRvciBzdHJpbmcgW3NlcF0gYmV0d2VlbiBlYWNoLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlIHJlc3VsdCBpcyBsb25nZXIgdGhhblxuICAgIHshU3lzLm1heF9zdHJpbmdfbGVuZ3RofSBieXRlcy4gKilcblxudmFsIGNhdCA6IHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW2NhdCBzMSBzMl0gY29uY2F0ZW5hdGVzIHMxIGFuZCBzMiAoW3MxIF4gczJdKS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIHRoZSByZXN1bHQgaXMgbG9uZ2VyIHRoYW5cbiAgICB7IVN5cy5tYXhfc3RyaW5nX2xlbmd0aH0gYnl0ZXMuXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG4oKiogezE6cHJlZGljYXRlcyBQcmVkaWNhdGVzIGFuZCBjb21wYXJpc29uc30gKilcblxudmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbigqKiBbZXF1YWwgczAgczFdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbczBdIGFuZCBbczFdIGFyZSBjaGFyYWN0ZXItd2lzZVxuICAgIGVxdWFsLlxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuKCoqIFtjb21wYXJlIHMwIHMxXSBzb3J0cyBbczBdIGFuZCBbczFdIGluIGxleGljb2dyYXBoaWNhbCBvcmRlci4gW2NvbXBhcmVdXG4gICAgYmVoYXZlcyBsaWtlIHshU3RkbGliLmNvbXBhcmV9IG9uIHN0cmluZ3MgYnV0IG1heSBiZSBtb3JlIGVmZmljaWVudC4gKilcblxudmFsIHN0YXJ0c193aXRoIDpcbiAgcHJlZml4ICgqIGNvbW1lbnQgdGh3YXJ0cyB0b29scy9zeW5jX3N0ZGxpYl9kb2NzICopIDpzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2xcbigqKiBbc3RhcnRzX3dpdGggXVt+cHJlZml4IHNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbc10gc3RhcnRzIHdpdGhcbiAgICBbcHJlZml4XS5cblxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGVuZHNfd2l0aCA6XG4gIHN1ZmZpeCAoKiBjb21tZW50IHRod2FydHMgdG9vbHMvc3luY19zdGRsaWJfZG9jcyAqKSA6c3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2VuZHNfd2l0aCBdW35zdWZmaXggc10gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtzXSBlbmRzIHdpdGggW3N1ZmZpeF0uXG5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCBjb250YWluc19mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGJvb2xcbigqKiBbY29udGFpbnNfZnJvbSBzIHN0YXJ0IGNdIGlzIFt0cnVlXSBpZiBhbmQgb25seSBpZiBbY10gYXBwZWFycyBpbiBbc11cbiAgICBhZnRlciBwb3NpdGlvbiBbc3RhcnRdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0YXJ0XSBpcyBub3QgYSB2YWxpZCBwb3NpdGlvbiBpbiBbc10uICopXG5cbnZhbCByY29udGFpbnNfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBib29sXG4oKiogW3Jjb250YWluc19mcm9tIHMgc3RvcCBjXSBpcyBbdHJ1ZV0gaWYgYW5kIG9ubHkgaWYgW2NdIGFwcGVhcnMgaW4gW3NdXG4gICAgYmVmb3JlIHBvc2l0aW9uIFtzdG9wKzFdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3N0b3AgPCAwXSBvciBbc3RvcCsxXSBpcyBub3QgYSB2YWxpZFxuICAgIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIGNvbnRhaW5zIDogc3RyaW5nIC0+IGNoYXIgLT4gYm9vbFxuKCoqIFtjb250YWlucyBzIGNdIGlzIHshU3RyaW5nLmNvbnRhaW5zX2Zyb219WyBzIDAgY10uICopXG5cbigqKiB7MTpleHRyYWN0IEV4dHJhY3Rpbmcgc3Vic3RyaW5nc30gKilcblxudmFsIHN1YiA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHN0cmluZ1xuKCoqIFtzdWIgcyBwb3MgbGVuXSBpcyBhIHN0cmluZyBvZiBsZW5ndGggW2xlbl0sIGNvbnRhaW5pbmcgdGhlXG4gICAgc3Vic3RyaW5nIG9mIFtzXSB0aGF0IHN0YXJ0cyBhdCBwb3NpdGlvbiBbcG9zXSBhbmQgaGFzIGxlbmd0aFxuICAgIFtsZW5dLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3Bvc10gYW5kIFtsZW5dIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZFxuICAgIHN1YnN0cmluZyBvZiBbc10uICopXG5cbnZhbCBzcGxpdF9vbl9jaGFyIDogY2hhciAtPiBzdHJpbmcgLT4gc3RyaW5nIGxpc3RcbigqKiBbc3BsaXRfb25fY2hhciBzZXAgc10gaXMgdGhlIGxpc3Qgb2YgYWxsIChwb3NzaWJseSBlbXB0eSlcbiAgICBzdWJzdHJpbmdzIG9mIFtzXSB0aGF0IGFyZSBkZWxpbWl0ZWQgYnkgdGhlIGNoYXJhY3RlciBbc2VwXS5cblxuICAgIFRoZSBmdW5jdGlvbidzIHJlc3VsdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzOlxuICAgIHt1bFxuICAgIHstIFRoZSBsaXN0IGlzIG5vdCBlbXB0eS59XG4gICAgey0gQ29uY2F0ZW5hdGluZyBpdHMgZWxlbWVudHMgdXNpbmcgW3NlcF0gYXMgYSBzZXBhcmF0b3IgcmV0dXJucyBhXG4gICAgICBzdHJpbmcgZXF1YWwgdG8gdGhlIGlucHV0IChbY29uY2F0IChtYWtlIDEgc2VwKVxuICAgICAgKHNwbGl0X29uX2NoYXIgc2VwIHMpID0gc10pLn1cbiAgICB7LSBObyBzdHJpbmcgaW4gdGhlIHJlc3VsdCBjb250YWlucyB0aGUgW3NlcF0gY2hhcmFjdGVyLn19XG5cbiAgICBAc2luY2UgNC4wNC4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhbnNmb3JtaW5nIFRyYW5zZm9ybWluZ30gKilcblxudmFsIG1hcCA6IChjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwIGYgc10gaXMgdGhlIHN0cmluZyByZXN1bHRpbmcgZnJvbSBhcHBseWluZyBbZl0gdG8gYWxsIHRoZVxuICAgIGNoYXJhY3RlcnMgb2YgW3NdIGluIGluY3JlYXNpbmcgb3JkZXIuXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbnZhbCBtYXBpIDogKGludCAtPiBjaGFyIC0+IGNoYXIpIC0+IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbWFwaSBmIHNdIGlzIGxpa2UgeyFtYXB9IGJ1dCB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciBpcyBhbHNvXG4gICAgcGFzc2VkIHRvIFtmXS5cblxuICAgIEBzaW5jZSA0LjAyLjAgKilcblxudmFsIGZvbGRfbGVmdCA6ICgnYSAtPiBjaGFyIC0+ICdhKSAtPiAnYSAtPiBzdHJpbmcgLT4gJ2FcbigqKiBbZm9sZF9sZWZ0IGYgeCBzXSBjb21wdXRlcyBbZiAoLi4uIChmIChmIHggcy5bMF0pIHMuWzFdKSAuLi4pIHMuW24tMV1dLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGZvbGRfcmlnaHQgOiAoY2hhciAtPiAnYSAtPiAnYSkgLT4gc3RyaW5nIC0+ICdhIC0+ICdhXG4oKiogW2ZvbGRfcmlnaHQgZiBzIHhdIGNvbXB1dGVzIFtmIHMuWzBdIChmIHMuWzFdICggLi4uIChmIHMuW24tMV0geCkgLi4uKSldLFxuICAgIHdoZXJlIFtuXSBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgW3NdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGZvcl9hbGwgOiAoY2hhciAtPiBib29sKSAtPiBzdHJpbmcgLT4gYm9vbFxuKCoqIFtmb3JfYWxsIHAgc10gY2hlY2tzIGlmIGFsbCBjaGFyYWN0ZXJzIGluIFtzXSBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgW3BdLlxuICAgIEBzaW5jZSA0LjEzLjAgKilcblxudmFsIGV4aXN0cyA6IChjaGFyIC0+IGJvb2wpIC0+IHN0cmluZyAtPiBib29sXG4oKiogW2V4aXN0cyBwIHNdIGNoZWNrcyBpZiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIG9mIFtzXSBzYXRpc2ZpZXMgdGhlIHByZWRpY2F0ZVxuICAgIFtwXS5cbiAgICBAc2luY2UgNC4xMy4wICopXG5cbnZhbCB0cmltIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt0cmltIHNdIGlzIFtzXSB3aXRob3V0IGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UuIFdoaXRlc3BhY2VcbiAgICBjaGFyYWN0ZXJzIGFyZTogWycgJ10sIFsnXFx4MEMnXSAoZm9ybSBmZWVkKSwgWydcXG4nXSwgWydcXHInXSwgYW5kIFsnXFx0J10uXG5cbiAgICBAc2luY2UgNC4wMC4wICopXG5cbnZhbCBlc2NhcGVkIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtlc2NhcGVkIHNdIGlzIFtzXSB3aXRoIHNwZWNpYWwgY2hhcmFjdGVycyByZXByZXNlbnRlZCBieSBlc2NhcGVcbiAgICBzZXF1ZW5jZXMsIGZvbGxvd2luZyB0aGUgbGV4aWNhbCBjb252ZW50aW9ucyBvZiBPQ2FtbC5cblxuICAgIEFsbCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIFVTLUFTQ0lJIHByaW50YWJsZSByYW5nZSBcXFsweDIwOzB4N0VcXF0gYXJlXG4gICAgZXNjYXBlZCwgYXMgd2VsbCBhcyBiYWNrc2xhc2ggKDB4MkYpIGFuZCBkb3VibGUtcXVvdGUgKDB4MjIpLlxuXG4gICAgVGhlIGZ1bmN0aW9uIHshU2NhbmYudW5lc2NhcGVkfSBpcyBhIGxlZnQgaW52ZXJzZSBvZiBbZXNjYXBlZF0sXG4gICAgaS5lLiBbU2NhbmYudW5lc2NhcGVkIChlc2NhcGVkIHMpID0gc10gZm9yIGFueSBzdHJpbmcgW3NdICh1bmxlc3NcbiAgICBbZXNjYXBlZCBzXSBmYWlscykuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGUgcmVzdWx0IGlzIGxvbmdlciB0aGFuXG4gICAgeyFTeXMubWF4X3N0cmluZ19sZW5ndGh9IGJ5dGVzLiAqKVxuXG52YWwgdXBwZXJjYXNlX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFt1cHBlcmNhc2VfYXNjaWkgc10gaXMgW3NdIHdpdGggYWxsIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgdHJhbnNsYXRlZCB0byB1cHBlcmNhc2UsIHVzaW5nIHRoZSBVUy1BU0NJSSBjaGFyYWN0ZXIgc2V0LlxuXG4gICAgQHNpbmNlIDQuMDMuMCAoNC4wNS4wIGluIFN0cmluZ0xhYmVscykgKilcblxudmFsIGxvd2VyY2FzZV9hc2NpaSA6IHN0cmluZyAtPiBzdHJpbmdcbigqKiBbbG93ZXJjYXNlX2FzY2lpIHNdIGlzIFtzXSB3aXRoIGFsbCB1cHBlcmNhc2UgbGV0dGVycyB0cmFuc2xhdGVkXG4gICAgdG8gbG93ZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCBjYXBpdGFsaXplX2FzY2lpIDogc3RyaW5nIC0+IHN0cmluZ1xuKCoqIFtjYXBpdGFsaXplX2FzY2lpIHNdIGlzIFtzXSB3aXRoIHRoZSBmaXJzdCBjaGFyYWN0ZXIgc2V0IHRvXG4gICAgdXBwZXJjYXNlLCB1c2luZyB0aGUgVVMtQVNDSUkgY2hhcmFjdGVyIHNldC5cblxuICAgIEBzaW5jZSA0LjAzLjAgKDQuMDUuMCBpbiBTdHJpbmdMYWJlbHMpICopXG5cbnZhbCB1bmNhcGl0YWxpemVfYXNjaWkgOiBzdHJpbmcgLT4gc3RyaW5nXG4oKiogW3VuY2FwaXRhbGl6ZV9hc2NpaSBzXSBpcyBbc10gd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIHNldCB0byBsb3dlcmNhc2UsXG4gICAgdXNpbmcgdGhlIFVTLUFTQ0lJIGNoYXJhY3RlciBzZXQuXG5cbiAgICBAc2luY2UgNC4wMy4wICg0LjA1LjAgaW4gU3RyaW5nTGFiZWxzKSAqKVxuXG4oKiogezE6dHJhdmVyc2luZyBUcmF2ZXJzaW5nfSAqKVxuXG52YWwgaXRlciA6IChjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXIgZiBzXSBhcHBsaWVzIGZ1bmN0aW9uIFtmXSBpbiB0dXJuIHRvIGFsbCB0aGUgY2hhcmFjdGVycyBvZiBbc10uXG4gICAgSXQgaXMgZXF1aXZhbGVudCB0byBbZiBzLlswXTsgZiBzLlsxXTsgLi4uOyBmIHMuW2xlbmd0aCBzIC0gMV07ICgpXS4gKilcblxudmFsIGl0ZXJpIDogKGludCAtPiBjaGFyIC0+IHVuaXQpIC0+IHN0cmluZyAtPiB1bml0XG4oKiogW2l0ZXJpXSBpcyBsaWtlIHshaXRlcn0sIGJ1dCB0aGUgZnVuY3Rpb24gaXMgYWxzbyBnaXZlbiB0aGVcbiAgICBjb3JyZXNwb25kaW5nIGNoYXJhY3RlciBpbmRleC5cblxuICAgIEBzaW5jZSA0LjAwLjAgKilcblxuKCoqIHsxOnNlYXJjaGluZyBTZWFyY2hpbmd9ICopXG5cbnZhbCBpbmRleF9mcm9tIDogc3RyaW5nIC0+IGludCAtPiBjaGFyIC0+IGludFxuKCoqIFtpbmRleF9mcm9tIHMgaSBjXSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgW2NdIGluXG4gICAgW3NdIGFmdGVyIHBvc2l0aW9uIFtpXS5cblxuICAgIEByYWlzZSBOb3RfZm91bmQgaWYgW2NdIGRvZXMgbm90IG9jY3VyIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0uXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW2ldIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxuXG52YWwgaW5kZXhfZnJvbV9vcHQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIFtjXVxuICAgIGluIFtzXSBhZnRlciBwb3NpdGlvbiBbaV0gKGlmIGFueSkuXG5cbiAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiBbaV0gaXMgbm90IGEgdmFsaWQgcG9zaXRpb24gaW4gW3NdLlxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXhfZnJvbSA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4X2Zyb20gcyBpIGNdIGlzIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mIFtjXSBpblxuICAgIFtzXSBiZWZvcmUgcG9zaXRpb24gW2krMV0uXG5cbiAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIFtjXSBkb2VzIG5vdCBvY2N1ciBpbiBbc10gYmVmb3JlIHBvc2l0aW9uIFtpKzFdLlxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS4gKilcblxudmFsIHJpbmRleF9mcm9tX29wdCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciAtPiBpbnQgb3B0aW9uXG4oKiogW3JpbmRleF9mcm9tX29wdCBzIGkgY10gaXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgW2NdXG4gICAgaW4gW3NdIGJlZm9yZSBwb3NpdGlvbiBbaSsxXSAoaWYgYW55KS5cblxuICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtpKzFdIGlzIG5vdCBhIHZhbGlkIHBvc2l0aW9uIGluIFtzXS5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG52YWwgaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbaW5kZXggcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tfVsgcyAwIGNdLiAqKVxuXG52YWwgaW5kZXhfb3B0IDogc3RyaW5nIC0+IGNoYXIgLT4gaW50IG9wdGlvblxuKCoqIFtpbmRleF9vcHQgcyBjXSBpcyB7IVN0cmluZy5pbmRleF9mcm9tX29wdH1bIHMgMCBjXS5cblxuICAgIEBzaW5jZSA0LjA1ICopXG5cbnZhbCByaW5kZXggOiBzdHJpbmcgLT4gY2hhciAtPiBpbnRcbigqKiBbcmluZGV4IHMgY10gaXMgeyFTdHJpbmcucmluZGV4X2Zyb219WyBzIChsZW5ndGggcyAtIDEpIGNdLiAqKVxuXG52YWwgcmluZGV4X29wdCA6IHN0cmluZyAtPiBjaGFyIC0+IGludCBvcHRpb25cbigqKiBbcmluZGV4X29wdCBzIGNdIGlzIHshU3RyaW5nLnJpbmRleF9mcm9tX29wdH1bIHMgKGxlbmd0aCBzIC0gMSkgY10uXG5cbiAgICBAc2luY2UgNC4wNSAqKVxuXG4oKiogezEgU3RyaW5ncyBhbmQgU2VxdWVuY2VzfSAqKVxuXG52YWwgdG9fc2VxIDogdCAtPiBjaGFyIFNlcS50XG4oKiogW3RvX3NlcSBzXSBpcyBhIHNlcXVlbmNlIG1hZGUgb2YgdGhlIHN0cmluZydzIGNoYXJhY3RlcnMgaW5cbiAgICBpbmNyZWFzaW5nIG9yZGVyLiBJbiBbXCJ1bnNhZmUtc3RyaW5nXCJdIG1vZGUsIG1vZGlmaWNhdGlvbnMgb2YgdGhlIHN0cmluZ1xuICAgIGR1cmluZyBpdGVyYXRpb24gd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIHNlcXVlbmNlLlxuXG4gICAgQHNpbmNlIDQuMDcgKilcblxudmFsIHRvX3NlcWkgOiB0IC0+IChpbnQgKiBjaGFyKSBTZXEudFxuKCoqIFt0b19zZXFpIHNdIGlzIGxpa2UgeyF0b19zZXF9IGJ1dCBhbHNvIHR1cGxlcyB0aGUgY29ycmVzcG9uZGluZyBpbmRleC5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbnZhbCBvZl9zZXEgOiBjaGFyIFNlcS50IC0+IHRcbigqKiBbb2Zfc2VxIHNdIGlzIGEgc3RyaW5nIG1hZGUgb2YgdGhlIHNlcXVlbmNlJ3MgY2hhcmFjdGVycy5cblxuICAgIEBzaW5jZSA0LjA3ICopXG5cbigqKiB7MTp1dGYgVVRGIGRlY29kaW5nIGFuZCB2YWxpZGF0aW9uc31cblxuICAgIEBzaW5jZSA0LjE0ICopXG5cbigqKiB7Mjp1dGZfOCBVVEYtOH0gKilcblxudmFsIGdldF91dGZfOF91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl84X3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtOCBjaGFyYWN0ZXIgYXQgaW5kZXggW2ldIGluXG4gICAgW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzggOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzggYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi04IGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZiZSBVVEYtMTZCRX0gKilcblxudmFsIGdldF91dGZfMTZiZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmJlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZCRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2YmUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2YmUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkJFIGRhdGEuICopXG5cbigqKiB7Mjp1dGZfMTZsZSBVVEYtMTZMRX0gKilcblxudmFsIGdldF91dGZfMTZsZV91Y2hhciA6IHQgLT4gaW50IC0+IFVjaGFyLnV0Zl9kZWNvZGVcbigqKiBbZ2V0X3V0Zl8xNmxlX3VjaGFyIGIgaV0gZGVjb2RlcyBhbiBVVEYtMTZMRSBjaGFyYWN0ZXIgYXQgaW5kZXhcbiAgICBbaV0gaW4gW2JdLiAqKVxuXG52YWwgaXNfdmFsaWRfdXRmXzE2bGUgOiB0IC0+IGJvb2xcbigqKiBbaXNfdmFsaWRfdXRmXzE2bGUgYl0gaXMgW3RydWVdIGlmIGFuZCBvbmx5IGlmIFtiXSBjb250YWlucyB2YWxpZFxuICAgIFVURi0xNkxFIGRhdGEuICopXG5cbnZhbCBibGl0IDpcbiAgc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbigqKiBbYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5dIGNvcGllcyBbbGVuXSBieXRlc1xuICAgIGZyb20gdGhlIHN0cmluZyBbc3JjXSwgc3RhcnRpbmcgYXQgaW5kZXggW3NyY19wb3NdLFxuICAgIHRvIGJ5dGUgc2VxdWVuY2UgW2RzdF0sIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBudW1iZXIgW2RzdF9wb3NdLlxuXG4gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgW3NyY19wb3NdIGFuZCBbbGVuXSBkbyBub3RcbiAgICBkZXNpZ25hdGUgYSB2YWxpZCByYW5nZSBvZiBbc3JjXSwgb3IgaWYgW2RzdF9wb3NdIGFuZCBbbGVuXVxuICAgIGRvIG5vdCBkZXNpZ25hdGUgYSB2YWxpZCByYW5nZSBvZiBbZHN0XS4gKilcblxuKCoqIHsxIEJpbmFyeSBkZWNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuKCoqIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGJpbmFyeSBkZWNvZGUgaW50ZWdlcnMgZnJvbSBzdHJpbmdzLlxuXG4gICAgQWxsIGZvbGxvd2luZyBmdW5jdGlvbnMgcmFpc2UgW0ludmFsaWRfYXJndW1lbnRdIGlmIHRoZSBjaGFyYWN0ZXJzXG4gICAgbmVlZGVkIGF0IGluZGV4IFtpXSB0byBkZWNvZGUgdGhlIGludGVnZXIgYXJlIG5vdCBhdmFpbGFibGUuXG5cbiAgICBMaXR0bGUtZW5kaWFuIChyZXNwLiBiaWctZW5kaWFuKSBlbmNvZGluZyBtZWFucyB0aGF0IGxlYXN0XG4gICAgKHJlc3AuIG1vc3QpIHNpZ25pZmljYW50IGJ5dGVzIGFyZSBzdG9yZWQgZmlyc3QuICBCaWctZW5kaWFuIGlzXG4gICAgYWxzbyBrbm93biBhcyBuZXR3b3JrIGJ5dGUgb3JkZXIuICBOYXRpdmUtZW5kaWFuIGVuY29kaW5nIGlzXG4gICAgZWl0aGVyIGxpdHRsZS1lbmRpYW4gb3IgYmlnLWVuZGlhbiBkZXBlbmRpbmcgb24geyFTeXMuYmlnX2VuZGlhbn0uXG5cbiAgICAzMi1iaXQgYW5kIDY0LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnQzMl0gYW5kXG4gICAgW2ludDY0XSB0eXBlcywgd2hpY2ggY2FuIGJlIGludGVycHJldGVkIGVpdGhlciBhcyBzaWduZWQgb3JcbiAgICB1bnNpZ25lZCBudW1iZXJzLlxuXG4gICAgOC1iaXQgYW5kIDE2LWJpdCBpbnRlZ2VycyBhcmUgcmVwcmVzZW50ZWQgYnkgdGhlIFtpbnRdIHR5cGUsXG4gICAgd2hpY2ggaGFzIG1vcmUgYml0cyB0aGFuIHRoZSBiaW5hcnkgZW5jb2RpbmcuICBUaGVzZSBleHRyYSBiaXRzXG4gICAgYXJlIHNpZ24tZXh0ZW5kZWQgKG9yIHplcm8tZXh0ZW5kZWQpIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVjb2RlIDgtYml0XG4gICAgb3IgMTYtYml0IGludGVnZXJzIGFuZCByZXByZXNlbnRlZCB0aGVtIHdpdGggW2ludF0gdmFsdWVzLlxuKilcblxudmFsIGdldF91aW50OCA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50OCBiIGldIGlzIFtiXSdzIHVuc2lnbmVkIDgtYml0IGludGVnZXIgc3RhcnRpbmcgYXQgY2hhcmFjdGVyXG4gICAgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ4IDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDggYiBpXSBpcyBbYl0ncyBzaWduZWQgOC1iaXQgaW50ZWdlciBzdGFydGluZyBhdCBjaGFyYWN0ZXJcbiAgICBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X3VpbnQxNl9uZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF91aW50MTZfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIHVuc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfdWludDE2X2JlIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X3VpbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gdW5zaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF91aW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfdWludDE2X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnRcbigqKiBbZ2V0X2ludDE2X25lIGIgaV0gaXMgW2JdJ3MgbmF0aXZlLWVuZGlhbiBzaWduZWQgMTYtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQxNl9iZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50XG4oKiogW2dldF9pbnQxNl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gc2lnbmVkIDE2LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50MTZfbGUgOiBzdHJpbmcgLT4gaW50IC0+IGludFxuKCoqIFtnZXRfaW50MTZfbGUgYiBpXSBpcyBbYl0ncyBsaXR0bGUtZW5kaWFuIHNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDMyX25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQzMlxuKCoqIFtnZXRfaW50MzJfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBoYXNoIDogdCAtPiBpbnRcbigqKiBBbiB1bnNlZWRlZCBoYXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzLCB3aXRoIHRoZSBzYW1lIG91dHB1dCB2YWx1ZSBhc1xuICAgIHshSGFzaHRibC5oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50XG4gICAgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2V9LlxuXG4gICAgQHNpbmNlIDUuMC4wICopXG5cbnZhbCBzZWVkZWRfaGFzaCA6IGludCAtPiB0IC0+IGludFxuKCoqIEEgc2VlZGVkIGhhc2ggZnVuY3Rpb24gZm9yIHN0cmluZ3MsIHdpdGggdGhlIHNhbWUgb3V0cHV0IHZhbHVlIGFzXG4gICAgeyFIYXNodGJsLnNlZWRlZF9oYXNofS4gVGhpcyBmdW5jdGlvbiBhbGxvd3MgdGhpcyBtb2R1bGUgdG8gYmUgcGFzc2VkIGFzXG4gICAgYXJndW1lbnQgdG8gdGhlIGZ1bmN0b3IgeyFIYXNodGJsLk1ha2VTZWVkZWR9LlxuXG4gICAgQHNpbmNlIDUuMC4wICopXG5cbnZhbCBnZXRfaW50MzJfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyXG4oKiogW2dldF9pbnQzMl9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gMzItYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQzMl9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50MzJcbigqKiBbZ2V0X2ludDMyX2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiAzMi1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NFxuKCoqIFtnZXRfaW50NjRfbmUgYiBpXSBpcyBbYl0ncyBuYXRpdmUtZW5kaWFuIDY0LWJpdCBpbnRlZ2VyXG4gICAgc3RhcnRpbmcgYXQgY2hhcmFjdGVyIGluZGV4IFtpXS5cblxuICAgIEBzaW5jZSA0LjEzLjBcbiopXG5cbnZhbCBnZXRfaW50NjRfYmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDY0XG4oKiogW2dldF9pbnQ2NF9iZSBiIGldIGlzIFtiXSdzIGJpZy1lbmRpYW4gNjQtYml0IGludGVnZXJcbiAgICBzdGFydGluZyBhdCBjaGFyYWN0ZXIgaW5kZXggW2ldLlxuXG4gICAgQHNpbmNlIDQuMTMuMFxuKilcblxudmFsIGdldF9pbnQ2NF9sZSA6IHN0cmluZyAtPiBpbnQgLT4gaW50NjRcbigqKiBbZ2V0X2ludDY0X2xlIGIgaV0gaXMgW2JdJ3MgbGl0dGxlLWVuZGlhbiA2NC1iaXQgaW50ZWdlclxuICAgIHN0YXJ0aW5nIGF0IGNoYXJhY3RlciBpbmRleCBbaV0uXG5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG4oKiovKiopXG5cbigqIFRoZSBmb2xsb3dpbmcgaXMgZm9yIHN5c3RlbSB1c2Ugb25seS4gRG8gbm90IGNhbGwgZGlyZWN0bHkuICopXG5cbmV4dGVybmFsIHVuc2FmZV9nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6XG4gIHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPlxuICAgIHVuaXQgPSBcImNhbWxfYmxpdF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuIiwib3BlbiEgQmFzZVxub3BlbiBJbXBvcnRcbm9wZW4gUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbm9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cbm1vZHVsZSBCb2R5ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBFeGFjdCBvZiBzdHJpbmdcbiAgICB8IE91dHB1dFxuICAgIHwgUHJldHR5IG9mICdhXG4gICAgfCBVbnJlYWNoYWJsZVxuICBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiAnYSB0KSAtPiAoKVxuXG4gIGxldCBzZXhwX29mX3QgOiAnYS4gKCdhIC0+IFNleHBsaWIwLlNleHAudCkgLT4gJ2EgdCAtPiBTZXhwbGliMC5TZXhwLnQgPVxuICAgIGZ1biAodHlwZSBhX18wMDZfKSA6ICgoYV9fMDA2XyAtPiBTZXhwbGliMC5TZXhwLnQpIC0+IGFfXzAwNl8gdCAtPiBTZXhwbGliMC5TZXhwLnQpIC0+XG4gICAgZnVuIF9vZl9hX18wMDFfIC0+IGZ1bmN0aW9uXG4gICAgICB8IEV4YWN0IGFyZzBfXzAwMl8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwM18gPSBzZXhwX29mX3N0cmluZyBhcmcwX18wMDJfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIkV4YWN0XCI7IHJlczBfXzAwM18gXVxuICAgICAgfCBPdXRwdXQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiT3V0cHV0XCJcbiAgICAgIHwgUHJldHR5IGFyZzBfXzAwNF8gLT5cbiAgICAgICAgbGV0IHJlczBfXzAwNV8gPSBfb2ZfYV9fMDAxXyBhcmcwX18wMDRfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIlByZXR0eVwiOyByZXMwX18wMDVfIF1cbiAgICAgIHwgVW5yZWFjaGFibGUgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiVW5yZWFjaGFibGVcIlxuICA7O1xuXG4gIGxldCBfID0gc2V4cF9vZl90XG5cbiAgbGV0IGNvbXBhcmUgOiAnYS4gKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludCA9XG4gICAgZnVuIF9jbXBfX2EgYV9fMDA3XyBiX18wMDhfIC0+XG4gICAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDA3XyBiX18wMDhfXG4gICAgdGhlbiAwXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBhX18wMDdfLCBiX18wMDhfIHdpdGhcbiAgICAgIHwgRXhhY3QgX2FfXzAwOV8sIEV4YWN0IF9iX18wMTBfIC0+IGNvbXBhcmVfc3RyaW5nIF9hX18wMDlfIF9iX18wMTBfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgRXhhY3QgXyAtPiAxXG4gICAgICB8IE91dHB1dCwgT3V0cHV0IC0+IDBcbiAgICAgIHwgT3V0cHV0LCBfIC0+IC0xXG4gICAgICB8IF8sIE91dHB1dCAtPiAxXG4gICAgICB8IFByZXR0eSBfYV9fMDExXywgUHJldHR5IF9iX18wMTJfIC0+IF9jbXBfX2EgX2FfXzAxMV8gX2JfXzAxMl9cbiAgICAgIHwgUHJldHR5IF8sIF8gLT4gLTFcbiAgICAgIHwgXywgUHJldHR5IF8gLT4gMVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gMClcbiAgOztcblxuICBsZXQgXyA9IGNvbXBhcmVcblxuICBsZXQgZXF1YWwgOiAnYS4gKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdCAtPiBib29sID1cbiAgICBmdW4gX2NtcF9fYSBhX18wMTNfIGJfXzAxNF8gLT5cbiAgICBpZiBQcHhfY29tcGFyZV9saWIucGh5c19lcXVhbCBhX18wMTNfIGJfXzAxNF9cbiAgICB0aGVuIHRydWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFfXzAxM18sIGJfXzAxNF8gd2l0aFxuICAgICAgfCBFeGFjdCBfYV9fMDE1XywgRXhhY3QgX2JfXzAxNl8gLT4gZXF1YWxfc3RyaW5nIF9hX18wMTVfIF9iX18wMTZfXG4gICAgICB8IEV4YWN0IF8sIF8gLT4gZmFsc2VcbiAgICAgIHwgXywgRXhhY3QgXyAtPiBmYWxzZVxuICAgICAgfCBPdXRwdXQsIE91dHB1dCAtPiB0cnVlXG4gICAgICB8IE91dHB1dCwgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBPdXRwdXQgLT4gZmFsc2VcbiAgICAgIHwgUHJldHR5IF9hX18wMTdfLCBQcmV0dHkgX2JfXzAxOF8gLT4gX2NtcF9fYSBfYV9fMDE3XyBfYl9fMDE4X1xuICAgICAgfCBQcmV0dHkgXywgXyAtPiBmYWxzZVxuICAgICAgfCBfLCBQcmV0dHkgXyAtPiBmYWxzZVxuICAgICAgfCBVbnJlYWNoYWJsZSwgVW5yZWFjaGFibGUgLT4gdHJ1ZSlcbiAgOztcblxuICBsZXQgXyA9IGVxdWFsXG5cbiAgW0BAQGVuZF1cblxuICBsZXQgbWFwX3ByZXR0eSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IChFeGFjdCBfIHwgT3V0cHV0IHwgVW5yZWFjaGFibGUpIGFzIHQgLT4gdFxuICAgIHwgUHJldHR5IHggLT4gUHJldHR5IChmIHgpXG4gIDs7XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyB0YWcgOiBzdHJpbmcgb3B0aW9uXG4gIDsgYm9keSA6ICdhIEJvZHkudFxuICA7IGV4dGlkX2xvY2F0aW9uIDogRmlsZS5Mb2NhdGlvbi50XG4gIDsgYm9keV9sb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZiwgY29tcGFyZSwgZXF1YWxdXG5cbmxldCBfID0gZnVuIChfIDogJ2EgdCkgLT4gKClcblxubGV0IHNleHBfb2ZfdCA6ICdhLiAoJ2EgLT4gU2V4cGxpYjAuU2V4cC50KSAtPiAnYSB0IC0+IFNleHBsaWIwLlNleHAudCA9XG4gIGZ1biBfb2ZfYV9fMDE5X1xuICAgIHsgdGFnID0gdGFnX18wMjFfXG4gICAgOyBib2R5ID0gYm9keV9fMDIzX1xuICAgIDsgZXh0aWRfbG9jYXRpb24gPSBleHRpZF9sb2NhdGlvbl9fMDI1X1xuICAgIDsgYm9keV9sb2NhdGlvbiA9IGJvZHlfbG9jYXRpb25fXzAyN19cbiAgICB9IC0+XG4gICAgbGV0IGJuZHNfXzAyMF8gPSBbXSBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyOF8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBib2R5X2xvY2F0aW9uX18wMjdfIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJib2R5X2xvY2F0aW9uXCI7IGFyZ19fMDI4XyBdIDo6IGJuZHNfXzAyMF9cbiAgICBpblxuICAgIGxldCBibmRzX18wMjBfID1cbiAgICAgIGxldCBhcmdfXzAyNl8gPSBGaWxlLkxvY2F0aW9uLnNleHBfb2ZfdCBleHRpZF9sb2NhdGlvbl9fMDI1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZXh0aWRfbG9jYXRpb25cIjsgYXJnX18wMjZfIF0gOjogYm5kc19fMDIwX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDI0XyA9IEJvZHkuc2V4cF9vZl90IF9vZl9hX18wMTlfIGJvZHlfXzAyM18gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcImJvZHlcIjsgYXJnX18wMjRfIF0gOjogYm5kc19fMDIwX1xuICAgIGluXG4gICAgbGV0IGJuZHNfXzAyMF8gPVxuICAgICAgbGV0IGFyZ19fMDIyXyA9IHNleHBfb2Zfb3B0aW9uIHNleHBfb2Zfc3RyaW5nIHRhZ19fMDIxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidGFnXCI7IGFyZ19fMDIyXyBdIDo6IGJuZHNfXzAyMF9cbiAgICBpblxuICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMjBfXG47O1xuXG5sZXQgXyA9IHNleHBfb2ZfdFxuXG5sZXQgY29tcGFyZSA6ICdhLiAoJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0IC0+ICdhIHQgLT4gaW50ID1cbiAgZnVuIF9jbXBfX2EgYV9fMDI5XyBiX18wMzBfIC0+XG4gIGlmIFBweF9jb21wYXJlX2xpYi5waHlzX2VxdWFsIGFfXzAyOV8gYl9fMDMwX1xuICB0aGVuIDBcbiAgZWxzZSAoXG4gICAgbWF0Y2ggY29tcGFyZV9vcHRpb24gY29tcGFyZV9zdHJpbmcgYV9fMDI5Xy50YWcgYl9fMDMwXy50YWcgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgKG1hdGNoIEJvZHkuY29tcGFyZSBfY21wX19hIGFfXzAyOV8uYm9keSBiX18wMzBfLmJvZHkgd2l0aFxuICAgICAgIHwgMCAtPlxuICAgICAgICAgKG1hdGNoIEZpbGUuTG9jYXRpb24uY29tcGFyZSBhX18wMjlfLmV4dGlkX2xvY2F0aW9uIGJfXzAzMF8uZXh0aWRfbG9jYXRpb24gd2l0aFxuICAgICAgICAgIHwgMCAtPiBGaWxlLkxvY2F0aW9uLmNvbXBhcmUgYV9fMDI5Xy5ib2R5X2xvY2F0aW9uIGJfXzAzMF8uYm9keV9sb2NhdGlvblxuICAgICAgICAgIHwgbiAtPiBuKVxuICAgICAgIHwgbiAtPiBuKVxuICAgIHwgbiAtPiBuKVxuOztcblxubGV0IF8gPSBjb21wYXJlXG5cbmxldCBlcXVhbCA6ICdhLiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2wgPVxuICBmdW4gX2NtcF9fYSBhX18wMzVfIGJfXzAzNl8gLT5cbiAgaWYgUHB4X2NvbXBhcmVfbGliLnBoeXNfZXF1YWwgYV9fMDM1XyBiX18wMzZfXG4gIHRoZW4gdHJ1ZVxuICBlbHNlXG4gICAgUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgKGVxdWFsX29wdGlvbiBlcXVhbF9zdHJpbmcgYV9fMDM1Xy50YWcgYl9fMDM2Xy50YWcpXG4gICAgICAoUHB4X2NvbXBhcmVfbGliLiggJiYgKVxuICAgICAgICAgKEJvZHkuZXF1YWwgX2NtcF9fYSBhX18wMzVfLmJvZHkgYl9fMDM2Xy5ib2R5KVxuICAgICAgICAgKFBweF9jb21wYXJlX2xpYi4oICYmIClcbiAgICAgICAgICAgIChGaWxlLkxvY2F0aW9uLmVxdWFsIGFfXzAzNV8uZXh0aWRfbG9jYXRpb24gYl9fMDM2Xy5leHRpZF9sb2NhdGlvbilcbiAgICAgICAgICAgIChGaWxlLkxvY2F0aW9uLmVxdWFsIGFfXzAzNV8uYm9keV9sb2NhdGlvbiBiX18wMzZfLmJvZHlfbG9jYXRpb24pKSlcbjs7XG5cbmxldCBfID0gZXF1YWxcblxuW0BAQGVuZF1cblxubW9kdWxlIFJhdyA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gc3RyaW5nIHQgW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2YsIGNvbXBhcmVdXG5cbiAgbGV0IF8gPSBmdW4gKF8gOiB0KSAtPiAoKVxuICBsZXQgc2V4cF9vZl90ID0gKGZ1biB4X18wNDFfIC0+IHNleHBfb2ZfdCBzZXhwX29mX3N0cmluZyB4X18wNDFfIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG4gIGxldCBfID0gc2V4cF9vZl90XG5cbiAgbGV0IGNvbXBhcmUgPVxuICAgIChmdW4gYV9fMDQyXyBiX18wNDNfIC0+IGNvbXBhcmUgY29tcGFyZV9zdHJpbmcgYV9fMDQyXyBiX18wNDNfIDogdCAtPiB0IC0+IGludClcbiAgOztcblxuICBsZXQgXyA9IGNvbXBhcmVcblxuICBbQEBAZW5kXVxuZW5kXG5cbmxldCBtYXBfcHJldHR5IHQgfmYgPSB7IHQgd2l0aCBib2R5ID0gQm9keS5tYXBfcHJldHR5IHQuYm9keSB+ZiB9XG4iLCJtb2R1bGUgU3RkID0gc3RydWN0XG4gIG1vZHVsZSBGaWxlID0gRmlsZVxuICBtb2R1bGUgRXhwZWN0YXRpb24gPSBFeHBlY3RhdGlvblxuZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjAtMDNdIHVzZSBbRXhwZWN0X3Rlc3RfY29tbW9uXSBpbnN0ZWFkXCJdXG5cbmluY2x1ZGUgU3RkIFtAQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cbiIsIm1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYENSICgqKiBMZWF2ZXMgYSBDUiwgc28gdGhhdCBmZWF0dXJlcyBjYW5ub3QgYmUgcmVsZWFzZWQuICopXG4gICAgfCBgV2FybmluZ19mb3JfY29sbGVjdG9yX3Rlc3RpbmcgKCoqIE9ubHkgZm9yIHBweF9leHBlY3QgdGVzdGluZzsgZG8gbm90IHVzZS4gKilcbiAgICBdXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgSU9fcnVuIDogc2lnXG4gICAgdHlwZSAnYSB0XG4gIGVuZFxuXG4gICgqKiBBIG5vdy1sZWdhY3kgbW9uYWQuIFRoaXMgc2lnbmF0dXJlIHVzZWQgdG8gZGVjbGFyZSBhIFtmbHVzaF0gZnVuY3Rpb24uXG4gICAgICBbWyVleHBlY3Qub3V0cHV0XV0gc3RpbGwgcmV0dXJucyB0aGlzIHR5cGUuIE5vIG1lYW5pbmdmdWwgbW9uYWRpYyB3b3JrIGlzIGRvbmUuICopXG4gIG1vZHVsZSBJT19mbHVzaCA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIHJldHVybiA6ICdhIC0+ICdhIHRcbiAgICB2YWwgYmluZCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICAgIHZhbCB0b19ydW4gOiAnYSB0IC0+ICdhIElPX3J1bi50XG4gIGVuZFxuXG4gICgqKiBSdW4gYW4gSU8gb3BlcmF0aW9uIHVudGlsIGNvbXBsZXRpb24gKilcbiAgdmFsIHJ1biA6ICh1bml0IC0+IHVuaXQgSU9fcnVuLnQpIC0+IHVuaXRcblxuICAoKiogU3luY2hyb25vdXMgY2hlY2sgdGhhdCB0aGVyZSBpcyBubyBwZW5kaW5nIG91dHB1dCBvbiBmaWxlIGRlc2NyaXB0aW9uIDAuIFdpdGggYXN5bmMsXG4gICAgICB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBvbiB0aGUgcmhzIG9mIGEgW0lPLmJpbmQgKGZsdXNoICgpKSAuLi5dIHRoZSBvdXRwdXQgaXNcbiAgICAgIGNvbXBsZXRlbHkgZmx1c2hlZCwgdGhhdCdzIHdoeSB3ZSBuZWVkIHRoaXMuICopXG4gIHZhbCBmbHVzaGVkIDogdW5pdCAtPiBib29sXG5cbiAgKCoqIFtzYW5pdGl6ZV0gY2FuIGJlIHVzZWQgdG8gbWFwIGFsbCBvdXRwdXQgc3RyaW5ncywgZS5nLiBmb3IgY2xlYW5zaW5nLiAqKVxuICB2YWwgc2FuaXRpemUgOiBzdHJpbmcgLT4gc3RyaW5nXG5cblxuICAoKiogW3Vwb25fdW5yZWxlYXNhYmxlX2lzc3VlXSBzcGVjaWZpZXMgaG93IHRvIGRlYWwgd2l0aCBvdXRwdXQgdGhhdCBzaG91bGQgbm90IGJlXG4gICAgICByZWxlYXNlZCBldmVuIGlmIGl0IGlzIGFjY2VwdGVkIChlLmcuIGJhY2t0cmFjZXMpLiBUaGUgZGVmYXVsdCBpcyBbYENSXS4gICopXG4gIHZhbCB1cG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IFVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbmVuZFxuXG4oKiogQ29uZmlndXJhdGlvbiBmb3IgcnVubmluZyBleHBlY3QgdGVzdHMgKilcbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9IHNpZ1xuICAoKiogVG8gY29uZmlndXJlIGV4cGVjdF90ZXN0LCBhZGQgdGhlIGZvbGxvd2luZyBhdCB0aGUgdG9wIG9mIHlvdXIgLm1sIGZpbGUsIG9yIGluIHNvbWVcbiAgICAgIGltcG9ydC5tbDpcblxuICAgICAge1tcbiAgICAgICAgbW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgRXhwZWN0X3Rlc3RfY29uZmlnXG4gICAgICAgICAgbGV0IHByZV9yZWRpcmVjdF9ob29rICgpID0gLi4uXG4gICAgICAgIGVuZFxuICAgICAgXX1cblxuICAgICAgTm90ZSB0aGF0IHNpbmNlIGFsbCBleHBlY3QgdGVzdCBhcmUgYWxzbyBpbmxpbmUgdGVzdHMsIHRoZSBpbmxpbmUgdGVzdCBjb25maWd1cmF0aW9uXG4gICAgICBhbHNvIGFwcGxpZXMgdG8gYWxsIGV4cGVjdCB0ZXN0LlxuICAqKVxuXG4gIG1vZHVsZSBVcG9uX3VucmVsZWFzYWJsZV9pc3N1ZSA6IHNpZ1xuICAgIGluY2x1ZGUgbW9kdWxlIHR5cGUgb2YgVXBvbl91bnJlbGVhc2FibGVfaXNzdWVcblxuICAgIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGNvbW1lbnRfcHJlZml4IDogdCAtPiBzdHJpbmdcblxuICAgICgqKiBNZXNzYWdlIHRvIHByaW50IHdoZW4gYW4gZXhwZWN0YXRpb24gY29udGFpbnMgYSBiYWNrdHJhY2UgKilcbiAgICB2YWwgbWVzc2FnZV93aGVuX2V4cGVjdGF0aW9uX2NvbnRhaW5zX2JhY2t0cmFjZSA6IHQgLT4gc3RyaW5nXG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTXG5lbmRcbiIsIm1vZHVsZSB0eXBlIFMgPSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5TXG5cbm1vZHVsZSB0eXBlIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlcyA9XG4gIEV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc19pbnRmLkV4cGVjdF90ZXN0X2NvbmZpZ190eXBlc1xuXG5tb2R1bGUgVXBvbl91bnJlbGVhc2FibGVfaXNzdWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXNfaW50Zi5VcG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuXG4gIGxldCBlcXVhbCB0MSB0MiA9IHQxID0gdDJcblxuICBsZXQgY29tbWVudF9wcmVmaXggPSBmdW5jdGlvblxuICAgIHwgYENSIC0+IFwiQ1IgXCJcbiAgICB8IGBXYXJuaW5nX2Zvcl9jb2xsZWN0b3JfdGVzdGluZyAtPiBcIlwiXG4gIDs7XG5cbiAgbGV0IG1lc3NhZ2Vfd2hlbl9leHBlY3RhdGlvbl9jb250YWluc19iYWNrdHJhY2UgdCA9XG4gICAgUHJpbnRmLnNwcmludGZcbiAgICAgIHt8XG4oKiAlc2V4cGVjdF90ZXN0X2NvbGxlY3RvcjogVGhpcyB0ZXN0IGV4cGVjdGF0aW9uIGFwcGVhcnMgdG8gY29udGFpbiBhIGJhY2t0cmFjZS5cbiAgIFRoaXMgaXMgc3Ryb25nbHkgZGlzY291cmFnZWQgYXMgYmFja3RyYWNlcyBhcmUgZnJhZ2lsZS5cbiAgIFBsZWFzZSBjaGFuZ2UgdGhpcyB0ZXN0IHRvIG5vdCBpbmNsdWRlIGEgYmFja3RyYWNlLiAqKVxuXG58fVxuICAgICAgKGNvbW1lbnRfcHJlZml4IHQpXG4gIDs7XG5lbmRcbiIsImxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDlcXDAwMFxcMDA1XFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxMlxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMDRcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDI4XFwwMDBcXDAwNVxcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMDZcXDAwMFxcMDg1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNDBcXDAwMFxcMDMxXFwwMDBcXDA0NlxcMDAwXFwwNDhcXDAwMFxcMDA3XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwNjJcXDAwMFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMDY3XFwwMDBcXDA2N1xcMDAwXFwxMDNcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTA1XFwwMDBcXDA5NVxcMDAwXFwxMDdcXDAwMFxcMDk1XFwwMDBcXDExM1xcMDAwXFwwMTBcXDAwMFxcMTA0XFwwMDBcXFxuICAgIFxcMTA0XFwwMDBcXDExNlxcMDAwXFwxMDRcXDAwMFxcMTIyXFwwMDBcXDEwNFxcMDAwXFwxMTZcXDAwMFxcMTExXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwxMTZcXDAwMFxcMTE3XFwwMDBcXDEyNVxcMDAwXFwxMjdcXDAwMFxcMDEyXFwwMDBcXDEyNlxcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMTlcXDAwMFxcMTIyXFwwMDBcXDAxM1xcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfZGVmYXVsdCA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDhcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFwwMjRcXDAwMFxcMDEyXFwwMDBcXDAzOVxcMDAwXFwwMTJcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA2MVxcMDAwXFwwNzFcXDAwMFxcMDU5XFwwMDBcXDA4NlxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAzXFwwMDBcXDAyOVxcMDAwXFwwMDdcXDAwMFxcMDA2XFwwMDBcXDAxMFxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDA0XFwwMDBcXDAxN1xcMDAwXFwwMTlcXDAwMFxcMDIxXFwwMDBcXDAxOFxcMDAwXFwwMjdcXDAwMFxcMDI1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAyNlxcMDAwXFwwMTZcXDAwMFxcMDA1XFwwMDBcXDAxMVxcMDAwXFwwMjBcXDAwMFxcMDIyXFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDAzMFxcMDAwXFwwMTNcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcXG4gICAgXFwwMzhcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDYwXFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU2XFwwMDBcXDA1OFxcMDAwXFwwNjJcXDAwMFxcMDQ2XFwwMDBcXDA2M1xcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFxcbiAgICBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMzNcXDAwMFxcMDM4XFwwMDBcXDA0M1xcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMDYwXFwwMDBcXDA3MFxcMDAwXFwwODBcXDAwMFxcMDg1XFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDI4XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMDNcXDAwMFxcMDE2XFwwMDBcXDAxOFxcMDAwXFwwMjBcXDAwMFxcMDE3XFwwMDBcXDAyNlxcMDAwXFwwMjRcXDAwMFxcXG4gICAgXFwwMTRcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDRcXDAwMFxcMDEwXFwwMDBcXDAxOVxcMDAwXFwwMjFcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDI5XFwwMDBcXDAwOVxcMDAwXFwwMzBcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDAzN1xcMDAwXFwwMzlcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTZcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2MVxcMDAwXFwwNDRcXDAwMFxcMDYyXFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODJcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIGNoZWNrIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA0IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTYzIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA1IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAoIG5vdF9hdF9ib3MgbGV4YnVmIClcbiMgMTY4IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9jaGVja19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBub3RfYXRfYm9zIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgNDRcbmFuZCBfX29jYW1sX2xleF9ub3RfYXRfYm9zX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDggXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnVlIClcbiMgMTgwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxcIlxuXG4gIHwgMSAtPlxuIyA5IFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICggbm90X2F0X2JvcyBsZXhidWYgKVxuIyAxODUgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbFwiXG5cbiAgfCAyIC0+XG4jIDEwIFwiY29sbGVjdG9yL2NoZWNrX2JhY2t0cmFjZXMubWxsXCJcbiAgICAgICAgKCBmYWxzZSApXG4jIDE5MCBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbm90X2F0X2Jvc19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTIgXCJjb2xsZWN0b3IvY2hlY2tfYmFja3RyYWNlcy5tbGxcIlxuIFxuICBsZXQgY29udGFpbnNfYmFja3RyYWNlcyBzID0gY2hlY2sgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4jIDIwMSBcImNvbGxlY3Rvci9jaGVja19iYWNrdHJhY2VzLm1sXCJcbiIsIm9wZW4gRXhwZWN0X3Rlc3RfY29tbW9uXG5tb2R1bGUgTGlzdCA9IExpc3RMYWJlbHNcblxubW9kdWxlIFRlc3Rfb3V0Y29tZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZmlsZV9kaWdlc3QgOiBGaWxlLkRpZ2VzdC50XG4gICAgOyBsb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udFxuICAgIDsgZXhwZWN0YXRpb25zIDogRXhwZWN0YXRpb24uUmF3LnQgbGlzdFxuICAgIDsgdW5jYXVnaHRfZXhuX2V4cGVjdGF0aW9uIDogRXhwZWN0YXRpb24uUmF3LnQgb3B0aW9uXG4gICAgOyBzYXZlZF9vdXRwdXQgOiAoRmlsZS5Mb2NhdGlvbi50ICogc3RyaW5nKSBsaXN0XG4gICAgOyB0cmFpbGluZ19vdXRwdXQgOiBzdHJpbmdcbiAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlIDogRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlLnRcbiAgICA7IHVuY2F1Z2h0X2V4biA6IChleG4gKiBQcmludGV4Yy5yYXdfYmFja3RyYWNlKSBvcHRpb25cbiAgICB9XG5lbmRcblxubGV0IHRlc3RzX3J1biA6IFRlc3Rfb3V0Y29tZS50IGxpc3QgcmVmID0gcmVmIFtdXG5cbmxldCBwcm90ZWN0IH5maW5hbGx5IH5mID1cbiAgbWF0Y2ggZiAoKSB3aXRoXG4gIHwgeCAtPlxuICAgIGZpbmFsbHkgKCk7XG4gICAgeFxuICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgZmluYWxseSAoKTtcbiAgICByYWlzZSBlXG47O1xuXG5tb2R1bGUgQ3VycmVudF9maWxlID0gc3RydWN0XG4gIGxldCBjdXJyZW50ID0gcmVmIE5vbmVcblxuICBsZXQgc2V0IH5hYnNvbHV0ZV9maWxlbmFtZSA9XG4gICAgbWF0Y2ggIWN1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBjdXJyZW50IDo9IFNvbWUgYWJzb2x1dGVfZmlsZW5hbWVcbiAgICB8IFNvbWUgXyAtPiBmYWlsd2l0aCBcIkV4cGVjdF90ZXN0X2NvbGxlY3Rvci5zZXQ6IGFscmVhZHkgc2V0XCJcbiAgOztcblxuICBsZXQgdW5zZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgXyAtPiBjdXJyZW50IDo9IE5vbmVcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IudW5zZXQ6IG5vdCBzZXRcIlxuICA7O1xuXG4gIGxldCBnZXQgKCkgPVxuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IFNvbWUgZm4gLT4gZm5cbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJFeHBlY3RfdGVzdF9jb2xsZWN0b3IuZ2V0OiBub3Qgc2V0XCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgSW5zdGFuY2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2F2ZWQgOiAoRmlsZS5Mb2NhdGlvbi50ICogaW50KSBsaXN0XG4gICAgOyBjaGFuIDogb3V0X2NoYW5uZWxcbiAgICA7IGZpbGVuYW1lIDogRmlsZS5OYW1lLnRcbiAgICB9XG5cbiAgZXh0ZXJuYWwgYmVmb3JlX3Rlc3RcbiAgICA6ICBvdXRwdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRvdXQ6b3V0X2NoYW5uZWxcbiAgICAtPiBzdGRlcnI6b3V0X2NoYW5uZWxcbiAgICAtPiB1bml0XG4gICAgPSBcImV4cGVjdF90ZXN0X2NvbGxlY3Rvcl9iZWZvcmVfdGVzdFwiXG5cbiAgZXh0ZXJuYWwgYWZ0ZXJfdGVzdFxuICAgIDogIHN0ZG91dDpvdXRfY2hhbm5lbFxuICAgIC0+IHN0ZGVycjpvdXRfY2hhbm5lbFxuICAgIC0+IHVuaXRcbiAgICA9IFwiZXhwZWN0X3Rlc3RfY29sbGVjdG9yX2FmdGVyX3Rlc3RcIlxuXG4gIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQgPSBcImNhbWxfb3V0X2NoYW5uZWxfcG9zX2ZkXCJcblxuICBsZXQgZ2V0X3Bvc2l0aW9uICgpID0gcG9zX291dCBzdGRvdXRcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICBsZXQgZmlsZW5hbWUgPSBGaWxlbmFtZS50ZW1wX2ZpbGUgXCJleHBlY3QtdGVzdFwiIFwib3V0cHV0XCIgaW5cbiAgICBsZXQgY2hhbiA9IG9wZW5fb3V0X2JpbiBmaWxlbmFtZSBpblxuICAgIGJlZm9yZV90ZXN0IH5vdXRwdXQ6Y2hhbiB+c3Rkb3V0IH5zdGRlcnI7XG4gICAgeyBjaGFuOyBmaWxlbmFtZSA9IEZpbGUuTmFtZS5vZl9zdHJpbmcgZmlsZW5hbWU7IHNhdmVkID0gW10gfVxuICA7O1xuXG4gIGxldCByZWxhdGl2ZV9maWxlbmFtZSB0ID0gRmlsZS5OYW1lLnJlbGF0aXZlX3RvIH5kaXI6KEZpbGUuaW5pdGlhbF9kaXIgKCkpIHQuZmlsZW5hbWVcblxuICBsZXQgd2l0aF9pYyBmbmFtZSB+ZiA9XG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBwcm90ZWN0IH5maW5hbGx5OihmdW4gKCkgLT4gY2xvc2VfaW4gaWMpIH5mOihmdW4gKCkgLT4gZiBpYylcbiAgOztcblxuICBsZXQgY3VycmVudF90ZXN0IDogKEZpbGUuTG9jYXRpb24udCAqIHQpIG9wdGlvbiByZWYgPSByZWYgTm9uZVxuXG4gIGxldCBnZXRfY3VycmVudCAoKSA9XG4gICAgbWF0Y2ggIWN1cnJlbnRfdGVzdCB3aXRoXG4gICAgfCBTb21lIChfLCB0KSAtPiB0XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRXhwZWN0X3Rlc3RfY29sbGVjdG9yLkluc3RhbmNlLmdldF9jdXJyZW50IGNhbGxlZCBvdXRzaWRlIGEgdGVzdC5cIlxuICA7O1xuXG4gIGxldCBzYXZlX291dHB1dF93aXRob3V0X2ZsdXNoIHQgbG9jYXRpb24gPVxuICAgIGxldCBwb3MgPSBnZXRfcG9zaXRpb24gKCkgaW5cbiAgICB0LnNhdmVkIDwtIChsb2NhdGlvbiwgcG9zKSA6OiB0LnNhdmVkXG4gIDs7XG5cbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uID1cbiAgICBsZXQgcG9zID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgbGV0IHByZXZfcG9zID1cbiAgICAgIG1hdGNoIHQuc2F2ZWQgd2l0aFxuICAgICAgfCBbXSAtPiAwXG4gICAgICB8IChfLCBwcmV2X3BvcykgOjogXyAtPiBwcmV2X3Bvc1xuICAgIGluXG4gICAgdC5zYXZlZCA8LSAobG9jYXRpb24sIHBvcykgOjogdC5zYXZlZDtcbiAgICBmbHVzaCB0LmNoYW47XG4gICAgbGV0IGxlbiA9IHBvcyAtIHByZXZfcG9zIGluXG4gICAgd2l0aF9pYyAocmVsYXRpdmVfZmlsZW5hbWUgdCkgfmY6KGZ1biBpYyAtPlxuICAgICAgc2Vla19pbiBpYyBwcmV2X3BvcztcbiAgICAgIHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuKVxuICA7O1xuZW5kXG5cbmxldCBiYXNpY19mbHVzaCAoKSA9XG4gIEZvcm1hdC5wcF9wcmludF9mbHVzaCBGb3JtYXQuc3RkX2Zvcm1hdHRlciAoKTtcbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5lcnJfZm9ybWF0dGVyICgpO1xuICBTdGRsaWIuZmx1c2ggU3RkbGliLnN0ZG91dDtcbiAgU3RkbGliLmZsdXNoIFN0ZGxpYi5zdGRlcnJcbjs7XG5cbmxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IGxvY2F0aW9uID1cbiAgbGV0IGluc3RhbmNlID0gSW5zdGFuY2UuZ2V0X2N1cnJlbnQgKCkgaW5cbiAgYmFzaWNfZmx1c2ggKCk7XG4gIEluc3RhbmNlLnNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCBpbnN0YW5jZSBsb2NhdGlvblxuOztcblxubW9kdWxlIE1ha2UgKEMgOiBFeHBlY3RfdGVzdF9jb25maWdfdHlwZXMuUykgPSBzdHJ1Y3RcbiAgbGV0ICggPj49ICkgdCBmID0gQy5JT19mbHVzaC5iaW5kIHQgfmZcbiAgbGV0IHJldHVybiA9IEMuSU9fZmx1c2gucmV0dXJuXG5cbiAgbW9kdWxlIEMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENcblxuICAgIGxldCBmbHVzaCAoKSA9XG4gICAgICBiYXNpY19mbHVzaCAoKTtcbiAgICAgIEMuSU9fZmx1c2gucmV0dXJuICgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEluc3RhbmNlX2lvIDogc2lnXG4gICAgdmFsIHNhdmVfb3V0cHV0IDogRmlsZS5Mb2NhdGlvbi50IC0+IHVuaXQgQy5JT19mbHVzaC50XG4gICAgdmFsIHNhdmVfYW5kX3JldHVybl9vdXRwdXQgOiBGaWxlLkxvY2F0aW9uLnQgLT4gc3RyaW5nIEMuSU9fZmx1c2gudFxuXG4gICAgdmFsIGV4ZWNcbiAgICAgIDogIGZpbGVfZGlnZXN0OkZpbGUuRGlnZXN0LnRcbiAgICAgIC0+IGxvY2F0aW9uOkZpbGUuTG9jYXRpb24udFxuICAgICAgLT4gZXhwZWN0YXRpb25zOkV4cGVjdGF0aW9uLlJhdy50IGxpc3RcbiAgICAgIC0+IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbjpFeHBlY3RhdGlvbi5SYXcudCBvcHRpb25cbiAgICAgIC0+IGY6KHVuaXQgLT4gdW5pdCBDLklPX3J1bi50KVxuICAgICAgLT4gdW5pdFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBvcGVuIEluc3RhbmNlXG5cbiAgICBsZXQgZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIGxlbiA9XG4gICAgICBsZXQgcyA9IHJlYWxseV9pbnB1dF9zdHJpbmcgaWMgbGVuIHw+IEMuc2FuaXRpemUgaW5cbiAgICAgIGlmIG5vdCAoQ2hlY2tfYmFja3RyYWNlcy5jb250YWluc19iYWNrdHJhY2VzIHMpXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgRXhwZWN0X3Rlc3RfY29uZmlnX3R5cGVzLlVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gICAgICAgIC5tZXNzYWdlX3doZW5fZXhwZWN0YXRpb25fY29udGFpbnNfYmFja3RyYWNlXG4gICAgICAgICAgQy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICBeIHNcbiAgICA7O1xuXG4gICAgbGV0IGdldF9vdXRwdXRzX2FuZF9jbGVhbnVwIHQgPVxuICAgICAgbGV0IGxhc3Rfb2ZzID0gZ2V0X3Bvc2l0aW9uICgpIGluXG4gICAgICBhZnRlcl90ZXN0IH5zdGRvdXQgfnN0ZGVycjtcbiAgICAgIGNsb3NlX291dCB0LmNoYW47XG4gICAgICBsZXQgZm5hbWUgPSByZWxhdGl2ZV9maWxlbmFtZSB0IGluXG4gICAgICBwcm90ZWN0XG4gICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT4gU3lzLnJlbW92ZSBmbmFtZSlcbiAgICAgICAgfmY6KGZ1biAoKSAtPlxuICAgICAgICAgIHdpdGhfaWMgZm5hbWUgfmY6KGZ1biBpYyAtPlxuICAgICAgICAgICAgbGV0IG9mcywgb3V0cHV0cyA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKExpc3QucmV2IHQuc2F2ZWQpXG4gICAgICAgICAgICAgICAgfmluaXQ6KDAsIFtdKVxuICAgICAgICAgICAgICAgIH5mOihmdW4gKG9mcywgYWNjKSAobG9jLCBuZXh0X29mcykgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZXh0cmFjdF9vdXRwdXRfYW5kX3Nhbml0aXplIGljIChuZXh0X29mcyAtIG9mcykgaW5cbiAgICAgICAgICAgICAgICAgIG5leHRfb2ZzLCAobG9jLCBzKSA6OiBhY2MpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRyYWlsaW5nX291dHB1dCA9IGV4dHJhY3Rfb3V0cHV0X2FuZF9zYW5pdGl6ZSBpYyAobGFzdF9vZnMgLSBvZnMpIGluXG4gICAgICAgICAgICBMaXN0LnJldiBvdXRwdXRzLCB0cmFpbGluZ19vdXRwdXQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2F2ZV9vdXRwdXQgbG9jYXRpb24gPVxuICAgICAgbGV0IHQgPSBnZXRfY3VycmVudCAoKSBpblxuICAgICAgQy5mbHVzaCAoKVxuICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgc2F2ZV9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uO1xuICAgICAgcmV0dXJuICgpXG4gICAgOztcblxuICAgIGxldCBzYXZlX2FuZF9yZXR1cm5fb3V0cHV0IGxvY2F0aW9uID1cbiAgICAgIGxldCB0ID0gZ2V0X2N1cnJlbnQgKCkgaW5cbiAgICAgIEMuZmx1c2ggKCkgPj49IGZ1biAoKSAtPiByZXR1cm4gKHNhdmVfYW5kX3JldHVybl9vdXRwdXRfd2l0aG91dF9mbHVzaCB0IGxvY2F0aW9uKVxuICAgIDs7XG5cbiAgICBsZXQgKCkgPVxuICAgICAgU3RkbGliLmF0X2V4aXQgKGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCAhY3VycmVudF90ZXN0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSAobG9jLCB0KSAtPlxuICAgICAgICAgIGxldCBibG9ja3MsIHRyYWlsaW5nID0gZ2V0X291dHB1dHNfYW5kX2NsZWFudXAgdCBpblxuICAgICAgICAgIFByaW50Zi5lcHJpbnRmXG4gICAgICAgICAgICBcIkZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6XFxuXFxcbiAgICAgICAgICAgICBFcnJvcjogcHJvZ3JhbSBleGl0ZWQgd2hpbGUgZXhwZWN0IHRlc3Qgd2FzIHJ1bm5pbmchXFxuXFxcbiAgICAgICAgICAgICBPdXRwdXQgY2FwdHVyZWQgc28gZmFyOlxcblxcXG4gICAgICAgICAgICAgJSFcIlxuICAgICAgICAgICAgKEZpbGUuTmFtZS50b19zdHJpbmcgbG9jLmZpbGVuYW1lKVxuICAgICAgICAgICAgbG9jLmxpbmVfbnVtYmVyXG4gICAgICAgICAgICAobG9jLnN0YXJ0X3BvcyAtIGxvYy5saW5lX3N0YXJ0KVxuICAgICAgICAgICAgKGxvYy5lbmRfcG9zIC0gbG9jLmxpbmVfc3RhcnQpO1xuICAgICAgICAgIExpc3QuaXRlciBibG9ja3MgfmY6KGZ1biAoXywgcykgLT4gUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgcyk7XG4gICAgICAgICAgUHJpbnRmLmVwcmludGYgXCIlcyUhXCIgdHJhaWxpbmcpXG4gICAgOztcblxuICAgIGxldCByZWMgZmluYWxfZmx1c2ggPyhjb3VudCA9IDApIGsgPVxuICAgICAgbGV0IG1heF9hdHRlbXB0cyA9IDEwIGluXG4gICAgICBDLmZsdXNoICgpXG4gICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICBpZiBDLmZsdXNoZWQgKClcbiAgICAgIHRoZW4gayB+YXBwZW5kOlwiXCJcbiAgICAgIGVsc2UgaWYgY291bnQgPSBtYXhfYXR0ZW1wdHNcbiAgICAgIHRoZW5cbiAgICAgICAga1xuICAgICAgICAgIH5hcHBlbmQ6XG4gICAgICAgICAgICAoUHJpbnRmLnNwcmludGZcbiAgICAgICAgICAgICAgIFwiXFxuXFxcbiAgICAgICAgICAgICAgICBTVE9QUEVEIENPTExFQ1RJTkcgT1VUUFVUIEFGVEVSICVkIEZMVVNISU5HIEFUVEVNUFNcXG5cXFxuICAgICAgICAgICAgICAgIFRIRVJFIE1VU1QgQkUgQSBCQUNLR1JPVU5EIEpPQiBQUklOVElORyBUTyBTVERPVVRcXG5cIlxuICAgICAgICAgICAgICAgbWF4X2F0dGVtcHRzKVxuICAgICAgZWxzZSBmaW5hbF9mbHVzaCB+Y291bnQ6KGNvdW50ICsgMSkga1xuICAgIDs7XG5cbiAgICBsZXQgZXhlYyB+ZmlsZV9kaWdlc3QgfmxvY2F0aW9uIH5leHBlY3RhdGlvbnMgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvbiB+ZiA9XG4gICAgICBsZXQgdCA9IGNyZWF0ZSAoKSBpblxuICAgICAgY3VycmVudF90ZXN0IDo9IFNvbWUgKGxvY2F0aW9uLCB0KTtcbiAgICAgIGxldCBmaW5hbGx5IHVuY2F1Z2h0X2V4biA9XG4gICAgICAgIEMucnVuIChmdW4gKCkgLT5cbiAgICAgICAgICBDLklPX2ZsdXNoLnRvX3J1blxuICAgICAgICAgICAgKGZpbmFsX2ZsdXNoIChmdW4gfmFwcGVuZCAtPlxuICAgICAgICAgICAgICAgY3VycmVudF90ZXN0IDo9IE5vbmU7XG4gICAgICAgICAgICAgICBsZXQgc2F2ZWRfb3V0cHV0LCB0cmFpbGluZ19vdXRwdXQgPSBnZXRfb3V0cHV0c19hbmRfY2xlYW51cCB0IGluXG4gICAgICAgICAgICAgICB0ZXN0c19ydW5cbiAgICAgICAgICAgICAgIDo9IHsgZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICAgICAgIDsgbG9jYXRpb25cbiAgICAgICAgICAgICAgICAgIDsgZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgICAgICA7IHVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgICAgICAgOyBzYXZlZF9vdXRwdXRcbiAgICAgICAgICAgICAgICAgIDsgdHJhaWxpbmdfb3V0cHV0ID0gdHJhaWxpbmdfb3V0cHV0IF4gYXBwZW5kXG4gICAgICAgICAgICAgICAgICA7IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gQy51cG9uX3VucmVsZWFzYWJsZV9pc3N1ZVxuICAgICAgICAgICAgICAgICAgOyB1bmNhdWdodF9leG5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDo6ICF0ZXN0c19ydW47XG4gICAgICAgICAgICAgICByZXR1cm4gKCkpKSlcbiAgICAgIGluXG4gICAgICBtYXRjaCBDLnJ1biBmIHdpdGhcbiAgICAgIHwgKCkgLT4gZmluYWxseSBOb25lXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgbGV0IGJ0ID0gUHJpbnRleGMuZ2V0X3Jhd19iYWNrdHJhY2UgKCkgaW5cbiAgICAgICAgZmluYWxseSAoU29tZSAoZXhuLCBidCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNhdmVfb3V0cHV0ID0gSW5zdGFuY2VfaW8uc2F2ZV9vdXRwdXRcbiAgbGV0IHNhdmVfYW5kX3JldHVybl9vdXRwdXQgPSBJbnN0YW5jZV9pby5zYXZlX2FuZF9yZXR1cm5fb3V0cHV0XG5cbiAgbGV0IHJ1blxuICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgfihsb2NhdGlvbiA6IEZpbGUuTG9jYXRpb24udClcbiAgICAgICAgfmFic29sdXRlX2ZpbGVuYW1lOmRlZmluZWRfaW5cbiAgICAgICAgfmRlc2NyaXB0aW9uXG4gICAgICAgIH50YWdzXG4gICAgICAgIH5leHBlY3RhdGlvbnNcbiAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICB+aW5saW5lX3Rlc3RfY29uZmlnXG4gICAgICAgIGZcbiAgICA9XG4gICAgUHB4X2lubGluZV90ZXN0X2xpYi5SdW50aW1lLnRlc3RcbiAgICAgIH5jb25maWc6aW5saW5lX3Rlc3RfY29uZmlnXG4gICAgICB+ZGVzY3I6XG4gICAgICAgIChsYXp5XG4gICAgICAgICAgKG1hdGNoIGRlc2NyaXB0aW9uIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgfCBTb21lIHMgLT4gcykpXG4gICAgICB+dGFnc1xuICAgICAgfmZpbGVuYW1lOihGaWxlLk5hbWUudG9fc3RyaW5nIGxvY2F0aW9uLmZpbGVuYW1lKVxuICAgICAgfmxpbmVfbnVtYmVyOmxvY2F0aW9uLmxpbmVfbnVtYmVyXG4gICAgICB+c3RhcnRfcG9zOihsb2NhdGlvbi5zdGFydF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgfmVuZF9wb3M6KGxvY2F0aW9uLmVuZF9wb3MgLSBsb2NhdGlvbi5saW5lX3N0YXJ0KVxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgbGV0IHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvciA9IEN1cnJlbnRfZmlsZS5nZXQgKCkgaW5cbiAgICAgICAgIGlmIGRlZmluZWRfaW4gPD4gcmVnaXN0ZXJpbmdfdGVzdHNfZm9yXG4gICAgICAgICB0aGVuXG4gICAgICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgXCJUcnlpbmcgdG8gcnVuIGFuIGV4cGVjdCB0ZXN0IGZyb20gdGhlIHdyb25nIGZpbGUuXFxuXFxcbiAgICAgICAgICAgICAgLSB0ZXN0IGRlY2xhcmVkIGF0ICVzOiVkXFxuXFxcbiAgICAgICAgICAgICAgLSB0cnlpbmcgdG8gcnVuIGl0IGZyb20gJXNcXG5cIlxuICAgICAgICAgICAgIGRlZmluZWRfaW5cbiAgICAgICAgICAgICBsb2NhdGlvbi5saW5lX251bWJlclxuICAgICAgICAgICAgIHJlZ2lzdGVyaW5nX3Rlc3RzX2ZvclxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICgqIFRvIGF2b2lkIGNhcHR1cmluZyBub3QteWV0IGZsdXNoZWQgZGF0YSBvZiB0aGUgc3Rkb3V0IGJ1ZmZlciAqKVxuICAgICAgICAgICBDLnJ1biAoZnVuICgpIC0+IEMuSU9fZmx1c2gudG9fcnVuIChDLmZsdXNoICgpKSk7XG4gICAgICAgICAgIEluc3RhbmNlX2lvLmV4ZWNcbiAgICAgICAgICAgICB+ZmlsZV9kaWdlc3RcbiAgICAgICAgICAgICB+bG9jYXRpb25cbiAgICAgICAgICAgICB+ZXhwZWN0YXRpb25zXG4gICAgICAgICAgICAgfnVuY2F1Z2h0X2V4bl9leHBlY3RhdGlvblxuICAgICAgICAgICAgIH5mO1xuICAgICAgICAgICB0cnVlKSlcbiAgOztcbmVuZFxuW0BAaW5saW5lIG5ldmVyXVxuXG5sZXQgdGVzdHNfcnVuICgpID1cbiAgKCogV2UgcHJlcGVuZCB0ZXN0cyB3aGVuIHdlIGVuY291bnRlciB0aGVtLCBzbyByZXZlcnNlIHRoZSBsaXN0IHRvIHJlaW5zdGF0ZSBvcmRlciAqKVxuICBMaXN0LnJldiAhdGVzdHNfcnVuXG47O1xuIiwibW9kdWxlIElPX3J1biA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuXG4gIGxldCByZXR1cm4geCA9IHhcbiAgbGV0IGJpbmQgdCB+ZiA9IGYgdFxuZW5kXG5cbm1vZHVsZSBJT19mbHVzaCA9IHN0cnVjdFxuICBpbmNsdWRlIElPX3J1blxuXG4gIGxldCB0b19ydW4gdCA9IHRcbmVuZFxuXG5sZXQgc2FuaXRpemUgcyA9IHNcbmxldCBydW4gZiA9IGYgKClcbmxldCBmbHVzaGVkICgpID0gdHJ1ZSAoKiB0aGUgcnVudGltZSBmbHVzaGVkIFtzdGRvdXRdIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gKilcblxubGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gYENSXG4iLCJtb2R1bGUgUHB4X3NleHBfY29udl9saWIgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbnZfZXJyb3IgPSBTZXhwbGliMC5TZXhwX2NvbnZfZXJyb3JcbiAgbW9kdWxlIENvbnYgPSBTZXhwbGliMC5TZXhwX2NvbnZcbiAgbW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5lbmRcblxubW9kdWxlIFNleHAgPSBTZXhwbGliMC5TZXhwXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfY29udlxubW9kdWxlIExpc3QgPSBMaXN0TGFiZWxzXG4iLCIoKiBUaGlzIG1vZHVsZSBidWlsZHMgYSBidWZmZXIgb2YgXCJpbnN0cnVjdGlvbnNcIiwgaW4gb3JkZXIgdG8gcmVwcmVzZW50IGEgY29tcGFjdCBzZXF1ZW5jZVxuICAgb2YgZGVsaW1pdGluZyBwb3NpdGlvbnMgYW5kIG5ld2xpbmVzLiBUaGUgcGFyc2VyIHN0b3JlcyB0aGUgcG9zaXRpb25zIG9mIGVhY2g6XG5cbiAgIC0gbmV3bGluZVxuICAgLSBiZWdpbm5pbmcgb2YgYXRvbVxuICAgLSBlbmQgb2YgYXRvbVxuICAgLSBsZWZ0IHBhcmVudGhlc2lzXG4gICAtIHJpZ2h0IHBhcmVudGhlc2lzXG5cbiAgIEluc3RydWN0aW9ucyBhcmUgZW5jb2RlZCBhcyBhIHNlcXVlbmNlIGJpdHMuIFRoZSBuZXh0IGluc3RydWN0aW9uIGlzIGRldGVybWluZWQgYnlcbiAgIGxvb2tpbmcgYXQgdGhlIG5leHQgZmV3IGJpdHM6XG5cbiAgIC0gYml0IDAgcmVwcmVzZW50cyBhIHNhdmVkIHBvc2l0aW9uIGZvbGxvd2VkIGJ5IGFuIG9mZnNldCBpbmNyZW1lbnRcbiAgIC0gYml0cyAxMCByZXByZXNlbnQgYW4gb2Zmc2V0IGluY3JlbWVudFxuICAgLSBiaXRzIDExMCBhcmUgZm9sbG93ZWQgYnkgNSBiaXRzIG9mIHBheWxvYWQuIFRoZSA1LWJpdCBwYXlsb2FkcyBvZiBhbnkgc3Vic2VxdWVudCAxMTAtXG4gICAgIGluc3RydWN0aW9ucyBhcmUgc3F1YXNoZWQgdG8gZm9ybSBhIG51bWJlciAobGVhc3Qgc2lnbmlmaWNhbnQgNS1iaXQgY2h1bmsgZmlyc3QpLlxuICAgICBUaGlzIG51bWJlciArIDUgcmVwcmVzZW50cyBhbiBvZmZzZXQgaW5jcmVtZW50XG4gICAtIGJpdHMgMTExMCBtYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgbmV3IGxpbmUgKHdpdGggb2Zmc2V0IGluY3JlbWVudGVkKVxuICAgLSBiaXRzIDExMTEgcmVwcmVzZW50IGEgcG9zaXRpb24gc2F2ZWQgdHdpY2UgZm9sbG93ZWQgYnkgYW4gb2Zmc2V0IGluY3JlbWVudFxuXG4gICBGb3IgaW5zdGFuY2UgbGV0J3MgY29uc2lkZXIgdGhlIGZvbGxvd2luZyBzZXhwOlxuXG4gICB7W1xuICAgICB7fFxuKGFiY1xuICAgICAgXCJmb29cbiBiYXJcIlxuKVxufH1cbiAgIF19XG5cbiAgIHRoZSBzZXF1ZW5jZSBvZiBpbnN0cnVjdGlvbnMgdG8gcmVjb3JkIGluIG9yZGVyIHRvIHJlY29uc3RydWN0IHRoZSBwb3NpdGlvbiBvZiBhbnlcbiAgIHN1Yi1zZXhwIGlzOlxuXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGZpcnN0ICcoJ1xuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImFiY1wiXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMCAgICAgICAgIHNhdmUgcG9zaXRpb24gYW5kIGFkdmFuY2UgMTogZW5kIG9mIFwiYWJjXCJcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAxIGFkdmFuY2UgNlxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBzdGFydCBvZiBcImZvb1xcbiAgYmFyXCJcbiAgIC0gMTAgICAgICAgIGFkdmFuY2UgMVxuICAgLSAxMCAgICAgICAgYWR2YW5jZSAxXG4gICAtIDEwICAgICAgICBhZHZhbmNlIDFcbiAgIC0gMTExMCAgICAgIG5ld2xpbmVcbiAgIC0gMTEwMF8wMDAwIGFkdmFuY2UgNVxuICAgLSAwICAgICAgICAgc2F2ZSBwb3NpdGlvbiBhbmQgYWR2YW5jZSAxOiBlbmQgb2YgXCJmb29cXG4gIGJhclwiXG4gICAtIDExMTAgICAgICBuZXdsaW5lXG4gICAtIDAgICAgICAgICBzYXZlIHBvc2l0aW9uIGFuZCBhZHZhbmNlIDE6IGxhc3QgJyknXG5cbiAgICh3ZSBzYXZlIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgY2xvc2luZyBwYXJlbnRoZXNpcylcblxuICAgVGhlIHRvdGFsIHNlcXVlbmNlIGlzIDQyIGJpdHMsIHNvIHdlIG5lZWQgNiBieXRlcyB0byBzdG9yZSBpdFxuXG4gICBUaGUgc2VxdWVuY2Ugb2YgYml0cyBpcyBlbmNvZGVkIGFzIGEgc2VxdWVuY2Ugb2YgMTYtYml0IHZhbHVlcywgd2hlcmUgdGhlIGVhcmxpZXIgYml0c1xuICAgYXJlIG1vc3Qgc2lnbmlmaWNhbnQuXG5cbiAgIE5vdGUgdGhhdCB0aGUgcGFyc2VyIHN0b3JlcyB0aGUgZW5kIHBvc2l0aW9ucyBhcyBpbmNsdXNpdmUuIFRoaXMgd2F5IG9ubHkgc2luZ2xlXG4gICBjaGFyYWN0ZXIgYXRvbXMgcmVxdWlyZSBhIGRvdWJsZSBwb3NpdGlvbnMuIElmIHdlIHdlcmUgc3RvcmluZyBlbmQgcG9zaXRpb25zIGFzXG4gICBleGNsdXNpdmUsIHdlIHdvdWxkIG5lZWQgZG91YmxlIHBvc2l0aW9ucyBmb3IgWykoXSBhbmQgW2EoXSwgd2hpY2ggYXJlIGxpa2VseSB0byBiZVxuICAgZnJlcXVlbnQgaW4gcy1leHByZXNzaW9ucyBwcmludGVkIHdpdGggdGhlIG5vbiBbX2h1bV0gcHJpbnRlci4gV2UgZXhwZWN0IHNpbmdsZVxuICAgY2hhcmFjdGVyIGF0b21zIHRvIGJlIGxlc3MgZnJlcXVlbnQgc28gaXQgbWFrZXMgc2Vuc2UgdG8gcGVuYWxpemUgdGhlbSBpbnN0ZWFkLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zID1cbiAgeyBsaW5lIDogaW50XG4gIDsgY29sIDogaW50XG4gIDsgb2Zmc2V0IDogaW50XG4gIH1cbltAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl9wb3MgPVxuICAoZnVuIHsgbGluZSA9IGxpbmVfXzAwMl87IGNvbCA9IGNvbF9fMDA0Xzsgb2Zmc2V0ID0gb2Zmc2V0X18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSBbXSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2ZfaW50IG9mZnNldF9fMDA2XyBpblxuICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mZnNldFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDFfID1cbiAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9pbnQgY29sX18wMDRfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiY29sXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgaW5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgIGxldCBhcmdfXzAwM18gPSBzZXhwX29mX2ludCBsaW5lX18wMDJfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibGluZVwiOyBhcmdfXzAwM18gXSA6OiBibmRzX18wMDFfXG4gICAgIGluXG4gICAgIFNleHBsaWIwLlNleHAuTGlzdCBibmRzX18wMDFfXG4gICAgIDogcG9zIC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlX3BvcyA9IENhbWwuY29tcGFyZVxubGV0IGJlZ2lubmluZ19vZl9maWxlID0geyBsaW5lID0gMTsgY29sID0gMDsgb2Zmc2V0ID0gMCB9XG5sZXQgc2hpZnRfcG9zIHBvcyB+Y29scyA9IHsgcG9zIHdpdGggY29sID0gcG9zLmNvbCArIGNvbHM7IG9mZnNldCA9IHBvcy5vZmZzZXQgKyBjb2xzIH1cblxudHlwZSByYW5nZSA9XG4gIHsgc3RhcnRfcG9zIDogcG9zXG4gIDsgZW5kX3BvcyA6IHBvc1xuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfcmFuZ2UgPVxuICAoZnVuIHsgc3RhcnRfcG9zID0gc3RhcnRfcG9zX18wMDlfOyBlbmRfcG9zID0gZW5kX3Bvc19fMDExXyB9IC0+XG4gICAgIGxldCBibmRzX18wMDhfID0gW10gaW5cbiAgICAgbGV0IGJuZHNfXzAwOF8gPVxuICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX3BvcyBlbmRfcG9zX18wMTFfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZW5kX3Bvc1wiOyBhcmdfXzAxMl8gXSA6OiBibmRzX18wMDhfXG4gICAgIGluXG4gICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICBsZXQgYXJnX18wMTBfID0gc2V4cF9vZl9wb3Mgc3RhcnRfcG9zX18wMDlfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3RhcnRfcG9zXCI7IGFyZ19fMDEwXyBdIDo6IGJuZHNfXzAwOF9cbiAgICAgaW5cbiAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IGJuZHNfXzAwOF9cbiAgICAgOiByYW5nZSAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgY29tcGFyZV9yYW5nZSA9IENhbWwuY29tcGFyZVxuXG5sZXQgbWFrZV9yYW5nZV9pbmNsIH5zdGFydF9wb3Mgfmxhc3RfcG9zID1cbiAgeyBzdGFydF9wb3M7IGVuZF9wb3MgPSBzaGlmdF9wb3MgbGFzdF9wb3MgfmNvbHM6MSB9XG47O1xuXG5tb2R1bGUgQ2h1bmsgOiBzaWdcbiAgKCoqIFJlcHJlc2VudHMgYW4gYXJyYXkgb2YgW2xlbmd0aC8yXSBzaWduZWQgMTYtYml0IHZhbHVlcyAqKVxuICB0eXBlIHRcblxuICAoKiogTGVuZ3RoIGluIGJ5dGVzLiAqKVxuICB2YWwgbGVuZ3RoIDogaW50XG5cbiAgdmFsIGFsbG9jIDogdW5pdCAtPiB0XG5cbiAgKCoqIFtnZXQxNiB+cG9zXSBhbmQgW3NldDE2IH5wb3NdIG1hbmlwdWxhdGUgdGhlIFtwb3MvMl10aCBzdG9yZWQgdmFsdWUuXG4gICAgICBbcG9zXSBtdXN0IGJlIGV2ZW4uXG4gICAgICBbc2V0MTYgeF0gb25seSB1c2VzIHRoZSAxNiBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIFt4XS4gKilcbiAgdmFsIGdldDE2IDogdCAtPiBwb3M6aW50IC0+IGludFxuXG4gIHZhbCBzZXQxNiA6IHQgLT4gcG9zOmludCAtPiBpbnQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IGJ5dGVzXG5cbiAgKCogT0NhbWwgc3RyaW5ncyBhbHdheXMgd2FzdGUgdHdvIGJ5dGVzIGF0IHRoZSBlbmQsIHNvIHdlIHRha2UgYSBwb3dlciBvZiB0d28gbWludXMgdHdvXG4gICAgIHRvIGJlIHN1cmUgd2UgZG9uJ3Qgd2FzdGUgc3BhY2UuICopXG4gIGxldCBsZW5ndGggPSA2MlxuICBsZXQgYWxsb2MgKCkgPSBCeXRlcy5jcmVhdGUgbGVuZ3RoXG5cbiAgZXh0ZXJuYWwgZ2V0MTYgOiBieXRlcyAtPiBwb3M6aW50IC0+IGludCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MTZcIlxuICBleHRlcm5hbCBzZXQxNiA6IGJ5dGVzIC0+IHBvczppbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2XCJcblxuICAoKiBJZiB3ZSB3YW50IHRvIG1ha2UgYSBbUG9zaXRpb25zLnRdIHNlcmlhbGl6YWJsZTpcblxuICAgICB7W1xuICAgICAgIGV4dGVybmFsIGJzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiOztcblxuICAgICAgIGxldCBnZXQxNiA9XG4gICAgICAgICBpZiBDYW1sLlN5cy5hcmNoX2JpZ19lbmRpYW4gdGhlblxuICAgICAgICAgICBmdW4gYnVmIH5wb3MgLT4gZ2V0MTYgYnVmIH5wb3MgfD4gYnN3YXAxNlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBnZXQxNlxuXG4gICAgICAgbGV0IHNldDE2ID1cbiAgICAgICAgIGlmIENhbWwuU3lzLmFyY2hfYmlnX2VuZGlhbiB0aGVuXG4gICAgICAgICAgIGZ1biBidWYgfnBvcyB4IC0+IHNldDE2IGJ1ZiB+cG9zIChic3dhcDE2IHgpXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIHNldDE2XG4gICAgIF19XG5cbiAgKilcbmVuZFxuXG50eXBlIHRfID1cbiAgeyBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgOyAoKiBbbnVtX2J5dGVzICogOCArIGV4dHJhX2JpdHNdIGlzIHRoZSBudW1iZXIgb2YgYml0cyBzdG9yZWQgaW4gW2NodW5rc10uXG4gICAgICAgVGhlIGxhc3QgW2V4dHJhX2JpdHNdIGJpdHMgd2lsbCBiZSBzdG9yZWQgYXMgdGhlICpsZWFzdCogc2lnbmlmaWNhbnQgYml0c1xuICAgICAgIG9mIHRoZSBhcHByb3ByaWF0ZSBwYWlyIG9mIGJ5dGVzIG9mIHRoZSBsYXN0IGNodW5rLiAqKVxuICAgIG51bV9ieXRlcyA6IGludFxuICA7IGV4dHJhX2JpdHMgOiBpbnRcbiAgOyBpbml0aWFsX3BvcyA6IHBvc1xuICB9XG5cbnR5cGUgdCA9IHRfIExhenkudFxuXG5sZXQgbWVtb3J5X2Zvb3RwcmludF9pbl9ieXRlcyAobGF6eSB0KSA9XG4gIGxldCBudW1fZmllbGRzID0gNCBpblxuICBsZXQgaGVhZGVyX3dvcmRzID0gMSBpblxuICBsZXQgd29yZF9ieXRlcyA9XG4gICAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgfCAzMiAtPiA0XG4gICAgfCA2NCAtPiA4XG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICBsZXQgY2h1bmtfd29yZHMgPVxuICAgIGxldCBkaXZfY2VpbCBhIGIgPSAoYSArIGIgLSAxKSAvIGIgaW5cbiAgICBsZXQgbiA9XG4gICAgICBkaXZfY2VpbFxuICAgICAgICAoQ2h1bmsubGVuZ3RoXG4gICAgICAgICArIDEgKCogTlVMIHRlcm1pbmF0aW5nIGJ5dGVzICopXG4gICAgICAgICArIDEgKCogbnVtYmVyIG9mIHdhc3RlZCBieXRlcyB0byBmaWxsIGEgd29yZCAqKSlcbiAgICAgICAgd29yZF9ieXRlc1xuICAgIGluXG4gICAgbiArIGhlYWRlcl93b3Jkc1xuICBpblxuICBsZXQgcG9zX2ZpZWxkcyA9IDMgaW5cbiAgbGV0IHBvc193b3JkcyA9IGhlYWRlcl93b3JkcyArIHBvc19maWVsZHMgaW5cbiAgbGV0IGxpc3RfY29uc193b3JkcyA9IGhlYWRlcl93b3JkcyArIDIgaW5cbiAgKGhlYWRlcl93b3Jkc1xuICAgKyBudW1fZmllbGRzXG4gICArIHBvc193b3Jkc1xuICAgKyAoTGlzdC5sZW5ndGggdC5jaHVua3MgKiAoY2h1bmtfd29yZHMgKyBsaXN0X2NvbnNfd29yZHMpKSlcbiAgKiB3b3JkX2J5dGVzXG47O1xuXG5tb2R1bGUgQnVpbGRlciA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaHVuayA6IENodW5rLnRcbiAgICA7IG11dGFibGUgY2h1bmtfcG9zIDogaW50XG4gICAgOyBtdXRhYmxlIGZpbGxlZF9jaHVua3MgOiBDaHVuay50IGxpc3QgKCogRmlsbGVkIGNodW5rcyBpbiByZXZlcnNlIG9yZGVyICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgICgqIE9mZnNldCBvZiB0aGUgbGFzdCBzYXZlZCBwb3NpdGlvbiBvciBuZXdsaW5lIHBsdXNcbiAgICAgICBvbmUsIG9yIFtpbml0aWFsX3Bvc10gKilcbiAgICA7IG11dGFibGUgaW50X2J1ZiA6IGludFxuICAgICgqIHRoZSBbbnVtX2JpdHNdIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgW2ludF9idWZdXG4gICAgICAgYXJlIHRoZSBiaXRzIG5vdCB5ZXQgcHVzaGVkIHRvIFtjaHVua10uICopXG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIG51bWJlciBvZiBiaXRzIHN0b3JlZCBpbiBbaW50X2J1Zl0gKilcbiAgICA7IG11dGFibGUgaW5pdGlhbF9wb3MgOiBwb3NcbiAgICB9XG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKHQuY2h1bmtfcG9zID49IDAgJiYgdC5jaHVua19wb3MgPD0gQ2h1bmsubGVuZ3RoKTtcbiAgICBhc3NlcnQgKHQub2Zmc2V0ID49IHQuaW5pdGlhbF9wb3Mub2Zmc2V0KTtcbiAgICBhc3NlcnQgKHQubnVtX2JpdHMgPD0gMTUpXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ludmFyaWFudCA9IGZhbHNlXG4gIGxldCBpbnZhcmlhbnQgdCA9IGlmIGNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0XG5cbiAgbGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gYmVnaW5uaW5nX29mX2ZpbGUpICgpID1cbiAgICB7IGNodW5rID0gQ2h1bmsuYWxsb2MgKClcbiAgICA7IGNodW5rX3BvcyA9IDBcbiAgICA7IGZpbGxlZF9jaHVua3MgPSBbXVxuICAgIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gICAgOyBpbnRfYnVmID0gMFxuICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgOyBpbml0aWFsX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgcmVzZXQgdCAocG9zIDogcG9zKSA9XG4gICAgKCogV2UgbmVlZCBhIG5ldyBjaHVuayBhcyBbY29udGVudHNdIGtlZXBzIHRoZSBjdXJyZW50IGNodW5rIGluIHRoZSBjbG9zdXJlIG9mIHRoZVxuICAgICAgIGxhenkgdmFsdWUuICopXG4gICAgdC5jaHVuayA8LSBDaHVuay5hbGxvYyAoKTtcbiAgICB0LmNodW5rX3BvcyA8LSAwO1xuICAgIHQuZmlsbGVkX2NodW5rcyA8LSBbXTtcbiAgICB0Lm9mZnNldCA8LSBwb3Mub2Zmc2V0O1xuICAgIHQuaW50X2J1ZiA8LSAwO1xuICAgIHQubnVtX2JpdHMgPC0gMDtcbiAgICB0LmluaXRpYWxfcG9zIDwtIHBvc1xuICA7O1xuXG4gIGxldFtAaW5saW5lZCBuZXZlcl0gYWxsb2NfbmV3X2NodW5rIHQgPVxuICAgIHQuZmlsbGVkX2NodW5rcyA8LSB0LmNodW5rIDo6IHQuZmlsbGVkX2NodW5rcztcbiAgICB0LmNodW5rIDwtIENodW5rLmFsbG9jICgpO1xuICAgIHQuY2h1bmtfcG9zIDwtIDBcbiAgOztcblxuICBsZXQgYWRkX3VpbnQxNiB0IG4gPVxuICAgIGlmIHQuY2h1bmtfcG9zID0gQ2h1bmsubGVuZ3RoIHRoZW4gYWxsb2NfbmV3X2NodW5rIHQ7XG4gICAgQ2h1bmsuc2V0MTYgdC5jaHVuayB+cG9zOnQuY2h1bmtfcG9zIG5cbiAgOztcblxuICBsZXQgYWRkX2JpdHMgdCBuIH5udW1fYml0cyA9XG4gICAgbGV0IGludF9idWYgPSAodC5pbnRfYnVmIGxzbCBudW1fYml0cykgbG9yIG4gaW5cbiAgICBsZXQgbnVtX2JpdHMgPSB0Lm51bV9iaXRzICsgbnVtX2JpdHMgaW5cbiAgICB0LmludF9idWYgPC0gaW50X2J1ZjtcbiAgICBpZiBudW1fYml0cyA8IDE2XG4gICAgdGhlbiB0Lm51bV9iaXRzIDwtIG51bV9iaXRzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnVtX2JpdHMgPSBudW1fYml0cyAtIDE2IGluXG4gICAgICB0Lm51bV9iaXRzIDwtIG51bV9iaXRzO1xuICAgICAgYWRkX3VpbnQxNiB0IChpbnRfYnVmIGxzciBudW1fYml0cyk7XG4gICAgICB0LmNodW5rX3BvcyA8LSB0LmNodW5rX3BvcyArIDJcbiAgICAgICgqIG5vIG5lZWQgdG8gY2xlYXIgdGhlIGJpdHMgb2YgaW50X2J1ZiB3ZSBqdXN0IHdyb3RlLCBhcyBmdXJ0aGVyIHNldDE2IHdpbGwgaWdub3JlXG4gICAgICAgICB0aGVzZSBleHRyYSBiaXRzLiAqKSlcbiAgOztcblxuICBsZXQgY29udGVudHMgdCA9XG4gICAgKCogRmx1c2ggdGhlIGN1cnJlbnQgW3QuaW50X2J1Zl0gKilcbiAgICBhZGRfdWludDE2IHQgdC5pbnRfYnVmO1xuICAgIGxldCByZXZfY2h1bmtzID0gdC5jaHVuayA6OiB0LmZpbGxlZF9jaHVua3MgaW5cbiAgICBsZXQgY2h1bmtfcG9zID0gdC5jaHVua19wb3MgaW5cbiAgICBsZXQgZXh0cmFfYml0cyA9IHQubnVtX2JpdHMgaW5cbiAgICBsZXQgaW5pdGlhbF9wb3MgPSB0LmluaXRpYWxfcG9zIGluXG4gICAgbGF6eVxuICAgICAgeyBjaHVua3MgPSBMaXN0LnJldiByZXZfY2h1bmtzXG4gICAgICA7IG51bV9ieXRlcyA9ICgoTGlzdC5sZW5ndGggcmV2X2NodW5rcyAtIDEpICogQ2h1bmsubGVuZ3RoKSArIGNodW5rX3Bvc1xuICAgICAgOyBleHRyYV9iaXRzXG4gICAgICA7IGluaXRpYWxfcG9zXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGxvbmdfc2hpZnQgdCBuID1cbiAgICBsZXQgbiA9IHJlZiAobiAtIDUpIGluXG4gICAgd2hpbGUgIW4gPiAwIGRvXG4gICAgICBhZGRfYml0cyB0ICgwYjExMDBfMDAwMCBsb3IgKCFuIGxhbmQgMGIwMDAxXzExMTEpKSB+bnVtX2JpdHM6ODtcbiAgICAgIG4gOj0gIW4gbHNyIDVcbiAgICBkb25lXG4gIDs7XG5cbiAgKCogcHJlY29uZGl0aW9uOiBuID49IDUgKilcbiAgbGV0W0BpbmxpbmVkIG5ldmVyXSBhZGRfZ2VuX3Nsb3cgdCBuIH5pbnN0ciB+aW5zdHJfYml0cyA9XG4gICAgbG9uZ19zaGlmdCB0IG47XG4gICAgYWRkX2JpdHMgdCBpbnN0ciB+bnVtX2JpdHM6aW5zdHJfYml0c1xuICA7O1xuXG4gIGxldCBzaGlmdDQgPSAwYjEwXzEwXzEwXzEwXG5cbiAgbGV0W0BpbmxpbmUgYWx3YXlzXSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHIgfmluc3RyX2JpdHMgPVxuICAgIGludmFyaWFudCB0O1xuICAgIGxldCBuID0gb2Zmc2V0IC0gdC5vZmZzZXQgaW5cbiAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgIG1hdGNoIG4gd2l0aFxuICAgIHwgMCB8IDEgfCAyIHwgMyB8IDQgLT5cbiAgICAgIGxldCBudW1fYml0cyA9IChuIGxzbCAxKSArIGluc3RyX2JpdHMgaW5cbiAgICAgIGFkZF9iaXRzIHQgKChzaGlmdDQgbHNsIGluc3RyX2JpdHMpIGxvciBpbnN0ciBsYW5kICgoMSBsc2wgbnVtX2JpdHMpIC0gMSkpIH5udW1fYml0c1xuICAgIHwgNVxuICAgIHwgNlxuICAgIHwgN1xuICAgIHwgOFxuICAgIHwgOVxuICAgIHwgMTBcbiAgICB8IDExXG4gICAgfCAxMlxuICAgIHwgMTNcbiAgICB8IDE0XG4gICAgfCAxNVxuICAgIHwgMTZcbiAgICB8IDE3XG4gICAgfCAxOFxuICAgIHwgMTlcbiAgICB8IDIwXG4gICAgfCAyMVxuICAgIHwgMjJcbiAgICB8IDIzXG4gICAgfCAyNFxuICAgIHwgMjVcbiAgICB8IDI2XG4gICAgfCAyN1xuICAgIHwgMjhcbiAgICB8IDI5XG4gICAgfCAzMFxuICAgIHwgMzFcbiAgICB8IDMyXG4gICAgfCAzM1xuICAgIHwgMzRcbiAgICB8IDM1XG4gICAgfCAzNiAtPlxuICAgICAgYWRkX2JpdHNcbiAgICAgICAgdFxuICAgICAgICAoKCgwYjExMDBfMDAwMCBsb3IgKG4gLSA1KSkgbHNsIGluc3RyX2JpdHMpIGxvciBpbnN0cilcbiAgICAgICAgfm51bV9iaXRzOig4ICsgaW5zdHJfYml0cylcbiAgICB8IF8gLT5cbiAgICAgIGlmIG4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJQYXJzZXhwLlBvc2l0aW9ucy5hZGRfZ2VuXCI7XG4gICAgICBhZGRfZ2VuX3Nsb3cgdCBuIH5pbnN0ciB+aW5zdHJfYml0c1xuICA7O1xuXG4gIGxldCBhZGQgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMCB+aW5zdHJfYml0czoxXG4gIGxldCBhZGRfdHdpY2UgdCB+b2Zmc2V0ID0gYWRkX2dlbiB0IH5vZmZzZXQgfmluc3RyOjBiMTExMSB+aW5zdHJfYml0czo0XG4gIGxldCBhZGRfbmV3bGluZSB0IH5vZmZzZXQgPSBhZGRfZ2VuIHQgfm9mZnNldCB+aW5zdHI6MGIxMTEwIH5pbnN0cl9iaXRzOjRcbmVuZFxuXG50eXBlIHBvc2l0aW9ucyA9IHRcblxubW9kdWxlIEl0ZXJhdG9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiBwb3NpdGlvbnMgLT4gdFxuXG4gIGV4Y2VwdGlvbiBOb19tb3JlXG5cbiAgKCogW2FkdmFuY2UgdCB+c2tpcF0gaWdub3JlcyBbc2tpcF0gc2F2ZWQgcG9zaXRpb25zIGFuZCByZXR1cm5zIHRoZSBuZXh0IHNhdmVkIHBvc2l0aW9uLlxuICAgICBSYWlzZXMgW05vX21vcmVdIHdoZW4gcmVhY2hpbmcgdGhlIGVuZCBvZiB0aGUgcG9zaXRpb24gc2V0LiAqKVxuICB2YWwgYWR2YW5jZV9leG4gOiB0IC0+IHNraXA6aW50IC0+IHBvc1xuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGNodW5rIDogQ2h1bmsudFxuICAgIDsgbXV0YWJsZSBjaHVua3MgOiBDaHVuay50IGxpc3RcbiAgICA7ICgqIFtudW1fYnl0ZXMgKiA4ICsgZXh0cmFfYml0c10gaXMgdGhlIG51bWJlciBvZiBiaXRzIGF2YWlsYWJsZSBmcm9tIFtpbnN0cl9wb3NdIGluXG4gICAgICAgICBbY2h1bmsgOjogY2h1bmtzXS4gKilcbiAgICAgIG11dGFibGUgbnVtX2J5dGVzIDogaW50XG4gICAgOyBleHRyYV9iaXRzIDogaW50XG4gICAgOyBtdXRhYmxlIGluc3RyX3BvcyA6IGludCAoKiBwb3NpdGlvbiBpbiBbY2h1bmtdICopXG4gICAgOyBtdXRhYmxlIG9mZnNldCA6IGludFxuICAgIDsgbXV0YWJsZSBsaW5lIDogaW50XG4gICAgOyBtdXRhYmxlIGJvbCA6IGludFxuICAgIDsgbXV0YWJsZSBpbnRfYnVmIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9iaXRzIDogaW50ICgqIE51bWJlciBvZiBiaXRzIG5vdCB5ZXQgY29uc3VtZWQgaW4gW2ludF9idWZdICopXG4gICAgOyBtdXRhYmxlIHBlbmRpbmcgOiBwb3Mgb3B0aW9uXG4gICAgfVxuXG4gIGxldCBjcmVhdGUgKChsYXp5IHApIDogcG9zaXRpb25zKSA9XG4gICAgbWF0Y2ggcC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHsgY2h1bmtcbiAgICAgIDsgY2h1bmtzXG4gICAgICA7IG51bV9ieXRlcyA9IHAubnVtX2J5dGVzXG4gICAgICA7IGV4dHJhX2JpdHMgPSBwLmV4dHJhX2JpdHNcbiAgICAgIDsgaW5zdHJfcG9zID0gMFxuICAgICAgOyBvZmZzZXQgPSBwLmluaXRpYWxfcG9zLm9mZnNldFxuICAgICAgOyBsaW5lID0gcC5pbml0aWFsX3Bvcy5saW5lXG4gICAgICA7IGJvbCA9IHAuaW5pdGlhbF9wb3Mub2Zmc2V0IC0gcC5pbml0aWFsX3Bvcy5jb2xcbiAgICAgIDsgaW50X2J1ZiA9IDBcbiAgICAgIDsgbnVtX2JpdHMgPSAwXG4gICAgICA7IHBlbmRpbmcgPSBOb25lXG4gICAgICB9XG4gIDs7XG5cbiAgZXhjZXB0aW9uIE5vX21vcmVcblxuICBsZXQgbm9fbW9yZSAoKSA9IHJhaXNlX25vdHJhY2UgTm9fbW9yZVxuXG4gIGxldFtAaW5saW5lZCBuZXZlcl0gZmV0Y2hfY2h1bmsgdCA9XG4gICAgbWF0Y2ggdC5jaHVua3Mgd2l0aFxuICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBjaHVuayA6OiBjaHVua3MgLT5cbiAgICAgIHQuaW5zdHJfcG9zIDwtIDA7XG4gICAgICB0Lm51bV9ieXRlcyA8LSB0Lm51bV9ieXRlcyAtIENodW5rLmxlbmd0aDtcbiAgICAgIHQuY2h1bmsgPC0gY2h1bms7XG4gICAgICB0LmNodW5rcyA8LSBjaHVua3NcbiAgOztcblxuICBsZXQgZmV0Y2ggdCA9XG4gICAgaWYgdC5pbnN0cl9wb3MgPiB0Lm51bV9ieXRlcyB0aGVuIG5vX21vcmUgKCk7XG4gICAgaWYgdC5pbnN0cl9wb3MgPSBDaHVuay5sZW5ndGggdGhlbiBmZXRjaF9jaHVuayB0O1xuICAgIGxldCB2ID0gQ2h1bmsuZ2V0MTYgdC5jaHVuayB+cG9zOnQuaW5zdHJfcG9zIGluXG4gICAgbGV0IGFkZGVkX2JpdHMgPSBpZiB0Lmluc3RyX3BvcyA9IHQubnVtX2J5dGVzIHRoZW4gdC5leHRyYV9iaXRzIGVsc2UgMTYgaW5cbiAgICB0LmludF9idWYgPC0gKHQuaW50X2J1ZiBsc2wgYWRkZWRfYml0cykgbG9yICh2IGxhbmQgKCgxIGxzbCBhZGRlZF9iaXRzKSAtIDEpKTtcbiAgICB0Lm51bV9iaXRzIDwtIHQubnVtX2JpdHMgKyBhZGRlZF9iaXRzO1xuICAgIHQuaW5zdHJfcG9zIDwtIHQuaW5zdHJfcG9zICsgMlxuICA7O1xuXG4gIGxldCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHMgPVxuICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0c1xuICAgIHRoZW4gKFxuICAgICAgZmV0Y2ggdDtcbiAgICAgIGlmIHQubnVtX2JpdHMgPCBudW1fYml0cyB0aGVuIG5vX21vcmUgKCkpO1xuICAgIGxldCBuID0gKHQuaW50X2J1ZiBsc3IgKHQubnVtX2JpdHMgLSBudW1fYml0cykpIGxhbmQgKCgxIGxzbCBudW1fYml0cykgLSAxKSBpblxuICAgIHQubnVtX2JpdHMgPC0gdC5udW1fYml0cyAtIG51bV9iaXRzO1xuICAgIG5cbiAgOztcblxuICAoKiBbb2Zmc2V0X3NoaWZ0XSBhbmQgW29mZnNldF9zaGlmdF9udW1fYml0c10gZW5jb2RlIHRoZSBvZmZzZXQgbnVtYmVyXG4gICAgIHNwZWNpZmllZCBieSB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIFsxMTBdIGluc3RydWN0aW9ucy4gKilcbiAgbGV0IHJlYyBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzID1cbiAgICBtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgfCAwIC0+XG4gICAgICAoKiBiaXQgc2VxIDAgLT4gbmV3IGl0ZW0gKilcbiAgICAgIGxldCBvZmZzZXQgPSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCBpblxuICAgICAgdC5vZmZzZXQgPC0gb2Zmc2V0ICsgMTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9XG4gICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDEpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICB8IF8gLT5cbiAgICAgIChtYXRjaCBuZXh0X2luc3RydWN0aW9uX2JpdHMgdCB+bnVtX2JpdHM6MSB3aXRoXG4gICAgICAgfCAwIC0+XG4gICAgICAgICAoKiBiaXQgc2VxIDEwIC0+IHNoaWZ0ICopXG4gICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICBhZHZhbmNlIHQgfnNraXAgfm9mZnNldF9zaGlmdDowIH5vZmZzZXRfc2hpZnRfbnVtX2JpdHM6MFxuICAgICAgIHwgXyAtPlxuICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICgqIGJpdCBzZXEgMTEwIC0+IGxvbmcgc2hpZnQgKilcbiAgICAgICAgICAgIGxldCBuID0gbmV4dF9pbnN0cnVjdGlvbl9iaXRzIHQgfm51bV9iaXRzOjUgaW5cbiAgICAgICAgICAgIGxldCBvZmZzZXRfc2hpZnQgPSBpZiBvZmZzZXRfc2hpZnRfbnVtX2JpdHMgPSAwIHRoZW4gNSBlbHNlIG9mZnNldF9zaGlmdCBpblxuICAgICAgICAgICAgYWR2YW5jZVxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIH5za2lwXG4gICAgICAgICAgICAgIH5vZmZzZXRfc2hpZnQ6KG9mZnNldF9zaGlmdCArIChuIGxzbCBvZmZzZXRfc2hpZnRfbnVtX2JpdHMpKVxuICAgICAgICAgICAgICB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOihvZmZzZXRfc2hpZnRfbnVtX2JpdHMgKyA1KVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgKG1hdGNoIG5leHRfaW5zdHJ1Y3Rpb25fYml0cyB0IH5udW1fYml0czoxIHdpdGhcbiAgICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMCAtPiBuZXdsaW5lICopXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSB0Lm9mZnNldCArIG9mZnNldF9zaGlmdCArIDE7XG4gICAgICAgICAgICAgICB0LmJvbCA8LSB0Lm9mZnNldDtcbiAgICAgICAgICAgICAgIHQubGluZSA8LSB0LmxpbmUgKyAxO1xuICAgICAgICAgICAgICAgYWR2YW5jZSB0IH5za2lwIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjBcbiAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICgqIGJpdCBzZXEgMTExMSAtPiAyIG5ldyBpdGVtcyAqKVxuICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IHQub2Zmc2V0ICsgb2Zmc2V0X3NoaWZ0IGluXG4gICAgICAgICAgICAgICB0Lm9mZnNldCA8LSBvZmZzZXQgKyAxO1xuICAgICAgICAgICAgICAgaWYgc2tpcCA8PSAxXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHsgbGluZSA9IHQubGluZTsgY29sID0gb2Zmc2V0IC0gdC5ib2w7IG9mZnNldCB9IGluXG4gICAgICAgICAgICAgICAgIGlmIHNraXAgPSAwIHRoZW4gdC5wZW5kaW5nIDwtIFNvbWUgcG9zO1xuICAgICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgICAgICBlbHNlIGFkdmFuY2UgdCB+c2tpcDooc2tpcCAtIDIpIH5vZmZzZXRfc2hpZnQ6MCB+b2Zmc2V0X3NoaWZ0X251bV9iaXRzOjApKSlcbiAgOztcblxuICBsZXQgYWR2YW5jZV9leG4gdCB+c2tpcCA9XG4gICAgbWF0Y2ggdC5wZW5kaW5nIHdpdGhcbiAgICB8IFNvbWUgcG9zIC0+XG4gICAgICB0LnBlbmRpbmcgPC0gTm9uZTtcbiAgICAgIGlmIHNraXAgPSAwXG4gICAgICB0aGVuIHBvc1xuICAgICAgZWxzZSBhZHZhbmNlIHQgfnNraXA6KHNraXAgLSAxKSB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gICAgfCBOb25lIC0+IGFkdmFuY2UgdCB+c2tpcCB+b2Zmc2V0X3NoaWZ0OjAgfm9mZnNldF9zaGlmdF9udW1fYml0czowXG4gIDs7XG5lbmRcblxubGV0IGZpbmQgdCBhIGIgPVxuICBpZiBhIDwgMCB8fCBiIDw9IGEgdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuUG9zaXRpb25zLmZpbmRcIjtcbiAgbGV0IGl0ZXIgPSBJdGVyYXRvci5jcmVhdGUgdCBpblxuICB0cnlcbiAgICBsZXQgc3RhcnRfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDphIGluXG4gICAgbGV0IGxhc3RfcG9zID0gSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDooYiAtIGEgLSAxKSBpblxuICAgIG1ha2VfcmFuZ2VfaW5jbCB+c3RhcnRfcG9zIH5sYXN0X3Bvc1xuICB3aXRoXG4gIHwgSXRlcmF0b3IuTm9fbW9yZSAtPiBmYWlsd2l0aCBcIlBhcnNleHAuUG9zaXRpb24uZmluZFwiXG47O1xuXG5sZXQgcmVjIHN1Yl9zZXhwX2NvdW50IChzZXhwIDogU2V4cC50KSA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IEF0b20gXyAtPiAxXG4gIHwgTGlzdCBsIC0+IExpc3QuZm9sZF9sZWZ0IGwgfmluaXQ6MSB+ZjooZnVuIGFjYyB4IC0+IGFjYyArIHN1Yl9zZXhwX2NvdW50IHgpXG47O1xuXG5tb2R1bGUgU2V4cF9zZWFyY2ggPSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIEZvdW5kIG9mIGludFxuXG4gIGxldCByZWMgbG9vcCB+c3ViIGluZGV4IChzZXhwIDogU2V4cC50KSA9XG4gICAgaWYgc2V4cCA9PSBzdWJcbiAgICB0aGVuIHJhaXNlX25vdHJhY2UgKEZvdW5kIGluZGV4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IEF0b20gXyAtPiBpbmRleCArIDJcbiAgICAgIHwgTGlzdCBsIC0+XG4gICAgICAgIGxldCBpbmRleCA9IGxvb3BfbGlzdCB+c3ViIChpbmRleCArIDEpIGwgaW5cbiAgICAgICAgaW5kZXggKyAxKVxuXG4gIGFuZCBsb29wX2xpc3QgfnN1YiBpbmRleCAoc2V4cHMgOiBTZXhwLnQgbGlzdCkgPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNleHBzIH5pbml0OmluZGV4IH5mOihsb29wIH5zdWIpXG4gIDs7XG5cbiAgbGV0IGZpbmFsaXplIHQgfnN1YiBhID1cbiAgICBsZXQgYiA9IGEgKyAoc3ViX3NleHBfY291bnQgc3ViICogMikgLSAxIGluXG4gICAgU29tZSAoZmluZCB0IGEgYilcbiAgOztcblxuICBsZXQgZmluZF9zdWJfc2V4cF9waHlzIHQgc2V4cCB+c3ViID1cbiAgICBtYXRjaCBsb29wIH5zdWIgMCBzZXhwIHdpdGhcbiAgICB8IChfIDogaW50KSAtPiBOb25lXG4gICAgfCBleGNlcHRpb24gRm91bmQgbiAtPiBmaW5hbGl6ZSB0IH5zdWIgblxuICA7O1xuXG4gIGxldCBmaW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5cyB0IHNleHBzIH5zdWIgPVxuICAgIG1hdGNoIGxvb3BfbGlzdCB+c3ViIDAgc2V4cHMgd2l0aFxuICAgIHwgKF8gOiBpbnQpIC0+IE5vbmVcbiAgICB8IGV4Y2VwdGlvbiBGb3VuZCBuIC0+IGZpbmFsaXplIHQgfnN1YiBuXG4gIDs7XG5lbmRcblxubGV0IGZpbmRfc3ViX3NleHBfcGh5cyA9IFNleHBfc2VhcmNoLmZpbmRfc3ViX3NleHBfcGh5c1xubGV0IGZpbmRfc3ViX3NleHBfaW5fbGlzdF9waHlzID0gU2V4cF9zZWFyY2guZmluZF9zdWJfc2V4cF9pbl9saXN0X3BoeXNcblxubGV0IHRvX2xpc3QgdCA9XG4gIGxldCBpdGVyID0gSXRlcmF0b3IuY3JlYXRlIHQgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggSXRlcmF0b3IuYWR2YW5jZV9leG4gaXRlciB+c2tpcDowIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBJdGVyYXRvci5Ob19tb3JlIC0+IExpc3QucmV2IGFjY1xuICAgIHwgcG9zIC0+IGxvb3AgKHBvcyA6OiBhY2MpXG4gIGluXG4gIGxvb3AgW11cbjs7XG5cbmxldCB0b19hcnJheSB0ID0gdG9fbGlzdCB0IHw+IEFycmF5Lm9mX2xpc3RcbmxldCBjb21wYXJlIHQxIHQyID0gQ2FtbC5jb21wYXJlICh0b19hcnJheSB0MSkgKHRvX2FycmF5IHQyKVxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl9hcnJheSBzZXhwX29mX3BvcyAodG9fYXJyYXkgdClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IEF0b20gb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGF0b20gOiBzdHJpbmdcbiAgICAgIDsgdW5lc2NhcGVkIDogc3RyaW5nIG9wdGlvblxuICAgICAgfVxuICB8IExpc3Qgb2ZcbiAgICAgIHsgbG9jIDogUG9zaXRpb25zLnJhbmdlXG4gICAgICA7IGVsZW1lbnRzIDogdF9vcl9jb21tZW50IGxpc3RcbiAgICAgIH1cblxuYW5kIHRfb3JfY29tbWVudCA9XG4gIHwgU2V4cCBvZiB0XG4gIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbmFuZCBjb21tZW50ID1cbiAgfCBQbGFpbl9jb21tZW50IG9mXG4gICAgICB7IGxvYyA6IFBvc2l0aW9ucy5yYW5nZVxuICAgICAgOyBjb21tZW50IDogc3RyaW5nXG4gICAgICB9XG4gIHwgU2V4cF9jb21tZW50IG9mXG4gICAgICB7IGhhc2hfc2VtaV9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgICA7IGNvbW1lbnRzIDogY29tbWVudCBsaXN0XG4gICAgICA7IHNleHAgOiB0XG4gICAgICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHJlYyBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IEF0b20geyBsb2MgPSBsb2NfXzAwMl87IGF0b20gPSBhdG9tX18wMDRfOyB1bmVzY2FwZWQgPSB1bmVzY2FwZWRfXzAwNl8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAwMV8gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDdfID0gc2V4cF9vZl9vcHRpb24gc2V4cF9vZl9zdHJpbmcgdW5lc2NhcGVkX18wMDZfIGluXG4gICAgICAgIFNleHBsaWIwLlNleHAuTGlzdCBbIFNleHBsaWIwLlNleHAuQXRvbSBcInVuZXNjYXBlZFwiOyBhcmdfXzAwN18gXSA6OiBibmRzX18wMDFfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAwMV8gPVxuICAgICAgICBsZXQgYXJnX18wMDVfID0gc2V4cF9vZl9zdHJpbmcgYXRvbV9fMDA0XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJhdG9tXCI7IGFyZ19fMDA1XyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgIGxldCBhcmdfXzAwM18gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAwMl8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDAzXyBdIDo6IGJuZHNfXzAwMV9cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIkF0b21cIiA6OiBibmRzX18wMDFfKVxuICAgIHwgTGlzdCB7IGxvYyA9IGxvY19fMDA5XzsgZWxlbWVudHMgPSBlbGVtZW50c19fMDExXyB9IC0+XG4gICAgICBsZXQgYm5kc19fMDA4XyA9IFtdIGluXG4gICAgICBsZXQgYm5kc19fMDA4XyA9XG4gICAgICAgIGxldCBhcmdfXzAxMl8gPSBzZXhwX29mX2xpc3Qgc2V4cF9vZl90X29yX2NvbW1lbnQgZWxlbWVudHNfXzAxMV8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiZWxlbWVudHNcIjsgYXJnX18wMTJfIF0gOjogYm5kc19fMDA4X1xuICAgICAgaW5cbiAgICAgIGxldCBibmRzX18wMDhfID1cbiAgICAgICAgbGV0IGFyZ19fMDEwXyA9IFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY19fMDA5XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJsb2NcIjsgYXJnX18wMTBfIF0gOjogYm5kc19fMDA4X1xuICAgICAgaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdCAoU2V4cGxpYjAuU2V4cC5BdG9tIFwiTGlzdFwiIDo6IGJuZHNfXzAwOF8pXG4gICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuXG5hbmQgc2V4cF9vZl90X29yX2NvbW1lbnQgPVxuICAoZnVuY3Rpb25cbiAgICB8IFNleHAgYXJnMF9fMDEzXyAtPlxuICAgICAgbGV0IHJlczBfXzAxNF8gPSBzZXhwX29mX3QgYXJnMF9fMDEzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiU2V4cFwiOyByZXMwX18wMTRfIF1cbiAgICB8IENvbW1lbnQgYXJnMF9fMDE1XyAtPlxuICAgICAgbGV0IHJlczBfXzAxNl8gPSBzZXhwX29mX2NvbW1lbnQgYXJnMF9fMDE1XyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiQ29tbWVudFwiOyByZXMwX18wMTZfIF1cbiAgICAgIDogdF9vcl9jb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcblxuYW5kIHNleHBfb2ZfY29tbWVudCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGxhaW5fY29tbWVudCB7IGxvYyA9IGxvY19fMDE4XzsgY29tbWVudCA9IGNvbW1lbnRfXzAyMF8gfSAtPlxuICAgICAgbGV0IGJuZHNfXzAxN18gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAxN18gPVxuICAgICAgICBsZXQgYXJnX18wMjFfID0gc2V4cF9vZl9zdHJpbmcgY29tbWVudF9fMDIwXyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50XCI7IGFyZ19fMDIxXyBdIDo6IGJuZHNfXzAxN19cbiAgICAgIGluXG4gICAgICBsZXQgYm5kc19fMDE3XyA9XG4gICAgICAgIGxldCBhcmdfXzAxOV8gPSBQb3NpdGlvbnMuc2V4cF9vZl9yYW5nZSBsb2NfXzAxOF8gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jXCI7IGFyZ19fMDE5XyBdIDo6IGJuZHNfXzAxN19cbiAgICAgIGluXG4gICAgICBTZXhwbGliMC5TZXhwLkxpc3QgKFNleHBsaWIwLlNleHAuQXRvbSBcIlBsYWluX2NvbW1lbnRcIiA6OiBibmRzX18wMTdfKVxuICAgIHwgU2V4cF9jb21tZW50XG4gICAgICAgIHsgaGFzaF9zZW1pX3BvcyA9IGhhc2hfc2VtaV9wb3NfXzAyM19cbiAgICAgICAgOyBjb21tZW50cyA9IGNvbW1lbnRzX18wMjVfXG4gICAgICAgIDsgc2V4cCA9IHNleHBfXzAyN19cbiAgICAgICAgfSAtPlxuICAgICAgbGV0IGJuZHNfXzAyMl8gPSBbXSBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjhfID0gc2V4cF9vZl90IHNleHBfXzAyN18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic2V4cFwiOyBhcmdfXzAyOF8gXSA6OiBibmRzX18wMjJfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjZfID0gc2V4cF9vZl9saXN0IHNleHBfb2ZfY29tbWVudCBjb21tZW50c19fMDI1XyBpblxuICAgICAgICBTZXhwbGliMC5TZXhwLkxpc3QgWyBTZXhwbGliMC5TZXhwLkF0b20gXCJjb21tZW50c1wiOyBhcmdfXzAyNl8gXSA6OiBibmRzX18wMjJfXG4gICAgICBpblxuICAgICAgbGV0IGJuZHNfXzAyMl8gPVxuICAgICAgICBsZXQgYXJnX18wMjRfID0gUG9zaXRpb25zLnNleHBfb2ZfcG9zIGhhc2hfc2VtaV9wb3NfXzAyM18gaW5cbiAgICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiaGFzaF9zZW1pX3Bvc1wiOyBhcmdfXzAyNF8gXSA6OiBibmRzX18wMjJfXG4gICAgICBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IChTZXhwbGliMC5TZXhwLkF0b20gXCJTZXhwX2NvbW1lbnRcIiA6OiBibmRzX18wMjJfKVxuICAgICAgOiBjb21tZW50IC0+IFNleHBsaWIwLlNleHAudClcbjs7XG5cbltAQEBlbmRdXG5cbmxldCBjb21wYXJlID0gQ2FtbC5jb21wYXJlXG5sZXQgY29tcGFyZV90X29yX2NvbW1lbnQgPSBDYW1sLmNvbXBhcmVcbmxldCBjb21wYXJlX2NvbW1lbnQgPSBDYW1sLmNvbXBhcmVcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoU2V4cC50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChTZXhwLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChTZXhwLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20geyBhdG9tOyBfIH0gLT4gayAoU2V4cC5BdG9tIGF0b20pXG4gICAgICB8IExpc3QgeyBlbGVtZW50czsgXyB9IC0+IGZvcmdldF90b2NzIGVsZW1lbnRzIChmdW4geHMgLT4gayAoU2V4cC5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQXV0b21hdG9uX3N0YWNrX2ludGZcblxubW9kdWxlIEZvcl9jc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEVtcHR5XG4gICAgfCBUX29yX2NvbW1lbnQgb2YgQ3N0LnRfb3JfY29tbWVudCAqIHRcbiAgICB8IE9wZW4gb2YgUG9zaXRpb25zLnBvcyAqIHRcbiAgICB8IEluX3NleHBfY29tbWVudCBvZlxuICAgICAgICB7IGhhc2hfc2VtaV9wb3MgOiBQb3NpdGlvbnMucG9zXG4gICAgICAgIDsgcmV2X2NvbW1lbnRzIDogQ3N0LmNvbW1lbnQgbGlzdFxuICAgICAgICA7IHN0YWNrIDogdFxuICAgICAgICB9XG5cbiAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICBsZXQgZ2V0X21hbnkgPVxuICAgIGxldCByZWMgbG9vcCBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2NcbiAgICAgIHwgVF9vcl9jb21tZW50ICh0LCBzdGFjaykgLT4gbG9vcCAodCA6OiBhY2MpIHN0YWNrXG4gICAgICB8IE9wZW4gXyB8IEluX3NleHBfY29tbWVudCBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QuZ2V0X21hbnlcIlxuICAgIGluXG4gICAgZnVuIHN0YWNrIC0+IGxvb3AgW10gc3RhY2tcbiAgOztcbmVuZFxuXG5tb2R1bGUgSnVzdF9wb3NpdGlvbnMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gdW5pdFxuXG4gIGxldCBlbXB0eSA9ICgpXG5lbmRcblxudHlwZSB0ID1cbiAgfCBFbXB0eVxuICB8IE9wZW4gb2YgdFxuICB8IFNleHAgb2YgU2V4cC50ICogdFxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgZ2V0X3NpbmdsZSA9IGZ1bmN0aW9uXG4gIHwgU2V4cCAoc2V4cCwgRW1wdHkpIC0+IHNleHBcbiAgfCBfIC0+IGZhaWx3aXRoIFwiQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGVcIlxuOztcblxubGV0IGdldF9tYW55ID1cbiAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2NcbiAgICB8IE9wZW4gXyAtPiBmYWlsd2l0aCBcIkF1dG9tYXRvbl9zdGFjay5nZXRfbWFueVwiXG4gICAgfCBTZXhwIChzZXhwLCBzdGFjaykgLT4gbG9vcCAoc2V4cCA6OiBhY2MpIHN0YWNrXG4gIGluXG4gIGZ1biBzdGFjayAtPiBsb29wIFtdIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBTZXhwX2NvbW1lbnRcbiAgICB8IFNleHBcbmVuZFxuXG5tb2R1bGUgRm9yX2NzdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQgKCoqIFN0YXJ0aW5nIHBvc2l0aW9ucyBvZiB0aGUgY3VycmVudCB0b2tlbiAqKilcbiAgICA7IG11dGFibGUgdG9rZW5fc3RhcnRfcG9zIDogUG9zaXRpb25zLnBvc1xuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5tb2R1bGUgS2luZCA9IHN0cnVjdFxuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHwgUG9zaXRpb25zIDogKFBvc2l0aW9ucy5CdWlsZGVyLnQsIHVuaXQpIHRcbiAgICB8IFNleHAgOiAodW5pdCwgQXV0b21hdG9uX3N0YWNrLnQpIHRcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgOiAoUG9zaXRpb25zLkJ1aWxkZXIudCwgQXV0b21hdG9uX3N0YWNrLnQpIHRcbiAgICB8IENzdCA6IChGb3JfY3N0LnQsIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQpIHRcbmVuZFxuXG5tb2R1bGUgcmVjIFN0YXRlIDogc2lnXG4gIHR5cGUgKCd1LCAncykgdCA9XG4gICAgeyBtdXRhYmxlIGF1dG9tYXRvbl9zdGF0ZSA6IGludFxuICAgIDsga2luZCA6ICgndSwgJ3MpIEtpbmQudFxuICAgIDsgbXV0YWJsZSBkZXB0aCA6IGludCAoKiogTnVtYmVyIG9mIG9wZW5lZCAjfCB3aGVuIHBhcnNpbmcgYSBibG9jayBjb21tZW50ICopXG4gICAgOyBtdXRhYmxlIGJsb2NrX2NvbW1lbnRfZGVwdGggOiBpbnRcbiAgICAoKiogU3RhY2sgb2YgaWdub3JpbmcgZGVwdGhzOyB0aGUgY3VycmVudCBkZXB0aCBpcyBwdXNoZWRcbiAgICAgICAgZWFjaCB0aW1lIGEgIzsgY29tbWVudCBpcyBlbnRlcmVkLiAqKVxuICAgIDsgbXV0YWJsZSBpZ25vcmluZ19zdGFjayA6IGludCBsaXN0XG4gICAgKCoqIFdoZW4gcGFyc2luZyBhbiBlc2NhcGUgc2VxdWVuY2Ugb2YgdGhlIGZvcm0gXCJcXFxcTk5OXCIgb3IgXCJcXFxcWFhcIiwgdGhpcyBhY2N1bXVsYXRlc1xuICAgICAgICB0aGUgY29tcHV0ZWQgbnVtYmVyICopXG4gICAgOyBtdXRhYmxlIGVzY2FwZWRfdmFsdWUgOiBpbnQgKCoqIEJ1ZmZlciBmb3IgYWNjdW11bGF0aW5nIGF0b21zICopXG4gICAgOyBhdG9tX2J1ZmZlciA6IEJ1ZmZlci50XG4gICAgOyB1c2VyX3N0YXRlIDogJ3VcbiAgICA7IG1vZGUgOiAoJ3UsICdzKSBNb2RlLnRcbiAgICA7IG11dGFibGUgZnVsbF9zZXhwcyA6IGludFxuICAgIDsgbXV0YWJsZSBvZmZzZXQgOiBpbnQgKCoqIGdsb2JhbCBvZmZzZXQgKiopXG4gICAgOyBtdXRhYmxlIGxpbmVfbnVtYmVyIDogaW50XG4gICAgOyBtdXRhYmxlIGJvbF9vZmZzZXQgOiBpbnQgKCoqIG9mZnNldCBvZiBiZWdpbm5pbmcgb2YgbGluZSAqKilcbiAgICB9XG5lbmQgPVxuICBTdGF0ZVxuXG5hbmQgTW9kZSA6IHNpZ1xuICB0eXBlICgndSwgJ3MpIHQgPVxuICAgIHwgU2luZ2xlXG4gICAgfCBNYW55XG4gICAgfCBFYWdlciBvZlxuICAgICAgICB7IGdvdF9zZXhwIDogKCd1LCAncykgU3RhdGUudCAtPiAncyAtPiAnc1xuICAgICAgICA7IG11dGFibGUgbm9fc2V4cF9pc19lcnJvciA6IGJvb2xcbiAgICAgICAgfVxuZW5kID1cbiAgTW9kZVxuXG5tb2R1bGUgdHlwZSBBdXRvbWF0b25fc3RhdGUgPSBzaWdcbiAgbW9kdWxlIENvbnRleHQgPSBDb250ZXh0XG4gIG1vZHVsZSBGb3JfY3N0ID0gRm9yX2NzdFxuICBtb2R1bGUgS2luZCA9IEtpbmRcbiAgbW9kdWxlIE1vZGUgPSBNb2RlXG4gIG1vZHVsZSBTdGF0ZSA9IFN0YXRlXG5cbiAgdHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgU3RhdGUudFxuXG4gIHZhbCBjcmVhdGVcbiAgICA6ICA/aW5pdGlhbF9wb3M6UG9zaXRpb25zLnBvc1xuICAgIC0+ICgndSwgJ3MpIE1vZGUudFxuICAgIC0+ICgndSwgJ3MpIEtpbmQudFxuICAgIC0+ICgndSwgJ3MpIHRcblxuICB2YWwgcmVzZXQgOiA/cG9zOlBvc2l0aW9ucy5wb3MgLT4gXyB0IC0+IHVuaXRcbiAgdmFsIHBvc2l0aW9ucyA6IChQb3NpdGlvbnMuQnVpbGRlci50LCBfKSB0IC0+IFBvc2l0aW9ucy50XG4gIHZhbCBtb2RlIDogKCd1LCAncykgdCAtPiAoJ3UsICdzKSBNb2RlLnRcblxuICAoKiogTnVtYmVyIG9mIGNoYXJhY3RlcnMgZmVkIHRvIHRoZSBwYXJzZXIgKilcbiAgdmFsIG9mZnNldCA6IF8gdCAtPiBpbnRcblxuICAoKiogUG9zaXRpb24gaW4gdGhlIHRleHQgKilcbiAgdmFsIGxpbmUgOiBfIHQgLT4gaW50XG5cbiAgdmFsIGNvbHVtbiA6IF8gdCAtPiBpbnRcblxuICAoKiogV2hldGhlciB0aGVyZSBhcmUgc29tZSB1bmNsb3NlZCBwYXJlbnRoZXNlcyAqKVxuICB2YWwgaGFzX3VuY2xvc2VkX3BhcmVuIDogKCd1LCAncykgdCAtPiBib29sXG5cbiAgdmFsIHNldF9lcnJvcl9zdGF0ZSA6IF8gdCAtPiB1bml0XG5cbiAgKCoqLyoqKVxuXG4gICgqXyBPbmx5IGZvciBjb252ZXJ0aW5nIGVycm9ycyB0byB0aGUgb2xkIHBhcnNlciBlcnJvcnMgKilcbiAgdmFsIGF0b21fYnVmZmVyIDogXyB0IC0+IEJ1ZmZlci50XG5cbiAgKCpfIEZvciBjb3ZlcmF0ZSB0ZXN0cyAqKVxuICB2YWwgYXV0b21hdG9uX3N0YXRlIDogKCd1LCAncykgdCAtPiBpbnRcbiAgdmFsIGNvbnRleHQgOiBfIHQgLT4gQ29udGV4dC50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBBdXRvbWF0b25fc3RhdGVfaW50ZlxuXG50eXBlICgndSwgJ3MpIHQgPSAoJ3UsICdzKSBTdGF0ZS50XG5cbm9wZW4gU3RhdGVcblxubGV0IGluaXRpYWxfdXNlcl9zdGF0ZSA6IHR5cGUgdSBzLiAodSwgcykgS2luZC50IC0+IFBvc2l0aW9ucy5wb3MgLT4gdSA9XG4gIGZ1biBraW5kIGluaXRpYWxfcG9zIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5jcmVhdGUgfmluaXRpYWxfcG9zICgpXG4gIHwgU2V4cCAtPiAoKVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gUG9zaXRpb25zLkJ1aWxkZXIuY3JlYXRlIH5pbml0aWFsX3BvcyAoKVxuICB8IENzdCAtPlxuICAgICgqIFt0b2tlbl9zdGFydF9wb3NdIGlzIHNldCB0byBhIGR1bW15IGxvY2F0aW9uIGhlcmUuIEl0IGlzIHByb3Blcmx5IHNldCB3aGVuIHdlXG4gICAgICAgc3RhcnQgdG8gY2FwdHVyZSBhIHRva2VuIGZyb20gdGhlIGlucHV0ICopXG4gICAgeyB0b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDEyODsgdG9rZW5fc3RhcnRfcG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlIH1cbjs7XG5cbigqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9hdXRvbWF0b25fc3RhdGUucHJpbnRfY29uc3RhbnRzICgpICopXG5sZXQgaW5pdGlhbF9zdGF0ZSA9IDBcbmxldCBlcnJvcl9zdGF0ZSA9IDFcblxuKCokKilcblxubGV0IGNyZWF0ZSA/KGluaXRpYWxfcG9zID0gUG9zaXRpb25zLmJlZ2lubmluZ19vZl9maWxlKSBtb2RlIGtpbmQgPVxuICB7IGtpbmRcbiAgOyBkZXB0aCA9IDBcbiAgOyBhdXRvbWF0b25fc3RhdGUgPSBpbml0aWFsX3N0YXRlXG4gIDsgYmxvY2tfY29tbWVudF9kZXB0aCA9IDBcbiAgOyBpZ25vcmluZ19zdGFjayA9IFtdXG4gIDsgZXNjYXBlZF92YWx1ZSA9IDBcbiAgOyBhdG9tX2J1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMTI4XG4gIDsgdXNlcl9zdGF0ZSA9IGluaXRpYWxfdXNlcl9zdGF0ZSBraW5kIGluaXRpYWxfcG9zXG4gIDsgbW9kZVxuICA7IGZ1bGxfc2V4cHMgPSAwXG4gIDsgb2Zmc2V0ID0gaW5pdGlhbF9wb3Mub2Zmc2V0XG4gIDsgbGluZV9udW1iZXIgPSBpbml0aWFsX3Bvcy5saW5lXG4gIDsgYm9sX29mZnNldCA9IGluaXRpYWxfcG9zLm9mZnNldCAtIGluaXRpYWxfcG9zLmNvbFxuICB9XG47O1xuXG5sZXQgbW9kZSB0ID0gdC5tb2RlXG5sZXQgcG9zaXRpb25zIHQgPSBQb3NpdGlvbnMuQnVpbGRlci5jb250ZW50cyB0LnVzZXJfc3RhdGVcbmxldCBhdG9tX2J1ZmZlciB0ID0gdC5hdG9tX2J1ZmZlclxubGV0IG9mZnNldCBzdGF0ZSA9IHN0YXRlLm9mZnNldFxubGV0IGxpbmUgc3RhdGUgPSBzdGF0ZS5saW5lX251bWJlclxubGV0IGNvbHVtbiBzdGF0ZSA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbmxldCBwb3NpdGlvbiB0ID0geyBQb3NpdGlvbnMuY29sID0gY29sdW1uIHQ7IGxpbmUgPSBsaW5lIHQ7IG9mZnNldCA9IG9mZnNldCB0IH1cblxubGV0IHJlc2V0X3VzZXJfc3RhdGUgOiB0eXBlIHUgcy4gKHUsIHMpIHQgLT4gdW5pdCA9XG4gIGZ1biB0IC0+XG4gIG1hdGNoIHQua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IFBvc2l0aW9ucy5CdWlsZGVyLnJlc2V0IHQudXNlcl9zdGF0ZSAocG9zaXRpb24gdClcbiAgfCBTZXhwIC0+ICgpXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5yZXNldCB0LnVzZXJfc3RhdGUgKHBvc2l0aW9uIHQpXG4gIHwgQ3N0IC0+IEJ1ZmZlci5jbGVhciB0LnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyXG47O1xuXG5sZXQgcmVzZXQgPyhwb3MgPSBQb3NpdGlvbnMuYmVnaW5uaW5nX29mX2ZpbGUpIHQgPVxuICB0LmRlcHRoIDwtIDA7XG4gIHQuYXV0b21hdG9uX3N0YXRlIDwtIGluaXRpYWxfc3RhdGU7XG4gIHQuYmxvY2tfY29tbWVudF9kZXB0aCA8LSAwO1xuICB0Lmlnbm9yaW5nX3N0YWNrIDwtIFtdO1xuICB0LmVzY2FwZWRfdmFsdWUgPC0gMDtcbiAgdC5mdWxsX3NleHBzIDwtIDA7XG4gIHQub2Zmc2V0IDwtIHBvcy5vZmZzZXQ7XG4gIHQubGluZV9udW1iZXIgPC0gcG9zLmxpbmU7XG4gIHQuYm9sX29mZnNldCA8LSBwb3Mub2Zmc2V0IC0gcG9zLmNvbDtcbiAgcmVzZXRfdXNlcl9zdGF0ZSB0O1xuICBCdWZmZXIuY2xlYXIgdC5hdG9tX2J1ZmZlclxuOztcblxubGV0IGNvbnRleHQgc3RhdGUgOiBDb250ZXh0LnQgPVxuICBtYXRjaCBzdGF0ZS5pZ25vcmluZ19zdGFjayB3aXRoXG4gIHwgXyA6OiBfIC0+IFNleHBfY29tbWVudFxuICB8IFtdIC0+IFNleHBcbjs7XG5cbmxldCBoYXNfdW5jbG9zZWRfcGFyZW4gc3RhdGUgPSBzdGF0ZS5kZXB0aCA+IDBcbmxldCBzZXRfZXJyb3Jfc3RhdGUgc3RhdGUgPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGUgPC0gZXJyb3Jfc3RhdGVcbmxldCBhdXRvbWF0b25fc3RhdGUgc3RhdGUgPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGVcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgUmVhc29uID0gc3RydWN0XG4gICgqXyBTb21lIG9mIHRoZXNlIGNvbWUgZnJvbSBbUGFyc2V4cF9zeW1ib2xpY19hdXRvbWF0b24uUGFyc2VfZXJyb3JfcmVhc29uXS4gKilcbiAgdHlwZSB0ID1cbiAgICAoKiQgUGFyc2V4cF9jaW5hcHNfaGVscGVycy5HZW5fcGFyc2VfZXJyb3IucHJpbnRfY29uc3RydWN0b3JzICgpICopXG4gICAgfCBBdXRvbWF0b25faW5fZXJyb3Jfc3RhdGVcbiAgICB8IENvbW1lbnRfdG9rZW5faW5fdW5xdW90ZWRfYXRvbVxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfZGVjX2VzY2FwZVxuICAgIHwgVW5leHBlY3RlZF9jaGFyX3BhcnNpbmdfaGV4X2VzY2FwZVxuICAgIHwgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbiAgICB8IFVudGVybWluYXRlZF9ibG9ja19jb21tZW50XG4gICAgfCBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZ1xuICAgICgqJCopXG4gICAgfCBDbG9zZWRfcGFyZW5fd2l0aG91dF9vcGVuZWRcbiAgICB8IEVzY2FwZV9zZXF1ZW5jZV9vdXRfb2ZfcmFuZ2VcbiAgICB8IE5vX3NleHBfZm91bmRfaW5faW5wdXRcbiAgICB8IFNleHBfY29tbWVudF93aXRob3V0X3NleHBcbiAgICB8IFRvb19tYW55X3NleHBzXG4gICAgfCBVbmNsb3NlZF9wYXJlblxuZW5kXG5cbm1vZHVsZSB0eXBlIFBhcnNlX2Vycm9yID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxuICBpbmNsdWRlIHNpZ1xuICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBTZXhwbGliMC5TZXhwLnRcbiAgZW5kXG4gIFtAQG9jYW1sLmRvYyBcIkBpbmxpbmVcIl1cblxuICBbQEBAZW5kXVxuXG4gIHZhbCBwb3NpdGlvbiA6IHQgLT4gUG9zaXRpb25zLnBvc1xuICB2YWwgbWVzc2FnZSA6IHQgLT4gc3RyaW5nXG5cbiAgKCoqIFJlcG9ydCBhbiBlcnJvciBpbiBhIHN0eWxlIHNpbWlsYXIgdG8gT0NhbWwsIGZvciBpbnN0YW5jZTpcblxuICAgICAgRmlsZSBcImJsYWhcIiwgbGluZSA0MiwgY2hhcmFjdGVyIDEwOlxuICAgICAgRXJyb3I6IHMtZXhwcmVzc2lvbiBwYXJzaW5nIGVycm9yO1xuICAgICAgdW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmcuXG4gICopXG4gIHZhbCByZXBvcnQgOiBGb3JtYXQuZm9ybWF0dGVyIC0+IGZpbGVuYW1lOnN0cmluZyAtPiB0IC0+IHVuaXRcblxuICBleGNlcHRpb24gUGFyc2VfZXJyb3Igb2YgdFxuXG4gICgqKi8qKilcblxuICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgIG1vZHVsZSBSZWFzb24gPSBSZWFzb25cblxuICAgICgqKiBUbyBtYXRjaCB0aGUgb2xkIGJlaGF2aW9yLCB0aGUgb2xkIHBhcnNlciBzb21ldGltZXMgcmFpc2VkIFtGYWlsdXJlXSBhbmQgc29tZXRpbWVzXG4gICAgICAgIHJhaXNlZCBbUGFyc2VfZXJyb3JdICopXG4gICAgdmFsIG9sZF9wYXJzZXJfZXhuIDogdCAtPiBbIGBQYXJzZV9lcnJvciB8IGBGYWlsdXJlIF1cblxuICAgIHZhbCByYWlzZSA6IFJlYXNvbi50IC0+IFBvc2l0aW9ucy5wb3MgLT4gYXRfZW9mOmJvb2wgLT4gYXRvbV9idWZmZXI6QnVmZmVyLnQgLT4gJ2FcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBQYXJzZV9lcnJvcl9pbnRmXG5cbnR5cGUgdCA9XG4gIHsgcG9zaXRpb24gOiBQb3NpdGlvbnMucG9zXG4gIDsgbWVzc2FnZSA6IHN0cmluZ1xuICA7IG9sZF9wYXJzZXJfZXhuIDogWyBgUGFyc2VfZXJyb3IgfCBgRmFpbHVyZSBdXG4gIH1cblxubGV0IHNleHBfb2ZfdCB7IHBvc2l0aW9uOyBtZXNzYWdlOyBvbGRfcGFyc2VyX2V4biA9IF8gfSA6IFNleHAudCA9XG4gIExpc3RcbiAgICBbIExpc3QgWyBBdG9tIFwicG9zaXRpb25cIjsgUG9zaXRpb25zLnNleHBfb2ZfcG9zIHBvc2l0aW9uIF1cbiAgICA7IExpc3QgWyBBdG9tIFwibWVzc2FnZVwiOyBzZXhwX29mX3N0cmluZyBtZXNzYWdlIF1cbiAgICBdXG47O1xuXG5sZXQgcG9zaXRpb24gdCA9IHQucG9zaXRpb25cbmxldCBtZXNzYWdlIHQgPSB0Lm1lc3NhZ2VcbmxldCBvbGRfcGFyc2VyX2V4biB0ID0gdC5vbGRfcGFyc2VyX2V4blxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBwb3MgPSBwb3NpdGlvbiB0IGluXG4gIGxldCBtc2cgPSBtZXNzYWdlIHQgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVyICVkOlxcbkVycm9yOiBzLWV4cHJlc3Npb24gcGFyc2luZyBlcnJvcjtcXG4lc1xcblwiXG4gICAgZmlsZW5hbWVcbiAgICBwb3MubGluZVxuICAgIHBvcy5jb2xcbiAgICBtc2dcbjs7XG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgUGFyc2VfZXJyb3JdIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBzZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwicGFyc2VfZXJyb3IubWwuUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbjs7XG5cbltAQEBlbmRdXG5cbmxldCByYWlzZSAocmVhc29uIDogUmVhc29uLnQpIHBvc2l0aW9uIH5hdF9lb2YgfmF0b21fYnVmZmVyID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgICgqIFRoZXNlIG1lc3NhZ2VzIHdoZXJlIGNob29zZW4gc3VjaCB0aGF0IHdlIGNhbiBidWlsZCB0aGUgdmFyaW91cyBTZXhwbGliIHBhcnNpbmdcbiAgICAgICBmdW5jdGlvbnMgb24gdG9wIG9mIFBhcnNleHAgYW5kIGtlZXAgdGhlIHNhbWUgZXhjZXB0aW9ucy5cblxuICAgICAgIEF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcywgYSBzaW1wbGUgbGF5ZXIgb24gdG9wIG9mIHBhcnNleHAgdG8gaW1wbGVtZW50IHRoZVxuICAgICAgIHNleHBsaWIgQVBJIGlzIHBhc3NpbmcgYWxsIHRoZSBzZXhwbGliIHRlc3RzLlxuXG4gICAgICAgTm90ZSB0aGF0IHBhcnNleHAgbWF0Y2hlcyB0aGUgc2VtYW50aWMgb2YgU2V4cC5wYXJzZSB3aGljaCBpcyBzbGlnaHRseVxuICAgICAgIGRpZmZlcmVudCBmcm9tIHRoZSBvY2FtbGxleC9vY2FtbHlhY2MgYmFzZWQgcGFyc2VyIG9mIFNleHBsaWIuIFRoZSBsYXR0ZXIgb25lXG4gICAgICAgaXMgbGVzcyB0ZXN0ZWQgYW5kIGFzc3VtZWQgdG8gYmUgbGVzcyB1c2VkLiAqKVxuICAgIG1hdGNoIHJlYXNvbiB3aXRoXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19oZXhfZXNjYXBlIC0+IFwidW50ZXJtaW5hdGVkIGhleGFkZWNpbWFsIGVzY2FwZSBzZXF1ZW5jZVwiXG4gICAgfCBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlIC0+IFwidW50ZXJtaW5hdGVkIGRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlXCJcbiAgICB8IFVudGVybWluYXRlZF9xdW90ZWRfc3RyaW5nIC0+IFwidW50ZXJtaW5hdGVkIHF1b3RlZCBzdHJpbmdcIlxuICAgIHwgVW50ZXJtaW5hdGVkX2Jsb2NrX2NvbW1lbnQgLT4gXCJ1bnRlcm1pbmF0ZWQgYmxvY2sgY29tbWVudFwiXG4gICAgfCBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlIC0+IFwiZXNjYXBlIHNlcXVlbmNlIGluIHF1b3RlZCBzdHJpbmcgb3V0IG9mIHJhbmdlXCJcbiAgICB8IFVuY2xvc2VkX3BhcmVuIC0+IFwidW5jbG9zZWQgcGFyZW50aGVzZXMgYXQgZW5kIG9mIGlucHV0XCJcbiAgICB8IFRvb19tYW55X3NleHBzIC0+IFwicy1leHByZXNzaW9uIGZvbGxvd2VkIGJ5IGRhdGFcIlxuICAgIHwgQ2xvc2VkX3BhcmVuX3dpdGhvdXRfb3BlbmVkIC0+IFwidW5leHBlY3RlZCBjaGFyYWN0ZXI6ICcpJ1wiXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b20gLT5cbiAgICAgIGlmIFN0cmluZy5lcXVhbCAoQnVmZmVyLmNvbnRlbnRzIGF0b21fYnVmZmVyKSBcInxcIlxuICAgICAgdGhlbiBcImlsbGVnYWwgZW5kIG9mIGNvbW1lbnRcIlxuICAgICAgZWxzZSBcImNvbW1lbnQgdG9rZW5zIGluIHVucXVvdGVkIGF0b21cIlxuICAgIHwgU2V4cF9jb21tZW50X3dpdGhvdXRfc2V4cCAtPiBcInVudGVybWluYXRlZCBzZXhwIGNvbW1lbnRcIlxuICAgIHwgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3IgLT5cbiAgICAgIGlmIGF0X2VvZlxuICAgICAgdGhlbiBcInVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGFmdGVyIGNhcnJpYWdlIHJldHVyblwiXG4gICAgICBlbHNlIFwidW5leHBlY3RlZCBjaGFyYWN0ZXIgYWZ0ZXIgY2FycmlhZ2UgcmV0dXJuXCJcbiAgICB8IE5vX3NleHBfZm91bmRfaW5faW5wdXQgLT4gXCJubyBzLWV4cHJlc3Npb24gZm91bmQgaW4gaW5wdXRcIlxuICAgIHwgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlIC0+IGZhaWx3aXRoIFwiUGFyc2V4cC5QYXJzZXJfYXV0b21hdG9uOiBwYXJzZXIgaXMgZGVhZFwiXG4gIGluXG4gIGxldCBvbGRfcGFyc2VyX2V4biA9XG4gICAgbWF0Y2ggcmVhc29uLCBhdF9lb2Ygd2l0aFxuICAgIHwgVG9vX21hbnlfc2V4cHMsIF8gfCBfLCB0cnVlIC0+IGBGYWlsdXJlXG4gICAgfCBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b20sIF9cbiAgICAgIHdoZW4gU3RyaW5nLmVxdWFsIChCdWZmZXIuY29udGVudHMgYXRvbV9idWZmZXIpIFwifFwiIC0+IGBGYWlsdXJlXG4gICAgfCBfIC0+IGBQYXJzZV9lcnJvclxuICBpblxuICByYWlzZSAoUGFyc2VfZXJyb3IgeyBwb3NpdGlvbjsgbWVzc2FnZTsgb2xkX3BhcnNlcl9leG4gfSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBSZWFzb24gPSBSZWFzb25cblxuICBsZXQgb2xkX3BhcnNlcl9leG4gPSBvbGRfcGFyc2VyX2V4blxuICBsZXQgcmFpc2UgPSByYWlzZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQXV0b21hdG9uX3N0YXRlXG5vcGVuIFN0YXRlXG5cbmxldCByYWlzZV9lcnJvciA6IHR5cGUgYSBiLiAoYSwgYikgQXV0b21hdG9uX3N0YXRlLnQgLT4gXyA9XG4gIGZ1biBzdGF0ZSB+YXRfZW9mIHJlYXNvbiAtPlxuICBzZXRfZXJyb3Jfc3RhdGUgc3RhdGU7XG4gIFBhcnNlX2Vycm9yLlByaXZhdGUucmFpc2VcbiAgICByZWFzb25cbiAgICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlclxuICAgIDsgY29sID0gc3RhdGUub2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldFxuICAgIDsgb2Zmc2V0ID0gc3RhdGUub2Zmc2V0XG4gICAgfVxuICAgIH5hdF9lb2ZcbiAgICB+YXRvbV9idWZmZXI6c3RhdGUuYXRvbV9idWZmZXJcbjs7XG5cbnR5cGUgbm9ucmVjIGNvbnRleHQgPSBBdXRvbWF0b25fc3RhdGUuQ29udGV4dC50ID1cbiAgfCBTZXhwX2NvbW1lbnRcbiAgfCBTZXhwXG5cbmxldCBjb250ZXh0ID0gQXV0b21hdG9uX3N0YXRlLmNvbnRleHRcblxudHlwZSAoJ3UsICdzKSB0ID0gKCd1LCAncykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiAncyAtPiAnc1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0geyBmIDogJ3UgJ3MuICgndSwgJ3MpIHQgfSBbQEB1bmJveGVkXVxuZW5kXG5cbm1vZHVsZSBFcHNpbG9uID0gc3RydWN0XG4gIHR5cGUgKCd1LCAncykgdCA9ICgndSwgJ3MpIEF1dG9tYXRvbl9zdGF0ZS50IC0+ICdzIC0+ICdzXG5cbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0geyBmIDogJ3UgJ3MuICgndSwgJ3MpIHQgfSBbQEB1bmJveGVkXVxuICBlbmRcbmVuZFxuXG5sZXQgY3VycmVudF9wb3MgPyhkZWx0YSA9IDApIHN0YXRlIDogUG9zaXRpb25zLnBvcyA9XG4gIGxldCBvZmZzZXQgPSBzdGF0ZS5vZmZzZXQgKyBkZWx0YSBpblxuICB7IGxpbmUgPSBzdGF0ZS5saW5lX251bWJlcjsgY29sID0gb2Zmc2V0IC0gc3RhdGUuYm9sX29mZnNldDsgb2Zmc2V0IH1cbjs7XG5cbmxldCBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIHggPSBzdGF0ZS5hdXRvbWF0b25fc3RhdGUgPC0geFxubGV0IGFkdmFuY2Ugc3RhdGUgPSBzdGF0ZS5vZmZzZXQgPC0gc3RhdGUub2Zmc2V0ICsgMVxuXG5sZXQgYWR2YW5jZV9lb2wgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHVuaXQgPVxuICBmdW4gc3RhdGUgLT5cbiAgbGV0IG5ld2xpbmVfb2Zmc2V0ID0gc3RhdGUub2Zmc2V0IGluXG4gIHN0YXRlLm9mZnNldCA8LSBuZXdsaW5lX29mZnNldCArIDE7XG4gIHN0YXRlLmJvbF9vZmZzZXQgPC0gc3RhdGUub2Zmc2V0O1xuICBzdGF0ZS5saW5lX251bWJlciA8LSBzdGF0ZS5saW5lX251bWJlciArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBQb3NpdGlvbnMuQnVpbGRlci5hZGRfbmV3bGluZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6bmV3bGluZV9vZmZzZXRcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgUG9zaXRpb25zLkJ1aWxkZXIuYWRkX25ld2xpbmUgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0Om5ld2xpbmVfb2Zmc2V0XG4gIHwgXyAtPiAoKVxuOztcblxubGV0IGJsb2NrX2NvbW1lbnRfZGVwdGggc3RhdGUgPSBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoXG5cbmxldCBhZGRfdG9rZW5fY2hhciA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IENzdCAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBjaGFyO1xuICAgIHN0YWNrXG4gIHwgXyAtPiBzdGFja1xuOztcblxubGV0IGFkZF9hdG9tX2NoYXIgc3RhdGUgYyBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjO1xuICBzdGFja1xuOztcblxubGV0IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGlzX2lnbm9yaW5nIHN0YXRlID1cbiAgbWF0Y2ggY29udGV4dCBzdGF0ZSB3aXRoXG4gIHwgU2V4cCAtPiBmYWxzZVxuICB8IFNleHBfY29tbWVudCAtPiB0cnVlXG47O1xuXG5sZXQgaXNfbm90X2lnbm9yaW5nIHN0YXRlID0gbm90IChpc19pZ25vcmluZyBzdGF0ZSlcblxubGV0IGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGUgPVxuICBsZXQgaXNfc2luZ2xlID1cbiAgICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgICB8IFNpbmdsZSAtPiB0cnVlXG4gICAgfCBfIC0+IGZhbHNlXG4gIGluXG4gIGlmIGlzX3NpbmdsZSAmJiBzdGF0ZS5mdWxsX3NleHBzID4gMCAmJiBpc19ub3RfaWdub3Jpbmcgc3RhdGVcbiAgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIFRvb19tYW55X3NleHBzXG47O1xuXG5sZXQgYWRkX3BvcyBzdGF0ZSB+ZGVsdGEgPVxuICBQb3NpdGlvbnMuQnVpbGRlci5hZGQgc3RhdGUudXNlcl9zdGF0ZSB+b2Zmc2V0OihzdGF0ZS5vZmZzZXQgKyBkZWx0YSlcbjs7XG5cbmxldCBhZGRfZmlyc3RfY2hhciA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjaGFyO1xuICAoKiBGb3Igbm9uLXF1b3RlZCBhdG9tcywgd2Ugc2F2ZSBib3RoIHBvc2l0aW9ucyBhdCB0aGUgZW5kLiBXZSBjYW4gYWx3YXlzIGRldGVybWluZSB0aGVcbiAgICAgc3RhcnQgcG9zaXRpb24gZnJvbSB0aGUgZW5kIHBvc2l0aW9uIGFuZCB0aGUgYXRvbSBsZW5ndGggZm9yIG5vbi1xdW90ZWQgYXRvbXMuXG5cbiAgICAgRG9pbmcgaXQgdGhpcyB3YXkgYWxsb3dzIHVzIHRvIGRldGVjdCBzaW5nbGUgY2hhcmFjYXRlciBhdG9tcyBmb3Igd2hpY2ggd2UgbmVlZCB0b1xuICAgICBzYXZlIHRoZSBwb3NpdGlvbiB0d2ljZS4gKilcbiAgc3RhY2tcbjs7XG5cbmxldCBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnIyc7XG4gIHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfcXVvdGVkX3N0cmluZyA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBjaGVja19uZXdfc2V4cF9hbGxvd2VkIHN0YXRlO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT5cbiAgICBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgIHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgc3RhY2tcbiAgfCBDc3QgLT5cbiAgICBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvcyA8LSBjdXJyZW50X3BvcyBzdGF0ZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9idWZmZXIgJ1wiJztcbiAgICBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbjs7XG5cbmxldCBhZGRfZXNjYXBlZCBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IGMnID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICduJyAtPiAnXFxuJ1xuICAgIHwgJ3InIC0+ICdcXHInXG4gICAgfCAnYicgLT4gJ1xcYidcbiAgICB8ICd0JyAtPiAnXFx0J1xuICAgIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXCInIC0+IGNcbiAgICB8IF8gLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnXFxcXCc7XG4gICAgICBjXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciBjJztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayA9XG4gIEJ1ZmZlci5hZGRfY2hhciBzdGF0ZS5hdG9tX2J1ZmZlciAnXFxyJztcbiAgc3RhY2tcbjs7XG5cbmxldCBkZWNfdmFsIGMgPSBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnMCdcblxubGV0IGhleF92YWwgYyA9XG4gIG1hdGNoIGMgd2l0aFxuICB8ICcwJyAuLiAnOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gIHwgJ2EnIC4uICdmJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnYScgKyAxMFxuICB8IF8gLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ0EnICsgMTBcbjs7XG5cbmxldCBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIChzdGF0ZS5lc2NhcGVkX3ZhbHVlICogMTApICsgZGVjX3ZhbCBjO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIGlmIHZhbHVlID4gMjU1IHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgKENoYXIuY2hyIHZhbHVlKTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGNvbW1lbnRfYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGMgc3RhY2sgPVxuICBsZXQgdmFsdWUgPSAoc3RhdGUuZXNjYXBlZF92YWx1ZSAqIDEwKSArIGRlY192YWwgYyBpblxuICBzdGF0ZS5lc2NhcGVkX3ZhbHVlIDwtIDA7XG4gIGlmIHZhbHVlID4gMjU1IHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBFc2NhcGVfc2VxdWVuY2Vfb3V0X29mX3JhbmdlO1xuICBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjIHN0YWNrXG47O1xuXG5sZXQgYWRkX2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAoc3RhdGUuZXNjYXBlZF92YWx1ZSBsc2wgNCkgbG9yIGhleF92YWwgYztcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IGFkZF9sYXN0X2hleF9lc2NhcGVfY2hhciBzdGF0ZSBjIHN0YWNrID1cbiAgbGV0IHZhbHVlID0gKHN0YXRlLmVzY2FwZWRfdmFsdWUgbHNsIDQpIGxvciBoZXhfdmFsIGMgaW5cbiAgc3RhdGUuZXNjYXBlZF92YWx1ZSA8LSAwO1xuICBCdWZmZXIuYWRkX2NoYXIgc3RhdGUuYXRvbV9idWZmZXIgKENoYXIuY2hyIHZhbHVlKTtcbiAgYWRkX3Rva2VuX2NoYXIgc3RhdGUgYyBzdGFja1xuOztcblxubGV0IG9wZW5pbmcgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IGNoYXIgLT4gcyAtPiBzID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIGNoZWNrX25ld19zZXhwX2FsbG93ZWQgc3RhdGU7XG4gIHN0YXRlLmRlcHRoIDwtIHN0YXRlLmRlcHRoICsgMTtcbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+XG4gICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICBzdGFja1xuICB8IFNleHAgLT4gaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gT3BlbiBzdGFjayBlbHNlIHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgIHRoZW4gKFxuICAgICAgYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgIE9wZW4gc3RhY2spXG4gICAgZWxzZSBzdGFja1xuICB8IENzdCAtPiBPcGVuIChjdXJyZW50X3BvcyBzdGF0ZSwgc3RhY2spXG47O1xuXG5sZXQgZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlID1cbiAgUG9zaXRpb25zLkJ1aWxkZXIucmVzZXRcbiAgICBzdGF0ZS51c2VyX3N0YXRlXG4gICAgeyBsaW5lID0gc3RhdGUubGluZV9udW1iZXJcbiAgICA7IGNvbCA9IHN0YXRlLm9mZnNldCAtIHN0YXRlLmJvbF9vZmZzZXRcbiAgICA7IG9mZnNldCA9IHN0YXRlLm9mZnNldFxuICAgIH1cbjs7XG5cbmxldCByZXNldF9wb3NpdGlvbnMgOiB0eXBlIHUgcy4gKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50IC0+IHVuaXQgPVxuICBmdW4gc3RhdGUgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgUG9zaXRpb25zIC0+IGRvX3Jlc2V0X3Bvc2l0aW9ucyBzdGF0ZVxuICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT4gZG9fcmVzZXRfcG9zaXRpb25zIHN0YXRlXG4gIHwgU2V4cCAtPiAoKVxuICB8IENzdCAtPiAoKVxuOztcblxubGV0IHRvcGxldmVsX3NleHBfb3JfY29tbWVudF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGEgPVxuICBtYXRjaCBzdGF0ZS5tb2RlIHdpdGhcbiAgfCBTaW5nbGUgfCBNYW55IC0+IHN0YWNrXG4gIHwgRWFnZXIgeyBnb3Rfc2V4cCA9IGY7IF8gfSAtPlxuICAgICgqIE1vZGlmeSB0aGUgb2Zmc2V0IHNvIHRoYXQgW2ZdIGdldCBhIHN0YXRlIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnRcbiAgICAgICBzLWV4cHJlc3Npb24gKilcbiAgICBsZXQgc2F2ZWRfb2Zmc2V0ID0gc3RhdGUub2Zmc2V0IGluXG4gICAgc3RhdGUub2Zmc2V0IDwtIHN0YXRlLm9mZnNldCArIGRlbHRhO1xuICAgIGxldCBzYXZlZF9mdWxsX3NleHBzID0gc3RhdGUuZnVsbF9zZXhwcyBpblxuICAgIChtYXRjaCBmIHN0YXRlIHN0YWNrIHdpdGhcbiAgICAgfCBleGNlcHRpb24gZSAtPlxuICAgICAgIHNldF9lcnJvcl9zdGF0ZSBzdGF0ZTtcbiAgICAgICByYWlzZSBlXG4gICAgIHwgc3RhY2sgLT5cbiAgICAgICAoKiBUaGlzIGFzc2VydCBpcyBub3QgYSBmdWxsIHByb3RlY3Rpb24gYWdhaW5zdCB0aGUgdXNlciBtdXRhdGluZyB0aGUgc3RhdGUgYnV0XG4gICAgICAgICAgaXQgc2hvdWxkIGNhdGNoIG1vc3QgY2FzZXMuICopXG4gICAgICAgYXNzZXJ0IChzdGF0ZS5vZmZzZXQgPSBzYXZlZF9vZmZzZXQgKyBkZWx0YSAmJiBzdGF0ZS5mdWxsX3NleHBzID0gc2F2ZWRfZnVsbF9zZXhwcyk7XG4gICAgICAgc3RhdGUub2Zmc2V0IDwtIHNhdmVkX29mZnNldDtcbiAgICAgICByZXNldF9wb3NpdGlvbnMgc3RhdGU7XG4gICAgICAgc3RhY2spXG47O1xuXG5sZXQgaXNfdG9wX2xldmVsIHN0YXRlID0gaXNfbm90X2lnbm9yaW5nIHN0YXRlICYmIHN0YXRlLmRlcHRoID0gMFxuXG5sZXQgY29tbWVudF9hZGRlZF9hc3N1bWluZ19jc3Qgc3RhdGUgc3RhY2sgfmRlbHRhID1cbiAgaWYgaXNfdG9wX2xldmVsIHN0YXRlIHRoZW4gdG9wbGV2ZWxfc2V4cF9vcl9jb21tZW50X2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YSBlbHNlIHN0YWNrXG47O1xuXG5sZXQgbWF5YmVfcG9wX2lnbm9yaW5nX3N0YWNrIHN0YXRlID1cbiAgbWF0Y2ggc3RhdGUuaWdub3Jpbmdfc3RhY2sgd2l0aFxuICB8IGlubmVyX2NvbW1lbnRfZGVwdGggOjogX3RsIHdoZW4gaW5uZXJfY29tbWVudF9kZXB0aCA+IHN0YXRlLmRlcHRoIC0+XG4gICAgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjpmYWxzZSBTZXhwX2NvbW1lbnRfd2l0aG91dF9zZXhwXG4gIHwgaW5uZXJfY29tbWVudF9kZXB0aCA6OiB0bCB3aGVuIGlubmVyX2NvbW1lbnRfZGVwdGggPSBzdGF0ZS5kZXB0aCAtPlxuICAgIHN0YXRlLmlnbm9yaW5nX3N0YWNrIDwtIHRsO1xuICAgIHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgc2V4cF9hZGRlZCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gcyAtPiBkZWx0YTppbnQgLT4gcyA9XG4gIGZ1biBzdGF0ZSBzdGFjayB+ZGVsdGEgLT5cbiAgbGV0IGlzX2NvbW1lbnQgPSBtYXliZV9wb3BfaWdub3Jpbmdfc3RhY2sgc3RhdGUgaW5cbiAgaWYgaXNfdG9wX2xldmVsIHN0YXRlXG4gIHRoZW4gKFxuICAgIGlmIG5vdCBpc19jb21tZW50IHRoZW4gc3RhdGUuZnVsbF9zZXhwcyA8LSBzdGF0ZS5mdWxsX3NleHBzICsgMTtcbiAgICBpZiAobm90IGlzX2NvbW1lbnQpXG4gICAgICAgfHxcbiAgICAgICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgICAgICB8IENzdCAtPiB0cnVlXG4gICAgICAgfCBfIC0+IGZhbHNlXG4gICAgdGhlbiB0b3BsZXZlbF9zZXhwX29yX2NvbW1lbnRfYWRkZWQgc3RhdGUgc3RhY2sgfmRlbHRhXG4gICAgZWxzZSBzdGFjaylcbiAgZWxzZSBzdGFja1xuOztcblxubGV0IHJlYyBtYWtlX2xpc3QgYWNjIDogQXV0b21hdG9uX3N0YWNrLnQgLT4gQXV0b21hdG9uX3N0YWNrLnQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IE9wZW4gc3RhY2sgLT4gU2V4cCAoTGlzdCBhY2MsIHN0YWNrKVxuICB8IFNleHAgKHNleHAsIHN0YWNrKSAtPiBtYWtlX2xpc3QgKHNleHAgOjogYWNjKSBzdGFja1xuOztcblxubGV0IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IChzdGFjayA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQpXG4gIDogQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9XG4gIG1hdGNoIHN0YWNrIHdpdGhcbiAgfCBJbl9zZXhwX2NvbW1lbnQgciAtPlxuICAgIEluX3NleHBfY29tbWVudCB7IHIgd2l0aCByZXZfY29tbWVudHMgPSBjb21tZW50IDo6IHIucmV2X2NvbW1lbnRzIH1cbiAgfCBfIC0+IFRfb3JfY29tbWVudCAoQ29tbWVudCBjb21tZW50LCBzdGFjaylcbjs7XG5cbmxldCBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQgLT4gQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBJbl9zZXhwX2NvbW1lbnQgeyBoYXNoX3NlbWlfcG9zOyByZXZfY29tbWVudHM7IHN0YWNrIH0gLT5cbiAgICAgIGxldCBjb21tZW50IDogQ3N0LmNvbW1lbnQgPVxuICAgICAgICBTZXhwX2NvbW1lbnQgeyBoYXNoX3NlbWlfcG9zOyBjb21tZW50cyA9IExpc3QucmV2IHJldl9jb21tZW50czsgc2V4cCB9XG4gICAgICBpblxuICAgICAgYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2tcbiAgICB8IHN0YWNrIC0+IFRfb3JfY29tbWVudCAoU2V4cCBzZXhwLCBzdGFjaylcbjs7XG5cbmxldCByZWMgbWFrZV9saXN0X2NzdCBlbmRfcG9zIGFjYyA6IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LnQgLT4gQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBUX29yX2NvbW1lbnQgKHQsIHN0YWNrKSAtPiBtYWtlX2xpc3RfY3N0IGVuZF9wb3MgKHQgOjogYWNjKSBzdGFja1xuICAgIHwgT3BlbiAoc3RhcnRfcG9zLCBzdGFjaykgLT5cbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPSBMaXN0IHsgbG9jID0geyBzdGFydF9wb3M7IGVuZF9wb3MgfTsgZWxlbWVudHMgPSBhY2MgfSBpblxuICAgICAgYWRkX3NleHBfdG9fc3RhY2tfY3N0IHNleHAgc3RhY2tcbiAgICB8IEVtcHR5IHwgSW5fc2V4cF9jb21tZW50IF8gLT4gYXNzZXJ0IGZhbHNlXG47O1xuXG5sZXQgY2xvc2luZyA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgX2NoYXIgc3RhY2sgLT5cbiAgaWYgc3RhdGUuZGVwdGggPiAwXG4gIHRoZW4gKFxuICAgIGxldCBzdGFjayA6IHMgPVxuICAgICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgICB8IFBvc2l0aW9ucyAtPlxuICAgICAgICAoKiBOb3RlIHdlIHN0b3JlIGVuZCBwb3NpdGlvbnMgYXMgaW5jbHVzaXZlIGluIFtQb3NpdGlvbnMudF0sIHNvIHdlIHVzZSBbZGVsdGE6MF0sXG4gICAgICAgICAgIHdoaWxlIGluIHRoZSBbQ3N0XSBjYXNlIHdlIHNhdmUgZGlyZWN0bHkgdGhlIGZpbmFsIHJhbmdlcywgc28gd2UgdXNlXG4gICAgICAgICAgIFtkZWx0YToxXS4gKilcbiAgICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlIHRoZW4gYWRkX3BvcyBzdGF0ZSB+ZGVsdGE6MDtcbiAgICAgICAgc3RhY2tcbiAgICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBtYWtlX2xpc3QgW10gc3RhY2sgZWxzZSBzdGFja1xuICAgICAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+XG4gICAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTowO1xuICAgICAgICAgIG1ha2VfbGlzdCBbXSBzdGFjaylcbiAgICAgICAgZWxzZSBzdGFja1xuICAgICAgfCBDc3QgLT4gbWFrZV9saXN0X2NzdCAoY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOjEpIFtdIHN0YWNrXG4gICAgaW5cbiAgICBzdGF0ZS5kZXB0aCA8LSBzdGF0ZS5kZXB0aCAtIDE7XG4gICAgc2V4cF9hZGRlZCBzdGF0ZSBzdGFjayB+ZGVsdGE6MSlcbiAgZWxzZSByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOmZhbHNlIENsb3NlZF9wYXJlbl93aXRob3V0X29wZW5lZFxuOztcblxubGV0IG1ha2VfbG9jID8oZGVsdGEgPSAwKSAoc3RhdGUgOiAoQXV0b21hdG9uX3N0YXRlLkZvcl9jc3QudCwgXykgQXV0b21hdG9uX3N0YXRlLnQpXG4gIDogUG9zaXRpb25zLnJhbmdlXG4gID1cbiAgeyBzdGFydF9wb3MgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX3N0YXJ0X3BvczsgZW5kX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YSB9XG47O1xuXG4oKiBUaGlzIGlzIGFsd2F5cyBjYWxsZWQgb24gdGhlIHBvc2l0aW9uIGV4YWN0bHkgZm9sbG93aW5nIHRoZSBsYXN0IGNoYXJhY3RlciBvZiBhXG4gICBub24tcXVvdGVkIGF0b20gKilcbmxldCBhZGRfbm9uX3F1b3RlZF9hdG9tX3BvcyBzdGF0ZSB+YXRvbSA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIGF0b20gaW5cbiAgaWYgbGVuID0gMVxuICB0aGVuIFBvc2l0aW9ucy5CdWlsZGVyLmFkZF90d2ljZSBzdGF0ZS51c2VyX3N0YXRlIH5vZmZzZXQ6KHN0YXRlLm9mZnNldCAtIDEpXG4gIGVsc2UgKFxuICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOigtbGVuKTtcbiAgICBhZGRfcG9zIHN0YXRlIH5kZWx0YTooLTEpKVxuOztcblxubGV0IGVwc19wdXNoX2F0b20gOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIHN0YXRlLmF0b21fYnVmZmVyIGluXG4gIEJ1ZmZlci5jbGVhciBzdGF0ZS5hdG9tX2J1ZmZlcjtcbiAgbGV0IHN0YWNrIDogcyA9XG4gICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9ub25fcXVvdGVkX2F0b21fcG9zIHN0YXRlIH5hdG9tOnN0cjtcbiAgICAgIHN0YWNrXG4gICAgfCBTZXhwIC0+IGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIFNleHAgKEF0b20gc3RyLCBzdGFjaykgZWxzZSBzdGFja1xuICAgIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPlxuICAgICAgaWYgaXNfbm90X2lnbm9yaW5nIHN0YXRlXG4gICAgICB0aGVuIChcbiAgICAgICAgYWRkX25vbl9xdW90ZWRfYXRvbV9wb3Mgc3RhdGUgfmF0b206c3RyO1xuICAgICAgICBTZXhwIChBdG9tIHN0ciwgc3RhY2spKVxuICAgICAgZWxzZSBzdGFja1xuICAgIHwgQ3N0IC0+XG4gICAgICBsZXQgbG9jIDogUG9zaXRpb25zLnJhbmdlID1cbiAgICAgICAgeyBzdGFydF9wb3MgPSBjdXJyZW50X3BvcyBzdGF0ZSB+ZGVsdGE6KC1TdHJpbmcubGVuZ3RoIHN0cilcbiAgICAgICAgOyBlbmRfcG9zID0gY3VycmVudF9wb3Mgc3RhdGUgfmRlbHRhOjBcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCBzZXhwIDogQ3N0LnQgPSBBdG9tIHsgbG9jOyBhdG9tID0gc3RyOyB1bmVzY2FwZWQgPSBTb21lIHN0ciB9IGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICBpblxuICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YTowXG47O1xuXG5sZXQgcHVzaF9xdW90ZWRfYXRvbSA6IHR5cGUgdSBzLiAodSwgcykgdCA9XG4gIGZ1biBzdGF0ZSBfY2hhciBzdGFjayAtPlxuICBsZXQgc3RyID0gQnVmZmVyLmNvbnRlbnRzIHN0YXRlLmF0b21fYnVmZmVyIGluXG4gIEJ1ZmZlci5jbGVhciBzdGF0ZS5hdG9tX2J1ZmZlcjtcbiAgbGV0IHN0YWNrIDogcyA9XG4gICAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gICAgfCBQb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZSB0aGVuIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICBzdGFja1xuICAgIHwgU2V4cCAtPiBpZiBpc19ub3RfaWdub3Jpbmcgc3RhdGUgdGhlbiBTZXhwIChBdG9tIHN0ciwgc3RhY2spIGVsc2Ugc3RhY2tcbiAgICB8IFNleHBfd2l0aF9wb3NpdGlvbnMgLT5cbiAgICAgIGlmIGlzX25vdF9pZ25vcmluZyBzdGF0ZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wb3Mgc3RhdGUgfmRlbHRhOjA7XG4gICAgICAgIFNleHAgKEF0b20gc3RyLCBzdGFjaykpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgfCBDc3QgLT5cbiAgICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXCInO1xuICAgICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgbGV0IHNleHAgOiBDc3QudCA9XG4gICAgICAgIEF0b20geyBsb2MgPSBtYWtlX2xvYyBzdGF0ZSB+ZGVsdGE6MTsgYXRvbSA9IHN0cjsgdW5lc2NhcGVkID0gU29tZSBzIH1cbiAgICAgIGluXG4gICAgICBhZGRfc2V4cF90b19zdGFja19jc3Qgc2V4cCBzdGFja1xuICBpblxuICBzZXhwX2FkZGVkIHN0YXRlIHN0YWNrIH5kZWx0YToxXG47O1xuXG5sZXQgc3RhcnRfc2V4cF9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIF9jaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmlnbm9yaW5nX3N0YWNrIDwtIHN0YXRlLmRlcHRoIDo6IHN0YXRlLmlnbm9yaW5nX3N0YWNrO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBDc3QgLT5cbiAgICBJbl9zZXhwX2NvbW1lbnRcbiAgICAgIHsgaGFzaF9zZW1pX3BvcyA9IGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLTEpOyByZXZfY29tbWVudHMgPSBbXTsgc3RhY2sgfVxuICB8IF8gLT4gc3RhY2tcbjs7XG5cbmxldCBzdGFydF9ibG9ja19jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSBBdXRvbWF0b25fc3RhdGUudCAtPiBjaGFyIC0+IHMgLT4gcyA9XG4gIGZ1biBzdGF0ZSBjaGFyIHN0YWNrIC0+XG4gIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggPC0gc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCArIDE7XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgaWYgc3RhdGUuYmxvY2tfY29tbWVudF9kZXB0aCA9IDFcbiAgICB0aGVuIChcbiAgICAgIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fc3RhcnRfcG9zIDwtIGN1cnJlbnRfcG9zIHN0YXRlIH5kZWx0YTooLTEpO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyICcjJyk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbjs7XG5cbmxldCBlbmRfYmxvY2tfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQgLT4gY2hhciAtPiBzIC0+IHMgPVxuICBmdW4gc3RhdGUgY2hhciBzdGFjayAtPlxuICBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoIDwtIHN0YXRlLmJsb2NrX2NvbW1lbnRfZGVwdGggLSAxO1xuICBtYXRjaCBzdGF0ZS5raW5kIHdpdGhcbiAgfCBQb3NpdGlvbnMgLT4gc3RhY2tcbiAgfCBTZXhwIC0+IHN0YWNrXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBzdGFja1xuICB8IENzdCAtPlxuICAgIGxldCBidWYgPSBzdGF0ZS51c2VyX3N0YXRlLnRva2VuX2J1ZmZlciBpblxuICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgY2hhcjtcbiAgICBpZiBzdGF0ZS5ibG9ja19jb21tZW50X2RlcHRoID0gMFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgbGV0IGNvbW1lbnQgOiBDc3QuY29tbWVudCA9XG4gICAgICAgIFBsYWluX2NvbW1lbnQgeyBsb2MgPSBtYWtlX2xvYyBzdGF0ZSB+ZGVsdGE6MTsgY29tbWVudCA9IHMgfVxuICAgICAgaW5cbiAgICAgIGxldCBzdGFjayA9IGFkZF9jb21tZW50X3RvX3N0YWNrX2NzdCBjb21tZW50IHN0YWNrIGluXG4gICAgICBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGE6MSlcbiAgICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgc3RhcnRfbGluZV9jb21tZW50IDogdHlwZSB1IHMuICh1LCBzKSB0ID1cbiAgZnVuIHN0YXRlIGNoYXIgc3RhY2sgLT5cbiAgbWF0Y2ggc3RhdGUua2luZCB3aXRoXG4gIHwgQ3N0IC0+XG4gICAgc3RhdGUudXNlcl9zdGF0ZS50b2tlbl9zdGFydF9wb3MgPC0gY3VycmVudF9wb3Mgc3RhdGU7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGNoYXI7XG4gICAgc3RhY2tcbiAgfCBfIC0+IHN0YWNrXG47O1xuXG5sZXQgZW5kX2xpbmVfY29tbWVudCA6IHR5cGUgdSBzLiAodSwgcykgRXBzaWxvbi50ID1cbiAgZnVuIHN0YXRlIHN0YWNrIC0+XG4gIG1hdGNoIHN0YXRlLmtpbmQgd2l0aFxuICB8IFBvc2l0aW9ucyAtPiBzdGFja1xuICB8IFNleHAgLT4gc3RhY2tcbiAgfCBTZXhwX3dpdGhfcG9zaXRpb25zIC0+IHN0YWNrXG4gIHwgQ3N0IC0+XG4gICAgbGV0IGJ1ZiA9IHN0YXRlLnVzZXJfc3RhdGUudG9rZW5fYnVmZmVyIGluXG4gICAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICBsZXQgY29tbWVudCA6IENzdC5jb21tZW50ID0gUGxhaW5fY29tbWVudCB7IGxvYyA9IG1ha2VfbG9jIHN0YXRlOyBjb21tZW50ID0gcyB9IGluXG4gICAgbGV0IHN0YWNrID0gYWRkX2NvbW1lbnRfdG9fc3RhY2tfY3N0IGNvbW1lbnQgc3RhY2sgaW5cbiAgICBjb21tZW50X2FkZGVkX2Fzc3VtaW5nX2NzdCBzdGF0ZSBzdGFjayB+ZGVsdGE6MFxuOztcblxubGV0IGVwc19lb2lfY2hlY2sgOiB0eXBlIHUgcy4gKHUsIHMpIEVwc2lsb24udCA9XG4gIGZ1biBzdGF0ZSBzdGFjayAtPlxuICBpZiBzdGF0ZS5kZXB0aCA+IDAgdGhlbiByYWlzZV9lcnJvciBzdGF0ZSB+YXRfZW9mOnRydWUgVW5jbG9zZWRfcGFyZW47XG4gIGlmIGlzX2lnbm9yaW5nIHN0YXRlIHRoZW4gcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIFNleHBfY29tbWVudF93aXRob3V0X3NleHA7XG4gIGlmIHN0YXRlLmZ1bGxfc2V4cHMgPSAwXG4gIHRoZW4gKFxuICAgIG1hdGNoIHN0YXRlLm1vZGUgd2l0aFxuICAgIHwgTWFueSB8IEVhZ2VyIHsgbm9fc2V4cF9pc19lcnJvciA9IGZhbHNlOyBfIH0gLT4gKClcbiAgICB8IFNpbmdsZSB8IEVhZ2VyIHsgbm9fc2V4cF9pc19lcnJvciA9IHRydWU7IF8gfSAtPlxuICAgICAgcmFpc2VfZXJyb3Igc3RhdGUgfmF0X2VvZjp0cnVlIE5vX3NleHBfZm91bmRfaW5faW5wdXQpO1xuICBzdGFja1xuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZVxuICB8IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcbiAgfCBQYXJzaW5nX2F0b21cbiAgfCBQYXJzaW5nX2xpc3RcbiAgfCBQYXJzaW5nX3NleHBfY29tbWVudFxuICB8IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuW0BAZGVyaXZpbmdfaW5saW5lIHNleHBfb2ZdXG5cbmxldCBzZXhwX29mX3QgPVxuICAoZnVuY3Rpb25cbiAgICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcIlxuICAgIHwgUGFyc2luZ19uZXN0ZWRfd2hpdGVzcGFjZSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX25lc3RlZF93aGl0ZXNwYWNlXCJcbiAgICB8IFBhcnNpbmdfYXRvbSAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX2F0b21cIlxuICAgIHwgUGFyc2luZ19saXN0IC0+IFNleHBsaWIwLlNleHAuQXRvbSBcIlBhcnNpbmdfbGlzdFwiXG4gICAgfCBQYXJzaW5nX3NleHBfY29tbWVudCAtPiBTZXhwbGliMC5TZXhwLkF0b20gXCJQYXJzaW5nX3NleHBfY29tbWVudFwiXG4gICAgfCBQYXJzaW5nX2Jsb2NrX2NvbW1lbnQgLT4gU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2luZ19ibG9ja19jb21tZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHRvX3N0cmluZyB0ID1cbiAgbWF0Y2ggc2V4cF9vZl90IHQgd2l0aFxuICB8IEF0b20gcyAtPiBzXG4gIHwgTGlzdCBfIC0+IGZhaWx3aXRoIFwiQlVHOiBbc2V4cF9vZl90XSByZXR1cm5lZCBhIFtMaXN0IF9dXCJcbjs7XG4iLCJvcGVuIEF1dG9tYXRvbl9hY3Rpb25cblxubGV0IHJhaXNlID0gQXV0b21hdG9uX2FjdGlvbi5yYWlzZV9lcnJvclxuXG50eXBlIHUnXG50eXBlIHMnXG5cbigqJCBQYXJzZXhwX2NpbmFwc19oZWxwZXJzLkdlbl9hdXRvbWF0b25fdGFibGVzLnByaW50X2NvZGUgKCkgKilcbmxldCB0cl8wMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZmlyc3RfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMztcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wMCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDBfZiB9XG5cbmxldCB0cl8wMV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMV9mIH1cblxubGV0IHRyXzAyX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzAyIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wMl9mIH1cblxubGV0IHRyXzAzX2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzAzX2YgfVxuXG5sZXQgdHJfMDRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDRfZiB9XG5cbmxldCB0cl8wNV9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA3O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzA1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8wNV9mIH1cblxubGV0IHRyXzA2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDYgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA2X2YgfVxuXG5sZXQgdHJfMDdfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gY2xvc2luZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8wNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMDdfZiB9XG5cbmxldCB0cl8wOF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9saW5lX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA4X2YgfVxuXG5sZXQgdHJfMDlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2ZpcnN0X2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDU7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMDkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzA5X2YgfVxubGV0IHRyXzEwX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9IHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIEF1dG9tYXRvbl9pbl9lcnJvcl9zdGF0ZVxubGV0IHRyXzEwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMF9mIH1cbmxldCB0cl8xMV9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPSByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJhY3Rlcl9hZnRlcl9jclxubGV0IHRyXzExIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xMV9mIH1cblxubGV0IHRyXzEyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzEyX2YgfVxuXG5sZXQgdHJfMTNfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzEzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xM19mIH1cblxubGV0IHRyXzE0X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE0X2YgfVxuXG5sZXQgdHJfMTVfZiBzdGF0ZSBfY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xNV9mIH1cblxubGV0IHRyXzE2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gc3RhcnRfcXVvdGVkX3N0cmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMTZfZiB9XG5cbmxldCB0cl8xN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA0O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzE3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8xN19mIH1cblxubGV0IHRyXzE4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19wdXNoX2F0b20gc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gb3BlbmluZyBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8xOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMThfZiB9XG5cbmxldCB0cl8xOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGNsb3Npbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMTkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzE5X2YgfVxuXG5sZXQgdHJfMjBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBzdGFydF9saW5lX2NvbW1lbnQgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMjAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzIwX2YgfVxuXG5sZXQgdHJfMjFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjFfZiB9XG5cbmxldCB0cl8yMl9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBDb21tZW50X3Rva2VuX2luX3VucXVvdGVkX2F0b21cbjs7XG5cbmxldCB0cl8yMiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjJfZiB9XG5cbmxldCB0cl8yM19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yMyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjNfZiB9XG5cbmxldCB0cl8yNF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZW5kX2xpbmVfY29tbWVudCBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI0IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNF9mIH1cblxubGV0IHRyXzI1X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjVfZiB9XG5cbmxldCB0cl8yNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAzO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yNl9mIH1cblxubGV0IHRyXzI3X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yNyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjdfZiB9XG5cbmxldCB0cl8yOF9mIHN0YXRlIF9jaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzI4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8yOF9mIH1cblxubGV0IHRyXzI5X2Ygc3RhdGUgX2NoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8yOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMjlfZiB9XG5cbmxldCB0cl8zMF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IHN0YXJ0X3F1b3RlZF9zdHJpbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMwX2YgfVxuXG5sZXQgdHJfMzFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gYWRkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zMSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzFfZiB9XG5cbmxldCB0cl8zMl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IG9wZW5pbmcgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzMyX2YgfVxuXG5sZXQgdHJfMzNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9maXJzdF9jaGFyX2hhc2ggc3RhdGUgc3RhY2sgaW5cbiAgbGV0IHN0YWNrID0gZXBzX3B1c2hfYXRvbSBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBjbG9zaW5nIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzMzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl8zM19mIH1cblxubGV0IHRyXzM0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IHN0YXJ0X3NleHBfY29tbWVudCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzRfZiB9XG5cbmxldCB0cl8zNV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBzdGFydF9ibG9ja19jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzVfZiB9XG5cbmxldCB0cl8zNl9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zNiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzZfZiB9XG5cbmxldCB0cl8zN19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfcXVvdGVkX2F0b21fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZV9lb2wgc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfMzcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzM3X2YgfVxuXG5sZXQgdHJfMzhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gcHVzaF9xdW90ZWRfYXRvbSBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zOCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzhfZiB9XG5cbmxldCB0cl8zOV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl8zOSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfMzlfZiB9XG5cbmxldCB0cl80MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZXNjYXBlZCBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgODtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDBfZiB9XG5cbmxldCB0cl80MV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTU7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80MV9mIH1cblxubGV0IHRyXzQyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDJfZiB9XG5cbmxldCB0cl80M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxMTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80MyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDNfZiB9XG5cbmxldCB0cl80NF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ0X2YgfVxuXG5sZXQgdHJfNDVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gZXBzX2FkZF9lc2NhcGVkX2NyIHN0YXRlIHN0YWNrIGluXG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80NV9mIH1cblxubGV0IHRyXzQ2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzQ2IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl80Nl9mIH1cblxubGV0IHRyXzQ3X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVwc19hZGRfZXNjYXBlZF9jciBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl80NyA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNDdfZiB9XG5cbmxldCB0cl80OF9mIF9zdGF0ZSBfY2hhciBfc3RhY2sgPVxuICByYWlzZSBfc3RhdGUgfmF0X2VvZjpmYWxzZSBVbmV4cGVjdGVkX2NoYXJfcGFyc2luZ19kZWNfZXNjYXBlXG47O1xuXG5sZXQgdHJfNDggOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ4X2YgfVxuXG5sZXQgdHJfNDlfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTI7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNDkgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzQ5X2YgfVxuXG5sZXQgdHJfNTBfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2xhc3RfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzUwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81MF9mIH1cblxubGV0IHRyXzUxX2YgX3N0YXRlIF9jaGFyIF9zdGFjayA9XG4gIHJhaXNlIF9zdGF0ZSB+YXRfZW9mOmZhbHNlIFVuZXhwZWN0ZWRfY2hhcl9wYXJzaW5nX2hleF9lc2NhcGVcbjs7XG5cbmxldCB0cl81MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTFfZiB9XG5cbmxldCB0cl81Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfaGV4X2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTJfZiB9XG5cbmxldCB0cl81M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfbGFzdF9oZXhfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzUzX2YgfVxuXG5sZXQgdHJfNTRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3F1b3RlZF9hdG9tX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNTQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzU0X2YgfVxuXG5sZXQgdHJfNTVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE1O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81NV9mIH1cblxubGV0IHRyXzU2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF9xdW90ZWRfYXRvbV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA4O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTZfZiB9XG5cbmxldCB0cl81N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBwdXNoX3F1b3RlZF9hdG9tIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAwO1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81N19mIH1cblxubGV0IHRyXzU4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSA5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzU4IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl81OF9mIH1cblxubGV0IHRyXzU5X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl81OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNTlfZiB9XG5cbmxldCB0cl82MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTY7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYwIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82MF9mIH1cblxubGV0IHRyXzYxX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxOTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82MSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjFfZiB9XG5cbmxldCB0cl82Ml9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTg7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNjIgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzYyX2YgfVxuXG5sZXQgdHJfNjNfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE3O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzYzIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82M19mIH1cblxubGV0IHRyXzY0X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGVuZF9ibG9ja19jb21tZW50IHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAoaWYgYmxvY2tfY29tbWVudF9kZXB0aCBzdGF0ZSA8PiAwIHRoZW4gMTYgZWxzZSAwKTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjRfZiB9XG5cbmxldCB0cl82NV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMTk7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82NV9mIH1cblxubGV0IHRyXzY2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMDtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjZfZiB9XG5cbmxldCB0cl82N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjY7XG4gIGFkdmFuY2VfZW9sIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzY3IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl82N19mIH1cblxubGV0IHRyXzY4X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjhfZiB9XG5cbmxldCB0cl82OV9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfZGVjX2VzY2FwZV9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyMjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl82OSA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNjlfZiB9XG5cbmxldCB0cl83MF9mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjQ7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzAgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzcwX2YgfVxuXG5sZXQgdHJfNzFfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzcxIDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83MV9mIH1cblxubGV0IHRyXzcyX2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAxNjtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83MiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzJfZiB9XG5cbmxldCB0cl83M19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjA7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzMgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzczX2YgfVxuXG5sZXQgdHJfNzRfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX2RlY19lc2NhcGVfY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjM7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzQgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc0X2YgfVxuXG5sZXQgdHJfNzVfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gY29tbWVudF9hZGRfbGFzdF9kZWNfZXNjYXBlX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IHRyXzc1IDogQXV0b21hdG9uX2FjdGlvbi5Qb2x5LnQgPSB7IGYgPSB0cl83NV9mIH1cblxubGV0IHRyXzc2X2Ygc3RhdGUgY2hhciBzdGFjayA9XG4gIGxldCBzdGFjayA9IGFkZF90b2tlbl9jaGFyIHN0YXRlIGNoYXIgc3RhY2sgaW5cbiAgc2V0X2F1dG9tYXRvbl9zdGF0ZSBzdGF0ZSAyNTtcbiAgYWR2YW5jZSBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83NiA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzZfZiB9XG5cbmxldCB0cl83N19mIHN0YXRlIGNoYXIgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBhZGRfdG9rZW5fY2hhciBzdGF0ZSBjaGFyIHN0YWNrIGluXG4gIHNldF9hdXRvbWF0b25fc3RhdGUgc3RhdGUgMjY7XG4gIGFkdmFuY2Ugc3RhdGU7XG4gIHN0YWNrXG47O1xuXG5sZXQgdHJfNzcgOiBBdXRvbWF0b25fYWN0aW9uLlBvbHkudCA9IHsgZiA9IHRyXzc3X2YgfVxuXG5sZXQgdHJfNzhfZiBzdGF0ZSBjaGFyIHN0YWNrID1cbiAgbGV0IHN0YWNrID0gYWRkX3Rva2VuX2NoYXIgc3RhdGUgY2hhciBzdGFjayBpblxuICBzZXRfYXV0b21hdG9uX3N0YXRlIHN0YXRlIDE5O1xuICBhZHZhbmNlX2VvbCBzdGF0ZTtcbiAgc3RhY2tcbjs7XG5cbmxldCB0cl83OCA6IEF1dG9tYXRvbl9hY3Rpb24uUG9seS50ID0geyBmID0gdHJfNzhfZiB9XG5sZXQgdHJfZW9pXzAwX2Ygc3RhdGUgc3RhY2sgPSBlcHNfZW9pX2NoZWNrIHN0YXRlIHN0YWNrXG5sZXQgdHJfZW9pXzAwIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMF9mIH1cbmxldCB0cl9lb2lfMDFfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgQXV0b21hdG9uX2luX2Vycm9yX3N0YXRlXG5sZXQgdHJfZW9pXzAxIDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wMV9mIH1cbmxldCB0cl9lb2lfMDJfZiBzdGF0ZSBfc3RhY2sgPSByYWlzZSBzdGF0ZSB+YXRfZW9mOnRydWUgVW5leHBlY3RlZF9jaGFyYWN0ZXJfYWZ0ZXJfY3JcbmxldCB0cl9lb2lfMDIgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAyX2YgfVxuXG5sZXQgdHJfZW9pXzAzX2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDMgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzAzX2YgfVxuXG5sZXQgdHJfZW9pXzA0X2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlbmRfbGluZV9jb21tZW50IHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDQgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA0X2YgfVxuXG5sZXQgdHJfZW9pXzA1X2Ygc3RhdGUgc3RhY2sgPVxuICBsZXQgc3RhY2sgPSBlcHNfYWRkX2ZpcnN0X2NoYXJfaGFzaCBzdGF0ZSBzdGFjayBpblxuICBsZXQgc3RhY2sgPSBlcHNfcHVzaF9hdG9tIHN0YXRlIHN0YWNrIGluXG4gIGVwc19lb2lfY2hlY2sgc3RhdGUgc3RhY2tcbjs7XG5cbmxldCB0cl9lb2lfMDUgOiBBdXRvbWF0b25fYWN0aW9uLkVwc2lsb24uUG9seS50ID0geyBmID0gdHJfZW9pXzA1X2YgfVxubGV0IHRyX2VvaV8wNl9mIHN0YXRlIF9zdGFjayA9IHJhaXNlIHN0YXRlIH5hdF9lb2Y6dHJ1ZSBVbnRlcm1pbmF0ZWRfcXVvdGVkX3N0cmluZ1xubGV0IHRyX2VvaV8wNiA6IEF1dG9tYXRvbl9hY3Rpb24uRXBzaWxvbi5Qb2x5LnQgPSB7IGYgPSB0cl9lb2lfMDZfZiB9XG5sZXQgdHJfZW9pXzA3X2Ygc3RhdGUgX3N0YWNrID0gcmFpc2Ugc3RhdGUgfmF0X2VvZjp0cnVlIFVudGVybWluYXRlZF9ibG9ja19jb21tZW50XG5sZXQgdHJfZW9pXzA3IDogQXV0b21hdG9uX2FjdGlvbi5FcHNpbG9uLlBvbHkudCA9IHsgZiA9IHRyX2VvaV8wN19mIH1cblxubGV0IHRyYW5zaXRpb25zID1cbiAgW3wgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDJcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDNcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDFcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDRcbiAgIDsgdHJfMDVcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDZcbiAgIDsgdHJfMDdcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDhcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDlcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMDBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTBcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMDJcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMTdcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMTdcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTRcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTVcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTNcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTZcbiAgIDsgdHJfMjJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMThcbiAgIDsgdHJfMTlcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjBcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjFcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMTJcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjRcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjVcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjNcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjhcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjlcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjdcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzBcbiAgIDsgdHJfMzFcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzJcbiAgIDsgdHJfMzNcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzRcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzVcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMjZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzdcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzhcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzlcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfMzZcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDFcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDJcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDNcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDRcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDBcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDFcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDZcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDdcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDVcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDlcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNTBcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTJcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTNcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTVcbiAgIDsgdHJfNTZcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTVcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTdcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNThcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTRcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjJcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjNcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjRcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjNcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjBcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjJcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfMzVcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjVcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjZcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjdcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjhcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjlcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNzBcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNjdcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzJcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzNcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNzRcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNzVcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNDhcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNzZcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNjFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNTFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzdcbiAgIDsgdHJfNzhcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzdcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzJcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzNcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgIDsgdHJfNzFcbiAgfF1cbjs7XG5cbmxldCB0cmFuc2l0aW9uc19lb2kgPVxuICBbfCB0cl9lb2lfMDBcbiAgIDsgdHJfZW9pXzAxXG4gICA7IHRyX2VvaV8wMlxuICAgOyB0cl9lb2lfMDNcbiAgIDsgdHJfZW9pXzAzXG4gICA7IHRyX2VvaV8wM1xuICAgOyB0cl9lb2lfMDRcbiAgIDsgdHJfZW9pXzA1XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA2XG4gICA7IHRyX2VvaV8wNlxuICAgOyB0cl9lb2lfMDZcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICAgOyB0cl9lb2lfMDdcbiAgIDsgdHJfZW9pXzA3XG4gICA7IHRyX2VvaV8wN1xuICB8XVxuOztcblxubGV0IG9sZF9wYXJzZXJfYXBwcm94X2NvbnRfc3RhdGVzIDogT2xkX3BhcnNlcl9jb250X3N0YXRlLnQgYXJyYXkgPVxuICBbfCBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfbmVzdGVkX3doaXRlc3BhY2VcbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYXRvbVxuICAgOyBQYXJzaW5nX2F0b21cbiAgIDsgUGFyc2luZ19hdG9tXG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgIDsgUGFyc2luZ19ibG9ja19jb21tZW50XG4gICA7IFBhcnNpbmdfYmxvY2tfY29tbWVudFxuICAgOyBQYXJzaW5nX2Jsb2NrX2NvbW1lbnRcbiAgfF1cbjs7XG4oKiQqKVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU3RhY2sgPSBBdXRvbWF0b25fc3RhY2tcbmluY2x1ZGUgQXV0b21hdG9uX3N0YXRlXG5cbmxldCBmZWVkICh0eXBlIHUgcykgKHN0YXRlIDogKHUsIHMpIEF1dG9tYXRvbl9zdGF0ZS50KSBjaGFyIChzdGFjayA6IHMpIDogcyA9XG4gIGxldCBpZHggPSAoYXV0b21hdG9uX3N0YXRlIHN0YXRlIGxzbCA4KSBsb3IgQ2hhci5jb2RlIGNoYXIgaW5cbiAgQXV0b21hdG9uX3RhYmxlcy50cmFuc2l0aW9ucy4oaWR4KS5mIHN0YXRlIGNoYXIgc3RhY2tcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgZmVlZF9lb2kgKHR5cGUgdSBzKSAoc3RhdGUgOiAodSwgcykgQXV0b21hdG9uX3N0YXRlLnQpIChzdGFjayA6IHMpIDogcyA9XG4gIGxldCBzdGFjayA9IEF1dG9tYXRvbl90YWJsZXMudHJhbnNpdGlvbnNfZW9pLihhdXRvbWF0b25fc3RhdGUgc3RhdGUpLmYgc3RhdGUgc3RhY2sgaW5cbiAgc2V0X2Vycm9yX3N0YXRlIHN0YXRlO1xuICBzdGFja1xuOztcblxubGV0IG9sZF9wYXJzZXJfY29udF9zdGF0ZSBzdGF0ZSA6IE9sZF9wYXJzZXJfY29udF9zdGF0ZS50ID1cbiAgbWF0Y2ggY29udGV4dCBzdGF0ZSB3aXRoXG4gIHwgU2V4cF9jb21tZW50IC0+IFBhcnNpbmdfc2V4cF9jb21tZW50XG4gIHwgU2V4cCAtPlxuICAgIChtYXRjaFxuICAgICAgICggQXV0b21hdG9uX3RhYmxlcy5vbGRfcGFyc2VyX2FwcHJveF9jb250X3N0YXRlcy4oYXV0b21hdG9uX3N0YXRlIHN0YXRlKVxuICAgICAgICwgaGFzX3VuY2xvc2VkX3BhcmVuIHN0YXRlIClcbiAgICAgd2l0aFxuICAgICB8IFBhcnNpbmdfdG9wbGV2ZWxfd2hpdGVzcGFjZSwgdHJ1ZSAtPiBQYXJzaW5nX2xpc3RcbiAgICAgfCBzLCBfIC0+IHMpXG47O1xuXG5sZXQgcmVjIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgaSBzdG9wID1cbiAgaWYgaSA8IHN0b3BcbiAgdGhlbiAoXG4gICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHIgaSBpblxuICAgIGxldCBzdGFjayA9IGZlZWQgc3RhdGUgYyBzdGFjayBpblxuICAgIGZlZWRfc3Vic3RyaW5nX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgKGkgKyAxKSBzdG9wKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgcmVjIGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBpIHN0b3AgPVxuICBpZiBpIDwgc3RvcFxuICB0aGVuIChcbiAgICBsZXQgYyA9IEJ5dGVzLnVuc2FmZV9nZXQgc3RyIGkgaW5cbiAgICBsZXQgc3RhY2sgPSBmZWVkIHN0YXRlIGMgc3RhY2sgaW5cbiAgICBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgKGkgKyAxKSBzdG9wKVxuICBlbHNlIHN0YWNrXG47O1xuXG5sZXQgZmVlZF9zdWJzdHJpbmcgc3RhdGUgc3RyIH5wb3MgfmxlbiBzdGFjayA9XG4gIGxldCBzdHJfbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IHN0cl9sZW4gLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuZmVlZF9zdWJzdHJpbmdcIjtcbiAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayBwb3MgKHBvcyArIGxlbilcbjs7XG5cbmxldCBmZWVkX3N1YmJ5dGVzIHN0YXRlIHN0ciB+cG9zIH5sZW4gc3RhY2sgPVxuICBsZXQgc3RyX2xlbiA9IEJ5dGVzLmxlbmd0aCBzdHIgaW5cbiAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyA+IHN0cl9sZW4gLSBsZW4gdGhlbiBpbnZhbGlkX2FyZyBcIlBhcnNleHAuZmVlZF9zdWJieXRlc1wiO1xuICBmZWVkX3N1YmJ5dGVzX3Vuc2FmZSBzdHIgc3RhdGUgc3RhY2sgcG9zIChwb3MgKyBsZW4pXG47O1xuXG5sZXQgZmVlZF9zdHJpbmcgc3RhdGUgc3RyIHN0YWNrID1cbiAgZmVlZF9zdWJzdHJpbmdfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAwIChTdHJpbmcubGVuZ3RoIHN0cilcbjs7XG5cbmxldCBmZWVkX2J5dGVzIHN0YXRlIHN0ciBzdGFjayA9IGZlZWRfc3ViYnl0ZXNfdW5zYWZlIHN0ciBzdGF0ZSBzdGFjayAwIChCeXRlcy5sZW5ndGggc3RyKVxuXG5sZXQgZW1wdHlfc3RhY2sgOiB0eXBlIHUgcy4gKHUsIHMpIEtpbmQudCAtPiBzID0gZnVuY3Rpb25cbiAgfCBTZXhwIC0+IFN0YWNrLmVtcHR5XG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiBTdGFjay5lbXB0eVxuICB8IFBvc2l0aW9ucyAtPiBTdGFjay5KdXN0X3Bvc2l0aW9ucy5lbXB0eVxuICB8IENzdCAtPiBTdGFjay5Gb3JfY3N0LmVtcHR5XG47O1xuXG5sZXQgb2Zfc3Vic3RyaW5nICh0eXBlIHUgcykgKG1vZGUgOiAodSwgcykgTW9kZS50KSAoa2luZCA6ICh1LCBzKSBLaW5kLnQpIHMgfnBvcyB+bGVuID1cbiAgbGV0IHN0YXRlID0gY3JlYXRlIG1vZGUga2luZCBpblxuICBsZXQgc3RhY2sgPSBmZWVkX3N1YnN0cmluZyBzdGF0ZSBzIH5wb3MgfmxlbiAoZW1wdHlfc3RhY2sga2luZCkgaW5cbiAgc3RhdGUsIHN0YWNrXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHsgdXNlcl9leG4gOiBleG5cbiAgOyBzdWJfc2V4cCA6IFNleHAudFxuICA7IGxvY2F0aW9uIDogUG9zaXRpb25zLnJhbmdlIG9wdGlvblxuICB9XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW4geyB1c2VyX2V4biA9IHVzZXJfZXhuX18wMDJfOyBzdWJfc2V4cCA9IHN1Yl9zZXhwX18wMDRfOyBsb2NhdGlvbiA9IGxvY2F0aW9uX18wMDZfIH0gLT5cbiAgICAgbGV0IGJuZHNfXzAwMV8gPSBbXSBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA3XyA9IHNleHBfb2Zfb3B0aW9uIFBvc2l0aW9ucy5zZXhwX29mX3JhbmdlIGxvY2F0aW9uX18wMDZfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwibG9jYXRpb25cIjsgYXJnX18wMDdfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDA1XyA9IFNleHAuc2V4cF9vZl90IHN1Yl9zZXhwX18wMDRfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwic3ViX3NleHBcIjsgYXJnX18wMDVfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBsZXQgYm5kc19fMDAxXyA9XG4gICAgICAgbGV0IGFyZ19fMDAzXyA9IHNleHBfb2ZfZXhuIHVzZXJfZXhuX18wMDJfIGluXG4gICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwidXNlcl9leG5cIjsgYXJnX18wMDNfIF0gOjogYm5kc19fMDAxX1xuICAgICBpblxuICAgICBTZXhwbGliMC5TZXhwLkxpc3QgYm5kc19fMDAxX1xuICAgICA6IHQgLT4gU2V4cGxpYjAuU2V4cC50KVxuOztcblxuW0BAQGVuZF1cblxubGV0IHVzZXJfZXhuIHQgPSB0LnVzZXJfZXhuXG5sZXQgc3ViX3NleHAgdCA9IHQuc3ViX3NleHBcbmxldCBsb2NhdGlvbiB0ID0gdC5sb2NhdGlvblxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIGxldCBsaW5lLCBzdGFydCwgc3RvcCA9XG4gICAgbWF0Y2ggdC5sb2NhdGlvbiB3aXRoXG4gICAgfCBOb25lIC0+IDEsIDAsIDBcbiAgICB8IFNvbWUgeyBzdGFydF9wb3M7IGVuZF9wb3MgfSAtPlxuICAgICAgc3RhcnRfcG9zLmxpbmUsIHN0YXJ0X3Bvcy5jb2wsIHN0YXJ0X3Bvcy5jb2wgKyBlbmRfcG9zLm9mZnNldCAtIHN0YXJ0X3Bvcy5vZmZzZXRcbiAgaW5cbiAgRm9ybWF0LmZwcmludGZcbiAgICBwcGZcbiAgICBcIkZpbGUgXFxcIiVzXFxcIiwgbGluZSAlZCwgY2hhcmFjdGVycyAlZC0lZDpcXG5cXFxuICAgICBFcnJvcjogcy1leHByZXNzaW9uIGNvbnZlcnNpb24gZXJyb3I7XFxuXFxcbiAgICAgZXhjZXB0aW9uICVzXFxuXCJcbiAgICBmaWxlbmFtZVxuICAgIGxpbmVcbiAgICBzdGFydFxuICAgIHN0b3BcbiAgICAoU2V4cGxpYjAuU2V4cF9jb252LnByaW50ZXhjX3ByZWZlcl9zZXhwIHQudXNlcl9leG4pXG47O1xuXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciBvZiB0IFtAQGRlcml2aW5nX2lubGluZSBzZXhwX29mXVxuXG5sZXQgKCkgPVxuICBTZXhwbGliMC5TZXhwX2NvbnYuRXhuX2NvbnZlcnRlci5hZGQgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwOF8gLT5cbiAgICAgIGxldCByZXMwX18wMDlfID0gc2V4cF9vZl90IGFyZzBfXzAwOF8gaW5cbiAgICAgIFNleHBsaWIwLlNleHAuTGlzdFxuICAgICAgICBbIFNleHBsaWIwLlNleHAuQXRvbSBcIm9mX3NleHBfZXJyb3IubWwuT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDlfIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxuW0BAQGVuZF1cblxubGV0IHJhaXNlIH51c2VyX2V4biB+c3ViX3NleHAgfmxvY2F0aW9uID1cbiAgcmFpc2UgKE9mX3NleHBfZXJyb3IgeyB1c2VyX2V4bjsgc3ViX3NleHA7IGxvY2F0aW9uIH0pXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9XG4gIHwgUGFyc2VfZXJyb3Igb2YgUGFyc2VfZXJyb3IudFxuICB8IE9mX3NleHBfZXJyb3Igb2YgT2Zfc2V4cF9lcnJvci50XG5bQEBkZXJpdmluZ19pbmxpbmUgc2V4cF9vZl1cblxubGV0IHNleHBfb2ZfdCA9XG4gIChmdW5jdGlvblxuICAgIHwgUGFyc2VfZXJyb3IgYXJnMF9fMDAxXyAtPlxuICAgICAgbGV0IHJlczBfXzAwMl8gPSBQYXJzZV9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAxXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiUGFyc2VfZXJyb3JcIjsgcmVzMF9fMDAyXyBdXG4gICAgfCBPZl9zZXhwX2Vycm9yIGFyZzBfXzAwM18gLT5cbiAgICAgIGxldCByZXMwX18wMDRfID0gT2Zfc2V4cF9lcnJvci5zZXhwX29mX3QgYXJnMF9fMDAzXyBpblxuICAgICAgU2V4cGxpYjAuU2V4cC5MaXN0IFsgU2V4cGxpYjAuU2V4cC5BdG9tIFwiT2Zfc2V4cF9lcnJvclwiOyByZXMwX18wMDRfIF1cbiAgICAgIDogdCAtPiBTZXhwbGliMC5TZXhwLnQpXG47O1xuXG5bQEBAZW5kXVxuXG5sZXQgcmVwb3J0IHBwZiB+ZmlsZW5hbWUgdCA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFBhcnNlX2Vycm9yIGUgLT4gUGFyc2VfZXJyb3IucmVwb3J0IHBwZiB+ZmlsZW5hbWUgZVxuICB8IE9mX3NleHBfZXJyb3IgZSAtPiBPZl9zZXhwX2Vycm9yLnJlcG9ydCBwcGYgfmZpbGVuYW1lIGVcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgUGFyc2VyX2ludGZcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmxldCBraW5kX3RvX3N0YWNrXG4gIDogdHlwZSBzdGFjay5cbiAgICAoJ3N0YXRlLCBzdGFjaykgQXV0b21hdG9uX3N0YXRlLktpbmQudCAtPiAobW9kdWxlIFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gID1cbiAgZnVuICh0eXBlIHN0YXRlKSAoa2luZCA6IChzdGF0ZSwgc3RhY2spIEF1dG9tYXRvbl9zdGF0ZS5LaW5kLnQpIC0+XG4gIG1hdGNoIGtpbmQgd2l0aFxuICB8IFNleHAgLT4gKG1vZHVsZSBBdXRvbWF0b25fc3RhY2sgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuICB8IFBvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjay5KdXN0X3Bvc2l0aW9ucyA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgU2V4cF93aXRoX3Bvc2l0aW9ucyAtPiAobW9kdWxlIEF1dG9tYXRvbl9zdGFjayA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG4gIHwgQ3N0IC0+IChtb2R1bGUgQXV0b21hdG9uX3N0YWNrLkZvcl9jc3QgOiBTdGFjayB3aXRoIHR5cGUgdCA9IHN0YWNrKVxuOztcblxubGV0IG1ha2UgKHR5cGUgc3RhY2sgc3RhdGUgcGFyc2VkX3ZhbHVlKSBraW5kIG1vZGUgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlKVxuICA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBub25yZWMgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG5cbiAgICBtb2R1bGUgU3RhY2sgPSAodmFsIGtpbmRfdG9fc3RhY2sga2luZCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IChzdGF0ZSwgU3RhY2sudCkgQXV0b21hdG9uX3N0YXRlLnRcblxuICAgICAgbGV0IGNyZWF0ZSA/cG9zICgpID0gQS5jcmVhdGUgP2luaXRpYWxfcG9zOnBvcyBtb2RlIGtpbmRcbiAgICAgIGxldCByZXNldCA9IEEucmVzZXRcbiAgICAgIGxldCBvZmZzZXQgPSBBLm9mZnNldFxuICAgICAgbGV0IGxpbmUgPSBBLmxpbmVcbiAgICAgIGxldCBjb2x1bW4gPSBBLmNvbHVtblxuXG4gICAgICBsZXQgcG9zaXRpb24gdCA6IFBvc2l0aW9ucy5wb3MgPVxuICAgICAgICB7IG9mZnNldCA9IG9mZnNldCB0OyBsaW5lID0gbGluZSB0OyBjb2wgPSBjb2x1bW4gdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RvcCBzdGF0ZSA9IEEuc2V0X2Vycm9yX3N0YXRlIHN0YXRlXG4gICAgZW5kXG5cbiAgICBsZXQgZmVlZCA9IEEuZmVlZFxuICAgIGxldCBmZWVkX2VvaSBzdGF0ZSBzdGFjayA9IG1ha2VfdmFsdWUgc3RhdGUgKEEuZmVlZF9lb2kgc3RhdGUgc3RhY2spXG4gICAgbGV0IGZlZWRfc3Vic3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3Vic3RyaW5nXG4gICAgbGV0IGZlZWRfc3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3RyaW5nXG4gICAgbGV0IGZlZWRfc3ViYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9zdWJieXRlc1xuICAgIGxldCBmZWVkX2J5dGVzID0gQXV0b21hdG9uLmZlZWRfYnl0ZXNcblxuICAgIGxldCBwYXJzZV9zdHJpbmdfZXhuIHN0ciA9XG4gICAgICBsZXQgc3RhdGUgPSBTdGF0ZS5jcmVhdGUgKCkgaW5cbiAgICAgIGZlZWRfZW9pIHN0YXRlIChmZWVkX3N0cmluZyBzdGF0ZSBzdHIgU3RhY2suZW1wdHkpXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9zdHJpbmcgc3RyID1cbiAgICAgIG1hdGNoIHBhcnNlX3N0cmluZ19leG4gc3RyIHdpdGhcbiAgICAgIHwgeCAtPiBPayB4XG4gICAgICB8IGV4Y2VwdGlvbiBQYXJzZV9lcnJvci5QYXJzZV9lcnJvciBlIC0+IEVycm9yIGVcbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgbWFrZV9lYWdlciAodHlwZSBzdGFjayBzdGF0ZSBwYXJzZWRfdmFsdWUpIGtpbmQgbWFrZV92YWx1ZVxuICA6IChtb2R1bGUgU19lYWdlciB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlKVxuICA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSBub25yZWMgcGFyc2VkX3ZhbHVlID0gcGFyc2VkX3ZhbHVlXG5cbiAgICBtb2R1bGUgU3RhY2sgPSAodmFsIGtpbmRfdG9fc3RhY2sga2luZCA6IFN0YWNrIHdpdGggdHlwZSB0ID0gc3RhY2spXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBSZWFkX29ubHkgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gKHN0YXRlLCBTdGFjay50KSBBdXRvbWF0b25fc3RhdGUudFxuXG4gICAgICAgIGxldCBvZmZzZXQgPSBBLm9mZnNldFxuICAgICAgICBsZXQgbGluZSA9IEEubGluZVxuICAgICAgICBsZXQgY29sdW1uID0gQS5jb2x1bW5cblxuICAgICAgICBsZXQgcG9zaXRpb24gdCA6IFBvc2l0aW9ucy5wb3MgPVxuICAgICAgICAgIHsgb2Zmc2V0ID0gb2Zmc2V0IHQ7IGxpbmUgPSBsaW5lIHQ7IGNvbCA9IGNvbHVtbiB0IH1cbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFJlYWRfb25seVxuXG4gICAgICBsZXQgY3JlYXRlID9wb3MgPyhub19zZXhwX2lzX2Vycm9yID0gZmFsc2UpIGYgPVxuICAgICAgICBsZXQgZ290X3NleHAgc3RhdGUgc3RhY2sgPVxuICAgICAgICAgIGxldCBwYXJzZWRfdmFsdWUgPSBtYWtlX3ZhbHVlIHN0YXRlIHN0YWNrIGluXG4gICAgICAgICAgZiBzdGF0ZSBwYXJzZWRfdmFsdWU7XG4gICAgICAgICAgU3RhY2suZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgQS5jcmVhdGUgP2luaXRpYWxfcG9zOnBvcyAoRWFnZXIgeyBnb3Rfc2V4cDsgbm9fc2V4cF9pc19lcnJvciB9KSBraW5kXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVzZXQgPSBBLnJlc2V0XG4gICAgICBsZXQgc3RvcCB0ID0gQS5zZXRfZXJyb3Jfc3RhdGUgdFxuICAgICAgbGV0IG9sZF9wYXJzZXJfY29udF9zdGF0ZSB0ID0gQXV0b21hdG9uLm9sZF9wYXJzZXJfY29udF9zdGF0ZSB0XG4gICAgZW5kXG5cbiAgICBsZXQgZmVlZCA9IEEuZmVlZFxuICAgIGxldCBmZWVkX2VvaSBzdGF0ZSBzdGFjayA9IGlnbm9yZSAoQS5mZWVkX2VvaSBzdGF0ZSBzdGFjayA6IFN0YWNrLnQpXG4gICAgbGV0IGZlZWRfc3Vic3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3Vic3RyaW5nXG4gICAgbGV0IGZlZWRfc3RyaW5nID0gQXV0b21hdG9uLmZlZWRfc3RyaW5nXG4gICAgbGV0IGZlZWRfc3ViYnl0ZXMgPSBBdXRvbWF0b24uZmVlZF9zdWJieXRlc1xuICAgIGxldCBmZWVkX2J5dGVzID0gQXV0b21hdG9uLmZlZWRfYnl0ZXNcblxuICAgIG1vZHVsZSBMZXhidWZfY29uc3VtZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFN0YXRlLnRcblxuICAgICAgZXhjZXB0aW9uIEdvdF9zZXhwIG9mIHBhcnNlZF92YWx1ZSAqIFBvc2l0aW9ucy5wb3NcblxuICAgICAgbGV0IGdvdF9zZXhwIHN0YXRlIHBhcnNlZF92YWx1ZSA9XG4gICAgICAgIHJhaXNlX25vdHJhY2UgKEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIFN0YXRlLnBvc2l0aW9uIHN0YXRlKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSBTdGF0ZS5jcmVhdGUgZ290X3NleHBcblxuICAgICAgbGV0IHBvc19vZl9sZXhidWYgbGV4YnVmID1cbiAgICAgICAgbGV0IHAgPSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgaW5cbiAgICAgICAgeyBQb3NpdGlvbnMubGluZSA9IHAucG9zX2xudW07IGNvbCA9IHAucG9zX2NudW0gLSBwLnBvc19ib2w7IG9mZnNldCA9IHAucG9zX2NudW0gfVxuICAgICAgOztcblxuICAgICAgbGV0IHVwZGF0ZV9sZXhidWYgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpIChwb3MgOiBQb3NpdGlvbnMucG9zKSA9XG4gICAgICAgIGxldCBwID0gcG9zLm9mZnNldCAtIGxleGJ1Zi5sZXhfYWJzX3BvcyBpblxuICAgICAgICBsZXhidWYubGV4X2N1cnJfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIDwtIHA7XG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wXG4gICAgICAgIDwtIHsgbGV4YnVmLmxleF9jdXJyX3Agd2l0aFxuICAgICAgICAgICAgIHBvc19sbnVtID0gcG9zLmxpbmVcbiAgICAgICAgICAgOyBwb3NfY251bSA9IHBvcy5vZmZzZXRcbiAgICAgICAgICAgOyBwb3NfYm9sID0gcG9zLm9mZnNldCAtIHBvcy5jb2xcbiAgICAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBmZWVkX2xleGJ1ZiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSBzdGFjayA9XG4gICAgICAgIGxldCBzdGFjayA9XG4gICAgICAgICAgZmVlZF9zdWJieXRlc1xuICAgICAgICAgICAgdFxuICAgICAgICAgICAgbGV4YnVmLmxleF9idWZmZXJcbiAgICAgICAgICAgIHN0YWNrXG4gICAgICAgICAgICB+cG9zOmxleGJ1Zi5sZXhfY3Vycl9wb3NcbiAgICAgICAgICAgIH5sZW46KGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIGxleGJ1Zi5sZXhfY3Vycl9wb3MpXG4gICAgICAgIGluXG4gICAgICAgIGxleGJ1Zi5sZXhfY3Vycl9wb3MgPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuO1xuICAgICAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSBsZXhidWYubGV4X2J1ZmZlcl9sZW47XG4gICAgICAgIGlmIG5vdCBsZXhidWYubGV4X2VvZl9yZWFjaGVkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxleGJ1Zi5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICAgICAgZmVlZF9sZXhidWYgdCBsZXhidWYgc3RhY2spXG4gICAgICAgIGVsc2UgZmVlZF9lb2kgdCBzdGFja1xuICAgICAgOztcblxuICAgICAgbGV0IHBhcnNlX2dlbiB0IChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAgICAgIEEucmVzZXQgdCB+cG9zOihwb3Nfb2ZfbGV4YnVmIGxleGJ1Zik7XG4gICAgICAgIG1hdGNoIGZlZWRfbGV4YnVmIHQgbGV4YnVmIFN0YWNrLmVtcHR5IHdpdGhcbiAgICAgICAgfCAoKSAtPlxuICAgICAgICAgIHVwZGF0ZV9sZXhidWYgbGV4YnVmIChTdGF0ZS5wb3NpdGlvbiB0KTtcbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgZXhjZXB0aW9uIEdvdF9zZXhwIChwYXJzZWRfdmFsdWUsIHBvcykgLT5cbiAgICAgICAgICB1cGRhdGVfbGV4YnVmIGxleGJ1ZiBwb3M7XG4gICAgICAgICAgU29tZSBwYXJzZWRfdmFsdWVcbiAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgdXBkYXRlX2xleGJ1ZiBsZXhidWYgKFN0YXRlLnBvc2l0aW9uIHQpO1xuICAgICAgICAgIHJhaXNlIGV4blxuICAgICAgOztcblxuICAgICAgbGV0IHNldF9ub19zZXhwX2lzX2Vycm9yIHQgeCA9XG4gICAgICAgIG1hdGNoIEEubW9kZSB0IHdpdGhcbiAgICAgICAgfCBFYWdlciBlIC0+IGUubm9fc2V4cF9pc19lcnJvciA8LSB4XG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZSB0IGxleGJ1ZiA9XG4gICAgICAgIHNldF9ub19zZXhwX2lzX2Vycm9yIHQgdHJ1ZTtcbiAgICAgICAgbWF0Y2ggcGFyc2VfZ2VuIHQgbGV4YnVmIHdpdGhcbiAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJQYXJzZXhwLnBhcnNlX2dlbjogTm9uZVwiXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfb3B0IHQgbGV4YnVmID1cbiAgICAgICAgc2V0X25vX3NleHBfaXNfZXJyb3IgdCBmYWxzZTtcbiAgICAgICAgcGFyc2VfZ2VuIHQgbGV4YnVmXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbnZfaW50ZlxuXG5tb2R1bGUgTWFrZVxuICAgIChNb2RlIDogTW9kZSlcbiAgICAoU2V4cF9wYXJzZXIgOiBQYXJzZXIuUyB3aXRoIHR5cGUgcGFyc2VkX3ZhbHVlID0gTW9kZS5wYXJzZWRfc2V4cClcbiAgICAoUG9zaXRpb25zX3BhcnNlciA6IFBhcnNlci5TIHdpdGggdHlwZSBwYXJzZWRfdmFsdWUgPSBQb3NpdGlvbnMudCkgPVxuc3RydWN0XG4gIGxldCByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiB1c2VyX2V4biA9XG4gICAgbGV0IGxvY2F0aW9uID0gTW9kZS5maW5kIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgfnN1YiBpblxuICAgIE9mX3NleHBfZXJyb3IucmFpc2UgfnVzZXJfZXhuIH5zdWJfc2V4cDpzdWIgfmxvY2F0aW9uXG4gIDs7XG5cbiAgbGV0IHBhcnNlX3N0cmluZ19leG4gc3RyIGYgPVxuICAgIGxldCBwYXJzZWRfdmFsdWUgPSBTZXhwX3BhcnNlci5wYXJzZV9zdHJpbmdfZXhuIHN0ciBpblxuICAgIG1hdGNoIE1vZGUuYXBwbHlfZiBwYXJzZWRfdmFsdWUgfmYgd2l0aFxuICAgIHwgeCAtPiB4XG4gICAgfCBleGNlcHRpb24gU2V4cC5PZl9zZXhwX2Vycm9yIChleG4sIHN1YikgLT5cbiAgICAgIGxldCBwb3NpdGlvbnMgPSBQb3NpdGlvbnNfcGFyc2VyLnBhcnNlX3N0cmluZ19leG4gc3RyIGluXG4gICAgICByZXJhaXNlIHBvc2l0aW9ucyBwYXJzZWRfdmFsdWUgZXhuIH5zdWJcbiAgOztcblxuICBsZXQgcGFyc2Vfc3RyaW5nIHN0ciBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCBwYXJzZV9zdHJpbmdfZXhuIHN0ciBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yIGUgLT4gRXJyb3IgKFBhcnNlX2Vycm9yIGUpXG4gICAgfCBleGNlcHRpb24gT2Zfc2V4cF9lcnJvci5PZl9zZXhwX2Vycm9yIGUgLT4gRXJyb3IgKE9mX3NleHBfZXJyb3IgZSlcbiAgOztcblxuICBsZXQgY29udl9leG4gKHBhcnNlZF92YWx1ZSwgcG9zaXRpb25zKSBmID1cbiAgICBtYXRjaCBNb2RlLmFwcGx5X2YgcGFyc2VkX3ZhbHVlIH5mIHdpdGhcbiAgICB8IHggLT4geFxuICAgIHwgZXhjZXB0aW9uIFNleHAuT2Zfc2V4cF9lcnJvciAoZXhuLCBzdWIpIC0+IHJlcmFpc2UgcG9zaXRpb25zIHBhcnNlZF92YWx1ZSBleG4gfnN1YlxuICA7O1xuXG4gIGxldCBjb252IHggZiA9XG4gICAgbWF0Y2ggY29udl9leG4geCBmIHdpdGhcbiAgICB8IHggLT4gT2sgeFxuICAgIHwgZXhjZXB0aW9uIE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvciBlIC0+IEVycm9yIGVcbiAgOztcblxuICBsZXQgY29udl9jb21iaW5lIHJlc3VsdCBmIDogKF8sIENvbnZfZXJyb3IudCkgcmVzdWx0ID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoUGFyc2VfZXJyb3IgZSlcbiAgICB8IE9rIHggLT5cbiAgICAgIChtYXRjaCBjb252IHggZiB3aXRoXG4gICAgICAgfCBPayBfIGFzIHIgLT4gclxuICAgICAgIHwgRXJyb3IgZSAtPiBFcnJvciAoT2Zfc2V4cF9lcnJvciBlKSlcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENvbnYgPSBDb252LlNcbm1vZHVsZSB0eXBlIFBhcnNlciA9IFBhcnNlci5TXG5tb2R1bGUgdHlwZSBFYWdlcl9wYXJzZXIgPSBQYXJzZXIuU19lYWdlclxuXG5tb2R1bGUgQ29udl9lcnJvciA9IENvbnZfZXJyb3Jcbm1vZHVsZSBPZl9zZXhwX2Vycm9yID0gT2Zfc2V4cF9lcnJvclxubW9kdWxlIE9sZF9wYXJzZXJfY29udF9zdGF0ZSA9IE9sZF9wYXJzZXJfY29udF9zdGF0ZVxubW9kdWxlIFBhcnNlX2Vycm9yID0gUGFyc2VfZXJyb3Jcbm1vZHVsZSBQb3NpdGlvbnMgPSBQb3NpdGlvbnNcbm1vZHVsZSBDc3QgPSBDc3Rcbm1vZHVsZSBBID0gQXV0b21hdG9uXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBhcnNlX2Vycm9yLlBhcnNlX2Vycm9yXG5leGNlcHRpb24gT2Zfc2V4cF9lcnJvciA9IE9mX3NleHBfZXJyb3IuT2Zfc2V4cF9lcnJvclxuXG5sZXQgY29uc3QgYyBfID0gY1xuXG5tb2R1bGUgU2luZ2xlID0gKHZhbCBQYXJzZXIubWFrZSBTZXhwIFNpbmdsZSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxubW9kdWxlIE1hbnkgPSAodmFsIFBhcnNlci5tYWtlIFNleHAgTWFueSAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9tYW55KSlcbm1vZHVsZSBFYWdlciA9ICh2YWwgUGFyc2VyLm1ha2VfZWFnZXIgU2V4cCAoY29uc3QgQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUpKVxuXG5sZXQgYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHAgc3RhdGUgc3RhY2sgPSBnZXRfc2V4cCBzdGFjaywgQS5wb3NpdGlvbnMgc3RhdGVcblxubGV0IGFuZF9wb3NpdGlvbnMgbW9kZSBnZXRfc2V4cCA9XG4gIFBhcnNlci5tYWtlIFNleHBfd2l0aF9wb3NpdGlvbnMgbW9kZSAoYW5kX2dldF9wb3NpdGlvbnMgZ2V0X3NleHApXG47O1xuXG5tb2R1bGUgU2luZ2xlX2FuZF9wb3NpdGlvbnMgPSAodmFsIGFuZF9wb3NpdGlvbnMgU2luZ2xlIEF1dG9tYXRvbl9zdGFjay5nZXRfc2luZ2xlKVxubW9kdWxlIE1hbnlfYW5kX3Bvc2l0aW9ucyA9ICh2YWwgYW5kX3Bvc2l0aW9ucyBNYW55IEF1dG9tYXRvbl9zdGFjay5nZXRfbWFueSlcblxubW9kdWxlIEVhZ2VyX2FuZF9wb3NpdGlvbnMgPVxuICAodmFsIFBhcnNlci5tYWtlX2VhZ2VyXG4gICAgICAgICBTZXhwX3dpdGhfcG9zaXRpb25zXG4gICAgICAgICAoQXV0b21hdG9uX3N0YWNrLmdldF9zaW5nbGUgfD4gYW5kX2dldF9wb3NpdGlvbnMpKVxuXG5sZXQganVzdF9nZXRfcG9zaXRpb25zIHN0YXRlICgpID0gQS5wb3NpdGlvbnMgc3RhdGVcbmxldCBqdXN0X3Bvc2l0aW9ucyBtb2RlID0gUGFyc2VyLm1ha2UgUG9zaXRpb25zIG1vZGUganVzdF9nZXRfcG9zaXRpb25zXG5cbm1vZHVsZSBTaW5nbGVfanVzdF9wb3NpdGlvbnMgPSAodmFsIGp1c3RfcG9zaXRpb25zIFNpbmdsZSlcbm1vZHVsZSBNYW55X2p1c3RfcG9zaXRpb25zID0gKHZhbCBqdXN0X3Bvc2l0aW9ucyBNYW55KVxubW9kdWxlIEVhZ2VyX2p1c3RfcG9zaXRpb25zID0gKHZhbCBQYXJzZXIubWFrZV9lYWdlciBQb3NpdGlvbnMganVzdF9nZXRfcG9zaXRpb25zKVxuXG5sZXQgY3N0IG1vZGUgZiA9IFBhcnNlci5tYWtlIENzdCBtb2RlIChjb25zdCBmKVxuXG5tb2R1bGUgTWFueV9jc3QgPSAodmFsIGNzdCBNYW55IEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55KVxuXG5tb2R1bGUgRWFnZXJfY3N0ID1cbiAgKHZhbCBQYXJzZXIubWFrZV9lYWdlciBDc3QgKGZ1biBfIHN0YWNrIC0+XG4gICAgIG1hdGNoIEF1dG9tYXRvbl9zdGFjay5Gb3JfY3N0LmdldF9tYW55IHN0YWNrIHdpdGhcbiAgICAgfCBbIHNleHAgXSAtPiBzZXhwXG4gICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuXG50eXBlICdhIGlkID0gJ2FcbnR5cGUgc2V4cF9saXN0ID0gU2V4cC50IGxpc3RcblxubW9kdWxlIENvbnZfc2luZ2xlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBmIHhcbiAgICAgIGxldCBmaW5kID0gUG9zaXRpb25zLmZpbmRfc3ViX3NleHBfcGh5c1xuICAgIGVuZClcbiAgICAoU2luZ2xlKVxuICAgIChTaW5nbGVfanVzdF9wb3NpdGlvbnMpXG5cbm1vZHVsZSBDb252X21hbnkgPVxuICBDb252Lk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHJlcyA9ICdhIGxpc3RcbiAgICAgIHR5cGUgcGFyc2VkX3NleHAgPSBTZXhwLnQgbGlzdFxuICAgICAgdHlwZSBjaHVua190b19jb252ID0gU2V4cC50XG5cbiAgICAgIGxldCBhcHBseV9mIHggfmYgPSBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHggfmYpXG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIENvbnZfbWFueV9hdF9vbmNlID1cbiAgQ29udi5NYWtlXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSByZXMgPSAnYVxuICAgICAgdHlwZSBwYXJzZWRfc2V4cCA9IFNleHAudCBsaXN0XG4gICAgICB0eXBlIGNodW5rX3RvX2NvbnYgPSBTZXhwLnQgbGlzdFxuXG4gICAgICBsZXQgYXBwbHlfZiB4IH5mID0gZiB4XG4gICAgICBsZXQgZmluZCA9IFBvc2l0aW9ucy5maW5kX3N1Yl9zZXhwX2luX2xpc3RfcGh5c1xuICAgIGVuZClcbiAgICAoTWFueSlcbiAgICAoTWFueV9qdXN0X3Bvc2l0aW9ucylcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEF1dG9tYXRvbiA9IEF1dG9tYXRvblxuICBtb2R1bGUgQXV0b21hdG9uX3N0YWNrID0gQXV0b21hdG9uX3N0YWNrXG4gIG1vZHVsZSBBdXRvbWF0b25fc3RhdGUgPSBBdXRvbWF0b25fc3RhdGVcbiAgbW9kdWxlIFBvc2l0aW9ucyA9IFBvc2l0aW9uc1xuZW5kXG4iLCIoKiBmb3IgbGV4aW5nIHBvc2l0aW9uczpcbiAgIC0gbG51bSBzdGFydHMgZnJvbSAxXG4gICAtIGNudW0gc3RhcnRzIGZyb20gMFxuICAgLSBwb3NfYm9sIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBsaW5lXG5cbiAgIGZvciBhYnNvbHV0ZSBwb3M6XG4gICAtIHJvdyBzdGFydHMgZnJvbSAxXG4gICAtIGNvbCBzdGFydHMgZnJvbSAxXG5cbiAgIGZvciByZWxhdGl2ZSBwb3MsIG9idmlvdXNseSAwIG1lYW5zIHNhbWUgcG9zaXRpb25cbiopXG5cbigqIG9wZXJhdGlvbnMgdGhhdCBtYWtlIHNlbnNlIGZvciBib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBwb3NpdGlvbnMgKilcbm1vZHVsZSBQb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHJvdyA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgfVxuXG4gIGxldCBzZXhwX29mX3QgeyByb3c7IGNvbCB9ID0gVHlwZS5BdG9tIChQcmludGYuc3ByaW50ZiBcIiVkOiVkXCIgcm93IGNvbClcbiAgbGV0IGFkZCB0MSB0MiA9IHsgcm93ID0gdDEucm93ICsgdDIucm93OyBjb2wgPSB0MS5jb2wgKyB0Mi5jb2wgfVxuICBsZXQgc3ViIHQxIHQyID0geyByb3cgPSB0MS5yb3cgLSB0Mi5yb3c7IGNvbCA9IHQxLmNvbCAtIHQyLmNvbCB9XG5cbiAgbGV0IGNvbXBhcmUgeyByb3cgPSByMTsgY29sID0gYzEgfSB7IHJvdyA9IHIyOyBjb2wgPSBjMiB9ID1cbiAgICBpZiByMSA9IHIyIHRoZW4gYzEgLSBjMiBlbHNlIHIxIC0gcjJcbiAgOztcblxuICBsZXQgZ2VxIHQxIHQyID0gY29tcGFyZSB0MSB0MiA+PSAwXG5lbmRcblxubW9kdWxlIFJlbGF0aXZlID0gc3RydWN0XG4gIGluY2x1ZGUgUG9zXG5cbiAgbGV0IHplcm8gPSB7IHJvdyA9IDA7IGNvbCA9IDAgfVxuZW5kXG5cbm1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvc1xuXG4gIGxldCBvcmlnaW4gPSB7IHJvdyA9IDE7IGNvbCA9IDEgfVxuXG4gIGxldCBvZl9sZXhpbmcgeyBMZXhpbmcucG9zX2xudW07IHBvc19jbnVtOyBwb3NfYm9sOyBwb3NfZm5hbWUgPSBfIH0gPVxuICAgIHsgcm93ID0gcG9zX2xudW07IGNvbCA9IHBvc19jbnVtIC0gcG9zX2JvbCArIDEgfVxuICA7O1xuXG4gIGxldCBkaWZmID0gc3ViXG5lbmRcbiIsIigqKiBUeXBlIG9mIGFubm90YXRlZCBTLWV4cHJlc3Npb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbm1vZHVsZSBNYWtlIChQb3MgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBzZXhwX29mX3QgOiB0IC0+IFR5cGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICgqKiBJbiBbQXRvbSAoXywgcywgb3B0KV0sIFtzXSBpcyB0aGUgdW5lc2NhcGVkIHN0cmluZywgdGhhdCBpcyB0aGUgYXJndW1lbnQgb2ZcbiAgICAgICAgW1R5cGUuQXRvbV0uIFdoZW4gW29wdF0gaXMgZGVmaW5lZCwgaXQgaXMgdGhlIHNvdXJjZSBzeW50YXggb2YgW3NdLCB0aGF0IGlzIGFcbiAgICAgICAgc3RyaW5nIHRoYXQgY2FuIGJlIHByaW50ZWQgYXMgaXMgaWYgb25lIHdhbnRzIHRvIHBhcnNlIGFuZCBwcmludCBwcmVzZXJ2aW5nXG4gICAgICAgIHN5bnRheC4gVGhpcyBpcyB1c3VhbGx5IHNldCBmb3IgcXVvdGVkIGF0b21zICh0byBwcmVzZXJ2ZSB0aGUgZmFjdCB0aGF0IHdlcmVcbiAgICAgICAgcXVvdGVkKSwgYnV0IGl0IGNhbiBiZSB1c2VmdWwgdG8gZG8gdGhlIHJldmVyc2U6IHNldCBpdCBmb3IgYXRvbXMgdGhhdCBjYW4gYmVcbiAgICAgICAgcGFyc2VkIHVucXVvdGVkIGJ1dCB3b3VsZCBiZSBwcmludGVkIHdpdGggcXVvdGVzLCB0byBwcmVzZXJ2ZSB0aGUgbGFjayBvZiBxdW90ZXMuXG4gICAgICAgIEZvciBpbnN0YW5jZTpcbiAgICAgICAgQXRvbSAoXywgXCJhXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8YXx9XG4gICAgICAgIEF0b20gKF8sIFwiYSBiXCIsIE5vbmUpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhIGJcInx9XG4gICAgICAgIEF0b20gKF8sIFwiYVwiLCBTb21lIFwiXFxcImFcXFwiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8XCJhXCJ8fVxuICAgICAgICBBdG9tIChfLCBcImEgYlwiLCBTb21lIFwiYSBiXCIpIHNob3VsZCBiZSBwcmludGVkIHt8YSBifH0gb3IgbWF5IHJhaXNlLCBhcyBpdCBpc1xuICAgICAgICBhbiBlcnJvciB0byBjb25zdHJ1Y3RlZCBzdWNoIGFuIGF0b20gKGRvZXNuJ3QgcGFyc2UgYmFjaykgKilcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdG9tIG9mIFBvcy50ICogc3RyaW5nICogc3RyaW5nIG9wdGlvblxuICAgICAgfCBMaXN0IG9mIFBvcy50ICogdF9vcl9jb21tZW50IGxpc3QgKiBQb3MudFxuXG4gICAgKCogcG9zaXRpb25zIG9mIGxlZnQgYW5kIHJpZ2h0IHBhcmVucyAqKVxuICAgIGFuZCB0X29yX2NvbW1lbnQgPVxuICAgICAgfCBTZXhwIG9mIHRcbiAgICAgIHwgQ29tbWVudCBvZiBjb21tZW50XG5cbiAgICBhbmQgY29tbWVudCA9XG4gICAgICB8IFBsYWluX2NvbW1lbnQgb2YgUG9zLnQgKiBzdHJpbmdcbiAgICAgIHwgU2V4cF9jb21tZW50IG9mIFBvcy50ICogY29tbWVudCBsaXN0ICogdFxuICBlbmRcblxuICBpbmNsdWRlIFRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBUXG5cbiAgICB2YWwgc2V4cF9vZl90IDogdCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgc2V4cF9vZl90X29yX2NvbW1lbnQgOiB0X29yX2NvbW1lbnQgLT4gVHlwZS50XG4gIGVuZFxuXG4gIG1vZHVsZSBUb19zZXhwIDogc2lnXG4gICAgdmFsIG9mX3QgOiB0IC0+IFR5cGUudFxuICAgIHZhbCBvZl9jb21tZW50IDogY29tbWVudCAtPiBUeXBlLnRcbiAgICB2YWwgb2ZfdF9vcl9jb21tZW50IDogdF9vcl9jb21tZW50IC0+IFR5cGUudFxuICBlbmQgPSBzdHJ1Y3RcbiAgICAoKiBtYXliZSB3ZSBjYW4gYWN0dWFsbHkgdXNlIGNvbnYgaGVyZSwgaW5zdGVhZCBvZiBpbmxpbmluZyBpdCAqKVxuXG4gICAgbGV0IG9mX3BvcyA9IFBvcy5zZXhwX29mX3RcbiAgICBsZXQgb2Zfc3RyaW5nIHggPSBUeXBlLkF0b20geFxuICAgIGxldCBvZl9saXN0IG9mX2EgeHMgPSBUeXBlLkxpc3QgKExpc3QubWFwIH5mOm9mX2EgeHMpXG5cbiAgICBsZXQgb2Zfb3B0aW9uIG9mX2EgPSBmdW5jdGlvblxuICAgICAgfCBTb21lIHggLT4gVHlwZS5MaXN0IFsgb2ZfYSB4IF1cbiAgICAgIHwgTm9uZSAtPiBUeXBlLkxpc3QgW11cbiAgICA7O1xuXG4gICAgbGV0IHJlYyBvZl90ID0gZnVuY3Rpb25cbiAgICAgIHwgQXRvbSAodjEsIHYyLCB2MykgLT5cbiAgICAgICAgVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQXRvbVwiOyBvZl9wb3MgdjE7IG9mX3N0cmluZyB2Mjsgb2Zfb3B0aW9uIG9mX3N0cmluZyB2MyBdXG4gICAgICB8IExpc3QgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIkxpc3RcIjsgb2ZfcG9zIHYxOyBvZl9saXN0IG9mX3Rfb3JfY29tbWVudCB2Mjsgb2ZfcG9zIHYzIF1cblxuICAgIGFuZCBvZl90X29yX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwIHQgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiU2V4cFwiOyBvZl90IHQgXVxuICAgICAgfCBDb21tZW50IGMgLT4gVHlwZS5MaXN0IFsgVHlwZS5BdG9tIFwiQ29tbWVudFwiOyBvZl9jb21tZW50IGMgXVxuXG4gICAgYW5kIG9mX2NvbW1lbnQgPSBmdW5jdGlvblxuICAgICAgfCBQbGFpbl9jb21tZW50ICh2MSwgdjIpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlBsYWluX2NvbW1lbnRcIjsgb2ZfcG9zIHYxOyBvZl9zdHJpbmcgdjIgXVxuICAgICAgfCBTZXhwX2NvbW1lbnQgKHYxLCB2MiwgdjMpIC0+XG4gICAgICAgIFR5cGUuTGlzdCBbIFR5cGUuQXRvbSBcIlNleHBfY29tbWVudFwiOyBvZl9wb3MgdjE7IG9mX2xpc3Qgb2ZfY29tbWVudCB2Mjsgb2ZfdCB2MyBdXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRvX3NleHAub2ZfdFxuICBsZXQgc2V4cF9vZl9jb21tZW50ID0gVG9fc2V4cC5vZl9jb21tZW50XG4gIGxldCBzZXhwX29mX3Rfb3JfY29tbWVudCA9IFRvX3NleHAub2ZfdF9vcl9jb21tZW50XG5lbmRcblxuaW5jbHVkZSBNYWtlIChTcmNfcG9zLlJlbGF0aXZlKVxubW9kdWxlIFBhcnNlZCA9IE1ha2UgKFNyY19wb3MuQWJzb2x1dGUpXG5cbmxldCByZWxhdGl2aXplID1cbiAgbGV0IHJlbCB+b3V0ZXJfcCBwID0gU3JjX3Bvcy5BYnNvbHV0ZS5kaWZmIHAgb3V0ZXJfcCBpblxuICBsZXQgcmVjIGF1eF90IH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5BdG9tIChwb3MsIHMsIHNvcHQpIC0+IEF0b20gKHJlbCBwb3Mgfm91dGVyX3AsIHMsIHNvcHQpXG4gICAgfCBQYXJzZWQuTGlzdCAoc3RhcnRfcG9zLCB0b2NzLCBlbmRfcG9zKSAtPlxuICAgICAgTGlzdFxuICAgICAgICAoIHJlbCBzdGFydF9wb3Mgfm91dGVyX3BcbiAgICAgICAgLCBMaXN0Lm1hcCB0b2NzIH5mOihmdW4gdG9jIC0+IGF1eF90b2Mgfm91dGVyX3A6c3RhcnRfcG9zIHRvYylcbiAgICAgICAgLCByZWwgZW5kX3BvcyB+b3V0ZXJfcCApXG4gIGFuZCBhdXhfdG9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5TZXhwIHQgLT4gU2V4cCAoYXV4X3QgdCB+b3V0ZXJfcClcbiAgICB8IFBhcnNlZC5Db21tZW50IGMgLT4gQ29tbWVudCAoYXV4X2MgYyB+b3V0ZXJfcClcbiAgYW5kIGF1eF9jIH5vdXRlcl9wID0gZnVuY3Rpb25cbiAgICB8IFBhcnNlZC5QbGFpbl9jb21tZW50IChwb3MsIHR4dCkgLT4gUGxhaW5fY29tbWVudCAocmVsIHBvcyB+b3V0ZXJfcCwgdHh0KVxuICAgIHwgUGFyc2VkLlNleHBfY29tbWVudCAocG9zLCBjcywgdCkgLT5cbiAgICAgIFNleHBfY29tbWVudFxuICAgICAgICAocmVsIHBvcyB+b3V0ZXJfcCwgTGlzdC5tYXAgY3MgfmY6KGZ1biBjIC0+IGF1eF9jIH5vdXRlcl9wIGMpLCBhdXhfdCB0IH5vdXRlcl9wKVxuICBpblxuICBmdW4gdG9jIC0+IGF1eF90b2MgdG9jIH5vdXRlcl9wOlNyY19wb3MuQWJzb2x1dGUub3JpZ2luXG47O1xuIiwidHlwZSB0b2tlbiA9XG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG4gIHwgTFBBUkVOXG4gIHwgUlBBUkVOXG4gIHwgRU9GXG4gIHwgSEFTSF9TRU1JXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMiBcInNyYy9wYXJzZXIubWx5XCJcbiAgKCogUGFyc2VyOiBHcmFtbWFyIFNwZWNpZmljYXRpb24gZm9yIFBhcnNpbmcgUy1leHByZXNzaW9ucyAqKVxuXG4gIG9wZW4gTGV4aW5nXG5cbiAgbGV0IHBhcnNlX2ZhaWx1cmUgd2hhdCA9XG4gICAgbGV0IHBvcyA9IFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSBpblxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYgXCJTZXhwbGliLlBhcnNlcjogZmFpbGVkIHRvIHBhcnNlIGxpbmUgJWQgY2hhciAlZDogJXNcIlxuICAgICAgICBwb3MucG9zX2xudW0gKHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKSB3aGF0IGluXG4gICAgZmFpbHdpdGggbXNnXG5cbiMgMjMgXCJzcmMvcGFyc2VyLm1sXCJcbmxldCB5eXRyYW5zbF9jb25zdCA9IFt8XG4gIDI1OCAoKiBMUEFSRU4gKik7XG4gIDI1OSAoKiBSUEFSRU4gKik7XG4gICAgMCAoKiBFT0YgKik7XG4gIDI2MCAoKiBIQVNIX1NFTUkgKik7XG4gICAgMHxdXG5cbmxldCB5eXRyYW5zbF9ibG9jayA9IFt8XG4gIDI1NyAoKiBTVFJJTkcgKik7XG4gICAgMHxdXG5cbmxldCB5eWxocyA9IFwiXFwyNTVcXDI1NVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFwiXG5cbmxldCB5eWRlZnJlZCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMDlcXDAwMFxcMDEzXFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxMVxcMDAwXFwwMjJcXDAwMFxcMDI1XFwwMDBcXDAxNVxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXDAyMFxcMDAwXFwwMjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAxMFxcMDAwXFwwMTRcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMjFcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDA1XFwwMDBcXDAwOFxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMTBcXDAwMFxcMDE1XFwwMDBcXDAxOVxcMDAwXFwwMjRcXDAwMFxcMDExXFwwMDBcXDAyMFxcMDAwXFwwMjFcXDAwMFxcMDEzXFwwMDBcIlxuXG5sZXQgeXlzaW5kZXggPSBcIlxcMDQwXFwwMDBcXFxuXFwwMzRcXDI1NVxcMDAxXFwwMDBcXDAwNlxcMDAwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU4XFwyNTVcXFxuXFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAzNFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMjU1XFwwMzRcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NFxcMjU1XFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAyOVxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjg2XG5sZXQgeXl0YWJsZSA9IFwiXFwwMTZcXDAwMFxcXG5cXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAyOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyNVxcMDAwXFwwMDBcXDAwMFxcMDIzXFwwMDBcXDAyOVxcMDAwXFwwMjdcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAzOVxcMDAwXFwwMjJcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjJcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDM2XFwwMDBcXDAwMFxcMDAwXFwwMzZcXDAwMFxcXG5cXDAzMVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMjZcXDAwMFxcMDA5XFwwMDBcXDAwNlxcMDAwXFwwMDdcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDlcXDAwMFxcMDA2XFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwOVxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcIlxuXG5sZXQgeXljaGVjayA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMDhcXDAwMFxcMDExXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG5cXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyOFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDhcXDAwMFxcMDA0XFwwMDFcXDI1NVxcMjU1XFwwMTFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG5cXDAyOFxcMDAwXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcXG5cXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG5cXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcXG5cXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcXG5cXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDE3MCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzMyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMTc3IFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgKCBUeXBlLkF0b20gXzEgKVxuIyAxODQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgW10gKVxuIyAxOTAgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAzOCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUeXBlLkxpc3QgKExpc3QucmV2IF8yKSApXG4jIDE5NyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzkgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjAzIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIxMCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQzIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIxOCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgKCAoKSApXG4jIDIyNSBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc2V4cF9jb21tZW50cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NleHBfY29tbWVudHMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3IFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuIyAyMzMgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfY29tbWVudHMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MCBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggU29tZSBfMSApXG4jIDI0MCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxIFwic3JjL3BhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzIgKVxuIyAyNDggXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggTm9uZSApXG4jIDI1NCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgb3B0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2V4cF9jb21tZW50cykgaW5cbiAgICBPYmoucmVwcihcbiMgNTMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBOb25lIClcbiMgMjYxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICggW18xXSApXG4jIDI2OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTcgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICggW10gKVxuIyAyNzUgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9idXRfbm9fY29tbWVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTggXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyODMgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2V4cF9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjkxIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYXV4KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2F1eCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjIgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI5OCBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjMgXCJzcmMvcGFyc2VyLm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMDQgXCJzcmMvcGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZS50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzExIFwic3JjL3BhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGUudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NyBcInNyYy9wYXJzZXIubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDMxNyBcInNyYy9wYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlLnQgbGlzdCkpXG4oKiBFbnRyeSBzZXhwICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBfb3B0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHNleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHJldl9zZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBzZXhwIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAxIGxleGZ1biBsZXhidWYgOiBUeXBlLnQpXG5sZXQgc2V4cF9vcHQgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDIgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGUudCBsaXN0KVxubGV0IHJldl9zZXhwcyAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogVHlwZS50IGxpc3QpXG4iLCJ0eXBlIHRva2VuID1cbiAgfCBTVFJJTkcgb2YgKHN0cmluZyAqIChMZXhpbmcucG9zaXRpb24gKiBzdHJpbmcpIG9wdGlvbilcbiAgfCBDT01NRU5UIG9mIChzdHJpbmcgKiBMZXhpbmcucG9zaXRpb24gb3B0aW9uKVxuICB8IExQQVJFTlxuICB8IFJQQVJFTlxuICB8IEVPRlxuICB8IEhBU0hfU0VNSVxuXG5vcGVuIFBhcnNpbmc7O1xubGV0IF8gPSBwYXJzZV9lcnJvcjs7XG4jIDIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICgqIFBhcnNlcjogR3JhbW1hciBTcGVjaWZpY2F0aW9uIGZvciBQYXJzaW5nIFMtZXhwcmVzc2lvbnMgKilcbiAgKCogY29tcGFyZSB0byBwYXJzZXIubWx5ICopXG5cbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgcGFyc2VfZmFpbHVyZSB3aGF0ID1cbiAgICBsZXQgcG9zID0gUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpIGluXG4gICAgbGV0IG1zZyA9XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlNleHBsaWIuUGFyc2VyOiBmYWlsZWQgdG8gcGFyc2UgbGluZSAlZCBjaGFyICVkOiAlc1wiXG4gICAgICAgIHBvcy5wb3NfbG51bSAocG9zLnBvc19jbnVtIC0gcG9zLnBvc19ib2wpIHdoYXQgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBtb2R1bGUgV2l0aF9wb3MgPSBzdHJ1Y3RcblxuICAgIG9wZW4gVHlwZV93aXRoX2xheW91dC5QYXJzZWRcblxuICAgIGxldCBjb2VyY2UgPSBTcmNfcG9zLkFic29sdXRlLm9mX2xleGluZ1xuXG4gICAgbGV0IHN0YXJ0X3BvcyAoKSA9IGNvZXJjZSAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKVxuXG4gICAgbGV0IGVuZF9wb3MgKCkgPVxuICAgICAgbGV0IHAgPSBQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpIGluXG4gICAgICBjb2VyY2UgeyBwIHdpdGggTGV4aW5nLnBvc19jbnVtID0gcC5MZXhpbmcucG9zX2NudW0gLSAxIH1cblxuICAgIGxldCBhdG9tICh4LCB5KSA9XG4gICAgICBsZXQgKHBvcywgeSkgPVxuICAgICAgICBtYXRjaCB5IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IChzdGFydF9wb3MgKCksIFNvbWUgeClcbiAgICAgICAgfCBTb21lIChwb3MsIHgpIC0+IChjb2VyY2UgcG9zLCBTb21lIHgpXG4gICAgICBpblxuICAgICAgQXRvbSAocG9zLCB4LCB5KVxuXG4gICAgbGV0IGxpc3QgdHMgPSBMaXN0IChzdGFydF9wb3MgKCksIHRzLCBlbmRfcG9zICgpKVxuXG4gICAgbGV0IHNleHAgICAgeCA9IFNleHAgICAgeFxuICAgIGxldCBjb21tZW50IHggPSBDb21tZW50IHhcblxuICAgIGxldCBzZXhwX2NvbW1lbnQgY3MgdCA9IFNleHBfY29tbWVudCAoc3RhcnRfcG9zICgpLCBjcywgdClcblxuICAgIGxldCBwbGFpbl9jb21tZW50ICh4LCBwb3Nfb3B0KSA9XG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggcG9zX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdGFydF9wb3MgKClcbiAgICAgICAgfCBTb21lIHBvcyAtPiBjb2VyY2UgcG9zXG4gICAgICBpblxuICAgICAgUGxhaW5fY29tbWVudCAocG9zLCB4KVxuXG4gIGVuZFxuXG4jIDYyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAyNTkgKCogTFBBUkVOICopO1xuICAyNjAgKCogUlBBUkVOICopO1xuICAgIDAgKCogRU9GICopO1xuICAyNjEgKCogSEFTSF9TRU1JICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAyNTcgKCogU1RSSU5HICopO1xuICAyNTggKCogQ09NTUVOVCAqKTtcbiAgICAwfF1cblxubGV0IHl5bGhzID0gXCJcXDI1NVxcMjU1XFxcblxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFxcblxcMDEwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5bGVuID0gXCJcXDAwMlxcMDAwXFxcblxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDA0XFwwMDBcXDAxMFxcMDAwXFwwMDZcXDAwMFxcMDIyXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEyXFwwMDBcXDAxNFxcMDAwXFxcblxcMDEzXFwwMDBcXDAyM1xcMDAwXFwwMjBcXDAwMFxcMDE1XFwwMDBcXDAyNFxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDE4XFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDE2XFwwMDBcXDAyMVxcMDAwXFxcblxcMDExXFwwMDBcXDAxN1xcMDAwXFwwMDJcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA2XFwwMDBcXFxuXFwwMjBcXDAwMFxcMDE4XFwwMDBcXDAyMVxcMDAwXFwwMjNcXDAwMFxcMDI2XFwwMDBcXDAxM1xcMDAwXFwwMjRcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDE1XFwwMDBcXDAyMlxcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDAzN1xcMDAwXFxcblxcMDA5XFwyNTVcXDAwMVxcMDAwXFwwMDdcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAyNVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwyNTVcXDAwOVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5cmluZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCJcblxubGV0IHl5Z2luZGV4ID0gXCJcXDAwMFxcMDAwXFxcblxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjdcXDI1NVxcMjUxXFwyNTVcXDIzNVxcMjU1XFxcblxcMDAwXFwwMDBcXDIzNFxcMjU1XFwwMTBcXDAwMFwiXG5cbmxldCB5eXRhYmxlc2l6ZSA9IDI5MlxubGV0IHl5dGFibGUgPSBcIlxcMDM2XFwwMDBcXFxuXFwwMTZcXDAwMFxcMDMzXFwwMDBcXDAxMlxcMDAwXFwwMTdcXDAwMFxcMDI4XFwwMDBcXDAzM1xcMDAwXFwwMTlcXDAwMFxcMDM3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDI1XFwwMDBcXDAxMVxcMDAwXFwwMjdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMzVcXDAwMFxcMDExXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXFxuXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMDdcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAyNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAxMFxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAyOVxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwMFxcMDAwXFwwMDVcXDAwMVxcMDA1XFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcblxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFxcblxcMDA0XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMDA1XFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgTFBBUkVOXFwwMDBcXFxuICBSUEFSRU5cXDAwMFxcXG4gIEVPRlxcMDAwXFxcbiAgSEFTSF9TRU1JXFwwMDBcXFxuICBcIlxuXG5sZXQgeXluYW1lc19ibG9jayA9IFwiXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBDT01NRU5UXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcgKiAoTGV4aW5nLnBvc2l0aW9uICogc3RyaW5nKSBvcHRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAoIFdpdGhfcG9zLmF0b20gXzEgKVxuIyAyMTQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgNzYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggV2l0aF9wb3MubGlzdCAoTGlzdC5yZXYgXzIpIClcbiMgMjIxIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgKCBwYXJzZV9mYWlsdXJlIFwic2V4cFwiIClcbiMgMjI3IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nICogTGV4aW5nLnBvc2l0aW9uIG9wdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgODAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAoIFdpdGhfcG9zLnBsYWluX2NvbW1lbnQgXzEgKVxuIyAyMzQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbW1lbnRfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYnV0X25vX2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4MSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLnNleHBfY29tbWVudCAoTGlzdC5yZXYgXzIpIF8zIClcbiMgMjQyIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb21tZW50X2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjQ4IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfY29tbWVudHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X2NvbW1lbnRzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyNTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9jb21tZW50c19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2J1dF9ub19jb21tZW50X2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgODggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBXaXRoX3Bvcy5zZXhwIF8xIClcbiMgMjYzIFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZXhwX2FicykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbW1lbnRfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA4OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFdpdGhfcG9zLmNvbW1lbnQgXzEgKVxuIyAyNzAgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NleHBfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA5MiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAoIFtdIClcbiMgMjc2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyZXZfc2V4cHNfYWJzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NleHBfYWJzKSBpblxuICAgIE9iai5yZXByKFxuIyA5MyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAyODQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hYnMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzZXhwX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgOTYgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgKCBUeXBlX3dpdGhfbGF5b3V0LnJlbGF0aXZpemUgXzEgKVxuIyAyOTEgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA5OSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggU29tZSBfMSApXG4jIDI5OCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMCBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBOb25lIClcbiMgMzA0IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IG9wdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwMyBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICggW18xXSApXG4jIDMxMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiAncmV2X3NleHBzX2F1eCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDQgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzIgOjogXzEgKVxuIyAzMTkgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Jldl9zZXhwc19hdXgpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdyZXZfc2V4cHNfYXV4KSBpblxuICAgIE9iai5yZXByKFxuIyAxMDcgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDMyNiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMDggXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1seVwiXG4gICAgICAgICggW10gKVxuIyAzMzIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC50X29yX2NvbW1lbnQgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3Jldl9zZXhwc19hdXgpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIExpc3QucmV2IF8xIClcbiMgMzM5IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbFwiXG4gICAgICAgICAgICAgICA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDExMiBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWx5XCJcbiAgICAgICAgKCBbXSApXG4jIDM0NSBcInNyYy9wYXJzZXJfd2l0aF9sYXlvdXQubWxcIlxuICAgICAgICAgICAgICAgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBsaXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncmV2X3NleHBzX2FicykgaW5cbiAgICBPYmoucmVwcihcbiMgMTE2IFwic3JjL3BhcnNlcl93aXRoX2xheW91dC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggTGlzdC5yZXYgXzEgKVxuIyAzNTIgXCJzcmMvcGFyc2VyX3dpdGhfbGF5b3V0Lm1sXCJcbiAgICAgICAgICAgICAgIDogVHlwZV93aXRoX2xheW91dC5QYXJzZWQudF9vcl9jb21tZW50IGxpc3QpKVxuKCogRW50cnkgc2V4cCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwX29wdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwcyAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzZXhwc19hYnMgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgcmV2X3NleHBzICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHNleHAgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50KVxubGV0IHNleHBfb3B0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LnRfb3JfY29tbWVudCBvcHRpb24pXG5sZXQgc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDMgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG5sZXQgc2V4cHNfYWJzIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiBUeXBlX3dpdGhfbGF5b3V0LlBhcnNlZC50X29yX2NvbW1lbnQgbGlzdClcbmxldCByZXZfc2V4cHMgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDUgbGV4ZnVuIGxleGJ1ZiA6IFR5cGVfd2l0aF9sYXlvdXQudF9vcl9jb21tZW50IGxpc3QpXG4iLCIjIDEgXCJzcmMvbGV4ZXIubWxsXCJcbiBcbiAgKCoqIExleGVyOiBMZXhlciBTcGVjaWZpY2F0aW9uIGZvciBTLWV4cHJlc3Npb25zICopXG5cbiAgb3BlbiBQcmludGZcbiAgb3BlbiBMZXhpbmdcblxuICBsZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgICB8ICduJyAtPiAnXFwwMTAnXG4gICAgfCAncicgLT4gJ1xcMDEzJ1xuICAgIHwgJ2InIC0+ICdcXDAwOCdcbiAgICB8ICd0JyAtPiAnXFwwMDknXG4gICAgfCBjIC0+IGNcblxuICBsZXQgbGYgPSAnXFwwMTAnXG5cbiAgbGV0IGRlY19jb2RlIGMxIGMyIGMzID1cbiAgICAxMDAgKiAoQ2hhci5jb2RlIGMxIC0gNDgpICsgMTAgKiAoQ2hhci5jb2RlIGMyIC0gNDgpICsgKENoYXIuY29kZSBjMyAtIDQ4KVxuXG4gIGxldCBoZXhfY29kZSBjMSBjMiA9XG4gICAgbGV0IGQxID0gQ2hhci5jb2RlIGMxIGluXG4gICAgbGV0IHZhbDEgPVxuICAgICAgaWYgZDEgPj0gOTcgdGhlbiBkMSAtIDg3XG4gICAgICBlbHNlIGlmIGQxID49IDY1IHRoZW4gZDEgLSA1NVxuICAgICAgZWxzZSBkMSAtIDQ4IGluXG4gICAgbGV0IGQyID0gQ2hhci5jb2RlIGMyIGluXG4gICAgbGV0IHZhbDIgPVxuICAgICAgaWYgZDIgPj0gOTcgdGhlbiBkMiAtIDg3XG4gICAgICBlbHNlIGlmIGQyID49IDY1IHRoZW4gZDIgLSA1NVxuICAgICAgZWxzZSBkMiAtIDQ4IGluXG4gICAgdmFsMSAqIDE2ICsgdmFsMlxuXG4gIGxldCBmb3VuZF9uZXdsaW5lICh7IGxleF9jdXJyX3A7IF8gfSBhcyBsZXhidWYpIGRpZmYgPVxuICAgIGxleGJ1Zi5sZXhfY3Vycl9wIDwtXG4gICAgICB7XG4gICAgICAgIGxleF9jdXJyX3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxleF9jdXJyX3AucG9zX2xudW0gKyAxO1xuICAgICAgICBwb3NfYm9sID0gbGV4X2N1cnJfcC5wb3NfY251bSAtIGRpZmY7XG4gICAgICB9XG5cbiAgKCogc2FtZSBsZW5ndGggY29tcHV0YXRpb24gYXMgaW4gW0xleGluZy5sZXhlbWVdICopXG4gIGxldCBsZXhlbWVfbGVuIHsgbGV4X3N0YXJ0X3BvczsgbGV4X2N1cnJfcG9zOyBfIH0gPSBsZXhfY3Vycl9wb3MgLSBsZXhfc3RhcnRfcG9zXG5cbiAgbGV0IG1haW5fZmFpbHVyZSBsZXhidWYgbXNnID1cbiAgICBsZXQgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA9IGxleGVtZV9zdGFydF9wIGxleGJ1ZiBpblxuICAgIGxldCBtc2cgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICBcIlNleHBsaWIuTGV4ZXIubWFpbjogJXMgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgbXNnIHBvc19sbnVtIChwb3NfY251bSAtIHBvc19ib2wpXG4gICAgaW5cbiAgICBmYWlsd2l0aCBtc2dcblxuICBtb2R1bGUgdHlwZSBUID0gc2lnXG4gICAgbW9kdWxlIFF1b3RlZF9zdHJpbmdfYnVmZmVyIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICAgICAgdmFsIGFkZF9jaGFyIDogdCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgIHZhbCBhZGRfc3ViYnl0ZXMgOiB0IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgdmFsIGFkZF9sZXhlbWUgOiB0IC0+IGxleGJ1ZiAtPiB1bml0XG4gICAgICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgICAgIHZhbCBvZl9idWZmZXIgOiBCdWZmZXIudCAtPiB0XG4gICAgZW5kXG4gICAgbW9kdWxlIFRva2VuIDogc2lnXG4gICAgICB0eXBlIHRcbiAgICAgIHZhbCBscGFyZW4gOiB0XG4gICAgICB2YWwgcnBhcmVuIDogdFxuICAgICAgdmFsIGVvZiA6IHRcbiAgICAgIHZhbCBzaW1wbGVfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgIHZhbCBoYXNoX3NlbWkgOiB0XG4gICAgICB2YWwgcXVvdGVkX3N0cmluZyA6IExleGluZy5wb3NpdGlvbiAtPiBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IHRcbiAgICAgIHR5cGUgcyA9IFF1b3RlZF9zdHJpbmdfYnVmZmVyLnQgLT4gTGV4aW5nLmxleGJ1ZiAtPiB0XG4gICAgICB2YWwgY29tbWVudCA6IHN0cmluZyAtPiBtYWluOnMgLT4gc1xuICAgICAgdmFsIGJsb2NrX2NvbW1lbnQgOiBMZXhpbmcucG9zaXRpb24gLT4gbWFpbjpzIC0+IHNcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFggOiBUKSA6IHNpZ1xuICAgIHZhbCBtYWluIDogP2J1ZjpCdWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IFguVG9rZW4udFxuICBlbmQgPSBzdHJ1Y3QgKCogQkVHSU4gRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcbiAgICBvcGVuIFhcblxuIyA4MyBcInNyYy9sZXhlci5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyNDRcXDI1NVxcMDEwXFwwMDBcXDA0M1xcMDAwXFwwNTNcXDAwMFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDg2XFwwMDBcXDI0OFxcMjU1XFwyNDlcXDI1NVxcMDk2XFwwMDBcXFxuICAgIFxcMTI5XFwwMDBcXDEzOVxcMDAwXFwxNzJcXDAwMFxcMTgyXFwwMDBcXDIyMFxcMDAwXFwyMzBcXDAwMFxcMDA3XFwwMDFcXDI0N1xcMjU1XFxcbiAgICBcXDAxN1xcMDAxXFwwNTBcXDAwMVxcMDYwXFwwMDFcXDA5M1xcMDAxXFwxMDNcXDAwMVxcMTM2XFwwMDFcXDE0NlxcMDAxXFwxODFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMjI0XFwwMDFcXDIzNFxcMDAxXFwwMTFcXDAwMlxcMDM3XFwwMDBcXDI0NlxcMjU1XFwwODBcXDAwMFxcMjQ4XFwyNTVcXFxuICAgIFxcMDIzXFwwMDJcXDI1NVxcMjU1XFwyNDlcXDI1NVxcMDU3XFwwMDJcXDAzM1xcMDAyXFwyNTJcXDI1NVxcMDA3XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAxN1xcMDAwXFwxMTJcXDAwMlxcMjUxXFwyNTVcXDE0NFxcMDAyXFwyNTBcXDI1NVxcMDgxXFwwMDBcXDI1MFxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwxMjJcXDAwMFxcMjU1XFwyNTVcXDE2NlxcMDAwXFwxMzBcXDAwMVxcMjUyXFwyNTVcXDI1MVxcMjU1XFwxNzNcXDAwMVxcMjUxXFwwMDFcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmsgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwNlxcMDAwXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAyOVxcMDAwXFwwMDJcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwOVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwwMTBcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwNDhcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxMlxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDMxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU3XFwwMDBcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNThcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAyMVxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDE3XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMjVcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAyNVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzNVxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDQ0XFwwMDBcXFxuICAgIFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwNDZcXDAwMFxcMDA5XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMzZcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMzZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDM4XFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMTJcXDAwMFxcXG4gICAgXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDM4XFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAzNlxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDA1NlxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDAxN1xcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXFxuICAgIFxcMDE3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTdcXDAwMFxcMDM4XFwwMDBcXDAxN1xcMDAwXFwwMTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDU4XFwwMDBcXDAwNFxcMDAwXFwyNTVcXDI1NVxcMDE3XFwwMDBcXDAxN1xcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAwXFwwNTNcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAxOFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcXG4gICAgXFwwMjFcXDAwMFxcMDE5XFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMVxcMDAwXFwwMTdcXDAwMFxcXG4gICAgXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNlxcMDAwXFwyNTVcXDI1NVxcMDIyXFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwwMjRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzhcXDAwMFxcMDUzXFwwMDBcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMTJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDIwXFwwMDBcXDI1NVxcMjU1XFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFwyNTVcXDI1NVxcMDI2XFwwMDBcXDAyNlxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMDI4XFwwMDBcXDAyOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDI1NVxcMjU1XFwwMjdcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMjJcXDAwMFxcMjU1XFwyNTVcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDE3XFwwMDBcXDA1OVxcMDAwXFwwMjRcXDAwMFxcMjU1XFwyNTVcXDAyOFxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwwMjlcXDAwMFxcMDI5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMFxcMjU1XFwyNTVcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMThcXDAwMFxcMjU1XFwyNTVcXDAyNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMTlcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDI2XFwwMDBcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMDMwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMjdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMjhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwwMzRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAyOVxcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDAyMlxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDI0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMDM1XFwwMDBcXFxuICAgIFxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMzXFwwMDBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDYyXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMjU1XFwyNTVcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMjVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDAzMlxcMDAwXFwwMjZcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDQwXFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NFxcMDAwXFwyNTVcXDI1NVxcMDMzXFwwMDBcXDAyN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDBcXDAyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0MFxcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwMzVcXDAwMFxcXG4gICAgXFwwMjlcXDAwMFxcMDQwXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDMyXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIG1haW4gYnVmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9tYWluX3JlYyBidWYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA5NCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgKCBmb3VuZF9uZXdsaW5lIGxleGJ1ZiAwO1xuICAgICAgICAgICAgICAgICAgICAgICBtYWluIGJ1ZiBsZXhidWYgKVxuIyAzNjkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyA5NiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAoIG1haW4gYnVmIGxleGJ1ZiApXG4jIDM3NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG5sZXRcbiMgOTcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFxuIyAzODAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUb2tlbi5jb21tZW50IHRleHQgfm1haW4gYnVmIGxleGJ1ZiApXG4jIDM4NCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDk4IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggVG9rZW4ubHBhcmVuIClcbiMgMzg5IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbiMgOTkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgKCBUb2tlbi5ycGFyZW4gKVxuIyAzOTQgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNSAtPlxuIyAxMDEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgIChcbiAgICAgICAgbGV0IHBvcyA9IExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgcG9zIGxleGJ1ZjtcbiAgICAgICAgbGV0IHRvayA9IFRva2VuLnF1b3RlZF9zdHJpbmcgcG9zIGJ1ZiBpblxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jbGVhciBidWY7XG4gICAgICAgIHRva1xuICAgICAgKVxuIyA0MDYgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxuIyAxMDkgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICggVG9rZW4uaGFzaF9zZW1pIClcbiMgNDExIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTExIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBwb3MgPSBMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9ibG9ja19jb21tZW50IGJ1ZiBbcG9zXSBsZXhidWY7XG4gICAgICAgIGxldCB0b2sgPSBUb2tlbi5ibG9ja19jb21tZW50IHBvcyB+bWFpbiBidWYgbGV4YnVmIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgdG9rXG4gICAgICApXG4jIDQyMyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDExOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgKCBtYWluX2ZhaWx1cmUgbGV4YnVmIFwiaWxsZWdhbCBlbmQgb2YgY29tbWVudFwiIClcbiMgNDI4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTI1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoIG1haW5fZmFpbHVyZSBsZXhidWYgXCJjb21tZW50IHRva2VucyBpbiB1bnF1b3RlZCBhdG9tXCIgKVxuIyA0MzMgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbmxldFxuIyAxMjYgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyXG4jIDQzOSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTI2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFRva2VuLnNpbXBsZV9zdHJpbmcgc3RyIClcbiMgNDQzIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDExIC0+XG4jIDEyNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAoIFRva2VuLmVvZiApXG4jIDQ0OCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21haW5fcmVjIGJ1ZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2Nhbl9zdHJpbmdfcmVjIGJ1ZiBzdGFydCBsZXhidWYgMzZcbmFuZCBfX29jYW1sX2xleF9zY2FuX3N0cmluZ19yZWMgYnVmIHN0YXJ0IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTMwIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmOyAoKSApXG4jIDQ2MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDEzMiBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAyIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ3MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAyIC0+XG4jIDEzOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgbGVuID0gbGV4ZW1lX2xlbiBsZXhidWYgLSAzIGluXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIGxlbjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDQ4MCBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMTQ1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuIyA0ODYgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTQ2IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoY2hhcl9mb3JfYmFja3NsYXNoIGMpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNDk0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDQgLT5cbmxldFxuIyAxNTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICBjMVxuIyA1MDAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuIyAxNTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyXG4jIDUwNSBcInNyYy9sZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG4jIDE1MSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjM1xuIyA1MTAgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMykgaW5cbiMgMTUyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCB2ID0gZGVjX2NvZGUgYzEgYzIgYzMgaW5cbiAgICAgICAgaWYgdiA+IDI1NSB0aGVuIChcbiAgICAgICAgICBsZXQgeyBwb3NfbG51bTsgcG9zX2JvbDsgcG9zX2NudW07IHBvc19mbmFtZSA9IF8gfSA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgICAgXCJTZXhwbGliLkxleGVyLnNjYW5fc3RyaW5nOiBcXFxuICAgICAgICAgICAgICAgaWxsZWdhbCBlc2NhcGUgYXQgbGluZSAlZCBjaGFyICVkOiBgXFxcXCVjJWMlYydcIlxuICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sIC0gMylcbiAgICAgICAgICAgICAgYzEgYzIgYzMgaW5cbiAgICAgICAgICBmYWlsd2l0aCBtc2cpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfY2hhciBidWYgKENoYXIuY2hyIHYpO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTI4IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDUgLT5cbmxldFxuIyAxNjcgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzFcbiMgNTM0IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcbiMgMTY3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJcbiMgNTM5IFwic3JjL2xleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpIGluXG4jIDE2OCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgdiA9IGhleF9jb2RlIGMxIGMyIGluXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgdik7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgc2Nhbl9zdHJpbmcgYnVmIHN0YXJ0IGxleGJ1ZlxuICAgICAgKVxuIyA1NDggXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgNiAtPlxubGV0XG4jIDE3NCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgY1xuIyA1NTQgXCJzcmMvbGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgaW5cbiMgMTc1IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTYzIFwic3JjL2xleGVyLm1sXCJcblxuICB8IDcgLT5cbiMgMTgyIFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7XG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9jaGFyIGJ1ZiBsZjtcbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmXG4gICAgICApXG4jIDU3MyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA4IC0+XG4jIDE4OSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBsZXQgb2ZzID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBvZnMgaW5cbiAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX3N1YmJ5dGVzIGJ1ZiBsZXhidWYubGV4X2J1ZmZlciBvZnMgbGVuO1xuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIHNjYW5fc3RyaW5nIGJ1ZiBzdGFydCBsZXhidWZcbiAgICAgIClcbiMgNTg0IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDkgLT5cbiMgMTk3IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgIHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5MZXhlci5zY2FuX3N0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZyBhdCBsaW5lICVkIGNoYXIgJWRcIlxuICAgICAgICAgICAgc3RhcnQucG9zX2xudW0gKHN0YXJ0LnBvc19jbnVtIC0gc3RhcnQucG9zX2JvbClcbiAgICAgICAgaW5cbiAgICAgICAgZmFpbHdpdGggbXNnXG4gICAgICApXG4jIDU5NiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NjYW5fc3RyaW5nX3JlYyBidWYgc3RhcnQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NjYW5fYmxvY2tfY29tbWVudF9yZWMgYnVmIGxvY3MgbGV4YnVmIDUzXG5hbmQgX19vY2FtbF9sZXhfc2Nhbl9ibG9ja19jb21tZW50X3JlYyBidWYgbG9jcyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIwOCBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKCBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIGZvdW5kX25ld2xpbmUgbGV4YnVmIDA7IHNjYW5fYmxvY2tfY29tbWVudCBidWYgbG9jcyBsZXhidWYgKVxuIyA2MDkgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAyMTEgXCJzcmMvbGV4ZXIubWxsXCJcbiAgICAgICggUXVvdGVkX3N0cmluZ19idWZmZXIuYWRkX2xleGVtZSBidWYgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmIClcbiMgNjE1IFwic3JjL2xleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgMjE0IFwic3JjL2xleGVyLm1sbFwiXG4gICAgICAoXG4gICAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgICAgbGV0IGN1ciA9IGxleGVtZV9lbmRfcCBsZXhidWYgaW5cbiAgICAgICAgbGV0IHN0YXJ0ID0geyBjdXIgd2l0aCBwb3NfY251bSA9IGN1ci5wb3NfY251bSAtIDEgfSBpblxuICAgICAgICBzY2FuX3N0cmluZyBidWYgc3RhcnQgbGV4YnVmO1xuICAgICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIGxvY3MgbGV4YnVmXG4gICAgICApXG4jIDYyNiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDIyMiBcInNyYy9sZXhlci5tbGxcIlxuICAgIChcbiAgICAgIFF1b3RlZF9zdHJpbmdfYnVmZmVyLmFkZF9sZXhlbWUgYnVmIGxleGJ1ZjtcbiAgICAgIGxldCBjdXIgPSBsZXhlbWVfZW5kX3AgbGV4YnVmIGluXG4gICAgICBsZXQgc3RhcnQgPSB7IGN1ciB3aXRoIHBvc19jbnVtID0gY3VyLnBvc19jbnVtIC0gMiB9IGluXG4gICAgICBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIChzdGFydCA6OiBsb2NzKSBsZXhidWZcbiAgICApXG4jIDYzNiBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA0IC0+XG4jIDIyOSBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBRdW90ZWRfc3RyaW5nX2J1ZmZlci5hZGRfbGV4ZW1lIGJ1ZiBsZXhidWY7XG4gICAgICAgIG1hdGNoIGxvY3Mgd2l0aFxuICAgICAgICB8IFtfXSAtPiAoKSAoKiB0aGUgY29tbWVudCBpcyBmaW5pc2hlZCAqKVxuICAgICAgICB8IF8gOjogKF8gOjogXyBhcyB0KSAtPiBzY2FuX2Jsb2NrX2NvbW1lbnQgYnVmIHQgbGV4YnVmXG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlICAoKiBpbXBvc3NpYmxlICopXG4gICAgICApXG4jIDY0NyBcInNyYy9sZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDIzNyBcInNyYy9sZXhlci5tbGxcIlxuICAgICAgKFxuICAgICAgICBtYXRjaCBsb2NzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCB7IHBvc19sbnVtOyBwb3NfYm9sOyBwb3NfY251bTsgcG9zX2ZuYW1lID0gXyB9IDo6IF8gLT5cbiAgICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgICBzcHJpbnRmIFwiU2V4cGxpYi5MZXhlci5zY2FuX2Jsb2NrX2NvbW1lbnQ6IFxcXG4gICAgICAgICAgICAgICAgdW50ZXJtaW5hdGVkIGJsb2NrIGNvbW1lbnQgYXQgbGluZSAlZCBjaGFyICVkXCJcbiAgICAgICAgICAgICAgICBwb3NfbG51bSAocG9zX2NudW0gLSBwb3NfYm9sKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGZhaWx3aXRoIG1zZ1xuICAgICAgKVxuIyA2NjIgXCJzcmMvbGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zY2FuX2Jsb2NrX2NvbW1lbnRfcmVjIGJ1ZiBsb2NzIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDI0OSBcInNyYy9sZXhlci5tbGxcIlxuICAoKiBSRVNVTUUgRlVOQ1RPUiBCT0RZIENPTlRBSU5JTkcgR0VORVJBVEVEIENPREUgKilcblxuICAgIGxldCBtYWluID9idWYgPVxuICAgICAgbGV0IGJ1ZiA9XG4gICAgICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBRdW90ZWRfc3RyaW5nX2J1ZmZlci5jcmVhdGUgNjRcbiAgICAgICAgfCBTb21lIGJ1ZiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBidWY7XG4gICAgICAgICAgUXVvdGVkX3N0cmluZ19idWZmZXIub2ZfYnVmZmVyIGJ1ZlxuICAgICAgaW5cbiAgICAgIG1haW4gYnVmXG5cbiAgZW5kICgqIEVORCBGVU5DVE9SIEJPRFkgQ09OVEFJTklORyBHRU5FUkFURUQgQ09ERSAqKVxuXG4gIG1vZHVsZSBWYW5pbGxhID1cbiAgICBNYWtlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBRdW90ZWRfc3RyaW5nX2J1ZmZlciA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEJ1ZmZlclxuICAgICAgICBsZXQgYWRkX2xleGVtZSBfIF8gPSAoKVxuICAgICAgICBsZXQgb2ZfYnVmZmVyIGIgPSBiXG4gICAgICBlbmRcbiAgICAgIG1vZHVsZSBUb2tlbiA9IHN0cnVjdFxuICAgICAgICBvcGVuIFBhcnNlclxuICAgICAgICB0eXBlIHQgPSB0b2tlblxuICAgICAgICB0eXBlIHMgPSBRdW90ZWRfc3RyaW5nX2J1ZmZlci50IC0+IExleGluZy5sZXhidWYgLT4gdFxuICAgICAgICBsZXQgZW9mID0gRU9GXG4gICAgICAgIGxldCBscGFyZW4gPSBMUEFSRU5cbiAgICAgICAgbGV0IHJwYXJlbiA9IFJQQVJFTlxuICAgICAgICBsZXQgaGFzaF9zZW1pID0gSEFTSF9TRU1JXG4gICAgICAgIGxldCBzaW1wbGVfc3RyaW5nIHggPSBTVFJJTkcgeFxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBfIGJ1ZiA9IFNUUklORyAoQnVmZmVyLmNvbnRlbnRzIGJ1ZilcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgX3BvcyB+bWFpbiBidWYgbGV4YnVmID1cbiAgICAgICAgICBtYWluIGJ1ZiBsZXhidWZcbiAgICAgICAgbGV0IGNvbW1lbnQgX3RleHQgfm1haW4gYnVmIGxleGJ1ZiA9XG4gICAgICAgICAgbWFpbiBidWYgbGV4YnVmICgqIHNraXAgYW5kIGNvbnRpbnVlIGxleGluZyAqKVxuICAgICAgZW5kXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBXaXRoX2xheW91dCA9XG4gICAgTWFrZSAoc3RydWN0XG4gICAgICBtb2R1bGUgUXVvdGVkX3N0cmluZ19idWZmZXIgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0ge1xuICAgICAgICAgIGNvbnRlbnRzIDogQnVmZmVyLnQ7XG4gICAgICAgICAgbGV4ZW1lIDogQnVmZmVyLnQ7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNyZWF0ZSBuID0ge2NvbnRlbnRzID0gQnVmZmVyLmNyZWF0ZSBuOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIG59XG4gICAgICAgIGxldCBvZl9idWZmZXIgY29udGVudHMgPSB7IGNvbnRlbnRzOyBsZXhlbWUgPSBCdWZmZXIuY3JlYXRlIDY0IH1cbiAgICAgICAgbGV0IGFkZF9jaGFyIHQgY2ggPSBCdWZmZXIuYWRkX2NoYXIgdC5jb250ZW50cyBjaFxuICAgICAgICBsZXQgYWRkX3N1YmJ5dGVzIHQgc3RyIG9mcyBsZW4gPSBCdWZmZXIuYWRkX3N1YmJ5dGVzIHQuY29udGVudHMgc3RyIG9mcyBsZW5cbiAgICAgICAgbGV0IGFkZF9sZXhlbWUgdCBsZXhidWYgPSBCdWZmZXIuYWRkX3N0cmluZyB0LmxleGVtZSAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgIGxldCBjbGVhciB0ID0gQnVmZmVyLmNsZWFyIHQubGV4ZW1lOyBCdWZmZXIuY2xlYXIgdC5jb250ZW50c1xuICAgICAgZW5kXG4gICAgICBtb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgICAgICAgb3BlbiBQYXJzZXJfd2l0aF9sYXlvdXRcbiAgICAgICAgdHlwZSB0ID0gdG9rZW5cbiAgICAgICAgdHlwZSBzID0gUXVvdGVkX3N0cmluZ19idWZmZXIudCAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgICAgICAgbGV0IGVvZiA9IEVPRlxuICAgICAgICBsZXQgbHBhcmVuID0gTFBBUkVOXG4gICAgICAgIGxldCBycGFyZW4gPSBSUEFSRU5cbiAgICAgICAgbGV0IGhhc2hfc2VtaSA9IEhBU0hfU0VNSVxuICAgICAgICBsZXQgc2ltcGxlX3N0cmluZyB4ID0gU1RSSU5HICh4LCBOb25lKVxuICAgICAgICBsZXQgcXVvdGVkX3N0cmluZyBwb3Mge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzOyBsZXhlbWV9ID1cbiAgICAgICAgICBTVFJJTkcgKEJ1ZmZlci5jb250ZW50cyBjb250ZW50cywgU29tZSAocG9zLCBCdWZmZXIuY29udGVudHMgbGV4ZW1lKSlcbiAgICAgICAgbGV0IGJsb2NrX2NvbW1lbnQgcG9zIH5tYWluOl8ge1F1b3RlZF9zdHJpbmdfYnVmZmVyLmNvbnRlbnRzID0gXzsgbGV4ZW1lfSBfbGV4YnVmID1cbiAgICAgICAgICBDT01NRU5UIChCdWZmZXIuY29udGVudHMgbGV4ZW1lLCBTb21lIHBvcylcbiAgICAgICAgbGV0IGNvbW1lbnQgdGV4dCB+bWFpbjpfIF9idWYgX2xleGJ1ZiA9XG4gICAgICAgICAgQ09NTUVOVCAodGV4dCwgTm9uZSlcbiAgICAgIGVuZFxuICAgIGVuZClcblxuICBsZXQgbWFpbiA9IFZhbmlsbGEubWFpblxuICBsZXQgbWFpbl93aXRoX2xheW91dCA9IFdpdGhfbGF5b3V0Lm1haW5cblxuXG4jIDc0NCBcInNyYy9sZXhlci5tbFwiXG4iLCIoKiBTZXhwOiBNb2R1bGUgZm9yIGhhbmRsaW5nIFMtZXhwcmVzc2lvbnMgKEkvTywgZXRjLikgKilcblxub3BlbiBGb3JtYXRcbm9wZW4gQmlnYXJyYXlcbm1vZHVsZSBTZXhwbGliID0gU2V4cGxpYjBcbm1vZHVsZSBDb252ID0gU2V4cGxpYi5TZXhwX2NvbnZcblxuKCogY29udi5tbCBkZXBlbmRzIG9uIHVzIHNvIHdlIGNhbiBvbmx5IHVzZSB0aGlzIG1vZHVsZSAqKVxuXG5pbmNsdWRlIFR5cGVcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5pbmNsdWRlIChcbiAgU2V4cGxpYi5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBQcml2YXRlXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IENvbnYuc2V4cF90X3NleHBfZ3JhbW1hclxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBJL08tY2hhbm5lbHMgKilcblxubGV0IHdpdGhfbmV3X2J1ZmZlciBvYyBmID1cbiAgbGV0IGJ1ZiA9IGJ1ZmZlciAoKSBpblxuICBmIGJ1ZjtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2MgYnVmXG47O1xuXG5sZXQgb3V0cHV0X2h1bSBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9odW0gc2V4cCB+YnVmKVxuXG5sZXQgb3V0cHV0X2h1bV9pbmRlbnQgaW5kZW50IG9jIHNleHAgPVxuICB3aXRoX25ld19idWZmZXIgb2MgKGZ1biBidWYgLT4gdG9fYnVmZmVyX2h1bSB+aW5kZW50IHNleHAgfmJ1Zilcbjs7XG5cbmxldCBvdXRwdXRfbWFjaCBvYyBzZXhwID0gd2l0aF9uZXdfYnVmZmVyIG9jIChmdW4gYnVmIC0+IHRvX2J1ZmZlcl9tYWNoIHNleHAgfmJ1ZilcbmxldCBvdXRwdXQgPSBvdXRwdXRfbWFjaFxuXG4oKiBPdXRwdXQgb2YgUy1leHByZXNzaW9ucyB0byBmaWxlICopXG5cbigqIFRoZSB0ZW1wIGZpbGUgZnVuY3Rpb25zIGluIHRoZSBPQ2FtbCBGaWxlbmFtZSBtb2R1bGUgZG8gbm90IHN1cHBvcnRcbiAgIHBlcm1pc3Npb25zLiAgQnV0IG9wZW5pbmcgYSBmaWxlIHdpdGggZ2l2ZW4gcGVybWlzc2lvbnMgaXMgZGlmZmVyZW50XG4gICBmcm9tIG9wZW5pbmcgaXQgYW5kIGNobW9kaW5nIGl0IHRvIHRoZXNlIHBlcm1pc3Npb25zLCBiZWNhdXNlIHRoZSB1bWFza1xuICAgaXMgdGFrZW4gaW4gYWNjb3VudC4gIFVuZGVyIFVuaXggdGhlcmUncyBubyBlYXN5IHdheSB0byBnZXQgdGhlIHVtYXNrIGluXG4gICBhIHRocmVhZC1zYWZlIHdheS4gKilcbm1vZHVsZSBUbXBfZmlsZSA9IHN0cnVjdFxuICBsZXQgcHJuZyA9IHJlZiBOb25lXG5cbiAgbGV0IHRlbXBfZmlsZV9uYW1lIHByZWZpeCBzdWZmaXggPVxuICAgIGxldCByYW5kX3N0YXRlID1cbiAgICAgIG1hdGNoICFwcm5nIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgcmV0ID0gUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpIGluXG4gICAgICAgIHBybmcgOj0gU29tZSByZXQ7XG4gICAgICAgIHJldFxuICAgIGluXG4gICAgbGV0IHJuZCA9IFJhbmRvbS5TdGF0ZS5iaXRzIHJhbmRfc3RhdGUgbGFuZCAweEZGRkZGRiBpblxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMlMDZ4JXNcIiBwcmVmaXggcm5kIHN1ZmZpeFxuICA7O1xuXG4gICgqIEtlZXAgdGhlIHBlcm1pc3Npb25zIGxvb3NlLiBTZXhwcyBhcmUgdXN1YWxseSBzaGFyZWQgYW5kIHJhcmVseSBwcml2YXRlKilcbiAgbGV0IG9wZW5fdGVtcF9maWxlID8ocGVybSA9IDBvNjY2KSBwcmVmaXggc3VmZml4ID1cbiAgICBsZXQgcmVjIHRyeV9uYW1lIGNvdW50ZXIgPVxuICAgICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSBwcmVmaXggc3VmZml4IGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IG9jID1cbiAgICAgICAgICBvcGVuX291dF9nZW4gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsOyBPcGVuX3RleHQgXSBwZXJtIG5hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbmFtZSwgb2NcbiAgICAgIHdpdGhcbiAgICAgIHwgU3lzX2Vycm9yIF8gYXMgZSAtPiBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICAgIGluXG4gICAgdHJ5X25hbWUgMFxuICA7O1xuZW5kXG5cbmxldCBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfZnVuY3Rpb24gZmlsZSBzZXhwID1cbiAgbGV0IHRtcF9uYW1lLCBvYyA9IFRtcF9maWxlLm9wZW5fdGVtcF9maWxlID9wZXJtIGZpbGUgXCJ0bXBcIiBpblxuICAodHJ5XG4gICAgIG91dHB1dF9mdW5jdGlvbiBvYyBzZXhwO1xuICAgICBjbG9zZV9vdXQgb2NcbiAgIHdpdGhcbiAgIHwgZSAtPlxuICAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgICh0cnkgU3lzLnJlbW92ZSB0bXBfbmFtZSB3aXRoXG4gICAgICB8IF8gLT4gKCkpO1xuICAgICByYWlzZSBlKTtcbiAgU3lzLnJlbmFtZSB0bXBfbmFtZSBmaWxlXG47O1xuXG5sZXQgb3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jIHNleHAgPVxuICBkb19vdXRwdXQgb2Mgc2V4cDtcbiAgb3V0cHV0X3N0cmluZyBvYyBcIlxcblwiXG47O1xuXG5sZXQgc2F2ZV9odW0gP3Blcm0gZmlsZSBzZXhwID0gc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwX25sIG91dHB1dF9odW0pIGZpbGUgc2V4cFxubGV0IHNhdmVfbWFjaCA/cGVybSBmaWxlIHNleHAgPSBzYXZlX29mX291dHB1dCA/cGVybSBvdXRwdXRfbWFjaCBmaWxlIHNleHBcbmxldCBzYXZlID0gc2F2ZV9tYWNoXG5sZXQgb3V0cHV0X3NleHBzX25sIGRvX291dHB1dCBvYyBzZXhwcyA9IExpc3QuaXRlciAob3V0cHV0X3NleHBfbmwgZG9fb3V0cHV0IG9jKSBzZXhwc1xuXG5sZXQgc2F2ZV9zZXhwc19odW0gP3Blcm0gZmlsZSBzZXhwcyA9XG4gIHNhdmVfb2Zfb3V0cHV0ID9wZXJtIChvdXRwdXRfc2V4cHNfbmwgb3V0cHV0X2h1bSkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHNfbWFjaCA/cGVybSBmaWxlIHNleHBzID1cbiAgc2F2ZV9vZl9vdXRwdXQgP3Blcm0gKG91dHB1dF9zZXhwc19ubCBvdXRwdXRfbWFjaCkgZmlsZSBzZXhwc1xuOztcblxubGV0IHNhdmVfc2V4cHMgPSBzYXZlX3NleHBzX21hY2hcblxuKCogU2NhbiBmdW5jdGlvbnMgKilcblxubGV0IHNjYW5fc2V4cCA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwIChMZXhlci5tYWluID9idWYpIGxleGJ1ZlxubGV0IHNjYW5fc2V4cF9vcHQgP2J1ZiBsZXhidWYgPSBQYXJzZXIuc2V4cF9vcHQgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5sZXQgc2Nhbl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5zZXhwcyAoTGV4ZXIubWFpbiA/YnVmKSBsZXhidWZcbmxldCBzY2FuX3Jldl9zZXhwcyA/YnVmIGxleGJ1ZiA9IFBhcnNlci5yZXZfc2V4cHMgKExleGVyLm1haW4gP2J1ZikgbGV4YnVmXG5cbmxldCBnZXRfbWFpbl9idWYgYnVmID1cbiAgbGV0IGJ1ZiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAxMjhcbiAgICB8IFNvbWUgYnVmIC0+IGJ1ZlxuICBpblxuICBMZXhlci5tYWluIH5idWZcbjs7XG5cbmxldCBzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+ZiB+aW5pdCBsZXhidWYgPVxuICBsZXQgbWFpbiA9IGdldF9tYWluX2J1ZiBidWYgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbWF0Y2ggUGFyc2VyLnNleHBfb3B0IG1haW4gbGV4YnVmIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIHNleHAgLT4gbG9vcCAoZiBhY2Mgc2V4cClcbiAgaW5cbiAgbG9vcCBpbml0XG47O1xuXG5sZXQgc2Nhbl9pdGVyX3NleHBzID9idWYgfmYgbGV4YnVmID1cbiAgc2Nhbl9mb2xkX3NleHBzID9idWYgbGV4YnVmIH5pbml0OigpIH5mOihmdW4gKCkgc2V4cCAtPiBmIHNleHApXG47O1xuXG5sZXQgc2Nhbl9zZXhwc19jb252ID9idWYgfmYgbGV4YnVmID1cbiAgbGV0IGNvbGwgYWNjIHNleHAgPSBmIHNleHAgOjogYWNjIGluXG4gIExpc3QucmV2IChzY2FuX2ZvbGRfc2V4cHMgP2J1ZiB+Zjpjb2xsIH5pbml0OltdIGxleGJ1Zilcbjs7XG5cbmxldCBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSA/Y29udGFpbmluZ19zZXhwID9sb2NhdGlvbiA/aW52YWxpZF9zZXhwICgpIH5leG4gOiB0ID1cbiAgTGlzdFxuICAgIChMaXN0LmNvbmNhdFxuICAgICAgIFsgWyBBdG9tIFwiT2Zfc2V4cF9lcnJvclwiIF1cbiAgICAgICA7IChtYXRjaCBsb2NhdGlvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBBdG9tIHggXSlcbiAgICAgICA7IFsgKG1hdGNoIGV4biB3aXRoXG4gICAgICAgICAgICAgfCBGYWlsdXJlIHggLT4gQXRvbSB4XG4gICAgICAgICAgICAgfCBfIC0+IENvbnYuc2V4cF9vZl9leG4gZXhuKVxuICAgICAgICAgXVxuICAgICAgIDsgKG1hdGNoIGludmFsaWRfc2V4cCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgfCBTb21lIHggLT4gWyBMaXN0IFsgQXRvbSBcImludmFsaWRfc2V4cFwiOyB4IF0gXSlcbiAgICAgICA7IChtYXRjaCBjb250YWluaW5nX3NleHAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSB4IC0+IFsgTGlzdCBbIEF0b20gXCJjb250YWluaW5nX3NleHBcIjsgeCBdIF0pXG4gICAgICAgXSlcbjs7XG5cbigqIFBhcnRpYWwgcGFyc2luZyAqKVxuXG5tb2R1bGUgQW5ub3QgPSBzdHJ1Y3RcbiAgdHlwZSBwb3MgPSBQYXJzZXhwLlBvc2l0aW9ucy5wb3MgPVxuICAgIHsgbGluZSA6IGludFxuICAgIDsgY29sIDogaW50XG4gICAgOyBvZmZzZXQgOiBpbnRcbiAgICB9XG5cbiAgdHlwZSByYW5nZSA9IFBhcnNleHAuUG9zaXRpb25zLnJhbmdlID1cbiAgICB7IHN0YXJ0X3BvcyA6IHBvc1xuICAgIDsgZW5kX3BvcyA6IHBvc1xuICAgIH1cblxuICB0eXBlIHQgPVxuICAgIHwgQXRvbSBvZiByYW5nZSAqIFR5cGUudFxuICAgIHwgTGlzdCBvZiByYW5nZSAqIHQgbGlzdCAqIFR5cGUudFxuXG4gIHR5cGUgJ2EgY29udiA9XG4gICAgWyBgUmVzdWx0IG9mICdhXG4gICAgfCBgRXJyb3Igb2YgZXhuICogdFxuICAgIF1cblxuICBleGNlcHRpb24gQ29udl9leG4gb2Ygc3RyaW5nICogZXhuXG5cbiAgbGV0ICgpID1cbiAgICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDb252X2V4bl0gKGZ1bmN0aW9uXG4gICAgICB8IENvbnZfZXhuIChsb2NhdGlvbiwgZXhuKSAtPiBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZSAoKSB+bG9jYXRpb24gfmV4blxuICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgOztcblxuICB0eXBlIHN0YWNrID1cbiAgICB7IG11dGFibGUgcG9zaXRpb25zIDogcG9zIGxpc3RcbiAgICA7IG11dGFibGUgc3RhY2sgOiB0IGxpc3QgbGlzdFxuICAgIH1cblxuICBsZXQgZ2V0X3NleHAgPSBmdW5jdGlvblxuICAgIHwgQXRvbSAoXywgc2V4cCkgfCBMaXN0IChfLCBfLCBzZXhwKSAtPiBzZXhwXG4gIDs7XG5cbiAgbGV0IGdldF9yYW5nZSA9IGZ1bmN0aW9uXG4gICAgfCBBdG9tIChyYW5nZSwgXykgfCBMaXN0IChyYW5nZSwgXywgXykgLT4gcmFuZ2VcbiAgOztcblxuICBsZXQgc2V4cF9vZl9jb252IHNleHBfb2ZfYSA9IGZ1bmN0aW9uXG4gICAgfCBgUmVzdWx0IGEgLT4gVHlwZS5MaXN0IFsgQXRvbSBcIlJlc3VsdFwiOyBhIHw+IHNleHBfb2ZfYSBdXG4gICAgfCBgRXJyb3IgKGV4biwgdCkgLT5cbiAgICAgIExpc3QgWyBBdG9tIFwiRXJyb3JcIjsgTGlzdCBbIGV4biB8PiBDb252LnNleHBfb2ZfZXhuOyB0IHw+IGdldF9zZXhwIF0gXVxuICA7O1xuXG4gIGV4Y2VwdGlvbiBBbm5vdF9zZXhwIG9mIHRcblxuICBsZXQgZmluZF9zZXhwIGFubm90X3NleHAgc2V4cCA9XG4gICAgbGV0IHJlYyBsb29wIGFubm90X3NleHAgPVxuICAgICAgbWF0Y2ggYW5ub3Rfc2V4cCB3aXRoXG4gICAgICB8IChBdG9tIChfLCBzdWJfc2V4cCkgfCBMaXN0IChfLCBfLCBzdWJfc2V4cCkpIHdoZW4gc2V4cCA9PSBzdWJfc2V4cCAtPlxuICAgICAgICByYWlzZSAoQW5ub3Rfc2V4cCBhbm5vdF9zZXhwKVxuICAgICAgfCBMaXN0IChfLCBhbm5vdHMsIF8pIC0+IExpc3QuaXRlciBsb29wIGFubm90c1xuICAgICAgfCBBdG9tIF8gLT4gKClcbiAgICBpblxuICAgIHRyeVxuICAgICAgbG9vcCBhbm5vdF9zZXhwO1xuICAgICAgTm9uZVxuICAgIHdpdGhcbiAgICB8IEFubm90X3NleHAgcmVzIC0+IFNvbWUgcmVzXG4gIDs7XG5lbmRcblxubGV0ICgpID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgT2Zfc2V4cF9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBPZl9zZXhwX2Vycm9yIChBbm5vdC5Db252X2V4biAobG9jYXRpb24sIGV4biksIGludmFsaWRfc2V4cCkgLT5cbiAgICAgIHNleHBfY29udmVyc2lvbl9lcnJvcl9tZXNzYWdlICgpIH5sb2NhdGlvbiB+aW52YWxpZF9zZXhwIH5leG5cbiAgICB8IE9mX3NleHBfZXJyb3IgKGV4biwgaW52YWxpZF9zZXhwKSAtPlxuICAgICAgc2V4cF9jb252ZXJzaW9uX2Vycm9yX21lc3NhZ2UgKCkgfmludmFsaWRfc2V4cCB+ZXhuXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQYXJzZV9wb3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgdGV4dF9saW5lIDogaW50XG4gICAgOyBtdXRhYmxlIHRleHRfY2hhciA6IGludFxuICAgIDsgbXV0YWJsZSBnbG9iYWxfb2Zmc2V0IDogaW50XG4gICAgOyBtdXRhYmxlIGJ1Zl9wb3MgOiBpbnRcbiAgICB9XG5cbiAgbGV0IGNyZWF0ZSA/KHRleHRfbGluZSA9IDEpID8odGV4dF9jaGFyID0gMCkgPyhidWZfcG9zID0gMCkgPyhnbG9iYWxfb2Zmc2V0ID0gMCkgKCkgPVxuICAgIGxldCBmYWlsIG1zZyA9IGZhaWx3aXRoIChcIlNleHBsaWIuU2V4cC5QYXJzZV9wb3MuY3JlYXRlOiBcIiBeIG1zZykgaW5cbiAgICBpZiB0ZXh0X2xpbmUgPCAxXG4gICAgdGhlbiBmYWlsIFwidGV4dF9saW5lIDwgMVwiXG4gICAgZWxzZSBpZiB0ZXh0X2NoYXIgPCAwXG4gICAgdGhlbiBmYWlsIFwidGV4dF9jaGFyIDwgMFwiXG4gICAgZWxzZSBpZiBnbG9iYWxfb2Zmc2V0IDwgMFxuICAgIHRoZW4gZmFpbCBcImdsb2JhbF9vZmZzZXQgPCAwXCJcbiAgICBlbHNlIGlmIGJ1Zl9wb3MgPCAwXG4gICAgdGhlbiBmYWlsIFwiYnVmX3BvcyA8IDBcIlxuICAgIGVsc2UgeyB0ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9XG4gIDs7XG5cbiAgbGV0IHdpdGhfYnVmX3BvcyB0IGJ1Zl9wb3MgPSB7IHQgd2l0aCBidWZfcG9zIH1cbmVuZFxuXG5tb2R1bGUgQ29udF9zdGF0ZSA9IFBhcnNleHAuT2xkX3BhcnNlcl9jb250X3N0YXRlXG5cbnR5cGUgKCdhLCAndCkgcGFyc2VfcmVzdWx0ID1cbiAgfCBEb25lIG9mICd0ICogUGFyc2VfcG9zLnRcbiAgfCBDb250IG9mIENvbnRfc3RhdGUudCAqICgnYSwgJ3QpIHBhcnNlX2Z1blxuXG5hbmQgKCdhLCAndCkgcGFyc2VfZnVuID0gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+ICgnYSwgJ3QpIHBhcnNlX3Jlc3VsdFxuXG50eXBlICd0IHBhcnNlX3N0YXRlID0geyBwYXJzZV9wb3MgOiBQYXJzZV9wb3MudCB9XG5cbnR5cGUgcGFyc2VfZXJyb3IgPVxuICB7IGVycl9tc2cgOiBzdHJpbmdcbiAgOyBwYXJzZV9zdGF0ZSA6IFsgYFNleHAgb2YgdCBsaXN0IGxpc3QgcGFyc2Vfc3RhdGUgfCBgQW5ub3Qgb2YgQW5ub3Quc3RhY2sgcGFyc2Vfc3RhdGUgXVxuICB9XG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciBvZiBwYXJzZV9lcnJvclxuXG5sZXQgKCkgPVxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIH5maW5hbGlzZTpmYWxzZSBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBQYXJzZV9lcnJvcl0gKGZ1bmN0aW9uXG4gICAgfCBQYXJzZV9lcnJvciBwZSAtPlxuICAgICAgbGV0IHBwb3MgPVxuICAgICAgICBtYXRjaCBwZS5wYXJzZV9zdGF0ZSB3aXRoXG4gICAgICAgIHwgYFNleHAgeyBwYXJzZV9wb3MgfSB8IGBBbm5vdCB7IHBhcnNlX3BvcyB9IC0+IHBhcnNlX3Bvc1xuICAgICAgaW5cbiAgICAgIExpc3RcbiAgICAgICAgWyBBdG9tIFwiU2V4cGxpYi5TZXhwLlBhcnNlX2Vycm9yXCJcbiAgICAgICAgOyBMaXN0XG4gICAgICAgICAgICBbIExpc3QgWyBBdG9tIFwiZXJyX21zZ1wiOyBBdG9tIHBlLmVycl9tc2cgXVxuICAgICAgICAgICAgOyBMaXN0IFsgQXRvbSBcInRleHRfbGluZVwiOyBDb252LnNleHBfb2ZfaW50IHBwb3MuUGFyc2VfcG9zLnRleHRfbGluZSBdXG4gICAgICAgICAgICA7IExpc3QgWyBBdG9tIFwidGV4dF9jaGFyXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MudGV4dF9jaGFyIF1cbiAgICAgICAgICAgIDsgTGlzdFxuICAgICAgICAgICAgICAgIFsgQXRvbSBcImdsb2JhbF9vZmZzZXRcIjsgQ29udi5zZXhwX29mX2ludCBwcG9zLlBhcnNlX3Bvcy5nbG9iYWxfb2Zmc2V0IF1cbiAgICAgICAgICAgIDsgTGlzdCBbIEF0b20gXCJidWZfcG9zXCI7IENvbnYuc2V4cF9vZl9pbnQgcHBvcy5QYXJzZV9wb3MuYnVmX3BvcyBdXG4gICAgICAgICAgICBdXG4gICAgICAgIF1cbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuOztcblxubW9kdWxlIFBhcnNlcl9vdXRwdXQgOiBzaWdcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEJhcmVfc2V4cCA6IFQgd2l0aCB0eXBlIG91dHB1dCA9IFR5cGUudFxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgOiBUIHdpdGggdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIG1vZHVsZSBJbXBsIDogUGFyc2V4cC5FYWdlcl9wYXJzZXJcblxuICAgIHR5cGUgb3V0cHV0XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICB2YWwgcmFpc2VfZm91bmQgOiBJbXBsLlN0YXRlLlJlYWRfb25seS50IC0+IEltcGwucGFyc2VkX3ZhbHVlIC0+IHVuaXRcbiAgZW5kXG5cbiAgbW9kdWxlIEkgPSBQYXJzZXhwLlBvc2l0aW9ucy5JdGVyYXRvclxuXG4gIGxldCByZWMgYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIgPVxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgVHlwZS5BdG9tIF8gLT5cbiAgICAgIGxldCBzdGFydF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgbGV0IGVuZF9wb3MgPSBJLmFkdmFuY2VfZXhuIGl0ZXIgfnNraXA6MCBpblxuICAgICAgQW5ub3QuQXRvbSAoeyBzdGFydF9wb3M7IGVuZF9wb3MgfSwgc2V4cClcbiAgICB8IFR5cGUuTGlzdCBsIC0+XG4gICAgICBsZXQgc3RhcnRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHBfbGlzdCBsIGl0ZXIgaW5cbiAgICAgIGxldCBlbmRfcG9zID0gSS5hZHZhbmNlX2V4biBpdGVyIH5za2lwOjAgaW5cbiAgICAgIEFubm90Lkxpc3QgKHsgc3RhcnRfcG9zOyBlbmRfcG9zIH0sIGFubm90LCBzZXhwKVxuXG4gIGFuZCBhbm5vdGF0ZV9zZXhwX2xpc3Qgc2V4cHMgaXRlciA9XG4gICAgTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIHNleHAgLT4gYW5ub3RhdGVfc2V4cCBzZXhwIGl0ZXIpIHNleHBzKVxuICA7O1xuXG4gIG1vZHVsZSBCYXJlX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJcblxuICAgIHR5cGUgb3V0cHV0ID0gVHlwZS50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIHNleHAgPSByYWlzZV9ub3RyYWNlIChGb3VuZCBzZXhwKVxuICBlbmRcblxuICBtb2R1bGUgQW5ub3RhdGVkX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgSW1wbCA9IFBhcnNleHAuRWFnZXJfYW5kX3Bvc2l0aW9uc1xuXG4gICAgdHlwZSBvdXRwdXQgPSBBbm5vdC50XG5cbiAgICBleGNlcHRpb24gRm91bmQgb2Ygb3V0cHV0XG5cbiAgICBsZXQgcmFpc2VfZm91bmQgX3N0YXRlIChzZXhwLCBwb3NpdGlvbnMpID1cbiAgICAgIGxldCBhbm5vdCA9IGFubm90YXRlX3NleHAgc2V4cCAoSS5jcmVhdGUgcG9zaXRpb25zKSBpblxuICAgICAgcmFpc2Vfbm90cmFjZSAoRm91bmQgYW5ub3QpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfcGFyc2VyIChUIDogc2lnXG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LlRcblxuICAgIHR5cGUgaW5wdXRcblxuICAgIHZhbCBsZW5ndGggOiBpbnB1dCAtPiBpbnRcblxuICAgIHZhbCB1bnNhZmVfZmVlZF9sb29wXG4gICAgICA6ICBJbXBsLlN0YXRlLnRcbiAgICAgIC0+IEltcGwuU3RhY2sudFxuICAgICAgLT4gaW5wdXRcbiAgICAgIC0+IG1heF9wb3M6aW50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBJbXBsLlN0YWNrLnRcbiAgZW5kKSA6IHNpZ1xuICB2YWwgcGFyc2VcbiAgICA6ICA/cGFyc2VfcG9zOlBhcnNlX3Bvcy50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiBULmlucHV0XG4gICAgLT4gKFQuaW5wdXQsIFQub3V0cHV0KSBwYXJzZV9yZXN1bHRcbmVuZCA9IHN0cnVjdFxuICBsZXQgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIGJ1Zl9wb3MgPVxuICAgIHsgUGFyc2VfcG9zLnRleHRfbGluZSA9IFQuSW1wbC5TdGF0ZS5saW5lIHN0YXRlXG4gICAgOyBQYXJzZV9wb3MudGV4dF9jaGFyID0gVC5JbXBsLlN0YXRlLmNvbHVtbiBzdGF0ZVxuICAgIDsgUGFyc2VfcG9zLmdsb2JhbF9vZmZzZXQgPSBULkltcGwuU3RhdGUub2Zmc2V0IHN0YXRlXG4gICAgOyBQYXJzZV9wb3MuYnVmX3Bvc1xuICAgIH1cbiAgOztcblxuICBsZXQgY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zIDwgMFwiO1xuICAgIGlmIGxlbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcInBhcnNlOiBsZW4gPCAwXCI7XG4gICAgbGV0IHN0cl9sZW4gPSBULmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgcG9zX2xlbiA9IHBvcyArIGxlbiBpblxuICAgIGlmIHBvc19sZW4gPiBzdHJfbGVuIHRoZW4gaW52YWxpZF9hcmcgXCJwYXJzZTogcG9zICsgbGVuID4gc3RyX2xlblwiO1xuICAgIHBvc19sZW4gLSAxXG4gIDs7XG5cbiAgbGV0IHJhaXNlX3BhcnNlX2Vycm9yIHN0YXRlIHBvcyBtc2cgPVxuICAgIGxldCBwYXJzZV9zdGF0ZSA9IHsgcGFyc2VfcG9zID0gcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIHBvcyB9IGluXG4gICAgbGV0IHBhcnNlX2Vycm9yID0geyBlcnJfbXNnID0gbXNnOyBwYXJzZV9zdGF0ZSA9IGBTZXhwIHBhcnNlX3N0YXRlIH0gaW5cbiAgICByYWlzZSAoUGFyc2VfZXJyb3IgcGFyc2VfZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9wYXJzZXhwX2Vycm9yIHN0YXRlIHBvcyBlID1cbiAgICBsZXQgbXNnID0gUGFyc2V4cC5QYXJzZV9lcnJvci5tZXNzYWdlIGUgaW5cbiAgICBtYXRjaCBQYXJzZXhwLlBhcnNlX2Vycm9yLlByaXZhdGUub2xkX3BhcnNlcl9leG4gZSB3aXRoXG4gICAgfCBgUGFyc2VfZXJyb3IgLT4gcmFpc2VfcGFyc2VfZXJyb3Igc3RhdGUgcG9zIG1zZ1xuICAgIHwgYEZhaWx1cmUgLT4gZmFpbHdpdGggbXNnXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIH5wb3MgfmxlbiBzdHIgPVxuICAgIGxldCBtYXhfcG9zID0gY2hlY2tfc3RyX2JvdW5kcyB+cG9zIH5sZW4gc3RyIGluXG4gICAgbGV0IHByZXZpb3VzX29mZnNldCA9IFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgaW5cbiAgICBtYXRjaCBULnVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3Mgd2l0aFxuICAgIHwgc3RhY2sgLT4gbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFja1xuICAgIHwgZXhjZXB0aW9uIFQuRm91bmQgcmVzdWx0IC0+XG4gICAgICBsZXQgb2Zmc2V0ID0gVC5JbXBsLlN0YXRlLm9mZnNldCBzdGF0ZSBpblxuICAgICAgbGV0IG5leHRfcG9zID0gcG9zICsgKG9mZnNldCAtIHByZXZpb3VzX29mZnNldCkgaW5cbiAgICAgIERvbmUgKHJlc3VsdCwgcGFyc2VfcG9zX29mX3N0YXRlIHN0YXRlIG5leHRfcG9zKVxuICAgIHwgZXhjZXB0aW9uIFBhcnNleHAuUGFyc2VfZXJyb3IuUGFyc2VfZXJyb3IgZXJyIC0+XG4gICAgICBoYW5kbGVfcGFyc2V4cF9lcnJvciBzdGF0ZSAocG9zICsgKFQuSW1wbC5TdGF0ZS5vZmZzZXQgc3RhdGUgLSBwcmV2aW91c19vZmZzZXQpKSBlcnJcblxuICBhbmQgbWtfY29udF9zdGF0ZSBzdGF0ZSBzdGFjayA9XG4gICAgbGV0IHBhcnNlX2Z1biA9XG4gICAgICBsZXQgdXNlZF9yZWYgPSByZWYgZmFsc2UgaW5cbiAgICAgIGZ1biB+cG9zIH5sZW4gc3RyIC0+XG4gICAgICAgIGlmICF1c2VkX3JlZlxuICAgICAgICB0aGVuIGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwOiBwYXJzZXIgY29udGludWF0aW9uIGNhbGxlZCB0d2ljZVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHVzZWRfcmVmIDo9IHRydWU7XG4gICAgICAgICAgcnVuX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayB+cG9zIH5sZW4gc3RyKVxuICAgIGluXG4gICAgbGV0IGNvbnRfc3RhdGUgPSBULkltcGwuU3RhdGUub2xkX3BhcnNlcl9jb250X3N0YXRlIHN0YXRlIGluXG4gICAgQ29udCAoY29udF9zdGF0ZSwgcGFyc2VfZnVuKVxuICA7O1xuXG4gIGxldCBwYXJzZSA/KHBhcnNlX3BvcyA9IFBhcnNlX3Bvcy5jcmVhdGUgKCkpID9sZW4gc3RyID1cbiAgICBsZXQgcG9zLCBidWZfcG9zID1cbiAgICAgIGxldCB7IFBhcnNlX3Bvcy50ZXh0X2xpbmU7IHRleHRfY2hhcjsgZ2xvYmFsX29mZnNldDsgYnVmX3BvcyB9ID0gcGFyc2VfcG9zIGluXG4gICAgICAoIHsgUGFyc2V4cC5Qb3NpdGlvbnMubGluZSA9IHRleHRfbGluZTsgY29sID0gdGV4dF9jaGFyOyBvZmZzZXQgPSBnbG9iYWxfb2Zmc2V0IH1cbiAgICAgICwgYnVmX3BvcyApXG4gICAgaW5cbiAgICBsZXQgc3RhdGUgPSBULkltcGwuU3RhdGUuY3JlYXRlIH5wb3Mgfm5vX3NleHBfaXNfZXJyb3I6ZmFsc2UgVC5yYWlzZV9mb3VuZCBpblxuICAgIGxldCBzdGFjayA9IFQuSW1wbC5TdGFjay5lbXB0eSBpblxuICAgIGxldCBsZW4gPVxuICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgIHwgTm9uZSAtPiBULmxlbmd0aCBzdHIgLSBidWZfcG9zXG4gICAgaW5cbiAgICBydW5fZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+cG9zOmJ1Zl9wb3MgfmxlblxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgU3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3MgPVxuICAgICAgaWYgcG9zIDw9IG1heF9wb3NcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3RhY2sgPSBJbXBsLmZlZWQgc3RhdGUgKFN0cmluZy51bnNhZmVfZ2V0IHN0ciBwb3MpIHN0YWNrIGluXG4gICAgICAgIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgc3RyIH5tYXhfcG9zIH5wb3M6KHBvcyArIDEpKVxuICAgICAgZWxzZSBzdGFja1xuICAgIDs7XG4gIGVuZClcblxubGV0IHBhcnNlX3N0ciA9IFN0cmluZ19zaW5nbGVfc2V4cC5wYXJzZVxubGV0IHBhcnNlID0gU3RyaW5nX3NpbmdsZV9zZXhwLnBhcnNlXG5cbm1vZHVsZSBTdHJpbmdfc2luZ2xlX2Fubm90ID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5Bbm5vdGF0ZWRfc2V4cFxuXG4gICAgdHlwZSBpbnB1dCA9IHN0cmluZ1xuXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcblxuICAgIGxldCByZWMgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2Vfc3RyX2Fubm90ID0gU3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG5tb2R1bGUgQmlnc3RyaW5nX3NpbmdsZV9zZXhwID0gTWFrZV9wYXJzZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyc2VyX291dHB1dC5CYXJlX3NleHBcblxuICAgIHR5cGUgaW5wdXQgPSBiaWdzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBBcnJheTEuZGltXG5cbiAgICBsZXQgcmVjIHVuc2FmZV9mZWVkX2xvb3Agc3RhdGUgc3RhY2sgKHN0ciA6IGlucHV0KSB+bWF4X3BvcyB+cG9zID1cbiAgICAgIGlmIHBvcyA8PSBtYXhfcG9zXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHN0YWNrID0gSW1wbC5mZWVkIHN0YXRlIChBcnJheTEudW5zYWZlX2dldCBzdHIgcG9zKSBzdGFjayBpblxuICAgICAgICB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIHN0ciB+bWF4X3BvcyB+cG9zOihwb3MgKyAxKSlcbiAgICAgIGVsc2Ugc3RhY2tcbiAgICA7O1xuICBlbmQpXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgPSBCaWdzdHJpbmdfc2luZ2xlX3NleHAucGFyc2VcblxubW9kdWxlIEJpZ3N0cmluZ19zaW5nbGVfYW5ub3QgPSBNYWtlX3BhcnNlciAoc3RydWN0XG4gICAgaW5jbHVkZSBQYXJzZXJfb3V0cHV0LkFubm90YXRlZF9zZXhwXG5cbiAgICB0eXBlIGlucHV0ID0gYmlnc3RyaW5nXG5cbiAgICBsZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG4gICAgbGV0IHJlYyB1bnNhZmVfZmVlZF9sb29wIHN0YXRlIHN0YWNrIChzdHIgOiBpbnB1dCkgfm1heF9wb3MgfnBvcyA9XG4gICAgICBpZiBwb3MgPD0gbWF4X3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCBzdGFjayA9IEltcGwuZmVlZCBzdGF0ZSAoQXJyYXkxLnVuc2FmZV9nZXQgc3RyIHBvcykgc3RhY2sgaW5cbiAgICAgICAgdW5zYWZlX2ZlZWRfbG9vcCBzdGF0ZSBzdGFjayBzdHIgfm1heF9wb3MgfnBvczoocG9zICsgMSkpXG4gICAgICBlbHNlIHN0YWNrXG4gICAgOztcbiAgZW5kKVxuXG5sZXQgcGFyc2VfYmlnc3RyaW5nX2Fubm90ID0gQmlnc3RyaW5nX3NpbmdsZV9hbm5vdC5wYXJzZVxuXG4oKiBJbnB1dCBmdW5jdGlvbnMgKilcblxubGV0IG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSA9XG4gICgpO1xuICBmdW4gfnBvcyB+bGVuIHN0ciAtPlxuICAgIGxldCBwYXJzZV9wb3MgPVxuICAgICAgbWF0Y2ggcGFyc2VfcG9zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBQYXJzZV9wb3MuY3JlYXRlIH5idWZfcG9zOnBvcyAoKVxuICAgICAgfCBTb21lIHBhcnNlX3BvcyAtPlxuICAgICAgICBwYXJzZV9wb3MuUGFyc2VfcG9zLmJ1Zl9wb3MgPC0gcG9zO1xuICAgICAgICBwYXJzZV9wb3NcbiAgICBpblxuICAgIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOihTb21lIGxlbikgc3RyXG47O1xuXG4oKiBbd3NfYnVmXSBtdXN0IGNvbnRhaW4gYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyICopXG5sZXQgZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiA9XG4gICgqIFdoZW4gcGFyc2luZyBhdG9tcywgdGhlIGluY3JlbWVudGFsIHBhcnNlciBjYW5ub3QgdGVsbCB3aGV0aGVyXG4gICAgIGl0IGlzIGF0IHRoZSBlbmQgdW50aWwgaXQgaGl0cyB3aGl0ZXNwYWNlLiAgV2UgdGhlcmVmb3JlIGZlZWQgaXRcbiAgICAgb25lIHNwYWNlIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGZpbmlzaGVkLiAqKVxuICBtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgd3NfYnVmIHdpdGhcbiAgfCBEb25lIChzZXhwLCBfKSAtPiBPayBzZXhwXG4gIHwgQ29udCAoY29udF9zdGF0ZSwgXykgLT4gRXJyb3IgY29udF9zdGF0ZVxuOztcblxubGV0IGdlbl9pbnB1dF9zZXhwIG15X3BhcnNlID9wYXJzZV9wb3MgaWMgPVxuICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEgaW5cbiAgbGV0IHJlYyBsb29wIHRoaXNfcGFyc2UgPVxuICAgIG1hdGNoIGlucHV0X2NoYXIgaWMgd2l0aFxuICAgIHwgZXhjZXB0aW9uIEVuZF9vZl9maWxlIC0+XG4gICAgICAobWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZjpcIiBcIiB3aXRoXG4gICAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgICB8IEVycm9yIF8gLT4gcmFpc2UgRW5kX29mX2ZpbGUpXG4gICAgfCBjIC0+XG4gICAgICBCeXRlcy5zZXQgYnVmIDAgYztcbiAgICAgIChtYXRjaCB0aGlzX3BhcnNlIH5wb3M6MCB+bGVuOjEgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UpXG4gIGluXG4gIGxvb3AgKG1rX3RoaXNfcGFyc2UgP3BhcnNlX3BvcyBteV9wYXJzZSlcbjs7XG5cbmxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG5cbmxldCBnZW5faW5wdXRfcmV2X3NleHBzIG15X3BhcnNlIH53c19idWYgP3BhcnNlX3BvcyA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBpYyA9XG4gIGxldCByZXZfc2V4cHNfcmVmID0gcmVmIFtdIGluXG4gIGxldCBidWZfbGVuID0gQnl0ZXMubGVuZ3RoIGJ1ZiBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IDBcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvcyB+bGVuIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1Zikgd2l0aFxuICAgICAgfCBEb25lIChzZXhwLCAoeyBQYXJzZV9wb3MuYnVmX3BvczsgXyB9IGFzIHBhcnNlX3BvcykpIC0+XG4gICAgICAgIHJldl9zZXhwc19yZWYgOj0gc2V4cCA6OiAhcmV2X3NleHBzX3JlZjtcbiAgICAgICAgbGV0IG5fcGFyc2VkID0gYnVmX3BvcyAtIHBvcyBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBpZiBuX3BhcnNlZCA9IGxlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgbmV3X2xlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICAgICAgICBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46bmV3X2xlbilcbiAgICAgICAgZWxzZSBsb29wIHRoaXNfcGFyc2UgfnBvczpidWZfcG9zIH5sZW46KGxlbiAtIG5fcGFyc2VkKVxuICAgICAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPiBsb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW46KGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4pKVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZmVlZF9lbmRfb2ZfaW5wdXQgfnRoaXNfcGFyc2UgfndzX2J1ZiB3aXRoXG4gICAgICB8IE9rIHNleHAgLT4gc2V4cCA6OiAhcmV2X3NleHBzX3JlZlxuICAgICAgfCBFcnJvciBQYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UgLT4gIXJldl9zZXhwc19yZWZcbiAgICAgIHwgRXJyb3IgY29udF9zdGF0ZSAtPlxuICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgIChcIlNleHBsaWIuU2V4cC5pbnB1dF9yZXZfc2V4cHM6IHJlYWNoZWQgRU9GIHdoaWxlIGluIHN0YXRlIFwiXG4gICAgICAgICAgIF4gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSkpXG4gIGluXG4gIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gIGxldCB0aGlzX3BhcnNlID0gbWtfdGhpc19wYXJzZSA/cGFyc2VfcG9zIG15X3BhcnNlIGluXG4gIGxvb3AgdGhpc19wYXJzZSB+cG9zOjAgfmxlblxuOztcblxubGV0IGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPVxuICBnZW5faW5wdXRfcmV2X3NleHBzIHBhcnNlIH53c19idWY6XCIgXCIgP3BhcnNlX3BvcyA/YnVmIGljXG47O1xuXG5sZXQgaW5wdXRfc2V4cHMgP3BhcnNlX3BvcyA/YnVmIGljID0gTGlzdC5yZXYgKGlucHV0X3Jldl9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMpXG5cbigqIG9mX3N0cmluZyBhbmQgb2ZfYmlnc3RyaW5nICopXG5cbmxldCBvZl9zdHJpbmdfYmlnc3RyaW5nIGxvYyBteV9wYXJzZSB3c19idWYgZ2V0X2xlbiBnZXRfc3ViIHN0ciA9XG4gIG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6Tm9uZSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgfCBEb25lIChzZXhwLCBwYXJzZV9wb3MpIC0+XG4gICAgKG1hdGNoIG15X3BhcnNlID9wYXJzZV9wb3M6KFNvbWUgcGFyc2VfcG9zKSA/bGVuOk5vbmUgc3RyIHdpdGhcbiAgICAgfCBEb25lIChfc2V4cDIsIF8pIC0+XG4gICAgICAgZmFpbHdpdGhcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICBcIlNleHBsaWIuU2V4cC4lczogZ290IG11bHRpcGxlIFMtZXhwcmVzc2lvbnMgd2hlcmUgb25seSBvbmUgd2FzIGV4cGVjdGVkLlwiXG4gICAgICAgICAgICBsb2MpXG4gICAgIHwgQ29udCAoQ29udF9zdGF0ZS5QYXJzaW5nX3RvcGxldmVsX3doaXRlc3BhY2UsIF8pIC0+IHNleHBcbiAgICAgfCBDb250IChfLCBfKSAtPlxuICAgICAgICgqIG5vdCB1c2luZyBbZmVlZF9lbmRfb2ZfaW5wdXRdIGhlcmUgbWVhbnMgXCJhIGJcIiB3aWxsIGVuZCB1cCBoZXJlIGFuZCBub3QgaW5cbiAgICAgICAgICBcIm11bHRpcGxlIFMtZXhwcmVzc2lvbnNcIiBicmFuY2gsIGJ1dCBpdCBkb2Vzbid0IG1hdHRlciB0aGF0IG11Y2ggKilcbiAgICAgICBmYWlsd2l0aFxuICAgICAgICAgKHNwcmludGZcbiAgICAgICAgICAgIFwiU2V4cGxpYi5TZXhwLiVzOiBTLWV4cHJlc3Npb24gZm9sbG93ZWQgYnkgZGF0YSBhdCBwb3NpdGlvbiAlZC4uLlwiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIHBhcnNlX3Bvcy5idWZfcG9zKSlcbiAgfCBDb250IChfLCB0aGlzX3BhcnNlKSAtPlxuICAgIChtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmIHdpdGhcbiAgICAgfCBPayBzZXhwIC0+IHNleHBcbiAgICAgfCBFcnJvciBjb250X3N0YXRlIC0+XG4gICAgICAgbGV0IGNvbnRfc3RhdGVfc3RyID0gQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSBpblxuICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgXCJTZXhwbGliLlNleHAuJXM6IGluY29tcGxldGUgUy1leHByZXNzaW9uIHdoaWxlIGluIHN0YXRlICVzOiAlc1wiXG4gICAgICAgICAgICBsb2NcbiAgICAgICAgICAgIGNvbnRfc3RhdGVfc3RyXG4gICAgICAgICAgICAoZ2V0X3N1YiBzdHIgMCAoZ2V0X2xlbiBzdHIpKSkpXG47O1xuXG5sZXQgb2Zfc3RyaW5nIHN0ciA9IG9mX3N0cmluZ19iaWdzdHJpbmcgXCJvZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG5sZXQgb2Zfc3RyaW5nX21hbnkgc3RyID0gUGFyc2V4cC5NYW55LnBhcnNlX3N0cmluZ19leG4gc3RyXG5cbmxldCBnZXRfYnN0cl9zdWJfc3RyIGJzdHIgcG9zIGxlbiA9XG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQnl0ZXMuc2V0IHN0ciBpIGJzdHIue3BvcyArIGl9XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc3RyXG47O1xuXG5sZXQgYnN0cl93c19idWYgPSBBcnJheTEuY3JlYXRlIGNoYXIgY19sYXlvdXQgMVxubGV0ICgpID0gYnN0cl93c19idWYuezB9IDwtICcgJ1xuXG5sZXQgb2ZfYmlnc3RyaW5nIGJzdHIgPVxuICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgXCJvZl9iaWdzdHJpbmdcIlxuICAgIHBhcnNlX2JpZ3N0cmluZ1xuICAgIGJzdHJfd3NfYnVmXG4gICAgQXJyYXkxLmRpbVxuICAgIGdldF9ic3RyX3N1Yl9zdHJcbiAgICBic3RyXG47O1xuXG4oKiBMb2FkaW5nICopXG5cbmxldCBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZSA9XG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICB0cnlcbiAgICBsZXQgc2V4cHMgPSBpbnB1dF9yZXZfc2V4cHMgP3BhcnNlX3BvczpOb25lID9idWYgaWMgaW5cbiAgICBjbG9zZV9pbiBpYztcbiAgICBzZXhwc1xuICB3aXRoXG4gIHwgZXhjIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZXhjXG47O1xuXG5sZXQgbG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfcmV2X3NleHBzIGlucHV0X3Jldl9zZXhwcyA/YnVmIGZpbGVcbmxldCBsb2FkX3NleHBzID9idWYgZmlsZSA9IExpc3QucmV2IChsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUpXG5sZXQgZ2VuX2xvYWRfc2V4cF9sb2MgPSBcIlNleHBsaWIuU2V4cC5nZW5fbG9hZF9zZXhwXCJcblxubGV0IGdlbl9sb2FkX3NleHAgbXlfcGFyc2UgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlID1cbiAgbGV0IGJ1Zl9sZW4gPSBCeXRlcy5sZW5ndGggYnVmIGluXG4gIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICBsZXQgcmVjIGxvb3AgdGhpc19wYXJzZSA9XG4gICAgbGV0IGxlbiA9IGlucHV0IGljIGJ1ZiAwIGJ1Zl9sZW4gaW5cbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBmZWVkX2VuZF9vZl9pbnB1dCB+dGhpc19wYXJzZSB+d3NfYnVmOlwiIFwiIHdpdGhcbiAgICAgIHwgT2sgc2V4cCAtPiBzZXhwXG4gICAgICB8IEVycm9yIGNvbnRfc3RhdGUgLT5cbiAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgIFwiJXM6IEVPRiBpbiAlcyB3aGlsZSBpbiBzdGF0ZSAlc1wiXG4gICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgKENvbnRfc3RhdGUudG9fc3RyaW5nIGNvbnRfc3RhdGUpKSlcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHRoaXNfcGFyc2UgfnBvczowIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICB8IERvbmUgKHNleHAsICh7IFBhcnNlX3Bvcy5idWZfcG9zOyBfIH0gYXMgcGFyc2VfcG9zKSkgd2hlbiBzdHJpY3QgLT5cbiAgICAgICAgbGV0IHJlYyBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3MgfmxlbiA9XG4gICAgICAgICAgbWF0Y2ggdGhpc19wYXJzZSB+cG9zIH5sZW4gKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnVmKSB3aXRoXG4gICAgICAgICAgfCBEb25lIF8gLT5cbiAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgIChzcHJpbnRmIFwiJXM6IG1vcmUgdGhhbiBvbmUgUy1leHByZXNzaW9uIGluIGZpbGUgJXNcIiBnZW5fbG9hZF9zZXhwX2xvYyBmaWxlKVxuICAgICAgICAgIHwgQ29udCAoY29udF9zdGF0ZSwgdGhpc19wYXJzZSkgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBpbnB1dCBpYyBidWYgMCBidWZfbGVuIGluXG4gICAgICAgICAgICBpZiBsZW4gPiAwXG4gICAgICAgICAgICB0aGVuIHN0cmljdF9sb29wIHRoaXNfcGFyc2UgfnBvczowIH5sZW5cbiAgICAgICAgICAgIGVsc2UgaWYgY29udF9zdGF0ZSA9IENvbnRfc3RhdGUuUGFyc2luZ190b3BsZXZlbF93aGl0ZXNwYWNlXG4gICAgICAgICAgICB0aGVuIHNleHBcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiJXM6ICVzIGluIHN0YXRlICVzIGxvYWRpbmcgZmlsZSAlc1wiXG4gICAgICAgICAgICAgICAgICAgZ2VuX2xvYWRfc2V4cF9sb2NcbiAgICAgICAgICAgICAgICAgICBcImFkZGl0aW9uYWwgaW5jb21wbGV0ZSBkYXRhXCJcbiAgICAgICAgICAgICAgICAgICAoQ29udF9zdGF0ZS50b19zdHJpbmcgY29udF9zdGF0ZSlcbiAgICAgICAgICAgICAgICAgICBmaWxlKVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGhpc19wYXJzZSA9IG1rX3RoaXNfcGFyc2UgfnBhcnNlX3BvcyBteV9wYXJzZSBpblxuICAgICAgICBzdHJpY3RfbG9vcCB0aGlzX3BhcnNlIH5wb3M6YnVmX3BvcyB+bGVuOihsZW4gLSBidWZfcG9zKVxuICAgICAgfCBEb25lIChzZXhwLCBfKSAtPiBzZXhwXG4gICAgICB8IENvbnQgKF8sIHRoaXNfcGFyc2UpIC0+IGxvb3AgdGhpc19wYXJzZSlcbiAgaW5cbiAgdHJ5XG4gICAgbGV0IHNleHAgPSBsb29wIChta190aGlzX3BhcnNlIG15X3BhcnNlKSBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHNleHBcbiAgd2l0aFxuICB8IGV4YyAtPlxuICAgIGNsb3NlX2luX25vZXJyIGljO1xuICAgIHJhaXNlIGV4Y1xuOztcblxubGV0IGxvYWRfc2V4cCA/c3RyaWN0ID9idWYgZmlsZSA9IGdlbl9sb2FkX3NleHAgcGFyc2UgP3N0cmljdCA/YnVmIGZpbGVcblxubW9kdWxlIEFubm90YXRlZCA9IHN0cnVjdFxuICBpbmNsdWRlIEFubm90XG5cbiAgbGV0IHBhcnNlID0gcGFyc2Vfc3RyX2Fubm90XG4gIGxldCBwYXJzZV9iaWdzdHJpbmcgPSBwYXJzZV9iaWdzdHJpbmdfYW5ub3RcblxuICBsZXQgaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYyA9XG4gICAgZ2VuX2lucHV0X3Jldl9zZXhwcyBwYXJzZSB+d3NfYnVmOlwiIFwiID9wYXJzZV9wb3MgP2J1ZiBpY1xuICA7O1xuXG4gIGxldCBpbnB1dF9zZXhwID9wYXJzZV9wb3MgaWMgPSBnZW5faW5wdXRfc2V4cCBwYXJzZSA/cGFyc2VfcG9zIGljXG4gIGxldCBpbnB1dF9zZXhwcyA/cGFyc2VfcG9zID9idWYgaWMgPSBMaXN0LnJldiAoaW5wdXRfcmV2X3NleHBzID9wYXJzZV9wb3MgP2J1ZiBpYylcblxuICBsZXQgb2Zfc3RyaW5nIHN0ciA9XG4gICAgb2Zfc3RyaW5nX2JpZ3N0cmluZyBcIkFubm90YXRlZC5vZl9zdHJpbmdcIiBwYXJzZSBcIiBcIiBTdHJpbmcubGVuZ3RoIFN0cmluZy5zdWIgc3RyXG4gIDs7XG5cbiAgbGV0IG9mX2JpZ3N0cmluZyBic3RyID1cbiAgICBvZl9zdHJpbmdfYmlnc3RyaW5nXG4gICAgICBcIkFubm90YXRlZC5vZl9iaWdzdHJpbmdcIlxuICAgICAgcGFyc2VfYmlnc3RyaW5nXG4gICAgICBic3RyX3dzX2J1ZlxuICAgICAgQXJyYXkxLmRpbVxuICAgICAgZ2V0X2JzdHJfc3ViX3N0clxuICAgICAgYnN0clxuICA7O1xuXG4gIGxldCBsb2FkX3Jldl9zZXhwcyA/YnVmIGZpbGUgPSBnZW5fbG9hZF9yZXZfc2V4cHMgaW5wdXRfcmV2X3NleHBzID9idWYgZmlsZVxuICBsZXQgbG9hZF9zZXhwcyA/YnVmIGZpbGUgPSBMaXN0LnJldiAobG9hZF9yZXZfc2V4cHMgP2J1ZiBmaWxlKVxuICBsZXQgbG9hZF9zZXhwID9zdHJpY3QgP2J1ZiBmaWxlID0gZ2VuX2xvYWRfc2V4cCBwYXJzZSA/c3RyaWN0ID9idWYgZmlsZVxuXG4gIGxldCBjb252IGYgYW5ub3Rfc2V4cCA9XG4gICAgbGV0IHNleHAgPSBnZXRfc2V4cCBhbm5vdF9zZXhwIGluXG4gICAgdHJ5IGBSZXN1bHQgKGYgc2V4cCkgd2l0aFxuICAgIHwgT2Zfc2V4cF9lcnJvciAoZXhjLCBiYWRfc2V4cCkgYXMgZSAtPlxuICAgICAgKG1hdGNoIGZpbmRfc2V4cCBhbm5vdF9zZXhwIGJhZF9zZXhwIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gcmFpc2UgZVxuICAgICAgIHwgU29tZSBiYWRfYW5ub3Rfc2V4cCAtPiBgRXJyb3IgKGV4YywgYmFkX2Fubm90X3NleHApKVxuICA7O1xuXG4gIGxldCBnZXRfY29udl9leG4gfmZpbGUgfmV4YyBhbm5vdF9zZXhwID1cbiAgICBsZXQgcmFuZ2UgPSBnZXRfcmFuZ2UgYW5ub3Rfc2V4cCBpblxuICAgIGxldCB7IHN0YXJ0X3BvcyA9IHsgbGluZTsgY29sOyBvZmZzZXQgPSBfIH07IGVuZF9wb3MgPSBfIH0gPSByYW5nZSBpblxuICAgIGxldCBsb2MgPSBzcHJpbnRmIFwiJXM6JWQ6JWRcIiBmaWxlIGxpbmUgY29sIGluXG4gICAgT2Zfc2V4cF9lcnJvciAoQW5ub3QuQ29udl9leG4gKGxvYywgZXhjKSwgZ2V0X3NleHAgYW5ub3Rfc2V4cClcbiAgOztcbmVuZFxuXG5sZXQgbG9hZF9zZXhwX2NvbnYgPyhzdHJpY3QgPSB0cnVlKSA/KGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA4MTkyKSBmaWxlIGYgPVxuICBsZXQgc2V4cCA9IGxvYWRfc2V4cCB+c3RyaWN0IH5idWYgZmlsZSBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKEFubm90YXRlZC5sb2FkX3NleHAgfnN0cmljdCB+YnVmIGZpbGUpXG47O1xuXG5sZXQgcmFpc2VfY29udl9leG4gfmZpbGUgPSBmdW5jdGlvblxuICB8IGBSZXN1bHQgcmVzIC0+IHJlc1xuICB8IGBFcnJvciAoZXhjLCBhbm5vdF9zZXhwKSAtPiByYWlzZSAoQW5ub3RhdGVkLmdldF9jb252X2V4biB+ZmlsZSB+ZXhjIGFubm90X3NleHApXG47O1xuXG5sZXQgbG9hZF9zZXhwX2NvbnZfZXhuID9zdHJpY3QgP2J1ZiBmaWxlIGYgPVxuICByYWlzZV9jb252X2V4biB+ZmlsZSAobG9hZF9zZXhwX2NvbnYgP3N0cmljdCA/YnVmIGZpbGUgZilcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnYgPyhidWYgPSBCeXRlcy5jcmVhdGUgODE5MikgZmlsZSBmID1cbiAgbGV0IHJldl9zZXhwcyA9IGxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSBpblxuICB0cnkgTGlzdC5yZXZfbWFwIChmdW4gc2V4cCAtPiBgUmVzdWx0IChmIHNleHApKSByZXZfc2V4cHMgd2l0aFxuICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+XG4gICAgKG1hdGNoIEFubm90YXRlZC5sb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgd2l0aFxuICAgICB8IFtdIC0+XG4gICAgICAgKCogRmlsZSBpcyBub3cgZW1wdHkgLSBwZXJoYXBzIGl0IHdhcyBhIHRlbXBvcmFyeSBmaWxlIGhhbmRsZT8gKilcbiAgICAgICByYWlzZSBlXG4gICAgIHwgcmV2X2Fubm90X3NleHBzIC0+XG4gICAgICAgTGlzdC5yZXZfbWFwIChmdW4gYW5ub3Rfc2V4cCAtPiBBbm5vdGF0ZWQuY29udiBmIGFubm90X3NleHApIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBsb2FkX3NleHBzX2NvbnZfZXhuID8oYnVmID0gQnl0ZXMuY3JlYXRlIDgxOTIpIGZpbGUgZiA9XG4gIGxldCByZXZfc2V4cHMgPSBsb2FkX3Jldl9zZXhwcyB+YnVmIGZpbGUgaW5cbiAgdHJ5IExpc3QucmV2X21hcCBmIHJldl9zZXhwcyB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGUgLT5cbiAgICAobWF0Y2ggQW5ub3RhdGVkLmxvYWRfcmV2X3NleHBzIH5idWYgZmlsZSB3aXRoXG4gICAgIHwgW10gLT5cbiAgICAgICAoKiBGaWxlIGlzIG5vdyBlbXB0eSAtIHBlcmhhcHMgaXQgd2FzIGEgdGVtcG9yYXJ5IGZpbGUgaGFuZGxlPyAqKVxuICAgICAgIHJhaXNlIGVcbiAgICAgfCByZXZfYW5ub3Rfc2V4cHMgLT5cbiAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgIChmdW4gYW5ub3Rfc2V4cCAtPiByYWlzZV9jb252X2V4biB+ZmlsZSAoQW5ub3RhdGVkLmNvbnYgZiBhbm5vdF9zZXhwKSlcbiAgICAgICAgIHJldl9hbm5vdF9zZXhwcylcbjs7XG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIGFubm90X29mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgYFJlc3VsdCAoZiBzZXhwKSB3aXRoXG4gIHwgT2Zfc2V4cF9lcnJvciBfIC0+IEFubm90YXRlZC5jb252IGYgKGFubm90X29mX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnYgc3RyIGYgPSBnZW5fb2Zfc3RyaW5nX2NvbnYgb2Zfc3RyaW5nIEFubm90YXRlZC5vZl9zdHJpbmcgc3RyIGZcblxubGV0IG9mX2JpZ3N0cmluZ19jb252IGJzdHIgZiA9XG4gIGdlbl9vZl9zdHJpbmdfY29udiBvZl9iaWdzdHJpbmcgQW5ub3RhdGVkLm9mX2JpZ3N0cmluZyBic3RyIGZcbjs7XG5cbm1vZHVsZSBPZl9zdHJpbmdfY29udl9leG4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGV4YyA6IGV4blxuICAgIDsgc2V4cCA6IFR5cGUudFxuICAgIDsgc3ViX3NleHAgOiBUeXBlLnRcbiAgICB9XG5cbiAgZXhjZXB0aW9uIEUgb2YgdFxuXG4gIGxldCAoKSA9XG4gICAgQ29udi5FeG5fY29udmVydGVyLmFkZCB+ZmluYWxpc2U6ZmFsc2UgWyVleHRlbnNpb25fY29uc3RydWN0b3IgRV0gKGZ1bmN0aW9uXG4gICAgICB8IEUgb3NjZSAtPlxuICAgICAgICBzZXhwX2NvbnZlcnNpb25fZXJyb3JfbWVzc2FnZVxuICAgICAgICAgICgpXG4gICAgICAgICAgfmludmFsaWRfc2V4cDpvc2NlLnN1Yl9zZXhwXG4gICAgICAgICAgfmV4bjpvc2NlLmV4Y1xuICAgICAgICAgIH5jb250YWluaW5nX3NleHA6b3NjZS5zZXhwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICA7O1xuZW5kXG5cbmxldCBnZW5fb2Zfc3RyaW5nX2NvbnZfZXhuIG9mX3N0cmluZyBzdHIgZiA9XG4gIGxldCBzZXhwID0gb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgZiBzZXhwIHdpdGhcbiAgfCBPZl9zZXhwX2Vycm9yIChleGMsIHN1Yl9zZXhwKSAtPlxuICAgIHJhaXNlIChPZl9zdHJpbmdfY29udl9leG4uRSB7IE9mX3N0cmluZ19jb252X2V4bi5leGM7IHNleHA7IHN1Yl9zZXhwIH0pXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2NvbnZfZXhuIHN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9zdHJpbmcgc3RyIGZcbmxldCBvZl9iaWdzdHJpbmdfY29udl9leG4gYnN0ciBmID0gZ2VuX29mX3N0cmluZ19jb252X2V4biBvZl9iaWdzdHJpbmcgYnN0ciBmXG5cbmxldCBvZl9zdHJpbmdfbWFueV9jb252X2V4biBzdHIgZiA9XG4gIGxldCBzZXhwcyA9IG9mX3N0cmluZ19tYW55IHN0ciBpblxuICBMaXN0Lm1hcCAoZnVuIHNleHAgLT4gZ2VuX29mX3N0cmluZ19jb252X2V4biAoZnVuIHggLT4geCkgc2V4cCBmKSBzZXhwc1xuOztcblxuKCogVXRpbGl0aWVzIGZvciBhdXRvbWF0ZWQgdHlwZSBjb252ZXJzaW9ucyAqKVxuXG5sZXQgdW5pdCA9IExpc3QgW11cblxubGV0IGlzX3VuaXQgPSBmdW5jdGlvblxuICB8IExpc3QgW10gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmV4dGVybmFsIHNleHBfb2ZfdCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRfb2Zfc2V4cCA6IHQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuKCogVXRpbGl0aWVzIGZvciBjb252ZXJzaW9uIGVycm9yIGhhbmRsaW5nICopXG5cbnR5cGUgZm91bmQgPVxuICBbIGBGb3VuZFxuICB8IGBQb3Mgb2YgaW50ICogZm91bmRcbiAgXVxuXG50eXBlIHNlYXJjaF9yZXN1bHQgPVxuICBbIGBOb3RfZm91bmRcbiAgfCBmb3VuZFxuICBdXG5cbmxldCByZWMgc2VhcmNoX3BoeXNpY2FsIHNleHAgfmNvbnRhaW5lZCA9XG4gIGlmIHNleHAgPT0gY29udGFpbmVkXG4gIHRoZW4gYEZvdW5kXG4gIGVsc2UgKFxuICAgIG1hdGNoIHNleHAgd2l0aFxuICAgIHwgQXRvbSBfIC0+IGBOb3RfZm91bmRcbiAgICB8IExpc3QgbHN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgaSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYE5vdF9mb3VuZFxuICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgIGxldCByZXMgPSBzZWFyY2hfcGh5c2ljYWwgaCB+Y29udGFpbmVkIGluXG4gICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgIHwgYE5vdF9mb3VuZCAtPiBsb29wIChpICsgMSkgdFxuICAgICAgICAgICB8ICNmb3VuZCBhcyBmb3VuZCAtPiBgUG9zIChpLCBmb3VuZCkpXG4gICAgICBpblxuICAgICAgbG9vcCAwIGxzdClcbjs7XG5cbmxldCByZWMgc3Vic3RfZm91bmQgc2V4cCB+c3Vic3QgPSBmdW5jdGlvblxuICB8IGBGb3VuZCAtPiBzdWJzdFxuICB8IGBQb3MgKHBvcywgZm91bmQpIC0+XG4gICAgKG1hdGNoIHNleHAgd2l0aFxuICAgICB8IEF0b20gXyAtPiBmYWlsd2l0aCBcIlNleHBsaWIuU2V4cC5zdWJzdF9mb3VuZDogYXRvbSB3aGVuIHBvc2l0aW9uIHJlcXVlc3RlZFwiXG4gICAgIHwgTGlzdCBsc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgYWNjIHBvcyA9IGZ1bmN0aW9uXG4gICAgICAgICB8IFtdIC0+IGZhaWx3aXRoIFwiU2V4cGxpYi5TZXhwLnN1YnN0X2ZvdW5kOiBzaG9ydCBsaXN0IHdoZW4gcG9zaXRpb24gcmVxdWVzdGVkXCJcbiAgICAgICAgIHwgaCA6OiB0IHdoZW4gcG9zIDw+IDAgLT4gbG9vcCAoaCA6OiBhY2MpIChwb3MgLSAxKSB0XG4gICAgICAgICB8IGggOjogdCAtPiBMaXN0IChMaXN0LnJldl9hcHBlbmQgYWNjIChzdWJzdF9mb3VuZCBoIH5zdWJzdCBmb3VuZCA6OiB0KSlcbiAgICAgICBpblxuICAgICAgIGxvb3AgW10gcG9zIGxzdClcbjs7XG4iLCIoKiBwYWNrYWdpbmcgb2YgYW5ub3RhdGVkIHNleHAgZnVuY3Rpb25zICopXG5cbm1vZHVsZSBMaXN0ID0gc3RydWN0XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgZiB0XG4gIGxldCBtYXAgdCB+ZiA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgZiB0KVxuZW5kXG5cbmluY2x1ZGUgVHlwZV93aXRoX2xheW91dFxuXG50eXBlIHBvcyA9IFNyY19wb3MuUmVsYXRpdmUudCA9XG4gIHsgcm93IDogaW50XG4gIDsgY29sIDogaW50XG4gIH1cblxubGV0IHNleHBfb2ZfcG9zID0gU3JjX3Bvcy5SZWxhdGl2ZS5zZXhwX29mX3RcblxubW9kdWxlIExleGVyID0gc3RydWN0XG4gIGxldCBtYWluID0gTGV4ZXIubWFpbl93aXRoX2xheW91dFxuZW5kXG5cbm1vZHVsZSBQYXJzZXIgPSBQYXJzZXJfd2l0aF9sYXlvdXRcblxubW9kdWxlIFJlbmRlciA9IHN0cnVjdFxuICBtb2R1bGUgUmVsX3BvcyA9IFNyY19wb3MuUmVsYXRpdmVcbiAgbW9kdWxlIEFic19wb3MgPSBTcmNfcG9zLkFic29sdXRlXG5cbiAgdHlwZSBsYXN0X2F0b20gPVxuICAgIHsgaW1tZWRfYWZ0ZXIgOiBBYnNfcG9zLnRcbiAgICA7IHVuZXNjYXBlZCA6IGJvb2xcbiAgICB9XG5cbiAgdHlwZSBzdGF0ZSA9XG4gICAgeyBtdXRhYmxlIHJvd19zaGlmdCA6IFJlbF9wb3MudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50IDogQWJzX3Bvcy50XG4gICAgOyBtdXRhYmxlIGxhc3RfYXRvbSA6IGxhc3RfYXRvbSBvcHRpb25cbiAgICA7IG11dGFibGUgbGFzdF9jb21tZW50X3JvdyA6IGludFxuICAgIH1cblxuICAoKiB0aGUgcG9pbnQgb2YgW2ltbWVkX2FmdGVyX2xhc3RfYXRvbV0gaXMgdG8gcHJldmVudFxuICAgICAoQSBCIEMpIGZyb20gcmVuZGVyaW5nIGFzIChBIEJCQykgYWZ0ZXIgd2UgcmVwbGFjZSBCIHdpdGggQkIgKilcblxuICB0eXBlICdhIHQgPSAoY2hhciAtPiB1bml0KSAtPiBzdGF0ZSAtPiAnYVxuXG4gIGxldCByZXR1cm4gYSBfcHV0YyBfc3QgPSBhXG4gIGxldCBiaW5kIG0gfmYgcHV0YyBzdCA9IGYgKG0gcHV0YyBzdCkgcHV0YyBzdFxuXG4gIGxldCBydW4gcHV0YyBtID1cbiAgICBtXG4gICAgICBwdXRjXG4gICAgICB7IHJvd19zaGlmdCA9IFJlbF9wb3MuemVyb1xuICAgICAgOyBjdXJyZW50ID0gQWJzX3Bvcy5vcmlnaW5cbiAgICAgIDsgbGFzdF9hdG9tID0gTm9uZVxuICAgICAgOyBsYXN0X2NvbW1lbnRfcm93ID0gMCAoKiBiZWZvcmUgdGhlIGZpbGUgc3RhcnRzICopXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfY2hhciBwdXRjIHN0IGMgPVxuICAgIGxldCB7IEFic19wb3MuY29sOyByb3cgfSA9IHN0LmN1cnJlbnQgaW5cbiAgICBwdXRjIGM7XG4gICAgaWYgYyA9ICdcXG4nXG4gICAgdGhlbiBzdC5jdXJyZW50IDwtIHsgQWJzX3Bvcy5yb3cgPSAxICsgcm93OyBjb2wgPSAxIH1cbiAgICBlbHNlIHN0LmN1cnJlbnQgPC0geyBBYnNfcG9zLnJvdzsgY29sID0gMSArIGNvbCB9XG4gIDs7XG5cbiAgbGV0IGVtaXRfc3RyaW5nIHB1dGMgc3Qgc3RyID1cbiAgICBsZXQgbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gICAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgICBlbWl0X2NoYXIgcHV0YyBzdCBzdHIuW2ldXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBlbWl0X2NoYXJzIHB1dGMgc3QgYyB+biA9IGVtaXRfc3RyaW5nIHB1dGMgc3QgKFN0cmluZy5tYWtlIG4gYylcblxuICBsZXQgYWR2YW5jZSBwdXRjIH5hbmNob3Igc3QgfmJ5OmRlbHRhIH51bmVzY2FwZWRfYXRvbSB+bGluZV9jb21tZW50ID1cbiAgICBsZXQgbmV3X3BvcyA9IEFic19wb3MuYWRkIChBYnNfcG9zLmFkZCBhbmNob3IgZGVsdGEpIHN0LnJvd19zaGlmdCBpblxuICAgIGxldCBuZWVkX3RvX2xlYXZlX3Jvb21fYmV0d2Vlbl90d29fdW5lc2NhcGVkX2F0b21zX2xlc3RfdGhleV9iZWNvbWVfb25lID1cbiAgICAgIHVuZXNjYXBlZF9hdG9tXG4gICAgICAmJlxuICAgICAgbWF0Y2ggc3QubGFzdF9hdG9tIHdpdGhcbiAgICAgIHwgU29tZSB7IGltbWVkX2FmdGVyOyB1bmVzY2FwZWQgPSBwcmV2X3VuZXNjYXBlZCB9IC0+XG4gICAgICAgIG5ld19wb3MgPSBpbW1lZF9hZnRlciAmJiBwcmV2X3VuZXNjYXBlZFxuICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgaW5cbiAgICAoKiBhdm9pZCBqb2luaW5nIHN1YnNlcXVlbnQgaXRlbXMgaW50byBhIHByZWNlZGluZyBsaW5lIGNvbW1lbnQgKilcbiAgICBsZXQgbmVlZF90b19jbGVhcl9saW5lX2NvbW1lbnQgPSBuZXdfcG9zLnJvdyA9IHN0Lmxhc3RfY29tbWVudF9yb3cgaW5cbiAgICBsZXQgbmVlZF90b19yZXBvc2l0aW9uID1cbiAgICAgIChub3QgKEFic19wb3MuZ2VxIG5ld19wb3Mgc3QuY3VycmVudCkpXG4gICAgICB8fCBuZWVkX3RvX2NsZWFyX2xpbmVfY29tbWVudFxuICAgICAgfHwgbmVlZF90b19sZWF2ZV9yb29tX2JldHdlZW5fdHdvX3VuZXNjYXBlZF9hdG9tc19sZXN0X3RoZXlfYmVjb21lX29uZVxuICAgIGluXG4gICAgbGV0IHJvd19kZWx0YSwgbmV3X3BvcyA9XG4gICAgICBpZiBuZWVkX3RvX3JlcG9zaXRpb25cbiAgICAgIHRoZW4gKFxuICAgICAgICAoKiByZXBvc2l0aW9uaW5nIGhldXJpc3RpYzoganVzdCBtb3ZlIHRvIHRoZSBuZXh0IGZyZXNoIHJvdyAqKVxuICAgICAgICBsZXQgbmV3X3JvdyA9IDEgKyBzdC5jdXJyZW50LkFic19wb3Mucm93IGluXG4gICAgICAgIGxldCByb3dfZGVsdGEgPSBuZXdfcm93IC0gbmV3X3Bvcy5BYnNfcG9zLnJvdyBpblxuICAgICAgICByb3dfZGVsdGEsIHsgQWJzX3Bvcy5yb3cgPSBuZXdfcm93OyBjb2wgPSBuZXdfcG9zLkFic19wb3MuY29sIH0pXG4gICAgICBlbHNlIDAsIG5ld19wb3NcbiAgICBpblxuICAgICgqIGFkdmFuY2UgdG8gbmV3X3BvcyBieSBlbWl0dGluZyB3aGl0ZXNwYWNlICopXG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLnJvdyA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3dcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLnJvdyAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5yb3cgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnXFxuJyB+bik7XG4gICAgaWYgbmV3X3Bvcy5BYnNfcG9zLmNvbCA+IHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2xcbiAgICB0aGVuIChcbiAgICAgIGxldCBuID0gbmV3X3Bvcy5BYnNfcG9zLmNvbCAtIHN0LmN1cnJlbnQuQWJzX3Bvcy5jb2wgaW5cbiAgICAgIGVtaXRfY2hhcnMgcHV0YyBzdCAnICcgfm4pO1xuICAgIGFzc2VydCAobmV3X3BvcyA9IHN0LmN1cnJlbnQpO1xuICAgIGlmIGxpbmVfY29tbWVudCB0aGVuIHN0Lmxhc3RfY29tbWVudF9yb3cgPC0gc3QuY3VycmVudC5yb3c7XG4gICAgc3Qucm93X3NoaWZ0XG4gICAgPC0geyBzdC5yb3dfc2hpZnQgd2l0aCBSZWxfcG9zLnJvdyA9IHN0LnJvd19zaGlmdC5SZWxfcG9zLnJvdyArIHJvd19kZWx0YSB9XG4gIDs7XG5cbiAgbGV0IHJlYyByZW5kZXJfdCBwdXRjIH5hbmNob3IgKHN0IDogc3RhdGUpIHQgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQXRvbSAoZGVsdGEsIHRleHQsIGZtdF90ZXh0KSAtPlxuICAgICAgbGV0IGZtdF90ZXh0ID1cbiAgICAgICAgbWF0Y2ggZm10X3RleHQgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFwiXCIgLT4gUHJlX3NleHAubWFjaF9tYXliZV9lc2Nfc3RyIHRleHRcbiAgICAgICAgfCBTb21lIHRleHQgLT4gdGV4dFxuICAgICAgaW5cbiAgICAgIGxldCB1bmVzY2FwZWQgPSBmbXRfdGV4dC5bMF0gPD4gJ1wiJyBpblxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTp1bmVzY2FwZWQgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfc3RyaW5nIHB1dGMgc3QgZm10X3RleHQ7XG4gICAgICBzdC5sYXN0X2F0b20gPC0gU29tZSB7IGltbWVkX2FmdGVyID0gc3QuY3VycmVudDsgdW5lc2NhcGVkIH1cbiAgICB8IExpc3QgKHN0YXJ0X2RlbHRhLCB0b2NzLCBlbmRfZGVsdGEpIC0+XG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OnN0YXJ0X2RlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ6ZmFsc2U7XG4gICAgICBsZXQgY2hpbGRfYW5jaG9yID0gQWJzX3Bvcy5zdWIgc3QuY3VycmVudCBzdC5yb3dfc2hpZnQgaW5cbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcoJztcbiAgICAgIExpc3QuaXRlciB0b2NzIH5mOihmdW4gdG9jIC0+IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOmNoaWxkX2FuY2hvciBzdCB0b2MpO1xuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTplbmRfZGVsdGEgfmFuY2hvciB+dW5lc2NhcGVkX2F0b206ZmFsc2UgfmxpbmVfY29tbWVudDpmYWxzZTtcbiAgICAgIGVtaXRfY2hhciBwdXRjIHN0ICcpJztcbiAgICAgICgpXG5cbiAgYW5kIHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yIHN0ID0gZnVuY3Rpb25cbiAgICB8IFNleHAgdCAtPiByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICAgIHwgQ29tbWVudCBjIC0+IHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCBjXG5cbiAgYW5kIHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCA9IGZ1bmN0aW9uXG4gICAgfCBQbGFpbl9jb21tZW50IChkZWx0YSwgdGV4dCkgLT5cbiAgICAgIGxldCBsaW5lX2NvbW1lbnQgPSBTdHJpbmcubGVuZ3RoIHRleHQgPiAwICYmIHRleHQuWzBdID0gJzsnIGluXG4gICAgICBhZHZhbmNlIHB1dGMgc3QgfmJ5OmRlbHRhIH5hbmNob3IgfnVuZXNjYXBlZF9hdG9tOmZhbHNlIH5saW5lX2NvbW1lbnQ7XG4gICAgICBlbWl0X3N0cmluZyBwdXRjIHN0IHRleHRcbiAgICB8IFNleHBfY29tbWVudCAoZGVsdGEsIGNzLCB0KSAtPlxuICAgICAgYWR2YW5jZSBwdXRjIHN0IH5ieTpkZWx0YSB+YW5jaG9yIH51bmVzY2FwZWRfYXRvbTpmYWxzZSB+bGluZV9jb21tZW50OmZhbHNlO1xuICAgICAgZW1pdF9zdHJpbmcgcHV0YyBzdCBcIiM7XCI7XG4gICAgICBMaXN0Lml0ZXIgY3MgfmY6KHJlbmRlcl9jIHB1dGMgfmFuY2hvciBzdCk7XG4gICAgICByZW5kZXJfdCBwdXRjIH5hbmNob3Igc3QgdFxuICA7O1xuXG4gIGxldCByZW5kZXIgYXNleHAgcHV0YyBzdCA9IHJlbmRlcl90b2MgcHV0YyB+YW5jaG9yOkFic19wb3Mub3JpZ2luIHN0IGFzZXhwXG4gIGxldCBzZXhwID0gcmVuZGVyXG5lbmRcblxubW9kdWxlIEZvcmdldCA9IHN0cnVjdFxuICAoKiBJbiBjcHMgdG8gcHJldmVudCBub24tdGFpbCByZWN1cnNpb24uXG4gICAgIFRoZSBwb2x5bW9ycGhpc20gaW4gdGhlIHNpZ25hdHVyZSBlbnN1cmVzIHRoYXQgZWFjaCBmdW5jdGlvbiByZXR1cm5zXG4gICAgIG9ubHkgdGhyb3VnaCB0aGUgY29udGludWF0aW9uLiAqKVxuICBtb2R1bGUgQ3BzIDogc2lnXG4gICAgdmFsIGZvcmdldF90IDogdCAtPiAoVHlwZS50IC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jIDogdF9vcl9jb21tZW50IC0+IChUeXBlLnQgb3B0aW9uIC0+ICdyKSAtPiAnclxuICAgIHZhbCBmb3JnZXRfdG9jcyA6IHRfb3JfY29tbWVudCBsaXN0IC0+IChUeXBlLnQgbGlzdCAtPiAncikgLT4gJ3JcbiAgZW5kID0gc3RydWN0XG4gICAgbGV0IHJlYyBmb3JnZXRfdCB0IGsgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IEF0b20gKF8sIHgsIF8pIC0+IGsgKFR5cGUuQXRvbSB4KVxuICAgICAgfCBMaXN0IChfLCB0b2NzLCBfKSAtPiBmb3JnZXRfdG9jcyB0b2NzIChmdW4geHMgLT4gayAoVHlwZS5MaXN0IHhzKSlcblxuICAgIGFuZCBmb3JnZXRfdG9jcyB0b2NzIGsgPVxuICAgICAgbWF0Y2ggdG9jcyB3aXRoXG4gICAgICB8IFtdIC0+IGsgW11cbiAgICAgIHwgdG9jIDo6IHRvY3MgLT5cbiAgICAgICAgZm9yZ2V0X3RvYyB0b2MgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGZvcmdldF90b2NzIHRvY3Mga1xuICAgICAgICAgIHwgU29tZSB4IC0+IGZvcmdldF90b2NzIHRvY3MgKGZ1biB4cyAtPiBrICh4IDo6IHhzKSkpXG5cbiAgICBhbmQgZm9yZ2V0X3RvYyB0b2MgayA9XG4gICAgICBtYXRjaCB0b2Mgd2l0aFxuICAgICAgfCBDb21tZW50IF8gLT4gayBOb25lXG4gICAgICB8IFNleHAgdCAtPiBmb3JnZXRfdCB0IChmdW4geCAtPiBrIChTb21lIHgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCB0IHggPSBDcHMuZm9yZ2V0X3QgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudCB4ID0gQ3BzLmZvcmdldF90b2MgeCAoZnVuIHkgLT4geSlcbiAgbGV0IHRfb3JfY29tbWVudHMgeCA9IENwcy5mb3JnZXRfdG9jcyB4IChmdW4geSAtPiB5KVxuZW5kXG4iLCJvcGVuIFByaW50Zlxub3BlbiBCaWdhcnJheVxuaW5jbHVkZSBTZXhwbGliMC5TZXhwX2NvbnZcbm9wZW4gU2V4cFxuXG50eXBlIGJpZ3N0cmluZyA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0MzJfdmVjID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIGZsb2F0NjRfdmVjID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5MS50XG50eXBlIHZlYyA9IGZsb2F0NjRfdmVjXG50eXBlIGZsb2F0MzJfbWF0ID0gKGZsb2F0LCBmbG9hdDMyX2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIGZsb2F0NjRfbWF0ID0gKGZsb2F0LCBmbG9hdDY0X2VsdCwgZm9ydHJhbl9sYXlvdXQpIEFycmF5Mi50XG50eXBlIG1hdCA9IGZsb2F0NjRfbWF0XG5cbmxldCBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWMgPVxuICBsZXQgbHN0X3JlZiA9IHJlZiBbXSBpblxuICBmb3IgaSA9IEFycmF5MS5kaW0gdmVjIGRvd250byAxIGRvXG4gICAgbHN0X3JlZiA6PSBzZXhwX29mX2Zsb2F0IHZlYy57aX0gOjogIWxzdF9yZWZcbiAgZG9uZTtcbiAgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHNleHBfb2ZfYmlnc3RyaW5nIChic3RyIDogYmlnc3RyaW5nKSA9XG4gIGxldCBuID0gQXJyYXkxLmRpbSBic3RyIGluXG4gIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbiBpblxuICBmb3IgaSA9IDAgdG8gbiAtIDEgZG9cbiAgICBCeXRlcy5zZXQgc3RyIGkgYnN0ci57aX1cbiAgZG9uZTtcbiAgQXRvbSAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzdHIpXG47O1xuXG5sZXQgc2V4cF9vZl9mbG9hdDMyX3ZlYyAodmVjIDogZmxvYXQzMl92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl9mbG9hdDY0X3ZlYyAodmVjIDogZmxvYXQ2NF92ZWMpID0gc2V4cF9vZl9mbG9hdF92ZWMgdmVjXG5sZXQgc2V4cF9vZl92ZWMgKHZlYyA6IHZlYykgPSBzZXhwX29mX2Zsb2F0X3ZlYyB2ZWNcblxubGV0IHNleHBfb2ZfZmxvYXRfbWF0IG1hdCA9XG4gIGxldCBtID0gQXJyYXkyLmRpbTEgbWF0IGluXG4gIGxldCBuID0gQXJyYXkyLmRpbTIgbWF0IGluXG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gICgqIEl0J3Mgc3VycHJpc2luZyB0aGF0IHdlIHNlcmlhbGl6ZSBbRm9ydHJhbl9sYXlvdXRdIG1hdHJpY2VzIGluIHJvdy1tYWpvciBvcmRlci4gSSBjYW5cbiAgICAgb25seSBzcGVjdWxhdGUgdGhhdCBpdCB3YXMgY2hvc2VuIGZvciByZWFkYWJpbGl0eS4gVGhlIGNhY2hlIHBlcmZvcm1hbmNlIGlzXG4gICAgIGlycmVsZXZhbnQgYmVjYXVzZSBwZW9wbGUgd2hvIGNhcmUgd29uJ3Qgc2VyaWFsaXplIHRvIHNleHAuICopXG4gIGZvciByb3cgPSBuIGRvd250byAxIGRvXG4gICAgZm9yIGNvbCA9IG0gZG93bnRvIDEgZG9cbiAgICAgIGxzdF9yZWYgOj0gc2V4cF9vZl9mbG9hdCBtYXQue2NvbCwgcm93fSA6OiAhbHN0X3JlZlxuICAgIGRvbmVcbiAgZG9uZTtcbiAgTGlzdCAoc2V4cF9vZl9pbnQgbSA6OiBzZXhwX29mX2ludCBuIDo6ICFsc3RfcmVmKVxuOztcblxubGV0IHNleHBfb2ZfZmxvYXQzMl9tYXQgKG1hdCA6IGZsb2F0MzJfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfZmxvYXQ2NF9tYXQgKG1hdCA6IGZsb2F0NjRfbWF0KSA9IHNleHBfb2ZfZmxvYXRfbWF0IG1hdFxubGV0IHNleHBfb2ZfbWF0IChtYXQgOiBtYXQpID0gc2V4cF9vZl9mbG9hdF9tYXQgbWF0XG5sZXQgYmlnc3RyaW5nX3NleHBfZ3JhbW1hciA6IGJpZ3N0cmluZyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IFN0cmluZyB9XG5cbmxldCBiaWdzdHJpbmdfb2Zfc2V4cCBzZXhwID1cbiAgbWF0Y2ggc2V4cCB3aXRoXG4gIHwgQXRvbSBzdHIgLT5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBsZXQgYnN0ciA9IEFycmF5MS5jcmVhdGUgY2hhciBjX2xheW91dCBsZW4gaW5cbiAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgYnN0ci57aX0gPC0gc3RyLltpXVxuICAgIGRvbmU7XG4gICAgYnN0clxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiYmlnc3RyaW5nX29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X3ZlY19vZl9zZXhwIGVtcHR5X2Zsb2F0X3ZlYyBjcmVhdGVfZmxvYXRfdmVjIHNleHAgPVxuICBtYXRjaCBzZXhwIHdpdGhcbiAgfCBMaXN0IFtdIC0+IGVtcHR5X2Zsb2F0X3ZlY1xuICB8IExpc3QgbHN0IC0+XG4gICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGxzdCBpblxuICAgIGxldCByZXMgPSBjcmVhdGVfZmxvYXRfdmVjIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMue2l9IDwtIGZsb2F0X29mX3NleHAgaDtcbiAgICAgICAgbG9vcCAoaSArIDEpIHRcbiAgICBpblxuICAgIGxvb3AgMSBsc3RcbiAgfCBBdG9tIF8gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X3ZlY19vZl9zZXhwOiBsaXN0IG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjcmVhdGVfZmxvYXQzMl92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0MzIgZm9ydHJhbl9sYXlvdXRcbmxldCBjcmVhdGVfZmxvYXQ2NF92ZWMgPSBBcnJheTEuY3JlYXRlIGZsb2F0NjQgZm9ydHJhbl9sYXlvdXRcbmxldCBlbXB0eV9mbG9hdDMyX3ZlYyA9IGNyZWF0ZV9mbG9hdDMyX3ZlYyAwXG5sZXQgZW1wdHlfZmxvYXQ2NF92ZWMgPSBjcmVhdGVfZmxvYXQ2NF92ZWMgMFxubGV0IGZsb2F0MzJfdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDMyX3ZlYyBjcmVhdGVfZmxvYXQzMl92ZWNcbmxldCBmbG9hdDY0X3ZlY19vZl9zZXhwID0gZmxvYXRfdmVjX29mX3NleHAgZW1wdHlfZmxvYXQ2NF92ZWMgY3JlYXRlX2Zsb2F0NjRfdmVjXG5sZXQgdmVjX29mX3NleHAgPSBmbG9hdF92ZWNfb2Zfc2V4cCBlbXB0eV9mbG9hdDY0X3ZlYyBjcmVhdGVfZmxvYXQ2NF92ZWNcbmxldCB2ZWNfc2V4cF9ncmFtbWFyIDogXyBTZXhwbGliMC5TZXhwX2dyYW1tYXIudCA9IHsgdW50eXBlZCA9IExpc3QgKE1hbnkgRmxvYXQpIH1cbmxldCBmbG9hdDMyX3ZlY19zZXhwX2dyYW1tYXIgPSB2ZWNfc2V4cF9ncmFtbWFyXG5sZXQgZmxvYXQ2NF92ZWNfc2V4cF9ncmFtbWFyID0gdmVjX3NleHBfZ3JhbW1hclxuXG5sZXQgY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzID1cbiAgaWYgZGF0YSA9IFtdIHRoZW4gcmVzIGVsc2Ugb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiB0b28gbXVjaCBkYXRhXCIgc2V4cFxuOztcblxubGV0IGZsb2F0X21hdF9vZl9zZXhwIGNyZWF0ZV9mbG9hdF9tYXQgc2V4cCA9XG4gIG1hdGNoIHNleHAgd2l0aFxuICB8IExpc3QgKHNtIDo6IHNuIDo6IGRhdGEpIC0+XG4gICAgbGV0IG0gPSBpbnRfb2Zfc2V4cCBzbSBpblxuICAgIGxldCBuID0gaW50X29mX3NleHAgc24gaW5cbiAgICBsZXQgcmVzID0gY3JlYXRlX2Zsb2F0X21hdCBtIG4gaW5cbiAgICBpZiBtID0gMCB8fCBuID0gMFxuICAgIHRoZW4gY2hlY2tfdG9vX211Y2hfZGF0YSBzZXhwIGRhdGEgcmVzXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3BfY29scyBjb2wgZGF0YSA9XG4gICAgICAgIGxldCB2ZWMgPSBBcnJheTIuc2xpY2VfcmlnaHQgcmVzIGNvbCBpblxuICAgICAgICBsZXQgcmVjIGxvb3Bfcm93cyByb3cgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT4gb2Zfc2V4cF9lcnJvciBcImZsb2F0X21hdF9vZl9zZXhwOiBub3QgZW5vdWdoIGRhdGFcIiBzZXhwXG4gICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgIHZlYy57cm93fSA8LSBmbG9hdF9vZl9zZXhwIGg7XG4gICAgICAgICAgICBpZiByb3cgPSBtXG4gICAgICAgICAgICB0aGVuIGlmIGNvbCA9IG4gdGhlbiBjaGVja190b29fbXVjaF9kYXRhIHNleHAgdCByZXMgZWxzZSBsb29wX2NvbHMgKGNvbCArIDEpIHRcbiAgICAgICAgICAgIGVsc2UgbG9vcF9yb3dzIChyb3cgKyAxKSB0XG4gICAgICAgIGluXG4gICAgICAgIGxvb3Bfcm93cyAxIGRhdGFcbiAgICAgIGluXG4gICAgICBsb29wX2NvbHMgMSBkYXRhKVxuICB8IExpc3QgXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgdG9vIHNob3J0XCIgc2V4cFxuICB8IEF0b20gXyAtPiBvZl9zZXhwX2Vycm9yIFwiZmxvYXRfbWF0X29mX3NleHA6IGxpc3QgbmVlZGVkXCIgc2V4cFxuOztcblxubGV0IGNyZWF0ZV9mbG9hdDMyX21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQzMiBmb3J0cmFuX2xheW91dFxubGV0IGNyZWF0ZV9mbG9hdDY0X21hdCA9IEFycmF5Mi5jcmVhdGUgZmxvYXQ2NCBmb3J0cmFuX2xheW91dFxubGV0IGZsb2F0MzJfbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQzMl9tYXRcbmxldCBmbG9hdDY0X21hdF9vZl9zZXhwID0gZmxvYXRfbWF0X29mX3NleHAgY3JlYXRlX2Zsb2F0NjRfbWF0XG5sZXQgbWF0X29mX3NleHAgPSBmbG9hdF9tYXRfb2Zfc2V4cCBjcmVhdGVfZmxvYXQ2NF9tYXRcblxubGV0IG1hdF9zZXhwX2dyYW1tYXIgOiBfIFNleHBsaWIwLlNleHBfZ3JhbW1hci50ID1cbiAgeyB1bnR5cGVkID0gTGlzdCAoQ29ucyAoSW50ZWdlciwgQ29ucyAoSW50ZWdlciwgTWFueSBGbG9hdCkpKSB9XG47O1xuXG5sZXQgZmxvYXQzMl9tYXRfc2V4cF9ncmFtbWFyID0gbWF0X3NleHBfZ3JhbW1hclxubGV0IGZsb2F0NjRfbWF0X3NleHBfZ3JhbW1hciA9IG1hdF9zZXhwX2dyYW1tYXJcbmxldCBzdHJpbmdfb2ZfX29mX19zZXhwX29mIHRvX3NleHAgeCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwIHgpXG5cbmxldCBvZl9zdHJpbmdfX29mX19vZl9zZXhwIG9mX3NleHAgcyA9XG4gIHRyeVxuICAgIGxldCBzZXhwID0gU2V4cC5vZl9zdHJpbmcgcyBpblxuICAgIG9mX3NleHAgc2V4cFxuICB3aXRoXG4gIHwgZSAtPlxuICAgIGZhaWx3aXRoXG4gICAgICAoc3ByaW50ZiBcIm9mX3N0cmluZyBmYWlsZWQgb24gJXMgd2l0aCAlc1wiIHMgKFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl9leG4gZSkpKVxuOztcbiIsIm1vZHVsZSBIYXNodGJsID0gc3RydWN0XG4gIGluY2x1ZGUgSGFzaHRibFxuXG4gIGxldCBzZXhwX29mX3QgPSBDb252LnNleHBfb2ZfaGFzaHRibFxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5oYXNodGJsX29mX3NleHBcbmVuZFxuXG5tb2R1bGUgTGF6eSA9IHN0cnVjdFxuICBpbmNsdWRlIExhenlcblxuICBsZXQgdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxuICBsZXQgc2V4cF9vZl90ID0gQ29udi5zZXhwX29mX2xhenlfdFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmVuZFxuXG5sZXQgc2V4cF9vZl91bml0ID0gQ29udi5zZXhwX29mX3VuaXRcbmxldCB1bml0X29mX3NleHAgPSBDb252LnVuaXRfb2Zfc2V4cFxubGV0IHVuaXRfc2V4cF9ncmFtbWFyID0gQ29udi51bml0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYm9vbCA9IENvbnYuc2V4cF9vZl9ib29sXG5sZXQgYm9vbF9vZl9zZXhwID0gQ29udi5ib29sX29mX3NleHBcbmxldCBib29sX3NleHBfZ3JhbW1hciA9IENvbnYuYm9vbF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX3N0cmluZyA9IENvbnYuc2V4cF9vZl9zdHJpbmdcbmxldCBzdHJpbmdfb2Zfc2V4cCA9IENvbnYuc3RyaW5nX29mX3NleHBcbmxldCBzdHJpbmdfc2V4cF9ncmFtbWFyID0gQ29udi5zdHJpbmdfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9jaGFyID0gQ29udi5zZXhwX29mX2NoYXJcbmxldCBjaGFyX29mX3NleHAgPSBDb252LmNoYXJfb2Zfc2V4cFxubGV0IGNoYXJfc2V4cF9ncmFtbWFyID0gQ29udi5jaGFyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50ID0gQ29udi5zZXhwX29mX2ludFxubGV0IGludF9vZl9zZXhwID0gQ29udi5pbnRfb2Zfc2V4cFxubGV0IGludF9zZXhwX2dyYW1tYXIgPSBDb252LmludF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2Zsb2F0ID0gQ29udi5zZXhwX29mX2Zsb2F0XG5sZXQgZmxvYXRfb2Zfc2V4cCA9IENvbnYuZmxvYXRfb2Zfc2V4cFxubGV0IGZsb2F0X3NleHBfZ3JhbW1hciA9IENvbnYuZmxvYXRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9pbnQzMiA9IENvbnYuc2V4cF9vZl9pbnQzMlxubGV0IGludDMyX29mX3NleHAgPSBDb252LmludDMyX29mX3NleHBcbmxldCBpbnQzMl9zZXhwX2dyYW1tYXIgPSBDb252LmludDMyX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfaW50NjQgPSBDb252LnNleHBfb2ZfaW50NjRcbmxldCBpbnQ2NF9vZl9zZXhwID0gQ29udi5pbnQ2NF9vZl9zZXhwXG5sZXQgaW50NjRfc2V4cF9ncmFtbWFyID0gQ29udi5pbnQ2NF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX25hdGl2ZWludCA9IENvbnYuc2V4cF9vZl9uYXRpdmVpbnRcbmxldCBuYXRpdmVpbnRfb2Zfc2V4cCA9IENvbnYubmF0aXZlaW50X29mX3NleHBcbmxldCBuYXRpdmVpbnRfc2V4cF9ncmFtbWFyID0gQ29udi5uYXRpdmVpbnRfc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9yZWYgPSBDb252LnNleHBfb2ZfcmVmXG5sZXQgcmVmX29mX3NleHAgPSBDb252LnJlZl9vZl9zZXhwXG5sZXQgcmVmX3NleHBfZ3JhbW1hciA9IENvbnYucmVmX3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfbGF6eV90ID0gQ29udi5zZXhwX29mX2xhenlfdFxubGV0IGxhenlfdF9vZl9zZXhwID0gQ29udi5sYXp5X3Rfb2Zfc2V4cFxubGV0IGxhenlfdF9zZXhwX2dyYW1tYXIgPSBDb252LmxhenlfdF9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX29wdGlvbiA9IENvbnYuc2V4cF9vZl9vcHRpb25cbmxldCBvcHRpb25fb2Zfc2V4cCA9IENvbnYub3B0aW9uX29mX3NleHBcbmxldCBvcHRpb25fc2V4cF9ncmFtbWFyID0gQ29udi5vcHRpb25fc2V4cF9ncmFtbWFyXG5sZXQgc2V4cF9vZl9saXN0ID0gQ29udi5zZXhwX29mX2xpc3RcbmxldCBsaXN0X29mX3NleHAgPSBDb252Lmxpc3Rfb2Zfc2V4cFxubGV0IGxpc3Rfc2V4cF9ncmFtbWFyID0gQ29udi5saXN0X3NleHBfZ3JhbW1hclxubGV0IHNleHBfb2ZfYXJyYXkgPSBDb252LnNleHBfb2ZfYXJyYXlcbmxldCBhcnJheV9vZl9zZXhwID0gQ29udi5hcnJheV9vZl9zZXhwXG5sZXQgYXJyYXlfc2V4cF9ncmFtbWFyID0gQ29udi5hcnJheV9zZXhwX2dyYW1tYXJcbmxldCBzZXhwX29mX2V4biA9IENvbnYuc2V4cF9vZl9leG5cbmxldCBleG5fc2V4cF9ncmFtbWFyID0gQ29udi5zZXhwX3Rfc2V4cF9ncmFtbWFyXG4iLCJpbmNsdWRlIFNleHBfZ3JhbW1hcl9pbnRmXG5pbmNsdWRlIFNleHBsaWIwLlNleHBfZ3JhbW1hclxuXG5sZXQgcmVtZW1iZXJfdG9fdXBkYXRlX3RoZXNlX3RvZ2V0aGVyIH50X29mX3NleHAgfnRfc2V4cF9ncmFtbWFyID1cbiAgdF9vZl9zZXhwLCB0X3NleHBfZ3JhbW1hclxuOztcbiIsIigqIFBhdGg6IE1vZHVsZSBmb3IgU3Vic3RpdHV0aW9ucyB3aXRoaW4gUy1leHByZXNzaW9ucyAqKVxuXG5vcGVuIEZvcm1hdFxub3BlbiBTZXhwXG5cbnR5cGUgZWwgPVxuICB8IFBvcyBvZiBpbnRcbiAgfCBNYXRjaCBvZiBzdHJpbmcgKiBpbnRcbiAgfCBSZWMgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IGVsIGxpc3RcblxubGV0IGlsbGVnYWxfYXRvbSBsb2Mgc2V4cCA9XG4gIGZhaWx3aXRoIChzcHJpbnRmIFwiUGF0aC4lczogaWxsZWdhbCBhdG9tOiAlc1wiIGxvYyAoU2V4cC50b19zdHJpbmcgc2V4cCkpXG47O1xuXG5sZXQgZXh0cmFjdF9wb3NfbHN0IGxvYyBzZXhwIGl4IGxzdCA9XG4gIGxldCByZWMgbG9vcCBhY2MgbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJQYXRoLiVzOiBpbGxlZ2FsIGluZGV4ICVkIGluOiAlc1wiIGxvYyBpeCBzZXhwX3N0cilcbiAgICB8IGggOjogdCAtPlxuICAgICAgaWYgbiA9IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgc3Vic3QgPSBmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBMaXN0LnJldl9hcHBlbmQgYWNjIHRcbiAgICAgICAgICB8IFNvbWUgeCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjICh4IDo6IHQpXG4gICAgICAgIGluXG4gICAgICAgIHN1YnN0LCBoKVxuICAgICAgZWxzZSBsb29wIChoIDo6IGFjYykgKG4gLSAxKSB0XG4gIGluXG4gIGxvb3AgW10gaXggbHN0XG47O1xuXG5sZXQgZXh0cmFjdF9wb3MgbiA9IGZ1bmN0aW9uXG4gIHwgTGlzdCBsc3QgYXMgc2V4cCAtPlxuICAgIGxldCBzdWJzdCwgZWwgPSBleHRyYWN0X3Bvc19sc3QgXCJleHRyYWN0X3Bvc1wiIHNleHAgbiBsc3QgaW5cbiAgICAoZnVuIHggLT4gTGlzdCAoc3Vic3QgeCkpLCBlbFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcG9zXCIgc2V4cFxuOztcblxubGV0IGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCA9IGZ1bmN0aW9uXG4gIHwgTGlzdCAoKEF0b20gc3RyIGFzIHNleHApIDo6IGFyZ3MpIHdoZW4gc3RyID0gdGFnIC0+XG4gICAgbGV0IHN1YnN0LCBlbCA9IGV4dHJhY3RfcG9zX2xzdCBcImV4dHJhY3RfbWF0Y2hcIiAoTGlzdCBhcmdzKSBhcmdfaXggYXJncyBpblxuICAgIChmdW4gbWF5YmVfeCAtPiBMaXN0IChzZXhwIDo6IHN1YnN0IG1heWJlX3gpKSwgZWxcbiAgfCBMaXN0IF8gYXMgc2V4cCAtPlxuICAgIGxldCBzZXhwX3N0ciA9IFNleHAudG9fc3RyaW5nIHNleHAgaW5cbiAgICBmYWlsd2l0aCAoXCJQYXRoLmV4dHJhY3RfbWF0Y2g6IHVuZXhwZWN0ZWQgbmVzdGVkIGxpc3QgaW46IFwiIF4gc2V4cF9zdHIpXG4gIHwgQXRvbSBfIGFzIHNleHAgLT4gaWxsZWdhbF9hdG9tIFwiZXh0cmFjdF9tYXRjaFwiIHNleHBcbjs7XG5cbmxldCBleHRyYWN0X3JlYyBrZXkgPSBmdW5jdGlvblxuICB8IExpc3QgbHN0IGFzIHNleHAgLT5cbiAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHNleHBfc3RyID0gU2V4cC50b19zdHJpbmcgc2V4cCBpblxuICAgICAgICBmYWlsd2l0aCAoc3ByaW50ZiBcIlBhdGguZXh0cmFjdF9yZWM6IGtleSBcXFwiJXNcXFwiIG5vdCBmb3VuZCBpbjogJXNcIiBrZXkgc2V4cF9zdHIpXG4gICAgICB8IExpc3QgWyAoQXRvbSBzdHIgYXMgc2V4cCk7IHYgXSA6OiByZXN0IHdoZW4gc3RyID0ga2V5IC0+XG4gICAgICAgIGxldCBzdWJzdCB4ID0gTGlzdCAoTGlzdC5yZXZfYXBwZW5kIGFjYyAoTGlzdCBbIHNleHA7IHggXSA6OiByZXN0KSkgaW5cbiAgICAgICAgc3Vic3QsIHZcbiAgICAgIHwgaCA6OiB0IC0+IGxvb3AgKGggOjogYWNjKSB0XG4gICAgaW5cbiAgICBsb29wIFtdIGxzdFxuICB8IEF0b20gXyBhcyBzZXhwIC0+IGlsbGVnYWxfYXRvbSBcImV4dHJhY3RfcmVjXCIgc2V4cFxuOztcblxubGV0IGlkIHggPSB4XG5cbmxldCByZWMgc3Vic3Rfb3B0aW9uIChzdXBfc3Vic3QsIGVsKSByZXN0ID1cbiAgbGV0IHN1Yl9zdWJzdCwgc3ViX2VsID0gc3Vic3RfcGF0aCBlbCByZXN0IGluXG4gIGxldCBzdWJzdCB4ID0gc3VwX3N1YnN0IChTb21lIChzdWJfc3Vic3QgeCkpIGluXG4gIHN1YnN0LCBzdWJfZWxcblxuYW5kIHN1YnN0X3BhdGggc2V4cCA9IGZ1bmN0aW9uXG4gIHwgUG9zIG4gOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfcG9zIG4gc2V4cCkgdFxuICB8IE1hdGNoICh0YWcsIGFyZ19peCkgOjogdCAtPiBzdWJzdF9vcHRpb24gKGV4dHJhY3RfbWF0Y2ggdGFnIGFyZ19peCBzZXhwKSB0XG4gIHwgUmVjIGtleSA6OiByZXN0IC0+XG4gICAgbGV0IHJlY19zdWJzdCwgZWwgPSBleHRyYWN0X3JlYyBrZXkgc2V4cCBpblxuICAgIGxldCBzdWJfc3Vic3QsIHN1Yl9lbCA9IHN1YnN0X3BhdGggZWwgcmVzdCBpblxuICAgIGxldCBzdWJzdCB4ID0gcmVjX3N1YnN0IChzdWJfc3Vic3QgeCkgaW5cbiAgICBzdWJzdCwgc3ViX2VsXG4gIHwgW10gLT4gaWQsIHNleHBcbjs7XG5cbmxldCBpbXBsb2RlIGxzdCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsc3QgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGl4ID0gZnVuY3Rpb25cbiAgICB8IGggOjogdCAtPlxuICAgICAgQnl0ZXMuc2V0IHN0ciBpeCBoO1xuICAgICAgbG9vcCAoaXggKyAxKSB0XG4gICAgfCBbXSAtPiBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHN0clxuICBpblxuICBsb29wIDAgbHN0XG47O1xuXG5sZXQgZmFpbF9wYXJzZSBtc2cgPSBmYWlsd2l0aCAoXCJQYXRoLnBhcnNlOiBcIiBeIG1zZylcblxubGV0IHBhcnNlIHN0ciA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBpZiBsZW4gPSAwXG4gIHRoZW4gZmFpbF9wYXJzZSBcInBhdGggZW1wdHlcIlxuICBlbHNlIChcbiAgICBsZXQgcmVjIGxvb3AgYWNjIGRvdF9peCA9XG4gICAgICBtYXRjaCBzdHIuW2RvdF9peF0gd2l0aFxuICAgICAgfCAnLicgLT5cbiAgICAgICAgbGV0IGRvdF9peDEgPSBkb3RfaXggKyAxIGluXG4gICAgICAgIGlmIGRvdF9peDEgPSBsZW5cbiAgICAgICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlYyBwYXJzZV9kb3QgYWNjIHN0cl9hY2MgaXggPVxuICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIFJlYyAoaW1wbG9kZSAoTGlzdC5yZXYgc3RyX2FjYykpIF1cbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSB3aXRoXG4gICAgICAgICAgICAgIHwgJ1snIC0+XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBwYXJzZV9pbmRleCBpbmRleF9hY2MgaXggPVxuICAgICAgICAgICAgICAgICAgaWYgaXggPSBsZW5cbiAgICAgICAgICAgICAgICAgIHRoZW4gZmFpbF9wYXJzZSBcIkVPRiByZWFkaW5nIGluZGV4XCJcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzdHIuW2l4XSwgaW5kZXhfYWNjIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCAoJzAnIC4uICc5JyBhcyBjKSwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2luZGV4IChTb21lIChpbnRfb2ZfY2hhciBjIC0gNDgpKSAoaXggKyAxKVxuICAgICAgICAgICAgICAgICAgICB8ICgnMCcgLi4gJzknIGFzIGMpLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfaW5kZXhfYWNjID0gU29tZSAoKDEwICogaW5kZXhfYWNjKSArIGludF9vZl9jaGFyIGMgLSA0OCkgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwYXJzZV9pbmRleCBuZXdfaW5kZXhfYWNjIChpeCArIDEpXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBOb25lIC0+IGZhaWxfcGFyc2UgXCJlbXB0eSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIHwgJ10nLCBTb21lIGluZGV4X2FjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXRoX2VsID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBQb3MgaW5kZXhfYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE1hdGNoIChpbXBsb2RlIChMaXN0LnJldiBzdHJfYWNjKSwgaW5kZXhfYWNjKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGl4MSA9IGl4ICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4MSA9IGxlblxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gTGlzdC5yZXZfYXBwZW5kIGFjYyBbIHBhdGhfZWwgXVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbG9vcCAocGF0aF9lbCA6OiBhY2MpIGl4MVxuICAgICAgICAgICAgICAgICAgICB8IGMsIF8gLT4gZmFpbF9wYXJzZSAoc3ByaW50ZiBcImlsbGVnYWwgY2hhcmFjdGVyIGluIGluZGV4OiAlY1wiIGMpKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGFyc2VfaW5kZXggTm9uZSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICdcXFxcJyAtPlxuICAgICAgICAgICAgICAgIGxldCBpeDEgPSBpeCArIDEgaW5cbiAgICAgICAgICAgICAgICBpZiBpeDEgPSBsZW5cbiAgICAgICAgICAgICAgICB0aGVuIGZhaWxfcGFyc2UgXCJFT0YgYWZ0ZXIgZXNjYXBlXCJcbiAgICAgICAgICAgICAgICBlbHNlIHBhcnNlX2RvdCBhY2MgKHN0ci5baXgxXSA6OiBzdHJfYWNjKSAoaXggKyAxKVxuICAgICAgICAgICAgICB8ICcuJyAtPlxuICAgICAgICAgICAgICAgIGlmIHN0cl9hY2MgPSBbXSB0aGVuIGZhaWxfcGFyc2UgXCJkb3VibGUgJy4nXCI7XG4gICAgICAgICAgICAgICAgbGV0IHBhdGhfZWwgPSBSZWMgKGltcGxvZGUgKExpc3QucmV2IHN0cl9hY2MpKSBpblxuICAgICAgICAgICAgICAgIHBhcnNlX2RvdCAocGF0aF9lbCA6OiBhY2MpIFtdIChpeCArIDEpXG4gICAgICAgICAgICAgIHwgYyAtPiBwYXJzZV9kb3QgYWNjIChjIDo6IHN0cl9hY2MpIChpeCArIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgcGFyc2VfZG90IGFjYyBbXSBkb3RfaXgxKVxuICAgICAgfCBjIC0+IGZhaWxfcGFyc2UgKHNwcmludGYgXCInLicgZXhwZWN0ZWQ7IGdvdCAnJWMnXCIgYylcbiAgICBpblxuICAgIGxvb3AgW10gMClcbjs7XG5cbmxldCBnZXRfc3Vic3QgcGF0aCBzdHIgc2V4cCA9XG4gIGxldCBwYXRoID1cbiAgICBtYXRjaCBwYXRoLCBzdHIgd2l0aFxuICAgIHwgU29tZSBwYXRoLCBfIC0+IHBhdGhcbiAgICB8IE5vbmUsIFNvbWUgc3RyIC0+IHBhcnNlIHN0clxuICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICBpblxuICBzdWJzdF9wYXRoIHNleHAgcGF0aFxuOztcblxubGV0IGdldCA/cGF0aCA/c3RyIHNleHAgPSBzbmQgKGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwKVxuXG5sZXQgcmVwbGFjZSA/cGF0aCA/c3RyIHNleHAgfnN1YnN0ID1cbiAgbGV0IHN1YnN0X2Z1biwgXyA9IGdldF9zdWJzdCBwYXRoIHN0ciBzZXhwIGluXG4gIHN1YnN0X2Z1biBzdWJzdFxuOztcblxubGV0IHJlcGxhY2Vfbm9fcGF0aCB+c3RyIHNleHAgfnN1YnN0ID0gcmVwbGFjZSB+c3RyIHNleHAgfnN1YnN0XG4iLCJsZXQgcmVnaXN0ZXIgZXhjIGV4Y19uYW1lID1cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIF9leGMgLT5cbiAgICBTZXhwLkF0b20gZXhjX25hbWUpXG47O1xuXG5sZXQgbWFnaWNfZmllbGQgcmVwciBuID0gT2JqLm1hZ2ljIChPYmouZmllbGQgcmVwciBuKVxuXG5sZXQgcmVnaXN0ZXIxIG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDEgXSlcbjs7XG5cbmxldCByZWdpc3RlcjIgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiA9XG4gIGxldCBleGMgPSBtYWtlX2V4YyAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDIgXSlcbjs7XG5cbmxldCByZWdpc3RlcjMgbWFrZV9leGMgZXhjX25hbWUgc2V4cF9vZl9hcmcxIHNleHBfb2ZfYXJnMiBzZXhwX29mX2FyZzMgPVxuICBsZXQgZXhjID0gbWFrZV9leGMgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSkgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzIF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI0IG1ha2VfZXhjIGV4Y19uYW1lIHNleHBfb2ZfYXJnMSBzZXhwX29mX2FyZzIgc2V4cF9vZl9hcmczIHNleHBfb2ZfYXJnNCA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjIChPYmoubWFnaWMgTm9uZSkgKE9iai5tYWdpYyBOb25lKSAoT2JqLm1hZ2ljIE5vbmUpIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNCBdKVxuOztcblxubGV0IHJlZ2lzdGVyNVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIFNleHAuTGlzdCBbIFNleHAuQXRvbSBleGNfbmFtZTsgc2V4cDE7IHNleHAyOyBzZXhwMzsgc2V4cDQ7IHNleHA1IF0pXG47O1xuXG5sZXQgcmVnaXN0ZXI2XG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBTZXhwLkxpc3QgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDYgXSlcbjs7XG5cbmxldCByZWdpc3RlcjdcbiAgICAgIG1ha2VfZXhjXG4gICAgICBleGNfbmFtZVxuICAgICAgc2V4cF9vZl9hcmcxXG4gICAgICBzZXhwX29mX2FyZzJcbiAgICAgIHNleHBfb2ZfYXJnM1xuICAgICAgc2V4cF9vZl9hcmc0XG4gICAgICBzZXhwX29mX2FyZzVcbiAgICAgIHNleHBfb2ZfYXJnNlxuICAgICAgc2V4cF9vZl9hcmc3XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGV4Y19uYW1lOyBzZXhwMTsgc2V4cDI7IHNleHAzOyBzZXhwNDsgc2V4cDU7IHNleHA2OyBzZXhwNyBdKVxuOztcblxubGV0IHJlZ2lzdGVyOFxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICA9XG4gIGxldCBleGMgPVxuICAgIG1ha2VfZXhjXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gICAgICAoT2JqLm1hZ2ljIE5vbmUpXG4gIGluXG4gIENvbnYuRXhuX2NvbnZlcnRlci5hZGQgKE9iai5FeHRlbnNpb25fY29uc3RydWN0b3Iub2ZfdmFsIGV4YykgKGZ1biBleGMgLT5cbiAgICBsZXQgcmVwciA9IE9iai5yZXByIGV4YyBpblxuICAgIGxldCBzZXhwMSA9IHNleHBfb2ZfYXJnMSAobWFnaWNfZmllbGQgcmVwciAxKSBpblxuICAgIGxldCBzZXhwMiA9IHNleHBfb2ZfYXJnMiAobWFnaWNfZmllbGQgcmVwciAyKSBpblxuICAgIGxldCBzZXhwMyA9IHNleHBfb2ZfYXJnMyAobWFnaWNfZmllbGQgcmVwciAzKSBpblxuICAgIGxldCBzZXhwNCA9IHNleHBfb2ZfYXJnNCAobWFnaWNfZmllbGQgcmVwciA0KSBpblxuICAgIGxldCBzZXhwNSA9IHNleHBfb2ZfYXJnNSAobWFnaWNfZmllbGQgcmVwciA1KSBpblxuICAgIGxldCBzZXhwNiA9IHNleHBfb2ZfYXJnNiAobWFnaWNfZmllbGQgcmVwciA2KSBpblxuICAgIGxldCBzZXhwNyA9IHNleHBfb2ZfYXJnNyAobWFnaWNfZmllbGQgcmVwciA3KSBpblxuICAgIGxldCBzZXhwOCA9IHNleHBfb2ZfYXJnOCAobWFnaWNfZmllbGQgcmVwciA4KSBpblxuICAgIFNleHAuTGlzdFxuICAgICAgWyBTZXhwLkF0b20gZXhjX25hbWU7IHNleHAxOyBzZXhwMjsgc2V4cDM7IHNleHA0OyBzZXhwNTsgc2V4cDY7IHNleHA3OyBzZXhwOCBdKVxuOztcblxubGV0IHJlZ2lzdGVyOVxuICAgICAgbWFrZV9leGNcbiAgICAgIGV4Y19uYW1lXG4gICAgICBzZXhwX29mX2FyZzFcbiAgICAgIHNleHBfb2ZfYXJnMlxuICAgICAgc2V4cF9vZl9hcmczXG4gICAgICBzZXhwX29mX2FyZzRcbiAgICAgIHNleHBfb2ZfYXJnNVxuICAgICAgc2V4cF9vZl9hcmc2XG4gICAgICBzZXhwX29mX2FyZzdcbiAgICAgIHNleHBfb2ZfYXJnOFxuICAgICAgc2V4cF9vZl9hcmc5XG4gID1cbiAgbGV0IGV4YyA9XG4gICAgbWFrZV9leGNcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgICAgIChPYmoubWFnaWMgTm9uZSlcbiAgaW5cbiAgQ29udi5FeG5fY29udmVydGVyLmFkZCAoT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5vZl92YWwgZXhjKSAoZnVuIGV4YyAtPlxuICAgIGxldCByZXByID0gT2JqLnJlcHIgZXhjIGluXG4gICAgbGV0IHNleHAxID0gc2V4cF9vZl9hcmcxIChtYWdpY19maWVsZCByZXByIDEpIGluXG4gICAgbGV0IHNleHAyID0gc2V4cF9vZl9hcmcyIChtYWdpY19maWVsZCByZXByIDIpIGluXG4gICAgbGV0IHNleHAzID0gc2V4cF9vZl9hcmczIChtYWdpY19maWVsZCByZXByIDMpIGluXG4gICAgbGV0IHNleHA0ID0gc2V4cF9vZl9hcmc0IChtYWdpY19maWVsZCByZXByIDQpIGluXG4gICAgbGV0IHNleHA1ID0gc2V4cF9vZl9hcmc1IChtYWdpY19maWVsZCByZXByIDUpIGluXG4gICAgbGV0IHNleHA2ID0gc2V4cF9vZl9hcmc2IChtYWdpY19maWVsZCByZXByIDYpIGluXG4gICAgbGV0IHNleHA3ID0gc2V4cF9vZl9hcmc3IChtYWdpY19maWVsZCByZXByIDcpIGluXG4gICAgbGV0IHNleHA4ID0gc2V4cF9vZl9hcmc4IChtYWdpY19maWVsZCByZXByIDgpIGluXG4gICAgbGV0IHNleHA5ID0gc2V4cF9vZl9hcmc5IChtYWdpY19maWVsZCByZXByIDkpIGluXG4gICAgU2V4cC5MaXN0XG4gICAgICBbIFNleHAuQXRvbSBleGNfbmFtZVxuICAgICAgOyBzZXhwMVxuICAgICAgOyBzZXhwMlxuICAgICAgOyBzZXhwM1xuICAgICAgOyBzZXhwNFxuICAgICAgOyBzZXhwNVxuICAgICAgOyBzZXhwNlxuICAgICAgOyBzZXhwN1xuICAgICAgOyBzZXhwOFxuICAgICAgOyBzZXhwOVxuICAgICAgXSlcbjs7XG5cbmxldCByZWdpc3RlcjEwXG4gICAgICBtYWtlX2V4Y1xuICAgICAgZXhjX25hbWVcbiAgICAgIHNleHBfb2ZfYXJnMVxuICAgICAgc2V4cF9vZl9hcmcyXG4gICAgICBzZXhwX29mX2FyZzNcbiAgICAgIHNleHBfb2ZfYXJnNFxuICAgICAgc2V4cF9vZl9hcmc1XG4gICAgICBzZXhwX29mX2FyZzZcbiAgICAgIHNleHBfb2ZfYXJnN1xuICAgICAgc2V4cF9vZl9hcmc4XG4gICAgICBzZXhwX29mX2FyZzlcbiAgICAgIHNleHBfb2ZfYXJnMTBcbiAgPVxuICBsZXQgZXhjID1cbiAgICBtYWtlX2V4Y1xuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICAgICAgKE9iai5tYWdpYyBOb25lKVxuICBpblxuICBDb252LkV4bl9jb252ZXJ0ZXIuYWRkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCBleGMpIChmdW4gZXhjIC0+XG4gICAgbGV0IHJlcHIgPSBPYmoucmVwciBleGMgaW5cbiAgICBsZXQgc2V4cDEgPSBzZXhwX29mX2FyZzEgKG1hZ2ljX2ZpZWxkIHJlcHIgMSkgaW5cbiAgICBsZXQgc2V4cDIgPSBzZXhwX29mX2FyZzIgKG1hZ2ljX2ZpZWxkIHJlcHIgMikgaW5cbiAgICBsZXQgc2V4cDMgPSBzZXhwX29mX2FyZzMgKG1hZ2ljX2ZpZWxkIHJlcHIgMykgaW5cbiAgICBsZXQgc2V4cDQgPSBzZXhwX29mX2FyZzQgKG1hZ2ljX2ZpZWxkIHJlcHIgNCkgaW5cbiAgICBsZXQgc2V4cDUgPSBzZXhwX29mX2FyZzUgKG1hZ2ljX2ZpZWxkIHJlcHIgNSkgaW5cbiAgICBsZXQgc2V4cDYgPSBzZXhwX29mX2FyZzYgKG1hZ2ljX2ZpZWxkIHJlcHIgNikgaW5cbiAgICBsZXQgc2V4cDcgPSBzZXhwX29mX2FyZzcgKG1hZ2ljX2ZpZWxkIHJlcHIgNykgaW5cbiAgICBsZXQgc2V4cDggPSBzZXhwX29mX2FyZzggKG1hZ2ljX2ZpZWxkIHJlcHIgOCkgaW5cbiAgICBsZXQgc2V4cDkgPSBzZXhwX29mX2FyZzkgKG1hZ2ljX2ZpZWxkIHJlcHIgOSkgaW5cbiAgICBsZXQgc2V4cDEwID0gc2V4cF9vZl9hcmcxMCAobWFnaWNfZmllbGQgcmVwciAxMCkgaW5cbiAgICBTZXhwLkxpc3RcbiAgICAgIFsgU2V4cC5BdG9tIGV4Y19uYW1lXG4gICAgICA7IHNleHAxXG4gICAgICA7IHNleHAyXG4gICAgICA7IHNleHAzXG4gICAgICA7IHNleHA0XG4gICAgICA7IHNleHA1XG4gICAgICA7IHNleHA2XG4gICAgICA7IHNleHA3XG4gICAgICA7IHNleHA4XG4gICAgICA7IHNleHA5XG4gICAgICA7IHNleHAxMFxuICAgICAgXSlcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyBcIkZhc3QgU3BsaXR0YWJsZSBQc2V1ZG9yYW5kb20gTnVtYmVyIEdlbmVyYXRvcnNcIiBieSBTdGVlbGUgZXQuXG4gICAgYWwuICgxKS4gIFRoZSBwYXBlcidzIGFsZ29yaXRobSBwcm92aWRlcyBkZWNlbnQgcmFuZG9tbmVzcyBmb3IgbW9zdCBwdXJwb3NlcywgYnV0XG4gICAgc2FjcmlmaWNlcyBjcnlwdG9ncmFwaGljLXF1YWxpdHkgcmFuZG9tbmVzcyBpbiBmYXZvciBvZiBwZXJmb3JtYW5jZS4gIFRoZSBvcmlnaW5hbFxuICAgIGltcGxlbWVudGF0aW9uIHdhcyB0ZXN0ZWQgd2l0aCBEaWVIYXJkZXIgYW5kIEJpZ0NydXNoOyBzZWUgdGhlIHBhcGVyIGZvciBkZXRhaWxzLlxuXG4gICAgT3VyIGltcGxlbWVudGF0aW9uIGlzIGEgcG9ydCBmcm9tIEphdmEgdG8gT0NhbWwgb2YgdGhlIHBhcGVyJ3MgYWxnb3JpdGhtLiAgT3RoZXIgdGhhblxuICAgIHRoZSBjaG9pY2Ugb2YgaW5pdGlhbCBzZWVkIGZvciBbY3JlYXRlXSwgb3VyIHBvcnQgc2hvdWxkIGJlIGZhaXRoZnVsLiAgV2UgaGF2ZSBub3RcbiAgICByZS1ydW4gdGhlIERpZUhhcmRlciBvciBCaWdDcnVzaCB0ZXN0cyBvbiBvdXIgaW1wbGVtZW50YXRpb24uICBPdXIgcG9ydCBpcyBhbHNvIG5vdCBhc1xuICAgIHBlcmZvcm1hbnQgYXMgdGhlIG9yaWdpbmFsOyB0d28gZmFjdG9ycyB0aGF0IGh1cnQgdXMgYXJlIGJveGVkIFtpbnQ2NF0gdmFsdWVzIGFuZCBsYWNrXG4gICAgb2YgYSBQT1BDTlQgcHJpbWl0aXZlLlxuXG4gICAgKDEpIGh0dHA6Ly8yMDE0LnNwbGFzaGNvbi5vcmcvZXZlbnQvb29wc2xhMjAxNC1mYXN0LXNwbGl0dGFibGUtcHNldWRvcmFuZG9tLW51bWJlci1nZW5lcmF0b3JzXG4gICAgKGFsc28gbWlycm9yZWQgYXQgaHR0cDovL2dlZS5jcy5vc3dlZ28uZWR1L2RsL3BhcGVycy9vb3BzbGExNC5wZGYpXG5cbiAgICBCZXdhcmUgd2hlbiBpbXBsZW1lbnRpbmcgdGhpcyBpbnRlcmZhY2U7IGl0IGlzIGVhc3kgdG8gaW1wbGVtZW50IGEgW3NwbGl0XSBvcGVyYXRpb25cbiAgICB3aG9zZSBvdXRwdXQgaXMgbm90IGFzIFwiaW5kZXBlbmRlbnRcIiBhcyBpdCBzZWVtcyAoMikuICBUaGlzIGJ1ZyBjYXVzZWQgcHJvYmxlbXMgZm9yXG4gICAgSGFza2VsbCdzIFF1aWNrY2hlY2sgbGlicmFyeSBmb3IgYSBsb25nIHRpbWUuXG5cbiAgICAoMikgU2NoYWF0aHVuLCBcIkV2YWx1YXRpb24gb2Ygc3BsaXR0YWJsZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnNcIiwgSkZQIDIwMTUuXG4gICAgaHR0cDovL3d3dy5oZy5zY2hhYXRodW4ubmV0L3Jlc2VhcmNoL1BhcGVycy9oZ3MyMDE1amZwLnBkZlxuKilcblxub3BlbiEgQmFzZVxub3BlbiAgSW50NjQuT1xuXG5sZXQgaXNfb2RkIHggPSB4IGxvciAxTCA9IHhcblxubGV0IHBvcGNvdW50ID0gSW50NjQucG9wY291bnRcblxubW9kdWxlIFN0YXRlID0gc3RydWN0XG5cbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgc2VlZCA6IGludDY0XG4gICAgOyBvZGRfZ2FtbWEgICAgOiBpbnQ2NFxuICAgIH1cblxuICBsZXQgZ29sZGVuX2dhbW1hID0gMHg5ZTM3Xzc5YjlfN2Y0YV83YzE1TFxuXG4gIGxldCBvZl9pbnQgc2VlZCA9XG4gICAgeyBzZWVkICAgICAgPSBJbnQ2NC5vZl9pbnQgc2VlZFxuICAgIDsgb2RkX2dhbW1hID0gZ29sZGVuX2dhbW1hXG4gICAgfVxuXG4gIGxldCBjb3B5IHsgc2VlZCA7IG9kZF9nYW1tYSB9ID0geyBzZWVkIDsgb2RkX2dhbW1hIH1cblxuICBsZXQgbWl4X2JpdHMgeiBuID1cbiAgICB6IGx4b3IgKHogbHNyIG4pXG5cbiAgbGV0IG1peDY0IHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhmZjUxX2FmZDdfZWQ1NV84Y2NkTCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzMpICogMHhjNGNlX2I5ZmVfMWE4NV9lYzUzTCBpblxuICAgIG1peF9iaXRzIHogMzNcblxuICBsZXQgbWl4NjRfdmFyaWFudDEzIHogPVxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMzApICogMHhiZjU4XzQ3NmRfMWNlNF9lNWI5TCBpblxuICAgIGxldCB6ID0gKG1peF9iaXRzIHogMjcpICogMHg5NGQwXzQ5YmJfMTMzMV8xMWViTCBpblxuICAgIG1peF9iaXRzIHogMzFcblxuICBsZXQgbWl4X29kZF9nYW1tYSB6ID1cbiAgICBsZXQgeiA9IChtaXg2NF92YXJpYW50MTMgeikgbG9yIDFMIGluXG4gICAgbGV0IG4gPSBwb3Bjb3VudCAoeiBseG9yICh6IGxzciAxKSkgaW5cbiAgICAoKiBUaGUgb3JpZ2luYWwgcGFwZXIgdXNlcyBbPj1dIGluIHRoZSBjb25kaXRpb25hbCBpbW1lZGlhdGVseSBiZWxvdzsgaG93ZXZlciB0aGlzIGlzXG4gICAgICAgYSB0eXBvLCBhbmQgd2UgY29ycmVjdCBpdCBieSB1c2luZyBbPF0uIFRoaXMgd2FzIGZpeGVkIGluIHJlc3BvbnNlIHRvIFsxXSBhbmQgWzJdLlxuXG4gICAgICAgWzFdIGh0dHBzOi8vZ2l0aHViLmNvbS9qYW5lc3RyZWV0L3NwbGl0dGFibGVfcmFuZG9tL2lzc3Vlcy8xXG4gICAgICAgWzJdIGh0dHA6Ly93d3cucGNnLXJhbmRvbS5vcmcvcG9zdHMvYnVncy1pbi1zcGxpdG1peC5odG1sXG4gICAgKilcbiAgICBpZiBJbnQuKCA8ICkgbiAyNFxuICAgIHRoZW4geiBseG9yIDB4YWFhYV9hYWFhX2FhYWFfYWFhYUxcbiAgICBlbHNlIHpcblxuICBsZXQldGVzdF91bml0IFwib2RkIGdhbW1hXCIgPVxuICAgIGZvciBpbnB1dCA9IC0xXzAwMF8wMDAgdG8gMV8wMDBfMDAwIGRvXG4gICAgICBsZXQgb3V0cHV0ID0gbWl4X29kZF9nYW1tYSAoSW50NjQub2ZfaW50IGlucHV0KSBpblxuICAgICAgaWYgbm90IChpc19vZGQgb3V0cHV0KSB0aGVuXG4gICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgICAgXCJnYW1tYSB2YWx1ZSBpcyBub3Qgb2RkXCJcbiAgICAgICAgICAgIChpbnB1dCAgOiBpbnQpXG4gICAgICAgICAgICAob3V0cHV0IDogaW50NjQpXVxuICAgIGRvbmVcblxuICBsZXQgbmV4dF9zZWVkIHQgPVxuICAgIGxldCBuZXh0ID0gdC5zZWVkICsgdC5vZGRfZ2FtbWEgaW5cbiAgICB0LnNlZWQgPC0gbmV4dDtcbiAgICBuZXh0XG5cbiAgbGV0IG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYSA9XG4gICAgbGV0IHNlZWQgICAgICA9IG1peDY0ICAgICAgICAgc2VlZCAgaW5cbiAgICBsZXQgb2RkX2dhbW1hID0gbWl4X29kZF9nYW1tYSBnYW1tYSBpblxuICAgIHsgc2VlZDsgb2RkX2dhbW1hIH1cblxuICBsZXQgcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSA9XG4gICAgUmFuZG9tLlN0YXRlLmludDY0X2luY2wgcmFuZG9tX3N0YXRlIEludDY0Lm1pbl92YWx1ZSBJbnQ2NC5tYXhfdmFsdWVcblxuICBsZXQgY3JlYXRlIHJhbmRvbV9zdGF0ZSA9XG4gICAgbGV0IHNlZWQgID0gcmFuZG9tX2ludDY0IHJhbmRvbV9zdGF0ZSBpblxuICAgIGxldCBnYW1tYSA9IHJhbmRvbV9pbnQ2NCByYW5kb21fc3RhdGUgaW5cbiAgICBvZl9zZWVkX2FuZF9nYW1tYSB+c2VlZCB+Z2FtbWFcblxuICBsZXQgc3BsaXQgdCA9XG4gICAgbGV0IHNlZWQgID0gbmV4dF9zZWVkIHQgaW5cbiAgICBsZXQgZ2FtbWEgPSBuZXh0X3NlZWQgdCBpblxuICAgIG9mX3NlZWRfYW5kX2dhbW1hIH5zZWVkIH5nYW1tYVxuXG4gIGxldCBuZXh0X2ludDY0IHQgPSBtaXg2NCAobmV4dF9zZWVkIHQpXG5cbiAgKCogW3BlcnR1cmJdIGlzIG5vdCBmcm9tIGFueSBleHRlcm5hbCBzb3VyY2UsIGJ1dCBwcm92aWRlcyBhIHdheSB0byBtaXggaW4gZXh0ZXJuYWxcbiAgICAgZW50cm9weSB3aXRoIGEgcHNldWRvLXJhbmRvbSBzdGF0ZS4gKilcbiAgbGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgICBsZXQgbmV4dCA9IHQuc2VlZCArIG1peDY0IChJbnQ2NC5vZl9pbnQgc2FsdCkgaW5cbiAgICB0LnNlZWQgPC0gbmV4dFxuXG5lbmRcblxubGV0IGJvb2wgc3RhdGUgPSBpc19vZGQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIFdlIGFidXNlIHRlcm1pbm9sb2d5IGFuZCByZWZlciB0byBpbmRpdmlkdWFsIHZhbHVlcyBhcyBiaWFzZWQgb3IgdW5iaWFzZWQuICBNb3JlXG4gICBwcm9wZXJseSwgd2hhdCBpcyB1bmJpYXNlZCBpcyB0aGUgc2FtcGxlciB0aGF0IHJlc3VsdHMgaWYgd2Uga2VlcCBvbmx5IHRoZXNlIFwidW5iaWFzZWRcIlxuICAgdmFsdWVzLiAqKVxubGV0IHJlbWFpbmRlcl9pc191bmJpYXNlZFxuICAgICAgfmRyYXdcbiAgICAgIH5yZW1haW5kZXJcbiAgICAgIH5kcmF3X21heGltdW1cbiAgICAgIH5yZW1haW5kZXJfbWF4aW11bVxuICA9XG4gIGxldCBvcGVuIEludDY0Lk8gaW5cbiAgZHJhdyAtIHJlbWFpbmRlciA8PSBkcmF3X21heGltdW0gLSByZW1haW5kZXJfbWF4aW11bVxuXG5sZXQldGVzdF91bml0IFwicmVtYWluZGVyX2lzX3VuYmlhc2VkXCIgPVxuICAoKiBjaG9vc2luZyBhIHJhbmdlIG9mIDEwIHZhbHVlcyBiYXNlZCBvbiBhIHJhbmdlIG9mIDEwNSB2YWx1ZXMgKilcbiAgbGV0IGRyYXdfbWF4aW11bSA9IDEwNEwgaW5cbiAgbGV0IHJlbWFpbmRlcl9tYXhpbXVtID0gOUwgaW5cbiAgbGV0IGlzX3VuYmlhc2VkIGRyYXcgPVxuICAgIGxldCByZW1haW5kZXIgPSBJbnQ2NC5yZW0gZHJhdyAoSW50NjQuc3VjYyByZW1haW5kZXJfbWF4aW11bSkgaW5cbiAgICByZW1haW5kZXJfaXNfdW5iaWFzZWQgfmRyYXcgfnJlbWFpbmRlciB+ZHJhd19tYXhpbXVtIH5yZW1haW5kZXJfbWF4aW11bVxuICBpblxuICBmb3IgaSA9IDAgdG8gOTkgZG9cbiAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgKGlzX3VuYmlhc2VkIChJbnQ2NC5vZl9pbnQgaSkpXG4gICAgICB+ZXhwZWN0OnRydWVcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmU7XG4gIGZvciBpID0gMTAwIHRvIDEwNCBkb1xuICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAoaXNfdW5iaWFzZWQgKEludDY0Lm9mX2ludCBpKSlcbiAgICAgIH5leHBlY3Q6ZmFsc2VcbiAgICAgIH5tZXNzYWdlOihJbnQudG9fc3RyaW5nIGkpXG4gIGRvbmVcblxuKCogVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBib3VuZGVkIHJhbmRvbW5lc3MgaXMgYWRhcHRlZCBmcm9tIFtSYW5kb20uU3RhdGUuaW50Kl0gaW4gdGhlXG4gICBPQ2FtbCBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhlIHB1cnBvc2UgaXMgdG8gdXNlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjYWxscyB0b1xuICAgW25leHRfaW50NjRdIHRvIHByb2R1Y2UgYSBudW1iZXIgdW5pZm9ybWx5IGNob3NlbiB3aXRoaW4gdGhlIGdpdmVuIHJhbmdlLiAqKVxubGV0IGludDY0ID1cbiAgbGV0IG9wZW4gSW50NjQuTyBpblxuICBsZXQgcmVjIGJldHdlZW4gc3RhdGUgfmxvIH5oaSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGluXG4gICAgaWYgbG8gPD0gZHJhdyAmJiBkcmF3IDw9IGhpXG4gICAgdGhlbiBkcmF3XG4gICAgZWxzZSBiZXR3ZWVuIHN0YXRlIH5sbyB+aGlcbiAgaW5cbiAgbGV0IHJlYyBub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgbWF4aW11bSA9XG4gICAgbGV0IGRyYXcgPSBTdGF0ZS5uZXh0X2ludDY0IHN0YXRlIGxhbmQgSW50NjQubWF4X3ZhbHVlIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IEludDY0LnJlbSBkcmF3IChJbnQ2NC5zdWNjIG1heGltdW0pIGluXG4gICAgaWYgcmVtYWluZGVyX2lzX3VuYmlhc2VkXG4gICAgICAgICB+ZHJhd1xuICAgICAgICAgfnJlbWFpbmRlclxuICAgICAgICAgfmRyYXdfbWF4aW11bTpJbnQ2NC5tYXhfdmFsdWVcbiAgICAgICAgIH5yZW1haW5kZXJfbWF4aW11bTptYXhpbXVtXG4gICAgdGhlbiByZW1haW5kZXJcbiAgICBlbHNlIG5vbl9uZWdhdGl2ZV91cF90byBzdGF0ZSBtYXhpbXVtXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbG8gPiBoaSB0aGVuIGJlZ2luXG4gICAgICBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludDY0OiBjcm9zc2VkIGJvdW5kc1wiIChsbyA6IGludDY0KSAoaGkgOiBpbnQ2NCldXG4gICAgZW5kO1xuICAgIGxldCBkaWZmID0gaGkgLSBsbyBpblxuICAgIGlmIGRpZmYgPSBJbnQ2NC5tYXhfdmFsdWVcbiAgICB0aGVuICgoU3RhdGUubmV4dF9pbnQ2NCBzdGF0ZSkgbGFuZCBJbnQ2NC5tYXhfdmFsdWUpICsgbG9cbiAgICBlbHNlIGlmIGRpZmYgPj0gMExcbiAgICB0aGVuIChub25fbmVnYXRpdmVfdXBfdG8gc3RhdGUgZGlmZikgKyBsb1xuICAgIGVsc2UgYmV0d2VlbiBzdGF0ZSB+bG8gfmhpXG5cbmxldCBpbnQgc3RhdGUgfmxvIH5oaSA9XG4gIGxldCBsbyA9IEludDY0Lm9mX2ludCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2NC5vZl9pbnQgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnRfdHJ1bmMgKGludDY0IHN0YXRlIH5sbyB+aGkpXG5cbmxldCBpbnQzMiBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfaW50MzIgbG8gaW5cbiAgbGV0IGhpID0gSW50NjQub2ZfaW50MzIgaGkgaW5cbiAgKCogdHJ1bmNhdGUgdW5uZWVkZWQgYml0cyAqKVxuICBJbnQ2NC50b19pbnQzMl90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IG5hdGl2ZWludCBzdGF0ZSB+bG8gfmhpID1cbiAgbGV0IGxvID0gSW50NjQub2ZfbmF0aXZlaW50IGxvIGluXG4gIGxldCBoaSA9IEludDY0Lm9mX25hdGl2ZWludCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDY0LnRvX25hdGl2ZWludF90cnVuYyAoaW50NjQgc3RhdGUgfmxvIH5oaSlcblxubGV0IGludDYzIHN0YXRlIH5sbyB+aGkgPVxuICBsZXQgbG8gPSBJbnQ2My50b19pbnQ2NCBsbyBpblxuICBsZXQgaGkgPSBJbnQ2My50b19pbnQ2NCBoaSBpblxuICAoKiB0cnVuY2F0ZSB1bm5lZWRlZCBiaXRzICopXG4gIEludDYzLm9mX2ludDY0X3RydW5jIChpbnQ2NCBzdGF0ZSB+bG8gfmhpKVxuXG5sZXQgZG91YmxlX3VscCA9IDIuICoqLiAtNTMuXG5cbmxldCV0ZXN0X3VuaXQgXCJkb3VibGVfdWxwXCIgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIG1hdGNoIFdvcmRfc2l6ZS53b3JkX3NpemUgd2l0aFxuICB8IFc2NCAtPlxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAxLjApO1xuICAgIGFzc2VydCAoMS4wIC0uIChkb3VibGVfdWxwIC8uIDIuMCkgPSAxLjApXG4gIHwgVzMyIC0+XG4gICAgKCogMzItYml0IE9DYW1sIHVzZXMgYSA2NC1iaXQgZmxvYXQgcmVwcmVzZW50YXRpb24gYnV0IDgwLWJpdCBmbG9hdCBpbnN0cnVjdGlvbnMsIHNvXG4gICAgICAgcm91bmRpbmcgd29ya3MgZGlmZmVyZW50bHkgZHVlIHRvIHRoZSBjb252ZXJzaW9uIGJhY2sgYW5kIGZvcnRoLiAqKVxuICAgIGFzc2VydCAoMS4wIC0uICBkb3VibGVfdWxwICAgICAgICAgPCAgMS4wKTtcbiAgICBhc3NlcnQgKDEuMCAtLiAoZG91YmxlX3VscCAvLiAyLjApIDw9IDEuMClcblxubGV0IHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCBpbnQ2NCA9XG4gIChJbnQ2NC50b19mbG9hdCAoaW50NjQgbHNyIDExKSkgKi4gZG91YmxlX3VscFxuXG5sZXQldGVzdF91bml0IFwidW5pdF9mbG9hdF9mcm9tX2ludDY0XCIgPSBiZWdpblxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4MDAwMF8wMDAwXzAwMDBfMDAwMEwgPSAwLik7XG4gIGFzc2VydCAodW5pdF9mbG9hdF9mcm9tX2ludDY0IDB4ZmZmZl9mZmZmX2ZmZmZfZmZmZkwgPCAxLjApO1xuICBhc3NlcnQgKHVuaXRfZmxvYXRfZnJvbV9pbnQ2NCAweGZmZmZfZmZmZl9mZmZmX2ZmZmZMID0gKDEuMCAtLiBkb3VibGVfdWxwKSk7XG5lbmRcblxubGV0IHVuaXRfZmxvYXQgc3RhdGUgPVxuICB1bml0X2Zsb2F0X2Zyb21faW50NjQgKFN0YXRlLm5leHRfaW50NjQgc3RhdGUpXG5cbigqIE5vdGUgYWJvdXQgcm91bmRvZmYgZXJyb3I6XG5cbiAgIEFsdGhvdWdoIFtmbG9hdCBzdGF0ZSB+bG8gfmhpXSBpcyBub21pbmFsbHkgaW5jbHVzaXZlIG9mIGVuZHBvaW50cywgd2UgYXJlIHJlbHlpbmcgb25cbiAgIHRoZSBmYWN0IHRoYXQgW3VuaXRfZmxvYXRdIG5ldmVyIHJldHVybnMgMS4sIGJlY2F1c2UgdGhlcmUgYXJlIHBhaXJzIFsobG8saGkpXSBmb3JcbiAgIHdoaWNoIFtsbyArLiAxLiAqLiAoaGkgLS4gbG8pID4gaGldLiAgVGhlcmUgYXJlIGFsc28gcGFpcnMgWyhsbyxoaSldIGFuZCB2YWx1ZXMgb2YgW3hdXG4gICB3aXRoIFt4IDwgMS5dIHN1Y2ggdGhhdCBbbG8gKy4geCAqLiAoaGkgLS4gbG8pID0gaGldLCBzbyBpdCB3b3VsZCBub3QgYmUgY29ycmVjdCB0b1xuICAgZG9jdW1lbnQgdGhpcyBhcyBiZWluZyBleGNsdXNpdmUgb2YgW2hpXS5cbiopXG5sZXQgZmxvYXQgPVxuICBsZXQgcmVjIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpID1cbiAgICBsZXQgcmFuZ2UgPSBoaSAtLiBsbyBpblxuICAgIGlmIEZsb2F0LmlzX2Zpbml0ZSByYW5nZVxuICAgIHRoZW4gKGxvICsuICh1bml0X2Zsb2F0IHN0YXRlICouIHJhbmdlKSlcbiAgICBlbHNlIGJlZ2luXG4gICAgICAoKiBJZiBbaGkgLSBsb10gaXMgaW5maW5pdGUsIHRoZW4gW2hpICsgbG9dIGlzIGZpbml0ZSBiZWNhdXNlIFtoaV0gYW5kIFtsb10gaGF2ZVxuICAgICAgICAgb3Bwb3NpdGUgc2lnbnMuICopXG4gICAgICBsZXQgbWlkID0gKGhpICsuIGxvKSAvLiAyLiBpblxuICAgICAgaWYgYm9vbCBzdGF0ZVxuICAgICAgKCogRGVwZW5kaW5nIG9uIHJvdW5kaW5nLCB0aGUgcmVjdXJzaW9uIHdpdGggW35oaTptaWRdIG1pZ2h0IGJlIGluY2x1c2l2ZSBvZiBbbWlkXSxcbiAgICAgICAgIHdoaWNoIHdvdWxkIG1lYW4gdGhlIHR3byBjYXNlcyBvdmVybGFwIG9uIFttaWRdLiBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8gaW5jcmVtZW50XG4gICAgICAgICBvciBkZWNyZW1lbnQgW21pZF0gdXNpbmcgW29uZV91bHBdIGluIGVpdGhlciBvZiB0aGUgY2FsbHMsIGJ1dCB0aGVuIGlmIHRoZSBmaXJzdFxuICAgICAgICAgY2FzZSBpcyBleGNsdXNpdmUgd2UgbGVhdmUgYSBcImdhcFwiIGJldHdlZW4gdGhlIHR3byByYW5nZXMuIFRoZXJlJ3Mgbm8gcGVyZmVjdGx5XG4gICAgICAgICB1bmlmb3JtIHNvbHV0aW9uLCBzbyB3ZSB1c2UgdGhlIHNpbXBsZXIgY29kZSB0aGF0IGRvZXMgbm90IGNhbGwgW29uZV91bHBdLiAqKVxuICAgICAgdGhlbiBmaW5pdGVfZmxvYXQgc3RhdGUgfmxvIH5oaTptaWRcbiAgICAgIGVsc2UgZmluaXRlX2Zsb2F0IHN0YXRlIH5sbzptaWQgfmhpXG4gICAgZW5kXG4gIGluXG4gIGZ1biBzdGF0ZSB+bG8gfmhpIC0+XG4gICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgbG8gJiYgRmxvYXQuaXNfZmluaXRlIGhpKVxuICAgIHRoZW4gYmVnaW5cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlXG4gICAgICAgIFwiZmxvYXQ6IGJvdW5kcyBhcmUgbm90IGZpbml0ZSBudW1iZXJzXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGlmIEZsb2F0LiggPiApIGxvIGhpXG4gICAgdGhlbiBiZWdpblxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2VcbiAgICAgICAgXCJmbG9hdDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAobG8gOiBmbG9hdClcbiAgICAgICAgICAoaGkgOiBmbG9hdCldXG4gICAgZW5kO1xuICAgIGZpbml0ZV9mbG9hdCBzdGF0ZSB+bG8gfmhpXG5cbmxldCViZW5jaF9mdW4gXCJ1bml0X2Zsb2F0X2Zyb21faW50NjRcIiA9XG4gIGxldCBpbnQ2NCA9IDFMIGluXG4gIGZ1biAoKSAtPiB1bml0X2Zsb2F0X2Zyb21faW50NjQgaW50NjRcblxubW9kdWxlIExvZ191bmlmb3JtID0gc3RydWN0XG4gIG1vZHVsZSBNYWtlIChNIDogc2lnIGluY2x1ZGUgSW50LlMgdmFsIHVuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0IGVuZCkgOiBzaWdcbiAgICB2YWwgbG9nX3VuaWZvcm0gOiBTdGF0ZS50IC0+IGxvOk0udCAtPiBoaTpNLnQgLT4gTS50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG9wZW4gTVxuXG4gICAgbGV0IGJpdHNfdG9fcmVwcmVzZW50IHQgPVxuICAgICAgYXNzZXJ0ICh0ID49IHplcm8pO1xuICAgICAgbGV0IHQgPSByZWYgdCBpblxuICAgICAgbGV0IG4gPSByZWYgMCBpblxuICAgICAgd2hpbGUgIXQgPiB6ZXJvIGRvXG4gICAgICAgIHQgOj0gc2hpZnRfcmlnaHQgIXQgMTtcbiAgICAgICAgSW50LmluY3IgbjtcbiAgICAgIGRvbmU7XG4gICAgICAhblxuXG4gICAgbGV0JXRlc3RfdW5pdCBcImJpdHNfdG9fcmVwcmVzZW50XCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBpbnRdIChiaXRzX3RvX3JlcHJlc2VudCBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDApICAgMDtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biAxKSAgIDE7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gMikgICAyO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDMpICAgMjtcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA0KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gNSkgICAzO1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDYpICAgMztcbiAgICAgIHRlc3QgKE0ub2ZfaW50X2V4biA3KSAgIDM7XG4gICAgICB0ZXN0IChNLm9mX2ludF9leG4gOCkgICA0O1xuICAgICAgdGVzdCAoTS5vZl9pbnRfZXhuIDEwMCkgNztcbiAgICAgIHRlc3QgTS5tYXhfdmFsdWUgKEludC5wcmVkIE0ubnVtX2JpdHMpO1xuICAgIDs7XG5cbiAgICBsZXQgbWluX3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIGlmIEludC5lcXVhbCBuIDBcbiAgICAgIHRoZW4gemVyb1xuICAgICAgZWxzZSBzaGlmdF9sZWZ0IG9uZSAoSW50LnByZWQgbilcblxuICAgIGxldCV0ZXN0X3VuaXQgXCJtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzXCIgPVxuICAgICAgbGV0IHRlc3QgbiBleHBlY3QgPSBbJXRlc3RfcmVzdWx0OiBNLnRdIChtaW5fcmVwcmVzZW50ZWRfYnlfbl9iaXRzIG4pIH5leHBlY3QgaW5cbiAgICAgIHRlc3QgMCAoTS5vZl9pbnRfZXhuIDApO1xuICAgICAgdGVzdCAxIChNLm9mX2ludF9leG4gMSk7XG4gICAgICB0ZXN0IDIgKE0ub2ZfaW50X2V4biAyKTtcbiAgICAgIHRlc3QgMyAoTS5vZl9pbnRfZXhuIDQpO1xuICAgICAgdGVzdCA0IChNLm9mX2ludF9leG4gOCk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biA2NCk7XG4gICAgICB0ZXN0IChJbnQucHJlZCBNLm51bV9iaXRzKSAoTS5zaGlmdF9yaWdodF9sb2dpY2FsIE0ubWluX3ZhbHVlIDEpO1xuICAgIDs7XG5cbiAgICBsZXQgbWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuID1cbiAgICAgIHByZWQgKHNoaWZ0X2xlZnQgb25lIG4pXG5cbiAgICBsZXQldGVzdF91bml0IFwibWF4X3JlcHJlc2VudGVkX2J5X25fYml0c1wiID1cbiAgICAgIGxldCB0ZXN0IG4gZXhwZWN0ID0gWyV0ZXN0X3Jlc3VsdDogTS50XSAobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBuKSB+ZXhwZWN0ICBpblxuICAgICAgdGVzdCAwIChNLm9mX2ludF9leG4gMCk7XG4gICAgICB0ZXN0IDEgKE0ub2ZfaW50X2V4biAxKTtcbiAgICAgIHRlc3QgMiAoTS5vZl9pbnRfZXhuIDMpO1xuICAgICAgdGVzdCAzIChNLm9mX2ludF9leG4gNyk7XG4gICAgICB0ZXN0IDQgKE0ub2ZfaW50X2V4biAxNSk7XG4gICAgICB0ZXN0IDcgKE0ub2ZfaW50X2V4biAxMjcpO1xuICAgICAgdGVzdCAoSW50LnByZWQgTS5udW1fYml0cykgTS5tYXhfdmFsdWU7XG4gICAgOztcblxuICAgIGxldCBsb2dfdW5pZm9ybSBzdGF0ZSB+bG8gfmhpID1cbiAgICAgIGxldCBtaW5fYml0cyA9IGJpdHNfdG9fcmVwcmVzZW50IGxvIGluXG4gICAgICBsZXQgbWF4X2JpdHMgPSBiaXRzX3RvX3JlcHJlc2VudCBoaSBpblxuICAgICAgbGV0IGJpdHMgPSBpbnQgc3RhdGUgfmxvOm1pbl9iaXRzIH5oaTptYXhfYml0cyBpblxuICAgICAgdW5pZm9ybSBzdGF0ZVxuICAgICAgICB+bG86KG1pbl9yZXByZXNlbnRlZF9ieV9uX2JpdHMgYml0cyB8PiBtYXggbG8pXG4gICAgICAgIH5oaToobWF4X3JlcHJlc2VudGVkX2J5X25fYml0cyBiaXRzIHw+IG1pbiBoaSlcbiAgZW5kXG5cbiAgbW9kdWxlIEZvcl9pbnQgICAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQgICAgICAgbGV0IHVuaWZvcm0gPSBpbnQgICAgICAgZW5kKVxuICBtb2R1bGUgRm9yX2ludDMyICAgICA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIEludDMyICAgICBsZXQgdW5pZm9ybSA9IGludDMyICAgICBlbmQpXG4gIG1vZHVsZSBGb3JfaW50NjMgICAgID0gTWFrZSAoc3RydWN0IGluY2x1ZGUgSW50NjMgICAgIGxldCB1bmlmb3JtID0gaW50NjMgICAgIGVuZClcbiAgbW9kdWxlIEZvcl9pbnQ2NCAgICAgPSBNYWtlIChzdHJ1Y3QgaW5jbHVkZSBJbnQ2NCAgICAgbGV0IHVuaWZvcm0gPSBpbnQ2NCAgICAgZW5kKVxuICBtb2R1bGUgRm9yX25hdGl2ZWludCA9IE1ha2UgKHN0cnVjdCBpbmNsdWRlIE5hdGl2ZWludCBsZXQgdW5pZm9ybSA9IG5hdGl2ZWludCBlbmQpXG5cbiAgbGV0IGludCAgICAgICA9IEZvcl9pbnQubG9nX3VuaWZvcm1cbiAgbGV0IGludDMyICAgICA9IEZvcl9pbnQzMi5sb2dfdW5pZm9ybVxuICBsZXQgaW50NjMgICAgID0gRm9yX2ludDYzLmxvZ191bmlmb3JtXG4gIGxldCBpbnQ2NCAgICAgPSBGb3JfaW50NjQubG9nX3VuaWZvcm1cbiAgbGV0IG5hdGl2ZWludCA9IEZvcl9uYXRpdmVpbnQubG9nX3VuaWZvcm1cbmVuZFxuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuKCoqIEludGVnZXIgcmVtYWluZGVyLiAgSWYgW3ldIGlzIG5vdCB6ZXJvLCB0aGUgcmVzdWx0XG4gICBvZiBbSW50NjQucmVtIHggeV0gc2F0aXNmaWVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6XG4gICBbeCA9IEludDY0LmFkZCAoSW50NjQubXVsIChJbnQ2NC5kaXYgeCB5KSB5KSAoSW50NjQucmVtIHggeSldLlxuICAgSWYgW3kgPSAwXSwgW0ludDY0LnJlbSB4IHldIHJhaXNlcyBbRGl2aXNpb25fYnlfemVyb10uICopXG5cbnZhbCB1bnNpZ25lZF9yZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFyZW19LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4oKiogVGhlIGVxdWFsIGZ1bmN0aW9uIGZvciBpbnQ2NHMuXG4gICAgQHNpbmNlIDQuMDMuMCAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4gKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIExheW91dCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaWdhcnJheS5sYXlvdXRcblxuICBsZXQgb2Zmc2V0IDogdHlwZSBhLiBhIHQgLT4gaW50ID0gZnVuY3Rpb25cbiAgICB8IEJpZ2FycmF5LkZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICB8IEJpZ2FycmF5LkNfbGF5b3V0IC0+IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJyYXkxID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBsZXQgaXRlcmkgdCB+ZiA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnYXJyYXkuQXJyYXkxLmRpbSB0IC0gMSBkb1xuICAgICAgZiAoaSArIG9mZnNldCkgdC57aSArIG9mZnNldH1cbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IGluaXQgKHR5cGUgZWx0KSAoa2luZCA6IChlbHQsIF8pIEJpZ2FycmF5LmtpbmQpIGxheW91dCBkaW0gfmYgPVxuICAgIGxldCB0ID0gQmlnYXJyYXkuQXJyYXkxLmNyZWF0ZSBraW5kIGxheW91dCBkaW0gaW5cbiAgICBpdGVyaSB0IH5mOihmdW4gaSAoXyA6IGVsdCkgLT4gdC57aX0gPC0gZiBpKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIGkgKF8gOiBlbHQpIC0+IGluaXQgOj0gZiAhaW5pdCB0LntpfSk7XG4gICAgIWluaXRcbiAgOztcblxuICBsZXQgdG9fYXJyYXkgdCA9XG4gICAgbGV0IG9mZnNldCA9IExheW91dC5vZmZzZXQgKEJpZ2FycmF5LkFycmF5MS5sYXlvdXQgdCkgaW5cbiAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTEuZGltIHQpIH5mOihmdW4gaSAtPiB0LntpICsgb2Zmc2V0fSlcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IF9zZXhwX29mX3BhY2sgX3NleHBfb2ZfbGF5b3V0IHQgPVxuICAgIFslc2V4cCAodG9fYXJyYXkgdCA6IGVsdCBhcnJheSldXG4gIDs7XG5cbiAgbGV0IGhhc2hfZm9sZCBoYXNoX2ZvbGRfZWx0IHN0YXRlIHQgPVxuICAgIGxldCBzdGF0ZSA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKEJpZ2FycmF5LkFycmF5MS5kaW0gdCkgaW5cbiAgICBmb2xkIHQgfmluaXQ6c3RhdGUgfmY6aGFzaF9mb2xkX2VsdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBBcnJheTIgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBCaWdhcnJheS5BcnJheTIudFxuXG4gIGxldCBpdGVyaSB0IH5mID1cbiAgICBsZXQgb2Zmc2V0ID0gTGF5b3V0Lm9mZnNldCAoQmlnYXJyYXkuQXJyYXkyLmxheW91dCB0KSBpblxuICAgIGZvciBpID0gMCB0byBCaWdhcnJheS5BcnJheTIuZGltMSB0IC0gMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIEJpZ2FycmF5LkFycmF5Mi5kaW0yIHQgLSAxIGRvXG4gICAgICAgIGYgKGkgKyBvZmZzZXQpIChqICsgb2Zmc2V0KSB0LntpICsgb2Zmc2V0LCBqICsgb2Zmc2V0fVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQgaW5pdCAodHlwZSBlbHQpIChraW5kIDogKGVsdCwgXykgQmlnYXJyYXkua2luZCkgbGF5b3V0IGRpbTEgZGltMiB+ZiA9XG4gICAgbGV0IHQgPSBCaWdhcnJheS5BcnJheTIuY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGl0ZXJpIHQgfmY6KGZ1biBpIGogKF8gOiBlbHQpIC0+IHQue2ksIGp9IDwtIGYgaSBqKTtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGZvbGQgKHR5cGUgZWx0KSAodCA6IChlbHQsIF8sIF8pIHQpIH5pbml0IH5mID1cbiAgICBsZXQgaW5pdCA9IHJlZiBpbml0IGluXG4gICAgaXRlcmkgdCB+ZjooZnVuIChfIDogaW50KSAoXyA6IGludCkgZWx0IC0+IGluaXQgOj0gZiAhaW5pdCBlbHQpO1xuICAgICFpbml0XG4gIDs7XG5cbiAgbGV0IHRvX2FycmF5IHQgPVxuICAgIGxldCBvZmZzZXQgPSBMYXlvdXQub2Zmc2V0IChCaWdhcnJheS5BcnJheTIubGF5b3V0IHQpIGluXG4gICAgQXJyYXkuaW5pdCAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgfmY6KGZ1biBpIC0+XG4gICAgICBBcnJheS5pbml0IChCaWdhcnJheS5BcnJheTIuZGltMiB0KSB+ZjooZnVuIGogLT4gdC57aSArIG9mZnNldCwgaiArIG9mZnNldH0pKVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgX3NleHBfb2ZfcGFjayBfc2V4cF9vZl9sYXlvdXQgdCA9XG4gICAgWyVzZXhwICh0b19hcnJheSB0IDogZWx0IGFycmF5IGFycmF5KV1cbiAgOztcblxuICBsZXQgaGFzaF9mb2xkIGhhc2hfZm9sZF9lbHQgc3RhdGUgdCA9XG4gICAgbGV0IHN0YXRlID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoQmlnYXJyYXkuQXJyYXkyLmRpbTEgdCkgaW5cbiAgICBsZXQgc3RhdGUgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChCaWdhcnJheS5BcnJheTIuZGltMiB0KSBpblxuICAgIGZvbGQgdCB+aW5pdDpzdGF0ZSB+ZjpoYXNoX2ZvbGRfZWx0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSAnYSB0ID0gJ2EgLT4gc2l6ZTppbnQgLT4gaGFzaDpIYXNoLnN0YXRlIC0+IEhhc2guc3RhdGVcblxubGV0IGNyZWF0ZSBmIDogXyB0ID0gZlxuXG5sZXQgb2JzZXJ2ZSAodCA6IF8gdCkgeCB+c2l6ZSB+aGFzaCA9XG4gIGlmIHNpemUgPCAwXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIub2JzZXJ2ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gIGVsc2UgdCB4IH5zaXplIH5oYXNoXG47O1xuXG5sZXQgb3BhcXVlIF8gfnNpemU6XyB+aGFzaCA9IGhhc2hcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdFxuXG4gIHZhbCBjcmVhdGUgOiAoc2l6ZTppbnQgLT4gcmFuZG9tOlNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnQgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIGdlbmVyYXRlIDogJ2EgdCAtPiBzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYVxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IChzaXplOmludCAtPiByYW5kb206U3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiAnYSkgU3RhZ2VkLnRcblxuICBsZXQgY3JlYXRlIGYgOiBfIHQgPSBTdGFnZWQuc3RhZ2UgZlxuXG4gIGxldCBnZW5lcmF0ZSAodCA6IF8gdCkgfnNpemUgfnJhbmRvbSA9XG4gICAgaWYgc2l6ZSA8IDBcbiAgICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5nZW5lcmF0ZTogc2l6ZSA8IDBcIiAoc2l6ZSA6IGludCldXG4gICAgZWxzZSBTdGFnZWQudW5zdGFnZSB0IH5zaXplIH5yYW5kb21cbiAgOztcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IHNpemUgPSBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tOl8gLT4gc2l6ZSlcblxubGV0IGZuIGRvbSBybmcgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnNwbGl0IHJhbmRvbSBpblxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgaGFzaCA9IE9ic2VydmVyMC5vYnNlcnZlIGRvbSB4IH5zaXplIH5oYXNoOihIYXNoLmFsbG9jICgpKSBpblxuICAgICAgbGV0IHJhbmRvbSA9IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLmNvcHkgcmFuZG9tIGluXG4gICAgICBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5wZXJ0dXJiIHJhbmRvbSAoSGFzaC5nZXRfaGFzaF92YWx1ZSBoYXNoKTtcbiAgICAgIGdlbmVyYXRlIHJuZyB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IHdpdGhfc2l6ZSB0IH5zaXplID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSlcblxubGV0IHBlcnR1cmIgdCBzYWx0ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLnBlcnR1cmIgcmFuZG9tIHNhbHQ7XG4gICAgZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCByZWMgbG9vcCB+c2l6ZSB+cmFuZG9tID1cbiAgICBsZXQgeCA9IGdlbmVyYXRlIHQgfnNpemUgfnJhbmRvbSBpblxuICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgfCBTb21lIHkgLT4geVxuICAgIHwgTm9uZSAtPiBsb29wIH5zaXplOihzaXplICsgMSkgfnJhbmRvbVxuICBpblxuICBjcmVhdGUgbG9vcFxuOztcblxubGV0IGZpbHRlciB0IH5mID0gZmlsdGVyX21hcCB0IH5mOihmdW4geCAtPiBpZiBmIHggdGhlbiBTb21lIHggZWxzZSBOb25lKVxubGV0IHJldHVybiB4ID0gY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tOl8gLT4geClcbmxldCBtYXAgdCB+ZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZiAoZ2VuZXJhdGUgdCB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFwcGx5IHRmIHR4ID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGxldCBmID0gZ2VuZXJhdGUgdGYgfnNpemUgfnJhbmRvbSBpblxuICAgIGxldCB4ID0gZ2VuZXJhdGUgdHggfnNpemUgfnJhbmRvbSBpblxuICAgIGYgeClcbjs7XG5cbmxldCBiaW5kIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IHggPSBnZW5lcmF0ZSB0IH5zaXplIH5yYW5kb20gaW5cbiAgICBnZW5lcmF0ZSAoZiB4KSB+c2l6ZSB+cmFuZG9tKVxuOztcblxubGV0IGFsbCBsaXN0ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBMaXN0Lm1hcCBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcblxubGV0IGFsbF91bml0IGxpc3QgPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+IExpc3QuaXRlciBsaXN0IH5mOihnZW5lcmF0ZSB+c2l6ZSB+cmFuZG9tKSlcbjs7XG5cbm1vZHVsZSBGb3JfYXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBhcHBseSA9IGFwcGx5XG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGJvdGggPSBGb3JfYXBwbGljYXRpdmUuYm90aFxubGV0IG1hcDIgPSBGb3JfYXBwbGljYXRpdmUubWFwMlxubGV0IG1hcDMgPSBGb3JfYXBwbGljYXRpdmUubWFwM1xuXG5tb2R1bGUgQXBwbGljYXRpdmVfaW5maXggPSBGb3JfYXBwbGljYXRpdmUuQXBwbGljYXRpdmVfaW5maXhcbmluY2x1ZGUgQXBwbGljYXRpdmVfaW5maXhcblxubW9kdWxlIEZvcl9tb25hZCA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IGJpbmQgPSBiaW5kXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxubGV0IGlnbm9yZV9tID0gRm9yX21vbmFkLmlnbm9yZV9tXG5sZXQgam9pbiA9IEZvcl9tb25hZC5qb2luXG5cbm1vZHVsZSBNb25hZF9pbmZpeCA9IEZvcl9tb25hZC5Nb25hZF9pbmZpeFxuaW5jbHVkZSBNb25hZF9pbmZpeFxubW9kdWxlIExldF9zeW50YXggPSBGb3JfbW9uYWQuTGV0X3N5bnRheFxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBvZl9saXN0IGxpc3QgPVxuICBpZiBMaXN0LmlzX2VtcHR5IGxpc3RcbiAgdGhlbiBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2ZfbGlzdDogZW1wdHkgbGlzdFwiXTtcbiAgbGV0IGFycmF5ID0gQXJyYXkub2ZfbGlzdCBsaXN0IGluXG4gIGxldCBsbyA9IDAgaW5cbiAgbGV0IGhpID0gQXJyYXkubGVuZ3RoIGFycmF5IC0gMSBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbyB+aGkgaW5cbiAgICBhcnJheS4oaW5kZXgpKVxuOztcblxubGV0IHVuaW9uIGxpc3QgPSBqb2luIChvZl9saXN0IGxpc3QpXG5cbmxldCBvZl93ZWlnaHRlZF9saXN0IGFsaXN0ID1cbiAgaWYgTGlzdC5pc19lbXB0eSBhbGlzdFxuICB0aGVuIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vZl93ZWlnaHRlZF9saXN0OiBlbXB0eSBsaXN0XCJdO1xuICBsZXQgd2VpZ2h0cywgdmFsdWVzID0gTGlzdC51bnppcCBhbGlzdCBpblxuICBsZXQgdmFsdWVfYXJyYXkgPSBBcnJheS5vZl9saXN0IHZhbHVlcyBpblxuICBsZXQgdG90YWxfd2VpZ2h0LCBjdW11bGF0aXZlX3dlaWdodF9hcnJheSA9XG4gICAgbGV0IGFycmF5ID0gQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHZhbHVlX2FycmF5KSB+ZjooZnVuIF8gLT4gMC4pIGluXG4gICAgbGV0IHN1bSA9XG4gICAgICBMaXN0LmZvbGRpIHdlaWdodHMgfmluaXQ6MC4gfmY6KGZ1biBpbmRleCBhY2Mgd2VpZ2h0IC0+XG4gICAgICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIHdlaWdodClcbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5vdCBmaW5pdGVcIlxuICAgICAgICAgICAgICAgICh3ZWlnaHQgOiBmbG9hdCldO1xuICAgICAgICBpZiBGbG9hdC4oIDwgKSB3ZWlnaHQgMC5cbiAgICAgICAgdGhlblxuICAgICAgICAgIEVycm9yLnJhaXNlX3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogd2VpZ2h0IGlzIG5lZ2F0aXZlXCJcbiAgICAgICAgICAgICAgICAod2VpZ2h0IDogZmxvYXQpXTtcbiAgICAgICAgbGV0IGN1bXVsYXRpdmUgPSBhY2MgKy4gd2VpZ2h0IGluXG4gICAgICAgIGFycmF5LihpbmRleCkgPC0gY3VtdWxhdGl2ZTtcbiAgICAgICAgY3VtdWxhdGl2ZSlcbiAgICBpblxuICAgIGlmIEZsb2F0LiggPD0gKSBzdW0gMC5cbiAgICB0aGVuXG4gICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iub2Zfd2VpZ2h0ZWRfbGlzdDogdG90YWwgd2VpZ2h0IGlzIHplcm9cIl07XG4gICAgc3VtLCBhcnJheVxuICBpblxuICBjcmVhdGUgKGZ1biB+c2l6ZTpfIH5yYW5kb20gLT5cbiAgICBsZXQgY2hvaWNlID0gU3BsaXR0YWJsZV9yYW5kb20uZmxvYXQgcmFuZG9tIH5sbzowLiB+aGk6dG90YWxfd2VpZ2h0IGluXG4gICAgbWF0Y2hcbiAgICAgIEFycmF5LmJpbmFyeV9zZWFyY2hcbiAgICAgICAgY3VtdWxhdGl2ZV93ZWlnaHRfYXJyYXlcbiAgICAgICAgfmNvbXBhcmU6RmxvYXQuY29tcGFyZVxuICAgICAgICBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvXG4gICAgICAgIGNob2ljZVxuICAgIHdpdGhcbiAgICB8IFNvbWUgaW5kZXggLT4gdmFsdWVfYXJyYXkuKGluZGV4KVxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UpXG47O1xuXG5sZXQgd2VpZ2h0ZWRfdW5pb24gYWxpc3QgPSBqb2luIChvZl93ZWlnaHRlZF9saXN0IGFsaXN0KVxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPiBnZW5lcmF0ZSAoZm9yY2UgbGF6eV90KSB+c2l6ZSB+cmFuZG9tKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2ZfZ2VuZXJhdG9yID1cbiAgbGV0IHJlYyBsYXp5X3QgPSBsYXp5IChvZl9nZW5lcmF0b3IgKG9mX2xhenkgbGF6eV90KSkgaW5cbiAgZm9yY2UgbGF6eV90XG47O1xuXG5sZXQgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgZml4ZWRfcG9pbnQgKGZ1biBzZWxmIC0+XG4gICAgbGV0IHJlY19saXN0ID1cbiAgICAgIExpc3QubWFwIChmIHNlbGYpIH5mOihmdW4gKHcsIHQpIC0+XG4gICAgICAgICggd1xuICAgICAgICAsIGxldCViaW5kIG4gPSBzaXplIGluXG4gICAgICAgICAgd2l0aF9zaXplIH5zaXplOihuIC0gMSkgdCApKVxuICAgIGluXG4gICAgaWYgTGlzdC5pc19lbXB0eSBub25yZWNfbGlzdCB8fCBMaXN0LmlzX2VtcHR5IHJlY19saXN0XG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iud2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uOiBsaXN0cyBtdXN0IGJlIG5vbi1lbXB0eVwiXTtcbiAgICBsZXQgbm9ucmVjX2dlbiA9IHdlaWdodGVkX3VuaW9uIG5vbnJlY19saXN0IGluXG4gICAgbGV0IHJlY19nZW4gPSB3ZWlnaHRlZF91bmlvbiAobm9ucmVjX2xpc3QgQCByZWNfbGlzdCkgaW5cbiAgICBtYXRjaCViaW5kIHNpemUgd2l0aFxuICAgIHwgMCAtPiBub25yZWNfZ2VuXG4gICAgfCBfIC0+IHJlY19nZW4pXG47O1xuXG5sZXQgcmVjdXJzaXZlX3VuaW9uIG5vbnJlY19saXN0IH5mID1cbiAgbGV0IHdlaWdodGVkIGxpc3QgPSBMaXN0Lm1hcCBsaXN0IH5mOihmdW4gdCAtPiAxLiwgdCkgaW5cbiAgd2VpZ2h0ZWRfcmVjdXJzaXZlX3VuaW9uICh3ZWlnaHRlZCBub25yZWNfbGlzdCkgfmY6KGZ1biBzZWxmIC0+IHdlaWdodGVkIChmIHNlbGYpKVxuOztcblxubGV0IHNpemVzID8obWluX2xlbmd0aCA9IDApID8obWF4X2xlbmd0aCA9IEludC5tYXhfdmFsdWUpICgpID1cbiAgY3JlYXRlIChmdW4gfnNpemUgfnJhbmRvbSAtPlxuICAgIGFzc2VydCAobWluX2xlbmd0aCA8PSBtYXhfbGVuZ3RoKTtcbiAgICBsZXQgdXBwZXJfYm91bmQgPSBtaW5fbGVuZ3RoICsgc2l6ZSBpblxuICAgIGxldCBtYXhfbGVuZ3RoID1cbiAgICAgIGlmIHVwcGVyX2JvdW5kID49IG1pbl9sZW5ndGggKCogZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdyAqKVxuICAgICAgdGhlbiBtaW4gbWF4X2xlbmd0aCB1cHBlcl9ib3VuZFxuICAgICAgZWxzZSBtYXhfbGVuZ3RoXG4gICAgaW5cbiAgICAoKiBwaWNrIGEgbGVuZ3RoLCB3ZWlnaHRlZCBsb3cgc28gdGhhdCBtb3N0IG9mIHRoZSBzaXplIGlzIHNwZW50IG9uIGVsZW1lbnRzICopXG4gICAgbGV0IGxlbiA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOm1pbl9sZW5ndGggfmhpOm1heF9sZW5ndGggaW5cbiAgICAoKiBpZiB0aGVyZSBhcmUgbm8gZWxlbWVudHMgcmV0dXJuIGFuIGVtcHR5IGFycmF5LCBvdGhlcndpc2UgcmV0dXJuIGEgbm9uLWVtcHR5IGFycmF5XG4gICAgICAgd2l0aCB0aGUgc2l6ZSBkaXN0cmlidXRlZCBhbW9uZyB0aGUgZWxlbWVudHMgKilcbiAgICBpZiBsZW4gPSAwXG4gICAgdGhlbiBbXVxuICAgIGVsc2UgKFxuICAgICAgbGV0IHNpemVzID0gQXJyYXkuaW5pdCBsZW4gfmY6KGZ1biBfIC0+IDApIGluXG4gICAgICBsZXQgcmVtYWluaW5nID0gc2l6ZSAtIChsZW4gLSBtaW5fbGVuZ3RoKSBpblxuICAgICAgbGV0IG1heF9pbmRleCA9IGxlbiAtIDEgaW5cbiAgICAgIGZvciBfID0gMSB0byByZW1haW5pbmcgZG9cbiAgICAgICAgKCogcGljayBhbiBpbmRleCwgd2VpZ2h0ZWQgbG93IHNvIHRoYXQgd2Ugc2VlIHVuYmFsYW5jZWQgZGlzdHJpYnV0aW9ucyBvZnRlbiAqKVxuICAgICAgICBsZXQgaW5kZXggPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQgcmFuZG9tIH5sbzowIH5oaTptYXhfaW5kZXggaW5cbiAgICAgICAgc2l6ZXMuKGluZGV4KSA8LSBzaXplcy4oaW5kZXgpICsgMVxuICAgICAgZG9uZTtcbiAgICAgICgqIHBlcm11dGUgdGhlIGFycmF5IHNvIHRoYXQgbm8gaW5kZXggaXMgZmF2b3JlZCBvdmVyIGFub3RoZXIgKilcbiAgICAgIGZvciBpID0gMCB0byBtYXhfaW5kZXggLSAxIGRvXG4gICAgICAgIGxldCBqID0gU3BsaXR0YWJsZV9yYW5kb20uaW50IHJhbmRvbSB+bG86aSB+aGk6bWF4X2luZGV4IGluXG4gICAgICAgIEFycmF5LnN3YXAgc2l6ZXMgaSBqXG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IChBcnJheS5zdW0gKG1vZHVsZSBJbnQpIHNpemVzIH5mOkZuLmlkICsgKGxlbiAtIG1pbl9sZW5ndGgpID0gc2l6ZSk7XG4gICAgICBBcnJheS50b19saXN0IHNpemVzKSlcbjs7XG5cbmxldCB1bml0ID0gcmV0dXJuICgpXG5sZXQgYm9vbCA9IGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSlcbmxldCBvcHRpb24gdmFsdWVfdCA9IHVuaW9uIFsgcmV0dXJuIE5vbmU7IG1hcCB2YWx1ZV90IH5mOk9wdGlvbi5yZXR1cm4gXVxubGV0IGVpdGhlciBmc3RfdCBzbmRfdCA9IHVuaW9uIFsgbWFwIGZzdF90IH5mOkVpdGhlci5maXJzdDsgbWFwIHNuZF90IH5mOkVpdGhlci5zZWNvbmQgXVxuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICBtYXAgKGVpdGhlciBva190IGVycl90KSB+ZjooZnVuY3Rpb25cbiAgICB8IEZpcnN0IG9rIC0+IE9rIG9rXG4gICAgfCBTZWNvbmQgZXJyIC0+IEVycm9yIGVycilcbjs7XG5cbmxldCBsaXN0X2dlbmVyaWMgP21pbl9sZW5ndGggP21heF9sZW5ndGggZWx0X2dlbiA9XG4gIGxldCViaW5kIHNpemVzID0gc2l6ZXMgP21pbl9sZW5ndGggP21heF9sZW5ndGggKCkgaW5cbiAgTGlzdC5tYXAgc2l6ZXMgfmY6KGZ1biBzaXplIC0+IHdpdGhfc2l6ZSB+c2l6ZSBlbHRfZ2VuKSB8PiBhbGxcbjs7XG5cbmxldCBsaXN0IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgZWx0X2dlblxubGV0IGxpc3Rfbm9uX2VtcHR5IGVsdF9nZW4gPSBsaXN0X2dlbmVyaWMgfm1pbl9sZW5ndGg6MSBlbHRfZ2VuXG5cbmxldCBsaXN0X3dpdGhfbGVuZ3RoIGVsdF9nZW4gfmxlbmd0aCA9XG4gIGxpc3RfZ2VuZXJpYyB+bWluX2xlbmd0aDpsZW5ndGggfm1heF9sZW5ndGg6bGVuZ3RoIGVsdF9nZW5cbjs7XG5cbmxldCBsaXN0X2ZpbHRlcmVkIGVsdHMgPVxuICBsZXQgZWx0cyA9IEFycmF5Lm9mX2xpc3QgZWx0cyBpblxuICBsZXQgbGVuZ3RoX29mX2lucHV0ID0gQXJyYXkubGVuZ3RoIGVsdHMgaW5cbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgbGV0IGxlbmd0aF9vZl9vdXRwdXQgPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzowIH5oaTpsZW5ndGhfb2ZfaW5wdXQgaW5cbiAgICBsZXQgaW5kaWNlcyA9IEFycmF5LmluaXQgbGVuZ3RoX29mX2lucHV0IH5mOkZuLmlkIGluXG4gICAgKCogQ2hvb3NlIFtsZW5ndGhfb2Zfb3V0cHV0XSByYW5kb20gdmFsdWVzIGluIHRoZSBwcmVmaXggb2YgW2luZGljZXNdLiAqKVxuICAgIGZvciBpID0gMCB0byBsZW5ndGhfb2Zfb3V0cHV0IC0gMSBkb1xuICAgICAgbGV0IGogPSBTcGxpdHRhYmxlX3JhbmRvbS5pbnQgcmFuZG9tIH5sbzppIH5oaToobGVuZ3RoX29mX2lucHV0IC0gMSkgaW5cbiAgICAgIEFycmF5LnN3YXAgaW5kaWNlcyBpIGpcbiAgICBkb25lO1xuICAgICgqIFNvcnQgdGhlIGNob3NlbiBpbmRpY2VzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZW9yZGVyIHRoZW0uICopXG4gICAgQXJyYXkuc29ydCBpbmRpY2VzIH5wb3M6MCB+bGVuOmxlbmd0aF9vZl9vdXRwdXQgfmNvbXBhcmU6SW50LmNvbXBhcmU7XG4gICAgKCogUmV0dXJuIHRoZSBjaG9zZW4gZWxlbWVudHMuICopXG4gICAgTGlzdC5pbml0IGxlbmd0aF9vZl9vdXRwdXQgfmY6KGZ1biBpIC0+IGVsdHMuKGluZGljZXMuKGkpKSkpXG47O1xuXG5sZXQgbGlzdF9wZXJtdXRhdGlvbnMgbGlzdCA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIGxldCBhcnJheSA9IEFycmF5Lm9mX2xpc3QgbGlzdCBpblxuICAgIGZvciBpID0gMSB0byBBcnJheS5sZW5ndGggYXJyYXkgLSAxIGRvXG4gICAgICBsZXQgaiA9IFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOjAgfmhpOmkgaW5cbiAgICAgIEFycmF5LnN3YXAgYXJyYXkgaSBqXG4gICAgZG9uZTtcbiAgICBBcnJheS50b19saXN0IGFycmF5KVxuOztcblxubGV0IGFycmF5IHQgPSBtYXAgKGxpc3QgdCkgfmY6QXJyYXkub2ZfbGlzdFxubGV0IHJlZiB0ID0gbWFwIHQgfmY6UmVmLmNyZWF0ZVxubGV0IGxhenlfdCB0ID0gbWFwIHQgfmY6TGF6eS5mcm9tX3ZhbFxuXG5sZXQgY2hhcl91bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPlxuICAgIFNwbGl0dGFibGVfcmFuZG9tLmludCByYW5kb20gfmxvOihDaGFyLnRvX2ludCBsbykgfmhpOihDaGFyLnRvX2ludCBoaSlcbiAgICB8PiBDaGFyLnVuc2FmZV9vZl9pbnQpXG47O1xuXG5sZXQgY2hhcl91cHBlcmNhc2UgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICdBJyAnWidcbmxldCBjaGFyX2xvd2VyY2FzZSA9IGNoYXJfdW5pZm9ybV9pbmNsdXNpdmUgJ2EnICd6J1xubGV0IGNoYXJfZGlnaXQgPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcwJyAnOSdcbmxldCBjaGFyX3ByaW50X3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlICcgJyAnfidcbmxldCBjaGFyX3VuaWZvcm0gPSBjaGFyX3VuaWZvcm1faW5jbHVzaXZlIENoYXIubWluX3ZhbHVlIENoYXIubWF4X3ZhbHVlXG5sZXQgY2hhcl9hbHBoYSA9IHVuaW9uIFsgY2hhcl9sb3dlcmNhc2U7IGNoYXJfdXBwZXJjYXNlIF1cblxubGV0IGNoYXJfYWxwaGFudW0gPVxuICB3ZWlnaHRlZF91bmlvblxuICAgICgqIE1vc3QgcGVvcGxlIHByb2JhYmx5IGV4cGVjdCB0aGlzIHRvIGJlIGEgdW5pZm9ybSBkaXN0cmlidXRpb24sIG5vdCB3ZWlnaHRlZFxuICAgICAgIHRvd2FyZCBkaWdpdHMgbGlrZSB3ZSB3b3VsZCBnZXQgd2l0aCBbdW5pb25dIChzaW5jZSB0aGVyZSBhcmUgZmV3ZXIgZGlnaXRzIHRoYW5cbiAgICAgICBsZXR0ZXJzKS4gKilcbiAgICBbIDUyLiwgY2hhcl9hbHBoYTsgMTAuLCBjaGFyX2RpZ2l0IF1cbjs7XG5cbmxldCBjaGFyX3doaXRlc3BhY2UgPSBvZl9saXN0IChMaXN0LmZpbHRlciBDaGFyLmFsbCB+ZjpDaGFyLmlzX3doaXRlc3BhY2UpXG5sZXQgY2hhcl9wcmludCA9IHdlaWdodGVkX3VuaW9uIFsgMTAuLCBjaGFyX2FscGhhbnVtOyAxLiwgY2hhcl9wcmludF91bmlmb3JtIF1cblxubGV0IGNoYXIgPVxuICB3ZWlnaHRlZF91bmlvblxuICAgIFsgMTAwLiwgY2hhcl9wcmludFxuICAgIDsgMTAuLCBjaGFyX3VuaWZvcm1cbiAgICA7IDEuLCByZXR1cm4gQ2hhci5taW5fdmFsdWVcbiAgICA7IDEuLCByZXR1cm4gQ2hhci5tYXhfdmFsdWVcbiAgICBdXG47O1xuXG4oKiBQcm9kdWNlcyBhIG51bWJlciBmcm9tIDAgb3IgMSB0byBzaXplICsgMSwgd2VpZ2h0ZWQgaGlnaC4gV2UgaGF2ZSBmb3VuZCB0aGlzXG4gICBkaXN0cmlidXRpb24gZW1waXJpY2FsbHkgdXNlZnVsIGZvciBzdHJpbmcgbGVuZ3Rocy4gKilcbmxldCBzbWFsbF9pbnQgfmFsbG93X3plcm8gPVxuICBjcmVhdGUgKGZ1biB+c2l6ZSB+cmFuZG9tIC0+XG4gICAgbGV0IGxvd2VyX2JvdW5kID0gaWYgYWxsb3dfemVybyB0aGVuIDAgZWxzZSAxIGluXG4gICAgbGV0IHVwcGVyX2JvdW5kID0gc2l6ZSArIDEgaW5cbiAgICBsZXQgd2VpZ2h0ZWRfbG93ID1cbiAgICAgIFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludCByYW5kb20gfmxvOjAgfmhpOih1cHBlcl9ib3VuZCAtIGxvd2VyX2JvdW5kKVxuICAgIGluXG4gICAgbGV0IHdlaWdodGVkX2hpZ2ggPSB1cHBlcl9ib3VuZCAtIHdlaWdodGVkX2xvdyBpblxuICAgIHdlaWdodGVkX2hpZ2gpXG47O1xuXG5sZXQgc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnQgPSBzbWFsbF9pbnQgfmFsbG93X3plcm86dHJ1ZVxubGV0IHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCA9IHNtYWxsX2ludCB+YWxsb3dfemVybzpmYWxzZVxuXG5tb2R1bGUgdHlwZSBJbnRfd2l0aF9yYW5kb20gPSBzaWdcbiAgaW5jbHVkZSBJbnQuU1xuXG4gIHZhbCB1bmlmb3JtIDogU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUudCAtPiBsbzp0IC0+IGhpOnQgLT4gdFxuICB2YWwgbG9nX3VuaWZvcm0gOiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS50IC0+IGxvOnQgLT4gaGk6dCAtPiB0XG5lbmRcblxubW9kdWxlIEZvcl9pbnRlZ2VyIChJbnRlZ2VyIDogSW50X3dpdGhfcmFuZG9tKSA9IHN0cnVjdFxuICBsZXQgdW5pZm9ybV9pbmNsdXNpdmUgbG8gaGkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBJbnRlZ2VyLnVuaWZvcm0gcmFuZG9tIH5sbyB+aGkpXG4gIDs7XG5cbiAgbGV0IGxvZ191bmlmb3JtX2luY2x1c2l2ZSBsbyBoaSA9XG4gICAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+IEludGVnZXIubG9nX3VuaWZvcm0gcmFuZG9tIH5sbyB+aGkpXG4gIDs7XG5cbiAgbGV0IG5vbl91bmlmb3JtIGYgbG8gaGkgPVxuICAgIHdlaWdodGVkX3VuaW9uIFsgMC4wNSwgcmV0dXJuIGxvOyAwLjA1LCByZXR1cm4gaGk7IDAuOSwgZiBsbyBoaSBdXG4gIDs7XG5cbiAgbGV0IGluY2x1c2l2ZSA9IG5vbl91bmlmb3JtIHVuaWZvcm1faW5jbHVzaXZlXG4gIGxldCBsb2dfaW5jbHVzaXZlID0gbm9uX3VuaWZvcm0gbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4gIGxldCB1bmlmb3JtX2FsbCA9IHVuaWZvcm1faW5jbHVzaXZlIEludGVnZXIubWluX3ZhbHVlIEludGVnZXIubWF4X3ZhbHVlXG5cbiAgbGV0IGFsbCA9XG4gICAgWyVtYXBcbiAgICAgIGxldCBuZWdhdGl2ZSA9IGJvb2xcbiAgICAgIGFuZCBtYWduaXR1ZGUgPSBsb2dfaW5jbHVzaXZlIEludGVnZXIuemVybyBJbnRlZ2VyLm1heF92YWx1ZSBpblxuICAgICAgaWYgbmVnYXRpdmUgdGhlbiBJbnRlZ2VyLmJpdF9ub3QgbWFnbml0dWRlIGVsc2UgbWFnbml0dWRlXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfaW50ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLmludFxuICAgIGxldCBsb2dfdW5pZm9ybSA9IFNwbGl0dGFibGVfcmFuZG9tLkxvZ191bmlmb3JtLmludFxuICBlbmQpXG5cbmxldCBpbnQgPSBGb3JfaW50LmFsbFxubGV0IGludF91bmlmb3JtID0gRm9yX2ludC51bmlmb3JtX2FsbFxubGV0IGludF9pbmNsdXNpdmUgPSBGb3JfaW50LmluY2x1c2l2ZVxubGV0IGludF91bmlmb3JtX2luY2x1c2l2ZSA9IEZvcl9pbnQudW5pZm9ybV9pbmNsdXNpdmVcbmxldCBpbnRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZVxubGV0IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfaW50LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX2ludDMyID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50MzJcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50MzJcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQzMlxuICBlbmQpXG5cbmxldCBpbnQzMiA9IEZvcl9pbnQzMi5hbGxcbmxldCBpbnQzMl91bmlmb3JtID0gRm9yX2ludDMyLnVuaWZvcm1fYWxsXG5sZXQgaW50MzJfaW5jbHVzaXZlID0gRm9yX2ludDMyLmluY2x1c2l2ZVxubGV0IGludDMyX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDMyLnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50MzJfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQzMi5sb2dfaW5jbHVzaXZlXG5sZXQgaW50MzJfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDMyLmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX2ludDYzID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjNcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjNcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2M1xuICBlbmQpXG5cbmxldCBpbnQ2MyA9IEZvcl9pbnQ2My5hbGxcbmxldCBpbnQ2M191bmlmb3JtID0gRm9yX2ludDYzLnVuaWZvcm1fYWxsXG5sZXQgaW50NjNfaW5jbHVzaXZlID0gRm9yX2ludDYzLmluY2x1c2l2ZVxubGV0IGludDYzX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2My5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDYzLmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX2ludDY0ID0gRm9yX2ludGVnZXIgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50NjRcblxuICAgIGxldCB1bmlmb3JtID0gU3BsaXR0YWJsZV9yYW5kb20uaW50NjRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5pbnQ2NFxuICBlbmQpXG5cbmxldCBpbnQ2NCA9IEZvcl9pbnQ2NC5hbGxcbmxldCBpbnQ2NF91bmlmb3JtID0gRm9yX2ludDY0LnVuaWZvcm1fYWxsXG5sZXQgaW50NjRfaW5jbHVzaXZlID0gRm9yX2ludDY0LmluY2x1c2l2ZVxubGV0IGludDY0X3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX2luY2x1c2l2ZSA9IEZvcl9pbnQ2NC5sb2dfaW5jbHVzaXZlXG5sZXQgaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX2ludDY0LmxvZ191bmlmb3JtX2luY2x1c2l2ZVxuXG5tb2R1bGUgRm9yX25hdGl2ZWludCA9IEZvcl9pbnRlZ2VyIChzdHJ1Y3RcbiAgICBpbmNsdWRlIE5hdGl2ZWludFxuXG4gICAgbGV0IHVuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5uYXRpdmVpbnRcbiAgICBsZXQgbG9nX3VuaWZvcm0gPSBTcGxpdHRhYmxlX3JhbmRvbS5Mb2dfdW5pZm9ybS5uYXRpdmVpbnRcbiAgZW5kKVxuXG5sZXQgbmF0aXZlaW50ID0gRm9yX25hdGl2ZWludC5hbGxcbmxldCBuYXRpdmVpbnRfdW5pZm9ybSA9IEZvcl9uYXRpdmVpbnQudW5pZm9ybV9hbGxcbmxldCBuYXRpdmVpbnRfaW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfdW5pZm9ybV9pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LnVuaWZvcm1faW5jbHVzaXZlXG5sZXQgbmF0aXZlaW50X2xvZ19pbmNsdXNpdmUgPSBGb3JfbmF0aXZlaW50LmxvZ19pbmNsdXNpdmVcbmxldCBuYXRpdmVpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlID0gRm9yX25hdGl2ZWludC5sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBmbG9hdF96ZXJvX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCAwLlxubGV0IGZsb2F0X3plcm9fbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIDAuXG5cbmxldCBmbG9hdF9tYXhfcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlID1cbiAgRmxvYXQub25lX3VscCBgRG93biBGbG9hdC5taW5fcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG47O1xuXG5sZXQgZmxvYXRfc3Vibm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5taW5fcG9zaXRpdmVfc3Vibm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWluX3N1Ym5vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgRmxvYXQubWluX3Bvc2l0aXZlX3N1Ym5vcm1hbF92YWx1ZVxubGV0IGZsb2F0X21heF9zdWJub3JtYWxfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIGZsb2F0X21heF9wb3NpdGl2ZV9zdWJub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlID0gRmxvYXQubWF4X2Zpbml0ZV92YWx1ZVxubGV0IGZsb2F0X21pbl9ub3JtYWxfZXhwb25lbnQgPSBGbG9hdC5pZWVlX2V4cG9uZW50IEZsb2F0Lm1pbl9wb3NpdGl2ZV9ub3JtYWxfdmFsdWVcbmxldCBmbG9hdF9tYXhfbm9ybWFsX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBmbG9hdF9tYXhfcG9zaXRpdmVfbm9ybWFsX3ZhbHVlXG5sZXQgZmxvYXRfbWF4X25vcm1hbF9tYW50aXNzYSA9IEZsb2F0LmllZWVfbWFudGlzc2EgZmxvYXRfbWF4X3Bvc2l0aXZlX25vcm1hbF92YWx1ZVxubGV0IGZsb2F0X2luZl9leHBvbmVudCA9IEZsb2F0LmllZWVfZXhwb25lbnQgRmxvYXQuaW5maW5pdHlcbmxldCBmbG9hdF9pbmZfbWFudGlzc2EgPSBGbG9hdC5pZWVlX21hbnRpc3NhIEZsb2F0LmluZmluaXR5XG5sZXQgZmxvYXRfbmFuX2V4cG9uZW50ID0gRmxvYXQuaWVlZV9leHBvbmVudCBGbG9hdC5uYW5cbmxldCBmbG9hdF9taW5fbmFuX21hbnRpc3NhID0gSW50NjMuc3VjYyBmbG9hdF9pbmZfbWFudGlzc2FcbmxldCBmbG9hdF9tYXhfbmFuX21hbnRpc3NhID0gZmxvYXRfbWF4X25vcm1hbF9tYW50aXNzYVxubGV0IGZsb2F0X251bV9tYW50aXNzYV9iaXRzID0gNTJcblxuKCogV2Ugd2VpZ2h0IG1hbnRpc3NhcyBzbyB0aGF0IFwiaW50ZWdlci1saWtlXCIgdmFsdWVzLCBhbmQgdmFsdWVzIHdpdGggb25seSBhIGZldyBkaWdpdHNcbiAgIHBhc3QgdGhlIGRlY2ltYWwsIGFyZSByZWFzb25hYmx5IGNvbW1vbi4gKilcbmxldCBmbG9hdF9ub3JtYWxfbWFudGlzc2EgPVxuICBsZXQlYmluZCBudW1fYml0cyA9IEZvcl9pbnQudW5pZm9ybV9pbmNsdXNpdmUgMCBmbG9hdF9udW1fbWFudGlzc2FfYml0cyBpblxuICBsZXQlbWFwIGJpdHMgPVxuICAgIEZvcl9pbnQ2My5pbmNsdXNpdmUgSW50NjMuemVybyAoSW50NjMucHJlZCAoSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgbnVtX2JpdHMpKVxuICBpblxuICBJbnQ2My5zaGlmdF9sZWZ0IGJpdHMgKEludC4oIC0gKSBmbG9hdF9udW1fbWFudGlzc2FfYml0cyBudW1fYml0cylcbjs7XG5cbmxldCBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9sb3cgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQlbWFwIG9mZnNldCA9IEZvcl9pbnQubG9nX2luY2x1c2l2ZSAwIChJbnQuKCAtICkgdXBwZXJfYm91bmQgbG93ZXJfYm91bmQpIGluXG4gIEludC4oICsgKSBsb3dlcl9ib3VuZCBvZmZzZXRcbjs7XG5cbmxldCBmbG9hdF9leHBvbmVudF93ZWlnaHRlZF9oaWdoIGxvd2VyX2JvdW5kIHVwcGVyX2JvdW5kID1cbiAgbGV0JW1hcCBvZmZzZXQgPSBGb3JfaW50LmxvZ19pbmNsdXNpdmUgMCAoSW50LiggLSApIHVwcGVyX2JvdW5kIGxvd2VyX2JvdW5kKSBpblxuICBJbnQuKCAtICkgdXBwZXJfYm91bmQgb2Zmc2V0XG47O1xuXG4oKiBXZSB3ZWlnaHQgZXhwb25lbnRzIHN1Y2ggdGhhdCB2YWx1ZXMgbmVhciAxIGFyZSBtb3JlIGxpa2VseS4gKilcbmxldCBmbG9hdF9leHBvbmVudCA9XG4gIGxldCBtaWRwb2ludCA9IEZsb2F0LmllZWVfZXhwb25lbnQgMS4gaW5cbiAgdW5pb25cbiAgICBbIGZsb2F0X2V4cG9uZW50X3dlaWdodGVkX2hpZ2ggZmxvYXRfbWluX25vcm1hbF9leHBvbmVudCBtaWRwb2ludFxuICAgIDsgZmxvYXRfZXhwb25lbnRfd2VpZ2h0ZWRfbG93IG1pZHBvaW50IGZsb2F0X21heF9ub3JtYWxfZXhwb25lbnRcbiAgICBdXG47O1xuXG5sZXQgZmxvYXRfemVybyA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4blxuICAgIH5uZWdhdGl2ZVxuICAgIH5leHBvbmVudDpmbG9hdF96ZXJvX2V4cG9uZW50XG4gICAgfm1hbnRpc3NhOmZsb2F0X3plcm9fbWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9zdWJub3JtYWwgPVxuICBsZXQlbWFwIG5lZ2F0aXZlID0gYm9vbFxuICBhbmQgZXhwb25lbnQgPSByZXR1cm4gZmxvYXRfc3Vibm9ybWFsX2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9XG4gICAgRm9yX2ludDYzLmxvZ19pbmNsdXNpdmUgZmxvYXRfbWluX3N1Ym5vcm1hbF9tYW50aXNzYSBmbG9hdF9tYXhfc3Vibm9ybWFsX21hbnRpc3NhXG4gIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4biB+bmVnYXRpdmUgfmV4cG9uZW50IH5tYW50aXNzYVxuOztcblxubGV0IGZsb2F0X25vcm1hbCA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sXG4gIGFuZCBleHBvbmVudCA9IGZsb2F0X2V4cG9uZW50XG4gIGFuZCBtYW50aXNzYSA9IGZsb2F0X25vcm1hbF9tYW50aXNzYSBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9pbmZpbml0ZSA9XG4gIGxldCVtYXAgbmVnYXRpdmUgPSBib29sIGluXG4gIEZsb2F0LmNyZWF0ZV9pZWVlX2V4blxuICAgIH5uZWdhdGl2ZVxuICAgIH5leHBvbmVudDpmbG9hdF9pbmZfZXhwb25lbnRcbiAgICB+bWFudGlzc2E6ZmxvYXRfaW5mX21hbnRpc3NhXG47O1xuXG5sZXQgZmxvYXRfbmFuID1cbiAgbGV0JW1hcCBuZWdhdGl2ZSA9IGJvb2xcbiAgYW5kIGV4cG9uZW50ID0gcmV0dXJuIGZsb2F0X25hbl9leHBvbmVudFxuICBhbmQgbWFudGlzc2EgPSBGb3JfaW50NjMuaW5jbHVzaXZlIGZsb2F0X21pbl9uYW5fbWFudGlzc2EgZmxvYXRfbWF4X25hbl9tYW50aXNzYSBpblxuICBGbG9hdC5jcmVhdGVfaWVlZV9leG4gfm5lZ2F0aXZlIH5leHBvbmVudCB+bWFudGlzc2Fcbjs7XG5cbmxldCBmbG9hdF9vZl9jbGFzcyBjID1cbiAgbWF0Y2ggKGMgOiBGbG9hdC5DbGFzcy50KSB3aXRoXG4gIHwgWmVybyAtPiBmbG9hdF96ZXJvXG4gIHwgU3Vibm9ybWFsIC0+IGZsb2F0X3N1Ym5vcm1hbFxuICB8IE5vcm1hbCAtPiBmbG9hdF9ub3JtYWxcbiAgfCBJbmZpbml0ZSAtPiBmbG9hdF9pbmZpbml0ZVxuICB8IE5hbiAtPiBmbG9hdF9uYW5cbjs7XG5cbmxldCBmbG9hdF93ZWlnaHRfb2ZfY2xhc3MgYyA9XG4gIG1hdGNoIChjIDogRmxvYXQuQ2xhc3MudCkgd2l0aFxuICB8IFplcm8gLT4gMS5cbiAgfCBTdWJub3JtYWwgLT4gMTAuXG4gIHwgTm9ybWFsIC0+IDEwMC5cbiAgfCBJbmZpbml0ZSAtPiAxLlxuICB8IE5hbiAtPiAxLlxuOztcblxubGV0IGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgZmlsdGVyID1cbiAgTGlzdC5maWx0ZXJfbWFwIEZsb2F0LkNsYXNzLmFsbCB+ZjooZnVuIGMgLT5cbiAgICBpZiBmaWx0ZXIgYyB0aGVuIFNvbWUgKGZsb2F0X3dlaWdodF9vZl9jbGFzcyBjLCBmbG9hdF9vZl9jbGFzcyBjKSBlbHNlIE5vbmUpXG4gIHw+IHdlaWdodGVkX3VuaW9uXG47O1xuXG5sZXQgZmxvYXRfZmluaXRlID1cbiAgZmxvYXRfbWF0Y2hpbmdfY2xhc3NlcyAoZnVuY3Rpb25cbiAgICB8IFplcm8gfCBTdWJub3JtYWwgfCBOb3JtYWwgLT4gdHJ1ZVxuICAgIHwgSW5maW5pdGUgfCBOYW4gLT4gZmFsc2UpXG47O1xuXG5sZXQgZmxvYXRfd2l0aG91dF9uYW4gPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgWmVybyB8IFN1Ym5vcm1hbCB8IE5vcm1hbCB8IEluZmluaXRlIC0+IHRydWVcbiAgICB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdCA9IGZsb2F0X21hdGNoaW5nX2NsYXNzZXMgKGZ1biBfIC0+IHRydWUpXG5cbmxldCBmbG9hdF9maW5pdGVfbm9uX3plcm8gPVxuICBmbG9hdF9tYXRjaGluZ19jbGFzc2VzIChmdW5jdGlvblxuICAgIHwgU3Vibm9ybWFsIHwgTm9ybWFsIC0+IHRydWVcbiAgICB8IFplcm8gfCBJbmZpbml0ZSB8IE5hbiAtPiBmYWxzZSlcbjs7XG5cbmxldCBmbG9hdF9zdHJpY3RseV9wb3NpdGl2ZSA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZV9ub25femVybyBpblxuICBGbG9hdC5hYnMgdFxuOztcblxubGV0IGZsb2F0X3N0cmljdGx5X25lZ2F0aXZlID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlX25vbl96ZXJvIGluXG4gIH4tLihGbG9hdC5hYnMgdClcbjs7XG5cbmxldCBmbG9hdF9wb3NpdGl2ZV9vcl96ZXJvID1cbiAgbGV0JW1hcCB0ID0gZmxvYXRfZmluaXRlIGluXG4gIEZsb2F0LmFicyB0XG47O1xuXG5sZXQgZmxvYXRfbmVnYXRpdmVfb3JfemVybyA9XG4gIGxldCVtYXAgdCA9IGZsb2F0X2Zpbml0ZSBpblxuICB+LS4oRmxvYXQuYWJzIHQpXG47O1xuXG5sZXQgZmxvYXRfdW5pZm9ybV9leGNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBsZXQgb3BlbiBGbG9hdC5PIGluXG4gIGlmIChub3QgKEZsb2F0LmlzX2Zpbml0ZSBsb3dlcl9ib3VuZCkpIHx8IG5vdCAoRmxvYXQuaXNfZmluaXRlIHVwcGVyX2JvdW5kKVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmxvYXQudW5pZm9ybV9leGNsdXNpdmU6IGJvdW5kcyBhcmUgbm90IGZpbml0ZVwiXG4gICAgICAgICAgKGxvd2VyX2JvdW5kIDogZmxvYXQpXG4gICAgICAgICAgKHVwcGVyX2JvdW5kIDogZmxvYXQpXTtcbiAgbGV0IGxvd2VyX2luY2x1c2l2ZSA9IEZsb2F0Lm9uZV91bHAgYFVwIGxvd2VyX2JvdW5kIGluXG4gIGxldCB1cHBlcl9pbmNsdXNpdmUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHVwcGVyX2JvdW5kIGluXG4gIGlmIGxvd2VyX2luY2x1c2l2ZSA+IHVwcGVyX2luY2x1c2l2ZVxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiRmxvYXQudW5pZm9ybV9leGNsdXNpdmU6IHJlcXVlc3RlZCByYW5nZSBpcyBlbXB0eVwiXG4gICAgICAgICAgKGxvd2VyX2JvdW5kIDogZmxvYXQpXG4gICAgICAgICAgKHVwcGVyX2JvdW5kIDogZmxvYXQpXTtcbiAgY3JlYXRlIChmdW4gfnNpemU6XyB+cmFuZG9tIC0+XG4gICAgU3BsaXR0YWJsZV9yYW5kb20uZmxvYXQgcmFuZG9tIH5sbzpsb3dlcl9pbmNsdXNpdmUgfmhpOnVwcGVyX2luY2x1c2l2ZSlcbjs7XG5cbmxldCBmbG9hdF9pbmNsdXNpdmUgbG93ZXJfYm91bmQgdXBwZXJfYm91bmQgPVxuICBpZiBGbG9hdC5lcXVhbCBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZFxuICB0aGVuIHJldHVybiBsb3dlcl9ib3VuZFxuICBlbHNlIGlmIEZsb2F0LiggPSApIChGbG9hdC5vbmVfdWxwIGBVcCBsb3dlcl9ib3VuZCkgdXBwZXJfYm91bmRcbiAgdGhlbiB1bmlvbiBbIHJldHVybiBsb3dlcl9ib3VuZDsgcmV0dXJuIHVwcGVyX2JvdW5kIF1cbiAgZWxzZVxuICAgIHdlaWdodGVkX3VuaW9uXG4gICAgICBbIDAuMDUsIHJldHVybiBsb3dlcl9ib3VuZFxuICAgICAgOyAwLjA1LCByZXR1cm4gdXBwZXJfYm91bmRcbiAgICAgIDsgMC45LCBmbG9hdF91bmlmb3JtX2V4Y2x1c2l2ZSBsb3dlcl9ib3VuZCB1cHBlcl9ib3VuZFxuICAgICAgXVxuOztcblxubGV0IHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoID1cbiAgbGlzdF93aXRoX2xlbmd0aCBjaGFyX2dlbiB+bGVuZ3RoIHw+IG1hcCB+ZjpTdHJpbmcub2ZfY2hhcl9saXN0XG47O1xuXG5sZXQgc3RyaW5nX29mIGNoYXJfZ2VuID1cbiAgYmluZCBzbWFsbF9wb3NpdGl2ZV9vcl96ZXJvX2ludCB+ZjooZnVuIGxlbmd0aCAtPlxuICAgIHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoKVxuOztcblxubGV0IHN0cmluZ19ub25fZW1wdHlfb2YgY2hhcl9nZW4gPVxuICBiaW5kIHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludCB+ZjooZnVuIGxlbmd0aCAtPlxuICAgIHN0cmluZ193aXRoX2xlbmd0aF9vZiBjaGFyX2dlbiB+bGVuZ3RoKVxuOztcblxubGV0IHN0cmluZyA9IHN0cmluZ19vZiBjaGFyXG5sZXQgc3RyaW5nX25vbl9lbXB0eSA9IHN0cmluZ19ub25fZW1wdHlfb2YgY2hhclxubGV0IHN0cmluZ193aXRoX2xlbmd0aCB+bGVuZ3RoID0gc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXIgfmxlbmd0aFxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmdcblxubGV0IHNleHBfb2YgYXRvbSA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2VsZiAtPlxuICAgIGxldCViaW5kIHNpemUgPSBzaXplIGluXG4gICAgKCogY2hvb3NlIGEgbnVtYmVyIHdlaWdodGVkIGxvdyBzbyB3ZSBoYXZlIGEgZGVjcmVhc2luZywgYnV0IG5vdCB2YW5pc2hpbmcsIGNoYW5jZVxuICAgICAgIHRvIGdlbmVyYXRlIGF0b21zIGFzIHNpemUgZ3Jvd3MgKilcbiAgICBtYXRjaCViaW5kIEZvcl9pbnQubG9nX3VuaWZvcm1faW5jbHVzaXZlIDAgKHNpemUgKyAxKSB3aXRoXG4gICAgKCogZ2VuZXJhdGUgYW4gYXRvbSB1c2luZyB0aGUgZ2l2ZW4gc2l6ZSAqKVxuICAgIHwgMCAtPlxuICAgICAgbGV0JW1hcCBhdG9tID0gYXRvbSBpblxuICAgICAgU2V4cC5BdG9tIGF0b21cbiAgICAoKiByZWx5aW5nIG9uIFtMaXN0Lmdlbl0gdG8gZGlzdHJpYnV0ZSBbc2l6ZV0gb3ZlciBzdWItc2V4cHMgKilcbiAgICB8IF8gLT5cbiAgICAgIGxldCVtYXAgbGlzdCA9IGxpc3Qgc2VsZiBpblxuICAgICAgU2V4cC5MaXN0IGxpc3QpXG47O1xuXG5sZXQgc2V4cCA9IHNleHBfb2Ygc3RyaW5nXG5cbmxldCBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW4gPVxuICBsZXQlYmluZCBrZXlzID0gbGlzdCBrZXlfZ2VuIGluXG4gIGxldCBrZXlzID0gTGlzdC5kZWR1cF9hbmRfc29ydCBrZXlzIH5jb21wYXJlOmNvbXBhcmF0b3IuQ29tcGFyYXRvci5jb21wYXJlIGluXG4gIGxldCViaW5kIGRhdGEgPSBsaXN0X3dpdGhfbGVuZ3RoIGRhdGFfZ2VuIH5sZW5ndGg6KExpc3QubGVuZ3RoIGtleXMpIGluXG4gIHJldHVybiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9hbGlzdF9leG4gfmNvbXBhcmF0b3IgKExpc3QuemlwX2V4biBrZXlzIGRhdGEpKVxuOztcblxubGV0IHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlbiA9XG4gIG1hcCAobGlzdCBlbHRfZ2VuKSB+ZjooU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5vZl9saXN0IH5jb21wYXJhdG9yKVxuOztcblxubGV0IGNvbXBhcmF0b3Jfb2ZfbVxuICAgICAgKHR5cGUgYSBjKVxuICAgICAgKG1vZHVsZSBNIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjKVxuICA9XG4gIE0uY29tcGFyYXRvclxuOztcblxubGV0IG1hcF90X20gbSBrZXlfZ2VuIGRhdGFfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV9nZW4gZGF0YV9nZW5cbiAgfD4gbWFwIH5mOihNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IHNldF90X20gbSBlbHRfZ2VuID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yX29mX20gbSBpblxuICBzZXRfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGVsdF9nZW5cbiAgfD4gbWFwIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuOztcblxubGV0IGJpZ2FycmF5MSB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JW1hcCBlbHRzID0gbGlzdCB0IGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBkaW0gPSBBcnJheS5sZW5ndGggZWx0cyBpblxuICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IGRpbSB+ZjooZnVuIGkgLT4gZWx0cy4oaSAtIG9mZnNldCkpXG47O1xuXG5sZXQgYmlnc3RyaW5nID0gYmlnYXJyYXkxIGNoYXIgQ2hhciBDX2xheW91dFxubGV0IGZsb2F0MzJfdmVjID0gYmlnYXJyYXkxIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X3ZlYyA9IGJpZ2FycmF5MSBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbmxldCBiaWdhcnJheTJfZGltID1cbiAgbWF0Y2glYmluZCBzaXplIHdpdGhcbiAgfCAwIC0+IHJldHVybiAoMCwgMClcbiAgfCBtYXhfdG90YWxfc2l6ZSAtPlxuICAgIGxldCViaW5kIGEgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZV0sIHdlaWdodGVkIGxvdyB0byBnaXZlIHRoZSBvdGhlclxuICAgICAgICAgZGltZW5zaW9uIGEgZ29vZCBjaGFuY2Ugb2YgYmVpbmcgY29tcGFyYXRpdmVseSBoaWdoICopXG4gICAgICBpbnRfbG9nX3VuaWZvcm1faW5jbHVzaXZlIDEgbWF4X3RvdGFsX3NpemVcbiAgICBpblxuICAgIGxldCViaW5kIGIgPVxuICAgICAgKCogY2hvb3NlIGEgZGltZW5zaW9uIHVwIHRvIFttYXhfdG90YWxfc2l6ZSAvIGFdLCB3ZWlnaHRlZCBoaWdoIHRvIHJlYWNoIGNsb3NlIHRvXG4gICAgICAgICBbbWF4X3RvdGFsX3NpemVdIG1vc3Qgb2YgdGhlIHRpbWUgKilcbiAgICAgIGxldCBtYXhfYiA9IG1heF90b3RhbF9zaXplIC8gYSBpblxuICAgICAgbGV0JW1hcCBiX3dlaWdodGVkX2xvdyA9IGludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmUgMCBtYXhfYiBpblxuICAgICAgbWF4X2IgLSBiX3dlaWdodGVkX2xvd1xuICAgIGluXG4gICAgKCogYXZvaWQgYW55IHNrZXcgb2YgYSB2cyBiIGJ5IHJhbmRvbWx5IHN3YXBwaW5nICopXG4gICAgaWYlbWFwIGJvb2wgdGhlbiBhLCBiIGVsc2UgYiwgYVxuOztcblxubGV0IGJpZ2FycmF5MiB0IGtpbmQgbGF5b3V0ID1cbiAgbGV0JWJpbmQgZGltMSwgZGltMiA9IGJpZ2FycmF5Ml9kaW0gaW5cbiAgbGV0JW1hcCBlbHRzID0gbGlzdF93aXRoX2xlbmd0aCB+bGVuZ3RoOmRpbTEgKGxpc3Rfd2l0aF9sZW5ndGggfmxlbmd0aDpkaW0yIHQpIGluXG4gIGxldCBlbHRzID0gQXJyYXkub2ZfbGlzdF9tYXAgfmY6QXJyYXkub2ZfbGlzdCBlbHRzIGluXG4gIGxldCBvZmZzZXQgPSBCaWdhcnJheV9oZWxwZXJzLkxheW91dC5vZmZzZXQgbGF5b3V0IGluXG4gIEJpZ2FycmF5X2hlbHBlcnMuQXJyYXkyLmluaXQga2luZCBsYXlvdXQgZGltMSBkaW0yIH5mOihmdW4gaSBqIC0+XG4gICAgZWx0cy4oaSAtIG9mZnNldCkuKGogLSBvZmZzZXQpKVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gYmlnYXJyYXkyIGZsb2F0IEZsb2F0MzIgRm9ydHJhbl9sYXlvdXRcbmxldCBmbG9hdDY0X21hdCA9IGJpZ2FycmF5MiBmbG9hdCBGbG9hdDY0IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBEZWJ1ZyA9IHN0cnVjdFxuICBsZXQgY292ZXJhZ2VcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgQ21wIDogQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHNhbXBsZVxuICAgID1cbiAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICBzYW1wbGVcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgKG1vZHVsZSBDbXApKVxuICAgICAgfmY6KGZ1biBjb3VudHMgdmFsdWUgLT5cbiAgICAgICAgTWFwLnVwZGF0ZSBjb3VudHMgdmFsdWUgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgICB8IFNvbWUgcHJldiAtPiBwcmV2ICsgMSkpXG4gIDs7XG5cbiAgbGV0IG1vbml0b3IgdCB+ZiA9XG4gICAgbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgZiB2YWx1ZTtcbiAgICAgIHZhbHVlKVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiA2NC1iaXQgaW50ZWdlcnMuXG5cbiAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIG9wZXJhdGlvbnMgb24gdGhlIHR5cGUgW2ludDY0XSBvZlxuICAgc2lnbmVkIDY0LWJpdCBpbnRlZ2Vycy4gIFVubGlrZSB0aGUgYnVpbHQtaW4gW2ludF0gdHlwZSxcbiAgIHRoZSB0eXBlIFtpbnQ2NF0gaXMgZ3VhcmFudGVlZCB0byBiZSBleGFjdGx5IDY0LWJpdCB3aWRlIG9uIGFsbFxuICAgcGxhdGZvcm1zLiAgQWxsIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBvdmVyIFtpbnQ2NF0gYXJlIHRha2VuXG4gICBtb2R1bG8gMnteNjR9XG5cbiAgIFBlcmZvcm1hbmNlIG5vdGljZTogdmFsdWVzIG9mIHR5cGUgW2ludDY0XSBvY2N1cHkgbW9yZSBtZW1vcnlcbiAgIHNwYWNlIHRoYW4gdmFsdWVzIG9mIHR5cGUgW2ludF0sIGFuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMgb25cbiAgIFtpbnQ2NF0gYXJlIGdlbmVyYWxseSBzbG93ZXIgdGhhbiB0aG9zZSBvbiBbaW50XS4gIFVzZSBbaW50NjRdXG4gICBvbmx5IHdoZW4gdGhlIGFwcGxpY2F0aW9uIHJlcXVpcmVzIGV4YWN0IDY0LWJpdCBhcml0aG1ldGljLlxuXG4gICAgTGl0ZXJhbHMgZm9yIDY0LWJpdCBpbnRlZ2VycyBhcmUgc3VmZml4ZWQgYnkgTDpcbiAgICB7W1xuICAgICAgbGV0IHplcm86IGludDY0ID0gMExcbiAgICAgIGxldCBvbmU6IGludDY0ID0gMUxcbiAgICAgIGxldCBtX29uZTogaW50NjQgPSAtMUxcbiAgICBdfVxuKilcblxudmFsIHplcm8gOiBpbnQ2NFxuKCoqIFRoZSA2NC1iaXQgaW50ZWdlciAwLiAqKVxuXG52YWwgb25lIDogaW50NjRcbigqKiBUaGUgNjQtYml0IGludGVnZXIgMS4gKilcblxudmFsIG1pbnVzX29uZSA6IGludDY0XG4oKiogVGhlIDY0LWJpdCBpbnRlZ2VyIC0xLiAqKVxuXG5leHRlcm5hbCBuZWcgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X25lZ1wiXG4oKiogVW5hcnkgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIGFkZCA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfYWRkXCJcbigqKiBBZGRpdGlvbi4gKilcblxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuKCoqIFN1YnRyYWN0aW9uLiAqKVxuXG5leHRlcm5hbCBtdWwgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X211bFwiXG4oKiogTXVsdGlwbGljYXRpb24uICopXG5cbmV4dGVybmFsIGRpdiA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfZGl2XCJcbigqKiBJbnRlZ2VyIGRpdmlzaW9uLlxuICAgQHJhaXNlIERpdmlzaW9uX2J5X3plcm8gaWYgdGhlIHNlY29uZFxuICAgYXJndW1lbnQgaXMgemVyby4gIFRoaXMgZGl2aXNpb24gcm91bmRzIHRoZSByZWFsIHF1b3RpZW50IG9mXG4gICBpdHMgYXJndW1lbnRzIHRvd2FyZHMgemVybywgYXMgc3BlY2lmaWVkIGZvciB7IVN0ZGxpYi4oLyl9LiAqKVxuXG52YWwgdW5zaWduZWRfZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjRcbigqKiBTYW1lIGFzIHshZGl2fSwgZXhjZXB0IHRoYXQgYXJndW1lbnRzIGFuZCByZXN1bHQgYXJlIGludGVycHJldGVkIGFzIHtlXG4gICAgdW5zaWduZWR9IDY0LWJpdCBpbnRlZ2Vycy5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuKCoqIEludGVnZXIgcmVtYWluZGVyLiAgSWYgW3ldIGlzIG5vdCB6ZXJvLCB0aGUgcmVzdWx0XG4gICBvZiBbSW50NjQucmVtIHggeV0gc2F0aXNmaWVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydHk6XG4gICBbeCA9IEludDY0LmFkZCAoSW50NjQubXVsIChJbnQ2NC5kaXYgeCB5KSB5KSAoSW50NjQucmVtIHggeSldLlxuICAgSWYgW3kgPSAwXSwgW0ludDY0LnJlbSB4IHldIHJhaXNlcyBbRGl2aXNpb25fYnlfemVyb10uICopXG5cbnZhbCB1bnNpZ25lZF9yZW0gOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NFxuKCoqIFNhbWUgYXMgeyFyZW19LCBleGNlcHQgdGhhdCBhcmd1bWVudHMgYW5kIHJlc3VsdCBhcmUgaW50ZXJwcmV0ZWQgYXMge2VcbiAgICB1bnNpZ25lZH0gNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgc3VjYyA6IGludDY0IC0+IGludDY0XG4oKiogU3VjY2Vzc29yLiAgW0ludDY0LnN1Y2MgeF0gaXMgW0ludDY0LmFkZCB4IEludDY0Lm9uZV0uICopXG5cbnZhbCBwcmVkIDogaW50NjQgLT4gaW50NjRcbigqKiBQcmVkZWNlc3Nvci4gIFtJbnQ2NC5wcmVkIHhdIGlzIFtJbnQ2NC5zdWIgeCBJbnQ2NC5vbmVdLiAqKVxuXG52YWwgYWJzIDogaW50NjQgLT4gaW50NjRcbigqKiBbYWJzIHhdIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBbeF0uIE9uIFttaW5faW50XSB0aGlzXG4gICBpcyBbbWluX2ludF0gaXRzZWxmIGFuZCB0aHVzIHJlbWFpbnMgbmVnYXRpdmUuICopXG5cbnZhbCBtYXhfaW50IDogaW50NjRcbigqKiBUaGUgZ3JlYXRlc3QgcmVwcmVzZW50YWJsZSA2NC1iaXQgaW50ZWdlciwgMnteNjN9IC0gMS4gKilcblxudmFsIG1pbl9pbnQgOiBpbnQ2NFxuKCoqIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIDY0LWJpdCBpbnRlZ2VyLCAtMnteNjN9LiAqKVxuXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X2FuZFwiXG4oKiogQml0d2lzZSBsb2dpY2FsIGFuZC4gKilcblxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgb3IuICopXG5cbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbigqKiBCaXR3aXNlIGxvZ2ljYWwgZXhjbHVzaXZlIG9yLiAqKVxuXG52YWwgbG9nbm90IDogaW50NjQgLT4gaW50NjRcbigqKiBCaXR3aXNlIGxvZ2ljYWwgbmVnYXRpb24uICopXG5cbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuKCoqIFtJbnQ2NC5zaGlmdF9sZWZ0IHggeV0gc2hpZnRzIFt4XSB0byB0aGUgbGVmdCBieSBbeV0gYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50NjQgLT4gaW50IC0+IGludDY0ID0gXCIlaW50NjRfYXNyXCJcbigqKiBbSW50NjQuc2hpZnRfcmlnaHQgeCB5XSBzaGlmdHMgW3hdIHRvIHRoZSByaWdodCBieSBbeV0gYml0cy5cbiAgIFRoaXMgaXMgYW4gYXJpdGhtZXRpYyBzaGlmdDogdGhlIHNpZ24gYml0IG9mIFt4XSBpcyByZXBsaWNhdGVkXG4gICBhbmQgaW5zZXJ0ZWQgaW4gdGhlIHZhY2F0ZWQgYml0cy5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc3JcIlxuKCoqIFtJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggeV0gc2hpZnRzIFt4XSB0byB0aGUgcmlnaHQgYnkgW3ldIGJpdHMuXG4gICBUaGlzIGlzIGEgbG9naWNhbCBzaGlmdDogemVyb2VzIGFyZSBpbnNlcnRlZCBpbiB0aGUgdmFjYXRlZCBiaXRzXG4gICByZWdhcmRsZXNzIG9mIHRoZSBzaWduIG9mIFt4XS5cbiAgIFRoZSByZXN1bHQgaXMgdW5zcGVjaWZpZWQgaWYgW3kgPCAwXSBvciBbeSA+PSA2NF0uICopXG5cbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludFwiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gaW50ZWdlciAodHlwZSBbaW50XSkgdG8gYSA2NC1iaXQgaW50ZWdlclxuICAgICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQgOiBpbnQ2NCAtPiBpbnQgPSBcIiVpbnQ2NF90b19pbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFuXG4gICBpbnRlZ2VyICh0eXBlIFtpbnRdKS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjYzfSwgaS5lLiB0aGUgaGlnaC1vcmRlciBiaXQgaXMgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAgT24gMzItYml0IHBsYXRmb3JtcywgdGhlIDY0LWJpdCBpbnRlZ2VyXG4gICBpcyB0YWtlbiBtb2R1bG8gMnteMzF9LCBpLmUuIHRoZSB0b3AgMzMgYml0cyBhcmUgbG9zdFxuICAgZHVyaW5nIHRoZSBjb252ZXJzaW9uLiAqKVxuXG52YWwgdW5zaWduZWRfdG9faW50IDogaW50NjQgLT4gaW50IG9wdGlvblxuKCoqIFNhbWUgYXMgeyF0b19pbnR9LCBidXQgaW50ZXJwcmV0cyB0aGUgYXJndW1lbnQgYXMgYW4ge2UgdW5zaWduZWR9IGludGVnZXIuXG4gICAgUmV0dXJucyBbTm9uZV0gaWYgdGhlIHVuc2lnbmVkIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjYW5ub3QgZml0IGludG8gYW5cbiAgICBbaW50XS5cblxuICAgIEBzaW5jZSA0LjA4LjAgKilcblxuZXh0ZXJuYWwgb2ZfZmxvYXQgOiBmbG9hdCAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gYSA2NC1iaXQgaW50ZWdlcixcbiAgIGRpc2NhcmRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCAodHJ1bmNhdGUgdG93YXJkcyAwKS5cbiAgIElmIHRoZSB0cnVuY2F0ZWQgZmxvYXRpbmctcG9pbnQgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHJhbmdlXG4gICBcXFt7IUludDY0Lm1pbl9pbnR9LCB7IUludDY0Lm1heF9pbnR9XFxdLCBubyBleGNlcHRpb24gaXMgcmFpc2VkLCBhbmRcbiAgIGFuIHVuc3BlY2lmaWVkLCBwbGF0Zm9ybS1kZXBlbmRlbnQgaW50ZWdlciBpcyByZXR1cm5lZC4gKilcblxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF90b19mbG9hdFwiIFwiY2FtbF9pbnQ2NF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciB0byBhIGZsb2F0aW5nLXBvaW50IG51bWJlci4gKilcblxuXG5leHRlcm5hbCBvZl9pbnQzMiA6IGludDMyIC0+IGludDY0ID0gXCIlaW50NjRfb2ZfaW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pXG4gICB0byBhIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pLiAqKVxuXG5leHRlcm5hbCB0b19pbnQzMiA6IGludDY0IC0+IGludDMyID0gXCIlaW50NjRfdG9faW50MzJcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIDY0LWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQ2NF0pIHRvIGFcbiAgIDMyLWJpdCBpbnRlZ2VyICh0eXBlIFtpbnQzMl0pLiBUaGUgNjQtYml0IGludGVnZXJcbiAgIGlzIHRha2VuIG1vZHVsbyAye14zMn0sIGkuZS4gdGhlIHRvcCAzMiBiaXRzIGFyZSBsb3N0XG4gICBkdXJpbmcgdGhlIGNvbnZlcnNpb24uICAqKVxuXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuKCoqIENvbnZlcnQgdGhlIGdpdmVuIG5hdGl2ZSBpbnRlZ2VyICh0eXBlIFtuYXRpdmVpbnRdKVxuICAgdG8gYSA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKS4gKilcblxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcbigqKiBDb252ZXJ0IHRoZSBnaXZlbiA2NC1iaXQgaW50ZWdlciAodHlwZSBbaW50NjRdKSB0byBhXG4gICBuYXRpdmUgaW50ZWdlci4gIE9uIDMyLWJpdCBwbGF0Zm9ybXMsIHRoZSA2NC1iaXQgaW50ZWdlclxuICAgaXMgdGFrZW4gbW9kdWxvIDJ7XjMyfS4gIE9uIDY0LWJpdCBwbGF0Zm9ybXMsXG4gICB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKilcblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDY0ID0gXCJjYW1sX2ludDY0X29mX3N0cmluZ1wiXG4oKiogQ29udmVydCB0aGUgZ2l2ZW4gc3RyaW5nIHRvIGEgNjQtYml0IGludGVnZXIuXG4gICBUaGUgc3RyaW5nIGlzIHJlYWQgaW4gZGVjaW1hbCAoYnkgZGVmYXVsdCwgb3IgaWYgdGhlIHN0cmluZ1xuICAgYmVnaW5zIHdpdGggWzB1XSkgb3IgaW4gaGV4YWRlY2ltYWwsIG9jdGFsIG9yIGJpbmFyeSBpZiB0aGVcbiAgIHN0cmluZyBiZWdpbnMgd2l0aCBbMHhdLCBbMG9dIG9yIFswYl0gcmVzcGVjdGl2ZWx5LlxuXG4gICBUaGUgWzB1XSBwcmVmaXggcmVhZHMgdGhlIGlucHV0IGFzIGFuIHVuc2lnbmVkIGludGVnZXIgaW4gdGhlIHJhbmdlXG4gICBbWzAsIDIqSW50NjQubWF4X2ludCsxXV0uICBJZiB0aGUgaW5wdXQgZXhjZWVkcyB7IUludDY0Lm1heF9pbnR9XG4gICBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIHNpZ25lZCBpbnRlZ2VyXG4gICBbSW50NjQubWluX2ludCArIGlucHV0IC0gSW50NjQubWF4X2ludCAtIDFdLlxuXG4gICBUaGUgW19dICh1bmRlcnNjb3JlKSBjaGFyYWN0ZXIgY2FuIGFwcGVhciBhbnl3aGVyZSBpbiB0aGUgc3RyaW5nXG4gICBhbmQgaXMgaWdub3JlZC5cbiAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgbm90XG4gICBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludGVnZXIsIG9yIGlmIHRoZSBpbnRlZ2VyIHJlcHJlc2VudGVkXG4gICBleGNlZWRzIHRoZSByYW5nZSBvZiBpbnRlZ2VycyByZXByZXNlbnRhYmxlIGluIHR5cGUgW2ludDY0XS4gKilcblxudmFsIG9mX3N0cmluZ19vcHQ6IHN0cmluZyAtPiBpbnQ2NCBvcHRpb25cbigqKiBTYW1lIGFzIFtvZl9zdHJpbmddLCBidXQgcmV0dXJuIFtOb25lXSBpbnN0ZWFkIG9mIHJhaXNpbmcuXG4gICAgQHNpbmNlIDQuMDUgKilcblxudmFsIHRvX3N0cmluZyA6IGludDY0IC0+IHN0cmluZ1xuKCoqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGl0cyBhcmd1bWVudCwgaW4gZGVjaW1hbC4gKilcblxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDY0XG4gID0gXCJjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbigqKiBSZXR1cm4gdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBmbG9hdCBhY2NvcmRpbmdcbiAgIHRvIHRoZSBJRUVFIDc1NCBmbG9hdGluZy1wb2ludCAnZG91YmxlIGZvcm1hdCcgYml0IGxheW91dC5cbiAgIEJpdCA2MyBvZiB0aGUgcmVzdWx0IHJlcHJlc2VudHMgdGhlIHNpZ24gb2YgdGhlIGZsb2F0O1xuICAgYml0cyA2MiB0byA1MiByZXByZXNlbnQgdGhlIChiaWFzZWQpIGV4cG9uZW50OyBiaXRzIDUxIHRvIDBcbiAgIHJlcHJlc2VudCB0aGUgbWFudGlzc2EuICopXG5cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQ2NCAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG4oKiogUmV0dXJuIHRoZSBmbG9hdGluZy1wb2ludCBudW1iZXIgd2hvc2UgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24sXG4gICBhY2NvcmRpbmcgdG8gdGhlIElFRUUgNzU0IGZsb2F0aW5nLXBvaW50ICdkb3VibGUgZm9ybWF0JyBiaXQgbGF5b3V0LFxuICAgaXMgdGhlIGdpdmVuIFtpbnQ2NF0uICopXG5cbnR5cGUgdCA9IGludDY0XG4oKiogQW4gYWxpYXMgZm9yIHRoZSB0eXBlIG9mIDY0LWJpdCBpbnRlZ2Vycy4gKilcblxudmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBUaGUgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgNjQtYml0IGludGVnZXJzLCB3aXRoIHRoZSBzYW1lIHNwZWNpZmljYXRpb24gYXNcbiAgICB7IVN0ZGxpYi5jb21wYXJlfS4gIEFsb25nIHdpdGggdGhlIHR5cGUgW3RdLCB0aGlzIGZ1bmN0aW9uIFtjb21wYXJlXVxuICAgIGFsbG93cyB0aGUgbW9kdWxlIFtJbnQ2NF0gdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50IHRvIHRoZSBmdW5jdG9yc1xuICAgIHshU2V0Lk1ha2V9IGFuZCB7IU1hcC5NYWtlfS4gKilcblxudmFsIHVuc2lnbmVkX2NvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbigqKiBTYW1lIGFzIHshY29tcGFyZX0sIGV4Y2VwdCB0aGF0IGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMge2UgdW5zaWduZWR9XG4gICAgNjQtYml0IGludGVnZXJzLlxuXG4gICAgQHNpbmNlIDQuMDguMCAqKVxuXG52YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4oKiogVGhlIGVxdWFsIGZ1bmN0aW9uIGZvciBpbnQ2NHMuXG4gICAgQHNpbmNlIDQuMDMuMCAqKVxuXG52YWwgbWluOiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgc21hbGxlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4qKVxuXG52YWwgbWF4OiB0IC0+IHQgLT4gdFxuKCoqIFJldHVybiB0aGUgZ3JlYXRlciBvZiB0aGUgdHdvIGFyZ3VtZW50cy5cbiAgICBAc2luY2UgNC4xMy4wXG4gKilcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGF0b21pYyA6IF8gdFxuICB2YWwgY3JlYXRlIDogKCdhIC0+ICdhIFNlcXVlbmNlLnQpIC0+ICdhIHRcbiAgdmFsIHNocmluayA6ICdhIHQgLT4gJ2EgLT4gJ2EgU2VxdWVuY2UudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIC0+ICdhIFNlcXVlbmNlLnRcblxuICBsZXQgYXRvbWljIF8gPSBTZXF1ZW5jZS5lbXB0eVxuICBsZXQgY3JlYXRlID0gRm4uaWRcbiAgbGV0IHNocmluayA9IEZuLmlkXG5lbmRcblxuaW5jbHVkZSBUXG5cbmxldCBtYXAgdCB+ZiB+Zl9pbnZlcnNlID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxubGV0IGZpbHRlciB0IH5mID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5maWx0ZXIgfmYgKHNocmluayB0IHgpKVxuXG5sZXQgZmlsdGVyX21hcCB0IH5mIH5mX2ludmVyc2UgPVxuICBjcmVhdGUgKGZ1biB4IC0+IFNlcXVlbmNlLmZpbHRlcl9tYXAgfmYgKHNocmluayB0IChmX2ludmVyc2UgeCkpKVxuOztcblxubGV0IG9mX2xhenkgbGF6eV90ID0gY3JlYXRlIChmdW4geCAtPiBTZXF1ZW5jZS5vZl9sYXp5IChsYXp5IChzaHJpbmsgKGZvcmNlIGxhenlfdCkgeCkpKVxuXG5sZXQgZml4ZWRfcG9pbnQgb2Zfc2hyaW5rZXIgPVxuICBsZXQgcmVjIGxhenlfdCA9IGxhenkgKG9mX3Nocmlua2VyIChvZl9sYXp5IGxhenlfdCkpIGluXG4gIG9mX2xhenkgbGF6eV90XG47O1xuXG5sZXQgYm90aCBmc3RfdCBzbmRfdCA9XG4gIGNyZWF0ZSAoZnVuIChmc3QsIHNuZCkgLT5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgWyBTZXF1ZW5jZS5tYXAgKHNocmluayBmc3RfdCBmc3QpIH5mOihmdW4gZnN0IC0+IGZzdCwgc25kKVxuICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBzbmRfdCBzbmQpIH5mOihmdW4gc25kIC0+IGZzdCwgc25kKVxuICAgICAgXSlcbjs7XG5cbmxldCB1bml0ID0gYXRvbWljXG5sZXQgYm9vbCA9IGF0b21pY1xubGV0IGNoYXIgPSBhdG9taWNcbmxldCBpbnQgPSBhdG9taWNcbmxldCBpbnQzMiA9IGF0b21pY1xubGV0IGludDYzID0gYXRvbWljXG5sZXQgaW50NjQgPSBhdG9taWNcbmxldCBuYXRpdmVpbnQgPSBhdG9taWNcbmxldCBmbG9hdCA9IGF0b21pY1xuXG5sZXQgYmlnYXJyYXkxIHNyYyA9XG4gIGxldCBkaW0gPSBCaWdhcnJheS5BcnJheTEuZGltIHNyYyBpblxuICBtYXRjaCBkaW0gd2l0aFxuICB8IDAgLT4gU2VxdWVuY2UuZW1wdHlcbiAgfCBfIC0+XG4gICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTEua2luZCBzcmMgaW5cbiAgICBsZXQgbGF5b3V0ID0gQmlnYXJyYXkuQXJyYXkxLmxheW91dCBzcmMgaW5cbiAgICBsZXQgb2Zmc2V0ID0gQmlnYXJyYXlfaGVscGVycy5MYXlvdXQub2Zmc2V0IGxheW91dCBpblxuICAgIFNlcXVlbmNlLmluaXQgZGltIH5mOihmdW4gdG9fc2tpcCAtPlxuICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5pbml0IGtpbmQgbGF5b3V0IChkaW0gLSAxKSB+ZjooZnVuIGkgLT5cbiAgICAgICAgc3JjLntpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMX0pKVxuOztcblxubGV0IGJpZ3N0cmluZyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDMyX3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcbmxldCBmbG9hdDY0X3ZlYyA9IGNyZWF0ZSBiaWdhcnJheTFcblxubGV0IGJpZ2FycmF5MiA9XG4gIGxldCBtb2R1bGUgRGltcyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IGRpbTEgOiBpbnRcbiAgICAgIDsgZGltMiA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgIGxldCBjcmVhdGUgYSA9IEJpZ2FycmF5LkFycmF5Mi57IGRpbTEgPSBkaW0xIGE7IGRpbTIgPSBkaW0yIGEgfVxuICBlbmRcbiAgaW5cbiAgbGV0IHNocmluayBmaWVsZCBzcmMgPVxuICAgIGxldCBkaW1zID0gRGltcy5jcmVhdGUgc3JjIGluXG4gICAgbWF0Y2ggRmllbGQuZ2V0IGZpZWxkIGRpbXMgd2l0aFxuICAgIHwgMCAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGtpbmQgPSBCaWdhcnJheS5BcnJheTIua2luZCBzcmMgaW5cbiAgICAgIGxldCBsYXlvdXQgPSBCaWdhcnJheS5BcnJheTIubGF5b3V0IHNyYyBpblxuICAgICAgbGV0IG9mZnNldCA9IEJpZ2FycmF5X2hlbHBlcnMuTGF5b3V0Lm9mZnNldCBsYXlvdXQgaW5cbiAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIGRpbXMgfmY6SW50LnByZWQgaW5cbiAgICAgIFNlcXVlbmNlLmluaXQgKEZpZWxkLmdldCBmaWVsZCBkaW1zKSB+ZjooZnVuIHRvX3NraXAgLT5cbiAgICAgICAgbGV0IHRvX3NraXAgPSB0b19za2lwICsgb2Zmc2V0IGluXG4gICAgICAgIGxldCBza2lwIGkgPSBpZiBpIDwgdG9fc2tpcCB0aGVuIGkgZWxzZSBpICsgMSBpblxuICAgICAgICBCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5pbml0IGtpbmQgbGF5b3V0IGRpbTEgZGltMiB+ZjooZnVuIGRpbTEgZGltMiAtPlxuICAgICAgICAgIGxldCAoeyBkaW0xOyBkaW0yIH0gOiBEaW1zLnQpID0gRmllbGQubWFwIGZpZWxkIHsgZGltMTsgZGltMiB9IH5mOnNraXAgaW5cbiAgICAgICAgICBzcmMue2RpbTEsIGRpbTJ9KSlcbiAgaW5cbiAgZnVuIHNyYyAtPlxuICAgIFNlcXVlbmNlLnJvdW5kX3JvYmluIFsgc2hyaW5rIERpbXMuRmllbGRzLmRpbTEgc3JjOyBzaHJpbmsgRGltcy5GaWVsZHMuZGltMiBzcmMgXVxuOztcblxubGV0IGZsb2F0MzJfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxubGV0IGZsb2F0NjRfbWF0ID0gY3JlYXRlIGJpZ2FycmF5MlxuXG5sZXQgb3B0aW9uIHZhbHVlX3QgPVxuICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiBOb25lKVxuICAgICAgICAoU2VxdWVuY2UubWFwIH5mOk9wdGlvbi5yZXR1cm4gKHNocmluayB2YWx1ZV90IHZhbHVlKSkpXG47O1xuXG5sZXQgbGlzdCBlbHRfdCA9XG4gIGZpeGVkX3BvaW50IChmdW4gbGlzdF90IC0+XG4gICAgY3JlYXRlIChmdW5jdGlvblxuICAgICAgfCBbXSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiB0YWlsXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKHNocmluayBlbHRfdCBoZWFkKSB+ZjooZnVuIGhlYWQgLT4gaGVhZCA6OiB0YWlsKVxuICAgICAgICAgIDsgU2VxdWVuY2UubWFwIChzaHJpbmsgbGlzdF90IHRhaWwpIH5mOihmdW4gdGFpbCAtPiBoZWFkIDo6IHRhaWwpXG4gICAgICAgICAgXSkpXG47O1xuXG5sZXQgc3RyaW5nID0gbWFwIChsaXN0IGNoYXIpIH5mOlN0cmluZy5vZl9jaGFyX2xpc3QgfmZfaW52ZXJzZTpTdHJpbmcudG9fbGlzdFxubGV0IGJ5dGVzID0gbWFwIHN0cmluZyB+ZjpCeXRlcy5vZl9zdHJpbmcgfmZfaW52ZXJzZTpCeXRlcy50b19zdHJpbmdcbmxldCBhcnJheSB0ID0gbWFwIChsaXN0IHQpIH5mOkFycmF5Lm9mX2xpc3QgfmZfaW52ZXJzZTpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSBtYXAgdCB+ZjpSZWYuY3JlYXRlIH5mX2ludmVyc2U6UmVmLiggISApXG5sZXQgbGF6eV90IHQgPSBtYXAgdCB+ZjpMYXp5LmZyb21fdmFsIH5mX2ludmVyc2U6TGF6eS5mb3JjZVxuXG5sZXQgc2V4cCA9XG4gIGZpeGVkX3BvaW50IChmdW4gc2hyaW5rZXIgLT5cbiAgICBjcmVhdGUgKGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBfIC0+IFNlcXVlbmNlLmVtcHR5XG4gICAgICB8IFNleHAuTGlzdCBsIC0+XG4gICAgICAgIGxldCBzaHJpbmtfbGlzdCA9XG4gICAgICAgICAgc2hyaW5rIChsaXN0IHNocmlua2VyKSBsIHw+IFNlcXVlbmNlLm1hcCB+ZjooZnVuIGwgLT4gU2V4cC5MaXN0IGwpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzaHJpbmtfdHJlZSA9IFNlcXVlbmNlLm9mX2xpc3QgbCBpblxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIHNocmlua19saXN0OyBzaHJpbmtfdHJlZSBdKSlcbjs7XG5cbmxldCBlaXRoZXIgZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biBlaXRoZXIgLT5cbiAgICBtYXRjaCAoZWl0aGVyIDogXyBFaXRoZXIudCkgd2l0aFxuICAgIHwgRmlyc3QgZnN0IC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIGZzdF90IGZzdCkgfmY6RWl0aGVyLmZpcnN0XG4gICAgfCBTZWNvbmQgc25kIC0+IFNlcXVlbmNlLm1hcCAoc2hyaW5rIHNuZF90IHNuZCkgfmY6RWl0aGVyLnNlY29uZClcbjs7XG5cbmxldCByZXN1bHQgb2tfdCBlcnJfdCA9XG4gIG1hcFxuICAgIChlaXRoZXIgb2tfdCBlcnJfdClcbiAgICB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRmlyc3Qgb2sgLT4gT2sgb2tcbiAgICAgIHwgU2Vjb25kIGVyciAtPiBFcnJvciBlcnIpXG4gICAgfmZfaW52ZXJzZTooZnVuY3Rpb25cbiAgICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICAgIHwgRXJyb3IgZXJyIC0+IFNlY29uZCBlcnIpXG47O1xuXG5sZXQgbWFwX3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBrZXlfdCBkYXRhX3QgPVxuICBjcmVhdGUgKGZ1biB0cmVlIC0+XG4gICAgbGV0IGFsaXN0ID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19hbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3Bfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgYWxpc3QpIH5mOihmdW4gKGssIF8pIC0+XG4gICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUgaylcbiAgICBpblxuICAgIGxldCBzaHJpbmtfa2V5cyA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBsZXQgdHJlZSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUucmVtb3ZlIH5jb21wYXJhdG9yIHRyZWUga2V5IGluXG4gICAgICAgICAgIFNlcXVlbmNlLmZpbHRlcl9tYXAgKHNocmluayBrZXlfdCBrZXkpIH5mOihmdW4gc21hbGxlcl9rZXkgLT5cbiAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5hZGQgfmNvbXBhcmF0b3IgdHJlZSB+a2V5OnNtYWxsZXJfa2V5IH5kYXRhXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgYE9rIHRyZWUgLT4gU29tZSB0cmVlXG4gICAgICAgICAgICAgfCBgRHVwbGljYXRlIC0+IE5vbmUpKSlcbiAgICBpblxuICAgIGxldCBzaHJpbmtfZGF0YSA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAoTGlzdC5tYXAgYWxpc3QgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgICBTZXF1ZW5jZS5tYXAgKHNocmluayBkYXRhX3QgZGF0YSkgfmY6KGZ1biBzbWFsbGVyX2RhdGEgLT5cbiAgICAgICAgICAgICBNYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLnNldCB+Y29tcGFyYXRvciB0cmVlIH5rZXkgfmRhdGE6c21hbGxlcl9kYXRhKSkpXG4gICAgaW5cbiAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpbiBbIGRyb3Bfa2V5czsgc2hyaW5rX2tleXM7IHNocmlua19kYXRhIF0pXG47O1xuXG5sZXQgc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfdCA9XG4gIGNyZWF0ZSAoZnVuIHRyZWUgLT5cbiAgICBsZXQgbGlzdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fbGlzdCB0cmVlIGluXG4gICAgbGV0IGRyb3BfZWx0cyA9XG4gICAgICBTZXF1ZW5jZS5tYXAgKFNlcXVlbmNlLm9mX2xpc3QgbGlzdCkgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5yZW1vdmUgfmNvbXBhcmF0b3IgdHJlZSBlbHQpXG4gICAgaW5cbiAgICBsZXQgc2hyaW5rX2VsdHMgPVxuICAgICAgU2VxdWVuY2Uucm91bmRfcm9iaW5cbiAgICAgICAgKExpc3QubWFwIGxpc3QgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgbGV0IHRyZWUgPSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLnJlbW92ZSB+Y29tcGFyYXRvciB0cmVlIGVsdCBpblxuICAgICAgICAgICBTZXF1ZW5jZS5maWx0ZXJfbWFwIChzaHJpbmsgZWx0X3QgZWx0KSB+ZjooZnVuIHNtYWxsZXJfZWx0IC0+XG4gICAgICAgICAgICAgbWF0Y2ggU2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5tZW0gfmNvbXBhcmF0b3IgdHJlZSBzbWFsbGVyX2VsdCB3aXRoXG4gICAgICAgICAgICAgfCB0cnVlIC0+IE5vbmVcbiAgICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgICBTb21lIChTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlLmFkZCB0cmVlIH5jb21wYXJhdG9yIHNtYWxsZXJfZWx0KSkpKVxuICAgIGluXG4gICAgU2VxdWVuY2Uucm91bmRfcm9iaW4gWyBkcm9wX2VsdHM7IHNocmlua19lbHRzIF0pXG47O1xuXG5sZXQgbWFwX3Qga2V5X3QgZGF0YV90ID1cbiAgY3JlYXRlIChmdW4gbWFwX3QgLT5cbiAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG1hcF90IGluXG4gICAgbGV0IHQgPVxuICAgICAgbWFwXG4gICAgICAgIChtYXBfdHJlZV91c2luZ19jb21wYXJhdG9yIH5jb21wYXJhdG9yIGtleV90IGRhdGFfdClcbiAgICAgICAgfmY6KE1hcC5Vc2luZ19jb21wYXJhdG9yLm9mX3RyZWUgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5mX2ludmVyc2U6TWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuICAgIGluXG4gICAgc2hyaW5rIHQgbWFwX3QpXG47O1xuXG5sZXQgc2V0X3QgZWx0X3QgPVxuICBjcmVhdGUgKGZ1biBzZXRfdCAtPlxuICAgIGxldCBjb21wYXJhdG9yID0gU2V0LmNvbXBhcmF0b3Igc2V0X3QgaW5cbiAgICBsZXQgdCA9XG4gICAgICBtYXBcbiAgICAgICAgKHNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X3QpXG4gICAgICAgIH5mOihTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yKVxuICAgICAgICB+Zl9pbnZlcnNlOlNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgICBpblxuICAgIHNocmluayB0IHNldF90KVxuOztcbiIsIm9wZW4hIEJhc2VcbmluY2x1ZGUgVGVzdF9pbnRmXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFNlZWQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBOb25kZXRlcm1pbmlzdGljXG4gICAgICB8IERldGVybWluaXN0aWMgb2Ygc3RyaW5nXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbW9kdWxlIFBvdGVudGlhbGx5X2luZmluaXRlX3NlcXVlbmNlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgU2VxdWVuY2UudFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2VsdCBzZXF1ZW5jZSA9XG4gICAgICBsZXQgcHJlZml4LCBzdWZmaXggPSBTZXF1ZW5jZS5zcGxpdF9uIHNlcXVlbmNlIDEwMCBpblxuICAgICAgbGV0IHByZWZpeCA9IExpc3QubWFwIHByZWZpeCB+ZjpzZXhwX29mX2VsdCBpblxuICAgICAgbGV0IHN1ZmZpeCA9XG4gICAgICAgIG1hdGNoIFNlcXVlbmNlLmlzX2VtcHR5IHN1ZmZpeCB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPiBbXVxuICAgICAgICB8IGZhbHNlIC0+IFsgWyVtZXNzYWdlIFwiLi4uXCJdIF1cbiAgICAgIGluXG4gICAgICBTZXhwLkxpc3QgKHByZWZpeCBAIHN1ZmZpeClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgc2VlZCA6IFNlZWQudFxuICAgIDsgdGVzdF9jb3VudCA6IGludFxuICAgIDsgc2hyaW5rX2NvdW50IDogaW50XG4gICAgOyBzaXplcyA6IGludCBQb3RlbnRpYWxseV9pbmZpbml0ZV9zZXF1ZW5jZS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5lbmRcblxubGV0IGRlZmF1bHRfY29uZmlnIDogQ29uZmlnLnQgPVxuICB7IHNlZWQgPSBEZXRlcm1pbmlzdGljIFwiYW4gYXJiaXRyYXJ5IGJ1dCBkZXRlcm1pbmlzdGljIHN0cmluZ1wiXG4gIDsgdGVzdF9jb3VudCA9IDEwXzAwMFxuICA7IHNocmlua19jb3VudCA9IDEwXzAwMFxuICA7IHNpemVzID0gU2VxdWVuY2UuY3ljbGVfbGlzdF9leG4gKExpc3QucmFuZ2UgMCB+c3RhcnQ6YGluY2x1c2l2ZSAzMCB+c3RvcDpgaW5jbHVzaXZlKVxuICB9XG47O1xuXG5sZXQgbGF6eV9ub25kZXRlcm1pbmlzdGljX3N0YXRlID0gbGF6eSAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyA9XG4gIG1hdGNoIENvbmZpZy5zZWVkIGNvbmZpZyB3aXRoXG4gIHwgTm9uZGV0ZXJtaW5pc3RpYyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5jcmVhdGUgKGZvcmNlIGxhenlfbm9uZGV0ZXJtaW5pc3RpY19zdGF0ZSlcbiAgfCBEZXRlcm1pbmlzdGljIHN0cmluZyAtPiBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKFN0cmluZy5oYXNoIHN0cmluZylcbjs7XG5cbmxldCBvbmVfc2l6ZV9wZXJfdGVzdCB+KGNvbmZpZyA6IENvbmZpZy50KSA9XG4gIFNlcXVlbmNlLnVuZm9sZCB+aW5pdDooY29uZmlnLnNpemVzLCAwKSB+ZjooZnVuIChzaXplcywgbnVtYmVyX29mX3NpemVfdmFsdWVzKSAtPlxuICAgIG1hdGNoIG51bWJlcl9vZl9zaXplX3ZhbHVlcyA+PSBjb25maWcudGVzdF9jb3VudCB3aXRoXG4gICAgfCB0cnVlIC0+IE5vbmVcbiAgICB8IGZhbHNlIC0+XG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBzaXplcyB3aXRoXG4gICAgICAgfCBTb21lIChzaXplLCByZW1haW5pbmdfc2l6ZXMpIC0+XG4gICAgICAgICBTb21lIChzaXplLCAocmVtYWluaW5nX3NpemVzLCBudW1iZXJfb2Zfc2l6ZV92YWx1ZXMgKyAxKSlcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIHJhaXNlX3NcbiAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgXCJCYXNlX3F1aWNrY2hlY2suVGVzdC5ydW46IGluc3VmZmljaWVudCBzaXplIHZhbHVlcyBmb3IgdGVzdCBjb3VudFwiXG4gICAgICAgICAgICAgICB+dGVzdF9jb3VudDooY29uZmlnLnRlc3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAgICAobnVtYmVyX29mX3NpemVfdmFsdWVzIDogaW50KV0pKVxuOztcblxubGV0IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciA9XG4gIGxldCByZWMgbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yID1cbiAgICBtYXRjaCBzaHJpbmtfY291bnQgd2l0aFxuICAgIHwgMCAtPiBpbnB1dCwgZXJyb3JcbiAgICB8IF8gLT5cbiAgICAgIGxldCBzaHJpbmtfY291bnQgPSBzaHJpbmtfY291bnQgLSAxIGluXG4gICAgICAobWF0Y2ggU2VxdWVuY2UubmV4dCBhbHRlcm5hdGVzIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gaW5wdXQsIGVycm9yXG4gICAgICAgfCBTb21lIChhbHRlcm5hdGUsIGFsdGVybmF0ZXMpIC0+XG4gICAgICAgICAobWF0Y2ggZiBhbHRlcm5hdGUgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gbG9vcCB+c2hyaW5rX2NvdW50IH5hbHRlcm5hdGVzIGlucHV0IGVycm9yXG4gICAgICAgICAgfCBFcnJvciBlcnJvciAtPlxuICAgICAgICAgICAgbGV0IGFsdGVybmF0ZXMgPSBTaHJpbmtlci5zaHJpbmsgc2hyaW5rZXIgYWx0ZXJuYXRlIGluXG4gICAgICAgICAgICBsb29wIH5zaHJpbmtfY291bnQgfmFsdGVybmF0ZXMgYWx0ZXJuYXRlIGVycm9yKSlcbiAgaW5cbiAgbGV0IHNocmlua19jb3VudCA9IENvbmZpZy5zaHJpbmtfY291bnQgY29uZmlnIGluXG4gIGxldCBhbHRlcm5hdGVzID0gU2hyaW5rZXIuc2hyaW5rIHNocmlua2VyIGlucHV0IGluXG4gIGxvb3AgfnNocmlua19jb3VudCB+YWx0ZXJuYXRlcyBpbnB1dCBlcnJvclxuOztcblxubGV0IGlucHV0X3NlcXVlbmNlIH5jb25maWcgfmV4YW1wbGVzIH5nZW5lcmF0b3IgPVxuICBsZXQgcmFuZG9tID0gaW5pdGlhbF9yYW5kb21fc3RhdGUgfmNvbmZpZyBpblxuICBTZXF1ZW5jZS5hcHBlbmRcbiAgICAoU2VxdWVuY2Uub2ZfbGlzdCBleGFtcGxlcylcbiAgICAob25lX3NpemVfcGVyX3Rlc3QgfmNvbmZpZ1xuICAgICB8PiBTZXF1ZW5jZS5tYXAgfmY6KGZ1biBzaXplIC0+IEdlbmVyYXRvci5nZW5lcmF0ZSBnZW5lcmF0b3IgfnNpemUgfnJhbmRvbSkpXG47O1xuXG5sZXQgd2l0aF9zYW1wbGUgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBnZW5lcmF0b3IgPVxuICBsZXQgc2VxdWVuY2UgPSBpbnB1dF9zZXF1ZW5jZSB+Y29uZmlnIH5leGFtcGxlcyB+Z2VuZXJhdG9yIGluXG4gIGYgc2VxdWVuY2Vcbjs7XG5cbmxldCByZXN1bHQgKHR5cGUgYSkgfmYgPyhjb25maWcgPSBkZWZhdWx0X2NvbmZpZykgPyhleGFtcGxlcyA9IFtdKSBtID1cbiAgbGV0IChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9IG0gaW5cbiAgd2l0aF9zYW1wbGUgTS5xdWlja2NoZWNrX2dlbmVyYXRvciB+Y29uZmlnIH5leGFtcGxlcyB+ZjooZnVuIHNlcXVlbmNlIC0+XG4gICAgbWF0Y2hcbiAgICAgIFNlcXVlbmNlLmZvbGRfcmVzdWx0IHNlcXVlbmNlIH5pbml0OigpIH5mOihmdW4gKCkgaW5wdXQgLT5cbiAgICAgICAgbWF0Y2ggZiBpbnB1dCB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciAoaW5wdXQsIGVycm9yKSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiBPayAoKVxuICAgIHwgRXJyb3IgKGlucHV0LCBlcnJvcikgLT5cbiAgICAgIGxldCBzaHJpbmtlciA9IE0ucXVpY2tjaGVja19zaHJpbmtlciBpblxuICAgICAgbGV0IGlucHV0LCBlcnJvciA9IHNocmlua19lcnJvciB+c2hyaW5rZXIgfmNvbmZpZyB+ZiBpbnB1dCBlcnJvciBpblxuICAgICAgRXJyb3IgKGlucHV0LCBlcnJvcikpXG47O1xuXG5sZXQgcnVuICh0eXBlIGEpIH5mID9jb25maWcgP2V4YW1wbGVzIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSA9XG4gIGxldCBmIHggPVxuICAgIE9yX2Vycm9yLnRyeV93aXRoX2pvaW4gfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBtYXRjaCByZXN1bHQgfmYgP2NvbmZpZyA/ZXhhbXBsZXMgKG1vZHVsZSBNKSB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoaW5wdXQsIGVycm9yKSAtPlxuICAgIE9yX2Vycm9yLmVycm9yX3NcbiAgICAgIFslbWVzc2FnZSBcIkJhc2VfcXVpY2tjaGVjay5UZXN0LnJ1bjogdGVzdCBmYWlsZWRcIiAoaW5wdXQgOiBNLnQpIChlcnJvciA6IEVycm9yLnQpXVxuOztcblxubGV0IHdpdGhfc2FtcGxlX2V4biB+ZiA/Y29uZmlnID9leGFtcGxlcyBnZW5lcmF0b3IgPVxuICBsZXQgZiB4ID0gT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPiBmIHgpIGluXG4gIHdpdGhfc2FtcGxlIH5mID9jb25maWcgP2V4YW1wbGVzIGdlbmVyYXRvciB8PiBPcl9lcnJvci5va19leG5cbjs7XG5cbmxldCBydW5fZXhuIH5mID9jb25maWcgP2V4YW1wbGVzIHRlc3RhYmxlID1cbiAgbGV0IGYgeCA9XG4gICAgT3JfZXJyb3IudHJ5X3dpdGggfmJhY2t0cmFjZTooQmFja3RyYWNlLkV4bi5hbV9yZWNvcmRpbmcgKCkpIChmdW4gKCkgLT4gZiB4KVxuICBpblxuICBydW4gfmYgP2NvbmZpZyA/ZXhhbXBsZXMgdGVzdGFibGUgfD4gT3JfZXJyb3Iub2tfZXhuXG47O1xuIiwib3BlbiEgQmFzZVxuaW5jbHVkZSBPYnNlcnZlcjBcblxubGV0IHVubWFwIHQgfmYgPSBjcmVhdGUgKGZ1biB4IH5zaXplIH5oYXNoIC0+IG9ic2VydmUgdCAoZiB4KSB+c2l6ZSB+aGFzaClcbmxldCBvZl9oYXNoX2ZvbGQgZiA9IGNyZWF0ZSAoZnVuIHggfnNpemU6XyB+aGFzaCAtPiBmIGhhc2ggeClcbmxldCBvZl9sYXp5IGxhenlfdCA9IGNyZWF0ZSAoZnVuIHggfnNpemUgfmhhc2ggLT4gb2JzZXJ2ZSAoZm9yY2UgbGF6eV90KSB4IH5zaXplIH5oYXNoKVxuXG5sZXQgZml4ZWRfcG9pbnQgd3JhcCA9XG4gIGxldCByZWMgbGF6eV90ID0gbGF6eSAod3JhcCAob2ZfbGF6eSBsYXp5X3QpKSBpblxuICBvZl9sYXp5IGxhenlfdFxuOztcblxubGV0IHVuaXQgPSBvcGFxdWVcbmxldCBib29sID0gb2ZfaGFzaF9mb2xkIEJvb2wuaGFzaF9mb2xkX3RcbmxldCBjaGFyID0gb2ZfaGFzaF9mb2xkIENoYXIuaGFzaF9mb2xkX3RcbmxldCBpbnQgPSBvZl9oYXNoX2ZvbGQgSW50Lmhhc2hfZm9sZF90XG5sZXQgaW50MzIgPSBvZl9oYXNoX2ZvbGQgSW50MzIuaGFzaF9mb2xkX3RcbmxldCBpbnQ2MyA9IG9mX2hhc2hfZm9sZCBJbnQ2My5oYXNoX2ZvbGRfdFxubGV0IGludDY0ID0gb2ZfaGFzaF9mb2xkIEludDY0Lmhhc2hfZm9sZF90XG5sZXQgbmF0aXZlaW50ID0gb2ZfaGFzaF9mb2xkIE5hdGl2ZWludC5oYXNoX2ZvbGRfdFxubGV0IGZsb2F0ID0gb2ZfaGFzaF9mb2xkIEZsb2F0Lmhhc2hfZm9sZF90XG5sZXQgc3RyaW5nID0gb2ZfaGFzaF9mb2xkIFN0cmluZy5oYXNoX2ZvbGRfdFxubGV0IHNleHAgPSBvZl9oYXNoX2ZvbGQgU2V4cC5oYXNoX2ZvbGRfdFxubGV0IGJpZ3N0cmluZyA9IG9mX2hhc2hfZm9sZCAoQmlnYXJyYXlfaGVscGVycy5BcnJheTEuaGFzaF9mb2xkIGhhc2hfZm9sZF9jaGFyKVxubGV0IGZsb2F0MzJfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfdmVjID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5MS5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0MzJfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGZsb2F0NjRfbWF0ID0gb2ZfaGFzaF9mb2xkIChCaWdhcnJheV9oZWxwZXJzLkFycmF5Mi5oYXNoX2ZvbGQgaGFzaF9mb2xkX2Zsb2F0KVxubGV0IGJ5dGVzID0gdW5tYXAgc3RyaW5nIH5mOkJ5dGVzLnRvX3N0cmluZ1xuXG5sZXQgZWl0aGVyIGZzdF90IHNuZF90ID1cbiAgY3JlYXRlIChmdW4gZWl0aGVyIH5zaXplIH5oYXNoIC0+XG4gICAgbWF0Y2ggKGVpdGhlciA6IF8gRWl0aGVyLnQpIHdpdGhcbiAgICB8IEZpcnN0IGZzdCAtPiBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaDooaGFzaF9mb2xkX2ludCBoYXNoIDEpXG4gICAgfCBTZWNvbmQgc25kIC0+IG9ic2VydmUgc25kX3Qgc25kIH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMikpXG47O1xuXG5sZXQgcmVzdWx0IG9rX3QgZXJyX3QgPVxuICB1bm1hcCAoZWl0aGVyIG9rX3QgZXJyX3QpIH5mOihmdW5jdGlvblxuICAgIHwgT2sgb2sgLT4gRmlyc3Qgb2tcbiAgICB8IEVycm9yIGVyciAtPiBTZWNvbmQgZXJyKVxuOztcblxubGV0IGJvdGggZnN0X3Qgc25kX3QgPVxuICBjcmVhdGUgKGZ1biAoZnN0LCBzbmQpIH5zaXplIH5oYXNoIC0+XG4gICAgbGV0IGhhc2ggPSBvYnNlcnZlIGZzdF90IGZzdCB+c2l6ZSB+aGFzaCBpblxuICAgIGxldCBoYXNoID0gb2JzZXJ2ZSBzbmRfdCBzbmQgfnNpemUgfmhhc2ggaW5cbiAgICBoYXNoKVxuOztcblxubGV0IG9wdGlvbiB2YWx1ZV90ID1cbiAgdW5tYXAgKGVpdGhlciBvcGFxdWUgdmFsdWVfdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IEZpcnN0ICgpXG4gICAgfCBTb21lIHZhbHVlIC0+IFNlY29uZCB2YWx1ZSlcbjs7XG5cbmxldCBsaXN0IGVsdF90ID1cbiAgY3JlYXRlIChmdW4gbGlzdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgIGxldCBzaXplcyA9XG4gICAgICBHZW5lcmF0b3Iuc2l6ZXMgfm1pbl9sZW5ndGg6bGVuZ3RoIH5tYXhfbGVuZ3RoOmxlbmd0aCAoKVxuICAgICAgfD4gR2VuZXJhdG9yLmdlbmVyYXRlIH5zaXplIH5yYW5kb21cbiAgICBpblxuICAgIExpc3QuZm9sZDJfZXhuIGxpc3Qgc2l6ZXMgfmluaXQ6KGhhc2hfZm9sZF9pbnQgaGFzaCAwKSB+ZjooZnVuIGhhc2ggZWx0IHNpemUgLT5cbiAgICAgIG9ic2VydmUgZWx0X3QgZWx0IH5zaXplIH5oYXNoOihoYXNoX2ZvbGRfaW50IGhhc2ggMSkpKVxuOztcblxubGV0IGFycmF5IHQgPSB1bm1hcCAobGlzdCB0KSB+ZjpBcnJheS50b19saXN0XG5sZXQgcmVmIHQgPSB1bm1hcCB0IH5mOlJlZi4oICEgKVxubGV0IGxhenlfdCB0ID0gdW5tYXAgdCB+ZjpMYXp5LmZvcmNlXG5cbmxldCBmbiBkb20gcm5nID1cbiAgY3JlYXRlIChmdW4gZiB+c2l6ZSB+aGFzaCAtPlxuICAgIGxldCByYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbS5TdGF0ZS5vZl9pbnQgKEhhc2guZ2V0X2hhc2hfdmFsdWUgaGFzaCkgaW5cbiAgICBsZXQgc2l6ZXMgPVxuICAgICAgKCogRW1waXJpY2FsbHksIGRvdWJsaW5nIHRoZSBzaXplIHdoZW4gZ2VuZXJhdGluZyB0aGUgbGlzdCBvZiBpbnB1dHMgZ2l2ZXMgdXMgbXVjaFxuICAgICAgICAgYmV0dGVyIGNvdmVyYWdlIG9mIHRoZSBzcGFjZSBvZiBmdW5jdGlvbnMuICopXG4gICAgICBHZW5lcmF0b3IuZ2VuZXJhdGUgKEdlbmVyYXRvci5zaXplcyAoKSkgfnNpemU6KHNpemUgKiAyKSB+cmFuZG9tXG4gICAgaW5cbiAgICBMaXN0LmZvbGQgc2l6ZXMgfmluaXQ6aGFzaCB+ZjooZnVuIGhhc2ggc2l6ZSAtPlxuICAgICAgbGV0IHggPSBHZW5lcmF0b3IuZ2VuZXJhdGUgZG9tIH5zaXplIH5yYW5kb20gaW5cbiAgICAgIG9ic2VydmUgcm5nIChmIHgpIH5zaXplIH5oYXNoKSlcbjs7XG5cbmxldCBtYXBfdHJlZSBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKGxpc3QgKGJvdGgga2V5X29icyBkYXRhX29icykpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUudG9fYWxpc3Rcbjs7XG5cbmxldCBzZXRfdHJlZSBlbHRfb2JzID0gdW5tYXAgKGxpc3QgZWx0X29icykgfmY6U2V0LlVzaW5nX2NvbXBhcmF0b3IuVHJlZS50b19saXN0XG5cbmxldCBtYXBfdCBrZXlfb2JzIGRhdGFfb2JzID1cbiAgdW5tYXAgKG1hcF90cmVlIGtleV9vYnMgZGF0YV9vYnMpIH5mOk1hcC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbjs7XG5cbmxldCBzZXRfdCBlbHRfb2JzID0gdW5tYXAgKHNldF90cmVlIGVsdF9vYnMpIH5mOlNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiIsIm1vZHVsZSBHZW5lcmF0b3IgPSBHZW5lcmF0b3Jcbm1vZHVsZSBPYnNlcnZlciA9IE9ic2VydmVyXG5tb2R1bGUgU2hyaW5rZXIgPSBTaHJpbmtlclxubW9kdWxlIFRlc3QgPSBUZXN0XG5tb2R1bGUgRXhwb3J0ID0gRXhwb3J0XG5pbmNsdWRlIEV4cG9ydFxuXG4oKiovKiopXG5cbigqXyBUaGlzIG1vZHVsZSBpcyBleHBvc2VkIG9ubHkgdG8gbWFrZSBvY2FtbGRvYyBvdXRwdXQgbW9yZSByZWFkYWJsZS4gKilcbm1vZHVsZSBXaXRoX2Jhc2ljX3R5cGVzID0gV2l0aF9iYXNpY190eXBlc1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgQmlnYXJyYXlfaGVscGVycyA9IEJpZ2FycmF5X2hlbHBlcnNcbmVuZFxuIiwibW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHF1aWNrY2hlY2ssIHNleHAsIHR5cGVyZXBdXG5cbiAgdmFsIHNpZ25lZCA6IGJvb2xcbiAgdmFsIG51bV9iaXRzIDogaW50XG4gIHZhbCBudW1fYnl0ZXMgOiBpbnRcbiAgdmFsIHplcm8gOiB0XG4gIHZhbCBtaW5fdmFsdWUgOiB0XG4gIHZhbCBtYXhfdmFsdWUgOiB0XG5cbiAgaW5jbHVkZSBQcHhfaGFzaF9saWIuSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgTyA6IHNpZ1xuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJpc29ucy5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICBtb2R1bGUgV3JhcCA6IHNpZ1xuICAgICAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCAoIC0gKSA6IHQgLT4gdCAtPiB0XG4gICAgICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLyApIDogdCAtPiB0IC0+IHRcbiAgICBlbmRcbiAgZW5kXG5cbmVuZFxuXG5sZXQgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeCA9XG4gIEJhc2UucmFpc2VfcyBbJW1lc3NhZ2UgKG1vZF9uYW1lIF4gXCI6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZFwiKSB+XzoodG9fc3RyaW5nIHgpXVxuW0BAY29sZF1cbjs7XG5cbmxldCB0cnVuY191bnNpZ25lZCA6IHR5cGUgYSBiLiBjb252OihhIC0+IGIpIC0+IGxvZ2FuZDooYSAtPiBhIC0+IGEpIC0+IG1hc2s6YSAtPiBhIC0+IGIgPVxuICBmdW4gfmNvbnYgfmxvZ2FuZCB+bWFzayB4IC0+IGNvbnYgKGxvZ2FuZCB4IG1hc2spXG5bQEBpbmxpbmUgYWx3YXlzXVxuOztcblxubGV0IGV4bl91bnNpZ25lZFxuICA6IHR5cGUgYSBiLlxuICAgIGNvbnY6KGEgLT4gYilcbiAgICAtPiBsb2dhbmQ6KGEgLT4gYSAtPiBhKVxuICAgIC0+IG1hc2s6YVxuICAgIC0+IGVxdWFsOihhIC0+IGEgLT4gYm9vbClcbiAgICAtPiBtb2RfbmFtZTpzdHJpbmdcbiAgICAtPiB0b19zdHJpbmc6KGEgLT4gc3RyaW5nKVxuICAgIC0+IGFcbiAgICAtPiBiXG4gID1cbiAgZnVuIH5jb252IH5sb2dhbmQgfm1hc2sgfmVxdWFsIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHggLT5cbiAgbGV0IHkgPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IGluXG4gIGlmIGVxdWFsIHggeSB0aGVuIGNvbnYgeSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbltAQGlubGluZSBhbHdheXNdXG47O1xuXG5sZXQgdHJ1bmNfc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpIC0+IHNoaWZ0X3JpZ2h0OihhIC0+IGludCAtPiBhKSAtPiBzaGlmdDppbnQgLT4gYSAtPiBhXG4gID1cbiAgZnVuIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCAtPiBzaGlmdF9yaWdodCAoc2hpZnRfbGVmdCB4IHNoaWZ0KSBzaGlmdFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBleG5fc2lnbmVkXG4gIDogdHlwZSBhLlxuICAgIHNoaWZ0X2xlZnQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnRfcmlnaHQ6KGEgLT4gaW50IC0+IGEpXG4gICAgLT4gc2hpZnQ6aW50XG4gICAgLT4gZXF1YWw6KGEgLT4gYSAtPiBib29sKVxuICAgIC0+IG1vZF9uYW1lOnN0cmluZ1xuICAgIC0+IHRvX3N0cmluZzooYSAtPiBzdHJpbmcpXG4gICAgLT4gYVxuICAgIC0+IGFcbiAgPVxuICBmdW4gfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeCAtPlxuICBsZXQgeSA9IHRydW5jX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IHggaW5cbiAgaWYgZXF1YWwgeCB5IHRoZW4geSBlbHNlIHJhaXNlX2Nhbm5vdF9yZXByIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbjs7XG5cbmxldCBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4ID1cbiAgaWYgZ3JlYXRlcl9lcXVhbCB4IHplcm8gdGhlbiB4IGVsc2UgcmFpc2VfY2Fubm90X3JlcHIgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuW0BAaW5saW5lIGFsd2F5c11cbjs7XG5cbmxldCBvZl9zZXhwX2Vycm9yIHdoYXQgc2V4cCA9XG4gIHJhaXNlIChTZXhwbGliMC5TZXhwX2NvbnYuT2Zfc2V4cF9lcnJvciAoRmFpbHVyZSB3aGF0LCBzZXhwKSlcbjs7XG5cbm1vZHVsZSBSZXByMzIgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGRsaWIuU3lzLkltbWVkaWF0ZTY0Lk1ha2UgKEJhc2UuSW50KSAoQmFzZS5JbnQzMilcblxuICBsZXQgdG9faW50MzIgKHggOiB0KSA6IEJhc2UuSW50MzIudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiB4XG4gIDs7XG5cbiAgKCogc2lnbi1leHRlbmRpbmcgY29udmVyc2lvbiB0byBpbnQ2NCAqKVxuICBsZXQgdG9faW50NjQgKHggOiB0KSA6IEJhc2UuSW50NjQudCA9XG4gICAgbWF0Y2ggcmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gQmFzZS5JbnQ2NC5vZl9pbnQgeFxuICAgIHwgTm9uX2ltbWVkaWF0ZSAtPiBCYXNlLkludDY0Lm9mX2ludDMyIHhcbiAgOztcbmVuZFxuXG4oKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiB0eXBlcyAqKVxudHlwZSBpbnQ4ID0gaW50XG50eXBlIHVpbnQ4ID0gaW50XG50eXBlIGludDE2ID0gaW50XG50eXBlIHVpbnQxNiA9IGludFxudHlwZSBpbnQzMiA9IFJlcHIzMi50XG50eXBlIHVpbnQzMiA9IFJlcHIzMi50XG50eXBlIGludDYzID0gQmFzZS5JbnQ2My50XG50eXBlIHVpbnQ2MyA9IEJhc2UuSW50NjMudFxudHlwZSBpbnQ2NCA9IEJhc2UuSW50NjQudFxudHlwZSB1aW50NjQgPSBCYXNlLkludDY0LnRcblxubW9kdWxlIEludDggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSAtMTI4XG4gIGxldCBtYXhfdmFsdWUgPSAxMjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgc2hpZnRfbGVmdCA9IEJhc2UuSW50LnNoaWZ0X2xlZnRcbiAgbGV0IHNoaWZ0X3JpZ2h0ID0gQmFzZS5JbnQuc2hpZnRfcmlnaHRcbiAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICBsZXQgbW9kX25hbWUgPSBcIkludDhcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfc2lnbmVkIH5zaGlmdF9sZWZ0IH5zaGlmdF9yaWdodCB+c2hpZnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfaW50MzJfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDMyLnRvX2ludF90cnVuYyAoUmVwcjMyLnRvX2ludDMyIHgpKVxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCBvZl9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfZXhuIChSZXByMzIudG9faW50MzIgeCkpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M190cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjMudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2M19leG4geCA9IGV4biAoQmFzZS5JbnQ2My50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biAoQmFzZS5JbnQ2NC50b19pbnRfZXhuIHgpIFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4X3dyYXAgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50OCA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IDI1NVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gOFxuICBsZXQgbnVtX2J5dGVzID0gMVxuICBsZXQgY29udiA9IEJhc2UuSW50NjQudG9faW50X3RydW5jXG4gIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICBsZXQgbG9nYW5kNjQgPSBCYXNlLkludDY0LiggbGFuZCApXG4gIGxldCBtYXNrID0gMHhGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50OFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgbGV0IHRvX3N0cmluZzY0ID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3Vuc2lnbmVkIH5jb252OkZ1bi5pZCB+bG9nYW5kIH5tYXNrIH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRydW5jNjQgeCA9IHRydW5jX3Vuc2lnbmVkIH5jb252IH5sb2dhbmQ6bG9nYW5kNjQgfm1hc2s6bWFzazY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgZXhuNjQgeCA9XG4gICAgZXhuX3Vuc2lnbmVkXG4gICAgICB+Y29udlxuICAgICAgfmxvZ2FuZDpsb2dhbmQ2NFxuICAgICAgfm1hc2s6bWFzazY0XG4gICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgfm1vZF9uYW1lXG4gICAgICB+dG9fc3RyaW5nOnRvX3N0cmluZzY0XG4gICAgICB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfdHJ1bmMgeCA9IHRydW5jNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuNjQgKFJlcHIzMi50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfZXhuIHggPSBleG42NCAoQmFzZS5JbnQ2My50b19pbnQ2NCB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfaW50OF93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ4X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJbnQxNiA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICBsZXQgemVybyA9IEJhc2UuSW50Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IC0zMjc2OFxuICBsZXQgbWF4X3ZhbHVlID0gMzI3NjdcbiAgbGV0IHNpZ25lZCA9IHRydWVcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gIGxldCBzaGlmdF9yaWdodCA9IEJhc2UuSW50LnNoaWZ0X3JpZ2h0XG4gIGxldCBzaGlmdCA9IEJhc2UuSW50Lm51bV9iaXRzIC0gbnVtX2JpdHNcbiAgbGV0IG1vZF9uYW1lID0gXCJJbnQxNlwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcblxuICAoKiBVdGlsaXRpZXMgKilcbiAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4biB4ID0gZXhuX3NpZ25lZCB+c2hpZnRfbGVmdCB+c2hpZnRfcmlnaHQgfnNoaWZ0IH5lcXVhbCB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludF90cnVuYyB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfYmFzZV9pbnRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgdG9fYmFzZV9pbnQgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX2ludDMyX3RydW5jIHggPSB0cnVuYyAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgKFJlcHIzMi50b19pbnQzMiB4KSlcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4gKEJhc2UuSW50MzIudG9faW50X2V4biAoUmVwcjMyLnRvX2ludDMyIHgpKSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjNfZXhuIHggPSBleG4gKEJhc2UuSW50NjMudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDY0LnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl91aW50MTZfd3JhcCB4ID0gdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDE2X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBNaXNjZWxsYW5lb3VzICopXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50X2luY2x1c2l2ZSBtaW5fdmFsdWUgbWF4X3ZhbHVlXG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50IH5mOnRydW5jXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXIgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludCB+ZjooZnVuIHggLT5cbiAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICBsZXQgKCA9ICkgPSBCYXNlLkludC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICBsZXQgKCA8PiApID0gQmFzZS5JbnQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICBsZXQgKCAtICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggLSApIHggeSlcbiAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBVaW50MTYgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQudCBbQEBpbW1lZGlhdGVdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludFxuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludC56ZXJvXG4gIGxldCBtYXhfdmFsdWUgPSA2NTUzNVxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gMTZcbiAgbGV0IG51bV9ieXRlcyA9IDJcbiAgbGV0IGNvbnYgPSBCYXNlLkludDY0LnRvX2ludF90cnVuY1xuICBsZXQgbG9nYW5kID0gQmFzZS5JbnQuKCBsYW5kIClcbiAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICBsZXQgbWFzayA9IDB4RkZGRlxuICBsZXQgbWFzazY0ID0gQmFzZS5JbnQ2NC5vZl9pbnQgbWFza1xuICBsZXQgZXF1YWwgPSBCYXNlLkludC5lcXVhbFxuICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgbGV0IG1vZF9uYW1lID0gXCJVaW50MTZcIlxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG4gIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgKCogVXRpbGl0aWVzICopXG4gIGxldCB0cnVuYyB4ID0gdHJ1bmNfdW5zaWduZWQgfmNvbnY6RnVuLmlkIH5sb2dhbmQgfm1hc2sgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IGV4bjY0IHggPVxuICAgIGV4bl91bnNpZ25lZFxuICAgICAgfmNvbnZcbiAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgIH5tYXNrOm1hc2s2NFxuICAgICAgfmVxdWFsOmVxdWFsNjRcbiAgICAgIH5tb2RfbmFtZVxuICAgICAgfnRvX3N0cmluZzp0b19zdHJpbmc2NFxuICAgICAgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfYmFzZV9pbnRfdHJ1bmMgeCA9IHRydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2Jhc2VfaW50X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50IHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDggeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMl90cnVuYyB4ID0gdHJ1bmM2NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MzJfZXhuIHggPSBleG42NCAoUmVwcjMyLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjNfdHJ1bmMgeCA9IHRydW5jNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGV4bjY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQxNl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNl9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogTWlzY2VsbGFuZW91cyAqKVxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICBlcXVhbCB4ICh0cnVuYyB4KSlcbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludC4oID49IClcbiAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludC4oID4gKVxuICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICBsZXQgKCAqICkgeCB5ID0gdHJ1bmMgKEJhc2UuSW50LiggKiApIHggeSlcbiAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYWNrZW5kMzJfUyA9IHNpZ1xuICBtb2R1bGUgU2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMiA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIHRvX2Jhc2VfaW50MzIgOiB0IC0+IEJhc2UuSW50MzIudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl9pbnQ4IDogaW50OCAtPiB0XG4gICAgdmFsIG9mX2ludDE2IDogaW50MTYgLT4gdFxuICAgIHZhbCBvZl9pbnQ2M190cnVuYyA6IGludDYzIC0+IHRcbiAgICB2YWwgb2ZfaW50NjNfZXhuIDogaW50NjMgLT4gdFxuICAgIHZhbCBvZl9pbnQ2NF90cnVuYyA6IGludDY0IC0+IHRcbiAgICB2YWwgb2ZfaW50NjRfZXhuIDogaW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfdWludDMyX3dyYXAgOiB1aW50MzIgLT4gdFxuICAgIHZhbCBvZl91aW50MzJfZXhuIDogdWludDMyIC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIFVuc2lnbmVkIDogc2lnXG4gICAgdHlwZSB0ID0gUmVwcjMyLnRcblxuICAgIGluY2x1ZGUgVCB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfYmFzZV9pbnQzMl90cnVuYyA6IEJhc2UuSW50MzIudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50MzJfZXhuIDogQmFzZS5JbnQzMi50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQzMl90cnVuYyA6IHQgLT4gQmFzZS5JbnQzMi50XG4gICAgdmFsIHRvX2Jhc2VfaW50MzJfZXhuIDogdCAtPiBCYXNlLkludDMyLnRcbiAgICB2YWwgb2ZfYmFzZV9pbnQ2NF90cnVuYyA6IEJhc2UuSW50NjQudCAtPiB0XG4gICAgdmFsIG9mX2Jhc2VfaW50NjRfZXhuIDogQmFzZS5JbnQ2NC50IC0+IHRcbiAgICB2YWwgdG9fYmFzZV9pbnQ2NCA6IHQgLT4gQmFzZS5JbnQ2NC50XG4gICAgdmFsIHRvX2Jhc2VfaW50X2V4biA6IHQgLT4gQmFzZS5JbnQudFxuXG4gICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgIHZhbCBvZl91aW50OCA6IHVpbnQ4IC0+IHRcbiAgICB2YWwgb2ZfdWludDE2IDogdWludDE2IC0+IHRcbiAgICB2YWwgb2ZfdWludDYzX3RydW5jIDogdWludDYzIC0+IHRcbiAgICB2YWwgb2ZfdWludDYzX2V4biA6IHVpbnQ2MyAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2NF90cnVuYyA6IHVpbnQ2NCAtPiB0XG4gICAgdmFsIG9mX3VpbnQ2NF9leG4gOiB1aW50NjQgLT4gdFxuXG4gICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICB2YWwgb2ZfaW50MzJfd3JhcCA6IGludDMyIC0+IHRcbiAgICB2YWwgb2ZfaW50MzJfZXhuIDogaW50MzIgLT4gdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQmFja2VuZDMyIDogc2lnXG4gIHZhbCBpbXBsIDogKG1vZHVsZSBCYWNrZW5kMzJfUylcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgSSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTaWduZWQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50LnQgW0BAaW1tZWRpYXRlXSBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cblxuICAgICAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnRcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludFxuICAgICAgbGV0IHplcm8gPSBCYXNlLkludC56ZXJvXG4gICAgICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgQmFzZS5JbnQzMi5taW5fdmFsdWVcbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDMyLnRvX2ludF90cnVuYyBCYXNlLkludDMyLm1heF92YWx1ZVxuICAgICAgbGV0IHNpZ25lZCA9IHRydWVcbiAgICAgIGxldCBudW1fYml0cyA9IDMyXG4gICAgICBsZXQgbnVtX2J5dGVzID0gNFxuICAgICAgbGV0IHNoaWZ0X2xlZnQgPSBCYXNlLkludC5zaGlmdF9sZWZ0XG4gICAgICBsZXQgc2hpZnRfcmlnaHQgPSBCYXNlLkludC5zaGlmdF9yaWdodFxuICAgICAgbGV0IHNoaWZ0ID0gQmFzZS5JbnQubnVtX2JpdHMgLSBudW1fYml0c1xuICAgICAgbGV0IG1vZF9uYW1lID0gXCJJbnQzMlwiXG4gICAgICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQudG9fc3RyaW5nXG5cbiAgICAgICgqIFV0aWxpdGllcyAqKVxuICAgICAgbGV0IHRydW5jIHggPSB0cnVuY19zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBleG4geCA9IGV4bl9zaWduZWQgfnNoaWZ0X2xlZnQgfnNoaWZ0X3JpZ2h0IH5zaGlmdCB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzIgeCA9IEJhc2UuSW50MzIudG9faW50X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyIHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQ4IHggPSAoeCA6IEludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MTYgeCA9ICh4IDogSW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IHRydW5jIChCYXNlLkludDYzLnRvX2ludF90cnVuYyB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIChCYXNlLkludDYzLnRvX2ludF9leG4geCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF90cnVuYyB4ID0gdHJ1bmMgKEJhc2UuSW50NjQudG9faW50X3RydW5jIHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjRfZXhuIHggPSBleG4gKEJhc2UuSW50NjQudG9faW50X2V4biB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQzMl93cmFwIHggPSB0cnVuYyB4XG4gICAgICBsZXQgb2ZfdWludDMyX2V4biB4ID0gZXhuIHhcblxuICAgICAgKCogTWlzY2VsbGFuZW91cyAqKVxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfaW5jbHVzaXZlIG1pbl92YWx1ZSBtYXhfdmFsdWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQgfmY6dHJ1bmNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICAgICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmZpbHRlciBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50IH5mOihmdW4geCAtPlxuICAgICAgICAgIGVxdWFsIHggKHRydW5jIHgpKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICAgICAgbGV0ICggPj0gKSA9IEJhc2UuSW50LiggPj0gKVxuICAgICAgICBsZXQgKCA8PSApID0gQmFzZS5JbnQuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50LiggPSApXG4gICAgICAgIGxldCAoID4gKSA9IEJhc2UuSW50LiggPiApXG4gICAgICAgIGxldCAoIDwgKSA9IEJhc2UuSW50LiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludC4oIDw+IClcblxuICAgICAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgICAgIGxldCAoICsgKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCArICkgeCB5KVxuICAgICAgICAgIGxldCAoIC0gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAtICkgeCB5KVxuICAgICAgICAgIGxldCAoICogKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAqICkgeCB5KVxuICAgICAgICAgIGxldCAoIC8gKSB4IHkgPSB0cnVuYyAoQmFzZS5JbnQuKCAvICkgeCB5KVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFVuc2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludC50IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHBdXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50XG4gICAgICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnRcbiAgICAgIGxldCB6ZXJvID0gQmFzZS5JbnQuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50Lnplcm9cbiAgICAgIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludC5vZl9pbnQ2NF90cnVuYyA0Mjk0OTY3Mjk1TFxuICAgICAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBjb252ID0gQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmNcbiAgICAgIGxldCBsb2dhbmQgPSBCYXNlLkludC4oIGxhbmQgKVxuICAgICAgbGV0IGxvZ2FuZDY0ID0gQmFzZS5JbnQ2NC4oIGxhbmQgKVxuICAgICAgbGV0IG1hc2sgPSBCYXNlLkludDY0LnRvX2ludF90cnVuYyAweEZGRkZGRkZGTFxuICAgICAgbGV0IG1hc2s2NCA9IEJhc2UuSW50NjQub2ZfaW50IG1hc2tcbiAgICAgIGxldCBlcXVhbCA9IEJhc2UuSW50LmVxdWFsXG4gICAgICBsZXQgZXF1YWw2NCA9IEJhc2UuSW50NjQuZXF1YWxcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiVWludDMyXCJcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludC50b19zdHJpbmdcbiAgICAgIGxldCB0b19zdHJpbmc2NCA9IEJhc2UuSW50NjQudG9fc3RyaW5nXG5cbiAgICAgICgqIFV0aWxpdGllcyAqKVxuICAgICAgbGV0IHRydW5jIHggPSB0cnVuY191bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBleG4geCA9IGV4bl91bnNpZ25lZCB+Y29udjpGdW4uaWQgfmxvZ2FuZCB+bWFzayB+ZXF1YWwgfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0cnVuYzY0IHggPSB0cnVuY191bnNpZ25lZCB+Y29udiB+bG9nYW5kOmxvZ2FuZDY0IH5tYXNrOm1hc2s2NCB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IGV4bjY0IHggPVxuICAgICAgICBleG5fdW5zaWduZWRcbiAgICAgICAgICB+Y29udlxuICAgICAgICAgIH5sb2dhbmQ6bG9nYW5kNjRcbiAgICAgICAgICB+bWFzazptYXNrNjRcbiAgICAgICAgICB+ZXF1YWw6ZXF1YWw2NFxuICAgICAgICAgIH5tb2RfbmFtZVxuICAgICAgICAgIH50b19zdHJpbmc6dG9fc3RyaW5nNjRcbiAgICAgICAgICB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl90cnVuYyB4ID1cbiAgICAgICAgQmFzZS5JbnQ2NC50b19pbnRfdHJ1bmMgKGxvZ2FuZDY0IChCYXNlLkludDY0Lm9mX2ludDMyIHgpIG1hc2s2NClcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfYmFzZV9pbnQzMl9leG4geCA9IGV4biAoQmFzZS5JbnQzMi50b19pbnRfdHJ1bmMgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX3RydW5jIHggPSBCYXNlLkludC50b19pbnQzMl90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWYgQmFzZS5JbnQuKCA8PSApIHggKEJhc2UuSW50Lm9mX2ludDY0X3RydW5jIDIxNDc0ODM2NDdMKVxuICAgICAgICB0aGVuIEJhc2UuSW50MzIub2ZfaW50X3RydW5jIHhcbiAgICAgICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludC50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSB0cnVuYzY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID0gZXhuNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50LnRvX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludF9leG4geCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS1zaWduZWRuZXNzIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX3VpbnQ4IHggPSAoeCA6IFVpbnQ4LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQxNiB4ID0gKHggOiBVaW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSB0cnVuYzY0IChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDYzX2V4biB4ID0gZXhuNjQgKEJhc2UuSW50NjMudG9faW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfdHJ1bmMgeCA9IHRydW5jNjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX3VpbnQ2NF9leG4geCA9IGV4bjY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQzMl93cmFwIHggPSB0cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MzJfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICAoKiBNaXNjZWxsYW5lb3VzICopXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmUgbWluX3ZhbHVlIG1heF92YWx1ZVxuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludCB+Zjp0cnVuY1xuICAgICAgOztcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgICAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyIEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5pbnQgfmY6KGZ1biB4IC0+XG4gICAgICAgICAgZXF1YWwgeCAodHJ1bmMgeCkpXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQuKCA+PSApXG4gICAgICAgIGxldCAoIDw9ICkgPSBCYXNlLkludC4oIDw9IClcbiAgICAgICAgbGV0ICggPSApID0gQmFzZS5JbnQuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQuKCA+IClcbiAgICAgICAgbGV0ICggPCApID0gQmFzZS5JbnQuKCA8IClcbiAgICAgICAgbGV0ICggPD4gKSA9IEJhc2UuSW50LiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApIHggeSA9IHRydW5jIChCYXNlLkludC4oICsgKSB4IHkpXG4gICAgICAgICAgbGV0ICggLSApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC0gKSB4IHkpXG4gICAgICAgICAgbGV0ICggKiApIHggeSA9IHRydW5jIChCYXNlLkludC4oICogKSB4IHkpXG4gICAgICAgICAgbGV0ICggLyApIHggeSA9IHRydW5jIChCYXNlLkludC4oIC8gKSB4IHkpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBOID0gc3RydWN0XG4gICAgbW9kdWxlIFNpZ25lZCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQmFzZS5JbnQzMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX29ic2VydmVyX2ludDMyXG4gICAgICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDMyXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIubWluX3ZhbHVlXG4gICAgICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQzMi5tYXhfdmFsdWVcbiAgICAgIGxldCBzaWduZWQgPSB0cnVlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiSW50MzJcIlxuICAgICAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDMyLiggPj0gKVxuICAgICAgbGV0IHRvX3N0cmluZyA9IEJhc2UuSW50MzIudG9fc3RyaW5nXG5cbiAgICAgICgqIFwiQmFzZVwiIGNvbnZlcnNpb25zLiAqKVxuICAgICAgbGV0IG9mX2Jhc2VfaW50MzIgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCB0b19iYXNlX2ludDMyIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDMyLm9mX2ludF90cnVuYyAoeCA6IEludDgudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50MTYgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogSW50MTYudCA6PiBpbnQpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfaW50NjNfdHJ1bmMgeCA9IEJhc2UuSW50NjMudG9faW50MzJfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDYzX2V4biB4ID0gQmFzZS5JbnQ2My50b19pbnQzMl9leG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgbGV0IG9mX2ludDY0X3RydW5jIHggPSBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl9pbnQ2NF9leG4geCA9IEJhc2UuSW50NjQudG9faW50MzJfZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50MzJfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfdWludDMyX2V4biB4IDogdCA9XG4gICAgICAgIGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgICAgICBsZXQgKCA+PSApID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgICAgbGV0ICggPD0gKSA9IEJhc2UuSW50MzIuKCA8PSApXG4gICAgICAgIGxldCAoID0gKSA9IEJhc2UuSW50MzIuKCA9IClcbiAgICAgICAgbGV0ICggPiApID0gQmFzZS5JbnQzMi4oID4gKVxuICAgICAgICBsZXQgKCA8ICkgPSBCYXNlLkludDMyLiggPCApXG4gICAgICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDMyLiggPD4gKVxuXG4gICAgICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQzMi4oICsgKVxuICAgICAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50MzIuKCAtIClcbiAgICAgICAgICBsZXQgKCAqICkgPSBCYXNlLkludDMyLiggKiApXG4gICAgICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQzMi4oIC8gKVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFVuc2lnbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBCYXNlLkludDMyLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgICAgIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX2dlbmVyYXRvcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQzMlxuICAgICAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQzMlxuICAgICAgbGV0IGNvbXBhcmUgeCB5ID0gU3RkbGliLkludDMyLnVuc2lnbmVkX2NvbXBhcmUgeCB5IFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50MzJcbiAgICAgIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDMyXG4gICAgICBsZXQgemVybyA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50MzIuemVyb1xuICAgICAgbGV0IG1heF92YWx1ZSA9IC0xbFxuICAgICAgbGV0IHNpZ25lZCA9IGZhbHNlXG4gICAgICBsZXQgbnVtX2JpdHMgPSAzMlxuICAgICAgbGV0IG51bV9ieXRlcyA9IDRcbiAgICAgIGxldCBtb2RfbmFtZSA9IFwiVWludDMyXCJcbiAgICAgIGxldCBncmVhdGVyX2VxdWFsID0gQmFzZS5JbnQzMi4oID49IClcbiAgICAgIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDMyLnRvX3N0cmluZ1xuXG4gICAgICAoKiBcIkJhc2VcIiBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgIGxldCB0b19iYXNlX2ludDMyX2V4biB4ID1cbiAgICAgICAgaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDMyLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAgICAgbGV0IG9mX2Jhc2VfaW50NjRfZXhuIHggPVxuICAgICAgICBpZiBCYXNlLkludDY0LiggPj0gKSB4IDBMICYmIEJhc2UuSW50NjQuKCA8PSApIHggNDI5NDk2NzI5NUxcbiAgICAgICAgdGhlbiBCYXNlLkludDY0LnRvX2ludDMyX3RydW5jIHhcbiAgICAgICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50MzIudG9faW50NjQgeCkgMHhGRkZGRkZGRkxcbiAgICAgIFtAQGlubGluZSBhbHdheXNdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fYmFzZV9pbnRfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICAgIHw+IEJhc2UuSW50MzIudG9faW50X2V4blxuICAgICAgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIDs7XG5cbiAgICAgICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBvZl91aW50OCB4ID0gQmFzZS5JbnQzMi5vZl9pbnRfdHJ1bmMgKHggOiBVaW50OC50IDo+IGludCkgW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50MzIub2ZfaW50X3RydW5jICh4IDogVWludDE2LnQgOj4gaW50KSBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfdWludDYzX3RydW5jIHggPSBvZl9iYXNlX2ludDY0X3RydW5jIChCYXNlLkludDYzLnRvX2ludDY0IHgpXG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3VpbnQ2M19leG4geCA9IG9mX2Jhc2VfaW50NjRfZXhuIChCYXNlLkludDYzLnRvX2ludDY0IHgpIFtAQGlubGluZSBhbHdheXNdXG4gICAgICBsZXQgb2ZfdWludDY0X3RydW5jIHggPSBvZl9iYXNlX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cbiAgICAgIGxldCBvZl91aW50NjRfZXhuIHggPSBvZl9iYXNlX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgICAgICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gICAgICBsZXQgb2ZfaW50MzJfd3JhcCB4ID0geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICAgICBsZXQgb2ZfaW50MzJfZXhuIHggPVxuICAgICAgICBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gICAgICBbQEBpbmxpbmUgYWx3YXlzXVxuICAgICAgOztcblxuICAgICAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgICAgIGxldCBzZXhwX29mX3QgeCA9IEJhc2UuU2V4cC5BdG9tIChTdGRsaWIuUHJpbnRmLnNwcmludGYgXCIlbHVcIiB4KVxuXG4gICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgfCBCYXNlLlNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbiAgICAgICAgfCBCYXNlLlNleHAuQXRvbSBzIC0+XG4gICAgICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJWx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICAgICAgfCBfIC0+IG9mX3NleHBfZXJyb3IgXCJJbnRfcmVwci5VaW50MzIudF9vZl9zZXhwOiBpbnRlZ2VyIGF0b20gbmVlZGVkXCIgc2V4cClcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBPID0gc3RydWN0XG4gICAgICAgIGxldCAoID49ICkgeCB5ID0gY29tcGFyZSB4IHkgPj0gMFxuICAgICAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICAgICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgICAgICBsZXQgKCA+ICkgeCB5ID0gY29tcGFyZSB4IHkgPiAwXG4gICAgICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICAgICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICAgICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgKCArICkgPSBCYXNlLkludDMyLiggKyApXG4gICAgICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQzMi4oIC0gKVxuICAgICAgICAgIGxldCAoICogKSA9IEJhc2UuSW50MzIuKCAqIClcbiAgICAgICAgICBsZXQgKCAvICkgPSBTdGRsaWIuSW50MzIudW5zaWduZWRfZGl2XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBsZXQgaW1wbCA6IChtb2R1bGUgQmFja2VuZDMyX1MpID1cbiAgICBtYXRjaCBSZXByMzIucmVwciB3aXRoXG4gICAgfCBJbW1lZGlhdGUgLT4gKG1vZHVsZSBJIDogQmFja2VuZDMyX1MpXG4gICAgfCBOb25faW1tZWRpYXRlIC0+IChtb2R1bGUgTiA6IEJhY2tlbmQzMl9TKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnQzMiA9IHN0cnVjdFxuICBtb2R1bGUgTSA9ICh2YWwgQmFja2VuZDMyLmltcGwgOiBCYWNrZW5kMzJfUylcbiAgaW5jbHVkZSBNLlNpZ25lZFxuZW5kXG5cbm1vZHVsZSBVaW50MzIgPSBzdHJ1Y3RcbiAgbW9kdWxlIE0gPSAodmFsIEJhY2tlbmQzMi5pbXBsIDogQmFja2VuZDMyX1MpXG4gIGluY2x1ZGUgTS5VbnNpZ25lZFxuZW5kXG5cbm1vZHVsZSBJbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAaW1tZWRpYXRlNjRdIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG4gIGxldCB0eXBlcmVwX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZXJlcF9vZl9pbnQ2M1xuICBsZXQgdHlwZW5hbWVfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlbmFtZV9vZl9pbnQ2M1xuICBsZXQgemVybyA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWluX3ZhbHVlID0gQmFzZS5JbnQ2My5taW5fdmFsdWVcbiAgbGV0IG1heF92YWx1ZSA9IEJhc2UuSW50NjMubWF4X3ZhbHVlXG4gIGxldCBzaWduZWQgPSB0cnVlXG4gIGxldCBudW1fYml0cyA9IDYzXG4gIGxldCBudW1fYnl0ZXMgPSA4XG4gIGxldCBtb2RfbmFtZSA9IFwiSW50NjNcIlxuICBsZXQgZ3JlYXRlcl9lcXVhbCA9IEJhc2UuSW50NjMuKCA+PSApXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDggeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDE2IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQzMiAoSW50MzIudG9fYmFzZV9pbnQzMiB4KSBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfdHJ1bmMgeCA9IEJhc2UuSW50NjMub2ZfaW50NjRfdHJ1bmMgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50NjRfZXhuIHggPSBCYXNlLkludDYzLm9mX2ludDY0X2V4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ2M193cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2M19leG4geCA9IGlkZW50aXR5X2lmX3Bvc2l0aXZlIH5ncmVhdGVyX2VxdWFsIH56ZXJvIH5tb2RfbmFtZSB+dG9fc3RyaW5nIHhcbiAgW0BAaW5saW5lIGFsd2F5c11cbiAgOztcblxuICBtb2R1bGUgTyA9IHN0cnVjdFxuICAgIGxldCAoID49ICkgPSBCYXNlLkludDYzLiggPj0gKVxuICAgIGxldCAoIDw9ICkgPSBCYXNlLkludDYzLiggPD0gKVxuICAgIGxldCAoID0gKSA9IEJhc2UuSW50NjMuKCA9IClcbiAgICBsZXQgKCA+ICkgPSBCYXNlLkludDYzLiggPiApXG4gICAgbGV0ICggPCApID0gQmFzZS5JbnQ2My4oIDwgKVxuICAgIGxldCAoIDw+ICkgPSBCYXNlLkludDYzLiggPD4gKVxuXG4gICAgbW9kdWxlIFdyYXAgPSBzdHJ1Y3RcbiAgICAgIGxldCAoICsgKSA9IEJhc2UuSW50NjMuKCArIClcbiAgICAgIGxldCAoIC0gKSA9IEJhc2UuSW50NjMuKCAtIClcbiAgICAgIGxldCAoICogKSA9IEJhc2UuSW50NjMuKCAqIClcbiAgICAgIGxldCAoIC8gKSA9IEJhc2UuSW50NjMuKCAvIClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFVpbnQ2MyA9IHN0cnVjdFxuICB0eXBlIHQgPSBCYXNlLkludDYzLnQgW0BAZGVyaXZpbmcgZXF1YWwsIGhhc2hdXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQ2M191bmlmb3JtXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludDYzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDYzXG5cbiAgbGV0IGNvbXBhcmUgeCB5ID1cbiAgICAoKiB4IGFuZCB5IGFyZSBzaWduLWV4dGVuZGVkLCB3aGljaCBwcmVzZXJ2ZXMgdGhlIGhpZ2ggYml0ICopXG4gICAgU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmUgKEJhc2UuSW50NjMudG9faW50NjQgeCkgKEJhc2UuSW50NjMudG9faW50NjQgeSlcbiAgOztcblxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjNcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjNcbiAgbGV0IHplcm8gPSBCYXNlLkludDYzLnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjMuemVyb1xuICBsZXQgbWF4X3ZhbHVlID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyA5MjIzMzcyMDM2ODU0Nzc1ODA3TFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjNcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDYzLiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2M1wiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDYzLnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSBCYXNlLkludDYzLm9mX2ludDY0X3RydW5jIHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfYmFzZV9pbnQ2NF9leG4geCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgbGV0IHRvX2Jhc2VfaW50NjQgeCA9IEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDYzLm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjMub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyAoVWludDMyLnRvX2Jhc2VfaW50NjQgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQ2NF90cnVuYyB4ID0gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgbGV0IG9mX3VpbnQ2NF9leG4gKHggOiB1aW50NjQpIDogdCA9XG4gICAgaWYgQmFzZS5JbnQ2NC4oID49ICkgeCAwTFxuICAgIHRoZW4gQmFzZS5JbnQ2My5vZl9pbnQ2NF90cnVuYyB4XG4gICAgZWxzZSByYWlzZV9jYW5ub3RfcmVwciB+bW9kX25hbWUgfnRvX3N0cmluZzpCYXNlLkludDY0LnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogU2FtZS13aWR0aCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX2ludDYzX3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzX2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTZXhwIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgc2V4cF9vZl90IHggPSBCYXNlLlNleHAuQXRvbSAoU3RkbGliLlByaW50Zi5zcHJpbnRmIFwiJUx1XCIgKHRvX2Jhc2VfaW50NjQgeCkpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2My50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJUx1XCIgb2ZfYmFzZV9pbnQ2NF9leG4gd2l0aFxuICAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiSW50X3JlcHIuVWludDYzLnRfb2Zfc2V4cDogaW50ZWdlciBhdG9tIG5lZWRlZFwiIHNleHApXG4gIDs7XG5cbiAgbW9kdWxlIE8gPSBzdHJ1Y3RcbiAgICBsZXQgKCA+PSApIHggeSA9IGNvbXBhcmUgeCB5ID49IDBcbiAgICBsZXQgKCA8PSApIHggeSA9IGNvbXBhcmUgeCB5IDw9IDBcbiAgICBsZXQgKCA9ICkgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG4gICAgbGV0ICggPiApIHggeSA9IGNvbXBhcmUgeCB5ID4gMFxuICAgIGxldCAoIDwgKSB4IHkgPSBjb21wYXJlIHggeSA8IDBcbiAgICBsZXQgKCA8PiApIHggeSA9IGNvbXBhcmUgeCB5IDw+IDBcblxuICAgIG1vZHVsZSBXcmFwID0gc3RydWN0XG4gICAgICBsZXQgKCArICkgPSBCYXNlLkludDYzLiggKyApXG4gICAgICBsZXQgKCAtICkgPSBCYXNlLkludDYzLiggLSApXG4gICAgICBsZXQgKCAqICkgPSBCYXNlLkludDYzLiggKiApXG5cbiAgICAgIGxldCAoIC8gKSB4IHkgPVxuICAgICAgICBvZl9iYXNlX2ludDY0X3RydW5jIChCYXNlLkludDY0LiggLyApICh0b19iYXNlX2ludDY0IHgpICh0b19iYXNlX2ludDY0IHkpKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgaW5jbHVkZSBCYXNlLkNvbXBhcmFibGUuTWFrZSBbQGlubGluZWRdIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgICAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmFzZS5JbnQ2NC50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLk1ha2UgW0BpbmxpbmVkXSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgICBlbmQpXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ludDY0XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlcl9pbnQ2NFxuICBsZXQgdHlwZXJlcF9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVyZXBfb2ZfaW50NjRcbiAgbGV0IHR5cGVuYW1lX29mX3QgPSBUeXBlcmVwX2xpYi5TdGQudHlwZW5hbWVfb2ZfaW50NjRcbiAgbGV0IHplcm8gPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1pbl92YWx1ZSA9IEJhc2UuSW50NjQubWluX3ZhbHVlXG4gIGxldCBtYXhfdmFsdWUgPSBCYXNlLkludDY0Lm1heF92YWx1ZVxuICBsZXQgc2lnbmVkID0gdHJ1ZVxuICBsZXQgbnVtX2JpdHMgPSA2NFxuICBsZXQgbnVtX2J5dGVzID0gOFxuICBsZXQgbW9kX25hbWUgPSBcIkludDY0XCJcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgdG9fc3RyaW5nID0gQmFzZS5JbnQ2NC50b19zdHJpbmdcblxuICAoKiBTYW1lLXNpZ25lZG5lc3MgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQxNiB4ID0gQmFzZS5JbnQ2NC5vZl9pbnQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuICBsZXQgb2ZfaW50MzIgeCA9IEJhc2UuSW50NjQub2ZfaW50MzIgKEludDMyLnRvX2Jhc2VfaW50MzIgeCkgW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX2ludDYzIHggPSBCYXNlLkludDYzLnRvX2ludDY0IHggW0BAaW5saW5lIGFsd2F5c11cblxuICAoKiBTYW1lLXdpZHRoIGNvbnZlcnNpb25zLiAqKVxuICBsZXQgb2ZfdWludDY0X3dyYXAgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cblxuICBsZXQgb2ZfdWludDY0X2V4biB4ID0gaWRlbnRpdHlfaWZfcG9zaXRpdmUgfmdyZWF0ZXJfZXF1YWwgfnplcm8gfm1vZF9uYW1lIH50b19zdHJpbmcgeFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSA9IEJhc2UuSW50NjQuKCA+PSApXG4gICAgbGV0ICggPD0gKSA9IEJhc2UuSW50NjQuKCA8PSApXG4gICAgbGV0ICggPSApID0gQmFzZS5JbnQ2NC4oID0gKVxuICAgIGxldCAoID4gKSA9IEJhc2UuSW50NjQuKCA+IClcbiAgICBsZXQgKCA8ICkgPSBCYXNlLkludDY0LiggPCApXG4gICAgbGV0ICggPD4gKSA9IEJhc2UuSW50NjQuKCA8PiApXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2NC4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2NC4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2NC4oICogKVxuICAgICAgbGV0ICggLyApID0gQmFzZS5JbnQ2NC4oIC8gKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVWludDY0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjQudCBbQEBkZXJpdmluZyBlcXVhbCwgaGFzaF1cblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19nZW5lcmF0b3JfaW50NjRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlcl9pbnQ2NFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyX2ludDY0XG4gIGxldCBjb21wYXJlID0gU3RkbGliLkludDY0LnVuc2lnbmVkX2NvbXBhcmVcbiAgbGV0IHR5cGVyZXBfb2ZfdCA9IFR5cGVyZXBfbGliLlN0ZC50eXBlcmVwX29mX2ludDY0XG4gIGxldCB0eXBlbmFtZV9vZl90ID0gVHlwZXJlcF9saWIuU3RkLnR5cGVuYW1lX29mX2ludDY0XG4gIGxldCB6ZXJvID0gQmFzZS5JbnQ2NC56ZXJvXG4gIGxldCBtaW5fdmFsdWUgPSBCYXNlLkludDY0Lnplcm9cbiAgbGV0IG1heF92YWx1ZSA9IC0xTFxuICBsZXQgc2lnbmVkID0gZmFsc2VcbiAgbGV0IG51bV9iaXRzID0gNjRcbiAgbGV0IG51bV9ieXRlcyA9IDhcbiAgbGV0IGdyZWF0ZXJfZXF1YWwgPSBCYXNlLkludDY0LiggPj0gKVxuICBsZXQgbW9kX25hbWUgPSBcIlVpbnQ2NFwiXG4gIGxldCB0b19zdHJpbmcgPSBCYXNlLkludDY0LnRvX3N0cmluZ1xuXG4gICgqIFV0aWxpdGllcyAqKVxuICBsZXQgZXhuIHggPSBpZGVudGl0eV9pZl9wb3NpdGl2ZSB+Z3JlYXRlcl9lcXVhbCB+emVybyB+bW9kX25hbWUgfnRvX3N0cmluZyB4XG4gIFtAQGlubGluZSBhbHdheXNdXG4gIDs7XG5cbiAgKCogXCJCYXNlXCIgY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9iYXNlX2ludDY0X3RydW5jIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9iYXNlX2ludDY0X2V4biB4ID0gZXhuIHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfdHJ1bmMgeCA9IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IHRvX2Jhc2VfaW50NjRfZXhuIHggPSBleG4geCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gICgqIFNhbWUtc2lnbmVkbmVzcyBjb252ZXJzaW9ucy4gKilcbiAgbGV0IG9mX3VpbnQ4IHggPSBCYXNlLkludDY0Lm9mX2ludCB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl91aW50MTYgeCA9IEJhc2UuSW50NjQub2ZfaW50IHggW0BAaW5saW5lIGFsd2F5c11cbiAgbGV0IG9mX3VpbnQzMiB4ID0gVWludDMyLnRvX2Jhc2VfaW50NjQgeCBbQEBpbmxpbmUgYWx3YXlzXVxuXG4gIGxldCBvZl91aW50NjMgKHggOiB1aW50NjMpIDogaW50NjQgPVxuICAgIEJhc2UuSW50NjQuKCBsYW5kICkgKEJhc2UuSW50NjMudG9faW50NjQgeCkgMHg3RkZGRkZGRkZGRkZGRkZGTFxuICBbQEBpbmxpbmUgYWx3YXlzXVxuICA7O1xuXG4gICgqIFNhbWUtd2lkdGggY29udmVyc2lvbnMuICopXG4gIGxldCBvZl9pbnQ2NF93cmFwIHggPSB4IFtAQGlubGluZSBhbHdheXNdXG4gIGxldCBvZl9pbnQ2NF9leG4geCA9IGV4biB4IFtAQGlubGluZSBhbHdheXNdXG5cbiAgKCogU2V4cCBjb252ZXJzaW9ucy4gKilcbiAgbGV0IHNleHBfb2ZfdCB4ID0gQmFzZS5TZXhwLkF0b20gKFN0ZGxpYi5QcmludGYuc3ByaW50ZiBcIiVMdVwiIHgpXG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IEJhc2UuU2V4cC5MaXN0IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2NC50X29mX3NleHA6IGF0b20gbmVlZGVkXCIgc2V4cFxuICAgIHwgQmFzZS5TZXhwLkF0b20gcyAtPlxuICAgICAgKHRyeSBDYW1sLlNjYW5mLnNzY2FuZiBzIFwiJUx1XCIgRnVuLmlkIHdpdGhcbiAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIkludF9yZXByLlVpbnQ2NC50X29mX3NleHA6IGludGVnZXIgYXRvbSBuZWVkZWRcIiBzZXhwKVxuICA7O1xuXG4gIG1vZHVsZSBPID0gc3RydWN0XG4gICAgbGV0ICggPj0gKSB4IHkgPSBjb21wYXJlIHggeSA+PSAwXG4gICAgbGV0ICggPD0gKSB4IHkgPSBjb21wYXJlIHggeSA8PSAwXG4gICAgbGV0ICggPSApIHggeSA9IGNvbXBhcmUgeCB5ID0gMFxuICAgIGxldCAoID4gKSB4IHkgPSBjb21wYXJlIHggeSA+IDBcbiAgICBsZXQgKCA8ICkgeCB5ID0gY29tcGFyZSB4IHkgPCAwXG4gICAgbGV0ICggPD4gKSB4IHkgPSBjb21wYXJlIHggeSA8PiAwXG5cbiAgICBtb2R1bGUgV3JhcCA9IHN0cnVjdFxuICAgICAgbGV0ICggKyApID0gQmFzZS5JbnQ2NC4oICsgKVxuICAgICAgbGV0ICggLSApID0gQmFzZS5JbnQ2NC4oIC0gKVxuICAgICAgbGV0ICggKiApID0gQmFzZS5JbnQ2NC4oICogKVxuICAgICAgbGV0ICggLyApID0gU3RkbGliLkludDY0LnVuc2lnbmVkX2RpdlxuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIEJhc2UuQ29tcGFyYWJsZS5NYWtlIFtAaW5saW5lZF0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEdldCA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQ4IDogdCAtPiBwb3M6aW50IC0+IGludDhcblxuICAoKiA4LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQ4IDogdCAtPiBwb3M6aW50IC0+IHVpbnQ4XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X2ludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDE2XG4gIHZhbCBnZXRfaW50MTZfYmUgOiB0IC0+IHBvczppbnQgLT4gaW50MTZcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF91aW50MTZfbGUgOiB0IC0+IHBvczppbnQgLT4gdWludDE2XG4gIHZhbCBnZXRfdWludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNlxuXG4gICgqIDMyLWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIGdldF9pbnQzMl9sZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMlxuICB2YWwgZ2V0X2ludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IGludDMyXG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfdWludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMlxuICB2YWwgZ2V0X3VpbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiB1aW50MzJcblxuICAoKiA2NC1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBnZXRfaW50NjRfbGUgOiB0IC0+IHBvczppbnQgLT4gaW50NjRcbiAgdmFsIGdldF9pbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NFxuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgZ2V0X3VpbnQ2NF9sZSA6IHQgLT4gcG9zOmludCAtPiB1aW50NjRcbiAgdmFsIGdldF91aW50NjRfYmUgOiB0IC0+IHBvczppbnQgLT4gdWludDY0XG5lbmRcblxubW9kdWxlIHR5cGUgU2V0ID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIDgtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDggOiB0IC0+IHBvczppbnQgLT4gaW50OCAtPiB1bml0XG5cbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgdmFsIHNldF91aW50OCA6IHQgLT4gcG9zOmludCAtPiB1aW50OCAtPiB1bml0XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDE2IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQxNl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQxNiAtPiB1bml0XG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDE2X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNiAtPiB1bml0XG4gIHZhbCBzZXRfdWludDE2X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQxNiAtPiB1bml0XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IGludDMyIC0+IHVuaXRcbiAgdmFsIHNldF9pbnQzMl9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQzMiAtPiB1bml0XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDMyX2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMiAtPiB1bml0XG4gIHZhbCBzZXRfdWludDMyX2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQzMiAtPiB1bml0XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICB2YWwgc2V0X2ludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IGludDY0IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQ2NF9iZSA6IHQgLT4gcG9zOmludCAtPiBpbnQ2NCAtPiB1bml0XG5cbiAgKCogNjQtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIHZhbCBzZXRfdWludDY0X2xlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NCAtPiB1bml0XG4gIHZhbCBzZXRfdWludDY0X2JlIDogdCAtPiBwb3M6aW50IC0+IHVpbnQ2NCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgR2V0X2Z1bmN0aW9ucyA9IHNpZ1xuICB0eXBlIHRcblxuICAoKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHVzZSBuYXRpdmUgZW5kaWFubmVzcyAoaGVuY2UgdGhlIGBfbmVgIHN1ZmZpeCkuICopXG4gIHZhbCBnZXRfdWludDggOiB0IC0+IGludCAtPiBCYXNlLkludC50XG4gIHZhbCBnZXRfdWludDE2X25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQudFxuICB2YWwgZ2V0X2ludDMyX25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQzMi50XG4gIHZhbCBnZXRfaW50NjRfbmUgOiB0IC0+IGludCAtPiBCYXNlLkludDY0LnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTZXRfZnVuY3Rpb25zID0gc2lnXG4gIHR5cGUgdFxuXG4gICgqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG11c3QgdXNlIG5hdGl2ZSBlbmRpYW5uZXNzIChoZW5jZSB0aGUgYF9uZWAgc3VmZml4KS4gKilcbiAgdmFsIHNldF91aW50OCA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnQgLT4gdW5pdFxuICB2YWwgc2V0X3VpbnQxNl9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50LnQgLT4gdW5pdFxuICB2YWwgc2V0X2ludDMyX25lIDogdCAtPiBpbnQgLT4gQmFzZS5JbnQzMi50IC0+IHVuaXRcbiAgdmFsIHNldF9pbnQ2NF9uZSA6IHQgLT4gaW50IC0+IEJhc2UuSW50NjQudCAtPiB1bml0XG5lbmRcblxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogQ2FtbC5JbnQzMi50IC0+IENhbWwuSW50MzIudCA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IENhbWwuSW50NjQudCAtPiBDYW1sLkludDY0LnQgPSBcIiVic3dhcF9pbnQ2NFwiXG5cbm1vZHVsZSBNYWtlX2dldCAoRiA6IEdldF9mdW5jdGlvbnMpIDogR2V0IHdpdGggdHlwZSB0IDo9IEYudCA9IHN0cnVjdFxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQ4IHQgfnBvcyA9IEludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDgtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDggdCB+cG9zID0gVWludDgub2ZfYmFzZV9pbnRfdHJ1bmMgKEYuZ2V0X3VpbnQ4IHQgcG9zKVxuXG4gICgqIDE2LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF9pbnQxNl9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfdWludDE2X25lIHQgcG9zIGluXG4gICAgSW50MTYub2ZfYmFzZV9pbnRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIEludDE2Lm9mX2Jhc2VfaW50X3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeClcbiAgOztcblxuICAoKiAxNi1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IGdldF91aW50MTZfbGUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50MTZfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X3VpbnQxNl9uZSB0IHBvcyBpblxuICAgIFVpbnQxNi5vZl9iYXNlX2ludF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDE2IHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIEludDMyLm9mX2Jhc2VfaW50MzIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDMyIHggZWxzZSB4KVxuICA7O1xuXG4gIGxldCBnZXRfaW50MzJfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDMyX25lIHQgcG9zIGluXG4gICAgSW50MzIub2ZfYmFzZV9pbnQzMiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBnZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQzMl9uZSB0IHBvcyBpblxuICAgIFVpbnQzMi5vZl9iYXNlX2ludDMyX3RydW5jIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcbiAgOztcblxuICBsZXQgZ2V0X3VpbnQzMl9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50MzJfbmUgdCBwb3MgaW5cbiAgICBVaW50MzIub2ZfYmFzZV9pbnQzMl90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG4gIDs7XG5cbiAgKCogNjQtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X2ludDY0X2xlIHQgfnBvcyA9XG4gICAgbGV0IHggPSBGLmdldF9pbnQ2NF9uZSB0IHBvcyBpblxuICAgIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4XG4gIDs7XG5cbiAgbGV0IGdldF9pbnQ2NF9iZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgZ2V0X3VpbnQ2NF9sZSB0IH5wb3MgPVxuICAgIGxldCB4ID0gRi5nZXRfaW50NjRfbmUgdCBwb3MgaW5cbiAgICBVaW50NjQub2ZfYmFzZV9pbnQ2NF90cnVuYyAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgeCBlbHNlIHgpXG4gIDs7XG5cbiAgbGV0IGdldF91aW50NjRfYmUgdCB+cG9zID1cbiAgICBsZXQgeCA9IEYuZ2V0X2ludDY0X25lIHQgcG9zIGluXG4gICAgVWludDY0Lm9mX2Jhc2VfaW50NjRfdHJ1bmMgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4KVxuICA7O1xuZW5kXG5bQEBpbmxpbmUgYWx3YXlzXVxuXG5tb2R1bGUgTWFrZV9zZXQgKEYgOiBTZXRfZnVuY3Rpb25zKSA6IFNldCB3aXRoIHR5cGUgdCA6PSBGLnQgPSBzdHJ1Y3RcbiAgKCogOC1iaXQgdW5zaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF91aW50OCB0IH5wb3MgeCA9IEYuc2V0X3VpbnQ4IHQgcG9zIHhcblxuICAoKiA4LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ4IHQgfnBvcyB4ID0gc2V0X3VpbnQ4IHQgfnBvcyAoVWludDgub2ZfaW50OF93cmFwIHgpXG5cbiAgKCogMTYtYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDE2X2xlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IHggZWxzZSB4IGluXG4gICAgRi5zZXRfdWludDE2X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X3VpbnQxNl9iZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwMTYgeCBpblxuICAgIEYuc2V0X3VpbnQxNl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMTYtYml0IHNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X2ludDE2X2xlIHQgfnBvcyB4ID0gc2V0X3VpbnQxNl9sZSB0IH5wb3MgKFVpbnQxNi5vZl9pbnQxNl93cmFwIHgpXG4gIGxldCBzZXRfaW50MTZfYmUgdCB+cG9zIHggPSBzZXRfdWludDE2X2JlIHQgfnBvcyAoVWludDE2Lm9mX2ludDE2X3dyYXAgeClcblxuICAoKiAzMi1iaXQgc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfaW50MzJfbGUgdCB+cG9zIHggPVxuICAgIGxldCB4ID0gSW50MzIudG9fYmFzZV9pbnQzMiB4IGluXG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDMyX25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDMyX2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IEludDMyLnRvX2Jhc2VfaW50MzIgeCBpblxuICAgIGxldCB4ID0gaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHggaW5cbiAgICBGLnNldF9pbnQzMl9uZSB0IHBvcyB4XG4gIDs7XG5cbiAgKCogMzItYml0IHVuc2lnbmVkIHZhbHVlcyAqKVxuXG4gIGxldCBzZXRfdWludDMyX2xlIHQgfnBvcyB4ID0gc2V0X2ludDMyX2xlIHQgfnBvcyAoSW50MzIub2ZfdWludDMyX3dyYXAgeClcbiAgbGV0IHNldF91aW50MzJfYmUgdCB+cG9zIHggPSBzZXRfaW50MzJfYmUgdCB+cG9zIChJbnQzMi5vZl91aW50MzJfd3JhcCB4KVxuXG4gICgqIDY0LWJpdCBzaWduZWQgdmFsdWVzICopXG5cbiAgbGV0IHNldF9pbnQ2NF9sZSB0IH5wb3MgeCA9XG4gICAgbGV0IHggPSBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCB4IGVsc2UgeCBpblxuICAgIEYuc2V0X2ludDY0X25lIHQgcG9zIHhcbiAgOztcblxuICBsZXQgc2V0X2ludDY0X2JlIHQgfnBvcyB4ID1cbiAgICBsZXQgeCA9IGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXA2NCB4IGluXG4gICAgRi5zZXRfaW50NjRfbmUgdCBwb3MgeFxuICA7O1xuXG4gICgqIDY0LWJpdCB1bnNpZ25lZCB2YWx1ZXMgKilcblxuICBsZXQgc2V0X3VpbnQ2NF9sZSB0IH5wb3MgeCA9IHNldF9pbnQ2NF9sZSB0IH5wb3MgKEludDY0Lm9mX3VpbnQ2NF93cmFwIHgpXG4gIGxldCBzZXRfdWludDY0X2JlIHQgfnBvcyB4ID0gc2V0X2ludDY0X2JlIHQgfnBvcyAoSW50NjQub2ZfdWludDY0X3dyYXAgeClcbmVuZFxuW0BAaW5saW5lIGFsd2F5c11cblxubW9kdWxlIEJ5dGVzMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCeXRlcy50XG5cbiAgZXh0ZXJuYWwgZ2V0X3VpbnQ4IDogQnl0ZXMudCAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBCeXRlcy50IC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2dVwiXG4gIGV4dGVybmFsIGdldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gQ2FtbC5JbnQ2NC50ID0gXCIlY2FtbF9ieXRlc19nZXQ2NHVcIlxuICBleHRlcm5hbCBzZXRfdWludDggOiBCeXRlcy50IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuICBleHRlcm5hbCBzZXRfdWludDE2X25lIDogQnl0ZXMudCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDE2dVwiXG4gIGV4dGVybmFsIHNldF9pbnQzMl9uZSA6IEJ5dGVzLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuICBleHRlcm5hbCBzZXRfaW50NjRfbmUgOiBCeXRlcy50IC0+IGludCAtPiBDYW1sLkludDY0LnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0NjR1XCJcbmVuZFxuXG5tb2R1bGUgQnl0ZXMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dldCAoQnl0ZXMpXG4gIGluY2x1ZGUgTWFrZV9zZXQgKEJ5dGVzKVxuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VfZ2V0IChCeXRlczBVbnNhZmUpXG4gICAgaW5jbHVkZSBNYWtlX3NldCAoQnl0ZXMwVW5zYWZlKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMCA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBnZXRfdWludDE2X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IGludCA9IFwiJWNhbWxfc3RyaW5nX2dldDE2XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCA9IFwiJWNhbWxfc3RyaW5nX2dldDMyXCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogU3RyaW5nLnQgLT4gaW50IC0+IENhbWwuSW50NjQudCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nMFVuc2FmZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudFxuXG4gIGV4dGVybmFsIGdldF91aW50OCA6IFN0cmluZy50IC0+IGludCAtPiBpbnQgPSBcIiVzdHJpbmdfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIGdldF91aW50MTZfbmUgOiBTdHJpbmcudCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9zdHJpbmdfZ2V0MTZ1XCJcbiAgZXh0ZXJuYWwgZ2V0X2ludDMyX25lIDogU3RyaW5nLnQgLT4gaW50IC0+IENhbWwuSW50MzIudCA9IFwiJWNhbWxfc3RyaW5nX2dldDMydVwiXG4gIGV4dGVybmFsIGdldF9pbnQ2NF9uZSA6IFN0cmluZy50IC0+IGludCAtPiBDYW1sLkludDY0LnQgPSBcIiVjYW1sX3N0cmluZ19nZXQ2NHVcIlxuZW5kXG5cbm1vZHVsZSBTdHJpbmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX2dldCAoU3RyaW5nMClcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX2dldCAoU3RyaW5nMFVuc2FmZSlcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEJhc2VcblxubW9kdWxlIEJpZ3N0cmluZzAgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICAoIGNoYXJcbiAgICAsIFN0ZGxpYi5CaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdFxuICAgICwgU3RkbGliLkJpZ2FycmF5LmNfbGF5b3V0IClcbiAgICAgIFN0ZGxpYi5CaWdhcnJheS5BcnJheTEudFxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IsICdjKSBTdGRsaWIuQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCBnZXQgOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gJ2EgPSBcIiVjYW1sX2JhX3JlZl8xXCJcbiAgZXh0ZXJuYWwgc2V0IDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV91bnNhZmVfc2V0XzFcIlxuICBleHRlcm5hbCBkaW0gOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8xXCJcbmVuZFxuXG5pbmNsdWRlIEJpZ3N0cmluZzBcblxuZXh0ZXJuYWwgYXV4X2NyZWF0ZSA6IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlczppbnQgLT4gc2l6ZTppbnQgLT4gdCA9IFwiYmlnc3RyaW5nX2FsbG9jXCJcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxuXG4oKiBPbmUgbmVlZHMgdG8gdXNlIFtDYW1sLlN5cy53b3JkX3NpemVdIHNvIHRoYXQgaXRzIHZhbHVlIGlzIGtub3duIGF0IGNvbXBpbGUtdGltZS4gKilcbmxldCBhcmNoX3NpeHR5Zm91ciA9IENhbWwuU3lzLndvcmRfc2l6ZSA9IDY0XG5sZXQgYXJjaF9iaWdfZW5kaWFuID0gQ2FtbC5TeXMuYmlnX2VuZGlhblxubGV0IG5vdF9vbl8zMmJpdCA9IENhbWwuU3lzLndvcmRfc2l6ZSA+IDMyXG5cbmxldCBjcmVhdGUgP21heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyBzaXplID1cbiAgbGV0IG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyA9XG4gICAgT3B0aW9uLnZhbHVlIG1heF9tZW1fd2FpdGluZ19nY19pbl9ieXRlcyB+ZGVmYXVsdDooLTEpXG4gIGluXG4gICgqIFRoaXMgY2hlY2sgaXMgaW1wb3J0YW50IGJlY2F1c2UgW2F1eF9jcmVhdGUgfnNpemU6KC0xKV0gcmFpc2VzIFtPdXRfb2ZfbWVtb3J5XSwgd2hpY2hcbiAgICAgY291bGQgYmUgY29uZnVzaW5nIGR1cmluZyBkZWJ1Z2dpbmcuICopXG4gIGlmIHNpemUgPCAwIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCJjcmVhdGU6IHNpemUgPSAlZCA8IDBcIiBzaXplKTtcbiAgYXV4X2NyZWF0ZSB+bWF4X21lbV93YWl0aW5nX2djX2luX2J5dGVzIH5zaXplXG47O1xuXG5sZXQgbGVuZ3RoID0gQXJyYXkxLmRpbVxuXG5leHRlcm5hbCBpc19tbWFwcGVkIDogdCAtPiBib29sID0gXCJiaWdzdHJpbmdfaXNfbW1hcHBlZF9zdHViXCIgW0BAbm9hbGxvY11cblxubGV0IGluaXQgbiB+ZiA9XG4gIGxldCB0ID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdC57aX0gPC0gZiBpXG4gIGRvbmU7XG4gIHRcbjs7XG5cbmxldCBjaGVja19hcmdzIH5sb2MgfnBvcyB+bGVuIChic3RyIDogdCkgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgKGxvYyBeIFwiOiBwb3MgPCAwXCIpO1xuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgKGxvYyBeIFwiOiBsZW4gPCAwXCIpO1xuICBsZXQgYnN0cl9sZW4gPSBsZW5ndGggYnN0ciBpblxuICAoKiBCZSBjYXJlZnVsIHdpdGggb3ZlcmZsb3chICBXZSBjb3VsZCBoYXZlIGJvZ29ucyBsaWtlIFtwb3MgPSBJbnQubWF4X3ZhbHVlXSBvciBbbGVuID1cbiAgICAgSW50Lm1heF92YWx1ZV0gcGFzc2VkIGJ5IHRoZSB1c2VyLiAqKVxuICBpZiBic3RyX2xlbiAtIHBvcyA8IGxlblxuICB0aGVuIGludmFsaWRfYXJnIChzcHJpbnRmIFwiQmlnc3RyaW5nLiVzOiBsZW5ndGgoYnN0cikgPCBwb3MgKyBsZW5cIiBsb2MpXG47O1xuXG5sZXQgZ2V0X29wdF9sZW4gYnN0ciB+cG9zID0gZnVuY3Rpb25cbiAgfCBTb21lIGxlbiAtPiBsZW5cbiAgfCBOb25lIC0+IGxlbmd0aCBic3RyIC0gcG9zXG47O1xuXG4oKiBCbGl0dGluZyAqKVxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdFxuICA6ICBzcmM6dFxuICAtPiBzcmNfcG9zOmludFxuICAtPiBkc3Q6dFxuICAtPiBkc3RfcG9zOmludFxuICAtPiBsZW46aW50XG4gIC0+IHVuaXRcbiAgPSBcImJpZ3N0cmluZ19ibGl0X3N0dWJcIlxuW0BAbm9hbGxvY11cblxuKCogRXhwb3NpbmcgdGhlIGV4dGVybmFsIHZlcnNpb24gb2YgZ2V0L3NldCBzdXBwb3J0cyBiZXR0ZXIgaW5saW5pbmcuICopXG5leHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcblxubW9kdWxlIEJpZ3N0cmluZ19zZXF1ZW5jZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSBsZW5cbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuZW5kXG5cbm1vZHVsZSBCeXRlc19zZXF1ZW5jZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBieXRlc1xuXG4gIGxldCBjcmVhdGUgfmxlbiA9IEJ5dGVzLmNyZWF0ZSBsZW5cbiAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuZW5kXG5cbmluY2x1ZGUgQmxpdC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuXG4gICAgbGV0IHVuc2FmZV9ibGl0ID0gdW5zYWZlX2JsaXRcbiAgZW5kKVxuXG5tb2R1bGUgRnJvbV9ieXRlcyA9XG4gIEJsaXQuTWFrZV9kaXN0aW5jdFxuICAgIChCeXRlc19zZXF1ZW5jZSlcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6Ynl0ZXNcbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OnRcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9ieXRlc19iaWdzdHJpbmdfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgQmxpdC5NYWtlX2Rpc3RpbmN0XG4gICAgKEJpZ3N0cmluZ19zZXF1ZW5jZSlcbiAgICAoc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6dFxuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6Ynl0ZXNcbiAgICAgICAgLT4gZHN0X3BvczppbnRcbiAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAtPiB1bml0XG4gICAgICAgID0gXCJiaWdzdHJpbmdfYmxpdF9iaWdzdHJpbmdfYnl0ZXNfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJ5dGVzX3NlcXVlbmNlXG4gICAgZW5kKVxuXG5tb2R1bGUgRnJvbV9zdHJpbmcgPVxuICBCbGl0Lk1ha2VfZGlzdGluY3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGhcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOnN0cmluZ1xuICAgICAgICAtPiBzcmNfcG9zOmludFxuICAgICAgICAtPiBkc3Q6dFxuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImJpZ3N0cmluZ19ibGl0X3N0cmluZ19iaWdzdHJpbmdfc3R1YlwiXG4gICAgICBbQEBub2FsbG9jXVxuXG4gICAgICBpbmNsdWRlIEJpZ3N0cmluZ19zZXF1ZW5jZVxuICAgIGVuZClcblxubW9kdWxlIFRvX3N0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFRvX2J5dGVzXG4gIGluY2x1ZGUgQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnc3RyaW5nMCkgKFRvX2J5dGVzKVxuZW5kXG5cbmxldCBvZl9zdHJpbmcgPSBGcm9tX3N0cmluZy5zdWJvXG5sZXQgb2ZfYnl0ZXMgPSBGcm9tX2J5dGVzLnN1Ym9cbmxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcuc3Vib1xubGV0IHRvX2J5dGVzID0gVG9fYnl0ZXMuc3Vib1xubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxubGV0IHRfb2Zfc2V4cCA6IFNleHAudCAtPiB0ID0gZnVuY3Rpb25cbiAgfCBBdG9tIHN0ciAtPiBvZl9zdHJpbmcgc3RyXG4gIHwgTGlzdCBfIGFzIHNleHAgLT5cbiAgICBTZXhwbGliMC5TZXhwX2NvbnYub2Zfc2V4cF9lcnJvciBcImJpZ3N0cmluZ19vZl9zZXhwOiBhdG9tIG5lZWRlZFwiIHNleHBcbjs7XG5cbmxldCBjb3B5IHQgOiB0ID0gc3ViIHQgfnBvczowIH5sZW46KGxlbmd0aCB0KVxuXG5sZXQgY29uY2F0ID1cbiAgbGV0IGFwcGVuZCB+c3JjIH5kc3QgfmRzdF9wb3NfcmVmID1cbiAgICBsZXQgbGVuID0gbGVuZ3RoIHNyYyBpblxuICAgIGxldCBzcmNfcG9zID0gMCBpblxuICAgIGxldCBkc3RfcG9zID0gIWRzdF9wb3NfcmVmIGluXG4gICAgYmxpdCB+ZHN0IH5kc3RfcG9zIH5zcmMgfnNyY19wb3MgfmxlbjtcbiAgICBkc3RfcG9zX3JlZiA6PSBkc3RfcG9zICsgbGVuXG4gIGluXG4gIGZ1biA/c2VwIGxpc3QgLT5cbiAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICB8IFtdIC0+IGNyZWF0ZSAwXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIGxldCBoZWFkX2xlbiA9IGxlbmd0aCBoZWFkIGluXG4gICAgICBsZXQgc2VwX2xlbiA9IE9wdGlvbi52YWx1ZV9tYXAgc2VwIH5mOmxlbmd0aCB+ZGVmYXVsdDowIGluXG4gICAgICBsZXQgdGFpbF9jb3VudCA9IExpc3QubGVuZ3RoIHRhaWwgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBoZWFkX2xlbiArIChzZXBfbGVuICogdGFpbF9jb3VudCkgKyBMaXN0LnN1bSAobW9kdWxlIEludCkgdGFpbCB+ZjpsZW5ndGhcbiAgICAgIGluXG4gICAgICBsZXQgZHN0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgbGV0IGRzdF9wb3NfcmVmID0gcmVmIDAgaW5cbiAgICAgIGFwcGVuZCB+c3JjOmhlYWQgfmRzdCB+ZHN0X3Bvc19yZWY7XG4gICAgICBMaXN0Lml0ZXIgdGFpbCB+ZjooZnVuIHNyYyAtPlxuICAgICAgICAobWF0Y2ggc2VwIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgfCBTb21lIHNlcCAtPiBhcHBlbmQgfnNyYzpzZXAgfmRzdCB+ZHN0X3Bvc19yZWYpO1xuICAgICAgICBhcHBlbmQgfnNyYyB+ZHN0IH5kc3RfcG9zX3JlZik7XG4gICAgICBhc3NlcnQgKCFkc3RfcG9zX3JlZiA9IGxlbik7XG4gICAgICBkc3Rcbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1zZXQgOiB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiBjaGFyIC0+IHVuaXQgPSBcImJpZ3N0cmluZ19tZW1zZXRfc3R1YlwiXG5bQEBub2FsbG9jXVxuXG5sZXQgbWVtc2V0IHQgfnBvcyB+bGVuIGMgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuIH5wb3MgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdCk7XG4gIHVuc2FmZV9tZW1zZXQgdCB+cG9zIH5sZW4gY1xuOztcblxuKCogQ29tcGFyaXNvbiAqKVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY21wXG4gIDogIHRcbiAgLT4gcG9zMTppbnRcbiAgLT4gdFxuICAtPiBwb3MyOmludFxuICAtPiBsZW46aW50XG4gIC0+IGludFxuICA9IFwiYmlnc3RyaW5nX21lbWNtcF9zdHViXCJcbltAQG5vYWxsb2NdXG5cbmxldCBtZW1jbXAgdDEgfnBvczEgdDIgfnBvczIgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG4gfnBvczpwb3MxIH5sZW4gfnRvdGFsX2xlbmd0aDoobGVuZ3RoIHQxKTtcbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczIgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDIpO1xuICB1bnNhZmVfbWVtY21wIHQxIH5wb3MxIHQyIH5wb3MyIH5sZW5cbjs7XG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXBfYnl0ZXNcbiAgOiAgdFxuICAtPiBwb3MxOmludFxuICAtPiBCeXRlcy50XG4gIC0+IHBvczI6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gaW50XG4gID0gXCJiaWdzdHJpbmdfbWVtY21wX2J5dGVzX3N0dWJcIlxuW0BAbm9hbGxvY11cblxubGV0IG1lbWNtcF9ieXRlcyB0MSB+cG9zMSBieXRlcyB+cG9zMiB+bGVuID1cbiAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4biB+cG9zOnBvczEgfmxlbiB+dG90YWxfbGVuZ3RoOihsZW5ndGggdDEpO1xuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmNoZWNrX3Bvc19sZW5fZXhuXG4gICAgfnBvczpwb3MyXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJ5dGVzLmxlbmd0aCBieXRlcyk7XG4gIHVuc2FmZV9tZW1jbXBfYnl0ZXMgdDEgfnBvczEgYnl0ZXMgfnBvczIgfmxlblxuOztcblxubGV0IGNvbXBhcmUgdDEgdDIgPVxuICBpZiBwaHlzX2VxdWFsIHQxIHQyXG4gIHRoZW4gMFxuICBlbHNlIChcbiAgICBsZXQgbGVuMSA9IGxlbmd0aCB0MSBpblxuICAgIGxldCBsZW4yID0gbGVuZ3RoIHQyIGluXG4gICAgbGV0IGxlbiA9IEludC5taW4gbGVuMSBsZW4yIGluXG4gICAgbWF0Y2ggdW5zYWZlX21lbWNtcCB0MSB+cG9zMTowIHQyIH5wb3MyOjAgfmxlbiB3aXRoXG4gICAgfCAwIC0+IGlmIGxlbjEgPCBsZW4yIHRoZW4gLTEgZWxzZSBpZiBsZW4xID4gbGVuMiB0aGVuIDEgZWxzZSAwXG4gICAgfCBuIC0+IG4pXG47O1xuXG5leHRlcm5hbCBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbiAgOiAgSGFzaC5zdGF0ZVxuICAtPiB0XG4gIC0+IEhhc2guc3RhdGVcbiAgPSBcImludGVybmFsaGFzaF9mb2xkX2JpZ3N0cmluZ1wiXG5bQEBub2FsbG9jXVxuXG5sZXQgX21ha2luZ19zdXJlX3RoZV9DX2JpbmRpbmdfdGFrZXNfYW5faW50ICh4IDogSGFzaC5zdGF0ZSkgPSAoeCA6PiBpbnQpXG5sZXQgaGFzaF9mb2xkX3QgPSBpbnRlcm5hbGhhc2hfZm9sZF9iaWdzdHJpbmdcbmxldCBoYXNoID0gUHB4X2hhc2hfbGliLlN0ZC5IYXNoLm9mX2ZvbGQgaGFzaF9mb2xkX3RcblxudHlwZSB0X2Zyb3plbiA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxubGV0IGVxdWFsIHQxIHQyID1cbiAgaWYgcGh5c19lcXVhbCB0MSB0MlxuICB0aGVuIHRydWVcbiAgZWxzZSAoXG4gICAgbGV0IGxlbjEgPSBsZW5ndGggdDEgaW5cbiAgICBsZXQgbGVuMiA9IGxlbmd0aCB0MiBpblxuICAgIEludC5lcXVhbCBsZW4xIGxlbjIgJiYgSW50LmVxdWFsICh1bnNhZmVfbWVtY21wIHQxIH5wb3MxOjAgdDIgfnBvczI6MCB+bGVuOmxlbjEpIDApXG47O1xuXG4oKiBTZWFyY2ggKilcblxuZXh0ZXJuYWwgdW5zYWZlX2ZpbmQgOiB0IC0+IGNoYXIgLT4gcG9zOmludCAtPiBsZW46aW50IC0+IGludCA9IFwiYmlnc3RyaW5nX2ZpbmRcIlxuW0BAbm9hbGxvY11cblxubGV0IGZpbmQgPyhwb3MgPSAwKSA/bGVuIGNociBic3RyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIGJzdHIgfnBvcyBsZW4gaW5cbiAgY2hlY2tfYXJncyB+bG9jOlwiZmluZFwiIH5wb3MgfmxlbiBic3RyO1xuICBsZXQgcmVzID0gdW5zYWZlX2ZpbmQgYnN0ciBjaHIgfnBvcyB+bGVuIGluXG4gIGlmIHJlcyA8IDAgdGhlbiBOb25lIGVsc2UgU29tZSByZXNcbjs7XG5cbigqIHZpbTogc2V0IGZpbGV0eXBlPW9jYW1sIDogKilcblxuKCogQmluYXJ5LXBhY2tpbmcgbGlrZSBhY2Nlc3NvcnMgKilcblxuZXh0ZXJuYWwgaW50MzJfb2ZfaW50IDogaW50IC0+IGludDMyID0gXCIlaW50MzJfb2ZfaW50XCJcbmV4dGVybmFsIGludDMyX3RvX2ludCA6IGludDMyIC0+IGludCA9IFwiJWludDMyX3RvX2ludFwiXG5leHRlcm5hbCBpbnQ2NF9vZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgaW50NjRfdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIHN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbmV4dGVybmFsIHN3YXAzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuZXh0ZXJuYWwgc3dhcDY0IDogaW50NjQgLT4gaW50NjQgPSBcIiVic3dhcF9pbnQ2NFwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzE2IDogdCAtPiBpbnQgLT4gaW50ID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9nZXRfMzIgOiB0IC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCB1bnNhZmVfZ2V0XzY0IDogdCAtPiBpbnQgLT4gaW50NjQgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQ2NHVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF8xNiA6IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MTZ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfMzIgOiB0IC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIHVuc2FmZV9zZXRfNjQgOiB0IC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0NjR1XCJcblxubGV0IGdldF8xNiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwiZ2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX2dldF8xNiB0IHBvc1xuOztcblxubGV0IGdldF8zMiAodCA6IHQpIChwb3MgOiBpbnQpIDogaW50MzIgPVxuICBjaGVja19hcmdzIH5sb2M6XCJnZXRfMzJcIiB+cG9zIH5sZW46NCB0O1xuICB1bnNhZmVfZ2V0XzMyIHQgcG9zXG47O1xuXG5sZXQgZ2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgOiBpbnQ2NCA9XG4gIGNoZWNrX2FyZ3MgfmxvYzpcImdldF82NFwiIH5wb3Mgfmxlbjo4IHQ7XG4gIHVuc2FmZV9nZXRfNjQgdCBwb3Ncbjs7XG5cbmxldCBzZXRfMTZfdHJ1bmMgKHQgOiB0KSAocG9zIDogaW50KSAodiA6IGludCkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzE2XCIgfnBvcyB+bGVuOjIgdDtcbiAgdW5zYWZlX3NldF8xNiB0IHBvcyB2XG47O1xuXG5sZXQgc2V0XzMyICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQzMikgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzMyXCIgfnBvcyB+bGVuOjQgdDtcbiAgdW5zYWZlX3NldF8zMiB0IHBvcyB2XG47O1xuXG5sZXQgc2V0XzY0ICh0IDogdCkgKHBvcyA6IGludCkgKHYgOiBpbnQ2NCkgOiB1bml0ID1cbiAgY2hlY2tfYXJncyB+bG9jOlwic2V0XzY0XCIgfnBvcyB+bGVuOjggdDtcbiAgdW5zYWZlX3NldF82NCB0IHBvcyB2XG47O1xuXG5sZXQgc2lnbl9leHRlbmRfMTYgdSA9ICh1IGxzbCAoSW50Lm51bV9iaXRzIC0gMTYpKSBhc3IgKEludC5udW1fYml0cyAtIDE2KVxuXG5sZXQgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYyA9XG4gIGlmIHggPCAwIHx8IHggPiAweEZGRkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAxNi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYyA9XG4gIGlmIHggPCAtMHg4MDAwIHx8IHggPiAweDdGRkZcbiAgdGhlbiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCAoc2lnbmVkKSAxNi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQ4IHggfmxvYyA9XG4gIGlmIHggPCAwIHx8IHggPiAweEZGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgdW5zaWduZWQgOC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDggeCB+bG9jID1cbiAgaWYgeCA8IC0weDgwIHx8IHggPiAweDdGXG4gIHRoZW4gaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgOC1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX2ludDMyID1cbiAgaWYgbm90IGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIF8gfmxvYzpfIC0+ICgpXG4gIGVsc2VcbiAgICBmdW4geCB+bG9jIC0+XG4gICAgICBpZiB4ID49IC0xIGxzbCAzMSAmJiB4IDwgMSBsc2wgMzFcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaW52YWxpZF9hcmcgKHNwcmludGYgXCIlczogJWQgaXMgbm90IGEgdmFsaWQgKHNpZ25lZCkgMzItYml0IGludGVnZXJcIiBsb2MgeClcbjs7XG5cbmxldCBjaGVja192YWxpZF91aW50MzIgPVxuICBpZiBub3QgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGZ1biB4IH5sb2MgLT5cbiAgICAgIGlmIHggPj0gMFxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuICBlbHNlXG4gICAgZnVuIHggfmxvYyAtPlxuICAgICAgaWYgeCA+PSAwICYmIHggPCAxIGxzbCAzMlxuICAgICAgdGhlbiAoKVxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIiVzOiAlZCBpcyBub3QgYSB2YWxpZCB1bnNpZ25lZCAzMi1iaXQgaW50ZWdlclwiIGxvYyB4KVxuOztcblxubGV0IGNoZWNrX3ZhbGlkX3VpbnQ2NCB4IH5sb2MgPVxuICBpZiB4ID49IDBcbiAgdGhlbiAoKVxuICBlbHNlIGludmFsaWRfYXJnIChzcHJpbnRmIFwiJXM6ICVkIGlzIG5vdCBhIHZhbGlkIHVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyXCIgbG9jIHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfaW50MTYgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpXG5sZXQgdW5zYWZlX3JlYWRfaW50MTZfc3dhcCB0IH5wb3MgPSBzaWduX2V4dGVuZF8xNiAoc3dhcDE2ICh1bnNhZmVfZ2V0XzE2IHQgcG9zKSlcbmxldCB1bnNhZmVfd3JpdGVfaW50MTYgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzE2IHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfaW50MTZfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgKHN3YXAxNiB4KVxubGV0IHJlYWRfaW50MTYgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKGdldF8xNiB0IHBvcylcbmxldCByZWFkX2ludDE2X3N3YXAgdCB+cG9zID0gc2lnbl9leHRlbmRfMTYgKHN3YXAxNiAoZ2V0XzE2IHQgcG9zKSlcblxubGV0IHdyaXRlX2ludDE2X2V4biB0IH5wb3MgeCA9XG4gIGNoZWNrX3ZhbGlkX2ludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV9pbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgeFxuOztcblxubGV0IHdyaXRlX2ludDE2X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfaW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDE2XCI7XG4gIHNldF8xNl90cnVuYyB0IHBvcyAoc3dhcDE2IHgpXG47O1xuXG5sZXQgdW5zYWZlX3JlYWRfdWludDE2IHQgfnBvcyA9IHVuc2FmZV9nZXRfMTYgdCBwb3NcbmxldCB1bnNhZmVfcmVhZF91aW50MTZfc3dhcCB0IH5wb3MgPSBzd2FwMTYgKHVuc2FmZV9nZXRfMTYgdCBwb3MpXG5sZXQgdW5zYWZlX3dyaXRlX3VpbnQxNiB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgeFxubGV0IHVuc2FmZV93cml0ZV91aW50MTZfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMTYgdCBwb3MgKHN3YXAxNiB4KVxubGV0IHJlYWRfdWludDE2IHQgfnBvcyA9IGdldF8xNiB0IHBvc1xubGV0IHJlYWRfdWludDE2X3N3YXAgdCB+cG9zID0gc3dhcDE2IChnZXRfMTYgdCBwb3MpXG5cbmxldCB3cml0ZV91aW50MTZfZXhuIHQgfnBvcyB4ID1cbiAgY2hlY2tfdmFsaWRfdWludDE2IHggfmxvYzpcIkJpZ3N0cmluZy53cml0ZV91aW50MTZcIjtcbiAgc2V0XzE2X3RydW5jIHQgcG9zIHhcbjs7XG5cbmxldCB3cml0ZV91aW50MTZfc3dhcF9leG4gdCB+cG9zIHggPVxuICAoKiBPbWl0IFwiX3N3YXBcIiBmcm9tIHRoZSBlcnJvciBtZXNzYWdlIGl0J3MgYmktZW5kaWFuLiAqKVxuICBjaGVja192YWxpZF91aW50MTYgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX3VpbnQxNlwiO1xuICBzZXRfMTZfdHJ1bmMgdCBwb3MgKHN3YXAxNiB4KVxuOztcblxubGV0IHVuc2FmZV9yZWFkX2ludDMyX2ludCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKHVuc2FmZV9nZXRfMzIgdCBwb3MpXG5sZXQgdW5zYWZlX3JlYWRfaW50MzJfaW50X3N3YXAgdCB+cG9zID0gaW50MzJfdG9faW50IChzd2FwMzIgKHVuc2FmZV9nZXRfMzIgdCBwb3MpKVxubGV0IHVuc2FmZV9yZWFkX2ludDMyIHQgfnBvcyA9IHVuc2FmZV9nZXRfMzIgdCBwb3NcbmxldCB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIHQgfnBvcyA9IHN3YXAzMiAodW5zYWZlX2dldF8zMiB0IHBvcylcbmxldCB1bnNhZmVfd3JpdGVfaW50MzIgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIHhcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcCB0IH5wb3MgeCA9IHVuc2FmZV9zZXRfMzIgdCBwb3MgKHN3YXAzMiB4KVxubGV0IHVuc2FmZV93cml0ZV9pbnQzMl9pbnQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChpbnQzMl9vZl9pbnQgeClcbmxldCB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXAgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzMyIHQgcG9zIChzd2FwMzIgKGludDMyX29mX2ludCB4KSlcbmxldCByZWFkX2ludDMyX2ludCB0IH5wb3MgPSBpbnQzMl90b19pbnQgKGdldF8zMiB0IHBvcylcbmxldCByZWFkX2ludDMyX2ludF9zd2FwIHQgfnBvcyA9IGludDMyX3RvX2ludCAoc3dhcDMyIChnZXRfMzIgdCBwb3MpKVxubGV0IHJlYWRfaW50MzIgdCB+cG9zID0gZ2V0XzMyIHQgcG9zXG5sZXQgcmVhZF9pbnQzMl9zd2FwIHQgfnBvcyA9IHN3YXAzMiAoZ2V0XzMyIHQgcG9zKVxubGV0IHdyaXRlX2ludDMyIHQgfnBvcyB4ID0gc2V0XzMyIHQgcG9zIHhcbmxldCB3cml0ZV9pbnQzMl9zd2FwIHQgfnBvcyB4ID0gc2V0XzMyIHQgcG9zIChzd2FwMzIgeClcblxubGV0IHdyaXRlX2ludDMyX2ludF9leG4gdCB+cG9zIHggPVxuICBjaGVja192YWxpZF9pbnQzMiB4IH5sb2M6XCJCaWdzdHJpbmcud3JpdGVfaW50MzJfaW50XCI7XG4gIHNldF8zMiB0IHBvcyAoaW50MzJfb2ZfaW50IHgpXG47O1xuXG5sZXQgd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuIHQgfnBvcyB4ID1cbiAgKCogT21pdCBcIl9zd2FwXCIgZnJvbSB0aGUgZXJyb3IgbWVzc2FnZSBpdCdzIGJpLWVuZGlhbi4gKilcbiAgY2hlY2tfdmFsaWRfaW50MzIgeCB+bG9jOlwiQmlnc3RyaW5nLndyaXRlX2ludDMyX2ludFwiO1xuICBzZXRfMzIgdCBwb3MgKHN3YXAzMiAoaW50MzJfb2ZfaW50IHgpKVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnQgdCB+cG9zID0gaW50NjRfdG9faW50ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKVxuXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV9yZWFkX2ludDY0X2ludF9zd2FwIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludCAoc3dhcDY0ICh1bnNhZmVfZ2V0XzY0IHQgcG9zKSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3JlYWRfaW50NjQgdCB+cG9zID0gdW5zYWZlX2dldF82NCB0IHBvc1xubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIHQgfnBvcyA9IHN3YXA2NCAodW5zYWZlX2dldF82NCB0IHBvcylcbmxldFtAaW5saW5lIGFsd2F5c10gdW5zYWZlX3dyaXRlX2ludDY0IHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyB4XG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIHQgfnBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyAoc3dhcDY0IHgpXG5sZXRbQGlubGluZSBhbHdheXNdIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnQgdCB+cG9zIHggPSB1bnNhZmVfc2V0XzY0IHQgcG9zIChpbnQ2NF9vZl9pbnQgeClcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1bnNhZmVfd3JpdGVfaW50NjRfaW50X3N3YXAgdCB+cG9zIHggPVxuICB1bnNhZmVfc2V0XzY0IHQgcG9zIChzd2FwNjQgKGludDY0X29mX2ludCB4KSlcbjs7XG5cbmxldFtAaW5saW5lIGFsd2F5c10gcmVhZF9pbnQ2NF9pbnQgdCB+cG9zID0gaW50NjRfdG9faW50IChnZXRfNjQgdCBwb3MpXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfaW50X3N3YXAgdCB+cG9zID0gaW50NjRfdG9faW50IChzd2FwNjQgKGdldF82NCB0IHBvcykpXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjQgdCB+cG9zID0gZ2V0XzY0IHQgcG9zXG5sZXRbQGlubGluZSBhbHdheXNdIHJlYWRfaW50NjRfc3dhcCB0IH5wb3MgPSBzd2FwNjQgKGdldF82NCB0IHBvcylcbmxldCB3cml0ZV9pbnQ2NCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyB4XG5sZXQgd3JpdGVfaW50NjRfc3dhcCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoc3dhcDY0IHgpXG5sZXQgd3JpdGVfaW50NjRfaW50IHQgfnBvcyB4ID0gc2V0XzY0IHQgcG9zIChpbnQ2NF9vZl9pbnQgeClcbmxldCB3cml0ZV9pbnQ2NF9pbnRfc3dhcCB0IH5wb3MgeCA9IHNldF82NCB0IHBvcyAoc3dhcDY0IChpbnQ2NF9vZl9pbnQgeCkpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfaW50MTYgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDE2X3N3YXAgZWxzZSB1bnNhZmVfcmVhZF9pbnQxNlxuOztcblxubGV0IHVuc2FmZV9nZXRfdWludDE2X2JlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3JlYWRfdWludDE2IGVsc2UgdW5zYWZlX3JlYWRfdWludDE2X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X3VpbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX3VpbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfdWludDE2XG47O1xuXG5sZXQgZ2V0X2ludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF9pbnQxNiBlbHNlIHJlYWRfaW50MTZfc3dhcFxubGV0IGdldF9pbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MTZfc3dhcCBlbHNlIHJlYWRfaW50MTZcbmxldCBnZXRfdWludDE2X2JlID0gaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gcmVhZF91aW50MTYgZWxzZSByZWFkX3VpbnQxNl9zd2FwXG5sZXQgZ2V0X3VpbnQxNl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfdWludDE2X3N3YXAgZWxzZSByZWFkX3VpbnQxNlxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNiBlbHNlIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQxNl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDE2XG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2IGVsc2UgdW5zYWZlX3dyaXRlX3VpbnQxNl9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF91aW50MTZfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfdWludDE2X3N3YXAgZWxzZSB1bnNhZmVfd3JpdGVfdWludDE2XG47O1xuXG5sZXQgc2V0X2ludDE2X2JlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X2V4biBlbHNlIHdyaXRlX2ludDE2X3N3YXBfZXhuXG5sZXQgc2V0X2ludDE2X2xlX2V4biA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDE2X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MTZfZXhuXG5cbmxldCBzZXRfdWludDE2X2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9leG4gZWxzZSB3cml0ZV91aW50MTZfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfdWludDE2X2xlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX3VpbnQxNl9zd2FwX2V4biBlbHNlIHdyaXRlX3VpbnQxNl9leG5cbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMiBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDMyX3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50MzIgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyXG47O1xuXG5sZXQgZ2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyIGVsc2UgcmVhZF9pbnQzMl9zd2FwXG5sZXQgZ2V0X2ludDMyX3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDMyX3N3YXAgZWxzZSByZWFkX2ludDMyXG5sZXQgc2V0X2ludDMyX3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQzMiBlbHNlIHdyaXRlX2ludDMyX3N3YXBcbmxldCBzZXRfaW50MzJfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX3N3YXAgZWxzZSB3cml0ZV9pbnQzMlxuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludCBlbHNlIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX2dldF9pbnQzMl9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV9yZWFkX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50MzJfaW50XG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQzMl9iZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQzMl9pbnQgZWxzZSB1bnNhZmVfd3JpdGVfaW50MzJfaW50X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDMyX2xlID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gdW5zYWZlX3dyaXRlX2ludDMyX2ludF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDMyX2ludFxuOztcblxubGV0IGdldF9pbnQzMl9iZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50IGVsc2UgcmVhZF9pbnQzMl9pbnRfc3dhcFxubGV0IGdldF9pbnQzMl9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHJlYWRfaW50MzJfaW50X3N3YXAgZWxzZSByZWFkX2ludDMyX2ludFxuXG5sZXQgc2V0X2ludDMyX2JlX2V4biA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDMyX2ludF9leG4gZWxzZSB3cml0ZV9pbnQzMl9pbnRfc3dhcF9leG5cbjs7XG5cbmxldCBzZXRfaW50MzJfbGVfZXhuID1cbiAgaWYgYXJjaF9iaWdfZW5kaWFuIHRoZW4gd3JpdGVfaW50MzJfaW50X3N3YXBfZXhuIGVsc2Ugd3JpdGVfaW50MzJfaW50X2V4blxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfYmVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnQgZWxzZSB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9nZXRfaW50NjRfbGVfdHJ1bmMgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X2ludFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjRfaW50IGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0X2ludF9zd2FwXG47O1xuXG5sZXQgdW5zYWZlX3NldF9pbnQ2NF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRfc3dhcCBlbHNlIHVuc2FmZV93cml0ZV9pbnQ2NF9pbnRcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludCBlbHNlIHJlYWRfaW50NjRfaW50X3N3YXBcbmxldCBnZXRfaW50NjRfbGVfdHJ1bmMgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X2ludF9zd2FwIGVsc2UgcmVhZF9pbnQ2NF9pbnRcbmxldCBzZXRfaW50NjRfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NF9pbnQgZWxzZSB3cml0ZV9pbnQ2NF9pbnRfc3dhcFxubGV0IHNldF9pbnQ2NF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X2ludF9zd2FwIGVsc2Ugd3JpdGVfaW50NjRfaW50XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NCBlbHNlIHVuc2FmZV9yZWFkX2ludDY0X3N3YXBcbjs7XG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X3RfbGUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfcmVhZF9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3JlYWRfaW50NjRcbjs7XG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X3RfYmUgPVxuICBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB1bnNhZmVfd3JpdGVfaW50NjQgZWxzZSB1bnNhZmVfd3JpdGVfaW50NjRfc3dhcFxuOztcblxubGV0IHVuc2FmZV9zZXRfaW50NjRfdF9sZSA9XG4gIGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHVuc2FmZV93cml0ZV9pbnQ2NF9zd2FwIGVsc2UgdW5zYWZlX3dyaXRlX2ludDY0XG47O1xuXG5sZXQgZ2V0X2ludDY0X3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0IGVsc2UgcmVhZF9pbnQ2NF9zd2FwXG5sZXQgZ2V0X2ludDY0X3RfbGUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiByZWFkX2ludDY0X3N3YXAgZWxzZSByZWFkX2ludDY0XG5sZXQgc2V0X2ludDY0X3RfYmUgPSBpZiBhcmNoX2JpZ19lbmRpYW4gdGhlbiB3cml0ZV9pbnQ2NCBlbHNlIHdyaXRlX2ludDY0X3N3YXBcbmxldCBzZXRfaW50NjRfdF9sZSA9IGlmIGFyY2hfYmlnX2VuZGlhbiB0aGVuIHdyaXRlX2ludDY0X3N3YXAgZWxzZSB3cml0ZV9pbnQ2NFxuXG5sZXQgaW50NjRfY29udl9lcnJvciAoKSA9XG4gIGZhaWx3aXRoIFwidW5zYWZlX3JlYWRfaW50NjQ6IHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZCB1bmJveGVkIVwiXG47O1xuXG5sZXQgdWludDY0X2NvbnZfZXJyb3IgKCkgPVxuICBmYWlsd2l0aCBcInVuc2FmZV9yZWFkX3VpbnQ2NDogdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkIHVuYm94ZWQhXCJcbjs7XG5cbigqIFtQb2x5XSBpcyByZXF1aXJlZCBzbyB0aGF0IHdlIGNhbiBjb21wYXJlIHVuYm94ZWQgW2ludDY0XS4gKilcbmxldFtAaW5saW5lIGFsd2F5c10gaW50NjRfdG9faW50X2V4biBuID1cbiAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgdGhlblxuICAgIGlmIFBvbHkuKG4gPj0gLTB4NDAwMF8wMDAwXzAwMDBfMDAwMEwgJiYgbiA8IDB4NDAwMF8wMDAwXzAwMDBfMDAwMEwpXG4gICAgdGhlbiBpbnQ2NF90b19pbnQgblxuICAgIGVsc2UgaW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gLTB4MDAwMF8wMDAwXzQwMDBfMDAwMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSBpbnQ2NF9jb252X2Vycm9yICgpXG47O1xuXG5sZXRbQGlubGluZSBhbHdheXNdIHVpbnQ2NF90b19pbnRfZXhuIG4gPVxuICBpZiBhcmNoX3NpeHR5Zm91clxuICB0aGVuXG4gICAgaWYgUG9seS4obiA+PSAwTCAmJiBuIDwgMHg0MDAwXzAwMDBfMDAwMF8wMDAwTClcbiAgICB0aGVuIGludDY0X3RvX2ludCBuXG4gICAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuICBlbHNlIGlmIFBvbHkuKG4gPj0gMEwgJiYgbiA8IDB4MDAwMF8wMDAwXzQwMDBfMDAwMEwpXG4gIHRoZW4gaW50NjRfdG9faW50IG5cbiAgZWxzZSB1aW50NjRfY29udl9lcnJvciAoKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9XG4gIGludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9iZSB0IH5wb3MpXG47O1xuXG5sZXRbQGlubGluZV0gdW5zYWZlX2dldF9pbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgaW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2xlIHQgfnBvcylcbjs7XG5cbmxldCBnZXRfaW50NjRfYmVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfaW50NjRfbGVfZXhuIHQgfnBvcyA9IGludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2xlIHQgfnBvcylcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDY0X2JlX2V4biB0IH5wb3MgPVxuICB1aW50NjRfdG9faW50X2V4biAodW5zYWZlX2dldF9pbnQ2NF90X2JlIHQgfnBvcylcbjs7XG5cbmxldFtAaW5saW5lXSB1bnNhZmVfZ2V0X3VpbnQ2NF9sZV9leG4gdCB+cG9zID1cbiAgdWludDY0X3RvX2ludF9leG4gKHVuc2FmZV9nZXRfaW50NjRfdF9sZSB0IH5wb3MpXG47O1xuXG5sZXQgZ2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zID0gdWludDY0X3RvX2ludF9leG4gKGdldF9pbnQ2NF90X2JlIHQgfnBvcylcbmxldCBnZXRfdWludDY0X2xlX2V4biB0IH5wb3MgPSB1aW50NjRfdG9faW50X2V4biAoZ2V0X2ludDY0X3RfbGUgdCB+cG9zKVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2JlID0gdW5zYWZlX3NldF9pbnQ2NF9iZVxubGV0IHVuc2FmZV9zZXRfdWludDY0X2xlID0gdW5zYWZlX3NldF9pbnQ2NF9sZVxuXG5sZXQgc2V0X3VpbnQ2NF9iZV9leG4gdCB+cG9zIG4gPVxuICBjaGVja192YWxpZF91aW50NjQgfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDY0X2JlX2V4blwiIG47XG4gIHNldF9pbnQ2NF9iZSB0IH5wb3MgblxuOztcblxubGV0IHNldF91aW50NjRfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDY0IH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQ2NF9sZV9leG5cIiBuO1xuICBzZXRfaW50NjRfbGUgdCB+cG9zIG5cbjs7XG5cbigqIFR5cGUgYW5ub3RhdGlvbnMgb24gdGhlIFt0XXMgYXJlIGltcG9ydGFudCBoZXJlOiBpbiBvcmRlciBmb3IgdGhlIGNvbXBpbGVyIHRvIGdlbmVyYXRlXG4gICBvcHRpbWl6ZWQgY29kZSwgaXQgbmVlZHMgdG8ga25vdyB0aGUgZnVsbHkgaW5zdGFudGlhdGVkIHR5cGUgb2YgdGhlIGJpZ2FycmF5LiBUaGlzIGlzXG4gICBiZWNhdXNlIHRoZSB0eXBlIG9mIHRoZSBiaWdhcnJheSBlbmNvZGVzIHRoZSBlbGVtZW50IGtpbmQgYW5kIHRoZSBsYXlvdXQgb2YgdGhlXG4gICBiaWdhcnJheS4gV2l0aG91dCB0aGUgYW5ub3RhdGlvbiB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgQyBjYWxsIHRvIHRoZSBnZW5lcmljIGFjY2Vzc1xuICAgZnVuY3Rpb25zLiAqKVxubGV0IHVuc2FmZV9zZXRfdWludDggKHQgOiB0KSB+cG9zIG4gPSBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG5cbmxldCB1bnNhZmVfc2V0X2ludDggKHQgOiB0KSB+cG9zIG4gPVxuICAoKiBJbiBhbGwgdGhlIHNldCBmdW5jdGlvbnMgd2hlcmUgdGhlcmUgYXJlIHRoZXNlIHRlc3RzLCBpdCBsb29rcyBsaWtlIHRoZSB0ZXN0IGNvdWxkIGJlXG4gICAgIHJlbW92ZWQsIHNpbmNlIHRoZXkgYXJlIG9ubHkgY2hhbmdpbmcgdGhlIHZhbHVlcyBvZiB0aGUgYnl0ZXMgdGhhdCBhcmUgbm90XG4gICAgIHdyaXR0ZW4uICopXG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEudW5zYWZlX3NldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgdW5zYWZlX2dldF91aW50OCAodCA6IHQpIH5wb3MgPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDggKHQgOiB0KSB+cG9zID1cbiAgbGV0IG4gPSBDaGFyLnRvX2ludCAoQXJyYXkxLnVuc2FmZV9nZXQgdCBwb3MpIGluXG4gIGlmIG4gPj0gMTI4IHRoZW4gbiAtIDI1NiBlbHNlIG5cbjs7XG5cbmxldCBzZXRfdWludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDggfmxvYzpcIkJpZ3N0cmluZy5zZXRfdWludDhfZXhuXCIgbjtcbiAgQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IG4pXG47O1xuXG5sZXQgc2V0X2ludDhfZXhuICh0IDogdCkgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfaW50OCB+bG9jOlwiQmlnc3RyaW5nLnNldF9pbnQ4X2V4blwiIG47XG4gIGxldCBuID0gaWYgbiA8IDAgdGhlbiBuICsgMjU2IGVsc2UgbiBpblxuICBBcnJheTEuc2V0IHQgcG9zIChDaGFyLnVuc2FmZV9vZl9pbnQgbilcbjs7XG5cbmxldCBnZXRfdWludDggKHQgOiB0KSB+cG9zID0gQ2hhci50b19pbnQgKEFycmF5MS5nZXQgdCBwb3MpXG5cbmxldCBnZXRfaW50OCAodCA6IHQpIH5wb3MgPVxuICBsZXQgbiA9IENoYXIudG9faW50IChBcnJheTEuZ2V0IHQgcG9zKSBpblxuICBpZiBuID49IDEyOCB0aGVuIG4gLSAyNTYgZWxzZSBuXG47O1xuXG5sZXQgbWFzazMyX24gPSBDYW1sLk5hdGl2ZWludC4oc3ViIChzaGlmdF9sZWZ0IDFuIDMyKSAxbilcblxubGV0W0BpbmxpbmUgYWx3YXlzXSB1aW50MzJfb2ZfaW50MzJfdCBuID1cbiAgaWYgbm90X29uXzMyYml0XG4gIHRoZW5cbiAgICAoKiB1c2UgQ2FtbC5OYXRpdmVpbnQgdG8gZW5zdXJlIGlubGluaW5nIGV2ZW4gd2l0aG91dCB4LWxpYnJhcnktaW5saW5pbmcgKilcbiAgICBDYW1sLk5hdGl2ZWludC4odG9faW50IChsb2dhbmQgKG9mX2ludDMyIG4pIG1hc2szMl9uKSlcbiAgZWxzZSBpbnQzMl90b19pbnQgblxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9zZXRfdWludDMyX2xlIHQgfnBvcyBuID0gdW5zYWZlX3NldF9pbnQzMl90X2xlIHQgfnBvcyAoaW50MzJfb2ZfaW50IG4pXG5sZXRbQGlubGluZV0gdW5zYWZlX3NldF91aW50MzJfYmUgdCB+cG9zIG4gPSB1bnNhZmVfc2V0X2ludDMyX3RfYmUgdCB+cG9zIChpbnQzMl9vZl9pbnQgbilcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDMyX2xlIHQgfnBvcyA9XG4gIHVpbnQzMl9vZl9pbnQzMl90ICh1bnNhZmVfZ2V0X2ludDMyX3RfbGUgdCB+cG9zKVxuOztcblxubGV0W0BpbmxpbmVdIHVuc2FmZV9nZXRfdWludDMyX2JlIHQgfnBvcyA9XG4gIHVpbnQzMl9vZl9pbnQzMl90ICh1bnNhZmVfZ2V0X2ludDMyX3RfYmUgdCB+cG9zKVxuOztcblxubGV0IHNldF91aW50MzJfbGVfZXhuIHQgfnBvcyBuID1cbiAgY2hlY2tfdmFsaWRfdWludDMyIH5sb2M6XCJCaWdzdHJpbmcuc2V0X3VpbnQzMl9sZV9leG5cIiBuO1xuICBsZXQgbiA9IGlmIG5vdF9vbl8zMmJpdCAmJiBuID49IDEgbHNsIDMxIHRoZW4gbiAtICgxIGxzbCAzMikgZWxzZSBuIGluXG4gIHNldF9pbnQzMl9sZV9leG4gdCB+cG9zIG5cbjs7XG5cbmxldCBzZXRfdWludDMyX2JlX2V4biB0IH5wb3MgbiA9XG4gIGNoZWNrX3ZhbGlkX3VpbnQzMiB+bG9jOlwiQmlnc3RyaW5nLnNldF91aW50MzJfYmVfZXhuXCIgbjtcbiAgbGV0IG4gPSBpZiBub3Rfb25fMzJiaXQgJiYgbiA+PSAxIGxzbCAzMSB0aGVuIG4gLSAoMSBsc2wgMzIpIGVsc2UgbiBpblxuICBzZXRfaW50MzJfYmVfZXhuIHQgfnBvcyBuXG47O1xuXG5sZXQgZ2V0X3VpbnQzMl9sZSB0IH5wb3MgPSB1aW50MzJfb2ZfaW50MzJfdCAoZ2V0X2ludDMyX3RfbGUgdCB+cG9zKVxubGV0IGdldF91aW50MzJfYmUgdCB+cG9zID0gdWludDMyX29mX2ludDMyX3QgKGdldF9pbnQzMl90X2JlIHQgfnBvcylcblxubW9kdWxlIEludF9yZXByID0gc3RydWN0XG4gIG1vZHVsZSBGID0gc3RydWN0XG4gICAgdHlwZSB0ID0gdF9mcm96ZW5cblxuICAgIGxldCBnZXRfdWludDggdCBwb3MgPSBnZXRfdWludDggdCB+cG9zXG4gICAgbGV0IHNldF91aW50OCB0IHBvcyB4ID0gQXJyYXkxLnNldCB0IHBvcyAoQ2hhci51bnNhZmVfb2ZfaW50IHgpXG4gICAgbGV0IGdldF91aW50MTZfbmUgdCBwb3MgPSBnZXRfMTYgdCBwb3NcbiAgICBsZXQgc2V0X3VpbnQxNl9uZSB0IHBvcyB4ID0gc2V0XzE2X3RydW5jIHQgcG9zIHhcbiAgICBsZXQgZ2V0X2ludDMyX25lIHQgcG9zID0gZ2V0XzMyIHQgcG9zXG4gICAgbGV0IHNldF9pbnQzMl9uZSB0IHBvcyB4ID0gc2V0XzMyIHQgcG9zIHhcbiAgICBsZXQgZ2V0X2ludDY0X25lIHQgcG9zID0gZ2V0XzY0IHQgcG9zXG4gICAgbGV0IHNldF9pbnQ2NF9uZSB0IHBvcyB4ID0gc2V0XzY0IHQgcG9zIHhcbiAgZW5kXG5cbiAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX2dldCAoRilcbiAgaW5jbHVkZSBJbnRfcmVwci5NYWtlX3NldCAoRilcblxuICBtb2R1bGUgVW5zYWZlID0gc3RydWN0XG4gICAgbW9kdWxlIEYgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHRfZnJvemVuXG5cbiAgICAgIGxldCBnZXRfdWludDggdCBwb3MgPSB1bnNhZmVfZ2V0X3VpbnQ4IHQgfnBvc1xuICAgICAgbGV0IHNldF91aW50OCB0IHBvcyB4ID0gdW5zYWZlX3NldF91aW50OCB0IH5wb3MgeFxuICAgICAgbGV0IGdldF91aW50MTZfbmUgdCBwb3MgPSB1bnNhZmVfZ2V0XzE2IHQgcG9zXG4gICAgICBsZXQgc2V0X3VpbnQxNl9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF8xNiB0IHBvcyB4XG4gICAgICBsZXQgZ2V0X2ludDMyX25lIHQgcG9zID0gdW5zYWZlX2dldF8zMiB0IHBvc1xuICAgICAgbGV0IHNldF9pbnQzMl9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF8zMiB0IHBvcyB4XG4gICAgICBsZXQgZ2V0X2ludDY0X25lIHQgcG9zID0gdW5zYWZlX2dldF82NCB0IHBvc1xuICAgICAgbGV0IHNldF9pbnQ2NF9uZSB0IHBvcyB4ID0gdW5zYWZlX3NldF82NCB0IHBvcyB4XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIEludF9yZXByLk1ha2VfZ2V0IChGKVxuICAgIGluY2x1ZGUgSW50X3JlcHIuTWFrZV9zZXQgKEYpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBzaWduX2V4dGVuZF8xNiA9IHNpZ25fZXh0ZW5kXzE2XG5lbmRcbiIsIm9wZW4hIEJhc2Vcbm9wZW4hIEJsaXRcbmluY2x1ZGUgVGVzdF9ibGl0X2ludGZcblxubW9kdWxlIHR5cGUgU19nZW4gPSBzaWdcbiAgb3BlbiBCbGl0XG5cbiAgdHlwZSAnYSBzcmNcbiAgdHlwZSAnYSBkc3RcblxuICAoKiAgdmFsIGJsaXQgICAgICAgIDogKCdhIHNyYywgJ2EgZHN0KSBibGl0KilcbiAgdmFsIGJsaXRvIDogKCdhIHNyYywgJ2EgZHN0KSBibGl0b1xuXG4gICgqICB2YWwgdW5zYWZlX2JsaXQgOiAoJ2Egc3JjLCAnYSBkc3QpIGJsaXQqKVxuICB2YWwgc3ViIDogKCdhIHNyYywgJ2EgZHN0KSBzdWJcblxuICAoKnZhbCBzdWJvICAgICAgICA6ICgnYSBzcmMsICdhIGRzdCkgc3VibyopXG5lbmRcblxubW9kdWxlIHR5cGUgRm9yX3Rlc3RzX2dlbiA9IHNpZ1xuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwgZXF1YWwgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2xcblxuICAgIHZhbCBvZl9ib29sIDogYm9vbCAtPiBib29sIHRcbiAgZW5kXG5cbiAgdHlwZSAnYSB6XG5cbiAgbW9kdWxlIFNyYyA6IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGxlbmd0aCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgY3JlYXRlX2Jvb2wgOiBsZW46aW50IC0+IGJvb2wgeiB0XG4gICAgdmFsIGdldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnRcbiAgICB2YWwgc2V0IDogJ2EgeiB0IC0+IGludCAtPiAnYSBFbHQudCAtPiB1bml0XG4gIGVuZFxuXG4gIG1vZHVsZSBEc3QgOiBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG4gICAgdmFsIGNyZWF0ZV9ib29sIDogbGVuOmludCAtPiBib29sIHogdFxuICAgIHZhbCBnZXQgOiAnYSB6IHQgLT4gaW50IC0+ICdhIEVsdC50XG4gICAgdmFsIHNldCA6ICdhIHogdCAtPiBpbnQgLT4gJ2EgRWx0LnQgLT4gdW5pdFxuICAgIHZhbCBvdmVybGFwcGluZ19zcmNfZHN0IDogWyBgRG9fbm90X2NoZWNrIHwgYENoZWNrIG9mICdhIFNyYy50IC0+ICdhIHQgXVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVGVzdF9nZW5cbiAgICAoRm9yX3Rlc3RzIDogRm9yX3Rlc3RzX2dlbilcbiAgICAoVGVzdGVkIDogU19nZW5cbiAgICAgd2l0aCB0eXBlICdhIHNyYyA6PSAnYSBGb3JfdGVzdHMuU3JjLnRcbiAgICAgd2l0aCB0eXBlICdhIGRzdCA6PSAnYSBGb3JfdGVzdHMuRHN0LnQpID1cbnN0cnVjdFxuICBvcGVuIFRlc3RlZFxuICBvcGVuIEZvcl90ZXN0c1xuXG4gIGxldCBpbml0IH5sZW4gfmNyZWF0ZSB+c2V0IH5mID1cbiAgICBsZXQgdCA9IGNyZWF0ZSB+bGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHNldCB0IGkgKGYgaSlcbiAgICBkb25lO1xuICAgIHRcbiAgOztcblxuICBsZXQgZWx0MSA9IEVsdC5vZl9ib29sIHRydWVcbiAgbGV0IGVsdDIgPSBFbHQub2ZfYm9vbCBmYWxzZVxuICBsZXQgKCkgPSBhc3NlcnQgKG5vdCAoRWx0LmVxdWFsIGVsdDEgZWx0MikpXG4gIGxldCBzcmNfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDEgZWxzZSBlbHQyXG4gIGxldCBkc3RfYml0IGkgPSBpZiBpIGxhbmQgMHgxID0gMCB0aGVuIGVsdDIgZWxzZSBlbHQxXG5cbiAgKCogVGVzdCBbYmxpdF0uICopXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgbGV0IG4gPSA0IGluXG4gICAgZm9yIHNyY19sZW5ndGggPSAwIHRvIG4gZG9cbiAgICAgIGZvciBkc3RfbGVuZ3RoID0gMCB0byBuIGRvXG4gICAgICAgIGZvciBzcmNfcG9zID0gMCB0byBzcmNfbGVuZ3RoIGRvXG4gICAgICAgICAgZm9yIGRzdF9wb3MgPSAwIHRvIGRzdF9sZW5ndGggZG9cbiAgICAgICAgICAgIGZvciBzcmNfbGVuID0gMCB0byBtaW4gKHNyY19sZW5ndGggLSBzcmNfcG9zKSAoZHN0X2xlbmd0aCAtIGRzdF9wb3MpIGRvXG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIGxldCBpc19pbl9yYW5nZSBpID0gaSA+PSBkc3RfcG9zICYmIGkgPCBkc3RfcG9zICsgc3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVjayBsZW5ndGggZ2V0IG5hbWUgc2VxdWVuY2UgfmV4cGVjdCA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHNlcXVlbmNlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICBpZiBub3QgKEVsdC5lcXVhbCAoZ2V0IHNlcXVlbmNlIGkpIChleHBlY3QgaSkpXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJidWdcIiAobmFtZSA6IHN0cmluZykgKGkgOiBpbnQpXVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNoZWNrX3NyYyA9IGNoZWNrIFNyYy5sZW5ndGggU3JjLmdldCBpblxuICAgICAgICAgICAgICAgIGxldCBjaGVja19kc3QgPSBjaGVjayBEc3QubGVuZ3RoIERzdC5nZXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgc3JjID1cbiAgICAgICAgICAgICAgICAgIGluaXQgfmxlbjpzcmNfbGVuZ3RoIH5jcmVhdGU6U3JjLmNyZWF0ZV9ib29sIH5zZXQ6U3JjLnNldCB+ZjpzcmNfYml0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhc3NlcnQgKFNyYy5sZW5ndGggc3JjID0gc3JjX2xlbmd0aCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9XG4gICAgICAgICAgICAgICAgICBpbml0IH5sZW46ZHN0X2xlbmd0aCB+Y3JlYXRlOkRzdC5jcmVhdGVfYm9vbCB+c2V0OkRzdC5zZXQgfmY6ZHN0X2JpdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYXNzZXJ0IChEc3QubGVuZ3RoIGRzdCA9IGRzdF9sZW5ndGgpO1xuICAgICAgICAgICAgICAgIGxldCBpbml0X3NyYyAoKSA9XG4gICAgICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gc3JjX2xlbmd0aCAtIDEgZG9cbiAgICAgICAgICAgICAgICAgICAgU3JjLnNldCBzcmMgaSAoc3JjX2JpdCBpKVxuICAgICAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcImJsaXQgc3JjXCIgc3JjIH5leHBlY3Q6c3JjX2JpdDtcbiAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdFwiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgaWYgaXNfaW5fcmFuZ2UgaSB0aGVuIHNyY19iaXQgKHNyY19wb3MgKyBpIC0gZHN0X3BvcykgZWxzZSBkc3RfYml0IGkpO1xuICAgICAgICAgICAgICAgIChtYXRjaCBEc3Qub3ZlcmxhcHBpbmdfc3JjX2RzdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYERvX25vdF9jaGVjayAtPiAoKVxuICAgICAgICAgICAgICAgICB8IGBDaGVjayBzcmNfdG9fZHN0IC0+XG4gICAgICAgICAgICAgICAgICAgaWYgZHN0X3BvcyArIHNyY19sZW4gPD0gc3JjX2xlbmd0aFxuICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZHN0ID0gc3JjX3RvX2RzdCBzcmMgaW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgYmxpdG8gfnNyYyB+c3JjX3BvcyB+c3JjX2xlbiB+ZHN0IH5kc3RfcG9zICgpO1xuICAgICAgICAgICAgICAgICAgICAgICBjaGVja19kc3QgXCJibGl0IGRzdCBvdmVybGFwcGluZ1wiIGRzdCB+ZXhwZWN0OihmdW4gaSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19iaXQgKGlmIGlzX2luX3JhbmdlIGkgdGhlbiBzcmNfcG9zICsgaSAtIGRzdF9wb3MgZWxzZSBpKSkpKSk7XG4gICAgICAgICAgICAgICAgKCogQ2hlY2sgW3N1Yl0uICopXG4gICAgICAgICAgICAgICAgaW5pdF9zcmMgKCk7XG4gICAgICAgICAgICAgICAgbGV0IGRzdCA9IHN1YiBzcmMgfnBvczpzcmNfcG9zIH5sZW46c3JjX2xlbiBpblxuICAgICAgICAgICAgICAgIGNoZWNrX3NyYyBcInN1YiBzcmNcIiBzcmMgfmV4cGVjdDpzcmNfYml0O1xuICAgICAgICAgICAgICAgIGNoZWNrX2RzdCBcInN1YiBkc3RcIiBkc3QgfmV4cGVjdDooZnVuIGkgLT4gc3JjX2JpdCAoc3JjX3BvcyArIGkpKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIFwiYnVnXCJcbiAgICAgICAgICAgICAgICAgICAgICAoZXhuIDogZXhuKVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChzcmNfcG9zIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfbGVuZ3RoIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgIChkc3RfcG9zIDogaW50KV1cbiAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICBkb25lXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgc3JjID0gaW5pdCB+bGVuOjQgfmNyZWF0ZTpTcmMuY3JlYXRlX2Jvb2wgfnNldDpTcmMuc2V0IH5mOnNyY19iaXQgaW5cbiAgICBsZXQgZHN0ID0gaW5pdCB+bGVuOjggfmNyZWF0ZTpEc3QuY3JlYXRlX2Jvb2wgfnNldDpEc3Quc2V0IH5mOmRzdF9iaXQgaW5cbiAgICBsZXQgYXNzZXJ0X3JhaXNlcyBmID0gYXNzZXJ0IChFeG4uZG9lc19yYWlzZSBmKSBpblxuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOigtMSkgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOigtMSkgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjUgfnNyY19sZW46MSB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46OCB+ZHN0IH5kc3RfcG9zOjAgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjUgKCkpO1xuICAgIGFzc2VydF9yYWlzZXMgKGZ1biAoKSAtPiBibGl0byB+c3JjIH5zcmNfcG9zOjAgfnNyY19sZW46NCB+ZHN0IH5kc3RfcG9zOjggKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFRlc3QxXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seSlcbiAgICAoVGVzdGVkIDogUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU2VxdWVuY2UudCkgPVxuICBUZXN0X2dlblxuICAgIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2FcblxuICAgICAgICBsZXQgZXF1YWwgPSBQb2x5LmVxdWFsXG4gICAgICAgIGxldCBvZl9ib29sID0gRm4uaWRcbiAgICAgIGVuZFxuXG4gICAgICB0eXBlICdhIHogPSAnYSBTZXF1ZW5jZS56XG5cbiAgICAgIG1vZHVsZSBTcmMgPSBTZXF1ZW5jZVxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICBsZXQgb3ZlcmxhcHBpbmdfc3JjX2RzdCA9IGBDaGVjayBGbi5pZFxuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBUZXN0MV9nZW5lcmljXG4gICAgKEVsdCA6IEVsdDEpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2UxIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnQpXG4gICAgKFRlc3RlZCA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIFNlcXVlbmNlLnQpID1cbiAgVGVzdF9nZW5cbiAgICAoc3RydWN0XG4gICAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICAgIHR5cGUgJ2EgeiA9ICdhIFNlcXVlbmNlLnpcblxuICAgICAgbW9kdWxlIFNyYyA9IFNlcXVlbmNlXG5cbiAgICAgIG1vZHVsZSBEc3QgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZVxuXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYENoZWNrIEZuLmlkXG4gICAgICBlbmRcbiAgICBlbmQpXG4gICAgKFRlc3RlZClcblxubW9kdWxlIEVsdF90b19lbHQxIChFbHQgOiBFbHQpID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9IEVsdC50XG5cbiAgbGV0IGVxdWFsID0gRWx0LmVxdWFsXG4gIGxldCBvZl9ib29sID0gRWx0Lm9mX2Jvb2xcbmVuZFxuXG5tb2R1bGUgVGVzdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNlcXVlbmNlIDogU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudClcbiAgICAoVGVzdGVkIDogUyB3aXRoIHR5cGUgdCA6PSBTZXF1ZW5jZS50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNlcXVlbmNlXG5cbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9IHRcblxuICAgICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICAgIGxldCBnZXQgPSBnZXRcbiAgICAgICAgbGV0IHNldCA9IHNldFxuICAgICAgICBsZXQgY3JlYXRlX2Jvb2wgPSBjcmVhdGVcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgRHN0ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgU3JjXG5cbiAgICAgICAgbGV0IG92ZXJsYXBwaW5nX3NyY19kc3QgPSBgQ2hlY2sgRm4uaWRcbiAgICAgIGVuZFxuICAgIGVuZClcbiAgICAoVGVzdGVkKVxuXG5tb2R1bGUgVGVzdF9kaXN0aW5jdFxuICAgIChFbHQgOiBFbHQpXG4gICAgKFNyYyA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKERzdCA6IFNlcXVlbmNlIHdpdGggdHlwZSBlbHQgOj0gRWx0LnQpXG4gICAgKFRlc3RlZCA6IFNfZGlzdGluY3Qgd2l0aCB0eXBlIHNyYyA6PSBTcmMudCB3aXRoIHR5cGUgZHN0IDo9IERzdC50KSA9XG4gIFRlc3RfZ2VuXG4gICAgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IEVsdF90b19lbHQxIChFbHQpXG5cbiAgICAgIHR5cGUgJ2EgeiA9IHVuaXRcblxuICAgICAgbW9kdWxlIFNyYyA9IHN0cnVjdFxuICAgICAgICBvcGVuIFNyY1xuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIERzdCA9IHN0cnVjdFxuICAgICAgICBvcGVuIERzdFxuXG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSB0XG5cbiAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgICAgIGxldCBzZXQgPSBzZXRcbiAgICAgICAgbGV0IGNyZWF0ZV9ib29sID0gY3JlYXRlXG4gICAgICAgIGxldCBvdmVybGFwcGluZ19zcmNfZHN0ID0gYERvX25vdF9jaGVja1xuICAgICAgZW5kXG4gICAgZW5kKVxuICAgIChUZXN0ZWQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0XG4gICAgKEVsdCA6IEVsdCkgKFNlcXVlbmNlIDogc2lnXG4gICAgICAgICAgICAgICAgICAgaW5jbHVkZSBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50XG5cbiAgICAgICAgICAgICAgICAgICB2YWwgdW5zYWZlX2JsaXQgOiAodCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UgKFNlcXVlbmNlKVxuICBpbmNsdWRlIFRlc3QgKEVsdCkgKFNlcXVlbmNlKSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoRWx0IDogRWx0KVxuICAgIChTcmMgOiBTZXF1ZW5jZSB3aXRoIHR5cGUgZWx0IDo9IEVsdC50KSAoRHN0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2Ugd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB1bnNhZmVfYmxpdCA6IChTcmMudCwgdCkgYmxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEIgPSBNYWtlX2Rpc3RpbmN0IChTcmMpIChEc3QpXG4gIGluY2x1ZGUgVGVzdF9kaXN0aW5jdCAoRWx0KSAoU3JjKSAoRHN0KSAoQilcbiAgaW5jbHVkZSBCXG5lbmRcblxubW9kdWxlIE1ha2UxX2FuZF90ZXN0IChTZXF1ZW5jZSA6IHNpZ1xuICAgIGluY2x1ZGUgQmxpdC5TZXF1ZW5jZTFcbiAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgcG9seVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQiA9IE1ha2UxIChTZXF1ZW5jZSlcbiAgaW5jbHVkZSBUZXN0MSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuXG5tb2R1bGUgTWFrZTFfZ2VuZXJpY19hbmRfdGVzdFxuICAgIChFbHQgOiBFbHQxKSAoU2VxdWVuY2UgOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSBCbGl0LlNlcXVlbmNlMVxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0IHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBCID0gTWFrZTFfZ2VuZXJpYyAoU2VxdWVuY2UpXG4gIGluY2x1ZGUgVGVzdDFfZ2VuZXJpYyAoRWx0KSAoU2VxdWVuY2UpIChCKVxuICBpbmNsdWRlIEJcbmVuZFxuIiwib3BlbiEgQmFzZVxub3BlbiEgQmluYXJ5X3NlYXJjaGFibGVcbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIFNfZ2VuID0gc2lnXG4gIG9wZW4gQmluYXJ5X3NlYXJjaGFibGVcblxuICB0eXBlICdhIHRcbiAgdHlwZSAnYSBlbHRcblxuICB2YWwgYmluYXJ5X3NlYXJjaCA6ICgnYSB0LCAnYSBlbHQsICdhIGVsdCkgYmluYXJ5X3NlYXJjaFxuICB2YWwgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgOiAoJ2EgdCwgJ2EgZWx0KSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0ID0gc2lnXG4gIGluY2x1ZGUgU19nZW5cblxuICBtb2R1bGUgRm9yX3Rlc3QgOiBzaWdcbiAgICB2YWwgY29tcGFyZSA6IGJvb2wgZWx0IC0+IGJvb2wgZWx0IC0+IGludFxuICAgIHZhbCBzbWFsbCA6IGJvb2wgZWx0XG4gICAgdmFsIGJpZyA6IGJvb2wgZWx0XG4gICAgdmFsIG9mX2FycmF5IDogYm9vbCBlbHQgYXJyYXkgLT4gYm9vbCB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBUZXN0X2dlbiAoTSA6IEluZGV4YWJsZV9nZW5fYW5kX2Zvcl90ZXN0KSA9IHN0cnVjdFxuICBvcGVuIE1cblxuICBsZXQldGVzdF9tb2R1bGUgXCJ0ZXN0X2JpbmFyeV9zZWFyY2hhYmxlXCIgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICBsZXQgY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBlbHRfY29tcGFyZSA9IEZvcl90ZXN0LmNvbXBhcmVcbiAgICAgIGxldCBzID0gRm9yX3Rlc3Quc21hbGxcbiAgICAgIGxldCBiID0gRm9yX3Rlc3QuYmlnXG5cbiAgICAgIGxldCBiaW5hcnlfc2VhcmNoID9wb3MgP2xlbiB+Y29tcGFyZSB0IGhvdyB2ID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gfmNvbXBhcmUgKEZvcl90ZXN0Lm9mX2FycmF5IHQpIGhvdyB2XG4gICAgICA7O1xuXG4gICAgICBsZXQgKCA9ICkgPSBQb2x5LmVxdWFsXG5cbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYEZpcnN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBGaXJzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gYiA9IFNvbWUgMVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYiB8XSBgRmlyc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IHMgfF0gYEZpcnN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSAxXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiOyBiOyBiIHxdIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgTGFzdF9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIGIgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHM7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgcyB8XSBgTGFzdF9lcXVhbF90byBiID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgczsgYjsgYiB8XSBgTGFzdF9lcXVhbF90byBiID0gU29tZSAyXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzOyBzOyBiIHxdIGBMYXN0X2VxdWFsX3RvIHMgPSBTb21lIDFcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGI7IGI7IGIgfF0gYExhc3RfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8fF0gYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gTm9uZVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBiIHxdIGBGaXJzdF9ncmVhdGVyX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgMFxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3wgcyB8XSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IHMgfF0gYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gTm9uZVxuICAgICAgbGV0JXRlc3QgXyA9IGJpbmFyeV9zZWFyY2ggfmNvbXBhcmUgW3x8XSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IE5vbmVcbiAgICAgIGxldCV0ZXN0IF8gPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJlIFt8IGIgfF0gYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICBsZXQldGVzdCBfID0gYmluYXJ5X3NlYXJjaCB+Y29tcGFyZSBbfCBzIHxdIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBzID0gTm9uZVxuXG4gICAgICBsZXQgY3JlYXRlX3Rlc3RfY2FzZSAobnVtX3MsIG51bV9iKSA9XG4gICAgICAgIGxldCBhcnIgPSBBcnJheS5jcmVhdGUgYiB+bGVuOihudW1fcyArIG51bV9iKSBpblxuICAgICAgICBmb3IgaSA9IDAgdG8gbnVtX3MgLSAxIGRvXG4gICAgICAgICAgYXJyLihpKSA8LSBzXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFyclxuICAgICAgOztcblxuICAgICAgbGV0IG9ubHlfc21hbGwgPSAxMF8wMDAsIDBcbiAgICAgIGxldCBvbmx5X2JpZyA9IDAsIDEwXzAwMFxuICAgICAgbGV0IGJvdGggPSAyNTMxLCA0NzE3XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBtYXRjaCBiaW5hcnlfc2VhcmNoIChjcmVhdGVfdGVzdF9jYXNlIG9ubHlfc21hbGwpIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBfIC0+IHRydWVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBib3RoIGluXG4gICAgICAgIG1hdGNoIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSB2IC0+IHYgPSAyNTMxXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpID1cbiAgICAgICAgQXJyYXkuaW5pdCAxMDBfMDAwIH5mOihmdW4gaSAtPiBpZiBpID4gNTBfMDAwIHRoZW4gYiBlbHNlIHMpXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBzID0gU29tZSA1MF8wMDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIHMgPSBTb21lIDBcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gcyA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gYiA9IFNvbWUgNTBfMDAwXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0cyBhcm91bmQgYSBnYXAqKVxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBiID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9lcXVhbF90byBiID0gU29tZSA5OV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIGIgPSBTb21lIDUwXzAwMVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfZGV0ZXJtaW5pc3RpY190ZXN0ICgpIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2xlc3NfdGhhbl9vcl9lcXVhbF90byBiID0gU29tZSA5OV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3Rfc3RyaWN0bHlfZ3JlYXRlcl90aGFuIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBTb21lIDUwXzAwMFxuICAgICAgOztcblxuICAgICAgKCogdGVzdCBiZWdpbm5pbmcgb2YgYXJyYXkgKilcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9lcXVhbF90byBzID0gTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3QgXyA9XG4gICAgICAgIGxldCBhcnIgPSBjcmVhdGVfdGVzdF9jYXNlIG9ubHlfYmlnIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X2dyZWF0ZXJfdGhhbl9vcl9lcXVhbF90byBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3RfbGVzc190aGFuX29yX2VxdWFsX3RvIHMgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYEZpcnN0X3N0cmljdGx5X2dyZWF0ZXJfdGhhbiBzID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9iaWcgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaCBhcnIgfmNvbXBhcmUgYExhc3Rfc3RyaWN0bHlfbGVzc190aGFuIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICAoKiB0ZXN0IGVuZCBvZiBhcnJheSAqKVxuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZXF1YWxfdG8gYiA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgRmlyc3RfZ3JlYXRlcl90aGFuX29yX2VxdWFsX3RvIGIgPSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV90ZXN0X2Nhc2Ugb25seV9zbWFsbCBpblxuICAgICAgICBiaW5hcnlfc2VhcmNoIGFyciB+Y29tcGFyZSBgTGFzdF9sZXNzX3RoYW5fb3JfZXF1YWxfdG8gYiA9IFNvbWUgOV85OTlcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gcyA9IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX3Rlc3RfY2FzZSBvbmx5X3NtYWxsIGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5jb21wYXJlIGBMYXN0X3N0cmljdGx5X2xlc3NfdGhhbiBiID0gU29tZSA5Xzk5OVxuICAgICAgOztcblxuICAgICAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICAgICAgZm9yIGxlbmd0aCA9IDAgdG8gNSBkb1xuICAgICAgICAgIGZvciBudW1fcyA9IDAgdG8gbGVuZ3RoIGRvXG4gICAgICAgICAgICBsZXQgYXJyID0gQXJyYXkuaW5pdCBsZW5ndGggfmY6KGZ1biBpIC0+IGlmIGkgPCBudW1fcyB0aGVuIHMgZWxzZSBiKSBpblxuICAgICAgICAgICAgZm9yIHBvcyA9IC0xIHRvIGxlbmd0aCBkb1xuICAgICAgICAgICAgICBmb3IgbGVuID0gLTEgdG8gbGVuZ3RoICsgMSBkb1xuICAgICAgICAgICAgICAgICgqdHJ5KilcbiAgICAgICAgICAgICAgICBsZXQgc2hvdWxkX3JhaXNlID1cbiAgICAgICAgICAgICAgICAgIEV4bi5kb2VzX3JhaXNlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5jaGVja19wb3NfbGVuX2V4blxuICAgICAgICAgICAgICAgICAgICAgIH5wb3NcbiAgICAgICAgICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICAgICAgICAgfnRvdGFsX2xlbmd0aDpsZW5ndGgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgICAgICAgIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgIGJpbmFyeV9zZWFyY2ggYXJyIH5wb3MgfmxlbiB+Y29tcGFyZTplbHRfY29tcGFyZSBgTGFzdF9lcXVhbF90byBzKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggc2hvdWxkX3JhaXNlLCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgIHwgdHJ1ZSwgRXJyb3IgXyAtPiAoKVxuICAgICAgICAgICAgICAgIHwgdHJ1ZSwgT2sgXyAtPiBmYWlsd2l0aCBcImV4cGVjdGVkIGl0IHRvIHJhaXNlIGJ1dCBpdCBkaWRuJ3RcIlxuICAgICAgICAgICAgICAgIHwgZmFsc2UsIEVycm9yIF8gLT4gZmFpbHdpdGggXCJleHBlY3RlZCBpdCB0byBub3QgcmFpc2UsIGJ1dCBpdCByYWlzZWRcIlxuICAgICAgICAgICAgICAgIHwgZmFsc2UsIE9rIHJlc3VsdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHNlYXJjaGVkID0gbnVtX3MgLSAxIGluXG4gICAgICAgICAgICAgICAgICBsZXQgY29ycmVjdF9yZXN1bHQgPVxuICAgICAgICAgICAgICAgICAgICBpZiBzZWFyY2hlZCA8IHBvc1xuICAgICAgICAgICAgICAgICAgICB0aGVuIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBsZW4gPSAwXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHNlYXJjaGVkID49IHBvcyArIGxlblxuICAgICAgICAgICAgICAgICAgICB0aGVuIFNvbWUgKHBvcyArIGxlbiAtIDEpXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgU29tZSBzZWFyY2hlZFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGlmIG5vdCAoY29ycmVjdF9yZXN1bHQgPSByZXN1bHQpIHRoZW4gZmFpbHdpdGggXCJXcm9uZyByZXN1bHRcIlxuICAgICAgICAgICAgICAgICAgKCp3aXRoIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICBmYWlsd2l0aHMgXCJiaW5hcnlfc2VhcmNoIGJ1Z1wiXG4gICAgICAgICAgICAgICAgICAgIChleG4sIGBsZW5ndGggbGVuZ3RoLCBgc2VhcmNoX2tleSBzZWFyY2hfa2V5LCBgcG9zIHBvcywgYGxlbiBsZW4pXG4gICAgICAgICAgICAgICAgICAgIDw6c2V4cF9vZjwgZXhuICogWyBgbGVuZ3RoIG9mIGludCBdICogWyBgc2VhcmNoX2tleSBvZiBpbnQgXVxuICAgICAgICAgICAgICAgICAgICogWyBgcG9zIG9mIGludCBdICogWyBgbGVuIG9mIGludCBdID4+KilcbiAgICAgICAgICAgICAgZG9uZVxuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgIGRvbmVcbiAgICAgICAgZG9uZVxuICAgICAgOztcblxuICAgICAgbGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGEgPSBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCAoRm9yX3Rlc3Qub2ZfYXJyYXkgYSlcblxuICAgICAgKCp0ZXN0IGZvciBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCopXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgeCA9IGlmIHggPSBiIHRoZW4gYFJpZ2h0IGVsc2UgYExlZnQgaW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBMYXN0X29uX2xlZnQgPSBTb21lIDUwXzAwMFxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gU29tZSA1MF8wMDFcbiAgICAgIDs7XG5cbiAgICAgIGxldCV0ZXN0IF8gPVxuICAgICAgICBsZXQgYXJyID0gY3JlYXRlX2RldGVybWluaXN0aWNfdGVzdCAoKSBpblxuICAgICAgICBsZXQgc2VnbWVudF9vZiBfID0gYFJpZ2h0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gTm9uZVxuICAgICAgICAmJiBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCBhcnIgfnNlZ21lbnRfb2YgYEZpcnN0X29uX3JpZ2h0ID0gU29tZSAwXG4gICAgICA7O1xuXG4gICAgICBsZXQldGVzdCBfID1cbiAgICAgICAgbGV0IGFyciA9IGNyZWF0ZV9kZXRlcm1pbmlzdGljX3Rlc3QgKCkgaW5cbiAgICAgICAgbGV0IHNlZ21lbnRfb2YgXyA9IGBMZWZ0IGluXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIGFyciB+c2VnbWVudF9vZiBgTGFzdF9vbl9sZWZ0ID0gU29tZSA5OV85OTlcbiAgICAgICAgJiYgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgYXJyIH5zZWdtZW50X29mIGBGaXJzdF9vbl9yaWdodCA9IE5vbmVcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUZXN0IChNIDogQmluYXJ5X3NlYXJjaGFibGVfYW5kX2Zvcl90ZXN0KSA9IFRlc3RfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSBNLnRcbiAgICB0eXBlICdhIGVsdCA9IE0uZWx0XG5cbiAgICBsZXQgYmluYXJ5X3NlYXJjaCA9IE0uYmluYXJ5X3NlYXJjaFxuICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9IE0uYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IE0uRm9yX3Rlc3RcbiAgZW5kKVxuXG5tb2R1bGUgVGVzdDEgKE0gOiBCaW5hcnlfc2VhcmNoYWJsZTFfYW5kX2Zvcl90ZXN0KSA9IFRlc3RfZ2VuIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBNLnRcbiAgICB0eXBlICdhIGVsdCA9ICdhXG5cbiAgICBsZXQgYmluYXJ5X3NlYXJjaCA9IE0uYmluYXJ5X3NlYXJjaFxuICAgIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCA9IE0uYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWRcblxuICAgIG1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX2FycmF5ID0gTS5Gb3JfdGVzdC5vZl9hcnJheVxuICAgICAgbGV0IGNvbXBhcmUgPSBCb29sLmNvbXBhcmVcbiAgICAgIGxldCBzbWFsbCA9IGZhbHNlXG4gICAgICBsZXQgYmlnID0gdHJ1ZVxuICAgIGVuZFxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2FuZF90ZXN0IChNIDogSW5kZXhhYmxlX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgPSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlIChNKVxuICBpbmNsdWRlIEJcblxuICBpbmNsdWRlIFRlc3QgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gTS50XG4gICAgICB0eXBlIGVsdCA9IE0uZWx0XG5cbiAgICAgIGluY2x1ZGUgQlxuICAgICAgbW9kdWxlIEZvcl90ZXN0ID0gTS5Gb3JfdGVzdFxuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZTFfYW5kX3Rlc3QgKE0gOiBJbmRleGFibGUxX2FuZF9mb3JfdGVzdCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgPSBCaW5hcnlfc2VhcmNoYWJsZS5NYWtlMSAoTSlcbiAgaW5jbHVkZSBCXG5cbiAgaW5jbHVkZSBUZXN0MSAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBNLnRcblxuICAgICAgaW5jbHVkZSBCXG4gICAgICBtb2R1bGUgRm9yX3Rlc3QgPSBNLkZvcl90ZXN0XG4gICAgZW5kKVxuZW5kXG4iLCJvcGVuIEJhc2VcblxuKCoqIEVhY2ggc2luZ2xlX2Vycm9yIGlzIGEgcGF0aCBpbmRpY2F0aW5nIHRoZSBsb2NhdGlvbiB3aXRoaW4gdGhlIGRhdGFzdHJ1Y3R1cmUgaW5cbiAgICBxdWVzdGlvbiB0aGF0IGlzIGJlaW5nIHZhbGlkYXRlZCwgYWxvbmcgd2l0aCBhbiBlcnJvciBtZXNzYWdlLiAqKVxudHlwZSBzaW5nbGVfZXJyb3IgPVxuICB7IHBhdGggOiBzdHJpbmcgbGlzdFxuICA7IGVycm9yIDogRXJyb3IudFxuICB9XG5cbnR5cGUgdCA9IHNpbmdsZV9lcnJvciBsaXN0XG50eXBlICdhIGNoZWNrID0gJ2EgLT4gdFxuXG5sZXQgcGFzcyA6IHQgPSBbXVxuXG5sZXQgZmFpbHMgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlIG1lc3NhZ2UgYSBzZXhwX29mX2EgfSBdXG47O1xuXG5sZXQgZmFpbCBtZXNzYWdlID0gWyB7IHBhdGggPSBbXTsgZXJyb3IgPSBFcnJvci5vZl9zdHJpbmcgbWVzc2FnZSB9IF1cbmxldCBmYWlsZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZmFpbCBmb3JtYXRcbmxldCBmYWlsX3Mgc2V4cCA9IFsgeyBwYXRoID0gW107IGVycm9yID0gRXJyb3IuY3JlYXRlX3Mgc2V4cCB9IF1cbmxldCBjb21iaW5lIHQxIHQyID0gdDEgQCB0MlxubGV0IG9mX2xpc3QgPSBMaXN0LmNvbmNhdFxuXG5sZXQgbmFtZSBuYW1lIHQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBbXSAtPiBbXSAoKiB3aGVuIHN1Y2Nlc3NmdWwsIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGEgY2xvc3VyZSBmb3IgW35mXSwgYmVsb3cgKilcbiAgfCBfIC0+IExpc3QubWFwIHQgfmY6KGZ1biB7IHBhdGg7IGVycm9yIH0gLT4geyBwYXRoID0gbmFtZSA6OiBwYXRoOyBlcnJvciB9KVxuOztcblxubGV0IG5hbWVfbGlzdCBuIGwgPSBuYW1lIG4gKG9mX2xpc3QgbClcbmxldCBmYWlsX2ZuIG1lc3NhZ2UgXyA9IGZhaWwgbWVzc2FnZVxubGV0IHBhc3NfYm9vbCAoXyA6IGJvb2wpID0gcGFzc1xubGV0IHBhc3NfdW5pdCAoXyA6IHVuaXQpID0gcGFzc1xuXG5sZXQgcHJvdGVjdCBmIHYgPVxuICB0cnkgZiB2IHdpdGhcbiAgfCBleG4gLT5cbiAgICBmYWlsX3MgKFNleHAubWVzc2FnZSBcIkV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nIHZhbGlkYXRpb25cIiBbIFwiXCIsIHNleHBfb2ZfZXhuIGV4biBdKVxuOztcblxubGV0IHRyeV93aXRoIGYgPVxuICBwcm90ZWN0XG4gICAgKGZ1biAoKSAtPlxuICAgICAgIGYgKCk7XG4gICAgICAgcGFzcylcbiAgICAoKVxuOztcblxubGV0IHBhdGhfc3RyaW5nIHBhdGggPSBTdHJpbmcuY29uY2F0IH5zZXA6XCIuXCIgcGF0aFxuXG5sZXQgZXJyb3JzIHQgPVxuICBMaXN0Lm1hcCB0IH5mOihmdW4geyBwYXRoOyBlcnJvciB9IC0+XG4gICAgRXJyb3IudG9fc3RyaW5nX2h1bSAoRXJyb3IudGFnIGVycm9yIH50YWc6KHBhdGhfc3RyaW5nIHBhdGgpKSlcbjs7XG5cbmxldCByZXN1bHRfZmFpbCB0ID1cbiAgT3JfZXJyb3IuZXJyb3JcbiAgICBcInZhbGlkYXRpb24gZXJyb3JzXCJcbiAgICAoTGlzdC5tYXAgdCB+ZjooZnVuIHsgcGF0aDsgZXJyb3IgfSAtPiBwYXRoX3N0cmluZyBwYXRoLCBlcnJvcikpXG4gICAgWyVzZXhwX29mOiAoc3RyaW5nICogRXJyb3IudCkgTGlzdC50XVxuW0BAY29sZF1cbjs7XG5cbigqKiBbcmVzdWx0XSBpcyBjYXJlZnVsbHkgaW1wbGVtZW50ZWQgc28gdGhhdCBpdCBjYW4gYmUgaW5saW5lZCAtLSBjYWxsaW5nIFtyZXN1bHRfZmFpbF0sXG4gICAgd2hpY2ggaXMgbm90IGlubGluZWFibGUsIGlzIGtleSB0byB0aGlzLiAqKVxubGV0IHJlc3VsdCB0ID0gaWYgTGlzdC5pc19lbXB0eSB0IHRoZW4gT2sgKCkgZWxzZSByZXN1bHRfZmFpbCB0XG5cbmxldCBtYXliZV9yYWlzZSB0ID0gT3JfZXJyb3Iub2tfZXhuIChyZXN1bHQgdClcbmxldCB2YWxpZF9vcl9lcnJvciBjaGVjayB4ID0gT3JfZXJyb3IubWFwIChyZXN1bHQgKHByb3RlY3QgY2hlY2sgeCkpIH5mOihmdW4gKCkgLT4geClcblxubGV0IGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgX3JlY29yZCB2ID1cbiAgbGV0IHJlc3VsdCA9IHByb3RlY3QgY2hlY2sgdiBpblxuICBuYW1lIChGaWVsZC5uYW1lIGZsZCkgcmVzdWx0XG47O1xuXG5sZXQgZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA9XG4gIGxldCB2ID0gRmllbGQuZ2V0IGZsZCByZWNvcmQgaW5cbiAgZmllbGRfZGlyZWN0IGNoZWNrIGZsZCByZWNvcmQgdlxuOztcblxubGV0IGZpZWxkX2ZvbGRlciBjaGVjayByZWNvcmQgPVxuICAoKTtcbiAgZnVuIGFjYyBmbGQgLT4gZmllbGQgY2hlY2sgcmVjb3JkIGZsZCA6OiBhY2Ncbjs7XG5cbmxldCBmaWVsZF9kaXJlY3RfZm9sZGVyIGNoZWNrID1cbiAgU3RhZ2VkLnN0YWdlIChmdW4gYWNjIGZsZCByZWNvcmQgdiAtPlxuICAgIG1hdGNoIGZpZWxkX2RpcmVjdCBjaGVjayBmbGQgcmVjb3JkIHYgd2l0aFxuICAgIHwgW10gLT4gYWNjICgqIEF2b2lkIGFsbG9jYXRpbmcgYSBuZXcgbGlzdCBpbiB0aGUgc3VjY2VzcyBjYXNlICopXG4gICAgfCByZXN1bHQgLT4gcmVzdWx0IDo6IGFjYylcbjs7XG5cbmxldCBhbGwgY2hlY2tzIHYgPVxuICBsZXQgcmVjIGxvb3AgY2hlY2tzIHYgZXJycyA9XG4gICAgbWF0Y2ggY2hlY2tzIHdpdGhcbiAgICB8IFtdIC0+IGVycnNcbiAgICB8IGNoZWNrIDo6IGNoZWNrcyAtPlxuICAgICAgKG1hdGNoIHByb3RlY3QgY2hlY2sgdiB3aXRoXG4gICAgICAgfCBbXSAtPiBsb29wIGNoZWNrcyB2IGVycnNcbiAgICAgICB8IGVyciAtPiBsb29wIGNoZWNrcyB2IChlcnIgOjogZXJycykpXG4gIGluXG4gIG9mX2xpc3QgKExpc3QucmV2IChsb29wIGNoZWNrcyB2IFtdKSlcbjs7XG5cbmxldCBvZl9yZXN1bHQgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IGZhaWwgZXJyb3IpXG47O1xuXG5sZXQgb2ZfZXJyb3IgZiA9XG4gIHByb3RlY3QgKGZ1biB2IC0+XG4gICAgbWF0Y2ggZiB2IHdpdGhcbiAgICB8IE9rICgpIC0+IHBhc3NcbiAgICB8IEVycm9yIGVycm9yIC0+IFsgeyBwYXRoID0gW107IGVycm9yIH0gXSlcbjs7XG5cbmxldCBib29sdGVzdCBmIH5pZl9mYWxzZSA9IHByb3RlY3QgKGZ1biB2IC0+IGlmIGYgdiB0aGVuIHBhc3MgZWxzZSBmYWlsIGlmX2ZhbHNlKVxuXG5sZXQgcGFpciB+ZnN0IH5zbmQgKGZzdF92YWx1ZSwgc25kX3ZhbHVlKSA9XG4gIG9mX2xpc3QgWyBuYW1lIFwiZnN0XCIgKHByb3RlY3QgZnN0IGZzdF92YWx1ZSk7IG5hbWUgXCJzbmRcIiAocHJvdGVjdCBzbmQgc25kX3ZhbHVlKSBdXG47O1xuXG5sZXQgbGlzdF9pbmRleGVkIGNoZWNrIGxpc3QgPVxuICBMaXN0Lm1hcGkgbGlzdCB+ZjooZnVuIGkgZWwgLT4gbmFtZSAoSW50LnRvX3N0cmluZyAoaSArIDEpKSAocHJvdGVjdCBjaGVjayBlbCkpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBsaXN0IH5uYW1lOmV4dHJhY3RfbmFtZSBjaGVjayBsaXN0ID1cbiAgTGlzdC5tYXAgbGlzdCB+ZjooZnVuIGVsIC0+XG4gICAgbWF0Y2ggcHJvdGVjdCBjaGVjayBlbCB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgdCAtPlxuICAgICAgKCogZXh0cmEgbGV2ZWwgb2YgcHJvdGVjdGlvbiBpbiBjYXNlIGV4dHJhY3RfbmFtZSB0aHJvd3MgYW4gZXhjZXB0aW9uICopXG4gICAgICBwcm90ZWN0IChmdW4gdCAtPiBuYW1lIChleHRyYWN0X25hbWUgZWwpIHQpIHQpXG4gIHw+IG9mX2xpc3Rcbjs7XG5cbmxldCBhbGlzdCB+bmFtZSBmIGxpc3QnID0gbGlzdCAoZnVuIChfLCB4KSAtPiBmIHgpIGxpc3QnIH5uYW1lOihmdW4gKGtleSwgXykgLT4gbmFtZSBrZXkpXG5sZXQgZmlyc3RfZmFpbHVyZSB0MSB0MiA9IGlmIExpc3QuaXNfZW1wdHkgdDEgdGhlbiB0MiBlbHNlIHQxXG5cbmxldCBvZl9lcnJvcl9vcHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcGFzc1xuICB8IFNvbWUgZXJyb3IgLT4gZmFpbCBlcnJvclxuOztcblxubGV0IGJvdW5kZWQgfm5hbWUgfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4ID1cbiAgbWF0Y2ggTWF5YmVfYm91bmQuY29tcGFyZV90b19pbnRlcnZhbF9leG4gfmxvd2VyIH51cHBlciB+Y29tcGFyZSB4IHdpdGhcbiAgfCBJbl9yYW5nZSAtPiBwYXNzXG4gIHwgQmVsb3dfbG93ZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggbG93ZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA8IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPD0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG4gIHwgQWJvdmVfdXBwZXJfYm91bmQgLT5cbiAgICAobWF0Y2ggdXBwZXIgd2l0aFxuICAgICB8IFVuYm91bmRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgfCBJbmNsIGluY2wgLT4gZmFpbCAoUHJpbnRmLnNwcmludGYgXCJ2YWx1ZSAlcyA+IGJvdW5kICVzXCIgKG5hbWUgeCkgKG5hbWUgaW5jbCkpXG4gICAgIHwgRXhjbCBleGNsIC0+IGZhaWwgKFByaW50Zi5zcHJpbnRmIFwidmFsdWUgJXMgPj0gYm91bmQgJXNcIiAobmFtZSB4KSAobmFtZSBleGNsKSkpXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggKysgKSB0MSB0MiA9IGNvbWJpbmUgdDEgdDJcbmVuZFxuIiwiXG4oKiBXZSBkbyBub3QgW2luY2x1ZGUgQmFzZV0gaGVyZSwgYW5kIGluc3RlYWQgaW1wb3J0IG1vZHVsZXMgdGhhdCBbQ29yZV0gZG9lc24ndCBleHRlbmQsXG4gICBiZWNhdXNlIHdlIHdhbnQgY29kZSBpbiBbQ29yZV0gdG8gYmUgY2xlYXIgd2hlbiBpdCByZWZlcmVuY2VzIGEgW0Jhc2VdIG1vZHVsZSB0aGF0XG4gICBbQ29yZV0gaXMgb3ZlcnJpZGluZy4gKilcbm1vZHVsZSBBcHBsaWNhdGl2ZSA9IEJhc2UuQXBwbGljYXRpdmVcbm1vZHVsZSBBdmx0cmVlID0gQmFzZS5Bdmx0cmVlXG5tb2R1bGUgQmFja3RyYWNlID0gQmFzZS5CYWNrdHJhY2Vcbm1vZHVsZSBCaW5hcnlfc2VhcmNoID0gQmFzZS5CaW5hcnlfc2VhcmNoXG5tb2R1bGUgQ29tcGFyaXNvbnMgPSBCYXNlLkNvbXBhcmlzb25zXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IEJhc2UuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIEVxdWFsID0gQmFzZS5FcXVhbFxubW9kdWxlIEV4biA9IEJhc2UuRXhuXG5tb2R1bGUgRmxvYXRhYmxlID0gQmFzZS5GbG9hdGFibGVcbm1vZHVsZSBGb3JtYXR0ZXIgPSBCYXNlLkZvcm1hdHRlclxubW9kdWxlIEhhc2ggPSBCYXNlLkhhc2hcbm1vZHVsZSBIYXNoZXIgPSBCYXNlLkhhc2hlclxubW9kdWxlIEluZGV4ZWRfY29udGFpbmVyID0gQmFzZS5JbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEludGFibGUgPSBCYXNlLkludGFibGVcbm1vZHVsZSBJbnRfY29udmVyc2lvbnMgPSBCYXNlLkludF9jb252ZXJzaW9uc1xubW9kdWxlIEludF9tYXRoID0gQmFzZS5JbnRfbWF0aFxubW9kdWxlIEludmFyaWFudCA9IEJhc2UuSW52YXJpYW50XG5tb2R1bGUgTW9uYWQgPSBCYXNlLk1vbmFkXG5tb2R1bGUgUG9seSA9IEJhc2UuUG9seVxuXG5tb2R1bGUgUG9wY291bnQgPSBCYXNlLlBvcGNvdW50XG5bQEB3YXJuaW5nIFwiLTNcIl1cbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gQmFzZS5QcmV0dHlfcHJpbnRlclxubW9kdWxlIFJhbmRvbSA9IEJhc2UuUmFuZG9tXG5tb2R1bGUgU3RhZ2VkID0gQmFzZS5TdGFnZWRcbm1vZHVsZSBTdHJpbmdhYmxlID0gQmFzZS5TdHJpbmdhYmxlXG5tb2R1bGUgU3lzID0gQmFzZS5TeXNcbm1vZHVsZSBVY2hhciA9IEJhc2UuVWNoYXJcbm1vZHVsZSBXaXRoX3JldHVybiA9IEJhc2UuV2l0aF9yZXR1cm5cbm1vZHVsZSBXb3JkX3NpemUgPSBCYXNlLldvcmRfc2l6ZVxuXG4oKiBXZSBkbyBpbmNsdWRlIFtCYXNlXSdzIHRvcC1sZXZlbCB2YWx1ZSBhbmQgdHlwZSBiaW5kaW5ncywgYmVjYXVzZSB0aGV5IGRvbid0IGNhdXNlXG4gICBhbnkgY29uZnVzaW9uLCBhbmQgZHVwbGljYXRpbmcgdGhlbSB3b3VsZCBiZSBlcnJvciBwcm9uZS4gKilcbmluY2x1ZGUgQmFzZS5FeHBvcnRcbmluY2x1ZGUgU3RkaW9cbmluY2x1ZGUgQmFzZV9mb3JfdGVzdHNcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5tb2R1bGUgRmllbGQgPSBGaWVsZHNsaWIuRmllbGRcblxubW9kdWxlIEZyb21fc2V4cGxpYiA6IHNpZ1xuICB0eXBlIGJpZ3N0cmluZyA9IFNleHBsaWIuQ29udi5iaWdzdHJpbmcgW0BAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBtYXQgPSBTZXhwbGliLkNvbnYubWF0IFtAQGRlcml2aW5nIHNleHBdXG4gIHR5cGUgdmVjID0gU2V4cGxpYi5Db252LnZlYyBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICgqIFtzZXhwX29mX29wYXF1ZV0gYW5kIFtvcGFxdWVfb2Zfc2V4cF0gYXJlIHVzZWQgYnkgdGhlIGNvZGUgZ2VuZXJhdGVkIGZyb21cbiAgICAgW1tAQGRlcml2aW5nIHNleHBdXSwgW1slc2V4cF9vZjogXV0sIGFuZCBbWyVvZl9zZXhwOiBdXS4gIFRoZSB0eXBlIFtfIHNleHBfb3BhcXVlXVxuICAgICBleHBhbmRzIHRvIHVzZXMgb2YgW3NleHBfb2Zfb3BhcXVlXSBhbmQgW29wYXF1ZV9vZl9zZXhwXS4gKilcblxuICB2YWwgc2V4cF9vZl9vcGFxdWUgOiBfIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBvcGFxdWVfb2Zfc2V4cCA6IEJhc2UuU2V4cC50IC0+IF9cbiAgdmFsIHNleHBfb2ZfcGFpciA6ICgnYSAtPiBCYXNlLlNleHAudCkgLT4gKCdiIC0+IEJhc2UuU2V4cC50KSAtPiAnYSAqICdiIC0+IEJhc2UuU2V4cC50XG4gIHZhbCBwYWlyX29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EpIC0+IChCYXNlLlNleHAudCAtPiAnYikgLT4gQmFzZS5TZXhwLnQgLT4gJ2EgKiAnYlxuXG4gIGV4Y2VwdGlvbiBPZl9zZXhwX2Vycm9yIG9mIGV4biAqIEJhc2UuU2V4cC50XG5cbiAgdmFsIG9mX3NleHBfZXJyb3IgOiBzdHJpbmcgLT4gQmFzZS5TZXhwLnQgLT4gX1xuICB2YWwgb2Zfc2V4cF9lcnJvcl9leG4gOiBleG4gLT4gQmFzZS5TZXhwLnQgLT4gX1xuZW5kID1cbiAgU2V4cGxpYi5Db252XG5cbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5cbigqIFtzZXhwX29wYXF1ZV0gaW5kaWNhdGVzIHRvIFtwcHhfc2V4cF9jb252XSB0aGF0IGEgdmFsdWUgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIFtfXSwgaS5lLlxuICAgW1NleHAuQXRvbSBcIl9cIl0uICBIZXJlIHdlIGV4cG9zZSB0aGUgW0BAZGVyaXZpbmddIGFzcGVjdHMgb2YgW3NleHBfb3BhcXVlXSBzbyB0aGF0XG4gICBvdGhlciBwcHgncyB0cmVhdCBbc2V4cF9vcGFxdWVdIGNvcnJlY3RseSwgYnkgaWdub3JpbmcgaXQgYW5kIHByb2Nlc3NpbmcgdGhlIHVuZGVybHlpbmdcbiAgIHR5cGUuICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICB0eXBlICdhIHNleHBfb3BhcXVlID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIHNleHBfb3BhcXVlIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cbmVuZFxud2l0aCB0eXBlICdhIHNleHBfb3BhcXVlIDo9ICdhKVxuXG5pbmNsdWRlIChcbiAgVHlwZXJlcF9saWIuU3RkIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIFR5cGVyZXBfbGliLlN0ZFxuICBlbmRcbiAgd2l0aCBtb2R1bGUgVHlwZV9lcXVhbCA6PSBUeXBlcmVwX2xpYi5TdGQuVHlwZV9lcXVhbClcblxubW9kdWxlIFZhcmlhbnQgPSBWYXJpYW50c2xpYi5WYXJpYW50XG5cbmxldCB3aXRoX3JldHVybiA9IFdpdGhfcmV0dXJuLndpdGhfcmV0dXJuXG5sZXQgYW1fcnVubmluZ19pbmxpbmVfdGVzdCA9IFBweF9pbmxpbmVfdGVzdF9saWIuUnVudGltZS5hbV9ydW5uaW5nX2lubGluZV90ZXN0XG5cbmxldCBhbV9ydW5uaW5nX3Rlc3QgPVxuICB0cnlcbiAgICBpZ25vcmUgKENhbWwuU3lzLmdldGVudiBcIlRFU1RJTkdfRlJBTUVXT1JLXCIgOiBzdHJpbmcpO1xuICAgIHRydWVcbiAgd2l0aFxuICAoKiBbQ2FtbC4qXSBuZXZlciByYWlzZXMgW05vdF9mb3VuZF9zXSAqKVxuICB8IENhbWwuTm90X2ZvdW5kIC0+IGZhbHNlXG47O1xuXG50eXBlICdhIGlkZW50aXR5ID0gJ2FcblxubW9kdWxlIE5vdF9mb3VuZCA9IHN0cnVjdFxuICBleGNlcHRpb25cbiAgICBOb3RfZm91bmQgPSBOb3RfZm91bmRcbiAgICAgICAgICAgICAgICBbQGRlcHJlY2F0ZWRcbiAgICAgICAgICAgICAgICAgIHt8W3NpbmNlIDIwMTgtMDJdIEluc3RlYWQgb2YgcmFpc2luZyBbTm90X2ZvdW5kXSwgY29uc2lkZXIgdXNpbmcgW3JhaXNlX3NdIHdpdGggYW5cbmluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UuICBJZiBjb2RlIG5lZWRzIHRvIGRpc3Rpbmd1aXNoIFtOb3RfZm91bmRdIGZyb20gb3RoZXJcbmV4Y2VwdGlvbnMsIHBsZWFzZSBjaGFuZ2UgaXQgdG8gaGFuZGxlIGJvdGggW05vdF9mb3VuZF0gYW5kIFtOb3RfZm91bmRfc10uICBUaGVuLCBpbnN0ZWFkXG5vZiByYWlzaW5nIFtOb3RfZm91bmRdLCByYWlzZSBbTm90X2ZvdW5kX3NdIHdpdGggYW4gaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS58fV1cblxuICBleGNlcHRpb24gTm90X2ZvdW5kX3MgPSBCYXNlLk5vdF9mb3VuZF9zXG5lbmRcblxuaW5jbHVkZSBOb3RfZm91bmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNleHBhYmxlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMpIChNIDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6IHQgLT4gU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgb2Zfc2V4cGFibGUgOiBTZXhwYWJsZS50IC0+IHRcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgc2V4cCBpblxuICAgICAgICB0cnkgTS5vZl9zZXhwYWJsZSBzIHdpdGhcbiAgICAgICAgfCBleG4gLT4gb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCAoTS50b19zZXhwYWJsZSB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc2V4cGFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChTZXhwYWJsZSA6IFMxKSAoTSA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCB0b19zZXhwYWJsZSA6ICdhIHQgLT4gJ2EgU2V4cGFibGUudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIG9mX3NleHBhYmxlIDogJ2EgU2V4cGFibGUudCAtPiAnYSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgICAgIGxldCBzID0gU2V4cGFibGUudF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFNleHBhYmxlLnNleHBfb2ZfdCBzZXhwX29mX2EgKE0udG9fc2V4cGFibGUgdClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMikgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgdG9fc2V4cGFibGUgOiAoJ2EsICdiKSB0IC0+ICgnYSwgJ2IpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IpIFNleHBhYmxlLnQgLT4gKCdhLCAnYikgdFxuICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB0X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbGV0IHMgPSBTZXhwYWJsZS50X29mX3NleHAgYV9vZl9zZXhwIGJfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHQgPVxuICAgICAgICBTZXhwYWJsZS5zZXhwX29mX3Qgc2V4cF9vZl9hIHNleHBfb2ZfYiAoTS50b19zZXhwYWJsZSB0KVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlMyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMVxuICAgICAgICAoU2V4cGFibGUgOiBTMykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIHRvX3NleHBhYmxlIDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIFNleHBhYmxlLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBvZl9zZXhwYWJsZSA6ICgnYSwgJ2IsICdjKSBTZXhwYWJsZS50IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA6IFMzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgTS50ID0gc3RydWN0XG4gICAgICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBiX29mX3NleHAgY19vZl9zZXhwIHNleHAgPVxuICAgICAgICBsZXQgcyA9IFNleHBhYmxlLnRfb2Zfc2V4cCBhX29mX3NleHAgYl9vZl9zZXhwIGNfb2Zfc2V4cCBzZXhwIGluXG4gICAgICAgIHRyeSBNLm9mX3NleHBhYmxlIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yX2V4biBleG4gc2V4cFxuICAgICAgOztcblxuICAgICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2Egc2V4cF9vZl9iIHNleHBfb2ZfYyB0ID1cbiAgICAgICAgU2V4cGFibGUuc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2Igc2V4cF9vZl9jIChNLnRvX3NleHBhYmxlIHQpXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT2Zfc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFN0cmluZ2FibGUuUykgOiBTIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICAgIHwgU2V4cGxpYi5TZXhwLkF0b20gcyAtPlxuICAgICAgICAgICh0cnkgTS5vZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgICAgICB8IFNleHBsaWIuU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgICBvZl9zZXhwX2Vycm9yXG4gICAgICAgICAgICBcIlNleHBhYmxlLk9mX3N0cmluZ2FibGUudF9vZl9zZXhwIGV4cGVjdGVkIGFuIGF0b20sIGJ1dCBnb3QgYSBsaXN0XCJcbiAgICAgICAgICAgIHNleHBcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHBsaWIuU2V4cC5BdG9tIChNLnRvX3N0cmluZyB0KVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgVG9fc3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSAoTSA6IFMpIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IE0udCA9IHN0cnVjdFxuICAgICAgbGV0IG9mX3N0cmluZyB4ID0gU2V4cGxpYi5Db252Lm9mX3N0cmluZ19fb2ZfX29mX3NleHAgTS50X29mX3NleHAgeFxuICAgICAgbGV0IHRvX3N0cmluZyB4ID0gU2V4cGxpYi5Db252LnN0cmluZ19vZl9fb2ZfX3NleHBfb2YgTS5zZXhwX29mX3QgeFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgVG9fc3RyaW5nYWJsZSA9IFN0YWJsZS5Ub19zdHJpbmdhYmxlLlYxXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbl9wcm90LkJpbmFibGVcbm1vZHVsZSBTaGFwZSA9IEJpbl9wcm90LlNoYXBlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mX2JpbmFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udl93aXRob3V0X3V1aWQgd2l0aCB0eXBlIGJpbmFibGUgOj0gQmluYWJsZS50KSA6XG4gICAgICBTIHdpdGggdHlwZSB0IDo9IE0udCA9IEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZV93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKEJpbmFibGUgOiBNaW5pbWFsLlMpIChNIDogQ29udiB3aXRoIHR5cGUgYmluYWJsZSA6PSBCaW5hYmxlLnQpIDpcbiAgICAgIFMgd2l0aCB0eXBlIHQgOj0gTS50ID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUxID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMSlcbiAgICAgICAgKE0gOiBDb252MV93aXRob3V0X3V1aWQgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgICBbQEBhbGVydCBcIi1sZWdhY3lcIl1cblxuICAgIG1vZHVsZSBWMiAoQmluYWJsZSA6IE1pbmltYWwuUzEpIChNIDogQ29udjEgd2l0aCB0eXBlICdhIGJpbmFibGUgOj0gJ2EgQmluYWJsZS50KSA6XG4gICAgICBTMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSBNLnQgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUxX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX2JpbmFibGUyID0gc3RydWN0XG4gICAgbW9kdWxlIFYxXG4gICAgICAgIChCaW5hYmxlIDogTWluaW1hbC5TMilcbiAgICAgICAgKE0gOiBDb252Ml93aXRob3V0X3V1aWQgd2l0aCB0eXBlICgnYSwgJ2IpIGJpbmFibGUgOj0gKCdhLCAnYikgQmluYWJsZS50KSA6XG4gICAgICBTMiB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMl93aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMyKVxuICAgICAgICAoTSA6IENvbnYyIHdpdGggdHlwZSAoJ2EsICdiKSBiaW5hYmxlIDo9ICgnYSwgJ2IpIEJpbmFibGUudCkgOlxuICAgICAgUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgTS50ID1cbiAgICAgIEJpbl9wcm90LlV0aWxzLk1ha2VfYmluYWJsZTJfd2l0aF91dWlkIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG4gICAgICAgIGluY2x1ZGUgTVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgT2ZfYmluYWJsZTMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjFcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzX3dpdGhvdXRfdXVpZCB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFibGUgOj0gKCdhLCAnYiwgJ2MpIEJpbmFibGUudCkgOlxuICAgICAgUzMgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNLnQgPVxuICAgICAgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlM193aXRob3V0X3V1aWQgKHN0cnVjdFxuICAgICAgICBtb2R1bGUgQmluYWJsZSA9IEJpbmFibGVcbiAgICAgICAgaW5jbHVkZSBNXG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjJcbiAgICAgICAgKEJpbmFibGUgOiBNaW5pbWFsLlMzKVxuICAgICAgICAoTSA6IENvbnYzIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgYmluYWJsZSA6PSAoJ2EsICdiLCAnYykgQmluYWJsZS50KSA6XG4gICAgICBTMyB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIE0udCA9XG4gICAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGUzX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gQmluYWJsZVxuICAgICAgICBpbmNsdWRlIE1cbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3NleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxIChNIDogU2V4cGFibGUuUykgPVxuICAgICAgT2ZfYmluYWJsZS5WMVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gQmFzZS5TZXhwLnQgPVxuICAgICAgICAgICAgfCBBdG9tIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBMaXN0IG9mIHQgbGlzdFxuICAgICAgICAgIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IE0uc2V4cF9vZl90XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBNLnRfb2Zfc2V4cFxuICAgICAgICBlbmQpXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3NleHBhYmxlKSA9XG4gICAgICBPZl9iaW5hYmxlLlYyXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICAgICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICAgICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICBlbmQpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBNLnRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlID0gTS5zZXhwX29mX3RcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IE0udF9vZl9zZXhwXG4gICAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE9mX3N0cmluZ2FibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgKE0gOiBTdHJpbmdhYmxlLlMpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gICAgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5cbiAgICBtb2R1bGUgVjIgKE0gOiBDb252X3N0cmluZ2FibGUpID0gQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhfdXVpZCAoc3RydWN0XG4gICAgICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgZW5kXG5cbiAgICAgICAgdHlwZSB0ID0gTS50XG5cbiAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBNLnRvX3N0cmluZ1xuXG4gICAgICAgICgqIFdyYXAgZXhjZXB0aW9uIGZvciBpbXByb3ZlZCBkaWFnbm9zdGljcy4gKilcbiAgICAgICAgZXhjZXB0aW9uIE9mX2JpbmFibGUgb2Ygc3RyaW5nICogZXhuIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgcyA9XG4gICAgICAgICAgdHJ5IE0ub2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoT2ZfYmluYWJsZSAocywgeCkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9IE0uY2FsbGVyX2lkZW50aXR5XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4gQmlnYXJyYXlcblxudHlwZSBiaWdzdHJpbmcgPSAoY2hhciwgaW50OF91bnNpZ25lZF9lbHQsIGNfbGF5b3V0KSBBcnJheTEudFxuXG5cbnR5cGUgJ2EgbSA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICdhKVxuXG5sZXQgb2ZfYmlnc3RyaW5nICh0eXBlIGEpIG0gYmlnc3RyaW5nID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgbGV0IHQgPSBNLmJpbl9yZWFkX3QgYmlnc3RyaW5nIH5wb3NfcmVmIGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID0gQXJyYXkxLmRpbSBiaWdzdHJpbmcgaW5cbiAgKG1hdGNoICFwb3NfcmVmID0gYmlnc3RyaW5nX2xlbmd0aCB3aXRoXG4gICB8IHRydWUgLT4gKClcbiAgIHwgZmFsc2UgLT5cbiAgICAgcmFpc2Vfc1xuICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgXCJiaW5fcmVhZF90IGRpZCBub3QgY29uc3VtZSB0aGUgZW50aXJlIGJ1ZmZlclwiXG4gICAgICAgICAgIH5jb25zdW1lZDooIXBvc19yZWYgOiBpbnQpXG4gICAgICAgICAgIChiaWdzdHJpbmdfbGVuZ3RoIDogaW50KV0pO1xuICB0XG47O1xuXG4oKiBVc2luZyB0aGUgW0JpZ3N0cmluZ10gbW9kdWxlIHdvdWxkIGludHJvZHVjZSBhIGN5Y2xpYyBkZXBlbmRlbmN5LiAqKVxubGV0IGNyZWF0ZV9iaWdzdHJpbmcgc2l6ZSA9IEFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBzaXplXG5cbmxldCB0b19iaWdzdHJpbmcgPyhwcmVmaXhfd2l0aF9sZW5ndGggPSBmYWxzZSkgKHR5cGUgYSkgbSB0ID1cbiAgbGV0IG1vZHVsZSBNID0gKHZhbCBtIDogUyB3aXRoIHR5cGUgdCA9IGEpIGluXG4gIGxldCB0X2xlbmd0aCA9IE0uYmluX3NpemVfdCB0IGluXG4gIGxldCBiaWdzdHJpbmdfbGVuZ3RoID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGggdGhlbiB0X2xlbmd0aCArIDggKCogdGhlIHNpemUgb2YgYSA2NC1iaXQgaW50ICopIGVsc2UgdF9sZW5ndGhcbiAgaW5cbiAgbGV0IGJpZ3N0cmluZyA9IGNyZWF0ZV9iaWdzdHJpbmcgYmlnc3RyaW5nX2xlbmd0aCBpblxuICBsZXQgcG9zID1cbiAgICBpZiBwcmVmaXhfd2l0aF9sZW5ndGhcbiAgICB0aGVuIEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9pbnRfNjRiaXQgYmlnc3RyaW5nIH5wb3M6MCB0X2xlbmd0aFxuICAgIGVsc2UgMFxuICBpblxuICBsZXQgcG9zID0gTS5iaW5fd3JpdGVfdCBiaWdzdHJpbmcgfnBvcyB0IGluXG4gIGFzc2VydCAocG9zID0gYmlnc3RyaW5nX2xlbmd0aCk7XG4gIGJpZ3N0cmluZ1xuOztcblxubW9kdWxlIE9mX2JpbmFibGVfd2l0aF91dWlkID0gU3RhYmxlLk9mX2JpbmFibGUuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMV93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTEuVjJcbm1vZHVsZSBPZl9iaW5hYmxlMl93aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTIuVjJcbm1vZHVsZSBPZl9iaW5hYmxlM193aXRoX3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZTMuVjJcbm1vZHVsZSBPZl9zZXhwYWJsZV93aXRoX3V1aWQgPSBTdGFibGUuT2Zfc2V4cGFibGUuVjJcbm1vZHVsZSBPZl9zdHJpbmdhYmxlX3dpdGhfdXVpZCA9IFN0YWJsZS5PZl9zdHJpbmdhYmxlLlYyXG5tb2R1bGUgT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgPSBTdGFibGUuT2ZfYmluYWJsZS5WMVxubW9kdWxlIE9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMS5WMVxubW9kdWxlIE9mX2JpbmFibGUyX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMi5WMVxubW9kdWxlIE9mX2JpbmFibGUzX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9iaW5hYmxlMy5WMVxubW9kdWxlIE9mX3NleHBhYmxlX3dpdGhvdXRfdXVpZCA9IFN0YWJsZS5PZl9zZXhwYWJsZS5WMVxubW9kdWxlIE9mX3N0cmluZ2FibGVfd2l0aG91dF91dWlkID0gU3RhYmxlLk9mX3N0cmluZ2FibGUuVjFcblxubGV0JXRlc3RfbW9kdWxlIF8gPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFNfb25seV9mdW5jdGlvbnNfYW5kX3NoYXBlID0gc2lnXG4gICAgICBpbmNsdWRlIFNfb25seV9mdW5jdGlvbnNcblxuICAgICAgdmFsIGJpbl9zaGFwZV90IDogU2hhcGUudFxuICAgIGVuZFxuXG4gICAgKCogQ2hlY2sgdGhhdCBvbmx5IHRoZSBmdW5jdGlvbnMgJiBzaGFwZSBhcmUgc3VmZmljaWVudCBmb3IgW0BAZGVyaXZpbmcgYmluX2lvXS4gVGhlXG4gICAgICAgZmFjdCB0aGF0IHRoaXMgZnVuY3RvciB0eXBlY2hlY2tzIGlzLCBpdHNlbGYsIHRoZSB0ZXN0LiAqKVxuICAgIG1vZHVsZSBfIChYIDogU19vbmx5X2Z1bmN0aW9uc19hbmRfc2hhcGUpIDogUyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gWC50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcbiAgZW5kKVxuOztcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuUHJpbnRmfVtCYXNlLlByaW50Zl19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZSBCYXNlLlByaW50ZiAoKiogQG9wZW4gKilcblxubGV0IGVwcmludGYgPSBTdGRpby5PdXRfY2hhbm5lbC5lcHJpbnRmXG5sZXQgZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmZwcmludGZcbmxldCBrZnByaW50ZiA9IFN0ZGlvLk91dF9jaGFubmVsLmtmcHJpbnRmXG5sZXQgcHJpbnRmID0gU3RkaW8uT3V0X2NoYW5uZWwucHJpbnRmXG5cblxuKCoqIHByaW50IHRvIHN0ZGVycjsgZXhpdCAxICopXG5sZXQgZXhpdGYgZm10ID1cbiAga3NwcmludGZcbiAgICAoZnVuIHMgKCkgLT5cbiAgICAgICBlcHJpbnRmIFwiJXNcXG4lIVwiIHM7XG4gICAgICAgZXhpdCAxKVxuICAgIGZtdFxuOztcblxudHlwZSBwcmludGYgPSB7IHByaW50ZiA6ICdhLiAoJ2EsIEJ1ZmZlci50LCB1bml0KSBmb3JtYXQgLT4gJ2EgfVxuXG5sZXQgY29sbGVjdF90b19zdHJpbmcgZiA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gIGxldCBkb25lXyA9IHJlZiBmYWxzZSBpblxuICBsZXQgcHJpbnRmIGZtdCA9XG4gICAga2JwcmludGZcbiAgICAgIChmdW4gYnVmIC0+XG4gICAgICAgICBpZiAhZG9uZV9cbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBCdWZmZXIucmVzZXQgYnVmO1xuICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIltwcmludGZdIHVzZWQgYWZ0ZXIgW2NvbGxlY3RfdG9fc3RyaW5nXSByZXR1cm5lZFwiXSkpXG4gICAgICBidWZcbiAgICAgIGZtdFxuICBpblxuICBmIHsgcHJpbnRmIH07XG4gIGRvbmVfIDo9IHRydWU7XG4gIGxldCBvdXRwdXQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIG91dHB1dFxuOztcbiIsIm9wZW4hIEltcG9ydFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG4oKiBBbGwgdGhlIHR5cGVzIGFzIGV4cG9zZWQgaW4gdGhlIG1saSBhcmUgZGVmaW5lZCBpbiB0aGlzIFtUeXBlc10gbW9kdWxlLiAgVGhlIHJlc3Qgb2ZcbiAgIHRoaXMgZmlsZSBpcyBzaW1wbHkgb3ZlcnJpZGluZyBhbGwgdGhlIGJpbl9pbywgY29tcGFyZSwgYW5kIHNleHAgZnVuY3Rpb25zIHRvIHJhaXNlXG4gICBleGNlcHRpb25zLiAqKVxubW9kdWxlIFR5cGVzID0gc3RydWN0XG4gIG1vZHVsZSBOb2JvZHkgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIk5vYm9keVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBNZSA9IHN0cnVjdFxuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiTWVcIlxuICBlbmRcblxuICBtb2R1bGUgUmVhZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFJlYWQgXSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiUmVhZFwiXG4gIGVuZFxuXG4gIG1vZHVsZSBXcml0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFsgYFdob19jYW5fd3JpdGUgb2YgTWUudCBdIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJXcml0ZVwiXG4gIGVuZFxuXG4gIG1vZHVsZSBJbW11dGFibGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgYFdob19jYW5fd3JpdGUgb2YgTm9ib2R5LnRcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbmFtZSA9IFwiSW1tdXRhYmxlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFJlYWRfd3JpdGUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgWyBSZWFkLnRcbiAgICAgIHwgV3JpdGUudFxuICAgICAgXVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGxldCBuYW1lID0gXCJSZWFkX3dyaXRlXCJcbiAgZW5kXG5cbiAgbW9kdWxlIFVwcGVyX2JvdW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIFsgUmVhZC50XG4gICAgICB8IGBXaG9fY2FuX3dyaXRlIG9mICdhXG4gICAgICBdXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IG5hbWUgPSBcIlVwcGVyX2JvdW5kXCJcbiAgZW5kXG5lbmRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxuKCogVGhpcyBpcyBhbiBleHBsaWNpdCBtb2R1bGUgdHlwZSBpbnN0ZWFkIG9mIGp1c3QgZ2l2ZW4gaW5saW5lIGFzIHRoZSByZXR1cm4gc2lnbmF0dXJlIG9mXG4gICBbT25seV91c2VkX2FzX3BoYW50b21fdHlwZTFdIHRvIGF2b2lkIGFuIHVudXNlZCB2YWx1ZSB3YXJuaW5nIHdpdGggYmluX2lvIHZhbHVlcy4gKilcbm1vZHVsZSB0eXBlIFNleHBhYmxlX2JpbmFibGVfY29tcGFyYWJsZSA9IHNpZ1xuICB0eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cbmVuZFxuXG4oKiBPdmVycmlkZSBhbGwgYmluX2lvLCBzZXhwLCBjb21wYXJlIGZ1bmN0aW9ucyB0byByYWlzZSBleGNlcHRpb25zICopXG5tb2R1bGUgT25seV91c2VkX2FzX3BoYW50b21fdHlwZTEgKE5hbWUgOiBzaWdcbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogU2V4cGFibGVfYmluYWJsZV9jb21wYXJhYmxlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhXG5cbiAgbGV0IHNleHBfb2ZfdCBfIF8gPSBmYWlsd2l0aGYgXCJVbmV4cGVjdGVkbHkgY2FsbGVkIFslcy5zZXhwX29mX3RdXCIgTmFtZS5uYW1lICgpXG4gIGxldCB0X29mX3NleHAgXyBfID0gZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IGNhbGxlZCBbJXMudF9vZl9zZXhwXVwiIE5hbWUubmFtZSAoKVxuICBsZXQgY29tcGFyZSBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmNvbXBhcmVdXCIgTmFtZS5uYW1lICgpXG4gIGxldCBoYXNoX2ZvbGRfdCBfIF8gXyA9IGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSBjYWxsZWQgWyVzLmhhc2hfZm9sZF90XVwiIE5hbWUubmFtZSAoKVxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLk5vdGhpbmcudF9zZXhwX2dyYW1tYXJcblxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgZW5kKVxuICAgICAgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlIF8gPVxuICAgICAgICAgIGZhaWx3aXRoZiBcIlVuZXhwZWN0ZWRseSB1c2VkICVzIGJpbl9pbyBzZXJpYWxpemF0aW9uXCIgTmFtZS5uYW1lICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IG9mX2JpbmFibGUgXyA9XG4gICAgICAgICAgZmFpbHdpdGhmIFwiVW5leHBlY3RlZGx5IHVzZWQgJXMgYmluX2lvIGRlc2VyaWFsaXphdGlvblwiIE5hbWUubmFtZSAoKVxuICAgICAgICA7O1xuICAgICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICBlbmQpIDogc2lnXG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBfcG9seV1cbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9ubHlfdXNlZF9hc19waGFudG9tX3R5cGUxIChUKVxuXG4gIHR5cGUgdCA9IFQudCBNLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gIGxldCBfX3Rfb2Zfc2V4cF9fID0gdF9vZl9zZXhwXG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgTm9ib2R5ID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLk5vYm9keSlcbiAgICBtb2R1bGUgTWUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuTWUpXG4gICAgbW9kdWxlIFJlYWQgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuUmVhZClcbiAgICBtb2R1bGUgV3JpdGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuV3JpdGUpXG4gICAgbW9kdWxlIFJlYWRfd3JpdGUgPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMCAoVHlwZXMuUmVhZF93cml0ZSlcbiAgICBtb2R1bGUgSW1tdXRhYmxlID0gT25seV91c2VkX2FzX3BoYW50b21fdHlwZTAgKFR5cGVzLkltbXV0YWJsZSlcblxuICAgIHR5cGUgbm9ib2R5ID0gTm9ib2R5LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgbWUgPSBNZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIG1vZHVsZSBVcHBlcl9ib3VuZCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIE0gPSBPbmx5X3VzZWRfYXNfcGhhbnRvbV90eXBlMSAoVHlwZXMuVXBwZXJfYm91bmQpXG5cbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFR5cGVzLlVwcGVyX2JvdW5kLnQgTS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgICAgbGV0IF9fdF9vZl9zZXhwX18gPSB0X29mX3NleHBcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgcmVhZCA9IFYxLlJlYWQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSB3cml0ZSA9IFYxLldyaXRlLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIGltbXV0YWJsZSA9IFYxLkltbXV0YWJsZS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgICB0eXBlIHJlYWRfd3JpdGUgPSBWMS5SZWFkX3dyaXRlLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICAgIHR5cGUgJ2EgcGVybXMgPSAnYSBWMS5VcHBlcl9ib3VuZC50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbm1vZHVsZSBFeHBvcnQgPSBTdGFibGUuRXhwb3J0XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBDb21wYXJhdG9yID0gQmFzZS5Db21wYXJhdG9yXG5cbnR5cGUgKCdhLCAnd2l0bmVzcykgdCA9ICgnYSwgJ3dpdG5lc3MpIENvbXBhcmF0b3IudCA9IHByaXZhdGVcbiAgeyBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgc2V4cF9vZl90IDogJ2EgLT4gQmFzZS5TZXhwLnRcbiAgfVxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBDb21wYXJhdG9yIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcblxuaW5jbHVkZSAoQ29tcGFyYXRvciA6IEJhc2VfbWFzaylcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICd3aXRuZXNzKSB0ID0gKCdhLCAnd2l0bmVzcykgdCA9IHByaXZhdGVcbiAgICAgIHsgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludFxuICAgICAgOyBzZXhwX29mX3QgOiAnYSAtPiBCYXNlLlNleHAudFxuICAgICAgfVxuXG4gICAgdHlwZSAoJ2EsICdiKSBjb21wYXJhdG9yID0gKCdhLCAnYikgdFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IFNcbiAgICBtb2R1bGUgdHlwZSBTMSA9IFMxXG5cbiAgICBsZXQgbWFrZSA9IG1ha2VcblxuICAgIG1vZHVsZSBNYWtlID0gTWFrZVxuICAgIG1vZHVsZSBNYWtlMSA9IE1ha2UxXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBSZXN1bHQgPSBCYXNlLlJlc3VsdFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIFJlc3VsdC50ID1cbiAgICAgIHwgT2sgb2YgJ2FcbiAgICAgIHwgRXJyb3Igb2YgJ2JcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbiAgICBsZXQgbWFwIHggfmYxIH5mMiA9XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgRXJyb3IgZXJyIC0+IEVycm9yIChmMiBlcnIpXG4gICAgICB8IE9rIHggLT4gT2sgKGYxIHgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYxX3N0YWJsZV91bml0X3Rlc3QgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoc3RyaW5nLCBpbnQpIFYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gICAgbGV0IHRlc3RzID1cbiAgICAgIFsgVjEuT2sgXCJmb29cIiwgXCIoT2sgZm9vKVwiLCBcIlxcMDAwXFwwMDNmb29cIjsgVjEuRXJyb3IgNywgXCIoRXJyb3IgNylcIiwgXCJcXDAwMVxcMDA3XCIgXVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIFJlc3VsdFxuIiwiKCoqIEFuIGludGVyZmFjZSBmb3IgY3JlYXRpbmcgdW5pdCB0ZXN0cyB0byBjaGVjayBzdGFiaWxpdHkgb2Ygc2V4cCBhbmQgYmluLWlvXG4gICAgc2VyaWFsaXphdGlvbnMgKilcblxub3BlbiEgSW1wb3J0XG5cblxubW9kdWxlIHR5cGUgQXJnID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcblxuXG4gICgqKiBbdGVzdHNdIGlzIGEgbGlzdCBvZiAodmFsdWUsIHNleHAtcmVwcmVzZW50YXRpb24sIGJpbi1pby1yZXByZXNlbnRhdGlvbikgdHJpcGxlcy5cbiAgICAgIFRoZSB1bml0IHRlc3RzIGNoZWNrIHRoYXQgdGhlIHR5cGUgcHJvcGVybHkgc2VyaWFsaXplcyBhbmRcbiAgICAgIGRlLXNlcmlhbGl6ZXMgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiByZXByZXNlbnRhdGlvbnMuICopXG4gIHZhbCB0ZXN0cyA6ICh0ICogc3RyaW5nICogc3RyaW5nKSBsaXN0XG5lbmRcblxuKCoqIFVub3JkZXJlZCBjb250YWluZXIgdGVzdHMgYXJlIGZvciB0eXBlcyB3aXRoIHNlcmlhbGl6YXRpb25zIHRoYXQgd2lsbCBjb250YWluIGFcbiAgICBjZXJ0YWluIHNldCBvZiBlbGVtZW50cyAoZWFjaCByZXByZXNlbnRlZCBieSBhIHNpbmdsZSBzZXhwIG9yIGJpbi1pbyBzdHJpbmcpIHdoaWNoIG1heVxuICAgIGFwcGVhciBpbiBhbnkgb3JkZXIsIHN1Y2ggYXMgaGFzaCB0YWJsZXMgYW5kIGhhc2ggc2V0cy4gKilcbm1vZHVsZSBVbm9yZGVyZWRfY29udGFpbmVyX3Rlc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNleHBzIDogc3RyaW5nIGxpc3RcbiAgICA7IGJpbl9pb19oZWFkZXIgOiBzdHJpbmdcbiAgICA7IGJpbl9pb19lbGVtZW50cyA6IHN0cmluZyBsaXN0XG4gICAgfVxuZW5kXG5cbm1vZHVsZSB0eXBlIFVub3JkZXJlZF9jb250YWluZXJfYXJnID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgdmFsIGVxdWFsIDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIHRlc3RzIDogKHQgKiBVbm9yZGVyZWRfY29udGFpbmVyX3Rlc3QudCkgbGlzdFxuZW5kXG4iLCJsZXQgKCB8ISApIHggeSA9IHggfD4geVxuIiwiaW5jbHVkZSBCYXNlLk9yZGVyZWRfY29sbGVjdGlvbl9jb21tb25cblxubGV0IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IGkgPSBpZiBpIDwgMCB0aGVuIGkgKyBsZW5ndGhfZnVuIHQgZWxzZSBpXG5cbmxldCBzbGljZSB+bGVuZ3RoX2Z1biB+c3ViX2Z1biB0IHN0YXJ0IHN0b3AgPVxuICBsZXQgc3RvcCA9IGlmIHN0b3AgPSAwIHRoZW4gbGVuZ3RoX2Z1biB0IGVsc2Ugc3RvcCBpblxuICBsZXQgcG9zID0gbm9ybWFsaXplIH5sZW5ndGhfZnVuIHQgc3RhcnQgaW5cbiAgbGV0IGxlbiA9IG5vcm1hbGl6ZSB+bGVuZ3RoX2Z1biB0IHN0b3AgLSBwb3MgaW5cbiAgc3ViX2Z1biB0IH5wb3MgfmxlblxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlNlcXVlbmNlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl0gKHN0cnVjdFxuICAgIG1vZHVsZSBCaW5hYmxlID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuU2VxdWVuY2UudFxuXG4gICAgbGV0IG9mX2JpbmFibGUgPSBCYXNlLlNlcXVlbmNlLm9mX2xpc3RcbiAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuU2VxdWVuY2UudG9fbGlzdFxuICBlbmQpXG5cbm1vZHVsZSBTdGVwID0gc3RydWN0XG4gIGluY2x1ZGUgU3RlcFxuXG4gIHR5cGUgKCdhLCAncykgdCA9ICgnYSwgJ3MpIFN0ZXAudCA9XG4gICAgfCBEb25lXG4gICAgfCBTa2lwIG9mICdzXG4gICAgfCBZaWVsZCBvZiAnYSAqICdzXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cbmVuZFxuXG5tb2R1bGUgTWVyZ2Vfd2l0aF9kdXBsaWNhdGVzX2VsZW1lbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE1lcmdlX3dpdGhfZHVwbGljYXRlc19lbGVtZW50LnQgPVxuICAgIHwgTGVmdCBvZiAnYVxuICAgIHwgUmlnaHQgb2YgJ2JcbiAgICB8IEJvdGggb2YgJ2EgKiAnYlxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIHR5cGUgSGVhcCA9IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBhZGQgOiAnYSB0IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHBvcF9taW4gOiAnYSB0IC0+ICgnYSAqICdhIHQpIG9wdGlvblxuZW5kXG5cbmxldCBtZXJnZV9hbGwgKG1vZHVsZSBIZWFwIDogSGVhcCkgc2VxcyB+Y29tcGFyZSA9XG4gIGxldCBtb2R1bGUgTWVyZ2VfYWxsX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgaGVhcCA6ICgnYSAqICdhIEJhc2UuU2VxdWVuY2UudCkgSGVhcC50XG4gICAgICA7IG5vdF95ZXRfaW5faGVhcCA6ICdhIEJhc2UuU2VxdWVuY2UudCBsaXN0XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbiAgZW5kXG4gIGluXG4gIHVuZm9sZF9zdGVwXG4gICAgfmluaXQ6XG4gICAgICAoTWVyZ2VfYWxsX3N0YXRlLmNyZWF0ZVxuICAgICAgICAgfmhlYXA6KEhlYXAuY3JlYXRlIH5jb21wYXJlOihCYXNlLkNvbXBhcmFibGUubGlmdCBjb21wYXJlIH5mOmZzdCkpXG4gICAgICAgICB+bm90X3lldF9pbl9oZWFwOnNlcXMpXG4gICAgfmY6KGZ1biB7IGhlYXA7IG5vdF95ZXRfaW5faGVhcCB9IC0+XG4gICAgICBtYXRjaCBub3RfeWV0X2luX2hlYXAgd2l0aFxuICAgICAgfCBzZXEgOjogbm90X3lldF9pbl9oZWFwIC0+XG4gICAgICAgIChtYXRjaCBFeHBlcnQubmV4dF9zdGVwIHNlcSB3aXRoXG4gICAgICAgICB8IERvbmUgLT4gU2tpcCB7IG5vdF95ZXRfaW5faGVhcDsgaGVhcCB9XG4gICAgICAgICB8IFNraXAgc2VxIC0+IFNraXAgeyBub3RfeWV0X2luX2hlYXAgPSBzZXEgOjogbm90X3lldF9pbl9oZWFwOyBoZWFwIH1cbiAgICAgICAgIHwgWWllbGQgKGVsdCwgc2VxKSAtPiBTa2lwIHsgbm90X3lldF9pbl9oZWFwOyBoZWFwID0gSGVhcC5hZGQgaGVhcCAoZWx0LCBzZXEpIH0pXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBIZWFwLnBvcF9taW4gaGVhcCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gRG9uZVxuICAgICAgICAgfCBTb21lICgoZWx0LCBzZXEpLCBoZWFwKSAtPiBZaWVsZCAoZWx0LCB7IGhlYXA7IG5vdF95ZXRfaW5faGVhcCA9IFsgc2VxIF0gfSkpKVxuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5vcGVuIFBlcm1zLkV4cG9ydFxubW9kdWxlIEFycmF5ID0gQmFzZS5BcnJheVxubW9kdWxlIENvcmVfc2VxdWVuY2UgPSBTZXF1ZW5jZVxuXG5pbmNsdWRlIChcbiAgQmFzZS5BcnJheSA6XG4gIHNpZ1xuICAgIHR5cGUgJ2EgdCA9ICdhIGFycmF5IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIHNleHBfZ3JhbW1hcl1cbiAgZW5kKVxuXG50eXBlICdhIHQgPSAnYSBhcnJheSBbQEBkZXJpdmluZyBiaW5faW8sIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbm1vZHVsZSBQcml2YXRlID0gQmFzZS5BcnJheS5Qcml2YXRlXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5BcnJheVxuXG4gIGxldCBub3JtYWxpemUgdCBpID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5ub3JtYWxpemUgfmxlbmd0aF9mdW46bGVuZ3RoIHQgaVxuXG4gIGxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uc2xpY2Ugfmxlbmd0aF9mdW46bGVuZ3RoIH5zdWJfZnVuOnN1YiB0IHN0YXJ0IHN0b3BcbiAgOztcblxuICBsZXQgbmdldCB0IGkgPSB0Lihub3JtYWxpemUgdCBpKVxuICBsZXQgbnNldCB0IGkgdiA9IHQuKG5vcm1hbGl6ZSB0IGkpIDwtIHZcblxuICBtb2R1bGUgU2VxdWVuY2UgPSBzdHJ1Y3RcbiAgICBvcGVuIEJhc2UuQXJyYXlcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gICAgbGV0IHNldCA9IHNldFxuICBlbmRcblxuICAoKiBTZWUgT0NhbWwgcGVyZiBub3RlcyBmb3Igd2h5IHRoZXNlIGFycmF5IGJsaXRzIGFyZSBzcGVjaWFsIGNhc2VkIC0tIGluIHBhcnRpY3VsYXIsXG4gICAgIHRoZSBzZWN0aW9uIGVudGl0bGVkIFwiRmFzdCwgU2xvdyBhbmQgSW5jb3JyZWN0IEFycmF5IGJsaXRzXCIgb2ZcbiAgICAgaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTMwMjIwMDAwMjI5L2h0dHA6Ly9qYW5lc3RyZWV0LmdpdGh1Yi5jb20vb2NhbWwtcGVyZi1ub3Rlcy5odG1sICopXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gaW50IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIG1vZHVsZSBVbnNhZmVfYmxpdCA9IHN0cnVjdFxuICAgICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgICAgOiAgc3JjOnRfXG4gICAgICAgIC0+IHNyY19wb3M6aW50XG4gICAgICAgIC0+IGRzdDp0X1xuICAgICAgICAtPiBkc3RfcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXRcbiAgICAgICAgPSBcImNvcmVfYXJyYXlfdW5zYWZlX2ludF9ibGl0XCJcbiAgICAgIFtAQG5vYWxsb2NdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlXG4gICAgICBUZXN0X2JsaXQuTWFrZV9hbmRfdGVzdFxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gaW50XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSAoID0gKVxuICAgICAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gMSBlbHNlIDBcbiAgICAgICAgZW5kKVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGluY2x1ZGUgU2VxdWVuY2VcblxuICAgICAgICAgIGxldCBjcmVhdGUgfmxlbiA9IGNyZWF0ZSB+bGVuIDBcblxuICAgICAgICAgIGluY2x1ZGUgVW5zYWZlX2JsaXRcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICBlbmRcblxuICBtb2R1bGUgRmxvYXQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRfID0gZmxvYXQgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbW9kdWxlIFVuc2FmZV9ibGl0ID0gc3RydWN0XG4gICAgICBleHRlcm5hbCB1bnNhZmVfYmxpdFxuICAgICAgICA6ICBzcmM6dF9cbiAgICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgICAgLT4gZHN0OnRfXG4gICAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgLT4gdW5pdFxuICAgICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFwiXG4gICAgICBbQEBub2FsbG9jXVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZVxuICAgICAgVGVzdF9ibGl0Lk1ha2VfYW5kX3Rlc3RcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IGZsb2F0XG5cbiAgICAgICAgICBsZXQgZXF1YWwgPSBCYXNlLkZsb2F0LmVxdWFsXG4gICAgICAgICAgbGV0IG9mX2Jvb2wgYiA9IGlmIGIgdGhlbiAxLiBlbHNlIDAuXG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgICBpbmNsdWRlIFNlcXVlbmNlXG5cbiAgICAgICAgICBsZXQgY3JlYXRlIH5sZW4gPSBjcmVhdGUgfmxlbiAwLlxuXG4gICAgICAgICAgaW5jbHVkZSBVbnNhZmVfYmxpdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIFVuc2FmZV9ibGl0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFBlcm1pc3Npb25lZCA9IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtcykgdFxuXG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxX3Blcm1pc3Npb25zIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuICBpbmNsdWRlIEJsaXQuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG4gIGluY2x1ZGUgQmluYXJ5X3NlYXJjaGFibGUuUzFfcGVybWlzc2lvbnMgd2l0aCB0eXBlICgnYSwgJ3Blcm1zKSB0IDo9ICgnYSwgJ3Blcm1zKSB0XG5cbiAgZXh0ZXJuYWwgbGVuZ3RoIDogKCdhLCBfKSB0IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIHZhbCBpc19lbXB0eSA6IChfLCBfKSB0IC0+IGJvb2xcbiAgZXh0ZXJuYWwgZ2V0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV9zYWZlX3NldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6ICgnYSwgWz4gd3JpdGUgXSkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IChmbG9hdCwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjcmVhdGUgOiBsZW46aW50IC0+ICdhIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBpbml0IDogaW50IC0+IGY6KGludCAtPiAnYSkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG1ha2VfbWF0cml4IDogZGlteDppbnQgLT4gZGlteTppbnQgLT4gJ2EgLT4gKCgnYSwgWzwgXyBwZXJtcyBdKSB0LCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY29weV9tYXRyaXhcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGFwcGVuZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjb25jYXQgOiAoJ2EsIFs+IHJlYWQgXSkgdCBsaXN0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBjb3B5IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGZpbGwgOiAoJ2EsIFs+IHdyaXRlIF0pIHQgLT4gcG9zOmludCAtPiBsZW46aW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIG9mX2xpc3QgOiAnYSBsaXN0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBtYXAgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYikgLT4gKCdiLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZGluZ19tYXBcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOignYiAtPiAnYSAtPiAnYiAqICdjKVxuICAgIC0+ICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBpbml0OidiXG4gICAgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAnYiAqICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIG1hcGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBpdGVyaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBmb2xkaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiKSAtPiAnYlxuXG4gIHZhbCBmb2xkaW5nX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAoJ2MsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb2xkX21hcGlcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2JcbiAgICAtPiBmOihpbnQgLT4gJ2IgLT4gJ2EgLT4gJ2IgKiAnYylcbiAgICAtPiAnYiAqICgnYywgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIGZvbGRfcmlnaHQgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiAnYiAtPiAnYikgLT4gaW5pdDonYiAtPiAnYlxuXG4gIHZhbCBzb3J0XG4gICAgOiAgP3BvczppbnRcbiAgICAtPiA/bGVuOmludFxuICAgIC0+ICgnYSwgWz4gcmVhZF93cml0ZSBdKSB0XG4gICAgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KVxuICAgIC0+IHVuaXRcblxuICB2YWwgc3RhYmxlX3NvcnQgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IHVuaXRcbiAgdmFsIGlzX3NvcnRlZCA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gYm9vbFxuICB2YWwgaXNfc29ydGVkX3N0cmljdGx5IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiBib29sXG5cbiAgdmFsIG1lcmdlXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludClcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiBmOignYSAtPiAoJ2IsIFs+IHJlYWQgXSkgdClcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBjb25jYXRfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooaW50IC0+ICdhIC0+ICgnYiwgWz4gcmVhZCBdKSB0KVxuICAgIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbl90ZlxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gYm9vbClcbiAgICAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdCAqICgnYSwgWzwgXyBwZXJtcyBdKSB0XG5cbiAgdmFsIHBhcnRpdGlvbmlfdGZcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGY6KGludCAtPiAnYSAtPiBib29sKVxuICAgIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0ICogKCdhLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgY2FydGVzaWFuX3Byb2R1Y3RcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCB0cmFuc3Bvc2VcbiAgICA6ICAoKCdhLCBbPiByZWFkIF0pIHQsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgoJ2EsIFs8IF8gcGVybXMgXSkgdCwgWzwgXyBwZXJtcyBdKSB0IG9wdGlvblxuXG4gIHZhbCB0cmFuc3Bvc2VfZXhuXG4gICAgOiAgKCgnYSwgWz4gcmVhZCBdKSB0LCBbPiByZWFkIF0pIHRcbiAgICAtPiAoKCdhLCBbPCBfIHBlcm1zIF0pIHQsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBub3JtYWxpemUgOiAoJ2EsIF8pIHQgLT4gaW50IC0+IGludFxuICB2YWwgc2xpY2UgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBuZ2V0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gaW50IC0+ICdhXG4gIHZhbCBuc2V0IDogKCdhLCBbPiB3cml0ZSBdKSB0IC0+IGludCAtPiAnYSAtPiB1bml0XG4gIHZhbCBmaWx0ZXJfb3B0IDogKCdhIG9wdGlvbiwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmaWx0ZXJfbWFwaVxuICAgIDogICgnYSwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbilcbiAgICAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuXG4gIHZhbCBmb3JfYWxsaSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBleGlzdHNpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGNvdW50aSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGl0ZXIyX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYiwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdiIC0+IHVuaXQpIC0+IHVuaXRcblxuICB2YWwgbWFwMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gJ2IgLT4gJ2MpXG4gICAgLT4gKCdjLCBbPCBfIHBlcm1zIF0pIHRcblxuICB2YWwgZm9sZDJfZXhuXG4gICAgOiAgKCdhLCBbPiByZWFkIF0pIHRcbiAgICAtPiAoJ2IsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGluaXQ6J2NcbiAgICAtPiBmOignYyAtPiAnYSAtPiAnYiAtPiAnYylcbiAgICAtPiAnY1xuXG4gIHZhbCBmb3JfYWxsMl9leG5cbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+ICgnYiwgWz4gcmVhZCBdKSB0XG4gICAgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbClcbiAgICAtPiBib29sXG5cbiAgdmFsIGV4aXN0czJfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIGZpbHRlcmkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIHN3YXAgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgdmFsIHJldl9pbnBsYWNlIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHRcbiAgdmFsIG9mX2xpc3RfcmV2IDogJ2EgbGlzdCAtPiAoJ2EsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9tYXBpIDogJ2EgbGlzdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICgnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBvZl9saXN0X3Jldl9tYXAgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgbWFwX2lucGxhY2UgOiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdCAtPiBmOignYSAtPiAnYSkgLT4gdW5pdFxuICB2YWwgZmluZF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYlxuICB2YWwgZmluZGkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRpX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2Igb3B0aW9uXG4gIHZhbCBmaW5kX21hcGlfZXhuIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2JcblxuICB2YWwgZmluZF9jb25zZWN1dGl2ZV9kdXBsaWNhdGVcbiAgICA6ICAoJ2EsIFs+IHJlYWQgXSkgdFxuICAgIC0+IGVxdWFsOignYSAtPiAnYSAtPiBib29sKVxuICAgIC0+ICgnYSAqICdhKSBvcHRpb25cblxuICB2YWwgcmVkdWNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvblxuICB2YWwgcmVkdWNlX2V4biA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGY6KCdhIC0+ICdhIC0+ICdhKSAtPiAnYVxuXG4gIHZhbCBwZXJtdXRlXG4gICAgOiAgP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudFxuICAgIC0+ID9wb3M6aW50XG4gICAgLT4gP2xlbjppbnRcbiAgICAtPiAoJ2EsIFs+IHJlYWRfd3JpdGUgXSkgdFxuICAgIC0+IHVuaXRcblxuICB2YWwgcmFuZG9tX2VsZW1lbnQgOiA/cmFuZG9tX3N0YXRlOlJhbmRvbS5TdGF0ZS50IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAnYVxuICB2YWwgemlwIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gKCdiLCBbPiByZWFkIF0pIHQgLT4gKCdhICogJ2IsIFs8IF8gcGVybXMgXSkgdCBvcHRpb25cbiAgdmFsIHppcF9leG4gOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiAoJ2IsIFs+IHJlYWQgXSkgdCAtPiAoJ2EgKiAnYiwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiLCBbPiByZWFkIF0pIHQgLT4gKCdhLCBbPCBfIHBlcm1zIF0pIHQgKiAoJ2IsIFs8IF8gcGVybXMgXSkgdFxuICB2YWwgc29ydGVkX2NvcHkgOiAoJ2EsIFs+IHJlYWQgXSkgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICgnYSwgWzwgXyBwZXJtcyBdKSB0XG4gIHZhbCBsYXN0IDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2FcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICgnYSwgWz4gcmVhZCBdKSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogKCdhLCBbPiByZWFkIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuICB2YWwgdG9fc2VxdWVuY2VfbXV0YWJsZSA6ICgnYSwgWz4gcmVhZCBdKSB0IC0+ICdhIFNlcXVlbmNlLnRcbmVuZFxuXG5tb2R1bGUgUGVybWlzc2lvbmVkIDogc2lnXG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBtb2R1bGUgSW50IDogc2lnXG4gICAgdHlwZSBub25yZWMgLSdwZXJtcyB0ID0gKGludCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgIDogIHNyYzpbPiByZWFkIF0gdFxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDpbPiB3cml0ZSBdIHRcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfaW50X2JsaXRcIlxuICAgIFtAQG5vYWxsb2NdXG4gIGVuZFxuXG4gIG1vZHVsZSBGbG9hdCA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIC0ncGVybXMgdCA9IChmbG9hdCwgJ3Blcm1zKSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQmxpdC5TX3Blcm1pc3Npb25zIHdpdGggdHlwZSAncGVybXMgdCA6PSAncGVybXMgdFxuXG4gICAgZXh0ZXJuYWwgdW5zYWZlX2JsaXRcbiAgICAgIDogIHNyYzpbPiByZWFkIF0gdFxuICAgICAgLT4gc3JjX3BvczppbnRcbiAgICAgIC0+IGRzdDpbPiB3cml0ZSBdIHRcbiAgICAgIC0+IGRzdF9wb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0XG4gICAgICA9IFwiY29yZV9hcnJheV91bnNhZmVfZmxvYXRfYmxpdFwiXG4gICAgW0BAbm9hbGxvY11cbiAgZW5kXG5cbiAgdmFsIG9mX2FycmF5X2lkIDogJ2EgYXJyYXkgLT4gKCdhLCBbPCByZWFkX3dyaXRlIF0pIHRcbiAgdmFsIHRvX2FycmF5X2lkIDogKCdhLCBbPiByZWFkX3dyaXRlIF0pIHQgLT4gJ2EgYXJyYXlcbiAgdmFsIHRvX3NlcXVlbmNlX2ltbXV0YWJsZSA6ICgnYSwgWz4gaW1tdXRhYmxlIF0pIHQgLT4gJ2EgU2VxdWVuY2UudFxuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtcykgdCA6PSAoJ2EsICdwZXJtcykgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAtJ3Blcm1zKSB0ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwLCB0eXBlcmVwXVxuXG4gIG1vZHVsZSBJbnQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFQuSW50XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbW9kdWxlIEZsb2F0ID0gc3RydWN0XG4gICAgaW5jbHVkZSBULkZsb2F0XG5cbiAgICB0eXBlIC0ncGVybXMgdCA9IHRfIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cbiAgZW5kXG5cbiAgbGV0IHRvX2FycmF5X2lkID0gRm4uaWRcbiAgbGV0IG9mX2FycmF5X2lkID0gRm4uaWRcblxuICBpbmNsdWRlIChUIDogUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpIFtAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgbGV0IHRvX2FycmF5ID0gY29weVxuICBsZXQgdG9fc2VxdWVuY2VfaW1tdXRhYmxlID0gdG9fc2VxdWVuY2VfbXV0YWJsZVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgaW5jbHVkZSBCaW5hcnlfc2VhcmNoYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gIGluY2x1ZGUgQ29udGFpbmVyLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBleHRlcm5hbCBsZW5ndGggOiAnYSB0IC0+IGludCA9IFwiJWFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfc2FmZV9nZXRcIlxuICBleHRlcm5hbCBzZXQgOiAnYSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0IDogJ2EgdCAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXQgPSBcIiVhcnJheV91bnNhZmVfc2V0XCJcbiAgdmFsIGNyZWF0ZSA6IGxlbjppbnQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgY3JlYXRlX2Zsb2F0X3VuaW5pdGlhbGl6ZWQgOiBsZW46aW50IC0+IGZsb2F0IHRcbiAgdmFsIGluaXQgOiBpbnQgLT4gZjooaW50IC0+ICdhKSAtPiAnYSB0XG4gIHZhbCBtYWtlX21hdHJpeCA6IGRpbXg6aW50IC0+IGRpbXk6aW50IC0+ICdhIC0+ICdhIHQgdFxuICB2YWwgY29weV9tYXRyaXggOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBhcHBlbmQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgY29uY2F0IDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIGZpbGwgOiAnYSB0IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSAtPiB1bml0XG5cbiAgaW5jbHVkZSBCbGl0LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICB2YWwgb2ZfbGlzdCA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgZm9sZGluZ19tYXAgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYykgLT4gJ2MgdFxuICB2YWwgZm9sZF9tYXAgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooJ2IgLT4gJ2EgLT4gJ2IgKiAnYykgLT4gJ2IgKiAnYyB0XG4gIHZhbCBtYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgdmFsIGl0ZXJpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiKSAtPiAnYlxuICB2YWwgZm9sZGluZ19tYXBpIDogJ2EgdCAtPiBpbml0OidiIC0+IGY6KGludCAtPiAnYiAtPiAnYSAtPiAnYiAqICdjKSAtPiAnYyB0XG4gIHZhbCBmb2xkX21hcGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiICogJ2MpIC0+ICdiICogJ2MgdFxuICB2YWwgZm9sZF9yaWdodCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IgLT4gJ2IpIC0+IGluaXQ6J2IgLT4gJ2JcbiAgdmFsIHNvcnQgOiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gdW5pdFxuICB2YWwgc3RhYmxlX3NvcnQgOiAnYSB0IC0+IGNvbXBhcmU6KCdhIC0+ICdhIC0+IGludCkgLT4gdW5pdFxuICB2YWwgaXNfc29ydGVkIDogJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+IGJvb2xcbiAgdmFsIGlzX3NvcnRlZF9zdHJpY3RseSA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiBib29sXG4gIHZhbCBtZXJnZSA6ICdhIHQgLT4gJ2EgdCAtPiBjb21wYXJlOignYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHRcbiAgdmFsIGNvbmNhdF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQpIC0+ICdiIHRcbiAgdmFsIGNvbmNhdF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgcGFydGl0aW9uX3RmIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0ICogJ2EgdFxuICB2YWwgcGFydGl0aW9uaV90ZiA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgKiAnYSB0XG4gIHZhbCBjYXJ0ZXNpYW5fcHJvZHVjdCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgdHJhbnNwb3NlIDogJ2EgdCB0IC0+ICdhIHQgdCBvcHRpb25cbiAgdmFsIHRyYW5zcG9zZV9leG4gOiAnYSB0IHQgLT4gJ2EgdCB0XG4gIHZhbCBub3JtYWxpemUgOiAnYSB0IC0+IGludCAtPiBpbnRcbiAgdmFsIHNsaWNlIDogJ2EgdCAtPiBpbnQgLT4gaW50IC0+ICdhIHRcbiAgdmFsIG5nZXQgOiAnYSB0IC0+IGludCAtPiAnYVxuICB2YWwgbnNldCA6ICdhIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgdmFsIGZpbHRlcl9vcHQgOiAnYSBvcHRpb24gdCAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJfbWFwIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiIHRcbiAgdmFsIGZpbHRlcl9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiB0XG4gIHZhbCBmb3JfYWxsaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IGJvb2xcbiAgdmFsIGV4aXN0c2kgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBib29sXG4gIHZhbCBjb3VudGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnRcbiAgdmFsIGl0ZXIyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOignYSAtPiAnYiAtPiB1bml0KSAtPiB1bml0XG4gIHZhbCBtYXAyX2V4biA6ICdhIHQgLT4gJ2IgdCAtPiBmOignYSAtPiAnYiAtPiAnYykgLT4gJ2MgdFxuICB2YWwgZm9sZDJfZXhuIDogJ2EgdCAtPiAnYiB0IC0+IGluaXQ6J2MgLT4gZjooJ2MgLT4gJ2EgLT4gJ2IgLT4gJ2MpIC0+ICdjXG4gIHZhbCBmb3JfYWxsMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZXhpc3RzMl9leG4gOiAnYSB0IC0+ICdiIHQgLT4gZjooJ2EgLT4gJ2IgLT4gYm9vbCkgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYSB0XG4gIHZhbCBmaWx0ZXJpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdFxuICB2YWwgc3dhcCA6ICdhIHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gIHZhbCByZXZfaW5wbGFjZSA6ICdhIHQgLT4gdW5pdFxuICB2YWwgcmV2IDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBvZl9saXN0X3JldiA6ICdhIGxpc3QgLT4gJ2EgdFxuICB2YWwgb2ZfbGlzdF9tYXAgOiAnYSBsaXN0IC0+IGY6KCdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBvZl9saXN0X21hcGkgOiAnYSBsaXN0IC0+IGY6KGludCAtPiAnYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwIDogJ2EgbGlzdCAtPiBmOignYSAtPiAnYikgLT4gJ2IgdFxuICB2YWwgb2ZfbGlzdF9yZXZfbWFwaSA6ICdhIGxpc3QgLT4gZjooaW50IC0+ICdhIC0+ICdiKSAtPiAnYiB0XG4gIHZhbCBtYXBfaW5wbGFjZSA6ICdhIHQgLT4gZjooJ2EgLT4gJ2EpIC0+IHVuaXRcbiAgdmFsIGZpbmRfZXhuIDogJ2EgdCAtPiBmOignYSAtPiBib29sKSAtPiAnYVxuICB2YWwgZmluZF9tYXBfZXhuIDogJ2EgdCAtPiBmOignYSAtPiAnYiBvcHRpb24pIC0+ICdiXG4gIHZhbCBmaW5kaSA6ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IGJvb2wpIC0+IChpbnQgKiAnYSkgb3B0aW9uXG4gIHZhbCBmaW5kaV9leG4gOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sKSAtPiBpbnQgKiAnYVxuICB2YWwgZmluZF9tYXBpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gJ2Igb3B0aW9uKSAtPiAnYiBvcHRpb25cbiAgdmFsIGZpbmRfbWFwaV9leG4gOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24pIC0+ICdiXG4gIHZhbCBmaW5kX2NvbnNlY3V0aXZlX2R1cGxpY2F0ZSA6ICdhIHQgLT4gZXF1YWw6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICgnYSAqICdhKSBvcHRpb25cbiAgdmFsIHJlZHVjZSA6ICdhIHQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhIG9wdGlvblxuICB2YWwgcmVkdWNlX2V4biA6ICdhIHQgLT4gZjooJ2EgLT4gJ2EgLT4gJ2EpIC0+ICdhXG4gIHZhbCBwZXJtdXRlIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiA/cG9zOmludCAtPiA/bGVuOmludCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIHJhbmRvbV9lbGVtZW50IDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICB2YWwgcmFuZG9tX2VsZW1lbnRfZXhuIDogP3JhbmRvbV9zdGF0ZTpSYW5kb20uU3RhdGUudCAtPiAnYSB0IC0+ICdhXG4gIHZhbCB6aXAgOiAnYSB0IC0+ICdiIHQgLT4gKCdhICogJ2IpIHQgb3B0aW9uXG4gIHZhbCB6aXBfZXhuIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSAqICdiKSB0XG4gIHZhbCB1bnppcCA6ICgnYSAqICdiKSB0IC0+ICdhIHQgKiAnYiB0XG4gIHZhbCBzb3J0ZWRfY29weSA6ICdhIHQgLT4gY29tcGFyZTooJ2EgLT4gJ2EgLT4gaW50KSAtPiAnYSB0XG4gIHZhbCBsYXN0IDogJ2EgdCAtPiAnYVxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIHRvX3NlcXVlbmNlIDogJ2EgdCAtPiAnYSBDb3JlX3NlcXVlbmNlLnRcbiAgdmFsIHRvX3NlcXVlbmNlX211dGFibGUgOiAnYSB0IC0+ICdhIENvcmVfc2VxdWVuY2UudFxuZW5kXG5cbmluY2x1ZGUgKFQgOiBTIHdpdGggdHlwZSAnYSB0IDo9ICdhIGFycmF5KSBbQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBpdGVyIHQgfmY6aW52YXJpYW50X2FcbmxldCBtYXhfbGVuZ3RoID0gU3lzLm1heF9hcnJheV9sZW5ndGhcblxubW9kdWxlIEludCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuSW50XG5cbiAgdHlwZSB0ID0gdF8gW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFQuRmxvYXRcblxuICB0eXBlIHQgPSB0XyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIF8gKE0gOiBTKSA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtKSB0X1xuXG4gIGluY2x1ZGUgUGVybWlzc2lvbmVkIHdpdGggdHlwZSAoJ2EsICdwZXJtKSB0IDo9ICgnYSwgJ3Blcm0pIHRfXG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNXG5cbiAgdHlwZSAoJ2EsIC0ncGVybSkgdF8gPSAnYSB0XG5lbmRcblxubW9kdWxlIF8gKE0gOiBQZXJtaXNzaW9uZWQpIDogc2lnXG4gIHR5cGUgJ2EgdF9cblxuICBpbmNsdWRlIFMgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdF9cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIE1cblxuICB0eXBlICdhIHRfID0gKCdhLCByZWFkX3dyaXRlKSB0XG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAoJ2YsICdzKSB0ID0gKCdmLCAncykgQmFzZS5FaXRoZXIudCA9XG4gICAgICB8IEZpcnN0IG9mICdmXG4gICAgICB8IFNlY29uZCBvZiAnc1xuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cCwgdHlwZXJlcF1cblxuICAgIGxldCBtYXAgeCB+ZjEgfmYyID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBGaXJzdCB4MSAtPiBGaXJzdCAoZjEgeDEpXG4gICAgICB8IFNlY29uZCB4MiAtPiBTZWNvbmQgKGYyIHgyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuRWl0aGVyXG5cbmluY2x1ZGUgQ29tcGFyYXRvci5EZXJpdmVkMiAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmVpdGhlclxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuZWl0aGVyXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5laXRoZXJcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvblxuXG4gICAgdHlwZSB0ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi50ID1cbiAgICAgIHsgcG9zX2ZuYW1lIDogc3RyaW5nXG4gICAgICA7IHBvc19sbnVtIDogaW50XG4gICAgICA7IHBvc19ib2wgOiBpbnRcbiAgICAgIDsgcG9zX2NudW0gOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgaGFzaCwgc2V4cF1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubGV0IHRvX3N0cmluZyA9IEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nXG5sZXQgc2V4cF9vZl90ID0gQmFzZS5Tb3VyY2VfY29kZV9wb3NpdGlvbi5zZXhwX29mX3RcbiIsIigqIFRoaXMgbW9kdWxlIGlzIHRyeWluZyB0byBtaW5pbWl6ZSBkZXBlbmRlbmNpZXMgb24gbW9kdWxlcyBpbiBDb3JlLCBzbyBhcyB0byBhbGxvd1xuICAgW0luZm9dLCBbRXJyb3JdLCBhbmQgW09yX2Vycm9yXSB0byBiZSB1c2VkIGluIGlzIG1hbnkgcGxhY2VzIHBsYWNlcyBhcyBwb3NzaWJsZS5cbiAgIFBsZWFzZSBhdm9pZCBhZGRpbmcgbmV3IGRlcGVuZGVuY2llcy4gKilcblxub3BlbiEgSW1wb3J0XG5vcGVuISBJbmZvX2ludGZcblxubW9kdWxlIHR5cGUgUyA9IEJhc2UuSW5mby5TXG5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uMFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxuXG5tb2R1bGUgU2V4cCA9IHN0cnVjdFxuICBpbmNsdWRlIFNleHBsaWIuU2V4cFxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcbmVuZFxuXG5tb2R1bGUgQmluYWJsZV9leG4gPSBzdHJ1Y3RcbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChTZXhwKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID0gdCB8PiBbJXNleHBfb2Y6IHRdXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEV4bi5jcmVhdGVfc1xuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIEV4dGVuZCAoSW5mbyA6IEJhc2UuSW5mby5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIEluZm9cblxuICBtb2R1bGUgSW50ZXJuYWxfcmVwciA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBCaW5hYmxlX2V4biA9IEJpbmFibGVfZXhuLlN0YWJsZVxuXG4gICAgICBtb2R1bGUgU291cmNlX2NvZGVfcG9zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgKCogW3NleHBfb2ZfdF0gYXMgZGVmaW5lZCBoZXJlIGlzIHVuc3RhYmxlOyB0aGlzIGlzIE9LIGJlY2F1c2UgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgICBbdF9vZl9zZXhwXS4gIFtzZXhwX29mX3RdIGlzIG9ubHkgdXNlZCB0byBwcm9kdWNlIGEgc2V4cCB0aGF0IGlzIG5ldmVyXG4gICAgICAgICAgICAgZGVzZXJpYWxpemVkIGFzIGEgW1NvdXJjZV9jb2RlX3Bvc2l0aW9uXS4gKilcbiAgICAgICAgICBsZXQgc2V4cF9vZl90ID0gU291cmNlX2NvZGVfcG9zaXRpb24uc2V4cF9vZl90XG4gICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBJbmZvLkludGVybmFsX3JlcHIudCA9XG4gICAgICAgICAgfCBDb3VsZF9ub3RfY29uc3RydWN0IG9mIFNleHAudFxuICAgICAgICAgIHwgU3RyaW5nIG9mIHN0cmluZ1xuICAgICAgICAgIHwgRXhuIG9mIEJpbmFibGVfZXhuLlYxLnRcbiAgICAgICAgICB8IFNleHAgb2YgU2V4cC50XG4gICAgICAgICAgfCBUYWdfc2V4cCBvZiBzdHJpbmcgKiBTZXhwLnQgKiBTb3VyY2VfY29kZV9wb3NpdGlvbi5WMS50IG9wdGlvblxuICAgICAgICAgIHwgVGFnX3Qgb2Ygc3RyaW5nICogdFxuICAgICAgICAgIHwgVGFnX2FyZyBvZiBzdHJpbmcgKiBTZXhwLnQgKiB0XG4gICAgICAgICAgfCBPZl9saXN0IG9mIGludCBvcHRpb24gKiB0IGxpc3RcbiAgICAgICAgICB8IFdpdGhfYmFja3RyYWNlIG9mIHQgKiBzdHJpbmcgKCogYmFja3RyYWNlICopXG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF9vZl1cbiAgICAgIGVuZFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBTdGFibGUuVjJcblxuICAgIGxldCB0b19pbmZvID0gSW5mby5JbnRlcm5hbF9yZXByLnRvX2luZm9cbiAgICBsZXQgb2ZfaW5mbyA9IEluZm8uSW50ZXJuYWxfcmVwci5vZl9pbmZvXG4gIGVuZFxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IEluZm8udCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBoYXNoXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlN0YWJsZS5WMS5NYWtlIChUKVxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoSW50ZXJuYWxfcmVwci5TdGFibGUuVjIpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIub2ZfaW5mb1xuICAgICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBJbmZvLkludGVybmFsX3JlcHIudG9faW5mb1xuICAgICAgICAgIGVuZClcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSW5mby50IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgaW5jbHVkZVxuICAgICAgICAgIFNleHBhYmxlLlN0YWJsZS5PZl9zZXhwYWJsZS5WMVxuICAgICAgICAgICAgKFNleHApXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gSW5mby5zZXhwX29mX3RcbiAgICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gSW5mby50X29mX3NleHBcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TdGFibGUuVjEuTWFrZSAoVClcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBCaW5hYmxlLlN0YWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgKFNleHApXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBzZXhwX29mX3RcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gdF9vZl9zZXhwXG4gICAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICB0eXBlIHQgPSBTdGFibGUuVjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxuaW5jbHVkZSBFeHRlbmQgKEJhc2UuSW5mbylcblxuIiwiaW5jbHVkZSBCYXNlLkVycm9yXG5pbmNsdWRlIEluZm8uRXh0ZW5kIChCYXNlLkVycm9yKVxuXG5sZXQgZmFpbHdpdGhzID9zdHJpY3QgfmhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcblxubGV0IGZhaWx3aXRocCA/c3RyaWN0IGhlcmUgbWVzc2FnZSBhIHNleHBfb2ZfYSA9XG4gIHJhaXNlIChjcmVhdGUgP3N0cmljdCB+aGVyZSBtZXNzYWdlIGEgc2V4cF9vZl9hKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9yX2Vycm9yXG5cbnR5cGUgJ2EgdCA9ICgnYSwgRXJyb3IudCkgUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG5tb2R1bGUgRXhwZWN0X3Rlc3RfY29uZmlnX3dpdGhfdW5pdF9leHBlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIElPX3J1biA9IEJhc2UuT3JfZXJyb3JcblxuICBtb2R1bGUgSU9fZmx1c2ggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEV4cGVjdF90ZXN0X2NvbmZpZy5JT19mbHVzaFxuXG4gICAgbGV0IHRvX3J1biB0ID0gQmFzZS5Pcl9lcnJvci5yZXR1cm4gdFxuICBlbmRcblxuICBsZXQgcnVuIGYgPSBva19leG4gKGYgKCkpXG4gIGxldCBzYW5pdGl6ZSBzID0gc1xuICBsZXQgZmx1c2hlZCAoKSA9IHRydWVcbiAgbGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gRXhwZWN0X3Rlc3RfY29uZmlnLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG5lbmRcblxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IHN0cnVjdFxuICBtb2R1bGUgSU8gPSBCYXNlLk9yX2Vycm9yXG4gIG1vZHVsZSBJT19ydW4gPSBJT1xuXG4gIG1vZHVsZSBJT19mbHVzaCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSU9cblxuICAgIGxldCB0b19ydW4gdCA9IHRcbiAgZW5kXG5cbiAgbGV0IHJ1biBmID0gb2tfZXhuIChmICgpKVxuICBsZXQgZmx1c2hlZCAoKSA9IHRydWVcbiAgbGV0IHVwb25fdW5yZWxlYXNhYmxlX2lzc3VlID0gRXhwZWN0X3Rlc3RfY29uZmlnLnVwb25fdW5yZWxlYXNhYmxlX2lzc3VlXG4gIGxldCBzYW5pdGl6ZSBzID0gc1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCBFcnJvci5TdGFibGUuVjEudCkgUmVzdWx0LlN0YWJsZS5WMS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gKCdhLCBFcnJvci5TdGFibGUuVjIudCkgUmVzdWx0LlN0YWJsZS5WMS50XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IG1hcCB4IH5mID0gUmVzdWx0LlN0YWJsZS5WMS5tYXAgeCB+ZjE6ZiB+ZjI6Rm4uaWRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBRdWlja2NoZWNrX2ludGZcbm9wZW4gQmFzZV9xdWlja2NoZWNrXG5tb2R1bGUgRmxvYXQgPSBCYXNlLkZsb2F0XG5tb2R1bGUgSW50ID0gQmFzZS5JbnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgT3B0aW9uID0gQmFzZS5PcHRpb25cblxubW9kdWxlIFBvbHltb3JwaGljX3R5cGVzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdmFyaWFudDIgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHZhcmlhbnQzID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHZhcmlhbnQ0ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgdmFyaWFudDUgPVxuICAgIFsgYEEgb2YgJ2FcbiAgICB8IGBCIG9mICdiXG4gICAgfCBgQyBvZiAnY1xuICAgIHwgYEQgb2YgJ2RcbiAgICB8IGBFIG9mICdlXG4gICAgXVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHZhcmlhbnQ2ID1cbiAgICBbIGBBIG9mICdhXG4gICAgfCBgQiBvZiAnYlxuICAgIHwgYEMgb2YgJ2NcbiAgICB8IGBEIG9mICdkXG4gICAgfCBgRSBvZiAnZVxuICAgIHwgYEYgb2YgJ2ZcbiAgICBdXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiKSB0dXBsZTIgPSAnYSAqICdiIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHR1cGxlMyA9ICdhICogJ2IgKiAnYyBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdHVwbGU0ID0gJ2EgKiAnYiAqICdjICogJ2QgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSB0dXBsZTUgPSAnYSAqICdiICogJ2MgKiAnZCAqICdlIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgdHVwbGU2ID0gJ2EgKiAnYiAqICdjICogJ2QgKiAnZSAqICdmXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsICdyKSBmbjIgPSAnYSAtPiAnYiAtPiAnciBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAncikgZm4zID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAncikgZm40ID0gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ3IgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICB0eXBlICgtJ2EsIC0nYiwgLSdjLCAtJ2QsIC0nZSwgJ3IpIGZuNSA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgdHlwZSAoLSdhLCAtJ2IsIC0nYywgLSdkLCAtJ2UsIC0nZiwgJ3IpIGZuNiA9ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+ICdmIC0+ICdyXG4gIFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5lbmRcblxubW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gIGluY2x1ZGUgT2JzZXJ2ZXJcblxuICBsZXQgb2ZfaGFzaCAodHlwZSBhKSAobW9kdWxlIE0gOiBEZXJpdmluZ19oYXNoIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIG9mX2hhc2hfZm9sZCBNLmhhc2hfZm9sZF90XG4gIDs7XG5cbiAgbGV0IHZhcmlhbnQyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50MlxuICBsZXQgdmFyaWFudDMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdmFyaWFudDRcbiAgbGV0IHZhcmlhbnQ1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl92YXJpYW50NVxuICBsZXQgdmFyaWFudDYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlMlxuICBsZXQgdHVwbGUzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTNcbiAgbGV0IHR1cGxlNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfb2JzZXJ2ZXJfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX29ic2VydmVyX3R1cGxlNVxuICBsZXQgdHVwbGU2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19vYnNlcnZlcl90dXBsZTZcbiAgbGV0IG9mX3ByZWRpY2F0ZSBhIGIgfmYgPSB1bm1hcCAodmFyaWFudDIgYSBiKSB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gYEEgeCBlbHNlIGBCIHgpXG4gIGxldCBzaW5nbGV0b24gKCkgPSBvcGFxdWVcbiAgbGV0IGRvdWJsZXRvbiBmID0gb2ZfcHJlZGljYXRlIChzaW5nbGV0b24gKCkpIChzaW5nbGV0b24gKCkpIH5mXG4gIGxldCBlbnVtIF8gfmYgPSB1bm1hcCBpbnQgfmZcblxuICBsZXQgb2ZfbGlzdCBsaXN0IH5lcXVhbCA9XG4gICAgbGV0IGYgeCA9XG4gICAgICBtYXRjaCBMaXN0LmZpbmRpIGxpc3QgfmY6KGZ1biBfIHkgLT4gZXF1YWwgeCB5KSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJRdWlja2NoZWNrLk9ic2VydmVyLm9mX2xpc3Q6IHZhbHVlIG5vdCBmb3VuZFwiXG4gICAgICB8IFNvbWUgKGksIF8pIC0+IGlcbiAgICBpblxuICAgIGVudW0gKExpc3QubGVuZ3RoIGxpc3QpIH5mXG4gIDs7XG5cbiAgbGV0IG9mX2Z1biBmID0gY3JlYXRlIChmdW4geCB+c2l6ZSB+aGFzaCAtPiBvYnNlcnZlIChmICgpKSB4IH5zaXplIH5oYXNoKVxuXG4gIGxldCBjb21wYXJpc29uIH5jb21wYXJlIH5lcSB+bHQgfmd0ID1cbiAgICB1bm1hcFxuICAgICAgKHZhcmlhbnQzIGx0IChzaW5nbGV0b24gKCkpIGd0KVxuICAgICAgfmY6KGZ1biB4IC0+XG4gICAgICAgIGxldCBjID0gY29tcGFyZSB4IGVxIGluXG4gICAgICAgIGlmIGMgPCAwIHRoZW4gYEEgeCBlbHNlIGlmIGMgPiAwIHRoZW4gYEMgeCBlbHNlIGBCIHgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEdlbmVyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyYXRvclxuICBvcGVuIExldF9zeW50YXhcblxuICBsZXQgc2luZ2xldG9uID0gcmV0dXJuXG5cbiAgbGV0IGRvdWJsZXRvbiB4IHkgPVxuICAgIGNyZWF0ZSAoZnVuIH5zaXplOl8gfnJhbmRvbSAtPiBpZiBTcGxpdHRhYmxlX3JhbmRvbS5ib29sIHJhbmRvbSB0aGVuIHggZWxzZSB5KVxuICA7O1xuXG4gIGxldCBvZl9mdW4gZiA9IGNyZWF0ZSAoZnVuIH5zaXplIH5yYW5kb20gLT4gZ2VuZXJhdGUgKGYgKCkpIH5zaXplIH5yYW5kb20pXG5cbiAgbGV0IG9mX3NlcXVlbmNlIH5wIHNlcSA9XG4gICAgaWYgRmxvYXQuKCA8PSApIHAgMC4gfHwgRmxvYXQuKCA+ICkgcCAxLlxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoIChQcmludGYuc3ByaW50ZiBcIkdlbmVyYXRvci5vZl9zZXF1ZW5jZTogcHJvYmFiaWxpdHkgWyVmXSBvdXQgb2YgYm91bmRzXCIgcCk7XG4gICAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgICBzZXFcbiAgICAgIH5pbml0OigpXG4gICAgICB+ZmluaXNoOihmdW4gKCkgLT4gZmFpbHdpdGggXCJHZW5lcmF0b3Iub2Zfc2VxdWVuY2U6IHJhbiBvdXQgb2YgdmFsdWVzXCIpXG4gICAgICB+ZjooZnVuICgpIHggfmsgLT4gd2VpZ2h0ZWRfdW5pb24gWyBwLCBzaW5nbGV0b24geDsgMS4gLS4gcCwgb2ZfZnVuIGsgXSlcbiAgOztcblxuICBsZXQgcmVjIGJvdW5kZWRfZ2VvbWV0cmljIH5wIH5tYXhpbXVtIGluaXQgPVxuICAgIGlmIGluaXQgPSBtYXhpbXVtXG4gICAgdGhlbiBzaW5nbGV0b24gbWF4aW11bVxuICAgIGVsc2VcbiAgICAgIHdlaWdodGVkX3VuaW9uXG4gICAgICAgIFsgcCwgc2luZ2xldG9uIGluaXRcbiAgICAgICAgOyAxLiAtLiBwLCBvZl9mdW4gKGZ1biAoKSAtPiBib3VuZGVkX2dlb21ldHJpYyB+cCB+bWF4aW11bSAoaW5pdCArIDEpKVxuICAgICAgICBdXG4gIDs7XG5cbiAgbGV0IGdlb21ldHJpYyB+cCBpbml0ID0gYm91bmRlZF9nZW9tZXRyaWMgfnAgfm1heGltdW06SW50Lm1heF92YWx1ZSBpbml0XG4gIGxldCBzbWFsbF9ub25fbmVnYXRpdmVfaW50ID0gc21hbGxfcG9zaXRpdmVfb3JfemVyb19pbnRcbiAgbGV0IHNtYWxsX3Bvc2l0aXZlX2ludCA9IHNtYWxsX3N0cmljdGx5X3Bvc2l0aXZlX2ludFxuICBsZXQgbGlzdF93aXRoX2xlbmd0aCBsZW5ndGggdCA9IGxpc3Rfd2l0aF9sZW5ndGggdCB+bGVuZ3RoXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQyXG4gIGxldCB2YXJpYW50MyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQzXG4gIGxldCB2YXJpYW50NCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ1XG4gIGxldCB2YXJpYW50NiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3ZhcmlhbnQ2XG4gIGxldCB0dXBsZTIgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlM1xuICBsZXQgdHVwbGU0ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfdHVwbGU0XG4gIGxldCB0dXBsZTUgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX3R1cGxlNlxuICBsZXQgZm4yID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm4yXG4gIGxldCBmbjMgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjNcbiAgbGV0IGZuNCA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfZ2VuZXJhdG9yX2ZuNFxuICBsZXQgZm41ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19nZW5lcmF0b3JfZm41XG4gIGxldCBmbjYgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX2dlbmVyYXRvcl9mbjZcblxuICBsZXQgY29tcGFyZV9mbiBkb20gPVxuICAgIGZuIGRvbSBpbnQgPj58IGZ1biBnZXRfaW5kZXggeCB5IC0+IFslY29tcGFyZTogaW50XSAoZ2V0X2luZGV4IHgpIChnZXRfaW5kZXggeSlcbiAgOztcblxuICBsZXQgZXF1YWxfZm4gZG9tID0gY29tcGFyZV9mbiBkb20gPj58IGZ1biBjbXAgeCB5IC0+IEludC4oID0gKSAoY21wIHggeSkgMFxuZW5kXG5cbm1vZHVsZSBTaHJpbmtlciA9IHN0cnVjdFxuICBpbmNsdWRlIFNocmlua2VyXG5cbiAgbGV0IGVtcHR5ICgpID0gYXRvbWljXG4gIGxldCB2YXJpYW50MiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDJcbiAgbGV0IHZhcmlhbnQzID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50M1xuICBsZXQgdmFyaWFudDQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3ZhcmlhbnQ0XG4gIGxldCB2YXJpYW50NSA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdmFyaWFudDVcbiAgbGV0IHZhcmlhbnQ2ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl92YXJpYW50NlxuICBsZXQgdHVwbGUyID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTJcbiAgbGV0IHR1cGxlMyA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGUzXG4gIGxldCB0dXBsZTQgPSBQb2x5bW9ycGhpY190eXBlcy5xdWlja2NoZWNrX3Nocmlua2VyX3R1cGxlNFxuICBsZXQgdHVwbGU1ID0gUG9seW1vcnBoaWNfdHlwZXMucXVpY2tjaGVja19zaHJpbmtlcl90dXBsZTVcbiAgbGV0IHR1cGxlNiA9IFBvbHltb3JwaGljX3R5cGVzLnF1aWNrY2hlY2tfc2hyaW5rZXJfdHVwbGU2XG5lbmRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIEdlbmVyYXRvclxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IEdlbmVyYXRvclxuICBlbmRcblxuICBpbmNsdWRlIEdlbmVyYXRvci5Nb25hZF9pbmZpeFxuXG4gIGxldCByZXR1cm4gPSBHZW5lcmF0b3IucmV0dXJuXG5lbmRcblxubW9kdWxlIENvbmZpZ3VyZSAoQ29uZmlnIDogUXVpY2tjaGVja19jb25maWcpID0gc3RydWN0XG4gIGluY2x1ZGUgQ29uZmlnXG5cbiAgbGV0IG5vbmRldGVybWluaXN0aWNfc3RhdGUgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQgKCkpXG5cbiAgbGV0IHJhbmRvbV9zdGF0ZV9vZl9zZWVkIHNlZWQgPVxuICAgIG1hdGNoIHNlZWQgd2l0aFxuICAgIHwgYE5vbmRldGVybWluaXN0aWMgLT4gU3BsaXR0YWJsZV9yYW5kb20uU3RhdGUuY3JlYXRlIChmb3JjZSBub25kZXRlcm1pbmlzdGljX3N0YXRlKVxuICAgIHwgYERldGVybWluaXN0aWMgc3RyIC0+IFNwbGl0dGFibGVfcmFuZG9tLlN0YXRlLm9mX2ludCAoWyVoYXNoOiBzdHJpbmddIHN0cilcbiAgOztcblxuICBsZXQgbWFrZV9zZWVkIHNlZWQgOiBUZXN0LkNvbmZpZy5TZWVkLnQgPVxuICAgIG1hdGNoIHNlZWQgd2l0aFxuICAgIHwgYE5vbmRldGVybWluaXN0aWMgLT4gTm9uZGV0ZXJtaW5pc3RpY1xuICAgIHwgYERldGVybWluaXN0aWMgc3RyaW5nIC0+IERldGVybWluaXN0aWMgc3RyaW5nXG4gIDs7XG5cbiAgbGV0IG1ha2Vfc2hyaW5rX2NvdW50ID0gZnVuY3Rpb25cbiAgICB8IGBFeGhhdXN0aXZlIC0+IEludC5tYXhfdmFsdWVcbiAgICB8IGBMaW1pdCBuIC0+IG5cbiAgOztcblxuICBsZXQgbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyA6IFRlc3QuQ29uZmlnLnQgPVxuICAgIHsgc2VlZCA9IG1ha2Vfc2VlZCAoT3B0aW9uLnZhbHVlIHNlZWQgfmRlZmF1bHQ6ZGVmYXVsdF9zZWVkKVxuICAgIDsgc2l6ZXMgPSBPcHRpb24udmFsdWUgc2l6ZXMgfmRlZmF1bHQ6ZGVmYXVsdF9zaXplc1xuICAgIDsgdGVzdF9jb3VudCA9IE9wdGlvbi52YWx1ZSB0cmlhbHMgfmRlZmF1bHQ6ZGVmYXVsdF90cmlhbF9jb3VudFxuICAgIDsgc2hyaW5rX2NvdW50ID1cbiAgICAgICAgbWFrZV9zaHJpbmtfY291bnQgKE9wdGlvbi52YWx1ZSBzaHJpbmtfYXR0ZW1wdHMgfmRlZmF1bHQ6ZGVmYXVsdF9zaHJpbmtfYXR0ZW1wdHMpXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYWtlX3Rlc3RfbSAodHlwZSBhKSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiA6IChtb2R1bGUgVGVzdC5TIHdpdGggdHlwZSB0ID0gYSkgPVxuICAgIGxldCBtb2R1bGUgTSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBnZW5cbiAgICAgIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gT3B0aW9uLnZhbHVlIHNocmlua2VyIH5kZWZhdWx0OlNocmlua2VyLmF0b21pY1xuICAgICAgbGV0IHNleHBfb2ZfdCA9IE9wdGlvbi52YWx1ZSBzZXhwX29mIH5kZWZhdWx0Olslc2V4cF9vZjogX11cbiAgICBlbmRcbiAgICBpblxuICAgIChtb2R1bGUgTSlcbiAgOztcblxuICBsZXQgcmFuZG9tX3ZhbHVlID8oc2VlZCA9IGRlZmF1bHRfc2VlZCkgPyhzaXplID0gMzApIGdlbiA9XG4gICAgbGV0IHJhbmRvbSA9IHJhbmRvbV9zdGF0ZV9vZl9zZWVkIHNlZWQgaW5cbiAgICBHZW5lcmF0b3IuZ2VuZXJhdGUgZ2VuIH5zaXplIH5yYW5kb21cbiAgOztcblxuICBsZXQgcmFuZG9tX3NlcXVlbmNlID9zZWVkID9zaXplcyBnZW4gPVxuICAgIGxldCBjb25maWcgPVxuICAgICAgbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHM6KFNvbWUgSW50Lm1heF92YWx1ZSkgfnNocmlua19hdHRlbXB0czpOb25lXG4gICAgaW5cbiAgICBsZXQgcmV0dXJuID0gcmVmIFNlcXVlbmNlLmVtcHR5IGluXG4gICAgVGVzdC53aXRoX3NhbXBsZV9leG4gfmNvbmZpZyBnZW4gfmY6KGZ1biBzZXF1ZW5jZSAtPiByZXR1cm4gOj0gc2VxdWVuY2UpO1xuICAgICFyZXR1cm5cbiAgOztcblxuICBsZXQgaXRlciA/c2VlZCA/c2l6ZXMgP3RyaWFscyBnZW4gfmYgPVxuICAgIGxldCBjb25maWcgPSBtYWtlX2NvbmZpZyB+c2VlZCB+c2l6ZXMgfnRyaWFscyB+c2hyaW5rX2F0dGVtcHRzOk5vbmUgaW5cbiAgICBUZXN0LndpdGhfc2FtcGxlX2V4biB+Y29uZmlnIGdlbiB+ZjooZnVuIHNlcXVlbmNlIC0+IFNlcXVlbmNlLml0ZXIgc2VxdWVuY2UgfmYpXG4gIDs7XG5cbiAgbGV0IHRlc3QgP3NlZWQgP3NpemVzID90cmlhbHMgP3Nocmlua2VyID9zaHJpbmtfYXR0ZW1wdHMgP3NleHBfb2YgP2V4YW1wbGVzIGdlbiB+ZiA9XG4gICAgbGV0IGNvbmZpZyA9IG1ha2VfY29uZmlnIH5zZWVkIH5zaXplcyB+dHJpYWxzIH5zaHJpbmtfYXR0ZW1wdHMgaW5cbiAgICBsZXQgdGVzdF9tID0gbWFrZV90ZXN0X20gfmdlbiB+c2hyaW5rZXIgfnNleHBfb2YgaW5cbiAgICBUZXN0LnJ1bl9leG4gfmNvbmZpZyA/ZXhhbXBsZXMgfmYgdGVzdF9tXG4gIDs7XG5cbiAgbGV0IHRlc3Rfb3JfZXJyb3JcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID90cmlhbHNcbiAgICAgICAgP3Nocmlua2VyXG4gICAgICAgID9zaHJpbmtfYXR0ZW1wdHNcbiAgICAgICAgP3NleHBfb2ZcbiAgICAgICAgP2V4YW1wbGVzXG4gICAgICAgIGdlblxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgY29uZmlnID0gbWFrZV9jb25maWcgfnNlZWQgfnNpemVzIH50cmlhbHMgfnNocmlua19hdHRlbXB0cyBpblxuICAgIGxldCB0ZXN0X20gPSBtYWtlX3Rlc3RfbSB+Z2VuIH5zaHJpbmtlciB+c2V4cF9vZiBpblxuICAgIFRlc3QucnVuIH5jb25maWcgP2V4YW1wbGVzIH5mIHRlc3RfbVxuICA7O1xuXG4gIGxldCB0ZXN0X2Rpc3RpbmN0X3ZhbHVlc1xuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgID9zZWVkXG4gICAgICAgID9zaXplc1xuICAgICAgICA/c2V4cF9vZlxuICAgICAgICBnZW5cbiAgICAgICAgfnRyaWFsc1xuICAgICAgICB+ZGlzdGluY3RfdmFsdWVzXG4gICAgICAgIH5jb21wYXJlXG4gICAgPVxuICAgIGxldCBtb2R1bGUgUyA9XG4gICAgICBDYW1sLlNldC5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0ga2V5XG5cbiAgICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgICBlbmQpXG4gICAgaW5cbiAgICBsZXQgZmFpbCBzZXQgPVxuICAgICAgbGV0IGV4cGVjdF9jb3VudCA9IGRpc3RpbmN0X3ZhbHVlcyBpblxuICAgICAgbGV0IGFjdHVhbF9jb3VudCA9IFMuY2FyZGluYWwgc2V0IGluXG4gICAgICBsZXQgdmFsdWVzID1cbiAgICAgICAgbWF0Y2ggc2V4cF9vZiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBzZXhwX29mX2VsdCAtPiBTb21lIFslc2V4cCAoUy5lbGVtZW50cyBzZXQgOiBlbHQgbGlzdCldXG4gICAgICBpblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImluc3VmZmljaWVudCBkaXN0aW5jdCB2YWx1ZXNcIlxuICAgICAgICAgICAgKHRyaWFscyA6IGludClcbiAgICAgICAgICAgIChleHBlY3RfY291bnQgOiBpbnQpXG4gICAgICAgICAgICAoYWN0dWFsX2NvdW50IDogaW50KVxuICAgICAgICAgICAgKHZhbHVlcyA6IChCYXNlLlNleHAudCBvcHRpb25bQHNleHAub3B0aW9uXSkpXVxuICAgIGluXG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBsZXQgc2V0ID0gcmVmIFMuZW1wdHkgaW5cbiAgICAgIGl0ZXIgP3NlZWQgP3NpemVzIH50cmlhbHMgZ2VuIH5mOihmdW4gZWx0IC0+XG4gICAgICAgIHNldCA6PSBTLmFkZCBlbHQgIXNldDtcbiAgICAgICAgaWYgUy5jYXJkaW5hbCAhc2V0ID49IGRpc3RpbmN0X3ZhbHVlcyB0aGVuIHIucmV0dXJuICgpKTtcbiAgICAgIGZhaWwgIXNldClcbiAgOztcblxuICBsZXQgdGVzdF9jYW5fZ2VuZXJhdGVcbiAgICAgICAgP3NlZWRcbiAgICAgICAgP3NpemVzXG4gICAgICAgID8odHJpYWxzID0gZGVmYXVsdF9jYW5fZ2VuZXJhdGVfdHJpYWxfY291bnQpXG4gICAgICAgID9zZXhwX29mXG4gICAgICAgIGdlblxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgciA9IHJlZiBbXSBpblxuICAgIGxldCBmX2FuZF9lbnF1ZXVlIHJldHVybiB4ID0gaWYgZiB4IHRoZW4gcmV0dXJuIGBDYW5fZ2VuZXJhdGUgZWxzZSByIDo9IHggOjogIXIgaW5cbiAgICBtYXRjaFxuICAgICAgV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm4gKGZ1biByZXR1cm4gLT5cbiAgICAgICAgaXRlciA/c2VlZCA/c2l6ZXMgfnRyaWFscyBnZW4gfmY6KGZfYW5kX2VucXVldWUgcmV0dXJuLnJldHVybik7XG4gICAgICAgIGBDYW5ub3RfZ2VuZXJhdGUpXG4gICAgd2l0aFxuICAgIHwgYENhbl9nZW5lcmF0ZSAtPiAoKVxuICAgIHwgYENhbm5vdF9nZW5lcmF0ZSAtPlxuICAgICAgKG1hdGNoIHNleHBfb2Ygd2l0aFxuICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbm5vdCBnZW5lcmF0ZVwiXG4gICAgICAgfCBTb21lIHNleHBfb2ZfdmFsdWUgLT5cbiAgICAgICAgIEVycm9yLnJhaXNlX3MgWyVtZXNzYWdlIFwiY2Fubm90IGdlbmVyYXRlXCIgfmF0dGVtcHRzOighciA6IHZhbHVlIGxpc3QpXSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIENvbmZpZ3VyZSAoc3RydWN0XG4gICAgbGV0IGRlZmF1bHRfc2VlZCA9IGBEZXRlcm1pbmlzdGljIFwiYW4gYXJiaXRyYXJ5IGJ1dCBkZXRlcm1pbmlzdGljIHN0cmluZ1wiXG5cbiAgICBsZXQgZGVmYXVsdF90cmlhbF9jb3VudCA9XG4gICAgICBtYXRjaCBXb3JkX3NpemUud29yZF9zaXplIHdpdGhcbiAgICAgIHwgVzY0IC0+IDEwXzAwMFxuICAgICAgfCBXMzIgLT4gMV8wMDBcbiAgICA7O1xuXG4gICAgbGV0IGRlZmF1bHRfY2FuX2dlbmVyYXRlX3RyaWFsX2NvdW50ID0gMTBfMDAwXG4gICAgbGV0IGRlZmF1bHRfc2hyaW5rX2F0dGVtcHRzID0gYExpbWl0IDEwMDBcblxuICAgIGxldCBkZWZhdWx0X3NpemVzID1cbiAgICAgIFNlcXVlbmNlLmN5Y2xlX2xpc3RfZXhuIChMaXN0LnJhbmdlIDAgMzAgfnN0b3A6YGluY2x1c2l2ZSlcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSB0eXBlIFMgPSBTXG5tb2R1bGUgdHlwZSBTMSA9IFMxXG5tb2R1bGUgdHlwZSBTMiA9IFMyXG5tb2R1bGUgdHlwZSBTX2ludCA9IFNfaW50XG5tb2R1bGUgdHlwZSBTX3JhbmdlID0gU19yYW5nZVxuXG50eXBlIG5vbnJlYyBzZWVkID0gc2VlZFxudHlwZSBub25yZWMgc2hyaW5rX2F0dGVtcHRzID0gc2hyaW5rX2F0dGVtcHRzXG5cbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlnID0gUXVpY2tjaGVja19jb25maWdcbm1vZHVsZSB0eXBlIFF1aWNrY2hlY2tfY29uZmlndXJlZCA9IFF1aWNrY2hlY2tfY29uZmlndXJlZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuISBUeXBlcmVwX2xpYi5TdGRcbmluY2x1ZGUgQmFzZS5MaXN0XG5cbnR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG5tb2R1bGUgQXNzb2MgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3NvY1xuXG4gIHR5cGUgKCdhLCAnYikgdCA9ICgnYSAqICdiKSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICBsZXQgY29tcGFyZSAodHlwZSBhIGIpIGNvbXBhcmVfYSBjb21wYXJlX2IgPSBbJWNvbXBhcmU6IChhICogYikgbGlzdF1cbmVuZFxuXG5sZXQgdG9fc3RyaW5nIH5mIHQgPVxuICBTZXhwbGliLlNleHAudG9fc3RyaW5nIChzZXhwX29mX3QgKGZ1biB4IC0+IFNleHBsaWIuU2V4cC5BdG9tIHgpIChtYXAgdCB+ZikpXG47O1xuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmxpc3RcbmxldCBnZW5fbm9uX2VtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X25vbl9lbXB0eVxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF93aXRoX2xlbmd0aCBxdWlja2NoZWNrX2dlbmVyYXRvciB+bGVuZ3RoXG47O1xuXG5sZXQgZ2VuX2ZpbHRlcmVkID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5saXN0X2ZpbHRlcmVkXG5sZXQgZ2VuX3Blcm11dGF0aW9ucyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubGlzdF9wZXJtdXRhdGlvbnNcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmxpc3RcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmxpc3RcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBRdWlja2NoZWNrYWJsZV9pbnRmXG5cbm1vZHVsZSB0eXBlIENvbnYgPSBDb252XG5tb2R1bGUgdHlwZSBDb252X2ZpbHRlcmVkID0gQ29udl9maWx0ZXJlZFxubW9kdWxlIHR5cGUgQ29udjEgPSBDb252MVxubW9kdWxlIHR5cGUgQ29udl9maWx0ZXJlZDEgPSBDb252X2ZpbHRlcmVkMVxubW9kdWxlIHR5cGUgUyA9IFF1aWNrY2hlY2suU1xubW9kdWxlIHR5cGUgUzEgPSBRdWlja2NoZWNrLlMxXG5tb2R1bGUgdHlwZSBTMiA9IFF1aWNrY2hlY2suUzJcbm1vZHVsZSB0eXBlIFNfaW50ID0gUXVpY2tjaGVjay5TX2ludFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTKVxuICAgIChDb252IDogQ29udiB3aXRoIHR5cGUgcXVpY2tjaGVja2FibGUgOj0gUXVpY2tjaGVja2FibGUudCkgOiBTIHdpdGggdHlwZSB0IDo9IENvbnYudCA9XG5zdHJ1Y3RcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLnVubWFwIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlMVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMxKVxuICAgIChDb252IDogQ29udjEgd2l0aCB0eXBlICdhIHF1aWNrY2hlY2thYmxlIDo9ICdhIFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hKVxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSA9XG4gICAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgb2JzZXJ2ZV9hKVxuICAgICAgfmY6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIHNocmlua19hID1cbiAgICBRdWlja2NoZWNrLlNocmlua2VyLm1hcFxuICAgICAgKFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfc2hyaW5rZXIgc2hyaW5rX2EpXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gICAgICB+Zl9pbnZlcnNlOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcbmVuZFxuXG5tb2R1bGUgT2ZfcXVpY2tjaGVja2FibGVfZmlsdGVyZWRcbiAgICAoUXVpY2tjaGVja2FibGUgOiBTKVxuICAgIChDb252IDogQ29udl9maWx0ZXJlZCB3aXRoIHR5cGUgcXVpY2tjaGVja2FibGUgOj0gUXVpY2tjaGVja2FibGUudCkgOlxuICBTIHdpdGggdHlwZSB0IDo9IENvbnYudCA9IHN0cnVjdFxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXBcbiAgICAgIFF1aWNrY2hlY2thYmxlLnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgICB+ZjpDb252Lm9mX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19vYnNlcnZlciB+ZjpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPVxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuZmlsdGVyX21hcFxuICAgICAgUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6Q29udi5vZl9xdWlja2NoZWNrYWJsZVxuICAgICAgfmZfaW52ZXJzZTpDb252LnRvX3F1aWNrY2hlY2thYmxlXG4gIDs7XG5lbmRcblxubW9kdWxlIE9mX3F1aWNrY2hlY2thYmxlX2ZpbHRlcmVkMVxuICAgIChRdWlja2NoZWNrYWJsZSA6IFMxKVxuICAgIChDb252IDogQ29udl9maWx0ZXJlZDEgd2l0aCB0eXBlICdhIHF1aWNrY2hlY2thYmxlIDo9ICdhIFF1aWNrY2hlY2thYmxlLnQpIDpcbiAgUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgQ29udi50ID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBnZW5lcmF0ZV9hID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXJfbWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19nZW5lcmF0b3IgZ2VuZXJhdGVfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBvYnNlcnZlX2EgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXBcbiAgICAgIChRdWlja2NoZWNrYWJsZS5xdWlja2NoZWNrX29ic2VydmVyIG9ic2VydmVfYSlcbiAgICAgIH5mOkNvbnYudG9fcXVpY2tjaGVja2FibGVcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5maWx0ZXJfbWFwXG4gICAgICAoUXVpY2tjaGVja2FibGUucXVpY2tjaGVja19zaHJpbmtlciBzaHJpbmtfYSlcbiAgICAgIH5mOkNvbnYub2ZfcXVpY2tjaGVja2FibGVcbiAgICAgIH5mX2ludmVyc2U6Q29udi50b19xdWlja2NoZWNrYWJsZVxuICA7O1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gSGFzaHRibF9pbnRmXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNodGJsX2ludGYuSGFzaGFibGVcbm1vZHVsZSBNZXJnZV9pbnRvX2FjdGlvbiA9IEhhc2h0YmxfaW50Zi5NZXJnZV9pbnRvX2FjdGlvblxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5cbm1vZHVsZSBDcmVhdG9ycyA9IEhhc2h0YmwuQ3JlYXRvcnNcblxuaW5jbHVkZSAoXG4gIEhhc2h0YmwgOlxuICBzaWdcbiAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBIYXNodGJsLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQmFzZS5IYXNodGJsLlNfd2l0aG91dF9zdWJtb2R1bGVzIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgfm5hbWUgZiB0ID0gVmFsaWRhdGUuYWxpc3Qgfm5hbWUgZiAodG9fYWxpc3QgdClcblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlICgpID1cbiAgICBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSlcbiAgOztcblxuICBsZXQgb2ZfYWxpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X3JlcG9ydF9hbGxfZHVwcyA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSBsXG4gIDs7XG5cbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yID9ncm93dGhfYWxsb3dlZCA/c2l6ZSB+aGFzaGFibGUgbCA9XG4gICAgb2ZfYWxpc3Rfb3JfZXJyb3IgP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9hbGlzdF9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgbFxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9tdWx0aSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIGwgPVxuICAgIG9mX2FsaXN0X211bHRpID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX21hcHBlZCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSBsID1cbiAgICBjcmVhdGVfbWFwcGVkXG4gICAgICA/Z3Jvd3RoX2FsbG93ZWRcbiAgICAgID9zaXplXG4gICAgICAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gICAgICB+Z2V0X2tleVxuICAgICAgfmdldF9kYXRhXG4gICAgICBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKSB+Z2V0X2tleSBsXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvciA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9vcl9lcnJvclxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIGxcbiAgOztcblxuICBsZXQgY3JlYXRlX3dpdGhfa2V5X2V4biA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IGwgPVxuICAgIGNyZWF0ZV93aXRoX2tleV9leG4gP2dyb3d0aF9hbGxvd2VkID9zaXplIChCYXNlLkhhc2hhYmxlLnRvX2tleSBoYXNoYWJsZSkgfmdldF9rZXkgbFxuICA7O1xuXG4gIGxldCBncm91cCA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgfmhhc2hhYmxlIH5nZXRfa2V5IH5nZXRfZGF0YSB+Y29tYmluZSBsID1cbiAgICBncm91cFxuICAgICAgP2dyb3d0aF9hbGxvd2VkXG4gICAgICA/c2l6ZVxuICAgICAgKEJhc2UuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfmdldF9rZXlcbiAgICAgIH5nZXRfZGF0YVxuICAgICAgfmNvbWJpbmVcbiAgICAgIGxcbiAgOztcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpbiB3aXRoIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbm1vZHVsZSB0eXBlIFMgPSBTIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlIHdpdGggdHlwZSAoJ2EsICdiKSBoYXNodGJsID0gKCdhLCAnYikgdFxubW9kdWxlIHR5cGUgS2V5X3BsYWluID0gS2V5X3BsYWluXG5tb2R1bGUgdHlwZSBLZXkgPSBLZXlcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gS2V5X2JpbmFibGVcblxubW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIYXNodGJsLlBvbHlcblxuICBsZXQgdmFsaWRhdGUgPSB2YWxpZGF0ZVxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMiAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID0gKCdhLCAnYikgdFxuICAgICAgdHlwZSAoJ2EsICdiKSBlbCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4ZjNlNDQ1Yy00OTkyLTExZTYtYTI3OS0zNzAzYmUzMTFlN2JcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaHRibFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIH5zaXplOmxlbiAoKSBpblxuICAgICAgICBmb3IgX2kgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgICBsZXQga2V5LCBkYXRhID0gbmV4dCAoKSBpblxuICAgICAgICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBzZXQgdCB+a2V5IH5kYXRhXG4gICAgICAgICAgfCBTb21lIF8gLT4gZmFpbHdpdGggXCJDb3JlX2hhc2h0YmwuYmluX3JlYWRfdF86IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleV9wbGFpblxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG5cbiAgdHlwZSBrZXkgPSBULktleS50XG4gIHR5cGUgKCdhLCAnYikgaGFzaHRibCA9ICgnYSwgJ2IpIHRcbiAgdHlwZSAnYSB0ID0gKFQuS2V5LnQsICdhKSBoYXNodGJsXG4gIHR5cGUgKCdhLCAnYikgdF9fID0gKFQuS2V5LnQsICdiKSBoYXNodGJsXG4gIHR5cGUgJ2Ega2V5XyA9IFQuS2V5LnRcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuS2V5LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSAoXG4gICAgSGFzaHRibCA6XG4gICAgc2lnXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEhhc2h0YmwuQWNjZXNzb3JzXG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfX1xuICAgICAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleV9cblxuICAgICAgaW5jbHVkZVxuICAgICAgICBIYXNodGJsLk11bHRpIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRfXyB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIGtleV9cblxuICAgICAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgaGFzaHRibFxuICAgIGVuZClcblxuICBsZXQgdmFsaWRhdGUgPSB2YWxpZGF0ZVxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9rZXkgdCA9IGludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2tleSB0XG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92IHQgPSBQb2x5LnNleHBfb2ZfdCBULktleS5zZXhwX29mX3Qgc2V4cF9vZl92IHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoS2V5IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBrZXkpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEtleScgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0ga2V5KSA9XG4gICAgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVC5LZXlcbiAgICAgICAgaW5jbHVkZSBLZXknXG4gICAgICBlbmRcblxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICAgIHR5cGUgJ2EgZWwgPSBLZXkudCAqICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiOGZhYmFiMGEtNDk5Mi0xMWU2LThjY2EtOWJhMmM0Njg2ZDllXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkhhc2h0YmxcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IGtleSwgZGF0YSA9IG5leHQgKCkgaW5cbiAgICAgICAgICBtYXRjaCBmaW5kIHQga2V5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gc2V0IHQgfmtleSB+ZGF0YVxuICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIkhhc2h0YmwuYmluX3JlYWRfdDogZHVwbGljYXRlIGtleVwiXG4gICAgICAgICAgICAgIGtleVxuICAgICAgICAgICAgICBbJXNleHBfb2Y6IEtleS50XVxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKFQuS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBLZXlfYmluYWJsZVxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoVC5LZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW4gKEtleSA6IEtleV9wbGFpbikgPSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgIG1vZHVsZSBLZXkgPSBLZXlcblxuICAgIGxldCBoYXNoYWJsZSA9XG4gICAgICB7IEhhc2hhYmxlLmhhc2ggPSBLZXkuaGFzaDsgY29tcGFyZSA9IEtleS5jb21wYXJlOyBzZXhwX29mX3QgPSBLZXkuc2V4cF9vZl90IH1cbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBNYWtlIChLZXkgOiBLZXkpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKEtleSA6IEtleV9iaW5hYmxlKSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2UgKEtleSlcbiAgaW5jbHVkZSBQcm92aWRlX2Jpbl9pbyAoS2V5KVxuZW5kXG5cbm1vZHVsZSBNID0gSGFzaHRibC5NXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IEZvcl9kZXJpdmluZ1xuXG5tb2R1bGUgRm9yX2Rlcml2aW5nIDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoSGFzaHRibCA6IEhhc2h0YmwuRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpXG5cbiAgbW9kdWxlIHR5cGUgTV9xdWlja2NoZWNrID0gTV9xdWlja2NoZWNrXG5cbiAgbGV0IG9mX2FsaXN0X29wdGlvbiBtIGFsaXN0ID0gUmVzdWx0Lm9rIChvZl9hbGlzdF9vcl9lcnJvciBtIGFsaXN0KVxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogKEtleS50ICogZGF0YSkgTGlzdC50XVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLmZpbHRlcl9tYXAgfmY6KG9mX2FsaXN0X29wdGlvbiAobW9kdWxlIEtleSkpXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXJfbV9fdFxuICAgICAgICAodHlwZSBrZXkpXG4gICAgICAgIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KVxuICAgICAgICBxdWlja2NoZWNrX29ic2VydmVyX2RhdGFcbiAgICA9XG4gICAgWyVxdWlja2NoZWNrLm9ic2VydmVyOiAoS2V5LnQgKiBkYXRhKSBMaXN0LnRdIHw+IFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgfmY6dG9fYWxpc3RcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIGtleSlcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpXG4gICAgICAgIHF1aWNrY2hlY2tfc2hyaW5rZXJfZGF0YVxuICAgID1cbiAgICBbJXF1aWNrY2hlY2suc2hyaW5rZXI6IChLZXkudCAqIGRhdGEpIExpc3QudF1cbiAgICB8PiBRdWlja2NoZWNrLlNocmlua2VyLmZpbHRlcl9tYXBcbiAgICAgICAgIH5mOihvZl9hbGlzdF9vcHRpb24gKG1vZHVsZSBLZXkpKVxuICAgICAgICAgfmZfaW52ZXJzZTp0b19hbGlzdFxuICA7O1xuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbmxldCBoYXNoYWJsZSA9IEhhc2h0YmwuUHJpdmF0ZS5oYXNoYWJsZVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEhhc2hfc2V0X2ludGZcbmluY2x1ZGUgQmFzZS5IYXNoX3NldFxuXG5tb2R1bGUgdHlwZSBTX3BsYWluID0gU19wbGFpbiB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICdhIGhhc2hfc2V0IDo9ICdhIHRcbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IFNfYmluYWJsZSB3aXRoIHR5cGUgJ2EgaGFzaF9zZXQgOj0gJ2EgdFxubW9kdWxlIHR5cGUgRWx0X3BsYWluID0gSGFzaHRibC5LZXlfcGxhaW5cbm1vZHVsZSB0eXBlIEVsdCA9IEhhc2h0YmwuS2V5XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEhhc2h0YmwuS2V5X2JpbmFibGVcblxubW9kdWxlIE1ha2VfcGxhaW5fd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBFbHQgOiBFbHRfcGxhaW5cblxuICAgIHZhbCBoYXNoYWJsZSA6IEVsdC50IEhhc2h0YmwuSGFzaGFibGUudFxuICBlbmQpID1cbnN0cnVjdFxuICB0eXBlIGVsdCA9IFQuRWx0LnRcbiAgdHlwZSBub25yZWMgdCA9IGVsdCB0XG5cbiAgbGV0IGVxdWFsID0gZXF1YWxcblxuICBpbmNsdWRlIENyZWF0b3JzIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IFQuRWx0LnRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZClcblxuICBsZXQgc2V4cF9vZl90IHQgPSBQb2x5LnNleHBfb2ZfdCBULkVsdC5zZXhwX29mX3QgdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBlbHQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHNleHBcbiAgZW5kXG5cbiAgbW9kdWxlIFByb3ZpZGVfYmluX2lvXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBlbHQpID1cbiAgICBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFQuRWx0XG4gICAgICAgIGluY2x1ZGUgWFxuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG4gICAgICB0eXBlIGVsID0gRWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICBsZXQgXyA9IGJpbl9lbFxuXG4gICAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCJhZDM4MTY3Mi00OTkyLTExZTYtOWUzNi1iNzZkYzhjZDQ2NmZcIlxuICAgICAgOztcblxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuSGFzaF9zZXRcIlxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICBsZXQgdCA9IGNyZWF0ZSB+c2l6ZTpsZW4gKCkgaW5cbiAgICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgICAgbGV0IHYgPSBuZXh0ICgpIGluXG4gICAgICAgICAgYWRkIHQgdlxuICAgICAgICBkb25lO1xuICAgICAgICB0XG4gICAgICA7O1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdFxuXG4gICAgdmFsIGhhc2hhYmxlIDogRWx0LnQgSGFzaHRibC5IYXNoYWJsZS50XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChUKVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoVC5FbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUIDogc2lnXG4gICAgbW9kdWxlIEVsdCA6IEVsdF9iaW5hYmxlXG5cbiAgICB2YWwgaGFzaGFibGUgOiBFbHQudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKFQuRWx0KVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICBtb2R1bGUgRWx0ID0gRWx0XG5cbiAgICBsZXQgaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLm9mX2tleSAobW9kdWxlIEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IHN0cnVjdFxuICBpbmNsdWRlIE1ha2VfcGxhaW4gKEVsdClcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChFbHQgOiBFbHRfYmluYWJsZSkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9iaW5faW8gKEVsdClcbmVuZFxuXG5tb2R1bGUgVXNpbmdfaGFzaGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYVxuXG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSAoKSA9XG4gICAgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpXG4gIDs7XG5cbiAgbGV0IG9mX2xpc3QgP2dyb3d0aF9hbGxvd2VkID9zaXplIH5oYXNoYWJsZSBsID1cbiAgICBvZl9saXN0ID9ncm93dGhfYWxsb3dlZCA/c2l6ZSAoQmFzZS5IYXNoYWJsZS50b19rZXkgaGFzaGFibGUpIGxcbiAgOztcbmVuZFxuXG5sZXQgaGFzaGFibGUgPSBQcml2YXRlLmhhc2hhYmxlXG5sZXQgY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtID0gY3JlYXRlID9ncm93dGhfYWxsb3dlZCA/c2l6ZSBtXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvcl9tX190ICh0eXBlIGtleSkgKG1vZHVsZSBLZXkgOiBNX3F1aWNrY2hlY2sgd2l0aCB0eXBlIHQgPSBrZXkpID1cbiAgWyVxdWlja2NoZWNrLmdlbmVyYXRvcjogS2V5LnQgTGlzdDAudF1cbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOihvZl9saXN0IChtb2R1bGUgS2V5KSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyX21fX3QgKHR5cGUga2V5KSAobW9kdWxlIEtleSA6IE1fcXVpY2tjaGVjayB3aXRoIHR5cGUgdCA9IGtleSkgPVxuICBbJXF1aWNrY2hlY2sub2JzZXJ2ZXI6IEtleS50IExpc3QwLnRdIHw+IFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgfmY6dG9fbGlzdFxuOztcblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdCAodHlwZSBrZXkpIChtb2R1bGUgS2V5IDogTV9xdWlja2NoZWNrIHdpdGggdHlwZSB0ID0ga2V5KSA9XG4gIFslcXVpY2tjaGVjay5zaHJpbmtlcjogS2V5LnQgTGlzdDAudF1cbiAgfD4gUXVpY2tjaGVjay5TaHJpbmtlci5tYXAgfmY6KG9mX2xpc3QgKG1vZHVsZSBLZXkpKSB+Zl9pbnZlcnNlOnRvX2xpc3Rcbjs7XG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBpbnRlcmZhY2VzIHVzZWQgaW4ge3shTWFwfVtNYXBdfS4gU2VlIHRob3NlIGRvY3MgZm9yIGEgZGVzY3JpcHRpb25cbiAgICBvZiB0aGUgZGVzaWduLlxuXG4gICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBtb2R1bGUgdHlwZXNcbiAgICBbe0NyZWF0b3JzLEFjY2Vzc29yc317MSwyLDMsX2dlbmVyaWMsX3dpdGhfY29tcGFyYXRvcn1dLiBJdCB1c2VzIGNoZWNrIGZ1bmN0b3JzIHRvXG4gICAgZW5zdXJlIHRoYXQgZWFjaCBtb2R1bGUgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBbX2dlbmVyaWNdIG9uZS5cblxuICAgIFdlIG11c3QgdHJlYXQgW0NyZWF0b3JzXSBhbmQgW0FjY2Vzc29yc10gc2VwYXJhdGVseSwgYmVjYXVzZSB3ZSBzb21ldGltZXMgbmVlZCB0b1xuICAgIGNob29zZSBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMgb2YgdGhlaXIgW29wdGlvbnNdLiBJbiBwYXJ0aWN1bGFyLCBbTWFwXSBpdHNlbGZcbiAgICBtYXRjaGVzIFtDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yXSBidXQgW0FjY2Vzc29yczNdICh3aXRob3V0IGNvbXBhcmF0b3IpLlxuKilcblxuXG5vcGVuISBJbXBvcnRcbm9wZW4gVFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIE1hcCA9IEJhc2UuTWFwXG5tb2R1bGUgT3JfZHVwbGljYXRlID0gTWFwLk9yX2R1cGxpY2F0ZVxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IE1hcC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IE1hcC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIFdpdGhvdXRfY29tcGFyYXRvciA9IE1hcC5XaXRob3V0X2NvbXBhcmF0b3Jcbm1vZHVsZSBUcmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZVxuXG5tb2R1bGUgdHlwZSBLZXlfcGxhaW4gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIHR5cGUgS2V5X2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5lbmRcblxubW9kdWxlIEtleV9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yc19nZW5lcmljXG5cbiAgdmFsIGtleV9zZXQgOiAoJ2ssICdjbXAsICgnaywgXywgJ2NtcCkgdCAtPiAoJ2sga2V5LCAnY21wIGNtcCkgQmFzZS5TZXQudCkgb3B0aW9uc1xuXG4gIHZhbCB2YWxpZGF0ZVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gJ3YgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIGtleSAtPiBzdHJpbmcpXG4gICAgLT4gKCdrIGtleSAqICd2KSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnaywgJ3YsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIGtleSBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgICAgLT4gJ3YgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yczFcblxuICB2YWwga2V5X3NldCA6IF8gdCAtPiAoa2V5LCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnRcbiAgdmFsIHZhbGlkYXRlIDogbmFtZTooa2V5IC0+IHN0cmluZykgLT4gJ2EgVmFsaWRhdGUuY2hlY2sgLT4gJ2EgdCBWYWxpZGF0ZS5jaGVja1xuICB2YWwgdmFsaWRhdGVpIDogbmFtZTooa2V5IC0+IHN0cmluZykgLT4gKGtleSAqICdhKSBWYWxpZGF0ZS5jaGVjayAtPiAnYSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICBrZXkgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gJ3YgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlclxuICAgIDogIGtleSBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzMlxuXG4gIHZhbCBrZXlfc2V0IDogKCdrLCAndikgdCAtPiAoJ2ssIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5TZXQudFxuICB2YWwgdmFsaWRhdGUgOiBuYW1lOignYSAtPiBzdHJpbmcpIC0+ICdiIFZhbGlkYXRlLmNoZWNrIC0+ICgnYSwgJ2IpIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2EgLT4gc3RyaW5nKVxuICAgIC0+ICgnYSAqICdiKSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnYSwgJ2IpIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YpIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2KSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQWNjZXNzb3JzM1xuXG4gIHZhbCBrZXlfc2V0IDogKCdrLCBfLCAnY21wKSB0IC0+ICgnaywgJ2NtcCkgQmFzZS5TZXQudFxuICB2YWwgdmFsaWRhdGUgOiBuYW1lOignYSAtPiBzdHJpbmcpIC0+ICdiIFZhbGlkYXRlLmNoZWNrIC0+ICgnYSwgJ2IsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgdmFsaWRhdGVpXG4gICAgOiAgbmFtZTooJ2EgLT4gc3RyaW5nKVxuICAgIC0+ICgnYSAqICdiKSBWYWxpZGF0ZS5jaGVja1xuICAgIC0+ICgnYSwgJ2IsIF8pIHQgVmFsaWRhdGUuY2hlY2tcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlclxuICAgIDogICdrIFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICAgIC0+ICgnaywgJ3YsIF8pIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgTWFwLkFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yXG5cbiAgdmFsIGtleV9zZXRcbiAgICA6ICBjb21wYXJhdG9yOignaywgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdrLCBfLCAnY21wKSB0XG4gICAgLT4gKCdrLCAnY21wKSBCYXNlLlNldC50XG5cbiAgdmFsIHZhbGlkYXRlIDogbmFtZTooJ2EgLT4gc3RyaW5nKSAtPiAnYiBWYWxpZGF0ZS5jaGVjayAtPiAoJ2EsICdiLCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHZhbGlkYXRlaVxuICAgIDogIG5hbWU6KCdrIC0+IHN0cmluZylcbiAgICAtPiAoJ2sgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnayBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAndiBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgICAtPiAoJ2ssICd2LCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAgY29tcGFyYXRvcjooJ2ssICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdrIFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxuKCoqIENvbnNpc3RlbmN5IGNoZWNrcyAoc2FtZSBhcyBpbiBbQ29udGFpbmVyXSkuICopXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IEFjY2Vzc29yc19nZW5lcmljXG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgT3B0aW9ucy50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBrZXkgOj0gJ2EgS2V5LnRcbiAgICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBDbXAudCkgPVxuc3RydWN0IGVuZFxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICdiIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0ua2V5XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczMgKE0gOiBBY2Nlc3NvcnMzKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IEFjY2Vzc29yczNfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiLCAnYykgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNodGJsX2V4biA6ICgnaywgJ2NtcCwgKCdrIGtleSwgJ3YpIEhhc2h0YmwudCAtPiAoJ2ssICd2LCAnY21wKSB0KSBvcHRpb25zXG5cbiAgKCoqIE5ldmVyIHJlcXVpcmVzIGEgY29tcGFyYXRvciBiZWNhdXNlIGl0IGNhbiBnZXQgb25lIGZyb20gdGhlIGlucHV0IFtTZXQudF0uICopXG4gIHZhbCBvZl9rZXlfc2V0IDogKCdrIGtleSwgJ2NtcCBjbXApIEJhc2UuU2V0LnQgLT4gZjooJ2sga2V5IC0+ICd2KSAtPiAoJ2ssICd2LCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdrXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2sga2V5IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICd2IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudCApXG4gICAgICAgIG9wdGlvbnNcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczEgPSBzaWdcbiAgaW5jbHVkZSBNYXAuQ3JlYXRvcnMxXG5cbiAgdmFsIG9mX2hhc2h0YmxfZXhuIDogKGtleSwgJ2EpIEhhc2h0YmwudCAtPiAnYSB0XG4gIHZhbCBvZl9rZXlfc2V0IDogKGtleSwgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IC0+IGY6KGtleSAtPiAndikgLT4gJ3YgdFxuXG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvclxuICAgIDogIGtleSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICdhIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICBpbmNsdWRlIE1hcC5DcmVhdG9yczJcblxuICB2YWwgb2ZfaGFzaHRibF9leG4gOiAoJ2EsICdiKSBIYXNodGJsLnQgLT4gKCdhLCAnYikgdFxuICB2YWwgb2Zfa2V5X3NldCA6ICgnYSwgY29tcGFyYXRvcl93aXRuZXNzKSBCYXNlLlNldC50IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2EsICdiKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAgJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICdiIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAoJ2EsICdiKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczNfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgTWFwLkNyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcblxuICB2YWwgb2ZfaGFzaHRibF9leG5cbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gKCdhLCAnYikgSGFzaHRibC50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9rZXlfc2V0IDogKCdhLCAnY21wKSBCYXNlLlNldC50IC0+IGY6KCdhIC0+ICdiKSAtPiAoJ2EsICdiLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICdhIFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgICAtPiAnYiBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdhLCAnYiwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMylcbiAgICAoVHJlZSA6IFQzKVxuICAgIChLZXkgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSBUcmVlLnRcbiAgICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBLZXkudFxuICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczEgKE0gOiBDcmVhdG9yczEpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gJ2IgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYiBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5rZXlcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMiAoTSA6IENyZWF0b3JzMikgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiLCAnYykgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMzX3dpdGhfY29tcGFyYXRvciAoTSA6IENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoV2l0aF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBDcmVhdG9yc19nZW5lcmljXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0cmVlIDo9ICgnYSwgJ2IsICdjKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGtleSA6PSAnYSBrZXlcbiAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIGNtcFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMxID0gc2lnXG4gIGluY2x1ZGUgQ3JlYXRvcnMxXG5cbiAgaW5jbHVkZVxuICAgIEFjY2Vzc29yczFcbiAgICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG4gICAgd2l0aCB0eXBlICdhIHRyZWUgOj0gJ2EgdHJlZVxuICAgIHdpdGggdHlwZSBrZXkgOj0ga2V5XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzMlxuXG4gIGluY2x1ZGVcbiAgICBBY2Nlc3NvcnMyXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMzX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIENyZWF0b3JzM193aXRoX2NvbXBhcmF0b3JcblxuICBpbmNsdWRlXG4gICAgQWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHQgOj0gKCdhLCAnYiwgJ2MpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbmVuZFxuXG5tb2R1bGUgTWFrZV9TX3BsYWluX3RyZWUgKEtleSA6IENvbXBhcmF0b3IuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgJ2EgdCA9IChLZXkudCwgJ2EsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczFcbiAgICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICAgIHdpdGggdHlwZSAnYSB0cmVlIDo9ICdhIHRcbiAgICAgIHdpdGggdHlwZSBrZXkgOj0gS2V5LnRcbiAgICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gS2V5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgICAoSyA6IHNpZ1xuICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICAgIGVuZFxuICAgICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgICB0eXBlIF8gdCBbQEBkZXJpdmluZyBvZl9zZXhwXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIHR5cGUgU19wbGFpbiA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIHR5cGUgKydhIHQgPSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBNYXAudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAoS2V5LnQsICdhLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUga2V5IDo9IEtleS50XG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSBfIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXkgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogQmluYWJsZS5TMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfaGFzaCAoS2V5IDogSGFzaGVyLlMgd2l0aCB0eXBlIHQgOj0gS2V5LnQpIDogc2lnXG4gICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgU19wbGFpbiB3aXRoIG1vZHVsZSBLZXkgOj0gS2V5XG4gIGluY2x1ZGUgU2V4cGFibGUuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfYmluYWJsZSA9IHNpZ1xuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTIHdpdGggbW9kdWxlIEtleSA6PSBLZXlcbiAgaW5jbHVkZSBCaW5hYmxlLlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLk1hcC5Gb3JfZGVyaXZpbmdcbiAgbW9kdWxlIE0gPSBCYXNlLk1hcC5NXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgWypiaW4qXSBmdW5jdGlvbnMgc3VwcG9ydCBiaW4taW8gb24gYmFzZS1zdHlsZSBtYXBzLFxuICAgICAgZS5nLjpcblxuICAgICAge1sgdHlwZSB0ID0gaW50IE1hcC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYykgS2V5X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnQgLT4gQmluX3Byb3QuU2hhcGUudFxuXG4gIHZhbCBiaW5fc2l6ZV9tX190XG4gICAgOiAgKCdhLCAnYykgS2V5X2Jpbl9pby50XG4gICAgLT4gJ2IgQmluX3Byb3QuU2l6ZS5zaXplclxuICAgIC0+ICgnYSwgJ2IsICdjKSB0IEJpbl9wcm90LlNpemUuc2l6ZXJcblxuICB2YWwgYmluX3dyaXRlX21fX3RcbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcbiAgICAtPiAoJ2EsICdiLCAnYykgdCBCaW5fcHJvdC5Xcml0ZS53cml0ZXJcblxuICB2YWwgYmluX3JlYWRfbV9fdFxuICAgIDogICgnYSwgJ2MpIEtleV9iaW5faW8udFxuICAgIC0+ICdiIEJpbl9wcm90LlJlYWQucmVhZGVyXG4gICAgLT4gKCdhLCAnYiwgJ2MpIHQgQmluX3Byb3QuUmVhZC5yZWFkZXJcblxuICB2YWwgX19iaW5fcmVhZF9tX190X19cbiAgICA6ICAoJ2EsICdjKSBLZXlfYmluX2lvLnRcbiAgICAtPiAnYiBCaW5fcHJvdC5SZWFkLnJlYWRlclxuICAgIC0+IChpbnQgLT4gKCdhLCAnYiwgJ2MpIHQpIEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgKCoqIFRoZSBmb2xsb3dpbmcgW3F1aWNrY2hlY2sqXSBmdW5jdGlvbnMgc3VwcG9ydCBkZXJpdmluZyBxdWlja2NoZWNrIG9uIGJhc2Utc3R5bGUgbWFwcyxcbiAgICAgIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IGludCBNYXAuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4gIHZhbCBxdWlja2NoZWNrX29ic2VydmVyX21fX3RcbiAgICA6ICAobW9kdWxlIFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbSB3aXRoIHR5cGUgdCA9ICdrIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gJ3YgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdrLCAndiwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnayBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICd2IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICAgIC0+ICgnaywgJ3YsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBNYXBfaW50ZlxubW9kdWxlIExpc3QgPSBMaXN0MFxuXG5tb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICgnaywgJ3YpIHQgPSAnayAqIFsgYExlZnQgb2YgJ3YgfCBgUmlnaHQgb2YgJ3YgfCBgVW5lcXVhbCBvZiAndiAqICd2IF1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogKGludCwgc3RyaW5nKSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMDA2NzRiZTlmZThkZmU5ZTlhZDQ3NjA2N2Q3ZDgxMDEgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgbWFwIChrLCBkaWZmKSB+ZjEgfmYyID1cbiAgICAgICAgbGV0IGsgPSBmMSBrIGluXG4gICAgICAgIGxldCBkaWZmID1cbiAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICB8IGBMZWZ0IHYgLT4gYExlZnQgKGYyIHYpXG4gICAgICAgICAgfCBgUmlnaHQgdiAtPiBgUmlnaHQgKGYyIHYpXG4gICAgICAgICAgfCBgVW5lcXVhbCAodjEsIHYyKSAtPiBgVW5lcXVhbCAoZjIgdjEsIGYyIHYyKVxuICAgICAgICBpblxuICAgICAgICBrLCBkaWZmXG4gICAgICA7O1xuXG4gICAgICBsZXQgbWFwX2RhdGEgdCB+ZiA9IG1hcCB0IH5mMTpGbi5pZCB+ZjI6ZlxuXG4gICAgICBsZXQgbGVmdCAoX2tleSwgZGlmZikgPVxuICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgfCBgTGVmdCB4IHwgYFVuZXF1YWwgKHgsIF8pIC0+IFNvbWUgeFxuICAgICAgICB8IGBSaWdodCBfIC0+IE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCByaWdodCAoX2tleSwgZGlmZikgPVxuICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgfCBgUmlnaHQgeCB8IGBVbmVxdWFsIChfLCB4KSAtPiBTb21lIHhcbiAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5lbmRcblxubW9kdWxlIE1lcmdlX2VsZW1lbnQgPSBCYXNlLk1hcC5NZXJnZV9lbGVtZW50XG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IEJhc2UuTWFwLkNvbnRpbnVlX29yX3N0b3Bcbm1vZHVsZSBGaW5pc2hlZF9vcl91bmZpbmlzaGVkID0gQmFzZS5NYXAuRmluaXNoZWRfb3JfdW5maW5pc2hlZFxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IHRvX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApICgobW9kdWxlIE0pIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCkgPSBNLmNvbXBhcmF0b3JcblxubGV0IG9mX2NvbXBhcmF0b3IgKHR5cGUgayBjbXApIGNvbXBhcmF0b3IgOiAoaywgY21wKSBDb21wYXJhdG9yLk1vZHVsZS50ID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBrXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXBcblxuICAgIGxldCBjb21wYXJhdG9yID0gY29tcGFyYXRvclxuICBlbmQpXG47O1xuXG5tb2R1bGUgRm9yX3F1aWNrY2hlY2sgPSBzdHJ1Y3RcbiAgbGV0IGdlbl90cmVlIH5jb21wYXJhdG9yIGtfZ2VuIHZfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW5cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgfmNvbXBhcmF0b3Iga19nZW4gdl9nZW4gPVxuICAgIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubWFwX3RfbSAob2ZfY29tcGFyYXRvciBjb21wYXJhdG9yKSBrX2dlbiB2X2dlblxuICA7O1xuXG4gIGxldCBvYnNfdHJlZSBrX29icyB2X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5tYXBfdHJlZSBrX29icyB2X29ic1xuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBrX3NociB2X3NociA9XG4gICAgQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLm1hcF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3Iga19zaHIgdl9zaHJcbiAgOztcbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm1hcF90X21cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm1hcF90XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5tYXBfdFxuXG5tb2R1bGUgVXNpbmdfY29tcGFyYXRvciA9IHN0cnVjdFxuICBpbmNsdWRlIE1hcC5Vc2luZ19jb21wYXJhdG9yXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgbWF0Y2ggb2ZfaXRlcmkgfmNvbXBhcmF0b3Igfml0ZXJpOihIYXNodGJsLml0ZXJpIGhhc2h0YmwpIHdpdGhcbiAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgfCBgRHVwbGljYXRlX2tleSBrZXkgLT5cbiAgICAgIEVycm9yLmZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiTWFwLm9mX2hhc2h0YmxfZXhuOiBkdXBsaWNhdGUga2V5XCJcbiAgICAgICAga2V5XG4gICAgICAgIGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIDs7XG5cbiAgbGV0IHRyZWVfb2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibCA9XG4gICAgdG9fdHJlZSAob2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibClcbiAgOztcblxuICBsZXQga2V5X3NldCB+Y29tcGFyYXRvciB0ID1cbiAgICBCYXNlLlNldC5Vc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWRcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoTGlzdC50b19hcnJheSAoa2V5cyB0KSlcbiAgOztcblxuICBsZXQga2V5X3NldF9vZl90cmVlIH5jb21wYXJhdG9yIHQgPSBrZXlfc2V0IH5jb21wYXJhdG9yIChvZl90cmVlIH5jb21wYXJhdG9yIHQpXG5cbiAgbGV0IG9mX2tleV9zZXQga2V5X3NldCB+ZiA9XG4gICAgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZFxuICAgICAgfmNvbXBhcmF0b3I6KEJhc2UuU2V0LmNvbXBhcmF0b3Iga2V5X3NldClcbiAgICAgIChBcnJheS5tYXAgKEJhc2UuU2V0LnRvX2FycmF5IGtleV9zZXQpIH5mOihmdW4ga2V5IC0+IGtleSwgZiBrZXkpKVxuICA7O1xuXG4gIGxldCB0cmVlX29mX2tleV9zZXQga2V5X3NldCB+ZiA9IHRvX3RyZWUgKG9mX2tleV9zZXQga2V5X3NldCB+ZilcbmVuZFxuXG5tb2R1bGUgQWNjZXNzb3JzID0gc3RydWN0XG4gIGluY2x1ZGUgKFxuICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yIDpcbiAgICAgIE1hcC5BY2Nlc3NvcnMzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSBNYXAudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50KVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgayB2XG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGsgdiA9IHF1aWNrY2hlY2tfc2hyaW5rZXIgayB2XG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXQgdCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpXG5lbmRcblxubGV0IGtleV9zZXQgdCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldCB+Y29tcGFyYXRvcjooVXNpbmdfY29tcGFyYXRvci5jb21wYXJhdG9yIHQpIHRcbmxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9rZXlfc2V0XG5sZXQgaGFzaF9mb2xkX2RpcmVjdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdFxubGV0IGNvbXBhcmF0b3IgPSBVc2luZ19jb21wYXJhdG9yLmNvbXBhcmF0b3JcbmxldCBjb21wYXJhdG9yX3MgPSBCYXNlLk1hcC5jb21wYXJhdG9yX3NcblxudHlwZSAnayBrZXkgPSAna1xudHlwZSAnYyBjbXAgPSAnY1xuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIE1hcFxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl90cmVlIG0gPSBNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pXG4gIGxldCB0b190cmVlID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZVxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbiAgaW5jbHVkZVxuICAgIE1hcC5DcmVhdG9yc19nZW5lcmljXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBNYXAuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG4gICAgd2l0aCB0eXBlICdrIGtleSA6PSAnayBrZXlcbiAgICB3aXRoIHR5cGUgJ2MgY21wIDo9ICdjIGNtcFxuXG4gIGluY2x1ZGVcbiAgICBNYXAuQWNjZXNzb3JzM1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgVHJlZS50XG5cbiAgdmFsIHZhbGlkYXRlXG4gICAgOiAgbmFtZTooJ2sgLT4gc3RyaW5nKVxuICAgIC0+ICd2IFZhbGlkYXRlLmNoZWNrXG4gICAgLT4gKCdrLCAndiwgXykgdCBWYWxpZGF0ZS5jaGVja1xuXG4gIHZhbCB2YWxpZGF0ZWlcbiAgICA6ICBuYW1lOignayBrZXkgLT4gc3RyaW5nKVxuICAgIC0+ICgnayBrZXkgKiAndikgVmFsaWRhdGUuY2hlY2tcbiAgICAtPiAoJ2ssICd2LCBfKSB0IFZhbGlkYXRlLmNoZWNrXG5lbmQpXG5cbm1vZHVsZSBFbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uID0gVXNpbmdfY29tcGFyYXRvci5FbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG5cbmxldCBmaW5kX29yX2Vycm9yIHQga2V5ID1cbiAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yIHQgaW5cbiAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gIHwgU29tZSBkYXRhIC0+IE9rIGRhdGFcbiAgfCBOb25lIC0+XG4gICAgbGV0IHNleHBfb2Zfa2V5ID0gY29tcGFyYXRvci5zZXhwX29mX3QgaW5cbiAgICBPcl9lcnJvci5lcnJvcl9zIFslbWVzc2FnZSBcImtleSBub3QgZm91bmRcIiB+Xzooa2V5IDoga2V5KV1cbjs7XG5cbmxldCBtZXJnZV9za2V3ZWQgPSBNYXAubWVyZ2Vfc2tld2VkXG5sZXQgb2ZfaGFzaHRibF9leG4gbSB0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9oYXNodGJsX2V4biB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKSB0XG5cbm1vZHVsZSBDcmVhdG9ycyAoS2V5IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSAoJ2EsICdiLCAnYykgdF8gPSAoJ2EgS2V5LnQsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgPSAoJ2EsICdiLCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIHZhbCB0X29mX3NleHBcbiAgICA6ICAoQmFzZS5TZXhwLnQgLT4gJ2EgS2V5LnQpXG4gICAgLT4gKEJhc2UuU2V4cC50IC0+ICdiKVxuICAgIC0+IEJhc2UuU2V4cC50XG4gICAgLT4gKCdhLCAnYiwgXykgdF9cblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdCA6PSAoJ2EsICdiLCAnYykgdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2Ega2V5IDo9ICdhIEtleS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSBLZXkuY29tcGFyYXRvcl93aXRuZXNzXG4gICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBvcHRpb25zXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA9ICgnYSwgJ2IsICdjKSBXaXRob3V0X2NvbXBhcmF0b3IudFxuXG4gIGxldCBjb21wYXJhdG9yID0gS2V5LmNvbXBhcmF0b3JcblxuICB0eXBlICgnYSwgJ2IsICdjKSB0XyA9ICgnYSBLZXkudCwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA9ICgnYSwgJ2IsIEtleS5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoS2V5KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IG9mX3RyZWUgdHJlZSA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBzaW5nbGV0b24gayB2ID0gVXNpbmdfY29tcGFyYXRvci5zaW5nbGV0b24gfmNvbXBhcmF0b3IgayB2XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYXJyYXkgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuICA7O1xuXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXkgYXJyYXkgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfaXRlcmF0b3JfdW5jaGVja2VkIH5jb21wYXJhdG9yIH5sZW4gfmZcbiAgOztcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX2luY3JlYXNpbmdfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc2VxXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlIH5jb21wYXJhdG9yIHNlcVxuICBsZXQgb2Zfc2VxdWVuY2Vfb3JfZXJyb3Igc2VxID0gVXNpbmdfY29tcGFyYXRvci5vZl9zZXF1ZW5jZV9vcl9lcnJvciB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX2V4biBzZXEgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2V4biB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlX211bHRpIHNlcSA9IFVzaW5nX2NvbXBhcmF0b3Iub2Zfc2VxdWVuY2VfbXVsdGkgfmNvbXBhcmF0b3Igc2VxXG5cbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgc2VxIH5pbml0IH5mID1cbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX2ZvbGQgfmNvbXBhcmF0b3Igc2VxIH5pbml0IH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NlcXVlbmNlX3JlZHVjZSBzZXEgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX3NlcXVlbmNlX3JlZHVjZSB+Y29tcGFyYXRvciBzZXEgfmZcbiAgbGV0IG9mX2FsaXN0IGFsaXN0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9hbGlzdCB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfYWxpc3Rfb3JfZXJyb3IgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X29yX2Vycm9yIH5jb21wYXJhdG9yIGFsaXN0XG4gIGxldCBvZl9hbGlzdF9leG4gYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X2V4biB+Y29tcGFyYXRvciBhbGlzdFxuICBsZXQgb2ZfaGFzaHRibF9leG4gaGFzaHRibCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9leG4gfmNvbXBhcmF0b3IgaGFzaHRibFxuICBsZXQgb2ZfYWxpc3RfbXVsdGkgYWxpc3QgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X211bHRpIH5jb21wYXJhdG9yIGFsaXN0XG5cbiAgbGV0IG9mX2FsaXN0X2ZvbGQgYWxpc3QgfmluaXQgfmYgPVxuICAgIFVzaW5nX2NvbXBhcmF0b3Iub2ZfYWxpc3RfZm9sZCB+Y29tcGFyYXRvciBhbGlzdCB+aW5pdCB+ZlxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9yZWR1Y2UgYWxpc3QgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2FsaXN0X3JlZHVjZSB+Y29tcGFyYXRvciBhbGlzdCB+ZlxuICBsZXQgb2ZfaXRlcmkgfml0ZXJpID0gVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+Y29tcGFyYXRvciB+aXRlcmlcbiAgbGV0IG9mX2l0ZXJpX2V4biB+aXRlcmkgPSBVc2luZ19jb21wYXJhdG9yLm9mX2l0ZXJpX2V4biB+Y29tcGFyYXRvciB+aXRlcmlcblxuICBsZXQgdF9vZl9zZXhwIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci50X29mX3NleHBfZGlyZWN0IH5jb21wYXJhdG9yIGtfb2Zfc2V4cCB2X29mX3NleHAgc2V4cFxuICA7O1xuXG4gIGxldCBvZl9rZXlfc2V0IGtleV9zZXQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm9mX2tleV9zZXQga2V5X3NldCB+ZlxuICBsZXQgbWFwX2tleXMgdCB+ZiA9IFVzaW5nX2NvbXBhcmF0b3IubWFwX2tleXMgfmNvbXBhcmF0b3IgdCB+ZlxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBVc2luZ19jb21wYXJhdG9yLm1hcF9rZXlzX2V4biB+Y29tcGFyYXRvciB0IH5mXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGdlbl9rIGdlbl92ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGdlbl9rIGdlbl92XG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZV9TMSAoS2V5IDogQ29tcGFyYXRvci5TMSkgPSBzdHJ1Y3RcbiAgb3BlbiBUcmVlXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBLZXkuY29tcGFyYXRvclxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG4gIGxldCB0X29mX3NleHAgYSBiIGMgPSB0X29mX3NleHBfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlbXB0eSA9IGVtcHR5X3dpdGhvdXRfdmFsdWVfcmVzdHJpY3Rpb25cbiAgbGV0IG9mX3RyZWUgdHJlZSA9IHRyZWVcbiAgbGV0IHNpbmdsZXRvbiBhID0gc2luZ2xldG9uIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSA9IG9mX3NvcnRlZF9hcnJheV91bmNoZWNrZWQgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5IGEgPSBvZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX2luY3JlYXNpbmdfc2VxdWVuY2Ugc2VxID0gb2ZfaW5jcmVhc2luZ19zZXF1ZW5jZSB+Y29tcGFyYXRvciBzZXFcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBvZl9zZXF1ZW5jZSBzIH5jb21wYXJhdG9yXG4gIGxldCBvZl9zZXF1ZW5jZV9vcl9lcnJvciBzID0gb2Zfc2VxdWVuY2Vfb3JfZXJyb3IgcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfZXhuIHMgPSBvZl9zZXF1ZW5jZV9leG4gcyB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfbXVsdGkgcyA9IG9mX3NlcXVlbmNlX211bHRpIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiA9IG9mX3NlcXVlbmNlX2ZvbGQgcyB+aW5pdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc2VxdWVuY2VfcmVkdWNlIHMgfmYgPSBvZl9zZXF1ZW5jZV9yZWR1Y2UgcyB+ZiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYWxpc3QgYSA9IG9mX2FsaXN0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X29yX2Vycm9yIGEgPSBvZl9hbGlzdF9vcl9lcnJvciBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9leG4gYSA9IG9mX2FsaXN0X2V4biBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9oYXNodGJsX2V4biBhID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2hhc2h0YmxfZXhuIGEgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X211bHRpIGEgPSBvZl9hbGlzdF9tdWx0aSBhIH5jb21wYXJhdG9yXG4gIGxldCBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgPSBvZl9hbGlzdF9mb2xkIGEgfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2FsaXN0X3JlZHVjZSBhIH5mID0gb2ZfYWxpc3RfcmVkdWNlIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2l0ZXJpIH5pdGVyaSA9IG9mX2l0ZXJpIH5pdGVyaSB+Y29tcGFyYXRvclxuICBsZXQgb2ZfaXRlcmlfZXhuIH5pdGVyaSA9IG9mX2l0ZXJpX2V4biB+aXRlcmkgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2tleV9zZXQgPSBVc2luZ19jb21wYXJhdG9yLnRyZWVfb2Zfa2V5X3NldFxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgaW52YXJpYW50cyBhID0gaW52YXJpYW50cyBhIH5jb21wYXJhdG9yXG4gIGxldCBpc19lbXB0eSBhID0gaXNfZW1wdHkgYVxuICBsZXQgbGVuZ3RoIGEgPSBsZW5ndGggYVxuICBsZXQgc2V0IGEgfmtleSB+ZGF0YSA9IHNldCBhIH5rZXkgfmRhdGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZCBhIH5rZXkgfmRhdGEgPSBhZGQgYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGRfZXhuIGEgfmtleSB+ZGF0YSA9IGFkZF9leG4gYSB+a2V5IH5kYXRhIH5jb21wYXJhdG9yXG4gIGxldCBhZGRfbXVsdGkgYSB+a2V5IH5kYXRhID0gYWRkX211bHRpIGEgfmtleSB+ZGF0YSB+Y29tcGFyYXRvclxuICBsZXQgcmVtb3ZlX211bHRpIGEgYiA9IHJlbW92ZV9tdWx0aSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbmRfbXVsdGkgYSBiID0gZmluZF9tdWx0aSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGNoYW5nZSBhIGIgfmYgPSBjaGFuZ2UgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCB1cGRhdGUgYSBiIH5mID0gdXBkYXRlIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmluZF9leG4gYSBiID0gZmluZF9leG4gYSBiIH5jb21wYXJhdG9yXG4gIGxldCBmaW5kIGEgYiA9IGZpbmQgYSBiIH5jb21wYXJhdG9yXG4gIGxldCByZW1vdmUgYSBiID0gcmVtb3ZlIGEgYiB+Y29tcGFyYXRvclxuICBsZXQgbWVtIGEgYiA9IG1lbSBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGl0ZXJfa2V5cyA9IGl0ZXJfa2V5c1xuICBsZXQgaXRlciA9IGl0ZXJcbiAgbGV0IGl0ZXJpID0gaXRlcmlcbiAgbGV0IGl0ZXJpX3VudGlsID0gaXRlcmlfdW50aWxcbiAgbGV0IGl0ZXIyIGEgYiB+ZiA9IGl0ZXIyIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWFwID0gbWFwXG4gIGxldCBtYXBpID0gbWFwaVxuICBsZXQgZm9sZCA9IGZvbGRcbiAgbGV0IGZvbGRfdW50aWwgPSBmb2xkX3VudGlsXG4gIGxldCBmb2xkX3JpZ2h0ID0gZm9sZF9yaWdodFxuICBsZXQgZm9sZDIgYSBiIH5pbml0IH5mID0gZm9sZDIgYSBiIH5pbml0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfa2V5cyBhIH5mID0gZmlsdGVyX2tleXMgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyIGEgfmYgPSBmaWx0ZXIgYSB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZmlsdGVyaSBhIH5mID0gZmlsdGVyaSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXJfbWFwIGEgfmYgPSBmaWx0ZXJfbWFwIGEgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9tYXBpIGEgfmYgPSBmaWx0ZXJfbWFwaSBhIH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25fbWFwaSB0IH5mID0gcGFydGl0aW9uX21hcGkgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcGFydGl0aW9uX21hcCB0IH5mID0gcGFydGl0aW9uX21hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25pX3RmIHQgfmYgPSBwYXJ0aXRpb25pX3RmIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IHBhcnRpdGlvbl90ZiB0IH5mID0gcGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbWJpbmVfZXJyb3JzIHQgPSBjb21iaW5lX2Vycm9ycyB0IH5jb21wYXJhdG9yXG4gIGxldCBjb21wYXJlX2RpcmVjdCBhIGIgYyA9IGNvbXBhcmVfZGlyZWN0IGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBlcXVhbCBhIGIgYyA9IGVxdWFsIGEgYiBjIH5jb21wYXJhdG9yXG4gIGxldCBrZXlzID0ga2V5c1xuICBsZXQgZGF0YSA9IGRhdGFcbiAgbGV0IHRvX2FsaXN0ID0gdG9fYWxpc3RcbiAgbGV0IHZhbGlkYXRlIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmFsaXN0IH5uYW1lIGYgKHRvX2FsaXN0IHQpXG4gIGxldCB2YWxpZGF0ZWkgfm5hbWUgZiB0ID0gVmFsaWRhdGUubGlzdCB+bmFtZTooRm4uY29tcG9zZSBuYW1lIGZzdCkgZiAodG9fYWxpc3QgdClcbiAgbGV0IHN5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCA9IHN5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+Y29tcGFyYXRvclxuXG4gIGxldCBmb2xkX3N5bW1ldHJpY19kaWZmIGEgYiB+ZGF0YV9lcXVhbCB+aW5pdCB+ZiA9XG4gICAgZm9sZF9zeW1tZXRyaWNfZGlmZiBhIGIgfmRhdGFfZXF1YWwgfmYgfmluaXQgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgbWVyZ2UgYSBiIH5mID0gbWVyZ2UgYSBiIH5mIH5jb21wYXJhdG9yXG4gIGxldCBtZXJnZV9za2V3ZWQgYSBiIH5jb21iaW5lID0gbWVyZ2Vfc2tld2VkIGEgYiB+Y29tYmluZSB+Y29tcGFyYXRvclxuICBsZXQgbWluX2VsdCA9IG1pbl9lbHRcbiAgbGV0IG1pbl9lbHRfZXhuID0gbWluX2VsdF9leG5cbiAgbGV0IG1heF9lbHQgPSBtYXhfZWx0XG4gIGxldCBtYXhfZWx0X2V4biA9IG1heF9lbHRfZXhuXG4gIGxldCBmb3JfYWxsID0gZm9yX2FsbFxuICBsZXQgZm9yX2FsbGkgPSBmb3JfYWxsaVxuICBsZXQgZXhpc3RzID0gZXhpc3RzXG4gIGxldCBleGlzdHNpID0gZXhpc3RzaVxuICBsZXQgY291bnQgPSBjb3VudFxuICBsZXQgY291bnRpID0gY291bnRpXG4gIGxldCBzcGxpdCBhIGIgPSBzcGxpdCBhIGIgfmNvbXBhcmF0b3JcbiAgbGV0IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCA9IGFwcGVuZCB+bG93ZXJfcGFydCB+dXBwZXJfcGFydCB+Y29tcGFyYXRvclxuXG4gIGxldCBzdWJyYW5nZSB0IH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgPVxuICAgIHN1YnJhbmdlIHQgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZCB+Y29tcGFyYXRvclxuICA7O1xuXG4gIGxldCBmb2xkX3JhbmdlX2luY2x1c2l2ZSB0IH5taW4gfm1heCB+aW5pdCB+ZiA9XG4gICAgZm9sZF9yYW5nZV9pbmNsdXNpdmUgdCB+bWluIH5tYXggfmluaXQgfmYgfmNvbXBhcmF0b3JcbiAgOztcblxuICBsZXQgcmFuZ2VfdG9fYWxpc3QgdCB+bWluIH5tYXggPSByYW5nZV90b19hbGlzdCB0IH5taW4gfm1heCB+Y29tcGFyYXRvclxuICBsZXQgY2xvc2VzdF9rZXkgYSBiIGMgPSBjbG9zZXN0X2tleSBhIGIgYyB+Y29tcGFyYXRvclxuICBsZXQgbnRoID0gbnRoXG4gIGxldCBudGhfZXhuID0gbnRoX2V4blxuICBsZXQgcmFuayBhIGIgPSByYW5rIGEgYiB+Y29tcGFyYXRvclxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2tleXNfZ3JlYXRlcl9vcl9lcXVhbF90byA/a2V5c19sZXNzX29yX2VxdWFsX3RvIHQgPVxuICAgIHRvX3NlcXVlbmNlIH5jb21wYXJhdG9yID9vcmRlciA/a2V5c19ncmVhdGVyX29yX2VxdWFsX3RvID9rZXlzX2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBiaW5hcnlfc2VhcmNoIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgaG93IHZcblxuICBsZXQgYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdCB+c2VnbWVudF9vZiBob3cgPVxuICAgIGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkIH5jb21wYXJhdG9yIHQgfnNlZ21lbnRfb2YgaG93XG4gIDs7XG5cbiAgbGV0IGJpbmFyeV9zZWFyY2hfc3VicmFuZ2UgdCB+Y29tcGFyZSB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kID1cbiAgICBiaW5hcnlfc2VhcmNoX3N1YnJhbmdlIH5jb21wYXJhdG9yIHQgfmNvbXBhcmUgfmxvd2VyX2JvdW5kIH51cHBlcl9ib3VuZFxuICA7O1xuXG4gIGxldCBrZXlfc2V0IHQgPSBVc2luZ19jb21wYXJhdG9yLmtleV9zZXRfb2ZfdHJlZSB+Y29tcGFyYXRvciB0XG4gIGxldCBtYXBfa2V5cyB0IH5mID0gbWFwX2tleXMgdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgbWFwX2tleXNfZXhuIHQgfmYgPSBtYXBfa2V5c19leG4gdCB+ZiB+Y29tcGFyYXRvclxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgfmNvbXBhcmF0b3IgayB2XG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGsgdiA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGsgdlxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSB+Y29tcGFyYXRvciBrIHZcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleV9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoS2V5KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoS2V5X1MxKVxuXG4gIHR5cGUgKyd2IHQgPSAoS2V5LnQsICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcblxuICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfdiB0ID0gc2V4cF9vZl90IEtleS5zZXhwX29mX3Qgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuXG4gIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgIChYIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPVxuICBzdHJ1Y3RcbiAgICBsZXQgdF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIFgudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWUgKEtleSA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfdHJlZV9wbGFpbiAoS2V5KVxuICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuZW5kXG5cbigqIERvbid0IHVzZSBbb2Zfc29ydGVkX2FycmF5XSB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbiBvZiBhbiBpbnRlcm1lZGlhdGUgYXJyYXkgKilcbmxldCBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mIH5jb21wYXJhdG9yID1cbiAgbGV0IG1hcCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiB+Y29tcGFyYXRvciBpblxuICBpZiBpbnZhcmlhbnRzIG1hcFxuICB0aGVuIG1hcFxuICBlbHNlIChcbiAgICAoKiBUaGUgaW52YXJpYW50cyBhcmUgYnJva2VuLCBidXQgd2UgY2FuIHN0aWxsIHRyYXZlcnNlIHRoZSBzdHJ1Y3R1cmUuICopXG4gICAgbWF0Y2ggVXNpbmdfY29tcGFyYXRvci5vZl9pdGVyaSB+aXRlcmk6KGl0ZXJpIG1hcCkgfmNvbXBhcmF0b3Igd2l0aFxuICAgIHwgYE9rIG1hcCAtPiBtYXBcbiAgICB8IGBEdXBsaWNhdGVfa2V5IF9rZXkgLT4gZmFpbHdpdGggXCJNYXAuYmluX3JlYWRfdDogZHVwbGljYXRlIGVsZW1lbnQgaW4gbWFwXCIpXG47O1xuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBpbmNsdWRlIENyZWF0b3JzIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgbWFwID0gKCdhLCAnYiwgJ2MpIHRcbiAgdHlwZSAoJ2ssICd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgbWFwXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyBjbXB2IHQxIHQyID0gY29tcGFyZV9kaXJlY3QgY21wdiB0MSB0MlxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiB0ID1cbiAgICBVc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IFslc2V4cF9vZjogX10gdFxuICA7O1xuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgKExpc3QuQXNzb2MudF9zZXhwX2dyYW1tYXIga19ncmFtbWFyIHZfZ3JhbW1hcilcbiAgOztcblxuICBpbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIHRcbiAgICAgIHR5cGUgKCdhLCAnYikgZWwgPSAnYSAqICdiIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjdkN2IxYTAtNDk5Mi0xMWU2LThhMzItYmJiMjIxZmEwMjVjXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLk1hcFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT4gZiAoa2V5LCBkYXRhKSlcblxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgICA7O1xuICAgIGVuZClcblxuICBtb2R1bGUgVHJlZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZV90cmVlX1MxIChDb21wYXJhdG9yLlBvbHkpXG5cbiAgICB0eXBlICgnaywgKyd2KSB0ID0gKCdrLCAndiwgQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdHJlZVxuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQ29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2sgc2V4cF9vZl92IHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIHNleHBfb2ZfdiBbJXNleHBfb2Y6IF9dIHRcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyID1cbiAgICAgIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoTGlzdC5Bc3NvYy50X3NleHBfZ3JhbW1hciBrX2dyYW1tYXIgdl9ncmFtbWFyKVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEtleV9wbGFpbiA9IEtleV9wbGFpblxubW9kdWxlIHR5cGUgS2V5ID0gS2V5XG5tb2R1bGUgdHlwZSBLZXlfYmluYWJsZSA9IEtleV9iaW5hYmxlXG5tb2R1bGUgdHlwZSBLZXlfaGFzaGFibGUgPSBLZXlfaGFzaGFibGVcbm1vZHVsZSB0eXBlIEtleV9iaW5hYmxlX2hhc2hhYmxlID0gS2V5X2JpbmFibGVfaGFzaGFibGVcbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBLZXlfYmluX2lvID0gS2V5X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEtleSA6IEtleV9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUxIChzdHJ1Y3RcbiAgICBtb2R1bGUgS2V5ID0gS2V5XG5cbiAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEtleS50LCAndiwgS2V5LmNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuICAgIHR5cGUgJ3YgZWwgPSBLZXkudCAqICd2IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBfID0gYmluX2VsXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiZGZiMzAwZjgtNDk5Mi0xMWU2LTljMTUtNzNhMmFjNmI4MTVjXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTWFwXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGYgKGtleSwgZGF0YSkpXG5cbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmY6KGZ1biBfIC0+IG5leHQgKCkpIH5jb21wYXJhdG9yOktleS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IEtleVxuICBtb2R1bGUgS2V5X1MxID0gQ29tcGFyYXRvci5TX3RvX1MxIChLZXkpXG4gIGluY2x1ZGUgQ3JlYXRvcnMgKEtleV9TMSlcblxuICB0eXBlIGtleSA9IEtleS50XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIG1hcCA9ICgnYSwgJ2IsICdjKSB0XG4gIHR5cGUgJ3YgdCA9IChrZXksICd2LCBLZXkuY29tcGFyYXRvcl93aXRuZXNzKSBtYXBcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIGNtcHYgdDEgdDIgPSBjb21wYXJlX2RpcmVjdCBjbXB2IHQxIHQyXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX3YgdCA9XG4gICAgVXNpbmdfY29tcGFyYXRvci5zZXhwX29mX3QgS2V5LnNleHBfb2ZfdCBzZXhwX29mX3YgWyVzZXhwX29mOiBfXSB0XG4gIDs7XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEtleSA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gS2V5LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCB2X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cCBLZXkudF9vZl9zZXhwIHZfb2Zfc2V4cCBzZXhwXG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2hhc2ggKEtleScgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBLZXkudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3QgKHR5cGUgYSkgaGFzaF9mb2xkX2RhdGEgc3RhdGUgKHQgOiBhIHQpID1cbiAgICAgIFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBLZXknLmhhc2hfZm9sZF90IGhhc2hfZm9sZF9kYXRhIHN0YXRlIHRcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChLZXknIDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgIGVuZFxuICAgICAgIHdpdGggdHlwZSB0IDo9IEtleS50KSA9XG4gICAgUHJvdmlkZV9iaW5faW8gKHN0cnVjdFxuICAgICAgaW5jbHVkZSBLZXlcbiAgICAgIGluY2x1ZGUgS2V5J1xuICAgIGVuZClcbmVuZFxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoS2V5IDogS2V5X3BsYWluKSA9IE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChLZXlfc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9zZXhwXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChLZXkpXG5cbiAgbW9kdWxlIF8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRyZWVcbiAgICBpbmNsdWRlIFByb3ZpZGVfb2Zfc2V4cCAoS2V5KVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoS2V5IDogS2V5KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBLZXlcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoS2V5KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEtleV9iaW5fc2V4cClcbiAgbW9kdWxlIEtleSA9IEtleV9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChLZXkpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoS2V5IDogS2V5X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgS2V5XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEtleSlcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gTWFwLk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBLZXlfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgayBjbXApXG4gICAgICAgIChtb2R1bGUgS2V5IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0ga1xuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfZ2VuZXJhdG9yXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgS2V5KSBLZXkucXVpY2tjaGVja19nZW5lcmF0b3Igdl9nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIGsgY21wKVxuICAgICAgICAobW9kdWxlIEtleSA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0ga1xuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZfb2JzZXJ2ZXJcbiAgICA9XG4gICAgcXVpY2tjaGVja19vYnNlcnZlciBLZXkucXVpY2tjaGVja19vYnNlcnZlciB2X29ic2VydmVyXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXJfbV9fdFxuICAgICAgICAodHlwZSBrIGNtcClcbiAgICAgICAgKG1vZHVsZSBLZXkgOiBRdWlja2NoZWNrX3Nocmlua2VyX21cbiAgICAgICAgICB3aXRoIHR5cGUgdCA9IGtcbiAgICAgICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2X3Nocmlua2VyXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgS2V5LnF1aWNrY2hlY2tfc2hyaW5rZXIgdl9zaHJpbmtlclxuICA7O1xuXG4gIG1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IE1hcC5Gb3JfZGVyaXZpbmdcblxuICBpbmNsdWRlIChNYXAgOiBGb3JfZGVyaXZpbmcgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0KVxuZW5kXG5cbmluY2x1ZGUgRm9yX2Rlcml2aW5nXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB2YWxpZGF0ZSB+bmFtZSBmIHQgPSBWYWxpZGF0ZS5hbGlzdCB+bmFtZSBmICh0b19hbGlzdCB0KVxuICBsZXQgdmFsaWRhdGVpIH5uYW1lIGYgdCA9IFZhbGlkYXRlLmxpc3Qgfm5hbWU6KEZuLmNvbXBvc2UgbmFtZSBmc3QpIGYgKHRvX2FsaXN0IHQpXG4gIGxldCBvZl9oYXNodGJsX2V4biA9IFVzaW5nX2NvbXBhcmF0b3IudHJlZV9vZl9oYXNodGJsX2V4blxuICBsZXQga2V5X3NldCA9IFVzaW5nX2NvbXBhcmF0b3Iua2V5X3NldF9vZl90cmVlXG4gIGxldCBvZl9rZXlfc2V0ID0gVXNpbmdfY29tcGFyYXRvci50cmVlX29mX2tleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGsgdiA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlIH5jb21wYXJhdG9yIGsgdlxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlciBrIHYgPSBGb3JfcXVpY2tjaGVjay5vYnNfdHJlZSBrIHZcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgfmNvbXBhcmF0b3IgayB2ID0gRm9yX3F1aWNrY2hlY2suc2hyX3RyZWUgfmNvbXBhcmF0b3IgayB2XG5lbmRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCkgdFxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBrZXlcbiAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gKGtleSwgJ2EsIGNvbXBhcmF0b3Jfd2l0bmVzcykgdFxuXG4gICAgICBpbmNsdWRlIFN0YWJsZV9tb2R1bGVfdHlwZXMuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoS2V5KVxuICBlbmRcblxuICBtb2R1bGUgU3ltbWV0cmljX2RpZmZfZWxlbWVudCA9IFN5bW1ldHJpY19kaWZmX2VsZW1lbnQuU3RhYmxlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEJhc2UuTWF5YmVfYm91bmQudCA9XG4gICAgICB8IEluY2wgb2YgJ2FcbiAgICAgIHwgRXhjbCBvZiAnYVxuICAgICAgfCBVbmJvdW5kZWRcbiAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgICBsZXQgbWFwIHggfmYgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IEluY2wgeCAtPiBJbmNsIChmIHgpXG4gICAgICB8IEV4Y2wgeCAtPiBFeGNsIChmIHgpXG4gICAgICB8IFVuYm91bmRlZCAtPiBVbmJvdW5kZWRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIEJhc2UuTWF5YmVfYm91bmRcblxudHlwZSAnYSB0ID0gJ2EgU3RhYmxlLlYxLnQgPVxuICB8IEluY2wgb2YgJ2FcbiAgfCBFeGNsIG9mICdhXG4gIHwgVW5ib3VuZGVkXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHF1aWNrY2hlY2ssIHNleHBdXG5cbmxldCBjb21wYXJlX29uZV9zaWRlZCB+c2lkZSBjb21wYXJlX2EgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IFVuYm91bmRlZCwgVW5ib3VuZGVkIC0+IDBcbiAgfCBVbmJvdW5kZWQsIF8gLT5cbiAgICAobWF0Y2ggc2lkZSB3aXRoXG4gICAgIHwgYExvd2VyIC0+IC0xXG4gICAgIHwgYFVwcGVyIC0+IDEpXG4gIHwgXywgVW5ib3VuZGVkIC0+XG4gICAgKG1hdGNoIHNpZGUgd2l0aFxuICAgICB8IGBMb3dlciAtPiAxXG4gICAgIHwgYFVwcGVyIC0+IC0xKVxuICB8IEluY2wgYTEsIEluY2wgYTIgLT4gY29tcGFyZV9hIGExIGEyXG4gIHwgRXhjbCBhMSwgRXhjbCBhMiAtPiBjb21wYXJlX2EgYTEgYTJcbiAgfCBJbmNsIGExLCBFeGNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAtMVxuICAgICAgfCBgVXBwZXIgLT4gMSlcbiAgICBlbHNlIGNcbiAgfCBFeGNsIGExLCBJbmNsIGEyIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlX2EgYTEgYTIgaW5cbiAgICBpZiBjID0gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggc2lkZSB3aXRoXG4gICAgICB8IGBMb3dlciAtPiAxXG4gICAgICB8IGBVcHBlciAtPiAtMSlcbiAgICBlbHNlIGNcbjs7XG5cbm1vZHVsZSBBc19sb3dlcl9ib3VuZCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGxldCBjb21wYXJlIGNvbXBhcmVfYSB0MSB0MiA9IGNvbXBhcmVfb25lX3NpZGVkIH5zaWRlOmBMb3dlciBjb21wYXJlX2EgdDEgdDJcbmVuZFxuXG5tb2R1bGUgQXNfdXBwZXJfYm91bmQgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBsZXQgY29tcGFyZSBjb21wYXJlX2EgdDEgdDIgPSBjb21wYXJlX29uZV9zaWRlZCB+c2lkZTpgVXBwZXIgY29tcGFyZV9hIHQxIHQyXG5lbmRcbiIsIigqKiBUaGlzIG1vZHVsZSBkZWZpbmVzIGludGVyZmFjZXMgdXNlZCBpbiB7eyFDb3JlLlNldH1bU2V0XX0uIFNlZSB0aGVcbiAgICB7IU1hcH0gZG9jcyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZGVzaWduLlxuXG4gICAgVGhpcyBtb2R1bGUgZGVmaW5lcyBtb2R1bGUgdHlwZXNcbiAgICBbe0NyZWF0b3JzLEFjY2Vzc29yc317MCwxLDIsX2dlbmVyaWMsX3dpdGhfY29tcGFyYXRvcn1dLiBJdCB1c2VzIGNoZWNrIGZ1bmN0b3JzIHRvXG4gICAgZW5zdXJlIHRoYXQgZWFjaCBtb2R1bGUgdHlwZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgY29ycmVzcG9uZGluZyBbX2dlbmVyaWNdIG9uZS5cblxuICAgIFdlIG11c3QgdHJlYXQgW0NyZWF0b3JzXSBhbmQgW0FjY2Vzc29yc10gc2VwYXJhdGVseSwgYmVjYXVzZSB3ZSBzb21ldGltZXMgbmVlZCB0b1xuICAgIGNob29zZSBkaWZmZXJlbnQgaW5zdGFudGlhdGlvbnMgb2YgdGhlaXIgW29wdGlvbnNdLiBJbiBwYXJ0aWN1bGFyLCBbU2V0XSBpdHNlbGZcbiAgICBtYXRjaGVzIFtDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yXSBidXQgW0FjY2Vzc29yczJdICh3aXRob3V0IGNvbXBhcmF0b3IpLlxuKilcblxuKCpcbiAgIENScyBhbmQgY29tbWVudHMgYWJvdXQgW1NldF0gZnVuY3Rpb25zIGRvIG5vdCBiZWxvbmcgaW4gdGhpcyBmaWxlLiAgVGhleSBiZWxvbmcgbmV4dFxuICAgdG8gdGhlIGFwcHJvcHJpYXRlIGZ1bmN0aW9uIGluIHNldC5tbGkuXG4qKVxuXG5vcGVuISBJbXBvcnRcbm9wZW4gVFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlMFxubW9kdWxlIFNldCA9IEJhc2UuU2V0XG5tb2R1bGUgVHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLlRyZWVcbm1vZHVsZSBOYW1lZCA9IFNldC5OYW1lZFxubW9kdWxlIENvbnRhaW5lciA9IEJhc2UuQ29udGFpbmVyXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IFNldC5FbHRfcGxhaW5cblxubW9kdWxlIHR5cGUgRWx0ID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSB0eXBlIEVsdF9iaW5hYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5lbmRcblxubW9kdWxlIEVsdF9iaW5faW8gPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIHZhbCBjb21wYXJhdG9yIDogKHQsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQ29tcGFyYXRvci50XG4gIGVuZFxuXG4gIHR5cGUgKCd0LCAnYykgdCA9IChtb2R1bGUgUyB3aXRoIHR5cGUgdCA9ICd0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjKVxuZW5kXG5cbm1vZHVsZSB0eXBlIEZvcl9kZXJpdmluZyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuU2V0LkZvcl9kZXJpdmluZ1xuICBtb2R1bGUgTSA9IEJhc2UuU2V0Lk1cblxuICAoKiogVGhlIGZvbGxvd2luZyBbKmJpbipdIGZ1bmN0aW9ucyBzdXBwb3J0IGJpbi1pbyBvbiBiYXNlLXN0eWxlIHNldHMsIGUuZy46XG5cbiAgICAgIHtbIHR5cGUgdCA9IFNldC5NKFN0cmluZykudCBbQEBkZXJpdmluZyBiaW5faW9dIF19ICopXG5cbiAgdmFsIGJpbl9zaGFwZV9tX190IDogKCdhLCAnYikgRWx0X2Jpbl9pby50IC0+IEJpbl9wcm90LlNoYXBlLnRcbiAgdmFsIGJpbl9zaXplX21fX3QgOiAoJ2EsICdiKSBFbHRfYmluX2lvLnQgLT4gKCdhLCAnYikgdCBCaW5fcHJvdC5TaXplLnNpemVyXG4gIHZhbCBiaW5fd3JpdGVfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LldyaXRlLndyaXRlclxuICB2YWwgYmluX3JlYWRfbV9fdCA6ICgnYSwgJ2IpIEVsdF9iaW5faW8udCAtPiAoJ2EsICdiKSB0IEJpbl9wcm90LlJlYWQucmVhZGVyXG5cbiAgdmFsIF9fYmluX3JlYWRfbV9fdF9fXG4gICAgOiAgKCdhLCAnYikgRWx0X2Jpbl9pby50XG4gICAgLT4gKGludCAtPiAoJ2EsICdiKSB0KSBCaW5fcHJvdC5SZWFkLnJlYWRlclxuXG4gICgqKiBUaGUgZm9sbG93aW5nIFtxdWlja2NoZWNrKl0gZnVuY3Rpb25zIHN1cHBvcnQgZGVyaXZpbmcgcXVpY2tjaGVjayBvbiBiYXNlLXN0eWxlXG4gICAgICBzZXRzLCBlLmcuOlxuXG4gICAgICB7WyB0eXBlIHQgPSBTZXQuTShTdHJpbmcpLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja10gXX0gKilcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX2dlbmVyYXRvcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX29ic2VydmVyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBRdWlja2NoZWNrX3Nocmlua2VyX20gPSBzaWdcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU1xuXG4gICAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuICBlbmRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JfbV9fdFxuICAgIDogIChtb2R1bGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSB3aXRoIHR5cGUgdCA9ICdhIGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9ICdjbXApXG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX29ic2VydmVyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcblxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgOiAgKG1vZHVsZSBRdWlja2NoZWNrX3Nocmlua2VyX20gd2l0aCB0eXBlIHQgPSAnYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbmVuZFxuXG5tb2R1bGUgV2l0aG91dF9jb21wYXJhdG9yID0gU2V0LldpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIFdpdGhfY29tcGFyYXRvciA9IFNldC5XaXRoX2NvbXBhcmF0b3Jcbm1vZHVsZSBXaXRoX2ZpcnN0X2NsYXNzX21vZHVsZSA9IFNldC5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZVxubW9kdWxlIENvbnRpbnVlX29yX3N0b3AgPSBDb250YWluZXIuQ29udGludWVfb3Jfc3RvcFxubW9kdWxlIE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnQgPSBTZXF1ZW5jZS5NZXJnZV93aXRoX2R1cGxpY2F0ZXNfZWxlbWVudFxuXG5tb2R1bGUgdHlwZSBBY2Nlc3NvcnNfZ2VuZXJpYyA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnNfZ2VuZXJpY1xuXG4gIHZhbCB0b19tYXBcbiAgICA6ICggJ2FcbiAgICAgICwgJ2NtcFxuICAgICAgLCAoJ2EsICdjbXApIHQgLT4gZjooJ2EgZWx0IC0+ICdiKSAtPiAoJ2EgZWx0LCAnYiwgJ2NtcCBjbXApIEJhc2UuTWFwLnQgKVxuICAgICAgICBvcHRpb25zXG5cbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgICA6ICAnYSBlbHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuXG4gIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50IClcbiAgICAgICAgb3B0aW9uc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczAgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMFxuXG4gIHZhbCB0b19tYXAgOiB0IC0+IGY6KGVsdCAtPiAnZGF0YSkgLT4gKGVsdCwgJ2RhdGEsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5NYXAudFxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6IGVsdCBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXIgOiBlbHQgUXVpY2tjaGVjay5TaHJpbmtlci50IC0+IHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMSA9IHNpZ1xuICBpbmNsdWRlIFNldC5BY2Nlc3NvcnMxXG5cbiAgdmFsIHRvX21hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IsIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5NYXAudFxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6ICdhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiAnYSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6ICdhIFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAnYSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFjY2Vzc29yczIgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMlxuXG4gIHZhbCB0b19tYXAgOiAoJ2EsICdjbXApIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IsICdjbXApIEJhc2UuTWFwLnRcbiAgdmFsIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgOiAnYSBRdWlja2NoZWNrLk9ic2VydmVyLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suT2JzZXJ2ZXIudFxuICB2YWwgcXVpY2tjaGVja19zaHJpbmtlciA6ICdhIFF1aWNrY2hlY2suU2hyaW5rZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5TaHJpbmtlci50XG5lbmRcblxubW9kdWxlIHR5cGUgQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICB2YWwgdG9fbWFwXG4gICAgOiAgY29tcGFyYXRvcjooJ2EsICdjbXApIENvbXBhcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuICAgIC0+IGY6KCdhIC0+ICdiKVxuICAgIC0+ICgnYSwgJ2IsICdjbXApIEJhc2UuTWFwLnRcblxuICB2YWwgcXVpY2tjaGVja19vYnNlcnZlciA6ICdhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCAtPiAoJ2EsICdjbXApIHQgUXVpY2tjaGVjay5PYnNlcnZlci50XG5cbiAgdmFsIHF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgUXVpY2tjaGVjay5TaHJpbmtlci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suU2hyaW5rZXIudFxuZW5kXG5cbigqKiBDb25zaXN0ZW5jeSBjaGVja3MgKHNhbWUgYXMgaW4gW0NvbnRhaW5lcl0pLiAqKVxubW9kdWxlIENoZWNrX2FjY2Vzc29yc1xuICAgIChUIDogVDIpXG4gICAgKFRyZWUgOiBUMilcbiAgICAoRWx0IDogVDEpXG4gICAgKE5hbWVkIDogVDIpXG4gICAgKENtcCA6IFQxKVxuICAgIChPcHRpb25zIDogVDMpXG4gICAgKF8gOiBBY2Nlc3NvcnNfZ2VuZXJpY1xuICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIE9wdGlvbnMudFxuICAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBULnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgIHdpdGggdHlwZSAnYSBlbHQgOj0gJ2EgRWx0LnRcbiAgICAgd2l0aCB0eXBlICdjbXAgY21wIDo9ICdjbXAgQ21wLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnQpID1cbnN0cnVjdCBlbmRcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczAgKE0gOiBBY2Nlc3NvcnMwKSA9XG4gIENoZWNrX2FjY2Vzc29yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9IE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gTS5lbHRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS5uYW1lZFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfYWNjZXNzb3JzMSAoTSA6IEFjY2Vzc29yczEpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gJ2EgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kKVxuICAgIChXaXRob3V0X2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSBDaGVja19hY2Nlc3NvcnMyIChNIDogQWNjZXNzb3JzMikgPVxuICBDaGVja19hY2Nlc3NvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0ubmFtZWRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2FjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yIChNIDogQWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3IpID1cbiAgQ2hlY2tfYWNjZXNzb3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBNLm5hbWVkXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhXG4gICAgZW5kKVxuICAgIChXaXRoX2NvbXBhcmF0b3IpXG4gICAgKE0pXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2dlbmVyaWMgPSBzaWdcbiAgaW5jbHVkZSBTZXQuQ3JlYXRvcnNfZ2VuZXJpY1xuXG4gIHZhbCBvZl9oYXNoX3NldCA6ICgnYSwgJ2NtcCwgJ2EgZWx0IEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0KSBvcHRpb25zXG4gIHZhbCBvZl9oYXNodGJsX2tleXMgOiAoJ2EsICdjbXAsICgnYSBlbHQsIF8pIEhhc2h0YmwudCAtPiAoJ2EsICdjbXApIHQpIG9wdGlvbnNcblxuICAoKiogTmV2ZXIgcmVxdWlyZXMgYSBjb21wYXJhdG9yIGJlY2F1c2UgaXQgY2FuIGdldCBvbmUgZnJvbSB0aGUgaW5wdXQgW01hcC50XS4gKilcbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhIGVsdCwgXywgJ2NtcCBjbXApIEJhc2UuTWFwLnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIHF1aWNrY2hlY2tfZ2VuZXJhdG9yXG4gICAgOiAoICdhXG4gICAgICAsICdjbXBcbiAgICAgICwgJ2EgZWx0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgKVxuICAgICAgICBvcHRpb25zXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnMwID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzMFxuXG4gIHZhbCBvZl9oYXNoX3NldCA6IGVsdCBIYXNoX3NldC50IC0+IHRcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6IChlbHQsIF8pIEhhc2h0YmwudCAtPiB0XG4gIHZhbCBvZl9tYXBfa2V5cyA6IChlbHQsIF8sIGNvbXBhcmF0b3Jfd2l0bmVzcykgQmFzZS5NYXAudCAtPiB0XG4gIHZhbCBxdWlja2NoZWNrX2dlbmVyYXRvciA6IGVsdCBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMSA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yczFcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAnYSBIYXNoX3NldC50IC0+ICdhIHRcbiAgdmFsIG9mX2hhc2h0Ymxfa2V5cyA6ICgnYSwgXykgSGFzaHRibC50IC0+ICdhIHRcbiAgdmFsIG9mX21hcF9rZXlzIDogKCdhLCBfLCBjb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuTWFwLnQgLT4gJ2EgdFxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+ICdhIHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzMiA9IHNpZ1xuICBpbmNsdWRlIFNldC5DcmVhdG9yczJcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiAnYSBIYXNoX3NldC50IC0+ICgnYSwgJ2NtcCkgdFxuICB2YWwgb2ZfaGFzaHRibF9rZXlzIDogKCdhLCBfKSBIYXNodGJsLnQgLT4gKCdhLCAnY21wKSB0XG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSwgXywgJ2NtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICAnYSBRdWlja2NoZWNrLkdlbmVyYXRvci50XG4gICAgLT4gKCdhLCAnY21wKSB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yID0gc2lnXG4gIGluY2x1ZGUgU2V0LkNyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcblxuICB2YWwgb2ZfaGFzaF9zZXQgOiBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50IC0+ICdhIEhhc2hfc2V0LnQgLT4gKCdhLCAnY21wKSB0XG5cbiAgdmFsIG9mX2hhc2h0Ymxfa2V5c1xuICAgIDogIGNvbXBhcmF0b3I6KCdhLCAnY21wKSBDb21wYXJhdG9yLnRcbiAgICAtPiAoJ2EsIF8pIEhhc2h0YmwudFxuICAgIC0+ICgnYSwgJ2NtcCkgdFxuXG4gIHZhbCBvZl9tYXBfa2V5cyA6ICgnYSwgXywgJ2NtcCkgQmFzZS5NYXAudCAtPiAoJ2EsICdjbXApIHRcblxuICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3JcbiAgICA6ICBjb21wYXJhdG9yOignYSwgJ2NtcCkgQ29tcGFyYXRvci50XG4gICAgLT4gJ2EgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuICAgIC0+ICgnYSwgJ2NtcCkgdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5lbmRcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzXG4gICAgKFQgOiBUMilcbiAgICAoVHJlZSA6IFQyKVxuICAgIChFbHQgOiBUMSlcbiAgICAoQ21wIDogVDEpXG4gICAgKE9wdGlvbnMgOiBUMylcbiAgICAoXyA6IENyZWF0b3JzX2dlbmVyaWNcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSBvcHRpb25zIDo9ICgnYSwgJ2IsICdjKSBPcHRpb25zLnRcbiAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgVC50XG4gICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIEVsdC50XG4gICAgIHdpdGggdHlwZSAnY21wIGNtcCA6PSAnY21wIENtcC50KSA9XG5zdHJ1Y3QgZW5kXG5cbm1vZHVsZSBDaGVja19jcmVhdG9yczAgKE0gOiBDcmVhdG9yczApID1cbiAgQ2hlY2tfY3JlYXRvcnNcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSBNLnRcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gTS50cmVlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9IE0uZWx0XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2NtcCB0ID0gTS5jb21wYXJhdG9yX3dpdG5lc3NcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMSAoTSA6IENyZWF0b3JzMSkgPVxuICBDaGVja19jcmVhdG9yc1xuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICdhIE0udFxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICgnYSwgJ2IpIHQgPSAnYSBNLnRyZWVcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2FcbiAgICBlbmQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnY21wIHQgPSBNLmNvbXBhcmF0b3Jfd2l0bmVzc1xuICAgIGVuZClcbiAgICAoV2l0aG91dF9jb21wYXJhdG9yKVxuICAgIChNKVxuXG5tb2R1bGUgQ2hlY2tfY3JlYXRvcnMyIChNIDogQ3JlYXRvcnMyKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhvdXRfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIENoZWNrX2NyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3IgKE0gOiBDcmVhdG9yczJfd2l0aF9jb21wYXJhdG9yKSA9XG4gIENoZWNrX2NyZWF0b3JzXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsICdiKSB0ID0gKCdhLCAnYikgTS50XG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIE0udHJlZVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdhIHQgPSAnYVxuICAgIGVuZClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlICdjbXAgdCA9ICdjbXBcbiAgICBlbmQpXG4gICAgKFdpdGhfY29tcGFyYXRvcilcbiAgICAoTSlcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yc19nZW5lcmljID0gc2lnXG4gIGluY2x1ZGUgQWNjZXNzb3JzX2dlbmVyaWNcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgb3B0aW9uc1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSB0cmVlXG4gICAgd2l0aCB0eXBlICdhIGVsdCA6PSAnYSBlbHRcbiAgICB3aXRoIHR5cGUgJ2NtcCBjbXAgOj0gJ2NtcCBjbXBcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMCA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczBcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMwXG4gICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgIHdpdGggdHlwZSB0cmVlIDo9IHRyZWVcbiAgICB3aXRoIHR5cGUgZWx0IDo9IGVsdFxuICAgIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgQ3JlYXRvcnNfYW5kX2FjY2Vzc29yczEgPSBzaWdcbiAgaW5jbHVkZSBBY2Nlc3NvcnMxXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMVxuICAgIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbiAgICB3aXRoIHR5cGUgJ2EgdHJlZSA6PSAnYSB0cmVlXG4gICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbmVuZFxuXG5tb2R1bGUgdHlwZSBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMiA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJcblxuICBpbmNsdWRlXG4gICAgQ3JlYXRvcnMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSB0eXBlIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMyX3dpdGhfY29tcGFyYXRvciA9IHNpZ1xuICBpbmNsdWRlIEFjY2Vzc29yczJfd2l0aF9jb21wYXJhdG9yXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdHJlZVxuZW5kXG5cbm1vZHVsZSBNYWtlX1NfcGxhaW5fdHJlZSAoRWx0IDogQ29tcGFyYXRvci5TKSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0ID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICB0eXBlIG5hbWVkID0gKEVsdC50LCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLk5hbWVkLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2FuZF9hY2Nlc3NvcnMwXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYikgc2V0IDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIHRyZWUgOj0gdFxuICAgICAgd2l0aCB0eXBlIGVsdCA6PSBFbHQudFxuICAgICAgd2l0aCB0eXBlIG5hbWVkIDo9IG5hbWVkXG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgIG1vZHVsZSBQcm92aWRlX29mX3NleHBcbiAgICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICAgIGVuZFxuICAgICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmRcblxuICB0eXBlIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIEJhc2UuU2V0LnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgdHlwZSBuYW1lZCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgTmFtZWQudFxuXG4gIGluY2x1ZGVcbiAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgQmFzZS5TZXQudFxuICAgIHdpdGggdHlwZSB0IDo9IHRcbiAgICB3aXRoIHR5cGUgdHJlZSA6PSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUudFxuICAgIHdpdGggdHlwZSBlbHQgOj0gRWx0LnRcbiAgICB3aXRoIHR5cGUgbmFtZWQgOj0gbmFtZWRcbiAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IEVsdC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoRWx0IDogc2lnXG4gICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgICAgICBlbmRcbiAgICAgICB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgb2Zfc2V4cF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9iaW5faW9cbiAgICAgIChFbHQgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChFbHQgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBFbHQudCkgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIG1vZHVsZSBFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5cbiAgaW5jbHVkZSBTX3BsYWluIHdpdGggbW9kdWxlIEVsdCA6PSBFbHRcbiAgaW5jbHVkZSBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX2JpbmFibGUgPSBzaWdcbiAgbW9kdWxlIEVsdCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgUyB3aXRoIG1vZHVsZSBFbHQgOj0gRWx0XG4gIGluY2x1ZGUgQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IExpc3QwXG5vcGVuIFNldF9pbnRmXG5tb2R1bGUgTWVyZ2VfdG9fc2VxdWVuY2VfZWxlbWVudCA9IE1lcmdlX3RvX3NlcXVlbmNlX2VsZW1lbnRcbm1vZHVsZSBOYW1lZCA9IE5hbWVkXG5cbm1vZHVsZSB0eXBlIEVsdF9wbGFpbiA9IEVsdF9wbGFpblxubW9kdWxlIHR5cGUgRWx0ID0gRWx0XG5tb2R1bGUgdHlwZSBFbHRfYmluYWJsZSA9IEVsdF9iaW5hYmxlXG5cbmxldCB0b19jb21wYXJhdG9yICh0eXBlIGsgY21wKSAoKG1vZHVsZSBNKSA6IChrLCBjbXApIENvbXBhcmF0b3IuTW9kdWxlLnQpID0gTS5jb21wYXJhdG9yXG5cbmxldCBvZl9jb21wYXJhdG9yICh0eXBlIGsgY21wKSBjb21wYXJhdG9yIDogKGssIGNtcCkgQ29tcGFyYXRvci5Nb2R1bGUudCA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgdHlwZSB0ID0ga1xuICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgZW5kKVxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90X20gKG9mX2NvbXBhcmF0b3IgY29tcGFyYXRvcikgZWx0X2dlblxuICA7O1xuXG4gIGxldCBnZW5fdHJlZSB+Y29tcGFyYXRvciBlbHRfZ2VuID1cbiAgICBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLnNldF90cmVlX3VzaW5nX2NvbXBhcmF0b3IgfmNvbXBhcmF0b3IgZWx0X2dlblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGVsdF9vYnMgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuc2V0X3QgZWx0X29ic1xuICBsZXQgb2JzX3RyZWUgZWx0X29icyA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXRfdHJlZSBlbHRfb2JzXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyIGVsdF9zaHIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3QgZWx0X3NoclxuXG4gIGxldCBzaHJfdHJlZSB+Y29tcGFyYXRvciBlbHRfc2hyID1cbiAgICBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc2V0X3RyZWVfdXNpbmdfY29tcGFyYXRvciB+Y29tcGFyYXRvciBlbHRfc2hyXG4gIDs7XG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIG0gZWx0X2dlbiA9XG4gIEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGVsdF9nZW5cbjs7XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19vYnNlcnZlclxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5xdWlja2NoZWNrX3Nocmlua2VyXG5cbm1vZHVsZSBUcmVlID0gc3RydWN0XG4gIGluY2x1ZGUgVHJlZVxuXG4gIGxldCB0b19tYXAgfmNvbXBhcmF0b3IgdCA9IE1hcC5vZl9rZXlfc2V0IChTZXQuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlIHQgfmNvbXBhcmF0b3IpXG4gIGxldCBvZl9tYXBfa2V5cyBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3IudG9fdHJlZSAoTWFwLmtleV9zZXQgbSlcblxuICBsZXQgb2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3IgaHNldCA9XG4gICAgSGFzaF9zZXQuZm9sZCBoc2V0IH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB0IHggLT4gYWRkIHQgeCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhhc2h0YmwgPVxuICAgIEhhc2h0YmwuZm9sZCBoYXNodGJsIH5pbml0OihlbXB0eSB+Y29tcGFyYXRvcikgfmY6KGZ1biB+a2V5OnggfmRhdGE6XyB0IC0+XG4gICAgICBhZGQgdCB4IH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLmdlbl90cmVlXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gRm9yX3F1aWNrY2hlY2sub2JzX3RyZWVcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZVxuZW5kXG5cbm1vZHVsZSBBY2Nlc3NvcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgU2V0LkFjY2Vzc29yczJcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSBTZXQudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBuYW1lZCA6PSAoJ2EsICdiKSBTZXQuTmFtZWQudClcblxuICBsZXQgdG9fbWFwID0gTWFwLm9mX2tleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBxdWlja2NoZWNrX29ic2VydmVyXG4gIGxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gcXVpY2tjaGVja19zaHJpbmtlclxuZW5kXG5cbnR5cGUgJ2EgY21wID0gJ2FcbnR5cGUgJ2EgZWx0ID0gJ2FcblxuaW5jbHVkZSAoXG5zdHJ1Y3RcbiAgaW5jbHVkZSBTZXRcblxuICBsZXQgb2ZfdHJlZSBtID0gU2V0LlVzaW5nX2NvbXBhcmF0b3Iub2ZfdHJlZSB+Y29tcGFyYXRvcjoodG9fY29tcGFyYXRvciBtKVxuICBsZXQgdG9fdHJlZSA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnRvX3RyZWVcbiAgbGV0IHNleHBfb2ZfdCA9IFNldC5Vc2luZ19jb21wYXJhdG9yLnNleHBfb2ZfdFxuZW5kIDpcbnNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSBTZXQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGVcbiAgICBTZXQuQ3JlYXRvcnNfZ2VuZXJpY1xuICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgb3B0aW9ucyA6PSAoJ2EsICdiLCAnYykgU2V0LldpdGhfZmlyc3RfY2xhc3NfbW9kdWxlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdFxuXG4gIGluY2x1ZGVcbiAgICBTZXQuQWNjZXNzb3JzMlxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdHJlZSA6PSAoJ2EsICdiKSBUcmVlLnRcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgU2V0Lk5hbWVkLnRcbiAgICB3aXRoIG1vZHVsZSBOYW1lZCA6PSBOYW1lZFxuZW5kKVxuXG50eXBlICgnaywgJ2NtcCkgY29tcGFyYXRvciA9XG4gIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gJ2sgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gJ2NtcClcblxubGV0IGNvbXBhcmUgXyBfIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcblxubW9kdWxlIFVzaW5nX2NvbXBhcmF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSAoXG4gICAgU2V0LlVzaW5nX2NvbXBhcmF0b3IgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIFNldC5Vc2luZ19jb21wYXJhdG9yXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgVHJlZSA6PSBTZXQuVXNpbmdfY29tcGFyYXRvci5UcmVlKVxuXG4gIGluY2x1ZGUgRm9yX3F1aWNrY2hlY2tcblxuICBsZXQgb2ZfbWFwX2tleXMgPSBNYXAua2V5X3NldFxuXG4gIGxldCBvZl9oYXNoX3NldCB+Y29tcGFyYXRvciBoc2V0ID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2hfc2V0IGhzZXQgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyB+Y29tcGFyYXRvciBoYXNodGJsID1cbiAgICBvZl90cmVlIH5jb21wYXJhdG9yIChUcmVlLm9mX2hhc2h0Ymxfa2V5cyBoYXNodGJsIH5jb21wYXJhdG9yKVxuICA7O1xuZW5kXG5cbmxldCB0b19tYXAgPSBNYXAub2Zfa2V5X3NldFxubGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbmxldCBoYXNoX2ZvbGRfZGlyZWN0ID0gVXNpbmdfY29tcGFyYXRvci5oYXNoX2ZvbGRfZGlyZWN0XG5sZXQgY29tcGFyYXRvciA9IFVzaW5nX2NvbXBhcmF0b3IuY29tcGFyYXRvclxubGV0IG9mX2hhc2hfc2V0IG0gaHNldCA9IFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaF9zZXQgfmNvbXBhcmF0b3I6KHRvX2NvbXBhcmF0b3IgbSkgaHNldFxuXG5sZXQgb2ZfaGFzaHRibF9rZXlzIG0gaGFzaHRibCA9XG4gIFVzaW5nX2NvbXBhcmF0b3Iub2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yOih0b19jb21wYXJhdG9yIG0pIGhhc2h0Ymxcbjs7XG5cbm1vZHVsZSBDcmVhdG9ycyAoRWx0IDogQ29tcGFyYXRvci5TMSkgOiBzaWdcbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnYSBjbXBfID0gRWx0LmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIHZhbCB0X29mX3NleHAgOiAoQmFzZS5TZXhwLnQgLT4gJ2EgRWx0LnQpIC0+IEJhc2UuU2V4cC50IC0+ICgnYSwgJ2NvbXBhcmF0b3IpIHRfXG5cbiAgaW5jbHVkZVxuICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICB3aXRoIHR5cGUgKCdhLCAnYikgdCA6PSAoJ2EsICdiKSB0X1xuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIHRyZWVcbiAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIGVsdF9cbiAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIG9wdGlvbnMgOj0gKCdhLCAnYiwgJ2MpIFdpdGhvdXRfY29tcGFyYXRvci50XG4gICAgd2l0aCB0eXBlICdhIGNtcCA6PSAnYSBjbXBfXG5lbmQgPSBzdHJ1Y3RcbiAgb3BlbiBVc2luZ19jb21wYXJhdG9yXG5cbiAgdHlwZSBub25yZWMgKCdhLCAnY29tcGFyYXRvcikgdF8gPSAoJ2EgRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAoJ2EsICdiKSB0cmVlID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLnRcbiAgdHlwZSAnYSBlbHRfID0gJ2EgRWx0LnRcbiAgdHlwZSAnY21wIGNtcF8gPSBFbHQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBFbHQuY29tcGFyYXRvclxuICBsZXQgb2ZfdHJlZSB0cmVlID0gb2ZfdHJlZSB+Y29tcGFyYXRvciB0cmVlXG4gIGxldCBvZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGFycmF5ID0gb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCB+Y29tcGFyYXRvciBhcnJheVxuXG4gIGxldCBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mID1cbiAgICBvZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhcnJheSA9IG9mX3NvcnRlZF9hcnJheSB+Y29tcGFyYXRvciBhcnJheVxuXG4gIG1vZHVsZSBNX2VtcHR5ID0gRW1wdHlfd2l0aG91dF92YWx1ZV9yZXN0cmljdGlvbiAoRWx0KVxuXG4gIGxldCBlbXB0eSA9IE1fZW1wdHkuZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiBlID0gc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IHVuaW9uX2xpc3QgbCA9IHVuaW9uX2xpc3QgfmNvbXBhcmF0b3IgbFxuICBsZXQgb2ZfbGlzdCBsID0gb2ZfbGlzdCB+Y29tcGFyYXRvciBsXG4gIGxldCBvZl9zZXF1ZW5jZSBzID0gb2Zfc2VxdWVuY2UgfmNvbXBhcmF0b3Igc1xuICBsZXQgb2ZfaGFzaF9zZXQgaCA9IG9mX2hhc2hfc2V0IH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gb2ZfaGFzaHRibF9rZXlzIH5jb21wYXJhdG9yIGhcbiAgbGV0IG9mX2FycmF5IGEgPSBvZl9hcnJheSB+Y29tcGFyYXRvciBhXG4gIGxldCBzdGFibGVfZGVkdXBfbGlzdCB4cyA9IHN0YWJsZV9kZWR1cF9saXN0IH5jb21wYXJhdG9yIHhzXG4gIGxldCBtYXAgdCB+ZiA9IG1hcCB+Y29tcGFyYXRvciB0IH5mXG4gIGxldCBmaWx0ZXJfbWFwIHQgfmYgPSBmaWx0ZXJfbWFwIH5jb21wYXJhdG9yIHQgfmZcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBvZl90cmVlIChUcmVlLnRfb2Zfc2V4cF9kaXJlY3QgYV9vZl9zZXhwIHNleHAgfmNvbXBhcmF0b3IpXG4gIDs7XG5cbiAgbGV0IG9mX21hcF9rZXlzID0gTWFwLmtleV9zZXRcbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIGVsdCA9IHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5jb21wYXJhdG9yIGVsdFxuZW5kXG5cbm1vZHVsZSBNYWtlX3RyZWVfUzEgKEVsdCA6IENvbXBhcmF0b3IuUzEpID0gc3RydWN0XG4gIGxldCBjb21wYXJhdG9yID0gRWx0LmNvbXBhcmF0b3JcbiAgbGV0IGVtcHR5ID0gVHJlZS5lbXB0eV93aXRob3V0X3ZhbHVlX3Jlc3RyaWN0aW9uXG4gIGxldCBzaW5nbGV0b24gZSA9IFRyZWUuc2luZ2xldG9uIH5jb21wYXJhdG9yIGVcbiAgbGV0IGludmFyaWFudHMgdCA9IFRyZWUuaW52YXJpYW50cyB0IH5jb21wYXJhdG9yXG4gIGxldCBsZW5ndGggdCA9IFRyZWUubGVuZ3RoIHRcbiAgbGV0IGlzX2VtcHR5IHQgPSBUcmVlLmlzX2VtcHR5IHRcbiAgbGV0IGVsZW1lbnRzIHQgPSBUcmVlLmVsZW1lbnRzIHRcbiAgbGV0IG1pbl9lbHQgdCA9IFRyZWUubWluX2VsdCB0XG4gIGxldCBtaW5fZWx0X2V4biB0ID0gVHJlZS5taW5fZWx0X2V4biB0XG4gIGxldCBtYXhfZWx0IHQgPSBUcmVlLm1heF9lbHQgdFxuICBsZXQgbWF4X2VsdF9leG4gdCA9IFRyZWUubWF4X2VsdF9leG4gdFxuICBsZXQgY2hvb3NlIHQgPSBUcmVlLmNob29zZSB0XG4gIGxldCBjaG9vc2VfZXhuIHQgPSBUcmVlLmNob29zZV9leG4gdFxuICBsZXQgdG9fbGlzdCB0ID0gVHJlZS50b19saXN0IHRcbiAgbGV0IHRvX2FycmF5IHQgPSBUcmVlLnRvX2FycmF5IHRcbiAgbGV0IGl0ZXIgdCB+ZiA9IFRyZWUuaXRlciB0IH5mXG4gIGxldCBpdGVyMiBhIGIgfmYgPSBUcmVlLml0ZXIyIGEgYiB+ZiB+Y29tcGFyYXRvclxuICBsZXQgZXhpc3RzIHQgfmYgPSBUcmVlLmV4aXN0cyB0IH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBUcmVlLmZvcl9hbGwgdCB+ZlxuICBsZXQgY291bnQgdCB+ZiA9IFRyZWUuY291bnQgdCB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IFRyZWUuc3VtIG0gdCB+ZlxuICBsZXQgZmluZCB0IH5mID0gVHJlZS5maW5kIHQgfmZcbiAgbGV0IGZpbmRfZXhuIHQgfmYgPSBUcmVlLmZpbmRfZXhuIHQgfmZcbiAgbGV0IGZpbmRfbWFwIHQgfmYgPSBUcmVlLmZpbmRfbWFwIHQgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IFRyZWUuZm9sZCB0IH5pbml0IH5mXG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBUcmVlLmZvbGRfdW50aWwgdCB+aW5pdCB+ZlxuICBsZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID0gVHJlZS5mb2xkX3JpZ2h0IHQgfmluaXQgfmZcbiAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICBsZXQgbWFwIHQgfmYgPSBUcmVlLm1hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBmaWx0ZXIgdCB+ZiA9IFRyZWUuZmlsdGVyIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IGZpbHRlcl9tYXAgdCB+ZiA9IFRyZWUuZmlsdGVyX21hcCB0IH5mIH5jb21wYXJhdG9yXG4gIGxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9IFRyZWUucGFydGl0aW9uX3RmIHQgfmYgfmNvbXBhcmF0b3JcbiAgbGV0IG1lbSB0IGEgPSBUcmVlLm1lbSB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IGFkZCB0IGEgPSBUcmVlLmFkZCB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IHJlbW92ZSB0IGEgPSBUcmVlLnJlbW92ZSB0IGEgfmNvbXBhcmF0b3JcbiAgbGV0IHVuaW9uIHQxIHQyID0gVHJlZS51bmlvbiB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgaW50ZXIgdDEgdDIgPSBUcmVlLmludGVyIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBkaWZmIHQxIHQyID0gVHJlZS5kaWZmIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBzeW1tZXRyaWNfZGlmZiB0MSB0MiA9IFRyZWUuc3ltbWV0cmljX2RpZmYgdDEgdDIgfmNvbXBhcmF0b3JcbiAgbGV0IGNvbXBhcmVfZGlyZWN0IHQxIHQyID0gVHJlZS5jb21wYXJlX2RpcmVjdCB+Y29tcGFyYXRvciB0MSB0MlxuICBsZXQgZXF1YWwgdDEgdDIgPSBUcmVlLmVxdWFsIHQxIHQyIH5jb21wYXJhdG9yXG4gIGxldCBpc19zdWJzZXQgdCB+b2ZfID0gVHJlZS5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJhdG9yXG4gIGxldCBhcmVfZGlzam9pbnQgdDEgdDIgPSBUcmVlLmFyZV9kaXNqb2ludCB0MSB0MiB+Y29tcGFyYXRvclxuICBsZXQgb2ZfbGlzdCBsID0gVHJlZS5vZl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX3NlcXVlbmNlIHMgPSBUcmVlLm9mX3NlcXVlbmNlIHMgfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2hfc2V0IGggPSBUcmVlLm9mX2hhc2hfc2V0IGggfmNvbXBhcmF0b3JcbiAgbGV0IG9mX2hhc2h0Ymxfa2V5cyBoID0gVHJlZS5vZl9oYXNodGJsX2tleXMgaCB+Y29tcGFyYXRvclxuICBsZXQgb2ZfYXJyYXkgYSA9IFRyZWUub2ZfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgb2Zfc29ydGVkX2FycmF5X3VuY2hlY2tlZCBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXlfdW5jaGVja2VkIGEgfmNvbXBhcmF0b3JcblxuICBsZXQgb2ZfaW5jcmVhc2luZ19pdGVyYXRvcl91bmNoZWNrZWQgfmxlbiB+ZiA9XG4gICAgVHJlZS5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+bGVuIH5mIH5jb21wYXJhdG9yXG4gIDs7XG5cbiAgbGV0IG9mX3NvcnRlZF9hcnJheSBhID0gVHJlZS5vZl9zb3J0ZWRfYXJyYXkgYSB+Y29tcGFyYXRvclxuICBsZXQgdW5pb25fbGlzdCBsID0gVHJlZS51bmlvbl9saXN0IGwgfmNvbXBhcmF0b3JcbiAgbGV0IHN0YWJsZV9kZWR1cF9saXN0IHhzID0gVHJlZS5zdGFibGVfZGVkdXBfbGlzdCB4cyB+Y29tcGFyYXRvclxuICBsZXQgZ3JvdXBfYnkgdCB+ZXF1aXYgPSBUcmVlLmdyb3VwX2J5IHQgfmVxdWl2IH5jb21wYXJhdG9yXG4gIGxldCBzcGxpdCB0IGEgPSBUcmVlLnNwbGl0IHQgYSB+Y29tcGFyYXRvclxuICBsZXQgbnRoIHQgaSA9IFRyZWUubnRoIHQgaVxuICBsZXQgcmVtb3ZlX2luZGV4IHQgaSA9IFRyZWUucmVtb3ZlX2luZGV4IHQgaSB+Y29tcGFyYXRvclxuICBsZXQgdG9fdHJlZSB0ID0gdFxuICBsZXQgb2ZfdHJlZSB0ID0gdFxuXG4gIGxldCB0b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCA9XG4gICAgVHJlZS50b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdFxuICA7O1xuXG4gIGxldCBiaW5hcnlfc2VhcmNoIHQgfmNvbXBhcmUgaG93IHYgPSBUcmVlLmJpbmFyeV9zZWFyY2ggfmNvbXBhcmF0b3IgdCB+Y29tcGFyZSBob3cgdlxuXG4gIGxldCBiaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB0IH5zZWdtZW50X29mIGhvdyA9XG4gICAgVHJlZS5iaW5hcnlfc2VhcmNoX3NlZ21lbnRlZCB+Y29tcGFyYXRvciB0IH5zZWdtZW50X29mIGhvd1xuICA7O1xuXG4gIGxldCBtZXJnZV90b19zZXF1ZW5jZSA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0JyA9XG4gICAgVHJlZS5tZXJnZV90b19zZXF1ZW5jZSB+Y29tcGFyYXRvciA/b3JkZXIgP2dyZWF0ZXJfb3JfZXF1YWxfdG8gP2xlc3Nfb3JfZXF1YWxfdG8gdCB0J1xuICA7O1xuXG4gIGxldCBvZl9tYXBfa2V5cyA9IFRyZWUub2ZfbWFwX2tleXNcbiAgbGV0IHRvX21hcCB0IH5mID0gVHJlZS50b19tYXAgfmNvbXBhcmF0b3IgdCB+ZlxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIGxldCBpc19zdWJzZXQgdCB+b2ZfID0gVHJlZS5OYW1lZC5pc19zdWJzZXQgdCB+b2ZfIH5jb21wYXJhdG9yXG4gICAgbGV0IGVxdWFsIHQxIHQyID0gVHJlZS5OYW1lZC5lcXVhbCB0MSB0MiB+Y29tcGFyYXRvclxuICBlbmRcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgZWx0ID0gRm9yX3F1aWNrY2hlY2suZ2VuX3RyZWUgZWx0IH5jb21wYXJhdG9yXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyIGVsdCA9IEZvcl9xdWlja2NoZWNrLm9ic190cmVlIGVsdFxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciBlbHQgPSBGb3JfcXVpY2tjaGVjay5zaHJfdHJlZSBlbHQgfmNvbXBhcmF0b3JcbmVuZFxuXG5tb2R1bGUgTWFrZV90cmVlX3BsYWluIChFbHQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIE1ha2VfdHJlZV9TMSAoRWx0X1MxKVxuXG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgVHJlZS50XG4gIHR5cGUgbmFtZWQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIFRyZWUuTmFtZWQudFxuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCB0ID0gVHJlZS5zZXhwX29mX3QgRWx0LnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcblxuICBtb2R1bGUgUHJvdmlkZV9vZl9zZXhwXG4gICAgICAoWCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIFRyZWUudF9vZl9zZXhwX2RpcmVjdCBYLnRfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yOkVsdF9TMS5jb21wYXJhdG9yXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE1ha2VfdHJlZSAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV90cmVlX3BsYWluIChFbHQpXG4gIGluY2x1ZGUgUHJvdmlkZV9vZl9zZXhwIChFbHQpXG5lbmRcblxuKCogRG9uJ3QgdXNlIFtvZl9zb3J0ZWRfYXJyYXldIHRvIGF2b2lkIHRoZSBhbGxvY2F0aW9uIG9mIGFuIGludGVybWVkaWF0ZSBhcnJheSAqKVxubGV0IGluaXRfZm9yX2Jpbl9wcm90IH5sZW4gfmYgfmNvbXBhcmF0b3IgPVxuICBsZXQgc2V0ID0gVXNpbmdfY29tcGFyYXRvci5vZl9pbmNyZWFzaW5nX2l0ZXJhdG9yX3VuY2hlY2tlZCB+Y29tcGFyYXRvciB+bGVuIH5mIGluXG4gIGlmIGludmFyaWFudHMgc2V0XG4gIHRoZW4gc2V0XG4gIGVsc2VcbiAgICBVc2luZ19jb21wYXJhdG9yLm9mX3RyZWVcbiAgICAgIH5jb21wYXJhdG9yXG4gICAgICAoZm9sZCBzZXQgfmluaXQ6KFRyZWUuZW1wdHkgfmNvbXBhcmF0b3IpIH5mOihmdW4gYWNjIGVsdCAtPlxuICAgICAgICAgaWYgVHJlZS5tZW0gYWNjIGVsdCB+Y29tcGFyYXRvclxuICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIlNldC5iaW5fcmVhZF90OiBkdXBsaWNhdGUgZWxlbWVudCBpbiBtYXBcIlxuICAgICAgICAgZWxzZSBUcmVlLmFkZCBhY2MgZWx0IH5jb21wYXJhdG9yKSlcbjs7XG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBDb21wYXJhdG9yLlBvbHlcbiAgaW5jbHVkZSBDcmVhdG9ycyAoRWx0KVxuXG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgdHlwZSAnYSBuYW1lZCA9ICgnYSwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgTmFtZWQudFxuXG4gIGluY2x1ZGUgQWNjZXNzb3JzXG5cbiAgbGV0IGNvbXBhcmUgXyB0MSB0MiA9IGNvbXBhcmVfZGlyZWN0IHQxIHQyXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rIHQgPSBzZXhwX29mX3Qgc2V4cF9vZl9rIFslc2V4cF9vZjogX10gdFxuXG4gIGxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gICAgU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuICA7O1xuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IF8gPSBiaW5fZWxcblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODhiY2M0NzgtNDk5Mi0xMWU2LWE5NWQtZmY0ODMxYWNmNDEwXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlNldFwiXG4gICAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgICAgaW5pdF9mb3JfYmluX3Byb3QgfmxlbiB+ZjooZnVuIF8gLT4gbmV4dCAoKSkgfmNvbXBhcmF0b3I6Q29tcGFyYXRvci5Qb2x5LmNvbXBhcmF0b3JcbiAgICAgIDs7XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBUcmVlID0gc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlX3RyZWVfUzEgKENvbXBhcmF0b3IuUG9seSlcblxuICAgIHR5cGUgJ2VsdCB0ID0gKCdlbHQsIENvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yX3dpdG5lc3MpIHRyZWVcbiAgICB0eXBlICdhIG5hbWVkID0gKCdhLCBFbHQuY29tcGFyYXRvcl93aXRuZXNzKSBUcmVlLk5hbWVkLnRcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9lbHQgdCA9IFRyZWUuc2V4cF9vZl90IHNleHBfb2ZfZWx0IFslc2V4cF9vZjogX10gdFxuXG4gICAgbGV0IHRfb2Zfc2V4cCBlbHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIFRyZWUudF9vZl9zZXhwX2RpcmVjdCBlbHRfb2Zfc2V4cCBzZXhwIH5jb21wYXJhdG9yOkNvbXBhcmF0b3IuUG9seS5jb21wYXJhdG9yXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciBncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIChMaXN0LnRfc2V4cF9ncmFtbWFyIGdyYW1tYXIpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFNfcGxhaW4gPSBTX3BsYWluXG5tb2R1bGUgdHlwZSBTID0gU1xubW9kdWxlIHR5cGUgU19iaW5hYmxlID0gU19iaW5hYmxlXG5cbm1vZHVsZSBFbHRfYmluX2lvID0gRWx0X2Jpbl9pb1xuXG5tb2R1bGUgUHJvdmlkZV9iaW5faW8gKEVsdCA6IEVsdF9iaW5faW8uUykgPSBCaW5fcHJvdC5VdGlscy5NYWtlX2l0ZXJhYmxlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIHRcbiAgICB0eXBlIGVsID0gRWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgbGV0IF8gPSBiaW5fZWxcblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4OTg5Mjc4ZS00OTkyLTExZTYtOGY0YS02Yjg5Nzc2YjFlNTNcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5TZXRcIlxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgaXRlciB0IH5mID0gaXRlciB+ZjooZnVuIGtleSAtPiBmIGtleSkgdFxuXG4gICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9XG4gICAgICBpbml0X2Zvcl9iaW5fcHJvdCB+bGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKSB+Y29tcGFyYXRvcjpFbHQuY29tcGFyYXRvclxuICAgIDs7XG4gIGVuZClcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoRWx0IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBFbHQgPSBFbHRcbiAgbW9kdWxlIEVsdF9TMSA9IENvbXBhcmF0b3IuU190b19TMSAoRWx0KVxuICBpbmNsdWRlIENyZWF0b3JzIChFbHRfUzEpXG5cbiAgdHlwZSAoJ2EsICdiKSBzZXQgPSAoJ2EsICdiKSB0XG4gIHR5cGUgdCA9IChFbHQudCwgRWx0LmNvbXBhcmF0b3Jfd2l0bmVzcykgc2V0XG4gIHR5cGUgbmFtZWQgPSAoRWx0LnQsIEVsdC5jb21wYXJhdG9yX3dpdG5lc3MpIE5hbWVkLnRcblxuICBpbmNsdWRlIEFjY2Vzc29yc1xuXG4gIGxldCBjb21wYXJlIHQxIHQyID0gY29tcGFyZV9kaXJlY3QgdDEgdDJcbiAgbGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90IEVsdC5zZXhwX29mX3QgWyVzZXhwX29mOiBfXSB0XG5cbiAgbW9kdWxlIFByb3ZpZGVfb2Zfc2V4cFxuICAgICAgKEVsdCA6IHNpZ1xuICAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIG9mX3NleHBdXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgc3RydWN0XG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwIEVsdC50X29mX3NleHAgc2V4cFxuICBlbmRcblxuICBtb2R1bGUgUHJvdmlkZV9oYXNoIChFbHQgOiBIYXNoZXIuUyB3aXRoIHR5cGUgdCA6PSBFbHQudCkgPSBzdHJ1Y3RcbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IFVzaW5nX2NvbXBhcmF0b3IuaGFzaF9mb2xkX2RpcmVjdCBFbHQuaGFzaF9mb2xkX3Qgc3RhdGUgdFxuXG4gICAgbGV0IGhhc2ggdCA9XG4gICAgICBQcHhfaGFzaF9saWIuU3RkLkhhc2guZ2V0X2hhc2hfdmFsdWVcbiAgICAgICAgKGhhc2hfZm9sZF90IChQcHhfaGFzaF9saWIuU3RkLkhhc2guY3JlYXRlICgpKSB0KVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBQcm92aWRlX2Jpbl9pb1xuICAgICAgKEVsdCcgOiBzaWdcbiAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgZW5kXG4gICAgICAgd2l0aCB0eXBlIHQgOj0gRWx0LnQpID1cbiAgICBQcm92aWRlX2Jpbl9pbyAoc3RydWN0XG4gICAgICBpbmNsdWRlIEVsdFxuICAgICAgaW5jbHVkZSBFbHQnXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChFbHQgOiBFbHRfcGxhaW4pID0gTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEVsdFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChFbHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvciAoRWx0X3NleHAgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9zZXhwKVxuICBtb2R1bGUgRWx0ID0gRWx0X3NleHBcbiAgaW5jbHVkZSBQcm92aWRlX29mX3NleHAgKEVsdClcbmVuZFxuXG5tb2R1bGUgTWFrZSAoRWx0IDogRWx0KSA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBFbHRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoRWx0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0X2Jpbl9zZXhwIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEVsdF9iaW5fc2V4cClcbiAgbW9kdWxlIEVsdCA9IEVsdF9iaW5fc2V4cFxuICBpbmNsdWRlIFByb3ZpZGVfYmluX2lvIChFbHQpXG5lbmRcblxubW9kdWxlIE1ha2VfYmluYWJsZSAoRWx0IDogRWx0X2JpbmFibGUpID0gTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgRWx0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKEVsdClcbiAgZW5kKVxuXG5tb2R1bGUgRm9yX2Rlcml2aW5nID0gc3RydWN0XG4gIG1vZHVsZSBNID0gU2V0Lk1cblxuICBsZXQgYmluX3NoYXBlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaGFwZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9zaXplX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9zaXplX3RcbiAgOztcblxuICBsZXQgYmluX3dyaXRlX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl93cml0ZV90XG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX21fX3QgKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLmJpbl9yZWFkX3RcbiAgOztcblxuICBsZXQgX19iaW5fcmVhZF9tX190X18gKHR5cGUgdCBjKSAobSA6ICh0LCBjKSBFbHRfYmluX2lvLnQpID1cbiAgICBsZXQgbW9kdWxlIE0gPSBQcm92aWRlX2Jpbl9pbyAoKHZhbCBtKSkgaW5cbiAgICBNLl9fYmluX3JlYWRfdF9fXG4gIDs7XG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19nZW5lcmF0b3JfbSA9IHNpZ1xuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TXG5cbiAgICB2YWwgcXVpY2tjaGVja19nZW5lcmF0b3IgOiB0IFF1aWNrY2hlY2suR2VuZXJhdG9yLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19vYnNlcnZlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX29ic2VydmVyIDogdCBRdWlja2NoZWNrLk9ic2VydmVyLnRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUXVpY2tjaGVja19zaHJpbmtlcl9tID0gc2lnXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlNcblxuICAgIHZhbCBxdWlja2NoZWNrX3Nocmlua2VyIDogdCBRdWlja2NoZWNrLlNocmlua2VyLnRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yX21fX3RcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgIChtb2R1bGUgRWx0IDogUXVpY2tjaGVja19nZW5lcmF0b3JfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0gdFxuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIChtb2R1bGUgRWx0KSBFbHQucXVpY2tjaGVja19nZW5lcmF0b3JcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19vYnNlcnZlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfb2JzZXJ2ZXJfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0gdFxuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfb2JzZXJ2ZXIgRWx0LnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlcl9tX190XG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICAobW9kdWxlIEVsdCA6IFF1aWNrY2hlY2tfc2hyaW5rZXJfbVxuICAgICAgICAgIHdpdGggdHlwZSB0ID0gdFxuICAgICAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgPVxuICAgIHF1aWNrY2hlY2tfc2hyaW5rZXIgRWx0LnF1aWNrY2hlY2tfc2hyaW5rZXJcbiAgOztcblxuICBtb2R1bGUgdHlwZSBGb3JfZGVyaXZpbmcgPSBTZXQuRm9yX2Rlcml2aW5nXG5cbiAgaW5jbHVkZSAoU2V0IDogRm9yX2Rlcml2aW5nIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHQpXG5lbmRcblxuaW5jbHVkZSBGb3JfZGVyaXZpbmdcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAoJ2EsICdjbXApIHQgPSAoJ2EsICdjbXApIHRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgZWx0XG4gICAgICB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSAoZWx0LCBlbHRfY29tcGFyYXRvcl93aXRuZXNzKSB0XG5cbiAgICAgIGluY2x1ZGUgU3RhYmxlX21vZHVsZV90eXBlcy5TMF93aXRob3V0X2NvbXBhcmF0b3Igd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBGb3JfZGVyaXZpbmdcbiAgICBtb2R1bGUgTWFrZSAoRWx0IDogU3RhYmxlX21vZHVsZV90eXBlcy5TMCkgPSBNYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoRWx0KVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENvbXBhcmFibGVfaW50ZlxubW9kdWxlIEluZml4ID0gQmFzZS5Db21wYXJhYmxlLkluZml4XG5tb2R1bGUgUG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQ29tcGFyYWJsZS5Qb2x5bW9ycGhpY19jb21wYXJlXG5cbm1vZHVsZSBWYWxpZGF0ZSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICBlbmQpIDogVmFsaWRhdGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGVcbiAgb3BlbiBNYXliZV9ib3VuZFxuXG4gIGxldCB0b19zdHJpbmcgdCA9IEJhc2UuU2V4cC50b19zdHJpbmcgKFQuc2V4cF9vZl90IHQpXG5cbiAgbGV0IHZhbGlkYXRlX2JvdW5kIH5taW4gfm1heCB0ID1cbiAgICBWLmJvdW5kZWQgfm5hbWU6dG9fc3RyaW5nIH5sb3dlcjptaW4gfnVwcGVyOm1heCB+Y29tcGFyZTpULmNvbXBhcmUgdFxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZV9sYm91bmQgfm1pbiB0ID0gdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4OlVuYm91bmRlZCB0XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgfm1heCB0ID0gdmFsaWRhdGVfYm91bmQgfm1heCB+bWluOlVuYm91bmRlZCB0XG5lbmRcblxubW9kdWxlIFZhbGlkYXRlX3dpdGhfemVybyAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgdmFsIHplcm8gOiB0XG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBWID0gVmFsaWRhdGUgKFQpXG4gIGluY2x1ZGUgVlxuXG4gICgqIFByZWFsbG9jYXRlIHRoZSBpbnRlcmVzdGluZyBib3VuZHMgdG8gbWluaW1pemUgYWxsb2NhdGlvbiBpbiB0aGUgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgIFt2YWxpZGF0ZV8qXS4gKilcbiAgbGV0IGV4Y2xfemVybyA9IE1heWJlX2JvdW5kLkV4Y2wgVC56ZXJvXG4gIGxldCBpbmNsX3plcm8gPSBNYXliZV9ib3VuZC5JbmNsIFQuemVyb1xuICBsZXQgdmFsaWRhdGVfcG9zaXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmV4Y2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9ub25fbmVnYXRpdmUgdCA9IHZhbGlkYXRlX2xib3VuZCB+bWluOmluY2xfemVybyB0XG4gIGxldCB2YWxpZGF0ZV9uZWdhdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6ZXhjbF96ZXJvIHRcbiAgbGV0IHZhbGlkYXRlX25vbl9wb3NpdGl2ZSB0ID0gdmFsaWRhdGVfdWJvdW5kIH5tYXg6aW5jbF96ZXJvIHRcbmVuZFxuXG5tb2R1bGUgV2l0aF96ZXJvIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICB2YWwgemVybyA6IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZV93aXRoX3plcm8gKFQpXG4gIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLldpdGhfemVybyAoVClcbmVuZFxuXG5tb2R1bGUgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG5lbmRcblxubW9kdWxlIE1hcF9hbmRfc2V0X2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbiAgTWFwX2FuZF9zZXRfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuTWFrZSAoVClcbiAgZW5kKVxuXG5tb2R1bGUgUG9seSAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgQyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQmFzZS5Db21wYXJhYmxlLlBvbHkgKFQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQ1xuICBpbmNsdWRlIFZhbGlkYXRlIChDKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSB0ID0gQ1xuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoQylcbiAgbW9kdWxlIFNldCA9IFNldC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5lbmRcblxubW9kdWxlIE1ha2VfcGxhaW5fdXNpbmdfY29tcGFyYXRvciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULnQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3MgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG4gIGVuZCkgPVxuICBNYWtlX3BsYWluX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA6IFMgd2l0aCB0eXBlIHQgOj0gVC50IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuICBtb2R1bGUgTSA9IEJhc2UuQ29tcGFyYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIGluY2x1ZGUgTVxuXG4gIGluY2x1ZGUgVmFsaWRhdGUgKHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIE1cbiAgICBlbmQpXG5cbiAgbW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA6IFBvbHltb3JwaGljX2NvbXBhcmUgd2l0aCB0eXBlIHQgOj0gdCA9IE1cbiAgbW9kdWxlIE1hcCA9IE1hcC5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKFQpXG4gIG1vZHVsZSBTZXQgPSBTZXQuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG4gIGVuZCkgOiBTIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gIGVuZClcblxubW9kdWxlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBNID0gQmFzZS5Db21wYXJhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcblxuICBpbmNsdWRlIFZhbGlkYXRlIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgTVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogUG9seW1vcnBoaWNfY29tcGFyZSB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIE1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLk1ha2UgKFQpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBFeHRlbmRcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQpID1cbnN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBYIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHQgPSBNLnQgW0BAZGVyaXZpbmcgc2V4cF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdClcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgVmFsaWRhdGUgKFQpXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgOiBDb21wYXJpc29ucy5TIHdpdGggdHlwZSB0IDo9IHQgPSBNXG4gIG1vZHVsZSBNYXAgPSBNYXAuTWFrZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfdXNpbmdfY29tcGFyYXRvciAoVClcbmVuZFxuXG5tb2R1bGUgRXh0ZW5kX2JpbmFibGVcbiAgICAoTSA6IEJhc2UuQ29tcGFyYWJsZS5TKSAoWCA6IHNpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBNXG5cbiAgICBpbmNsdWRlIChcbiAgICAgIFggOlxuICAgICAgc2lnXG4gICAgICAgIHR5cGUgdCA9IE0udCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFZhbGlkYXRlIChUKVxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0ID0gTVxuICBtb2R1bGUgTWFwID0gTWFwLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuICBtb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBJbmhlcml0IChDIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG4gIGVuZCkgKFQgOiBzaWdcbiAgICAgICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIHZhbCBjb21wb25lbnQgOiB0IC0+IEMudFxuICAgICAgICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gVC50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICBsZXQgY29tcGFyZSB0IHQnID0gQy5jb21wYXJlIChULmNvbXBvbmVudCB0KSAoVC5jb21wb25lbnQgdCcpXG4gIGVuZClcblxuaW5jbHVkZSAoQmFzZS5Db21wYXJhYmxlIDogV2l0aF9jb21wYXJlKVxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY29tcGFyYWJsZVxuICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIE1hcCA6XG4gICAgICAgIE1hcC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUga2V5IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbW9kdWxlIFNldCA6XG4gICAgICAgIFNldC5TdGFibGUuVjEuU1xuICAgICAgICB3aXRoIHR5cGUgZWx0IDo9IGNvbXBhcmFibGVcbiAgICAgICAgd2l0aCB0eXBlIGVsdF9jb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoWCA6IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzApID0gc3RydWN0XG4gICAgICBtb2R1bGUgTWFwID0gTWFwLlN0YWJsZS5WMS5NYWtlIChYKVxuICAgICAgbW9kdWxlIFNldCA9IFNldC5TdGFibGUuVjEuTWFrZSAoWClcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsImluY2x1ZGUgTGlzdDAgKCoqIEBpbmxpbmUgKilcblxuKCoqIFtzdGFibGVfZGVkdXBdIFNhbWUgYXMgW2RlZHVwXSBidXQgbWFpbnRhaW5zIHRoZSBvcmRlciBvZiB0aGUgbGlzdCBhbmQgZG9lc24ndCBhbGxvd1xuICAgIGNvbXBhcmUgZnVuY3Rpb24gdG8gYmUgc3BlY2lmaWVkIChvdGhlcndpc2UsIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiB0ZXJtcyBvZiBTZXQudFxuICAgIHdvdWxkIGhpZGUgYSBoZWF2eXdlaWdodCBmdW5jdG9yIGluc3RhbnRpYXRpb24gYXQgZWFjaCBjYWxsKS4gKilcbmxldCBzdGFibGVfZGVkdXAgPSBTZXQuUG9seS5zdGFibGVfZGVkdXBfbGlzdFxuXG4oKiBUaGlzIGZ1bmN0aW9uIGlzIHN0YWdlZCB0byBpbmRpY2F0ZSB0aGF0IHJlYWwgd29yayAodGhlIGZ1bmN0b3IgYXBwbGljYXRpb24pIHRha2VzXG4gICBwbGFjZSBhZnRlciBhIHBhcnRpYWwgYXBwbGljYXRpb24uICopXG5sZXQgc3RhYmxlX2RlZHVwX3N0YWdlZCAodHlwZSBhKSB+KGNvbXBhcmUgOiBhIC0+IGEgLT4gaW50KVxuICA6IChhIGxpc3QgLT4gYSBsaXN0KSBCYXNlLlN0YWdlZC50XG4gID1cbiAgbGV0IG1vZHVsZSBTZXQgPVxuICAgIFNldC5NYWtlIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGFcblxuICAgICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG5cbiAgICAgICgqIFtzdGFibGVfZGVkdXBfbGlzdF0gbmV2ZXIgY2FsbHMgdGhlc2UgKilcbiAgICAgIGxldCB0X29mX3NleHAgXyA9IGFzc2VydCBmYWxzZVxuICAgICAgbGV0IHNleHBfb2ZfdCBfID0gYXNzZXJ0IGZhbHNlXG4gICAgZW5kKVxuICBpblxuICBCYXNlLlN0YWdlZC5zdGFnZSBTZXQuc3RhYmxlX2RlZHVwX2xpc3Rcbjs7XG5cbmxldCB6aXBfd2l0aF9yZW1haW5kZXIgPVxuICBsZXQgcmVjIHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIGFjYyB4cyB5cyA9XG4gICAgbWF0Y2ggeHMsIHlzIHdpdGhcbiAgICB8IFtdLCBbXSAtPiByZXYgYWNjLCBOb25lXG4gICAgfCBmc3QsIFtdIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5GaXJzdCBmc3QpXG4gICAgfCBbXSwgc25kIC0+IHJldiBhY2MsIFNvbWUgKEVpdGhlci5TZWNvbmQgc25kKVxuICAgIHwgeCA6OiB4cywgeSA6OiB5cyAtPiB6aXBfd2l0aF9hY2NfYW5kX3JlbWFpbmRlciAoKHgsIHkpIDo6IGFjYykgeHMgeXNcbiAgaW5cbiAgZnVuIHhzIHlzIC0+IHppcF93aXRoX2FjY19hbmRfcmVtYWluZGVyIFtdIHhzIHlzXG47O1xuXG50eXBlIHNleHBfdGh1bmsgPSB1bml0IC0+IEJhc2UuU2V4cC50XG5cbmxldCBzZXhwX29mX3NleHBfdGh1bmsgeCA9IHggKClcblxuZXhjZXB0aW9uIER1cGxpY2F0ZV9mb3VuZCBvZiBzZXhwX3RodW5rICogQmFzZS5TdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgZXhuX2lmX2R1cCB+Y29tcGFyZSA/KGNvbnRleHQgPSBcImV4bl9pZl9kdXBcIikgdCB+dG9fc2V4cCA9XG4gIG1hdGNoIGZpbmRfYV9kdXAgfmNvbXBhcmUgdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZHVwIC0+IHJhaXNlIChEdXBsaWNhdGVfZm91bmQgKChmdW4gKCkgLT4gdG9fc2V4cCBkdXApLCBjb250ZXh0KSlcbjs7XG5cbmxldCBzbGljZSBhIHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgYSBzdGFydCBzdG9wXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLk9wdGlvblxuXG50eXBlICdhIHQgPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG5pbmNsdWRlIENvbXBhcmF0b3IuRGVyaXZlZCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgY29tcGFyZV1cbiAgZW5kKVxuXG5sZXQgdmFsaWRhdGUgfm5vbmUgfnNvbWUgdCA9XG4gIGxldCBtb2R1bGUgViA9IFZhbGlkYXRlIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IE5vbmUgLT4gVi5uYW1lIFwibm9uZVwiIChWLnByb3RlY3Qgbm9uZSAoKSlcbiAgfCBTb21lIHggLT4gVi5uYW1lIFwic29tZVwiIChWLnByb3RlY3Qgc29tZSB4KVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5vcHRpb25cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLm9wdGlvblxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIub3B0aW9uXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgc2V4cF1cbiAgZW5kXG5lbmRcblxubW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IGlzX25vbmUgPSBpc19ub25lXG5cbiAgICAoKiBbdW5zYWZlX3ZhbHVlXSBpcyBvbmx5IHNhZmUgdG8gY2FsbCB3aGVuIFtpc19ub25lXSByZXR1cm5zIFtmYWxzZV0uIFRvIGF2b2lkXG4gICAgICAgcmVwZWF0aW5nIHRoZSBbaXNfbm9uZV0gY2hlY2ssIHdlIGRlY2xhcmUgW1VuY2hlY2tlZF9zb21lXS4gW1VuY2hlY2tlZF9zb21lIHhdXG4gICAgICAgaGFzIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uIGFzIFtTb21lIHhdLCBidXQgdGhlIHR5cGUgaGFzIG5vIFtOb25lXSBjbGF1c2UuXG5cbiAgICAgICBXZSBtYWtlIHN1cmUgYWxsIHRoaXMgd29ya3Mgd2l0aCB0ZXN0cyBvZiBbdW5zYWZlX3ZhbHVlXSBpbiB0ZXN0X29wdGlvbi5tbC5cblxuICAgICAgIFdlIHRyaWVkIHVzaW5nIFtPYmouZmllbGRdIGluc3RlYWQuIEl0IGdlbmVyYXRlcyBtdWNoIHdvcnNlIG5hdGl2ZSBjb2RlIGR1ZSB0b1xuICAgICAgIGZsb2F0IGFycmF5IHJlcHJlc2VudGF0aW9ucy4gKilcblxuICAgIG1vZHVsZSBVbmNoZWNrZWRfc29tZSA9IHN0cnVjdFxuICAgICAgKCogV2FybmluZyAzNyB0ZWxscyB1cyBbVW5jaGVja2VkX3NvbWVdIGlzIG5ldmVyIHVzZWQgYXMgYSBjb25zdHJ1Y3Rvci4gVGhpcyBpc1xuICAgICAgICAgaW50ZW50aW9uYWwsIHNvIHdlIGRpc2FibGUgdGhlIHdhcm5pbmcuICopXG4gICAgICB0eXBlICdhIHQgPSBVbmNoZWNrZWRfc29tZSBvZiAnYSBbQEBvY2FtbC5ib3hlZF0gW0BAb2NhbWwud2FybmluZyBcIi0zN1wiXVxuICAgIGVuZFxuXG4gICAgbGV0IHVuc2FmZV92YWx1ZSAodHlwZSBhKSAodCA6IGEgdCkgOiBhID1cbiAgICAgIGxldCAoVW5jaGVja2VkX3NvbWUgdmFsdWUpID0gKE9iai5tYWdpYyB0IDogYSBVbmNoZWNrZWRfc29tZS50KSBpblxuICAgICAgdmFsdWVcbiAgICA7O1xuICBlbmRcbmVuZFxuIiwiKCogVGhpcyBjb2RlIGlzIGJhc2VkIG9uIHRoZSBNTHRvbiBsaWJyYXJ5IHNldC9kaXNqb2ludC5mdW4sIHdoaWNoIGhhcyB0aGVcbiAgIGZvbGxvd2luZyBjb3B5cmlnaHQgbm90aWNlLlxuKilcbigqIENvcHlyaWdodCAoQykgMTk5OS0yMDA1IEhlbnJ5IENlanRpbiwgTWF0dGhldyBGbHVldCwgU3VyZXNoXG4gKiAgICBKYWdhbm5hdGhhbiwgYW5kIFN0ZXBoZW4gV2Vla3MuXG4gKlxuICogTUx0b24gaXMgcmVsZWFzZWQgdW5kZXIgYSBCU0Qtc3R5bGUgbGljZW5zZS5cbiAqIFNlZSB0aGUgZmlsZSBNTHRvbi1MSUNFTlNFIGZvciBkZXRhaWxzLlxuKilcblxub3BlbiEgSW1wb3J0XG5cbigqXG4gICB7dlxuICAgICAgICAgICBSb290XG4gICAgICAgICAgICAgfFxuICAgICAgICAgICBJbm5lclxuICAgICAgICAvIC4uIHwgLi4gXFxcbiAgICAgSW5uZXIgSW5uZXIgSW5uZXJcbiAgICAgIC98XFwgICAvfFxcICAgL3xcXFxuICAgICAgLi4uICAgLi4uICAgLi4uXG4gICB2fVxuXG4gICBXZSBjb25zdHJ1Y3QgdGhlIGBpbnZlcnRlZCcgdHJlZSBpbiB0aGUgTUwgcmVwcmVzZW50YXRpb24uXG4gICBUaGUgZGlyZWN0aW9uIG9mIHRoZSBlZGdlcyBpcyBVUFdBUkRTLlxuICAgU3RhcnRpbmcgd2l0aCBhbnkgWydhIHRdIHdlIGNhbiBzdGVwIGRpcmVjdGx5IHRvIGl0cyBwYXJlbnQuXG4gICBCdXQgd2UgY2FuJ3QgKGFuZCBkb24ndCBuZWVkIHRvKSBzdGFydCBmcm9tIHRoZSByb290IGFuZCBzdGVwIHRvIGl0cyBjaGlsZHJlbi5cbiopXG5cbigqXG4gICBbcmFua10gaXMgYW4gdXBwZXIgYm91bmQgb24gdGhlIGRlcHRoIG9mIGFueSBub2RlIGluIHRoZSB1cC10cmVlLlxuXG4gICBJbWFnaW5lIGFuIHVubHVja3kgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBpbiB3aGljaCB5b3UgY3JlYXRlIE5cbiAgIGluZGl2aWR1YWwgW3RdLXZhbHVlcyBhbmQgdGhlbiB1bmlvbiB0aGVtIHRvZ2V0aGVyIGluIHN1Y2ggYSB3YXlcbiAgIHRoYXQgeW91IGFsd2F5cyBwaWNrIHRoZSByb290IG9mIGVhY2ggdHJlZSB0byB1bmlvbiB0b2dldGhlciwgc28gdGhhdFxuICAgbm8gcGF0aCBjb21wcmVzc2lvbiB0YWtlcyBwbGFjZS4gIElmIHlvdSBkb24ndCB0YWtlIGNhcmUgdG8gc29tZWhvd1xuICAgYmFsYW5jZSB0aGUgcmVzdWx0aW5nIHVwLXRyZWUsIGl0IGlzIHBvc3NpYmxlIHRoYXQgeW91IGVuZCB1cCB3aXRoIG9uZVxuICAgYmlnIGxvbmcgY2hhaW4gb2YgTiBsaW5rcywgYW5kIHRoZW4gY2FsbGluZyBbcmVwcmVzZW50YXRpdmVdIG9uIHRoZVxuICAgZGVlcGVzdCBub2RlIHRha2VzIFRoZXRhKE4pIHRpbWUuICBXaXRoIHRoZSBiYWxhbmNpbmcgc2NoZW1lIG9mIG5ldmVyXG4gICBpbmNyZWFzaW5nIHRoZSByYW5rIG9mIGEgbm9kZSB1bm5lY2Vzc2FyaWx5LCBpdCB3b3VsZCB0YWtlIE8obG9nIE4pLlxuKilcbnR5cGUgJ2Egcm9vdCA9XG4gIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gIDsgbXV0YWJsZSByYW5rIDogaW50XG4gIH1cblxudHlwZSAnYSB0ID0geyBtdXRhYmxlIG5vZGUgOiAnYSBub2RlIH1cblxuYW5kICdhIG5vZGUgPVxuICB8IElubmVyIG9mICdhIHRcbiAgKCogW0lubmVyIHhdIGlzIGEgbm9kZSB3aG9zZSBwYXJlbnQgaXMgW3hdLiAqKVxuICB8IFJvb3Qgb2YgJ2Egcm9vdFxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIGxldCByZWMgbG9vcCB0IGRlcHRoID1cbiAgICBtYXRjaCB0Lm5vZGUgd2l0aFxuICAgIHwgSW5uZXIgdCAtPiBsb29wIHQgKGRlcHRoICsgMSlcbiAgICB8IFJvb3QgciAtPiBhc3NlcnQgKGRlcHRoIDw9IHIucmFuaylcbiAgaW5cbiAgbG9vcCB0IDBcbjs7XG5cbmxldCBjcmVhdGUgdiA9IHsgbm9kZSA9IFJvb3QgeyB2YWx1ZSA9IHY7IHJhbmsgPSAwIH0gfVxuXG4oKiBpbnZhcmlhbnRzOlxuICAgW2lubmVyLm5vZGVdID0gW2lubmVyX25vZGVdID0gW0lubmVyIHRdLlxuICAgW2Rlc2NlbmRhbnRzXSBhcmUgdGhlIHByb3BlciBkZXNjZW5kYW50cyBvZiBbaW5uZXJdIHdlJ3ZlIHZpc2l0ZWQuXG4qKVxubGV0IHJlYyBjb21wcmVzcyB0IH5pbm5lcl9ub2RlIH5pbm5lciB+ZGVzY2VuZGFudHMgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIHQgaXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gICAgICAgUmUtcG9pbnQgYWxsIGRlc2NlbmRhbnRzIGRpcmVjdGx5IHRvIGl0IGJ5IHNldHRpbmcgdGhlbSB0byBbSW5uZXIgdF0uXG4gICAgICAgTm90ZTogd2UgZG9uJ3QgcmUtcG9pbnQgW2lubmVyXSBhcyBpdCBhbHJlYWR5IHBvaW50cyB0aGVyZS4gKilcbiAgICBMaXN0Lml0ZXIgZGVzY2VuZGFudHMgfmY6KGZ1biB0IC0+IHQubm9kZSA8LSBpbm5lcl9ub2RlKTtcbiAgICB0LCByXG4gIHwgSW5uZXIgdCcgYXMgbm9kZSAtPlxuICAgIGNvbXByZXNzIHQnIH5pbm5lcl9ub2RlOm5vZGUgfmlubmVyOnQgfmRlc2NlbmRhbnRzOihpbm5lciA6OiBkZXNjZW5kYW50cylcbjs7XG5cbmxldCByZXByZXNlbnRhdGl2ZSB0ID1cbiAgbWF0Y2ggdC5ub2RlIHdpdGhcbiAgfCBSb290IHIgLT4gdCwgclxuICB8IElubmVyIHQnIGFzIG5vZGUgLT4gY29tcHJlc3MgdCcgfmlubmVyX25vZGU6bm9kZSB+aW5uZXI6dCB+ZGVzY2VuZGFudHM6W11cbjs7XG5cbmxldCByb290IHQgPVxuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgciAtPlxuICAgICgqIGF2b2lkIHR1cGxlIGFsbG9jYXRpb24gaW4gdGhlIGZhc3QgcGF0aCAqKVxuICAgIHJcbiAgfCBfIC0+IHNuZCAocmVwcmVzZW50YXRpdmUgdClcbjs7XG5cbmxldCByYW5rIHQgPSAocm9vdCB0KS5yYW5rXG5sZXQgZ2V0IHQgPSAocm9vdCB0KS52YWx1ZVxubGV0IHNldCB0IHYgPSAocm9vdCB0KS52YWx1ZSA8LSB2XG5sZXQgc2FtZV9jbGFzcyB0MSB0MiA9IHBoeXNfZXF1YWwgKHJvb3QgdDEpIChyb290IHQyKVxuXG5sZXQgdW5pb24gdDEgdDIgPVxuICBsZXQgdDEsIHIxID0gcmVwcmVzZW50YXRpdmUgdDEgaW5cbiAgbGV0IHQyLCByMiA9IHJlcHJlc2VudGF0aXZlIHQyIGluXG4gIGlmIHBoeXNfZXF1YWwgcjEgcjJcbiAgdGhlbiAoKVxuICBlbHNlIChcbiAgICBsZXQgbjEgPSByMS5yYW5rIGluXG4gICAgbGV0IG4yID0gcjIucmFuayBpblxuICAgIGlmIG4xIDwgbjJcbiAgICB0aGVuIHQxLm5vZGUgPC0gSW5uZXIgdDJcbiAgICBlbHNlIChcbiAgICAgIHQyLm5vZGUgPC0gSW5uZXIgdDE7XG4gICAgICBpZiBuMSA9IG4yIHRoZW4gcjEucmFuayA8LSByMS5yYW5rICsgMSkpXG47O1xuXG5sZXQgaXNfY29tcHJlc3NlZCB0ID1cbiAgaW52YXJpYW50IGlnbm9yZSB0O1xuICBtYXRjaCB0Lm5vZGUgd2l0aFxuICB8IFJvb3QgXyAtPiB0cnVlXG4gIHwgSW5uZXIgdCAtPlxuICAgIChtYXRjaCB0Lm5vZGUgd2l0aFxuICAgICB8IFJvb3QgXyAtPiB0cnVlXG4gICAgIHwgSW5uZXIgXyAtPiBmYWxzZSlcbjs7XG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCBpc19jb21wcmVzc2VkID0gaXNfY29tcHJlc3NlZFxuICBsZXQgcmFuayA9IHJhbmtcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERvdWJseV9saW5rZWRfaW50ZlxuXG4oKiBJTlZBUklBTlQ6IFRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiBhIGxpc3QgaXMgbXV0YXRlZCBkdXJpbmcgYSBwZW5kaW5nIGl0ZXJhdGlvbi5cblxuICAgVGhpcyBpbnZhcmlhbnQgaXMgZ3VhcmFudGVlZCBieSB0aGUgSGVhZGVyIGFuZCBFbHQgbW9kdWxlcyBpbiBjb25qdW5jdGlvbi4gIEFsbFxuICAgZG93bnN0cmVhbSBjb2RlIGluIHRoaXMgbW9kdWxlIG5lZWQgbm90IGJlIGNvbmNlcm5lZCB3aXRoIHRoaXMgaW52YXJpYW50LiAqKVxuZXhjZXB0aW9uIEF0dGVtcHRfdG9fbXV0YXRlX2xpc3RfZHVyaW5nX2l0ZXJhdGlvblxuXG5sZXQgcGh5c19lcXVhbCA9ICggPT0gKVxuXG5tb2R1bGUgSGVhZGVyIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCBjcmVhdGUgOiB1bml0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBlcXVhbCA6IHQgLT4gdCAtPiBib29sXG4gIHZhbCBpbmNyX2xlbmd0aCA6IGJ5OmludCAtPiB0IC0+IHVuaXRcbiAgdmFsIGNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyA6IHQgLT4gdW5pdFxuXG4gICgqIFVuZm9ydHVuYXRlLCBidXQgYnkgc3BlY2lhbGl6aW5nIFt3aXRoX2l0ZXJhdGlvbl0gZm9yIGRpZmZlcmVudCBhcml0aWVzLCBhIGxhcmdlXG4gICAgIGFtb3VudCBvZiBhbGxvY2F0aW9uIGR1cmluZyBmb2xkcyBhbmQgaXRlcmF0aW9ucyBpcyBhdm9pZGVkLlxuXG4gICAgIFRoZSBvcmlnaW5hbCB0eXBlIG9mIFt3aXRoX2l0ZXJhdGlvbl0gd2FzXG4gICAgIFt2YWwgd2l0aF9pdGVyYXRpb24gOiB0IC0+ICh1bml0IC0+ICdhKSAtPiAnYV1cblxuICAgICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuXG4gICAgIHtbXG4gICAgICAgbGV0IHggPSBlIGluXG4gICAgICAgbGV0IGYgKCkgPSBnIHggaW5cbiAgICAgICBmICgpXG4gICAgIF19XG4gICAgIGFuZFxuICAgICB7W1xuICAgICAgIGxldCB4ID0gZSBpblxuICAgICAgIGxldCBmIHggPSBnIHggaW5cbiAgICAgICBmIHhcbiAgICAgXX1cbiAgICAgaXMgdGhhdCBpbiB0aGUgZmlyc3QgY2FzZSB0aGUgY2xvc3VyZSBmb3IgW2ZdIGNvbnRhaW5zIGEgcG9pbnRlciB0byBbeF0sXG4gICAgIGFuZCBpbiB0aGUgc2Vjb25kIGNhc2UgaXQgZG9lc24ndC4gQSBjbG9zdXJlIHdpdGhvdXQgcG9pbnRlcnMgdG8gZW5jbG9zaW5nXG4gICAgIGVudmlyb25tZW50IGlzIGltcGxlbWVudGVkIGFzIGEgbmFrZWQgZnVuY3Rpb24gcG9pbnRlciwgc28gd2UgZG9uJ3RcbiAgICAgYWxsb2NhdGUgYXQgYWxsLlxuXG4gICAgIEZvciB0aGUgc2FtZSByZWFzb24gd2UgbWFrZSBzdXJlIG5vdCB0byBjYWxsIFtSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiAuLi4pXVxuICAgICBpbnNpZGUgW3dpdGhfaXRlcmF0aW9uXSBhbmQgZG8gYW4gZXhwbGljaXQgbWF0Y2ggc3RhdGVtZW50IGluc3RlYWQuICopXG5cbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzIgOiB0IC0+ICdhIC0+ICdiIC0+ICgnYSAtPiAnYiAtPiAnYykgLT4gJ2NcbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzMgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCkgLT4gJ2RcbiAgdmFsIHdpdGhfaXRlcmF0aW9uXzQgOiB0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiAnZSkgLT4gJ2VcbiAgdmFsIG1lcmdlIDogdCAtPiB0IC0+IFsgYFNhbWVfYWxyZWFkeSB8IGBNZXJnZWQgXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgcyA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGVuZGluZ19pdGVyYXRpb25zIDogaW50XG4gICAgfVxuXG4gIHR5cGUgdCA9IHMgVW5pb25fZmluZC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA9IFVuaW9uX2ZpbmQuY3JlYXRlIHsgbGVuZ3RoID0gMTsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9XG4gIGxldCBlcXVhbCAodDEgOiB0KSB0MiA9IFVuaW9uX2ZpbmQuc2FtZV9jbGFzcyB0MSB0MlxuICBsZXQgbGVuZ3RoIHQgPSAoVW5pb25fZmluZC5nZXQgdCkubGVuZ3RoXG5cbiAgbGV0IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaWYgcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPiAwIHRoZW4gcmFpc2UgQXR0ZW1wdF90b19tdXRhdGVfbGlzdF9kdXJpbmdfaXRlcmF0aW9uIGVsc2Ugc1xuICA7O1xuXG4gIGxldCBjaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCA9XG4gICAgaWdub3JlICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQgOiBzKVxuICA7O1xuXG4gIGxldCBpbmNyX2xlbmd0aCB+Ynk6biB0ID1cbiAgICBsZXQgcyA9IHVuaW9uX2ZpbmRfZ2V0X19jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdCBpblxuICAgIHMubGVuZ3RoIDwtIHMubGVuZ3RoICsgblxuICA7O1xuXG4gICgqIENhcmUgaXMgdGFrZW4gbm90IHRvIGFsbG9jYXRlIGluIFt3aXRoX2l0ZXJhdGlvbl8qXSwgc2luY2UgaXQgaXMgY2FsbGVkIGV2ZXJ5IHNlY29uZFxuICAgICBieSBbZXZlcnlfc2Vjb25kXSBpbiBbd3JpdGVyMC5tbF0gKilcblxuICBsZXQgaW5jcl9wZW5kaW5nX2l0ZXJzIHMgPSBzLnBlbmRpbmdfaXRlcmF0aW9ucyA8LSBzLnBlbmRpbmdfaXRlcmF0aW9ucyArIDFcbiAgbGV0IGRlY3JfcGVuZGluZ19pdGVycyBzID0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgPC0gcy5wZW5kaW5nX2l0ZXJhdGlvbnMgLSAxXG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzIgdCBhIGIgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgd2l0aFxuICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByYWlzZSBleG5cbiAgICB8IHIgLT5cbiAgICAgIGRlY3JfcGVuZGluZ19pdGVycyBzO1xuICAgICAgclxuICA7O1xuXG4gIGxldCB3aXRoX2l0ZXJhdGlvbl8zIHQgYSBiIGMgZiA9XG4gICAgbGV0IHMgPSBVbmlvbl9maW5kLmdldCB0IGluXG4gICAgaW5jcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgbWF0Y2ggZiBhIGIgYyB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IHdpdGhfaXRlcmF0aW9uXzQgdCBhIGIgYyBkIGYgPVxuICAgIGxldCBzID0gVW5pb25fZmluZC5nZXQgdCBpblxuICAgIGluY3JfcGVuZGluZ19pdGVycyBzO1xuICAgIG1hdGNoIGYgYSBiIGMgZCB3aXRoXG4gICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICBkZWNyX3BlbmRpbmdfaXRlcnMgcztcbiAgICAgIHJhaXNlIGV4blxuICAgIHwgciAtPlxuICAgICAgZGVjcl9wZW5kaW5nX2l0ZXJzIHM7XG4gICAgICByXG4gIDs7XG5cbiAgbGV0IG1lcmdlICh0MSA6IHQpIHQyID1cbiAgICBpZiBVbmlvbl9maW5kLnNhbWVfY2xhc3MgdDEgdDJcbiAgICB0aGVuIGBTYW1lX2FscmVhZHlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuMSA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxKS5sZW5ndGggaW5cbiAgICAgIGxldCBuMiA9ICh1bmlvbl9maW5kX2dldF9fY2hlY2tfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQyKS5sZW5ndGggaW5cbiAgICAgIHdpdGhfaXRlcmF0aW9uXzQgdDEgdDEgdDIgbjEgbjIgKGZ1biB0MSB0MiBuMSBuMiAtPlxuICAgICAgICB3aXRoX2l0ZXJhdGlvbl80IHQyIHQxIHQyIG4xIG4yIChmdW4gdDEgdDIgbjEgbjIgLT5cbiAgICAgICAgICBVbmlvbl9maW5kLnVuaW9uIHQxIHQyO1xuICAgICAgICAgIFVuaW9uX2ZpbmQuc2V0IHQxIHsgbGVuZ3RoID0gbjEgKyBuMjsgcGVuZGluZ19pdGVyYXRpb25zID0gMCB9KSk7XG4gICAgICBgTWVyZ2VkKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBFbHQgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGhlYWRlciA6ICdhIHQgLT4gSGVhZGVyLnRcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGNyZWF0ZSA6ICdhIC0+ICdhIHRcbiAgdmFsIHZhbHVlIDogJ2EgdCAtPiAnYVxuICB2YWwgc2V0IDogJ2EgdCAtPiAnYSAtPiB1bml0XG4gIHZhbCB1bmxpbmsgOiAnYSB0IC0+IHVuaXRcbiAgdmFsIHNwbGl0X29yX3NwbGljZV9iZWZvcmUgOiAnYSB0IC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIDogJ2EgdCAtPiAnYSB0IC0+IHVuaXRcbiAgdmFsIGluc2VydF9hZnRlciA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgaW5zZXJ0X2JlZm9yZSA6ICdhIHQgLT4gJ2EgLT4gJ2EgdFxuICB2YWwgdW5saW5rX2JlZm9yZSA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgbmV4dCA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgcHJldiA6ICdhIHQgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgICA7IG11dGFibGUgcHJldiA6ICdhIHRcbiAgICA7IG11dGFibGUgbmV4dCA6ICdhIHRcbiAgICA7IG11dGFibGUgaGVhZGVyIDogSGVhZGVyLnRcbiAgICB9XG5cbiAgbGV0IGVxdWFsID0gcGh5c19lcXVhbFxuICBsZXQgbmV4dCB0ID0gdC5uZXh0XG4gIGxldCBwcmV2IHQgPSB0LnByZXZcbiAgbGV0IGhlYWRlciB0ID0gdC5oZWFkZXJcblxuICBsZXQgY3JlYXRlX2F1eCB2IGhlYWRlciA9XG4gICAgbGV0IHJlYyB0ID0geyB2YWx1ZSA9IHY7IHByZXYgPSB0OyBuZXh0ID0gdDsgaGVhZGVyIH0gaW5cbiAgICB0XG4gIDs7XG5cbiAgbGV0IGlzX3NpbmdsZXRvbiB0ID0gZXF1YWwgdCB0LnByZXZcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IHNleHBfb2ZfYSB0LnZhbHVlXG4gIGxldCBjcmVhdGUgdiA9IGNyZWF0ZV9hdXggdiAoSGVhZGVyLmNyZWF0ZSAoKSlcbiAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG4gIGxldCBzZXQgdCB2ID0gdC52YWx1ZSA8LSB2XG5cbiAgKCpcbiAgICAgW3NwbGl0X29yX3NwbGljZV0gaXMgc3VmZmljaWVudCBhcyB0aGUgbG9uZSBwcmltaXRpdmUgZm9yXG4gICAgIGFjY29tcGxpc2hpbmcgYWxsIHBvaW50ZXIgdXBkYXRlcyBvbiBjeWNsaWMgbG9vcHMgb2YgbGlzdCBub2Rlcy5cbiAgICAgSXQgdGFrZXMgdHdvIFwiZ2Fwc1wiIGJldHdlZW4gYWRqYWNlbnQgbGlua2VkIGxpc3Qgbm9kZXMuICBJZiB0aGUgZ2Fwc1xuICAgICBwb2ludCBpbnRvIHRoZSBzYW1lIGxpc3QsIHRoZSByZXN1bHQgaXMgdGhhdCBpdCB3aWxsIGJlIHNwbGl0IGludG9cbiAgICAgdHdvIGxpc3RzIGFmdGVyd2FyZHMuICBJZiB0aGUgZ2FwcyBwb2ludCBpbnRvIGRpZmZlcmVudCBsaXN0cywgdGhlXG4gICAgIHJlc3VsdCBpcyB0aGF0IHRoZXkgd2lsbCBiZSBzcGxpY2VkIHRvZ2V0aGVyIGludG8gb25lIGxpc3QgYWZ0ZXJ3YXJkcy5cblxuICAgICB7dlxuICAgICAgIEJlZm9yZSAgICAgICAgICAgICAgICAgICAgICBBZnRlclxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgICAgICAgICAgICstLS0tLVxuICAgICAgICAgICAgICBBIHwgIDwtLT4gIHwgQiAgICAgICAgICAgICAgIEEgfCAgPC0tLSAgIC0tLT4gIHwgQlxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIFxcIC8gICAgICArLS0tLS1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWFxuICAgICAgICAgICAtLS0tLSsgICAgICAgICstLS0tLSAgICAgICAgIC0tLS0tKyAgICAgIC8gXFwgICAgICArLS0tLS1cbiAgICAgICAgICAgICAgQyB8ICA8LS0+ICB8IEQgICAgICAgICAgICAgICBDIHwgIDwtLS0gICAtLS0+ICB8IERcbiAgICAgICAgICAgLS0tLS0rICAgICAgICArLS0tLS0gICAgICAgICAtLS0tLSsgICAgICAgICAgICAgICArLS0tLS1cbiAgICAgdn0gKilcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZSB+cHJldjE6YSB+bmV4dDE6YiB+cHJldjI6YyB+bmV4dDI6ZCA9XG4gICAgYS5uZXh0IDwtIGQ7XG4gICAgZC5wcmV2IDwtIGE7XG4gICAgYy5uZXh0IDwtIGI7XG4gICAgYi5wcmV2IDwtIGNcbiAgOztcblxuICBsZXQgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MiA9XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZVxuICAgICAgfm5leHQxOnQxLm5leHRcbiAgICAgIH5wcmV2MTp0MS5uZXh0LnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5uZXh0XG4gICAgICB+cHJldjI6dDIubmV4dC5wcmV2XG4gIDs7XG5cbiAgbGV0IHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlXG4gICAgICB+cHJldjE6dDEucHJldlxuICAgICAgfm5leHQxOnQxLnByZXYubmV4dFxuICAgICAgfnByZXYyOnQyLnByZXZcbiAgICAgIH5uZXh0Mjp0Mi5wcmV2Lm5leHRcbiAgOztcblxuICBsZXQgY2hlY2tfdHdvX25vZGVzX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MSB0MiA9XG4gICAgSGVhZGVyLmNoZWNrX25vX3BlbmRpbmdfaXRlcmF0aW9ucyB0MS5oZWFkZXI7XG4gICAgaWYgbm90IChIZWFkZXIuZXF1YWwgdDEuaGVhZGVyIHQyLmhlYWRlcilcbiAgICB0aGVuIEhlYWRlci5jaGVja19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDIuaGVhZGVyXG4gIDs7XG5cbiAgKCogV2UgcmVkZWZpbmUgc2FmZSB2ZXJzaW9ucyBmb3IgZXhwb3J0ICopXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYWZ0ZXIgdDEgdDIgPVxuICAgIGNoZWNrX3R3b19ub2Rlc19ub19wZW5kaW5nX2l0ZXJhdGlvbnMgdDEgdDI7XG4gICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0MSB0MlxuICA7O1xuXG4gIGxldCBzcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyID1cbiAgICBjaGVja190d29fbm9kZXNfbm9fcGVuZGluZ19pdGVyYXRpb25zIHQxIHQyO1xuICAgIHVuc2FmZV9zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIHQxIHQyXG4gIDs7XG5cbiAgbGV0IGluc2VydF9iZWZvcmUgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgbm9kZVxuICA7O1xuXG4gIGxldCBpbnNlcnRfYWZ0ZXIgdCB2ID1cbiAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OjE7XG4gICAgbGV0IG5vZGUgPSBjcmVhdGVfYXV4IHYgdC5oZWFkZXIgaW5cbiAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIHQgbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGR1bW15X2hlYWRlciA9IEhlYWRlci5jcmVhdGUgKClcblxuICBsZXQgdW5saW5rX2JlZm9yZSB0ID1cbiAgICBsZXQgbm9kZSA9IHQucHJldiBpblxuICAgIGlmIGlzX3NpbmdsZXRvbiBub2RlXG4gICAgdGhlbiBub2RlXG4gICAgZWxzZSAoXG4gICAgICBIZWFkZXIuaW5jcl9sZW5ndGggdC5oZWFkZXIgfmJ5OigtMSk7XG4gICAgICB1bnNhZmVfc3BsaXRfb3Jfc3BsaWNlX2JlZm9yZSB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmtfYWZ0ZXIgdCA9XG4gICAgbGV0IG5vZGUgPSB0Lm5leHQgaW5cbiAgICBpZiBpc19zaW5nbGV0b24gbm9kZVxuICAgIHRoZW4gbm9kZVxuICAgIGVsc2UgKFxuICAgICAgSGVhZGVyLmluY3JfbGVuZ3RoIHQuaGVhZGVyIH5ieTooLTEpO1xuICAgICAgdW5zYWZlX3NwbGl0X29yX3NwbGljZV9hZnRlciB0IG5vZGU7XG4gICAgICBub2RlLmhlYWRlciA8LSBkdW1teV9oZWFkZXI7XG4gICAgICBub2RlKVxuICA7O1xuXG4gIGxldCB1bmxpbmsgdCA9IGlnbm9yZSAodW5saW5rX2FmdGVyIHQucHJldiA6IF8gdClcbmVuZFxuXG50eXBlICdhIHQgPSAnYSBFbHQudCBvcHRpb24gcmVmXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBoZWFkIC0+XG4gICAgbGV0IGhlYWRlciA9IEVsdC5oZWFkZXIgaGVhZCBpblxuICAgIGxldCByZWMgbG9vcCBuIGVsdCA9XG4gICAgICBsZXQgbmV4dF9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIGxldCBwcmV2X2VsdCA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQucHJldiBuZXh0X2VsdCkpO1xuICAgICAgYXNzZXJ0IChFbHQuZXF1YWwgZWx0IChFbHQubmV4dCBwcmV2X2VsdCkpO1xuICAgICAgYXNzZXJ0IChIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZWx0KSBoZWFkZXIpO1xuICAgICAgaW52YXJpYW50X2EgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgaWYgRWx0LmVxdWFsIG5leHRfZWx0IGhlYWQgdGhlbiBuIGVsc2UgbG9vcCAobiArIDEpIG5leHRfZWx0XG4gICAgaW5cbiAgICBsZXQgbGVuID0gbG9vcCAxIGhlYWQgaW5cbiAgICBhc3NlcnQgKGxlbiA9IEhlYWRlci5sZW5ndGggaGVhZGVyKVxuOztcblxubGV0IGNyZWF0ZSAodHlwZSBhKSAoKSA6IGEgdCA9IHJlZiBOb25lXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBjcmVhdGUgKClcbiAgfCB4IDo6IHhzIC0+XG4gICAgbGV0IGZpcnN0ID0gRWx0LmNyZWF0ZSB4IGluXG4gICAgbGV0IF9sYXN0ID0gTGlzdC5mb2xkIHhzIH5pbml0OmZpcnN0IH5mOkVsdC5pbnNlcnRfYWZ0ZXIgaW5cbiAgICByZWYgKFNvbWUgZmlyc3QpXG47O1xuXG5sZXQgb2ZfYXJyYXkgPSBmdW5jdGlvblxuICB8IFt8fF0gLT4gY3JlYXRlICgpXG4gIHwgYXJyIC0+XG4gICAgbGV0IGZpcnN0ID0gRWx0LmNyZWF0ZSBhcnIuKDApIGluXG4gICAgbGV0IHJlYyBsb29wIGFyciBlbHQgaSA9XG4gICAgICBpZiBpIDwgQXJyYXkubGVuZ3RoIGFyciB0aGVuIGxvb3AgYXJyIChFbHQuaW5zZXJ0X2FmdGVyIGVsdCBhcnIuKGkpKSAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIGFyciBmaXJzdCAxO1xuICAgIHJlZiAoU29tZSBmaXJzdClcbjs7XG5cbmxldCBtYXAgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGNyZWF0ZSAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBsZXQgbmV3X2ZpcnN0ID0gRWx0LmNyZWF0ZSAoZiAoRWx0LnZhbHVlIGZpcnN0KSkgaW5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfZmlyc3QgZmlyc3QgKGZ1biBmIG5ld19maXJzdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBFbHQuaW5zZXJ0X2FmdGVyIGFjYyAoZiAoRWx0LnZhbHVlIGVsdCkpIGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgICgqIHVucm9sbCBhbmQgc2tpcCBmaXJzdCBlbHQgKilcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZmlyc3QgaW5cbiAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiBuZXdfZmlyc3QgZmlyc3QgbmV4dCk7XG4gICAgcmVmIChTb21lIG5ld19maXJzdClcbjs7XG5cbmxldCBtYXBpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBjcmVhdGUgKClcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19maXJzdCA9IEVsdC5jcmVhdGUgKGYgMCAoRWx0LnZhbHVlIGZpcnN0KSkgaW5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfZmlyc3QgZmlyc3QgKGZ1biBmIG5ld19maXJzdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgaSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IEVsdC5pbnNlcnRfYWZ0ZXIgYWNjIChmIGkgKEVsdC52YWx1ZSBlbHQpKSBpblxuICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgICgqIHVucm9sbCBhbmQgc2tpcCBmaXJzdCBlbHQgKilcbiAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZmlyc3QgaW5cbiAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAxIG5ld19maXJzdCBmaXJzdCBuZXh0KTtcbiAgICByZWYgKFNvbWUgbmV3X2ZpcnN0KVxuOztcblxubGV0IGZvbGRfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgZmlyc3QgbmV4dFxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRpX2VsdCB0IH5pbml0IH5mID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBpbml0IGZpcnN0IChmdW4gZiBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGFjYyBmaXJzdCBlbHQgPVxuICAgICAgICBsZXQgYWNjID0gZiBpIGFjYyBlbHQgaW5cbiAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gYWNjIGVsc2UgbG9vcCBmIChpICsgMSkgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgMCBpbml0IGZpcnN0IGZpcnN0KVxuOztcblxubGV0IGZvbGRfZWx0XzEgdCB+aW5pdCB+ZiBhID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiBhIGluaXQgZmlyc3QgKGZ1biBmIGEgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYSBhY2MgZmlyc3QgZWx0ID1cbiAgICAgICAgbGV0IGFjYyA9IGYgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhIGFjYyBmaXJzdCBuZXh0XG4gICAgICBpblxuICAgICAgbG9vcCBmIGEgaW5pdCBmaXJzdCBmaXJzdClcbjs7XG5cbmxldCBmb2xkaV9lbHRfMSB0IH5pbml0IH5mIGEgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIGEgaW5pdCBmaXJzdCAoZnVuIGYgYSBpbml0IGZpcnN0IC0+XG4gICAgICBsZXQgcmVjIGxvb3AgZiBpIGEgYWNjIGZpcnN0IGVsdCA9XG4gICAgICAgIGxldCBhY2MgPSBmIGkgYSBhY2MgZWx0IGluXG4gICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiAoaSArIDEpIGEgYWNjIGZpcnN0IG5leHRcbiAgICAgIGluXG4gICAgICBsb29wIGYgMCBhIGluaXQgZmlyc3QgZmlyc3QpXG47O1xuXG5sZXQgaXRlcl9lbHQgdCB+ZiA9IGZvbGRfZWx0XzEgdCB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+IGYgZWx0KSBmXG5sZXQgaXRlcmlfZWx0IHQgfmYgPSBmb2xkaV9lbHQgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgZWx0IC0+IGYgaSBlbHQpXG5cbm9wZW4gV2l0aF9yZXR1cm5cblxubGV0IGZpbmRfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkX2VsdF8xIHQgZiB+aW5pdDooKSB+ZjooZnVuIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIHIucmV0dXJuIChTb21lIGVsdCkpO1xuICAgIE5vbmUpXG47O1xuXG5sZXQgZmluZGlfZWx0IHQgfmYgPVxuICB3aXRoX3JldHVybiAoZnVuIHIgLT5cbiAgICBmb2xkaV9lbHRfMSB0IGYgfmluaXQ6KCkgfmY6KGZ1biBpIGYgKCkgZWx0IC0+XG4gICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpIHRoZW4gci5yZXR1cm4gKFNvbWUgKGksIGVsdCkpKTtcbiAgICBOb25lKVxuOztcblxuKCogdGhpcyBmdW5jdGlvbiBpcyBsYW1iZGEgbGlmdGVkIGZvciBwZXJmb3JtYW5jZSwgdG8gbWFrZSBkaXJlY3QgcmVjdXJzaXZlIGNhbGxzIGluc3RlYWRcbiAgIG9mIGNhbGxzIHRocm91Z2ggaXRzIGNsb3N1cmUuIEl0IGFsc28gYXZvaWRzIHRoZSBpbml0aWFsIGNsb3N1cmUgYWxsb2NhdGlvbi4gKilcbmxldCByZWMgaXRlcl9sb29wIGZpcnN0IGYgZWx0ID1cbiAgZiAoRWx0LnZhbHVlIGVsdCk7XG4gIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGl0ZXJfbG9vcCBmaXJzdCBmIG5leHRcbjs7XG5cbmxldCBpdGVyIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMiAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJfbG9vcCBmaXJzdCBmIGZpcnN0KVxuOztcblxubGV0IGxlbmd0aCB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gMFxuICB8IFNvbWUgZmlyc3QgLT4gSGVhZGVyLmxlbmd0aCAoRWx0LmhlYWRlciBmaXJzdClcbjs7XG5cbmxldCByZWMgaXRlcmlfbG9vcCBmaXJzdCBmIGkgZWx0ID1cbiAgZiBpIChFbHQudmFsdWUgZWx0KTtcbiAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gaXRlcmlfbG9vcCBmaXJzdCBmIChpICsgMSkgbmV4dFxuOztcblxubGV0IGl0ZXJpIHQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMiAoRWx0LmhlYWRlciBmaXJzdCkgZmlyc3QgZiAoZnVuIGZpcnN0IGYgLT5cbiAgICAgIGl0ZXJpX2xvb3AgZmlyc3QgZiAwIGZpcnN0KVxuOztcblxubGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICBmb2xkaV9lbHRfMSB0IH5pbml0IGYgfmY6KGZ1biBpIGYgYWNjIGVsdCAtPiBmIGkgYWNjIChFbHQudmFsdWUgZWx0KSlcbjs7XG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZF9lbHRfMSB0IH5pbml0IGYgfmY6KGZ1biBmIGFjYyBlbHQgLT4gZiBhY2MgKEVsdC52YWx1ZSBlbHQpKVxuICAgIGxldCBpdGVyID0gYEN1c3RvbSBpdGVyXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IG1pbl9lbHQgPSBDLm1pbl9lbHRcbmxldCBtYXhfZWx0ID0gQy5tYXhfZWx0XG5sZXQgZm9sZF9yZXN1bHQgPSBDLmZvbGRfcmVzdWx0XG5sZXQgZm9sZF91bnRpbCA9IEMuZm9sZF91bnRpbFxuXG5sZXQgdW5jaGVja2VkX2l0ZXIgdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGYgZWx0ID1cbiAgICAgIGYgKEVsdC52YWx1ZSBlbHQpO1xuICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICgqIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBiYWcgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIGJ5IFtmXSAqKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZmlyc3QgLT4gaWYgbm90IChwaHlzX2VxdWFsIGZpcnN0IG5leHQpIHRoZW4gbG9vcCB0IGYgbmV4dFxuICAgIGluXG4gICAgbG9vcCB0IGYgZmlyc3Rcbjs7XG5cbmxldCBpc19lbXB0eSB0ID0gT3B0aW9uLmlzX25vbmUgIXRcblxuKCogbW9yZSBlZmZpY2llbnQgdGhhbiB3aGF0IENvbnRhaW5lci5NYWtlIHJldHVybnMgKilcblxubGV0IGZvbGRfcmlnaHQgdCB+aW5pdCB+ZiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluaXRcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgaW5pdCBmaXJzdCAoZnVuIGYgaW5pdCBmaXJzdCAtPlxuICAgICAgbGV0IHJlYyBsb29wIGYgYWNjIGVsdCA9XG4gICAgICAgIGxldCBwcmV2ID0gRWx0LnByZXYgZWx0IGluXG4gICAgICAgIGxldCBhY2MgPSBmIChFbHQudmFsdWUgcHJldikgYWNjIGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgcHJldiBmaXJzdCB0aGVuIGFjYyBlbHNlIGxvb3AgZiBhY2MgcHJldlxuICAgICAgaW5cbiAgICAgIGxvb3AgZiBpbml0IGZpcnN0KVxuOztcblxubGV0IGZvbGRfcmlnaHRfZWx0IHQgfmluaXQgfmYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbml0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zIChFbHQuaGVhZGVyIGZpcnN0KSBmIGluaXQgZmlyc3QgKGZ1biBmIGluaXQgZmlyc3QgLT5cbiAgICAgIGxldCByZWMgbG9vcCBmIGFjYyBlbHQgPVxuICAgICAgICBsZXQgcHJldiA9IEVsdC5wcmV2IGVsdCBpblxuICAgICAgICBsZXQgYWNjID0gZiBwcmV2IGFjYyBpblxuICAgICAgICBpZiBwaHlzX2VxdWFsIHByZXYgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIGYgYWNjIHByZXZcbiAgICAgIGluXG4gICAgICBsb29wIGYgaW5pdCBmaXJzdClcbjs7XG5cbmxldCB0b19saXN0IHQgPSBmb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB4IHRsIC0+IHggOjogdGwpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gTGlzdC5zZXhwX29mX3Qgc2V4cF9vZl9hICh0b19saXN0IHQpXG5sZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzID0gb2ZfbGlzdCAoTGlzdC50X29mX3NleHAgYV9vZl9zZXhwIHMpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQmFzZS5MaXN0LnRfc2V4cF9ncmFtbWFyIGVsdF9ncmFtbWFyKVxuOztcblxubGV0IGNvcHkgdCA9IG9mX2xpc3QgKHRvX2xpc3QgdClcbmxldCBjbGVhciB0ID0gdCA6PSBOb25lXG5cbmxldCBjb21wYXJlIGNvbXBhcmVfZWx0IHQxIHQyID1cbiAgbWF0Y2ggIXQxLCAhdDIgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gMFxuICB8IE5vbmUsIF8gLT4gLTFcbiAgfCBfLCBOb25lIC0+IDFcbiAgfCBTb21lIGYxLCBTb21lIGYyIC0+XG4gICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZjEpIGNvbXBhcmVfZWx0IGYxIGYyIChmdW4gY29tcGFyZV9lbHQgZjEgZjIgLT5cbiAgICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl8zXG4gICAgICAgIChFbHQuaGVhZGVyIGYyKVxuICAgICAgICBjb21wYXJlX2VsdFxuICAgICAgICBmMVxuICAgICAgICBmMlxuICAgICAgICAoZnVuIGNvbXBhcmVfZWx0IGYxIGYyIC0+XG4gICAgICAgICAgIGxldCByZWMgbG9vcCBjb21wYXJlX2VsdCBlbHQxIGYxIGVsdDIgZjIgPVxuICAgICAgICAgICAgIGxldCBjb21wYXJlX3Jlc3VsdCA9IGNvbXBhcmVfZWx0IChFbHQudmFsdWUgZWx0MSkgKEVsdC52YWx1ZSBlbHQyKSBpblxuICAgICAgICAgICAgIGlmIGNvbXBhcmVfcmVzdWx0IDw+IDBcbiAgICAgICAgICAgICB0aGVuIGNvbXBhcmVfcmVzdWx0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBsZXQgbmV4dDEgPSBFbHQubmV4dCBlbHQxIGluXG4gICAgICAgICAgICAgICBsZXQgbmV4dDIgPSBFbHQubmV4dCBlbHQyIGluXG4gICAgICAgICAgICAgICBtYXRjaCBwaHlzX2VxdWFsIG5leHQxIGYxLCBwaHlzX2VxdWFsIG5leHQyIGYyIHdpdGhcbiAgICAgICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSAtPiAwXG4gICAgICAgICAgICAgICB8IHRydWUsIGZhbHNlIC0+IC0xXG4gICAgICAgICAgICAgICB8IGZhbHNlLCB0cnVlIC0+IDFcbiAgICAgICAgICAgICAgIHwgZmFsc2UsIGZhbHNlIC0+IGxvb3AgY29tcGFyZV9lbHQgbmV4dDEgZjEgbmV4dDIgZjIpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxvb3AgY29tcGFyZV9lbHQgZjEgZjEgZjIgZjIpKVxuOztcblxuZXhjZXB0aW9uIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcblxubGV0IHRyYW5zZmVyIH5zcmMgfmRzdCA9XG4gIGlmIHBoeXNfZXF1YWwgc3JjIGRzdCB0aGVuIHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3Q7XG4gIG1hdGNoICFzcmMgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHNyY19oZWFkIC0+XG4gICAgKG1hdGNoICFkc3Qgd2l0aFxuICAgICB8IE5vbmUgLT5cbiAgICAgICBkc3QgOj0gU29tZSBzcmNfaGVhZDtcbiAgICAgICBjbGVhciBzcmNcbiAgICAgfCBTb21lIGRzdF9oZWFkIC0+XG4gICAgICAgKG1hdGNoIEhlYWRlci5tZXJnZSAoRWx0LmhlYWRlciBzcmNfaGVhZCkgKEVsdC5oZWFkZXIgZHN0X2hlYWQpIHdpdGhcbiAgICAgICAgfCBgU2FtZV9hbHJlYWR5IC0+IHJhaXNlIFRyYW5zZmVyX3NyY19hbmRfZHN0X2FyZV9zYW1lX2xpc3RcbiAgICAgICAgfCBgTWVyZ2VkIC0+XG4gICAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZHN0X2hlYWQgc3JjX2hlYWQ7XG4gICAgICAgICAgY2xlYXIgc3JjKSlcbjs7XG5cbmxldCBtYXBfaW5wbGFjZSB0IH5mID0gaXRlcl9lbHQgdCB+ZjooZnVuIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiAoRWx0LnZhbHVlIGVsdCkpKVxubGV0IG1hcGlfaW5wbGFjZSB0IH5mID0gaXRlcmlfZWx0IHQgfmY6KGZ1biBpIGVsdCAtPiBFbHQuc2V0IGVsdCAoZiBpIChFbHQudmFsdWUgZWx0KSkpXG5cbmxldCByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZSA9XG4gIExpc3QuaXRlciB0b19yZW1vdmUgfmY6KGZ1biBlbHQgLT5cbiAgICAobWF0Y2ggIXQgd2l0aFxuICAgICB8IE5vbmUgLT4gKClcbiAgICAgfCBTb21lIGhlYWQgLT5cbiAgICAgICBpZiBFbHQuZXF1YWwgaGVhZCBlbHRcbiAgICAgICB0aGVuIChcbiAgICAgICAgIGxldCBuZXh0X2VsdCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgdCA6PSBpZiBFbHQuZXF1YWwgaGVhZCBuZXh0X2VsdCB0aGVuIE5vbmUgZWxzZSBTb21lIG5leHRfZWx0KSk7XG4gICAgRWx0LnVubGluayBlbHQpXG47O1xuXG5sZXQgZmlsdGVyX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGVsdHMgZWx0IC0+XG4gICAgICAgICBpZiBmIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyaV9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRpX2VsdCB0IH5pbml0OltdIH5mOihmdW4gaSBlbHRzIGVsdCAtPlxuICAgICAgICAgaWYgZiBpIChFbHQudmFsdWUgZWx0KSB0aGVuIGVsdHMgZWxzZSBlbHQgOjogZWx0cykpXG4gIGluXG4gIHJlbW92ZV9saXN0IHQgdG9fcmVtb3ZlXG47O1xuXG5sZXQgZmlsdGVyX21hcF9pbnBsYWNlIHQgfmYgPVxuICBsZXQgdG9fcmVtb3ZlID1cbiAgICBMaXN0LnJldlxuICAgICAgKGZvbGRfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBlbHRzIGVsdCAtPlxuICAgICAgICAgbWF0Y2ggZiAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IGVsdCA6OiBlbHRzXG4gICAgICAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgICAgICAgRWx0LnNldCBlbHQgdmFsdWU7XG4gICAgICAgICAgIGVsdHMpKVxuICBpblxuICByZW1vdmVfbGlzdCB0IHRvX3JlbW92ZVxuOztcblxubGV0IGZpbHRlcl9tYXBpX2lucGxhY2UgdCB+ZiA9XG4gIGxldCB0b19yZW1vdmUgPVxuICAgIExpc3QucmV2XG4gICAgICAoZm9sZGlfZWx0IHQgfmluaXQ6W10gfmY6KGZ1biBpIGVsdHMgZWx0IC0+XG4gICAgICAgICBtYXRjaCBmIGkgKEVsdC52YWx1ZSBlbHQpIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBlbHQgOjogZWx0c1xuICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgIEVsdC5zZXQgZWx0IHZhbHVlO1xuICAgICAgICAgICBlbHRzKSlcbiAgaW5cbiAgcmVtb3ZlX2xpc3QgdCB0b19yZW1vdmVcbjs7XG5cbmV4Y2VwdGlvbiBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcblxubGV0IGZpcnN0X2VsdCB0ID0gIXRcbmxldCBsYXN0X2VsdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQucHJldiAhdFxubGV0IGZpcnN0IHQgPSBPcHRpb24ubWFwIH5mOkVsdC52YWx1ZSAoZmlyc3RfZWx0IHQpXG5sZXQgbGFzdCB0ID0gT3B0aW9uLm1hcCB+ZjpFbHQudmFsdWUgKGxhc3RfZWx0IHQpXG5cbmxldCBpc19maXJzdCB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5lcXVhbCBlbHQgZmlyc3RcbiAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuOztcblxubGV0IGlzX2xhc3QgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbGFzdCA9IEVsdC5wcmV2IGZpcnN0IGluXG4gICAgICBFbHQuZXF1YWwgZWx0IGxhc3QpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtZW1fZWx0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGZpcnN0IC0+IEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuOztcblxubGV0IHByZXYgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBTb21lIChFbHQucHJldiBlbHQpXG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBuZXh0IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnByZXYgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGxhc3RcbiAgICB0aGVuIE5vbmVcbiAgICBlbHNlIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgIHRoZW4gU29tZSAoRWx0Lm5leHQgZWx0KVxuICAgIGVsc2UgcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG47O1xuXG5sZXQgaW5zZXJ0X2FmdGVyIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgdGhlbiBFbHQuaW5zZXJ0X2FmdGVyIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfYmVmb3JlIHQgZWx0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgaWYgRWx0LmVxdWFsIGVsdCBmaXJzdFxuICAgIHRoZW4gKFxuICAgICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgICB0IDo9IFNvbWUgbmV3X2VsdDtcbiAgICAgIG5ld19lbHQpXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC5pbnNlcnRfYmVmb3JlIGVsdCB2XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBpbnNlcnRfZW1wdHkgdCB2ID1cbiAgbGV0IG5ld19lbHQgPSBFbHQuY3JlYXRlIHYgaW5cbiAgdCA6PSBTb21lIG5ld19lbHQ7XG4gIG5ld19lbHRcbjs7XG5cbmxldCBpbnNlcnRfbGFzdCB0IHYgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBpbnNlcnRfZW1wdHkgdCB2XG4gIHwgU29tZSBmaXJzdCAtPiBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2XG47O1xuXG5sZXQgaW5zZXJ0X2ZpcnN0IHQgdiA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IGluc2VydF9lbXB0eSB0IHZcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IG5ld19lbHQgPSBFbHQuaW5zZXJ0X2JlZm9yZSBmaXJzdCB2IGluXG4gICAgdCA6PSBTb21lIG5ld19lbHQ7XG4gICAgbmV3X2VsdFxuOztcblxubGV0IHJlbW92ZV9sYXN0IHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBmaXJzdCAtPlxuICAgIGxldCBsYXN0ID0gRWx0LnVubGlua19iZWZvcmUgZmlyc3QgaW5cbiAgICBpZiBFbHQuZXF1YWwgZmlyc3QgbGFzdCB0aGVuIHQgOj0gTm9uZTtcbiAgICBTb21lIChFbHQudmFsdWUgbGFzdClcbjs7XG5cbmxldCByZW1vdmVfZmlyc3QgdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IHNlY29uZCA9IEVsdC5uZXh0IGZpcnN0IGluXG4gICAgRWx0LnVubGluayBmaXJzdDtcbiAgICB0IDo9IGlmIEVsdC5lcXVhbCBmaXJzdCBzZWNvbmQgdGhlbiBOb25lIGVsc2UgU29tZSBzZWNvbmQ7XG4gICAgU29tZSAoRWx0LnZhbHVlIGZpcnN0KVxuOztcblxubGV0IHJlbW92ZSB0IGVsdCA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICB8IFNvbWUgZmlyc3QgLT5cbiAgICBpZiBFbHQuZXF1YWwgZWx0IGZpcnN0XG4gICAgdGhlbiBpZ25vcmUgKHJlbW92ZV9maXJzdCB0IDogXyBvcHRpb24pXG4gICAgZWxzZSBpZiBIZWFkZXIuZXF1YWwgKEVsdC5oZWFkZXIgZmlyc3QpIChFbHQuaGVhZGVyIGVsdClcbiAgICB0aGVuIEVsdC51bmxpbmsgZWx0XG4gICAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBmaWx0ZXIgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIGlmIGYgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyaSB0IH5mID1cbiAgbGV0IG5ld190ID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fMyAoRWx0LmhlYWRlciBmaXJzdCkgZiBuZXdfdCBmaXJzdCAoZnVuIGYgbmV3X3QgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIG5ld190IGZpcnN0IGVsdCA9XG4gICAgICAgICBpZiBmIGkgKEVsdC52YWx1ZSBlbHQpXG4gICAgICAgICB0aGVuIGluc2VydF9sYXN0IG5ld190IChFbHQudmFsdWUgZWx0KSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgKGkgKyAxKSBuZXdfdCBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgMCBuZXdfdCBmaXJzdCBmaXJzdCkpO1xuICBuZXdfdFxuOztcblxubGV0IGZpbHRlcl9tYXAgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgbmV3X3QgZmlyc3QgZWx0ID1cbiAgICAgICAgIChtYXRjaCBmIChFbHQudmFsdWUgZWx0KSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHZhbHVlIC0+IGluc2VydF9sYXN0IG5ld190IHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIG5ld190IGZpcnN0IGZpcnN0KSk7XG4gIG5ld190XG47O1xuXG5sZXQgZmlsdGVyX21hcGkgdCB+ZiA9XG4gIGxldCBuZXdfdCA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzMgKEVsdC5oZWFkZXIgZmlyc3QpIGYgbmV3X3QgZmlyc3QgKGZ1biBmIG5ld190IGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSBuZXdfdCBmaXJzdCBlbHQgPVxuICAgICAgICAgKG1hdGNoIGYgaSAoRWx0LnZhbHVlIGVsdCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiBpbnNlcnRfbGFzdCBuZXdfdCB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KSk7XG4gICAgICAgICBsZXQgbmV4dCA9IEVsdC5uZXh0IGVsdCBpblxuICAgICAgICAgaWYgbm90IChwaHlzX2VxdWFsIG5leHQgZmlyc3QpIHRoZW4gbG9vcCBmIChpICsgMSkgbmV3X3QgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIDAgbmV3X3QgZmlyc3QgZmlyc3QpKTtcbiAgbmV3X3Rcbjs7XG5cbmxldCBwYXJ0aXRpb25fdGYgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICBpbnNlcnRfbGFzdCAoaWYgZiAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiB0MSB0MiBmaXJzdCBuZXh0XG4gICAgICAgaW5cbiAgICAgICBsb29wIGYgdDEgdDIgZmlyc3QgZmlyc3QpKTtcbiAgdDEsIHQyXG47O1xuXG5sZXQgcGFydGl0aW9uaV90ZiB0IH5mID1cbiAgbGV0IHQxID0gY3JlYXRlICgpIGluXG4gIGxldCB0MiA9IGNyZWF0ZSAoKSBpblxuICAobWF0Y2ggIXQgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgSGVhZGVyLndpdGhfaXRlcmF0aW9uXzQgKEVsdC5oZWFkZXIgZmlyc3QpIGYgdDEgdDIgZmlyc3QgKGZ1biBmIHQxIHQyIGZpcnN0IC0+XG4gICAgICAgbGV0IHJlYyBsb29wIGYgaSB0MSB0MiBmaXJzdCBlbHQgPVxuICAgICAgICAgaW5zZXJ0X2xhc3QgKGlmIGYgaSAoRWx0LnZhbHVlIGVsdCkgdGhlbiB0MSBlbHNlIHQyKSAoRWx0LnZhbHVlIGVsdClcbiAgICAgICAgIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXAgdCB+ZiA9XG4gIGxldCB0MSA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdDIgPSBjcmVhdGUgKCkgaW5cbiAgKG1hdGNoICF0IHdpdGhcbiAgIHwgTm9uZSAtPiAoKVxuICAgfCBTb21lIGZpcnN0IC0+XG4gICAgIEhlYWRlci53aXRoX2l0ZXJhdGlvbl80IChFbHQuaGVhZGVyIGZpcnN0KSBmIHQxIHQyIGZpcnN0IChmdW4gZiB0MSB0MiBmaXJzdCAtPlxuICAgICAgIGxldCByZWMgbG9vcCBmIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgKEVsdC52YWx1ZSBlbHQpIDogKF8sIF8pIEVpdGhlci50KSB3aXRoXG4gICAgICAgICAgfCBGaXJzdCB2YWx1ZSAtPiBpbnNlcnRfbGFzdCB0MSB2YWx1ZSB8PiAoaWdub3JlIDogXyBFbHQudCAtPiB1bml0KVxuICAgICAgICAgIHwgU2Vjb25kIHZhbHVlIC0+IGluc2VydF9sYXN0IHQyIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpKTtcbiAgICAgICAgIGxldCBuZXh0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgbmV4dCBmaXJzdCkgdGhlbiBsb29wIGYgdDEgdDIgZmlyc3QgbmV4dFxuICAgICAgIGluXG4gICAgICAgbG9vcCBmIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxubGV0IHBhcnRpdGlvbl9tYXBpIHQgfmYgPVxuICBsZXQgdDEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHQyID0gY3JlYXRlICgpIGluXG4gIChtYXRjaCAhdCB3aXRoXG4gICB8IE5vbmUgLT4gKClcbiAgIHwgU29tZSBmaXJzdCAtPlxuICAgICBIZWFkZXIud2l0aF9pdGVyYXRpb25fNCAoRWx0LmhlYWRlciBmaXJzdCkgZiB0MSB0MiBmaXJzdCAoZnVuIGYgdDEgdDIgZmlyc3QgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZiBpIHQxIHQyIGZpcnN0IGVsdCA9XG4gICAgICAgICAobWF0Y2ggKGYgaSAoRWx0LnZhbHVlIGVsdCkgOiAoXywgXykgRWl0aGVyLnQpIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IHZhbHVlIC0+IGluc2VydF9sYXN0IHQxIHZhbHVlIHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG4gICAgICAgICAgfCBTZWNvbmQgdmFsdWUgLT4gaW5zZXJ0X2xhc3QgdDIgdmFsdWUgfD4gKGlnbm9yZSA6IF8gRWx0LnQgLT4gdW5pdCkpO1xuICAgICAgICAgbGV0IG5leHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCBuZXh0IGZpcnN0KSB0aGVuIGxvb3AgZiAoaSArIDEpIHQxIHQyIGZpcnN0IG5leHRcbiAgICAgICBpblxuICAgICAgIGxvb3AgZiAwIHQxIHQyIGZpcnN0IGZpcnN0KSk7XG4gIHQxLCB0MlxuOztcblxuZXhjZXB0aW9uIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3JcblxubGV0IG1vdmVfYmVmb3JlIHQgZWx0IH5hbmNob3IgPVxuICBpZiBFbHQuZXF1YWwgYW5jaG9yIGVsdCB0aGVuIHJhaXNlIEludmFsaWRfbW92ZV9fZWx0X2VxdWFsc19hbmNob3I7XG4gIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBhbmNob3IpIChFbHQuaGVhZGVyIGVsdClcbiAgdGhlbiAoXG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgICB8IFNvbWUgZmlyc3QgLT5cbiAgICAgIGlmIEhlYWRlci5lcXVhbCAoRWx0LmhlYWRlciBmaXJzdCkgKEVsdC5oZWFkZXIgZWx0KVxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIHVubGluayBbZWx0XSAqKVxuICAgICAgICBsZXQgYWZ0ZXJfZWx0ID0gRWx0Lm5leHQgZWx0IGluXG4gICAgICAgIEVsdC5zcGxpdF9vcl9zcGxpY2VfYmVmb3JlIGVsdCBhZnRlcl9lbHQ7XG4gICAgICAgIGxldCBmaXJzdCA9XG4gICAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgdCA6PSBTb21lIGFmdGVyX2VsdDtcbiAgICAgICAgICAgIGFmdGVyX2VsdClcbiAgICAgICAgICBlbHNlIGZpcnN0XG4gICAgICAgIGluXG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBiZWZvcmUgW2FuY2hvcl0gKilcbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgYW5jaG9yIGVsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGFuY2hvciB0aGVuIHQgOj0gU29tZSBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2Zyb250IHQgZWx0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IE5vbmUgLT4gcmFpc2UgRWx0X2RvZXNfbm90X2JlbG9uZ190b19saXN0XG4gIHwgU29tZSBmaXJzdCAtPiBpZiBub3QgKEVsdC5lcXVhbCBlbHQgZmlyc3QpIHRoZW4gbW92ZV9iZWZvcmUgdCBlbHQgfmFuY2hvcjpmaXJzdFxuOztcblxubGV0IG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvciA9XG4gIGlmIEVsdC5lcXVhbCBhbmNob3IgZWx0IHRoZW4gcmFpc2UgSW52YWxpZF9tb3ZlX19lbHRfZXF1YWxzX2FuY2hvcjtcbiAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGFuY2hvcikgKEVsdC5oZWFkZXIgZWx0KVxuICB0aGVuIChcbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdFxuICAgIHwgU29tZSBmaXJzdCAtPlxuICAgICAgaWYgSGVhZGVyLmVxdWFsIChFbHQuaGVhZGVyIGZpcnN0KSAoRWx0LmhlYWRlciBlbHQpXG4gICAgICB0aGVuIChcbiAgICAgICAgKCogdW5saW5rIFtlbHRdICopXG4gICAgICAgIGxldCBhZnRlcl9lbHQgPSBFbHQubmV4dCBlbHQgaW5cbiAgICAgICAgRWx0LnNwbGl0X29yX3NwbGljZV9iZWZvcmUgZWx0IGFmdGVyX2VsdDtcbiAgICAgICAgaWYgRWx0LmVxdWFsIGZpcnN0IGVsdCB0aGVuIHQgOj0gU29tZSBhZnRlcl9lbHQ7XG4gICAgICAgICgqIHNwbGljZSBbZWx0XSBpbiBhZnRlciBbYW5jaG9yXSAqKVxuICAgICAgICBFbHQuc3BsaXRfb3Jfc3BsaWNlX2FmdGVyIGFuY2hvciBlbHQpXG4gICAgICBlbHNlIHJhaXNlIEVsdF9kb2VzX25vdF9iZWxvbmdfdG9fbGlzdClcbiAgZWxzZSByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3Rcbjs7XG5cbmxldCBtb3ZlX3RvX2JhY2sgdCBlbHQgPVxuICBtYXRjaCAhdCB3aXRoXG4gIHwgTm9uZSAtPiByYWlzZSBFbHRfZG9lc19ub3RfYmVsb25nX3RvX2xpc3RcbiAgfCBTb21lIGZpcnN0IC0+XG4gICAgbGV0IGxhc3QgPSBFbHQucHJldiBmaXJzdCBpblxuICAgIGlmIG5vdCAoRWx0LmVxdWFsIGVsdCBsYXN0KSB0aGVuIG1vdmVfYWZ0ZXIgdCBlbHQgfmFuY2hvcjpsYXN0XG47O1xuXG5sZXQgdG9fc2VxdWVuY2UgdCA9IHRvX2xpc3QgdCB8PiBTZXF1ZW5jZS5vZl9saXN0XG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCYXNlLlNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2YgdCBsaXN0XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IFNleHBsaWIuU2V4cC50X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90ID0gU2V4cGxpYi5TZXhwLnNleHBfb2ZfdFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5pbmNsdWRlIChcbiAgQmFzZS5TZXhwIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuU2V4cFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSAoXG4gIFNleHBsaWIuU2V4cCA6XG4gICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwbGliLlNleHBcbiAgZW5kXG4gIHdpdGggdHlwZSB0IDo9IHQpXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIHR5cGUgc2V4cCA9IEJhc2UuU2V4cC50ID1cbiAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgfCBMaXN0IG9mIHQgbGlzdFxuZW5kXG5cbm1vZHVsZSBTZXhwX21heWJlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAoJ2EsIHQgKiBFcnJvci50KSBSZXN1bHQudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2hdXG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBSZXN1bHQuT2sgYSAtPiBzZXhwX29mX2EgYVxuICAgIHwgUmVzdWx0LkVycm9yIChzZXhwLCBlcnIpIC0+XG4gICAgICBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgRXJyb3Iuc2V4cF9vZl90IGVyciBdXG4gIDs7XG5cbiAgbGV0IHRfb2Zfc2V4cCBhX29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgfCBMaXN0IFsgQXRvbSBcInNleHBfcGFyc2VfZXJyb3JcIjsgc2V4cDsgXyBdIHwgc2V4cCAtPlxuICAgICAgKHRyeSBSZXN1bHQuT2sgKGFfb2Zfc2V4cCBzZXhwKSB3aXRoXG4gICAgICAgfCBleG4gLT4gUmVzdWx0LkVycm9yIChzZXhwLCBFcnJvci5vZl9leG4gZXhuKSlcbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgKGdyYW1tYXIgOiBfIFNleHBsaWIuU2V4cF9ncmFtbWFyLnQpIDogXyB0IFNleHBsaWIuU2V4cF9ncmFtbWFyLnQgPVxuICAgIHsgdW50eXBlZCA9IFVuaW9uIFsgZ3JhbW1hci51bnR5cGVkOyBCYXNlLlNleHAudF9zZXhwX2dyYW1tYXIudW50eXBlZCBdIH1cbiAgOztcbmVuZFxuXG5tb2R1bGUgV2l0aF90ZXh0ID0gc3RydWN0XG4gIG9wZW4gUmVzdWx0LkV4cG9ydFxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB2YWx1ZSA6ICdhXG4gICAgOyB0ZXh0IDogc3RyaW5nXG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBBdG9tIHQudGV4dFxuXG4gIGxldCBvZl90ZXh0IHZhbHVlX29mX3NleHAgPyhmaWxlbmFtZSA9IFwiXCIpIHRleHQgPVxuICAgIG1hdGNoIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gb2Zfc3RyaW5nX2NvbnYgdGV4dCB2YWx1ZV9vZl9zZXhwKSB3aXRoXG4gICAgfCBPayAoYFJlc3VsdCB2YWx1ZSkgLT4gT2sgeyB2YWx1ZTsgdGV4dCB9XG4gICAgfCBFcnJvciBfIGFzIGVyciAtPiBlcnJcbiAgICB8IE9rIChgRXJyb3IgKGV4biwgYW5ub3RhdGVkKSkgLT5cbiAgICAgIEVycm9yIChFcnJvci5vZl9leG4gKEFubm90YXRlZC5nZXRfY29udl9leG4gYW5ub3RhdGVkIH5maWxlOmZpbGVuYW1lIH5leGM6ZXhuKSlcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIGFfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICB8IExpc3QgXyAtPlxuICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICBcIldpdGhfdGV4dC50IHNob3VsZCBiZSBzdG9yZWQgYXMgYW4gYXRvbSwgYnV0IGluc3RlYWQgYSBsaXN0IHdhcyBmb3VuZC5cIlxuICAgICAgICBzZXhwXG4gICAgfCBBdG9tIHRleHQgLT4gb2ZfdGV4dCBhX29mX3NleHAgdGV4dCB8PiBPcl9lcnJvci5va19leG5cbiAgOztcblxuICBsZXQgdF9zZXhwX2dyYW1tYXIgXyA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBCYXNlLlN0cmluZy50X3NleHBfZ3JhbW1hclxuICBsZXQgdGV4dCB0ID0gdC50ZXh0XG4gIGxldCB2YWx1ZSB0ID0gdC52YWx1ZVxuXG4gIGxldCBvZl92YWx1ZSBzZXhwX29mX3ZhbHVlIHZhbHVlID1cbiAgICBsZXQgdGV4dCA9IHNleHBfb2ZfdmFsdWUgdmFsdWUgfD4gdG9fc3RyaW5nX2h1bSBpblxuICAgIHsgdmFsdWU7IHRleHQgfVxuICA7O1xuZW5kXG5cbnR5cGUgJ2Egbm9fcmFpc2UgPSAnYSBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbmxldCBzZXhwX29mX25vX3JhaXNlIHNleHBfb2ZfYSBhID1cbiAgdHJ5IHNleHBfb2ZfYSBhIHdpdGhcbiAgfCBleG4gLT5cbiAgICAodHJ5IExpc3QgWyBBdG9tIFwiZmFpbHVyZSBidWlsZGluZyBzZXhwXCI7IHNleHBfb2ZfZXhuIGV4biBdIHdpdGhcbiAgICAgfCBfIC0+IEF0b20gXCJjb3VsZCBub3QgYnVpbGQgc2V4cCBmb3IgZXhuIHJhaXNlZCB3aGVuIGJ1aWxkaW5nIHNleHAgZm9yIHZhbHVlXCIpXG47O1xuXG5pbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kIChCYXNlLlNleHApIChCYXNlLlNleHApXG5cbmxldCBvZl9zZXhwX2FsbG93X2V4dHJhX2ZpZWxkc19yZWN1cnNpdmVseSBvZl9zZXhwIHNleHAgPVxuICBsZXQgciA9IFNleHBsaWIuQ29udi5yZWNvcmRfY2hlY2tfZXh0cmFfZmllbGRzIGluXG4gIGxldCBwcmV2ID0gIXIgaW5cbiAgRXhuLnByb3RlY3RcbiAgICB+ZmluYWxseTooZnVuICgpIC0+IHIgOj0gcHJldilcbiAgICB+ZjooZnVuICgpIC0+XG4gICAgICByIDo9IGZhbHNlO1xuICAgICAgb2Zfc2V4cCBzZXhwKVxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zZXhwXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5zZXhwXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5zZXhwXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gSGFzaF9xdWV1ZV9pbnRmXG5cbm1vZHVsZSB0eXBlIEtleSA9IEtleVxubW9kdWxlIHR5cGUgU19iYWNrZW5kID0gU19iYWNrZW5kXG5cbm1vZHVsZSBNYWtlX2JhY2tlbmQgKFRhYmxlIDogSGFzaHRibF9pbnRmLkhhc2h0YmwpIDogU19iYWNrZW5kID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIEJhY2tlbmQgPVxuICAgIFMxXG4gICAgd2l0aCB0eXBlICdrZXkgY3JlYXRlX2FyZyA6PSAna2V5IEhhc2h0YmwuSGFzaGFibGUudFxuICAgIHdpdGggdHlwZSAna2V5IGNyZWF0ZV9rZXkgOj0gJ2tleVxuXG4gIG1vZHVsZSBCYWNrZW5kIDogQmFja2VuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBLZXlfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgKCdrZXksICd2YWx1ZSkgdCA9XG4gICAgICAgICAgeyBrZXkgOiAna2V5XG4gICAgICAgICAgOyBtdXRhYmxlIHZhbHVlIDogJ3ZhbHVlXG4gICAgICAgICAgfVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQga2V5IHQgPSB0LmtleVxuICAgICAgbGV0IHZhbHVlIHQgPSB0LnZhbHVlXG5cbiAgICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9rZXkgc2V4cF9vZl9kYXRhIHsga2V5OyB2YWx1ZSB9ID1cbiAgICAgICAgWyVzZXhwX29mOiBrZXkgKiBkYXRhXSAoa2V5LCB2YWx1ZSlcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBvcGVuIEtleV92YWx1ZS5UXG4gICAgbW9kdWxlIEVsdCA9IERvdWJseV9saW5rZWQuRWx0XG5cbiAgICB0eXBlICgna2V5LCAnZGF0YSkgdCA9XG4gICAgICB7IG11dGFibGUgbnVtX3JlYWRlcnMgOiBpbnRcbiAgICAgIDsgcXVldWUgOiAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IERvdWJseV9saW5rZWQudFxuICAgICAgOyB0YWJsZSA6ICgna2V5LCAoJ2tleSwgJ2RhdGEpIEtleV92YWx1ZS50IEVsdC50KSBUYWJsZS50XG4gICAgICB9XG5cbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfZGF0YSB0ID1cbiAgICAgIFslc2V4cF9vZjogKGtleSwgZGF0YSkgS2V5X3ZhbHVlLnQgRG91Ymx5X2xpbmtlZC50XSB0LnF1ZXVlXG4gICAgOztcblxuICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICBhc3NlcnQgKERvdWJseV9saW5rZWQubGVuZ3RoIHQucXVldWUgPSBUYWJsZS5sZW5ndGggdC50YWJsZSk7XG4gICAgICAoKiBMb29rIGF0IGVhY2ggZWxlbWVudCBpbiB0aGUgcXVldWUsIGNoZWNraW5nOlxuICAgICAgICogICAtIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHF1ZXVlIGlzIGluIHRoZSBoYXNoIHRhYmxlXG4gICAgICAgKiAgIC0gdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBrZXlzXG4gICAgICAqKVxuICAgICAgbGV0IGtleXMgPSBUYWJsZS5jcmVhdGUgfnNpemU6KFRhYmxlLmxlbmd0aCB0LnRhYmxlKSAoVGFibGUuaGFzaGFibGVfcyB0LnRhYmxlKSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPlxuICAgICAgICBsZXQga2V5ID0ga3Yua2V5IGluXG4gICAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrZXkgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgYXNzZXJ0IChub3QgKFRhYmxlLm1lbSBrZXlzIGtleSkpO1xuICAgICAgICAgIFRhYmxlLnNldCBrZXlzIH5rZXkgfmRhdGE6KCkpXG4gICAgOztcblxuICAgIGxldCBjcmVhdGUgPyhncm93dGhfYWxsb3dlZCA9IHRydWUpID8oc2l6ZSA9IDE2KSBoYXNoYWJsZSA9XG4gICAgICB7IG51bV9yZWFkZXJzID0gMFxuICAgICAgOyBxdWV1ZSA9IERvdWJseV9saW5rZWQuY3JlYXRlICgpXG4gICAgICA7IHRhYmxlID0gVGFibGUuY3JlYXRlIH5ncm93dGhfYWxsb3dlZCB+c2l6ZSAoVGFibGUuSGFzaGFibGUudG9fa2V5IGhhc2hhYmxlKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgcmVhZCB0IGYgPVxuICAgICAgdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzICsgMTtcbiAgICAgIEV4bi5wcm90ZWN0IH5mIH5maW5hbGx5OihmdW4gKCkgLT4gdC5udW1fcmVhZGVycyA8LSB0Lm51bV9yZWFkZXJzIC0gMSlcbiAgICA7O1xuXG4gICAgbGV0IGVuc3VyZV9jYW5fbW9kaWZ5IHQgPVxuICAgICAgaWYgdC5udW1fcmVhZGVycyA+IDBcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJJdCBpcyBhbiBlcnJvciB0byBtb2RpZnkgYSBIYXNoX3F1ZXVlLnQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgaXQuXCJcbiAgICA7O1xuXG4gICAgbGV0IGNsZWFyIHQgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIERvdWJseV9saW5rZWQuY2xlYXIgdC5xdWV1ZTtcbiAgICAgIFRhYmxlLmNsZWFyIHQudGFibGVcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCB0ID0gVGFibGUubGVuZ3RoIHQudGFibGVcbiAgICBsZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG4gICAgbGV0IGxvb2t1cCB0IGsgPVxuICAgICAgbWF0Y2ggVGFibGUuZmluZCB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBlbHQgLT4gU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9leG4gdCBrID0gKEVsdC52YWx1ZSAoVGFibGUuZmluZF9leG4gdC50YWJsZSBrKSkudmFsdWVcbiAgICBsZXQgbWVtIHQgayA9IFRhYmxlLm1lbSB0LnRhYmxlIGtcblxuICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSB0YWlsLXJlY3Vyc2l2ZSBDb3JlX2xpc3QubWFwICopXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QubWFwIChEb3VibHlfbGlua2VkLnRvX2xpc3QgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLnZhbHVlXG4gICAgbGV0IHRvX2FycmF5IHQgPSBBcnJheS5tYXAgKERvdWJseV9saW5rZWQudG9fYXJyYXkgdC5xdWV1ZSkgfmY6S2V5X3ZhbHVlLnZhbHVlXG5cbiAgICBsZXQgZm9yX2FsbCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZm9yX2FsbCB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgOztcblxuICAgIGxldCBleGlzdHMgdCB+ZiA9XG4gICAgICByZWFkIHQgKGZ1biAoKSAtPiBEb3VibHlfbGlua2VkLmV4aXN0cyB0LnF1ZXVlIH5mOihmdW4ga3YgLT4gZiBrdi52YWx1ZSkpXG4gICAgOztcblxuICAgIGxldCBmaW5kX21hcCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+IERvdWJseV9saW5rZWQuZmluZF9tYXAgdC5xdWV1ZSB+ZjooZnVuIGt2IC0+IGYga3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgZmluZCB0IH5mID1cbiAgICAgIHJlYWQgdCAoZnVuICgpIC0+XG4gICAgICAgIE9wdGlvbi5tYXBcbiAgICAgICAgICAoRG91Ymx5X2xpbmtlZC5maW5kIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIGt2LnZhbHVlKSlcbiAgICAgICAgICB+ZjpLZXlfdmFsdWUudmFsdWUpXG4gICAgOztcblxuICAgIGxldCBlbnF1ZXVlIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGlmIFRhYmxlLm1lbSB0LnRhYmxlIGtleVxuICAgICAgdGhlbiBgS2V5X2FscmVhZHlfcHJlc2VudFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBjb250ZW50cyA9IHsgS2V5X3ZhbHVlLmtleTsgdmFsdWUgfSBpblxuICAgICAgICBsZXQgZWx0ID1cbiAgICAgICAgICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgICAgICB8IGBiYWNrIC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2xhc3QgdC5xdWV1ZSBjb250ZW50c1xuICAgICAgICAgIHwgYGZyb250IC0+IERvdWJseV9saW5rZWQuaW5zZXJ0X2ZpcnN0IHQucXVldWUgY29udGVudHNcbiAgICAgICAgaW5cbiAgICAgICAgVGFibGUuc2V0IHQudGFibGUgfmtleSB+ZGF0YTplbHQ7XG4gICAgICAgIGBPaylcbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfYmFjayB0ID0gZW5xdWV1ZSB0IGBiYWNrXG4gICAgbGV0IGVucXVldWVfZnJvbnQgdCA9IGVucXVldWUgdCBgZnJvbnRcblxuICAgIGxldCByYWlzZV9lbnF1ZXVlX2R1cGxpY2F0ZV9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUuZW5xdWV1ZV9leG46IGR1cGxpY2F0ZSBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IGVucXVldWVfZXhuIHQgYmFja19vcl9mcm9udCBrZXkgdmFsdWUgPVxuICAgICAgbWF0Y2ggZW5xdWV1ZSB0IGJhY2tfb3JfZnJvbnQga2V5IHZhbHVlIHdpdGhcbiAgICAgIHwgYEtleV9hbHJlYWR5X3ByZXNlbnQgLT4gcmFpc2VfZW5xdWV1ZV9kdXBsaWNhdGVfa2V5IHQga2V5XG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZW5xdWV1ZV9iYWNrX2V4biB0ID0gZW5xdWV1ZV9leG4gdCBgYmFja1xuICAgIGxldCBlbnF1ZXVlX2Zyb250X2V4biB0ID0gZW5xdWV1ZV9leG4gdCBgZnJvbnRcblxuICAgICgqIFBlcmZvcm1hbmNlIGhhY2s6IHdlIGltcGxlbWVudCB0aGlzIHZlcnNpb24gc2VwYXJhdGVseSB0byBhdm9pZCBhbGxvY2F0aW9uIGZyb20gdGhlXG4gICAgICAgb3B0aW9uLiAqKVxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fYmFja19leG4gdCBrZXkgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBlbHQgPSBUYWJsZS5maW5kX2V4biB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2JhY2sgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fYmFjayB0IGtleSA9XG4gICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCVtYXAgZWx0ID0gVGFibGUuZmluZCB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2JhY2sgdC5xdWV1ZSBlbHQ7XG4gICAgICBLZXlfdmFsdWUudmFsdWUgKEVsdC52YWx1ZSBlbHQpXG4gICAgOztcblxuICAgIGxldCBsb29rdXBfYW5kX21vdmVfdG9fZnJvbnRfZXhuIHQga2V5ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBsZXQgZWx0ID0gVGFibGUuZmluZF9leG4gdC50YWJsZSBrZXkgaW5cbiAgICAgIERvdWJseV9saW5rZWQubW92ZV90b19mcm9udCB0LnF1ZXVlIGVsdDtcbiAgICAgIEtleV92YWx1ZS52YWx1ZSAoRWx0LnZhbHVlIGVsdClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfbW92ZV90b19mcm9udCB0IGtleSA9XG4gICAgICBsZXQgb3BlbiBPcHRpb24uTGV0X3N5bnRheCBpblxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCVtYXAgZWx0ID0gVGFibGUuZmluZCB0LnRhYmxlIGtleSBpblxuICAgICAgRG91Ymx5X2xpbmtlZC5tb3ZlX3RvX2Zyb250IHQucXVldWUgZWx0O1xuICAgICAgS2V5X3ZhbHVlLnZhbHVlIChFbHQudmFsdWUgZWx0KVxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV93aXRoX2tleSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIGxldCBtYXliZV9rdiA9XG4gICAgICAgIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICAgICAgICB8IGBiYWNrIC0+IERvdWJseV9saW5rZWQucmVtb3ZlX2xhc3QgdC5xdWV1ZVxuICAgICAgICB8IGBmcm9udCAtPiBEb3VibHlfbGlua2VkLnJlbW92ZV9maXJzdCB0LnF1ZXVlXG4gICAgICBpblxuICAgICAgbWF0Y2ggbWF5YmVfa3Ygd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPlxuICAgICAgICBUYWJsZS5yZW1vdmUgdC50YWJsZSBrdi5rZXk7XG4gICAgICAgIFNvbWUgKGt2LmtleSwga3YudmFsdWUpXG4gICAgOztcblxuICAgIGxldCByYWlzZV9kZXF1ZXVlX3dpdGhfa2V5X2VtcHR5ICgpID1cbiAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiSGFzaF9xdWV1ZS5kZXF1ZXVlX3dpdGhfa2V5OiBlbXB0eSBxdWV1ZVwiXVxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV93aXRoX2tleV9leG4gdCBiYWNrX29yX2Zyb250ID1cbiAgICAgIG1hdGNoIGRlcXVldWVfd2l0aF9rZXkgdCBiYWNrX29yX2Zyb250IHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZV9kZXF1ZXVlX3dpdGhfa2V5X2VtcHR5ICgpXG4gICAgICB8IFNvbWUgKGssIHYpIC0+IGssIHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFja193aXRoX2tleSB0ID0gZGVxdWV1ZV93aXRoX2tleSB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfYmFja193aXRoX2tleV9leG4gdCA9IGRlcXVldWVfd2l0aF9rZXlfZXhuIHQgYGJhY2tcbiAgICBsZXQgZGVxdWV1ZV9mcm9udF93aXRoX2tleSB0ID0gZGVxdWV1ZV93aXRoX2tleSB0IGBmcm9udFxuICAgIGxldCBkZXF1ZXVlX2Zyb250X3dpdGhfa2V5X2V4biB0ID0gZGVxdWV1ZV93aXRoX2tleV9leG4gdCBgZnJvbnRcblxuICAgIGxldCBkZXF1ZXVlIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIChfLCB2KSAtPiBTb21lIHZcbiAgICA7O1xuXG4gICAgbGV0IGRlcXVldWVfYmFjayB0ID0gZGVxdWV1ZSB0IGBiYWNrXG4gICAgbGV0IGRlcXVldWVfZnJvbnQgdCA9IGRlcXVldWUgdCBgZnJvbnRcblxuICAgIGxldCBsYXN0X3dpdGhfa2V5IHQgPVxuICAgICAgbWF0Y2ggRG91Ymx5X2xpbmtlZC5sYXN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB7IGtleTsgdmFsdWUgfSAtPiBTb21lIChrZXksIHZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgbGFzdCB0ID1cbiAgICAgIG1hdGNoIERvdWJseV9saW5rZWQubGFzdCB0LnF1ZXVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUga3YgLT4gU29tZSBrdi52YWx1ZVxuICAgIDs7XG5cbiAgICBsZXQgZmlyc3Rfd2l0aF9rZXkgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmZpcnN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB7IGtleTsgdmFsdWUgfSAtPiBTb21lIChrZXksIHZhbHVlKVxuICAgIDs7XG5cbiAgICBsZXQgZmlyc3QgdCA9XG4gICAgICBtYXRjaCBEb3VibHlfbGlua2VkLmZpcnN0IHQucXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBrdiAtPiBTb21lIGt2LnZhbHVlXG4gICAgOztcblxuICAgIGxldCByYWlzZV9kZXF1ZXVlX2VtcHR5ICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJIYXNoX3F1ZXVlLmRlcXVldWVfZXhuOiBlbXB0eSBxdWV1ZVwiXVxuXG4gICAgbGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gICAgICBtYXRjaCBkZXF1ZXVlIHQgYmFja19vcl9mcm9udCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmFpc2VfZGVxdWV1ZV9lbXB0eSAoKVxuICAgICAgfCBTb21lIHYgLT4gdlxuICAgIDs7XG5cbiAgICBsZXQgZGVxdWV1ZV9iYWNrX2V4biB0ID0gZGVxdWV1ZV9leG4gdCBgYmFja1xuICAgIGxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID0gZGVxdWV1ZV9leG4gdCBgZnJvbnRcblxuICAgIGxldCBrZXlzIHQgPVxuICAgICAgKCogUmV0dXJuIHRoZSBrZXlzIGluIHRoZSBvcmRlciBvZiB0aGUgcXVldWUuICopXG4gICAgICBMaXN0Lm1hcCAoRG91Ymx5X2xpbmtlZC50b19saXN0IHQucXVldWUpIH5mOktleV92YWx1ZS5rZXlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXJpIHQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5pdGVyIHQucXVldWUgfmY6KGZ1biBrdiAtPiBmIH5rZXk6a3Yua2V5IH5kYXRhOmt2LnZhbHVlKSlcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgdCB+ZiA9IGl0ZXJpIHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG4gICAgbGV0IGZvbGRpIHQgfmluaXQgfmYgPVxuICAgICAgcmVhZCB0IChmdW4gKCkgLT5cbiAgICAgICAgRG91Ymx5X2xpbmtlZC5mb2xkIHQucXVldWUgfmluaXQgfmY6KGZ1biBhYyBrdiAtPlxuICAgICAgICAgIGYgYWMgfmtleTprdi5rZXkgfmRhdGE6a3YudmFsdWUpKVxuICAgIDs7XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIGFjIH5rZXk6XyB+ZGF0YSAtPiBmIGFjIGRhdGEpXG4gICAgbGV0IGNvdW50IHQgfmYgPSBDb250YWluZXIuY291bnQgfmZvbGQgdCB+ZlxuICAgIGxldCBzdW0gbSB0IH5mID0gQ29udGFpbmVyLnN1bSBtIH5mb2xkIHQgfmZcbiAgICBsZXQgbWluX2VsdCB0IH5jb21wYXJlID0gQ29udGFpbmVyLm1pbl9lbHQgfmZvbGQgdCB+Y29tcGFyZVxuICAgIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPSBDb250YWluZXIubWF4X2VsdCB+Zm9sZCB0IH5jb21wYXJlXG4gICAgbGV0IGZvbGRfcmVzdWx0IHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF9yZXN1bHQgfmZvbGQgfmluaXQgfmYgdFxuICAgIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgICBsZXQgZGVxdWV1ZV9hbGwgdCB+ZiA9XG4gICAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgICBtYXRjaCBkZXF1ZXVlX2Zyb250IHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHYgLT5cbiAgICAgICAgICBmIHY7XG4gICAgICAgICAgbG9vcCAoKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IHJlbW92ZSB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmRfYW5kX3JlbW92ZSB0LnRhYmxlIGsgd2l0aFxuICAgICAgfCBOb25lIC0+IGBOb19zdWNoX2tleVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgYE9rXG4gICAgOztcblxuICAgIGxldCByYWlzZV9yZW1vdmVfdW5rbm93bl9rZXkgdCBrZXkgPVxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkhhc2hfcXVldWUucmVtb3ZlX2V4bjogdW5rbm93biBrZXlcIiB+XzooVGFibGUuc2V4cF9vZl9rZXkgdC50YWJsZSBrZXkgOiBTZXhwLnQpXVxuICAgIDs7XG5cbiAgICBsZXQgcmVtb3ZlX2V4biB0IGsgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIHJlbW92ZSB0IGsgd2l0aFxuICAgICAgfCBgTm9fc3VjaF9rZXkgLT4gcmFpc2VfcmVtb3ZlX3Vua25vd25fa2V5IHQga1xuICAgICAgfCBgT2sgLT4gKClcbiAgICA7O1xuXG4gICAgbGV0IGxvb2t1cF9hbmRfcmVtb3ZlIHQgayA9XG4gICAgICBlbnN1cmVfY2FuX21vZGlmeSB0O1xuICAgICAgbWF0Y2ggVGFibGUuZmluZF9hbmRfcmVtb3ZlIHQudGFibGUgayB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGVsdCAtPlxuICAgICAgICBEb3VibHlfbGlua2VkLnJlbW92ZSB0LnF1ZXVlIGVsdDtcbiAgICAgICAgU29tZSAoRWx0LnZhbHVlIGVsdCkudmFsdWVcbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2UgdCBrIHYgPVxuICAgICAgZW5zdXJlX2Nhbl9tb2RpZnkgdDtcbiAgICAgIG1hdGNoIFRhYmxlLmZpbmQgdC50YWJsZSBrIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBgTm9fc3VjaF9rZXlcbiAgICAgIHwgU29tZSBlbHQgLT5cbiAgICAgICAgKEVsdC52YWx1ZSBlbHQpLnZhbHVlIDwtIHY7XG4gICAgICAgIGBPa1xuICAgIDs7XG5cbiAgICBsZXQgcmFpc2VfcmVwbGFjZV91bmtub3duX2tleSB0IGtleSA9XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiSGFzaF9xdWV1ZS5yZXBsYWNlX2V4bjogdW5rbm93biBrZXlcIlxuICAgICAgICAgICAgfl86KFRhYmxlLnNleHBfb2Zfa2V5IHQudGFibGUga2V5IDogU2V4cC50KV1cbiAgICA7O1xuXG4gICAgbGV0IHJlcGxhY2VfZXhuIHQgayB2ID1cbiAgICAgIGVuc3VyZV9jYW5fbW9kaWZ5IHQ7XG4gICAgICBtYXRjaCByZXBsYWNlIHQgayB2IHdpdGhcbiAgICAgIHwgYE5vX3N1Y2hfa2V5IC0+IHJhaXNlX3JlcGxhY2VfdW5rbm93bl9rZXkgdCBrXG4gICAgICB8IGBPayAtPiAoKVxuICAgIDs7XG5cbiAgICBsZXQgZHJvcCA/KG4gPSAxKSB0IGJhY2tfb3JfZnJvbnQgPVxuICAgICAgaWYgbiA+PSBsZW5ndGggdFxuICAgICAgdGhlbiBjbGVhciB0XG4gICAgICBlbHNlXG4gICAgICAgIGZvciBfID0gMSB0byBuIGRvXG4gICAgICAgICAgaWdub3JlIChkZXF1ZXVlX3dpdGhfa2V5IHQgYmFja19vcl9mcm9udCA6IF8gb3B0aW9uKVxuICAgICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3AgP24gdCBgYmFja1xuICAgIGxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wID9uIHQgYGZyb250XG5cbiAgICBsZXQgY29weSB0ID1cbiAgICAgIGxldCBjb3BpZWQgPSBjcmVhdGUgfnNpemU6KGxlbmd0aCB0KSAoVGFibGUuaGFzaGFibGUgdC50YWJsZSkgaW5cbiAgICAgIGl0ZXJpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IGVucXVldWVfYmFja19leG4gY29waWVkIGtleSBkYXRhKTtcbiAgICAgIGNvcGllZFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBTMCB3aXRoIHR5cGUgKCdrZXksICdkYXRhKSBoYXNoX3F1ZXVlIDo9ICgna2V5LCAnZGF0YSkgQmFja2VuZC50XG5cbiAgbW9kdWxlIE1ha2Vfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgICAgbW9kdWxlIEtleSA6IEtleVxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsLkhhc2hhYmxlLnRcbiAgICBlbmQpIDogUyB3aXRoIHR5cGUga2V5ID0gVC5LZXkudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgKEJhY2tlbmQgOiBCYWNrZW5kIHdpdGggdHlwZSAoJ2ssICdkKSB0IDo9ICgnaywgJ2QpIEJhY2tlbmQudClcblxuICAgIHR5cGUga2V5ID0gVC5LZXkudFxuICAgIHR5cGUgJ2RhdGEgdCA9IChULktleS50LCAnZGF0YSkgQmFja2VuZC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgbGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKCkgPSBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlXG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChLZXkgOiBLZXkpIDogUyB3aXRoIHR5cGUga2V5ID0gS2V5LnQgPSBNYWtlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IEtleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBUYWJsZS5IYXNoYWJsZS5vZl9rZXkgKG1vZHVsZSBLZXkpXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgQmFja2VuZFxuZW5kXG5cbmluY2x1ZGUgTWFrZV9iYWNrZW5kIChIYXNodGJsKVxuIiwiKCoqIEZ1bmN0b3JzIGFuZCBpbnRlcmZhY2VzIHVzZWQgdG8gbWFrZSBtb2R1bGVzIGhhc2hhYmxlLiAqKVxuXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSGFzaGFibGVfaW50ZlxuXG5tb2R1bGUgTWFrZV9wbGFpbiAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX3BsYWluIChUKVxuICBtb2R1bGUgSGFzaF9xdWV1ZSA9IEhhc2hfcXVldWUuTWFrZSAoVClcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9wbGFpbikgOlxuICBTX3BsYWluIHdpdGggdHlwZSB0IDo9IFQudCA9IE1ha2VfcGxhaW4gKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXkgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZSAoVClcbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2UgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogSGFzaHRibC5LZXkpIDogUyB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoYXNoX2ZvbGRfdCBzdGF0ZSB0ID0gaGFzaF9mb2xkX2ludCBzdGF0ZSAoaGFzaCB0KVxuICBlbmQpXG5cbm1vZHVsZSBNYWtlX2JpbmFibGUgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgIGluY2x1ZGUgSGFzaHRibC5LZXlfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZCkgOiBTX2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gVC50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChUKVxuICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKFQpXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlIChUKVxuICBpbmNsdWRlIFRcblxuICBsZXQgaGFzaGFibGUgPSBUYWJsZS5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleV9wbGFpbiB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogU19wbGFpbiB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3BsYWluX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9wbGFpbl93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICBtb2R1bGUgS2V5IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgaGFzaF1cblxuICAgICAgaW5jbHVkZSBIYXNodGJsLktleSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgZW5kXG5cbiAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICBlbmQpIDogUyB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIGluY2x1ZGUgVC5LZXlcbiAgbW9kdWxlIFRhYmxlID0gSGFzaHRibC5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV93aXRoX2hhc2hhYmxlIChzdHJ1Y3RcbiAgICAgIG1vZHVsZSBFbHQgPSBULktleVxuXG4gICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZS5NYWtlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuZW5kXG5cbm1vZHVsZSBNYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoVCA6IHNpZ1xuICAgIG1vZHVsZSBLZXkgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBpbmNsdWRlIEhhc2h0YmwuS2V5X2JpbmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGVuZFxuXG4gICAgdmFsIGhhc2hhYmxlIDogS2V5LnQgSGFzaHRibF9pbnRmLkhhc2hhYmxlLnRcbiAgZW5kKSA6IFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULktleS50ID0gc3RydWN0XG4gIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKFQpXG5cbiAgbW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXQuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhhc2hfcXVldWUgPSBIYXNoX3F1ZXVlLk1ha2Vfd2l0aF9oYXNoYWJsZSAoVClcbiAgaW5jbHVkZSBULktleVxuXG4gIGxldCBoYXNoYWJsZSA9IFQuaGFzaGFibGVcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBIYXNodGJsLktleV9iaW5hYmxlKSA6XG4gIFNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSBULnQgPSBNYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGtleVxuXG4gICAgICBtb2R1bGUgVGFibGUgOiBzaWdcbiAgICAgICAgdHlwZSAnYSB0ID0gKGtleSwgJ2EpIEhhc2h0YmwudCBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIEhhc2hfc2V0IDogc2lnXG4gICAgICAgIHR5cGUgdCA9IGtleSBIYXNoX3NldC50IFtAQGRlcml2aW5nIHNleHAsIGJpbl9pb11cbiAgICAgIGVuZFxuXG4gICAgICB2YWwgaGFzaGFibGUgOiBrZXkgSGFzaHRibC5IYXNoYWJsZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoS2V5IDogSGFzaHRibC5LZXlfYmluYWJsZSkgOiBTIHdpdGggdHlwZSBrZXkgOj0gS2V5LnQgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUYWJsZSA9IEhhc2h0YmwuTWFrZV9iaW5hYmxlIChLZXkpXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGUgKEtleSlcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVGFibGUuaGFzaGFibGVcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlX3dpdGhfaGFzaGFibGUgKFQgOiBzaWdcbiAgICAgICAgbW9kdWxlIEtleSA6IEhhc2h0YmwuS2V5X2JpbmFibGVcblxuICAgICAgICB2YWwgaGFzaGFibGUgOiBLZXkudCBIYXNodGJsX2ludGYuSGFzaGFibGUudFxuICAgICAgZW5kKSA6IFMgd2l0aCB0eXBlIGtleSA6PSBULktleS50ID0gc3RydWN0XG4gICAgICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2VfYmluYWJsZV93aXRoX2hhc2hhYmxlIChUKVxuXG4gICAgICBtb2R1bGUgSGFzaF9zZXQgPSBIYXNoX3NldC5NYWtlX2JpbmFibGVfd2l0aF9oYXNoYWJsZSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEVsdCA9IFQuS2V5XG5cbiAgICAgICAgICBsZXQgaGFzaGFibGUgPSBULmhhc2hhYmxlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0IGhhc2hhYmxlID0gVC5oYXNoYWJsZVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2hhciA9IEJhc2UuQ2hhclxubW9kdWxlIEludCA9IEJhc2UuSW50XG5tb2R1bGUgU3RyaW5nID0gQmFzZS5TdHJpbmdcbmluY2x1ZGUgSGV4ZHVtcF9pbnRmXG5cbmxldCBieXRlc19wZXJfbGluZSA9IDE2XG5cbigqIEluaXRpYWxpemUgdG8gZW5vdWdoIGxpbmVzIHRvIGRpc3BsYXkgNDA5NiBieXRlcyAtLSBsYXJnZSBlbm91Z2ggdGhhdCwgZm9yIGV4YW1wbGUsIGFcbiAgIGNvbXBsZXRlIEV0aGVybmV0IHBhY2tldCBjYW4gYWx3YXlzIGJlIGRpc3BsYXllZCAtLSBpbmNsdWRpbmcgdGhlIGxpbmUgY29udGFpbmluZyB0aGVcbiAgIGZpbmFsIGluZGV4LiAqKVxubGV0IGRlZmF1bHRfbWF4X2xpbmVzID0gcmVmICgoNDA5NiAvIGJ5dGVzX3Blcl9saW5lKSArIDEpXG5cbm1vZHVsZSBPZl9pbmRleGFibGUyIChUIDogSW5kZXhhYmxlMikgPSBzdHJ1Y3RcbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBoZXhfb2ZfcG9zIHBvcyA9IFByaW50Zi5zcHJpbnRmIFwiJTA4eFwiIHBvc1xuXG4gICAgbGV0IGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCBvZmZzZXQgPVxuICAgICAgbGV0IHBvcyA9IHN0YXJ0ICsgb2Zmc2V0IGluXG4gICAgICBpZiBwb3MgPj0gdW50aWwgdGhlbiBcIiAgXCIgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUwMnhcIiAoQ2hhci50b19pbnQgKGdldCB0IHBvcykpXG4gICAgOztcblxuICAgIGxldCBoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwgPVxuICAgICAgUHJpbnRmLnNwcmludGZcbiAgICAgICAgXCIlcyAlcyAlcyAlcyAlcyAlcyAlcyAlcyAgJXMgJXMgJXMgJXMgJXMgJXMgJXMgJXNcIlxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMSlcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCAyKVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNClcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA1KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDYpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgNylcbiAgICAgICAgKGhleF9vZl9jaGFyIHQgfnN0YXJ0IH51bnRpbCA4KVxuICAgICAgICAoaGV4X29mX2NoYXIgdCB+c3RhcnQgfnVudGlsIDkpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTApXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTEpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTIpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTMpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTQpXG4gICAgICAgIChoZXhfb2ZfY2hhciB0IH5zdGFydCB+dW50aWwgMTUpXG4gICAgOztcblxuICAgIGxldCBwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbCA9XG4gICAgICBTdHJpbmcuaW5pdCAodW50aWwgLSBzdGFydCkgfmY6KGZ1biBpIC0+XG4gICAgICAgIGxldCBjaGFyID0gZ2V0IHQgKHN0YXJ0ICsgaSkgaW5cbiAgICAgICAgaWYgQ2hhci5pc19wcmludCBjaGFyIHRoZW4gY2hhciBlbHNlICcuJylcbiAgICA7O1xuXG4gICAgbGV0IGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXggPVxuICAgICAgbGV0IHN0YXJ0ID0gcG9zICsgKGxpbmVfaW5kZXggKiBieXRlc19wZXJfbGluZSkgaW5cbiAgICAgIGxldCB1bnRpbCA9IG1pbiAoc3RhcnQgKyBieXRlc19wZXJfbGluZSkgKHBvcyArIGxlbikgaW5cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiJXMgICVzICB8JXN8XCJcbiAgICAgICAgKGhleF9vZl9wb3Mgc3RhcnQpXG4gICAgICAgIChoZXhfb2ZfbGluZSB0IH5zdGFydCB+dW50aWwpXG4gICAgICAgIChwcmludGFibGVfc3RyaW5nIHQgfnN0YXJ0IH51bnRpbClcbiAgICA7O1xuXG4gICAgbGV0IHRvX3NlcXVlbmNlID9tYXhfbGluZXMgP3BvcyA/bGVuIHQgPVxuICAgICAgbGV0IHBvcywgbGVuID1cbiAgICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgICAgaW5cbiAgICAgIGxldCBtYXhfbGluZXMgPVxuICAgICAgICBtYXRjaCBtYXhfbGluZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbWF4X2xpbmVzIC0+IG1heF9saW5lc1xuICAgICAgICB8IE5vbmUgLT4gIWRlZmF1bHRfbWF4X2xpbmVzXG4gICAgICBpblxuICAgICAgKCogYWx3YXlzIHByb2R1Y2UgYXQgbGVhc3QgMyBsaW5lczogZmlyc3QgbGluZSBvZiBoZXgsIGVsbGlwc2lzLCBsYXN0IGxpbmUgb2YgaGV4ICopXG4gICAgICBsZXQgbWF4X2xpbmVzID0gbWF4IG1heF9saW5lcyAzIGluXG4gICAgICAoKiB1bmFicmlkZ2VkIGxpbmVzID0gbGluZXMgb2YgaGV4ICsgbGluZSB3aXRoIGZpbmFsIGluZGV4ICopXG4gICAgICBsZXQgdW5hYnJpZGdlZF9saW5lcyA9XG4gICAgICAgIEludC5yb3VuZF91cCBsZW4gfnRvX211bHRpcGxlX29mOmJ5dGVzX3Blcl9saW5lIC8gYnl0ZXNfcGVyX2xpbmVcbiAgICAgIGluXG4gICAgICAoKiBGaWd1cmUgb3V0IHdoZXJlIHdlIG5lZWQgdG8gc2tpcCBmcm9tIGFuZCB0byBpZiBbbWF4X2xpbmVzIDwgdW5hYnJpZGdlZF9saW5lc10uXG4gICAgICAgICBTa2lwIGFmdGVyIGhhbGYgdGhlIGFjdHVhbCBoZXggbGluZXMgKHN1YnRyYWN0aW5nIG9uZSBsaW5lIGZvciB0aGUgZWxsaXBzaXMpLlxuICAgICAgICAgU2tpcCB0byBuZWFyIHRoZSBlbmQsIGxlc3MgdGhlIG51bWJlciBvZiBsaW5lcyByZW1haW5pbmcgdG8gcHJvZHVjZSwgcGx1cyB0aGVcbiAgICAgICAgIGVsbGlwc2lzIGxpbmUuICopXG4gICAgICBsZXQgc2tpcF9mcm9tID0gKG1heF9saW5lcyAtIDEpIC8gMiBpblxuICAgICAgbGV0IHNraXBfdG8gPSB1bmFicmlkZ2VkX2xpbmVzIC0gKG1heF9saW5lcyAtIHNraXBfZnJvbSkgKyAxIGluXG4gICAgICBTZXF1ZW5jZS51bmZvbGRfc3RlcCB+aW5pdDowIH5mOihmdW4gbGluZV9pbmRleCAtPlxuICAgICAgICBpZiBsaW5lX2luZGV4ID49IHVuYWJyaWRnZWRfbGluZXNcbiAgICAgICAgdGhlbiBEb25lXG4gICAgICAgIGVsc2UgaWYgbGluZV9pbmRleCA9IHNraXBfZnJvbSAmJiBtYXhfbGluZXMgPCB1bmFicmlkZ2VkX2xpbmVzXG4gICAgICAgIHRoZW4gWWllbGQgKFwiLi4uXCIsIHNraXBfdG8pXG4gICAgICAgIGVsc2UgWWllbGQgKGxpbmUgdCB+cG9zIH5sZW4gfmxpbmVfaW5kZXgsIGxpbmVfaW5kZXggKyAxKSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3N0cmluZ19odW0gP21heF9saW5lcyA/cG9zID9sZW4gdCA9XG4gICAgICB0b19zZXF1ZW5jZSA/bWF4X2xpbmVzID9wb3MgP2xlbiB0IHw+IFNlcXVlbmNlLnRvX2xpc3QgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdCBfIF8gdCA9IHRvX3NlcXVlbmNlIHQgfD4gU2VxdWVuY2UudG9fbGlzdCB8PiBbJXNleHBfb2Y6IHN0cmluZyBsaXN0XVxuXG4gICAgbW9kdWxlIFByZXR0eSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG5cbiAgICAgIGxldCBwcmludGFibGUgPVxuICAgICAgICBsZXQgcmVjIHByaW50YWJsZV9mcm9tIHQgfnBvcyB+bGVuZ3RoID1cbiAgICAgICAgICBwb3MgPj0gbGVuZ3RoXG4gICAgICAgICAgfHwgKENoYXIuaXNfcHJpbnQgKGdldCB0IHBvcykgJiYgcHJpbnRhYmxlX2Zyb20gdCB+cG9zOihwb3MgKyAxKSB+bGVuZ3RoKVxuICAgICAgICBpblxuICAgICAgICBmdW4gdCAtPiBwcmludGFibGVfZnJvbSB0IH5wb3M6MCB+bGVuZ3RoOihsZW5ndGggdClcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9IFN0cmluZy5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBwb3MgLT4gZ2V0IHQgcG9zKVxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSBzZXhwX29mX2IgdCA9XG4gICAgICAgIGlmIHByaW50YWJsZSB0IHRoZW4gWyVzZXhwICh0b19zdHJpbmcgdCA6IHN0cmluZyldIGVsc2UgWyVzZXhwICh0IDogKGEsIGIpIHQpXVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX2luZGV4YWJsZTEgKFQgOiBJbmRleGFibGUxKSA9IHN0cnVjdFxuICBtb2R1bGUgTSA9IE9mX2luZGV4YWJsZTIgKHN0cnVjdFxuICAgICAgdHlwZSAoJ2EsIF8pIHQgPSAnYSBULnRcblxuICAgICAgbGV0IGxlbmd0aCA9IFQubGVuZ3RoXG4gICAgICBsZXQgZ2V0ID0gVC5nZXRcbiAgICBlbmQpXG5cbiAgbW9kdWxlIEhleGR1bXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFRcblxuICAgIGxldCBzZXhwX29mX3QgeCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCB4IFslc2V4cF9vZjogX10gdFxuICAgIGxldCB0b19zZXF1ZW5jZSA9IE0uSGV4ZHVtcC50b19zZXF1ZW5jZVxuICAgIGxldCB0b19zdHJpbmdfaHVtID0gTS5IZXhkdW1wLnRvX3N0cmluZ19odW1cblxuICAgIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgVFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0IDogKGEsIF8pIE0uSGV4ZHVtcC5QcmV0dHkudCldXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZl9pbmRleGFibGUgKFQgOiBJbmRleGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBNID0gT2ZfaW5kZXhhYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIF8gdCA9IFQudFxuXG4gICAgICBsZXQgbGVuZ3RoID0gVC5sZW5ndGhcbiAgICAgIGxldCBnZXQgPSBULmdldFxuICAgIGVuZClcblxuICBtb2R1bGUgSGV4ZHVtcCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gTS5IZXhkdW1wLnNleHBfb2ZfdCBbJXNleHBfb2Y6IF9dIHRcbiAgICBsZXQgdG9fc2VxdWVuY2UgPSBNLkhleGR1bXAudG9fc2VxdWVuY2VcbiAgICBsZXQgdG9fc3RyaW5nX2h1bSA9IE0uSGV4ZHVtcC50b19zdHJpbmdfaHVtXG5cbiAgICBtb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFRcblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IDogXyBNLkhleGR1bXAuUHJldHR5LnQpXVxuICAgIGVuZFxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIElkZW50aWZpYWJsZV9pbnRmXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUwXG5cbm1vZHVsZSBNYWtlX3BsYWluIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBfb2ZdXG5cbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfcGxhaW4gKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2UgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChUKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoVClcbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX3NleHBfZ3JhbW1hciAoVCA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cblxuICAgIGluY2x1ZGUgU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBNYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBNYWtlX2FuZF9kZXJpdmVfaGFzaF9mb2xkX3QgKFQgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZSBTdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIGhhc2ggOiB0IC0+IGludFxuICAgIHZhbCBtb2R1bGVfbmFtZSA6IHN0cmluZ1xuICBlbmQpID1cbiAgTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbiAgZW5kKVxuXG5tb2R1bGUgTWFrZV91c2luZ19jb21wYXJhdG9yIChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKFQpXG5lbmRcblxubW9kdWxlIE1ha2VfdXNpbmdfY29tcGFyYXRvcl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChUIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICBpbmNsdWRlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgaGFzaCA6IHQgLT4gaW50XG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuICBNYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBoYXNoX2ZvbGRfaW50IHN0YXRlIChoYXNoIHQpXG4gIGVuZClcblxubW9kdWxlIEV4dGVuZCAoTSA6IEJhc2UuSWRlbnRpZmlhYmxlLlMpIChCIDogQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA9IE0udCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1cbiAgICBpbmNsdWRlIChCIDogQmluYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kX2JpbmFibGUgKE0pIChUKVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlX3dpdGhfaGFzaGFibGUgKHN0cnVjdFxuICAgICAgbW9kdWxlIEtleSA9IFRcblxuICAgICAgbGV0IGhhc2hhYmxlID0gTS5oYXNoYWJsZVxuICAgIGVuZClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU3RyaW5nXG5cbigqIFRoZXNlIHR3byBhcmUgbmVlZGVkIGJlY2F1c2UgW2luY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZF0gKHByZXNlbnQgbGF0ZXIgaW4gdGhlIGZpbGUpXG4gICBiaW5kcyBuZXcgW01hcF0gYW5kIFtTZXRdIG1vZHVsZXMuICopXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHRvX3N0cmluZyA9IEZuLmlkXG4gICAgbGV0IG9mX3N0cmluZyA9IEZuLmlkXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIENhc2VsZXNzID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDYXNlbGVzc1xuXG4gICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdcblxuICAgICAgbGV0IGhhc2hhYmxlID0gU3RhYmxlLlYxLmhhc2hhYmxlXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEJhc2UuU3RyaW5nKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBzdHJpbmdcblxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgZ2V0ID0gZ2V0XG4gIGVuZClcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLnN0cmluZ1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuc3RyaW5nXG5sZXQgZ2VuX25vbmVtcHR5ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5zdHJpbmdfbm9uX2VtcHR5XG5sZXQgZ2VuJyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX29mXG5sZXQgZ2VuX25vbmVtcHR5JyA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX25vbl9lbXB0eV9vZlxuXG5sZXQgZ2VuX3dpdGhfbGVuZ3RoIGxlbmd0aCBjaGFycyA9XG4gIEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3Iuc3RyaW5nX3dpdGhfbGVuZ3RoX29mIGNoYXJzIH5sZW5ndGhcbjs7XG5cbmxldCB0YWtlX3doaWxlIHQgfmYgPVxuICBtYXRjaCBsZmluZGkgdCB+ZjooZnVuIF8gZWx0IC0+IG5vdCAoZiBlbHQpKSB3aXRoXG4gIHwgTm9uZSAtPiB0XG4gIHwgU29tZSBpIC0+IHN1YiB0IH5wb3M6MCB+bGVuOmlcbjs7XG5cbmxldCBydGFrZV93aGlsZSB0IH5mID1cbiAgbWF0Y2ggcmZpbmRpIHQgfmY6KGZ1biBfIGVsdCAtPiBub3QgKGYgZWx0KSkgd2l0aFxuICB8IE5vbmUgLT4gdFxuICB8IFNvbWUgaSAtPiBzdWIgdCB+cG9zOihpICsgMSkgfmxlbjoobGVuZ3RoIHQgLSBpIC0gMSlcbjs7XG5cbigqKiBTZWUgeyFBcnJheS5ub3JtYWxpemV9IGZvciB0aGUgZm9sbG93aW5nIDQgZnVuY3Rpb25zLiAqKVxubGV0IG5vcm1hbGl6ZSB0IGkgPSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLm5vcm1hbGl6ZSB+bGVuZ3RoX2Z1bjpsZW5ndGggdCBpXG5cbmxldCBzbGljZSB0IHN0YXJ0IHN0b3AgPVxuICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLnNsaWNlIH5sZW5ndGhfZnVuOmxlbmd0aCB+c3ViX2Z1bjpzdWIgdCBzdGFydCBzdG9wXG47O1xuXG5sZXQgbmdldCB4IGkgPVxuICBsZXQgbW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nIGluXG4gIHguW25vcm1hbGl6ZSB4IGldXG47O1xuIiwiKCoqIFRoaXMgbW9kdWxlIGV4dGVuZHMge3shQmFzZS5TdHJpbmd9W0Jhc2UuU3RyaW5nXX0uICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuU3RyaW5nXG5lbmRcblxudHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cblxuKCoqIFtDYXNlbGVzc10gY29tcGFyZXMgYW5kIGhhc2hlcyBzdHJpbmdzIGlnbm9yaW5nIGNhc2UsIHNvIHRoYXQgZm9yIGV4YW1wbGVcbiAgICBbQ2FzZWxlc3MuZXF1YWwgXCJPQ2FtbFwiIFwib2NhbWxcIl0gYW5kIFtDYXNlbGVzcy4oXCJhcHBsZVwiIDwgXCJCYW5hbmFcIildIGFyZSBbdHJ1ZV0sIGFuZFxuICAgIFtDYXNlbGVzcy5NYXBdLCBbQ2FzZWxlc3MuVGFibGVdIGxvb2t1cCBhbmQgW0Nhc2VsZXNzLlNldF0gbWVtYmVyc2hpcCBpc1xuICAgIGNhc2UtaW5zZW5zaXRpdmUuXG5cbiAgICBbQ2FzZWxlc3NdIGFsc28gcHJvdmlkZXMgY2FzZS1pbnNlbnNpdGl2ZSBbaXNfc3VmZml4XSBhbmQgW2lzX3ByZWZpeF0gZnVuY3Rpb25zLCBzb1xuICAgIHRoYXQgZm9yIGV4YW1wbGUgW0Nhc2VsZXNzLmlzX3N1ZmZpeCBcIk9DYW1sXCIgfnN1ZmZpeDpcIkFtTFwiXSBhbmQgW0Nhc2VsZXNzLmlzX3ByZWZpeFxuICAgIFwiT0NhbWxcIiB+cHJlZml4Olwib2NcIl0gYXJlIFt0cnVlXS4gKilcbm1vZHVsZSBDYXNlbGVzcyA6IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQ2FzZWxlc3NcbiAgZW5kXG5cbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCBzZXhwXVxuXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSGFzaGFibGUuU19iaW5hYmxlIHdpdGggdHlwZSB0IDo9IHRcbmVuZFxuXG5cbigqKiBbc2xpY2UgdCBzdGFydCBzdG9wXSByZXR1cm5zIGEgbmV3IHN0cmluZyBpbmNsdWRpbmcgZWxlbWVudHMgW3QuKHN0YXJ0KV0gdGhyb3VnaFxuICAgIFt0LihzdG9wLTEpXSwgbm9ybWFsaXplZCBQeXRob24tc3R5bGUgd2l0aCB0aGUgZXhjZXB0aW9uIHRoYXQgW3N0b3AgPSAwXSBpcyB0cmVhdGVkIGFzXG4gICAgW3N0b3AgPSBsZW5ndGggdF0uICopXG52YWwgc2xpY2UgOiB0IC0+IGludCAtPiBpbnQgLT4gdFxuXG4oKiogW25nZXQgcyBpXSBnZXRzIHRoZSBjaGFyIGF0IG5vcm1hbGl6ZWQgcG9zaXRpb24gW2ldIGluIFtzXS4gKilcbnZhbCBuZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuXG4oKiogW3Rha2Vfd2hpbGUgcyB+Zl0gcmV0dXJucyB0aGUgbG9uZ2VzdCBwcmVmaXggb2YgW3NdIHNhdGlzZnlpbmcgW2Zvcl9hbGwgcHJlZml4IH5mXVxuICAgIChTZWUgW2xzdHJpcF0gdG8gZHJvcCBzdWNoIGEgcHJlZml4KSAqKVxudmFsIHRha2Vfd2hpbGUgOiB0IC0+IGY6KGNoYXIgLT4gYm9vbCkgLT4gdFxuXG4oKiogW3J0YWtlX3doaWxlIHMgfmZdIHJldHVybnMgdGhlIGxvbmdlc3Qgc3VmZml4IG9mIFtzXSBzYXRpc2Z5aW5nIFtmb3JfYWxsIHN1ZmZpeCB+Zl1cbiAgICAoU2VlIFtyc3RyaXBdIHRvIGRyb3Agc3VjaCBhIHN1ZmZpeCkgKilcbnZhbCBydGFrZV93aGlsZSA6IHQgLT4gZjooY2hhciAtPiBib29sKSAtPiB0XG5cbmluY2x1ZGUgSGV4ZHVtcC5TIHdpdGggdHlwZSB0IDo9IHRcbmluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbcXVpY2tjaGVja19nZW5lcmF0b3JdLCBidXQgd2l0aG91dCBlbXB0eSBzdHJpbmdzLiAqKVxudmFsIGdlbl9ub25lbXB0eSA6IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbcXVpY2tjaGVja19nZW5lcmF0b3JdLCBidXQgZ2VuZXJhdGUgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBkaXN0cmlidXRpb24gb2ZcbiAgICBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IHdpdGhvdXQgZW1wdHkgc3RyaW5ncy4gKilcbnZhbCBnZW5fbm9uZW1wdHknIDogY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTGlrZSBbZ2VuJ10sIGJ1dCBnZW5lcmF0ZSBzdHJpbmdzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtzdHJpbmddIGlzIGFscmVhZHkgc3RhYmxlIGJ5IGl0c2VsZiwgc2luY2UgYXMgYSBwcmltaXRpdmUgdHlwZSBpdCBpcyBhblxuICAgIGludGVncmFsIHBhcnQgb2YgdGhlIHNleHAgLyBiaW5faW8gcHJvdG9jb2wuIFtTdHJpbmcuU3RhYmxlXSBleGlzdHMgb25seSB0byBpbnRyb2R1Y2VcbiAgICBbU3RyaW5nLlN0YWJsZS5TZXRdLCBbU3RyaW5nLlN0YWJsZS5NYXBdLCBbU3RyaW5nLlN0YWJsZS5UYWJsZV0sIGFuZCBwcm92aWRlIGludGVyZmFjZVxuICAgIHVuaWZvcm1pdHkgd2l0aCBvdGhlciBzdGFibGUgdHlwZXMuICopXG5tb2R1bGUgU3RhYmxlIDogc2lnXG4gIG1vZHVsZSBWMSA6IHNpZ1xuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGVxdWFsLCBoYXNoLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBpbmNsdWRlIEJhc2UuU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0IDo9IHRcblxuICAgIGluY2x1ZGVcbiAgICAgIFN0YWJsZV9jb21wYXJhYmxlLlYxXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLlN0YWJsZS5WMS5TIHdpdGggdHlwZSBrZXkgOj0gdFxuICBlbmRcbmVuZFxuXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gYm9vbCBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkJvb2wpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgIGVuZClcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQm9vbFxuXG5pbmNsdWRlIChcbiAgQmFzZS5Cb29sIDpcbiAgICBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICBpbmNsdWRlIEJhc2UuQm9vbFxuICBlbmRcbiAgd2l0aCB0eXBlIHQgOj0gdClcblxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLkJvb2wpXG5cbmxldCBvZl9zdHJpbmdfaHVtID1cbiAgbGV0IHRhYmxlID1cbiAgICBsYXp5XG4gICAgICAobGV0IHRhYmxlID0gU3RyaW5nLkNhc2VsZXNzLlRhYmxlLmNyZWF0ZSAoKSBpblxuICAgICAgIFsgZmFsc2UsIFsgXCJmYWxzZVwiOyBcIm5vXCI7IFwiMFwiIF07IHRydWUsIFsgXCJ0cnVlXCI7IFwieWVzXCI7IFwiMVwiIF0gXVxuICAgICAgIHw+IExpc3QuaXRlciB+ZjooZnVuIChib29sLCBzdHJpbmdzKSAtPlxuICAgICAgICAgTGlzdC5pdGVyIHN0cmluZ3MgfmY6KGZ1biBzdHJpbmcgLT5cbiAgICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTpzdHJpbmcgfmRhdGE6Ym9vbDtcbiAgICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLnByZWZpeCBzdHJpbmcgMSkgfmRhdGE6Ym9vbCkpO1xuICAgICAgIHRhYmxlKVxuICBpblxuICBsZXQgcmFpc2VfaW52YWxpZCBpbnB1dCA9XG4gICAgbGV0IGV4cGVjdGVkX2Nhc2VfaW5zZW5zaXRpdmUgPSBTdHJpbmcuU2V0Lm9mX2xpc3QgKEhhc2h0Ymwua2V5cyAoZm9yY2UgdGFibGUpKSBpblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkJvb2wub2Zfc3RyaW5nX2h1bTogaW52YWxpZCBpbnB1dFwiXG4gICAgICAgICAgKGlucHV0IDogc3RyaW5nKVxuICAgICAgICAgIChleHBlY3RlZF9jYXNlX2luc2Vuc2l0aXZlIDogU3RyaW5nLlNldC50KV1cbiAgaW5cbiAgZnVuIHN0cmluZyAtPlxuICAgIEhhc2h0YmwuZmluZF9hbmRfY2FsbCAoZm9yY2UgdGFibGUpIHN0cmluZyB+aWZfZm91bmQ6Rm4uaWQgfmlmX25vdF9mb3VuZDpyYWlzZV9pbnZhbGlkXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJvb2xcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmJvb2xcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmJvb2xcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBiaW5faW9dXG4gIGVuZFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5CeXRlc1xuXG4gICAgdHlwZSB0ID0gYnl0ZXMgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlIChCYXNlLkJ5dGVzKVxuXG5pbmNsdWRlIEhleGR1bXAuT2ZfaW5kZXhhYmxlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBieXRlc1xuXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBnZXQgPSBnZXRcbiAgZW5kKVxuXG5sZXQgZ2VuJyBjaGFyX2dlbiA9IFN0cmluZy5nZW4nIGNoYXJfZ2VuIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zdHJpbmdcblxubGV0IGdlbl93aXRoX2xlbmd0aCBsZW4gY2hhcl9nZW4gPVxuICBTdHJpbmcuZ2VuX3dpdGhfbGVuZ3RoIGxlbiBjaGFyX2dlbiB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3RyaW5nXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IGNoYXIgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuQ2hhcilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbigqIGluY2x1ZGUgW0Jhc2UuQ2hhcl0gYWZ0ZXIgdGhlIGFwcGxpY2F0aW9uIG9mIFtJZGVudGlmaWFibGUuRXh0ZW5kXSB0byByZXBsYWNlIHRoZVxuICAgW0NvbXBhcmFibGVdIGZ1bmN0aW9ucyB3aXRoIHRoZSBwZXJ2YXNpdmUgdmVyc2lvbnMgKilcbmluY2x1ZGUgKFxuICBCYXNlLkNoYXIgOlxuICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgIGluY2x1ZGUgQmFzZS5DaGFyXG4gIGVuZFxuICB3aXRoIHR5cGUgdCA6PSB0KVxuXG5tb2R1bGUgQ2FzZWxlc3MgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENhc2VsZXNzXG5cbiAgICB0eXBlIHQgPSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbiAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG5lbmRcblxubW9kdWxlIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IEJhc2UuQ2hhclxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmNoYXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmNoYXJcbmxldCBnZW5fZGlnaXQgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfZGlnaXRcbmxldCBnZW5fbG93ZXJjYXNlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2xvd2VyY2FzZVxubGV0IGdlbl91cHBlcmNhc2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfdXBwZXJjYXNlXG5sZXQgZ2VuX2FscGhhID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2FscGhhXG5sZXQgZ2VuX2FscGhhbnVtID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX2FscGhhbnVtXG5sZXQgZ2VuX3ByaW50ID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5jaGFyX3ByaW50XG5sZXQgZ2VuX3doaXRlc3BhY2UgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmNoYXJfd2hpdGVzcGFjZVxubGV0IGdlbl91bmlmb3JtX2luY2x1c2l2ZSA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuY2hhcl91bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU2lnbiA9IEJhc2UuU2lnblxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNpZ24udCA9XG4gICAgICB8IE5lZ1xuICAgICAgfCBaZXJvXG4gICAgICB8IFBvc1xuICAgIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgdHlwZXJlcCwgZW51bWVyYXRlXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBTaWduXG5pbmNsdWRlIElkZW50aWZpYWJsZS5FeHRlbmQgKFNpZ24pIChTdGFibGUuVjEpXG4iLCJleHRlcm5hbCBmb3JtYXRfZmxvYXQgOiBzdHJpbmcgLT4gZmxvYXQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9mbG9hdFwiXG5cbigqIFN0b2xlbiBmcm9tIFtwZXJ2YXNpdmVzLm1sXS4gIEFkZHMgYSBcIi5cIiBhdCB0aGUgZW5kIGlmIG5lZWRlZC4gIEl0IGlzIGluXG4gICBbcGVydmFzaXZlcy5tbGldLCBidXQgaXQgYWxzbyBzYXlzIG5vdCB0byB1c2UgaXQgZGlyZWN0bHksIHNvIHdlIGNvcHkgYW5kIHBhc3RlIHRoZVxuICAgY29kZS4gSXQgbWFrZXMgdGhlIGFzc3VtcHRpb24gb24gdGhlIHN0cmluZyBwYXNzZWQgaW4gYXJndW1lbnQgdGhhdCBpdCB3YXMgcmV0dXJuZWQgYnlcbiAgIFtmb3JtYXRfZmxvYXRdICopXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGxcbiAgICB0aGVuIHMgXiBcIi5cIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIHwgJy0nIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgfCBfIC0+IHMpXG4gIGluXG4gIGxvb3AgMFxuOztcblxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmFzZS5GbG9hdFxuXG4gIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgdHlwZXJlcF1cbmVuZFxuXG5pbmNsdWRlIFRcbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChUKVxuaW5jbHVkZSBDb21wYXJhYmxlLk1hcF9hbmRfc2V0X2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoVClcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKFQpXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0ID0gVFxuXG5sZXQgdmFsaWRhdGVfb3JkaW5hcnkgdCA9XG4gIFZhbGlkYXRlLm9mX2Vycm9yX29wdFxuICAgIChsZXQgbW9kdWxlIEMgPSBDbGFzcyBpblxuICAgICBtYXRjaCBjbGFzc2lmeSB0IHdpdGhcbiAgICAgfCBDLk5vcm1hbCB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+IE5vbmVcbiAgICAgfCBDLkluZmluaXRlIC0+IFNvbWUgXCJ2YWx1ZSBpcyBpbmZpbml0ZVwiXG4gICAgIHwgQy5OYW4gLT4gU29tZSBcInZhbHVlIGlzIE5hTlwiKVxuOztcblxubW9kdWxlIFYgPSBzdHJ1Y3RcbiAgbW9kdWxlIFpaID0gQ29tcGFyYWJsZS5WYWxpZGF0ZSAoVClcblxuICBsZXQgdmFsaWRhdGVfYm91bmQgfm1pbiB+bWF4IHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV9ib3VuZCB0IH5taW4gfm1heClcbiAgOztcblxuICBsZXQgdmFsaWRhdGVfbGJvdW5kIH5taW4gdCA9XG4gICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZSAodmFsaWRhdGVfb3JkaW5hcnkgdCkgKFpaLnZhbGlkYXRlX2xib3VuZCB0IH5taW4pXG4gIDs7XG5cbiAgbGV0IHZhbGlkYXRlX3Vib3VuZCB+bWF4IHQgPVxuICAgIFZhbGlkYXRlLmZpcnN0X2ZhaWx1cmUgKHZhbGlkYXRlX29yZGluYXJ5IHQpIChaWi52YWxpZGF0ZV91Ym91bmQgdCB+bWF4KVxuICA7O1xuZW5kXG5cbmluY2x1ZGUgVlxuXG5tb2R1bGUgUm9idXN0X2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICgqIGludGVuZGVkIHRvIGJlIGEgdG9sZXJhbmNlIG9uIGh1bWFuLWVudGVyZWQgZmxvYXRzICopXG5cbiAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogZmxvYXRcblxuICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZS5TIHdpdGggdHlwZSB0IDo9IGZsb2F0XG4gIGVuZFxuXG4gIG1vZHVsZSBNYWtlIChUIDogc2lnXG4gICAgICB2YWwgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlIDogZmxvYXRcbiAgICBlbmQpIDogUyA9IHN0cnVjdFxuICAgICgqIFdlIGhhdmUgdGVzdCBpbiB0aGUgdHJlZSB0aGF0IHJlbHkgb24gdGhlc2UgZnVuY3Rpb25zIG5vdCBhbGxvY2F0aW5nLCBldmVuIHdpdGhvdXRcbiAgICAgICBYX0xJQlJBUllfSU5MSU5HLiBUaGUgb25seSB3YXkgdG8gZW5zdXJlIHRoYXQgdGhlc2UgZG9uJ3QgY3JlYXRlIHRlbXBvcmFyeSBib3hlZFxuICAgICAgIGZsb2F0cyB3aXRob3V0IFhfTElCUkFSWV9JTkxJTkcgaXMgZm9yIHRoaXMgY29kZSB0byBzZWUgdGhlIGZsb2F0IG9wZXJhdGlvbnMgYXNcbiAgICAgICBleHRlcm5hbHMsIGFzIGRlZmluZWQgaW4gW1BlcnZhc2l2ZXNdLiBUaGF0J3Mgd2h5IHdlIHVzZSBbUG9seV0gYW5kIGZsb2F0XG4gICAgICAgYXJpdGhtZXRpYyBmcm9tIFtDYW1sXS4gKilcbiAgICBvcGVuIFBvbHlcblxuICAgIGxldCByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UgPSBULnJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoID49LiApIHggeSA9IHggPj0gQ2FtbC4oIC0uICkgeSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICBsZXQgKCA8PS4gKSB4IHkgPSB5ID49LiB4XG4gICAgbGV0ICggPS4gKSB4IHkgPSB4ID49LiB5ICYmIHkgPj0uIHhcbiAgICBsZXQgKCA+LiApIHggeSA9IHggPiBDYW1sLiggKy4gKSB5IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZVxuICAgIGxldCAoIDwuICkgeCB5ID0geSA+LiB4XG4gICAgbGV0ICggPD4uICkgeCB5ID0gbm90ICh4ID0uIHkpXG5cbiAgICBsZXQgcm9idXN0bHlfY29tcGFyZSB4IHkgPVxuICAgICAgbGV0IGQgPSBDYW1sLiggLS4gKSB4IHkgaW5cbiAgICAgIGlmIGQgPCBDYW1sLiggfi0uICkgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG4gICAgICB0aGVuIC0xXG4gICAgICBlbHNlIGlmIGQgPiByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbiAgICAgIHRoZW4gMVxuICAgICAgZWxzZSAwXG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIFJvYnVzdGx5X2NvbXBhcmFibGUgPSBSb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtN1xuICBlbmQpXG5cbmluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZVxuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuRmxvYXQuT1xuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGVcbmVuZFxuXG5tb2R1bGUgVGVyc2UgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIGluY2x1ZGUgKFxuICAgIEJhc2UuRmxvYXQuVGVyc2UgOlxuICAgICAgbW9kdWxlIHR5cGUgb2Ygc3RydWN0XG4gICAgICBpbmNsdWRlIEJhc2UuRmxvYXQuVGVyc2VcbiAgICBlbmRcbiAgICB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmxldCByb2J1c3Rfc2lnbiB0IDogU2lnbi50ID0gaWYgdCA+LiAwLiB0aGVuIFBvcyBlbHNlIGlmIHQgPC4gMC4gdGhlbiBOZWcgZWxzZSBaZXJvXG5cbigqIFRoZXJlIGFyZSB0d28gaXNzdWVzOlxuICAgLSBGbG9hdC5zaWduIHVzZWQgdG8gdXNlIHJvYnVzdCBjb21wYXJpc29uLCBhbmQgdXNlcnMgb2YgW0NvcmVdIG1pZ2h0IGhhdmUgY29tZSB0b1xuICAgICBkZXBlbmQgb24gdGhpcy5cbiAgIC0gUm9idXN0bmVzcyBhc2lkZSwgd2hhdCB3ZSBnZXQgZnJvbSBDb21wYXJhYmxlLldpdGhfemVybyB3b3VsZCBtYXAgbmFuIHRvIE5lZy5cbiopXG5sZXQgc2lnbiA9IHJvYnVzdF9zaWduXG5cbigqIFN0YW5kYXJkIDEyIHNpZ25pZmljYW50IGRpZ2l0cywgZXhwb25lbnRpYWwgbm90YXRpb24gdXNlZCBhcyBuZWNlc3NhcnksIGd1YXJhbnRlZWQgdG9cbiAgIGJlIGEgdmFsaWQgT0NhbWwgZmxvYXQgbGV4ZW0sIG5vdCB0byBsb29rIGxpa2UgYW4gaW50LiAqKVxubGV0IHRvX3N0cmluZ18xMiB4ID0gdmFsaWRfZmxvYXRfbGV4ZW0gKGZvcm1hdF9mbG9hdCBcIiUuMTJnXCIgeClcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmZsb2F0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5mbG9hdFxubGV0IGdlbl91bmlmb3JtX2V4Y2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3VuaWZvcm1fZXhjbHVzaXZlXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X2luY2x1c2l2ZVxubGV0IGdlbl93aXRob3V0X25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfd2l0aG91dF9uYW5cbmxldCBnZW5fZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9maW5pdGVcbmxldCBnZW5fcG9zaXRpdmUgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmZsb2F0X3N0cmljdGx5X3Bvc2l0aXZlXG5sZXQgZ2VuX25lZ2F0aXZlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9zdHJpY3RseV9uZWdhdGl2ZVxubGV0IGdlbl96ZXJvID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBaZXJvXG5sZXQgZ2VuX25hbiA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTmFuXG5sZXQgZ2VuX3N1Ym5vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgU3Vibm9ybWFsXG5sZXQgZ2VuX25vcm1hbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuZmxvYXRfb2ZfY2xhc3MgTm9ybWFsXG5sZXQgZ2VuX2luZmluaXRlID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5mbG9hdF9vZl9jbGFzcyBJbmZpbml0ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQmFzZS5JbnRcblxuICAgICAgdHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgc2V4cF1cbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVClcbiAgZW5kXG5lbmRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuSW50KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gQmFzZS5JbnRcbmluY2x1ZGUgQmFzZS5JbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50KVxuXG4oKiBUaGlzIGlzIGFscmVhZHkgZGVmaW5lZCBieSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybywgYnV0IFNpZ24ub2ZfaW50IGlzXG4gICBtb3JlIGRpcmVjdC4gKilcbmxldCBzaWduID0gU2lnbi5vZl9pbnRcblxudHlwZSB0ID0gaW50IFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRcbmxldCBxdWlja2NoZWNrX29ic2VydmVyID0gQmFzZV9xdWlja2NoZWNrLk9ic2VydmVyLmludFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50XG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9pbmNsdXNpdmVcbmxldCBnZW5fdW5pZm9ybV9pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludF9sb2dfdW5pZm9ybV9pbmNsdXNpdmVcbiIsIigqKiBUaGlzIG1vZHVsZSBleHRlbmRzIHt7IUJhc2UuSW50X2ludGZ9W0Jhc2UuSW50X2ludGZdfS4gKilcblxubW9kdWxlIHR5cGUgUm91bmQgPSBCYXNlLkludC5Sb3VuZFxuXG5tb2R1bGUgdHlwZSBTdGFibGUgPSBzaWdcbiAgbW9kdWxlIFYxIDogU3RhYmxlX2NvbXBhcmFibGUuVjFcbmVuZFxuXG5tb2R1bGUgdHlwZSBIZXhhYmxlID0gc2lnXG4gIHR5cGUgdFxuXG4gIG1vZHVsZSBIZXggOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIHNleHBfZ3JhbW1hciwgY29tcGFyZSwgaGFzaCwgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgQmFzZS5TdHJpbmdhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgdmFsIHRvX3N0cmluZ19odW0gOiA/ZGVsaW1pdGVyOmNoYXIgLT4gdCAtPiBzdHJpbmdcbiAgZW5kXG5cbiAgKCpfIEVuc3VyZSB0aGF0IHRoaXMgbW9kdWxlIGlzIGFuIGV4dGVuc2lvbiBvZiBbQmFzZS5JbnQuSGV4YWJsZV0uICopXG4gIGluY2x1ZGUgQmFzZS5JbnQuSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0IGFuZCBtb2R1bGUgSGV4IDo9IEhleFxuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbiA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCB0eXBlcmVwXVxuXG4gIGluY2x1ZGUgSGV4YWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGVfd2l0aF96ZXJvIHdpdGggdHlwZSB0IDo9IHRcbiAgaW5jbHVkZSBRdWlja2NoZWNrYWJsZS5TX2ludCB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgU191bmJvdW5kZWQgPSBzaWdcbiAgaW5jbHVkZSBCYXNlLkludC5TX3VuYm91bmRlZFxuICBpbmNsdWRlIEV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgOj0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICBpbmNsdWRlIEJhc2UuSW50LlNcbiAgaW5jbHVkZSBFeHRlbnNpb24gd2l0aCB0eXBlIHQgOj0gdCB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzIDo9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuZW5kXG5cbm1vZHVsZSB0eXBlIEV4dGVuc2lvbl93aXRoX3N0YWJsZSA9IHNpZ1xuICBpbmNsdWRlIEV4dGVuc2lvblxuXG4gIG1vZHVsZSBTdGFibGUgOlxuICAgIFN0YWJsZSB3aXRoIHR5cGUgVjEudCA9IHQgYW5kIHR5cGUgVjEuY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5JbnQzMilcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnQzMiBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kKVxuXG5pbmNsdWRlIEJhc2UuSW50MzJcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuSW50MzIpXG5cbnR5cGUgdCA9IGludDMyIFtAQGRlcml2aW5nIHR5cGVyZXBdXG5cbm1vZHVsZSBIZXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBIZXhcblxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyB0eXBlcmVwLCBiaW5faW9dXG5lbmRcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMlxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuaW50MzJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gQmFzZV9xdWlja2NoZWNrLlNocmlua2VyLmludDMyXG5sZXQgZ2VuX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX3VuaWZvcm1faW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ19pbmNsID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci5pbnQzMl9sb2dfaW5jbHVzaXZlXG5sZXQgZ2VuX2xvZ191bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDMyX2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDY0KVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGludDY0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5JbnQ2NFxuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQ2NClcblxudHlwZSB0ID0gaW50NjQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2NFxubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDY0X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjRfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkludDY0fVtCYXNlLkludDY0XX0uICopXG5cbigqKiB7MiBJbnRlcmZhY2UgZnJvbSBCYXNlfSAqKVxuXG4oKiogQGlubGluZSAqKVxuaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLkludDY0XG5lbmRcblxuKCoqIHsyIEV4dGVuc2lvbnN9ICopXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlXG4gIEludF9pbnRmLkV4dGVuc2lvbiB3aXRoIHR5cGUgdCA6PSB0IGFuZCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQmluIDogQmluYWJsZTAuUyB3aXRoIHR5cGUgdCA6PSBCYXNlLkludDYzLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEJpbl9lbXVsYXRlZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChJbnQ2NClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcud3JhcF9leG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEJhc2UuSW50NjMuUHJpdmF0ZS5FbXVsLlcudW53cmFwXG4gICAgICAgIGVuZClcbiAgZW5kXG5cbiAgdHlwZSAnYSBiaW5hYmxlID0gKG1vZHVsZSBCaW5hYmxlMC5TIHdpdGggdHlwZSB0ID0gJ2EpXG5cbiAgbGV0IGJpbmFibGVfb2ZfcmVwciA6IHR5cGUgYSBiLiAoYSwgYikgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIudCAtPiBiIGJpbmFibGUgPSBmdW5jdGlvblxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50IC0+IChtb2R1bGUgSW50KVxuICAgIHwgQmFzZS5JbnQ2My5Qcml2YXRlLlJlcHIuSW50NjQgLT4gKG1vZHVsZSBCaW5fZW11bGF0ZWQpXG4gIDs7XG5cbiAgbGV0IGJpbmFibGUgOiBCYXNlLkludDYzLnQgYmluYWJsZSA9IGJpbmFibGVfb2ZfcmVwciBCYXNlLkludDYzLlByaXZhdGUucmVwclxuXG4gIGluY2x1ZGUgKHZhbCBiaW5hYmxlKVxuXG4gIGxldCBiaW5fc2hhcGVfdCA9IEJpbl9wcm90LlNoYXBlLmJpbl9zaGFwZV9pbnQ2M1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IEJhc2UuSW50NjMudCBbQEBkZXJpdmluZyBoYXNoLCBzZXhwXVxuXG4gICAgICBpbmNsdWRlIEJpblxuXG4gICAgICBpbmNsdWRlIChcbiAgICAgICAgQmFzZS5JbnQ2MyA6XG4gICAgICAgICAgQmFzZS5Db21wYXJhYmxlLlNcbiAgICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gQmFzZS5JbnQ2My5jb21wYXJhdG9yX3dpdG5lc3MpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gIGVuZFxuZW5kXG5cbigqIFRoaXMgW2luY2x1ZGUgc3RydWN0XSBpcyByZXF1aXJlZCBiZWNhdXNlIGl0IGxldHMgdXMgc2hhZG93IFt0XSB3aGVuIHdlIGluY2x1ZGVcbiAgIFtCYXNlLkludDYzXSBsYXRlciBvbi4gKilcbmluY2x1ZGUgc3RydWN0XG4gIHR5cGUgdCA9IEJhc2UuSW50NjMudFxuZW5kXG5cbmxldCB0eXBlcmVwX29mX3QgPSB0eXBlcmVwX29mX2ludDYzXG5sZXQgdHlwZW5hbWVfb2ZfdCA9IHR5cGVuYW1lX29mX2ludDYzXG5cbmluY2x1ZGVcbiAgSWRlbnRpZmlhYmxlLkV4dGVuZFxuICAgIChCYXNlLkludDYzKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgIGluY2x1ZGUgQmluXG4gICAgZW5kKVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlIDogQ29tcGFyYWJsZS5Qb2x5bW9ycGhpY19jb21wYXJlIHdpdGggdHlwZSB0IDo9IHQgPVxuICBCYXNlLkludDYzXG5cbmluY2x1ZGUgQmFzZS5JbnQ2M1xuaW5jbHVkZSBDb21wYXJhYmxlLlZhbGlkYXRlX3dpdGhfemVybyAoQmFzZS5JbnQ2MylcblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci5pbnQ2M1xubGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBCYXNlX3F1aWNrY2hlY2suU2hyaW5rZXIuaW50NjNcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfaW5jbHVzaXZlXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfdW5pZm9ybV9pbmNsdXNpdmVcbmxldCBnZW5fbG9nX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmludDYzX2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IuaW50NjNfbG9nX3VuaWZvcm1faW5jbHVzaXZlXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gQmFzZS5FeHBvcnRcbiAgb3BlbiBCaW5fcHJvdC5TdGRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gdW5pdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICBbJWV4cGVjdCB7fCA4NmJhNWRmNzQ3ZWVjODM3ZjBiMzkxZGQ0OWYzM2Y5ZSB8fV1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcblxuaW5jbHVkZVxuICBJZGVudGlmaWFibGUuRXh0ZW5kXG4gICAgKEJhc2UuVW5pdClcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5Vbml0XG5cbnR5cGUgdCA9IHVuaXQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gQmFzZV9xdWlja2NoZWNrLkdlbmVyYXRvci51bml0XG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEJhc2VfcXVpY2tjaGVjay5PYnNlcnZlci51bml0XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci51bml0XG5cbm1vZHVsZSB0eXBlIFMgPSBzaWcgZW5kXG5cbnR5cGUgbSA9IChtb2R1bGUgUylcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBCYXNlX3F1aWNrY2hlY2suRXhwb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgb3BlbiBTZXhwbGliLlN0ZFxuXG4gICAgdHlwZSAnYSB0ID0gJ2EgbGF6eV90IFtAQGRlcml2aW5nIGJpbl9pbywgcXVpY2tjaGVjaywgc2V4cCwgdHlwZXJlcF1cblxuICAgIGxldCBtYXAgPSBCYXNlLkxhenkubWFwXG4gICAgbGV0IGNvbXBhcmUgPSBCYXNlLkxhenkuY29tcGFyZVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBCYXNlX21hc2sgPSBtb2R1bGUgdHlwZSBvZiBCYXNlLkxhenkgd2l0aCB0eXBlICdhIHQgOj0gJ2EgU3RhYmxlLlYxLnRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgKEJhc2UuTGF6eSA6IEJhc2VfbWFzaylcbiIsIm9wZW4hIEltcG9ydFxuXG5pbmNsdWRlXG4gIElkZW50aWZpYWJsZS5FeHRlbmRcbiAgICAoQmFzZS5OYXRpdmVpbnQpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSB0ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQpXG5cbmluY2x1ZGUgQmFzZS5OYXRpdmVpbnRcbmluY2x1ZGUgQ29tcGFyYWJsZS5WYWxpZGF0ZV93aXRoX3plcm8gKEJhc2UuTmF0aXZlaW50KVxuXG50eXBlIHQgPSBuYXRpdmVpbnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxubW9kdWxlIEhleCA9IHN0cnVjdFxuICBpbmNsdWRlIEhleFxuXG4gIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHR5cGVyZXAsIGJpbl9pb11cbmVuZFxuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludFxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIubmF0aXZlaW50XG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5uYXRpdmVpbnRcbmxldCBnZW5faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2luY2x1c2l2ZVxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLm5hdGl2ZWludF91bmlmb3JtX2luY2x1c2l2ZVxubGV0IGdlbl9sb2dfaW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2xvZ19pbmNsdXNpdmVcbmxldCBnZW5fbG9nX3VuaWZvcm1faW5jbCA9IEJhc2VfcXVpY2tjaGVjay5HZW5lcmF0b3IubmF0aXZlaW50X2xvZ191bmlmb3JtX2luY2x1c2l2ZVxuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gQmFzZS5Ob3RoaW5nLnQgPSB8XG5cbiAgICBtb2R1bGUgU2hhcGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBiaW5fc2hhcGVdXG4gICAgZW5kXG5cbiAgICBsZXQgdW5yZWFjaGFibGVfY29kZSA9IEJhc2UuTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gICAgbGV0IGJpbl9zaGFwZV90ID0gU2hhcGUuYmluX3NoYXBlX3RcbiAgICBsZXQgdHBfbG9jID0gWyVoZXJlXS5wb3NfZm5hbWUgXiBcIi5TdGFibGUuVjEudFwiXG4gICAgbGV0IGFsbCA9IFtdXG4gICAgbGV0IGhhc2hfZm9sZF90IF8gdCA9IHVucmVhY2hhYmxlX2NvZGUgdFxuICAgIGxldCBoYXNoID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBjb21wYXJlIGEgXyA9IHVucmVhY2hhYmxlX2NvZGUgYVxuICAgIGxldCBiaW5fc2l6ZV90ID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCBiaW5fd3JpdGVfdCBfYnVmIH5wb3M6XyB0ID0gdW5yZWFjaGFibGVfY29kZSB0XG4gICAgbGV0IGJpbl93cml0ZXJfdCA9IHsgQmluX3Byb3QuVHlwZV9jbGFzcy5zaXplID0gYmluX3NpemVfdDsgd3JpdGUgPSBiaW5fd3JpdGVfdCB9XG5cbiAgICBsZXQgX19iaW5fcmVhZF90X18gX2J1ZiB+cG9zX3JlZiBfID1cbiAgICAgIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgdHBfbG9jICFwb3NfcmVmXG4gICAgOztcblxuICAgIGxldCBiaW5fcmVhZF90IF9idWYgfnBvc19yZWYgPVxuICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3JlYWRfZXJyb3IgKEVtcHR5X3R5cGUgdHBfbG9jKSAhcG9zX3JlZlxuICAgIDs7XG5cbiAgICBsZXQgYmluX3JlYWRlcl90ID1cbiAgICAgIHsgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkID0gYmluX3JlYWRfdDsgdnRhZ19yZWFkID0gX19iaW5fcmVhZF90X18gfVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3QgPVxuICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9IGJpbl93cml0ZXJfdFxuICAgICAgOyByZWFkZXIgPSBiaW5fcmVhZGVyX3RcbiAgICAgIDsgc2hhcGUgPSBiaW5fc2hhcGVfdFxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90ID0gdW5yZWFjaGFibGVfY29kZVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IFNleHBsaWIuQ29udl9lcnJvci5lbXB0eV90eXBlIHRwX2xvYyBzZXhwXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIEJhc2UuTm90aGluZ1xuaW5jbHVkZSBJZGVudGlmaWFibGUuRXh0ZW5kIChCYXNlLk5vdGhpbmcpIChTdGFibGUuVjEpXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSBuZXZlcl9yZXR1cm5zID0gTm90aGluZy50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuZXZlcl9yZXR1cm5zID0gTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4iLCJvcGVuISBJbXBvcnRcblxudHlwZSB0ID0gQmFzZS5PcmRlcmluZy50ID1cbiAgfCBMZXNzXG4gIHwgRXF1YWxcbiAgfCBHcmVhdGVyXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG5cbm1vZHVsZSB0eXBlIEJhc2VfbWFzayA9IG1vZHVsZSB0eXBlIG9mIEJhc2UuT3JkZXJpbmcgd2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIChCYXNlLk9yZGVyaW5nIDogQmFzZV9tYXNrKVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIEJhc2VfcXVpY2tjaGVjay5FeHBvcnRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBCYXNlLlJlZlxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmQgOlxuICBzaWdcbiAgICB0eXBlICdhIHQgPSAnYSByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBxdWlja2NoZWNrLCB0eXBlcmVwXVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcbmVuZFxuXG5pbmNsdWRlIFRcblxubW9kdWxlIFBlcm1pc3Npb25lZCA9IHN0cnVjdFxuICBpbmNsdWRlIFRcblxuICB0eXBlICgnYSwgLSdwZXJtcykgdCA9ICdhIFQudCBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG5cbiAgbGV0IHJlYWRfb25seSA9IEZuLmlkXG4gIGxldCBvZl9yZWYgPSBGbi5pZFxuICBsZXQgdG9fcmVmID0gRm4uaWRcbiAgbGV0IHNldCA9ICggOj0gKVxuICBsZXQgZ2V0ID0gKCAhIClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIEJhc2UuU291cmNlX2NvZGVfcG9zaXRpb25cbmluY2x1ZGUgU291cmNlX2NvZGVfcG9zaXRpb24wXG5pbmNsdWRlIENvbXBhcmFibGUuRXh0ZW5kIChCYXNlLlNvdXJjZV9jb2RlX3Bvc2l0aW9uKSAoU291cmNlX2NvZGVfcG9zaXRpb24wKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTb3VyY2VfY29kZV9wb3NpdGlvbjApXG4iLCIoKiBXZSBkb24ndCBqdXN0IGluY2x1ZGUgU2V4cGxpYi5TdGQgYmVjYXVzZSBvbmUgY2FuIG9ubHkgZGVmaW5lIEhhc2h0Ymwgb25jZSBpbiB0aGlzXG4gICBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxuXG4oKiogW2luY2x1ZGVdZCBmaXJzdCBzbyB0aGF0IGV2ZXJ5dGhpbmcgZWxzZSBzaGFkb3dzIGl0ICopXG5pbmNsdWRlIENvcmVfcGVydmFzaXZlc1xuXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgQmFzZV9xdWlja2NoZWNrLkV4cG9ydFxuaW5jbHVkZSBEZXByZWNhdGVfcGlwZV9iYW5nXG5pbmNsdWRlIEVpdGhlci5FeHBvcnRcbmluY2x1ZGUgRnJvbV9zZXhwbGliXG5pbmNsdWRlIEludGVyZmFjZXNcbmluY2x1ZGUgTGlzdC5JbmZpeFxuaW5jbHVkZSBOZXZlcl9yZXR1cm5zXG5pbmNsdWRlIE9yZGVyaW5nLkV4cG9ydFxuaW5jbHVkZSBQZXJtcy5FeHBvcnRcbmluY2x1ZGUgUmVzdWx0LkV4cG9ydFxuXG50eXBlIC0nYSByZXR1cm4gPSAnYSBXaXRoX3JldHVybi5yZXR1cm4gPSBwcml2YXRlIHsgcmV0dXJuIDogJ2IuICdhIC0+ICdiIH0gW0BAdW5ib3hlZF1cblxuaW5jbHVkZSBzdHJ1Y3RcbiAgZXhjZXB0aW9uIEJ1ZyBvZiBzdHJpbmcgW0BkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjAtMDNdIERvbid0IHVzZSBbQnVnXVwiXVxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kIFtAQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl1cblxuXG4oKiogUmFpc2VkIGlmIG1hbGxvYyBpbiBDIGJpbmRpbmdzIGZhaWwgKGVycm5vICogc2l6ZSkuICopXG5leGNlcHRpb24gQ19tYWxsb2NfZXhuIG9mIGludCAqIGludFxuXG4oKiBlcnJubywgc2l6ZSAqKVxubGV0ICgpID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwiQ19tYWxsb2NfZXhuXCIgKENfbWFsbG9jX2V4biAoMCwgMCkpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5ID0gRXhuLkZpbmFsbHlcblxubGV0IGZzdDMgKHgsIF8sIF8pID0geFxubGV0IHNuZDMgKF8sIHksIF8pID0geVxubGV0IHRyZDMgKF8sIF8sIHopID0gelxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBsZXQgdXcgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlIENhbWwuTm90X2ZvdW5kXG4gIDs7XG5lbmQgOlxuc2lnXG4gIHZhbCB1dyA6ICdhIG9wdGlvbiAtPiAnYSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTJdIFVzZSBbT3B0aW9uLnZhbHVlX2V4bl1cIl1cbmVuZClcblxuKCoqIFtwaHlzX3NhbWVdIGlzIGxpa2UgW3BoeXNfZXF1YWxdLCBidXQgd2l0aCBhIG1vcmUgZ2VuZXJhbCB0eXBlLiAgW3BoeXNfc2FtZV0gaXMgdXNlZnVsXG4gICAgd2hlbiBkZWFsaW5nIHdpdGggZXhpc3RlbnRpYWwgdHlwZXMsIHdoZW4gb25lIGhhcyBhIHBhY2tlZCB2YWx1ZSBhbmQgYW4gdW5wYWNrZWQgdmFsdWVcbiAgICB0aGF0IG9uZSB3YW50cyB0byBjaGVjayBhcmUgcGh5c2ljYWxseSBlcXVhbC4gIE9uZSBjYW4ndCB1c2UgW3BoeXNfZXF1YWxdIGluIHN1Y2ggYVxuICAgIHNpdHVhdGlvbiBiZWNhdXNlIHRoZSB0eXBlcyBhcmUgZGlmZmVyZW50LiAqKVxubGV0IHBoeXNfc2FtZSAodHlwZSBhIGIpIChhIDogYSkgKGIgOiBiKSA9IHBoeXNfZXF1YWwgYSAoT2JqLm1hZ2ljIGIgOiBhKVxuXG5sZXQgKCAlICkgPSBJbnQuKCAlIClcbmxldCAoIC8lICkgPSBJbnQuKCAvJSApXG5sZXQgKCAvLyApID0gSW50LiggLy8gKVxubGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5sZXQgYnByaW50ZiA9IFByaW50Zi5icHJpbnRmXG5sZXQgY29uc3QgPSBGbi5jb25zdFxubGV0IGVwcmludGYgPSBQcmludGYuZXByaW50ZlxubGV0IGVycm9yID0gT3JfZXJyb3IuZXJyb3JcbmxldCBlcnJvcl9zID0gT3JfZXJyb3IuZXJyb3Jfc1xubGV0IGZhaWx3aXRoZiA9IEJhc2UuUHJpbnRmLmZhaWx3aXRoZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBsZXQgZmFpbHdpdGhwID0gKEVycm9yLmZhaWx3aXRocCBbQGFsZXJ0IFwiLWRlcHJlY2F0ZWRcIl0pXG5lbmQgOlxuc2lnXG4gIHZhbCBmYWlsd2l0aHBcbiAgICA6ICA/c3RyaWN0OnVuaXRcbiAgICAtPiBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgLT4gc3RyaW5nXG4gICAgLT4gJ2FcbiAgICAtPiAoJ2EgLT4gU2V4cC50KVxuICAgIC0+IF9cbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIwLTAzXSBVc2UgW2ZhaWx3aXRoc10gaW5zdGVhZC5cIl1cbmVuZClcblxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xubGV0IGZvcmNlID0gQmFzZS5MYXp5LmZvcmNlXG5sZXQgZnByaW50ZiA9IFByaW50Zi5mcHJpbnRmXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gIGxldCBpZGVudCA9IEZuLmlkXG5lbmQgOlxuc2lnXG4gIHZhbCBpZGVudCA6ICdhIC0+ICdhIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wOF0gVXNlIFtGbi5pZF0gaW5zdGVhZC5cIl1cbmVuZClcblxubGV0IGludmFsaWRfYXJnZiA9IEJhc2UuUHJpbnRmLmludmFsaWRfYXJnZlxubGV0IGlmcHJpbnRmID0gUHJpbnRmLmlmcHJpbnRmXG5sZXQgaXNfbm9uZSA9IE9wdGlvbi5pc19ub25lXG5sZXQgaXNfc29tZSA9IE9wdGlvbi5pc19zb21lXG5sZXQga3NwcmludGYgPSBQcmludGYua3NwcmludGZcbmxldCBva19leG4gPSBPcl9lcnJvci5va19leG5cbmxldCBwaHlzX2VxdWFsID0gQmFzZS5waHlzX2VxdWFsXG5sZXQgcGh5c19zYW1lID0gcGh5c19zYW1lXG5sZXQgcHJpbnRfcyA9IFN0ZGlvLnByaW50X3NcbmxldCBlcHJpbnRfcyA9IFN0ZGlvLmVwcmludF9zXG5sZXQgcHJpbnRmID0gUHJpbnRmLnByaW50ZlxubGV0IHByb3RlY3QgPSBFeG4ucHJvdGVjdFxubGV0IHByb3RlY3R4ID0gRXhuLnByb3RlY3R4XG5sZXQgcmFpc2VfcyA9IEVycm9yLnJhaXNlX3NcbmxldCByb3VuZCA9IEZsb2F0LnJvdW5kXG5sZXQgKCAqKi4gKSA9IEJhc2UuKCAqKi4gKVxubGV0ICggJS4gKSA9IEJhc2UuKCAlLiApXG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcbmxldCBzdGFnZSA9IFN0YWdlZC5zdGFnZVxubGV0IHVuc3RhZ2UgPSBTdGFnZWQudW5zdGFnZVxubGV0IHdpdGhfcmV0dXJuID0gV2l0aF9yZXR1cm4ud2l0aF9yZXR1cm5cbmxldCB3aXRoX3JldHVybl9vcHRpb24gPSBXaXRoX3JldHVybi53aXRoX3JldHVybl9vcHRpb25cblxuKCogV2l0aCB0aGUgZm9sbG93aW5nIGFsaWFzZXMsIHdlIGFyZSBqdXN0IG1ha2luZyBleHRyYSBzdXJlIHRoYXQgdGhlIHRvcGxldmVsIHNleHBcbiAgIGNvbnZlcnRlcnMgbGluZSB1cCB3aXRoIHRoZSBvbmVzIGluIG91ciBtb2R1bGVzLiAqKVxuXG5cbmluY2x1ZGUgVHlwZXJlcF9saWIuU3RkX2ludGVybmFsXG5cbmluY2x1ZGUgKFxuc3RydWN0XG4gICgqIFtkZXJpdmluZyBoYXNoXSBpcyBtaXNzaW5nIGZvciBbYXJyYXldLCBbYnl0ZXNdLCBhbmQgW3JlZl0gc2luY2UgdGhlc2UgdHlwZXMgYXJlXG4gICAgIG11dGFibGUuICopXG4gIHR5cGUgJ2EgYXJyYXkgPSAnYSBBcnJheS50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJvb2wgPSBCb29sLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgY2hhciA9IENoYXIudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSBmbG9hdCA9IEZsb2F0LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50ID0gSW50LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgaW50MzIgPSBJbnQzMi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGludDY0ID0gSW50NjQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsYXp5X3QgPSAnYSBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBsaXN0ID0gJ2EgTGlzdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludCA9IE5hdGl2ZWludC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlICdhIG9wdGlvbiA9ICdhIE9wdGlvbi50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIHN0cmluZyA9IFN0cmluZy50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIGJ5dGVzID0gQnl0ZXMudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSByZWYgPSAnYSBSZWYudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSB1bml0ID0gVW5pdC50XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICAoKiBCaW5fcHJvdCBoYXMgb3B0aW1pemVkIGZ1bmN0aW9ucyBmb3IgZmxvYXQgYXJyYXlzICopXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgdHlwZSBmbG9hdF9hcnJheSA9IGZsb2F0IGFycmF5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kIFtAYWxlcnQgXCItZGVwcmVjYXRlZFwiXVxuXG4gIGluY2x1ZGUgKFxuICBzdHJ1Y3RcbiAgICB0eXBlIGZsb2F0X2FycmF5ID0gRmxvYXQudCBhcnJheSBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIGVuZCA6XG4gIHNpZ1xuICAgIHR5cGUgZmxvYXRfYXJyYXkgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICBlbmRcbiAgd2l0aCB0eXBlIGZsb2F0X2FycmF5IDo9IGZsb2F0X2FycmF5KVxuZW5kIDpcbnNpZ1xuICB0eXBlICdhIGFycmF5IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBib29sIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBjaGFyIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBmbG9hdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgaW50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBpbnQzMiBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgaW50NjQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICB0eXBlICdhIGxhenlfdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSAnYSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICB0eXBlIG5hdGl2ZWludFxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG5cbiAgdHlwZSAnYSBvcHRpb25cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gIHR5cGUgc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBzZXhwLCBzZXhwX2dyYW1tYXIsIHR5cGVyZXBdXG4gIHR5cGUgJ2EgcmVmIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cbiAgdHlwZSB1bml0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hciwgdHlwZXJlcF1cblxuICBpbmNsdWRlIHNpZ1xuICAgIHR5cGUgZmxvYXRfYXJyYXkgPSBmbG9hdCBhcnJheVxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wOV0gdXNlIFtmbG9hdCBhcnJheV0gb3IgW2Zsb2F0YXJyYXldIGluc3RlYWRcIl1cbiAgZW5kXG4gICAgICAgICAgW0BhbGVydCBcIi1kZXByZWNhdGVkXCJdXG5lbmRcbndpdGggdHlwZSAnYSBhcnJheSA6PSAnYSBhcnJheVxud2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxud2l0aCB0eXBlIGNoYXIgOj0gY2hhclxud2l0aCB0eXBlIGZsb2F0IDo9IGZsb2F0XG53aXRoIHR5cGUgaW50IDo9IGludFxud2l0aCB0eXBlIGludDMyIDo9IGludDMyXG53aXRoIHR5cGUgaW50NjQgOj0gaW50NjRcbndpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbndpdGggdHlwZSBuYXRpdmVpbnQgOj0gbmF0aXZlaW50XG53aXRoIHR5cGUgJ2Egb3B0aW9uIDo9ICdhIG9wdGlvblxud2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbndpdGggdHlwZSBieXRlcyA6PSBieXRlc1xud2l0aCB0eXBlICdhIGxhenlfdCA6PSAnYSBsYXp5X3RcbndpdGggdHlwZSAnYSByZWYgOj0gJ2EgcmVmXG53aXRoIHR5cGUgdW5pdCA6PSB1bml0KVxuXG5sZXQgc2V4cF9vZl9leG4gPSBFeG4uc2V4cF9vZl90XG5cblxuKCogVGhlIGNvZGUgYmVsb3cgY2hlY2tzIHRoYXQgdGhlIHNpZ25hdHVyZXMgaW4gbWFwLm1saSBhbmQgc2V0Lm1saSBhcmVcbiAgIGNvbnNpc3RlbnQgd2l0aCB0aGUgZ2VuZXJpYyBtYXAgYW5kIHNldCBzaWduYXR1cmVzIGRlZmluZWQgaW4gbWFwX2ludGYubWxcbiAgIGFuZCBzZXRfaW50Zi5tbC4gKilcblxubGV0ICgpID1cbiAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSAnYSBlbHQgPSAnYVxuICAgIHR5cGUgJ2EgY21wID0gJ2FcbiAgZW5kXG4gIGluXG4gIGxldCBtb2R1bGUgXyA6IHNpZ1xuICAgIG9wZW4gU2V0X2ludGZcblxuICAgIG1vZHVsZSBUcmVlIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzMl93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHNldCA6PSAoJ2EsICdiKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgdFxuICAgICAgICB3aXRoIHR5cGUgKCdhLCAnYikgbmFtZWQgOj0gKCdhLCAnYikgVHJlZS5OYW1lZC50XG4gICAgZW5kXG5cbiAgICB0eXBlICgnYSwgJ2IpIHRcblxuICAgIGluY2x1ZGVcbiAgICAgIEFjY2Vzc29yczJcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSB0cmVlIDo9ICgnYSwgJ2IpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIG5hbWVkIDo9ICgnYSwgJ2IpIE5hbWVkLnRcblxuICAgIGluY2x1ZGVcbiAgICAgIENyZWF0b3JzX2dlbmVyaWNcbiAgICAgIHdpdGggdHlwZSAoJ2EsICdiKSBzZXQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IpIHRyZWUgOj0gKCdhLCAnYikgVHJlZS50XG4gICAgICB3aXRoIHR5cGUgJ2EgZWx0IDo9ICdhIFQuZWx0XG4gICAgICB3aXRoIHR5cGUgJ2EgY21wIDo9ICdhIFQuY21wXG4gICAgICB3aXRoIHR5cGUgKCdhLCAnY21wLCAneikgb3B0aW9ucyA6PVxuICAgICAgICAoJ2EsICdjbXAsICd6KSBTZXRfaW50Zi5XaXRoX2ZpcnN0X2NsYXNzX21vZHVsZS50XG4gIGVuZCA9XG4gICAgU2V0XG4gIGluXG4gICgpXG47O1xuXG5sZXQgKCkgPVxuICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICdrIGtleSA9ICdrXG4gICAgdHlwZSAnYyBjbXAgPSAnY1xuICBlbmRcbiAgaW5cbiAgbGV0IG1vZHVsZSBfIDogc2lnXG4gICAgb3BlbiBNYXBfaW50ZlxuXG4gICAgbW9kdWxlIFRyZWUgOiBzaWdcbiAgICAgIHR5cGUgKCdhLCAnYiwgJ2MpIHRcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBDcmVhdG9yc19hbmRfYWNjZXNzb3JzM193aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICAgIHdpdGggdHlwZSAoJ2EsICdiLCAnYykgdHJlZSA6PSAoJ2EsICdiLCAnYykgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAoJ2EsICdiLCAnYykgdFxuXG4gICAgaW5jbHVkZVxuICAgICAgQWNjZXNzb3JzM1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuXG4gICAgaW5jbHVkZVxuICAgICAgQ3JlYXRvcnNfZ2VuZXJpY1xuICAgICAgd2l0aCB0eXBlICgnYSwgJ2IsICdjKSB0IDo9ICgnYSwgJ2IsICdjKSB0XG4gICAgICB3aXRoIHR5cGUgKCdhLCAnYiwgJ2MpIHRyZWUgOj0gKCdhLCAnYiwgJ2MpIFRyZWUudFxuICAgICAgd2l0aCB0eXBlICgnYSwgJ2NtcCwgJ3opIG9wdGlvbnMgOj1cbiAgICAgICAgKCdhLCAnY21wLCAneikgTWFwX2ludGYuV2l0aF9maXJzdF9jbGFzc19tb2R1bGUudFxuICAgICAgd2l0aCB0eXBlICdrIGtleSA6PSAnayBULmtleVxuICAgICAgd2l0aCB0eXBlICdjIGNtcCA6PSAnYyBULmNtcFxuICBlbmQgPVxuICAgIE1hcFxuICBpblxuICAoKVxuOztcblxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxubW9kdWxlIFJlcHIgPSBJbnQ2M1xuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl0gW0BAaW1tZWRpYXRlNjRdXG5cbiAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIHZhbCBvZl9yZXByIDogUmVwci50IC0+IHRcbiAgdmFsIHRvX3JlcHIgOiB0IC0+IFJlcHIudFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFJlcHIudCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gIGxldCBvZl9yZXByID0gRm4uaWRcbiAgbGV0IHRvX3JlcHIgPSBGbi5pZFxuXG4gIGxldCB0b19zdHJpbmcgbiA9XG4gICAgbGV0IG9wZW4gUmVwciBpblxuICAgIGxldCBraWIgPSBvZl9pbnQgMTAyNCBpblxuICAgIGxldCBtaWIgPSBraWIgKiBraWIgaW5cbiAgICBsZXQgZ2liID0ga2liICogbWliIGluXG4gICAgbGV0IG5fYWJzID0gYWJzIG4gaW5cbiAgICBpZiBuX2FicyA8IGtpYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVkQlwiICh0b19pbnRfZXhuIG4pXG4gICAgZWxzZSBpZiBuX2FicyA8IG1pYlxuICAgIHRoZW4gc3ByaW50ZiBcIiVnS1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGtpYilcbiAgICBlbHNlIGlmIG5fYWJzIDwgZ2liXG4gICAgdGhlbiBzcHJpbnRmIFwiJWdNXCIgKHRvX2Zsb2F0IG4gLy4gdG9fZmxvYXQgbWliKVxuICAgIGVsc2Ugc3ByaW50ZiBcIiVnR1wiICh0b19mbG9hdCBuIC8uIHRvX2Zsb2F0IGdpYilcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IG4gPSBTZXhwLkF0b20gKHRvX3N0cmluZyBuKVxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgYnl0ZXNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuICh0b19yZXByIHQpXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIEJpZ2FycmF5XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgaW5jbHVkZSBCYXNlX2JpZ3N0cmluZ1xuXG4gICAgbW9kdWxlIFogOiBzaWdcbiAgICAgIHR5cGUgdCA9IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCwgY19sYXlvdXQpIEFycmF5MS50IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICBlbmQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IGJpZ3N0cmluZyBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFpcblxuICAgIHR5cGUgdF9mcm96ZW4gPSB0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgZW5kXG5lbmRcblxubW9kdWxlIFQgPSBTdGFibGUuVjFcbmluY2x1ZGUgVFxubW9kdWxlIFVuc3RhYmxlID0gVFxuXG5sZXQgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2Mgc2l6ZSA9XG4gIGxldCBtYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgPVxuICAgIE9wdGlvbi5tYXAgbWF4X21lbV93YWl0aW5nX2djIH5mOkJ5dGVfdW5pdHMwLmJ5dGVzX2ludF9leG5cbiAgaW5cbiAgY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2NfaW5fYnl0ZXMgc2l6ZVxuOztcblxubGV0IHN1Yl9zaGFyZWQgPyhwb3MgPSAwKSA/bGVuIChic3RyIDogdCkgPVxuICBsZXQgbGVuID0gZ2V0X29wdF9sZW4gYnN0ciB+cG9zIGxlbiBpblxuICBBcnJheTEuc3ViIGJzdHIgcG9zIGxlblxuOztcblxuKCogRGVzdHJ1Y3Rpb24gKilcblxuZXh0ZXJuYWwgdW5zYWZlX2Rlc3Ryb3kgOiB0IC0+IHVuaXQgPSBcImJpZ3N0cmluZ19kZXN0cm95X3N0dWJcIlxuXG5leHRlcm5hbCB1bnNhZmVfZGVzdHJveV9hbmRfcmVzaXplIDogdCAtPiBsZW46aW50IC0+IHQgPSBcImJpZ3N0cmluZ19yZWFsbG9jXCJcblxuKCogUmVhZGluZyAvIHdyaXRpbmcgYmluLXByb3QgKilcblxubGV0IHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/KHBvcyA9IDApID9sZW4gcmVhZGVyID1cbiAgbGV0IGxlbiA9IGdldF9vcHRfbGVuIHQgbGVuIH5wb3MgaW5cbiAgbGV0IGxpbWl0ID0gcG9zICsgbGVuIGluXG4gIGNoZWNrX2FyZ3MgfmxvYzpcInJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnNcIiB0IH5wb3MgfmxlbjtcbiAgbGV0IGludmFsaWRfZGF0YSBtZXNzYWdlIGEgc2V4cF9vZl9hID1cbiAgICBgSW52YWxpZF9kYXRhIChFcnJvci5jcmVhdGUgbWVzc2FnZSBhIHNleHBfb2ZfYSlcbiAgaW5cbiAgbGV0IHJlYWQgYmluX3JlYWRlciB+cG9zIH5sZW4gPVxuICAgIGlmIGxlbiA+IGxpbWl0IC0gcG9zXG4gICAgdGhlbiBgTm90X2Vub3VnaF9kYXRhXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeSBgT2sgKGJpbl9yZWFkZXIgdCB+cG9zX3JlZikgd2l0aFxuICAgICAgICB8IGV4biAtPiBgSW52YWxpZF9kYXRhIChFcnJvci5vZl9leG4gZXhuKVxuICAgICAgd2l0aFxuICAgICAgfCBgSW52YWxpZF9kYXRhIF8gYXMgeCAtPiB4XG4gICAgICB8IGBPayByZXN1bHQgLT5cbiAgICAgICAgbGV0IGV4cGVjdGVkX3BvcyA9IHBvcyArIGxlbiBpblxuICAgICAgICBpZiAhcG9zX3JlZiA9IGV4cGVjdGVkX3Bvc1xuICAgICAgICB0aGVuIGBPayAocmVzdWx0LCBleHBlY3RlZF9wb3MpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbnZhbGlkX2RhdGFcbiAgICAgICAgICAgIFwicG9zX3JlZiA8PiBleHBlY3RlZF9wb3NcIlxuICAgICAgICAgICAgKCFwb3NfcmVmLCBleHBlY3RlZF9wb3MpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludCAqIGludF0pXG4gIGluXG4gIG1hdGNoXG4gICAgcmVhZCBCaW5fcHJvdC5VdGlscy5iaW5fcmVhZF9zaXplX2hlYWRlciB+cG9zIH5sZW46QmluX3Byb3QuVXRpbHMuc2l6ZV9oZWFkZXJfbGVuZ3RoXG4gIHdpdGhcbiAgfCAoYE5vdF9lbm91Z2hfZGF0YSB8IGBJbnZhbGlkX2RhdGEgXykgYXMgeCAtPiB4XG4gIHwgYE9rIChlbGVtZW50X2xlbmd0aCwgcG9zKSAtPlxuICAgIGlmIGVsZW1lbnRfbGVuZ3RoIDwgMFxuICAgIHRoZW4gaW52YWxpZF9kYXRhIFwibmVnYXRpdmUgZWxlbWVudCBsZW5ndGggJWRcIiBlbGVtZW50X2xlbmd0aCBbJXNleHBfb2Y6IGludF1cbiAgICBlbHNlIHJlYWQgcmVhZGVyLkJpbl9wcm90LlR5cGVfY2xhc3MucmVhZCB+cG9zIH5sZW46ZWxlbWVudF9sZW5ndGhcbjs7XG5cbmxldCByZWFkX2Jpbl9wcm90IHQgP3BvcyA/bGVuIHJlYWRlciA9XG4gIG1hdGNoIHJlYWRfYmluX3Byb3RfdmVyYm9zZV9lcnJvcnMgdCA/cG9zID9sZW4gcmVhZGVyIHdpdGhcbiAgfCBgT2sgeCAtPiBPayB4XG4gIHwgYEludmFsaWRfZGF0YSBlIC0+IEVycm9yIChFcnJvci50YWcgZSB+dGFnOlwiSW52YWxpZCBkYXRhXCIpXG4gIHwgYE5vdF9lbm91Z2hfZGF0YSAtPiBPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJub3QgZW5vdWdoIGRhdGFcIlxuOztcblxubGV0IHdyaXRlX2Jpbl9wcm90IHQgPyhwb3MgPSAwKSB3cml0ZXIgdiA9XG4gIGxldCBkYXRhX2xlbiA9IHdyaXRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLnNpemUgdiBpblxuICBsZXQgdG90YWxfbGVuID0gZGF0YV9sZW4gKyBCaW5fcHJvdC5VdGlscy5zaXplX2hlYWRlcl9sZW5ndGggaW5cbiAgaWYgcG9zIDwgMFxuICB0aGVuXG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3Q6IG5lZ2F0aXZlIHBvc1wiIHBvcyBbJXNleHBfb2Y6IGludF07XG4gIGlmIHBvcyArIHRvdGFsX2xlbiA+IGxlbmd0aCB0XG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiQmlnc3RyaW5nLndyaXRlX2Jpbl9wcm90OiBub3QgZW5vdWdoIHJvb21cIlxuICAgICAgKGBwb3MgcG9zLCBgcG9zX2FmdGVyX3dyaXRpbmcgKHBvcyArIHRvdGFsX2xlbiksIGBiaWdzdHJpbmdfbGVuZ3RoIChsZW5ndGggdCkpXG4gICAgICBbJXNleHBfb2Y6XG4gICAgICAgIFsgYHBvcyBvZiBpbnQgXSAqIFsgYHBvc19hZnRlcl93cml0aW5nIG9mIGludCBdICogWyBgYmlnc3RyaW5nX2xlbmd0aCBvZiBpbnQgXV07XG4gIGxldCBwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgPSBCaW5fcHJvdC5VdGlscy5iaW5fd3JpdGVfc2l6ZV9oZWFkZXIgdCB+cG9zIGRhdGFfbGVuIGluXG4gIGxldCBwb3NfYWZ0ZXJfZGF0YSA9IHdyaXRlci5CaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlIHQgfnBvczpwb3NfYWZ0ZXJfc2l6ZV9oZWFkZXIgdiBpblxuICBpZiBwb3NfYWZ0ZXJfZGF0YSAtIHBvcyA8PiB0b3RhbF9sZW5cbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJCaWdzdHJpbmcud3JpdGVfYmluX3Byb3QgYnVnIVwiXG4gICAgICAoIGBwb3NfYWZ0ZXJfZGF0YSBwb3NfYWZ0ZXJfZGF0YVxuICAgICAgLCBgc3RhcnRfcG9zIHBvc1xuICAgICAgLCBgYmluX3Byb3Rfc2l6ZV9oZWFkZXJfbGVuZ3RoIEJpbl9wcm90LlV0aWxzLnNpemVfaGVhZGVyX2xlbmd0aFxuICAgICAgLCBgZGF0YV9sZW4gZGF0YV9sZW5cbiAgICAgICwgYHRvdGFsX2xlbiB0b3RhbF9sZW4gKVxuICAgICAgWyVzZXhwX29mOlxuICAgICAgICBbIGBwb3NfYWZ0ZXJfZGF0YSBvZiBpbnQgXVxuICAgICAgICAqIFsgYHN0YXJ0X3BvcyBvZiBpbnQgXVxuICAgICAgICAqIFsgYGJpbl9wcm90X3NpemVfaGVhZGVyX2xlbmd0aCBvZiBpbnQgXVxuICAgICAgICAqIFsgYGRhdGFfbGVuIG9mIGludCBdXG4gICAgICAgICogWyBgdG90YWxfbGVuIG9mIGludCBdXTtcbiAgcG9zX2FmdGVyX2RhdGFcbjs7XG5cbigqIEhleCBkdW1wICopXG5cbmluY2x1ZGUgSGV4ZHVtcC5PZl9pbmRleGFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGdldCA9IGdldFxuICBlbmQpXG5cbmxldCByZWMgbGFzdF9ub25tYXRjaF9wbHVzX29uZSB+YnVmIH5taW5fcG9zIH5wb3MgfmNoYXIgPVxuICBsZXQgcG9zJyA9IHBvcyAtIDEgaW5cbiAgaWYgcG9zJyA+PSBtaW5fcG9zICYmIENoYXIuKCA9ICkgKGdldCBidWYgcG9zJykgY2hhclxuICB0aGVuIGxhc3Rfbm9ubWF0Y2hfcGx1c19vbmUgfmJ1ZiB+bWluX3BvcyB+cG9zOnBvcycgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBnZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuICgpID1cbiAgbGV0IGRhdGFfZW5kID1cbiAgICBsYXN0X25vbm1hdGNoX3BsdXNfb25lIH5idWY6dCB+bWluX3Bvczpwb3MgfnBvczoocG9zICsgbGVuKSB+Y2hhcjpwYWRkaW5nXG4gIGluXG4gIHRvX3N0cmluZyB0IH5wb3MgfmxlbjooZGF0YV9lbmQgLSBwb3MpXG47O1xuXG5sZXQgc2V0X3RhaWxfcGFkZGVkX2ZpeGVkX3N0cmluZyB+cGFkZGluZyB0IH5wb3MgfmxlbiB2YWx1ZSA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCB2YWx1ZSBpblxuICBpZiBzbGVuID4gbGVuXG4gIHRoZW5cbiAgICBQcmludGYuZmFpbHdpdGhmXG4gICAgICBcIkJpZ3N0cmluZy5zZXRfdGFpbF9wYWRkZWRfZml4ZWRfc3RyaW5nOiAlUyBpcyBsb25nZXIgdGhhbiAlZFwiXG4gICAgICB2YWx1ZVxuICAgICAgbGVuXG4gICAgICAoKTtcbiAgRnJvbV9zdHJpbmcuYmxpdCB+c3JjOnZhbHVlIH5kc3Q6dCB+c3JjX3BvczowIH5kc3RfcG9zOnBvcyB+bGVuOnNsZW47XG4gIGZvciBpID0gcG9zICsgc2xlbiB0byBwb3MgKyBsZW4gLSAxIGRvXG4gICAgc2V0IHQgaSBwYWRkaW5nXG4gIGRvbmVcbjs7XG5cbmxldCByZWMgZmlyc3Rfbm9ubWF0Y2ggfmJ1ZiB+cG9zIH5tYXhfcG9zIH5jaGFyID1cbiAgaWYgcG9zIDw9IG1heF9wb3MgJiYgQ2hhci4oID0gKSAoZ2V0IGJ1ZiBwb3MpIGNoYXJcbiAgdGhlbiBmaXJzdF9ub25tYXRjaCB+YnVmIH5wb3M6KEludC5zdWNjIHBvcykgfm1heF9wb3MgfmNoYXJcbiAgZWxzZSBwb3Ncbjs7XG5cbmxldCBzZXRfaGVhZF9wYWRkZWRfZml4ZWRfc3RyaW5nIH5wYWRkaW5nIHQgfnBvcyB+bGVuIHZhbHVlID1cbiAgbGV0IHNsZW4gPSBTdHJpbmcubGVuZ3RoIHZhbHVlIGluXG4gIGlmIHNsZW4gPiBsZW5cbiAgdGhlblxuICAgIFByaW50Zi5mYWlsd2l0aGZcbiAgICAgIFwiQmlnc3RyaW5nLnNldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmc6ICVTIGlzIGxvbmdlciB0aGFuICVkXCJcbiAgICAgIHZhbHVlXG4gICAgICBsZW5cbiAgICAgICgpO1xuICBGcm9tX3N0cmluZy5ibGl0IH5zcmM6dmFsdWUgfmRzdDp0IH5zcmNfcG9zOjAgfmRzdF9wb3M6KHBvcyArIGxlbiAtIHNsZW4pIH5sZW46c2xlbjtcbiAgZm9yIGkgPSBwb3MgdG8gcG9zICsgbGVuIC0gc2xlbiAtIDEgZG9cbiAgICBzZXQgdCBpIHBhZGRpbmdcbiAgZG9uZVxuOztcblxubGV0IGdldF9oZWFkX3BhZGRlZF9maXhlZF9zdHJpbmcgfnBhZGRpbmcgdCB+cG9zIH5sZW4gKCkgPVxuICBsZXQgZGF0YV9iZWdpbiA9IGZpcnN0X25vbm1hdGNoIH5idWY6dCB+cG9zIH5tYXhfcG9zOihwb3MgKyBsZW4gLSAxKSB+Y2hhcjpwYWRkaW5nIGluXG4gIHRvX3N0cmluZyB0IH5wb3M6ZGF0YV9iZWdpbiB+bGVuOihsZW4gLSAoZGF0YV9iZWdpbiAtIHBvcykpXG47O1xuXG5sZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPSBCYXNlX3F1aWNrY2hlY2suR2VuZXJhdG9yLmJpZ3N0cmluZ1xubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuYmlnc3RyaW5nXG5sZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IEJhc2VfcXVpY2tjaGVjay5TaHJpbmtlci5iaWdzdHJpbmdcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCaW5fcHJvdFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyID1cbiAgICB7IHNpemUgOiAnYSBTaXplLnNpemVyXG4gICAgOyB3cml0ZSA6ICdhIFdyaXRlLndyaXRlclxuICAgIH1cblxuICBsZXQgdG9fc3RyaW5nIHQgdiA9XG4gICAgbGV0IGxlbiA9IHQuc2l6ZSB2IGluXG4gICAgbGV0IGJ1ZiA9IEJpZ3N0cmluZy5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHBvcyA9IHQud3JpdGUgYnVmIH5wb3M6MCB2IGluXG4gICAgYXNzZXJ0IChwb3MgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgbGV0IHN0ciA9IEJpZ3N0cmluZy50b19zdHJpbmcgYnVmIGluXG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICBzdHJcbiAgOztcblxuICBsZXQgdG9fYnl0ZXMgdCB2ID1cbiAgICBsZXQgbGVuID0gdC5zaXplIHYgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgcG9zID0gdC53cml0ZSBidWYgfnBvczowIHYgaW5cbiAgICBhc3NlcnQgKHBvcyA9IEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgICBsZXQgc3RyID0gQmlnc3RyaW5nLnRvX2J5dGVzIGJ1ZiBpblxuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgc3RyXG4gIDs7XG5lbmRcblxubW9kdWxlIFJlYWRlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9XG4gICAgeyByZWFkIDogJ2EgUmVhZC5yZWFkZXJcbiAgICA7IHZ0YWdfcmVhZCA6IChpbnQgLT4gJ2EpIFJlYWQucmVhZGVyXG4gICAgfVxuXG4gIGxldCBvZl9zdHJpbmcgdCBzdHJpbmcgPVxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIHN0cmluZyBpblxuICAgIGxldCBwb3NfcmVmID0gcmVmIDAgaW5cbiAgICBsZXQgdiA9IHQucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICBhc3NlcnQgKCFwb3NfcmVmID0gQmlnc3RyaW5nLmxlbmd0aCBidWYpO1xuICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWY7XG4gICAgdlxuICA7O1xuXG4gIGxldCBvZl9ieXRlcyB0IGJ5dGVzID1cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLm9mX2J5dGVzIGJ5dGVzIGluXG4gICAgbGV0IHBvc19yZWYgPSByZWYgMCBpblxuICAgIGxldCB2ID0gdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGFzc2VydCAoIXBvc19yZWYgPSBCaWdzdHJpbmcubGVuZ3RoIGJ1Zik7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGJ1ZjtcbiAgICB2XG4gIDs7XG5lbmRcbiIsIm1vZHVsZSBUID0gc3RydWN0XG4gIGluY2x1ZGUgQmluX3Byb3QuTWQ1XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gdCB8PiB0b19oZXggfD4gU3RyaW5nLnNleHBfb2ZfdFxuICBsZXQgdF9vZl9zZXhwIHMgPSBzIHw+IFN0cmluZy50X29mX3NleHAgfD4gb2ZfaGV4X2V4blxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5lbmRcblxubGV0IGhhc2hfZm9sZF90IGFjY3VtIHQgPSBTdHJpbmcuaGFzaF9mb2xkX3QgYWNjdW0gKFQudG9fYmluYXJ5IHQpXG5sZXQgaGFzaCB0ID0gU3RyaW5nLmhhc2ggKFQudG9fYmluYXJ5IHQpXG5cbm1vZHVsZSBBc19iaW5hcnlfc3RyaW5nID0gc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgICAgbGV0IGhhc2ggPSBoYXNoXG4gICAgICBsZXQgc2V4cF9vZl90IHggPSBTdHJpbmcuc2V4cF9vZl90IChULnRvX2JpbmFyeSB4KVxuICAgICAgbGV0IHRfb2Zfc2V4cCB4ID0gVC5vZl9iaW5hcnlfZXhuIChTdHJpbmcudF9vZl9zZXhwIHgpXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoc3RydWN0XG4gICAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBTdHJpbmdcblxuICAgICAgICAgIHR5cGUgdCA9IEJpbl9wcm90Lk1kNS50XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IFQudG9fYmluYXJ5XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBULm9mX2JpbmFyeV9leG5cbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmVuZFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwLCBzZXhwX2dyYW1tYXJdXG5cbiAgICBsZXQgaGFzaF9mb2xkX3QgPSBoYXNoX2ZvbGRfdFxuICAgIGxldCBoYXNoID0gaGFzaFxuXG4gICAgaW5jbHVkZSBCaW5fcHJvdC5VdGlscy5NYWtlX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIEJpbmFibGUgPSBCaW5fcHJvdC5NZDVcblxuICAgICAgICB0eXBlIHQgPSBCaW5fcHJvdC5NZDUudFxuXG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gRm4uaWRcbiAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBGbi5pZFxuICAgICAgZW5kKVxuICBlbmRcblxuICBsZXQgZGlnZXN0X3N0cmluZyBzID0gTWQ1X2xpYi5zdHJpbmcgc1xuZW5kXG5cbmluY2x1ZGUgU3RhYmxlLlYxXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoU3RhYmxlLlYxKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlIChTdGFibGUuVjEpXG5cbmxldCBkaWdlc3RfbnVtX2J5dGVzID0gMTZcbmxldCB0b19oZXggPSBULnRvX2hleFxubGV0IGZyb21faGV4ID0gVC5vZl9oZXhfZXhuXG5sZXQgb2ZfaGV4X2V4biA9IFQub2ZfaGV4X2V4blxubGV0IG9mX2JpbmFyeV9leG4gPSBULm9mX2JpbmFyeV9leG5cbmxldCB0b19iaW5hcnkgPSBULnRvX2JpbmFyeVxubGV0IGRpZ2VzdF9zdHJpbmcgPSBTdGFibGUuZGlnZXN0X3N0cmluZ1xubGV0IGRpZ2VzdF9ieXRlcyA9IE1kNV9saWIuYnl0ZXNcblxuZXh0ZXJuYWwgY2FtbF9zeXNfb3BlblxuICA6ICBzdHJpbmdcbiAgLT4gQ2FtbC5vcGVuX2ZsYWcgbGlzdFxuICAtPiBwZXJtOmludFxuICAtPiBpbnRcbiAgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBjYW1sX3N5c19jbG9zZSA6IGludCAtPiB1bml0ID0gXCJjYW1sX3N5c19jbG9zZVwiXG5leHRlcm5hbCBkaWdlc3RfZmRfYmxvY2tpbmcgOiBpbnQgLT4gc3RyaW5nID0gXCJjb3JlX21kNV9mZFwiXG5cbmxldCBkaWdlc3RfZmlsZV9ibG9ja2luZyBwYXRoID1cbiAgb2ZfYmluYXJ5X2V4blxuICAgIChCYXNlLkV4bi5wcm90ZWN0eFxuICAgICAgIChjYW1sX3N5c19vcGVuIHBhdGggWyBPcGVuX3Jkb25seTsgT3Blbl9iaW5hcnkgXSB+cGVybTowbzAwMClcbiAgICAgICB+ZjpkaWdlc3RfZmRfYmxvY2tpbmdcbiAgICAgICB+ZmluYWxseTpjYW1sX3N5c19jbG9zZSlcbjs7XG5cbmxldCBmaWxlID0gZGlnZXN0X2ZpbGVfYmxvY2tpbmdcblxubGV0IGRpZ2VzdF9jaGFubmVsX2Jsb2NraW5nX3dpdGhvdXRfcmVsZWFzaW5nX3J1bnRpbWVfbG9jayBjaGFubmVsIH5sZW4gPVxuICBvZl9iaW5hcnlfZXhuIChDYW1sLkRpZ2VzdC5jaGFubmVsIGNoYW5uZWwgbGVuKVxuOztcblxubGV0IGNoYW5uZWwgY2hhbm5lbCBsZW4gPVxuICBkaWdlc3RfY2hhbm5lbF9ibG9ja2luZ193aXRob3V0X3JlbGVhc2luZ19ydW50aW1lX2xvY2sgY2hhbm5lbCB+bGVuXG47O1xuXG5sZXQgb3V0cHV0X2Jsb2NraW5nIHQgb2MgPSBDYW1sLkRpZ2VzdC5vdXRwdXQgb2MgKHRvX2JpbmFyeSB0KVxubGV0IG91dHB1dCBvYyB0ID0gb3V0cHV0X2Jsb2NraW5nIHQgb2NcbmxldCBpbnB1dF9ibG9ja2luZyBpYyA9IG9mX2JpbmFyeV9leG4gKENhbWwuRGlnZXN0LmlucHV0IGljKVxubGV0IGlucHV0ID0gaW5wdXRfYmxvY2tpbmdcbmxldCBkaWdlc3Rfc3ViYnl0ZXMgPSBNZDVfbGliLnN1YmJ5dGVzXG5sZXQgc3RyaW5nID0gZGlnZXN0X3N0cmluZ1xubGV0IGJ5dGVzID0gZGlnZXN0X2J5dGVzXG5sZXQgc3ViYnl0ZXMgcyBwb3MgbGVuID0gZGlnZXN0X3N1YmJ5dGVzIHMgfnBvcyB+bGVuXG5cbmxldCBkaWdlc3RfYmluX3Byb3Qgd3JpdGVyIHZhbHVlID1cbiAgZGlnZXN0X3N0cmluZyAoQ29yZV9iaW5fcHJvdC5Xcml0ZXIudG9fc3RyaW5nIHdyaXRlciB2YWx1ZSlcbjs7XG5cbmV4dGVybmFsIGNfZGlnZXN0X3N1YmJpZ3N0cmluZ1xuICA6ICBCaWdzdHJpbmcudFxuICAtPiBwb3M6aW50XG4gIC0+IGxlbjppbnRcbiAgLT4gcmVzOkJ5dGVzLnRcbiAgLT4gdW5pdFxuICA9IFwiY29yZV9tZDVfZGlnZXN0X3N1YmJpZ3N0cmluZ1wiXG5cbmxldCB1bnNhZmVfZGlnZXN0X3N1YmJpZ3N0cmluZyBidWYgfnBvcyB+bGVuID1cbiAgKCogSXQncyBtb3JlIGVmZmljaWVudCB0byBhbGxvY2F0ZSB0aGUgcmVzdWx0IG9uIHRoZSBPQ2FtbCBzaWRlIGFuZCBkZWNsYXJlIHRoZSBDXG4gICAgIGZ1bmN0aW9uIGFzIG5vYWxsb2MgdGhhbiB0byBsZXQgdGhlIEMgZnVuY3Rpb24gYWxsb2NhdGUuICopXG4gIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgMTYgaW5cbiAgY19kaWdlc3Rfc3ViYmlnc3RyaW5nIGJ1ZiB+cG9zIH5sZW4gfnJlcztcbiAgTWQ1X2xpYi51bnNhZmVfb2ZfYmluYXJ5XG4gICAgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6cmVzKVxuOztcblxubGV0IGRpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlbiA9XG4gIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uY2hlY2tfcG9zX2xlbl9leG5cbiAgICB+cG9zXG4gICAgfmxlblxuICAgIH50b3RhbF9sZW5ndGg6KEJpZ3N0cmluZy5sZW5ndGggYnVmKTtcbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3MgfmxlblxuOztcblxubGV0IGRpZ2VzdF9iaWdzdHJpbmcgYnVmID1cbiAgdW5zYWZlX2RpZ2VzdF9zdWJiaWdzdHJpbmcgYnVmIH5wb3M6MCB+bGVuOihCaWdzdHJpbmcubGVuZ3RoIGJ1Zilcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluYWJsZV9pbnRmXG5pbmNsdWRlIEJpbmFibGUwXG5cbigqIFtvZl9zdHJpbmddIGFuZCBbdG9fc3RyaW5nXSBjYW4ndCBnbyBpbiBiaW5hYmxlMC5tbCBkdWUgdG8gYSBjeWNsaWMgZGVwZW5kZW5jeS4gKilcbmxldCBvZl9zdHJpbmcgbSBzdHJpbmcgPSBvZl9iaWdzdHJpbmcgbSAoQmlnc3RyaW5nLm9mX3N0cmluZyBzdHJpbmcpXG5sZXQgdG9fc3RyaW5nIG0gdCA9IEJpZ3N0cmluZy50b19zdHJpbmcgKHRvX2JpZ3N0cmluZyBtIHQpXG5cbm1vZHVsZSBPZl9iaW5hYmxlID0gT2ZfYmluYWJsZV93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2ZfYmluYWJsZTEgPSBPZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2ZfYmluYWJsZTIgPSBPZl9iaW5hYmxlMl93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2ZfYmluYWJsZTMgPSBPZl9iaW5hYmxlM193aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2Zfc2V4cGFibGUgPSBPZl9zZXhwYWJsZV93aXRob3V0X3V1aWQgW0BAYWxlcnQgXCItbGVnYWN5XCJdXG5tb2R1bGUgT2Zfc3RyaW5nYWJsZSA9IE9mX3N0cmluZ2FibGVfd2l0aG91dF91dWlkIFtAQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuIiwiKCogRnVuY3Rpb25zIGZvciBwYXJzaW5nIHRpbWUgem9uZSBkYXRhYmFzZSBmaWxlcyAoemljIGZpbGVzKS5cblxuICAgQSB0aW1lIHpvbmUgZmlsZSBjb25zaXN0cyAoY29uY2VwdHVhbGx5IC0gdGhlIHJlcHJlc2VudGF0aW9uIGlzIG1vcmVcbiAgIGNvbXBhY3QpIG9mIGFuIG9yZGVyZWQgbGlzdCBvZiAoVGltZS50ICogW2xvY2FsX3RpbWVfdHlwZV0pIHRoYXQgbWFya1xuICAgdGhlIGJvdW5kYXJpZXMgKG1hcmtlZCBmcm9tIHRoZSBlcG9jaCkgYXQgd2hpY2ggdmFyaW91cyB0aW1lIGFkanVzdG1lbnRcbiAgIHJlZ2ltZXMgYXJlIGluIGVmZmVjdC4gIFRoaXMgY2FuIGFsc28gYmUgdGhvdWdodCBvZiBhcyBicmVha2luZyBkb3duIGFsbFxuICAgdGltZSBwYXN0IHRoZSBlcG9jaCBpbnRvIHJhbmdlcyB3aXRoIGEgW2xvY2FsX3RpbWVfdHlwZV0gdGhhdCBkZXNjcmliZXMgdGhlXG4gICBvZmZzZXQgZnJvbSBHTVQgdG8gYXBwbHkgdG8gZWFjaCByYW5nZSB0byBnZXQgbG9jYWwgdGltZS5cbiopXG5cbm9wZW4gSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBab25lX2ludGZcblxuZXhjZXB0aW9uIEludmFsaWRfZmlsZV9mb3JtYXQgb2Ygc3RyaW5nIFtAQGRlcml2aW5nIHNleHBdXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEZ1bGxfZGF0YSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEluZGV4ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgIGxldCBuZXh0ID0gSW50LnN1Y2NcbiAgICAgICAgbGV0IHByZXYgPSBJbnQucHJlZFxuICAgICAgICBsZXQgYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb24gPSAtMVxuXG4gICAgICAgICgqIFNvbWUgZXhpc3RpbmcgY2xpZW50cyBleHBlY3QgW2luZGV4ID49IDBdLCBzbyB3ZSBuZXZlciBzZXJpYWxpemUgYSBuZWdhdGl2ZVxuICAgICAgICAgICBpbmRleC4gVGhpcyBjb252ZXJzaW9uIGNhbiBiZSByZW1vdmVkIGlmIG5ldyBzdGFibGUgdmVyc2lvbnMgYXJlIG1pbnRlZC4gKilcbiAgICAgICAgbGV0IHRvX2V4dGVybmFsIHQgPSBtYXggMCB0XG5cbiAgICAgICAgKCogV2hlbiB0aGUgaW5kZXggb2YgYSB0aW1lIHpvbmUgd2l0aCBubyB0cmFuc2l0aW9ucyBpcyBjb252ZXJ0ZWQgdmlhIHRvX2V4dGVybmFsLFxuICAgICAgICAgICBpdHMgdmFsdWUgYmVjb21lcyAwIGV2ZW4gdGhvdWdoIGl0cyB0cmFuc2l0aW9uIGFycmF5IGlzIGVtcHR5IChhbmQgaXQgc2hvdWxkXG4gICAgICAgICAgIGhhdmUgYmVlbiAtMSkuIFdoZW4gdGhlIGNvbnZlcnRlZCB2YWx1ZSBpcyBjaGFuZ2VkIGJhY2sgdG8gYSBab25lLnQgdGhyb3VnaFxuICAgICAgICAgICBvZl9leHRlcm5hbCwgcmV0dXJuaW5nIHRoaXMgdmFsdWUgZm9yIGl0cyBpbmRleCBjb3VsZCByZXN1bHQgaW4gdW5zYWZlIGFycmF5XG4gICAgICAgICAgIGFjY2Vzc2VzIHRvIHRoZSB0cmFuc2l0aW9uIGFycmF5IG9mIHRoZSB6b25lIChzaW5jZSB0aGVyZSBpcyBubyB0cmFuc2l0aW9uIGF0XG4gICAgICAgICAgIGluZGV4IDApLiBBbHNvLCBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIGtlZXAgdGhlIGNvbnZlcnRlZCBpbmRleCBiZWNhdXNlIGl0XG4gICAgICAgICAgIGlzIGludGVuZGVkIHRvIGJlIGEgbXV0YWJsZSB2YWx1ZSB1c2VkIGZvciBjYWNoaW5nLiBTbyBvZl9leHRlcm5hbCBhbHdheXMgc2V0c1xuICAgICAgICAgICB0aGUgaW5kZXggdG8gLTEsIHdoaWNoIGlzIGEgc2FmZSB2YWx1ZS4gKilcbiAgICAgICAgbGV0IG9mX2V4dGVybmFsIChfIDogdCkgPSAtMVxuXG4gICAgICAgIGluY2x1ZGVcbiAgICAgICAgICBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgICAgICAoSW50KVxuICAgICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgICB0eXBlIHQgPSBpbnRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfZXh0ZXJuYWxcbiAgICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgU2V4cGFibGUuT2Zfc2V4cGFibGVcbiAgICAgICAgICAgIChJbnQpXG4gICAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICAgIHR5cGUgdCA9IGludFxuXG4gICAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX2V4dGVybmFsXG4gICAgICAgICAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX2V4dGVybmFsXG4gICAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2ltZSA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgIHsgdXRjX29mZnNldF9pbl9zZWNvbmRzIDogSW50NjMuU3RhYmxlLlYxLnRcbiAgICAgICAgICA7IGlzX2RzdCA6IGJvb2xcbiAgICAgICAgICA7IGFiYnJ2IDogc3RyaW5nXG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcblxuICAgICAgKCogaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgd2hlbiBsZWFwIHNlY29uZHMgc2hvdWxkIGJlIGFwcGxpZWQgLSB1bnVzZWRcbiAgICAgICAgIGJlY2F1c2Ugd2UgYXJlIHRyYW5zbGF0aW5nIGJhc2VkIG9uIGEgZXBvY2ggc3lzdGVtIGNsb2NrIChzZWUgdGhlIENvcmVfem9uZVxuICAgICAgICAgZG9jdW1lbnRhdGlvbikuICopXG4gICAgICBtb2R1bGUgTGVhcF9zZWNvbmQgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBzZWNvbmRzIDogaW50XG4gICAgICAgICAgfVxuICAgICAgICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBdXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRyYW5zaXRpb24gPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID1cbiAgICAgICAgICB7IHN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaCA6IEludDYzLlN0YWJsZS5WMS50XG4gICAgICAgICAgOyBuZXdfcmVnaW1lIDogUmVnaW1lLnRcbiAgICAgICAgICB9XG4gICAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICAgIGVuZFxuXG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA6IHN0cmluZyBvcHRpb25cbiAgICAgICAgO1xuICAgICAgICAgIGRpZ2VzdCA6IE1kNS5Bc19iaW5hcnlfc3RyaW5nLnQgb3B0aW9uXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgOiBUcmFuc2l0aW9uLnQgYXJyYXlcbiAgICAgICAgOyAoKiBjYWNoZXMgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHRyYW5zaXRpb24gd2UgdXNlZCB0byBtYWtlIGxvb2t1cHMgZmFzdGVyICopXG4gICAgICAgICAgbXV0YWJsZSBsYXN0X3JlZ2ltZV9pbmRleCA6IEluZGV4LnRcbiAgICAgICAgOyBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA6IFJlZ2ltZS50XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzIDogTGVhcF9zZWNvbmQudCBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxuICAgICAgKCogdGhpcyByZWxpZXMgb24gem9uZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGhhdmluZyB0aGUgc2FtZSB0cmFuc2l0aW9ucyAqKVxuICAgICAgbGV0IGNvbXBhcmUgdDEgdDIgPSBTdHJpbmcuY29tcGFyZSB0MS5uYW1lIHQyLm5hbWVcbiAgICAgIGxldCBvcmlnaW5hbF9maWxlbmFtZSB6b25lID0gem9uZS5vcmlnaW5hbF9maWxlbmFtZVxuICAgICAgbGV0IGRpZ2VzdCB6b25lID0gem9uZS5kaWdlc3RcblxuICAgICAgbW9kdWxlIFpvbmVfZmlsZSA6IHNpZ1xuICAgICAgICB2YWwgaW5wdXRfdHpfZmlsZSA6IHpvbmVuYW1lOnN0cmluZyAtPiBmaWxlbmFtZTpzdHJpbmcgLT4gdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIGxldCBib29sX29mX2ludCBpID0gaSA8PiAwXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfYXNfaW50MzIgPVxuICAgICAgICAgIGxldCBsb25nID0gQnl0ZXMuY3JlYXRlIDQgaW5cbiAgICAgICAgICBsZXQgaW50MzJfb2ZfY2hhciBjaHIgPSBJbnQzMi5vZl9pbnRfZXhuIChpbnRfb2ZfY2hhciBjaHIpIGluXG4gICAgICAgICAgZnVuIGljIC0+XG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nIH5wb3M6MCB+bGVuOjQ7XG4gICAgICAgICAgICBsZXQgc2IxID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMCkpIDI0IGluXG4gICAgICAgICAgICBsZXQgc2IyID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMSkpIDE2IGluXG4gICAgICAgICAgICBsZXQgc2IzID0gSW50MzIuc2hpZnRfbGVmdCAoaW50MzJfb2ZfY2hhciAoQnl0ZXMuZ2V0IGxvbmcgMikpIDggaW5cbiAgICAgICAgICAgIGxldCBzYjQgPSBpbnQzMl9vZl9jaGFyIChCeXRlcy5nZXQgbG9uZyAzKSBpblxuICAgICAgICAgICAgSW50MzIuYml0X29yIChJbnQzMi5iaXRfb3Igc2IxIHNiMikgKEludDMyLmJpdF9vciBzYjMgc2I0KVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugb24gbnVtYmVycyB0aGF0IHdpbGwgZml0IGludG8gYSAzMS1iaXRcbiAgICAgICAgICAgaW50LiBVTklYIHRpbWVzdGFtcHMgd29uJ3QsIGZvciBleGFtcGxlLiAgSW4gb3VyIGNhc2UgdGhpcyBpcyBvbmx5IHVzZWRcbiAgICAgICAgICAgdG8gaG9sZCBzbWFsbCBudW1iZXJzIHRoYXQgYXJlIG5ldmVyIGludGVycHJldGVkIGFzIHRpbWVzdGFtcHMuICopXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludCBpYyA9IEludDMyLnRvX2ludF9leG4gKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG4gICAgICAgIGxldCBpbnB1dF9sb25nX2FzX2ludDYzIGljID0gSW50NjMub2ZfaW50MzIgKGlucHV0X2xvbmdfYXNfaW50MzIgaWMpXG5cbiAgICAgICAgbGV0IGlucHV0X2xvbmdfbG9uZ19hc19pbnQ2MyBpYyA9XG4gICAgICAgICAgbGV0IGludDYzX29mX2NoYXIgY2hyID0gSW50NjMub2ZfaW50X2V4biAoaW50X29mX2NoYXIgY2hyKSBpblxuICAgICAgICAgIGxldCBzaGlmdCBjIGJpdHMgPSBJbnQ2My5zaGlmdF9sZWZ0IChpbnQ2M19vZl9jaGFyIGMpIGJpdHMgaW5cbiAgICAgICAgICBsZXQgbG9uZ19sb25nID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1Zjpsb25nX2xvbmcgfnBvczowIH5sZW46ODtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMCkgNTYgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgMSkgNDgpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDIpIDQwKSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyAzKSAzMikgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gSW50NjMuYml0X29yIHJlc3VsdCAoc2hpZnQgKEJ5dGVzLmdldCBsb25nX2xvbmcgNCkgMjQpIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IEludDYzLmJpdF9vciByZXN1bHQgKHNoaWZ0IChCeXRlcy5nZXQgbG9uZ19sb25nIDUpIDE2KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChzaGlmdCAoQnl0ZXMuZ2V0IGxvbmdfbG9uZyA2KSA4KSBpblxuICAgICAgICAgIGxldCByZXN1bHQgPSBJbnQ2My5iaXRfb3IgcmVzdWx0IChpbnQ2M19vZl9jaGFyIChCeXRlcy5nZXQgbG9uZ19sb25nIDcpKSBpblxuICAgICAgICAgIHJlc3VsdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9saXN0IGljIH5sZW4gfmYgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBjIGxzdCA9XG4gICAgICAgICAgICBpZiBjID4gMCB0aGVuIGxvb3AgKGMgLSAxKSAoZiBpYyA6OiBsc3QpIGVsc2UgTGlzdC5yZXYgbHN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsb29wIGxlbiBbXVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hcnJheSBpYyB+bGVuIH5mID0gQXJyYXkub2ZfbGlzdCAoaW5wdXRfbGlzdCBpYyB+bGVuIH5mKVxuXG4gICAgICAgIGxldCBpbnB1dF9yZWdpbWUgaWMgPVxuICAgICAgICAgIGxldCB1dGNfb2Zmc2V0X2luX3NlY29uZHMgPSBpbnB1dF9sb25nX2FzX2ludDYzIGljIGluXG4gICAgICAgICAgbGV0IGlzX2RzdCA9IGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSBpblxuICAgICAgICAgIGxldCBhYmJydl9pbmRleCA9IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykgaW5cbiAgICAgICAgICBsZXQgbHQgYWJicnYgPSB7IFJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHM7IGlzX2RzdDsgYWJicnYgfSBpblxuICAgICAgICAgIGx0LCBhYmJydl9pbmRleFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbnB1dF9hYmJyZXZpYXRpb25zIGljIH5sZW4gPVxuICAgICAgICAgIGxldCByYXdfYWJicnZzID1cbiAgICAgICAgICAgIGlucHV0X2xpc3QgaWMgfmxlbiB+ZjooZnVuIGljIC0+IE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfY2hhciBpYykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICAgICAgICBsZXQgXywgaW5kZXhlZF9hYmJydnMgPVxuICAgICAgICAgICAgTGlzdC5mb2xkIHJhd19hYmJydnMgfmluaXQ6KDAsIE1hcC5Qb2x5LmVtcHR5KSB+ZjooZnVuIChpbmRleCwgYWJicnZzKSBjIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgICB8ICdcXDAwMCcgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEJ1ZmZlci5jb250ZW50cyBidWYgaW5cbiAgICAgICAgICAgICAgICBsZXQgbmV4dF9pbmRleCA9IGluZGV4ICsgU3RyaW5nLmxlbmd0aCBkYXRhICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBhYmJydnMgPSBNYXAuc2V0IGFiYnJ2cyB+a2V5OmluZGV4IH5kYXRhIGluXG4gICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIGJ1ZjtcbiAgICAgICAgICAgICAgICBuZXh0X2luZGV4LCBhYmJydnNcbiAgICAgICAgICAgICAgfCBjIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjO1xuICAgICAgICAgICAgICAgIGluZGV4LCBhYmJydnMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGJ1ZiA8PiAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEludmFsaWRfZmlsZV9mb3JtYXRcbiAgICAgICAgICAgICAgICAgXCJtaXNzaW5nIFxcMDAwIHRlcm1pbmF0aW5nIGNoYXJhY3RlciBpbiBpbnB1dF9hYmJyZXZpYXRpb25zXCIpO1xuICAgICAgICAgIGluZGV4ZWRfYWJicnZzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uIH5pbnB1dF9sZWFwX3NlY29uZCBpYyA9XG4gICAgICAgICAgbGV0IHV0Y19sb2NhbF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHN0ZF93YWxsX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgbGVhcF9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fY291bnQgPSBpbnB1dF9sb25nX2FzX2ludCBpYyBpblxuICAgICAgICAgIGxldCB0eXBlX2NvdW50ID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICBsZXQgYWJicnZfY2hhcl9jb3VudCA9IGlucHV0X2xvbmdfYXNfaW50IGljIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25fdGltZXMgPVxuICAgICAgICAgICAgaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF90cmFuc2l0aW9uIH5sZW46dHJhbnNpdGlvbl9jb3VudFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25faW5kaWNlcyA9XG4gICAgICAgICAgICBpbnB1dF9saXN0XG4gICAgICAgICAgICAgIGljXG4gICAgICAgICAgICAgIH5mOihmdW4gaWMgLT4gT3B0aW9uLnZhbHVlX2V4biAoSW5fY2hhbm5lbC5pbnB1dF9ieXRlIGljKSlcbiAgICAgICAgICAgICAgfmxlbjp0cmFuc2l0aW9uX2NvdW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVnaW1lcyA9IGlucHV0X2xpc3QgaWMgfmY6aW5wdXRfcmVnaW1lIH5sZW46dHlwZV9jb3VudCBpblxuICAgICAgICAgIGxldCBhYmJyZXZpYXRpb25zID0gaW5wdXRfYWJicmV2aWF0aW9ucyBpYyB+bGVuOmFiYnJ2X2NoYXJfY291bnQgaW5cbiAgICAgICAgICBsZXQgbGVhcF9zZWNvbmRzID0gaW5wdXRfbGlzdCBpYyB+ZjppbnB1dF9sZWFwX3NlY29uZCB+bGVuOmxlYXBfY291bnQgaW5cbiAgICAgICAgICAoKiBUaGUgZm9sbG93aW5nIHR3byBhcnJheXMgaW5kaWNhdGUgdHdvIGJvb2xlYW4gdmFsdWVzIHBlciByZWdpbWUgdGhhdFxuICAgICAgICAgICAgIHJlcHJlc2VudCBhIHRocmVlLXZhbHVlIHR5cGUgdGhhdCB3b3VsZCB0cmFuc2xhdGUgdG86XG5cbiAgICAgICAgICAgICB0eXBlIHRyYW5zaXRpb25fdHlwZSA9IFVUQyB8IFN0YW5kYXJkIHwgV2FsbF9jbG9ja1xuXG4gICAgICAgICAgICAgSG93ZXZlciwgdGhlc2UgYXJlIG9ubHkgdXNlZCBieSB0aGUgc3lzdGVtIGxpYnJhcnkgd2hlbiBoYW5kbGluZyB0aGUgY2FzZSB3aGVyZSB0aGVcbiAgICAgICAgICAgICBUWiB2YXJpYWJsZSBpcyBzZXQsIG5vdCB0byBhIHRpbWUgem9uZSBuYW1lLCBidXQgaW5zdGVhZCBpcyBvZiB0aGUgZm9ybTpcblxuICAgICAgICAgICAgIFRaID0gXCJzdGQgb2Zmc2V0IGRzdCBvZmZzZXQsIHJ1bGVcIlxuXG4gICAgICAgICAgICAgV2hpY2ggaXMgZGVlcGx5IG9ic2N1cmUsIGFuZCBhbG1vc3QgY2VydGFpbmx5IGEgbWlzdGFrZSB0byB1c2UuICBUaGlzIGxpYnJhcnkgbWFrZXNcbiAgICAgICAgICAgICBubyBwcmV0ZW5zZSBhYm91dCBoYW5kbGluZyB0aGlzIGNhc2UuICBXZSBjb250aW51ZSB0byByZWFkIHRoZW0gaW4gZm9yXG4gICAgICAgICAgICAgY29tcGxldGVuZXNzLCBhbmQgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIHRoYXQgd2Ugd2lsbCBsYXRlciBkaXNjb3ZlciBhIGNhc2Ugd2hlcmVcbiAgICAgICAgICAgICB0aGV5IGFyZSB1c2VkLiAqKVxuICAgICAgICAgIGxldCBfc3RkX3dhbGxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnN0ZF93YWxsX2NvdW50IH5mOihmdW4gaWMgLT5cbiAgICAgICAgICAgICAgYm9vbF9vZl9pbnQgKE9wdGlvbi52YWx1ZV9leG4gKEluX2NoYW5uZWwuaW5wdXRfYnl0ZSBpYykpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF91dGNfbG9jYWxfaW5kaWNhdG9ycyA9XG4gICAgICAgICAgICBpbnB1dF9hcnJheSBpYyB+bGVuOnV0Y19sb2NhbF9jb3VudCB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGJvb2xfb2ZfaW50IChPcHRpb24udmFsdWVfZXhuIChJbl9jaGFubmVsLmlucHV0X2J5dGUgaWMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWdpbWVzID1cbiAgICAgICAgICAgIEFycmF5Lm9mX2xpc3RcbiAgICAgICAgICAgICAgKExpc3QubWFwIHJlZ2ltZXMgfmY6KGZ1biAobHQsIGFiYnJ2X2luZGV4KSAtPlxuICAgICAgICAgICAgICAgICBsZXQgYWJicnYgPSBNYXAuZmluZF9leG4gYWJicmV2aWF0aW9ucyBhYmJydl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBsdCBhYmJydikpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmF3X3RyYW5zaXRpb25zID1cbiAgICAgICAgICAgIExpc3QubWFwMl9leG4gdHJhbnNpdGlvbl90aW1lcyB0cmFuc2l0aW9uX2luZGljZXMgfmY6KGZ1biB0aW1lIGluZGV4IC0+XG4gICAgICAgICAgICAgIGxldCByZWdpbWUgPSByZWdpbWVzLihpbmRleCkgaW5cbiAgICAgICAgICAgICAgdGltZSwgcmVnaW1lKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRyYW5zaXRpb25zID1cbiAgICAgICAgICAgIGxldCByZWMgbWFrZV90cmFuc2l0aW9ucyBhY2MgbCA9XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+IEFycmF5Lm9mX2xpc3QgKExpc3QucmV2IGFjYylcbiAgICAgICAgICAgICAgfCAoc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoLCBuZXdfcmVnaW1lKSA6OiByZXN0IC0+XG4gICAgICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgICAgICAgKHsgVHJhbnNpdGlvbi5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2g7IG5ld19yZWdpbWUgfSA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWFrZV90cmFuc2l0aW9ucyBbXSByYXdfdHJhbnNpdGlvbnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBkZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSA9XG4gICAgICAgICAgICBtYXRjaCBBcnJheS5maW5kIHJlZ2ltZXMgfmY6KGZ1biByIC0+IG5vdCByLlJlZ2ltZS5pc19kc3QpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByZWdpbWVzLigwKVxuICAgICAgICAgICAgfCBTb21lIGx0dCAtPiBsdHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGZ1biBuYW1lIH5vcmlnaW5hbF9maWxlbmFtZSB+ZGlnZXN0IC0+XG4gICAgICAgICAgICB7IG5hbWVcbiAgICAgICAgICAgIDsgb3JpZ2luYWxfZmlsZW5hbWUgPSBTb21lIG9yaWdpbmFsX2ZpbGVuYW1lXG4gICAgICAgICAgICA7IGRpZ2VzdCA9IFNvbWUgZGlnZXN0XG4gICAgICAgICAgICA7IHRyYW5zaXRpb25zXG4gICAgICAgICAgICA7IGxhc3RfcmVnaW1lX2luZGV4ID0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cbiAgICAgICAgICAgIDsgZGVmYXVsdF9sb2NhbF90aW1lX3R5cGVcbiAgICAgICAgICAgIDsgbGVhcF9zZWNvbmRzXG4gICAgICAgICAgICB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X2xlYXBfc2Vjb25kX2dlbiB+aW5wdXRfbGVhcF9zZWNvbmQgaWMgPVxuICAgICAgICAgIGxldCB0aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggPSBpbnB1dF9sZWFwX3NlY29uZCBpYyBpblxuICAgICAgICAgIGxldCBzZWNvbmRzID0gaW5wdXRfbG9uZ19hc19pbnQgaWMgaW5cbiAgICAgICAgICB7IExlYXBfc2Vjb25kLnRpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaDsgc2Vjb25kcyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYWRfaGVhZGVyIGljID1cbiAgICAgICAgICBsZXQgbWFnaWMgPVxuICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gICAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZiB+cG9zOjAgfmxlbjo0O1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIG5vdCAoU3RyaW5nLmVxdWFsIG1hZ2ljIFwiVFppZlwiKVxuICAgICAgICAgIHRoZW4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJtYWdpYyBjaGFyYWN0ZXJzIFRaaWYgbm90IHByZXNlbnRcIik7XG4gICAgICAgICAgbGV0IHZlcnNpb24gPVxuICAgICAgICAgICAgbWF0Y2ggSW5fY2hhbm5lbC5pbnB1dF9jaGFyIGljIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSAnXFwwMDAnIC0+IGBWMVxuICAgICAgICAgICAgfCBTb21lICcyJyAtPiBgVjJcbiAgICAgICAgICAgIHwgU29tZSAnMycgLT4gYFYzXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgXCJleHBlY3RlZCB2ZXJzaW9uLCBmb3VuZCBub3RoaW5nXCIpXG4gICAgICAgICAgICB8IFNvbWUgYmFkX3ZlcnNpb24gLT5cbiAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfZmlsZV9mb3JtYXQgKHNwcmludGYgXCJ2ZXJzaW9uICglYykgaXMgaW52YWxpZFwiIGJhZF92ZXJzaW9uKSlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHNwYWNlIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGluIHRoZSBmb3JtYXQgKilcbiAgICAgICAgICBJbl9jaGFubmVsLnJlYWxseV9pbnB1dF9leG4gaWMgfmJ1ZjooQnl0ZXMuY3JlYXRlIDE1KSB+cG9zOjAgfmxlbjoxNTtcbiAgICAgICAgICB2ZXJzaW9uXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGlucHV0X3R6X2ZpbGVfdjEgaWMgPVxuICAgICAgICAgIGxldCBpbnB1dF9sZWFwX3NlY29uZCA9XG4gICAgICAgICAgICBpbnB1dF9sZWFwX3NlY29uZF9nZW4gfmlucHV0X2xlYXBfc2Vjb25kOmlucHV0X2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuIH5pbnB1dF90cmFuc2l0aW9uOmlucHV0X2xvbmdfYXNfaW50NjMgfmlucHV0X2xlYXBfc2Vjb25kIGljXG4gICAgICAgIDs7XG5cbiAgICAgICAgKCpcbiAgICAgICAgICAgdmVyc2lvbiAyIHRpbWV6b25lIGZpbGVzIGhhdmUgdGhlIGZvcm1hdDpcblxuICAgICAgICAgICBwYXJ0IDEgLSBleGFjdGx5IHRoZSBzYW1lIGFzIHYxXG5cbiAgICAgICAgICAgcGFydCAyIC0gc2FtZSBmb3JtYXQgYXMgdjEsIGV4Y2VwdCB0aGF0IDggYnl0ZXMgYXJlIHVzZWQgdG8gc3RvcmVcbiAgICAgICAgICAgdHJhbnNpdGlvbiB0aW1lcyBhbmQgbGVhcCBzZWNvbmRzXG5cbiAgICAgICAgICAgcGFydCAzIC0gYSBuZXdsaW5lLWVuY2xvZGVkLCBQT1NJWC1UWi1lbnZpcm9ubWVudC12YXJpYWJsZS1zdHlsZVxuICAgICAgICAgICBzdHJpbmcgZm9yIHVzZSBpbiBoYW5kbGluZyBpbnN0YW50cyBhZnRlciB0aGUgbGFzdCB0cmFuc2l0aW9uIHRpbWVcbiAgICAgICAgICAgc3RvcmVkIGluIHRoZSBmaWxlICh3aXRoIG5vdGhpbmcgYmV0d2VlbiB0aGUgbmV3bGluZXMgaWYgdGhlcmUgaXMgbm9cbiAgICAgICAgICAgUE9TSVggcmVwcmVzZW50YXRpb24gZm9yIHN1Y2ggaW5zdGFudHMpXG5cbiAgICAgICAgICAgV2UgaGFuZGxlIGZpbGVzIGluIHRoaXMgZm9ybWF0IGJ5IHBhcnNpbmcgdGhlIGZpcnN0IHBhcnQgZXhhY3RseSBhcyBhIHYxXG4gICAgICAgICAgIHRpbWV6b25lIGZpbGUgYW5kIHRoZW4gY29udGludWluZyB0byBwYXJzZSB3aXRoIDY0Yml0IHJlYWRpbmcgZnVuY3Rpb25zIGluIHRoZVxuICAgICAgICAgICByaWdodCBwbGFjZXMuXG5cbiAgICAgICAgICAgVmVyc2lvbiAzIHRpbWV6b25lIGZpbGVzIGFyZSB0aGUgc2FtZSBhcyB2ZXJzaW9uIDIsIGV4Y2VwdCB0aGVcbiAgICAgICAgICAgUE9TSVgtVFotZW52aXJvbm1lbnQtdmFyaWFibGUtc3R5bGUgc3RyaW5nIGluIHBhcnQgMyBtYXkgdXNlIHR3byBtaW5vclxuICAgICAgICAgICBleHRlbnNpb25zIHRvIHRoZSBQT1NJWCBUWiBmb3JtYXQgKHRoZSBob3VycyBwYXJ0IG9mIGl0cyB0cmFuc2l0aW9uXG4gICAgICAgICAgIHRpbWVzIG1heSBiZSBzaWduZWQgYW5kIHJhbmdlIGZyb20gLTE2NyB0aHJvdWdoIDE2NyBpbnN0ZWFkIG9mIHRoZVxuICAgICAgICAgICBQT1NJWC1yZXF1aXJlZCB1bnNpZ25lZCB2YWx1ZXMgZnJvbSAwIHRocm91Z2ggMjQ7IGFuZCBEU1QgaXMgaW4gZWZmZWN0IGFsbFxuICAgICAgICAgICB5ZWFyIGlmIGl0IHN0YXJ0cyBKYW51YXJ5IDEgYXQgMDA6MDAgYW5kIGVuZHMgRGVjZW1iZXIgMzEgYXQgMjQ6MDAgcGx1cyB0aGVcbiAgICAgICAgICAgZGlmZmVyZW5jZSBiZXR3ZWVuIGRheWxpZ2h0IHNhdmluZyBhbmQgc3RhbmRhcmQgdGltZSkuXG5cbiAgICAgICAgICAgQXMgd2UgZG9uJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcgd2l0aCBwYXJ0IDMgYW55d2F5LCB3ZSBjYW4ganVzdCByZWFkIHYzXG4gICAgICAgICAgIGZpbGVzIGFzIHYyLlxuICAgICAgICAqKVxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZV92Ml9vcl92MyB+dmVyc2lvbiBpYyA9XG4gICAgICAgICAgbGV0IChfIDogc3RyaW5nIC0+IG9yaWdpbmFsX2ZpbGVuYW1lOnN0cmluZyAtPiBkaWdlc3Q6TWQ1X2xpYi50IC0+IHQpID1cbiAgICAgICAgICAgIGlucHV0X3R6X2ZpbGVfdjEgaWNcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIHRoZSBoZWFkZXIgaXMgZnVsbHkgcmVwZWF0ZWQgKilcbiAgICAgICAgICBhc3NlcnQgKFslY29tcGFyZS5lcXVhbDogWyBgVjEgfCBgVjIgfCBgVjMgXV0gKHJlYWRfaGVhZGVyIGljKSB2ZXJzaW9uKTtcbiAgICAgICAgICBsZXQgaW5wdXRfbGVhcF9zZWNvbmQgPVxuICAgICAgICAgICAgaW5wdXRfbGVhcF9zZWNvbmRfZ2VuIH5pbnB1dF9sZWFwX3NlY29uZDppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICBpblxuICAgICAgICAgIGlucHV0X3R6X2ZpbGVfZ2VuXG4gICAgICAgICAgICB+aW5wdXRfdHJhbnNpdGlvbjppbnB1dF9sb25nX2xvbmdfYXNfaW50NjNcbiAgICAgICAgICAgIH5pbnB1dF9sZWFwX3NlY29uZFxuICAgICAgICAgICAgaWNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgaW5wdXRfdHpfZmlsZSB+em9uZW5hbWUgfmZpbGVuYW1lID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHByb3RlY3R4IChJbl9jaGFubmVsLmNyZWF0ZSBmaWxlbmFtZSkgfmZpbmFsbHk6SW5fY2hhbm5lbC5jbG9zZSB+ZjooZnVuIGljIC0+XG4gICAgICAgICAgICAgIGxldCBtYWtlX3pvbmUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlYWRfaGVhZGVyIGljIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBWMSAtPiBpbnB1dF90el9maWxlX3YxIGljXG4gICAgICAgICAgICAgICAgfCAoYFYyIHwgYFYzKSBhcyB2ZXJzaW9uIC0+IGlucHV0X3R6X2ZpbGVfdjJfb3JfdjMgfnZlcnNpb24gaWNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2VzdCA9IE1kNS5kaWdlc3RfZmlsZV9ibG9ja2luZyBmaWxlbmFtZSBpblxuICAgICAgICAgICAgICBsZXQgciA9IG1ha2Vfem9uZSB6b25lbmFtZSB+b3JpZ2luYWxfZmlsZW5hbWU6ZmlsZW5hbWUgfmRpZ2VzdCBpblxuICAgICAgICAgICAgICByKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IEludmFsaWRfZmlsZV9mb3JtYXQgcmVhc29uIC0+XG4gICAgICAgICAgICByYWlzZSAoSW52YWxpZF9maWxlX2Zvcm1hdCAoc3ByaW50ZiBcIiVzIC0gJXNcIiBmaWxlbmFtZSByZWFzb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIGxldCBvZl91dGNfb2Zmc2V0X2V4cGxpY2l0X25hbWUgfm5hbWUgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGFzc2VydCAob2Zmc2V0ID49IC0yNCAmJiBvZmZzZXQgPD0gMjQpO1xuICAgICAgICBsZXQgdXRjX29mZnNldF9pbl9zZWNvbmRzID0gSW50NjMub2ZfaW50IChvZmZzZXQgKiA2MCAqIDYwKSBpblxuICAgICAgICB7IG5hbWVcbiAgICAgICAgOyBvcmlnaW5hbF9maWxlbmFtZSA9IE5vbmVcbiAgICAgICAgOyBkaWdlc3QgPSBOb25lXG4gICAgICAgIDsgdHJhbnNpdGlvbnMgPSBbfHxdXG4gICAgICAgIDsgbGFzdF9yZWdpbWVfaW5kZXggPSBJbmRleC5iZWZvcmVfZmlyc3RfdHJhbnNpdGlvblxuICAgICAgICA7IGRlZmF1bHRfbG9jYWxfdGltZV90eXBlID1cbiAgICAgICAgICAgIHsgUmVnaW1lLnV0Y19vZmZzZXRfaW5fc2Vjb25kczsgaXNfZHN0ID0gZmFsc2U7IGFiYnJ2ID0gbmFtZSB9XG4gICAgICAgIDsgbGVhcF9zZWNvbmRzID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3V0Y19vZmZzZXQgfmhvdXJzOm9mZnNldCA9XG4gICAgICAgIGxldCBuYW1lID1cbiAgICAgICAgICBpZiBvZmZzZXQgPSAwXG4gICAgICAgICAgdGhlbiBcIlVUQ1wiXG4gICAgICAgICAgZWxzZSBzcHJpbnRmIFwiVVRDJXMlZFwiIChpZiBvZmZzZXQgPCAwIHRoZW4gXCItXCIgZWxzZSBcIitcIikgKGFicyBvZmZzZXQpXG4gICAgICAgIGluXG4gICAgICAgIG9mX3V0Y19vZmZzZXRfZXhwbGljaXRfbmFtZSB+bmFtZSB+aG91cnM6b2Zmc2V0XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5GdWxsX2RhdGEuVjFcblxubGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tIHQubmFtZVxuXG5sZXQgbGlrZWx5X21hY2hpbmVfem9uZXMgPVxuICByZWYgWyBcIkFtZXJpY2EvTmV3X1lvcmtcIjsgXCJFdXJvcGUvTG9uZG9uXCI7IFwiQXNpYS9Ib25nX0tvbmdcIjsgXCJBbWVyaWNhL0NoaWNhZ29cIiBdXG47O1xuXG5sZXQgaW5wdXRfdHpfZmlsZSA9IFpvbmVfZmlsZS5pbnB1dF90el9maWxlXG5sZXQgdXRjID0gb2ZfdXRjX29mZnNldCB+aG91cnM6MFxubGV0IG5hbWUgem9uZSA9IHpvbmUubmFtZVxubGV0IHJlc2V0X3RyYW5zaXRpb25fY2FjaGUgdCA9IHQubGFzdF9yZWdpbWVfaW5kZXggPC0gSW5kZXguYmVmb3JlX2ZpcnN0X3RyYW5zaXRpb25cblxuKCogUmFpc2VzIGlmIFtpbmRleCA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc10gKilcbmxldCBnZXRfcmVnaW1lX2V4biB0IGluZGV4ID1cbiAgaWYgaW5kZXggPCAwIHRoZW4gdC5kZWZhdWx0X2xvY2FsX3RpbWVfdHlwZSBlbHNlIHQudHJhbnNpdGlvbnMuKGluZGV4KS5uZXdfcmVnaW1lXG47O1xuXG4oKiBJbiBcImFic29sdXRlIG1vZGVcIiwgYSBudW1iZXIgb2Ygc2Vjb25kcyBpcyBpbnRlcnByZXRlZCBhcyBhbiBvZmZzZXQgb2YgdGhhdCBtYW55XG4gICBzZWNvbmRzIGZyb20gdGhlIFVOSVggZXBvY2gsIGlnbm9yaW5nIGxlYXAgc2Vjb25kcy5cblxuICAgSW4gXCJkYXRlIGFuZCBvZmRheSBtb2RlXCIsIHlvdSBpbnRlcnByZXQgdGhlIG51bWJlciBvZiBzZWNvbmRzIGFzIGEgbnVtYmVyIG9mIGRheXMgaW5cbiAgIGNvbWJpbmF0aW9uIHdpdGggYSBudW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodCwgd2hpY2ggZ2l2ZXMgeW91IGEgY2FsZW5kYXIgZGF5IGFuZFxuICAgYSBjbG9jayBmYWNlIHRpbWUuIFRoZW4geW91IHRha2UgdGhlIHRpbWUgdGhhdCB0aG9zZSByZXByZXNlbnQgaW4gc29tZSByZWxldmFudFxuICAgdGltZXpvbmUuXG5cbiAgIE9mIGNvdXJzZSwgaWYgdGhlIHRpbWV6b25lIGluIHF1ZXN0aW9uIGhhcyBEU1Qgc2hpZnRzLCB0aGUgZGF0ZSBhbmQgb2ZkYXkgbWlnaHRcbiAgIHJlcHJlc2VudCB0d28gb3IgemVybyB0aW1lcy4gVGhlc2UgdGltZXMgd2lsbCBiZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gZWl0aGVyIHRoZVxuICAgcHJldmlvdXMgVVRDIG9mZnNldCBvciB0aGUgbmV4dCBvbmUsIGluIGEgd2F5IHdob3NlIHByZWNpc2UgZGV0YWlscyB5b3UgcHJvYmFibHlcbiAgIHNob3VsZG4ndCBkZXBlbmQgb24uXG5cbiAgIChGb3IgdGhlIGN1cmlvdXMsIHdoYXQgd2UgZG8gaXM6IGNvbXB1dGUgdGhlIFwicmVsYXRpdmUgdGltZVwiIG9mIHRoZSBzaGlmdCBhY2NvcmRpbmcgdG9cbiAgIHRoZSBuZXcgcmVnaW1lLCBhbmQgYXNzaWduIHJlbGF0aXZlIHRpbWVzIHRvIHRoZSBvbGQgcmVnaW1lIG9yIG5ldyByZWdpbWUgZGVwZW5kaW5nIG9uXG4gICB3aGljaCBzaWRlIG9mIHRoZSBzaGlmdCB0aW1lIHRoZXkgb2NjdXIuIFNpbmNlIHRoaXMgYW1vdW50cyB0byB1c2luZyB0aGUgb2xkIHJlZ2ltZVxuICAgd2hlbiB0aGUgY2xvY2tzIG1vdmUgZm9yd2FyZCBhbmQgdGhlIG5ldyByZWdpbWUgd2hlbiB0aGUgY2xvY2tzIG1vdmUgYmFjaywgaXQnc1xuICAgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB0aGUgY29ycmVzcG9uZGluZyBUaW1lLnQncyByZWxhdGl2ZSB0byBib3RoIHRoZSBvbGQgYW5kIHRoZVxuICAgbmV3IHJlZ2ltZSBhbmQgcGlja2luZyB0aGUgb25lIHRoYXQgb2NjdXJzIGxhdGVyLiBZZXMsIGxhdGVyLiBJIGhhZCB0byBkcmF3IGEgZGlhZ3JhbVxuICAgdG8gcGVyc3VhZGUgbXlzZWxmIHRoYXQgaXQncyB0aGF0IHdheSByb3VuZCwgYnV0IGl0IGlzLilcbiopXG5tb2R1bGUgTW9kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWJzb2x1dGVcbiAgICB8IERhdGVfYW5kX29mZGF5XG5lbmRcblxubGV0IGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlICh4IDogVHJhbnNpdGlvbi50KSA9XG4gIGxldCBvcGVuIEludDYzLk8gaW5cbiAgbWF0Y2ggKG1vZGUgOiBNb2RlLnQpIHdpdGhcbiAgfCBBYnNvbHV0ZSAtPiB4LnN0YXJ0X3RpbWVfaW5fc2Vjb25kc19zaW5jZV9lcG9jaFxuICB8IERhdGVfYW5kX29mZGF5IC0+XG4gICAgeC5zdGFydF90aW1lX2luX3NlY29uZHNfc2luY2VfZXBvY2ggKyB4Lm5ld19yZWdpbWUudXRjX29mZnNldF9pbl9zZWNvbmRzXG47O1xuXG5sZXQgaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMgPVxuICBpbmRleCA8IDAgfHwgSW50NjMuKCA+PSApIHNlY29uZHMgKGVmZmVjdGl2ZV9zdGFydF90aW1lIH5tb2RlIHQudHJhbnNpdGlvbnMuKGluZGV4KSlcbjs7XG5cbmxldCBpbmRleF91cHBlcl9ib3VuZF9jb250YWluc19zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgaW5kZXggfm1vZGUgc2Vjb25kcyA9XG4gIGluZGV4ICsgMSA+PSBBcnJheS5sZW5ndGggdC50cmFuc2l0aW9uc1xuICB8fCBJbnQ2My4oIDwgKSBzZWNvbmRzIChlZmZlY3RpdmVfc3RhcnRfdGltZSB+bW9kZSB0LnRyYW5zaXRpb25zLihpbmRleCArIDEpKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgOiBJbmRleC50ID1cbiAgQXJyYXkuYmluYXJ5X3NlYXJjaF9zZWdtZW50ZWQgdC50cmFuc2l0aW9ucyBgTGFzdF9vbl9sZWZ0IH5zZWdtZW50X29mOihmdW4gdHJhbnNpdGlvbiAtPlxuICAgIGlmIEludDYzLiggPD0gKSAoZWZmZWN0aXZlX3N0YXJ0X3RpbWUgdHJhbnNpdGlvbiB+bW9kZSkgc2Vjb25kc1xuICAgIHRoZW4gYExlZnRcbiAgICBlbHNlIGBSaWdodClcbiAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OkluZGV4LmJlZm9yZV9maXJzdF90cmFuc2l0aW9uXG47O1xuXG5sZXQgaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHMgPVxuICBsZXQgaW5kZXggPVxuICAgIGxldCBpbmRleCA9IHQubGFzdF9yZWdpbWVfaW5kZXggaW5cbiAgICBpZiBub3QgKGluZGV4X2xvd2VyX2JvdW5kX2NvbnRhaW5zX3NlY29uZHNfc2luY2VfZXBvY2ggdCBpbmRleCB+bW9kZSBzZWNvbmRzKVxuICAgICgqIHRpbWUgaXMgYmVmb3JlIGNhY2hlZCBpbmRleDsgdHJ5IHByZXZpb3VzIGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCAtIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfbG93ZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGJlZm9yZSBwcmV2aW91cyBpbmRleDsgZmFsbCBiYWNrIG9uIGJpbmFyeSBzZWFyY2ggKilcbiAgICAgIHRoZW5cbiAgICAgICAgYmluYXJ5X3NlYXJjaF9pbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGUgc2Vjb25kc1xuICAgICAgICAoKiB0aW1lIGlzIGJlZm9yZSBjYWNoZWQgaW5kZXggYW5kIG5vdCBiZWZvcmUgcHJldmlvdXMsIHNvIHdpdGhpbiBwcmV2aW91cyAqKVxuICAgICAgZWxzZSBpbmRleClcbiAgICBlbHNlIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXg7IHRyeSBuZXh0IGluZGV4ICopXG4gICAgdGhlbiAoXG4gICAgICBsZXQgaW5kZXggPSBpbmRleCArIDEgaW5cbiAgICAgIGlmIG5vdCAoaW5kZXhfdXBwZXJfYm91bmRfY29udGFpbnNfc2Vjb25kc19zaW5jZV9lcG9jaCB0IGluZGV4IH5tb2RlIHNlY29uZHMpXG4gICAgICAoKiB0aW1lIGlzIGFmdGVyIG5leHQgaW5kZXg7IGZhbGwgYmFjayBvbiBiaW5hcnkgc2VhcmNoICopXG4gICAgICB0aGVuXG4gICAgICAgIGJpbmFyeV9zZWFyY2hfaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlIHNlY29uZHNcbiAgICAgICAgKCogdGltZSBpcyBhZnRlciBjYWNoZWQgaW5kZXggYW5kIG5vdCBhZnRlciBuZXh0LCBzbyB3aXRoaW4gbmV4dCAqKVxuICAgICAgZWxzZSBpbmRleCAoKiB0aW1lIGlzIHdpdGhpbiBjYWNoZWQgaW5kZXggKikpXG4gICAgZWxzZSBpbmRleFxuICBpblxuICB0Lmxhc3RfcmVnaW1lX2luZGV4IDwtIGluZGV4O1xuICBpbmRleFxuOztcblxubW9kdWxlIFRpbWVfaW5fc2Vjb25kcyA6IHNpZ1xuICBpbmNsdWRlIFpvbmVfaW50Zi5UaW1lX2luX3NlY29uZHNcbmVuZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9pbnQ2M19zZWNvbmRzID0gRm4uaWRcbiAgICBsZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBBYnNvbHV0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgICBsZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gIGVuZFxuXG4gIG1vZHVsZSBEYXRlX2FuZF9vZmRheSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEludDYzLnRcblxuICAgIGxldCBvZl9zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCA9IEZuLmlkXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoID0gRm4uaWRcbiAgZW5kXG5cbiAgaW5jbHVkZSBBYnNvbHV0ZVxuZW5kXG5cbmxldCBpbmRleCB0IHRpbWUgPVxuICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLnRvX2ludDYzX3NlY29uZHNfcm91bmRfZG93bl9leG5cbiAgfD4gaW5kZXhfb2Zfc2Vjb25kc19zaW5jZV9lcG9jaCB0IH5tb2RlOkFic29sdXRlXG47O1xuXG5sZXQgaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCB0aW1lID1cbiAgVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICB8PiBpbmRleF9vZl9zZWNvbmRzX3NpbmNlX2Vwb2NoIHQgfm1vZGU6RGF0ZV9hbmRfb2ZkYXlcbjs7XG5cbmxldCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXggPj0gMCAmJiBpbmRleCA8IEFycmF5Lmxlbmd0aCB0LnRyYW5zaXRpb25zXG5sZXQgaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgdCBpbmRleCA9IGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleCA9XG4gIGxldCB0cmFuc2l0aW9uID0gdC50cmFuc2l0aW9ucy4oaW5kZXgpIGluXG4gIHRyYW5zaXRpb24uc3RhcnRfdGltZV9pbl9zZWNvbmRzX3NpbmNlX2Vwb2NoXG4gIHw+IFRpbWVfaW5fc2Vjb25kcy5TcGFuLm9mX2ludDYzX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbjs7XG5cbmxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgKGluZGV4ICsgMSlcblxubGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgbGV0IHRyYW5zaXRpb24gPSB0LnRyYW5zaXRpb25zLihpbmRleCkgaW5cbiAgbGV0IGFmdGVyID0gdHJhbnNpdGlvbi5uZXdfcmVnaW1lIGluXG4gIGxldCBiZWZvcmUgPVxuICAgIGlmIGluZGV4ID0gMCB0aGVuIHQuZGVmYXVsdF9sb2NhbF90aW1lX3R5cGUgZWxzZSB0LnRyYW5zaXRpb25zLihpbmRleCAtIDEpLm5ld19yZWdpbWVcbiAgaW5cbiAgSW50NjMuKCAtICkgYWZ0ZXIudXRjX29mZnNldF9pbl9zZWNvbmRzIGJlZm9yZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbiAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuOztcblxubGV0IGluZGV4X25leHRfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4ID1cbiAgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgKGluZGV4ICsgMSlcbjs7XG5cbmxldCBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICByZWdpbWUuYWJicnZcbjs7XG5cbmxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICBsZXQgcmVnaW1lID0gZ2V0X3JlZ2ltZV9leG4gdCBpbmRleCBpblxuICBUaW1lX2luX3NlY29uZHMuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzIHJlZ2ltZS51dGNfb2Zmc2V0X2luX3NlY29uZHNcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIFZhbGlkYXRlZF9pbnRmXG5cbm1vZHVsZSB0eXBlIFJhdyA9IFJhd1xuXG50eXBlICgncmF3LCAnd2l0bmVzcykgdCA9ICdyYXdcblxubW9kdWxlIHR5cGUgUyA9IFMgd2l0aCB0eXBlICgnYSwgJ2IpIHZhbGlkYXRlZCA6PSAoJ2EsICdiKSB0XG5tb2R1bGUgdHlwZSBTX2Jpbl9pbyA9IFNfYmluX2lvIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5tb2R1bGUgdHlwZSBTX2Jpbl9pb19jb21wYXJlX2hhc2hfc2V4cCA9XG4gIFNfYmluX2lvX2NvbXBhcmVfaGFzaF9zZXhwIHdpdGggdHlwZSAoJ2EsICdiKSB2YWxpZGF0ZWQgOj0gKCdhLCAnYikgdFxuXG5sZXQgcmF3IHQgPSB0XG5cbm1vZHVsZSBNYWtlIChSYXcgOiBSYXcpID0gc3RydWN0XG4gIHR5cGUgd2l0bmVzc1xuICB0eXBlIHQgPSBSYXcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yID1cbiAgICBFcnJvci5jcmVhdGVcbiAgICAgIFwidmFsaWRhdGlvbiBmYWlsZWRcIlxuICAgICAgKHQsIGVycm9yLCBSYXcuaGVyZSlcbiAgICAgIFslc2V4cF9vZjogUmF3LnQgKiBFcnJvci50ICogU291cmNlX2NvZGVfcG9zaXRpb24udF1cbiAgOztcblxuICBsZXQgY3JlYXRlX2V4biB0ID1cbiAgICBtYXRjaCBWYWxpZGF0ZS5yZXN1bHQgKFJhdy52YWxpZGF0ZSB0KSB3aXRoXG4gICAgfCBPayAoKSAtPiB0XG4gICAgfCBFcnJvciBlcnJvciAtPiBFcnJvci5yYWlzZSAodmFsaWRhdGlvbl9mYWlsZWQgdCBlcnJvcilcbiAgOztcblxuICBsZXQgY3JlYXRlIHQgPVxuICAgIG1hdGNoIFZhbGlkYXRlLnJlc3VsdCAoUmF3LnZhbGlkYXRlIHQpIHdpdGhcbiAgICB8IE9rICgpIC0+IE9rIHRcbiAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yICh2YWxpZGF0aW9uX2ZhaWxlZCB0IGVycm9yKVxuICA7O1xuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9IGNyZWF0ZV9leG4gKFJhdy50X29mX3NleHAgc2V4cClcbiAgbGV0IHJhdyB0ID0gdFxuZW5kXG5cbm1vZHVsZSBBZGRfYmluX2lvIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChWYWxpZGF0ZWQgOiBTIHdpdGggdHlwZSByYXcgOj0gUmF3LnQpID1cbnN0cnVjdFxuICBpbmNsdWRlXG4gICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgKFJhdylcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gUmF3LnRcblxuICAgICAgICBsZXQgb2ZfYmluYWJsZSByYXcgPVxuICAgICAgICAgIGlmIFJhdy52YWxpZGF0ZV9iaW5pb19kZXNlcmlhbGl6YXRpb24gdGhlbiBWYWxpZGF0ZWQuY3JlYXRlX2V4biByYXcgZWxzZSByYXdcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICBlbmQpXG5lbmRcblxubW9kdWxlIEFkZF9jb21wYXJlIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGNvbXBhcmUgdDEgdDIgPSBbJWNvbXBhcmU6IFJhdy50XSAocmF3IHQxKSAocmF3IHQyKVxuZW5kXG5cbm1vZHVsZSBBZGRfaGFzaCAoUmF3IDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIGhhc2hdXG5cbiAgICBpbmNsdWRlIFJhdyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcbiAgICAoVmFsaWRhdGVkIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSYXcuaGFzaF9mb2xkX3Qgc3RhdGUgKFZhbGlkYXRlZC5yYXcgdClcbiAgbGV0IGhhc2ggdCA9IFJhdy5oYXNoIChWYWxpZGF0ZWQucmF3IHQpXG5lbmRcblxubW9kdWxlIEFkZF90eXBlcmVwIChSYXcgOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cblxuICAgIGluY2x1ZGUgUmF3IHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKVxuICAgIChfIDogUyB3aXRoIHR5cGUgcmF3IDo9IFJhdy50KSA9XG5zdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LnQgW0BAZGVyaXZpbmcgdHlwZXJlcF1cbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5hYmxlIChSYXcgOiBSYXdfYmluX2lvKSA9IHN0cnVjdFxuICBtb2R1bGUgVDAgPSBNYWtlIChSYXcpXG4gIGluY2x1ZGUgVDBcbiAgaW5jbHVkZSBBZGRfYmluX2lvIChSYXcpIChUMClcbmVuZFxuXG5tb2R1bGUgTWFrZV9iaW5faW9fY29tcGFyZV9oYXNoX3NleHAgKFJhdyA6IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgaW5jbHVkZSBSYXdfYmluX2lvIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFQgPSBNYWtlX2JpbmFibGUgKFJhdylcbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgQWRkX2NvbXBhcmUgKFJhdykgKFQpXG5cbiAgaW5jbHVkZSAoXG4gICAgQWRkX2hhc2ggKFJhdykgKFQpIDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgIGVuZFxuICAgIHdpdGggdHlwZSB0IDo9IHQpXG5lbmRcbiIsImluY2x1ZGUgQmFzZS5UeXBlX2VxdWFsXG5cbm1vZHVsZSBJZCA9IHN0cnVjdFxuICBpbmNsdWRlIElkXG5cbiAgbW9kdWxlIFVpZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcHN0cmVhbSA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcbiAgICBpbmNsdWRlIEJhc2UuVHlwZV9lcXVhbC5JZC5VaWRcblxuICAgIGluY2x1ZGVcbiAgICAgIENvbXBhcmFibGUuRXh0ZW5kXG4gICAgICAgIChVcHN0cmVhbSlcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEJhc2UuVHlwZV9lcXVhbC5JZC5VaWQudCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFVwc3RyZWFtKVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBVbml2X21hcF9pbnRmXG5tb2R1bGUgVWlkID0gVHlwZV9lcXVhbC5JZC5VaWRcblxubW9kdWxlIE1ha2UxXG4gICAgKEtleSA6IEtleSkgKERhdGEgOiBzaWdcbiAgICAgICAgICAgICAgICAgICB0eXBlICgncywgJ2EpIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgKCogQSB3cmFwcGVyIGZvciB0aGUgW0tleV0gbW9kdWxlIHRoYXQgYWRkcyBhIGR5bmFtaWMgY2hlY2sgdG8gW0tleS50eXBlX2lkXS5cblxuICAgICBJdCdzIGEgYnVnIGlmIHRoZSB1c2VyLXByb3ZpZGVkIFtLZXkudHlwZV9pZF0gZ2l2ZXMgZGlmZmVyZW50IHR5cGUgaWRzIG9uIGRpZmZlcmVudFxuICAgICBjYWxscy4gIEJlY2F1c2UgdGhpcyBjaGVjayBzaG91bGQgYmUgZmFpcmx5IGNoZWFwLCB3ZSBkbyBpdCBkeW5hbWljYWxseSB0byBhdm9pZFxuICAgICBzdWJ0bGVyIHByb2JsZW1zIGxhdGVyLlxuXG4gICAgIE9mIGNvdXJzZSwgd2UncmUgbm90IGNoZWNraW5nIHRydWx5IHBhdGhvbG9naWNhbCB0aGluZ3MgbGlrZSB0aGUgcHJvdmlkZWRcbiAgICAgW0tleS50eXBlX2lkXSBvbmx5IGNoYW5nZXMgdGhlIHZhbHVlIGl0IHJldHVybnMgb24gZXZlcnkgdGhpcmQgY2FsbC4uLiAqKVxuICBtb2R1bGUgS2V5ID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgS2V5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICgqIHRlc3QtZnJpZW5kbHkgc2V4cCBjb252ZXJzaW9uICopXG4gICAgbGV0IHNleHBfb2ZfdHlwZV9pZCB0eXBlX2lkID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IG5hbWUgPSAoVHlwZV9lcXVhbC5JZC5uYW1lIHR5cGVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDsgdWlkID1cbiAgICAgICAgICAgICgoaWYgYW1fcnVubmluZ19pbmxpbmVfdGVzdFxuICAgICAgICAgICAgICB0aGVuIFNleHAuQXRvbSBcIjx1aWQ+XCJcbiAgICAgICAgICAgICAgZWxzZSBUeXBlX2VxdWFsLklkLlVpZC5zZXhwX29mX3QgKFR5cGVfZXF1YWwuSWQudWlkIHR5cGVfaWQpKSA6IFNleHAudClcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbGV0IHR5cGVfaWQga2V5ID1cbiAgICAgIGxldCB0eXBlX2lkMSA9IEtleS50eXBlX2lkIGtleSBpblxuICAgICAgbGV0IHR5cGVfaWQyID0gS2V5LnR5cGVfaWQga2V5IGluXG4gICAgICBpZiBUeXBlX2VxdWFsLklkLnNhbWUgdHlwZV9pZDEgdHlwZV9pZDJcbiAgICAgIHRoZW4gdHlwZV9pZDFcbiAgICAgIGVsc2VcbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbS2V5LnR5cGVfaWRdIG11c3Qgbm90IHByb3ZpZGUgZGlmZmVyZW50IHR5cGUgaWRzIHdoZW4gY2FsbGVkIG9uIHRoZSBzYW1lIFxcXG4gICAgICAgICAgICAgaW5wdXRcIlxuICAgICAgICAgICAgICAoa2V5IDogXyBLZXkudClcbiAgICAgICAgICAgICAgKHR5cGVfaWQxIDogdHlwZV9pZClcbiAgICAgICAgICAgICAgKHR5cGVfaWQyIDogdHlwZV9pZCldXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAoJ3MsICdhKSBkYXRhID0gKCdzLCAnYSkgRGF0YS50XG5cbiAgbGV0IG5hbWVfb2Zfa2V5IGtleSA9IFR5cGVfZXF1YWwuSWQubmFtZSAoS2V5LnR5cGVfaWQga2V5KVxuICBsZXQgdWlkX29mX2tleSBrZXkgPSBUeXBlX2VxdWFsLklkLnVpZCAoS2V5LnR5cGVfaWQga2V5KVxuXG4gIG1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgICB0eXBlICdzIHQgPSBUIDogJ2EgS2V5LnQgKiAoJ3MsICdhKSBEYXRhLnQgLT4gJ3MgdFxuXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgKFQgKGtleSwgZGF0YSkpID1cbiAgICAgIERhdGEuc2V4cF9vZl90IHNleHBfb2ZfYSAoVHlwZV9lcXVhbC5JZC50b19zZXhwIChLZXkudHlwZV9pZCBrZXkpKSBkYXRhXG4gICAgOztcblxuICAgIGxldCB0eXBlX2lkX25hbWUgKFQgKGtleSwgXykpID0gbmFtZV9vZl9rZXkga2V5XG4gICAgbGV0IHR5cGVfaWRfdWlkIChUIChrZXksIF8pKSA9IHVpZF9vZl9rZXkga2V5XG5cbiAgICBsZXQgY29tcGFyZSB0MSB0MiA9XG4gICAgICBsZXQgYyA9IFN0cmluZy5jb21wYXJlICh0eXBlX2lkX25hbWUgdDEpICh0eXBlX2lkX25hbWUgdDIpIGluXG4gICAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2UgVWlkLmNvbXBhcmUgKHR5cGVfaWRfdWlkIHQxKSAodHlwZV9pZF91aWQgdDIpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAncyB0ID0gJ3MgUGFja2VkLnQgVWlkLk1hcC50XG5cbiAgbGV0IHRvX2FsaXN0IHQgPSBNYXAuZGF0YSB0IHw+IExpc3Quc29ydCB+Y29tcGFyZTpQYWNrZWQuY29tcGFyZVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIHRvX2FsaXN0IHRcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHBhY2tlZCAtPiBQYWNrZWQudHlwZV9pZF9uYW1lIHBhY2tlZCwgcGFja2VkKVxuICAgIHw+IFslc2V4cF9vZjogKHN0cmluZyAqIGEgUGFja2VkLnQpIGxpc3RdXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCAodCA6IF8gdCkgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgICBNYXAuaXRlcmkgdCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgYXNzZXJ0IChVaWQuZXF1YWwga2V5IChQYWNrZWQudHlwZV9pZF91aWQgZGF0YSkpKSlcbiAgOztcblxuICBsZXQgc2V0IHQgfmtleSB+ZGF0YSA9IE1hcC5zZXQgdCB+a2V5Oih1aWRfb2Zfa2V5IGtleSkgfmRhdGE6KFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICBsZXQgbWVtX2J5X2lkIHQgaWQgPSBNYXAubWVtIHQgaWRcbiAgbGV0IG1lbSB0IGtleSA9IG1lbV9ieV9pZCB0ICh1aWRfb2Zfa2V5IGtleSlcbiAgbGV0IHJlbW92ZV9ieV9pZCB0IGlkID0gTWFwLnJlbW92ZSB0IGlkXG4gIGxldCByZW1vdmUgdCBrZXkgPSByZW1vdmVfYnlfaWQgdCAodWlkX29mX2tleSBrZXkpXG4gIGxldCBlbXB0eSA9IFVpZC5NYXAuZW1wdHlcbiAgbGV0IHNpbmdsZXRvbiBrZXkgZGF0YSA9IFVpZC5NYXAuc2luZ2xldG9uICh1aWRfb2Zfa2V5IGtleSkgKFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICBsZXQgaXNfZW1wdHkgPSBNYXAuaXNfZW1wdHlcblxuICBsZXQgZmluZCAodHlwZSBiKSB0IChrZXkgOiBiIEtleS50KSA9XG4gICAgbWF0Y2ggTWFwLmZpbmQgdCAodWlkX29mX2tleSBrZXkpIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAoUGFja2VkLlQgKGtleScsIHZhbHVlKSkgLT5cbiAgICAgICgqIGNhbm5vdCByYWlzZSAtLSBzZWUgW2ludmFyaWFudF0gKilcbiAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gKEtleS50eXBlX2lkIGtleSkgKEtleS50eXBlX2lkIGtleScpXG4gICAgICBpblxuICAgICAgU29tZSAodmFsdWUgOiAoXywgYikgRGF0YS50KVxuICA7O1xuXG4gIGxldCBmaW5kX2V4biB0IGtleSA9XG4gICAgbWF0Y2ggZmluZCB0IGtleSB3aXRoXG4gICAgfCBTb21lIGRhdGEgLT4gZGF0YVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJVbml2X21hcC5maW5kX2V4biBvbiB1bmtub3duIGtleSAlc1wiIChuYW1lX29mX2tleSBrZXkpICgpXG4gIDs7XG5cbiAgbGV0IGFkZCB0IH5rZXkgfmRhdGEgPSBpZiBtZW0gdCBrZXkgdGhlbiBgRHVwbGljYXRlIGVsc2UgYE9rIChzZXQgdCB+a2V5IH5kYXRhKVxuXG4gIGxldCBhZGRfZXhuIHQgfmtleSB+ZGF0YSA9XG4gICAgbWF0Y2ggYWRkIHQgfmtleSB+ZGF0YSB3aXRoXG4gICAgfCBgT2sgdCAtPiB0XG4gICAgfCBgRHVwbGljYXRlIC0+IGZhaWx3aXRoZiBcIlVuaXZfbWFwLmFkZF9leG4gb24gZXhpc3Rpbmcga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgY2hhbmdlX2V4biB0IGtleSB+Zjp1cGRhdGUgPVxuICAgIG1hdGNoIGZpbmQgdCBrZXkgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGE6KHVwZGF0ZSBkYXRhKVxuICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJVbml2X21hcC5jaGFuZ2VfZXhuIG9uIHVua25vd24ga2V5ICVzXCIgKG5hbWVfb2Zfa2V5IGtleSkgKClcbiAgOztcblxuICBsZXQgY2hhbmdlIHQga2V5IH5mOnVwZGF0ZSA9XG4gICAgbGV0IG9yaWcgPSBmaW5kIHQga2V5IGluXG4gICAgbGV0IG5leHQgPSB1cGRhdGUgb3JpZyBpblxuICAgIG1hdGNoIG5leHQgd2l0aFxuICAgIHwgU29tZSBkYXRhIC0+IHNldCB0IH5rZXkgfmRhdGFcbiAgICB8IE5vbmUgLT4gaWYgT3B0aW9uLmlzX25vbmUgb3JpZyB0aGVuIHQgZWxzZSByZW1vdmUgdCBrZXlcbiAgOztcblxuICBsZXQgdXBkYXRlIHQga2V5IH5mID0gY2hhbmdlIHQga2V5IH5mOihmdW4gZGF0YSAtPiBTb21lIChmIGRhdGEpKVxuXG4gIGxldCBvZl9hbGlzdF9leG4gdCA9XG4gICAgVWlkLk1hcC5vZl9hbGlzdF9leG4gKExpc3QubWFwIHQgfmY6KGZ1biBwIC0+IFBhY2tlZC50eXBlX2lkX3VpZCBwLCBwKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChLZXkgOiBLZXkpIChEYXRhIDogc2lnXG4gICAgICAgICAgICAgICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgICAgICAgICAgICAgIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBNID1cbiAgICBNYWtlMVxuICAgICAgKEtleSlcbiAgICAgIChzdHJ1Y3RcbiAgICAgICAgdHlwZSAoXywgJ2EpIHQgPSAnYSBEYXRhLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZClcblxuICB0eXBlIHQgPSB1bml0IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIG1vZHVsZSBLZXkgPSBLZXlcblxuICB0eXBlICdhIGRhdGEgPSAnYSBEYXRhLnRcblxuICBsZXQgaW52YXJpYW50ID0gTS5pbnZhcmlhbnRcbiAgbGV0IGVtcHR5ID0gTS5lbXB0eVxuICBsZXQgc2luZ2xldG9uID0gTS5zaW5nbGV0b25cbiAgbGV0IGlzX2VtcHR5ID0gTS5pc19lbXB0eVxuICBsZXQgc2V0ID0gTS5zZXRcbiAgbGV0IG1lbSA9IE0ubWVtXG4gIGxldCBtZW1fYnlfaWQgPSBNLm1lbV9ieV9pZFxuICBsZXQgZmluZCA9IE0uZmluZFxuICBsZXQgZmluZF9leG4gPSBNLmZpbmRfZXhuXG4gIGxldCBhZGQgPSBNLmFkZFxuICBsZXQgYWRkX2V4biA9IE0uYWRkX2V4blxuICBsZXQgY2hhbmdlID0gTS5jaGFuZ2VcbiAgbGV0IGNoYW5nZV9leG4gPSBNLmNoYW5nZV9leG5cbiAgbGV0IHVwZGF0ZSA9IE0udXBkYXRlXG4gIGxldCByZW1vdmUgPSBNLnJlbW92ZVxuICBsZXQgcmVtb3ZlX2J5X2lkID0gTS5yZW1vdmVfYnlfaWRcblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVCA6ICdhIEtleS50ICogJ2EgRGF0YS50IC0+IHRcbiAgZW5kXG5cbiAgbGV0IHRvX2FsaXN0IHQgPVxuICAgIExpc3QubWFwIChNLnRvX2FsaXN0IHQpIH5mOihmdW5jdGlvbiBNLlBhY2tlZC5UIChrZXksIGRhdGEpIC0+IFBhY2tlZC5UIChrZXksIGRhdGEpKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG4gdCA9XG4gICAgTS5vZl9hbGlzdF9leG5cbiAgICAgIChMaXN0Lm1hcCB0IH5mOihmdW5jdGlvbiBQYWNrZWQuVCAoa2V5LCBkYXRhKSAtPiBNLlBhY2tlZC5UIChrZXksIGRhdGEpKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWVyZ2UgKEtleSA6IEtleSkgKElucHV0MV9kYXRhIDogRGF0YSkgKElucHV0Ml9kYXRhIDogRGF0YSkgKE91dHB1dF9kYXRhIDogRGF0YSkgPVxuc3RydWN0XG4gIHR5cGUgZiA9XG4gICAgeyBmIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICAga2V5OidhIEtleS50XG4gICAgICAgIC0+IFsgYExlZnQgb2YgJ2EgSW5wdXQxX2RhdGEudFxuICAgICAgICAgICB8IGBSaWdodCBvZiAnYSBJbnB1dDJfZGF0YS50XG4gICAgICAgICAgIHwgYEJvdGggb2YgJ2EgSW5wdXQxX2RhdGEudCAqICdhIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgXVxuICAgICAgICAtPiAnYSBPdXRwdXRfZGF0YS50IG9wdGlvblxuICAgIH1cblxuICBtb2R1bGUgT3V0cHV0ID0gTWFrZSAoS2V5KSAoT3V0cHV0X2RhdGEpXG5cbiAgbGV0IG1lcmdlICh0MSA6IE1ha2UoS2V5KShJbnB1dDFfZGF0YSkudCkgKHQyIDogTWFrZShLZXkpKElucHV0Ml9kYXRhKS50KSB+Zjp7IGYgfVxuICAgIDogTWFrZShLZXkpKE91dHB1dF9kYXRhKS50XG4gICAgPVxuICAgIGxldCBmIH5rZXkgbWVyZ2VfcmVzdWx0ID1cbiAgICAgIE9wdGlvbi5tYXAgKGYgfmtleSBtZXJnZV9yZXN1bHQpIH5mOihmdW4gZGF0YSAtPiBPdXRwdXQuTS5QYWNrZWQuVCAoa2V5LCBkYXRhKSlcbiAgICBpblxuICAgIE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXk6XyAtPiBmdW5jdGlvblxuICAgICAgfCBgTGVmdCAoVCAoa2V5LCBkYXRhKSkgLT4gZiB+a2V5IChgTGVmdCBkYXRhKVxuICAgICAgfCBgUmlnaHQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYFJpZ2h0IGRhdGEpXG4gICAgICB8IGBCb3RoIChUIChsZWZ0X2tleSwgbGVmdF9kYXRhKSwgVCAocmlnaHRfa2V5LCByaWdodF9kYXRhKSkgLT5cbiAgICAgICAgKCogQ2FuJ3QgcmFpc2UgZHVlIHRvIHRoZSBpbnZhcmlhbnQgKilcbiAgICAgICAgbGV0IFR5cGVfZXF1YWwuVCA9XG4gICAgICAgICAgVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3NfZXhuIChLZXkudHlwZV9pZCBsZWZ0X2tleSkgKEtleS50eXBlX2lkIHJpZ2h0X2tleSlcbiAgICAgICAgaW5cbiAgICAgICAgZiB+a2V5OmxlZnRfa2V5IChgQm90aCAobGVmdF9kYXRhLCByaWdodF9kYXRhKSkpXG4gIDs7XG5lbmRcblxubW9kdWxlIE1lcmdlMVxuICAgIChLZXkgOiBLZXkpXG4gICAgKElucHV0MV9kYXRhIDogRGF0YTEpXG4gICAgKElucHV0Ml9kYXRhIDogRGF0YTEpXG4gICAgKE91dHB1dF9kYXRhIDogRGF0YTEpID1cbnN0cnVjdFxuICB0eXBlICgnczEsICdzMiwgJ3MzKSBmID1cbiAgICB7IGYgOlxuICAgICAgICAnYS5cbiAgICAgICAgICBrZXk6J2EgS2V5LnRcbiAgICAgICAgLT4gWyBgTGVmdCBvZiAoJ3MxLCAnYSkgSW5wdXQxX2RhdGEudFxuICAgICAgICAgICB8IGBSaWdodCBvZiAoJ3MyLCAnYSkgSW5wdXQyX2RhdGEudFxuICAgICAgICAgICB8IGBCb3RoIG9mICgnczEsICdhKSBJbnB1dDFfZGF0YS50ICogKCdzMiwgJ2EpIElucHV0Ml9kYXRhLnRcbiAgICAgICAgICAgXVxuICAgICAgICAtPiAoJ3MzLCAnYSkgT3V0cHV0X2RhdGEudCBvcHRpb25cbiAgICB9XG5cbiAgbW9kdWxlIE91dHB1dCA9IE1ha2UxIChLZXkpIChPdXRwdXRfZGF0YSlcblxuICBsZXQgbWVyZ2VcbiAgICAgICAgKHR5cGUgczEgczIpXG4gICAgICAgICh0MSA6IHMxIE1ha2UxKEtleSkoSW5wdXQxX2RhdGEpLnQpXG4gICAgICAgICh0MiA6IHMyIE1ha2UxKEtleSkoSW5wdXQyX2RhdGEpLnQpXG4gICAgICAgIH5mOnsgZiB9XG4gICAgPVxuICAgIGxldCBmIH5rZXkgbWVyZ2VfcmVzdWx0ID1cbiAgICAgIE9wdGlvbi5tYXAgKGYgfmtleSBtZXJnZV9yZXN1bHQpIH5mOihmdW4gZGF0YSAtPiBPdXRwdXQuUGFja2VkLlQgKGtleSwgZGF0YSkpXG4gICAgaW5cbiAgICBNYXAubWVyZ2UgdDEgdDIgfmY6KGZ1biB+a2V5Ol8gLT4gZnVuY3Rpb25cbiAgICAgIHwgYExlZnQgKFQgKGtleSwgZGF0YSkpIC0+IGYgfmtleSAoYExlZnQgZGF0YSlcbiAgICAgIHwgYFJpZ2h0IChUIChrZXksIGRhdGEpKSAtPiBmIH5rZXkgKGBSaWdodCBkYXRhKVxuICAgICAgfCBgQm90aCAoVCAobGVmdF9rZXksIGxlZnRfZGF0YSksIFQgKHJpZ2h0X2tleSwgcmlnaHRfZGF0YSkpIC0+XG4gICAgICAgICgqIENhbid0IHJhaXNlIGR1ZSB0byB0aGUgaW52YXJpYW50ICopXG4gICAgICAgIGxldCBUeXBlX2VxdWFsLlQgPVxuICAgICAgICAgIFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biAoS2V5LnR5cGVfaWQgbGVmdF9rZXkpIChLZXkudHlwZV9pZCByaWdodF9rZXkpXG4gICAgICAgIGluXG4gICAgICAgIGYgfmtleTpsZWZ0X2tleSAoYEJvdGggKGxlZnRfZGF0YSwgcmlnaHRfZGF0YSkpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBUeXBlX2lkX2tleSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBUeXBlX2VxdWFsLklkLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgdHlwZV9pZCA9IEZuLmlkXG5lbmRcblxuaW5jbHVkZSAoXG4gIE1ha2VcbiAgICAoVHlwZV9pZF9rZXkpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmQpIDpcbiAgICBTIHdpdGggdHlwZSAnYSBkYXRhID0gJ2EgYW5kIG1vZHVsZSBLZXkgOj0gVHlwZV9pZF9rZXkpXG5cbm1vZHVsZSBLZXkgPSBUeXBlX2VxdWFsLklkXG5cbm1vZHVsZSBXaXRoX2RlZmF1bHQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGtleSA6ICdhIFR5cGVfZXF1YWwuSWQudFxuICAgICAgOyBkZWZhdWx0IDogJ2FcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgfmRlZmF1bHQgfm5hbWUgc2V4cF9vZiA9XG4gICAgICB7IGRlZmF1bHQ7IGtleSA9IFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lIHNleHBfb2YgfVxuICAgIDs7XG5cbiAgICBsZXQgaWQgdCA9IHQua2V5XG4gIGVuZFxuXG4gIGxldCBmaW5kIHQgeyBLZXkua2V5OyBkZWZhdWx0IH0gPSBPcHRpb24udmFsdWUgfmRlZmF1bHQgKGZpbmQgdCBrZXkpXG4gIGxldCBzZXQgdCB+a2V5OnsgS2V5LmtleTsgZGVmYXVsdCA9IF8gfSB+ZGF0YSA9IHNldCB0IH5rZXkgfmRhdGFcbiAgbGV0IGNoYW5nZSB0IGtleSB+Zjp1cGRhdGUgPSBzZXQgdCB+a2V5IH5kYXRhOih1cGRhdGUgKGZpbmQgdCBrZXkpKVxuZW5kXG5cbm1vZHVsZSBXaXRoX2ZvbGQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleSA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgICB7IGtleSA6ICdiIFdpdGhfZGVmYXVsdC5LZXkudFxuICAgICAgOyBmIDogJ2IgLT4gJ2EgLT4gJ2JcbiAgICAgIH1cblxuICAgIGxldCBjcmVhdGUgfmluaXQgfmYgfm5hbWUgc2V4cF9vZiA9XG4gICAgICB7IGY7IGtleSA9IFdpdGhfZGVmYXVsdC5LZXkuY3JlYXRlIH5kZWZhdWx0OmluaXQgfm5hbWUgc2V4cF9vZiB9XG4gICAgOztcblxuICAgIGxldCBpZCB0ID0gV2l0aF9kZWZhdWx0LktleS5pZCB0LmtleVxuICBlbmRcblxuICBsZXQgZmluZCB0IHsgS2V5LmtleTsgZiA9IF8gfSA9IFdpdGhfZGVmYXVsdC5maW5kIHQga2V5XG4gIGxldCBzZXQgdCB+a2V5OnsgS2V5LmtleTsgZiA9IF8gfSB+ZGF0YSA9IFdpdGhfZGVmYXVsdC5zZXQgdCB+a2V5IH5kYXRhXG4gIGxldCBjaGFuZ2UgdCB7IEtleS5rZXk7IGYgPSBfIH0gfmY6dXBkYXRlID0gV2l0aF9kZWZhdWx0LmNoYW5nZSB0IGtleSB+Zjp1cGRhdGVcblxuICBsZXQgYWRkIHQgfmtleTp7IEtleS5rZXk7IGYgfSB+ZGF0YSA9XG4gICAgV2l0aF9kZWZhdWx0LmNoYW5nZSB0IGtleSB+ZjooZnVuIGFjYyAtPiBmIGFjYyBkYXRhKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuICBvcGVuIFdpdGhfZm9sZFxuXG4gIG1vZHVsZSBLZXkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAoJ2EsICdhIGxpc3QpIEtleS50XG5cbiAgICBsZXQgY3JlYXRlIH5uYW1lIHNleHBfb2YgPVxuICAgICAgS2V5LmNyZWF0ZSB+aW5pdDpbXSB+ZjooZnVuIHhzIHggLT4geCA6OiB4cykgfm5hbWUgKExpc3Quc2V4cF9vZl90IHNleHBfb2YpXG4gICAgOztcblxuICAgIGxldCBpZCA9IFdpdGhfZm9sZC5LZXkuaWRcbiAgZW5kXG5cbiAgbGV0IHNldCA9IHNldFxuICBsZXQgZmluZCA9IGZpbmRcbiAgbGV0IGFkZCA9IGFkZFxuICBsZXQgY2hhbmdlID0gY2hhbmdlXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB8IE5hbm9zZWNvbmRcbiAgfCBNaWNyb3NlY29uZFxuICB8IE1pbGxpc2Vjb25kXG4gIHwgU2Vjb25kXG4gIHwgTWludXRlXG4gIHwgSG91clxuICB8IERheVxuW0BAZGVyaXZpbmcgc2V4cCwgY29tcGFyZSwgZW51bWVyYXRlLCBoYXNoXVxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBVbmlxdWVfaWRfaW50ZlxuXG5tb2R1bGUgdHlwZSBJZCA9IElkXG5cbigqIE9ubHkgXCJtYWtlXCIgY2FuIGNhdXNlIGEgY29udGV4dC1zd2l0Y2ggdGhhdCBtaWdodCBsZWFkIHRvIGEgcmFjZS5cbiAgIFRodXMgd2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHRoZSBjb250ZW50cyBvZiB0aGUgY2VsbCByZW1haW5lZFxuICAgdW5jaGFuZ2VkIGFjcm9zcyB0aGlzIGNhbGwuICBUaGUgc3Vic2VxdWVudCBjb21wYXJpc29uLCBkZXJlZmVyZW5jaW5nXG4gICBhbmQgYXNzaWdubWVudCBjYW5ub3QgY2F1c2UgY29udGV4dCBzd2l0Y2hlcy4gIElmIHRoZSBjb250ZW50cyBvZiB0aGVcbiAgIGNlbGwgaGFkIGNoYW5nZWQsIHdlIHdpbGwgaGF2ZSB0byB0cnkgYWdhaW4gdG8gb2J0YWluIGEgdW5pcXVlIGlkLlxuICAgVGhpcyBpcyBlc3NlbnRpYWxseSBsaWtlIGEgc3Bpbi1sb2NrIGFuZCBpcyB2aXJ0dWFsbHkgZ3VhcmFudGVlZCB0b1xuICAgc3VjY2VlZCBxdWlja2x5LiAqKVxubGV0IHJlYyByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlID1cbiAgbGV0IHggPSAhY2VsbCBpblxuICBsZXQgbmV3X3ggPSBtYWtlIHggaW5cbiAgaWYgcGh5c19lcXVhbCAhY2VsbCB4XG4gIHRoZW4gKFxuICAgIGNlbGwgOj0gbmV3X3g7XG4gICAgeClcbiAgZWxzZSByYWNlX2ZyZWVfY3JlYXRlX2xvb3AgY2VsbCBtYWtlXG47O1xuXG5tb2R1bGUgSW50ICgpID0gc3RydWN0XG4gIGluY2x1ZGUgSW50XG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG5cbm1vZHVsZSBJbnQ2MyAoKSA9IHN0cnVjdFxuICBpbmNsdWRlIEludDYzXG5cbiAgbGV0IGN1cnJlbnQgPSByZWYgemVyb1xuICBsZXQgY3JlYXRlICgpID0gcmFjZV9mcmVlX2NyZWF0ZV9sb29wIGN1cnJlbnQgc3VjY1xuZW5kXG4iLCIoKiBUaGlzIG1vZHVsZSBpcyB2ZXJ5IG11Y2ggZGVwZW5kZW50IG9uIHRoZSBydW50aW1lIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcy4gIFNob3VsZCB0aGVcbiAgIHdheSB0aGUgY29tcGlsZXIgcmVwcmVzZW50cyB2YXJpb3VzIHR5cGVzIGNoYW5nZSwgaXQgbmVlZHMgdG8gYmUgcmVmbGVjdGVkIGluIHRoaXNcbiAgIG1vZHVsZSwgb3RoZXJ3aXNlIGJhZCB0aGluZ3MgY291bGQgaGFwcGVuLiAgVGhlcmVmb3JlIHRoZSBjb252ZXJzaW9ucyBhbmRcbiAgIHJlcHJlc2VudGF0aW9ucyBhcmUgdGVzdGVkIHRob3JvdWdobHkgaW4gWy4uL3Rlc3QvdGVzdF93aXRuZXNzLm1sXSBhbmRcbiAgIFsuLi90ZXN0L3Rlc3RfY29udmVyc2lvbnMubWxdXG4qKVxuXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBMaXN0ID0gQmFzZS5MaXN0XG5tb2R1bGUgSGFzaF9zZXQgPSBCYXNlLkhhc2hfc2V0XG5cbmxldCBzcHJpbnRmID0gUHJpbnRmLnNwcmludGZcblxubW9kdWxlIEtleSA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAoKiBUaGUgaW50ZWdlcnMgaGVyZSBhcmUgdGhlIHZhbHVlcyB1bmRlcmx5aW5nIHRoZSBwb2x5bW9ycGhpYyB2YXJpYW50cywgdGhleSBhbHJlYWR5XG4gICAgIGFyZSBoYXNoZXMgb2YgY29uc3RydWN0b3IgbmFtZXMsIGFuZCBoZW5jZSBhcmUgZXhwZWN0ZWQgdG8gYmUgdW5pZm9ybWx5XG4gICAgIGRpc3RyaWJ1dGVkLiAqKVxuICBsZXQgaGFzaCB4ID0geFxuZW5kXG5cbm1vZHVsZSBBbGxvd2VkX2ludHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IE5vbmVcbiAgICB8IEFsbFxuICAgIHwgSGFzaF9zZXQgb2YgSGFzaF9zZXQuTShLZXkpLnRcbiAgICB8IEZyb21femVyb190byBvZiBpbnRcblxuICBsZXQgX2ludmFyaWFudCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIHwgQWxsIHwgSGFzaF9zZXQgXyAtPiAoKVxuICAgIHwgRnJvbV96ZXJvX3RvIG4gLT4gYXNzZXJ0IChuID49IDApXG4gIDs7XG5cbiAgbGV0IGludF9pc192YWx1ZSB0IGkgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgQWxsIC0+IHRydWVcbiAgICB8IEhhc2hfc2V0IGhhc2hfc2V0IC0+IEhhc2hfc2V0Lm1lbSBoYXNoX3NldCBpXG4gICAgfCBGcm9tX3plcm9fdG8gbiAtPiAwIDw9IGkgJiYgaSA8PSBuXG4gIDs7XG5lbmRcblxubW9kdWxlIEltbWVkaWFjeSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgQWx3YXlzXG4gICAgfCBTb21ldGltZXNcbiAgICB8IE5ldmVyXG4gICAgfCBVbmtub3duXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IGVxdWFsID0gWyVjb21wYXJlLmVxdWFsOiB0XVxuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgQWx3YXlzIC0+IFwiQWx3YXlzXCJcbiAgICB8IFNvbWV0aW1lcyAtPiBcIlNvbWV0aW1lc1wiXG4gICAgfCBOZXZlciAtPiBcIk5ldmVyXCJcbiAgICB8IFVua25vd24gLT4gXCJVbmtub3duXCJcbiAgOztcbmVuZFxuXG5vcGVuIEltbWVkaWFjeVxuXG5tb2R1bGUgVCA6IHNpZ1xuICB0eXBlICdhIHRcblxuICB2YWwgY3JlYXRlIDogJ2EgVHlwZW5hbWUudCAtPiBJbW1lZGlhY3kudCAtPiBBbGxvd2VkX2ludHMudCAtPiAnYSB0XG4gIHZhbCBjcmVhdGVfd2l0aF9uYW1lIDogc3RyaW5nIC0+IEltbWVkaWFjeS50IC0+IEFsbG93ZWRfaW50cy50IC0+IF8gdFxuICB2YWwgaW1tZWRpYWN5IDogXyB0IC0+IEltbWVkaWFjeS50XG4gIHZhbCBhbGxvd2VkX2ludHMgOiBfIHQgLT4gQWxsb3dlZF9pbnRzLnRcbiAgdmFsIHR5cGVuYW1lIDogXyB0IC0+IHN0cmluZ1xuXG4gIG1vZHVsZSBOZXZlcl92YWx1ZXMgOiBzaWdcbiAgICB2YWwgaW50MzIgOiBpbnQzMiB0XG4gICAgdmFsIGludDY0IDogaW50NjQgdFxuICAgIHZhbCBuYXRpdmVpbnQgOiBuYXRpdmVpbnQgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgYnl0ZXMgOiBieXRlcyB0XG4gICAgdmFsIGFycmF5IDogXyBhcnJheSB0XG4gICAgdmFsIHJlZl8gOiBfIHJlZiB0XG4gICAgdmFsIHR1cGxlMiA6IChfICogXykgdFxuICAgIHZhbCB0dXBsZTMgOiAoXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNCA6IChfICogXyAqIF8gKiBfKSB0XG4gICAgdmFsIHR1cGxlNSA6IChfICogXyAqIF8gKiBfICogXykgdFxuICAgIHZhbCBmdW5jdGlvbl8gOiAoXyAtPiBfKSB0XG4gIGVuZFxuXG4gIHZhbCBuZXZlciA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgdW5rbm93biA6ICdhIFR5cGVuYW1lLnQgLT4gJ2EgdFxuICB2YWwgb3B0aW9uIDogXyB0XG4gIHZhbCBsaXN0IDogXyB0XG4gIHZhbCBtYWdpYyA6IF8gdCAtPiBfIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRfID1cbiAgICB7IGltbWVkaWFjeSA6IEltbWVkaWFjeS50XG4gICAgOyBhbGxvd2VkX2ludHMgOiBBbGxvd2VkX2ludHMudFxuICAgIDsgdHlwZW5hbWUgOiBzdHJpbmdcbiAgICB9XG5cbiAgdHlwZSAnYSB0ID0gdF9cblxuICBsZXQgY3JlYXRlX3dpdGhfbmFtZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICB7IGltbWVkaWFjeTsgYWxsb3dlZF9pbnRzOyB0eXBlbmFtZSB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0eXBlbmFtZSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzID1cbiAgICBjcmVhdGVfd2l0aF9uYW1lIChUeXBlbmFtZS5uYW1lIHR5cGVuYW1lKSBpbW1lZGlhY3kgYWxsb3dlZF9pbnRzXG4gIDs7XG5cbiAgbGV0IGltbWVkaWFjeSB0ID0gdC5pbW1lZGlhY3lcbiAgbGV0IGFsbG93ZWRfaW50cyB0ID0gdC5hbGxvd2VkX2ludHNcbiAgbGV0IHR5cGVuYW1lIHQgPSB0LnR5cGVuYW1lXG4gIGxldCBtYWdpYyB0ID0gdFxuICBsZXQgbmV2ZXJfd2l0aF9uYW1lIG5hbWUgPSBjcmVhdGVfd2l0aF9uYW1lIG5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgbmV2ZXIgdHlwZW5hbWUgPSBjcmVhdGUgdHlwZW5hbWUgTmV2ZXIgTm9uZVxuICBsZXQgdW5rbm93biB0eXBlbmFtZSA9IGNyZWF0ZSB0eXBlbmFtZSBVbmtub3duIE5vbmVcblxuICBsZXQgb3B0aW9uID0gY3JlYXRlX3dpdGhfbmFtZSBcIm9wdGlvblwiIFNvbWV0aW1lcyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAwKVxuICBsZXQgbGlzdCA9IGNyZWF0ZV93aXRoX25hbWUgXCJsaXN0XCIgU29tZXRpbWVzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5cbiAgbW9kdWxlIE5ldmVyX3ZhbHVlcyA9IHN0cnVjdFxuICAgICgqIGludDMyIGlzIGJveGVkIGV2ZW4gb24gNjRiIHBsYXRmb3JtIGF0IHRoZSBtb21lbnQuICopXG4gICAgbGV0IGludDMyID0gbmV2ZXIgdHlwZW5hbWVfb2ZfaW50MzJcbiAgICBsZXQgaW50NjQgPSBuZXZlciB0eXBlbmFtZV9vZl9pbnQ2NFxuICAgIGxldCBuYXRpdmVpbnQgPSBuZXZlciB0eXBlbmFtZV9vZl9uYXRpdmVpbnRcbiAgICBsZXQgZmxvYXQgPSBuZXZlciB0eXBlbmFtZV9vZl9mbG9hdFxuICAgIGxldCBzdHJpbmcgPSBuZXZlciB0eXBlbmFtZV9vZl9zdHJpbmdcbiAgICBsZXQgYnl0ZXMgPSBuZXZlciB0eXBlbmFtZV9vZl9ieXRlc1xuICAgIGxldCBhcnJheSA9IG5ldmVyX3dpdGhfbmFtZSBcImFycmF5XCJcbiAgICBsZXQgcmVmXyA9IG5ldmVyX3dpdGhfbmFtZSBcInJlZlwiXG4gICAgbGV0IHR1cGxlMiA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlMlwiXG4gICAgbGV0IHR1cGxlMyA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlM1wiXG4gICAgbGV0IHR1cGxlNCA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNFwiXG4gICAgbGV0IHR1cGxlNSA9IG5ldmVyX3dpdGhfbmFtZSBcInR1cGxlNVwiXG5cbiAgICBsZXQgZnVuY3Rpb25fID0gbmV2ZXJfd2l0aF9uYW1lIFwiZnVuY3Rpb25cIlxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFRcblxubGV0IGludCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9pbnQgQWx3YXlzIEFsbG93ZWRfaW50cy5BbGxcbmxldCB1bml0ID0gY3JlYXRlIHR5cGVuYW1lX29mX3VuaXQgQWx3YXlzIChBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIDApXG5sZXQgYm9vbCA9IGNyZWF0ZSB0eXBlbmFtZV9vZl9ib29sIEFsd2F5cyAoQWxsb3dlZF9pbnRzLkZyb21femVyb190byAxKVxubGV0IGNoYXIgPSBjcmVhdGUgdHlwZW5hbWVfb2ZfY2hhciBBbHdheXMgKEFsbG93ZWRfaW50cy5Gcm9tX3plcm9fdG8gMjU1KVxuXG5tb2R1bGUgQ29tcHV0YXRpb25faW1wbCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuXG4gIGluY2x1ZGUgVHlwZV9nZW5lcmljLlZhcmlhbnRfYW5kX3JlY29yZF9pbnRmLk0gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcbiAgICBlbmQpXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcblxuICBsZXQgcmVmXyBfID0gcmVmX1xuICBsZXQgYXJyYXkgXyA9IGFycmF5XG4gIGxldCB0dXBsZTIgXyBfID0gdHVwbGUyXG4gIGxldCB0dXBsZTMgXyBfIF8gPSB0dXBsZTNcbiAgbGV0IHR1cGxlNCBfIF8gXyBfID0gdHVwbGU0XG4gIGxldCB0dXBsZTUgXyBfIF8gXyBfID0gdHVwbGU1XG4gIGxldCBmdW5jdGlvbl8gXyBfID0gZnVuY3Rpb25fXG4gIGxldCBpbnQgPSBpbnRcbiAgbGV0IGNoYXIgPSBjaGFyXG4gIGxldCBib29sID0gYm9vbFxuICBsZXQgdW5pdCA9IHVuaXRcbiAgbGV0IG9wdGlvbiBfID0gb3B0aW9uXG4gIGxldCBsaXN0IF8gPSBsaXN0XG5cbiAgKCogQW4gW2EgTGF6eS50XSBtaWdodCBiZSBhIGJveGVkIGNsb3N1cmUsIHNvIG11c3QgaGF2ZSBpbW1lZGlhY3kgZWl0aGVyIFtOZXZlcl0gb3JcbiAgICAgW1NvbWV0aW1lc10uICBBbiBbYSBMYXp5LnRdIHZhbHVlIGNvdWxkIGJlIGltbWVkaWF0ZSBpZiBbYV0gaXMgaW1tZWRpYXRlLiAgQnV0IGlmIFthXVxuICAgICBpcyBuZXZlciBpbW1lZGlhdGUsIHRoZW4gW2EgTGF6eS50XSBjYW5ub3QgYmUuICopXG4gIGxldCBsYXp5X3QgdCA9XG4gICAgbGV0IGltbWVkaWFjeSA9XG4gICAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgICB8IE5ldmVyIC0+IE5ldmVyXG4gICAgICB8IFVua25vd24gLT4gVW5rbm93blxuICAgICAgfCBTb21ldGltZXMgfCBBbHdheXMgLT4gU29tZXRpbWVzXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9uYW1lIFwibGF6eV90XCIgaW1tZWRpYWN5IChhbGxvd2VkX2ludHMgdClcbiAgOztcblxuICBsZXQgcG9zc2libHlfdW5ib3hlZCB0eXBlbmFtZSBjaGlsZF90eXBlID1cbiAgICBtYXRjaCBpbW1lZGlhY3kgY2hpbGRfdHlwZSB3aXRoXG4gICAgfCBOZXZlciAtPiBuZXZlciB0eXBlbmFtZVxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IFNvbWV0aW1lcyAtPiB1bmtub3duIHR5cGVuYW1lXG4gIDs7XG5cbiAgbGV0IHJlY29yZCByID1cbiAgICBpZiBSZWNvcmQubGVuZ3RoIHIgPiAxXG4gICAgdGhlbiBuZXZlciAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcilcbiAgICBlbHNlIChcbiAgICAgIGxldCAoRmllbGQgdGhlX29ubHlfZmllbGQpID0gUmVjb3JkLmZpZWxkIHIgMCBpblxuICAgICAgcG9zc2libHlfdW5ib3hlZCAoUmVjb3JkLnR5cGVuYW1lX29mX3QgcikgKEZpZWxkLnRyYXZlcnNlIHRoZV9vbmx5X2ZpZWxkKSlcbiAgOztcblxuICAoKiBWYXJpYW50cyB3aXRoIGFsbCBjb25zdHJ1Y3RvcnMgaGF2aW5nIG5vIGFyZ3VtZW50cyBhcmUgYWx3YXlzIGltbWVkaWF0ZTsgdmFyaWFudHNcbiAgICAgd2l0aCBhbGwgY29uc3RydWN0b3JzIGhhdmluZyBzb21lIGFyZ3VtZW50cyBhcmUgbmV2ZXIgaW1tZWRpYXRlOyBtaXhlZCB2YXJpYW50cyBhcmVcbiAgICAgc29tZXRpbWVzIGltbWVkaWF0ZS5cblxuICAgICBJZiBhIHZhcmlhbnQgaGFzIGEgc2luZ2xlIGNvbnN0cnVjdG9yLCBhbmQgdGhlIGNvbnN0cnVjdG9yIGhhcyBhbiBhcmd1bWVudCwgdGhlXG4gICAgIHZhcmlhbnQgY2FuIGJlIHVuYm94ZWQuIElmIHVuYm94ZWQsIGVpdGhlciBleHBsaWNpdGx5IG9yIGJ5IGRlZmF1bHQgKGRlcGVuZGluZyBvblxuICAgICBjb21waWxlciBzZXR0aW5ncyksIHRoZSByZXByZXNlbnRhdGlvbiBpcyBzaW1wbHkgdGhlIGFyZ3VtZW50LiBPdGhlcndpc2UsIHRoZSBydWxlc1xuICAgICBhYm92ZSBhcHBseSBub3JtYWxseS4gKilcbiAgbGV0IHZhcmlhbnQgdmFyaWFudCA9XG4gICAgbGV0IG5vX2FyZ19saXN0LCBvbmVfYXJnX2xpc3QsIG1vcmVfYXJnX2xpc3QgPVxuICAgICAgVmFyaWFudC5mb2xkIHZhcmlhbnQgfmluaXQ6KFtdLCBbXSwgW10pIH5mOihmdW4gKG5vLCBvbmUsIG1vcmUpIChUYWcgdCBhcyB0YWcpIC0+XG4gICAgICAgIG1hdGNoIFRhZy5hcml0eSB0IHdpdGhcbiAgICAgICAgfCAwIC0+IHRhZyA6OiBubywgb25lLCBtb3JlXG4gICAgICAgIHwgMSAtPiBubywgdGFnIDo6IG9uZSwgbW9yZVxuICAgICAgICB8IF8gLT4gbm8sIG9uZSwgdGFnIDo6IG1vcmUpXG4gICAgaW5cbiAgICBtYXRjaCBub19hcmdfbGlzdCwgb25lX2FyZ19saXN0LCBtb3JlX2FyZ19saXN0IHdpdGhcbiAgICB8IFtdLCBbIFRhZyB0YWcgXSwgW10gd2hlbiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudCkgLT5cbiAgICAgIHBvc3NpYmx5X3VuYm94ZWQgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KSAoVGFnLnRyYXZlcnNlIHRhZylcbiAgICB8IFtdLCBbXSwgW10gLT5cbiAgICAgICgqIFdlIGRvbid0IGhhdmUgYW4gZXhwbGljdCB3YXkgb2Ygc2F5aW5nIGEgdHlwZSBpcyB1bmluaGFiaXRlZC4gKilcbiAgICAgIHVua25vd24gKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgW10sIF8gOjogXywgXyB8IFtdLCBfLCBfIDo6IF8gLT4gbmV2ZXIgKFZhcmlhbnQudHlwZW5hbWVfb2ZfdCB2YXJpYW50KVxuICAgIHwgXyA6OiBfLCBfLCBfIC0+XG4gICAgICBsZXQgbm9fYXJnX2NvdW50ID0gTGlzdC5sZW5ndGggbm9fYXJnX2xpc3QgaW5cbiAgICAgIGxldCBhbGxvd2VkX2ludHMgPVxuICAgICAgICBpZiBub3QgKFZhcmlhbnQuaXNfcG9seW1vcnBoaWMgdmFyaWFudClcbiAgICAgICAgdGhlbiBBbGxvd2VkX2ludHMuRnJvbV96ZXJvX3RvIChub19hcmdfY291bnQgLSAxKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgaGFzaF9zZXQgPSBIYXNoX3NldC5jcmVhdGUgKG1vZHVsZSBLZXkpIH5zaXplOihub19hcmdfY291bnQgKiAyKSBpblxuICAgICAgICAgIExpc3QuaXRlciBub19hcmdfbGlzdCB+ZjooZnVuIChUYWcgdGFnKSAtPlxuICAgICAgICAgICAgbWF0Y2ggVGFnLmNyZWF0ZSB0YWcgd2l0aFxuICAgICAgICAgICAgfCBUYWcuQ29uc3QgXyAtPiBIYXNoX3NldC5hZGQgaGFzaF9zZXQgKFRhZy5vY2FtbF9yZXByIHRhZylcbiAgICAgICAgICAgIHwgVGFnLkFyZ3MgXyAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgIEFsbG93ZWRfaW50cy5IYXNoX3NldCBoYXNoX3NldClcbiAgICAgIGluXG4gICAgICBsZXQgaW1tZWRpYWN5ID1cbiAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBvbmVfYXJnX2xpc3QgJiYgTGlzdC5pc19lbXB0eSBtb3JlX2FyZ19saXN0XG4gICAgICAgIHRoZW4gQWx3YXlzXG4gICAgICAgIGVsc2UgU29tZXRpbWVzXG4gICAgICBpblxuICAgICAgY3JlYXRlIChWYXJpYW50LnR5cGVuYW1lX29mX3QgdmFyaWFudCkgaW1tZWRpYWN5IGFsbG93ZWRfaW50c1xuICA7O1xuXG4gIGxldCBuYW1lID0gXCJpc19pbW1lZGlhdGVcIlxuICBsZXQgcmVxdWlyZWQgPSBbXVxuXG4gIG1vZHVsZSBOYW1lZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBDb250ZXh0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSB1bml0XG5cbiAgICAgIGxldCBjcmVhdGUgKCkgPSAoKVxuICAgIGVuZFxuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHQgcmVmXG5cbiAgICAoKiBUaGUgZGVmYXVsdCB3aXRuZXNzIC0gd2hpY2ggaXMgY3JlYXRlZCBieSBjYWxsaW5nIFtpbml0XSBhbmQgcmVjb3ZlcmVkIGF0IGFueSBsYXRlclxuICAgICAgIHBvaW50IGJ5IGNhbGxpbmcgW2dldF93aXBfY29tcHV0YXRpb25dIC0gY2FuIG9ubHkgYmUgdXNlZCBpbiBhIHJlY3Vyc2l2ZSB0eXBlLlxuICAgICAgIE90aGVyIHR5cGVzIHRoYXQgZG9uJ3QgdXNlIFtnZXRfd2lwX2NvbXB1dGF0aW9uXSB3aWxsIGp1c3QgZXZhbHVhdGUgdG8gdGhlIGFjdHVhbFxuICAgICAgIHdpdG5lc3Mgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBpbml0aWFsIGR1bW15IG9uZS4gKilcbiAgICBsZXQgaW5pdCBfIG5hbWUgPSByZWYgKGNyZWF0ZSBuYW1lIFNvbWV0aW1lcyBBbGxvd2VkX2ludHMuTm9uZSlcbiAgICBsZXQgZ2V0X3dpcF9jb21wdXRhdGlvbiBjb21wID0gIWNvbXBcblxuICAgIGxldCBzZXRfZmluYWxfY29tcHV0YXRpb24gciB0ID1cbiAgICAgIHIgOj0gdDtcbiAgICAgIHRcbiAgICA7O1xuXG4gICAgbGV0IHNoYXJlIF8gPSB0cnVlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBHZW5lcmljID0gVHlwZV9nZW5lcmljLk1ha2UgKENvbXB1dGF0aW9uX2ltcGwpXG5cbmxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICBsZXQgKGBnZW5lcmljIHQpID0gR2VuZXJpYy5vZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgdFxuOztcblxubW9kdWxlIEZvcl9hbGxfcGFyYW1ldGVycyAoTSA6IHNpZ1xuICAgIHZhbCBpbW1lZGlhY3kgOiBJbW1lZGlhY3kudFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgd2l0bmVzcyB0eXBlcmVwMSB0eXBlcmVwMiA9XG4gICAgbGV0IHQxID0gb2ZfdHlwZXJlcCB0eXBlcmVwMSBpblxuICAgIGxldCB0MiA9IG9mX3R5cGVyZXAgdHlwZXJlcDIgaW5cbiAgICBsZXQgaTEgPSBpbW1lZGlhY3kgdDEgaW5cbiAgICBsZXQgaTIgPSBpbW1lZGlhY3kgdDIgaW5cbiAgICBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBpMilcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgaXMgbm90IGluZGVwZW5kZW50IG9mIGl0cyBhcmd1bWVudHNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSkpXG4gICAgZWxzZSBpZiBub3QgKEltbWVkaWFjeS5lcXVhbCBpMSBNLmltbWVkaWFjeSlcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICBcInR5cGUgJXMgZG9lcyBub3QgaGF2ZSBkZXNpcmVkIGltbWVkaWFjeTogd2FudGVkICVzIGJ1dCBnb3QgJXNcIlxuICAgICAgICAgICAoVHlwZW5hbWUubmFtZSAoVHlwZXJlcC50eXBlbmFtZV9vZl90IHR5cGVyZXAxKSlcbiAgICAgICAgICAgKEltbWVkaWFjeS50b19zdHJpbmcgTS5pbW1lZGlhY3kpXG4gICAgICAgICAgIChJbW1lZGlhY3kudG9fc3RyaW5nIGkxKSlcbiAgICBlbHNlIHQxXG4gIDs7XG5cbiAgKCogYWx3YXlzIGltbWVkaWF0ZSAqKVxuICBsZXQgcmEgPSBUeXBlcmVwLkludFxuXG4gICgqIG5ldmVyIGltbWVkaWF0ZSAqKVxuICBsZXQgcm4gPSBUeXBlcmVwLlN0cmluZ1xuXG4gICgqIEVhY2ggb2YgdGhlIFtGb3JfYWxsX3BhcmFtZXRlcnNfKl0gZnVuY3RvcnMgd29ya3MgYnkgaW5zdGFudGlhdGluZyB0aGUgbi1hcnkgdHlwZVxuICAgICB3aXRoIGFsbCBbQWx3YXlzXSB0eXBlcywgYW5kIHRoZW4gd2l0aCBhbGwgW05ldmVyXSB0eXBlcy4gIElmIHRob3NlIHByb2R1Y2UgdGhlIHNhbWVcbiAgICAgaW1tZWRpYWN5LCB0aGVuIHdlIGNvbmNsdWRlIHRoYXQgdGhlIG4tYXJ5IHR5cGUgaXMgaW5kZXBlbmRlbnQgb2YgaXRzIGFyZ3VtZW50cy4gKilcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MxIChYIDogVHlwZXJlcGFibGUuUzEpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSkgKFgudHlwZXJlcF9vZl90IHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MyIChYIDogVHlwZXJlcGFibGUuUzIpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1MzIChYIDogVHlwZXJlcGFibGUuUzMpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M0IChYIDogVHlwZXJlcGFibGUuUzQpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcblxuICBtb2R1bGUgRm9yX2FsbF9wYXJhbWV0ZXJzX1M1IChYIDogVHlwZXJlcGFibGUuUzUpID0gc3RydWN0XG4gICAgbGV0IHQgPSB3aXRuZXNzIChYLnR5cGVyZXBfb2ZfdCByYSByYSByYSByYSByYSkgKFgudHlwZXJlcF9vZl90IHJuIHJuIHJuIHJuIHJuKVxuICAgIGxldCB3aXRuZXNzICgpID0gbWFnaWMgdFxuICBlbmRcbmVuZFxuXG5sZXQgaW50X2lzX3ZhbHVlIHQgaW50ID0gQWxsb3dlZF9pbnRzLmludF9pc192YWx1ZSAoYWxsb3dlZF9pbnRzIHQpIGludFxuXG5sZXQgaW50X2FzX3ZhbHVlICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnQgdGhlbiBTb21lIChPYmoubWFnaWMgKGludCA6IGludCkgOiBhKSBlbHNlIE5vbmVcbjs7XG5cbmxldCBpbnRfYXNfdmFsdWVfZXhuICh0eXBlIGEpICh0IDogYSB0KSBpbnQgPVxuICBpZiBpbnRfaXNfdmFsdWUgdCBpbnRcbiAgdGhlbiAoT2JqLm1hZ2ljIChpbnQgOiBpbnQpIDogYSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChzcHJpbnRmIFwiSW1tZWRpYXRlLmludF9hc192YWx1ZV9leG46IHR5cGVuYW1lOiVTIGludDolZFwiIChULnR5cGVuYW1lIHQpIGludClcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnRfZXhuICh0eXBlIGEpICh0IDogYSB0KSBhID1cbiAgaWYgT2JqLmlzX2ludCAoT2JqLnJlcHIgYSlcbiAgdGhlbiAoT2JqLm1hZ2ljIChhIDogYSkgOiBpbnQpXG4gIGVsc2UgZmFpbHdpdGggKHNwcmludGYgXCJJbW1lZGlhdGUudmFsdWVfYXNfaW50X2V4bjogdHlwZW5hbWU6JVNcIiAoVC50eXBlbmFtZSB0KSlcbjs7XG5cbmxldCB2YWx1ZV9hc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPVxuICBpZiBPYmouaXNfaW50IChPYmoucmVwciBhKSB0aGVuIFNvbWUgKE9iai5tYWdpYyAoYSA6IGEpIDogaW50KSBlbHNlIE5vbmVcbjs7XG5cbmxldCB2YWx1ZV9pc19pbnQgKHR5cGUgYSkgKF8gOiBhIHQpIGEgPSBPYmouaXNfaW50IChPYmoucmVwciBhKVxuXG5tb2R1bGUgQWx3YXlzID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgaW5jbHVkZSBGb3JfYWxsX3BhcmFtZXRlcnMgKHN0cnVjdFxuICAgICAgbGV0IGltbWVkaWFjeSA9IEFsd2F5c1xuICAgIGVuZClcblxuICBsZXQgb2ZfdHlwZXJlcCB0eXBlcmVwID1cbiAgICBsZXQgdCA9IG9mX3R5cGVyZXAgdHlwZXJlcCBpblxuICAgIG1hdGNoIGltbWVkaWFjeSB0IHdpdGhcbiAgICB8IEFsd2F5cyAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBOZXZlciB8IFNvbWV0aW1lcyAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IG9mX3R5cGVyZXBfZXhuIGhlcmUgdHlwZXJlcCA9IE9wdGlvbi52YWx1ZV9leG4gfmhlcmUgKG9mX3R5cGVyZXAgdHlwZXJlcClcbiAgbGV0IGludF9hc192YWx1ZSA9IGludF9hc192YWx1ZVxuICBsZXQgaW50X2FzX3ZhbHVlX2V4biA9IGludF9hc192YWx1ZV9leG5cbiAgbGV0IGludF9pc192YWx1ZSA9IGludF9pc192YWx1ZVxuICBsZXRbQGlubGluZSBhbHdheXNdIHZhbHVlX2FzX2ludCAodHlwZSBhKSBfIGEgPSBhIHw+IChPYmoubWFnaWMgOiBhIC0+IGludClcbiAgbGV0IGludCA9IGludFxuICBsZXQgY2hhciA9IGNoYXJcbiAgbGV0IGJvb2wgPSBib29sXG4gIGxldCB1bml0ID0gdW5pdFxuZW5kXG5cbm1vZHVsZSBTb21ldGltZXMgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gU29tZXRpbWVzXG4gICAgZW5kKVxuXG4gIGxldCBvZl90eXBlcmVwIHR5cGVyZXAgPVxuICAgIGxldCB0ID0gb2ZfdHlwZXJlcCB0eXBlcmVwIGluXG4gICAgbWF0Y2ggaW1tZWRpYWN5IHQgd2l0aFxuICAgIHwgU29tZXRpbWVzIC0+IFNvbWUgdFxuICAgIHwgVW5rbm93biB8IEFsd2F5cyB8IE5ldmVyIC0+IE5vbmVcbiAgOztcblxuICBsZXQgb2ZfdHlwZXJlcF9leG4gaGVyZSB0eXBlcmVwID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZSAob2ZfdHlwZXJlcCB0eXBlcmVwKVxuICBsZXQgaW50X2FzX3ZhbHVlID0gaW50X2FzX3ZhbHVlXG4gIGxldCBpbnRfYXNfdmFsdWVfZXhuID0gaW50X2FzX3ZhbHVlX2V4blxuICBsZXQgaW50X2lzX3ZhbHVlID0gaW50X2lzX3ZhbHVlXG4gIGxldCB2YWx1ZV9hc19pbnQgPSB2YWx1ZV9hc19pbnRcbiAgbGV0IHZhbHVlX2FzX2ludF9leG4gPSB2YWx1ZV9hc19pbnRfZXhuXG4gIGxldCB2YWx1ZV9pc19pbnQgPSB2YWx1ZV9pc19pbnRcbiAgbGV0IG9wdGlvbiA9IG9wdGlvblxuICBsZXQgbGlzdCA9IGxpc3RcbmVuZFxuXG5tb2R1bGUgTmV2ZXIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICBpbmNsdWRlIEZvcl9hbGxfcGFyYW1ldGVycyAoc3RydWN0XG4gICAgICBsZXQgaW1tZWRpYWN5ID0gTmV2ZXJcbiAgICBlbmQpXG5cbiAgbGV0IG9mX3R5cGVyZXAgdHlwZXJlcCA9XG4gICAgbGV0IHQgPSBvZl90eXBlcmVwIHR5cGVyZXAgaW5cbiAgICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gICAgfCBOZXZlciAtPiBTb21lIHRcbiAgICB8IFVua25vd24gfCBBbHdheXMgfCBTb21ldGltZXMgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBvZl90eXBlcmVwX2V4biBoZXJlIHR5cGVyZXAgPSBPcHRpb24udmFsdWVfZXhuIH5oZXJlIChvZl90eXBlcmVwIHR5cGVyZXApXG5cbiAgaW5jbHVkZSBOZXZlcl92YWx1ZXNcbmVuZFxuXG50eXBlICdhIGRlc3QgPVxuICB8IEFsd2F5cyBvZiAnYSBBbHdheXMudFxuICB8IFNvbWV0aW1lcyBvZiAnYSBTb21ldGltZXMudFxuICB8IE5ldmVyIG9mICdhIE5ldmVyLnRcbiAgfCBVbmtub3duXG5cbmxldCBkZXN0IHQgPVxuICBtYXRjaCBpbW1lZGlhY3kgdCB3aXRoXG4gIHwgQWx3YXlzIC0+IEFsd2F5cyB0XG4gIHwgU29tZXRpbWVzIC0+IFNvbWV0aW1lcyB0XG4gIHwgTmV2ZXIgLT4gTmV2ZXIgdFxuICB8IFVua25vd24gLT4gVW5rbm93blxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSBNYWtlIChUMSA6IFQpIChUMiA6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IFQxLnQgKiBUMi50XG5lbmRcblxubW9kdWxlIFQyID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9ICdhICogJ2IgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiA9IGEsIGJcblxuICBsZXQgY3VycnkgZiA9XG4gICAgKCk7XG4gICAgZnVuIGEgYiAtPiBmIChhLCBiKVxuICA7O1xuXG4gIGxldCB1bmN1cnJ5IGYgPVxuICAgICgpO1xuICAgIGZ1biAoYSwgYikgLT4gZiBhIGJcbiAgOztcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXykgdCAtPiAnYSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EpIHQgLT4gJ2EgPSBcIiVmaWVsZDFfaW1tdXRcIlxuXG4gIFslJWVsc2VdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXykgdCAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EpIHQgLT4gJ2EgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gIGxldCBtYXAgKHgsIHkpIH5mID0gZiB4LCBmIHlcbiAgbGV0IG1hcF9mc3QgKHgsIHkpIH5mID0gZiB4LCB5XG4gIGxldCBtYXBfc25kICh4LCB5KSB+ZiA9IHgsIGYgeVxuICBsZXQgbWFwMiAoeDEsIHkxKSAoeDIsIHkyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTJcblxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiAoeCwgeSkgKHgnLCB5JykgPVxuICAgIG1hdGNoIGNtcDEgeCB4JyB3aXRoXG4gICAgfCAwIC0+IGNtcDIgeSB5J1xuICAgIHwgaSAtPiBpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiAoeCwgeSkgKHgnLCB5JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5J1xuICBsZXQgc3dhcCAoYSwgYikgPSBiLCBhXG5cbiAgaW5jbHVkZSBDb21wYXJhdG9yLkRlcml2ZWQyIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjb21wYXJlIGNtcDEgY21wMiA9IGNvbXBhcmUgfmNtcDEgfmNtcDJcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIFQzID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHQgPSAnYSAqICdiICogJ2MgW0BAZGVyaXZpbmcgc2V4cCwgdHlwZXJlcF1cblxuICBsZXQgY3JlYXRlIGEgYiBjID0gYSwgYiwgY1xuXG4gIGxldCBjdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gYSBiIGMgLT4gZiAoYSwgYiwgYylcbiAgOztcblxuICBsZXQgdW5jdXJyeSBmID1cbiAgICAoKTtcbiAgICBmdW4gKGEsIGIsIGMpIC0+IGYgYSBiIGNcbiAgOztcblxuICBsZXQgbWFwICh4LCB5LCB6KSB+ZiA9IGYgeCwgZiB5LCBmIHpcbiAgbGV0IG1hcF9mc3QgKHgsIHksIHopIH5mID0gZiB4LCB5LCB6XG4gIGxldCBtYXBfc25kICh4LCB5LCB6KSB+ZiA9IHgsIGYgeSwgelxuICBsZXQgbWFwX3RyZCAoeCwgeSwgeikgfmYgPSB4LCB5LCBmIHpcbiAgbGV0IG1hcDIgKHgxLCB5MSwgejEpICh4MiwgeTIsIHoyKSB+ZiA9IGYgeDEgeDIsIGYgeTEgeTIsIGYgejEgejJcblxuICBbJSVpZiBmbGFtYmRhX2JhY2tlbmRdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXywgXykgdCAtPiAnYSA9IFwiJWZpZWxkMF9pbW11dFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EsIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDFfaW1tdXRcIlxuXG4gIFslJWVsc2VdXG5cbiAgZXh0ZXJuYWwgZ2V0MSA6ICgnYSwgXywgXykgdCAtPiAnYSA9IFwiJWZpZWxkMFwiXG4gIGV4dGVybmFsIGdldDIgOiAoXywgJ2EsIF8pIHQgLT4gJ2EgPSBcIiVmaWVsZDFcIlxuXG4gIFslJWVuZGlmXVxuXG4gICgqIFRoZXJlJ3Mgbm8gJWZpZWxkMi4uLi4qKVxuICBsZXQgZ2V0MyAoXywgXywgYSkgPSBhXG5cbiAgKCogbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uICAqKVxuICBsZXQgY29tcGFyZSB+Y21wMSB+Y21wMiB+Y21wMyAoeCwgeSwgeikgKHgnLCB5JywgeicpID1cbiAgICBsZXQgYzEgPSBjbXAxIHggeCcgaW5cbiAgICBpZiBjMSA8PiAwXG4gICAgdGhlbiBjMVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGMyID0gY21wMiB5IHknIGluXG4gICAgICBpZiBjMiA8PiAwIHRoZW4gYzIgZWxzZSBjbXAzIHogeicpXG4gIDs7XG5cbiAgbGV0IGVxdWFsIH5lcTEgfmVxMiB+ZXEzICh4LCB5LCB6KSAoeCcsIHknLCB6JykgPSBlcTEgeCB4JyAmJiBlcTIgeSB5JyAmJiBlcTMgeiB6J1xuZW5kXG5cbm1vZHVsZSB0eXBlIENvbXBhcmFibGVfc2V4cGFibGUgPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kXG5cbm1vZHVsZSB0eXBlIEhhc2hhYmxlX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG5lbmRcblxubW9kdWxlIHR5cGUgSGFzaGVyX3NleHBhYmxlID0gc2lnXG4gIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBTZXhwYWJsZSAoUzEgOiBTZXhwYWJsZS5TKSAoUzIgOiBTZXhwYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTMS50ICogUzIudCBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBCaW5hYmxlIChCMSA6IEJpbmFibGUuUykgKEIyIDogQmluYWJsZS5TKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBCMS50ICogQjIudCBbQEBkZXJpdmluZyBiaW5faW9dXG5lbmRcblxubW9kdWxlIENvbXBhcmF0b3IgKFMxIDogQ29tcGFyYXRvci5TKSAoUzIgOiBDb21wYXJhdG9yLlMpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoUzEpIChTMilcblxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9XG4gICAgKFMxLmNvbXBhcmF0b3Jfd2l0bmVzcywgUzIuY29tcGFyYXRvcl93aXRuZXNzKSBUMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQyLmNvbXBhcmF0b3IgUzEuY29tcGFyYXRvciBTMi5jb21wYXJhdG9yXG5lbmRcblxubW9kdWxlIENvbXBhcmFibGVfcGxhaW4gKFMxIDogQ29tcGFyYWJsZS5TX3BsYWluKSAoUzIgOiBDb21wYXJhYmxlLlNfcGxhaW4pID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBDb21wYXJhdG9yIChTMSkgKFMyKVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IGNvbXBhcmF0b3Iuc2V4cF9vZl90XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbl91c2luZ19jb21wYXJhdG9yIChUKVxuZW5kXG5cbm1vZHVsZSBDb21wYXJhYmxlIChTMSA6IENvbXBhcmFibGVfc2V4cGFibGUpIChTMiA6IENvbXBhcmFibGVfc2V4cGFibGUpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgaW5jbHVkZSBTZXhwYWJsZSAoUzEpIChTMilcblxuICAgIGxldCBjb21wYXJlIChzMSwgczIpIChzMScsIHMyJykgPVxuICAgICAgbWF0Y2ggUzEuY29tcGFyZSBzMSBzMScgd2l0aFxuICAgICAgfCAwIC0+IFMyLmNvbXBhcmUgczIgczInXG4gICAgICB8IHggLT4geFxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbmVuZFxuXG5tb2R1bGUgSGFzaGVyIChIMSA6IEhhc2hlcl9zZXhwYWJsZSkgKEgyIDogSGFzaGVyX3NleHBhYmxlKSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEgxLnQgKiBIMi50IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2UgKFQpXG5lbmRcblxubW9kdWxlIEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUyA6IEhhc2hhYmxlX3NleHBhYmxlKSA6XG4gIEhhc2hlcl9zZXhwYWJsZSB3aXRoIHR5cGUgdCA9IFMudCA9IHN0cnVjdFxuICBpbmNsdWRlIFNcblxuICBsZXQgaGFzaF9mb2xkX3Qgc3RhdGUgdCA9IGhhc2hfZm9sZF9pbnQgc3RhdGUgKGhhc2ggdClcbmVuZFxuXG5tb2R1bGUgSGFzaGFibGVfdCAoUzEgOiBIYXNoYWJsZV9zZXhwYWJsZSkgKFMyIDogSGFzaGFibGVfc2V4cGFibGUpID1cbiAgSGFzaGVyXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZVxuICAgICAgIChTMSkpXG4gICAgKEhhc2hlcl9zZXhwYWJsZV9vZl9oYXNoYWJsZV9zZXhwYWJsZSAoUzIpKVxuXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZV90XG4iLCJvcGVuISBJbXBvcnRcblxubGV0IGZhaWx3aXRoZiA9IFByaW50Zi5mYWlsd2l0aGZcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBTdW5cbiAgICAgICAgfCBNb25cbiAgICAgICAgfCBUdWVcbiAgICAgICAgfCBXZWRcbiAgICAgICAgfCBUaHVcbiAgICAgICAgfCBGcmlcbiAgICAgICAgfCBTYXRcbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVja11cblxuICAgICAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU1VOXCJcbiAgICAgICAgfCBNb24gLT4gXCJNT05cIlxuICAgICAgICB8IFR1ZSAtPiBcIlRVRVwiXG4gICAgICAgIHwgV2VkIC0+IFwiV0VEXCJcbiAgICAgICAgfCBUaHUgLT4gXCJUSFVcIlxuICAgICAgICB8IEZyaSAtPiBcIkZSSVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU0FUXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmdfbG9uZyB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgU3VuIC0+IFwiU3VuZGF5XCJcbiAgICAgICAgfCBNb24gLT4gXCJNb25kYXlcIlxuICAgICAgICB8IFR1ZSAtPiBcIlR1ZXNkYXlcIlxuICAgICAgICB8IFdlZCAtPiBcIldlZG5lc2RheVwiXG4gICAgICAgIHwgVGh1IC0+IFwiVGh1cnNkYXlcIlxuICAgICAgICB8IEZyaSAtPiBcIkZyaWRheVwiXG4gICAgICAgIHwgU2F0IC0+IFwiU2F0dXJkYXlcIlxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZ19pbnRlcm5hbCBzID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnVwcGVyY2FzZSBzIHdpdGhcbiAgICAgICAgfCBcIlNVTlwiIHwgXCJTVU5EQVlcIiAtPiBTdW5cbiAgICAgICAgfCBcIk1PTlwiIHwgXCJNT05EQVlcIiAtPiBNb25cbiAgICAgICAgfCBcIlRVRVwiIHwgXCJUVUVTREFZXCIgLT4gVHVlXG4gICAgICAgIHwgXCJXRURcIiB8IFwiV0VETkVTREFZXCIgLT4gV2VkXG4gICAgICAgIHwgXCJUSFVcIiB8IFwiVEhVUlNEQVlcIiAtPiBUaHVcbiAgICAgICAgfCBcIkZSSVwiIHwgXCJGUklEQVlcIiAtPiBGcmlcbiAgICAgICAgfCBcIlNBVFwiIHwgXCJTQVRVUkRBWVwiIC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2Zfc3RyaW5nOiAlU1wiIHMgKClcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9pbnRfZXhuIGkgPVxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgfCAwIC0+IFN1blxuICAgICAgICB8IDEgLT4gTW9uXG4gICAgICAgIHwgMiAtPiBUdWVcbiAgICAgICAgfCAzIC0+IFdlZFxuICAgICAgICB8IDQgLT4gVGh1XG4gICAgICAgIHwgNSAtPiBGcmlcbiAgICAgICAgfCA2IC0+IFNhdFxuICAgICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiRGF5X29mX3dlZWsub2ZfaW50X2V4bjogJWRcIiBpICgpXG4gICAgICA7O1xuXG4gICAgICAoKiBCZSB2ZXJ5IGdlbmVyb3VzIHdpdGggb2Zfc3RyaW5nLiAgV2UgYWNjZXB0IGFsbCBwb3NzaWJsZSBjYXBpdGFsaXphdGlvbnMgYW5kIHRoZVxuICAgICAgICAgaW50ZWdlciByZXByZXNlbnRhdGlvbnMgYXMgd2VsbC4gKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIHRyeSBvZl9zdHJpbmdfaW50ZXJuYWwgcyB3aXRoXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICh0cnkgb2ZfaW50X2V4biAoSW50Lm9mX3N0cmluZyBzKSB3aXRoXG4gICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJEYXlfb2Zfd2Vlay5vZl9zdHJpbmc6ICVTXCIgcyAoKSlcbiAgICAgIDs7XG5cbiAgICAgICgqIHRoaXMgaXMgaW4gVCByYXRoZXIgdGhhbiBvdXRzaWRlIHNvIHRoYXQgdGhlIGxhdGVyIGZ1bmN0b3IgYXBwbGljYXRpb24gdG8gYnVpbGQgbWFwc1xuICAgICAgICAgdXNlcyB0aGlzIHNleHAgcmVwcmVzZW50YXRpb24gKilcbiAgICAgIGluY2x1ZGUgU2V4cGFibGUuU3RhYmxlLk9mX3N0cmluZ2FibGUuVjEgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgICBlbmQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcblxuICAgIG1vZHVsZSBVbnN0YWJsZSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIChDb21wYXJhYmxlLk1ha2VfYmluYWJsZSAoVCkgOiBDb21wYXJhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuICAgICAgaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKFQpXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFVuc3RhYmxlKVxuICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLk1ha2UgKFVuc3RhYmxlKVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMS5VbnN0YWJsZVxuXG5sZXQgd2Vla2RheXMgPSBbIE1vbjsgVHVlOyBXZWQ7IFRodTsgRnJpIF1cbmxldCB3ZWVrZW5kcyA9IFsgU2F0OyBTdW4gXVxuXG4oKiB3cml0dGVuIG91dCB0byBzYXZlIG92ZXJoZWFkIHdoZW4gbG9hZGluZyBtb2R1bGVzLiAgVGhlIG1lbWJlcnMgb2YgdGhlIHNldCBhbmQgdGhlXG4gICBvcmRlcmluZyBzaG91bGQgbmV2ZXIgY2hhbmdlLCBzbyBzcGVlZCB3aW5zIG92ZXIgc29tZXRoaW5nIG1vcmUgY29tcGxleCB0aGF0IHByb3Zlc1xuICAgdGhlIG9yZGVyID0gdGhlIG9yZGVyIGluIHQgYXQgcnVudGltZSAqKVxubGV0IGFsbCA9IFsgU3VuOyBNb247IFR1ZTsgV2VkOyBUaHU7IEZyaTsgU2F0IF1cblxubGV0IG9mX2ludCBpID1cbiAgdHJ5IFNvbWUgKG9mX2ludF9leG4gaSkgd2l0aFxuICB8IF8gLT4gTm9uZVxuOztcblxubGV0IHRvX2ludCB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3VuIC0+IDBcbiAgfCBNb24gLT4gMVxuICB8IFR1ZSAtPiAyXG4gIHwgV2VkIC0+IDNcbiAgfCBUaHUgLT4gNFxuICB8IEZyaSAtPiA1XG4gIHwgU2F0IC0+IDZcbjs7XG5cbmxldCBpc29fODYwMV93ZWVrZGF5X251bWJlciB0ID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgTW9uIC0+IDFcbiAgfCBUdWUgLT4gMlxuICB8IFdlZCAtPiAzXG4gIHwgVGh1IC0+IDRcbiAgfCBGcmkgLT4gNVxuICB8IFNhdCAtPiA2XG4gIHwgU3VuIC0+IDdcbjs7XG5cbmxldCBudW1fZGF5c19pbl93ZWVrID0gN1xubGV0IHNoaWZ0IHQgaSA9IG9mX2ludF9leG4gKEludC4oICUgKSAodG9faW50IHQgKyBpKSBudW1fZGF5c19pbl93ZWVrKVxuXG5sZXQgbnVtX2RheXMgfmZyb20gfnRvXyA9XG4gIGxldCBkID0gdG9faW50IHRvXyAtIHRvX2ludCBmcm9tIGluXG4gIGlmIEludC4oZCA8IDApIHRoZW4gZCArIG51bV9kYXlzX2luX3dlZWsgZWxzZSBkXG47O1xuXG5sZXQgaXNfc3VuX29yX3NhdCB0ID0gdCA9IFN1biB8fCB0ID0gU2F0XG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFJvdW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUb3dhcmRfcG9zaXRpdmVfaW5maW5pdHlcbiAgICB8IFRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbmxldCBtb2R1bGVfbmFtZSA9IFwiRGlnaXRfc3RyaW5nX2hlbHBlcnNcIlxubGV0IGludDYzX3R3byA9IEludDYzLm9mX2ludCAyXG5sZXQgaW50NjNfdGVuID0gSW50NjMub2ZfaW50IDEwXG5sZXQgaW50NjNfdHdlbnR5ID0gSW50NjMub2ZfaW50IDIwXG5sZXQgaW50NjNfYmlsbGlvbiA9IEludDYzLm9mX2ludCAxXzAwMF8wMDBfMDAwXG5sZXQgbWF4X2JpbGxpb25zID0gSW50NjMuKCAvICkgSW50NjMubWF4X3ZhbHVlIGludDYzX2JpbGxpb25cblxubGV0IHJlYyBkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgbiA9XG4gIGlmIEludDYzLiggPCApIG4gaW50NjNfdGVuXG4gIHRoZW4gMVxuICBlbHNlIEludC5zdWNjIChkaWdpdHNfb2ZfcG9zaXRpdmVfaW50NjMgKEludDYzLiggLyApIG4gaW50NjNfdGVuKSlcbjs7XG5cbmxldCBkaWdpdHNfb2ZfaW50NjNfbWF4X3ZhbHVlID0gZGlnaXRzX29mX3Bvc2l0aXZlX2ludDYzIEludDYzLm1heF92YWx1ZVxuXG5sZXQgcmVjIG1heF9pbnQ2M193aXRoIH5kaWdpdHMgPVxuICBtYXRjaCBkaWdpdHMgd2l0aFxuICB8IDEgLT4gSW50NjMub2ZfaW50IDlcbiAgfCAyIC0+IEludDYzLm9mX2ludCA5OVxuICB8IDMgLT4gSW50NjMub2ZfaW50IDk5OVxuICB8IDQgLT4gSW50NjMub2ZfaW50IDlfOTk5XG4gIHwgNSAtPiBJbnQ2My5vZl9pbnQgOTlfOTk5XG4gIHwgNiAtPiBJbnQ2My5vZl9pbnQgOTk5Xzk5OVxuICB8IDcgLT4gSW50NjMub2ZfaW50IDlfOTk5Xzk5OVxuICB8IDggLT4gSW50NjMub2ZfaW50IDk5Xzk5OV85OTlcbiAgfCA5IC0+IEludDYzLm9mX2ludCA5OTlfOTk5Xzk5OVxuICB8IF8gLT5cbiAgICBpZiBkaWdpdHMgPj0gZGlnaXRzX29mX2ludDYzX21heF92YWx1ZVxuICAgIHRoZW4gSW50NjMubWF4X3ZhbHVlXG4gICAgZWxzZSAoXG4gICAgICBsZXQgYmlsbGlvbnMgPSBJbnQ2My5zdWNjIChtYXhfaW50NjNfd2l0aCB+ZGlnaXRzOihkaWdpdHMgLSA5KSkgaW5cbiAgICAgIEludDYzLnByZWQgKEludDYzLiggKiApIGludDYzX2JpbGxpb24gYmlsbGlvbnMpKVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBsZXQgdW5zYWZlX2NoYXJfb2ZfZGlnaXQgbiA9IENoYXIudW5zYWZlX29mX2ludCAoQ2hhci50b19pbnQgJzAnICsgbilcbiAgbGV0IGRpZ2l0X29mX2NoYXIgY2hhciA9IENoYXIuZ2V0X2RpZ2l0X2V4biBjaGFyXG5cbiAgbGV0IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBCeXRlcy51bnNhZmVfc2V0IGJ5dGVzIHBvcyAodW5zYWZlX2NoYXJfb2ZfZGlnaXQgaW50KVxuICA7O1xuXG4gIGxldCByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSBpbnQgLyAxMCBpblxuICAgIGxldCBvbmVzID0gaW50IC0gKHRlbnMgKiAxMCkgaW5cbiAgICB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIG9uZXM7XG4gICAgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyAxKSBpbnQgaW5cbiAgICB3cml0ZV8xX2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfM19kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgMikgaW50IGluXG4gICAgd3JpdGVfMl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDMpIGludCBpblxuICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV81X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA0KSBpbnQgaW5cbiAgICB3cml0ZV80X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgNSkgaW50IGluXG4gICAgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgICBsZXQgdGVucyA9IHJldHVybl90ZW5zX2FuZF93cml0ZV9vbmVzIGJ5dGVzIH5wb3M6KHBvcyArIDYpIGludCBpblxuICAgIHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgdGVuc1xuICA7O1xuXG4gIGxldCB3cml0ZV84X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gICAgbGV0IHRlbnMgPSByZXR1cm5fdGVuc19hbmRfd3JpdGVfb25lcyBieXRlcyB+cG9zOihwb3MgKyA3KSBpbnQgaW5cbiAgICB3cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIHRlbnNcbiAgOztcblxuICBsZXQgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICAgIGxldCB0ZW5zID0gcmV0dXJuX3RlbnNfYW5kX3dyaXRlX29uZXMgYnl0ZXMgfnBvczoocG9zICsgOCkgaW50IGluXG4gICAgd3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyB0ZW5zXG4gIDs7XG5cbiAgbGV0IHJldHVybl9iaWxsaW9uc19hbmRfd3JpdGVfcmVtYWluZGVyIGJ5dGVzIH5wb3MgaW50NjMgPVxuICAgIGxldCBiaWxsaW9ucyA9IEludDYzLiggLyApIGludDYzIGludDYzX2JpbGxpb24gaW5cbiAgICBsZXQgcmVtYWluZGVyID0gSW50NjMuKCAtICkgaW50NjMgKEludDYzLiggKiApIGJpbGxpb25zIGludDYzX2JpbGxpb24pIGluXG4gICAgd3JpdGVfOV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyAoSW50NjMudG9faW50X2V4biByZW1haW5kZXIpO1xuICAgIGJpbGxpb25zXG4gIDs7XG5cbiAgbGV0IHJlYyB3cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjMgPVxuICAgIG1hdGNoIGRpZ2l0cyB3aXRoXG4gICAgfCAxIC0+IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCAyIC0+IHdyaXRlXzJfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCAzIC0+IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA0IC0+IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA1IC0+IHdyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA2IC0+IHdyaXRlXzZfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA3IC0+IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA4IC0+IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCA5IC0+IHdyaXRlXzlfZGlnaXRfaW50IGJ5dGVzIH5wb3MgKEludDYzLnRvX2ludF9leG4gaW50NjMpXG4gICAgfCBfIC0+XG4gICAgICBsZXQgZGlnaXRzX29mX2JpbGxpb25zID0gZGlnaXRzIC0gOSBpblxuICAgICAgbGV0IGJpbGxpb25zID1cbiAgICAgICAgcmV0dXJuX2JpbGxpb25zX2FuZF93cml0ZV9yZW1haW5kZXIgYnl0ZXMgfnBvczoocG9zICsgZGlnaXRzX29mX2JpbGxpb25zKSBpbnQ2M1xuICAgICAgaW5cbiAgICAgIHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfYmlsbGlvbnMgYmlsbGlvbnNcbiAgOztcblxuICBsZXQgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9IGRpZ2l0X29mX2NoYXIgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyBwb3MpXG5cbiAgbGV0IHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgMSlcbiAgOztcblxuICBsZXQgcmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyAyKVxuICA7O1xuXG4gIGxldCByZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDMpXG4gIDs7XG5cbiAgbGV0IHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNClcbiAgOztcblxuICBsZXQgcmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA1KVxuICA7O1xuXG4gIGxldCByZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgICAocmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyAqIDEwKSArIHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3M6KHBvcyArIDYpXG4gIDs7XG5cbiAgbGV0IHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICAgIChyZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zICogMTApICsgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvczoocG9zICsgNylcbiAgOztcblxuICBsZXQgcmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gICAgKHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgKiAxMCkgKyByZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyA4KVxuICA7O1xuXG4gIGxldCByYWlzZV9pbnQ2M19vdmVyZmxvdyBuYW1lID1cbiAgICBpbnZhbGlkX2FyZ2YgXCIlcy4lczogb3ZlcmZsb3cgcmVhZGluZyBpbnQ2M1wiIG1vZHVsZV9uYW1lIG5hbWUgKClcbiAgOztcblxuICBsZXQgcmVjIHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gICAgbWF0Y2ggZGlnaXRzIHdpdGhcbiAgICB8IDEgLT4gSW50NjMub2ZfaW50IChyZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgMiAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCAzIC0+IEludDYzLm9mX2ludCAocmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDQgLT4gSW50NjMub2ZfaW50IChyZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgNSAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA2IC0+IEludDYzLm9mX2ludCAocmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IDcgLT4gSW50NjMub2ZfaW50IChyZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zKVxuICAgIHwgOCAtPiBJbnQ2My5vZl9pbnQgKHJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MpXG4gICAgfCA5IC0+IEludDYzLm9mX2ludCAocmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvcylcbiAgICB8IF8gLT5cbiAgICAgIGxldCBkaWdpdHNfb2ZfYmlsbGlvbnMgPSBkaWdpdHMgLSA5IGluXG4gICAgICBsZXQgYmlsbGlvbnMgPSByZWFkX2ludDYzIHN0cmluZyB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX2JpbGxpb25zIGluXG4gICAgICBsZXQgcmVtYWluZGVyID1cbiAgICAgICAgSW50NjMub2ZfaW50IChyZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zOihwb3MgKyBkaWdpdHNfb2ZfYmlsbGlvbnMpKVxuICAgICAgaW5cbiAgICAgIGlmIEludDYzLiggPiApIGJpbGxpb25zIG1heF9iaWxsaW9ucyB0aGVuIHJhaXNlX2ludDYzX292ZXJmbG93IFwicmVhZF9pbnQ2M1wiO1xuICAgICAgbGV0IHN1bSA9IEludDYzLiggKyApIChJbnQ2My4oICogKSBiaWxsaW9ucyBpbnQ2M19iaWxsaW9uKSByZW1haW5kZXIgaW5cbiAgICAgIGlmIEludDYzLiggPCApIHN1bSBJbnQ2My56ZXJvIHRoZW4gcmFpc2VfaW50NjNfb3ZlcmZsb3cgXCJyZWFkX2ludDYzXCI7XG4gICAgICBzdW1cbiAgOztcblxuICBsZXQgZGl2aWRlX2FuZF9yb3VuZF91cCB+bnVtZXJhdG9yIH5kZW5vbWluYXRvciA9XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIChudW1lcmF0b3IgKyBkZW5vbWluYXRvciAtIEludDYzLm9uZSkgLyUgZGVub21pbmF0b3JcbiAgOztcblxuICBsZXQgcmFpc2VfaW52YWxpZF9kZWNpbWFsIG5hbWUgPVxuICAgIGludmFsaWRfYXJnZiBcIiVzLiVzOiBpbnZhbGlkIGRlY2ltYWwgY2hhcmFjdGVyXCIgbW9kdWxlX25hbWUgbmFtZSAoKVxuICA7O1xuXG4gICgqIFJlYWRzIHRoZSBwb3J0aW9uIG9mIHN0cmluZyBiZXR3ZWVuIFtwb3NdIGFuZCBbcG9zK2RlY2ltYWxzLTFdLCBpbmNsdXNpdmUsIGFuZFxuICAgICBpbnRlcnBlcmV0cyBpdCBhcyBhIHBvc2l0aXZlIGRlY2ltYWwgcGFydCBvZiBhIG51bWJlciwgd2hpY2ggd2UgY2FsbCBbeF0uXG5cbiAgICAgTGV0IFtpXSBhbmQgW3JdIGJlIHRoZSBpbnRlZ2VyIHBhcnQgYW5kIHJlbWFpbmluZyBmcmFjdGlvbmFsIHBhcnQgb2ZcbiAgICAgW3ggKiBzY2FsZSAvIGRpdmlzb3JdLlxuXG4gICAgIElmIFtyIDwgcm91bmRfYXQvZGl2aXNvcl0sIHJldHVybnMgW2ldLlxuICAgICBJZiBbciA9IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpXSBvciBbaSsxXSBiYXNlZCBvbiBbcm91bmRfZXhhY3RdLlxuICAgICBJZiBbciA+IHJvdW5kX2F0L2Rpdmlzb3JdLCByZXR1cm5zIFtpKzFdLlxuXG4gICAgIEFzc3VtZXMgd2l0aG91dCBjaGVja2luZyB0aGF0IFtzY2FsZV0gYW5kIFtkaXZpc29yXSBhcmUgYm90aCBwb3NpdGl2ZSBhbmRcbiAgICAgbGVzcyB0aGFuIFtJbnQ2My5tYXhfdmFsdWUgLyAxMF0gKHRvIGF2b2lkIGludGVybmFsIG92ZXJmbG93IGR1cmluZyB0aGUgYWxnb3JpdGhtXG4gICAgIHdoZW4gbXVsdGlwbHlpbmcgYnkgMTApLCBhbmQgdGhhdCBbcm91bmRfYXQgPj0gMF0gYW5kIFtyb3VuZF9hdCA8IGRpdmlzb3JdLiAqKVxuICBsZXQgcmVhZF9pbnQ2M19kZWNpbWFsX3JvdW5kZWRcbiAgICAgICAgc3RyaW5nXG4gICAgICAgIH5wb3M6c3RhcnRcbiAgICAgICAgfmRlY2ltYWxzXG4gICAgICAgIH5zY2FsZVxuICAgICAgICB+ZGl2aXNvclxuICAgICAgICB+cm91bmRfYXRcbiAgICAgICAgfnJvdW5kX2V4YWN0XG4gICAgICAgIH5hbGxvd191bmRlcnNjb3JlXG4gICAgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgdW50aWwgPSBJbnQuKCArICkgc3RhcnQgZGVjaW1hbHMgaW5cbiAgICAoKiBUaGUgbG9vcCBpbnZhcmlhbnQgaXMgdGhhdCBlYWNoIGl0ZXJhdGlvbiwgd2Ugc3RyaXAgb2ZmIHRoZSBuZXh0IGRlY2ltYWwgZGlnaXQgYW5kXG4gICAgICAgdXBkYXRlIFtzdW1dLCBbcm91bmRfYXRdLCBhbmQgW2Rpdmlzb3JdIHN1Y2ggdGhhdCB0aGUgZGVzaXJlZCByZXN1bHQgaXM6XG5cbiAgICAgICBbIHN1bSArIHJvdW5kKHJlbWFpbmluZ19kaWdpdHNfb2ZfeF9wYXJzZWRfYXNfZGVjaW1hbCAqIHNjYWxlIC8gZGl2aXNvcikgXVxuICAgICAgIHdoZXJlIFwicm91bmRcIiByb3VuZHMgYmFzZWQgb24gdGhlIG5ldyB2YWx1ZSBvZiBbcm91bmRfYXRdLlxuICAgICopXG4gICAgbGV0IGRpdmlzb3IgPSByZWYgZGl2aXNvciBpblxuICAgIGxldCByb3VuZF9hdCA9IHJlZiByb3VuZF9hdCBpblxuICAgIGxldCBzdW0gPSByZWYgSW50NjMuemVybyBpblxuICAgIGxldCBwb3MgPSByZWYgc3RhcnQgaW5cbiAgICAoKiBTdG9wIGlmIHdlIHJ1biBvdXQgb2YgY2hhcmFjdGVycywgb3IgaWYgZnVydGhlciBkaWdpdHMgY2Fubm90IGluY3JlYXNlIG91ciBzdW0uICopXG4gICAgd2hpbGUgSW50LiggPD4gKSAhcG9zIHVudGlsICYmICFyb3VuZF9hdCA8IHNjYWxlIGRvXG4gICAgICAobWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgIHwgJzAnIC4uICc5JyBhcyBjaGFyIC0+XG4gICAgICAgICBsZXQgZGlnaXQgPSBJbnQ2My5vZl9pbnQgKGRpZ2l0X29mX2NoYXIgY2hhcikgaW5cbiAgICAgICAgICgqIEV2ZXJ5IG5ldyBkZWNpbWFsIHBsYWNlIGltcGxpY2l0bHkgc2NhbGVzIG91ciBudW1lcmF0b3IgYnkgYSBmYWN0b3Igb2YgdGVuLFxuICAgICAgICAgICAgc28gbXVzdCBhbHNvIGVmZmVjdGl2ZWx5IHNjYWxlIG91ciBkZW5vbWluYXRvci5cblxuICAgICAgICAgICAgMC5hYmNkZWYgKiBzY2FsZS9kaXZpc29yICAgICAgICBbcm91bmQgYXQgcm91bmRfYXRdXG4gICAgICAgICAgICA9IGEuYmNkZWYgKiBzY2FsZS8oZGl2aXNvcioxMCkgIFtyb3VuZCBhdCByb3VuZF9hdCoxMF1cblxuICAgICAgICAgICAgVGhlbiByZWRlZmluZSBkaXZpc29yIDo9IGRpdmlzb3IqMTAgYW5kIHJvdW5kX2F0IDo9IHJvdW5kX2F0KjEwLCBzbyB3ZSBoYXZlOlxuICAgICAgICAgICAgYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgW3JvdW5kIGF0IHJvdW5kX2F0XSAqKVxuICAgICAgICAgZGl2aXNvciA6PSAhZGl2aXNvciAqIGludDYzX3RlbjtcbiAgICAgICAgIHJvdW5kX2F0IDo9ICFyb3VuZF9hdCAqIGludDYzX3RlbjtcbiAgICAgICAgICgqIE5leHQgd2Ugd29yayBvdXQgdGhlIHBhcnQgb2YgdGhlIHN1bSBiYXNlZCBvbiBvdXIgY3VycmVudCBkaWdpdDpcblxuICAgICAgICAgICAgYS5iY2RlZiAqIHNjYWxlL2Rpdmlzb3IgW3JvdW5kIGF0IHJvdW5kX2F0XVxuICAgICAgICAgICAgPSBhLmJjZGVmICogc2NhbGUvZGl2aXNvciAtIHJvdW5kX2F0IC8gZGl2aXNvciAgW3JvdW5kIGF0IDBdXG4gICAgICAgICAgICA9IChhKnNjYWxlLXJvdW5kX2F0KSAvIGRpdmlzb3IgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IDBdXG5cbiAgICAgICAgICAgIERlY29tcG9zZSB0aGUgZmlyc3QgdGVybSBpbnRvIGludGVnZXIgYW5kIHJlbWFpbmRlciBwYXJ0cy5cbiAgICAgICAgICAgIFNpbmNlIHdlIGhhdmUgYWxyZWFkeSBzdWJ0cmFjdGVkIFtyb3VuZF9hdF0sIHdlIGRlY29tcG9zZSBiYXNlZFxuICAgICAgICAgICAgb24gdGhlIGNlaWxpbmcgcmF0aGVyIHRoYW4gdGhlIGZsb29yIG9mIHRoZSBkaXZpc2lvbixcbiAgICAgICAgICAgIGUuZy4gNS8zIHdvdWxkIGRlY29tcG9zZSBhcyAyICsgKC0xKS8zLCByYXRoZXIgdGhhbiAxICsgKDIvMykuXG5cbiAgICAgICAgICAgID0gaW5jcmVtZW50ICsgcmVtYWluZGVyL2Rpdmlzb3IgKyAwLmJjZGVmICogc2NhbGUvZGl2aXNvciAgW3JvdW5kIGF0IDBdXG4gICAgICAgICAgICA9IGluY3JlbWVudCArIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgLXJlbWFpbmRlcl1cbiAgICAgICAgICopXG4gICAgICAgICBsZXQgbnVtZXJhdG9yID0gKGRpZ2l0ICogc2NhbGUpIC0gIXJvdW5kX2F0IGluXG4gICAgICAgICBsZXQgZGVub21pbmF0b3IgPSAhZGl2aXNvciBpblxuICAgICAgICAgbGV0IGluY3JlbWVudCA9IGRpdmlkZV9hbmRfcm91bmRfdXAgfm51bWVyYXRvciB+ZGVub21pbmF0b3IgaW5cbiAgICAgICAgIGxldCByZW1haW5kZXIgPSBudW1lcmF0b3IgLSAoaW5jcmVtZW50ICogZGVub21pbmF0b3IpIGluXG4gICAgICAgICAoKiBOb3cganVzdCBhY2N1bXVsYXRlIHRoZSBuZXcgaW5jcmVtZW50IGFuZCBpdGVyYXRlIG9uIHRoZSByZW1haW5pbmcgcGFydDpcbiAgICAgICAgICAgIDAuYmNkZWYgKiBzY2FsZS9kaXZpc29yICBbcm91bmQgYXQgLXJlbWFpbmRlcl0uXG5cbiAgICAgICAgICAgIFNpbmNlIFtyZW1haW5kZXJdIGlzIGJldHdlZW4gWy0oZGl2aXNvci0xKV0gYW5kIFswXSBpbmNsdXNpdmUsIHRoZSBuZXdcbiAgICAgICAgICAgIFtyb3VuZF9hdF0gd2lsbCBiZSB3aXRoaW4gWzBdIGFuZCBbZGl2aXNvci0xXSBpbmNsdXNpdmUuICopXG4gICAgICAgICByb3VuZF9hdCA6PSAtcmVtYWluZGVyO1xuICAgICAgICAgc3VtIDo9ICFzdW0gKyBpbmNyZW1lbnQ7XG4gICAgICAgICAoKiBUaGlzIGxpbmUgcHJldmVudHMgdGhlIGRpdmlzb3IgZnJvbSBncm93aW5nIHdpdGhvdXQgYm91bmQgYW5kIG92ZXJmbG93aW5nLiBJZlxuICAgICAgICAgICAgdGhpcyBsaW5lIGFjdHVhbGx5IGNoYW5nZXMgdGhlIGRpdmlzb3IsIHRoZW4gdGhlIGRpdmlzb3IgaXMgbGFyZ2VyIHRoYW4gdGhlXG4gICAgICAgICAgICBzY2FsZSwgc28gdGhlIHN1bSB3aWxsIGluY3JlYXNlIGlmIGFuZCBvbmx5IGlmIFtwYXJzZWRfcmVtYWluaW5nX2RpZ2l0cyAqXG4gICAgICAgICAgICBzY2FsZSAoPiBvciA+PSkgcm91bmRfYXRdLCB3aGljaCBkb2Vzbid0IGRlcGVuZCBvbiBob3cgbXVjaCBsYXJnZXIgdGhlXG4gICAgICAgICAgICBkaXZpc29yIGlzLiBTbyB0aGlzIGNoYW5nZSBpcyBzYWZlLiAqKVxuICAgICAgICAgZGl2aXNvciA6PSBJbnQ2My5taW4gZGVub21pbmF0b3Igc2NhbGVcbiAgICAgICB8ICdfJyB3aGVuIGFsbG93X3VuZGVyc2NvcmUgLT4gKClcbiAgICAgICB8IF8gLT4gcmFpc2VfaW52YWxpZF9kZWNpbWFsIFwicmVhZF9pbnQ2M19kZWNpbWFsXCIpO1xuICAgICAgcG9zIDo9IEludC5zdWNjICFwb3NcbiAgICBkb25lO1xuICAgIGlmICFyb3VuZF9hdCA9IHplcm9cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHJvdW5kX2V4YWN0IHdpdGhcbiAgICAgIHwgUm91bmQuVG93YXJkX25lZ2F0aXZlX2luZmluaXR5IC0+ICgpXG4gICAgICB8IFJvdW5kLlRvd2FyZF9wb3NpdGl2ZV9pbmZpbml0eSAtPiBzdW0gOj0gIXN1bSArIEludDYzLm9uZSk7XG4gICAgIXN1bVxuICA7O1xuXG4gIGxldCByZWFkX2ludDYzX2RlY2ltYWwgc3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZSB+cm91bmRfdGllcyB+YWxsb3dfdW5kZXJzY29yZSA9XG4gICAgcmVhZF9pbnQ2M19kZWNpbWFsX3JvdW5kZWRcbiAgICAgIHN0cmluZ1xuICAgICAgfnBvc1xuICAgICAgfmRlY2ltYWxzXG4gICAgICB+c2NhbGU6KEludDYzLiggKiApIHNjYWxlIGludDYzX3R3bylcbiAgICAgIH5kaXZpc29yOmludDYzX3R3b1xuICAgICAgfnJvdW5kX2F0OkludDYzLm9uZVxuICAgICAgfnJvdW5kX2V4YWN0OnJvdW5kX3RpZXNcbiAgICAgIH5hbGxvd191bmRlcnNjb3JlXG4gIDs7XG5lbmRcblxubGV0IG1pbl9zY2FsZSA9IEludDYzLm9uZVxubGV0IG1heF9zY2FsZSA9IEludDYzLiggLyApIEludDYzLm1heF92YWx1ZSBpbnQ2M190d2VudHlcblxubGV0IHJhaXNlX25lZ2F0aXZlX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGRlY2ltYWxzPSVkIGlzIG5lZ2F0aXZlXCIgbW9kdWxlX25hbWUgbmFtZSBkZWNpbWFscyAoKVxuOztcblxubGV0IHJhaXNlX25vbl9wb3NpdGl2ZV9kaWdpdHMgbmFtZSB+ZGlnaXRzID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6IGRpZ2l0cz0lZCBpcyBub3QgYSBwb3NpdGl2ZSBudW1iZXJcIiBtb2R1bGVfbmFtZSBuYW1lIGRpZ2l0cyAoKVxuOztcblxubGV0IHJhaXNlX3NjYWxlX291dF9vZl9ib3VuZHMgbmFtZSB+c2NhbGUgPVxuICBpbnZhbGlkX2FyZ2ZcbiAgICBcIiVzLiVzOiBzY2FsZT0lTGQgb3V0IG9mIHJhbmdlIFslTGQsICVMZF1cIlxuICAgIG1vZHVsZV9uYW1lXG4gICAgbmFtZVxuICAgIChJbnQ2My50b19pbnQ2NCBzY2FsZSlcbiAgICAoSW50NjMudG9faW50NjQgbWluX3NjYWxlKVxuICAgIChJbnQ2My50b19pbnQ2NCBtYXhfc2NhbGUpXG4gICAgKClcbjs7XG5cbmxldCByYWlzZV9wb3Nfb3V0X29mX2JvdW5kcyBuYW1lIH5sZW4gfnBvcyB+ZGlnaXRzID1cbiAgaWYgcG9zIDwgMCB8fCBwb3MgPj0gbGVuXG4gIHRoZW5cbiAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgIFwiJXMuJXM6IHBvcz0lZCBvdXQgb2YgcmFuZ2UgZm9yIHN0cmluZyBvZiBsZW5ndGggJWRcIlxuICAgICAgbW9kdWxlX25hbWVcbiAgICAgIG5hbWVcbiAgICAgIHBvc1xuICAgICAgbGVuXG4gICAgICAoKVxuICBlbHNlXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcIiVzLiVzOiAlZCBkaWdpdHMgZG8gbm90IGZpdCBhdCBwb3MgJWQgaW4gc3RyaW5nIG9mIGxlbmd0aCAlZFwiXG4gICAgICBtb2R1bGVfbmFtZVxuICAgICAgbmFtZVxuICAgICAgZGlnaXRzXG4gICAgICBwb3NcbiAgICAgIGxlblxuICAgICAgKClcbjs7XG5cbmxldCByYWlzZV9pbnRfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50ID1cbiAgaW52YWxpZF9hcmdmIFwiJXMuJXM6ICVkIG91dCBvZiByYW5nZSBbMCwgJWRdXCIgbW9kdWxlX25hbWUgbmFtZSBpbnQgbWF4ICgpXG47O1xuXG5sZXQgcmFpc2VfaW50NjNfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50NjMgPVxuICBpbnZhbGlkX2FyZ2YgIVwiJXMuJXM6ICV7SW50NjN9IG91dCBvZiByYW5nZSBbMCwgJXtJbnQ2M31dXCIgbW9kdWxlX25hbWUgbmFtZSBpbnQ2MyBtYXggKClcbjs7XG5cbmxldCBjaGVja19kZWNpbWFscyBuYW1lIH5kZWNpbWFscyA9XG4gIGlmIGRlY2ltYWxzIDwgMCB0aGVuIHJhaXNlX25lZ2F0aXZlX2RlY2ltYWxzIG5hbWUgfmRlY2ltYWxzXG47O1xuXG5sZXQgY2hlY2tfZGlnaXRzIG5hbWUgfmRpZ2l0cyA9IGlmIGRpZ2l0cyA8IDEgdGhlbiByYWlzZV9ub25fcG9zaXRpdmVfZGlnaXRzIG5hbWUgfmRpZ2l0c1xuXG5sZXQgY2hlY2tfcG9zIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHMgPVxuICBpZiBwb3MgPCAwIHx8IHBvcyArIGRpZ2l0cyA+IGxlbiB0aGVuIHJhaXNlX3Bvc19vdXRfb2ZfYm91bmRzIG5hbWUgfmxlbiB+cG9zIH5kaWdpdHNcbjs7XG5cbmxldCBjaGVja19pbnQgbmFtZSB+bWF4IGludCA9XG4gIGlmIGludCA8IDAgfHwgaW50ID4gbWF4IHRoZW4gcmFpc2VfaW50X291dF9vZl9ib3VuZHMgbmFtZSB+bWF4IGludFxuOztcblxubGV0IGNoZWNrX2ludDYzIG5hbWUgfm1heCBpbnQ2MyA9XG4gIGlmIEludDYzLiggPCApIGludDYzIEludDYzLnplcm8gfHwgSW50NjMuKCA+ICkgaW50NjMgbWF4XG4gIHRoZW4gcmFpc2VfaW50NjNfb3V0X29mX2JvdW5kcyBuYW1lIH5tYXggaW50NjNcbjs7XG5cbmxldCBjaGVja19zY2FsZSBuYW1lIH5zY2FsZSA9XG4gIGlmIEludDYzLiggPCApIHNjYWxlIG1pbl9zY2FsZSB8fCBJbnQ2My4oID4gKSBzY2FsZSBtYXhfc2NhbGVcbiAgdGhlbiByYWlzZV9zY2FsZV9vdXRfb2ZfYm91bmRzIG5hbWUgfnNjYWxlXG47O1xuXG5sZXQgY2hlY2tfd3JpdGUgbmFtZSB+Ynl0ZXMgfnBvcyB+ZGlnaXRzIH5tYXggaW50ID1cbiAgbGV0IGxlbiA9IEJ5dGVzLmxlbmd0aCBieXRlcyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvcztcbiAgY2hlY2tfaW50IG5hbWUgfm1heCBpbnRcbjs7XG5cbmxldCBjaGVja193cml0ZTYzIG5hbWUgfmJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gIGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHM7XG4gIGxldCBtYXggPSBtYXhfaW50NjNfd2l0aCB+ZGlnaXRzIGluXG4gIGxldCBsZW4gPSBCeXRlcy5sZW5ndGggYnl0ZXMgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3M7XG4gIGNoZWNrX2ludDYzIG5hbWUgfm1heCBpbnQ2M1xuOztcblxubGV0IHdyaXRlXzFfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8xX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MSB+bWF4OjkgaW50O1xuICBVbnNhZmUud3JpdGVfMV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfMl9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjIgfm1heDo5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8yX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzNfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV8zX2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6MyB+bWF4Ojk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV8zX2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV80X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NCB+bWF4OjlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzRfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNV9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzVfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo1IH5tYXg6OTlfOTk5IGludDtcbiAgVW5zYWZlLndyaXRlXzVfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50XG47O1xuXG5sZXQgd3JpdGVfNl9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnQgPVxuICBjaGVja193cml0ZSBcIndyaXRlXzZfZGlnaXRfaW50XCIgfmJ5dGVzIH5wb3MgfmRpZ2l0czo2IH5tYXg6OTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV82X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzdfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV83X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6NyB+bWF4OjlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV83X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlXzhfZGlnaXRfaW50IGJ5dGVzIH5wb3MgaW50ID1cbiAgY2hlY2tfd3JpdGUgXCJ3cml0ZV84X2RpZ2l0X2ludFwiIH5ieXRlcyB+cG9zIH5kaWdpdHM6OCB+bWF4Ojk5Xzk5OV85OTkgaW50O1xuICBVbnNhZmUud3JpdGVfOF9kaWdpdF9pbnQgYnl0ZXMgfnBvcyBpbnRcbjs7XG5cbmxldCB3cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludCA9XG4gIGNoZWNrX3dyaXRlIFwid3JpdGVfOV9kaWdpdF9pbnRcIiB+Ynl0ZXMgfnBvcyB+ZGlnaXRzOjkgfm1heDo5OTlfOTk5Xzk5OSBpbnQ7XG4gIFVuc2FmZS53cml0ZV85X2RpZ2l0X2ludCBieXRlcyB+cG9zIGludFxuOztcblxubGV0IHdyaXRlX2ludDYzIGJ5dGVzIH5wb3MgfmRpZ2l0cyBpbnQ2MyA9XG4gIGNoZWNrX3dyaXRlNjMgXCJ3cml0ZV9pbnQ2M1wiIH5ieXRlcyB+cG9zIH5kaWdpdHMgaW50NjM7XG4gIFVuc2FmZS53cml0ZV9pbnQ2MyBieXRlcyB+cG9zIH5kaWdpdHMgaW50NjNcbjs7XG5cbmxldCBjaGVja19yZWFkIG5hbWUgfnN0cmluZyB+cG9zIH5kaWdpdHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfcG9zIG5hbWUgfmRpZ2l0cyB+bGVuIH5wb3Ncbjs7XG5cbmxldCBjaGVja19yZWFkNjMgbmFtZSB+c3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGNoZWNrX2RpZ2l0cyBuYW1lIH5kaWdpdHM7XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzIH5sZW4gfnBvc1xuOztcblxubGV0IGNoZWNrX3JlYWQ2M19kZWNpbWFsIG5hbWUgfnN0cmluZyB+cG9zIH5kZWNpbWFscyB+c2NhbGUgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgY2hlY2tfZGVjaW1hbHMgbmFtZSB+ZGVjaW1hbHM7XG4gIGNoZWNrX3NjYWxlIG5hbWUgfnNjYWxlO1xuICBjaGVja19wb3MgbmFtZSB+ZGlnaXRzOmRlY2ltYWxzIH5sZW4gfnBvc1xuOztcblxubGV0IHJlYWRfMV9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF8xX2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjE7XG4gIFVuc2FmZS5yZWFkXzFfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzJfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6MjtcbiAgVW5zYWZlLnJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzNfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfM19kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czozO1xuICBVbnNhZmUucmVhZF8zX2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfNF9kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF80X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjQ7XG4gIFVuc2FmZS5yZWFkXzRfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF81X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzVfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6NTtcbiAgVW5zYWZlLnJlYWRfNV9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzZfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfNl9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo2O1xuICBVbnNhZmUucmVhZF82X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfN19kaWdpdF9pbnQgc3RyaW5nIH5wb3MgPVxuICBjaGVja19yZWFkIFwicmVhZF83X2RpZ2l0X2ludFwiIH5zdHJpbmcgfnBvcyB+ZGlnaXRzOjc7XG4gIFVuc2FmZS5yZWFkXzdfZGlnaXRfaW50IHN0cmluZyB+cG9zXG47O1xuXG5sZXQgcmVhZF84X2RpZ2l0X2ludCBzdHJpbmcgfnBvcyA9XG4gIGNoZWNrX3JlYWQgXCJyZWFkXzhfZGlnaXRfaW50XCIgfnN0cmluZyB+cG9zIH5kaWdpdHM6ODtcbiAgVW5zYWZlLnJlYWRfOF9kaWdpdF9pbnQgc3RyaW5nIH5wb3Ncbjs7XG5cbmxldCByZWFkXzlfZGlnaXRfaW50IHN0cmluZyB+cG9zID1cbiAgY2hlY2tfcmVhZCBcInJlYWRfOV9kaWdpdF9pbnRcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0czo5O1xuICBVbnNhZmUucmVhZF85X2RpZ2l0X2ludCBzdHJpbmcgfnBvc1xuOztcblxubGV0IHJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0cyA9XG4gIGNoZWNrX3JlYWQ2MyBcInJlYWRfaW50NjNcIiB+c3RyaW5nIH5wb3MgfmRpZ2l0cztcbiAgVW5zYWZlLnJlYWRfaW50NjMgc3RyaW5nIH5wb3MgfmRpZ2l0c1xuOztcblxubGV0IHJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlID1cbiAgY2hlY2tfcmVhZDYzX2RlY2ltYWwgXCJyZWFkX2ludDYzX2RlY2ltYWxcIiB+c3RyaW5nIH5wb3MgfmRlY2ltYWxzIH5zY2FsZTtcbiAgVW5zYWZlLnJlYWRfaW50NjNfZGVjaW1hbCBzdHJpbmcgfnBvcyB+ZGVjaW1hbHMgfnNjYWxlIH5yb3VuZF90aWVzIH5hbGxvd191bmRlcnNjb3JlXG47O1xuIiwib3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgSmFuXG4gICAgICB8IEZlYlxuICAgICAgfCBNYXJcbiAgICAgIHwgQXByXG4gICAgICB8IE1heVxuICAgICAgfCBKdW5cbiAgICAgIHwgSnVsXG4gICAgICB8IEF1Z1xuICAgICAgfCBTZXBcbiAgICAgIHwgT2N0XG4gICAgICB8IE5vdlxuICAgICAgfCBEZWNcbiAgICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVjaywgdmFyaWFudHNdXG5cbiAgICBsZXQgZmFpbHdpdGhmID0gUHJpbnRmLmZhaWx3aXRoZlxuXG4gICAgbGV0IG9mX2ludF9leG4gaSA6IHQgPVxuICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICB8IDEgLT4gSmFuXG4gICAgICB8IDIgLT4gRmViXG4gICAgICB8IDMgLT4gTWFyXG4gICAgICB8IDQgLT4gQXByXG4gICAgICB8IDUgLT4gTWF5XG4gICAgICB8IDYgLT4gSnVuXG4gICAgICB8IDcgLT4gSnVsXG4gICAgICB8IDggLT4gQXVnXG4gICAgICB8IDkgLT4gU2VwXG4gICAgICB8IDEwIC0+IE9jdFxuICAgICAgfCAxMSAtPiBOb3ZcbiAgICAgIHwgMTIgLT4gRGVjXG4gICAgICB8IF8gLT4gZmFpbHdpdGhmIFwiTW9udGgub2ZfaW50X2V4biAlZFwiIGkgKClcbiAgICA7O1xuXG4gICAgbGV0IG9mX2ludCBpID1cbiAgICAgIHRyeSBTb21lIChvZl9pbnRfZXhuIGkpIHdpdGhcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgOztcblxuICAgIGxldCB0b19pbnQgKHQgOiB0KSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgSmFuIC0+IDFcbiAgICAgIHwgRmViIC0+IDJcbiAgICAgIHwgTWFyIC0+IDNcbiAgICAgIHwgQXByIC0+IDRcbiAgICAgIHwgTWF5IC0+IDVcbiAgICAgIHwgSnVuIC0+IDZcbiAgICAgIHwgSnVsIC0+IDdcbiAgICAgIHwgQXVnIC0+IDhcbiAgICAgIHwgU2VwIC0+IDlcbiAgICAgIHwgT2N0IC0+IDEwXG4gICAgICB8IE5vdiAtPiAxMVxuICAgICAgfCBEZWMgLT4gMTJcbiAgICA7O1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50KVxuICAgICAgICAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgIGxldCB0b19iaW5hYmxlIHQgPSB0b19pbnQgdCAtIDFcbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSBpID0gb2ZfaW50X2V4biAoaSArIDEpXG4gICAgICAgIGVuZClcblxuICAgIGluY2x1ZGUgKHZhbCBDb21wYXJhdG9yLlN0YWJsZS5WMS5tYWtlIH5jb21wYXJlIH5zZXhwX29mX3QpXG4gIGVuZFxuZW5kXG5cbmxldCBudW1fbW9udGhzID0gMTJcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGFibGUuVjFcblxuICBsZXQgYWxsID0gWyBKYW47IEZlYjsgTWFyOyBBcHI7IE1heTsgSnVuOyBKdWw7IEF1ZzsgU2VwOyBPY3Q7IE5vdjsgRGVjIF1cbiAgbGV0IGhhc2ggPSB0b19pbnRcbmVuZFxuXG5pbmNsdWRlIFRcblxuaW5jbHVkZSAoXG4gIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgbW9udGhzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgaW50cy4gIEZyb20gMTA4LjA3XG4gICAgICAgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgICAgcHJldHR5IGZvcm1hdCB3ZXJlIGFjY2VwdGVkIGFzIGlucHV0LiAgRnJvbSAxMDkuMTQgb24sIHRoZSBvdXRwdXQgZm9ybWF0IHdhc1xuICAgICAgIGNoYW5nZWQgZnJvbSByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmVcbiAgICAgICBtb3N0IHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgICByYXcuICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IEludC50X29mX3NleHAgc2V4cCkgd2l0aFxuICAgICAgfCBTb21lIGkgLT4gb2ZfaW50X2V4biAoaSArIDEpXG4gICAgICB8IE5vbmUgLT4gVC50X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZClcblxuKCogUmVwbGFjZSB0aGUgb3ZlcnJpZGVuIHNleHAgY29udmVydGVycyBmcm9tIFtDb21wYXJhYmxlLk1ha2VfYmluYWJsZV0gd2l0aCB0aGUgb3JkaW5hcnlcbiAgIHN5bWJvbGljIGNvbnZlcnRlcnMuICopXG5sZXQgc2V4cF9vZl90ID0gVC5zZXhwX29mX3RcbmxldCB0X29mX3NleHAgPSBULnRfb2Zfc2V4cFxubGV0IHNoaWZ0IHQgaSA9IG9mX2ludF9leG4gKDEgKyBJbnQuKCAlICkgKHRvX2ludCB0IC0gMSArIGkpIG51bV9tb250aHMpXG5cbmxldCBhbGxfc3RyaW5ncyA9XG4gIGxhenlcbiAgICAoQXJyYXkub2ZfbGlzdCAoTGlzdC5tYXAgYWxsIH5mOihmdW4gdmFyaWFudCAtPiBTZXhwLnRvX3N0cmluZyAoc2V4cF9vZl90IHZhcmlhbnQpKSkpXG47O1xuXG5sZXQgdG9fc3RyaW5nICh0IDogdCkgPVxuICBsZXQgYWxsX3N0cmluZ3MgPSBMYXp5LmZvcmNlIGFsbF9zdHJpbmdzIGluXG4gIGFsbF9zdHJpbmdzLih0b19pbnQgdCAtIDEpXG47O1xuXG5sZXQgb2Zfc3RyaW5nID1cbiAgbGV0IHRhYmxlID1cbiAgICBsYXp5XG4gICAgICAobGV0IG1vZHVsZSBUID0gU3RyaW5nLlRhYmxlIGluXG4gICAgICAgbGV0IHRhYmxlID0gVC5jcmVhdGUgfnNpemU6bnVtX21vbnRocyAoKSBpblxuICAgICAgIEFycmF5Lml0ZXJpIChMYXp5LmZvcmNlIGFsbF9zdHJpbmdzKSB+ZjooZnVuIGkgcyAtPlxuICAgICAgICAgbGV0IHQgPSBvZl9pbnRfZXhuIChpICsgMSkgaW5cbiAgICAgICAgIEhhc2h0Ymwuc2V0IHRhYmxlIH5rZXk6cyB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLmxvd2VyY2FzZSBzKSB+ZGF0YTp0O1xuICAgICAgICAgSGFzaHRibC5zZXQgdGFibGUgfmtleTooU3RyaW5nLnVwcGVyY2FzZSBzKSB+ZGF0YTp0KTtcbiAgICAgICB0YWJsZSlcbiAgaW5cbiAgZnVuIHN0ciAtPlxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCAoTGF6eS5mb3JjZSB0YWJsZSkgc3RyIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIkludmFsaWQgbW9udGg6ICVzXCIgc3RyICgpXG47O1xuXG5tb2R1bGUgRXhwb3J0ID0gc3RydWN0XG4gIHR5cGUgbW9udGggPSB0ID1cbiAgICB8IEphblxuICAgIHwgRmViXG4gICAgfCBNYXJcbiAgICB8IEFwclxuICAgIHwgTWF5XG4gICAgfCBKdW5cbiAgICB8IEp1bFxuICAgIHwgQXVnXG4gICAgfCBTZXBcbiAgICB8IE9jdFxuICAgIHwgTm92XG4gICAgfCBEZWNcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiBEaWdpdF9zdHJpbmdfaGVscGVyc1xuXG5sZXQgaXNfbGVhcF95ZWFyIH55ZWFyID0gKHllYXIgbW9kIDQgPSAwICYmIG5vdCAoeWVhciBtb2QgMTAwID0gMCkpIHx8IHllYXIgbW9kIDQwMCA9IDBcblxuKCogQ3JlYXRlIGEgbG9jYWwgcHJpdmF0ZSBkYXRlIHR5cGUgdG8gZW5zdXJlIHRoYXQgYWxsIGRhdGVzIGFyZSBjcmVhdGVkIHZpYVxuICAgRGF0ZS5jcmVhdGVfZXhuLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGltbWVkaWF0ZV0gW0BAZGVyaXZpbmcgYmluX2lvLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgICB2YWwgY3JlYXRlX2V4biA6IHk6aW50IC0+IG06TW9udGguU3RhYmxlLlYxLnQgLT4gZDppbnQgLT4gdFxuICAgICAgICB2YWwgeWVhciA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBtb250aCA6IHQgLT4gTW9udGguU3RhYmxlLlYxLnRcbiAgICAgICAgdmFsIGRheSA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBkYXlzX2luX21vbnRoIDogeWVhcjppbnQgLT4gbW9udGg6TW9udGgudCAtPiBpbnRcbiAgICAgICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgICAgIHZhbCBvZl9pbnRfZXhuIDogaW50IC0+IHRcbiAgICAgICAgdmFsIGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA6IHRcbiAgICAgIGVuZCA9IHN0cnVjdFxuICAgICAgICAoKiBXZSB1c2VkIHRvIHN0b3JlIGRhdGVzIGxpa2UgdGhpczpcbiAgICAgICAgICAgdHlwZSB0ID0geyB5OiBpbnQ7IG06IE1vbnRoLlN0YWJsZS5WMS50OyBkOiBpbnQ7IH1cbiAgICAgICAgICAgSW4gdGhlIGJlbG93IHdlIG1ha2Ugc3VyZSB0aGF0IHRoZSBiaW5faW8gcmVwcmVzZW50YXRpb24gaXNcbiAgICAgICAgICAgaWRlbnRpY2FsIChhbmQgdGhlIHN0YWJsZSB1bml0IHRlc3RzIGNoZWNrIHRoaXMpXG5cbiAgICAgICAgICAgSW4gbWVtb3J5IHdlIHVzZSB0aGUgZm9sbG93aW5nIG11Y2ggbW9yZSBjb21wYWN0IHJlcHJlc2VudGF0aW9uOlxuICAgICAgICAgICAyIGJ5dGVzIHllYXJcbiAgICAgICAgICAgMSBieXRlIG1vbnRoXG4gICAgICAgICAgIDEgYnl0ZSBkYXlcblxuICAgICAgICAgICBhbGwgcGFja2VkIGludG8gYSBzaW5nbGUgaW1tZWRpYXRlIGludCAoc28gZnJvbSA0IHdvcmRzIGRvd24gdG8gMSkuXG4gICAgICAgICopXG4gICAgICAgIHR5cGUgdCA9IGludFxuICAgICAgICBbQEBkZXJpdmluZ1xuICAgICAgICAgIGVxdWFsLCBoYXNoLCB0eXBlcmVwLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZWUzZTAtNDkwYS0xMWU2LWExMGEtYTM3MzRmNzMzNTY2XCJdXG5cbiAgICAgICAgbGV0IGNyZWF0ZTAgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgICgqIGNyZWF0ZV9leG4ncyB2YWxpZGF0aW9uIG1ha2Ugc3VyZSB0aGF0IGVhY2ggdmFsdWUgZml0cyAqKVxuICAgICAgICAgICh5ZWFyIGxzbCAxNikgbG9yIChNb250aC50b19pbnQgbW9udGggbHNsIDgpIGxvciBkYXlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgeWVhciB0ID0gdCBsc3IgMTZcbiAgICAgICAgbGV0IG1vbnRoIHQgPSBNb250aC5vZl9pbnRfZXhuICgodCBsc3IgOCkgbGFuZCAweGZmKVxuICAgICAgICBsZXQgZGF5IHQgPSB0IGxhbmQgMHhmZlxuXG4gICAgICAgIGxldCBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCA9XG4gICAgICAgICAgbWF0Y2ggKG1vbnRoIDogTW9udGgudCkgd2l0aFxuICAgICAgICAgIHwgSmFuIHwgTWFyIHwgTWF5IHwgSnVsIHwgQXVnIHwgT2N0IHwgRGVjIC0+IDMxXG4gICAgICAgICAgfCBBcHIgfCBKdW4gfCBTZXAgfCBOb3YgLT4gMzBcbiAgICAgICAgICB8IEZlYiAtPiBpZiBpc19sZWFwX3llYXIgfnllYXIgdGhlbiAyOSBlbHNlIDI4XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGNyZWF0ZV9leG4gfnk6eWVhciB+bTptb250aCB+ZDpkYXkgPVxuICAgICAgICAgICgqIHllYXIsIG1vbnRoLCBhbmQgZGF5IG5lZWQgdG8gYmUgcGFzc2VkIGFzIHBhcmFtZXRlcnMgdG8gYXZvaWQgYWxsb2NhdGluZ1xuICAgICAgICAgICAgIGEgY2xvc3VyZSAoc2VlIHVuaXQgdGVzdCBiZWxvdykgKilcbiAgICAgICAgICBsZXQgaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBtc2cgPVxuICAgICAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgICAgICFcIkRhdGUuY3JlYXRlX2V4biB+eTolZCB+bTole01vbnRofSB+ZDolZCBlcnJvcjogJXNcIlxuICAgICAgICAgICAgICB5ZWFyXG4gICAgICAgICAgICAgIG1vbnRoXG4gICAgICAgICAgICAgIGRheVxuICAgICAgICAgICAgICBtc2dcbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHllYXIgPCAwIHx8IHllYXIgPiA5OTk5XG4gICAgICAgICAgdGhlbiBpbnZhbGlkIH55ZWFyIH5tb250aCB+ZGF5IFwieWVhciBvdXRzaWRlIG9mIFswLi45OTk5XVwiO1xuICAgICAgICAgIGlmIGRheSA8PSAwIHRoZW4gaW52YWxpZCB+eWVhciB+bW9udGggfmRheSBcImRheSA8PSAwXCI7XG4gICAgICAgICAgbGV0IGRheXNfaW5fbW9udGggPSBkYXlzX2luX21vbnRoIH55ZWFyIH5tb250aCBpblxuICAgICAgICAgIGlmIGRheSA+IGRheXNfaW5fbW9udGhcbiAgICAgICAgICB0aGVuIGludmFsaWQgfnllYXIgfm1vbnRoIH5kYXkgKHNwcmludGYgXCIlZCBkYXkgbW9udGggdmlvbGF0aW9uXCIgZGF5c19pbl9tb250aCk7XG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgICgqIFdlIGRvbid0IHVzZSBNYWtlX2JpbmFibGUgaGVyZSwgYmVjYXVzZSB0aGF0IHdvdWxkIGdvIHZpYSBhbiBpbW1lZGlhdGVcbiAgICAgICAgICAgdHVwbGUgb3IgcmVjb3JkLiAgVGhhdCBpcyBleGFjdGx5IHRoZSAzMiBieXRlcyB3ZSB3b3JrZWQgc28gaGFyZCBhYm92ZSB0b1xuICAgICAgICAgICBnZXQgcmlkIG9mLiAgV2UgYWxzbyBkb24ndCB3YW50IHRvIGp1c3QgYmluX2lvIHRoZSBpbnRlZ2VyIGRpcmVjdGx5XG4gICAgICAgICAgIGJlY2F1c2UgdGhhdCB3b3VsZCBtZWFuIGEgbmV3IGJpbl9pbyBmb3JtYXQuICAqKVxuXG4gICAgICAgIGxldCBiaW5fcmVhZF90IGJ1ZiB+cG9zX3JlZiA9XG4gICAgICAgICAgbGV0IHllYXIgPSBJbnQuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgbW9udGggPSBNb250aC5TdGFibGUuVjEuYmluX3JlYWRfdCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50LmJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmIGluXG4gICAgICAgICAgY3JlYXRlMCB+eWVhciB+bW9udGggfmRheVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmID1cbiAgICAgICAgICAoKiBfX2Jpbl9yZWFkX3QgaXMgb25seSBuZWVkZWQgZm9yIHZhcmlhbnRzICopXG4gICAgICAgICAgQmluX3Byb3QuQ29tbW9uLnJhaXNlX3ZhcmlhbnRfd3JvbmdfdHlwZSBcIkRhdGUudFwiICFwb3NfcmVmXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyB9XG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGJpbl9zaXplX3QgdCA9XG4gICAgICAgICAgSW50LmJpbl9zaXplX3QgKHllYXIgdCkgKyBNb250aC5iaW5fc2l6ZV90IChtb250aCB0KSArIEludC5iaW5fc2l6ZV90IChkYXkgdClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgYmluX3dyaXRlX3QgYnVmIH5wb3MgdCA9XG4gICAgICAgICAgbGV0IHBvcyA9IEludC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoeWVhciB0KSBpblxuICAgICAgICAgIGxldCBwb3MgPSBNb250aC5iaW5fd3JpdGVfdCBidWYgfnBvcyAobW9udGggdCkgaW5cbiAgICAgICAgICBJbnQuYmluX3dyaXRlX3QgYnVmIH5wb3MgKGRheSB0KVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBiaW5fd3JpdGVyX3QgPSB7IEJpbl9wcm90LlR5cGVfY2xhc3Muc2l6ZSA9IGJpbl9zaXplX3Q7IHdyaXRlID0gYmluX3dyaXRlX3QgfVxuXG4gICAgICAgIGxldCBiaW5fdCA9XG4gICAgICAgICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciA9IGJpbl9yZWFkZXJfdFxuICAgICAgICAgIDsgd3JpdGVyID0gYmluX3dyaXRlcl90XG4gICAgICAgICAgOyBzaGFwZSA9IGJpbl9zaGFwZV90XG4gICAgICAgICAgfVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0b19pbnQgdCA9IHRcbiAgICAgICAgbGV0IG9mX2ludF9leG4gbiA9IGNyZWF0ZV9leG4gfnk6KHllYXIgbikgfm06KG1vbnRoIG4pIH5kOihkYXkgbilcbiAgICAgICAgbGV0IGludmFsaWRfdmFsdWVfX2Zvcl9pbnRlcm5hbF91c2Vfb25seSA9IDBcblxuICAgICAgICBsZXQldGVzdCBcImludmFsaWQgdmFsdWVcIiA9XG4gICAgICAgICAgRXhuLmRvZXNfcmFpc2UgKGZ1biAoKSA6IHQgLT4gb2ZfaW50X2V4biBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG5cblxuICAgICAgKCoqIFlZWVktTU0tREQgKilcbiAgICAgIGxldCB0b19zdHJpbmdfaXNvODYwMV9leHRlbmRlZCB0ID1cbiAgICAgICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAxMCBpblxuICAgICAgICB3cml0ZV80X2RpZ2l0X2ludCBidWYgfnBvczowICh5ZWFyIHQpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDQgJy0nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczo1IChNb250aC50b19pbnQgKG1vbnRoIHQpKTtcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA3ICctJztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6OCAoZGF5IHQpO1xuICAgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOmJ1ZlxuICAgICAgOztcblxuICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ19pc284NjAxX2V4dGVuZGVkXG5cbiAgICAgICgqKiBZWVlZTU1ERCAqKVxuICAgICAgbGV0IHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDggaW5cbiAgICAgICAgd3JpdGVfNF9kaWdpdF9pbnQgYnVmIH5wb3M6MCAoeWVhciB0KTtcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NCAoTW9udGgudG9faW50IChtb250aCB0KSk7XG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKGRheSB0KTtcbiAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWZcbiAgICAgIDs7XG5cbiAgICAgICgqKiBNTS9ERC9ZWVlZICopXG4gICAgICBsZXQgdG9fc3RyaW5nX2FtZXJpY2FuIHQgPVxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDEwIGluXG4gICAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjAgKE1vbnRoLnRvX2ludCAobW9udGggdCkpO1xuICAgICAgICBCeXRlcy5zZXQgYnVmIDIgJy8nO1xuICAgICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczozIChkYXkgdCk7XG4gICAgICAgIEJ5dGVzLnNldCBidWYgNSAnLyc7XG4gICAgICAgIHdyaXRlXzRfZGlnaXRfaW50IGJ1ZiB+cG9zOjYgKHllYXIgdCk7XG4gICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2VfeWVhcjQgc3RyIHBvcyA9IHJlYWRfNF9kaWdpdF9pbnQgc3RyIH5wb3NcbiAgICAgIGxldCBwYXJzZV9tb250aCBzdHIgcG9zID0gTW9udGgub2ZfaW50X2V4biAocmVhZF8yX2RpZ2l0X2ludCBzdHIgfnBvcylcbiAgICAgIGxldCBwYXJzZV9kYXkgc3RyIHBvcyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3NcblxuICAgICAgKCoqIFlZWVlNTUREICopXG4gICAgICBsZXQgb2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWMgc3RyIH5wb3MgPVxuICAgICAgICBpZiBwb3MgKyA4ID4gU3RyaW5nLmxlbmd0aCBzdHJcbiAgICAgICAgdGhlbiBpbnZhbGlkX2FyZyBcIkRhdGUub2Zfc3RyaW5nX2lzbzg2MDFfYmFzaWM6IHBvcyArIDggPiBzdHJpbmcgbGVuZ3RoXCI7XG4gICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICB+eToocGFyc2VfeWVhcjQgc3RyIHBvcylcbiAgICAgICAgICB+bToocGFyc2VfbW9udGggc3RyIChwb3MgKyA0KSlcbiAgICAgICAgICB+ZDoocGFyc2VfZGF5IHN0ciAocG9zICsgNikpXG4gICAgICA7O1xuXG4gICAgICAoKiBXQVJOSU5HOiBpZiB5b3UgYXJlIGdvaW5nIHRvIGNoYW5nZSB0aGlzIGZ1bmN0aW9uIGluIGEgbWF0ZXJpYWwgd2F5LCBiZSBzdXJlIHlvdVxuICAgICAgICAgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHdvcmtpbmcgaW4gU3RhYmxlICopXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICBsZXQgaW52YWxpZCAoKSA9IGZhaWx3aXRoIChcImludmFsaWQgZGF0ZTogXCIgXiBzKSBpblxuICAgICAgICBsZXQgZW5zdXJlIGIgPSBpZiBub3QgYiB0aGVuIGludmFsaWQgKCkgaW5cbiAgICAgICAgbGV0IG1vbnRoX251bSB+eWVhciB+bW9udGggfmRheSA9XG4gICAgICAgICAgY3JlYXRlX2V4biB+eToocGFyc2VfeWVhcjQgcyB5ZWFyKSB+bToocGFyc2VfbW9udGggcyBtb250aCkgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1vbnRoX2FicnYgfnllYXIgfm1vbnRoIH5kYXkgPVxuICAgICAgICAgIGNyZWF0ZV9leG5cbiAgICAgICAgICAgIH55OihwYXJzZV95ZWFyNCBzIHllYXIpXG4gICAgICAgICAgICB+bTooTW9udGgub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHMgfnBvczptb250aCB+bGVuOjMpKVxuICAgICAgICAgICAgfmQ6KHBhcnNlX2RheSBzIGRheSlcbiAgICAgICAgaW5cbiAgICAgICAgaWYgU3RyaW5nLmNvbnRhaW5zIHMgJy8nXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGxldCB5LCBtLCBkID1cbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonLycgd2l0aFxuICAgICAgICAgICAgfCBbIGE7IGI7IGMgXSAtPlxuICAgICAgICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGEgPSA0IHRoZW4gYSwgYiwgYyAoKiB5L20vZCAqKSBlbHNlIGMsIGEsIGIgKCogbS9kL3kgKilcbiAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkICgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgeWVhciA9IEludC5vZl9zdHJpbmcgeSBpblxuICAgICAgICAgIGxldCB5ZWFyID1cbiAgICAgICAgICAgIGlmIHllYXIgPj0gMTAwIHRoZW4geWVhciBlbHNlIGlmIHllYXIgPCA3NSB0aGVuIDIwMDAgKyB5ZWFyIGVsc2UgMTkwMCArIHllYXJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBtb250aCA9IE1vbnRoLm9mX2ludF9leG4gKEludC5vZl9zdHJpbmcgbSkgaW5cbiAgICAgICAgICBsZXQgZGF5ID0gSW50Lm9mX3N0cmluZyBkIGluXG4gICAgICAgICAgY3JlYXRlX2V4biB+eTp5ZWFyIH5tOm1vbnRoIH5kOmRheSlcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnLSdcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogeXl5eS1tbS1kZCAqKVxuICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTAgJiYgQ2hhci4oID0gKSBzLls0XSAnLScgJiYgQ2hhci4oID0gKSBzLls3XSAnLScpO1xuICAgICAgICAgIG1vbnRoX251bSB+eWVhcjowIH5tb250aDo1IH5kYXk6OClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgcyAnICdcbiAgICAgICAgdGhlblxuICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggcyA9IDExICYmIENoYXIuKCA9ICkgcy5bMl0gJyAnICYmIENoYXIuKCA9ICkgcy5bNl0gJyAnXG4gICAgICAgICAgdGhlbiAoKiBERCBNTU0gWVlZWSAqKVxuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjMgfnllYXI6N1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgKCogWVlZWSBNTU0gREQgKilcbiAgICAgICAgICAgIGVuc3VyZSAoU3RyaW5nLmxlbmd0aCBzID0gMTEgJiYgQ2hhci4oID0gKSBzLls0XSAnICcgJiYgQ2hhci4oID0gKSBzLls4XSAnICcpO1xuICAgICAgICAgICAgbW9udGhfYWJydiB+ZGF5Ojkgfm1vbnRoOjUgfnllYXI6MClcbiAgICAgICAgZWxzZSBpZiBTdHJpbmcubGVuZ3RoIHMgPSA5XG4gICAgICAgIHRoZW4gKCogRERNTU1ZWVlZICopXG4gICAgICAgICAgbW9udGhfYWJydiB+ZGF5OjAgfm1vbnRoOjIgfnllYXI6NVxuICAgICAgICBlbHNlIGlmIFN0cmluZy5sZW5ndGggcyA9IDhcbiAgICAgICAgdGhlbiAoKiBhc3N1bWUgWVlZWU1NREQgKilcbiAgICAgICAgICBtb250aF9udW0gfnllYXI6MCB+bW9udGg6NCB+ZGF5OjZcbiAgICAgICAgZWxzZSBpbnZhbGlkICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHMgPVxuICAgICAgICB0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICB8IGV4biAtPiBpbnZhbGlkX2FyZ2YgXCJEYXRlLm9mX3N0cmluZyAoJXMpOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgICAgOztcblxuICAgICAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBPbGRfZGF0ZSA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICB7IHkgOiBpbnRcbiAgICAgICAgICAgIDsgbSA6IGludFxuICAgICAgICAgICAgOyBkIDogaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgICAgIGxldCB0b19kYXRlIHQgPSBULmNyZWF0ZV9leG4gfnk6dC55IH5tOihNb250aC5vZl9pbnRfZXhuIHQubSkgfmQ6dC5kXG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgICAgIHwgU2V4cC5BdG9tIHMgLT4gb2Zfc3RyaW5nIHNcbiAgICAgICAgICB8IFNleHAuTGlzdCBfIGFzIHNleHAgLT4gT2xkX2RhdGUudG9fZGF0ZSAoT2xkX2RhdGUudF9vZl9zZXhwIHNleHApXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzID1cbiAgICAgICAgICB0cnkgdF9vZl9zZXhwIHMgd2l0aFxuICAgICAgICAgIHwgT2Zfc2V4cF9lcnJvciBfIGFzIGV4biAtPiByYWlzZSBleG5cbiAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgYSAtPiBvZl9zZXhwX2Vycm9yIGEgc1xuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICAgICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFNleHBsaWIuU2V4cC50X3NleHBfZ3JhbW1hclxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGUgU2V4cGFibGVcblxuICAgICAgbGV0IGNvbXBhcmUgdDEgdDIgPVxuICAgICAgICBsZXQgbiA9IEludC5jb21wYXJlICh5ZWFyIHQxKSAoeWVhciB0MikgaW5cbiAgICAgICAgaWYgbiA8PiAwXG4gICAgICAgIHRoZW4gblxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbiA9IE1vbnRoLmNvbXBhcmUgKG1vbnRoIHQxKSAobW9udGggdDIpIGluXG4gICAgICAgICAgaWYgbiA8PiAwIHRoZW4gbiBlbHNlIEludC5jb21wYXJlIChkYXkgdDEpIChkYXkgdDIpKVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChXaXRob3V0X2NvbXBhcmFibGUpXG4gICAgaW5jbHVkZSBIYXNoYWJsZS5TdGFibGUuVjEuTWFrZSAoV2l0aG91dF9jb21wYXJhYmxlKVxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIFtAQGRlcml2aW5nXG4gICAgICAgIGJpbl9pb1xuICAgICAgLCBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODI2YTNlNzktMzMyMS00NTFhLTk3MDctZWQ2YzAzYjg0ZTJmXCJcbiAgICAgICwgY29tcGFyZVxuICAgICAgLCBoYXNoXG4gICAgICAsIHR5cGVyZXBdXG5cbiAgICAgIGxldCBub25lID0gVjEuKHRvX2ludCBpbnZhbGlkX3ZhbHVlX19mb3JfaW50ZXJuYWxfdXNlX29ubHkpXG4gICAgICBsZXQgaXNfbm9uZSB0ID0gdCA9IG5vbmVcbiAgICAgIGxldCBpc19zb21lIHQgPSBub3QgKGlzX25vbmUgdClcbiAgICAgIGxldCBzb21lX2lzX3JlcHJlc2VudGFibGUgXyA9IHRydWVcbiAgICAgIGxldCBzb21lIHQgPSBWMS50b19pbnQgdFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IFYxLm9mX2ludF9leG5cbiAgICAgIGxldCB0b19vcHRpb24gdCA9IGlmIGlzX3NvbWUgdCB0aGVuIFNvbWUgKHVuY2hlY2tlZF92YWx1ZSB0KSBlbHNlIE5vbmVcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIkRhdGUuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IGlmIGlzX3NvbWUgdCB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0IGVsc2UgZGVmYXVsdFxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMS5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYxLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjEudCBPcHRpb24udF1cbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFdpdGhvdXRfY29tcGFyYWJsZSA9IFN0YWJsZS5WMS5XaXRob3V0X2NvbXBhcmFibGVcbmluY2x1ZGUgV2l0aG91dF9jb21wYXJhYmxlXG5tb2R1bGUgQyA9IENvbXBhcmFibGUuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKFdpdGhvdXRfY29tcGFyYWJsZSlcbmluY2x1ZGUgQ1xuXG5tb2R1bGUgTyA9IHN0cnVjdFxuICBpbmNsdWRlIChDIDogQ29tcGFyYWJsZS5JbmZpeCB3aXRoIHR5cGUgdCA6PSB0KVxuZW5kXG5cbmluY2x1ZGUgKFxuICBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuICAgIGluY2x1ZGUgU2V4cGFibGVcbiAgICBpbmNsdWRlIEJpbmFibGVcblxuICAgIGxldCBjb21wYXJlIChhIDogdCkgKGIgOiB0KSA9IGNvbXBhcmUgYSBiXG4gIGVuZCkgOlxuICAgIEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuXG5pbmNsdWRlIFByZXR0eV9wcmludGVyLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLkRhdGVcIlxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgZW5kKVxuXG5sZXQgdW5peF9lcG9jaCA9IGNyZWF0ZV9leG4gfnk6MTk3MCB+bTpKYW4gfmQ6MVxuXG4oKiBUaGUgRGF5cyBtb2R1bGUgaXMgdXNlZCBmb3IgY2FsY3VsYXRpb25zIHRoYXQgaW52b2x2ZSBhZGRpbmcgb3IgcmVtb3ZpbmcgYSBrbm93biBudW1iZXJcbiAgIG9mIGRheXMgZnJvbSBhIGRhdGUuICBJbnRlcm5hbGx5IHRoZSBkYXRlIGlzIHRyYW5zbGF0ZWQgdG8gYSBkYXkgbnVtYmVyLCB0aGUgZGF5cyBhcmVcbiAgIGFkZGVkLCBhbmQgdGhlIG5ldyBkYXRlIGlzIHJldHVybmVkLiAgVGhvc2UgaW50ZXJlc3RlZCBpbiB0aGUgbWF0aCBjYW4gcmVhZDpcblxuICAgaHR0cDovL2FsY29yLmNvbmNvcmRpYS5jYS9+Z3BrYXRjaC9nZGF0ZS1tZXRob2QuaHRtbFxuXG4gICBub3RlOiB1bml0IHRlc3RzIGFyZSBpbiBsaWJfdGVzdC90aW1lX3Rlc3QubWxcbiopXG5tb2R1bGUgRGF5cyA6IHNpZ1xuICB0eXBlIGRhdGUgPSB0XG4gIHR5cGUgdCBbQEBpbW1lZGlhdGVdXG5cbiAgdmFsIG9mX2RhdGUgOiBkYXRlIC0+IHRcbiAgdmFsIHRvX2RhdGUgOiB0IC0+IGRhdGVcbiAgdmFsIGRpZmYgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBhZGRfZGF5cyA6IHQgLT4gaW50IC0+IHRcbiAgdmFsIHVuaXhfZXBvY2ggOiB0XG5lbmRcbndpdGggdHlwZSBkYXRlIDo9IHQgPSBzdHJ1Y3RcbiAgb3BlbiBJbnRcblxuICB0eXBlIHQgPSBpbnRcblxuICBsZXQgb2ZfeWVhciB5ID0gKDM2NSAqIHkpICsgKHkgLyA0KSAtICh5IC8gMTAwKSArICh5IC8gNDAwKVxuXG4gIGxldCBvZl9kYXRlIGRhdGUgPVxuICAgIGxldCBtID0gKE1vbnRoLnRvX2ludCAobW9udGggZGF0ZSkgKyA5KSAlIDEyIGluXG4gICAgbGV0IHkgPSB5ZWFyIGRhdGUgLSAobSAvIDEwKSBpblxuICAgIG9mX3llYXIgeSArICgoKG0gKiAzMDYpICsgNSkgLyAxMCkgKyAoZGF5IGRhdGUgLSAxKVxuICA7O1xuXG4gIGxldCBjXzEwXzAwMCA9IEludDYzLm9mX2ludCAxMF8wMDBcbiAgbGV0IGNfMTRfNzgwID0gSW50NjMub2ZfaW50IDE0Xzc4MFxuICBsZXQgY18zXzY1Ml80MjUgPSBJbnQ2My5vZl9pbnQgM182NTJfNDI1XG5cbiAgbGV0IHRvX2RhdGUgZGF5cyA9XG4gICAgbGV0IHkgPVxuICAgICAgbGV0IG9wZW4gSW50NjMgaW5cbiAgICAgIHRvX2ludF9leG4gKCgoY18xMF8wMDAgKiBvZl9pbnQgZGF5cykgKyBjXzE0Xzc4MCkgLyBjXzNfNjUyXzQyNSlcbiAgICBpblxuICAgIGxldCBkZGQgPSBkYXlzIC0gb2ZfeWVhciB5IGluXG4gICAgbGV0IHksIGRkZCA9XG4gICAgICBpZiBkZGQgPCAwXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHkgPSB5IC0gMSBpblxuICAgICAgICB5LCBkYXlzIC0gb2ZfeWVhciB5KVxuICAgICAgZWxzZSB5LCBkZGRcbiAgICBpblxuICAgIGxldCBtaSA9ICgoMTAwICogZGRkKSArIDUyKSAvIDNfMDYwIGluXG4gICAgbGV0IHkgPSB5ICsgKChtaSArIDIpIC8gMTIpIGluXG4gICAgbGV0IG0gPSAoKG1pICsgMikgJSAxMikgKyAxIGluXG4gICAgbGV0IGQgPSBkZGQgLSAoKChtaSAqIDMwNikgKyA1KSAvIDEwKSArIDEgaW5cbiAgICBjcmVhdGVfZXhuIH55IH5tOihNb250aC5vZl9pbnRfZXhuIG0pIH5kXG4gIDs7XG5cbiAgbGV0IHVuaXhfZXBvY2ggPSBvZl9kYXRlIHVuaXhfZXBvY2hcbiAgbGV0IGFkZF9kYXlzIHQgZGF5cyA9IHQgKyBkYXlzXG4gIGxldCBkaWZmIHQxIHQyID0gdDEgLSB0MlxuZW5kXG5cbmxldCBhZGRfZGF5cyB0IGRheXMgPSBEYXlzLnRvX2RhdGUgKERheXMuYWRkX2RheXMgKERheXMub2ZfZGF0ZSB0KSBkYXlzKVxubGV0IGRpZmYgdDEgdDIgPSBEYXlzLmRpZmYgKERheXMub2ZfZGF0ZSB0MSkgKERheXMub2ZfZGF0ZSB0MilcblxubGV0IGFkZF9tb250aHMgdCBuID1cbiAgbGV0IHRvdGFsX21vbnRocyA9IE1vbnRoLnRvX2ludCAobW9udGggdCkgKyBuIGluXG4gIGxldCB5ID0geWVhciB0ICsgKHRvdGFsX21vbnRocyAvJSAxMikgaW5cbiAgbGV0IG0gPSB0b3RhbF9tb250aHMgJSAxMiBpblxuICAoKiBjb3JyZWN0IGZvciBkZWNlbWJlciAqKVxuICBsZXQgeSwgbSA9IGlmIEludC4oID0gKSBtIDAgdGhlbiB5IC0gMSwgbSArIDEyIGVsc2UgeSwgbSBpblxuICBsZXQgbSA9IE1vbnRoLm9mX2ludF9leG4gbSBpblxuICAoKiBoYW5kbGUgaW52YWxpZCBkYXRlcyBmb3IgbW9udGhzIHdpdGggZmV3ZXIgbnVtYmVyIG9mIGRheXMgKilcbiAgbGV0IHJlYyB0cnlfY3JlYXRlIGQgPVxuICAgIHRyeSBjcmVhdGVfZXhuIH55IH5tIH5kIHdpdGhcbiAgICB8IF9leG4gLT5cbiAgICAgIGFzc2VydCAoSW50LiggPj0gKSBkIDEpO1xuICAgICAgdHJ5X2NyZWF0ZSAoZCAtIDEpXG4gIGluXG4gIHRyeV9jcmVhdGUgKGRheSB0KVxuOztcblxubGV0IGFkZF95ZWFycyB0IG4gPSBhZGRfbW9udGhzIHQgKG4gKiAxMilcblxuKCogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9EZXRlcm1pbmF0aW9uX29mX3RoZV9kYXlfb2ZfdGhlX3dlZWsjUHVyZWx5X21hdGhlbWF0aWNhbF9tZXRob2RzXG5cbiAgIG5vdGU6IHVuaXQgdGVzdHMgaW4gbGliX3Rlc3QvdGltZV90ZXN0Lm1sXG4qKVxubGV0IGRheV9vZl93ZWVrID1cbiAgbGV0IHRhYmxlID0gW3wgMDsgMzsgMjsgNTsgMDsgMzsgNTsgMTsgNDsgNjsgMjsgNCB8XSBpblxuICBmdW4gdCAtPlxuICAgIGxldCBtID0gTW9udGgudG9faW50IChtb250aCB0KSBpblxuICAgIGxldCB5ID0gaWYgSW50LiggPCApIG0gMyB0aGVuIHllYXIgdCAtIDEgZWxzZSB5ZWFyIHQgaW5cbiAgICBEYXlfb2Zfd2Vlay5vZl9pbnRfZXhuXG4gICAgICAoKHkgKyAoeSAvIDQpIC0gKHkgLyAxMDApICsgKHkgLyA0MDApICsgdGFibGUuKG0gLSAxKSArIGRheSB0KSAlIDcpXG47O1xuXG4oKiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09yZGluYWxfZGF0ZSAqKVxubGV0IG5vbl9sZWFwX3llYXJfdGFibGUgPSBbfCAwOyAzMTsgNTk7IDkwOyAxMjA7IDE1MTsgMTgxOyAyMTI7IDI0MzsgMjczOyAzMDQ7IDMzNCB8XVxubGV0IGxlYXBfeWVhcl90YWJsZSA9IFt8IDA7IDMxOyA2MDsgOTE7IDEyMTsgMTUyOyAxODI7IDIxMzsgMjQ0OyAyNzQ7IDMwNTsgMzM1IHxdXG5cbmxldCBvcmRpbmFsX2RhdGUgdCA9XG4gIGxldCB0YWJsZSA9XG4gICAgaWYgaXNfbGVhcF95ZWFyIH55ZWFyOih5ZWFyIHQpIHRoZW4gbGVhcF95ZWFyX3RhYmxlIGVsc2Ugbm9uX2xlYXBfeWVhcl90YWJsZVxuICBpblxuICBsZXQgb2Zmc2V0ID0gdGFibGUuKE1vbnRoLnRvX2ludCAobW9udGggdCkgLSAxKSBpblxuICBkYXkgdCArIG9mZnNldFxuOztcblxubGV0IGxhc3Rfd2Vla19vZl95ZWFyIHkgPVxuICBsZXQgZmlyc3Rfb2ZfeWVhciA9IGNyZWF0ZV9leG4gfnkgfm06SmFuIH5kOjEgaW5cbiAgbGV0IGlzIHQgZGF5ID0gRGF5X29mX3dlZWsuZXF1YWwgKGRheV9vZl93ZWVrIHQpIGRheSBpblxuICBpZiBpcyBmaXJzdF9vZl95ZWFyIFRodSB8fCAoaXNfbGVhcF95ZWFyIH55ZWFyOnkgJiYgaXMgZmlyc3Rfb2ZfeWVhciBXZWQpXG4gIHRoZW4gNTNcbiAgZWxzZSA1MlxuOztcblxuKCogU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZSBvciBJU08gODYwMSBmb3IgdGhlIGRldGFpbHMgb2YgdGhpc1xuICAgYWxnb3JpdGhtLlxuXG4gICBVc2VzIGEgW35mXSBhcmd1bWVudCB0byBhdm9pZCBhbGxvY2F0aW5nIGEgdHVwbGUgd2hlbiBjYWxsZWQgYnkgW3dlZWtfbnVtYmVyXS5cbiopXG5sZXQgY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZiA9XG4gIGxldCBvcmRpbmFsID0gb3JkaW5hbF9kYXRlIHQgaW5cbiAgbGV0IHdlZWtkYXkgPSBEYXlfb2Zfd2Vlay5pc29fODYwMV93ZWVrZGF5X251bWJlciAoZGF5X29mX3dlZWsgdCkgaW5cbiAgKCogW29yZGluYWwgLSB3ZWVrZGF5ICsgNF0gaXMgdGhlIG9yZGluYWwgb2YgdGhpcyB3ZWVrJ3MgVGh1cnNkYXksIHRoZW4gKG4gKyA2KSAvIDcgaXNcbiAgICAgZGl2aXNpb24gYnkgNyByb3VuZGluZyB1cCAqKVxuICBsZXQgd2VlayA9IChvcmRpbmFsIC0gd2Vla2RheSArIDEwKSAvIDcgaW5cbiAgbGV0IHllYXIgPSB5ZWFyIHQgaW5cbiAgaWYgSW50LiggPCApIHdlZWsgMVxuICB0aGVuIGYgfndlZWs6KGxhc3Rfd2Vla19vZl95ZWFyICh5ZWFyIC0gMSkpIH55ZWFyOih5ZWFyIC0gMSlcbiAgZWxzZSBpZiBJbnQuKCA+ICkgd2VlayAobGFzdF93ZWVrX29mX3llYXIgeWVhcilcbiAgdGhlbiBmIH53ZWVrOjEgfnllYXI6KHllYXIgKyAxKVxuICBlbHNlIGYgfndlZWsgfnllYXJcbjs7XG5cbmxldCB3ZWVrX251bWJlcl9hbmRfeWVhciB0ID0gY2FsbF93aXRoX3dlZWtfYW5kX3llYXIgdCB+ZjooZnVuIH53ZWVrIH55ZWFyIC0+IHdlZWssIHllYXIpXG5sZXQgd2Vla19udW1iZXIgdCA9IGNhbGxfd2l0aF93ZWVrX2FuZF95ZWFyIHQgfmY6KGZ1biB+d2VlayB+eWVhcjpfIC0+IHdlZWspXG5sZXQgaXNfd2Vla2VuZCB0ID0gRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCAoZGF5X29mX3dlZWsgdClcbmxldCBpc193ZWVrZGF5IHQgPSBub3QgKGlzX3dlZWtlbmQgdClcbmxldCBpc19idXNpbmVzc19kYXkgdCB+aXNfaG9saWRheSA9IGlzX3dlZWtkYXkgdCAmJiBub3QgKGlzX2hvbGlkYXkgdClcblxubGV0IHJlYyBkaWZmX3dlZWtlbmRfZGF5cyB0MSB0MiA9XG4gIGlmIHQxIDwgdDJcbiAgdGhlbiAtZGlmZl93ZWVrZW5kX2RheXMgdDIgdDFcbiAgZWxzZSAoXG4gICAgKCogQmFzaWMgZGF0ZSBkaWZmICopXG4gICAgbGV0IGRpZmYgPSBkaWZmIHQxIHQyIGluXG4gICAgKCogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIFNhdHVyZGF5IC0+IFN1bmRheSBjcm9zc2luZ3MgKilcbiAgICBsZXQgZDEgPSBkYXlfb2Zfd2VlayB0MSBpblxuICAgIGxldCBkMiA9IGRheV9vZl93ZWVrIHQyIGluXG4gICAgbGV0IG51bV9zYXRzdW5fY3Jvc3NpbmdzID1cbiAgICAgIGlmIEludC4oIDwgKSAoRGF5X29mX3dlZWsudG9faW50IGQxKSAoRGF5X29mX3dlZWsudG9faW50IGQyKVxuICAgICAgdGhlbiAxICsgKGRpZmYgLyA3KVxuICAgICAgZWxzZSBkaWZmIC8gN1xuICAgIGluXG4gICAgKG51bV9zYXRzdW5fY3Jvc3NpbmdzICogMilcbiAgICArIChpZiBEYXlfb2Zfd2Vlay4oID0gKSBkMiBEYXlfb2Zfd2Vlay5TdW4gdGhlbiAxIGVsc2UgMClcbiAgICArIGlmIERheV9vZl93ZWVrLiggPSApIGQxIERheV9vZl93ZWVrLlN1biB0aGVuIC0xIGVsc2UgMClcbjs7XG5cbmxldCBkaWZmX3dlZWtkYXlzIHQxIHQyID0gZGlmZiB0MSB0MiAtIGRpZmZfd2Vla2VuZF9kYXlzIHQxIHQyXG5cbmxldCBhZGRfZGF5c19za2lwcGluZyB0IH5za2lwIG4gPVxuICBsZXQgc3RlcCA9IGlmIEludC4oID49ICkgbiAwIHRoZW4gMSBlbHNlIC0xIGluXG4gIGxldCByZWMgbG9vcCB0IGsgPVxuICAgIGxldCB0X25leHQgPSBhZGRfZGF5cyB0IHN0ZXAgaW5cbiAgICBpZiBza2lwIHQgdGhlbiBsb29wIHRfbmV4dCBrIGVsc2UgaWYgSW50LiggPSApIGsgMCB0aGVuIHQgZWxzZSBsb29wIHRfbmV4dCAoayAtIDEpXG4gIGluXG4gIGxvb3AgdCAoYWJzIG4pXG47O1xuXG5sZXQgcmVjIGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGlmIGNvbmRpdGlvbiB0IHRoZW4gdCBlbHNlIGZpcnN0X2RheV9zYXRpc2Z5aW5nIChhZGRfZGF5cyB0IHN0ZXApIH5zdGVwIH5jb25kaXRpb25cbjs7XG5cbmxldCBuZXh0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXAgfmNvbmRpdGlvbiA9XG4gIGxldCBuZXh0X2RheSA9IGFkZF9kYXlzIHQgc3RlcCBpblxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyBuZXh0X2RheSB+c3RlcCB+Y29uZGl0aW9uXG47O1xuXG5sZXQgZm9sbG93aW5nX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHByZXZpb3VzX3dlZWtkYXkgdCA9IG5leHRfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2ZvcndhcmRfdG9fd2Vla2RheSB0ID0gZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDoxIH5jb25kaXRpb246aXNfd2Vla2RheVxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX3dlZWtkYXkgdCA9IGZpcnN0X2RheV9zYXRpc2Z5aW5nIHQgfnN0ZXA6KC0xKSB+Y29uZGl0aW9uOmlzX3dlZWtkYXlcblxubGV0IHJvdW5kX2ZvcndhcmRfdG9fYnVzaW5lc3NfZGF5IHQgfmlzX2hvbGlkYXkgPVxuICBmaXJzdF9kYXlfc2F0aXNmeWluZyB0IH5zdGVwOjEgfmNvbmRpdGlvbjooaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5KVxuOztcblxubGV0IHJvdW5kX2JhY2t3YXJkX3RvX2J1c2luZXNzX2RheSB0IH5pc19ob2xpZGF5ID1cbiAgZmlyc3RfZGF5X3NhdGlzZnlpbmcgdCB+c3RlcDooLTEpIH5jb25kaXRpb246KGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSlcbjs7XG5cbmxldCBhZGRfd2Vla2RheXMgdCBuID0gYWRkX2RheXNfc2tpcHBpbmcgdCB+c2tpcDppc193ZWVrZW5kIG5cbmxldCBhZGRfd2Vla2RheXNfcm91bmRpbmdfaW5fZGlyZWN0aW9uX29mX3N0ZXAgPSBhZGRfd2Vla2RheXNcblxubGV0IGFkZF93ZWVrZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX3dlZWtkYXkgdCkgfnNraXA6aXNfd2Vla2VuZCBuXG47O1xuXG5sZXQgYWRkX3dlZWtkYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b193ZWVrZGF5IHQpIH5za2lwOmlzX3dlZWtlbmQgblxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIHQgbiB+c2tpcDooZnVuIGQgLT4gaXNfd2Vla2VuZCBkIHx8IGlzX2hvbGlkYXkgZClcbjs7XG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19pbl9kaXJlY3Rpb25fb2Zfc3RlcCA9IGFkZF9idXNpbmVzc19kYXlzXG5cbmxldCBhZGRfYnVzaW5lc3NfZGF5c19yb3VuZGluZ19mb3J3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9mb3J3YXJkX3RvX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSB0KSBuIH5za2lwOihmdW4gZCAtPlxuICAgIG5vdCAoaXNfYnVzaW5lc3NfZGF5IH5pc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGFkZF9idXNpbmVzc19kYXlzX3JvdW5kaW5nX2JhY2t3YXJkIHQgfmlzX2hvbGlkYXkgbiA9XG4gIGFkZF9kYXlzX3NraXBwaW5nIChyb3VuZF9iYWNrd2FyZF90b19idXNpbmVzc19kYXkgfmlzX2hvbGlkYXkgdCkgbiB+c2tpcDooZnVuIGQgLT5cbiAgICBub3QgKGlzX2J1c2luZXNzX2RheSB+aXNfaG9saWRheSBkKSlcbjs7XG5cbmxldCBkYXRlc19iZXR3ZWVuIH5taW46dDEgfm1heDp0MiA9XG4gIGxldCByZWMgbG9vcCB0IGwgPSBpZiB0IDwgdDEgdGhlbiBsIGVsc2UgbG9vcCAoYWRkX2RheXMgdCAoLTEpKSAodCA6OiBsKSBpblxuICBsb29wIHQyIFtdXG47O1xuXG5sZXQgd2Vla2RheXNfYmV0d2VlbiB+bWluIH5tYXggPVxuICBsZXQgYWxsX2RhdGVzID0gZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggaW5cbiAgT3B0aW9uLnZhbHVlX21hcCAoTGlzdC5oZCBhbGxfZGF0ZXMpIH5kZWZhdWx0OltdIH5mOihmdW4gZmlyc3RfZGF0ZSAtPlxuICAgICgqIHRvIGF2b2lkIGEgc3lzdGVtIGNhbGwgb24gZXZlcnkgZGF0ZSwgd2UganVzdCBnZXQgdGhlIHdlZWtkYXkgZm9yIHRoZSBmaXJzdFxuICAgICAgIGRhdGUgYW5kIHVzZSBpdCB0byBnZXQgYWxsIHRoZSBvdGhlciB3ZWVrZGF5cyAqKVxuICAgIGxldCBmaXJzdF93ZWVrZGF5ID0gZGF5X29mX3dlZWsgZmlyc3RfZGF0ZSBpblxuICAgIGxldCBkYXRlX2FuZF93ZWVrZGF5cyA9XG4gICAgICBMaXN0Lm1hcGkgYWxsX2RhdGVzIH5mOihmdW4gaSBkYXRlIC0+IGRhdGUsIERheV9vZl93ZWVrLnNoaWZ0IGZpcnN0X3dlZWtkYXkgaSlcbiAgICBpblxuICAgIExpc3QuZmlsdGVyX21hcCBkYXRlX2FuZF93ZWVrZGF5cyB+ZjooZnVuIChkYXRlLCB3ZWVrZGF5KSAtPlxuICAgICAgaWYgRGF5X29mX3dlZWsuaXNfc3VuX29yX3NhdCB3ZWVrZGF5IHRoZW4gTm9uZSBlbHNlIFNvbWUgZGF0ZSkpXG47O1xuXG5sZXQgYnVzaW5lc3NfZGF0ZXNfYmV0d2VlbiB+bWluIH5tYXggfmlzX2hvbGlkYXkgPVxuICB3ZWVrZGF5c19iZXR3ZWVuIH5taW4gfm1heCB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGQgLT4gbm90IChpc19ob2xpZGF5IGQpKVxuOztcblxubGV0IGZpcnN0X3N0cmljdGx5X2FmdGVyIHQgfm9uOmRvdyA9XG4gIGxldCBkb3cgPSBEYXlfb2Zfd2Vlay50b19pbnQgZG93IGluXG4gIGxldCB0cGx1czEgPSBhZGRfZGF5cyB0IDEgaW5cbiAgbGV0IGN1ciA9IERheV9vZl93ZWVrLnRvX2ludCAoZGF5X29mX3dlZWsgdHBsdXMxKSBpblxuICBsZXQgZGlmZiA9IChkb3cgKyA3IC0gY3VyKSBtb2QgNyBpblxuICBhZGRfZGF5cyB0cGx1czEgZGlmZlxuOztcblxubW9kdWxlIEZvcl9xdWlja2NoZWNrID0gc3RydWN0XG4gIG9wZW4gUXVpY2tjaGVja1xuXG4gIGxldCBnZW5fdW5pZm9ybV9pbmNsIGQxIGQyID1cbiAgICBpZiBkMSA+IGQyXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkRhdGUuZ2VuX3VuaWZvcm1faW5jbDogYm91bmRzIGFyZSBjcm9zc2VkXCJcbiAgICAgICAgICAgIH5sb3dlcl9ib3VuZDooZDEgOiB0KVxuICAgICAgICAgICAgfnVwcGVyX2JvdW5kOihkMiA6IHQpXTtcbiAgICBHZW5lcmF0b3IubWFwIChJbnQuZ2VuX3VuaWZvcm1faW5jbCAwIChkaWZmIGQyIGQxKSkgfmY6KGZ1biBkYXlzIC0+IGFkZF9kYXlzIGQxIGRheXMpXG4gIDs7XG5cbiAgbGV0IGdlbl9pbmNsIGQxIGQyID1cbiAgICBHZW5lcmF0b3Iud2VpZ2h0ZWRfdW5pb25cbiAgICAgIFsgMS4sIEdlbmVyYXRvci5yZXR1cm4gZDE7IDEuLCBHZW5lcmF0b3IucmV0dXJuIGQyOyAxOC4sIGdlbl91bmlmb3JtX2luY2wgZDEgZDIgXVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIChvZl9zdHJpbmcgXCIxOTAwLTAxLTAxXCIpIChvZl9zdHJpbmcgXCIyMTAwLTAxLTAxXCIpXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID0gT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZTpfIH5oYXNoIC0+IGhhc2hfZm9sZF90IGhhc2ggdClcbiAgbGV0IHF1aWNrY2hlY2tfc2hyaW5rZXIgPSBTaHJpbmtlci5lbXB0eSAoKVxuZW5kXG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfZ2VuZXJhdG9yXG5sZXQgZ2VuX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBGb3JfcXVpY2tjaGVjay5nZW5fdW5pZm9ybV9pbmNsXG5sZXQgcXVpY2tjaGVja19vYnNlcnZlciA9IEZvcl9xdWlja2NoZWNrLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gRm9yX3F1aWNrY2hlY2sucXVpY2tjaGVja19zaHJpbmtlclxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgbGVhcF95ZWFyX3RhYmxlID0gbGVhcF95ZWFyX3RhYmxlXG4gIGxldCBub25fbGVhcF95ZWFyX3RhYmxlID0gbm9uX2xlYXBfeWVhcl90YWJsZVxuICBsZXQgb3JkaW5hbF9kYXRlID0gb3JkaW5hbF9kYXRlXG5lbmRcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID1cbiAgICBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19nZW5lcmF0b3IgcXVpY2tjaGVja19nZW5lcmF0b3IpXG4gICAgICB+ZjpvZl9vcHRpb25cbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIChPcHRpb24ucXVpY2tjaGVja19zaHJpbmtlciBxdWlja2NoZWNrX3Nocmlua2VyKVxuICAgICAgfmY6b2Zfb3B0aW9uXG4gICAgICB+Zl9pbnZlcnNlOnRvX29wdGlvblxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgICBRdWlja2NoZWNrLk9ic2VydmVyLm9mX2hhc2hcbiAgICAgIChtb2R1bGUgc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICBlbmQpXG4gIDs7XG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICBlbmQpXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4gRGlnaXRfc3RyaW5nX2hlbHBlcnNcblxubGV0IHN1ZmZpeGVzIGNoYXIgPVxuICBsZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmIGluXG4gIFsgc3ByaW50ZiBcIiVjXCIgY2hhcjsgc3ByaW50ZiBcIiVjTVwiIGNoYXI7IHNwcmludGYgXCIlYy5NXCIgY2hhcjsgc3ByaW50ZiBcIiVjLk0uXCIgY2hhciBdXG4gIHw+IExpc3QuY29uY2F0X21hcCB+ZjooZnVuIHN1ZmZpeCAtPlxuICAgIFsgU3RyaW5nLmxvd2VyY2FzZSBzdWZmaXg7IFN0cmluZy51cHBlcmNhc2Ugc3VmZml4IF0pXG47O1xuXG5sZXQgYW1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnQScpXG5sZXQgcG1fc3VmZml4ZXMgPSBsYXp5IChzdWZmaXhlcyAnUCcpXG5cbigqIEF2b2lkcyB0aGUgYWxsb2NhdGlvbiB0aGF0IFtMaXN0LmZpbmRdIHdvdWxkIGVudGFpbCBpbiBib3RoIGJvdGggdGhlIGNsb3N1cmUgaW5wdXQgYW5kXG4gICB0aGUgb3B0aW9uIG91dHB1dC4gKilcbmxldCByZWMgZmluZF9zdWZmaXggc3RyaW5nIHN1ZmZpeGVzID1cbiAgbWF0Y2ggc3VmZml4ZXMgd2l0aFxuICB8IHN1ZmZpeCA6OiBzdWZmaXhlcyAtPlxuICAgIGlmIFN0cmluZy5pc19zdWZmaXggc3RyaW5nIH5zdWZmaXggdGhlbiBzdWZmaXggZWxzZSBmaW5kX3N1ZmZpeCBzdHJpbmcgc3VmZml4ZXNcbiAgfCBbXSAtPiBcIlwiXG47O1xuXG5sZXQgaGFzX2NvbG9uIHN0cmluZyBwb3MgfnVudGlsID0gcG9zIDwgdW50aWwgJiYgQ2hhci5lcXVhbCAnOicgc3RyaW5nLltwb3NdXG5cbigqIFRoaXMgZnVuY3Rpb24gZGVmaW5lcyB3aGF0IHdlIG1lYW50IGJ5IFwiZGVjaW1hbCBwb2ludFwiLCBiZWNhdXNlIGluIHNvbWUgc3RyaW5nIGZvcm1hdHNcbiAgIGl0IG1lYW5zICcuJyBhbmQgaW4gc29tZSBpdCBjYW4gYmUgJy4nIG9yICcsJy4gVGhlcmUncyBubyBwYXJ0aWN1bGFyIGRlbWFuZCBmb3Igc3VwcG9ydFxuICAgZm9yICcsJywgYW5kIHVzaW5nIGp1c3QgJy4nIGxldHMgdXMgdXNlIFtGbG9hdC5vZl9zdHJpbmddIGZvciB0aGUgZGVjaW1hbCBzdWJzdHJpbmdcbiAgIHdpdGhvdXQgYW55IHN1YnN0aXR1dGlvbnMuICopXG5sZXQgY2hhcl9pc19kZWNpbWFsX3BvaW50IHN0cmluZyBwb3MgPSBDaGFyLmVxdWFsICcuJyBzdHJpbmcuW3Bvc11cblxubGV0IGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgbGVuID1cbiAgaWYgbGVuID4gMCAmJiBDaGFyLmVxdWFsICcgJyBzdHJpbmcuW2xlbiAtIDFdIHRoZW4gbGVuIC0gMSBlbHNlIGxlblxuOztcblxubGV0W0Bjb2xkXSBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZS5PZmRheTogaW52YWxpZCBzdHJpbmdcIiBzdHJpbmcgcmVhc29uXVxuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRoX3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIHwgJ18nIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPlxuICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgc3RyaW5nXG4gICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBkaWdpdHMgYW5kL29yIHVuZGVyc2NvcmVzIGFmdGVyIGRlY2ltYWwgcG9pbnRcIlxuICBkb25lO1xuICAhbm9uemVyb1xuOztcblxubGV0IGNoZWNrX2RpZ2l0c193aXRob3V0X3VuZGVyc2NvcmVfYW5kX3JldHVybl9pZl9ub256ZXJvIHN0cmluZyBwb3MgfnVudGlsID1cbiAgbGV0IG5vbnplcm8gPSByZWYgZmFsc2UgaW5cbiAgZm9yIHBvcyA9IHBvcyB0byB1bnRpbCAtIDEgZG9cbiAgICBtYXRjaCBzdHJpbmcuW3Bvc10gd2l0aFxuICAgIHwgJzAnIC0+ICgpXG4gICAgfCAnMScgLi4gJzknIC0+IG5vbnplcm8gOj0gdHJ1ZVxuICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImV4cGVjdGVkIGRpZ2l0cyBhZnRlciBkZWNpbWFsIHBvaW50XCJcbiAgZG9uZTtcbiAgIW5vbnplcm9cbjs7XG5cbmxldCBwYXJzZSBzdHJpbmcgfmYgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgbGV0IGFtX29yX3BtLCB1bnRpbCA9XG4gICAgKCogZGlzY3JpbWluYXRlIGFtb25nIEFNICgxOjMwYW0pLCBQTSAoMTI6MzA6MDAgUC5NLiksIG9yIDI0LWhyICgxMzowMCkuICopXG4gICAgbWF0Y2hcbiAgICAgICggZmluZF9zdWZmaXggc3RyaW5nIChMYXp5LmZvcmNlIGFtX3N1ZmZpeGVzKVxuICAgICAgLCBmaW5kX3N1ZmZpeCBzdHJpbmcgKExhenkuZm9yY2UgcG1fc3VmZml4ZXMpIClcbiAgICB3aXRoXG4gICAgfCBcIlwiLCBcIlwiIC0+IGBocl8yNCwgbGVuXG4gICAgfCBhbSwgXCJcIiAtPiBgaHJfQU0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggYW0pXG4gICAgfCBcIlwiLCBwbSAtPiBgaHJfUE0sIGRlY3JlbWVudF9sZW5ndGhfaWZfZW5kc19pbl9zcGFjZSBzdHJpbmcgKGxlbiAtIFN0cmluZy5sZW5ndGggcG0pXG4gICAgfCBfLCBfIC0+IGBocl8yNCwgYXNzZXJ0IGZhbHNlXG4gICAgKCogSW1tZWRpYXRlbHkgYWJvdmUsIGl0IG1heSBzZWVtIG5vbnNlbnNpY2FsIHRvIHdyaXRlIFtgaHJfMjQsIGFzc2VydCBmYWxzZV0gd2hlbiB0aGVcbiAgICAgICBbYGhyXzI0XSBjYW4gbmV2ZXIgYmUgcmV0dXJuZWQuIFdlIGRvIHRoaXMgdG8gaGVscCB0aGUgY29tcGlsZXIgZmlndXJlIG91dCBuZXZlciB0b1xuICAgICAgIGFsbG9jYXRlIGEgdHVwbGUgaW4gdGhpcyBjb2RlOiB0aGUgW2xldF0gcGF0dGVybiBpcyBzeW50YWN0aWNhbGx5IGEgdHVwbGUgYW5kIGV2ZXJ5XG4gICAgICAgbWF0Y2ggY2xhdXNlIGlzIHN5bnRhY3RpY2FsbHkgYSB0dXBsZS4gKilcbiAgaW5cbiAgbGV0IHBvcyA9IDAgaW5cbiAgbGV0IHBvcywgaHIsIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzID1cbiAgICAoKiBlLmcuIFwiMTowMFwiIG9yIFwiMTowMDowMFwiICopXG4gICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMSkgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxMjowMFwiIG9yIFwiMTI6MDA6MDBcIiAqKVxuICAgIGVsc2UgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMywgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE1pbnV0ZXNfYW5kX21heWJlX3NlY29uZHNcbiAgICAgICgqIGUuZy4gXCIxYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMSA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMSwgcmVhZF8xX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjEyYW1cIjsgbXVzdCBoYXZlIEFNIG9yIFBNIChjaGVja2VkIGJlbG93KSAqKVxuICAgIGVsc2UgaWYgcG9zICsgMiA9IHVudGlsXG4gICAgdGhlblxuICAgICAgcG9zICsgMiwgcmVhZF8yX2RpZ2l0X2ludCBzdHJpbmcgfnBvcywgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kc1xuICAgICAgKCogZS5nLiBcIjA5MzBcIjsgbXVzdCBub3QgaGF2ZSBzZWNvbmRzICopXG4gICAgZWxzZSBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBgTWludXRlc19idXRfbm90X3NlY29uZHNcbiAgaW5cbiAgbGV0IHBvcywgbWluLCBleHBlY3Rfc2Vjb25kcyA9XG4gICAgbWF0Y2ggZXhwZWN0X21pbnV0ZXNfYW5kX3NlY29uZHMgd2l0aFxuICAgIHwgYE5laXRoZXJfbWludXRlc19ub3Jfc2Vjb25kcyAtPlxuICAgICAgKCogZS5nLiBcIjEyYW1cIiAqKVxuICAgICAgcG9zLCAwLCBmYWxzZVxuICAgIHwgKGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzKSBhcyBtYXliZV9zZWNvbmRzIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgaGFzX2NvbG9uIHN0cmluZyAocG9zICsgMikgfnVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICggcG9zICsgM1xuICAgICAgICAsIHJlYWRfMl9kaWdpdF9pbnQgc3RyaW5nIH5wb3NcbiAgICAgICAgLCBtYXRjaCBtYXliZV9zZWNvbmRzIHdpdGhcbiAgICAgICAgfCBgTWludXRlc19hbmRfbWF5YmVfc2Vjb25kcyAtPiB0cnVlXG4gICAgICAgIHwgYE1pbnV0ZXNfYnV0X25vdF9zZWNvbmRzIC0+XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCBlbmQgb2Ygc3RyaW5nIGFmdGVyIG1pbnV0ZXNcIiApXG4gICAgICAgICgqIGUuZy4gXCIxMjowMFwiICopXG4gICAgICBlbHNlIGlmIHBvcyArIDIgPSB1bnRpbFxuICAgICAgdGhlbiBwb3MgKyAyLCByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBpbnZhbGlkX3N0cmluZ1xuICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgIH5yZWFzb246XCJleHBlY3RlZCBjb2xvbiBvciBhbS9wbSBzdWZmaXggd2l0aCBvcHRpb25hbCBzcGFjZSBhZnRlciBtaW51dGVzXCJcbiAgaW5cbiAgbGV0IHNlYywgc3Vic2VjX3Bvcywgc3Vic2VjX2xlbiwgc3Vic2VjX25vbnplcm8gPVxuICAgIG1hdGNoIGV4cGVjdF9zZWNvbmRzIHdpdGhcbiAgICB8IGZhbHNlIC0+XG4gICAgICAoKiBlLmcuIFwiMTJhbVwiIG9yIFwiMTI6MDBcIiAqKVxuICAgICAgaWYgcG9zID0gdW50aWxcbiAgICAgIHRoZW4gMCwgcG9zLCAwLCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBUaGlzIGNhc2UgaXMgYWN0dWFsbHkgdW5yZWFjaGFibGUsIGJhc2VkIG9uIHRoZSB2YXJpb3VzIHdheXMgdGhhdFxuICAgICAgICAgICBbZXhwZWN0X3NlY29uZHNdIGNhbiBlbmQgdXAgZmFsc2UuICopXG4gICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiQlVHOiBkaWQgbm90IGV4cGVjdCBzZWNvbmRzLCBidXQgZm91bmQgdGhlbVwiXG4gICAgfCB0cnVlIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDA6MDBcIiAqKVxuICAgICAgaWYgcG9zICsgMiA+IHVudGlsXG4gICAgICB0aGVuXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowXCIgKilcbiAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJleHBlY3RlZCB0d28gZGlnaXRzIG9mIHNlY29uZHNcIlxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBzZWMgPSByZWFkXzJfZGlnaXRfaW50IHN0cmluZyB+cG9zIGluXG4gICAgICAgIGxldCBwb3MgPSBwb3MgKyAyIGluXG4gICAgICAgICgqIGUuZy4gXCIxMjowMDowMFwiICopXG4gICAgICAgIGlmIHBvcyA9IHVudGlsXG4gICAgICAgIHRoZW4gc2VjLCBwb3MsIDAsIGZhbHNlICgqIGUuZy4gXCIxMjowMDowMC4xMjNcIiAqKVxuICAgICAgICBlbHNlIGlmIHBvcyA8IHVudGlsICYmIGNoYXJfaXNfZGVjaW1hbF9wb2ludCBzdHJpbmcgcG9zXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoIHNlY1xuICAgICAgICAgICwgcG9zXG4gICAgICAgICAgLCB1bnRpbCAtIHBvc1xuICAgICAgICAgICwgY2hlY2tfZGlnaXRzX3dpdGhfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm8gc3RyaW5nIChwb3MgKyAxKSB+dW50aWwgKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW52YWxpZF9zdHJpbmdcbiAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgfnJlYXNvbjpcImV4cGVjdGVkIGRlY2ltYWwgcG9pbnQgb3IgYW0vcG0gc3VmZml4IGFmdGVyIHNlY29uZHNcIilcbiAgaW5cbiAgbGV0IGhyID1cbiAgICAoKiBOQi4gV2UgYWxyZWFkeSBrbm93IFtocl0gaXMgbm9uLW5lZ2F0aXZlLCBiZWNhdXNlIGl0J3MgdGhlIHJlc3VsdCBvZlxuICAgICAgIFtyZWFkXzJfZGlnaXRfaW50XS4gKilcbiAgICBtYXRjaCBhbV9vcl9wbSB3aXRoXG4gICAgfCBgaHJfQU0gLT5cbiAgICAgICgqIGUuZy4gXCIxMjowMGFtXCIgKilcbiAgICAgIGlmIGhyIDwgMSB8fCBociA+IDEyXG4gICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICBlbHNlIGlmIGhyID0gMTJcbiAgICAgIHRoZW4gMFxuICAgICAgZWxzZSBoclxuICAgIHwgYGhyX1BNIC0+XG4gICAgICAoKiBlLmcuIFwiMTI6MDBwbVwiICopXG4gICAgICBpZiBociA8IDEgfHwgaHIgPiAxMlxuICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImhvdXJzIG91dCBvZiBib3VuZHNcIlxuICAgICAgZWxzZSBpZiBociA9IDEyXG4gICAgICB0aGVuIDEyXG4gICAgICBlbHNlIGhyICsgMTJcbiAgICB8IGBocl8yNCAtPlxuICAgICAgKG1hdGNoIGV4cGVjdF9taW51dGVzX2FuZF9zZWNvbmRzIHdpdGhcbiAgICAgICB8IGBOZWl0aGVyX21pbnV0ZXNfbm9yX3NlY29uZHMgLT5cbiAgICAgICAgIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgd2l0aG91dCBtaW51dGVzIG9yIEFNL1BNXCJcbiAgICAgICB8IGBNaW51dGVzX2J1dF9ub3Rfc2Vjb25kcyB8IGBNaW51dGVzX2FuZF9tYXliZV9zZWNvbmRzIC0+XG4gICAgICAgICBpZiBociA+IDI0XG4gICAgICAgICB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiaG91cnMgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICBlbHNlIGlmIGhyID0gMjQgJiYgKG1pbiA+IDAgfHwgc2VjID4gMCB8fCBzdWJzZWNfbm9uemVybylcbiAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJ0aW1lIGlzIHBhc3QgMjQ6MDA6MDBcIiAoKiBlLmcuIFwiMTM6MDA6MDBcIiAqKVxuICAgICAgICAgZWxzZSBocilcbiAgaW5cbiAgbGV0IG1pbiA9XG4gICAgaWYgbWluID4gNTkgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm1pbnV0ZXMgb3V0IG9mIGJvdW5kc1wiIGVsc2UgbWluXG4gIGluXG4gIGxldCBzZWMgPVxuICAgIGlmIHNlYyA+IDYwIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzZWNvbmRzIG91dCBvZiBib3VuZHNcIiBlbHNlIHNlY1xuICBpblxuICBsZXQgc3Vic2VjX2xlbiA9IGlmIHNlYyA9IDYwIHx8IG5vdCBzdWJzZWNfbm9uemVybyB0aGVuIDAgZWxzZSBzdWJzZWNfbGVuIGluXG4gIGYgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbjs7XG5cbmxldCBwYXJzZV9pc284NjAxX2V4dGVuZGVkID9wb3MgP2xlbiBzdHIgfmYgPVxuICBsZXQgcG9zLCBsZW4gPVxuICAgIG1hdGNoXG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuICgpID9wb3MgP2xlbiB+dG90YWxfbGVuZ3RoOihTdHJpbmcubGVuZ3RoIHN0cilcbiAgICB3aXRoXG4gICAgfCBSZXN1bHQuT2sgeiAtPiB6XG4gICAgfCBSZXN1bHQuRXJyb3IgcyAtPlxuICAgICAgZmFpbHdpdGhmIFwiT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQ6ICVzXCIgKEVycm9yLnRvX3N0cmluZ19tYWNoIHMpICgpXG4gIGluXG4gIGlmIGxlbiA8IDJcbiAgdGhlbiBmYWlsd2l0aCBcImxlbiA8IDJcIlxuICBlbHNlIChcbiAgICBsZXQgaHIgPSByZWFkXzJfZGlnaXRfaW50IHN0ciB+cG9zIGluXG4gICAgaWYgaHIgPiAyNCB0aGVuIGZhaWx3aXRoIFwiaG91ciA+IDI0XCI7XG4gICAgaWYgbGVuID0gMlxuICAgIHRoZW4gZiBzdHIgfmhyIH5taW46MCB+c2VjOjAgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgIGVsc2UgaWYgbGVuIDwgNVxuICAgIHRoZW4gZmFpbHdpdGggXCIyIDwgbGVuIDwgNVwiXG4gICAgZWxzZSBpZiBub3QgKENoYXIuZXF1YWwgc3RyLltwb3MgKyAyXSAnOicpXG4gICAgdGhlbiBmYWlsd2l0aCBcImZpcnN0IGNvbG9uIG1pc3NpbmdcIlxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbiA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDMpIGluXG4gICAgICBpZiBtaW4gPj0gNjAgdGhlbiBmYWlsd2l0aCBcIm1pbnV0ZSA+IDYwXCI7XG4gICAgICBpZiBociA9IDI0ICYmIG1pbiA8PiAwIHRoZW4gZmFpbHdpdGggXCIyNCBob3VycyBhbmQgbm9uLXplcm8gbWludXRlXCI7XG4gICAgICBpZiBsZW4gPSA1XG4gICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWM6MCB+c3Vic2VjX3BvczoocG9zICsgbGVuKSB+c3Vic2VjX2xlbjowXG4gICAgICBlbHNlIGlmIGxlbiA8IDhcbiAgICAgIHRoZW4gZmFpbHdpdGggXCI1IDwgbGVuIDwgOFwiXG4gICAgICBlbHNlIGlmIG5vdCAoQ2hhci5lcXVhbCBzdHIuW3BvcyArIDVdICc6JylcbiAgICAgIHRoZW4gZmFpbHdpdGggXCJzZWNvbmQgY29sb24gbWlzc2luZ1wiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHNlYyA9IHJlYWRfMl9kaWdpdF9pbnQgc3RyIH5wb3M6KHBvcyArIDYpIGluXG4gICAgICAgICgqIHNlY29uZCBjYW4gYmUgNjAgaW4gdGhlIGNhc2Ugb2YgYSBsZWFwIHNlY29uZC4gVW5mb3J0dW5hdGVseSwgd2hhdCB3aXRoXG4gICAgICAgICAgIG5vbi1ob3VyLW11bHRpcGxlIHRpbWV6b25lIG9mZnNldHMsIHdlIGNhbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGF0XG4gICAgICAgICAgIHRoZSBob3VyIG9yIG1pbnV0ZSBtdXN0IGJlIGluIHRoYXQgY2FzZSAqKVxuICAgICAgICBpZiBzZWMgPiA2MCB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgc2Vjb25kOiAlaVwiIHNlYyAoKTtcbiAgICAgICAgaWYgaHIgPSAyNCAmJiBzZWMgPD4gMCB0aGVuIGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHNlY29uZHNcIjtcbiAgICAgICAgaWYgbGVuID0gOFxuICAgICAgICB0aGVuIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3M6KHBvcyArIGxlbikgfnN1YnNlY19sZW46MFxuICAgICAgICBlbHNlIGlmIGxlbiA9IDlcbiAgICAgICAgdGhlbiBmYWlsd2l0aCBcImxlbmd0aCA9IDlcIlxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBtYXRjaCBzdHIuW3BvcyArIDhdIHdpdGhcbiAgICAgICAgICB8ICcuJyB8ICcsJyAtPlxuICAgICAgICAgICAgbGV0IHN1YnNlY19wb3MgPSBwb3MgKyA4IGluXG4gICAgICAgICAgICBsZXQgc3Vic2VjX2xlbiA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgY2hlY2tfZGlnaXRzX3dpdGhvdXRfdW5kZXJzY29yZV9hbmRfcmV0dXJuX2lmX25vbnplcm9cbiAgICAgICAgICAgICAgICAgIHN0clxuICAgICAgICAgICAgICAgICAgKHN1YnNlY19wb3MgKyAxKVxuICAgICAgICAgICAgICAgICAgfnVudGlsOihwb3MgKyBsZW4pXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCB0cnVlIHdoZW4gc2VjID0gNjAgLT4gMFxuICAgICAgICAgICAgICB8IHRydWUgd2hlbiBociA9IDI0IC0+IGZhaWx3aXRoIFwiMjQgaG91cnMgYW5kIG5vbi16ZXJvIHN1YnNlY29uZHNcIlxuICAgICAgICAgICAgICB8IF8gLT4gbGVuIC0gOFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGYgc3RyIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW5cbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJtaXNzaW5nIHN1YnNlY29uZCBzZXBhcmF0b3JcIikpKSlcbjs7XG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmluX3Byb3QuU3RkXG5pbmNsdWRlIEhhc2guQnVpbHRpblxuXG5pbmNsdWRlIChcbiAgQmFzZSA6XG4gIHNpZ1xuICAgIHR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXkgW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjIGJvb2wgPSBib29sIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBjaGFyID0gY2hhciBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgZXhuID0gZXhuIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgaW50ID0gaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQzMiA9IGludDMyIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBpbnQ2NCA9IGludDY0IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBsaXN0ID0gJ2EgbGlzdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgbmF0aXZlaW50ID0gbmF0aXZlaW50IFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb24gW0BAZGVyaXZpbmcgc2V4cCwgc2V4cF9ncmFtbWFyXVxuICAgIHR5cGUgbm9ucmVjICdhIHJlZiA9ICdhIHJlZiBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gICAgdHlwZSBub25yZWMgc3RyaW5nID0gc3RyaW5nIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzIFtAQGRlcml2aW5nIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICB0eXBlIG5vbnJlYyB1bml0ID0gdW5pdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG4gIGVuZFxuICB3aXRoIHR5cGUgJ2EgYXJyYXkgOj0gJ2EgYXJyYXlcbiAgd2l0aCB0eXBlIGJvb2wgOj0gYm9vbFxuICB3aXRoIHR5cGUgY2hhciA6PSBjaGFyXG4gIHdpdGggdHlwZSBleG4gOj0gZXhuXG4gIHdpdGggdHlwZSBmbG9hdCA6PSBmbG9hdFxuICB3aXRoIHR5cGUgaW50IDo9IGludFxuICB3aXRoIHR5cGUgaW50MzIgOj0gaW50MzJcbiAgd2l0aCB0eXBlIGludDY0IDo9IGludDY0XG4gIHdpdGggdHlwZSAnYSBsaXN0IDo9ICdhIGxpc3RcbiAgd2l0aCB0eXBlIG5hdGl2ZWludCA6PSBuYXRpdmVpbnRcbiAgd2l0aCB0eXBlICdhIG9wdGlvbiA6PSAnYSBvcHRpb25cbiAgd2l0aCB0eXBlICdhIHJlZiA6PSAnYSByZWZcbiAgd2l0aCB0eXBlIHN0cmluZyA6PSBzdHJpbmdcbiAgd2l0aCB0eXBlIGJ5dGVzIDo9IGJ5dGVzXG4gIHdpdGggdHlwZSB1bml0IDo9IHVuaXQpXG4iLCJvcGVuIFBweF9jb21wYXJlX2xpYi5CdWlsdGluXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcbiAgbW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlLlN0YWJsZVxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIGV4Y2VwdGlvbiBOYW5fb3JfaW5mIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB0eXBlIHQgPSBmbG9hdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgIGxldCB2ZXJpZnkgdCA9XG4gICAgICBtYXRjaCBDYW1sLmNsYXNzaWZ5X2Zsb2F0IHQgd2l0aFxuICAgICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF96ZXJvIC0+ICgpXG4gICAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IHJhaXNlIE5hbl9vcl9pbmZcbiAgICA7O1xuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgb2ZfYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSB0ID1cbiAgICAgICAgICAgIHZlcmlmeSB0O1xuICAgICAgICAgICAgdFxuICAgICAgICAgIDs7XG4gICAgICAgIGVuZClcblxuICAgIGxldCBzZXhwX29mX3QgPSBGbG9hdC5zZXhwX29mX3RcblxuICAgIGxldCB0X29mX3NleHAgPSBmdW5jdGlvblxuICAgICAgfCBTZXhwLkF0b20gXyBhcyBzZXhwIC0+XG4gICAgICAgIGxldCB0ID0gRmxvYXQudF9vZl9zZXhwIHNleHAgaW5cbiAgICAgICAgKHRyeSB2ZXJpZnkgdCB3aXRoXG4gICAgICAgICB8IGUgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgKEltcG9ydC5FeG4udG9fc3RyaW5nIGUpIHNleHApO1xuICAgICAgICB0XG4gICAgICB8IHMgLT4gSW1wb3J0Lm9mX3NleHBfZXJyb3IgXCJEZWNpbWFsLnRfb2Zfc2V4cDogRXhwZWN0ZWQgQXRvbSwgZm91bmQgTGlzdFwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gRmxvYXQudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSAoZmxvYXRbQHF1aWNrY2hlY2suZ2VuZXJhdG9yIEZsb2F0Lmdlbl9maW5pdGVdKVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2gsIHF1aWNrY2hlY2ssIHR5cGVyZXBdXG5cbiAgICBsZXQgb2ZfbXVsdCBmID0gZlxuICAgIGxldCB0b19tdWx0IHQgPSB0XG4gICAgbGV0IG9mX3BlcmNlbnRhZ2UgZiA9IGYgLy4gMTAwLlxuICAgIGxldCB0b19wZXJjZW50YWdlIHQgPSB0ICouIDEwMC5cbiAgICBsZXQgb2ZfYnAgZiA9IGYgLy4gMTBfMDAwLlxuICAgIGxldCB0b19icCB0ID0gdCAqLiAxMF8wMDAuXG4gICAgbGV0IG9mX2JwX2ludCBpID0gb2ZfYnAgKEZsb2F0Lm9mX2ludCBpKVxuICAgIGxldCB0b19icF9pbnQgdCA9IEZsb2F0LnRvX2ludCAodG9fYnAgdClcblxuICAgIGxldCByb3VuZF9zaWduaWZpY2FudCBwIH5zaWduaWZpY2FudF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfc2lnbmlmaWNhbnQgcCB+c2lnbmlmaWNhbnRfZGlnaXRzXG4gICAgOztcblxuICAgIGxldCByb3VuZF9kZWNpbWFsX211bHQgcCB+ZGVjaW1hbF9kaWdpdHMgPSBGbG9hdC5yb3VuZF9kZWNpbWFsIHAgfmRlY2ltYWxfZGlnaXRzXG5cbiAgICBsZXQgcm91bmRfZGVjaW1hbF9wZXJjZW50YWdlIHAgfmRlY2ltYWxfZGlnaXRzID1cbiAgICAgIEZsb2F0LnJvdW5kX2RlY2ltYWwgKHAgKi4gMTAwLikgfmRlY2ltYWxfZGlnaXRzIC8uIDEwMC5cbiAgICA7O1xuXG4gICAgbGV0IHJvdW5kX2RlY2ltYWxfYnAgcCB+ZGVjaW1hbF9kaWdpdHMgPVxuICAgICAgRmxvYXQucm91bmRfZGVjaW1hbCAocCAqLiAxMDAwMC4pIH5kZWNpbWFsX2RpZ2l0cyAvLiAxMDAwMC5cbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBFeHBvbmVudCBvZiBpbnRcbiAgICAgICAgfCBFeHBvbmVudF9FIG9mIGludFxuICAgICAgICB8IERlY2ltYWwgb2YgaW50XG4gICAgICAgIHwgT2NhbWxcbiAgICAgICAgfCBDb21wYWN0IG9mIGludFxuICAgICAgICB8IENvbXBhY3RfRSBvZiBpbnRcbiAgICAgICAgfCBIZXggb2YgaW50XG4gICAgICAgIHwgSGV4X0Ugb2YgaW50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgICBsZXQgZXhwb25lbnQgfnByZWNpc2lvbiA9IEV4cG9uZW50IHByZWNpc2lvblxuICAgICAgbGV0IGV4cG9uZW50X0UgfnByZWNpc2lvbiA9IEV4cG9uZW50X0UgcHJlY2lzaW9uXG4gICAgICBsZXQgZGVjaW1hbCB+cHJlY2lzaW9uID0gRGVjaW1hbCBwcmVjaXNpb25cbiAgICAgIGxldCBvY2FtbCA9IE9jYW1sXG4gICAgICBsZXQgY29tcGFjdCB+cHJlY2lzaW9uID0gQ29tcGFjdCBwcmVjaXNpb25cbiAgICAgIGxldCBjb21wYWN0X0UgfnByZWNpc2lvbiA9IENvbXBhY3RfRSBwcmVjaXNpb25cbiAgICAgIGxldCBoZXggfnByZWNpc2lvbiA9IEhleCBwcmVjaXNpb25cbiAgICAgIGxldCBoZXhfRSB+cHJlY2lzaW9uID0gSGV4X0UgcHJlY2lzaW9uXG5cbiAgICAgIGxldCBmb3JtYXRfZmxvYXQgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEV4cG9uZW50IHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qZVwiIHByZWNpc2lvblxuICAgICAgICB8IEV4cG9uZW50X0UgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipFXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgRGVjaW1hbCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmZcIiBwcmVjaXNpb25cbiAgICAgICAgfCBPY2FtbCAtPiBzcHJpbnRmIFwiJUZcIlxuICAgICAgICB8IENvbXBhY3QgcHJlY2lzaW9uIC0+IHNwcmludGYgXCIlLipnXCIgcHJlY2lzaW9uXG4gICAgICAgIHwgQ29tcGFjdF9FIHByZWNpc2lvbiAtPiBzcHJpbnRmIFwiJS4qR1wiIHByZWNpc2lvblxuICAgICAgICB8IEhleCBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKmhcIiBwcmVjaXNpb25cbiAgICAgICAgfCBIZXhfRSBwcmVjaXNpb24gLT4gc3ByaW50ZiBcIiUuKkhcIiBwcmVjaXNpb25cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgZm9ybWF0IHggZm9ybWF0ID1cbiAgICAgIGxldCB4X2FicyA9IEZsb2F0LmFicyB4IGluXG4gICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gRm9ybWF0LmZvcm1hdF9mbG9hdCBmb3JtYXQgZmxvYXQgaW5cbiAgICAgIGlmIEZsb2F0LiggPSApIHhfYWJzIDAuXG4gICAgICB0aGVuIFwiMHhcIlxuICAgICAgZWxzZSBpZiBGbG9hdC4oID49ICkgeF9hYnMgMS5cbiAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEuKSBeIFwieFwiXG4gICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICB0aGVuIHN0cmluZyAoeCAqLiAxMDAuKSBeIFwiJVwiXG4gICAgICBlbHNlIHN0cmluZyAoeCAqLiAxMF8wMDAuKSBeIFwiYnBcIlxuICAgIDs7XG5cbiAgICBtb2R1bGUgU3RyaW5nYWJsZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gZmxvYXRcblxuICAgICAgKCogV0FSTklORyAtIFBMRUFTRSBSRUFEIEJFRk9SRSBFRElUSU5HIFRIRVNFIEZVTkNUSU9OUzpcblxuICAgICAgICAgVGhlIHN0cmluZyBjb252ZXJ0ZXJzIGluIFN0YWJsZS5WMSBzaG91bGQgbmV2ZXIgY2hhbmdlLiAgSWYgeW91IGFyZSBjaGFuZ2luZyB0aGVcbiAgICAgICAgIHNlbWFudGljcyBvZiBhbnl0aGluZyB0aGF0IGFmZmVjdHMgdGhlIHNleHAgb3IgYmluLWlvIHJlcHJlc2VudGF0aW9uIG9mIHZhbHVlcyBvZlxuICAgICAgICAgdGhpcyB0eXBlICh0aGlzIGluY2x1ZGVzIHRvX3N0cmluZyBhbmQgb2Zfc3RyaW5nKSBtYWtlIGEgU3RhYmxlLlYyIGFuZCBtYWtlIHlvdXJcbiAgICAgICAgIGNoYW5nZXMgdGhlcmUuICBUaGFua3MhICopXG4gICAgICBsZXQgdG9fc3RyaW5nIHggPVxuICAgICAgICBsZXQgeF9hYnMgPSBGbG9hdC5hYnMgeCBpblxuICAgICAgICBsZXQgc3RyaW5nIGZsb2F0ID0gc3ByaW50ZiBcIiUuNkdcIiBmbG9hdCBpblxuICAgICAgICBpZiBGbG9hdC4oID0gKSB4X2FicyAwLlxuICAgICAgICB0aGVuIFwiMHhcIlxuICAgICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAxLlxuICAgICAgICB0aGVuIHN0cmluZyAoeCAqLiAxLikgXiBcInhcIlxuICAgICAgICBlbHNlIGlmIEZsb2F0LiggPj0gKSB4X2FicyAwLjAxXG4gICAgICAgIHRoZW4gc3RyaW5nICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgICAgICAgZWxzZSBzdHJpbmcgKHggKi4gMTBfMDAwLikgXiBcImJwXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWFsbHlfb2Zfc3RyaW5nIHN0ciBmbG9hdF9vZl9zdHJpbmcgPVxuICAgICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJ4XCIgd2l0aFxuICAgICAgICB8IFNvbWUgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIFN0cmluZy5jaG9wX3N1ZmZpeCBzdHIgfnN1ZmZpeDpcIiVcIiB3aXRoXG4gICAgICAgICAgIHwgU29tZSBzdHIgLT4gZmxvYXRfb2Zfc3RyaW5nIHN0ciAqLiAwLjAxXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIChtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggc3RyIH5zdWZmaXg6XCJicFwiIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHN0ciAtPiBvZl9icCAoZmxvYXRfb2Zfc3RyaW5nIHN0cilcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoZiBcIlBlcmNlbnQub2Zfc3RyaW5nOiBtdXN0IGVuZCBpbiB4LCAlJSwgb3IgYnA6ICVzXCIgc3RyICgpKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyID1cbiAgICAgICAgbGV0IGZsb2F0IHN0ciA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi50X29mX3NleHAgKFNleHAuQXRvbSBzdHIpIGluXG4gICAgICAgIHJlYWxseV9vZl9zdHJpbmcgc3RyIGZsb2F0XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHN0ciA9IHJlYWxseV9vZl9zdHJpbmcgc3RyIEZsb2F0Lm9mX3N0cmluZ1xuICAgIGVuZFxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBTdHJpbmdhYmxlIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlIHRcblxuICAgICAgICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgICAgICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gICAgICBlbmRcbiAgICAgIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG5cbiAgICBpbmNsdWRlIChTZXhwYWJsZS5TdGFibGUuT2Zfc3RyaW5nYWJsZS5WMSAoU3RyaW5nYWJsZSkgOiBTZXhwYWJsZS5TIHdpdGggdHlwZSB0IDo9IHQpXG4gICAgaW5jbHVkZSAoRmxvYXQgOiBCaW5hYmxlIHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZiwgYmluX2lvXVxuXG4gICAgICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdFxuICAgICAgICAgICBzZXJpYWxpemF0aW9uIHJhdGhlciB0aGFuIHBlcmNlbnQgc2VyaWFsaXphdGlvbiwgc28gd2hlbiByZWFkaW5nXG4gICAgICAgICAgIGNvbXBhcmFibGUtYmFzZWQgY29udGFpbmVycyBpbiB3ZSBhY2NlcHQgZWl0aGVyIHNlcmlhbGl6YXRpb24uICopXG4gICAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgICAgbWF0Y2ggRmxvYXQudF9vZl9zZXhwIHNleHAgd2l0aFxuICAgICAgICAgIHwgZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IFYxLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICBsZXQgbm9uZSA9IEZsb2F0Lm5hblxuICAgICAgbGV0IGlzX25vbmUgdCA9IEZsb2F0LmlzX25hbiB0XG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgc29tZV9pc19yZXByZXNlbnRhYmxlID0gaXNfc29tZVxuICAgICAgbGV0IHNvbWUgPSBGbi5pZFxuICAgICAgbGV0IHVuY2hlY2tlZF92YWx1ZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fb3B0aW9uIHQgPSBpZiBpc19zb21lIHQgdGhlbiBTb21lICh1bmNoZWNrZWRfdmFsdWUgdCkgZWxzZSBOb25lXG4gICAgICBsZXQgYXBwbHlfd2l0aF9ub25lX2FzX25hbiA9ICggKi4gKVxuICAgICAgbGV0IG9mX211bHRfd2l0aF9uYW5fYXNfbm9uZSA9IEZuLmlkXG4gICAgICBsZXQgdG9fbXVsdF93aXRoX25vbmVfYXNfbmFuID0gRm4uaWRcblxuICAgICAgbGV0IG9mX29wdGlvbiBvcHQgPVxuICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBzb21lIHZcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIGlmIGlzX3NvbWUgdFxuICAgICAgICB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0XG4gICAgICAgIGVsc2UgcmFpc2VfcyBbJW1lc3NhZ2UgWyVoZXJlXSBcIlBlcmNlbnQuT3B0aW9uLnZhbHVlX2V4biBub25lXCJdXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9IGlmIGlzX3NvbWUgdCB0aGVuIHVuY2hlY2tlZF92YWx1ZSB0IGVsc2UgZGVmYXVsdFxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gdG9fb3B0aW9uIHQgfD4gT3B0aW9uLnNleHBfb2ZfdCBWMS5zZXhwX29mX3RcbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9IChPcHRpb24udF9vZl9zZXhwIFYxLnRfb2Zfc2V4cCkgc2V4cCB8PiBvZl9vcHRpb25cbiAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBbJXNleHBfZ3JhbW1hcjogVjEudCBPcHRpb24udF1cbiAgICBlbmRcbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgU3RhYmxlID0gU3RhYmxlLk9wdGlvblxuICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBtb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSB1bmNoZWNrZWRfdmFsdWVcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubGV0IGlzX3plcm8gdCA9IHQgPSAwLlxubGV0IGFwcGx5IHQgZiA9IHQgKi4gZlxubGV0IHNjYWxlIHQgZiA9IHQgKi4gZlxuXG5pbmNsdWRlIChcbnN0cnVjdFxuICBpbmNsdWRlIEZsb2F0XG5cbiAgbGV0ICggLy8gKSB4IHkgPSBvZl9tdWx0IHggLy4gb2ZfbXVsdCB5XG5lbmQgOlxuc2lnXG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgKCAqICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAtICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvICkgOiB0IC0+IHQgLT4gdFxuICB2YWwgKCAvLyApIDogdCAtPiB0IC0+IGZsb2F0XG4gIHZhbCBhYnMgOiB0IC0+IHRcbiAgdmFsIG5lZyA6IHQgLT4gdFxuICB2YWwgaXNfbmFuIDogdCAtPiBib29sXG4gIHZhbCBpc19pbmYgOiB0IC0+IGJvb2xcbiAgdmFsIHNpZ25fZXhuIDogdCAtPiBTaWduLnRcblxuICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuZW5kKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YWJsZS5WMVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubGV0IHZhbGlkYXRlID0gRmxvYXQudmFsaWRhdGVfb3JkaW5hcnlcbmxldCBvZl9zdHJpbmdfYWxsb3dfbmFuX2FuZF9pbmYgcyA9IFN0cmluZ2FibGUub2Zfc3RyaW5nX2FsbG93X25hbl9hbmRfaW5mIHNcbmxldCB0X29mX3NleHBfYWxsb3dfbmFuX2FuZF9pbmYgc2V4cCA9IG9mX3N0cmluZ19hbGxvd19uYW5fYW5kX2luZiAoU2V4cC50b19zdHJpbmcgc2V4cClcblxubW9kdWxlIEFsd2F5c19wZXJjZW50YWdlID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IGZvcm1hdCB4IGZvcm1hdCA9IEZvcm1hdC5mb3JtYXRfZmxvYXQgZm9ybWF0ICh4ICouIDEwMC4pIF4gXCIlXCJcbiAgbGV0IHRvX3N0cmluZyB4ID0gc3ByaW50ZiBcIiUuNkclJVwiICh4ICogMTAwLilcbiAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuXG5sZXQgcmFuZG9taXplIHNwYW4gfnBlcmNlbnQgfnNjYWxlID1cbiAgbGV0IG11bHQgPSBQZXJjZW50LnRvX211bHQgcGVyY2VudCBpblxuICBpZiBGbG9hdC4oIDwgKSBtdWx0IDAuIHx8IEZsb2F0LiggPiApIG11bHQgMS5cbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIlNwYW4ucmFuZG9taXplOiBwZXJjZW50IGlzIG91dCBvZiByYW5nZSBbMHgsIDF4XVwiIChwZXJjZW50IDogUGVyY2VudC50KV07XG4gIGxldCBmYWN0b3IgPSBSYW5kb20uZmxvYXRfcmFuZ2UgKDEuIC0uIG11bHQpIChGbG9hdC5vbmVfdWxwIGBVcCAoMS4gKy4gbXVsdCkpIGluXG4gIHNjYWxlIHNwYW4gZmFjdG9yXG47O1xuXG5sZXQgZm9ybWF0X2RlY2ltYWwgbiB0ZW50aHMgdW5pdHMgPVxuICBhc3NlcnQgKHRlbnRocyA+PSAwICYmIHRlbnRocyA8IDEwKTtcbiAgaWYgbiA8IDEwICYmIHRlbnRocyA8PiAwXG4gIHRoZW4gc3ByaW50ZiBcIiVkLiVkJXNcIiBuIHRlbnRocyB1bml0c1xuICBlbHNlIHNwcmludGYgXCIlZCVzXCIgbiB1bml0c1xuOztcblxubGV0IHNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zID1cbiAgbGV0IHMgPVxuICAgIGlmIGhyID49IDI0XG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCAoaHIgLyAyNCkgKEludC5vZl9mbG9hdCAoRmxvYXQub2ZfaW50IChociAlIDI0KSAvLiAyLjQpKSBcImRcIlxuICAgIGVsc2UgaWYgaHIgPiAwXG4gICAgdGhlbiBmb3JtYXRfZGVjaW1hbCBociAobWluIC8gNikgXCJoXCJcbiAgICBlbHNlIGlmIG1pbiA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1pbiAoc2VjIC8gNikgXCJtXCJcbiAgICBlbHNlIGlmIHNlYyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHNlYyAobXMgLyAxMDApIFwic1wiXG4gICAgZWxzZSBpZiBtcyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIG1zICh1cyAvIDEwMCkgXCJtc1wiXG4gICAgZWxzZSBpZiB1cyA+IDBcbiAgICB0aGVuIGZvcm1hdF9kZWNpbWFsIHVzIChucyAvIDEwMCkgXCJ1c1wiXG4gICAgZWxzZSBzcHJpbnRmIFwiJWluc1wiIG5zXG4gIGluXG4gIG1hdGNoIChzaWduIDogU2lnbi50KSB3aXRoXG4gIHwgTmVnIC0+IFwiLVwiIF4gc1xuICB8IFplcm8gfCBQb3MgLT4gc1xuOztcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc2lnbiA6IFNpZ24udFxuICAgICAgICA7IGhyIDogaW50XG4gICAgICAgIDsgbWluIDogaW50XG4gICAgICAgIDsgc2VjIDogaW50XG4gICAgICAgIDsgbXMgOiBpbnRcbiAgICAgICAgOyB1cyA6IGludFxuICAgICAgICA7IG5zIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIExpa2VfYV9mbG9hdCA9IHNpZ1xuICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5XaXRoX3plcm8gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBGbG9hdGFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgKCArICkgOiB0IC0+IHQgLT4gdFxuICAgICAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgICAgIHZhbCB6ZXJvIDogdFxuICAgICAgdmFsIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA6IHRcbiAgICAgIHZhbCBhYnMgOiB0IC0+IHRcbiAgICAgIHZhbCBuZWcgOiB0IC0+IHRcbiAgICAgIHZhbCBzY2FsZSA6IHQgLT4gZmxvYXQgLT4gdFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0IFtAQGRlcml2aW5nIGhhc2hdXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoXVxuXG4gICAgICBpbmNsdWRlIExpa2VfYV9mbG9hdCB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICBpbmNsdWRlIFJvYnVzdGx5X2NvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICBtb2R1bGUgQ29uc3RhbnQgOiBzaWdcbiAgICAgICAgdmFsIG5hbm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgOiBmbG9hdFxuICAgICAgICB2YWwgbmFub3NlY29uZCA6IHRcbiAgICAgICAgdmFsIG1pY3Jvc2Vjb25kIDogdFxuICAgICAgICB2YWwgbWlsbGlzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBzZWNvbmQgOiB0XG4gICAgICAgIHZhbCBtaW51dGUgOiB0XG4gICAgICAgIHZhbCBob3VyIDogdFxuICAgICAgICB2YWwgZGF5IDogdFxuICAgICAgZW5kXG5cbiAgICAgIHZhbCB0b19wYXJ0cyA6IHQgLT4gUGFydHMudFxuICAgICAgdmFsIG5leHQgOiB0IC0+IHRcbiAgICAgIHZhbCBwcmV2IDogdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHVuZGVybHlpbmcgPSBmbG9hdCBbQEBkZXJpdmluZyBoYXNoXVxuICAgICAgdHlwZSB0ID0gdW5kZXJseWluZyBbQEBkZXJpdmluZyBoYXNoXVxuXG4gICAgICBsZXQgbmV4dCB0ID0gRmxvYXQub25lX3VscCBgVXAgdFxuICAgICAgbGV0IHByZXYgdCA9IEZsb2F0Lm9uZV91bHAgYERvd24gdFxuXG4gICAgICAoKiBJRiBUSElTIFJFUFJFU0VOVEFUSU9OIEVWRVIgQ0hBTkdFUywgRU5TVVJFIFRIQVQgRUlUSEVSXG4gICAgICAgICAoMSkgYWxsIHZhbHVlcyBzZXJpYWxpemUgdGhlIHNhbWUgd2F5IGluIGJvdGggcmVwcmVzZW50YXRpb25zLCBvclxuICAgICAgICAgKDIpIHlvdSBhZGQgYSBuZXcgVGltZS5TcGFuIHZlcnNpb24gdG8gc3RhYmxlLm1sICopXG4gICAgICBpbmNsdWRlIChcbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEZsb2F0XG5cbiAgICAgICAgbGV0IHNpZ24gPSBzaWduX2V4blxuICAgICAgZW5kIDpcbiAgICAgICAgTGlrZV9hX2Zsb2F0IHdpdGggdHlwZSB0IDo9IHQpXG5cbiAgICAgICgqIGR1ZSB0byBwcmVjaXNpb24gbGltaXRhdGlvbnMgaW4gZmxvYXQgd2UgY2FuJ3QgZXhwZWN0IGJldHRlciB0aGFuIG1pY3Jvc2Vjb25kXG4gICAgICAgICBwcmVjaXNpb24gKilcbiAgICAgIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IDFFLTZcbiAgICAgICAgZW5kKVxuXG4gICAgICAoKiB0aGlzIHByZXZlbnRzIGFueSB3b3JyeSBhYm91dCBoYXZpbmcgdGhlc2UgdmVyeSBjb21tb24gbmFtZXMgcmVkZWZpbmVkIGJlbG93IGFuZFxuICAgICAgICAgbWFrZXMgdGhlaXIgdXNhZ2Ugd2l0aGluIHRoaXMgbW9kdWxlIHNhZmVyLiAgQ29uc3RhbnQgaXMgaW5jbHVkZWQgYXQgdGhlIHZlcnlcbiAgICAgICAgIGJvdHRvbSB0byByZS1leHBvcnQgdGhlc2UgY29uc3RhbnRzIGluIGEgbW9yZSBjb252ZW5pZW50IHdheSAqKVxuICAgICAgbW9kdWxlIENvbnN0YW50ID0gc3RydWN0XG4gICAgICAgIGxldCBuYW5vc2Vjb25kc19wZXJfc2Vjb25kID0gMUU5XG4gICAgICAgIGxldCBtaWNyb3NlY29uZHNfcGVyX3NlY29uZCA9IDFFNlxuICAgICAgICBsZXQgbWlsbGlzZWNvbmRzX3Blcl9zZWNvbmQgPSAxRTNcblxuICAgICAgICAoKiBzcGFucyBhcmUgc3RvcmVkIGFzIGEgZmxvYXQgaW4gc2Vjb25kcyAqKVxuICAgICAgICBsZXQgbmFub3NlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBuYW5vc2Vjb25kc19wZXJfc2Vjb25kKVxuICAgICAgICBsZXQgbWljcm9zZWNvbmQgPSBvZl9mbG9hdCAoMS4gLy4gbWljcm9zZWNvbmRzX3Blcl9zZWNvbmQpXG4gICAgICAgIGxldCBtaWxsaXNlY29uZCA9IG9mX2Zsb2F0ICgxLiAvLiBtaWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICAgICAgbGV0IHNlY29uZCA9IG9mX2Zsb2F0IDEuXG4gICAgICAgIGxldCBtaW51dGUgPSBvZl9mbG9hdCA2MC5cbiAgICAgICAgbGV0IGhvdXIgPSBvZl9mbG9hdCAoNjAuICouIDYwLilcbiAgICAgICAgbGV0IGRheSA9IG9mX2Zsb2F0ICgyNC4gKi4gNjAuICouIDYwLilcbiAgICAgIGVuZFxuXG5cbiAgICAgIGxldCB0b19wYXJ0cyB0IDogUGFydHMudCA9XG4gICAgICAgIGxldCBzaWduID0gRmxvYXQuc2lnbl9leG4gdCBpblxuICAgICAgICBsZXQgdCA9IGFicyB0IGluXG4gICAgICAgIGxldCBpbnRlZ3JhbCA9IEZsb2F0LnJvdW5kX2Rvd24gdCBpblxuICAgICAgICBsZXQgZnJhY3Rpb25hbCA9IHQgLS4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IHNlY29uZHMgPSBGbG9hdC5pcm91bmRfZG93bl9leG4gaW50ZWdyYWwgaW5cbiAgICAgICAgbGV0IG5hbm9zZWNvbmRzID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuIChmcmFjdGlvbmFsICouIDFFOSkgaW5cbiAgICAgICAgbGV0IHNlY29uZHMsIG5hbm9zZWNvbmRzID1cbiAgICAgICAgICBpZiBJbnQuZXF1YWwgbmFub3NlY29uZHMgMV8wMDBfMDAwXzAwMFxuICAgICAgICAgIHRoZW4gSW50LnN1Y2Mgc2Vjb25kcywgMFxuICAgICAgICAgIGVsc2Ugc2Vjb25kcywgbmFub3NlY29uZHNcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNlYyA9IHNlY29uZHMgbW9kIDYwIGluXG4gICAgICAgIGxldCBtaW51dGVzID0gc2Vjb25kcyAvIDYwIGluXG4gICAgICAgIGxldCBtaW4gPSBtaW51dGVzIG1vZCA2MCBpblxuICAgICAgICBsZXQgaHIgPSBtaW51dGVzIC8gNjAgaW5cbiAgICAgICAgbGV0IG5zID0gbmFub3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pY3Jvc2Vjb25kcyA9IG5hbm9zZWNvbmRzIC8gMTAwMCBpblxuICAgICAgICBsZXQgdXMgPSBtaWNyb3NlY29uZHMgbW9kIDEwMDAgaW5cbiAgICAgICAgbGV0IG1pbGxpc2Vjb25kcyA9IG1pY3Jvc2Vjb25kcyAvIDEwMDAgaW5cbiAgICAgICAgbGV0IG1zID0gbWlsbGlzZWNvbmRzIGluXG4gICAgICAgIHsgc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgKCAvICkgdCBmID0gVC5vZl9mbG9hdCAoKHQgOiBULnQgOj4gZmxvYXQpIC8uIGYpXG4gICAgbGV0ICggLy8gKSAoZiA6IFQudCkgKHQgOiBULnQpID0gKGYgOj4gZmxvYXQpIC8uICh0IDo+IGZsb2F0KVxuXG4gICAgKCogTXVsdGlwbHlpbmcgYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBkaXZpc2lvbiBieSAxRS0zICopXG4gICAgbGV0IHRvX25zICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KSAqLiBULkNvbnN0YW50Lm5hbm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fdXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWljcm9zZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fbXMgKHggOiBULnQpID0gKHggOj4gZmxvYXQpICouIFQuQ29uc3RhbnQubWlsbGlzZWNvbmRzX3Blcl9zZWNvbmRcbiAgICBsZXQgdG9fc2VjICh4IDogVC50KSA9ICh4IDo+IGZsb2F0KVxuICAgIGxldCB0b19taW4geCA9IHggLy8gVC5Db25zdGFudC5taW51dGVcbiAgICBsZXQgdG9faHIgeCA9IHggLy8gVC5Db25zdGFudC5ob3VyXG4gICAgbGV0IHRvX2RheSB4ID0geCAvLyBULkNvbnN0YW50LmRheVxuICAgIGxldCB0b19pbnQ2M19zZWNvbmRzX3JvdW5kX2Rvd25fZXhuIHggPSBGbG9hdC5pbnQ2M19yb3VuZF9kb3duX2V4biAodG9fc2VjIHgpXG4gICAgbGV0ICggKiogKSBmICh0IDogVC50KSA9IFQub2ZfZmxvYXQgKGYgKi4gKHQgOj4gZmxvYXQpKVxuXG4gICAgKCogRGl2aXNpb24gYnkgMUUzIGlzIG1vcmUgYWNjdXJhdGUgdGhhbiBtdWx0aXBseWluZyBieSAxRS0zICopXG4gICAgbGV0IG9mX25zIHggPSBULm9mX2Zsb2F0ICh4IC8uIFQuQ29uc3RhbnQubmFub3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfdXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWNyb3NlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2ZfbXMgeCA9IFQub2ZfZmxvYXQgKHggLy4gVC5Db25zdGFudC5taWxsaXNlY29uZHNfcGVyX3NlY29uZClcbiAgICBsZXQgb2Zfc2VjIHggPSBULm9mX2Zsb2F0IHhcbiAgICBsZXQgb2ZfaW50X3NlYyB4ID0gb2Zfc2VjIChGbG9hdC5vZl9pbnQgeClcbiAgICBsZXQgb2ZfaW50MzJfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDMyLnRvX2Zsb2F0IHNlYylcblxuICAgICgqIE5vdGUgdGhhdCBbSW50NjMudG9fZmxvYXRdIGNhbiBsb3NlIHByZWNpc2lvbiwgYnV0IG9ubHkgb24gaW5wdXRzIGxhcmdlIGVub3VnaCB0aGF0XG4gICAgICAgW29mX3NlY10gaW4gZWl0aGVyIHRoZSBUaW1lX25zIG9yIFRpbWVfZmxvYXQgY2FzZSB3b3VsZCBsb3NlIHByZWNpc2lvbiAob3IganVzdCBiZVxuICAgICAgIHBsYWluIG91dCBvZiBib3VuZHMpIGFueXdheS4gKilcbiAgICBsZXQgb2ZfaW50NjNfc2Vjb25kcyBzZWMgPSBvZl9zZWMgKEludDYzLnRvX2Zsb2F0IHNlYylcbiAgICBsZXQgb2ZfbWluIHggPSB4ICoqIFQuQ29uc3RhbnQubWludXRlXG4gICAgbGV0IG9mX2hyIHggPSB4ICoqIFQuQ29uc3RhbnQuaG91clxuICAgIGxldCBvZl9kYXkgeCA9IHggKiogVC5Db25zdGFudC5kYXlcblxuICAgIGxldCBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIHQgdW5pdF9vZl90aW1lID1cbiAgICAgIG1hdGNoICh1bml0X29mX3RpbWUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICAgICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiB0b19tcyB0XG4gICAgICB8IFNlY29uZCAtPiB0b19zZWMgdFxuICAgICAgfCBNaW51dGUgLT4gdG9fbWluIHRcbiAgICAgIHwgSG91ciAtPiB0b19ociB0XG4gICAgICB8IERheSAtPiB0b19kYXkgdFxuICAgIDs7XG5cbiAgICBsZXQgc2NhbGVfYnlfdW5pdF9vZl90aW1lIGZsb2F0IHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBvZl9ucyBmbG9hdFxuICAgICAgfCBNaWNyb3NlY29uZCAtPiBvZl91cyBmbG9hdFxuICAgICAgfCBNaWxsaXNlY29uZCAtPiBvZl9tcyBmbG9hdFxuICAgICAgfCBTZWNvbmQgLT4gb2Zfc2VjIGZsb2F0XG4gICAgICB8IE1pbnV0ZSAtPiBvZl9taW4gZmxvYXRcbiAgICAgIHwgSG91ciAtPiBvZl9ociBmbG9hdFxuICAgICAgfCBEYXkgLT4gb2ZfZGF5IGZsb2F0XG4gICAgOztcblxuICAgIGxldCBjcmVhdGVcbiAgICAgICAgICA/KHNpZ24gPSBTaWduLlBvcylcbiAgICAgICAgICA/KGRheSA9IDApXG4gICAgICAgICAgPyhociA9IDApXG4gICAgICAgICAgPyhtaW4gPSAwKVxuICAgICAgICAgID8oc2VjID0gMClcbiAgICAgICAgICA/KG1zID0gMClcbiAgICAgICAgICA/KHVzID0gMClcbiAgICAgICAgICA/KG5zID0gMClcbiAgICAgICAgICAoKVxuICAgICAgPVxuICAgICAgbGV0ICggKyApID0gVC4oICsgKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICBvZl9kYXkgKEZsb2F0Lm9mX2ludCBkYXkpXG4gICAgICAgICsgb2ZfaHIgKEZsb2F0Lm9mX2ludCBocilcbiAgICAgICAgKyBvZl9taW4gKEZsb2F0Lm9mX2ludCBtaW4pXG4gICAgICAgICsgb2Zfc2VjIChGbG9hdC5vZl9pbnQgc2VjKVxuICAgICAgICArIG9mX21zIChGbG9hdC5vZl9pbnQgbXMpXG4gICAgICAgICsgb2ZfdXMgKEZsb2F0Lm9mX2ludCB1cylcbiAgICAgICAgKyBvZl9ucyAoRmxvYXQub2ZfaW50IG5zKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIHNpZ24gd2l0aFxuICAgICAgfCBOZWcgLT4gVC4oIC0gKSBULnplcm8gdFxuICAgICAgfCBQb3MgfCBaZXJvIC0+IHRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb25zdGFudFxuXG4gICAgbGV0IHJhbmRvbWl6ZSB0IH5wZXJjZW50ID0gU3Bhbl9oZWxwZXJzLnJhbmRvbWl6ZSB0IH5wZXJjZW50IH5zY2FsZVxuXG4gICAgbGV0IHRvX3Nob3J0X3N0cmluZyB0ID1cbiAgICAgIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICAgICAgU3Bhbl9oZWxwZXJzLnNob3J0X3N0cmluZyB+c2lnbiB+aHIgfm1pbiB+c2VjIH5tcyB+dXMgfm5zXG4gICAgOztcblxuICAgICgqIFdBUk5JTkc6IGlmIHlvdSBhcmUgZ29pbmcgdG8gY2hhbmdlIHRoaXMgZnVuY3Rpb24gaW4gYW55IG1hdGVyaWFsIHdheSwgbWFrZSBzdXJlXG4gICAgICAgeW91IHVwZGF0ZSBTdGFibGUgYXBwcm9wcmlhdGVseS4gKilcbiAgICBsZXQgb2Zfc3RyaW5nX3YxX3YyIChzIDogc3RyaW5nKSB+aXNfdjIgPVxuICAgICAgdHJ5XG4gICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICB8IFwiXCIgLT4gZmFpbHdpdGggXCJlbXB0eSBzdHJpbmdcIlxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBsZXQgZmxvYXQgbiA9XG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcuZHJvcF9zdWZmaXggcyBuIHdpdGhcbiAgICAgICAgICAgIHwgXCJcIiAtPiBmYWlsd2l0aCBcIm5vIG51bWJlciBnaXZlblwiXG4gICAgICAgICAgICB8IHMgLT5cbiAgICAgICAgICAgICAgbGV0IHYgPSBGbG9hdC5vZl9zdHJpbmcgcyBpblxuICAgICAgICAgICAgICBWYWxpZGF0ZS5tYXliZV9yYWlzZSAoRmxvYXQudmFsaWRhdGVfb3JkaW5hcnkgdik7XG4gICAgICAgICAgICAgIHZcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAobWF0Y2ggcy5bSW50LiggLSApIGxlbiAxXSB3aXRoXG4gICAgICAgICAgIHwgJ3MnIC0+XG4gICAgICAgICAgICAgaWYgSW50LiggPj0gKSBsZW4gMiAmJiBDaGFyLiggPSApIHMuW0ludC4oIC0gKSBsZW4gMl0gJ20nXG4gICAgICAgICAgICAgdGhlbiBvZl9tcyAoZmxvYXQgMilcbiAgICAgICAgICAgICBlbHNlIGlmIGlzX3YyICYmIEludC4oID49ICkgbGVuIDIgJiYgQ2hhci4oID0gKSBzLltJbnQuKCAtICkgbGVuIDJdICd1J1xuICAgICAgICAgICAgIHRoZW4gb2ZfdXMgKGZsb2F0IDIpXG4gICAgICAgICAgICAgZWxzZSBpZiBpc192MiAmJiBJbnQuKCA+PSApIGxlbiAyICYmIENoYXIuKCA9ICkgcy5bSW50LiggLSApIGxlbiAyXSAnbidcbiAgICAgICAgICAgICB0aGVuIG9mX25zIChmbG9hdCAyKVxuICAgICAgICAgICAgIGVsc2UgVC5vZl9mbG9hdCAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnbScgLT4gb2ZfbWluIChmbG9hdCAxKVxuICAgICAgICAgICB8ICdoJyAtPiBvZl9ociAoZmxvYXQgMSlcbiAgICAgICAgICAgfCAnZCcgLT4gb2ZfZGF5IChmbG9hdCAxKVxuICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICBpZiBpc192MlxuICAgICAgICAgICAgIHRoZW4gZmFpbHdpdGggXCJUaW1lIHNwYW5zIG11c3QgZW5kIGluIG5zLCB1cywgbXMsIHMsIG0sIGgsIG9yIGQuXCJcbiAgICAgICAgICAgICBlbHNlIGZhaWx3aXRoIFwiVGltZSBzcGFucyBtdXN0IGVuZCBpbiBtcywgcywgbSwgaCwgb3IgZC5cIilcbiAgICAgIHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGludmFsaWRfYXJnZiBcIlNwYW4ub2Zfc3RyaW5nIGNvdWxkIG5vdCBwYXJzZSAnJXMnOiAlc1wiIHMgKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc2V4cF9lcnJvcl9leG4gZXhuIHNleHAgPSBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cFxuXG4gICAgZXhjZXB0aW9uIFRfb2Zfc2V4cCBvZiBTZXhwLnQgKiBleG4gW0BAZGVyaXZpbmcgc2V4cF1cbiAgICBleGNlcHRpb24gVF9vZl9zZXhwX2V4cGVjdGVkX2F0b21fYnV0X2dvdCBvZiBTZXhwLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgIGxldCB0X29mX3NleHBfdjFfdjIgc2V4cCB+aXNfdjIgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nX3YxX3YyIHggfmlzX3YyIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHAgKHNleHAsIGV4bikpIHNleHApXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3JfZXhuIChUX29mX3NleHBfZXhwZWN0ZWRfYXRvbV9idXRfZ290IHNleHApIHNleHBcbiAgICA7O1xuXG4gICAgbGV0IHN0cmluZyB+aXNfdjIgc3VmZml4IGZsb2F0ID1cbiAgICAgIGlmIGlzX3YyXG4gICAgICAoKiBUaGlzIGlzIHRoZSBzYW1lIGZsb2F0LXRvLXN0cmluZyBjb252ZXJzaW9uIHVzZWQgaW4gW0Zsb2F0LnNleHBfb2ZfdF0uICBJdCdzIGxpa2VcbiAgICAgICAgIFtGbG9hdC50b19zdHJpbmddLCBidXQgbWF5IGxlYXZlIG9mZiB0cmFpbGluZyBwZXJpb2QuICopXG4gICAgICB0aGVuICFTZXhwbGliLkNvbnYuZGVmYXVsdF9zdHJpbmdfb2ZfZmxvYXQgZmxvYXQgXiBzdWZmaXhcbiAgICAgIGVsc2Ugc3ByaW50ZiBcIiVnJXNcIiBmbG9hdCBzdWZmaXhcbiAgICA7O1xuXG4gICAgKCogV0FSTklORzogaWYgeW91IGFyZSBnb2luZyB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpbiBhbnkgbWF0ZXJpYWwgd2F5LCBtYWtlIHN1cmVcbiAgICAgICB5b3UgdXBkYXRlIFN0YWJsZSBhcHByb3ByaWF0ZWx5LiAqKVxuICAgICgqIEknZCBsaWtlIGl0IHRvIGJlIHRoZSBjYXNlIHRoYXQgeW91IGNvdWxkIG5ldmVyIGNvbnN0cnVjdCBhbiBpbmZpbml0ZSBzcGFuLCBidXQgSVxuICAgICAgIGNhbid0IHRoaW5rIG9mIGEgZ29vZCB3YXkgdG8gZW5mb3JjZSBpdC4gIFNvIHRoaXMgdG9fc3RyaW5nIGZ1bmN0aW9uIGNhbiBwcm9kdWNlXG4gICAgICAgc3RyaW5ncyB0aGF0IHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhleSBhcmUgZmVkIHRvIG9mX3N0cmluZyAqKVxuICAgIGxldCB0b19zdHJpbmdfdjFfdjIgKHQgOiBULnQpIH5pc192MiA9XG4gICAgICAoKiB0aGlzIGlzIGEgc2FkIGJyb2tlbiBhYnN0cmFjdGlvbi4uLiAqKVxuICAgICAgbGV0IG1vZHVsZSBDID0gRmxvYXQuQ2xhc3MgaW5cbiAgICAgIG1hdGNoIEZsb2F0LmNsYXNzaWZ5ICh0IDo+IGZsb2F0KSB3aXRoXG4gICAgICB8IEMuU3Vibm9ybWFsIHwgQy5aZXJvIC0+IFwiMHNcIlxuICAgICAgfCBDLkluZmluaXRlIC0+IGlmIFQuKCA+ICkgdCBULnplcm8gdGhlbiBcImluZlwiIGVsc2UgXCItaW5mXCJcbiAgICAgIHwgQy5OYW4gLT4gXCJuYW5cIlxuICAgICAgfCBDLk5vcm1hbCAtPlxuICAgICAgICBsZXQgKCA8ICkgPSBULiggPCApIGluXG4gICAgICAgIGxldCBhYnNfdCA9IFQub2ZfZmxvYXQgKEZsb2F0LmFicyAodCA6PiBmbG9hdCkpIGluXG4gICAgICAgIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWNyb3NlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJuc1wiICh0b19ucyB0KVxuICAgICAgICBlbHNlIGlmIGlzX3YyICYmIGFic190IDwgVC5Db25zdGFudC5taWxsaXNlY29uZFxuICAgICAgICB0aGVuIHN0cmluZyB+aXNfdjIgXCJ1c1wiICh0b191cyB0KVxuICAgICAgICBlbHNlIGlmIGFic190IDwgVC5Db25zdGFudC5zZWNvbmRcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibXNcIiAodG9fbXMgdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQubWludXRlXG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcInNcIiAodG9fc2VjIHQpXG4gICAgICAgIGVsc2UgaWYgYWJzX3QgPCBULkNvbnN0YW50LmhvdXJcbiAgICAgICAgdGhlbiBzdHJpbmcgfmlzX3YyIFwibVwiICh0b19taW4gdClcbiAgICAgICAgZWxzZSBpZiBhYnNfdCA8IFQuQ29uc3RhbnQuZGF5XG4gICAgICAgIHRoZW4gc3RyaW5nIH5pc192MiBcImhcIiAodG9faHIgdClcbiAgICAgICAgZWxzZSBzdHJpbmcgfmlzX3YyIFwiZFwiICh0b19kYXkgdClcbiAgICA7O1xuXG4gICAgbGV0IHNleHBfb2ZfdF92MV92MiB0IH5pc192MiA9IFNleHAuQXRvbSAodG9fc3RyaW5nX3YxX3YyIHQgfmlzX3YyKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9IHRfb2Zfc2V4cF92MV92MiBzZXhwIH5pc192MjpmYWxzZVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF92MV92MiB0IH5pc192MjpmYWxzZVxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgZW5kXG5cbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWMVxuXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID0gdF9vZl9zZXhwX3YxX3YyIHNleHAgfmlzX3YyOnRydWVcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3RfdjFfdjIgdCB+aXNfdjI6dHJ1ZVxuICBlbmRcblxuICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFYxXG5cbiAgICBsZXQgdG9fdW5pdF9vZl90aW1lIHQgOiBVbml0X29mX3RpbWUudCA9XG4gICAgICBsZXQgb3BlbiBUIGluXG4gICAgICBsZXQgb3BlbiBDb25zdGFudCBpblxuICAgICAgbGV0IGFic190ID0gVC5hYnMgdCBpblxuICAgICAgaWYgYWJzX3QgPj0gZGF5XG4gICAgICB0aGVuIERheVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBob3VyXG4gICAgICB0aGVuIEhvdXJcbiAgICAgIGVsc2UgaWYgYWJzX3QgPj0gbWludXRlXG4gICAgICB0aGVuIE1pbnV0ZVxuICAgICAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgICAgIHRoZW4gU2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pbGxpc2Vjb25kXG4gICAgICB0aGVuIE1pbGxpc2Vjb25kXG4gICAgICBlbHNlIGlmIGFic190ID49IG1pY3Jvc2Vjb25kXG4gICAgICB0aGVuIE1pY3Jvc2Vjb25kXG4gICAgICBlbHNlIE5hbm9zZWNvbmRcbiAgICA7O1xuXG4gICAgbGV0IG9mX3VuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50IC0+IFQudCA9XG4gICAgICBsZXQgb3BlbiBULkNvbnN0YW50IGluXG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOYW5vc2Vjb25kIC0+IG5hbm9zZWNvbmRcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gbWljcm9zZWNvbmRcbiAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgICAgIHwgU2Vjb25kIC0+IHNlY29uZFxuICAgICAgfCBNaW51dGUgLT4gbWludXRlXG4gICAgICB8IEhvdXIgLT4gaG91clxuICAgICAgfCBEYXkgLT4gZGF5XG4gICAgOztcblxuICAgIGxldCBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSA9XG4gICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgIHwgTmFub3NlY29uZCAtPiBcIm5zXCJcbiAgICAgIHwgTWljcm9zZWNvbmQgLT4gXCJ1c1wiXG4gICAgICB8IE1pbGxpc2Vjb25kIC0+IFwibXNcIlxuICAgICAgfCBTZWNvbmQgLT4gXCJzXCJcbiAgICAgIHwgTWludXRlIC0+IFwibVwiXG4gICAgICB8IEhvdXIgLT4gXCJoXCJcbiAgICAgIHwgRGF5IC0+IFwiZFwiXG4gICAgOztcblxuICAgIG1vZHVsZSBPZl9zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbiA9XG4gICAgICAgIGxldCBtZXNzYWdlID0gXCJUaW1lLlNwYW4ub2Zfc3RyaW5nOiBcIiBeIHJlYXNvbiBpblxuICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBtZXNzYWdlIHN0cmluZ11cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggdW5pdF9vZl90aW1lX2xpc3QgPVxuICAgICAgICBtYXRjaCB1bml0X29mX3RpbWVfbGlzdCB3aXRoXG4gICAgICAgIHwgW10gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBzdWZmaXhcIlxuICAgICAgICB8IHVuaXRfb2ZfdGltZSA6OiByZXN0IC0+XG4gICAgICAgICAgbGV0IHN1ZmZpeCA9IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgdW5pdF9vZl90aW1lIGluXG4gICAgICAgICAgaWYgU3RyaW5nLmlzX3N1YnN0cmluZ19hdCBzdHJpbmcgfnBvczppbmRleCB+c3Vic3RyaW5nOnN1ZmZpeFxuICAgICAgICAgIHRoZW4gdW5pdF9vZl90aW1lXG4gICAgICAgICAgZWxzZSBmaW5kX3VuaXRfb2ZfdGltZV9ieV9zdWZmaXggc3RyaW5nIH5pbmRleCByZXN0XG4gICAgICA7O1xuXG4gICAgICBsZXQgcGFyc2Vfc3VmZml4IHN0cmluZyB+aW5kZXggPVxuICAgICAgICAoKiBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgXCJtc1wiIGNvbWVzIGJlZm9yZSBcIm1cIiBpbiBbVW5pdF9vZl90aW1lLmFsbF0gdG8gZ2V0IGFcbiAgICAgICAgICAgY29ycmVjdCBtYXRjaCBvbiBtaWxsaXNlY29uZCB0aW1lc3RhbXBzLiBUaGlzIGFzc3VtcHRpb24gaXMgZGVtb25zdHJhdGVkIGluIHRoZVxuICAgICAgICAgICBleHBlY3QgdGVzdCBiZWxvdy4gKilcbiAgICAgICAgZmluZF91bml0X29mX3RpbWVfYnlfc3VmZml4IHN0cmluZyB+aW5kZXggVW5pdF9vZl90aW1lLmFsbFxuICAgICAgOztcblxuICAgICAgKCogV2UgdmFsaWRhdGUgbWFnbml0dWRlIHN0cmluZ3Mgc28gdGhhdCB3ZSBrbm93IHdoZXJlIHRoZSB1bml0LW9mLXRpbWUgc3VmZml4XG4gICAgICAgICBiZWdpbnMsIGFuZCBzbyB0aGF0IG9ubHkgc2Vuc2libGUgc3RyaW5ncyBhcmUgYWxsb3dlZC4gV2UgZG8gbm90IHdhbnQgdG8gYmUgYXNcbiAgICAgICAgIHBlcm1pc3NpdmUgYXMgW0Zsb2F0Lm9mX3N0cmluZ107IGZvciBleGFtcGxlLCBoZXhhZGVjaW1hbCBzcGFuIG1hZ25pdHVkZXMgYXJlIG5vdFxuICAgICAgICAgYWxsb3dlZC4gQWZ0ZXIgdmFsaWRhdGlvbiwgd2Ugc3RpbGwgdXNlIFtGbG9hdC5vZl9zdHJpbmddIHRvIHByb2R1Y2UgdGhlIGFjdHVhbFxuICAgICAgICAgdmFsdWUuICopXG4gICAgICBtb2R1bGUgRmxvYXRfcGFyc2VyID0gc3RydWN0XG4gICAgICAgICgqIFtJbl9kZWNpbWFsX2hhdmVfZGlnaXRdIGluY2x1ZGVzIGhhdmluZyBhIGRpZ2l0IGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4gKilcbiAgICAgICAgdHlwZSBzdGF0ZSA9XG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXRcbiAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXRcbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnblxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuXG4gICAgICAgIHR5cGUgdG9rZW4gPVxuICAgICAgICAgIHwgRGlnaXRcbiAgICAgICAgICB8IFBvaW50XG4gICAgICAgICAgfCBVbmRlclxuICAgICAgICAgIHwgU2lnblxuICAgICAgICAgIHwgRXhwdFxuXG4gICAgICAgIGxldCBzdGF0ZV9pc19maW5hbCA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0IC0+IHRydWVcbiAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdFxuICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0X29yX3NpZ25cbiAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQgLT4gZmFsc2VcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9rZW5fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCAnMCcgLi4gJzknIC0+IFNvbWUgRGlnaXRcbiAgICAgICAgICB8ICcuJyAtPiBTb21lIFBvaW50XG4gICAgICAgICAgfCAnXycgLT4gU29tZSBVbmRlclxuICAgICAgICAgIHwgJy0nIHwgJysnIC0+IFNvbWUgU2lnblxuICAgICAgICAgIHwgJ0UnIHwgJ2UnIC0+IFNvbWUgRXhwdFxuICAgICAgICAgIHwgXyAtPiBOb25lXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGludmFsaWRfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgICAgaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJpbnZhbGlkIHNwYW4gcGFydCBtYWduaXR1ZGVcIlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgZmluZF9pbmRleF9hZnRlcl9mbG9hdF9pbl9zdGF0ZSBzdHJpbmcgfmluZGV4IH5sZW4gfnN0YXRlID1cbiAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgIGlmIGluZGV4ID0gbGVuXG4gICAgICAgICAgdGhlbiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCB0b2tlbl9vZl9jaGFyIHN0cmluZy5baW5kZXhdIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBpZiBzdGF0ZV9pc19maW5hbCBzdGF0ZSB0aGVuIGluZGV4IGVsc2UgaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICB8IFNvbWUgdG9rZW4gLT5cbiAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICBtYXRjaCBzdGF0ZSwgdG9rZW4gd2l0aFxuICAgICAgICAgICAgICAgIHwgSW5faW50ZWdlcl9uZWVkX2RpZ2l0LCBEaWdpdCAtPiBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9uZWVkX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFVuZGVyXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX25lZWRfZGlnaXQsIFNpZ25cbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfbmVlZF9kaWdpdCwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgRGlnaXQgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFVuZGVyIC0+XG4gICAgICAgICAgICAgICAgICBJbl9pbnRlZ2VyX2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2ludGVnZXJfaGF2ZV9kaWdpdCwgUG9pbnQgLT4gSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9pbnRlZ2VyX2hhdmVfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2RlY2ltYWxfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBQb2ludFxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZGVjaW1hbF9uZWVkX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX25lZWRfZGlnaXQsIFNpZ24gLT4gaW52YWxpZF9zdHJpbmcgc3RyaW5nXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBVbmRlciAtPlxuICAgICAgICAgICAgICAgICAgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0XG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIEV4cHQgLT4gSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduXG4gICAgICAgICAgICAgICAgfCBJbl9kZWNpbWFsX2hhdmVfZGlnaXQsIFBvaW50IHwgSW5fZGVjaW1hbF9oYXZlX2RpZ2l0LCBTaWduIC0+XG4gICAgICAgICAgICAgICAgICBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRGlnaXQgLT4gSW5fZXhwb25lbnRfaGF2ZV9kaWdpdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdF9vcl9zaWduLCBTaWduIC0+IEluX2V4cG9uZW50X25lZWRfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgUG9pbnRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgVW5kZXJcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXRfb3Jfc2lnbiwgRXhwdCAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIERpZ2l0IC0+IEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X25lZWRfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9uZWVkX2RpZ2l0LCBVbmRlclxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgRXhwdFxuICAgICAgICAgICAgICAgIHwgSW5fZXhwb25lbnRfbmVlZF9kaWdpdCwgU2lnbiAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmdcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIERpZ2l0IHwgSW5fZXhwb25lbnRfaGF2ZV9kaWdpdCwgVW5kZXIgLT5cbiAgICAgICAgICAgICAgICAgIEluX2V4cG9uZW50X2hhdmVfZGlnaXRcbiAgICAgICAgICAgICAgICB8IEluX2V4cG9uZW50X2hhdmVfZGlnaXQsIFBvaW50XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBFeHB0XG4gICAgICAgICAgICAgICAgfCBJbl9leHBvbmVudF9oYXZlX2RpZ2l0LCBTaWduIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXg6KGluZGV4ICsgMSkgfmxlbiB+c3RhdGUpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGZpbmRfaW5kZXhfYWZ0ZXJfZmxvYXQgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgICBmaW5kX2luZGV4X2FmdGVyX2Zsb2F0X2luX3N0YXRlIHN0cmluZyB+aW5kZXggfmxlbiB+c3RhdGU6SW5faW50ZWdlcl9uZWVkX2RpZ2l0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHJlYyBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXggfmxlbiA9XG4gICAgICAgIGlmIEludC5lcXVhbCBpbmRleCBsZW5cbiAgICAgICAgdGhlbiBtYWduaXR1ZGVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHN1ZmZpeF9pbmRleCA9IEZsb2F0X3BhcnNlci5maW5kX2luZGV4X2FmdGVyX2Zsb2F0IHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSBwYXJzZV9zdWZmaXggc3RyaW5nIH5pbmRleDpzdWZmaXhfaW5kZXggaW5cbiAgICAgICAgICBsZXQgdW50aWxfaW5kZXggPVxuICAgICAgICAgICAgSW50LiggKyApIHN1ZmZpeF9pbmRleCAoU3RyaW5nLmxlbmd0aCAoc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZsb2F0X3N0cmluZyA9XG4gICAgICAgICAgICBTdHJpbmcuc3ViIHN0cmluZyB+cG9zOmluZGV4IH5sZW46KEludC4oIC0gKSBzdWZmaXhfaW5kZXggaW5kZXgpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZmxvYXQgPSBGbG9hdC5vZl9zdHJpbmcgZmxvYXRfc3RyaW5nIGluXG4gICAgICAgICAgbGV0IG1hZ25pdHVkZSA9IG1hZ25pdHVkZSArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBmbG9hdCB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBhY2N1bXVsYXRlX21hZ25pdHVkZSBzdHJpbmcgfm1hZ25pdHVkZSB+aW5kZXg6dW50aWxfaW5kZXggfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBwYXJzZV9tYWduaXR1ZGUgc3RyaW5nIH5pbmRleCB+bGVuID1cbiAgICAgICAgYWNjdW11bGF0ZV9tYWduaXR1ZGUgc3RyaW5nIH5tYWduaXR1ZGU6VC56ZXJvIH5pbmRleCB+bGVuXG4gICAgICA7O1xuXG4gICAgICBsZXQgb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgIG1hdGNoIHN0cmluZyB3aXRoXG4gICAgICAgIHwgXCJOQU5zXCIgLT4gb2Zfc2VjIEZsb2F0Lm5hblxuICAgICAgICB8IFwiLUlORnNcIiAtPiBvZl9zZWMgRmxvYXQubmVnX2luZmluaXR5XG4gICAgICAgIHwgXCJJTkZzXCIgLT4gb2Zfc2VjIEZsb2F0LmluZmluaXR5XG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0cmluZyBpblxuICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IGlucHV0XCI7XG4gICAgICAgICAgbGV0IG5lZ2F0aXZlLCBpbmRleCA9XG4gICAgICAgICAgICBtYXRjaCBzdHJpbmcuWzBdIHdpdGhcbiAgICAgICAgICAgIHwgJy0nIC0+IHRydWUsIDFcbiAgICAgICAgICAgIHwgJysnIC0+IGZhbHNlLCAxXG4gICAgICAgICAgICB8IF8gLT4gZmFsc2UsIDBcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIGluZGV4ID49IGxlbiB0aGVuIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwiZW1wdHkgaW5wdXRcIjtcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcGFyc2VfbWFnbml0dWRlIHN0cmluZyB+aW5kZXggfmxlbiBpblxuICAgICAgICAgIGlmIG5lZ2F0aXZlIHRoZW4gVC5uZWcgbWFnbml0dWRlIGVsc2UgbWFnbml0dWRlXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IG9mX3N0cmluZyA9IE9mX3N0cmluZy5vZl9zdHJpbmdcblxuICAgIG1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgIGxldCBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIGZsb2F0ID1cbiAgICAgICAgbGV0IHN0cmluZyA9IEZsb2F0LnRvX3N0cmluZyBmbG9hdCBpblxuICAgICAgICBsZXQgc3VmZml4ID0gXCIuXCIgaW5cbiAgICAgICAgaWYgU3RyaW5nLmlzX3N1ZmZpeCBzdHJpbmcgfnN1ZmZpeFxuICAgICAgICB0aGVuIFN0cmluZy5jaG9wX3N1ZmZpeF9leG4gc3RyaW5nIH5zdWZmaXhcbiAgICAgICAgZWxzZSBzdHJpbmdcbiAgICAgIDs7XG5cbiAgICAgICgqIEFzIHdlIGJ1aWxkIHVwIGEgc3RyaW5nLCB3ZSBrZWVwIGEgcnVubmluZyBzdW0gb2YgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSByZWFkXG4gICAgICAgICBiYWNrIGluLCBzbyB0aGF0IHdlIGNhbiBjb21wdXRlIHRoZSByZW1haW5kZXIgdGhhdCBuZWVkcyB0byBiZSBnZW5lcmF0ZWQuICopXG4gICAgICBsZXQgc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgPVxuICAgICAgICBzdW1fdCArIHNjYWxlX2J5X3VuaXRfb2ZfdGltZSBtYWduaXR1ZGUgdW5pdF9vZl90aW1lXG4gICAgICA7O1xuXG4gICAgICAoKiBGb3Igc29tZSB1bml0cyAodmVyeSBsYXJnZSBudW1iZXJzIG9mIGRheXMsIG9yIHNlY29uZHMgYW5kIHNtYWxsZXIpIHdlIGp1c3RcbiAgICAgICAgIHJlbmRlciBhIGZsb2F0IGRpcmVjdGx5LCB3aXRoIGEgZml4IGZvciByb3VuZG9mZiBlcnJvci4gKilcbiAgICAgIGxldCB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZSA9XG4gICAgICAgIGxldCBtYWduaXR1ZGUgPSBkaXZpZGVfYnlfdW5pdF9vZl90aW1lIGFic190IHVuaXRfb2ZfdGltZSBpblxuICAgICAgICBsZXQgc3VtX3QgPSBzdW0gfnN1bV90Onplcm8gfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgIGlmIHN1bV90ID0gYWJzX3RcbiAgICAgICAgdGhlblxuICAgICAgICAgIHN0cmluZ19vZl9mbG9hdF93aXRob3V0X3RyYWlsaW5nX2RlY2ltYWwgbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbWFnbml0dWRlID1cbiAgICAgICAgICAgIGlmIHN1bV90IDwgYWJzX3RcbiAgICAgICAgICAgIHRoZW4gbWFnbml0dWRlXG4gICAgICAgICAgICBlbHNlIGRpdmlkZV9ieV91bml0X29mX3RpbWUgKHByZXYgYWJzX3QpIHVuaXRfb2ZfdGltZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHN1bV90ID0gc3VtIH5zdW1fdDp6ZXJvIH51bml0X29mX3RpbWUgfm1hZ25pdHVkZSBpblxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgZml4dXBfbWFnbml0dWRlID0gZGl2aWRlX2J5X3VuaXRfb2ZfdGltZSByZW1fdCBmaXh1cF91bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXRfd2l0aG91dF90cmFpbGluZ19kZWNpbWFsIG1hZ25pdHVkZVxuICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICAoKiBbcmVtX3RdIGlzIGF0IFVMUCBzaXplIG9mIFthYnNfdF0sIGl0IG5lZWRzIGp1c3Qgb25lIGJpdCBvZiBwcmVjaXNpb24gKilcbiAgICAgICAgICBeIHNwcmludGYgXCIlLjFnXCIgZml4dXBfbWFnbml0dWRlXG4gICAgICAgICAgXiBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lIGZpeHVwX3VuaXRfb2ZfdGltZSlcbiAgICAgIDs7XG5cbiAgICAgICgqIEZvciBub24tZGVjaW1hbCB1bml0cyAobWludXRlcyBhbmQgZ3JlYXRlciksIHdlIHJlbmRlciBhbiBpbnRlZ2VyIG1hZ25pdHVkZSwgYW5kXG4gICAgICAgICByZXR1cm4gdGhhdCB3aXRoIHRoZSBydW5uaW5nIHN1bSBzbyB0aGUgcmVtYWluZGVyIGNhbiBiZSByZW5kZXJlZCBhdCBhIHNtYWxsZXJcbiAgICAgICAgIHVuaXQuICopXG4gICAgICBsZXQgdG9faW50X3N0cmluZ19hbmRfc3VtIHVuaXRfb2ZfdGltZSB+YWJzX3QgfnN1bV90ID1cbiAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgbGV0IHJlbV90ID0gYWJzX3QgLSBzdW1fdCBpblxuICAgICAgICAoKiBXZSBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIG11bHRpcGxlIG9mIFt1bml0X29mX3RpbWVdIHRoYXQgbmVlZHMgdG8gYmVcbiAgICAgICAgICAgYWRkZWQgdG8gW3N1bV90XS4gRHVlIHRvIHJvdW5kaW5nLCB0aGlzIGNhbiBiZSBvZmYgYnkgb25lICh3ZSd2ZSBuZXZlciBzZWVuIGFcbiAgICAgICAgICAgY2FzZSBvZmYgYnkgdHdvIG9yIG1vcmUpLCBzbyB3ZSByZS1jb21wdXRlIHRoZSByZW1haW5kZXIgYW5kIGNvcnJlY3QgaWZcbiAgICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgICBsZXQgbWFnbml0dWRlID0gRmxvYXQucm91bmRfZG93biAocmVtX3QgLy8gdW5pdF9zcGFuKSBpblxuICAgICAgICBsZXQgbmV3X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGUgaW5cbiAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgIGxldCBtYWduaXR1ZGUgPVxuICAgICAgICAgIGlmIG5ld19yZW1fdCA9IHplcm9cbiAgICAgICAgICB0aGVuIG1hZ25pdHVkZVxuICAgICAgICAgIGVsc2UgaWYgbmV3X3JlbV90IDwgemVyb1xuICAgICAgICAgIHRoZW4gbWFnbml0dWRlIC0uIDEuXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbmV4dF9tYWduaXR1ZGUgPSBtYWduaXR1ZGUgKy4gMS4gaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3N1bV90ID0gc3VtIH5zdW1fdCB+dW5pdF9vZl90aW1lIH5tYWduaXR1ZGU6bmV4dF9tYWduaXR1ZGUgaW5cbiAgICAgICAgICAgIGxldCBuZXh0X3JlbV90ID0gYWJzX3QgLSBuZXh0X3N1bV90IGluXG4gICAgICAgICAgICBpZiBuZXh0X3JlbV90IDwgemVybyB0aGVuIG1hZ25pdHVkZSBlbHNlIG5leHRfbWFnbml0dWRlKVxuICAgICAgICBpblxuICAgICAgICBpZiBGbG9hdC4oIDw9ICkgbWFnbml0dWRlIDAuXG4gICAgICAgIHRoZW4gXCJcIiwgc3VtX3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IHN0cmluZyA9XG4gICAgICAgICAgICBJbnQ2My50b19zdHJpbmcgKEludDYzLm9mX2Zsb2F0IG1hZ25pdHVkZSlcbiAgICAgICAgICAgIF4gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICBpblxuICAgICAgICAgIHN0cmluZywgbmV3X3N1bV90KVxuICAgICAgOztcblxuICAgICAgbGV0IGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHQgPSBGbG9hdC5sb2cxMCAodG9fc2VjIHQpXG5cbiAgICAgICgqIFRoZSBmaW5hbCBzZWNvbmRzLW9yLXNtYWxsZXIgdW5pdCBuZWVkcyB0byBiZSBwcmludGVkIHdpdGggZW5vdWdoIGRpZ2l0cyB0b1xuICAgICAgICAgcm91bmQtdHJpcCB0aGUgd2hvbGUgc3BhbiAod2hpY2ggaXMgbWludXRlcyBvciBncmVhdGVyKTsgdGhpcyBjYW4gYmVcbiAgICAgICAgIHNpZ25pZmljYW50bHkgZmV3ZXIgZGlnaXRzIHRoYW4gd291bGQgYmUgbmVlZGVkIGZvciB0aGUgc2Vjb25kcy1vci1zbWFsbGVyXG4gICAgICAgICByZW1haW5kZXIgaXRzZWxmLiAqKVxuICAgICAgbGV0IHRvX2Zsb2F0X3N0cmluZ19hZnRlcl9pbnRfc3RyaW5ncyB+c3VtX3QgfmFic190ID1cbiAgICAgICAgaWYgc3VtX3QgPj0gYWJzX3RcbiAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZW1fdCA9IGFic190IC0gc3VtX3QgaW5cbiAgICAgICAgICBsZXQgdW5pdF9vZl90aW1lID0gdG9fdW5pdF9vZl90aW1lIHJlbV90IGluXG4gICAgICAgICAgbGV0IHVuaXRfc3BhbiA9IG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICBsZXQgbWFnbml0dWRlID0gcmVtX3QgLy8gdW5pdF9zcGFuIGluXG4gICAgICAgICAgbGV0IG5ld19zdW1fdCA9IHN1bSB+c3VtX3QgfnVuaXRfb2ZfdGltZSB+bWFnbml0dWRlIGluXG4gICAgICAgICAgbGV0IG5ld19yZW1fdCA9IGFic190IC0gbmV3X3N1bV90IGluXG4gICAgICAgICAgaWYgYWJzIHJlbV90IDw9IGFicyBuZXdfcmVtX3RcbiAgICAgICAgICB0aGVuIFwiXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgPVxuICAgICAgICAgICAgICBGbG9hdC5pcm91bmRfZG93bl9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIHJlbV90KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBoYWxmX3VscCA9IChhYnNfdCAtIHByZXYgYWJzX3QpIC8gMi4gaW5cbiAgICAgICAgICAgIGxldCBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXQgPVxuICAgICAgICAgICAgICAoKiBUaGlzIHdvcmtzIG91dCB0byByb3VuZGluZyBkb3duLCBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgZXhhY3QgaW50ZWdlcnMsXG4gICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBkZWNyZW1lbnRlZC4gVGhpcyBtYWtlcyBzdXJlIHdlIGFsd2F5cyBzdG9wIGF0IGEgZGlnaXQgd2l0aFxuICAgICAgICAgICAgICAgICBzdHJpY3RseSBtb3JlIHByZWNpc2lvbiB0aGFuIGhhbGYgdGhlIFVMUC4gKilcbiAgICAgICAgICAgICAgSW50LnByZWQgKEZsb2F0Lmlyb3VuZF91cF9leG4gKGRlY2ltYWxfb3JkZXJfb2ZfbWFnbml0dWRlIGhhbGZfdWxwKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbnVtYmVyX29mX2RpZ2l0cyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIDEgKyBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmlyc3RfZGlnaXQgLSBvcmRlcl9vZl9tYWduaXR1ZGVfb2ZfZmluYWxfZGlnaXRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc3VmZml4ID0gc3VmZml4X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUgaW5cbiAgICAgICAgICAgIHNwcmludGYgXCIlLipnXCIgbnVtYmVyX29mX2RpZ2l0cyBtYWduaXR1ZGUgXiBzdWZmaXgpKVxuICAgICAgOztcblxuICAgICAgKCogVGhpcyBoZWxwZXIgYXZvaWRzIHVubmVjZXNzYXJ5IGFsbG9jYXRpb24sIGJlY2F1c2UgZm9yIG91ciB1c2UgYmVsb3csIGl0IGlzXG4gICAgICAgICBjb21tb24gdG8gaGF2ZSBlaXRoZXIgb3IgYm90aCBhcmd1bWVudHMgYmUgZW1wdHkuIEN1cnJlbnRseSAoMjAxOC0wMiksIHRoZVxuICAgICAgICAgYnVpbHQtaW4gW15dIGFsbG9jYXRlcyBldmVuIHdoZW4gYXBwZW5kaW5nIHRvIGFuIGVtcHR5IHN0cmluZy4gKilcbiAgICAgIGxldCAoIF4/ICkgeCB5ID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX2VtcHR5IHggdGhlbiB5IGVsc2UgaWYgU3RyaW5nLmlzX2VtcHR5IHkgdGhlbiB4IGVsc2UgeCBeIHlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgIGxldCBmbG9hdCA9IHRvX2Zsb2F0IHQgaW5cbiAgICAgICAgaWYgbm90IChGbG9hdC5pc19maW5pdGUgZmxvYXQpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBpZiAoKiBXZSBwcmludCBzcGVjaWZpYyBzcGVjaWFsIHN0cmluZ3MgZm9yIG5vbi1maW5pdGUgZmxvYXRzICopXG4gICAgICAgICAgICBGbG9hdC5pc19uYW4gZmxvYXRcbiAgICAgICAgICB0aGVuIFwiTkFOc1wiXG4gICAgICAgICAgZWxzZSBpZiBGbG9hdC5pc19uZWdhdGl2ZSBmbG9hdFxuICAgICAgICAgIHRoZW4gXCItSU5Gc1wiXG4gICAgICAgICAgZWxzZSBcIklORnNcIlxuICAgICAgICBlbHNlIGlmIHQgPSB6ZXJvXG4gICAgICAgIHRoZW4gXCIwc1wiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB1bml0X29mX3RpbWUgPSB0b191bml0X29mX3RpbWUgdCBpblxuICAgICAgICAgIGxldCBhYnNfdCA9IGFicyB0IGluXG4gICAgICAgICAgbGV0IHNpZ24gPSBpZiB0IDwgemVybyB0aGVuIFwiLVwiIGVsc2UgXCJcIiBpblxuICAgICAgICAgIGxldCBtYWduaXR1ZGVfc3RyaW5nID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXRfb2ZfdGltZSB3aXRoXG4gICAgICAgICAgICAoKiBXZSBjYW4gdXNlIG5vcm1hbCBmbG9hdCBub3RhdGlvbiBmb3Igc2Vjb25kcyBhbmQgc3ViLXNlY29uZCB1bml0cywgdGhleSBhcmVcbiAgICAgICAgICAgICAgIHJlYWRhYmxlIHdpdGggYSBkZWNpbWFsIHBvaW50LiAqKVxuICAgICAgICAgICAgfCBOYW5vc2Vjb25kIHwgTWljcm9zZWNvbmQgfCBNaWxsaXNlY29uZCB8IFNlY29uZCAtPlxuICAgICAgICAgICAgICB0b19mbG9hdF9zdHJpbmcgfmFic190IH51bml0X29mX3RpbWUgfmZpeHVwX3VuaXRfb2ZfdGltZTpOYW5vc2Vjb25kXG4gICAgICAgICAgICAoKiBGb3IgbGFyZ2UgZW5vdWdoIHZhbHVlcyB0aGF0IHRoZSBVTFAgaXMgYSBkYXkgb3IgbW9yZSwgd2UgY2FuIHVzZSBmbG9hdFxuICAgICAgICAgICAgICAgbm90YXRpb24gYmVjYXVzZSB3ZSBhcmUgZXhwcmVzc2luZyBhIHNpbmdsZSwgdmVyeSBsYXJnZSBpbnRlZ2VyLiAqKVxuICAgICAgICAgICAgfCBEYXkgd2hlbiBuZXh0IGFic190IC0gYWJzX3QgPj0gZGF5IC0+XG4gICAgICAgICAgICAgIHRvX2Zsb2F0X3N0cmluZyB+YWJzX3QgfnVuaXRfb2ZfdGltZSB+Zml4dXBfdW5pdF9vZl90aW1lOkRheVxuICAgICAgICAgICAgKCogRm9yIGV2ZXJ5dGhpbmcgaW4gYmV0d2Vlbiwgd2UgbmVlZCB0byB1c2UgaW50ZWdlciB1bml0cyBvZiBkYXlzLCBob3VycyxcbiAgICAgICAgICAgICAgIGFuZC9vciBtaW51dGVzLCBiZWNhdXNlIHRob3NlIHVuaXRzIGFyZSBub3QgcmVhZGFibGUgYXMgZGVjaW1hbHMsIGFuZCB3ZVxuICAgICAgICAgICAgICAgdGFjayBvbiBhIGRlY2ltYWwgcmVtYWluZGVyIG9mIGEgc2Vjb25kcy1vci1zbWFsbGVyIHVuaXQgaWYgbmVjZXNzYXJ5LiAqKVxuICAgICAgICAgICAgfCBNaW51dGUgfCBIb3VyIHwgRGF5IC0+XG4gICAgICAgICAgICAgIGxldCBzdW1fdCA9IHplcm8gaW5cbiAgICAgICAgICAgICAgbGV0IGRheV9zdHJpbmcsIHN1bV90ID0gdG9faW50X3N0cmluZ19hbmRfc3VtIH5hYnNfdCB+c3VtX3QgRGF5IGluXG4gICAgICAgICAgICAgIGxldCBob3VyX3N0cmluZywgc3VtX3QgPSB0b19pbnRfc3RyaW5nX2FuZF9zdW0gfmFic190IH5zdW1fdCBIb3VyIGluXG4gICAgICAgICAgICAgIGxldCBtaW51dGVfc3RyaW5nLCBzdW1fdCA9IHRvX2ludF9zdHJpbmdfYW5kX3N1bSB+YWJzX3QgfnN1bV90IE1pbnV0ZSBpblxuICAgICAgICAgICAgICBsZXQgZmxvYXRfc3RyaW5nID0gdG9fZmxvYXRfc3RyaW5nX2FmdGVyX2ludF9zdHJpbmdzIH5hYnNfdCB+c3VtX3QgaW5cbiAgICAgICAgICAgICAgZGF5X3N0cmluZyBePyBob3VyX3N0cmluZyBePyBtaW51dGVfc3RyaW5nIF4/IGZsb2F0X3N0cmluZ1xuICAgICAgICAgIGluXG4gICAgICAgICAgc2lnbiBePyBtYWduaXR1ZGVfc3RyaW5nKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCB0b19zdHJpbmcgPSBUb19zdHJpbmcudG9fc3RyaW5nXG4gICAgbGV0IHNleHBfb2ZfdCB0ID0gU2V4cC5BdG9tICh0b19zdHJpbmcgdClcblxuICAgIGxldCB0X29mX3NleHAgcyA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgU2V4cC5BdG9tIHggLT5cbiAgICAgICAgKHRyeSBvZl9zdHJpbmcgeCB3aXRoXG4gICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgcylcbiAgICAgIHwgU2V4cC5MaXN0IF8gLT5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3Bhbi5TdGFibGUuVjMudF9vZl9zZXhwOiBzZXhwIG11c3QgYmUgYW4gQXRvbVwiIHNcbiAgICA7O1xuXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gU2V4cGxpYi5TZXhwX2dyYW1tYXIuY29lcmNlIFN0cmluZy50X3NleHBfZ3JhbW1hclxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WM1xuXG5sZXQgdG9fcHJvcG9ydGlvbmFsX2Zsb2F0ID0gdG9fZmxvYXRcblxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBGbG9hdC5nZW5faW5jbCAodG9fc2VjIGxvKSAodG9fc2VjIGhpKSB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc2VjXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gICgqIFRlY2huaWNhbGx5IGV4Y2x1c2l2ZSByYXRoZXIgdGhhbiBpbmNsdXNpdmUsIGJ1dCBvdGhlcndpc2Ugc2F0aXNmaWVzIHRoZSBjb250cmFjdCB0b1xuICAgICB3aXRoaW4gMXVscCBvZiB0aGUgZ2l2ZW4gYm91bmRzLiAqKVxuICBGbG9hdC5nZW5fdW5pZm9ybV9leGNsICh0b19zZWMgbG8pICh0b19zZWMgaGkpIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zZWNcbjs7XG5cbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICgqIFdlIGdlbmVyYXRlIHNwYW5zIHVwIHRvIChzbGlnaHRseSBtb3JlIHRoYW4pIGEgbWlsbGVuaXVtLCBwb3NpdGl2ZSBvciBuZWdhdGl2ZS4gVGhpc1xuICAgICBpcyBiYXNlZCBvbiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLCBpbiB3aGljaCB5ZWFycyBhdmVyYWdlIDM2NS4yNDI1IGRheXMgd2hlblxuICAgICBhY2NvdW50aW5nIGZvciBsZWFwIGRheXMuIENvdmVyaW5nIGEgdHdvLW1pbGxlbml1bSBzcGFuIGlzIG1vcmUgdGhhbiBlbm91Z2ggZm9yIG1vc3RcbiAgICAgcHJhY3RpY2FsIHB1cnBvc2VzLCBjZXJ0YWlubHkgbW9yZSB0aGFuIGVub3VnaCB0byBjb3ZlciB0aGUgcmVwcmVzZW50YWJsZSByYW5nZSBvZlxuICAgICBbU3Bhbl9uc10sIGFuZCByZXN1bHRzIGluIGZpbml0ZSBzcGFucyBhbmQgdGltZXMgdGhhdCBjYW4gYmUgc2VyaWFsaXplZC5cblxuICAgICBXZSBnZW5lcmF0ZSBieSBmaWx0ZXJpbmcgdGhlIGRlZmF1bHQgZ2VuZXJhdG9yIHNvIHRoYXQgc3BhbnMgYXJlIHN0aWxsIHNrZXdlZCB0b3dhcmRcbiAgICAgc21hbGwgdmFsdWVzLCBldmVuIHRob3VnaCB0aGUgYm91bmRzIGFyZSBsYXJnZS4gKilcbiAgbGV0IG1pbGxlbml1bSA9IG9mX2RheSAoRmxvYXQucm91bmRfdXAgKDM2NS4yNDI1ICouIDEwMDAuKSkgaW5cbiAgUXVpY2tjaGVjay5HZW5lcmF0b3IuZmlsdGVyIHF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOihmdW4gdCAtPlxuICAgIG5lZyBtaWxsZW5pdW0gPD0gdCAmJiB0IDw9IG1pbGxlbml1bSlcbjs7XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuU3BhblwiXG4gIGVuZClcblxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX2JpbmFibGUgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF9vZl1cblxuICAgICgqIFByZXZpb3VzIHZlcnNpb25zIHJlbmRlcmVkIGhhc2gtYmFzZWQgY29udGFpbmVycyB1c2luZyBmbG9hdCBzZXJpYWxpemF0aW9uIHJhdGhlclxuICAgICAgIHRoYW4gdGltZSBzZXJpYWxpemF0aW9uLCBzbyB3aGVuIHJlYWRpbmcgaGFzaC1iYXNlZCBjb250YWluZXJzIGluIHdlIGFjY2VwdCBlaXRoZXJcbiAgICAgICBzZXJpYWxpemF0aW9uLiAqKVxuICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICBtYXRjaCBGbG9hdC50X29mX3NleHAgc2V4cCB3aXRoXG4gICAgICB8IGZsb2F0IC0+IG9mX2Zsb2F0IGZsb2F0XG4gICAgICB8IGV4Y2VwdGlvbiBfIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgOztcbiAgZW5kKVxuXG5tb2R1bGUgQyA9IHN0cnVjdFxuICB0eXBlIHQgPSBULnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuICB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IFQuY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgbGV0IGNvbXBhcmF0b3IgPSBULmNvbXBhcmF0b3JcblxuICAoKiBJbiAxMDguMDZhIGFuZCBlYXJsaWVyLCBzcGFucyBpbiBzZXhwcyBvZiBNYXBzIGFuZCBTZXRzIHdlcmUgcmF3IGZsb2F0cy4gIEZyb20gMTA4LjA3XG4gICAgIHRocm91Z2ggMTA5LjEzLCB0aGUgb3V0cHV0IGZvcm1hdCByZW1haW5lZCByYXcgYXMgYmVmb3JlLCBidXQgYm90aCB0aGUgcmF3IGFuZCBwcmV0dHlcbiAgICAgZm9ybWF0IHdlcmUgYWNjZXB0ZWQgYXMgaW5wdXQuICBGcm9tIDEwOS4xNCBvbiwgdGhlIG91dHB1dCBmb3JtYXQgd2FzIGNoYW5nZWQgZnJvbVxuICAgICByYXcgdG8gcHJldHR5LCB3aGlsZSBjb250aW51aW5nIHRvIGFjY2VwdCBib3RoIGZvcm1hdHMuICBPbmNlIHdlIGJlbGlldmUgbW9zdFxuICAgICBwcm9ncmFtcyBhcmUgYmV5b25kIDEwOS4xNCwgd2Ugd2lsbCBzd2l0Y2ggdGhlIGlucHV0IGZvcm1hdCB0byBubyBsb25nZXIgYWNjZXB0XG4gICAgIHJhdy4gKilcbiAgbGV0IHNleHBfb2ZfdCA9IHNleHBfb2ZfdFxuXG4gIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgbWF0Y2ggT3B0aW9uLnRyeV93aXRoIChmdW4gKCkgLT4gVC5vZl9mbG9hdCAoRmxvYXQudF9vZl9zZXhwIHNleHApKSB3aXRoXG4gICAgfCBTb21lIHQgLT4gdFxuICAgIHwgTm9uZSAtPiB0X29mX3NleHAgc2V4cFxuICA7O1xuZW5kXG5cbm1vZHVsZSBNYXAgPSBNYXAuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5tb2R1bGUgU2V0ID0gU2V0Lk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChDKVxuXG5pbmNsdWRlIENvbXBhcmFibGUuV2l0aF96ZXJvIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgbGV0IHplcm8gPSB6ZXJvXG4gIGVuZClcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN1ZmZpeF9vZl91bml0X29mX3RpbWUgPSBzdWZmaXhfb2ZfdW5pdF9vZl90aW1lXG4gIGxldCBwYXJzZV9zdWZmaXggPSBTdGFibGUuVjMuT2Zfc3RyaW5nLnBhcnNlX3N1ZmZpeFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5vcGVuIERpZ2l0X3N0cmluZ19oZWxwZXJzXG5vcGVuISBJbnQuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgU3BhbiA9IFNwYW5fZmxvYXRcblxuKCogQ3JlYXRlIGFuIGFic3RyYWN0IHR5cGUgZm9yIE9mZGF5IHRvIHByZXZlbnQgdXMgZnJvbSBjb25mdXNpbmcgaXQgd2l0aFxuICAgb3RoZXIgZmxvYXRzLlxuKilcbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIFQgOiBzaWdcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IGZsb2F0XG4gICAgICB0eXBlIHQgPSBwcml2YXRlIHVuZGVybHlpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBoYXNoLCB0eXBlcmVwXVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU19jb21tb24gd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgaW5jbHVkZSBSb2J1c3RseV9jb21wYXJhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgdmFsIGFkZCA6IHQgLT4gU3Bhbi50IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgc3ViIDogdCAtPiBTcGFuLnQgLT4gdCBvcHRpb25cbiAgICAgIHZhbCBuZXh0IDogdCAtPiB0IG9wdGlvblxuICAgICAgdmFsIHByZXYgOiB0IC0+IHQgb3B0aW9uXG4gICAgICB2YWwgZGlmZiA6IHQgLT4gdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gOiBTcGFuLnQgLT4gdFxuICAgICAgdmFsIG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCA6IFNwYW4udCAtPiB0XG4gICAgICB2YWwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgOiBTcGFuLnQgLT4gYm9vbFxuICAgICAgdmFsIHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IDogdCAtPiBTcGFuLnRcbiAgICAgIHZhbCBzdGFydF9vZl9kYXkgOiB0XG4gICAgICB2YWwgc3RhcnRfb2ZfbmV4dF9kYXkgOiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICAoKiBOdW1iZXIgb2Ygc2Vjb25kcyBzaW5jZSBtaWRuaWdodC4gKilcbiAgICAgIHR5cGUgdW5kZXJseWluZyA9IEZsb2F0LnRcblxuICAgICAgaW5jbHVkZSAoXG4gICAgICBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdFxuXG4gICAgICAgIGxldCBzaWduID0gc2lnbl9leG5cbiAgICAgIGVuZCA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gdW5kZXJseWluZyBbQEBkZXJpdmluZyBiaW5faW8sIGhhc2gsIHR5cGVyZXBdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgUm9idXN0bHlfY29tcGFyYWJsZSB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgIGluY2x1ZGUgRmxvYXRhYmxlIHdpdGggdHlwZSB0IDo9IHRcbiAgICAgIGVuZClcblxuICAgICAgKCogSUYgVEhJUyBSRVBSRVNFTlRBVElPTiBFVkVSIENIQU5HRVMsIEVOU1VSRSBUSEFUIEVJVEhFUlxuICAgICAgICAgKDEpIGFsbCB2YWx1ZXMgc2VyaWFsaXplIHRoZSBzYW1lIHdheSBpbiBib3RoIHJlcHJlc2VudGF0aW9ucywgb3JcbiAgICAgICAgICgyKSB5b3UgYWRkIGEgbmV3IFRpbWUuT2ZkYXkgdmVyc2lvbiB0byBzdGFibGUubWwgKilcblxuICAgICAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgICAgIHByZWNpc2lvbiAqKVxuICAgICAgaW5jbHVkZSBGbG9hdC5Sb2J1c3RfY29tcGFyZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCB0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gICAgICAoKiBBbm90aGVyIHJlYXNvbmFibGUgY2hvaWNlIHdvdWxkIGJlIG9ubHkgYWxsb3dpbmcgT2ZkYXkudCB0byBiZSA8IDI0aHIsIGJ1dCB0aGlzXG4gICAgICAgICBjaG9pY2Ugd2FzIG1hZGUgZWFybHkgb24gYW5kIHBlb3BsZSBiZWNhbWUgdXNlZCB0byBiZWluZyBhYmxlIHRvIGVhc2lseSBjYWxsIDI0aHJcbiAgICAgICAgIHRoZSBlbmQgb2YgdGhlIGRheS4gIEl0J3MgYSBiaXQgc2FkIGJlY2F1c2UgaXQgc2hhcmVzIHRoYXQgbW9tZW50IHdpdGggdGhlXG4gICAgICAgICBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZGF5LCBhbmQgcm91bmQgdHJpcHMgb2RkbHkgaWYgcGFzc2VkIHRocm91Z2hcbiAgICAgICAgIFRpbWUudG9fZGF0ZV9vZmRheS9UaW1lLm9mX2RhdGVfb2ZkYXkuXG5cbiAgICAgICAgIE5vdGU6IFtTY2hlZHVsZS50XSByZXF1aXJlcyB0aGF0IHRoZSBlbmQgb2YgZGF5IGJlIHJlcHJlc2VudGFibGUsIGFzIGl0J3MgdGhlXG4gICAgICAgICBvbmx5IHdheSB0byB3cml0ZSBhIHNjaGVkdWxlIGluIHRlcm1zIG9mIFtPZmRheS50XXMgdGhhdCBzcGFucyB0d28gd2Vla2RheXMuICopXG4gICAgICAoKiBvZmRheSBtdXN0IGJlID49IDAgYW5kIDw9IDI0aCAqKVxuICAgICAgbGV0IGlzX3ZhbGlkICh0IDogdCkgPVxuICAgICAgICBsZXQgdCA9IHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgaW5cbiAgICAgICAgU3Bhbi4oIDw9ICkgU3Bhbi56ZXJvIHQgJiYgU3Bhbi4oIDw9ICkgdCBTcGFuLmRheVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X3VuY2hlY2tlZCBzcGFuID0gU3Bhbi50b19zZWMgc3BhblxuXG4gICAgICBsZXQgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfaXNfdmFsaWQgc3BhbiA9XG4gICAgICAgIGlzX3ZhbGlkIChvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gc3BhbiA9XG4gICAgICAgIGxldCBtb2R1bGUgQyA9IEZsb2F0LkNsYXNzIGluXG4gICAgICAgIGxldCBzID0gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBtYXRjaCBGbG9hdC5jbGFzc2lmeSBzIHdpdGhcbiAgICAgICAgfCBDLkluZmluaXRlIC0+IGludmFsaWRfYXJnIFwiT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbmZpbml0ZSB2YWx1ZVwiXG4gICAgICAgIHwgQy5OYW4gLT4gaW52YWxpZF9hcmcgXCJPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG46IE5hTiB2YWx1ZVwiXG4gICAgICAgIHwgQy5Ob3JtYWwgfCBDLlN1Ym5vcm1hbCB8IEMuWmVybyAtPlxuICAgICAgICAgIGlmIG5vdCAoaXNfdmFsaWQgcylcbiAgICAgICAgICB0aGVuIGludmFsaWRfYXJnZiAhXCJPZmRheSBvdXQgb2YgcmFuZ2U6ICV7U3Bhbn1cIiBzcGFuICgpXG4gICAgICAgICAgZWxzZSBzXG4gICAgICA7O1xuXG4gICAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gMC5cbiAgICAgIGxldCBzdGFydF9vZl9uZXh0X2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBTcGFuLmRheVxuXG4gICAgICBsZXQgYWRkICh0IDogdCkgKHNwYW4gOiBTcGFuLnQpID1cbiAgICAgICAgbGV0IHQgPSB0ICsuIFNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgdCB0aGVuIFNvbWUgdCBlbHNlIE5vbmVcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWIgKHQgOiB0KSAoc3BhbiA6IFNwYW4udCkgPVxuICAgICAgICBsZXQgdCA9IHQgLS4gU3Bhbi50b19zZWMgc3BhbiBpblxuICAgICAgICBpZiBpc192YWxpZCB0IHRoZW4gU29tZSB0IGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IG5leHQgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBVcCB0IGluXG4gICAgICAgIGlmIGlzX3ZhbGlkIGNhbmRpZGF0ZSB0aGVuIFNvbWUgY2FuZGlkYXRlIGVsc2UgTm9uZVxuICAgICAgOztcblxuICAgICAgbGV0IHByZXYgdCA9XG4gICAgICAgIGxldCBjYW5kaWRhdGUgPSBGbG9hdC5vbmVfdWxwIGBEb3duIHQgaW5cbiAgICAgICAgaWYgaXNfdmFsaWQgY2FuZGlkYXRlIHRoZW4gU29tZSBjYW5kaWRhdGUgZWxzZSBOb25lXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlmZiB0MSB0MiA9XG4gICAgICAgIFNwYW4uKCAtICkgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQxKSAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdDIpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFwcHJveGltYXRlX2VuZF9vZl9kYXkgPVxuICAgICAgT3B0aW9uLnZhbHVlX2V4biAoVC5zdWIgVC5zdGFydF9vZl9uZXh0X2RheSBTcGFuLm1pY3Jvc2Vjb25kKVxuICAgIDs7XG5cbiAgICAoKiBbY3JlYXRlXSBjaG9wcyBvZmYgYW55IHN1YnNlY29uZCBwYXJ0IHdoZW4gW3NlYyA9IDYwXSB0byBoYW5kbGUgbGVhcCBzZWNvbmRzLiBJblxuICAgICAgIHBhcnRpY3VsYXIgaXQncyB0cnlpbmcgdG8gYmUgZ2VuZXJvdXMgYWJvdXQgcmVhZGluZyBpbiB0aW1lcyBvbiB0aGluZ3MgbGlrZSBmaXhcbiAgICAgICBtZXNzYWdlcyB0aGF0IG1pZ2h0IGluY2x1ZGUgYW4gZXh0cmEgdW5saWtlbHkgc2Vjb25kLlxuXG4gICAgICAgT3RoZXIgd2F5cyBvZiB3cml0aW5nIGEgdGltZSwgbGlrZSAxMDAwbXMsIHdoaWxlIG1hdGhlbWF0aWNhbGx5IHZhbGlkLCBkb24ndCBtYXRjaFxuICAgICAgIHdheXMgdGhhdCBwZW9wbGUgYWN0dWFsbHkgd3JpdGUgdGltZXMgZG93biwgc28gd2UgZGlkbid0IHNlZSB0aGUgbmVlZCB0byBzdXBwb3J0XG4gICAgICAgdGhlbS4gVGhhdCBpcywgYSBjbG9jayBtaWdodCBsZWdpdGltYXRlbHkgcmVhZCAyMzo1OTo2MCAob3IsIHdpdGggNjAgc2Vjb25kcyBhdFxuICAgICAgIHRpbWVzIG9mIGRheSBvdGhlciB0aGFuIDIzOjU5LCBkZXBlbmRpbmcgb24gdGhlIHRpbWUgem9uZSksIGJ1dCBpdCBkb2Vzbid0IHNlZW1cbiAgICAgICByZWFzb25hYmxlIGZvciBhIGNsb2NrIHRvIHJlYWQgXCIyMzo1OTo1OSBhbmQgMTAwMG1zXCIuICopXG4gICAgbGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgICAgIGxldCBtcywgdXMsIG5zID1cbiAgICAgICAgbWF0Y2ggc2VjIHdpdGhcbiAgICAgICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICAgICAgfCBfIC0+IG1zLCB1cywgbnNcbiAgICAgIGluXG4gICAgICBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi5jcmVhdGUgP2hyID9taW4gP3NlYyA/bXMgP3VzID9ucyAoKSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIChULnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQpXG5cbiAgICBsZXQgdG9fc3RyaW5nX2dlbiB+ZHJvcF9tcyB+ZHJvcF91cyB+dHJpbSB0ID1cbiAgICAgIGxldCAoIC8gKSA9IEludDYzLiggLyApIGluXG4gICAgICBsZXQgKCAhICkgPSBJbnQ2My5vZl9pbnQgaW5cbiAgICAgIGxldCAoIG1vZCApID0gSW50NjMucmVtIGluXG4gICAgICBsZXQgaSA9IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgIGFzc2VydCAoaWYgZHJvcF9tcyB0aGVuIGRyb3BfdXMgZWxzZSB0cnVlKTtcbiAgICAgIGxldCBmbG9hdF9zZWMgPSBTcGFuLnRvX3NlYyAoVC50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSB0KSBpblxuICAgICAgbGV0IHVzID0gRmxvYXQuaW50NjNfcm91bmRfbmVhcmVzdF9leG4gKGZsb2F0X3NlYyAqLiAxZTYpIGluXG4gICAgICBsZXQgbXMsIHVzID0gdXMgLyAhMTAwMCwgdXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBzZWMsIG1zID0gbXMgLyAhMTAwMCwgbXMgbW9kICExMDAwIHw+IGkgaW5cbiAgICAgIGxldCBtaW4sIHNlYyA9IHNlYyAvICE2MCwgc2VjIG1vZCAhNjAgfD4gaSBpblxuICAgICAgbGV0IGhyLCBtaW4gPSBtaW4gLyAhNjAsIG1pbiBtb2QgITYwIHw+IGkgaW5cbiAgICAgIGxldCBociA9IGkgaHIgaW5cbiAgICAgIGxldCBkb250X3ByaW50X3VzID0gZHJvcF91cyB8fCAodHJpbSAmJiB1cyA9IDApIGluXG4gICAgICBsZXQgZG9udF9wcmludF9tcyA9IGRyb3BfbXMgfHwgKHRyaW0gJiYgbXMgPSAwICYmIGRvbnRfcHJpbnRfdXMpIGluXG4gICAgICBsZXQgZG9udF9wcmludF9zID0gdHJpbSAmJiBzZWMgPSAwICYmIGRvbnRfcHJpbnRfbXMgaW5cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBpZiBkb250X3ByaW50X3NcbiAgICAgICAgdGhlbiA1XG4gICAgICAgIGVsc2UgaWYgZG9udF9wcmludF9tc1xuICAgICAgICB0aGVuIDhcbiAgICAgICAgZWxzZSBpZiBkb250X3ByaW50X3VzXG4gICAgICAgIHRoZW4gMTJcbiAgICAgICAgZWxzZSAxNVxuICAgICAgaW5cbiAgICAgIGxldCBidWYgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICB3cml0ZV8yX2RpZ2l0X2ludCBidWYgfnBvczowIGhyO1xuICAgICAgQnl0ZXMuc2V0IGJ1ZiAyICc6JztcbiAgICAgIHdyaXRlXzJfZGlnaXRfaW50IGJ1ZiB+cG9zOjMgbWluO1xuICAgICAgaWYgZG9udF9wcmludF9zXG4gICAgICB0aGVuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgQnl0ZXMuc2V0IGJ1ZiA1ICc6JztcbiAgICAgICAgd3JpdGVfMl9kaWdpdF9pbnQgYnVmIH5wb3M6NiBzZWM7XG4gICAgICAgIGlmIGRvbnRfcHJpbnRfbXNcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBCeXRlcy5zZXQgYnVmIDggJy4nO1xuICAgICAgICAgIHdyaXRlXzNfZGlnaXRfaW50IGJ1ZiB+cG9zOjkgbXM7XG4gICAgICAgICAgaWYgZG9udF9wcmludF91cyB0aGVuICgpIGVsc2Ugd3JpdGVfM19kaWdpdF9pbnQgYnVmIH5wb3M6MTIgdXMpKTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6YnVmXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmdfdHJpbW1lZCB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczpmYWxzZSB+ZHJvcF91czpmYWxzZSB+dHJpbTp0cnVlIHRcbiAgICBsZXQgdG9fc2VjX3N0cmluZyB0ID0gdG9fc3RyaW5nX2dlbiB+ZHJvcF9tczp0cnVlIH5kcm9wX3VzOnRydWUgfnRyaW06ZmFsc2UgdFxuICAgIGxldCB0b19taWxsaXNlY29uZF9zdHJpbmcgdCA9IHRvX3N0cmluZ19nZW4gfmRyb3BfbXM6ZmFsc2UgfmRyb3BfdXM6dHJ1ZSB+dHJpbTpmYWxzZSB0XG5cbiAgICBsZXQgc21hbGxfZGlmZiA9XG4gICAgICBsZXQgaG91ciA9IDM2MDAuIGluXG4gICAgICBmdW4gb2ZkYXkxIG9mZGF5MiAtPlxuICAgICAgICBsZXQgb2ZkYXkxID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkxKSBpblxuICAgICAgICBsZXQgb2ZkYXkyID0gU3Bhbi50b19zZWMgKFQudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkyKSBpblxuICAgICAgICBsZXQgZGlmZiA9IG9mZGF5MSAtLiBvZmRheTIgaW5cbiAgICAgICAgKCogIGQxIGlzIGluICgtaG91cjsgaG91cikgKilcbiAgICAgICAgbGV0IGQxID0gRmxvYXQubW9kX2Zsb2F0IGRpZmYgaG91ciBpblxuICAgICAgICAoKiAgZDIgaXMgaW4gKDA7aG91cikgKilcbiAgICAgICAgbGV0IGQyID0gRmxvYXQubW9kX2Zsb2F0IChkMSArLiBob3VyKSBob3VyIGluXG4gICAgICAgIGxldCBkID0gaWYgRmxvYXQuKCA+ICkgZDIgKGhvdXIgLy4gMi4pIHRoZW4gZDIgLS4gaG91ciBlbHNlIGQyIGluXG4gICAgICAgIFNwYW4ub2Zfc2VjIGRcbiAgICA7O1xuXG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSB0b19zdHJpbmdfZ2VuIH5kcm9wX21zOmZhbHNlIH5kcm9wX3VzOmZhbHNlIH50cmltOmZhbHNlIHRcblxuICAgIGluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICAgICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWUuT2ZkYXlcIlxuICAgICAgZW5kKVxuXG4gICAgbGV0IGNyZWF0ZV9mcm9tX3BhcnNlZCBzdHJpbmcgfmhyIH5taW4gfnNlYyB+c3Vic2VjX3BvcyB+c3Vic2VjX2xlbiA9XG4gICAgICBsZXQgc3Vic2VjID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDAuXG4gICAgICAgIGVsc2UgRmxvYXQub2Zfc3RyaW5nIChTdHJpbmcuc3ViIHN0cmluZyB+cG9zOnN1YnNlY19wb3MgfmxlbjpzdWJzZWNfbGVuKVxuICAgICAgaW5cbiAgICAgIEZsb2F0Lm9mX2ludCAoKGhyICogMzYwMCkgKyAobWluICogNjApICsgc2VjKSArLiBzdWJzZWNcbiAgICAgIHw+IFNwYW4ub2Zfc2VjXG4gICAgICB8PiBULm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICAgIDs7XG5cbiAgICBsZXQgb2Zfc3RyaW5nIHMgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHMgfmY6Y3JlYXRlX2Zyb21fcGFyc2VkXG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IHMgLT4gb2Zfc2V4cF9lcnJvciAoXCJPZmRheS50X29mX3NleHA6IFwiIF4gcykgc2V4cClcbiAgICAgIHwgXyAtPiBvZl9zZXhwX2Vycm9yIFwiT2ZkYXkudF9vZl9zZXhwXCIgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU3RyaW5nLnRfc2V4cF9ncmFtbWFyXG4gICAgbGV0IHNleHBfb2ZfdCBzcGFuID0gU2V4cC5BdG9tICh0b19zdHJpbmcgc3BhbilcblxuICAgIGxldCBvZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyID1cbiAgICAgIHRyeSBPZmRheV9oZWxwZXJzLnBhcnNlX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciB+ZjpjcmVhdGVfZnJvbV9wYXJzZWQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgaW52YWxpZF9hcmdmXG4gICAgICAgICAgXCJPZmRheS5vZl9zdHJpbmdfaXNvODYwMV9leHRlbmRlZCglcyk6ICVzXCJcbiAgICAgICAgICAoU3RyaW5nLnN1Ym8gc3RyID9wb3MgP2xlbilcbiAgICAgICAgICAoRXhuLnRvX3N0cmluZyBleG4pXG4gICAgICAgICAgKClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG5sZXQgZ2VuX2luY2wgbG8gaGkgPVxuICBTcGFuLmdlbl9pbmNsICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBsbykgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGhpKVxuICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAgfmY6b2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuXG47O1xuXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCBsbyBoaSA9XG4gIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgbG8pICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBoaSlcbiAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuOztcblxubGV0IHF1aWNrY2hlY2tfZ2VuZXJhdG9yID0gZ2VuX2luY2wgc3RhcnRfb2ZfZGF5IHN0YXJ0X29mX25leHRfZGF5XG5cbmxldCBxdWlja2NoZWNrX29ic2VydmVyID1cbiAgUXVpY2tjaGVjay5PYnNlcnZlci51bm1hcCBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXIgfmY6dG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwX29mXVxuXG4gICAgKCogUHJldmlvdXMgdmVyc2lvbnMgcmVuZGVyZWQgaGFzaC1iYXNlZCBjb250YWluZXJzIHVzaW5nIGZsb2F0IHNlcmlhbGl6YXRpb24gcmF0aGVyXG4gICAgICAgdGhhbiB0aW1lIHNlcmlhbGl6YXRpb24sIHNvIHdoZW4gcmVhZGluZyBoYXNoLWJhc2VkIGNvbnRhaW5lcnMgaW4gd2UgYWNjZXB0IGVpdGhlclxuICAgICAgIHNlcmlhbGl6YXRpb24uICopXG4gICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgIG1hdGNoIEZsb2F0LnRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZmxvYXQgLT4gb2ZfZmxvYXQgZmxvYXRcbiAgICAgIHwgZXhjZXB0aW9uIF8gLT4gdF9vZl9zZXhwIHNleHBcbiAgICA7O1xuICBlbmQpXG5cbm1vZHVsZSBDID0gc3RydWN0XG4gIHR5cGUgdCA9IFQudCBbQEBkZXJpdmluZyBiaW5faW9dXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gVC5jb21wYXJhdG9yX3dpdG5lc3NcblxuICBsZXQgY29tcGFyYXRvciA9IFQuY29tcGFyYXRvclxuICBsZXQgY29tcGFyZSA9IFQuY29tcGFyYXRvci5jb21wYXJlXG5cbiAgKCogSW4gMTA4LjA2YSBhbmQgZWFybGllciwgb2ZkYXlzIGluIHNleHBzIG9mIE1hcHMgYW5kIFNldHMgd2VyZSByYXcgZmxvYXRzLiAgRnJvbVxuICAgICAxMDguMDcgdGhyb3VnaCAxMDkuMTMsIHRoZSBvdXRwdXQgZm9ybWF0IHJlbWFpbmVkIHJhdyBhcyBiZWZvcmUsIGJ1dCBib3RoIHRoZSByYXcgYW5kXG4gICAgIHByZXR0eSBmb3JtYXQgd2VyZSBhY2NlcHRlZCBhcyBpbnB1dC4gIEZyb20gMTA5LjE0IG9uLCB0aGUgb3V0cHV0IGZvcm1hdCB3YXMgY2hhbmdlZFxuICAgICBmcm9tIHJhdyB0byBwcmV0dHksIHdoaWxlIGNvbnRpbnVpbmcgdG8gYWNjZXB0IGJvdGggZm9ybWF0cy4gIE9uY2Ugd2UgYmVsaWV2ZSBtb3N0XG4gICAgIHByb2dyYW1zIGFyZSBiZXlvbmQgMTA5LjE0LCB3ZSB3aWxsIHN3aXRjaCB0aGUgaW5wdXQgZm9ybWF0IHRvIG5vIGxvbmdlciBhY2NlcHRcbiAgICAgcmF3LiAqKVxuICBsZXQgc2V4cF9vZl90ID0gc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICBtYXRjaCBPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBULm9mX2Zsb2F0IChGbG9hdC50X29mX3NleHAgc2V4cCkpIHdpdGhcbiAgICB8IFNvbWUgdCAtPiB0XG4gICAgfCBOb25lIC0+IHRfb2Zfc2V4cCBzZXhwXG4gIDs7XG5lbmRcblxubW9kdWxlIE1hcCA9IE1hcC5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoQylcbm1vZHVsZSBTZXQgPSBTZXQuTWFrZV9iaW5hYmxlX3VzaW5nX2NvbXBhcmF0b3IgKEMpXG5pbmNsdWRlIENvbXBhcmFibGUuVmFsaWRhdGUgKEMpXG5cbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxubGV0IHRvX21pbGxpc2VjX3N0cmluZyA9IHRvX21pbGxpc2Vjb25kX3N0cmluZ1xuIiwiKCogU2VlIHRpbWVfZmxvYXQubWwgZm9yIHRoZSBwcmltYXJ5IGluc3RhbnRpYXRpb24gb2YgdGhpcyBmdW5jdG9yIHRoYXQgaXMgdmlzaWJsZSBvdXRzaWRlXG4gICBvZiBDb3JlIGFzIFRpbWUgKHNlZSBjb3JlLm1sKS4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbmluY2x1ZGUgVGltZV9pbnRmXG5cbm1vZHVsZSBNYWtlIChUaW1lMCA6IFRpbWUwX2ludGYuUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIFRpbWUwID0gVGltZTBcbiAgaW5jbHVkZSBUaW1lMFxuXG4gIGxldCBlcG9jaCA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi56ZXJvXG4gIGxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPC4gdDJcbiAgbGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPi4gdDJcblxuICBtb2R1bGUgWm9uZSA6IHNpZ1xuICAgIGluY2x1ZGUgVGltZV9pbnRmLlpvbmUgd2l0aCBtb2R1bGUgVGltZSA6PSBUaW1lMFxuICBlbmQgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFRpbWUwLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZTAuU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBUaW1lMC5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICBUaW1lMC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgVGltZTAuRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFRpbWUwLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleClcbiAgICA7O1xuXG4gICAgbGV0IGFiYnJldmlhdGlvbiB0IHRpbWUgPVxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBpbmRleF9hYmJyZXZpYXRpb25fZXhuIHQgKGluZGV4IHQgdGltZSlcbiAgICA7O1xuXG4gICAgbGV0IGluZGV4X3ByZXZfY2xvY2tfc2hpZnQgdCBpbmRleCA9XG4gICAgICBtYXRjaCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4IHdpdGhcbiAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gdCBpbmRleFxuICAgICAgICAgICwgaW5kZXhfcHJldl9jbG9ja19zaGlmdF9hbW91bnRfZXhuIHQgaW5kZXggKVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IGluZGV4ID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChJbmRleC5uZXh0IGluZGV4KVxuICAgIGxldCBwcmV2X2Nsb2NrX3NoaWZ0IHQgfmF0X29yX2JlZm9yZTp0aW1lID0gaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG4gICAgbGV0IG5leHRfY2xvY2tfc2hpZnQgdCB+c3RyaWN0bHlfYWZ0ZXI6dGltZSA9IGluZGV4X25leHRfY2xvY2tfc2hpZnQgdCAoaW5kZXggdCB0aW1lKVxuXG4gICAgbGV0IGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgdCB0aW1lID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4IHQgdGltZSBpblxuICAgICAgKCogbm8gZXhuIGJlY2F1c2UgW2luZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB0IGluZGV4IGluXG4gICAgICBUaW1lMC5EYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuXG4gICAgbGV0IGFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgdCByZWxhdGl2ZSA9XG4gICAgICBsZXQgaW5kZXggPSBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhfb2ZfZGF0ZV9hbmRfb2ZkYXldIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIFRpbWUwLkRhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGNcbiAgICA7O1xuICBlbmRcblxuICBsZXQgYWJzX2RpZmYgdDEgdDIgPSBTcGFuLmFicyAoZGlmZiB0MSB0MilcblxuICBsZXQgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5ID1cbiAgICBsZXQgcmVsYXRpdmUgPSBEYXRlX2FuZF9vZmRheS5vZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgaW5cbiAgICBab25lLmFic29sdXRlX3RpbWVfb2ZfZGF0ZV9hbmRfb2ZkYXkgem9uZSByZWxhdGl2ZVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX29mZGF5X3ByZWNpc2UgZGF0ZSBvZmRheSB+em9uZSA9XG4gICAgKCogV2UgYXNzdW1lIHRoYXQgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB6b25lIHNoaWZ0IHdpdGhpbiBhIGdpdmVuIGxvY2FsIGRheS4gICopXG4gICAgbGV0IHN0YXJ0X29mX2RheSA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBPZmRheS5zdGFydF9vZl9kYXkgaW5cbiAgICBsZXQgcHJvcG9zZWRfdGltZSA9IGFkZCBzdGFydF9vZl9kYXkgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5KSBpblxuICAgIG1hdGNoIFpvbmUubmV4dF9jbG9ja19zaGlmdCB6b25lIH5zdHJpY3RseV9hZnRlcjpzdGFydF9vZl9kYXkgd2l0aFxuICAgIHwgTm9uZSAtPiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgfCBTb21lIChzaGlmdF9zdGFydCwgc2hpZnRfYW1vdW50KSAtPlxuICAgICAgbGV0IHNoaWZ0X2JhY2t3YXJkcyA9IFNwYW4uKHNoaWZ0X2Ftb3VudCA8IHplcm8pIGluXG4gICAgICAoKiBzdGFydCBhbmQgZW5kIG9mIHRoZSBcInByb2JsZW1hdGljIHJlZ2lvblwiICopXG4gICAgICBsZXQgcywgZSA9XG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnQsIHNoaWZ0X3N0YXJ0XG4gICAgICAgIGVsc2Ugc2hpZnRfc3RhcnQsIGFkZCBzaGlmdF9zdGFydCBzaGlmdF9hbW91bnRcbiAgICAgIGluXG4gICAgICBpZiBwcm9wb3NlZF90aW1lIDwgc1xuICAgICAgdGhlbiBgT25jZSBwcm9wb3NlZF90aW1lXG4gICAgICBlbHNlIGlmIHMgPD0gcHJvcG9zZWRfdGltZSAmJiBwcm9wb3NlZF90aW1lIDwgZVxuICAgICAgdGhlblxuICAgICAgICBpZiBzaGlmdF9iYWNrd2FyZHNcbiAgICAgICAgdGhlbiBgVHdpY2UgKHByb3Bvc2VkX3RpbWUsIHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgICAgICAgZWxzZSBgTmV2ZXIgc2hpZnRfc3RhcnRcbiAgICAgIGVsc2UgYE9uY2UgKHN1YiBwcm9wb3NlZF90aW1lIHNoaWZ0X2Ftb3VudClcbiAgOztcblxuICBtb2R1bGUgRGF0ZV9jYWNoZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiBUaW1lMC50XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IFRpbWUwLnRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogVGltZTAudFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgVGltZTAuKCA+PSApIHRpbWUgZGF0ZV9jYWNoZS5jYWNoZV9zdGFydF9pbmNsXG4gICAgJiYgVGltZTAuKCA8ICkgdGltZSBkYXRlX2NhY2hlLmNhY2hlX3VudGlsX2V4Y2xcbiAgOztcblxuICBsZXQgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZSA9XG4gICAgbWF0Y2ggaXNfaW5fY2FjaGUgdGltZSB+em9uZSB3aXRoXG4gICAgfCB0cnVlIC0+ICgpXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGluZGV4ID0gWm9uZS5pbmRleCB6b25lIHRpbWUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtab25lLmluZGV4XSBhbHdheXMgcmV0dXJucyBhIHZhbGlkIGluZGV4ICopXG4gICAgICBsZXQgb2Zmc2V0X2Zyb21fdXRjID0gWm9uZS5pbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHpvbmUgaW5kZXggaW5cbiAgICAgIGxldCByZWwgPSBEYXRlX2FuZF9vZmRheS5vZl9hYnNvbHV0ZSB0aW1lIH5vZmZzZXRfZnJvbV91dGMgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZV9hbmRfb2ZkYXkudG9fZGF0ZSByZWwgaW5cbiAgICAgIGxldCBzcGFuID0gRGF0ZV9hbmRfb2ZkYXkudG9fb2ZkYXkgcmVsIHw+IE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV9zdGFydCA9XG4gICAgICAgIFRpbWUwLnN1YiAoRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsIH5vZmZzZXRfZnJvbV91dGMpIHNwYW5cbiAgICAgIGluXG4gICAgICBsZXQgZWZmZWN0aXZlX2RheV91bnRpbCA9IFRpbWUwLmFkZCBlZmZlY3RpdmVfZGF5X3N0YXJ0IFNwYW4uZGF5IGluXG4gICAgICBsZXQgY2FjaGVfc3RhcnRfaW5jbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX3ByZXZfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV9zdGFydFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICAgICAgfD4gVGltZTAubWF4IChab25lLmluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgY2FjaGVfdW50aWxfZXhjbCA9XG4gICAgICAgIG1hdGNoIFpvbmUuaW5kZXhfaGFzX25leHRfY2xvY2tfc2hpZnQgem9uZSBpbmRleCB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZWZmZWN0aXZlX2RheV91bnRpbFxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgICAgfD4gVGltZTAubWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgZW5kX29mX2RheSA9IE9mZGF5LnByZXYgT2ZkYXkuc3RhcnRfb2ZfbmV4dF9kYXkgfD4gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdXG5cbiAgbGV0IHRvX29mZGF5IHRpbWUgfnpvbmUgPVxuICAgIHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmU7XG4gICAgbGV0IG9mX2RheSA9XG4gICAgICBUaW1lMC5kaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0XG4gICAgICB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICBpblxuICAgIGlmIE9mZGF5LmVxdWFsIG9mX2RheSBPZmRheS5zdGFydF9vZl9uZXh0X2RheSB0aGVuIGVuZF9vZl9kYXkgZWxzZSBvZl9kYXlcbiAgOztcblxuICBsZXQgdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lID0gdG9fZGF0ZSB0aW1lIH56b25lLCB0b19vZmRheSB0aW1lIH56b25lXG5cbiAgKCogVGhlIGNvcnJlY3RuZXNzIG9mIHRoaXMgYWxnb3JpdGhtIChpbnRlcmZhY2UsIGV2ZW4pIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhhdFxuICAgICB0aW1lem9uZSBzaGlmdHMgYXJlbid0IHRvbyBjbG9zZSB0b2dldGhlciAoYXMgaW4sIGl0IGNhbid0IHNpbXVsdGFuZW91c2x5IGJlIHRoZVxuICAgICBjYXNlIHRoYXQgYSB0aW1lem9uZSBzaGlmdCBvZiBYIGhvdXJzIG9jY3VycmVkIGxlc3MgdGhhbiBYIGhvdXJzIGFnbywgKmFuZCpcbiAgICAgYSB0aW1lem9uZSBzaGlmdCBvZiBZIGhvdXJzIHdpbGwgb2NjdXIgaW4gbGVzcyB0aGFuIFkgaG91cnMnIHRpbWUpICopXG4gIGxldCB0b19kYXRlX29mZGF5X3ByZWNpc2UgdGltZSB+em9uZSA9XG4gICAgbGV0IGRhdGUsIG9mZGF5ID0gdG9fZGF0ZV9vZmRheSB0aW1lIH56b25lIGluXG4gICAgbGV0IGNsb2NrX3NoaWZ0X2FmdGVyID0gWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnRpbWUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0ID0gWm9uZS5wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgfmF0X29yX2JlZm9yZTp0aW1lIGluXG4gICAgbGV0IGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudCA9XG4gICAgICAoKiBVc2luZyBbZGF0ZV0gYW5kIHJhaXNpbmcgb24gW05vbmVdIGhlcmUgaXMgT0sgb24gdGhlIGFzc3VtcHRpb24gdGhhdCBjbG9ja1xuICAgICAgICAgc2hpZnRzIGNhbid0IGNyb3NzIGRhdGUgYm91bmRhcmllcy4gVGhpcyBpcyB0cnVlIGluIGFsbCBjYXNlcyBJJ3ZlIGV2ZXIgaGVhcmRcbiAgICAgICAgIG9mIChhbmQgW29mX2RhdGVfb2ZkYXlfcHJlY2lzZV0gd291bGQgbmVlZCByZXZpc2l0aW5nIGlmIGl0IHR1cm5lZCBvdXQgdG8gYmVcbiAgICAgICAgIGZhbHNlKSAqKVxuICAgICAgbWF0Y2ggT2ZkYXkuc3ViIG9mZGF5IGFtb3VudCB3aXRoXG4gICAgICB8IFNvbWUgb2ZkYXkgLT4gYEFsc29fc2tpcHBlZCAoZGF0ZSwgb2ZkYXkpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJUaW1lLnRvX2RhdGVfb2ZkYXlfcHJlY2lzZVwiXG4gICAgICAgICAgICAgIH5zcGFuX3NpbmNlX2Vwb2NoOih0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUgOiBTcGFuLnQpXG4gICAgICAgICAgICAgICh6b25lIDogWm9uZS50KV1cbiAgICBpblxuICAgIGxldCBhbWJpZ3VpdHkgPVxuICAgICAgKCogRWRnZSBjYXNlczogdGhlIGluc3RhbnQgb2YgdHJhbnNpdGlvbiBiZWxvbmdzIHRvIHRoZSBuZXcgem9uZSByZWdpbWUuIFNvIGlmIHRoZVxuICAgICAgICAgY2xvY2sgbW92ZWQgYnkgYW4gaG91ciBleGFjdGx5IG9uZSBob3VyIGFnbywgdGhlcmUncyBubyBhbWJpZ3VpdHksIGJlY2F1c2UgdGhlXG4gICAgICAgICBob3VyLWFnbyB0aW1lIGJlbG9uZ3MgdG8gdGhlIHNhbWUgcmVnaW1lIGFzIHlvdSwgYW5kIGNvbnZlcnNlbHksIGlmIHRoZSBjbG9ja1xuICAgICAgICAgd2lsbCBtb3ZlIGJ5IGFuIGhvdXIgaW4gYW4gaG91cnMnIHRpbWUsIHRoZXJlICppcyogYW1iaWd1aXR5LiBIZW5jZSBbPi5dIGZvclxuICAgICAgICAgdGhlIGZpcnN0IGNhc2UgYW5kIFs8PS5dIGZvciB0aGUgc2Vjb25kLiAqKVxuICAgICAgbWF0Y2ggY2xvY2tfc2hpZnRfYmVmb3JlX29yX2F0LCBjbG9ja19zaGlmdF9hZnRlciB3aXRoXG4gICAgICB8IFNvbWUgKHN0YXJ0LCBhbW91bnQpLCBfIHdoZW4gYWRkIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpID4uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgc2hpZnRlZCByZWNlbnRseSAqKVxuICAgICAgICBpZiBTcGFuLihhbW91bnQgPiB6ZXJvKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBmb3J3YXJkIHJlY2VudGx5OiB3ZSBza2lwcGVkIGEgdGltZSAqKVxuICAgICAgICAgIGFsc29fc2tpcHBlZF9lYXJsaWVyIGFtb3VudFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBzaGlmdGVkIGJhY2sgcmVjZW50bHk6IHRoaXMgZGF0ZS9vZmRheSBhbHJlYWR5IGhhcHBlbmVkICopXG4gICAgICAgICAgYXNzZXJ0IChTcGFuLihhbW91bnQgPCB6ZXJvKSk7XG4gICAgICAgICAgYEFsc29fYXQgKHN1YiB0aW1lIChTcGFuLmFicyBhbW91bnQpKSlcbiAgICAgIHwgXywgU29tZSAoc3RhcnQsIGFtb3VudCkgd2hlbiBzdWIgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPD0uIHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50ciB+dGFyZ2V0Oic6JyB+cmVwbGFjZW1lbnQ6Jy0nIChPZmRheS50b19zdHJpbmcgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IG9mX2ZpbGVuYW1lX3N0cmluZyBzIH56b25lID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHMgfm9uOidfJyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZSBpbiBmaWxlbmFtZSBzdHJpbmdcIlxuICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBTdHJpbmcudHIgfnRhcmdldDonLScgfnJlcGxhY2VtZW50Oic6JyBvZmRheSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgICAgb2ZfZGF0ZV9vZmRheSBkYXRlIG9mZGF5IH56b25lXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+IGludmFsaWRfYXJnZiBcIlRpbWUub2ZfZmlsZW5hbWVfc3RyaW5nICglcyk6ICVzXCIgcyAoRXhuLnRvX3N0cmluZyBleG4pICgpXG4gIDs7XG5cbiAgbGV0IG9mX2xvY2FsaXplZF9zdHJpbmcgfnpvbmUgc3RyID1cbiAgICB0cnlcbiAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIHN0ciB+b246JyAnIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyAoc3ByaW50ZiBcIm5vIHNwYWNlIGluIGRhdGVfb2ZkYXkgc3RyaW5nOiAlc1wiIHN0cilcbiAgICAgIHwgU29tZSAoZGF0ZSwgdGltZSkgLT5cbiAgICAgICAgbGV0IGRhdGUgPSBEYXRlMC5vZl9zdHJpbmcgZGF0ZSBpblxuICAgICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgdGltZSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICB3aXRoXG4gICAgfCBlIC0+IEV4bi5yZXJhaXNlIGUgXCJUaW1lLm9mX2xvY2FsaXplZF9zdHJpbmdcIlxuICA7O1xuXG4gIGxldCBvY2N1cnJlbmNlIGJlZm9yZV9vcl9hZnRlciB0IH5vZmRheSB+em9uZSA9XG4gICAgbGV0IGZpcnN0X2d1ZXNzX2RhdGUgPSB0b19kYXRlIHQgfnpvbmUgaW5cbiAgICBsZXQgZmlyc3RfZ3Vlc3MgPSBvZl9kYXRlX29mZGF5IH56b25lIGZpcnN0X2d1ZXNzX2RhdGUgb2ZkYXkgaW5cbiAgICBsZXQgY21wLCBpbmNyZW1lbnQgPVxuICAgICAgbWF0Y2ggYmVmb3JlX29yX2FmdGVyIHdpdGhcbiAgICAgIHwgYExhc3RfYmVmb3JlX29yX2F0IC0+ICggPD0gKSwgLTFcbiAgICAgIHwgYEZpcnN0X2FmdGVyX29yX2F0IC0+ICggPj0gKSwgMVxuICAgIGluXG4gICAgaWYgY21wIGZpcnN0X2d1ZXNzIHRcbiAgICB0aGVuIGZpcnN0X2d1ZXNzXG4gICAgZWxzZSBvZl9kYXRlX29mZGF5IH56b25lIChEYXRlMC5hZGRfZGF5cyBmaXJzdF9ndWVzc19kYXRlIGluY3JlbWVudCkgb2ZkYXlcbiAgOztcblxuICBsZXQgZW5zdXJlX2NvbG9uX2luX29mZnNldCBvZmZzZXQgPVxuICAgIGxldCBvZmZzZXRfbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBvZmZzZXQgaW5cbiAgICBpZiBJbnQuKCA8PSApIG9mZnNldF9sZW5ndGggMlxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LlswXVxuICAgICYmIENoYXIuaXNfZGlnaXQgb2Zmc2V0LltvZmZzZXRfbGVuZ3RoIC0gMV1cbiAgICB0aGVuIG9mZnNldCBeIFwiOjAwXCJcbiAgICBlbHNlIGlmIENoYXIuKCA9ICkgb2Zmc2V0LlsxXSAnOicgfHwgQ2hhci4oID0gKSBvZmZzZXQuWzJdICc6J1xuICAgIHRoZW4gb2Zmc2V0XG4gICAgZWxzZSBpZiBJbnQuKCA8ICkgb2Zmc2V0X2xlbmd0aCAzIHx8IEludC4oID4gKSBvZmZzZXRfbGVuZ3RoIDRcbiAgICB0aGVuIGZhaWx3aXRoZiBcImludmFsaWQgb2Zmc2V0ICVzXCIgb2Zmc2V0ICgpXG4gICAgZWxzZVxuICAgICAgU3RyaW5nLmNvbmNhdFxuICAgICAgICBbIFN0cmluZy5zbGljZSBvZmZzZXQgMCAob2Zmc2V0X2xlbmd0aCAtIDIpXG4gICAgICAgIDsgXCI6XCJcbiAgICAgICAgOyBTdHJpbmcuc2xpY2Ugb2Zmc2V0IChvZmZzZXRfbGVuZ3RoIC0gMikgb2Zmc2V0X2xlbmd0aFxuICAgICAgICBdXG4gIDs7XG5cbiAgZXhjZXB0aW9uIFRpbWVfb2Zfc3RyaW5nIG9mIHN0cmluZyAqIEV4bi50IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGRhdGUsIG9mZGF5LCB0eiA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonICcgd2l0aFxuICAgICAgICB8IFsgZGF5OyBtb250aDsgeWVhcjsgb2ZkYXkgXSAtPlxuICAgICAgICAgIFN0cmluZy5jb25jYXQgWyBkYXk7IFwiIFwiOyBtb250aDsgXCIgXCI7IHllYXIgXSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5OyB0eiBdIC0+IGRhdGUsIG9mZGF5LCBTb21lIHR6XG4gICAgICAgIHwgWyBkYXRlOyBvZmRheSBdIC0+IGRhdGUsIG9mZGF5LCBOb25lXG4gICAgICAgIHwgWyBzIF0gLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLnJzcGxpdDIgfm9uOidUJyBzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIChkYXRlLCBvZmRheSkgLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwibm8gc3BhY2VzIG9yIFQgZm91bmRcIilcbiAgICAgICAgfCBfIC0+IGZhaWx3aXRoIFwidG9vIG1hbnkgc3BhY2VzXCJcbiAgICAgIGluXG4gICAgICBsZXQgb2ZkYXlfdG9fc2VjIG9kID0gU3Bhbi50b19zZWMgKE9mZGF5LnRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9kKSBpblxuICAgICAgbGV0IG9mZGF5LCB1dGNfb2Zmc2V0ID1cbiAgICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgICB8IFNvbWUgXyAtPiBvZmRheSwgTm9uZVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBDaGFyLiggPSApIG9mZGF5LltTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMV0gJ1onXG4gICAgICAgICAgdGhlbiBTdHJpbmcuc3ViIG9mZGF5IH5wb3M6MCB+bGVuOihTdHJpbmcubGVuZ3RoIG9mZGF5IC0gMSksIFNvbWUgMC5cbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonKycgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICBsLCBTb21lIChvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZy5sc3BsaXQyIH5vbjonLScgb2ZkYXkgd2l0aFxuICAgICAgICAgICAgICAgfCBTb21lIChsLCByKSAtPlxuICAgICAgICAgICAgICAgICBsLCBTb21lICgtMS4gKi4gb2ZkYXlfdG9fc2VjIChPZmRheS5vZl9zdHJpbmcgKGVuc3VyZV9jb2xvbl9pbl9vZmZzZXQgcikpKVxuICAgICAgICAgICAgICAgfCBOb25lIC0+IG9mZGF5LCBOb25lKSlcbiAgICAgIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheS5vZl9zdHJpbmcgb2ZkYXkgaW5cbiAgICAgIG1hdGNoIHR6IHdpdGhcbiAgICAgIHwgU29tZSB0eiAtPiBvZl9kYXRlX29mZGF5IH56b25lOihmaW5kX3pvbmUgdHopIGRhdGUgb2ZkYXlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAobWF0Y2ggdXRjX29mZnNldCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgbGV0IHpvbmUgPSBkZWZhdWx0X3pvbmUgKCkgaW5cbiAgICAgICAgICAgb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICAgICB8IFNvbWUgdXRjX29mZnNldCAtPlxuICAgICAgICAgICBsZXQgdXRjX3QgPSBvZl9kYXRlX29mZGF5IH56b25lOlpvbmUudXRjIGRhdGUgb2ZkYXkgaW5cbiAgICAgICAgICAgc3ViIHV0Y190IChTcGFuLm9mX3NlYyB1dGNfb2Zmc2V0KSlcbiAgICB3aXRoXG4gICAgfCBlIC0+IHJhaXNlIChUaW1lX29mX3N0cmluZyAocywgZSkpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgcyA9XG4gICAgbGV0IGRlZmF1bHRfem9uZSAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwidGltZSBoYXMgbm8gdGltZSB6b25lIG9yIFVUQyBvZmZzZXRcIiBzXSBpblxuICAgIGxldCBmaW5kX3pvbmUgem9uZV9uYW1lID1cbiAgICAgIGZhaWx3aXRoZiBcInVuYWJsZSB0byBsb29rdXAgWm9uZSAlcy4gIFRyeSB1c2luZyBDb3JlLlRpbWUub2Zfc3RyaW5nXCIgem9uZV9uYW1lICgpXG4gICAgaW5cbiAgICBvZl9zdHJpbmdfZ2VuIH5kZWZhdWx0X3pvbmUgfmZpbmRfem9uZSBzXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyA9IG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9XG4gICAgUXVpY2tjaGVjay5TaHJpbmtlci5tYXBcbiAgICAgIFNwYW4ucXVpY2tjaGVja19zaHJpbmtlclxuICAgICAgfmY6b2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgICAgfmZfaW52ZXJzZTp0b19zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPVxuICAgIFF1aWNrY2hlY2suT2JzZXJ2ZXIudW5tYXAgU3Bhbi5xdWlja2NoZWNrX29ic2VydmVyIH5mOnRvX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgcXVpY2tjaGVja19nZW5lcmF0b3IgPVxuICAgIFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCBTcGFuLnF1aWNrY2hlY2tfZ2VuZXJhdG9yIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcblxuICBsZXQgZ2VuX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX2luY2wgKHRvX3NwYW5fc2luY2VfZXBvY2ggbG8pICh0b19zcGFuX3NpbmNlX2Vwb2NoIGhpKVxuICAgIHw+IFF1aWNrY2hlY2suR2VuZXJhdG9yLm1hcCB+ZjpvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IGdlbl91bmlmb3JtX2luY2wgbG8gaGkgPVxuICAgIFNwYW4uZ2VuX3VuaWZvcm1faW5jbCAodG9fc3Bhbl9zaW5jZV9lcG9jaCBsbykgKHRvX3NwYW5fc2luY2VfZXBvY2ggaGkpXG4gICAgfD4gUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIFNwYW4gPSBTcGFuX2Zsb2F0XG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9mbG9hdFxuXG5tb2R1bGUgQWJzb2x1dGUgPSBzdHJ1Y3RcbiAgdHlwZSB1bmRlcmx5aW5nID0gRmxvYXQudFxuXG4gIGluY2x1ZGUgKFxuICAgIEZsb2F0IDpcbiAgICBzaWdcbiAgICAgIHR5cGUgdCA9IGZsb2F0IFtAQGRlcml2aW5nIGJpbl9pbywgaGFzaCwgdHlwZXJlcF1cblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlNfY29tbW9uIHdpdGggdHlwZSB0IDo9IHRcblxuICAgICAgaW5jbHVkZSBtb2R1bGUgdHlwZSBvZiBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBGbG9hdC5PXG4gICAgICBlbmRcbiAgICBlbmQpXG5cbiAgKCogZHVlIHRvIHByZWNpc2lvbiBsaW1pdGF0aW9ucyBpbiBmbG9hdCB3ZSBjYW4ndCBleHBlY3QgYmV0dGVyIHRoYW4gbWljcm9zZWNvbmRcbiAgICAgcHJlY2lzaW9uICopXG4gIGluY2x1ZGUgRmxvYXQuUm9idXN0X2NvbXBhcmUuTWFrZSAoc3RydWN0XG4gICAgICBsZXQgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlID0gMUUtNlxuICAgIGVuZClcblxuICBsZXQgZGlmZiB0MSB0MiA9IFNwYW4ub2Zfc2VjICh0MSAtIHQyKVxuICBsZXQgYWRkIHQgc3BhbiA9IHQgKy4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgc3ViIHQgc3BhbiA9IHQgLS4gU3Bhbi50b19zZWMgc3BhblxuICBsZXQgcHJldiB0ID0gRmxvYXQub25lX3VscCBgRG93biB0XG4gIGxldCBuZXh0IHQgPSBGbG9hdC5vbmVfdWxwIGBVcCB0XG4gIGxldCB0b19zcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi5vZl9zZWNcbiAgbGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggPSBTcGFuLnRvX3NlY1xuZW5kXG5cbmluY2x1ZGUgQWJzb2x1dGVcblxubW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IGZsb2F0XG5cbiAgbGV0IG9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHNwYW4gPSBTcGFuLnRvX3NlYyBzcGFuXG4gIGxldCB0b19zeW50aGV0aWNfc3Bhbl9zaW5jZV9lcG9jaCB0ID0gU3Bhbi5vZl9zZWMgdFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgIGxldCBkYXlzID1cbiAgICAgIEZsb2F0Lm9mX2ludCAoRGF0ZTAuRGF5cy5kaWZmIChEYXRlMC5EYXlzLm9mX2RhdGUgZGF0ZSkgRGF0ZTAuRGF5cy51bml4X2Vwb2NoKVxuICAgIGluXG4gICAgKGRheXMgKi4gODY0MDAuKSArLiBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpXG4gIDs7XG5cbiAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPSBzdWIgcmVsYXRpdmUgb2Zmc2V0X2Zyb21fdXRjXG4gIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID0gYWRkIGFic29sdXRlIG9mZnNldF9mcm9tX3V0Y1xuXG4gICgqIFllYXJzIG91dCBvZiByYW5nZSBmb3IgW0RhdGUuY3JlYXRlX2V4bl0uICopXG4gIGxldFtAY29sZF0gYXNzZXJ0X2luX2JvdW5kcyB+c2VjX3NpbmNlX2Vwb2NoID1cbiAgICAoKiAkIFRaPVVUQyBkYXRlIC0tZGF0ZT1ALTYyMTY3MjE5MjAwXG4gICAgICAgU2F0IEphbiAgMSAwMDowMDowMCBVVEMgMDAwMCAqKVxuICAgIGxldCBnbXRpbWVfbG93ZXJfYm91bmQgPSAtNjJfMTY3XzIxOV8yMDAuIGluXG4gICAgKCogJCBUWj1VVEMgZGF0ZSAtLWRhdGU9QDI1MzQwMjMwMDc5OVxuICAgICAgIEZyaSBEZWMgMzEgMjM6NTk6NTkgVVRDIDk5OTkgKilcbiAgICBsZXQgZ210aW1lX3VwcGVyX2JvdW5kID0gMjUzXzQwMl8zMDBfNzk5LiBpblxuICAgIGlmIEZsb2F0LiggPj0gKSBzZWNfc2luY2VfZXBvY2ggKGdtdGltZV91cHBlcl9ib3VuZCArLiAxLilcbiAgICB8fCBGbG9hdC4oIDwgKSBzZWNfc2luY2VfZXBvY2ggZ210aW1lX2xvd2VyX2JvdW5kXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJUaW1lLmdtdGltZTogb3V0IG9mIHJhbmdlICglZilcIiBzZWNfc2luY2VfZXBvY2ggKClcbiAgOztcblxuICBsZXQgc2VjX3Blcl9kYXkgPSBJbnQ2My5vZl9pbnQgODZfNDAwXG5cbiAgbGV0IHRvX2RheXNfZnJvbV9lcG9jaCB0ID1cbiAgICBhc3NlcnRfaW5fYm91bmRzIH5zZWNfc2luY2VfZXBvY2g6dDtcbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9hcHByb3ggPSBJbnQ2My5vZl9mbG9hdCB0IC8gc2VjX3Blcl9kYXkgaW5cbiAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgIHdpbGwgbGVhdmUgdXMgb25lIGRheSBzaG9ydCBiZWNhdXNlIGl0IHRydW5jYXRlcyAoZS5nLiAtMTAwIC8gODZfNDAwID0gMCBhbmQgd2VcbiAgICAgICB3YW50IC0xKSAtLSBhZGp1c3QgZm9yIHRoYXQgaGVyZS4gKilcbiAgICBpZiBGbG9hdC4oIDwgKSB0IChJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIHNlY19wZXJfZGF5KSlcbiAgICB0aGVuIEludDYzLnByZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgIGVsc2UgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICA7O1xuXG4gIGxldCBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoID1cbiAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9zZWMgPSBJbnQ2My50b19mbG9hdCAoZGF5c19mcm9tX2Vwb2NoICogc2VjX3Blcl9kYXkpIGluXG4gICAgbGV0IHJlbWFpbmRlciA9IHQgLS4gZGF5c19mcm9tX2Vwb2NoX2luX3NlYyBpblxuICAgIFNwYW4ub2Zfc2VjIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgOztcblxuICBsZXQgZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCA9XG4gICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICB8PiBEYXRlMC5EYXlzLmFkZF9kYXlzIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICA7O1xuXG4gIGxldCB0b19kYXRlIHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdCA9XG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgb2ZkYXlfb2ZfZGF5c19mcm9tX2Vwb2NoIHQgfmRheXNfZnJvbV9lcG9jaFxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHQgPVxuICAgIGxldCBkYXlzX2Zyb21fZXBvY2ggPSB0b19kYXlzX2Zyb21fZXBvY2ggdCBpblxuICAgIGxldCBkYXRlID0gZGF0ZV9vZl9kYXlzX2Zyb21fZXBvY2ggfmRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBvZmRheSA9IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggaW5cbiAgICBkYXRlLCBvZmRheVxuICA7O1xuZW5kXG5cbmxldCBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCA9XG4gIGlmIFNwYW4uKCA8PSApIGludGVydmFsIFNwYW4uemVyb1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWUubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgICAgaW50ZXJ2YWxcbiAgICAgIFslc2V4cF9vZjogU3Bhbi50XTtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9XG4gICAgICBhZGRcbiAgICAgICAgYmFzZVxuICAgICAgICAoU3Bhbi5zY2FsZVxuICAgICAgICAgICBpbnRlcnZhbFxuICAgICAgICAgICAoRmxvYXQucm91bmQgfmRpcjpgRG93biAoU3Bhbi4oIC8vICkgYmFzZV90b19hZnRlciBpbnRlcnZhbCkpKVxuICAgIGluXG4gICAgaWYgbmV4dCA+IGFmdGVyIHx8IChjYW5fZXF1YWxfYWZ0ZXIgJiYgbmV4dCA9IGFmdGVyKSB0aGVuIG5leHQgZWxzZSBhZGQgbmV4dCBpbnRlcnZhbClcbjs7XG5cbmxldCBuZXh0X211bHRpcGxlID8oY2FuX2VxdWFsX2FmdGVyID0gZmFsc2UpIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsIH5jYW5fZXF1YWxfYWZ0ZXIgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbFxuOztcblxubGV0IHByZXZfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYmVmb3JlID0gZmFsc2UpIH5iYXNlIH5iZWZvcmUgfmludGVydmFsICgpID1cbiAgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbFxuICAgIH5jYW5fZXF1YWxfYWZ0ZXI6KG5vdCBjYW5fZXF1YWxfYmVmb3JlKVxuICAgIH5iYXNlXG4gICAgfmFmdGVyOihzdWIgYmVmb3JlIGludGVydmFsKVxuICAgIH5pbnRlcnZhbFxuOztcblxubGV0IG5vdyAoKSA9XG4gIGxldCBmbG9hdF9ucyA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gSW50NjMudG9fZmxvYXQgaW5cbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9zZWMgKGZsb2F0X25zICouIDFFLTkpKVxuOztcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgU3BhbiA9IFNwYW4uU3RhYmxlXG4gIG1vZHVsZSBPZmRheSA9IE9mZGF5LlN0YWJsZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgdHlwZSBTX2tlcm5lbF93aXRob3V0X3pvbmUgPSBUaW1lMF9pbnRmLlNcbm1vZHVsZSB0eXBlIFNfa2VybmVsID0gVGltZV9pbnRmLlNcblxubW9kdWxlIFpvbmVfc3RhYmxlID0gWm9uZS5TdGFibGVcbmluY2x1ZGUgVGltZS5NYWtlIChUaW1lX2Zsb2F0MClcbmluY2x1ZGUgVGltZV9mbG9hdDBcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfZmxvYXQwLlN0YWJsZVxuICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBXaXRoX3Rfb2Zfc2V4cF9hYnMgPSBzdHJ1Y3QgZW5kXG5cbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBPZmRheVxuICAgIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFdpdGhfdXRjX3NleHAgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3QgZW5kXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaF1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0b19zdHJpbmdfYWJzX3BhcnRzIHQgfnpvbmU6Wm9uZS51dGMgOiBzdHJpbmcgbGlzdCldXG5cbiAgICAgIGxldCB0X29mX3NleHAgc2V4cCA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICAgIHwgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIGRhdGU7IFNleHAuQXRvbSBvZmRheV9hbmRfcG9zc2libHlfem9uZSBdIC0+XG4gICAgICAgICAgICBvZl9zdHJpbmdfZ2VuXG4gICAgICAgICAgICAgIH5kZWZhdWx0X3pvbmU6KGZ1biAoKSAtPiBab25lLnV0YylcbiAgICAgICAgICAgICAgfmZpbmRfem9uZTooZnVuIF8gLT5cbiAgICAgICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZS5TdGFibGUuV2l0aF91dGMuVjIudF9vZl9zZXhwOiB1bmtub3duIHRpbWUgem9uZVwiIHNleHApXG4gICAgICAgICAgICAgIChkYXRlIF4gXCIgXCIgXiBvZmRheV9hbmRfcG9zc2libHlfem9uZSlcbiAgICAgICAgICB8IF8gLT4gb2Zfc2V4cF9lcnJvciBcIlRpbWUuU3RhYmxlLldpdGhfdXRjLlYyLnRfb2Zfc2V4cFwiIHNleHBcbiAgICAgICAgd2l0aFxuICAgICAgICB8IE9mX3NleHBfZXJyb3IgXyBhcyBlIC0+IHJhaXNlIGVcbiAgICAgICAgfCBlIC0+XG4gICAgICAgICAgb2Zfc2V4cF9lcnJvclxuICAgICAgICAgICAgKHNwcmludGYgXCJUaW1lLlN0YWJsZS5XaXRoX3V0Yy5WMi50X29mX3NleHA6ICVzXCIgKEV4bi50b19zdHJpbmcgZSkpXG4gICAgICAgICAgICBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTZXhwbGliLlNleHBfZ3JhbW1hci5jb2VyY2UgU2V4cGxpYi5TZXhwLnRfc2V4cF9ncmFtbWFyXG4gICAgICBsZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV91bml4XG5cbiAgICAgIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gICAgICBtb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgWm9uZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdCBlbmRcbiAgICBpbmNsdWRlIFpvbmVfc3RhYmxlXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPZmRheSA9IHN0cnVjdFxuICBpbmNsdWRlIE9mZGF5XG5cbiAgbGV0IGFyZ190eXBlID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG5vdyA9IGBVc2VfVGltZV91bml4XG5cbiAgbW9kdWxlIFpvbmVkID0gc3RydWN0IGVuZFxuZW5kXG5cbm1vZHVsZSBTcGFuID0gc3RydWN0XG4gIGluY2x1ZGUgU3BhblxuXG4gIGxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5lbmRcblxubW9kdWxlIFpvbmUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBab25lXG4gIG1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxuICBtb2R1bGUgSGFzaF9zZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBUYWJsZSA9IHN0cnVjdCBlbmRcblxuICBsZXQgKCA8ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgKCA8PSApID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0ICggPD4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID0gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID4gKSA9IGBVc2VfVGltZV91bml4XG4gIGxldCAoID49ICkgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgX19iaW5fcmVhZF90X18gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXJnX3R5cGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYXNjZW5kaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGJldHdlZW4gPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3JlYWRfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fcmVhZGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NoYXBlX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgYmluX3NpemVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVfdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBiaW5fd3JpdGVyX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgY2xhbXBfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGNvbXBhcmF0b3IgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgZGVzY2VuZGluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBlcXVhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBmaW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGZpbmRfZXhuID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IGhhc2ggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaF9mb2xkX3QgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaGFzaGFibGUgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgaW5pdCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBpbml0aWFsaXplZF96b25lcyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBsb2NhbCA9IGBVc2VfVGltZV91bml4XG4gIGxldCBtYXggPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgbWluID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IG9mX3N0cmluZyA9IGBVc2VfVGltZV91bml4XG4gIGxldCBwcCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB0X29mX3NleHAgPSBgVXNlX1RpbWVfdW5peFxuICBsZXQgdG9fc3RyaW5nID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX3VuaXhcbiAgbGV0IHZhbGlkYXRlX2xib3VuZCA9IGBVc2VfVGltZV91bml4XG4gIGxldCB2YWxpZGF0ZV91Ym91bmQgPSBgVXNlX1RpbWVfdW5peFxuZW5kXG5cbm1vZHVsZSBFeHBvc2VkX2Zvcl90ZXN0cyA9IHN0cnVjdCBlbmRcbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBTZXQgPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgVGFibGUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV91bml4XG5sZXQgZm9ybWF0ID0gYFVzZV9UaW1lX3VuaXhcbmxldCBnZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX3VuaXhcbmxldCBoYXNoYWJsZSA9IGBVc2VfVGltZV91bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG5sZXQgb2ZfdG0gPSBgVXNlX1RpbWVfdW5peFxubGV0IHBhcnNlID0gYFVzZV9UaW1lX3VuaXhcbmxldCBwYXVzZSA9IGBVc2VfVGltZV91bml4XG5sZXQgcGF1c2VfZm9yZXZlciA9IGBVc2VfVGltZV91bml4XG5sZXQgcHAgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNldF9zZXhwX3pvbmUgPSBgVXNlX1RpbWVfdW5peFxubGV0IHNleHBfb2ZfdCA9IGBVc2VfVGltZV91bml4XG5sZXQgc2V4cF9vZl90X2FicyA9IGBVc2VfVGltZV91bml4XG5sZXQgdF9vZl9zZXhwID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0X29mX3NleHBfYWJzID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19kYXRlX29mZGF5X3pvbmVkID0gYFVzZV9UaW1lX3VuaXhcbmxldCB0b19vZmRheV96b25lZCA9IGBVc2VfVGltZV91bml4XG5sZXQgdG9fc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV91bml4XG4iLCJpbmNsdWRlIERhdGUwXG5cbmxldCBvZl90aW1lIHRpbWUgfnpvbmUgPSBUaW1lX2Zsb2F0LnRvX2RhdGUgfnpvbmUgdGltZVxubGV0IHRvZGF5IH56b25lID0gb2ZfdGltZSAoVGltZV9mbG9hdC5ub3cgKCkpIH56b25lXG5sZXQgZm9ybWF0ID0gYFVzZV9EYXRlX3VuaXhcbmxldCBvZl90bSA9IGBVc2VfRGF0ZV91bml4XG5sZXQgcGFyc2UgPSBgVXNlX0RhdGVfdW5peFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxub3BlbiEgSW50NjMuT1xuXG5sZXQgbW9kdWxlX25hbWUgPSBcIkNvcmUuVGltZV9ucy5TcGFuXCJcblxudHlwZSB1bmRlcmx5aW5nID0gSW50NjMudFxuXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBJbnQuZXF1YWwgU3lzLndvcmRfc2l6ZV9pbl9iaXRzIDY0XG5sZXQgcm91bmRfbmVhcmVzdCA9IEZsb2F0LmludDYzX3JvdW5kX25lYXJlc3RfZXhuXG5sZXQgZmxvYXQgeCA9IEludDYzLnRvX2Zsb2F0IHhcblxuKCogW1NwYW5dIGlzIGJhc2ljYWxseSBhIFtJbnQ2M10uICBJdCBldmVuIHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3cuICopXG5tb2R1bGUgVCA9IHN0cnVjdFxuICB0eXBlIHQgPSBJbnQ2My50ICgqIG5hbm9zZWNvbmRzICopIFtAQGRlcml2aW5nIGhhc2gsIGJpbl9pbywgcXVpY2tjaGVjaywgdHlwZXJlcF1cblxuICBtb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gSW50NjMuUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5cbiAgbGV0IHplcm8gPSBJbnQ2My56ZXJvXG5lbmRcblxuaW5jbHVkZSBUXG5vcGVuIFJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgUGFydHMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHNpZ24gOiBTaWduLnRcbiAgICA7IGhyIDogaW50XG4gICAgOyBtaW4gOiBpbnRcbiAgICA7IHNlYyA6IGludFxuICAgIDsgbXMgOiBpbnRcbiAgICA7IHVzIDogaW50XG4gICAgOyBucyA6IGludFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuZW5kXG5cbmxldCBuZXh0IHQgPSBJbnQ2My5zdWNjIHRcbmxldCBwcmV2IHQgPSBJbnQ2My5wcmVkIHRcbmxldCBuYW5vc2Vjb25kID0gSW50NjMub2ZfaW50IDFcbmxldCBtaWNyb3NlY29uZCA9IEludDYzLihvZl9pbnQgMTAwMCAqIG5hbm9zZWNvbmQpXG5sZXQgbWlsbGlzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWNyb3NlY29uZClcbmxldCBzZWNvbmQgPSBJbnQ2My4ob2ZfaW50IDEwMDAgKiBtaWxsaXNlY29uZClcbmxldCBtaW51dGUgPSBJbnQ2My4ob2ZfaW50IDYwICogc2Vjb25kKVxubGV0IGhvdXIgPSBJbnQ2My4ob2ZfaW50IDYwICogbWludXRlKVxubGV0IGRheSA9IEludDYzLihvZl9pbnQgMjQgKiBob3VyKVxuXG4oKiBCZXlvbmQgW21pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nLi5tYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ10sIG5vdCBldmVyeSBtaWNyb3NlY29uZFxuICAgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgW2Zsb2F0XSBudW1iZXIgb2Ygc2Vjb25kcy4gKEluIGZhY3QsIGl0IGlzIGFyb3VuZCAxMzV5LCBidXQgd2VcbiAgIGxlYXZlIGEgc21hbGwgbWFyZ2luLilcblxuICAgSW4gdGhlIHByZXNlbmNlIG9mIHNpbGVudGx5IGlnbm9yZWQgb3ZlcmZsb3csIG5vdGUgdGhhdCBbdF0gaXMgbm90IGFjdHVhbGx5IGJvdW5kIHRvXG4gICBzdGF5IGJldHdlZW4gdGhlc2UgbGltaXRzLiAqKVxubGV0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMuKG9mX2ludCAxMzUgKiBvZl9pbnQgMzY1ICogZGF5KVxubGV0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID0gSW50NjMubmVnIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5cbmxldCBjcmVhdGVcbiAgICAgID9zaWduOihzaWduXyA9IFNpZ24uUG9zICgqIHJlYmluZCBzbyBub3Qgc2hhZG93ZWQgYnkgW29wZW4gSW50NjNdIGJlbG93ICopKVxuICAgICAgP2RheTooZGF5cyA9IDApXG4gICAgICA/KGhyID0gMClcbiAgICAgID9taW46KG1pbnV0ZXMgPSAwKVxuICAgICAgPyhzZWMgPSAwKVxuICAgICAgPyhtcyA9IDApXG4gICAgICA/KHVzID0gMClcbiAgICAgID8obnMgPSAwKVxuICAgICAgKClcbiAgPVxuICBsZXQgb3BlbiBJbnQ2MyBpblxuICBsZXQgdCA9XG4gICAgKG9mX2ludCBkYXlzICogZGF5KVxuICAgICsgKG9mX2ludCBociAqIGhvdXIpXG4gICAgKyAob2ZfaW50IG1pbnV0ZXMgKiBtaW51dGUpXG4gICAgKyAob2ZfaW50IHNlYyAqIHNlY29uZClcbiAgICArIChvZl9pbnQgbXMgKiBtaWxsaXNlY29uZClcbiAgICArIChvZl9pbnQgdXMgKiBtaWNyb3NlY29uZClcbiAgICArIChvZl9pbnQgbnMgKiBuYW5vc2Vjb25kKVxuICBpblxuICBtYXRjaCBzaWduXyB3aXRoXG4gIHwgTmVnIC0+IG5lZyB0XG4gIHwgUG9zIHwgWmVybyAtPiB0XG47O1xuXG5sZXQgdG9fcGFydHMgdCA9XG4gIGxldCBvcGVuIEludDYzIGluXG4gIGxldCBtYWcgPSBhYnMgdCBpblxuICB7IFBhcnRzLnNpZ24gPSAoaWYgdCA8IHplcm8gdGhlbiBOZWcgZWxzZSBpZiB0ID4gemVybyB0aGVuIFBvcyBlbHNlIFplcm8pXG4gIDsgaHIgPSB0b19pbnRfZXhuIChtYWcgLyBob3VyKVxuICA7IG1pbiA9IHRvX2ludF9leG4gKHJlbSBtYWcgaG91ciAvIG1pbnV0ZSlcbiAgOyBzZWMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbnV0ZSAvIHNlY29uZClcbiAgOyBtcyA9IHRvX2ludF9leG4gKHJlbSBtYWcgc2Vjb25kIC8gbWlsbGlzZWNvbmQpXG4gIDsgdXMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pbGxpc2Vjb25kIC8gbWljcm9zZWNvbmQpXG4gIDsgbnMgPSB0b19pbnRfZXhuIChyZW0gbWFnIG1pY3Jvc2Vjb25kIC8gbmFub3NlY29uZClcbiAgfVxuOztcblxubGV0IG9mX3BhcnRzIHsgUGFydHMuc2lnbjsgaHI7IG1pbjsgc2VjOyBtczsgdXM7IG5zIH0gPVxuICBjcmVhdGUgfnNpZ24gfmhyIH5taW4gfnNlYyB+bXMgfnVzIH5ucyAoKVxuOztcblxubGV0IG9mX25zIGYgPSByb3VuZF9uZWFyZXN0IGZcbmxldCBvZl9pbnQ2M19ucyBpID0gaVxubGV0IG9mX2ludF91cyBpID0gSW50NjMuKG9mX2ludCBpICogbWljcm9zZWNvbmQpXG5sZXQgb2ZfaW50X21zIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBtaWxsaXNlY29uZClcbmxldCBvZl9pbnRfc2VjIGkgPSBJbnQ2My4ob2ZfaW50IGkgKiBzZWNvbmQpXG5sZXQgb2ZfdXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWljcm9zZWNvbmQpXG5sZXQgb2ZfbXMgZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWlsbGlzZWNvbmQpXG5sZXQgb2Zfc2VjIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IHNlY29uZClcbmxldCBvZl9taW4gZiA9IHJvdW5kX25lYXJlc3QgKGYgKi4gZmxvYXQgbWludXRlKVxubGV0IG9mX2hyIGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGhvdXIpXG5sZXQgb2ZfZGF5IGYgPSByb3VuZF9uZWFyZXN0IChmICouIGZsb2F0IGRheSlcblxubGV0IG9mX3NlY193aXRoX21pY3Jvc2Vjb25kX3ByZWNpc2lvbiBzZWMgPVxuICBsZXQgdXMgPSByb3VuZF9uZWFyZXN0IChzZWMgKi4gMWU2KSBpblxuICBvZl9pbnQ2M19ucyBJbnQ2My4odXMgKiBvZl9pbnQgMTAwMClcbjs7XG5cbmxldCBvZl9pbnQ2M19zZWNvbmRzIHggPSB4ICogc2Vjb25kXG5sZXQgb2ZfaW50MzJfc2Vjb25kcyB4ID0gb2ZfaW50NjNfc2Vjb25kcyAoSW50NjMub2ZfaW50MzIgeClcblxubGV0IHRvX25zIHQgPSBmbG9hdCB0XG5sZXQgdG9faW50NjNfbnMgdCA9IHRcbmxldCB0b191cyB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaWNyb3NlY29uZFxubGV0IHRvX21zIHQgPSBmbG9hdCB0IC8uIGZsb2F0IG1pbGxpc2Vjb25kXG5sZXQgdG9fc2VjIHQgPSBmbG9hdCB0IC8uIGZsb2F0IHNlY29uZFxubGV0IHRvX21pbiB0ID0gZmxvYXQgdCAvLiBmbG9hdCBtaW51dGVcbmxldCB0b19ociB0ID0gZmxvYXQgdCAvLiBmbG9hdCBob3VyXG5sZXQgdG9fZGF5IHQgPSBmbG9hdCB0IC8uIGZsb2F0IGRheVxubGV0IHRvX2ludF91cyB0ID0gSW50NjMuKHRvX2ludF9leG4gKHQgLyBtaWNyb3NlY29uZCkpXG5sZXQgdG9faW50X21zIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIG1pbGxpc2Vjb25kKSlcbmxldCB0b19pbnRfc2VjIHQgPSBJbnQ2My4odG9faW50X2V4biAodCAvIHNlY29uZCkpXG5sZXQgdG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biB0ID0gdCAvJSBzZWNvbmRcbmxldCBvZl9pbnRfbnMgaSA9IG9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgaSlcblxubGV0IHRvX2ludF9ucyA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnMgdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMuU3Bhbi50b19pbnRfbnM6IHVuc3VwcG9ydGVkIG9uIDMyYml0IG1hY2hpbmVzXCJcbjs7XG5cbmxldCAoICsgKSB0IHUgPSBJbnQ2My4oICsgKSB0IHVcbmxldCAoIC0gKSB0IHUgPSBJbnQ2My4oIC0gKSB0IHVcbmxldCBhYnMgPSBJbnQ2My5hYnNcbmxldCBuZWcgPSBJbnQ2My5uZWdcbmxldCBzY2FsZSB0IGYgPSByb3VuZF9uZWFyZXN0IChmbG9hdCB0ICouIGYpXG5sZXQgc2NhbGVfaW50NjMgdCBpID0gSW50NjMuKCAqICkgdCBpXG5sZXQgc2NhbGVfaW50IHQgaSA9IHNjYWxlX2ludDYzIHQgKEludDYzLm9mX2ludCBpKVxubGV0IGRpdiA9IEludDYzLiggLyUgKVxubGV0ICggLyApIHQgZiA9IHJvdW5kX25lYXJlc3QgKGZsb2F0IHQgLy4gZilcbmxldCAoIC8vICkgPSBJbnQ2My4oIC8vIClcbmxldCB0b19wcm9wb3J0aW9uYWxfZmxvYXQgdCA9IEludDYzLnRvX2Zsb2F0IHRcblxubGV0IG9mX3VuaXRfb2ZfdGltZSB1ID1cbiAgbWF0Y2ggKHUgOiBVbml0X29mX3RpbWUudCkgd2l0aFxuICB8IE5hbm9zZWNvbmQgLT4gbmFub3NlY29uZFxuICB8IE1pY3Jvc2Vjb25kIC0+IG1pY3Jvc2Vjb25kXG4gIHwgTWlsbGlzZWNvbmQgLT4gbWlsbGlzZWNvbmRcbiAgfCBTZWNvbmQgLT4gc2Vjb25kXG4gIHwgTWludXRlIC0+IG1pbnV0ZVxuICB8IEhvdXIgLT4gaG91clxuICB8IERheSAtPiBkYXlcbjs7XG5cbmxldCB0b191bml0X29mX3RpbWUgdCA6IFVuaXRfb2ZfdGltZS50ID1cbiAgbGV0IGFic190ID0gYWJzIHQgaW5cbiAgaWYgYWJzX3QgPj0gZGF5XG4gIHRoZW4gRGF5XG4gIGVsc2UgaWYgYWJzX3QgPj0gaG91clxuICB0aGVuIEhvdXJcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaW51dGVcbiAgdGhlbiBNaW51dGVcbiAgZWxzZSBpZiBhYnNfdCA+PSBzZWNvbmRcbiAgdGhlbiBTZWNvbmRcbiAgZWxzZSBpZiBhYnNfdCA+PSBtaWxsaXNlY29uZFxuICB0aGVuIE1pbGxpc2Vjb25kXG4gIGVsc2UgaWYgYWJzX3QgPj0gbWljcm9zZWNvbmRcbiAgdGhlbiBNaWNyb3NlY29uZFxuICBlbHNlIE5hbm9zZWNvbmRcbjs7XG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDAgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBlcXVhbF1cblxuICAgICAgICBsZXQgb2ZfaW50NjNfZXhuIHQgPSBvZl9pbnQ2M19ucyB0XG4gICAgICAgIGxldCB0b19pbnQ2MyB0ID0gdG9faW50NjNfbnMgdFxuXG4gICAgICAgIG1vZHVsZSBUb19zdHJpbmcgPSBzdHJ1Y3RcbiAgICAgICAgICBsZXQgbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA9IDBcbiAgICAgICAgICAgIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTBcbiAgICAgICAgICAgIHRoZW4gMVxuICAgICAgICAgICAgZWxzZSBpZiBzcGFuX3BhcnRfbWFnbml0dWRlIDwgMTAwXG4gICAgICAgICAgICB0aGVuIDJcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDFfMDAwXG4gICAgICAgICAgICB0aGVuIDNcbiAgICAgICAgICAgIGVsc2UgaWYgc3Bhbl9wYXJ0X21hZ25pdHVkZSA8IDEwXzAwMFxuICAgICAgICAgICAgdGhlbiA0XG4gICAgICAgICAgICBlbHNlIGlmIHNwYW5fcGFydF9tYWduaXR1ZGUgPCAxMDBfMDAwXG4gICAgICAgICAgICB0aGVuIDVcbiAgICAgICAgICAgIGVsc2UgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgOztcblxuICAgICAgICAgICgqIHNwYW4gcGFydCBtYWduaXR1ZGVzIGFyZSBhbHdheXMgPCAxMDBfMDAwICopXG5cbiAgICAgICAgICBsZXQgbnVtYmVyX29mX2RlY2ltYWxfcGxhY2VzX3RvX3dyaXRlIH5iaWxsaW9udGhzID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBhc3NlcnQgKGJpbGxpb250aHMgPj0gMCAmJiBiaWxsaW9udGhzIDw9IDk5OV85OTlfOTk5KTtcbiAgICAgICAgICAgIGlmIGJpbGxpb250aHMgPSAwXG4gICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gOVxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gOFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMV8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA3XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMF8wMDAgPD4gMFxuICAgICAgICAgICAgdGhlbiA2XG4gICAgICAgICAgICBlbHNlIGlmIGJpbGxpb250aHMgJSAxMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNVxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMV8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gNFxuICAgICAgICAgICAgZWxzZSBpZiBiaWxsaW9udGhzICUgMTBfMDAwXzAwMCA8PiAwXG4gICAgICAgICAgICB0aGVuIDNcbiAgICAgICAgICAgIGVsc2UgaWYgYmlsbGlvbnRocyAlIDEwMF8wMDBfMDAwIDw+IDBcbiAgICAgICAgICAgIHRoZW4gMlxuICAgICAgICAgICAgZWxzZSAxXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCB3cml0ZV9jaGFyIGJ1ZiB+cG9zIGNoYXIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmIHBvcyBjaGFyO1xuICAgICAgICAgICAgcG9zICsgMVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfMl9jaGFycyBidWYgfnBvcyBjaGFyMSBjaGFyMiA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgcG9zIGNoYXIxO1xuICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgKHBvcyArIDEpIGNoYXIyO1xuICAgICAgICAgICAgcG9zICsgMlxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIH5kaWdpdHMgaW50ID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV9pbnQ2MyBidWYgfnBvcyB+ZGlnaXRzIChJbnQ2My5vZl9pbnQgaW50KTtcbiAgICAgICAgICAgIHBvcyArIGRpZ2l0c1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfZGVjaW1hbHMgYnVmIH5wb3MgfmRlY2ltYWxzIH5iaWxsaW9udGhzID1cbiAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV9pbnQ2M1xuICAgICAgICAgICAgICBidWZcbiAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICB+ZGlnaXRzOmRlY2ltYWxzXG4gICAgICAgICAgICAgIChJbnQ2My5vZl9pbnQgKGJpbGxpb250aHMgLyBJbnQucG93IDEwICg5IC0gZGVjaW1hbHMpKSk7XG4gICAgICAgICAgICBwb3MgKyBkZWNpbWFsc1xuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHMgaW50IHN1ZmZpeCA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgaWYgZGlnaXRzID0gMFxuICAgICAgICAgICAgdGhlbiBwb3NcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfZGlnaXRzIGJ1ZiB+cG9zIH5kaWdpdHMgaW50IGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9jaGFyIGJ1ZiB+cG9zIHN1ZmZpeCBpblxuICAgICAgICAgICAgICBwb3MpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBuYW5vc19vZl9taWxsaXNlY29uZCA9IHRvX2ludDYzX25zIG1pbGxpc2Vjb25kIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICBsZXQgbmFub3Nfb2ZfbWljcm9zZWNvbmQgPSB0b19pbnQ2M19ucyBtaWNyb3NlY29uZCB8PiBJbnQ2My50b19pbnRfZXhuXG4gICAgICAgICAgbGV0IGludDYzXzYwID0gSW50NjMub2ZfaW50IDYwXG4gICAgICAgICAgbGV0IGludDYzXzI0ID0gSW50NjMub2ZfaW50IDI0XG5cbiAgICAgICAgICAoKiBVbml0cyBvZiBzZWNvbmRzIGFuZCBzbWFsbGVyIGNhbiBiZSB3cml0dGVuIGluIGRlY2ltYWwgbm90YXRpb24gd2l0aG91dFxuICAgICAgICAgICAgIHdvcnJ5aW5nIGFib3V0IG5vbi1wb3dlci1vZi10ZW4gZmFjdG9ycy4gKilcbiAgICAgICAgICBtb2R1bGUgRGVjaW1hbF91bml0ID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IFNlY29uZFxuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kXG4gICAgICAgICAgICAgIHwgTm9uZVxuICAgICAgICAgICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICAgICAgICAgICAgbGV0IGNyZWF0ZSB+cyB+bnMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBpZiBzID4gMFxuICAgICAgICAgICAgICB0aGVuIFNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIG5zID49IG5hbm9zX29mX21pbGxpc2Vjb25kXG4gICAgICAgICAgICAgIHRoZW4gTWlsbGlzZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiBucyA+PSBuYW5vc19vZl9taWNyb3NlY29uZFxuICAgICAgICAgICAgICB0aGVuIE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbnMgPj0gMVxuICAgICAgICAgICAgICB0aGVuIE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBOb25lXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgaW50ZWdlciB0IH5zIH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiBzXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbnMgLyBuYW5vc19vZl9taWxsaXNlY29uZFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG5zIC8gbmFub3Nfb2ZfbWljcm9zZWNvbmRcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IG5zXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgYmlsbGlvbnRocyB0IH5ucyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgICB8IFNlY29uZCAtPiBuc1xuICAgICAgICAgICAgICB8IE1pbGxpc2Vjb25kIC0+IG5zICUgbmFub3Nfb2ZfbWlsbGlzZWNvbmQgKiAxXzAwMFxuICAgICAgICAgICAgICB8IE1pY3Jvc2Vjb25kIC0+IG5zICUgbmFub3Nfb2ZfbWljcm9zZWNvbmQgKiAxXzAwMF8wMDBcbiAgICAgICAgICAgICAgfCBOYW5vc2Vjb25kIC0+IDBcbiAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgIDs7XG5cbiAgICAgICAgICAgIGxldCBsZW5ndGggdCB+ZGlnaXRzIH5kZWNpbWFscyA9XG4gICAgICAgICAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfbGVuID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgICB8IFNlY29uZCAtPiBkaWdpdHMgKyAxXG4gICAgICAgICAgICAgICAgfCBNaWxsaXNlY29uZCB8IE1pY3Jvc2Vjb25kIHwgTmFub3NlY29uZCAtPiBkaWdpdHMgKyAyXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IDBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxzX2xlbiA9IGlmIGRlY2ltYWxzID4gMCB0aGVuIGRlY2ltYWxzICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgZGlnaXRzX2xlbiArIGRlY2ltYWxzX2xlblxuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IHdyaXRlX3N1ZmZpeCB0IGJ1ZiB+cG9zID1cbiAgICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgIHwgU2Vjb25kIC0+IHdyaXRlX2NoYXIgYnVmIH5wb3MgJ3MnXG4gICAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAnbScgJ3MnXG4gICAgICAgICAgICAgIHwgTWljcm9zZWNvbmQgLT4gd3JpdGVfMl9jaGFycyBidWYgfnBvcyAndScgJ3MnXG4gICAgICAgICAgICAgIHwgTmFub3NlY29uZCAtPiB3cml0ZV8yX2NoYXJzIGJ1ZiB+cG9zICduJyAncydcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHBvc1xuICAgICAgICAgICAgOztcblxuICAgICAgICAgICAgbGV0IHdyaXRlIHQgYnVmIH5wb3MgfmludGVnZXIgfmRpZ2l0cyB+YmlsbGlvbnRocyB+ZGVjaW1hbHMgPVxuICAgICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgICBpZiBkaWdpdHMgPSAwXG4gICAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9kaWdpdHMgYnVmIH5wb3MgaW50ZWdlciB+ZGlnaXRzIGluXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWNpbWFscyA9IDBcbiAgICAgICAgICAgICAgICAgIHRoZW4gcG9zXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2NoYXIgYnVmIH5wb3MgJy4nIGluXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlX2RlY2ltYWxzIGJ1ZiB+cG9zIH5iaWxsaW9udGhzIH5kZWNpbWFscylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHdyaXRlX3N1ZmZpeCB0IGJ1ZiB+cG9zKVxuICAgICAgICAgICAgOztcbiAgICAgICAgICBlbmRcblxuICAgICAgICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICAgICAgICBpZiBlcXVhbCB0IHplcm9cbiAgICAgICAgICAgIHRoZW4gXCIwc1wiXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IGlzX25lZ2F0aXZlID0gdCA8IHplcm8gaW5cbiAgICAgICAgICAgICAgbGV0IHNlY29uZHMgPSBJbnQ2My4oIC8gKSAodG9faW50NjNfbnMgdCkgKHRvX2ludDYzX25zIHNlY29uZCkgaW5cbiAgICAgICAgICAgICAgbGV0IG5zID1cbiAgICAgICAgICAgICAgICBJbnQ2My5yZW0gKHRvX2ludDYzX25zIHQpICh0b19pbnQ2M19ucyBzZWNvbmQpIHw+IEludDYzLnRvX2ludF9leG5cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNlY29uZHMgPSBJbnQ2My5hYnMgc2Vjb25kcyBpblxuICAgICAgICAgICAgICBsZXQgbnMgPSBJbnQuYWJzIG5zIGluXG4gICAgICAgICAgICAgIGxldCBzID0gSW50NjMucmVtIHNlY29uZHMgaW50NjNfNjAgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgbWludXRlcyA9IEludDYzLiggLyApIHNlY29uZHMgaW50NjNfNjAgaW5cbiAgICAgICAgICAgICAgbGV0IG0gPSBJbnQ2My5yZW0gbWludXRlcyBpbnQ2M182MCB8PiBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICAgICAgICAgIGxldCBob3VycyA9IEludDYzLiggLyApIG1pbnV0ZXMgaW50NjNfNjAgaW5cbiAgICAgICAgICAgICAgbGV0IGggPSBJbnQ2My5yZW0gaG91cnMgaW50NjNfMjQgfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICAgICAgICBsZXQgZCA9IEludDYzLiggLyApIGhvdXJzIGludDYzXzI0IHw+IEludDYzLnRvX2ludF9leG4gaW5cbiAgICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgICAgbGV0IGRpZ2l0c19vZl9kID0gbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpkIGluXG4gICAgICAgICAgICAgIGxldCBkaWdpdHNfb2ZfaCA9IG51bWJlcl9vZl9kaWdpdHNfdG9fd3JpdGUgfnNwYW5fcGFydF9tYWduaXR1ZGU6aCBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX20gPSBudW1iZXJfb2ZfZGlnaXRzX3RvX3dyaXRlIH5zcGFuX3BhcnRfbWFnbml0dWRlOm0gaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdCA9IERlY2ltYWxfdW5pdC5jcmVhdGUgfnMgfm5zIGluXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX3VuaXRfaW50ZWdlciA9IERlY2ltYWxfdW5pdC5pbnRlZ2VyIGRlY2ltYWxfdW5pdCB+cyB+bnMgaW5cbiAgICAgICAgICAgICAgbGV0IGRlY2ltYWxfdW5pdF9iaWxsaW9udGhzID0gRGVjaW1hbF91bml0LmJpbGxpb250aHMgZGVjaW1hbF91bml0IH5ucyBpblxuICAgICAgICAgICAgICBsZXQgZGlnaXRzX29mX2RlY2ltYWxfdW5pdCA9XG4gICAgICAgICAgICAgICAgbnVtYmVyX29mX2RpZ2l0c190b193cml0ZSB+c3Bhbl9wYXJ0X21hZ25pdHVkZTpkZWNpbWFsX3VuaXRfaW50ZWdlclxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbHNfb2ZfZGVjaW1hbF91bml0ID1cbiAgICAgICAgICAgICAgICBudW1iZXJfb2ZfZGVjaW1hbF9wbGFjZXNfdG9fd3JpdGUgfmJpbGxpb250aHM6ZGVjaW1hbF91bml0X2JpbGxpb250aHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHN0cmluZ19sZW5ndGggPVxuICAgICAgICAgICAgICAgIGxldCBzaWduX2xlbiA9IGlmIGlzX25lZ2F0aXZlIHRoZW4gMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZF9sZW4gPSBpZiBkaWdpdHNfb2ZfZCA+IDAgdGhlbiBkaWdpdHNfb2ZfZCArIDEgZWxzZSAwIGluXG4gICAgICAgICAgICAgICAgbGV0IGhfbGVuID0gaWYgZGlnaXRzX29mX2ggPiAwIHRoZW4gZGlnaXRzX29mX2ggKyAxIGVsc2UgMCBpblxuICAgICAgICAgICAgICAgIGxldCBtX2xlbiA9IGlmIGRpZ2l0c19vZl9tID4gMCB0aGVuIGRpZ2l0c19vZl9tICsgMSBlbHNlIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZGVjaW1hbF91bml0X2xlbiA9XG4gICAgICAgICAgICAgICAgICBEZWNpbWFsX3VuaXQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgICB+ZGlnaXRzOmRpZ2l0c19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOmRlY2ltYWxzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgc2lnbl9sZW4gKyBkX2xlbiArIGhfbGVuICsgbV9sZW4gKyBkZWNpbWFsX3VuaXRfbGVuXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFzc2VydCAoc3RyaW5nX2xlbmd0aCA+IDApO1xuICAgICAgICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIHN0cmluZ19sZW5ndGggaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IDAgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IGlmIGlzX25lZ2F0aXZlIHRoZW4gd3JpdGVfY2hhciBidWYgfnBvcyAnLScgZWxzZSBwb3MgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9IHdyaXRlX2lmX25vbl9lbXB0eSBidWYgfnBvcyB+ZGlnaXRzOmRpZ2l0c19vZl9kIGQgJ2QnIGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPSB3cml0ZV9pZl9ub25fZW1wdHkgYnVmIH5wb3MgfmRpZ2l0czpkaWdpdHNfb2ZfaCBoICdoJyBpblxuICAgICAgICAgICAgICBsZXQgcG9zID0gd3JpdGVfaWZfbm9uX2VtcHR5IGJ1ZiB+cG9zIH5kaWdpdHM6ZGlnaXRzX29mX20gbSAnbScgaW5cbiAgICAgICAgICAgICAgbGV0IHBvcyA9XG4gICAgICAgICAgICAgICAgRGVjaW1hbF91bml0LndyaXRlXG4gICAgICAgICAgICAgICAgICBkZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgICAgIGJ1ZlxuICAgICAgICAgICAgICAgICAgfnBvc1xuICAgICAgICAgICAgICAgICAgfmludGVnZXI6ZGVjaW1hbF91bml0X2ludGVnZXJcbiAgICAgICAgICAgICAgICAgIH5kaWdpdHM6ZGlnaXRzX29mX2RlY2ltYWxfdW5pdFxuICAgICAgICAgICAgICAgICAgfmJpbGxpb250aHM6ZGVjaW1hbF91bml0X2JpbGxpb250aHNcbiAgICAgICAgICAgICAgICAgIH5kZWNpbWFsczpkZWNpbWFsc19vZl9kZWNpbWFsX3VuaXRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXNzZXJ0IChwb3MgPSBzdHJpbmdfbGVuZ3RoKTtcbiAgICAgICAgICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyB+bm9fbXV0YXRpb25fd2hpbGVfc3RyaW5nX3JlYWNoYWJsZTpidWYpXG4gICAgICAgICAgOztcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IFRvX3N0cmluZy50b19zdHJpbmdcblxuICAgICAgICBtb2R1bGUgT2Zfc3RyaW5nID0gc3RydWN0XG4gICAgICAgICAgKCogV2UgZG8gY29tcHV0YXRpb25zIHVzaW5nIG5lZ2F0aXZlIG51bWJlcnMgZXZlcnl3aGVyZSBhbmQgdGVzdCBhZ2FpbnN0XG4gICAgICAgICAgICAgdGhpbmdzIHJlbGF0ZWQgdG8gW0ludDYzLm1pbl92YWx1ZV0gcmF0aGVyIHRoYW4gdXNpbmcgcG9zaXRpdmUgbnVtYmVyc1xuICAgICAgICAgICAgIGFuZCB0ZXN0aW5nIGFnYWluc3QgdGhpbmdzIHJlbGF0ZWQgdG8gW0ludDYzLm1heF92YWx1ZV0gYmVjYXVzZSB0aGVcbiAgICAgICAgICAgICBuZWdhdGl2ZSBpbnRlZ2VyIHJhbmdlIGlzIG9uZSB3aWRlciB0aGFuIHRoZSBwb3NpdGl2ZSBpbnRlZ2VyIHJhbmdlXG4gICAgICAgICAgICAgKC0yKio2MyB2cyAyKio2My0xKSwgYW5kIHdlIG5lZWQgdGhhdCB0byBiZSBhYmxlIHRvIGhhbmRsZSBJbnQ2My5taW5fdmFsdWVcbiAgICAgICAgICAgICBuaWNlbHkuICopXG5cbiAgICAgICAgICBsZXQgaW50NjNfMTAgPSBJbnQ2My5vZl9pbnQgMTBcbiAgICAgICAgICBsZXQgbWluX211bHQxMF93aXRob3V0X3VuZGVyZmxvdyA9IEludDYzLihtaW5fdmFsdWUgLyBpbnQ2M18xMClcblxuICAgICAgICAgIGxldFtAY29sZF0gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb24gPVxuICAgICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICAgICAgICBcIlRpbWVfbnMuU3Bhbi5vZl9zdHJpbmc6IGludmFsaWQgc3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgIChzdHJpbmcgOiBzdHJpbmcpXG4gICAgICAgICAgICAgICAgICAocmVhc29uIDogc3RyaW5nKV1cbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgKCogQXNzdW1lcyB4IGFuZCB5IGFyZSBib3RoIG5vbnBvc2l0aXZlICopXG4gICAgICAgICAgbGV0IGFkZF93aXRob3V0X3VuZGVyZmxvdyB+c3RyaW5nIHggeSA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICAgICAgICBsZXQgc3VtID0geCArIHkgaW5cbiAgICAgICAgICAgIGlmIHN1bSA+IHhcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIHN1bVxuICAgICAgICAgIDs7XG5cbiAgICAgICAgICBsZXQgYWRkX25lZ19kaWdpdCB+c3RyaW5nIGludDYzIGNoYXIgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgICAgICAgbGV0IGRpZ2l0ID0gSW50NjMub2ZfaW50IChDaGFyLmdldF9kaWdpdF9leG4gY2hhcikgaW5cbiAgICAgICAgICAgIGlmIGludDYzIDwgbWluX211bHQxMF93aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiO1xuICAgICAgICAgICAgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgKGludDYzICogaW50NjNfMTApICgtZGlnaXQpXG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBtaW5fZmFjdG9yX29mIHNwYW4gPSBJbnQ2My4oIC8gKSBJbnQ2My5taW5fdmFsdWUgKHRvX2ludDYzX25zIHNwYW4pXG4gICAgICAgICAgbGV0IG1pbl9kYXlzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBkYXlcbiAgICAgICAgICBsZXQgbWluX2hvdXJzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBob3VyXG4gICAgICAgICAgbGV0IG1pbl9taW51dGVzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaW51dGVcbiAgICAgICAgICBsZXQgbWluX3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIHNlY29uZFxuICAgICAgICAgIGxldCBtaW5fbWlsbGlzZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaWxsaXNlY29uZFxuICAgICAgICAgIGxldCBtaW5fbWljcm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93ID0gbWluX2ZhY3Rvcl9vZiBtaWNyb3NlY29uZFxuICAgICAgICAgIGxldCBtaW5fbmFub3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3cgPSBtaW5fZmFjdG9yX29mIG5hbm9zZWNvbmRcblxuICAgICAgICAgIGxldCBtaW5fd2l0aG91dF91bmRlcmZsb3dfb2ZfdW5pdF9vZl90aW1lIHVuaXRfb2ZfdGltZSA9XG4gICAgICAgICAgICBtYXRjaCAodW5pdF9vZl90aW1lIDogVW5pdF9vZl90aW1lLnQpIHdpdGhcbiAgICAgICAgICAgIHwgRGF5IC0+IG1pbl9kYXlzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IEhvdXIgLT4gbWluX2hvdXJzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE1pbnV0ZSAtPiBtaW5fbWludXRlc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBTZWNvbmQgLT4gbWluX3NlY29uZHNfd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHwgTWlsbGlzZWNvbmQgLT4gbWluX21pbGxpc2Vjb25kc193aXRob3V0X3VuZGVyZmxvd1xuICAgICAgICAgICAgfCBNaWNyb3NlY29uZCAtPiBtaW5fbWljcm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgICB8IE5hbm9zZWNvbmQgLT4gbWluX25hbm9zZWNvbmRzX3dpdGhvdXRfdW5kZXJmbG93XG4gICAgICAgICAgOztcblxuICAgICAgICAgIGxldCBuZWdhdGl2ZV9wYXJ0XG4gICAgICAgICAgICAgICAgc3RyaW5nXG4gICAgICAgICAgICAgICAgfm5lZ19pbnRlZ2VyXG4gICAgICAgICAgICAgICAgfmRlY2ltYWxfcG9zXG4gICAgICAgICAgICAgICAgfmVuZF9wb3NcbiAgICAgICAgICAgICAgICB+dW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICAgfnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICA9XG4gICAgICAgICAgICBsZXQgb3BlbiBJbnQuTyBpblxuICAgICAgICAgICAgbGV0IHNjYWxlID0gdG9faW50NjNfbnMgKG9mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWUpIGluXG4gICAgICAgICAgICBsZXQgbWluX3dpdGhvdXRfdW5kZXJmbG93ID1cbiAgICAgICAgICAgICAgbWluX3dpdGhvdXRfdW5kZXJmbG93X29mX3VuaXRfb2ZfdGltZSB1bml0X29mX3RpbWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBJbnQ2My4oIDwgKSBuZWdfaW50ZWdlciBtaW5fd2l0aG91dF91bmRlcmZsb3dcbiAgICAgICAgICAgIHRoZW4gaW52YWxpZF9zdHJpbmcgc3RyaW5nIH5yZWFzb246XCJzcGFuIHdvdWxkIGJlIG91dHNpZGUgb2YgaW50NjMgcmFuZ2VcIjtcbiAgICAgICAgICAgIGxldCBuZWdfaW50ZWdlcl9ucyA9IEludDYzLiggKiApIG5lZ19pbnRlZ2VyIHNjYWxlIGluXG4gICAgICAgICAgICBsZXQgZnJhY3Rpb25fcG9zID0gZGVjaW1hbF9wb3MgKyAxIGluXG4gICAgICAgICAgICBpZiBmcmFjdGlvbl9wb3MgPj0gZW5kX3Bvc1xuICAgICAgICAgICAgdGhlbiBuZWdfaW50ZWdlcl9uc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBkZWNpbWFsX25zID1cbiAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy5yZWFkX2ludDYzX2RlY2ltYWxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgfnBvczpmcmFjdGlvbl9wb3NcbiAgICAgICAgICAgICAgICAgIH5zY2FsZVxuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxzOihlbmRfcG9zIC0gZnJhY3Rpb25fcG9zKVxuICAgICAgICAgICAgICAgICAgfmFsbG93X3VuZGVyc2NvcmU6dHJ1ZVxuICAgICAgICAgICAgICAgICAgfnJvdW5kX3RpZXM6cm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYWRkX3dpdGhvdXRfdW5kZXJmbG93IH5zdHJpbmcgbmVnX2ludGVnZXJfbnMgKEludDYzLiggfi0gKSBkZWNpbWFsX25zKSlcbiAgICAgICAgICA7O1xuXG4gICAgICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgICAgIGxldCBuZWdfbnMgPSByZWYgSW50NjMuemVybyBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHJlZiAwIGluXG4gICAgICAgICAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzdHJpbmcgaW5cbiAgICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcImVtcHR5IHN0cmluZ1wiO1xuICAgICAgICAgICAgbGV0IGlzX25lZ2F0aXZlID1cbiAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICB8ICctJyAtPlxuICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgfCAnKycgLT5cbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICB8IF8gLT4gZmFsc2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcm91bmRfdGllc19iZWZvcmVfbmVnYXRpbmcgOiBEaWdpdF9zdHJpbmdfaGVscGVycy5Sb3VuZC50ID1cbiAgICAgICAgICAgICAgKCogVWx0aW1hdGVseSwgd2UgYWx3YXlzIHJvdW5kIHBhcnNlZCBzcGFucyB0b3dhcmRzIHBvc2l0aXZlIGluZmluaXR5IHdoZW5cbiAgICAgICAgICAgICAgICAgdGhlIG5lYXJlc3Qgcm91bmQgbnMgYXJlIGVxdWlkaXN0YW50LiBGb3IgZXhhbXBsZSwgXCIxLjVuc1wiIGlzIHJlYWQgYXNcbiAgICAgICAgICAgICAgICAgMi4wbnMsIGFuZCBcIi0xLjVuc1wiIGlzIHJlYWQgYXMgLTFucy4gU2luY2Ugd2UgcmVhZCBhYnNvbHV0ZSB2YWx1ZXMgYmVmb3JlXG4gICAgICAgICAgICAgICAgIGFwcGx5aW5nIHRoZSBzaWduLCB3ZSBtdXN0IGNob29zZSBvdXIgcm91bmRpbmcgZGlyZWN0aW9uIGJhc2VkIG9uIHRoZVxuICAgICAgICAgICAgICAgICBzaWduLiBSb3VuZGluZyBkZWNpbWFsIHZhbHVlcyBoYXBwZW5zIGJlZm9yZSBuZWdhdGluZyB0aGVpciBtYWduaXR1ZGUuICopXG4gICAgICAgICAgICAgIG1hdGNoIGlzX25lZ2F0aXZlIHdpdGhcbiAgICAgICAgICAgICAgfCBmYWxzZSAtPiBUb3dhcmRfcG9zaXRpdmVfaW5maW5pdHlcbiAgICAgICAgICAgICAgfCB0cnVlIC0+IFRvd2FyZF9uZWdhdGl2ZV9pbmZpbml0eVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIExvb3Agb3ZlciBwYXJ0cywgbGlrZSBcIjVtXCIgaW4gXCIxaDVtMzBzXCIgKilcbiAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gZG9cbiAgICAgICAgICAgICAgbGV0IGhhc19kaWdpdCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICBsZXQgbmVnX2ludGVnZXIgPVxuICAgICAgICAgICAgICAgIGxldCBpID0gcmVmIEludDYzLnplcm8gaW5cbiAgICAgICAgICAgICAgICBsZXQgZW5kX29mX2RpZ2l0cyA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgICAgICAgIHdoaWxlICFwb3MgPCBsZW4gJiYgbm90ICFlbmRfb2ZfZGlnaXRzIGRvXG4gICAgICAgICAgICAgICAgICBsZXQgYyA9IFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zIGluXG4gICAgICAgICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgJzAnIC4uICc5JyAtPlxuICAgICAgICAgICAgICAgICAgICBpIDo9IGFkZF9uZWdfZGlnaXQgfnN0cmluZyAhaSBjO1xuICAgICAgICAgICAgICAgICAgICBoYXNfZGlnaXQgOj0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgJ18nIC0+IGluY3IgcG9zXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZW5kX29mX2RpZ2l0cyA6PSB0cnVlXG4gICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAhaVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGVjaW1hbF9wb3MgPSAhcG9zIGluXG4gICAgICAgICAgICAgIGlmICFwb3MgPCBsZW4gJiYgQ2hhci5lcXVhbCAnLicgKFN0cmluZy51bnNhZmVfZ2V0IHN0cmluZyAhcG9zKVxuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICBsZXQgZW5kX29mX2RlY2ltYWxzID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgICAgICAgd2hpbGUgIXBvcyA8IGxlbiAmJiBub3QgIWVuZF9vZl9kZWNpbWFscyBkb1xuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICFwb3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICAgICAgICAgIGhhc19kaWdpdCA6PSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvc1xuICAgICAgICAgICAgICAgICAgfCAnXycgLT4gaW5jciBwb3NcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBlbmRfb2ZfZGVjaW1hbHMgOj0gdHJ1ZVxuICAgICAgICAgICAgICAgIGRvbmUpO1xuICAgICAgICAgICAgICBsZXQgZW5kX3BvcyA9ICFwb3MgaW5cbiAgICAgICAgICAgICAgaWYgbm90ICFoYXNfZGlnaXRcbiAgICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcIm5vIGRpZ2l0cyBiZWZvcmUgdW5pdCBzdWZmaXhcIjtcbiAgICAgICAgICAgICAgbGV0IHVuaXRfb2ZfdGltZSA6IFVuaXRfb2ZfdGltZS50ID1cbiAgICAgICAgICAgICAgICBpZiAhcG9zICsgMSA8IGxlbiAmJiBDaGFyLmVxdWFsICdzJyAoU3RyaW5nLnVuc2FmZV9nZXQgc3RyaW5nICghcG9zICsgMSkpXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdtJyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE1pbGxpc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8ICd1JyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgICAgICB8ICduJyAtPlxuICAgICAgICAgICAgICAgICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICAgICAgICAgICAgICAgIE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInVucGFyc2VhYmxlIHVuaXQgc3VmZml4XCIpXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAhcG9zIDwgbGVuXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHJpbmcgIXBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdkJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgRGF5XG4gICAgICAgICAgICAgICAgICB8ICdoJyAtPlxuICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgSG91clxuICAgICAgICAgICAgICAgICAgfCAnbScgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIE1pbnV0ZVxuICAgICAgICAgICAgICAgICAgfCAncycgLT5cbiAgICAgICAgICAgICAgICAgICAgaW5jciBwb3M7XG4gICAgICAgICAgICAgICAgICAgIFNlY29uZFxuICAgICAgICAgICAgICAgICAgfCBfIC0+IGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwidW5wYXJzZWFibGUgdW5pdCBzdWZmaXhcIilcbiAgICAgICAgICAgICAgICBlbHNlIGludmFsaWRfc3RyaW5nIHN0cmluZyB+cmVhc29uOlwibm8gdW5pdCBzdWZmaXggYWZ0ZXIgZGlnaXRzXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5lZ19uYW5vc19vZl9wYXJ0ID1cbiAgICAgICAgICAgICAgICBuZWdhdGl2ZV9wYXJ0XG4gICAgICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgICAgICAgIH5uZWdfaW50ZWdlclxuICAgICAgICAgICAgICAgICAgfmRlY2ltYWxfcG9zXG4gICAgICAgICAgICAgICAgICB+ZW5kX3Bvc1xuICAgICAgICAgICAgICAgICAgfnVuaXRfb2ZfdGltZVxuICAgICAgICAgICAgICAgICAgfnJvdW5kX3RpZXNfYmVmb3JlX25lZ2F0aW5nXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG5lZ19ucyA6PSBhZGRfd2l0aG91dF91bmRlcmZsb3cgfnN0cmluZyAhbmVnX25zIG5lZ19uYW5vc19vZl9wYXJ0XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgbGV0IG5zID1cbiAgICAgICAgICAgICAgaWYgaXNfbmVnYXRpdmVcbiAgICAgICAgICAgICAgdGhlbiAhbmVnX25zXG4gICAgICAgICAgICAgIGVsc2UgaWYgSW50NjMuKCA9ICkgIW5lZ19ucyBJbnQ2My5taW5fdmFsdWVcbiAgICAgICAgICAgICAgdGhlbiBpbnZhbGlkX3N0cmluZyBzdHJpbmcgfnJlYXNvbjpcInNwYW4gd291bGQgYmUgb3V0c2lkZSBvZiBpbnQ2MyByYW5nZVwiXG4gICAgICAgICAgICAgIGVsc2UgSW50NjMuKCB+LSApICFuZWdfbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBvZl9pbnQ2M19ucyBuc1xuICAgICAgICAgIDs7XG4gICAgICAgIGVuZFxuXG4gICAgICAgIGxldCBvZl9zdHJpbmcgPSBPZl9zdHJpbmcub2Zfc3RyaW5nXG4gICAgICAgIGxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAodG9fc3RyaW5nIHQpXG5cbiAgICAgICAgbGV0IHRfb2Zfc2V4cCBzZXhwID1cbiAgICAgICAgICBtYXRjaCBzZXhwIHdpdGhcbiAgICAgICAgICB8IFNleHAuQXRvbSB4IC0+XG4gICAgICAgICAgICAodHJ5IG9mX3N0cmluZyB4IHdpdGhcbiAgICAgICAgICAgICB8IGV4biAtPiBvZl9zZXhwX2Vycm9yIChFeG4udG9fc3RyaW5nIGV4bikgc2V4cClcbiAgICAgICAgICB8IFNleHAuTGlzdCBfIC0+XG4gICAgICAgICAgICBvZl9zZXhwX2Vycm9yIFwiVGltZV9ucy5TcGFuLlN0YWJsZS5WMi50X29mX3NleHA6IHNleHAgbXVzdCBiZSBhbiBBdG9tXCIgc2V4cFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQwXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQwKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUKVxuICBlbmRcbmVuZFxuXG5sZXQgdG9fc3RyaW5nID0gU3RhYmxlLlYyLnRvX3N0cmluZ1xubGV0IG9mX3N0cmluZyA9IFN0YWJsZS5WMi5vZl9zdHJpbmdcbmxldCBzZXhwX29mX3QgPSBTdGFibGUuVjIuc2V4cF9vZl90XG5sZXQgdF9vZl9zZXhwID0gU3RhYmxlLlYyLnRfb2Zfc2V4cFxubGV0IHRfc2V4cF9ncmFtbWFyID0gU3RhYmxlLlYyLnRfc2V4cF9ncmFtbWFyXG5cbm1vZHVsZSBBbHRlcm5hdGVfc2V4cCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBzZXhwX2dyYW1tYXJdXG5lbmRcblxuaW5jbHVkZSBDb21wYXJhYmxlLldpdGhfemVybyAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCB6ZXJvID0gemVyb1xuICBlbmQpXG5cbigqIEZ1bmN0aW9ucyByZXF1aXJlZCBieSBbUm9idXN0bHlfY29tcGFyYWJsZV06IGFsbG93cyBmb3IgW3JvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZV1cbiAgIGdyYW51bGFyaXR5LlxuXG4gICBBIG1pY3Jvc2Vjb25kIGlzIGEgcmVhc29uYWJsZSBncmFudWxhcml0eSBiZWNhdXNlIHRoZXJlIGlzIHZlcnkgbGl0dGxlIG5ldHdvcmtcbiAgIGFjdGl2aXR5IHRoYXQgY2FuIGJlIG1lYXN1cmVkIHRvIHN1Yi1taWNyb3NlY29uZCByZXNvbHV0aW9uLiAqKVxubGV0IHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSA9IG1pY3Jvc2Vjb25kXG5sZXQgKCA+PS4gKSB0IHUgPSB0ID49IEludDYzLih1IC0gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPD0uICkgdCB1ID0gdCA8PSBJbnQ2My4odSArIHJvYnVzdF9jb21wYXJpc29uX3RvbGVyYW5jZSlcbmxldCAoID0uICkgdCB1ID0gSW50NjMuKGFicyAodCAtIHUpKSA8PSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2VcbmxldCAoID4uICkgdCB1ID0gdCA+IEludDYzLih1ICsgcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlKVxubGV0ICggPC4gKSB0IHUgPSB0IDwgSW50NjMuKHUgLSByb2J1c3RfY29tcGFyaXNvbl90b2xlcmFuY2UpXG5sZXQgKCA8Pi4gKSB0IHUgPSBJbnQ2My4oYWJzICh0IC0gdSkpID4gcm9idXN0X2NvbXBhcmlzb25fdG9sZXJhbmNlXG5sZXQgcm9idXN0bHlfY29tcGFyZSB0IHUgPSBpZiB0IDwuIHUgdGhlbiAtMSBlbHNlIGlmIHQgPi4gdSB0aGVuIDEgZWxzZSAwXG5cbigqIFdlIGRvbid0IGp1c3QgY29udmVydCB0byBbVGltZS5TcGFuLnRdIGFuZCB1c2UgdGhlIGNvbnZlcnNpb24gdGhlcmUgYmVjYXVzZSBvdXJcbiAgIFt0b19zcGFuXSBjb252ZXJzaW9uIGlzIGxpbWl0ZWQgdG8gbWljcm9zZWNvbmQgcHJlY2lzaW9uLiAqKVxubGV0IHRvX3N0cmluZ19odW1cbiAgICAgID8oZGVsaW1pdGVyID0gJ18nKVxuICAgICAgPyhkZWNpbWFscyA9IDMpXG4gICAgICA/KGFsaWduX2RlY2ltYWwgPSBmYWxzZSlcbiAgICAgID91bml0X29mX3RpbWVcbiAgICAgIHRcbiAgPVxuICBsZXQgZmxvYXQsIHN1ZmZpeCA9XG4gICAgbWF0Y2ggT3B0aW9uLnZhbHVlIHVuaXRfb2ZfdGltZSB+ZGVmYXVsdDoodG9fdW5pdF9vZl90aW1lIHQpIHdpdGhcbiAgICB8IERheSAtPiB0b19kYXkgdCwgXCJkXCJcbiAgICB8IEhvdXIgLT4gdG9faHIgdCwgXCJoXCJcbiAgICB8IE1pbnV0ZSAtPiB0b19taW4gdCwgXCJtXCJcbiAgICB8IFNlY29uZCAtPiB0b19zZWMgdCwgXCJzXCJcbiAgICB8IE1pbGxpc2Vjb25kIC0+IHRvX21zIHQsIFwibXNcIlxuICAgIHwgTWljcm9zZWNvbmQgLT4gdG9fdXMgdCwgXCJ1c1wiXG4gICAgfCBOYW5vc2Vjb25kIC0+IHRvX25zIHQsIFwibnNcIlxuICBpblxuICBsZXQgcHJlZml4ID1cbiAgICBGbG9hdC50b19zdHJpbmdfaHVtIGZsb2F0IH5kZWxpbWl0ZXIgfmRlY2ltYWxzIH5zdHJpcF96ZXJvOihub3QgYWxpZ25fZGVjaW1hbClcbiAgaW5cbiAgbGV0IHN1ZmZpeCA9XG4gICAgaWYgYWxpZ25fZGVjaW1hbCAmJiBJbnQuKCA9ICkgKFN0cmluZy5sZW5ndGggc3VmZml4KSAxIHRoZW4gc3VmZml4IF4gXCIgXCIgZWxzZSBzdWZmaXhcbiAgaW5cbiAgcHJlZml4IF4gc3VmZml4XG47O1xuXG5sZXQgc2luY2VfdW5peF9lcG9jaCAoKSA9IFRpbWVfbm93Lm5hbm9zZWNvbmRzX3NpbmNlX3VuaXhfZXBvY2ggKCkgfD4gb2ZfaW50NjNfbnNcblxubGV0IHJhbmRvbSA/c3RhdGUgKCkgPVxuICBJbnQ2My5yYW5kb20gP3N0YXRlIChtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyArIEludDYzLm9uZSlcbiAgLSBJbnQ2My5yYW5kb20gP3N0YXRlIChuZWcgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgKyBJbnQ2My5vbmUpXG47O1xuXG5sZXQgcmFuZG9taXplIHQgfnBlcmNlbnQgPSBTcGFuX2hlbHBlcnMucmFuZG9taXplIHQgfnBlcmNlbnQgfnNjYWxlXG5cbmxldCB0b19zaG9ydF9zdHJpbmcgdCA9XG4gIGxldCAoeyBzaWduOyBocjsgbWluOyBzZWM7IG1zOyB1czsgbnMgfSA6IFBhcnRzLnQpID0gdG9fcGFydHMgdCBpblxuICBTcGFuX2hlbHBlcnMuc2hvcnRfc3RyaW5nIH5zaWduIH5ociB+bWluIH5zZWMgfm1zIH51cyB+bnNcbjs7XG5cbmxldCBnZW5faW5jbCA9IEludDYzLmdlbl9pbmNsXG5sZXQgZ2VuX3VuaWZvcm1faW5jbCA9IEludDYzLmdlbl91bmlmb3JtX2luY2xcblxuaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgIGxldCB0b19zdHJpbmcgPSB0b19zdHJpbmdcbiAgICBsZXQgbW9kdWxlX25hbWUgPSBtb2R1bGVfbmFtZVxuICBlbmQpXG5cbmluY2x1ZGUgSGFzaGFibGUuTWFrZV9iaW5hYmxlIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIGVuZClcblxudHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjIuY29tcGFyYXRvcl93aXRuZXNzXG5cbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX2JpbmFibGVfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgbGV0IGNvbXBhcmF0b3IgPSBTdGFibGUuVjIuY29tcGFyYXRvclxuICBlbmQpXG5cbigqIHJlLWluY2x1ZGUgW1JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZV0gYW5kIGl0cyBjb21wYXJpc29ucyB0byBzaGFkb3cgdGhlXG4gICB1bi1pbmxpbmVhYmxlIG9uZXMgZnJvbSBbQ29tcGFyYWJsZV0gKilcbm1vZHVsZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBULlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCB0ID0gU3Bhbl9mbG9hdC5vZl9zZWMgKHRvX3NlYyB0KVxubGV0IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCBzID0gb2Zfc2VjIChTcGFuX2Zsb2F0LnRvX3NlYyBzKVxubGV0IGhhbGZfbWljcm9zZWNvbmQgPSBJbnQ2My5vZl9pbnQgNTAwXG5sZXQgbmVhcmVzdF9taWNyb3NlY29uZCB0ID0gSW50NjMuKCh0b19pbnQ2M19ucyB0ICsgaGFsZl9taWNyb3NlY29uZCkgLyUgb2ZfaW50IDEwMDApXG5cbmxldFtAY29sZF0gaW52YWxpZF9yYW5nZV9mb3JfMXVzX3JvdW5kaW5nIHQgPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlNwYW4udCBleGNlZWRzIGxpbWl0c1wiXG4gICAgICAgICh0IDogdClcbiAgICAgICAgKG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdClcbiAgICAgICAgKG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIDogdCldXG47O1xuXG5sZXQgY2hlY2tfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0ID1cbiAgaWYgdCA8IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIHx8IHQgPiBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuIGludmFsaWRfcmFuZ2VfZm9yXzF1c19yb3VuZGluZyB0XG4gIGVsc2UgdFxuOztcblxubGV0IHRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCB0ID1cbiAgU3Bhbl9mbG9hdC5vZl91cyAoSW50NjMudG9fZmxvYXQgKG5lYXJlc3RfbWljcm9zZWNvbmQgKGNoZWNrX3JhbmdlX2Zvcl8xdXNfcm91bmRpbmcgdCkpKVxuOztcblxubGV0IG1pbl9zcGFuX2Zsb2F0X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmcgPVxuICB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbjs7XG5cbmxldCBtYXhfc3Bhbl9mbG9hdF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgb2Zfc3Bhbl9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kIHMgPVxuICBpZiBTcGFuX2Zsb2F0LiggPiApIHMgbWF4X3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB8fCBTcGFuX2Zsb2F0LiggPCApIHMgbWluX3NwYW5fZmxvYXRfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIlRpbWVfbnMuU3BhbiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgc3BhblwiXG4gICAgICBzXG4gICAgICBbJXNleHBfb2Y6IFNwYW5fZmxvYXQudF07XG4gICgqIFVzaW5nIFtUaW1lLlNwYW4udG9fc2VjXSAoYmVpbmcgdGhlIGlkZW50aXR5KSBzbyB0aGF0XG4gICAgIHdlIG1ha2UgZG9uJ3QgYXBwbHkgdG9vIG1hbnkgY29udmVyc2lvblxuICAgICAtIFRvbyBtYW55IDogYFtTcGFuLnRdIC0+IFthXSAtPiBbdF1gXG4gICAgIC0gT25seSBPbmUgOiBgW1NwYW4udF09PVthXSAtPiBbdF1gLiAqKVxuICBvZl9zZWNfd2l0aF9taWNyb3NlY29uZF9wcmVjaXNpb24gKFNwYW5fZmxvYXQudG9fc2VjIHMpXG47O1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9pbnQ2M19ucyBJbnQ2My5taW5fdmFsdWVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX2ludDYzX25zIEludDYzLm1heF92YWx1ZVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgb2ZfcGFydHMgPSBvZl9wYXJ0c1xuICBsZXQgdG9fcGFydHMgPSB0b19wYXJ0c1xuZW5kXG5cbigqIExlZ2FjeSBkZWZpbml0aW9ucyBiYXNlZCBvbiByb3VuZGluZyB0byB0aGUgbmVhcmVzdCBtaWNyb3NlY29uZC4gKilcbmxldCBtaW5fdmFsdWUgPSBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IG1heF92YWx1ZSA9IG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG5sZXQgb2Zfc3BhbiA9IG9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZFxubGV0IHRvX3NwYW4gPSB0b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBTcGFuID0gU3Bhbl9uc1xuXG50eXBlIHVuZGVybHlpbmcgPSBJbnQ2My50XG5cbnR5cGUgdCA9IFNwYW4udCAoKiBzaW5jZSB3YWxsLWNsb2NrIG1pZG5pZ2h0ICopXG5bQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXBdXG5cbmluY2x1ZGUgKFNwYW4gOiBSb2J1c3RseV9jb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdClcblxubGV0IHRvX3BhcnRzIHQgPSBTcGFuLnRvX3BhcnRzIHRcblxuXG5sZXQgc3RhcnRfb2ZfZGF5IDogdCA9IFNwYW4uemVyb1xubGV0IHN0YXJ0X29mX25leHRfZGF5IDogdCA9IFNwYW4uZGF5XG5sZXQgYXBwcm94aW1hdGVfZW5kX29mX2RheSA9IFNwYW4uKCAtICkgc3RhcnRfb2ZfbmV4dF9kYXkgU3Bhbi5uYW5vc2Vjb25kXG5sZXQgdG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCA9IHRcblxubGV0W0Bjb2xkXSBpbnB1dF9vdXRfb2ZfYm91bmRzIHNwYW4gPVxuICByYWlzZV9zXG4gICAgWyVtZXNzYWdlXG4gICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuOiBpbnB1dCBvdXQgb2YgYm91bmRzXCJcbiAgICAgICAgfl86KHNwYW4gOiBTcGFuLnQpXVxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSBpc19pbnZhbGlkIHNwYW4gPVxuICAoKiBXaHkgd2UgdXNlIFtTcGFuLiggPiApXSByYXRoZXIgdGhhbiBbKCA+PSApXSBiZWxvdzpcblxuICAgICBXZSBhbGxvdyB0byByZXByZXNlbnQgdGhlIGVuZC1vZi1kYXkgc2VudGluZWwgdmFsdWUgKFsyNC4wMDAwMDAwMDBoXSksIHdoaWNoIGlzIG5vdFxuICAgICBpdHNlbGYgYSB2YWxpZCBjbG9jayBmYWNlIHRpbWUuICBIb3dldmVyLCBzaW5jZSB2YWxpZCBjbG9jayBmYWNlIHRpbWVzIHJlYWRpbHlcbiAgICAgcm91bmQgdXAgdG8gaXQsIGl0J3MgYmV0dGVyIHRvIGFsbG93IGl0IHRvIGJlIHJlcHJlc2VudGVkLiAqKVxuICBTcGFuLiggPCApIHNwYW4gc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA+ICkgc3BhbiBzdGFydF9vZl9uZXh0X2RheVxuOztcblxubGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2lzX3ZhbGlkIHNwYW4gPSBub3QgKGlzX2ludmFsaWQgc3BhbilcbmxldCBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV91bmNoZWNrZWQgc3BhbiA9IHNwYW5cblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biBzcGFuID1cbiAgaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gaW5wdXRfb3V0X29mX2JvdW5kcyBzcGFuIGVsc2Ugc3BhblxuOztcblxubGV0IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCBzcGFuID0gaWYgaXNfaW52YWxpZCBzcGFuIHRoZW4gTm9uZSBlbHNlIFNvbWUgc3BhblxubGV0IGFkZF9leG4gdCBzcGFuID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLiggKyApIHQgc3BhbilcbmxldCBzdWJfZXhuIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgYWRkIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oICsgKSB0IHNwYW4pXG5sZXQgc3ViIHQgc3BhbiA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X29wdCAoU3Bhbi4oIC0gKSB0IHNwYW4pXG5sZXQgbmV4dCB0ID0gb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfb3B0IChTcGFuLm5leHQgdClcbmxldCBwcmV2IHQgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9vcHQgKFNwYW4ucHJldiB0KVxubGV0IGRpZmYgdCB1ID0gU3Bhbi4oIC0gKSB0IHVcblxubGV0IGNyZWF0ZSA/aHIgP21pbiA/c2VjID9tcyA/dXMgP25zICgpID1cbiAgKCogU2ltaWxhciB0byBbVGltZS5PZmRheS5jcmVhdGVdLCBpZiB3ZSBkZXRlY3QgYSBsZWFwIHNlY29uZCB3ZSBzdHJpcCBvZmYgYWxsXG4gICAgIHN1Yi1zZWNvbmQgZWxlbWVudHMgc28gdGhhdCBISDpNTTo2MC5YWFhYWFhYWFggaXMgYWxsIG1hcHBlZCB0byBISDpNTTo2MC4gKilcbiAgbGV0IG1zLCB1cywgbnMgPVxuICAgIG1hdGNoIHNlYyB3aXRoXG4gICAgfCBTb21lIDYwIC0+IFNvbWUgMCwgU29tZSAwLCBTb21lIDBcbiAgICB8IF8gLT4gbXMsIHVzLCBuc1xuICBpblxuICBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG4gKFNwYW4uY3JlYXRlID9ociA/bWluID9zZWMgP21zID91cyA/bnMgKCkpXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG4gIG1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChcbiAgICAgIFNwYW4uU3RhYmxlLlYyIDpcbiAgICAgICAgQ29tcGFyYXRvci5TXG4gICAgICB3aXRoIHR5cGUgdCA9IHRcbiAgICAgICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTcGFuLlN0YWJsZS5WMi5jb21wYXJhdG9yX3dpdG5lc3MpXG5cbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBiaW5faW9dXG5cbiAgICBsZXQgdG9fc3RyaW5nX3dpdGhfdW5pdCA9XG4gICAgICBsZXQgKCAvICkgPSBJbnQ2My4oIC8gKSBpblxuICAgICAgbGV0ICggbW9kICkgPSBJbnQ2My5yZW0gaW5cbiAgICAgIGxldCAoICEgKSA9IEludDYzLm9mX2ludCBpblxuICAgICAgbGV0IGkgPSBJbnQ2My50b19pbnRfZXhuIGluXG4gICAgICBmdW4gdCB+dW5pdCAtPlxuICAgICAgICBpZiBTcGFuLiggPCApIHQgc3RhcnRfb2ZfZGF5IHx8IFNwYW4uKCA8ICkgc3RhcnRfb2ZfbmV4dF9kYXkgdFxuICAgICAgICB0aGVuIFwiSW5jb3JyZWN0IGRheVwiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBzaXh0eSA9ICE2MCBpblxuICAgICAgICAgIGxldCB0aG91c2FuZCA9ICExMDAwIGluXG4gICAgICAgICAgbGV0IG5zID0gU3Bhbi50b19pbnQ2M19ucyB0IGluXG4gICAgICAgICAgbGV0IHVzID0gbnMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCBucyA9IG5zIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IG1zID0gdXMgLyB0aG91c2FuZCBpblxuICAgICAgICAgIGxldCB1cyA9IHVzIG1vZCB0aG91c2FuZCB8PiBpIGluXG4gICAgICAgICAgbGV0IHMgPSBtcyAvIHRob3VzYW5kIGluXG4gICAgICAgICAgbGV0IG1zID0gbXMgbW9kIHRob3VzYW5kIHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IHMgLyBzaXh0eSBpblxuICAgICAgICAgIGxldCBzID0gcyBtb2Qgc2l4dHkgfD4gaSBpblxuICAgICAgICAgIGxldCBoID0gbSAvIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgbSA9IG0gbW9kIHNpeHR5IHw+IGkgaW5cbiAgICAgICAgICBsZXQgdW5pdCA9XG4gICAgICAgICAgICBtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgIHwgKGBOYW5vc2Vjb25kIHwgYE1pY3Jvc2Vjb25kIHwgYE1pbGxpc2Vjb25kIHwgYFNlY29uZCkgYXMgdW5pdCAtPiB1bml0XG4gICAgICAgICAgICB8IGBNaW51dGVfb3JfbGVzcyAtPlxuICAgICAgICAgICAgICBpZiBucyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE5hbm9zZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBpZiB1cyA8PiAwXG4gICAgICAgICAgICAgIHRoZW4gYE1pY3Jvc2Vjb25kXG4gICAgICAgICAgICAgIGVsc2UgaWYgbXMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBNaWxsaXNlY29uZFxuICAgICAgICAgICAgICBlbHNlIGlmIHMgPD4gMFxuICAgICAgICAgICAgICB0aGVuIGBTZWNvbmRcbiAgICAgICAgICAgICAgZWxzZSBgTWludXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGVuID1cbiAgICAgICAgICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgICAgICAgICAgfCBgTWludXRlIC0+IDVcbiAgICAgICAgICAgIHwgYFNlY29uZCAtPiA4XG4gICAgICAgICAgICB8IGBNaWxsaXNlY29uZCAtPiAxMlxuICAgICAgICAgICAgfCBgTWljcm9zZWNvbmQgLT4gMTVcbiAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gMThcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBzdHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MCBoO1xuICAgICAgICAgIEJ5dGVzLnNldCBzdHIgMiAnOic7XG4gICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6MyBtO1xuICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgfCBgTWludXRlIC0+ICgpXG4gICAgICAgICAgIHwgKGBTZWNvbmQgfCBgTWlsbGlzZWNvbmQgfCBgTWljcm9zZWNvbmQgfCBgTmFub3NlY29uZCkgYXMgdW5pdCAtPlxuICAgICAgICAgICAgIEJ5dGVzLnNldCBzdHIgNSAnOic7XG4gICAgICAgICAgICAgRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfMl9kaWdpdF9pbnQgc3RyIH5wb3M6NiBzO1xuICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgfCBgU2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgIHwgKGBNaWxsaXNlY29uZCB8IGBNaWNyb3NlY29uZCB8IGBOYW5vc2Vjb25kKSBhcyB1bml0IC0+XG4gICAgICAgICAgICAgICAgQnl0ZXMuc2V0IHN0ciA4ICcuJztcbiAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczo5IG1zO1xuICAgICAgICAgICAgICAgIChtYXRjaCB1bml0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBgTWlsbGlzZWNvbmQgLT4gKClcbiAgICAgICAgICAgICAgICAgfCAoYE1pY3Jvc2Vjb25kIHwgYE5hbm9zZWNvbmQpIGFzIHVuaXQgLT5cbiAgICAgICAgICAgICAgICAgICBEaWdpdF9zdHJpbmdfaGVscGVycy53cml0ZV8zX2RpZ2l0X2ludCBzdHIgfnBvczoxMiB1cztcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggdW5pdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgYE1pY3Jvc2Vjb25kIC0+ICgpXG4gICAgICAgICAgICAgICAgICAgIHwgYE5hbm9zZWNvbmQgLT4gRGlnaXRfc3RyaW5nX2hlbHBlcnMud3JpdGVfM19kaWdpdF9pbnQgc3RyIH5wb3M6MTUgbnMpKSkpO1xuICAgICAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgfm5vX211dGF0aW9uX3doaWxlX3N0cmluZ19yZWFjaGFibGU6c3RyKVxuICAgIDs7XG5cbiAgICBsZXQgcGFyc2VfbmFub3NlY29uZHMgc3RyaW5nIH5wb3MgfnVudGlsID1cbiAgICAgIGxldCBvcGVuIEludC5PIGluXG4gICAgICBsZXQgZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBudW1fZGlnaXRzID0gcmVmIDAgaW5cbiAgICAgIGxldCBwb3MgPSByZWYgcG9zIGluXG4gICAgICAoKiByZWFkIHVwIHRvIDEwIGRpZ2l0czsgc3RvcmUgdGhlIGZpcnN0IDksIHVzZSB0aGUgMTB0aCB0byByb3VuZCAqKVxuICAgICAgd2hpbGUgIXBvcyA8IHVudGlsICYmICFudW1fZGlnaXRzIDwgMTAgZG9cbiAgICAgICAgbGV0IGMgPSBzdHJpbmcuWyFwb3NdIGluXG4gICAgICAgIGlmIENoYXIuaXNfZGlnaXQgY1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICBpbmNyIG51bV9kaWdpdHM7XG4gICAgICAgICAgaWYgIW51bV9kaWdpdHMgPCAxMFxuICAgICAgICAgIHRoZW4gZGlnaXRzIDo9ICghZGlnaXRzICogMTApICsgQ2hhci5nZXRfZGlnaXRfZXhuIGNcbiAgICAgICAgICBlbHNlIGlmIENoYXIuZ2V0X2RpZ2l0X2V4biBjID49IDVcbiAgICAgICAgICB0aGVuIGluY3IgZGlnaXRzXG4gICAgICAgICAgZWxzZSAoKSk7XG4gICAgICAgIGluY3IgcG9zXG4gICAgICBkb25lO1xuICAgICAgKCogaWYgdGhlcmUgYXJlIG1pc3NpbmcgZGlnaXRzLCBhZGQgemVyb2VzICopXG4gICAgICBpZiAhbnVtX2RpZ2l0cyA8IDkgdGhlbiBkaWdpdHMgOj0gIWRpZ2l0cyAqIEludC5wb3cgMTAgKDkgLSAhbnVtX2RpZ2l0cyk7XG4gICAgICAhZGlnaXRzXG4gICAgOztcblxuICAgIGxldCBjcmVhdGVfZnJvbV9wYXJzZWQgc3RyaW5nIH5ociB+bWluIH5zZWMgfnN1YnNlY19wb3MgfnN1YnNlY19sZW4gPVxuICAgICAgbGV0IG5hbm9zZWNvbmRzID1cbiAgICAgICAgaWYgSW50LmVxdWFsIHN1YnNlY19sZW4gMFxuICAgICAgICB0aGVuIDBcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHBhcnNlX25hbm9zZWNvbmRzIHN0cmluZyB+cG9zOihzdWJzZWNfcG9zICsgMSkgfnVudGlsOihzdWJzZWNfcG9zICsgc3Vic2VjX2xlbilcbiAgICAgIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIChJbnQ2My5vZl9pbnQgbmFub3NlY29uZHMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLnNlY29uZCBzZWMpXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLm1pbnV0ZSBtaW4pXG4gICAgICB8PiBTcGFuLiggKyApIChTcGFuLnNjYWxlX2ludCBTcGFuLmhvdXIgaHIpXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBPZmRheV9oZWxwZXJzLnBhcnNlIHN0cmluZyB+ZjpjcmVhdGVfZnJvbV9wYXJzZWRcblxuICAgIGxldCB0X29mX3NleHAgc2V4cCA6IHQgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuTGlzdCBfIC0+IG9mX3NleHBfZXJyb3IgXCJleHBlY3RlZCBhbiBhdG9tXCIgc2V4cFxuICAgICAgfCBTZXhwLkF0b20gcyAtPlxuICAgICAgICAodHJ5IG9mX3N0cmluZyBzIHdpdGhcbiAgICAgICAgIHwgZXhuIC0+IG9mX3NleHBfZXJyb3JfZXhuIGV4biBzZXhwKVxuICAgIDs7XG5cbiAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcbiAgICBsZXQgdG9fc3RyaW5nICh0IDogdCkgPSB0b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE5hbm9zZWNvbmRcbiAgICBsZXQgc2V4cF9vZl90ICh0IDogdCkgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuICAgIGxldCB0b19pbnQ2MyB0ID0gU3Bhbl9ucy5TdGFibGUuVjIudG9faW50NjMgdFxuICAgIGxldCBvZl9pbnQ2M19leG4gdCA9IG9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4biAoU3Bhbl9ucy5TdGFibGUuVjIub2ZfaW50NjNfZXhuIHQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKFxuICBTdGFibGUuVjEgOlxuICAgIENvbXBhcmF0b3IuU1xuICB3aXRoIHR5cGUgdCA6PSB0XG4gICBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBTdGFibGUuVjEuY29tcGFyYXRvcl93aXRuZXNzKVxuXG5pbmNsdWRlIElkZW50aWZpYWJsZS5NYWtlX3VzaW5nX2NvbXBhcmF0b3IgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFN0YWJsZS5WMS50IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgIGluY2x1ZGUgKFxuICAgICAgU3RhYmxlLlYxIDpcbiAgICAgICAgQ29tcGFyYXRvci5TXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICAgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzcylcblxuICAgIGluY2x1ZGUgKFN0YWJsZS5WMSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA6PSB0KVxuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLlRpbWVfbnMuT2ZkYXlcIlxuICAgIGxldCBoYXNoID0gU3Bhbi5oYXNoXG4gICAgbGV0IGhhc2hfZm9sZF90ID0gU3Bhbi5oYXNoX2ZvbGRfdFxuICBlbmQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdGFibGUuVjEudF9zZXhwX2dyYW1tYXJcbmxldCB0b19taWNyb3NlY29uZF9zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YE1pY3Jvc2Vjb25kXG5sZXQgdG9fbWlsbGlzZWNvbmRfc3RyaW5nIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaWxsaXNlY29uZFxubGV0IHRvX3NlY19zdHJpbmcgdCA9IFN0YWJsZS5WMS50b19zdHJpbmdfd2l0aF91bml0IHQgfnVuaXQ6YFNlY29uZFxubGV0IHRvX3N0cmluZ190cmltbWVkIHQgPSBTdGFibGUuVjEudG9fc3RyaW5nX3dpdGhfdW5pdCB0IH51bml0OmBNaW51dGVfb3JfbGVzc1xuXG5sZXQgb2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQgP3BvcyA/bGVuIHN0ciA9XG4gIHRyeVxuICAgIE9mZGF5X2hlbHBlcnMucGFyc2VfaXNvODYwMV9leHRlbmRlZCA/cG9zID9sZW4gc3RyIH5mOlN0YWJsZS5WMS5jcmVhdGVfZnJvbV9wYXJzZWRcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWVfbnMuT2ZkYXkub2Zfc3RyaW5nX2lzbzg2MDFfZXh0ZW5kZWQ6IGNhbm5vdCBwYXJzZSBzdHJpbmdcIlxuICAgICAgICAgIH5fOihTdHJpbmcuc3VibyBzdHIgP3BvcyA/bGVuIDogc3RyaW5nKVxuICAgICAgICAgIH5fOihleG4gOiBleG4pXVxuOztcblxubGV0IGV2ZXJ5ID1cbiAgbGV0IHJlYyBldmVyeV92YWxpZF9vZmRheV9zcGFuIHNwYW4gfnN0YXJ0IH5zdG9wIH5hY2MgPVxuICAgICgqIEFzc3VtZXMgW3NwYW5dLCBbc3RhcnRdLCBhbmQgW3N0b3BdIGFyZSB2YWxpZCBvZmRheXMuIEFzc3VtZXMgW3N0YXJ0IDwgc3RvcF0uXG4gICAgICAgQXNzdW1lcyBbc3BhbiA+IDBdLiAqKVxuICAgIGxldCBhY2MgPSBzdGFydCA6OiBhY2MgaW5cbiAgICBsZXQgc3RhcnQgPSBTcGFuLiggKyApIHN0YXJ0IHNwYW4gaW5cbiAgICBpZiBTcGFuLiggPiApIHN0YXJ0IHN0b3AgKCogY2Fubm90IG92ZXJmbG93ICopXG4gICAgdGhlbiBMaXN0LnJldiBhY2NcbiAgICBlbHNlIGV2ZXJ5X3ZhbGlkX29mZGF5X3NwYW4gc3BhbiB+c3RhcnQgfnN0b3AgfmFjY1xuICBpblxuICAoKiBpbnRlcm5hbCBbZXZlcnldIG5hbWVkIHRvIHNob3cgdXAgaW4gc3RhY2sgdHJhY2VzICopXG4gIGxldCBldmVyeSBzcGFuIH5zdGFydCB+c3RvcCA9XG4gICAgaWYgU3Bhbi4oID4gKSBzdGFydCBzdG9wXG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltUaW1lX25zLk9mZGF5LmV2ZXJ5XSBjYWxsZWQgd2l0aCBbc3RhcnRdID4gW3N0b3BdXCIgKHN0YXJ0IDogdCkgKHN0b3AgOiB0KV1cbiAgICBlbHNlIGlmIFNwYW4uKCA8PSApIHNwYW4gU3Bhbi56ZXJvXG4gICAgdGhlblxuICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJbVGltZV9ucy5PZmRheS5ldmVyeV0gY2FsbGVkIHdpdGggbmVnYXRpdmUgc3BhblwiIH5fOihzcGFuIDogU3Bhbi50KV1cbiAgICBlbHNlIGlmIGlzX2ludmFsaWQgc3BhblxuICAgIHRoZW4gT2sgWyBzdGFydCBdXG4gICAgZWxzZSBPayAoZXZlcnlfdmFsaWRfb2ZkYXlfc3BhbiBzcGFuIH5zdGFydCB+c3RvcCB+YWNjOltdKVxuICBpblxuICBldmVyeVxuOztcblxubGV0IHNtYWxsX2RpZmYgPVxuICBsZXQgaG91ciA9IFNwYW4udG9faW50NjNfbnMgU3Bhbi5ob3VyIGluXG4gIGZ1biBvZmRheTEgb2ZkYXkyIC0+XG4gICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgIGxldCBvZmRheTEgPSBTcGFuLnRvX2ludDYzX25zICh0b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheTEpIGluXG4gICAgbGV0IG9mZGF5MiA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IG9mZGF5MikgaW5cbiAgICBsZXQgZGlmZiA9IG9mZGF5MSAtIG9mZGF5MiBpblxuICAgICgqICBkMSBpcyBpbiAoLWhvdXI7IGhvdXIpICopXG4gICAgbGV0IGQxID0gSW50NjMucmVtIGRpZmYgaG91ciBpblxuICAgICgqICBkMiBpcyBpbiAoMDtob3VyKSAqKVxuICAgIGxldCBkMiA9IEludDYzLnJlbSAoZDEgKyBob3VyKSBob3VyIGluXG4gICAgbGV0IGQgPSBpZiBkMiA+IGhvdXIgLyBJbnQ2My5vZl9pbnQgMiB0aGVuIGQyIC0gaG91ciBlbHNlIGQyIGluXG4gICAgU3Bhbi5vZl9pbnQ2M19ucyBkXG47O1xuXG5sZXQlZXhwZWN0X3Rlc3QgXCJzbWFsbF9kaWZmXCIgPVxuICBsZXQgdGVzdCB4IHkgPVxuICAgIGxldCBkaWZmID0gc21hbGxfZGlmZiB4IHkgaW5cbiAgICBwcmludGYgIVwic21hbGxfZGlmZiAlcyAlcyA9ICVzXFxuXCIgKHRvX3N0cmluZyB4KSAodG9fc3RyaW5nIHkpIChTcGFuLnRvX3N0cmluZyBkaWZmKVxuICBpblxuICBsZXQgZXhhbXBsZXMgPVxuICAgIExpc3QubWFwXG4gICAgICB+ZjooZnVuICh4LCB5KSAtPiBvZl9zdHJpbmcgeCwgb2Zfc3RyaW5nIHkpXG4gICAgICBbIFwiMTI6MDBcIiwgXCIxMjowNVwiOyBcIjEyOjU4XCIsIFwiMTM6MDJcIjsgXCIwMDo1MlwiLCBcIjIzOjE5XCI7IFwiMDA6MDBcIiwgXCIyNDowMFwiIF1cbiAgaW5cbiAgTGlzdC5pdGVyIGV4YW1wbGVzIH5mOihmdW4gKHgsIHkpIC0+XG4gICAgdGVzdCB4IHk7XG4gICAgdGVzdCB5IHgpO1xuICBbJWV4cGVjdFxuICAgIHt8XG4gICAgc21hbGxfZGlmZiAxMjowMDowMC4wMDAwMDAwMDAgMTI6MDU6MDAuMDAwMDAwMDAwID0gLTVtXG4gICAgc21hbGxfZGlmZiAxMjowNTowMC4wMDAwMDAwMDAgMTI6MDA6MDAuMDAwMDAwMDAwID0gNW1cbiAgICBzbWFsbF9kaWZmIDEyOjU4OjAwLjAwMDAwMDAwMCAxMzowMjowMC4wMDAwMDAwMDAgPSAtNG1cbiAgICBzbWFsbF9kaWZmIDEzOjAyOjAwLjAwMDAwMDAwMCAxMjo1ODowMC4wMDAwMDAwMDAgPSA0bVxuICAgIHNtYWxsX2RpZmYgMDA6NTI6MDAuMDAwMDAwMDAwIDIzOjE5OjAwLjAwMDAwMDAwMCA9IC0yN21cbiAgICBzbWFsbF9kaWZmIDIzOjE5OjAwLjAwMDAwMDAwMCAwMDo1MjowMC4wMDAwMDAwMDAgPSAyN21cbiAgICBzbWFsbF9kaWZmIDAwOjAwOjAwLjAwMDAwMDAwMCAyNDowMDowMC4wMDAwMDAwMDAgPSAwc1xuICAgIHNtYWxsX2RpZmYgMjQ6MDA6MDAuMDAwMDAwMDAwIDAwOjAwOjAwLjAwMDAwMDAwMCA9IDBzIHx9XVxuOztcblxubGV0IGdlbl9pbmNsID0gU3Bhbi5nZW5faW5jbFxubGV0IGdlbl91bmlmb3JtX2luY2wgPSBTcGFuLmdlbl91bmlmb3JtX2luY2xcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9IGdlbl9pbmNsIHN0YXJ0X29mX2RheSBzdGFydF9vZl9uZXh0X2RheVxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTcGFuLnF1aWNrY2hlY2tfb2JzZXJ2ZXJcbmxldCBxdWlja2NoZWNrX3Nocmlua2VyID0gUXVpY2tjaGVjay5TaHJpbmtlci5lbXB0eSAoKVxuXG5pbmNsdWRlIChTcGFuIDogQ29tcGFyaXNvbnMuUyB3aXRoIHR5cGUgdCA6PSB0KVxuXG4oKiBkZXByZWNhdGVkIGJpbmRpbmdzICopXG5sZXQgb2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBvZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbmxldCB0b19taWxsaXNlY19zdHJpbmcgPSB0b19taWxsaXNlY29uZF9zdHJpbmdcbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgbm93ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBvZl9vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0ID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB0b19vZmRheV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kID0gYFVzZV9UaW1lX25zX3VuaXhcblxubW9kdWxlIE9wdGlvbiA9IHN0cnVjdCBlbmRcbm1vZHVsZSBab25lZCA9IHN0cnVjdCBlbmRcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxubGV0IGFyY2hfc2l4dHlmb3VyID0gU3lzLndvcmRfc2l6ZV9pbl9iaXRzID0gNjRcblxubW9kdWxlIFNwYW4gPSBTcGFuX25zXG5tb2R1bGUgT2ZkYXkgPSBPZmRheV9uc1xuXG50eXBlIHQgPSBTcGFuLnQgKCogc2luY2UgdGhlIFVuaXggZXBvY2ggKDE5NzAtMDEtMDEgMDA6MDA6MDAgVVRDKSAqKVxuW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCB0eXBlcmVwXVxuXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudCA9IFNwYW4uUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlXG5tb2R1bGUgUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlID0gUmVwbGFjZV9wb2x5bW9ycGhpY19jb21wYXJlX2VmZmljaWVudFxuaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5pbmNsdWRlIChTcGFuIDogUXVpY2tjaGVjay5TX3JhbmdlIHdpdGggdHlwZSB0IDo9IHQpXG5cbmxldCBub3cgPSBTcGFuLnNpbmNlX3VuaXhfZXBvY2hcbmxldCBlcXVhbCA9IFNwYW4uZXF1YWxcbmxldCBtaW5fdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IFNwYW4ubWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9IFNwYW4ubWF4X3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBlcG9jaCA9IFNwYW4uemVyb1xubGV0IGFkZCA9IFNwYW4uKCArIClcbmxldCBzdWIgPSBTcGFuLiggLSApXG5sZXQgZGlmZiA9IFNwYW4uKCAtIClcbmxldCBhYnNfZGlmZiB0IHUgPSBTcGFuLmFicyAoZGlmZiB0IHUpXG5sZXQgbWF4ID0gU3Bhbi5tYXhcbmxldCBtaW4gPSBTcGFuLm1pblxubGV0IG5leHQgPSBTcGFuLm5leHRcbmxldCBwcmV2ID0gU3Bhbi5wcmV2XG5sZXQgdG9fc3Bhbl9zaW5jZV9lcG9jaCB0ID0gdFxubGV0IG9mX3NwYW5fc2luY2VfZXBvY2ggcyA9IHNcbmxldCB0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0IDogSW50NjMudCA9IFNwYW4udG9faW50NjNfbnMgKHRvX3NwYW5fc2luY2VfZXBvY2ggdClcbmxldCBvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCBpID0gb2Zfc3Bhbl9zaW5jZV9lcG9jaCAoU3Bhbi5vZl9pbnQ2M19ucyBpKVxubGV0W0Bjb2xkXSBvdmVyZmxvdyAoKSA9IHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltZV9uczogb3ZlcmZsb3dcIl1cbmxldCBpc19lYXJsaWVyIHQxIH50aGFuOnQyID0gdDEgPCB0MlxubGV0IGlzX2xhdGVyIHQxIH50aGFuOnQyID0gdDEgPiB0MlxuXG5sZXQgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW0gPVxuICBpZiBTcGFuLiggPiApIHkgU3Bhbi56ZXJvIHRoZW4gU3Bhbi4oIDwgKSBzdW0geCBlbHNlIFNwYW4uKCA+ICkgc3VtIHhcbjs7XG5cbmxldCBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmYgPVxuICBpZiBTcGFuLiggPiApIHkgU3Bhbi56ZXJvIHRoZW4gU3Bhbi4oID4gKSBkaWZmIHggZWxzZSBTcGFuLiggPCApIGRpZmYgeFxuOztcblxubGV0IGFkZF9leG4geCB5ID1cbiAgbGV0IHN1bSA9IGFkZCB4IHkgaW5cbiAgaWYgYWRkX292ZXJmbG93ZWQgeCB5IH5zdW0gdGhlbiBvdmVyZmxvdyAoKSBlbHNlIHN1bVxuOztcblxubGV0IHN1Yl9leG4geCB5ID1cbiAgbGV0IGRpZmYgPSBzdWIgeCB5IGluXG4gIGlmIHN1Yl9vdmVyZmxvd2VkIHggeSB+ZGlmZiB0aGVuIG92ZXJmbG93ICgpIGVsc2UgZGlmZlxuOztcblxubGV0IGFkZF9zYXR1cmF0aW5nIHggeSA9XG4gIGxldCBzdW0gPSBhZGQgeCB5IGluXG4gIGlmIGFkZF9vdmVyZmxvd2VkIHggeSB+c3VtXG4gIHRoZW5cbiAgICBpZiBTcGFuLih5ID4gemVybykgdGhlbiBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlIGVsc2UgU3Bhbi5taW5fdmFsdWVfcmVwcmVzZW50YWJsZVxuICBlbHNlIHN1bVxuOztcblxubGV0IHN1Yl9zYXR1cmF0aW5nIHggeSA9XG4gIGxldCBkaWZmID0gc3ViIHggeSBpblxuICBpZiBzdWJfb3ZlcmZsb3dlZCB4IHkgfmRpZmZcbiAgdGhlblxuICAgIGlmIFNwYW4uKHkgPiB6ZXJvKSB0aGVuIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGUgZWxzZSBTcGFuLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG4gIGVsc2UgZGlmZlxuOztcblxubGV0IHRvX2ludF9uc19zaW5jZV9lcG9jaCA9XG4gIGlmIGFyY2hfc2l4dHlmb3VyXG4gIHRoZW4gZnVuIHQgLT4gSW50NjMudG9faW50X2V4biAodG9faW50NjNfbnNfc2luY2VfZXBvY2ggdClcbiAgZWxzZSBmdW4gXyAtPiBmYWlsd2l0aCBcIlRpbWVfbnMudG9faW50X25zX3NpbmNlX2Vwb2NoOiB1bnN1cHBvcnRlZCBvbiAzMmJpdCBtYWNoaW5lc1wiXG47O1xuXG5sZXQgb2ZfaW50X25zX3NpbmNlX2Vwb2NoIGkgPSBvZl9pbnQ2M19uc19zaW5jZV9lcG9jaCAoSW50NjMub2ZfaW50IGkpXG5cbmxldCB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgdCA9XG4gIFRpbWVfZmxvYXQub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdCAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KSlcbjs7XG5cbmxldCB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdCA9XG4gIFRpbWVfZmxvYXQub2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCAodG9fc3Bhbl9zaW5jZV9lcG9jaCB0KSlcbjs7XG5cbmxldCBtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nID1cbiAgdG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IG1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG47O1xuXG5sZXQgbWF4X3RpbWVfdmFsdWVfZm9yXzF1c19yb3VuZGluZyA9XG4gIHRvX3RpbWVfZmxvYXRfcm91bmRfbmVhcmVzdCBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xuOztcblxubGV0IGNoZWNrX2JlZm9yZV9jb252ZXJzaW9uX2Zvcl8xdXNfcm91bmRpbmcgdGltZSA9XG4gIGlmIFRpbWVfZmxvYXQuKCA8ICkgdGltZSBtaW5fdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHx8IFRpbWVfZmxvYXQuKCA+ICkgdGltZSBtYXhfdGltZV92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiVGltZV9ucyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgdGltZVwiXG4gICAgICB0aW1lXG4gICAgICBbJXNleHBfb2Y6IFRpbWVfZmxvYXQuU3RhYmxlLldpdGhfdXRjX3NleHAuVjIudF1cbjs7XG5cbmxldCBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3QgdGltZSA9XG4gIG9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICAoU3Bhbi5vZl9zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKFRpbWVfZmxvYXQudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lKSlcbjs7XG5cbmxldCBvZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgdGltZSA9XG4gIGNoZWNrX2JlZm9yZV9jb252ZXJzaW9uX2Zvcl8xdXNfcm91bmRpbmcgdGltZTtcbiAgb2Zfc3Bhbl9zaW5jZV9lcG9jaFxuICAgIChTcGFuLm9mX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdF9taWNyb3NlY29uZCAoVGltZV9mbG9hdC50b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWUpKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9uZXh0X211bHRpcGxlX2dvdF9ub25wb3NpdGl2ZV9pbnRlcnZhbCBpbnRlcnZhbCA9XG4gIGZhaWx3aXRoc1xuICAgIH5oZXJlOlslaGVyZV1cbiAgICBcIlRpbWVfbnMubmV4dF9tdWx0aXBsZSBnb3Qgbm9ucG9zaXRpdmUgaW50ZXJ2YWxcIlxuICAgIGludGVydmFsXG4gICAgWyVzZXhwX29mOiBTcGFuLnRdXG47O1xuXG5sZXQgbmV4dF9tdWx0aXBsZV9pbnRlcm5hbCB+Y2FuX2VxdWFsX2FmdGVyIH5iYXNlIH5hZnRlciB+aW50ZXJ2YWwgPVxuICBpZiBTcGFuLiggPD0gKSBpbnRlcnZhbCBTcGFuLnplcm9cbiAgdGhlbiByYWlzZV9uZXh0X211bHRpcGxlX2dvdF9ub25wb3NpdGl2ZV9pbnRlcnZhbCBpbnRlcnZhbDtcbiAgbGV0IGJhc2VfdG9fYWZ0ZXIgPSBkaWZmIGFmdGVyIGJhc2UgaW5cbiAgaWYgU3Bhbi4oIDwgKSBiYXNlX3RvX2FmdGVyIFNwYW4uemVyb1xuICB0aGVuIGJhc2UgKCogW2FmdGVyIDwgYmFzZV0sIGNob29zZSBbayA9IDBdLiAqKVxuICBlbHNlIChcbiAgICBsZXQgbmV4dCA9IGFkZCBiYXNlIChTcGFuLnNjYWxlX2ludDYzIGludGVydmFsIChTcGFuLmRpdiBiYXNlX3RvX2FmdGVyIGludGVydmFsKSkgaW5cbiAgICBpZiBuZXh0ID4gYWZ0ZXIgfHwgKGNhbl9lcXVhbF9hZnRlciAmJiBuZXh0ID0gYWZ0ZXIpIHRoZW4gbmV4dCBlbHNlIGFkZCBuZXh0IGludGVydmFsKVxuOztcblxubGV0IG5leHRfbXVsdGlwbGUgPyhjYW5fZXF1YWxfYWZ0ZXIgPSBmYWxzZSkgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCAoKSA9XG4gIG5leHRfbXVsdGlwbGVfaW50ZXJuYWwgfmNhbl9lcXVhbF9hZnRlciB+YmFzZSB+YWZ0ZXIgfmludGVydmFsXG47O1xuXG5sZXQgcHJldl9tdWx0aXBsZSA/KGNhbl9lcXVhbF9iZWZvcmUgPSBmYWxzZSkgfmJhc2UgfmJlZm9yZSB+aW50ZXJ2YWwgKCkgPVxuICBuZXh0X211bHRpcGxlX2ludGVybmFsXG4gICAgfmNhbl9lcXVhbF9hZnRlcjoobm90IGNhbl9lcXVhbF9iZWZvcmUpXG4gICAgfmJhc2VcbiAgICB+YWZ0ZXI6KHN1YiBiZWZvcmUgaW50ZXJ2YWwpXG4gICAgfmludGVydmFsXG47O1xuXG5sZXQgcmFuZG9tID9zdGF0ZSAoKSA9IFNwYW4ucmFuZG9tID9zdGF0ZSAoKVxuXG5tb2R1bGUgVXRjIDogc2lnXG4gIHZhbCB0b19kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSA6IHQgLT4gRGF0ZTAudCAqIFNwYW4udFxuICB2YWwgb2ZfZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgOiBEYXRlMC50IC0+IFNwYW4udCAtPiB0XG5lbmQgPSBzdHJ1Y3RcbiAgKCogYSByZWNyZWF0aW9uIG9mIHRoZSBzeXN0ZW0gY2FsbCBnbXRpbWUgc3BlY2lhbGl6ZWQgdG8gdGhlIGZpZWxkcyB3ZSBuZWVkIHRoYXQgYWxzb1xuICAgICBkb2Vzbid0IHJlbHkgb24gVW5peC4gKilcbiAgbGV0IHRvX2RhdGVfYW5kX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IHQgPVxuICAgIGxldCBvcGVuIEludDYzLk8gaW5cbiAgICBsZXQgKCAhPCApIGkgPSBJbnQ2My5vZl9pbnRfZXhuIGkgaW5cbiAgICBsZXQgKCAhPiApIHQgPSBJbnQ2My50b19pbnRfZXhuIHQgaW5cbiAgICBsZXQgbnNfc2luY2VfZXBvY2ggPSB0b19pbnQ2M19uc19zaW5jZV9lcG9jaCB0IGluXG4gICAgbGV0IG5zX3Blcl9kYXkgPSAhPDg2XzQwMCAqICE8MV8wMDBfMDAwXzAwMCBpblxuICAgIGxldCBhcHByb3hfZGF5c19mcm9tX2Vwb2NoID0gbnNfc2luY2VfZXBvY2ggLyBuc19wZXJfZGF5IGluXG4gICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9XG4gICAgICBpZiBuc19zaW5jZV9lcG9jaCA8ICE8MCAmJiBhcHByb3hfZGF5c19mcm9tX2Vwb2NoICogbnNfcGVyX2RheSA8PiBuc19zaW5jZV9lcG9jaFxuICAgICAgdGhlbiBhcHByb3hfZGF5c19mcm9tX2Vwb2NoIC0gITwxXG4gICAgICBlbHNlIGFwcHJveF9kYXlzX2Zyb21fZXBvY2hcbiAgICBpblxuICAgIGxldCBuc19zaW5jZV9zdGFydF9vZl9kYXkgPSBuc19zaW5jZV9lcG9jaCAtIChuc19wZXJfZGF5ICogZGF5c19mcm9tX2Vwb2NoKSBpblxuICAgIGxldCBkYXRlID1cbiAgICAgIERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoICE+ZGF5c19mcm9tX2Vwb2NoIHw+IERhdGUwLkRheXMudG9fZGF0ZVxuICAgIGluXG4gICAgbGV0IHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID0gU3Bhbi5vZl9pbnQ2M19ucyBuc19zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICBkYXRlLCBzcGFuX3NpbmNlX3N0YXJ0X29mX2RheVxuICA7O1xuXG4gIGxldCBvZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBkYXRlIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5ID1cbiAgICBhc3NlcnQgKFxuICAgICAgU3Bhbi4oID49ICkgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgU3Bhbi56ZXJvXG4gICAgICAmJiBTcGFuLiggPCApIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IFNwYW4uZGF5KTtcbiAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID1cbiAgICAgIERhdGUwLkRheXMuZGlmZiAoRGF0ZTAuRGF5cy5vZl9kYXRlIGRhdGUpIERhdGUwLkRheXMudW5peF9lcG9jaFxuICAgIGluXG4gICAgbGV0IHNwYW5faW5fZGF5c19zaW5jZV9lcG9jaCA9IFNwYW4uc2NhbGVfaW50IFNwYW4uZGF5IGRheXNfZnJvbV9lcG9jaCBpblxuICAgIGxldCBzcGFuX3NpbmNlX2Vwb2NoID0gU3Bhbi4oICsgKSBzcGFuX2luX2RheXNfc2luY2VfZXBvY2ggc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgaW5cbiAgICBvZl9zcGFuX3NpbmNlX2Vwb2NoIHNwYW5fc2luY2VfZXBvY2hcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoXVxuXG4gICAgbW9kdWxlIE9mZGF5X2FzX3NwYW4gPSBzdHJ1Y3RcbiAgICAgIG9wZW4gSW50Lk9cblxuICAgICAgbGV0IHNlY29uZHNfdG9fc3RyaW5nIHNlY29uZHNfc3BhbiA9XG4gICAgICAgIGxldCBzZWNvbmRzID0gU3Bhbi50b19pbnRfc2VjIHNlY29uZHNfc3BhbiBpblxuICAgICAgICBsZXQgaCA9IHNlY29uZHMgLyAzNjAwIGluXG4gICAgICAgIGxldCBtID0gc2Vjb25kcyAvIDYwICUgNjAgaW5cbiAgICAgICAgbGV0IHMgPSBzZWNvbmRzICUgNjAgaW5cbiAgICAgICAgc3ByaW50ZiBcIiUwMmQ6JTAyZDolMDJkXCIgaCBtIHNcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0d29fZGlnaXRfb2Zfc3RyaW5nIHN0cmluZyA9XG4gICAgICAgIGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgPSAyICYmIFN0cmluZy5mb3JfYWxsIHN0cmluZyB+ZjpDaGFyLmlzX2RpZ2l0KTtcbiAgICAgICAgSW50Lm9mX3N0cmluZyBzdHJpbmdcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzZWNvbmRzX29mX3N0cmluZyBzZWNvbmRzX3N0cmluZyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzZWNvbmRzX3N0cmluZyB+b246JzonIHdpdGhcbiAgICAgICAgfCBbIGhfc3RyaW5nOyBtX3N0cmluZzsgc19zdHJpbmcgXSAtPlxuICAgICAgICAgIGxldCBoID0gdHdvX2RpZ2l0X29mX3N0cmluZyBoX3N0cmluZyBpblxuICAgICAgICAgIGxldCBtID0gdHdvX2RpZ2l0X29mX3N0cmluZyBtX3N0cmluZyBpblxuICAgICAgICAgIGxldCBzID0gdHdvX2RpZ2l0X29mX3N0cmluZyBzX3N0cmluZyBpblxuICAgICAgICAgIFNwYW4ub2ZfaW50X3NlYyAoKCgoaCAqIDYwKSArIG0pICogNjApICsgcylcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgOztcblxuICAgICAgbGV0IG5zX29mXzEwMF9tcyA9IDEwMF8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMTBfbXMgPSAxMF8wMDBfMDAwXG4gICAgICBsZXQgbnNfb2ZfMV9tcyA9IDFfMDAwXzAwMFxuICAgICAgbGV0IG5zX29mXzEwMF91cyA9IDEwMF8wMDBcbiAgICAgIGxldCBuc19vZl8xMF91cyA9IDEwXzAwMFxuICAgICAgbGV0IG5zX29mXzFfdXMgPSAxXzAwMFxuICAgICAgbGV0IG5zX29mXzEwMF9ucyA9IDEwMFxuICAgICAgbGV0IG5zX29mXzEwX25zID0gMTBcbiAgICAgIGxldCBuc19vZl8xX25zID0gMVxuXG4gICAgICBsZXQgc3ViX3NlY29uZF90b19zdHJpbmcgc3ViX3NlY29uZF9zcGFuID1cbiAgICAgICAgbGV0IG9wZW4gSW50Lk8gaW5cbiAgICAgICAgbGV0IG5zID0gU3Bhbi50b19pbnQ2M19ucyBzdWJfc2Vjb25kX3NwYW4gfD4gSW50NjMudG9faW50X2V4biBpblxuICAgICAgICBpZiBucyA9IDBcbiAgICAgICAgdGhlbiBcIlwiXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDFkXCIgKG5zIC8gbnNfb2ZfMTAwX21zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfbXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDJkXCIgKG5zIC8gbnNfb2ZfMTBfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xX21zID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTAzZFwiIChucyAvIG5zX29mXzFfbXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDRkXCIgKG5zIC8gbnNfb2ZfMTAwX3VzKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfdXMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDVkXCIgKG5zIC8gbnNfb2ZfMTBfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xX3VzID0gMFxuICAgICAgICB0aGVuIHNwcmludGYgXCIuJTA2ZFwiIChucyAvIG5zX29mXzFfdXMpXG4gICAgICAgIGVsc2UgaWYgbnMgJSBuc19vZl8xMDBfbnMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDdkXCIgKG5zIC8gbnNfb2ZfMTAwX25zKVxuICAgICAgICBlbHNlIGlmIG5zICUgbnNfb2ZfMTBfbnMgPSAwXG4gICAgICAgIHRoZW4gc3ByaW50ZiBcIi4lMDhkXCIgKG5zIC8gbnNfb2ZfMTBfbnMpXG4gICAgICAgIGVsc2Ugc3ByaW50ZiBcIi4lMDlkXCIgbnNcbiAgICAgIDs7XG5cbiAgICAgIGxldCBzdWJfc2Vjb25kX29mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgICBpZiBTdHJpbmcuaXNfZW1wdHkgc3RyaW5nXG4gICAgICAgIHRoZW4gU3Bhbi56ZXJvXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBkaWdpdHMgPSBTdHJpbmcuY2hvcF9wcmVmaXhfZXhuIHN0cmluZyB+cHJlZml4OlwiLlwiIGluXG4gICAgICAgICAgYXNzZXJ0IChTdHJpbmcuZm9yX2FsbCBkaWdpdHMgfmY6Q2hhci5pc19kaWdpdCk7XG4gICAgICAgICAgbGV0IG11bHRpcGxpZXIgPVxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxlbmd0aCBkaWdpdHMgd2l0aFxuICAgICAgICAgICAgfCAxIC0+IG5zX29mXzEwMF9tc1xuICAgICAgICAgICAgfCAyIC0+IG5zX29mXzEwX21zXG4gICAgICAgICAgICB8IDMgLT4gbnNfb2ZfMV9tc1xuICAgICAgICAgICAgfCA0IC0+IG5zX29mXzEwMF91c1xuICAgICAgICAgICAgfCA1IC0+IG5zX29mXzEwX3VzXG4gICAgICAgICAgICB8IDYgLT4gbnNfb2ZfMV91c1xuICAgICAgICAgICAgfCA3IC0+IG5zX29mXzEwMF9uc1xuICAgICAgICAgICAgfCA4IC0+IG5zX29mXzEwX25zXG4gICAgICAgICAgICB8IDkgLT4gbnNfb2ZfMV9uc1xuICAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgU3Bhbi5vZl9pbnQ2M19ucyAoSW50NjMub2ZfaW50IChJbnQub2Zfc3RyaW5nIGRpZ2l0cyAqIG11bHRpcGxpZXIpKSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19zdHJpbmcgc3BhbiA9XG4gICAgICAgIGFzc2VydCAoU3Bhbi4oID49ICkgc3BhbiBTcGFuLnplcm8gJiYgU3Bhbi4oIDwgKSBzcGFuIFNwYW4uZGF5KTtcbiAgICAgICAgbGV0IHNlY29uZHNfc3BhbiA9IHNwYW4gfD4gU3Bhbi50b19pbnRfc2VjIHw+IFNwYW4ub2ZfaW50X3NlYyBpblxuICAgICAgICBsZXQgc3ViX3NlY29uZF9zcGFuID0gU3Bhbi4oIC0gKSBzcGFuIHNlY29uZHNfc3BhbiBpblxuICAgICAgICBzZWNvbmRzX3RvX3N0cmluZyBzZWNvbmRzX3NwYW4gXiBzdWJfc2Vjb25kX3RvX3N0cmluZyBzdWJfc2Vjb25kX3NwYW5cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggc3RyaW5nIGluXG4gICAgICAgIGxldCBwcmVmaXhfbGVuID0gOCBpblxuICAgICAgICAoKiBcIkhIOk1NOkREXCIgKilcbiAgICAgICAgbGV0IHN1ZmZpeF9sZW4gPSBsZW4gLSBwcmVmaXhfbGVuIGluXG4gICAgICAgIGxldCBzZWNvbmRzX3N0cmluZyA9IFN0cmluZy5zdWIgc3RyaW5nIH5wb3M6MCB+bGVuOnByZWZpeF9sZW4gaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3RyaW5nID0gU3RyaW5nLnN1YiBzdHJpbmcgfnBvczpwcmVmaXhfbGVuIH5sZW46c3VmZml4X2xlbiBpblxuICAgICAgICBsZXQgc2Vjb25kc19zcGFuID0gc2Vjb25kc19vZl9zdHJpbmcgc2Vjb25kc19zdHJpbmcgaW5cbiAgICAgICAgbGV0IHN1Yl9zZWNvbmRfc3BhbiA9IHN1Yl9zZWNvbmRfb2Zfc3RyaW5nIHN1Yl9zZWNvbmRfc3RyaW5nIGluXG4gICAgICAgIFNwYW4uKCArICkgc2Vjb25kc19zcGFuIHN1Yl9zZWNvbmRfc3BhblxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICBsZXQgZGF0ZSwgc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgPSBVdGMudG9fZGF0ZV9hbmRfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgdCBpblxuICAgICAgRGF0ZTAudG9fc3RyaW5nIGRhdGUgXiBcIiBcIiBeIE9mZGF5X2FzX3NwYW4udG9fc3RyaW5nIHNwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5IF4gXCJaXCJcbiAgICA7O1xuXG4gICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPVxuICAgICAgbGV0IGRhdGVfc3RyaW5nLCBvZmRheV9zdHJpbmdfd2l0aF96b25lID0gU3RyaW5nLmxzcGxpdDJfZXhuIHN0cmluZyB+b246JyAnIGluXG4gICAgICBsZXQgb2ZkYXlfc3RyaW5nID0gU3RyaW5nLmNob3Bfc3VmZml4X2V4biBvZmRheV9zdHJpbmdfd2l0aF96b25lIH5zdWZmaXg6XCJaXCIgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGVfc3RyaW5nIGluXG4gICAgICBsZXQgb2ZkYXkgPSBPZmRheV9hc19zcGFuLm9mX3N0cmluZyBvZmRheV9zdHJpbmcgaW5cbiAgICAgIFV0Yy5vZl9kYXRlX2FuZF9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBkYXRlIG9mZGF5XG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA9IFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSBTdHJpbmcudF9zZXhwX2dyYW1tYXJcblxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgaW5jbHVkZSBSZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVfZWZmaWNpZW50XG5cbiAgbW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgKCogc2VlIHRlc3RzIGluIGxpYi9jb3JlL3Rlc3Qvc3JjL3Rlc3RfdGltZV9ucyB0aGF0IGVuc3VyZSBzdGFiaWxpdHkgb2YgdGhpc1xuICAgICAgICAgICByZXByZXNlbnRhdGlvbiAqKVxuICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHAsIHNleHBfZ3JhbW1hcl1cbiAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUXG4gICAgICBpbmNsdWRlIENvbXBhcmFibGUuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0IGVuZFxuICBtb2R1bGUgT3B0aW9uID0gc3RydWN0IGVuZFxuICBtb2R1bGUgQWx0ZXJuYXRlX3NleHAgPSBBbHRlcm5hdGVfc2V4cC5TdGFibGVcbiAgbW9kdWxlIFNwYW4gPSBTcGFuLlN0YWJsZVxuICBtb2R1bGUgT2ZkYXkgPSBPZmRheS5TdGFibGVcbmVuZFxuXG4oKiB0aGlzIGNvZGUgaXMgZGlyZWN0bHkgZHVwbGljYXRlZCBmcm9tIFRpbWUubWwgZnVuY3RvciwgY29udmVydGVkIGVub3VnaCB0byBnZXQgVGltZV9uc1xuICAgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbm1vZHVsZSBUb19hbmRfb2Zfc3RyaW5nIDogc2lnXG4gIHZhbCBvZl9kYXRlX29mZGF5IDogem9uZTpab25lLnQgLT4gRGF0ZS50IC0+IE9mZGF5LnQgLT4gdFxuXG4gIHZhbCBvZl9kYXRlX29mZGF5X3ByZWNpc2VcbiAgICA6ICBEYXRlLnRcbiAgICAtPiBPZmRheS50XG4gICAgLT4gem9uZTpab25lLnRcbiAgICAtPiBbIGBPbmNlIG9mIHQgfCBgVHdpY2Ugb2YgdCAqIHQgfCBgTmV2ZXIgb2YgdCBdXG5cbiAgdmFsIHRvX2RhdGVfb2ZkYXkgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IERhdGUudCAqIE9mZGF5LnRcblxuICB2YWwgdG9fZGF0ZV9vZmRheV9wcmVjaXNlXG4gICAgOiAgdFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gRGF0ZS50ICogT2ZkYXkudCAqIFsgYE9ubHkgfCBgQWxzb19hdCBvZiB0IHwgYEFsc29fc2tpcHBlZCBvZiBEYXRlLnQgKiBPZmRheS50IF1cblxuICB2YWwgdG9fZGF0ZSA6IHQgLT4gem9uZTpab25lLnQgLT4gRGF0ZS50XG4gIHZhbCB0b19vZmRheSA6IHQgLT4gem9uZTpab25lLnQgLT4gT2ZkYXkudFxuICB2YWwgY29udmVydCA6IGZyb21fdHo6Wm9uZS50IC0+IHRvX3R6OlpvbmUudCAtPiBEYXRlLnQgLT4gT2ZkYXkudCAtPiBEYXRlLnQgKiBPZmRheS50XG4gIHZhbCByZXNldF9kYXRlX2NhY2hlIDogdW5pdCAtPiB1bml0XG4gIHZhbCB1dGNfb2Zmc2V0IDogdCAtPiB6b25lOlpvbmUudCAtPiBTcGFuLnRcblxuICB2YWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW29mX3N0cmluZ193aXRoX3V0Y19vZmZzZXRdXCJdXG5cbiAgdmFsIG9mX3N0cmluZ193aXRoX3V0Y19vZmZzZXQgOiBzdHJpbmcgLT4gdFxuICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA0XSBVc2UgW3RvX3N0cmluZ191dGNdXCJdXG4gIHZhbCB0b19zdHJpbmdfdXRjIDogdCAtPiBzdHJpbmdcbiAgdmFsIHRvX2ZpbGVuYW1lX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9maWxlbmFtZV9zdHJpbmcgOiBzdHJpbmcgLT4gem9uZTpab25lLnQgLT4gdFxuICB2YWwgdG9fc3RyaW5nX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc2VjX3N0cmluZyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCBvZl9sb2NhbGl6ZWRfc3RyaW5nIDogem9uZTpab25lLnQgLT4gc3RyaW5nIC0+IHRcblxuICB2YWwgb2Zfc3RyaW5nX2dlblxuICAgIDogIGRlZmF1bHRfem9uZToodW5pdCAtPiBab25lLnQpXG4gICAgLT4gZmluZF96b25lOihzdHJpbmcgLT4gWm9uZS50KVxuICAgIC0+IHN0cmluZ1xuICAgIC0+IHRcblxuICB2YWwgdG9fc3RyaW5nX2FicyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nXG4gIHZhbCB0b19zdHJpbmdfYWJzX3RyaW1tZWQgOiB0IC0+IHpvbmU6Wm9uZS50IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2Fic19wYXJ0cyA6IHQgLT4gem9uZTpab25lLnQgLT4gc3RyaW5nIGxpc3RcbiAgdmFsIHRvX3N0cmluZ19pc284NjAxX2Jhc2ljIDogdCAtPiB6b25lOlpvbmUudCAtPiBzdHJpbmdcblxuICB2YWwgb2NjdXJyZW5jZVxuICAgIDogIFsgYEZpcnN0X2FmdGVyX29yX2F0IHwgYExhc3RfYmVmb3JlX29yX2F0IF1cbiAgICAtPiB0XG4gICAgLT4gb2ZkYXk6T2ZkYXkudFxuICAgIC0+IHpvbmU6Wm9uZS50XG4gICAgLT4gdFxuZW5kID0gc3RydWN0XG4gICgqIHRoaXMgY29kZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9mbG9hdDAubWwsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgIFRpbWVfbnMgdG8vb2Zfc3RyaW5nIHdvcmtpbmcgKilcbiAgbW9kdWxlIERhdGVfYW5kX29mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gSW50NjMudFxuXG4gICAgbGV0IHRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHQgPSBTcGFuLm9mX2ludDYzX25zIHRcblxuICAgIGxldCBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgPVxuICAgICAgbGV0IGRheXMgPVxuICAgICAgICBEYXRlMC5EYXlzLmRpZmYgKERhdGUwLkRheXMub2ZfZGF0ZSBkYXRlKSBEYXRlMC5EYXlzLnVuaXhfZXBvY2ggfD4gSW50NjMub2ZfaW50XG4gICAgICBpblxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgKGRheXMgKiBTcGFuLnRvX2ludDYzX25zIFNwYW4uZGF5KVxuICAgICAgKyBTcGFuLnRvX2ludDYzX25zIChPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBvZmRheSlcbiAgICA7O1xuXG4gICAgbGV0IHRvX2Fic29sdXRlIHJlbGF0aXZlIH5vZmZzZXRfZnJvbV91dGMgPVxuICAgICAgc3ViX2V4biAoU3Bhbi5vZl9pbnQ2M19ucyByZWxhdGl2ZSkgb2Zmc2V0X2Zyb21fdXRjXG4gICAgOztcblxuICAgIGxldCBvZl9hYnNvbHV0ZSBhYnNvbHV0ZSB+b2Zmc2V0X2Zyb21fdXRjID1cbiAgICAgIFNwYW4udG9faW50NjNfbnMgKGFkZF9leG4gYWJzb2x1dGUgb2Zmc2V0X2Zyb21fdXRjKVxuICAgIDs7XG5cbiAgICBsZXQgbnNfcGVyX2RheSA9IFNwYW4udG9faW50NjNfbnMgU3Bhbi5kYXlcblxuICAgIGxldCB0b19kYXlzX2Zyb21fZXBvY2ggdCA9XG4gICAgICAoKiBub3RlIFRpbWVfbnMgcmVwcmVzZW50cyBhYm91dCAxNDYgeWVhcnMsIG5vdCBlbm91Z2ggZm9yIFtEYXRlLmNyZWF0ZV9leG5dIHRvIGV2ZXJcbiAgICAgICAgIHJhaXNlICopXG4gICAgICBsZXQgb3BlbiBJbnQ2My5PIGluXG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCA9IHQgLyBuc19wZXJfZGF5IGluXG4gICAgICAoKiB3aGVuIFt0XSBpcyBuZWdhdGl2ZSB0aGUgaW50ZWdlciBkaXZpc2lvbiB0aGF0IGNhbGN1bGF0ZWQgZGF5c19mcm9tX2Vwb2NoX2FwcHJveFxuICAgICAgICAgd2lsbCBsZWF2ZSB1cyBvbmUgZGF5IHNob3J0IGJlY2F1c2UgaXQgdHJ1bmNhdGVzIChlLmcuIC0xMDAgLyA4Nl80MDAgPSAwIGFuZCB3ZVxuICAgICAgICAgd2FudCAtMSkgLS0gYWRqdXN0IGZvciB0aGF0IGhlcmUuICopXG4gICAgICBpZiB0IDwgZGF5c19mcm9tX2Vwb2NoX2FwcHJveCAqIG5zX3Blcl9kYXlcbiAgICAgIHRoZW4gSW50NjMucHJlZCBkYXlzX2Zyb21fZXBvY2hfYXBwcm94XG4gICAgICBlbHNlIGRheXNfZnJvbV9lcG9jaF9hcHByb3hcbiAgICA7O1xuXG4gICAgbGV0IG9mZGF5X29mX2RheXNfZnJvbV9lcG9jaCB0IH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgbGV0IG9wZW4gSW50NjMuTyBpblxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaF9pbl9ucyA9IGRheXNfZnJvbV9lcG9jaCAqIG5zX3Blcl9kYXkgaW5cbiAgICAgIGxldCByZW1haW5kZXIgPSB0IC0gZGF5c19mcm9tX2Vwb2NoX2luX25zIGluXG4gICAgICBTcGFuLm9mX2ludDYzX25zIHJlbWFpbmRlciB8PiBPZmRheS5vZl9zcGFuX3NpbmNlX3N0YXJ0X29mX2RheV9leG5cbiAgICA7O1xuXG4gICAgbGV0IGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2ggPVxuICAgICAgSW50NjMudG9faW50X2V4biBkYXlzX2Zyb21fZXBvY2hcbiAgICAgIHw+IERhdGUwLkRheXMuYWRkX2RheXMgRGF0ZTAuRGF5cy51bml4X2Vwb2NoXG4gICAgICB8PiBEYXRlMC5EYXlzLnRvX2RhdGVcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGUgdCA9XG4gICAgICBsZXQgZGF5c19mcm9tX2Vwb2NoID0gdG9fZGF5c19mcm9tX2Vwb2NoIHQgaW5cbiAgICAgIGRhdGVfb2ZfZGF5c19mcm9tX2Vwb2NoIH5kYXlzX2Zyb21fZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX29mZGF5IHQgPVxuICAgICAgbGV0IGRheXNfZnJvbV9lcG9jaCA9IHRvX2RheXNfZnJvbV9lcG9jaCB0IGluXG4gICAgICBvZmRheV9vZl9kYXlzX2Zyb21fZXBvY2ggdCB+ZGF5c19mcm9tX2Vwb2NoXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFpvbmUgOiBzaWdcbiAgICAoKiBUaGlzIGludGVyZmFjZSBpcyBkaXJlY3RseSBkdXBsaWNhdGVkIGZyb20gVGltZV9pbnRmLlpvbmUsIGNvbnZlcnRlZCBlbm91Z2ggdG8gZ2V0XG4gICAgICAgdGhpcyB0byB3b3JrLlxuXG4gICAgICAgVGhlIHByb2JsZW0gaXMgaGFzIHJlZmVyZW5jZXMgdG8gVGltZTBfaW50Zi5TLCB3aGljaCBpcyB0aGUgZnVuY3RvciBpbnB1dCBpbnRlcmZhY2VcbiAgICAgICB0aGF0IFRpbWVfbnMgY3VycmVudGx5IGRvZXMgbm90IHNhdGlzZnkuICopXG5cbiAgICB0eXBlIHRpbWUgPSB0XG4gICAgdHlwZSB0ID0gWm9uZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBtb2R1bGUgSW5kZXggPSBab25lLkluZGV4XG5cbiAgICAoKiBjb3BpZWQgZnVuY3Rpb25zIHJlZXhwb3J0ZWQgZnJvbSBab25lICopXG5cbiAgICB2YWwgdXRjIDogdFxuICAgIHZhbCBpbmRleF9oYXNfcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gSW5kZXgudCAtPiBib29sXG4gICAgdmFsIGluZGV4X2hhc19uZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBJbmRleC50IC0+IGJvb2xcblxuICAgICgqIG5ldyBmdW5jdGlvbnMgZGVmaW5lZCBiZWxvdyAqKVxuXG4gICAgdmFsIGluZGV4IDogdCAtPiB0aW1lIC0+IEluZGV4LnRcbiAgICB2YWwgaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biA6IHQgLT4gSW5kZXgudCAtPiB0aW1lXG4gICAgdmFsIGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfdGltZV9leG4gOiB0IC0+IEluZGV4LnQgLT4gdGltZVxuICAgIHZhbCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIDogdCAtPiBJbmRleC50IC0+IHRpbWVcbiAgICB2YWwgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSA6IHQgLT4gRGF0ZV9hbmRfb2ZkYXkudCAtPiB0aW1lXG4gICAgdmFsIGRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgOiB0IC0+IHRpbWUgLT4gRGF0ZV9hbmRfb2ZkYXkudFxuICAgIHZhbCBuZXh0X2Nsb2NrX3NoaWZ0IDogdCAtPiBzdHJpY3RseV9hZnRlcjp0aW1lIC0+ICh0aW1lICogU3Bhbi50KSBvcHRpb25cbiAgICB2YWwgcHJldl9jbG9ja19zaGlmdCA6IHQgLT4gYXRfb3JfYmVmb3JlOnRpbWUgLT4gKHRpbWUgKiBTcGFuLnQpIG9wdGlvblxuICBlbmQgPSBzdHJ1Y3RcbiAgICB0eXBlIHRpbWUgPSB0XG5cbiAgICBpbmNsdWRlIFpvbmVcblxuICAgIGxldCBvZl9zcGFuX2luX3NlY29uZHMgc3Bhbl9pbl9zZWNvbmRzID1cbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4biBzcGFuX2luX3NlY29uZHNcbiAgICAgIHw+IFNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgIDs7XG5cbiAgICBsZXQgb2ZfdGltZV9pbl9zZWNvbmRzIHRpbWVfaW5fc2Vjb25kcyA9XG4gICAgICBUaW1lX2luX3NlY29uZHMudG9fc3Bhbl9zaW5jZV9lcG9jaCB0aW1lX2luX3NlY29uZHNcbiAgICAgICgqIE5CLiBubyBhY3R1YWwgcm91bmRpbmcgb3IgZXhucyBjYW4gb2NjdXIgaGVyZSAqKVxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gU3Bhbi5vZl9pbnQ2M19zZWNvbmRzXG4gICAgICB8PiBvZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCB0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSA9XG4gICAgICB0b19zcGFuX3NpbmNlX2Vwb2NoIHRpbWVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLm9mX3NwYW5fc2luY2VfZXBvY2hcbiAgICA7O1xuXG4gICAgbGV0IHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUgPVxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fc3ludGhldGljX3NwYW5fc2luY2VfZXBvY2ggcmVsYXRpdmVcbiAgICAgIHw+IFNwYW4udG9faW50NjNfc2Vjb25kc19yb3VuZF9kb3duX2V4blxuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLlNwYW4ub2ZfaW50NjNfc2Vjb25kc1xuICAgICAgfD4gVGltZV9pbl9zZWNvbmRzLkRhdGVfYW5kX29mZGF5Lm9mX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoXG4gICAgOztcblxuICAgIGxldCBpbmRleCB0IHRpbWUgPSBpbmRleCB0ICh0b190aW1lX2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gdGltZSlcblxuICAgIGxldCBpbmRleF9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgKHRvX2RhdGVfYW5kX29mZGF5X2luX3NlY29uZHNfcm91bmRfZG93bl9leG4gcmVsYXRpdmUpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggPVxuICAgICAgb2Zfc3Bhbl9pbl9zZWNvbmRzIChpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXggPVxuICAgICAgb2ZfdGltZV9pbl9zZWNvbmRzIChpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0X3RpbWVfZXhuIHQgaW5kZXgpXG4gICAgOztcblxuICAgIGxldCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCA9XG4gICAgICBvZl9zcGFuX2luX3NlY29uZHMgKGluZGV4X3ByZXZfY2xvY2tfc2hpZnRfYW1vdW50X2V4biB0IGluZGV4KVxuICAgIDs7XG5cbiAgICBsZXQgaW5kZXhfcHJldl9jbG9ja19zaGlmdCB0IGluZGV4ID1cbiAgICAgIG1hdGNoIGluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHQgaW5kZXggd2l0aFxuICAgICAgfCBmYWxzZSAtPiBOb25lXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgU29tZVxuICAgICAgICAgICggaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB0IGluZGV4XG4gICAgICAgICAgLCBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0X2Ftb3VudF9leG4gdCBpbmRleCApXG4gICAgOztcblxuICAgIGxldCBpbmRleF9uZXh0X2Nsb2NrX3NoaWZ0IHQgaW5kZXggPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKEluZGV4Lm5leHQgaW5kZXgpXG4gICAgbGV0IHByZXZfY2xvY2tfc2hpZnQgdCB+YXRfb3JfYmVmb3JlOnRpbWUgPSBpbmRleF9wcmV2X2Nsb2NrX3NoaWZ0IHQgKGluZGV4IHQgdGltZSlcbiAgICBsZXQgbmV4dF9jbG9ja19zaGlmdCB0IH5zdHJpY3RseV9hZnRlcjp0aW1lID0gaW5kZXhfbmV4dF9jbG9ja19zaGlmdCB0IChpbmRleCB0IHRpbWUpXG5cbiAgICBsZXQgZGF0ZV9hbmRfb2ZkYXlfb2ZfYWJzb2x1dGVfdGltZSB0IHRpbWUgPVxuICAgICAgbGV0IGluZGV4ID0gaW5kZXggdCB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbaW5kZXhdIGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgaW5kZXggKilcbiAgICAgIGxldCBvZmZzZXRfZnJvbV91dGMgPSBpbmRleF9vZmZzZXRfZnJvbV91dGNfZXhuIHQgaW5kZXggaW5cbiAgICAgIERhdGVfYW5kX29mZGF5Lm9mX2Fic29sdXRlIHRpbWUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG5cbiAgICBsZXQgYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB0IHJlbGF0aXZlID1cbiAgICAgIGxldCBpbmRleCA9IGluZGV4X29mX2RhdGVfYW5kX29mZGF5IHQgcmVsYXRpdmUgaW5cbiAgICAgICgqIG5vIGV4biBiZWNhdXNlIFtpbmRleF9vZl9kYXRlX2FuZF9vZmRheV0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IGluZGV4X29mZnNldF9mcm9tX3V0Y19leG4gdCBpbmRleCBpblxuICAgICAgRGF0ZV9hbmRfb2ZkYXkudG9fYWJzb2x1dGUgcmVsYXRpdmUgfm9mZnNldF9mcm9tX3V0Y1xuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXkgPVxuICAgIGxldCByZWxhdGl2ZSA9IERhdGVfYW5kX29mZGF5Lm9mX2RhdGVfb2ZkYXkgZGF0ZSBvZmRheSBpblxuICAgIFpvbmUuYWJzb2x1dGVfdGltZV9vZl9kYXRlX2FuZF9vZmRheSB6b25lIHJlbGF0aXZlXG4gIDs7XG5cbiAgbGV0IG9mX2RhdGVfb2ZkYXlfcHJlY2lzZSBkYXRlIG9mZGF5IH56b25lID1cbiAgICAoKiBXZSBhc3N1bWUgdGhhdCB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIHpvbmUgc2hpZnQgd2l0aGluIGEgZ2l2ZW4gbG9jYWwgZGF5LiAgKilcbiAgICBsZXQgc3RhcnRfb2ZfZGF5ID0gb2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIE9mZGF5LnN0YXJ0X29mX2RheSBpblxuICAgIGxldCBwcm9wb3NlZF90aW1lID0gYWRkIHN0YXJ0X29mX2RheSAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2ZkYXkpIGluXG4gICAgbWF0Y2ggWm9uZS5uZXh0X2Nsb2NrX3NoaWZ0IHpvbmUgfnN0cmljdGx5X2FmdGVyOnN0YXJ0X29mX2RheSB3aXRoXG4gICAgfCBOb25lIC0+IGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICB8IFNvbWUgKHNoaWZ0X3N0YXJ0LCBzaGlmdF9hbW91bnQpIC0+XG4gICAgICBsZXQgc2hpZnRfYmFja3dhcmRzID0gU3Bhbi4oc2hpZnRfYW1vdW50IDwgemVybykgaW5cbiAgICAgICgqIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIFwicHJvYmxlbWF0aWMgcmVnaW9uXCIgKilcbiAgICAgIGxldCBzLCBlID1cbiAgICAgICAgaWYgc2hpZnRfYmFja3dhcmRzXG4gICAgICAgIHRoZW4gYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudCwgc2hpZnRfc3RhcnRcbiAgICAgICAgZWxzZSBzaGlmdF9zdGFydCwgYWRkIHNoaWZ0X3N0YXJ0IHNoaWZ0X2Ftb3VudFxuICAgICAgaW5cbiAgICAgIGlmIHByb3Bvc2VkX3RpbWUgPCBzXG4gICAgICB0aGVuIGBPbmNlIHByb3Bvc2VkX3RpbWVcbiAgICAgIGVsc2UgaWYgcyA8PSBwcm9wb3NlZF90aW1lICYmIHByb3Bvc2VkX3RpbWUgPCBlXG4gICAgICB0aGVuXG4gICAgICAgIGlmIHNoaWZ0X2JhY2t3YXJkc1xuICAgICAgICB0aGVuIGBUd2ljZSAocHJvcG9zZWRfdGltZSwgc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICAgICAgICBlbHNlIGBOZXZlciBzaGlmdF9zdGFydFxuICAgICAgZWxzZSBgT25jZSAoc3ViIHByb3Bvc2VkX3RpbWUgc2hpZnRfYW1vdW50KVxuICA7O1xuXG4gIG1vZHVsZSBEYXRlX2NhY2hlID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9XG4gICAgICB7IG11dGFibGUgem9uZSA6IFpvbmUudFxuICAgICAgOyBtdXRhYmxlIGNhY2hlX3N0YXJ0X2luY2wgOiB0XG4gICAgICA7IG11dGFibGUgY2FjaGVfdW50aWxfZXhjbCA6IHRcbiAgICAgIDsgbXV0YWJsZSBlZmZlY3RpdmVfZGF5X3N0YXJ0IDogdFxuICAgICAgOyBtdXRhYmxlIGRhdGUgOiBEYXRlMC50XG4gICAgICB9XG4gIGVuZFxuXG4gIGxldCBkYXRlX2NhY2hlIDogRGF0ZV9jYWNoZS50ID1cbiAgICB7IHpvbmUgPSBab25lLnV0Y1xuICAgIDsgY2FjaGVfc3RhcnRfaW5jbCA9IGVwb2NoXG4gICAgOyBjYWNoZV91bnRpbF9leGNsID0gZXBvY2hcbiAgICA7IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPSBlcG9jaFxuICAgIDsgZGF0ZSA9IERhdGUwLnVuaXhfZXBvY2hcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHJlc2V0X2RhdGVfY2FjaGUgKCkgPVxuICAgIGRhdGVfY2FjaGUuem9uZSA8LSBab25lLnV0YztcbiAgICBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2wgPC0gZXBvY2g7XG4gICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGVwb2NoO1xuICAgIGRhdGVfY2FjaGUuZWZmZWN0aXZlX2RheV9zdGFydCA8LSBlcG9jaDtcbiAgICBkYXRlX2NhY2hlLmRhdGUgPC0gRGF0ZTAudW5peF9lcG9jaFxuICA7O1xuXG4gIGxldCBpc19pbl9jYWNoZSB0aW1lIH56b25lID1cbiAgICBwaHlzX2VxdWFsIHpvbmUgZGF0ZV9jYWNoZS56b25lXG4gICAgJiYgdGltZSA+PSBkYXRlX2NhY2hlLmNhY2hlX3N0YXJ0X2luY2xcbiAgICAmJiB0aW1lIDwgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsXG4gIDs7XG5cbiAgbGV0IHNldF9kYXRlX2NhY2hlIHRpbWUgfnpvbmUgPVxuICAgIG1hdGNoIGlzX2luX2NhY2hlIHRpbWUgfnpvbmUgd2l0aFxuICAgIHwgdHJ1ZSAtPiAoKVxuICAgIHwgZmFsc2UgLT5cbiAgICAgIGxldCBpbmRleCA9IFpvbmUuaW5kZXggem9uZSB0aW1lIGluXG4gICAgICAoKiBubyBleG4gYmVjYXVzZSBbWm9uZS5pbmRleF0gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBpbmRleCAqKVxuICAgICAgbGV0IG9mZnNldF9mcm9tX3V0YyA9IFpvbmUuaW5kZXhfb2Zmc2V0X2Zyb21fdXRjX2V4biB6b25lIGluZGV4IGluXG4gICAgICBsZXQgcmVsID0gRGF0ZV9hbmRfb2ZkYXkub2ZfYWJzb2x1dGUgdGltZSB+b2Zmc2V0X2Zyb21fdXRjIGluXG4gICAgICBsZXQgZGF0ZSA9IERhdGVfYW5kX29mZGF5LnRvX2RhdGUgcmVsIGluXG4gICAgICBsZXQgc3BhbiA9IERhdGVfYW5kX29mZGF5LnRvX29mZGF5IHJlbCB8PiBPZmRheS50b19zcGFuX3NpbmNlX3N0YXJ0X29mX2RheSBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfc3RhcnQgPVxuICAgICAgICBzdWIgKERhdGVfYW5kX29mZGF5LnRvX2Fic29sdXRlIHJlbCB+b2Zmc2V0X2Zyb21fdXRjKSBzcGFuXG4gICAgICBpblxuICAgICAgbGV0IGVmZmVjdGl2ZV9kYXlfdW50aWwgPSBhZGQgZWZmZWN0aXZlX2RheV9zdGFydCBTcGFuLmRheSBpblxuICAgICAgbGV0IGNhY2hlX3N0YXJ0X2luY2wgPVxuICAgICAgICBtYXRjaCBab25lLmluZGV4X2hhc19wcmV2X2Nsb2NrX3NoaWZ0IHpvbmUgaW5kZXggd2l0aFxuICAgICAgICB8IGZhbHNlIC0+IGVmZmVjdGl2ZV9kYXlfc3RhcnRcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgZWZmZWN0aXZlX2RheV9zdGFydCB8PiBtYXggKFpvbmUuaW5kZXhfcHJldl9jbG9ja19zaGlmdF90aW1lX2V4biB6b25lIGluZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBjYWNoZV91bnRpbF9leGNsID1cbiAgICAgICAgbWF0Y2ggWm9uZS5pbmRleF9oYXNfbmV4dF9jbG9ja19zaGlmdCB6b25lIGluZGV4IHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBlZmZlY3RpdmVfZGF5X3VudGlsXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGVmZmVjdGl2ZV9kYXlfdW50aWwgfD4gbWluIChab25lLmluZGV4X25leHRfY2xvY2tfc2hpZnRfdGltZV9leG4gem9uZSBpbmRleClcbiAgICAgIGluXG4gICAgICBkYXRlX2NhY2hlLnpvbmUgPC0gem9uZTtcbiAgICAgIGRhdGVfY2FjaGUuY2FjaGVfc3RhcnRfaW5jbCA8LSBjYWNoZV9zdGFydF9pbmNsO1xuICAgICAgZGF0ZV9jYWNoZS5jYWNoZV91bnRpbF9leGNsIDwtIGNhY2hlX3VudGlsX2V4Y2w7XG4gICAgICBkYXRlX2NhY2hlLmVmZmVjdGl2ZV9kYXlfc3RhcnQgPC0gZWZmZWN0aXZlX2RheV9zdGFydDtcbiAgICAgIGRhdGVfY2FjaGUuZGF0ZSA8LSBkYXRlXG4gIDs7XG5cbiAgbGV0IHRvX2RhdGUgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkYXRlX2NhY2hlLmRhdGVcbiAgOztcblxuICBsZXQgdG9fb2ZkYXkgdGltZSB+em9uZSA9XG4gICAgc2V0X2RhdGVfY2FjaGUgdGltZSB+em9uZTtcbiAgICBkaWZmIHRpbWUgZGF0ZV9jYWNoZS5lZmZlY3RpdmVfZGF5X3N0YXJ0IHw+IE9mZGF5Lm9mX3NwYW5fc2luY2Vfc3RhcnRfb2ZfZGF5X2V4blxuICA7O1xuXG4gIGxldCB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgPSB0b19kYXRlIHRpbWUgfnpvbmUsIHRvX29mZGF5IHRpbWUgfnpvbmVcblxuICAoKiBUaGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBhbGdvcml0aG0gKGludGVyZmFjZSwgZXZlbikgZGVwZW5kcyBvbiB0aGUgZmFjdCB0aGF0XG4gICAgIHRpbWV6b25lIHNoaWZ0cyBhcmVuJ3QgdG9vIGNsb3NlIHRvZ2V0aGVyIChhcyBpbiwgaXQgY2FuJ3Qgc2ltdWx0YW5lb3VzbHkgYmUgdGhlXG4gICAgIGNhc2UgdGhhdCBhIHRpbWV6b25lIHNoaWZ0IG9mIFggaG91cnMgb2NjdXJyZWQgbGVzcyB0aGFuIFggaG91cnMgYWdvLCAqYW5kKlxuICAgICBhIHRpbWV6b25lIHNoaWZ0IG9mIFkgaG91cnMgd2lsbCBvY2N1ciBpbiBsZXNzIHRoYW4gWSBob3VycycgdGltZSkgKilcbiAgbGV0IHRvX2RhdGVfb2ZkYXlfcHJlY2lzZSB0aW1lIH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgY2xvY2tfc2hpZnRfYWZ0ZXIgPSBab25lLm5leHRfY2xvY2tfc2hpZnQgem9uZSB+c3RyaWN0bHlfYWZ0ZXI6dGltZSBpblxuICAgIGxldCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQgPSBab25lLnByZXZfY2xvY2tfc2hpZnQgem9uZSB+YXRfb3JfYmVmb3JlOnRpbWUgaW5cbiAgICBsZXQgYWxzb19za2lwcGVkX2VhcmxpZXIgYW1vdW50ID1cbiAgICAgICgqIFVzaW5nIFtkYXRlXSBhbmQgcmFpc2luZyBvbiBbTm9uZV0gaGVyZSBpcyBPSyBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGNsb2NrXG4gICAgICAgICBzaGlmdHMgY2FuJ3QgY3Jvc3MgZGF0ZSBib3VuZGFyaWVzLiBUaGlzIGlzIHRydWUgaW4gYWxsIGNhc2VzIEkndmUgZXZlciBoZWFyZFxuICAgICAgICAgb2YgKGFuZCBbb2ZfZGF0ZV9vZmRheV9wcmVjaXNlXSB3b3VsZCBuZWVkIHJldmlzaXRpbmcgaWYgaXQgdHVybmVkIG91dCB0byBiZVxuICAgICAgICAgZmFsc2UpICopXG4gICAgICBtYXRjaCBPZmRheS5zdWIgb2ZkYXkgYW1vdW50IHdpdGhcbiAgICAgIHwgU29tZSBvZmRheSAtPiBgQWxzb19za2lwcGVkIChkYXRlLCBvZmRheSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIlRpbWUudG9fZGF0ZV9vZmRheV9wcmVjaXNlXCJcbiAgICAgICAgICAgICAgfnNwYW5fc2luY2VfZXBvY2g6KHRvX3NwYW5fc2luY2VfZXBvY2ggdGltZSA6IFNwYW4udClcbiAgICAgICAgICAgICAgKHpvbmUgOiBab25lLnQpXVxuICAgIGluXG4gICAgbGV0IGFtYmlndWl0eSA9XG4gICAgICAoKiBFZGdlIGNhc2VzOiB0aGUgaW5zdGFudCBvZiB0cmFuc2l0aW9uIGJlbG9uZ3MgdG8gdGhlIG5ldyB6b25lIHJlZ2ltZS4gU28gaWYgdGhlXG4gICAgICAgICBjbG9jayBtb3ZlZCBieSBhbiBob3VyIGV4YWN0bHkgb25lIGhvdXIgYWdvLCB0aGVyZSdzIG5vIGFtYmlndWl0eSwgYmVjYXVzZSB0aGVcbiAgICAgICAgIGhvdXItYWdvIHRpbWUgYmVsb25ncyB0byB0aGUgc2FtZSByZWdpbWUgYXMgeW91LCBhbmQgY29udmVyc2VseSwgaWYgdGhlIGNsb2NrXG4gICAgICAgICB3aWxsIG1vdmUgYnkgYW4gaG91ciBpbiBhbiBob3VycycgdGltZSwgdGhlcmUgKmlzKiBhbWJpZ3VpdHkuIEhlbmNlIFs+Ll0gZm9yXG4gICAgICAgICB0aGUgZmlyc3QgY2FzZSBhbmQgWzw9Ll0gZm9yIHRoZSBzZWNvbmQuICopXG4gICAgICBtYXRjaCBjbG9ja19zaGlmdF9iZWZvcmVfb3JfYXQsIGNsb2NrX3NoaWZ0X2FmdGVyIHdpdGhcbiAgICAgIHwgU29tZSAoc3RhcnQsIGFtb3VudCksIF8gd2hlbiBhZGQgc3RhcnQgKFNwYW4uYWJzIGFtb3VudCkgPiB0aW1lIC0+XG4gICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgcmVjZW50bHkgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIGNsb2NrIHNoaWZ0ZWQgZm9yd2FyZCByZWNlbnRseTogd2Ugc2tpcHBlZCBhIHRpbWUgKilcbiAgICAgICAgICBhbHNvX3NraXBwZWRfZWFybGllciBhbW91bnRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogY2xvY2sgc2hpZnRlZCBiYWNrIHJlY2VudGx5OiB0aGlzIGRhdGUvb2ZkYXkgYWxyZWFkeSBoYXBwZW5lZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChzdWIgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8sIFNvbWUgKHN0YXJ0LCBhbW91bnQpIHdoZW4gc3ViIHN0YXJ0IChTcGFuLmFicyBhbW91bnQpIDw9IHRpbWUgLT5cbiAgICAgICAgKCogY2xvY2sgaXMgYWJvdXQgdG8gc2hpZnQgKilcbiAgICAgICAgaWYgU3Bhbi4oYW1vdW50ID4gemVybylcbiAgICAgICAgdGhlbiAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBmb3J3YXJkOiBubyBlZmZlY3QgKilcbiAgICAgICAgICBgT25seVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICAoKiBjbG9jayBhYm91dCB0byBzaGlmdCBiYWNrOiB0aGlzIGRhdGUvb2ZkYXkgd2lsbCBiZSByZXBlYXRlZCAqKVxuICAgICAgICAgIGFzc2VydCAoU3Bhbi4oYW1vdW50IDwgemVybykpO1xuICAgICAgICAgIGBBbHNvX2F0IChhZGQgdGltZSAoU3Bhbi5hYnMgYW1vdW50KSkpXG4gICAgICB8IF8gLT4gYE9ubHlcbiAgICBpblxuICAgIGRhdGUsIG9mZGF5LCBhbWJpZ3VpdHlcbiAgOztcblxuICBsZXQgY29udmVydCB+ZnJvbV90eiB+dG9fdHogZGF0ZSBvZmRheSA9XG4gICAgbGV0IHN0YXJ0X3RpbWUgPSBvZl9kYXRlX29mZGF5IH56b25lOmZyb21fdHogZGF0ZSBvZmRheSBpblxuICAgIHRvX2RhdGVfb2ZkYXkgfnpvbmU6dG9fdHogc3RhcnRfdGltZVxuICA7O1xuXG4gIGxldCB1dGNfb2Zmc2V0IHQgfnpvbmUgPVxuICAgIGxldCB1dGNfZXBvY2ggPSBab25lLmRhdGVfYW5kX29mZGF5X29mX2Fic29sdXRlX3RpbWUgem9uZSB0IGluXG4gICAgU3Bhbi4oIC0gKVxuICAgICAgKERhdGVfYW5kX29mZGF5LnRvX3N5bnRoZXRpY19zcGFuX3NpbmNlX2Vwb2NoIHV0Y19lcG9jaClcbiAgICAgICh0b19zcGFuX3NpbmNlX2Vwb2NoIHQpXG4gIDs7XG5cbiAgbGV0IG9mZnNldF9zdHJpbmcgdGltZSB+em9uZSA9XG4gICAgbGV0IHV0Y19vZmZzZXQgPSB1dGNfb2Zmc2V0IHRpbWUgfnpvbmUgaW5cbiAgICBsZXQgaXNfdXRjID0gU3Bhbi4oID0gKSB1dGNfb2Zmc2V0IFNwYW4uemVybyBpblxuICAgIGlmIGlzX3V0Y1xuICAgIHRoZW4gXCJaXCJcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgKGlmIFNwYW4uKCA8ICkgdXRjX29mZnNldCBTcGFuLnplcm8gdGhlbiBcIi1cIiBlbHNlIFwiK1wiKVxuICAgICAgICA7IE9mZGF5LnRvX3N0cmluZ190cmltbWVkXG4gICAgICAgICAgICAoT2ZkYXkub2Zfc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXlfZXhuIChTcGFuLmFicyB1dGNfb2Zmc2V0KSlcbiAgICAgICAgXVxuICA7O1xuXG4gIGxldCB0b19zdHJpbmdfYWJzX3BhcnRzID1cbiAgICBsZXQgYXR0ZW1wdCB0aW1lIH56b25lID1cbiAgICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgICAgbGV0IG9mZnNldF9zdHJpbmcgPSBvZmZzZXRfc3RyaW5nIHRpbWUgfnpvbmUgaW5cbiAgICAgIFsgRGF0ZTAudG9fc3RyaW5nIGRhdGVcbiAgICAgIDsgU3RyaW5nLmNvbmNhdCB+c2VwOlwiXCIgWyBPZmRheS50b19zdHJpbmcgb2ZkYXk7IG9mZnNldF9zdHJpbmcgXVxuICAgICAgXVxuICAgIGluXG4gICAgZnVuIHRpbWUgfnpvbmUgLT5cbiAgICAgIHRyeSBhdHRlbXB0IHRpbWUgfnpvbmUgd2l0aFxuICAgICAgfCAoXyA6IGV4bikgLT5cbiAgICAgICAgKCogSWYgd2Ugb3ZlcmZsb3cgYXBwbHlpbmcgdGhlIFVUQyBvZmZzZXQsIHRyeSBhZ2FpbiB3aXRoIFVUQyB0aW1lLiAqKVxuICAgICAgICBhdHRlbXB0IHRpbWUgfnpvbmU6Wm9uZS51dGNcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2Fic190cmltbWVkIHRpbWUgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBvZmRheSA9IHRvX2RhdGVfb2ZkYXkgdGltZSB+em9uZSBpblxuICAgIGxldCBvZmZzZXRfc3RyaW5nID0gb2Zmc2V0X3N0cmluZyB0aW1lIH56b25lIGluXG4gICAgU3RyaW5nLmNvbmNhdFxuICAgICAgfnNlcDpcIiBcIlxuICAgICAgWyBEYXRlMC50b19zdHJpbmcgZGF0ZTsgT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgb2ZkYXkgXiBvZmZzZXRfc3RyaW5nIF1cbiAgOztcblxuICBsZXQgdG9fc3RyaW5nX2FicyB0aW1lIH56b25lID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIGxldCB0b19zdHJpbmdfdXRjIHQgPSB0b19zdHJpbmdfYWJzIHQgfnpvbmU6Wm9uZS51dGNcbiAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ191dGNcblxuICBsZXQgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgdGltZSB+em9uZSA9XG4gICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiVFwiICh0b19zdHJpbmdfYWJzX3BhcnRzIH56b25lIHRpbWUpXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ190cmltbWVkIHQgfnpvbmUgPVxuICAgIGxldCBkYXRlLCBzZWMgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZSBeIFwiIFwiIF4gT2ZkYXkudG9fc3RyaW5nX3RyaW1tZWQgc2VjXG4gIDs7XG5cbiAgbGV0IHRvX3NlY19zdHJpbmcgdCB+em9uZSA9XG4gICAgbGV0IGRhdGUsIHNlYyA9IHRvX2RhdGVfb2ZkYXkgfnpvbmUgdCBpblxuICAgIERhdGUwLnRvX3N0cmluZyBkYXRlIF4gXCIgXCIgXiBPZmRheS50b19zZWNfc3RyaW5nIHNlY1xuICA7O1xuXG4gIGxldCB0b19zZWNfc3RyaW5nX3dpdGhfem9uZSB0IH56b25lID0gdG9fc2VjX3N0cmluZyB0IH56b25lIF4gb2Zmc2V0X3N0cmluZyB0IH56b25lXG5cbiAgbGV0IHRvX2ZpbGVuYW1lX3N0cmluZyB0IH56b25lID1cbiAgICBsZXQgZGF0ZSwgb2ZkYXkgPSB0b19kYXRlX29mZGF5IH56b25lIHQgaW5cbiAgICBEYXRlMC50b19zdHJpbmcgZGF0ZVxuICAgIF4gXCJfXCJcbiAgICBeIFN0cmluZy50clxuICAgICAgICB+dGFyZ2V0Oic6J1xuICAgICAgICB+cmVwbGFjZW1lbnQ6Jy0nXG4gICAgICAgIChTdHJpbmcuZHJvcF9zdWZmaXggKE9mZGF5LnRvX3N0cmluZyBvZmRheSkgMylcbiAgOztcblxuICBsZXQgb2ZfZmlsZW5hbWVfc3RyaW5nIHMgfnpvbmUgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246J18nIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcIm5vIHNwYWNlIGluIGZpbGVuYW1lIHN0cmluZ1wiXG4gICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IFN0cmluZy50ciB+dGFyZ2V0OictJyB+cmVwbGFjZW1lbnQ6JzonIG9mZGF5IGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgICBvZl9kYXRlX29mZGF5IGRhdGUgb2ZkYXkgfnpvbmVcbiAgICB3aXRoXG4gICAgfCBleG4gLT4gaW52YWxpZF9hcmdmIFwiVGltZS5vZl9maWxlbmFtZV9zdHJpbmcgKCVzKTogJXNcIiBzIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgOztcblxuICBsZXQgb2ZfbG9jYWxpemVkX3N0cmluZyB+em9uZSBzdHIgPVxuICAgIHRyeVxuICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgc3RyIH5vbjonICcgd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIChzcHJpbnRmIFwibm8gc3BhY2UgaW4gZGF0ZV9vZmRheSBzdHJpbmc6ICVzXCIgc3RyKVxuICAgICAgfCBTb21lIChkYXRlLCB0aW1lKSAtPlxuICAgICAgICBsZXQgZGF0ZSA9IERhdGUwLm9mX3N0cmluZyBkYXRlIGluXG4gICAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyB0aW1lIGluXG4gICAgICAgIG9mX2RhdGVfb2ZkYXkgfnpvbmUgZGF0ZSBvZmRheVxuICAgIHdpdGhcbiAgICB8IGUgLT4gRXhuLnJlcmFpc2UgZSBcIlRpbWUub2ZfbG9jYWxpemVkX3N0cmluZ1wiXG4gIDs7XG5cbiAgbGV0IG9jY3VycmVuY2UgYmVmb3JlX29yX2FmdGVyIHQgfm9mZGF5IH56b25lID1cbiAgICBsZXQgZmlyc3RfZ3Vlc3NfZGF0ZSA9IHRvX2RhdGUgdCB+em9uZSBpblxuICAgIGxldCBmaXJzdF9ndWVzcyA9IG9mX2RhdGVfb2ZkYXkgfnpvbmUgZmlyc3RfZ3Vlc3NfZGF0ZSBvZmRheSBpblxuICAgIGxldCBjbXAsIGluY3JlbWVudCA9XG4gICAgICBtYXRjaCBiZWZvcmVfb3JfYWZ0ZXIgd2l0aFxuICAgICAgfCBgTGFzdF9iZWZvcmVfb3JfYXQgLT4gKCA8PSApLCAtMVxuICAgICAgfCBgRmlyc3RfYWZ0ZXJfb3JfYXQgLT4gKCA+PSApLCAxXG4gICAgaW5cbiAgICBpZiBjbXAgZmlyc3RfZ3Vlc3MgdFxuICAgIHRoZW4gZmlyc3RfZ3Vlc3NcbiAgICBlbHNlIG9mX2RhdGVfb2ZkYXkgfnpvbmUgKERhdGUwLmFkZF9kYXlzIGZpcnN0X2d1ZXNzX2RhdGUgaW5jcmVtZW50KSBvZmRheVxuICA7O1xuXG4gIGxldCBlbnN1cmVfY29sb25faW5fb2Zmc2V0IG9mZnNldCA9XG4gICAgbGV0IG9mZnNldF9sZW5ndGggPSBTdHJpbmcubGVuZ3RoIG9mZnNldCBpblxuICAgIGlmIEludC4oIDw9ICkgb2Zmc2V0X2xlbmd0aCAyXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuWzBdXG4gICAgJiYgQ2hhci5pc19kaWdpdCBvZmZzZXQuW29mZnNldF9sZW5ndGggLSAxXVxuICAgIHRoZW4gb2Zmc2V0IF4gXCI6MDBcIlxuICAgIGVsc2UgaWYgQ2hhci4oID0gKSBvZmZzZXQuWzFdICc6JyB8fCBDaGFyLiggPSApIG9mZnNldC5bMl0gJzonXG4gICAgdGhlbiBvZmZzZXRcbiAgICBlbHNlIGlmIEludC4oIDwgKSBvZmZzZXRfbGVuZ3RoIDMgfHwgSW50LiggPiApIG9mZnNldF9sZW5ndGggNFxuICAgIHRoZW4gZmFpbHdpdGhmIFwiaW52YWxpZCBvZmZzZXQgJXNcIiBvZmZzZXQgKClcbiAgICBlbHNlXG4gICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgIFsgU3RyaW5nLnNsaWNlIG9mZnNldCAwIChvZmZzZXRfbGVuZ3RoIC0gMilcbiAgICAgICAgOyBcIjpcIlxuICAgICAgICA7IFN0cmluZy5zbGljZSBvZmZzZXQgKG9mZnNldF9sZW5ndGggLSAyKSBvZmZzZXRfbGVuZ3RoXG4gICAgICAgIF1cbiAgOztcblxuICBleGNlcHRpb24gVGltZV9uc19vZl9zdHJpbmcgb2Ygc3RyaW5nICogRXhuLnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICBsZXQgb2Zfc3RyaW5nX2dlbiB+ZGVmYXVsdF96b25lIH5maW5kX3pvbmUgcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgZGF0ZSwgb2ZkYXksIHR6ID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnNwbGl0IHMgfm9uOicgJyB3aXRoXG4gICAgICAgIHwgWyBkYXk7IG1vbnRoOyB5ZWFyOyBvZmRheSBdIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCBbIGRheTsgXCIgXCI7IG1vbnRoOyBcIiBcIjsgeWVhciBdLCBvZmRheSwgTm9uZVxuICAgICAgICB8IFsgZGF0ZTsgb2ZkYXk7IHR6IF0gLT4gZGF0ZSwgb2ZkYXksIFNvbWUgdHpcbiAgICAgICAgfCBbIGRhdGU7IG9mZGF5IF0gLT4gZGF0ZSwgb2ZkYXksIE5vbmVcbiAgICAgICAgfCBbIHMgXSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcucnNwbGl0MiB+b246J1QnIHMgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKGRhdGUsIG9mZGF5KSAtPiBkYXRlLCBvZmRheSwgTm9uZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJubyBzcGFjZXMgb3IgVCBmb3VuZFwiKVxuICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJ0b28gbWFueSBzcGFjZXNcIlxuICAgICAgaW5cbiAgICAgIGxldCBvZmRheV90b19zZWMgb2QgPSBTcGFuLnRvX3NlYyAoT2ZkYXkudG9fc3Bhbl9zaW5jZV9zdGFydF9vZl9kYXkgb2QpIGluXG4gICAgICBsZXQgb2ZkYXksIHV0Y19vZmZzZXQgPVxuICAgICAgICBtYXRjaCB0eiB3aXRoXG4gICAgICAgIHwgU29tZSBfIC0+IG9mZGF5LCBOb25lXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIENoYXIuKCA9ICkgb2ZkYXkuW1N0cmluZy5sZW5ndGggb2ZkYXkgLSAxXSAnWidcbiAgICAgICAgICB0aGVuIFN0cmluZy5zdWIgb2ZkYXkgfnBvczowIH5sZW46KFN0cmluZy5sZW5ndGggb2ZkYXkgLSAxKSwgU29tZSAwLlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOicrJyBvZmRheSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgIGwsIFNvbWUgKG9mZGF5X3RvX3NlYyAoT2ZkYXkub2Zfc3RyaW5nIChlbnN1cmVfY29sb25faW5fb2Zmc2V0IHIpKSlcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxzcGxpdDIgfm9uOictJyBvZmRheSB3aXRoXG4gICAgICAgICAgICAgICB8IFNvbWUgKGwsIHIpIC0+XG4gICAgICAgICAgICAgICAgIGwsIFNvbWUgKC0xLiAqLiBvZmRheV90b19zZWMgKE9mZGF5Lm9mX3N0cmluZyAoZW5zdXJlX2NvbG9uX2luX29mZnNldCByKSkpXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gb2ZkYXksIE5vbmUpKVxuICAgICAgaW5cbiAgICAgIGxldCBkYXRlID0gRGF0ZTAub2Zfc3RyaW5nIGRhdGUgaW5cbiAgICAgIGxldCBvZmRheSA9IE9mZGF5Lm9mX3N0cmluZyBvZmRheSBpblxuICAgICAgbWF0Y2ggdHogd2l0aFxuICAgICAgfCBTb21lIHR6IC0+IG9mX2RhdGVfb2ZkYXkgfnpvbmU6KGZpbmRfem9uZSB0eikgZGF0ZSBvZmRheVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCB1dGNfb2Zmc2V0IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgem9uZSA9IGRlZmF1bHRfem9uZSAoKSBpblxuICAgICAgICAgICBvZl9kYXRlX29mZGF5IH56b25lIGRhdGUgb2ZkYXlcbiAgICAgICAgIHwgU29tZSB1dGNfb2Zmc2V0IC0+XG4gICAgICAgICAgIGxldCB1dGNfdCA9IG9mX2RhdGVfb2ZkYXkgfnpvbmU6Wm9uZS51dGMgZGF0ZSBvZmRheSBpblxuICAgICAgICAgICBzdWIgdXRjX3QgKFNwYW4ub2Zfc2VjIHV0Y19vZmZzZXQpKVxuICAgIHdpdGhcbiAgICB8IGUgLT4gcmFpc2UgKFRpbWVfbnNfb2Zfc3RyaW5nIChzLCBlKSlcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldCBzID1cbiAgICBsZXQgZGVmYXVsdF96b25lICgpID0gcmFpc2VfcyBbJW1lc3NhZ2UgXCJ0aW1lIGhhcyBubyB0aW1lIHpvbmUgb3IgVVRDIG9mZnNldFwiIHNdIGluXG4gICAgbGV0IGZpbmRfem9uZSB6b25lX25hbWUgPVxuICAgICAgZmFpbHdpdGhmIFwidW5hYmxlIHRvIGxvb2t1cCBab25lICVzLiAgVHJ5IHVzaW5nIENvcmUuVGltZS5vZl9zdHJpbmdcIiB6b25lX25hbWUgKClcbiAgICBpblxuICAgIG9mX3N0cmluZ19nZW4gfmRlZmF1bHRfem9uZSB+ZmluZF96b25lIHNcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nX3dpdGhfdXRjX29mZnNldFxuZW5kXG5cbmluY2x1ZGUgVG9fYW5kX29mX3N0cmluZ1xuXG5sZXQgbWluX3ZhbHVlX3JlcHJlc2VudGFibGUgPSBvZl9zcGFuX3NpbmNlX2Vwb2NoIFNwYW4ubWluX3ZhbHVlX3JlcHJlc2VudGFibGVcbmxldCBtYXhfdmFsdWVfcmVwcmVzZW50YWJsZSA9IG9mX3NwYW5fc2luY2VfZXBvY2ggU3Bhbi5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZVxuXG4oKiBMZWdhY3kgZGVmaW5pdGlvbnMgYmFzZWQgb24gcm91bmRpbmcgdG8gdGhlIG5lYXJlc3QgbWljcm9zZWNvbmQuICopXG5sZXQgbWluX3ZhbHVlID0gbWluX3ZhbHVlX2Zvcl8xdXNfcm91bmRpbmdcbmxldCBtYXhfdmFsdWUgPSBtYXhfdmFsdWVfZm9yXzF1c19yb3VuZGluZ1xubGV0IHRvX3RpbWUgPSB0b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbmxldCBvZl90aW1lID0gb2ZfdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0X21pY3Jvc2Vjb25kXG5cbm1vZHVsZSBfID0gc3RydWN0XG4gIG9wZW4gUHB4X21vZHVsZV90aW1lcl9ydW50aW1lXG5cbiAgbGV0ICgpID1cbiAgICBEdXJhdGlvbi5mb3JtYXRcbiAgICA6PSAobW9kdWxlIHN0cnVjdFxuICAgICAgbGV0IGR1cmF0aW9uX29mX3NwYW4gcyA9IHMgfD4gU3Bhbi50b19pbnQ2M19ucyB8PiBEdXJhdGlvbi5vZl9uYW5vc2Vjb25kc1xuICAgICAgbGV0IHNwYW5fb2ZfZHVyYXRpb24gZCA9IGQgfD4gRHVyYXRpb24udG9fbmFub3NlY29uZHMgfD4gU3Bhbi5vZl9pbnQ2M19uc1xuICAgICAgbGV0IG9mX3N0cmluZyBzdHJpbmcgPSBzdHJpbmcgfD4gU3Bhbi5vZl9zdHJpbmcgfD4gZHVyYXRpb25fb2Zfc3BhblxuXG4gICAgICBsZXQgdG9fc3RyaW5nX3dpdGhfc2FtZV91bml0IGR1cmF0aW9ucyA9XG4gICAgICAgIGxldCBzcGFucyA9IGR1cmF0aW9ucyB8PiBMaXN0Lm1hcCB+ZjpzcGFuX29mX2R1cmF0aW9uIGluXG4gICAgICAgIGxldCB1bml0X29mX3RpbWUgPVxuICAgICAgICAgIHNwYW5zXG4gICAgICAgICAgfD4gTGlzdC5tYXhfZWx0IH5jb21wYXJlOlNwYW4uY29tcGFyZVxuICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgICAgICAgIH5mOlNwYW4udG9fdW5pdF9vZl90aW1lXG4gICAgICAgICAgICAgICB+ZGVmYXVsdDpVbml0X29mX3RpbWUuTmFub3NlY29uZFxuICAgICAgICBpblxuICAgICAgICBzcGFucyB8PiBMaXN0Lm1hcCB+ZjooU3Bhbi50b19zdHJpbmdfaHVtIH51bml0X29mX3RpbWUgfmFsaWduX2RlY2ltYWw6dHJ1ZSlcbiAgICAgIDs7XG4gICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBIYXNoX3F1ZXVlID0gc3RydWN0IGVuZFxubW9kdWxlIEhhc2hfc2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIE1hcCA9IHN0cnVjdCBlbmRcbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3QgZW5kXG5tb2R1bGUgU2V0ID0gc3RydWN0IGVuZFxubW9kdWxlIFRhYmxlID0gc3RydWN0IGVuZFxubW9kdWxlIFpvbmUgPSBzdHJ1Y3QgZW5kXG5cbmxldCBhcmdfdHlwZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgY29tcGFyYXRvciA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgZ2V0X3NleHBfem9uZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgaW50ZXJydXB0aWJsZV9wYXVzZSA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2ZfZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgb2Zfc3RyaW5nX2ZpeF9wcm90byA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgcGF1c2UgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBhdXNlX2ZvcmV2ZXIgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHBwID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXRfc2V4cF96b25lID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCBzZXhwX29mX3QgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHNleHBfb2ZfdF9hYnMgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRfb2Zfc2V4cCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdF9vZl9zZXhwX2FicyA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fZGF0ZV9vZmRheV96b25lZCA9IGBVc2VfVGltZV9uc191bml4XG5sZXQgdG9fb2ZkYXlfem9uZWQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHRvX3N0cmluZ19maXhfcHJvdG8gPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX2JvdW5kID0gYFVzZV9UaW1lX25zX3VuaXhcbmxldCB2YWxpZGF0ZV9sYm91bmQgPSBgVXNlX1RpbWVfbnNfdW5peFxubGV0IHZhbGlkYXRlX3Vib3VuZCA9IGBVc2VfVGltZV9uc191bml4XG4iLCIoKiBBIHN1YnN0cmluZyBpcyBhIGNvbnRpZ3VvdXMgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBpbiBhIHN0cmluZy4gIFdlIHVzZSBhXG4gICBmdW5jdG9yIGJlY2F1c2Ugd2Ugd2FudCBzdWJzdHJpbmdzIG9mIFtzdHJpbmddIGFuZCBbYmlnc3RyaW5nXS5cbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmdfaW50ZlxuXG50eXBlIGJpZ3N0cmluZyA9IEJpZ3N0cmluZy50XG5cbm1vZHVsZSBCbGl0ID0gc3RydWN0XG4gIHR5cGUgKCdzcmMsICdkc3QpIHQgPSAoJ3NyYywgJ2RzdCkgQmxpdC5ibGl0b1xuXG4gIGxldCBzdHJpbmdfYnl0ZXMgfnNyYyA/c3JjX3BvcyA/c3JjX2xlbiB+ZHN0ID8oZHN0X3BvcyA9IDApICgpID1cbiAgICBsZXQgc3JjX3BvcywgbGVuID1cbiAgICAgIE9yZGVyZWRfY29sbGVjdGlvbl9jb21tb24uZ2V0X3Bvc19sZW5fZXhuXG4gICAgICAgICgpXG4gICAgICAgID9wb3M6c3JjX3Bvc1xuICAgICAgICA/bGVuOnNyY19sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooU3RyaW5nLmxlbmd0aCBzcmMpXG4gICAgaW5cbiAgICBCeXRlcy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0IH5kc3RfcG9zXG4gIDs7XG5cbiAgbGV0IHN0cmluZ19zdHJpbmcgPSBzdHJpbmdfYnl0ZXNcbiAgbGV0IGJ5dGVzX2J5dGVzID0gQnl0ZXMuYmxpdG9cbiAgbGV0IHN0cmluZ19iaWdzdHJpbmcgPSBCaWdzdHJpbmcuRnJvbV9zdHJpbmcuYmxpdG9cbiAgbGV0IGJ5dGVzX2JpZ3N0cmluZyA9IEJpZ3N0cmluZy5Gcm9tX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYmlnc3RyaW5nID0gQmlnc3RyaW5nLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfc3RyaW5nID0gQmlnc3RyaW5nLlRvX2J5dGVzLmJsaXRvXG4gIGxldCBiaWdzdHJpbmdfYnl0ZXMgPSBCaWdzdHJpbmcuVG9fYnl0ZXMuYmxpdG9cbmVuZFxuXG4oKiBXZSBjYW4ndCBjYWxsIHRoZSBiYXNlIG1vZHVsZSBbQmFzZV0gYmVjYXVzZSBbQEBkZXJpdmluZyBxdWlja2NoZWNrXSB3YW50cyB0byBhY2Nlc3NcbiAgIHRoZSBbQmFzZV0gbGlicmFyeSBkaXJlY3RseSwgYW5kIHdlJ2QgYmUgc2hhZG93aW5nIGl0LiAqKVxubW9kdWxlIEYgKFVuZGVybHlpbmcgOiBCYXNlKSA6IFMgd2l0aCB0eXBlIGJhc2UgPSBVbmRlcmx5aW5nLnQgPSBzdHJ1Y3RcbiAgdHlwZSBiYXNlID0gVW5kZXJseWluZy50XG5cbiAgdHlwZSB0ID1cbiAgICB7IGJhc2UgOiBVbmRlcmx5aW5nLnRcbiAgICA7IHBvcyA6IGludFxuICAgIDsgbGVuIDogaW50XG4gICAgfVxuICBbQEBkZXJpdmluZyBxdWlja2NoZWNrXVxuXG4gICgqIG5vdGUgd2Ugb3ZlcnJpZGUgdGhlIGdlbmVyYXRlZCBbcXVpY2tjaGVja19nZW5lcmF0b3JdIGJlbG93LCBvbmNlIHdlJ3ZlIGRlZmluZWRcbiAgICAgW2NyZWF0ZV0gKilcblxuICAoKiB7W1xuICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICBhc3NlcnQgKDAgPD0gdC5wb3MpO1xuICAgICAgICAgYXNzZXJ0ICgwIDw9IHQubGVuKTtcbiAgICAgICAgIGFzc2VydCAodC5wb3MgKyB0LmxlbiA8PSBCYXNlLmxlbmd0aCB0LmJhc2UpO1xuICAgICAgIDs7IF19ICopXG5cbiAgbGV0IGJhc2UgdCA9IHQuYmFzZVxuICBsZXQgcG9zIHQgPSB0LnBvc1xuICBsZXQgbGVuZ3RoIHQgPSB0LmxlblxuICBsZXQgaXNfZW1wdHkgdCA9IEludC5lcXVhbCB0LmxlbiAwXG5cbiAgbGV0IGJhc2Vfb2Zfc3RyaW5nIHMgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYnVmID0gVW5kZXJseWluZy5jcmVhdGUgbGVuIGluXG4gICAgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nIH5zcmM6cyB+ZHN0OmJ1ZiAoKTtcbiAgICBidWZcbiAgOztcblxuICBsZXQgYmFzZV9vZl9iaWdzdHJpbmcgcyA9XG4gICAgbGV0IGxlbiA9IEJpZ3N0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCBidWYgPSBVbmRlcmx5aW5nLmNyZWF0ZSBsZW4gaW5cbiAgICBVbmRlcmx5aW5nLmJsaXRfZnJvbV9iaWdzdHJpbmcgfnNyYzpzIH5kc3Q6YnVmICgpO1xuICAgIGJ1ZlxuICA7O1xuXG4gIGxldCBjcmVhdGUgP3BvcyA/bGVuIGJhc2UgPVxuICAgIGxldCBwb3MsIGxlbiA9XG4gICAgICBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uLmdldF9wb3NfbGVuX2V4blxuICAgICAgICAoKVxuICAgICAgICA/cG9zXG4gICAgICAgID9sZW5cbiAgICAgICAgfnRvdGFsX2xlbmd0aDooVW5kZXJseWluZy5sZW5ndGggYmFzZSlcbiAgICBpblxuICAgIHsgYmFzZTsgcG9zOyBsZW4gfVxuICA7O1xuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgbGV0IG9wZW4gUXVpY2tjaGVjay5MZXRfc3ludGF4IGluXG4gICAgbGV0JWJpbmQgYmFzZSA9IFVuZGVybHlpbmcucXVpY2tjaGVja19nZW5lcmF0b3IgaW5cbiAgICBsZXQgYmFzZV9sZW4gPSBVbmRlcmx5aW5nLmxlbmd0aCBiYXNlIGluXG4gICAgbGV0JWJpbmQgbGVuID0gSW50Lmdlbl91bmlmb3JtX2luY2wgMCBiYXNlX2xlbiBpblxuICAgIGxldCViaW5kIHBvcyA9IEludC5nZW5fdW5pZm9ybV9pbmNsIDAgKGJhc2VfbGVuIC0gbGVuKSBpblxuICAgIHJldHVybiAoY3JlYXRlIH5wb3MgfmxlbiBiYXNlKVxuICA7O1xuXG4gIGxldCBnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSA9IFVuZGVybHlpbmcuZ2V0IChiYXNlIHQpIChwb3MgdCArIGkpXG5cbiAgbGV0IGdldCB0IGkgPVxuICAgIGlmIGkgPj0gMCAmJiBpIDwgbGVuZ3RoIHRcbiAgICB0aGVuIGdldF9ub19ib3VuZHNfY2hlY2sgdCBpXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcImluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgOztcblxuICBsZXQgc3ViID9wb3MgP2xlbiB0ID1cbiAgICBsZXQgcG9zLCBsZW4gPVxuICAgICAgT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vbi5nZXRfcG9zX2xlbl9leG4gKCkgP3BvcyA/bGVuIH50b3RhbF9sZW5ndGg6KGxlbmd0aCB0KVxuICAgIGluXG4gICAgeyBiYXNlID0gdC5iYXNlOyBwb3MgPSB0LnBvcyArIHBvczsgbGVuIH1cbiAgOztcblxuICBtb2R1bGUgTWFrZV9hcmcgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgbW9kdWxlIEVsdCA9IENoYXJcblxuICAgIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgICAgbGV0IHJlYyBnbyBhY2MgaSA9IGlmIGkgPj0gbGVuZ3RoIHQgdGhlbiBhY2MgZWxzZSBnbyAoZiBhY2MgKGdldCB0IGkpKSAoaSArIDEpIGluXG4gICAgICBnbyBpbml0IDBcbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgYEN1c3RvbVxuICAgICAgICAoZnVuIHQgfmYgLT5cbiAgICAgICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgICAgICAgICAgIGYgKGdldCB0IGkpXG4gICAgICAgICAgIGRvbmUpXG4gICAgOztcblxuICAgIGxldCBmb2xkaSA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+aW5pdCB+ZiAtPlxuICAgICAgICAgICBsZXQgcmVjIGdvIGFjYyBpID1cbiAgICAgICAgICAgICBpZiBpID49IGxlbmd0aCB0IHRoZW4gYWNjIGVsc2UgZ28gKGYgaSBhY2MgKGdldF9ub19ib3VuZHNfY2hlY2sgdCBpKSkgKGkgKyAxKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBnbyBpbml0IDApXG4gICAgOztcblxuICAgIGxldCBpdGVyaSA9XG4gICAgICBgQ3VzdG9tXG4gICAgICAgIChmdW4gdCB+ZiAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHQgLSAxIGRvXG4gICAgICAgICAgICAgZiBpIChnZXRfbm9fYm91bmRzX2NoZWNrIHQgaSlcbiAgICAgICAgICAgZG9uZSlcbiAgICA7O1xuXG4gICAgbGV0IGxlbmd0aCA9IGBDdXN0b20gbGVuZ3RoXG4gIGVuZFxuXG4gIG1vZHVsZSBDID0gSW5kZXhlZF9jb250YWluZXIuTWFrZTAgKE1ha2VfYXJnKVxuXG4gIGxldCBmb2xkID0gQy5mb2xkXG4gIGxldCBpdGVyID0gQy5pdGVyXG4gIGxldCBmb2xkX3Jlc3VsdCA9IEMuZm9sZF9yZXN1bHRcbiAgbGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxuICAoKiBbQy50b19saXN0XSBoYXMgdG8gY29uc3RydWN0IHRoZW4gcmV2ZXJzZSB0aGUgbGlzdCAqKVxuICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5pbml0IChsZW5ndGggdCkgfmY6KGdldCB0KVxuICBsZXQgdG9fYXJyYXkgPSBDLnRvX2FycmF5XG4gIGxldCBmaW5kX21hcCA9IEMuZmluZF9tYXBcbiAgbGV0IGZpbmQgPSBDLmZpbmRcbiAgbGV0IGV4aXN0cyA9IEMuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG4gIGxldCBtZW0gPSBDLm1lbVxuICBsZXQgY291bnQgPSBDLmNvdW50XG4gIGxldCBzdW0gPSBDLnN1bVxuICBsZXQgbWluX2VsdCA9IEMubWluX2VsdFxuICBsZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxuICBsZXQgZm9sZGkgPSBDLmZvbGRpXG4gIGxldCBpdGVyaSA9IEMuaXRlcmlcbiAgbGV0IGV4aXN0c2kgPSBDLmV4aXN0c2lcbiAgbGV0IGZvcl9hbGxpID0gQy5mb3JfYWxsaVxuICBsZXQgY291bnRpID0gQy5jb3VudGlcbiAgbGV0IGZpbmRpID0gQy5maW5kaVxuICBsZXQgZmluZF9tYXBpID0gQy5maW5kX21hcGlcblxuICBsZXQgd3JhcF9zdWJfbiB0IG4gfm5hbWUgfnBvcyB+bGVuIH5vbl9lcnJvciA9XG4gICAgaWYgbiA8IDBcbiAgICB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyAobmFtZSBeIFwiIGV4cGVjdGluZyBub25uZWdhdGl2ZSBhcmd1bWVudFwiKVxuICAgIGVsc2UgKFxuICAgICAgdHJ5IHN1YiB0IH5wb3MgfmxlbiB3aXRoXG4gICAgICB8IF8gLT4gb25fZXJyb3IpXG4gIDs7XG5cbiAgbGV0IGRyb3BfcHJlZml4IHQgbiA9XG4gICAgd3JhcF9zdWJfblxuICAgICAgfm5hbWU6XCJkcm9wX3ByZWZpeFwiXG4gICAgICB0XG4gICAgICBuXG4gICAgICB+cG9zOm5cbiAgICAgIH5sZW46KGxlbmd0aCB0IC0gbilcbiAgICAgIH5vbl9lcnJvcjp7IHQgd2l0aCBsZW4gPSAwIH1cbiAgOztcblxuICBsZXQgZHJvcF9zdWZmaXggdCBuID1cbiAgICB3cmFwX3N1Yl9uXG4gICAgICB+bmFtZTpcImRyb3Bfc3VmZml4XCJcbiAgICAgIHRcbiAgICAgIG5cbiAgICAgIH5wb3M6MFxuICAgICAgfmxlbjoobGVuZ3RoIHQgLSBuKVxuICAgICAgfm9uX2Vycm9yOnsgdCB3aXRoIGxlbiA9IDAgfVxuICA7O1xuXG4gIGxldCBwcmVmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInByZWZpeFwiIHQgbiB+cG9zOjAgfmxlbjpuIH5vbl9lcnJvcjp0XG4gIGxldCBzdWZmaXggdCBuID0gd3JhcF9zdWJfbiB+bmFtZTpcInN1ZmZpeFwiIHQgbiB+cG9zOihsZW5ndGggdCAtIG4pIH5sZW46biB+b25fZXJyb3I6dFxuXG4gIGxldCBibGl0X3RvICh0eXBlIGEpIChibGl0IDogKFVuZGVybHlpbmcudCwgYSkgQmxpdC50KSB0IH5kc3QgfmRzdF9wb3MgPVxuICAgIGJsaXQgfnNyYzp0LmJhc2UgfnNyY19wb3M6dC5wb3MgfnNyY19sZW46dC5sZW4gfmRzdCB+ZHN0X3BvcyAoKVxuICA7O1xuXG4gIGxldCBibGl0X3RvX3N0cmluZyA9IGJsaXRfdG8gVW5kZXJseWluZy5ibGl0X3RvX2J5dGVzXG4gIGxldCBibGl0X3RvX2J5dGVzID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXNcbiAgbGV0IGJsaXRfdG9fYmlnc3RyaW5nID0gYmxpdF90byBVbmRlcmx5aW5nLmJsaXRfdG9fYmlnc3RyaW5nXG4gIGxldCBibGl0X2Jhc2UgPSBibGl0X3RvIFVuZGVybHlpbmcuYmxpdFxuXG4gIGxldCBibGl0X2Zyb20gfm5hbWUgKHR5cGUgYSkgKGJsaXQgOiAoYSwgYmFzZSkgQmxpdC50KSB0IH5zcmMgfnNyY19wb3MgfmxlbiA9XG4gICAgaWYgbGVuID4gdC5sZW5cbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aGZcbiAgICAgICAgXCJTdWJzdHJpbmcuYmxpdF9mcm9tXyVzIGxlbiA+IHN1YnN0cmluZyBsZW5ndGggOiAlZCA+ICVkXCJcbiAgICAgICAgbmFtZVxuICAgICAgICBsZW5cbiAgICAgICAgdC5sZW5cbiAgICAgICAgKCk7XG4gICAgYmxpdCB+c3JjIH5zcmNfcG9zIH5zcmNfbGVuOmxlbiB+ZHN0OnQuYmFzZSB+ZHN0X3Bvczp0LnBvcyAoKVxuICA7O1xuXG4gIGxldCBibGl0X2Zyb21fc3RyaW5nID0gYmxpdF9mcm9tIH5uYW1lOlwic3RyaW5nXCIgVW5kZXJseWluZy5ibGl0X2Zyb21fc3RyaW5nXG4gIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gYmxpdF9mcm9tIH5uYW1lOlwiYmlnc3RyaW5nXCIgVW5kZXJseWluZy5ibGl0X2Zyb21fYmlnc3RyaW5nXG4gIGxldCBvZl9iYXNlIGJhc2UgPSB7IGJhc2U7IHBvcyA9IDA7IGxlbiA9IFVuZGVybHlpbmcubGVuZ3RoIGJhc2UgfVxuICBsZXQgb2Zfc3RyaW5nIHggPSBvZl9iYXNlIChiYXNlX29mX3N0cmluZyB4KVxuICBsZXQgb2ZfYmlnc3RyaW5nIHggPSBvZl9iYXNlIChiYXNlX29mX2JpZ3N0cmluZyB4KVxuXG4gIGxldCBtYWtlICh0eXBlIGEpIGNyZWF0ZSAoYmxpdCA6IChiYXNlLCBhKSBCbGl0LnQpIHQgPVxuICAgIGxldCBkc3QgPSBjcmVhdGUgdC5sZW4gaW5cbiAgICBibGl0IH5zcmM6dC5iYXNlIH5zcmNfcG9zOnQucG9zIH5zcmNfbGVuOnQubGVuIH5kc3QgfmRzdF9wb3M6MCAoKTtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgdG9fc3RyaW5nIHggPVxuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICAgIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihtYWtlIEJ5dGVzLmNyZWF0ZSBVbmRlcmx5aW5nLmJsaXRfdG9fYnl0ZXMgeClcbiAgOztcblxuICBsZXQgdG9fYmlnc3RyaW5nID0gbWFrZSBCaWdzdHJpbmcuY3JlYXRlIFVuZGVybHlpbmcuYmxpdF90b19iaWdzdHJpbmdcblxuICBsZXQgY29uY2F0X2dlbiBjcmVhdGVfZHN0IGJsaXRfZHN0IHRzID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkIHRzIH5pbml0OjAgfmY6KGZ1biBsZW4gdCAtPiBsZW4gKyBsZW5ndGggdCkgaW5cbiAgICBsZXQgZHN0ID0gY3JlYXRlX2RzdCBsZW4gaW5cbiAgICBpZ25vcmVcbiAgICAgIChMaXN0LmZvbGQgdHMgfmluaXQ6MCB+ZjooZnVuIGRzdF9wb3MgdCAtPlxuICAgICAgICAgYmxpdF9kc3QgdCB+ZHN0IH5kc3RfcG9zO1xuICAgICAgICAgZHN0X3BvcyArIGxlbmd0aCB0KVxuICAgICAgIDogaW50KTtcbiAgICBkc3RcbiAgOztcblxuICBsZXQgY29uY2F0IHRzID0gb2ZfYmFzZSAoY29uY2F0X2dlbiBVbmRlcmx5aW5nLmNyZWF0ZSBibGl0X2Jhc2UgdHMpXG5cbiAgbGV0IGNvbmNhdF9zdHJpbmcgdHMgPVxuICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmdcbiAgICAgIH5ub19tdXRhdGlvbl93aGlsZV9zdHJpbmdfcmVhY2hhYmxlOihjb25jYXRfZ2VuIEJ5dGVzLmNyZWF0ZSBibGl0X3RvX3N0cmluZyB0cylcbiAgOztcblxuICBsZXQgY29uY2F0X2JpZ3N0cmluZyB0cyA9IGNvbmNhdF9nZW4gQmlnc3RyaW5nLmNyZWF0ZSBibGl0X3RvX2JpZ3N0cmluZyB0c1xuZW5kXG4iLCJvcGVuISBJbXBvcnRcblxubW9kdWxlIHR5cGUgUyA9IE1ha2Vfc3Vic3RyaW5nLlNcblxuaW5jbHVkZSBNYWtlX3N1YnN0cmluZy5GIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBCeXRlcy50IFtAQGRlcml2aW5nIHF1aWNrY2hlY2tdXG5cbiAgICBsZXQgY3JlYXRlID0gQnl0ZXMuY3JlYXRlXG4gICAgbGV0IGxlbmd0aCA9IEJ5dGVzLmxlbmd0aFxuICAgIGxldCBnZXQgPSBCeXRlcy5nZXRcblxuICAgIG1vZHVsZSBCbGl0ID0gTWFrZV9zdWJzdHJpbmcuQmxpdFxuXG4gICAgbGV0IGJsaXQgPSBCbGl0LmJ5dGVzX2J5dGVzXG4gICAgbGV0IGJsaXRfdG9fc3RyaW5nID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX2J5dGVzID0gQmxpdC5ieXRlc19ieXRlc1xuICAgIGxldCBibGl0X3RvX2JpZ3N0cmluZyA9IEJsaXQuYnl0ZXNfYmlnc3RyaW5nXG4gICAgbGV0IGJsaXRfZnJvbV9zdHJpbmcgPSBCbGl0LnN0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIENhbWwuQXJnXG5cbnR5cGUgdCA9IGtleSAqIHNwZWMgKiBkb2NcblxubGV0IHNvcnRfYW5kX2FsaWduIGxzdCA9XG4gIGFsaWduIChCYXNlLkxpc3Quc29ydCBsc3QgfmNvbXBhcmU6KGZ1biAoYSwgXywgXykgKGIsIF8sIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikpXG47O1xuIiwidHlwZSB0ID1cbiAgfCBDT01NQU5EX09VVFBVVF9JTlNUQUxMQVRJT05fQkFTSFxuICB8IENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuICB8IENPTVBfQ1dPUkRcbltAQGRlcml2aW5nIGNvbXBhcmUsIGVudW1lcmF0ZSwgc2V4cF9vZl1cblxubGV0IHRvX3N0cmluZyB0ID0gU2V4cC50b19zdHJpbmcgKHNleHBfb2ZfdCB0KVxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIChcbiAgICAgIFN0cmluZyA6XG4gICAgICBzaWdcbiAgICAgICAgdHlwZSB0ID0gc3RyaW5nIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgc2V4cF1cblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQ29tcGFyYWJsZS5TdGFibGUuVjEuU1xuICAgICAgICAgIHdpdGggdHlwZSBjb21wYXJhYmxlIDo9IHRcbiAgICAgICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLlN0YWJsZS5WMS5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICB2YWwgY29tcGFyYXRvciA6ICh0LCBjb21wYXJhdG9yX3dpdG5lc3MpIENvbXBhcmF0b3IudFxuXG4gICAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLlMgd2l0aCB0eXBlIGtleSA6PSB0XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbmluY2x1ZGUgKFxuICBTdHJpbmcgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBzdHJpbmcgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgaW5jbHVkZVxuICAgICAgQ29tcGFyYWJsZS5TXG4gICAgICB3aXRoIHR5cGUgdCA6PSB0XG4gICAgICB3aXRoIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RyaW5nLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgdmFsIGNvbXBhcmF0b3IgOiAodCwgY29tcGFyYXRvcl93aXRuZXNzKSBDb21wYXJhdG9yLnRcblxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgb3BlbiBDYW1sLkZpbGVuYW1lXG5cbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IGNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9leHRlbnNpb24gPSBjaG9wX2V4dGVuc2lvblxuICBsZXQgY2hvcF9zdWZmaXggPSBjaG9wX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gY2hvcF9zdWZmaXhfb3B0XG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gY3VycmVudF9kaXJfbmFtZVxuICBsZXQgaXNfaW1wbGljaXQgPSBpc19pbXBsaWNpdFxuICBsZXQgaXNfcmVsYXRpdmUgPSBpc19yZWxhdGl2ZVxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gcGFyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJfc2VwID0gZGlyX3NlcFxuICBsZXQgcXVvdGUgPSBxdW90ZVxuICBsZXQgdGVtcF9kaXJfbmFtZSA9IGdldF90ZW1wX2Rpcl9uYW1lICgpXG4gIGxldCBkaXJuYW1lID0gZGlybmFtZVxuICBsZXQgYmFzZW5hbWUgPSBiYXNlbmFtZVxuZW5kXG5cbmxldCBpc19hYnNvbHV0ZSBwID0gbm90IChpc19yZWxhdGl2ZSBwKVxuXG5sZXQgY29uY2F0IHAxIHAyID1cbiAgaWYgU3RyaW5nLmlzX2VtcHR5IHAxXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUuY29uY2F0IGNhbGxlZCB3aXRoIGFuIGVtcHR5IHN0cmluZyBhcyBpdHMgZmlyc3QgYXJndW1lbnQgKHNlY29uZCBcXFxuICAgICAgIGFyZ3VtZW50OiAlcylcIlxuICAgICAgcDJcbiAgICAgICgpO1xuICBsZXQgcmVjIGNvbGxhcHNlX3RyYWlsaW5nIHMgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIHMgfm9uOicvJyB3aXRoXG4gICAgfCBTb21lIChcIlwiLCAoXCIuXCIgfCBcIlwiKSkgLT4gXCJcIlxuICAgIHwgU29tZSAocywgKFwiLlwiIHwgXCJcIikpIC0+IGNvbGxhcHNlX3RyYWlsaW5nIHNcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gc1xuICBpblxuICBsZXQgcmVjIGNvbGxhcHNlX2xlYWRpbmcgcyA9XG4gICAgbWF0Y2ggU3RyaW5nLmxzcGxpdDIgcyB+b246Jy8nIHdpdGhcbiAgICB8IFNvbWUgKChcIi5cIiB8IFwiXCIpLCBzKSAtPiBjb2xsYXBzZV9sZWFkaW5nIHNcbiAgICB8IFNvbWUgXyB8IE5vbmUgLT4gc1xuICBpblxuICBjb2xsYXBzZV90cmFpbGluZyBwMSBeIFwiL1wiIF4gY29sbGFwc2VfbGVhZGluZyBwMlxuOztcblxubGV0IHRvX2Fic29sdXRlX2V4biBwIH5yZWxhdGl2ZV90byA9XG4gIGlmIGlzX3JlbGF0aXZlIHJlbGF0aXZlX3RvXG4gIHRoZW5cbiAgICBmYWlsd2l0aGZcbiAgICAgIFwiRmlsZW5hbWUudG9fYWJzb2x1dGVfZXhuIGNhbGxlZCB3aXRoIGEgW3JlbGF0aXZlX3RvXSB0aGF0IGlzIGEgcmVsYXRpdmUgcGF0aDogJXNcIlxuICAgICAgcmVsYXRpdmVfdG9cbiAgICAgICgpXG4gIGVsc2UgaWYgaXNfYWJzb2x1dGUgcFxuICB0aGVuIHBcbiAgZWxzZSBjb25jYXQgcmVsYXRpdmVfdG8gcFxuOztcblxubGV0IHNwbGl0IHMgPSBkaXJuYW1lIHMsIGJhc2VuYW1lIHNcblxuKCogW21heF9wYXRobmFtZV9jb21wb25lbnRfc2l6ZV0gY29tZXMgZnJvbSBnZXRjb25mIF9QT1NJWF9OQU1FX01BWCAvICopXG5sZXQgbWF4X3BhdGhuYW1lX2NvbXBvbmVudF9zaXplID0gMjU1XG5cbmxldCBpc19wb3NpeF9wYXRobmFtZV9jb21wb25lbnQgcyA9XG4gIGxldCBtb2R1bGUgUyA9IFN0cmluZyBpblxuICBzIDw+IFwiLlwiXG4gICYmIHMgPD4gXCIuLlwiXG4gICYmIEludC4oMCA8IFMubGVuZ3RoIHMpXG4gICYmIEludC4oUy5sZW5ndGggcyA8PSBtYXhfcGF0aG5hbWVfY29tcG9uZW50X3NpemUpXG4gICYmIChub3QgKFMuY29udGFpbnMgcyAnLycpKVxuICAmJiBub3QgKFMuY29udGFpbnMgcyAnXFwwMDAnKVxuOztcblxubGV0IHJvb3QgPSBcIi9cIlxuXG5sZXQgc3BsaXRfZXh0ZW5zaW9uIGZuID1cbiAgbGV0IGRpciwgZm4gPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonLycgZm4gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lLCBmblxuICAgIHwgU29tZSAocGF0aCwgZm4pIC0+IFNvbWUgcGF0aCwgZm5cbiAgaW5cbiAgbGV0IGZuLCBleHQgPVxuICAgIG1hdGNoIFN0cmluZy5yc3BsaXQyIH5vbjonLicgZm4gd2l0aFxuICAgIHwgTm9uZSAtPiBmbiwgTm9uZVxuICAgIHwgU29tZSAoYmFzZV9mbiwgZXh0KSAtPiBiYXNlX2ZuLCBTb21lIGV4dFxuICBpblxuICBsZXQgZm4gPVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBOb25lIC0+IGZuXG4gICAgfCBTb21lIGRpciAtPiBkaXIgXiBcIi9cIiBeIGZuXG4gIGluXG4gIGZuLCBleHRcbjs7XG5cbmxldCBwYXJ0cyBmaWxlbmFtZSA9XG4gIGxldCByZWMgbG9vcCBhY2MgZmlsZW5hbWUgPVxuICAgIG1hdGNoIHNwbGl0IGZpbGVuYW1lIHdpdGhcbiAgICB8IChcIi5cIiBhcyBiYXNlKSwgXCIuXCIgLT4gYmFzZSA6OiBhY2NcbiAgICB8IChcIi9cIiBhcyBiYXNlKSwgXCIvXCIgLT4gYmFzZSA6OiBhY2NcbiAgICB8IHJlc3QsIGRpciAtPiBsb29wIChkaXIgOjogYWNjKSByZXN0XG4gIGluXG4gIGxvb3AgW10gZmlsZW5hbWVcbjs7XG5cbmxldCBvZl9wYXJ0cyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFpbHdpdGggXCJGaWxlbmFtZS5vZl9wYXJ0czogZW1wdHkgcGFydHMgbGlzdFwiXG4gIHwgcm9vdCA6OiByZXN0IC0+IExpc3QuZm9sZCByZXN0IH5pbml0OnJvb3QgfmY6Q2FtbC5GaWxlbmFtZS5jb25jYXRcbjs7XG5cbmxldCByZWMgc2tpcF9jb21tb25fcHJlZml4IGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgd2hlbiBTdHJpbmcuZXF1YWwgaDEgaDIgLT4gc2tpcF9jb21tb25fcHJlZml4IHQxIHQyXG4gIHwgXyAtPiBsMSwgbDJcbjs7XG5cbmxldCBvZl9hYnNvbHV0ZV9leG4gYSB+cmVsYXRpdmVfdG86YiA9XG4gIGlmIGlzX3JlbGF0aXZlIGFcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+Zmlyc3RfYXJnOihhIDogc3RyaW5nKV07XG4gIGlmIGlzX3JlbGF0aXZlIGJcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIkZpbGVuYW1lLm9mX2Fic29sdXRlX2V4bjogW35yZWxhdGl2ZV90b10gbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoXCJcbiAgICAgICAgICB+cmVsYXRpdmVfdG86KGIgOiBzdHJpbmcpXTtcbiAgbGV0IGFfcGFydHMgPSBwYXJ0cyBhIGluXG4gIGxldCBiX3BhcnRzID0gcGFydHMgYiBpblxuICBsZXQgYV9zdWZmaXgsIGJfc3VmZml4ID0gc2tpcF9jb21tb25fcHJlZml4IGFfcGFydHMgYl9wYXJ0cyBpblxuICBsZXQgZ29fdXAgPSBMaXN0Lm1hcCB+ZjooZnVuIF8gLT4gcGFyZW50X2Rpcl9uYW1lKSBiX3N1ZmZpeCBpblxuICBtYXRjaCBnb191cCBAIGFfc3VmZml4IHdpdGhcbiAgfCBbXSAtPiBjdXJyZW50X2Rpcl9uYW1lXG4gIHwgcmVscGF0aCAtPiBvZl9wYXJ0cyByZWxwYXRoXG47O1xuXG5sZXQgYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBjcmVhdGVfYXJnX3R5cGUgPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCBvcGVuX3RlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IG9wZW5fdGVtcF9maWxlX2ZkID0gYFVzZV9GaWxlbmFtZV91bml4XG5sZXQgcmVhbHBhdGggPSBgVXNlX0ZpbGVuYW1lX3VuaXhcbmxldCB0ZW1wX2RpciA9IGBVc2VfRmlsZW5hbWVfdW5peFxubGV0IHRlbXBfZmlsZSA9IGBVc2VfRmlsZW5hbWVfdW5peFxuIiwibW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBvcGVuISBTdGFibGVfaW50ZXJuYWxcbiAgb3BlbiEgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cblxuICBtb2R1bGUgQW5vbnMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgfCBaZXJvXG4gICAgICAgICAgfCBPbmUgb2Ygc3RyaW5nXG4gICAgICAgICAgfCBNYW55IG9mIHRcbiAgICAgICAgICB8IE1heWJlIG9mIHRcbiAgICAgICAgICB8IENvbmNhdCBvZiB0IGxpc3RcbiAgICAgICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcbiAgICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgICAgWyVleHBlY3Qge3wgYTE3ZmQzNGVjMjEzZTUwOGRiNDUwZjY0NjlmN2ZlOTkgfH1dXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHJlYyBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgQmFzZS5JbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICAgICAgfCBaZXJvIC0+ICgpXG4gICAgICAgICAgICB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICB8IE1hbnkgWmVybyAtPiBmYWlsd2l0aCBcIk1hbnkgWmVybyBzaG91bGQgYmUganVzdCBaZXJvXCJcbiAgICAgICAgICAgIHwgTWFueSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IE1heWJlIFplcm8gLT4gZmFpbHdpdGggXCJNYXliZSBaZXJvIHNob3VsZCBiZSBqdXN0IFplcm9cIlxuICAgICAgICAgICAgfCBNYXliZSB0IC0+IGludmFyaWFudCB0XG4gICAgICAgICAgICB8IENvbmNhdCBbXSB8IENvbmNhdCBbIF8gXSAtPiBmYWlsd2l0aCBcIkZsYXR0ZW4gemVybyBhbmQgb25lLWVsZW1lbnQgQ29uY2F0XCJcbiAgICAgICAgICAgIHwgQ29uY2F0IHRzIC0+IEJhc2UuTGlzdC5pdGVyIHRzIH5mOmludmFyaWFudFxuICAgICAgICAgICAgfCBBZF9ob2MgXyAtPiAoKSlcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCB0ID0gWyVvZl9zZXhwOiB0XSBzZXhwIGluXG4gICAgICAgICAgaW52YXJpYW50IHQ7XG4gICAgICAgICAgdFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCByZWMgdXNhZ2UgPSBmdW5jdGlvblxuICAgICAgICAgIHwgWmVybyAtPiBcIlwiXG4gICAgICAgICAgfCBPbmUgdXNhZ2UgLT4gdXNhZ2VcbiAgICAgICAgICB8IE1hbnkgWmVybyAtPiBmYWlsd2l0aCBcImJ1ZyBpbiBjb21tYW5kLm1sXCJcbiAgICAgICAgICB8IE1hbnkgKE9uZSBfIGFzIHQpIC0+IEJhc2UuUHJpbnRmLnNwcmludGYgXCJbJXMgLi4uXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgTWFueSB0IC0+IEJhc2UuUHJpbnRmLnNwcmludGYgXCJbKCVzKSAuLi5dXCIgKHVzYWdlIHQpXG4gICAgICAgICAgfCBNYXliZSBaZXJvIC0+IGZhaWx3aXRoIFwiYnVnIGluIGNvbW1hbmQubWxcIlxuICAgICAgICAgIHwgTWF5YmUgdCAtPiBCYXNlLlByaW50Zi5zcHJpbnRmIFwiWyVzXVwiICh1c2FnZSB0KVxuICAgICAgICAgIHwgQ29uY2F0IHRzIC0+IEJhc2UuU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIChCYXNlLkxpc3QubWFwIHRzIH5mOnVzYWdlKVxuICAgICAgICAgIHwgQWRfaG9jIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBVc2FnZSBvZiBzdHJpbmdcbiAgICAgICAgfCBHcmFtbWFyIG9mIEdyYW1tYXIuVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMDgxZDllYzE2NzkwM2Y4ZjhjNDljYmY4ZTNmYjNhNjYgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjJcbiAgZW5kXG5cbiAgbW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICAgIDsgZG9jIDogc3RyaW5nXG4gICAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGJkOGQ2ZmI3YTY2MmQyYzBiNWUwZDIwMjZjNmQyZDIxIHx9XVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYxXG4gIGVuZFxuXG4gIG1vZHVsZSBCYXNlX2luZm8gPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBhbm9ucyA6IEFub25zLlYyLnRcbiAgICAgICAgOyBmbGFncyA6IEZsYWdfaW5mby5WMS50IGxpc3RcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA4ZmFhYzFlOGQ5ZGViMGJhYWE1NmFjOGViZjg1YjQ5OCB8fV1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB1c2FnZSA6IHN0cmluZ1xuICAgICAgICA7IGZsYWdzIDogRmxhZ19pbmZvLlYxLnQgbGlzdFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCB0b19sYXRlc3QgeyBzdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFncyB9ID1cbiAgICAgICAgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zID0gVXNhZ2UgdXNhZ2U7IGZsYWdzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgeyBWMi5zdW1tYXJ5OyByZWFkbWU7IGFub25zOyBmbGFncyB9ID1cbiAgICAgICAgeyBzdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lXG4gICAgICAgIDsgdXNhZ2UgPVxuICAgICAgICAgICAgKG1hdGNoIGFub25zIHdpdGhcbiAgICAgICAgICAgICB8IFVzYWdlIHVzYWdlIC0+IHVzYWdlXG4gICAgICAgICAgICAgfCBHcmFtbWFyIGdyYW1tYXIgLT4gQW5vbnMuR3JhbW1hci5WMS51c2FnZSBncmFtbWFyKVxuICAgICAgICA7IGZsYWdzXG4gICAgICAgIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuICBlbmRcblxuICBtb2R1bGUgR3JvdXBfaW5mbyA9IHN0cnVjdFxuICAgIHR5cGUgYSA9IER1bW15X3R5cGVfYmVjYXVzZV93ZV9jYW5ub3RfZGlnZXN0X3R5cGVfY29uc3RydWN0b3JzX29ubHlfY29uY3JldGVfdHlwZXNcbiAgICBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC5TdGFibGUuVjEudCBMYXp5LlN0YWJsZS5WMS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogYSB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgMmNjM2VlYjU4ZDEyZDhmZTQ0MDAwMDllNTkyZDc4MjcgfH1dXG4gICAgICA7O1xuXG4gICAgICBvcGVuISBCYXNlXG5cbiAgICAgIGxldCBtYXAgdCB+ZiA9XG4gICAgICAgIHsgdCB3aXRoIHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmYpIH1cbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTW9kZWwgPSBWMlxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICAgICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgICAgIDsgc3ViY29tbWFuZHMgOiAoc3RyaW5nICogJ2EpIExpc3QuU3RhYmxlLlYxLnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiBhIHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCAyY2MzZWViNThkMTJkOGZlNDQwMDAwOWU1OTJkNzgyNyB8fV1cbiAgICAgIDs7XG5cbiAgICAgIG9wZW4hIEJhc2VcblxuICAgICAgbGV0IG1hcCB0IH5mID0geyB0IHdpdGggc3ViY29tbWFuZHMgPSBMaXN0LkFzc29jLm1hcCB0LnN1YmNvbW1hbmRzIH5mIH1cblxuICAgICAgbGV0IHRvX2xhdGVzdCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgfSA6ICdhIE1vZGVsLnQgPVxuICAgICAgICB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBMYXp5LmZyb21fdmFsIHN1YmNvbW1hbmRzIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBvZl9sYXRlc3QgKHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kcyB9IDogJ2EgTW9kZWwudCkgOiAnYSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5OyByZWFkbWU7IHN1YmNvbW1hbmRzID0gTGF6eS5mb3JjZSBzdWJjb21tYW5kcyB9XG4gICAgICA7O1xuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRXhlY19pbmZvID0gc3RydWN0XG4gICAgbGV0IGFic19wYXRoIH5kaXIgcGF0aCA9XG4gICAgICBpZiBGaWxlbmFtZS5pc19hYnNvbHV0ZSBwYXRoIHRoZW4gcGF0aCBlbHNlIEZpbGVuYW1lLmNvbmNhdCBkaXIgcGF0aFxuICAgIDs7XG5cbiAgICBtb2R1bGUgVjMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IGMwYzgyNTZlOTIzOGNkZDhmMmVjMWY4Nzg1ZTAyYWUwIHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEZuLmlkXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gRm4uaWRcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNb2RlbCA9IFYzXG5cbiAgICBtb2R1bGUgVjIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgICAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICAgICAgOyB3b3JraW5nX2RpciA6IHN0cmluZ1xuICAgICAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9zaGFwZSwgc2V4cF1cblxuICAgICAgbGV0IHRvX3YzIHQgOiBWMy50ID1cbiAgICAgICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgICAgIDsgcmVhZG1lID0gdC5yZWFkbWVcbiAgICAgICAgOyB3b3JraW5nX2RpciA9IHQud29ya2luZ19kaXJcbiAgICAgICAgOyBwYXRoX3RvX2V4ZSA9IHQucGF0aF90b19leGVcbiAgICAgICAgOyBjaGlsZF9zdWJjb21tYW5kID0gW11cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3YzICh0IDogVjMudCkgPVxuICAgICAgICB7IHN1bW1hcnkgPSB0LnN1bW1hcnlcbiAgICAgICAgOyByZWFkbWUgPSB0LnJlYWRtZVxuICAgICAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gYWJzX3BhdGggfmRpcjp0LndvcmtpbmdfZGlyIHQucGF0aF90b19leGVcbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IEZuLmNvbXBvc2UgVjMudG9fbGF0ZXN0IHRvX3YzXG4gICAgICBsZXQgb2ZfbGF0ZXN0ID0gRm4uY29tcG9zZSBvZl92MyBWMy5vZl9sYXRlc3RcbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgICAgIDsgcmVhZG1lIDogc3RyaW5nIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICAgICAgICA7ICgqIFtwYXRoX3RvX2V4ZV0gbXVzdCBiZSBhYnNvbHV0ZS4gKilcbiAgICAgICAgICBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCB0b192MiB0IDogVjIudCA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgd29ya2luZ19kaXIgPSBcIi9cIlxuICAgICAgICA7IHBhdGhfdG9fZXhlID0gdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfdjIgKHQgOiBWMi50KSA9XG4gICAgICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgICAgICA7IHJlYWRtZSA9IHQucmVhZG1lXG4gICAgICAgIDsgcGF0aF90b19leGUgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZVxuICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gRm4uY29tcG9zZSBWMi50b19sYXRlc3QgdG9fdjJcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBGbi5jb21wb3NlIG9mX3YyIFYyLm9mX2xhdGVzdFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2ljIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYyLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMy50ICogdFxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgOTgxMTU0ZWYzOTE5NDM3YzZjODIyNjE5ODgyODQxZDQgfH1dXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjFcbiAgZW5kXG5cbiAgbW9kdWxlIFNleHBhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFYzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IEJhc2Ugb2YgQmFzZV9pbmZvLlYyLnRcbiAgICAgICAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8uVjIudFxuICAgICAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLlYzLnRcbiAgICAgICAgfCBMYXp5IG9mIHQgTGF6eS5TdGFibGUuVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgZDNjMzc1NTQ4ZjFhNDNjNThjNzFlODE0YzA0YmEzNmEgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fbGF0ZXN0ID0gRm4uaWRcbiAgICAgIGxldCBvZl9sYXRlc3QgPSBGbi5pZFxuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1vZGVsID0gVjNcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBCYXNlIG9mIEJhc2VfaW5mby5WMi50XG4gICAgICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLlYxLnRcbiAgICAgICAgfCBFeGVjIG9mIEV4ZWNfaW5mby5WMi50XG4gICAgICBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIHNleHBdXG5cbiAgICAgIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IHRdO1xuICAgICAgICBbJWV4cGVjdCB7fCA1OThkNGI0MWVmNDM1YmM2OWE0ODg2YmRiYTBmODY4OSB8fV1cbiAgICAgIDs7XG5cbiAgICAgIGxldCByZWMgdG9fbGF0ZXN0IDogdCAtPiBNb2RlbC50ID0gZnVuY3Rpb25cbiAgICAgICAgfCBCYXNlIGIgLT4gQmFzZSBiXG4gICAgICAgIHwgRXhlYyBlIC0+IEV4ZWMgKEV4ZWNfaW5mby5WMi50b19sYXRlc3QgZSlcbiAgICAgICAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLlYxLnRvX2xhdGVzdCAoR3JvdXBfaW5mby5WMS5tYXAgZyB+Zjp0b19sYXRlc3QpKVxuICAgICAgOztcblxuICAgICAgbGV0IHJlYyBvZl9sYXRlc3QgOiBNb2RlbC50IC0+IHQgPSBmdW5jdGlvblxuICAgICAgICB8IEJhc2UgYiAtPiBCYXNlIGJcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYyLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHwgQmFzZSBvZiBCYXNlX2luZm8uVjEudFxuICAgICAgICB8IEdyb3VwIG9mIHQgR3JvdXBfaW5mby5WMS50XG4gICAgICAgIHwgRXhlYyBvZiBFeGVjX2luZm8uVjEudFxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwXVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXyA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgWyVleHBlY3Qge3wgNzBkMjBiNTQzMmZmYWI3N2EzODViMDJiMDQwMzFkMmUgfH1dXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIHRvX2xhdGVzdCA6IHQgLT4gTW9kZWwudCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS50b19sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLnRvX2xhdGVzdCBlKVxuICAgICAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwX2luZm8uVjEudG9fbGF0ZXN0IChHcm91cF9pbmZvLlYxLm1hcCBnIH5mOnRvX2xhdGVzdCkpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVjIG9mX2xhdGVzdCA6IE1vZGVsLnQgLT4gdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFzZSBiIC0+IEJhc2UgKEJhc2VfaW5mby5WMS5vZl9sYXRlc3QgYilcbiAgICAgICAgfCBFeGVjIGUgLT4gRXhlYyAoRXhlY19pbmZvLlYxLm9mX2xhdGVzdCBlKVxuICAgICAgICB8IExhenkgdGh1bmsgLT4gb2ZfbGF0ZXN0IChCYXNlLkxhenkuZm9yY2UgdGh1bmspXG4gICAgICAgIHwgR3JvdXAgZyAtPiBHcm91cCAoR3JvdXBfaW5mby5WMS5tYXAgKEdyb3VwX2luZm8uVjEub2ZfbGF0ZXN0IGcpIH5mOm9mX2xhdGVzdClcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgVmVyc2lvbmVkID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB8IFYxIG9mIFYxLnRcbiAgICAgICAgfCBWMiBvZiBWMi50XG4gICAgICAgIHwgVjMgb2YgVjMudCAoKiBhdmFpbGFibGUgYXQgbGVhc3Qgc2luY2UgMjAyMC0wNCAqKVxuICAgICAgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBzZXhwLCB2YXJpYW50c11cblxuICAgICAgKCogSXQncyBva2F5IHRvIGNoYW5nZSB0aGlzIG9uZSBpbiBwbGFjZSwgYXMgbG9uZyBhcyB3ZSB3YWl0IGxvbmcgZW5vdWdoIGJlZm9yZVxuICAgICAgICAgZHJvcHBpbmcgc3VwcG9ydCBmb3Igb2xkIHZlcnNpb25zLiAqKVxuICAgICAgbGV0JWV4cGVjdF90ZXN0IF8gPVxuICAgICAgICBwcmludF9lbmRsaW5lIFslYmluX2RpZ2VzdDogdF07XG4gICAgICAgIFslZXhwZWN0IHt8IDc5NmZiZjAwNmRlYjI1MTU5MTcxNjM3YzJhNTEwYmY0IHx9XVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xhdGVzdCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVjEgdCAtPiBWMS50b19sYXRlc3QgdFxuICAgICAgICB8IFYyIHQgLT4gVjIudG9fbGF0ZXN0IHRcbiAgICAgICAgfCBWMyB0IC0+IFYzLnRvX2xhdGVzdCB0XG4gICAgICA7O1xuXG4gICAgICBsZXQgb2ZfbGF0ZXN0IH52ZXJzaW9uX3RvX3VzZSBsYXRlc3QgPVxuICAgICAgICBtYXRjaCB2ZXJzaW9uX3RvX3VzZSB3aXRoXG4gICAgICAgIHwgMSAtPiBWMSAoVjEub2ZfbGF0ZXN0IGxhdGVzdClcbiAgICAgICAgfCAyIC0+IFYyIChWMi5vZl9sYXRlc3QgbGF0ZXN0KVxuICAgICAgICB8IDMgLT4gVjMgKFYzLm9mX2xhdGVzdCBsYXRlc3QpXG4gICAgICAgIHwgb3RoZXIgLT5cbiAgICAgICAgICBTdGRfaW50ZXJuYWwuZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInVuc3VwcG9ydGVkIHZlcnNpb25fdG9fdXNlXCJcbiAgICAgICAgICAgIG90aGVyXG4gICAgICAgICAgICBbJXNleHBfb2Y6IGludF1cbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm9wZW4hIEltcG9ydFxub3BlbiEgU3RkX2ludGVybmFsXG5cbm1vZHVsZSBBbm9ucyA9IHN0cnVjdFxuICBtb2R1bGUgR3JhbW1hciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLnQgPVxuICAgICAgfCBaZXJvXG4gICAgICB8IE9uZSBvZiBzdHJpbmdcbiAgICAgIHwgTWFueSBvZiB0XG4gICAgICB8IE1heWJlIG9mIHRcbiAgICAgIHwgQ29uY2F0IG9mIHQgbGlzdFxuICAgICAgfCBBZF9ob2Mgb2Ygc3RyaW5nXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGludmFyaWFudCA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFN0YWJsZS5Bbm9ucy5HcmFtbWFyLk1vZGVsLnVzYWdlXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFN0YWJsZS5Bbm9ucy5Nb2RlbC50ID1cbiAgICB8IFVzYWdlIG9mIHN0cmluZ1xuICAgIHwgR3JhbW1hciBvZiBHcmFtbWFyLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuZW5kXG5cbm1vZHVsZSBOdW1fb2NjdXJyZW5jZXMgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGF0X2xlYXN0X29uY2UgOiBib29sXG4gICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgfVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgbWF5YmVfbWlzc2luZ19wcmVmaXggPSBcIltcIlxuICBsZXQgbWF5YmVfbWlzc2luZ19zdWZmaXggPSBcIl1cIlxuICBsZXQgbWF5YmVfbW9yZV9zdWZmaXggPSBcIiAuLi5cIlxuXG4gIGxldCB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgPVxuICAgIGxldCB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSB9ID0gdCBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICBpZiBhdF9sZWFzdF9vbmNlXG4gICAgICB0aGVuIGZsYWdfbmFtZVxuICAgICAgZWxzZSBTdHJpbmcuY29uY2F0IFsgbWF5YmVfbWlzc2luZ19wcmVmaXg7IGZsYWdfbmFtZTsgbWF5YmVfbWlzc2luZ19zdWZmaXggXVxuICAgIGluXG4gICAgaWYgYXRfbW9zdF9vbmNlIHRoZW4gZGVzY3JpcHRpb24gZWxzZSBTdHJpbmcuY29uY2F0IFsgZGVzY3JpcHRpb247IG1heWJlX21vcmVfc3VmZml4IF1cbiAgOztcblxuICBsZXQgb2ZfaGVscF9zdHJpbmcgbmFtZSA9XG4gICAgbGV0IGF0X21vc3Rfb25jZSwgbmFtZSA9XG4gICAgICBtYXRjaCBTdHJpbmcuY2hvcF9zdWZmaXggbmFtZSB+c3VmZml4Om1heWJlX21vcmVfc3VmZml4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0cnVlLCBuYW1lXG4gICAgICB8IFNvbWUgbmFtZSAtPiBmYWxzZSwgbmFtZVxuICAgIGluXG4gICAgbGV0IGF0X2xlYXN0X29uY2UsIG5hbWUgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgU3RyaW5nLmNob3BfcHJlZml4IG5hbWUgfnByZWZpeDptYXliZV9taXNzaW5nX3ByZWZpeFxuICAgICAgICB8PiBPcHRpb24uYmluZCB+ZjooU3RyaW5nLmNob3Bfc3VmZml4IH5zdWZmaXg6bWF5YmVfbWlzc2luZ19zdWZmaXgpXG4gICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZSwgbmFtZVxuICAgICAgfCBTb21lIG5hbWUgLT4gZmFsc2UsIG5hbWVcbiAgICBpblxuICAgIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlIH0sIG5hbWVcbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJ0b19oZWxwX3N0cmluZ1wiID1cbiAgICBsZXQgZmxhZ19uYW1lID0gXCJuYW1lXCIgaW5cbiAgICBMaXN0Lml0ZXIgWyVhbGw6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgbGV0IHMgPSB0b19oZWxwX3N0cmluZyB0IH5mbGFnX25hbWUgaW5cbiAgICAgIHByaW50X3MgWyVtZXNzYWdlIFwiXCIgfl86KHQgOiB0KSBzXTtcbiAgICAgIGxldCB0JywgZmxhZ19uYW1lJyA9IG9mX2hlbHBfc3RyaW5nIHMgaW5cbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSB0IHQnKTtcbiAgICAgIGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiBzdHJpbmddIGZsYWdfbmFtZSBmbGFnX25hbWUnKSk7XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgZmFsc2UpIChhdF9tb3N0X29uY2UgZmFsc2UpKSBcIltuYW1lXSAuLi5cIilcbiAgICAgICAgKCgoYXRfbGVhc3Rfb25jZSB0cnVlKSAoYXRfbW9zdF9vbmNlIGZhbHNlKSkgXCJuYW1lIC4uLlwiKVxuICAgICAgICAoKChhdF9sZWFzdF9vbmNlIGZhbHNlKSAoYXRfbW9zdF9vbmNlIHRydWUpKSBbbmFtZV0pXG4gICAgICAgICgoKGF0X2xlYXN0X29uY2UgdHJ1ZSkgKGF0X21vc3Rfb25jZSB0cnVlKSkgbmFtZSkgfH1dXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaW5mbyA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdGFibGUuRmxhZ19pbmZvLk1vZGVsLnQgPVxuICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgIDsgZG9jIDogc3RyaW5nXG4gICAgOyBhbGlhc2VzIDogc3RyaW5nIGxpc3RcbiAgICB9XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZmllbGRzLCBzZXhwXVxuXG4gIGxldCBwYXJzZV9uYW1lIHQgPVxuICAgIGxldCBudW1fb2NjdXJyZW5jZXMsIGZsYWdfbmFtZSA9IE51bV9vY2N1cnJlbmNlcy5vZl9oZWxwX3N0cmluZyB0Lm5hbWUgaW5cbiAgICBtYXRjaCBTdHJpbmcuc3BsaXQgZmxhZ19uYW1lIH5vbjonICcgd2l0aFxuICAgIHwgWyBmbGFnX25hbWUgXSAtPiBPayAobnVtX29jY3VycmVuY2VzLCBmYWxzZSwgZmxhZ19uYW1lKVxuICAgIHwgWyBmbGFnX25hbWU7IF9hcmdfZG9jIF0gLT4gT2sgKG51bV9vY2N1cnJlbmNlcywgdHJ1ZSwgZmxhZ19uYW1lKVxuICAgIHwgXyAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIlVuYWJsZSB0byBwYXJzZVwiIGZsYWdfbmFtZV1cbiAgOztcblxuICAoKiBVc2VycyBhcmUgbGlrZWx5IHRvIGNhbGwgYWxsIHRocmVlIG9mIHRoZXNlIGZ1bmN0aW9ucywgaW4gd2hpY2ggY2FzZSB3ZSB3aWxsIHJlLXBhcnNlXG4gICAgIHRoZSBbbmFtZV0gc2V2ZXJhbCB0aW1lcy4gV2UgZG9uJ3QgZXhwZWN0IHVzZXJzIG9mIHRoZXNlIGZ1bmN0aW9ucyB0byBjYXJlIGFib3V0IHRoZVxuICAgICBpbmVmZmljaWVuY3kuICopXG4gIGxldCBmbGFnX25hbWUgdCA9IHBhcnNlX25hbWUgdCB8PiBPcl9lcnJvci5tYXAgfmY6dHJkM1xuICBsZXQgbnVtX29jY3VycmVuY2VzIHQgPSBwYXJzZV9uYW1lIHQgfD4gT3JfZXJyb3IubWFwIH5mOmZzdDNcbiAgbGV0IHJlcXVpcmVzX2FyZyB0ID0gcGFyc2VfbmFtZSB0IHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmQzXG5cbiAgbGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgYSBiID1cbiAgICBtYXRjaCBhLCBiIHdpdGhcbiAgICB8IF8sIFwiWy1oZWxwXVwiIC0+IC0xXG4gICAgfCBcIlstaGVscF1cIiwgXyAtPiAxXG4gICAgfCBfLCBcIlstdmVyc2lvbl1cIiAtPiAtMVxuICAgIHwgXCJbLXZlcnNpb25dXCIsIF8gLT4gMVxuICAgIHwgXywgXCJbLWJ1aWxkLWluZm9dXCIgLT4gLTFcbiAgICB8IFwiWy1idWlsZC1pbmZvXVwiLCBfIC0+IDFcbiAgICB8IF8sIFwiaGVscFwiIC0+IC0xXG4gICAgfCBcImhlbHBcIiwgXyAtPiAxXG4gICAgfCBfLCBcInZlcnNpb25cIiAtPiAtMVxuICAgIHwgXCJ2ZXJzaW9uXCIsIF8gLT4gMVxuICAgIHwgXyAtPiAwXG4gIDs7XG5lbmRcblxubW9kdWxlIEZsYWdfaGVscF9kaXNwbGF5ID0gc3RydWN0XG4gIHR5cGUgdCA9IEZsYWdfaW5mby50IGxpc3RcblxuICBsZXQgc29ydCB0ID1cbiAgICBMaXN0LnN0YWJsZV9zb3J0IHQgfmNvbXBhcmU6KGZ1biBhIGIgLT5cbiAgICAgIEZsYWdfaW5mby5oZWxwX3NjcmVlbl9jb21wYXJlIGEuRmxhZ19pbmZvLm5hbWUgYi5GbGFnX2luZm8ubmFtZSlcbiAgOztcblxuICBsZXQgd29yZF93cmFwX2FuZF9zdHJpcCB0ZXh0IHdpZHRoID1cbiAgICBsZXQgY2h1bmtzID0gU3RyaW5nLnNwbGl0IHRleHQgfm9uOidcXG4nIGluXG4gICAgTGlzdC5jb25jYXRfbWFwIGNodW5rcyB+ZjooZnVuIHRleHQgLT5cbiAgICAgIGxldCB3b3JkcyA9XG4gICAgICAgIFN0cmluZy5zcGxpdCB0ZXh0IH5vbjonICdcbiAgICAgICAgfD4gTGlzdC5maWx0ZXIgfmY6KGZ1biB3b3JkIC0+IG5vdCAoU3RyaW5nLmlzX2VtcHR5IHdvcmQpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIExpc3QuZm9sZCB3b3JkcyB+aW5pdDpOb25lIH5mOihmdW4gYWNjIHdvcmQgLT5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAobWF0Y2ggYWNjIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gW10sIHdvcmRcbiAgICAgICAgICAgICB8IFNvbWUgKGxpbmVzLCBsaW5lKSAtPlxuICAgICAgICAgICAgICAgKCogZWZmaWNpZW5jeSBpcyBub3QgYSBjb25jZXJuIGZvciB0aGUgc3RyaW5nIGxlbmd0aHMgd2UgZXhwZWN0ICopXG4gICAgICAgICAgICAgICBsZXQgbGluZV9hbmRfd29yZCA9IGxpbmUgXiBcIiBcIiBeIHdvcmQgaW5cbiAgICAgICAgICAgICAgIGlmIFN0cmluZy5sZW5ndGggbGluZV9hbmRfd29yZCA8PSB3aWR0aFxuICAgICAgICAgICAgICAgdGhlbiBsaW5lcywgbGluZV9hbmRfd29yZFxuICAgICAgICAgICAgICAgZWxzZSBsaW5lIDo6IGxpbmVzLCB3b3JkKSlcbiAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIChsaW5lcywgbGluZSkgLT4gTGlzdC5yZXYgKGxpbmUgOjogbGluZXMpKVxuICA7O1xuXG4gIG1vZHVsZSBEaXNwbGF5IDogc2lnXG4gICAgdmFsIHRvX3N0cmluZyA6IHQgLT4gc3RyaW5nXG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBudW1fY29scyA9IDgwXG4gICAgbGV0IHNwYWNlc19zdHJpbmcgd2lkdGggPSBTdHJpbmcubWFrZSB3aWR0aCAnICdcblxuICAgIGxldCBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB4IH53aWR0aCA9XG4gICAgICBsZXQgc2xhY2sgPSB3aWR0aCAtIFN0cmluZy5sZW5ndGggeCBpblxuICAgICAgeCBeIHNwYWNlc19zdHJpbmcgc2xhY2tcbiAgICA7O1xuXG4gICAgbGV0IGluZGVudGF0aW9uID0gXCIgIFwiXG4gICAgbGV0IGluZGVudF9hbmRfbmV3bGluZSB4ID0gTGlzdC5jb25jYXQgWyBbIGluZGVudGF0aW9uIF07IHg7IFsgXCJcXG5cIiBdIF1cbiAgICBsZXQgc3BhY2luZ19kb3QgPSBcIi4gXCJcblxuICAgIGxldCBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ID1cbiAgICAgIDI3XG4gICAgOztcblxuICAgIGxldCBkb2N1bWVudGF0aW9uX3N0YXJ0X2NvbHVtbiA9IGRvdF9pbmRlbnRhdGlvbl9vZmZzZXQgKyBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uXG4gICAgbGV0IGxoc193aWR0aCA9IGRvY3VtZW50YXRpb25fc3RhcnRfY29sdW1uXG4gICAgbGV0IGxoc19wYWRfd2lkdGggPSBkb3RfaW5kZW50YXRpb25fb2Zmc2V0ICsgU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvblxuICAgIGxldCBsaHNfcGFkID0gc3BhY2VzX3N0cmluZyBsaHNfcGFkX3dpZHRoXG5cbiAgICBsZXQgbGhzX3BhZF9hbmRfbmV3bGluZV90ZXJtaW5hdGUgPVxuICAgICAgTGlzdC5tYXAgfmY6KGZ1biB2IC0+IGluZGVudF9hbmRfbmV3bGluZSBbIGxoc19wYWQ7IHYgXSlcbiAgICA7O1xuXG4gICAgbGV0IHJvd3MgZmxhZ19uYW1lX3dpdGhfYWxpYXNlcyBkb2N1bWVudGF0aW9uID1cbiAgICAgIGxldCBmbGFnX29uX2l0c19vd25fbGluZSA9XG4gICAgICAgIGxldCBmbGFnX3dpZHRoID1cbiAgICAgICAgICBTdHJpbmcubGVuZ3RoIGluZGVudGF0aW9uICsgU3RyaW5nLmxlbmd0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzXG4gICAgICAgIGluXG4gICAgICAgIGlmIGZsYWdfd2lkdGggPj0gZG90X2luZGVudGF0aW9uX29mZnNldCArIFN0cmluZy5sZW5ndGggc3BhY2luZ19kb3RcbiAgICAgICAgdGhlbiBpbmRlbnRfYW5kX25ld2xpbmUgWyBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGluZGVudF9hbmRfbmV3bGluZVxuICAgICAgICAgICAgWyBwYWRfc3BhY2VzX3RvX3N1ZmZpeCB+d2lkdGg6ZG90X2luZGVudGF0aW9uX29mZnNldCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzXG4gICAgICAgICAgICA7IHNwYWNpbmdfZG90XG4gICAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgbGV0IHdyYXBwZWRfZG9jdW1lbnRhdGlvbiA9XG4gICAgICAgIHdvcmRfd3JhcF9hbmRfc3RyaXBcbiAgICAgICAgICBkb2N1bWVudGF0aW9uXG4gICAgICAgICAgKG51bV9jb2xzIC0gbGhzX3dpZHRoIC0gU3RyaW5nLmxlbmd0aCBpbmRlbnRhdGlvbilcbiAgICAgIGluXG4gICAgICBtYXRjaCB3cmFwcGVkX2RvY3VtZW50YXRpb24gd2l0aFxuICAgICAgfCBbXSAtPiBbIGZsYWdfb25faXRzX293bl9saW5lIF1cbiAgICAgIHwgZG9jX3dyYXBwZWRfZmlyc3RfbGluZSA6OiBkb2Nfd3JhcHBlZF9yZXN0X2xpbmVzIC0+XG4gICAgICAgIGxldCB3cmFwcGVkX2RvY19saW5lcyA9IGxoc19wYWRfYW5kX25ld2xpbmVfdGVybWluYXRlIGRvY193cmFwcGVkX3Jlc3RfbGluZXMgaW5cbiAgICAgICAgbGV0IHByZWZpeF9kb2Nfd3JhcHBlZF9maXJzdF9saW5lX3dpdGggeCA9XG4gICAgICAgICAgaW5kZW50X2FuZF9uZXdsaW5lXG4gICAgICAgICAgICBbIHBhZF9zcGFjZXNfdG9fc3VmZml4IH53aWR0aDpkb3RfaW5kZW50YXRpb25fb2Zmc2V0IHhcbiAgICAgICAgICAgIDsgc3BhY2luZ19kb3RcbiAgICAgICAgICAgIDsgZG9jX3dyYXBwZWRfZmlyc3RfbGluZVxuICAgICAgICAgICAgXVxuICAgICAgICBpblxuICAgICAgICBpZiBTdHJpbmcubGVuZ3RoIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgPj0gZG90X2luZGVudGF0aW9uX29mZnNldFxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmxhZ19vbl9pdHNfb3duX2xpbmVcbiAgICAgICAgICA6OiBwcmVmaXhfZG9jX3dyYXBwZWRfZmlyc3RfbGluZV93aXRoIFwiXCJcbiAgICAgICAgICA6OiB3cmFwcGVkX2RvY19saW5lc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJlZml4X2RvY193cmFwcGVkX2ZpcnN0X2xpbmVfd2l0aCBmbGFnX25hbWVfd2l0aF9hbGlhc2VzIDo6IHdyYXBwZWRfZG9jX2xpbmVzXG4gICAgOztcblxuICAgIGxldCB0b19zdHJpbmcgdCA9XG4gICAgICBMaXN0LmNvbmNhdF9tYXAgdCB+ZjooZnVuIHQgLT5cbiAgICAgICAgbGV0IGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgPVxuICAgICAgICAgIGxldCBmbGFnID0gdC5GbGFnX2luZm8ubmFtZSBpblxuICAgICAgICAgIFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKGZsYWcgOjogdC5hbGlhc2VzKVxuICAgICAgICBpblxuICAgICAgICByb3dzIGZsYWdfbmFtZV93aXRoX2FsaWFzZXMgdC5kb2MgfD4gTGlzdC5jb25jYXQpXG4gICAgICB8PiBTdHJpbmcuY29uY2F0XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHRvX3N0cmluZyB0ID0gRGlzcGxheS50b19zdHJpbmcgdFxuZW5kXG5cbm1vZHVsZSBLZXlfdHlwZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgU3ViY29tbWFuZFxuICAgIHwgRmxhZ1xuXG4gIGxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgU3ViY29tbWFuZCAtPiBcInN1YmNvbW1hbmRcIlxuICAgIHwgRmxhZyAtPiBcImZsYWdcIlxuICA7O1xuZW5kXG5cbmxldCBsb29rdXBfZXhwYW5kIGFsaXN0IHByZWZpeCBrZXlfdHlwZSA9XG4gIGxldCBpc19kYXNoID0gQ2hhci5lcXVhbCAnLScgaW5cbiAgbGV0IGFsaXN0ID1cbiAgICAoKiBubyBwYXJ0aWFsIG1hdGNoZXMgdW5sZXNzIHNvbWUgbm9uLWRhc2ggY2hhciBpcyBwcmVzZW50ICopXG4gICAgaWYgU3RyaW5nLmZvcl9hbGwgcHJlZml4IH5mOmlzX2Rhc2hcbiAgICB0aGVuIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGtleSwgKGRhdGEsIF8pKSAtPiBrZXksIChkYXRhLCBgRnVsbF9tYXRjaF9yZXF1aXJlZCkpXG4gICAgZWxzZSBhbGlzdFxuICBpblxuICBtYXRjaFxuICAgIExpc3QuZmlsdGVyIGFsaXN0IH5mOihmdW5jdGlvblxuICAgICAgfCBrZXksIChfLCBgRnVsbF9tYXRjaF9yZXF1aXJlZCkgLT4gU3RyaW5nLiggPSApIGtleSBwcmVmaXhcbiAgICAgIHwga2V5LCAoXywgYFByZWZpeCkgLT4gU3RyaW5nLmlzX3ByZWZpeCBrZXkgfnByZWZpeClcbiAgd2l0aFxuICB8IFsgKGtleSwgKGRhdGEsIF9uYW1lX21hdGNoaW5nKSkgXSAtPiBPayAoa2V5LCBkYXRhKVxuICB8IFtdIC0+IEVycm9yIChzcHJpbnRmICFcInVua25vd24gJXtLZXlfdHlwZX0gJXNcIiBrZXlfdHlwZSBwcmVmaXgpXG4gIHwgbWF0Y2hlcyAtPlxuICAgIChtYXRjaCBMaXN0LmZpbmQgbWF0Y2hlcyB+ZjooZnVuIChrZXksIF8pIC0+IFN0cmluZy4oID0gKSBrZXkgcHJlZml4KSB3aXRoXG4gICAgIHwgU29tZSAoa2V5LCAoZGF0YSwgX25hbWVfbWF0Y2hpbmcpKSAtPiBPayAoa2V5LCBkYXRhKVxuICAgICB8IE5vbmUgLT5cbiAgICAgICBsZXQgbWF0Y2hpbmdfa2V5cyA9IExpc3QubWFwIH5mOmZzdCBtYXRjaGVzIGluXG4gICAgICAgRXJyb3JcbiAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAhXCIle0tleV90eXBlfSAlcyBpcyBhbiBhbWJpZ3VvdXMgcHJlZml4OiAlc1wiXG4gICAgICAgICAgICBrZXlfdHlwZVxuICAgICAgICAgICAgcHJlZml4XG4gICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIiBtYXRjaGluZ19rZXlzKSkpXG47O1xuXG5tb2R1bGUgQmFzZV9pbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5CYXNlX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyBhbm9ucyA6IEFub25zLnRcbiAgICA7IGZsYWdzIDogRmxhZ19pbmZvLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfZmxhZyB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCBmYWxzZSAtPiBlcnJvcl9zIFslbWVzc2FnZSBcIkZsYWdzIG11c3QgYmVnaW4gd2l0aCAnLSdcIiBwcmVmaXhdXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQlYmluZC5Pcl9lcnJvciBjaG9pY2VzID1cbiAgICAgICAgTGlzdC5tYXAgdC5mbGFncyB+ZjooZnVuIChmbGFnX2luZm8gOiBGbGFnX2luZm8udCkgLT5cbiAgICAgICAgICBsZXQlYmluZC5Pcl9lcnJvciBmbGFnX25hbWUgPSBGbGFnX2luZm8uZmxhZ19uYW1lIGZsYWdfaW5mbyBpblxuICAgICAgICAgIE9rXG4gICAgICAgICAgICAoTGlzdC5tYXAgKGZsYWdfbmFtZSA6OiBmbGFnX2luZm8uYWxpYXNlcykgfmY6KGZ1biBrZXkgLT5cbiAgICAgICAgICAgICAgIGtleSwgKGZsYWdfaW5mbywgYFByZWZpeCkpKSlcbiAgICAgICAgfD4gT3JfZXJyb3IuY29tYmluZV9lcnJvcnNcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIChMaXN0LmNvbmNhdCBjaG9pY2VzKSBwcmVmaXggRmxhZ1xuICAgICAgfD4gUmVzdWx0Lm1hcF9lcnJvciB+ZjpFcnJvci5vZl9zdHJpbmdcbiAgICAgIHw+IE9yX2Vycm9yLm1hcCB+ZjpzbmRcbiAgOztcblxuICBsZXQgZ2V0X3VzYWdlIHQgPVxuICAgIG1hdGNoIHQuYW5vbnMgd2l0aFxuICAgIHwgVXNhZ2UgdXNhZ2UgLT4gdXNhZ2VcbiAgICB8IEdyYW1tYXIgZ3JhbW1hciAtPiBTdGFibGUuQW5vbnMuR3JhbW1hci5WMS51c2FnZSBncmFtbWFyXG4gIDs7XG5lbmRcblxubW9kdWxlIEdyb3VwX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgU3RhYmxlLkdyb3VwX2luZm8uTW9kZWwudCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiBzdHJpbmcgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgTGlzdC50IExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGZpbmRfc3ViY29tbWFuZCB0IHByZWZpeCA9XG4gICAgbWF0Y2ggU3RyaW5nLmlzX3ByZWZpeCBwcmVmaXggfnByZWZpeDpcIi1cIiB3aXRoXG4gICAgfCB0cnVlIC0+IGVycm9yX3MgWyVtZXNzYWdlIFwiU3ViY29tbWFuZHMgbXVzdCBub3QgYmVnaW4gd2l0aCAnLSdcIiBwcmVmaXhdXG4gICAgfCBmYWxzZSAtPlxuICAgICAgbGV0IGNob2ljZXMgPVxuICAgICAgICBMaXN0Lm1hcCAoZm9yY2UgdC5zdWJjb21tYW5kcykgfmY6KGZ1biAoa2V5LCBhKSAtPiBrZXksIChhLCBgUHJlZml4KSlcbiAgICAgIGluXG4gICAgICBsb29rdXBfZXhwYW5kIGNob2ljZXMgcHJlZml4IFN1YmNvbW1hbmRcbiAgICAgIHw+IFJlc3VsdC5tYXBfZXJyb3IgfmY6RXJyb3Iub2Zfc3RyaW5nXG4gICAgICB8PiBPcl9lcnJvci5tYXAgfmY6c25kXG4gIDs7XG5cbiAgbGV0IG1hcCA9IFN0YWJsZS5Hcm91cF9pbmZvLk1vZGVsLm1hcFxuZW5kXG5cbm1vZHVsZSBFeGVjX2luZm8gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLkV4ZWNfaW5mby5Nb2RlbC50ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6IHN0cmluZyBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgICA7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgY2hpbGRfc3ViY29tbWFuZCA6IHN0cmluZyBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGZpZWxkcywgc2V4cF1cbmVuZFxuXG5tb2R1bGUgRnVsbHlfZm9yY2VkID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5GdWxseV9mb3JjZWQuTW9kZWwudCA9XG4gICAgfCBCYXNpYyBvZiBCYXNlX2luZm8udFxuICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiB0XG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgc2V4cF1cblxuICBsZXQgZXhwYW5kZWRfc3ViY29tbWFuZHMgdCA9XG4gICAgbGV0IHJlYyBleHBhbmQgPSBmdW5jdGlvblxuICAgICAgfCBFeGVjIChfLCB0KSAtPiBleHBhbmQgdFxuICAgICAgfCBCYXNpYyBfIC0+IFsgW10gXVxuICAgICAgfCBHcm91cCB7IHN1YmNvbW1hbmRzOyBfIH0gLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIChMYXp5LmZvcmNlIHN1YmNvbW1hbmRzKSB+ZjooZnVuIChuYW1lLCB0KSAtPlxuICAgICAgICAgIExpc3QubWFwIH5mOihmdW4gcGF0aCAtPiBuYW1lIDo6IHBhdGgpIChleHBhbmQgdCkpXG4gICAgaW5cbiAgICAoKiBSZXZlcnNpbmcgc28gdGhhdCB0aGUgY29tbWFuZHMgc2hvdyB1cCBpbiB0aGUgc2FtZSBvcmRlciBhcyBoZWxwIGlzIG91dHB1dCAqKVxuICAgIExpc3QucmV2IChleHBhbmQgdClcbiAgOztcbmVuZFxuXG5tb2R1bGUgU2V4cGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gU3RhYmxlLlNleHBhYmxlLk1vZGVsLnQgPVxuICAgIHwgQmFzZSBvZiBCYXNlX2luZm8udFxuICAgIHwgR3JvdXAgb2YgdCBHcm91cF9pbmZvLnRcbiAgICB8IEV4ZWMgb2YgRXhlY19pbmZvLnRcbiAgICB8IExhenkgb2YgdCBMYXp5LnRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgZXh0cmFjdGlvbl92YXIgPSBDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIENPTU1BTkRfT1VUUFVUX0hFTFBfU0VYUFxuXG4gIG1vZHVsZSBWZXJzaW9uZWQgPSBTdGFibGUuU2V4cGFibGUuVmVyc2lvbmVkXG5cbiAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9XG4gICAgbGV0IGYgaSBzdXBwb3J0ZWQgXyA9IFNldC5hZGQgc3VwcG9ydGVkIGkgaW5cbiAgICBWZXJzaW9uZWQuVmFyaWFudHMuZm9sZCB+aW5pdDooU2V0LmVtcHR5IChtb2R1bGUgSW50KSkgfnYxOihmIDEpIH52MjooZiAyKSB+djM6KGYgMylcbiAgOztcblxuICBsZXQgb2ZfdmVyc2lvbmVkID0gVmVyc2lvbmVkLnRvX2xhdGVzdFxuICBsZXQgdG9fdmVyc2lvbmVkIHQgfnZlcnNpb25fdG9fdXNlID0gVmVyc2lvbmVkLm9mX2xhdGVzdCB0IH52ZXJzaW9uX3RvX3VzZVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzaWMgb2YgQmFzZV9pbmZvLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwX2luZm8udFxuICB8IEV4ZWMgb2YgRXhlY19pbmZvLnQgKiAodW5pdCAtPiB0KVxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBmdWxseV9mb3JjZWQgOiB0IC0+IEZ1bGx5X2ZvcmNlZC50ID0gZnVuY3Rpb25cbiAgfCBCYXNpYyBiIC0+IEJhc2ljIGJcbiAgfCBHcm91cCBnIC0+IEdyb3VwIChHcm91cF9pbmZvLm1hcCBnIH5mOmZ1bGx5X2ZvcmNlZClcbiAgfCBFeGVjIChlLCBmKSAtPiBFeGVjIChlLCBmdWxseV9mb3JjZWQgKGYgKCkpKVxuICB8IExhenkgdGh1bmsgLT4gZnVsbHlfZm9yY2VkIChMYXp5LmZvcmNlIHRodW5rKVxuOztcblxubGV0IHJlYyBnZXRfc3VtbWFyeSA9IGZ1bmN0aW9uXG4gIHwgQmFzaWMgYiAtPiBiLnN1bW1hcnlcbiAgfCBHcm91cCBnIC0+IGcuc3VtbWFyeVxuICB8IEV4ZWMgKGUsIF8pIC0+IGUuc3VtbWFyeVxuICB8IExhenkgdGh1bmsgLT4gZ2V0X3N1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5sZXQgaGVscF90ZXh0ID0gYFVzZV9Db21tYW5kX3VuaXhcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtleV90eXBlID0gS2V5X3R5cGVcblxuICBsZXQgYWJzX3BhdGggPSBTdGFibGUuRXhlY19pbmZvLmFic19wYXRoXG4gIGxldCBoZWxwX3NjcmVlbl9jb21wYXJlID0gRmxhZ19pbmZvLmhlbHBfc2NyZWVuX2NvbXBhcmVcbiAgbGV0IHdvcmRfd3JhcCA9IEZsYWdfaGVscF9kaXNwbGF5LndvcmRfd3JhcF9hbmRfc3RyaXBcbiAgbGV0IGxvb2t1cF9leHBhbmQgPSBsb29rdXBfZXhwYW5kXG5lbmRcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBTdGFibGVfaW50ZXJuYWxcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2VyaWFsaXphYmxlID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBzdHJpbmcgKiBpbnQgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQwID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IGhvc3QgOiBTdHJpbmcudFxuICAgICAgICA7IHBvcnQgOiBJbnQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgcXVpY2tjaGVja11cblxuICAgICAgbGV0IHRvX3NlcmlhbGl6YWJsZSB7IGhvc3Q7IHBvcnQgfSA9IGhvc3QsIHBvcnRcbiAgICAgIGxldCBvZl9zZXJpYWxpemFibGUgKGhvc3QsIHBvcnQpID0geyBob3N0OyBwb3J0IH1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUMSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBUMFxuXG4gICAgICBpbmNsdWRlXG4gICAgICAgIEJpbmFibGUuU3RhYmxlLk9mX2JpbmFibGUuVjEgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSB0b19zZXJpYWxpemFibGVcbiAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc2VyaWFsaXphYmxlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBsZXQlZXhwZWN0X3Rlc3QgXCJzdGFibGVcIiA9XG4gICAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgICAgcHJpbnRfZW5kbGluZSBbJWJpbl9kaWdlc3Q6IFNlcmlhbGl6YWJsZS50XTtcbiAgICAgICAgWyVleHBlY3RcbiAgICAgICAgICB7fFxuICAgICAgICAgICAgICAgICAgOTU3OTkwZjBmYzQxNjFmYjg3NGU2Njg3MjU1MGZiNDBcbiAgICAgICAgICAgICAgICAgIDk1Nzk5MGYwZmM0MTYxZmI4NzRlNjY4NzI1NTBmYjQwIHx9XVxuICAgICAgOztcblxuICAgICAgaW5jbHVkZVxuICAgICAgICBTZXhwYWJsZS5TdGFibGUuT2Zfc2V4cGFibGUuVjFcbiAgICAgICAgICAoU2VyaWFsaXphYmxlKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVDBcblxuICAgICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc2VyaWFsaXphYmxlXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zZXJpYWxpemFibGVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIG9wZW4hIEltcG9ydFxuICAgICAgb3BlbiEgU3RkX2ludGVybmFsXG4gICAgICBvcGVuISBUMFxuXG4gICAgICBsZXQgdG9fc3RyaW5nIHsgaG9zdDsgcG9ydCB9ID0gc3ByaW50ZiBcIiVzOiVkXCIgaG9zdCBwb3J0XG5cbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5zcGxpdCBzIH5vbjonOicgd2l0aFxuICAgICAgICB8IFsgaG9zdDsgcG9ydCBdIC0+XG4gICAgICAgICAgbGV0IHBvcnQgPVxuICAgICAgICAgICAgdHJ5IEludC5vZl9zdHJpbmcgcG9ydCB3aXRoXG4gICAgICAgICAgICB8IF9leG4gLT4gZmFpbHdpdGhmIFwiSG9zdF9hbmRfcG9ydC5vZl9zdHJpbmc6IGJhZCBwb3J0OiAlc1wiIHMgKClcbiAgICAgICAgICBpblxuICAgICAgICAgIHsgaG9zdDsgcG9ydCB9XG4gICAgICAgIHwgXyAtPiBmYWlsd2l0aGYgXCJIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZzogJXNcIiBzICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9vZl9zZXhwID0gZnVuY3Rpb25cbiAgICAgICAgfCBTZXhwLkF0b20gcyBhcyBzZXhwIC0+XG4gICAgICAgICAgKHRyeSBvZl9zdHJpbmcgcyB3aXRoXG4gICAgICAgICAgIHwgRmFpbHVyZSBlcnIgLT4gb2Zfc2V4cF9lcnJvciBlcnIgc2V4cClcbiAgICAgICAgfCBzZXhwIC0+IHRfb2Zfc2V4cCBzZXhwXG4gICAgICA7O1xuXG4gICAgICBsZXQgdF9zZXhwX2dyYW1tYXIgPVxuICAgICAgICBTZXhwbGliLlNleHBfZ3JhbW1hci5cbiAgICAgICAgICB7IHVudHlwZWQgPVxuICAgICAgICAgICAgICBVbmlvblxuICAgICAgICAgICAgICAgIFsgKCogaGFuZGxlcyB0aGUgaG9zdDpwb3J0IHN0cmluZyBjYXNlICopXG4gICAgICAgICAgICAgICAgICBTdHJpbmdcbiAgICAgICAgICAgICAgICAgIDsgKCogaGFuZGxlcyB0aGUgbGlzdCAoaG9zdCBwb3J0KSBjYXNlICAqKVxuICAgICAgICAgICAgICAgICAgTGlzdCAoQ29ucyAoU3RyaW5nLCBDb25zIChJbnRlZ2VyLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICA7O1xuXG4gICAgICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5TdGFibGUuVjEubWFrZSB+Y29tcGFyZSB+c2V4cF9vZl90KVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoVDEpXG5cbiAgICBsZXQldGVzdF91bml0IFwidF9vZl9zZXhwXCIgPVxuICAgICAgWyV0ZXN0X3Jlc3VsdDogdF1cbiAgICAgICAgKHRfb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcge3wobG9jYWxob3N0IDgwODApfH0pKVxuICAgICAgICB+ZXhwZWN0OnsgaG9zdCA9IFwibG9jYWxob3N0XCI7IHBvcnQgPSA4MDgwIH07XG4gICAgICBbJXRlc3RfcmVzdWx0OiB0XVxuICAgICAgICAodF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyB7fGxvY2FsaG9zdDo4MDgwfH0pKVxuICAgICAgICB+ZXhwZWN0OnsgaG9zdCA9IFwibG9jYWxob3N0XCI7IHBvcnQgPSA4MDgwIH1cbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBcInNleHAgcm91bmR0cmlwXCIgPVxuICAgICAgUXVpY2tjaGVjay50ZXN0IFslcXVpY2tjaGVjay5nZW5lcmF0b3I6IHRdIH5mOihmdW4gdCAtPlxuICAgICAgICBbJXRlc3RfcmVzdWx0OiB0XSAodF9vZl9zZXhwIChzZXhwX29mX3QgdCkpIH5leHBlY3Q6dClcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5vcGVuISBJbXBvcnRcbm9wZW4hIFN0ZF9pbnRlcm5hbFxuXG5tb2R1bGUgTGF0ZXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgU3RhYmxlLlYxXG5lbmRcblxuaW5jbHVkZSBMYXRlc3RcblxubGV0IGNyZWF0ZSB+aG9zdCB+cG9ydCA9IHsgaG9zdDsgcG9ydCB9XG5sZXQgaG9zdCB0ID0gdC5ob3N0XG5sZXQgcG9ydCB0ID0gdC5wb3J0XG5sZXQgdHVwbGUgdCA9IHRvX3NlcmlhbGl6YWJsZSB0XG5cbmluY2x1ZGUgUHJldHR5X3ByaW50ZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gXCJDb3JlLkhvc3RfYW5kX3BvcnRcIlxuICBlbmQpXG5cbmluY2x1ZGUgKEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoTGF0ZXN0KSA6IEhhc2hhYmxlLlNfYmluYWJsZSB3aXRoIHR5cGUgdCA6PSB0KVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChMYXRlc3QpXG5cbmxldCB0eXBlX2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6XCJIb3N0X2FuZF9wb3J0XCIgc2V4cF9vZl90XG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBXaXRob3V0X2NvbnRhaW5lcnMgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBJbnQuU3RhYmxlLlYxLnQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgZXhjZXB0aW9uIFBpZF9tdXN0X2JlX3Bvc2l0aXZlIG9mIEludC5TdGFibGUuVjEudCBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgICBsZXQgZW5zdXJlIGkgPSBpZiBpIDw9IDAgdGhlbiByYWlzZSAoUGlkX211c3RfYmVfcG9zaXRpdmUgaSkgZWxzZSBpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEludC5TdGFibGUuVjEpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgdHlwZSB0ID0gSW50LlN0YWJsZS5WMS50XG5cbiAgICAgICAgICAgIGxldCB0b19zZXhwYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBlbnN1cmVcbiAgICAgICAgICBlbmQpXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgQmluYWJsZS5TdGFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgIChJbnQuU3RhYmxlLlYxKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9IEludC5TdGFibGUuVjEudFxuXG4gICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IGVuc3VyZVxuICAgICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSAodmFsIENvbXBhcmF0b3IuU3RhYmxlLlYxLm1ha2UgfmNvbXBhcmUgfnNleHBfb2ZfdClcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgQ29tcGFyYWJsZS5TdGFibGUuVjEuTWFrZSAoV2l0aG91dF9jb250YWluZXJzKVxuICAgIGluY2x1ZGUgV2l0aG91dF9jb250YWluZXJzXG4gIGVuZFxuXG4gIG1vZHVsZSBMYXRlc3QgPSBWMVxuZW5kXG5cbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTdGFibGUuTGF0ZXN0LldpdGhvdXRfY29udGFpbmVyc1xuXG50eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgaGFzaF1cblxubGV0IG9mX2ludCBpID0gZW5zdXJlIGlcbmxldCB0b19pbnQgPSBGbi5pZFxubGV0IG9mX3N0cmluZyBzdHJpbmcgPSBlbnN1cmUgKEludC5vZl9zdHJpbmcgc3RyaW5nKVxubGV0IHRvX3N0cmluZyA9IEludC50b19zdHJpbmdcbmxldCBpbml0ID0gb2ZfaW50IDFcblxuaW5jbHVkZSBJZGVudGlmaWFibGUuTWFrZV91c2luZ19jb21wYXJhdG9yIChzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgbGV0IHRvX3N0cmluZyA9IHRvX3N0cmluZ1xuICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5QaWRcIlxuICBlbmQpXG4iLCIoKiogU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGEgcG9seW1vcnBoaWMgZnVuY3Rpb25hbCBkb3VibGUtZW5kZWQgcXVldWUuICopXG5cbigqKiBJbnZhcmlhbnRzOlxuICAgIC0gcXVldWUubGVuZ3RoID0gTGlzdC5sZW5ndGggcXVldWUuZnJvbnQgKyBMaXN0Lmxlbmd0aCBxdWV1ZS5iYWNrXG4gICAgLSBpZiBxdWV1ZSBoYXMgPj0gMiBlbGVtZW50cywgbmVpdGhlciBmcm9udCBub3IgYmFjayBhcmUgZW1wdHlcbiopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxuZXhjZXB0aW9uIEVtcHR5IFtAQGRlcml2aW5nIHNleHBdXG5cbnR5cGUgJ2EgdCA9XG4gIHsgZnJvbnQgOiAnYSBsaXN0XG4gIDsgYmFjayA6ICdhIGxpc3RcbiAgOyBsZW5ndGggOiBpbnRcbiAgfVxuXG5sZXQgbGVuZ3RoIHQgPSB0Lmxlbmd0aFxubGV0IGlzX2VtcHR5IHQgPSB0Lmxlbmd0aCA9IDBcblxubGV0IGludmFyaWFudCBmIHQgPVxuICBsZXQgbl9mcm9udCA9IExpc3QubGVuZ3RoIHQuZnJvbnQgaW5cbiAgbGV0IG5fYmFjayA9IExpc3QubGVuZ3RoIHQuYmFjayBpblxuICBhc3NlcnQgKHQubGVuZ3RoID0gbl9mcm9udCArIG5fYmFjayk7XG4gIGFzc2VydCAodC5sZW5ndGggPCAyIHx8IChuX2Zyb250IDw+IDAgJiYgbl9iYWNrIDw+IDApKTtcbiAgTGlzdC5pdGVyIHQuZnJvbnQgfmY7XG4gIExpc3QuaXRlciB0LmJhY2sgfmZcbjs7XG5cbmxldCBtYWtlIH5sZW5ndGggfmZyb250IH5iYWNrID1cbiAgbWF0Y2ggZnJvbnQsIGJhY2sgd2l0aFxuICB8IFtdLCBbXSB8IFsgXyBdLCBbXSB8IFtdLCBbIF8gXSB8IF8gOjogXywgXyA6OiBfIC0+IHsgZnJvbnQ7IGJhY2s7IGxlbmd0aCB9XG4gIHwgW10sIF8gOjogXyA6OiBfIC0+XG4gICAgbGV0IGJhY2ssIHJldl9mcm9udCA9IExpc3Quc3BsaXRfbiBiYWNrIChsZW5ndGggLyAyKSBpblxuICAgIHsgZnJvbnQgPSBMaXN0LnJldiByZXZfZnJvbnQ7IGJhY2s7IGxlbmd0aCB9XG4gIHwgXyA6OiBfIDo6IF8sIFtdIC0+XG4gICAgbGV0IGZyb250LCByZXZfYmFjayA9IExpc3Quc3BsaXRfbiBmcm9udCAobGVuZ3RoIC8gMikgaW5cbiAgICB7IGZyb250OyBiYWNrID0gTGlzdC5yZXYgcmV2X2JhY2s7IGxlbmd0aCB9XG47O1xuXG5sZXQgZW1wdHkgPSB7IGZyb250ID0gW107IGJhY2sgPSBbXTsgbGVuZ3RoID0gMCB9XG5sZXQgZW5xdWV1ZV9mcm9udCB0IHggPSBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoICsgMSkgfmZyb250Oih4IDo6IHQuZnJvbnQpIH5iYWNrOnQuYmFja1xubGV0IGVucXVldWVfYmFjayB0IHggPSBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoICsgMSkgfmJhY2s6KHggOjogdC5iYWNrKSB+ZnJvbnQ6dC5mcm9udFxuXG5sZXRbQGNvbGRdIHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSA9XG4gIHJhaXNlX3MgWyVzZXhwIFwiQlVHOiBGZGVxdWU6IHxmcm9udHwgPSAwLCB8YmFja3wgPj0gMlwiXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9iYWNrX2ludmFyaWFudCAoKSA9XG4gIHJhaXNlX3MgWyVzZXhwIFwiQlVHOiBGZGVxdWU6IHxiYWNrfCA9IDAsIHxmcm9udHwgPj0gMlwiXVxuOztcblxubGV0IHBlZWtfZnJvbnRfZXhuIHQgPVxuICBtYXRjaCB0LmZyb250IHdpdGhcbiAgfCB4IDo6IF8gLT4geFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuYmFjayB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIHggXSAtPiB4XG4gICAgIHwgXyA6OiBfIDo6IF8gLT4gcmFpc2VfZnJvbnRfaW52YXJpYW50ICgpKVxuOztcblxubGV0IHBlZWtfYmFja19leG4gdCA9XG4gIG1hdGNoIHQuYmFjayB3aXRoXG4gIHwgeCA6OiBfIC0+IHhcbiAgfCBbXSAtPlxuICAgIChtYXRjaCB0LmZyb250IHdpdGhcbiAgICAgfCBbXSAtPiByYWlzZSBFbXB0eVxuICAgICB8IFsgeCBdIC0+IHhcbiAgICAgfCBfIDo6IF8gOjogXyAtPiByYWlzZV9iYWNrX2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkcm9wX2Zyb250X2V4biB0ID1cbiAgbWF0Y2ggdC5mcm9udCB3aXRoXG4gIHwgXyA6OiB4cyAtPiBtYWtlIH5sZW5ndGg6KHQubGVuZ3RoIC0gMSkgfmZyb250OnhzIH5iYWNrOnQuYmFja1xuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQuYmFjayB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIF8gXSAtPiBlbXB0eVxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2Zyb250X2ludmFyaWFudCAoKSlcbjs7XG5cbmxldCBkcm9wX2JhY2tfZXhuIHQgPVxuICBtYXRjaCB0LmJhY2sgd2l0aFxuICB8IF8gOjogeHMgLT4gbWFrZSB+bGVuZ3RoOih0Lmxlbmd0aCAtIDEpIH5iYWNrOnhzIH5mcm9udDp0LmZyb250XG4gIHwgW10gLT5cbiAgICAobWF0Y2ggdC5mcm9udCB3aXRoXG4gICAgIHwgW10gLT4gcmFpc2UgRW1wdHlcbiAgICAgfCBbIF8gXSAtPiBlbXB0eVxuICAgICB8IF8gOjogXyA6OiBfIC0+IHJhaXNlX2JhY2tfaW52YXJpYW50ICgpKVxuOztcblxubGV0IGRlcXVldWVfZnJvbnRfZXhuIHQgPSBwZWVrX2Zyb250X2V4biB0LCBkcm9wX2Zyb250X2V4biB0XG5sZXQgZGVxdWV1ZV9iYWNrX2V4biB0ID0gcGVla19iYWNrX2V4biB0LCBkcm9wX2JhY2tfZXhuIHRcblxubGV0IG9wdGlvbmFsIGYgdCA9XG4gIG1hdGNoIGYgdCB3aXRoXG4gIHwgeCAtPiBTb21lIHhcbiAgfCBleGNlcHRpb24gRW1wdHkgLT4gTm9uZVxuOztcblxubGV0IHBlZWtfZnJvbnQgdCA9IG9wdGlvbmFsIHBlZWtfZnJvbnRfZXhuIHRcbmxldCBwZWVrX2JhY2sgdCA9IG9wdGlvbmFsIHBlZWtfYmFja19leG4gdFxubGV0IGRyb3BfZnJvbnQgdCA9IG9wdGlvbmFsIGRyb3BfZnJvbnRfZXhuIHRcbmxldCBkcm9wX2JhY2sgdCA9IG9wdGlvbmFsIGRyb3BfYmFja19leG4gdFxubGV0IGRlcXVldWVfZnJvbnQgdCA9IG9wdGlvbmFsIGRlcXVldWVfZnJvbnRfZXhuIHRcbmxldCBkZXF1ZXVlX2JhY2sgdCA9IG9wdGlvbmFsIGRlcXVldWVfYmFja19leG4gdFxuXG5sZXQgZW5xdWV1ZSB0IHNpZGUgeCA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBlbnF1ZXVlX2Zyb250IHQgeFxuICB8IGBiYWNrIC0+IGVucXVldWVfYmFjayB0IHhcbjs7XG5cbmxldCBwZWVrIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuOztcblxubGV0IHBlZWtfZXhuIHQgc2lkZSA9XG4gIG1hdGNoIHNpZGUgd2l0aFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gcGVla19iYWNrX2V4biB0XG47O1xuXG5sZXQgZHJvcCB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZHJvcF9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZHJvcF9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2V4biB0IHNpZGUgPVxuICBtYXRjaCBzaWRlIHdpdGhcbiAgfCBgZnJvbnQgLT4gZHJvcF9mcm9udF9leG4gdFxuICB8IGBiYWNrIC0+IGRyb3BfYmFja19leG4gdFxuOztcblxubGV0IGRlcXVldWUgdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnQgdFxuICB8IGBiYWNrIC0+IGRlcXVldWVfYmFjayB0XG47O1xuXG5sZXQgZGVxdWV1ZV9leG4gdCBzaWRlID1cbiAgbWF0Y2ggc2lkZSB3aXRoXG4gIHwgYGZyb250IC0+IGRlcXVldWVfZnJvbnRfZXhuIHRcbiAgfCBgYmFjayAtPiBkZXF1ZXVlX2JhY2tfZXhuIHRcbjs7XG5cbmxldCByZXYgdCA9IHsgdCB3aXRoIGZyb250ID0gdC5iYWNrOyBiYWNrID0gdC5mcm9udCB9XG5cbm1vZHVsZSBBcmJpdHJhcnlfb3JkZXIgPSBzdHJ1Y3RcbiAgbGV0IGlzX2VtcHR5ID0gaXNfZW1wdHlcbiAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICBsZXQgdG9fbGlzdCB0ID0gTGlzdC5yZXZfYXBwZW5kIHQuZnJvbnQgdC5iYWNrXG4gIGxldCB0b19hcnJheSB0ID0gQXJyYXkub2ZfbGlzdCAodG9fbGlzdCB0KVxuICBsZXQgdG9fc2VxdWVuY2UgdCA9IFNlcXVlbmNlLmFwcGVuZCAoU2VxdWVuY2Uub2ZfbGlzdCB0LmZyb250KSAoU2VxdWVuY2Uub2ZfbGlzdCB0LmJhY2spXG5cbiAgbGV0IHN1bSAodHlwZSBhKSAobW9kdWxlIE0gOiBDb250YWluZXIuU3VtbWFibGUgd2l0aCB0eXBlIHQgPSBhKSB0IH5mID1cbiAgICBsZXQgb3BlbiBNIGluXG4gICAgTGlzdC5zdW0gKG1vZHVsZSBNKSB0LmZyb250IH5mICsgTGlzdC5zdW0gKG1vZHVsZSBNKSB0LmJhY2sgfmZcbiAgOztcblxuICBsZXQgY291bnQgdCB+ZiA9IExpc3QuY291bnQgdC5mcm9udCB+ZiArIExpc3QuY291bnQgdC5iYWNrIH5mXG4gIGxldCBmb3JfYWxsIHQgfmYgPSBMaXN0LmZvcl9hbGwgdC5mcm9udCB+ZiAmJiBMaXN0LmZvcl9hbGwgdC5iYWNrIH5mXG4gIGxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIHQuZnJvbnQgfmYgfHwgTGlzdC5leGlzdHMgdC5iYWNrIH5mXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCB0LmZyb250IHggfHwgTGlzdC5tZW0gfmVxdWFsIHQuYmFjayB4XG5cbiAgbGV0IGl0ZXIgdCB+ZiA9XG4gICAgTGlzdC5pdGVyIHQuZnJvbnQgfmY7XG4gICAgTGlzdC5pdGVyIHQuYmFjayB+ZlxuICA7O1xuXG4gIGxldCBmb2xkIHQgfmluaXQgfmYgPVxuICAgIExpc3QuZm9sZCB0LmZyb250IH5pbml0IH5mIHw+IGZ1biBpbml0IC0+IExpc3QuZm9sZCB0LmJhY2sgfmluaXQgfmZcbiAgOztcblxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5cbiAgbGV0IGZpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kIHQuZnJvbnQgfmYgd2l0aFxuICAgIHwgTm9uZSAtPiBMaXN0LmZpbmQgdC5iYWNrIH5mXG4gICAgfCBzb21lIC0+IHNvbWVcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9XG4gICAgbWF0Y2ggTGlzdC5maW5kX21hcCB0LmZyb250IH5mIHdpdGhcbiAgICB8IE5vbmUgLT4gTGlzdC5maW5kX21hcCB0LmJhY2sgfmZcbiAgICB8IHNvbWUgLT4gc29tZVxuICA7O1xuXG4gIGxldCBtYXhfZWx0IHQgfmNvbXBhcmUgPVxuICAgIG1hdGNoIExpc3QubWF4X2VsdCB0LmZyb250IH5jb21wYXJlLCBMaXN0Lm1heF9lbHQgdC5iYWNrIH5jb21wYXJlIHdpdGhcbiAgICB8IE5vbmUsIG9wdCB8IG9wdCwgTm9uZSAtPiBvcHRcbiAgICB8IChTb21lIHggYXMgc29tZV94KSwgKFNvbWUgeSBhcyBzb21lX3kpIC0+XG4gICAgICBpZiBjb21wYXJlIHggeSA+PSAwIHRoZW4gc29tZV94IGVsc2Ugc29tZV95XG4gIDs7XG5cbiAgbGV0IG1pbl9lbHQgdCB+Y29tcGFyZSA9XG4gICAgbWF0Y2ggTGlzdC5taW5fZWx0IHQuZnJvbnQgfmNvbXBhcmUsIExpc3QubWluX2VsdCB0LmJhY2sgfmNvbXBhcmUgd2l0aFxuICAgIHwgTm9uZSwgb3B0IHwgb3B0LCBOb25lIC0+IG9wdFxuICAgIHwgKFNvbWUgeCBhcyBzb21lX3gpLCAoU29tZSB5IGFzIHNvbWVfeSkgLT5cbiAgICAgIGlmIGNvbXBhcmUgeCB5IDw9IDAgdGhlbiBzb21lX3ggZWxzZSBzb21lX3lcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV9jb250YWluZXIgKEYgOiBzaWdcbiAgICB2YWwgdG9fbGlzdCA6ICdhIHQgLT4gJ2EgbGlzdFxuICBlbmQpID1cbnN0cnVjdFxuICBsZXQgdG9fbGlzdCA9IEYudG9fbGlzdFxuICBsZXQgaXNfZW1wdHkgPSBpc19lbXB0eVxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gIGxldCBtZW0gdCB4IH5lcXVhbCA9IExpc3QubWVtIH5lcXVhbCAodG9fbGlzdCB0KSB4XG4gIGxldCBpdGVyIHQgfmYgPSBMaXN0Lml0ZXIgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAodG9fbGlzdCB0KSB+aW5pdCB+ZlxuICBsZXQgZXhpc3RzIHQgfmYgPSBMaXN0LmV4aXN0cyAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsICh0b19saXN0IHQpIH5mXG4gIGxldCBjb3VudCB0IH5mID0gTGlzdC5jb3VudCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgc3VtIG0gdCB+ZiA9IExpc3Quc3VtIG0gKHRvX2xpc3QgdCkgfmZcbiAgbGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAodG9fbGlzdCB0KSB+ZlxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IExpc3QuZmluZF9tYXAgKHRvX2xpc3QgdCkgfmZcbiAgbGV0IHRvX2FycmF5IHQgPSBMaXN0LnRvX2FycmF5ICh0b19saXN0IHQpXG4gIGxldCBtaW5fZWx0IHQgfmNvbXBhcmUgPSBMaXN0Lm1pbl9lbHQgKHRvX2xpc3QgdCkgfmNvbXBhcmVcbiAgbGV0IG1heF9lbHQgdCB+Y29tcGFyZSA9IExpc3QubWF4X2VsdCAodG9fbGlzdCB0KSB+Y29tcGFyZVxuICBsZXQgZm9sZF9yZXN1bHQgdCB+aW5pdCB+ZiA9IENvbnRhaW5lci5mb2xkX3Jlc3VsdCB+Zm9sZCB+aW5pdCB+ZiB0XG4gIGxldCBmb2xkX3VudGlsIHQgfmluaXQgfmYgPSBDb250YWluZXIuZm9sZF91bnRpbCB+Zm9sZCB+aW5pdCB+ZiB0XG5lbmRcblxubW9kdWxlIEZyb250X3RvX2JhY2sgPSBzdHJ1Y3RcbiAgbGV0IG9mX2xpc3QgbGlzdCA9IG1ha2Ugfmxlbmd0aDooTGlzdC5sZW5ndGggbGlzdCkgfmZyb250Omxpc3QgfmJhY2s6W11cbiAgbGV0IHRvX2xpc3QgdCA9IHQuZnJvbnQgQCBMaXN0LnJldiB0LmJhY2tcblxuICBsZXQgdG9fc2VxdWVuY2UgdCA9XG4gICAgU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuZnJvbnQpIChTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiB0LmJhY2spKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgbGV0IGxlbmd0aCwgYmFjayA9XG4gICAgICBTZXF1ZW5jZS5mb2xkIHNlcXVlbmNlIH5pbml0OigwLCBbXSkgfmY6KGZ1biAobGVuZ3RoLCBhY2MpIGEgLT5cbiAgICAgICAgbGVuZ3RoICsgMSwgYSA6OiBhY2MpXG4gICAgaW5cbiAgICBtYWtlIH5sZW5ndGggfmZyb250OltdIH5iYWNrXG4gIDs7XG5cbiAgaW5jbHVkZSBNYWtlX2NvbnRhaW5lciAoc3RydWN0XG4gICAgICBsZXQgdG9fbGlzdCA9IHRvX2xpc3RcbiAgICBlbmQpXG5lbmRcblxubW9kdWxlIEJhY2tfdG9fZnJvbnQgPSBzdHJ1Y3RcbiAgbGV0IHRvX2xpc3QgdCA9IHQuYmFjayBAIExpc3QucmV2IHQuZnJvbnRcbiAgbGV0IG9mX2xpc3QgbGlzdCA9IG1ha2Ugfmxlbmd0aDooTGlzdC5sZW5ndGggbGlzdCkgfmJhY2s6bGlzdCB+ZnJvbnQ6W11cblxuICBsZXQgdG9fc2VxdWVuY2UgdCA9XG4gICAgU2VxdWVuY2UuYXBwZW5kIChTZXF1ZW5jZS5vZl9saXN0IHQuYmFjaykgKFNlcXVlbmNlLm9mX2xpc3QgKExpc3QucmV2IHQuZnJvbnQpKVxuICA7O1xuXG4gIGxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gICAgbGV0IGxlbmd0aCwgZnJvbnQgPVxuICAgICAgU2VxdWVuY2UuZm9sZCBzZXF1ZW5jZSB+aW5pdDooMCwgW10pIH5mOihmdW4gKGxlbmd0aCwgYWNjKSBhIC0+XG4gICAgICAgIGxlbmd0aCArIDEsIGEgOjogYWNjKVxuICAgIGluXG4gICAgbWFrZSB+bGVuZ3RoIH5mcm9udCB+YmFjazpbXVxuICA7O1xuXG4gIGluY2x1ZGUgTWFrZV9jb250YWluZXIgKHN0cnVjdFxuICAgICAgbGV0IHRvX2xpc3QgPSB0b19saXN0XG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGUgRnJvbnRfdG9fYmFja1xuXG5sZXQgc2luZ2xldG9uIHggPSBvZl9saXN0IFsgeCBdXG5cbmluY2x1ZGUgTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBiaW5kIHQgfmYgPVxuICAgICAgZm9sZCB0IH5pbml0OmVtcHR5IH5mOihmdW4gdCBlbHQgLT4gZm9sZCAoZiBlbHQpIH5pbml0OnQgfmY6ZW5xdWV1ZV9iYWNrKVxuICAgIDs7XG5cbiAgICBsZXQgcmV0dXJuID0gc2luZ2xldG9uXG5cbiAgICBsZXQgbWFwID1cbiAgICAgIGBDdXN0b21cbiAgICAgICAgKGZ1biB0IH5mIC0+XG4gICAgICAgICAgIHsgZnJvbnQgPSBMaXN0Lm1hcCB0LmZyb250IH5mOyBiYWNrID0gTGlzdC5tYXAgdC5iYWNrIH5mOyBsZW5ndGggPSB0Lmxlbmd0aCB9KVxuICAgIDs7XG4gIGVuZClcblxubGV0IGNvbXBhcmUgY21wIHQxIHQyID0gTGlzdC5jb21wYXJlIGNtcCAodG9fbGlzdCB0MSkgKHRvX2xpc3QgdDIpXG5sZXQgZXF1YWwgZXEgdDEgdDIgPSBMaXN0LmVxdWFsIGVxICh0b19saXN0IHQxKSAodG9fbGlzdCB0MilcblxubGV0IGhhc2hfZm9sZF90IGhhc2hfZm9sZF9hIHN0YXRlIHQgPVxuICBmb2xkIH5mOmhhc2hfZm9sZF9hIH5pbml0OihbJWhhc2hfZm9sZDogaW50XSBzdGF0ZSAobGVuZ3RoIHQpKSB0XG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgc2V4cF9vZl90IHNleHBfb2ZfZWx0IHQgPSBbJXNleHBfb2Y6IGVsdCBsaXN0XSAodG9fbGlzdCB0KVxuICAgIGxldCB0X29mX3NleHAgZWx0X29mX3NleHAgc2V4cCA9IG9mX2xpc3QgKFslb2Zfc2V4cDogZWx0IGxpc3RdIHNleHApXG4gICAgbGV0IHRfc2V4cF9ncmFtbWFyID0gTGlzdC50X3NleHBfZ3JhbW1hclxuICAgIGxldCBtYXAgPSBtYXBcblxuICAgIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCI4M2Y5Njk4Mi00OTkyLTExZTYtOTE5ZC1mYmRkY2ZkY2E1NzZcIlxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLkZkZXF1ZVwiXG4gICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgICAgbGV0IGl0ZXIgdCB+ZiA9IExpc3QuaXRlciAodG9fbGlzdCB0KSB+ZlxuXG4gICAgICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgICAgIGxldCByZWMgbG9vcCBuZXh0IGFjYyBuID1cbiAgICAgICAgICAgIGlmIGxlbiA9IG5cbiAgICAgICAgICAgIHRoZW4gYWNjXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgYXNzZXJ0IChuID0gbGVuZ3RoIGFjYyk7XG4gICAgICAgICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICAgICAgICBsb29wIG5leHQgKGVucXVldWVfYmFjayBhY2MgeCkgKG4gKyAxKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxvb3AgbmV4dCBlbXB0eSAwXG4gICAgICAgIDs7XG4gICAgICBlbmQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgKFN0YWJsZS5WMSA6IG1vZHVsZSB0eXBlIG9mIFN0YWJsZS5WMSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0KVxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYnVpbGQgfmZyb250IH5iYWNrID1cbiAgICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGggZnJvbnQgKyBMaXN0Lmxlbmd0aCBiYWNrIGluXG4gICAgbGV0IHQgPSB7IGxlbmd0aDsgZnJvbnQ7IGJhY2sgfSBpblxuICAgIGludmFyaWFudCBpZ25vcmUgdDtcbiAgICB0XG4gIDs7XG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBGZGVxdWVcblxubGV0IGVucXVldWUgPSBlbnF1ZXVlX2JhY2tcbmxldCBwZWVrX2V4biA9IHBlZWtfZnJvbnRfZXhuXG5sZXQgcGVlayA9IHBlZWtfZnJvbnRcbmxldCBkZXF1ZXVlX2V4biA9IGRlcXVldWVfZnJvbnRfZXhuXG5sZXQgZGVxdWV1ZSA9IGRlcXVldWVfZnJvbnRcbmxldCBkcm9wX2V4biA9IGRyb3BfZnJvbnRfZXhuXG5sZXQgdG9fc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLnRvX3NlcXVlbmNlXG5sZXQgb2Zfc2VxdWVuY2UgPSBGcm9udF90b19iYWNrLm9mX3NlcXVlbmNlXG5cbigqIERlcHJlY2F0ZWQgYWxpYXNlcyAqKVxubGV0IHRvcCA9IHBlZWtcbmxldCB0b3BfZXhuID0gcGVla19leG5cbmxldCBkaXNjYXJkX2V4biA9IGRyb3BfZXhuXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG9wZW4gU3RhYmxlX2ludGVybmFsXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyBtdXRhYmxlIHZhbHVlIDogJ2Egb3B0aW9uXG4gICAgICA7IG11dGFibGUgc2V0X2F0IDogU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlLlYxLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIG1vZHVsZSBGb3JtYXQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiByZWYgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIFQudFxuXG4gICAgICBsZXQgb2ZfZm9ybWF0ICh2MSA6ICdhIEZvcm1hdC50KSA6ICdhIHQgPSB7IHZhbHVlID0gIXYxOyBzZXRfYXQgPSBbJWhlcmVdIH1cbiAgICAgIGxldCB0b19mb3JtYXQgKHQgOiAnYSB0KSA6ICdhIEZvcm1hdC50ID0gcmVmIHQudmFsdWVcbiAgICBlbmRcblxuICAgIGluY2x1ZGUgVFxuXG4gICAgaW5jbHVkZVxuICAgICAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9mb3JtYXRcbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX2Zvcm1hdFxuICAgICAgICBlbmQpXG5cbiAgICBpbmNsdWRlXG4gICAgICBTZXhwYWJsZS5PZl9zZXhwYWJsZTFcbiAgICAgICAgKEZvcm1hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVFxuXG4gICAgICAgICAgbGV0IG9mX3NleHBhYmxlID0gb2ZfZm9ybWF0XG4gICAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fZm9ybWF0XG4gICAgICAgIGVuZClcbiAgZW5kXG5lbmRcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVW5zdGFibGUgPSBTdGFibGUuVjFcbm9wZW4gU3RhYmxlLlRcblxudHlwZSAnYSB0ID0gJ2EgU3RhYmxlLlQudFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB7IHZhbHVlOyBzZXRfYXQgfSA9XG4gIG1hdGNoIHZhbHVlIHdpdGhcbiAgfCBOb25lIC0+IFslbWVzc2FnZSBcInVuc2V0XCJdXG4gIHwgU29tZSB2YWx1ZSAtPlxuICAgIFslbWVzc2FnZSBcIlwiICh2YWx1ZSA6IGEpIH5zZXRfYXQ6KHNldF9hdCB8PiBTb3VyY2VfY29kZV9wb3NpdGlvbi50b19zdHJpbmcpXVxuOztcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbWF0Y2ggdC52YWx1ZSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYSAtPiBpbnZhcmlhbnRfYSBhXG47O1xuXG5sZXQgY3JlYXRlICgpID0geyB2YWx1ZSA9IE5vbmU7IHNldF9hdCA9IFslaGVyZV0gfVxuXG5sZXQgc2V0X2ludGVybmFsIHQgaGVyZSB2YWx1ZSA9XG4gIHQudmFsdWUgPC0gU29tZSB2YWx1ZTtcbiAgdC5zZXRfYXQgPC0gaGVyZVxuOztcblxubGV0IHNldF9pZl9ub25lIHQgaGVyZSB2YWx1ZSA9IGlmIE9wdGlvbi5pc19ub25lIHQudmFsdWUgdGhlbiBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlXG5cbmxldCBzZXQgdCBoZXJlIHZhbHVlID1cbiAgaWYgT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxuICB0aGVuIChcbiAgICBzZXRfaW50ZXJuYWwgdCBoZXJlIHZhbHVlO1xuICAgIE9rICgpKVxuICBlbHNlXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1NldF9vbmNlLnNldF9leG5dIGFscmVhZHkgc2V0XCJcbiAgICAgICAgICB+c2V0dGluZ19hdDooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXG4gICAgICAgICAgfnByZXZpb3VzbHlfc2V0X2F0Oih0LnNldF9hdCA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXVxuOztcblxubGV0IHNldF9leG4gdCBoZXJlIHZhbHVlID0gT3JfZXJyb3Iub2tfZXhuIChzZXQgdCBoZXJlIHZhbHVlKVxubGV0IGdldCB0ID0gdC52YWx1ZVxuXG5sZXQgZ2V0X2V4biAodCA6IF8gdCkgaGVyZSA9XG4gIG1hdGNoIHQudmFsdWUgd2l0aFxuICB8IFNvbWUgYSAtPiBhXG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1NldF9vbmNlLmdldF9leG5dIHVuc2V0XCIgfmF0OihoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgaXNfbm9uZSB0ID0gT3B0aW9uLmlzX25vbmUgdC52YWx1ZVxubGV0IGlzX3NvbWUgdCA9IE9wdGlvbi5pc19zb21lIHQudmFsdWVcbmxldCBpdGVyIHQgfmYgPSBPcHRpb24uaXRlciB0LnZhbHVlIH5mXG5cbm1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgIGxldCB1bnNhZmVfdmFsdWUgdCA9IGdldF9leG4gdCBbJWhlcmVdXG4gIGVuZFxuZW5kXG4iLCJtb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBTaGFwZSA9IENvbW1hbmRfc2hhcGUuU3RhYmxlXG5lbmRcblxub3BlbiEgSW1wb3J0XG5vcGVuISBTdGRfaW50ZXJuYWxcbmluY2x1ZGUgQ29tbWFuZF9pbnRmXG5tb2R1bGUgU2hhcGUgPSBDb21tYW5kX3NoYXBlXG5cbigqIGluIG9yZGVyIHRvIGRlZmluZSBleHBlY3QgdGVzdHMsIHdlIHdhbnQgdG8gcmFpc2UgcmF0aGVyIHRoYW4gZXhpdCBpZiB0aGUgY29kZSBpc1xuICAgcnVubmluZyBpbiB0aGUgdGVzdCBydW5uZXIgcHJvY2VzcyAqKVxubGV0IHJhaXNlX2luc3RlYWRfb2ZfZXhpdCA9XG4gIG1hdGNoIFBweF9pbmxpbmVfdGVzdF9saWIuUnVudGltZS50ZXN0aW5nIHdpdGhcbiAgfCBgVGVzdGluZyBgQW1fdGVzdF9ydW5uZXIgLT4gdHJ1ZVxuICB8IGBUZXN0aW5nIGBBbV9jaGlsZF9vZl90ZXN0X3J1bm5lciB8IGBOb3RfdGVzdGluZyAtPiBmYWxzZVxuOztcblxuZXhjZXB0aW9uIEV4aXRfY2FsbGVkIG9mIHsgc3RhdHVzIDogaW50IH0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuKCogW3JhaXNlX2luc3RlYWRfb2ZfZXhpdF0tcmVzcGVjdGluZyB3cmFwcGVycyBmb3IgW2V4aXRdIGFuZCBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0ICopXG5pbmNsdWRlIHN0cnVjdFxuICBsZXQgZXhpdCBzdGF0dXMgPVxuICAgIGlmIHJhaXNlX2luc3RlYWRfb2ZfZXhpdCB0aGVuIHJhaXNlIChFeGl0X2NhbGxlZCB7IHN0YXR1cyB9KSBlbHNlIGV4aXQgc3RhdHVzXG4gIDs7XG5cbiAgbW9kdWxlIEV4biA9IHN0cnVjdFxuICAgIGxldCB0b19zdHJpbmcgPSBFeG4udG9fc3RyaW5nXG5cbiAgICBsZXQgaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYgPVxuICAgICAgaWYgcmFpc2VfaW5zdGVhZF9vZl9leGl0XG4gICAgICB0aGVuIChcbiAgICAgICAgdHJ5IGYgKCkgd2l0aFxuICAgICAgICB8IEV4aXRfY2FsbGVkIHsgc3RhdHVzID0gMCB9IGFzIGV4biAtPiBwcmludF9zIFslc2V4cCAoZXhuIDogZXhuKV0pXG4gICAgICBlbHNlIEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZlxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbmxldCB1bndvcmRzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiIHhzXG5sZXQgdW5wYXJhZ3JhcGhzIHhzID0gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXFxuXCIgeHNcblxuZXhjZXB0aW9uIEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgb2Ygc3RyaW5nXG5cbmxldCBkaWUgZm10ID0gUHJpbnRmLmtzcHJpbnRmIChmdW4gbXNnICgpIC0+IHJhaXNlIChGYWlsZWRfdG9fcGFyc2VfY29tbWFuZF9saW5lIG1zZykpIGZtdFxubGV0IGhlbHBfc2NyZWVuX2NvbXBhcmUgPSBTaGFwZS5Qcml2YXRlLmhlbHBfc2NyZWVuX2NvbXBhcmVcblxuKCogdW5pdmVyc2FsIG1hcHMgYXJlIHVzZWQgdG8gcGFzcyBhcm91bmQgdmFsdWVzIGJldHdlZW4gZGlmZmVyZW50IGJpdHNcbiAgIG9mIGNvbW1hbmQgbGluZSBwYXJzaW5nIGNvZGUgd2l0aG91dCBoYXZpbmcgYSBodWdlIGltcGFjdCBvbiB0aGVcbiAgIHR5cGVzIGludm9sdmVkXG5cbiAgIDEuIHBhc3NpbmcgdmFsdWVzIGZyb20gcGFyc2VkIGFyZ3MgdG8gY29tbWFuZC1saW5lIGF1dG9jb21wbGV0ZSBmdW5jdGlvbnNcbiAgIDIuIHBhc3Npbmcgc3BlY2lhbCB2YWx1ZXMgdG8gYSBiYXNlIGNvbW1hbmRzIHRoYXQgcmVxdWVzdCB0aGVtIGluIHRoZWlyIHNwZWNcbiAqIGV4cGFuZGVkIHN1YmNvbW1hbmQgcGF0aFxuICogYXJncyBwYXNzZWQgdG8gdGhlIGJhc2UgY29tbWFuZFxuICogaGVscCB0ZXh0IGZvciB0aGUgYmFzZSBjb21tYW5kXG4qKVxubW9kdWxlIEVudiA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaXZfbWFwXG5cbiAgbGV0IGtleV9jcmVhdGUgbmFtZSA9IFVuaXZfbWFwLktleS5jcmVhdGUgfm5hbWUgc2V4cF9vZl9vcGFxdWVcbiAgbGV0IG11bHRpX2FkZCA9IFVuaXZfbWFwLk11bHRpLmFkZFxuICBsZXQgc2V0X3dpdGhfZGVmYXVsdCA9IFVuaXZfbWFwLldpdGhfZGVmYXVsdC5zZXRcbmVuZFxuXG5tb2R1bGUgQXV0b19jb21wbGV0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBzdHJpbmcgbGlzdFxuZW5kXG5cbm1vZHVsZSBDb21wbGV0ZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXV0b19jb21wbGV0ZS50IG9wdGlvblxuXG4gIGxldCBydW5fYW5kX2V4aXQgdCBlbnYgfnBhcnQgOiBuZXZlcl9yZXR1cm5zID1cbiAgICBPcHRpb24uaXRlciB0IH5mOihmdW4gY29tcGxldGlvbnMgLT5cbiAgICAgIExpc3QuaXRlciB+ZjpwcmludF9lbmRsaW5lIChjb21wbGV0aW9ucyBlbnYgfnBhcnQpKTtcbiAgICBleGl0IDBcbiAgOztcbmVuZFxuXG5tb2R1bGUgQXJnX3R5cGUgOiBzaWdcbiAgdHlwZSAnYSB0XG5cbiAgdmFsIGV4dHJhX2RvYyA6ICdhIHQgLT4gc3RyaW5nIG9wdGlvbiBsYXp5X3RcbiAgdmFsIGtleSA6ICdhIHQgLT4gJ2EgRW52Lk11bHRpLktleS50IG9wdGlvblxuICB2YWwgY29tcGxldGUgOiAnYSB0IC0+IENvbXBsZXRlci50XG4gIHZhbCBwYXJzZSA6ICdhIHQgLT4gc3RyaW5nIC0+ICgnYSwgZXhuKSByZXN1bHRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAtPiAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIG1hcCA6ID9rZXk6J2EgRW52Lk11bHRpLktleS50IC0+ICdiIHQgLT4gZjooJ2IgLT4gJ2EpIC0+ICdhIHRcbiAgdmFsIG9mX2xhenkgOiA/a2V5OidhIEVudi5NdWx0aS5LZXkudCAtPiAnYSB0IGxhenlfdCAtPiAnYSB0XG5cbiAgdmFsIG9mX21hcFxuICAgIDogID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzOmJvb2xcbiAgICAtPiA/Y2FzZV9zZW5zaXRpdmU6Ym9vbFxuICAgIC0+ID9saXN0X3ZhbHVlc19pbl9oZWxwOmJvb2xcbiAgICAtPiA/YXV0b19jb21wbGV0ZTpBdXRvX2NvbXBsZXRlLnRcbiAgICAtPiA/a2V5OidhIEVudi5NdWx0aS5LZXkudFxuICAgIC0+ICdhIFN0cmluZy5NYXAudFxuICAgIC0+ICdhIHRcblxuICB2YWwgb2ZfYWxpc3RfZXhuXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKHN0cmluZyAqICdhKSBsaXN0XG4gICAgLT4gJ2EgdFxuXG4gIHZhbCBlbnVtZXJhdGVkXG4gICAgOiAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXM6Ym9vbFxuICAgIC0+ID9jYXNlX3NlbnNpdGl2ZTpib29sXG4gICAgLT4gP2xpc3RfdmFsdWVzX2luX2hlbHA6Ym9vbFxuICAgIC0+ID9hdXRvX2NvbXBsZXRlOkF1dG9fY29tcGxldGUudFxuICAgIC0+ID9rZXk6J2EgRW52Lk11bHRpLktleS50XG4gICAgLT4gKG1vZHVsZSBFbnVtZXJhYmxlX3N0cmluZ2FibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGVudW1lcmF0ZWRfc2V4cGFibGVcbiAgICA6ICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlczpib29sXG4gICAgLT4gP2Nhc2Vfc2Vuc2l0aXZlOmJvb2xcbiAgICAtPiA/bGlzdF92YWx1ZXNfaW5faGVscDpib29sXG4gICAgLT4gP2F1dG9fY29tcGxldGU6QXV0b19jb21wbGV0ZS50XG4gICAgLT4gP2tleTonYSBFbnYuTXVsdGkuS2V5LnRcbiAgICAtPiAobW9kdWxlIEVudW1lcmFibGVfc2V4cGFibGUgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICAtPiAnYSB0XG5cbiAgdmFsIGNvbW1hX3NlcGFyYXRlZFxuICAgIDogID9hbGxvd19lbXB0eTpib29sXG4gICAgLT4gP2tleTonYSBsaXN0IEVudi5NdWx0aS5LZXkudFxuICAgIC0+ID9zdHJpcF93aGl0ZXNwYWNlOmJvb2xcbiAgICAtPiA/dW5pcXVlX3ZhbHVlczpib29sXG4gICAgLT4gJ2EgdFxuICAgIC0+ICdhIGxpc3QgdFxuXG4gIG1vZHVsZSBFeHBvcnQgOiBzaWdcbiAgICB2YWwgc3RyaW5nIDogc3RyaW5nIHRcbiAgICB2YWwgaW50IDogaW50IHRcbiAgICB2YWwgY2hhciA6IGNoYXIgdFxuICAgIHZhbCBmbG9hdCA6IGZsb2F0IHRcbiAgICB2YWwgYm9vbCA6IGJvb2wgdFxuICAgIHZhbCBkYXRlIDogRGF0ZS50IHRcbiAgICB2YWwgcGVyY2VudCA6IFBlcmNlbnQudCB0XG4gICAgdmFsIGhvc3RfYW5kX3BvcnQgOiBIb3N0X2FuZF9wb3J0LnQgdFxuICAgIHZhbCBzZXhwIDogU2V4cC50IHRcbiAgICB2YWwgc2V4cF9jb252IDogP2NvbXBsZXRlOkF1dG9fY29tcGxldGUudCAtPiAoU2V4cC50IC0+ICdhKSAtPiAnYSB0XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA6IHNpZ1xuICAgIHZhbCBjb21wbGV0ZSA6IF8gdCAtPiBBdXRvX2NvbXBsZXRlLnRcbiAgICB2YWwgcGFyc2UgOiAnYSB0IC0+IHN0cmluZyAtPiAnYSBPcl9lcnJvci50XG4gIGVuZFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwYXJzZSA6IHN0cmluZyAtPiAnYVxuICAgIDsgY29tcGxldGUgOiBDb21wbGV0ZXIudFxuICAgIDsga2V5IDogJ2EgVW5pdl9tYXAuTXVsdGkuS2V5LnQgb3B0aW9uXG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBwYXJzZSB0IHMgPSBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiB0LnBhcnNlIHMpXG4gIGxldCBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IHBhcnNlIH5leHRyYV9kb2MgPSB7IHBhcnNlOyBrZXk7IGNvbXBsZXRlOyBleHRyYV9kb2MgfVxuXG4gIGxldCBjcmVhdGUgP2NvbXBsZXRlID9rZXkgb2Zfc3RyaW5nID1cbiAgICBjcmVhdGUnID9jb21wbGV0ZSA/a2V5IG9mX3N0cmluZyB+ZXh0cmFfZG9jOihMYXp5LmZyb21fdmFsIE5vbmUpXG4gIDs7XG5cbiAgbGV0IG1hcCA/a2V5IHQgfmYgPSB7IHQgd2l0aCBrZXk7IHBhcnNlID0gKGZ1biBzIC0+IGYgKHQucGFyc2UgcykpIH1cblxuICBsZXQgb2ZfbGF6eSA/a2V5IHQgPVxuICAgIGxldCBwYXJzZSBzdHIgPSAoZm9yY2UgdCkucGFyc2Ugc3RyIGluXG4gICAgbGV0IGNvbXBsZXRlIGVudiB+cGFydCA9XG4gICAgICBtYXRjaCAoZm9yY2UgdCkuY29tcGxldGUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFNlZSBbcnVuX2FuZF9leGl0XSAtIG5vIGNvbXBsZXRpb25zIGlzIGVxdWl2YWxlbnQgdG8gbm90IGhhdmluZyBhXG4gICAgICAgICAgIFtDb21wbGV0ZV0uICopXG4gICAgICAgIFtdXG4gICAgICB8IFNvbWUgY29tcGxldGUgLT4gY29tcGxldGUgZW52IH5wYXJ0XG4gICAgaW5cbiAgICBsZXQgZXh0cmFfZG9jID0gTGF6eS5iaW5kIHQgfmY6ZXh0cmFfZG9jIGluXG4gICAgeyBwYXJzZTsgY29tcGxldGUgPSBTb21lIGNvbXBsZXRlOyBrZXk7IGV4dHJhX2RvYyB9XG4gIDs7XG5cbiAgbGV0IHN0cmluZyA9IGNyZWF0ZSBGbi5pZFxuICBsZXQgaW50ID0gY3JlYXRlIEludC5vZl9zdHJpbmdcbiAgbGV0IGNoYXIgPSBjcmVhdGUgQ2hhci5vZl9zdHJpbmdcbiAgbGV0IGZsb2F0ID0gY3JlYXRlIEZsb2F0Lm9mX3N0cmluZ1xuICBsZXQgZGF0ZSA9IGNyZWF0ZSBEYXRlLm9mX3N0cmluZ1xuICBsZXQgcGVyY2VudCA9IGNyZWF0ZSBQZXJjZW50Lm9mX3N0cmluZ1xuICBsZXQgaG9zdF9hbmRfcG9ydCA9IGNyZWF0ZSBIb3N0X2FuZF9wb3J0Lm9mX3N0cmluZ1xuICBsZXQgc2V4cCA9IGNyZWF0ZSBTZXhwLm9mX3N0cmluZ1xuICBsZXQgc2V4cF9jb252ID9jb21wbGV0ZSBvZl9zZXhwID0gY3JlYXRlID9jb21wbGV0ZSAoZnVuIHMgLT4gb2Zfc2V4cCAoU2V4cC5vZl9zdHJpbmcgcykpXG5cbiAgbGV0IGFzc29jaWF0aXZlXG4gICAgICAgID8oYWNjZXB0X3VuaXF1ZV9wcmVmaXhlcyA9IHRydWUpXG4gICAgICAgID8obGlzdF92YWx1ZXNfaW5faGVscCA9IHRydWUpXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgfmNhc2Vfc2Vuc2l0aXZlXG4gICAgICAgIGFsaXN0XG4gICAgPVxuICAgIGxldCBvcGVuIHN0cnVjdFxuICAgICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuUyB3aXRoIHR5cGUgdCA9IHN0cmluZ1xuXG4gICAgICAgIHZhbCBpc19wcmVmaXggOiBzdHJpbmcgLT4gcHJlZml4OnN0cmluZyAtPiBib29sXG4gICAgICBlbmRcblxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBUIDpcbiAgICAgICAgICAgIHsgY21wIDogKG1vZHVsZSBTIHdpdGggdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAnY21wKVxuICAgICAgICAgICAgOyBtYXAgOiAoc3RyaW5nLCAnYSwgJ2NtcCkgTWFwLnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC0+ICdhIHRcbiAgICBlbmQgaW5cbiAgICBsZXQgKFQgeyBjbXAgPSAobW9kdWxlIFMpOyBtYXAgfSkgPVxuICAgICAgbGV0IG1ha2VfbWFwX3JhaXNlX2R1cGxpY2F0ZV9rZXlcbiAgICAgICAgICAgICh0eXBlIGNtcClcbiAgICAgICAgICAgIChtb2R1bGUgUyA6IFMgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNtcClcbiAgICAgICAgICAgIGFsaXN0XG4gICAgICAgID1cbiAgICAgICAgbWF0Y2ggTWFwLm9mX2FsaXN0IChtb2R1bGUgUykgYWxpc3Qgd2l0aFxuICAgICAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgICAgIHwgYER1cGxpY2F0ZV9rZXkgKF8gOiBTLnQpIC0+XG4gICAgICAgICAgbGV0IGR1cGxpY2F0ZV9rZXlzID1cbiAgICAgICAgICAgIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKGssIChfIDogJ2EpKSAtPiBrLCBrKVxuICAgICAgICAgICAgfD4gTWFwLm9mX2FsaXN0X211bHRpIChtb2R1bGUgUylcbiAgICAgICAgICAgIHw+IE1hcC5maWx0ZXIgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgW10gfCBbIF8gXSAtPiBmYWxzZVxuICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfIC0+IHRydWUpXG4gICAgICAgICAgICB8PiBNYXAuZGF0YVxuICAgICAgICAgIGluXG4gICAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLm9mX2FsaXN0X2V4blwiIChkdXBsaWNhdGVfa2V5cyA6IHN0cmluZyBsaXN0IGxpc3QpXVxuICAgICAgaW5cbiAgICAgIGxldCBtYWtlIGNtcCA9IFQgeyBjbXA7IG1hcCA9IG1ha2VfbWFwX3JhaXNlX2R1cGxpY2F0ZV9rZXkgY21wIGFsaXN0IH0gaW5cbiAgICAgIGlmIGNhc2Vfc2Vuc2l0aXZlIHRoZW4gbWFrZSAobW9kdWxlIFN0cmluZykgZWxzZSBtYWtlIChtb2R1bGUgU3RyaW5nLkNhc2VsZXNzKVxuICAgIGluXG4gICAgbGV0IGNvbXBsZXRlIHVuaXZfbWFwIH5wYXJ0OnByZWZpeCA9XG4gICAgICBtYXRjaCBhdXRvX2NvbXBsZXRlIHdpdGhcbiAgICAgIHwgU29tZSBjb21wbGV0ZSAtPiBjb21wbGV0ZSB1bml2X21hcCB+cGFydDpwcmVmaXhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBMaXN0LmZpbHRlcl9tYXAgKE1hcC50b19hbGlzdCBtYXApIH5mOihmdW4gKG5hbWUsIF8pIC0+XG4gICAgICAgICAgbWF0Y2ggUy5pc19wcmVmaXggbmFtZSB+cHJlZml4IHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IE5vbmVcbiAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICgqIEJhc2ggY29tcGxldGlvbiB3aWxsIG5vdCBhY2NlcHQgW0Zvb10gYXMgYSBjb21wbGV0aW9uIGZvciBbZl0uIFNvIHdlIG5lZWRcbiAgICAgICAgICAgICAgIHRvIG1hdGNoIHRoZSBjYXBpdGFsaXphdGlvbiBnaXZlbi4gKilcbiAgICAgICAgICAgIGxldCBzdWZmaXggPSBTdHJpbmcuc3VibyBuYW1lIH5wb3M6KFN0cmluZy5sZW5ndGggcHJlZml4KSBpblxuICAgICAgICAgICAgbGV0IG5hbWUgPSBwcmVmaXggXiBzdWZmaXggaW5cbiAgICAgICAgICAgIFNvbWUgbmFtZSlcbiAgICBpblxuICAgIGxldCBmaW5kIGFyZyA9XG4gICAgICBtYXRjaCBNYXAuZmluZCBtYXAgYXJnIHdpdGhcbiAgICAgIHwgU29tZSBfIGFzIHMgLT4gc1xuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBhY2NlcHRfdW5pcXVlX3ByZWZpeGVzIHdpdGhcbiAgICAgICAgIHwgZmFsc2UgLT4gTm9uZVxuICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICBNYXAudG9fYWxpc3QgbWFwXG4gICAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyIH5mOihmdW4gKG5hbWUsIF8pIC0+IFMuaXNfcHJlZml4IG5hbWUgfnByZWZpeDphcmcpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFsgKF9zaW5nbGV0b25fa2V5LCB2KSBdIC0+IFNvbWUgdlxuICAgICAgICAgICAgfCBbXSB8IF8gOjogXyA6OiBfIC0+XG4gICAgICAgICAgICAgICgqIEluIHRoZSB0d28tb3ItbW9yZSBjYXNlIHdlIGNvdWxkIHByb3ZpZGUgZmlsdGVyZWQgaGVscCB0ZXh0LCBidXQgaXQnc1xuICAgICAgICAgICAgICAgICBtb3JlIGdlbmVyYWxseSB1c2VmdWwgdG8gbGlzdCBhbGwgdGhlIG9wdGlvbnMsIHdoaWNoIHdlIGRvIGJlbG93LiAqKVxuICAgICAgICAgICAgICBOb25lKSlcbiAgICBpblxuICAgIGNyZWF0ZSdcbiAgICAgIH5leHRyYV9kb2M6XG4gICAgICAgIChsYXp5XG4gICAgICAgICAgKGlmIGxpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IHZhbHVlcyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCIgKE1hcC5rZXlzIG1hcCkgaW5cbiAgICAgICAgICAgICBTb21lIFslc3RyaW5nIFwiKGNhbiBiZTogJXt2YWx1ZXN9KVwiXSlcbiAgICAgICAgICAgZWxzZSBOb25lKSlcbiAgICAgID9rZXlcbiAgICAgIH5jb21wbGV0ZVxuICAgICAgKGZ1biBhcmcgLT5cbiAgICAgICAgIG1hdGNoIGZpbmQgYXJnIHdpdGhcbiAgICAgICAgIHwgU29tZSB2IC0+IHZcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBsZXQgdmFsaWRfYXJndW1lbnRzX2V4dHJhID1cbiAgICAgICAgICAgICBpZiBjYXNlX3NlbnNpdGl2ZSB0aGVuIFwiXCIgZWxzZSBcIiAoY2FzZSBpbnNlbnNpdGl2ZSlcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgICBcInZhbGlkIGFyZ3VtZW50cyVzOiB7JXN9XCJcbiAgICAgICAgICAgICB2YWxpZF9hcmd1bWVudHNfZXh0cmFcbiAgICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChNYXAua2V5cyBtYXApKVxuICAgICAgICAgICAgICgpKVxuICA7O1xuXG4gIGxldCBvZl9hbGlzdF9leG5cbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgPyhjYXNlX3NlbnNpdGl2ZSA9IHRydWUpXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgYWxpc3RcbiAgICA9XG4gICAgYXNzb2NpYXRpdmVcbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIH5jYXNlX3NlbnNpdGl2ZVxuICAgICAgYWxpc3RcbiAgOztcblxuICBsZXQgb2ZfbWFwXG4gICAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgICA/a2V5XG4gICAgICAgIG1hcFxuICAgID1cbiAgICBvZl9hbGlzdF9leG5cbiAgICAgID9hY2NlcHRfdW5pcXVlX3ByZWZpeGVzXG4gICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICA/YXV0b19jb21wbGV0ZVxuICAgICAgP2tleVxuICAgICAgKE1hcC50b19hbGlzdCBtYXApXG4gIDs7XG5cbiAgbGV0IGVudW1lcmF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICAgID9saXN0X3ZhbHVlc19pbl9oZWxwXG4gICAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICAgID9rZXlcbiAgICAgICAgKG1vZHVsZSBFIDogRW51bWVyYWJsZV9zdHJpbmdhYmxlIHdpdGggdHlwZSB0ID0gdClcbiAgICA9XG4gICAgb2ZfYWxpc3RfZXhuXG4gICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgP2Nhc2Vfc2Vuc2l0aXZlXG4gICAgICA/bGlzdF92YWx1ZXNfaW5faGVscFxuICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgID9rZXlcbiAgICAgIChsZXQlbWFwLkxpc3QgdCA9IEUuYWxsIGluXG4gICAgICAgRS50b19zdHJpbmcgdCwgdClcbiAgOztcblxuICBsZXQgZW51bWVyYXRlZF9zZXhwYWJsZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/YWNjZXB0X3VuaXF1ZV9wcmVmaXhlc1xuICAgICAgICA/Y2FzZV9zZW5zaXRpdmVcbiAgICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgICAgP2F1dG9fY29tcGxldGVcbiAgICAgICAgP2tleVxuICAgICAgICAobW9kdWxlIEUgOiBFbnVtZXJhYmxlX3NleHBhYmxlIHdpdGggdHlwZSB0ID0gdClcbiAgICA9XG4gICAgZW51bWVyYXRlZFxuICAgICAgP2FjY2VwdF91bmlxdWVfcHJlZml4ZXNcbiAgICAgID9jYXNlX3NlbnNpdGl2ZVxuICAgICAgP2xpc3RfdmFsdWVzX2luX2hlbHBcbiAgICAgID9hdXRvX2NvbXBsZXRlXG4gICAgICA/a2V5XG4gICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIEVcblxuICAgICAgICBsZXQgdG9fc3RyaW5nIHQgPSBTZXhwLnRvX3N0cmluZyBbJXNleHAgKHQgOiBFLnQpXVxuICAgICAgZW5kKVxuICA7O1xuXG4gIGxldCBib29sID0gZW51bWVyYXRlZCB+bGlzdF92YWx1ZXNfaW5faGVscDpmYWxzZSAobW9kdWxlIEJvb2wpXG5cbiAgbGV0IGNvbW1hX3NlcGFyYXRlZFxuICAgICAgICA/KGFsbG93X2VtcHR5ID0gZmFsc2UpXG4gICAgICAgID9rZXlcbiAgICAgICAgPyhzdHJpcF93aGl0ZXNwYWNlID0gZmFsc2UpXG4gICAgICAgID8odW5pcXVlX3ZhbHVlcyA9IGZhbHNlKVxuICAgICAgICB0XG4gICAgPVxuICAgIGxldCBzdHJpcCA9IGlmIHN0cmlwX3doaXRlc3BhY2UgdGhlbiBmdW4gc3RyIC0+IFN0cmluZy5zdHJpcCBzdHIgZWxzZSBGbi5pZCBpblxuICAgIGxldCBjb21wbGV0ZSA9XG4gICAgICBPcHRpb24ubWFwIHQuY29tcGxldGUgfmY6KGZ1biBjb21wbGV0ZV9lbHQgZW52IH5wYXJ0IC0+XG4gICAgICAgIGxldCBwcmVmaXhlcywgc3VmZml4ID1cbiAgICAgICAgICBtYXRjaCBTdHJpbmcuc3BsaXQgcGFydCB+b246JywnIHw+IExpc3QucmV2IHdpdGhcbiAgICAgICAgICB8IFtdIC0+IFtdLCBwYXJ0XG4gICAgICAgICAgfCBoZCA6OiB0bCAtPiBMaXN0LnJldiB0bCwgaGRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGlzX2FsbG93ZWQgPVxuICAgICAgICAgIGlmIG5vdCB1bmlxdWVfdmFsdWVzXG4gICAgICAgICAgdGhlbiBmdW4gKF8gOiBzdHJpbmcpIC0+IHRydWVcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBzZWVuX2FscmVhZHkgPSBwcmVmaXhlcyB8PiBMaXN0Lm1hcCB+ZjpzdHJpcCB8PiBTdHJpbmcuU2V0Lm9mX2xpc3QgaW5cbiAgICAgICAgICAgIGZ1biBjaG9pY2UgLT4gbm90IChTZXQubWVtIHNlZW5fYWxyZWFkeSAoc3RyaXAgY2hvaWNlKSkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjaG9pY2VzID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTGlzdC5maWx0ZXIgKGNvbXBsZXRlX2VsdCBlbnYgfnBhcnQ6c3VmZml4KSB+ZjooZnVuIGNob2ljZSAtPlxuICAgICAgICAgICAgICAobm90IChTdHJpbmcubWVtIGNob2ljZSAnLCcpKSAmJiBpc19hbGxvd2VkIGNob2ljZSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgKCogSWYgdGhlcmUgaXMgZXhhY3RseSBvbmUgY2hvaWNlIHRvIGF1dG8tY29tcGxldGUsIGFkZCBhIHNlY29uZCBjaG9pY2Ugd2l0aFxuICAgICAgICAgICAgIGEgdHJhaWxpbmcgY29tbWEgc28gdGhhdCBhdXRvLWNvbXBsZXRpb24gd2lsbCBnbyB0byB0aGUgZW5kIGJ1dCBiYXNoXG4gICAgICAgICAgICAgd29uJ3QgYWRkIGEgc3BhY2UuICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgY2hvaWNlcywgb3IgYSBzaW5nbGUgY2hvaWNlXG4gICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGZpbmFsLCB0aGVyZSBpcyBubyBuZWVkIHRvIGFkZCBhIGR1bW15IG9wdGlvbi4gKilcbiAgICAgICAgICB8IFsgY2hvaWNlIF0gLT4gWyBjaG9pY2U7IGNob2ljZSBeIFwiLFwiIF1cbiAgICAgICAgICB8IGNob2ljZXMgLT4gY2hvaWNlc1xuICAgICAgICBpblxuICAgICAgICBMaXN0Lm1hcCBjaG9pY2VzIH5mOihmdW4gY2hvaWNlIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiIChwcmVmaXhlcyBAIFsgY2hvaWNlIF0pKSlcbiAgICBpblxuICAgIGxldCBvZl9zdHJpbmcgc3RyaW5nID1cbiAgICAgIGxldCBzdHJpbmcgPSBzdHJpcCBzdHJpbmcgaW5cbiAgICAgIGlmIFN0cmluZy5pc19lbXB0eSBzdHJpbmdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYWxsb3dfZW1wdHlcbiAgICAgICAgdGhlbiBbXVxuICAgICAgICBlbHNlIGZhaWx3aXRoIFwiQ29tbWFuZC5TcGVjLkFyZ190eXBlLmNvbW1hX3NlcGFyYXRlZDogZW1wdHkgbGlzdCBub3QgYWxsb3dlZFwiXG4gICAgICBlbHNlIExpc3QubWFwIChTdHJpbmcuc3BsaXQgc3RyaW5nIH5vbjonLCcpIH5mOihmdW4gc3RyIC0+IHQucGFyc2UgKHN0cmlwIHN0cikpXG4gICAgaW5cbiAgICBjcmVhdGUgP2tleSA/Y29tcGxldGUgb2Zfc3RyaW5nXG4gIDs7XG5cbiAgbW9kdWxlIEV4cG9ydCA9IHN0cnVjdFxuICAgIGxldCBzdHJpbmcgPSBzdHJpbmdcbiAgICBsZXQgaW50ID0gaW50XG4gICAgbGV0IGNoYXIgPSBjaGFyXG4gICAgbGV0IGZsb2F0ID0gZmxvYXRcbiAgICBsZXQgYm9vbCA9IGJvb2xcbiAgICBsZXQgZGF0ZSA9IGRhdGVcbiAgICBsZXQgcGVyY2VudCA9IHBlcmNlbnRcbiAgICBsZXQgaG9zdF9hbmRfcG9ydCA9IGhvc3RfYW5kX3BvcnRcbiAgICBsZXQgc2V4cCA9IHNleHBcbiAgICBsZXQgc2V4cF9jb252ID0gc2V4cF9jb252XG4gIGVuZFxuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCBjb21wbGV0ZSB0ID1cbiAgICAgIG1hdGNoIHQuY29tcGxldGUgd2l0aFxuICAgICAgfCBTb21lIGYgLT4gZlxuICAgICAgfCBOb25lIC0+IGZ1biBfIH5wYXJ0Ol8gLT4gW11cbiAgICA7O1xuXG4gICAgbGV0IHBhcnNlIHQgc3RyID0gcGFyc2UgdCBzdHIgfD4gT3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRmxhZyA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX29jY3VycmVuY2VzID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2hhcGUuTnVtX29jY3VycmVuY2VzLnQgPVxuICAgICAgeyBhdF9sZWFzdF9vbmNlIDogYm9vbFxuICAgICAgOyBhdF9tb3N0X29uY2UgOiBib29sXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgZW51bWVyYXRlLCBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgdG9faGVscF9zdHJpbmcgPSBTaGFwZS5OdW1fb2NjdXJyZW5jZXMudG9faGVscF9zdHJpbmdcblxuICAgIGxldCB0b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHsgYXRfbGVhc3Rfb25jZTsgYXRfbW9zdF9vbmNlID0gXyB9IGZsYWdfbmFtZSA9XG4gICAgICB0b19oZWxwX3N0cmluZyB7IGF0X2xlYXN0X29uY2U7IGF0X21vc3Rfb25jZSA9IHRydWUgfSB+ZmxhZ19uYW1lXG4gICAgOztcblxuICAgIGxldCBhbnkgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9sZWFzdF9vbmNlID0geyBhdF9sZWFzdF9vbmNlID0gdHJ1ZTsgYXRfbW9zdF9vbmNlID0gZmFsc2UgfVxuICAgIGxldCBhdF9tb3N0X29uY2UgPSB7IGF0X2xlYXN0X29uY2UgPSBmYWxzZTsgYXRfbW9zdF9vbmNlID0gdHJ1ZSB9XG4gICAgbGV0IGV4YWN0bHlfb25jZSA9IHsgYXRfbGVhc3Rfb25jZSA9IHRydWU7IGF0X21vc3Rfb25jZSA9IHRydWUgfVxuICBlbmRcblxuICB0eXBlIGFjdGlvbiA9XG4gICAgfCBOb19hcmcgb2YgKEVudi50IC0+IEVudi50KVxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBvZiAoRW52LnQgLT4gc3RyaW5nKVxuICAgIHwgQXJnIG9mIChFbnYudCAtPiBzdHJpbmcgLT4gRW52LnQpICogQ29tcGxldGVyLnRcbiAgICB8IFJlc3Qgb2YgKEVudi50IC0+IHN0cmluZyBsaXN0IC0+IEVudi50KVxuXG4gIG1vZHVsZSBJbnRlcm5hbCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgYWxpYXNlcyA6IHN0cmluZyBsaXN0XG4gICAgICA7IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIDogc3RyaW5nIGxpc3RcbiAgICAgICgqIFthbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscF0gYXJlIGFsaWFzZXMgdGhhdCBkb24ndCBzaG93IHVwIGluIC1oZWxwIG91dHB1dC5cbiAgICAgICAgIEN1cnJlbnRseSB0aGV5J3JlIG9ubHkgdXNlZCBmb3IgZG91YmxlLWRhc2ggYnVpbHQtaW4gZmxhZ3MgbGlrZSAtLWhlbHAgYW5kXG4gICAgICAgICAtLXZlcnNpb24uICopXG4gICAgICA7IGFjdGlvbiA6IGFjdGlvblxuICAgICAgOyBkb2MgOiBzdHJpbmdcbiAgICAgIDsgbnVtX29jY3VycmVuY2VzIDogTnVtX29jY3VycmVuY2VzLnRcbiAgICAgIDsgY2hlY2tfYXZhaWxhYmxlIDogRW52LnQgLT4gdW5pdFxuICAgICAgOyBuYW1lX21hdGNoaW5nIDogWyBgUHJlZml4IHwgYEZ1bGxfbWF0Y2hfcmVxdWlyZWQgXVxuICAgICAgfVxuXG4gICAgbGV0IHdyYXBfaWZfb3B0aW9uYWwgdCBmbGFnX25hbWUgPVxuICAgICAgTnVtX29jY3VycmVuY2VzLnRvX2hlbHBfc3RyaW5nIHQubnVtX29jY3VycmVuY2VzIH5mbGFnX25hbWVcbiAgICA7O1xuXG4gICAgbW9kdWxlIERvYyA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBhcmdfZG9jIDogc3RyaW5nIG9wdGlvblxuICAgICAgICA7IGRvYyA6IHN0cmluZ1xuICAgICAgICB9XG5cbiAgICAgIGxldCBwYXJzZSB+YWN0aW9uIH5kb2MgPVxuICAgICAgICBsZXQgYXJnX2RvYywgZG9jID1cbiAgICAgICAgICBtYXRjaCAoYWN0aW9uIDogYWN0aW9uKSwgU3RyaW5nLmxzcGxpdDIgZG9jIH5vbjonICcgd2l0aFxuICAgICAgICAgIHwgKE5vX2FyZyBfIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBfKSwgXyAtPiBOb25lLCBkb2NcbiAgICAgICAgICB8IEFyZyBfLCAoTm9uZSB8IFNvbWUgKFwiXCIsIF8pKSAtPiBTb21lIFwiX1wiLCBkb2NcbiAgICAgICAgICB8IFJlc3QgXywgKE5vbmUgfCBTb21lIChcIlwiLCBfKSkgLT4gTm9uZSwgZG9jXG4gICAgICAgICAgfCAoQXJnIF8gfCBSZXN0IF8pLCBTb21lIChhcmcsIGRvYykgLT4gU29tZSBhcmcsIGRvY1xuICAgICAgICBpblxuICAgICAgICB7IGRvYyA9IFN0cmluZy5zdHJpcCBkb2M7IGFyZ19kb2MgfVxuICAgICAgOztcblxuICAgICAgbGV0IGNvbmNhdCB+bmFtZSB+YXJnX2RvYyA9XG4gICAgICAgIG1hdGNoIGFyZ19kb2Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbmFtZVxuICAgICAgICB8IFNvbWUgYXJnX2RvYyAtPiBuYW1lIF4gXCIgXCIgXiBhcmdfZG9jXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cmFwX2lmX29wdGlvbmFsIHQgeCA9XG4gICAgICAgIE51bV9vY2N1cnJlbmNlcy50b19oZWxwX3N0cmluZ19kZXByZWNhdGVkIHQubnVtX29jY3VycmVuY2VzIHhcbiAgICAgIDs7XG5cbiAgICAgICgqIGZsYWcgaGVscCBpbiB0aGUgZm9ybWF0IG9mIHRoZSBvbGQgY29tbWFuZC4gdXNlZCBmb3IgaW5qZWN0aW9uICopXG4gICAgICBsZXQgaGVscFxuICAgICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICAgIDsgZG9jXG4gICAgICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICA7IG51bV9vY2N1cnJlbmNlcyA9IF9cbiAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZSA9IF9cbiAgICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCA9IF9cbiAgICAgICAgICAgICB9IGFzIHQpXG4gICAgICAgID1cbiAgICAgICAgaWYgU3RyaW5nLmlzX3ByZWZpeCBkb2MgfnByZWZpeDpcIiBcIlxuICAgICAgICB0aGVuXG4gICAgICAgICAgKG5hbWUsIFN0cmluZy5sc3RyaXAgZG9jKVxuICAgICAgICAgIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biB4IC0+IHgsIHNwcmludGYgXCJzYW1lIGFzIFxcXCIlc1xcXCJcIiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgeyBEb2MuYXJnX2RvYzsgZG9jIH0gPSBEb2MucGFyc2UgfmFjdGlvbiB+ZG9jIGluXG4gICAgICAgICAgKHdyYXBfaWZfb3B0aW9uYWwgdCAoRG9jLmNvbmNhdCB+bmFtZSB+YXJnX2RvYyksIGRvYylcbiAgICAgICAgICA6OiBMaXN0Lm1hcCBhbGlhc2VzIH5mOihmdW4geCAtPlxuICAgICAgICAgICAgKCB3cmFwX2lmX29wdGlvbmFsIHQgKERvYy5jb25jYXQgfm5hbWU6eCB+YXJnX2RvYylcbiAgICAgICAgICAgICwgc3ByaW50ZiBcInNhbWUgYXMgXFxcIiVzXFxcIlwiIG5hbWUgKSkpXG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGFsaWduXG4gICAgICAgICAgKHsgbmFtZVxuICAgICAgICAgICA7IGRvY1xuICAgICAgICAgICA7IGFsaWFzZXNcbiAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgOyBudW1fb2NjdXJyZW5jZXMgPSBfXG4gICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgICA7IG5hbWVfbWF0Y2hpbmcgPSBfXG4gICAgICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHAgPSBfXG4gICAgICAgICAgIH0gYXMgdClcbiAgICAgIDogU2hhcGUuRmxhZ19pbmZvLnRcbiAgICAgID1cbiAgICAgIGxldCB7IERvYy5hcmdfZG9jOyBkb2MgfSA9IERvYy5wYXJzZSB+YWN0aW9uIH5kb2MgaW5cbiAgICAgIGxldCBuYW1lID0gd3JhcF9pZl9vcHRpb25hbCB0IChEb2MuY29uY2F0IH5uYW1lIH5hcmdfZG9jKSBpblxuICAgICAgeyBuYW1lOyBkb2M7IGFsaWFzZXMgfVxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlIGZsYWdzID1cbiAgICAgIG1hdGNoIFN0cmluZy5NYXAub2ZfYWxpc3QgKExpc3QubWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUsIGZsYWcpKSB3aXRoXG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IGZsYWcgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgZmxhZ3MgbmFtZWQgJXNcIiBmbGFnICgpXG4gICAgICB8IGBPayBtYXAgLT5cbiAgICAgICAgTGlzdC5jb25jYXRfbWFwIGZsYWdzIH5mOihmdW4gZmxhZyAtPiBmbGFnLm5hbWUgOjogZmxhZy5hbGlhc2VzKVxuICAgICAgICB8PiBMaXN0LmZpbmRfYV9kdXAgfmNvbXBhcmU6WyVjb21wYXJlOiBzdHJpbmddXG4gICAgICAgIHw+IE9wdGlvbi5pdGVyIH5mOihmdW4geCAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBvciBhbGlhc2VzIG5hbWVkICVzXCIgeCAoKSk7XG4gICAgICAgIG1hcFxuICAgIDs7XG4gIGVuZFxuXG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHsgYWN0aW9uIDogYWN0aW9uXG4gICAgOyByZWFkIDogRW52LnQgLT4gJ2FcbiAgICA7IG51bV9vY2N1cnJlbmNlcyA6IE51bV9vY2N1cnJlbmNlcy50XG4gICAgOyBleHRyYV9kb2MgOiBzdHJpbmcgb3B0aW9uIExhenkudFxuICAgIH1cblxuICB0eXBlICdhIHQgPSBzdHJpbmcgLT4gJ2Egc3RhdGVcblxuICBsZXQgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIG51bV9vY2N1cnJlbmNlcyA9XG4gICAgeyByZWFkXG4gICAgOyBudW1fb2NjdXJyZW5jZXNcbiAgICA7IGFjdGlvbiA9XG4gICAgICAgIChsZXQgdXBkYXRlIGVudiBhcmcgPVxuICAgICAgICAgICBtYXRjaCBBcmdfdHlwZS5wYXJzZSBhcmdfdHlwZSBhcmcgd2l0aFxuICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgIGRpZSBcImZhaWxlZCB0byBwYXJzZSAlcyB2YWx1ZSAlUy5cXG4lc1wiIG5hbWUgYXJnIChFeG4udG9fc3RyaW5nIGV4bikgKClcbiAgICAgICAgICAgfCBPayBhcmcgLT5cbiAgICAgICAgICAgICBsZXQgZW52ID0gd3JpdGUgZW52IGFyZyBpblxuICAgICAgICAgICAgIChtYXRjaCBBcmdfdHlwZS5rZXkgYXJnX3R5cGUgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZW52XG4gICAgICAgICAgICAgIHwgU29tZSBrZXkgLT4gRW52Lm11bHRpX2FkZCBlbnYgfmtleSB+ZGF0YTphcmcpXG4gICAgICAgICBpblxuICAgICAgICAgQXJnICh1cGRhdGUsIEFyZ190eXBlLmNvbXBsZXRlIGFyZ190eXBlKSlcbiAgICA7IGV4dHJhX2RvYyA9IEFyZ190eXBlLmV4dHJhX2RvYyBhcmdfdHlwZVxuICAgIH1cbiAgOztcblxuICBsZXQgbWFwX2ZsYWcgdCB+ZiBpbnB1dCA9XG4gICAgbGV0IHsgYWN0aW9uOyByZWFkOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gdCBpbnB1dCBpblxuICAgIHsgYWN0aW9uOyByZWFkID0gKGZ1biBlbnYgLT4gZiAocmVhZCBlbnYpKTsgbnVtX29jY3VycmVuY2VzOyBleHRyYV9kb2MgfVxuICA7O1xuXG4gIGxldCB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyA9XG4gICAgRW52LnVwZGF0ZSBlbnYga2V5IH5mOihmdW5jdGlvblxuICAgICAgfCBOb25lIC0+IGFyZ1xuICAgICAgfCBTb21lIF8gLT4gZGllIFwiZmxhZyAlcyBwYXNzZWQgbW9yZSB0aGFuIG9uY2VcIiBuYW1lICgpKVxuICA7O1xuXG4gIGxldCByZXF1aXJlZF92YWx1ZSA/ZGVmYXVsdCBhcmdfdHlwZSBuYW1lIG51bV9vY2N1cnJlbmNlcyA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogX10gaW5cbiAgICBsZXQgcmVhZCBlbnYgPVxuICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IGtleSB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKG1hdGNoIGRlZmF1bHQgd2l0aFxuICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgfCBOb25lIC0+IGRpZSBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lICgpKVxuICAgIGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBudW1fb2NjdXJyZW5jZXNcbiAgOztcblxuICBsZXQgcmVxdWlyZWQgYXJnX3R5cGUgbmFtZSA9IHJlcXVpcmVkX3ZhbHVlIGFyZ190eXBlIG5hbWUgTnVtX29jY3VycmVuY2VzLmV4YWN0bHlfb25jZVxuXG4gIGxldCBvcHRpb25hbF93aXRoX2RlZmF1bHQgZGVmYXVsdCBhcmdfdHlwZSBuYW1lID1cbiAgICByZXF1aXJlZF92YWx1ZSB+ZGVmYXVsdCBhcmdfdHlwZSBuYW1lIE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgOztcblxuICBsZXQgb3B0aW9uYWwgYXJnX3R5cGUgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogX10gaW5cbiAgICBsZXQgcmVhZCBlbnYgPSBFbnYuZmluZCBlbnYga2V5IGluXG4gICAgbGV0IHdyaXRlIGVudiBhcmcgPSB3cml0ZV9vcHRpb24gbmFtZSBrZXkgZW52IGFyZyBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gIDs7XG5cbiAgbGV0IG5vX2FyZ19nZW5lcmFsIH5rZXlfdmFsdWUgfmRlcHJlY2F0ZWRfaG9vayBuYW1lID1cbiAgICBsZXQga2V5ID0gRW52LktleS5jcmVhdGUgfm5hbWUgWyVzZXhwX29mOiB1bml0XSBpblxuICAgIGxldCByZWFkIGVudiA9IEVudi5tZW0gZW52IGtleSBpblxuICAgIGxldCB3cml0ZSBlbnYgPVxuICAgICAgaWYgRW52Lm1lbSBlbnYga2V5XG4gICAgICB0aGVuIGRpZSBcImZsYWcgJXMgcGFzc2VkIG1vcmUgdGhhbiBvbmNlXCIgbmFtZSAoKVxuICAgICAgZWxzZSBFbnYuc2V0IGVudiB+a2V5IH5kYXRhOigpXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uIGVudiA9XG4gICAgICBsZXQgZW52ID1cbiAgICAgICAgT3B0aW9uLmZvbGQga2V5X3ZhbHVlIH5pbml0OmVudiB+ZjooZnVuIGVudiAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgICBFbnYuc2V0X3dpdGhfZGVmYXVsdCBlbnYgfmtleSB+ZGF0YTp2YWx1ZSlcbiAgICAgIGluXG4gICAgICB3cml0ZSBlbnZcbiAgICBpblxuICAgIGxldCBhY3Rpb24gPVxuICAgICAgbWF0Y2ggZGVwcmVjYXRlZF9ob29rIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGZ1biBlbnYgLT5cbiAgICAgICAgICBsZXQgZW52ID0gYWN0aW9uIGVudiBpblxuICAgICAgICAgIGYgKCk7XG4gICAgICAgICAgZW52XG4gICAgaW5cbiAgICB7IHJlYWRcbiAgICA7IGFjdGlvbiA9IE5vX2FyZyBhY3Rpb25cbiAgICA7IG51bV9vY2N1cnJlbmNlcyA9IE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9fYXJnIG5hbWUgPSBub19hcmdfZ2VuZXJhbCBuYW1lIH5rZXlfdmFsdWU6Tm9uZSB+ZGVwcmVjYXRlZF9ob29rOk5vbmVcblxuICBsZXQgbm9fYXJnX3JlZ2lzdGVyIH5rZXkgfnZhbHVlIG5hbWUgPVxuICAgIG5vX2FyZ19nZW5lcmFsIG5hbWUgfmtleV92YWx1ZTooU29tZSAoa2V5LCB2YWx1ZSkpIH5kZXByZWNhdGVkX2hvb2s6Tm9uZVxuICA7O1xuXG4gIGxldCBub19hcmdfc29tZSB2YWx1ZSA9XG4gICAgbWFwX2ZsYWcgbm9fYXJnIH5mOihmdW5jdGlvblxuICAgICAgfCB0cnVlIC0+IFNvbWUgdmFsdWVcbiAgICAgIHwgZmFsc2UgLT4gTm9uZSlcbiAgOztcblxuICBsZXQgbGlzdGVkIGFyZ190eXBlIG5hbWUgPVxuICAgIGxldCBrZXkgPSBFbnYuV2l0aF9kZWZhdWx0LktleS5jcmVhdGUgfmRlZmF1bHQ6W10gfm5hbWUgWyVzZXhwX29mOiBfIGxpc3RdIGluXG4gICAgbGV0IHJlYWQgZW52ID0gTGlzdC5yZXYgKEVudi5XaXRoX2RlZmF1bHQuZmluZCBlbnYga2V5KSBpblxuICAgIGxldCB3cml0ZSBlbnYgYXJnID0gRW52LldpdGhfZGVmYXVsdC5jaGFuZ2UgZW52IGtleSB+ZjooZnVuIGxpc3QgLT4gYXJnIDo6IGxpc3QpIGluXG4gICAgYXJnX2ZsYWcgbmFtZSBhcmdfdHlwZSByZWFkIHdyaXRlIE51bV9vY2N1cnJlbmNlcy5hbnlcbiAgOztcblxuICBsZXQgb25lX29yX21vcmVfYXNfcGFpciBhcmdfdHlwZSBuYW1lID1cbiAgICBsZXQga2V5ID1cbiAgICAgIEVudi5XaXRoX2RlZmF1bHQuS2V5LmNyZWF0ZSB+ZGVmYXVsdDpGcXVldWUuZW1wdHkgfm5hbWUgWyVzZXhwX29mOiBfIEZxdWV1ZS50XVxuICAgIGluXG4gICAgbGV0IHJlYWQgZW52ID1cbiAgICAgIG1hdGNoIEZxdWV1ZS50b19saXN0IChFbnYuV2l0aF9kZWZhdWx0LmZpbmQgZW52IGtleSkgd2l0aFxuICAgICAgfCBmaXJzdCA6OiByZXN0IC0+IGZpcnN0LCByZXN0XG4gICAgICB8IFtdIC0+IGRpZSBcIm1pc3NpbmcgcmVxdWlyZWQgZmxhZzogJXNcIiBuYW1lICgpXG4gICAgaW5cbiAgICBsZXQgd3JpdGUgZW52IGFyZyA9XG4gICAgICBFbnYuV2l0aF9kZWZhdWx0LmNoYW5nZSBlbnYga2V5IH5mOihmdW4gcSAtPiBGcXVldWUuZW5xdWV1ZSBxIGFyZylcbiAgICBpblxuICAgIGFyZ19mbGFnIG5hbWUgYXJnX3R5cGUgcmVhZCB3cml0ZSBOdW1fb2NjdXJyZW5jZXMuYXRfbGVhc3Rfb25jZVxuICA7O1xuXG4gIGxldFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA3XSBVc2UgW29uZV9vcl9tb3JlX2FzX3BhaXJdIG9yIFtvbmVfb3JfbW9yZV9hc19saXN0XVwiXSBvbmVfb3JfbW9yZVxuICAgID1cbiAgICBvbmVfb3JfbW9yZV9hc19wYWlyXG4gIDs7XG5cbiAgbGV0IG9uZV9vcl9tb3JlX2FzX2xpc3QgYXJnX3R5cGUgPVxuICAgIG9uZV9vcl9tb3JlX2FzX3BhaXIgYXJnX3R5cGUgfD4gbWFwX2ZsYWcgfmY6KGZ1biAoeCwgeHMpIC0+IHggOjogeHMpXG4gIDs7XG5cbiAgbGV0IGVzY2FwZV9nZW5lcmFsIH5kZXByZWNhdGVkX2hvb2sgbmFtZSA9XG4gICAgbGV0IGtleSA9IEVudi5LZXkuY3JlYXRlIH5uYW1lIFslc2V4cF9vZjogc3RyaW5nIGxpc3RdIGluXG4gICAgbGV0IGFjdGlvbiBlbnYgY21kX2xpbmUgPSBFbnYuc2V0IGVudiB+a2V5IH5kYXRhOmNtZF9saW5lIGluXG4gICAgbGV0IHJlYWQgZW52ID0gRW52LmZpbmQgZW52IGtleSBpblxuICAgIGxldCBhY3Rpb24gPVxuICAgICAgbWF0Y2ggZGVwcmVjYXRlZF9ob29rIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY3Rpb25cbiAgICAgIHwgU29tZSBmIC0+XG4gICAgICAgIGZ1biBlbnYgeCAtPlxuICAgICAgICAgIGYgeDtcbiAgICAgICAgICBhY3Rpb24gZW52IHhcbiAgICBpblxuICAgIHsgYWN0aW9uID0gUmVzdCBhY3Rpb25cbiAgICA7IHJlYWRcbiAgICA7IG51bV9vY2N1cnJlbmNlcyA9IE51bV9vY2N1cnJlbmNlcy5hdF9tb3N0X29uY2VcbiAgICA7IGV4dHJhX2RvYyA9IExhenkuZnJvbV92YWwgTm9uZVxuICAgIH1cbiAgOztcblxuICBsZXQgbm9fYXJnX2Fib3J0IH5leGl0IF9uYW1lID1cbiAgICB7IGFjdGlvbiA9IE5vX2FyZyAoZnVuIF8gLT4gbmV2ZXJfcmV0dXJucyAoZXhpdCAoKSkpXG4gICAgOyBudW1fb2NjdXJyZW5jZXMgPSBOdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgOyByZWFkID0gKGZ1biBfIC0+ICgpKVxuICAgIDsgZXh0cmFfZG9jID0gTGF6eS5mcm9tX3ZhbCBOb25lXG4gICAgfVxuICA7O1xuXG4gIGxldCBlc2NhcGUgbmFtZSA9IGVzY2FwZV9nZW5lcmFsIH5kZXByZWNhdGVkX2hvb2s6Tm9uZSBuYW1lXG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgbm9fYXJnIH5ob29rIG5hbWUgPVxuICAgICAgbm9fYXJnX2dlbmVyYWwgfmRlcHJlY2F0ZWRfaG9vazooU29tZSBob29rKSB+a2V5X3ZhbHVlOk5vbmUgbmFtZVxuICAgIDs7XG5cbiAgICBsZXQgZXNjYXBlIH5ob29rID0gZXNjYXBlX2dlbmVyYWwgfmRlcHJlY2F0ZWRfaG9vazooU29tZSBob29rKVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGF0aCA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgZW1wdHkgOiB0XG4gIHZhbCBjcmVhdGUgOiBwYXRoX3RvX2V4ZTpzdHJpbmcgLT4gdFxuICB2YWwgb2ZfcGFydHMgOiBzdHJpbmcgbGlzdCAtPiB0XG4gIHZhbCBhcHBlbmQgOiB0IC0+IHN1YmNvbW1hbmQ6c3RyaW5nIC0+IHRcbiAgdmFsIHJlcGxhY2VfZmlyc3QgOiB0IC0+IGZyb206c3RyaW5nIC0+IHRvXzpzdHJpbmcgLT4gdFxuICB2YWwgcGFydHMgOiB0IC0+IHN0cmluZyBsaXN0XG4gIHZhbCBwYXJ0c19leGVfYmFzZW5hbWUgOiB0IC0+IHN0cmluZyBsaXN0XG4gIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICB2YWwgdG9fc3RyaW5nX2RvdHMgOiB0IC0+IHN0cmluZ1xuICB2YWwgcG9wX2hlbHAgOiB0IC0+IHRcbiAgdmFsIGxlbmd0aCA6IHQgLT4gaW50XG4gIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyBsaXN0XG5cbiAgbGV0IGVtcHR5ID0gW11cbiAgbGV0IGNyZWF0ZSB+cGF0aF90b19leGUgPSBbIHBhdGhfdG9fZXhlIF1cbiAgbGV0IG9mX3BhcnRzIHBhcnRzID0gTGlzdC5yZXYgcGFydHNcbiAgbGV0IGFwcGVuZCB0IH5zdWJjb21tYW5kID0gc3ViY29tbWFuZCA6OiB0XG4gIGxldCBwYXJ0cyA9IExpc3QucmV2XG5cbiAgbGV0IHBhcnRzX2V4ZV9iYXNlbmFtZSB0ID1cbiAgICBtYXRjaCBMaXN0LnJldiB0IHdpdGhcbiAgICB8IFtdIC0+IFtdXG4gICAgfCBoZCA6OiB0bCAtPiBGaWxlbmFtZS5iYXNlbmFtZSBoZCA6OiB0bFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9IHVud29yZHMgKHBhcnRzX2V4ZV9iYXNlbmFtZSB0KVxuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGhcblxuICBsZXQgcmVwbGFjZV9maXJzdCB0IH5mcm9tIH50b18gPVxuICAgIGxldCByZWMgYXV4IHBhcnRzIH5hY2MgfmZyb20gfnRvXyA9XG4gICAgICBtYXRjaCBwYXJ0cyB3aXRoXG4gICAgICB8IFtdIC0+IGFjY1xuICAgICAgfCBoZCA6OiB0bCAtPlxuICAgICAgICBpZiBTdHJpbmcuKCA9ICkgaGQgZnJvbVxuICAgICAgICB0aGVuIExpc3QucmV2X2FwcGVuZCB0bCAodG9fIDo6IGFjYylcbiAgICAgICAgZWxzZSBhdXggdGwgfmFjYzooaGQgOjogYWNjKSB+ZnJvbSB+dG9fXG4gICAgaW5cbiAgICBhdXggKHBhcnRzIHQpIH5hY2M6W10gfmZyb20gfnRvX1xuICA7O1xuXG4gIGxldCBwb3BfaGVscCA9IGZ1bmN0aW9uXG4gICAgfCBcImhlbHBcIiA6OiB0IC0+IHRcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IHRvX3N0cmluZ19kb3RzIHQgPVxuICAgIChtYXRjaCB0IHdpdGhcbiAgICAgfCBbXSAtPiBbXVxuICAgICB8IGxhc3QgOjogaW5pdCAtPiBsYXN0IDo6IExpc3QubWFwIGluaXQgfmY6KEZuLmNvbnN0IFwiLlwiKSlcbiAgICB8PiB0b19zdHJpbmdcbiAgOztcblxuICBsZXQgaXNfZW1wdHkgPSBMaXN0LmlzX2VtcHR5XG5lbmRcblxubW9kdWxlIEFub25zID0gc3RydWN0XG4gIG1vZHVsZSBHcmFtbWFyIDogc2lnXG4gICAgdHlwZSB0ID0gU2hhcGUuQW5vbnMuR3JhbW1hci50XG5cbiAgICB2YWwgemVybyA6IHRcbiAgICB2YWwgb25lIDogc3RyaW5nIC0+IHRcbiAgICB2YWwgbWFueSA6IHQgLT4gdFxuICAgIHZhbCBtYXliZSA6IHQgLT4gdFxuICAgIHZhbCBjb25jYXQgOiB0IGxpc3QgLT4gdFxuICAgIHZhbCBhZF9ob2MgOiB1c2FnZTpzdHJpbmcgLT4gdFxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgbmFtZXMgOiB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IFNoYXBlLkFub25zLkdyYW1tYXIudCA9XG4gICAgICB8IFplcm9cbiAgICAgIHwgT25lIG9mIHN0cmluZ1xuICAgICAgfCBNYW55IG9mIHRcbiAgICAgIHwgTWF5YmUgb2YgdFxuICAgICAgfCBDb25jYXQgb2YgdCBsaXN0XG4gICAgICB8IEFkX2hvYyBvZiBzdHJpbmdcblxuICAgIGxldCBpbnZhcmlhbnQgPSBTaGFwZS5Bbm9ucy5HcmFtbWFyLmludmFyaWFudFxuICAgIGxldCB1c2FnZSA9IFNoYXBlLkFub25zLkdyYW1tYXIudXNhZ2VcblxuICAgIGxldCByZWMgaXNfZml4ZWRfYXJpdHkgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IHRydWVcbiAgICAgIHwgT25lIF8gLT4gdHJ1ZVxuICAgICAgfCBNYW55IF8gLT4gZmFsc2VcbiAgICAgIHwgTWF5YmUgXyAtPiBmYWxzZVxuICAgICAgfCBBZF9ob2MgXyAtPiBmYWxzZVxuICAgICAgfCBDb25jYXQgdHMgLT5cbiAgICAgICAgKG1hdGNoIExpc3QucmV2IHRzIHdpdGhcbiAgICAgICAgIHwgW10gLT4gZmFpbHdpdGggXCJidWcgaW4gY29tbWFuZC5tbFwiXG4gICAgICAgICB8IGxhc3QgOjogb3RoZXJzIC0+XG4gICAgICAgICAgIGFzc2VydCAoTGlzdC5mb3JfYWxsIG90aGVycyB+Zjppc19maXhlZF9hcml0eSk7XG4gICAgICAgICAgIGlzX2ZpeGVkX2FyaXR5IGxhc3QpXG4gICAgOztcblxuICAgIGxldCByZWMgbmFtZXMgPSBmdW5jdGlvblxuICAgICAgfCBaZXJvIC0+IFtdXG4gICAgICB8IE9uZSBzIC0+IFsgcyBdXG4gICAgICB8IE1hbnkgdCAtPiBuYW1lcyB0XG4gICAgICB8IE1heWJlIHQgLT4gbmFtZXMgdFxuICAgICAgfCBBZF9ob2MgcyAtPiBbIHMgXVxuICAgICAgfCBDb25jYXQgdHMgLT4gTGlzdC5jb25jYXRfbWFwIHRzIH5mOm5hbWVzXG4gICAgOztcblxuICAgIGxldCB6ZXJvID0gWmVyb1xuICAgIGxldCBvbmUgbmFtZSA9IE9uZSBuYW1lXG5cbiAgICBsZXQgbWFueSA9IGZ1bmN0aW9uXG4gICAgICB8IFplcm8gLT4gWmVybyAoKiBzdHJhbmdlLCBidXQgbm90IG5vbi1zZW5zZSAqKVxuICAgICAgfCB0IC0+XG4gICAgICAgIGlmIG5vdCAoaXNfZml4ZWRfYXJpdHkgdClcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoZlxuICAgICAgICAgICAgXCJpdGVyYXRpb24gb2YgdmFyaWFibGUtbGVuZ3RoIGdyYW1tYXJzIHN1Y2ggYXMgJXMgaXMgZGlzYWxsb3dlZFwiXG4gICAgICAgICAgICAodXNhZ2UgdClcbiAgICAgICAgICAgICgpO1xuICAgICAgICBNYW55IHRcbiAgICA7O1xuXG4gICAgbGV0IG1heWJlID0gZnVuY3Rpb25cbiAgICAgIHwgWmVybyAtPiBaZXJvICgqIHN0cmFuZ2UsIGJ1dCBub3Qgbm9uLXNlbnNlICopXG4gICAgICB8IHQgLT4gTWF5YmUgdFxuICAgIDs7XG5cbiAgICBsZXQgY29uY2F0ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gWmVyb1xuICAgICAgfCBjYXIgOjogY2RyIC0+XG4gICAgICAgIGxldCBjYXIsIGNkciA9XG4gICAgICAgICAgTGlzdC5mb2xkIGNkciB+aW5pdDooY2FyLCBbXSkgfmY6KGZ1biAodDEsIGFjYykgdDIgLT5cbiAgICAgICAgICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgICAgICAgICB8IFplcm8sIHQgfCB0LCBaZXJvIC0+IHQsIGFjY1xuICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgIGlmIGlzX2ZpeGVkX2FyaXR5IHQxXG4gICAgICAgICAgICAgIHRoZW4gdDIsIHQxIDo6IGFjY1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZmFpbHdpdGhmXG4gICAgICAgICAgICAgICAgICBcInRoZSBncmFtbWFyICVzIGZvciBhbm9ueW1vdXMgYXJndW1lbnRzIGlzIG5vdCBzdXBwb3J0ZWQgYmVjYXVzZSBcXFxuICAgICAgICAgICAgICAgICAgIHRoZXJlIGlzIHRoZSBwb3NzaWJpbGl0eSBmb3IgYXJndW1lbnRzICglcykgZm9sbG93aW5nIGEgdmFyaWFibGUgXFxcbiAgICAgICAgICAgICAgICAgICBudW1iZXIgb2YgYXJndW1lbnRzICglcykuICBTdXBwb3J0aW5nIHN1Y2ggZ3JhbW1hcnMgd291bGQgXFxcbiAgICAgICAgICAgICAgICAgICBjb21wbGljYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiBzaWduaWZpY2FudGx5LlwiXG4gICAgICAgICAgICAgICAgICAodXNhZ2UgKENvbmNhdCAoTGlzdC5yZXYgKHQyIDo6IHQxIDo6IGFjYykpKSlcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MilcbiAgICAgICAgICAgICAgICAgICh1c2FnZSB0MSlcbiAgICAgICAgICAgICAgICAgICgpKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggY2RyIHdpdGhcbiAgICAgICAgIHwgW10gLT4gY2FyXG4gICAgICAgICB8IF8gOjogXyAtPiBDb25jYXQgKExpc3QucmV2IChjYXIgOjogY2RyKSkpXG4gICAgOztcblxuICAgIGxldCBhZF9ob2MgfnVzYWdlID0gQWRfaG9jIHVzYWdlXG4gIGVuZFxuXG4gIG1vZHVsZSBQYXJzZXIgOiBzaWdcbiAgICB0eXBlICsnYSB0XG5cbiAgICB2YWwgZnJvbV9lbnYgOiAoRW52LnQgLT4gJ2EpIC0+ICdhIHRcbiAgICB2YWwgb25lIDogbmFtZTpzdHJpbmcgLT4gJ2EgQXJnX3R5cGUudCAtPiAnYSB0XG4gICAgdmFsIG1heWJlIDogJ2EgdCAtPiAnYSBvcHRpb24gdFxuICAgIHZhbCBzZXF1ZW5jZSA6ICdhIHQgLT4gJ2EgbGlzdCB0XG4gICAgdmFsIHN0b3BfcGFyc2luZyA6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaW5hbF92YWx1ZSA6ICdhIHQgLT4gRW52LnQgLT4gJ2FcblxuICAgIG1vZHVsZSBDb25zdW1lX3Jlc3VsdCA6IHNpZ1xuICAgICAgdHlwZSBub25yZWMgJ2EgdCA9XG4gICAgICAgIHsgKCogSWYgZW1hY3MgaGlnaGxpZ2h0cyBbcGFyc2VyXSBhcyBpZiBpdCB3ZXJlIGEga2V5d29yZCwgdGhhdCdzIG9ubHkgYmVjYXVzZVxuICAgICAgICAgICAgIFtwYXJzZXJdIHdhcyBhIGtleXdvcmQgaW4gY2FtbHA0LiBbcGFyc2VyXSBpcyBhIHJlZ3VsYXIgbmFtZSBpbiBPQ2FtbC4gKilcbiAgICAgICAgICBwYXJzZXIgOiAnYSB0XG4gICAgICAgIDsgcGFyc2VfZmxhZ3MgOiBib29sXG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIHZhbCBjb25zdW1lIDogJ2EgdCAtPiBzdHJpbmcgLT4gZm9yX2NvbXBsZXRpb246Ym9vbCAtPiAnYSBDb25zdW1lX3Jlc3VsdC50XG4gICAgdmFsIGNvbXBsZXRlIDogJ2EgdCAtPiBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBuZXZlcl9yZXR1cm5zXG5cbiAgICBtb2R1bGUgRm9yX29wZW5pbmcgOiBzaWdcbiAgICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gICAgICB2YWwgKCA8Kj4gKSA6ICgnYSAtPiAnYikgdCAtPiAnYSB0IC0+ICdiIHRcbiAgICAgIHZhbCAoID4+fCApIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICBlbmRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHwgRG9uZSBvZiAoRW52LnQgLT4gJ2EpXG4gICAgICB8IE1vcmUgb2YgJ2EgbW9yZVxuICAgICAgKCogQSBbVGVzdF0gd2lsbCAoZ2VuZXJhbGx5KSByZXR1cm4gYSBbRG9uZSBfXSB2YWx1ZSBpZiB0aGVyZSBpcyBubyBtb3JlIGlucHV0IGFuZFxuICAgICAgICAgYSBbTW9yZV0gcGFyc2VyIHRvIHVzZSBpZiB0aGVyZSBpcyBhbnkgbW9yZSBpbnB1dC4gKilcbiAgICAgIHwgVGVzdCBvZiAobW9yZTpib29sIC0+ICdhIHQpXG4gICAgICAoKiBJZiB3ZSdyZSBvbmx5IGNvbXBsZXRpbmcsIHdlIGNhbid0IHB1bGwgdmFsdWVzIG91dCwgYnV0IHdlIGNhbiBzdGlsbCBzdGVwIHRocm91Z2hcbiAgICAgICAgIFt0XXMgKHdoaWNoIG1heSBoYXZlIGNvbXBsZXRpb24gc2V0IHVwKS4gKilcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBvZiBwYWNrZWQgbGlzdFxuICAgICAgfCBTdG9wX3BhcnNpbmcgb2YgJ2EgdFxuXG4gICAgYW5kICdhIG1vcmUgPVxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IHBhcnNlIDogc3RyaW5nIC0+IGZvcl9jb21wbGV0aW9uOmJvb2wgLT4gJ2EgcGFyc2VfcmVzdWx0XG4gICAgICA7IGNvbXBsZXRlIDogQ29tcGxldGVyLnRcbiAgICAgIH1cblxuICAgIGFuZCBwYWNrZWQgPSBQYWNrZWQgOiAnYSB0IC0+IHBhY2tlZFxuXG4gICAgYW5kICdhIHBhcnNlX3Jlc3VsdCA9XG4gICAgICB7IHBhcnNlciA6ICdhIHRcbiAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICB9XG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEb25lIChmdW4gXyAtPiBhKVxuICAgIGxldCBmcm9tX2VudiBmID0gRG9uZSBmXG4gICAgbGV0IHN0b3BfcGFyc2luZyB0ID0gU3RvcF9wYXJzaW5nIHRcblxuICAgIGxldCBwYWNrX2Zvcl9jb21wbGV0aW9uID0gZnVuY3Rpb25cbiAgICAgIHwgRG9uZSBfIC0+IFtdICgqIHdvbid0IGNvbXBsZXRlIG9yIGNvbnN1bWUgYW55dGhpbmcgKilcbiAgICAgIHwgKE1vcmUgXyB8IFRlc3QgXyB8IFN0b3BfcGFyc2luZyBfKSBhcyB4IC0+IFsgUGFja2VkIHggXVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHBzIC0+IHBzXG4gICAgOztcblxuICAgIGxldCBwYXJzZV9tb3JlIHsgbmFtZTsgcGFyc2U7IGNvbXBsZXRlIH0gfmYgPVxuICAgICAgbGV0IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gPVxuICAgICAgICBsZXQgeyBwYXJzZXI7IHVwZGF0ZV9lbnYgfSA9IHBhcnNlIGFyZyB+Zm9yX2NvbXBsZXRpb24gaW5cbiAgICAgICAgeyBwYXJzZXIgPSBmIHBhcnNlcjsgdXBkYXRlX2VudiB9XG4gICAgICBpblxuICAgICAgTW9yZSB7IG5hbWU7IHBhcnNlOyBjb21wbGV0ZSB9XG4gICAgOztcblxuICAgIGxldCByZWMgKCA8Kj4gKSB0X2xlZnQgdF9yaWdodCA9XG4gICAgICBtYXRjaCB0X2xlZnQsIHRfcmlnaHQgd2l0aFxuICAgICAgKCogW0RvbmVdICopXG4gICAgICB8IERvbmUgZiwgRG9uZSB4IC0+IERvbmUgKGZ1biBlbnYgLT4gZiBlbnYgKHggZW52KSlcbiAgICAgICgqIG5leHQgc3RlcCBbTW9yZV0gKilcbiAgICAgIHwgTW9yZSBtb3JlLCBfIC0+IHBhcnNlX21vcmUgbW9yZSB+ZjooZnVuIHRsIC0+IHRsIDwqPiB0X3JpZ2h0KVxuICAgICAgfCBEb25lIF8sIE1vcmUgbW9yZSAtPiBwYXJzZV9tb3JlIG1vcmUgfmY6KGZ1biB0ciAtPiB0X2xlZnQgPCo+IHRyKVxuICAgICAgKCogbmV4dCBzdGVwIFtPbmx5X2Zvcl9jb21wbGV0aW9uXSAqKVxuICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIF8sIF8gfCBEb25lIF8sIE9ubHlfZm9yX2NvbXBsZXRpb24gXyAtPlxuICAgICAgICBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHRfbGVmdCBAIHBhY2tfZm9yX2NvbXBsZXRpb24gdF9yaWdodClcbiAgICAgICgqIG5leHQgc3RlcCBbU3RvcF9wYXJzaW5nXSAqKVxuICAgICAgfCBTdG9wX3BhcnNpbmcgdGwsIHRyIHwgKERvbmUgXyBhcyB0bCksIFN0b3BfcGFyc2luZyB0ciAtPiBTdG9wX3BhcnNpbmcgKHRsIDwqPiB0cilcbiAgICAgICgqIG5leHQgc3RlcCBbVGVzdF0gKilcbiAgICAgIHwgVGVzdCB0ZXN0LCBfIC0+IFRlc3QgKGZ1biB+bW9yZSAtPiB0ZXN0IH5tb3JlIDwqPiB0X3JpZ2h0KVxuICAgICAgfCBEb25lIF8sIFRlc3QgdGVzdCAtPiBUZXN0IChmdW4gfm1vcmUgLT4gdF9sZWZ0IDwqPiB0ZXN0IH5tb3JlKVxuICAgIDs7XG5cbiAgICBsZXQgKCA+PnwgKSB0IGYgPSByZXR1cm4gZiA8Kj4gdFxuXG4gICAgbGV0IG9uZV9tb3JlIH5uYW1lIGFyZ190eXBlID1cbiAgICAgIGxldCBwYXJzZSBhbm9uIH5mb3JfY29tcGxldGlvbiA9XG4gICAgICAgIG1hdGNoIEFyZ190eXBlLnBhcnNlIGFyZ190eXBlIGFub24gd2l0aFxuICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgIGlmIGZvcl9jb21wbGV0aW9uXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgKCogd2UgZG9uJ3QgKnJlYWxseSogY2FyZSBhYm91dCB0aGlzIHZhbHVlLCBzbyBqdXN0IHB1dCBpbiBhIGR1bW15IHZhbHVlIHNvXG4gICAgICAgICAgICAgICBjb21wbGV0aW9uIGNhbiBjb250aW51ZSAqKVxuICAgICAgICAgICAgeyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIFtdOyB1cGRhdGVfZW52ID0gRm4uaWQgfVxuICAgICAgICAgIGVsc2UgZGllIFwiZmFpbGVkIHRvIHBhcnNlICVzIHZhbHVlICVTXFxuJXNcIiBuYW1lIGFub24gKEV4bi50b19zdHJpbmcgZXhuKSAoKVxuICAgICAgICB8IE9rIHYgLT5cbiAgICAgICAgICB7IHBhcnNlciA9IHJldHVybiB2XG4gICAgICAgICAgOyB1cGRhdGVfZW52ID1cbiAgICAgICAgICAgICAgKGZ1biBlbnYgLT5cbiAgICAgICAgICAgICAgICAgT3B0aW9uLmZvbGQgKEFyZ190eXBlLmtleSBhcmdfdHlwZSkgfmluaXQ6ZW52IH5mOihmdW4gZW52IGtleSAtPlxuICAgICAgICAgICAgICAgICAgIEVudi5tdWx0aV9hZGQgZW52IH5rZXkgfmRhdGE6dikpXG4gICAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIE1vcmUgeyBuYW1lOyBwYXJzZTsgY29tcGxldGUgPSBBcmdfdHlwZS5jb21wbGV0ZSBhcmdfdHlwZSB9XG4gICAgOztcblxuICAgIGxldCBvbmUgfm5hbWUgYXJnX3R5cGUgPVxuICAgICAgVGVzdFxuICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgIGlmIG1vcmVcbiAgICAgICAgICAgdGhlbiBvbmVfbW9yZSB+bmFtZSBhcmdfdHlwZVxuICAgICAgICAgICBlbHNlIGRpZSBcIm1pc3NpbmcgYW5vbnltb3VzIGFyZ3VtZW50OiAlc1wiIG5hbWUgKCkpXG4gICAgOztcblxuICAgIGxldCBtYXliZSB0ID0gVGVzdCAoZnVuIH5tb3JlIC0+IGlmIG1vcmUgdGhlbiB0ID4+fCBmdW4gYSAtPiBTb21lIGEgZWxzZSByZXR1cm4gTm9uZSlcblxuICAgIGxldCBzZXF1ZW5jZSB0ID1cbiAgICAgIGxldCByZWMgbG9vcCA9XG4gICAgICAgIFRlc3RcbiAgICAgICAgICAoZnVuIH5tb3JlIC0+XG4gICAgICAgICAgICAgaWYgbW9yZSB0aGVuIHJldHVybiAoZnVuIHYgYWNjIC0+IHYgOjogYWNjKSA8Kj4gdCA8Kj4gbG9vcCBlbHNlIHJldHVybiBbXSlcbiAgICAgIGluXG4gICAgICBsb29wXG4gICAgOztcblxuICAgIGxldCByZWMgZmluYWxfdmFsdWUgdCBlbnYgPVxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IERvbmUgYSAtPiBhIGVudlxuICAgICAgfCBTdG9wX3BhcnNpbmcgdCAtPiBmaW5hbF92YWx1ZSB0IGVudlxuICAgICAgfCBUZXN0IGYgLT4gZmluYWxfdmFsdWUgKGYgfm1vcmU6ZmFsc2UpIGVudlxuICAgICAgfCBNb3JlIHsgbmFtZTsgXyB9IC0+IGRpZSBcIm1pc3NpbmcgYW5vbnltb3VzIGFyZ3VtZW50OiAlc1wiIG5hbWUgKClcbiAgICAgIHwgT25seV9mb3JfY29tcGxldGlvbiBfIC0+XG4gICAgICAgIGZhaWx3aXRoIFwiQlVHOiBhc2tlZCBmb3IgZmluYWwgdmFsdWUgd2hlbiBkb2luZyBjb21wbGV0aW9uXCJcbiAgICA7O1xuXG4gICAgbW9kdWxlIENvbnN1bWVfcmVzdWx0ID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICAgICAgeyBwYXJzZXIgOiAnYSB0XG4gICAgICAgIDsgcGFyc2VfZmxhZ3MgOiBib29sXG4gICAgICAgIDsgdXBkYXRlX2VudiA6IEVudi50IC0+IEVudi50XG4gICAgICAgIH1cbiAgICBlbmRcblxuICAgIGxldCByZWMgY29uc3VtZSA6IHR5cGUgYS4gYSB0IC0+IHN0cmluZyAtPiBmb3JfY29tcGxldGlvbjpib29sIC0+IGEgQ29uc3VtZV9yZXN1bHQudCA9XG4gICAgICBmdW4gdCBhcmcgfmZvcl9jb21wbGV0aW9uIC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgRG9uZSBfIC0+IGRpZSBcInRvbyBtYW55IGFub255bW91cyBhcmd1bWVudHNcIiAoKVxuICAgICAgfCBUZXN0IGYgLT4gY29uc3VtZSAoZiB+bW9yZTp0cnVlKSBhcmcgfmZvcl9jb21wbGV0aW9uXG4gICAgICB8IE1vcmUgeyBwYXJzZTsgXyB9IC0+XG4gICAgICAgIGxldCB7IHBhcnNlcjsgdXBkYXRlX2VudiB9ID0gcGFyc2UgYXJnIH5mb3JfY29tcGxldGlvbiBpblxuICAgICAgICB7IHBhcnNlcjsgcGFyc2VfZmxhZ3MgPSB0cnVlOyB1cGRhdGVfZW52IH1cbiAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4geyAoY29uc3VtZSB0IGFyZyB+Zm9yX2NvbXBsZXRpb24pIHdpdGggcGFyc2VfZmxhZ3MgPSBmYWxzZSB9XG4gICAgICB8IE9ubHlfZm9yX2NvbXBsZXRpb24gcGFja2VkIC0+XG4gICAgICAgIChtYXRjaCBwYWNrZWQgd2l0aFxuICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICB7IHBhcnNlciA9IE9ubHlfZm9yX2NvbXBsZXRpb24gW107IHBhcnNlX2ZsYWdzID0gdHJ1ZTsgdXBkYXRlX2VudiA9IEZuLmlkIH1cbiAgICAgICAgIHwgUGFja2VkIHQgOjogcmVzdCAtPlxuICAgICAgICAgICBsZXQgKHsgdXBkYXRlX2VudjsgcGFyc2VfZmxhZ3M7IHBhcnNlciB9IDogXyBDb25zdW1lX3Jlc3VsdC50KSA9XG4gICAgICAgICAgICAgY29uc3VtZSB0IGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgeyB1cGRhdGVfZW52XG4gICAgICAgICAgIDsgcGFyc2VfZmxhZ3NcbiAgICAgICAgICAgOyBwYXJzZXIgPSBPbmx5X2Zvcl9jb21wbGV0aW9uIChwYWNrX2Zvcl9jb21wbGV0aW9uIHBhcnNlciBAIHJlc3QpXG4gICAgICAgICAgIH0pXG4gICAgOztcblxuICAgIGxldCByZWMgY29tcGxldGUgOiB0eXBlIGEuIGEgdCAtPiBFbnYudCAtPiBwYXJ0OnN0cmluZyAtPiBuZXZlcl9yZXR1cm5zID1cbiAgICAgIGZ1biB0IGVudiB+cGFydCAtPlxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBEb25lIF8gLT4gZXhpdCAwXG4gICAgICAgIHwgVGVzdCBmIC0+IGNvbXBsZXRlIChmIH5tb3JlOnRydWUpIGVudiB+cGFydFxuICAgICAgICB8IE1vcmUgeyBjb21wbGV0ZTsgXyB9IC0+IENvbXBsZXRlci5ydW5fYW5kX2V4aXQgY29tcGxldGUgZW52IH5wYXJ0XG4gICAgICAgIHwgU3RvcF9wYXJzaW5nIHQgLT4gY29tcGxldGUgdCBlbnYgfnBhcnRcbiAgICAgICAgfCBPbmx5X2Zvcl9jb21wbGV0aW9uIHQgLT5cbiAgICAgICAgICAobWF0Y2ggdCB3aXRoXG4gICAgICAgICAgIHwgW10gLT4gZXhpdCAwXG4gICAgICAgICAgIHwgUGFja2VkIHQgOjogXyAtPiBjb21wbGV0ZSB0IGVudiB+cGFydClcbiAgICA7O1xuXG4gICAgbW9kdWxlIEZvcl9vcGVuaW5nID0gc3RydWN0XG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgICBsZXQgKCA8Kj4gKSA9ICggPCo+IClcbiAgICAgIGxldCAoID4+fCApID0gKCA+PnwgKVxuICAgIGVuZFxuICBlbmRcblxuICBvcGVuIFBhcnNlci5Gb3Jfb3BlbmluZ1xuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwIDogJ2EgUGFyc2VyLnRcbiAgICA7IGdyYW1tYXIgOiBHcmFtbWFyLnRcbiAgICB9XG5cbiAgbGV0IHQyIHQxIHQyID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiAtPiBhMSwgYTIpIDwqPiB0MS5wIDwqPiB0Mi5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IHQzIHQxIHQyIHQzID1cbiAgICB7IHAgPSByZXR1cm4gKGZ1biBhMSBhMiBhMyAtPiBhMSwgYTIsIGEzKSA8Kj4gdDEucCA8Kj4gdDIucCA8Kj4gdDMucFxuICAgIDsgZ3JhbW1hciA9IEdyYW1tYXIuY29uY2F0IFsgdDEuZ3JhbW1hcjsgdDIuZ3JhbW1hcjsgdDMuZ3JhbW1hciBdXG4gICAgfVxuICA7O1xuXG4gIGxldCB0NCB0MSB0MiB0MyB0NCA9XG4gICAgeyBwID0gcmV0dXJuIChmdW4gYTEgYTIgYTMgYTQgLT4gYTEsIGEyLCBhMywgYTQpIDwqPiB0MS5wIDwqPiB0Mi5wIDwqPiB0My5wIDwqPiB0NC5wXG4gICAgOyBncmFtbWFyID0gR3JhbW1hci5jb25jYXQgWyB0MS5ncmFtbWFyOyB0Mi5ncmFtbWFyOyB0My5ncmFtbWFyOyB0NC5ncmFtbWFyIF1cbiAgICB9XG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZSBzdHIgPVxuICAgICgqIFZlcmlmeSB0aGUgc3RyaW5nIGlzIG5vdCBlbXB0eSBvciBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2UgKilcbiAgICBsZXQgc3RybGVuID0gU3RyaW5nLmxlbmd0aCBzdHIgaW5cbiAgICBpZiBzdHJsZW4gPSAwIHRoZW4gZmFpbHdpdGggXCJFbXB0eSBhbm9ueW1vdXMgYXJndW1lbnQgbmFtZSBwcm92aWRlZFwiO1xuICAgIGlmIFN0cmluZy4oIDw+ICkgKFN0cmluZy5zdHJpcCBzdHIpIHN0clxuICAgIHRoZW4gZmFpbHdpdGhmIFwiYXJndW1lbnQgbmFtZSAlUyBoYXMgc3Vycm91bmRpbmcgd2hpdGVzcGFjZVwiIHN0ciAoKTtcbiAgICAoKiBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIHNwZWNpYWwgc3Vycm91bmRpbmcgY2hhcmFjdGVycywgZG9uJ3QgZG8gYW55dGhpbmcgKilcbiAgICBsZXQgaGFzX3NwZWNpYWxfY2hhcnMgPVxuICAgICAgbGV0IHNwZWNpYWxfY2hhcnMgPSBDaGFyLlNldC5vZl9saXN0IFsgJzwnOyAnPic7ICdbJzsgJ10nOyAnKCc7ICcpJzsgJ3snOyAnfScgXSBpblxuICAgICAgU3RyaW5nLmV4aXN0cyBzdHIgfmY6KFNldC5tZW0gc3BlY2lhbF9jaGFycylcbiAgICBpblxuICAgIGlmIGhhc19zcGVjaWFsX2NoYXJzIHRoZW4gc3RyIGVsc2UgU3RyaW5nLnVwcGVyY2FzZSBzdHJcbiAgOztcblxuICBsZXQgKCAlOiApIG5hbWUgYXJnX3R5cGUgPVxuICAgIGxldCBuYW1lID0gbm9ybWFsaXplIG5hbWUgaW5cbiAgICB7IHAgPSBQYXJzZXIub25lIH5uYW1lIGFyZ190eXBlOyBncmFtbWFyID0gR3JhbW1hci5vbmUgbmFtZSB9XG4gIDs7XG5cbiAgbGV0IG1hcF9hbm9ucyB0IH5mID0geyBwID0gdC5wID4+fCBmOyBncmFtbWFyID0gdC5ncmFtbWFyIH1cbiAgbGV0IG1heWJlIHQgPSB7IHAgPSBQYXJzZXIubWF5YmUgdC5wOyBncmFtbWFyID0gR3JhbW1hci5tYXliZSB0LmdyYW1tYXIgfVxuXG4gIGxldCBtYXliZV93aXRoX2RlZmF1bHQgZGVmYXVsdCB0ID1cbiAgICBsZXQgdCA9IG1heWJlIHQgaW5cbiAgICB7IHQgd2l0aCBwID0gKHQucCA+PnwgZnVuIHYgLT4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0IHYpIH1cbiAgOztcblxuICBsZXQgc2VxdWVuY2UgdCA9IHsgcCA9IFBhcnNlci5zZXF1ZW5jZSB0LnA7IGdyYW1tYXIgPSBHcmFtbWFyLm1hbnkgdC5ncmFtbWFyIH1cbiAgbGV0IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyIHQgPSB0MiB0IChzZXF1ZW5jZSB0KVxuXG4gIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdCB0ID1cbiAgICBsZXQgdCA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyIHQgaW5cbiAgICB7IHQgd2l0aCBwID0gKHQucCA+PnwgZnVuICh4LCB4cykgLT4geCA6OiB4cykgfVxuICA7O1xuXG4gIGxldCBlc2NhcGUgdCA9IHsgcCA9IFBhcnNlci5zdG9wX3BhcnNpbmcgdC5wOyBncmFtbWFyID0gdC5ncmFtbWFyIH1cblxuICBtb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICAgIGxldCBhZF9ob2MgfnVzYWdlX2FyZyA9XG4gICAgICB7IHAgPVxuICAgICAgICAgIFBhcnNlci5zZXF1ZW5jZVxuICAgICAgICAgICAgKFBhcnNlci5vbmUgfm5hbWU6XCJXSUxMIE5FVkVSIEJFIFBSSU5URURcIiBBcmdfdHlwZS5FeHBvcnQuc3RyaW5nKVxuICAgICAgOyBncmFtbWFyID0gR3JhbW1hci5hZF9ob2MgfnVzYWdlOnVzYWdlX2FyZ1xuICAgICAgfVxuICAgIDs7XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDbWRsaW5lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2Ygc3RyaW5nICogdFxuICAgIHwgQ29tcGxldGUgb2Ygc3RyaW5nXG4gIFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgbGV0IG9mX2xpc3QgYXJncyA9IExpc3QuZm9sZF9yaWdodCBhcmdzIH5pbml0Ok5pbCB+ZjooZnVuIGFyZyBhcmdzIC0+IENvbnMgKGFyZywgYXJncykpXG5cbiAgbGV0IHJlYyB0b19saXN0ID0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBbXVxuICAgIHwgQ29ucyAoeCwgeHMpIC0+IHggOjogdG9fbGlzdCB4c1xuICAgIHwgQ29tcGxldGUgeCAtPiBbIHggXVxuICA7O1xuXG4gIGxldCByZWMgZW5kc19pbl9jb21wbGV0ZSA9IGZ1bmN0aW9uXG4gICAgfCBDb21wbGV0ZSBfIC0+IHRydWVcbiAgICB8IE5pbCAtPiBmYWxzZVxuICAgIHwgQ29ucyAoXywgYXJncykgLT4gZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gIDs7XG5cbiAgbGV0IGV4dGVuZCB0IH5leHRlbmQgfnBhdGggPVxuICAgIGlmIGVuZHNfaW5fY29tcGxldGUgdFxuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHBhdGhfbGlzdCA9IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpbXSAoTGlzdC50bCAoUGF0aC5wYXJ0cyBwYXRoKSkgaW5cbiAgICAgIG9mX2xpc3QgKHRvX2xpc3QgdCBAIGV4dGVuZCBwYXRoX2xpc3QpKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBLZXlfdHlwZSA9IFNoYXBlLlByaXZhdGUuS2V5X3R5cGVcblxubGV0IGFzc2VydF9ub191bmRlcnNjb3JlcyBrZXlfdHlwZSBmbGFnX29yX3N1YmNvbW1hbmQgPVxuICBpZiBTdHJpbmcuZXhpc3RzIGZsYWdfb3Jfc3ViY29tbWFuZCB+ZjooZnVuIGMgLT4gQ2hhci4oID0gKSBjICdfJylcbiAgdGhlblxuICAgIGZhaWx3aXRoZlxuICAgICAgXCIlcyAlcyBjb250YWlucyBhbiB1bmRlcnNjb3JlLiBVc2UgYSBkYXNoIGluc3RlYWQuXCJcbiAgICAgIChLZXlfdHlwZS50b19zdHJpbmcga2V5X3R5cGUpXG4gICAgICBmbGFnX29yX3N1YmNvbW1hbmRcbiAgICAgICgpXG47O1xuXG5sZXQgbm9ybWFsaXplIGtleV90eXBlIGtleSA9XG4gIGFzc2VydF9ub191bmRlcnNjb3JlcyBrZXlfdHlwZSBrZXk7XG4gIG1hdGNoIGtleV90eXBlIHdpdGhcbiAgfCBLZXlfdHlwZS5GbGFnIC0+XG4gICAgaWYgU3RyaW5nLmVxdWFsIGtleSBcIi1cIiB0aGVuIGZhaWx3aXRoZiAhXCJpbnZhbGlkICV7S2V5X3R5cGV9IG5hbWU6ICVTXCIga2V5X3R5cGUga2V5ICgpO1xuICAgIGlmIFN0cmluZy5leGlzdHMga2V5IH5mOkNoYXIuaXNfd2hpdGVzcGFjZVxuICAgIHRoZW4gZmFpbHdpdGhmICFcImludmFsaWQgJXtLZXlfdHlwZX0gbmFtZSAoY29udGFpbnMgd2hpdGVzcGFjZSk6ICVTXCIga2V5X3R5cGUga2V5ICgpO1xuICAgIGlmIFN0cmluZy5pc19wcmVmaXggfnByZWZpeDpcIi1cIiBrZXkgdGhlbiBrZXkgZWxzZSBcIi1cIiBeIGtleVxuICB8IEtleV90eXBlLlN1YmNvbW1hbmQgLT4gU3RyaW5nLmxvd2VyY2FzZSBrZXlcbjs7XG5cbmxldCBsb29rdXBfZXhwYW5kID0gU2hhcGUuUHJpdmF0ZS5sb29rdXBfZXhwYW5kXG5cbmxldCBsb29rdXBfZXhwYW5kX3dpdGhfYWxpYXNlcyBtYXAgcHJlZml4IGtleV90eXBlID1cbiAgbGV0IGFsaXN0ID1cbiAgICBMaXN0LmNvbmNhdF9tYXAgKFN0cmluZy5NYXAuZGF0YSBtYXApIH5mOihmdW4gZmxhZyAtPlxuICAgICAgbGV0IHsgRmxhZy5JbnRlcm5hbC5uYW1lXG4gICAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgIDsgYWN0aW9uID0gX1xuICAgICAgICAgIDsgZG9jID0gX1xuICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gX1xuICAgICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gX1xuICAgICAgICAgIDsgbmFtZV9tYXRjaGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgPVxuICAgICAgICBmbGFnXG4gICAgICBpblxuICAgICAgbGV0IGRhdGEgPSBmbGFnLCBuYW1lX21hdGNoaW5nIGluXG4gICAgICBsZXQgYWxpYXNlcyA9IGFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwIEAgYWxpYXNlcyBpblxuICAgICAgKG5hbWUsIGRhdGEpIDo6IExpc3QubWFwIGFsaWFzZXMgfmY6KGZ1biBhbGlhcyAtPiBhbGlhcywgZGF0YSkpXG4gIGluXG4gIG1hdGNoIExpc3QuZmluZF9hX2R1cCBhbGlzdCB+Y29tcGFyZTooZnVuIChzMSwgXykgKHMyLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBzMSBzMikgd2l0aFxuICB8IE5vbmUgLT4gbG9va3VwX2V4cGFuZCBhbGlzdCBwcmVmaXgga2V5X3R5cGVcbiAgfCBTb21lIChmbGFnLCBfKSAtPiBmYWlsd2l0aGYgXCJtdWx0aXBsZSBmbGFncyBuYW1lZCAlc1wiIGZsYWcgKClcbjs7XG5cbm1vZHVsZSBCYXNlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBzdW1tYXJ5IDogc3RyaW5nXG4gICAgOyByZWFkbWUgOiAodW5pdCAtPiBzdHJpbmcpIG9wdGlvblxuICAgIDsgZmxhZ3MgOiBGbGFnLkludGVybmFsLnQgU3RyaW5nLk1hcC50XG4gICAgO1xuICAgICAgYW5vbnMgOiB1bml0IC0+IChbIGBQYXJzZV9hcmdzIF0gLT4gWyBgUnVuX21haW4gXSAtPiB1bml0KSBBbm9ucy5QYXJzZXIudFxuICAgIDsgdXNhZ2UgOiBBbm9ucy5HcmFtbWFyLnRcbiAgICB9XG5cbiAgbW9kdWxlIERlcHJlY2F0ZWQgPSBzdHJ1Y3RcbiAgICBsZXQgc3ViY29tbWFuZF9jbXBfZnN0IChhLCBfKSAoYywgXykgPSBoZWxwX3NjcmVlbl9jb21wYXJlIGEgY1xuXG4gICAgbGV0IGZsYWdzX2hlbHAgPyhkaXNwbGF5X2hlbHBfZmxhZ3MgPSB0cnVlKSB0ID1cbiAgICAgIGxldCBmbGFncyA9IFN0cmluZy5NYXAuZGF0YSB0LmZsYWdzIGluXG4gICAgICBsZXQgZmxhZ3MgPVxuICAgICAgICBpZiBkaXNwbGF5X2hlbHBfZmxhZ3NcbiAgICAgICAgdGhlbiBmbGFnc1xuICAgICAgICBlbHNlIExpc3QuZmlsdGVyIGZsYWdzIH5mOihmdW4gZiAtPiBTdHJpbmcuKCA8PiApIGYubmFtZSBcIi1oZWxwXCIpXG4gICAgICBpblxuICAgICAgTGlzdC5jb25jYXRfbWFwIH5mOkZsYWcuSW50ZXJuYWwuRGVwcmVjYXRlZC5oZWxwIGZsYWdzXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZvcm1hdHRlZF9mbGFncyB0ID1cbiAgICBTdHJpbmcuTWFwLmRhdGEgdC5mbGFnc1xuICAgIHw+IExpc3QubWFwIH5mOkZsYWcuSW50ZXJuYWwuYWxpZ25cbiAgICAoKiB0aGlzIHNvcnQgcHV0cyBvcHRpb25hbCBmbGFncyBhZnRlciByZXF1aXJlZCBvbmVzICopXG4gICAgfD4gTGlzdC5zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IFN0cmluZy5jb21wYXJlIGEubmFtZSBiLm5hbWUpXG4gICAgfD4gU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkuc29ydFxuICA7O1xuXG4gIGxldCBzaGFwZSB0IDogU2hhcGUuQmFzZV9pbmZvLnQgPVxuICAgIHsgc3VtbWFyeSA9IHQuc3VtbWFyeVxuICAgIDsgcmVhZG1lID0gT3B0aW9uLm1hcCB0LnJlYWRtZSB+ZjooZnVuIHJlYWRtZSAtPiByZWFkbWUgKCkpXG4gICAgOyBhbm9ucyA9IEdyYW1tYXIgdC51c2FnZVxuICAgIDsgZmxhZ3MgPSBmb3JtYXR0ZWRfZmxhZ3MgdFxuICAgIH1cbiAgOztcblxuICBsZXQgcGF0aF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcInBhdGhcIlxuICBsZXQgYXJnc19rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImFyZ3NcIlxuICBsZXQgaGVscF9rZXkgPSBFbnYua2V5X2NyZWF0ZSBcImhlbHBcIlxuXG4gIGxldCBpbmRlbnRfYnlfMiBzdHIgPVxuICAgIFN0cmluZy5zcGxpdCB+b246J1xcbicgc3RyXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBsaW5lIC0+IFwiICBcIiBeIGxpbmUpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgZ2V0X2ZsYWdfYW5kX2FjdGlvbiB0IGFyZyA9XG4gICAgbWF0Y2ggbG9va3VwX2V4cGFuZF93aXRoX2FsaWFzZXMgdC5mbGFncyBhcmcgRmxhZyB3aXRoXG4gICAgfCBFcnJvciBtc2cgLT4gZGllIFwiJXNcIiBtc2cgKClcbiAgICB8IE9rIChmbGFnX25hbWUsIGZsYWcpIC0+IGZsYWdfbmFtZSwgZmxhZy5hY3Rpb25cbiAgOztcblxuICBsZXQgcnVuX2ZsYWcgdCBlbnYgYXJnIChhcmdzIDogQ21kbGluZS50KSA9XG4gICAgbGV0IGZsYWcsIGFjdGlvbiA9IGdldF9mbGFnX2FuZF9hY3Rpb24gdCBhcmcgaW5cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgUHJpbnRfaW5mb19hbmRfcXVpdCBpbmZvIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICAoKiBJZiB3ZSdyZSBkb2luZyBjb21wbGV0aW9uLCB2ZXJzaW9uL2hlbHAgaW5mbyBhcmVuJ3QgdXNlZnVsIGNvbXBsZXRpb25cbiAgICAgICAgIHJlc3BvbnNlcy4gKilcbiAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgIHRoZW4gZW52LCBhcmdzXG4gICAgICBlbHNlIChcbiAgICAgICAgcHJpbnRfZW5kbGluZSAoaW5mbyBlbnYpO1xuICAgICAgICBleGl0IDApXG4gICAgfCBOb19hcmcgZiAtPiBmIGVudiwgYXJnc1xuICAgIHwgQXJnIChmLCBjb21wKSAtPlxuICAgICAgKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgIHwgTmlsIC0+IGRpZSBcIm1pc3NpbmcgYXJndW1lbnQgZm9yIGZsYWcgJXNcIiBmbGFnICgpXG4gICAgICAgfCBDb25zIChhcmcsIHJlc3QpIC0+XG4gICAgICAgICBsZXQgZW52ID1cbiAgICAgICAgICAgdHJ5IGYgZW52IGFyZyB3aXRoXG4gICAgICAgICAgIHwgRmFpbGVkX3RvX3BhcnNlX2NvbW1hbmRfbGluZSBfIGFzIGUgLT5cbiAgICAgICAgICAgICBpZiBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgcmVzdCB0aGVuIGVudiBlbHNlIHJhaXNlIGVcbiAgICAgICAgIGluXG4gICAgICAgICBlbnYsIHJlc3RcbiAgICAgICB8IENvbXBsZXRlIHBhcnQgLT4gbmV2ZXJfcmV0dXJucyAoQ29tcGxldGVyLnJ1bl9hbmRfZXhpdCBjb21wIGVudiB+cGFydCkpXG4gICAgfCBSZXN0IGYgLT5cbiAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIHRoZW4gZXhpdCAwO1xuICAgICAgZiBlbnYgKENtZGxpbmUudG9fbGlzdCBhcmdzKSwgTmlsXG4gIDs7XG5cbiAgbGV0IHJlYyBydW5fY21kbGluZSB0IGVudiBwYXJzZXIgKGNtZGxpbmUgOiBDbWRsaW5lLnQpIH5mb3JfY29tcGxldGlvbiB+cGFyc2VfZmxhZ3MgPVxuICAgIG1hdGNoIGNtZGxpbmUgd2l0aFxuICAgIHwgTmlsIC0+XG4gICAgICBMaXN0Lml0ZXIgKFN0cmluZy5NYXAuZGF0YSB0LmZsYWdzKSB+ZjooZnVuIGZsYWcgLT4gZmxhZy5jaGVja19hdmFpbGFibGUgZW52KTtcbiAgICAgIEFub25zLlBhcnNlci5maW5hbF92YWx1ZSBwYXJzZXIgZW52XG4gICAgfCBDb21wbGV0ZSBwYXJ0IC0+XG4gICAgICBpZiBwYXJzZV9mbGFncyAmJiBTdHJpbmcuaXNfcHJlZml4IHBhcnQgfnByZWZpeDpcIi1cIlxuICAgICAgdGhlbiAoXG4gICAgICAgIExpc3QuaXRlciAoU3RyaW5nLk1hcC5rZXlzIHQuZmxhZ3MpIH5mOihmdW4gbmFtZSAtPlxuICAgICAgICAgIGlmIFN0cmluZy5pc19wcmVmaXggbmFtZSB+cHJlZml4OnBhcnQgdGhlbiBwcmludF9lbmRsaW5lIG5hbWUpO1xuICAgICAgICBleGl0IDApXG4gICAgICBlbHNlIG5ldmVyX3JldHVybnMgKEFub25zLlBhcnNlci5jb21wbGV0ZSBwYXJzZXIgZW52IH5wYXJ0KVxuICAgIHwgQ29ucyAoYXJnLCBhcmdzKSAtPlxuICAgICAgbGV0IGFyZywgYXJncywgYXJnX2lzX2ZsYWcgPVxuICAgICAgICBtYXRjaCBwYXJzZV9mbGFncyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gYXJnLCBhcmdzLCBmYWxzZVxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAobWF0Y2ggYXJnLCBhcmdzIHdpdGhcbiAgICAgICAgICAgKCogdGhlICctYW5vbicgZmxhZyBpcyBoZXJlIGFzIGFuIGVzY2FwZSBoYXRjaCBpbiBjYXNlIHlvdSBoYXZlIGFuXG4gICAgICAgICAgICAgIGFub255bW91cyBhcmd1bWVudCB0aGF0IHN0YXJ0cyB3aXRoIGEgaHlwaGVuLiAqKVxuICAgICAgICAgICB8IFwiLWFub25cIiwgQ29ucyAoYXJnLCBhcmdzKSAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgICgqIHN1cHBvcnQgdGhlIGNvbW1vbiBVbml4IGNvbnZlbnRpb24gd2hlcmUgXCItXCIgbWVhbnMgc3RkaW4gKilcbiAgICAgICAgICAgfCBcIi1cIiwgXyAtPiBhcmcsIGFyZ3MsIGZhbHNlXG4gICAgICAgICAgIHwgXywgXyAtPiBhcmcsIGFyZ3MsIFN0cmluZy5pc19wcmVmaXggYXJnIH5wcmVmaXg6XCItXCIpXG4gICAgICBpblxuICAgICAgKG1hdGNoIGFyZ19pc19mbGFnIHdpdGhcbiAgICAgICB8IHRydWUgLT5cbiAgICAgICAgIGxldCBlbnYsIGFyZ3MgPSBydW5fZmxhZyB0IGVudiBhcmcgYXJncyBpblxuICAgICAgICAgcnVuX2NtZGxpbmUgdCBlbnYgcGFyc2VyIGFyZ3MgfnBhcnNlX2ZsYWdzIH5mb3JfY29tcGxldGlvblxuICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFnczEgPSBwYXJzZV9mbGFncyBpblxuICAgICAgICAgbGV0ICh7IHBhcnNlcjsgcGFyc2VfZmxhZ3MgPSBwYXJzZV9mbGFnczI7IHVwZGF0ZV9lbnYgfVxuICAgICAgICAgICAgICA6IF8gQW5vbnMuUGFyc2VyLkNvbnN1bWVfcmVzdWx0LnQpXG4gICAgICAgICAgID1cbiAgICAgICAgICAgQW5vbnMuUGFyc2VyLmNvbnN1bWUgcGFyc2VyIGFyZyB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgZW52ID0gdXBkYXRlX2VudiBlbnYgaW5cbiAgICAgICAgIGxldCBwYXJzZV9mbGFncyA9IHBhcnNlX2ZsYWdzMSAmJiBwYXJzZV9mbGFnczIgaW5cbiAgICAgICAgIHJ1bl9jbWRsaW5lIHQgZW52IHBhcnNlciB+cGFyc2VfZmxhZ3MgYXJncyB+Zm9yX2NvbXBsZXRpb24pXG4gIDs7XG5cbiAgbGV0IHJ1bl9leG4gZXhuIH5mb3JfY29tcGxldGlvbiB+cGF0aCB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvciA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgXyB3aGVuIGZvcl9jb21wbGV0aW9uIC0+IGV4aXQgMFxuICAgIHwgRXhpdF9jYWxsZWQgeyBzdGF0dXMgfSAtPiBleGl0IHN0YXR1c1xuICAgIHwgXyAtPlxuICAgICAgbGV0IGV4bl9zdHIgPVxuICAgICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+IG1zZ1xuICAgICAgICB8IF8gLT4gU2V4cC50b19zdHJpbmdfaHVtIFslc2V4cCAoZXhuIDogZXhuKV1cbiAgICAgIGluXG4gICAgICBsZXQgdmVyYm9zZSA9IE9wdGlvbi52YWx1ZSB2ZXJib3NlX29uX3BhcnNlX2Vycm9yIH5kZWZhdWx0OnRydWUgaW5cbiAgICAgIGxldCBlcnJvcl9tc2cgPVxuICAgICAgICBpZiB2ZXJib3NlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBTdHJpbmcuY29uY2F0XG4gICAgICAgICAgICB+c2VwOlwiXFxuXFxuXCJcbiAgICAgICAgICAgIFsgXCJFcnJvciBwYXJzaW5nIGNvbW1hbmQgbGluZTpcIlxuICAgICAgICAgICAgOyBpbmRlbnRfYnlfMiBleG5fc3RyXG4gICAgICAgICAgICA7IFwiRm9yIHVzYWdlIGluZm9ybWF0aW9uLCBydW5cIlxuICAgICAgICAgICAgOyBcIiAgXCIgXiBQYXRoLnRvX3N0cmluZyBwYXRoIF4gXCIgLWhlbHBcXG5cIlxuICAgICAgICAgICAgXVxuICAgICAgICBlbHNlIGV4bl9zdHJcbiAgICAgIGluXG4gICAgICBwcmVycl9lbmRsaW5lIGVycm9yX21zZztcbiAgICAgIGV4aXQgMVxuICA7O1xuXG4gIGxldCBydW4gdCBlbnYgfndoZW5fcGFyc2luZ19zdWNjZWVkcyB+cGF0aCB+YXJncyB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvciB+aGVscF90ZXh0ID1cbiAgICBsZXQgZm9yX2NvbXBsZXRpb24gPSBDbWRsaW5lLmVuZHNfaW5fY29tcGxldGUgYXJncyBpblxuICAgIGxldCBlbnYgPVxuICAgICAgZW52XG4gICAgICB8PiBFbnYuc2V0IH5rZXk6cGF0aF9rZXkgfmRhdGE6cGF0aFxuICAgICAgfD4gRW52LnNldCB+a2V5OmFyZ3Nfa2V5IH5kYXRhOihDbWRsaW5lLnRvX2xpc3QgYXJncylcbiAgICAgIHw+IEVudi5zZXQgfmtleTpoZWxwX2tleSB+ZGF0YTpoZWxwX3RleHRcbiAgICBpblxuICAgIG1hdGNoXG4gICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICBydW5fY21kbGluZVxuICAgICAgICAgIHRcbiAgICAgICAgICBlbnZcbiAgICAgICAgICAodC5hbm9ucyAoKSlcbiAgICAgICAgICB+Zm9yX2NvbXBsZXRpb25cbiAgICAgICAgICB+cGFyc2VfZmxhZ3M6dHJ1ZVxuICAgICAgICAgIGFyZ3NcbiAgICAgICAgICBgUGFyc2VfYXJncylcbiAgICB3aXRoXG4gICAgfCBPayB0aHVuayAtPlxuICAgICAgd2hlbl9wYXJzaW5nX3N1Y2NlZWRzICgpO1xuICAgICAgdGh1bmsgYFJ1bl9tYWluXG4gICAgfCBFcnJvciBleG4gLT4gcnVuX2V4biBleG4gfmZvcl9jb21wbGV0aW9uIH5wYXRoIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gIDs7XG5cbiAgbW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgICAgeyBmIDogdW5pdCAtPiAoJ2EgLT4gJ2IpIEFub25zLlBhcnNlci50XG4gICAgICA7IHVzYWdlIDogdW5pdCAtPiBBbm9ucy5HcmFtbWFyLnRcbiAgICAgIDsgZmxhZ3MgOiB1bml0IC0+IEZsYWcuSW50ZXJuYWwudCBsaXN0XG4gICAgICB9XG5cbiAgICAoKiB0aGUgKGhpc3RvcmljYWwpIHJlYXNvbiB0aGF0IFtwYXJhbV0gaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBbdF0gcmF0aGVyIHRoYW4gdGhlXG4gICAgICAgb3RoZXIgd2F5IHJvdW5kIGlzIHRoYXQgdGhlIGRlbGF5ZWQgZXZhbHVhdGlvbiBtYXR0ZXJlZCBmb3Igc2VxdWVuY2luZyBvZlxuICAgICAgIHJlYWQvd3JpdGUgb3BlcmF0aW9ucyBvbiByZWYgY2VsbHMgaW4gdGhlIG9sZCByZXByZXNlbnRhdGlvbiBvZiBmbGFncyAqKVxuICAgIHR5cGUgJ2EgcGFyYW0gPSB7IHBhcmFtIDogJ20uICgnYSAtPiAnbSwgJ20pIHQgfVxuXG4gICAgb3BlbiBBbm9ucy5QYXJzZXIuRm9yX29wZW5pbmdcblxuICAgIGxldCBhcHAgdDEgdDIgfmYgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiByZXR1cm4gZiA8Kj4gdDEuZiAoKSA8Kj4gdDIuZiAoKSlcbiAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IHQyLmZsYWdzICgpIEAgdDEuZmxhZ3MgKCkpXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLmNvbmNhdCBbIHQxLnVzYWdlICgpOyB0Mi51c2FnZSAoKSBdKVxuICAgICAgfVxuICAgIDs7XG5cbiAgICAoKiBTbyBzYWQuICBXZSBjYW4ndCBkZWZpbmUgW2FwcGx5XSBpbiB0ZXJtcyBvZiBbYXBwXSBiZWNhdXNlIG9mIHRoZSB2YWx1ZVxuICAgICAgIHJlc3RyaWN0aW9uLiAqKVxuICAgIGxldCBhcHBseSBwZiBweCA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPVxuICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIHJldHVybiAoZnVuIG1mIG14IGsgLT4gbWYgKGZ1biBmIC0+IG14IChmdW4geCAtPiBrIChmIHgpKSkpXG4gICAgICAgICAgICAgICAgIDwqPiBwZi5wYXJhbS5mICgpXG4gICAgICAgICAgICAgICAgIDwqPiBweC5wYXJhbS5mICgpKVxuICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IHB4LnBhcmFtLmZsYWdzICgpIEAgcGYucGFyYW0uZmxhZ3MgKCkpXG4gICAgICAgICAgOyB1c2FnZSA9XG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gQW5vbnMuR3JhbW1hci5jb25jYXQgWyBwZi5wYXJhbS51c2FnZSAoKTsgcHgucGFyYW0udXNhZ2UgKCkgXSlcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCAoICsrICkgdDEgdDIgPSBhcHAgdDEgdDIgfmY6KGZ1biBmMSBmMiB4IC0+IGYyIChmMSB4KSlcbiAgICBsZXQgKCArPiApIHQxIHAyID0gYXBwIHQxIHAyLnBhcmFtIH5mOihmdW4gZjEgZjIgeCAtPiBmMiAoZjEgeCkpXG4gICAgbGV0ICggKzwgKSB0MSBwMiA9IGFwcCBwMi5wYXJhbSB0MSB+ZjooZnVuIGYyIGYxIHggLT4gZjEgKGYyIHgpKVxuXG4gICAgbGV0IHN0ZXAgZiA9XG4gICAgICB7IGYgPSAoZnVuICgpIC0+IHJldHVybiBmKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBlbXB0eSA6ICdtLiAoJ20sICdtKSB0ID1cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIEZuLmlkKVxuICAgICAgOyBmbGFncyA9IChmdW4gKCkgLT4gW10pXG4gICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBjb25zdCB2ID1cbiAgICAgIHsgcGFyYW0gPVxuICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gcmV0dXJuIChmdW4gayAtPiBrIHYpKVxuICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBtYXAgcCB+ZiA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHAucGFyYW0uZiAoKSA+PnwgZnVuIGMgayAtPiBjIChmdW4gdiAtPiBrIChmIHYpKSlcbiAgICAgICAgICA7IGZsYWdzID0gcC5wYXJhbS5mbGFnc1xuICAgICAgICAgIDsgdXNhZ2UgPSBwLnBhcmFtLnVzYWdlXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgd3JhcCBmIHQgPVxuICAgICAgeyBmID0gKGZ1biAoKSAtPiB0LmYgKCkgPj58IGZ1biBydW4gbWFpbiAtPiBmIH5ydW4gfm1haW4pXG4gICAgICA7IGZsYWdzID0gdC5mbGFnc1xuICAgICAgOyB1c2FnZSA9IHQudXNhZ2VcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IG9mX3BhcmFtcyBwYXJhbXMgPVxuICAgICAgbGV0IHQgPSBwYXJhbXMucGFyYW0gaW5cbiAgICAgIHsgZiA9IChmdW4gKCkgLT4gdC5mICgpID4+fCBmdW4gcnVuIG1haW4gLT4gcnVuIEZuLmlkIG1haW4pXG4gICAgICA7IGZsYWdzID0gdC5mbGFnc1xuICAgICAgOyB1c2FnZSA9IHQudXNhZ2VcbiAgICAgIH1cbiAgICA7O1xuXG4gICAgbGV0IHRvX3BhcmFtcyAodCA6ICgnYSwgJ2IpIHQpIDogKCdhIC0+ICdiKSBwYXJhbSA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IHQuZiAoKSA+PnwgZnVuIGYgayAtPiBrIGYpOyBmbGFncyA9IHQuZmxhZ3M7IHVzYWdlID0gdC51c2FnZSB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBvZl9wYXJhbSBwID0gcC5wYXJhbVxuICAgIGxldCB0b19wYXJhbSB0IG1haW4gPSBtYXAgKHRvX3BhcmFtcyB0KSB+ZjooZnVuIGsgLT4gayBtYWluKVxuXG4gICAgbGV0IGxvb2t1cCBrZXkgPVxuICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgeyBmID0gKGZ1biAoKSAtPiBBbm9ucy5QYXJzZXIuZnJvbV9lbnYgKGZ1biBlbnYgbSAtPiBtIChFbnYuZmluZF9leG4gZW52IGtleSkpKVxuICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBwYXRoIDogUGF0aC50IHBhcmFtID0gbG9va3VwIHBhdGhfa2V5XG4gICAgbGV0IGFyZ3MgOiBzdHJpbmcgbGlzdCBwYXJhbSA9IGxvb2t1cCBhcmdzX2tleVxuICAgIGxldCBoZWxwIDogc3RyaW5nIExhenkudCBwYXJhbSA9IGxvb2t1cCBoZWxwX2tleVxuXG4gICAgKCogVGhpcyBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSwgZm9yIHRoZSBoZWxwIGNvbW1hbmQuICopXG4gICAgbGV0IGVudiA9XG4gICAgICB7IHBhcmFtID1cbiAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IEFub25zLlBhcnNlci5mcm9tX2VudiAoZnVuIGVudiBtIC0+IG0gZW52KSlcbiAgICAgICAgICA7IGZsYWdzID0gKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICA7IHVzYWdlID0gKGZ1biAoKSAtPiBBbm9ucy5HcmFtbWFyLnplcm8pXG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIDs7XG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgICAgIGluY2x1ZGUgQXJnX3R5cGUuRXhwb3J0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIHN0cnVjdFxuICAgICAgb3BlbiBBbm9uc1xuXG4gICAgICB0eXBlICdhIGFub25zID0gJ2EgdFxuXG4gICAgICBsZXQgKCAlOiApID0gKCAlOiApXG4gICAgICBsZXQgbWFwX2Fub25zID0gbWFwX2Fub25zXG4gICAgICBsZXQgbWF5YmUgPSBtYXliZVxuICAgICAgbGV0IG1heWJlX3dpdGhfZGVmYXVsdCA9IG1heWJlX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHNlcXVlbmNlID0gc2VxdWVuY2VcbiAgICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyXG4gICAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgICAgbGV0IHQyID0gdDJcbiAgICAgIGxldCB0MyA9IHQzXG4gICAgICBsZXQgdDQgPSB0NFxuXG4gICAgICBsZXQgYW5vbiBzcGVjID1cbiAgICAgICAgQW5vbnMuR3JhbW1hci5pbnZhcmlhbnQgc3BlYy5ncmFtbWFyO1xuICAgICAgICB7IHBhcmFtID1cbiAgICAgICAgICAgIHsgZiA9IChmdW4gKCkgLT4gc3BlYy5wID4+fCBmdW4gdiBrIC0+IGsgdilcbiAgICAgICAgICAgIDsgZmxhZ3MgPSAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgOyB1c2FnZSA9IChmdW4gKCkgLT4gc3BlYy5ncmFtbWFyKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbGV0IGVzY2FwZV9hbm9uIH5maW5hbF9hbm9uID1cbiAgICAgIEFub25zLmVzY2FwZSAodDIgZmluYWxfYW5vbiAoc2VxdWVuY2UgKFwiQVJHXCIgJTogc3RyaW5nKSkpIHw+IGFub25cbiAgICA7O1xuXG4gICAgaW5jbHVkZSBzdHJ1Y3RcbiAgICAgIG9wZW4gRmxhZ1xuXG4gICAgICB0eXBlICdhIGZsYWcgPSAnYSB0XG5cbiAgICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgICBsZXQgbGlzdGVkID0gbGlzdGVkXG4gICAgICBsZXQgb25lX29yX21vcmUgPSBvbmVfb3JfbW9yZVxuICAgICAgbGV0IG9uZV9vcl9tb3JlX2FzX3BhaXIgPSBvbmVfb3JfbW9yZV9hc19wYWlyXG4gICAgICBsZXQgb25lX29yX21vcmVfYXNfbGlzdCA9IG9uZV9vcl9tb3JlX2FzX2xpc3RcbiAgICAgIGxldCBub19hcmcgPSBub19hcmdcbiAgICAgIGxldCBub19hcmdfcmVnaXN0ZXIgPSBub19hcmdfcmVnaXN0ZXJcbiAgICAgIGxldCBub19hcmdfYWJvcnQgPSBub19hcmdfYWJvcnRcbiAgICAgIGxldCBub19hcmdfc29tZSA9IG5vX2FyZ19zb21lXG4gICAgICBsZXQgb3B0aW9uYWwgPSBvcHRpb25hbFxuICAgICAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCA9IG9wdGlvbmFsX3dpdGhfZGVmYXVsdFxuICAgICAgbGV0IHJlcXVpcmVkID0gcmVxdWlyZWRcblxuICAgICAgbGV0IGZsYWdfaW50ZXJuYWxcbiAgICAgICAgICAgID8oYWxpYXNlcyA9IFtdKVxuICAgICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgbW9kZVxuICAgICAgICAgICAgfmRvY1xuICAgICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwXG4gICAgICAgID1cbiAgICAgICAgbGV0IG5vcm1hbGl6ZSBmbGFnID0gbm9ybWFsaXplIEtleV90eXBlLkZsYWcgZmxhZyBpblxuICAgICAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZSBuYW1lIGluXG4gICAgICAgIGxldCBhbGlhc2VzID0gTGlzdC5tYXAgfmY6bm9ybWFsaXplIGFsaWFzZXMgaW5cbiAgICAgICAgbGV0IHsgcmVhZDsgYWN0aW9uOyBudW1fb2NjdXJyZW5jZXM7IGV4dHJhX2RvYyB9ID0gbW9kZSBuYW1lIGluXG4gICAgICAgIGxldCBjaGVja19hdmFpbGFibGUgPVxuICAgICAgICAgIG1hdGNoIG51bV9vY2N1cnJlbmNlcy5hdF9sZWFzdF9vbmNlIHdpdGhcbiAgICAgICAgICB8IGZhbHNlIC0+IChpZ25vcmUgOiBVbml2X21hcC50IC0+IHVuaXQpXG4gICAgICAgICAgfCB0cnVlIC0+IGZ1biBlbnYgLT4gaWdub3JlIChyZWFkIGVudiA6IF8pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBuYW1lX21hdGNoaW5nID1cbiAgICAgICAgICBpZiBPcHRpb24uaXNfc29tZSBmdWxsX2ZsYWdfcmVxdWlyZWQgdGhlbiBgRnVsbF9tYXRjaF9yZXF1aXJlZCBlbHNlIGBQcmVmaXhcbiAgICAgICAgaW5cbiAgICAgICAgeyBwYXJhbSA9XG4gICAgICAgICAgICB7IGYgPSAoZnVuICgpIC0+IEFub25zLlBhcnNlci5mcm9tX2VudiAoZnVuIGVudiBtIC0+IG0gKHJlYWQgZW52KSkpXG4gICAgICAgICAgICA7IGZsYWdzID1cbiAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgWyB7IG5hbWVcbiAgICAgICAgICAgICAgICAgICAgIDsgYWxpYXNlc1xuICAgICAgICAgICAgICAgICAgICAgOyBhbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscFxuICAgICAgICAgICAgICAgICAgICAgOyBkb2MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBmb3JjZSBleHRyYV9kb2Mgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZXh0cmFfZG9jIC0+IFslc3RyaW5nIFwiJXtkb2N9ICV7ZXh0cmFfZG9jfVwiXVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZG9jKVxuICAgICAgICAgICAgICAgICAgICAgOyBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgIDsgbnVtX29jY3VycmVuY2VzXG4gICAgICAgICAgICAgICAgICAgICA7IGNoZWNrX2F2YWlsYWJsZVxuICAgICAgICAgICAgICAgICAgICAgOyBuYW1lX21hdGNoaW5nXG4gICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIDsgdXNhZ2UgPSAoZnVuICgpIC0+IEFub25zLkdyYW1tYXIuemVybylcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgOztcblxuICAgICAgbGV0IGZsYWcgPSBmbGFnX2ludGVybmFsIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbXVxuXG4gICAgICBsZXQgZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG4gICAgICAgICAgICA/YWxpYXNlc1xuICAgICAgICAgICAgP2Z1bGxfZmxhZ19yZXF1aXJlZFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgYXJnX3R5cGVcbiAgICAgICAgICAgIHNleHBfb2ZfZGVmYXVsdFxuICAgICAgICAgICAgfmRlZmF1bHRcbiAgICAgICAgICAgIH5kb2NcbiAgICAgICAgPVxuICAgICAgICBsZXQgZG9jID1cbiAgICAgICAgICBtYXRjaCBzZXhwX29mX2RlZmF1bHQgZGVmYXVsdCB3aXRoXG4gICAgICAgICAgfCBTZXhwLkF0b20gXCJfXCIgLT4gZG9jXG4gICAgICAgICAgfCBkZWZhdWx0X3NleHAgLT4gc3ByaW50ZiAhXCIlcyAoZGVmYXVsdDogJXtTZXhwfSlcIiBkb2MgZGVmYXVsdF9zZXhwXG4gICAgICAgIGluXG4gICAgICAgIGZsYWdcbiAgICAgICAgICA/YWxpYXNlc1xuICAgICAgICAgID9mdWxsX2ZsYWdfcmVxdWlyZWRcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgKG9wdGlvbmFsX3dpdGhfZGVmYXVsdCBkZWZhdWx0IGFyZ190eXBlKVxuICAgICAgICAgIH5kb2NcbiAgICAgIDs7XG5cbiAgICAgIGluY2x1ZGUgQXBwbGljYXRpdmUuTWFrZSAoc3RydWN0XG4gICAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHBhcmFtXG5cbiAgICAgICAgICBsZXQgcmV0dXJuID0gY29uc3RcbiAgICAgICAgICBsZXQgYXBwbHkgPSBhcHBseVxuICAgICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICAgICAgICBlbmQpXG5cbiAgICAgIGxldCBwYWlyID0gYm90aFxuICAgIGVuZFxuXG4gICAgbGV0IGZsYWdzX29mX2FyZ3NfZXhuIGFyZ3MgPVxuICAgICAgTGlzdC5mb2xkIGFyZ3MgfmluaXQ6ZW1wdHkgfmY6KGZ1biBhY2MgKG5hbWUsIHNwZWMsIGRvYykgLT5cbiAgICAgICAgbGV0IGdlbiBmIGZsYWdfdHlwZSA9XG4gICAgICAgICAgc3RlcCAoZnVuIG0geCAtPlxuICAgICAgICAgICAgZiB4O1xuICAgICAgICAgICAgbSlcbiAgICAgICAgICArPiBmbGFnIG5hbWUgZmxhZ190eXBlIH5kb2NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhbGwgZiBhcmdfdHlwZSA9IGdlbiAoZnVuIHggLT4gT3B0aW9uLml0ZXIgeCB+ZikgKG9wdGlvbmFsIGFyZ190eXBlKSBpblxuICAgICAgICBsZXQgc2V0IHIgYXJnX3R5cGUgPSBjYWxsIChmdW4geCAtPiByIDo9IHgpIGFyZ190eXBlIGluXG4gICAgICAgIGxldCBzZXRfYm9vbCByIGIgPSBnZW4gKGZ1biBwYXNzZWQgLT4gaWYgcGFzc2VkIHRoZW4gciA6PSBiKSBub19hcmcgaW5cbiAgICAgICAgYWNjXG4gICAgICAgICsrXG4gICAgICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgICAgICB8IEFyZy5Vbml0IGYgLT4gZ2VuIChmdW4gcGFzc2VkIC0+IGlmIHBhc3NlZCB0aGVuIGYgKCkpIG5vX2FyZ1xuICAgICAgICB8IEFyZy5TZXQgciAtPiBzZXRfYm9vbCByIHRydWVcbiAgICAgICAgfCBBcmcuQ2xlYXIgciAtPiBzZXRfYm9vbCByIGZhbHNlXG4gICAgICAgIHwgQXJnLlN0cmluZyBmIC0+IGNhbGwgZiBzdHJpbmdcbiAgICAgICAgfCBBcmcuU2V0X3N0cmluZyByIC0+IHNldCByIHN0cmluZ1xuICAgICAgICB8IEFyZy5JbnQgZiAtPiBjYWxsIGYgaW50XG4gICAgICAgIHwgQXJnLlNldF9pbnQgciAtPiBzZXQgciBpbnRcbiAgICAgICAgfCBBcmcuRmxvYXQgZiAtPiBjYWxsIGYgZmxvYXRcbiAgICAgICAgfCBBcmcuU2V0X2Zsb2F0IHIgLT4gc2V0IHIgZmxvYXRcbiAgICAgICAgfCBBcmcuQm9vbCBmIC0+IGNhbGwgZiBib29sXG4gICAgICAgIHwgQXJnLlN5bWJvbCAoc3ltcywgZikgLT5cbiAgICAgICAgICBsZXQgYXJnX3R5cGUgPVxuICAgICAgICAgICAgQXJnX3R5cGUub2ZfYWxpc3RfZXhuXG4gICAgICAgICAgICAgIH5saXN0X3ZhbHVlc19pbl9oZWxwOmZhbHNlXG4gICAgICAgICAgICAgIChMaXN0Lm1hcCBzeW1zIH5mOihmdW4gc3ltIC0+IHN5bSwgc3ltKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGNhbGwgZiBhcmdfdHlwZVxuICAgICAgICB8IEFyZy5SZXN0IGYgLT4gZ2VuIChmdW4geCAtPiBPcHRpb24uaXRlciB4IH5mOihMaXN0Lml0ZXIgfmYpKSBlc2NhcGVcbiAgICAgICAgfCBBcmcuVHVwbGUgXyAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlR1cGxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCJcbiAgICAgICAgfCAoKEFyZy5FeHBhbmQgXykgW0BpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAwNSwgMCldKSAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLkV4cGFuZCBpcyBub3Qgc3VwcG9ydGVkIGJ5IENvbW1hbmQuU3BlYy5mbGFnc19vZl9hcmdzX2V4blwiXG4gICAgICAgIHwgKChBcmcuUmVzdF9hbGwgXykgW0BpZiBvY2FtbF92ZXJzaW9uID49ICg0LCAxMiwgMCldKSAtPlxuICAgICAgICAgIGZhaWx3aXRoIFwiQXJnLlJlc3RfYWxsIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQ29tbWFuZC5TcGVjLmZsYWdzX29mX2FyZ3NfZXhuXCIpXG4gICAgOztcblxuICAgIG1vZHVsZSBEZXByZWNhdGVkID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEZsYWcuRGVwcmVjYXRlZFxuICAgICAgaW5jbHVkZSBBbm9ucy5EZXByZWNhdGVkXG4gICAgZW5kXG5cbiAgICBsZXQgYXJnX25hbWVzIHBhcmFtID1cbiAgICAgIGxldCB0ID0gcGFyYW0ucGFyYW0gaW5cbiAgICAgIGxldCBmbGFnX25hbWVzID0gTWFwLmtleXMgKEZsYWcuSW50ZXJuYWwuY3JlYXRlICh0LmZsYWdzICgpKSkgaW5cbiAgICAgIGxldCBhbm9uX25hbWVzID0gQW5vbnMuR3JhbW1hci5uYW1lcyAodC51c2FnZSAoKSkgaW5cbiAgICAgIExpc3QuY29uY2F0IFsgZmxhZ19uYW1lczsgYW5vbl9uYW1lcyBdXG4gICAgOztcblxuICAgIG1vZHVsZSBDaG9vc2Vfb25lID0gc3RydWN0XG4gICAgICBtb2R1bGUgQ2hvaWNlX25hbWUgOiBzaWdcbiAgICAgICAgdHlwZSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgICAgaW5jbHVkZSBDb21wYXJhdG9yLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICAgIHZhbCB0b19zdHJpbmcgOiB0IC0+IHN0cmluZ1xuICAgICAgICB2YWwgbGlzdF90b19zdHJpbmcgOiB0IGxpc3QgLT4gc3RyaW5nXG4gICAgICAgIHZhbCBjcmVhdGVfZXhuIDogJ2EgcGFyYW0gLT4gdFxuICAgICAgZW5kID0gc3RydWN0XG4gICAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cbiAgICAgICAgZW5kXG5cbiAgICAgICAgaW5jbHVkZSBUXG4gICAgICAgIGluY2x1ZGUgQ29tcGFyYXRvci5NYWtlIChUKVxuXG4gICAgICAgIGxldCBjcmVhdGVfZXhuIHBhcmFtID1cbiAgICAgICAgICBsZXQgbmFtZXMgPSBhcmdfbmFtZXMgcGFyYW0gaW5cbiAgICAgICAgICBsZXQgbmFtZXNfd2l0aF9jb21tYXMgPSBMaXN0LmZpbHRlciBuYW1lcyB+ZjooZnVuIHMgLT4gU3RyaW5nLmNvbnRhaW5zIHMgJywnKSBpblxuICAgICAgICAgIGlmIG5vdCAoTGlzdC5pc19lbXB0eSBuYW1lc193aXRoX2NvbW1hcylcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIkZvciBzaW1wbGljaXR5LCBbQ29tbWFuZC5TcGVjLmNob29zZV9vbmVdIGRvZXMgbm90IHN1cHBvcnQgbmFtZXMgd2l0aCBcXFxuICAgICAgICAgICAgICAgY29tbWFzLlwiXG4gICAgICAgICAgICAgIG5hbWVzX3dpdGhfY29tbWFzXG4gICAgICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nIGxpc3RdO1xuICAgICAgICAgIG1hdGNoIG5hbWVzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICAgIFslbWVzc2FnZSBcIltjaG9vc2Vfb25lXSBleHBlY3RzIGNob2ljZXMgdG8gcmVhZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlwiXVxuICAgICAgICAgIHwgXyA6OiBfIC0+IG5hbWVzXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHRvX3N0cmluZyA9IFN0cmluZy5jb25jYXQgfnNlcDpcIixcIlxuICAgICAgICBsZXQgbGlzdF90b19zdHJpbmcgdHMgPSBMaXN0Lm1hcCB0cyB+Zjp0b19zdHJpbmcgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuICBcIlxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IHN0cnVjdFxuICAgICAgICB0eXBlIChfLCBfKSB0ID1cbiAgICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgICAgfCBSYWlzZSA6ICgnYSwgJ2EpIHRcbiAgICAgICAgICB8IFJldHVybl9ub25lIDogKCdhLCAnYSBvcHRpb24pIHRcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgY2hvb3NlX29uZVxuICAgICAgICAgICAgKHR5cGUgYSBiKVxuICAgICAgICAgICAgKHRzIDogYSBvcHRpb24gcGFyYW0gbGlzdClcbiAgICAgICAgICAgIH4oaWZfbm90aGluZ19jaG9zZW4gOiAoYSwgYikgSWZfbm90aGluZ19jaG9zZW4udClcbiAgICAgICAgPVxuICAgICAgICBtYXRjaFxuICAgICAgICAgIExpc3QubWFwIHRzIH5mOihmdW4gdCAtPiBDaG9pY2VfbmFtZS5jcmVhdGVfZXhuIHQsIHQpXG4gICAgICAgICAgfD4gTWFwLm9mX2FsaXN0IChtb2R1bGUgQ2hvaWNlX25hbWUpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBgRHVwbGljYXRlX2tleSBuYW1lIC0+XG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcIltDb21tYW5kLlNwZWMuY2hvb3NlX29uZV0gY2FsbGVkIHdpdGggZHVwbGljYXRlIG5hbWVcIlxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgWyVzZXhwX29mOiBDaG9pY2VfbmFtZS50XVxuICAgICAgICB8IGBPayB0cyAtPlxuICAgICAgICAgIE1hcC5mb2xkIHRzIH5pbml0OihyZXR1cm4gW10pIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOnQgaW5pdCAtPlxuICAgICAgICAgICAgbWFwMiBpbml0IHQgfmY6KGZ1biBpbml0IHZhbHVlIC0+XG4gICAgICAgICAgICAgIE9wdGlvbi5mb2xkIHZhbHVlIH5pbml0IH5mOihmdW4gaW5pdCB2YWx1ZSAtPiAobmFtZSwgdmFsdWUpIDo6IGluaXQpKSlcbiAgICAgICAgICB8PiBtYXAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IF8gOjogXyA6OiBfIGFzIHBhc3NlZCAtPlxuICAgICAgICAgICAgICBkaWVcbiAgICAgICAgICAgICAgICAhXCJDYW5ub3QgcGFzcyBtb3JlIHRoYW4gb25lIG9mIHRoZXNlOiBcXG5cXFxuICAgICAgICAgICAgICAgICBcXCAgJXtDaG9pY2VfbmFtZS5saXN0X3RvX3N0cmluZ31cIlxuICAgICAgICAgICAgICAgIChMaXN0Lm1hcCBwYXNzZWQgfmY6ZnN0KVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICB8IFsgKF8sIHZhbHVlKSBdIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBpZl9ub3RoaW5nX2Nob3NlbiB3aXRoXG4gICAgICAgICAgICAgICB8IERlZmF1bHRfdG8gKF8gOiBhKSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgfCBSYWlzZSAtPiAodmFsdWUgOiBiKVxuICAgICAgICAgICAgICAgfCBSZXR1cm5fbm9uZSAtPiAoU29tZSB2YWx1ZSA6IGIpKVxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAobWF0Y2ggaWZfbm90aGluZ19jaG9zZW4gd2l0aFxuICAgICAgICAgICAgICAgfCBEZWZhdWx0X3RvIHZhbHVlIC0+IHZhbHVlXG4gICAgICAgICAgICAgICB8IFJldHVybl9ub25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgIHwgUmFpc2UgLT5cbiAgICAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgICAgIVwiTXVzdCBwYXNzIG9uZSBvZiB0aGVzZTpcXG4gICV7Q2hvaWNlX25hbWUubGlzdF90b19zdHJpbmd9XCJcbiAgICAgICAgICAgICAgICAgICAoTWFwLmtleXMgdHMpXG4gICAgICAgICAgICAgICAgICAgKCkpKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBJZl9ub3RoaW5nX2Nob3NlbiA9IENob29zZV9vbmUuSWZfbm90aGluZ19jaG9zZW5cblxuICAgIGxldCBjaG9vc2Vfb25lID0gQ2hvb3NlX29uZS5jaG9vc2Vfb25lXG4gICAgbGV0IGFuZF9hcmdfbmFtZXMgdCA9IG1hcCB0IH5mOihmdW4gdmFsdWUgLT4gdmFsdWUsIGFyZ19uYW1lcyB0KVxuXG4gICAgbGV0IGFuZF9hcmdfbmFtZSB0ID1cbiAgICAgIG1hdGNoIGFyZ19uYW1lcyB0IHdpdGhcbiAgICAgIHwgWyBuYW1lIF0gLT4gbWFwIHQgfmY6KGZ1biB2YWx1ZSAtPiB2YWx1ZSwgbmFtZSlcbiAgICAgIHwgbmFtZXMgLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbYW5kX2FyZ19uYW1lXSBleHBlY3RzIGV4YWN0bHkgb25lIG5hbWUsIGdvdFwiIH5fOihuYW1lcyA6IHN0cmluZyBsaXN0KV1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgR3JvdXAgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN1bW1hcnkgOiBzdHJpbmdcbiAgICA7IHJlYWRtZSA6ICh1bml0IC0+IHN0cmluZykgb3B0aW9uXG4gICAgOyBzdWJjb21tYW5kcyA6IChzdHJpbmcgKiAnYSkgbGlzdCBMYXp5LnRcbiAgICA7IGJvZHkgOiAocGF0aDpzdHJpbmcgbGlzdCAtPiB1bml0KSBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlIHQgOiBfIFNoYXBlLkdyb3VwX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHN1YmNvbW1hbmRzID0gTGF6eS5tYXAgdC5zdWJjb21tYW5kcyB+ZjooTGlzdC5Bc3NvYy5tYXAgfmY6c3ViY29tbWFuZF90b19zaGFwZSlcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGFic19wYXRoID0gU2hhcGUuUHJpdmF0ZS5hYnNfcGF0aFxubGV0IGNvbXBfY3dvcmQgPSBDb21tYW5kX2Vudl92YXIuQ09NUF9DV09SRFxuXG5tb2R1bGUgRXhlYyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgc3VtbWFyeSA6IHN0cmluZ1xuICAgIDsgcmVhZG1lIDogKHVuaXQgLT4gc3RyaW5nKSBvcHRpb25cbiAgICA7ICgqIElmIFtwYXRoX3RvX2V4ZV0gaXMgcmVsYXRpdmUsIGludGVycHJldCB3LnIudC4gW3dvcmtpbmdfZGlyXSAqKVxuICAgICAgd29ya2luZ19kaXIgOiBzdHJpbmdcbiAgICA7IHBhdGhfdG9fZXhlIDogc3RyaW5nXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGVudiA6IGVudiBvcHRpb25cbiAgICB9XG5cbiAgbGV0IHNoYXBlIHQgOiBTaGFwZS5FeGVjX2luZm8udCA9XG4gICAgeyBzdW1tYXJ5ID0gdC5zdW1tYXJ5XG4gICAgOyByZWFkbWUgPSBPcHRpb24ubWFwIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgdC5yZWFkbWVcbiAgICA7IHdvcmtpbmdfZGlyID0gdC53b3JraW5nX2RpclxuICAgIDsgcGF0aF90b19leGUgPSB0LnBhdGhfdG9fZXhlXG4gICAgOyBjaGlsZF9zdWJjb21tYW5kID0gdC5jaGlsZF9zdWJjb21tYW5kXG4gICAgfVxuICA7O1xuZW5kXG5cbigqIEEgcHJveHkgY29tbWFuZCBpcyB0aGUgc3RydWN0dXJlIG9mIGFuIEV4ZWMgY29tbWFuZCBvYnRhaW5lZCBieSBydW5uaW5nIGl0IGluIGFcbiAgIHNwZWNpYWwgd2F5ICopXG5tb2R1bGUgUHJveHkgPSBzdHJ1Y3RcbiAgbW9kdWxlIEtpbmQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBCYXNlIG9mIFNoYXBlLkJhc2VfaW5mby50XG4gICAgICB8IEdyb3VwIG9mICdhIFNoYXBlLkdyb3VwX2luZm8udFxuICAgICAgfCBFeGVjIG9mIFNoYXBlLkV4ZWNfaW5mby50XG4gICAgICB8IExhenkgb2YgJ2EgdCBMYXp5LnRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IHdvcmtpbmdfZGlyIDogc3RyaW5nXG4gICAgOyBwYXRoX3RvX2V4ZSA6IHN0cmluZ1xuICAgIDsgcGF0aF90b19zdWJjb21tYW5kIDogc3RyaW5nIGxpc3RcbiAgICA7IGNoaWxkX3N1YmNvbW1hbmQgOiBzdHJpbmcgbGlzdFxuICAgIDsga2luZCA6IHQgS2luZC50XG4gICAgfVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgQmFzZSBvZiBCYXNlLnRcbiAgfCBHcm91cCBvZiB0IEdyb3VwLnRcbiAgfCBFeGVjIG9mIEV4ZWMudFxuICB8IExhenkgb2YgdCBMYXp5LnRcblxubGV0IHJlYyBzZXhwYWJsZV9zaGFwZSA6IHQgLT4gU2hhcGUuU2V4cGFibGUudCA9IGZ1bmN0aW9uXG4gIHwgQmFzZSBiYXNlIC0+IEJhc2UgKEJhc2Uuc2hhcGUgYmFzZSlcbiAgfCBFeGVjIGV4ZWMgLT4gRXhlYyAoRXhlYy5zaGFwZSBleGVjKVxuICB8IEdyb3VwIGdyb3VwIC0+IEdyb3VwIChHcm91cC5zaGFwZSB+c3ViY29tbWFuZF90b19zaGFwZTpzZXhwYWJsZV9zaGFwZSBncm91cClcbiAgfCBMYXp5IHRodW5rIC0+IExhenkgKExhenkubWFwIH5mOnNleHBhYmxlX3NoYXBlIHRodW5rKVxuOztcblxudHlwZSAoJ21haW4sICdyZXN1bHQpIGJhc2ljX3NwZWNfY29tbWFuZCA9XG4gIHN1bW1hcnk6c3RyaW5nXG4gIC0+ID9yZWFkbWU6KHVuaXQgLT4gc3RyaW5nKVxuICAtPiAoJ21haW4sIHVuaXQgLT4gJ3Jlc3VsdCkgQmFzZS5TcGVjLnRcbiAgLT4gJ21haW5cbiAgLT4gdFxuXG5sZXQgZXh0ZW5kX2V4biB+bWVtIH5hZGQgbWFwIGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGlmIG1lbSBtYXAga2V5XG4gIHRoZW4gZmFpbHdpdGhmIFwidGhlcmUgaXMgYWxyZWFkeSBhICVzIG5hbWVkICVzXCIgKEtleV90eXBlLnRvX3N0cmluZyBrZXlfdHlwZSkga2V5ICgpO1xuICBhZGQgbWFwIH5rZXkgfmRhdGFcbjs7XG5cbmxldCBleHRlbmRfbWFwX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhID1cbiAgZXh0ZW5kX2V4biBtYXAga2V5X3R5cGUgfmtleSBkYXRhIH5tZW06TWFwLm1lbSB+YWRkOk1hcC5zZXRcbjs7XG5cbmxldCBleHRlbmRfYWxpc3RfZXhuIGFsaXN0IGtleV90eXBlIH5rZXkgZGF0YSA9XG4gIGV4dGVuZF9leG5cbiAgICBhbGlzdFxuICAgIGtleV90eXBlXG4gICAgfmtleVxuICAgIGRhdGFcbiAgICB+bWVtOihmdW4gYWxpc3Qga2V5IC0+IExpc3QuQXNzb2MubWVtIGFsaXN0IGtleSB+ZXF1YWw6U3RyaW5nLmVxdWFsKVxuICAgIH5hZGQ6KGZ1biBhbGlzdCB+a2V5IH5kYXRhIC0+IExpc3QuQXNzb2MuYWRkIGFsaXN0IGtleSBkYXRhIH5lcXVhbDpTdHJpbmcuZXF1YWwpXG47O1xuXG5tb2R1bGUgQmFpbG91dF9kdW1wX2ZsYWcgPSBzdHJ1Y3RcbiAgbGV0IGFkZCBiYXNlIH5uYW1lIH5hbGlhc2VzIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscCB+dGV4dCB+dGV4dF9zdW1tYXJ5ID1cbiAgICBsZXQgZmxhZ3MgPSBiYXNlLkJhc2UuZmxhZ3MgaW5cbiAgICBsZXQgZmxhZ3MgPVxuICAgICAgZXh0ZW5kX21hcF9leG5cbiAgICAgICAgZmxhZ3NcbiAgICAgICAgS2V5X3R5cGUuRmxhZ1xuICAgICAgICB+a2V5Om5hbWVcbiAgICAgICAgeyBuYW1lXG4gICAgICAgIDsgYWxpYXNlc19leGNsdWRlZF9mcm9tX2hlbHBcbiAgICAgICAgOyBhbGlhc2VzXG4gICAgICAgIDsgbnVtX29jY3VycmVuY2VzID0gRmxhZy5OdW1fb2NjdXJyZW5jZXMuYXRfbW9zdF9vbmNlXG4gICAgICAgIDsgY2hlY2tfYXZhaWxhYmxlID0gaWdub3JlXG4gICAgICAgIDsgYWN0aW9uID0gUHJpbnRfaW5mb19hbmRfcXVpdCAoZnVuIGVudiAtPiB0ZXh0IGVudilcbiAgICAgICAgOyBkb2MgPSBzcHJpbnRmIFwiIHByaW50ICVzIGFuZCBleGl0XCIgdGV4dF9zdW1tYXJ5XG4gICAgICAgIDsgbmFtZV9tYXRjaGluZyA9IGBQcmVmaXhcbiAgICAgICAgfVxuICAgIGluXG4gICAgeyBiYXNlIHdpdGggQmFzZS5mbGFncyB9XG4gIDs7XG5lbmRcblxubGV0IGJhc2ljX3NwZWMgfnN1bW1hcnkgP3JlYWRtZSB7IEJhc2UuU3BlYy51c2FnZTsgZmxhZ3M7IGYgfSBtYWluID1cbiAgbGV0IGZsYWdzID0gZmxhZ3MgKCkgaW5cbiAgbGV0IHVzYWdlID0gdXNhZ2UgKCkgaW5cbiAgbGV0IGFub25zICgpID1cbiAgICBsZXQgb3BlbiBBbm9ucy5QYXJzZXIuRm9yX29wZW5pbmcgaW5cbiAgICBmICgpXG4gICAgPj58IGZ1biBrIGBQYXJzZV9hcmdzIC0+XG4gICAgbGV0IHRodW5rID0gayBtYWluIGluXG4gICAgZnVuIGBSdW5fbWFpbiAtPiB0aHVuayAoKVxuICBpblxuICBsZXQgZmxhZ3MgPSBGbGFnLkludGVybmFsLmNyZWF0ZSBmbGFncyBpblxuICBsZXQgYmFzZSA9IHsgQmFzZS5zdW1tYXJ5OyByZWFkbWU7IHVzYWdlOyBmbGFnczsgYW5vbnMgfSBpblxuICBsZXQgYmFzZSA9XG4gICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICBiYXNlXG4gICAgICB+bmFtZTpcIi1oZWxwXCJcbiAgICAgIH5hbGlhc2VzOlsgXCItP1wiIF1cbiAgICAgIH5hbGlhc2VzX2V4Y2x1ZGVkX2Zyb21faGVscDpbIFwiLS1oZWxwXCIgXVxuICAgICAgfnRleHRfc3VtbWFyeTpcInRoaXMgaGVscCB0ZXh0XCJcbiAgICAgIH50ZXh0OihmdW4gZW52IC0+IExhenkuZm9yY2UgKEVudi5maW5kX2V4biBlbnYgQmFzZS5oZWxwX2tleSkpXG4gIGluXG4gIEJhc2UgYmFzZVxuOztcblxubGV0IGJhc2ljID0gYmFzaWNfc3BlY1xubGV0IHN1YnNfa2V5IDogKHN0cmluZyAqIHQpIGxpc3QgRW52LktleS50ID0gRW52LmtleV9jcmVhdGUgXCJzdWJjb21tYW5kc1wiXG5cbmxldCBsYXp5X2dyb3VwIH5zdW1tYXJ5ID9yZWFkbWUgP3ByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgP2JvZHkgYWxpc3QgPVxuICBsZXQgc3ViY29tbWFuZHMgPVxuICAgIExhenkubWFwIGFsaXN0IH5mOihmdW4gYWxpc3QgLT5cbiAgICAgIGxldCBhbGlzdCA9XG4gICAgICAgIExpc3QubWFwIGFsaXN0IH5mOihmdW4gKG5hbWUsIHQpIC0+IG5vcm1hbGl6ZSBLZXlfdHlwZS5TdWJjb21tYW5kIG5hbWUsIHQpXG4gICAgICBpblxuICAgICAgbWF0Y2ggU3RyaW5nLk1hcC5vZl9hbGlzdCBhbGlzdCB3aXRoXG4gICAgICB8IGBEdXBsaWNhdGVfa2V5IG5hbWUgLT4gZmFpbHdpdGhmIFwibXVsdGlwbGUgc3ViY29tbWFuZHMgbmFtZWQgJXNcIiBuYW1lICgpXG4gICAgICB8IGBPayBtYXAgLT5cbiAgICAgICAgKG1hdGNoIHByZXNlcnZlX3N1YmNvbW1hbmRfb3JkZXIgd2l0aFxuICAgICAgICAgfCBTb21lICgpIC0+IGFsaXN0XG4gICAgICAgICB8IE5vbmUgLT4gTWFwLnRvX2FsaXN0IG1hcCkpXG4gIGluXG4gIEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9XG47O1xuXG5sZXQgZ3JvdXAgfnN1bW1hcnkgP3JlYWRtZSA/cHJlc2VydmVfc3ViY29tbWFuZF9vcmRlciA/Ym9keSBhbGlzdCA9XG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgbGF6eV9ncm91cCB+c3VtbWFyeSA/cmVhZG1lID9wcmVzZXJ2ZV9zdWJjb21tYW5kX29yZGVyID9ib2R5IChMYXp5LmZyb21fdmFsIGFsaXN0KVxuOztcblxubGV0IGV4ZWMgfnN1bW1hcnkgP3JlYWRtZSA/KGNoaWxkX3N1YmNvbW1hbmQgPSBbXSkgP2VudiB+cGF0aF90b19leGUgKCkgPVxuICBsZXQgd29ya2luZ19kaXIgPVxuICAgIEZpbGVuYW1lLmRpcm5hbWVcbiAgICBAQFxuICAgIG1hdGNoIHBhdGhfdG9fZXhlIHdpdGhcbiAgICB8IGBBYnNvbHV0ZSBfIHwgYFJlbGF0aXZlX3RvX21lIF8gLT4gQ2FtbC5TeXMuZXhlY3V0YWJsZV9uYW1lXG4gICAgfCBgUmVsYXRpdmVfdG9fYXJndjAgXyAtPiBDYW1sLlN5cy5hcmd2LigwKVxuICBpblxuICBsZXQgcGF0aF90b19leGUgPVxuICAgIG1hdGNoIHBhdGhfdG9fZXhlIHdpdGhcbiAgICB8IGBBYnNvbHV0ZSBwIC0+XG4gICAgICBpZiBub3QgKEZpbGVuYW1lLmlzX2Fic29sdXRlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYEFic29sdXRlIG11c3QgYmUgYWJzb2x1dGVcIlxuICAgICAgZWxzZSBwXG4gICAgfCBgUmVsYXRpdmVfdG9fbWUgcCB8IGBSZWxhdGl2ZV90b19hcmd2MCBwIC0+XG4gICAgICBpZiBub3QgKEZpbGVuYW1lLmlzX3JlbGF0aXZlIHApXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiUGF0aCBwYXNzZWQgdG8gYFJlbGF0aXZlX3RvX21lIG11c3QgYmUgcmVsYXRpdmVcIlxuICAgICAgZWxzZSBwXG4gIGluXG4gIEV4ZWMgeyBzdW1tYXJ5OyByZWFkbWU7IHdvcmtpbmdfZGlyOyBwYXRoX3RvX2V4ZTsgY2hpbGRfc3ViY29tbWFuZDsgZW52IH1cbjs7XG5cbmxldCBvZl9sYXp5IHRodW5rID0gTGF6eSB0aHVua1xuXG5sZXQgcmVjIHByb3h5X29mX3NleHBhYmxlXG4gICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgOiBQcm94eS50XG4gID1cbiAgbGV0IGtpbmQgPVxuICAgIGtpbmRfb2Zfc2V4cGFibGVcbiAgICAgIHNleHBhYmxlXG4gICAgICB+d29ya2luZ19kaXJcbiAgICAgIH5wYXRoX3RvX2V4ZVxuICAgICAgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgaW5cbiAgeyB3b3JraW5nX2RpcjsgcGF0aF90b19leGU7IHBhdGhfdG9fc3ViY29tbWFuZDsgY2hpbGRfc3ViY29tbWFuZDsga2luZCB9XG5cbmFuZCBraW5kX29mX3NleHBhYmxlXG4gICAgICBzZXhwYWJsZVxuICAgICAgfndvcmtpbmdfZGlyXG4gICAgICB+cGF0aF90b19leGVcbiAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICB+cGF0aF90b19zdWJjb21tYW5kXG4gID1cbiAgbWF0Y2ggKHNleHBhYmxlIDogU2hhcGUuU2V4cGFibGUudCkgd2l0aFxuICB8IEJhc2UgYiAtPiBQcm94eS5LaW5kLkJhc2UgYlxuICB8IEV4ZWMgZSAtPiBQcm94eS5LaW5kLkV4ZWMgZVxuICB8IExhenkgbCAtPlxuICAgIFByb3h5LktpbmQuTGF6eVxuICAgICAgKExhenkubWFwIGwgfmY6KGZ1biBzZXhwYWJsZSAtPlxuICAgICAgICAga2luZF9vZl9zZXhwYWJsZVxuICAgICAgICAgICBzZXhwYWJsZVxuICAgICAgICAgICB+d29ya2luZ19kaXJcbiAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICAgIH5wYXRoX3RvX3N1YmNvbW1hbmQpKVxuICB8IEdyb3VwIGcgLT5cbiAgICBQcm94eS5LaW5kLkdyb3VwXG4gICAgICB7IGcgd2l0aFxuICAgICAgICBzdWJjb21tYW5kcyA9XG4gICAgICAgICAgTGF6eS5tYXBcbiAgICAgICAgICAgIGcuc3ViY29tbWFuZHNcbiAgICAgICAgICAgIH5mOlxuICAgICAgICAgICAgICAoTGlzdC5tYXAgfmY6KGZ1biAoc3RyLCBzZXhwYWJsZSkgLT5cbiAgICAgICAgICAgICAgICAgbGV0IHBhdGhfdG9fc3ViY29tbWFuZCA9IHBhdGhfdG9fc3ViY29tbWFuZCBAIFsgc3RyIF0gaW5cbiAgICAgICAgICAgICAgICAgbGV0IHByb3h5ID1cbiAgICAgICAgICAgICAgICAgICBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgICAgICAgICAgICAgc2V4cGFibGVcbiAgICAgICAgICAgICAgICAgICAgIH53b3JraW5nX2RpclxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fZXhlXG4gICAgICAgICAgICAgICAgICAgICB+Y2hpbGRfc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICAgICAgfnBhdGhfdG9fc3ViY29tbWFuZFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICBzdHIsIHByb3h5KSlcbiAgICAgIH1cbjs7XG5cbm1vZHVsZSB0eXBlIEZvcl92ZXJzaW9uX2luZm8gPSBzaWdcbiAgbW9kdWxlIFZlcnNpb25fdXRpbCA6IFZlcnNpb25fdXRpbFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgdHlwZSB0ID0gVGltZV9mbG9hdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBWZXJzaW9uX2luZm8gKE0gOiBGb3JfdmVyc2lvbl9pbmZvKSA9IHN0cnVjdFxuICBvcGVuIE1cblxuICBsZXQgcHJpbnRfdmVyc2lvbiB+dmVyc2lvbiA9IHByaW50X2VuZGxpbmUgKGZvcmNlIHZlcnNpb24pXG4gIGxldCBwcmludF9idWlsZF9pbmZvIH5idWlsZF9pbmZvID0gcHJpbnRfZW5kbGluZSAoZm9yY2UgYnVpbGRfaW5mbylcblxuICBsZXQgY29tbWFuZCB+dmVyc2lvbiB+YnVpbGRfaW5mbyA9XG4gICAgYmFzaWNcbiAgICAgIH5zdW1tYXJ5OlwicHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvblwiXG4gICAgICBCYXNlLlNwZWMuKFxuICAgICAgICBlbXB0eVxuICAgICAgICArPiBmbGFnIFwiLXZlcnNpb25cIiBub19hcmcgfmRvYzpcIiBwcmludCB0aGUgdmVyc2lvbiBvZiB0aGlzIGJ1aWxkXCJcbiAgICAgICAgKz4gZmxhZyBcIi1idWlsZC1pbmZvXCIgbm9fYXJnIH5kb2M6XCIgcHJpbnQgYnVpbGQgaW5mbyBmb3IgdGhpcyBidWlsZFwiKVxuICAgICAgKGZ1biB2ZXJzaW9uX2ZsYWcgYnVpbGRfaW5mb19mbGFnIC0+XG4gICAgICAgICBpZiBidWlsZF9pbmZvX2ZsYWdcbiAgICAgICAgIHRoZW4gcHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mb1xuICAgICAgICAgZWxzZSBpZiB2ZXJzaW9uX2ZsYWdcbiAgICAgICAgIHRoZW4gcHJpbnRfdmVyc2lvbiB+dmVyc2lvblxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIHByaW50X2J1aWxkX2luZm8gfmJ1aWxkX2luZm87XG4gICAgICAgICAgIHByaW50X3ZlcnNpb24gfnZlcnNpb24pO1xuICAgICAgICAgZXhpdCAwKVxuICA7O1xuXG4gIGxldCByZWMgYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIHVudmVyc2lvbmVkID1cbiAgICBtYXRjaCB1bnZlcnNpb25lZCB3aXRoXG4gICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLXZlcnNpb25cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLXZlcnNpb25cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcInRoZSB2ZXJzaW9uIG9mIHRoaXMgYnVpbGRcIlxuICAgICAgICAgIH50ZXh0OihmdW4gXyAtPiBmb3JjZSB2ZXJzaW9uKVxuICAgICAgaW5cbiAgICAgIGxldCBiYXNlID1cbiAgICAgICAgQmFpbG91dF9kdW1wX2ZsYWcuYWRkXG4gICAgICAgICAgYmFzZVxuICAgICAgICAgIH5uYW1lOlwiLWJ1aWxkLWluZm9cIlxuICAgICAgICAgIH5hbGlhc2VzOltdXG4gICAgICAgICAgfmFsaWFzZXNfZXhjbHVkZWRfZnJvbV9oZWxwOlsgXCItLWJ1aWxkLWluZm9cIiBdXG4gICAgICAgICAgfnRleHRfc3VtbWFyeTpcImluZm8gYWJvdXQgdGhpcyBidWlsZFwiXG4gICAgICAgICAgfnRleHQ6KGZ1biBfIC0+IGZvcmNlIGJ1aWxkX2luZm8pXG4gICAgICBpblxuICAgICAgQmFzZSBiYXNlXG4gICAgfCBHcm91cCBncm91cCAtPlxuICAgICAgbGV0IHN1YmNvbW1hbmRzID1cbiAgICAgICAgTGF6eS5tYXAgZ3JvdXAuR3JvdXAuc3ViY29tbWFuZHMgfmY6KGZ1biBzdWJjb21tYW5kcyAtPlxuICAgICAgICAgIGV4dGVuZF9hbGlzdF9leG5cbiAgICAgICAgICAgIHN1YmNvbW1hbmRzXG4gICAgICAgICAgICBLZXlfdHlwZS5TdWJjb21tYW5kXG4gICAgICAgICAgICB+a2V5OlwidmVyc2lvblwiXG4gICAgICAgICAgICAoY29tbWFuZCB+dmVyc2lvbiB+YnVpbGRfaW5mbykpXG4gICAgICBpblxuICAgICAgR3JvdXAgeyBncm91cCB3aXRoIEdyb3VwLnN1YmNvbW1hbmRzIH1cbiAgICB8IEV4ZWMgZXhlYyAtPiBFeGVjIGV4ZWNcbiAgICB8IExhenkgdGh1bmsgLT4gTGF6eSAobGF6eSAoYWRkIH52ZXJzaW9uIH5idWlsZF9pbmZvIChMYXp5LmZvcmNlIHRodW5rKSkpXG4gIDs7XG5cbiAgbGV0IG5vcm1hbGl6ZV92ZXJzaW9uX2xpbmVzIGxpbmVzID1cbiAgICBTdHJpbmcuY29uY2F0IH5zZXA6XCJcXG5cIiAoTGlzdC5zb3J0IGxpbmVzIH5jb21wYXJlOlN0cmluZy5jb21wYXJlKVxuICA7O1xuXG4gIGxldCBkZWZhdWx0X3ZlcnNpb24gPSBsYXp5IChub3JtYWxpemVfdmVyc2lvbl9saW5lcyBWZXJzaW9uX3V0aWwudmVyc2lvbl9saXN0KVxuXG4gIGxldCBkZWZhdWx0X2J1aWxkX2luZm8gPVxuICAgIGxhenlcbiAgICAgICgqIGxhenkgdG8gYXZvaWQgbG9hZGluZyBhbGwgdGhlIHRpbWUgem9uZSBzdHVmZiBhdCB0b3BsZXZlbCAqKVxuICAgICAgKFZlcnNpb25fdXRpbC5yZXByaW50X2J1aWxkX2luZm8gVGltZS5zZXhwX29mX3QpXG4gIDs7XG5lbmRcblxubGV0JXRlc3RfbW9kdWxlIFwiVmVyc2lvbl9pbmZvXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKHN0cnVjdFxuICAgICAgICBtb2R1bGUgVmVyc2lvbl91dGlsID0gc3RydWN0XG4gICAgICAgICAgbGV0IHZlcnNpb25fbGlzdCA9IFsgXCJoZzovL3NvbWUvcGF0aF8weGRlYWRiZWVmXCI7IFwic3NoOi8vYS9wYXRoXzhiYWRmMDBkXCIgXVxuICAgICAgICAgIGxldCByZXByaW50X2J1aWxkX2luZm8gdG9fc2V4cCA9IFNleHAudG9fc3RyaW5nICh0b19zZXhwIFRpbWVfZmxvYXQuZXBvY2gpXG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBUaW1lID0gc3RydWN0XG4gICAgICAgICAgdHlwZSB0ID0gVGltZV9mbG9hdC50XG5cbiAgICAgICAgICBsZXQgc2V4cF9vZl90IHQgPSBUaW1lX2Zsb2F0LnRvX3N0cmluZ191dGMgdCB8PiBTZXhwLm9mX3N0cmluZ1xuICAgICAgICBlbmRcbiAgICAgIGVuZClcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IHZlcnNpb24gd2hlcmUgbXVsdGlwbGUgcmVwb3MgYXJlIHVzZWRcIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfdmVyc2lvbiB+dmVyc2lvbjpWZXJzaW9uX2luZm8uZGVmYXVsdF92ZXJzaW9uO1xuICAgICAgWyVleHBlY3Qge3xcbiAgICAgICAgaGc6Ly9zb21lL3BhdGhfMHhkZWFkYmVlZlxuICAgICAgICBzc2g6Ly9hL3BhdGhfOGJhZGYwMGQgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInByaW50IGJ1aWxkIGluZm9cIiA9XG4gICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbzoobGF6eSBcInNvbWUgYnVpbGQgaW5mb1wiKTtcbiAgICAgIFslZXhwZWN0IHt8IHNvbWUgYnVpbGQgaW5mbyB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5sZXQgcmVjIHN1bW1hcnkgPSBmdW5jdGlvblxuICB8IEJhc2UgeCAtPiB4LnN1bW1hcnlcbiAgfCBHcm91cCB4IC0+IHguc3VtbWFyeVxuICB8IEV4ZWMgeCAtPiB4LnN1bW1hcnlcbiAgfCBMYXp5IHRodW5rIC0+IHN1bW1hcnkgKExhenkuZm9yY2UgdGh1bmspXG47O1xuXG5tb2R1bGUgU3BlYyA9IHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuU3BlY1xuXG4gIGxldCBwYXRoID0gbWFwIH5mOlBhdGgucGFydHNfZXhlX2Jhc2VuYW1lIHBhdGhcbmVuZFxuXG5tb2R1bGUgRGVwcmVjYXRlZCA9IHN0cnVjdFxuICBtb2R1bGUgU3BlYyA9IFNwZWMuRGVwcmVjYXRlZFxuXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyeVxuXG4gIGxldCByZWMgZ2V0X2ZsYWdfbmFtZXMgPSBmdW5jdGlvblxuICAgIHwgQmFzZSBiYXNlIC0+IGJhc2UuQmFzZS5mbGFncyB8PiBTdHJpbmcuTWFwLmtleXNcbiAgICB8IExhenkgdGh1bmsgLT4gZ2V0X2ZsYWdfbmFtZXMgKExhenkuZm9yY2UgdGh1bmspXG4gICAgfCBHcm91cCBfIHwgRXhlYyBfIC0+IGFzc2VydCBmYWxzZVxuICA7O1xuXG4gIGxldCBoZWxwX3JlY3Vyc2l2ZSB+Y21kIH53aXRoX2ZsYWdzIH5leHBhbmRfZG90cyB0IHMgPVxuICAgIGxldCByZWMgaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQgdCBzID1cbiAgICAgIGxldCBuZXdfcyA9IHMgXiAoaWYgZXhwYW5kX2RvdHMgdGhlbiBjbWQgZWxzZSBcIi5cIikgXiBcIiBcIiBpblxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IExhenkgdGh1bmsgLT5cbiAgICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICAgICAgfCBCYXNlIGJhc2UgLT5cbiAgICAgICAgbGV0IGJhc2VfaGVscCA9IHMgXiBjbWQsIHN1bW1hcnkgKEJhc2UgYmFzZSkgaW5cbiAgICAgICAgaWYgd2l0aF9mbGFnc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgYmFzZV9oZWxwXG4gICAgICAgICAgOjogTGlzdC5tYXBcbiAgICAgICAgICAgICAgIH5mOihmdW4gKGZsYWcsIGgpIC0+IG5ld19zIF4gZmxhZywgaClcbiAgICAgICAgICAgICAgIChMaXN0LnNvcnRcbiAgICAgICAgICAgICAgICAgIH5jb21wYXJlOkJhc2UuRGVwcmVjYXRlZC5zdWJjb21tYW5kX2NtcF9mc3RcbiAgICAgICAgICAgICAgICAgIChCYXNlLkRlcHJlY2F0ZWQuZmxhZ3NfaGVscCB+ZGlzcGxheV9oZWxwX2ZsYWdzOmZhbHNlIGJhc2UpKVxuICAgICAgICBlbHNlIFsgYmFzZV9oZWxwIF1cbiAgICAgIHwgR3JvdXAgeyBzdW1tYXJ5OyBzdWJjb21tYW5kczsgcmVhZG1lID0gXzsgYm9keSA9IF8gfSAtPlxuICAgICAgICAocyBeIGNtZCwgc3VtbWFyeSlcbiAgICAgICAgOjogKExhenkuZm9yY2Ugc3ViY29tbWFuZHNcbiAgICAgICAgICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTpCYXNlLkRlcHJlY2F0ZWQuc3ViY29tbWFuZF9jbXBfZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAgfmY6KGZ1biAoY21kJywgdCkgLT4gaGVscF9yZWN1cnNpdmVfcmVjIH5jbWQ6Y21kJyB0IG5ld19zKSlcbiAgICAgIHwgRXhlYyBfIC0+XG4gICAgICAgICgqIENvbW1hbmQuZXhlYyBkb2VzIG5vdCBzdXBwb3J0IGRlcHJlY2F0ZWQgY29tbWFuZHMgKilcbiAgICAgICAgW11cbiAgICBpblxuICAgIGhlbHBfcmVjdXJzaXZlX3JlYyB+Y21kIHQgc1xuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfdW5peCAoRm9yX3VuaXhfd2l0aF9zdHJpbmdfZW52X3ZhciA6IEZvcl91bml4IHdpdGggdHlwZSBlbnZfdmFyIDo9IHN0cmluZykgPVxuc3RydWN0XG4gIG1vZHVsZSBWZXJzaW9uX2luZm8gPSBWZXJzaW9uX2luZm8gKEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXIpXG5cbiAgbW9kdWxlIEZvcl91bml4X3dpdGhfY29tbWFuZF9lbnZfdmFyIDogRm9yX3VuaXggd2l0aCB0eXBlIGVudl92YXIgOj0gQ29tbWFuZF9lbnZfdmFyLnQgPVxuICBzdHJ1Y3RcbiAgICAoKiBXZSBmb3JjZSBhY2Nlc3MgdG8gZW52IHZhcnMgdG8gZ28gdGhyb3VnaCBbQ29tbWFuZF9lbnZfdmFyXSBzbyB0aGF0IHdlIGNhbiBrZWVwIGFuXG4gICAgICAgYWNjdXJhdGUgZW51bWVyYXRpb24gb2YgdGhlIHZhcmlhYmxlcyB3ZSB1c2UuICopXG5cbiAgICBpbmNsdWRlIEZvcl91bml4X3dpdGhfc3RyaW5nX2Vudl92YXJcblxuICAgIG1vZHVsZSBVbml4ID0gc3RydWN0XG4gICAgICBpbmNsdWRlIFVuaXhcblxuICAgICAgbGV0IHB1dGVudiB+a2V5IH5kYXRhID0gcHV0ZW52IH5rZXk6KENvbW1hbmRfZW52X3Zhci50b19zdHJpbmcga2V5KSB+ZGF0YVxuICAgICAgbGV0IHVuc2V0ZW52IGtleSA9IHVuc2V0ZW52IChDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIGtleSlcbiAgICAgIGxldCB1bnNhZmVfZ2V0ZW52IGtleSA9IHVuc2FmZV9nZXRlbnYgKENvbW1hbmRfZW52X3Zhci50b19zdHJpbmcga2V5KVxuXG4gICAgICB0eXBlIGVudiA9XG4gICAgICAgIFsgYFJlcGxhY2Ugb2YgKENvbW1hbmRfZW52X3Zhci50ICogc3RyaW5nKSBsaXN0XG4gICAgICAgIHwgYEV4dGVuZCBvZiAoQ29tbWFuZF9lbnZfdmFyLnQgKiBzdHJpbmcpIGxpc3RcbiAgICAgICAgfCBgT3ZlcnJpZGUgb2YgKENvbW1hbmRfZW52X3Zhci50ICogc3RyaW5nIG9wdGlvbikgbGlzdFxuICAgICAgICB8IGBSZXBsYWNlX3JhdyBvZiBzdHJpbmcgbGlzdFxuICAgICAgICBdXG5cbiAgICAgIGxldCBjb252ZXJ0X2VudiBlbnYgPVxuICAgICAgICBsZXQgY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QgPVxuICAgICAgICAgIExpc3QubWFwIGxpc3QgfmY6KGZ1biAoZW52X3Zhciwgc3RyKSAtPiBDb21tYW5kX2Vudl92YXIudG9fc3RyaW5nIGVudl92YXIsIHN0cilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggZW52IHdpdGhcbiAgICAgICAgfCBgUmVwbGFjZSBsaXN0IC0+IGBSZXBsYWNlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgRXh0ZW5kIGxpc3QgLT4gYEV4dGVuZCAoY29udmVydF9jb21tYW5kX2Vudl92YXJfdG9fc3RyaW5nIGxpc3QpXG4gICAgICAgIHwgYE92ZXJyaWRlIGxpc3QgLT4gYE92ZXJyaWRlIChjb252ZXJ0X2NvbW1hbmRfZW52X3Zhcl90b19zdHJpbmcgbGlzdClcbiAgICAgICAgfCBgUmVwbGFjZV9yYXcgXyBhcyByZXBsYWNlIC0+IHJlcGxhY2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBleGVjIH5wcm9nIH5hcmd2ID91c2VfcGF0aCA/ZW52ICgpID1cbiAgICAgICAgZXhlYyB+cHJvZyB+YXJndiA/dXNlX3BhdGggP2VudjooT3B0aW9uLm1hcCBlbnYgfmY6Y29udmVydF9lbnYpICgpXG4gICAgICA7O1xuXG4gICAgICBsZXQgY3JlYXRlX3Byb2Nlc3NfZW52ID93b3JraW5nX2RpciA/cHJvZ19zZWFyY2hfcGF0aCA/YXJndjAgfnByb2cgfmFyZ3MgfmVudiAoKSA9XG4gICAgICAgIGNyZWF0ZV9wcm9jZXNzX2VudlxuICAgICAgICAgID93b3JraW5nX2RpclxuICAgICAgICAgID9wcm9nX3NlYXJjaF9wYXRoXG4gICAgICAgICAgP2FyZ3YwXG4gICAgICAgICAgfnByb2dcbiAgICAgICAgICB+YXJnc1xuICAgICAgICAgIH5lbnY6KGNvbnZlcnRfZW52IGVudilcbiAgICAgICAgICAoKVxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgb3BlbiBGb3JfdW5peF93aXRoX2NvbW1hbmRfZW52X3ZhclxuXG4gICgqIENsZWFyIHRoZSBzZXR0aW5nIG9mIGVudmlyb25tZW50IHZhcmlhYmxlIGFzc29jaWF0ZWQgd2l0aCBjb21tYW5kLWxpbmVcbiAgICAgY29tcGxldGlvbiBhbmQgcmVjdXJzaXZlIGhlbHAgc28gdGhhdCBzdWJwcm9jZXNzZXMgZG9uJ3Qgc2VlIHRoZW0uXG5cbiAgICAgVXNlIFt1bnNhZmVfZ2V0ZW52XSBzbyBzZXR1aWQtcm9vdCBwcm9ncmFtcyBjYW4gc3RpbGwgcmVhZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuXG4gICAgIFRoZXJlIGlzIG5vIHNlY3VyaXR5IHJpc2sgaGVyZSBiZWNhdXNlIHRoZSB2YWx1ZXMgYXJlIG9ubHkgdXNlZCBhcyB0cmlnZ2VycyB0byBkdW1wXG4gICAgIG91dCBjb21tYW5kIGluZm9ybWF0aW9uLiAqKVxuICBsZXQgZ2V0ZW52X2FuZF9jbGVhciB2YXIgPVxuICAgIGxldCB2YWx1ZSA9IFVuaXgudW5zYWZlX2dldGVudiB2YXIgaW5cbiAgICBpZiBPcHRpb24uaXNfc29tZSB2YWx1ZSB0aGVuIFVuaXgudW5zZXRlbnYgdmFyO1xuICAgIHZhbHVlXG4gIDs7XG5cbiAgbGV0IG1heWJlX2NvbXBfY3dvcmQgKCkgPSBnZXRlbnZfYW5kX2NsZWFyIGNvbXBfY3dvcmQgfD4gT3B0aW9uLm1hcCB+ZjpJbnQub2Zfc3RyaW5nXG5cbiAgbGV0IHNldF9jb21wX2N3b3JkIG5ld192YWx1ZSA9XG4gICAgbGV0IG5ld192YWx1ZSA9IEludC50b19zdHJpbmcgbmV3X3ZhbHVlIGluXG4gICAgVW5peC5wdXRlbnYgfmtleTpjb21wX2N3b3JkIH5kYXRhOm5ld192YWx1ZVxuICA7O1xuXG4gIG1vZHVsZSBFeGVjID0gc3RydWN0XG4gICAgaW5jbHVkZSBFeGVjXG5cbiAgICBsZXQgZXhlY193aXRoX2FyZ3MgdCB+YXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmQgPVxuICAgICAgbGV0IHByb2cgPSBhYnNfcGF0aCB+ZGlyOnQud29ya2luZ19kaXIgdC5wYXRoX3RvX2V4ZSBpblxuICAgICAgbGV0IGFyZ3MgPSB0LmNoaWxkX3N1YmNvbW1hbmQgQCBhcmdzIGluXG4gICAgICBsZXQgZW52ID0gdC5lbnYgaW5cbiAgICAgIE9wdGlvbi5pdGVyIG1heWJlX25ld19jb21wX2N3b3JkIH5mOihmdW4gbiAtPlxuICAgICAgICAoKiBUaGUgbG9naWMgZm9yIHRyYWNraW5nIFttYXliZV9uZXdfY29tcF9jd29yZF0gZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB3aGV0aGVyXG4gICAgICAgICAgIHRoaXMgZXhlYyBzcGVjaWZpZXMgYSBjaGlsZCBzdWJjb21tYW5kLiBJZiBpdCBkb2VzLCBDT01QX0NXT1JEIG5lZWRzIHRvIGJlIHNldFxuICAgICAgICAgICBoaWdoZXIgdG8gYWNjb3VudCBmb3IgdGhlIGFyZ3VtZW50cyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNoaWxkIHN1YmNvbW1hbmQuICopXG4gICAgICAgIHNldF9jb21wX2N3b3JkIChuICsgTGlzdC5sZW5ndGggdC5jaGlsZF9zdWJjb21tYW5kKSk7XG4gICAgICBuZXZlcl9yZXR1cm5zXG4gICAgICAgIChGb3JfdW5peF93aXRoX3N0cmluZ19lbnZfdmFyLlVuaXguZXhlYyA/ZW52IH5wcm9nIH5hcmd2Oihwcm9nIDo6IGFyZ3MpICgpKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTZXhwYWJsZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2hhcGUuU2V4cGFibGVcblxuICAgIGxldCByZWFkX3N0ZG91dF9hbmRfc3RkZXJyIChwcm9jZXNzX2luZm8gOiBVbml4LlByb2Nlc3NfaW5mby50KSA9XG4gICAgICAoKiBXZSBuZWVkIHRvIHJlYWQgZWFjaCBvZiBzdGRvdXQgYW5kIHN0ZGVyciBpbiBhIHNlcGFyYXRlIHRocmVhZCB0byBhdm9pZCBkZWFkbG9ja3NcbiAgICAgICAgIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGRlY2lkZXMgdG8gd2FpdCBmb3IgYSByZWFkIG9uIG9uZSBiZWZvcmUgY2xvc2luZyB0aGUgb3RoZXIuXG4gICAgICAgICBCdWZmZXJpbmcgbWF5IGhpZGUgdGhpcyBwcm9ibGVtIHVudGlsIG91dHB1dCBpcyBcInN1ZmZpY2llbnRseSBsYXJnZVwiLiAqKVxuICAgICAgbGV0IHN0YXJ0X3JlYWRpbmcgZGVzY3IgaW5mbyA9XG4gICAgICAgIGxldCBvdXRwdXQgPSBTZXRfb25jZS5jcmVhdGUgKCkgaW5cbiAgICAgICAgbGV0IHRocmVhZCA9XG4gICAgICAgICAgVGhyZWFkLmNyZWF0ZVxuICAgICAgICAgICAgfm9uX3VuY2F1Z2h0X2V4bjpgUHJpbnRfdG9fc3RkZXJyXG4gICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBkZXNjciB8PiBVbml4LmluX2NoYW5uZWxfb2ZfZGVzY3IgfD4gSW5fY2hhbm5lbC5pbnB1dF9hbGwpXG4gICAgICAgICAgICAgICB8PiBTZXRfb25jZS5zZXRfZXhuIG91dHB1dCBbJWhlcmVdKVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgc3RhZ2UgKGZ1biAoKSAtPlxuICAgICAgICAgIFRocmVhZC5qb2luIHRocmVhZDtcbiAgICAgICAgICBVbml4LmNsb3NlIGRlc2NyO1xuICAgICAgICAgIG1hdGNoIFNldF9vbmNlLmdldCBvdXRwdXQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiByYWlzZV9zIFslbWVzc2FnZSBcIkJVRyBmYWlsZWQgdG8gcmVhZFwiIChpbmZvIDogSW5mby50KV1cbiAgICAgICAgICB8IFNvbWUgKE9rIG91dHB1dCkgLT4gb3V0cHV0XG4gICAgICAgICAgfCBTb21lIChFcnJvciBleG4pIC0+IHJhaXNlIGV4bilcbiAgICAgIGluXG4gICAgICAoKiBXZSBtaWdodCBoYW5nIGZvcmV2ZXIgdHJ5aW5nIHRvIGpvaW4gdGhlIHJlYWRpbmcgdGhyZWFkcyBpZiB0aGUgY2hpbGQgcHJvY2VzcyBrZWVwc1xuICAgICAgICAgdGhlIGZpbGUgZGVzY3JpcHRvciBvcGVuLiBOb3QgaGFuZGxpbmcgdGhpcyBiZWNhdXNlIEkgdGhpbmsgd2UndmUgbmV2ZXIgc2VlbiBpdFxuICAgICAgICAgaW4gdGhlIHdpbGQgZGVzcGl0ZSBydW5uaW5nIHZ1bG5lcmFibGUgY29kZSBmb3IgeWVhcnMuICopXG4gICAgICAoKiBXZSBoYXZlIHRvIHN0YXJ0IGJvdGggdGhyZWFkcyBiZWZvcmUgam9pbmluZyBhbnkgb2YgdGhlbS4gKilcbiAgICAgIGxldCBmaW5pc2hfc3Rkb3V0ID0gc3RhcnRfcmVhZGluZyBwcm9jZXNzX2luZm8uc3Rkb3V0IChJbmZvLm9mX3N0cmluZyBcInN0ZG91dFwiKSBpblxuICAgICAgbGV0IGZpbmlzaF9zdGRlcnIgPSBzdGFydF9yZWFkaW5nIHByb2Nlc3NfaW5mby5zdGRlcnIgKEluZm8ub2Zfc3RyaW5nIFwic3RkZXJyXCIpIGluXG4gICAgICB1bnN0YWdlIGZpbmlzaF9zdGRvdXQgKCksIHVuc3RhZ2UgZmluaXNoX3N0ZGVyciAoKVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZCA9XG4gICAgICBsZXQgcHJvY2Vzc19pbmZvID1cbiAgICAgICAgVW5peC5jcmVhdGVfcHJvY2Vzc19lbnZcbiAgICAgICAgICAoKVxuICAgICAgICAgIH5wcm9nOihhYnNfcGF0aCB+ZGlyOndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlKVxuICAgICAgICAgIH5hcmdzOmNoaWxkX3N1YmNvbW1hbmRcbiAgICAgICAgICB+ZW52OlxuICAgICAgICAgICAgKGxldCBoZWxwX3NleHAgPSBzdXBwb3J0ZWRfdmVyc2lvbnMgfD4gSW50LlNldC5zZXhwX29mX3QgfD4gU2V4cC50b19zdHJpbmcgaW5cbiAgICAgICAgICAgICBgRXh0ZW5kIFsgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQLCBoZWxwX3NleHAgXSlcbiAgICAgIGluXG4gICAgICBVbml4LmNsb3NlIHByb2Nlc3NfaW5mby5zdGRpbjtcbiAgICAgIGxldCBzdGRvdXQsIHN0ZGVyciA9IHJlYWRfc3Rkb3V0X2FuZF9zdGRlcnIgcHJvY2Vzc19pbmZvIGluXG4gICAgICBpZ25vcmUgKFVuaXgud2FpdCAoYFBpZCBwcm9jZXNzX2luZm8ucGlkKSA6IFBpZC50ICogVW5peC5FeGl0X29yX3NpZ25hbC50KTtcbiAgICAgICgqIE5vdyB3ZSd2ZSBraWxsZWQgYWxsIHRoZSBwcm9jZXNzZXMgYW5kIHRocmVhZHMgd2UgbWFkZS4gKilcbiAgICAgIG1hdGNoIHN0ZG91dCB8PiBTZXhwLm9mX3N0cmluZyB8PiBWZXJzaW9uZWQudF9vZl9zZXhwIHw+IG9mX3ZlcnNpb25lZCB3aXRoXG4gICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgcmFpc2Vfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJjYW5ub3QgcGFyc2UgY29tbWFuZCBzaGFwZVwiXG4gICAgICAgICAgICAgIH5fOihleG4gOiBleG4pXG4gICAgICAgICAgICAgIChzdGRvdXQgOiBzdHJpbmcpXG4gICAgICAgICAgICAgIChzdGRlcnIgOiBzdHJpbmcpXVxuICAgICAgfCB0IC0+IHRcbiAgICA7O1xuXG4gICAgbGV0IHJlYyBmaW5kICh0IDogdCkgfnBhdGhfdG9fc3ViY29tbWFuZCA9XG4gICAgICBtYXRjaCBwYXRoX3RvX3N1YmNvbW1hbmQgd2l0aFxuICAgICAgfCBbXSAtPiB0XG4gICAgICB8IHN1YiA6OiBzdWJzIC0+XG4gICAgICAgIChtYXRjaCB0IHdpdGhcbiAgICAgICAgIHwgQmFzZSBfIC0+IGZhaWx3aXRoZiBcInVuZXhwZWN0ZWQgc3ViY29tbWFuZCAlU1wiIHN1YiAoKVxuICAgICAgICAgfCBMYXp5IHRodW5rIC0+IGZpbmQgKExhenkuZm9yY2UgdGh1bmspIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgICAgIHwgRXhlYyB7IHBhdGhfdG9fZXhlOyB3b3JraW5nX2RpcjsgY2hpbGRfc3ViY29tbWFuZDsgXyB9IC0+XG4gICAgICAgICAgIGZpbmRcbiAgICAgICAgICAgICAob2ZfZXh0ZXJuYWwgfndvcmtpbmdfZGlyIH5wYXRoX3RvX2V4ZSB+Y2hpbGRfc3ViY29tbWFuZClcbiAgICAgICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOihzdWIgOjogKHN1YnMgQCBjaGlsZF9zdWJjb21tYW5kKSlcbiAgICAgICAgIHwgR3JvdXAgZyAtPlxuICAgICAgICAgICAobWF0Y2ggTGlzdC5Bc3NvYy5maW5kIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpIH5lcXVhbDpTdHJpbmcuZXF1YWwgc3ViIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aGYgXCJ1bmtub3duIHN1YmNvbW1hbmQgJVNcIiBzdWIgKClcbiAgICAgICAgICAgIHwgU29tZSB0IC0+IGZpbmQgdCB+cGF0aF90b19zdWJjb21tYW5kOnN1YnMpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQgPVxuICAgIFNleHBhYmxlLm9mX2V4dGVybmFsIH53b3JraW5nX2RpciB+cGF0aF90b19leGUgfmNoaWxkX3N1YmNvbW1hbmRcbiAgICB8PiBwcm94eV9vZl9zZXhwYWJsZVxuICAgICAgICAgfndvcmtpbmdfZGlyXG4gICAgICAgICB+cGF0aF90b19leGVcbiAgICAgICAgIH5jaGlsZF9zdWJjb21tYW5kXG4gICAgICAgICB+cGF0aF90b19zdWJjb21tYW5kOltdXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZV9vZl9wcm94eSBwcm94eSA6IFNoYXBlLnQgPSBzaGFwZV9vZl9wcm94eV9raW5kIHByb3h5LlByb3h5LmtpbmRcblxuICBhbmQgc2hhcGVfb2ZfZXhlICgpIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIgPVxuICAgIHNoYXBlX29mX3Byb3h5IChwcm94eV9vZl9leGUgfndvcmtpbmdfZGlyIHBhdGhfdG9fZXhlIGNoaWxkX3N1YmNvbW1hbmQpXG5cbiAgYW5kIHNoYXBlX29mX3Byb3h5X2tpbmQga2luZCA9XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgYlxuICAgIHwgTGF6eSBsIC0+IExhenkgKExhenkubWFwIH5mOnNoYXBlX29mX3Byb3h5X2tpbmQgbClcbiAgICB8IEdyb3VwIGcgLT5cbiAgICAgIEdyb3VwXG4gICAgICAgIHsgZyB3aXRoXG4gICAgICAgICAgc3ViY29tbWFuZHMgPSBMYXp5Lm1hcCBnLnN1YmNvbW1hbmRzIH5mOihMaXN0LkFzc29jLm1hcCB+ZjpzaGFwZV9vZl9wcm94eSlcbiAgICAgICAgfVxuICAgIHwgRXhlYyAoeyBjaGlsZF9zdWJjb21tYW5kOyBwYXRoX3RvX2V4ZTsgd29ya2luZ19kaXI7IF8gfSBhcyBlKSAtPlxuICAgICAgRXhlYyAoZSwgc2hhcGVfb2ZfZXhlIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIpXG4gIDs7XG5cbiAgbGV0IHJlYyBzaGFwZSB0IDogU2hhcGUudCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBCYXNlIGIgLT4gQmFzaWMgKEJhc2Uuc2hhcGUgYilcbiAgICB8IEdyb3VwIGcgLT4gR3JvdXAgKEdyb3VwLnNoYXBlIH5zdWJjb21tYW5kX3RvX3NoYXBlOnNoYXBlIGcpXG4gICAgfCBFeGVjICh7IEV4ZWMuY2hpbGRfc3ViY29tbWFuZDsgcGF0aF90b19leGU7IHdvcmtpbmdfZGlyOyBfIH0gYXMgZSkgLT5cbiAgICAgIEV4ZWMgKEV4ZWMuc2hhcGUgZSwgc2hhcGVfb2ZfZXhlIH5jaGlsZF9zdWJjb21tYW5kIH5wYXRoX3RvX2V4ZSB+d29ya2luZ19kaXIpXG4gICAgfCBMYXp5IHRodW5rIC0+IHNoYXBlIChMYXp5LmZvcmNlIHRodW5rKVxuICA7O1xuXG4gIGxldCBnYXRoZXJfaGVscCB+cmVjdXJzaXZlIH5mbGFncyB+ZXhwYW5kX2RvdHMgc2hhcGUgPVxuICAgIGxldCByZWMgbG9vcCBwYXRoIGFjYyBzaGFwZSA9XG4gICAgICBsZXQgc3RyaW5nX29mX3BhdGggPSBpZiBleHBhbmRfZG90cyB0aGVuIFBhdGgudG9fc3RyaW5nIGVsc2UgUGF0aC50b19zdHJpbmdfZG90cyBpblxuICAgICAgbGV0IGdhdGhlcl9ncm91cCBwYXRoIGFjYyBzdWJjb21tYW5kcyA9XG4gICAgICAgIGxldCBmaWx0ZXJlZF9zdWJjb21tYW5kcyA9XG4gICAgICAgICAgKCogT25seSBzaG93IHRoZSBbaGVscF0gc3ViY29tbWFuZCBhdCB0b3AtbGV2ZWwuICopXG4gICAgICAgICAgaWYgUGF0aC5pc19lbXB0eSBwYXRoXG4gICAgICAgICAgdGhlbiBzdWJjb21tYW5kc1xuICAgICAgICAgIGVsc2UgTGlzdC5Bc3NvYy5yZW1vdmUgfmVxdWFsOlN0cmluZy4oID0gKSBzdWJjb21tYW5kcyBcImhlbHBcIlxuICAgICAgICBpblxuICAgICAgICBmaWx0ZXJlZF9zdWJjb21tYW5kc1xuICAgICAgICB8PiBMaXN0LnN0YWJsZV9zb3J0IH5jb21wYXJlOihmdW4gYSBiIC0+IGhlbHBfc2NyZWVuX2NvbXBhcmUgKGZzdCBhKSAoZnN0IGIpKVxuICAgICAgICB8PiBMaXN0LmZvbGRcbiAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICB+ZjooZnVuIChhY2MgOiBTaGFwZS5GbGFnX2luZm8udCBGcXVldWUudCkgKHN1YmNvbW1hbmQsIHNoYXBlKSAtPlxuICAgICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLmFwcGVuZCBwYXRoIH5zdWJjb21tYW5kIGluXG4gICAgICAgICAgICAgICBsZXQgbmFtZSA9IHN0cmluZ19vZl9wYXRoIHBhdGggaW5cbiAgICAgICAgICAgICAgIGxldCBkb2MgPSBTaGFwZS5nZXRfc3VtbWFyeSBzaGFwZSBpblxuICAgICAgICAgICAgICAgbGV0IGFjYyA9IEZxdWV1ZS5lbnF1ZXVlIGFjYyB7IG5hbWU7IGRvYzsgYWxpYXNlcyA9IFtdIH0gaW5cbiAgICAgICAgICAgICAgIGlmIHJlY3Vyc2l2ZSB0aGVuIGxvb3AgcGF0aCBhY2Mgc2hhcGUgZWxzZSBhY2MpXG4gICAgICBpblxuICAgICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgICAgfCBFeGVjIChfLCBzaGFwZSkgLT5cbiAgICAgICAgKCogSWYgdGhlIGV4ZWN1dGFibGUgYmVpbmcgY2FsbGVkIGRvZXNuJ3QgdXNlIFtDb3JlLkNvbW1hbmRdLCB0aGVuIHNleHAgZXh0cmFjdGlvblxuICAgICAgICAgICB3aWxsIGZhaWwuICopXG4gICAgICAgICh0cnkgbG9vcCBwYXRoIGFjYyAoc2hhcGUgKCkpIHdpdGhcbiAgICAgICAgIHwgXyAtPiBhY2MpXG4gICAgICB8IEdyb3VwIGcgLT4gZ2F0aGVyX2dyb3VwIHBhdGggYWNjIChMYXp5LmZvcmNlIGcuc3ViY29tbWFuZHMpXG4gICAgICB8IEJhc2ljIGIgLT5cbiAgICAgICAgaWYgZmxhZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIGIuZmxhZ3NcbiAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIGZtdCAtPiBTdHJpbmcuKCA8PiApIGZtdC5uYW1lIFwiWy1oZWxwXVwiKVxuICAgICAgICAgIHw+IExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgZm10IC0+XG4gICAgICAgICAgICBsZXQgcGF0aCA9IFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQ6Zm10Lm5hbWUgaW5cbiAgICAgICAgICAgIGxldCBmbXQgPSB7IGZtdCB3aXRoIG5hbWUgPSBzdHJpbmdfb2ZfcGF0aCBwYXRoIH0gaW5cbiAgICAgICAgICAgIEZxdWV1ZS5lbnF1ZXVlIGFjYyBmbXQpXG4gICAgICAgIGVsc2UgYWNjXG4gICAgICB8IExhenkgdGh1bmsgLT4gbG9vcCBwYXRoIGFjYyAoTGF6eS5mb3JjZSB0aHVuaylcbiAgICBpblxuICAgIGxvb3AgUGF0aC5lbXB0eSBGcXVldWUuZW1wdHkgc2hhcGUgfD4gRnF1ZXVlLnRvX2xpc3RcbiAgOztcblxuICBsZXQgZ3JvdXBfb3JfZXhlY19oZWxwX3RleHQgfmZsYWdzIH5wYXRoIH5zdW1tYXJ5IH5yZWFkbWUgfmZvcm1hdF9saXN0ID1cbiAgICB1bnBhcmFncmFwaHNcbiAgICAgIChMaXN0LmZpbHRlcl9vcHRcbiAgICAgICAgIFsgU29tZSBzdW1tYXJ5XG4gICAgICAgICA7IFNvbWUgKFN0cmluZy5jb25jYXQgWyBcIiAgXCI7IFBhdGgudG9fc3RyaW5nIHBhdGg7IFwiIFNVQkNPTU1BTkRcIiBdKVxuICAgICAgICAgOyByZWFkbWVcbiAgICAgICAgIDsgU29tZSAoaWYgZmxhZ3MgdGhlbiBcIj09PSBzdWJjb21tYW5kcyBhbmQgZmxhZ3MgPT09XCIgZWxzZSBcIj09PSBzdWJjb21tYW5kcyA9PT1cIilcbiAgICAgICAgIDsgU29tZSAoU2hhcGUuRmxhZ19oZWxwX2Rpc3BsYXkudG9fc3RyaW5nIGZvcm1hdF9saXN0KVxuICAgICAgICAgXSlcbiAgOztcblxuICBsZXQgcmVjIGhlbHBfZm9yX3NoYXBlIHNoYXBlIHBhdGggfmV4cGFuZF9kb3RzIH5mbGFncyB+cmVjdXJzaXZlID1cbiAgICBsZXQgZm9ybWF0X2xpc3QgPSBnYXRoZXJfaGVscCB+ZXhwYW5kX2RvdHMgfmZsYWdzIH5yZWN1cnNpdmUgc2hhcGUgaW5cbiAgICBtYXRjaCBzaGFwZSB3aXRoXG4gICAgfCBCYXNpYyBiIC0+XG4gICAgICBsZXQgdXNhZ2UgPSBTaGFwZS5CYXNlX2luZm8uZ2V0X3VzYWdlIGIgaW5cbiAgICAgIHVucGFyYWdyYXBoc1xuICAgICAgICAoTGlzdC5maWx0ZXJfb3B0XG4gICAgICAgICAgIFsgU29tZSBiLnN1bW1hcnlcbiAgICAgICAgICAgOyBTb21lIChcIiAgXCIgXiBQYXRoLnRvX3N0cmluZyBwYXRoIF4gXCIgXCIgXiB1c2FnZSlcbiAgICAgICAgICAgOyBiLnJlYWRtZVxuICAgICAgICAgICA7IFNvbWUgXCI9PT0gZmxhZ3MgPT09XCJcbiAgICAgICAgICAgOyBTb21lIChTaGFwZS5GbGFnX2hlbHBfZGlzcGxheS50b19zdHJpbmcgYi5mbGFncylcbiAgICAgICAgICAgXSlcbiAgICB8IEdyb3VwIGcgLT5cbiAgICAgIGdyb3VwX29yX2V4ZWNfaGVscF90ZXh0XG4gICAgICAgIH5mbGFnc1xuICAgICAgICB+cGF0aFxuICAgICAgICB+cmVhZG1lOmcucmVhZG1lXG4gICAgICAgIH5zdW1tYXJ5Omcuc3VtbWFyeVxuICAgICAgICB+Zm9ybWF0X2xpc3RcbiAgICB8IEV4ZWMgKGUsIF8pIC0+XG4gICAgICBncm91cF9vcl9leGVjX2hlbHBfdGV4dFxuICAgICAgICB+ZmxhZ3NcbiAgICAgICAgfnBhdGhcbiAgICAgICAgfnJlYWRtZTplLnJlYWRtZVxuICAgICAgICB+c3VtbWFyeTplLnN1bW1hcnlcbiAgICAgICAgfmZvcm1hdF9saXN0XG4gICAgfCBMYXp5IHRodW5rIC0+IGhlbHBfZm9yX3NoYXBlIChMYXp5LmZvcmNlIHRodW5rKSBwYXRoIH5leHBhbmRfZG90cyB+ZmxhZ3MgfnJlY3Vyc2l2ZVxuICA7O1xuXG4gIGxldCBoZWxwX3N1YmNvbW1hbmQgfnN1bW1hcnkgfnJlYWRtZSA9XG4gICAgYmFzaWNcbiAgICAgIH5zdW1tYXJ5OlwiZXhwbGFpbiBhIGdpdmVuIHN1YmNvbW1hbmQgKHBlcmhhcHMgcmVjdXJzaXZlbHkpXCJcbiAgICAgIEJhc2UuU3BlYy4oXG4gICAgICAgIGVtcHR5XG4gICAgICAgICs+IGZsYWcgXCItcmVjdXJzaXZlXCIgbm9fYXJnIH5kb2M6XCIgc2hvdyBzdWJjb21tYW5kcyBvZiBzdWJjb21tYW5kcywgZXRjLlwiXG4gICAgICAgICs+IGZsYWcgXCItZmxhZ3NcIiBub19hcmcgfmRvYzpcIiBzaG93IGZsYWdzIGFzIHdlbGwgaW4gcmVjdXJzaXZlIGhlbHBcIlxuICAgICAgICArPiBmbGFnIFwiLWV4cGFuZC1kb3RzXCIgbm9fYXJnIH5kb2M6XCIgZXhwYW5kIHN1YmNvbW1hbmRzIGluIHJlY3Vyc2l2ZSBoZWxwXCJcbiAgICAgICAgKz4gcGF0aFxuICAgICAgICArPiBlbnZcbiAgICAgICAgKz4gYW5vbiAobWF5YmUgKFwiU1VCQ09NTUFORFwiICU6IHN0cmluZykpKVxuICAgICAgKGZ1biByZWN1cnNpdmUgZmxhZ3MgZXhwYW5kX2RvdHMgcGF0aCAoZW52IDogRW52LnQpIGNtZF9vcHQgKCkgLT5cbiAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgbWF0Y2ggRW52LmZpbmQgZW52IHN1YnNfa2V5IHdpdGhcbiAgICAgICAgICAgfCBTb21lIHN1YnMgLT4gc3Vic1xuICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICgqIG1haW50YWluZWQgYnkgW2Rpc3BhdGNoXSAqKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBwYXRoID1cbiAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLnBvcF9oZWxwIHBhdGggaW5cbiAgICAgICAgICAgT3B0aW9uLmZvbGQgY21kX29wdCB+aW5pdDpwYXRoIH5mOihmdW4gcGF0aCBzdWJjb21tYW5kIC0+XG4gICAgICAgICAgICAgUGF0aC5hcHBlbmQgcGF0aCB+c3ViY29tbWFuZClcbiAgICAgICAgIGluXG4gICAgICAgICBsZXQgcGF0aCwgc2hhcGUgPVxuICAgICAgICAgICBtYXRjaCBjbWRfb3B0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbGV0IHN1YmNvbW1hbmRzID0gTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjpzaGFwZSB8PiBMYXp5LmZyb21fdmFsIGluXG4gICAgICAgICAgICAgbGV0IHJlYWRtZSA9IE9wdGlvbi5tYXAgcmVhZG1lIH5mOihmdW4gcmVhZG1lIC0+IHJlYWRtZSAoKSkgaW5cbiAgICAgICAgICAgICBwYXRoLCBTaGFwZS5Hcm91cCB7IHJlYWRtZTsgc3VtbWFyeTsgc3ViY29tbWFuZHMgfVxuICAgICAgICAgICB8IFNvbWUgY21kIC0+XG4gICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgbG9va3VwX2V4cGFuZCAoTGlzdC5Bc3NvYy5tYXAgc3VicyB+ZjooZnVuIHggLT4geCwgYFByZWZpeCkpIGNtZCBTdWJjb21tYW5kXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICAgICAgZGllXG4gICAgICAgICAgICAgICAgICBcInVua25vd24gc3ViY29tbWFuZCAlcyBmb3IgY29tbWFuZCAlczogJXNcIlxuICAgICAgICAgICAgICAgICAgY21kXG4gICAgICAgICAgICAgICAgICAoUGF0aC50b19zdHJpbmcgcGF0aClcbiAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgIHwgT2sgKHBvc3NpYmx5X2V4cGFuZGVkX25hbWUsIHQpIC0+XG4gICAgICAgICAgICAgICAgKCogRml4IHRoZSB1bmV4cGFuZGVkIHZhbHVlICopXG4gICAgICAgICAgICAgICAgbGV0IHBhdGggPSBQYXRoLnJlcGxhY2VfZmlyc3QgfmZyb206Y21kIH50b186cG9zc2libHlfZXhwYW5kZWRfbmFtZSBwYXRoIGluXG4gICAgICAgICAgICAgICAgcGF0aCwgc2hhcGUgdClcbiAgICAgICAgIGluXG4gICAgICAgICBwcmludF9lbmRsaW5lIChoZWxwX2Zvcl9zaGFwZSBzaGFwZSBwYXRoIH5yZWN1cnNpdmUgfmZsYWdzIH5leHBhbmRfZG90cykpXG4gIDs7XG5cbiAgKCogVGhpcyBzY3JpcHQgd29ya3MgaW4gYm90aCBiYXNoICh2aWEgcmVhZGFycmF5KSBhbmQgenNoICh2aWEgcmVhZCAtQSkuICBJZiB5b3UgY2hhbmdlXG4gICAgIGl0LCBwbGVhc2UgdGVzdCBpbiBib3RoIGJhc2ggYW5kIHpzaC4gIEl0IGRvZXMgbm90IHdvcmsgdGNzaCAoZGlmZmVyZW50IGZ1bmN0aW9uXG4gICAgIHN5bnRheCkuICopXG4gIGxldCBkdW1wX2F1dG9jb21wbGV0ZV9mdW5jdGlvbiAoKSA9XG4gICAgbGV0IGZuYW1lID0gc3ByaW50ZiBcIl9qc2F1dG9jb21fJXNcIiAoUGlkLnRvX3N0cmluZyAoVW5peC5nZXRwaWQgKCkpKSBpblxuICAgIGxldCBhcmd2XzAgPSBDYW1sLlN5cy5hcmd2LigwKSBpblxuICAgIHByaW50ZlxuICAgICAgXCJmdW5jdGlvbiAlcyB7XFxuXFxcbiAgICAgIFxcICBleHBvcnQgQ09NUF9DV09SRFxcblxcXG4gICAgICBcXCAgQ09NUF9XT1JEU1swXT0lc1xcblxcXG4gICAgICBcXCAgaWYgdHlwZSByZWFkYXJyYXkgPiAvZGV2L251bGxcXG5cXFxuICAgICAgXFwgIHRoZW4gcmVhZGFycmF5IC10IENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZWxzZSBJRlM9XFxcIlxcblxcXG4gICAgICAgXFxcIiByZWFkIC1kIFxcXCJcXFwiIC1BIENPTVBSRVBMWSA8IDwoXFxcIiR7Q09NUF9XT1JEU1tAXX1cXFwiKVxcblxcXG4gICAgICBcXCAgZmlcXG5cXFxuICAgICAgIH1cXG5cXFxuICAgICAgIGNvbXBsZXRlIC1GICVzICVzXFxuXFxcbiAgICAgICAlIVwiXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gICAgICBmbmFtZVxuICAgICAgYXJndl8wXG4gIDs7XG5cbiAgbGV0IGR1bXBfaGVscF9zZXhwIH5zdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cGF0aF90b19zdWJjb21tYW5kID1cbiAgICBJbnQuU2V0LmludGVyIFNleHBhYmxlLnN1cHBvcnRlZF92ZXJzaW9ucyBzdXBwb3J0ZWRfdmVyc2lvbnNcbiAgICB8PiBJbnQuU2V0Lm1heF9lbHRcbiAgICB8PiBmdW5jdGlvblxuICAgIHwgTm9uZSAtPlxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJDb3VsZG4ndCBjaG9vc2UgYSBzdXBwb3J0ZWQgaGVscCBvdXRwdXQgdmVyc2lvbiBmb3IgQ29tbWFuZC5leGVjIGZyb20gdGhlIGdpdmVuIFxcXG4gICAgICAgICBzdXBwb3J0ZWQgdmVyc2lvbnMuXCJcbiAgICAgICAgU2V4cGFibGUuc3VwcG9ydGVkX3ZlcnNpb25zXG4gICAgICAgIEludC5TZXQuc2V4cF9vZl90XG4gICAgfCBTb21lIHZlcnNpb25fdG9fdXNlIC0+XG4gICAgICBzZXhwYWJsZV9zaGFwZSB0XG4gICAgICB8PiBTZXhwYWJsZS5maW5kIH5wYXRoX3RvX3N1YmNvbW1hbmRcbiAgICAgIHw+IFNleHBhYmxlLnRvX3ZlcnNpb25lZCB+dmVyc2lvbl90b191c2VcbiAgICAgIHw+IFNleHBhYmxlLlZlcnNpb25lZC5zZXhwX29mX3RcbiAgICAgIHw+IFNleHAudG9fc3RyaW5nXG4gICAgICB8PiBwcmludF9zdHJpbmdcbiAgOztcblxuICBsZXQgaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgPVxuICAgIG1hdGNoIGFyZ3Ygd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJtaXNzaW5nIGV4ZWN1dGFibGUgbmFtZVwiXG4gICAgfCBjbWQgOjogYXJncyAtPlxuICAgICAgT3B0aW9uLml0ZXIgKGdldGVudl9hbmRfY2xlYXIgQ09NTUFORF9PVVRQVVRfSEVMUF9TRVhQKSB+ZjooZnVuIHZlcnNpb24gLT5cbiAgICAgICAgbGV0IHN1cHBvcnRlZF92ZXJzaW9ucyA9IFNleHAub2Zfc3RyaW5nIHZlcnNpb24gfD4gSW50LlNldC50X29mX3NleHAgaW5cbiAgICAgICAgZHVtcF9oZWxwX3NleHAgfnN1cHBvcnRlZF92ZXJzaW9ucyB0IH5wYXRoX3RvX3N1YmNvbW1hbmQ6YXJncztcbiAgICAgICAgZXhpdCAwKTtcbiAgICAgIE9wdGlvbi5pdGVyIChnZXRlbnZfYW5kX2NsZWFyIENPTU1BTkRfT1VUUFVUX0lOU1RBTExBVElPTl9CQVNIKSB+ZjooZnVuIF8gLT5cbiAgICAgICAgZHVtcF9hdXRvY29tcGxldGVfZnVuY3Rpb24gKCk7XG4gICAgICAgIGV4aXQgMCk7XG4gICAgICBjbWQsIGFyZ3NcbiAgOztcblxuICBsZXQgcHJvY2Vzc19hcmdzIH5jbWQgfmFyZ3MgPVxuICAgIGxldCBtYXliZV9jb21wX2N3b3JkID0gbWF5YmVfY29tcF9jd29yZCAoKSBpblxuICAgIGxldCBhcmdzID1cbiAgICAgIG1hdGNoIG1heWJlX2NvbXBfY3dvcmQgd2l0aFxuICAgICAgfCBOb25lIC0+IENtZGxpbmUub2ZfbGlzdCBhcmdzXG4gICAgICB8IFNvbWUgY29tcF9jd29yZCAtPlxuICAgICAgICBsZXQgYXJncyA9IExpc3QudGFrZSAoYXJncyBAIFsgXCJcIiBdKSBjb21wX2N3b3JkIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCBhcmdzIH5pbml0OkNtZGxpbmUuTmlsIH5mOihmdW4gYXJnIGFyZ3MgLT5cbiAgICAgICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgICB8IENtZGxpbmUuTmlsIC0+IENtZGxpbmUuQ29tcGxldGUgYXJnXG4gICAgICAgICAgfCBfIC0+IENtZGxpbmUuQ29ucyAoYXJnLCBhcmdzKSlcbiAgICBpblxuICAgIFBhdGguY3JlYXRlIH5wYXRoX3RvX2V4ZTpjbWQsIGFyZ3MsIG1heWJlX2NvbXBfY3dvcmRcbiAgOztcblxuICBsZXQgcmVjIGFkZF9oZWxwX3N1YmNvbW1hbmRzID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgXyBhcyB0IC0+IHRcbiAgICB8IEV4ZWMgXyBhcyB0IC0+IHRcbiAgICB8IEdyb3VwIHsgc3VtbWFyeTsgcmVhZG1lOyBzdWJjb21tYW5kczsgYm9keSB9IC0+XG4gICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICBMYXp5Lm1hcCBzdWJjb21tYW5kcyB+ZjooZnVuIHN1YmNvbW1hbmRzIC0+XG4gICAgICAgICAgZXh0ZW5kX2FsaXN0X2V4blxuICAgICAgICAgICAgKExpc3QuQXNzb2MubWFwIHN1YmNvbW1hbmRzIH5mOmFkZF9oZWxwX3N1YmNvbW1hbmRzKVxuICAgICAgICAgICAgS2V5X3R5cGUuU3ViY29tbWFuZFxuICAgICAgICAgICAgfmtleTpcImhlbHBcIlxuICAgICAgICAgICAgKGhlbHBfc3ViY29tbWFuZCB+c3VtbWFyeSB+cmVhZG1lKSlcbiAgICAgIGluXG4gICAgICBHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHM7IGJvZHkgfVxuICAgIHwgTGF6eSB0aHVuayAtPiBMYXp5IChsYXp5IChhZGRfaGVscF9zdWJjb21tYW5kcyAoTGF6eS5mb3JjZSB0aHVuaykpKVxuICA7O1xuXG4gIGxldCBtYXliZV9hcHBseV9leHRlbmQgYXJncyB+ZXh0ZW5kIH5wYXRoID1cbiAgICBPcHRpb24udmFsdWVfbWFwIGV4dGVuZCB+ZGVmYXVsdDphcmdzIH5mOihmdW4gZiAtPlxuICAgICAgQ21kbGluZS5leHRlbmQgYXJncyB+ZXh0ZW5kOmYgfnBhdGgpXG4gIDs7XG5cbiAgbGV0IHJlYyBkaXNwYXRjaFxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgZW52XG4gICAgICAgICAgICB+ZXh0ZW5kXG4gICAgICAgICAgICB+cGF0aFxuICAgICAgICAgICAgfmFyZ3NcbiAgICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgTGF6eSB0aHVuayAtPlxuICAgICAgbGV0IHQgPSBMYXp5LmZvcmNlIHRodW5rIGluXG4gICAgICBkaXNwYXRjaFxuICAgICAgICB0XG4gICAgICAgIGVudlxuICAgICAgICB+ZXh0ZW5kXG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgIH5jb21wbGV0ZV9zdWJjb21tYW5kc1xuICAgIHwgQmFzZSBiYXNlIC0+XG4gICAgICBsZXQgYXJncyA9IG1heWJlX2FwcGx5X2V4dGVuZCBhcmdzIH5leHRlbmQgfnBhdGggaW5cbiAgICAgIGxldCBoZWxwX3RleHQgPVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKGhlbHBfZm9yX3NoYXBlIChzaGFwZSB0KSBwYXRoIH5yZWN1cnNpdmU6ZmFsc2UgfmZsYWdzOnRydWUgfmV4cGFuZF9kb3RzOmZhbHNlKVxuICAgICAgaW5cbiAgICAgIEJhc2UucnVuXG4gICAgICAgIGJhc2VcbiAgICAgICAgZW52XG4gICAgICAgIH5wYXRoXG4gICAgICAgIH5hcmdzXG4gICAgICAgIH52ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgIH5oZWxwX3RleHRcbiAgICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkc1xuICAgIHwgRXhlYyBleGVjIC0+XG4gICAgICBsZXQgYXJncyA9IENtZGxpbmUudG9fbGlzdCAobWF5YmVfYXBwbHlfZXh0ZW5kIGFyZ3MgfmV4dGVuZCB+cGF0aCkgaW5cbiAgICAgIEV4ZWMuZXhlY193aXRoX2FyZ3MgfmFyZ3MgZXhlYyB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICB8IEdyb3VwICh7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBzdWJzOyBib2R5IH0gYXMgZ3JvdXApIC0+XG4gICAgICBsZXQgY29tcGxldGluZyA9IENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzIGluXG4gICAgICBsZXQgZW52ID0gRW52LnNldCBlbnYgfmtleTpzdWJzX2tleSB+ZGF0YTooTGF6eS5mb3JjZSBzdWJzKSBpblxuICAgICAgbGV0IGRpZV9zaG93aW5nX2hlbHAgbXNnID1cbiAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICB0aGVuIGV4aXQgMFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIiVzXFxuJSFcIlxuICAgICAgICAgICAgKGhlbHBfZm9yX3NoYXBlXG4gICAgICAgICAgICAgICB+cmVjdXJzaXZlOmZhbHNlXG4gICAgICAgICAgICAgICB+ZmxhZ3M6ZmFsc2VcbiAgICAgICAgICAgICAgIH5leHBhbmRfZG90czpmYWxzZVxuICAgICAgICAgICAgICAgKHNoYXBlIChHcm91cCB7IHN1bW1hcnk7IHJlYWRtZTsgc3ViY29tbWFuZHMgPSBzdWJzOyBib2R5IH0pKVxuICAgICAgICAgICAgICAgcGF0aCk7XG4gICAgICAgICAgZGllIFwiJXNcIiBtc2cgKCkpXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBwYXJzZV9ncm91cCBhcmdzIH5tYXliZV9uZXdfY29tcF9jd29yZCA9XG4gICAgICAgIGxldCBtYXliZV9uZXdfY29tcF9jd29yZCA9IE9wdGlvbi5tYXAgfmY6SW50LnByZWQgbWF5YmVfbmV3X2NvbXBfY3dvcmQgaW5cbiAgICAgICAgbGV0IHNraXAgcmVzdCA9IHBhcnNlX2dyb3VwIHJlc3Qgfm1heWJlX25ld19jb21wX2N3b3JkIGluXG4gICAgICAgIGxldCByZXNvbHZlIHN1YiByZXN0ID1cbiAgICAgICAgICBsZXQgc3VicyA9IExpc3QuQXNzb2MubWFwIChMYXp5LmZvcmNlIHN1YnMpIH5mOihmdW4geCAtPiB4LCBgUHJlZml4KSBpblxuICAgICAgICAgIG1hdGNoIGxvb2t1cF9leHBhbmQgc3VicyBzdWIgU3ViY29tbWFuZCB3aXRoXG4gICAgICAgICAgfCBFcnJvciBtc2cgLT4gZGllX3Nob3dpbmdfaGVscCBtc2dcbiAgICAgICAgICB8IE9rIChzdWIsIHQpIC0+XG4gICAgICAgICAgICBkaXNwYXRjaFxuICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgIGVudlxuICAgICAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgICAgIH5leHRlbmRcbiAgICAgICAgICAgICAgfnBhdGg6KFBhdGguYXBwZW5kIHBhdGggfnN1YmNvbW1hbmQ6c3ViKVxuICAgICAgICAgICAgICB+YXJnczpyZXN0XG4gICAgICAgICAgICAgIH5tYXliZV9uZXdfY29tcF9jd29yZFxuICAgICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgICB+YnVpbGRfaW5mb1xuICAgICAgICAgICAgICB+dmVyYm9zZV9vbl9wYXJzZV9lcnJvclxuICAgICAgICAgICAgICB+Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggKGFyZ3MgOiBDbWRsaW5lLnQpIHdpdGhcbiAgICAgICAgfCBOaWwgLT5cbiAgICAgICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIGRpZV9zaG93aW5nX2hlbHBcbiAgICAgICAgICAgICAgIChzcHJpbnRmIFwibWlzc2luZyBzdWJjb21tYW5kIGZvciBjb21tYW5kICVzXCIgKFBhdGgudG9fc3RyaW5nIHBhdGgpKVxuICAgICAgICAgICB8IFNvbWUgYm9keSAtPiBib2R5IH5wYXRoOihQYXRoLnBhcnRzX2V4ZV9iYXNlbmFtZSBwYXRoKSlcbiAgICAgICAgfCBDb25zIChzdWIsIHJlc3QpIC0+XG4gICAgICAgICAgKCogTWF0Y2ggZm9yIGZsYWdzIHJlY29nbml6ZWQgd2hlbiBzdWJjb21tYW5kcyBhcmUgZXhwZWN0ZWQgbmV4dCAqKVxuICAgICAgICAgIChtYXRjaCBzdWIgd2l0aFxuICAgICAgICAgICAoKiBSZWNvZ25pemVkIGF0IHRoZSB0b3AgbGV2ZWwgY29tbWFuZCBvbmx5ICopXG4gICAgICAgICAgIHwgKFwiLXZlcnNpb25cIiB8IFwiLS12ZXJzaW9uXCIpIHdoZW4gUGF0aC5sZW5ndGggcGF0aCA9IDEgLT5cbiAgICAgICAgICAgICBpZiBjb21wbGV0aW5nXG4gICAgICAgICAgICAgdGhlbiBza2lwIHJlc3RcbiAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgIFZlcnNpb25faW5mby5wcmludF92ZXJzaW9uIH52ZXJzaW9uO1xuICAgICAgICAgICAgICAgZXhpdCAwKVxuICAgICAgICAgICB8IChcIi1idWlsZC1pbmZvXCIgfCBcIi0tYnVpbGQtaW5mb1wiKSB3aGVuIFBhdGgubGVuZ3RoIHBhdGggPSAxIC0+XG4gICAgICAgICAgICAgaWYgY29tcGxldGluZ1xuICAgICAgICAgICAgIHRoZW4gc2tpcCByZXN0XG4gICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICBWZXJzaW9uX2luZm8ucHJpbnRfYnVpbGRfaW5mbyB+YnVpbGRfaW5mbztcbiAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgKCogUmVjb2duaXplZCBldmVyeXdoZXJlICopXG4gICAgICAgICAgIHwgXCItaGVscFwiIHwgXCItLWhlbHBcIiAtPlxuICAgICAgICAgICAgIGlmIGNvbXBsZXRpbmdcbiAgICAgICAgICAgICB0aGVuIHNraXAgcmVzdFxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgbWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5pbCB8IENvbXBsZXRlIChfIDogc3RyaW5nKSAtPlxuICAgICAgICAgICAgICAgICBwcmludF9lbmRsaW5lXG4gICAgICAgICAgICAgICAgICAgKGhlbHBfZm9yX3NoYXBlXG4gICAgICAgICAgICAgICAgICAgICAgfnJlY3Vyc2l2ZTpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH5mbGFnczpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIH5leHBhbmRfZG90czpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChzaGFwZSAoR3JvdXAgeyBncm91cCB3aXRoIHN1YmNvbW1hbmRzID0gc3VicyB9KSlcbiAgICAgICAgICAgICAgICAgICAgICBwYXRoKTtcbiAgICAgICAgICAgICAgICAgZXhpdCAwXG4gICAgICAgICAgICAgICB8IENtZGxpbmUuQ29ucyAoZmlyc3Rfb2ZfcmVzdCwgcmVzdF9vZl9yZXN0KSAtPlxuICAgICAgICAgICAgICAgICByZXNvbHZlIGZpcnN0X29mX3Jlc3QgKENvbnMgKHN1YiwgcmVzdF9vZl9yZXN0KSkpXG4gICAgICAgICAgIHwgKF8gOiBzdHJpbmcpIC0+IHJlc29sdmUgc3ViIHJlc3QpXG4gICAgICAgIHwgQ29tcGxldGUgcGFydCAtPlxuICAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgIExhenkuZm9yY2Ugc3Vic1xuICAgICAgICAgICAgfD4gTGlzdC5tYXAgfmY6ZnN0XG4gICAgICAgICAgICB8PiBMaXN0LmZpbHRlciB+ZjooZnVuIG5hbWUgLT4gU3RyaW5nLmlzX3ByZWZpeCBuYW1lIH5wcmVmaXg6cGFydClcbiAgICAgICAgICAgIHw+IExpc3Quc29ydCB+Y29tcGFyZTpTdHJpbmcuY29tcGFyZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoIGNvbXBsZXRlX3N1YmNvbW1hbmRzIHdpdGhcbiAgICAgICAgICAgfCBTb21lIGYgLT5cbiAgICAgICAgICAgICBsZXQgc3ViY29tbWFuZHMgPVxuICAgICAgICAgICAgICAgc2hhcGUgdCB8PiBTaGFwZS5mdWxseV9mb3JjZWQgfD4gU2hhcGUuRnVsbHlfZm9yY2VkLmV4cGFuZGVkX3N1YmNvbW1hbmRzXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAobWF0Y2ggZiB+cGF0aDooUGF0aC5wYXJ0cyBwYXRoKSB+cGFydCBzdWJjb21tYW5kcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBleGl0IDFcbiAgICAgICAgICAgICAgfCBTb21lIHRvX291dHB1dCAtPlxuICAgICAgICAgICAgICAgIHByaW50X2VuZGxpbmUgKFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIiB0b19vdXRwdXQpO1xuICAgICAgICAgICAgICAgIGV4aXQgMClcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgTGlzdC5pdGVyIHN1YnMgfmY6cHJpbnRfZW5kbGluZTtcbiAgICAgICAgICAgICBleGl0IDApXG4gICAgICBpblxuICAgICAgcGFyc2VfZ3JvdXAgYXJncyB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgOztcblxuICBsZXQgcnVuXG4gICAgICAgID92ZXJib3NlX29uX3BhcnNlX2Vycm9yXG4gICAgICAgID92ZXJzaW9uXG4gICAgICAgID9idWlsZF9pbmZvXG4gICAgICAgID8oYXJndiA9IEFycmF5LnRvX2xpc3QgQ2FtbC5TeXMuYXJndilcbiAgICAgICAgP2V4dGVuZFxuICAgICAgICA/KHdoZW5fcGFyc2luZ19zdWNjZWVkcyA9IEZuLmlkKVxuICAgICAgICA/Y29tcGxldGVfc3ViY29tbWFuZHNcbiAgICAgICAgdFxuICAgID1cbiAgICBsZXQgYnVpbGRfaW5mbyA9XG4gICAgICBtYXRjaCBidWlsZF9pbmZvIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGxhenkgdlxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X2J1aWxkX2luZm9cbiAgICBpblxuICAgIGxldCB2ZXJzaW9uID1cbiAgICAgIG1hdGNoIHZlcnNpb24gd2l0aFxuICAgICAgfCBOb25lIC0+IFZlcnNpb25faW5mby5kZWZhdWx0X3ZlcnNpb25cbiAgICAgIHwgU29tZSB2IC0+XG4gICAgICAgICgqIFt2ZXJzaW9uXSB3YXMgc3BhY2UgZGVsaW1pdGVkIGF0IHNvbWUgcG9pbnQgYW5kIG5ld2xpbmUgZGVsaW1pdGVkXG4gICAgICAgICAgIGF0IGFub3RoZXIuICBXZSBhbHdheXMgcHJpbnQgb25lIChyZXBvLCByZXZpc2lvbikgcGFpciBwZXIgbGluZVxuICAgICAgICAgICBhbmQgZW5zdXJlIHNvcnRlZCBvcmRlciAqKVxuICAgICAgICBsYXp5XG4gICAgICAgICAgKFZlcnNpb25faW5mby5ub3JtYWxpemVfdmVyc2lvbl9saW5lc1xuICAgICAgICAgICAgIChTdHJpbmcuc3BsaXQgdiB+b246JyAnIHw+IExpc3QuY29uY2F0X21hcCB+ZjooU3RyaW5nLnNwbGl0IH5vbjonXFxuJykpKVxuICAgIGluXG4gICAgRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+XG4gICAgICBsZXQgdCA9IFZlcnNpb25faW5mby5hZGQgdCB+dmVyc2lvbiB+YnVpbGRfaW5mbyBpblxuICAgICAgbGV0IHQgPSBhZGRfaGVscF9zdWJjb21tYW5kcyB0IGluXG4gICAgICBsZXQgY21kLCBhcmdzID0gaGFuZGxlX2Vudmlyb25tZW50IHQgfmFyZ3YgaW5cbiAgICAgIGxldCBwYXRoLCBhcmdzLCBtYXliZV9uZXdfY29tcF9jd29yZCA9IHByb2Nlc3NfYXJncyB+Y21kIH5hcmdzIGluXG4gICAgICB0cnlcbiAgICAgICAgZGlzcGF0Y2hcbiAgICAgICAgICB0XG4gICAgICAgICAgRW52LmVtcHR5XG4gICAgICAgICAgfmV4dGVuZFxuICAgICAgICAgIH5wYXRoXG4gICAgICAgICAgfmFyZ3NcbiAgICAgICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmRcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIH5idWlsZF9pbmZvXG4gICAgICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3JcbiAgICAgICAgICB+d2hlbl9wYXJzaW5nX3N1Y2NlZWRzXG4gICAgICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzXG4gICAgICB3aXRoXG4gICAgICB8IEZhaWxlZF90b19wYXJzZV9jb21tYW5kX2xpbmUgbXNnIC0+XG4gICAgICAgIGlmIENtZGxpbmUuZW5kc19pbl9jb21wbGV0ZSBhcmdzXG4gICAgICAgIHRoZW4gZXhpdCAwXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIHByZXJyX2VuZGxpbmUgbXNnO1xuICAgICAgICAgIGV4aXQgMSkpXG4gIDs7XG5cbiAgbGV0IGRlcHJlY2F0ZWRfcnVuIHQgfmNtZCB+YXJncyB+aXNfaGVscCB+aXNfaGVscF9yZWMgfmlzX2hlbHBfcmVjX2ZsYWdzIH5pc19leHBhbmRfZG90c1xuICAgID1cbiAgICBsZXQgcGF0aF9zdHJpbmdzID0gU3RyaW5nLnNwbGl0IGNtZCB+b246JyAnIGluXG4gICAgbGV0IHBhdGggPSBQYXRoLm9mX3BhcnRzIHBhdGhfc3RyaW5ncyBpblxuICAgIGxldCBhcmdzID0gaWYgaXNfZXhwYW5kX2RvdHMgdGhlbiBcIi1leHBhbmQtZG90c1wiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwX3JlY19mbGFncyB0aGVuIFwiLWZsYWdzXCIgOjogYXJncyBlbHNlIGFyZ3MgaW5cbiAgICBsZXQgYXJncyA9IGlmIGlzX2hlbHBfcmVjIHRoZW4gXCItclwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBpZiBpc19oZWxwIHRoZW4gXCItaGVscFwiIDo6IGFyZ3MgZWxzZSBhcmdzIGluXG4gICAgbGV0IGFyZ3MgPSBDbWRsaW5lLm9mX2xpc3QgYXJncyBpblxuICAgIGxldCB0ID0gYWRkX2hlbHBfc3ViY29tbWFuZHMgdCBpblxuICAgIGRpc3BhdGNoXG4gICAgICB0XG4gICAgICBFbnYuZW1wdHlcbiAgICAgIH5wYXRoXG4gICAgICB+YXJnc1xuICAgICAgfmV4dGVuZDpOb25lXG4gICAgICB+bWF5YmVfbmV3X2NvbXBfY3dvcmQ6Tm9uZVxuICAgICAgfnZlcnNpb246VmVyc2lvbl9pbmZvLmRlZmF1bHRfdmVyc2lvblxuICAgICAgfmJ1aWxkX2luZm86VmVyc2lvbl9pbmZvLmRlZmF1bHRfYnVpbGRfaW5mb1xuICAgICAgfnZlcmJvc2Vfb25fcGFyc2VfZXJyb3I6Tm9uZVxuICAgICAgfndoZW5fcGFyc2luZ19zdWNjZWVkczpGbi5pZFxuICAgICAgfmNvbXBsZXRlX3N1YmNvbW1hbmRzOk5vbmVcbiAgOztcbmVuZFxuXG4oKiBOT1RFOiBhbGwgdGhhdCBmb2xsb3dzIGlzIHNpbXBseSBuYW1lc3BhY2UgbWFuYWdlbWVudCBib2lsZXJwbGF0ZS4gIFRoaXMgd2lsbCBnbyBhd2F5XG4gICBvbmNlIHdlIHJlLXdvcmsgdGhlIGludGVybmFscyBvZiBDb21tYW5kIHRvIHVzZSBBcHBsaWNhdGl2ZSBmcm9tIHRoZSBncm91bmQgdXAuICopXG5cbm1vZHVsZSBQYXJhbSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSArJ2EgdFxuXG4gICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5TIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAgIHZhbCBoZWxwIDogc3RyaW5nIExhenkudCB0XG4gICAgdmFsIHBhdGggOiBzdHJpbmcgbGlzdCB0XG4gICAgdmFsIGFyZ3MgOiBzdHJpbmcgbGlzdCB0XG5cbiAgICB2YWwgZmxhZ1xuICAgICAgOiAgP2FsaWFzZXM6c3RyaW5nIGxpc3RcbiAgICAgIC0+ID9mdWxsX2ZsYWdfcmVxdWlyZWQ6dW5pdFxuICAgICAgLT4gc3RyaW5nXG4gICAgICAtPiAnYSBGbGFnLnRcbiAgICAgIC0+IGRvYzpzdHJpbmdcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBmbGFnX29wdGlvbmFsX3dpdGhfZGVmYXVsdF9kb2NcbiAgICAgIDogID9hbGlhc2VzOnN0cmluZyBsaXN0XG4gICAgICAtPiA/ZnVsbF9mbGFnX3JlcXVpcmVkOnVuaXRcbiAgICAgIC0+IHN0cmluZ1xuICAgICAgLT4gJ2EgQXJnX3R5cGUudFxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+IGRlZmF1bHQ6J2FcbiAgICAgIC0+IGRvYzpzdHJpbmdcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBhbm9uIDogJ2EgQW5vbnMudCAtPiAnYSB0XG4gICAgdmFsIGVzY2FwZV9hbm9uIDogZmluYWxfYW5vbjonYSBBbm9ucy50IC0+ICgnYSAqIHN0cmluZyBsaXN0KSB0XG5cbiAgICBtb2R1bGUgSWZfbm90aGluZ19jaG9zZW4gOiBzaWdcbiAgICAgIHR5cGUgKF8sIF8pIHQgPVxuICAgICAgICB8IERlZmF1bHRfdG8gOiAnYSAtPiAoJ2EsICdhKSB0XG4gICAgICAgIHwgUmFpc2UgOiAoJ2EsICdhKSB0XG4gICAgICAgIHwgUmV0dXJuX25vbmUgOiAoJ2EsICdhIG9wdGlvbikgdFxuICAgIGVuZFxuXG4gICAgdmFsIGNob29zZV9vbmVcbiAgICAgIDogICdhIG9wdGlvbiB0IGxpc3RcbiAgICAgIC0+IGlmX25vdGhpbmdfY2hvc2VuOignYSwgJ2IpIElmX25vdGhpbmdfY2hvc2VuLnRcbiAgICAgIC0+ICdiIHRcblxuICAgIHZhbCBhbmRfYXJnX25hbWVzIDogJ2EgdCAtPiAoJ2EgKiBzdHJpbmcgbGlzdCkgdFxuICAgIHZhbCBhbmRfYXJnX25hbWUgOiAnYSB0IC0+ICgnYSAqIHN0cmluZykgdFxuICAgIHZhbCBhcmdfbmFtZXMgOiAnYSB0IC0+IHN0cmluZyBsaXN0XG4gIGVuZFxuXG4gIG1vZHVsZSBBID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgU3BlYy5wYXJhbVxuXG4gICAgaW5jbHVkZSBBcHBsaWNhdGl2ZS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgICAgICBsZXQgcmV0dXJuID0gU3BlYy5jb25zdFxuICAgICAgICBsZXQgYXBwbHkgPSBTcGVjLmFwcGx5XG4gICAgICAgIGxldCBtYXAgPSBgQ3VzdG9tIFNwZWMubWFwXG4gICAgICBlbmQpXG4gIGVuZFxuXG4gIGluY2x1ZGUgQVxuXG4gIGxldCBoZWxwID0gU3BlYy5oZWxwXG4gIGxldCBwYXRoID0gU3BlYy5wYXRoXG4gIGxldCBhcmdzID0gU3BlYy5hcmdzXG4gIGxldCBmbGFnID0gU3BlYy5mbGFnXG4gIGxldCBhbm9uID0gU3BlYy5hbm9uXG4gIGxldCBjaG9vc2Vfb25lID0gU3BlYy5jaG9vc2Vfb25lXG4gIGxldCBhcmdfbmFtZXMgPSBTcGVjLmFyZ19uYW1lc1xuICBsZXQgYW5kX2FyZ19uYW1lcyA9IFNwZWMuYW5kX2FyZ19uYW1lc1xuICBsZXQgYW5kX2FyZ19uYW1lID0gU3BlYy5hbmRfYXJnX25hbWVcbiAgbGV0IGZsYWdfb3B0aW9uYWxfd2l0aF9kZWZhdWx0X2RvYyA9IFNwZWMuZmxhZ19vcHRpb25hbF93aXRoX2RlZmF1bHRfZG9jXG5cbiAgbW9kdWxlIEFyZ190eXBlID0gQXJnX3R5cGVcbiAgbW9kdWxlIElmX25vdGhpbmdfY2hvc2VuID0gU3BlYy5JZl9ub3RoaW5nX2Nob3NlblxuICBpbmNsdWRlIEFyZ190eXBlLkV4cG9ydFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgb3BlbiBGbGFnXG5cbiAgICBsZXQgZXNjYXBlID0gZXNjYXBlXG4gICAgbGV0IGxpc3RlZCA9IGxpc3RlZFxuICAgIGxldCBtYXBfZmxhZyA9IG1hcF9mbGFnXG4gICAgbGV0IG5vX2FyZyA9IG5vX2FyZ1xuICAgIGxldCBub19hcmdfYWJvcnQgPSBub19hcmdfYWJvcnRcbiAgICBsZXQgbm9fYXJnX3JlZ2lzdGVyID0gbm9fYXJnX3JlZ2lzdGVyXG4gICAgbGV0IG5vX2FyZ19zb21lID0gbm9fYXJnX3NvbWVcbiAgICBsZXQgb25lX29yX21vcmUgPSBvbmVfb3JfbW9yZVxuICAgIGxldCBvbmVfb3JfbW9yZV9hc19wYWlyID0gb25lX29yX21vcmVfYXNfcGFpclxuICAgIGxldCBvbmVfb3JfbW9yZV9hc19saXN0ID0gb25lX29yX21vcmVfYXNfbGlzdFxuICAgIGxldCBvcHRpb25hbCA9IG9wdGlvbmFsXG4gICAgbGV0IG9wdGlvbmFsX3dpdGhfZGVmYXVsdCA9IG9wdGlvbmFsX3dpdGhfZGVmYXVsdFxuICAgIGxldCByZXF1aXJlZCA9IHJlcXVpcmVkXG4gIGVuZFxuXG4gIGluY2x1ZGUgc3RydWN0XG4gICAgb3BlbiBBbm9uc1xuXG4gICAgbGV0ICggJTogKSA9ICggJTogKVxuICAgIGxldCBtYXBfYW5vbnMgPSBtYXBfYW5vbnNcbiAgICBsZXQgbWF5YmUgPSBtYXliZVxuICAgIGxldCBtYXliZV93aXRoX2RlZmF1bHQgPSBtYXliZV93aXRoX2RlZmF1bHRcbiAgICBsZXQgbm9uX2VtcHR5X3NlcXVlbmNlX2FzX2xpc3QgPSBub25fZW1wdHlfc2VxdWVuY2VfYXNfbGlzdFxuICAgIGxldCBub25fZW1wdHlfc2VxdWVuY2VfYXNfcGFpciA9IG5vbl9lbXB0eV9zZXF1ZW5jZV9hc19wYWlyXG4gICAgbGV0IHNlcXVlbmNlID0gc2VxdWVuY2VcbiAgICBsZXQgdDIgPSB0MlxuICAgIGxldCB0MyA9IHQzXG4gICAgbGV0IHQ0ID0gdDRcbiAgZW5kXG5cbiAgbGV0IGVzY2FwZV9hbm9uID0gU3BlYy5lc2NhcGVfYW5vblxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgUGFyYW1cblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgUGFyYW1cbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBQYXJhbVxuICBlbmRcbmVuZFxuXG50eXBlICdyZXN1bHQgYmFzaWNfY29tbWFuZCA9XG4gIHN1bW1hcnk6c3RyaW5nIC0+ID9yZWFkbWU6KHVuaXQgLT4gc3RyaW5nKSAtPiAodW5pdCAtPiAncmVzdWx0KSBQYXJhbS50IC0+IHRcblxubGV0IGJhc2ljIH5zdW1tYXJ5ID9yZWFkbWUgcGFyYW0gPVxuICBsZXQgc3BlYyA9IFNwZWMub2ZfcGFyYW1zIEBAIFBhcmFtLm1hcCBwYXJhbSB+ZjooZnVuIHJ1biAoKSAoKSAtPiBydW4gKCkpIGluXG4gIGxldCByZWFkbWUgPSBPcHRpb24ubWFwIHJlYWRtZSB+ZjooZnVuIGYgKCkgLT4gU3RyaW5nLnN0cmlwIChmICgpKSkgaW5cbiAgYmFzaWMgfnN1bW1hcnkgP3JlYWRtZSBzcGVjICgpXG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBsZXQgYWJzX3BhdGggPSBhYnNfcGF0aFxuICBsZXQgd29yZF93cmFwID0gU2hhcGUuUHJpdmF0ZS53b3JkX3dyYXBcblxuICBtb2R1bGUgQW5vbnMgPSBBbm9uc1xuICBtb2R1bGUgQ21kbGluZSA9IENtZGxpbmVcbiAgbW9kdWxlIEZvcl91bml4ID0gRm9yX3VuaXhcbiAgbW9kdWxlIFBhdGggPSBQYXRoXG5cbiAgbW9kdWxlIFNwZWMgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFNwZWNcblxuICAgIGxldCB0b19zdHJpbmdfZm9yX2Nob29zZV9vbmUgcGFyYW0gPVxuICAgICAgQ2hvb3NlX29uZS5DaG9pY2VfbmFtZS4oY3JlYXRlX2V4biBwYXJhbSB8PiB0b19zdHJpbmcpXG4gICAgOztcbiAgZW5kXG5lbmRcblxubGV0IHJ1biA9IGBVc2VfQ29tbWFuZF91bml4XG5sZXQgc2hhcGUgPSBgVXNlX0NvbW1hbmRfdW5peFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBTdHJpbmdfaWRfaW50ZlxuXG5tb2R1bGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyBbQEBkZXJpdmluZyBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG4gICAgICAgIGxldCBjaGVja19mb3Jfd2hpdGVzcGFjZSA9XG4gICAgICAgICAgbGV0IGludmFsaWQgcyByZWFzb24gPVxuICAgICAgICAgICAgRXJyb3IgKHNwcmludGYgXCInJXMnIGlzIG5vdCBhIHZhbGlkICVzIGJlY2F1c2UgJXNcIiBzIE0ubW9kdWxlX25hbWUgcmVhc29uKVxuICAgICAgICAgIGluXG4gICAgICAgICAgZnVuIHMgLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICAgICAgICAgIGlmIEludC4oID0gKSBsZW4gMFxuICAgICAgICAgICAgdGhlbiBpbnZhbGlkIHMgXCJpdCBpcyBlbXB0eVwiXG4gICAgICAgICAgICBlbHNlIGlmIENoYXIuaXNfd2hpdGVzcGFjZSBzLlswXSB8fCBDaGFyLmlzX3doaXRlc3BhY2Ugcy5bbGVuIC0gMV1cbiAgICAgICAgICAgIHRoZW4gaW52YWxpZCBzIFwiaXQgaGFzIHdoaXRlc3BhY2Ugb24gdGhlIGVkZ2VcIlxuICAgICAgICAgICAgZWxzZSBPayAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB2YWxpZGF0ZSBzID0gUmVzdWx0Lm1hcF9lcnJvciAoTS52YWxpZGF0ZSBzKSB+ZjpFcnJvci50b19zdHJpbmdfbWFjaFxuXG4gICAgICAgIGxldCBjaGVjayBzID1cbiAgICAgICAgICBpZiBNLmluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBjaGVja19mb3Jfd2hpdGVzcGFjZSBzIHdpdGhcbiAgICAgICAgICAgIHwgT2sgKCkgLT4gdmFsaWRhdGUgc1xuICAgICAgICAgICAgfCBFcnJvciBlcnJvciAtPiBFcnJvciBlcnJvcilcbiAgICAgICAgICBlbHNlIHZhbGlkYXRlIHNcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdG9fc3RyaW5nID0gRm4uaWRcbiAgICAgICAgbGV0IHBwID0gU3RyaW5nLnBwXG5cbiAgICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgICBtYXRjaCBjaGVjayBzIHdpdGhcbiAgICAgICAgICB8IE9rICgpIC0+IHNcbiAgICAgICAgICB8IEVycm9yIGVyciAtPiBpbnZhbGlkX2FyZyBlcnJcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgICAgIGxldCBzID0gU3RyaW5nLlN0YWJsZS5WMS50X29mX3NleHAgc2V4cCBpblxuICAgICAgICAgIG1hdGNoIGNoZWNrIHMgd2l0aFxuICAgICAgICAgIHwgT2sgKCkgLT4gc1xuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+IG9mX3NleHBfZXJyb3IgZXJyIHNleHBcbiAgICAgICAgOztcblxuICAgICAgICBpbmNsdWRlXG4gICAgICAgICAgQmluYWJsZS5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAgICAgKFN0cmluZylcbiAgICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IEZuLmlkXG4gICAgICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3RyaW5nXG4gICAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFRfd2l0aF9jb21wYXJhdG9yID0gc3RydWN0XG4gICAgICAgIGluY2x1ZGUgVFxuICAgICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKFQpXG4gICAgICBlbmRcblxuICAgICAgaW5jbHVkZSBUX3dpdGhfY29tcGFyYXRvclxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChUX3dpdGhfY29tcGFyYXRvcilcbiAgICAgIGluY2x1ZGUgSGFzaGFibGUuU3RhYmxlLlYxLk1ha2UgKFRfd2l0aF9jb21wYXJhdG9yKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhYmxlX2xhdGVzdCA9IFN0YWJsZS5WMVxuICBpbmNsdWRlIFN0YWJsZV9sYXRlc3QuVF93aXRoX2NvbXBhcmF0b3JcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfYmluYWJsZV91c2luZ19jb21wYXJhdG9yIChTdGFibGVfbGF0ZXN0LlRfd2l0aF9jb21wYXJhdG9yKVxuICBpbmNsdWRlIEhhc2hhYmxlLk1ha2VfYmluYWJsZSAoU3RhYmxlX2xhdGVzdC5UX3dpdGhfY29tcGFyYXRvcilcblxuICBsZXQgcXVpY2tjaGVja19zaHJpbmtlciA9IFF1aWNrY2hlY2suU2hyaW5rZXIuZW1wdHkgKClcbiAgbGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgPSBTdHJpbmcucXVpY2tjaGVja19vYnNlcnZlclxuXG4gIGxldCBxdWlja2NoZWNrX2dlbmVyYXRvciA9XG4gICAgU3RyaW5nLmdlbl9ub25lbXB0eScgQ2hhci5nZW5fcHJpbnRcbiAgICB8PiBRdWlja2NoZWNrLkdlbmVyYXRvci5maWx0ZXIgfmY6KGZ1biBzdHJpbmcgLT4gY2hlY2sgc3RyaW5nIHw+IFJlc3VsdC5pc19vaylcbiAgOztcblxuICBsZXQgYXJnX3R5cGUgPSBDb21tYW5kLkFyZ190eXBlLmNyZWF0ZSBvZl9zdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRob3V0X3ByZXR0eV9wcmludGVyIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZVxuICAgIE1ha2Vfd2l0aF92YWxpZGF0ZV93aXRob3V0X3ByZXR0eV9wcmludGVyXG4gICAgICAoc3RydWN0XG4gICAgICAgIGxldCBtb2R1bGVfbmFtZSA9IE0ubW9kdWxlX25hbWVcbiAgICAgICAgbGV0IHZhbGlkYXRlID0gRm4uY29uc3QgKE9rICgpKVxuICAgICAgICBsZXQgaW5jbHVkZV9kZWZhdWx0X3ZhbGlkYXRpb24gPSB0cnVlXG4gICAgICBlbmQpXG4gICAgICAoKVxuZW5kXG5cbm1vZHVsZSBNYWtlX3dpdGhfdmFsaWRhdGUgKE0gOiBzaWdcbiAgICB2YWwgbW9kdWxlX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsaWRhdGUgOiBzdHJpbmcgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgdmFsIGluY2x1ZGVfZGVmYXVsdF92YWxpZGF0aW9uIDogYm9vbFxuICBlbmQpXG4gICAgKCkgPVxuc3RydWN0XG4gIGluY2x1ZGUgTWFrZV93aXRoX3ZhbGlkYXRlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZClcbiAgICAoKSA9XG5zdHJ1Y3RcbiAgaW5jbHVkZSBNYWtlX3dpdGhvdXRfcHJldHR5X3ByaW50ZXIgKE0pICgpXG5cbiAgaW5jbHVkZSBQcmV0dHlfcHJpbnRlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgZW5kKVxuZW5kXG5cbmluY2x1ZGVcbiAgTWFrZVxuICAgIChzdHJ1Y3RcbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFwiQ29yZS5TdHJpbmdfaWRcIlxuICAgIGVuZClcbiAgICAoKVxuXG5tb2R1bGUgU3RyaW5nX3dpdGhvdXRfdmFsaWRhdGlvbl93aXRob3V0X3ByZXR0eV9wcmludGVyID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgRm4uaWRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5vcGVuIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBTdGFibGVfdW5pdF90ZXN0X2ludGZcblxubW9kdWxlIE1ha2Vfc2V4cF9kZXNlcmlhbGl6YXRpb25fdGVzdCAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGxldCV0ZXN0X3VuaXQgXCJzZXhwIGRlc2VyaWFsaXphdGlvblwiID1cbiAgICBPcl9lcnJvci5jb21iaW5lX2Vycm9yc191bml0XG4gICAgICAoTGlzdC5tYXAgVC50ZXN0cyB+ZjooZnVuICh0LCBzZXhwX2FzX3N0cmluZywgXykgLT5cbiAgICAgICAgIG1hdGNoXG4gICAgICAgICAgIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICAgICAgICAgICBzZXhwX2FzX3N0cmluZyB8PiBTZXhwLm9mX3N0cmluZyB8PiBbJW9mX3NleHA6IFQudF0pXG4gICAgICAgICB3aXRoXG4gICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT5cbiAgICAgICAgICAgT3JfZXJyb3IudGFnX2FyZ1xuICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgXCJjb3VsZCBub3QgZGVzZXJpYWxpemUgc2V4cFwiXG4gICAgICAgICAgICAgKHNleHBfYXNfc3RyaW5nLCBgRXhwZWN0ZWQgdClcbiAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIFsgYEV4cGVjdGVkIG9mIFQudCBdXVxuICAgICAgICAgfCBPayB0JyAtPlxuICAgICAgICAgICBpZiBULmVxdWFsIHQgdCdcbiAgICAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgT3JfZXJyb3IuZXJyb3JcbiAgICAgICAgICAgICAgIFwic2V4cCBkZXNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICAgICAgKGBFeHBlY3RlZCB0LCBgQnV0X2dvdCB0JylcbiAgICAgICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwic2V4cCBzZXJpYWxpemF0aW9uXCIgPVxuICAgIE9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcbiAgICAgIChMaXN0Lm1hcCBULnRlc3RzIH5mOihmdW4gKHQsIHNleHBfYXNfc3RyaW5nLCBfKSAtPlxuICAgICAgICAgT3JfZXJyb3IudHJ5X3dpdGggKGZ1biAoKSAtPlxuICAgICAgICAgICBsZXQgc2V4cCA9IFNleHAub2Zfc3RyaW5nIHNleHBfYXNfc3RyaW5nIGluXG4gICAgICAgICAgIGxldCBzZXJpYWxpemVkX3NleHAgPSBULnNleHBfb2ZfdCB0IGluXG4gICAgICAgICAgIGlmIFNleHAuKCA8PiApIHNlcmlhbGl6ZWRfc2V4cCBzZXhwXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgICAgIChgRXhwZWN0ZWQgc2V4cCwgYEJ1dF9nb3Qgc2VyaWFsaXplZF9zZXhwKVxuICAgICAgICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBTZXhwLnQgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IF1dKSkpXG4gICAgfD4gb2tfZXhuXG4gIDs7XG5lbmRcblxubW9kdWxlIE1ha2VfYmluX2lvX3Rlc3QgKFQgOiBTdGFibGVfdW5pdF90ZXN0X2ludGYuQXJnKSA9IHN0cnVjdFxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIF8sIGV4cGVjdGVkX2Jpbl9pbykgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgdG9fYmluX3N0cmluZyB0ID0gQmluYWJsZS50b19zdHJpbmcgYmluYWJsZV9tIHQgaW5cbiAgICAgIGxldCBzZXJpYWxpemVkX2Jpbl9pbyA9IHRvX2Jpbl9zdHJpbmcgdCBpblxuICAgICAgaWYgU3RyaW5nLiggPD4gKSBzZXJpYWxpemVkX2Jpbl9pbyBleHBlY3RlZF9iaW5faW9cbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiYmluX2lvIHNlcmlhbGl6YXRpb24gbWlzbWF0Y2hcIlxuICAgICAgICAgICh0LCBgRXhwZWN0ZWQgZXhwZWN0ZWRfYmluX2lvLCBgQnV0X2dvdCBzZXJpYWxpemVkX2Jpbl9pbylcbiAgICAgICAgICBbJXNleHBfb2Y6IFQudCAqIFsgYEV4cGVjdGVkIG9mIHN0cmluZyBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgdCcgPSBCaW5hYmxlLm9mX3N0cmluZyBiaW5hYmxlX20gc2VyaWFsaXplZF9iaW5faW8gaW5cbiAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJiaW5faW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHQsIGBCdXRfZ290IHQnKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgVC50IF0gKiBbIGBCdXRfZ290IG9mIFQudCBdXSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoVCA6IFN0YWJsZV91bml0X3Rlc3RfaW50Zi5BcmcpID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZV9zZXhwX2Rlc2VyaWFsaXphdGlvbl90ZXN0IChUKVxuICBpbmNsdWRlIE1ha2Vfc2V4cF9zZXJpYWxpemF0aW9uX3Rlc3QgKFQpXG4gIGluY2x1ZGUgTWFrZV9iaW5faW9fdGVzdCAoVClcbmVuZFxuXG5tb2R1bGUgTWFrZV91bm9yZGVyZWRfY29udGFpbmVyIChUIDogU3RhYmxlX3VuaXRfdGVzdF9pbnRmLlVub3JkZXJlZF9jb250YWluZXJfYXJnKSA9XG5zdHJ1Y3RcbiAgbW9kdWxlIFRlc3QgPSBTdGFibGVfdW5pdF90ZXN0X2ludGYuVW5vcmRlcmVkX2NvbnRhaW5lcl90ZXN0XG5cbiAgbGV0JXRlc3RfdW5pdCBcInNleHBcIiA9XG4gICAgTGlzdC5pdGVyIFQudGVzdHMgfmY6KGZ1biAodCwgeyBUZXN0LnNleHBzOyBfIH0pIC0+XG4gICAgICBsZXQgc2V4cHMgPSBMaXN0Lm1hcCBzZXhwcyB+ZjpTZXhwLm9mX3N0cmluZyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWRfZWxlbWVudHMgPVxuICAgICAgICBtYXRjaCBULnNleHBfb2ZfdCB0IHdpdGhcbiAgICAgICAgfCBTZXhwLkxpc3Qgc2V4cHMgLT4gc2V4cHNcbiAgICAgICAgfCBTZXhwLkF0b20gXyAtPlxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJleHBlY3RlZCBsaXN0IHdoZW4gc2VyaWFsaXppbmcgdW5vcmRlcmVkIGNvbnRhaW5lclwiXG4gICAgICAgICAgICB0XG4gICAgICAgICAgICBULnNleHBfb2ZfdFxuICAgICAgaW5cbiAgICAgIGxldCBzb3J0ZWRfc2V4cHMgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNleHBzIGluXG4gICAgICBsZXQgc29ydGVkX3NlcmlhbGl6ZWQgPSBMaXN0LnNvcnQgfmNvbXBhcmU6U2V4cC5jb21wYXJlIHNlcmlhbGl6ZWRfZWxlbWVudHMgaW5cbiAgICAgIGlmIG5vdCAoTGlzdC5lcXVhbCBTZXhwLiggPSApIHNvcnRlZF9zZXhwcyBzb3J0ZWRfc2VyaWFsaXplZClcbiAgICAgIHRoZW5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwic2V4cCBzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIHNleHBzLCBgQnV0X2dvdCBzZXJpYWxpemVkX2VsZW1lbnRzKVxuICAgICAgICAgIFslc2V4cF9vZjogWyBgRXhwZWN0ZWQgb2YgU2V4cC50IGxpc3QgXSAqIFsgYEJ1dF9nb3Qgb2YgU2V4cC50IGxpc3QgXV07XG4gICAgICBsZXQgc2V4cF9wZXJtdXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBzZXhwcykgaW5cbiAgICAgIExpc3QuaXRlciBzZXhwX3Blcm11dGF0aW9ucyB+ZjooZnVuIHNleHBzIC0+XG4gICAgICAgIGxldCB0JyA9IFQudF9vZl9zZXhwIChTZXhwLkxpc3Qgc2V4cHMpIGluXG4gICAgICAgIGlmIG5vdCAoVC5lcXVhbCB0IHQnKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgICBcInNleHAgZGVzZXJpYWxpemF0aW9uIG1zaW1hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuXG4gIGxldCByZWMgaXNfY29uY2F0ZW5hdGlvbiBzdHJpbmcgc3RyaW5ncyA9XG4gICAgaWYgU3RyaW5nLmlzX2VtcHR5IHN0cmluZ1xuICAgIHRoZW4gTGlzdC5mb3JfYWxsIHN0cmluZ3MgfmY6U3RyaW5nLmlzX2VtcHR5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVjIGxvb3AgcmV2X3NraXBwZWQgc3RyaW5ncyA9XG4gICAgICAgIG1hdGNoIHN0cmluZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICAgIHwgcHJlZml4IDo6IHN0cmluZ3MgLT5cbiAgICAgICAgICBsZXQgY29udGludWUgKCkgPSBsb29wIChwcmVmaXggOjogcmV2X3NraXBwZWQpIHN0cmluZ3MgaW5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmNob3BfcHJlZml4IH5wcmVmaXggc3RyaW5nIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IGNvbnRpbnVlICgpXG4gICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT5cbiAgICAgICAgICAgICBpc19jb25jYXRlbmF0aW9uIHN0cmluZyAoTGlzdC5yZXZfYXBwZW5kIHJldl9za2lwcGVkIHN0cmluZ3MpIHx8IGNvbnRpbnVlICgpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgW10gc3RyaW5ncylcbiAgOztcblxuICBsZXQldGVzdF91bml0IFwiYmluX2lvXCIgPVxuICAgIExpc3QuaXRlciBULnRlc3RzIH5mOihmdW4gKHQsIHsgVGVzdC5iaW5faW9faGVhZGVyOyBiaW5faW9fZWxlbWVudHM7IF8gfSkgLT5cbiAgICAgIGxldCBiaW5hYmxlX20gPSAobW9kdWxlIFQgOiBCaW5hYmxlLlMgd2l0aCB0eXBlIHQgPSBULnQpIGluXG4gICAgICBsZXQgZWxlbWVudHMgPSBiaW5faW9fZWxlbWVudHMgaW5cbiAgICAgIGxldCBiaW5faW9fb2ZfZWxlbWVudHMgZWxlbWVudHMgPSBiaW5faW9faGVhZGVyIF4gU3RyaW5nLmNvbmNhdCBlbGVtZW50cyBpblxuICAgICAgbGV0IHNlcmlhbGl6ZWQgPSBCaW5hYmxlLnRvX3N0cmluZyBiaW5hYmxlX20gdCBpblxuICAgICAgbGV0IHNlcmlhbGl6YXRpb25fbWF0Y2hlcyA9XG4gICAgICAgIG1hdGNoIFN0cmluZy5jaG9wX3ByZWZpeCB+cHJlZml4OmJpbl9pb19oZWFkZXIgc2VyaWFsaXplZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgZWxlbWVudHNfc3RyaW5nIC0+IGlzX2NvbmNhdGVuYXRpb24gZWxlbWVudHNfc3RyaW5nIGVsZW1lbnRzXG4gICAgICBpblxuICAgICAgaWYgbm90IHNlcmlhbGl6YXRpb25fbWF0Y2hlc1xuICAgICAgdGhlblxuICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgICAgXCJzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAoYEV4cGVjdGVkIChiaW5faW9faGVhZGVyLCBlbGVtZW50cyksIGBCdXRfZ290IHNlcmlhbGl6ZWQpXG4gICAgICAgICAgWyVzZXhwX29mOiBbIGBFeHBlY3RlZCBvZiBzdHJpbmcgKiBzdHJpbmcgbGlzdCBdICogWyBgQnV0X2dvdCBvZiBzdHJpbmcgXV07XG4gICAgICBsZXQgcGVybXV0YXRhdGlvbnMgPSBMaXN0LmluaXQgMTAgfmY6KGZ1biBfIC0+IExpc3QucGVybXV0ZSBlbGVtZW50cykgaW5cbiAgICAgIExpc3QuaXRlciBwZXJtdXRhdGF0aW9ucyB+ZjooZnVuIGVsZW1lbnRzIC0+XG4gICAgICAgIGxldCB0JyA9IEJpbmFibGUub2Zfc3RyaW5nIGJpbmFibGVfbSAoYmluX2lvX29mX2VsZW1lbnRzIGVsZW1lbnRzKSBpblxuICAgICAgICBpZiBub3QgKFQuZXF1YWwgdCB0JylcbiAgICAgICAgdGhlblxuICAgICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgXCJiaW4taW8gZGVzZXJpYWxpemF0aW9uIG1pc21hdGNoXCJcbiAgICAgICAgICAgIChgRXhwZWN0ZWQgdCwgYEJ1dF9nb3QgdCcpXG4gICAgICAgICAgICBbJXNleHBfb2Y6IFsgYEV4cGVjdGVkIG9mIFQudCBdICogWyBgQnV0X2dvdCBvZiBULnQgXV0pKVxuICA7O1xuZW5kXG5cbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxuKCogVGhlIG1vZHVsZSBbVF0gc2VydmVzIHRvIGVuZm9yY2UgdGhlIGludmFyaWFudCB0aGF0IGFsbCBCbGFuZy50IHZhbHVlcyBhcmUgaW4gYVxuICAgbm9ybWFsIGZvcm0gd2hlcmVieSBib29sZWFuIGNvbnN0YW50cyBUcnVlIGFuZCBGYWxzZSBvbmx5IGFwcGVhciBhcyB0aGUgdG9wbW9zdFxuICAgY29uc3RydWN0b3IgLS0gaW4gYW55IG90aGVyIHBvc2l0aW9uIHRoZXkgYXJlIHNpbXBsaWZpZWQgYXdheSB1c2luZyBsYXdzIG9mXG4gICBib29sZWFuIGFsZ2VicmEuXG5cbiAgIFdlIGFsc28gZW5mb3JjZSB0aGF0IG5lc3RlZCBbQW5kXXMgYW5kIFtPcl1zIGVhY2ggbGVhbiB0byB0aGUgcmlnaHQgc28gdGhhdCBbZXZhbF1cbiAgIGRvZXNuJ3QgbmVlZCBzbyBtdWNoIHN0YWNrIHNwYWNlIGFzIGl0IHdvdWxkIGlmIHRoZXkgbGVhbmVkIHRvIHRoZSBsZWZ0LiAgVGhvdWdodFxuICAgZXhwZXJpbWVudDogY29tcGFyZSBob3cgW2V2YWxdIHdvcmtzIG9uIHJpZ2h0LWxlYW5pbmcgW0FuZCAoYSwgQW5kIChiLCBBbmQgKGMsIGQpKSldXG4gICB2ZXJzdXMgbGVmdC1sZWFuaW5nIFtBbmQgKEFuZCAoQW5kIChhLCBiKSwgYyksIGQpXS4gIFRoZSBmb3JtZXIgaXMgdGhlIGJlc3QgY2FzZSBhbmQgaXNcbiAgIGVuZm9yY2VkLlxuXG4gICBOb3RlOiB0aGlzIGZpbGUgZGV2aWF0ZXMgZnJvbSB0aGUgdXN1YWwgcGF0dGVybiBvZiBtb2R1bGVzIHdpdGggU3RhYmxlIGludGVyZmFjZXMgaW5cbiAgIHRoYXQgdGhlIFN0YWJsZSBzdWItbW9kdWxlIGlzIG5vdCB0aGUgZmlyc3QgdGhpbmcgdG8gYmUgZGVmaW5lZCBpbiB0aGUgbW9kdWxlLiAgVGhlXG4gICByZWFzb24gZm9yIHRoaXMgZGV2aWF0aW9uIGlzIHNvIHRoYXQgb25lIGNhbiBjb252aW5jZSBvbmVzZWxmIG9mIHRoZSBhZm9yZW1lbnRpb25lZFxuICAgaW52YXJpYW50IGFmdGVyIHJlYWRpbmcgb25seSB0aGlzIHNtYWxsIGFtb3VudCBvZiBjb2RlLiAgQWZ0ZXIgZGVmaW5pbmcgVCB3ZSB0aGVuXG4gICBpbW1lZGlhdGVseSBkZWZpbmUgaXRzIFN0YWJsZSBpbnRlcmZhY2UuXG4qKVxubW9kdWxlIFQgOiBzaWdcbiAgdHlwZSArJ2EgdCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIGhhc2gsIHR5cGVyZXBdXG5cbiAgdmFsIGludmFyaWFudCA6ICdhIHQgLT4gdW5pdFxuICB2YWwgdHJ1ZV8gOiAnYSB0XG4gIHZhbCBmYWxzZV8gOiAnYSB0XG4gIHZhbCBub3RfIDogJ2EgdCAtPiAnYSB0XG4gIHZhbCBhbmRhbHNvIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIG9yZWxzZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBpZl8gOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKydhIHQgPVxuICAgIHwgVHJ1ZVxuICAgIHwgRmFsc2VcbiAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgIHwgT3Igb2YgJ2EgdCAqICdhIHRcbiAgICB8IE5vdCBvZiAnYSB0XG4gICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICB8IEJhc2Ugb2YgJ2FcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgdHlwZXJlcF1cblxuICBsZXQgaW52YXJpYW50ID1cbiAgICBsZXQgc3VidGVybXMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgfCBCYXNlIF8gLT4gW11cbiAgICAgIHwgTm90IHQxIC0+IFsgdDEgXVxuICAgICAgfCBBbmQgKHQxLCB0MikgfCBPciAodDEsIHQyKSAtPiBbIHQxOyB0MiBdXG4gICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBbIHQxOyB0MjsgdDMgXVxuICAgIGluXG4gICAgbGV0IHJlYyBjb250YWluc19ub19jb25zdGFudHMgPSBmdW5jdGlvblxuICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IHQgLT4gTGlzdC5pdGVyIH5mOmNvbnRhaW5zX25vX2NvbnN0YW50cyAoc3VidGVybXMgdClcbiAgICBpblxuICAgIGZ1biB0IC0+IExpc3QuaXRlciB+Zjpjb250YWluc19ub19jb25zdGFudHMgKHN1YnRlcm1zIHQpXG4gIDs7XG5cbiAgbGV0IHRydWVfID0gVHJ1ZVxuICBsZXQgZmFsc2VfID0gRmFsc2VcbiAgbGV0IGJhc2UgdiA9IEJhc2UgdlxuXG4gIGxldCBub3RfID0gZnVuY3Rpb25cbiAgICB8IFRydWUgLT4gRmFsc2VcbiAgICB8IEZhbHNlIC0+IFRydWVcbiAgICB8IE5vdCB0IC0+IHRcbiAgICB8IHQgLT4gTm90IHRcbiAgOztcblxuICBsZXQgcmVjIGFuZGFsc28gdDEgdDIgPVxuICAgIG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBfLCBGYWxzZSB8IEZhbHNlLCBfIC0+IEZhbHNlXG4gICAgfCBvdGhlciwgVHJ1ZSB8IFRydWUsIG90aGVyIC0+IG90aGVyXG4gICAgfCBBbmQgKHQxYSwgdDFiKSwgXyAtPlxuICAgICAgKCogbmVzdGVkIFtBbmRdcyBsZWFuIHJpZ2h0IC0tIHNlZSBjb21tZW50IGFib3ZlICopXG4gICAgICBBbmQgKHQxYSwgYW5kYWxzbyB0MWIgdDIpXG4gICAgfCBfIC0+IEFuZCAodDEsIHQyKVxuICA7O1xuXG4gIGxldCByZWMgb3JlbHNlIHQxIHQyID1cbiAgICBtYXRjaCB0MSwgdDIgd2l0aFxuICAgIHwgXywgVHJ1ZSB8IFRydWUsIF8gLT4gVHJ1ZVxuICAgIHwgb3RoZXIsIEZhbHNlIHwgRmFsc2UsIG90aGVyIC0+IG90aGVyXG4gICAgfCBPciAodDFhLCB0MWIpLCBfIC0+XG4gICAgICAoKiBuZXN0ZWQgW09yXXMgbGVhbiByaWdodCAtLSBzZWUgY29tbWVudCBhYm92ZSAqKVxuICAgICAgT3IgKHQxYSwgb3JlbHNlIHQxYiB0MilcbiAgICB8IF8gLT4gT3IgKHQxLCB0MilcbiAgOztcblxuICBsZXQgaWZfIGEgYiBjID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IFRydWUgLT4gYlxuICAgIHwgRmFsc2UgLT4gY1xuICAgIHwgXyAtPlxuICAgICAgKG1hdGNoIGIsIGMgd2l0aFxuICAgICAgIHwgVHJ1ZSwgXyAtPiBvcmVsc2UgYSBjXG4gICAgICAgfCBfLCBGYWxzZSAtPiBhbmRhbHNvIGEgYlxuICAgICAgIHwgXywgVHJ1ZSAtPiBvcmVsc2UgKG5vdF8gYSkgYlxuICAgICAgIHwgRmFsc2UsIF8gLT4gYW5kYWxzbyAobm90XyBhKSBjXG4gICAgICAgfCBfIC0+IElmIChhLCBiLCBjKSlcbiAgOztcbmVuZFxuXG5tb2R1bGUgUmF3ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFQudCA9IHByaXZhdGVcbiAgICB8IFRydWVcbiAgICB8IEZhbHNlXG4gICAgfCBBbmQgb2YgJ2EgdCAqICdhIHRcbiAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgfCBOb3Qgb2YgJ2EgdFxuICAgIHwgSWYgb2YgJ2EgdCAqICdhIHQgKiAnYSB0XG4gICAgfCBCYXNlIG9mICdhXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxuaW5jbHVkZSBUXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIDogc2lnXG4gICAgKCogVEhJUyBUWVBFIEFORCBJVFMgU0VSSUFMSVpBVElPTlMgU0hPVUxEIE5FVkVSIEJFIENIQU5HRUQgLSBQTEVBU0UgU1BFQUsgV0lUSFxuICAgICAgIEFOT1RIRVIgREVWRUxPUEVSIElGIFlPVSBORUVEIE1PUkUgREVUQUlMICopXG5cbiAgICB0eXBlICdhIHQgPSAnYSBULnQgPSBwcml2YXRlXG4gICAgICB8IFRydWVcbiAgICAgIHwgRmFsc2VcbiAgICAgIHwgQW5kIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE9yIG9mICdhIHQgKiAnYSB0XG4gICAgICB8IE5vdCBvZiAnYSB0XG4gICAgICB8IElmIG9mICdhIHQgKiAnYSB0ICogJ2EgdFxuICAgICAgfCBCYXNlIG9mICdhXG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cCwgc2V4cF9ncmFtbWFyXVxuXG4gICAgKCogdGhlIHJlbWFpbmRlciBvZiB0aGlzIHNpZ25hdHVyZSBjb25zaXN0cyBvZiBmdW5jdGlvbnMgdXNlZCBpbiB0aGUgZGVmaW5pdGlvbnNcbiAgICAgICBvZiBzZXhwIGNvbnZlcnNpb25zIHRoYXQgYXJlIGFsc28gdXNlZnVsIG1vcmUgZ2VuZXJhbGx5ICopXG5cbiAgICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIG9yXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gICAgdmFsIGdhdGhlcl9jb25qdW5jdHMgOiAnYSB0IC0+ICdhIHQgbGlzdFxuICAgIHZhbCBnYXRoZXJfZGlzanVuY3RzIDogJ2EgdCAtPiAnYSB0IGxpc3RcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50ID0gcHJpdmF0ZVxuICAgICAgfCBUcnVlXG4gICAgICB8IEZhbHNlXG4gICAgICB8IEFuZCBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBPciBvZiAnYSB0ICogJ2EgdFxuICAgICAgfCBOb3Qgb2YgJ2EgdFxuICAgICAgfCBJZiBvZiAnYSB0ICogJ2EgdCAqICdhIHRcbiAgICAgIHwgQmFzZSBvZiAnYVxuXG4gICAgaW5jbHVkZSAoXG4gICAgICBUIDpcbiAgICAgIHNpZ1xuICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaF1cbiAgICAgIGVuZFxuICAgICAgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxuICAgIHR5cGUgc2V4cCA9IFNleHAudCA9XG4gICAgICB8IEF0b20gb2Ygc3RyaW5nXG4gICAgICB8IExpc3Qgb2Ygc2V4cCBsaXN0XG5cbiAgICAoKiBjaGVhcCBpbXBvcnQgKilcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBhbmQncyAqKVxuICAgIGxldCBnYXRoZXJfY29uanVuY3RzIHQgPVxuICAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IEFuZCAodDEsIHQyKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdHMpXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wICh0IDo6IGFjYykgdHNcbiAgICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgICAgIGluXG4gICAgICBsb29wIFtdIFsgdCBdXG4gICAgOztcblxuICAgICgqIGZsYXR0ZW4gb3V0IG5lc3RlZCBvcidzICopXG4gICAgbGV0IGdhdGhlcl9kaXNqdW5jdHMgdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSA6OiB0cyAtPiBsb29wIGFjYyB0c1xuICAgICAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICAgICAgfCB0IDo6IHRzIC0+IGxvb3AgKHQgOjogYWNjKSB0c1xuICAgICAgICB8IFtdIC0+IExpc3QucmV2IGFjY1xuICAgICAgaW5cbiAgICAgIGxvb3AgW10gWyB0IF1cbiAgICA7O1xuXG4gICAgKCogW2FuZF9dIGFuZCBbb3JfXSB1c2UgW2ZvbGRfcmlnaHRdIGluc3RlYWQgb2YgW2ZvbGRfbGVmdF0gdG8gYXZvaWQgcXVhZHJhdGljXG4gICAgICAgYmVoYXZpb3Igd2l0aCBbYW5kYWxzb10gb3IgW29yZWxzZV0sIHJlc3BlY3RpdmVseS4gKilcbiAgICBsZXQgYW5kXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDp0cnVlXyB+ZjphbmRhbHNvXG4gICAgbGV0IG9yXyB0cyA9IExpc3QuZm9sZF9yaWdodCB0cyB+aW5pdDpmYWxzZV8gfmY6b3JlbHNlXG5cbiAgICBsZXQgdW5hcnkgbmFtZSBhcmdzIHNleHAgPVxuICAgICAgbWF0Y2ggYXJncyB3aXRoXG4gICAgICB8IFsgeCBdIC0+IHhcbiAgICAgIHwgXyAtPlxuICAgICAgICBsZXQgbiA9IExpc3QubGVuZ3RoIGFyZ3MgaW5cbiAgICAgICAgb2Zfc2V4cF9lcnJvciAoc3ByaW50ZiBcIiVzIGV4cGVjdHMgb25lIGFyZ3VtZW50LCAlZCBmb3VuZFwiIG5hbWUgbikgc2V4cFxuICAgIDs7XG5cbiAgICBsZXQgdGVybmFyeSBuYW1lIGFyZ3Mgc2V4cCA9XG4gICAgICBtYXRjaCBhcmdzIHdpdGhcbiAgICAgIHwgWyB4OyB5OyB6IF0gLT4geCwgeSwgelxuICAgICAgfCBfIC0+XG4gICAgICAgIGxldCBuID0gTGlzdC5sZW5ndGggYXJncyBpblxuICAgICAgICBvZl9zZXhwX2Vycm9yIChzcHJpbnRmIFwiJXMgZXhwZWN0cyB0aHJlZSBhcmd1bWVudHMsICVkIGZvdW5kXCIgbmFtZSBuKSBzZXhwXG4gICAgOztcblxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl92YWx1ZSB0ID1cbiAgICAgIGxldCByZWMgYXV4IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBCYXNlIHggLT4gc2V4cF9vZl92YWx1ZSB4XG4gICAgICAgIHwgVHJ1ZSAtPiBBdG9tIFwidHJ1ZVwiXG4gICAgICAgIHwgRmFsc2UgLT4gQXRvbSBcImZhbHNlXCJcbiAgICAgICAgfCBOb3QgdCAtPiBMaXN0IFsgQXRvbSBcIm5vdFwiOyBhdXggdCBdXG4gICAgICAgIHwgSWYgKHQxLCB0MiwgdDMpIC0+IExpc3QgWyBBdG9tIFwiaWZcIjsgYXV4IHQxOyBhdXggdDI7IGF1eCB0MyBdXG4gICAgICAgIHwgQW5kIF8gYXMgdCAtPlxuICAgICAgICAgIGxldCB0cyA9IGdhdGhlcl9jb25qdW5jdHMgdCBpblxuICAgICAgICAgIExpc3QgKEF0b20gXCJhbmRcIiA6OiBMaXN0Lm1hcCB+ZjphdXggdHMpXG4gICAgICAgIHwgT3IgXyBhcyB0IC0+XG4gICAgICAgICAgbGV0IHRzID0gZ2F0aGVyX2Rpc2p1bmN0cyB0IGluXG4gICAgICAgICAgTGlzdCAoQXRvbSBcIm9yXCIgOjogTGlzdC5tYXAgfmY6YXV4IHRzKVxuICAgICAgaW5cbiAgICAgIGF1eCB0XG4gICAgOztcblxuICAgIGxldCB0X29mX3NleHAgYmFzZV9vZl9zZXhwIHNleHAgPVxuICAgICAgbGV0IGJhc2Ugc2V4cCA9IGJhc2UgKGJhc2Vfb2Zfc2V4cCBzZXhwKSBpblxuICAgICAgbGV0IHJlYyBhdXggc2V4cCA9XG4gICAgICAgIG1hdGNoIHNleHAgd2l0aFxuICAgICAgICB8IEF0b20ga3cgLT5cbiAgICAgICAgICAobWF0Y2ggU3RyaW5nLmxvd2VyY2FzZSBrdyB3aXRoXG4gICAgICAgICAgIHwgXCJ0cnVlXCIgLT4gdHJ1ZV9cbiAgICAgICAgICAgfCBcImZhbHNlXCIgLT4gZmFsc2VfXG4gICAgICAgICAgIHwgXyAtPiBiYXNlIHNleHApXG4gICAgICAgIHwgTGlzdCAoQXRvbSBrdyA6OiBhcmdzKSAtPlxuICAgICAgICAgIChtYXRjaCBTdHJpbmcubG93ZXJjYXNlIGt3IHdpdGhcbiAgICAgICAgICAgfCBcImFuZFwiIC0+IGFuZF8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwib3JcIiAtPiBvcl8gKExpc3QubWFwIH5mOmF1eCBhcmdzKVxuICAgICAgICAgICB8IFwibm90XCIgLT4gbm90XyAoYXV4ICh1bmFyeSBcIm5vdFwiIGFyZ3Mgc2V4cCkpXG4gICAgICAgICAgIHwgXCJpZlwiIC0+XG4gICAgICAgICAgICAgbGV0IHgsIHksIHogPSB0ZXJuYXJ5IFwiaWZcIiBhcmdzIHNleHAgaW5cbiAgICAgICAgICAgICBpZl8gKGF1eCB4KSAoYXV4IHkpIChhdXggeilcbiAgICAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cClcbiAgICAgICAgfCBfIC0+IGJhc2Ugc2V4cFxuICAgICAgaW5cbiAgICAgIGF1eCBzZXhwXG4gICAgOztcblxuICAgIGxldCB0X3NleHBfZ3JhbW1hciA6ICdhLiAnYSBTZXhwbGliLlNleHBfZ3JhbW1hci50IC0+ICdhIHQgU2V4cGxpYi5TZXhwX2dyYW1tYXIudCA9XG4gICAgICBsZXQgZGVmbnMgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5kZWZuIGxpc3QgPVxuICAgICAgICBsZXQgYmxhbmcgOiBTZXhwbGliLlNleHBfZ3JhbW1hci5ncmFtbWFyID0gVHljb24gKFwiYmxhbmdcIiwgWyBUeXZhciBcImFcIiBdKSBpblxuICAgICAgICBbIHsgdHljb24gPSBcImJsYW5nXCJcbiAgICAgICAgICA7IHR5dmFycyA9IFsgXCJhXCIgXVxuICAgICAgICAgIDsgZ3JhbW1hciA9XG4gICAgICAgICAgICAgIFVuaW9uXG4gICAgICAgICAgICAgICAgWyBUeXZhciBcImFcIlxuICAgICAgICAgICAgICAgIDsgVmFyaWFudFxuICAgICAgICAgICAgICAgICAgICB7IGNhc2Vfc2Vuc2l0aXZpdHkgPSBDYXNlX2luc2Vuc2l0aXZlXG4gICAgICAgICAgICAgICAgICAgIDsgY2xhdXNlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbIE5vX3RhZyB7IG5hbWUgPSBcInRydWVcIjsgY2xhdXNlX2tpbmQgPSBBdG9tX2NsYXVzZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZyB7IG5hbWUgPSBcImZhbHNlXCI7IGNsYXVzZV9raW5kID0gQXRvbV9jbGF1c2UgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcImlmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9jbGF1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGFyZ3MgPSBDb25zIChibGFuZywgQ29ucyAoYmxhbmcsIENvbnMgKGJsYW5nLCBFbXB0eSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA7IE5vX3RhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFwiYW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm9yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IGNsYXVzZV9raW5kID0gTGlzdF9jbGF1c2UgeyBhcmdzID0gTWFueSBibGFuZyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOyBOb190YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG5hbWUgPSBcIm5vdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBjbGF1c2Vfa2luZCA9IExpc3RfY2xhdXNlIHsgYXJncyA9IENvbnMgKGJsYW5nLCBFbXB0eSkgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIGluXG4gICAgICBmdW4gYmFzZV9ncmFtbWFyIC0+XG4gICAgICAgIHsgdW50eXBlZCA9IFJlY3Vyc2l2ZSAoVHljb24gKFwiYmxhbmdcIiwgWyBiYXNlX2dyYW1tYXIudW50eXBlZCBdKSwgZGVmbnMpIH1cbiAgICA7O1xuICBlbmRcbmVuZFxuXG5pbmNsdWRlIChTdGFibGUuVjEgOiBtb2R1bGUgdHlwZSBvZiBTdGFibGUuVjEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdClcblxubGV0IGNvbnN0YW50IGIgPSBpZiBiIHRoZW4gdHJ1ZV8gZWxzZSBmYWxzZV9cblxubW9kdWxlIHR5cGUgQ29uc3RydWN0b3JzID0gc2lnXG4gIHZhbCBiYXNlIDogJ2EgLT4gJ2EgdFxuICB2YWwgdHJ1ZV8gOiBfIHRcbiAgdmFsIGZhbHNlXyA6IF8gdFxuICB2YWwgY29uc3RhbnQgOiBib29sIC0+IF8gdFxuICB2YWwgbm90XyA6ICdhIHQgLT4gJ2EgdFxuICB2YWwgYW5kXyA6ICdhIHQgbGlzdCAtPiAnYSB0XG4gIHZhbCBvcl8gOiAnYSB0IGxpc3QgLT4gJ2EgdFxuICB2YWwgaWZfIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuZW5kXG5cbm1vZHVsZSBPID0gc3RydWN0XG4gIGluY2x1ZGUgVFxuXG4gIGxldCBub3QgPSBub3RfXG4gIGxldCBhbmRfID0gYW5kX1xuICBsZXQgb3JfID0gb3JfXG4gIGxldCBjb25zdGFudCA9IGNvbnN0YW50XG4gIGxldCAoICYmICkgPSBhbmRhbHNvXG4gIGxldCAoIHx8ICkgPSBvcmVsc2VcbiAgbGV0ICggPT0+ICkgYSBiID0gKG5vdCBhKSB8fCBiXG5lbmRcblxubGV0IGNvbnN0YW50X3ZhbHVlID0gZnVuY3Rpb25cbiAgfCBUcnVlIC0+IFNvbWUgdHJ1ZVxuICB8IEZhbHNlIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbigqIFt2YWx1ZXMgdF0gbGlzdHMgdGhlIGJhc2UgcHJlZGljYXRlcyBpbiBbdF0gZnJvbSBsZWZ0IHRvIHJpZ2h0ICopXG5sZXQgdmFsdWVzIHQgPVxuICBsZXQgcmVjIGxvb3AgYWNjID0gZnVuY3Rpb25cbiAgICB8IEJhc2UgdiA6OiB0cyAtPiBsb29wICh2IDo6IGFjYykgdHNcbiAgICB8IFRydWUgOjogdHMgLT4gbG9vcCBhY2MgdHNcbiAgICB8IEZhbHNlIDo6IHRzIC0+IGxvb3AgYWNjIHRzXG4gICAgfCBOb3QgdDEgOjogdHMgLT4gbG9vcCBhY2MgKHQxIDo6IHRzKVxuICAgIHwgQW5kICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IE9yICh0MSwgdDIpIDo6IHRzIC0+IGxvb3AgYWNjICh0MSA6OiB0MiA6OiB0cylcbiAgICB8IElmICh0MSwgdDIsIHQzKSA6OiB0cyAtPiBsb29wIGFjYyAodDEgOjogdDIgOjogdDMgOjogdHMpXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2NcbiAgaW5cbiAgbG9vcCBbXSBbIHQgXVxuOztcblxubW9kdWxlIEMgPSBDb250YWluZXIuTWFrZSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgVC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCByZWMgbG9vcCBhY2MgdCBwZW5kaW5nID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgQmFzZSBhIC0+IG5leHQgKGYgYWNjIGEpIHBlbmRpbmdcbiAgICAgICAgfCBUcnVlIHwgRmFsc2UgLT4gbmV4dCBhY2MgcGVuZGluZ1xuICAgICAgICB8IE5vdCB0IC0+IGxvb3AgYWNjIHQgcGVuZGluZ1xuICAgICAgICB8IEFuZCAodDEsIHQyKSB8IE9yICh0MSwgdDIpIC0+IGxvb3AgYWNjIHQxICh0MiA6OiBwZW5kaW5nKVxuICAgICAgICB8IElmICh0MSwgdDIsIHQzKSAtPiBsb29wIGFjYyB0MSAodDIgOjogdDMgOjogcGVuZGluZylcbiAgICAgIGFuZCBuZXh0IGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgIHwgdCA6OiB0cyAtPiBsb29wIGFjYyB0IHRzXG4gICAgICBpblxuICAgICAgbG9vcCBpbml0IHQgW11cbiAgICA7O1xuXG4gICAgbGV0IGl0ZXIgPSBgRGVmaW5lX3VzaW5nX2ZvbGRcbiAgICBsZXQgbGVuZ3RoID0gYERlZmluZV91c2luZ19mb2xkXG4gIGVuZClcblxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZXhpc3RzID0gQy5leGlzdHNcbmxldCBmaW5kID0gQy5maW5kXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZm9sZCA9IEMuZm9sZFxubGV0IGZvcl9hbGwgPSBDLmZvcl9hbGxcbmxldCBpc19lbXB0eSA9IEMuaXNfZW1wdHlcbmxldCBpdGVyID0gQy5pdGVyXG5sZXQgbGVuZ3RoID0gQy5sZW5ndGhcbmxldCBtZW0gPSBDLm1lbVxubGV0IHRvX2FycmF5ID0gQy50b19hcnJheVxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxuaW5jbHVkZSBNb25hZC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBULnRcblxuICAgIGxldCByZXR1cm4gPSBiYXNlXG5cbiAgICBsZXQgcmVjIGJpbmQgdCB+ZjprID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBCYXNlIHYgLT4gayB2XG4gICAgICB8IFRydWUgLT4gdHJ1ZV9cbiAgICAgIHwgRmFsc2UgLT4gZmFsc2VfXG4gICAgICB8IE5vdCB0MSAtPiBub3RfIChiaW5kIHQxIH5mOmspXG4gICAgICAoKiBVbmZvcnR1bmF0ZWx5IHdlIG5lZWQgdG8gZHVwbGljYXRlIHNvbWUgb2YgdGhlIHNob3J0LWNpcmN1aXRpbmcgZnJvbSBbYW5kYWxzb10gYW5kXG4gICAgICAgICBmcmllbmRzIGhlcmUuIEluIHByaW5jaXBsZSB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgaW52b2x2aW5nIFtMYXp5LnRdIGJ1dCB0aGVcbiAgICAgICAgIG92ZXJoZWFkIHByb2JhYmx5IHdvdWxkbid0IGJlIHdvcnRoIGl0LiAqKVxuICAgICAgfCBBbmQgKHQxLCB0MikgLT5cbiAgICAgICAgKG1hdGNoIGJpbmQgdDEgfmY6ayB3aXRoXG4gICAgICAgICB8IEZhbHNlIC0+IGZhbHNlX1xuICAgICAgICAgfCBvdGhlciAtPiBhbmRhbHNvIG90aGVyIChiaW5kIHQyIH5mOmspKVxuICAgICAgfCBPciAodDEsIHQyKSAtPlxuICAgICAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgICAgIHwgVHJ1ZSAtPiB0cnVlX1xuICAgICAgICAgfCBvdGhlciAtPiBvcmVsc2Ugb3RoZXIgKGJpbmQgdDIgfmY6aykpXG4gICAgICB8IElmICh0MSwgdDIsIHQzKSAtPlxuICAgICAgICAobWF0Y2ggYmluZCB0MSB+ZjprIHdpdGhcbiAgICAgICAgIHwgVHJ1ZSAtPiBiaW5kIHQyIH5mOmtcbiAgICAgICAgIHwgRmFsc2UgLT4gYmluZCB0MyB+ZjprXG4gICAgICAgICB8IG90aGVyIC0+IGlmXyBvdGhlciAoYmluZCB0MiB+ZjprKSAoYmluZCB0MyB+ZjprKSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBEZWZpbmVfdXNpbmdfYmluZFxuICBlbmQpXG5cbigqIHNlbWFudGljcyAqKVxuXG5sZXQgcmVjIGV2YWwgdCBiYXNlX2V2YWwgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBUcnVlIC0+IHRydWVcbiAgfCBGYWxzZSAtPiBmYWxzZVxuICB8IEFuZCAodDEsIHQyKSAtPiBldmFsIHQxIGJhc2VfZXZhbCAmJiBldmFsIHQyIGJhc2VfZXZhbFxuICB8IE9yICh0MSwgdDIpIC0+IGV2YWwgdDEgYmFzZV9ldmFsIHx8IGV2YWwgdDIgYmFzZV9ldmFsXG4gIHwgTm90IHQgLT4gbm90IChldmFsIHQgYmFzZV9ldmFsKVxuICB8IElmICh0MSwgdDIsIHQzKSAtPiBpZiBldmFsIHQxIGJhc2VfZXZhbCB0aGVuIGV2YWwgdDIgYmFzZV9ldmFsIGVsc2UgZXZhbCB0MyBiYXNlX2V2YWxcbiAgfCBCYXNlIHggLT4gYmFzZV9ldmFsIHhcbjs7XG5cbmxldCBzcGVjaWFsaXplIHQgZiA9XG4gIGJpbmQgdCB+ZjooZnVuIHYgLT5cbiAgICBtYXRjaCBmIHYgd2l0aFxuICAgIHwgYEtub3duIGMgLT4gY29uc3RhbnQgY1xuICAgIHwgYFVua25vd24gLT4gYmFzZSB2KVxuOztcblxubGV0IGV2YWxfc2V0IH51bml2ZXJzZTphbGwgc2V0X29mX2Jhc2UgPVxuICBsZXQgcmVjIGF1eCAoYiA6IF8gdCkgPVxuICAgIG1hdGNoIGIgd2l0aFxuICAgIHwgVHJ1ZSAtPiBmb3JjZSBhbGxcbiAgICB8IEZhbHNlIC0+IFNldC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihTZXQuY29tcGFyYXRvciAoZm9yY2UgYWxsKSlcbiAgICB8IEFuZCAoYSwgYikgLT4gU2V0LmludGVyIChhdXggYSkgKGF1eCBiKVxuICAgIHwgT3IgKGEsIGIpIC0+IFNldC51bmlvbiAoYXV4IGEpIChhdXggYilcbiAgICB8IE5vdCBhIC0+IFNldC5kaWZmIChmb3JjZSBhbGwpIChhdXggYSlcbiAgICB8IEJhc2UgYSAtPiBzZXRfb2ZfYmFzZSBhXG4gICAgfCBJZiAoY29uZCwgYSwgYikgLT5cbiAgICAgIGxldCBjb25kID0gYXV4IGNvbmQgaW5cbiAgICAgIFNldC51bmlvbiAoU2V0LmludGVyIGNvbmQgKGF1eCBhKSkgKFNldC5pbnRlciAoU2V0LmRpZmYgKGZvcmNlIGFsbCkgY29uZCkgKGF1eCBiKSlcbiAgaW5cbiAgYXV4XG47O1xuXG5tb2R1bGUgdHlwZSBNb25hZGljID0gc2lnXG4gIG1vZHVsZSBNIDogTW9uYWQuU1xuXG4gIHZhbCBtYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIE0udCkgLT4gJ2IgdCBNLnRcbiAgdmFsIGJpbmQgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIHQgTS50KSAtPiAnYiB0IE0udFxuICB2YWwgZXZhbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBNLnQpIC0+IGJvb2wgTS50XG5lbmRcblxubW9kdWxlIEZvcl9tb25hZCAoTSA6IE1vbmFkLlMpIDogTW9uYWRpYyB3aXRoIG1vZHVsZSBNIDo9IE0gPSBzdHJ1Y3RcbiAgb3BlbiBNLk1vbmFkX2luZml4XG5cbiAgbGV0IHJlYyBiaW5kIHQgfmYgPVxuICAgIG1hdGNoIHQgd2l0aFxuICAgIHwgQmFzZSB4IC0+IGYgeFxuICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgIHwgRmFsc2UgLT4gTS5yZXR1cm4gZmFsc2VfXG4gICAgfCBBbmQgKGEsIGIpIC0+XG4gICAgICBiaW5kIGEgfmZcbiAgICAgID4+PSAoZnVuY3Rpb25cbiAgICAgICAgfCBGYWxzZSAtPiBNLnJldHVybiBmYWxzZV9cbiAgICAgICAgfCBUcnVlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBhbmRhbHNvIGEgYilcbiAgICB8IE9yIChhLCBiKSAtPlxuICAgICAgYmluZCBhIH5mXG4gICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgIHwgVHJ1ZSAtPiBNLnJldHVybiB0cnVlX1xuICAgICAgICB8IEZhbHNlIC0+IGJpbmQgYiB+ZlxuICAgICAgICB8IGEgLT4gYmluZCBiIH5mID4+fCBmdW4gYiAtPiBvcmVsc2UgYSBiKVxuICAgIHwgTm90IGEgLT4gYmluZCBhIH5mID4+fCBub3RfXG4gICAgfCBJZiAoYSwgYiwgYykgLT5cbiAgICAgIGJpbmQgYSB+ZlxuICAgICAgPj49IChmdW5jdGlvblxuICAgICAgICB8IFRydWUgLT4gYmluZCBiIH5mXG4gICAgICAgIHwgRmFsc2UgLT4gYmluZCBjIH5mXG4gICAgICAgIHwgYSAtPiBiaW5kIGIgfmYgPj49IGZ1biBiIC0+IGJpbmQgYyB+ZiA+PnwgZnVuIGMgLT4gaWZfIGEgYiBjKVxuICA7O1xuXG4gIGxldCBtYXAgdCB+ZiA9IGJpbmQgdCB+ZjooZnVuIHggLT4gZiB4ID4+fCBiYXNlKVxuXG4gIGxldCBldmFsIHQgfmYgPVxuICAgIGJpbmQgdCB+ZjooZnVuIHggLT5cbiAgICAgIGYgeFxuICAgICAgPj58IGZ1bmN0aW9uXG4gICAgICB8IHRydWUgLT4gdHJ1ZV9cbiAgICAgIHwgZmFsc2UgLT4gZmFsc2VfKVxuICAgID4+fCBmdW4gdCAtPiBldmFsIHQgTm90aGluZy51bnJlYWNoYWJsZV9jb2RlXG4gIDs7XG5lbmRcblxuKCoqIFdlIGF2b2lkIGRlcml2aW5nIHF1aWNrY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGludmFyaWFudHMgZGVzY3JpYmVkIGluIFtUXSdzIGNvbW1lbnRzXG4gICAgYWJvdmUgYXJlIHByZXNlcnZlZC4gKilcbmxldCBxdWlja2NoZWNrX2dlbmVyYXRvciBhX2dlbmVyYXRvciA9XG4gIFF1aWNrY2hlY2suR2VuZXJhdG9yLnJlY3Vyc2l2ZV91bmlvblxuICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIH5mOmJhc2UgYV9nZW5lcmF0b3JcbiAgICA7IFF1aWNrY2hlY2suR2VuZXJhdG9yLnNpbmdsZXRvbiB0cnVlX1xuICAgIDsgUXVpY2tjaGVjay5HZW5lcmF0b3Iuc2luZ2xldG9uIGZhbHNlX1xuICAgIF1cbiAgICB+ZjooZnVuIHNlbGYgLT5cbiAgICAgIFsgUXVpY2tjaGVjay5HZW5lcmF0b3IubWFwIHNlbGYgfmY6bm90X1xuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggfHwgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAyIHNlbGYgc2VsZiB+ZjpPLiggJiYgKVxuICAgICAgOyBRdWlja2NoZWNrLkdlbmVyYXRvci5tYXAzIHNlbGYgc2VsZiBzZWxmIH5mOmlmX1xuICAgICAgXSlcbjs7XG5cbmxldCBxdWlja2NoZWNrX3Nocmlua2VyICh0eXBlIGEpIChhX3Nocmlua2VyIDogYSBRdWlja2NoZWNrLlNocmlua2VyLnQpID1cbiAgUXVpY2tjaGVjay5TaHJpbmtlci5maXhlZF9wb2ludCAoZnVuIHNlbGYgLT5cbiAgICBsZXQgYmlub3Agb3BlcmF0b3IgbGVmdCByaWdodCA9XG4gICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICBbIFNlcXVlbmNlLnNpbmdsZXRvbiBsZWZ0XG4gICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHJpZ2h0XG4gICAgICAgIDsgU2VxdWVuY2UubWFwIChRdWlja2NoZWNrLlNocmlua2VyLnNocmluayBzZWxmIGxlZnQpIH5mOihmdW4gbGVmdCAtPlxuICAgICAgICAgICAgb3BlcmF0b3IgbGVmdCByaWdodClcbiAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgcmlnaHQpIH5mOihmdW4gcmlnaHQgLT5cbiAgICAgICAgICAgIG9wZXJhdG9yIGxlZnQgcmlnaHQpXG4gICAgICAgIF1cbiAgICBpblxuICAgIFF1aWNrY2hlY2suU2hyaW5rZXIuY3JlYXRlIChmdW4gdCAtPlxuICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICB8IFRydWUgfCBGYWxzZSAtPiBTZXF1ZW5jZS5lbXB0eVxuICAgICAgfCBCYXNlIGEgLT4gU2VxdWVuY2UubWFwIH5mOmJhc2UgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIGFfc2hyaW5rZXIgYSlcbiAgICAgIHwgT3IgKGxlZnQsIHJpZ2h0KSAtPiBiaW5vcCBPLiggfHwgKSBsZWZ0IHJpZ2h0XG4gICAgICB8IEFuZCAobGVmdCwgcmlnaHQpIC0+IGJpbm9wIE8uKCAmJiApIGxlZnQgcmlnaHRcbiAgICAgIHwgTm90IHQgLT5cbiAgICAgICAgU2VxdWVuY2UuYXBwZW5kXG4gICAgICAgICAgKFNlcXVlbmNlLnNpbmdsZXRvbiB0KVxuICAgICAgICAgIChTZXF1ZW5jZS5tYXAgfmY6bm90XyAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0KSlcbiAgICAgIHwgSWYgKGlmXywgdGhlbl8sIGVsc2VfKSAtPlxuICAgICAgICBTZXF1ZW5jZS5yb3VuZF9yb2JpblxuICAgICAgICAgIFsgU2VxdWVuY2Uuc2luZ2xldG9uIGlmX1xuICAgICAgICAgIDsgU2VxdWVuY2Uuc2luZ2xldG9uIHRoZW5fXG4gICAgICAgICAgOyBTZXF1ZW5jZS5zaW5nbGV0b24gZWxzZV9cbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiBpZl8pIH5mOihmdW4gaWZfIC0+XG4gICAgICAgICAgICAgIE8uaWZfIGlmXyB0aGVuXyBlbHNlXylcbiAgICAgICAgICA7IFNlcXVlbmNlLm1hcCAoUXVpY2tjaGVjay5TaHJpbmtlci5zaHJpbmsgc2VsZiB0aGVuXykgfmY6KGZ1biB0aGVuXyAtPlxuICAgICAgICAgICAgICBPLmlmXyBpZl8gdGhlbl8gZWxzZV8pXG4gICAgICAgICAgOyBTZXF1ZW5jZS5tYXAgKFF1aWNrY2hlY2suU2hyaW5rZXIuc2hyaW5rIHNlbGYgZWxzZV8pIH5mOihmdW4gZWxzZV8gLT5cbiAgICAgICAgICAgICAgTy5pZl8gaWZfIHRoZW5fIGVsc2VfKVxuICAgICAgICAgIF0pKVxuOztcblxubGV0IHF1aWNrY2hlY2tfb2JzZXJ2ZXIgKHR5cGUgYSkgKGFfb2JzZXJ2ZXIgOiBhIFF1aWNrY2hlY2suT2JzZXJ2ZXIudCkgPVxuICBCYXNlX3F1aWNrY2hlY2suT2JzZXJ2ZXIuY3JlYXRlIChmdW4gdCB+c2l6ZSB+aGFzaCAtPlxuICAgIGhhc2hfZm9sZF90XG4gICAgICAoZnVuIGhhc2ggYSAtPiBRdWlja2NoZWNrLk9ic2VydmVyLm9ic2VydmUgYV9vYnNlcnZlciBhIH5zaXplIH5oYXNoKVxuICAgICAgaGFzaFxuICAgICAgdClcbjs7XG4iLCIoKiBDb252ZXJzaW9ucyBiZXR3ZWVuIHVuaXRzIG9mIG1lYXN1cmUgYmFzZWQgb24gYnl0ZXMuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcbm1vZHVsZSBSZXByID0gSW50NjNcbm1vZHVsZSBUID0gQnl0ZV91bml0czBcbmluY2x1ZGUgKFQgOiBtb2R1bGUgdHlwZSBvZiBUIHdpdGggbW9kdWxlIFJlcHIgOj0gUmVwcilcbmluY2x1ZGUgQ29tcGFyYWJsZS5NYWtlX3BsYWluIChUKVxuaW5jbHVkZSBIYXNoYWJsZS5NYWtlX3BsYWluIChUKVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICggLSApIGEgYiA9IG9mX3JlcHIgKFJlcHIuKCAtICkgKHRvX3JlcHIgYSkgKHRvX3JlcHIgYikpXG4gIGxldCAoICsgKSBhIGIgPSBvZl9yZXByIChSZXByLiggKyApICh0b19yZXByIGEpICh0b19yZXByIGIpKVxuICBsZXQgKCAvLyApIGEgYiA9IFJlcHIuKCAvLyApICh0b19yZXByIGEpICh0b19yZXByIGIpXG5cbiAgbGV0ICggLyApIHQgcyA9IG9mX3JlcHIgKFJlcHIub2ZfZmxvYXQgKFJlcHIudG9fZmxvYXQgKHRvX3JlcHIgdCkgLy4gcykpXG4gIGxldCAoICogKSB0IHMgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IChSZXByLnRvX2Zsb2F0ICh0b19yZXByIHQpICouIHMpKVxuZW5kXG5cbmluY2x1ZGUgSW5maXhcblxubGV0IHplcm8gPSBvZl9yZXByIFJlcHIuemVyb1xubGV0IG1pbl92YWx1ZSA9IG9mX3JlcHIgUmVwci5taW5fdmFsdWVcbmxldCBtYXhfdmFsdWUgPSBvZl9yZXByIFJlcHIubWF4X3ZhbHVlXG5sZXQgc2NhbGUgPSBJbmZpeC4oICogKVxubGV0IGlzY2FsZSB0IHMgPSBvZl9yZXByIChSZXByLiggKiApICh0b19yZXByIHQpIChSZXByLm9mX2ludCBzKSlcbmxldCBieXRlc19pbnRfZXhuID0gVC5ieXRlc19pbnRfZXhuXG5sZXQgYnl0ZXNfaW50NjMgPSB0b19yZXByXG5sZXQgYnl0ZXNfaW50NjQgdCA9IFJlcHIudG9faW50NjQgKHRvX3JlcHIgdClcbmxldCBieXRlc19mbG9hdCB0ID0gUmVwci50b19mbG9hdCAodG9fcmVwciB0KVxubGV0IG9mX2J5dGVzX2ludCBiID0gb2ZfcmVwciAoUmVwci5vZl9pbnQgYilcbmxldCBvZl9ieXRlc19pbnQ2MyA9IG9mX3JlcHJcbmxldCBvZl9ieXRlc19pbnQ2NF9leG4gYiA9IG9mX3JlcHIgKFJlcHIub2ZfaW50NjRfZXhuIGIpXG5sZXQgb2ZfYnl0ZXNfZmxvYXRfZXhuIGIgPSBvZl9yZXByIChSZXByLm9mX2Zsb2F0IGIpXG5cbmxldFtAZGVwcmVjYXRlZFxuICBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW2J5dGVzX2ludF9leG5dLCBbYnl0ZXNfaW50NjNdLCBbYnl0ZXNfaW50NjRdIG9yIFtieXRlc19mbG9hdF0gXFxcbiAgIGFzIGFwcHJvcHJpYXRlLlwiXSBieXRlc1xuICA9XG4gIGJ5dGVzX2Zsb2F0XG47O1xuXG5sZXRbQGRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc19pbnRdLCBbb2ZfYnl0ZXNfaW50NjNdLCBbb2ZfYnl0ZXNfaW50NjRfZXhuXSBvciBcXFxuICAgW29mX2J5dGVzX2Zsb2F0X2V4bl0gYXMgYXBwcm9wcmlhdGUuXCJdIG9mX2J5dGVzXG4gID1cbiAgb2ZfYnl0ZXNfZmxvYXRfZXhuXG47O1xuXG5sZXQga2lsb2J5dGUgOiB0ID0gb2ZfYnl0ZXNfaW50IDEwMjRcbmxldCBtZWdhYnl0ZSA9IGlzY2FsZSBraWxvYnl0ZSAxMDI0XG5sZXQgZ2lnYWJ5dGUgPSBpc2NhbGUgbWVnYWJ5dGUgMTAyNFxubGV0IHRlcmFieXRlID0gaXNjYWxlIGdpZ2FieXRlIDEwMjRcbmxldCBwZXRhYnl0ZSA9IGlzY2FsZSB0ZXJhYnl0ZSAxMDI0XG5sZXQgZXhhYnl0ZSA9IGlzY2FsZSBwZXRhYnl0ZSAxMDI0XG5cbmxldCB3b3JkID1cbiAgbGV0IG1vZHVsZSBXID0gV29yZF9zaXplIGluXG4gIG1hdGNoIFcud29yZF9zaXplIHdpdGhcbiAgfCBXLlczMiAtPiBvZl9ieXRlc19pbnQgNFxuICB8IFcuVzY0IC0+IG9mX2J5dGVzX2ludCA4XG47O1xuXG5sZXQga2lsb2J5dGVzIHQgOiBmbG9hdCA9IEluZml4LiggLy8gKSB0IGtpbG9ieXRlXG5sZXQgbWVnYWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBtZWdhYnl0ZVxubGV0IGdpZ2FieXRlcyB0ID0gSW5maXguKCAvLyApIHQgZ2lnYWJ5dGVcbmxldCB0ZXJhYnl0ZXMgdCA9IEluZml4LiggLy8gKSB0IHRlcmFieXRlXG5sZXQgcGV0YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBwZXRhYnl0ZVxubGV0IGV4YWJ5dGVzIHQgPSBJbmZpeC4oIC8vICkgdCBleGFieXRlXG5sZXQgd29yZHNfaW50X2V4biB0ID0gUmVwci50b19pbnRfZXhuIChSZXByLiggLyApICh0b19yZXByIHQpICh0b19yZXByIHdvcmQpKVxubGV0IHdvcmRzX2Zsb2F0IHQgPSBJbmZpeC4oIC8vICkgdCB3b3JkXG5sZXQgb2Zfa2lsb2J5dGVzIHQgOiB0ID0gSW5maXguKCAqICkga2lsb2J5dGUgdFxubGV0IG9mX21lZ2FieXRlcyB0ID0gSW5maXguKCAqICkgbWVnYWJ5dGUgdFxubGV0IG9mX2dpZ2FieXRlcyB0ID0gSW5maXguKCAqICkgZ2lnYWJ5dGUgdFxubGV0IG9mX3RlcmFieXRlcyB0ID0gSW5maXguKCAqICkgdGVyYWJ5dGUgdFxubGV0IG9mX3BldGFieXRlcyB0ID0gSW5maXguKCAqICkgcGV0YWJ5dGUgdFxubGV0IG9mX2V4YWJ5dGVzIHQgPSBJbmZpeC4oICogKSBleGFieXRlIHRcbmxldCBvZl93b3Jkc19pbnQgdCA9IGlzY2FsZSB3b3JkIHRcbmxldCBvZl93b3Jkc19mbG9hdF9leG4gdCA9IEluZml4LiggKiApIHdvcmQgdFxuXG5sZXRbQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFt3b3Jkc19pbnRfZXhuXSBvciBbd29yZHNfZmxvYXRdXCJdIHdvcmRzID1cbiAgd29yZHNfZmxvYXRcbjs7XG5cbmxldFtAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE5LTAxXSBVc2UgW29mX3dvcmRzX2ludF0gb3IgW29mX3dvcmRzX2Zsb2F0X2V4bl1cIl0gb2Zfd29yZHMgPVxuICBvZl93b3Jkc19mbG9hdF9leG5cbjs7XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgaWYgSW50LiggPCApIGxlbmd0aCAyXG4gIHRoZW4gaW52YWxpZF9hcmdmIFwiJyVzJyBwYXNzZWQgdG8gQnl0ZV91bml0cy5vZl9zdHJpbmcgLSB0b28gc2hvcnRcIiBzICgpO1xuICBsZXQgYmFzZV9zdHIgPSBTdHJpbmcuc3ViIHMgfnBvczowIH5sZW46KEludC4oIC0gKSBsZW5ndGggMSkgaW5cbiAgbGV0IGV4dF9jaGFyID0gQ2hhci5sb3dlcmNhc2Ugcy5bSW50LiggLSApIGxlbmd0aCAxXSBpblxuICBsZXQgYmFzZSA9XG4gICAgdHJ5IEZsb2F0Lm9mX3N0cmluZyBiYXNlX3N0ciB3aXRoXG4gICAgfCBfIC0+XG4gICAgICBpbnZhbGlkX2FyZ2ZcbiAgICAgICAgXCInJXMnIHBhc3NlZCB0byBCeXRlX3VuaXRzLm9mX3N0cmluZyAtICVzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gZmxvYXQgXCJcbiAgICAgICAgc1xuICAgICAgICBiYXNlX3N0clxuICAgICAgICAoKVxuICBpblxuICBtYXRjaCBleHRfY2hhciB3aXRoXG4gIHwgJ2InIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biBiYXNlXG4gIHwgJ2snIC0+IG9mX2tpbG9ieXRlcyBiYXNlXG4gIHwgJ20nIC0+IG9mX21lZ2FieXRlcyBiYXNlXG4gIHwgJ2cnIC0+IG9mX2dpZ2FieXRlcyBiYXNlXG4gIHwgJ3QnIC0+IG9mX3RlcmFieXRlcyBiYXNlXG4gIHwgJ3AnIC0+IG9mX3BldGFieXRlcyBiYXNlXG4gIHwgJ2UnIC0+IG9mX2V4YWJ5dGVzIGJhc2VcbiAgfCAndycgLT4gb2Zfd29yZHMgYmFzZVxuICB8IGV4dCAtPlxuICAgIGludmFsaWRfYXJnZiBcIiclcycgcGFzc2VkIHRvIEJ5dGVfdW5pdHMub2Zfc3RyaW5nIC0gaWxsZWdhbCBleHRlbnNpb24gJWNcIiBzIGV4dCAoKVxuOztcblxubGV0IGFyZ190eXBlID0gQ29tbWFuZC5BcmdfdHlwZS5jcmVhdGUgb2Zfc3RyaW5nXG5cbmxldCBsYXJnZXN0X21lYXN1cmUgdCA9XG4gIGxldCB0X2FicyA9IG9mX3JlcHIgKFJlcHIuYWJzICh0b19yZXByIHQpKSBpblxuICBpZiB0X2FicyA+PSBleGFieXRlXG4gIHRoZW4gYEV4YWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gcGV0YWJ5dGVcbiAgdGhlbiBgUGV0YWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gdGVyYWJ5dGVcbiAgdGhlbiBgVGVyYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gZ2lnYWJ5dGVcbiAgdGhlbiBgR2lnYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0gbWVnYWJ5dGVcbiAgdGhlbiBgTWVnYWJ5dGVzXG4gIGVsc2UgaWYgdF9hYnMgPj0ga2lsb2J5dGVcbiAgdGhlbiBgS2lsb2J5dGVzXG4gIGVsc2UgYEJ5dGVzXG47O1xuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gICgqIFNoYXJlIHRoZSBjb21tb24gW29mX3NleHBdIGNvZGUgZm9yIFtWMV0gYW5kIFtWMl0uICopXG4gIG1vZHVsZSBPZl9zZXhwX3YxX3YyIDogc2lnXG4gICAgdmFsIHRfb2Zfc2V4cCA6IFNleHAudCAtPiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIGxldCBub19tYXRjaCAoKSA9IGZhaWx3aXRoIFwiTm90IGEgcmVjb2duaXplZCBbQnl0ZV91bml0cy50XSByZXByZXNlbnRhdGlvblwiXG5cbiAgICBsZXQgb2ZfdmFsdWVfc2V4cF9hbmRfdW5pdF9uYW1lIHZhbF9zZXhwID0gZnVuY3Rpb25cbiAgICAgIHwgXCJCeXRlc1wiIC0+XG4gICAgICAgICh0cnkgb2ZfYnl0ZXNfaW50NjMgKEludDYzLnRfb2Zfc2V4cCB2YWxfc2V4cCkgd2l0aFxuICAgICAgICAgfCBfIC0+IG9mX2J5dGVzX2Zsb2F0X2V4biAoRmxvYXQudF9vZl9zZXhwIHZhbF9zZXhwKSlcbiAgICAgIHwgXCJLaWxvYnl0ZXNcIiAtPiBvZl9raWxvYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiTWVnYWJ5dGVzXCIgLT4gb2ZfbWVnYWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIkdpZ2FieXRlc1wiIC0+IG9mX2dpZ2FieXRlcyAoZmxvYXRfb2Zfc2V4cCB2YWxfc2V4cClcbiAgICAgIHwgXCJUZXJhYnl0ZXNcIiAtPiBvZl90ZXJhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiUGV0YWJ5dGVzXCIgLT4gb2ZfcGV0YWJ5dGVzIChmbG9hdF9vZl9zZXhwIHZhbF9zZXhwKVxuICAgICAgfCBcIkV4YWJ5dGVzXCIgLT4gb2ZfZXhhYnl0ZXMgKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IFwiV29yZHNcIiAtPiBvZl93b3Jkc19mbG9hdF9leG4gKGZsb2F0X29mX3NleHAgdmFsX3NleHApXG4gICAgICB8IF8gLT4gbm9fbWF0Y2ggKClcbiAgICA7O1xuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IGZ1bmN0aW9uXG4gICAgICB8IFNleHAuQXRvbSBzdHIgLT4gb2Zfc3RyaW5nIHN0clxuICAgICAgfCBTZXhwLkxpc3QgWyBTZXhwLkF0b20gdW5pdF9uYW1lOyB2YWx1ZSBdIC0+XG4gICAgICAgIG9mX3ZhbHVlX3NleHBfYW5kX3VuaXRfbmFtZSB2YWx1ZSB1bml0X25hbWVcbiAgICAgIHwgXyAtPiBub19tYXRjaCAoKVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgdHJ5IHRfb2Zfc2V4cCBzZXhwIHdpdGhcbiAgICAgIHwgZXhuIC0+IHJhaXNlIChTZXhwLk9mX3NleHBfZXJyb3IgKGV4biwgc2V4cCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICAgIGluY2x1ZGVcbiAgICAgIEJpbmFibGUwLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdXG4gICAgICAgIChGbG9hdClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgICAgICAgICBsZXQgdG9fYmluYWJsZSA9IGJ5dGVzX2Zsb2F0XG4gICAgICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9ieXRlc19mbG9hdF9leG5cbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgKCogVjEgb25seSBnb2VzIHVwIHRvIGdpZ2FieXRlcyAqKVxuICAgICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgICAgfCBgQnl0ZXMgLT4gWyVzZXhwIGBCeXRlcyAoYnl0ZXNfZmxvYXQgdCA6IGZsb2F0KV1cbiAgICAgIHwgYEtpbG9ieXRlcyAtPiBbJXNleHAgYEtpbG9ieXRlcyAoa2lsb2J5dGVzIHQgOiBmbG9hdCldXG4gICAgICB8IGBNZWdhYnl0ZXMgLT4gWyVzZXhwIGBNZWdhYnl0ZXMgKG1lZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgICAgfCBgR2lnYWJ5dGVzIHwgYFRlcmFieXRlcyB8IGBQZXRhYnl0ZXMgfCBgRXhhYnl0ZXMgLT5cbiAgICAgICAgWyVzZXhwIGBHaWdhYnl0ZXMgKGdpZ2FieXRlcyB0IDogZmxvYXQpXVxuICAgIDs7XG5cbiAgICBsZXQgdG9fc3RyaW5nIHQgPSBTdHJpbmcubG93ZXJjYXNlICh0b19zdHJpbmcgdClcbiAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG5cbiAgICAoKiBUaGlzIHRlc3QgZG9jdW1lbnRzIHRoZSBvcmlnaW5hbCB0by1zdHJpbmcgcmVwcmVzZW50YXRpb24gYW5kIGZhaWxzIHVuZGVyIGphdmFzY3JpcHRcbiAgICAgICBkdWUgdG8gZGlmZmVyZW5jZXMgaW4gdGhlIHJvdW5kaW5nLiAqKVxuICAgIGxldCVleHBlY3RfdGVzdCAoXyBbQHRhZ3MgXCJuby1qc1wiXSkgPVxuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCAxMDAwYiB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDIzKTtcbiAgICAgIFslZXhwZWN0IHt8IDEwMjNiIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMWsgfH1dO1xuICAgICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyNSk7XG4gICAgICBbJWV4cGVjdCB7fCAxLjAwMDk4ayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxNTAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDEuNDY0ODRrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNzY1NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMCk7XG4gICAgICBbJWV4cGVjdCB7fCA5Ny42NTYyayB8fV07XG4gICAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDk3Ni41NjJrIHx9XTtcbiAgICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMDAwMDAwKTtcbiAgICAgIFslZXhwZWN0IHt8IDkuNTM2NzRtIHx9XVxuICAgIDs7XG5cbiAgICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgICAgbWF0Y2ggc2V4cCB3aXRoXG4gICAgICB8IFNleHAuQXRvbSBzIC0+XG4gICAgICAgICh0cnkgb2Zfc3RyaW5nIHMgd2l0aFxuICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IG1zZyAtPiBvZl9zZXhwX2Vycm9yIG1zZyBzZXhwKVxuICAgICAgfCBTZXhwLkxpc3QgXyAtPiB0X29mX3NleHAgc2V4cFxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmUsIGhhc2hdXG5cbiAgICBpbmNsdWRlXG4gICAgICBCaW5hYmxlMC5PZl9iaW5hYmxlX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgICAgICAoSW50NjMpXG4gICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgbGV0IHRvX2JpbmFibGUgPSBieXRlc19pbnQ2M1xuICAgICAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYnl0ZXNfaW50NjNcbiAgICAgICAgZW5kKVxuXG4gICAgaW5jbHVkZSBPZl9zZXhwX3YxX3YyXG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgYEJ5dGVzIChieXRlc19pbnQ2MyB0IDogSW50NjMudCldXG4gIGVuZFxuZW5kXG5cbmxldCB0b19zdHJpbmdfaHVtID0gVC50b19zdHJpbmdcblxubW9kdWxlIFNob3J0ID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjIHQgPSB0XG5cbiAgbGV0IHRvX3N0cmluZyB0ID1cbiAgICBsZXQgdG9fdW5pdHNfc3RyIHRvX3VuaXQgZXh0ID1cbiAgICAgIGxldCBmID0gdG9fdW5pdCB0IGluXG4gICAgICBsZXQgZl9hYnMgPSBGbG9hdC5hYnMgZiBpblxuICAgICAgaWYgRmxvYXQuUm9idXN0bHlfY29tcGFyYWJsZS4oID49LiApIGZfYWJzIDEwMC5cbiAgICAgIHRoZW4gc3ByaW50ZiBcIiUuMGYlY1wiIGYgZXh0XG4gICAgICBlbHNlIGlmIEZsb2F0LlJvYnVzdGx5X2NvbXBhcmFibGUuKCA+PS4gKSBmX2FicyAxMC5cbiAgICAgIHRoZW4gc3ByaW50ZiBcIiUuMWYlY1wiIGYgZXh0XG4gICAgICBlbHNlIHNwcmludGYgXCIlLjJmJWNcIiBmIGV4dFxuICAgIGluXG4gICAgbWF0Y2ggbGFyZ2VzdF9tZWFzdXJlIHQgd2l0aFxuICAgIHwgYEJ5dGVzIC0+IHNwcmludGYgXCIlZEJcIiAoYnl0ZXNfaW50X2V4biB0KVxuICAgIHwgYEtpbG9ieXRlcyAtPiB0b191bml0c19zdHIga2lsb2J5dGVzICdLJ1xuICAgIHwgYE1lZ2FieXRlcyAtPiB0b191bml0c19zdHIgbWVnYWJ5dGVzICdNJ1xuICAgIHwgYEdpZ2FieXRlcyAtPiB0b191bml0c19zdHIgZ2lnYWJ5dGVzICdHJ1xuICAgIHwgYFRlcmFieXRlcyAtPiB0b191bml0c19zdHIgdGVyYWJ5dGVzICdUJ1xuICAgIHwgYFBldGFieXRlcyAtPiB0b191bml0c19zdHIgcGV0YWJ5dGVzICdQJ1xuICAgIHwgYEV4YWJ5dGVzIC0+IHRvX3VuaXRzX3N0ciBleGFieXRlcyAnRSdcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHQgPSBTZXhwLkF0b20gKHRvX3N0cmluZyB0KVxuXG4gIGxldCVleHBlY3RfdGVzdCBfID1cbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwKTtcbiAgICBbJWV4cGVjdCB7fCAxMDAwQiB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAyMyk7XG4gICAgWyVleHBlY3Qge3wgMTAyM0IgfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXNfaW50IDEwMjQpO1xuICAgIFslZXhwZWN0IHt8IDEuMDBLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDI1KTtcbiAgICBbJWV4cGVjdCB7fCAxLjAwSyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlc19pbnQgMTAwMDApO1xuICAgIFslZXhwZWN0IHt8IDkuNzdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDApO1xuICAgIFslZXhwZWN0IHt8IDk3LjdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwKTtcbiAgICBbJWV4cGVjdCB7fCA5NzdLIHx9XTtcbiAgICBwcmludGYgIVwiJXt9XCIgKG9mX2J5dGVzX2ludCAxMDAwMDAwMCk7XG4gICAgWyVleHBlY3Qge3wgOS41NE0gfH1dO1xuICAgIHByaW50ZiAhXCIle31cIiAob2ZfYnl0ZXMgMTAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5LjMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAxMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgOTMxRyB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAxMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA5MC45VCB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAxMDAwMDAwMDAwMDAwMDAwMDAuKTtcbiAgICBbJWV4cGVjdCB7fCA4OC44UCB8fV07XG4gICAgcHJpbnRmICFcIiV7fVwiIChvZl9ieXRlcyAzMDAwMDAwMDAwMDAwMDAwMDAwLik7XG4gICAgWyVleHBlY3Qge3wgMi42MEUgfH1dO1xuICAgICgpXG4gIDs7XG5lbmRcblxubGV0IHRvX3N0cmluZ19zaG9ydCA9IFNob3J0LnRvX3N0cmluZ1xuXG5sZXRbQGRlcHJlY2F0ZWRcbiAgXCJbc2luY2UgMjAxOS0wMV0gVXNlIFtvZl9ieXRlc10sIFtvZl9raWxvYnl0ZXNdLCBbb2ZfbWVnYWJ5dGVzXSwgZXRjIGFzIGFwcHJvcHJpYXRlLlwiXSBjcmVhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlXG4gID1cbiAgbWF0Y2ggdW5pdHMgd2l0aFxuICB8IGBCeXRlcyAtPiBvZl9ieXRlc19mbG9hdF9leG4gdmFsdWVcbiAgfCBgS2lsb2J5dGVzIC0+IG9mX2tpbG9ieXRlcyB2YWx1ZVxuICB8IGBNZWdhYnl0ZXMgLT4gb2ZfbWVnYWJ5dGVzIHZhbHVlXG4gIHwgYEdpZ2FieXRlcyAtPiBvZl9naWdhYnl0ZXMgdmFsdWVcbiAgfCBgV29yZHMgLT4gb2Zfd29yZHNfZmxvYXRfZXhuIHZhbHVlXG47O1xuXG5pbmNsdWRlXG4gIFF1aWNrY2hlY2thYmxlLk9mX3F1aWNrY2hlY2thYmxlXG4gICAgKFJlcHIpXG4gICAgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IHRcblxuICAgICAgbGV0IG9mX3F1aWNrY2hlY2thYmxlID0gb2ZfcmVwclxuICAgICAgbGV0IHRvX3F1aWNrY2hlY2thYmxlID0gdG9fcmVwclxuICAgIGVuZClcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSAnYSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5leHRlcm5hbCBpc19oZWFwX2Jsb2NrIDogQ2FtbC5PYmoudCAtPiBib29sID0gXCJjb3JlX2hlYXBfYmxvY2tfaXNfaGVhcF9ibG9ja1wiIFtAQG5vYWxsb2NdXG5cbmxldCBpc19vayB2ID0gaXNfaGVhcF9ibG9jayAoQ2FtbC5PYmoucmVwciB2KVxubGV0IGNyZWF0ZSB2ID0gaWYgaXNfb2sgdiB0aGVuIFNvbWUgdiBlbHNlIE5vbmVcblxubGV0IGNyZWF0ZV9leG4gdiA9XG4gIGlmIGlzX29rIHYgdGhlbiB2IGVsc2UgZmFpbHdpdGggXCJIZWFwX2Jsb2NrLmNyZWF0ZV9leG4gY2FsbGVkIHdpdGggbm9uIGhlYXAgYmxvY2tcIlxuOztcblxubGV0IHZhbHVlIHQgPSB0XG5sZXQgYnl0ZXNfcGVyX3dvcmQgPSBXb3JkX3NpemUuKG51bV9iaXRzIHdvcmRfc2l6ZSkgLyA4XG5cbmxldCBieXRlcyAodHlwZSBhKSAodCA6IGEgdCkgPVxuICAoQ2FtbC5PYmouc2l6ZSAoQ2FtbC5PYmoucmVwciAodCA6IGEgdCkpICsgMSkgKiBieXRlc19wZXJfd29yZFxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RhYmxlID0gc3RydWN0XG4gIG1vZHVsZSBBbGxvY2F0aW9uX3BvbGljeSA9IHN0cnVjdFxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgfCBOZXh0X2ZpdFxuICAgICAgICB8IEZpcnN0X2ZpdFxuICAgICAgICB8IEJlc3RfZml0XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNCwgMTIsIDApXVxuXG4gICAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBDYW1sLkdjLnN0YXQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IG1pbm9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBwcm9tb3RlZF93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1pbm9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgaGVhcF9jaHVua3MgOiBpbnRcbiAgICAgICAgOyBsaXZlX3dvcmRzIDogaW50XG4gICAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBmcmVlX3dvcmRzIDogaW50XG4gICAgICAgIDsgZnJlZV9ibG9ja3MgOiBpbnRcbiAgICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgICAgOyBmcmFnbWVudHMgOiBpbnRcbiAgICAgICAgOyBjb21wYWN0aW9ucyA6IGludFxuICAgICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICAgIDsgc3RhY2tfc2l6ZSA6IGludFxuICAgICAgICA7IGZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwXVxuICAgIGVuZFxuXG4gICAgWyUlZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBWMiA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gQ2FtbC5HYy5zdGF0ID1cbiAgICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICAgIDsgcHJvbW90ZWRfd29yZHMgOiBmbG9hdFxuICAgICAgICA7IG1ham9yX3dvcmRzIDogZmxvYXRcbiAgICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgICA7IG1ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICAgIDsgaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICAgIDsgbGl2ZV93b3JkcyA6IGludFxuICAgICAgICA7IGxpdmVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgICA7IGZyZWVfYmxvY2tzIDogaW50XG4gICAgICAgIDsgbGFyZ2VzdF9mcmVlIDogaW50XG4gICAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICAgIDsgY29tcGFjdGlvbnMgOiBpbnRcbiAgICAgICAgOyB0b3BfaGVhcF93b3JkcyA6IGludFxuICAgICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBlcXVhbCwgaGFzaCwgc2V4cF1cbiAgICBlbmRcblxuICAgIFslJWVuZGlmXVxuICBlbmRcblxuICBtb2R1bGUgQ29udHJvbCA9IHN0cnVjdFxuICAgIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIFtAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuICAgICAgdHlwZSB0ID0gQ2FtbC5HYy5jb250cm9sID1cbiAgICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHNwYWNlX292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyBtdXRhYmxlIHN0YWNrX2xpbWl0IDogaW50XG4gICAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gICAgZW5kXG5cbiAgICBbJSUgZWxzZV1cblxuICAgIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgICAgW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG4gICAgICB0eXBlIHQgPSBDYW1sLkdjLmNvbnRyb2wgPVxuICAgICAgICB7IG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgICA7IG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgICAgOyB2ZXJib3NlIDogaW50XG4gICAgICAgIDsgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgICAgOyBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgICA7IHdpbmRvd19zaXplIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICAgIDsgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgZXF1YWwsIHNleHBdXG4gICAgZW5kXG5cbiAgICBbJSVlbmRpZl1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBDYW1sLkdjXG5cbm1vZHVsZSBTdGF0ID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgWyUlaWYgb2NhbWxfdmVyc2lvbiA8ICg0LCAxMiwgMCldXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBoYXNoLCBiaW5faW8sIHNleHAsIGZpZWxkc11cblxuICAgIFslJWVsc2VdXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLnN0YXQgPVxuICAgICAgeyBtaW5vcl93b3JkcyA6IGZsb2F0XG4gICAgICA7IHByb21vdGVkX3dvcmRzIDogZmxvYXRcbiAgICAgIDsgbWFqb3Jfd29yZHMgOiBmbG9hdFxuICAgICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA6IGludFxuICAgICAgOyBoZWFwX3dvcmRzIDogaW50XG4gICAgICA7IGhlYXBfY2h1bmtzIDogaW50XG4gICAgICA7IGxpdmVfd29yZHMgOiBpbnRcbiAgICAgIDsgbGl2ZV9ibG9ja3MgOiBpbnRcbiAgICAgIDsgZnJlZV93b3JkcyA6IGludFxuICAgICAgOyBmcmVlX2Jsb2NrcyA6IGludFxuICAgICAgOyBsYXJnZXN0X2ZyZWUgOiBpbnRcbiAgICAgIDsgZnJhZ21lbnRzIDogaW50XG4gICAgICA7IGNvbXBhY3Rpb25zIDogaW50XG4gICAgICA7IHRvcF9oZWFwX3dvcmRzIDogaW50XG4gICAgICA7IHN0YWNrX3NpemUgOiBpbnRcbiAgICAgIDsgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaCwgc2V4cF9vZiwgZmllbGRzXVxuXG4gICAgWyUlZW5kaWZdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZV9wbGFpbiAoVClcblxuICBbJSVpZiBvY2FtbF92ZXJzaW9uIDwgKDQsIDEyLCAwKV1cblxuICBsZXQgZGlmZiBhZnRlciBiZWZvcmUgPVxuICAgIHsgbWlub3Jfd29yZHMgPSBhZnRlci5taW5vcl93b3JkcyAtLiBiZWZvcmUubWlub3Jfd29yZHNcbiAgICA7IHByb21vdGVkX3dvcmRzID0gYWZ0ZXIucHJvbW90ZWRfd29yZHMgLS4gYmVmb3JlLnByb21vdGVkX3dvcmRzXG4gICAgOyBtYWpvcl93b3JkcyA9IGFmdGVyLm1ham9yX3dvcmRzIC0uIGJlZm9yZS5tYWpvcl93b3Jkc1xuICAgIDsgbWlub3JfY29sbGVjdGlvbnMgPSBhZnRlci5taW5vcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5taW5vcl9jb2xsZWN0aW9uc1xuICAgIDsgbWFqb3JfY29sbGVjdGlvbnMgPSBhZnRlci5tYWpvcl9jb2xsZWN0aW9ucyAtIGJlZm9yZS5tYWpvcl9jb2xsZWN0aW9uc1xuICAgIDsgaGVhcF93b3JkcyA9IGFmdGVyLmhlYXBfd29yZHMgLSBiZWZvcmUuaGVhcF93b3Jkc1xuICAgIDsgaGVhcF9jaHVua3MgPSBhZnRlci5oZWFwX2NodW5rcyAtIGJlZm9yZS5oZWFwX2NodW5rc1xuICAgIDsgbGl2ZV93b3JkcyA9IGFmdGVyLmxpdmVfd29yZHMgLSBiZWZvcmUubGl2ZV93b3Jkc1xuICAgIDsgbGl2ZV9ibG9ja3MgPSBhZnRlci5saXZlX2Jsb2NrcyAtIGJlZm9yZS5saXZlX2Jsb2Nrc1xuICAgIDsgZnJlZV93b3JkcyA9IGFmdGVyLmZyZWVfd29yZHMgLSBiZWZvcmUuZnJlZV93b3Jkc1xuICAgIDsgZnJlZV9ibG9ja3MgPSBhZnRlci5mcmVlX2Jsb2NrcyAtIGJlZm9yZS5mcmVlX2Jsb2Nrc1xuICAgIDsgbGFyZ2VzdF9mcmVlID0gYWZ0ZXIubGFyZ2VzdF9mcmVlIC0gYmVmb3JlLmxhcmdlc3RfZnJlZVxuICAgIDsgZnJhZ21lbnRzID0gYWZ0ZXIuZnJhZ21lbnRzIC0gYmVmb3JlLmZyYWdtZW50c1xuICAgIDsgY29tcGFjdGlvbnMgPSBhZnRlci5jb21wYWN0aW9ucyAtIGJlZm9yZS5jb21wYWN0aW9uc1xuICAgIDsgdG9wX2hlYXBfd29yZHMgPSBhZnRlci50b3BfaGVhcF93b3JkcyAtIGJlZm9yZS50b3BfaGVhcF93b3Jkc1xuICAgIDsgc3RhY2tfc2l6ZSA9IGFmdGVyLnN0YWNrX3NpemUgLSBiZWZvcmUuc3RhY2tfc2l6ZVxuICAgIH1cbiAgOztcblxuICBbJSVlbHNlXVxuXG4gIGxldCBkaWZmIGFmdGVyIGJlZm9yZSA9XG4gICAgeyBtaW5vcl93b3JkcyA9IGFmdGVyLm1pbm9yX3dvcmRzIC0uIGJlZm9yZS5taW5vcl93b3Jkc1xuICAgIDsgcHJvbW90ZWRfd29yZHMgPSBhZnRlci5wcm9tb3RlZF93b3JkcyAtLiBiZWZvcmUucHJvbW90ZWRfd29yZHNcbiAgICA7IG1ham9yX3dvcmRzID0gYWZ0ZXIubWFqb3Jfd29yZHMgLS4gYmVmb3JlLm1ham9yX3dvcmRzXG4gICAgOyBtaW5vcl9jb2xsZWN0aW9ucyA9IGFmdGVyLm1pbm9yX2NvbGxlY3Rpb25zIC0gYmVmb3JlLm1pbm9yX2NvbGxlY3Rpb25zXG4gICAgOyBtYWpvcl9jb2xsZWN0aW9ucyA9IGFmdGVyLm1ham9yX2NvbGxlY3Rpb25zIC0gYmVmb3JlLm1ham9yX2NvbGxlY3Rpb25zXG4gICAgOyBoZWFwX3dvcmRzID0gYWZ0ZXIuaGVhcF93b3JkcyAtIGJlZm9yZS5oZWFwX3dvcmRzXG4gICAgOyBoZWFwX2NodW5rcyA9IGFmdGVyLmhlYXBfY2h1bmtzIC0gYmVmb3JlLmhlYXBfY2h1bmtzXG4gICAgOyBsaXZlX3dvcmRzID0gYWZ0ZXIubGl2ZV93b3JkcyAtIGJlZm9yZS5saXZlX3dvcmRzXG4gICAgOyBsaXZlX2Jsb2NrcyA9IGFmdGVyLmxpdmVfYmxvY2tzIC0gYmVmb3JlLmxpdmVfYmxvY2tzXG4gICAgOyBmcmVlX3dvcmRzID0gYWZ0ZXIuZnJlZV93b3JkcyAtIGJlZm9yZS5mcmVlX3dvcmRzXG4gICAgOyBmcmVlX2Jsb2NrcyA9IGFmdGVyLmZyZWVfYmxvY2tzIC0gYmVmb3JlLmZyZWVfYmxvY2tzXG4gICAgOyBsYXJnZXN0X2ZyZWUgPSBhZnRlci5sYXJnZXN0X2ZyZWUgLSBiZWZvcmUubGFyZ2VzdF9mcmVlXG4gICAgOyBmcmFnbWVudHMgPSBhZnRlci5mcmFnbWVudHMgLSBiZWZvcmUuZnJhZ21lbnRzXG4gICAgOyBjb21wYWN0aW9ucyA9IGFmdGVyLmNvbXBhY3Rpb25zIC0gYmVmb3JlLmNvbXBhY3Rpb25zXG4gICAgOyB0b3BfaGVhcF93b3JkcyA9IGFmdGVyLnRvcF9oZWFwX3dvcmRzIC0gYmVmb3JlLnRvcF9oZWFwX3dvcmRzXG4gICAgOyBzdGFja19zaXplID0gYWZ0ZXIuc3RhY2tfc2l6ZSAtIGJlZm9yZS5zdGFja19zaXplXG4gICAgOyBmb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgPVxuICAgICAgICBhZnRlci5mb3JjZWRfbWFqb3JfY29sbGVjdGlvbnMgLSBiZWZvcmUuZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zXG4gICAgfVxuICA7O1xuXG4gIFslJWVuZGlmXVxuZW5kXG5cbm1vZHVsZSBDb250cm9sID0gc3RydWN0XG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPCAoNSwgMCwgMCldXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtdXRhYmxlIG1pbm9yX2hlYXBfc2l6ZSA6IGludFxuICAgICAgOyBtdXRhYmxlIG1ham9yX2hlYXBfaW5jcmVtZW50IDogaW50XG4gICAgICA7IG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSB2ZXJib3NlIDogaW50XG4gICAgICA7IG11dGFibGUgbWF4X292ZXJoZWFkIDogaW50XG4gICAgICA7IG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgbXV0YWJsZSBhbGxvY2F0aW9uX3BvbGljeSA6IGludFxuICAgICAgOyB3aW5kb3dfc2l6ZSA6IGludFxuICAgICAgOyBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnRcbiAgICAgIDsgY3VzdG9tX21pbm9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9tYXhfc2l6ZSA6IGludFxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2YsIGZpZWxkc11cbiAgZW5kXG5cbiAgWyUlIGVsc2VdXG5cbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICBbQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cbiAgICB0eXBlIHQgPSBDYW1sLkdjLmNvbnRyb2wgPVxuICAgICAgeyBtaW5vcl9oZWFwX3NpemUgOiBpbnRcbiAgICAgIDsgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnRcbiAgICAgIDsgc3BhY2Vfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgdmVyYm9zZSA6IGludFxuICAgICAgOyBtYXhfb3ZlcmhlYWQgOiBpbnRcbiAgICAgIDsgc3RhY2tfbGltaXQgOiBpbnRcbiAgICAgIDsgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnRcbiAgICAgIDsgd2luZG93X3NpemUgOiBpbnRcbiAgICAgIDsgY3VzdG9tX21ham9yX3JhdGlvIDogaW50XG4gICAgICA7IGN1c3RvbV9taW5vcl9yYXRpbyA6IGludFxuICAgICAgOyBjdXN0b21fbWlub3JfbWF4X3NpemUgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mLCBmaWVsZHNdXG4gIGVuZFxuXG4gIFslJSBlbmRpZl1cblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBDb21wYXJhYmxlLk1ha2VfcGxhaW4gKFQpXG5lbmRcblxubW9kdWxlIEFsbG9jYXRpb25fcG9saWN5ID0gc3RydWN0XG4gIHR5cGUgdCA9IFN0YWJsZS5BbGxvY2F0aW9uX3BvbGljeS5WMS50ID1cbiAgICB8IE5leHRfZml0XG4gICAgfCBGaXJzdF9maXRcbiAgICB8IEJlc3RfZml0XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBoYXNoLCBzZXhwX29mXVxuXG4gIGxldCB0b19pbnQgPSBmdW5jdGlvblxuICAgIHwgTmV4dF9maXQgLT4gMFxuICAgIHwgRmlyc3RfZml0IC0+IDFcbiAgICB8IEJlc3RfZml0IC0+IDJcbiAgOztcbmVuZFxuXG5sZXQgdHVuZVxuICAgICAgP2xvZ2dlclxuICAgICAgP21pbm9yX2hlYXBfc2l6ZVxuICAgICAgP21ham9yX2hlYXBfaW5jcmVtZW50XG4gICAgICA/c3BhY2Vfb3ZlcmhlYWRcbiAgICAgID92ZXJib3NlXG4gICAgICA/bWF4X292ZXJoZWFkXG4gICAgICA/c3RhY2tfbGltaXRcbiAgICAgID9hbGxvY2F0aW9uX3BvbGljeVxuICAgICAgP3dpbmRvd19zaXplXG4gICAgICA/Y3VzdG9tX21ham9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX3JhdGlvXG4gICAgICA/Y3VzdG9tX21pbm9yX21heF9zaXplXG4gICAgICAoKVxuICA9XG4gIGxldCBvbGRfY29udHJvbF9wYXJhbXMgPSBnZXQgKCkgaW5cbiAgbGV0IGYgb3B0IHRvX3N0cmluZyBmaWVsZCA9XG4gICAgbGV0IG9sZF92YWx1ZSA9IEZpZWxkLmdldCBmaWVsZCBvbGRfY29udHJvbF9wYXJhbXMgaW5cbiAgICBtYXRjaCBvcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBvbGRfdmFsdWVcbiAgICB8IFNvbWUgbmV3X3ZhbHVlIC0+XG4gICAgICBPcHRpb24uaXRlciBsb2dnZXIgfmY6KGZ1biBmIC0+XG4gICAgICAgIFByaW50Zi5rc3ByaW50ZlxuICAgICAgICAgIGZcbiAgICAgICAgICBcIkdjLkNvbnRyb2wuJXM6ICVzIC0+ICVzXCJcbiAgICAgICAgICAoRmllbGQubmFtZSBmaWVsZClcbiAgICAgICAgICAodG9fc3RyaW5nIG9sZF92YWx1ZSlcbiAgICAgICAgICAodG9fc3RyaW5nIG5ld192YWx1ZSkpO1xuICAgICAgbmV3X3ZhbHVlXG4gIGluXG4gIGxldCBhbGxvY2F0aW9uX3BvbGljeSA9IE9wdGlvbi5tYXAgYWxsb2NhdGlvbl9wb2xpY3kgfmY6QWxsb2NhdGlvbl9wb2xpY3kudG9faW50IGluXG4gIGxldCBuZXdfY29udHJvbF9wYXJhbXMgPVxuICAgIENvbnRyb2wuRmllbGRzLm1hcFxuICAgICAgfm1pbm9yX2hlYXBfc2l6ZTooZiBtaW5vcl9oZWFwX3NpemUgc3RyaW5nX29mX2ludClcbiAgICAgIH5tYWpvcl9oZWFwX2luY3JlbWVudDooZiBtYWpvcl9oZWFwX2luY3JlbWVudCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnNwYWNlX292ZXJoZWFkOihmIHNwYWNlX292ZXJoZWFkIHN0cmluZ19vZl9pbnQpXG4gICAgICB+dmVyYm9zZTooZiB2ZXJib3NlIHN0cmluZ19vZl9pbnQpXG4gICAgICB+bWF4X292ZXJoZWFkOihmIG1heF9vdmVyaGVhZCBzdHJpbmdfb2ZfaW50KVxuICAgICAgfnN0YWNrX2xpbWl0OihmIHN0YWNrX2xpbWl0IHN0cmluZ19vZl9pbnQpXG4gICAgICB+YWxsb2NhdGlvbl9wb2xpY3k6KGYgYWxsb2NhdGlvbl9wb2xpY3kgc3RyaW5nX29mX2ludClcbiAgICAgIH53aW5kb3dfc2l6ZTooZiB3aW5kb3dfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICAgICAgfmN1c3RvbV9tYWpvcl9yYXRpbzooZiBjdXN0b21fbWFqb3JfcmF0aW8gc3RyaW5nX29mX2ludClcbiAgICAgIH5jdXN0b21fbWlub3JfcmF0aW86KGYgY3VzdG9tX21pbm9yX3JhdGlvIHN0cmluZ19vZl9pbnQpXG4gICAgICB+Y3VzdG9tX21pbm9yX21heF9zaXplOihmIGN1c3RvbV9taW5vcl9tYXhfc2l6ZSBzdHJpbmdfb2ZfaW50KVxuICBpblxuICBzZXQgbmV3X2NvbnRyb2xfcGFyYW1zXG47O1xuXG5sZXQgZGlzYWJsZV9jb21wYWN0aW9uID9sb2dnZXIgfmFsbG9jYXRpb25fcG9saWN5ICgpID1cbiAgbGV0IGFsbG9jYXRpb25fcG9saWN5ID1cbiAgICBtYXRjaCBhbGxvY2F0aW9uX3BvbGljeSB3aXRoXG4gICAgfCBgRG9uJ3RfY2hhbmdlIC0+IE5vbmVcbiAgICB8IGBTZXRfdG8gcG9saWN5IC0+IFNvbWUgcG9saWN5XG4gIGluXG4gICgqIFRoZSB2YWx1ZSAxXzAwMF8wMDAsIGFjY29yZGluZyB0b1xuICAgICBodHRwOi8vY2FtbC5pbnJpYS5mci9wdWIvZG9jcy9tYW51YWwtb2NhbWwtNC4wMi9saWJyZWYvR2MuaHRtbFxuICAgICB3aWxsIGRpc2FibGUgY29tcGFjdGlvbnMuXG4gICopXG4gIHR1bmUgP2xvZ2dlciA/YWxsb2NhdGlvbl9wb2xpY3kgfm1heF9vdmVyaGVhZDoxXzAwMF8wMDAgKClcbjs7XG5cbmV4dGVybmFsIG1pbm9yX3dvcmRzIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3Jfd29yZHNcIlxuZXh0ZXJuYWwgbWFqb3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl93b3Jkc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBwcm9tb3RlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX3Byb21vdGVkX3dvcmRzXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1pbm9yX2NvbGxlY3Rpb25zIDogdW5pdCAtPiBpbnQgPSBcImNvcmVfZ2NfbWlub3JfY29sbGVjdGlvbnNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbWFqb3JfY29sbGVjdGlvbnMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9jb2xsZWN0aW9uc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjb21wYWN0aW9ucyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2NvbXBhY3Rpb25zXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1ham9yX3BsdXNfbWlub3Jfd29yZHMgOiB1bml0IC0+IGludCA9IFwiY29yZV9nY19tYWpvcl9wbHVzX21pbm9yX3dvcmRzXCJcbmV4dGVybmFsIGFsbG9jYXRlZF93b3JkcyA6IHVuaXQgLT4gaW50ID0gXCJjb3JlX2djX2FsbG9jYXRlZF93b3Jkc1wiXG5cbmxldCB6ZXJvID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoaW50X29mX3N0cmluZyBcIjBcIilcblxuKCogVGhlIGNvbXBpbGVyIHdvbid0IG9wdGltaXplIGludF9vZl9zdHJpbmcgYXdheSBzbyBpdCB3b24ndFxuICAgcGVyZm9ybSBjb25zdGFudCBmb2xkaW5nIGJlbG93LiAqKVxubGV0IHJlYyBrZWVwX2FsaXZlIG8gPSBpZiB6ZXJvIDw+IDAgdGhlbiBrZWVwX2FsaXZlIChTeXMub3BhcXVlX2lkZW50aXR5IG8pXG5cbm1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICBsZXQgcHJlcGFyZV9oZWFwX3RvX2NvdW50X21pbm9yX2FsbG9jYXRpb24gKCkgPVxuICAgICgqIFdlIGNhbGwgW21pbm9yXSB0byBlbXB0eSB0aGUgbWlub3IgaGVhcCwgc28gdGhhdCBvdXIgYWxsb2NhdGlvbiBpcyB1bmxpa2VseSB0b1xuICAgICAgIHRyaWdnZXIgYSBtaW5vciBnYy4gKilcbiAgICBtaW5vciAoKTtcbiAgICAoKiBXZSBhbGxvY2F0ZSB0d28gd29yZHMgaW4gY2FzZSB0aGUgW0djLm1pbm9yXSBmaW5pc2hlcyBhIG1ham9yIGdjIGN5Y2xlLCBpbiB3aGljaFxuICAgICAgIGNhc2UgaXQgcmVxdWVzdHMgYSBtaW5vciBnYyB0byBvY2N1ciBhdCB0aGUgbmV4dCBtaW5vciBhbGxvY2F0aW9uLiAgV2UgZG9uJ3Qgd2FudFxuICAgICAgIHRoZSBzdWJzZXF1ZW50IG1pbm9yIGFsbG9jYXRpb24gdG8gdHJpZ2dlciBhIG1pbm9yIEdDLCBiZWNhdXNlIHRoZXJlIGlzIGEgYnVnXG4gICAgICAgKGh0dHBzOi8vZ2l0aHViLmNvbS9vY2FtbC9vY2FtbC9pc3N1ZXMvNzc5OCkgaW4gdGhlIE9DYW1sIHJ1bnRpbWUgdGhhdCBkb3VibGVcbiAgICAgICBjb3VudHMgW0djLm1pbm9yX3dvcmRzXSBpbiB0aGF0IGNhc2UuICopXG4gICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChyZWYgKFN5cy5vcGFxdWVfaWRlbnRpdHkgMSkpIDogaW50IHJlZilcbiAgOztcblxuICAoKiBXZSBkaXNhYmxlIGlubGluaW5nIGZvciB0aGlzIGZ1bmN0aW9uIHNvIHRoZSBHQyBzdGF0cyBhbmQgdGhlIGNhbGwgdG8gW2ZdIGFyZSBuZXZlclxuICAgICByZWFycmFuZ2VkLiAqKVxuICBsZXRbQGNvbGRdIG1lYXN1cmVfaW50ZXJuYWwgfm9uX3Jlc3VsdCBmID1cbiAgICBsZXQgbWlub3Jfd29yZHNfYmVmb3JlID0gbWlub3Jfd29yZHMgKCkgaW5cbiAgICBsZXQgbWFqb3Jfd29yZHNfYmVmb3JlID0gbWFqb3Jfd29yZHMgKCkgaW5cbiAgICAoKiBXZSB3cmFwIFtmICgpXSB3aXRoIFtTeXMub3BhcXVlX2lkZW50aXR5XSB0byBwcmV2ZW50IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBiZWluZ1xuICAgICAgIG9wdGltaXplZCBhd2F5LiAqKVxuICAgIGxldCB4ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSAoZiAoKSkgaW5cbiAgICBsZXQgbWlub3Jfd29yZHNfYWZ0ZXIgPSBtaW5vcl93b3JkcyAoKSBpblxuICAgIGxldCBtYWpvcl93b3Jkc19hZnRlciA9IG1ham9yX3dvcmRzICgpIGluXG4gICAgbGV0IG1ham9yX3dvcmRzX2FsbG9jYXRlZCA9IG1ham9yX3dvcmRzX2FmdGVyIC0gbWFqb3Jfd29yZHNfYmVmb3JlIGluXG4gICAgbGV0IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9IG1pbm9yX3dvcmRzX2FmdGVyIC0gbWlub3Jfd29yZHNfYmVmb3JlIGluXG4gICAgb25fcmVzdWx0IH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB4XG4gIDs7XG5cbiAgbGV0IGlzX3plcm9fYWxsb2MgKHR5cGUgYSkgKGYgOiB1bml0IC0+IGEpID1cbiAgICAoKiBJbnN0ZWFkIG9mIHVzaW5nIFtBbGxvY2F0aW9uX3JlcG9ydC5tZWFzdXJlXSwgYW5kIG1hdGNoaW5nIG9uIHRoZSByZXN1bHQsIHdlIHVzZVxuICAgICAgIHRoaXMgY29uc3RydWN0aW9uLCBpbiBvcmRlciB0byBoYXZlIFtpc196ZXJvX2FsbG9jXSBub3QgYWxsb2NhdGUgaXRzZWxmLiBUaGlzXG4gICAgICAgZW5hYmxlcyBbaXNfemVyb19hbGxvY10gdG8gYmUgdXNlZCBpbiBhIG5lc3RlZCB3YXkuXG5cbiAgICAgICBUaGlzIGFsc28gbWVhbnMgd2UgY2Fubm90IGNhbGwgW3ByZXBhcmVfaGVhcF90b19jb3VudF9taW5vcl9hbGxvY2F0aW9uXS4gVGhpcyBpc1xuICAgICAgIG9rYXksIHNpbmNlIHdlIGRvIG5vdCBuZWVkIGEgcHJlY2lzZSBjb3VudCwgd2Ugb25seSBuZWVkIHRvIGNoZWNrIGlmIHRoZSBjb3VudCBpc1xuICAgICAgIHplcm8gb3Igbm90LiAqKVxuICAgIG1lYXN1cmVfaW50ZXJuYWxcbiAgICAgIGZcbiAgICAgIH5vbl9yZXN1bHQ6KGZ1biB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgdmFsdWUgLT5cbiAgICAgICAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHZhbHVlIDogYSk7XG4gICAgICAgIG1ham9yX3dvcmRzX2FsbG9jYXRlZCA9PSAwICYmIG1pbm9yX3dvcmRzX2FsbG9jYXRlZCA9PSAwKVxuICA7O1xuXG4gIG1vZHVsZSBBbGxvY2F0aW9uX3JlcG9ydCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IG1ham9yX3dvcmRzX2FsbG9jYXRlZCA6IGludFxuICAgICAgOyBtaW5vcl93b3Jkc19hbGxvY2F0ZWQgOiBpbnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IGNyZWF0ZSB+bWFqb3Jfd29yZHNfYWxsb2NhdGVkIH5taW5vcl93b3Jkc19hbGxvY2F0ZWQgPVxuICAgICAgeyBtYWpvcl93b3Jkc19hbGxvY2F0ZWQ7IG1pbm9yX3dvcmRzX2FsbG9jYXRlZCB9XG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IG1lYXN1cmVfYWxsb2NhdGlvbiBmID1cbiAgICBwcmVwYXJlX2hlYXBfdG9fY291bnRfbWlub3JfYWxsb2NhdGlvbiAoKTtcbiAgICBtZWFzdXJlX2ludGVybmFsIGYgfm9uX3Jlc3VsdDooZnVuIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQgfm1pbm9yX3dvcmRzX2FsbG9jYXRlZCB4IC0+XG4gICAgICB4LCBBbGxvY2F0aW9uX3JlcG9ydC5jcmVhdGUgfm1ham9yX3dvcmRzX2FsbG9jYXRlZCB+bWlub3Jfd29yZHNfYWxsb2NhdGVkKVxuICA7O1xuXG4gIG1vZHVsZSBBbGxvY2F0aW9uX2xvZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB7IHNpemVfaW5fd29yZHMgOiBpbnRcbiAgICAgIDsgaXNfbWFqb3IgOiBib29sXG4gICAgICA7IGJhY2t0cmFjZSA6IHN0cmluZ1xuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIFslJWlmIG9jYW1sX3ZlcnNpb24gPj0gKDQsIDExLCAwKV1cblxuICBsZXQgbWVhc3VyZV9hbmRfbG9nX2FsbG9jYXRpb24gZiA9XG4gICAgbGV0IGxvZyA6IEFsbG9jYXRpb25fbG9nLnQgbGlzdCByZWYgPSByZWYgW11cbiAgICBhbmQgbWFqb3JfYWxsb2NzID0gcmVmIDBcbiAgICBhbmQgbWlub3JfYWxsb2NzID0gcmVmIDAgaW5cbiAgICBsZXQgb25fYWxsb2MgfmlzX21ham9yIChpbmZvIDogQ2FtbC5HYy5NZW1wcm9mLmFsbG9jYXRpb24pID1cbiAgICAgIGlmIGlzX21ham9yXG4gICAgICB0aGVuIG1ham9yX2FsbG9jcyA6PSAhbWFqb3JfYWxsb2NzICsgaW5mby5uX3NhbXBsZXNcbiAgICAgIGVsc2UgbWlub3JfYWxsb2NzIDo9ICFtaW5vcl9hbGxvY3MgKyBpbmZvLm5fc2FtcGxlcztcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLnJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIGluZm8uY2FsbHN0YWNrIGluXG4gICAgICAoKiBNYWtlIGJhY2t0cmFjZXMgZWFzaWVyIHRvIHJlYWQgYnkgZGVsZXRpbmcgZXZlcnl0aGluZyBiZWxvdyB0aGlzIGZ1bmN0aW9uICopXG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggU3RyaW5nLnN1YnN0cl9pbmRleCBiYWNrdHJhY2UgfnBhdHRlcm46XCJtZWFzdXJlX2FuZF9sb2dfYWxsb2NhdGlvblwiIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogVGhpcyBjYXNlIGlzIHBvc3NpYmxlOiB3ZSBtYXkgaGF2ZSBsb2dnZWQgYWxsb2NhdGlvbnMgaW4gYW5vdGhlciB0aHJlYWQgKilcbiAgICAgICAgICBiYWNrdHJhY2VcbiAgICAgICAgfCBTb21lIHAgLT5cbiAgICAgICAgICBTdHJpbmcuc3ViIH5wb3M6MCB+bGVuOnAgYmFja3RyYWNlXG4gICAgICAgICAgfD4gU3RyaW5nLnJzdHJpcCB+ZHJvcDooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgJ1xcbicgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgXyAtPiB0cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCBpbmZvIDogQWxsb2NhdGlvbl9sb2cudCA9XG4gICAgICAgIHsgc2l6ZV9pbl93b3JkcyA9IGluZm8ubl9zYW1wbGVzOyBpc19tYWpvcjsgYmFja3RyYWNlIH1cbiAgICAgIGluXG4gICAgICBsb2cgOj0gaW5mbyA6OiAhbG9nO1xuICAgICAgTm9uZVxuICAgIGluXG4gICAgbGV0IHRyYWNrZXIgPVxuICAgICAgeyBDYW1sLkdjLk1lbXByb2YubnVsbF90cmFja2VyIHdpdGhcbiAgICAgICAgYWxsb2NfbWlub3IgPSBvbl9hbGxvYyB+aXNfbWFqb3I6ZmFsc2VcbiAgICAgIDsgYWxsb2NfbWFqb3IgPSBvbl9hbGxvYyB+aXNfbWFqb3I6dHJ1ZVxuICAgICAgfVxuICAgIGluXG4gICAgQ2FtbC5HYy5NZW1wcm9mLnN0YXJ0IH5zYW1wbGluZ19yYXRlOjEuMCB0cmFja2VyO1xuICAgICgqIEV4bi5wcm90ZWN0LCBtYW51YWxseSBpbmxpbmVkIHRvIGd1YXJhbnRlZSBubyBhbGxvY2F0aW9ucyAqKVxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2ggZiAoKSB3aXRoXG4gICAgICB8IHggLT5cbiAgICAgICAgKCogTWVtcHJvZi5zdG9wIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IGFsbCBtZW1wcm9mIGNhbGxiYWNrcyBhcmUgcnVuIChzb21lIG1heSBiZVxuICAgICAgICAgICBkZWxheWVkIGlmIHRoZXkgaGFwcGVuZWQgZHVyaW5nIEMgY29kZSBhbmQgdGhlcmUgaGFzIGJlZW4gbm8gYWxsb2NhdGlvbiBzaW5jZSksXG4gICAgICAgICAgIHNvIHdlIGV4cGxpY3RseSBmbHVzaCB0aGVtICopXG4gICAgICAgIENhbWwuR2MuTWVtcHJvZi5zdG9wICgpO1xuICAgICAgICB4XG4gICAgICB8IGV4Y2VwdGlvbiBlIC0+XG4gICAgICAgIENhbWwuR2MuTWVtcHJvZi5zdG9wICgpO1xuICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICAoIHJlc3VsdFxuICAgICwgQWxsb2NhdGlvbl9yZXBvcnQuY3JlYXRlXG4gICAgICAgIH5tYWpvcl93b3Jkc19hbGxvY2F0ZWQ6IW1ham9yX2FsbG9jc1xuICAgICAgICB+bWlub3Jfd29yZHNfYWxsb2NhdGVkOiFtaW5vcl9hbGxvY3NcbiAgICAsIExpc3QucmV2ICFsb2cgKVxuICA7O1xuXG4gIFslJWVsc2VdXG5cbiAgbGV0IG1lYXN1cmVfYW5kX2xvZ19hbGxvY2F0aW9uIGYgPVxuICAgIGxldCB4LCByZXBvcnQgPSBtZWFzdXJlX2FsbG9jYXRpb24gZiBpblxuICAgIHgsIHJlcG9ydCwgW11cbiAgOztcblxuICBbJSVlbmRpZl1cbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBhZGRfZmluYWxpemVyIHggZiA9XG4gICAgdHJ5IENhbWwuR2MuZmluYWxpc2UgKGZ1biB4IC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgKGZ1biAoKSAtPiBmIHgpKSB4IHdpdGhcbiAgICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgKCogVGhlIHR5cGUgb2YgYWRkX2ZpbmFsaXplciBlbnN1cmVzIHRoYXQgdGhlIG9ubHkgcG9zc2libGUgZmFpbHVyZVxuICAgICAgICAgaXMgZHVlIHRvIFt4XSBiZWluZyBzdGF0aWMgZGF0YS4gSW4gdGhpcyBjYXNlLCB3ZSBzaW1wbHkgZHJvcCB0aGVcbiAgICAgICAgIGZpbmFsaXplciBzaW5jZSBzdGF0aWMgZGF0YSB3b3VsZCBuZXZlciBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IHRoZVxuICAgICAgICAgR0MgYW55d2F5LiAqKVxuICAgICAgKClcbiAgOztcblxuICAoKiBbYWRkX2ZpbmFsaXplcl9leG5dIGlzIHRoZSBzYW1lIGFzIFthZGRfZmluYWxpemVyXS4gIEhvd2V2ZXIsIHRoZWlyIHR5cGVzIGluXG4gICAgIGNvcmVfZ2MubWxpIGFyZSBkaWZmZXJlbnQsIGFuZCB0aGUgdHlwZSBvZiBbYWRkX2ZpbmFsaXplcl0gZ3VhcmFudGVlcyB0aGF0IGl0IGFsd2F5c1xuICAgICByZWNlaXZlcyBhIGhlYXAgYmxvY2ssIHdoaWNoIGVuc3VyZXMgdGhhdCBpdCB3aWxsIG5vdCByYWlzZSwgd2hpbGVcbiAgICAgW2FkZF9maW5hbGl6ZXJfZXhuXSBhY2NlcHRzIGFueSB0eXBlLCBhbmQgc28gbWF5IHJhaXNlLiAqKVxuICBsZXQgYWRkX2ZpbmFsaXplcl9leG4geCBmID1cbiAgICB0cnkgQ2FtbC5HYy5maW5hbGlzZSAoZnVuIHggLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgeCkpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0IHggZiA9XG4gICAgdHJ5IENhbWwuR2MuZmluYWxpc2VfbGFzdCAoZnVuICgpIC0+IEV4bi5oYW5kbGVfdW5jYXVnaHRfYW5kX2V4aXQgZikgeCB3aXRoXG4gICAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICgqIFRoZSB0eXBlIG9mIGFkZF9maW5hbGl6ZXJfbGFzdCBlbnN1cmVzIHRoYXQgdGhlIG9ubHkgcG9zc2libGUgZmFpbHVyZVxuICAgICAgICAgaXMgZHVlIHRvIFt4XSBiZWluZyBzdGF0aWMgZGF0YS4gSW4gdGhpcyBjYXNlLCB3ZSBzaW1wbHkgZHJvcCB0aGVcbiAgICAgICAgIGZpbmFsaXplciBzaW5jZSBzdGF0aWMgZGF0YSB3b3VsZCBuZXZlciBoYXZlIGJlZW4gY29sbGVjdGVkIGJ5IHRoZVxuICAgICAgICAgR0MgYW55d2F5LiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB4IGYgPVxuICAgIHRyeSBDYW1sLkdjLmZpbmFsaXNlX2xhc3QgKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpIHggd2l0aFxuICAgIHwgSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICBpZ25vcmUgKEhlYXBfYmxvY2suY3JlYXRlIHggOiBfIEhlYXBfYmxvY2sudCBvcHRpb24pO1xuICAgICAgKCogSWYgW0hlYXBfYmxvY2suY3JlYXRlXSBzdWNjZWVkcyB0aGVuIFt4XSBpcyBzdGF0aWMgZGF0YSBhbmQgc29cbiAgICAgICAgIHdlIGNhbiBzaW1wbHkgZHJvcCB0aGUgZmluYWxpc2VyLiAqKVxuICAgICAgKClcbiAgOztcblxuICBsZXQgZmluYWxpemVfcmVsZWFzZSA9IENhbWwuR2MuZmluYWxpc2VfcmVsZWFzZVxuXG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGFsYXJtXG5cbiAgICBsZXQgc2V4cF9vZl90IF8gPSBcIjxnYyBhbGFybT5cIiB8PiBbJXNleHBfb2Y6IHN0cmluZ11cbiAgICBsZXQgY3JlYXRlIGYgPSBjcmVhdGVfYWxhcm0gKGZ1biAoKSAtPiBFeG4uaGFuZGxlX3VuY2F1Z2h0X2FuZF9leGl0IGYpXG4gICAgbGV0IGRlbGV0ZSA9IGRlbGV0ZV9hbGFybVxuICBlbmRcbmVuZFxuIiwib3BlbiBTdGFibGVfbW9kdWxlX3R5cGVzXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQ29tcGFyYXRvciA9IENvbXBhcmF0b3IuU3RhYmxlXG5tb2R1bGUgU2V4cGFibGUgPSBTZXhwYWJsZS5TdGFibGVcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxIChTdGFibGVfZm9ybWF0IDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgICAgICAgICB2YWwgdG9fc3RhYmxlX2Zvcm1hdCA6IHQgLT4gU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6IFN0YWJsZV9mb3JtYXQudCAtPiB0XG4gICAgICAgICAgZW5kKSA6IFMwIHdpdGggdHlwZSB0ID0gTS50ID0gc3RydWN0XG4gICAgbW9kdWxlIFQxID0gc3RydWN0XG4gICAgICBtb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBNXG5cbiAgICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2Zfc2V4cGFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgICBsZXQgb2ZfYmluYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGVuZFxuXG4gICAgICBpbmNsdWRlIFQyXG4gICAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlLlYxIChTdGFibGVfZm9ybWF0KSAoVDIpXG4gICAgICBpbmNsdWRlIEJpbmFibGUuT2ZfYmluYWJsZS5WMSBbQGFsZXJ0IFwiLWxlZ2FjeVwiXSAoU3RhYmxlX2Zvcm1hdCkgKFQyKVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUMVxuICAgIGluY2x1ZGUgQ29tcGFyYXRvci5WMS5NYWtlIChUMSlcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQxID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cbiAgICBlbmQpIChNIDogc2lnXG4gICAgICAgICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgY29tcGFyZV1cblxuICAgICAgICAgICAgdmFsIG1hcCA6ICdhIHQgLT4gZjooJ2EgLT4gJ2IpIC0+ICdiIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogJ2EgdCAtPiAnYSBTdGFibGVfZm9ybWF0LnRcbiAgICAgICAgICAgIHZhbCBvZl9zdGFibGVfZm9ybWF0IDogJ2EgU3RhYmxlX2Zvcm1hdC50IC0+ICdhIHRcbiAgICAgICAgICBlbmQpIDogUzEgd2l0aCB0eXBlICdhIHQgPSAnYSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMS5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUxLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9mX3N0YWJsZV9mb3JtYXQyID0gc3RydWN0XG4gIG1vZHVsZSBWMSAoU3RhYmxlX2Zvcm1hdCA6IHNpZ1xuICAgICAgdHlwZSAoJ2ExLCAnYTIpIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuICAgIGVuZCkgKE0gOiBzaWdcbiAgICAgICAgICAgIHR5cGUgKCdhMSwgJ2EyKSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgICAgICAgIHZhbCBtYXAgOiAoJ2ExLCAnYTIpIHQgLT4gZjE6KCdhMSAtPiAnYjEpIC0+IGYyOignYTIgLT4gJ2IyKSAtPiAoJ2IxLCAnYjIpIHRcbiAgICAgICAgICAgIHZhbCB0b19zdGFibGVfZm9ybWF0IDogKCdhMSwgJ2EyKSB0IC0+ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50XG4gICAgICAgICAgICB2YWwgb2Zfc3RhYmxlX2Zvcm1hdCA6ICgnYTEsICdhMikgU3RhYmxlX2Zvcm1hdC50IC0+ICgnYTEsICdhMikgdFxuICAgICAgICAgIGVuZCkgOiBTMiB3aXRoIHR5cGUgKCdhMSwgJ2EyKSB0ID0gKCdhMSwgJ2EyKSBNLnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBNXG5cbiAgICAgIGxldCB0b19zZXhwYWJsZSA9IHRvX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3N0YWJsZV9mb3JtYXRcbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fc3RhYmxlX2Zvcm1hdFxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBvZl9zdGFibGVfZm9ybWF0XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFNleHBhYmxlLk9mX3NleHBhYmxlMi5WMSAoU3RhYmxlX2Zvcm1hdCkgKFQpXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGUyLlYxIFtAYWxlcnQgXCItbGVnYWN5XCJdIChTdGFibGVfZm9ybWF0KSAoVClcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlF1ZXVlXG5cbmluY2x1ZGUgVGVzdF9iaW5hcnlfc2VhcmNoYWJsZS5NYWtlMV9hbmRfdGVzdCAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCBnZXQgPSBnZXRcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgICBtb2R1bGUgRm9yX3Rlc3QgPSBzdHJ1Y3RcbiAgICAgIGxldCBvZl9hcnJheSBhID1cbiAgICAgICAgbGV0IHIgPSBjcmVhdGUgKCkgaW5cbiAgICAgICAgKCogV2UgZW5xdWV1ZSBldmVyeXRoaW5nIHR3aWNlLCBhbmQgZGVxdWV1ZSBpdCBvbmNlIHRvIGVuc3VyZTpcbiAgICAgICAgICAgLSB0aGF0IHRoZSBxdWV1ZSBoYXMgdGhlIHNhbWUgY29udGVudCBhcyB0aGUgYXJyYXkuXG4gICAgICAgICAgIC0gdGhhdCBpdCBoYXMsIGluIG1vc3QgY2FzZXMsIGFuIGludGVyZXN0aW5nIGludGVybmFsIHN0cnVjdHVyZSopXG4gICAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgICBlbnF1ZXVlIHIgYS4oaSlcbiAgICAgICAgZG9uZTtcbiAgICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgICAgICAgIGlnbm9yZSAoZGVxdWV1ZV9leG4gciA6IGJvb2wpO1xuICAgICAgICAgIGVucXVldWUgciBhLihpKVxuICAgICAgICBkb25lO1xuICAgICAgICByXG4gICAgICA7O1xuICAgIGVuZFxuICBlbmQpXG5cbm1vZHVsZSBTZXJpYWxpemF0aW9uX3YxID0gc3RydWN0XG4gIGxldCBzZXhwX29mX3QgPSBzZXhwX29mX3RcbiAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICBsZXQgdF9zZXhwX2dyYW1tYXIgPSB0X3NleHBfZ3JhbW1hclxuXG4gIGluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdFxuICAgICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IGNhbGxlcl9pZGVudGl0eSA9XG4gICAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiYjRjODQyNTQtNDk5Mi0xMWU2LTliYTctNzM0ZTE1NDAyN2JkXCJcbiAgICAgIDs7XG5cbiAgICAgIGxldCBtb2R1bGVfbmFtZSA9IFNvbWUgXCJDb3JlLlF1ZXVlXCJcbiAgICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICAgIGxldCBpdGVyID0gaXRlclxuICAgICAgbGV0IGluaXQgfmxlbiB+bmV4dCA9IGluaXQgbGVuIH5mOihmdW4gXyAtPiBuZXh0ICgpKVxuICAgIGVuZClcbmVuZFxuXG5pbmNsdWRlIFNlcmlhbGl6YXRpb25fdjFcblxubW9kdWxlIFN0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBjb21wYXJlXVxuXG4gICAgaW5jbHVkZSBTZXJpYWxpemF0aW9uX3YxXG5cbiAgICAoKiBXZSBkb24ndCBoYXZlIGEgWyViaW5fZGlnZXN0XSBleHBlY3QgdGVzdCBoZXJlIGJlY2F1c2UgdGhlIGJpbl9pbyBpcyBtb3N0bHkgaGFuZFxuICAgICAgIHdyaXR0ZW4sIGFuZCBbY29yZV9xdWV1ZV91bml0X3Rlc3RzLm1sXSBoYXMgdW5pdCB0ZXN0cyBmb3Igc3BlY2lmaWMgdmFsdWVzLiAqKVxuXG4gICAgbGV0IG1hcCA9IG1hcFxuICBlbmRcbmVuZFxuIiwibW9kdWxlIFVuaXRfdGVzdCA9IFN0YWJsZV91bml0X3Rlc3QuTWFrZVxuXG5cbm1vZHVsZSB0eXBlIFN0YWJsZSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzBcbm1vZHVsZSB0eXBlIFN0YWJsZV93aXRob3V0X2NvbXBhcmF0b3IgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMwX3dpdGhvdXRfY29tcGFyYXRvclxubW9kdWxlIHR5cGUgU3RhYmxlMSA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzFcbm1vZHVsZSB0eXBlIFN0YWJsZTIgPSBTdGFibGVfbW9kdWxlX3R5cGVzLlMyXG5tb2R1bGUgdHlwZSBTdGFibGUzID0gU3RhYmxlX21vZHVsZV90eXBlcy5TM1xubW9kdWxlIHR5cGUgU3RhYmxlNCA9IFN0YWJsZV9tb2R1bGVfdHlwZXMuUzRcblxubW9kdWxlIE1ha2Vfc3RhYmxlID0gTWFrZV9zdGFibGVcbmluY2x1ZGUgU3RhYmxlX2ludGVybmFsXG5tb2R1bGUgSGFzaGFibGUgPSBIYXNoYWJsZS5TdGFibGVcbm1vZHVsZSBCaWdzdHJpbmcgPSBCaWdzdHJpbmcuU3RhYmxlXG5tb2R1bGUgQmluYWJsZSA9IEJpbmFibGUuU3RhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZy5TdGFibGVcbm1vZHVsZSBCb29sID0gQm9vbC5TdGFibGVcbm1vZHVsZSBCeXRlX3VuaXRzID0gQnl0ZV91bml0cy5TdGFibGVcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzLlN0YWJsZVxubW9kdWxlIENvbXBhcmFibGUgPSBDb21wYXJhYmxlLlN0YWJsZVxubW9kdWxlIENvbXBhcmF0b3IgPSBDb21wYXJhdG9yLlN0YWJsZVxubW9kdWxlIERhdGUgPSBEYXRlLlN0YWJsZVxubW9kdWxlIERheV9vZl93ZWVrID0gRGF5X29mX3dlZWsuU3RhYmxlXG5tb2R1bGUgTWQ1ID0gTWQ1LlN0YWJsZVxubW9kdWxlIEVpdGhlciA9IEVpdGhlci5TdGFibGVcbm1vZHVsZSBFcnJvciA9IEVycm9yLlN0YWJsZVxubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZS5TdGFibGVcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lLlN0YWJsZVxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbi5TdGFibGVcbm1vZHVsZSBGcXVldWUgPSBGcXVldWUuU3RhYmxlXG5tb2R1bGUgR2MgPSBHYy5TdGFibGVcbm1vZHVsZSBIb3N0X2FuZF9wb3J0ID0gSG9zdF9hbmRfcG9ydC5TdGFibGVcbm1vZHVsZSBJbmZvID0gSW5mby5TdGFibGVcbm1vZHVsZSBJbnQgPSBJbnQuU3RhYmxlXG5tb2R1bGUgSW50NjMgPSBJbnQ2My5TdGFibGVcbm1vZHVsZSBMYXp5ID0gTGF6eS5TdGFibGVcbm1vZHVsZSBMaXN0ID0gTGlzdC5TdGFibGVcbm1vZHVsZSBNYXAgPSBNYXAuU3RhYmxlXG5tb2R1bGUgTWF5YmVfYm91bmQgPSBNYXliZV9ib3VuZC5TdGFibGVcbm1vZHVsZSBNb250aCA9IE1vbnRoLlN0YWJsZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nLlN0YWJsZVxubW9kdWxlIE9wdGlvbiA9IE9wdGlvbi5TdGFibGVcbm1vZHVsZSBPcl9lcnJvciA9IE9yX2Vycm9yLlN0YWJsZVxubW9kdWxlIFBlcmNlbnQgPSBQZXJjZW50LlN0YWJsZVxubW9kdWxlIFBlcm1zID0gUGVybXMuU3RhYmxlXG5tb2R1bGUgUGlkID0gUGlkLlN0YWJsZVxubW9kdWxlIFF1ZXVlID0gUXVldWUuU3RhYmxlXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0LlN0YWJsZVxubW9kdWxlIFNldCA9IFNldC5TdGFibGVcbm1vZHVsZSBTZXhwID0gU2V4cC5TdGFibGVcbm1vZHVsZSBTZXhwYWJsZSA9IFNleHBhYmxlLlN0YWJsZVxubW9kdWxlIFNvdXJjZV9jb2RlX3Bvc2l0aW9uID0gU291cmNlX2NvZGVfcG9zaXRpb24uU3RhYmxlXG5tb2R1bGUgU3RyaW5nID0gU3RyaW5nLlN0YWJsZVxubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZC5TdGFibGVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9ucy5TdGFibGVcbm1vZHVsZSBUaW1lID0gVGltZV9mbG9hdC5TdGFibGVcbm1vZHVsZSBVbml0ID0gVW5pdC5TdGFibGVcbm1vZHVsZSBVbml4ID0gc3RydWN0IGVuZCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ29yZV91bml4LlN0YWJsZV1cIl1cbmluY2x1ZGUgUGVybXMuRXhwb3J0XG5cbmluY2x1ZGUgUHB4X2NvbXBhcmVfbGliLkJ1aWx0aW5cbmluY2x1ZGUgSW1wb3J0Lk5vdF9mb3VuZFxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgKFxuICBJbnQgOlxuICBzaWdcbiAgICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuICAgIGluY2x1ZGUgSGFzaGFibGUuUyB3aXRoIHR5cGUgdCA6PSB0XG4gIGVuZClcblxubGV0IG9mX2NhbWxfaW50IHQgPSB0XG5sZXQgdG9fY2FtbF9pbnQgdCA9IHRcblxudHlwZSBzeXNfYmVoYXZpb3IgPVxuICBbIGBDb250aW51ZSAoKiogQ29udGludWUgdGhlIHByb2Nlc3MgaWYgaXQgaXMgY3VycmVudGx5IHN0b3BwZWQgKilcbiAgfCBgRHVtcF9jb3JlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgYW5kIGR1bXAgY29yZSAqKVxuICB8IGBJZ25vcmUgKCoqIElnbm9yZSB0aGUgc2lnbmFsICopXG4gIHwgYFN0b3AgKCoqIFN0b3AgdGhlIHByb2Nlc3MgKilcbiAgfCBgVGVybWluYXRlICgqKiBUZXJtaW5hdGUgdGhlIHByb2Nlc3MgKilcbiAgXVxuW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGVxdWFsICh0IDogdCkgdCcgPSB0ID0gdCdcblxuaW5jbHVkZSBzdHJ1Y3RcbiAgKCogUGxlYXNlIGtlZXAgaW4gc3luYyB3aXRoIHRoZSBsaXN0IGZvciB0b19zdHJpbmcvc3lzX2JlaGF2aW9yICopXG4gIG9wZW4gQ2FtbC5TeXNcblxuICBsZXQgYWJydCA9IHNpZ2FicnRcbiAgbGV0IGFscm0gPSBzaWdhbHJtXG4gIGxldCBidXMgPSBzaWdidXNcbiAgbGV0IGNobGQgPSBzaWdjaGxkXG4gIGxldCBjb250ID0gc2lnY29udFxuICBsZXQgZnBlID0gc2lnZnBlXG4gIGxldCBodXAgPSBzaWdodXBcbiAgbGV0IGlsbCA9IHNpZ2lsbFxuICBsZXQgaW50ID0gc2lnaW50XG4gIGxldCBraWxsID0gc2lna2lsbFxuICBsZXQgcGlwZSA9IHNpZ3BpcGVcbiAgbGV0IHBvbGwgPSBzaWdwb2xsXG4gIGxldCBwcm9mID0gc2lncHJvZlxuICBsZXQgcXVpdCA9IHNpZ3F1aXRcbiAgbGV0IHNlZ3YgPSBzaWdzZWd2XG4gIGxldCBzdG9wID0gc2lnc3RvcFxuICBsZXQgc3lzID0gc2lnc3lzXG4gIGxldCB0ZXJtID0gc2lndGVybVxuICBsZXQgdHJhcCA9IHNpZ3RyYXBcbiAgbGV0IHRzdHAgPSBzaWd0c3RwXG4gIGxldCB0dGluID0gc2lndHRpblxuICBsZXQgdHRvdSA9IHNpZ3R0b3VcbiAgbGV0IHVyZyA9IHNpZ3VyZ1xuICBsZXQgdXNyMSA9IHNpZ3VzcjFcbiAgbGV0IHVzcjIgPSBzaWd1c3IyXG4gIGxldCB2dGFscm0gPSBzaWd2dGFscm1cbiAgbGV0IHhjcHUgPSBzaWd4Y3B1XG4gIGxldCB4ZnN6ID0gc2lneGZzelxuICBsZXQgemVybyA9IDBcbmVuZFxuXG5leGNlcHRpb24gSW52YWxpZF9zaWduYWxfbW5lbW9uaWNfb3JfbnVtYmVyIG9mIHN0cmluZyBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdG9fc3RyaW5nX3dpdGhfdmVyc2lvbiwgb2Zfc3RyaW5nLCBkZWZhdWx0X3N5c19iZWhhdmlvciA9XG4gIGxldCBrbm93biA9XG4gICAgW1xuICAgICAgXCJzaWdhYnJ0XCIsIGFicnQsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnYWxybVwiLCBhbHJtLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ2J1c1wiLCBidXMsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lnY2hsZFwiLCBjaGxkLCBgSWdub3JlLCAxXG4gICAgOyBcInNpZ2NvbnRcIiwgY29udCwgYENvbnRpbnVlLCAxXG4gICAgOyBcInNpZ2ZwZVwiLCBmcGUsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnaHVwXCIsIGh1cCwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdpbGxcIiwgaWxsLCBgRHVtcF9jb3JlLCAxXG4gICAgOyBcInNpZ2ludFwiLCBpbnQsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lna2lsbFwiLCBraWxsLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3BpcGVcIiwgcGlwZSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWdwb2xsXCIsIHBvbGwsIGBUZXJtaW5hdGUsIDJcbiAgICA7IFwic2lncHJvZlwiLCBwcm9mLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3F1aXRcIiwgcXVpdCwgYER1bXBfY29yZSwgMVxuICAgIDsgXCJzaWdzZWd2XCIsIHNlZ3YsIGBEdW1wX2NvcmUsIDFcbiAgICA7IFwic2lnc3RvcFwiLCBzdG9wLCBgU3RvcCwgMVxuICAgIDsgXCJzaWdzeXNcIiwgc3lzLCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3Rlcm1cIiwgdGVybSwgYFRlcm1pbmF0ZSwgMVxuICAgIDsgXCJzaWd0cmFwXCIsIHRyYXAsIGBEdW1wX2NvcmUsIDJcbiAgICA7IFwic2lndHN0cFwiLCB0c3RwLCBgU3RvcCwgMVxuICAgIDsgXCJzaWd0dGluXCIsIHR0aW4sIGBTdG9wLCAxXG4gICAgOyBcInNpZ3R0b3VcIiwgdHRvdSwgYFN0b3AsIDFcbiAgICA7IFwic2lndXJnXCIsIHVyZywgYElnbm9yZSwgMlxuICAgIDsgXCJzaWd1c3IxXCIsIHVzcjEsIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lndXNyMlwiLCB1c3IyLCBgVGVybWluYXRlLCAxXG4gICAgOyBcInNpZ3Z0YWxybVwiLCB2dGFscm0sIGBUZXJtaW5hdGUsIDFcbiAgICA7IFwic2lneGNwdVwiLCB4Y3B1LCBgRHVtcF9jb3JlLCAyXG4gICAgOyBcInNpZ3hmc3pcIiwgeGZzeiwgYER1bXBfY29yZSwgMlxuICAgIDsgXCJzaWd6ZXJvXCIsIHplcm8sIGBJZ25vcmUsIDFcbiAgICBdXG4gIGluXG4gIGxldCBuYW1lX2FuZF92ZXJzaW9uX2J5X3QgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKCkgaW5cbiAgbGV0IHRfYnlfbmFtZSA9IFN0cmluZy5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBsZXQgYmVoYXZpb3JfYnlfdCA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKSBpblxuICBMaXN0Lml0ZXIga25vd24gfmY6KGZ1biAobmFtZSwgdCwgYmVoYXZpb3IsIHN0YWJsZV92ZXJzaW9uKSAtPlxuICAgIEhhc2h0Ymwuc2V0IG5hbWVfYW5kX3ZlcnNpb25fYnlfdCB+a2V5OnQgfmRhdGE6KG5hbWUsIHN0YWJsZV92ZXJzaW9uKTtcbiAgICBIYXNodGJsLnNldCB0X2J5X25hbWUgfmtleTpuYW1lIH5kYXRhOnQ7XG4gICAgSGFzaHRibC5zZXQgYmVoYXZpb3JfYnlfdCB+a2V5OnQgfmRhdGE6YmVoYXZpb3IpO1xuICAoKiBGb3IgdW5rbm93biBzaWduYWwgbnVtYmVycywgW3RvX3N0cmluZ10gcmV0dXJucyBhIG1lYW5pbmdmdWxcbiAgICAgc3RyaW5nLCB3aGlsZSBbZGVmYXVsdF9zeXNfYmVoYXZpb3JdIGhhcyB0byByYWlzZSBhbiBleGNlcHRpb25cbiAgICAgYmVjYXVzZSB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHJpZ2h0IGFuc3dlciBpcy4gKilcbiAgbGV0IHRvX3N0cmluZ193aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjpyZXF1ZXN0ZWRfdmVyc2lvbiA9XG4gICAgbWF0Y2ggSGFzaHRibC5maW5kIG5hbWVfYW5kX3ZlcnNpb25fYnlfdCB0IHdpdGhcbiAgICB8IFNvbWUgKHN0cmluZywgbmVlZGVkX3ZlcnNpb24pIHdoZW4gcmVxdWVzdGVkX3ZlcnNpb24gPj0gbmVlZGVkX3ZlcnNpb24gLT4gc3RyaW5nXG4gICAgfCBfIC0+IFwiPHVua25vd24gc2lnbmFsIFwiIF4gSW50LnRvX3N0cmluZyB0IF4gXCI+XCJcbiAgaW5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgcyA9IFN0cmluZy5sb3dlcmNhc2UgKFN0cmluZy5zdHJpcCBzKSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0X2J5X25hbWUgcyB3aXRoXG4gICAgfCBTb21lIHNuIC0+IHNuXG4gICAgfCBOb25lIC0+XG4gICAgICBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIjx1bmtub3duIHNpZ25hbCBcIlxuICAgICAgdGhlbiAoXG4gICAgICAgIHRyeSBJbnQub2Zfc3RyaW5nIChTdHJpbmcuc2xpY2UgcyAxNiB+LTEpIHdpdGhcbiAgICAgICAgfCBfIC0+IHJhaXNlIChJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgcykpXG4gICAgICBlbHNlIHJhaXNlIChJbnZhbGlkX3NpZ25hbF9tbmVtb25pY19vcl9udW1iZXIgcylcbiAgaW5cbiAgbGV0IGRlZmF1bHRfc3lzX2JlaGF2aW9yIHQgPVxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCBiZWhhdmlvcl9ieV90IHQgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEludmFsaWRfYXJndW1lbnRcbiAgICAgICAgICAgKFwiU2lnbmFsLmRlZmF1bHRfc3lzX2JlaGF2aW9yOiB1bmtub3duIHNpZ25hbCBcIiBeIEludC50b19zdHJpbmcgdCkpXG4gICAgfCBTb21lIGJlaGF2aW9yIC0+IGJlaGF2aW9yXG4gIGluXG4gIHRvX3N0cmluZ193aXRoX3ZlcnNpb24sIG9mX3N0cmluZywgZGVmYXVsdF9zeXNfYmVoYXZpb3Jcbjs7XG5cbmV4Y2VwdGlvbiBFeHBlY3RlZF9hdG9tIG9mIFNleHAudCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uID0gU2V4cC5BdG9tICh0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb24pXG5sZXQgdG9fc3RyaW5nIHMgPSB0b19zdHJpbmdfd2l0aF92ZXJzaW9uIHMgfnZlcnNpb246MlxubGV0IHNleHBfb2ZfdCB0ID0gc2V4cF9vZl90X3dpdGhfdmVyc2lvbiB0IH52ZXJzaW9uOjFcblxubGV0IHRfb2Zfc2V4cCBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gIHwgU2V4cC5BdG9tIHMgLT4gb2Zfc3RyaW5nIHNcbiAgfCBfIC0+IHJhaXNlIChFeHBlY3RlZF9hdG9tIHMpXG47O1xuXG50eXBlIHBpZF9zcGVjID0gWyBgVXNlX1NpZ25hbF91bml4IF1cbnR5cGUgc2lncHJvY21hc2tfY29tbWFuZCA9IFsgYFVzZV9TaWduYWxfdW5peCBdXG5cbmxldCBjYW5fc2VuZF90byA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBvZl9zeXN0ZW1faW50ID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNlbmQgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZF9leG4gPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2VuZF9pID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHNleHBfb2ZfcGlkX3NwZWMgPSBgVXNlX1NpZ25hbF91bml4XG5sZXQgc2lncGVuZGluZyA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdwcm9jbWFzayA9IGBVc2VfU2lnbmFsX3VuaXhcbmxldCBzaWdzdXNwZW5kID0gYFVzZV9TaWduYWxfdW5peFxubGV0IHRvX3N5c3RlbV9pbnQgPSBgVXNlX1NpZ25hbF91bml4XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgdHlwZSBiZWhhdmlvciA9XG4gICAgWyBgRGVmYXVsdFxuICAgIHwgYElnbm9yZVxuICAgIHwgYEhhbmRsZSBvZiB0IC0+IHVuaXRcbiAgICBdXG5cbiAgbW9kdWxlIEJlaGF2aW9yID0gc3RydWN0XG4gICAgbGV0IG9mX2NhbWwgPSBmdW5jdGlvblxuICAgICAgfCBDYW1sLlN5cy5TaWduYWxfZGVmYXVsdCAtPiBgRGVmYXVsdFxuICAgICAgfCBTaWduYWxfaWdub3JlIC0+IGBJZ25vcmVcbiAgICAgIHwgU2lnbmFsX2hhbmRsZSBmIC0+IGBIYW5kbGUgZlxuICAgIDs7XG5cbiAgICBsZXQgdG9fY2FtbCA9IGZ1bmN0aW9uXG4gICAgICB8IGBEZWZhdWx0IC0+IENhbWwuU3lzLlNpZ25hbF9kZWZhdWx0XG4gICAgICB8IGBJZ25vcmUgLT4gU2lnbmFsX2lnbm9yZVxuICAgICAgfCBgSGFuZGxlIGYgLT4gU2lnbmFsX2hhbmRsZSAoZnVuIHQgLT4gRXhuLmhhbmRsZV91bmNhdWdodF9hbmRfZXhpdCAoZnVuICgpIC0+IGYgdCkpXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IHNpZ25hbCB0IGJlaGF2aW9yID0gQmVoYXZpb3Iub2ZfY2FtbCAoQ2FtbC5TeXMuc2lnbmFsIHQgKEJlaGF2aW9yLnRvX2NhbWwgYmVoYXZpb3IpKVxuICBsZXQgc2V0IHQgYmVoYXZpb3IgPSBpZ25vcmUgKHNpZ25hbCB0IGJlaGF2aW9yIDogYmVoYXZpb3IpXG4gIGxldCBoYW5kbGUgdCBmID0gc2V0IHQgKGBIYW5kbGUgZilcbmVuZFxuXG5vcGVuIEV4cGVydFxuXG5sZXQgaGFuZGxlX2RlZmF1bHQgdCA9IHNldCB0IGBEZWZhdWx0XG5sZXQgaWdub3JlIHQgPSBzZXQgdCBgSWdub3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYyID0gc3RydWN0XG4gICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlXVxuXG4gICAgbGV0IHRfb2Zfc2V4cCA9IHRfb2Zfc2V4cFxuICAgIGxldCBzZXhwX29mX3QgdCA9IHNleHBfb2ZfdF93aXRoX3ZlcnNpb24gdCB+dmVyc2lvbjoyXG4gIGVuZFxuXG4gIG1vZHVsZSBWMSA9IHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICAgIGxldCB0X29mX3NleHAgPSB0X29mX3NleHBcbiAgICBsZXQgc2V4cF9vZl90IHQgPSBzZXhwX29mX3Rfd2l0aF92ZXJzaW9uIHQgfnZlcnNpb246MVxuICBlbmRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgU2lnbl9vcl9uYW4gPSBCYXNlLlNpZ25fb3JfbmFuXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID0gU2lnbl9vcl9uYW4udCA9XG4gICAgICB8IE5lZ1xuICAgICAgfCBaZXJvXG4gICAgICB8IFBvc1xuICAgICAgfCBOYW5cbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHR5cGVyZXAsIGVudW1lcmF0ZV1cbiAgZW5kXG5lbmRcblxuaW5jbHVkZSBTdGFibGUuVjFcbmluY2x1ZGUgU2lnbl9vcl9uYW5cbmluY2x1ZGUgSWRlbnRpZmlhYmxlLkV4dGVuZCAoU2lnbl9vcl9uYW4pIChTdGFibGUuVjEpXG4iLCJvcGVuISBJbXBvcnRcblxubGV0IHRvX3N0cmluZyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl90b19zdHJpbmdfaW5zdGVhZFxubGV0IHByaW50IF8gPSBgRGVwcmVjYXRlZF91c2VfRXhuX3RvX3N0cmluZ19pbnN0ZWFkXG5sZXQgY2F0Y2ggXyBfID0gYERlcHJlY2F0ZWRfdXNlX0V4bl9oYW5kbGVfdW5jYXVnaHRfaW5zdGVhZFxubGV0IHByaW50X2JhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMucHJpbnRfYmFja3RyYWNlXG5sZXQgZ2V0X2JhY2t0cmFjZSA9IENhbWwuUHJpbnRleGMuZ2V0X2JhY2t0cmFjZVxubGV0IHJlY29yZF9iYWNrdHJhY2UgPSBDYW1sLlByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2VcbmxldCBiYWNrdHJhY2Vfc3RhdHVzID0gQ2FtbC5QcmludGV4Yy5iYWNrdHJhY2Vfc3RhdHVzXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFzZS5PcHRpb25fYXJyYXlcblxuaW5jbHVkZVxuICBCaW5hYmxlLk9mX2JpbmFibGUxX3dpdGhvdXRfdXVpZCBbQGFsZXJ0IFwiLWxlZ2FjeVwiXVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9ICdhIG9wdGlvbiBhcnJheSBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW9dXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlID0gdG9fYXJyYXlcbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2ZfYXJyYXlcbiAgICBlbmQpXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkxhenl9W0Jhc2UuTGF6eV19LiAqKVxuXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgQmFzZS5MYXp5LnRcbltAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZSwgaGFzaCwgcXVpY2tjaGVjaywgc2V4cCwgc2V4cF9ncmFtbWFyLCB0eXBlcmVwXVxuXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIEJhc2UuTGF6eSB3aXRoIHR5cGUgJ2EgdCA6PSAnYSB0ICgqKiBAaW5saW5lICopXG5cbm1vZHVsZSBTdGFibGUgOiBzaWdcbiAgbW9kdWxlIFYxIDogU3RhYmxlX21vZHVsZV90eXBlcy5TMSB3aXRoIHR5cGUgJ2EgdCA9ICdhIHRcbmVuZFxuIiwib3BlbiEgSW1wb3J0XG5cbnR5cGUgY29tcGFyZSA9XG4gIFsgYG5vX3BvbHltb3JwaGljX2NvbXBhcmUgXVxuICAtPiBbIGBub19wb2x5bW9ycGhpY19jb21wYXJlIF1cbiAgLT4gWyBgbm9fcG9seW1vcnBoaWNfY29tcGFyZSBdXG5cbmxldCBjb21wYXJlIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoIDw9ICkgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCAoID4gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPj0gKSBfIF8gPSBgbm9fcG9seW1vcnBoaWNfY29tcGFyZVxubGV0ICggPSApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgKCA8PiApIF8gXyA9IGBub19wb2x5bW9ycGhpY19jb21wYXJlXG5sZXQgZXF1YWwgXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtaW4gXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbmxldCBtYXggXyBfID0gYG5vX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIm9wZW4hIEltcG9ydFxub3BlbiBTdGRfaW50ZXJuYWxcblxudHlwZSAoJ2EsICdiKSBmbiA9ICdhIC0+ICdiXG5cbm1vZHVsZSBSZXN1bHQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFJ2YWwgb2YgJ2FcbiAgICB8IEV4cHQgb2YgZXhuXG5cbiAgbGV0IHJldHVybiA9IGZ1bmN0aW9uXG4gICAgfCBSdmFsIHYgLT4gdlxuICAgIHwgRXhwdCBlIC0+IHJhaXNlIGVcbiAgOztcblxuICBsZXQgY2FwdHVyZSBmIHggPVxuICAgIHRyeSBSdmFsIChmIHgpIHdpdGhcbiAgICB8IENhbWwuU3lzLkJyZWFrIGFzIGUgLT4gcmFpc2UgZVxuICAgIHwgZSAtPiBFeHB0IGVcbiAgOztcbmVuZFxuXG5sZXQgdW5pdCBmID1cbiAgbGV0IGwgPSBMYXp5LmZyb21fZnVuIGYgaW5cbiAgZnVuICgpIC0+IExhenkuZm9yY2UgbFxuOztcblxubGV0IHVuYm91bmRlZCAodHlwZSBhKSA/KGhhc2hhYmxlID0gSGFzaHRibC5IYXNoYWJsZS5wb2x5KSBmID1cbiAgbGV0IGNhY2hlID1cbiAgICBsZXQgbW9kdWxlIEEgPVxuICAgICAgSGFzaGFibGUuTWFrZV9wbGFpbl9hbmRfZGVyaXZlX2hhc2hfZm9sZF90IChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gYVxuXG4gICAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgICAgZW5kKVxuICAgIGluXG4gICAgQS5UYWJsZS5jcmVhdGUgKCkgfnNpemU6MFxuICBpblxuICAoKiBBbGxvY2F0ZSB0aGlzIGNsb3N1cmUgYXQgdGhlIGNhbGwgdG8gW3VuYm91bmRlZF0sIG5vdCBhdCBlYWNoIGNhbGwgdG8gdGhlIG1lbW9pemVkXG4gICAgIGZ1bmN0aW9uLiAqKVxuICBsZXQgcmVhbGx5X2NhbGxfZiBhcmcgPSBSZXN1bHQuY2FwdHVyZSBmIGFyZyBpblxuICBmdW4gYXJnIC0+IFJlc3VsdC5yZXR1cm4gKEhhc2h0YmwuZmluZGlfb3JfYWRkIGNhY2hlIGFyZyB+ZGVmYXVsdDpyZWFsbHlfY2FsbF9mKVxuOztcblxuKCogdGhlIHNhbWUgYnV0IHdpdGggYSBib3VuZCBvbiBjYWNoZSBzaXplICopXG5sZXQgbHJ1ICh0eXBlIGEpID8oaGFzaGFibGUgPSBIYXNodGJsLkhhc2hhYmxlLnBvbHkpIH5tYXhfY2FjaGVfc2l6ZSBmID1cbiAgaWYgbWF4X2NhY2hlX3NpemUgPD0gMFxuICB0aGVuIGZhaWx3aXRoZiBcIk1lbW8ubHJ1OiBtYXhfY2FjaGVfc2l6ZSBvZiAlaSA8PSAwXCIgbWF4X2NhY2hlX3NpemUgKCk7XG4gIGxldCBtb2R1bGUgQ2FjaGUgPVxuICAgIEhhc2hfcXVldWUuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBhXG5cbiAgICAgIGxldCB7IEhhc2h0YmwuSGFzaGFibGUuaGFzaDsgY29tcGFyZTsgc2V4cF9vZl90IH0gPSBoYXNoYWJsZVxuICAgIGVuZClcbiAgaW5cbiAgbGV0IGNhY2hlID0gQ2FjaGUuY3JlYXRlICgpIGluXG4gIGZ1biBhcmcgLT5cbiAgICBSZXN1bHQucmV0dXJuXG4gICAgICAobWF0Y2ggQ2FjaGUubG9va3VwX2FuZF9tb3ZlX3RvX2JhY2sgY2FjaGUgYXJnIHdpdGhcbiAgICAgICB8IFNvbWUgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgbGV0IHJlc3VsdCA9IFJlc3VsdC5jYXB0dXJlIGYgYXJnIGluXG4gICAgICAgICBDYWNoZS5lbnF1ZXVlX2JhY2tfZXhuIGNhY2hlIGFyZyByZXN1bHQ7XG4gICAgICAgICAoKiBlamVjdCBsZWFzdCByZWNlbnRseSB1c2VkIGNhY2hlIGVudHJ5ICopXG4gICAgICAgICBpZiBDYWNoZS5sZW5ndGggY2FjaGUgPiBtYXhfY2FjaGVfc2l6ZVxuICAgICAgICAgdGhlbiBpZ25vcmUgKENhY2hlLmRlcXVldWVfZnJvbnRfZXhuIGNhY2hlIDogXyBSZXN1bHQudCk7XG4gICAgICAgICByZXN1bHQpXG47O1xuXG5sZXQgZ2VuZXJhbCA/aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZiA9XG4gIG1hdGNoIGNhY2hlX3NpemVfYm91bmQgd2l0aFxuICB8IE5vbmUgLT4gdW5ib3VuZGVkID9oYXNoYWJsZSBmXG4gIHwgU29tZSBuIC0+IGxydSA/aGFzaGFibGUgfm1heF9jYWNoZV9zaXplOm4gZlxuOztcblxuKCogV2UgZXhwZWN0IFtmX29uZXN0ZXBdIHRvIGJlIGEgb25lLXN0ZXAgdW5yb2xsZWQgcmVjdXJzaXZlIGZ1bmN0aW9uOyBzZWUgdGhlIG1saS4gSGVuY2UsXG4gICBoZXJlIHdlIGNyZWF0ZSB0aGUgbWVtb2l6ZWQgZnVuY3Rpb24gX2FuZF8gcGFzcyBpdCB0byBbZl9vbmVzdGVwXSB0byBiZSB1c2VkIGZvclxuICAgcmVjdXJzaXZlIGNhbGxzLlxuXG4gICBOb3RlIHRoYXQgd2UgaW1tZWRpYXRlbHkgYXBwbHkgW2Zfb25lc3RlcF0gdG8gaXRzIGZpcnN0IGFyZ3VtZW50IGhlcmUgc28gdGhhdCBhbnlcbiAgIHByZWNvbXB1dGF0aW9uIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSB1c2VyIGNhbGxzIFtyZWN1cnNpdmVdLlxuXG4gICBBcyBhbiBleGFtcGxlLCBpZiBzb21lb25lIHdyaXRlcyB0aGlzIG5vbi1tZW1vaXplZCBjb2RlOlxuXG4gICBbIGxldCByZWMgZiA9IGxldCBkYXRhID0gY29tcHV0ZV93aXRob3V0X3VzaW5nX2YgKCkgaW4gZnVuIHggLT4gLi4uIGYgLi4uIF1cblxuICAgYW5kIGNvbnZlcnRzIHRvIG1lbW9pemF0aW9uIGJ5IGRvaW5nOlxuXG4gICB7W1xuICAgICBsZXQgZiA9XG4gICAgICAgbGV0IGZfb25lc3RlcCBmID0gbGV0IGRhdGEgPSBjb21wdXRlX3dpdGhvdXRfdXNpbmdfZiAoKSBpbiBmdW4geCAtPiAuLi4gZiAuLi4gaW5cbiAgICAgICByZWN1cnNpdmUgZl9vbmVzdGVwXG4gICBdfVxuXG4gICB3ZSB3YW50IHRvIGNvbXB1dGUgW2RhdGFdIGltbWVkaWF0ZWx5LiBJZiB3ZSBoYWQgW2Z1biB4IC0+IGZfb25lc3RlcCAoZm9yY2UgbWVtb2l6ZWQpXG4gICB4XSBiZWxvdywgd2UnZCByZWNvbXB1dGUgW2RhdGFdIGVhY2ggdGltZSB0aGUgdXNlciBjYWxscyBbZl0gb24gYW4gYXJndW1lbnQgdGhhdCBoYWRuJ3RcbiAgIHlldCBiZWVuIG1lbW9pemVkLiAqKVxubGV0IHJlY3Vyc2l2ZSB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgZl9vbmVzdGVwID1cbiAgbGV0IHJlYyBtZW1vaXplZCA9XG4gICAgbGF6eSAoZ2VuZXJhbCB+aGFzaGFibGUgP2NhY2hlX3NpemVfYm91bmQgKGZfb25lc3RlcCAoZnVuIHggLT4gKGZvcmNlIG1lbW9pemVkKSB4KSkpXG4gIGluXG4gIGZvcmNlIG1lbW9pemVkXG47O1xuXG5sZXQgb2ZfY29tcGFyYWJsZSAodHlwZSBpbmRleCkgKG1vZHVsZSBNIDogQ29tcGFyYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gaW5kZXgpIGYgPVxuICBsZXQgbSA9IHJlZiBNLk1hcC5lbXB0eSBpblxuICBmdW4gKHggOiBNLnQpIC0+XG4gICAgbGV0IHYgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmQgIW0geCB3aXRoXG4gICAgICB8IFNvbWUgdiAtPiB2XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IHYgPSBSZXN1bHQuY2FwdHVyZSBmIHggaW5cbiAgICAgICAgbSA6PSBNYXAuc2V0ICFtIH5rZXk6eCB+ZGF0YTp2O1xuICAgICAgICB2XG4gICAgaW5cbiAgICBSZXN1bHQucmV0dXJuIHZcbjs7XG4iLCJvcGVuISBJbXBvcnRcbm1vZHVsZSBRdWV1ZSA9IEJhc2UuTGlua2VkX3F1ZXVlXG5pbmNsdWRlIFF1ZXVlXG5cbmluY2x1ZGUgQmluX3Byb3QuVXRpbHMuTWFrZV9pdGVyYWJsZV9iaW5hYmxlMSAoc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2EgUXVldWUudFxuICAgIHR5cGUgJ2EgZWwgPSAnYSBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICBsZXQgY2FsbGVyX2lkZW50aXR5ID1cbiAgICAgIEJpbl9wcm90LlNoYXBlLlV1aWQub2Zfc3RyaW5nIFwiODAwZGY5YTAtNDk5Mi0xMWU2LTg4MWQtZmZlMWE1YzhhY2VkXCJcbiAgICA7O1xuXG4gICAgbGV0IG1vZHVsZV9uYW1lID0gU29tZSBcIkNvcmUuTGlua2VkX3F1ZXVlXCJcbiAgICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG5cbiAgICAoKiBCaW5fcHJvdCByZWFkcyB0aGUgZWxlbWVudHMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSB3ZXJlIHdyaXR0ZW4gb3V0LCBhcyBkZXRlcm1pbmVkXG4gICAgICAgYnkgW2l0ZXJdLiAgU28sIHdlIGNhbiBpZ25vcmUgdGhlIGluZGV4IGFuZCBqdXN0IGVucXVldWUgZWFjaCBlbGVtZW50IGFzIGl0IGlzIHJlYWRcbiAgICAgICBpbi4gKilcbiAgICBsZXQgaW5pdCB+bGVuIH5uZXh0ID1cbiAgICAgIGxldCB0ID0gY3JlYXRlICgpIGluXG4gICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgIGVucXVldWUgdCAobmV4dCAoKSlcbiAgICAgIGRvbmU7XG4gICAgICB0XG4gICAgOztcbiAgZW5kKVxuIiwib3BlbiEgSW1wb3J0XG5pbmNsdWRlIERlcml2aW5nX2hhc2hfaW50ZlxuXG5tb2R1bGUgT2ZfZGVyaXZpbmdfaGFzaFxuICAgIChSZXByIDogUykgKE0gOiBzaWdcbiAgICAgICAgICAgICAgICAgIHR5cGUgdFxuXG4gICAgICAgICAgICAgICAgICB2YWwgdG9fcmVwciA6IHQgLT4gUmVwci50XG4gICAgICAgICAgICAgICAgZW5kKSA9XG5zdHJ1Y3RcbiAgbGV0IGhhc2hfZm9sZF90IHN0YXRlIHQgPSBSZXByLmhhc2hfZm9sZF90IHN0YXRlIChNLnRvX3JlcHIgdClcbiAgbGV0IGhhc2ggPSBQcHhfaGFzaF9saWIuU3RkLkhhc2gub2ZfZm9sZCBoYXNoX2ZvbGRfdFxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbm9wZW4gU3RkX2ludGVybmFsXG5cbnR5cGUgJ2EgdCA9XG4gIHsgKCogW2Fycl0gaXMgYSBjeWNsaWMgYnVmZmVyICopXG4gICAgbXV0YWJsZSBhcnIgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7ICgqIFtmcm9udF9pbmRleF0gYW5kIFtiYWNrX2luZGV4XSBhcmUgdGhlIHBvc2l0aW9ucyBpbiB3aGljaCBuZXcgZWxlbWVudHMgbWF5IGJlXG4gICAgICAgZW5xdWV1ZWQuICBUaGlzIG1ha2VzIHRoZSBhY3RpdmUgcGFydCBvZiBbYXJyXSB0aGUgcmFuZ2UgZnJvbSBbZnJvbnRfaW5kZXgrMV0gdG9cbiAgICAgICBbYmFja19pbmRleC0xXSAobW9kdWxvIHRoZSBsZW5ndGggb2YgW2Fycl0gYW5kIHdyYXBwaW5nIGFyb3VuZCBpZiBuZWNlc3NhcnkpLiAgTm90ZVxuICAgICAgIHRoYXQgdGhpcyBtZWFucyB0aGUgYWN0aXZlIHJhbmdlIGlzIG1heGltaXplZCB3aGVuIFtmcm9udF9pbmRleCA9IGJhY2tfaW5kZXhdLCB3aGljaFxuICAgICAgIG9jY3VycyB3aGVuIHRoZXJlIGFyZSBbQXJyYXkubGVuZ3RoIGFyciAtIDFdIGFjdGl2ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIGZyb250X2luZGV4IDogaW50XG4gIDsgbXV0YWJsZSBiYWNrX2luZGV4IDogaW50XG4gIDsgKCogYXBwYXJlbnRfZnJvbnRfaW5kZXggaXMgd2hhdCBpcyBleHBvc2VkIGFzIHRoZSBmcm9udCBpbmRleCBleHRlcm5hbGx5LiAgSXQgaGFzIG5vXG4gICAgICAgcmVhbCByZWxhdGlvbiB0byB0aGUgYXJyYXkgLS0gZXZlcnkgZW5xdWV1ZSB0byB0aGUgZnJvbnQgZGVjcmVtZW50cyBpdCBhbmQgZXZlcnlcbiAgICAgICBkZXF1ZXVlIGZyb20gdGhlIGZyb250IGluY3JlbWVudHMgaXQuICopXG4gICAgbXV0YWJsZSBhcHBhcmVudF9mcm9udF9pbmRleCA6IGludFxuICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gIDsgKCogV2Uga2VlcCBhcnJfbGVuZ3RoIGhlcmUgYXMgYSBzcGVlZCBoYWNrLiAgQ2FsbGluZyBBcnJheS5sZW5ndGggb24gYXJyIGlzIGFjdHVhbGx5XG4gICAgICAgbWVhbmluZ2Z1bGx5IHNsb3dlci4gKilcbiAgICBtdXRhYmxlIGFycl9sZW5ndGggOiBpbnRcbiAgOyBuZXZlcl9zaHJpbmsgOiBib29sXG4gIH1cblxubGV0IGNyZWF0ZSA/aW5pdGlhbF9sZW5ndGggP25ldmVyX3NocmluayAoKSA9XG4gIGxldCBuZXZlcl9zaHJpbmsgPVxuICAgIG1hdGNoIG5ldmVyX3NocmluayB3aXRoXG4gICAgfCBOb25lIC0+IE9wdGlvbi5pc19zb21lIGluaXRpYWxfbGVuZ3RoXG4gICAgfCBTb21lIGIgLT4gYlxuICBpblxuICBsZXQgaW5pdGlhbF9sZW5ndGggPSBPcHRpb24udmFsdWUgfmRlZmF1bHQ6NyBpbml0aWFsX2xlbmd0aCBpblxuICBpZiBpbml0aWFsX2xlbmd0aCA8IDBcbiAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJwYXNzZWQgbmVnYXRpdmUgaW5pdGlhbF9sZW5ndGggdG8gRGVxdWUuY3JlYXRlOiAlaVwiIGluaXRpYWxfbGVuZ3RoICgpO1xuICAoKiBNYWtlIHRoZSBpbml0aWFsIGFycmF5IGxlbmd0aCBiZSBbaW5pdGlhbF9sZW5ndGggKyAxXSBzbyB3ZSBjYW4gZml0IFtpbml0aWFsX2xlbmd0aF1cbiAgICAgZWxlbWVudHMgd2l0aG91dCBncm93aW5nLiAgV2UgbmV2ZXIgcXVpdGUgdXNlIHRoZSB3aG9sZSBhcnJheS4gKilcbiAgbGV0IGFycl9sZW5ndGggPSBpbml0aWFsX2xlbmd0aCArIDEgaW5cbiAgeyBhcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46YXJyX2xlbmd0aFxuICA7IGZyb250X2luZGV4ID0gMFxuICA7IGJhY2tfaW5kZXggPSAxXG4gIDsgYXBwYXJlbnRfZnJvbnRfaW5kZXggPSAwXG4gIDsgbGVuZ3RoID0gMFxuICA7IGFycl9sZW5ndGhcbiAgOyBuZXZlcl9zaHJpbmtcbiAgfVxuOztcblxubGV0IGxlbmd0aCB0ID0gdC5sZW5ndGhcbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5cbigqIFdlIGtlZXAgdHJhY2sgb2YgdGhlIGxlbmd0aCBpbiBhIG11dGFibGUgZmllbGQgZm9yIHNwZWVkLCBidXQgdGhpcyBjYWxjdWxhdGlvbiBzaG91bGRcbiAgIGJlIGNvcnJlY3QgYnkgY29uc3RydWN0aW9uLCBhbmQgY2FuIGJlIHVzZWQgZm9yIHRlc3RpbmcuICopXG5sZXQgX2ludmFyaWFudF9sZW5ndGggdCA9XG4gIGxldCBjb25zdHJ1Y3RlZF9sZW5ndGggPVxuICAgIGlmIHQuZnJvbnRfaW5kZXggPCB0LmJhY2tfaW5kZXhcbiAgICB0aGVuIHQuYmFja19pbmRleCAtIHQuZnJvbnRfaW5kZXggLSAxXG4gICAgZWxzZSB0LmJhY2tfaW5kZXggLSB0LmZyb250X2luZGV4IC0gMSArIHQuYXJyX2xlbmd0aFxuICBpblxuICBhc3NlcnQgKGxlbmd0aCB0ID0gY29uc3RydWN0ZWRfbGVuZ3RoKVxuOztcblxuKCogVGhlIHZhcmlvdXMgXCJ3aGVuX25vdF9lbXB0eVwiIGZ1bmN0aW9ucyByZXR1cm4gbWlzbGVhZGluZyBudW1iZXJzIHdoZW4gdGhlIGRlcXVldWUgaXNcbiAgIGVtcHR5LiAgVGhleSBhcmUgc2FmZSB0byBjYWxsIGlmIGl0IGlzIGtub3duIHRoYXQgdGhlIGRlcXVldWUgaXMgbm9uLWVtcHR5LiAqKVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPSB0LmFwcGFyZW50X2Zyb250X2luZGV4XG5sZXQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0ID0gdC5hcHBhcmVudF9mcm9udF9pbmRleCArIGxlbmd0aCB0IC0gMVxuXG5sZXQgYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmZyb250X2luZGV4ID0gdC5hcnJfbGVuZ3RoIC0gMSB0aGVuIDAgZWxzZSB0LmZyb250X2luZGV4ICsgMVxuOztcblxubGV0IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgPVxuICBpZiB0LmJhY2tfaW5kZXggPSAwIHRoZW4gdC5hcnJfbGVuZ3RoIC0gMSBlbHNlIHQuYmFja19pbmRleCAtIDFcbjs7XG5cbmxldCBjaGVja2VkIHQgZiA9IGlmIGlzX2VtcHR5IHQgdGhlbiBOb25lIGVsc2UgU29tZSAoZiB0KVxubGV0IGFwcGFyZW50X2Zyb250X2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHlcbmxldCBhcHBhcmVudF9iYWNrX2luZGV4IHQgPSBjaGVja2VkIHQgYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eVxuXG5sZXQgZm9sZGknIHQgZGlyIH5pbml0IH5mID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGluaXRcbiAgZWxzZSAoXG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaSB+c3RvcF9wb3MgfnN0ZXAgPVxuICAgICAgaWYgcmVhbF9pID0gc3RvcF9wb3NcbiAgICAgIHRoZW4gYWNjLCBhcHBhcmVudF9pXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoZiBhcHBhcmVudF9pIGFjYyAoT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciByZWFsX2kpKVxuICAgICAgICAgIH5hcHBhcmVudF9pOihhcHBhcmVudF9pICsgc3RlcClcbiAgICAgICAgICB+cmVhbF9pOihyZWFsX2kgKyBzdGVwKVxuICAgICAgICAgIH5zdG9wX3Bvc1xuICAgICAgICAgIH5zdGVwXG4gICAgaW5cbiAgICAoKiBXZSB3YW50IHRvIGl0ZXJhdGUgZnJvbSBhY3R1YWxfZnJvbnQgdG8gYWN0dWFsX2JhY2sgKG9yIHZpY2UgdmVyc2EpLCBidXQgd2UgbWF5XG4gICAgICAgbmVlZCB0byB3cmFwIGFyb3VuZCB0aGUgYXJyYXkgdG8gZG8gc28uICBUaHVzIHdlIGRvIHRoZSBmb2xsb3dpbmc6XG4gICAgICAgMS4gIElmIHRoZSBhY3RpdmUgcmFuZ2UgaXMgY29udGlndW91cyAoaS5lLiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2spLCB0aGVuIGxvb3BcbiAgICAgICBzdGFydGluZyBhdCB0aGUgYXBwcm9wcmlhdGUgZW5kIG9mIHRoZSBhY3RpdmUgcmFuZ2UgdW50aWwgd2UgcmVhY2ggdGhlIGZpcnN0XG4gICAgICAgZWxlbWVudCBvdXRzaWRlIG9mIGl0LlxuICAgICAgIDIuICBJZiBpdCBpcyBub3QgY29udGlndW91cyAoYWN0dWFsX2Zyb250ID4gYWN0dWFsX2JhY2spLCB0aGVuIGZpcnN0IGxvb3AgZnJvbSB0aGVcbiAgICAgICBhcHByb3ByaWF0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZSB0byB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIFRoZW4sIGxvb3AgZnJvbVxuICAgICAgIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFycmF5IHRvIHRoZSBvcHBvc2l0ZSBlbmQgb2YgdGhlIGFjdGl2ZSByYW5nZS5cbiAgICAqKVxuICAgIG1hdGNoIGRpciB3aXRoXG4gICAgfCBgZnJvbnRfdG9fYmFjayAtPlxuICAgICAgaWYgYWN0dWFsX2Zyb250IDw9IGFjdHVhbF9iYWNrXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGFjYywgXyA9XG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgfmFwcGFyZW50X2k6YXBwYXJlbnRfZnJvbnRcbiAgICAgICAgICAgIH5yZWFsX2k6YWN0dWFsX2Zyb250XG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSlcbiAgICAgICAgICAgIH5zdGVwOjFcbiAgICAgICAgaW5cbiAgICAgICAgYWNjKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBhY2MsIGFwcGFyZW50X2kgPVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgIH5hcHBhcmVudF9pOmFwcGFyZW50X2Zyb250XG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9mcm9udFxuICAgICAgICAgICAgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aFxuICAgICAgICAgICAgfnN0ZXA6MVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID0gbG9vcCBhY2MgfmFwcGFyZW50X2kgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSB+c3RlcDoxIGluXG4gICAgICAgIGFjYylcbiAgICB8IGBiYWNrX3RvX2Zyb250IC0+XG4gICAgICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KGFjdHVhbF9mcm9udCAtIDEpXG4gICAgICAgICAgICB+c3RlcDooLTEpXG4gICAgICAgIGluXG4gICAgICAgIGFjYylcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgYWNjLCBhcHBhcmVudF9pID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBpbml0XG4gICAgICAgICAgICB+YXBwYXJlbnRfaTphcHBhcmVudF9iYWNrXG4gICAgICAgICAgICB+cmVhbF9pOmFjdHVhbF9iYWNrXG4gICAgICAgICAgICB+c3RvcF9wb3M6KC0xKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWNjLCBfID1cbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIH5hcHBhcmVudF9pXG4gICAgICAgICAgICB+cmVhbF9pOih0LmFycl9sZW5ndGggLSAxKVxuICAgICAgICAgICAgfnN0b3BfcG9zOihhY3R1YWxfZnJvbnQgLSAxKVxuICAgICAgICAgICAgfnN0ZXA6KC0xKVxuICAgICAgICBpblxuICAgICAgICBhY2MpKVxuOztcblxubGV0IGZvbGQnIHQgZGlyIH5pbml0IH5mID0gZm9sZGknIHQgZGlyIH5pbml0IH5mOihmdW4gXyBhY2MgdiAtPiBmIGFjYyB2KVxubGV0IGl0ZXJpJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIGkgKCkgdiAtPiBmIGkgdilcbmxldCBpdGVyJyB0IGRpciB+ZiA9IGZvbGRpJyB0IGRpciB+aW5pdDooKSB+ZjooZnVuIF8gKCkgdiAtPiBmIHYpXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZCcgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGZvbGRpIHQgfmluaXQgfmYgPSBmb2xkaScgdCBgZnJvbnRfdG9fYmFjayB+aW5pdCB+ZlxubGV0IGl0ZXJpIHQgfmYgPSBpdGVyaScgdCBgZnJvbnRfdG9fYmFjayB+ZlxuXG5sZXQgaXRlcmlfaW50ZXJuYWwgdCB+ZiA9XG4gIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgdGhlbiAoXG4gICAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgbGV0IGFjdHVhbF9iYWNrID0gYWN0dWFsX2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCByZWMgbG9vcCB+cmVhbF9pIH5zdG9wX3BvcyA9XG4gICAgICBpZiByZWFsX2kgPCBzdG9wX3Bvc1xuICAgICAgdGhlbiAoXG4gICAgICAgIGYgdC5hcnIgcmVhbF9pO1xuICAgICAgICBsb29wIH5yZWFsX2k6KHJlYWxfaSArIDEpIH5zdG9wX3BvcylcbiAgICBpblxuICAgIGlmIGFjdHVhbF9mcm9udCA8PSBhY3R1YWxfYmFja1xuICAgIHRoZW4gbG9vcCB+cmVhbF9pOmFjdHVhbF9mcm9udCB+c3RvcF9wb3M6KGFjdHVhbF9iYWNrICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxvb3AgfnJlYWxfaTphY3R1YWxfZnJvbnQgfnN0b3BfcG9zOnQuYXJyX2xlbmd0aDtcbiAgICAgIGxvb3AgfnJlYWxfaTowIH5zdG9wX3BvczooYWN0dWFsX2JhY2sgKyAxKSkpXG47O1xuXG5sZXQgaXRlciB0IH5mID0gaXRlcmlfaW50ZXJuYWwgdCB+ZjooZnVuIGFyciBpIC0+IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gYXJyIGkgfD4gZilcblxubGV0IGNsZWFyIHQgPVxuICBpZiB0Lm5ldmVyX3Nocmlua1xuICB0aGVuXG4gICAgKCogY2xlYXIgdGhlIGFycmF5IHRvIGFsbG93IGVsZW1lbnRzIHRvIGJlIGdhcmJhZ2UgY29sbGVjdGVkICopXG4gICAgaXRlcmlfaW50ZXJuYWwgdCB+ZjpPcHRpb25fYXJyYXkudW5zYWZlX3NldF9ub25lXG4gIGVsc2UgdC5hcnIgPC0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOjg7XG4gIHQuZnJvbnRfaW5kZXggPC0gMDtcbiAgdC5iYWNrX2luZGV4IDwtIDE7XG4gIHQubGVuZ3RoIDwtIDA7XG4gIHQuYXJyX2xlbmd0aCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIHQuYXJyXG47O1xuXG4oKiBXZSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZSwgaW1wb3J0aW5nIGFsbCBvZiBDb250YWluZXIuTWFrZSB3b3VsZCBjaGFuZ2UgdGhlIHJ1bnRpbWUgb2ZcbiAgIHNvbWUgZnVuY3Rpb25zIChbbGVuZ3RoXSBtaW5pbWFsbHkpIHNpbGVudGx5IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHNlbWFudGljcy4gIFdlIGdldFxuICAgYXJvdW5kIHRoYXQgYnkgaW1wb3J0aW5nIHRoaW5ncyBleHBsaWNpdGx5LiAgKilcbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBjb3VudCA9IEMuY291bnRcbmxldCBzdW0gPSBDLnN1bVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgbWVtID0gQy5tZW1cbmxldCBmb3JfYWxsID0gQy5mb3JfYWxsXG5sZXQgZmluZF9tYXAgPSBDLmZpbmRfbWFwXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IGJsaXQgbmV3X2FyciB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IGFjdHVhbF9mcm9udCA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCBhY3R1YWxfYmFjayA9IGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQgaW5cbiAgbGV0IG9sZF9hcnIgPSB0LmFyciBpblxuICBpZiBhY3R1YWxfZnJvbnQgPD0gYWN0dWFsX2JhY2tcbiAgdGhlblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOihsZW5ndGggdClcbiAgZWxzZSAoXG4gICAgbGV0IGJyZWFrX3BvcyA9IE9wdGlvbl9hcnJheS5sZW5ndGggb2xkX2FyciAtIGFjdHVhbF9mcm9udCBpblxuICAgIE9wdGlvbl9hcnJheS5ibGl0XG4gICAgICB+c3JjOm9sZF9hcnJcbiAgICAgIH5kc3Q6bmV3X2FyclxuICAgICAgfnNyY19wb3M6YWN0dWFsX2Zyb250XG4gICAgICB+ZHN0X3BvczowXG4gICAgICB+bGVuOmJyZWFrX3BvcztcbiAgICBPcHRpb25fYXJyYXkuYmxpdFxuICAgICAgfnNyYzpvbGRfYXJyXG4gICAgICB+ZHN0Om5ld19hcnJcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOmJyZWFrX3Bvc1xuICAgICAgfmxlbjooYWN0dWFsX2JhY2sgKyAxKSk7XG4gICgqIGxlbmd0aCBkZXBlbmRzIG9uIHQuYXJyIGFuZCB0LmZyb250X2luZGV4LCBzbyB0aGlzIG5lZWRzIHRvIGJlIGZpcnN0ICopXG4gIHQuYmFja19pbmRleCA8LSBsZW5ndGggdDtcbiAgdC5hcnIgPC0gbmV3X2FycjtcbiAgdC5hcnJfbGVuZ3RoIDwtIE9wdGlvbl9hcnJheS5sZW5ndGggbmV3X2FycjtcbiAgdC5mcm9udF9pbmRleCA8LSBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgLSAxO1xuICAoKiBTaW5jZSB0LmZyb250X2luZGV4ID0gT3B0aW9uX2FycmF5Lmxlbmd0aCBuZXdfYXJyIC0gMSwgdGhpcyBpcyBhc3NlcnRpbmcgdGhhdCB0LmJhY2tfaW5kZXhcbiAgICAgaXMgYSB2YWxpZCBpbmRleCBpbiB0aGUgYXJyYXkgYW5kIHRoYXQgdGhlIGFycmF5IGNhbiBzdXBwb3J0IGF0IGxlYXN0IG9uZSBtb3JlXG4gICAgIGVsZW1lbnQgLS0gcmVjYWxsLCBpZiB0LmZyb250X2luZGV4ID0gdC5iYWNrX2luZGV4IHRoZW4gdGhlIGFycmF5IGlzIGZ1bGwuXG5cbiAgICAgTm90ZSB0aGF0IHRoaXMgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBPcHRpb25fYXJyYXkubGVuZ3RoIG5ld19hcnIgPiBsZW5ndGggdCArIDEuXG4gICopXG4gIGFzc2VydCAodC5mcm9udF9pbmRleCA+IHQuYmFja19pbmRleClcbjs7XG5cbmxldCBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0ID1cbiAgaWYgKG5vdCB0Lm5ldmVyX3NocmluaykgJiYgdC5hcnJfbGVuZ3RoID4gMTAgJiYgdC5hcnJfbGVuZ3RoIC8gMyA+IGxlbmd0aCB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfYXJyID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOih0LmFycl9sZW5ndGggLyAyKSBpblxuICAgIGJsaXQgbmV3X2FyciB0KVxuOztcblxubGV0IGdyb3dfdW5kZXJseWluZyB0ID1cbiAgbGV0IG5ld19hcnIgPSBPcHRpb25fYXJyYXkuY3JlYXRlIH5sZW46KHQuYXJyX2xlbmd0aCAqIDIpIGluXG4gIGJsaXQgbmV3X2FyciB0XG47O1xuXG5sZXQgZW5xdWV1ZV9iYWNrIHQgdiA9XG4gIGlmIHQuZnJvbnRfaW5kZXggPSB0LmJhY2tfaW5kZXggdGhlbiBncm93X3VuZGVybHlpbmcgdDtcbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyIHQuYmFja19pbmRleCB2O1xuICB0LmJhY2tfaW5kZXggPC0gKGlmIHQuYmFja19pbmRleCA9IHQuYXJyX2xlbmd0aCAtIDEgdGhlbiAwIGVsc2UgdC5iYWNrX2luZGV4ICsgMSk7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWVfZnJvbnQgdCB2ID1cbiAgaWYgdC5mcm9udF9pbmRleCA9IHQuYmFja19pbmRleCB0aGVuIGdyb3dfdW5kZXJseWluZyB0O1xuICBPcHRpb25fYXJyYXkuc2V0X3NvbWUgdC5hcnIgdC5mcm9udF9pbmRleCB2O1xuICB0LmZyb250X2luZGV4IDwtIChpZiB0LmZyb250X2luZGV4ID0gMCB0aGVuIHQuYXJyX2xlbmd0aCAtIDEgZWxzZSB0LmZyb250X2luZGV4IC0gMSk7XG4gIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggPC0gdC5hcHBhcmVudF9mcm9udF9pbmRleCAtIDE7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IGVucXVldWUgdCBiYWNrX29yX2Zyb250IHYgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBlbnF1ZXVlX2JhY2sgdCB2XG4gIHwgYGZyb250IC0+IGVucXVldWVfZnJvbnQgdCB2XG47O1xuXG5sZXQgcGVla19mcm9udF9ub25lbXB0eSB0ID1cbiAgT3B0aW9uX2FycmF5LmdldF9zb21lX2V4biB0LmFyciAoYWN0dWFsX2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19mcm9udF9leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLnBlZWtfZnJvbnRfZXhuIHBhc3NlZCBhbiBlbXB0eSBxdWV1ZVwiXG4gIGVsc2UgcGVla19mcm9udF9ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19mcm9udCB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChwZWVrX2Zyb250X25vbmVtcHR5IHQpXG5cbmxldCBwZWVrX2JhY2tfbm9uZW1wdHkgdCA9XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKGFjdHVhbF9iYWNrX2luZGV4X3doZW5fbm90X2VtcHR5IHQpXG47O1xuXG5sZXQgcGVla19iYWNrX2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUucGVla19iYWNrX2V4biBwYXNzZWQgYW4gZW1wdHkgcXVldWVcIlxuICBlbHNlIHBlZWtfYmFja19ub25lbXB0eSB0XG47O1xuXG5sZXQgcGVla19iYWNrIHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHBlZWtfYmFja19ub25lbXB0eSB0KVxuXG5sZXQgcGVlayB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgYmFjayAtPiBwZWVrX2JhY2sgdFxuICB8IGBmcm9udCAtPiBwZWVrX2Zyb250IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHQgPVxuICBsZXQgaSA9IGFjdHVhbF9mcm9udF9pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuZnJvbnRfaW5kZXggPC0gaTtcbiAgdC5hcHBhcmVudF9mcm9udF9pbmRleCA8LSB0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxO1xuICBtYXliZV9zaHJpbmtfdW5kZXJseWluZyB0O1xuICByZXNcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250X2V4biB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGZhaWx3aXRoIFwiRGVxdWUuZGVxdWV1ZV9mcm9udF9leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2Zyb250X25vbmVtcHR5IHRcbjs7XG5cbmxldCBkZXF1ZXVlX2Zyb250IHQgPSBpZiBpc19lbXB0eSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKGRlcXVldWVfZnJvbnRfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfYmFja19ub25lbXB0eSB0ID1cbiAgbGV0IGkgPSBhY3R1YWxfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gIGxldCByZXMgPSBPcHRpb25fYXJyYXkuZ2V0X3NvbWVfZXhuIHQuYXJyIGkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9ub25lIHQuYXJyIGk7XG4gIHQuYmFja19pbmRleCA8LSBpO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIG1heWJlX3Nocmlua191bmRlcmx5aW5nIHQ7XG4gIHJlc1xuOztcblxubGV0IGRlcXVldWVfYmFja19leG4gdCA9XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlbiBmYWlsd2l0aCBcIkRlcXVlLmRlcXVldWVfYmFja19leG4gcGFzc2VkIGFuIGVtcHR5IHF1ZXVlXCJcbiAgZWxzZSBkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdFxuOztcblxubGV0IGRlcXVldWVfYmFjayB0ID0gaWYgaXNfZW1wdHkgdCB0aGVuIE5vbmUgZWxzZSBTb21lIChkZXF1ZXVlX2JhY2tfbm9uZW1wdHkgdClcblxubGV0IGRlcXVldWVfZXhuIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBmcm9udCAtPiBkZXF1ZXVlX2Zyb250X2V4biB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrX2V4biB0XG47O1xuXG5sZXQgZGVxdWV1ZSB0IGJhY2tfb3JfZnJvbnQgPVxuICBtYXRjaCBiYWNrX29yX2Zyb250IHdpdGhcbiAgfCBgZnJvbnQgLT4gZGVxdWV1ZV9mcm9udCB0XG4gIHwgYGJhY2sgLT4gZGVxdWV1ZV9iYWNrIHRcbjs7XG5cbmxldCBkcm9wX2dlbiA/KG4gPSAxKSB+ZGVxdWV1ZSB0ID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZ2YgXCJEZXF1ZS5kcm9wOiAgbmVnYXRpdmUgaW5wdXQgKCVkKVwiIG4gKCk7XG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID4gMFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggZGVxdWV1ZSB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAobiAtIDEpKVxuICBpblxuICBsb29wIG5cbjs7XG5cbmxldCBkcm9wX2Zyb250ID9uIHQgPSBkcm9wX2dlbiA/biB+ZGVxdWV1ZTpkZXF1ZXVlX2Zyb250IHRcbmxldCBkcm9wX2JhY2sgP24gdCA9IGRyb3BfZ2VuID9uIH5kZXF1ZXVlOmRlcXVldWVfYmFjayB0XG5cbmxldCBkcm9wID9uIHQgYmFja19vcl9mcm9udCA9XG4gIG1hdGNoIGJhY2tfb3JfZnJvbnQgd2l0aFxuICB8IGBiYWNrIC0+IGRyb3BfYmFjayA/biB0XG4gIHwgYGZyb250IC0+IGRyb3BfZnJvbnQgP24gdFxuOztcblxubGV0IGFzc2VydF9ub3RfZW1wdHkgdCBuYW1lID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZhaWx3aXRoZiBcIiVzOiBEZXF1ZS50IGlzIGVtcHR5XCIgbmFtZSAoKVxuXG5sZXQgdHJ1ZV9pbmRleF9leG4gdCBpID1cbiAgbGV0IGlfZnJvbV96ZXJvID0gaSAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXggaW5cbiAgaWYgaV9mcm9tX3plcm8gPCAwIHx8IGxlbmd0aCB0IDw9IGlfZnJvbV96ZXJvXG4gIHRoZW4gKFxuICAgIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLnRydWVfaW5kZXhfZXhuXCI7XG4gICAgbGV0IGFwcGFyZW50X2Zyb250ID0gYXBwYXJlbnRfZnJvbnRfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdCBpblxuICAgIGxldCBhcHBhcmVudF9iYWNrID0gYXBwYXJlbnRfYmFja19pbmRleF93aGVuX25vdF9lbXB0eSB0IGluXG4gICAgaW52YWxpZF9hcmdmXG4gICAgICBcImludmFsaWQgaW5kZXg6ICVpIGZvciBhcnJheSB3aXRoIGluZGljZXMgKCVpLCVpKVwiXG4gICAgICBpXG4gICAgICBhcHBhcmVudF9mcm9udFxuICAgICAgYXBwYXJlbnRfYmFja1xuICAgICAgKCkpO1xuICBsZXQgdHJ1ZV9pID0gdC5mcm9udF9pbmRleCArIDEgKyBpX2Zyb21femVybyBpblxuICBpZiB0cnVlX2kgPj0gdC5hcnJfbGVuZ3RoIHRoZW4gdHJ1ZV9pIC0gdC5hcnJfbGVuZ3RoIGVsc2UgdHJ1ZV9pXG47O1xuXG5sZXQgZ2V0IHQgaSA9IE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5hcnIgKHRydWVfaW5kZXhfZXhuIHQgaSlcblxubGV0IGdldF9vcHQgdCBpID1cbiAgdHJ5IFNvbWUgKGdldCB0IGkpIHdpdGhcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzZXRfZXhuIHQgaSB2ID0gT3B0aW9uX2FycmF5LnNldF9zb21lIHQuYXJyICh0cnVlX2luZGV4X2V4biB0IGkpIHZcblxubGV0IHRvX2FycmF5IHQgPVxuICBtYXRjaCBwZWVrX2Zyb250IHQgd2l0aFxuICB8IE5vbmUgLT4gW3x8XVxuICB8IFNvbWUgZnJvbnQgLT5cbiAgICBsZXQgYXJyID0gQXJyYXkuY3JlYXRlIH5sZW46KGxlbmd0aCB0KSBmcm9udCBpblxuICAgIGlnbm9yZVxuICAgICAgKGZvbGQgdCB+aW5pdDowIH5mOihmdW4gaSB2IC0+XG4gICAgICAgICBhcnIuKGkpIDwtIHY7XG4gICAgICAgICBpICsgMSlcbiAgICAgICA6IGludCk7XG4gICAgYXJyXG47O1xuXG5sZXQgb2ZfYXJyYXkgYXJyID1cbiAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOihBcnJheS5sZW5ndGggYXJyICsgMSkgKCkgaW5cbiAgQXJyYXkuaXRlciBhcnIgfmY6KGZ1biB2IC0+IGVucXVldWVfYmFjayB0IHYpO1xuICB0XG47O1xuXG5pbmNsdWRlIEJpbl9wcm90LlV0aWxzLk1ha2VfaXRlcmFibGVfYmluYWJsZTEgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG4gICAgdHlwZSAnYSBlbCA9ICdhIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgIGxldCBjYWxsZXJfaWRlbnRpdHkgPVxuICAgICAgQmluX3Byb3QuU2hhcGUuVXVpZC5vZl9zdHJpbmcgXCIzNGMxZTljYS00OTkyLTExZTYtYTY4Ni04YjRiZDRmODc3OTZcIlxuICAgIDs7XG5cbiAgICBsZXQgbW9kdWxlX25hbWUgPSBTb21lIFwiQ29yZS5EZXF1ZVwiXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgIGxldCBpdGVyIHQgfmYgPSBpdGVyIHQgfmZcblxuICAgIGxldCBpbml0IH5sZW4gfm5leHQgPVxuICAgICAgbGV0IHQgPSBjcmVhdGUgfmluaXRpYWxfbGVuZ3RoOmxlbiAoKSBpblxuICAgICAgZm9yIF9pID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICAgIGxldCB4ID0gbmV4dCAoKSBpblxuICAgICAgICBlbnF1ZXVlX2JhY2sgdCB4XG4gICAgICBkb25lO1xuICAgICAgdFxuICAgIDs7XG4gIGVuZClcblxubGV0IHRfb2Zfc2V4cCBmIHNleHAgPSBvZl9hcnJheSAoQXJyYXkudF9vZl9zZXhwIGYgc2V4cClcbmxldCBzZXhwX29mX3QgZiB0ID0gQXJyYXkuc2V4cF9vZl90IGYgKHRvX2FycmF5IHQpXG5cbmxldCB0X3NleHBfZ3JhbW1hciBlbHRfZ3JhbW1hciA9XG4gIFNleHBsaWIuU2V4cF9ncmFtbWFyLmNvZXJjZSAoQXJyYXkudF9zZXhwX2dyYW1tYXIgZWx0X2dyYW1tYXIpXG47O1xuXG4oKiByZS1leHBvc2UgdGhlc2UgaGVyZSB1bmRlciBhIGRpZmZlcmVudCBuYW1lIHRvIGF2b2lkIGludGVybmFsIGNvbmZ1c2lvbiAqKVxubGV0IGJhY2tfaW5kZXggPSBhcHBhcmVudF9iYWNrX2luZGV4XG5sZXQgZnJvbnRfaW5kZXggPSBhcHBhcmVudF9mcm9udF9pbmRleFxuXG5sZXQgYmFja19pbmRleF9leG4gdCA9XG4gIGFzc2VydF9ub3RfZW1wdHkgdCBcIkRlcXVlLmJhY2tfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2JhY2tfaW5kZXhfd2hlbl9ub3RfZW1wdHkgdFxuOztcblxubGV0IGZyb250X2luZGV4X2V4biB0ID1cbiAgYXNzZXJ0X25vdF9lbXB0eSB0IFwiRGVxdWUuZnJvbnRfaW5kZXhfZXhuXCI7XG4gIGFwcGFyZW50X2Zyb250X2luZGV4X3doZW5fbm90X2VtcHR5IHRcbjs7XG5cbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IFRlc3RfYmluYXJ5X3NlYXJjaGFibGUuTWFrZTFfYW5kX3Rlc3QgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZ2V0IHQgaSA9IGdldCB0IChmcm9udF9pbmRleF9leG4gdCArIGkpXG4gICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuXG4gICAgbW9kdWxlIEZvcl90ZXN0ID0gc3RydWN0XG4gICAgICBsZXQgb2ZfYXJyYXkgPSBvZl9hcnJheVxuICAgIGVuZFxuICBlbmQpXG5cbigqIFRoZSBcInN0YWJsZVwiIGluZGljZXMgdXNlZCBpbiB0aGlzIG1vZHVsZSBtYWtlIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGVcbiAgIFtCaW5hcnlfc2VhcmNoYWJsZV0gZnVuY3RvciBhd2t3YXJkLiAgV2UgbmVlZCB0byBiZSBzdXJlIHRvIHRyYW5zbGF0ZSBpbmNvbWluZ1xuICAgcG9zaXRpb25zIGZyb20gc3RhYmxlIHNwYWNlIHRvIHRoZSBleHBlY3RlZCAwIC0+IGxlbmd0aCAtIDEgc3BhY2UgYW5kIHRoZW4gd2UgbmVlZCB0b1xuICAgdHJhbnNsYXRlIHRoZW0gYmFjayBvbiByZXR1cm4uICopXG5sZXQgYmluYXJ5X3NlYXJjaCA/cG9zID9sZW4gdCB+Y29tcGFyZSBob3cgdiA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2ggP3BvcyA/bGVuIHQgfmNvbXBhcmUgaG93IHYgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgdW50cmFuc2xhdGVkX2kgLT4gU29tZSAodC5hcHBhcmVudF9mcm9udF9pbmRleCArIHVudHJhbnNsYXRlZF9pKVxuOztcblxubGV0IGJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyA9XG4gIGxldCBwb3MgPVxuICAgIG1hdGNoIHBvcyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcG9zIC0+IFNvbWUgKHBvcyAtIHQuYXBwYXJlbnRfZnJvbnRfaW5kZXgpXG4gIGluXG4gIG1hdGNoIEJpbmFyeV9zZWFyY2hhYmxlLmJpbmFyeV9zZWFyY2hfc2VnbWVudGVkID9wb3MgP2xlbiB0IH5zZWdtZW50X29mIGhvdyB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB1bnRyYW5zbGF0ZWRfaSAtPiBTb21lICh0LmFwcGFyZW50X2Zyb250X2luZGV4ICsgdW50cmFuc2xhdGVkX2kpXG47O1xuIiwib3BlbiEgSW1wb3J0XG5tb2R1bGUgTGlzdCA9IEJhc2UuTGlzdFxubW9kdWxlIFN0cmluZyA9IEJhc2UuU3RyaW5nXG5cbmxldCBlcHJpbnQgbWVzc2FnZSA9IFByaW50Zi5lcHJpbnRmIFwiJXNcXG4lIVwiIG1lc3NhZ2VcbmxldCBlcHJpbnRfcyBzZXhwID0gZXByaW50IChTZXhwLnRvX3N0cmluZ19odW0gc2V4cClcbmxldCBlcHJpbnRzIG1lc3NhZ2UgYSBzZXhwX29mX2EgPSBlcHJpbnRfcyAoWyVzZXhwX29mOiBzdHJpbmcgKiBhXSAobWVzc2FnZSwgYSkpXG5sZXQgZXByaW50ZiBmb3JtYXQgPSBQcmludGYua3NwcmludGYgZXByaW50IGZvcm1hdFxubGV0IGZhaWx3aXRocyA9IEVycm9yLmZhaWx3aXRoc1xuXG5tb2R1bGUgTWFrZSAoKSA9IHN0cnVjdFxuICBsZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIHRydWVcbiAgbGV0IHNob3dfbWVzc2FnZXMgPSByZWYgdHJ1ZVxuXG4gIGxldCBkZWJ1ZyBpbnZhcmlhbnQgfm1vZHVsZV9uYW1lIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlbiBlcHJpbnRzIChTdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBbIG1vZHVsZV9uYW1lOyBcIi5cIjsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgaWYgIWNoZWNrX2ludmFyaWFudFxuICAgIHRoZW4gKFxuICAgICAgdHJ5IExpc3QuaXRlciB0cyB+ZjppbnZhcmlhbnQgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiaW52YXJpYW50IHByZS1jb25kaXRpb24gZmFpbGVkXCJcbiAgICAgICAgICAobmFtZSwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogc3RyaW5nICogZXhuXSk7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFjaGVja19pbnZhcmlhbnRcbiAgICB0aGVuIChcbiAgICAgIHRyeSBMaXN0Lml0ZXIgdHMgfmY6aW52YXJpYW50IHdpdGhcbiAgICAgIHwgZXhuIC0+XG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcImludmFyaWFudCBwb3N0LWNvbmRpdGlvbiBmYWlsZWRcIlxuICAgICAgICAgIChuYW1lLCBleG4pXG4gICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBleG5dKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlc1xuICAgIHRoZW5cbiAgICAgIGVwcmludHNcbiAgICAgICAgKFN0cmluZy5jb25jYXQgfnNlcDpcIlwiIFsgbW9kdWxlX25hbWU7IFwiLlwiOyBuYW1lOyBcIi1yZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5lbmRcblxubGV0IHNob3VsZF9wcmludF9iYWNrdHJhY2UgPSByZWYgZmFsc2VcblxubGV0IGFtX2ludGVybmFsIGhlcmUgbWVzc2FnZSA9XG4gICgqIEluIHRoaXMgZnVuY3Rpb24gd2UgdXNlIFtQcmludGYuZXByaW50Zl0gcmF0aGVyIHRoYW4gW0RlYnVnLmVwcmludGZdLCBiZWNhdXNlIHRoZVxuICAgICBmb3JtZXIgZG9lc24ndCBmbHVzaCwgd2hpbGUgdGhlIGxhdHRlciBkb2VzLiAgV2UnZCByYXRoZXIgZmx1c2ggb25jZSBhdCB0aGUgZW5kLFxuICAgICByYXRoZXIgdGhhbiB0aHJlZSB0aW1lcy4gKilcbiAgUHJpbnRmLmVwcmludGYgXCIlczpcXG5cIiAoU291cmNlX2NvZGVfcG9zaXRpb24udG9fc3RyaW5nIGhlcmUpO1xuICBpZiAhc2hvdWxkX3ByaW50X2JhY2t0cmFjZVxuICB0aGVuXG4gICAgUHJpbnRmLmVwcmludGZcbiAgICAgIFwiJXNcXG5cIlxuICAgICAgKEJhY2t0cmFjZS5nZXQgKCkgfD4gWyVzZXhwX29mOiBCYWNrdHJhY2UudF0gfD4gU2V4cC50b19zdHJpbmdfaHVtKTtcbiAgKG1hdGNoIG1lc3NhZ2Ugd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgbWVzc2FnZSAtPiBQcmludGYuZXByaW50ZiBcIiVzXFxuXCIgbWVzc2FnZSk7XG4gIFByaW50Zi5lcHJpbnRmIFwiJSFcIlxuOztcblxubGV0IGFtIGhlcmUgPSBhbV9pbnRlcm5hbCBoZXJlIE5vbmVcbmxldCBhbWYgaGVyZSBmbXQgPSBQcmludGYua3NwcmludGYgKGZ1biBzdHJpbmcgLT4gYW1faW50ZXJuYWwgaGVyZSAoU29tZSBzdHJpbmcpKSBmbXRcblxubGV0IGFtcyBoZXJlIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBhbV9pbnRlcm5hbCBoZXJlIChTb21lICgobWVzc2FnZSwgYSkgfD4gWyVzZXhwX29mOiBzdHJpbmcgKiBhXSB8PiBTZXhwLnRvX3N0cmluZ19odW0pKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuaW5jbHVkZSBCYXNlLlN5c1xuXG5sZXQgdW5peF9xdW90ZSB4ID1cbiAgaWYgKG5vdCAoU3RyaW5nLmlzX2VtcHR5IHgpKVxuICAmJiBTdHJpbmcuZm9yX2FsbCB4IH5mOihmdW5jdGlvblxuICAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgIHwgJ0EnIC4uICdaJ1xuICAgICAgIHwgJzAnIC4uICc5J1xuICAgICAgIHwgJ18nIHwgJy0nIHwgJzonIHwgJy4nIHwgJy8nIHwgJywnIHwgJysnIHwgJz0nIHwgJyUnIHwgJ0AnIC0+IHRydWVcbiAgICAgICB8IF8gLT4gZmFsc2UpXG4gIHRoZW4gKFxuICAgICgqIFNoZWxsIGtleXdvcmRzLCBhcyBvdXRwdXQgYnkgW2NvbXBnZW4gLWtdIGZvciBiYXNoLCBbbWFuIGRhc2hdIGZvciBkYXNoLCBhbmQgW1BBVEg9XG4gICAgICAgdHlwZSAtbSAnKicgfCBncmVwIHJlc2VydmVkXSBmb3IgenNoLCBleGNlcHQgZm9yIGtleXdvcmRzIHRoYXQgaGF2ZSBzcGVjaWFsXG4gICAgICAgY2hhcmFjdGVycyBsaWtlIFtbLiBOb3RlIHRoYXQgYnVpbHRpbnMgZG9uJ3QgbWF0dGVyIGJlY2F1c2UgJ2FsaWFzJyBhbmQgYWxpYXNcbiAgICAgICBiZWhhdmUgdGhlIHNhbWUsIHVubGlrZSAnaWYnIGFuZCBpZi4gKilcbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IFwiaWZcIlxuICAgIHwgXCJ0aGVuXCJcbiAgICB8IFwiZWxzZVwiXG4gICAgfCBcImVsaWZcIlxuICAgIHwgXCJmaVwiXG4gICAgfCBcImNhc2VcIlxuICAgIHwgXCJlc2FjXCJcbiAgICB8IFwiZm9yXCJcbiAgICB8IFwic2VsZWN0XCJcbiAgICB8IFwid2hpbGVcIlxuICAgIHwgXCJ1bnRpbFwiXG4gICAgfCBcImRvXCJcbiAgICB8IFwiZG9uZVwiXG4gICAgfCBcImluXCJcbiAgICB8IFwiZnVuY3Rpb25cIlxuICAgIHwgXCJ0aW1lXCJcbiAgICB8IFwiY29wcm9jXCJcbiAgICB8IFwiZm9yZWFjaFwiXG4gICAgfCBcInJlcGVhdFwiXG4gICAgfCBcIm5vY29ycmVjdFwiIC0+IEZpbGVuYW1lLnF1b3RlIHhcbiAgICB8IF8gLT4geClcbiAgZWxzZSBGaWxlbmFtZS5xdW90ZSB4XG47O1xuXG5sZXQgcXVvdGUgPVxuICBtYXRjaCBDYW1sLlN5cy5vc190eXBlIHdpdGhcbiAgfCBcIlVuaXhcIiAtPiB1bml4X3F1b3RlXG4gIHwgXyAtPiBGaWxlbmFtZS5xdW90ZVxuOztcblxubGV0IGNvbmNhdF9xdW90ZWQgc3BsaXRfY29tbWFuZCA9XG4gIExpc3QubWFwIH5mOnF1b3RlIHNwbGl0X2NvbW1hbmQgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG47O1xuXG5sZXQgY19pbnRfc2l6ZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBjYXRjaF9icmVhayA9IGBVc2VfU3lzX3VuaXhcbmxldCBjaGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCBjb21tYW5kID0gYFVzZV9TeXNfdW5peFxubGV0IGNvbW1hbmRfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGV4ZWN1dGFibGVfbmFtZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBleGVjdXRpb25fbW9kZSA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0cyA9IGBVc2VfU3lzX3VuaXhcbmxldCBmaWxlX2V4aXN0c19leG4gPSBgVXNlX1N5c191bml4XG5sZXQgZm9sZF9kaXIgPSBgVXNlX1N5c191bml4XG5sZXQgZ2V0Y3dkID0gYFVzZV9TeXNfdW5peFxubGV0IGhvbWVfZGlyZWN0b3J5ID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2RpcmVjdG9yeSA9IGBVc2VfU3lzX3VuaXhcbmxldCBpc19kaXJlY3RvcnlfZXhuID0gYFVzZV9TeXNfdW5peFxubGV0IGlzX2ZpbGUgPSBgVXNlX1N5c191bml4XG5sZXQgaXNfZmlsZV9leG4gPSBgVXNlX1N5c191bml4XG5sZXQgbHNfZGlyID0gYFVzZV9TeXNfdW5peFxubGV0IG92ZXJyaWRlX2FyZ3YgPSBgVXNlX1N5c191bml4XG5sZXQgcmVhZGRpciA9IGBVc2VfU3lzX3VuaXhcbmxldCByZW1vdmUgPSBgVXNlX1N5c191bml4XG5sZXQgcmVuYW1lID0gYFVzZV9TeXNfdW5peFxubGV0IHVuc2FmZV9nZXRlbnYgPSBgVXNlX1N5c191bml4XG5sZXQgdW5zYWZlX2dldGVudl9leG4gPSBgVXNlX1N5c191bml4XG5cbmV4Y2VwdGlvbiBCcmVhayA9IENhbWwuU3lzLkJyZWFrXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIGxldCB1bml4X3F1b3RlID0gdW5peF9xdW90ZVxuZW5kXG4iLCJvcGVuISBJbXBvcnRcbmluY2x1ZGUgQmFnX2ludGZcbmluY2x1ZGUgKERvdWJseV9saW5rZWQgOiBEb3VibHlfbGlua2VkLlMpXG5cbmxldCBhZGQgPSBpbnNlcnRfZmlyc3RcbmxldCBhZGRfdW5pdCB0IHYgPSBhZGQgdCB2IHw+IChpZ25vcmUgOiBfIEVsdC50IC0+IHVuaXQpXG5sZXQgZWx0cyB0ID0gZm9sZF9lbHQgdCB+aW5pdDpbXSB+ZjooZnVuIGFjYyBlbHQgLT4gZWx0IDo6IGFjYylcbmxldCByZW1vdmVfb25lID0gcmVtb3ZlX2ZpcnN0XG5sZXQgY2hvb3NlID0gZmlyc3RfZWx0XG5cbmxldCB1bnRpbF9lbXB0eSB0IGYgPVxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIE9wdGlvbi5pdGVyIChyZW1vdmVfb25lIHQpIH5mOihmdW4gdiAtPlxuICAgICAgZiB2O1xuICAgICAgbG9vcCAoKSlcbiAgaW5cbiAgbG9vcCAoKVxuOztcbiIsIm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgYnN0ciA6IEJpZ3N0cmluZy50XG4gIDsgbXV0YWJsZSBwb3MgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbiA6IGludFxuICA7IGluaXQgOiBCaWdzdHJpbmcudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgcmVzaXplIGJ1ZiBtb3JlID1cbiAgbGV0IG1pbl9sZW4gPSBidWYubGVuICsgbW9yZSBpblxuICBsZXQgbmV3X2xlbiA9IG1pbl9sZW4gKyBtaW5fbGVuIGluXG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSBuZXdfbGVuIGluXG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zi5ic3RyIH5zcmNfbGVuOmJ1Zi5wb3MgfmRzdDpuZXdfYnVmICgpO1xuICBidWYuYnN0ciA8LSBuZXdfYnVmO1xuICBidWYubGVuIDwtIG5ld19sZW5cbjs7XG4iLCIoKiBTb21lIGNvZGUgdGFrZW4gZnJvbSBJTlJJQSdzIGJ1ZmZlciBtb2R1bGUuICopXG5cbm9wZW4hIEltcG9ydFxub3BlbiBCaWdzdHJpbmdcbmluY2x1ZGUgQmlnYnVmZmVyX2ludGVybmFsXG5cbmxldCBfX2ludGVybmFsICh0IDogdCkgPSB0XG5sZXQgbGVuZ3RoIHQgPSB0LnBvc1xuXG4oKiB7WyBsZXQgaW52YXJpYW50IHQgPSBhc3NlcnQgKHQubGVuID09IEJpZ3N0cmluZy5sZW5ndGggdC5ic3RyKSBdfSAqKVxuXG5sZXQgY3JlYXRlIG4gPVxuICBsZXQgbiA9IG1heCAxIG4gaW5cbiAgbGV0IGJzdHIgPSBCaWdzdHJpbmcuY3JlYXRlIG4gaW5cbiAgeyBic3RyOyBwb3MgPSAwOyBsZW4gPSBuOyBpbml0ID0gYnN0ciB9XG47O1xuXG5sZXQgY29udGVudHMgYnVmID0gQmlnc3RyaW5nLnRvX3N0cmluZyBidWYuYnN0ciB+bGVuOmJ1Zi5wb3NcbmxldCBjb250ZW50c19ieXRlcyBidWYgPSBCaWdzdHJpbmcudG9fYnl0ZXMgYnVmLmJzdHIgfmxlbjpidWYucG9zXG5sZXQgYmlnX2NvbnRlbnRzIGJ1ZiA9IHN1Ym8gfmxlbjpidWYucG9zIGJ1Zi5ic3RyXG5sZXQgdm9sYXRpbGVfY29udGVudHMgYnVmID0gYnVmLmJzdHJcblxubGV0IGFkZF9jaGFyIGJ1ZiBjID1cbiAgbGV0IHBvcyA9IGJ1Zi5wb3MgaW5cbiAgaWYgcG9zID49IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIDE7XG4gIGJ1Zi5ic3RyLntwb3N9IDwtIGM7XG4gIGJ1Zi5wb3MgPC0gcG9zICsgMVxuOztcblxubW9kdWxlIFRvX2J5dGVzID1cbiAgVGVzdF9ibGl0Lk1ha2VfZGlzdGluY3RfYW5kX3Rlc3RcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBjaGFyXG5cbiAgICAgIGxldCBlcXVhbCA9IENoYXIuZXF1YWxcbiAgICAgIGxldCBvZl9ib29sIGIgPSBpZiBiIHRoZW4gJ2EnIGVsc2UgJ2InXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxlbiA9XG4gICAgICAgIGxldCB0ID0gY3JlYXRlIGxlbiBpblxuICAgICAgICBmb3IgXyA9IDEgdG8gbGVuIGRvXG4gICAgICAgICAgYWRkX2NoYXIgdCAnYSdcbiAgICAgICAgZG9uZTtcbiAgICAgICAgdFxuICAgICAgOztcblxuICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aFxuICAgICAgbGV0IHNldCB0IGkgYyA9IEJpZ3N0cmluZy5zZXQgdC5ic3RyIGkgY1xuICAgICAgbGV0IGdldCB0IGkgPSBCaWdzdHJpbmcuZ2V0IHQuYnN0ciBpXG4gICAgZW5kKVxuICAgIChzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgQnl0ZXNcblxuICAgICAgbGV0IGNyZWF0ZSB+bGVuID0gY3JlYXRlIGxlblxuXG4gICAgICBsZXQgdW5zYWZlX2JsaXQgfnNyYyB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW4gPVxuICAgICAgICBCaWdzdHJpbmcuVG9fYnl0ZXMudW5zYWZlX2JsaXQgfnNyYzpzcmMuYnN0ciB+c3JjX3BvcyB+ZHN0IH5kc3RfcG9zIH5sZW5cbiAgICAgIDs7XG4gICAgZW5kKVxuXG5pbmNsdWRlIFRvX2J5dGVzXG5tb2R1bGUgVG9fc3RyaW5nID0gQmxpdC5NYWtlX3RvX3N0cmluZyAoQmlnYnVmZmVyX2ludGVybmFsKSAoVG9fYnl0ZXMpXG5cbmxldCBudGggYnVmIHBvcyA9XG4gIGlmIHBvcyA8IDAgfHwgcG9zID49IGJ1Zi5wb3MgdGhlbiBpbnZhbGlkX2FyZyBcIkJpZ2J1ZmZlci5udGhcIiBlbHNlIGJ1Zi5ic3RyLntwb3N9XG47O1xuXG5sZXQgY2xlYXIgYnVmID0gYnVmLnBvcyA8LSAwXG5cbmxldCByZXNldCBidWYgPVxuICBidWYucG9zIDwtIDA7XG4gIGJ1Zi5ic3RyIDwtIGJ1Zi5pbml0O1xuICBidWYubGVuIDwtIEJpZ3N0cmluZy5sZW5ndGggYnVmLmJzdHJcbjs7XG5cbmxldCBhZGRfc3Vic3RyaW5nIGJ1ZiBzcmMgfnBvczpzcmNfcG9zIH5sZW4gPVxuICBpZiBzcmNfcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHNyY19wb3MgPiBTdHJpbmcubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJzdHJpbmdcIjtcbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5Gcm9tX3N0cmluZy5ibGl0IH5zcmMgfnNyY19wb3MgfmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3M7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdWJieXRlcyBidWYgc3JjIH5wb3M6c3JjX3BvcyB+bGVuID1cbiAgaWYgc3JjX3BvcyA8IDAgfHwgbGVuIDwgMCB8fCBzcmNfcG9zID4gQnl0ZXMubGVuZ3RoIHNyYyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYnVmZmVyLmFkZF9zdWJieXRlc1wiO1xuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdCB+c3JjIH5zcmNfcG9zIH5sZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmlnc3RyaW5nIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQmlnc3RyaW5nLmxlbmd0aCBzcmMgaW5cbiAgbGV0IG5ld19wb3MgPSBidWYucG9zICsgbGVuIGluXG4gIGlmIG5ld19wb3MgPiBidWYubGVuIHRoZW4gcmVzaXplIGJ1ZiBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjIH5zcmNfbGVuOmxlbiB+ZHN0OmJ1Zi5ic3RyIH5kc3RfcG9zOmJ1Zi5wb3MgKCk7XG4gIGJ1Zi5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGFkZF9zdHJpbmcgYnVmIHNyYyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fc3RyaW5nLmJsaXRvIH5zcmMgfnNyY19sZW46bGVuIH5kc3Q6YnVmLmJzdHIgfmRzdF9wb3M6YnVmLnBvcyAoKTtcbiAgYnVmLnBvcyA8LSBuZXdfcG9zXG47O1xuXG5sZXQgYWRkX2J5dGVzIGJ1ZiBzcmMgPVxuICBsZXQgbGVuID0gQnl0ZXMubGVuZ3RoIHNyYyBpblxuICBsZXQgbmV3X3BvcyA9IGJ1Zi5wb3MgKyBsZW4gaW5cbiAgaWYgbmV3X3BvcyA+IGJ1Zi5sZW4gdGhlbiByZXNpemUgYnVmIGxlbjtcbiAgQmlnc3RyaW5nLkZyb21fYnl0ZXMuYmxpdG8gfnNyYyB+c3JjX2xlbjpsZW4gfmRzdDpidWYuYnN0ciB+ZHN0X3BvczpidWYucG9zICgpO1xuICBidWYucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYnVmZmVyIGJ1Zl9kc3QgYnVmX3NyYyA9XG4gIGxldCBsZW4gPSBidWZfc3JjLnBvcyBpblxuICBsZXQgZHN0X3BvcyA9IGJ1Zl9kc3QucG9zIGluXG4gIGxldCBuZXdfcG9zID0gZHN0X3BvcyArIGxlbiBpblxuICBpZiBuZXdfcG9zID4gYnVmX2RzdC5sZW4gdGhlbiByZXNpemUgYnVmX2RzdCBsZW47XG4gIEJpZ3N0cmluZy5ibGl0byB+c3JjOmJ1Zl9zcmMuYnN0ciB+c3JjX2xlbjpsZW4gfmRzdDpidWZfZHN0LmJzdHIgfmRzdF9wb3MgKCk7XG4gIGJ1Zl9kc3QucG9zIDwtIG5ld19wb3Ncbjs7XG5cbmxldCBhZGRfYmluX3Byb3QgdCAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcikgeCA9XG4gIGxldCBuZXdfcG9zID1cbiAgICBtYXRjaCB3cml0ZXIud3JpdGUgdC5ic3RyIH5wb3M6dC5wb3MgeCB3aXRoXG4gICAgfCBwb3MgLT4gcG9zXG4gICAgfCBleGNlcHRpb24gXyAtPlxuICAgICAgKCogSXQncyBsaWtla3kgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgaW50ZXJuYWwgYnVmZmVyIGFuZCB0cnkgYWdhaW4uIFRlY2huaWNhbGx5IHdlIGNvdWxkIG1hdGNoIG9uXG4gICAgICAgICBbQmluX3Byb3QuQ29tbW9uLkJ1ZmZlcl9zaG9ydF0gb25seSwgaG93ZXZlciB3ZSBjYW4ndCBlYXNpbHkgZW5mb3JjZSB0aGF0IGN1c3RvbVxuICAgICAgICAgYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgZG8gcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICBbSW52YWxpZF9hcmd1bWVudF0gb3IgW0ZhaWx1cmVdIGZvciBpbnN0YW5jZS4gKilcbiAgICAgIGxldCBzaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgaWYgdC5wb3MgKyBzaXplID4gdC5sZW4gdGhlbiByZXNpemUgdCBzaXplO1xuICAgICAgd3JpdGVyLndyaXRlIHQuYnN0ciB+cG9zOnQucG9zIHhcbiAgaW5cbiAgdC5wb3MgPC0gbmV3X3Bvc1xuOztcblxubGV0IGNsb3NpbmcgPSBmdW5jdGlvblxuICB8ICcoJyAtPiAnKSdcbiAgfCAneycgLT4gJ30nXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2Vcbjs7XG5cbigqIG9wZW5pbmcgYW5kIGNsb3Npbmc6IG9wZW4gYW5kIGNsb3NlIGNoYXJhY3RlcnMsIHR5cGljYWxseSAoIGFuZCApXG4gICBrOiBiYWxhbmNlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgY2hhcnNcbiAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgc3RhcnQ6IHRoZSBpbmRleCB3aGVyZSB3ZSBzdGFydCB0aGUgc2VhcmNoLiAqKVxubGV0IGFkdmFuY2VfdG9fY2xvc2luZyBvcGVuaW5nIGNsb3NpbmcgayBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKE5vdF9mb3VuZF9zXG4gICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgIFwiQmlnYnVmZmVyLmFkZF9zdWJzdGl0dXRlOiBjYW5ub3QgZmluZCBjbG9zaW5nIGRlbGltaXRlclwiXG4gICAgICAgICAgICAgICAob3BlbmluZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoY2xvc2luZyA6IGNoYXIpXG4gICAgICAgICAgICAgICAoc3RhcnQgOiBpbnQpXG4gICAgICAgICAgICAgICBzXSlcbiAgICBlbHNlIGlmIENoYXIuZXF1YWwgcy5baV0gb3BlbmluZ1xuICAgIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBpZiBDaGFyLmVxdWFsIHMuW2ldIGNsb3NpbmdcbiAgICB0aGVuIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgIGVsc2UgYWR2YW5jZSBrIChpICsgMSkgbGltXG4gIGluXG4gIGFkdmFuY2UgayBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxubGV0IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgc3RhcnQgPVxuICBsZXQgcmVjIGFkdmFuY2UgaSBsaW0gPVxuICAgIGlmIGkgPj0gbGltXG4gICAgdGhlbiBsaW1cbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6J1xuICAgICAgfCAnQScgLi4gJ1onXG4gICAgICB8ICcwJyAuLiAnOSdcbiAgICAgIHwgJ18nXG4gICAgICB8ICfpJ1xuICAgICAgfCAn4CdcbiAgICAgIHwgJ+EnXG4gICAgICB8ICfoJ1xuICAgICAgfCAn+SdcbiAgICAgIHwgJ+InXG4gICAgICB8ICfqJ1xuICAgICAgfCAn7idcbiAgICAgIHwgJ/QnXG4gICAgICB8ICf7J1xuICAgICAgfCAn6ydcbiAgICAgIHwgJ+8nXG4gICAgICB8ICf8J1xuICAgICAgfCAn5ydcbiAgICAgIHwgJ8knXG4gICAgICB8ICfAJ1xuICAgICAgfCAnwSdcbiAgICAgIHwgJ8gnXG4gICAgICB8ICfZJ1xuICAgICAgfCAnwidcbiAgICAgIHwgJ8onXG4gICAgICB8ICfOJ1xuICAgICAgfCAn1CdcbiAgICAgIHwgJ9snXG4gICAgICB8ICfLJ1xuICAgICAgfCAnzydcbiAgICAgIHwgJ9wnXG4gICAgICB8ICfHJyAtPiBhZHZhbmNlIChpICsgMSkgbGltXG4gICAgICB8IF8gLT4gaSlcbiAgaW5cbiAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuOztcblxuKCogV2UgYXJlIGp1c3QgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiBpZGVudCBpbiBzLCBzdGFydGluZyBhdCBzdGFydC4gKilcbmxldCBmaW5kX2lkZW50IHMgc3RhcnQgPVxuICBtYXRjaCBzLltzdGFydF0gd2l0aFxuICAoKiBQYXJlbnRoZXNpemVkIGlkZW50ID8gKilcbiAgfCAoJygnIHwgJ3snKSBhcyBjIC0+XG4gICAgbGV0IG5ld19zdGFydCA9IHN0YXJ0ICsgMSBpblxuICAgIGxldCBzdG9wID0gYWR2YW5jZV90b19jbG9zaW5nIGMgKGNsb3NpbmcgYykgMCBzIG5ld19zdGFydCBpblxuICAgIFN0cmluZy5zdWIgcyB+cG9zOm5ld19zdGFydCB+bGVuOihzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgKCogUmVndWxhciBpZGVudCAqKVxuICB8IF8gLT5cbiAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICBTdHJpbmcuc3ViIHMgfnBvczpzdGFydCB+bGVuOihzdG9wIC0gc3RhcnQpLCBzdG9wXG47O1xuXG4oKiBTdWJzdGl0dXRlICRpZGVudCwgJChpZGVudCksIG9yICR7aWRlbnR9IGluIHMsXG4gICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBidWYgZiBzID1cbiAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgcmVjIHN1YnN0IHByZXZpb3VzIGkgPVxuICAgIGlmIGkgPCBsaW1cbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBDaGFyLmVxdWFsIHByZXZpb3VzICdcXFxcJyAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8ICckJyAtPlxuICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyAoaSArIDEpIGluXG4gICAgICAgIGFkZF9zdHJpbmcgYnVmIChmIGlkZW50KTtcbiAgICAgICAgc3Vic3QgJyAnIG5leHRfaVxuICAgICAgfCBjdXJyZW50IHdoZW4gQ2hhci5lcXVhbCBwcmV2aW91cyAnXFxcXCcgLT5cbiAgICAgICAgYWRkX2NoYXIgYnVmICdcXFxcJztcbiAgICAgICAgYWRkX2NoYXIgYnVmIGN1cnJlbnQ7XG4gICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICBzdWJzdCBjdXJyZW50IChpICsgMSlcbiAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICBhZGRfY2hhciBidWYgY3VycmVudDtcbiAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpKVxuICBpblxuICBzdWJzdCAnICcgMFxuOztcblxubW9kdWxlIEZvcm1hdCA9IHN0cnVjdFxuICBsZXQgZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgPVxuICAgIEZvcm1hdC5tYWtlX2Zvcm1hdHRlciAoZnVuIHMgcG9zIGxlbiAtPiBhZGRfc3Vic3RyaW5nIGJ1ZiBzIH5wb3MgfmxlbikgaWdub3JlXG4gIDs7XG5cbiAgbGV0IGJwcmludGYgYnVmID0gRm9ybWF0LmtmcHJpbnRmIGlnbm9yZSAoZm9ybWF0dGVyX29mX2J1ZmZlciBidWYpXG5lbmRcblxubW9kdWxlIFByaW50ZiA9IHN0cnVjdFxuICBsZXQgYnByaW50ZiBidWYgPSBQcmludGYua3NwcmludGYgKGFkZF9zdHJpbmcgYnVmKVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZXh0ZW5kcyB7eyFCYXNlLkJ5dGVzfVtCYXNlLkJ5dGVzXX0uICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPSBieXRlcyBbQEBkZXJpdmluZyBiaW5faW8sIHR5cGVyZXBdXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICBpbmNsdWRlIEJhc2UuQnl0ZXNcbmVuZFxud2l0aCB0eXBlIHQgOj0gdFxuXG5pbmNsdWRlIEhleGR1bXAuUyB3aXRoIHR5cGUgdCA6PSB0XG5pbmNsdWRlIFF1aWNrY2hlY2thYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4oKiogTGlrZSBbZ2VuXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGRpc3RyaWJ1dGlvbiBvZiBjaGFyYWN0ZXJzLiAqKVxudmFsIGdlbicgOiBjaGFyIFF1aWNrY2hlY2suR2VuZXJhdG9yLnQgLT4gdCBRdWlja2NoZWNrLkdlbmVyYXRvci50XG5cbigqKiBMaWtlIFtnZW4nXSwgYnV0IGdlbmVyYXRlIGJ5dGVzIHdpdGggdGhlIGdpdmVuIGxlbmd0aC4gKilcbnZhbCBnZW5fd2l0aF9sZW5ndGggOiBpbnQgLT4gY2hhciBRdWlja2NoZWNrLkdlbmVyYXRvci50IC0+IHQgUXVpY2tjaGVjay5HZW5lcmF0b3IudFxuXG4oKiogTm90ZSB0aGF0IFtieXRlc10gaXMgYWxyZWFkeSBzdGFibGUgYnkgaXRzZWxmLCBzaW5jZSBhcyBhIHByaW1pdGl2ZSB0eXBlIGl0IGlzIGFuXG4gICAgaW50ZWdyYWwgcGFydCBvZiB0aGUgc2V4cCAvIGJpbl9pbyBwcm90b2NvbC4gW0J5dGVzLlN0YWJsZV0gZXhpc3RzIG9ubHkgdG8gcHJvdmlkZVxuICAgIGludGVyZmFjZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgc3RhYmxlIHR5cGVzLiAqKVxubW9kdWxlIFN0YWJsZSA6IHNpZ1xuICBtb2R1bGUgVjEgOiBzaWdcbiAgICB0eXBlIG5vbnJlYyB0ID0gdFxuICAgIHR5cGUgbm9ucmVjIGNvbXBhcmF0b3Jfd2l0bmVzcyA9IGNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gICAgaW5jbHVkZVxuICAgICAgU3RhYmxlX21vZHVsZV90eXBlcy5TMFxuICAgICAgd2l0aCB0eXBlIHQgOj0gdFxuICAgICAgd2l0aCB0eXBlIGNvbXBhcmF0b3Jfd2l0bmVzcyA6PSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgSW1wb3J0XG5cbmluY2x1ZGUgTWFrZV9zdWJzdHJpbmcuRiAoc3RydWN0XG4gICAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgW0BAZGVyaXZpbmcgcXVpY2tjaGVja11cblxuICAgIGxldCBjcmVhdGUgPSBCaWdzdHJpbmcuY3JlYXRlID9tYXhfbWVtX3dhaXRpbmdfZ2M6Tm9uZVxuICAgIGxldCBsZW5ndGggPSBCaWdzdHJpbmcubGVuZ3RoXG4gICAgbGV0IGdldCA9IEJpZ3N0cmluZy5nZXRcblxuICAgIG1vZHVsZSBCbGl0ID0gTWFrZV9zdWJzdHJpbmcuQmxpdFxuXG4gICAgbGV0IGJsaXQgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF90b19zdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19ieXRlc1xuICAgIGxldCBibGl0X3RvX2J5dGVzID0gQmxpdC5iaWdzdHJpbmdfYnl0ZXNcbiAgICBsZXQgYmxpdF90b19iaWdzdHJpbmcgPSBCbGl0LmJpZ3N0cmluZ19iaWdzdHJpbmdcbiAgICBsZXQgYmxpdF9mcm9tX3N0cmluZyA9IEJsaXQuc3RyaW5nX2JpZ3N0cmluZ1xuICAgIGxldCBibGl0X2Zyb21fYmlnc3RyaW5nID0gQmxpdC5iaWdzdHJpbmdfYmlnc3RyaW5nXG4gIGVuZClcbiIsIm9wZW4hIEltcG9ydFxub3BlbiEgU3RhYmxlX2ludGVybmFsXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBzaWdcbiAgICAgICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaW5kZXggOiBpbnRcbiAgICAgICAgOyBtaW5faW5kZXggOiBpbnRcbiAgICAgICAgOyBtYXhfaW5kZXggOiBpbnRcbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoXVxuXG4gICAgICBsZXQgY3JlYXRlIGluZGV4IH5taW4gfm1heCA9XG4gICAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4XG4gICAgICAgIHRoZW5cbiAgICAgICAgICBFcnJvci5yYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIgKGluZGV4IDogaW50KSAobWluIDogaW50KSAobWF4IDogaW50KV1cbiAgICAgICAgZWxzZSB7IGluZGV4OyBtaW5faW5kZXggPSBtaW47IG1heF9pbmRleCA9IG1heCB9XG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgRm9yX3NleHBhYmxlID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCAqIHN0cmluZyAqIGludCBbQEBkZXJpdmluZyBzZXhwXVxuICAgICAgZW5kXG5cbiAgICAgIGluY2x1ZGVcbiAgICAgICAgU2V4cGFibGUuU3RhYmxlLk9mX3NleHBhYmxlLlYxXG4gICAgICAgICAgKEZvcl9zZXhwYWJsZSlcbiAgICAgICAgICAoc3RydWN0XG4gICAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdFxuXG4gICAgICAgICAgICBsZXQgdG9fc2V4cGFibGUgdCA9IE0ubGFiZWwsIHQuaW5kZXgsIFwib2ZcIiwgdC5taW5faW5kZXgsIFwidG9cIiwgdC5tYXhfaW5kZXhcblxuICAgICAgICAgICAgbGV0IG9mX3NleHBhYmxlIChsYWJlbCwgaW5kZXgsIG9mXywgbWluLCB0b18sIG1heCkgPVxuICAgICAgICAgICAgICBpZiBTdHJpbmcuZXF1YWwgbGFiZWwgTS5sYWJlbFxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgb2ZfIFwib2ZcIlxuICAgICAgICAgICAgICAmJiBTdHJpbmcuZXF1YWwgdG9fIFwidG9cIlxuICAgICAgICAgICAgICB0aGVuIGNyZWF0ZSBpbmRleCB+bWluIH5tYXhcbiAgICAgICAgICAgICAgZWxzZSBFcnJvci5yYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgc2V4cCBmb3IgaW5kZXhcIiB+bGFiZWw6TS5sYWJlbF1cbiAgICAgICAgICAgIDs7XG4gICAgICAgICAgZW5kKVxuXG4gICAgICBpbmNsdWRlIENvbXBhcmF0b3IuU3RhYmxlLlYxLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBfb2YsIGNvbXBhcmVdXG4gICAgICAgIGVuZClcblxuICAgICAgaW5jbHVkZSBDb21wYXJhYmxlLlN0YWJsZS5WMS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlLCBiaW5faW9dXG4gICAgICAgICAgdHlwZSBub25yZWMgY29tcGFyYXRvcl93aXRuZXNzID0gY29tcGFyYXRvcl93aXRuZXNzXG5cbiAgICAgICAgICBsZXQgY29tcGFyYXRvciA9IGNvbXBhcmF0b3JcbiAgICAgICAgZW5kKVxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5vcGVuISBTdGRfaW50ZXJuYWxcblxubW9kdWxlIHR5cGUgUyA9IEJvdW5kZWRfaW5kZXhfaW50Zi5TXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGxhYmVsIDogc3RyaW5nXG4gICAgdmFsIG1vZHVsZV9uYW1lIDogc3RyaW5nXG4gIGVuZCkgPVxuc3RydWN0XG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBTdGFibGUuVjEuTWFrZSAoTSlcbiAgZW5kXG5cbiAgb3BlbiBTdGFibGUuVjFcblxuICB0eXBlIHQgPSBTdGFibGUuVjEudCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gU3RhYmxlLlYxLmNvbXBhcmF0b3Jfd2l0bmVzc1xuXG4gIGxldCBjcmVhdGUgPSBTdGFibGUuVjEuY3JlYXRlXG5cbiAgbGV0IGNyZWF0ZV9hbGwgfm1pbiB+bWF4ID1cbiAgICBTZXF1ZW5jZS51bmZvbGQgfmluaXQ6bWluIH5mOihmdW4gaW5kZXggLT5cbiAgICAgIGlmIGluZGV4IDwgbWluIHx8IGluZGV4ID4gbWF4XG4gICAgICB0aGVuIE5vbmVcbiAgICAgIGVsc2UgU29tZSAoY3JlYXRlIGluZGV4IH5taW4gfm1heCwgaW5kZXggKyAxKSlcbiAgICB8PiBTZXF1ZW5jZS50b19saXN0XG4gIDs7XG5cbiAgbGV0IGluZGV4IHQgPSB0LmluZGV4XG4gIGxldCBtYXhfaW5kZXggdCA9IHQubWF4X2luZGV4XG4gIGxldCBtaW5faW5kZXggdCA9IHQubWluX2luZGV4XG5cbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIHNleHBdXG4gICAgZW5kKVxuXG4gIGluY2x1ZGUgSWRlbnRpZmlhYmxlLk1ha2VfdXNpbmdfY29tcGFyYXRvciAoc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIGhhc2gsIHNleHBdXG4gICAgICB0eXBlIG5vbnJlYyBjb21wYXJhdG9yX3dpdG5lc3MgPSBjb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgbGV0IGNvbXBhcmF0b3IgPSBjb21wYXJhdG9yXG4gICAgICBsZXQgb2Zfc3RyaW5nID0gb2Zfc3RyaW5nXG4gICAgICBsZXQgdG9fc3RyaW5nID0gdG9fc3RyaW5nXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBNLm1vZHVsZV9uYW1lXG4gICAgZW5kKVxuZW5kXG4iLCIoKiogQ29yZSBncmVhdGx5IGV4cGFuZHMgdGhlIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGluIEJhc2Ugd2hpbGUgc3RpbGwgcmVtYWluaW5nXG4gICAgcGxhdGZvcm0tYWdub3N0aWMuICBDb3JlIGNoYW5nZXMgbW9yZSBmcmVxdWVudGx5IChpLmUuLCBpcyBsZXNzIHN0YWJsZSkgdGhhbiBCYXNlLlxuXG4gICAgU29tZSBtb2R1bGVzIGFyZSBtZXJlIGV4dGVuc2lvbnMgb2YgdGhlaXIgY291bnRlcnBhcnRzIGluIEJhc2UsIHVzdWFsbHkgYWRkaW5nIGdlbmVyaWNcbiAgICBmdW5jdGlvbmFsaXR5IGJ5IGluY2x1ZGluZyBmdW5jdG9ycyB0aGF0IG1ha2UgdGhlbSBiaW5hYmxlLCBjb21wYXJhYmxlLCBzZXhwYWJsZSxcbiAgICBibGl0YWJsZSwgZXRjLiAgVGhlIGJ1bGsgb2YgQ29yZSwgdGhvdWdoLCBpcyBtb2R1bGVzIHByb3ZpZGluZyBlbnRpcmVseSBuZXdcbiAgICBmdW5jdGlvbmFsaXR5LiAqKVxuXG5vcGVuISBJbXBvcnRcblxuXG5tb2R1bGUgQXBwbGljYXRpdmUgPSBBcHBsaWNhdGl2ZVxubW9kdWxlIEFyZyA9IEFyZ1xubW9kdWxlIEFycmF5ID0gQXJyYXlcbm1vZHVsZSBBdmx0cmVlID0gQXZsdHJlZVxubW9kdWxlIEJhY2t0cmFjZSA9IEJhY2t0cmFjZVxubW9kdWxlIEJhZyA9IEJhZ1xubW9kdWxlIEJpZ2J1ZmZlciA9IEJpZ2J1ZmZlclxubW9kdWxlIEJpZ3N0cmluZyA9IEJpZ3N0cmluZ1xubW9kdWxlIEJpZ3N1YnN0cmluZyA9IEJpZ3N1YnN0cmluZ1xubW9kdWxlIEJpbl9wcm90ID0gQ29yZV9iaW5fcHJvdFxubW9kdWxlIEJpbmFibGUgPSBCaW5hYmxlXG5tb2R1bGUgQmluYXJ5X3NlYXJjaCA9IEJpbmFyeV9zZWFyY2hcbm1vZHVsZSBCaW5hcnlfc2VhcmNoYWJsZSA9IEJpbmFyeV9zZWFyY2hhYmxlXG5tb2R1bGUgQmxhbmcgPSBCbGFuZ1xubW9kdWxlIEJsaXQgPSBCbGl0XG5tb2R1bGUgQm9vbCA9IEJvb2xcbm1vZHVsZSBCb3VuZGVkX2luZGV4ID0gQm91bmRlZF9pbmRleFxubW9kdWxlIEJ1ZmZlciA9IEJhc2UuQnVmZmVyXG5tb2R1bGUgQnl0ZV91bml0cyA9IEJ5dGVfdW5pdHNcbm1vZHVsZSBCeXRlcyA9IEJ5dGVzXG5cbm1vZHVsZSBDYW1sID0gc3RydWN0XG4gIGluY2x1ZGUgQ2FtbFxuXG4gICgqIFdoZW4gd2UgcmVtb3ZlZCBbQ29yZS5DYW1sXSdzIGV4dGVuc2lvbnMgb2YgW0NvcmUuQ2FtbF0sIHdlIGFkZGVkXG4gICAgIHRoZSBkZWNsYXJhdGlvbnMgYmVsb3cgdG8gZm9yY2UgY29kZSB0byBzd2l0Y2ggdG8gdGhlIG5ldyBuYW1lcywgYW5kIGF2b2lkXG4gICAgIHNpbGVudGx5IGluY29ycmVjdGx5IHVzaW5nIHNvbWV0aGluZyBlbHNlIGluIHNjb3BlLiAqKVxuICBtb2R1bGUgQ29uZGl0aW9uID0gc3RydWN0IGVuZFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDJdIFVzZSBbQ2FtbF90aHJlYWRzLkNvbmRpdGlvbl1cIl1cblxuICBtb2R1bGUgTXV0ZXggPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDYW1sX3RocmVhZHMuTXV0ZXhdXCJdXG4gIG1vZHVsZSBUaHJlYWQgPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtDYW1sX3RocmVhZHMuVGhyZWFkXVwiXVxuICBtb2R1bGUgVW5peCA9IHN0cnVjdCBlbmQgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTAyXSBVc2UgW0NhbWxfdW5peF1cIl1cbiAgbW9kdWxlIFVuaXhMYWJlbHMgPSBzdHJ1Y3QgZW5kIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAyMS0wMl0gVXNlIFtVbml4TGFiZWxzXVwiXVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gQ2hhclxubW9kdWxlIENvbW1hbmQgPSBDb21tYW5kXG5tb2R1bGUgQ29tcGFyYWJsZSA9IENvbXBhcmFibGVcbm1vZHVsZSBDb21wYXJhdG9yID0gQ29tcGFyYXRvclxubW9kdWxlIENvbXBhcmlzb25zID0gQ29tcGFyaXNvbnNcbm1vZHVsZSBDb250YWluZXIgPSBDb250YWluZXJcbm1vZHVsZSBDb250YWluZXJfaW50ZiA9IENvbnRhaW5lcl9pbnRmXG5tb2R1bGUgQ29udGludWVfb3Jfc3RvcCA9IENvbnRpbnVlX29yX3N0b3BcblxubW9kdWxlIENvcmVfa2VybmVsX3N0YWJsZSA9IFN0YWJsZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfc3RhYmxlXSAtLSBbQ29yZV9rZXJuZWxdIHdhcyByZW5hbWVkIGFzIFtDb3JlXVwiXVxuXG5tb2R1bGUgQ29yZV9zdGFibGUgPSBTdGFibGVcbm1vZHVsZSBEYXRlID0gRGF0ZVxubW9kdWxlIERheV9vZl93ZWVrID0gRGF5X29mX3dlZWtcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnXG5tb2R1bGUgRGVxdWUgPSBEZXF1ZVxubW9kdWxlIERlcml2aW5nX2hhc2ggPSBEZXJpdmluZ19oYXNoXG5tb2R1bGUgRGlnZXN0ID0gTWQ1IFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNy0wNV0gVXNlIE1kNSBpbnN0ZWFkLlwiXVxubW9kdWxlIERvdWJseV9saW5rZWQgPSBEb3VibHlfbGlua2VkXG5tb2R1bGUgRWl0aGVyID0gRWl0aGVyXG5tb2R1bGUgRXBoZW1lcm9uID0gRXBoZW1lcm9uXG5tb2R1bGUgRXF1YWwgPSBFcXVhbFxubW9kdWxlIEVycm9yID0gRXJyb3Jcbm1vZHVsZSBFeG4gPSBCYXNlLkV4blxubW9kdWxlIEV4cGVjdF90ZXN0X2NvbmZpZyA9IEV4cGVjdF90ZXN0X2NvbmZpZ1xubW9kdWxlIEZkZXF1ZSA9IEZkZXF1ZVxubW9kdWxlIEZpZWxkID0gRmllbGRcbm1vZHVsZSBGaWxlbmFtZSA9IEZpbGVuYW1lXG5tb2R1bGUgRmxvYXQgPSBGbG9hdFxubW9kdWxlIEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvbiA9IEZsb2F0X3dpdGhfZmluaXRlX29ubHlfc2VyaWFsaXphdGlvblxubW9kdWxlIEZsb2F0YWJsZSA9IEZsb2F0YWJsZVxubW9kdWxlIEZuID0gRm5cbm1vZHVsZSBGb3JtYXR0ZXIgPSBGb3JtYXR0ZXJcbm1vZHVsZSBGcXVldWUgPSBGcXVldWVcbm1vZHVsZSBHYyA9IEdjXG5tb2R1bGUgSGFzaCA9IEhhc2hcbm1vZHVsZSBIYXNoX3F1ZXVlID0gSGFzaF9xdWV1ZVxubW9kdWxlIEhhc2hfc2V0ID0gSGFzaF9zZXRcbm1vZHVsZSBIYXNoYWJsZSA9IEhhc2hhYmxlXG5tb2R1bGUgSGFzaHRibCA9IEhhc2h0Ymxcbm1vZHVsZSBIYXNodGJsX2ludGYgPSBIYXNodGJsX2ludGZcbm1vZHVsZSBIZWFwX2Jsb2NrID0gSGVhcF9ibG9ja1xubW9kdWxlIEhleGR1bXAgPSBIZXhkdW1wXG5tb2R1bGUgSGV4ZHVtcF9pbnRmID0gSGV4ZHVtcF9pbnRmXG5tb2R1bGUgSG9zdF9hbmRfcG9ydCA9IEhvc3RfYW5kX3BvcnRcbm1vZHVsZSBJZGVudGlmaWFibGUgPSBJZGVudGlmaWFibGVcbm1vZHVsZSBJbW1lZGlhdGVfb3B0aW9uID0gSW1tZWRpYXRlX29wdGlvblxubW9kdWxlIEltbWVkaWF0ZV9vcHRpb25faW50ZiA9IEltbWVkaWF0ZV9vcHRpb25faW50ZlxubW9kdWxlIEluX2NoYW5uZWwgPSBJbl9jaGFubmVsXG5tb2R1bGUgSW5kZXhlZF9jb250YWluZXIgPSBJbmRleGVkX2NvbnRhaW5lclxubW9kdWxlIEluZm8gPSBJbmZvXG5tb2R1bGUgSW50ID0gSW50XG5tb2R1bGUgSW50MzIgPSBJbnQzMlxubW9kdWxlIEludDYzID0gSW50NjNcbm1vZHVsZSBJbnQ2NCA9IEludDY0XG5tb2R1bGUgSW50X2NvbnZlcnNpb25zID0gSW50X2NvbnZlcnNpb25zXG5tb2R1bGUgSW50X2ludGYgPSBJbnRfaW50ZlxubW9kdWxlIEludF9tYXRoID0gSW50X21hdGhcbm1vZHVsZSBJbnRhYmxlID0gSW50YWJsZVxubW9kdWxlIEludGVyZmFjZXMgPSBJbnRlcmZhY2VzXG5tb2R1bGUgSW52YXJpYW50ID0gSW52YXJpYW50XG5tb2R1bGUgTGF6eSA9IExhenlcbm1vZHVsZSBMaW5rZWRfcXVldWUgPSBMaW5rZWRfcXVldWVcbm1vZHVsZSBMaXN0ID0gTGlzdFxubW9kdWxlIE1hcCA9IE1hcFxubW9kdWxlIE1hcF9pbnRmID0gTWFwX2ludGZcbm1vZHVsZSBNYXliZV9ib3VuZCA9IE1heWJlX2JvdW5kXG5tb2R1bGUgTWQ1ID0gTWQ1XG5tb2R1bGUgTWVtbyA9IE1lbW9cbm1vZHVsZSBNb25hZCA9IE1vbmFkXG5tb2R1bGUgTW9udGggPSBNb250aFxuXG5tb2R1bGUgTXV0ZXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTktMDJdIFVzZSBbRXJyb3JfY2hlY2tpbmdfbXV0ZXhdIG9yIFtDYW1sX3RocmVhZHMuTXV0ZXhdXCJdXG5cbm1vZHVsZSBOYXRpdmVpbnQgPSBOYXRpdmVpbnRcbm1vZHVsZSBOb19wb2x5bW9ycGhpY19jb21wYXJlID0gTm9fcG9seW1vcnBoaWNfY29tcGFyZVxubW9kdWxlIE5vdGhpbmcgPSBOb3RoaW5nXG5tb2R1bGUgT25seV9pbl90ZXN0ID0gT25seV9pbl90ZXN0XG5tb2R1bGUgT3B0aW9uID0gT3B0aW9uXG5tb2R1bGUgT3B0aW9uX2FycmF5ID0gT3B0aW9uX2FycmF5XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gT3B0aW9uYWxfc3ludGF4XG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4X2ludGYgPSBPcHRpb25hbF9zeW50YXhfaW50ZlxubW9kdWxlIE9yX2Vycm9yID0gT3JfZXJyb3Jcbm1vZHVsZSBPcmRlcmVkX2NvbGxlY3Rpb25fY29tbW9uID0gT3JkZXJlZF9jb2xsZWN0aW9uX2NvbW1vblxubW9kdWxlIE9yZGVyaW5nID0gT3JkZXJpbmdcbm1vZHVsZSBPdXRfY2hhbm5lbCA9IE91dF9jaGFubmVsXG5tb2R1bGUgUGVyY2VudCA9IFBlcmNlbnRcbm1vZHVsZSBQZXJtcyA9IFBlcm1zXG5tb2R1bGUgUGlkID0gUGlkXG5tb2R1bGUgUG9seSA9IFBvbHlcbm1vZHVsZSBQb2x5bW9ycGhpY19jb21wYXJlID0gUG9seSBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTgtMTFdIHVzZSBbUG9seV0gaW5zdGVhZFwiXVxuXG5tb2R1bGUgUG9wY291bnQgPSBCYXNlLlBvcGNvdW50XG5bQEB3YXJuaW5nIFwiLTNcIl1cbltAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxOC0xMF0gdXNlIFtwb3Bjb3VudF0gZnVuY3Rpb25zIGluIGluZGl2aWR1YWwgaW50IG1vZHVsZXNcIl1cblxubW9kdWxlIFByZXR0eV9wcmludGVyID0gUHJldHR5X3ByaW50ZXJcbm1vZHVsZSBQcmludGV4YyA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgPSBRdWV1ZVxubW9kdWxlIFF1aWNrY2hlY2sgPSBRdWlja2NoZWNrXG5tb2R1bGUgUXVpY2tjaGVja19pbnRmID0gUXVpY2tjaGVja19pbnRmXG5tb2R1bGUgUXVpY2tjaGVja2FibGUgPSBRdWlja2NoZWNrYWJsZVxubW9kdWxlIFJhbmRvbSA9IEJhc2UuUmFuZG9tXG5tb2R1bGUgUmVmID0gUmVmXG5tb2R1bGUgUmVzdWx0ID0gUmVzdWx0XG5tb2R1bGUgUm9idXN0bHlfY29tcGFyYWJsZSA9IFJvYnVzdGx5X2NvbXBhcmFibGVcbm1vZHVsZSBTZXF1ZW5jZSA9IFNlcXVlbmNlXG5tb2R1bGUgU2V0ID0gU2V0XG5tb2R1bGUgU2V0X2ludGYgPSBTZXRfaW50ZlxubW9kdWxlIFNldF9vbmNlID0gU2V0X29uY2Vcbm1vZHVsZSBTZXhwX21heWJlID0gU2V4cC5TZXhwX21heWJlXG5cbm1vZHVsZSBTZXhwID0gU2V4cFxubW9kdWxlIFNleHBhYmxlID0gU2V4cGFibGVcbm1vZHVsZSBTaWduID0gU2lnblxubW9kdWxlIFNpZ25hbCA9IFNpZ25hbFxubW9kdWxlIFNpZ25fb3JfbmFuID0gU2lnbl9vcl9uYW5cbm1vZHVsZSBTb3VyY2VfY29kZV9wb3NpdGlvbiA9IFNvdXJjZV9jb2RlX3Bvc2l0aW9uXG5tb2R1bGUgU3BsaXR0YWJsZV9yYW5kb20gPSBTcGxpdHRhYmxlX3JhbmRvbVxubW9kdWxlIFN0YWJsZV9jb21wYXJhYmxlID0gU3RhYmxlX2NvbXBhcmFibGVcbm1vZHVsZSBTdGFibGVfdW5pdF90ZXN0ID0gU3RhYmxlX3VuaXRfdGVzdFxubW9kdWxlIFN0YWNrID0gU3RhY2tcbm1vZHVsZSBTdGFnZWQgPSBCYXNlLlN0YWdlZFxubW9kdWxlIFN0cmluZyA9IFN0cmluZ1xubW9kdWxlIFN0cmluZ19pZCA9IFN0cmluZ19pZFxubW9kdWxlIFN0cmluZ2FibGUgPSBTdHJpbmdhYmxlXG5tb2R1bGUgU3Vic3RyaW5nID0gU3Vic3RyaW5nXG5tb2R1bGUgU3Vic3RyaW5nX2ludGYgPSBTdWJzdHJpbmdfaW50ZlxubW9kdWxlIFN5cyA9IENvcmVfc3lzXG5cbm1vZHVsZSBUaHJlYWQgPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMjEtMDRdIFVzZSBbQ29yZV90aHJlYWRdIG9yIFtDYW1sX3RocmVhZHMuVGhyZWFkXVwiXVxuXG5tb2R1bGUgVGltZSA9IFRpbWVfZmxvYXRcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc1xubW9kdWxlIFR1cGxlID0gVHVwbGVcbm1vZHVsZSBUdXBsZTIgPSBUdXBsZS5UMlxubW9kdWxlIFR1cGxlMyA9IFR1cGxlLlQzXG5tb2R1bGUgVHlwZV9lcXVhbCA9IFR5cGVfZXF1YWxcbm1vZHVsZSBUeXBlX2ltbWVkaWFjeSA9IFR5cGVfaW1tZWRpYWN5XG5tb2R1bGUgVWNoYXIgPSBVY2hhclxubW9kdWxlIFVuaWZvcm1fYXJyYXkgPSBVbmlmb3JtX2FycmF5XG5tb2R1bGUgVW5pb25fZmluZCA9IFVuaW9uX2ZpbmRcbm1vZHVsZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWRcbm1vZHVsZSBVbml0ID0gVW5pdFxubW9kdWxlIFVuaXRfb2ZfdGltZSA9IFVuaXRfb2ZfdGltZVxubW9kdWxlIFVuaXZfbWFwID0gVW5pdl9tYXBcblxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkXG4gIFwiW3NpbmNlIDIwMjAtMDNdIENvcmUgc2hhZG93cyBVbml4LiBVc2UgQ29yZV91bml4LCB3aGljaCBvdmVycmlkZXMgc29tZSBvZiBVbml4J3MgXFxcbiAgIGJlaGF2aW9yLiBJZiBuZWNlc3NhcnksIFVuaXggaXMgYXZhaWxhYmxlIGFuZCB1bnNoYWRvd2VkIGFzIENhbWxfdW5peC5cIl1cblxubW9kdWxlIFZhbGlkYXRlID0gVmFsaWRhdGVcbm1vZHVsZSBWYWxpZGF0ZWQgPSBWYWxpZGF0ZWRcbm1vZHVsZSBWYXJpYW50ID0gVmFyaWFudFxubW9kdWxlIFdlYWsgPSBXZWFrXG5tb2R1bGUgV2l0aF9yZXR1cm4gPSBXaXRoX3JldHVyblxubW9kdWxlIFdvcmRfc2l6ZSA9IFdvcmRfc2l6ZVxuXG5tb2R1bGUgdHlwZSBVbmlxdWVfaWQgPSBVbmlxdWVfaWQuSWRcblxuaW5jbHVkZSBUICgqKiBAb3BlbiAqKVxuXG5pbmNsdWRlIFN0ZF9pbnRlcm5hbFxuaW5jbHVkZSBOb3RfZm91bmRcblxuKCoqIHsyIFRvcC1sZXZlbCB2YWx1ZXN9ICopXG5cbnR5cGUgJ2EgX21heWJlX2JvdW5kID0gJ2EgTWF5YmVfYm91bmQudCA9XG4gIHwgSW5jbCBvZiAnYVxuICB8IEV4Y2wgb2YgJ2FcbiAgfCBVbmJvdW5kZWRcblxubGV0IGFtX3J1bm5pbmdfaW5saW5lX3Rlc3QgPSBhbV9ydW5uaW5nX2lubGluZV90ZXN0XG5sZXQgYW1fcnVubmluZ190ZXN0ID0gYW1fcnVubmluZ190ZXN0XG5sZXQgZG9lc19yYWlzZSA9IEV4bi5kb2VzX3JhaXNlXG5sZXQgc2VjID0gVGltZV9mbG9hdC5TcGFuLm9mX3NlY1xubGV0ICggXi8gKSA9IEZpbGVuYW1lLmNvbmNhdFxuXG4oKiogV2UgcGVyZm9ybSB0aGVzZSBzaWRlIGVmZmVjdHMgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlbSB0byBydW4gZm9yIGFueSBjb2RlIHRoYXQgdXNlc1xuICAgIFtDb3JlXS4gIElmIHRoaXMgd2VyZSBpbiBhbm90aGVyIG1vZHVsZSBpbiBbQ29yZV0gdGhhdCB3YXMgbm90IHVzZWQgaW4gc29tZSBwcm9ncmFtLFxuICAgIHRoZW4gdGhlIHNpZGUgZWZmZWN0cyBtaWdodCBub3QgYmUgcnVuIGluIHRoYXQgcHJvZ3JhbS4gIFRoaXMgd2lsbCBydW4gYXMgbG9uZyBhcyB0aGVcbiAgICBwcm9ncmFtIHJlZmVycyB0byBhdCBsZWFzdCBvbmUgdmFsdWUgZGlyZWN0bHkgaW4gQ29yZTsgcmVmZXJyaW5nIHRvIHZhbHVlcyBpblxuICAgIFtDb3JlLkJvb2xdLCBmb3IgZXhhbXBsZSwgaXMgbm90IHN1ZmZpY2llbnQuICopXG5sZXQgKCkgPSBFeG4uaW5pdGlhbGl6ZV9tb2R1bGUgKClcblxuKCoqIFRvIGJlIHVzZWQgaW4gaW1wbGVtZW50aW5nIENvcmUsIGJ1dCBub3QgYnkgZW5kIHVzZXJzLiAqKVxubW9kdWxlIENvcmVfcHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgRGlnaXRfc3RyaW5nX2hlbHBlcnMgPSBEaWdpdF9zdHJpbmdfaGVscGVyc1xuICBtb2R1bGUgVGltZV96b25lID0gWm9uZVxuICBtb2R1bGUgT2ZkYXlfaGVscGVycyA9IE9mZGF5X2hlbHBlcnNcbiAgbW9kdWxlIFNwYW5fZmxvYXQgPSBTcGFuX2Zsb2F0XG5cbiAgbW9kdWxlIEJpZ2J1ZmZlcl9pbnRlcm5hbCA9IEJpZ2J1ZmZlcl9pbnRlcm5hbFxuICBtb2R1bGUgU3RhYmxlX2ludGVybmFsID0gU3RhYmxlX2ludGVybmFsXG4gIG1vZHVsZSBTdGRfaW50ZXJuYWwgPSBTdGRfaW50ZXJuYWxcblxuICBtb2R1bGUgVGltZV9uc19hbHRlcm5hdGVfc2V4cCA9IFRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbmVuZFxuXG5tb2R1bGUgQ29yZV9rZXJuZWxfcHJpdmF0ZSA9IENvcmVfcHJpdmF0ZVxuW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDIxLTA1XSBVc2UgW0NvcmVfcHJpdmF0ZV0gLS0gW0NvcmVfa2VybmVsXSB3YXMgcmVuYW1lZCBhcyBbQ29yZV1cIl1cbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgVWlfZWZmZWN0X2ludGZcblxudHlwZSAnYSB0ID0gLi5cbnR5cGUgJ2EgdCArPSBJZ25vcmUgOiB1bml0IHQgfCBNYW55IDogdW5pdCB0IGxpc3QgLT4gdW5pdCB0XG5cbigqIFdlIHVzZSB0aGlzIHRhYmxlIGZvciBkaXNwYXRjaGluZyB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlciBpbiBhbiBlZmZpY2llbnQgd2F5LiAgKilcbnR5cGUgaGlkZGVuID0gVCA6ICgnYSB0ICogKCdhIC0+IHVuaXQpKSAtPiBoaWRkZW5cblxubGV0IGhhbmRsZXJzIDogKGhpZGRlbiAtPiB1bml0KSBIYXNodGJsLk0oSW50KS50ID0gSGFzaHRibC5jcmVhdGUgKG1vZHVsZSBJbnQpIH5zaXplOjhcblxubW9kdWxlIERlZmluZSAoSGFuZGxlciA6IEhhbmRsZXIpIDpcbiAgUyB3aXRoIHR5cGUgYWN0aW9uIDo9IEhhbmRsZXIuQWN0aW9uLnQgYW5kIHR5cGUgJ2EgdCA6PSAnYSB0ID0gc3RydWN0XG4gIHR5cGUgXyB0ICs9IEMgOiBIYW5kbGVyLkFjdGlvbi50IC0+IHVuaXQgdFxuXG4gIGxldCBrZXkgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIENdXG5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLmFkZF9leG4gaGFuZGxlcnMgfmtleSB+ZGF0YTooZnVuIGlucCAtPlxuICAgICAgbWF0Y2ggaW5wIHdpdGhcbiAgICAgIHwgVCAoQyB2YWx1ZSwgY2FsbGJhY2spIC0+XG4gICAgICAgIEhhbmRsZXIuaGFuZGxlIHZhbHVlO1xuICAgICAgICBjYWxsYmFjayAoKVxuICAgICAgfCBfIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiVW5yZWNvZ25pemVkIHZhcmlhbnRcIl0pXG4gIDs7XG5cbiAgbGV0IGluamVjdCB2ID0gQyB2XG5lbmRcblxubW9kdWxlIERlZmluZTEgKEhhbmRsZXIgOiBIYW5kbGVyMSkgOlxuICBTMSB3aXRoIHR5cGUgJ2EgYWN0aW9uIDo9ICdhIEhhbmRsZXIuQWN0aW9uLnQgYW5kIHR5cGUgJ2EgdCA6PSAnYSB0ID0gc3RydWN0XG4gIHR5cGUgXyB0ICs9IEMgOiAnYSBIYW5kbGVyLkFjdGlvbi50IC0+ICdhIHRcblxuICBsZXQga2V5ID0gT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci5pZCBbJWV4dGVuc2lvbl9jb25zdHJ1Y3RvciBDXVxuXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5hZGRfZXhuIGhhbmRsZXJzIH5rZXkgfmRhdGE6KGZ1biBpbnAgLT5cbiAgICAgIG1hdGNoIGlucCB3aXRoXG4gICAgICB8IFQgKEMgdmFsdWUsIGNhbGxiYWNrKSAtPlxuICAgICAgICBsZXQgY2FsbGVkID0gcmVmIGZhbHNlIGluXG4gICAgICAgIGxldCBjYWxsYmFjayBhID1cbiAgICAgICAgICBpZiAhY2FsbGVkXG4gICAgICAgICAgdGhlbiBmYWlsd2l0aCBcIm9uX3Jlc3BvbnNlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyFcIlxuICAgICAgICAgIGVsc2UgY2FsbGVkIDo9IHRydWU7XG4gICAgICAgICAgY2FsbGJhY2sgYVxuICAgICAgICBpblxuICAgICAgICBIYW5kbGVyLmhhbmRsZSB2YWx1ZSB+b25fcmVzcG9uc2U6Y2FsbGJhY2tcbiAgICAgIHwgXyAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlVucmVjb2duaXplZCB2YXJpYW50XCJdKVxuICA7O1xuXG4gIGxldCBpbmplY3QgdiA9IEMgdlxuZW5kXG5cbmxldCBnZXRfa2V5IHQgPSBPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLmlkIChPYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbCB0KVxuXG5sZXQgaGFuZGxlX3JlZ2lzdGVyZWRfZXZlbnQgKFQgKHQsIGNiKSkgPVxuICBIYXNodGJsLmZpbmRfZXhuIGhhbmRsZXJzIChnZXRfa2V5IHQpIChUICh0LCBjYikpXG47O1xuXG5tb2R1bGUgUHJpbnRfcyA9IERlZmluZSAoc3RydWN0XG4gICAgbW9kdWxlIEFjdGlvbiA9IFNleHBcblxuICAgIGxldCBoYW5kbGUgcyA9IHByaW50X3Mgc1xuICBlbmQpXG5cbmxldCBwcmludF9zID0gUHJpbnRfcy5pbmplY3RcblxuKCogRWZmZWN0ZnVsIHRoaW5ncyAqKVxudHlwZSAnYSB0ICs9XG4gIHwgUmV0dXJuIDogJ2EgLT4gJ2EgdFxuICB8IExhenkgOiAnYSB0IExhenkudCAtPiAnYSB0XG4gIHwgQmluZCA6XG4gICAgICB7IHQgOiAnYSB0XG4gICAgICA7IGYgOiAnYSAtPiAnYiB0XG4gICAgICB9XG4gICAgICAtPiAnYiB0XG4gIHwgTWFwIDpcbiAgICAgIHsgdCA6ICdhIHRcbiAgICAgIDsgZiA6ICdhIC0+ICdiXG4gICAgICB9XG4gICAgICAtPiAnYiB0XG4gIHwgTmV2ZXIgOiAnYiB0XG4gIHwgRnVuIDogKGNhbGxiYWNrOignYSAtPiB1bml0KSAtPiB1bml0KSAtPiAnYSB0XG5cbmxldCByZXR1cm4gYSA9IFJldHVybiBhXG5sZXQgYmluZCAodHlwZSBhKSAodCA6IGEgdCkgfmYgPSBCaW5kIHsgdDsgZiB9XG5sZXQgbWFwICh0eXBlIGEgYikgKHQgOiBhIHQpIH5mIDogYiB0ID0gTWFwIHsgdDsgZiB9XG5sZXQgbmV2ZXIgPSBOZXZlclxubGV0IG9mX2Z1biB+ZiA9IEZ1biBmXG5sZXQgbGF6eV8gYSA9IExhenkgYVxuXG5pbmNsdWRlIENvcmUuTW9uYWQuTWFrZSAoc3RydWN0XG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIHRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5sZXQgcmVjIGV2YWwgOiB0eXBlIGEuIGEgdCAtPiBjYWxsYmFjazooYSAtPiB1bml0KSAtPiB1bml0ID1cbiAgZnVuIHQgfmNhbGxiYWNrIC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEZ1biBmIC0+IGYgfmNhbGxiYWNrXG4gIHwgSWdub3JlIC0+IGNhbGxiYWNrICgpXG4gIHwgUmV0dXJuIGEgLT4gY2FsbGJhY2sgYVxuICB8IExhenkgKGxhenkgdCkgLT4gZXZhbCB0IH5jYWxsYmFja1xuICB8IE1hbnkgbCAtPlxuICAgIExpc3QuaXRlciBsIH5mOihldmFsIH5jYWxsYmFjazppZ25vcmUpO1xuICAgIGNhbGxiYWNrICgpXG4gIHwgQmluZCB7IHQ7IGYgfSAtPiBldmFsIHQgfmNhbGxiYWNrOihmdW4gYSAtPiBldmFsIChmIGEpIH5jYWxsYmFjaylcbiAgfCBNYXAgeyB0OyBmIH0gLT4gZXZhbCB0IH5jYWxsYmFjazooZnVuIGEgLT4gY2FsbGJhY2sgKGYgYSkpXG4gIHwgTmV2ZXIgLT4gKClcbiAgfCB0IC0+IGhhbmRsZV9yZWdpc3RlcmVkX2V2ZW50IChUICh0LCBjYWxsYmFjaykpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBoYW5kbGUgPSBldmFsIH5jYWxsYmFjazppZ25vcmVcblxuICB0eXBlIGhpZGUgPSBoaWRkZW4gPSBUIDogKCdhIHQgKiAoJ2EgLT4gdW5pdCkpIC0+IGhpZGVcblxuICBsZXQgaGFuZGxlcnMgPSBoYW5kbGVyc1xuICBsZXQgb2ZfZnVuID0gb2ZfZnVuXG5lbmRcblxubW9kdWxlIEFkdmFuY2VkID0gc3RydWN0XG4gIG1vZHVsZSBTeW5jX2Z1bl9hcmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgQWN0aW9uID0gc3RydWN0XG4gICAgICB0eXBlICdyIHQgPSBUIDogJ2EgKiAoJ2EgLT4gJ3IpIC0+ICdyIHRcbiAgICBlbmRcblxuICAgIGxldCBoYW5kbGUgKEFjdGlvbi5UIChhLCBmKSkgfm9uX3Jlc3BvbnNlID0gb25fcmVzcG9uc2UgKGYgYSlcbiAgZW5kXG5cbiAgbW9kdWxlIFN5bmNfZnVuID0gRGVmaW5lMSAoU3luY19mdW5fYXJnKVxuXG4gIGxldCBvZl9zeW5jX2Z1biBmIGEgPSBTeW5jX2Z1bi5pbmplY3QgKFQgKGEsIGYpKVxuXG4gIG1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gICAgbW9kdWxlIENhbGxiYWNrID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAoJ2EsICdiKSB0ID1cbiAgICAgICAgeyByZXF1ZXN0IDogJ2FcbiAgICAgICAgOyBvbl9yZXNwb25zZSA6ICdiIC0+IHVuaXQgdFxuICAgICAgICB9XG5cbiAgICAgIGxldCBtYWtlIH5yZXF1ZXN0IH5vbl9yZXNwb25zZSA9IHsgcmVxdWVzdDsgb25fcmVzcG9uc2UgfVxuICAgICAgbGV0IHJlcXVlc3QgeyByZXF1ZXN0OyBfIH0gPSByZXF1ZXN0XG4gICAgICBsZXQgcmVzcG9uZF90byB7IG9uX3Jlc3BvbnNlOyBfIH0gcmVzcG9uc2UgPSBvbl9yZXNwb25zZSByZXNwb25zZVxuICAgIGVuZFxuXG4gICAgbGV0IG1ha2UgOiByZXF1ZXN0OidhIC0+IGV2YWx1YXRvcjooKCdhLCAnYikgQ2FsbGJhY2sudCAtPiB1bml0IHQpIC0+ICdiIHQgPVxuICAgICAgZnVuIH5yZXF1ZXN0IH5ldmFsdWF0b3IgLT5cbiAgICAgIEV4cGVydC5vZl9mdW4gfmY6KGZ1biB+Y2FsbGJhY2sgLT5cbiAgICAgICAgbGV0IGNhbGxiYWNrID1cbiAgICAgICAgICBDYWxsYmFjay5tYWtlIH5yZXF1ZXN0IH5vbl9yZXNwb25zZTooZnVuIHJlc3BvbnNlIC0+XG4gICAgICAgICAgICBjYWxsYmFjayByZXNwb25zZTtcbiAgICAgICAgICAgIElnbm9yZSlcbiAgICAgICAgaW5cbiAgICAgICAgRXhwZXJ0LmhhbmRsZSAoZXZhbHVhdG9yIGNhbGxiYWNrKSlcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3ZhciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgICAgIHwgRW1wdHkgb2YgeyBoYW5kbGVycyA6ICgnYSAtPiB1bml0KSBCYWcudCB9XG4gICAgICAgIHwgRnVsbCBvZiAnYVxuXG4gICAgICB0eXBlICdhIHQgPSAnYSBzdGF0ZSByZWZcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IHJlZiAoRW1wdHkgeyBoYW5kbGVycyA9IEJhZy5jcmVhdGUgKCkgfSlcblxuICAgICAgbGV0IHVwb24gdCBoYW5kbGVyID1cbiAgICAgICAgbWF0Y2ggIXQgd2l0aFxuICAgICAgICB8IEVtcHR5IHsgaGFuZGxlcnMgfSAtPiBpZ25vcmUgKEJhZy5hZGQgaGFuZGxlcnMgaGFuZGxlciA6IF8gQmFnLkVsdC50KVxuICAgICAgICB8IEZ1bGwgeCAtPiBoYW5kbGVyIHhcbiAgICAgIDs7XG5cbiAgICAgIGxldCBmaWxsX2lmX2VtcHR5IHQgeCA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBGdWxsIF8gLT4gKClcbiAgICAgICAgfCBFbXB0eSB7IGhhbmRsZXJzIH0gLT5cbiAgICAgICAgICBCYWcuaXRlciBoYW5kbGVycyB+ZjooZnVuIGhhbmRsZXIgLT4gaGFuZGxlciB4KTtcbiAgICAgICAgICB0IDo9IEZ1bGwgeFxuICAgICAgOztcblxuICAgICAgbGV0IHBlZWsgdCA9XG4gICAgICAgIG1hdGNoICF0IHdpdGhcbiAgICAgICAgfCBFbXB0eSBfIC0+IE5vbmVcbiAgICAgICAgfCBGdWxsIHggLT4gU29tZSB4XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN2YXJfZnVuX2FyZyA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICAgICAgICB0eXBlICdyIHQgPSBUIDogJ2EgKiAoJ2EgLT4gJ3IgU3Zhci50KSAtPiAnciB0XG4gICAgICBlbmRcblxuICAgICAgbGV0IGhhbmRsZSAoQWN0aW9uLlQgKGEsIGYpKSB+b25fcmVzcG9uc2UgPSBTdmFyLnVwb24gKGYgYSkgb25fcmVzcG9uc2VcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTdmFyX2Z1biA9IERlZmluZTEgKFN2YXJfZnVuX2FyZylcblxuICAgIGxldCBvZl9zdmFyX2Z1biBmIGEgPSBTdmFyX2Z1bi5pbmplY3QgKFQgKGEsIGYpKVxuXG4gICAgbW9kdWxlIFF1ZXJ5X3Jlc3BvbnNlX3RyYWNrZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgKCdxLCAncikgcnBjID1cbiAgICAgICAgeyBxdWVyeSA6ICdxXG4gICAgICAgIDsgcmVzcG9uc2UgOiAnciBTdmFyLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncSwgJ3IpIHQgPSAoJ3EsICdyKSBycGMgQmFnLnRcblxuICAgICAgbGV0IGNyZWF0ZSAoKSA9IEJhZy5jcmVhdGUgKClcblxuICAgICAgbGV0IGFkZF9xdWVyeSB0IHF1ZXJ5ID1cbiAgICAgICAgbGV0IHJlc3BvbnNlID0gU3Zhci5jcmVhdGUgKCkgaW5cbiAgICAgICAgaWdub3JlIChCYWcuYWRkIHQgeyBxdWVyeTsgcmVzcG9uc2UgfSA6IF8gQmFnLkVsdC50KTtcbiAgICAgICAgcmVzcG9uc2VcbiAgICAgIDs7XG5cbiAgICAgIGxldCBxdWVyaWVzX3BlbmRpbmdfcmVzcG9uc2UgdCA9XG4gICAgICAgIEJhZy50b19saXN0IHQgfD4gTGlzdC5tYXAgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSA9IF8gfSAtPiBxdWVyeSlcbiAgICAgIDs7XG5cbiAgICAgIHR5cGUgJ3IgbWF5YmVfcmVzcG9uZCA9XG4gICAgICAgIHwgTm9fcmVzcG9uc2VfeWV0XG4gICAgICAgIHwgUmVzcG9uZCBvZiAnclxuXG4gICAgICBsZXQgbWF5YmVfcmVzcG9uZCB0IH5mID1cbiAgICAgICAgQmFnLmZpbHRlcl9pbnBsYWNlIHQgfmY6KGZ1biB7IHF1ZXJ5OyByZXNwb25zZSB9IC0+XG4gICAgICAgICAgbWF0Y2ggZiBxdWVyeSB3aXRoXG4gICAgICAgICAgfCBOb19yZXNwb25zZV95ZXQgLT4gdHJ1ZVxuICAgICAgICAgIHwgUmVzcG9uZCByZXNwIC0+XG4gICAgICAgICAgICBTdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgcmVzcDtcbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgOztcbiAgICBlbmRcblxuICAgIGxldCBvZl9xdWVyeV9yZXNwb25zZV90cmFja2VyIHFydCA9IG9mX3N2YXJfZnVuIChRdWVyeV9yZXNwb25zZV90cmFja2VyLmFkZF9xdWVyeSBxcnQpXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgQWR2YW5jZWRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5tb2R1bGUgVG9rZW4gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IElkZW50XG4gICAgfCBGdW5jdGlvblxuICAgIHwgQXRrZXl3b3JkXG4gICAgfCBIYXNoXG4gICAgfCBTdHJpbmdcbiAgICB8IFVyaVxuICAgIHwgRGVsaW1cbiAgICB8IE51bWJlclxuICAgIHwgUGVyY2VudGFnZVxuICAgIHwgRGltZW5zaW9uXG4gICAgfCBXaGl0ZV9zcGFjZVxuICAgIHwgQ29sb25cbiAgICB8IFNlbWlfY29sb25cbiAgICB8IENvbW1hXG4gICAgfCBMYnJhY2tldFxuICAgIHwgUmJyYWNrZXRcbiAgICB8IExwYXJlblxuICAgIHwgUnBhcmVuXG4gICAgfCBMY3VybHlcbiAgICB8IFJjdXJseVxuICAgIHwgQ29tbWVudFxuICAgIHwgRW9mXG4gICAgfCBFcnJvclxuICBbQEBkZXJpdmluZyBzZXhwLCBjb21wYXJlXVxuXG4gIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbmVuZFxuXG50eXBlIHQgPVxuICB7IHMgOiBzdHJpbmdcbiAgOyBtdXRhYmxlIG9mZiA6IGludFxuICA7ICgqIHN0YXJ0IG9mIHRoZSBjdXJyZW50IHRva2VuICopXG4gICAgbXV0YWJsZSBsZW4gOiBpbnRcbiAgOyAoKiBsZW5ndGggb2YgdGhlIGN1cnJlbnQgdG9rZW4gKilcbiAgICBtdXRhYmxlIGN1cnJlbnQgOiBUb2tlbi50XG4gIH1cblxudHlwZSBtYXJrID0gTWFyayBvZiBpbnQgW0BAdW5ib3hlZF1cblxubGV0IG1hcmsgdCA9IE1hcmsgdC5sZW5cbmxldCBzb3VyY2UgdCA9IHQuc1xubGV0IG5leHRfcG9zIHQgPSB0Lm9mZiArIHQubGVuXG5sZXQgaXNfbmV4dF9lb2YgdCA9IG5leHRfcG9zIHQgPj0gU3RyaW5nLmxlbmd0aCB0LnNcbmxldCBuZXh0X2NoYXIgdCA9IHQucy5bbmV4dF9wb3MgdF1cbmxldCByZXNldCB0IChNYXJrIHYpID0gdC5sZW4gPC0gdlxubGV0IGNvbnN1bWVfMSB0ID0gdC5sZW4gPC0gdC5sZW4gKyAxXG5sZXQgY29uc3VtZV9uIHQgbiA9IHQubGVuIDwtIHQubGVuICsgblxuXG5sZXQgb25lX2NoYXJfdG9rZW4gdCB0b2sgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGNvbnN1bWVfMSB0O1xuICB0LmN1cnJlbnQgPC0gdG9rXG47O1xuXG5leGNlcHRpb24gRXJyb3JfaGFwcGVuZWRcblxubGV0IGVycm9yIHQgPVxuICB0LmN1cnJlbnQgPC0gRXJyb3I7XG4gIHJhaXNlIEVycm9yX2hhcHBlbmVkXG47O1xuXG5sZXQgYWNjZXB0IHQgZiA9XG4gIGlmIChub3QgKGlzX25leHRfZW9mIHQpKSAmJiBmIChuZXh0X2NoYXIgdClcbiAgdGhlbiAoXG4gICAgY29uc3VtZV8xIHQ7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuOztcblxubGV0IGFjY2VwdF9jaGFyIHQgY2ggPSBhY2NlcHQgdCAoQ2hhci5lcXVhbCBjaClcblxubGV0IGFjY2VwdF9zdHJpbmcgdCBzdHIgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA9IDBcbiAgdGhlbiB0cnVlXG4gIGVsc2UgKFxuICAgIGxldCBwb3MgPSBuZXh0X3BvcyB0IGluXG4gICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgIGlmIHBvcyArIHN0cl9sZW4gPiBTdHJpbmcubGVuZ3RoIHQuc1xuICAgIHRoZW4gZmFsc2VcbiAgICBlbHNlIGlmIFN0cmluZy5pc19zdWJzdHJpbmdfYXQgdC5zIH5wb3MgfnN1YnN0cmluZzpzdHJcbiAgICB0aGVuIChcbiAgICAgIGNvbnN1bWVfbiB0IHN0cl9sZW47XG4gICAgICB0cnVlKVxuICAgIGVsc2UgZmFsc2UpXG47O1xuXG5sZXQgZXhwZWN0IHQgZiA9IGlmIGFjY2VwdCB0IGYgdGhlbiAoKSBlbHNlIGVycm9yIHRcbmxldCBleHBlY3RfY2hhciB0IGNoID0gZXhwZWN0IHQgKENoYXIuZXF1YWwgY2gpXG5cbmxldCBtYW55IHQgZiA9XG4gIHdoaWxlIChub3QgKGlzX25leHRfZW9mIHQpKSAmJiBmIChuZXh0X2NoYXIgdCkgZG9cbiAgICBjb25zdW1lXzEgdFxuICBkb25lXG47O1xuXG5sZXQgbWFueTEgdCBmID1cbiAgZXhwZWN0IHQgZjtcbiAgbWFueSB0IGZcbjs7XG5cbmxldCBwbHVzX29yX21pbnVzID0gZnVuY3Rpb25cbiAgfCAnLScgfCAnKycgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBubXN0YXJ0ID0gZnVuY3Rpb25cbiAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICdfJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuOztcblxubGV0IG5tY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnXycgfCAnMCcgLi4gJzknIHwgJy0nIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgaWRlbnQgdCA9XG4gIGlmIGFjY2VwdF9jaGFyIHQgJy0nXG4gIHRoZW5cbiAgICBpZiBhY2NlcHRfY2hhciB0ICctJ1xuICAgIHRoZW4gbWFueSB0IG5tY2hhclxuICAgIGVsc2UgKFxuICAgICAgZXhwZWN0IHQgbm1zdGFydDtcbiAgICAgIG1hbnkgdCBubWNoYXIpXG4gIGVsc2UgKFxuICAgIGV4cGVjdCB0IG5tc3RhcnQ7XG4gICAgbWFueSB0IG5tY2hhcilcbjs7XG5cbmxldCBpZGVudF9vcl9mdW5jdGlvbiB0ID1cbiAgaWRlbnQgdDtcbiAgaWYgYWNjZXB0X2NoYXIgdCAnKCcgdGhlbiB0LmN1cnJlbnQgPC0gRnVuY3Rpb24gZWxzZSB0LmN1cnJlbnQgPC0gSWRlbnRcbjs7XG5cbmxldCBpc193aGl0ZXNwYWNlID0gZnVuY3Rpb25cbiAgfCAnICcgfCAnXFx0JyB8ICdcXHInIHwgJ1xcbicgfCAnXFx4MGMnIC0+IHRydWVcbiAgfCBfIC0+IGZhbHNlXG47O1xuXG5sZXQgcXVvdGVkX3N0cmluZycgdCB+cXVvdGUgPVxuICBhc3NlcnQgKENoYXIuZXF1YWwgKG5leHRfY2hhciB0KSBxdW90ZSk7XG4gIGNvbnN1bWVfMSB0O1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgIHwgJ1xcbicgfCAnXFxyJyB8ICdcXHgwYycgfCAnXFxcXCcgLT4gZmFsc2VcbiAgICAgIHwgYyB3aGVuIENoYXIuZXF1YWwgYyBxdW90ZSAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpO1xuICAgIGlmIGFjY2VwdF9jaGFyIHQgJ1xcXFwnXG4gICAgdGhlblxuICAgICAgaWYgYWNjZXB0X2NoYXIgdCBxdW90ZVxuICAgICAgdGhlbiBsb29wICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbmV4dF9jaGFyIHQgd2l0aFxuICAgICAgICB8ICdcXG4nIHwgJ1xceDBjJyAtPlxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgICAgfCAnXFxyJyAtPlxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGlnbm9yZSAoYWNjZXB0X2NoYXIgdCAnXFxuJyA6IGJvb2wpO1xuICAgICAgICAgIGxvb3AgKClcbiAgICAgICAgfCBfYyAtPlxuICAgICAgICAgICgqIEhhbmRsZSB0aGUgXCJlc2NhcGVcIiBydWxlOlxuICAgICAgICAgICAgIHt2XG4gICAgICAgICAgICAgICAgdW5pY29kZTogXFxcXFswLTlhLWZdezEsNn0oXFxyXFxufFsgXFxuXFxyXFx0XFxmXSk/XG4gICAgICAgICAgICAgICAgZXNjYXBlIDoge3VuaWNvZGV9fFxcXFxbXlxcblxcclxcZjAtOWEtZl1cbiAgICAgICAgICAgICAgdn1cbiAgICAgICAgICAqKVxuICAgICAgICAgIGNvbnN1bWVfMSB0O1xuICAgICAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKCk7XG4gIGV4cGVjdF9jaGFyIHQgcXVvdGVcbjs7XG5cbmxldCBzdGFydF9udW0gdCA9XG4gIGxldCBjdXIgPSBtYXJrIHQgaW5cbiAgbGV0IGIgPVxuICAgIGlnbm9yZSAoYWNjZXB0IHQgcGx1c19vcl9taW51cyA6IGJvb2wpO1xuICAgIGlnbm9yZSAoYWNjZXB0X2NoYXIgdCAnLicgOiBib29sKTtcbiAgICBhY2NlcHQgdCBDaGFyLmlzX2RpZ2l0XG4gIGluXG4gIHJlc2V0IHQgY3VyO1xuICBiXG47O1xuXG5sZXQgc3RhcnRfaWRlbnQgfnByZWZpeCB0ID1cbiAgbGV0IGN1ciA9IG1hcmsgdCBpblxuICBsZXQgYiA9XG4gICAgYWNjZXB0X3N0cmluZyB0IHByZWZpeFxuICAgICYmXG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLScgdGhlbiBhY2NlcHRfY2hhciB0ICctJyB8fCBhY2NlcHQgdCBubXN0YXJ0IGVsc2UgYWNjZXB0IHQgbm1zdGFydFxuICBpblxuICByZXNldCB0IGN1cjtcbiAgYlxuOztcblxubGV0IHF1b3RlZF9zdHJpbmcgdCB+cXVvdGUgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIHF1b3RlZF9zdHJpbmcnIHQgfnF1b3RlO1xuICB0LmN1cnJlbnQgPC0gU3RyaW5nXG47O1xuXG5sZXQgZXhwb25lbnRpYWxfcGFydCB0ID1cbiAgbGV0IG1hcmsgPSBtYXJrIHQgaW5cbiAgaWYgYWNjZXB0IHQgKGZ1bmN0aW9uXG4gICAgfCAnZScgfCAnRScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZSlcbiAgdGhlblxuICAgIGlmIGFjY2VwdCB0IHBsdXNfb3JfbWludXNcbiAgICB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdFxuICAgIGVsc2UgaWYgYWNjZXB0IHQgQ2hhci5pc19kaWdpdFxuICAgIHRoZW4gbWFueSB0IENoYXIuaXNfZGlnaXRcbiAgICBlbHNlXG4gICAgICAoKiBCYWNrdHJhY2sgaWYgdGhlcmUgYXJlIG5vIGRpZ2l0cyBvciBzaWducyBhZnRlciB0aGUgJ2UnIGJlY2F1c2VcbiAgICAgICAgIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlICdlJyB3YXMgYWN0dWFsbHkgYSBwYXJ0IG9mIHNvbWV0aGluZyBlbHNlLiBGb3JcbiAgICAgICAgIGV4YW1wbGUsIHRoZSAnZScgY291bGQgYmUgcGFydCBvZiBhbiAnZW0nIG9yICdlbicgZGltZW5zaW9uIGluc3RlYWRcbiAgICAgICAgIG9mIGJlZ2lubmluZyB0aGUgZXhwb25lbnRpYWwgcGFydCBvZiBhIHNjaWVudGlmaWMgbm90YXRpb24gbnVtYmVyLlxuXG4gICAgICAgICBFeGFtcGxlOiAxLjJlMyBpcyBzY2llbnRpZmljIG5vdGF0aW9uLCBidXQgMS4yZW0gaXMgYSBudW1iZXIgd2l0aCBhXG4gICAgICAgICBkaW1lbnNpb24uICopXG4gICAgICByZXNldCB0IG1hcmtcbjs7XG5cbmxldCBudW0gdCA9XG4gIGlnbm9yZSAoYWNjZXB0IHQgcGx1c19vcl9taW51cyA6IGJvb2wpO1xuICBpZiBhY2NlcHRfY2hhciB0ICcuJ1xuICB0aGVuIG1hbnkxIHQgQ2hhci5pc19kaWdpdFxuICBlbHNlIChcbiAgICBtYW55MSB0IENoYXIuaXNfZGlnaXQ7XG4gICAgaWYgYWNjZXB0X2NoYXIgdCAnLicgdGhlbiBtYW55MSB0IENoYXIuaXNfZGlnaXQpO1xuICBleHBvbmVudGlhbF9wYXJ0IHRcbjs7XG5cbmxldCBudW1iZXJfb3JfcGVyY2VudGFnZV9vcl9kaW1lbnNpb24gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgbnVtIHQ7XG4gIGlmIGFjY2VwdF9jaGFyIHQgJyUnXG4gIHRoZW4gdC5jdXJyZW50IDwtIFBlcmNlbnRhZ2VcbiAgZWxzZSBpZiBzdGFydF9pZGVudCB+cHJlZml4OlwiXCIgdFxuICB0aGVuIChcbiAgICBpZGVudCB0O1xuICAgIHQuY3VycmVudCA8LSBEaW1lbnNpb24pXG4gIGVsc2UgdC5jdXJyZW50IDwtIE51bWJlclxuOztcblxubGV0IGhhc2hfb3JfZGVsaW0gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJyMnKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGlmIGFjY2VwdCB0IG5tY2hhclxuICB0aGVuIChcbiAgICBtYW55MSB0IG5tY2hhcjtcbiAgICB0LmN1cnJlbnQgPC0gSGFzaClcbiAgZWxzZSB0LmN1cnJlbnQgPC0gRGVsaW1cbjs7XG5cbmxldCBhdGtleXdvcmQgdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ0AnKTtcbiAgY29uc3VtZV8xIHQ7XG4gIGlkZW50IHQ7XG4gIHQuY3VycmVudCA8LSBBdGtleXdvcmRcbjs7XG5cbmxldCB1cmlfb3JfaWRlbnRfb3JfZnVuY3Rpb24gdCA9XG4gIGFzc2VydCAodC5sZW4gPSAwKTtcbiAgYXNzZXJ0IChDaGFyLmVxdWFsIChuZXh0X2NoYXIgdCkgJ3UnKTtcbiAgaWYgYWNjZXB0X3N0cmluZyB0IFwidXJsKFwiXG4gIHRoZW4gKFxuICAgIGxldCBtID0gbWFyayB0IGluXG4gICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgaWYgQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdcIicgfHwgQ2hhci5lcXVhbCAobmV4dF9jaGFyIHQpICdcXCcnXG4gICAgdGhlbiAoXG4gICAgICByZXNldCB0IG07XG4gICAgICB0LmN1cnJlbnQgPC0gRnVuY3Rpb24pXG4gICAgZWxzZSAoXG4gICAgICBtYW55IHQgKGZ1bmN0aW9uXG4gICAgICAgIHwgJyknIHwgJyAnIC0+IGZhbHNlXG4gICAgICAgIHwgJ1xcJycgfCAnXCInIHwgJygnIC0+IGVycm9yIHRcbiAgICAgICAgfCBjIHdoZW4gQ2hhci5pc19wcmludCBjIC0+IHRydWVcbiAgICAgICAgfCBfIC0+IGVycm9yIHQpO1xuICAgICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgICBleHBlY3RfY2hhciB0ICcpJztcbiAgICAgIHQuY3VycmVudCA8LSBVcmkpKVxuICBlbHNlIGlkZW50X29yX2Z1bmN0aW9uIHRcbjs7XG5cbmxldCBjb21tZW50X29yX2RlbGltIHQgPVxuICBhc3NlcnQgKHQubGVuID0gMCk7XG4gIGlmIGFjY2VwdF9zdHJpbmcgdCBcIi8qXCJcbiAgdGhlbiAoXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIG1hbnkgdCAoZnVuY3Rpb25cbiAgICAgICAgfCAnKicgLT4gZmFsc2VcbiAgICAgICAgfCBfIC0+IHRydWUpO1xuICAgICAgaWYgYWNjZXB0X3N0cmluZyB0IFwiKi9cIlxuICAgICAgdGhlbiB0LmN1cnJlbnQgPC0gQ29tbWVudFxuICAgICAgZWxzZSBpZiBhY2NlcHRfY2hhciB0ICcqJ1xuICAgICAgdGhlbiBsb29wICgpXG4gICAgICBlbHNlIGVycm9yIHRcbiAgICBpblxuICAgIGxvb3AgKCkpXG4gIGVsc2UgKFxuICAgIGV4cGVjdF9jaGFyIHQgJy8nO1xuICAgIHQuY3VycmVudCA8LSBEZWxpbSlcbjs7XG5cbmxldCBuZXh0IHQgPVxuICBsZXQgbmV3X29mZiA9IG5leHRfcG9zIHQgaW5cbiAgdC5vZmYgPC0gbmV3X29mZjtcbiAgdC5sZW4gPC0gMDtcbiAgaWYgaXNfbmV4dF9lb2YgdFxuICB0aGVuIHQuY3VycmVudCA8LSBFb2ZcbiAgZWxzZSAoXG4gICAgbWF0Y2ggbmV4dF9jaGFyIHQgd2l0aFxuICAgIHwgYyB3aGVuIGlzX3doaXRlc3BhY2UgYyAtPlxuICAgICAgbWFueSB0IGlzX3doaXRlc3BhY2U7XG4gICAgICB0LmN1cnJlbnQgPC0gV2hpdGVfc3BhY2VcbiAgICB8ICc6JyAtPiBvbmVfY2hhcl90b2tlbiB0IENvbG9uXG4gICAgfCAnOycgLT4gb25lX2NoYXJfdG9rZW4gdCBTZW1pX2NvbG9uXG4gICAgfCAneycgLT4gb25lX2NoYXJfdG9rZW4gdCBMY3VybHlcbiAgICB8ICd9JyAtPiBvbmVfY2hhcl90b2tlbiB0IFJjdXJseVxuICAgIHwgJ1snIC0+IG9uZV9jaGFyX3Rva2VuIHQgTGJyYWNrZXRcbiAgICB8ICddJyAtPiBvbmVfY2hhcl90b2tlbiB0IFJicmFja2V0XG4gICAgfCAnKCcgLT4gb25lX2NoYXJfdG9rZW4gdCBMcGFyZW5cbiAgICB8ICcpJyAtPiBvbmVfY2hhcl90b2tlbiB0IFJwYXJlblxuICAgIHwgJywnIC0+IG9uZV9jaGFyX3Rva2VuIHQgQ29tbWFcbiAgICB8ICgnXFwnJyB8ICdcIicpIGFzIHF1b3RlIC0+IHF1b3RlZF9zdHJpbmcgdCB+cXVvdGVcbiAgICB8ICgnMCcgLi4gJzknIHwgJy4nIHwgJysnIHwgJy0nKSB3aGVuIHN0YXJ0X251bSB0IC0+XG4gICAgICBudW1iZXJfb3JfcGVyY2VudGFnZV9vcl9kaW1lbnNpb24gdFxuICAgIHwgJy8nIC0+IGNvbW1lbnRfb3JfZGVsaW0gdFxuICAgIHwgJyMnIC0+IGhhc2hfb3JfZGVsaW0gdFxuICAgIHwgJ0AnIHdoZW4gc3RhcnRfaWRlbnQgfnByZWZpeDpcIkBcIiB0IC0+IGF0a2V5d29yZCB0XG4gICAgfCAndScgLT4gdXJpX29yX2lkZW50X29yX2Z1bmN0aW9uIHRcbiAgICB8IF8gLT5cbiAgICAgIGlmIHN0YXJ0X2lkZW50IH5wcmVmaXg6XCJcIiB0XG4gICAgICB0aGVuIGlkZW50X29yX2Z1bmN0aW9uIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBjb25zdW1lXzEgdDtcbiAgICAgICAgKCogdGhpcyBpcyB3ZWlyZCBidXQgdGhlIHNwZWMgaXMgd2VpcmQgKilcbiAgICAgICAgdC5jdXJyZW50IDwtIERlbGltKSlcbjs7XG5cbmxldCBuZXh0IHQgPVxuICAoKiBNYWtlIHN1cmUgd2UgYXJlIGlkZW1wb3RlbnQgd2hlbiB3ZSBnZXQgaW50byB0aGUgZXJyb3Igc3RhdGUgKilcbiAgaWYgVG9rZW4uZXF1YWwgdC5jdXJyZW50IEVycm9yXG4gIHRoZW4gKClcbiAgZWxzZSAoXG4gICAgdHJ5IG5leHQgdCB3aXRoXG4gICAgfCBFcnJvcl9oYXBwZW5lZCAtPiAoKSlcbjs7XG5cbmxldCBjcmVhdGUgcyA9XG4gICgqIGN1cnJlbnQgaXMgZHVtbXkgYW5kIHdpbGwgYmUgc2V0IGJ5IGNhbGwgdG8gbmV4dCAqKVxuICBsZXQgdCA9IHsgczsgb2ZmID0gMDsgbGVuID0gMDsgY3VycmVudCA9IFdoaXRlX3NwYWNlIH0gaW5cbiAgbmV4dCB0O1xuICB0XG47O1xuXG5sZXQgc2xpY2UgdCA9IHQub2ZmLCB0LmxlblxubGV0IGN1cnJlbnQgdCA9IHQuY3VycmVudFxuXG5sZXQgY3VycmVudF90ZXh0IHQgPVxuICBpZiBUb2tlbi5lcXVhbCB0LmN1cnJlbnQgRW9mXG4gIHRoZW4gXCJcIlxuICBlbHNlIChcbiAgICBsZXQgcG9zLCBsZW4gPSBzbGljZSB0IGluXG4gICAgU3RyaW5nLnN1YiB0LnMgfnBvcyB+bGVuKVxuOztcblxubGV0IHRvX2xpc3QgcyA9XG4gIGxldCB0ID0gY3JlYXRlIHMgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyA9XG4gICAgbGV0IHN0YXJ0LCBsZW4gPSBzbGljZSB0IGluXG4gICAgbGV0IGFjYyA9IChjdXJyZW50IHQsIHN0YXJ0LCBsZW4pIDo6IGFjYyBpblxuICAgIGlmIFRva2VuLmVxdWFsIChjdXJyZW50IHQpIEVvZiB8fCBUb2tlbi5lcXVhbCAoY3VycmVudCB0KSBFcnJvclxuICAgIHRoZW4gTGlzdC5yZXYgYWNjXG4gICAgZWxzZSAoXG4gICAgICBuZXh0IHQ7XG4gICAgICBsb29wIGFjYylcbiAgaW5cbiAgbG9vcCBbXVxuOztcblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IHRlc3QgcyA9XG4gICAgICBwcmludF9lbmRsaW5lXG4gICAgICAgIChTZXhwLnRvX3N0cmluZ19tYWNoIChbJXNleHBfb2Y6IChUb2tlbi50ICogaW50ICogaW50KSBsaXN0XSAodG9fbGlzdCBzKSkpXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImVvZlwiID1cbiAgICAgIHRlc3QgXCJcIjtcbiAgICAgIFslZXhwZWN0IHt8KChFb2YgMCAwKSl8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwic2ltcGxlX3Rva2Vuc1wiID1cbiAgICAgIHRlc3QgXCIpKHt9W107OlwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChScGFyZW4gMCAxKShMcGFyZW4gMSAxKShMY3VybHkgMiAxKShSY3VybHkgMyAxKShMYnJhY2tldCA0IDEpKFJicmFja2V0IDUgMSkoU2VtaV9jb2xvbiA2IDEpKENvbG9uIDcgMSkoRW9mIDggMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJpZGVudFwiID1cbiAgICAgIHRlc3QgXCItZm9vLWJhcjogYmF6XCI7XG4gICAgICB0ZXN0IFwiLWZvby1iYXIoXCI7XG4gICAgICB0ZXN0IFwiQGZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCJALWZvby1iYXJcIjtcbiAgICAgIHRlc3QgXCJALS1mb28tYmFyXCI7XG4gICAgICB0ZXN0IFwiLS12YXJcIjtcbiAgICAgIHRlc3QgXCJSR0JBXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA4KShDb2xvbiA4IDEpKFdoaXRlX3NwYWNlIDkgMSkoSWRlbnQgMTAgMykoRW9mIDEzIDApKVxuICAgICgoRnVuY3Rpb24gMCA5KShFb2YgOSAwKSlcbiAgICAoKEF0a2V5d29yZCAwIDgpKEVvZiA4IDApKVxuICAgICgoQXRrZXl3b3JkIDAgOSkoRW9mIDkgMCkpXG4gICAgKChBdGtleXdvcmQgMCAxMCkoRW9mIDEwIDApKVxuICAgICgoSWRlbnQgMCA1KShFb2YgNSAwKSlcbiAgICAoKElkZW50IDAgNCkoRW9mIDQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ3aGl0ZXNwYWNlXCIgPVxuICAgICAgdGVzdCBcIiAgXCI7XG4gICAgICBbJWV4cGVjdCB7fCgoV2hpdGVfc3BhY2UgMCAyKShFb2YgMiAwKSl8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwibnVtYmVyc1wiID1cbiAgICAgIHRlc3QgXCJtYXJnaW46IDAuNWVuXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjVlbVwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogMC41aW5cIjtcbiAgICAgIHRlc3QgXCJsaW5lLWhlaWdodDogM2NtXCI7XG4gICAgICB0ZXN0IFwibGluZS1oZWlnaHQ6IDEyMCVcIjtcbiAgICAgIHRlc3QgXCJncmlkOiAwIDEgZm9vXCI7XG4gICAgICB0ZXN0IFwibWFyZ2luOiAwLjUtaW5cIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUrMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMmUtMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUrMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUtMjBcIjtcbiAgICAgIHRlc3QgXCJtYXJnaW46IC4wMkUyMFwiO1xuICAgICAgdGVzdCBcIm1hcmdpbjogLjAyZTIwXCI7XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCA2KShDb2xvbiA2IDEpKFdoaXRlX3NwYWNlIDcgMSkoRGltZW5zaW9uIDggNSkoRW9mIDEzIDApKVxuICAgICgoSWRlbnQgMCAxMSkoQ29sb24gMTEgMSkoV2hpdGVfc3BhY2UgMTIgMSkoRGltZW5zaW9uIDEzIDMpKEVvZiAxNiAwKSlcbiAgICAoKElkZW50IDAgMTEpKENvbG9uIDExIDEpKFdoaXRlX3NwYWNlIDEyIDEpKFBlcmNlbnRhZ2UgMTMgNCkoRW9mIDE3IDApKVxuICAgICgoSWRlbnQgMCA0KShDb2xvbiA0IDEpKFdoaXRlX3NwYWNlIDUgMSkoTnVtYmVyIDYgMSkoV2hpdGVfc3BhY2UgNyAxKShOdW1iZXIgOCAxKShXaGl0ZV9zcGFjZSA5IDEpKElkZW50IDEwIDMpKEVvZiAxMyAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKERpbWVuc2lvbiA4IDYpKEVvZiAxNCAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDcpKEVvZiAxNSAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDYpKEVvZiAxNCAwKSlcbiAgICAoKElkZW50IDAgNikoQ29sb24gNiAxKShXaGl0ZV9zcGFjZSA3IDEpKE51bWJlciA4IDYpKEVvZiAxNCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImJhZGx5X3F1b3RlZFwiID1cbiAgICAgIHRlc3QgXCInZm9vIGJhclwiO1xuICAgICAgdGVzdCBcIidcIjtcbiAgICAgIHRlc3QgXCInXFxcXCdcIjtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgKChFcnJvciAwIDgpKVxuICAgICgoRXJyb3IgMCAxKSlcbiAgICAoKEVycm9yIDAgMykpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJxdW90ZWRcIiA9XG4gICAgICB0ZXN0IHt8J0ZvbyAnXCJCYXJcIic7JyAnXFwnJyBcIlxcXCJcInx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3wgKChTdHJpbmcgMCA2KShTdHJpbmcgNiA1KShTdHJpbmcgMTEgMykoV2hpdGVfc3BhY2UgMTQgMSkoU3RyaW5nIDE1IDQpKFdoaXRlX3NwYWNlIDE5IDEpKFN0cmluZyAyMCA0KShFb2YgMjQgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJjb2xvcnNcIiA9XG4gICAgICB0ZXN0IHt8Y29sb3I6ICNmMDB8fTtcbiAgICAgIHRlc3Qge3xjb2xvcjogcmdiKDI1NSwwLDApfH07XG4gICAgICB0ZXN0IHt8Y29sb3I6IHJnYigyNTUsMCwwKXx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKElkZW50IDAgNSkoQ29sb24gNSAxKShXaGl0ZV9zcGFjZSA2IDEpKEhhc2ggNyA0KShFb2YgMTEgMCkpXG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShGdW5jdGlvbiA3IDQpKE51bWJlciAxMSAzKShDb21tYSAxNCAxKShOdW1iZXIgMTUgMSkoQ29tbWEgMTYgMSkoTnVtYmVyIDE3IDEpKFJwYXJlbiAxOCAxKShFb2YgMTkgMCkpXG4gICAgKChJZGVudCAwIDUpKENvbG9uIDUgMSkoV2hpdGVfc3BhY2UgNiAxKShGdW5jdGlvbiA3IDQpKE51bWJlciAxMSAzKShDb21tYSAxNCAxKShOdW1iZXIgMTUgMSkoQ29tbWEgMTYgMSkoTnVtYmVyIDE3IDEpKFJwYXJlbiAxOCAxKShFb2YgMTkgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJpbXBvcnRcIiA9XG4gICAgICB0ZXN0IHt8QGltcG9ydCBcImZvby5iYXJcIjt8fTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8ICgoQXRrZXl3b3JkIDAgNykoV2hpdGVfc3BhY2UgNyAxKShTdHJpbmcgOCA5KShTZW1pX2NvbG9uIDE3IDEpKEVvZiAxOCAwKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInJlZCBleGFtcGxlXCIgPVxuICAgICAgdGVzdCBcInJlZC0tPlwiO1xuICAgICAgWyVleHBlY3Qge3wgKChJZGVudCAwIDUpKERlbGltIDUgMSkoRW9mIDYgMCkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJ1cmxcIiA9XG4gICAgICB0ZXN0IHt8dXJsKCBcImh0dHA6Ly93d3d3Lmdvb2dsZS5jb21cIil8fTtcbiAgICAgIHRlc3Qge3x1cmwoJ2h0dHA6Ly93d3d3Lmdvb2dsZS5jb20nKXx9O1xuICAgICAgdGVzdCB7fHVybCgnaHR0cDovL3d3d3cuZ29vZ2xlLmNvbScgKXx9O1xuICAgICAgdGVzdCB7fHVybCggIGh0dHA6Ly93d3d3Lmdvb2dsZS5jb20gKXx9O1xuICAgICAgdGVzdCB7fHVybCggIGh0dHA6Ly93d3d3Lmdvb2dsZS5cImNvbSApfH07XG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICgoRnVuY3Rpb24gMCA0KShXaGl0ZV9zcGFjZSA0IDEpKFN0cmluZyA1IDI0KShScGFyZW4gMjkgMSkoRW9mIDMwIDApKVxuICAgICgoRnVuY3Rpb24gMCA0KShTdHJpbmcgNCAyNCkoUnBhcmVuIDI4IDEpKEVvZiAyOSAwKSlcbiAgICAoKEZ1bmN0aW9uIDAgNCkoU3RyaW5nIDQgMjQpKFdoaXRlX3NwYWNlIDI4IDEpKFJwYXJlbiAyOSAxKShFb2YgMzAgMCkpXG4gICAgKChVcmkgMCAzMCkoRW9mIDMwIDApKVxuICAgICgoRXJyb3IgMCAyNSkpIHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJlc2NhcGVcIiA9XG4gICAgICB0ZXN0IHt8XCJ0ZXN0XFwxOWFiZjJcXDJcInx9O1xuICAgICAgdGVzdCB7fFwiXFwwMTBcXHhGRmFcXG8xMjNcXG5cXFxcXFx1ezEyMzQ1fWFh8J+QqvCfkKrwn5Cq8J+QqvCfkKpcInx9O1xuICAgICAgdGVzdCB7fFwi4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrZcInx9O1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICAoKFN0cmluZyAwIDE1KShFb2YgMTUgMCkpXG4gICAgKChTdHJpbmcgMCA1MSkoRW9mIDUxIDApKVxuICAgICgoU3RyaW5nIDAgNDkpKEVvZiA0OSAwKSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIigqIFJlY3Vyc2l2ZSBkZXNjZW50IHBhcnNlcnMuICBBIHBhcnNlciByZXR1cm5zIGZhbHNlIGlmIGJhc2VkIG9uIGFcbiAgIHNpbmdsZSB0b2tlbiBsb29rYWhlYWQgaXQgZGVjaWRlcyB0aGF0IHRoZSBnaXZlbiB0ZXh0IGNhbiBub3QgYmVcbiAgIHBhcnNlZC4gIEFueSBvdGhlciBwYXJzZSBlcnJvcnMgYXJlIGhhbmRsZWQgYnkgcmFpc2luZyBleGNlcHRpb25zLlxuXG4gICBTb21lIHBhcnNlcnMgcmV0dXJuIHVuaXQgYmVjYXVzZSB3ZSBvbmx5IGNhbGwgdGhlbSB3aGVuIGEgZmFpbHVyZVxuICAgdG8gcGFyc2UgaW1wbGllcyBhIHBhcnNlIGVycm9yIChhbmQgbm90IHRoYXQgc29tZSBwYXJzZXIgaGlnaGVyIHVwXG4gICBpbiB0aGUgY2FsbCBjaGFpbiBzaG91bGQgdHJ5IHRvIHBhcnNlIHNvbWV0aGluZyBlbHNlKS5cblxuICAgRm9yIHNpbXBsaWNpdHkgdGhlIHBhcnNlcnMgdGhlbXNlbHZlcyBqdXN0IHZhbGlkYXRlIGFuZCBkb24ndFxuICAgcHJvZHVjZSBhbnkgdmFsdWVzLiAgVGhhdCBsZWFkcyB0byBhIGZldyB1bmVsZWdhbnQgY29uc3RydWN0c1xuICAgKHByaW1hcmlseSBpbiBkZWNsYXJhdGlvbiksIGJ1dCBtZWFucyB3ZSBvdGhlcndpc2UgaGF2ZSByYXRoZXJcbiAgIHNpbXBsZSBjb2RlIHRoYXQgYWxzbyBhbGxvY2F0ZXMgdmVyeSBsaXR0bGUuXG4qKVxuXG5vcGVuIENvcmVcbm9wZW4hIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcblxubGV0IHJlYyBuZXh0IGN0ID1cbiAgQ3NzX3Rva2VuaXplci5uZXh0IGN0O1xuICBpZiBDc3NfdG9rZW5pemVyLihUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgQ29tbWVudCkgdGhlbiBuZXh0IGN0IGVsc2UgKClcbjs7XG5cbmxldCBza2lwX3doaXRlX3NwYWNlIGN0ID1cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIFdoaXRlX3NwYWNlKSBkb1xuICAgIG5leHQgY3RcbiAgZG9uZVxuOztcblxubGV0IGFjY2VwdCBjdCBleHBlY3RlZCA9XG4gIGxldCBnb3QgPSBDc3NfdG9rZW5pemVyLmN1cnJlbnQgY3QgaW5cbiAgaWYgQ3NzX3Rva2VuaXplci5Ub2tlbi5lcXVhbCBnb3QgZXhwZWN0ZWRcbiAgdGhlbiAoXG4gICAgbmV4dCBjdDtcbiAgICB0cnVlKVxuICBlbHNlIGZhbHNlXG47O1xuXG5sZXQgZXhwZWN0IGN0IGV4cGVjdGVkID1cbiAgbGV0IGdvdCA9IENzc190b2tlbml6ZXIuY3VycmVudCBjdCBpblxuICBpZiBDc3NfdG9rZW5pemVyLlRva2VuLmVxdWFsIGdvdCBleHBlY3RlZFxuICB0aGVuIG5leHQgY3RcbiAgZWxzZVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlVuZXhwZWN0ZWQgdG9rZW5cIlxuICAgICAgICAgIChleHBlY3RlZCA6IENzc190b2tlbml6ZXIuVG9rZW4udClcbiAgICAgICAgICAoZ290IDogQ3NzX3Rva2VuaXplci5Ub2tlbi50KV1cbjs7XG5cbmxldCByZWMgbWFueSAoY3QgOiBDc3NfdG9rZW5pemVyLnQpIGYgPSBpZiBmIGN0IHRoZW4gbWFueSBjdCBmIGVsc2UgKClcblxubGV0IG1hbnkxIChjdCA6IENzc190b2tlbml6ZXIudCkgZiA9XG4gIGlmIGYgY3RcbiAgdGhlbiAoXG4gICAgbWFueSBjdCBmO1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2Vcbjs7XG5cbmxldCByZWMgYW55IGN0IDogYm9vbCA9XG4gIGxldCByZXMgPVxuICAgIG1hdGNoIENzc190b2tlbml6ZXIuY3VycmVudCBjdCB3aXRoXG4gICAgfCBJZGVudCB8IE51bWJlciB8IFBlcmNlbnRhZ2UgfCBEaW1lbnNpb24gfCBTdHJpbmcgfCBVcmkgfCBEZWxpbSB8IEhhc2ggfCBDb21tYSAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHRydWVcbiAgICB8IEZ1bmN0aW9uIC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIG1hbnkgY3QgYW55O1xuICAgICAgZXhwZWN0IGN0IFJwYXJlbjtcbiAgICAgIHRydWVcbiAgICB8IExwYXJlbiAtPlxuICAgICAgbmV4dCBjdDtcbiAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICBleHBlY3RfYW55IGN0O1xuICAgICAgZXhwZWN0IGN0IFJwYXJlbjtcbiAgICAgIHRydWVcbiAgICB8IExicmFja2V0IC0+XG4gICAgICBuZXh0IGN0O1xuICAgICAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgICAgIGV4cGVjdF9hbnkgY3Q7XG4gICAgICBleHBlY3QgY3QgUmJyYWNrZXQ7XG4gICAgICB0cnVlXG4gICAgfCBSY3VybHkgfCBScGFyZW4gfCBSYnJhY2tldCAtPiBmYWxzZVxuICAgIHwgTGN1cmx5IC0+IGZhbHNlXG4gICAgfCBBdGtleXdvcmQgfCBDb2xvbiB8IFNlbWlfY29sb24gLT4gZmFsc2VcbiAgICB8IENvbW1lbnQgfCBXaGl0ZV9zcGFjZSB8IEVvZiB8IEVycm9yIC0+IGZhbHNlXG4gIGluXG4gIGlmIHJlcyB0aGVuIHNraXBfd2hpdGVfc3BhY2UgY3QgZWxzZSAoKTtcbiAgcmVzXG5cbmFuZCBleHBlY3RfYW55IGN0ID0gaWYgYW55IGN0IHRoZW4gKCkgZWxzZSByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDxhbnk+XCJdXG5cbmFuZCB2YWx1ZTAgY3QgPVxuICBhbnkgY3RcbiAgfHwgYmxvY2sgY3RcbiAgfHxcbiAgaWYgYWNjZXB0IGN0IEF0a2V5d29yZFxuICB0aGVuIChcbiAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgIHRydWUpXG4gIGVsc2UgZmFsc2VcblxuYW5kIHZhbHVlIGN0ID0gbWFueTEgY3QgdmFsdWUwXG5cbmFuZCBibG9jayBjdCA6IGJvb2wgPVxuICBpZiBhY2NlcHQgY3QgTGN1cmx5XG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgbWFueSBjdCAoZnVuIGN0IC0+XG4gICAgICB2YWx1ZTAgY3RcbiAgICAgIHx8XG4gICAgICBpZiBhY2NlcHQgY3QgU2VtaV9jb2xvblxuICAgICAgdGhlbiAoXG4gICAgICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgICAgIHRydWUpXG4gICAgICBlbHNlIGZhbHNlKTtcbiAgICBleHBlY3QgY3QgUmN1cmx5O1xuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgdHJ1ZSlcbiAgZWxzZSBmYWxzZVxuXG5hbmQgZXhwZWN0X3ZhbHVlIGN0ID0gaWYgdmFsdWUgY3QgdGhlbiAoKSBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiRXhwZWN0ZWQgPHZhbHVlPlwiXVxuXG5sZXQgZGVjbGFyYXRpb24gY3QgPVxuICBsZXQgaWRlbnRfc3RhcnQsIGlkZW50X2xlbiA9IENzc190b2tlbml6ZXIuc2xpY2UgY3QgaW5cbiAgaWYgYWNjZXB0IGN0IElkZW50XG4gIHRoZW4gKFxuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgZXhwZWN0IGN0IENvbG9uO1xuICAgIHNraXBfd2hpdGVfc3BhY2UgY3Q7XG4gICAgbGV0IHZhbHVlX3N0YXJ0ID0gQ3NzX3Rva2VuaXplci5zbGljZSBjdCB8PiBmc3QgaW5cbiAgICBleHBlY3RfdmFsdWUgY3Q7XG4gICAgbGV0IG5leHRfdG9rZW5fc3RhcnQgPSBDc3NfdG9rZW5pemVyLnNsaWNlIGN0IHw+IGZzdCBpblxuICAgIGxldCBzb3VyY2UgPSBDc3NfdG9rZW5pemVyLnNvdXJjZSBjdCBpblxuICAgIFNvbWVcbiAgICAgICggU3RyaW5nLnN1YiBzb3VyY2UgfnBvczppZGVudF9zdGFydCB+bGVuOmlkZW50X2xlblxuICAgICAgLCBTdHJpbmcucnN0cmlwXG4gICAgICAgICAgKFN0cmluZy5zdWIgc291cmNlIH5wb3M6dmFsdWVfc3RhcnQgfmxlbjoobmV4dF90b2tlbl9zdGFydCAtIHZhbHVlX3N0YXJ0KSkgKSlcbiAgZWxzZSBOb25lXG47O1xuXG5sZXQgZXhwZWN0X2RlY2xhcmF0aW9uIGN0ID1cbiAgbWF0Y2ggZGVjbGFyYXRpb24gY3Qgd2l0aFxuICB8IFNvbWUgKGZpZWxkLCB2YWx1ZSkgLT4gZmllbGQsIHZhbHVlXG4gIHwgTm9uZSAtPiByYWlzZV9zIFslbWVzc2FnZSBcIkV4cGVjdGVkIDxkZWNsYXJhdGlvbj5cIl1cbjs7XG5cbigqIEFzIHBlcjogaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1zdHlsZS1hdHRyL1xuICAgZGVjbGFyYXRpb24tbGlzdFxuICAgOiBTKiBkZWNsYXJhdGlvbj8gWyAnOycgUyogZGVjbGFyYXRpb24/IF0qXG4gICA7XG4qKVxubGV0IGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IGN0ID1cbiAgbGV0IHJlcyA9IHJlZiBbXSBpblxuICBsZXQgYWRkIGt2ID1cbiAgICBtYXRjaCBrdiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChrLCB2KSAtPiByZXMgOj0gKGssIHYpIDo6ICFyZXNcbiAgaW5cbiAgc2tpcF93aGl0ZV9zcGFjZSBjdDtcbiAgYWRkIChkZWNsYXJhdGlvbiBjdCk7XG4gIG1hbnkgY3QgKGZ1biBjdCAtPlxuICAgIGlmIGFjY2VwdCBjdCBTZW1pX2NvbG9uXG4gICAgdGhlbiAoXG4gICAgICBza2lwX3doaXRlX3NwYWNlIGN0O1xuICAgICAgYWRkIChkZWNsYXJhdGlvbiBjdCk7XG4gICAgICB0cnVlKVxuICAgIGVsc2UgZmFsc2UpO1xuICBMaXN0LnJldiAhcmVzXG47O1xuXG5sZXQgcGFyc2UgcGFyc2VyX2YgcyA9XG4gIGxldCBjdCA9IENzc190b2tlbml6ZXIuY3JlYXRlIHMgaW5cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4oVG9rZW4uZXF1YWwgKGN1cnJlbnQgY3QpIENvbW1lbnQpIGRvXG4gICAgQ3NzX3Rva2VuaXplci5uZXh0IGN0XG4gIGRvbmU7XG4gIE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT5cbiAgICBsZXQgcmVzID0gcGFyc2VyX2YgY3QgaW5cbiAgICBleHBlY3QgY3QgRW9mO1xuICAgIHJlcylcbjs7XG5cbmxldCBwcmludF90b2tlbnMgcyA9XG4gIGxldCBjdCA9IENzc190b2tlbml6ZXIuY3JlYXRlIHMgaW5cbiAgd2hpbGUgQ3NzX3Rva2VuaXplci4obm90IChUb2tlbi5lcXVhbCAoY3VycmVudCBjdCkgRW9mKSkgZG9cbiAgICBwcmludF9zIChDc3NfdG9rZW5pemVyLlRva2VuLnNleHBfb2ZfdCAoQ3NzX3Rva2VuaXplci5jdXJyZW50IGN0KSk7XG4gICAgQ3NzX3Rva2VuaXplci5uZXh0IGN0XG4gIGRvbmVcbjs7XG5cbmxldCB2YWxpZGF0ZV92YWx1ZSA9IHBhcnNlIGV4cGVjdF92YWx1ZVxubGV0IHBhcnNlX2RlY2xhcmF0aW9uX2xpc3QgcyA9IHBhcnNlIGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IHNcblxubGV0IHRlc3RfcGFyc2VyIHAgc2V4cF9vZl9hcmcgcyA9XG4gIGxldCByID0gcGFyc2UgcCBzIGluXG4gIHByaW50ZiAhXCIlcyAtLT4gJXtzZXhwOmFyZyBPcl9lcnJvci50fVxcblwiIHMgclxuOztcblxubGV0JXRlc3RfbW9kdWxlIFwidGVzdHNcIiA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiXCIgPVxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgXCIwIDRweCA4cHggMCBSR0JBKHZhcigtLWpzLXRleHQtY29sb3ItcmdiKSwgMC4xMiksIDAgMnB4IDRweCAwIFxcXG4gICAgICAgICBSR0JBKHZhcigtLWpzLXRleHQtY29sb3ItcmdiKSwgMC4wOClcIlxuICAgICAgaW5cbiAgICAgIHByaW50X3Rva2VucyB2YWx1ZTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIERpbWVuc2lvblxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgV2hpdGVfc3BhY2VcbiAgICBGdW5jdGlvblxuICAgIEZ1bmN0aW9uXG4gICAgSWRlbnRcbiAgICBScGFyZW5cbiAgICBDb21tYVxuICAgIFdoaXRlX3NwYWNlXG4gICAgTnVtYmVyXG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRGltZW5zaW9uXG4gICAgV2hpdGVfc3BhY2VcbiAgICBEaW1lbnNpb25cbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFdoaXRlX3NwYWNlXG4gICAgRnVuY3Rpb25cbiAgICBGdW5jdGlvblxuICAgIElkZW50XG4gICAgUnBhcmVuXG4gICAgQ29tbWFcbiAgICBXaGl0ZV9zcGFjZVxuICAgIE51bWJlclxuICAgIFJwYXJlbiB8fV07XG4gICAgICBwcmludF9zIFslbWVzc2FnZSAodmFsaWRhdGVfdmFsdWUgdmFsdWUgOiB1bml0IE9yX2Vycm9yLnQpXTtcbiAgICAgIFslZXhwZWN0IHt8XG4gICAgKFwidmFsaWRhdGVfdmFsdWUgdmFsdWVcIiAoT2sgKCkpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwidmFsdWVzXCIgPVxuICAgICAgbGV0IHRlc3QgPSB0ZXN0X3BhcnNlciBleHBlY3RfdmFsdWUgVW5pdC5zZXhwX29mX3QgaW5cbiAgICAgIHRlc3QgXCJ4XCI7XG4gICAgICB0ZXN0IFwiM1wiO1xuICAgICAgdGVzdCBcIjNpblwiO1xuICAgICAgdGVzdCBcIjMlXCI7XG4gICAgICB0ZXN0IFwiI2ZmZlwiO1xuICAgICAgdGVzdCBcIjEgMCBhdXRvXCI7XG4gICAgICB0ZXN0IFwiJ0hlbGxvIFdvcmxkJ1wiO1xuICAgICAgdGVzdCBcInJnYigwLDAsMClcIjtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8XG4gICAgICB4IC0tPiAoT2sgKCkpXG4gICAgICAzIC0tPiAoT2sgKCkpXG4gICAgICAzaW4gLS0+IChPayAoKSlcbiAgICAgIDMlIC0tPiAoT2sgKCkpXG4gICAgICAjZmZmIC0tPiAoT2sgKCkpXG4gICAgICAxIDAgYXV0byAtLT4gKE9rICgpKVxuICAgICAgJ0hlbGxvIFdvcmxkJyAtLT4gKE9rICgpKVxuICAgICAgcmdiKDAsMCwwKSAtLT4gKE9rICgpKSB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZGVjbGFyYXRpb25cIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbiBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ10gaW5cbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcImNvbnRlbnQ6ICdIZWxsbyBXb3JsZCdcIjtcbiAgICAgIHRlc3QgXCJjb250ZW50OiBmb287XCI7XG4gICAgICAoKiBTZW1pJ3MgYXJlIGhhbmRsZWQgaW4gZGVjbGFyYXRpb24gbGlzdCAqKVxuICAgICAgdGVzdCBcImNvbnRlbnQ6IGJhciBcIjtcbiAgICAgICgqIGJ1dCB3aGl0ZXNwYWNlIGlzIGhhbmRsZWQgaW4gZGVjbGFyYXRpb24gKGFueSByZWFsbHkpICopXG4gICAgICBbJWV4cGVjdFxuICAgICAgICB7fFxuICAgICAgZmxleDogMSAwIGF1dG8gLS0+IChPayAoZmxleCBcIjEgMCBhdXRvXCIpKVxuICAgICAgY29udGVudDogJ0hlbGxvIFdvcmxkJyAtLT4gKE9rIChjb250ZW50IFwiJ0hlbGxvIFdvcmxkJ1wiKSlcbiAgICAgIGNvbnRlbnQ6IGZvbzsgLS0+IChFcnJvciAoXCJVbmV4cGVjdGVkIHRva2VuXCIgKGV4cGVjdGVkIEVvZikgKGdvdCBTZW1pX2NvbG9uKSkpXG4gICAgICBjb250ZW50OiBiYXIgIC0tPiAoT2sgKGNvbnRlbnQgYmFyKSkgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcInVuaWNvZGVcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbiBbJXNleHBfb2Y6IHN0cmluZyAqIHN0cmluZ10gaW5cbiAgICAgIHRlc3QgXCJjb250ZW50OiAn4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrYnXCI7XG4gICAgICBwcmludF9lbmRsaW5lIChTZXhwLnRvX3N0cmluZyAoU2V4cC5BdG9tIFwi4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrZcIikpO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBjb250ZW50OiAn4oaQIOKGkSDihpIg4oaTIOKGlCDihpUg4oeqIOKGuSDirIgg4oaYIOKfviDihrYnIC0tPiAoT2tcbiAgICAgKGNvbnRlbnRcbiAgICAgIFwiJ1xcMjI2XFwxMzRcXDE0NCBcXDIyNlxcMTM0XFwxNDUgXFwyMjZcXDEzNFxcMTQ2IFxcMjI2XFwxMzRcXDE0NyBcXDIyNlxcMTM0XFwxNDggXFwyMjZcXDEzNFxcMTQ5IFxcMjI2XFwxMzVcXDE3MCBcXDIyNlxcMTM0XFwxODUgXFwyMjZcXDE3MlxcMTM2IFxcMjI2XFwxMzRcXDE1MiBcXDIyNlxcMTU5XFwxOTAgXFwyMjZcXDEzNFxcMTgyJ1wiKSlcbiAgICBcIlxcMjI2XFwxMzRcXDE0NCBcXDIyNlxcMTM0XFwxNDUgXFwyMjZcXDEzNFxcMTQ2IFxcMjI2XFwxMzRcXDE0NyBcXDIyNlxcMTM0XFwxNDggXFwyMjZcXDEzNFxcMTQ5IFxcMjI2XFwxMzVcXDE3MCBcXDIyNlxcMTM0XFwxODUgXFwyMjZcXDE3MlxcMTM2IFxcMjI2XFwxMzRcXDE1MiBcXDIyNlxcMTU5XFwxOTAgXFwyMjZcXDEzNFxcMTgyXCIgfH1dXG4gICAgOztcblxuICAgIGxldCVleHBlY3RfdGVzdCBcImRlY2xhcmF0aW9uIGxpc3RcIiA9XG4gICAgICBsZXQgdGVzdCA9IHRlc3RfcGFyc2VyIGV4cGVjdF9kZWNsYXJhdGlvbl9saXN0IFslc2V4cF9vZjogKHN0cmluZyAqIHN0cmluZykgbGlzdF0gaW5cbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0b1wiO1xuICAgICAgdGVzdCBcImZsZXg6IDEgMCBhdXRvO1wiO1xuICAgICAgdGVzdFxuICAgICAgICBcImJhY2tncm91bmQ6ICM1ZDlhYjIgdXJsKFxcXCJpbWdfdHJlZS5wbmdcXFwiKSBuby1yZXBlYXQgdG9wIGxlZnQ7bWFyZ2luLWxlZnQ6IDIwMHB4XCI7XG4gICAgICB0ZXN0IFwiOzs7OztcIjtcbiAgICAgIHRlc3QgXCJmbGV4OiAxIDAgYXV0byA7OyBvdGhlciA6IHNhIFwiO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBmbGV4OiAxIDAgYXV0byAtLT4gKE9rICgoZmxleCBcIjEgMCBhdXRvXCIpKSlcbiAgICBmbGV4OiAxIDAgYXV0bzsgLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSkpXG4gICAgYmFja2dyb3VuZDogIzVkOWFiMiB1cmwoXCJpbWdfdHJlZS5wbmdcIikgbm8tcmVwZWF0IHRvcCBsZWZ0O21hcmdpbi1sZWZ0OiAyMDBweCAtLT4gKE9rXG4gICAgICgoYmFja2dyb3VuZCBcIiM1ZDlhYjIgdXJsKFxcXCJpbWdfdHJlZS5wbmdcXFwiKSBuby1yZXBlYXQgdG9wIGxlZnRcIilcbiAgICAgIChtYXJnaW4tbGVmdCAyMDBweCkpKVxuICAgIDs7Ozs7IC0tPiAoT2sgKCkpXG4gICAgZmxleDogMSAwIGF1dG8gOzsgb3RoZXIgOiBzYSAgLS0+IChPayAoKGZsZXggXCIxIDAgYXV0b1wiKSAob3RoZXIgc2EpKSkgfH1dXG4gICAgOztcbiAgZW5kKVxuOztcbiIsIm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgb3BlbiBDb3JlLkNvcmVfc3RhYmxlXG5cbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgKCoqIChmaWVsZCAqIHZhbHVlKSBsaXN0LiAgV2hlcmUgdmFsdWUgc2hvdWxkIGJlIGVzY2FwZWQgLyBxdW90ZWRcbiAgICAgICAgYXMgbmVjZXNzYXJ5IGFzIHBlciBodHRwczovL3d3dy53My5vcmcvVFIvQ1NTMjEvc3luZGF0YS5odG1sI3J1bGUtc2V0cy4gKilcbiAgICB0eXBlIHQgPSAoc3RyaW5nICogc3RyaW5nKSBsaXN0IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmUsIGJpbl9pb11cbiAgZW5kXG5lbmRcblxub3BlbiBDb3JlXG5pbmNsdWRlIFN0YWJsZS5WMVxuXG50eXBlIGNzc19nbG9iYWxfdmFsdWVzID1cbiAgWyBgSW5oZXJpdFxuICB8IGBJbml0aWFsXG4gIF1cbltAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZV1cblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkID0gcmVmIChmdW4gZGlnaXRzIGYgLT4gc3ByaW50ZiBcIiUuKmZcIiBkaWdpdHMgZilcbmVuZFxuXG5sZXQgZjJzIGRpZ2l0cyBmID0gIVByaXZhdGUuZmxvYXRfdG9fc3RyaW5nX3dpdGhfZml4ZWQgZGlnaXRzIGZcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFJHQkEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgciA6IGludFxuICAgICAgICA7IGcgOiBpbnRcbiAgICAgICAgOyBiIDogaW50XG4gICAgICAgIDsgYSA6IFBlcmNlbnQudCBvcHRpb25cbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfnIgfmcgfmIgP2EgKCkgPSB7IHI7IGc7IGI7IGEgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIEhTTEEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9XG4gICAgICAgIHsgaCA6IGludFxuICAgICAgICA7IHMgOiBQZXJjZW50LnRcbiAgICAgICAgOyBsIDogUGVyY2VudC50XG4gICAgICAgIDsgYSA6IFBlcmNlbnQudCBvcHRpb25cbiAgICAgICAgfVxuICAgICAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBjb21wYXJlLCBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfmggfnMgfmwgP2EgKCkgPSB7IGg7IHM7IGw7IGEgfVxuICAgIGVuZFxuXG4gICAgdHlwZSB0ID1cbiAgICAgIFsgYFJHQkEgb2YgUkdCQS50XG4gICAgICB8IGBIU0xBIG9mIEhTTEEudFxuICAgICAgfCBgTmFtZSBvZiBzdHJpbmdcbiAgICAgIHwgYEhleCBvZiBzdHJpbmdcbiAgICAgIHwgYFZhciBvZiBzdHJpbmdcbiAgICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICAgIF1cbiAgICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIFNleHBhYmxlLlRvX3N0cmluZ2FibGUgKFQpXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgOiBbPCB0IF0gLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFJHQkEgeyBSR0JBLnI7IGc7IGI7IGEgfSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPiBbJXN0cmluZyBcInJnYigle3IjSW50fSwle2cjSW50fSwle2IjSW50fSlcIl1cbiAgICAgICB8IFNvbWUgcCAtPlxuICAgICAgICAgWyVzdHJpbmcgXCJyZ2JhKCV7ciNJbnR9LCV7ZyNJbnR9LCV7YiNJbnR9LCV7ZjJzIDIgKFBlcmNlbnQudG9fbXVsdCBwKX0pXCJdKVxuICAgIHwgYEhTTEEgeyBIU0xBLmg7IHM7IGw7IGEgfSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgWyVzdHJpbmdcbiAgICAgICAgICAgXCJoc2woJXtoI0ludH0sJXtmMnMgMCAoUGVyY2VudC50b19wZXJjZW50YWdlIHMpfSUsJXtmMnMgMCBcXFxuICAgICAgICAgICAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBsKX0lKVwiXVxuICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICBbJXN0cmluZ1xuICAgICAgICAgICBcImhzbGEoJXtoI0ludH0sJXtmMnMgMCAoUGVyY2VudC50b19wZXJjZW50YWdlIHMpfSUsJXtmMnMgMCBcXFxuICAgICAgICAgICAgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBsKX0lLCV7ZjJzIDIgKFBlcmNlbnQudG9fbXVsdCBwKX0pXCJdKVxuICAgIHwgYE5hbWUgbmFtZSAtPiBuYW1lXG4gICAgfCBgSGV4IGhleCAtPiBoZXhcbiAgICB8IGBWYXIgdmFyIC0+IFslc3RyaW5nIFwidmFyKCV7dmFyfSlcIl1cbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxpZ25tZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgTGVmdFxuICAgIHwgYFJpZ2h0XG4gICAgfCBgQ2VudGVyICgqIGhvcml6b250YWwgKilcbiAgICB8IGBUb3BcbiAgICB8IGBCb3R0b21cbiAgICB8IGBNaWRkbGUgKCogdmVydGljYWwgKilcbiAgICB8IGBKdXN0aWZ5ICgqIHRleHQtYWxpZ24gKGluIGFkZGl0aW9uIHRvIFtob3Jpem9udGFsXSkgKilcbiAgICB8IGBTdXBlciAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgYFN1YiAoKiB2ZXJ0aWNhbCAqKVxuICAgIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pbywgY29tcGFyZV1cblxuICBsZXQgdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gICAgfCBgSnVzdGlmeSAtPiBcImp1c3RpZnlcIlxuICAgIHwgYFRvcCAtPiBcInRvcFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgTGVmdCAtPiBcImxlZnRcIlxuICAgIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgQm90dG9tIC0+IFwiYm90dG9tXCJcbiAgICB8IGBTdXBlciAtPiBcInN1cGVyXCJcbiAgICB8IGBTdWIgLT4gXCJzdWJcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgOztcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgWyBgUmF3IG9mIHN0cmluZ1xuICAgIHwgYENoIG9mIGZsb2F0XG4gICAgfCBgUmVtIG9mIGZsb2F0XG4gICAgfCBgRW0gb2YgaW50XG4gICAgfCBgRW1fZmxvYXQgb2YgZmxvYXRcbiAgICB8IGBQZXJjZW50IG9mIFBlcmNlbnQudFxuICAgIHwgYFB0IG9mIGZsb2F0XG4gICAgfCBgUHggb2YgaW50XG4gICAgfCBgUHhfZmxvYXQgb2YgZmxvYXRcbiAgICB8IGBWaCBvZiBQZXJjZW50LnRcbiAgICB8IGBWdyBvZiBQZXJjZW50LnRcbiAgICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gICAgXVxuICBbQEBkZXJpdmluZyBzZXhwLCBiaW5faW8sIGNvbXBhcmVdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYFJhdyBzIC0+IHNcbiAgICB8IGBDaCBjIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBjfWNoXCJdXG4gICAgfCBgUmVtIGYgLT4gWyVzdHJpbmcgXCIle2YycyAyIGZ9cmVtXCJdXG4gICAgfCBgRW0gaSAtPiBbJXN0cmluZyBcIiV7aSNJbnR9ZW1cIl1cbiAgICB8IGBFbV9mbG9hdCBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfWVtXCJdXG4gICAgfCBgUGVyY2VudCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiAoUGVyY2VudC50b19wZXJjZW50YWdlIHApfSVcIl1cbiAgICB8IGBQdCBwIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBwfXB0XCJdXG4gICAgfCBgUHggaSAtPiBbJXN0cmluZyBcIiV7aSNJbnR9cHhcIl1cbiAgICB8IGBQeF9mbG9hdCBmIC0+IFslc3RyaW5nIFwiJXtmMnMgMiBmfXB4XCJdXG4gICAgfCBgVmggcCAtPiBbJXN0cmluZyBcIiV7ZjJzIDIgKFBlcmNlbnQudG9fcGVyY2VudGFnZSBwKX12aFwiXVxuICAgIHwgYFZ3IHAgLT4gWyVzdHJpbmcgXCIle2YycyAyIChQZXJjZW50LnRvX3BlcmNlbnRhZ2UgcCl9dndcIl1cbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICA7O1xuXG4gIGxldCBwZXJjZW50MTAwID0gYFBlcmNlbnQgKFBlcmNlbnQub2ZfcGVyY2VudGFnZSAxMDAuKVxuZW5kXG5cbm1vZHVsZSBBdXRvX29yX2xlbmd0aCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYEF1dG9cbiAgICB8IExlbmd0aC50XG4gICAgXVxuICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IHRvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8ICNMZW5ndGgudCBhcyBsIC0+IExlbmd0aC50b19zdHJpbmdfY3NzIGxcbiAgOztcbmVuZFxuXG5sZXQgdmFsdWVfbWFwIG8gfmYgPSBPcHRpb24udmFsdWVfbWFwIG8gfmRlZmF1bHQ6XCJcIiB+ZlxubGV0IGNvbWJpbmUgdDEgdDIgPSB0MSBAIHQyXG5sZXQgKCBAPiApID0gY29tYmluZVxubGV0IGNvbmNhdCBsID0gTGlzdC5jb25jYXQgbFxubGV0IHRvX3N0cmluZ19saXN0ID0gRm4uaWRcblxubGV0IHRvX3N0cmluZ19jc3MgdCA9XG4gIExpc3QubWFwIHQgfmY6KGZ1biAoZmllbGQsIHZhbHVlKSAtPiBbJXN0cmluZyBcIiV7ZmllbGR9OiAle3ZhbHVlfVwiXSlcbiAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiO1wiXG47O1xuXG5sZXQgb2Zfc3RyaW5nX2Nzc19leG4gcyA9IENzc19wYXJzZXIucGFyc2VfZGVjbGFyYXRpb25fbGlzdCBzIHw+IE9yX2Vycm9yLm9rX2V4blxuXG4oKiogY3JlYXRlX3JhdyBjcmVhdGVzIGEgc2luZ2xlIGZpZWxkLCB2YWx1ZSBwYWlyLiAgSXQgYXNzdW1lcyB0aGF0IHRoZSB2YWx1ZSBpcyBhIHZhbGlkXG4gICAgY3NzIHZhbHVlLiAgQXMgc3VjaCBpdCBpcyB1bnNhZmUgdG8gdXNlIHdpdGggYXJiaXRyYXJ5IHZhbHVlIHN0cmluZ3MuICBCdXQgZm9yIHRoZVxuICAgIHZhc3QgbWFqb3JpdHkgb2YgY29tYmluYXRvcnMgaW4gdGhpcyBtb2R1bGUgaXQgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIHVzZSwgYXMgd2Uga25vd1xuICAgIGJ5IGNvbnN0cnVjdGlvbiB0aGF0IHRoZSB2YWx1ZXMgZG8gbm90IG5lZWQgcXVvdGluZyAvIGVzY2FwaW5nLiAqKVxubGV0IGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZSA9IFsgZmllbGQsIHZhbHVlIF1cblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBsZXQgc2hvdWxkX3ZhbGlkYXRlID0gcmVmIGZhbHNlXG5lbmRcblxubGV0IGNyZWF0ZSB+ZmllbGQgfnZhbHVlID1cbiAgaWYgIUV4cGVydC5zaG91bGRfdmFsaWRhdGUgdGhlbiBDc3NfcGFyc2VyLnZhbGlkYXRlX3ZhbHVlIHZhbHVlIHw+IE9yX2Vycm9yLm9rX2V4bjtcbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlXG47O1xuXG5sZXQgZW1wdHkgPSBbXVxubGV0IGlzX2VtcHR5ID0gTGlzdC5pc19lbXB0eVxubGV0IGNyZWF0ZV9wbGFjZW1lbnQgbmFtZSBsZW5ndGggPSBjcmVhdGUgfmZpZWxkOm5hbWUgfnZhbHVlOihMZW5ndGgudG9fc3RyaW5nX2NzcyBsZW5ndGgpXG5sZXQgbGVmdCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJsZWZ0XCJcbmxldCB0b3AgPSBjcmVhdGVfcGxhY2VtZW50IFwidG9wXCJcbmxldCBib3R0b20gPSBjcmVhdGVfcGxhY2VtZW50IFwiYm90dG9tXCJcbmxldCByaWdodCA9IGNyZWF0ZV9wbGFjZW1lbnQgXCJyaWdodFwiXG5cbmxldCBwb3NpdGlvbiA/dG9wOnRwID9ib3R0b206YnQgP2xlZnQ6bHQgP3JpZ2h0OnJ0IHBvcyA9XG4gIGxldCBwb3MgPVxuICAgIGxldCB2YWx1ZSA9XG4gICAgICBtYXRjaCBwb3Mgd2l0aFxuICAgICAgfCBgU3RhdGljIC0+IFwic3RhdGljXCJcbiAgICAgIHwgYEFic29sdXRlIC0+IFwiYWJzb2x1dGVcIlxuICAgICAgfCBgU3RpY2t5IC0+IFwic3RpY2t5XCJcbiAgICAgIHwgYFJlbGF0aXZlIC0+IFwicmVsYXRpdmVcIlxuICAgICAgfCBgRml4ZWQgLT4gXCJmaXhlZFwiXG4gICAgaW5cbiAgICBjcmVhdGUgfmZpZWxkOlwicG9zaXRpb25cIiB+dmFsdWVcbiAgaW5cbiAgbGV0IGNvbnZlcnQgb3B0X2wgZiA9IE9wdGlvbi52YWx1ZV9tYXAgb3B0X2wgfmRlZmF1bHQ6ZW1wdHkgfmYgaW5cbiAgY29uY2F0IFsgcG9zOyBjb252ZXJ0IHRwIHRvcDsgY29udmVydCBsdCBsZWZ0OyBjb252ZXJ0IHJ0IHJpZ2h0OyBjb252ZXJ0IGJ0IGJvdHRvbSBdXG47O1xuXG5sZXQgYm94X3NpemluZyB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBDb250ZW50X2JveCAtPiBcImNvbnRlbnQtYm94XCJcbiAgICB8IGBCb3JkZXJfYm94IC0+IFwiYm9yZGVyLWJveFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3gtc2l6aW5nXCIgfnZhbHVlXG47O1xuXG5sZXQgZGlzcGxheSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBJbmxpbmUgLT4gXCJpbmxpbmVcIlxuICAgIHwgYEJsb2NrIC0+IFwiYmxvY2tcIlxuICAgIHwgYElubGluZV9ibG9jayAtPiBcImlubGluZS1ibG9ja1wiXG4gICAgfCBgTGlzdF9pdGVtIC0+IFwibGlzdC1pdGVtXCJcbiAgICB8IGBUYWJsZSAtPiBcInRhYmxlXCJcbiAgICB8IGBJbmxpbmVfdGFibGUgLT4gXCJpbmxpbmUtdGFibGVcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBGbGV4IC0+IFwiZmxleFwiXG4gICAgfCBgSW5saW5lX2ZsZXggLT4gXCJpbmxpbmUtZmxleFwiXG4gICAgfCBgSW5saW5lX2dyaWQgLT4gXCJpbmxpbmUtZ3JpZFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJkaXNwbGF5XCIgfnZhbHVlXG47O1xuXG5sZXQgdmlzaWJpbGl0eSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBWaXNpYmxlIC0+IFwidmlzaWJsZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBDb2xsYXBzZSAtPiBcImNvbGxhcHNlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInZpc2liaWxpdHlcIiB+dmFsdWVcbjs7XG5cbnR5cGUgb3ZlcmZsb3cgPVxuICBbIGBWaXNpYmxlXG4gIHwgYEhpZGRlblxuICB8IGBTY3JvbGxcbiAgfCBgQXV0b1xuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxubGV0IG1ha2Vfb3ZlcmZsb3cgZmllbGQgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgVmlzaWJsZSAtPiBcInZpc2libGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgU2Nyb2xsIC0+IFwic2Nyb2xsXCJcbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlXG47O1xuXG5sZXQgb3ZlcmZsb3cgPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3dcIlxubGV0IG92ZXJmbG93X3ggPSBtYWtlX292ZXJmbG93IFwib3ZlcmZsb3cteFwiXG5sZXQgb3ZlcmZsb3dfeSA9IG1ha2Vfb3ZlcmZsb3cgXCJvdmVyZmxvdy15XCJcbmxldCB6X2luZGV4IGkgPSBjcmVhdGVfcmF3IH5maWVsZDpcInotaW5kZXhcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSlcbmxldCBvcGFjaXR5IGkgPSBjcmVhdGVfcmF3IH5maWVsZDpcIm9wYWNpdHlcIiB+dmFsdWU6KGYycyA2IGkpXG5cbmxldCBjcmVhdGVfbGVuZ3RoX2ZpZWxkIGZpZWxkIGwgPVxuICBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KEF1dG9fb3JfbGVuZ3RoLnRvX3N0cmluZ19jc3MgbClcbjs7XG5cbmxldCB3aGl0ZV9zcGFjZSB2ID1cbiAgbGV0IHZhbHVlID1cbiAgICBtYXRjaCB2IHdpdGhcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYE5vd3JhcCAtPiBcIm5vd3JhcFwiXG4gICAgfCBgUHJlIC0+IFwicHJlXCJcbiAgICB8IGBQcmVfbGluZSAtPiBcInByZS1saW5lXCJcbiAgICB8IGBQcmVfd3JhcCAtPiBcInByZS13cmFwXCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICBpblxuICBjcmVhdGUgfmZpZWxkOlwid2hpdGUtc3BhY2VcIiB+dmFsdWVcbjs7XG5cbnR5cGUgZm9udF9zdHlsZSA9XG4gIFsgYE5vcm1hbFxuICB8IGBJdGFsaWNcbiAgfCBgT2JsaXF1ZVxuICB8IGNzc19nbG9iYWxfdmFsdWVzXG4gIF1cblxudHlwZSBmb250X3dlaWdodCA9XG4gIFsgYE5vcm1hbFxuICB8IGBCb2xkXG4gIHwgYEJvbGRlclxuICB8IGBMaWdodGVyXG4gIHwgYE51bWJlciBvZiBpbnRcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbnR5cGUgZm9udF92YXJpYW50ID1cbiAgWyBgTm9ybWFsXG4gIHwgYFNtYWxsX2NhcHNcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5cbmxldCBmb250X3NpemUgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiZm9udC1zaXplXCJcbmxldCBmb250X2ZhbWlseSBsID0gY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LWZhbWlseVwiIH52YWx1ZTooU3RyaW5nLmNvbmNhdCBsIH5zZXA6XCIsXCIpXG5cbmxldCBmb250X3N0eWxlIHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgSXRhbGljIC0+IFwiaXRhbGljXCJcbiAgICB8IGBPYmxpcXVlIC0+IFwib2JsaXF1ZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXN0eWxlXCIgfnZhbHVlXG47O1xuXG5sZXQgZm9udF93ZWlnaHQgcyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBgTnVtYmVyIGkgLT4gSW50LnRvX3N0cmluZyBpXG4gICAgfCBgQm9sZCAtPiBcImJvbGRcIlxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgTGlnaHRlciAtPiBcImxpZ2h0ZXJcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBCb2xkZXIgLT4gXCJib2xkZXJcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmb250LXdlaWdodFwiIH52YWx1ZVxuOztcblxubGV0IGJvbGQgPSBmb250X3dlaWdodCBgQm9sZFxuXG5sZXQgZm9udF92YXJpYW50IHMgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgYE5vcm1hbCAtPiBcIm5vcm1hbFwiXG4gICAgfCBgU21hbGxfY2FwcyAtPiBcInNtYWxsLWNhcHNcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwiZm9udC12YXJpYW50XCIgfnZhbHVlXG47O1xuXG5sZXQgZm9udCB+c2l6ZSB+ZmFtaWx5ID9zdHlsZSA/d2VpZ2h0ID92YXJpYW50ICgpID1cbiAgWyBTb21lIChmb250X3NpemUgc2l6ZSlcbiAgOyBTb21lIChmb250X2ZhbWlseSBmYW1pbHkpXG4gIDsgT3B0aW9uLm1hcCBzdHlsZSB+Zjpmb250X3N0eWxlXG4gIDsgT3B0aW9uLm1hcCB3ZWlnaHQgfmY6Zm9udF93ZWlnaHRcbiAgOyBPcHRpb24ubWFwIHZhcmlhbnQgfmY6Zm9udF92YXJpYW50XG4gIF1cbiAgfD4gTGlzdC5maWx0ZXJfb3B0XG4gIHw+IGNvbmNhdFxuOztcblxubGV0IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZCB+Y29sb3IgPSBjcmVhdGVfcmF3IH5maWVsZCB+dmFsdWU6KENvbG9yLnRvX3N0cmluZ19jc3MgY29sb3IpXG5sZXQgY29sb3IgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJjb2xvclwiIH5jb2xvclxubGV0IGJhY2tncm91bmRfY29sb3IgY29sb3IgPSBjcmVhdGVfd2l0aF9jb2xvciB+ZmllbGQ6XCJiYWNrZ3JvdW5kLWNvbG9yXCIgfmNvbG9yXG5sZXQgZmlsbCBjb2xvciA9IGNyZWF0ZV93aXRoX2NvbG9yIH5maWVsZDpcImZpbGxcIiB+Y29sb3JcblxudHlwZSBzdG9wcyA9IChQZXJjZW50LnQgKiBDb2xvci50KSBsaXN0XG5cbnR5cGUgbGluZWFyX2dyYWRpZW50ID1cbiAgeyBkaXJlY3Rpb24gOiBbIGBEZWcgb2YgaW50IF1cbiAgOyBzdG9wcyA6IHN0b3BzXG4gIH1cblxudHlwZSByYWRpYWxfZ3JhZGllbnQgPSB7IHN0b3BzIDogc3RvcHMgfVxuXG50eXBlIGJhY2tncm91bmRfaW1hZ2UgPVxuICBbIGBVcmwgb2Ygc3RyaW5nXG4gIHwgYExpbmVhcl9ncmFkaWVudCBvZiBsaW5lYXJfZ3JhZGllbnRcbiAgfCBgUmFkaWFsX2dyYWRpZW50IG9mIHJhZGlhbF9ncmFkaWVudFxuICBdXG5cbmxldCBzdG9wc190b19zdHJpbmcgc3RvcHMgPVxuICBMaXN0Lm1hcCBzdG9wcyB+ZjooZnVuIChwY3QsIGNvbG9yKSAtPlxuICAgICgqIE5vdGU6IFBlcmNlbnQudG9fc3RyaW5nIHByb2R1Y2VkIGUuZy4gXCIweFwiLCBcIjF4XCIsIHdvbid0IHdvcmsgaGVyZS4gKilcbiAgICBbJXN0cmluZyBcIiV7Q29sb3IudG9fc3RyaW5nX2NzcyBjb2xvcn0gJXtmMnMgNiAoUGVyY2VudC50b19wZXJjZW50YWdlIHBjdCl9JVwiXSlcbiAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLCBcIlxuOztcblxubGV0IGJhY2tncm91bmRfaW1hZ2Ugc3BlYyA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggc3BlYyB3aXRoXG4gICAgfCBgVXJsIHVybCAtPiBbJXN0cmluZyBcInVybCgle3VybH0pXCJdXG4gICAgfCBgTGluZWFyX2dyYWRpZW50IHsgZGlyZWN0aW9uID0gYERlZyBkaXJlY3Rpb247IHN0b3BzIH0gLT5cbiAgICAgIFslc3RyaW5nIFwibGluZWFyLWdyYWRpZW50KCV7ZGlyZWN0aW9uI0ludH1kZWcsICV7c3RvcHNfdG9fc3RyaW5nIHN0b3BzfSlcIl1cbiAgICB8IGBSYWRpYWxfZ3JhZGllbnQgeyBzdG9wcyB9IC0+IFslc3RyaW5nIFwicmFkaWFsLWdyYWRpZW50KCV7c3RvcHNfdG9fc3RyaW5nIHN0b3BzfSlcIl1cbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJiYWNrZ3JvdW5kLWltYWdlXCIgfnZhbHVlXG47O1xuXG5sZXQgY3JlYXRlX2FsaWdubWVudCBmaWVsZCBhID1cbiAgY3JlYXRlX3JhdyB+ZmllbGQgfnZhbHVlOihBbGlnbm1lbnQudG9fc3RyaW5nX2NzcyAoYSA6PiBBbGlnbm1lbnQudCkpXG47O1xuXG5sZXQgdGV4dF9hbGlnbiA9IGNyZWF0ZV9hbGlnbm1lbnQgXCJ0ZXh0LWFsaWduXCJcbmxldCBob3Jpem9udGFsX2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcImhvcml6b250YWwtYWxpZ25cIlxubGV0IHZlcnRpY2FsX2FsaWduID0gY3JlYXRlX2FsaWdubWVudCBcInZlcnRpY2FsLWFsaWduXCJcblxubGV0IGZsb2F0IGYgPVxuICBsZXQgdmFsdWUgPVxuICAgIG1hdGNoIGYgd2l0aFxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBMZWZ0IC0+IFwibGVmdFwiXG4gICAgfCBgUmlnaHQgLT4gXCJyaWdodFwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbG9hdFwiIH52YWx1ZVxuOztcblxubGV0IHdpZHRoID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIndpZHRoXCJcbmxldCBtaW5fd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWluLXdpZHRoXCJcbmxldCBtYXhfd2lkdGggPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LXdpZHRoXCJcbmxldCBoZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwiaGVpZ2h0XCJcbmxldCBtaW5faGVpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1pbi1oZWlnaHRcIlxubGV0IG1heF9oZWlnaHQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWF4LWhlaWdodFwiXG5sZXQgcGFkZGluZ190b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy10b3BcIlxubGV0IHBhZGRpbmdfYm90dG9tID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctYm90dG9tXCJcbmxldCBwYWRkaW5nX2xlZnQgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwicGFkZGluZy1sZWZ0XCJcbmxldCBwYWRkaW5nX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcInBhZGRpbmctcmlnaHRcIlxuXG5sZXQgcGFkZGluZyA/dG9wID9ib3R0b20gP2xlZnQgP3JpZ2h0ICgpID1cbiAgbGV0IG0gPSBPcHRpb24ubWFwIGluXG4gIFsgbSB0b3AgfmY6cGFkZGluZ190b3BcbiAgOyBtIGJvdHRvbSB+ZjpwYWRkaW5nX2JvdHRvbVxuICA7IG0gbGVmdCB+ZjpwYWRkaW5nX2xlZnRcbiAgOyBtIHJpZ2h0IH5mOnBhZGRpbmdfcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9wYWRkaW5nIGwgPSBwYWRkaW5nIH50b3A6bCB+Ym90dG9tOmwgfmxlZnQ6bCB+cmlnaHQ6bCAoKVxubGV0IG1hcmdpbl90b3AgPSBjcmVhdGVfbGVuZ3RoX2ZpZWxkIFwibWFyZ2luLXRvcFwiXG5sZXQgbWFyZ2luX2JvdHRvbSA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tYm90dG9tXCJcbmxldCBtYXJnaW5fbGVmdCA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJtYXJnaW4tbGVmdFwiXG5sZXQgbWFyZ2luX3JpZ2h0ID0gY3JlYXRlX2xlbmd0aF9maWVsZCBcIm1hcmdpbi1yaWdodFwiXG5cbmxldCBtYXJnaW4gP3RvcCA/Ym90dG9tID9sZWZ0ID9yaWdodCAoKSA9XG4gIGxldCBtID0gT3B0aW9uLm1hcCBpblxuICBbIG0gdG9wIH5mOm1hcmdpbl90b3BcbiAgOyBtIGJvdHRvbSB+ZjptYXJnaW5fYm90dG9tXG4gIDsgbSBsZWZ0IH5mOm1hcmdpbl9sZWZ0XG4gIDsgbSByaWdodCB+ZjptYXJnaW5fcmlnaHRcbiAgXVxuICB8PiBMaXN0LmZpbHRlcl9vcHRcbiAgfD4gY29uY2F0XG47O1xuXG5sZXQgdW5pZm9ybV9tYXJnaW4gbCA9IG1hcmdpbiB+dG9wOmwgfmJvdHRvbTpsIH5sZWZ0OmwgfnJpZ2h0OmwgKClcblxudHlwZSBib3JkZXJfc3R5bGUgPVxuICBbIGBOb25lXG4gIHwgYEhpZGRlblxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBHcm9vdmVcbiAgfCBgUmlkZ2VcbiAgfCBgSW5zZXRcbiAgfCBgT3V0c2V0XG4gIHwgY3NzX2dsb2JhbF92YWx1ZXNcbiAgXVxuXG4oKiogQ29uY2F0IDIgdmFsdWVzIHdpdGggYSBzcGFjZSBpbiBiZXR3ZWVuLiAgSWYgZWl0aGVyIGlzIHRoZSBlbXB0eSBzdHJpbmdcbiAgICBkb24ndCBwdXQgaW4gdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZS4gKilcbmxldCBjb25jYXQydiB2MSB2MiA9XG4gIG1hdGNoIHYxLCB2MiB3aXRoXG4gIHwgXCJcIiwgeCAtPiB4XG4gIHwgeCwgXCJcIiAtPiB4XG4gIHwgeCwgeSAtPiB4IF4gXCIgXCIgXiB5XG47O1xuXG4oKiogQ29uY2F0IHVwIHRvIDMgdmFsdWVzIHdpdGggc3BhY2VzIGluIGJldHdlZW4uICopXG5sZXQgY29uY2F0M3YgdjEgdjIgdjMgPSBjb25jYXQydiAoY29uY2F0MnYgdjEgdjIpIHYzXG5cbmxldCBib3JkZXJfdmFsdWUgP3dpZHRoID9jb2xvciB+KHN0eWxlIDogYm9yZGVyX3N0eWxlKSAoKSA9XG4gIGxldCBzdHlsZSA9XG4gICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgIHwgYFJpZGdlIC0+IFwicmlkZ2VcIlxuICAgIHwgYE91dHNldCAtPiBcIm91dHNldFwiXG4gICAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICAgIHwgYEdyb292ZSAtPiBcImdyb292ZVwiXG4gICAgfCBgRGFzaGVkIC0+IFwiZGFzaGVkXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5zZXQgLT4gXCJpbnNldFwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgIHwgYERvdHRlZCAtPiBcImRvdHRlZFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYFNvbGlkIC0+IFwic29saWRcIlxuICBpblxuICBsZXQgd2lkdGggPSB2YWx1ZV9tYXAgd2lkdGggfmY6TGVuZ3RoLnRvX3N0cmluZ19jc3MgaW5cbiAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgY29uY2F0M3Ygd2lkdGggc3R5bGUgY29sb3Jcbjs7XG5cbmxldCBjcmVhdGVfYm9yZGVyID9zaWRlICgpID1cbiAgbGV0IGZpZWxkID1cbiAgICBtYXRjaCBzaWRlIHdpdGhcbiAgICB8IFNvbWUgYFRvcCAtPiBcImJvcmRlci10b3BcIlxuICAgIHwgU29tZSBgQm90dG9tIC0+IFwiYm9yZGVyLWJvdHRvbVwiXG4gICAgfCBTb21lIGBSaWdodCAtPiBcImJvcmRlci1yaWdodFwiXG4gICAgfCBTb21lIGBMZWZ0IC0+IFwiYm9yZGVyLWxlZnRcIlxuICAgIHwgTm9uZSAtPiBcImJvcmRlclwiXG4gIGluXG4gIGZ1biA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSAtPlxuICAgIGNyZWF0ZV9yYXcgfmZpZWxkIH52YWx1ZTooYm9yZGVyX3ZhbHVlID93aWR0aCA/Y29sb3IgfnN0eWxlICgpKVxuOztcblxubGV0IGJvcmRlcl90b3AgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBUb3AgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXJfYm90dG9tID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgQm90dG9tICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX2xlZnQgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfYm9yZGVyIH5zaWRlOmBMZWZ0ICgpID93aWR0aCA/Y29sb3IgfnN0eWxlICgpXG47O1xuXG5sZXQgYm9yZGVyX3JpZ2h0ID93aWR0aCA/Y29sb3IgfnN0eWxlICgpID1cbiAgY3JlYXRlX2JvcmRlciB+c2lkZTpgUmlnaHQgKCkgP3dpZHRoID9jb2xvciB+c3R5bGUgKClcbjs7XG5cbmxldCBib3JkZXIgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPSBjcmVhdGVfYm9yZGVyID9zaWRlOk5vbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgKClcblxubGV0IG91dGxpbmUgP3dpZHRoID9jb2xvciB+c3R5bGUgKCkgPVxuICBjcmVhdGVfcmF3IH5maWVsZDpcIm91dGxpbmVcIiB+dmFsdWU6KGJvcmRlcl92YWx1ZSA/d2lkdGggP2NvbG9yIH5zdHlsZSAoKSlcbjs7XG5cbmxldCBib3JkZXJfY29sbGFwc2UgdiA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdiB3aXRoXG4gICAgfCBgU2VwYXJhdGUgLT4gXCJzZXBhcmF0ZVwiXG4gICAgfCBgQ29sbGFwc2UgLT4gXCJjb2xsYXBzZVwiXG4gICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgaW5cbiAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJib3JkZXItY29sbGFwc2VcIiB+dmFsdWVcbjs7XG5cbmxldCBib3JkZXJfc3BhY2luZyA9IGNyZWF0ZV9sZW5ndGhfZmllbGQgXCJib3JkZXItc3BhY2luZ1wiXG5sZXQgYm9yZGVyX3JhZGl1cyBsID0gY3JlYXRlIH5maWVsZDpcImJvcmRlci1yYWRpdXNcIiB+dmFsdWU6KExlbmd0aC50b19zdHJpbmdfY3NzIGwpXG5cbnR5cGUgdGV4dF9kZWNvcmF0aW9uX2xpbmUgPVxuICBbIGBOb25lXG4gIHwgYFVuZGVybGluZVxuICB8IGBPdmVybGluZVxuICB8IGBMaW5lX3Rocm91Z2hcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG50eXBlIHRleHRfZGVjb3JhdGlvbl9zdHlsZSA9XG4gIFsgYFNvbGlkXG4gIHwgYERvdWJsZVxuICB8IGBEb3R0ZWRcbiAgfCBgRGFzaGVkXG4gIHwgYFdhdnlcbiAgfCBjc3NfZ2xvYmFsX3ZhbHVlc1xuICBdXG5bQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgdGV4dF9kZWNvcmF0aW9uID9zdHlsZSA/Y29sb3IgfmxpbmUgKCkgPVxuICBsZXQgdmFsdWUgPVxuICAgIGxldCBsaW5lID1cbiAgICAgIExpc3QubWFwIGxpbmUgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgYExpbmVfdGhyb3VnaCAtPiBcImxpbmUtdGhyb3VnaFwiXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBPdmVybGluZSAtPiBcIm92ZXJsaW5lXCJcbiAgICAgICAgfCBgVW5kZXJsaW5lIC0+IFwidW5kZXJsaW5lXCJcbiAgICAgICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIilcbiAgICAgIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiBcIlxuICAgIGluXG4gICAgbGV0IHN0eWxlID1cbiAgICAgIG1hdGNoIHN0eWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICB8IFNvbWUgYFNvbGlkIC0+IFwic29saWRcIlxuICAgICAgfCBTb21lIGBEb3VibGUgLT4gXCJkb3VibGVcIlxuICAgICAgfCBTb21lIGBEb3R0ZWQgLT4gXCJkb3R0ZWRcIlxuICAgICAgfCBTb21lIGBEYXNoZWQgLT4gXCJkYXNoZWRcIlxuICAgICAgfCBTb21lIGBXYXZ5IC0+IFwid2F2eVwiXG4gICAgICB8IFNvbWUgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcbiAgICAgIHwgU29tZSBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIGluXG4gICAgbGV0IGNvbG9yID0gdmFsdWVfbWFwIGNvbG9yIH5mOkNvbG9yLnRvX3N0cmluZ19jc3MgaW5cbiAgICBjb25jYXQzdiBsaW5lIHN0eWxlIGNvbG9yXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwidGV4dC1kZWNvcmF0aW9uXCIgfnZhbHVlXG47O1xuXG50eXBlIGl0ZW1fYWxpZ25tZW50ID1cbiAgWyBgQXV0b1xuICB8IGBGbGV4X3N0YXJ0XG4gIHwgYEZsZXhfZW5kXG4gIHwgYENlbnRlclxuICB8IGBCYXNlbGluZVxuICB8IGBTdHJldGNoXG4gIF1cblxubGV0IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgPSBmdW5jdGlvblxuICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYEJhc2VsaW5lIC0+IFwiYmFzZWxpbmVcIlxuICB8IGBTdHJldGNoIC0+IFwic3RyZXRjaFwiXG47O1xuXG50eXBlIGp1c3RpZnlfY29udGVudCA9XG4gIFsgYEZsZXhfc3RhcnRcbiAgfCBgRmxleF9lbmRcbiAgfCBgQ2VudGVyXG4gIHwgYFNwYWNlX2JldHdlZW5cbiAgfCBgU3BhY2VfYXJvdW5kXG4gIHwgYFNwYWNlX2V2ZW5seVxuICBdXG5cbmxldCBqdXN0aWZ5X2NvbnRlbnRfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEZsZXhfc3RhcnQgLT4gXCJmbGV4LXN0YXJ0XCJcbiAgfCBgRmxleF9lbmQgLT4gXCJmbGV4LWVuZFwiXG4gIHwgYENlbnRlciAtPiBcImNlbnRlclwiXG4gIHwgYFNwYWNlX2JldHdlZW4gLT4gXCJzcGFjZS1iZXR3ZWVuXCJcbiAgfCBgU3BhY2VfYXJvdW5kIC0+IFwic3BhY2UtYXJvdW5kXCJcbiAgfCBgU3BhY2VfZXZlbmx5IC0+IFwic3BhY2UtZXZlbmx5XCJcbjs7XG5cbmxldCBmbGV4X2NvbnRhaW5lclxuICAgICAgPyhpbmxpbmUgPSBmYWxzZSlcbiAgICAgID8oZGlyZWN0aW9uID0gYFJvdylcbiAgICAgID8od3JhcCA9IGBOb3dyYXApXG4gICAgICA/YWxpZ25faXRlbXNcbiAgICAgID9qdXN0aWZ5X2NvbnRlbnRcbiAgICAgICgpXG4gID1cbiAgbGV0IGRpcmVjdGlvbiA9XG4gICAgbWF0Y2ggZGlyZWN0aW9uIHdpdGhcbiAgICB8IGBSb3cgLT4gXCJyb3dcIlxuICAgIHwgYFJvd19yZXZlcnNlIC0+IFwicm93LXJldmVyc2VcIlxuICAgIHwgYENvbHVtbiAtPiBcImNvbHVtblwiXG4gICAgfCBgQ29sdW1uX3JldmVyc2UgLT4gXCJjb2x1bW4tcmV2ZXJzZVwiXG4gIGluXG4gIGxldCB3cmFwID1cbiAgICBtYXRjaCB3cmFwIHdpdGhcbiAgICB8IGBOb3dyYXAgLT4gXCJub3dyYXBcIlxuICAgIHwgYFdyYXAgLT4gXCJ3cmFwXCJcbiAgICB8IGBXcmFwX3JldmVyc2UgLT4gXCJ3cmFwLXJldmVyc2VcIlxuICBpblxuICBsZXQgYWxpZ25faXRlbXMgPVxuICAgIG1hdGNoIGFsaWduX2l0ZW1zIHdpdGhcbiAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICB8IFNvbWUgYSAtPiBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLWl0ZW1zXCIgfnZhbHVlOihpdGVtX2FsaWdubWVudF90b19zdHJpbmdfY3NzIGEpXG4gIGluXG4gIGxldCBqdXN0aWZ5X2NvbnRlbnQgPVxuICAgIG1hdGNoIGp1c3RpZnlfY29udGVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVtcHR5XG4gICAgfCBTb21lIGEgLT5cbiAgICAgIGNyZWF0ZV9yYXcgfmZpZWxkOlwianVzdGlmeS1jb250ZW50XCIgfnZhbHVlOihqdXN0aWZ5X2NvbnRlbnRfdG9fc3RyaW5nX2NzcyBhKVxuICBpblxuICBjb25jYXRcbiAgICBbIGRpc3BsYXkgKGlmIGlubGluZSB0aGVuIGBJbmxpbmVfZmxleCBlbHNlIGBGbGV4KVxuICAgIDsgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4LWRpcmVjdGlvblwiIH52YWx1ZTpkaXJlY3Rpb25cbiAgICA7IGNyZWF0ZV9yYXcgfmZpZWxkOlwiZmxleC13cmFwXCIgfnZhbHVlOndyYXBcbiAgICA7IGFsaWduX2l0ZW1zXG4gICAgOyBqdXN0aWZ5X2NvbnRlbnRcbiAgICBdXG47O1xuXG5sZXQgZmxleF9pdGVtID9vcmRlciA/KGJhc2lzID0gYEF1dG8pID8oc2hyaW5rID0gMS4pIH5ncm93ICgpID1cbiAgbGV0IG9yZGVyID1cbiAgICBPcHRpb24ubWFwIG9yZGVyIH5mOihmdW4gaSAtPiBjcmVhdGVfcmF3IH5maWVsZDpcIm9yZGVyXCIgfnZhbHVlOihJbnQudG9fc3RyaW5nIGkpKVxuICAgIHw+IE9wdGlvbi50b19saXN0XG4gICAgfD4gTGlzdC5qb2luXG4gIGluXG4gIGxldCBmbGV4ID1cbiAgICBsZXQgYmFzaXMgPSBBdXRvX29yX2xlbmd0aC50b19zdHJpbmdfY3NzIGJhc2lzIGluXG4gICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJmbGV4XCIgfnZhbHVlOlslc3RyaW5nIFwiJXtmMnMgNiBncm93fSAle2YycyA2IHNocmlua30gJXtiYXNpc31cIl1cbiAgaW5cbiAgY29uY2F0IFsgZmxleDsgb3JkZXIgXVxuOztcblxubGV0IGFsaWduX3NlbGYgYSA9XG4gIGxldCB2YWx1ZSA9IGl0ZW1fYWxpZ25tZW50X3RvX3N0cmluZ19jc3MgYSBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcImFsaWduLXNlbGZcIiB+dmFsdWVcbjs7XG5cbmxldCByZXNpemUgKHZhbHVlIDogWyBgTm9uZSB8IGBCb3RoIHwgYEhvcml6b250YWwgfCBgVmVydGljYWwgfCBjc3NfZ2xvYmFsX3ZhbHVlcyBdKSA9XG4gIGxldCB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBCb3RoIC0+IFwiYm90aFwiXG4gICAgfCBgSG9yaXpvbnRhbCAtPiBcImhvcml6b250YWxcIlxuICAgIHwgYFZlcnRpY2FsIC0+IFwidmVydGljYWxcIlxuICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gIGluXG4gIGNyZWF0ZV9yYXcgfmZpZWxkOlwicmVzaXplXCIgfnZhbHVlXG47O1xuXG5sZXQgYW5pbWF0aW9uIH5uYW1lIH5kdXJhdGlvbiA/ZGVsYXkgP2RpcmVjdGlvbiA/ZmlsbF9tb2RlID9pdGVyX2NvdW50ID90aW1pbmdfZnVuY3Rpb24gKClcbiAgPVxuICBsZXQgbSA9IE9wdGlvbi5tYXAgaW5cbiAgbGV0IHNwYW5fdG9fc3RyaW5nIHMgPSBbJXN0cmluZyBcIiV7ZjJzIDIgKFRpbWVfbnMuU3Bhbi50b19zZWMgcyl9c1wiXSBpblxuICBsZXQgZGlyZWN0aW9uID1cbiAgICBtIGRpcmVjdGlvbiB+ZjooZnVuIGQgLT5cbiAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgICAgICB8IGBSZXZlcnNlIC0+IFwicmV2ZXJzZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgICAgIHwgYEFsdGVybmF0ZV9yZXZlcnNlIC0+IFwiYWx0ZXJuYXRlLXJldmVyc2VcIlxuICAgICAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgICAgIHwgYEluaXRpYWwgLT4gXCJpbml0aWFsXCJcbiAgICAgIGluXG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kaXJlY3Rpb25cIiB+dmFsdWUpXG4gIGluXG4gIGxldCBmaWxsX21vZGUgPVxuICAgIG0gZmlsbF9tb2RlIH5mOihmdW4gZiAtPlxuICAgICAgbGV0IHZhbHVlID1cbiAgICAgICAgbWF0Y2ggZiB3aXRoXG4gICAgICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICAgICAgfCBgRm9yd2FyZHMgLT4gXCJmb3J3YXJkc1wiXG4gICAgICAgIHwgYEJhY2t3YXJkcyAtPiBcImJhY2t3YXJkc1wiXG4gICAgICAgIHwgYEJvdGggLT4gXCJib3RoXCJcbiAgICAgICAgfCBgSW5oZXJpdCAtPiBcImluaGVyaXRcIlxuICAgICAgICB8IGBJbml0aWFsIC0+IFwiaW5pdGlhbFwiXG4gICAgICBpblxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tZmlsbC1tb2RlXCIgfnZhbHVlKVxuICBpblxuICBbIFNvbWUgKGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLW5hbWVcIiB+dmFsdWU6bmFtZSlcbiAgOyBTb21lIChjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1kdXJhdGlvblwiIH52YWx1ZTooc3Bhbl90b19zdHJpbmcgZHVyYXRpb24pKVxuICA7IG0gZGVsYXkgfmY6KGZ1biBzIC0+IGNyZWF0ZV9yYXcgfmZpZWxkOlwiYW5pbWF0aW9uLWRlbGF5XCIgfnZhbHVlOihzcGFuX3RvX3N0cmluZyBzKSlcbiAgOyBtIGl0ZXJfY291bnQgfmY6KGZ1biBpIC0+XG4gICAgICBjcmVhdGVfcmF3IH5maWVsZDpcImFuaW1hdGlvbi1pdGVyYXRpb24tY291bnRcIiB+dmFsdWU6KEludC50b19zdHJpbmcgaSkpXG4gIDsgbSB0aW1pbmdfZnVuY3Rpb24gfmY6KGZ1biB2YWx1ZSAtPlxuICAgICAgY3JlYXRlX3JhdyB+ZmllbGQ6XCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uXCIgfnZhbHVlKVxuICA7IGRpcmVjdGlvblxuICA7IGZpbGxfbW9kZVxuICBdXG4gIHw+IExpc3QuZmlsdGVyX29wdFxuICB8PiBjb25jYXRcbjs7XG5cbnR5cGUgdXNlcl9zZWxlY3QgPVxuICBbIGBBbGxcbiAgfCBgQXV0b1xuICB8IGBOb25lXG4gIHwgYFRleHRcbiAgXVxuXG5sZXQgdXNlcl9zZWxlY3RfdG9fc3RyaW5nX2NzcyA9IGZ1bmN0aW9uXG4gIHwgYEFsbCAtPiBcImFsbFwiXG4gIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgfCBgTm9uZSAtPiBcIm5vbmVcIlxuICB8IGBUZXh0IC0+IFwidGV4dFwiXG47O1xuXG5sZXQgdXNlcl9zZWxlY3QgcyA9XG4gIGxldCB2YWx1ZSA9IHVzZXJfc2VsZWN0X3RvX3N0cmluZ19jc3MgcyBpblxuICBjcmVhdGVfcmF3IH5maWVsZDpcInVzZXItc2VsZWN0XCIgfnZhbHVlXG47O1xuXG5cbmxldCV0ZXN0X21vZHVsZSBcInRlc3RzXCIgPVxuICAobW9kdWxlIHN0cnVjdFxuICAgIGxldCVleHBlY3RfdGVzdCBcInRvX3N0cmluZ19jc3MgLT4gb2Zfc3RyaW5nX2Nzc19leG4gLT4gdG9fc3RyaW5nX2Nzc1wiID1cbiAgICAgIGxldCB0IGNzcyA9XG4gICAgICAgIGxldCBzID0gdG9fc3RyaW5nX2NzcyBjc3MgaW5cbiAgICAgICAgbGV0IHMyID0gdG9fc3RyaW5nX2NzcyAob2Zfc3RyaW5nX2Nzc19leG4gcykgaW5cbiAgICAgICAgcHJpbnRfZW5kbGluZSBzO1xuICAgICAgICBwcmludF9lbmRsaW5lIHMyXG4gICAgICBpblxuICAgICAgdCAoZmxleF9pdGVtIH5ncm93OjEuMCAoKSBAPiBvdmVyZmxvdyBgU2Nyb2xsKTtcbiAgICAgIHQgKGZsZXhfY29udGFpbmVyIH5pbmxpbmU6dHJ1ZSB+ZGlyZWN0aW9uOmBDb2x1bW4gKCkgQD4gYm9yZGVyIH5zdHlsZTpgRGFzaGVkICgpKTtcbiAgICAgIHQgKGNvbG9yIChgUkdCQSAoQ29sb3IuUkdCQS5jcmVhdGUgfnI6MTAwIH5nOjEwMCB+YjoxMDAgKCkpKSk7XG4gICAgICB0XG4gICAgICAgIChjb2xvclxuICAgICAgICAgICAoYEhTTEFcbiAgICAgICAgICAgICAgKENvbG9yLkhTTEEuY3JlYXRlXG4gICAgICAgICAgICAgICAgIH5oOjEwMFxuICAgICAgICAgICAgICAgICB+czooUGVyY2VudC5vZl9tdWx0IDAuNzUpXG4gICAgICAgICAgICAgICAgIH5sOihQZXJjZW50Lm9mX211bHQgMC42MClcbiAgICAgICAgICAgICAgICAgKCkpKSk7XG4gICAgICB0IChjcmVhdGUgfmZpZWxkOlwiY29udGVudFwiIH52YWx1ZTp7fFwiO1wifH0pO1xuICAgICAgWyVleHBlY3RcbiAgICAgICAge3xcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBmbGV4OiAxLjAwMDAwMCAxLjAwMDAwMCBhdXRvO292ZXJmbG93OiBzY3JvbGxcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtmbGV4LWRpcmVjdGlvbjogY29sdW1uO2ZsZXgtd3JhcDogbm93cmFwO2JvcmRlcjogZGFzaGVkXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtmbGV4LXdyYXA6IG5vd3JhcDtib3JkZXI6IGRhc2hlZFxuICAgIGNvbG9yOiByZ2IoMTAwLDEwMCwxMDApXG4gICAgY29sb3I6IHJnYigxMDAsMTAwLDEwMClcbiAgICBjb2xvcjogaHNsKDEwMCw3NSUsNjAlKVxuICAgIGNvbG9yOiBoc2woMTAwLDc1JSw2MCUpXG4gICAgY29udGVudDogXCI7XCJcbiAgICBjb250ZW50OiBcIjtcIiB8fV1cbiAgICA7O1xuXG4gICAgbGV0JWV4cGVjdF90ZXN0IFwiZ3JhZGllbnRzXCIgPVxuICAgICAgbGV0IHAgeCA9IFBlcmNlbnQub2ZfbXVsdCB4IGluXG4gICAgICBsZXQgYyBzID0gYE5hbWUgcyBpblxuICAgICAgbGV0IHQgY3NzID0gcHJpbnRfZW5kbGluZSAodG9fc3RyaW5nX2NzcyBjc3MpIGluXG4gICAgICB0XG4gICAgICAgIChiYWNrZ3JvdW5kX2ltYWdlXG4gICAgICAgICAgIChgTGluZWFyX2dyYWRpZW50XG4gICAgICAgICAgICAgIHsgZGlyZWN0aW9uID0gYERlZyA5MFxuICAgICAgICAgICAgICA7IHN0b3BzID1cbiAgICAgICAgICAgICAgICAgIFsgcCAwLiwgYyBcImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjIsIGMgXCIjZmYwMDAwXCJcbiAgICAgICAgICAgICAgICAgIDsgcCAwLjQsIGMgXCJyZWRcIlxuICAgICAgICAgICAgICAgICAgOyAoIHAgMS5cbiAgICAgICAgICAgICAgICAgICAgLCBgUkdCQVxuICAgICAgICAgICAgICAgICAgICAgICAgKENvbG9yLlJHQkEuY3JlYXRlIH5yOjEwMCB+Zzo1MCB+YjozMCB+YTooUGVyY2VudC5vZl9tdWx0IDAuNzUpICgpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgIFslZXhwZWN0XG4gICAgICAgIHt8IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgYmxhY2sgMC4wMDAwMDAlLCAjZmYwMDAwIDIwLjAwMDAwMCUsIHJlZCA0MC4wMDAwMDAlLCByZ2JhKDEwMCw1MCwzMCwwLjc1KSAxMDAuMDAwMDAwJSkgfH1dO1xuICAgICAgdFxuICAgICAgICAoYmFja2dyb3VuZF9pbWFnZVxuICAgICAgICAgICAoYFJhZGlhbF9ncmFkaWVudCB7IHN0b3BzID0gWyBwIDAuLCBjIFwiYmxhY2tcIjsgcCAxLiwgYyBcInJlZFwiIF0gfSkpO1xuICAgICAgWyVleHBlY3Qge3wgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGJsYWNrIDAuMDAwMDAwJSwgcmVkIDEwMC4wMDAwMDAlKSB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuIiwiKCogVGhlIGdlbl9qc19hcGkgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIGFuIE1JVC1saWtlIGxpY2Vuc2UuICAgICAqKVxuKCogU2VlIHRoZSBhdHRhY2hlZCBMSUNFTlNFIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogQ29weXJpZ2h0IDIwMTUgYnkgTGV4aUZpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuXG4oKiBUaGlzIG1vZHVsZSAobW9zdGx5KSBhYnN0cmFjdHMgYXdheSBmcm9tIGpzX29mX29jYW1sIGVuY29kaW5nIG9mXG4gICBPQ2FtbCB2YWx1ZXMuICBJdCBzZXJ2ZXMgYXMgYSBzdXBwb3J0IGxpYnJhcnkgZm9yIHRoZSBjb2RlIGdlbmVyYXRlZFxuICAgYnkgZ2VuX2pzX2FwaS5cblxuICAgVGhlIG1vZHVsZSBjb3VsZCBtb3N0bHkgYmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mIGpzX29mX29jYW1sJ3MgSnMgbW9kdWxlXG4gICAoYW5kIGluIHBhcnRpY3VsYXIgSnMuVW5zYWZlKSwgYnV0IHdlIHByZWZlciB0byBkcm9wIHRoZSBkZXBlbmRlbmN5XG4gICB0byBqc19vZl9vY2FtbCdzIGxpYnJhcnkgYW5kIHRvIHJlbHkgb25seSBvbiBpdHMgY29tcGlsZXIgYW5kIEpTXG4gICBydW50aW1lIGNvZGUuXG4qKVxuXG5cbnR5cGUgdFxuXG5leHRlcm5hbCB0X29mX2pzOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCB0X3RvX2pzOiB0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmV4dGVybmFsIHN0cmluZ19vZl9qczogdCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHN0cmluZ190b19qczogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNfZnJvbV9zdHJpbmdcIlxuXG5leHRlcm5hbCBpbnRfb2ZfanM6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaW50X3RvX2pzOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcblxuZXh0ZXJuYWwgYm9vbF9vZl9qczogdCAtPiBib29sID0gXCJjYW1sX2pzX3RvX2Jvb2xcIlxuZXh0ZXJuYWwgYm9vbF90b19qczogYm9vbCAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYm9vbFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX2pzOiB0IC0+IGZsb2F0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgZmxvYXRfdG9fanM6IGZsb2F0IC0+IHQgPSBcIiVpZGVudGl0eVwiXG5cbmV4dGVybmFsIG9iajogKHN0cmluZyAqIHQpIGFycmF5IC0+IHQgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuZXh0ZXJuYWwgdmFyaWFibGU6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzX3ZhclwiXG5cbmV4dGVybmFsIGdldDogdCAtPiBzdHJpbmcgLT4gdCA9IFwiY2FtbF9qc19nZXRcIlxuZXh0ZXJuYWwgc2V0OiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcbmV4dGVybmFsIGRlbGV0ZTogdCAtPiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9qc19kZWxldGVcIlxuXG5leHRlcm5hbCBnZXRfcHJvcDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIHNldF9wcm9wOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5leHRlcm5hbCBkZWxldGVfcHJvcDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuZXh0ZXJuYWwgZ2V0X3Byb3BfYXNjaWk6IHQgLT4gc3RyaW5nIC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcbmV4dGVybmFsIHNldF9wcm9wX2FzY2lpOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfc2V0XCJcbmV4dGVybmFsIGRlbGV0ZV9wcm9wX2FzY2lpOiB0IC0+IHN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbmV4dGVybmFsIGludGVybmFsX3R5cGVfb2Y6IHQgLT4gdCA9IFwiY2FtbF9qc190eXBlb2ZcIlxubGV0IHR5cGVfb2YgeCA9IHN0cmluZ19vZl9qcyAoaW50ZXJuYWxfdHlwZV9vZiB4KVxuXG5leHRlcm5hbCBpbnRlcm5hbF9pbnN0YW5jZV9vZjogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfaW5zdGFuY2VvZlwiXG5sZXQgaW5zdGFuY2Vfb2YgeCB+Y29uc3RyID0gYm9vbF9vZl9qcyAoaW50ZXJuYWxfaW5zdGFuY2Vfb2YgeCBjb25zdHIpXG5cbmV4dGVybmFsIHB1cmVfanNfZXhwcjogc3RyaW5nIC0+IHQgPSBcImNhbWxfcHVyZV9qc19leHByXCJcbmxldCBudWxsID0gcHVyZV9qc19leHByIFwibnVsbFwiXG5sZXQgdW5kZWZpbmVkID0gcHVyZV9qc19leHByIFwidW5kZWZpbmVkXCJcblxuZXh0ZXJuYWwgZXF1YWxzOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG5sZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiam9vX2dsb2JhbF9vYmplY3RcIlxuXG5leHRlcm5hbCBuZXdfb2JqOiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19uZXdcIlxuXG5leHRlcm5hbCBjYWxsOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcbmV4dGVybmFsIGFwcGx5OiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19mdW5fY2FsbFwiXG5cbmxldCBhcnJheV9tYWtlIG4gPSBuZXdfb2JqIChnZXRfcHJvcF9hc2NpaSBnbG9iYWwgXCJBcnJheVwiKSBbfGludF90b19qcyBufF1cbmxldCBhcnJheV9nZXQgdCBpID0gZ2V0X3Byb3AgdCAoaW50X3RvX2pzIGkpXG5sZXQgYXJyYXlfc2V0IHQgaSB4ID0gc2V0X3Byb3AgdCAoaW50X3RvX2pzIGkpIHhcblxubGV0IGFycmF5X29mX2pzX2Zyb20gZiBvYmpzIHN0YXJ0ID1cbiAgbGV0IG4gPSBpbnRfb2ZfanMgKGdldF9wcm9wX2FzY2lpIG9ianMgXCJsZW5ndGhcIikgaW5cbiAgQXJyYXkuaW5pdCAobiAtIHN0YXJ0KSAoZnVuIGkgLT4gZiAoYXJyYXlfZ2V0IG9ianMgKHN0YXJ0ICsgaSkpKVxuXG5sZXQgYXJyYXlfb2ZfanMgZiBvYmpzID0gYXJyYXlfb2ZfanNfZnJvbSBmIG9ianMgMFxuXG5sZXQgYXJyYXlfdG9fanMgZiBhcnIgPVxuICBsZXQgbiA9IEFycmF5Lmxlbmd0aCBhcnIgaW5cbiAgbGV0IGEgPSBhcnJheV9tYWtlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgYXJyYXlfc2V0IGEgaSAoZiBhcnIuKGkpKVxuICBkb25lO1xuICBhXG5cbmxldCBsaXN0X29mX2pzX2Zyb20gZiBvYmpzIHN0YXJ0ID0gQXJyYXkudG9fbGlzdCAoYXJyYXlfb2ZfanNfZnJvbSBmIG9ianMgc3RhcnQpXG5cbmxldCBsaXN0X29mX2pzIGYgb2JqcyA9IGxpc3Rfb2ZfanNfZnJvbSBmIG9ianMgMFxuXG5sZXQgbGlzdF90b19qcyBmIGwgPVxuICBhcnJheV90b19qcyBmIChBcnJheS5vZl9saXN0IGwpXG5cbmxldCBvcHRpb25fb2ZfanMgZiB4ID1cbiAgaWYgZXF1YWxzIHggbnVsbCB8fCB4ID09IHVuZGVmaW5lZCB0aGVuIE5vbmVcbiAgZWxzZSBTb21lIChmIHgpXG5cbmxldCBvcHRpb25fdG9fanMgZiA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IGYgeFxuICB8IE5vbmUgLT4gbnVsbFxuXG5sZXQgdW5pdF90b19qcyAoKSA9IHVuZGVmaW5lZFxubGV0IHVuaXRfb2ZfanMgXyA9ICgpXG5cbmNsYXNzIG9iaiAoeDp0KSA9XG4gIG9iamVjdFxuICAgIG1ldGhvZCB0b19qcyA9IHhcbiAgZW5kXG5cbmV4dGVybmFsIGZ1bl90b19qczogaW50IC0+ICh0IC0+ICdhKSAtPiB0ID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfc3RyaWN0XCJcbmV4dGVybmFsIGZ1bl90b19qc19hcmdzOiAodCAtPiAnYSkgLT4gdCA9IFwiY2FtbF9vanNfd3JhcF9mdW5fYXJndW1lbnRzXCJcblxubGV0IGhhc19wcm9wZXJ0eSBvIHggPVxuICB0eXBlX29mIG8gPSBcIm9iamVjdFwiICYmIG8gIT0gbnVsbFxuICAmJiBnZXRfcHJvcCBvIChzdHJpbmdfdG9fanMgeCkgIT0gdW5kZWZpbmVkXG5cbmV4dGVybmFsIG5ld19vYmpfYXJyOiB0IC0+IHQgLT4gdCA9IFwiY2FtbF9vanNfbmV3X2FyclwiXG5cbmxldCBlbXB0eV9vYmogKCkgPSBuZXdfb2JqIChnZXRfcHJvcF9hc2NpaSBnbG9iYWwgXCJPYmplY3RcIikgW3x8XVxuXG5leHRlcm5hbCBpdGVyX3Byb3BlcnRpZXNfdW50eXBlZCA6IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX29qc19pdGVyYXRlX3Byb3BlcnRpZXNcIlxubGV0IGl0ZXJfcHJvcGVydGllcyB4IGYgPVxuICBpdGVyX3Byb3BlcnRpZXNfdW50eXBlZCB4IChmdW5fdG9fanMgMSAoZnVuIHggLT4gZiAoc3RyaW5nX29mX2pzIHgpKSlcblxubGV0IGFwcGx5X2FyciBvIGFyciA9IGNhbGwgbyBcImFwcGx5XCIgW3wgbnVsbDsgYXJyIHxdXG5sZXQgY2FsbF9hcnIgbyBzIGFyciA9IGNhbGwgKGdldF9wcm9wIG8gKHN0cmluZ190b19qcyBzKSkgXCJhcHBseVwiIFt8IG87IGFyciB8XVxuXG5sZXQgaXNfbnVsbCB4ID1cbiAgZXF1YWxzIHggbnVsbFxuXG5sZXQgb2JqX3R5cGUgeCA9XG4gIHN0cmluZ19vZl9qcyAoY2FsbCAocHVyZV9qc19leHByIFwiT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ1wiKSBcImNhbGxcIiBbfHh8XSlcblxubW9kdWxlIHR5cGUgVCA9IHNpZ1xuICB0eXBlIGpzIDo9IHRcbiAgdHlwZSB0XG4gIHZhbCB0X3RvX2pzIDogdCAtPiBqc1xuICB2YWwgdF9vZl9qcyA6IGpzIC0+IHRcbmVuZFxuXG4oKiBPanMuVCBpbnN0YW5jZXMgZm9yIGJ1aWx0LWluIHR5cGVzICopXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgdF90b19qcyA9IGludF90b19qc1xuICBsZXQgdF9vZl9qcyA9IGludF9vZl9qc1xuIGVuZFxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICB0eXBlIHQgPSBzdHJpbmdcbiAgbGV0IHRfdG9fanMgPSBzdHJpbmdfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBzdHJpbmdfb2ZfanNcbmVuZFxubW9kdWxlIEJvb2wgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYm9vbFxuICBsZXQgdF90b19qcyA9IGJvb2xfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBib29sX29mX2pzXG5lbmRcbm1vZHVsZSBGbG9hdCA9IHN0cnVjdFxuICB0eXBlIHQgPSBmbG9hdFxuICBsZXQgdF90b19qcyA9IGZsb2F0X3RvX2pzXG4gIGxldCB0X29mX2pzID0gZmxvYXRfb2ZfanNcbmVuZFxubW9kdWxlIEFycmF5IChBOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBLnQgYXJyYXlcbiAgbGV0IHRfdG9fanMgPSBhcnJheV90b19qcyBBLnRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBhcnJheV9vZl9qcyBBLnRfb2ZfanNcbmVuZFxubW9kdWxlIExpc3QgKEE6IFQpID0gc3RydWN0XG4gIHR5cGUgdCA9IEEudCBsaXN0XG4gIGxldCB0X3RvX2pzID0gbGlzdF90b19qcyBBLnRfdG9fanNcbiAgbGV0IHRfb2ZfanMgPSBsaXN0X29mX2pzIEEudF9vZl9qc1xuZW5kXG5tb2R1bGUgT3B0aW9uIChBOiBUKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBBLnQgb3B0aW9uXG4gIGxldCB0X3RvX2pzID0gb3B0aW9uX3RvX2pzIEEudF90b19qc1xuICBsZXQgdF9vZl9qcyA9IG9wdGlvbl9vZl9qcyBBLnRfb2ZfanNcbmVuZFxuIiwiKCogVGhlIGdlbl9qc19hcGkgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIHRlcm1zIG9mIGFuIE1JVC1saWtlIGxpY2Vuc2UuICAgICAqKVxuKCogU2VlIHRoZSBhdHRhY2hlZCBMSUNFTlNFIGZpbGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogQ29weXJpZ2h0IDIwMTUgYnkgTGV4aUZpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuXG50eXBlIHQgPSBKc29vX3J1bnRpbWUuRXJyb3IudFxuXG5leHRlcm5hbCBjb2VyY2UgOiB0IC0+IE9qcy50ID0gXCIlaWRlbnRpdHlcIlxubGV0IG5hbWUgeCA9IE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5nZXRfcHJvcF9hc2NpaSAoY29lcmNlIHgpIFwibmFtZVwiKVxubGV0IG1lc3NhZ2UgeCA9IE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5nZXRfcHJvcF9hc2NpaSAoY29lcmNlIHgpIFwibWVzc2FnZVwiKVxubGV0IHN0YWNrIHggPSBPanMub3B0aW9uX29mX2pzIE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5nZXRfcHJvcF9hc2NpaSAoY29lcmNlIHgpIFwic3RhY2tcIilcbmxldCB0b19zdHJpbmcgeCA9IE9qcy5zdHJpbmdfb2ZfanMgKE9qcy5jYWxsIChjb2VyY2UgeCkgXCJ0b1N0cmluZ1wiIFt8fF0pXG5cbmV4Y2VwdGlvbiBFcnJvciA9IEpzb29fcnVudGltZS5FcnJvci5FeG5cblxubGV0ICgpID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgRXJyb3IgeCAtPiBTb21lICh0b19zdHJpbmcgeClcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKVxuIiwib3BlbiBKc19vZl9vY2FtbFxuXG5sZXQgdG9fanNfc3RyaW5nIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvU3RyaW5nXG5sZXQgdG9fanNfc3RyaW5nX2ZpeGVkIGRpZ2l0cyB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0ZpeGVkIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gKEpzLm51bWJlcl9vZl9mbG9hdCB2YWx1ZSkjI3RvUHJlY2lzaW9uIGRpZ2l0c1xubGV0IHRvX2pzX3N0cmluZ19leHBvbmVudGlhbCB2YWx1ZSA9IChKcy5udW1iZXJfb2ZfZmxvYXQgdmFsdWUpIyN0b0V4cG9uZW50aWFsXG5sZXQgdG9fc3RyaW5nIHZhbHVlID0gdG9fanNfc3RyaW5nIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19maXhlZCBkaWdpdHMgdmFsdWUgPSB0b19qc19zdHJpbmdfZml4ZWQgZGlnaXRzIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xubGV0IHRvX3N0cmluZ19wcmVjaXNpb24gZGlnaXRzIHZhbHVlID0gdG9fanNfc3RyaW5nX3ByZWNpc2lvbiBkaWdpdHMgdmFsdWUgfD4gSnMudG9fc3RyaW5nXG5sZXQgdG9fc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlID0gdG9fanNfc3RyaW5nX2V4cG9uZW50aWFsIHZhbHVlIHw+IEpzLnRvX3N0cmluZ1xuXG5sZXQlZXhwZWN0X3Rlc3QgXyA9XG4gIGxldCBvcGVuIENvcmUgaW5cbiAgbGV0IHByaW50IGYgPSBwcmludGYgXCIlc1wiICh0b19zdHJpbmcgZikgaW5cbiAgcHJpbnQgMS47XG4gIFslZXhwZWN0IHt8IDEgfH1dO1xuICBwcmludCBGbG9hdC5uYW47XG4gIFslZXhwZWN0IHt8IE5hTiB8fV07XG4gIHByaW50IEZsb2F0LmluZmluaXR5O1xuICBbJWV4cGVjdCB7fCBJbmZpbml0eSB8fV07XG4gIHByaW50IEZsb2F0Lm5lZ19pbmZpbml0eTtcbiAgWyVleHBlY3Qge3wgLUluZmluaXR5IHx9XTtcbiAgcHJpbnQgMC4wMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMWUtOCB8fV07XG4gIHByaW50ICgtMS4pO1xuICBbJWV4cGVjdCB7fCAtMSB8fV07XG4gIHByaW50IDEuMDAwMDAwMTtcbiAgWyVleHBlY3Qge3wgMS4wMDAwMDAxIHx9XVxuOztcbiIsIm9wZW4gQmFzZVxub3BlbiBKc19vZl9vY2FtbFxuaW5jbHVkZSBVaV9lZmZlY3RcblxuKCogQWxsIHZpc2liaWxpdHkgaGFuZGxlcnMgc2VlIGFsbCBldmVudHMsIHNvIGEgc2ltcGxlIGxpc3QgaXMgZW5vdWdoLiAgKilcbmxldCB2aXNpYmlsaXR5X2hhbmRsZXJzIDogKHVuaXQgLT4gdW5pdCkgbGlzdCByZWYgPSByZWYgW11cblxubW9kdWxlIHR5cGUgVmlzaWJpbGl0eV9oYW5kbGVyID0gc2lnXG4gIHZhbCBoYW5kbGUgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgRGVmaW5lX3Zpc2liaWxpdHkgKFZIIDogVmlzaWJpbGl0eV9oYW5kbGVyKSA9IHN0cnVjdFxuICBsZXQgKCkgPSB2aXNpYmlsaXR5X2hhbmRsZXJzIDo9IFZILmhhbmRsZSA6OiAhdmlzaWJpbGl0eV9oYW5kbGVyc1xuZW5kXG5cbnR5cGUgXyB0ICs9XG4gIHwgVmlld3BvcnRfY2hhbmdlZFxuICB8IFN0b3BfcHJvcGFnYXRpb25cbiAgfCBTdG9wX2ltbWVkaWF0ZV9wcm9wYWdhdGlvblxuICB8IFByZXZlbnRfZGVmYXVsdFxuXG5sZXQgc2VxdWVuY2VfYXNfc2libGluZyBsZWZ0IH51bmxlc3Nfc3RvcHBlZCA9XG4gIGxldCByZWMgY29udGFpbnNfc3RvcCA9IGZ1bmN0aW9uXG4gICAgfCBNYW55IGVzIC0+IExpc3QuZXhpc3RzIGVzIH5mOmNvbnRhaW5zX3N0b3BcbiAgICB8IFN0b3BfaW1tZWRpYXRlX3Byb3BhZ2F0aW9uIC0+IHRydWVcbiAgICB8IF8gLT4gZmFsc2VcbiAgaW5cbiAgaWYgY29udGFpbnNfc3RvcCBsZWZ0IHRoZW4gbGVmdCBlbHNlIFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgdW5sZXNzX3N0b3BwZWQgKCkgXVxuOztcblxuKCogV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IGRvbSBldmVudCBoZXJlIHNvIHRoYXRcbiAgIG1vdmVtZW50IGJldHdlZW4gW1Zkb20uRWZmZWN0LkV4cGVydC5oYW5kbGVdIGFuZFxuICAgW1VpX2NvbmNyZXRlLkVmZmVjdC5FeHBlcnQuaGFuZGxlXSBrZWVwcyB0aGUgb3JpZ2luYWxcbiAgIGRvbSBldmVudCBhcm91bmQuICopXG5sZXQgY3VycmVudF9kb21fZXZlbnQgPSByZWYgTm9uZVxuXG5sZXQgKCkgPVxuICBIYXNodGJsLmFkZF9leG5cbiAgICBFeHBlcnQuaGFuZGxlcnNcbiAgICB+a2V5OkNhbWwuT2JqLkV4dGVuc2lvbl9jb25zdHJ1Y3Rvci4oaWQgKG9mX3ZhbCBWaWV3cG9ydF9jaGFuZ2VkKSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gTGlzdC5pdGVyICF2aXNpYmlsaXR5X2hhbmRsZXJzIH5mOihmdW4gZiAtPiBmICgpKSlcbjs7XG5cbmxldCAoKSA9XG4gIEhhc2h0YmwuYWRkX2V4blxuICAgIEV4cGVydC5oYW5kbGVyc1xuICAgIH5rZXk6Q2FtbC5PYmouRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLihpZCAob2ZfdmFsIFN0b3BfcHJvcGFnYXRpb24pKVxuICAgIH5kYXRhOihmdW4gXyAtPiBPcHRpb24uaXRlciAhY3VycmVudF9kb21fZXZlbnQgfmY6RG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uKVxuOztcblxubGV0ICgpID1cbiAgSGFzaHRibC5hZGRfZXhuXG4gICAgRXhwZXJ0LmhhbmRsZXJzXG4gICAgfmtleTpDYW1sLk9iai5FeHRlbnNpb25fY29uc3RydWN0b3IuKGlkIChvZl92YWwgUHJldmVudF9kZWZhdWx0KSlcbiAgICB+ZGF0YTooZnVuIF8gLT4gT3B0aW9uLml0ZXIgIWN1cnJlbnRfZG9tX2V2ZW50IH5mOkRvbS5wcmV2ZW50RGVmYXVsdClcbjs7XG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbGV0IGhhbmRsZV9ub25fZG9tX2V2ZW50X2V4biA9IEV4cGVydC5oYW5kbGVcblxuICBsZXQgaGFuZGxlIGRvbV9ldmVudCBldmVudCA9XG4gICAgbGV0IG9sZCA9ICFjdXJyZW50X2RvbV9ldmVudCBpblxuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IFNvbWUgKGRvbV9ldmVudCA6PiBEb21faHRtbC5lbGVtZW50IERvbS5ldmVudCBKcy50KTtcbiAgICBFeHBlcnQuaGFuZGxlIGV2ZW50O1xuICAgIGN1cnJlbnRfZG9tX2V2ZW50IDo9IG9sZFxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBKc19vZl9vY2FtbFxuXG5tb2R1bGUgdHlwZSBTID0gSG9va3NfaW50Zi5TXG5cbmxldCBjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIGlkID0gRG9tX2h0bWwud2luZG93IyNjYW5jZWxBbmltYXRpb25GcmFtZSBpZFxuXG5sZXQgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgZiA9XG4gIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lIChKcy53cmFwX2NhbGxiYWNrIGYpXG47O1xuXG5tb2R1bGUgRXh0cmEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyB2YWx1ZSA6ICdhXG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgKFQgeyB0eXBlX2lkOyB2YWx1ZSB9KSA9IFR5cGVfZXF1YWwuSWQudG9fc2V4cCB0eXBlX2lkIHZhbHVlXG5lbmRcblxudHlwZSB0ID1cbiAgfCBUIDpcbiAgICAgIHsgaW5wdXQgOiAnaW5wdXRcbiAgICAgIDsgaW5wdXRfaWQgOiAnaW5wdXQgVHlwZV9lcXVhbC5JZC50XG4gICAgICA7IGNvbWJpbmVfaW5wdXRzIDogJ2lucHV0IC0+ICdpbnB1dCAtPiAnaW5wdXRcbiAgICAgIDsgaW5pdCA6XG4gICAgICAgICAgJ2lucHV0XG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gJ2lucHV0ICogRG9tX2h0bWwuYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgKiAnc3RhdGVcbiAgICAgIDsgdXBkYXRlIDpcbiAgICAgICAgICAnaW5wdXRcbiAgICAgICAgICAtPiAnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZVxuICAgICAgICAgIC0+IERvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgICAgIC0+ICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICA7IGRlc3Ryb3kgOlxuICAgICAgICAgICdpbnB1dCAqIERvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkICogJ3N0YXRlXG4gICAgICAgICAgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50XG4gICAgICAgICAgLT4gdW5pdFxuICAgICAgOyBpZCA6ICgnaW5wdXQgKiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCAqICdzdGF0ZSkgQ29yZS5UeXBlX2VxdWFsLklkLnRcbiAgICAgIH1cbiAgICAgIC0+IHRcblxubGV0IGdlbmVyaWNfaG9vayA9IGxhenkgSnMuVW5zYWZlLihnZXQgZ2xvYmFsIChKcy5zdHJpbmcgXCJHZW5lcmljSG9va1wiKSlcblxubGV0IG1ha2VfaG9vayB+Y29tYmluZV9pbnB1dHMgfmluaXQgfmV4dHJhOihpbnB1dCwgaW5wdXRfaWQpIH51cGRhdGUgfmRlc3Ryb3kgfmlkID1cbiAgVCB7IGluaXQ7IGNvbWJpbmVfaW5wdXRzOyBpbnB1dDsgaW5wdXRfaWQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQgfVxuOztcblxubGV0IHBhY2sgKFQgeyBpbml0OyBpbnB1dDsgaW5wdXRfaWQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQ7IF8gfSkgPVxuICBsZXQgd3JhcCBhID0gYSB8PiBKcy53cmFwX2NhbGxiYWNrIHw+IEpzLlVuc2FmZS5pbmplY3QgaW5cbiAgbGV0IGluaXQgPSB3cmFwIChpbml0IGlucHV0KSBpblxuICBsZXQgdXBkYXRlID0gd3JhcCAodXBkYXRlIGlucHV0KSBpblxuICBsZXQgZGVzdHJveSA9IHdyYXAgZGVzdHJveSBpblxuICBsZXQgZ2VuZXJpY19ob29rID0gTGF6eS5mb3JjZSBnZW5lcmljX2hvb2sgaW5cbiAgbGV0IGV4dHJhID0gRXh0cmEuVCB7IHR5cGVfaWQgPSBpbnB1dF9pZDsgdmFsdWUgPSBpbnB1dCB9IGluXG4gIEpzLlVuc2FmZS5mdW5fY2FsbFxuICAgIGdlbmVyaWNfaG9va1xuICAgIFt8IGluaXQ7IHVwZGF0ZTsgZGVzdHJveTsgaWQgfD4gSnMuVW5zYWZlLmluamVjdDsgZXh0cmEgfD4gSnMuVW5zYWZlLmluamVjdCB8XVxuOztcblxubGV0IGNvbWJpbmUgKFQgbGVmdCkgKFQgcmlnaHQpID1cbiAgbWF0Y2ggVHlwZV9lcXVhbC5JZC5zYW1lX3dpdG5lc3MgbGVmdC5pbnB1dF9pZCByaWdodC5pbnB1dF9pZCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGVwcmludF9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJob29rcyBkbyBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLCBzbyB0aGV5IGNhbm5vdCBiZSBjb21iaW5lZDsgdGFraW5nIHRoZSBzZWNvbmQgXFxcbiAgICAgICAgIG9mIHRoZSB0d29cIl07XG4gICAgVCByaWdodFxuICB8IFNvbWUgVCAtPiBUIHsgcmlnaHQgd2l0aCBpbnB1dCA9IHJpZ2h0LmNvbWJpbmVfaW5wdXRzIGxlZnQuaW5wdXQgcmlnaHQuaW5wdXQgfVxuOztcblxubW9kdWxlIE1ha2UgKFMgOiBTKSA9IHN0cnVjdFxuICBsZXQgaW5wdXRfYW5kX3N0YXRlX2lkID1cbiAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIlwiIChmdW4gKGlucHV0LCBfYW5pbWF0aW9uX2lkLCBzdGF0ZSkgLT5cbiAgICAgIFslc2V4cF9vZjogUy5JbnB1dC50ICogb3BhcXVlXSAoaW5wdXQsIHN0YXRlKSlcbiAgOztcblxuICBsZXQgaW5wdXRfaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpcIlwiIFMuSW5wdXQuc2V4cF9vZl90XG5cbiAgbGV0IGluaXQgaW5wdXQgZWxlbWVudCA9XG4gICAgbGV0IHN0YXRlID0gUy5pbml0IGlucHV0IGVsZW1lbnQgaW5cbiAgICBsZXQgYW5pbWF0aW9uX2lkID1cbiAgICAgIHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIChmdW4gXyAtPiBTLm9uX21vdW50IGlucHV0IHN0YXRlIGVsZW1lbnQpXG4gICAgaW5cbiAgICBpbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgaW5wdXQgKG9sZF9pbnB1dCwgYW5pbWF0aW9uX2lkLCBzdGF0ZSkgZWxlbWVudCA9XG4gICAgUy51cGRhdGUgfm9sZF9pbnB1dCB+bmV3X2lucHV0OmlucHV0IHN0YXRlIGVsZW1lbnQ7XG4gICAgaW5wdXQsIGFuaW1hdGlvbl9pZCwgc3RhdGVcbiAgOztcblxuICBsZXQgZGVzdHJveSAob2xkX2lucHV0LCBhbmltYXRpb25faWQsIHN0YXRlKSBlbGVtZW50ID1cbiAgICBjYW5jZWxfYW5pbWF0aW9uX2ZyYW1lIGFuaW1hdGlvbl9pZDtcbiAgICBTLmRlc3Ryb3kgb2xkX2lucHV0IHN0YXRlIGVsZW1lbnRcbiAgOztcblxuICBsZXQgY3JlYXRlIGlucHV0ID1cbiAgICBtYWtlX2hvb2tcbiAgICAgIH5leHRyYTooaW5wdXQsIGlucHV0X2lkKVxuICAgICAgfmNvbWJpbmVfaW5wdXRzOlMuSW5wdXQuY29tYmluZVxuICAgICAgfmlkOmlucHV0X2FuZF9zdGF0ZV9pZFxuICAgICAgfmluaXRcbiAgICAgIH51cGRhdGVcbiAgICAgIH5kZXN0cm95XG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IHR5cGVfaWQgPSBpbnB1dF9pZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbW9kdWxlIEV4dHJhID0gRXh0cmFcbmVuZFxuIiwiW0BAQGpzLmR1bW15IFwiISEgVGhpcyBjb2RlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5fanNfYXBpICEhXCJdXG5bQEBAb2NhbWwud2FybmluZyBcIi03LTMyLTM5XCJdXG5vcGVuISBKc19vZl9vY2FtbFxub3BlbiEgR2VuX2pzX2FwaVxudHlwZSAoJ2EsICdiKSB0ID0gT2pzLnRcbmxldCByZWMgdF9vZl9qcyA6XG4gICdhICdiIC4gKE9qcy50IC0+ICdhKSAtPiAoT2pzLnQgLT4gJ2IpIC0+IE9qcy50IC0+ICgnYSwgJ2IpIHQgPSBmdW4gKHR5cGVcbiAgX19hKSAtPiBmdW4gKHR5cGUgX19iKSAtPlxuICBmdW4gKF9fYV9vZl9qcyA6IE9qcy50IC0+IF9fYSkgLT5cbiAgICBmdW4gKF9fYl9vZl9qcyA6IE9qcy50IC0+IF9fYikgLT4gZnVuICh4MiA6IE9qcy50KSAtPiB4MlxuYW5kIHRfdG9fanMgOiAnYSAnYiAuICgnYSAtPiBPanMudCkgLT4gKCdiIC0+IE9qcy50KSAtPiAoJ2EsICdiKSB0IC0+IE9qcy50ID1cbiAgZnVuICh0eXBlIF9fYSkgLT4gZnVuICh0eXBlIF9fYikgLT5cbiAgZnVuIChfX2FfdG9fanMgOiBfX2EgLT4gT2pzLnQpIC0+XG4gICAgZnVuIChfX2JfdG9fanMgOiBfX2IgLT4gT2pzLnQpIC0+IGZ1biAoeDEgOiBPanMudCkgLT4geDFcbmxldCAoY3JlYXRlIDogdW5pdCAtPiAoJ2EsICdiKSB0KSA9XG4gIGZ1biAoKSAtPlxuICAgIHRfb2ZfanMgT2JqLm1hZ2ljIE9iai5tYWdpY1xuICAgICAgKE9qcy5uZXdfb2JqIChPanMuZ2V0X3Byb3BfYXNjaWkgT2pzLmdsb2JhbCBcIk1hcFwiKSBbfHxdKVxubGV0IChzZXQgOiAoJ2EsICdiKSB0IC0+ICdhIC0+ICdiIC0+IHVuaXQpID1cbiAgZnVuICh4NyA6ICgnYSwgJ2IpIHQpIC0+XG4gICAgZnVuICh4NSA6ICdhKSAtPlxuICAgICAgZnVuICh4NiA6ICdiKSAtPlxuICAgICAgICBpZ25vcmVcbiAgICAgICAgICAoT2pzLmNhbGwgKHRfdG9fanMgT2JqLm1hZ2ljIE9iai5tYWdpYyB4NykgXCJzZXRcIlxuICAgICAgICAgICAgIFt8KE9iai5tYWdpYyB4NSk7KE9iai5tYWdpYyB4Nil8XSlcbmxldCAoZ2V0IDogKCdhLCAnYikgdCAtPiAnYSAtPiAnYiBvcHRpb24pID1cbiAgZnVuICh4MTEgOiAoJ2EsICdiKSB0KSAtPlxuICAgIGZ1biAoeDEwIDogJ2EpIC0+XG4gICAgICBPanMub3B0aW9uX29mX2pzIE9iai5tYWdpY1xuICAgICAgICAoT2pzLmNhbGwgKHRfdG9fanMgT2JqLm1hZ2ljIE9iai5tYWdpYyB4MTEpIFwiZ2V0XCIgW3woT2JqLm1hZ2ljIHgxMCl8XSlcbmxldCAoZGVsZXRlIDogKCdhLCAnYikgdCAtPiAnYSAtPiB1bml0KSA9XG4gIGZ1biAoeDE2IDogKCdhLCAnYikgdCkgLT5cbiAgICBmdW4gKHgxNSA6ICdhKSAtPlxuICAgICAgaWdub3JlXG4gICAgICAgIChPanMuY2FsbCAodF90b19qcyBPYmoubWFnaWMgT2JqLm1hZ2ljIHgxNikgXCJkZWxldGVcIlxuICAgICAgICAgICBbfChPYmoubWFnaWMgeDE1KXxdKVxuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuIEdlbl9qc19hcGlcblxubW9kdWxlIE5hdGl2ZV9ub2RlIDogc2lnXG4gIHR5cGUgdCA9IERvbV9odG1sLmVsZW1lbnQgSnMudFxuXG4gIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICB2YWwgdF90b19qcyA6IHQgLT4gT2pzLnRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBEb21faHRtbC5lbGVtZW50IEpzLnRcblxuICBsZXQgdF9vZl9qcyB4ID0gU3RkbGliLk9iai5tYWdpYyB4XG4gIGxldCB0X3RvX2pzIHggPSBTdGRsaWIuT2JqLm1hZ2ljIHhcbmVuZFxuXG5tb2R1bGUgQXR0cnMgOiBzaWdcbiAgdHlwZSB0ID0gcHJpdmF0ZSBPanMudFxuXG4gIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICB2YWwgdF90b19qcyA6IHQgLT4gT2pzLnRcbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuICB2YWwgaGFzX3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgaGFzX2F0dHJpYnV0ZSA6IHQgLT4gc3RyaW5nIC0+IGJvb2xcbiAgdmFsIHNldF9wcm9wZXJ0eSA6IHQgLT4gc3RyaW5nIC0+IE9qcy50IC0+IHVuaXRcbiAgdmFsIHNldF9hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiBPanMudCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gT2pzLnRcblxuICBsZXQgdF9vZl9qcyB4ID0geFxuICBsZXQgdF90b19qcyB4ID0geFxuICBsZXQgY3JlYXRlICgpIDogdCA9IE9qcy5lbXB0eV9vYmogKClcblxuICBsZXQgc2V0X3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gdCAtPiB1bml0ID1cbiAgICBmdW4gdCBuYW1lIHZhbHVlIC0+IE9qcy5zZXRfcHJvcF9hc2NpaSB0IG5hbWUgdmFsdWVcbiAgOztcblxuICBsZXQgaGFzX3Byb3BlcnR5IDogdCAtPiBzdHJpbmcgLT4gYm9vbCA9IE9qcy5oYXNfcHJvcGVydHlcblxuICBsZXQgaGFzX2F0dHJpYnV0ZSB0IG5hbWUgPVxuICAgIE9qcy5oYXNfcHJvcGVydHkgdCBcImF0dHJpYnV0ZXNcIlxuICAgICYmIE9qcy5oYXNfcHJvcGVydHkgKE9qcy5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSBuYW1lXG4gIDs7XG5cbiAgbGV0IHNldF9hdHRyaWJ1dGUgOiB0IC0+IHN0cmluZyAtPiB0IC0+IHVuaXQgPVxuICAgIGZ1biB0IG5hbWUgdmFsdWUgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgKE9qcy5nZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiKSAoT2pzLnZhcmlhYmxlIFwidW5kZWZpbmVkXCIpXG4gICAgICB0aGVuIE9qcy5zZXRfcHJvcF9hc2NpaSB0IFwiYXR0cmlidXRlc1wiIChPanMuZW1wdHlfb2JqICgpKTtcbiAgICAgIE9qcy5zZXRfcHJvcF9hc2NpaSAoT2pzLmdldF9wcm9wX2FzY2lpIHQgXCJhdHRyaWJ1dGVzXCIpIG5hbWUgdmFsdWVcbiAgOztcbmVuZFxuXG5tb2R1bGUgRWxlbWVudF9hcnJheSA9IHN0cnVjdFxuICAoKiBUaGlzIHR5cGUgbXVzdCBvbmx5IGJlIGluc3RhbnRpYXRlZCB3aXRoIE5vZGUudCBhcyB0aGVcbiAgICAgdHlwZSBwYXJhbWV0ZXIgYmVjYXVzZSBpdCBpZ25vcmVzIHRoZSBpbm5lci1tb3N0IGNvbnZlcnNpb25cbiAgICAgZnVuY3Rpb24uICBUaGlzIGlzIHNhZmUgYmVjYXVzZSBOb2RlLnQgaXMgZGVmaW5lZCBhcyBPanMudCxcbiAgICAgYnV0IHdlIGNhbid0IHRha2UgYWR2YW50YWdlIG9mIHRoYXQgZmFjdCBiZWNhdXNlIHRoZSBOb2RlXG4gICAgIG1vZHVsZSBpcyBnZW5lcmF0ZWQgdmlhIHBweC4gKilcblxuICB0eXBlICdhIHQgPSAnYSBKc19vZl9vY2FtbC5Kcy5qc19hcnJheSBKcy50XG5cbiAgbGV0IHRfb2ZfanMgOiBfIC0+IE9qcy50IC0+ICdhIHQgPSBmdW4gXyAtPiBDYW1sLk9iai5tYWdpY1xuICBsZXQgdF90b19qcyA6IF8gLT4gJ2EgdCAtPiBPanMudCA9IGZ1biBfIC0+IENhbWwuT2JqLm1hZ2ljXG5lbmRcblxubW9kdWxlIE5vZGUgPVxuICBbJWpzOlxuICAgIHR5cGUgdCA9IHByaXZhdGUgT2pzLnRcblxuICAgIHZhbCB0X29mX2pzIDogT2pzLnQgLT4gdFxuICAgIHZhbCB0X3RvX2pzIDogdCAtPiBPanMudFxuXG4gICAgdmFsIG5vZGUgOiBzdHJpbmcgLT4gQXR0cnMudCAtPiB0IEVsZW1lbnRfYXJyYXkudCAtPiBzdHJpbmcgb3B0aW9uIC0+IHRcbiAgICBbQEBqcy5uZXcgXCJWaXJ0dWFsRG9tLlZOb2RlXCJdXG5cbiAgICB2YWwgdGV4dCA6IHN0cmluZyAtPiB0IFtAQGpzLm5ldyBcIlZpcnR1YWxEb20uVlRleHRcIl1cblxuICAgIHZhbCBzdmcgOiBzdHJpbmcgLT4gQXR0cnMudCAtPiB0IEVsZW1lbnRfYXJyYXkudCAtPiBzdHJpbmcgb3B0aW9uIC0+IHRcbiAgICBbQEBqcy5uZXcgXCJWaXJ0dWFsRG9tLnN2Z1wiXVxuXG4gICAgdmFsIHRvX2RvbSA6IHQgLT4gTmF0aXZlX25vZGUudCBbQEBqcy5nbG9iYWwgXCJWaXJ0dWFsRG9tLmNyZWF0ZUVsZW1lbnRcIl1dXG5cbm1vZHVsZSBQYXRjaCA9XG4gIFslanM6XG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBPanMudFxuXG4gICAgdmFsIHRfb2ZfanMgOiBPanMudCAtPiB0XG4gICAgdmFsIHRfdG9fanMgOiB0IC0+IE9qcy50XG4gICAgdmFsIGNyZWF0ZSA6IHByZXZpb3VzOk5vZGUudCAtPiBjdXJyZW50Ok5vZGUudCAtPiB0IFtAQGpzLmdsb2JhbCBcIlZpcnR1YWxEb20uZGlmZlwiXVxuICAgIHZhbCBhcHBseSA6IE5hdGl2ZV9ub2RlLnQgLT4gdCAtPiBOYXRpdmVfbm9kZS50IFtAQGpzLmdsb2JhbCBcIlZpcnR1YWxEb20ucGF0Y2hcIl1cblxuICAgIHZhbCBpc19lbXB0eSA6IHQgLT4gYm9vbFxuICAgIFtAQGpzLmN1c3RvbVxuICAgICAgbGV0IGlzX2VtcHR5ID1cbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHJcbiAgICAgICAgICAgIHtqc3xcbiAgICAgICAgKGZ1bmN0aW9uIChwYXRjaCkge1xuICAgICAgICAgIGZvciAodmFyIGtleSBpbiBwYXRjaCkge1xuICAgICAgICAgICAgaWYgKGtleSAhPT0gJ2EnKSByZXR1cm4gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSlcbiAgICAgIHxqc31cbiAgICAgICAgaW5cbiAgICAgICAgZnVuICh0IDogdCkgLT4gSnMuVW5zYWZlLmZ1bl9jYWxsIGYgW3wgSnMuVW5zYWZlLmluamVjdCB0IHxdIHw+IEpzLnRvX2Jvb2xcbiAgICAgIDs7XV1cblxubW9kdWxlIFdpZGdldCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIFsncywgJ2VsZW1lbnRdIHdpZGdldCA9XG4gICAgb2JqZWN0XG4gICAgICBjb25zdHJhaW50ICdlbGVtZW50ID0gI0RvbV9odG1sLmVsZW1lbnQgSnMudFxuICAgICAgbWV0aG9kIHR5cGVfIDogSnMuanNfc3RyaW5nIEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgKCogdmlydHVhbC1kb20gY29uc2lkZXJzIHR3byB3aWRnZXRzIG9mIGJlaW5nIG9mIHRoZSBzYW1lIFwia2luZFwiIGlmIGVpdGhlclxuICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBob2xkczpcblxuICAgICAgICAgMS4gVGhleSBib3RoIGhhdmUgYSBcIm5hbWVcIiBhdHRyaWJ1dGUgYW5kIHRoZWlyIFwiaWRcIiBmaWVsZHMgYXJlIGVxdWFsLlxuICAgICAgICAgKEkgdGhpbmsgdGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB2aXJ0dWFsLWRvbSBhbmQgaGF2ZSBmaWVsZCBhbiBpc3N1ZVxuICAgICAgICAgb24gZ2l0aHViOiBbaHR0cHM6Ly9naXRodWIuY29tL01hdHQtRXNjaC92aXJ0dWFsLWRvbS9pc3N1ZXMvMzgwXSlcblxuICAgICAgICAgMi4gVGhlaXIgW2luaXRdIG1ldGhvZHMgYXJlIFwiPT09XCIgZXF1YWwuIFRoaXMgaXMgdHJ1ZSB3aGVuIHVzaW5nIHZpcnR1YWwtZG9tXG4gICAgICAgICB3aWRnZXRzIGluIHRoZSB1c3VhbCBzdHlsZSBpbiBKYXZhc2NyaXB0LCBzaW5jZSB0aGUgW2luaXRdIG1ldGhvZCB3aWxsIGJlIGRlZmluZWRcbiAgICAgICAgIG9uIGEgcHJvdG90eXBlLCBidXQgaXMgbm90IHRydWUgaW4gdGhpcyBiaW5kaW5nIGFzIGl0IGlzIHJlZGVmaW5lZCBmb3IgZWFjaFxuICAgICAgICAgY2FsbCB0byBbd2lkZ2V0XS5cblxuICAgICAgICAgU28sIHdlIGdvIHdpdGggb3B0aW9uIDEgYW5kIG11c3QgaGF2ZSBhIHRyaXZpYWwgZmllbGQgY2FsbGVkIFtuYW1lXS5cbiAgICAgICopXG4gICAgICBtZXRob2QgbmFtZSA6IHVuaXQgSnMud3JpdGVvbmx5X3Byb3BcbiAgICAgIG1ldGhvZCBpZCA6ICgncyAqICdlbGVtZW50KSBUeXBlX2VxdWFsLklkLnQgSnMucHJvcFxuICAgICAgbWV0aG9kIHN0YXRlIDogJ3MgSnMucHJvcFxuICAgICAgbWV0aG9kIGluZm8gOiBTZXhwLnQgTGF6eS50IG9wdGlvbiBKcy5wcm9wXG4gICAgICBtZXRob2QgZGVzdHJveSA6ICgnZWxlbWVudCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2QgdXBkYXRlIDpcbiAgICAgICAgKCgnb3RoZXJfc3RhdGUsICdvdGhlcl9lbGVtZW50KSB3aWRnZXQgSnMudCAtPiAnZWxlbWVudCAtPiAnZWxlbWVudCkgSnMuY2FsbGJhY2tcbiAgICAgICAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2QgaW5pdCA6ICh1bml0IC0+ICdlbGVtZW50KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICAgIGVuZFxuXG4gICgqIFdlIG1vZGVsIEpTIGxldmVsIG9iamVjdHMgaGVyZSBzbyB0aGVyZSBpcyBhIGxvdCBvZiB0aHJvd2luZyBhd2F5IG9mIHR5cGVcbiAgICAgaW5mb3JtYXRpb24uICBXZSBjb3VsZCBwb3NzaWJseSB0cnkgdG8gcmVkaXNjb3ZlciBtb3JlIG9mIGl0LiAgT3IgbWF5YmUgd2VcbiAgICAgc2hvdWxkIHNlZSBpZiB3ZSBjYW4gZ2V0IHJpZCBXaWRnZXQgY29tcGxldGVseS5cbiAgICAgdGhlIHVuaXQgdHlwZSBwYXJhbWV0ZXJzIGhlcmUgYXJlIG5vdCBhY3R1YWxseSB1bml0LCBidXQgcGFydCBvZlxuICAgICB0aGUgdHlwZSBpbmZvIHdlIGhhdmUgdGhyb3duIGF3YXkgaW50byBvdXIgZGFuY2VcbiAgICAgd2l0aCBKUyAqKVxuICB0eXBlIHQgPSBOb2RlLnRcblxuICAoKiBoZXJlIGlzIGhvdyB3ZSB0aHJvdyBhd2F5IHR5cGUgaW5mb3JtYXRpb24uICBPdXIgZ29vZCBvbGQgZnJpZW5kIE9iai5tYWdpYyxcbiAgICAgYnV0IGNvbnN0cmFpbmVkIGEgbGl0dGxlIGJpdCAqKVxuICBleHRlcm5hbCBvanNfb2ZfanMgOiAoXywgXykgd2lkZ2V0IEpzLnQgLT4gT2pzLnQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbW9kdWxlIFN0YXRlX2tlZXBlciA9IHN0cnVjdFxuICAgIHR5cGUgYm94ID0gVCA6ICgnYSAqIF8pIFR5cGVfZXF1YWwuSWQudCAqICdhIC0+IGJveFxuXG4gICAgbGV0IHQgOiAoSnMuVW5zYWZlLmFueSwgYm94KSBKc19tYXAudCA9IEpzX21hcC5jcmVhdGUgKClcbiAgICBsZXQgc2V0IH5pZCBlbGVtZW50IHN0YXRlID0gSnNfbWFwLnNldCB0IChKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQpIChUIChpZCwgc3RhdGUpKVxuXG4gICAgbGV0IGdldCA6IHR5cGUgYSBiLiBpZDooYSAqIGIpIFR5cGVfZXF1YWwuSWQudCAtPiBfIC0+IGEgPVxuICAgICAgZnVuIH5pZCBlbGVtZW50IC0+XG4gICAgICBsZXQgZWxlbWVudCA9IEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudCBpblxuICAgICAgbWF0Y2ggSnNfbWFwLmdldCB0IGVsZW1lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBpZF9zZXhwID0gVHlwZV9lcXVhbC5JZC5zZXhwX29mX3QgKGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIpIGlkIGluXG4gICAgICAgIHJhaXNlX3MgWyVtZXNzYWdlIFwiQlVHOiBlbGVtZW50IHN0YXRlIG5vdCBmb3VuZFwiIChpZF9zZXhwIDogU2V4cC50KV1cbiAgICAgIHwgU29tZSAoVCAoZl9pZCwgc3RhdGUpKSAtPlxuICAgICAgICBsZXQgVCA9IFR5cGVfZXF1YWwuSWQuc2FtZV93aXRuZXNzX2V4biBpZCBmX2lkIGluXG4gICAgICAgIHN0YXRlXG4gICAgOztcblxuICAgIGxldCBkZWxldGUgZWxlbWVudCA9IEpzX21hcC5kZWxldGUgdCAoSnMuVW5zYWZlLmluamVjdCBlbGVtZW50KVxuICBlbmRcblxuICBsZXQgY3JlYXRlXG4gICAgICAgICh0eXBlIHMpXG4gICAgICAgID9pbmZvXG4gICAgICAgID8oZGVzdHJveSA6IHMgLT4gJ2VsZW1lbnQgLT4gdW5pdCA9IGZ1biBfIF8gLT4gKCkpXG4gICAgICAgID8odXBkYXRlIDogcyAtPiAnZWxlbWVudCAtPiBzICogJ2VsZW1lbnQgPSBmdW4gcyBlbHQgLT4gcywgZWx0KVxuICAgICAgICB+KGlkIDogKHMgKiAnZWxlbWVudCkgVHlwZV9lcXVhbC5JZC50KVxuICAgICAgICB+KGluaXQgOiB1bml0IC0+IHMgKiAnZWxlbWVudClcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IG9iaiA6IChzLCBfKSB3aWRnZXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICAgIG9iaiMjLnR5cGVfIDo9IEpzLnN0cmluZyBcIldpZGdldFwiO1xuICAgIG9iaiMjLm5hbWUgOj0gKCk7XG4gICAgb2JqIyMuaWQgOj0gaWQ7XG4gICAgb2JqIyMuaW5mbyA6PSBpbmZvO1xuICAgIG9iaiMjLmluaXRcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgIGxldCBzMCwgZG9tX25vZGUgPSBpbml0ICgpIGluXG4gICAgICBTdGF0ZV9rZWVwZXIuc2V0IH5pZCBkb21fbm9kZSBzMDtcbiAgICAgIGRvbV9ub2RlKTtcbiAgICBvYmojIy51cGRhdGVcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJldiBkb21fbm9kZSAtPlxuICAgICAgKCogVGhlIFt1cGRhdGVdIG1ldGhvZCBvZiBbb2JqXSBpcyBvbmx5IGNhbGxlZCBieSB2aXJ0dWFsLWRvbSBhZnRlciBpdCBoYXMgY2hlY2tlZFxuICAgICAgICAgdGhhdCB0aGUgW2lkXXMgb2YgW3ByZXZdIGFuZCBbb2JqXSBhcmUgXCI9PT1cIiBlcXVhbC4gVGh1cyBbc2FtZV93aXRuZXNzX2V4bl0gd2lsbFxuICAgICAgICAgbmV2ZXIgcmFpc2UuICopXG4gICAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzc19leG4gcHJldiMjLmlkIGlkIHdpdGhcbiAgICAgIHwgVHlwZV9lcXVhbC5UIC0+XG4gICAgICAgIGxldCBwcmV2X3N0YXRlID0gU3RhdGVfa2VlcGVyLmdldCB+aWQgZG9tX25vZGUgaW5cbiAgICAgICAgbGV0IHN0YXRlJywgZG9tX25vZGUnID0gdXBkYXRlIHByZXZfc3RhdGUgZG9tX25vZGUgaW5cbiAgICAgICAgU3RhdGVfa2VlcGVyLmRlbGV0ZSBkb21fbm9kZTtcbiAgICAgICAgU3RhdGVfa2VlcGVyLnNldCB+aWQgZG9tX25vZGUnIHN0YXRlJztcbiAgICAgICAgZG9tX25vZGUnKTtcbiAgICBvYmojIy5kZXN0cm95XG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGRvbV9ub2RlIC0+XG4gICAgICBsZXQgcHJldl9zdGF0ZSA9IFN0YXRlX2tlZXBlci5nZXQgfmlkIGRvbV9ub2RlIGluXG4gICAgICBkZXN0cm95IHByZXZfc3RhdGUgZG9tX25vZGU7XG4gICAgICBTdGF0ZV9rZWVwZXIuZGVsZXRlIGRvbV9ub2RlKTtcbiAgICBOb2RlLnRfb2ZfanMgKG9qc19vZl9qcyBvYmopXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4gSnNfb2Zfb2NhbWxcbm1vZHVsZSBWZG9tX3JhdyA9IFJhd1xuXG5sZXQgKCkgPVxuICAoKiB1c2UgdGhlIG5hdGl2ZS1qYXZhc2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIGZsb2F0IC0+IHN0cmluZyB3aXRoIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gIENzc19nZW4uUHJpdmF0ZS5mbG9hdF90b19zdHJpbmdfd2l0aF9maXhlZCA6PSBEb21fZmxvYXQudG9fc3RyaW5nX2ZpeGVkXG47O1xuXG4oKiogVGhpcyBoYXMgMyBraW5kcyBvZiBjb25zdHJ1Y3RvcnMuXG4gICAge3ZcbiAgICAgIC0gY29uc3RydWN0b3JzIGZvciBwcm9wZXJ0aWVzIC8gYXR0cmlidXRlcyBmb3Igd2hpY2ggd2VcbiAgICAgICAgaGF2ZSB3cml0dGVuIGZpcnN0IGNsYXNzIG9jYW1sIHJlcHJlc2VudGF0aW9ucyAoc28gZmFyIG9ubHkgU3R5bGUsXG4gICAgICAgIENsYXNzLCBhbmQgSGFuZGxlcilcblxuICAgICAgLSBUaG9zZSB3aGljaCB3ZSBpbW1lZGlhdGVseSBjb252ZXJ0IGludG8gSnMgY2FsbGVkIFJhdywgd2hpY2hcbiAgICAgICAgaW4gdHVybiBoYXMgdHdvIGNhc2VzOlxuICAgICAgICAtIFByb3BlcnR5IGZvciBwcm9wZXJ0aWVzIG9uIHRoZSBET01cbiAgICAgICAgLSBBdHRyaWJ1dGUgZm9yIGF0dHJpYnV0ZXMgb24gdGhlIERPTVxuXG4gICAgICAtIEhvb2tzLCB3aGljaCByZWdpc3RlciBjYWxsYmFja3Mgb24gcHJvcGVydHkgYWRkaXRpb24gYW5kIHJlbW92YWwuXG4gICAgdn1cblxuICAgIEdlbmVyYWxseSBzcGVha2luZyBvbmUgc2hvdWxkIGF2b2lkIGNyZWF0aW5nIGEgcHJvcGVydHkgb3IgYXR0cmlidXRlXG4gICAgZm9yIHNvbWV0aGluZyBmb3Igd2hpY2ggd2UgaGF2ZSBhIGZpcnN0IGNsYXNzIHJlcHJlc2VudGF0aW9uLlxuKilcblxubW9kdWxlIEV2ZW50X2hhbmRsZXIgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IHR5cGVfaWQgOiAnYSBUeXBlX2VxdWFsLklkLnRcbiAgICAgICAgOyBoYW5kbGVyIDogKCNEb21faHRtbC5ldmVudCBhcyAnYSkgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50XG4gICAgICAgIH1cbiAgICAgICAgLT4gdFxuXG4gIGxldCBjb21iaW5lXG4gICAgICAgIChUIHsgdHlwZV9pZCA9IGx0aWQ7IGhhbmRsZXIgPSBsaGFuZGxlciB9KVxuICAgICAgICAoVCB7IHR5cGVfaWQgPSBydGlkOyBoYW5kbGVyID0gcmhhbmRsZXIgfSBhcyByaWdodClcbiAgICA9XG4gICAgKCogSWYgdGhleSBhcmUgbm90IHRoZSBzYW1lIHdpdG5lc3MsIHRoZW4gaXQgaXMgYSBidWcgaW4gdmlydHVhbF9kb20sIHNpbmNlXG4gICAgICAgd2UgZG8gbm90IGV4cG9zZSBbb25dIGFueW1vcmUgd2hpY2ggbWVhbnMgdGhpcyBsaWJyYXJ5IGNhbiBkZXRlcm1pbmVkIHRoZVxuICAgICAgIFtUeXBlX2VxdWFsLklkXSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZXZlbnQuIHZpcnR1YWxfZG9tIG1haW50YWlucyB0aGVcbiAgICAgICBpbnZhcmlhbnQgdGhhdCBhbnkgdHdvIGV2ZW50cyB3aXRoIHRoZSBzYW1lIG5hbWUgd2lsbCBwcm9kdWNlIGhhbmRsZXJzXG4gICAgICAgdGhhdCBoYXZlIHRoZSBzYW1lIFtUeXBlX2VxdWFsLklkXS4gKilcbiAgICBtYXRjaCBUeXBlX2VxdWFsLklkLnNhbWVfd2l0bmVzcyBsdGlkIHJ0aWQgd2l0aFxuICAgIHwgU29tZSBUIC0+XG4gICAgICBUXG4gICAgICAgIHsgdHlwZV9pZCA9IGx0aWRcbiAgICAgICAgOyBoYW5kbGVyID1cbiAgICAgICAgICAgIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICAgICAgIEVmZmVjdC5zZXF1ZW5jZV9hc19zaWJsaW5nIChsaGFuZGxlciB2YWx1ZSkgfnVubGVzc19zdG9wcGVkOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgcmhhbmRsZXIgdmFsdWUpKVxuICAgICAgICB9XG4gICAgfCBOb25lIC0+XG4gICAgICBlcHJpbnRfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIkJVRyEgIFR5cGUtaWRzIGZvciBldmVudCBoYW5kbGVycyBkaWZmZXJcIlxuICAgICAgICAgICAgKGx0aWQgOiBfIFR5cGVfZXF1YWwuSWQudClcbiAgICAgICAgICAgIChydGlkIDogXyBUeXBlX2VxdWFsLklkLnQpXTtcbiAgICAgIHJpZ2h0XG4gIDs7XG5lbmRcblxudHlwZSB0ID1cbiAgfCBQcm9wZXJ0eSBvZlxuICAgICAgeyBzdXBwcmVzc19tZXJnZV93YXJuaW5ncyA6IGJvb2xcbiAgICAgIDsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2YWx1ZSA6IEpzLlVuc2FmZS5hbnlcbiAgICAgIH1cbiAgfCBBdHRyaWJ1dGUgb2ZcbiAgICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgOiBib29sXG4gICAgICA7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgdmFsdWUgOiBKcy5VbnNhZmUuYW55XG4gICAgICB9XG4gIHwgSGFuZGxlciBvZlxuICAgICAgeyBuYW1lIDogc3RyaW5nXG4gICAgICA7IGhhbmRsZXIgOiBFdmVudF9oYW5kbGVyLnRcbiAgICAgIH1cbiAgfCBIb29rIG9mXG4gICAgICB7IG5hbWUgOiBzdHJpbmdcbiAgICAgIDsgaG9vayA6IEhvb2tzLnRcbiAgICAgIH1cbiAgfCBTdHlsZSBvZiBDc3NfZ2VuLnRcbiAgfCBDbGFzcyBvZiAoc3RyaW5nLCBTdHJpbmcuY29tcGFyYXRvcl93aXRuZXNzKSBTZXQudFxuICB8IE1hbnkgb2YgdCBsaXN0XG4gIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyBvZlxuICAgICAgdCBsaXN0ICogKENzc19nZW4udCAtPiBDc3NfZ2VuLnQpICogKFN0cmluZy5TZXQudCAtPiBTdHJpbmcuU2V0LnQpXG4gIHwgTWFueV93aXRob3V0X21lcmdlIG9mIHQgbGlzdFxuXG5sZXQgY3JlYXRlIG5hbWUgdmFsdWUgPVxuICBBdHRyaWJ1dGVcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2U7IG5hbWU7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIHZhbHVlKSB9XG47O1xuXG5sZXQgY3JlYXRlX2Zsb2F0IG5hbWUgdmFsdWUgPVxuICBBdHRyaWJ1dGVcbiAgICB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzID0gZmFsc2VcbiAgICA7IG5hbWVcbiAgICA7IHZhbHVlID0gSnMuVW5zYWZlLmluamVjdCAoRG9tX2Zsb2F0LnRvX2pzX3N0cmluZyB2YWx1ZSlcbiAgICB9XG47O1xuXG5sZXQgcHJvcGVydHkgbmFtZSB2YWx1ZSA9IFByb3BlcnR5IHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgfVxuXG5sZXQgc3RyaW5nX3Byb3BlcnR5IG5hbWUgdmFsdWUgPVxuICBQcm9wZXJ0eVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdmFsdWUpIH1cbjs7XG5cbmxldCBib29sX3Byb3BlcnR5IG5hbWUgdmFsdWUgPVxuICBQcm9wZXJ0eVxuICAgIHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmYWxzZTsgbmFtZTsgdmFsdWUgPSBKcy5VbnNhZmUuaW5qZWN0IChKcy5ib29sIHZhbHVlKSB9XG47O1xuXG5sZXQgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSBmdW5jdGlvblxuICB8IEF0dHJpYnV0ZSBhdHRyaWJ1dGUgLT4gQXR0cmlidXRlIHsgYXR0cmlidXRlIHdpdGggc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSB0cnVlIH1cbiAgfCBQcm9wZXJ0eSBwcm9wZXJ0eSAtPiBQcm9wZXJ0eSB7IHByb3BlcnR5IHdpdGggc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3MgPSB0cnVlIH1cbiAgfCB0IC0+IHRcbjs7XG5cbmxldCBjcmVhdGVfaG9vayBuYW1lIGhvb2sgPSBIb29rIHsgbmFtZTsgaG9vayB9XG5sZXQgbWFueSBhdHRycyA9IE1hbnkgYXR0cnNcbmxldCBtYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgPSBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnNcbmxldCBlbXB0eSA9IE1hbnkgW11cbmxldCBjb21iaW5lIGxlZnQgcmlnaHQgPSBNYW55IFsgbGVmdDsgcmlnaHQgXVxubGV0ICggQCApID0gY29tYmluZVxuXG5leHRlcm5hbCBvanNfb2ZfYW55IDogSnMuVW5zYWZlLmFueSAtPiBHZW5fanNfYXBpLk9qcy50ID0gXCIlaWRlbnRpdHlcIlxuXG5tb2R1bGUgVW5tZXJnZWRfd2FybmluZ19tb2RlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOb193YXJuaW5nc1xuICAgIHwgQWxsX3dhcm5pbmdzXG4gICAgfCBTdG9wX2FmdGVyX3F1b3RhIG9mIGludFxuXG4gIGxldCB3YXJuaW5nX2NvdW50ID0gcmVmIDBcbiAgbGV0IGN1cnJlbnQgPSByZWYgKFN0b3BfYWZ0ZXJfcXVvdGEgMTAwKVxuXG4gIGxldCB3YXJuX3MgcyA9XG4gICAgaW5jciB3YXJuaW5nX2NvdW50O1xuICAgIG1hdGNoICFjdXJyZW50IHdpdGhcbiAgICB8IE5vX3dhcm5pbmdzIC0+ICgpXG4gICAgfCBBbGxfd2FybmluZ3MgLT4gZXByaW50X3Mgc1xuICAgIHwgU3RvcF9hZnRlcl9xdW90YSBxdW90YSAtPlxuICAgICAgbGV0IHdhcm5pbmdfY291bnQgPSAhd2FybmluZ19jb3VudCBpblxuICAgICAgaWYgd2FybmluZ19jb3VudCA8PSBxdW90YVxuICAgICAgdGhlbiAoXG4gICAgICAgIGVwcmludF9zIHM7XG4gICAgICAgIGlmIHdhcm5pbmdfY291bnQgPSBxdW90YVxuICAgICAgICB0aGVuXG4gICAgICAgICAgZXByaW50X3NcbiAgICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgICBcIldBUk5JTkc6IHJlYWNoZWQgd2FybmluZyBtZXNzYWdlIHF1b3RhOyBubyBtb3JlIG1lc3NhZ2VzIHdpbGwgYmUgcHJpbnRlZFwiXG4gICAgICAgICAgICAgICAgKHF1b3RhIDogaW50KV0pXG4gIDs7XG5cbiAgbW9kdWxlIEZvcl90ZXN0aW5nID0gc3RydWN0XG4gICAgbGV0IHJlc2V0X3dhcm5pbmdfY291bnQgKCkgPSB3YXJuaW5nX2NvdW50IDo9IDBcbiAgZW5kXG5lbmRcblxudHlwZSBtZXJnZSA9XG4gIHsgc3R5bGVzIDogQ3NzX2dlbi50XG4gIDsgY2xhc3NlcyA6IFNldC5NKFN0cmluZykudFxuICA7IGhhbmRsZXJzIDogRXZlbnRfaGFuZGxlci50IE1hcC5NKFN0cmluZykudFxuICA7IGhvb2tzIDogSG9va3MudCBNYXAuTShTdHJpbmcpLnRcbiAgfVxuXG5sZXQgY29tYmluaW5nX21hcF9hZGQgbWFwIGtleSB2YWx1ZSB+Y29tYmluZSA9XG4gIE1hcC51cGRhdGUgbWFwIGtleSB+ZjooZnVuY3Rpb25cbiAgICB8IFNvbWUgZXhpc3RpbmdfdmFsdWUgLT4gY29tYmluZSB+a2V5IGV4aXN0aW5nX3ZhbHVlIHZhbHVlXG4gICAgfCBOb25lIC0+IHZhbHVlKVxuOztcblxubGV0IGVtcHR5X21lcmdlID1cbiAgeyBzdHlsZXMgPSBDc3NfZ2VuLmVtcHR5XG4gIDsgY2xhc3NlcyA9IFNldC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgOyBoYW5kbGVycyA9IE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgOyBob29rcyA9IE1hcC5lbXB0eSAobW9kdWxlIFN0cmluZylcbiAgfVxuOztcblxubGV0IHRvX3JhdyBhdHRyID1cbiAgbGV0IGF0dHJzID0gWyBhdHRyIF0gaW5cbiAgKCogV2hlbiBpbnB1dCBlbGVtZW50cyBoYXZlIHRoZWlyIHZhbHVlIHNldCB0byB3aGF0IGl0IGFscmVhZHkgaXNcbiAgICAgdGhlIGN1cnNvciBnZXRzIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIGZpZWxkIGV2ZW4gd2hlbiB0aGUgdXNlclxuICAgICBpcyBlZGl0aW5nIGluIHRoZSBtaWRkbGUuIFNvZnRTZXRIb29rIChmcm9tIC4vc29mdC1zZXQtaG9vay5qcylcbiAgICAgY29tcGFyZXMgYmVmb3JlIHNldHRpbmcsIGF2b2lkaW5nIHRoZSBwcm9ibGVtIGp1c3QgbGlrZSBpblxuICAgICBodHRwczovL2dpdGh1Yi5jb20vTWF0dC1Fc2NoL3ZpcnR1YWwtZG9tL2Jsb2IvOTQ3ZWNmOTJiNjdkMjViYjY5M2EwZjYyNWZhOGU5MGMwOTk4ODdkNS92aXJ0dWFsLWh5cGVyc2NyaXB0L2luZGV4LmpzI0w0My1MNTFcblxuICAgICBub3RlIHRoYXQgRWxtJ3MgdmlydHVhbC1kb20gaW5jbHVkZXMgYSB3b3JrYXJvdW5kIGZvciB0aGlzIHNvXG4gICAgIGlmIHdlIHN3aXRjaCB0byB0aGF0IHRoZSB3b3JrYXJvdW5kIGhlcmUgd2lsbCBiZSB1bm5lY2Vzc2FyeS5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL2VsbS1sYW5nL3ZpcnR1YWwtZG9tL2Jsb2IvMTdiMzBmYjdkZTQ4NjcyNTY1ZDYyMjdkMzNjMDE3NmYwNzU3ODZkYi9zcmMvTmF0aXZlL1ZpcnR1YWxEb20uanMjTDQzNC1MNDM5XG4gICopXG4gIGxldCBhdHRyc19vYmogOiBWZG9tX3Jhdy5BdHRycy50ID0gVmRvbV9yYXcuQXR0cnMuY3JlYXRlICgpIGluXG4gICgqIFt0YWtlX3NlY29uZF8qXSBpcyB0aGUgdHJpdmlhbCBtZXJnZSBmdW5jdGlvbiAoaS5lLiBubyBtZXJnZSBhdCBhbGwpOyBpdFxuICAgICB0YWtlcyB0d28gYXR0cmlidXRlcyBvZiB0aGUgc2FtZSBraW5kLCBpZ25vcmVzIGEgZmlyc3QsIGFuZCBlbWl0c1xuICAgICBhIHdhcm5pbmcgaWYgW3dhcm5fYWJvdXRfdW5tZXJnZWRfYXR0cmlidXRlc10gaXMgZW5hYmxlZC4gKilcbiAgbGV0IHRha2Vfc2Vjb25kX3N0eWxlcyBmaXJzdCBzZWNvbmQgPVxuICAgIGlmIG5vdCAoQ3NzX2dlbi5pc19lbXB0eSBmaXJzdClcbiAgICB0aGVuXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBzdHlsZXNcIiAoZmlyc3QgOiBDc3NfZ2VuLnQpIChzZWNvbmQgOiBDc3NfZ2VuLnQpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2NsYXNzZXMgZmlyc3Qgc2Vjb25kID1cbiAgICBpZiBub3QgKFNldC5pc19lbXB0eSBmaXJzdClcbiAgICB0aGVuXG4gICAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBjbGFzc2VzXCIgKGZpcnN0IDogU3RyaW5nLlNldC50KSAoc2Vjb25kIDogU3RyaW5nLlNldC50KV07XG4gICAgc2Vjb25kXG4gIGluXG4gIGxldCB0YWtlX3NlY29uZF9oYW5kbGVyIH5rZXk6bmFtZSBfZmlyc3Qgc2Vjb25kID1cbiAgICBVbm1lcmdlZF93YXJuaW5nX21vZGUud2Fybl9zXG4gICAgICBbJW1lc3NhZ2UgXCJXQVJOSU5HOiBub3QgY29tYmluaW5nIGhhbmRsZXJzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICBzZWNvbmRcbiAgaW5cbiAgbGV0IHRha2Vfc2Vjb25kX2hvb2sgfmtleTpuYW1lIF9maXJzdCBzZWNvbmQgPVxuICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3MgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBob29rc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgc2Vjb25kXG4gIGluXG4gICgqIFdlIG1lcmdlIGF0dHJpYnV0ZXMgd2hlbiB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSByYXcgYXR0cmlidXRlIG9iamVjdCxcbiAgICAgcmF0aGVyIHRoYW4gd2hlbiB0aGUgdXNlci1mYWNpbmcgbWVyZ2UgZnVuY3Rpb25zIChbbWFueV0sIFtjb21iaW5lXSwgYW5kXG4gICAgIFtAXSkgYXJlIGNhbGxlZC4gVGhpcyBzdHJhdGVneSBpcyBiZXR0ZXIgaW4gYm90aCBzcGVlZCBhbmQgbWVtb3J5IHVzYWdlLFxuICAgICBzaW5jZSBpdCBtZWFucyB3ZSBkbyBub3QgbmVlZCB0byBjb25jYXRlbmF0ZSB0aGUgbGlzdCBvZiBcInVubWVyZ2VhYmxlXCJcbiAgICAgYXR0cmlidXRlcyAoUHJvcGVydHkgYW5kIEF0dHJpYnV0ZSk7IGluc3RlYWQsIHdlIGNhbiBpdGVyYXRlIHRocm91Z2ggdGhlXG4gICAgIHRyZWUgb2YgYXR0cmlidXRlcyBhbmQgZWFnZXJseSB3cml0ZSB1bm1lcmdlYWJsZSBhdHRyaWJ1dGVzIHRvIHRoZVxuICAgICBhdHRyaWJ1dGUgb2JqZWN0IGFzIHdlIGZpbmQgdGhlbS4gSWYgdHdvIHVubWVyZ2VhYmxlIGF0dHJpYnV0ZXMgaGF2ZSB0aGVcbiAgICAgc2FtZSBuYW1lLCB0aGUgc2Vjb25kIHdpbGwgc2ltcGx5IG92ZXJ3cml0ZSB0aGUgZmlyc3QsIGFzIGRlc2lyZWQuXG5cbiAgICAgSW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIHRoZSBbTXVsdGldIG1vZHVsZSAodGhhdCBpcyxcbiAgICAgaXQgbXVzdCBiZSBwb3NzaWJsZSB0byBtZXJnZSBjbGFzc2VzIGFuZCBzdHlsZXMsIGJ1dCBub3QgaG9va3MgYW5kXG4gICAgIGhhbmRsZXJzKSwgd2UgaW50cm9kdWNlIHRoZSB3b3JrYXJvdW5kIGNvbnN0cnVjdG9yXG4gICAgIFtNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXS5cblxuICAgICBUaGVyZSBhcmUgdGh1cyB0aHJlZSBjYXNlcyB0aGF0IGVhY2ggaGF2ZSBkaWZmZXJlbnQgbWVyZ2UgYmVoYXZpb3JzOlxuICAgICAtIFNpbXBsZSBsaXN0cyAtIG5vIG1lcmdpbmdcbiAgICAgLSBMaXN0cyB3cmFwcGVkIGluIGEgW01hbnldIC0gbWVyZ2VzIGNsYXNzZXMsIHN0eWxlcywgaG9va3MsIGFuZCBoYW5kbGVyc1xuICAgICAtIExpc3RzIHdyYXBwZWQgaW4gYSBbTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlc10gLSBtZXJnZXMgY2xhc3NlcyBhbmQgc3R5bGVzXG5cbiAgICAgVG8gYXZvaWQgZHVwbGljYXRpbmcgdGhlIG1hdGNoIGV4cHJlc3Npb24gbG9naWMsIHdlIHBhcmVtZXRlcml6ZSBpdCBieSB0aGVcbiAgICAgbWVyZ2luZyBiZWhhdmlvciwgc2luY2UgXCJubyBtZXJnZVwiIHJlYWxseSBtZWFucyBcIm1lcmdlIGJ5IHRha2luZyB0aGVcbiAgICAgc2Vjb25kIG9uZVwiLiAqKVxuICBsZXQgcmVjIG1lcmdlIH5jb21iaW5lX2hvb2sgfmNvbWJpbmVfaGFuZGxlciB+Y29tYmluZV9zdHlsZXMgfmNvbWJpbmVfY2xhc3NlcyBhY2MgPVxuICAgIExpc3QuZm9sZCB+aW5pdDphY2MgfmY6KGZ1biBhY2MgYXR0ciAtPlxuICAgICAgbWF0Y2ggYXR0ciB3aXRoXG4gICAgICB8IFByb3BlcnR5IHsgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3M7IG5hbWU7IHZhbHVlIH0gLT5cbiAgICAgICAgaWYgUmF3LkF0dHJzLmhhc19wcm9wZXJ0eSBhdHRyc19vYmogbmFtZSAmJiBub3Qgc3VwcHJlc3NfbWVyZ2Vfd2FybmluZ3NcbiAgICAgICAgdGhlblxuICAgICAgICAgIFVubWVyZ2VkX3dhcm5pbmdfbW9kZS53YXJuX3NcbiAgICAgICAgICAgIFslbWVzc2FnZSBcIldBUk5JTkc6IG5vdCBjb21iaW5pbmcgcHJvcGVydGllc1wiIChuYW1lIDogc3RyaW5nKV07XG4gICAgICAgIChtYXRjaCBuYW1lIHdpdGhcbiAgICAgICAgIHwgXCJ2YWx1ZVwiIC0+XG4gICAgICAgICAgIGxldCBzb2Z0U2V0SG9vayB4IDogR2VuX2pzX2FwaS5PanMudCA9IEpzLlVuc2FmZS5nbG9iYWwgIyMgU29mdFNldEhvb2sgeCBpblxuICAgICAgICAgICBsZXQgdmFsdWUgPSBzb2Z0U2V0SG9vayB2YWx1ZSBpblxuICAgICAgICAgICBWZG9tX3Jhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIFwidmFsdWVcIiB2YWx1ZVxuICAgICAgICAgfCBuYW1lIC0+IFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgKG9qc19vZl9hbnkgdmFsdWUpKTtcbiAgICAgICAgYWNjXG4gICAgICB8IEF0dHJpYnV0ZSB7IHN1cHByZXNzX21lcmdlX3dhcm5pbmdzOyBuYW1lOyB2YWx1ZSB9IC0+XG4gICAgICAgIGlmIFJhdy5BdHRycy5oYXNfYXR0cmlidXRlIGF0dHJzX29iaiBuYW1lICYmIG5vdCBzdXBwcmVzc19tZXJnZV93YXJuaW5nc1xuICAgICAgICB0aGVuXG4gICAgICAgICAgVW5tZXJnZWRfd2FybmluZ19tb2RlLndhcm5fc1xuICAgICAgICAgICAgWyVtZXNzYWdlIFwiV0FSTklORzogbm90IGNvbWJpbmluZyBhdHRyaWJ1dGVzXCIgKG5hbWUgOiBzdHJpbmcpXTtcbiAgICAgICAgUmF3LkF0dHJzLnNldF9hdHRyaWJ1dGUgYXR0cnNfb2JqIG5hbWUgKG9qc19vZl9hbnkgdmFsdWUpO1xuICAgICAgICBhY2NcbiAgICAgIHwgU3R5bGUgbmV3X3N0eWxlcyAtPiB7IGFjYyB3aXRoIHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgbmV3X3N0eWxlcyB9XG4gICAgICB8IENsYXNzIG5ld19jbGFzc2VzIC0+XG4gICAgICAgIHsgYWNjIHdpdGggY2xhc3NlcyA9IGNvbWJpbmVfY2xhc3NlcyBhY2MuY2xhc3NlcyBuZXdfY2xhc3NlcyB9XG4gICAgICB8IEhvb2sgeyBuYW1lOyBob29rIH0gLT5cbiAgICAgICAgeyBhY2Mgd2l0aCBob29rcyA9IGNvbWJpbmluZ19tYXBfYWRkIGFjYy5ob29rcyBuYW1lIGhvb2sgfmNvbWJpbmU6Y29tYmluZV9ob29rIH1cbiAgICAgIHwgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgfSAtPlxuICAgICAgICB7IGFjYyB3aXRoXG4gICAgICAgICAgaGFuZGxlcnMgPVxuICAgICAgICAgICAgY29tYmluaW5nX21hcF9hZGQgYWNjLmhhbmRsZXJzIG5hbWUgaGFuZGxlciB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgfVxuICAgICAgfCBNYW55IGF0dHJzIC0+XG4gICAgICAgIGxldCBzdWJfbWVyZ2UgPVxuICAgICAgICAgIG1lcmdlXG4gICAgICAgICAgICB+Y29tYmluZV9ob29rOihmdW4gfmtleTpfIC0+IEhvb2tzLmNvbWJpbmUpXG4gICAgICAgICAgICB+Y29tYmluZV9oYW5kbGVyOihmdW4gfmtleTpfIC0+IEV2ZW50X2hhbmRsZXIuY29tYmluZSlcbiAgICAgICAgICAgIH5jb21iaW5lX3N0eWxlczpDc3NfZ2VuLmNvbWJpbmVcbiAgICAgICAgICAgIH5jb21iaW5lX2NsYXNzZXM6U2V0LnVuaW9uXG4gICAgICAgICAgICBlbXB0eV9tZXJnZVxuICAgICAgICAgICAgYXR0cnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdHlsZXMgPSBjb21iaW5lX3N0eWxlcyBhY2Muc3R5bGVzIHN1Yl9tZXJnZS5zdHlsZXNcbiAgICAgICAgOyBjbGFzc2VzID0gY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzXG4gICAgICAgIDsgaGFuZGxlcnMgPVxuICAgICAgICAgICAgTWFwLm1lcmdlX3NrZXdlZCBhY2MuaGFuZGxlcnMgc3ViX21lcmdlLmhhbmRsZXJzIH5jb21iaW5lOmNvbWJpbmVfaGFuZGxlclxuICAgICAgICA7IGhvb2tzID0gTWFwLm1lcmdlX3NrZXdlZCBhY2MuaG9va3Mgc3ViX21lcmdlLmhvb2tzIH5jb21iaW5lOmNvbWJpbmVfaG9va1xuICAgICAgICB9XG4gICAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBtYXBfc3R5bGVzLCBtYXBfY2xhc3NlcykgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6Q3NzX2dlbi5jb21iaW5lXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOlNldC51bmlvblxuICAgICAgICAgICAgZW1wdHlfbWVyZ2VcbiAgICAgICAgICAgIGF0dHJzXG4gICAgICAgIGluXG4gICAgICAgIHsgc3R5bGVzID0gbWFwX3N0eWxlcyAoY29tYmluZV9zdHlsZXMgYWNjLnN0eWxlcyBzdWJfbWVyZ2Uuc3R5bGVzKVxuICAgICAgICA7IGNsYXNzZXMgPSBtYXBfY2xhc3NlcyAoY29tYmluZV9jbGFzc2VzIGFjYy5jbGFzc2VzIHN1Yl9tZXJnZS5jbGFzc2VzKVxuICAgICAgICA7IGhhbmRsZXJzID1cbiAgICAgICAgICAgIE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhhbmRsZXJzIHN1Yl9tZXJnZS5oYW5kbGVycyB+Y29tYmluZTpjb21iaW5lX2hhbmRsZXJcbiAgICAgICAgOyBob29rcyA9IE1hcC5tZXJnZV9za2V3ZWQgYWNjLmhvb2tzIHN1Yl9tZXJnZS5ob29rcyB+Y29tYmluZTpjb21iaW5lX2hvb2tcbiAgICAgICAgfVxuICAgICAgfCBNYW55X3dpdGhvdXRfbWVyZ2UgYXR0cnMgLT5cbiAgICAgICAgbGV0IHN1Yl9tZXJnZSA9XG4gICAgICAgICAgbWVyZ2VcbiAgICAgICAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICAgICAgICB+Y29tYmluZV9zdHlsZXM6dGFrZV9zZWNvbmRfc3R5bGVzXG4gICAgICAgICAgICB+Y29tYmluZV9jbGFzc2VzOnRha2Vfc2Vjb25kX2NsYXNzZXNcbiAgICAgICAgICAgIGVtcHR5X21lcmdlXG4gICAgICAgICAgICBhdHRyc1xuICAgICAgICBpblxuICAgICAgICB7IHN0eWxlcyA9IGNvbWJpbmVfc3R5bGVzIGFjYy5zdHlsZXMgc3ViX21lcmdlLnN0eWxlc1xuICAgICAgICA7IGNsYXNzZXMgPSBjb21iaW5lX2NsYXNzZXMgYWNjLmNsYXNzZXMgc3ViX21lcmdlLmNsYXNzZXNcbiAgICAgICAgOyBoYW5kbGVycyA9XG4gICAgICAgICAgICBNYXAubWVyZ2Vfc2tld2VkIGFjYy5oYW5kbGVycyBzdWJfbWVyZ2UuaGFuZGxlcnMgfmNvbWJpbmU6Y29tYmluZV9oYW5kbGVyXG4gICAgICAgIDsgaG9va3MgPSBNYXAubWVyZ2Vfc2tld2VkIGFjYy5ob29rcyBzdWJfbWVyZ2UuaG9va3MgfmNvbWJpbmU6Y29tYmluZV9ob29rXG4gICAgICAgIH0pXG4gIGluXG4gIGxldCBtZXJnZSA9XG4gICAgbWVyZ2VcbiAgICAgIH5jb21iaW5lX2hvb2s6dGFrZV9zZWNvbmRfaG9va1xuICAgICAgfmNvbWJpbmVfaGFuZGxlcjp0YWtlX3NlY29uZF9oYW5kbGVyXG4gICAgICB+Y29tYmluZV9zdHlsZXM6dGFrZV9zZWNvbmRfc3R5bGVzXG4gICAgICB+Y29tYmluZV9jbGFzc2VzOnRha2Vfc2Vjb25kX2NsYXNzZXNcbiAgICAgIGVtcHR5X21lcmdlXG4gICAgICBhdHRyc1xuICBpblxuICBNYXAuaXRlcmkgbWVyZ2UuaG9va3MgfmY6KGZ1biB+a2V5Om5hbWUgfmRhdGE6aG9vayAtPlxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHkgYXR0cnNfb2JqIG5hbWUgKG9qc19vZl9hbnkgKEhvb2tzLnBhY2sgaG9vaykpKTtcbiAgTWFwLml0ZXJpIG1lcmdlLmhhbmRsZXJzIH5mOihmdW4gfmtleTpuYW1lIH5kYXRhOihFdmVudF9oYW5kbGVyLlQgeyBoYW5kbGVyOyBfIH0pIC0+XG4gICAgbGV0IGYgZSA9XG4gICAgICBFZmZlY3QuRXhwZXJ0LmhhbmRsZSBlIChoYW5kbGVyIGUpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIFJhdy5BdHRycy5zZXRfcHJvcGVydHlcbiAgICAgIGF0dHJzX29ialxuICAgICAgKFwib25cIiBeIG5hbWUpXG4gICAgICAob2pzX29mX2FueSAoSnMuVW5zYWZlLmluamVjdCAoRG9tLmhhbmRsZXIgZikpKSk7XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IChDc3NfZ2VuLmlzX2VtcHR5IG1lcmdlLnN0eWxlcylcbiAgICB0aGVuIChcbiAgICAgIGxldCBwcm9wcyA9IENzc19nZW4udG9fc3RyaW5nX2xpc3QgbWVyZ2Uuc3R5bGVzIGluXG4gICAgICBsZXQgb2JqID0gR2VuX2pzX2FwaS5PanMuZW1wdHlfb2JqICgpIGluXG4gICAgICBMaXN0Lml0ZXIgcHJvcHMgfmY6KGZ1biAoaywgdikgLT5cbiAgICAgICAgR2VuX2pzX2FwaS5PanMuc2V0X3Byb3BfYXNjaWkgb2JqIGsgKEdlbl9qc19hcGkuT2pzLnN0cmluZ190b19qcyB2KSk7XG4gICAgICBSYXcuQXR0cnMuc2V0X3Byb3BlcnR5IGF0dHJzX29iaiBcInN0eWxlXCIgb2JqKVxuICBpblxuICBsZXQgKCkgPVxuICAgIGlmIFNldC5pc19lbXB0eSBtZXJnZS5jbGFzc2VzXG4gICAgdGhlbiAoKVxuICAgIGVsc2VcbiAgICAgIFJhdy5BdHRycy5zZXRfYXR0cmlidXRlXG4gICAgICAgIGF0dHJzX29ialxuICAgICAgICBcImNsYXNzXCJcbiAgICAgICAgKEdlbl9qc19hcGkuT2pzLnN0cmluZ190b19qcyAoU3RyaW5nLmNvbmNhdCAoU2V0LnRvX2xpc3QgbWVyZ2UuY2xhc3NlcykgfnNlcDpcIiBcIikpXG4gIGluXG4gIGF0dHJzX29ialxuOztcblxubGV0IHRvX3JhdyBhdHRyID1cbiAgbWF0Y2ggYXR0ciB3aXRoXG4gIHwgTWFueSBbXSB8IE1hbnlfd2l0aG91dF9tZXJnZSBbXSAtPiBSYXcuQXR0cnMuY3JlYXRlICgpXG4gIHwgYXR0ciAtPiB0b19yYXcgYXR0clxuOztcblxubGV0IHN0eWxlIGNzcyA9IFN0eWxlIGNzc1xuXG5sZXQgdmFsaWRfY2xhc3NfbmFtZSBzID1cbiAgbGV0IGludmFsaWQgPSBTdHJpbmcuaXNfZW1wdHkgcyB8fCBTdHJpbmcuZXhpc3RzIHMgfmY6Q2hhci5pc193aGl0ZXNwYWNlIGluXG4gIG5vdCBpbnZhbGlkXG47O1xuXG5sZXQldGVzdCBcInZhbGlkXCIgPSB2YWxpZF9jbGFzc19uYW1lIFwiZm9vLWJhclwiXG5sZXQldGVzdCBcImludmFsaWQtZW1wdHlcIiA9IG5vdCAodmFsaWRfY2xhc3NfbmFtZSBcIlwiKVxubGV0JXRlc3QgXCJpbnZhbGlkLXNwYWNlXCIgPSBub3QgKHZhbGlkX2NsYXNzX25hbWUgXCJmb28gYmFyXCIpXG5cbmxldCBjbGFzc18gY2xhc3NuYW1lID1cbiAgaWYgbm90ICh2YWxpZF9jbGFzc19uYW1lIGNsYXNzbmFtZSlcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcImludmFsaWQgY2xhc3NuYW1lXCIgKGNsYXNzbmFtZSA6IHN0cmluZyldO1xuICBDbGFzcyAoU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZykgY2xhc3NuYW1lKVxuOztcblxubGV0IGNsYXNzZXMnIGNsYXNzZXMgPSBDbGFzcyBjbGFzc2VzXG5cbmxldCBjbGFzc2VzIGNsYXNzbmFtZXMgPVxuICBpZiBub3QgKExpc3QuZm9yX2FsbCB+Zjp2YWxpZF9jbGFzc19uYW1lIGNsYXNzbmFtZXMpXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJpbnZhbGlkIGNsYXNzbmFtZXNcIiAoY2xhc3NuYW1lcyA6IHN0cmluZyBsaXN0KV07XG4gIGNsYXNzZXMnIChTZXQub2ZfbGlzdCAobW9kdWxlIFN0cmluZykgY2xhc3NuYW1lcylcbjs7XG5cbmxldCBpZCBzID0gY3JlYXRlIFwiaWRcIiBzXG5sZXQgbmFtZSBzID0gY3JlYXRlIFwibmFtZVwiIHNcbmxldCBocmVmIHIgPSBjcmVhdGUgXCJocmVmXCIgclxubGV0IHRhcmdldCBzID0gY3JlYXRlIFwidGFyZ2V0XCIgc1xubGV0IGNoZWNrZWQgPSBjcmVhdGUgXCJjaGVja2VkXCIgXCJcIlxubGV0IHNlbGVjdGVkID0gY3JlYXRlIFwic2VsZWN0ZWRcIiBcIlwiXG5sZXQgaGlkZGVuID0gY3JlYXRlIFwiaGlkZGVuXCIgXCJcIlxubGV0IHJlYWRvbmx5ID0gY3JlYXRlIFwicmVhZG9ubHlcIiBcIlwiXG5sZXQgZGlzYWJsZWQgPSBjcmVhdGUgXCJkaXNhYmxlZFwiIFwiXCJcbmxldCBwbGFjZWhvbGRlciB4ID0gY3JlYXRlIFwicGxhY2Vob2xkZXJcIiB4XG5cbmxldCBhdXRvZm9jdXMgPSBmdW5jdGlvblxuICB8IHRydWUgLT4gY3JlYXRlIFwiYXV0b2ZvY3VzXCIgXCJcIlxuICB8IGZhbHNlIC0+IGVtcHR5XG47O1xuXG5sZXQgZm9yXyB4ID0gY3JlYXRlIFwiZm9yXCIgeFxubGV0IHR5cGVfIHggPSBjcmVhdGUgXCJ0eXBlXCIgeFxubGV0IHZhbHVlIHggPSBjcmVhdGUgXCJ2YWx1ZVwiIHhcbmxldCB2YWx1ZV9wcm9wIHggPSBzdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIHhcbmxldCB0YWJpbmRleCB4ID0gY3JlYXRlIFwidGFiaW5kZXhcIiAoSW50LnRvX3N0cmluZyB4KVxubGV0IHRpdGxlIHggPSBjcmVhdGUgXCJ0aXRsZVwiIHhcbmxldCBzcmMgeCA9IGNyZWF0ZSBcInNyY1wiIHhcbmxldCBtaW4geCA9IGNyZWF0ZV9mbG9hdCBcIm1pblwiIHhcbmxldCBtYXggeCA9IGNyZWF0ZV9mbG9hdCBcIm1heFwiIHhcbmxldCBjb2xzcGFuIHggPSBjcmVhdGUgXCJjb2xzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCByb3dzcGFuIHggPSBjcmVhdGUgXCJyb3dzcGFuXCIgKEludC50b19zdHJpbmcgeClcbmxldCBkcmFnZ2FibGUgYiA9IGNyZWF0ZSBcImRyYWdnYWJsZVwiIChCb29sLnRvX3N0cmluZyBiKVxuXG5tb2R1bGUgVHlwZV9pZCA9IHN0cnVjdFxuICAoKiBXZSBwcm92aWRlIGEgdHJpdmlhbCBbdG9fc2V4cF0gZnVuY3Rpb24gc2luY2Ugd2Ugb25seSB3YW50XG4gICAgIHRvIHVuaWZ5IHR5cGUgaWRzIGFuZCBub3QgY29udmVydCB0eXBlcyB0byBpZHMgKilcbiAgbGV0IGNyZWF0ZSBuYW1lID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWUgKGZ1biBfIC0+IFNleHBsaWIuU2V4cC5MaXN0IFtdKVxuICBsZXQgKGV2ZW50IDogRG9tX2h0bWwuZXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImV2ZW50XCJcbiAgbGV0IChmb2N1cyA6IERvbV9odG1sLmZvY3VzRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImZvY3VzRXZlbnRcIlxuICBsZXQgKG1vdXNlIDogRG9tX2h0bWwubW91c2VFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwibW91c2VFdmVudFwiXG4gIGxldCAoa2V5Ym9hcmQgOiBEb21faHRtbC5rZXlib2FyZEV2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJrZXlib2FyZEV2ZW50XCJcbiAgbGV0IChzdWJtaXQgOiBEb21faHRtbC5zdWJtaXRFdmVudCBUeXBlX2VxdWFsLklkLnQpID0gY3JlYXRlIFwic3VibWl0RXZlbnRcIlxuICBsZXQgKG1vdXNld2hlZWwgOiBEb21faHRtbC5tb3VzZXdoZWVsRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcIm1vdXNld2hlZWxFdmVudFwiXG4gIGxldCAoY2xpcGJvYXJkIDogRG9tX2h0bWwuY2xpcGJvYXJkRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImNsaXBib2FyZEV2ZW50XCJcbiAgbGV0IChkcmFnIDogRG9tX2h0bWwuZHJhZ0V2ZW50IFR5cGVfZXF1YWwuSWQudCkgPSBjcmVhdGUgXCJkcmFnRXZlbnRcIlxuICBsZXQgKHBvaW50ZXIgOiBEb21faHRtbC5wb2ludGVyRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcInBvaW50ZXJFdmVudFwiXG4gIGxldCAoYW5pbWF0aW9uIDogRG9tX2h0bWwuYW5pbWF0aW9uRXZlbnQgVHlwZV9lcXVhbC5JZC50KSA9IGNyZWF0ZSBcImFuaW1hdGlvbkV2ZW50XCJcbmVuZFxuXG5sZXQgb24gdHlwZV9pZCBuYW1lIChoYW5kbGVyIDogI0RvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCBVaV9lZmZlY3QudCkgOiB0ID1cbiAgSGFuZGxlciB7IG5hbWU7IGhhbmRsZXIgPSBUIHsgaGFuZGxlcjsgdHlwZV9pZCB9IH1cbjs7XG5cbmxldCBvbl9mb2N1cyA9IG9uIFR5cGVfaWQuZm9jdXMgXCJmb2N1c1wiXG5sZXQgb25fYmx1ciA9IG9uIFR5cGVfaWQuZm9jdXMgXCJibHVyXCJcbmxldCBvbl9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJjbGlja1wiXG5sZXQgb25fY29udGV4dG1lbnUgPSBvbiBUeXBlX2lkLm1vdXNlIFwiY29udGV4dG1lbnVcIlxubGV0IG9uX2RvdWJsZV9jbGljayA9IG9uIFR5cGVfaWQubW91c2UgXCJkYmxjbGlja1wiXG5sZXQgb25fZHJhZyA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdcIlxubGV0IG9uX2RyYWdzdGFydCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdzdGFydFwiXG5sZXQgb25fZHJhZ2VuZCA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbmRcIlxubGV0IG9uX2RyYWdlbnRlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdlbnRlclwiXG5sZXQgb25fZHJhZ2xlYXZlID0gb24gVHlwZV9pZC5kcmFnIFwiZHJhZ2xlYXZlXCJcbmxldCBvbl9kcmFnb3ZlciA9IG9uIFR5cGVfaWQuZHJhZyBcImRyYWdvdmVyXCJcbmxldCBvbl9kcm9wID0gb24gVHlwZV9pZC5kcmFnIFwiZHJvcFwiXG5sZXQgb25fbW91c2Vtb3ZlID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlbW92ZVwiXG5sZXQgb25fbW91c2V1cCA9IG9uIFR5cGVfaWQubW91c2UgXCJtb3VzZXVwXCJcbmxldCBvbl9tb3VzZWRvd24gPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2Vkb3duXCJcbmxldCBvbl9tb3VzZWVudGVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlZW50ZXJcIlxubGV0IG9uX21vdXNlbGVhdmUgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VsZWF2ZVwiXG5sZXQgb25fbW91c2VvdmVyID0gb24gVHlwZV9pZC5tb3VzZSBcIm1vdXNlb3ZlclwiXG5sZXQgb25fbW91c2VvdXQgPSBvbiBUeXBlX2lkLm1vdXNlIFwibW91c2VvdXRcIlxubGV0IG9uX2tleXVwID0gb24gVHlwZV9pZC5rZXlib2FyZCBcImtleXVwXCJcbmxldCBvbl9rZXlwcmVzcyA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlwcmVzc1wiXG5sZXQgb25fa2V5ZG93biA9IG9uIFR5cGVfaWQua2V5Ym9hcmQgXCJrZXlkb3duXCJcbmxldCBvbl9zY3JvbGwgPSBvbiBUeXBlX2lkLmV2ZW50IFwic2Nyb2xsXCJcbmxldCBvbl9zdWJtaXQgPSBvbiBUeXBlX2lkLnN1Ym1pdCBcInN1Ym1pdFwiXG5sZXQgb25fcG9pbnRlcmRvd24gPSBvbiBUeXBlX2lkLnBvaW50ZXIgXCJwb2ludGVyZG93blwiXG5sZXQgb25fcG9pbnRlcnVwID0gb24gVHlwZV9pZC5wb2ludGVyIFwicG9pbnRlcnVwXCJcbmxldCBvbl9tb3VzZXdoZWVsID0gb24gVHlwZV9pZC5tb3VzZXdoZWVsIFwibW91c2V3aGVlbFwiXG5sZXQgb25fY29weSA9IG9uIFR5cGVfaWQuY2xpcGJvYXJkIFwiY29weVwiXG5sZXQgb25fY3V0ID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJjdXRcIlxubGV0IG9uX3Bhc3RlID0gb24gVHlwZV9pZC5jbGlwYm9hcmQgXCJwYXN0ZVwiXG5sZXQgb25fcmVzZXQgPSBvbiBUeXBlX2lkLmV2ZW50IFwicmVzZXRcIlxubGV0IG9uX2FuaW1hdGlvbmVuZCA9IG9uIFR5cGVfaWQuYW5pbWF0aW9uIFwiYW5pbWF0aW9uZW5kXCJcbmxldCBjb25zdF9pZ25vcmUgXyA9IEVmZmVjdC5JZ25vcmVcblxuY2xhc3MgdHlwZSB2YWx1ZV9lbGVtZW50ID1cbiAgb2JqZWN0XG4gICAgaW5oZXJpdCBEb21faHRtbC5lbGVtZW50XG4gICAgbWV0aG9kIHZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxudHlwZSB2YWx1ZV9jb2VyY2lvbiA9IERvbV9odG1sLmVsZW1lbnQgSnMudCAtPiB2YWx1ZV9lbGVtZW50IEpzLnQgSnMub3B0XG5cbmxldCBydW5fY29lcmNpb24gY29lcmNpb24gdGFyZ2V0IHByZXYgPVxuICBtYXRjaCBwcmV2IHdpdGhcbiAgfCBTb21lIF8gLT4gcHJldlxuICB8IE5vbmUgLT4gSnMuT3B0LnRvX29wdGlvbiAoY29lcmNpb24gdGFyZ2V0KVxuOztcblxubGV0IGNvZXJjZV92YWx1ZV9lbGVtZW50IHRhcmdldCA9XG4gIGxldCBvcGVuIERvbV9odG1sLkNvZXJjZVRvIGluXG4gIE5vbmVcbiAgfD4gcnVuX2NvZXJjaW9uIChpbnB1dCA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG4gIHw+IHJ1bl9jb2VyY2lvbiAoc2VsZWN0IDo+IHZhbHVlX2NvZXJjaW9uKSB0YXJnZXRcbiAgfD4gcnVuX2NvZXJjaW9uICh0ZXh0YXJlYSA6PiB2YWx1ZV9jb2VyY2lvbikgdGFyZ2V0XG47O1xuXG5sZXQgb25faW5wdXRfZXZlbnQgdHlwZV9pZCBldmVudCBoYW5kbGVyID1cbiAgb24gdHlwZV9pZCBldmVudCAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBPcHRpb24udmFsdWVfbWFwXG4gICAgICAgIChjb2VyY2VfdmFsdWVfZWxlbWVudCB0YXJnZXQpXG4gICAgICAgIH5kZWZhdWx0OkVmZmVjdC5JZ25vcmVcbiAgICAgICAgfmY6KGZ1biB0YXJnZXQgLT5cbiAgICAgICAgICBsZXQgdGV4dCA9IEpzLnRvX3N0cmluZyB0YXJnZXQjIy52YWx1ZSBpblxuICAgICAgICAgIGhhbmRsZXIgZXYgdGV4dCkpKVxuOztcblxubGV0IG9uX2NoYW5nZSA9IG9uX2lucHV0X2V2ZW50IFR5cGVfaWQuZXZlbnQgXCJjaGFuZ2VcIlxubGV0IG9uX2lucHV0ID0gb25faW5wdXRfZXZlbnQgVHlwZV9pZC5ldmVudCBcImlucHV0XCJcbmxldCB0b19yYXcgbCA9IHRvX3JhdyBsXG5cbmxldCBvbl9maWxlX2lucHV0IGhhbmRsZXIgPVxuICBvbiBUeXBlX2lkLmV2ZW50IFwiaW5wdXRcIiAoZnVuIGV2IC0+XG4gICAgSnMuT3B0LmNhc2UgZXYjIy50YXJnZXQgY29uc3RfaWdub3JlIChmdW4gdGFyZ2V0IC0+XG4gICAgICBKcy5PcHQuY2FzZSAoRG9tX2h0bWwuQ29lcmNlVG8uaW5wdXQgdGFyZ2V0KSBjb25zdF9pZ25vcmUgKGZ1biB0YXJnZXQgLT5cbiAgICAgICAgSnMuT3B0ZGVmLmNhc2UgdGFyZ2V0IyMuZmlsZXMgY29uc3RfaWdub3JlIChmdW4gZmlsZXMgLT4gaGFuZGxlciBldiBmaWxlcykpKSlcbjs7XG5cbm1vZHVsZSBBbHdheXNfZm9jdXNfaG9vayA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IFVuaXRcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBVbml0XG5cbiAgICAgIGxldCBjb21iaW5lICgpICgpID0gKClcbiAgICBlbmRcblxuICAgIGxldCBpbml0ICgpIF8gPSAoKVxuICAgIGxldCBvbl9tb3VudCAoKSAoKSBlbGVtZW50ID0gZWxlbWVudCMjZm9jdXNcbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6KCkgfm5ld19pbnB1dDooKSAoKSBfID0gKClcbiAgICBsZXQgZGVzdHJveSAoKSAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSA9XG4gICAgKCogQXBwZW5kIHRoZSBpZCB0byB0aGUgbmFtZSBvZiB0aGUgaG9vayB0byBlbnN1cmUgdGhhdCBpdCBpcyBkaXN0aW5jdFxuICAgICAgIGZyb20gYWxsIG90aGVyIGZvY3VzIGhvb2tzLiAqKVxuICAgIGNyZWF0ZV9ob29rIFwiYWx3YXlzLWZvY3VzLWhvb2tcIiAoSG9vay5jcmVhdGUgKCkpXG4gIDs7XG5lbmRcblxubW9kdWxlIFNpbmdsZV9mb2N1c19ob29rICgpID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgbW9kdWxlIFN0YXRlID0gVW5pdFxuXG4gICAgbGV0IGhhc19iZWVuX3VzZWQgPSByZWYgZmFsc2VcblxuICAgIG1vZHVsZSBJbnB1dCA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0gKHVuaXQgVWlfZWZmZWN0LnRbQHNleHAub3BhcXVlXSkgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGNvbWJpbmUgbGVmdCByaWdodCA9IFVpX2VmZmVjdC5NYW55IFsgbGVmdDsgcmlnaHQgXVxuICAgIGVuZFxuXG4gICAgbGV0IGluaXQgXyBfID0gKClcblxuICAgIGxldCBvbl9tb3VudCBldmVudCAoKSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAhaGFzX2JlZW5fdXNlZFxuICAgICAgdGhlbiAoXG4gICAgICAgIGhhc19iZWVuX3VzZWQgOj0gdHJ1ZTtcbiAgICAgICAgZWxlbWVudCMjZm9jdXM7XG4gICAgICAgIEVmZmVjdC5FeHBlcnQuaGFuZGxlX25vbl9kb21fZXZlbnRfZXhuIGV2ZW50KVxuICAgIDs7XG5cbiAgICBsZXQgdXBkYXRlIH5vbGRfaW5wdXQ6XyB+bmV3X2lucHV0Ol8gKCkgXyA9ICgpXG4gICAgbGV0IGRlc3Ryb3kgXyAoKSBfID0gKClcbiAgZW5kXG5cbiAgbW9kdWxlIEhvb2sgPSBIb29rcy5NYWtlIChUKVxuXG4gIGxldCBhdHRyIGBSZWFkX3RoZV9kb2NzX190aGlzX2hvb2tfaXNfdW5wcmVkaWN0YWJsZSB+YWZ0ZXIgPVxuICAgICgqIEFwcGVuZCB0aGUgaWQgdG8gdGhlIG5hbWUgb2YgdGhlIGhvb2sgdG8gZW5zdXJlIHRoYXQgaXQgaXMgZGlzdGluY3RcbiAgICAgICBmcm9tIGFsbCBvdGhlciBmb2N1cyBob29rcy4gKilcbiAgICBjcmVhdGVfaG9vayBcInNpbmdsZS1mb2N1cy1ob29rXCIgKEhvb2suY3JlYXRlIGFmdGVyKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aSA9IHN0cnVjdFxuXG4gIHR5cGUgYXR0ciA9IHRcbiAgdHlwZSB0ID0gYXR0ciBsaXN0XG5cbiAgbGV0IG1hcF9zdHlsZSB0IH5mID0gWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBmLCBGbi5pZCkgXVxuXG4gIGxldCBhZGRfY2xhc3MgdCBjID1cbiAgICBbIE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKHQsIEZuLmlkLCBmdW4gY3MgLT4gU2V0LmFkZCBjcyBjKSBdXG4gIDs7XG5cbiAgbGV0IGFkZF9zdHlsZSB0IHMgPSBtYXBfc3R5bGUgdCB+ZjooZnVuIHNzIC0+IENzc19nZW4uY29tYmluZSBzcyBzKVxuXG4gIGxldCBtZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgdCA9XG4gICAgWyBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzICh0LCBGbi5pZCwgRm4uaWQpIF1cbiAgOztcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCByZWMgZmlsdGVyX2J5X2tpbmQgdCB+ZiA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBQcm9wZXJ0eSBfIC0+IGlmIGYgYFByb3BlcnR5IHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBBdHRyaWJ1dGUgXyAtPiBpZiBmIGBBdHRyaWJ1dGUgdGhlbiB0IGVsc2UgZW1wdHlcbiAgICB8IEhvb2sgXyAtPiBpZiBmIGBIb29rIHRoZW4gdCBlbHNlIGVtcHR5XG4gICAgfCBIYW5kbGVyIF8gLT4gaWYgZiBgSGFuZGxlciB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgU3R5bGUgXyAtPiBpZiBmIGBTdHlsZSB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgQ2xhc3MgXyAtPiBpZiBmIGBDbGFzcyB0aGVuIHQgZWxzZSBlbXB0eVxuICAgIHwgTWFueSBhdHRycyAtPiBNYW55IChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpKVxuICAgIHwgTWFueV9vbmx5X21lcmdlX2NsYXNzZXNfYW5kX3N0eWxlcyAoYXR0cnMsIGEsIGIpIC0+XG4gICAgICBNYW55X29ubHlfbWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzIChMaXN0Lm1hcCBhdHRycyB+ZjooZmlsdGVyX2J5X2tpbmQgfmYpLCBhLCBiKVxuICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+XG4gICAgICBNYW55X3dpdGhvdXRfbWVyZ2UgKExpc3QubWFwIGF0dHJzIH5mOihmaWx0ZXJfYnlfa2luZCB+ZikpXG4gIDs7XG5cbiAgbGV0IHJlYyBjb250YWluc19uYW1lIGxvb2tpbmdfZm9yID0gZnVuY3Rpb25cbiAgICB8IFByb3BlcnR5IHsgbmFtZTsgXyB9IHwgQXR0cmlidXRlIHsgbmFtZTsgXyB9IHwgSG9vayB7IG5hbWU7IF8gfSAtPlxuICAgICAgU3RyaW5nLmVxdWFsIGxvb2tpbmdfZm9yIG5hbWVcbiAgICB8IEhhbmRsZXIgeyBuYW1lOyBfIH0gLT4gU3RyaW5nLmVxdWFsIChcIm9uXCIgXiBuYW1lKSBsb29raW5nX2ZvclxuICAgIHwgU3R5bGUgXyAtPiBTdHJpbmcuZXF1YWwgbG9va2luZ19mb3IgXCJzdHlsZVwiXG4gICAgfCBDbGFzcyBfIC0+IFN0cmluZy5lcXVhbCBsb29raW5nX2ZvciBcImNsYXNzXCJcbiAgICB8IE1hbnkgYXR0cnNcbiAgICB8IE1hbnlfb25seV9tZXJnZV9jbGFzc2VzX2FuZF9zdHlsZXMgKGF0dHJzLCBfLCBfKVxuICAgIHwgTWFueV93aXRob3V0X21lcmdlIGF0dHJzIC0+IExpc3QuZXhpc3RzIH5mOihjb250YWluc19uYW1lIGxvb2tpbmdfZm9yKSBhdHRyc1xuICA7O1xuZW5kXG4iLCJvcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBNYWtlIChYIDogc2lnXG4gICAgdmFsIGV2ZW50X2tpbmQgOiBEb21faHRtbC5tb3VzZUV2ZW50IEpzLnQgRG9tLkV2ZW50LnR5cFxuICBlbmQpID1cbnN0cnVjdFxuICBpbmNsdWRlIEhvb2tzLk1ha2UgKHN0cnVjdFxuICAgICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICAgIHR5cGUgdCA9IERvbV9odG1sLm1vdXNlRXZlbnQgSnMudCAtPiB1bml0IFVpX2VmZmVjdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IGNvbWJpbmUgZiBnIGV2ZW50ID0gVWlfZWZmZWN0Lk1hbnkgWyBmIGV2ZW50OyBnIGV2ZW50IF1cbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0geyBtdXRhYmxlIGxpc3RlbmVyIDogKERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkW0BzZXhwLm9wYXF1ZV0pIH1cbiAgICAgICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICAgIGVuZFxuXG4gICAgICBsZXQgc2V0IGYgPVxuICAgICAgICBsZXQgaGFuZGxlciA9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBldiAtPlxuICAgICAgICAgICAgRWZmZWN0LkV4cGVydC5oYW5kbGVfbm9uX2RvbV9ldmVudF9leG4gKGYgZXYpO1xuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICAgIGluXG4gICAgICAgIERvbV9odG1sLmFkZEV2ZW50TGlzdGVuZXIgRG9tX2h0bWwud2luZG93IFguZXZlbnRfa2luZCBoYW5kbGVyIEpzLl90cnVlXG4gICAgICA7O1xuXG4gICAgICBsZXQgaW5pdCBmIF9lbGVtZW50ID0geyBTdGF0ZS5saXN0ZW5lciA9IHNldCBmIH1cbiAgICAgIGxldCBkZXN0cm95IF9pbnB1dCBzdGF0ZSBfZWxlbWVudCA9IERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIgc3RhdGUuU3RhdGUubGlzdGVuZXJcblxuICAgICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQ6ZiBzdGF0ZSBlbGVtZW50ID1cbiAgICAgICAgKCogaWYgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGNoYW5nZXMsIGNhbmNlbCB0aGUgb2xkIG9uZSBhbmQgcmUtaW5zdGFsbCAqKVxuICAgICAgICBkZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgICAgICBsZXQgbmV3X3N0YXRlID0gaW5pdCBmIGVsZW1lbnQgaW5cbiAgICAgICAgc3RhdGUuU3RhdGUubGlzdGVuZXIgPC0gbmV3X3N0YXRlLmxpc3RlbmVyXG4gICAgICA7O1xuXG4gICAgICBsZXQgb25fbW91bnQgX2lucHV0IF9zdGF0ZSBfZWxlbWVudCA9ICgpXG4gICAgZW5kKVxuZW5kXG5cbm1vZHVsZSBNb3VzZV91cCA9IE1ha2UgKHN0cnVjdFxuICAgIGxldCBldmVudF9raW5kID0gRG9tX2h0bWwuRXZlbnQubW91c2V1cFxuICBlbmQpXG5cbm1vZHVsZSBNb3VzZV9tb3ZlID0gTWFrZSAoc3RydWN0XG4gICAgbGV0IGV2ZW50X2tpbmQgPSBEb21faHRtbC5FdmVudC5tb3VzZW1vdmVcbiAgZW5kKVxuXG5sZXQgbW91c2V1cCBmID0gTW91c2VfdXAuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZXVwLWxpc3RlbmVyXCJcbmxldCBtb3VzZW1vdmUgZiA9IE1vdXNlX21vdmUuY3JlYXRlIGYgfD4gQXR0ci5jcmVhdGVfaG9vayBcImdsb2JhbC1tb3VzZW1vdmUtbGlzdGVuZXJcIlxuXG5tb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgbGV0IG1vdXNlX3VwX3R5cGVfaWQgPSBNb3VzZV91cC5Gb3JfdGVzdGluZy50eXBlX2lkXG4gIGxldCBtb3VzZV9tb3ZlX3R5cGVfaWQgPSBNb3VzZV9tb3ZlLkZvcl90ZXN0aW5nLnR5cGVfaWRcbmVuZFxuIiwib3BlbiBCYXNlXG5vcGVuIEpzX29mX29jYW1sXG5cbm1vZHVsZSBXaWRnZXQgPSBzdHJ1Y3RcbiAgb3BlbiBKc19vZl9vY2FtbFxuICBpbmNsdWRlIFJhdy5XaWRnZXRcblxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSBkb20gPSBwcml2YXRlICNEb21faHRtbC5lbGVtZW50XG5cbiAgICBtb2R1bGUgSW5wdXQgOiBzaWdcbiAgICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgdmFsIGNyZWF0ZSA6IElucHV0LnQgLT4gU3RhdGUudCAqIGRvbSBKcy50XG5cbiAgICB2YWwgdXBkYXRlXG4gICAgICA6ICBwcmV2X2lucHV0OklucHV0LnRcbiAgICAgIC0+IGlucHV0OklucHV0LnRcbiAgICAgIC0+IHN0YXRlOlN0YXRlLnRcbiAgICAgIC0+IGVsZW1lbnQ6ZG9tIEpzLnRcbiAgICAgIC0+IFN0YXRlLnQgKiBkb20gSnMudFxuXG4gICAgdmFsIGRlc3Ryb3kgOiBwcmV2X2lucHV0OklucHV0LnQgLT4gc3RhdGU6U3RhdGUudCAtPiBlbGVtZW50OmRvbSBKcy50IC0+IHVuaXRcbiAgZW5kXG5cbiAgbGV0IG9mX21vZHVsZSAodHlwZSBpbnB1dCkgKG1vZHVsZSBNIDogUyB3aXRoIHR5cGUgSW5wdXQudCA9IGlucHV0KSA9XG4gICAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBpbnB1dCA6IE0uSW5wdXQudFxuICAgICAgICA7IHN0YXRlIDogTS5TdGF0ZS50XG4gICAgICAgIH1cbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG4gICAgaW5cbiAgICBsZXQgc2V4cF9vZl9kb20gOiBNLmRvbSBKcy50IC0+IFNleHAudCA9IGZ1biBfIC0+IFNleHAuQXRvbSBcIjxvcGFxdWU+XCIgaW5cbiAgICBsZXQgaWQgPSBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpNLm5hbWUgWyVzZXhwX29mOiBTdGF0ZS50ICogZG9tXSBpblxuICAgIEJhc2UuU3RhZ2VkLnN0YWdlIChmdW4gaW5wdXQgLT5cbiAgICAgIGxldCBpbmZvID0gbGF6eSAoTS5JbnB1dC5zZXhwX29mX3QgaW5wdXQpIGluXG4gICAgICBjcmVhdGVcbiAgICAgICAgfmlkXG4gICAgICAgIH5pbmZvXG4gICAgICAgIH5pbml0OihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgc3RhdGUsIGVsZW1lbnQgPSBNLmNyZWF0ZSBpbnB1dCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH51cGRhdGU6KGZ1biB7IFN0YXRlLmlucHV0ID0gcHJldl9pbnB1dDsgc3RhdGUgfSBlbGVtZW50IC0+XG4gICAgICAgICAgbGV0IHN0YXRlLCBlbGVtZW50ID0gTS51cGRhdGUgfnByZXZfaW5wdXQgfmlucHV0IH5zdGF0ZSB+ZWxlbWVudCBpblxuICAgICAgICAgIHsgaW5wdXQ7IHN0YXRlIH0sIGVsZW1lbnQpXG4gICAgICAgIH5kZXN0cm95OihmdW4geyBTdGF0ZS5pbnB1dCA9IHByZXZfaW5wdXQ7IHN0YXRlIH0gZWxlbWVudCAtPlxuICAgICAgICAgIE0uZGVzdHJveSB+cHJldl9pbnB1dCB+c3RhdGUgfmVsZW1lbnQpXG4gICAgICAgICgpKVxuICA7O1xuZW5kXG5cbnR5cGUgZWxlbWVudCA9XG4gIHsgdGFnIDogc3RyaW5nXG4gIDsga2V5IDogc3RyaW5nIG9wdGlvblxuICA7IGF0dHJzIDogQXR0ci50XG4gIDsgcmF3X2F0dHJzIDogUmF3LkF0dHJzLnQgTGF6eS50XG4gIDsgY2hpbGRyZW4gOiBSYXcuTm9kZS50IEpzLmpzX2FycmF5IEpzLnRcbiAgOyBraW5kIDogWyBgVm5vZGUgfCBgU3ZnIF1cbiAgfVxuXG5hbmQgdCA9XG4gIHwgTm9uZVxuICB8IFRleHQgb2Ygc3RyaW5nXG4gIHwgRWxlbWVudCBvZiBlbGVtZW50XG4gIHwgV2lkZ2V0IG9mIFdpZGdldC50XG5cbm1vZHVsZSBBbGlhc2VzID0gc3RydWN0XG4gIHR5cGUgbm9kZV9jcmVhdG9yID0gP2tleTpzdHJpbmcgLT4gP2F0dHI6QXR0ci50IC0+IHQgbGlzdCAtPiB0XG4gIHR5cGUgbm9kZV9jcmVhdG9yX2NoaWxkbGVzcyA9ID9rZXk6c3RyaW5nIC0+ID9hdHRyOkF0dHIudCAtPiB1bml0IC0+IHRcbmVuZFxuXG5tb2R1bGUgRWxlbWVudCA9IHN0cnVjdFxuICB0eXBlIHQgPSBlbGVtZW50XG5cbiAgbGV0IHRhZyB0ID0gdC50YWdcbiAgbGV0IGF0dHJzIHQgPSB0LmF0dHJzXG4gIGxldCBrZXkgdCA9IHQua2V5XG4gIGxldCB3aXRoX2tleSB0IGtleSA9IHsgdCB3aXRoIGtleSA9IFNvbWUga2V5IH1cblxuICBsZXQgbWFwX2F0dHJzIHQgfmYgPVxuICAgIGxldCBhdHRycyA9IGYgdC5hdHRycyBpblxuICAgIGxldCByYXdfYXR0cnMgPSBsYXp5IChBdHRyLnRvX3JhdyBhdHRycykgaW5cbiAgICB7IHQgd2l0aCBhdHRyczsgcmF3X2F0dHJzIH1cbiAgOztcblxuICBsZXQgYWRkX2NsYXNzIHQgYyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgY2xhc3NfIGMpKVxuICBsZXQgYWRkX2NsYXNzZXMgdCBjID0gbWFwX2F0dHJzIHQgfmY6KGZ1biBhIC0+IEF0dHIuKGEgQCBjbGFzc2VzIGMpKVxuICBsZXQgYWRkX3N0eWxlIHQgcyA9IG1hcF9hdHRycyB0IH5mOihmdW4gYSAtPiBBdHRyLihhIEAgc3R5bGUgcykpXG5lbmRcblxubGV0IHRfdG9fanMgPSBmdW5jdGlvblxuICB8IE5vbmUgLT5cbiAgICAoKiBXZSBub3JtYWxseSBmaWx0ZXIgdGhlc2Ugb3V0LCBidXQgaWYgW3RvX2pzXSBpcyBjYWxsZWQgZGlyZWN0bHkgb24gYSBbTm9uZV0gbm9kZSxcbiAgICAgICB3ZSB1c2UgdGhpcyBoYWNrLiBBc2lkZSBmcm9tIGhhdmluZyBhIFtUZXh0XSBub2RlIHdpdGhvdXQgYW55IHRleHQgcHJlc2VudCBpbiB0aGVcbiAgICAgICBEb20sIHRoZXJlIHNob3VsZCBiZSBubyB1bndhbnRlZCBzaWRlLWVmZmVjdHMuICBJbiBhbiBJbmNyX2RvbSBhcHBsaWNhdGlvbiwgdGhpc1xuICAgICAgIGNhbiBvbmx5IGhhcHBlbiB3aGVuIHRoZSByb290IHZpZXcgSW5jcmVtZW50YWwgaXMgaW5oYWJpdGVkIGJ5IGEgW05vbmVdLiAqKVxuICAgIFJhdy5Ob2RlLnRleHQgXCJcIlxuICB8IFRleHQgcyAtPiBSYXcuTm9kZS50ZXh0IHNcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgVm5vZGUgfVxuICAgIC0+IFJhdy5Ob2RlLm5vZGUgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBFbGVtZW50IHsgdGFnOyBrZXk7IGF0dHJzID0gXzsgcmF3X2F0dHJzID0gKGxhenkgcmF3X2F0dHJzKTsgY2hpbGRyZW47IGtpbmQgPSBgU3ZnIH1cbiAgICAtPiBSYXcuTm9kZS5zdmcgdGFnIHJhd19hdHRycyBjaGlsZHJlbiBrZXlcbiAgfCBXaWRnZXQgdyAtPiB3XG47O1xuXG5sZXQgZWxlbWVudCBraW5kIH50YWcgfmtleSBhdHRycyBjaGlsZHJlbiA9XG4gIGxldCBjaGlsZHJlbl9yYXcgPSBuZXclanMgSnMuYXJyYXlfZW1wdHkgaW5cbiAgTGlzdC5pdGVyIGNoaWxkcmVuIH5mOihmdW5jdGlvblxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgKFRleHQgXyB8IEVsZW1lbnQgXyB8IFdpZGdldCBfKSBhcyBvdGhlciAtPlxuICAgICAgbGV0IChfIDogaW50KSA9IGNoaWxkcmVuX3JhdyMjcHVzaCAodF90b19qcyBvdGhlcikgaW5cbiAgICAgICgpKTtcbiAgbGV0IHJhd19hdHRycyA9IGxhenkgKEF0dHIudG9fcmF3IGF0dHJzKSBpblxuICB7IGtpbmQ7IHRhZzsga2V5OyBhdHRyczsgcmF3X2F0dHJzOyBjaGlsZHJlbiA9IGNoaWxkcmVuX3JhdyB9XG47O1xuXG5sZXQgZWxlbWVudF9leHBlcnQga2luZCB+dGFnID9rZXkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgcmF3X2F0dHJzID0gbGF6eSAoQXR0ci50b19yYXcgYXR0cnMpIGluXG4gIHsga2luZDsgdGFnOyBrZXk7IGF0dHJzOyByYXdfYXR0cnM7IGNoaWxkcmVuIH1cbjs7XG5cbmxldCB0ZXh0IHMgPSBUZXh0IHNcblxubGV0IHdpZGdldCA/aW5mbyA/ZGVzdHJveSA/dXBkYXRlIH5pZCB+aW5pdCAoKSA9XG4gIFdpZGdldCAoV2lkZ2V0LmNyZWF0ZSA/aW5mbyA/ZGVzdHJveSA/dXBkYXRlIH5pZCB+aW5pdCAoKSlcbjs7XG5cbmxldCBjcmVhdGUgdGFnID9rZXkgPyhhdHRyID0gQXR0ci5lbXB0eSkgY2hpbGRyZW4gPVxuICBFbGVtZW50IChlbGVtZW50IGBWbm9kZSB+dGFnIH5rZXkgYXR0ciBjaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGVfY2hpbGRsZXNzIHRhZyA/a2V5ID9hdHRyICgpID0gY3JlYXRlIHRhZyA/a2V5ID9hdHRyIFtdXG5cbmxldCBjcmVhdGVfc3ZnIHRhZyA/a2V5ID8oYXR0ciA9IEF0dHIuZW1wdHkpIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSBhdHRyIGNoaWxkcmVuKVxuOztcblxubGV0IGNyZWF0ZV9zdmdfbW9ub2lkIHRhZyA/a2V5ID8oYXR0ciA9IEF0dHIuZW1wdHkpIGNoaWxkcmVuID1cbiAgRWxlbWVudCAoZWxlbWVudCBgU3ZnIH50YWcgfmtleSBhdHRyIGNoaWxkcmVuKVxuOztcblxubGV0IG5vbmUgPSBOb25lXG5sZXQgdGV4dGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIHRleHQgZm9ybWF0XG5cbmxldCB3aWRnZXRfb2ZfbW9kdWxlIG0gPVxuICBsZXQgZiA9IEJhc2UuU3RhZ2VkLnVuc3RhZ2UgKFdpZGdldC5vZl9tb2R1bGUgbSkgaW5cbiAgQmFzZS5TdGFnZWQuc3RhZ2UgKGZ1biBpIC0+IFdpZGdldCAoZiBpKSlcbjs7XG5cbmxldCB0b19yYXcgPSB0X3RvX2pzXG5sZXQgdG9fZG9tIHQgPSBSYXcuTm9kZS50b19kb20gKHRvX3JhdyB0KVxuXG5sZXQgaW5uZXJfaHRtbFxuICAgICAgY3JlYXRlXG4gICAgICB+dGFnXG4gICAgICB+YXR0clxuICAgICAgfnRoaXNfaHRtbF9pc19zYW5pdGl6ZWRfYW5kX2lzX3RvdGFsbHlfc2FmZV90cnVzdF9tZTpjb250ZW50XG4gID1cbiAgbGV0IGVsZW1lbnQgPSBjcmVhdGUgdGFnIH5hdHRyIFtdIGluXG4gIGxldCBidWlsZF9zZXhwIH5leHRyYSB+Y29udGVudCA9XG4gICAgU2V4cC5MaXN0IFsgU2V4cC5BdG9tIFwiaW5uZXItaHRtbFwiOyBleHRyYTsgU2V4cC5BdG9tIGNvbnRlbnQgXVxuICBpblxuICBsZXQgaWQgPVxuICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlwiaW5uZXItaHRtbC1ub2RlXCIgKGZ1biAoKGVsZW1lbnQsIGNvbnRlbnQpLCBfKSAtPlxuICAgICAgYnVpbGRfc2V4cCB+ZXh0cmE6ZWxlbWVudCB+Y29udGVudClcbiAgaW5cbiAgbGV0IGRlYnVnID1cbiAgICBtYXRjaCBlbGVtZW50IHdpdGhcbiAgICB8IEVsZW1lbnQgZWxlbWVudCAtPiBTZXhwLkF0b20gKEVsZW1lbnQudGFnIGVsZW1lbnQpXG4gICAgfCBXaWRnZXQgXyAtPiBmYWlsd2l0aCBcIlZkb20uTm9kZS5pbm5lcl9odG1sIHdhcyBnaXZlbiBhICd3aWRnZXQnXCJcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJWZG9tLk5vZGUuaW5uZXJfaHRtbCB3YXMgZ2l2ZW4gYSAnbm9uZSdcIlxuICAgIHwgVGV4dCBfIC0+IGZhaWx3aXRoIFwiVmRvbS5Ob2RlLmlubmVyX2h0bWwgd2FzIGdpdmVuIGEgJ3RleHQnXCJcbiAgaW5cbiAgd2lkZ2V0XG4gICAgfmlkXG4gICAgfmluZm86KGxhenkgKGJ1aWxkX3NleHAgfmV4dHJhOmRlYnVnIH5jb250ZW50KSlcbiAgICB+aW5pdDooZnVuICgpIC0+XG4gICAgICBsZXQgZWxlbWVudCA9IHRvX2RvbSBlbGVtZW50IGluXG4gICAgICBlbGVtZW50IyMuaW5uZXJIVE1MIDo9IEpzLnN0cmluZyBjb250ZW50O1xuICAgICAgKGRlYnVnLCBjb250ZW50KSwgZWxlbWVudClcbiAgICAoKVxuOztcblxubGV0IGlubmVyX2h0bWxfc3ZnID0gaW5uZXJfaHRtbCAoZnVuIHRhZyB+YXR0ciAtPiBjcmVhdGVfc3ZnX21vbm9pZCB0YWcgP2tleTpOb25lIH5hdHRyKVxubGV0IGlubmVyX2h0bWwgPSBpbm5lcl9odG1sIChmdW4gdGFnIH5hdHRyIC0+IGNyZWF0ZSB0YWcgP2tleTpOb25lIH5hdHRyKVxubGV0IGEgPSBjcmVhdGUgXCJhXCJcbmxldCBib2R5ID0gY3JlYXRlIFwiYm9keVwiXG5sZXQgYnV0dG9uID0gY3JlYXRlIFwiYnV0dG9uXCJcbmxldCBjb2RlID0gY3JlYXRlIFwiY29kZVwiXG5sZXQgZGl2ID0gY3JlYXRlIFwiZGl2XCJcbmxldCBtYWluID0gY3JlYXRlIFwibWFpblwiXG5sZXQgZmllbGRzZXQgPSBjcmVhdGUgXCJmaWVsZHNldFwiXG5sZXQgZm9vdGVyID0gY3JlYXRlIFwiZm9vdGVyXCJcbmxldCBoMSA9IGNyZWF0ZSBcImgxXCJcbmxldCBoMiA9IGNyZWF0ZSBcImgyXCJcbmxldCBoMyA9IGNyZWF0ZSBcImgzXCJcbmxldCBoNCA9IGNyZWF0ZSBcImg0XCJcbmxldCBoNSA9IGNyZWF0ZSBcImg1XCJcbmxldCBoNiA9IGNyZWF0ZSBcImg2XCJcbmxldCBoZWFkZXIgPSBjcmVhdGUgXCJoZWFkZXJcIlxubGV0IGh0bWwgPSBjcmVhdGUgXCJodG1sXCJcbmxldCBpbnB1dCA9IGNyZWF0ZSBcImlucHV0XCJcbmxldCB0ZXh0YXJlYSA9IGNyZWF0ZSBcInRleHRhcmVhXCJcbmxldCBzZWxlY3QgPSBjcmVhdGUgXCJzZWxlY3RcIlxubGV0IG9wdGlvbiA9IGNyZWF0ZSBcIm9wdGlvblwiXG5sZXQgbGFiZWwgPSBjcmVhdGUgXCJsYWJlbFwiXG5sZXQgbGkgPSBjcmVhdGUgXCJsaVwiXG5sZXQgcCA9IGNyZWF0ZSBcInBcIlxubGV0IHByZSA9IGNyZWF0ZSBcInByZVwiXG5sZXQgc2VjdGlvbiA9IGNyZWF0ZSBcInNlY3Rpb25cIlxubGV0IHNwYW4gPSBjcmVhdGUgXCJzcGFuXCJcbmxldCBzdHJvbmcgPSBjcmVhdGUgXCJzdHJvbmdcIlxubGV0IHRhYmxlID0gY3JlYXRlIFwidGFibGVcIlxubGV0IHRib2R5ID0gY3JlYXRlIFwidGJvZHlcIlxubGV0IHRkID0gY3JlYXRlIFwidGRcIlxubGV0IHRoID0gY3JlYXRlIFwidGhcIlxubGV0IHRoZWFkID0gY3JlYXRlIFwidGhlYWRcIlxubGV0IHRyID0gY3JlYXRlIFwidHJcIlxubGV0IHVsID0gY3JlYXRlIFwidWxcIlxubGV0IG9sID0gY3JlYXRlIFwib2xcIlxubGV0IGJyID0gY3JlYXRlX2NoaWxkbGVzcyBcImJyXCJcbmxldCBociA9IGNyZWF0ZV9jaGlsZGxlc3MgXCJoclwiXG5cbmxldCBzZXhwX2Zvcl9kZWJ1Z2dpbmcgP2luZGVudCBzZXhwID1cbiAgc2V4cCB8PiBTZXhwLnRvX3N0cmluZ19odW0gP2luZGVudCB8PiB0ZXh0IHw+IExpc3QucmV0dXJuIHw+IHByZSB+YXR0cjpBdHRyLmVtcHR5XG47O1xuXG5tb2R1bGUgUGF0Y2ggPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gUmF3LlBhdGNoLnRcblxuICBsZXQgY3JlYXRlIH5wcmV2aW91cyB+Y3VycmVudCA9XG4gICAgUmF3LlBhdGNoLmNyZWF0ZSB+cHJldmlvdXM6KHRfdG9fanMgcHJldmlvdXMpIH5jdXJyZW50Oih0X3RvX2pzIGN1cnJlbnQpXG4gIDs7XG5cbiAgbGV0IGFwcGx5IHQgZWx0ID0gUmF3LlBhdGNoLmFwcGx5IGVsdCB0XG4gIGxldCBpc19lbXB0eSB0ID0gUmF3LlBhdGNoLmlzX2VtcHR5IHRcbmVuZFxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBWbm9kZSA/a2V5IH50YWcgYXR0cnMgY2hpbGRyZW4pXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9zdmcgP2tleSB0YWcgYXR0cnMgY2hpbGRyZW4gPVxuICAgIEVsZW1lbnQgKGVsZW1lbnRfZXhwZXJ0IGBTdmcgP2tleSB+dGFnIGF0dHJzIGNoaWxkcmVuKVxuICA7O1xuZW5kXG4iLCJtb2R1bGUgQXR0ciA9IHN0cnVjdFxuICBpbmNsdWRlIEF0dHJcbiAgbW9kdWxlIEhvb2tzID0gSG9va3NcbiAgbW9kdWxlIEdsb2JhbF9saXN0ZW5lcnMgPSBHbG9iYWxfbGlzdGVuZXJzXG5lbmRcblxubW9kdWxlIEF0dHJzID0gQXR0ci5NdWx0aVxubW9kdWxlIEVmZmVjdCA9IEVmZmVjdFxubW9kdWxlIE5vZGUgPSBOb2RlXG4iLCJtb2R1bGUgVmRvbSA9IFZkb21cbm1vZHVsZSBEb21fZmxvYXQgPSBEb21fZmxvYXRcblxubW9kdWxlIFRvcF9sZXZlbF9lZmZlY3RzID0gc3RydWN0XG4gIGxldCAoKSA9XG4gICAgKCogdXNlIHRoZSBuYXRpdmUtamF2YXNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBmbG9hdCAtPiBzdHJpbmcgd2l0aCBhIGZpeGVkIG51bWJlciBvZlxuICAgICAgIG51bWJlcnMgYWZ0ZXIgdGhlIGRlY2ltYWwgcGxhY2UuICopXG4gICAgQ3NzX2dlbi5Qcml2YXRlLmZsb2F0X3RvX3N0cmluZ193aXRoX2ZpeGVkIDo9IERvbV9mbG9hdC50b19zdHJpbmdfZml4ZWRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBDcHVzZXQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBJbnQuU2V0LnQgW0BAZGVyaXZpbmcgc2V4cF1cblxuICAgICAgbGV0IGhlcmUgPSBbJWhlcmVdXG5cbiAgICAgIGxldCB2YWxpZGF0ZSB0ID1cbiAgICAgICAgVmFsaWRhdGUuZmlyc3RfZmFpbHVyZVxuICAgICAgICAgIChJbnQudmFsaWRhdGVfbGJvdW5kIH5taW46KEluY2wgMSkgKEludC5TZXQubGVuZ3RoIHQpKVxuICAgICAgICAgIChJbnQuU2V0LnRvX2xpc3QgdFxuICAgICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpJbnQudmFsaWRhdGVfbm9uX25lZ2F0aXZlXG4gICAgICAgICAgIHw+IFZhbGlkYXRlLm5hbWVfbGlzdCBcIlRocmVhZF9wb29sX2NwdXNldFwiKVxuICAgICAgOztcbiAgICBlbmQpXG5cbiAgbGV0IGVxdWFsIHQxIHQyID0gSW50LlNldC5lcXVhbCAodDEgfD4gcmF3KSAodDIgfD4gcmF3KVxuZW5kXG5cbnR5cGUgdCA9XG4gIHwgSW5oZXJpdFxuICB8IENwdXNldCBvZiBDcHVzZXQudFxuW0BAZGVyaXZpbmcgc2V4cF1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBUdXBsZV90eXBlX2ludGZcblxubW9kdWxlIFNsb3RzID0gc3RydWN0XG4gIHR5cGUgdV8gPSB7IHNsb3RzX3Blcl90dXBsZSA6IGludCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgKCd0dXBsZSwgJ3ZhcmlhbnQpIHUgPSB1XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHRfID0gWyBgU2xvdHMgb2YgdV8gXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgndHVwbGUsICd2YXJpYW50KSB0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2xvdHNfcGVyX3R1cGxlIChgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSBuIH0pID0gblxuXG4gIHR5cGUgJ2EwIHQxID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEpIHQyID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMikgdDMgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMpIHQ0ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQpIHQ1ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSkgdDYgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYpIHQ3ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcpIHQ4ID0gdF8gW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCkgdDkgPSB0XyBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTkpIHQxMCA9IHRfIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwKSB0MTEgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgKCdhMCwgJ2ExLCAnYTIsICdhMywgJ2E0LCAnYTUsICdhNiwgJ2E3LCAnYTgsICdhOSwgJ2ExMCwgJ2ExMSkgdDEyID0gdF9cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB0eXBlICgnYTAsICdhMSwgJ2EyLCAnYTMsICdhNCwgJ2E1LCAnYTYsICdhNywgJ2E4LCAnYTksICdhMTAsICdhMTEsICdhMTIpIHQxMyA9IHRfXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAoJ2EwLCAnYTEsICdhMiwgJ2EzLCAnYTQsICdhNSwgJ2E2LCAnYTcsICdhOCwgJ2E5LCAnYTEwLCAnYTExLCAnYTEyLCAnYTEzKSB0MTQgPSB0X1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCB0MSA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDEgfVxuICBsZXQgdDIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAyIH1cbiAgbGV0IHQzID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gMyB9XG4gIGxldCB0NCA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDQgfVxuICBsZXQgdDUgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA1IH1cbiAgbGV0IHQ2ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gNiB9XG4gIGxldCB0NyA9IGBTbG90cyB7IHNsb3RzX3Blcl90dXBsZSA9IDcgfVxuICBsZXQgdDggPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSA4IH1cbiAgbGV0IHQ5ID0gYFNsb3RzIHsgc2xvdHNfcGVyX3R1cGxlID0gOSB9XG4gIGxldCB0MTAgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMCB9XG4gIGxldCB0MTEgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMSB9XG4gIGxldCB0MTIgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMiB9XG4gIGxldCB0MTMgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxMyB9XG4gIGxldCB0MTQgPSBgU2xvdHMgeyBzbG90c19wZXJfdHVwbGUgPSAxNCB9XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUdXBsZV9wb29sX2ludGZcbm1vZHVsZSBUdXBsZV90eXBlID0gVHVwbGVfdHlwZVxuXG5sZXQgZmFpbHdpdGhzID0gRXJyb3IuZmFpbHdpdGhzXG5sZXQgcGh5c19lcXVhbCA9IENhbWwuKCA9PSApXG5sZXQgYXJjaF9zaXh0eWZvdXIgPSBTeXMud29yZF9zaXplX2luX2JpdHMgPSA2NFxuXG5tb2R1bGUgSW50ID0gc3RydWN0XG4gIGxldCBudW1fYml0cyA9IEludC5udW1fYml0c1xuICBsZXQgbWF4X3ZhbHVlID0gQ2FtbC5tYXhfaW50XG4gIGxldCB0b19zdHJpbmcgPSBzdHJpbmdfb2ZfaW50XG5lbmRcblxubGV0IHNwcmludGYgPSBQcmludGYuc3ByaW50ZlxubGV0IGNvbmNhdCBsID0gQmFzZS5TdHJpbmcuY29uY2F0IH5zZXA6XCJcIiBsXG5cbm1vZHVsZSB0eXBlIFMgPSBTXG5cbm1vZHVsZSBQb29sID0gc3RydWN0XG4gIGxldCBncm93X2NhcGFjaXR5IH5jYXBhY2l0eSB+b2xkX2NhcGFjaXR5ID1cbiAgICBtYXRjaCBjYXBhY2l0eSB3aXRoXG4gICAgfCBOb25lIC0+IGlmIG9sZF9jYXBhY2l0eSA9IDAgdGhlbiAxIGVsc2Ugb2xkX2NhcGFjaXR5ICogMlxuICAgIHwgU29tZSBjYXBhY2l0eSAtPlxuICAgICAgaWYgY2FwYWNpdHkgPD0gb2xkX2NhcGFjaXR5XG4gICAgICB0aGVuXG4gICAgICAgIGZhaWx3aXRoc1xuICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICBcIlBvb2wuZ3JvdyBnb3QgdG9vIHNtYWxsIGNhcGFjaXR5XCJcbiAgICAgICAgICAoYGNhcGFjaXR5IGNhcGFjaXR5LCBgb2xkX2NhcGFjaXR5IG9sZF9jYXBhY2l0eSlcbiAgICAgICAgICBbJXNleHBfb2Y6IFsgYGNhcGFjaXR5IG9mIGludCBdICogWyBgb2xkX2NhcGFjaXR5IG9mIGludCBdXTtcbiAgICAgIGNhcGFjaXR5XG4gIDs7XG5cbiAgbW9kdWxlIFNsb3RzID0gVHVwbGVfdHlwZS5TbG90c1xuXG4gIGxldCBtYXhfc2xvdCA9IDE0XG5cbiAgKCogVGhlIHBvb2wgaXMgcmVwcmVzZW50ZWQgYXMgYSBzaW5nbGUgW1VuaWZvcm1fYXJyYXkudF0sIHdoZXJlIGluZGV4IHplcm8gaGFzIHRoZVxuICAgICBtZXRhZGF0YSBhYm91dCB0aGUgcG9vbCBhbmQgdGhlIHJlbWFpbmluZyBpbmRpY2VzIGFyZSB0aGUgdHVwbGVzIGxheWVkIG91dCBvbmUgYWZ0ZXJcbiAgICAgdGhlIG90aGVyLiAgRWFjaCB0dXBsZSB0YWtlcyBbMSArIHNsb3RzX3Blcl90dXBsZV0gaW5kaWNlcyBpbiB0aGUgcG9vbCwgd2hlcmUgdGhlXG4gICAgIGZpcnN0IGluZGV4IGhvbGRzIGEgaGVhZGVyIGFuZCB0aGUgcmVtYWluaW5nIGluZGljZXMgaG9sZCB0aGUgdHVwbGUncyBzbG90czpcblxuICAgICB7dlxuICAgICB8IGhlYWRlciB8IHMwIHwgczEgfCAuLi4gfCBzPE4tMT4gfFxuICAgICB2fVxuXG4gICAgIEEgW1BvaW50ZXIudF0gdG8gYSB0dXBsZSBjb250YWlucyB0aGUgaW50ZWdlciBpbmRleCB3aGVyZSBpdHMgaGVhZGVyIGlzLCBhcyB3ZWxsIGFzXG4gICAgIChhIG1hc2sgb2YpIHRoZSB0dXBsZSdzIHVuaXF1ZSBpZC5cblxuICAgICBUaGUgZnJlZSB0dXBsZXMgYXJlIHNpbmdseSBsaW5rZWQgdmlhIHRoZSBoZWFkZXJzLlxuXG4gICAgIFdoZW4gYSB0dXBsZSBpcyBpbiB1c2UsIGl0cyBoZWFkZXIgaXMgbWFya2VkIHRvIGluZGljYXRlIHNvLCBhbmQgYWxzbyB0byBpbmNsdWRlIHRoZVxuICAgICB0dXBsZSdzIHVuaXF1ZSBpZC4gIFRoaXMgYWxsb3dzIHVzIHRvIGNoZWNrIGluIGNvbnN0YW50IHRpbWUgd2hldGhlciBhIHBvaW50ZXIgaXNcbiAgICAgdmFsaWQsIGJ5IGNvbXBhcmluZyB0aGUgaWQgaW4gdGhlIHBvaW50ZXIgd2l0aCB0aGUgaWQgaW4gdGhlIGhlYWRlci5cblxuICAgICBXaGVuIGEgdHVwbGUgaXMgbm90IGluIHVzZSwgaXRzIGhlYWRlciBpcyBwYXJ0IG9mIHRoZSBmcmVlIGxpc3QsIGFuZCBpdHMgdHVwbGUgc2xvdHNcbiAgICAgaGF2ZSBkdW1teSB2YWx1ZXMgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGVzLCBmcm9tIHRoZSBbZHVtbXldIHR1cGxlIHN1cHBsaWVkIHRvXG4gICAgIFtjcmVhdGVdLiAgV2UgbXVzdCBoYXZlIGR1bW15IHZhbHVlcyBvZiB0aGUgY29ycmVjdCB0eXBlIHRvIHByZXZlbnQgYSBzZWdmYXVsdCBpblxuICAgICBjb2RlIHRoYXQgKG1pc3Rha2VubHkpIHVzZXMgYSBwb2ludGVyIHRvIGEgZnJlZSB0dXBsZS5cblxuICAgICBGb3IgW1Bvb2wuVW5zYWZlXSwgYSBzbG90IGluIGEgZnJlZSBvYmplY3QgaXMgZ3VhcmFudGVlZCB0byBiZSBhbiBpbnQ7IGl0IG11c3Qgbm90IGJlXG4gICAgIHBvaW50ZXIgdG8gcHJldmVudCBhIHNwYWNlIGxlYWsuICBIb3dldmVyLCB0aGUgaW50IGluIHRoZSBzbG90IG1heSBub3QgcmVwcmVzZW50IGFcbiAgICAgdmFsaWQgdmFsdWUgb2YgdGhlIHR5cGUuXG4gICopXG5cbiAgbW9kdWxlIFNsb3QgPSBzdHJ1Y3RcbiAgICB0eXBlICgnc2xvdHMsICdhKSB0ID0gaW50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICBsZXQgZXF1YWwgKHQxIDogKF8sIF8pIHQpIHQyID0gdDEgPSB0MlxuICAgIGxldCB0MCA9IDFcbiAgICBsZXQgdDEgPSAyXG4gICAgbGV0IHQyID0gM1xuICAgIGxldCB0MyA9IDRcbiAgICBsZXQgdDQgPSA1XG4gICAgbGV0IHQ1ID0gNlxuICAgIGxldCB0NiA9IDdcbiAgICBsZXQgdDcgPSA4XG4gICAgbGV0IHQ4ID0gOVxuICAgIGxldCB0OSA9IDEwXG4gICAgbGV0IHQxMCA9IDExXG4gICAgbGV0IHQxMSA9IDEyXG4gICAgbGV0IHQxMiA9IDEzXG4gICAgbGV0IHQxMyA9IDE0XG5cbiAgICBsZXQldGVzdCBfID0gdDEzID0gbWF4X3Nsb3RcbiAgZW5kXG5cbiAgKCogV2Ugb25seSBoYXZlIFtJbnQubnVtX2JpdHNdIGJpdHMgYXZhaWxhYmxlIGZvciBwb29sIHBvaW50ZXJzLiAgVGhlIGJpdHMgb2YgYSBwb29sXG4gICAgIHBvaW50ZXIgZW5jb2RlIHR3byB0aGluZ3M6XG5cbiAgICAgLSB0aGUgdHVwbGUncyBhcnJheSBpbmRleCBpbiB0aGUgcG9vbFxuICAgICAtIHRoZSB0dXBsZSdzIGlkZW50aWZpZXIgKG5vdCBuZWNlc3NhcmlseSB1bmlxdWUpXG5cbiAgICAgV2UgY2hvb3NlIFthcnJheV9pbmRleF9udW1fYml0c10gYXMgbGFyZ2UgYXMgbmVlZGVkIGZvciB0aGUgbWF4aW11bSBwb29sIGNhcGFjaXR5XG4gICAgIHRoYXQgd2Ugd2FudCB0byBzdXBwb3J0LCBhbmQgdXNlIHRoZSByZW1haW5pbmcgW21hc2tlZF90dXBsZV9pZF9udW1fYml0c10gYml0cyBmb3JcbiAgICAgdGhlIGlkZW50aWZpZXIuICA2NC1iaXQgYW5kIDMyLWJpdCBhcmNoaXRlY3R1cmVzIHR5cGljYWxseSBoYXZlIHZlcnkgZGlmZmVyZW50XG4gICAgIGFkZHJlc3Mtc3BhY2Ugc2l6ZXMsIHNvIHdlIGNob29zZSBbYXJyYXlfaW5kZXhfbnVtX2JpdHNdIGRpZmZlcmVudGx5LiAqKVxuXG4gIGxldCBhcnJheV9pbmRleF9udW1fYml0cyA9XG4gICAgaWYgYXJjaF9zaXh0eWZvdXJcbiAgICB0aGVuIChcbiAgICAgIGFzc2VydCAoSW50Lm51bV9iaXRzID0gNjMpO1xuICAgICAgMzApXG4gICAgZWxzZSAoXG4gICAgICBhc3NlcnQgKEludC5udW1fYml0cyA9IDMxIHx8IEludC5udW1fYml0cyA9IDMyKTtcbiAgICAgIDIyKVxuICA7O1xuXG4gIGxldCBtYXNrZWRfdHVwbGVfaWRfbnVtX2JpdHMgPSBJbnQubnVtX2JpdHMgLSBhcnJheV9pbmRleF9udW1fYml0c1xuXG4gIGxldCV0ZXN0IF8gPSBhcnJheV9pbmRleF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IG1hc2tlZF90dXBsZV9pZF9udW1fYml0cyA+IDBcbiAgbGV0JXRlc3QgXyA9IGFycmF5X2luZGV4X251bV9iaXRzICsgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzIDw9IEludC5udW1fYml0c1xuXG4gIGxldCBtYXhfYXJyYXlfbGVuZ3RoID0gMSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHNcblxuICBtb2R1bGUgVHVwbGVfaWQgOiBzaWdcbiAgICB0eXBlIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUyB3aXRoIHR5cGUgdCA6PSB0XG5cbiAgICB2YWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmdcbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBpbml0IDogdFxuICAgIHZhbCBuZXh0IDogdCAtPiB0XG4gICAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gICAgdmFsIHRvX2ludCA6IHQgLT4gaW50XG4gICAgdmFsIGV4YW1wbGVzIDogdCBsaXN0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgKCogV2UgZ3VhcmFudGVlIHRoYXQgdHVwbGUgaWRzIGFyZSBub25uZWdhdGl2ZSBzbyB0aGF0IHRoZXkgY2FuIGJlIGVuY29kZWQgaW5cbiAgICAgICBoZWFkZXJzLiAqKVxuICAgIGxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAwKVxuICAgIGxldCB0b19zdHJpbmcgPSBJbnQudG9fc3RyaW5nXG4gICAgbGV0IGVxdWFsICh0MSA6IHQpIHQyID0gdDEgPSB0MlxuICAgIGxldCBpbml0ID0gMFxuICAgIGxldCBuZXh0IHQgPSBpZiBhcmNoX3NpeHR5Zm91ciB0aGVuIHQgKyAxIGVsc2UgaWYgdCA9IEludC5tYXhfdmFsdWUgdGhlbiAwIGVsc2UgdCArIDFcbiAgICBsZXQgdG9faW50IHQgPSB0XG5cbiAgICBsZXQgb2ZfaW50IGkgPVxuICAgICAgaWYgaSA8IDBcbiAgICAgIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJUdXBsZV9pZC5vZl9pbnQgZ290IG5lZ2F0aXZlIGludFwiIGkgWyVzZXhwX29mOiBpbnRdO1xuICAgICAgaVxuICAgIDs7XG5cbiAgICBsZXQgZXhhbXBsZXMgPSBbIDA7IDE7IDB4MUZGRl9GRkZGOyBJbnQubWF4X3ZhbHVlIF1cbiAgZW5kXG5cbiAgbGV0IHR1cGxlX2lkX21hc2sgPSAoMSBsc2wgbWFza2VkX3R1cGxlX2lkX251bV9iaXRzKSAtIDFcblxuICBtb2R1bGUgUG9pbnRlciA6IHNpZ1xuICAgICgqIFtQb2ludGVyLnRdIGlzIGFuIGVuY29kaW5nIGFzIGFuIFtpbnRdIG9mIHRoZSBmb2xsb3dpbmcgc3VtIHR5cGU6XG5cbiAgICAgICB7W1xuICAgICAgICAgfCBOdWxsXG4gICAgICAgICB8IE5vcm1hbCBvZiB7IGhlYWRlcl9pbmRleCA6IGludDsgbWFza2VkX3R1cGxlX2lkIDogaW50IH1cbiAgICAgICBdfVxuXG4gICAgICAgVGhlIGVuY29kaW5nIGlzIGNob3NlbiB0byBvcHRpbWl6ZSB0aGUgbW9zdCBjb21tb24gb3BlcmF0aW9uLCBuYW1lbHkgdHVwbGUtc2xvdFxuICAgICAgIGFjY2VzcywgdGhlIFtzbG90X2luZGV4XSBmdW5jdGlvbi4gIFRoZSBlbmNvZGluZyBpcyBkZXNpZ25lZCBzbyB0aGF0IFtzbG90X2luZGV4XVxuICAgICAgIHByb2R1Y2VzIGEgbmVnYXRpdmUgbnVtYmVyIGZvciBbTnVsbF0sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHN1YnNlcXVlbnQgYXJyYXkgYm91bmRzXG4gICAgICAgY2hlY2sgdG8gZmFpbC4gKilcblxuICAgIHR5cGUgJ3Nsb3RzIHQgPSBwcml2YXRlIGludCBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgdmFsIHBoeXNfY29tcGFyZSA6ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgcGh5c19lcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG5cbiAgICAoKiBUaGUgbnVsbCBwb2ludGVyLiAgW251bGxdIGlzIGEgZnVuY3Rpb24gZHVlIHRvIGlzc3VlcyB3aXRoIHRoZSB2YWx1ZSByZXN0cmljdGlvbi4gKilcblxuICAgIHZhbCBudWxsIDogdW5pdCAtPiBfIHRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG5cbiAgICAoKiBOb3JtYWwgcG9pbnRlcnMuICopXG5cbiAgICB2YWwgY3JlYXRlIDogaGVhZGVyX2luZGV4OmludCAtPiBUdXBsZV9pZC50IC0+IF8gdFxuICAgIHZhbCBoZWFkZXJfaW5kZXggOiBfIHQgLT4gaW50XG4gICAgdmFsIG1hc2tlZF90dXBsZV9pZCA6IF8gdCAtPiBpbnRcbiAgICB2YWwgc2xvdF9pbmRleCA6IF8gdCAtPiAoXywgXykgU2xvdC50IC0+IGludFxuICAgIHZhbCBmaXJzdF9zbG90X2luZGV4IDogXyB0IC0+IGludFxuXG4gICAgbW9kdWxlIElkIDogc2lnXG4gICAgICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgICB2YWwgdG9faW50NjMgOiB0IC0+IEludDYzLnRcbiAgICAgIHZhbCBvZl9pbnQ2MyA6IEludDYzLnQgLT4gdFxuICAgIGVuZFxuXG4gICAgdmFsIHRvX2lkIDogXyB0IC0+IElkLnRcbiAgICB2YWwgb2ZfaWRfZXhuIDogSWQudCAtPiBfIHRcbiAgZW5kID0gc3RydWN0XG4gICAgKCogQSBwb2ludGVyIGlzIGVpdGhlciBbbnVsbF0gb3IgdGhlIChwb3NpdGl2ZSkgaW5kZXggaW4gdGhlIHBvb2wgb2YgdGhlIG5leHQtZnJlZVxuICAgICAgIGZpZWxkIHByZWNlZWRpbmcgdGhlIHR1cGxlJ3Mgc2xvdHMuICopXG4gICAgdHlwZSAnc2xvdHMgdCA9IGludCBbQEBkZXJpdmluZyB0eXBlcmVwXVxuXG4gICAgbGV0IHNleHBfb2ZfdCBfIHQgPSBTZXhwLkF0b20gKHNwcmludGYgXCI8UG9vbC5Qb2ludGVyLnQ6IDB4JTA4eD5cIiB0KVxuICAgIGxldCBwaHlzX2VxdWFsICh0MSA6IF8gdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG4gICAgbGV0IHBoeXNfY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgbnVsbCAoKSA9IC1tYXhfc2xvdCAtIDFcbiAgICBsZXQgaXNfbnVsbCB0ID0gcGh5c19lcXVhbCB0IChudWxsICgpKVxuXG4gICAgKCogW251bGxdIG11c3QgYmUgc3VjaCB0aGF0IFtudWxsICsgc2xvdF0gaXMgYW4gaW52YWxpZCBhcnJheSBpbmRleCBmb3IgYWxsIHNsb3RzLlxuICAgICAgIE90aGVyd2lzZSBnZXQvc2V0IG9uIHRoZSBudWxsIHBvaW50ZXIgbWF5IGxlYWQgdG8gYSBzZWdmYXVsdC4gKilcbiAgICBsZXQldGVzdCBfID0gbnVsbCAoKSArIG1heF9zbG90IDwgMFxuXG4gICAgbGV0IGNyZWF0ZSB+aGVhZGVyX2luZGV4ICh0dXBsZV9pZCA6IFR1cGxlX2lkLnQpID1cbiAgICAgIGhlYWRlcl9pbmRleFxuICAgICAgbG9yICgoVHVwbGVfaWQudG9faW50IHR1cGxlX2lkIGxhbmQgdHVwbGVfaWRfbWFzaykgbHNsIGFycmF5X2luZGV4X251bV9iaXRzKVxuICAgIDs7XG5cbiAgICBsZXQgaGVhZGVyX2luZGV4X21hc2sgPSAoMSBsc2wgYXJyYXlfaW5kZXhfbnVtX2JpdHMpIC0gMVxuICAgIGxldCBtYXNrZWRfdHVwbGVfaWQgdCA9IHQgbHNyIGFycmF5X2luZGV4X251bV9iaXRzXG4gICAgbGV0IGhlYWRlcl9pbmRleCB0ID0gdCBsYW5kIGhlYWRlcl9pbmRleF9tYXNrXG4gICAgbGV0IGludmFyaWFudCBfIHQgPSBpZiBub3QgKGlzX251bGwgdCkgdGhlbiBhc3NlcnQgKGhlYWRlcl9pbmRleCB0ID4gMClcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9IGludmFyaWFudCBpZ25vcmUgKG51bGwgKCkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gdHVwbGVfaWQgLT5cbiAgICAgICAgaW52YXJpYW50IGlnbm9yZSAoY3JlYXRlIH5oZWFkZXJfaW5kZXg6MSB0dXBsZV9pZCkpXG4gICAgOztcblxuICAgIGxldCBzbG90X2luZGV4IHQgc2xvdCA9IGhlYWRlcl9pbmRleCB0ICsgc2xvdFxuICAgIGxldCBmaXJzdF9zbG90X2luZGV4IHQgPSBzbG90X2luZGV4IHQgU2xvdC50MFxuXG4gICAgbW9kdWxlIElkID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgZW5kXG5cbiAgICBsZXQgdG9faWQgdCA9IElkLm9mX2ludCB0XG5cbiAgICBsZXQgb2ZfaWRfZXhuIGlkID1cbiAgICAgIHRyeVxuICAgICAgICBsZXQgdCA9IElkLnRvX2ludF9leG4gaWQgaW5cbiAgICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICAgIHRoZW4gdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgc2hvdWxkX2VxdWFsID1cbiAgICAgICAgICAgIGNyZWF0ZSB+aGVhZGVyX2luZGV4OihoZWFkZXJfaW5kZXggdCkgKFR1cGxlX2lkLm9mX2ludCAobWFza2VkX3R1cGxlX2lkIHQpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcGh5c19lcXVhbCB0IHNob3VsZF9lcXVhbFxuICAgICAgICAgIHRoZW4gdFxuICAgICAgICAgIGVsc2UgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJzaG91bGQgZXF1YWxcIiBzaG91bGRfZXF1YWwgWyVzZXhwX29mOiBfIHRdKVxuICAgICAgd2l0aFxuICAgICAgfCBleG4gLT5cbiAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgIFwiUG9pbnRlci5vZl9pZF9leG4gZ290IHN0cmFuZ2UgaWRcIlxuICAgICAgICAgIChpZCwgZXhuKVxuICAgICAgICAgIFslc2V4cF9vZjogSWQudCAqIGV4bl1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgSGVhZGVyIDogc2lnXG4gICAgKCogQSBbSGVhZGVyLnRdIGlzIGFuIGVuY29kaW5nIGFzIGFuIFtpbnRdIG9mIHRoZSBmb2xsb3dpbmcgdHlwZTpcblxuICAgICAgIHtbXG4gICAgICAgICB8IE51bGxcbiAgICAgICAgIHwgRnJlZSBvZiB7IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggOiBpbnQgfVxuICAgICAgICAgfCBVc2VkIG9mIHsgdHVwbGVfaWQgOiBpbnQgfVxuICAgICAgIF19XG5cbiAgICAgICBJZiBhIHR1cGxlIGlzIGZyZWUsIGl0cyBoZWFkZXIgaXMgc2V0IHRvIGVpdGhlciBbTnVsbF0gb3IgW0ZyZWVdIHdpdGhcbiAgICAgICBbbmV4dF9mcmVlX2hlYWRlcl9pbmRleF0gaW5kaWNhdGluZyB0aGUgaGVhZGVyIG9mIHRoZSBuZXh0IHR1cGxlIG9uIHRoZSBmcmVlIGxpc3QuXG4gICAgICAgSWYgYSB0dXBsZSBpcyBpbiB1c2UsIGl0IGhlYWRlciBpcyBzZXQgdG8gW1VzZWRdLiAqKVxuXG4gICAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIHZhbCBudWxsIDogdFxuICAgIHZhbCBpc19udWxsIDogdCAtPiBib29sXG4gICAgdmFsIGZyZWUgOiBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4OmludCAtPiB0XG4gICAgdmFsIGlzX2ZyZWUgOiB0IC0+IGJvb2xcbiAgICB2YWwgbmV4dF9mcmVlX2hlYWRlcl9pbmRleCA6IHQgLT4gaW50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc19mcmVlIHRdICopXG5cbiAgICB2YWwgdXNlZCA6IFR1cGxlX2lkLnQgLT4gdFxuICAgIHZhbCBpc191c2VkIDogdCAtPiBib29sXG4gICAgdmFsIHR1cGxlX2lkIDogdCAtPiBUdXBsZV9pZC50XG5cbiAgICAoKiBvbmx5IHZhbGlkIGlmIFtpc191c2VkIHRdICopXG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IGludFxuXG4gICAgbGV0IG51bGwgPSAwXG4gICAgbGV0IGlzX251bGwgdCA9IHQgPSAwXG5cbiAgICAoKiBXZSBrbm93IHRoYXQgaGVhZGVyIGluZGljZXMgYXJlIFs+IDBdLCBiZWNhdXNlIGluZGV4IFswXSBob2xkcyB0aGUgbWV0YWRhdGEuICopXG4gICAgbGV0IGZyZWUgfm5leHRfZnJlZV9oZWFkZXJfaW5kZXggPSBuZXh0X2ZyZWVfaGVhZGVyX2luZGV4XG4gICAgbGV0IGlzX2ZyZWUgdCA9IHQgPiAwXG4gICAgbGV0IG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCA9IHRcbiAgICBsZXQgdXNlZCAodHVwbGVfaWQgOiBUdXBsZV9pZC50KSA9IC0xIC0gKHR1cGxlX2lkIDo+IGludClcbiAgICBsZXQgaXNfdXNlZCB0ID0gdCA8IDBcbiAgICBsZXQgdHVwbGVfaWQgdCA9IFR1cGxlX2lkLm9mX2ludCAoLSh0ICsgMSkpXG5cbiAgICBsZXQldGVzdF91bml0IF8gPVxuICAgICAgTGlzdC5pdGVyIFR1cGxlX2lkLmV4YW1wbGVzIH5mOihmdW4gaWQgLT5cbiAgICAgICAgbGV0IHQgPSB1c2VkIGlkIGluXG4gICAgICAgIGFzc2VydCAoaXNfdXNlZCB0KTtcbiAgICAgICAgYXNzZXJ0IChUdXBsZV9pZC5lcXVhbCAodHVwbGVfaWQgdCkgaWQpKVxuICAgIDs7XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgaWYgaXNfbnVsbCB0XG4gICAgICB0aGVuIFNleHAuQXRvbSBcIm51bGxcIlxuICAgICAgZWxzZSBpZiBpc19mcmVlIHRcbiAgICAgIHRoZW4gU2V4cC4oTGlzdCBbIEF0b20gXCJGcmVlXCI7IEF0b20gKEludC50b19zdHJpbmcgKG5leHRfZnJlZV9oZWFkZXJfaW5kZXggdCkpIF0pXG4gICAgICBlbHNlIFNleHAuKExpc3QgWyBBdG9tIFwiVXNlZFwiOyBBdG9tIChUdXBsZV9pZC50b19zdHJpbmcgKHR1cGxlX2lkIHQpKSBdKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBtZXRhZGF0YV9pbmRleCA9IDBcbiAgbGV0IHN0YXJ0X29mX3R1cGxlc19pbmRleCA9IDFcblxuICBsZXQgbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgPVxuICAgIChtYXhfYXJyYXlfbGVuZ3RoIC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvICgxICsgc2xvdHNfcGVyX3R1cGxlKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgZm9yIHNsb3RzX3Blcl90dXBsZSA9IDEgdG8gbWF4X3Nsb3QgZG9cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIHN0YXJ0X29mX3R1cGxlc19pbmRleCArICgoMSArIHNsb3RzX3Blcl90dXBsZSkgKiBtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSlcbiAgICAgICAgPD0gbWF4X2FycmF5X2xlbmd0aClcbiAgICBkb25lXG4gIDs7XG5cbiAgbW9kdWxlIE1ldGFkYXRhID0gc3RydWN0XG4gICAgdHlwZSAnc2xvdHMgdCA9XG4gICAgICB7ICgqIFtzbG90c19wZXJfdHVwbGVdIGlzIG51bWJlciBvZiBzbG90cyBpbiBhIHR1cGxlIGFzIHNlZW4gYnkgdGhlIHVzZXI7IGkuZS4gbm90XG4gICAgICAgICAgIGNvdW50aW5nIHRoZSBuZXh0LWZyZWUgcG9pbnRlci4gKilcbiAgICAgICAgc2xvdHNfcGVyX3R1cGxlIDogaW50XG4gICAgICA7IGNhcGFjaXR5IDogaW50XG4gICAgICA7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgICA7IG11dGFibGUgbmV4dF9pZCA6IFR1cGxlX2lkLnRcbiAgICAgIDsgbXV0YWJsZSBmaXJzdF9mcmVlIDogSGVhZGVyLnRcbiAgICAgICgqIFtkdW1teV0gaXMgW05vbmVdIGluIGFuIHVuc2FmZSBwb29sLiAgSW4gYSBzYWZlIHBvb2wsIFtkdW1teV0gaXMgW1NvbWUgYV0sIHdpdGhcbiAgICAgICAgIFtVbmlmb3JtX2FycmF5Lmxlbmd0aCBhID0gc2xvdHNfcGVyX3R1cGxlXS4gIFtkdW1teV0gaXMgYWN0dWFsbHkgYSB0dXBsZSB2YWx1ZVxuICAgICAgICAgd2l0aCB0aGUgY29ycmVjdCB0eXBlIChjb3JyZXNwb25kaW5nIHRvIFsnc2xvdHNdKSwgYnV0IHdlIG1ha2UgdGhlIHR5cGUgb2ZcbiAgICAgICAgIFtkdW1teV0gYmUgW09iai50IFVuaWZvcm1fYXJyYXkudF0gYmVjYXVzZSB3ZSBjYW4ndCB3cml0ZSB0aGF0IHR5cGUgaGVyZS4gIEFsc28sXG4gICAgICAgICB0aGUgcHVycG9zZSBvZiBbZHVtbXldIGlzIHRvIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQsIG1ha2luZyBbZHVtbXldIGFuIFtPYmoudFxuICAgICAgICAgVW5pZm9ybV9hcnJheS50XSBsZXRzIHVzIGluaXRpYWxpemUgYSBwb29sIGVsZW1lbnQgdXNpbmcgW1VuaWZvcm1fYXJyYXkuYmxpdF1cbiAgICAgICAgIGZyb20gW2R1bW15XSB0byB0aGUgcG9vbCwgd2hpY2ggaXMgYW4gW09iai50IFVuaWZvcm1fYXJyYXkudF0uICopXG4gICAgICA7IGR1bW15IDogKE9iai50IFVuaWZvcm1fYXJyYXkudFtAc2V4cC5vcGFxdWVdKSBvcHRpb25cbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdCA9IDEgKyB0LnNsb3RzX3Blcl90dXBsZVxuICAgIGxldCBhcnJheV9sZW5ndGggdCA9IHN0YXJ0X29mX3R1cGxlc19pbmRleCArICh0LmNhcGFjaXR5ICogYXJyYXlfaW5kaWNlc19wZXJfdHVwbGUgdClcblxuICAgIGxldCBoZWFkZXJfaW5kZXhfdG9fdHVwbGVfbnVtIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgICAoaGVhZGVyX2luZGV4IC0gc3RhcnRfb2ZfdHVwbGVzX2luZGV4KSAvIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHRcbiAgICA7O1xuXG4gICAgbGV0IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggdCB0dXBsZV9udW0gPVxuICAgICAgc3RhcnRfb2ZfdHVwbGVzX2luZGV4ICsgKHR1cGxlX251bSAqIGFycmF5X2luZGljZXNfcGVyX3R1cGxlIHQpXG4gICAgOztcblxuICAgIGxldCB0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCB0IHR1cGxlX251bSA9XG4gICAgICB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IHQgdHVwbGVfbnVtICsgMVxuICAgIDs7XG5cbiAgICBsZXQgaXNfZnVsbCB0ID0gdC5sZW5ndGggPSB0LmNhcGFjaXR5XG4gIGVuZFxuXG4gIG9wZW4gTWV0YWRhdGFcblxuICAoKiBXZSB1c2UgdHlwZSBbT2JqLnRdIGJlY2F1c2UgdGhlIGFycmF5IGhvbGRzIGEgbWl4IG9mIGludGVnZXJzIGFzIHdlbGwgYXMgT0NhbWwgdmFsdWVzXG4gICAgIG9mIGFyYml0cmFyeSB0eXBlLiAqKVxuICB0eXBlICdzbG90cyB0ID0gT2JqLnQgVW5pZm9ybV9hcnJheS50XG5cbiAgbGV0IG1ldGFkYXRhICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpID1cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdCBtZXRhZGF0YV9pbmRleCB8PiAoT2JqLm9iaiA6IF8gLT4gc2xvdHMgTWV0YWRhdGEudClcbiAgOztcblxuICBsZXQgbGVuZ3RoIHQgPSAobWV0YWRhdGEgdCkubGVuZ3RoXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl90eSB0ID0gTWV0YWRhdGEuc2V4cF9vZl90IHNleHBfb2ZfdHkgKG1ldGFkYXRhIHQpXG5cbiAgKCogQmVjYXVzZSBbdW5zYWZlX2hlYWRlcl0gYW5kIFt1bnNhZmVfc2V0X2hlYWRlcl0gZG8gbm90IGRvIGEgYm91bmRzIGNoZWNrLCBvbmUgbXVzdCBiZVxuICAgICBzdXJlIHRoYXQgb25lIGhhcyBhIHZhbGlkIFtoZWFkZXJfaW5kZXhdIGJlZm9yZSBjYWxsaW5nIHRoZW0uICopXG4gIGxldCB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCA9XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgaGVhZGVyX2luZGV4IHw+IChPYmoub2JqIDogXyAtPiBIZWFkZXIudClcbiAgOztcblxuICBsZXQgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IChoZWFkZXIgOiBIZWFkZXIudCkgPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldF9pbnRfYXNzdW1pbmdfY3VycmVudGx5X2ludCB0IGhlYWRlcl9pbmRleCAoaGVhZGVyIDo+IGludClcbiAgOztcblxuICBsZXQgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXggPVxuICAgIGhlYWRlcl9pbmRleCA+PSBzdGFydF9vZl90dXBsZXNfaW5kZXggJiYgaGVhZGVyX2luZGV4IDwgVW5pZm9ybV9hcnJheS5sZW5ndGggdFxuICA7O1xuXG4gIGxldCB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlciA9XG4gICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBsZXQgaGVhZGVyID0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXggaW5cbiAgICBIZWFkZXIuaXNfdXNlZCBoZWFkZXJcbiAgICAmJiBUdXBsZV9pZC50b19pbnQgKEhlYWRlci50dXBsZV9pZCBoZWFkZXIpIGxhbmQgdHVwbGVfaWRfbWFza1xuICAgICAgID0gUG9pbnRlci5tYXNrZWRfdHVwbGVfaWQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciA9XG4gICAgaGVhZGVyX2luZGV4X2lzX2luX2JvdW5kcyB0IH5oZWFkZXJfaW5kZXg6KFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIpXG4gICAgKCogQXQgdGhpcyBwb2ludCwgd2Uga25vdyB0aGUgcG9pbnRlciBpc24ndCBbbnVsbF0gYW5kIGlzIGluIGJvdW5kcywgc28gd2Uga25vdyBpdCBpc1xuICAgICAgIHRoZSBpbmRleCBvZiBhIGhlYWRlciwgc2luY2Ugd2UgbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGFsbCBwb2ludGVycyBvdGhlciB0aGFuXG4gICAgICAgW251bGxdIGFyZS4gKilcbiAgICAmJiB1bnNhZmVfcG9pbnRlcl9pc19saXZlIHQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBpZF9vZl9wb2ludGVyIF90IHBvaW50ZXIgPSBQb2ludGVyLnRvX2lkIHBvaW50ZXJcblxuICBsZXQgaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGhlYWRlcl9pbmRleF9pc19pbl9ib3VuZHMgdCB+aGVhZGVyX2luZGV4XG4gICAgJiYgMFxuICAgICAgID0gKGhlYWRlcl9pbmRleCAtIHN0YXJ0X29mX3R1cGxlc19pbmRleClcbiAgICAgICAgIG1vZCBNZXRhZGF0YS5hcnJheV9pbmRpY2VzX3Blcl90dXBsZSBtZXRhZGF0YVxuICA7O1xuXG4gIGxldCBwb2ludGVyX29mX2lkX2V4biB0IGlkID1cbiAgICB0cnlcbiAgICAgIGxldCBwb2ludGVyID0gUG9pbnRlci5vZl9pZF9leG4gaWQgaW5cbiAgICAgIGlmIG5vdCAoUG9pbnRlci5pc19udWxsIHBvaW50ZXIpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICAgICAgaWYgbm90IChpc192YWxpZF9oZWFkZXJfaW5kZXggdCB+aGVhZGVyX2luZGV4KVxuICAgICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiaW52YWxpZCBoZWFkZXIgaW5kZXhcIiBoZWFkZXJfaW5kZXggWyVzZXhwX29mOiBpbnRdO1xuICAgICAgICBpZiBub3QgKHVuc2FmZV9wb2ludGVyX2lzX2xpdmUgdCBwb2ludGVyKSB0aGVuIGZhaWx3aXRoIFwicG9pbnRlciBub3QgbGl2ZVwiKTtcbiAgICAgIHBvaW50ZXJcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5wb2ludGVyX29mX2lkX2V4biBnb3QgaW52YWxpZCBpZFwiXG4gICAgICAgIChpZCwgdCwgZXhuKVxuICAgICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudCAqIF8gdCAqIGV4bl1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IF9pbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCBtZXRhZGF0YSkgaW5cbiAgICAgIE1ldGFkYXRhLkZpZWxkcy5pdGVyXG4gICAgICAgIH5zbG90c19wZXJfdHVwbGU6KGNoZWNrIChmdW4gc2xvdHNfcGVyX3R1cGxlIC0+IGFzc2VydCAoc2xvdHNfcGVyX3R1cGxlID4gMCkpKVxuICAgICAgICB+Y2FwYWNpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gY2FwYWNpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGNhcGFjaXR5ID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAoVW5pZm9ybV9hcnJheS5sZW5ndGggdCA9IE1ldGFkYXRhLmFycmF5X2xlbmd0aCBtZXRhZGF0YSkpKVxuICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoID49IDApO1xuICAgICAgICAgICAgIGFzc2VydCAobGVuZ3RoIDw9IG1ldGFkYXRhLmNhcGFjaXR5KSkpXG4gICAgICAgIH5uZXh0X2lkOihjaGVjayBUdXBsZV9pZC5pbnZhcmlhbnQpXG4gICAgICAgIH5maXJzdF9mcmVlOlxuICAgICAgICAgIChjaGVjayAoZnVuIGZpcnN0X2ZyZWUgLT5cbiAgICAgICAgICAgICBsZXQgZnJlZSA9IEFycmF5LmNyZWF0ZSB+bGVuOm1ldGFkYXRhLmNhcGFjaXR5IGZhbHNlIGluXG4gICAgICAgICAgICAgbGV0IHIgPSByZWYgZmlyc3RfZnJlZSBpblxuICAgICAgICAgICAgIHdoaWxlIG5vdCAoSGVhZGVyLmlzX251bGwgIXIpIGRvXG4gICAgICAgICAgICAgICBsZXQgaGVhZGVyID0gIXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoSGVhZGVyLmlzX2ZyZWUgaGVhZGVyKTtcbiAgICAgICAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSBIZWFkZXIubmV4dF9mcmVlX2hlYWRlcl9pbmRleCBoZWFkZXIgaW5cbiAgICAgICAgICAgICAgIGFzc2VydCAoaXNfdmFsaWRfaGVhZGVyX2luZGV4IHQgfmhlYWRlcl9pbmRleCk7XG4gICAgICAgICAgICAgICBsZXQgdHVwbGVfbnVtID0gaGVhZGVyX2luZGV4X3RvX3R1cGxlX251bSBtZXRhZGF0YSB+aGVhZGVyX2luZGV4IGluXG4gICAgICAgICAgICAgICBpZiBmcmVlLih0dXBsZV9udW0pXG4gICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiY3ljbGUgaW4gZnJlZSBsaXN0XCIgdHVwbGVfbnVtIFslc2V4cF9vZjogaW50XTtcbiAgICAgICAgICAgICAgIGZyZWUuKHR1cGxlX251bSkgPC0gdHJ1ZTtcbiAgICAgICAgICAgICAgIHIgOj0gdW5zYWZlX2hlYWRlciB0IH5oZWFkZXJfaW5kZXhcbiAgICAgICAgICAgICBkb25lKSlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoVW5pZm9ybV9hcnJheS5sZW5ndGggZHVtbXkgPSBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUpXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBmb3IgdHVwbGVfbnVtID0gMCB0byBtZXRhZGF0YS5jYXBhY2l0eSAtIDEgZG9cbiAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcl9pbmRleCA9IHR1cGxlX251bV90b19oZWFkZXJfaW5kZXggbWV0YWRhdGEgdHVwbGVfbnVtIGluXG4gICAgICAgICAgICAgICAgIGxldCBoZWFkZXIgPSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleCBpblxuICAgICAgICAgICAgICAgICBpZiBIZWFkZXIuaXNfZnJlZSBoZWFkZXJcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0X3Nsb3QgPSB0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0gaW5cbiAgICAgICAgICAgICAgICAgICBmb3Igc2xvdCA9IDAgdG8gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlIC0gMSBkb1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChPYmouaXNfaW50IChVbmlmb3JtX2FycmF5LmdldCB0IChmaXJzdF9zbG90ICsgc2xvdCkpKVxuICAgICAgICAgICAgICAgICAgIGRvbmUpXG4gICAgICAgICAgICAgICBkb25lKSlcbiAgICB3aXRoXG4gICAgfCBleG4gLT5cbiAgICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUG9vbC5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biwgdCkgWyVzZXhwX29mOiBleG4gKiBfIHRdXG4gIDs7XG5cbiAgbGV0IGNhcGFjaXR5IHQgPSAobWV0YWRhdGEgdCkuY2FwYWNpdHlcbiAgbGV0IGlzX2Z1bGwgdCA9IE1ldGFkYXRhLmlzX2Z1bGwgKG1ldGFkYXRhIHQpXG5cbiAgbGV0IHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQgbWV0YWRhdGEgfmhlYWRlcl9pbmRleCA9XG4gICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IG1ldGFkYXRhLmZpcnN0X2ZyZWU7XG4gICAgbWV0YWRhdGEuZmlyc3RfZnJlZSA8LSBIZWFkZXIuZnJlZSB+bmV4dF9mcmVlX2hlYWRlcl9pbmRleDpoZWFkZXJfaW5kZXhcbiAgOztcblxuICBsZXQgc2V0X21ldGFkYXRhICh0eXBlIHNsb3RzKSAodCA6IHNsb3RzIHQpIG1ldGFkYXRhID1cbiAgICBVbmlmb3JtX2FycmF5LnNldCB0IG1ldGFkYXRhX2luZGV4IChPYmoucmVwciAobWV0YWRhdGEgOiBzbG90cyBNZXRhZGF0YS50KSlcbiAgOztcblxuICBsZXQgY3JlYXRlX2FycmF5ICh0eXBlIHNsb3RzKSAobWV0YWRhdGEgOiBzbG90cyBNZXRhZGF0YS50KSA6IHNsb3RzIHQgPVxuICAgIGxldCB0ID0gVW5pZm9ybV9hcnJheS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KE1ldGFkYXRhLmFycmF5X2xlbmd0aCBtZXRhZGF0YSkgaW5cbiAgICBzZXRfbWV0YWRhdGEgdCBtZXRhZGF0YTtcbiAgICB0XG4gIDs7XG5cbiAgKCogSW5pdGlhbGl6ZSB0dXBsZXMgbnVtYmVyZWQgZnJvbSBbbG9dIChpbmNsdXNpdmUpIHVwIHRvIFtoaV0gKGV4Y2x1c2l2ZSkuICBGb3IgZWFjaFxuICAgICB0dXBsZSwgdGhpcyBwdXRzIGR1bW15IHZhbHVlcyBpbiB0aGUgdHVwbGUncyBzbG90cyBhbmQgYWRkcyB0aGUgdHVwbGUgdG8gdGhlIGZyZWVcbiAgICAgbGlzdC4gKilcbiAgbGV0IHVuc2FmZV9pbml0X3JhbmdlIHQgbWV0YWRhdGEgfmxvIH5oaSA9XG4gICAgKG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICAgfCBOb25lIC0+ICgpXG4gICAgIHwgU29tZSBkdW1teSAtPlxuICAgICAgIGZvciB0dXBsZV9udW0gPSBsbyB0byBoaSAtIDEgZG9cbiAgICAgICAgIFVuaWZvcm1fYXJyYXkuYmxpdFxuICAgICAgICAgICB+c3JjOmR1bW15XG4gICAgICAgICAgIH5zcmNfcG9zOjBcbiAgICAgICAgICAgfmRzdDp0XG4gICAgICAgICAgIH5kc3RfcG9zOih0dXBsZV9udW1fdG9fZmlyc3Rfc2xvdF9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0pXG4gICAgICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgZG9uZSk7XG4gICAgZm9yIHR1cGxlX251bSA9IGhpIC0gMSBkb3dudG8gbG8gZG9cbiAgICAgIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0XG4gICAgICAgIHRcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICAgfmhlYWRlcl9pbmRleDoodHVwbGVfbnVtX3RvX2hlYWRlcl9pbmRleCBtZXRhZGF0YSB0dXBsZV9udW0pXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBpZiBjYXBhY2l0eSA8IDBcbiAgICB0aGVuXG4gICAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wuY3JlYXRlIGdvdCBpbnZhbGlkIGNhcGFjaXR5XCIgY2FwYWNpdHkgWyVzZXhwX29mOiBpbnRdO1xuICAgIGxldCBzbG90c19wZXJfdHVwbGUgPSBTbG90cy5zbG90c19wZXJfdHVwbGUgc2xvdHMgaW5cbiAgICBsZXQgbWF4X2NhcGFjaXR5ID0gbWF4X2NhcGFjaXR5IH5zbG90c19wZXJfdHVwbGUgaW5cbiAgICBpZiBjYXBhY2l0eSA+IG1heF9jYXBhY2l0eVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5jcmVhdGUgZ290IHRvbyBsYXJnZSBjYXBhY2l0eVwiXG4gICAgICAgIChjYXBhY2l0eSwgYG1heCBtYXhfY2FwYWNpdHkpXG4gICAgICAgIFslc2V4cF9vZjogaW50ICogWyBgbWF4IG9mIGludCBdXTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHlcbiAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgOyBuZXh0X2lkID0gVHVwbGVfaWQuaW5pdFxuICAgICAgOyBmaXJzdF9mcmVlID0gSGVhZGVyLm51bGxcbiAgICAgIDsgZHVtbXlcbiAgICAgIH1cbiAgICBpblxuICAgIGxldCB0ID0gY3JlYXRlX2FycmF5IG1ldGFkYXRhIGluXG4gICAgdW5zYWZlX2luaXRfcmFuZ2UgdCBtZXRhZGF0YSB+bG86MCB+aGk6Y2FwYWNpdHk7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUgKHR5cGUgdHVwbGUpIChzbG90cyA6ICh0dXBsZSwgXykgU2xvdHMudCkgfmNhcGFjaXR5IH5kdW1teSA9XG4gICAgbGV0IGR1bW15ID1cbiAgICAgIGlmIFNsb3RzLnNsb3RzX3Blcl90dXBsZSBzbG90cyA9IDFcbiAgICAgIHRoZW4gVW5pZm9ybV9hcnJheS5zaW5nbGV0b24gKE9iai5yZXByIChkdW1teSA6IHR1cGxlKSlcbiAgICAgIGVsc2UgKE9iai5tYWdpYyAoZHVtbXkgOiB0dXBsZSkgOiBPYmoudCBVbmlmb3JtX2FycmF5LnQpXG4gICAgaW5cbiAgICBjcmVhdGVfd2l0aF9kdW1teSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15OihTb21lIGR1bW15KVxuICA7O1xuXG4gICgqIFB1cmdlIGEgcG9vbCBhbmQgbWFrZSBpdCB1bnVzYWJsZS4gKilcbiAgbGV0IGRlc3Ryb3kgdCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgICgqIFdlIGNsZWFyIG91dCBhbGwgdGhlIHBvb2wncyBlbnRyaWVzLCB3aGljaCBjYXVzZXMgYWxsIHBvaW50ZXJzIHRvIGJlIGludmFsaWQuICBUaGlzXG4gICAgICAgYWxzbyBwcmV2ZW50cyB0aGUgZGVzdHJveWVkIHBvb2wgZnJvbSB1bm5lY2Vzc2FyaWx5IGtlZXBpbmcgaGVhcCBibG9ja3MgYWxpdmUuXG4gICAgICAgVGhpcyBpcyBzaW1pbGFyIHRvIFtmcmVlXWluZyBhbGwgdGhlIGVudHJpZXMgd2l0aCB0aGUgZGlmZmVyZW5jZSB0aGF0IHdlIG1ha2UgdGhlXG4gICAgICAgZnJlZSBsaXN0IGVtcHR5IGFzIHdlbGwuICopXG4gICAgKG1hdGNoIG1ldGFkYXRhLmR1bW15IHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgICAgZm9yIGkgPSBzdGFydF9vZl90dXBsZXNfaW5kZXggdG8gVW5pZm9ybV9hcnJheS5sZW5ndGggdCAtIDEgZG9cbiAgICAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IGkgKE9iai5yZXByIDApXG4gICAgICAgZG9uZVxuICAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgICBmb3IgdHVwbGVfbnVtID0gMCB0byBtZXRhZGF0YS5jYXBhY2l0eSAtIDEgZG9cbiAgICAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IEhlYWRlci5udWxsO1xuICAgICAgICAgVW5pZm9ybV9hcnJheS5ibGl0XG4gICAgICAgICAgIH5zcmM6ZHVtbXlcbiAgICAgICAgICAgfnNyY19wb3M6MFxuICAgICAgICAgICB+ZHN0OnRcbiAgICAgICAgICAgfmRzdF9wb3M6KGhlYWRlcl9pbmRleCArIDEpXG4gICAgICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgZG9uZSk7XG4gICAgbGV0IG1ldGFkYXRhID1cbiAgICAgIHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlID0gbWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICA7IGNhcGFjaXR5ID0gMFxuICAgICAgOyBsZW5ndGggPSAwXG4gICAgICA7IG5leHRfaWQgPSBtZXRhZGF0YS5uZXh0X2lkXG4gICAgICA7IGZpcnN0X2ZyZWUgPSBIZWFkZXIubnVsbFxuICAgICAgOyBkdW1teSA9IG1ldGFkYXRhLmR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBzZXRfbWV0YWRhdGEgdCBtZXRhZGF0YVxuICA7O1xuXG4gIGxldFtAY29sZF0gZ3JvdyA/Y2FwYWNpdHkgdCA9XG4gICAgbGV0IHsgTWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgIDsgY2FwYWNpdHkgPSBvbGRfY2FwYWNpdHlcbiAgICAgICAgOyBsZW5ndGhcbiAgICAgICAgOyBuZXh0X2lkXG4gICAgICAgIDsgZmlyc3RfZnJlZSA9IF9cbiAgICAgICAgOyBkdW1teVxuICAgICAgICB9XG4gICAgICA9XG4gICAgICBtZXRhZGF0YSB0XG4gICAgaW5cbiAgICBsZXQgY2FwYWNpdHkgPVxuICAgICAgbWluIChtYXhfY2FwYWNpdHkgfnNsb3RzX3Blcl90dXBsZSkgKGdyb3dfY2FwYWNpdHkgfmNhcGFjaXR5IH5vbGRfY2FwYWNpdHkpXG4gICAgaW5cbiAgICBpZiBjYXBhY2l0eSA9IG9sZF9jYXBhY2l0eVxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwiUG9vbC5ncm93IGNhbm5vdCBncm93IHBvb2w7IGNhcGFjaXR5IGFscmVhZHkgYXQgbWF4aW11bVwiXG4gICAgICAgIGNhcGFjaXR5XG4gICAgICAgIFslc2V4cF9vZjogaW50XTtcbiAgICBsZXQgbWV0YWRhdGEgPVxuICAgICAgeyBNZXRhZGF0YS5zbG90c19wZXJfdHVwbGVcbiAgICAgIDsgY2FwYWNpdHlcbiAgICAgIDsgbGVuZ3RoXG4gICAgICA7IG5leHRfaWRcbiAgICAgIDsgZmlyc3RfZnJlZSA9IEhlYWRlci5udWxsXG4gICAgICA7IGR1bW15XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgdCcgPSBjcmVhdGVfYXJyYXkgbWV0YWRhdGEgaW5cbiAgICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICAgIH5zcmM6dFxuICAgICAgfnNyY19wb3M6c3RhcnRfb2ZfdHVwbGVzX2luZGV4XG4gICAgICB+ZHN0OnQnXG4gICAgICB+ZHN0X3BvczpzdGFydF9vZl90dXBsZXNfaW5kZXhcbiAgICAgIH5sZW46KG9sZF9jYXBhY2l0eSAqIE1ldGFkYXRhLmFycmF5X2luZGljZXNfcGVyX3R1cGxlIG1ldGFkYXRhKTtcbiAgICBkZXN0cm95IHQ7XG4gICAgdW5zYWZlX2luaXRfcmFuZ2UgdCcgbWV0YWRhdGEgfmxvOm9sZF9jYXBhY2l0eSB+aGk6Y2FwYWNpdHk7XG4gICAgZm9yIHR1cGxlX251bSA9IG9sZF9jYXBhY2l0eSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIGxldCBoZWFkZXJfaW5kZXggPSB0dXBsZV9udW1fdG9faGVhZGVyX2luZGV4IG1ldGFkYXRhIHR1cGxlX251bSBpblxuICAgICAgbGV0IGhlYWRlciA9IHVuc2FmZV9oZWFkZXIgdCcgfmhlYWRlcl9pbmRleCBpblxuICAgICAgaWYgbm90IChIZWFkZXIuaXNfdXNlZCBoZWFkZXIpXG4gICAgICB0aGVuIHVuc2FmZV9hZGRfdG9fZnJlZV9saXN0IHQnIG1ldGFkYXRhIH5oZWFkZXJfaW5kZXhcbiAgICBkb25lO1xuICAgIHQnXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9tYWxsb2NfZnVsbCB0ID1cbiAgICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlBvb2wubWFsbG9jIG9mIGZ1bGwgcG9vbFwiIHQgWyVzZXhwX29mOiBfIHRdXG4gIDs7XG5cbiAgbGV0IG1hbGxvYyAodHlwZSBzbG90cykgKHQgOiBzbG90cyB0KSA6IHNsb3RzIFBvaW50ZXIudCA9XG4gICAgbGV0IG1ldGFkYXRhID0gbWV0YWRhdGEgdCBpblxuICAgIGxldCBmaXJzdF9mcmVlID0gbWV0YWRhdGEuZmlyc3RfZnJlZSBpblxuICAgIGlmIEhlYWRlci5pc19udWxsIGZpcnN0X2ZyZWUgdGhlbiByYWlzZV9tYWxsb2NfZnVsbCB0O1xuICAgIGxldCBoZWFkZXJfaW5kZXggPSBIZWFkZXIubmV4dF9mcmVlX2hlYWRlcl9pbmRleCBmaXJzdF9mcmVlIGluXG4gICAgbWV0YWRhdGEuZmlyc3RfZnJlZSA8LSB1bnNhZmVfaGVhZGVyIHQgfmhlYWRlcl9pbmRleDtcbiAgICBtZXRhZGF0YS5sZW5ndGggPC0gbWV0YWRhdGEubGVuZ3RoICsgMTtcbiAgICBsZXQgdHVwbGVfaWQgPSBtZXRhZGF0YS5uZXh0X2lkIGluXG4gICAgdW5zYWZlX3NldF9oZWFkZXIgdCB+aGVhZGVyX2luZGV4IChIZWFkZXIudXNlZCB0dXBsZV9pZCk7XG4gICAgbWV0YWRhdGEubmV4dF9pZCA8LSBUdXBsZV9pZC5uZXh0IHR1cGxlX2lkO1xuICAgIFBvaW50ZXIuY3JlYXRlIH5oZWFkZXJfaW5kZXggdHVwbGVfaWRcbiAgOztcblxuICBsZXQgdW5zYWZlX2ZyZWUgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgKHBvaW50ZXIgOiBzbG90cyBQb2ludGVyLnQpID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbWV0YWRhdGEubGVuZ3RoIDwtIG1ldGFkYXRhLmxlbmd0aCAtIDE7XG4gICAgdW5zYWZlX2FkZF90b19mcmVlX2xpc3QgdCBtZXRhZGF0YSB+aGVhZGVyX2luZGV4OihQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyKTtcbiAgICBtYXRjaCBtZXRhZGF0YS5kdW1teSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgcG9zID0gUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIgaW5cbiAgICAgIGZvciBpID0gMCB0byBtZXRhZGF0YS5zbG90c19wZXJfdHVwbGUgLSAxIGRvXG4gICAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2NsZWFyX2lmX3BvaW50ZXIgdCAocG9zICsgaSlcbiAgICAgIGRvbmVcbiAgICB8IFNvbWUgZHVtbXkgLT5cbiAgICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX2JsaXRcbiAgICAgICAgfnNyYzpkdW1teVxuICAgICAgICB+c3JjX3BvczowXG4gICAgICAgIH5sZW46bWV0YWRhdGEuc2xvdHNfcGVyX3R1cGxlXG4gICAgICAgIH5kc3Q6dFxuICAgICAgICB+ZHN0X3BvczooUG9pbnRlci5maXJzdF9zbG90X2luZGV4IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGZyZWUgKHR5cGUgc2xvdHMpICh0IDogc2xvdHMgdCkgKHBvaW50ZXIgOiBzbG90cyBQb2ludGVyLnQpID1cbiAgICAoKiBDaGVjayBbcG9pbnRlcl9pc192YWxpZF0gdG86XG4gICAgICAgLSBhdm9pZCBmcmVlaW5nIGEgbnVsbCBwb2ludGVyXG4gICAgICAgLSBhdm9pZCBmcmVlaW5nIGEgZnJlZSBwb2ludGVyICh0aGlzIHdvdWxkIGxlYWQgdG8gYSBwb29sIGluY29uc2lzdGVuY3kpXG4gICAgICAgLSBiZSBhYmxlIHRvIHVzZSB1bnNhZmUgZnVuY3Rpb25zIGFmdGVyLiAqKVxuICAgIGlmIG5vdCAocG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJQb29sLmZyZWUgb2YgaW52YWxpZCBwb2ludGVyXCJcbiAgICAgICAgKHBvaW50ZXIsIHQpXG4gICAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnQgKiBfIHRdO1xuICAgIHVuc2FmZV9mcmVlIHQgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxIHQgYTAgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3MiB0IGEwIGExID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzMgdCBhMCBhMSBhMiA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIHBvaW50ZXJcbiAgOztcblxuICBsZXQgbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBwb2ludGVyXG4gIDs7XG5cbiAgbGV0IG5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIGxldCBwb2ludGVyID0gbWFsbG9jIHQgaW5cbiAgICBsZXQgb2Zmc2V0ID0gUG9pbnRlci5oZWFkZXJfaW5kZXggcG9pbnRlciBpblxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxKSAoT2JqLnJlcHIgYTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAyKSAoT2JqLnJlcHIgYTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAzKSAoT2JqLnJlcHIgYTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA0KSAoT2JqLnJlcHIgYTMpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA1KSAoT2JqLnJlcHIgYTQpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA2KSAoT2JqLnJlcHIgYTUpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA3KSAoT2JqLnJlcHIgYTYpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA4KSAoT2JqLnJlcHIgYTcpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyA5KSAoT2JqLnJlcHIgYTgpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMCkgKE9iai5yZXByIGE5KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTEpIChPYmoucmVwciBhMTApO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMikgKE9iai5yZXByIGExMSk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBsZXQgcG9pbnRlciA9IG1hbGxvYyB0IGluXG4gICAgbGV0IG9mZnNldCA9IFBvaW50ZXIuaGVhZGVyX2luZGV4IHBvaW50ZXIgaW5cbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMSkgKE9iai5yZXByIGEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMikgKE9iai5yZXByIGExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMykgKE9iai5yZXByIGEyKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNCkgKE9iai5yZXByIGEzKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNSkgKE9iai5yZXByIGE0KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNikgKE9iai5yZXByIGE1KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgNykgKE9iai5yZXByIGE2KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOCkgKE9iai5yZXByIGE3KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgOSkgKE9iai5yZXByIGE4KTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTApIChPYmoucmVwciBhOSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDExKSAoT2JqLnJlcHIgYTEwKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTIpIChPYmoucmVwciBhMTEpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMykgKE9iai5yZXByIGExMik7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBuZXcxNCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyIGExMyA9XG4gICAgbGV0IHBvaW50ZXIgPSBtYWxsb2MgdCBpblxuICAgIGxldCBvZmZzZXQgPSBQb2ludGVyLmhlYWRlcl9pbmRleCBwb2ludGVyIGluXG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEpIChPYmoucmVwciBhMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDIpIChPYmoucmVwciBhMSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDMpIChPYmoucmVwciBhMik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDQpIChPYmoucmVwciBhMyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDUpIChPYmoucmVwciBhNCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDYpIChPYmoucmVwciBhNSk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDcpIChPYmoucmVwciBhNik7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDgpIChPYmoucmVwciBhNyk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDkpIChPYmoucmVwciBhOCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEwKSAoT2JqLnJlcHIgYTkpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxMSkgKE9iai5yZXByIGExMCk7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQgKG9mZnNldCArIDEyKSAoT2JqLnJlcHIgYTExKTtcbiAgICBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdCAob2Zmc2V0ICsgMTMpIChPYmoucmVwciBhMTIpO1xuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChvZmZzZXQgKyAxNCkgKE9iai5yZXByIGExMyk7XG4gICAgcG9pbnRlclxuICA7O1xuXG4gIGxldCBnZXQgdCBwIHNsb3QgPSBPYmoub2JqIChVbmlmb3JtX2FycmF5LmdldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSlcblxuICBsZXQgdW5zYWZlX2dldCB0IHAgc2xvdCA9XG4gICAgT2JqLm9iaiAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpKVxuICA7O1xuXG4gIGxldCBzZXQgdCBwIHNsb3QgeCA9IFVuaWZvcm1fYXJyYXkuc2V0IHQgKFBvaW50ZXIuc2xvdF9pbmRleCBwIHNsb3QpIChPYmoucmVwciB4KVxuXG4gIGxldCB1bnNhZmVfc2V0IHQgcCBzbG90IHggPVxuICAgIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0IChQb2ludGVyLnNsb3RfaW5kZXggcCBzbG90KSAoT2JqLnJlcHIgeClcbiAgOztcblxuICBsZXQgZ2V0X3R1cGxlICh0eXBlIHR1cGxlKSAodCA6ICh0dXBsZSwgXykgU2xvdHMudCB0KSBwb2ludGVyID1cbiAgICBsZXQgbWV0YWRhdGEgPSBtZXRhZGF0YSB0IGluXG4gICAgbGV0IGxlbiA9IG1ldGFkYXRhLnNsb3RzX3Blcl90dXBsZSBpblxuICAgIGlmIGxlbiA9IDFcbiAgICB0aGVuIGdldCB0IHBvaW50ZXIgU2xvdC50MFxuICAgIGVsc2VcbiAgICAgIChPYmoubWFnaWNcbiAgICAgICAgIChVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6KFBvaW50ZXIuZmlyc3Rfc2xvdF9pbmRleCBwb2ludGVyKSB+bGVuXG4gICAgICAgICAgOiBPYmoudCBVbmlmb3JtX2FycmF5LnQpXG4gICAgICAgOiB0dXBsZSlcbiAgOztcbmVuZFxuXG5pbmNsdWRlIFBvb2xcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBpbmNsdWRlIFBvb2xcblxuICBsZXQgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSA9IGNyZWF0ZV93aXRoX2R1bW15IHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXk6Tm9uZVxuZW5kXG5cbm1vZHVsZSBEZWJ1ZyAoUG9vbCA6IFMpID0gc3RydWN0XG4gIG9wZW4gUG9vbFxuXG4gIGxldCBjaGVja19pbnZhcmlhbnQgPSByZWYgdHJ1ZVxuICBsZXQgc2hvd19tZXNzYWdlcyA9IHJlZiB0cnVlXG5cbiAgbGV0IGRlYnVnIG5hbWUgdHMgYXJnIHNleHBfb2ZfYXJnIHNleHBfb2ZfcmVzdWx0IGYgPVxuICAgIGxldCBwcmVmaXggPSBcIlBvb2wuXCIgaW5cbiAgICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIHRzIH5mOihpbnZhcmlhbnQgaWdub3JlKTtcbiAgICBpZiAhc2hvd19tZXNzYWdlcyB0aGVuIERlYnVnLmVwcmludHMgKGNvbmNhdCBbIHByZWZpeDsgbmFtZSBdKSBhcmcgc2V4cF9vZl9hcmc7XG4gICAgbGV0IHJlc3VsdF9vcl9leG4gPSBSZXN1bHQudHJ5X3dpdGggZiBpblxuICAgIGlmICFzaG93X21lc3NhZ2VzXG4gICAgdGhlblxuICAgICAgRGVidWcuZXByaW50c1xuICAgICAgICAoY29uY2F0IFsgcHJlZml4OyBuYW1lOyBcIiByZXN1bHRcIiBdKVxuICAgICAgICByZXN1bHRfb3JfZXhuXG4gICAgICAgIFslc2V4cF9vZjogKHJlc3VsdCwgZXhuKSBSZXN1bHQudF07XG4gICAgUmVzdWx0Lm9rX2V4biByZXN1bHRfb3JfZXhuXG4gIDs7XG5cbiAgbW9kdWxlIFNsb3RzID0gU2xvdHNcbiAgbW9kdWxlIFNsb3QgPSBTbG90XG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBzdHJ1Y3RcbiAgICBvcGVuIFBvaW50ZXJcblxuICAgIHR5cGUgbm9ucmVjICdzbG90cyB0ID0gJ3Nsb3RzIHQgW0BAZGVyaXZpbmcgc2V4cF9vZiwgdHlwZXJlcF1cblxuICAgIGxldCBwaHlzX2NvbXBhcmUgdDEgdDIgPVxuICAgICAgZGVidWdcbiAgICAgICAgXCJQb2ludGVyLnBoeXNfY29tcGFyZVwiXG4gICAgICAgIFtdXG4gICAgICAgICh0MSwgdDIpXG4gICAgICAgIFslc2V4cF9vZjogXyB0ICogXyB0XVxuICAgICAgICBbJXNleHBfb2Y6IGludF1cbiAgICAgICAgKGZ1biAoKSAtPiBwaHlzX2NvbXBhcmUgdDEgdDIpXG4gICAgOztcblxuICAgIGxldCBwaHlzX2VxdWFsIHQxIHQyID1cbiAgICAgIGRlYnVnXG4gICAgICAgIFwiUG9pbnRlci5waHlzX2VxdWFsXCJcbiAgICAgICAgW11cbiAgICAgICAgKHQxLCB0MilcbiAgICAgICAgWyVzZXhwX29mOiBfIHQgKiBfIHRdXG4gICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgKGZ1biAoKSAtPiBwaHlzX2VxdWFsIHQxIHQyKVxuICAgIDs7XG5cbiAgICBsZXQgaXNfbnVsbCB0ID1cbiAgICAgIGRlYnVnIFwiUG9pbnRlci5pc19udWxsXCIgW10gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBib29sXSAoZnVuICgpIC0+IGlzX251bGwgdClcbiAgICA7O1xuXG4gICAgbGV0IG51bGwgPSBudWxsXG5cbiAgICBtb2R1bGUgSWQgPSBzdHJ1Y3RcbiAgICAgIG9wZW4gSWRcblxuICAgICAgdHlwZSBub25yZWMgdCA9IHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwXVxuXG4gICAgICBsZXQgb2ZfaW50NjMgaSA9XG4gICAgICAgIGRlYnVnIFwiUG9pbnRlci5JZC5vZl9pbnQ2M1wiIFtdIGkgWyVzZXhwX29mOiBJbnQ2My50XSBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICBvZl9pbnQ2MyBpKVxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2ludDYzIHQgPVxuICAgICAgICBkZWJ1ZyBcIlBvaW50ZXIuSWQudG9faW50NjNcIiBbXSB0IFslc2V4cF9vZjogdF0gWyVzZXhwX29mOiBJbnQ2My50XSAoZnVuICgpIC0+XG4gICAgICAgICAgdG9faW50NjMgdClcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuXG4gIHR5cGUgbm9ucmVjICdzbG90cyB0ID0gJ3Nsb3RzIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBsZW5ndGggPSBsZW5ndGhcblxuICBsZXQgaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIgPVxuICAgIGRlYnVnXG4gICAgICBcImlkX29mX3BvaW50ZXJcIlxuICAgICAgWyB0IF1cbiAgICAgIHBvaW50ZXJcbiAgICAgIFslc2V4cF9vZjogXyBQb2ludGVyLnRdXG4gICAgICBbJXNleHBfb2Y6IFBvaW50ZXIuSWQudF1cbiAgICAgIChmdW4gKCkgLT4gaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIGRlYnVnXG4gICAgICBcInBvaW50ZXJfb2ZfaWRfZXhuXCJcbiAgICAgIFsgdCBdXG4gICAgICBpZFxuICAgICAgWyVzZXhwX29mOiBQb2ludGVyLklkLnRdXG4gICAgICBbJXNleHBfb2Y6IF8gUG9pbnRlci50XVxuICAgICAgKGZ1biAoKSAtPiBwb2ludGVyX29mX2lkX2V4biB0IGlkKVxuICA7O1xuXG4gIGxldCBwb2ludGVyX2lzX3ZhbGlkIHQgcG9pbnRlciA9XG4gICAgZGVidWdcbiAgICAgIFwicG9pbnRlcl9pc192YWxpZFwiXG4gICAgICBbIHQgXVxuICAgICAgcG9pbnRlclxuICAgICAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF1cbiAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgIChmdW4gKCkgLT4gcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIpXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzbG90cyB+Y2FwYWNpdHkgfmR1bW15ID1cbiAgICBkZWJ1ZyBcImNyZWF0ZVwiIFtdIGNhcGFjaXR5IFslc2V4cF9vZjogaW50XSBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgY3JlYXRlIHNsb3RzIH5jYXBhY2l0eSB+ZHVtbXkpXG4gIDs7XG5cbiAgbGV0IG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlID1cbiAgICBkZWJ1ZyBcIm1heF9jYXBhY2l0eVwiIFtdIHNsb3RzX3Blcl90dXBsZSBbJXNleHBfb2Y6IGludF0gWyVzZXhwX29mOiBpbnRdIChmdW4gKCkgLT5cbiAgICAgIG1heF9jYXBhY2l0eSB+c2xvdHNfcGVyX3R1cGxlKVxuICA7O1xuXG4gIGxldCBjYXBhY2l0eSB0ID1cbiAgICBkZWJ1ZyBcImNhcGFjaXR5XCIgWyB0IF0gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBpbnRdIChmdW4gKCkgLT4gY2FwYWNpdHkgdClcbiAgOztcblxuICBsZXQgZ3JvdyA/Y2FwYWNpdHkgdCA9XG4gICAgZGVidWdcbiAgICAgIFwiZ3Jvd1wiXG4gICAgICBbIHQgXVxuICAgICAgKGBjYXBhY2l0eSBjYXBhY2l0eSlcbiAgICAgIFslc2V4cF9vZjogWyBgY2FwYWNpdHkgb2YgaW50IG9wdGlvbiBdXVxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gICAgICAoZnVuICgpIC0+IGdyb3cgP2NhcGFjaXR5IHQpXG4gIDs7XG5cbiAgbGV0IGlzX2Z1bGwgdCA9XG4gICAgZGVidWcgXCJpc19mdWxsXCIgWyB0IF0gdCBbJXNleHBfb2Y6IF8gdF0gWyVzZXhwX29mOiBib29sXSAoZnVuICgpIC0+IGlzX2Z1bGwgdClcbiAgOztcblxuICBsZXQgdW5zYWZlX2ZyZWUgdCBwID1cbiAgICBkZWJ1ZyBcInVuc2FmZV9mcmVlXCIgWyB0IF0gcCBbJXNleHBfb2Y6IF8gUG9pbnRlci50XSBbJXNleHBfb2Y6IHVuaXRdIChmdW4gKCkgLT5cbiAgICAgIHVuc2FmZV9mcmVlIHQgcClcbiAgOztcblxuICBsZXQgZnJlZSB0IHAgPVxuICAgIGRlYnVnIFwiZnJlZVwiIFsgdCBdIHAgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+IGZyZWUgdCBwKVxuICA7O1xuXG4gIGxldCBkZWJ1Z19uZXcgdCBmID0gZGVidWcgXCJuZXdcIiBbIHQgXSAoKSBbJXNleHBfb2Y6IHVuaXRdIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIGZcbiAgbGV0IG5ldzEgdCBhMCA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MSB0IGEwKVxuICBsZXQgbmV3MiB0IGEwIGExID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXcyIHQgYTAgYTEpXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzMgdCBhMCBhMSBhMilcbiAgbGV0IG5ldzQgdCBhMCBhMSBhMiBhMyA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NCB0IGEwIGExIGEyIGEzKVxuICBsZXQgbmV3NSB0IGEwIGExIGEyIGEzIGE0ID0gZGVidWdfbmV3IHQgKGZ1biAoKSAtPiBuZXc1IHQgYTAgYTEgYTIgYTMgYTQpXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPSBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzYgdCBhMCBhMSBhMiBhMyBhNCBhNSlcbiAgbGV0IG5ldzcgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiA9IGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3NyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2KVxuXG4gIGxldCBuZXc4IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3KVxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3OSB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4KVxuICA7O1xuXG4gIGxldCBuZXcxMCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5ID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEwIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkpXG4gIDs7XG5cbiAgbGV0IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwKVxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIGRlYnVnX25ldyB0IChmdW4gKCkgLT4gbmV3MTIgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExKVxuICA7O1xuXG4gIGxldCBuZXcxMyB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgYTEyID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzEzIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIpXG4gIDs7XG5cbiAgbGV0IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzID1cbiAgICBkZWJ1Z19uZXcgdCAoZnVuICgpIC0+IG5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzKVxuICA7O1xuXG4gIGxldCBnZXRfdHVwbGUgdCBwb2ludGVyID1cbiAgICBkZWJ1ZyBcImdldF90dXBsZVwiIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiBfXSAoZnVuICgpIC0+XG4gICAgICBnZXRfdHVwbGUgdCBwb2ludGVyKVxuICA7O1xuXG4gIGxldCBkZWJ1Z19nZXQgbmFtZSBmIHQgcG9pbnRlciA9XG4gICAgZGVidWcgbmFtZSBbIHQgXSBwb2ludGVyIFslc2V4cF9vZjogXyBQb2ludGVyLnRdIFslc2V4cF9vZjogX10gKGZ1biAoKSAtPiBmIHQgcG9pbnRlcilcbiAgOztcblxuICBsZXQgZ2V0IHQgcG9pbnRlciBzbG90ID0gZGVidWdfZ2V0IFwiZ2V0XCIgZ2V0IHQgcG9pbnRlciBzbG90XG4gIGxldCB1bnNhZmVfZ2V0IHQgcG9pbnRlciBzbG90ID0gZGVidWdfZ2V0IFwidW5zYWZlX2dldFwiIHVuc2FmZV9nZXQgdCBwb2ludGVyIHNsb3RcblxuICBsZXQgZGVidWdfc2V0IG5hbWUgZiB0IHBvaW50ZXIgc2xvdCBhID1cbiAgICBkZWJ1ZyBuYW1lIFsgdCBdIHBvaW50ZXIgWyVzZXhwX29mOiBfIFBvaW50ZXIudF0gWyVzZXhwX29mOiB1bml0XSAoZnVuICgpIC0+XG4gICAgICBmIHQgcG9pbnRlciBzbG90IGEpXG4gIDs7XG5cbiAgbGV0IHNldCB0IHBvaW50ZXIgc2xvdCBhID0gZGVidWdfc2V0IFwic2V0XCIgc2V0IHQgcG9pbnRlciBzbG90IGFcbiAgbGV0IHVuc2FmZV9zZXQgdCBwb2ludGVyIHNsb3QgYSA9IGRlYnVnX3NldCBcInVuc2FmZV9zZXRcIiB1bnNhZmVfc2V0IHQgcG9pbnRlciBzbG90IGFcbmVuZFxuXG5tb2R1bGUgRXJyb3JfY2hlY2sgKFBvb2wgOiBTKSA9IHN0cnVjdFxuICBvcGVuIFBvb2xcbiAgbW9kdWxlIFNsb3RzID0gU2xvdHNcbiAgbW9kdWxlIFNsb3QgPSBTbG90XG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBzdHJ1Y3RcbiAgICB0eXBlICdzbG90cyB0ID1cbiAgICAgIHsgbXV0YWJsZSBpc192YWxpZCA6IGJvb2xcbiAgICAgIDsgcG9pbnRlciA6ICdzbG90cyBQb2ludGVyLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mLCB0eXBlcmVwXVxuXG4gICAgbGV0IGNyZWF0ZSBwb2ludGVyID0geyBpc192YWxpZCA9IHRydWU7IHBvaW50ZXIgfVxuICAgIGxldCBudWxsICgpID0geyBpc192YWxpZCA9IGZhbHNlOyBwb2ludGVyID0gUG9pbnRlci5udWxsICgpIH1cbiAgICBsZXQgcGh5c19jb21wYXJlIHQxIHQyID0gUG9pbnRlci5waHlzX2NvbXBhcmUgdDEucG9pbnRlciB0Mi5wb2ludGVyXG4gICAgbGV0IHBoeXNfZXF1YWwgdDEgdDIgPSBQb2ludGVyLnBoeXNfZXF1YWwgdDEucG9pbnRlciB0Mi5wb2ludGVyXG4gICAgbGV0IGlzX251bGwgdCA9IFBvaW50ZXIuaXNfbnVsbCB0LnBvaW50ZXJcblxuICAgIGxldCBmb2xsb3cgdCA9XG4gICAgICBpZiBub3QgdC5pc192YWxpZFxuICAgICAgdGhlbiBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcImF0dGVtcHQgdG8gdXNlIGludmFsaWQgcG9pbnRlclwiIHQgWyVzZXhwX29mOiBfIHRdO1xuICAgICAgdC5wb2ludGVyXG4gICAgOztcblxuICAgIGxldCBpbnZhbGlkYXRlIHQgPSB0LmlzX3ZhbGlkIDwtIGZhbHNlXG5cbiAgICBtb2R1bGUgSWQgPSBQb2ludGVyLklkXG4gIGVuZFxuXG4gIHR5cGUgJ3Nsb3RzIHQgPSAnc2xvdHMgUG9vbC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCA9IGludmFyaWFudFxuICBsZXQgbGVuZ3RoID0gbGVuZ3RoXG5cbiAgbGV0IHBvaW50ZXJfaXNfdmFsaWQgdCB7IFBvaW50ZXIuaXNfdmFsaWQ7IHBvaW50ZXIgfSA9XG4gICAgaXNfdmFsaWQgJiYgcG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXJcbiAgOztcblxuICAoKiBXZSBkb24ndCBkbyBbUG9pbnRlci5mb2xsb3cgcG9pbnRlcl0sIGJlY2F1c2UgdGhhdCB3b3VsZCBkaXNhbGxvdyBbaWRfb2ZfcG9pbnRlciB0XG4gICAgIChQb2ludGVyLm51bGwgKCkpXS4gKilcbiAgbGV0IGlkX29mX3BvaW50ZXIgdCBwb2ludGVyID0gaWRfb2ZfcG9pbnRlciB0IHBvaW50ZXIuUG9pbnRlci5wb2ludGVyXG5cbiAgbGV0IHBvaW50ZXJfb2ZfaWRfZXhuIHQgaWQgPVxuICAgIGxldCBwb2ludGVyID0gcG9pbnRlcl9vZl9pZF9leG4gdCBpZCBpblxuICAgIGxldCBpc192YWxpZCA9IFBvb2wucG9pbnRlcl9pc192YWxpZCB0IHBvaW50ZXIgaW5cbiAgICB7IFBvaW50ZXIuaXNfdmFsaWQ7IHBvaW50ZXIgfVxuICA7O1xuXG4gIGxldCBjcmVhdGUgPSBjcmVhdGVcbiAgbGV0IGNhcGFjaXR5ID0gY2FwYWNpdHlcbiAgbGV0IG1heF9jYXBhY2l0eSA9IG1heF9jYXBhY2l0eVxuICBsZXQgZ3JvdyA9IGdyb3dcbiAgbGV0IGlzX2Z1bGwgPSBpc19mdWxsXG4gIGxldCBnZXRfdHVwbGUgdCBwID0gZ2V0X3R1cGxlIHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCBnZXQgdCBwID0gZ2V0IHQgKFBvaW50ZXIuZm9sbG93IHApXG4gIGxldCB1bnNhZmVfZ2V0IHQgcCA9IHVuc2FmZV9nZXQgdCAoUG9pbnRlci5mb2xsb3cgcClcbiAgbGV0IHNldCB0IHAgc2xvdCB2ID0gc2V0IHQgKFBvaW50ZXIuZm9sbG93IHApIHNsb3QgdlxuICBsZXQgdW5zYWZlX3NldCB0IHAgc2xvdCB2ID0gdW5zYWZlX3NldCB0IChQb2ludGVyLmZvbGxvdyBwKSBzbG90IHZcblxuICBsZXQgdW5zYWZlX2ZyZWUgdCBwID1cbiAgICB1bnNhZmVfZnJlZSB0IChQb2ludGVyLmZvbGxvdyBwKTtcbiAgICBQb2ludGVyLmludmFsaWRhdGUgcFxuICA7O1xuXG4gIGxldCBmcmVlIHQgcCA9XG4gICAgZnJlZSB0IChQb2ludGVyLmZvbGxvdyBwKTtcbiAgICBQb2ludGVyLmludmFsaWRhdGUgcFxuICA7O1xuXG4gIGxldCBuZXcxIHQgYTAgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcxIHQgYTApXG4gIGxldCBuZXcyIHQgYTAgYTEgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXcyIHQgYTAgYTEpXG4gIGxldCBuZXczIHQgYTAgYTEgYTIgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXczIHQgYTAgYTEgYTIpXG4gIGxldCBuZXc0IHQgYTAgYTEgYTIgYTMgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc0IHQgYTAgYTEgYTIgYTMpXG4gIGxldCBuZXc1IHQgYTAgYTEgYTIgYTMgYTQgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc1IHQgYTAgYTEgYTIgYTMgYTQpXG4gIGxldCBuZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc2IHQgYTAgYTEgYTIgYTMgYTQgYTUpXG4gIGxldCBuZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgPSBQb2ludGVyLmNyZWF0ZSAoUG9vbC5uZXc3IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYpXG5cbiAgbGV0IG5ldzggdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3OCB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3KVxuICA7O1xuXG4gIGxldCBuZXc5IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzkgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOClcbiAgOztcblxuICBsZXQgbmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTAgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSlcbiAgOztcblxuICBsZXQgbmV3MTEgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzExIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwKVxuICA7O1xuXG4gIGxldCBuZXcxMiB0IGEwIGExIGEyIGEzIGE0IGE1IGE2IGE3IGE4IGE5IGExMCBhMTEgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzEyIHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSlcbiAgOztcblxuICBsZXQgbmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiA9XG4gICAgUG9pbnRlci5jcmVhdGUgKFBvb2wubmV3MTMgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMilcbiAgOztcblxuICBsZXQgbmV3MTQgdCBhMCBhMSBhMiBhMyBhNCBhNSBhNiBhNyBhOCBhOSBhMTAgYTExIGExMiBhMTMgPVxuICAgIFBvaW50ZXIuY3JlYXRlIChQb29sLm5ldzE0IHQgYTAgYTEgYTIgYTMgYTQgYTUgYTYgYTcgYTggYTkgYTEwIGExMSBhMTIgYTEzKVxuICA7O1xuZW5kXG4iLCIoKiBCZSBzdXJlIGFuZCBmaXJzdCByZWFkIHRoZSBpbXBsZW1lbnRhdGlvbiBvdmVydmlldyBpbiB0aW1pbmdfd2hlZWxfaW50Zi5tbC5cblxuICAgQSB0aW1pbmcgd2hlZWwgaXMgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgb2YgXCJsZXZlbHNcIiwgd2hlcmUgZWFjaCBsZXZlbCBpcyBhbiBhcnJheSBvZlxuICAgXCJzbG90c1wiLiAgRWFjaCBzbG90IHJlcHJlc2VudHMgYSByYW5nZSBvZiBrZXlzLCBhbmQgaG9sZHMgZWxlbWVudHMgYXNzb2NpYXRlZCB3aXRoXG4gICB0aG9zZSBrZXlzLiAgRWFjaCBsZXZlbCBpcyBkZXRlcm1pbmVkIGJ5IHR3byBwYXJhbWV0ZXJzOiBbYml0c10sIHRoZSBudW1iZXIgb2Yga2V5IGJpdHNcbiAgIHRoYXQgdGhhdCBsZXZlbCBpcyByZXNwb25zaWJsZSBmb3IgZGlzdGluZ3Vpc2hpbmcsIGFuZCBbYml0c19wZXJfc2xvdF0sIHRoZSBzaXplIG9mIHRoZVxuICAgcmFuZ2Ugb2Yga2V5cyB0aGF0IGNvcnJlc3BvbmQgdG8gYSBzaW5nbGUgc2xvdCBpbiB0aGUgYXJyYXkuICBDb25jZXB0dWFsbHksIGVhY2ggbGV2ZWxcbiAgIGJyZWFrcyB1cCBhbGwgcG9zc2libGUga2V5cyBpbnRvIHJhbmdlcyBvZiBzaXplIFsyXmJpdHNfcGVyX3Nsb3RdLiAgVGhlIGxlbmd0aCBvZiBhXG4gICBsZXZlbCBhcnJheSBpcyBbMl5iaXRzXSwgYW5kIHRoZSBhcnJheSBpcyB1c2VkIGxpa2UgYSBjaXJjdWxhciBidWZmZXIgdG8gdHJhdmVyc2UgdGhlXG4gICByYW5nZXMgYXMgdGhlIHRpbWluZyB3aGVlbCdzIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcy4gIEEga2V5IFtrXSwgaWYgc3RvcmVkIGluIHRoZVxuICAgbGV2ZWwsIGlzIHN0b3JlZCBhdCBpbmRleCBbKGsgLyAyXmJpdHNfcGVyX3Nsb3QpIG1vZCAyXmJpdHNdLlxuXG4gICBUaGUgc2V0dGluZ3Mgb2YgdGhlIFtiaXRzXSB2YWx1ZXMgYXJlIGNvbmZpZ3VyYWJsZSBieSB1c2VyIGNvZGUgdXNpbmcgW0xldmVsX2JpdHNdLFxuICAgYWx0aG91Z2ggdGhlcmUgaXMgYSByZWFzb25hYmxlIGRlZmF1bHQgc2V0dGluZy4gIEdpdmVuIHRoZSBbYml0c10gdmFsdWVzLCB0aGVcbiAgIFtiaXRzX3Blcl9zbG90XSBhcmUgY2hvc2VuIHNvIHRoYXQgW2JpdHNfcGVyX3Nsb3RdIGF0IGxldmVsIFtpXSBpcyB0aGUgc3VtIG9mIHRoZVxuICAgW2JpdHNdIGF0IGFsbCBsb3dlciBsZXZlbHMuICBUaHVzLCBhIHNsb3QncyByYW5nZSBhdCBsZXZlbCBbaV0gaXMgYXMgbGFyZ2UgYXMgdGhlXG4gICBlbnRpcmUgcmFuZ2Ugb2YgdGhlIGFycmF5IGF0IGxldmVsIFtpIC0gMV0uXG5cbiAgIEVhY2ggbGV2ZWwgaGFzIGEgW21pbl9hbGxvd2VkX2tleV0gYW5kIGEgW21heF9hbGxvd2VkX2tleV0gdGhhdCBkZXRlcm1pbmUgdGhlIHJhbmdlIG9mXG4gICBrZXlzIHRoYXQgaXQgY3VycmVudGx5IHJlcHJlc2VudHMuICBUaGUgY3J1Y2lhbCBpbnZhcmlhbnQgb2YgdGhlIHRpbWluZyB3aGVlbCBkYXRhXG4gICBzdHJ1Y3R1cmUgaXMgdGhhdCB0aGUgW21pbl9hbGxvd2VkX2tleV0gYXQgbGV2ZWwgW2ldIGlzIG5vIG1vcmUgdGhhbiB0aGVcbiAgIFttYXhfYWxsb3dlZF9rZXkgKyAxXSBvZiBsZXZlbCBbaSAtIDFdLiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGxldmVscyBjYW4gcmVwcmVzZW50IGFsbFxuICAga2V5cyBmcm9tIHRoZSBbbWluX2FsbG93ZWRfa2V5XSBvZiB0aGUgbG93ZXN0IGxldmVsIHRvIHRoZSBbbWF4X2FsbG93ZWRfa2V5XSBvZiB0aGVcbiAgIGhpZ2hlc3QgbGV2ZWwuICBUaGUgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHJlc3RvcmluZ1xuICAgdGhpcyBpbnZhcmlhbnQuXG5cbiAgIEF0IGxldmVsIDAsIFtiaXRzX3Blcl9zbG90ID0gMF0sIGFuZCBzbyB0aGUgc2l6ZSBvZiBlYWNoIHNsb3QgaXMgWzFdLiAgVGhhdCBpcywgbGV2ZWwgMFxuICAgcHJlY2lzZWx5IGRpc3Rpbmd1aXNoZXMgYWxsIHRoZSBrZXlzIGJldHdlZW4gaXRzIFttaW5fYWxsb3dlZF9rZXldICh3aGljaCBpcyB0aGUgc2FtZVxuICAgYXMgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIHRoZSBlbnRpcmUgdGltaW5nIHdoZWVsKSBhbmQgW21heF9hbGxvd2VkX2tleV0uICBBcyB0aGVcbiAgIGxldmVscyBpbmNyZWFzZSwgdGhlIFttaW5fYWxsb3dlZF9rZXldIGluY3JlYXNlcywgdGhlIFtiaXRzX3Blcl9zbG90XSBpbmNyZWFzZXMsIGFuZFxuICAgdGhlIHJhbmdlIG9mIGtleXMgc3RvcmVkIGluIHRoZSBsZXZlbCBpbmNyZWFzZXMgKGRyYW1hdGljYWxseSkuXG5cbiAgIFRoZSBpZGVhIG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzaW1pbGFyIHRvIHRoZSBoaWVyYXJjaGljYWwgYXBwcm9hY2ggZGVzY3JpYmVkIGluOlxuXG4gICB7dlxuICAgICBIYXNoZWQgYW5kIEhpZXJhcmNoaWNhbCBUaW1pbmcgV2hlZWxzOlxuICAgICBFZmZpY2llbnQgRGF0YSBTdHJ1Y3R1cmVzIGZvciBJbXBsZW1lbnRpbmcgYSBUaW1lciBGYWNpbGl0eVxuXG4gICAgIFZhcmdoZXNlICYgTGF1Y2ssIDE5OTZcbiAgIHZ9XG5cbiAgIEhvd2V2ZXIsIHRoZSBjb2RlIGlzIGNvbXBsZXRlbHkgbmV3LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIFRpbWluZ193aGVlbF9pbnRmXG5tb2R1bGUgUG9vbCA9IFR1cGxlX3Bvb2xcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxubGV0IHNleHBfb2ZfdF9zdHlsZSA6IFsgYFByZXR0eSB8IGBJbnRlcm5hbCBdIHJlZiA9IHJlZiBgUHJldHR5XG5cbigqIFt7bWF4LG1pbn1fdGltZV0gYXJlIGJvdW5kcyBvbiB0aGUgdGltZXMgc3VwcG9ydGVkIGJ5IGEgdGltaW5nIHdoZWVsLiAqKVxuXG5sZXQgbWF4X3RpbWUgPSBUaW1lX25zLm1heF92YWx1ZV9yZXByZXNlbnRhYmxlXG5sZXQgbWluX3RpbWUgPSBUaW1lX25zLmVwb2NoXG5cbm1vZHVsZSBOdW1fa2V5X2JpdHMgOiBzaWdcbiAgdHlwZSB0ID0gcHJpdmF0ZSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICBpbmNsdWRlIENvbXBhcmFibGUgd2l0aCB0eXBlIHQgOj0gdFxuICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgemVybyA6IHRcblxuICAoKiB2YWwgbWluX3ZhbHVlIDogdCAqKVxuXG4gIHZhbCBtYXhfdmFsdWUgOiB0XG4gIHZhbCB0b19pbnQgOiB0IC0+IGludFxuICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgdmFsICggKyApIDogdCAtPiB0IC0+IHRcbiAgdmFsICggLSApIDogdCAtPiB0IC0+IHRcbiAgdmFsIHBvdzIgOiB0IC0+IEludDYzLnRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIEludFxuXG4gIGxldCBtaW5fdmFsdWUgPSAwXG5cbiAgKCoqIFdlIHN1cHBvcnQgYWxsIG5vbi1uZWdhdGl2ZSBbVGltZV9ucy50XSB2YWx1ZXMuICopXG4gIGxldCBtYXhfdmFsdWUgPSBJbnQ2My5udW1fYml0cyAtIDFcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGFzc2VydCAodCA+PSBtaW5fdmFsdWUpO1xuICAgIGFzc2VydCAodCA8PSBtYXhfdmFsdWUpXG4gIDs7XG5cbiAgbGV0IG9mX2ludCBpID1cbiAgICBpbnZhcmlhbnQgaTtcbiAgICBpXG4gIDs7XG5cbiAgbGV0ICggKyApIHQxIHQyID1cbiAgICBsZXQgdCA9IHQxICsgdDIgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0ICggLSApIHQxIHQyID1cbiAgICBsZXQgdCA9IHQxIC0gdDIgaW5cbiAgICBpbnZhcmlhbnQgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IHBvdzIgdCA9IEludDYzLnNoaWZ0X2xlZnQgSW50NjMub25lIHRcbmVuZFxuXG5tb2R1bGUgTGV2ZWxfYml0cyA9IHN0cnVjdFxuICB0eXBlIHQgPSBOdW1fa2V5X2JpdHMudCBsaXN0IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBdXG5cbiAgbGV0IG1heF9udW1fYml0cyA9IChOdW1fa2V5X2JpdHMubWF4X3ZhbHVlIDo+IGludClcbiAgbGV0IG51bV9iaXRzX2ludGVybmFsIHQgPSBMaXN0LmZvbGQgdCB+aW5pdDpOdW1fa2V5X2JpdHMuemVybyB+ZjpOdW1fa2V5X2JpdHMuKCArIClcbiAgbGV0IG51bV9iaXRzIHQgPSAobnVtX2JpdHNfaW50ZXJuYWwgdCA6PiBpbnQpXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBhc3NlcnQgKG5vdCAoTGlzdC5pc19lbXB0eSB0KSk7XG4gICAgTGlzdC5pdGVyIHQgfmY6KGZ1biBudW1fa2V5X2JpdHMgLT5cbiAgICAgIE51bV9rZXlfYml0cy5pbnZhcmlhbnQgbnVtX2tleV9iaXRzO1xuICAgICAgYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+ICkgbnVtX2tleV9iaXRzIE51bV9rZXlfYml0cy56ZXJvKSk7XG4gICAgTnVtX2tleV9iaXRzLmludmFyaWFudCAobnVtX2JpdHNfaW50ZXJuYWwgdClcbiAgOztcblxuICBsZXQgdF9vZl9zZXhwIHNleHAgPVxuICAgIGxldCB0ID0gc2V4cCB8PiBbJW9mX3NleHA6IHRdIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGVfZXhuID8oZXh0ZW5kX3RvX21heF9udW1fYml0cyA9IGZhbHNlKSBpbnRzID1cbiAgICBpZiBMaXN0LmlzX2VtcHR5IGludHMgdGhlbiBmYWlsd2l0aCBcIkxldmVsX2JpdHMuY3JlYXRlX2V4biByZXF1aXJlcyBhIG5vbmVtcHR5IGxpc3RcIjtcbiAgICBpZiBMaXN0LmV4aXN0cyBpbnRzIH5mOihmdW4gYml0cyAtPiBiaXRzIDw9IDApXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gZ290IG5vbnBvc2l0aXZlIG51bSBiaXRzXCIgfl86KGludHMgOiBpbnQgbGlzdCldO1xuICAgIGxldCBudW1fYml0cyA9IExpc3QuZm9sZCBpbnRzIH5pbml0OjAgfmY6KCArICkgaW5cbiAgICBpZiBudW1fYml0cyA+IG1heF9udW1fYml0c1xuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJMZXZlbF9iaXRzLmNyZWF0ZV9leG4gZ290IHRvbyBtYW55IGJpdHNcIlxuICAgICAgICAgICAgfl86KGludHMgOiBpbnQgbGlzdClcbiAgICAgICAgICAgIH5nb3Q6KG51bV9iaXRzIDogaW50KVxuICAgICAgICAgICAgKG1heF9udW1fYml0cyA6IGludCldO1xuICAgIGxldCBpbnRzID1cbiAgICAgIGlmIGV4dGVuZF90b19tYXhfbnVtX2JpdHNcbiAgICAgIHRoZW4gaW50cyBAIExpc3QuaW5pdCAobWF4X251bV9iaXRzIC0gbnVtX2JpdHMpIH5mOihjb25zdCAxKVxuICAgICAgZWxzZSBpbnRzXG4gICAgaW5cbiAgICBMaXN0Lm1hcCBpbnRzIH5mOk51bV9rZXlfYml0cy5vZl9pbnRcbiAgOztcblxuICBsZXQgZGVmYXVsdCA9IGNyZWF0ZV9leG4gWyAxMTsgMTA7IDEwOyAxMDsgMTA7IDEwOyAxIF1cblxuICBsZXQgdHJpbSB0IH5tYXhfbnVtX2JpdHMgPVxuICAgIGlmIE51bV9rZXlfYml0cy4oIDw9ICkgKG51bV9iaXRzX2ludGVybmFsIHQpIG1heF9udW1fYml0c1xuICAgIHRoZW4gdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHJlYyBsb29wIHQgfnJlbWFpbmluZyA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgIHwgYiA6OiB0IC0+XG4gICAgICAgICAgaWYgTnVtX2tleV9iaXRzLiggPj0gKSBiIHJlbWFpbmluZ1xuICAgICAgICAgIHRoZW4gWyByZW1haW5pbmcgXVxuICAgICAgICAgIGVsc2UgYiA6OiBsb29wIHQgfnJlbWFpbmluZzooTnVtX2tleV9iaXRzLiggLSApIHJlbWFpbmluZyBiKVxuICAgICAgaW5cbiAgICAgIGxvb3AgdCB+cmVtYWluaW5nOm1heF9udW1fYml0cylcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uIDogc2lnXG4gIGluY2x1ZGUgQWxhcm1fcHJlY2lzaW9uXG5cbiAgdmFsIG51bV9rZXlfYml0cyA6IHQgLT4gTnVtX2tleV9iaXRzLnRcbiAgdmFsIGludGVydmFsX251bSA6IHQgLT4gVGltZV9ucy50IC0+IEludDYzLnRcbiAgdmFsIGludGVydmFsX251bV9zdGFydCA6IHQgLT4gSW50NjMudCAtPiBUaW1lX25zLnRcbmVuZCA9IHN0cnVjdFxuICAoKiogW3RdIGlzIHJlcHJlc2VudGVkIGFzIHRoZSBsb2cyIG9mIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzLiAqKVxuICB0eXBlIHQgPSBpbnQgW0BAZGVyaXZpbmcgY29tcGFyZSwgaGFzaF1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG4gIGxldCBudW1fa2V5X2JpdHMgdCA9IHQgfD4gTnVtX2tleV9iaXRzLm9mX2ludFxuXG4gIGxldCB0b19zcGFuIHQgPVxuICAgIGlmIHQgPCAwXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIltBbGFybV9wcmVjaXNpb24udG9fc3Bhbl0gb2YgbmVnYXRpdmUgcG93ZXIgb2YgdHdvIG5hbm9zZWNvbmRzXCIgfl86KHQgOiBpbnQpXTtcbiAgICBJbnQ2My4oc2hpZnRfbGVmdCBvbmUpIHQgfD4gVGltZV9ucy5TcGFuLm9mX2ludDYzX25zXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCB0ID0gWyVzZXhwICh0IHw+IHRvX3NwYW4gOiBUaW1lX25zLlNwYW4udCldXG4gIGxldCBvbmVfbmFub3NlY29uZCA9IDBcbiAgbGV0IGFib3V0X29uZV9taWNyb3NlY29uZCA9IDEwXG4gIGxldCBhYm91dF9vbmVfbWlsbGlzZWNvbmQgPSAyMFxuICBsZXQgYWJvdXRfb25lX3NlY29uZCA9IDMwXG4gIGxldCBhYm91dF9vbmVfZGF5ID0gNDZcbiAgbGV0IG11bCB0IH5wb3cyID0gdCArIHBvdzJcbiAgbGV0IGRpdiB0IH5wb3cyID0gdCAtIHBvdzJcbiAgbGV0IGludGVydmFsX251bSB0IHRpbWUgPSBJbnQ2My5zaGlmdF9yaWdodCAodGltZSB8PiBUaW1lX25zLnRvX2ludDYzX25zX3NpbmNlX2Vwb2NoKSB0XG5cbiAgbGV0IGludGVydmFsX251bV9zdGFydCB0IGludGVydmFsX251bSA9XG4gICAgSW50NjMuc2hpZnRfbGVmdCBpbnRlcnZhbF9udW0gdCB8PiBUaW1lX25zLm9mX2ludDYzX25zX3NpbmNlX2Vwb2NoXG4gIDs7XG5cbiAgbGV0IG9mX3NwYW5fZmxvb3JfcG93Ml9ucyBzcGFuID1cbiAgICBpZiBUaW1lX25zLlNwYW4uKCA8PSApIHNwYW4gVGltZV9ucy5TcGFuLnplcm9cbiAgICB0aGVuXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW0FsYXJtX3ByZWNpc2lvbi5vZl9zcGFuX2Zsb29yX3BvdzJfbnNdIGdvdCBub24tcG9zaXRpdmUgc3BhblwiXG4gICAgICAgICAgICAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KV07XG4gICAgc3BhbiB8PiBUaW1lX25zLlNwYW4udG9faW50NjNfbnMgfD4gSW50NjMuZmxvb3JfbG9nMlxuICA7O1xuXG4gIGxldCBvZl9zcGFuID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG5cbiAgbW9kdWxlIFVuc3RhYmxlID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0IFtAQGRlcml2aW5nIGNvbXBhcmVdXG5cbiAgICAgIGxldCBvZl9iaW5hYmxlID0gb2Zfc3Bhbl9mbG9vcl9wb3cyX25zXG4gICAgICBsZXQgdG9fYmluYWJsZSA9IHRvX3NwYW5cbiAgICAgIGxldCBvZl9zZXhwYWJsZSA9IG9mX3NwYW5fZmxvb3JfcG93Ml9uc1xuICAgICAgbGV0IHRvX3NleHBhYmxlID0gdG9fc3BhblxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBUXG4gICAgaW5jbHVkZSBCaW5hYmxlLk9mX2JpbmFibGVfd2l0aG91dF91dWlkIFtAYWxlcnQgXCItbGVnYWN5XCJdIChUaW1lX25zLlNwYW4pIChUKVxuICAgIGluY2x1ZGUgU2V4cGFibGUuT2Zfc2V4cGFibGUgKFRpbWVfbnMuU3BhbikgKFQpXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBDb25maWcgPSBzdHJ1Y3RcbiAgbGV0IGxldmVsX2JpdHNfZGVmYXVsdCA9IExldmVsX2JpdHMuZGVmYXVsdFxuXG4gIHR5cGUgdCA9XG4gICAgeyBhbGFybV9wcmVjaXNpb24gOiBBbGFybV9wcmVjaXNpb24uVW5zdGFibGUudFxuICAgIDsgbGV2ZWxfYml0cyA6IExldmVsX2JpdHMudCBbQGRlZmF1bHQgbGV2ZWxfYml0c19kZWZhdWx0XVxuICAgIDsgY2FwYWNpdHkgOiBpbnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBdXG5cbiAgbGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gQWxhcm1fcHJlY2lzaW9uLnRvX3NwYW4gdC5hbGFybV9wcmVjaXNpb25cblxuICAoKiBbbWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGxldmVsIGJpdHMgbmVlZGVkIGZvciBhXG4gICAgIHRpbWluZyB3aGVlbCB3aXRoIHRoZSBzcGVjaWZpZWQgW2FsYXJtX3ByZWNpc2lvbl0gdG8gYmUgYWJsZSB0byByZXByZXNlbnQgYWxsXG4gICAgIHBvc3NpYmxlIHRpbWVzIGZyb20gW1RpbWVfbnMuZXBvY2hdIG9ud2FyZC4gIFNpbmNlIG5vbi1uZWdhdGl2ZSB0aW1lcyBoYXZlIDYyIGJpdHMsXG4gICAgIHdlIHJlcXVpcmUgW0wgPD0gNjIgLSBBXSwgd2hlcmUgW0FdIGlzIHRoZSBudW1iZXIgb2YgYWxhcm0gYml0cyBhbmQgW0xdIGlzIHRoZVxuICAgICBudW1iZXIgb2YgbGV2ZWwgYml0cy4gKilcbiAgbGV0IG1heF9udW1fbGV2ZWxfYml0cyBhbGFybV9wcmVjaXNpb24gPVxuICAgIE51bV9rZXlfYml0cy4oIC0gKVxuICAgICAgTnVtX2tleV9iaXRzLm1heF92YWx1ZVxuICAgICAgKEFsYXJtX3ByZWNpc2lvbi5udW1fa2V5X2JpdHMgYWxhcm1fcHJlY2lzaW9uKVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBOdW1fa2V5X2JpdHMuKCA8PSApXG4gICAgICAgICAgKExldmVsX2JpdHMubnVtX2JpdHNfaW50ZXJuYWwgdC5sZXZlbF9iaXRzKVxuICAgICAgICAgIChtYXhfbnVtX2xldmVsX2JpdHMgdC5hbGFybV9wcmVjaXNpb24pKTtcbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmFsYXJtX3ByZWNpc2lvbjppZ25vcmVcbiAgICAgICAgfmNhcGFjaXR5Omlnbm9yZVxuICAgICAgICB+bGV2ZWxfYml0czooY2hlY2sgTGV2ZWxfYml0cy5pbnZhcmlhbnQpKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgP2NhcGFjaXR5ID8obGV2ZWxfYml0cyA9IGxldmVsX2JpdHNfZGVmYXVsdCkgfmFsYXJtX3ByZWNpc2lvbiAoKSA9XG4gICAgbGV0IGxldmVsX2JpdHMgPVxuICAgICAgTGV2ZWxfYml0cy50cmltIGxldmVsX2JpdHMgfm1heF9udW1fYml0czoobWF4X251bV9sZXZlbF9iaXRzIGFsYXJtX3ByZWNpc2lvbilcbiAgICBpblxuICAgIHsgYWxhcm1fcHJlY2lzaW9uOyBsZXZlbF9iaXRzOyBjYXBhY2l0eSB9XG4gIDs7XG5cbiAgbGV0IG1pY3Jvc2Vjb25kX3ByZWNpc2lvbiAoKSA9XG4gICAgY3JlYXRlXG4gICAgICAoKVxuICAgICAgfmFsYXJtX3ByZWNpc2lvbjpBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pY3Jvc2Vjb25kXG4gICAgICB+bGV2ZWxfYml0czooTGV2ZWxfYml0cy5jcmVhdGVfZXhuIFsgMTA7IDEwOyA2OyA2OyA1IF0pXG4gIDs7XG5cbiAgbGV0IGR1cmF0aW9ucyB0ID1cbiAgICBMaXN0LmZvbGRpbmdfbWFwXG4gICAgICB0LmxldmVsX2JpdHNcbiAgICAgIH5pbml0OihBbGFybV9wcmVjaXNpb24ubnVtX2tleV9iaXRzIHQuYWxhcm1fcHJlY2lzaW9uIHw+IE51bV9rZXlfYml0cy50b19pbnQpXG4gICAgICB+ZjooZnVuIG51bV9iaXRzX2FjY3VtIGxldmVsX251bV9iaXRzIC0+XG4gICAgICAgIGxldCBudW1fYml0c19hY2N1bSA9IG51bV9iaXRzX2FjY3VtICsgKGxldmVsX251bV9iaXRzIHw+IE51bV9rZXlfYml0cy50b19pbnQpIGluXG4gICAgICAgIGxldCBkdXJhdGlvbiA9XG4gICAgICAgICAgVGltZV9ucy5TcGFuLm9mX2ludDYzX25zXG4gICAgICAgICAgICAoaWYgbnVtX2JpdHNfYWNjdW0gPSBJbnQ2My5udW1fYml0cyAtIDFcbiAgICAgICAgICAgICB0aGVuIEludDYzLm1heF92YWx1ZVxuICAgICAgICAgICAgIGVsc2UgSW50NjMuc2hpZnRfbGVmdCBJbnQ2My5vbmUgbnVtX2JpdHNfYWNjdW0pXG4gICAgICAgIGluXG4gICAgICAgIG51bV9iaXRzX2FjY3VtLCBkdXJhdGlvbilcbiAgOztcbmVuZFxuXG5cbigqKiBUaW1pbmcgd2hlZWwgaXMgaW1wbGVtZW50ZWQgYXMgYSBwcmlvcml0eSBxdWV1ZSBpbiB3aGljaCB0aGUga2V5cyBhcmVcbiAgICBub24tbmVnYXRpdmUgaW50ZWdlcnMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJ2YWxzIG9mIHRpbWUuICBUaGUgcHJpb3JpdHkgcXVldWUgaXNcbiAgICB1bmxpa2UgYSB0eXBpY2FsIHByaW9yaXR5IHF1ZXVlIGluIHRoYXQgcmF0aGVyIHRoYW4gaGF2aW5nIGEgXCJkZWxldGUgbWluXCIgb3BlcmF0aW9uLFxuICAgIGl0IGhhcyBhIG5vbmRlY3JlYXNpbmcgbWluaW11bSBhbGxvd2VkIGtleSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGN1cnJlbnQgdGltZSxcbiAgICBhbmQgYW4gW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gb3BlcmF0aW9uLCB3aGljaCBpbXBsZW1lbnRzIFthZHZhbmNlX2Nsb2NrXS5cbiAgICBbaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XSBhcyBhIHNpZGUgZWZmZWN0IHJlbW92ZXMgYWxsIGVsZW1lbnRzIGZyb20gdGhlIHRpbWluZ1xuICAgIHdoZWVsIHdob3NlIGtleSBpcyBzbWFsbGVyIHRoYW4gdGhlIG5ldyBtaW5pbXVtLCB3aGljaCBpbXBsZW1lbnRzIGZpcmluZyB0aGUgYWxhcm1zXG4gICAgd2hvc2UgdGltZSBoYXMgZXhwaXJlZC5cblxuICAgIEFkZGluZyBlbGVtZW50cyB0byBhbmQgcmVtb3ZpbmcgZWxlbWVudHMgZnJvbSBhIHRpbWluZyB3aGVlbCB0YWtlcyBjb25zdGFudCB0aW1lLFxuICAgIHVubGlrZSBhIGhlYXAtYmFzZWQgcHJpb3JpdHkgcXVldWUgd2hpY2ggdGFrZXMgbG9nKE4pLCB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2ZcbiAgICBlbGVtZW50cyBpbiB0aGUgaGVhcC4gIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHRha2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRvIHRoZVxuICAgIGFtb3VudCBvZiBpbmNyZWFzZSBpbiB0aGUgbWluLWFsbG93ZWQga2V5LCBhcyBjb21wYXJlZCB0byBsb2coTikgZm9yIGEgaGVhcC4gIEl0IGlzXG4gICAgdGhlc2UgcGVyZm9ybWFuY2UgZGlmZmVyZW5jZXMgdGhhdCBtb3RpdmF0ZSB0aGUgZXhpc3RlbmNlIG9mIHRpbWluZyB3aGVlbHMgYW5kIG1ha2VcbiAgICB0aGVtIGEgZ29vZCBjaG9pY2UgZm9yIG1haW50YWluZyBhIHNldCBvZiBhbGFybXMuICBXaXRoIGEgdGltaW5nIHdoZWVsLCBvbmUgY2FuXG4gICAgc3VwcG9ydCBhbnkgbnVtYmVyIG9mIGFsYXJtcyBwYXlpbmcgY29uc3RhbnQgb3ZlcmhlYWQgcGVyIGFsYXJtLCB3aGlsZSBwYXlpbmcgYVxuICAgIHNtYWxsIGNvbnN0YW50IG92ZXJoZWFkIHBlciB1bml0IG9mIHRpbWUgcGFzc2VkLlxuXG4gICAgQXMgdGhlIG1pbmltdW0gYWxsb3dlZCBrZXkgaW5jcmVhc2VzLCB0aGUgdGltaW5nIHdoZWVsIGRvZXMgYSBsYXp5IHJhZGl4IHNvcnQgb2YgdGhlXG4gICAgZWxlbWVudCBrZXlzLCB3aXRoIGxldmVsIDAgaGFuZGxpbmcgdGhlIGxlYXN0IHNpZ25pZmljYW50IFtiXzBdIGJpdHMgaW4gYSBrZXksIGFuZFxuICAgIGVhY2ggc3Vic2VxdWVudCBsZXZlbCBbaV0gaGFuZGxpbmcgdGhlIG5leHQgbW9zdCBzaWduaWZpY2FudCBbYl9pXSBiaXRzLiAgVGhlIGxldmVsc1xuICAgIGhvbGQgaW5jcmVhc2luZ2x5IGxhcmdlciByYW5nZXMgb2Yga2V5cywgd2hlcmUgdGhlIHVuaW9uIG9mIGFsbCB0aGUgbGV2ZWxzIGNhbiBob2xkXG4gICAgYW55IGtleSBmcm9tIFttaW5fYWxsb3dlZF9rZXkgdF0gdG8gW21heF9hbGxvd2VkX2tleSB0XS4gIFdoZW4gYSBrZXkgaXMgYWRkZWQgdG8gdGhlXG4gICAgdGltaW5nIHdoZWVsLCBpdCBpcyBhZGRlZCBhdCB0aGUgbG93ZXN0IHBvc3NpYmxlIGxldmVsIHRoYXQgY2FuIHN0b3JlIHRoZSBrZXkuICBBc1xuICAgIHRoZSBtaW5pbXVtIGFsbG93ZWQga2V5IGluY3JlYXNlcywgdGltaW5nLXdoZWVsIGVsZW1lbnRzIG1vdmUgZG93biBsZXZlbHMgdW50aWwgdGhleVxuICAgIHJlYWNoIGxldmVsIDAsIGFuZCB0aGVuIGFyZSBldmVudHVhbGx5IHJlbW92ZWQuICAqKVxubW9kdWxlIFByaW9yaXR5X3F1ZXVlIDogc2lnXG4gIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHByaW9yaXR5X3F1ZXVlID0gJ2EgdFxuXG4gIG1vZHVsZSBLZXkgOiBJbnRlcnZhbF9udW1cblxuICBtb2R1bGUgRWx0IDogc2lnXG4gICAgKCoqIEFuIFtFbHQudF0gcmVwcmVzZW50cyBhbiBlbGVtZW50IHRoYXQgd2FzIGFkZGVkIHRvIGEgdGltaW5nIHdoZWVsLiAqKVxuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIGF0IDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiBUaW1lX25zLnRcbiAgICB2YWwga2V5IDogJ2EgcHJpb3JpdHlfcXVldWUgLT4gJ2EgdCAtPiBLZXkudFxuICAgIHZhbCB2YWx1ZSA6ICdhIHByaW9yaXR5X3F1ZXVlIC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgbnVsbCA6IHVuaXQgLT4gJ2EgdFxuICBlbmRcblxuICBtb2R1bGUgSW50ZXJuYWxfZWx0IDogc2lnXG4gICAgbW9kdWxlIFBvb2wgOiBzaWdcbiAgICAgIHR5cGUgJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0XG5cbiAgICB2YWwga2V5IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gS2V5LnRcbiAgICB2YWwgbWF4X2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgICB2YWwgbWluX2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgICB2YWwgaXNfbnVsbCA6IF8gdCAtPiBib29sXG4gICAgdmFsIHRvX2V4dGVybmFsIDogJ2EgdCAtPiAnYSBFbHQudFxuICBlbmRcblxuICB2YWwgcG9vbCA6ICdhIHQgLT4gJ2EgSW50ZXJuYWxfZWx0LlBvb2wudFxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcblxuICAoKiogW2NyZWF0ZSA/bGV2ZWxfYml0cyAoKV0gY3JlYXRlcyBhIG5ldyBlbXB0eSB0aW1pbmcgd2hlZWwsIFt0XSwgd2l0aCBbbGVuZ3RoIHQgPSAwXVxuICAgICAgYW5kIFttaW5fYWxsb3dlZF9rZXkgdCA9IDBdLiAqKVxuICB2YWwgY3JlYXRlIDogP2NhcGFjaXR5OmludCAtPiA/bGV2ZWxfYml0czpMZXZlbF9iaXRzLnQgLT4gdW5pdCAtPiAnYSB0XG5cbiAgKCoqIFtsZW5ndGggdF0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSB0aW1pbmcgd2hlZWwuICopXG4gIHZhbCBsZW5ndGggOiBfIHQgLT4gaW50XG5cbiAgKCoqIFttaW5fYWxsb3dlZF9rZXkgdF0gaXMgdGhlIG1pbmltdW0ga2V5IHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBbdF0uICBUaGlzIG9ubHlcbiAgICAgIGluZGljYXRlcyB0aGUgcG9zc2liaWxpdHk7IHRoZXJlIG5lZWQgbm90IGJlIGFuIGVsZW1lbnQgW2VsdF0gaW4gW3RdIHdpdGggW0VsdC5rZXlcbiAgICAgIGVsdCA9IG1pbl9hbGxvd2VkX2tleSB0XS4gIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBcIm1pbl9rZXlcIiBvcGVyYXRpb24gaW4gYVxuICAgICAgdHlwaWNhbCBwcmlvcml0eSBxdWV1ZS5cblxuICAgICAgW21pbl9hbGxvd2VkX2tleSB0XSBjYW4gaW5jcmVhc2Ugb3ZlciB0aW1lLCB2aWEgY2FsbHMgdG9cbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldLiAqKVxuICB2YWwgbWluX2FsbG93ZWRfa2V5IDogXyB0IC0+IEtleS50XG5cbiAgKCoqIFttYXhfYWxsb3dlZF9rZXkgdF0gaXMgdGhlIG1heGltdW0gYWxsb3dlZCBrZXkgdGhhdCBjYW4gYmUgc3RvcmVkIGluIFt0XS4gIEFzXG4gICAgICBbbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMsIHNvIGRvZXMgW21heF9hbGxvd2VkX2tleV07IGhvd2V2ZXIgaXQgaXMgbm90IHRoZSBjYXNlXG4gICAgICB0aGF0IFttYXhfYWxsb3dlZF9rZXkgdCAtIG1pbl9hbGxvd2VkX2tleSB0XSBpcyBhIGNvbnN0YW50LiAgSXQgaXMgZ3VhcmFudGVlZCB0aGF0XG4gICAgICBbbWF4X2FsbG93ZWRfa2V5IHQgPj0gbWluX2FsbG93ZWRfa2V5IHQgKyAyXkIgLSAxXSxcbiAgICAgIHdoZXJlIFtCXSBpcyB0aGUgc3VtIG9mIHRoZSBiX2kgaW4gW2xldmVsX2JpdHNdLiAqKVxuICB2YWwgbWF4X2FsbG93ZWRfa2V5IDogXyB0IC0+IEtleS50XG5cbiAgdmFsIG1pbl9lbHRfIDogJ2EgdCAtPiAnYSBJbnRlcm5hbF9lbHQudFxuICB2YWwgaW50ZXJuYWxfYWRkIDogJ2EgdCAtPiBrZXk6S2V5LnQgLT4gYXQ6VGltZV9ucy50IC0+ICdhIC0+ICdhIEludGVybmFsX2VsdC50XG5cbiAgKCoqIFtyZW1vdmUgdCBlbHRdIHJlbW92ZXMgW2VsdF0gZnJvbSBbdF0uICBJdCBpcyBhbiBlcnJvciBpZiBbZWx0XSBpcyBub3QgY3VycmVudGx5XG4gICAgICBpbiBbdF0sIGFuZCB0aGlzIGVycm9yIG1heSBvciBtYXkgbm90IGJlIGRldGVjdGVkLiAqKVxuICB2YWwgcmVtb3ZlIDogJ2EgdCAtPiAnYSBFbHQudCAtPiB1bml0XG5cbiAgdmFsIGNoYW5nZSA6ICdhIHQgLT4gJ2EgRWx0LnQgLT4ga2V5OktleS50IC0+IGF0OlRpbWVfbnMudCAtPiB1bml0XG5cbiAgKCoqIFtjbGVhciB0XSByZW1vdmVzIGFsbCBlbHRzIGZyb20gW3RdLiAqKVxuICB2YWwgY2xlYXIgOiBfIHQgLT4gdW5pdFxuXG4gIHZhbCBtZW0gOiAnYSB0IC0+ICdhIEVsdC50IC0+IGJvb2xcblxuICBtb2R1bGUgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdCA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZFxuICBlbmRcblxuICAoKiogW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleSB0IH5rZXkgfmhhbmRsZV9yZW1vdmVkXSBpbmNyZWFzZXMgdGhlIG1pbmltdW0gYWxsb3dlZFxuICAgICAga2V5IGluIFt0XSB0byBba2V5XSwgYW5kIHJlbW92ZXMgYWxsIGVsZW1lbnRzIHdpdGgga2V5cyBsZXNzIHRoYW4gW2tleV0sIGFwcGx5aW5nXG4gICAgICBbaGFuZGxlX3JlbW92ZWRdIHRvIGVhY2ggZWxlbWVudCB0aGF0IGlzIHJlbW92ZWQuICBJZiBba2V5IDw9IG1pbl9hbGxvd2VkX2tleSB0XSxcbiAgICAgIHRoZW4gW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gZG9lcyBub3RoaW5nLiAgT3RoZXJ3aXNlLCBpZlxuICAgICAgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0gcmV0dXJucyBzdWNjZXNzZnVsbHksIFttaW5fYWxsb3dlZF9rZXkgdCA9IGtleV0uXG5cbiAgICAgIFtpbmNyZWFzZV9taW5fYWxsb3dlZF9rZXldIHRha2VzIHRpbWUgcHJvcG9ydGlvbmFsIHRvIFtrZXkgLSBtaW5fYWxsb3dlZF9rZXkgdF0sXG4gICAgICBhbHRob3VnaCBwb3NzaWJseSBsZXNzIHRpbWUuXG5cbiAgICAgIEJlaGF2aW9yIGlzIHVuc3BlY2lmaWVkIGlmIFtoYW5kbGVfcmVtb3ZlZF0gYWNjZXNzZXMgW3RdIGluIGFueSB3YXkgb3RoZXIgdGhhblxuICAgICAgW0VsdF0gZnVuY3Rpb25zLiAqKVxuICB2YWwgaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5XG4gICAgOiAgJ2EgdFxuICAgIC0+IGtleTpLZXkudFxuICAgIC0+IGhhbmRsZV9yZW1vdmVkOignYSBFbHQudCAtPiB1bml0KVxuICAgIC0+IEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQudFxuXG4gIHZhbCBpdGVyIDogJ2EgdCAtPiBmOignYSBFbHQudCAtPiB1bml0KSAtPiB1bml0XG5cbiAgdmFsIGZpcmVfcGFzdF9hbGFybXNcbiAgICA6ICAnYSB0XG4gICAgLT4gaGFuZGxlX2ZpcmVkOignYSBFbHQudCAtPiB1bml0KVxuICAgIC0+IGtleTpLZXkudFxuICAgIC0+IG5vdzpUaW1lX25zLnRcbiAgICAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgKCoqIEVhY2ggc2xvdCBpbiBhIGxldmVsIGlzIGEgKHBvc3NpYmx5IG51bGwpIHBvaW50ZXIgdG8gYSBjaXJjdWxhciBkb3VibHktbGlua2VkIGxpc3RcbiAgICAgIG9mIGVsZW1lbnRzLiAgV2UgcG9vbCB0aGUgZWxlbWVudHMgc28gdGhhdCB3ZSBjYW4gcmV1c2UgdGhlbSBhZnRlciB0aGV5IGFyZSByZW1vdmVkXG4gICAgICBmcm9tIHRoZSB0aW1pbmcgd2hlZWwgKGVpdGhlciB2aWEgW3JlbW92ZV0gb3IgW2luY3JlYXNlX21pbl9hbGxvd2VkX2tleV0pLiAgSW5cbiAgICAgIGFkZGl0aW9uIHRvIHN0b3JpbmcgdGhlIFtrZXldLCBbYXRdLCBhbmQgW3ZhbHVlXSBpbiB0aGUgZWxlbWVudCwgd2Ugc3RvcmUgdGhlXG4gICAgICBbbGV2ZWxfaW5kZXhdIHNvIHRoYXQgd2UgY2FuIHF1aWNrbHkgZ2V0IHRvIHRoZSBsZXZlbCBob2xkaW5nIGFuIGVsZW1lbnQgd2hlbiB3ZVxuICAgICAgW3JlbW92ZV0gaXQuXG5cbiAgICAgIFdlIGRpc3Rpbmd1aXNoIGJldHdlZW4gW0V4dGVybmFsX2VsdF0gYW5kIFtJbnRlcm5hbF9lbHRdLCB3aGljaCBhcmUgdGhlIHNhbWVcbiAgICAgIHVuZGVybmVhdGguICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgYW4gW0ludGVybmFsX2VsdF0gaXMgZWl0aGVyIFtudWxsXSBvciBhXG4gICAgICB2YWxpZCBwb2ludGVyLiAgT24gdGhlIG90aGVyIGhhbmQsIFtFeHRlcm5hbF9lbHRdcyBhcmUgcmV0dXJuZWQgdG8gdXNlciBjb2RlLCBzb1xuICAgICAgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIG9mIHZhbGlkaXR5IC0tIHdlIGFsd2F5cyB2YWxpZGF0ZSBhbiBbRXh0ZXJuYWxfZWx0XSBiZWZvcmVcbiAgICAgIGRvaW5nIGFueXRoaW5nIHdpdGggaXQuXG5cbiAgICAgIEl0IGlzIHRoZXJlZm9yZSBPSyB0byB1c2UgW1Bvb2wuVW5zYWZlXSwgYmVjYXVzZSB3ZSB3aWxsIG5ldmVyIGF0dGVtcHQgdG8gYWNjZXNzIGFcbiAgICAgIHNsb3Qgb2YgYW4gaW52YWxpZCBwb2ludGVyLiAqKVxuICBtb2R1bGUgUG9vbCA9IFBvb2wuVW5zYWZlXG5cbiAgbW9kdWxlIFBvaW50ZXIgPSBQb29sLlBvaW50ZXJcblxuICBtb2R1bGUgS2V5IDogc2lnXG4gICAgKCoqIFtJbnRlcnZhbF9udW1dIGlzIHRoZSBwdWJsaWMgQVBJLiAgRXZlcnl0aGluZyBmb2xsb3dpbmcgaW4gdGhlIHNpZ25hdHVyZSBpc1xuICAgICAgICBmb3IgaW50ZXJuYWwgdXNlLiAqKVxuICAgIGluY2x1ZGUgVGltaW5nX3doZWVsX2ludGYuSW50ZXJ2YWxfbnVtXG5cbiAgICAoKiogW2FkZF9jbGFtcF90b19tYXhdIGRvZXNuJ3Qgd29yayBhdCBhbGwgd2l0aCBuZWdhdGl2ZSBzcGFucyAqKVxuICAgIHZhbCBhZGRfY2xhbXBfdG9fbWF4IDogdCAtPiBTcGFuLnQgLT4gdFxuXG4gICAgdmFsIHN1Y2NfY2xhbXBfdG9fbWF4IDogdCAtPiB0XG5cbiAgICAoKiogW1Nsb3RzX21hc2tdIGlzIHVzZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgYSBrZXkncyBzbG90IGluIGEgZ2l2ZW4gbGV2ZWwuICopXG4gICAgbW9kdWxlIFNsb3RzX21hc2sgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICB2YWwgY3JlYXRlIDogbGV2ZWxfYml0czpOdW1fa2V5X2JpdHMudCAtPiB0XG4gICAgICB2YWwgbmV4dF9zbG90IDogdCAtPiBpbnQgLT4gaW50XG4gICAgZW5kXG5cbiAgICAoKiogW01pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tdIGlzIHVzZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIG1pbmltdW0ga2V5IGluIHRoZVxuICAgICAgICBzYW1lIHNsb3QgYXMgYSBnaXZlbiBrZXkuICopXG4gICAgbW9kdWxlIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgOiBzaWdcbiAgICAgIHR5cGUgdCA9IHByaXZhdGUgSW50NjMudCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuXG4gICAgICBpbmNsdWRlIEVxdWFsLlMgd2l0aCB0eXBlIHQgOj0gdFxuXG4gICAgICB2YWwgY3JlYXRlIDogYml0c19wZXJfc2xvdDpOdW1fa2V5X2JpdHMudCAtPiB0XG4gICAgZW5kXG5cbiAgICB2YWwgbnVtX2tleXMgOiBOdW1fa2V5X2JpdHMudCAtPiBTcGFuLnRcbiAgICB2YWwgbWluX2tleV9pbl9zYW1lX3Nsb3QgOiB0IC0+IE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sudCAtPiB0XG4gICAgdmFsIHNsb3QgOiB0IC0+IGJpdHNfcGVyX3Nsb3Q6TnVtX2tleV9iaXRzLnQgLT4gc2xvdHNfbWFzazpTbG90c19tYXNrLnQgLT4gaW50XG4gIGVuZCA9IHN0cnVjdFxuICAgIG1vZHVsZSBTbG90c19tYXNrID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBJbnQ2My50IFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5cbiAgICAgIGxldCBjcmVhdGUgfmxldmVsX2JpdHMgPSBJbnQ2My4oIC0gKSAoTnVtX2tleV9iaXRzLnBvdzIgbGV2ZWxfYml0cykgSW50NjMub25lXG4gICAgICBsZXQgbmV4dF9zbG90IHQgc2xvdCA9IChzbG90ICsgMSkgbGFuZCBJbnQ2My50b19pbnRfZXhuIHRcbiAgICBlbmRcblxuICAgIGxldCBudW1fa2V5cyBudW1fYml0cyA9IE51bV9rZXlfYml0cy5wb3cyIG51bV9iaXRzXG5cbiAgICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgICBsZXQgY3JlYXRlIH5iaXRzX3Blcl9zbG90ID0gYml0X25vdCAoTnVtX2tleV9iaXRzLnBvdzIgYml0c19wZXJfc2xvdCAtIG9uZSlcbiAgICBlbmRcblxuICAgIG1vZHVsZSBTcGFuID0gc3RydWN0XG4gICAgICBpbmNsdWRlIEludDYzXG5cbiAgICAgIGxldCB0b19pbnQ2MyB0ID0gdFxuICAgICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgICBsZXQgc2NhbGVfaW50IHQgaSA9IHQgKiBvZl9pbnQgaVxuICAgIGVuZFxuXG4gICAgaW5jbHVkZSBJbnQ2M1xuXG4gICAgbGV0IG9mX2ludDYzIGkgPSBpXG4gICAgbGV0IHRvX2ludDYzIHQgPSB0XG4gICAgbGV0IGFkZCB0IGkgPSB0ICsgaVxuICAgIGxldCBhZGRfY2xhbXBfdG9fbWF4IHQgaSA9IGlmIHQgPiBtYXhfdmFsdWUgLSBpIHRoZW4gbWF4X3ZhbHVlIGVsc2UgdCArIGlcbiAgICBsZXQgc3VjY19jbGFtcF90b19tYXggdCA9IGlmIHQgPSBtYXhfdmFsdWUgdGhlbiBtYXhfdmFsdWUgZWxzZSBzdWNjIHRcbiAgICBsZXQgc3ViIHQgaSA9IHQgLSBpXG4gICAgbGV0IGRpZmYgdDEgdDIgPSB0MSAtIHQyXG5cbiAgICBsZXQgc2xvdCB0IH4oYml0c19wZXJfc2xvdCA6IE51bV9rZXlfYml0cy50KSB+c2xvdHNfbWFzayA9XG4gICAgICB0b19pbnRfZXhuIChiaXRfYW5kIChzaGlmdF9yaWdodCB0IChiaXRzX3Blcl9zbG90IDo+IGludCkpIHNsb3RzX21hc2spXG4gICAgOztcblxuICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdCB0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgPVxuICAgICAgYml0X2FuZCB0IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2tcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzayA9IEtleS5NaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gIG1vZHVsZSBTbG90c19tYXNrID0gS2V5LlNsb3RzX21hc2tcblxuICBtb2R1bGUgRXh0ZXJuYWxfZWx0ID0gc3RydWN0XG5cbiAgICAoKiogVGhlIFtwb29sX3Nsb3RzXSBoZXJlIGhhcyBub3RoaW5nIHRvIGRvIHdpdGggdGhlIHNsb3RzIGluIGEgbGV2ZWwgYXJyYXkuICBUaGlzIGlzXG4gICAgICAgIGZvciB0aGUgc2xvdHMgaW4gdGhlIHBvb2wgdHVwbGUgcmVwcmVzZW50aW5nIGEgbGV2ZWwgZWxlbWVudC4gKilcbiAgICB0eXBlICdhIHBvb2xfc2xvdHMgPVxuICAgICAgKCBLZXkudFxuICAgICAgLCBUaW1lX25zLnRcbiAgICAgICwgJ2FcbiAgICAgICwgaW50XG4gICAgICAsICdhIHBvb2xfc2xvdHMgUG9pbnRlci50XG4gICAgICAsICdhIHBvb2xfc2xvdHMgUG9pbnRlci50IClcbiAgICAgICAgUG9vbC5TbG90cy50NlxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhIHQgPSAnYSBwb29sX3Nsb3RzIFBvaW50ZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBQb2ludGVyLm51bGxcbiAgZW5kXG5cbiAgbW9kdWxlIEludGVybmFsX2VsdCA6IHNpZ1xuICAgIG1vZHVsZSBQb29sIDogc2lnXG4gICAgICB0eXBlICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuXG4gICAgICB2YWwgY3JlYXRlIDogP2NhcGFjaXR5OmludCAtPiB1bml0IC0+IF8gdFxuICAgICAgdmFsIGlzX2Z1bGwgOiBfIHQgLT4gYm9vbFxuICAgICAgdmFsIGdyb3cgOiA/Y2FwYWNpdHk6aW50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID0gcHJpdmF0ZSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgdmFsIG51bGwgOiB1bml0IC0+IF8gdFxuICAgIHZhbCBpc19udWxsIDogXyB0IC0+IGJvb2xcbiAgICB2YWwgaXNfdmFsaWQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBib29sXG5cbiAgICAoKiogRGVhbGluZyB3aXRoIFtFeHRlcm5hbF9lbHRdcy4gKilcblxuICAgIHZhbCBleHRlcm5hbF9pc192YWxpZCA6ICdhIFBvb2wudCAtPiAnYSBFeHRlcm5hbF9lbHQudCAtPiBib29sXG4gICAgdmFsIHRvX2V4dGVybmFsIDogJ2EgdCAtPiAnYSBFeHRlcm5hbF9lbHQudFxuICAgIHZhbCBvZl9leHRlcm5hbF9leG4gOiAnYSBQb29sLnQgLT4gJ2EgRXh0ZXJuYWxfZWx0LnQgLT4gJ2EgdFxuICAgIHZhbCBlcXVhbCA6ICdhIHQgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGludmFyaWFudCA6ICdhIFBvb2wudCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgdCAtPiB1bml0XG5cbiAgICAoKiogW2NyZWF0ZV0gcmV0dXJucyBhbiBlbGVtZW50IHdob3NlIFtuZXh0XSBhbmQgW3ByZXZdIGFyZSBbbnVsbF0uICopXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgJ2EgUG9vbC50XG4gICAgICAtPiBrZXk6S2V5LnRcbiAgICAgICgqKiBbYXRdIGlzIHVzZWQgd2hlbiB0aGUgcHJpb3JpdHkgcXVldWUgaXMgdXNlZCB0byBpbXBsZW1lbnQgYSB0aW1pbmcgd2hlZWwuICBJZlxuICAgICAgICAgIHVudXNlZCwgaXQgd2lsbCBiZSBbVGltZV9ucy5lcG9jaF0uICopXG4gICAgICAtPiBhdDpUaW1lX25zLnRcbiAgICAgIC0+IHZhbHVlOidhXG4gICAgICAtPiBsZXZlbF9pbmRleDppbnRcbiAgICAgIC0+ICdhIHRcblxuICAgIHZhbCBmcmVlIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIGFjY2Vzc29ycyAqKVxuXG4gICAgdmFsIGtleSA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IEtleS50XG4gICAgdmFsIGF0IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gVGltZV9ucy50XG4gICAgdmFsIGxldmVsX2luZGV4IDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gaW50XG4gICAgdmFsIG5leHQgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIHZhbHVlIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gJ2FcblxuICAgICgqKiBtdXRhdG9ycyAqKVxuXG4gICAgdmFsIHNldF9rZXkgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiBLZXkudCAtPiB1bml0XG4gICAgdmFsIHNldF9hdCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IFRpbWVfbnMudCAtPiB1bml0XG4gICAgdmFsIHNldF9sZXZlbF9pbmRleCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludCAtPiB1bml0XG5cbiAgICAoKiogW2luc2VydF9hdF9lbmQgcG9vbCB0IH50b19hZGRdIHRyZWF0cyBbdF0gYXMgdGhlIGhlYWQgb2YgdGhlIGxpc3QgYW5kIGFkZHMgW3RvX2FkZF1cbiAgICAgICAgdG8gdGhlIGVuZCBvZiBpdC4gKilcbiAgICB2YWwgaW5zZXJ0X2F0X2VuZCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IHRvX2FkZDonYSB0IC0+IHVuaXRcblxuICAgICgqKiBbbGlua190b19zZWxmIHBvb2wgdF0gbWFrZXMgW3RdIGJlIGEgc2luZ2xldG9uIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdC4gKilcbiAgICB2YWwgbGlua190b19zZWxmIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIFt1bmxpbmsgcCB0XSB1bmxpbmtzIFt0XSBmcm9tIHRoZSBjaXJjdWxhcmx5IGRvdWJseS1saW5rZWQgbGlzdCB0aGF0IGl0IGlzIGluLiAgSXRcbiAgICAgICAgY2hhbmdlcyB0aGUgcG9pbnRlcnMgb2YgW3RdJ3MgW3ByZXZdIGFuZCBbbmV4dF0gZWx0cywgYnV0IG5vdCBbdF0ncyBbcHJldl0gYW5kXG4gICAgICAgIFtuZXh0XSBwb2ludGVycy4gIFt1bmxpbmtdIGlzIG1lYW5pbmdsZXNzIGlmIFt0XSBpcyBhIHNpbmdsZXRvbi4gKilcbiAgICB2YWwgdW5saW5rIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gdW5pdFxuXG4gICAgKCoqIEl0ZXJhdG9ycy4gIFtpdGVyIHAgdCB+aW5pdCB+Zl0gdmlzaXRzIGVhY2ggZWxlbWVudCBpbiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0XG4gICAgICAgIGNvbnRhaW5pbmcgW3RdLCBzdGFydGluZyBhdCBbdF0sIGFuZCBmb2xsb3dpbmcgW25leHRdIHBvaW50ZXJzLiAgW2xlbmd0aF0gY291bnRzXG4gICAgICAgIGJ5IHZpc2l0aW5nIGVhY2ggZWxlbWVudCBpbiB0aGUgbGlzdC4gKilcbiAgICB2YWwgaXRlciA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGY6KCdhIHQgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGxlbmd0aCA6ICdhIFBvb2wudCAtPiAnYSB0IC0+IGludFxuXG4gICAgKCoqIFttYXhfYWxhcm1fdGltZSB0IGVsdCB+d2l0aF9rZXldIGZpbmRzIHRoZSBtYXggW2F0XSBpbiBbZWx0XSdzIGxpc3QgYW1vbmcgdGhlIGVsdHNcbiAgICAgICAgd2hvc2Uga2V5IGlzIFt3aXRoX2tleV0sIHJldHVybmluZyBbVGltZV9ucy5lcG9jaF0gaWYgdGhlIGxpc3QgaXMgZW1wdHkuICopXG4gICAgdmFsIG1heF9hbGFybV90aW1lIDogJ2EgUG9vbC50IC0+ICdhIHQgLT4gd2l0aF9rZXk6S2V5LnQgLT4gVGltZV9ucy50XG5cbiAgICB2YWwgbWluX2FsYXJtX3RpbWUgOiAnYSBQb29sLnQgLT4gJ2EgdCAtPiB3aXRoX2tleTpLZXkudCAtPiBUaW1lX25zLnRcbiAgZW5kID0gc3RydWN0XG4gICAgdHlwZSAnYSBwb29sX3Nsb3RzID0gJ2EgRXh0ZXJuYWxfZWx0LnBvb2xfc2xvdHMgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICB0eXBlICdhIHQgPSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBQb2ludGVyLm51bGxcbiAgICBsZXQgaXNfbnVsbCA9IFBvaW50ZXIuaXNfbnVsbFxuICAgIGxldCBlcXVhbCB0MSB0MiA9IFBvaW50ZXIucGh5c19lcXVhbCB0MSB0MlxuXG4gICAgbGV0IGNyZWF0ZSBwb29sIH5rZXkgfmF0IH52YWx1ZSB+bGV2ZWxfaW5kZXggPVxuICAgICAgUG9vbC5uZXc2IHBvb2wga2V5IGF0IHZhbHVlIGxldmVsX2luZGV4IChudWxsICgpKSAobnVsbCAoKSlcbiAgICA7O1xuXG4gICAgbGV0IGZyZWUgPSBQb29sLmZyZWVcbiAgICBsZXQga2V5IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDBcbiAgICBsZXQgc2V0X2tleSBwIHQgayA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDAga1xuICAgIGxldCBhdCBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQxXG4gICAgbGV0IHNldF9hdCBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDEgeFxuICAgIGxldCB2YWx1ZSBwIHQgPSBQb29sLmdldCBwIHQgUG9vbC5TbG90LnQyXG4gICAgbGV0IGxldmVsX2luZGV4IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDNcbiAgICBsZXQgc2V0X2xldmVsX2luZGV4IHAgdCBpID0gUG9vbC5zZXQgcCB0IFBvb2wuU2xvdC50MyBpXG4gICAgbGV0IHByZXYgcCB0ID0gUG9vbC5nZXQgcCB0IFBvb2wuU2xvdC50NFxuICAgIGxldCBzZXRfcHJldiBwIHQgeCA9IFBvb2wuc2V0IHAgdCBQb29sLlNsb3QudDQgeFxuICAgIGxldCBuZXh0IHAgdCA9IFBvb2wuZ2V0IHAgdCBQb29sLlNsb3QudDVcbiAgICBsZXQgc2V0X25leHQgcCB0IHggPSBQb29sLnNldCBwIHQgUG9vbC5TbG90LnQ1IHhcbiAgICBsZXQgaXNfdmFsaWQgcCB0ID0gUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHAgdFxuICAgIGxldCBleHRlcm5hbF9pc192YWxpZCA9IGlzX3ZhbGlkXG5cbiAgICBsZXQgaW52YXJpYW50IHBvb2wgaW52YXJpYW50X2EgdCA9XG4gICAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgICAgICBhc3NlcnQgKGlzX3ZhbGlkIHBvb2wgdCk7XG4gICAgICAgIGludmFyaWFudF9hICh2YWx1ZSBwb29sIHQpO1xuICAgICAgICBsZXQgbiA9IG5leHQgcG9vbCB0IGluXG4gICAgICAgIGFzc2VydCAoaXNfbnVsbCBuIHx8IFBvaW50ZXIucGh5c19lcXVhbCB0IChwcmV2IHBvb2wgbikpO1xuICAgICAgICBsZXQgcCA9IHByZXYgcG9vbCB0IGluXG4gICAgICAgIGFzc2VydCAoaXNfbnVsbCBwIHx8IFBvaW50ZXIucGh5c19lcXVhbCB0IChuZXh0IHBvb2wgcCkpKVxuICAgIDs7XG5cbiAgICBtb2R1bGUgUG9vbCA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgcG9vbF9zbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgbGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9IFBvb2wuaW52YXJpYW50IGlnbm9yZSB0XG4gICAgICBsZXQgY3JlYXRlID8oY2FwYWNpdHkgPSAxKSAoKSA9IFBvb2wuY3JlYXRlIFBvb2wuU2xvdHMudDYgfmNhcGFjaXR5XG4gICAgICBsZXQgZ3JvdyA9IFBvb2wuZ3Jvd1xuICAgICAgbGV0IGlzX2Z1bGwgPSBQb29sLmlzX2Z1bGxcbiAgICBlbmRcblxuICAgIGxldCB0b19leHRlcm5hbCB0ID0gdFxuXG4gICAgbGV0IG9mX2V4dGVybmFsX2V4biBwb29sIHQgPVxuICAgICAgaWYgaXNfdmFsaWQgcG9vbCB0IHRoZW4gdCBlbHNlIHJhaXNlX3MgWyVtZXNzYWdlIFwiVGltaW5nX3doZWVsIGdvdCBpbnZhbGlkIGFsYXJtXCJdXG4gICAgOztcblxuICAgIGxldCB1bmxpbmsgcG9vbCB0ID1cbiAgICAgIHNldF9uZXh0IHBvb2wgKHByZXYgcG9vbCB0KSAobmV4dCBwb29sIHQpO1xuICAgICAgc2V0X3ByZXYgcG9vbCAobmV4dCBwb29sIHQpIChwcmV2IHBvb2wgdClcbiAgICA7O1xuXG4gICAgbGV0IGxpbmsgcG9vbCBwcmV2IG5leHQgPVxuICAgICAgc2V0X25leHQgcG9vbCBwcmV2IG5leHQ7XG4gICAgICBzZXRfcHJldiBwb29sIG5leHQgcHJldlxuICAgIDs7XG5cbiAgICBsZXQgbGlua190b19zZWxmIHBvb2wgdCA9IGxpbmsgcG9vbCB0IHRcblxuICAgIGxldCBpbnNlcnRfYXRfZW5kIHBvb2wgdCB+dG9fYWRkID1cbiAgICAgIGxldCBwcmV2ID0gcHJldiBwb29sIHQgaW5cbiAgICAgIGxpbmsgcG9vbCBwcmV2IHRvX2FkZDtcbiAgICAgIGxpbmsgcG9vbCB0b19hZGQgdFxuICAgIDs7XG5cbiAgICBsZXQgaXRlciBwb29sIGZpcnN0IH5mID1cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICgqIFdlIGdldCBbbmV4dF0gYmVmb3JlIGNhbGxpbmcgW2ZdIHNvIHRoYXQgW2ZdIGNhbiBtb2RpZnkgb3IgW2ZyZWVdIFshY3VycmVudF0uICopXG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGYgIWN1cnJlbnQ7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lXG4gICAgOztcblxuICAgIGxldCBsZW5ndGggcG9vbCBmaXJzdCA9XG4gICAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBpbmNyIHI7XG4gICAgICAgIGxldCBuZXh0ID0gbmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIXJcbiAgICA7O1xuXG4gICAgbGV0IG1heF9hbGFybV90aW1lIHBvb2wgZmlyc3QgfndpdGhfa2V5ID1cbiAgICAgIGxldCBtYXhfYWxhcm1fdGltZSA9IHJlZiBUaW1lX25zLmVwb2NoIGluXG4gICAgICBsZXQgY3VycmVudCA9IHJlZiBmaXJzdCBpblxuICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgICBsZXQgbmV4dCA9IG5leHQgcG9vbCAhY3VycmVudCBpblxuICAgICAgICBpZiBLZXkuZXF1YWwgKGtleSBwb29sICFjdXJyZW50KSB3aXRoX2tleVxuICAgICAgICB0aGVuIG1heF9hbGFybV90aW1lIDo9IFRpbWVfbnMubWF4IChhdCBwb29sICFjdXJyZW50KSAhbWF4X2FsYXJtX3RpbWU7XG4gICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgICBkb25lO1xuICAgICAgIW1heF9hbGFybV90aW1lXG4gICAgOztcblxuICAgIGxldCBtaW5fYWxhcm1fdGltZSBwb29sIGZpcnN0IH53aXRoX2tleSA9XG4gICAgICBsZXQgbWluX2FsYXJtX3RpbWUgPSByZWYgVGltZV9ucy5tYXhfdmFsdWVfcmVwcmVzZW50YWJsZSBpblxuICAgICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICAgIGxldCBjb250aW51ZSA9IHJlZiB0cnVlIGluXG4gICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgbGV0IG5leHQgPSBuZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgICAgKCogVGhlIFtrZXldIGNvbXBhcmlzb24gaXMgbmVjZXNzYXJ5IGZvciBbbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsXSBiZWNhdXNlXG4gICAgICAgICAgIG1heCB0aW1lIHBlciBpbnRlcnZhbCBpcyBub3QgdGhlIHNhbWUgYXMgbWF4IHRpbWUgZ2xvYmFsbHkuXG5cbiAgICAgICAgICAgVGhpcyBpcyBub3Qgc28gZm9yIFttaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxdLCBzbyB0aGlzIGNhbiBwb3RlbnRpYWxseVxuICAgICAgICAgICBiZSBzaW1wbGlmaWVkLlxuXG4gICAgICAgICAgIFByb2JhYmx5IGEgYmV0dGVyIGNoYW5nZSB3b3VsZCBiZSB0byBzaW1wbHkgdHJhbnNmZXIgdGhlIGV2ZW50cyB0byB0aGVcbiAgICAgICAgICAgXCJmaXJlZFwiIGNvbGxlY3Rpb24gKGFuZCByZW5hbWUgaXQgdG8gXCJhYm91dCB0byBmaXJlXCIpLCB3aGljaCBpcyBzb3J0ZWQgYnkgdGltZSxcbiAgICAgICAgICAgc28gZ2V0dGluZyB0aGUgZmlyc3QgZWxlbWVudCBmcm9tIHRoYXQgY29sbGVjdGlvbiBpcyBlZmZpY2llbnQuXG4gICAgICAgICopXG4gICAgICAgIGlmIEtleS5lcXVhbCAoa2V5IHBvb2wgIWN1cnJlbnQpIHdpdGhfa2V5XG4gICAgICAgIHRoZW4gbWluX2FsYXJtX3RpbWUgOj0gVGltZV9ucy5taW4gKGF0IHBvb2wgIWN1cnJlbnQpICFtaW5fYWxhcm1fdGltZTtcbiAgICAgICAgaWYgcGh5c19lcXVhbCBuZXh0IGZpcnN0IHRoZW4gY29udGludWUgOj0gZmFsc2UgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgIGRvbmU7XG4gICAgICAhbWluX2FsYXJtX3RpbWVcbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgTGV2ZWwgPSBzdHJ1Y3RcbiAgICAoKiogRm9yIGdpdmVuIGxldmVsLCBvbmUgY2FuIGJyZWFrIHRoZSBiaXRzIGludG8gYSBrZXkgaW50byB0aHJlZSByZWdpb25zOlxuXG4gICAgICAgIHt2XG4gICAgICAgICB8IGhpZ2hlciBsZXZlbHMgfCB0aGlzIGxldmVsIHwgbG93ZXIgbGV2ZWxzIHxcbiAgICAgICAgdn1cblxuICAgICAgICBcIkxvd2VyIGxldmVsc1wiIGlzIFtiaXRzX3Blcl9zbG90XSBiaXRzIHdpZGUuICBcIlRoaXMgbGV2ZWxcIiBpcyBbYml0c10gd2lkZS4gKilcbiAgICB0eXBlICdhIHQgPVxuICAgICAgeyAoKiBUaGUgW2luZGV4XSBpbiB0aGUgdGltaW5nIHdoZWVsJ3MgYXJyYXkgb2YgbGV2ZWxzIHdoZXJlIHRoaXMgbGV2ZWwgaXMuICopXG4gICAgICAgIGluZGV4IDogaW50XG4gICAgICA7ICgqIEhvdyBtYW55IFtiaXRzXSB0aGlzIGxldmVsIGlzIHJlc3BvbnNpYmxlIGZvci4gKilcbiAgICAgICAgYml0cyA6IE51bV9rZXlfYml0cy50XG4gICAgICA7ICgqIFtzbG90c19tYXNrID0gU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHM6dC5iaXRzXS4gKilcbiAgICAgICAgc2xvdHNfbWFzayA6IFNsb3RzX21hc2sudFxuICAgICAgOyAoKiBbYml0c19wZXJfc2xvdF0gaXMgaG93IG1hbnkgYml0cyBlYWNoIHNsb3QgZGlzdGluZ3Vpc2hlcywgYW5kIGlzIHRoZSBzdW0gb2Ygb2ZcbiAgICAgICAgICAgdGhlIFtiaXRzXSBvZiBhbGwgdGhlIGxvd2VyIGxldmVscy4gKilcbiAgICAgICAgYml0c19wZXJfc2xvdCA6IE51bV9rZXlfYml0cy50XG4gICAgICA7IGtleXNfcGVyX3Nsb3QgOiBLZXkuU3Bhbi50XG4gICAgICA7IG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgOiBNaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrLnRcbiAgICAgIDsgKCogW2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSA9IGtleXNfcGVyX3Nsb3QgKiBBcnJheS5sZW5ndGggc2xvdHMgLSAxXSAqKVxuICAgICAgICBkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgOiBLZXkuU3Bhbi50XG4gICAgICA7ICgqIFtsZW5ndGhdIGlzIHRoZSBudW1iZXIgb2YgZWx0cyBjdXJyZW50bHkgaW4gdGhpcyBsZXZlbC4gKilcbiAgICAgICAgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgICAgIDsgKCogQWxsIGVsZW1lbnRzIGF0IHRoaXMgbGV2ZWwgaGF2ZSB0aGVpciBba2V5XSBzYXRpc2Z5IFttaW5fYWxsb3dlZF9rZXkgPD0ga2V5IDw9XG4gICAgICAgICAgIG1heF9hbGxvd2VkX2tleV0uICBBbHNvLCBbbWluX2FsbG93ZWRfa2V5XSBpcyBhIG11bHRpcGxlIG9mIFtrZXlzX3Blcl9zbG90XS4gKilcbiAgICAgICAgbXV0YWJsZSBtaW5fYWxsb3dlZF9rZXkgOiBLZXkudFxuICAgICAgOyBtdXRhYmxlIG1heF9hbGxvd2VkX2tleSA6IEtleS50XG4gICAgICA7ICgqIFtzbG90c10gaG9sZHMgdGhlIChwb3NzaWJseSBudWxsKSBwb2ludGVycyB0byB0aGUgY2lyY3VsYXIgZG91Ymx5LWxpbmtlZCBsaXN0c1xuICAgICAgICAgICBvZiBlbHRzLiAgW0FycmF5Lmxlbmd0aCBzbG90cyA9IDEgbHNsIGJpdHNdLiAqKVxuICAgICAgICBzbG90cyA6ICgnYSBJbnRlcm5hbF9lbHQudCBhcnJheVtAc2V4cC5vcGFxdWVdKVxuICAgICAgfVxuICAgIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICAgIGxldCBzbG90IHQgfmtleSA9IEtleS5zbG90IGtleSB+Yml0c19wZXJfc2xvdDp0LmJpdHNfcGVyX3Nsb3QgfnNsb3RzX21hc2s6dC5zbG90c19tYXNrXG4gICAgbGV0IG5leHRfc2xvdCB0IHNsb3QgPSBTbG90c19tYXNrLm5leHRfc2xvdCB0LnNsb3RzX21hc2sgc2xvdFxuXG4gICAgbGV0IG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgfmtleSA9XG4gICAgICBLZXkubWluX2tleV9pbl9zYW1lX3Nsb3Qga2V5IHQubWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgIDs7XG5cbiAgICBsZXQgY29tcHV0ZV9taW5fYWxsb3dlZF9rZXkgdCB+cHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgPVxuICAgICAgKCogVGhpcyBjb21wdXRhdGlvbiBlbnN1cmVzIHRoYXQgW3RdJ3MgW21pbl9hbGxvd2VkX2tleV0gaXMgYXMgbGFyZ2UgYXMgcG9zc2libGVcbiAgICAgICAgIHN1YmplY3QgdG8gdGhlIGNvbnN0cmFpbnQgdGhhdCB0aGVyZSBpcyBubyBpbnRlci1sZXZlbCBnYXAuICopXG4gICAgICBpZiBLZXkuZXF1YWwgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkgS2V5Lm1heF92YWx1ZVxuICAgICAgdGhlbiBLZXkubWF4X3ZhbHVlXG4gICAgICBlbHNlIG1pbl9rZXlfaW5fc2FtZV9zbG90IHQgfmtleTooS2V5LnN1Y2MgcHJldl9sZXZlbF9tYXhfYWxsb3dlZF9rZXkpXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIHBvb2wgOiAnYSBJbnRlcm5hbF9lbHQuUG9vbC50XG4gICAgOyAoKiBbbWluX2VsdF0gaXMgZWl0aGVyIG51bGwgb3IgYW4gZWxlbWVudCB3aG9zZSBrZXkgaXMgW2VsdF9rZXlfbG93ZXJfYm91bmRdLiAqKVxuICAgICAgbXV0YWJsZSBtaW5fZWx0IDogJ2EgSW50ZXJuYWxfZWx0LnRcbiAgICA7ICgqIEFsbCBlbGVtZW50cyBpbiB0aGUgcHJpb3JpdHkgcXVldWUgaGF2ZSB0aGVpciBrZXkgWz49IGVsdF9rZXlfbG93ZXJfYm91bmRdLiAqKVxuICAgICAgbXV0YWJsZSBlbHRfa2V5X2xvd2VyX2JvdW5kIDogS2V5LnRcbiAgICA7IGxldmVscyA6ICdhIExldmVsLnQgYXJyYXlcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICB0eXBlICdhIHByaW9yaXR5X3F1ZXVlID0gJ2EgdFxuXG4gIG1vZHVsZSBFbHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBFeHRlcm5hbF9lbHQudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgbGV0IG51bGwgPSBFeHRlcm5hbF9lbHQubnVsbFxuICAgIGxldCBhdCBwIHQgPSBJbnRlcm5hbF9lbHQuYXQgcC5wb29sIChJbnRlcm5hbF9lbHQub2ZfZXh0ZXJuYWxfZXhuIHAucG9vbCB0KVxuICAgIGxldCBrZXkgcCB0ID0gSW50ZXJuYWxfZWx0LmtleSBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gICAgbGV0IHZhbHVlIHAgdCA9IEludGVybmFsX2VsdC52YWx1ZSBwLnBvb2wgKEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcC5wb29sIHQpXG4gIGVuZFxuXG4gIGxldCBzZXhwX29mX3RfaW50ZXJuYWwgPSBzZXhwX29mX3RcbiAgbGV0IGlzX2VtcHR5IHQgPSBsZW5ndGggdCA9IDBcbiAgbGV0IG51bV9sZXZlbHMgdCA9IEFycmF5Lmxlbmd0aCB0LmxldmVsc1xuICBsZXQgbWluX2FsbG93ZWRfa2V5IHQgPSBMZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5sZXZlbHMuKDApXG4gIGxldCBtYXhfYWxsb3dlZF9rZXkgdCA9IExldmVsLm1heF9hbGxvd2VkX2tleSB0LmxldmVscy4obnVtX2xldmVscyB0IC0gMSlcblxuICBsZXQgaW50ZXJuYWxfaXRlciB0IH5mID1cbiAgICBpZiB0Lmxlbmd0aCA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGZvciBsZXZlbF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIGxldmVscyAtIDEgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGZvciBzbG90X2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggc2xvdHMgLSAxIGRvXG4gICAgICAgICAgICBsZXQgZWx0ID0gc2xvdHMuKHNsb3RfaW5kZXgpIGluXG4gICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdCkgdGhlbiBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZlxuICAgICAgICAgIGRvbmUpXG4gICAgICBkb25lKVxuICA7O1xuXG4gIGxldCBpdGVyIHQgfmYgPSBpbnRlcm5hbF9pdGVyIHQgfmY6KGYgOiBfIEVsdC50IC0+IHVuaXQgOj4gXyBJbnRlcm5hbF9lbHQudCAtPiB1bml0KVxuXG4gIG1vZHVsZSBQcmV0dHkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgICB0eXBlICdhIHQgPVxuICAgICAgICB7IGtleSA6IEtleS50XG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbWluX2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgbWF4X2FsbG93ZWRfa2V5IDogS2V5LnRcbiAgICAgIDsgZWx0cyA6ICdhIEVsdC50IGxpc3RcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgcHJldHR5IHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgeyBQcmV0dHkubWluX2FsbG93ZWRfa2V5ID0gbWluX2FsbG93ZWRfa2V5IHRcbiAgICA7IG1heF9hbGxvd2VkX2tleSA9IG1heF9hbGxvd2VkX2tleSB0XG4gICAgOyBlbHRzID1cbiAgICAgICAgKGxldCByID0gcmVmIFtdIGluXG4gICAgICAgICBpbnRlcm5hbF9pdGVyIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgICAgICAgclxuICAgICAgICAgICA6PSB7IFByZXR0eS5FbHQua2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdFxuICAgICAgICAgICAgICA7IHZhbHVlID0gSW50ZXJuYWxfZWx0LnZhbHVlIHBvb2wgZWx0XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOjogIXIpO1xuICAgICAgICAgTGlzdC5yZXYgIXIpXG4gICAgfVxuICA7O1xuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIG1hdGNoICFzZXhwX29mX3Rfc3R5bGUgd2l0aFxuICAgIHwgYEludGVybmFsIC0+IFslc2V4cCAodCA6IGEgdF9pbnRlcm5hbCldXG4gICAgfCBgUHJldHR5IC0+IFslc2V4cCAocHJldHR5IHQgOiBhIFByZXR0eS50KV1cbiAgOztcblxuICBsZXQgY29tcHV0ZV9kaWZmX21heF9taW5fYWxsb3dlZF9rZXkgfmxldmVsX2JpdHMgfmJpdHNfcGVyX3Nsb3QgPVxuICAgIGxldCBiaXRzID0gTnVtX2tleV9iaXRzLiggKyApIGxldmVsX2JpdHMgYml0c19wZXJfc2xvdCBpblxuICAgIGlmIE51bV9rZXlfYml0cy5lcXVhbCBiaXRzIE51bV9rZXlfYml0cy5tYXhfdmFsdWVcbiAgICB0aGVuIEtleS5TcGFuLm1heF92YWx1ZVxuICAgIGVsc2UgS2V5LlNwYW4ucHJlZCAoS2V5Lm51bV9rZXlzIGJpdHMpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgbGV2ZWxfaW52YXJpYW50IGxldmVsID1cbiAgICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSBsZXZlbCBbJXNleHBfb2Y6IF8gTGV2ZWwudF0gKGZ1biAoKSAtPlxuICAgICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCBsZXZlbCBmIGluXG4gICAgICAgIExldmVsLkZpZWxkcy5pdGVyXG4gICAgICAgICAgfmluZGV4OihjaGVjayAoZnVuIGluZGV4IC0+IGFzc2VydCAoaW5kZXggPj0gMCkpKVxuICAgICAgICAgIH5iaXRzOihjaGVjayAoZnVuIGJpdHMgLT4gYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+ICkgYml0cyBOdW1fa2V5X2JpdHMuemVybykpKVxuICAgICAgICAgIH5zbG90c19tYXNrOlxuICAgICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogU2xvdHNfbWFzay50XVxuICAgICAgICAgICAgICAgICAgfmV4cGVjdDooU2xvdHNfbWFzay5jcmVhdGUgfmxldmVsX2JpdHM6bGV2ZWwuYml0cykpKVxuICAgICAgICAgIH5iaXRzX3Blcl9zbG90OlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gYml0c19wZXJfc2xvdCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChOdW1fa2V5X2JpdHMuKCA+PSApIGJpdHNfcGVyX3Nsb3QgTnVtX2tleV9iaXRzLnplcm8pKSlcbiAgICAgICAgICB+a2V5c19wZXJfc2xvdDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGtleXNfcGVyX3Nsb3QgLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS5TcGFuLnRdXG4gICAgICAgICAgICAgICAgIGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDooS2V5Lm51bV9rZXlzIGxldmVsLmJpdHNfcGVyX3Nsb3QpKSlcbiAgICAgICAgICB+bWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzazpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2sgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suZXF1YWxcbiAgICAgICAgICAgICAgICAgICBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICAgICAgKE1pbl9rZXlfaW5fc2FtZV9zbG90X21hc2suY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgfmJpdHNfcGVyX3Nsb3Q6bGV2ZWwuYml0c19wZXJfc2xvdCkpKSlcbiAgICAgICAgICB+ZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5OlxuICAgICAgICAgICAgKGNoZWNrXG4gICAgICAgICAgICAgICAoWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAgICAgIChjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICAgICAgICB+bGV2ZWxfYml0czpsZXZlbC5iaXRzXG4gICAgICAgICAgICAgICAgICAgICAgIH5iaXRzX3Blcl9zbG90OmxldmVsLmJpdHNfcGVyX3Nsb3QpKSlcbiAgICAgICAgICB+bGVuZ3RoOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gbGVuZ3RoIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICBsZW5ndGhcbiAgICAgICAgICAgICAgICAgPSBBcnJheS5mb2xkIGxldmVsLnNsb3RzIH5pbml0OjAgfmY6KGZ1biBuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICAgICAgICAgICAgICAgICAgIHRoZW4gblxuICAgICAgICAgICAgICAgICAgIGVsc2UgbiArIEludGVybmFsX2VsdC5sZW5ndGggcG9vbCBlbHQpKSkpXG4gICAgICAgICAgfm1pbl9hbGxvd2VkX2tleTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG1pbl9hbGxvd2VkX2tleSAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIG1pbl9hbGxvd2VkX2tleSBLZXkuemVybyk7XG4gICAgICAgICAgICAgICBpZiBLZXkuKCA8ICkgbWluX2FsbG93ZWRfa2V5IEtleS5tYXhfdmFsdWVcbiAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgICAoS2V5LnJlbSBtaW5fYWxsb3dlZF9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdClcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OktleS5TcGFuLnplcm8pKVxuICAgICAgICAgIH5tYXhfYWxsb3dlZF9rZXk6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBtYXhfYWxsb3dlZF9rZXkgLT5cbiAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEtleS50XVxuICAgICAgICAgICAgICAgICBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAoS2V5LmFkZF9jbGFtcF90b19tYXhcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICAgICBsZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXkpKSlcbiAgICAgICAgICB+c2xvdHM6XG4gICAgICAgICAgICAoY2hlY2sgKGZ1biBzbG90cyAtPlxuICAgICAgICAgICAgICAgQXJyYXkuaXRlciBzbG90cyB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdClcbiAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmludmFyaWFudCBwb29sIGludmFyaWFudF9hIGVsdDtcbiAgICAgICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZjooZnVuIGVsdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgICAgICAgS2V5LiggPj0gKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KVxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleSk7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgICAgICAgICBLZXkuKCA8PSApXG4gICAgICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5rZXkgcG9vbCBlbHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwubWF4X2FsbG93ZWRfa2V5KTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgICAgICAgIEtleS4oID49IClcbiAgICAgICAgICAgICAgICAgICAgICAgICAoSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbiAgICAgICAgICAgICAgICAgICAgICAgICB0LmVsdF9rZXlfbG93ZXJfYm91bmQpO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChJbnRlcm5hbF9lbHQubGV2ZWxfaW5kZXggcG9vbCBlbHQgPSBsZXZlbC5pbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICBpbnZhcmlhbnRfYSAoSW50ZXJuYWxfZWx0LnZhbHVlIHBvb2wgZWx0KSkpKSkpKVxuICAgIGluXG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRfaW50ZXJuYWxdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtaW5fYWxsb3dlZF9rZXkgdCkgS2V5Lnplcm8pO1xuICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIChtYXhfYWxsb3dlZF9rZXkgdCkgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+bGVuZ3RoOihjaGVjayAoZnVuIGxlbmd0aCAtPiBhc3NlcnQgKGxlbmd0aCA+PSAwKSkpXG4gICAgICAgIH5wb29sOihjaGVjayAoSW50ZXJuYWxfZWx0LlBvb2wuaW52YXJpYW50IGlnbm9yZSkpXG4gICAgICAgIH5taW5fZWx0OlxuICAgICAgICAgIChjaGVjayAoZnVuIGVsdF8gLT5cbiAgICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdF8pXG4gICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICBhc3NlcnQgKEludGVybmFsX2VsdC5pc192YWxpZCB0LnBvb2wgZWx0Xyk7XG4gICAgICAgICAgICAgICBhc3NlcnQgKEtleS5lcXVhbCB0LmVsdF9rZXlfbG93ZXJfYm91bmQgKEludGVybmFsX2VsdC5rZXkgdC5wb29sIGVsdF8pKSkpKVxuICAgICAgICB+ZWx0X2tleV9sb3dlcl9ib3VuZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBlbHRfa2V5X2xvd2VyX2JvdW5kIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA+PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1pbl9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgYXNzZXJ0IChLZXkuKCA8PSApIGVsdF9rZXlfbG93ZXJfYm91bmQgKG1heF9hbGxvd2VkX2tleSB0KSk7XG4gICAgICAgICAgICAgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCB0Lm1pbl9lbHQpXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgICAgS2V5LmVxdWFsIGVsdF9rZXlfbG93ZXJfYm91bmQgKEludGVybmFsX2VsdC5rZXkgdC5wb29sIHQubWluX2VsdCkpKSlcbiAgICAgICAgfmxldmVsczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBsZXZlbHMgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKG51bV9sZXZlbHMgdCA+IDApO1xuICAgICAgICAgICAgIEFycmF5Lml0ZXJpIGxldmVscyB+ZjooZnVuIGxldmVsX2luZGV4IGxldmVsIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKGxldmVsX2luZGV4ID0gTGV2ZWwuaW5kZXggbGV2ZWwpO1xuICAgICAgICAgICAgICAgbGV2ZWxfaW52YXJpYW50IGxldmVsO1xuICAgICAgICAgICAgICAgaWYgbGV2ZWxfaW5kZXggPiAwXG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbGV0IHByZXZfbGV2ZWwgPSBsZXZlbHMuKGxldmVsX2luZGV4IC0gMSkgaW5cbiAgICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBMID0gTGV2ZWwgaW5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogS2V5LlNwYW4udF1cbiAgICAgICAgICAgICAgICAgICAoTC5rZXlzX3Blcl9zbG90IGxldmVsKVxuICAgICAgICAgICAgICAgICAgIH5leHBlY3Q6KEtleS5TcGFuLnN1Y2MgcHJldl9sZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXkpO1xuICAgICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBLZXkudF1cbiAgICAgICAgICAgICAgICAgICBsZXZlbC5taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICAgICB+ZXhwZWN0OlxuICAgICAgICAgICAgICAgICAgICAgKExldmVsLmNvbXB1dGVfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgICAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5OnByZXZfbGV2ZWwubWF4X2FsbG93ZWRfa2V5KSkpKSkpXG4gIDs7XG5cbiAgKCoqIFttaW5fZWx0X10gcmV0dXJucyBbbnVsbF0gaWYgaXQgY2FuJ3QgZmluZCB0aGUgZGVzaXJlZCBlbGVtZW50LiAgV2Ugd3JhcCBpdCB1cFxuICAgICAgYWZ0ZXJ3YXJkcyB0byByZXR1cm4gYW4gW29wdGlvbl0uICopXG4gIGxldCBtaW5fZWx0XyB0ID1cbiAgICBpZiBpc19lbXB0eSB0XG4gICAgdGhlbiBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIGVsc2UgaWYgbm90IChJbnRlcm5hbF9lbHQuaXNfbnVsbCB0Lm1pbl9lbHQpXG4gICAgdGhlbiB0Lm1pbl9lbHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgbWluX2VsdF9hbHJlYWR5X2ZvdW5kID0gcmVmIChJbnRlcm5hbF9lbHQubnVsbCAoKSkgaW5cbiAgICAgIGxldCBtaW5fa2V5X2FscmVhZHlfZm91bmQgPSByZWYgS2V5Lm1heF92YWx1ZSBpblxuICAgICAgbGV0IGxldmVsX2luZGV4ID0gcmVmIDAgaW5cbiAgICAgIGxldCBudW1fbGV2ZWxzID0gbnVtX2xldmVscyB0IGluXG4gICAgICB3aGlsZSAhbGV2ZWxfaW5kZXggPCBudW1fbGV2ZWxzIGRvXG4gICAgICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLighbGV2ZWxfaW5kZXgpIGluXG4gICAgICAgIGlmIEtleS4oID4gKSAoTGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsKSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kXG4gICAgICAgIHRoZW5cbiAgICAgICAgICAoKiBXZSBkb24ndCBuZWVkIHRvIGNvbnNpZGVyIGFueSBtb3JlIGxldmVscy4gIFF1aXQgdGhlIGxvb3AuICopXG4gICAgICAgICAgbGV2ZWxfaW5kZXggOj0gbnVtX2xldmVsc1xuICAgICAgICBlbHNlIGlmIGxldmVsLmxlbmd0aCA9IDBcbiAgICAgICAgdGhlbiBpbmNyIGxldmVsX2luZGV4XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIExvb2sgaW4gW2xldmVsXS4gKilcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGxldCBzbG90X21pbl9rZXkgPVxuICAgICAgICAgICAgcmVmXG4gICAgICAgICAgICAgIChMZXZlbC5taW5fa2V5X2luX3NhbWVfc2xvdFxuICAgICAgICAgICAgICAgICBsZXZlbFxuICAgICAgICAgICAgICAgICB+a2V5OihLZXkubWF4IGxldmVsLm1pbl9hbGxvd2VkX2tleSB0LmVsdF9rZXlfbG93ZXJfYm91bmQpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHNsb3QgPSByZWYgKExldmVsLnNsb3QgbGV2ZWwgfmtleTohc2xvdF9taW5fa2V5KSBpblxuICAgICAgICAgICgqIEZpbmQgdGhlIGZpcnN0IG5vbmVtcHR5IHNsb3Qgd2l0aCBhIHNtYWxsIGVub3VnaCBbc2xvdF9taW5fa2V5XS4gKilcbiAgICAgICAgICB3aGlsZVxuICAgICAgICAgICAgSW50ZXJuYWxfZWx0LmlzX251bGwgc2xvdHMuKCFzbG90KVxuICAgICAgICAgICAgJiYgS2V5LiggPCApICFzbG90X21pbl9rZXkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICAgIGRvXG4gICAgICAgICAgICBzbG90IDo9IExldmVsLm5leHRfc2xvdCBsZXZlbCAhc2xvdDtcbiAgICAgICAgICAgIHNsb3RfbWluX2tleSA6PSBLZXkuYWRkICFzbG90X21pbl9rZXkgbGV2ZWwua2V5c19wZXJfc2xvdFxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgbGV0IGZpcnN0ID0gc2xvdHMuKCFzbG90KSBpblxuICAgICAgICAgIGlmIG5vdCAoSW50ZXJuYWxfZWx0LmlzX251bGwgZmlyc3QpXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAoKiBWaXNpdCBhbGwgb2YgdGhlIGVsdHMgaW4gdGhpcyBzbG90IGFuZCBmaW5kIG9uZSB3aXRoIG1pbmltdW0ga2V5LiAqKVxuICAgICAgICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgICAgICAgIGxldCBjdXJyZW50ID0gcmVmIGZpcnN0IGluXG4gICAgICAgICAgICB3aGlsZSAhY29udGludWUgZG9cbiAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfa2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sICFjdXJyZW50IGluXG4gICAgICAgICAgICAgIGlmIEtleS4oIDw9ICkgY3VycmVudF9rZXkgIW1pbl9rZXlfYWxyZWFkeV9mb3VuZFxuICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICBtaW5fZWx0X2FscmVhZHlfZm91bmQgOj0gIWN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgbWluX2tleV9hbHJlYWR5X2ZvdW5kIDo9IGN1cnJlbnRfa2V5KTtcbiAgICAgICAgICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sICFjdXJyZW50IGluXG4gICAgICAgICAgICAgICgqIElmIFshbGV2ZWxfaW5kZXggPSAwXSB0aGVuIGFsbCBlbHRzIGluIHRoaXMgc2xvdCBoYXZlIHRoZSBzYW1lIFtrZXldLFxuICAgICAgICAgICAgICAgICBpLmUuIFshc2xvdF9taW5fa2V5XS4gIFNvLCB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrIGFueSBlbGVtZW50cyBhZnRlclxuICAgICAgICAgICAgICAgICBbZmlyc3RdLiAgVGhpcyBpcyBhIHVzZWZ1bCBzaG9ydCBjdXQgaW4gdGhlIGNvbW1vbiBjYXNlIHRoYXQgdGhlcmUgYXJlXG4gICAgICAgICAgICAgICAgIG11bHRpcGxlIGVsZW1lbnRzIGluIHRoZSBzYW1lIG1pbiBzbG90IGluIGxldmVsIDAuICopXG4gICAgICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB8fCAhbGV2ZWxfaW5kZXggPSAwXG4gICAgICAgICAgICAgIHRoZW4gY29udGludWUgOj0gZmFsc2VcbiAgICAgICAgICAgICAgZWxzZSBjdXJyZW50IDo9IG5leHRcbiAgICAgICAgICAgIGRvbmUpO1xuICAgICAgICAgICgqIEZpbmlzaGVkIGxvb2tpbmcgaW4gW2xldmVsXS4gIE1vdmUgdXAgdG8gdGhlIG5leHQgbGV2ZWwuICopXG4gICAgICAgICAgaW5jciBsZXZlbF9pbmRleClcbiAgICAgIGRvbmU7XG4gICAgICB0Lm1pbl9lbHQgPC0gIW1pbl9lbHRfYWxyZWFkeV9mb3VuZDtcbiAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSAhbWluX2tleV9hbHJlYWR5X2ZvdW5kO1xuICAgICAgdC5taW5fZWx0KVxuICA7O1xuXG4gIGxldFtAY29sZF0gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2JvdW5kcyB0IGtleSA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiUHJpb3JpdHlfcXVldWUuYWRkX2VsdCBrZXkgb3V0IG9mIGJvdW5kc1wiXG4gICAgICAgICAgKGtleSA6IEtleS50KVxuICAgICAgICAgIChtaW5fYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIChtYXhfYWxsb3dlZF9rZXkgdCA6IEtleS50KVxuICAgICAgICAgIH5wcmlvcml0eV9xdWV1ZToodCA6IF8gdCldXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfbGV2ZWxfYm91bmRzIGtleSBsZXZlbCA9XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiUHJpb3JpdHlfcXVldWUuYWRkX2VsdCBrZXkgb3V0IG9mIGxldmVsIGJvdW5kc1wiIChrZXkgOiBLZXkudCkgKGxldmVsIDogXyBMZXZlbC50KV1cbiAgOztcblxuICBsZXQgYWRkX2VsdCB0IGVsdCA9XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdCBpblxuICAgIGlmIG5vdCAoS2V5LiggPj0gKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KSAmJiBLZXkuKCA8PSApIGtleSAobWF4X2FsbG93ZWRfa2V5IHQpKVxuICAgIHRoZW4gcmFpc2VfYWRkX2VsdF9rZXlfb3V0X29mX2JvdW5kcyB0IGtleTtcbiAgICAoKiBGaW5kIHRoZSBsb3dlc3QgbGV2ZWwgdGhhdCB3aWxsIGhvbGQgW2VsdF0uICopXG4gICAgbGV0IGxldmVsX2luZGV4ID1cbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICB3aGlsZSBLZXkuKCA+ICkga2V5IChMZXZlbC5tYXhfYWxsb3dlZF9rZXkgdC5sZXZlbHMuKCFsZXZlbF9pbmRleCkpIGRvXG4gICAgICAgIGluY3IgbGV2ZWxfaW5kZXhcbiAgICAgIGRvbmU7XG4gICAgICAhbGV2ZWxfaW5kZXhcbiAgICBpblxuICAgIGxldCBsZXZlbCA9IHQubGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICBpZiBub3QgKEtleS4oID49ICkga2V5IGxldmVsLm1pbl9hbGxvd2VkX2tleSAmJiBLZXkuKCA8PSApIGtleSBsZXZlbC5tYXhfYWxsb3dlZF9rZXkpXG4gICAgdGhlbiByYWlzZV9hZGRfZWx0X2tleV9vdXRfb2ZfbGV2ZWxfYm91bmRzIGtleSBsZXZlbDtcbiAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoICsgMTtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2xldmVsX2luZGV4IHBvb2wgZWx0IGxldmVsX2luZGV4O1xuICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5IGluXG4gICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICBsZXQgZmlyc3QgPSBzbG90cy4oc2xvdCkgaW5cbiAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgIHRoZW4gSW50ZXJuYWxfZWx0Lmluc2VydF9hdF9lbmQgcG9vbCBmaXJzdCB+dG9fYWRkOmVsdFxuICAgIGVsc2UgKFxuICAgICAgc2xvdHMuKHNsb3QpIDwtIGVsdDtcbiAgICAgIEludGVybmFsX2VsdC5saW5rX3RvX3NlbGYgcG9vbCBlbHQpXG4gIDs7XG5cbiAgbGV0IGludGVybmFsX2FkZF9lbHQgdCBlbHQgPVxuICAgIGxldCBrZXkgPSBJbnRlcm5hbF9lbHQua2V5IHQucG9vbCBlbHQgaW5cbiAgICBpZiBLZXkuKCA8ICkga2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZFxuICAgIHRoZW4gKFxuICAgICAgdC5taW5fZWx0IDwtIGVsdDtcbiAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSBrZXkpO1xuICAgIGFkZF9lbHQgdCBlbHQ7XG4gICAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG4gIDs7XG5cbiAgbGV0W0Bjb2xkXSByYWlzZV9nb3RfaW52YWxpZF9rZXkgdCBrZXkgPVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRpbWluZ193aGVlbC5hZGRfYXRfaW50ZXJ2YWxfbnVtIGdvdCBpbnZhbGlkIGludGVydmFsIG51bVwiXG4gICAgICAgICAgfmludGVydmFsX251bTooa2V5IDogS2V5LnQpXG4gICAgICAgICAgfm1pbl9hbGxvd2VkX2FsYXJtX2ludGVydmFsX251bToobWluX2FsbG93ZWRfa2V5IHQgOiBLZXkudClcbiAgICAgICAgICB+bWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtOihtYXhfYWxsb3dlZF9rZXkgdCA6IEtleS50KV1cbiAgOztcblxuICBsZXQgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXkgPVxuICAgIGlmIEtleS4oIDwgKSBrZXkgKG1pbl9hbGxvd2VkX2tleSB0KSB8fCBLZXkuKCA+ICkga2V5IChtYXhfYWxsb3dlZF9rZXkgdClcbiAgICB0aGVuIHJhaXNlX2dvdF9pbnZhbGlkX2tleSB0IGtleVxuICA7O1xuXG4gIGxldCBpbnRlcm5hbF9hZGQgdCB+a2V5IH5hdCB2YWx1ZSA9XG4gICAgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXk7XG4gICAgaWYgSW50ZXJuYWxfZWx0LlBvb2wuaXNfZnVsbCB0LnBvb2wgdGhlbiB0LnBvb2wgPC0gSW50ZXJuYWxfZWx0LlBvb2wuZ3JvdyB0LnBvb2w7XG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5jcmVhdGUgdC5wb29sIH5rZXkgfmF0IH52YWx1ZSB+bGV2ZWxfaW5kZXg6KC0xKSBpblxuICAgIGludGVybmFsX2FkZF9lbHQgdCBlbHQ7XG4gICAgZWx0XG4gIDs7XG5cbiAgKCoqIFtyZW1vdmVfb3JfcmVfYWRkX2VsdHNdIHZpc2l0cyBlYWNoIGVsZW1lbnQgaW4gdGhlIGNpcmN1bGFyIGRvdWJseS1saW5rZWQgbGlzdFxuICAgICAgW2ZpcnN0XS4gIElmIHRoZSBlbGVtZW50J3Mga2V5IGlzIFs+PSB0X21pbl9hbGxvd2VkX2tleV0sIHRoZW4gaXQgYWRkcyB0aGUgZWxlbWVudFxuICAgICAgYmFjayBhdCBhIGxvd2VyIGxldmVsLiAgSWYgbm90LCB0aGVuIGl0IGNhbGxzIFtoYW5kbGVfcmVtb3ZlZF0gYW5kIFtmcmVlXXMgdGhlXG4gICAgICBlbGVtZW50LiAqKVxuICBsZXQgcmVtb3ZlX29yX3JlX2FkZF9lbHRzIHQgKGxldmVsIDogXyBMZXZlbC50KSBmaXJzdCB+dF9taW5fYWxsb3dlZF9rZXkgfmhhbmRsZV9yZW1vdmVkXG4gICAgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGN1cnJlbnQgPSByZWYgZmlyc3QgaW5cbiAgICBsZXQgY29udGludWUgPSByZWYgdHJ1ZSBpblxuICAgIHdoaWxlICFjb250aW51ZSBkb1xuICAgICAgKCogV2UgZXh0cmFjdCBbbmV4dF0gZnJvbSBbY3VycmVudF0gZmlyc3QsIGJlY2F1c2Ugd2Ugd2lsbCBtb2RpZnkgb3IgW2ZyZWVdXG4gICAgICAgICBbY3VycmVudF0gYmVmb3JlIGNvbnRpbnVpbmcgdGhlIGxvb3AuICopXG4gICAgICBsZXQgbmV4dCA9IEludGVybmFsX2VsdC5uZXh0IHBvb2wgIWN1cnJlbnQgaW5cbiAgICAgIGxldmVsLmxlbmd0aCA8LSBsZXZlbC5sZW5ndGggLSAxO1xuICAgICAgaWYgS2V5LiggPj0gKSAoSW50ZXJuYWxfZWx0LmtleSBwb29sICFjdXJyZW50KSB0X21pbl9hbGxvd2VkX2tleVxuICAgICAgdGhlbiBhZGRfZWx0IHQgIWN1cnJlbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgICAgIGhhbmRsZV9yZW1vdmVkIChJbnRlcm5hbF9lbHQudG9fZXh0ZXJuYWwgIWN1cnJlbnQpO1xuICAgICAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sICFjdXJyZW50KTtcbiAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCBmaXJzdCB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlIGVsc2UgY3VycmVudCA6PSBuZXh0XG4gICAgZG9uZVxuICA7O1xuXG4gICgqKiBbaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XSBpbmNyZWFzZXMgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIFtsZXZlbF0gdG8gYXNcbiAgICAgIGxhcmdlIGEgdmFsdWUgYXMgcG9zc2libGUsIGJ1dCBubyBtb3JlIHRoYW4gW21heF9sZXZlbF9taW5fYWxsb3dlZF9rZXldLlxuICAgICAgW3RfbWluX2FsbG93ZWRfa2V5XSBpcyB0aGUgbWluaW11bSBhbGxvd2VkIGtleSBmb3IgdGhlIGVudGlyZSB0aW1pbmcgd2hlZWwuICBBc1xuICAgICAgZWxlbWVudHMgYXJlIGVuY291bnRlcmVkLCB0aGV5IGFyZSByZW1vdmVkIGZyb20gdGhlIHRpbWluZyB3aGVlbCBpZiB0aGVpciBrZXkgaXNcbiAgICAgIHNtYWxsZXIgdGhhbiBbdF9taW5fYWxsb3dlZF9rZXldLCBvciBhZGRlZCBhdCBhIGxvd2VyIGxldmVsIGlmIG5vdC4gKilcbiAgbGV0IGluY3JlYXNlX2xldmVsX21pbl9hbGxvd2VkX2tleVxuICAgICAgICB0XG4gICAgICAgIChsZXZlbCA6IF8gTGV2ZWwudClcbiAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5XG4gICAgICAgIH50X21pbl9hbGxvd2VkX2tleVxuICAgICAgICB+aGFuZGxlX3JlbW92ZWRcbiAgICA9XG4gICAgbGV0IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgIExldmVsLmNvbXB1dGVfbWluX2FsbG93ZWRfa2V5IGxldmVsIH5wcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgIGluXG4gICAgKCogV2UgcmVxdWlyZSB0aGF0IFttb2QgbGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsLmtleXNfcGVyX3Nsb3QgPSAwXS4gIFNvLFxuICAgICAgIHdlIHN0YXJ0IFtsZXZlbF9taW5fYWxsb3dlZF9rZXldIHdoZXJlIHRoYXQgaXMgdHJ1ZSwgYW5kIHRoZW4gaW5jcmVhc2UgaXQgYnlcbiAgICAgICBba2V5c19wZXJfc2xvdF0gZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuICopXG4gICAgbGV0IGxldmVsX21pbl9hbGxvd2VkX2tleSA9XG4gICAgICBMZXZlbC5taW5fa2V5X2luX3NhbWVfc2xvdFxuICAgICAgICBsZXZlbFxuICAgICAgICB+a2V5OlxuICAgICAgICAgIChLZXkubWluXG4gICAgICAgICAgICAgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAoS2V5Lm1heCBsZXZlbC5taW5fYWxsb3dlZF9rZXkgdC5lbHRfa2V5X2xvd2VyX2JvdW5kKSlcbiAgICBpblxuICAgIGxldCBsZXZlbF9taW5fYWxsb3dlZF9rZXkgPSByZWYgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IGluXG4gICAgbGV0IHNsb3QgPSByZWYgKExldmVsLnNsb3QgbGV2ZWwgfmtleTohbGV2ZWxfbWluX2FsbG93ZWRfa2V5KSBpblxuICAgIGxldCBrZXlzX3Blcl9zbG90ID0gbGV2ZWwua2V5c19wZXJfc2xvdCBpblxuICAgIGxldCBzbG90cyA9IGxldmVsLnNsb3RzIGluXG4gICAgd2hpbGUgS2V5LiggPCApICFsZXZlbF9taW5fYWxsb3dlZF9rZXkgZGVzaXJlZF9taW5fYWxsb3dlZF9rZXkgZG9cbiAgICAgIGlmIGxldmVsLmxlbmd0aCA9IDBcbiAgICAgIHRoZW5cbiAgICAgICAgKCogSWYgbm8gZWxlbWVudHMgcmVtYWluIGF0IHRoaXMgbGV2ZWwsIHdlIGNhbiBqdXN0IHNldCBbbWluX2FsbG93ZWRfa2V5XSB0byB0aGVcbiAgICAgICAgICAgZGVzaXJlZCB2YWx1ZS4gKilcbiAgICAgICAgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IDo9IGRlc2lyZWRfbWluX2FsbG93ZWRfa2V5XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGZpcnN0ID0gc2xvdHMuKCFzbG90KSBpblxuICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGZpcnN0KVxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBzbG90cy4oIXNsb3QpIDwtIEludGVybmFsX2VsdC5udWxsICgpO1xuICAgICAgICAgIHJlbW92ZV9vcl9yZV9hZGRfZWx0cyB0IGxldmVsIGZpcnN0IH50X21pbl9hbGxvd2VkX2tleSB+aGFuZGxlX3JlbW92ZWQpO1xuICAgICAgICBzbG90IDo9IExldmVsLm5leHRfc2xvdCBsZXZlbCAhc2xvdDtcbiAgICAgICAgbGV2ZWxfbWluX2FsbG93ZWRfa2V5IDo9IEtleS5hZGRfY2xhbXBfdG9fbWF4ICFsZXZlbF9taW5fYWxsb3dlZF9rZXkga2V5c19wZXJfc2xvdClcbiAgICBkb25lO1xuICAgIGxldmVsLm1pbl9hbGxvd2VkX2tleSA8LSBkZXNpcmVkX21pbl9hbGxvd2VkX2tleTtcbiAgICBsZXZlbC5tYXhfYWxsb3dlZF9rZXlcbiAgICA8LSBLZXkuYWRkX2NsYW1wX3RvX21heCBkZXNpcmVkX21pbl9hbGxvd2VkX2tleSBsZXZlbC5kaWZmX21heF9taW5fYWxsb3dlZF9rZXlcbiAgOztcblxuICBtb2R1bGUgSW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgICAgfCBNYXhfYWxsb3dlZF9rZXlfbWF5YmVfY2hhbmdlZFxuICBlbmRcblxuICBsZXQgaW5jcmVhc2VfbWluX2FsbG93ZWRfa2V5IHQgfmtleSB+aGFuZGxlX3JlbW92ZWQgOiBJbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlfcmVzdWx0LnQgPVxuICAgIGlmIEtleS4oIDw9ICkga2V5IChtaW5fYWxsb3dlZF9rZXkgdClcbiAgICB0aGVuIE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZVxuICAgIGVsc2UgKFxuICAgICAgKCogV2UgaW5jcmVhc2UgdGhlIFttaW5fYWxsb3dlZF9rZXldIG9mIGxldmVscyBpbiBvcmRlciB0byByZXN0b3JlIHRoZSBpbnZhcmlhbnRcbiAgICAgICAgIHRoYXQgdGhleSBoYXZlIGFzIGxhcmdlIGFzIHBvc3NpYmxlIGEgW21pbl9hbGxvd2VkX2tleV0sIHdoaWxlIGxlYXZpbmcgbm8gZ2Fwc1xuICAgICAgICAgaW4ga2V5cy4gKilcbiAgICAgIGxldCBsZXZlbF9pbmRleCA9IHJlZiAwIGluXG4gICAgICBsZXQgcmVzdWx0ID0gcmVmIEluY3JlYXNlX21pbl9hbGxvd2VkX2tleV9yZXN1bHQuTWF4X2FsbG93ZWRfa2V5X21heWJlX2NoYW5nZWQgaW5cbiAgICAgIGxldCBwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleSA9IHJlZiAoS2V5LnByZWQga2V5KSBpblxuICAgICAgbGV0IGxldmVscyA9IHQubGV2ZWxzIGluXG4gICAgICBsZXQgbnVtX2xldmVscyA9IG51bV9sZXZlbHMgdCBpblxuICAgICAgd2hpbGUgIWxldmVsX2luZGV4IDwgbnVtX2xldmVscyBkb1xuICAgICAgICBsZXQgbGV2ZWwgPSBsZXZlbHMuKCFsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgbGV0IG1pbl9hbGxvd2VkX2tleV9iZWZvcmUgPSBsZXZlbC5taW5fYWxsb3dlZF9rZXkgaW5cbiAgICAgICAgaW5jcmVhc2VfbGV2ZWxfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgdFxuICAgICAgICAgIGxldmVsXG4gICAgICAgICAgfnByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5OiFwcmV2X2xldmVsX21heF9hbGxvd2VkX2tleVxuICAgICAgICAgIH50X21pbl9hbGxvd2VkX2tleTprZXlcbiAgICAgICAgICB+aGFuZGxlX3JlbW92ZWQ7XG4gICAgICAgIGlmIEtleS5lcXVhbCAoTGV2ZWwubWluX2FsbG93ZWRfa2V5IGxldmVsKSBtaW5fYWxsb3dlZF9rZXlfYmVmb3JlXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIFRoaXMgbGV2ZWwgZGlkIG5vdCBzaGlmdC4gIERvbid0IHNoaWZ0IGFueSBoaWdoZXIgbGV2ZWxzLiAqKVxuICAgICAgICAgIGxldmVsX2luZGV4IDo9IG51bV9sZXZlbHM7XG4gICAgICAgICAgcmVzdWx0IDo9IE1heF9hbGxvd2VkX2tleV9kaWRfbm90X2NoYW5nZSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogTGV2ZWwgW2xldmVsX2luZGV4XSBzaGlmdGVkLiAgQ29uc2lkZXIgc2hpZnRpbmcgaGlnaGVyIGxldmVscy4gKilcbiAgICAgICAgICBsZXZlbF9pbmRleCA6PSAhbGV2ZWxfaW5kZXggKyAxO1xuICAgICAgICAgIHByZXZfbGV2ZWxfbWF4X2FsbG93ZWRfa2V5IDo9IExldmVsLm1heF9hbGxvd2VkX2tleSBsZXZlbClcbiAgICAgIGRvbmU7XG4gICAgICBpZiBLZXkuKCA+ICkga2V5IHQuZWx0X2tleV9sb3dlcl9ib3VuZFxuICAgICAgdGhlbiAoXG4gICAgICAgICgqIFdlIGhhdmUgcmVtb3ZlZCBbdC5taW5fZWx0XSBvciBpdCB3YXMgYWxyZWFkeSBudWxsLCBzbyBqdXN0IHNldCBpdCB0b1xuICAgICAgICAgICBudWxsLiAqKVxuICAgICAgICB0Lm1pbl9lbHQgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKCk7XG4gICAgICAgIHQuZWx0X2tleV9sb3dlcl9ib3VuZCA8LSBtaW5fYWxsb3dlZF9rZXkgdCk7XG4gICAgICAhcmVzdWx0KVxuICA7O1xuXG4gIGxldCBjcmVhdGUgP2NhcGFjaXR5ID9sZXZlbF9iaXRzICgpID1cbiAgICBsZXQgbGV2ZWxfYml0cyA9XG4gICAgICBtYXRjaCBsZXZlbF9iaXRzIHdpdGhcbiAgICAgIHwgU29tZSBsIC0+IGxcbiAgICAgIHwgTm9uZSAtPiBMZXZlbF9iaXRzLmRlZmF1bHRcbiAgICBpblxuICAgIGxldCBfLCBfLCBsZXZlbHMgPVxuICAgICAgTGlzdC5mb2xkaVxuICAgICAgICBsZXZlbF9iaXRzXG4gICAgICAgIH5pbml0OihOdW1fa2V5X2JpdHMuemVybywgS2V5Lnplcm8sIFtdKVxuICAgICAgICB+ZjooZnVuXG4gICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICAoYml0c19wZXJfc2xvdCwgbWF4X2xldmVsX21pbl9hbGxvd2VkX2tleSwgbGV2ZWxzKVxuICAgICAgICAgICAgIChsZXZlbF9iaXRzIDogTnVtX2tleV9iaXRzLnQpXG4gICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgIGxldCBrZXlzX3Blcl9zbG90ID0gS2V5Lm51bV9rZXlzIGJpdHNfcGVyX3Nsb3QgaW5cbiAgICAgICAgICAgICAgIGxldCBkaWZmX21heF9taW5fYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgICBjb21wdXRlX2RpZmZfbWF4X21pbl9hbGxvd2VkX2tleSB+bGV2ZWxfYml0cyB+Yml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrID1cbiAgICAgICAgICAgICAgICAgTWluX2tleV9pbl9zYW1lX3Nsb3RfbWFzay5jcmVhdGUgfmJpdHNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbWluX2FsbG93ZWRfa2V5ID1cbiAgICAgICAgICAgICAgICAgS2V5Lm1pbl9rZXlfaW5fc2FtZV9zbG90IG1heF9sZXZlbF9taW5fYWxsb3dlZF9rZXkgbWluX2tleV9pbl9zYW1lX3Nsb3RfbWFza1xuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBtYXhfYWxsb3dlZF9rZXkgPVxuICAgICAgICAgICAgICAgICBLZXkuYWRkX2NsYW1wX3RvX21heCBtaW5fYWxsb3dlZF9rZXkgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGxldmVsID1cbiAgICAgICAgICAgICAgICAgeyBMZXZlbC5pbmRleFxuICAgICAgICAgICAgICAgICA7IGJpdHMgPSBsZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgIDsgc2xvdHNfbWFzayA9IFNsb3RzX21hc2suY3JlYXRlIH5sZXZlbF9iaXRzXG4gICAgICAgICAgICAgICAgIDsgYml0c19wZXJfc2xvdFxuICAgICAgICAgICAgICAgICA7IGtleXNfcGVyX3Nsb3RcbiAgICAgICAgICAgICAgICAgOyBtaW5fa2V5X2luX3NhbWVfc2xvdF9tYXNrXG4gICAgICAgICAgICAgICAgIDsgZGlmZl9tYXhfbWluX2FsbG93ZWRfa2V5XG4gICAgICAgICAgICAgICAgIDsgbGVuZ3RoID0gMFxuICAgICAgICAgICAgICAgICA7IG1pbl9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICA7IG1heF9hbGxvd2VkX2tleVxuICAgICAgICAgICAgICAgICA7IHNsb3RzID1cbiAgICAgICAgICAgICAgICAgICAgIEFycmF5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICB+bGVuOihJbnQ2My50b19pbnRfZXhuIChOdW1fa2V5X2JpdHMucG93MiBsZXZlbF9iaXRzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgKEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgKCBOdW1fa2V5X2JpdHMuKCArICkgbGV2ZWxfYml0cyBiaXRzX3Blcl9zbG90XG4gICAgICAgICAgICAgICAsIEtleS5zdWNjX2NsYW1wX3RvX21heCBtYXhfYWxsb3dlZF9rZXlcbiAgICAgICAgICAgICAgICwgbGV2ZWwgOjogbGV2ZWxzICkpXG4gICAgaW5cbiAgICB7IGxlbmd0aCA9IDBcbiAgICA7IHBvb2wgPSBJbnRlcm5hbF9lbHQuUG9vbC5jcmVhdGUgP2NhcGFjaXR5ICgpXG4gICAgOyBtaW5fZWx0ID0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICA7IGVsdF9rZXlfbG93ZXJfYm91bmQgPSBLZXkuemVyb1xuICAgIDsgbGV2ZWxzID0gQXJyYXkub2ZfbGlzdF9yZXYgbGV2ZWxzXG4gICAgfVxuICA7O1xuXG4gIGxldCBtZW0gdCBlbHQgPSBJbnRlcm5hbF9lbHQuZXh0ZXJuYWxfaXNfdmFsaWQgdC5wb29sIGVsdFxuXG4gIGxldCBpbnRlcm5hbF9yZW1vdmUgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgaWYgSW50ZXJuYWxfZWx0LmVxdWFsIGVsdCB0Lm1pbl9lbHRcbiAgICB0aGVuXG4gICAgICB0Lm1pbl9lbHQgPC0gSW50ZXJuYWxfZWx0Lm51bGwgKClcbiAgICAoKiBXZSBrZWVwIFt0LmVsdF9sb3dlcl9ib3VuZF0gc2luY2UgaXQgaXMgdmFsaWQgZXZlbiB0aG91Z2ggW3QubWluX2VsdF0gaXMgYmVpbmdcbiAgICAgICByZW1vdmVkLiAqKTtcbiAgICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICAgbGV0IGxldmVsID0gdC5sZXZlbHMuKEludGVybmFsX2VsdC5sZXZlbF9pbmRleCBwb29sIGVsdCkgaW5cbiAgICBsZXZlbC5sZW5ndGggPC0gbGV2ZWwubGVuZ3RoIC0gMTtcbiAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgIGxldCBzbG90ID0gTGV2ZWwuc2xvdCBsZXZlbCB+a2V5OihJbnRlcm5hbF9lbHQua2V5IHBvb2wgZWx0KSBpblxuICAgIGxldCBmaXJzdCA9IHNsb3RzLihzbG90KSBpblxuICAgIGlmIHBoeXNfZXF1YWwgZWx0IChJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdClcbiAgICB0aGVuICgqIFtlbHRdIGlzIHRoZSBvbmx5IGVsZW1lbnQgaW4gdGhlIHNsb3QgKilcbiAgICAgIHNsb3RzLihzbG90KSA8LSBJbnRlcm5hbF9lbHQubnVsbCAoKVxuICAgIGVsc2UgKFxuICAgICAgaWYgcGh5c19lcXVhbCBlbHQgZmlyc3QgdGhlbiBzbG90cy4oc2xvdCkgPC0gSW50ZXJuYWxfZWx0Lm5leHQgcG9vbCBlbHQ7XG4gICAgICBJbnRlcm5hbF9lbHQudW5saW5rIHBvb2wgZWx0KVxuICA7O1xuXG4gIGxldCByZW1vdmUgdCBlbHQgPVxuICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgbGV0IGVsdCA9IEludGVybmFsX2VsdC5vZl9leHRlcm5hbF9leG4gcG9vbCBlbHQgaW5cbiAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgSW50ZXJuYWxfZWx0LmZyZWUgcG9vbCBlbHRcbiAgOztcblxuICBsZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5oYW5kbGVfZmlyZWQgfmtleSB+bm93ID1cbiAgICBsZXQgbGV2ZWwgPSB0LmxldmVscy4oMCkgaW5cbiAgICBpZiBsZXZlbC5sZW5ndGggPiAwXG4gICAgdGhlbiAoXG4gICAgICBsZXQgc2xvdCA9IExldmVsLnNsb3QgbGV2ZWwgfmtleSBpblxuICAgICAgbGV0IHNsb3RzID0gbGV2ZWwuc2xvdHMgaW5cbiAgICAgIGxldCBwb29sID0gdC5wb29sIGluXG4gICAgICBsZXQgZmlyc3QgPSByZWYgc2xvdHMuKHNsb3QpIGluXG4gICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsICFmaXJzdClcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgY3VycmVudCA9IHJlZiAhZmlyc3QgaW5cbiAgICAgICAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgICAgICAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgICAgICAgbGV0IGVsdCA9ICFjdXJyZW50IGluXG4gICAgICAgICAgbGV0IG5leHQgPSBJbnRlcm5hbF9lbHQubmV4dCBwb29sIGVsdCBpblxuICAgICAgICAgIGlmIHBoeXNfZXF1YWwgbmV4dCAhZmlyc3QgdGhlbiBjb250aW51ZSA6PSBmYWxzZSBlbHNlIGN1cnJlbnQgOj0gbmV4dDtcbiAgICAgICAgICBpZiBUaW1lX25zLiggPD0gKSAoSW50ZXJuYWxfZWx0LmF0IHBvb2wgZWx0KSBub3dcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGhhbmRsZV9maXJlZCAoSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsIGVsdCk7XG4gICAgICAgICAgICBpbnRlcm5hbF9yZW1vdmUgdCBlbHQ7XG4gICAgICAgICAgICBJbnRlcm5hbF9lbHQuZnJlZSBwb29sIGVsdDtcbiAgICAgICAgICAgICgqIFdlIHJlY29tcHV0ZSBbZmlyc3RdIGJlY2F1c2UgW2ludGVybmFsX3JlbW92ZV0gbWF5IGhhdmUgY2hhbmdlZCBpdC4gKilcbiAgICAgICAgICAgIGZpcnN0IDo9IHNsb3RzLihzbG90KSlcbiAgICAgICAgZG9uZSkpXG4gIDs7XG5cbiAgbGV0IGNoYW5nZSB0IGVsdCB+a2V5IH5hdCA9XG4gICAgZW5zdXJlX3ZhbGlkX2tleSB0IH5rZXk7XG4gICAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgICBsZXQgZWx0ID0gSW50ZXJuYWxfZWx0Lm9mX2V4dGVybmFsX2V4biBwb29sIGVsdCBpblxuICAgIGludGVybmFsX3JlbW92ZSB0IGVsdDtcbiAgICBJbnRlcm5hbF9lbHQuc2V0X2tleSBwb29sIGVsdCBrZXk7XG4gICAgSW50ZXJuYWxfZWx0LnNldF9hdCBwb29sIGVsdCBhdDtcbiAgICBpbnRlcm5hbF9hZGRfZWx0IHQgZWx0XG4gIDs7XG5cbiAgbGV0IGNsZWFyIHQgPVxuICAgIGlmIG5vdCAoaXNfZW1wdHkgdClcbiAgICB0aGVuIChcbiAgICAgIHQubGVuZ3RoIDwtIDA7XG4gICAgICBsZXQgcG9vbCA9IHQucG9vbCBpblxuICAgICAgbGV0IGZyZWVfZWx0IGVsdCA9IEludGVybmFsX2VsdC5mcmVlIHBvb2wgZWx0IGluXG4gICAgICBsZXQgbGV2ZWxzID0gdC5sZXZlbHMgaW5cbiAgICAgIGZvciBsZXZlbF9pbmRleCA9IDAgdG8gQXJyYXkubGVuZ3RoIGxldmVscyAtIDEgZG9cbiAgICAgICAgbGV0IGxldmVsID0gbGV2ZWxzLihsZXZlbF9pbmRleCkgaW5cbiAgICAgICAgaWYgbGV2ZWwubGVuZ3RoID4gMFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXZlbC5sZW5ndGggPC0gMDtcbiAgICAgICAgICBsZXQgc2xvdHMgPSBsZXZlbC5zbG90cyBpblxuICAgICAgICAgIGZvciBzbG90X2luZGV4ID0gMCB0byBBcnJheS5sZW5ndGggc2xvdHMgLSAxIGRvXG4gICAgICAgICAgICBsZXQgZWx0ID0gc2xvdHMuKHNsb3RfaW5kZXgpIGluXG4gICAgICAgICAgICBpZiBub3QgKEludGVybmFsX2VsdC5pc19udWxsIGVsdClcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBJbnRlcm5hbF9lbHQuaXRlciBwb29sIGVsdCB+ZjpmcmVlX2VsdDtcbiAgICAgICAgICAgICAgc2xvdHMuKHNsb3RfaW5kZXgpIDwtIEludGVybmFsX2VsdC5udWxsICgpKVxuICAgICAgICAgIGRvbmUpXG4gICAgICBkb25lKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBJbnRlcm5hbF9lbHQgPSBQcmlvcml0eV9xdWV1ZS5JbnRlcm5hbF9lbHRcbm1vZHVsZSBLZXkgPSBQcmlvcml0eV9xdWV1ZS5LZXlcbm1vZHVsZSBJbnRlcnZhbF9udW0gPSBLZXlcblxubGV0IG1pbl9pbnRlcnZhbF9udW0gPSBJbnRlcnZhbF9udW0uemVyb1xuXG4oKiBBbGwgdGltZSBmcm9tIHRoZSBlcG9jaCBvbndhcmRzIGlzIGJyb2tlbiBpbnRvIGhhbGYtb3BlbiBpbnRlcnZhbHMgb2Ygc2l6ZVxuICAgW0NvbmZpZy5hbGFybV9wcmVjaXNpb24gY29uZmlnXS4gIFRoZSBpbnRlcnZhbHMgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIGF0IHplcm8sIGFuZCBhXG4gICB0aW1lJ3MgaW50ZXJ2YWwgbnVtYmVyIHNlcnZlcyBhcyBpdHMga2V5IGluIFtwcmlvcml0eV9xdWV1ZV0uICopXG50eXBlICdhIHQgPVxuICB7IGNvbmZpZyA6IENvbmZpZy50XG4gIDsgc3RhcnQgOiBUaW1lX25zLnRcbiAgOyAoKiBbbWF4X2ludGVydmFsX251bV0gaXMgdGhlIGludGVydmFsIG51bWJlciBvZiBbbWF4X3RpbWVdLiAqKVxuICAgIG1heF9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udFxuICA7IG11dGFibGUgbm93IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBtYXhfYWxsb3dlZF9hbGFybV90aW1lIDogVGltZV9ucy50XG4gIDsgcHJpb3JpdHlfcXVldWUgOiAnYSBQcmlvcml0eV9xdWV1ZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAnYSB0aW1pbmdfd2hlZWwgPSAnYSB0XG50eXBlICdhIHRfbm93ID0gJ2EgdFxuXG5sZXQgc2V4cF9vZl90X25vdyBfIHQgPSBbJXNleHAgKHQubm93IDogVGltZV9ucy50KV1cbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IENvbmZpZy5hbGFybV9wcmVjaXNpb24gdC5jb25maWdcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICdhIFByaW9yaXR5X3F1ZXVlLkVsdC50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IG51bGwgPSBQcmlvcml0eV9xdWV1ZS5FbHQubnVsbFxuICBsZXQgYXQgdHcgdCA9IFByaW9yaXR5X3F1ZXVlLkVsdC5hdCB0dy5wcmlvcml0eV9xdWV1ZSB0XG4gIGxldCB2YWx1ZSB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LnZhbHVlIHR3LnByaW9yaXR5X3F1ZXVlIHRcbiAgbGV0IGludGVydmFsX251bSB0dyB0ID0gUHJpb3JpdHlfcXVldWUuRWx0LmtleSB0dy5wcmlvcml0eV9xdWV1ZSB0XG5lbmRcblxubGV0IHNleHBfb2ZfdF9pbnRlcm5hbCA9IHNleHBfb2ZfdFxubGV0IGl0ZXIgdCB+ZiA9IFByaW9yaXR5X3F1ZXVlLml0ZXIgdC5wcmlvcml0eV9xdWV1ZSB+ZlxuXG5tb2R1bGUgUHJldHR5ID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7IGF0IDogVGltZV9ucy50XG4gICAgICA7IHZhbHVlIDogJ2FcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgICBsZXQgY3JlYXRlIHQgYWxhcm0gPSB7IGF0ID0gQWxhcm0uYXQgdCBhbGFybTsgdmFsdWUgPSBBbGFybS52YWx1ZSB0IGFsYXJtIH1cbiAgICBsZXQgY29tcGFyZSB0MSB0MiA9IFRpbWVfbnMuY29tcGFyZSAoYXQgdDEpIChhdCB0MilcbiAgZW5kXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGNvbmZpZyA6IENvbmZpZy50XG4gICAgOyBzdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbWF4X2ludGVydmFsX251bSA6IEludGVydmFsX251bS50XG4gICAgOyBub3cgOiBUaW1lX25zLnRcbiAgICA7IGFsYXJtcyA6ICdhIEFsYXJtLnQgbGlzdFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgcHJldHR5XG4gICAgICAoeyBjb25maWdcbiAgICAgICA7IHN0YXJ0XG4gICAgICAgOyBtYXhfaW50ZXJ2YWxfbnVtXG4gICAgICAgOyBub3dcbiAgICAgICA7IG5vd19pbnRlcnZhbF9udW1fc3RhcnQgPSBfXG4gICAgICAgOyBtYXhfYWxsb3dlZF9hbGFybV90aW1lID0gX1xuICAgICAgIDsgcHJpb3JpdHlfcXVldWUgPSBfXG4gICAgICAgfSBhcyB0KVxuICA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGl0ZXIgdCB+ZjooZnVuIGEgLT4gciA6PSBQcmV0dHkuQWxhcm0uY3JlYXRlIHQgYSA6OiAhcik7XG4gIGxldCBhbGFybXMgPSBMaXN0LnNvcnQgIXIgfmNvbXBhcmU6UHJldHR5LkFsYXJtLmNvbXBhcmUgaW5cbiAgeyBQcmV0dHkuY29uZmlnOyBzdGFydDsgbWF4X2ludGVydmFsX251bTsgbm93OyBhbGFybXMgfVxuOztcblxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gIG1hdGNoICFzZXhwX29mX3Rfc3R5bGUgd2l0aFxuICB8IGBJbnRlcm5hbCAtPiBzZXhwX29mX3RfaW50ZXJuYWwgc2V4cF9vZl9hIHRcbiAgfCBgUHJldHR5IC0+IFslc2V4cCAocHJldHR5IHQgOiBhIFByZXR0eS50KV1cbjs7XG5cbmxldCBsZW5ndGggdCA9IFByaW9yaXR5X3F1ZXVlLmxlbmd0aCB0LnByaW9yaXR5X3F1ZXVlXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfZXhuX29mX2VtcHR5X3RpbWluZ193aGVlbCB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCIgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfd2l0aF9hbGxfYWxhcm1zX2luX21heF9pbnRlcnZhbCB0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gd2l0aCBhbGwgYWxhcm1zIGluIG1heCBpbnRlcnZhbFwiXG4gICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXVxuOztcblxubGV0IHBvb2wgdCA9IFByaW9yaXR5X3F1ZXVlLnBvb2wgdC5wcmlvcml0eV9xdWV1ZVxuXG5sZXQgaW50ZXJ2YWxfbnVtX2ludGVybmFsIH50aW1lIH5hbGFybV9wcmVjaXNpb24gPVxuICBJbnRlcnZhbF9udW0ub2ZfaW50NjMgKEFsYXJtX3ByZWNpc2lvbi5pbnRlcnZhbF9udW0gYWxhcm1fcHJlY2lzaW9uIHRpbWUpXG47O1xuXG5sZXQgaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRpbWUgPVxuICBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWUgfmFsYXJtX3ByZWNpc2lvbjp0LmNvbmZpZy5hbGFybV9wcmVjaXNpb25cbjs7XG5cbmxldCBpbnRlcnZhbF9udW0gdCB0aW1lID1cbiAgaWYgVGltZV9ucy4oIDwgKSB0aW1lIG1pbl90aW1lXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtIGdvdCB0aW1lIHRvbyBmYXIgaW4gdGhlIHBhc3RcIiAodGltZSA6IFRpbWVfbnMudCldO1xuICBpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgdGltZVxuOztcblxubGV0IGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBpbnRlcnZhbF9udW0gPVxuICBBbGFybV9wcmVjaXNpb24uaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gICAgdC5jb25maWcuYWxhcm1fcHJlY2lzaW9uXG4gICAgKGludGVydmFsX251bSB8PiBJbnRlcnZhbF9udW0udG9faW50NjMpXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX3NtYWxsIGludGVydmFsX251bSA9XG4gIHJhaXNlX3NcbiAgICBbJW1lc3NhZ2VcbiAgICAgIFwiVGltaW5nX3doZWVsLmludGVydmFsX251bV9zdGFydCBnb3QgdG9vIHNtYWxsIGludGVydmFsX251bVwiXG4gICAgICAgIChpbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udClcbiAgICAgICAgKG1pbl9pbnRlcnZhbF9udW0gOiBJbnRlcnZhbF9udW0udCldXG47O1xuXG5sZXRbQGNvbGRdIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX2xhcmdlIHQgaW50ZXJ2YWxfbnVtID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwuaW50ZXJ2YWxfbnVtX3N0YXJ0IGdvdCB0b28gbGFyZ2UgaW50ZXJ2YWxfbnVtXCJcbiAgICAgICAgKGludGVydmFsX251bSA6IEludGVydmFsX251bS50KVxuICAgICAgICAodC5tYXhfaW50ZXJ2YWxfbnVtIDogSW50ZXJ2YWxfbnVtLnQpXVxuOztcblxubGV0IGludGVydmFsX251bV9zdGFydCB0IGludGVydmFsX251bSA9XG4gIGlmIEludGVydmFsX251bS4oIDwgKSBpbnRlcnZhbF9udW0gbWluX2ludGVydmFsX251bVxuICB0aGVuIHJhaXNlX2ludGVydmFsX251bV9zdGFydF9nb3RfdG9vX3NtYWxsIGludGVydmFsX251bTtcbiAgaWYgSW50ZXJ2YWxfbnVtLiggPiApIGludGVydmFsX251bSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9pbnRlcnZhbF9udW1fc3RhcnRfZ290X3Rvb19sYXJnZSB0IGludGVydmFsX251bTtcbiAgaW50ZXJ2YWxfbnVtX3N0YXJ0X3VuY2hlY2tlZCB0IGludGVydmFsX251bVxuOztcblxubGV0IG5leHRfYWxhcm1fZmlyZXNfYXRfaW50ZXJuYWwgdCBrZXkgPVxuICAoKiBbaW50ZXJ2YWxfbnVtX3N0YXJ0IHQga2V5XSBpcyB0aGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0aW1lIGludGVydmFsXG4gICAgIGhvbGRpbmcgdGhlIGZpcnN0IGFsYXJtIGluIFt0XS4gIEFkdmFuY2luZyB0byB0aGF0IHdvdWxkIG5vdCBiZSBlbm91Z2gsIHNpbmNlIHRoZVxuICAgICBhbGFybXMgaW4gdGhhdCBpbnRlcnZhbCBkb24ndCBmaXJlIHVudGlsIHRoZSBjbG9jayBpcyBhZHZhbmNlZCB0byB0aGUgc3RhcnQgb2YgdGhlXG4gICAgIG5leHQgaW50ZXJ2YWwuICBTbywgd2UgdXNlIFtzdWNjIGtleV0gdG8gYWR2YW5jZSB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHRcbiAgICAgaW50ZXJ2YWwuICopXG4gIGludGVydmFsX251bV9zdGFydCB0IChLZXkuc3VjYyBrZXkpXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQgaW5cbiAgICBpZiBJbnRlcnZhbF9udW0uZXF1YWwga2V5IHQubWF4X2ludGVydmFsX251bVxuICAgIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAobmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleSkpXG47O1xuXG5sZXQgbmV4dF9hbGFybV9maXJlc19hdF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIHJhaXNlX25leHRfYWxhcm1fZmlyZXNfYXRfZXhuX29mX2VtcHR5X3RpbWluZ193aGVlbCB0O1xuICBsZXQga2V5ID0gSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQgaW5cbiAgaWYgSW50ZXJ2YWxfbnVtLmVxdWFsIGtleSB0Lm1heF9pbnRlcnZhbF9udW1cbiAgdGhlbiByYWlzZV9uZXh0X2FsYXJtX2ZpcmVzX2F0X3dpdGhfYWxsX2FsYXJtc19pbl9tYXhfaW50ZXJ2YWwgdDtcbiAgbmV4dF9hbGFybV9maXJlc19hdF9pbnRlcm5hbCB0IGtleVxuOztcblxubGV0IGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0ID1cbiAgbGV0IG1heF9hbGxvd2VkX2tleSA9IFByaW9yaXR5X3F1ZXVlLm1heF9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVydmFsX251bS4oID49ICkgbWF4X2FsbG93ZWRfa2V5IHQubWF4X2ludGVydmFsX251bVxuICB0aGVuIG1heF90aW1lXG4gIGVsc2VcbiAgICBUaW1lX25zLmFkZFxuICAgICAgKGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCBtYXhfYWxsb3dlZF9rZXkpXG4gICAgICAoVGltZV9ucy5TcGFuLiggLSApIChhbGFybV9wcmVjaXNpb24gdCkgVGltZV9ucy5TcGFuLm5hbm9zZWNvbmQpXG47O1xuXG5sZXQgbm93X2ludGVydmFsX251bSB0ID0gUHJpb3JpdHlfcXVldWUubWluX2FsbG93ZWRfa2V5IHQucHJpb3JpdHlfcXVldWVcbmxldCBtaW5fYWxsb3dlZF9hbGFybV9pbnRlcnZhbF9udW0gPSBub3dfaW50ZXJ2YWxfbnVtXG5sZXQgbWF4X2FsbG93ZWRfYWxhcm1faW50ZXJ2YWxfbnVtIHQgPSBpbnRlcnZhbF9udW0gdCAobWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KVxubGV0IGludGVydmFsX3N0YXJ0IHQgdGltZSA9IGludGVydmFsX251bV9zdGFydF91bmNoZWNrZWQgdCAoaW50ZXJ2YWxfbnVtIHQgdGltZSlcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmNvbmZpZzooY2hlY2sgQ29uZmlnLmludmFyaWFudClcbiAgICAgIH5zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW4gc3RhcnQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPj0gKSBzdGFydCBtaW5fdGltZSk7XG4gICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgc3RhcnQgbWF4X3RpbWUpKSlcbiAgICAgIH5tYXhfaW50ZXJ2YWxfbnVtOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfaW50ZXJ2YWxfbnVtIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEludGVydmFsX251bS50XVxuICAgICAgICAgICAgIH5leHBlY3Q6bWF4X2ludGVydmFsX251bVxuICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCBtYXhfdGltZSk7XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IEludGVydmFsX251bS50XVxuICAgICAgICAgICAgIH5leHBlY3Q6bWF4X2ludGVydmFsX251bVxuICAgICAgICAgICAgIChpbnRlcnZhbF9udW0gdCAoaW50ZXJ2YWxfbnVtX3N0YXJ0IHQgbWF4X2ludGVydmFsX251bSkpKSlcbiAgICAgIH5ub3c6XG4gICAgICAgIChjaGVjayAoZnVuIG5vdyAtPlxuICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA+PSApIG5vdyB0LnN0YXJ0KTtcbiAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLiggPD0gKSBub3cgbWF4X3RpbWUpO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIEludGVydmFsX251bS5lcXVhbFxuICAgICAgICAgICAgICAgKGludGVydmFsX251bSB0IHQubm93KVxuICAgICAgICAgICAgICAgKFByaW9yaXR5X3F1ZXVlLm1pbl9hbGxvd2VkX2tleSB0LnByaW9yaXR5X3F1ZXVlKSkpKVxuICAgICAgfm5vd19pbnRlcnZhbF9udW1fc3RhcnQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vd19pbnRlcnZhbF9udW1fc3RhcnQgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XVxuICAgICAgICAgICAgIG5vd19pbnRlcnZhbF9udW1fc3RhcnRcbiAgICAgICAgICAgICB+ZXhwZWN0OihpbnRlcnZhbF9udW1fc3RhcnQgdCAobm93X2ludGVydmFsX251bSB0KSkpKVxuICAgICAgfm1heF9hbGxvd2VkX2FsYXJtX3RpbWU6XG4gICAgICAgIChjaGVjayAoZnVuIG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgLT5cbiAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogVGltZV9ucy50XVxuICAgICAgICAgICAgIG1heF9hbGxvd2VkX2FsYXJtX3RpbWVcbiAgICAgICAgICAgICB+ZXhwZWN0Oihjb21wdXRlX21heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCkpKVxuICAgICAgfnByaW9yaXR5X3F1ZXVlOihjaGVjayAoUHJpb3JpdHlfcXVldWUuaW52YXJpYW50IGludmFyaWFudF9hKSk7XG4gICAgaXRlciB0IH5mOihmdW4gYWxhcm0gLT5cbiAgICAgIGFzc2VydCAoXG4gICAgICAgIEludGVydmFsX251bS5lcXVhbFxuICAgICAgICAgIChBbGFybS5pbnRlcnZhbF9udW0gdCBhbGFybSlcbiAgICAgICAgICAoaW50ZXJ2YWxfbnVtIHQgKEFsYXJtLmF0IHQgYWxhcm0pKSk7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBUaW1lX25zLiggPj0gKVxuICAgICAgICAgIChpbnRlcnZhbF9zdGFydCB0IChBbGFybS5hdCB0IGFsYXJtKSlcbiAgICAgICAgICAoaW50ZXJ2YWxfc3RhcnQgdCAobm93IHQpKSk7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBUaW1lX25zLiggPiApIChBbGFybS5hdCB0IGFsYXJtKSAoVGltZV9ucy5zdWIgKG5vdyB0KSAoYWxhcm1fcHJlY2lzaW9uIHQpKSkpKVxuOztcblxubGV0IGRlYnVnID0gZmFsc2VcblxubGV0IGFkdmFuY2VfY2xvY2sgdCB+dG9fIH5oYW5kbGVfZmlyZWQgPVxuICBpZiBUaW1lX25zLiggPiApIHRvXyAobm93IHQpXG4gIHRoZW4gKFxuICAgIHQubm93IDwtIHRvXztcbiAgICBsZXQga2V5ID0gaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IHRvXyBpblxuICAgIHQubm93X2ludGVydmFsX251bV9zdGFydCA8LSBpbnRlcnZhbF9udW1fc3RhcnRfdW5jaGVja2VkIHQga2V5O1xuICAgIG1hdGNoXG4gICAgICBQcmlvcml0eV9xdWV1ZS5pbmNyZWFzZV9taW5fYWxsb3dlZF9rZXlcbiAgICAgICAgdC5wcmlvcml0eV9xdWV1ZVxuICAgICAgICB+a2V5XG4gICAgICAgIH5oYW5kbGVfcmVtb3ZlZDpoYW5kbGVfZmlyZWRcbiAgICB3aXRoXG4gICAgfCBNYXhfYWxsb3dlZF9rZXlfZGlkX25vdF9jaGFuZ2UgLT5cbiAgICAgIGlmIGRlYnVnXG4gICAgICB0aGVuXG4gICAgICAgIGFzc2VydCAoVGltZV9ucy4oID0gKSB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgKGNvbXB1dGVfbWF4X2FsbG93ZWRfYWxhcm1fdGltZSB0KSlcbiAgICB8IE1heF9hbGxvd2VkX2tleV9tYXliZV9jaGFuZ2VkIC0+XG4gICAgICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQpXG47O1xuXG5sZXQgY3JlYXRlIH5jb25maWcgfnN0YXJ0ID1cbiAgaWYgVGltZV9ucy4oIDwgKSBzdGFydCBUaW1lX25zLmVwb2NoXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJUaW1pbmdfd2hlZWwuY3JlYXRlIGdvdCBzdGFydCBiZWZvcmUgdGhlIGVwb2NoXCIgKHN0YXJ0IDogVGltZV9ucy50KV07XG4gIGxldCB0ID1cbiAgICB7IGNvbmZpZ1xuICAgIDsgc3RhcnRcbiAgICA7IG1heF9pbnRlcnZhbF9udW0gPVxuICAgICAgICBpbnRlcnZhbF9udW1faW50ZXJuYWwgfnRpbWU6bWF4X3RpbWUgfmFsYXJtX3ByZWNpc2lvbjpjb25maWcuYWxhcm1fcHJlY2lzaW9uXG4gICAgOyBub3cgPSBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG5vd19pbnRlcnZhbF9udW1fc3RhcnQgPVxuICAgICAgICBUaW1lX25zLm1pbl92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nICgqIHNldCBieSBbYWR2YW5jZV9jbG9ja10gYmVsb3cgKilcbiAgICA7IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPSBtYXhfdGltZSAoKiBzZXQgYnkgW2FkdmFuY2VfY2xvY2tdIGJlbG93ICopXG4gICAgOyBwcmlvcml0eV9xdWV1ZSA9XG4gICAgICAgIFByaW9yaXR5X3F1ZXVlLmNyZWF0ZSA/Y2FwYWNpdHk6Y29uZmlnLmNhcGFjaXR5IH5sZXZlbF9iaXRzOmNvbmZpZy5sZXZlbF9iaXRzICgpXG4gICAgfVxuICBpblxuICB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgPC0gY29tcHV0ZV9tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQ7XG4gIGFkdmFuY2VfY2xvY2sgdCB+dG9fOnN0YXJ0IH5oYW5kbGVfZmlyZWQ6KGZ1biBfIC0+IGFzc2VydCBmYWxzZSk7XG4gIHRcbjs7XG5cbmxldCBhZGRfYXRfaW50ZXJ2YWxfbnVtIHQgfmF0IHZhbHVlID1cbiAgSW50ZXJuYWxfZWx0LnRvX2V4dGVybmFsXG4gICAgKFByaW9yaXR5X3F1ZXVlLmludGVybmFsX2FkZFxuICAgICAgIHQucHJpb3JpdHlfcXVldWVcbiAgICAgICB+a2V5OmF0XG4gICAgICAgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbiAgICAgICB2YWx1ZSlcbjs7XG5cbmxldFtAY29sZF0gcmFpc2VfdGhhdF9mYXJfaW5fdGhlX2Z1dHVyZSB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIHRoYXQgZmFyIGluIHRoZSBmdXR1cmVcIlxuICAgICAgICAoYXQgOiBUaW1lX25zLnQpXG4gICAgICAgIH5tYXhfYWxsb3dlZF9hbGFybV90aW1lOih0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgOiBUaW1lX25zLnQpXVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9iZWZvcmVfc3RhcnRfb2ZfY3VycmVudF9pbnRlcnZhbCB0IGF0ID1cbiAgcmFpc2Vfc1xuICAgIFslbWVzc2FnZVxuICAgICAgXCJUaW1pbmdfd2hlZWwgY2Fubm90IHNjaGVkdWxlIGFsYXJtIGJlZm9yZSBzdGFydCBvZiBjdXJyZW50IGludGVydmFsXCJcbiAgICAgICAgKGF0IDogVGltZV9ucy50KVxuICAgICAgICB+bm93X2ludGVydmFsX251bV9zdGFydDoodC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0IDogVGltZV9ucy50KV1cbjs7XG5cbmxldCBlbnN1cmVfY2FuX3NjaGVkdWxlX2FsYXJtIHQgfmF0ID1cbiAgaWYgVGltZV9ucy4oID4gKSBhdCB0Lm1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdGhlbiByYWlzZV90aGF0X2Zhcl9pbl90aGVfZnV0dXJlIHQgYXQ7XG4gIGlmIFRpbWVfbnMuKCA8ICkgYXQgdC5ub3dfaW50ZXJ2YWxfbnVtX3N0YXJ0XG4gIHRoZW4gcmFpc2VfYmVmb3JlX3N0YXJ0X29mX2N1cnJlbnRfaW50ZXJ2YWwgdCBhdFxuOztcblxubGV0IGFkZCB0IH5hdCB2YWx1ZSA9XG4gIGVuc3VyZV9jYW5fc2NoZWR1bGVfYWxhcm0gdCB+YXQ7XG4gIEludGVybmFsX2VsdC50b19leHRlcm5hbFxuICAgIChQcmlvcml0eV9xdWV1ZS5pbnRlcm5hbF9hZGRcbiAgICAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgICAgfmtleTooaW50ZXJ2YWxfbnVtX3VuY2hlY2tlZCB0IGF0KVxuICAgICAgIH5hdFxuICAgICAgIHZhbHVlKVxuOztcblxubGV0IHJlbW92ZSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUucmVtb3ZlIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cbmxldCBjbGVhciB0ID0gUHJpb3JpdHlfcXVldWUuY2xlYXIgdC5wcmlvcml0eV9xdWV1ZVxubGV0IG1lbSB0IGFsYXJtID0gUHJpb3JpdHlfcXVldWUubWVtIHQucHJpb3JpdHlfcXVldWUgYWxhcm1cblxubGV0IHJlc2NoZWR1bGVfZ2VuIHQgYWxhcm0gfmtleSB+YXQgPVxuICBpZiBub3QgKG1lbSB0IGFsYXJtKVxuICB0aGVuIGZhaWx3aXRoIFwiVGltaW5nX3doZWVsIGNhbm5vdCByZXNjaGVkdWxlIGFsYXJtIG5vdCBpbiB0aW1pbmcgd2hlZWxcIjtcbiAgZW5zdXJlX2Nhbl9zY2hlZHVsZV9hbGFybSB0IH5hdDtcbiAgUHJpb3JpdHlfcXVldWUuY2hhbmdlIHQucHJpb3JpdHlfcXVldWUgYWxhcm0gfmtleSB+YXRcbjs7XG5cbmxldCByZXNjaGVkdWxlIHQgYWxhcm0gfmF0ID0gcmVzY2hlZHVsZV9nZW4gdCBhbGFybSB+a2V5OihpbnRlcnZhbF9udW1fdW5jaGVja2VkIHQgYXQpIH5hdFxuXG5sZXQgcmVzY2hlZHVsZV9hdF9pbnRlcnZhbF9udW0gdCBhbGFybSB+YXQgPVxuICByZXNjaGVkdWxlX2dlbiB0IGFsYXJtIH5rZXk6YXQgfmF0OihpbnRlcnZhbF9udW1fc3RhcnQgdCBhdClcbjs7XG5cbmxldCBtaW5fYWxhcm1faW50ZXJ2YWxfbnVtIHQgPVxuICBsZXQgZWx0ID0gUHJpb3JpdHlfcXVldWUubWluX2VsdF8gdC5wcmlvcml0eV9xdWV1ZSBpblxuICBpZiBJbnRlcm5hbF9lbHQuaXNfbnVsbCBlbHQgdGhlbiBOb25lIGVsc2UgU29tZSAoSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHQpXG47O1xuXG5sZXQgbWluX2FsYXJtX2ludGVydmFsX251bV9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1pbl9hbGFybV9pbnRlcnZhbF9udW1fZXhuIG9mIGVtcHR5IHRpbWluZ193aGVlbFwiXG4gICAgICAgICAgfnRpbWluZ193aGVlbDoodCA6IF8gdCldXG4gIGVsc2UgSW50ZXJuYWxfZWx0LmtleSAocG9vbCB0KSBlbHRcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1heF9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtaW5fYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0ID1cbiAgbGV0IHBvb2wgPSBwb29sIHQgaW5cbiAgSW50ZXJuYWxfZWx0Lm1pbl9hbGFybV90aW1lIHBvb2wgZWx0IH53aXRoX2tleTooSW50ZXJuYWxfZWx0LmtleSBwb29sIGVsdClcbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdCB0aGVuIE5vbmUgZWxzZSBTb21lIChtYXhfYWxhcm1fdGltZV9pbl9saXN0IHQgZWx0KVxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbCB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHQpXG47O1xuXG5sZXQgbWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0ID1cbiAgbGV0IGVsdCA9IFByaW9yaXR5X3F1ZXVlLm1pbl9lbHRfIHQucHJpb3JpdHlfcXVldWUgaW5cbiAgaWYgSW50ZXJuYWxfZWx0LmlzX251bGwgZWx0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biBvZiBlbXB0eSB0aW1pbmcgd2hlZWxcIlxuICAgICAgICAgIH50aW1pbmdfd2hlZWw6KHQgOiBfIHQpXTtcbiAgbWF4X2FsYXJtX3RpbWVfaW5fbGlzdCB0IGVsdFxuOztcblxubGV0IG1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdCA9XG4gIGxldCBlbHQgPSBQcmlvcml0eV9xdWV1ZS5taW5fZWx0XyB0LnByaW9yaXR5X3F1ZXVlIGluXG4gIGlmIEludGVybmFsX2VsdC5pc19udWxsIGVsdFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiVGltaW5nX3doZWVsLm1heF9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gb2YgZW1wdHkgdGltaW5nIHdoZWVsXCJcbiAgICAgICAgICB+dGltaW5nX3doZWVsOih0IDogXyB0KV07XG4gIG1pbl9hbGFybV90aW1lX2luX2xpc3QgdCBlbHRcbjs7XG5cbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgfmhhbmRsZV9maXJlZCA9XG4gIFByaW9yaXR5X3F1ZXVlLmZpcmVfcGFzdF9hbGFybXNcbiAgICB0LnByaW9yaXR5X3F1ZXVlXG4gICAgfmhhbmRsZV9maXJlZFxuICAgIH5rZXk6KG5vd19pbnRlcnZhbF9udW0gdClcbiAgICB+bm93OnQubm93XG47O1xuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICBtb2R1bGUgTnVtX2tleV9iaXRzID0gTnVtX2tleV9iaXRzXG5cbiAgbGV0IGludGVydmFsX251bV9pbnRlcm5hbCA9IGludGVydmFsX251bV9pbnRlcm5hbFxuICBsZXQgbWF4X3RpbWUgPSBtYXhfdGltZVxuZW5kXG4iLCJtb2R1bGUgSW5yaWFfc3lzID0gU3lzXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcbm9wZW4gUG9seVxuXG5sZXQgc2VjID0gVGltZV9ucy5TcGFuLm9mX3NlY1xubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcblxubW9kdWxlIEVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgaW5jbHVkZSBJbnRcblxuICAgIGxldCBoZXJlID0gWyVoZXJlXVxuICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIFRpbWVfbnMuU3BhblxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gVGltZV9ucy5TcGFuLnZhbGlkYXRlX25vbl9uZWdhdGl2ZVxuICBlbmQpXG5cbm1vZHVsZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBWYWxpZGF0ZWQuTWFrZSAoc3RydWN0XG4gICAgICBpbmNsdWRlIEludFxuXG4gICAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICAgIGxldCB2YWxpZGF0ZSA9IEludC52YWxpZGF0ZV9wb3NpdGl2ZVxuICAgIGVuZClcblxuICBsZXQgZGVmYXVsdCA9IGNyZWF0ZV9leG4gKDEgbHNsIDE2KVxuICBsZXQgZXF1YWwgKHQxIDogdCkgdDIgPSB0MSA9IHQyXG5lbmRcblxubW9kdWxlIE1heF9udW1fdGhyZWFkcyA9IFZhbGlkYXRlZC5NYWtlIChzdHJ1Y3RcbiAgICBpbmNsdWRlIEludFxuXG4gICAgbGV0IGhlcmUgPSBbJWhlcmVdXG4gICAgbGV0IHZhbGlkYXRlID0gSW50LnZhbGlkYXRlX3Bvc2l0aXZlXG4gIGVuZClcblxubW9kdWxlIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gVmFsaWRhdGVkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgSW50XG5cbiAgICBsZXQgaGVyZSA9IFslaGVyZV1cbiAgICBsZXQgdmFsaWRhdGUgPSBJbnQudmFsaWRhdGVfcG9zaXRpdmVcbiAgZW5kKVxuXG5tb2R1bGUgRHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IHN0cnVjdFxuICBtb2R1bGUgSG93X3RvX2R1bXAgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBEZWZhdWx0XG4gICAgICB8IENhbGxfYWJvcnRcbiAgICAgIHwgQ2FsbF9nY29yZVxuICAgIFtAQGRlcml2aW5nIHNleHBdXG4gIGVuZFxuXG4gIHR5cGUgd2F0Y2ggPVxuICAgIHsgZHVtcF9pZl9kZWxheWVkX2J5IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IGhvd190b19kdW1wIDogSG93X3RvX2R1bXAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF1cblxuICB0eXBlIHQgPVxuICAgIHwgV2F0Y2ggb2Ygd2F0Y2hcbiAgICB8IERvX25vdF93YXRjaFxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbm1vZHVsZSBEZWJ1Z190YWcgPSBzdHJ1Y3RcbiAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBbGxcbiAgICAgIHwgQ2xvY2tcbiAgICAgIHwgRmRcbiAgICAgIHwgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICB8IEZpbmFsaXplcnNcbiAgICAgIHwgSW50ZXJydXB0b3JcbiAgICAgIHwgTW9uaXRvclxuICAgICAgfCBNb25pdG9yX3NlbmRfZXhuXG4gICAgICB8IFBhcmFsbGVsXG4gICAgICB8IFJlYWRlclxuICAgICAgfCBTY2hlZHVsZXJcbiAgICAgIHwgU2h1dGRvd25cbiAgICAgIHwgVGhyZWFkX3Bvb2xcbiAgICAgIHwgVGhyZWFkX3NhZmVcbiAgICAgIHwgV3JpdGVyXG4gICAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF1cblxuICAgIGxldCBlcXVhbCA9IFslY29tcGFyZS5lcXVhbDogdF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9XG4gICAgWyBBbGxcbiAgICA7IENsb2NrXG4gICAgOyBGZFxuICAgIDsgRmlsZV9kZXNjcl93YXRjaGVyXG4gICAgOyBGaW5hbGl6ZXJzXG4gICAgOyBJbnRlcnJ1cHRvclxuICAgIDsgTW9uaXRvclxuICAgIDsgTW9uaXRvcl9zZW5kX2V4blxuICAgIDsgUGFyYWxsZWxcbiAgICA7IFJlYWRlclxuICAgIDsgU2NoZWR1bGVyXG4gICAgOyBTaHV0ZG93blxuICAgIDsgVGhyZWFkX3Bvb2xcbiAgICA7IFRocmVhZF9zYWZlXG4gICAgOyBXcml0ZXJcbiAgICBdXG4gIDs7XG5lbmRcblxubW9kdWxlIEZpbGVfZGVzY3Jfd2F0Y2hlciA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IEVwb2xsX2lmX3RpbWVyZmRcbiAgICAgIHwgRXBvbGxcbiAgICAgIHwgU2VsZWN0XG4gICAgW0BAZGVyaXZpbmcgc2V4cF1cbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuVG9fc3RyaW5nYWJsZSAoVClcblxuICBsZXQgbGlzdCA9IFsgRXBvbGxfaWZfdGltZXJmZDsgRXBvbGw7IFNlbGVjdCBdXG5lbmRcblxudHlwZSB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgOiBUaW1lX25zLlNwYW4udCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBjaGVja19pbnZhcmlhbnRzIDogYm9vbCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgOiBib29sIG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgOiBEdW1wX2NvcmVfb25fam9iX2RlbGF5LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgOiBGaWxlX2Rlc2NyX3dhdGNoZXIudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzIDogTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV90aHJlYWRzIDogTWF4X251bV90aHJlYWRzLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0BzZXhwLm9wdGlvbl1cbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIDogRGVidWdfdGFnLnQgbGlzdCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyByZWNvcmRfYmFja3RyYWNlcyA6IGJvb2wgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA6IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS50IG9wdGlvbiBbQHNleHAub3B0aW9uXVxuICA7IHRpbWluZ193aGVlbF9jb25maWcgOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnQgb3B0aW9uIFtAc2V4cC5vcHRpb25dXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF1cblxubGV0IGVtcHR5ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBOb25lXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IE5vbmVcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBOb25lXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IE5vbmVcbiAgOyBlcG9sbF9tYXhfcmVhZHlfZXZlbnRzID0gTm9uZVxuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IE5vbmVcbiAgOyBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9IE5vbmVcbiAgOyBtYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMgPSBOb25lXG4gIDsgbWF4X251bV90aHJlYWRzID0gTm9uZVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID0gTm9uZVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gTm9uZVxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IE5vbmVcbiAgOyByZWNvcmRfYmFja3RyYWNlcyA9IE5vbmVcbiAgOyByZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yID0gTm9uZVxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eSA9IE5vbmVcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gTm9uZVxuICB9XG47O1xuXG5sZXQgY3JlYXRlXG4gICAgICA/YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/Y2hlY2tfaW52YXJpYW50c1xuICAgICAgP2RldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICAgICAgP2R1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgICAgID9lcG9sbF9tYXhfcmVhZHlfZXZlbnRzXG4gICAgICA/ZmlsZV9kZXNjcl93YXRjaGVyXG4gICAgICA/bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgICAgID9tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnNcbiAgICAgID9tYXhfbnVtX3RocmVhZHNcbiAgICAgID9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxuICAgICAgP21pbl9pbnRlcl9jeWNsZV90aW1lb3V0XG4gICAgICA/cHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yXG4gICAgICA/cmVjb3JkX2JhY2t0cmFjZXNcbiAgICAgID9yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yXG4gICAgICA/dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5XG4gICAgICA/dGltaW5nX3doZWVsX2NvbmZpZ1xuICAgICAgKClcbiAgPVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWRcbiAgOyBkdW1wX2NvcmVfb25fam9iX2RlbGF5XG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50c1xuICA7IGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzXG4gIDsgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dFxuICA7IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IHRpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZ19mb3Jfd29yZF9zaXplICh3b3JkX3NpemUgOiBXb3JkX3NpemUudCkgPVxuICBsZXQgbW9kdWxlIEFsYXJtX3ByZWNpc2lvbiA9IFRpbWluZ193aGVlbC5BbGFybV9wcmVjaXNpb24gaW5cbiAgbGV0IGFsYXJtX3ByZWNpc2lvbiwgbGV2ZWxfYml0cyA9XG4gICAgbWF0Y2ggd29yZF9zaXplIHdpdGhcbiAgICB8IFczMiAtPiBBbGFybV9wcmVjaXNpb24uYWJvdXRfb25lX21pbGxpc2Vjb25kLCBbIDEwOyAxMDsgOSBdXG4gICAgfCBXNjQgLT4gQWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpLCBbIDE0OyAxNTsgOTsgNiBdXG4gIGluXG4gIFRpbWluZ193aGVlbC5Db25maWcuY3JlYXRlXG4gICAgfmFsYXJtX3ByZWNpc2lvblxuICAgIH5sZXZlbF9iaXRzOihUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGxldmVsX2JpdHMpXG4gICAgKClcbjs7XG5cbmxldCBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcgPVxuICBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdfZm9yX3dvcmRfc2l6ZSBXb3JkX3NpemUud29yZF9zaXplXG47O1xuXG5sZXQgZGVmYXVsdCA9XG4gICgqIEZvciBbZmlsZV9kZXNjcl93YXRjaGVyXSBhbmQgW21heF9udW1fb3Blbl9maWxlX2Rlc2Nyc10gd2UgY2hvb3NlIHRoZSBkZWZhdWx0IGZvciB0aGVcbiAgICAgY29tbW9uIGNhc2UgdGhhdCBbZXBvbGxdIGlzIGF2YWlsYWJsZS4gIFRoZXJlIGlzIHNvbWUgYWRkaXRpb25hbCBjb2RlIGluXG4gICAgIFtBc3luY191bml4LkNvbmZpZ10gdGhhdCBjaGVja3Mgd2hldGhlciBbZXBvbGxdIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSwgYW5kIGlmIG5vdCxcbiAgICAgdXNlcyBbc2VsZWN0XSBhbmQgYSBzbWFsbGVyIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzLiAqKVxuICB7IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyA2MC4pXG4gIDsgY2hlY2tfaW52YXJpYW50cyA9IFNvbWUgZmFsc2VcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGZhbHNlXG4gIDsgZHVtcF9jb3JlX29uX2pvYl9kZWxheSA9IFNvbWUgRG9fbm90X3dhdGNoXG4gIDsgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9IFNvbWUgKEVwb2xsX21heF9yZWFkeV9ldmVudHMuY3JlYXRlX2V4biAyNTYpXG4gIDsgZmlsZV9kZXNjcl93YXRjaGVyID0gU29tZSBFcG9sbF9pZl90aW1lcmZkXG4gIDsgbWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQgPSBTb21lIChNYXhfaW50ZXJfY3ljbGVfdGltZW91dC5jcmVhdGVfZXhuIChzZWMgMC4wNSkpXG4gIDsgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gU29tZSBNYXhfbnVtX29wZW5fZmlsZV9kZXNjcnMuZGVmYXVsdFxuICA7IG1heF9udW1fdGhyZWFkcyA9IFNvbWUgKE1heF9udW1fdGhyZWFkcy5jcmVhdGVfZXhuIDUwKVxuICA7IG1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlID1cbiAgICAgIFNvbWUgKE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gNTAwKVxuICA7IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSAoTWluX2ludGVyX2N5Y2xlX3RpbWVvdXQuY3JlYXRlX2V4biAoc2VjIDAuKSlcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSBTb21lIFtdXG4gIDsgcmVjb3JkX2JhY2t0cmFjZXMgPSBTb21lIGZhbHNlXG4gIDsgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9IFNvbWUgKHNlYyAxLilcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIEluaGVyaXRcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWdcbiAgfVxuOztcblxubGV0IGV4YW1wbGUgPVxuICB7IGRlZmF1bHQgd2l0aFxuICAgIHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IFNvbWUgRGVidWdfdGFnLlsgRmQ7IFNjaGVkdWxlciBdXG4gIDsgdGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5ID1cbiAgICAgIFNvbWVcbiAgICAgICAgKENwdXNldFxuICAgICAgICAgICAoWyAwOyAxOyAyIF0gfD4gSW50LlNldC5vZl9saXN0IHw+IFRocmVhZF9wb29sX2NwdV9hZmZpbml0eS5DcHVzZXQuY3JlYXRlX2V4bikpXG4gIH1cbjs7XG5cbmxldCBlbnZpcm9ubWVudF92YXJpYWJsZSA9IFwiQVNZTkNfQ09ORklHXCJcblxubGV0IGZpZWxkX2Rlc2NyaXB0aW9ucyAoKSA6IHN0cmluZyA9XG4gIGxldCBmaWVsZCB0b19zZXhwIGRlc2NyaXB0aW9uIGFjIGZpZWxkID1cbiAgICAoRmllbGQubmFtZSBmaWVsZCwgdG9fc2V4cCAoT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKSwgZGVzY3JpcHRpb24pXG4gICAgOjogYWNcbiAgaW5cbiAgbGV0IGZpZWxkcyA9XG4gICAgRmllbGRzLmZvbGRcbiAgICAgIH5pbml0OltdXG4gICAgICB+YWJvcnRfYWZ0ZXJfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHNlbmQgYW4gZXhjZXB0aW9uIHRvIHRoZSB0b3BsZXZlbCBtb25pdG9yXG4gIGlmIGl0IGRldGVjdHMgdGhhdCB0aGUgdGhyZWFkIHBvb2wgaXMgc3R1Y2sgZm9yIGxvbmdlciB0aGFuIHRoaXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmNoZWNrX2ludmFyaWFudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IGJvb2xdXG4gICAgICAgICAgIFsge3xcbiAgSWYgdHJ1ZSwgY2F1c2VzIEFzeW5jIHRvIHJlZ3VsYXJseSBjaGVjayBpbnZhcmlhbnRzIG9mIGl0cyBpbnRlcm5hbFxuICBkYXRhIHN0cnVjdHVyZXMuICBUaGlzIGNhbiBzdWJzdGFudGlhbGx5IHNsb3cgZG93biB5b3VyIHByb2dyYW0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZDpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogYm9vbF1cbiAgICAgICAgICAgWyB7fFxuICBJZiB0cnVlLCBjYXVzZXMgQXN5bmMgcm91dGluZXMgdG8gY2hlY2sgaWYgdGhleSBhcmUgYmVpbmcgYWNjZXNzZWRcbiAgZnJvbSBzb21lIHRocmVhZCBvdGhlciB0aGFuIHRoZSB0aHJlYWQgY3VycmVudGx5IGhvbGRpbmcgdGhlIEFzeW5jXG4gIGxvY2ssIHdoaWNoIGlzIG5vdCBhbGxvd2VkIGFuZCBjYW4gbGVhZCB0byB2ZXJ5IGNvbmZ1c2luZyBiZWhhdmlvci5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZHVtcF9jb3JlX29uX2pvYl9kZWxheTpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRHVtcF9jb3JlX29uX2pvYl9kZWxheS50XVxuICAgICAgICAgICBbIHt8XG4gIENhbiBiZSBzZXQgdG8gW0RvX25vdF93YXRjaF0gb3I6XG5cbiAgICAoV2F0Y2ggKChkdW1wX2lmX2RlbGF5ZWRfYnkgU1BBTikgKGhvd190b19kdW1wIEhPVykpKVxuXG4gIElmIHNldCB0byBbV2F0Y2hdLCB0aGVuIG9uIHByb2dyYW0gc3RhcnQgdGhpcyB3aWxsIHN0YXJ0IGEgcmVndWxhclxuICBBc3luYyBqb2IgdGhhdCBpbmNyZW1lbnRzIGEgY291bnRlciwgYW5kIGEgQyB0aHJlYWQgdGhhdCB3aWxsXG4gIGRldGVjdCBpZiB0aGF0IGpvYiBpcyBkZWxheWVkIGJ5IFtkdW1wX2lmX2RlbGF5ZWRfYnldLCBhbmQgaWYgc28sXG4gIHdpbGwgY29yZSBkdW1wIHRoZSBwcm9ncmFtLiAgSWYgYXZhaWxhYmxlLCBbL3Vzci9iaW4vZ2NvcmVdIGlzXG4gIHVzZWQgYnkgZGVmYXVsdCB0byBkdW1wIHRoZSBjb3JlLCB3aGljaCBzaG91bGQgYWxsb3cgdGhlIHByb2dyYW1cbiAgdG8gY29udGludWUgcnVubmluZy4gIE90aGVyd2lzZSwgW2Fib3J0XSB3aWxsIGJlIGNhbGxlZCBmcm9tIEMsXG4gIHdoaWNoIHdpbGwga2lsbCB0aGUgcHJvZ3JhbSB3aGlsZSBjYXVzaW5nIGEgY29yZSBkdW1wLiAgT25lIGNhblxuICBmb3JjZSBbYWJvcnRdIG9yIFtnY29yZV0gdmlhIFtob3dfdG9fZHVtcF0sIHdoaWNoIHNob3VsZCBiZSBvbmUgb2Y6XG4gIFtDYWxsX2Fib3J0XSwgW0NhbGxfZ2NvcmVdLCBvciBbRGVmYXVsdF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfmVwb2xsX21heF9yZWFkeV9ldmVudHM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IEVwb2xsX21heF9yZWFkeV9ldmVudHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVhZHkgZXZlbnRzIHRoYXQgQXN5bmMncyBjYWxsIHRvIFtFcG9sbC53YWl0XVxuICB3aWxsIGhhbmRsZS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+ZmlsZV9kZXNjcl93YXRjaGVyOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBGaWxlX2Rlc2NyX3dhdGNoZXIudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGlzIGRldGVybWluZXMgd2hhdCBPUyBzdWJzeXN0ZW0gQXN5bmMgdXNlcyB0byB3YXRjaCBmaWxlIGRlc2NyaXB0b3JzIGZvciBiZWluZyByZWFkeS5cbiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIFtlcG9sbF0gaWYgdGltZXJmZCdzIGFyZSBzdXBwb3J0ZWQgYW5kIGlmIG5vdCwgdXNlIFtzZWxlY3RdLlxuXG4gIEFsbG93ZWQgdmFsdWVzIGFyZTp8fVxuICAgICAgICAgICA7IGNvbmNhdFxuICAgICAgICAgICAgICAgfnNlcDpcIiwgXCJcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBGaWxlX2Rlc2NyX3dhdGNoZXIubGlzdCB+ZjpGaWxlX2Rlc2NyX3dhdGNoZXIudG9fc3RyaW5nKVxuICAgICAgICAgICA7IHt8LlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5tYXhfbnVtX29wZW5fZmlsZV9kZXNjcnM6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICAoZnVuIGRlZmF1bHQgLT5cbiAgICAgICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICAgICAgfl86XG4gICAgICAgICAgICAgICAgICAgIChjb25jYXRcbiAgICAgICAgICAgICAgICAgICAgICAgWyBcIm1pbiBcIlxuICAgICAgICAgICAgICAgICAgICAgICA7IGRlZmF1bHQgfD4gTWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzLnJhdyB8PiBJbnQudG9fc3RyaW5nX2h1bVxuICAgICAgICAgICAgICAgICAgICAgICA7IFwiIFt1bGltaXQgLW4gLUhdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgOiBzdHJpbmcpXSlcbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzIGFsbG93ZWQgYXQgYW55IG9uZSB0aW1lLnx9IF0pXG4gICAgICB+bWF4X251bV90aHJlYWRzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX3RocmVhZHMudF1cbiAgICAgICAgICAgWyB7fFxuICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGhyZWFkcyB0aGF0IEFzeW5jIHdpbGwgY3JlYXRlIHRvIGRvIGJsb2NraW5nXG4gIHN5c3RlbSBjYWxscyBhbmQgaGFuZGxlIGNhbGxzIHRvIFtJbl90aHJlYWQucnVuXS5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWF4X2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1heF9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdGhlIHNjaGVkdWxlciB3aWxsIHBhdXNlIGJldHdlZW4gY3ljbGVzXG4gIHdoZW4gaXQgaGFzIG5vIGpvYnMgYW5kIGlzIGdvaW5nIHRvIHdhaXQgZm9yIEkvTy4gIEluIHByaW5jaXBsZSBvbmVcbiAgZG9lc24ndCBuZWVkIHRoaXMsIGFuZCB3ZSBjb3VsZCB1c2UgYW4gaW5maW5pdGUgdGltZW91dC4gIFdlIGluc3RlYWRcbiAgdXNlIGEgc21hbGwgdGltZW91dCAoYnkgZGVmYXVsdCksIHRvIGJlIG1vcmUgcm9idXN0IHRvIGJ1Z3MgdGhhdFxuICBjb3VsZCBwcmV2ZW50IEFzeW5jIGZyb20gd2FraW5nIHVwIGFuZCBzZXJ2aWNpbmcgZXZlbnRzLiAgRm9yXG4gIGV4YW1wbGUsIGFzIG9mIDIwMTMtMDEsIHRoZSBPQ2FtbCBydW50aW1lIGhhcyBhIGJ1ZyB0aGF0IGNhdXNlcyBpdFxuICB0byBub3QgbmVjZXNzYXJpbHkgcnVuIGFuIE9DYW1sIHNpZ25hbCBoYW5kbGVyIGluIGEgdGltZWx5IG1hbm5lci5cbiAgVGhpcyBpbiB0dXJuIGNhbiBjYXVzZSBhIHNpbXBsZSBBc3luYyBwcm9ncmFtIHRoYXQgaXMgd2FpdGluZyBvbiBhXG4gIHNpZ25hbCB0byBoYW5nLCB3aGVuIGluIGZhY3QgaXQgc2hvdWxkIGhhbmRsZSB0aGUgc2lnbmFsLlxuXG4gIFdlIHVzZSA1MG1zIGFzIHRoZSBkZWZhdWx0IHRpbWVvdXQsIGJlY2F1c2UgaXQgaXMgaW5mcmVxdWVudCBlbm91Z2hcbiAgdG8gaGF2ZSBhIG5lZ2xpZ2libGUgcGVyZm9ybWFuY2UgaW1wYWN0LCBhbmQgZnJlcXVlbnQgZW5vdWdoIHRoYXRcbiAgdGhlIGxhdGVuY3kgd291bGQgdHlwaWNhbGx5IGJlIG5vdCBub3RpY2VhYmxlLiAgQWxzbywgNTBtcyBpcyB3aGF0XG4gIHRoZSBPQ2FtbCB0aWNrZXIgdGhyZWFkIHVzZXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XVxuICAgICAgICAgICBbIHt8XG4gIFRoZSBtYXhpbXVtIG51bWJlciBvZiBqb2JzIHRoYXQgd2lsbCBiZSBkb25lIGF0IGVhY2ggcHJpb3JpdHkgd2l0aGluXG4gIGVhY2ggQXN5bmMgY3ljbGUuICBUaGlzIGxpbWl0cyBob3cgbWFueSBqb2JzIHRoZSBzY2hlZHVsZXIgd2lsbCBydW5cbiAgYmVmb3JlIHBhdXNpbmcgdG8gY2hlY2sgZm9yIEkvTy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+bWluX2ludGVyX2N5Y2xlX3RpbWVvdXQ6XG4gICAgICAgIChmaWVsZFxuICAgICAgICAgICBbJXNleHBfb2Y6IE1pbl9pbnRlcl9jeWNsZV90aW1lb3V0LnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhlIG1pbmltdW0gdGltZW91dCB0aGUgc2NoZWR1bGVyIHdpbGwgcGFzcyB0byB0aGUgT1Mgd2hlbiBpdCBjaGVja3NcbiAgZm9yIEkvTyBiZXR3ZWVuIGN5Y2xlcy4gIFRoaXMgaXMgemVybyBieSBkZWZhdWx0LiAgU2V0dGluZyBpdCB0byBhXG4gIG5vbnplcm8gdmFsdWUgaXMgdXNlZCB0byBpbmNyZWFzZSB0aHJlYWQgZmFpcm5lc3MgYmV0d2VlbiB0aGUgc2NoZWR1bGVyXG4gIGFuZCBvdGhlciB0aHJlYWRzLiAgQSBwbGF1c2libGUgc2V0dGluZyBpcyAxdXMuICBUaGlzIGlzIGFsc29cbiAgY29uZmlndXJhYmxlIGluIE9DYW1sIHZpYSBbU2NoZWR1bGVyLnNldF9taW5faW50ZXJfY3ljbGVfdGltZW91dF0uXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvcjpcbiAgICAgICAgKGZpZWxkXG4gICAgICAgICAgIFslc2V4cF9vZjogRGVidWdfdGFnLnQgbGlzdF1cbiAgICAgICAgICAgWyB7fFxuICBBIGxpc3Qgb2YgdGFncyBzcGVjaWZ5aW5nIHdoaWNoIEFzeW5jIGZ1bmN0aW9ucyBzaG91bGQgcHJpbnQgZGVidWdcbiAgbWVzc2FnZXMgdG8gc3RkZXJyLiAgRWFjaCB0YWcgaWRlbnRpZmllcyBhIGdyb3VwIG9mIHJlbGF0ZWQgQXN5bmNcbiAgZnVuY3Rpb25zLiAgVGhlIHRhZyBbYWxsXSBtZWFucyB0byBwcmludCBkZWJ1ZyBtZXNzYWdlcyBmb3IgYWxsXG4gIGZ1bmN0aW9ucy4gIEFsbG93ZWQgdmFsdWVzIGFyZTpcblxufH1cbiAgICAgICAgICAgOyBjb25jYXRcbiAgICAgICAgICAgICAgIChMaXN0Lm1hcCBEZWJ1Z190YWcubGlzdCB+ZjooZnVuIGQgLT5cbiAgICAgICAgICAgICAgICAgIGNvbmNhdCBbIFwiICAgIFwiOyBEZWJ1Z190YWcudG9fc3RyaW5nIGQ7IFwiXFxuXCIgXSkpXG4gICAgICAgICAgIDsge3xcbiAgVHVybmluZyBvbiBkZWJ1ZyBtZXNzYWdlcyB3aWxsIHN1YnN0YW50aWFsbHkgc2xvdyBkb3duIG1vc3QgcHJvZ3JhbXMuXG58fVxuICAgICAgICAgICBdKVxuICAgICAgfnJlY29yZF9iYWNrdHJhY2VzOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBib29sXVxuICAgICAgICAgICBbIHt8XG4gIElmIHRydWUsIHRoaXMgd2lsbCBjYXVzZSBBc3luYyB0byBrZWVwIGluIHRoZSBleGVjdXRpb24gY29udGV4dCB0aGVcbiAgaGlzdG9yeSBvZiBzdGFjayBiYWNrdHJhY2VzIChvYnRhaW5lZCB2aWEgW0JhY2t0cmFjZS5nZXRdKSB0aGF0IGxlZFxuICB0byB0aGUgY3VycmVudCBqb2IuICBJZiBhbiBBc3luYyBqb2IgaGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24sXG4gIHRoaXMgYmFja3RyYWNlIGhpc3Rvcnkgd2lsbCBiZSByZWNvcmRlZCBpbiB0aGUgZXhjZXB0aW9uLiAgSW5cbiAgcGFydGljdWxhciB0aGUgaGlzdG9yeSB3aWxsIGFwcGVhciBpbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIHRoYXRcbiAgcmVhY2hlcyB0aGUgbWFpbiBtb25pdG9yLiAgVGhpcyBjYW4gaGF2ZSBhIHN1YnN0YW50aWFsIHBlcmZvcm1hbmNlXG4gIGltcGFjdCwgYm90aCBpbiBydW5uaW5nIHRpbWUgYW5kIHNwYWNlIHVzYWdlLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH5yZXBvcnRfdGhyZWFkX3Bvb2xfc3R1Y2tfZm9yOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF1cbiAgICAgICAgICAgWyB7fFxuICBCeSBkZWZhdWx0LCBBc3luYyB3aWxsIHByaW50IGEgbWVzc2FnZSB0byBzdGRlcnIgZXZlcnkgc2Vjb25kIGlmXG4gIHRoZSB0aHJlYWQgcG9vbCBpcyBzdHVjayBmb3IgbG9uZ2VyIHRoYW4gdGhpcy5cbnx9XG4gICAgICAgICAgIF0pXG4gICAgICB+dGhyZWFkX3Bvb2xfY3B1X2FmZmluaXR5OlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkudF1cbiAgICAgICAgICAgWyB7fFxuICAgV2hldGhlciBhbmQgaG93IHRocmVhZHMgaW4gdGhlIHRocmVhZCBwb29sIHNob3VsZCBiZSBhZmZpbml0aXplZCB0byBDUFVzLlxufH1cbiAgICAgICAgICAgXSlcbiAgICAgIH50aW1pbmdfd2hlZWxfY29uZmlnOlxuICAgICAgICAoZmllbGRcbiAgICAgICAgICAgWyVzZXhwX29mOiBUaW1pbmdfd2hlZWwuQ29uZmlnLnRdXG4gICAgICAgICAgIFsge3xcbiAgVGhpcyBpcyB1c2VkIHRvIGFkanVzdCB0aGUgdGltZS9zcGFjZSB0cmFkZW9mZiBpbiB0aGUgdGltaW5nIHdoZWVsXG4gIHVzZWQgdG8gaW1wbGVtZW50IEFzeW5jJ3MgY2xvY2suICBUaW1lIGlzIHNwbGl0IGludG8gaW50ZXJ2YWxzIG9mXG4gIHNpemUgW2FsYXJtX3ByZWNpc2lvbl0sIGFuZCBhbGFybXMgd2l0aCB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbFxuICBmaXJlIGluIHRoZSBzYW1lIGN5Y2xlLiAgTGV2ZWwgW2ldIGluIHRoZSB0aW1pbmcgd2hlZWwgaGFzIGFuXG4gIGFycmF5IG9mIHNpemUgWzJeYl0sIHdoZXJlIFtiXSBpcyB0aGUgW2ldJ3RoIGVudHJ5IGluIFtsZXZlbF9iaXRzXS5cbnx9XG4gICAgICAgICAgIF0pXG4gIGluXG4gIGNvbmNhdFxuICAgIChMaXN0Lm1hcFxuICAgICAgIChMaXN0LnNvcnQgZmllbGRzIH5jb21wYXJlOihmdW4gKG5hbWUxLCBfLCBfKSAobmFtZTIsIF8sIF8pIC0+XG4gICAgICAgICAgU3RyaW5nLmNvbXBhcmUgbmFtZTEgbmFtZTIpKVxuICAgICAgIH5mOihmdW4gKG5hbWUsIGRlZmF1bHQsIGRlc2NyaXB0aW9uKSAtPlxuICAgICAgICAgY29uY2F0XG4gICAgICAgICAgIChcIlxcblwiIDo6IG5hbWUgOjogXCIgKGRlZmF1bHQgXCIgOjogU2V4cC50b19zdHJpbmcgZGVmYXVsdCA6OiBcIilcIiA6OiBkZXNjcmlwdGlvbikpKVxuOztcblxubGV0IGhlbHBfbWVzc2FnZSAoKSA9XG4gIGNvbmNhdFxuICAgIFsgXCJUaGUgXCJcbiAgICA7IGVudmlyb25tZW50X3ZhcmlhYmxlXG4gICAgOyB7fCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhZmZlY3RzIEFzeW5jXG5pbiB2YXJpb3VzIHdheXMuICBJdHMgdmFsdWUgc2hvdWxkIGJlIGEgc2V4cCBvZiB0aGUgZm9sbG93aW5nIGZvcm0sXG53aGVyZSBhbGwgZmllbGRzIGFyZSBvcHRpb25hbDpcblxufH1cbiAgICA7IFNleHAudG9fc3RyaW5nX2h1bSAoc2V4cF9vZl90IGV4YW1wbGUpXG4gICAgOyB7fFxuXG5IZXJlIGlzIGFuIGV4cGxhbmF0aW9uIG9mIGVhY2ggZmllbGQuXG58fVxuICAgIDsgZmllbGRfZGVzY3JpcHRpb25zICgpXG4gICAgXVxuOztcblxubGV0IHVzYWdlICgpID1cbiAgZXByaW50ZiBcIiVzJSFcIiAoaGVscF9tZXNzYWdlICgpKTtcbiAgZXhpdCAxXG47O1xuXG5sZXQgdCA9XG4gIG1hdGNoIE9wdGlvbi50cnlfd2l0aCAoZnVuICgpIC0+IElucmlhX3N5cy5nZXRlbnYgZW52aXJvbm1lbnRfdmFyaWFibGUpIHdpdGhcbiAgfCBOb25lIC0+IGVtcHR5XG4gIHwgU29tZSBcIlwiIC0+IHVzYWdlICgpXG4gIHwgU29tZSBzdHJpbmcgLT5cbiAgICAobWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gdF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBzdHJpbmcpKSB3aXRoXG4gICAgIHwgT2sgdCAtPiB0XG4gICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgZXByaW50ZlxuICAgICAgICAgXCIlc1xcblxcblwiXG4gICAgICAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgICAgICAoRXJyb3Iuc2V4cF9vZl90XG4gICAgICAgICAgICAgICAoRXJyb3IuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgXCJpbnZhbGlkIHZhbHVlIGZvciAlcyBlbnZpcm9ubWVudCB2YXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudF92YXJpYWJsZSlcbiAgICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgICAgWyVzZXhwX29mOiBleG5dKSkpO1xuICAgICAgIHVzYWdlICgpKVxuOztcblxubW9kdWxlIFByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciA9IHN0cnVjdFxuICBsZXQgcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIHRhZyA9XG4gICAgbWF0Y2ggdC5wcmludF9kZWJ1Z19tZXNzYWdlc19mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBsIC0+IExpc3QubWVtIGwgdGFnIH5lcXVhbDpEZWJ1Z190YWcuZXF1YWxcbiAgOztcblxuICBsZXQgYWxsID0gcHJpbnRfZGVidWdfbWVzc2FnZXNfZm9yIEFsbFxuICBsZXQgZGVidWcgdGFnID0gYWxsIHx8IHByaW50X2RlYnVnX21lc3NhZ2VzX2ZvciB0YWdcbiAgbGV0IGNsb2NrID0gZGVidWcgQ2xvY2tcbiAgbGV0IGZkID0gZGVidWcgRmRcbiAgbGV0IGZpbGVfZGVzY3Jfd2F0Y2hlciA9IGRlYnVnIEZpbGVfZGVzY3Jfd2F0Y2hlclxuICBsZXQgZmluYWxpemVycyA9IGRlYnVnIEZpbmFsaXplcnNcbiAgbGV0IGludGVycnVwdG9yID0gZGVidWcgSW50ZXJydXB0b3JcbiAgbGV0IG1vbml0b3IgPSBkZWJ1ZyBNb25pdG9yXG4gIGxldCBtb25pdG9yX3NlbmRfZXhuID0gZGVidWcgTW9uaXRvcl9zZW5kX2V4blxuICBsZXQgcGFyYWxsZWwgPSBkZWJ1ZyBQYXJhbGxlbFxuICBsZXQgcmVhZGVyID0gZGVidWcgUmVhZGVyXG4gIGxldCBzY2hlZHVsZXIgPSBkZWJ1ZyBTY2hlZHVsZXJcbiAgbGV0IHNodXRkb3duID0gZGVidWcgU2h1dGRvd25cbiAgbGV0IHRocmVhZF9wb29sID0gZGVidWcgVGhyZWFkX3Bvb2xcbiAgbGV0IHRocmVhZF9zYWZlID0gZGVidWcgVGhyZWFkX3NhZmVcbiAgbGV0IHdyaXRlciA9IGRlYnVnIFdyaXRlclxuZW5kXG5cbmxldCAoICEhICkgZmllbGQgPVxuICBPcHRpb24udmFsdWUgKEZpZWxkLmdldCBmaWVsZCB0KSB+ZGVmYXVsdDooT3B0aW9uLnZhbHVlX2V4biAoRmllbGQuZ2V0IGZpZWxkIGRlZmF1bHQpKVxuOztcblxubGV0IGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLmFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxubGV0IGNoZWNrX2ludmFyaWFudHMgPSAhIUZpZWxkcy5jaGVja19pbnZhcmlhbnRzXG5sZXQgZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkID0gISFGaWVsZHMuZGV0ZWN0X2ludmFsaWRfYWNjZXNzX2Zyb21fdGhyZWFkXG5sZXQgZXBvbGxfbWF4X3JlYWR5X2V2ZW50cyA9ICEhRmllbGRzLmVwb2xsX21heF9yZWFkeV9ldmVudHNcbmxldCB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSAhIUZpZWxkcy50aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHlcbmxldCBmaWxlX2Rlc2NyX3dhdGNoZXIgPSAhIUZpZWxkcy5maWxlX2Rlc2NyX3dhdGNoZXJcbmxldCBtYXhfaW50ZXJfY3ljbGVfdGltZW91dCA9ICEhRmllbGRzLm1heF9pbnRlcl9jeWNsZV90aW1lb3V0XG5sZXQgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzID0gISFGaWVsZHMubWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG5sZXQgbWF4X251bV90aHJlYWRzID0gISFGaWVsZHMubWF4X251bV90aHJlYWRzXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPSAhIUZpZWxkcy5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZVxubGV0IG1pbl9pbnRlcl9jeWNsZV90aW1lb3V0ID0gISFGaWVsZHMubWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbmxldCByZWNvcmRfYmFja3RyYWNlcyA9ICEhRmllbGRzLnJlY29yZF9iYWNrdHJhY2VzXG5sZXQgcmVwb3J0X3RocmVhZF9wb29sX3N0dWNrX2ZvciA9ICEhRmllbGRzLnJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbmxldCB0aW1pbmdfd2hlZWxfY29uZmlnID0gISFGaWVsZHMudGltaW5nX3doZWVsX2NvbmZpZ1xubGV0IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSAhIUZpZWxkcy5kdW1wX2NvcmVfb25fam9iX2RlbGF5XG5cbmxldCB0ID1cbiAgeyBhYm9ydF9hZnRlcl90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIGFib3J0X2FmdGVyX3RocmVhZF9wb29sX3N0dWNrX2ZvclxuICA7IGNoZWNrX2ludmFyaWFudHMgPSBTb21lIGNoZWNrX2ludmFyaWFudHNcbiAgOyBkZXRlY3RfaW52YWxpZF9hY2Nlc3NfZnJvbV90aHJlYWQgPSBTb21lIGRldGVjdF9pbnZhbGlkX2FjY2Vzc19mcm9tX3RocmVhZFxuICA7IGR1bXBfY29yZV9vbl9qb2JfZGVsYXkgPSBTb21lIGR1bXBfY29yZV9vbl9qb2JfZGVsYXlcbiAgOyB0aHJlYWRfcG9vbF9jcHVfYWZmaW5pdHkgPSBTb21lIHRocmVhZF9wb29sX2NwdV9hZmZpbml0eVxuICA7IGVwb2xsX21heF9yZWFkeV9ldmVudHMgPSBTb21lIGVwb2xsX21heF9yZWFkeV9ldmVudHNcbiAgOyBmaWxlX2Rlc2NyX3dhdGNoZXIgPSBTb21lIGZpbGVfZGVzY3Jfd2F0Y2hlclxuICA7IG1heF9pbnRlcl9jeWNsZV90aW1lb3V0ID0gU29tZSBtYXhfaW50ZXJfY3ljbGVfdGltZW91dFxuICA7IG1heF9udW1fb3Blbl9maWxlX2Rlc2NycyA9IFNvbWUgbWF4X251bV9vcGVuX2ZpbGVfZGVzY3JzXG4gIDsgbWF4X251bV90aHJlYWRzID0gU29tZSBtYXhfbnVtX3RocmVhZHNcbiAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9IFNvbWUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgOyBtaW5faW50ZXJfY3ljbGVfdGltZW91dCA9IFNvbWUgbWluX2ludGVyX2N5Y2xlX3RpbWVvdXRcbiAgOyBwcmludF9kZWJ1Z19tZXNzYWdlc19mb3IgPSB0LnByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuICA7IHJlY29yZF9iYWNrdHJhY2VzID0gU29tZSByZWNvcmRfYmFja3RyYWNlc1xuICA7IHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3IgPSBTb21lIHJlcG9ydF90aHJlYWRfcG9vbF9zdHVja19mb3JcbiAgOyB0aW1pbmdfd2hlZWxfY29uZmlnID0gU29tZSB0aW1pbmdfd2hlZWxfY29uZmlnXG4gIH1cbjs7XG5cbmxldCB0YXNrX2lkID0gcmVmIChmdW4gKCkgLT4gU2V4cC5BdG9tIFwiPG5vIHRhc2sgaWQ+XCIpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID0gJ2EgcmVmXG5cbigqIEJlaW5nIGEgcG9pbnRlciwgbm8gb25lIG91dHNpZGUgdGhpcyBtb2R1bGUgY2FuIGNvbnN0cnVjdCBhIHZhbHVlIHRoYXQgaXNcbiAgIFtwaHlzX3NhbWVdIGFzIHRoaXMgb25lLlxuXG4gICB0aGlzIGNvZGUgaXMgZHVwbGljYXRlZCBpbiBPcHRpb25fYXJyYXkuQ2hlYXBfb3B0aW9uLCBhbmQgaWYgd2UgZmluZCB5ZXQgYW5vdGhlclxuICAgcGxhY2Ugd2hlcmUgd2Ugd2FudCBpdCB3ZSBzaG91bGQgcmVjb25zaWRlciBtYWtpbmcgaXQgc2hhcmVkLiAqKVxubGV0IG5vbmUgPSBPYmoub2JqIChPYmoubmV3X2Jsb2NrIE9iai5hYnN0cmFjdF90YWcgMSlcbmxldCBjcmVhdGUgKCkgPSByZWYgbm9uZVxubGV0IGlzX25vbmUgeCA9IHBoeXNfZXF1YWwgIXggbm9uZVxubGV0IGlzX3NvbWUgeCA9IG5vdCAoaXNfbm9uZSB4KVxubGV0IGdldF9zb21lX2V4biB4ID0gaWYgaXNfbm9uZSB4IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb3B0aW9uLmdldF9zb21lX2V4blwiXSBlbHNlICF4XG5sZXQgZ2V0IHQgPSBpZiBpc19ub25lIHQgdGhlbiBOb25lIGVsc2UgU29tZSAhdFxubGV0IHVuc2FmZV9nZXQgdCA9ICF0XG5sZXQgc2V0X3NvbWUgdCB2ID0gdCA6PSB2XG5sZXQgc2V0X25vbmUgdCA9IHQgOj0gbm9uZVxuXG5sZXQgc2V0IHQgdiA9XG4gIG1hdGNoIHYgd2l0aFxuICB8IE5vbmUgLT4gc2V0X25vbmUgdFxuICB8IFNvbWUgdiAtPiBzZXRfc29tZSB0IHZcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSBbJXNleHAgKGdldCB0IDogYSBvcHRpb24pXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIE9wdGlvbi5pdGVyIChnZXQgdCkgfmY6aW52YXJpYW50X2EpXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX2dldFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIFBvb2wgPSBUdXBsZV9wb29sXG5tb2R1bGUgUG9pbnRlciA9IFBvb2wuUG9pbnRlclxuXG4oKiBUaGlzIHBvb2wgaG9sZHMgbm9kZXMgdGhhdCB3b3VsZCBiZSByZXByZXNlbnRlZCBtb3JlIHRyYWRpdGlvbmFsbHkgYXM6XG5cbiAgIHtbXG4gICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgfCBFbXB0eVxuICAgICAgIHwgSGVhcCBvZiAnYSAqICdhIHQgbGlzdCBdfVxuXG4gICBXZSB3aWxsIHJlcHJlc2VudCB0aGVtIGFzIGEgbGVmdC1jaGlsZCwgcmlnaHQtc2libGluZyB0cmVlIGluIGEgdHJpcGxldFxuICAgKHZhbHVlICogbGVmdF9jaGlsZCAqIHJpZ2h0X3NpYmxpbmcpLiAgVGhlIGxlZnQgY2hpbGQgYW5kIGFsbCByaWdodCBzaWJsaW5nc1xuICAgb2YgdGhlIGxlZnQgY2hpbGQgZm9ybSBhIGxpbmtlZCBsaXN0IHJlcHJlc2VudGluZyB0aGUgc3ViaGVhcHMgb2YgYSBnaXZlbiBoZWFwOlxuXG4gICB7dlxuICAgICAgICAgQVxuICAgICAgICAvXG4gICAgICAgQiAtPiBDIC0+IEQgLT4gRSAtPiBGXG4gICAgICAvICAgICAgICAgLyAgICAgICAgIC9cbiAgICAgRyAgICAgICAgIEgtPkktPkogICBLLT5MXG4gICB2fSAqKVxuXG5tb2R1bGUgTm9kZSA6IHNpZ1xuICAoKiBFeHBvc2luZyBbcHJpdmF0ZSBpbnRdIGlzIGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGJlY2F1c2UgaXQgYWxsb3dzXG4gICAgIHRoZSBjb21waWxlciB0byBza2lwIHRoZSB3cml0ZSBiYXJyaWVyLiAqKVxuXG4gIHR5cGUgJ2EgdCA9IHByaXZhdGUgaW50XG5cbiAgbW9kdWxlIElkIDogc2lnXG4gICAgdHlwZSB0XG5cbiAgICB2YWwgb2ZfaW50IDogaW50IC0+IHRcbiAgICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICBlbmRcblxuICBtb2R1bGUgUG9vbCA6IHNpZ1xuICAgIHR5cGUgJ2Egbm9kZSA9ICdhIHRcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBjcmVhdGUgOiBtaW5fc2l6ZTppbnQgLT4gJ2EgdFxuICAgIHZhbCBpc19mdWxsIDogJ2EgdCAtPiBib29sXG4gICAgdmFsIGxlbmd0aCA6ICdhIHQgLT4gaW50XG4gICAgdmFsIGdyb3cgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgY29weSA6ICdhIHQgLT4gJ2Egbm9kZSAtPiAnYSBub2RlICogJ2EgdFxuICBlbmRcblxuICAoKiogW2FsbG9jYXRlIHYgfnBvb2xdIGFsbG9jYXRlcyBhIG5ldyBub2RlIGZyb20gdGhlIHBvb2wgd2l0aCBubyBjaGlsZCBvciBzaWJsaW5nICopXG4gIHZhbCBhbGxvY2F0ZSA6ICdhIC0+IHBvb2w6J2EgUG9vbC50IC0+IGlkOklkLnQgLT4gJ2EgdFxuXG4gICgqKiBbZnJlZSB0IH5wb29sXSBmcmVlcyBbdF0gZm9yIHJldXNlLiAgSXQgaXMgYW4gZXJyb3IgdG8gYWNjZXNzIFt0XSBhZnRlciB0aGlzLiAqKVxuICB2YWwgZnJlZSA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBhIHNwZWNpYWwgW3RdIHRoYXQgcmVwcmVzZW50cyB0aGUgZW1wdHkgbm9kZSAqKVxuICB2YWwgZW1wdHkgOiB1bml0IC0+ICdhIHRcblxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIGVxdWFsIDogJ2EgdCAtPiAnYSB0IC0+IGJvb2xcblxuICAoKiogW3ZhbHVlX2V4biB0IH5wb29sXSByZXR1cm4gdGhlIHZhbHVlIG9mIFt0XSwgcmFpc2UgaWYgW2lzX2VtcHR5IHRdICopXG4gIHZhbCB2YWx1ZV9leG4gOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhXG5cbiAgdmFsIGlkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiBJZC50XG4gIHZhbCBjaGlsZCA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuICB2YWwgc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBbcHJldiB0XSBpcyBlaXRoZXIgdGhlIHBhcmVudCBvZiBbdF0gb3IgdGhlIHNpYmxpbmcgaW1tZWRpYXRlbHkgbGVmdCBvZiBbdF0gKilcbiAgdmFsIHByZXYgOiAnYSB0IC0+IHBvb2w6J2EgUG9vbC50IC0+ICdhIHRcblxuICAoKiogW2FkZF9jaGlsZCB0IH5jaGlsZCB+cG9vbF0gQWRkIGEgY2hpbGQgdG8gW3RdLCBwcmVzZXJ2aW5nIGV4aXN0aW5nIGNoaWxkcmVuIGFzXG4gICAgICBzaWJsaW5ncyBvZiBbY2hpbGRdLiBbdF0gYW5kIFtjaGlsZF0gc2hvdWxkIG5vdCBiZSBlbXB0eSBhbmQgW2NoaWxkXSBzaG91bGQgaGF2ZSBub1xuICAgICAgc2libGluZyBhbmQgaGF2ZSBubyBwcmV2IG5vZGUuICopXG4gIHZhbCBhZGRfY2hpbGQgOiAnYSB0IC0+IGNoaWxkOidhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gdW5pdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIHNpYmxpbmcgKilcbiAgdmFsIGRpc2Nvbm5lY3Rfc2libGluZyA6ICdhIHQgLT4gcG9vbDonYSBQb29sLnQgLT4gJ2EgdFxuXG4gICgqKiBkaXNjb25uZWN0IGFuZCByZXR1cm4gdGhlIGNoaWxkICopXG4gIHZhbCBkaXNjb25uZWN0X2NoaWxkIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiAnYSB0XG5cbiAgKCoqIFtkZXRhY2ggdCB+cG9vbF0gcmVtb3ZlcyBbdF0gZnJvbSB0aGUgdHJlZSwgYWRqdXN0aW5nIHBvaW50ZXJzIGFyb3VuZCBpdC4gQWZ0ZXJcbiAgICAgIFtkZXRhY2hdLCBbdF0gaXMgdGhlIHJvb3Qgb2YgYSBzdGFuZGFsb25lIGhlYXAsIHdoaWNoIGlzIGRldGFjaGVkIGZyb20gdGhlIG9yaWdpbmFsXG4gICAgICBoZWFwLiAqKVxuICB2YWwgZGV0YWNoIDogJ2EgdCAtPiBwb29sOidhIFBvb2wudCAtPiB1bml0XG5lbmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIElkID0gSW50XG5cbiAgbGV0IGR1bW15X2lkIDogSWQudCA9IC0xXG5cbiAgdHlwZSAnYSBub2RlID1cbiAgICAoJ2EsICdhIG5vZGUgUG9pbnRlci50LCAnYSBub2RlIFBvaW50ZXIudCwgJ2Egbm9kZSBQb2ludGVyLnQsIElkLnQpIFBvb2wuU2xvdHMudDVcblxuICB0eXBlICdhIHQgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gIGxldCBlbXB0eSA9IFBvaW50ZXIubnVsbFxuICBsZXQgaXNfZW1wdHkgPSBQb2ludGVyLmlzX251bGxcbiAgbGV0IGVxdWFsID0gUG9pbnRlci5waHlzX2VxdWFsXG4gIGxldCB2YWx1ZSB0IH5wb29sID0gUG9vbC5nZXQgcG9vbCB0IFBvb2wuU2xvdC50MFxuICBsZXQgY2hpbGQgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDFcbiAgbGV0IHNpYmxpbmcgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDJcbiAgbGV0IHByZXYgdCB+cG9vbCA9IFBvb2wuZ2V0IHBvb2wgdCBQb29sLlNsb3QudDNcbiAgbGV0IGlkIHQgfnBvb2wgPSBQb29sLmdldCBwb29sIHQgUG9vbC5TbG90LnQ0XG5cbiAgKCogbGV0IHNldF92YWx1ZSAgIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDAgdiAqKVxuICBsZXQgc2V0X2NoaWxkIHQgdiB+cG9vbCA9IFBvb2wuc2V0IHBvb2wgdCBQb29sLlNsb3QudDEgdlxuICBsZXQgc2V0X3NpYmxpbmcgdCB2IH5wb29sID0gUG9vbC5zZXQgcG9vbCB0IFBvb2wuU2xvdC50MiB2XG4gIGxldCBzZXRfcHJldiB0IHYgfnBvb2wgPSBQb29sLnNldCBwb29sIHQgUG9vbC5TbG90LnQzIHZcblxuICBsZXQgdmFsdWVfZXhuIHQgfnBvb2wgPVxuICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgdmFsdWUgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBhbGxvY2F0ZSB2YWx1ZSB+cG9vbCB+aWQgPSBQb29sLm5ldzUgcG9vbCB2YWx1ZSAoZW1wdHkgKCkpIChlbXB0eSAoKSkgKGVtcHR5ICgpKSBpZFxuICBsZXQgZnJlZSB0IH5wb29sID0gUG9vbC51bnNhZmVfZnJlZSBwb29sIHRcblxuICBsZXQgZGlzY29ubmVjdF9zaWJsaW5nIHQgfnBvb2wgPVxuICAgIGxldCBzaWJsaW5nID0gc2libGluZyB0IH5wb29sIGluXG4gICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKVxuICAgIHRoZW4gKFxuICAgICAgc2V0X3NpYmxpbmcgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgc2libGluZyAoZW1wdHkgKCkpIH5wb29sKTtcbiAgICBzaWJsaW5nXG4gIDs7XG5cbiAgbGV0IGRpc2Nvbm5lY3RfY2hpbGQgdCB+cG9vbCA9XG4gICAgbGV0IGNoaWxkID0gY2hpbGQgdCB+cG9vbCBpblxuICAgIGlmIG5vdCAoaXNfZW1wdHkgY2hpbGQpXG4gICAgdGhlbiAoXG4gICAgICBzZXRfY2hpbGQgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgc2V0X3ByZXYgY2hpbGQgKGVtcHR5ICgpKSB+cG9vbCk7XG4gICAgY2hpbGRcbiAgOztcblxuICBsZXQgYWRkX2NoaWxkIHQgfmNoaWxkOm5ld19jaGlsZCB+cG9vbCA9XG4gICAgKCogYXNzZXJ0aW9ucyB3ZSB3b3VsZCBtYWtlLCBidXQgZm9yIHNwZWVkOlxuICAgICAgIGFzc2VydCAobm90IChpc19lbXB0eSB0KSk7XG4gICAgICAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IG5ld19jaGlsZCkpO1xuICAgICAgIGFzc2VydCAoaXNfZW1wdHkgKHNpYmxpbmcgbmV3X2NoaWxkIH5wb29sKSk7XG4gICAgICAgYXNzZXJ0IChpc19lbXB0eSAocHJldiBuZXdfY2hpbGQgfnBvb2wpKTtcbiAgICAqKVxuICAgIGxldCBjdXJyZW50X2NoaWxkID0gZGlzY29ubmVjdF9jaGlsZCB0IH5wb29sIGluXG4gICAgKCogYWRkIFtuZXdfY2hpbGRdIHRvIHRoZSBsaXN0IG9mIFt0XSdzIGNoaWxkcmVuICh3aGljaCBtYXkgYmUgZW1wdHkpICopXG4gICAgc2V0X3NpYmxpbmcgbmV3X2NoaWxkIGN1cnJlbnRfY2hpbGQgfnBvb2w7XG4gICAgaWYgbm90IChpc19lbXB0eSBjdXJyZW50X2NoaWxkKSB0aGVuIHNldF9wcmV2IGN1cnJlbnRfY2hpbGQgbmV3X2NoaWxkIH5wb29sO1xuICAgIHNldF9jaGlsZCB0IG5ld19jaGlsZCB+cG9vbDtcbiAgICBzZXRfcHJldiBuZXdfY2hpbGQgdCB+cG9vbFxuICA7O1xuXG4gIGxldCBkZXRhY2ggdCB+cG9vbCA9XG4gICAgaWYgbm90IChpc19lbXB0eSB0KVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHByZXYgPSBwcmV2IHQgfnBvb2wgaW5cbiAgICAgIGlmIG5vdCAoaXNfZW1wdHkgcHJldilcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgcmVsYXRpb25fdG9fcHJldiA9IGlmIGVxdWFsIHQgKGNoaWxkIHByZXYgfnBvb2wpIHRoZW4gYGNoaWxkIGVsc2UgYHNpYmxpbmcgaW5cbiAgICAgICAgc2V0X3ByZXYgdCAoZW1wdHkgKCkpIH5wb29sO1xuICAgICAgICBsZXQgc2libGluZyA9IGRpc2Nvbm5lY3Rfc2libGluZyB0IH5wb29sIGluXG4gICAgICAgIChtYXRjaCByZWxhdGlvbl90b19wcmV2IHdpdGhcbiAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBwcmV2IHNpYmxpbmcgfnBvb2xcbiAgICAgICAgIHwgYHNpYmxpbmcgLT4gc2V0X3NpYmxpbmcgcHJldiBzaWJsaW5nIH5wb29sKTtcbiAgICAgICAgaWYgbm90IChpc19lbXB0eSBzaWJsaW5nKSB0aGVuIHNldF9wcmV2IHNpYmxpbmcgcHJldiB+cG9vbCkpXG4gIDs7XG5cbiAgbW9kdWxlIFBvb2wgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBub2RlIFBvb2wudFxuICAgIHR5cGUgbm9ucmVjICdhIG5vZGUgPSAnYSBub2RlIFBvaW50ZXIudFxuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+bWluX3NpemU6Y2FwYWNpdHkgOiBhIHQgPVxuICAgICAgUG9vbC5jcmVhdGVcbiAgICAgICAgUG9vbC5TbG90cy50NVxuICAgICAgICB+Y2FwYWNpdHlcbiAgICAgICAgfmR1bW15OlxuICAgICAgICAgICggKE9iai5tYWdpYyBOb25lIDogYSlcbiAgICAgICAgICAsIFBvaW50ZXIubnVsbCAoKVxuICAgICAgICAgICwgUG9pbnRlci5udWxsICgpXG4gICAgICAgICAgLCBQb2ludGVyLm51bGwgKClcbiAgICAgICAgICAsIGR1bW15X2lkIClcbiAgICA7O1xuXG4gICAgbGV0IGlzX2Z1bGwgdCA9IFBvb2wuaXNfZnVsbCB0XG4gICAgbGV0IGxlbmd0aCB0ID0gUG9vbC5sZW5ndGggdFxuICAgIGxldCBncm93IHQgPSBQb29sLmdyb3cgdFxuXG4gICAgbGV0IGNvcHkgdCBzdGFydCA9XG4gICAgICBsZXQgdCcgPSBjcmVhdGUgfm1pbl9zaXplOihQb29sLmNhcGFjaXR5IHQpIGluXG4gICAgICBsZXQgY29weV9ub2RlIG5vZGUgdG9fdmlzaXQgPVxuICAgICAgICBpZiBpc19lbXB0eSBub2RlXG4gICAgICAgIHRoZW4gZW1wdHkgKCksIHRvX3Zpc2l0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgICgqIHdlIHVzZSB0aGUgc2FtZSBpZCwgYnV0IHRoYXQncyBvayBzaW5jZSBpZHMgc2hvdWxkIGJlIHVuaXF1ZSBwZXIgaGVhcCAqKVxuICAgICAgICAgIGxldCBuZXdfbm9kZSA9XG4gICAgICAgICAgICBhbGxvY2F0ZSAodmFsdWVfZXhuIG5vZGUgfnBvb2w6dCkgfnBvb2w6dCcgfmlkOihpZCBub2RlIH5wb29sOnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgdG9fdmlzaXQgPVxuICAgICAgICAgICAgKG5ld19ub2RlLCBgY2hpbGQsIGNoaWxkIG5vZGUgfnBvb2w6dClcbiAgICAgICAgICAgIDo6IChuZXdfbm9kZSwgYHNpYmxpbmcsIHNpYmxpbmcgbm9kZSB+cG9vbDp0KVxuICAgICAgICAgICAgOjogdG9fdmlzaXRcbiAgICAgICAgICBpblxuICAgICAgICAgIG5ld19ub2RlLCB0b192aXNpdClcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGxvb3AgdG9fdmlzaXQgPVxuICAgICAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgICAgIHwgW10gLT4gKClcbiAgICAgICAgfCAobm9kZV90b191cGRhdGUsIHNsb3QsIG5vZGVfdG9fY29weSkgOjogcmVzdCAtPlxuICAgICAgICAgIGxldCBuZXdfbm9kZSwgdG9fdmlzaXQgPSBjb3B5X25vZGUgbm9kZV90b19jb3B5IHJlc3QgaW5cbiAgICAgICAgICAobWF0Y2ggc2xvdCB3aXRoXG4gICAgICAgICAgIHwgYGNoaWxkIC0+IHNldF9jaGlsZCBub2RlX3RvX3VwZGF0ZSBuZXdfbm9kZSB+cG9vbDp0J1xuICAgICAgICAgICB8IGBzaWJsaW5nIC0+IHNldF9zaWJsaW5nIG5vZGVfdG9fdXBkYXRlIG5ld19ub2RlIH5wb29sOnQnKTtcbiAgICAgICAgICBpZiBub3QgKGlzX2VtcHR5IG5ld19ub2RlKSB0aGVuIHNldF9wcmV2IG5ld19ub2RlIG5vZGVfdG9fdXBkYXRlIH5wb29sOnQnO1xuICAgICAgICAgIGxvb3AgdG9fdmlzaXRcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3N0YXJ0LCB0b192aXNpdCA9IGNvcHlfbm9kZSBzdGFydCBbXSBpblxuICAgICAgbG9vcCB0b192aXNpdDtcbiAgICAgIG5ld19zdGFydCwgdCdcbiAgICA7O1xuICBlbmRcbmVuZFxuXG50eXBlICdhIHQgPVxuICB7ICgqIGNtcCBpcyBwbGFjZWQgZmlyc3QgdG8gc2hvcnQtY2lyY3VpdCBwb2x5bW9ycGhpYyBjb21wYXJlICopXG4gICAgY21wIDogJ2EgLT4gJ2EgLT4gaW50XG4gIDsgbXV0YWJsZSBwb29sIDogJ2EgTm9kZS5Qb29sLnRcbiAgOyAoKiBpbnZhcmlhbnQ6ICBbcm9vdF0gbmV2ZXIgaGFzIGEgc2libGluZyAqKVxuICAgIG11dGFibGUgcm9vdCA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyA6IGludFxuICB9XG5cbmxldCBpbnZhcmlhbnQgXyB0ID1cbiAgbGV0IHJlYyBsb29wIHRvX3Zpc2l0ID1cbiAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgKG5vZGUsIGV4cGVjdGVkX3ByZXYsIG1heWJlX3BhcmVudF92YWx1ZSkgOjogcmVzdCAtPlxuICAgICAgaWYgbm90IChOb2RlLmlzX2VtcHR5IG5vZGUpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHRoaXNfdmFsdWUgPSBOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbCBpblxuICAgICAgICBhc3NlcnQgKE5vZGUuZXF1YWwgKE5vZGUucHJldiBub2RlIH5wb29sOnQucG9vbCkgZXhwZWN0ZWRfcHJldik7XG4gICAgICAgIE9wdGlvbi5pdGVyIG1heWJlX3BhcmVudF92YWx1ZSB+ZjooZnVuIHBhcmVudF92YWx1ZSAtPlxuICAgICAgICAgIGFzc2VydCAodC5jbXAgcGFyZW50X3ZhbHVlIHRoaXNfdmFsdWUgPD0gMCkpO1xuICAgICAgICBsb29wXG4gICAgICAgICAgKChOb2RlLmNoaWxkIG5vZGUgfnBvb2w6dC5wb29sLCBub2RlLCBTb21lIHRoaXNfdmFsdWUpXG4gICAgICAgICAgIDo6IChOb2RlLnNpYmxpbmcgbm9kZSB+cG9vbDp0LnBvb2wsIG5vZGUsIG1heWJlX3BhcmVudF92YWx1ZSlcbiAgICAgICAgICAgOjogcmVzdCkpXG4gICAgICBlbHNlIGxvb3AgcmVzdFxuICBpblxuICBhc3NlcnQgKE5vZGUuaXNfZW1wdHkgdC5yb290IHx8IE5vZGUuaXNfZW1wdHkgKE5vZGUuc2libGluZyB0LnJvb3QgfnBvb2w6dC5wb29sKSk7XG4gIGxvb3AgWyB0LnJvb3QsIE5vZGUuZW1wdHkgKCksIE5vbmUgXVxuOztcblxubGV0IGNyZWF0ZSA/KG1pbl9zaXplID0gMSkgfmNtcCAoKSA9XG4gIHsgY21wXG4gIDsgcG9vbCA9IE5vZGUuUG9vbC5jcmVhdGUgfm1pbl9zaXplXG4gIDsgcm9vdCA9IE5vZGUuZW1wdHkgKClcbiAgOyBudW1fb2ZfYWxsb2NhdGVkX25vZGVzID0gMFxuICB9XG47O1xuXG5sZXQgY29weSB7IGNtcDsgcG9vbDsgcm9vdDsgbnVtX29mX2FsbG9jYXRlZF9ub2RlcyB9ID1cbiAgbGV0IHJvb3QsIHBvb2wgPSBOb2RlLlBvb2wuY29weSBwb29sIHJvb3QgaW5cbiAgeyBjbXA7IHBvb2w7IHJvb3Q7IG51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgfVxuOztcblxubGV0IGFsbG9jYXRlIHQgdiA9XG4gIGlmIE5vZGUuUG9vbC5pc19mdWxsIHQucG9vbCB0aGVuIHQucG9vbCA8LSBOb2RlLlBvb2wuZ3JvdyB0LnBvb2w7XG4gIHQubnVtX29mX2FsbG9jYXRlZF9ub2RlcyA8LSB0Lm51bV9vZl9hbGxvY2F0ZWRfbm9kZXMgKyAxO1xuICBOb2RlLmFsbG9jYXRlIHYgfnBvb2w6dC5wb29sIH5pZDooTm9kZS5JZC5vZl9pbnQgdC5udW1fb2ZfYWxsb2NhdGVkX25vZGVzKVxuOztcblxuKCogdHJhbnNsYXRpb246XG4gICB7W1xuICAgICBtYXRjaCByb290MSwgcm9vdDIgd2l0aFxuICAgICB8IE5vbmUsIGggfCBoLCBOb25lIC0+IGhcbiAgICAgfCBTb21lIChOb2RlICh2MSwgY2hpbGRyZW4xKSksIFNvbWUgKE5vZGUgKHYyLCBjaGlsZHJlbjIpKSAtPlxuICAgICAgIGlmIHYxIDwgdjJcbiAgICAgICB0aGVuIFNvbWUgKE5vZGUgKHYxLCByb290MiA6OiBjaGlsZHJlbjEpKVxuICAgICAgIGVsc2UgU29tZSAoTm9kZSAodjIsIHJvb3QxIDo6IGNoaWxkcmVuMikpXG4gICBdfVxuXG4gICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgbmVpdGhlciByb290IGhhcyBhIHByZXYgbm9kZSAodXN1YWxseSBiZWNhdXNlIHRoZSBpbnB1dHMgY29tZVxuICAgZnJvbSBbZGlzY29ubmVjdF8qXSBvciBhcmUgdGhlIHRvcCBvZiB0aGUgaGVhcCBvciBhcmUgdGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uKS4gKilcbmxldCBtZXJnZSB0IHJvb3QxIHJvb3QyID1cbiAgaWYgTm9kZS5pc19lbXB0eSByb290MVxuICB0aGVuIHJvb3QyXG4gIGVsc2UgaWYgTm9kZS5pc19lbXB0eSByb290MlxuICB0aGVuIHJvb3QxXG4gIGVsc2UgKFxuICAgIGxldCBhZGRfY2hpbGQgdCBub2RlIH5jaGlsZCA9XG4gICAgICBOb2RlLmFkZF9jaGlsZCBub2RlIH5wb29sOnQucG9vbCB+Y2hpbGQ7XG4gICAgICBub2RlXG4gICAgaW5cbiAgICBsZXQgdjEgPSBOb2RlLnZhbHVlX2V4biByb290MSB+cG9vbDp0LnBvb2wgaW5cbiAgICBsZXQgdjIgPSBOb2RlLnZhbHVlX2V4biByb290MiB+cG9vbDp0LnBvb2wgaW5cbiAgICBpZiB0LmNtcCB2MSB2MiA8IDBcbiAgICB0aGVuIGFkZF9jaGlsZCB0IHJvb3QxIH5jaGlsZDpyb290MlxuICAgIGVsc2UgYWRkX2NoaWxkIHQgcm9vdDIgfmNoaWxkOnJvb3QxKVxuOztcblxubGV0IHRvcF9leG4gdCA9XG4gIGlmIE5vZGUuaXNfZW1wdHkgdC5yb290XG4gIHRoZW4gZmFpbHdpdGggXCJIZWFwLnRvcF9leG4gY2FsbGVkIG9uIGFuIGVtcHR5IGhlYXBcIlxuICBlbHNlIE5vZGUudmFsdWVfZXhuIHQucm9vdCB+cG9vbDp0LnBvb2xcbjs7XG5cbmxldCB0b3AgdCA9IGlmIE5vZGUuaXNfZW1wdHkgdC5yb290IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHRvcF9leG4gdClcblxubGV0IGFkZF9ub2RlIHQgdiA9XG4gIGxldCBub2RlID0gYWxsb2NhdGUgdCB2IGluXG4gIHQucm9vdCA8LSBtZXJnZSB0IHQucm9vdCBub2RlO1xuICBub2RlXG47O1xuXG5sZXQgYWRkIHQgdiA9IGlnbm9yZSAoYWRkX25vZGUgdCB2IDogXyBOb2RlLnQpXG5cbigqIFttZXJnZV9wYWlyc10gdGFrZXMgYSBsaXN0IG9mIGhlYXAgcm9vdHMgYW5kIG1lcmdlcyBjb25zZWN1dGl2ZSBwYWlycywgcmVkdWNpbmcgdGhlXG4gICBsaXN0IG9mIGxlbmd0aCBuIHRvIG4vMi4gIFRoZW4gaXQgbWVyZ2VzIHRoZSBtZXJnZWQgcGFpcnMgaW50byBhIHNpbmdsZSBoZWFwLiAgT25lXG4gICBpbnR1aXRpb24gaXMgdGhhdCB0aGlzIGlzIHNvbWV3aGF0IGxpa2UgYnVpbGRpbmcgYSBzaW5nbGUgbGV2ZWwgb2YgYSBiaW5hcnkgdHJlZS5cblxuICAgVGhlIG91dHB1dCBoZWFwIGRvZXMgbm90IGNvbnRhaW4gdGhlIHZhbHVlIHRoYXQgd2FzIGF0IHRoZSByb290IG9mIHRoZSBpbnB1dCBoZWFwLlxuXG4gICBXZSBicmVhayB0aGUgZnVuY3Rpb24gaW50byB0d28gcGFydHMuICBBIGZpcnN0IHN0YWdlIHRoYXQgaXMgd2lsbGluZyB0byB1c2UgbGltaXRlZFxuICAgc3RhY2sgaW5zdGVhZCBvZiBoZWFwIGFsbG9jYXRpb24gZm9yIGJvb2trZWVwaW5nLCBhbmQgYSBzZWNvbmQgc3RhZ2UgdGhhdCBzaGlmdHMgdG9cbiAgIHVzaW5nIGEgbGlzdCBhcyBhbiBhY2N1bXVsYXRvciBpZiB3ZSBnbyB0b28gZGVlcC5cblxuICAgVGhpcyBjYW4gYmUgbWFkZSB0YWlsIHJlY3Vyc2l2ZSBhbmQgbm9uLWFsbG9jYXRpbmcgYnkgc3RhcnRpbmcgd2l0aCBhbiBlbXB0eSBoZWFwIGFuZFxuICAgbWVyZ2luZyBtZXJnZWQgcGFpcnMgaW50byBpdC4gVW5mb3J0dW5hdGVseSB0aGlzIFwibGVmdCBmb2xkXCIgdmVyc2lvbiBpcyBub3Qgd2hhdCBpc1xuICAgZGVzY3JpYmVkIGluIHRoZSBvcmlnaW5hbCBwYXBlciBieSBGcmVkbWFuIGV0IGFsLjsgdGhleSBzcGVjaWZpY2FsbHkgc2F5IHRoYXRcbiAgIGNoaWxkcmVuIHNob3VsZCBiZSBtZXJnZWQgdG9nZXRoZXIgZnJvbSB0aGUgZW5kIG9mIHRoZSBsaXN0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICBsaXN0LiAoW21lcmdlXSBpcyBub3QgYXNzb2NpYXRpdmUsIHNvIG9yZGVyIG1hdHRlcnMuKVxuKilcbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICAgfCBbXSAtPiBhY2NcbiAgICAgICB8IFtoZWFkXSAtPiBoZWFkIDo6IGFjY1xuICAgICAgIHwgaGVhZCA6OiBuZXh0MSA6OiBuZXh0MiAtPiBsb29wIChtZXJnZSBoZWFkIG5leHQxIDo6IGFjYykgbmV4dDJcbiAgICAgaW5cbiAgICAgbWF0Y2ggbG9vcCBbXSBjaGlsZHJlbiB3aXRoXG4gICAgIHwgW10gLT4gTm9uZVxuICAgICB8IFtoXSAtPiBTb21lIGhcbiAgICAgfCB4IDo6IHhzIC0+IFNvbWUgKExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOm1lcmdlKVxuICAgXX1cbiopXG5sZXQgYWxsb2NhdGluZ19tZXJnZV9wYWlycyB0IGhlYWQgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGhlYWQgPVxuICAgIGlmIE5vZGUuaXNfZW1wdHkgaGVhZFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkIDo6IGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXh0MiA9IE5vZGUuZGlzY29ubmVjdF9zaWJsaW5nIG5leHQxIH5wb29sOnQucG9vbCBpblxuICAgICAgICBsb29wIChtZXJnZSB0IGhlYWQgbmV4dDEgOjogYWNjKSBuZXh0MikpXG4gIGluXG4gIG1hdGNoIGxvb3AgW10gaGVhZCB3aXRoXG4gIHwgW10gLT4gTm9kZS5lbXB0eSAoKVxuICB8IFsgaCBdIC0+IGhcbiAgfCB4IDo6IHhzIC0+IExpc3QuZm9sZCB4cyB+aW5pdDp4IH5mOihmdW4gYWNjIGhlYXAgLT4gbWVyZ2UgdCBhY2MgaGVhcClcbjs7XG5cbigqIHRyYW5zbGF0aW9uOlxuICAge1tcbiAgICAgbWF0Y2ggdC5yb290IHdpdGhcbiAgICAgfCBOb2RlIChfLCBjaGlsZHJlbikgLT5cbiAgICAgICBsZXQgcmVjIGxvb3AgZGVwdGggY2hpbGRyZW4gPVxuICAgICAgICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgICAgICB0aGVuIGFsbG9jYXRpbmdfbWVyZ2VfcGFpcnMgdCBjaGlsZGVuXG4gICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgIG1hdGNoIGNoaWxkcmVuIHdpdGhcbiAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgIHwgW2hlYWRdIC0+IFNvbWUgaGVhZFxuICAgICAgICAgICB8IGhlYWQgOjogbmV4dDEgOjogbmV4dDIgLT5cbiAgICAgICAgICAgICBtZXJnZSAobWVyZ2UgaGVhZCBuZXh0MSkgKGxvb3AgKGRlcHRoICsgMSkgbmV4dDIpXG4gICAgICAgICBlbmRcbiAgICAgICBpblxuICAgICAgIGxvb3AgMCBjaGlsZHJlblxuICAgXX1cbiopXG5sZXQgbWVyZ2VfcGFpcnMgPVxuICBsZXQgbWF4X3N0YWNrX2RlcHRoID0gMV8wMDAgaW5cbiAgbGV0IHJlYyBsb29wIHQgZGVwdGggaGVhZCA9XG4gICAgaWYgZGVwdGggPj0gbWF4X3N0YWNrX2RlcHRoXG4gICAgdGhlbiBhbGxvY2F0aW5nX21lcmdlX3BhaXJzIHQgaGVhZFxuICAgIGVsc2UgaWYgTm9kZS5pc19lbXB0eSBoZWFkXG4gICAgdGhlbiBoZWFkXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbmV4dDEgPSBOb2RlLmRpc2Nvbm5lY3Rfc2libGluZyBoZWFkIH5wb29sOnQucG9vbCBpblxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBuZXh0MVxuICAgICAgdGhlbiBoZWFkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG5leHQyID0gTm9kZS5kaXNjb25uZWN0X3NpYmxpbmcgbmV4dDEgfnBvb2w6dC5wb29sIGluXG4gICAgICAgICgqIG1lcmdlIHRoZSBmaXJzdCB0d28gbm9kZXMgaW4gb3VyIGxpc3QsIGFuZCB0aGVuIG1lcmdlIHRoZSByZXN1bHQgd2l0aCB0aGVcbiAgICAgICAgICAgcmVzdWx0IG9mIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgbWVyZ2VfcGFpcnMgb24gdGhlIHRhaWwgKilcbiAgICAgICAgbWVyZ2UgdCAobWVyZ2UgdCBoZWFkIG5leHQxKSAobG9vcCB0IChkZXB0aCArIDEpIG5leHQyKSkpXG4gIGluXG4gIGZ1biB0IGhlYWQgLT4gbG9vcCB0IDAgaGVhZFxuOztcblxubGV0IHJlbW92ZV9ub25fZW1wdHkgdCBub2RlID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgbGV0IG1lcmdlZF9jaGlsZHJlbiA9IG1lcmdlX3BhaXJzIHQgKE5vZGUuZGlzY29ubmVjdF9jaGlsZCBub2RlIH5wb29sKSBpblxuICBsZXQgbmV3X3Jvb3QgPVxuICAgIGlmIE5vZGUuZXF1YWwgdC5yb290IG5vZGUgdGhlbiBtZXJnZWRfY2hpbGRyZW4gZWxzZSBtZXJnZSB0IHQucm9vdCBtZXJnZWRfY2hpbGRyZW5cbiAgaW5cbiAgTm9kZS5mcmVlIG5vZGUgfnBvb2w7XG4gIHQucm9vdCA8LSBuZXdfcm9vdFxuOztcblxubGV0IHJlbW92ZV90b3AgdCA9IGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0LnJvb3QpIHRoZW4gcmVtb3ZlX25vbl9lbXB0eSB0IHQucm9vdFxuXG4oKiBOb3RlIHRoYXQgdGhpcyBpcyB0YWlsLXJlY3Vyc2l2ZSBhbmQgdGhhdCBlYWNoIG5vZGUgaXMgdmlzaXRlZCBhdCBtb3N0IDMgdGltZXMgKG9uY2VcbiAgIGZvciBlYWNoIGJyYW5jaCBvZiB0aGUgXCJpZlwiKSwgc28gaXQgdGFrZXMgbGluZWFyIHRpbWUgYW5kIGNvbnN0YW50IHNwYWNlLiAqKVxubGV0IHJlYyByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBub2RlIH5wb29sID1cbiAgbGV0IGNoaWxkID0gTm9kZS5jaGlsZCBub2RlIH5wb29sIGluXG4gIGxldCBzaWJsaW5nID0gTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2wgaW5cbiAgaWYgbm90IChOb2RlLmlzX2VtcHR5IGNoaWxkKVxuICB0aGVuIHJlbW92ZV9hbGxfbm9kZXNfbm9uX2VtcHR5IGNoaWxkIH5wb29sXG4gIGVsc2UgaWYgbm90IChOb2RlLmlzX2VtcHR5IHNpYmxpbmcpXG4gIHRoZW4gcmVtb3ZlX2FsbF9ub2Rlc19ub25fZW1wdHkgc2libGluZyB+cG9vbFxuICBlbHNlIChcbiAgICBsZXQgcHJldiA9IE5vZGUucHJldiBub2RlIH5wb29sIGluXG4gICAgTm9kZS5kZXRhY2ggbm9kZSB+cG9vbDtcbiAgICBOb2RlLmZyZWUgbm9kZSB+cG9vbDtcbiAgICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgcHJldikgdGhlbiByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSBwcmV2IH5wb29sKVxuOztcblxubGV0IGNsZWFyIHQgPVxuICBpZiBub3QgKE5vZGUuaXNfZW1wdHkgdC5yb290KVxuICB0aGVuIChcbiAgICByZW1vdmVfYWxsX25vZGVzX25vbl9lbXB0eSB0LnJvb3QgfnBvb2w6dC5wb29sO1xuICAgIHQucm9vdCA8LSBOb2RlLmVtcHR5ICgpKVxuOztcblxubGV0IHBvcF9leG4gdCA9XG4gIGxldCByID0gdG9wX2V4biB0IGluXG4gIHJlbW92ZV90b3AgdDtcbiAgclxuOztcblxubGV0IHBvcCB0ID0gaWYgTm9kZS5pc19lbXB0eSB0LnJvb3QgdGhlbiBOb25lIGVsc2UgU29tZSAocG9wX2V4biB0KVxuXG5sZXQgcG9wX2lmIHQgZiA9XG4gIG1hdGNoIHRvcCB0IHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHYgLT5cbiAgICBpZiBmIHZcbiAgICB0aGVuIChcbiAgICAgIHJlbW92ZV90b3AgdDtcbiAgICAgIFNvbWUgdilcbiAgICBlbHNlIE5vbmVcbjs7XG5cbigqIHBhaXJpbmcgaGVhcHMgYXJlIG5vdCBiYWxhbmNlZCB0cmVlcywgYW5kIHRoZXJlZm9yZSB3ZSBjYW4ndCByZWx5IG9uIGEgYmFsYW5jZVxuICAgcHJvcGVydHkgdG8gc3RvcCBvdXJzZWx2ZXMgZnJvbSBvdmVyZmxvd2luZyB0aGUgc3RhY2suICopXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgbGV0IHBvb2wgPSB0LnBvb2wgaW5cbiAgbGV0IHJlYyBsb29wIGFjYyB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBub2RlIDo6IHJlc3QgLT5cbiAgICAgIGlmIE5vZGUuaXNfZW1wdHkgbm9kZVxuICAgICAgdGhlbiBsb29wIGFjYyByZXN0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHRvX3Zpc2l0ID0gTm9kZS5zaWJsaW5nIH5wb29sIG5vZGUgOjogTm9kZS5jaGlsZCB+cG9vbCBub2RlIDo6IHJlc3QgaW5cbiAgICAgICAgbG9vcCAoZiBhY2MgKE5vZGUudmFsdWVfZXhuIH5wb29sIG5vZGUpKSB0b192aXNpdClcbiAgaW5cbiAgbG9vcCBpbml0IFsgdC5yb290IF1cbjs7XG5cbigqIGFsbW9zdCBpZGVudGljYWwgdG8gZm9sZCwgY29waWVkIGZvciBzcGVlZCBwdXJwb3NlcyAqKVxubGV0IGl0ZXIgdCB+ZiA9XG4gIGxldCBwb29sID0gdC5wb29sIGluXG4gIGxldCByZWMgbG9vcCB0b192aXNpdCA9XG4gICAgbWF0Y2ggdG9fdmlzaXQgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IG5vZGUgOjogcmVzdCAtPlxuICAgICAgaWYgTm9kZS5pc19lbXB0eSBub2RlXG4gICAgICB0aGVuIGxvb3AgcmVzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGYgKE5vZGUudmFsdWVfZXhuIH5wb29sIG5vZGUpO1xuICAgICAgICBsZXQgdG9fdmlzaXQgPSBOb2RlLnNpYmxpbmcgfnBvb2wgbm9kZSA6OiBOb2RlLmNoaWxkIH5wb29sIG5vZGUgOjogcmVzdCBpblxuICAgICAgICBsb29wIHRvX3Zpc2l0KVxuICBpblxuICBsb29wIFsgdC5yb290IF1cbjs7XG5cbmxldCBsZW5ndGggdCA9IE5vZGUuUG9vbC5sZW5ndGggdC5wb29sXG5cbm1vZHVsZSBDID0gQ29udGFpbmVyLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgZm9sZCA9IGZvbGRcbiAgICBsZXQgaXRlciA9IGBDdXN0b20gaXRlclxuICAgIGxldCBsZW5ndGggPSBgQ3VzdG9tIGxlbmd0aFxuICBlbmQpXG5cbmxldCBpc19lbXB0eSB0ID0gTm9kZS5pc19lbXB0eSB0LnJvb3RcbmxldCBtZW0gPSBDLm1lbVxubGV0IGV4aXN0cyA9IEMuZXhpc3RzXG5sZXQgZm9yX2FsbCA9IEMuZm9yX2FsbFxubGV0IGNvdW50ID0gQy5jb3VudFxubGV0IHN1bSA9IEMuc3VtXG5sZXQgZmluZCA9IEMuZmluZFxubGV0IGZpbmRfbWFwID0gQy5maW5kX21hcFxubGV0IHRvX2xpc3QgPSBDLnRvX2xpc3RcbmxldCB0b19hcnJheSA9IEMudG9fYXJyYXlcbmxldCBtaW5fZWx0ID0gQy5taW5fZWx0XG5sZXQgbWF4X2VsdCA9IEMubWF4X2VsdFxubGV0IGZvbGRfcmVzdWx0ID0gQy5mb2xkX3Jlc3VsdFxubGV0IGZvbGRfdW50aWwgPSBDLmZvbGRfdW50aWxcblxubGV0IG9mX2FycmF5IGFyciB+Y21wID1cbiAgbGV0IHQgPSBjcmVhdGUgfm1pbl9zaXplOihBcnJheS5sZW5ndGggYXJyKSB+Y21wICgpIGluXG4gIEFycmF5Lml0ZXIgYXJyIH5mOihmdW4gdiAtPiBhZGQgdCB2KTtcbiAgdFxuOztcblxubGV0IG9mX2xpc3QgbCB+Y21wID0gb2ZfYXJyYXkgKEFycmF5Lm9mX2xpc3QgbCkgfmNtcFxubGV0IHNleHBfb2ZfdCBmIHQgPSBBcnJheS5zZXhwX29mX3QgZiAodG9fYXJyYXkgdCB8PiBBcnJheS5zb3J0ZWRfY29weSB+Y29tcGFyZTp0LmNtcClcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID1cbiAgICB7IG11dGFibGUgbm9kZSA6ICdhIE5vZGUudFxuICAgIDsgbm9kZV9pZCA6IE5vZGUuSWQudFxuICAgIDsgaGVhcCA6ICdhIHRcbiAgICB9XG5cbiAgKCogSWYgaWRzIGFyZSBkaWZmZXJlbnQsIGl0IG1lYW5zIHRoYXQgdGhlIG5vZGUgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVcbiAgICAgb3RoZXIgbWVhbnMgKGFuZCBwb3NzaWJseSByZXVzZWQpLiAqKVxuICBsZXQgaXNfbm9kZV92YWxpZCB0ID0gTm9kZS5JZC5lcXVhbCAoTm9kZS5pZCB+cG9vbDp0LmhlYXAucG9vbCB0Lm5vZGUpIHQubm9kZV9pZFxuXG4gIGxldCB2YWx1ZSB0ID1cbiAgICBpZiBpc19ub2RlX3ZhbGlkIHQgdGhlbiBTb21lIChOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2wpIGVsc2UgTm9uZVxuICA7O1xuXG4gIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgaWYgaXNfbm9kZV92YWxpZCB0XG4gICAgdGhlbiBOb2RlLnZhbHVlX2V4biB0Lm5vZGUgfnBvb2w6dC5oZWFwLnBvb2xcbiAgICBlbHNlIGZhaWx3aXRoIFwiSGVhcC52YWx1ZV9leG46IG5vZGUgd2FzIHJlbW92ZWQgZnJvbSB0aGUgaGVhcFwiXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IFslc2V4cCAodmFsdWUgdCA6IGEgb3B0aW9uKV1cbmVuZFxuXG5sZXQgcmVtb3ZlIHQgKHRva2VuIDogXyBFbHQudCkgPVxuICBpZiBub3QgKHBoeXNfZXF1YWwgdCB0b2tlbi5oZWFwKVxuICB0aGVuIGZhaWx3aXRoIFwiY2Fubm90IHJlbW92ZSBmcm9tIGEgZGlmZmVyZW50IGhlYXBcIlxuICBlbHNlIGlmIG5vdCAoTm9kZS5pc19lbXB0eSB0b2tlbi5ub2RlKVxuICB0aGVuIChcbiAgICBpZiBFbHQuaXNfbm9kZV92YWxpZCB0b2tlbiB0aGVuIHJlbW92ZV9ub25fZW1wdHkgdCB0b2tlbi5ub2RlO1xuICAgIHRva2VuLm5vZGUgPC0gTm9kZS5lbXB0eSAoKSlcbjs7XG5cbmxldCBhZGRfcmVtb3ZhYmxlIHQgdiA9XG4gIGxldCBub2RlID0gYWRkX25vZGUgdCB2IGluXG4gIHsgRWx0Lm5vZGU7IGhlYXAgPSB0OyBub2RlX2lkID0gTm9kZS5pZCB+cG9vbDp0LnBvb2wgbm9kZSB9XG47O1xuXG5sZXQgdXBkYXRlIHQgdG9rZW4gdiA9XG4gIHJlbW92ZSB0IHRva2VuO1xuICBhZGRfcmVtb3ZhYmxlIHQgdlxuOztcblxubGV0IGZpbmRfZWx0ID1cbiAgbGV0IHJlYyBsb29wIHQgZiBub2RlcyA9XG4gICAgbWF0Y2ggbm9kZXMgd2l0aFxuICAgIHwgW10gLT4gTm9uZVxuICAgIHwgbm9kZSA6OiByZXN0IC0+XG4gICAgICBpZiBOb2RlLmlzX2VtcHR5IG5vZGVcbiAgICAgIHRoZW4gbG9vcCB0IGYgcmVzdFxuICAgICAgZWxzZSBpZiBmIChOb2RlLnZhbHVlX2V4biBub2RlIH5wb29sOnQucG9vbClcbiAgICAgIHRoZW4gU29tZSB7IEVsdC5ub2RlOyBoZWFwID0gdDsgbm9kZV9pZCA9IE5vZGUuaWQgfnBvb2w6dC5wb29sIG5vZGUgfVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIHQgZiAoTm9kZS5zaWJsaW5nIG5vZGUgfnBvb2w6dC5wb29sIDo6IE5vZGUuY2hpbGQgbm9kZSB+cG9vbDp0LnBvb2wgOjogcmVzdClcbiAgaW5cbiAgZnVuIHQgfmYgLT4gbG9vcCB0IGYgWyB0LnJvb3QgXVxuOztcblxubW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICBtb2R1bGUgRWx0ID0gc3RydWN0XG4gICAgdHlwZSAnYSBoZWFwID0gJ2EgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIE5vZGUudFxuXG4gICAgbGV0IHZhbHVlIHQgaGVhcCA9IE5vZGUudmFsdWVfZXhuIH5wb29sOmhlYXAucG9vbCB0XG4gIGVuZFxuXG4gIGxldCBhZGRfcmVtb3ZhYmxlID0gYWRkX25vZGVcbiAgbGV0IHJlbW92ZSA9IHJlbW92ZV9ub25fZW1wdHlcblxuICBsZXQgdXBkYXRlIHQgZWx0IHYgPVxuICAgIHJlbW92ZSB0IGVsdDtcbiAgICBhZGRfcmVtb3ZhYmxlIHQgdlxuICA7O1xuZW5kXG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBNYWtlIChNIDogc2lnXG4gICAgdmFsIGFtX3J1bm5pbmdfdGVzdCA6IGJvb2xcbiAgZW5kKSA9XG5zdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIGEgPVxuICAgIGlmIE0uYW1fcnVubmluZ190ZXN0IHRoZW4gU2V4cC5BdG9tIFwiPGhpZGRlbl9pbl90ZXN0PlwiIGVsc2Ugc2V4cF9vZl9hIGFcbiAgOztcblxuICBtb2R1bGUgV2l0aF9ub25fcm91bmR0cmlwcGluZ19pbl90ZXN0X29mX3NleHAgPSBzdHJ1Y3RcbiAgICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gIGVuZFxuZW5kXG5cbmxldCV0ZXN0X21vZHVsZSBfID1cbiAgKG1vZHVsZSBzdHJ1Y3RcbiAgICBtb2R1bGUgVHVybmVkX29mZiA9IHN0cnVjdFxuICAgICAgbW9kdWxlIFNleHBfaGlkZGVuX2luX3Rlc3RfdHVybmVkX29mZiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBmYWxzZVxuICAgICAgICBlbmQpXG5cbiAgICAgIHR5cGUgbm9ucmVjIHQgPSBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdF90dXJuZWRfb2ZmLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgICBlbmRcblxuICAgIG1vZHVsZSBUdXJuZWRfb24gPSBzdHJ1Y3RcbiAgICAgIG1vZHVsZSBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbiA9IE1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSB0cnVlXG4gICAgICAgIGVuZClcblxuICAgICAgdHlwZSBub25yZWMgdCA9IGludCBTZXhwX2hpZGRlbl9pbl90ZXN0X3R1cm5lZF9vbi50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb25cIiA9XG4gICAgICBwcmludF9zIFslc2V4cCAoMTAyNCA6IFR1cm5lZF9vbi50KV07XG4gICAgICBbJWV4cGVjdCB7fCA8aGlkZGVuX2luX3Rlc3Q+IHx9XVxuICAgIDs7XG5cbiAgICBsZXQlZXhwZWN0X3Rlc3QgXCJUdXJuZWQgb2ZmXCIgPVxuICAgICAgcHJpbnRfcyAoWyVzZXhwX29mOiBUdXJuZWRfb2ZmLnRdIDEwMjQpO1xuICAgICAgWyVleHBlY3Qge3wgMTAyNCB8fV1cbiAgICA7O1xuICBlbmQpXG47O1xuXG5pbmNsdWRlIE1ha2UgKHN0cnVjdFxuICAgIGxldCBhbV9ydW5uaW5nX3Rlc3QgPSBhbV9ydW5uaW5nX3Rlc3RcbiAgZW5kKVxuIiwib3BlbiBDb3JlXG5cbnR5cGUgKydhIHRcblxuKCogVGhpcyBbT2JqLm1hZ2ljXSBpcyBPSyBiZWNhdXNlIHdlIG5ldmVyIGFsbG93IHVzZXIgY29kZSBhY2Nlc3MgdG8gW25vbmVdIChleGNlcHQgdmlhXG4gICBbdW5zYWZlX3ZhbHVlXSkuICBXZSBkaXNhbGxvdyBbXyBVb3B0LnQgVW9wdC50XSwgc28gdGhlcmUgaXMgbm8gY2hhbmNlIG9mIGNvbmZ1c2luZ1xuICAgW25vbmVdIHdpdGggW3NvbWUgbm9uZV0uICBBbmQgW2Zsb2F0IFVvcHQudCBhcnJheV0gaXMgc2ltaWxhcmx5IGRpc2FsbG93ZWQuICopXG5sZXQgbm9uZSA6ICdhIHQgPSBPYmoubWFnaWMgXCJVb3B0Lm5vbmVcIlxubGV0IHNvbWUgKHggOiAnYSkgOiAnYSB0ID0gT2JqLm1hZ2ljIHhcbmxldCB1bnNhZmVfdmFsdWUgKHggOiAnYSB0KSA6ICdhID0gT2JqLm1hZ2ljIHhcbmxldCBpc19ub25lIHQgPSBwaHlzX2VxdWFsIHQgbm9uZVxubGV0IGlzX3NvbWUgdCA9IG5vdCAoaXNfbm9uZSB0KVxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaWYgaXNfc29tZSB0IHRoZW4gaW52YXJpYW50X2EgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID1cbiAgaWYgaXNfbm9uZSB0IHRoZW4gWyVzZXhwIE5vbmVdIGVsc2UgWyVzZXhwIFNvbWUgKHVuc2FmZV92YWx1ZSB0IDogYSldXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSBpZiBpc19ub25lIHQgdGhlbiBmYWlsd2l0aCBcIlVvcHQudmFsdWVfZXhuXCIgZWxzZSB1bnNhZmVfdmFsdWUgdFxubGV0IHRvX29wdGlvbiB0ID0gaWYgaXNfbm9uZSB0IHRoZW4gTm9uZSBlbHNlIFNvbWUgKHVuc2FmZV92YWx1ZSB0KVxuXG5sZXQgb2Zfb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IG5vbmVcbiAgfCBTb21lIGEgLT4gc29tZSBhXG47O1xuXG5tb2R1bGUgT3B0aW9uYWxfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgaXNfbm9uZSA9IGlzX25vbmVcbiAgICBsZXQgdW5zYWZlX3ZhbHVlID0gdW5zYWZlX3ZhbHVlXG4gIGVuZFxuZW5kXG4iLCIoKiBUaGlzIG1vZHVsZSBleHBsb2l0cyB0aGUgZmFjdCB0aGF0IE9DYW1sIGRvZXMgbm90IHBlcmZvcm0gY29udGV4dC1zd2l0Y2hlcyB1bmRlclxuICAgY2VydGFpbiBjb25kaXRpb25zLiAgSXQgY2FuIHRoZXJlZm9yZSBhdm9pZCB1c2luZyBtdXRleGVzLlxuXG4gICBHaXZlbiB0aGUgc2VtYW50aWNzIG9mIHRoZSBjdXJyZW50IE9DYW1sIHJ1bnRpbWUgKGFuZCBmb3IgdGhlIGZvcmVzZWVhYmxlIGZ1dHVyZSksIGNvZGVcbiAgIHNlY3Rpb25zIGRvY3VtZW50ZWQgYXMgYXRvbWljIGJlbG93IHdpbGwgbmV2ZXIgY29udGFpbiBhIGNvbnRleHQtc3dpdGNoLiAgVGhlIGRlY2lkaW5nXG4gICBjcml0ZXJpb24gaXMgd2hldGhlciB0aGV5IGNvbnRhaW4gYWxsb2NhdGlvbnMgb3IgY2FsbHMgdG8gZXh0ZXJuYWwvYnVpbHRpbiBmdW5jdGlvbnMuXG4gICBJZiB0aGVyZSBpcyBub25lLCBhIGNvbnRleHQtc3dpdGNoIGNhbm5vdCBoYXBwZW4uICBBc3NpZ25tZW50cyB3aXRob3V0IGFsbG9jYXRpb25zLFxuICAgZmllbGQgYWNjZXNzLCBwYXR0ZXJuLW1hdGNoaW5nLCBldGMuLCBkbyBub3QgdHJpZ2dlciBjb250ZXh0LXN3aXRjaGVzLlxuXG4gICBDb2RlIHJldmlld2VycyBzaG91bGQgdGhlcmVmb3JlIG1ha2Ugc3VyZSB0aGF0IHRoZSBzZWN0aW9ucyBkb2N1bWVudGVkIGFzIGF0b21pYyBiZWxvd1xuICAgZG8gbm90IHZpb2xhdGUgdGhlIGFib3ZlIGFzc3VtcHRpb25zLiAgSXQgaXMgcHJ1ZGVudCB0byBkaXNhc3NlbWJsZSB0aGUgLm8gZmlsZSAodXNpbmdcbiAgIFtvYmpkdW1wIC1kcl0pIGFuZCBleGFtaW5lIGl0LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEVsdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhIHQgVW9wdC50W0BzZXhwLm9wYXF1ZV0pXG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgKCkgPSB7IHZhbHVlID0gVW9wdC5ub25lOyBuZXh0ID0gVW9wdC5ub25lIH1cbmVuZFxuXG50eXBlICdhIHQgPVxuICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICgqIFtmcm9udF0gdG8gW2JhY2tdIGhhcyBbbGVuZ3RoICsgMV0gbGlua2VkIGVsZW1lbnRzLCB3aGVyZSB0aGUgZmlyc3QgW2xlbmd0aF0gaG9sZCB0aGVcbiAgICAgdmFsdWVzIGluIHRoZSBxdWV1ZSwgYW5kIHRoZSBsYXN0IGlzIFtiYWNrXSwgaG9sZGluZyBubyB2YWx1ZS4gKilcbiAgOyBtdXRhYmxlIGZyb250IDogJ2EgRWx0LnRcbiAgOyBtdXRhYmxlIGJhY2sgOiAnYSBFbHQudFxuICAoKiBbdW51c2VkX2VsdHNdIGlzIHNpbmdseSBsaW5rZWQgdmlhIFtuZXh0XSwgYW5kIGVuZHMgd2l0aCBbc2VudGluZWxdLiAgQWxsIGVsdHMgaW5cbiAgICAgW3VudXNlZF9lbHRzXSBoYXZlIFtVb3B0LmlzX25vbmUgZWx0LnZhbHVlXS4gKilcbiAgOyBtdXRhYmxlIHVudXNlZF9lbHRzIDogJ2EgRWx0LnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6KGNoZWNrIChmdW4gbGVuZ3RoIC0+IGFzc2VydCAobGVuZ3RoID49IDApKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgbGV0IGkgPSByZWYgdC5sZW5ndGggaW5cbiAgICAgICAgICAgbGV0IHIgPSByZWYgZnJvbnQgaW5cbiAgICAgICAgICAgd2hpbGUgIWkgPiAwIGRvXG4gICAgICAgICAgICAgZGVjciBpO1xuICAgICAgICAgICAgIGxldCBlbHQgPSAhciBpblxuICAgICAgICAgICAgIHIgOj0gVW9wdC52YWx1ZV9leG4gZWx0LkVsdC5uZXh0O1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19zb21lIGVsdC52YWx1ZSlcbiAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgYXNzZXJ0IChwaHlzX2VxdWFsICFyIHQuYmFjaykpKVxuICAgICAgfmJhY2s6KGNoZWNrIChmdW4gYmFjayAtPiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBiYWNrLkVsdC52YWx1ZSkpKVxuICAgICAgfnVudXNlZF9lbHRzOlxuICAgICAgICAoY2hlY2sgKGZ1biB1bnVzZWRfZWx0cyAtPlxuICAgICAgICAgICBsZXQgciA9IHJlZiB1bnVzZWRfZWx0cyBpblxuICAgICAgICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgICAgICBsZXQgZWx0ID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICAgICAgICAgICByIDo9IGVsdC5FbHQubmV4dDtcbiAgICAgICAgICAgICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlbHQudmFsdWUpXG4gICAgICAgICAgIGRvbmUpKSlcbjs7XG5cbmxldCBjcmVhdGUgKCkgPVxuICBsZXQgZWx0ID0gRWx0LmNyZWF0ZSAoKSBpblxuICB7IGZyb250ID0gZWx0OyBiYWNrID0gZWx0OyBsZW5ndGggPSAwOyB1bnVzZWRfZWx0cyA9IFVvcHQubm9uZSB9XG47O1xuXG5sZXQgZ2V0X3VudXNlZF9lbHQgdCA9XG4gICgqIEJFR0lOIEFUT01JQyBTRUNUSU9OICopXG4gIGlmIFVvcHQuaXNfc29tZSB0LnVudXNlZF9lbHRzXG4gIHRoZW4gKFxuICAgIGxldCBlbHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnVudXNlZF9lbHRzIGluXG4gICAgdC51bnVzZWRfZWx0cyA8LSBlbHQubmV4dDtcbiAgICBlbHQgKCogRU5EIEFUT01JQyBTRUNUSU9OICopKVxuICBlbHNlIEVsdC5jcmVhdGUgKClcbjs7XG5cbmxldCBlbnF1ZXVlICh0eXBlIGEpICh0IDogYSB0KSAoYSA6IGEpID1cbiAgbGV0IG5ld19iYWNrID0gZ2V0X3VudXNlZF9lbHQgdCBpblxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCArIDE7XG4gIHQuYmFjay52YWx1ZSA8LSBVb3B0LnNvbWUgYTtcbiAgdC5iYWNrLm5leHQgPC0gVW9wdC5zb21lIG5ld19iYWNrO1xuICB0LmJhY2sgPC0gbmV3X2JhY2tcbjs7XG5cbigqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuXG5sZXQgcmV0dXJuX3VudXNlZF9lbHQgdCAoZWx0IDogXyBFbHQudCkgPVxuICAoKiBCRUdJTiBBVE9NSUMgU0VDVElPTiAqKVxuICBlbHQudmFsdWUgPC0gVW9wdC5ub25lO1xuICBlbHQubmV4dCA8LSB0LnVudXNlZF9lbHRzO1xuICB0LnVudXNlZF9lbHRzIDwtIFVvcHQuc29tZSBlbHQ7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICAoKVxuOztcblxubGV0W0Bjb2xkXSByYWlzZV9kZXF1ZXVlX2VtcHR5IHQgPVxuICBmYWlsd2l0aHMgfmhlcmU6WyVoZXJlXSBcIlRocmVhZF9zYWZlX3F1ZXVlLmRlcXVldWVfZXhuIG9mIGVtcHR5IHF1ZXVlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBkZXF1ZXVlX2V4biB0ID1cbiAgKCogQkVHSU4gQVRPTUlDIFNFQ1RJT04gKilcbiAgaWYgdC5sZW5ndGggPSAwIHRoZW4gcmFpc2VfZGVxdWV1ZV9lbXB0eSB0O1xuICBsZXQgZWx0ID0gdC5mcm9udCBpblxuICBsZXQgYSA9IGVsdC52YWx1ZSBpblxuICB0LmZyb250IDwtIFVvcHQudW5zYWZlX3ZhbHVlIGVsdC5uZXh0O1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gICgqIEVORCBBVE9NSUMgU0VDVElPTiAqKVxuICByZXR1cm5fdW51c2VkX2VsdCB0IGVsdDtcbiAgVW9wdC51bnNhZmVfdmFsdWUgYVxuOztcblxubGV0IGNsZWFyX2ludGVybmFsX3Bvb2wgdCA9IHQudW51c2VkX2VsdHMgPC0gVW9wdC5ub25lXG5cbm1vZHVsZSBQcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBVb3B0ID0gVW9wdFxuZW5kXG4iLCJpbmNsdWRlIENvcmUuQ29yZV9wcml2YXRlLlRpbWVfbnNfYWx0ZXJuYXRlX3NleHBcblxuKCogW2FmdGVyXSBpcyBsaWtlIFthZGRdLCBidXQgZGVhbHMgbmljZWx5IHdpdGggdGhlIGNhc2Ugb2Ygb3ZlcmZsb3cgYnkgaW5zdGVhZCByZXR1cm5pbmdcbiAgIFttYXhfdmFsdWVdLiAgVGltZS1zb3VyY2UgZnVuY3Rpb25zIHVzZSBbYWZ0ZXJdIHRvIGF2b2lkIGltbWVkaWF0ZWx5IGZpcmluZyBldmVudHMgdGhhdFxuICAgc2hvdWxkIG5ldmVyIGZpcmUsIGR1ZSB0byB0aGUgb3ZlcmZsb3cgbGVhZGluZyB0byBhIG5lZ2F0aXZlIHRpbWUgdGhhdCBhcHBlYXJzIHRvIGJlIGluXG4gICB0aGUgcGFzdC4gIFdlIGRvbid0IGNoZWNrIHVuZGVyZmxvdyBiZWNhdXNlIHRoYXQgaXMgdmVyeSB1bmxpa2VseSwgcmVxdWlyaW5nIGJvdGggYVxuICAgbmVnYXRpdmUgdGltZSBhbmQgYSBuZWdhdGl2ZSBzcGFuLiAqKVxubGV0IGFmdGVyIHQgc3BhbiA9XG4gIGxldCByZXN1bHQgPSBhZGQgdCBzcGFuIGluXG4gIGlmIFNwYW4uKCA+ICkgc3BhbiBTcGFuLnplcm8gJiYgcmVzdWx0IDwgdCB0aGVuIG1heF92YWx1ZV9mb3JfMXVzX3JvdW5kaW5nIGVsc2UgcmVzdWx0XG47O1xuIiwibW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuIENvcmVcbm1vZHVsZSBUaW1lX25zID0gVGltZV9uc19pbl90aGlzX2RpcmVjdG9yeVxuaW5jbHVkZSBBc3luY19rZXJuZWxfY29uZmlnLlByaW50X2RlYnVnX21lc3NhZ2VzX2ZvclxuXG5sZXQgbG9nIG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBlcHJpbnRmXG4gICAgXCIlc1xcbiUhXCJcbiAgICAoU2V4cC50b19zdHJpbmdfaHVtXG4gICAgICAgKFslc2V4cF9vZjogU2V4cC50ICogVGltZV9ucy50ICogc3RyaW5nICogYV1cbiAgICAgICAgICAoIUFzeW5jX2tlcm5lbF9jb25maWcudGFza19pZCAoKSwgVGltZV9ucy5ub3cgKCksIG1lc3NhZ2UsIGEpKSlcbjs7XG5cbmxldCBsb2dfc3RyaW5nIG1lc3NhZ2UgPSBsb2cgbWVzc2FnZSAoKSBbJXNleHBfb2Y6IHVuaXRdXG4iLCJtb2R1bGUgRGVidWdfaW5fdGhpc19kaXJlY3RvcnkgPSBEZWJ1Z1xubW9kdWxlIFRpbWVfbnNfaW5fdGhpc19kaXJlY3RvcnkgPSBUaW1lX25zXG5vcGVuISBDb3JlXG5pbmNsdWRlIEludC5SZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbm1vZHVsZSBEZWJ1ZyA9IERlYnVnX2luX3RoaXNfZGlyZWN0b3J5XG5tb2R1bGUgVGltZV9ucyA9IFRpbWVfbnNfaW5fdGhpc19kaXJlY3Rvcnlcbm1vZHVsZSBQb29sID0gVHVwbGVfcG9vbFxuXG5tb2R1bGUgTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgPVxuICBBc3luY19rZXJuZWxfY29uZmlnLk1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG5cbmxldCBjb25jYXQgPSBTdHJpbmcuY29uY2F0XG5sZXQgZXByaW50ID0gQ29yZS5EZWJ1Zy5lcHJpbnRcbmxldCBlcHJpbnRfcyA9IENvcmUuRGVidWcuZXByaW50X3NcbmxldCBlcHJpbnRzID0gQ29yZS5EZWJ1Zy5lcHJpbnRzXG5sZXQgcHJpbnRfcyBzZXhwID0gcHJpbnRmIFwiJXNcXG4lIVwiIChzZXhwIHw+IFNleHAudG9fc3RyaW5nX2h1bSlcbmxldCBzZWMgPSBUaW1lX25zLlNwYW4ub2Zfc2VjXG5cbigqIFdlIGRvbid0IHdhbnQgdG8gdXNlIHRoZXNlIG1vZHVsZXMgaW4gQXN5bmNfa2VybmVsLCB0byBhdm9pZCBkaWZmaWN1bHRpZXMgd2l0aFxuICAgdXNpbmcgaXQgb24ganNfb2Zfb2NhbWwuICopXG5tb2R1bGUgVGhyZWFkID0gc3RydWN0IGVuZFxubW9kdWxlIFVuaXggPSBzdHJ1Y3QgZW5kXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSB0ID1cbiAgfCBOb3JtYWxcbiAgfCBMb3dcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBub3JtYWwgPSBOb3JtYWxcbmxldCBsb3cgPSBMb3dcbiIsIigqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtdXR1YWxseSByZWN1cnNpdmUgdHlwZXMgYXQgdGhlIGhlYXJ0IG9mIEFzeW5jLiAgVGhlIGZ1bmN0aW9uc1xuICAgYXNzb2NpYXRlZCB3aXRoIHRoZSB0eXBlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBmaWxlKHMpIGZvciBlYWNoIG1vZHVsZS5cbiAgIFRoaXMgZmlsZSBzaG91bGQgZGVmaW5lIG9ubHkgdHlwZXMsIG5vdCBmdW5jdGlvbnMsIHNpbmNlIGZ1bmN0aW9ucyBkZWZpbmVkIGluc2lkZSB0aGVcbiAgIHJlY3Vyc2l2ZSBtb2R1bGVzIGFyZSBub3QgaW5saW5lZC5cblxuICAgSWYgeW91IG5lZWQgdG8gYWRkIGZ1bmN0aW9uYWxpdHkgdG8gYSBtb2R1bGUgYnV0IGRvaW5nIHNvIHdvdWxkIGNyZWF0ZSBhIGRlcGVuZGVuY3lcbiAgIGN5Y2xlLCBzcGxpdCB0aGUgZmlsZSBpbnRvIHBpZWNlcyBhcyBuZWVkZWQgdG8gYnJlYWsgdGhlIGN5Y2xlLCBlLmcuIHNjaGVkdWxlcjAubWwsXG4gICBzY2hlZHVsZXIxLm1sLCBzY2hlZHVsZXIubWwuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgcmVjIENlbGwgOiBzaWdcbiAgdHlwZSBhbnkgPVxuICAgIFsgYEVtcHR5XG4gICAgfCBgRW1wdHlfb25lX2hhbmRsZXJcbiAgICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgIHwgYEZ1bGxcbiAgICB8IGBJbmRpclxuICAgIF1cblxuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgOlxuICAgICAgICB7IG11dGFibGUgcnVuIDogJ2EgLT4gdW5pdFxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICA7IG11dGFibGUgcHJldiA6ICdhIEhhbmRsZXIudFxuICAgICAgICA7IG11dGFibGUgbmV4dCA6ICdhIEhhbmRsZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICgnYSwgWz4gYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIHRcbiAgICB8IEVtcHR5X29uZV9oYW5kbGVyIDpcbiAgICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfaGFuZGxlciBdKSB0XG4gICAgfCBFbXB0eSA6ICgnYSwgWz4gYEVtcHR5IF0pIHRcbiAgICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIHRcbiAgICB8IEluZGlyIDogJ2EgSXZhci50IC0+ICgnYSwgWz4gYEluZGlyIF0pIHRcbmVuZCA9XG4gIENlbGxcblxuYW5kIEhhbmRsZXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0gKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBDZWxsLnRcbmVuZCA9XG4gIEhhbmRsZXJcblxuYW5kIEl2YXIgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuXG4gIG1vZHVsZSBJbW11dGFibGUgOiBzaWdcbiAgICB0eXBlICdhIHQgPSB7IGNlbGwgOiAoJ2EsIENlbGwuYW55KSBDZWxsLnQgfVxuICBlbmRcbmVuZCA9XG4gIEl2YXJcblxuYW5kIERlZmVycmVkIDogc2lnXG4gIHR5cGUgKydhIHRcbmVuZCA9XG4gIERlZmVycmVkXG5cbmFuZCBFeGVjdXRpb25fY29udGV4dCA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIDsgcHJpb3JpdHkgOiBQcmlvcml0eS50XG4gICAgOyBsb2NhbF9zdG9yYWdlIDogVW5pdl9tYXAudFxuICAgIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgRXhlY3V0aW9uX2NvbnRleHRcblxuYW5kIEZvcndhcmRpbmcgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IERldGFjaGVkXG4gICAgfCBQYXJlbnQgb2YgTW9uaXRvci50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuXG5lbmQgPVxuICBGb3J3YXJkaW5nXG5cbmFuZCBNb25pdG9yIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBuYW1lIDogSW5mby50XG4gICAgOyBoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCBvcHRpb25cbiAgICA7IGlkIDogaW50XG4gICAgOyBtdXRhYmxlIG5leHRfZXJyb3IgOiBleG4gSXZhci50XG4gICAgOyBtdXRhYmxlIGhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIDogKEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoZXhuIC0+IHVuaXQpKSBCYWcudFxuICAgIDsgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUYWlsLnQgbGlzdFxuICAgIDsgbXV0YWJsZSBoYXNfc2Vlbl9lcnJvciA6IGJvb2xcbiAgICA7IG11dGFibGUgZm9yd2FyZGluZyA6IEZvcndhcmRpbmcudFxuICAgIH1cbmVuZCA9XG4gIE1vbml0b3JcblxuYW5kIFRhaWwgOiBzaWdcbiAgdHlwZSAnYSB0ID0geyBtdXRhYmxlIG5leHQgOiAnYSBTdHJlYW0ubmV4dCBJdmFyLnQgfVxuZW5kID1cbiAgVGFpbFxuXG5hbmQgU3RyZWFtIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIG5leHQgRGVmZXJyZWQudFxuXG4gIGFuZCAnYSBuZXh0ID1cbiAgICB8IE5pbFxuICAgIHwgQ29ucyBvZiAnYSAqICdhIHRcbmVuZCA9XG4gIFN0cmVhbVxuXG4oKiBXZSBhdm9pZCB1c2luZyBbbW9kdWxlIHJlY10gdG8gZGVmaW5lIFtCdmFyXSwgc28gdGhhdCBbdG9fcmVwcl0gYW5kIFtvZl9yZXByXSBhcmVcbiAgIGlubGluZWQuICopXG5tb2R1bGUgQnZhciA6IHNpZ1xuICB0eXBlICgnYSwgLSdwZXJtaXNzaW9uKSB0XG5cbiAgKCoqIFtyZXByXSBleGlzdHMgc28gdGhhdCB3ZSBtYXkgaGlkZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYSBbQnZhci50XSwgYW5kIHRoZW4gYWRkIGFcbiAgICAgIHBoYW50b20gdHlwZSB0byBpdCB1cHN0cmVhbS4gIFdpdGhvdXQgdGhpcywgdGhlIHBoYW50b20gdHlwZSB2YXJpYWJsZSB3b3VsZCBhbGxvd1xuICAgICAgZm9yIGFueXRoaW5nIHRvIGJlIGNvZXJjZWQgaW4gYW5kIG91dCwgc2luY2UgaXQgaXMgdW51c2VkLiAqKVxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdmFsIG9mX3JlcHIgOiAnYSByZXByIC0+ICgnYSwgJ3Blcm1pc3Npb24pIHRcbiAgdmFsIHRvX3JlcHIgOiAoJ2EsICdwZXJtaXNzaW9uKSB0IC0+ICdhIHJlcHJcbmVuZCA9IHN0cnVjdFxuICB0eXBlICdhIHJlcHIgPVxuICAgIHsgbXV0YWJsZSBoYXNfYW55X3dhaXRlcnMgOiBib29sXG4gICAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgICB9XG5cbiAgdHlwZSAoJ2EsICdwZXJtaXNzaW9uKSB0ID0gJ2EgcmVwclxuXG4gIGxldCB0b19yZXByIHQgPSB0XG4gIGxldCBvZl9yZXByIHQgPSB0XG5lbmRcblxubW9kdWxlIHJlYyBFdmVudCA6IHNpZ1xuICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRmlyZWRcbiAgICAgIHwgSGFwcGVuaW5nXG4gICAgICB8IFNjaGVkdWxlZFxuICAgICAgfCBVbnNjaGVkdWxlZFxuICBlbmRcblxuICBtb2R1bGUgT3B0aW9uIDogc2lnXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLkFsYXJtLnRcbiAgICA7IG11dGFibGUgYXQgOiBUaW1lX25zLnRcbiAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgOyBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnRcbiAgICA7IG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICA7IG11dGFibGUgbmV4dF9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgIDsgbXV0YWJsZSBzdGF0dXMgOiBTdGF0dXMudFxuICAgIH1cbmVuZCA9XG4gIEV2ZW50XG5cbmFuZCBFeHRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSB0ID0gVCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgKiAoJ2EgLT4gdW5pdCkgKiAnYSAtPiB0XG5lbmQgPVxuICBFeHRlcm5hbF9qb2JcblxuYW5kIEpvYiA6IHNpZ1xuICB0eXBlIHNsb3RzID0gKEV4ZWN1dGlvbl9jb250ZXh0LnQsIE9iai50IC0+IHVuaXQsIE9iai50KSBQb29sLlNsb3RzLnQzXG4gIHR5cGUgdCA9IHNsb3RzIFBvb2wuUG9pbnRlci50XG5lbmQgPVxuICBKb2JcblxuYW5kIEpvYl9vcl9ldmVudCA6IHNpZ1xuICB0eXBlIHRcbmVuZCA9XG4gIEpvYl9vcl9ldmVudFxuXG5hbmQgSm9iX3Bvb2wgOiBzaWdcbiAgdHlwZSB0ID0gSm9iLnNsb3RzIFBvb2wudFxuZW5kID1cbiAgSm9iX3Bvb2xcblxuYW5kIEpvYl9xdWV1ZSA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgICA7IG11dGFibGUgam9ic19sZWZ0X3RoaXNfY3ljbGUgOiBpbnRcbiAgICA7IG11dGFibGUgam9icyA6IE9iai50IFVuaWZvcm1fYXJyYXkudFxuICAgIDsgbXV0YWJsZSBtYXNrIDogaW50XG4gICAgOyBtdXRhYmxlIGZyb250IDogaW50XG4gICAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIH1cbmVuZCA9XG4gIEpvYl9xdWV1ZVxuXG5hbmQgSm9icyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWwgOiBKb2JfcXVldWUudFxuICAgIDsgbG93IDogSm9iX3F1ZXVlLnRcbiAgICB9XG5lbmQgPVxuICBKb2JzXG5cbmFuZCBTY2hlZHVsZXIgOiBzaWdcblxuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgam9iX3Bvb2wgOiBKb2JfcG9vbC50XG4gICAgOyBub3JtYWxfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gICAgOyB2ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIDogVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyLnQgRGVxdWUudFxuICAgIDsgbXV0YWJsZSBtYWluX2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICAgIDsgbXV0YWJsZSBjeWNsZV9jb3VudCA6IGludFxuICAgIDsgbXV0YWJsZSBjeWNsZV9zdGFydCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgICA7IG11dGFibGUgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDogQ3ljbGVfaG9vay50IGxpc3RcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA6IChDeWNsZV9ob29rX2hhbmRsZS50LCBDeWNsZV9ob29rLnQpIEhhc2h0YmwudFxuICAgIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfZW5kIDogQ3ljbGVfaG9vay50IGxpc3RcbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgOiAoQ3ljbGVfaG9va19oYW5kbGUudCwgQ3ljbGVfaG9vay50KSBIYXNodGJsLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICAgIDsgbXV0YWJsZSB0b3RhbF9jeWNsZV90aW1lIDogVGltZV9ucy5TcGFuLnRcbiAgICA7IG11dGFibGUgdGltZV9zb3VyY2UgOiByZWFkX3dyaXRlIFRpbWVfc291cmNlLnQxXG4gICAgOyBleHRlcm5hbF9qb2JzIDogRXh0ZXJuYWxfam9iLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBqb2JfcXVldWVkX2hvb2sgOiAoUHJpb3JpdHkudCAtPiB1bml0KSBvcHRpb25cbiAgICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gICAgOyBtdXRhYmxlIHlpZWxkIDogKHVuaXQsIHJlYWRfd3JpdGUpIEJ2YXIudFxuICAgIDsgbXV0YWJsZSB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgICA7IG11dGFibGUgY2hlY2tfaW52YXJpYW50cyA6IGJvb2xcbiAgICA7IG11dGFibGUgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgOiBNYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZS50XG4gICAgOyBtdXRhYmxlIHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbFxuICAgIH1cbmVuZCA9XG4gIFNjaGVkdWxlclxuXG5hbmQgQ3ljbGVfaG9vayA6IHNpZ1xuICB0eXBlIHQgPSB1bml0IC0+IHVuaXRcbmVuZCA9XG4gIEN5Y2xlX2hvb2tcblxuYW5kIEN5Y2xlX2hvb2tfaGFuZGxlIDogVW5pcXVlX2lkLklkID0gVW5pcXVlX2lkLkludDYzICgpXG5hbmQgVGltZV9zb3VyY2VfaWQgOiBVbmlxdWVfaWQuSWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxuYW5kIFRpbWVfc291cmNlIDogc2lnXG4gIHR5cGUgLSdydyB0MSA9XG4gICAgeyBpZCA6IFRpbWVfc291cmNlX2lkLnRcbiAgICA7IG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7IG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7IG11dGFibGUgZmlyZWRfZXZlbnRzIDogRXZlbnQuT3B0aW9uLnRcbiAgICA7IG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udCAtPiB1bml0XG4gICAgOyBpc193YWxsX2Nsb2NrIDogYm9vbFxuICAgIDsgc2NoZWR1bGVyIDogU2NoZWR1bGVyLnRcbiAgICB9XG5lbmQgPVxuICBUaW1lX3NvdXJjZVxuXG5hbmQgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyIDogc2lnXG4gIG1vZHVsZSBFeGVjX3Jlc3VsdCA6IHNpZ1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICBlbmRcblxuICB0eXBlIHQgPVxuICAgIHsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgOyBleGVjIDogdW5pdCAtPiBFeGVjX3Jlc3VsdC50XG4gICAgfVxuZW5kID1cbiAgVmVyeV9sb3dfcHJpb3JpdHlfd29ya2VyXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5cbmxldCBkZWJ1ZyA9IERlYnVnLm1vbml0b3JcblxubW9kdWxlIEZvcndhcmRpbmcgPSBUeXBlcy5Gb3J3YXJkaW5nXG5cbnR5cGUgdCA9IFR5cGVzLk1vbml0b3IudCA9XG4gIHsgbmFtZSA6IEluZm8udFxuICA7IGhlcmUgOiBTb3VyY2VfY29kZV9wb3NpdGlvbi50IG9wdGlvblxuICA7IGlkIDogaW50XG4gIDsgbXV0YWJsZSBuZXh0X2Vycm9yIDogZXhuIFR5cGVzLkl2YXIudFxuICA7ICgqIFtNb25pdG9yLnNlbmRfZXhuXSBzY2hlZHVsZXMgYSBqb2IgZm9yIGVhY2ggZWxlbWVudCBvZiBbaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnNdLiAqKVxuICAgIG11dGFibGUgaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgOiAoVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCAqIChleG4gLT4gdW5pdCkpIEJhZy50XG4gIDsgKCogW01vbml0b3Iuc2VuZF9leG5dIGV4dGVuZHMgZWFjaCB0YWlsIGluIFt0YWlsc19mb3JfYWxsX2Vycm9yc10uICopXG4gICAgbXV0YWJsZSB0YWlsc19mb3JfYWxsX2Vycm9ycyA6IGV4biBUeXBlcy5UYWlsLnQgbGlzdFxuICA7IG11dGFibGUgaGFzX3NlZW5fZXJyb3IgOiBib29sXG4gIDsgbXV0YWJsZSBmb3J3YXJkaW5nIDogRm9yd2FyZGluZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGRlc2NyaXB0aW9uIHQgPVxuICBtYXRjaCB0LmhlcmUgd2l0aFxuICB8IE5vbmUgLT4gWyVzZXhwICh0Lm5hbWUgOiBJbmZvLnQpXVxuICB8IFNvbWUgaGVyZSAtPiBbJXNleHAgKHQubmFtZSA6IEluZm8udCksIChoZXJlIDogU291cmNlX2NvZGVfcG9zaXRpb24udCldXG47O1xuXG5sZXQgZGVzY3JpcHRpb25zID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIGxldCBhYyA9IGRlc2NyaXB0aW9uIHQgOjogYWMgaW5cbiAgICBtYXRjaCB0LmZvcndhcmRpbmcgd2l0aFxuICAgIHwgRGV0YWNoZWQgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IExpc3QucmV2IGFjXG4gICAgfCBQYXJlbnQgdCAtPiBsb29wIHQgYWNcbiAgaW5cbiAgZnVuIHQgLT4gbG9vcCB0IFtdXG47O1xuXG5sZXQgc2V4cF9vZl90IHQgPSBbJXNleHAgKGRlc2NyaXB0aW9ucyB0IDogU2V4cC50IGxpc3QpXVxuXG5sZXQgbmV4dF9pZCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuXG5sZXQgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIHBhcmVudCA9XG4gIGxldCBpZCA9IG5leHRfaWQgKCkgaW5cbiAgbGV0IG5hbWUgPVxuICAgIG1hdGNoIGluZm8sIG5hbWUgd2l0aFxuICAgIHwgU29tZSBpLCBOb25lIC0+IGlcbiAgICB8IFNvbWUgaSwgU29tZSBzIC0+IEluZm8udGFnIGkgfnRhZzpzXG4gICAgfCBOb25lLCBTb21lIHMgLT4gSW5mby5vZl9zdHJpbmcgc1xuICAgIHwgTm9uZSwgTm9uZSAtPiBJbmZvLmNyZWF0ZSBcImlkXCIgaWQgWyVzZXhwX29mOiBpbnQgU2V4cF9oaWRkZW5faW5fdGVzdC50XVxuICBpblxuICBsZXQgdCA9XG4gICAgeyBuYW1lXG4gICAgOyBoZXJlXG4gICAgOyBmb3J3YXJkaW5nID1cbiAgICAgICAgKG1hdGNoIHBhcmVudCB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gUmVwb3J0X3VuY2F1Z2h0X2V4blxuICAgICAgICAgfCBTb21lIHBhcmVudCAtPiBQYXJlbnQgcGFyZW50KVxuICAgIDsgaWRcbiAgICA7IG5leHRfZXJyb3IgPSB7IGNlbGwgPSBFbXB0eSB9XG4gICAgOyBoYW5kbGVyc19mb3JfYWxsX2Vycm9ycyA9IEJhZy5jcmVhdGUgKClcbiAgICA7IHRhaWxzX2Zvcl9hbGxfZXJyb3JzID0gW11cbiAgICA7IGhhc19zZWVuX2Vycm9yID0gZmFsc2VcbiAgICB9XG4gIGluXG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiY3JlYXRlZCBtb25pdG9yXCIgdCBbJXNleHBfb2Y6IHRdO1xuICB0XG47O1xuXG5sZXQgbWFpbiA9IGNyZWF0ZV93aXRoX3BhcmVudCB+bmFtZTpcIm1haW5cIiBOb25lXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcblxudHlwZSB0ID0gVHlwZXMuRXhlY3V0aW9uX2NvbnRleHQudCA9XG4gIHsgbW9uaXRvciA6IE1vbml0b3IudFxuICA7IHByaW9yaXR5IDogUHJpb3JpdHkudFxuICA7IGxvY2FsX3N0b3JhZ2UgOiBVbml2X21hcC50XG4gIDsgYmFja3RyYWNlX2hpc3RvcnkgOiBCYWNrdHJhY2UudCBsaXN0XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCAoXyA6IHQpID0gKClcblxubGV0IG1haW4gPVxuICB7IG1vbml0b3IgPSBNb25pdG9yLm1haW5cbiAgOyBwcmlvcml0eSA9IFByaW9yaXR5Lm5vcm1hbFxuICA7IGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5lbXB0eVxuICA7IGJhY2t0cmFjZV9oaXN0b3J5ID0gW11cbiAgfVxuOztcblxubGV0IGNyZWF0ZV9saWtlID9tb25pdG9yID9wcmlvcml0eSA/bG9jYWxfc3RvcmFnZSB0ID1cbiAgbGV0IG1vbml0b3IgPSBPcHRpb24udmFsdWUgbW9uaXRvciB+ZGVmYXVsdDp0Lm1vbml0b3IgaW5cbiAgeyBtb25pdG9yXG4gIDsgcHJpb3JpdHkgPSBPcHRpb24udmFsdWUgcHJpb3JpdHkgfmRlZmF1bHQ6dC5wcmlvcml0eVxuICA7IGxvY2FsX3N0b3JhZ2UgPSBPcHRpb24udmFsdWUgbG9jYWxfc3RvcmFnZSB+ZGVmYXVsdDp0LmxvY2FsX3N0b3JhZ2VcbiAgOyBiYWNrdHJhY2VfaGlzdG9yeSA9IHQuYmFja3RyYWNlX2hpc3RvcnlcbiAgfVxuOztcblxubGV0IGZpbmRfbG9jYWwgdCBrZXkgPSBVbml2X21hcC5maW5kIHQubG9jYWxfc3RvcmFnZSBrZXlcblxubGV0IHdpdGhfbG9jYWwgdCBrZXkgZGF0YSA9XG4gIHsgdCB3aXRoIGxvY2FsX3N0b3JhZ2UgPSBVbml2X21hcC5jaGFuZ2UgdC5sb2NhbF9zdG9yYWdlIGtleSB+ZjooZnVuIF8gLT4gZGF0YSkgfVxuOztcblxubGV0IHJlY29yZF9iYWNrdHJhY2UgdCA9XG4gIHsgdCB3aXRoIGJhY2t0cmFjZV9oaXN0b3J5ID0gQmFja3RyYWNlLmdldCAoKSA6OiB0LmJhY2t0cmFjZV9oaXN0b3J5IH1cbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgVHlwZXMuRXh0ZXJuYWxfam9iXG5cbmxldCBzZXhwX29mX3QgXyA9IFNleHAuQXRvbSBcIjxqb2I+XCJcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBQb29sXG5cbmxldCBkdW1teV9lID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxubGV0IGR1bW15X2YgOiBPYmoudCAtPiB1bml0ID0gaWdub3JlXG5sZXQgZHVtbXlfYSA6IE9iai50ID0gT2JqLnJlcHIgKClcblxudHlwZSBzbG90cyA9IChFeGVjdXRpb25fY29udGV4dC50LCBPYmoudCAtPiB1bml0LCAoT2JqLnRbQHNleHAub3BhcXVlXSkpIFNsb3RzLnQzXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPSBzbG90cyBQb29sLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID0gUG9vbC5pbnZhcmlhbnQgaWdub3JlIHRcbmxldCBjcmVhdGUgKCkgPSBjcmVhdGUgU2xvdHMudDMgfmNhcGFjaXR5OjEgfmR1bW15OihkdW1teV9lLCBkdW1teV9mLCBkdW1teV9hKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgdCA9IEpvYl9wb29sLnNsb3RzIFBvb2wuUG9pbnRlci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBFdmVudCA9IFR5cGVzLkV2ZW50XG5tb2R1bGUgSm9iID0gVHlwZXMuSm9iXG5pbmNsdWRlIFR5cGVzLkpvYl9vcl9ldmVudFxuXG4oKiBUaGlzIHJlZGVmaW5pdGlvbiBvZiBbRXZlbnRdIGlzIGhlcmUgc28gdGhlIHR5cGUgY2hlY2tzIGFyZSByaWdodCBuZXh0IHRvXG4gICBbT2JqLm1hZ2ljXXMuICopXG5tb2R1bGUgXyA6IHNpZyBlbmQgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlc1xuICBvcGVuIEV2ZW50XG5cbiAgdHlwZSBfdCA9IHQgPVxuICAgIHsgKCogbXVzdCBuZXZlciBiZSBpbW1lZGlhdGUgKilcbiAgICAgIG11dGFibGUgYWxhcm0gOiBKb2Jfb3JfZXZlbnQudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuICAgIDsgbXV0YWJsZSBhdCA6IFRpbWVfbnMudFxuICAgIDsgY2FsbGJhY2sgOiB1bml0IC0+IHVuaXRcbiAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgbXV0YWJsZSBpbnRlcnZhbCA6IFRpbWVfbnMuU3Bhbi50IG9wdGlvblxuICAgIDsgbXV0YWJsZSBuZXh0X2ZpcmVkIDogT3B0aW9uLnRcbiAgICA7IG11dGFibGUgcHJldl9maXJlZCA6IE9wdGlvbi50XG4gICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgfVxuZW5kXG5cbm1vZHVsZSBfIDogc2lnIGVuZCA9IHN0cnVjdFxuICBtb2R1bGUgRW5zdXJlX3ByaXZhdGVfaW50IChNIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIGludFxuICAgIGVuZCkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIF90ID0gTS50XG4gIGVuZFxuXG4gIGluY2x1ZGUgRW5zdXJlX3ByaXZhdGVfaW50IChKb2IpXG5lbmRcblxubGV0IG9mX2V2ZW50IGV2ZW50IDogdCA9IE9iai5tYWdpYyAoZXZlbnQgOiBFdmVudC50KVxubGV0IG9mX2pvYiBqb2IgOiB0ID0gT2JqLm1hZ2ljIChqb2IgOiBKb2IudClcbmxldCBpc19ldmVudCAodCA6IHQpID0gT2JqLmlzX2Jsb2NrIChPYmoucmVwciB0KVxubGV0IGlzX2pvYiAodCA6IHQpID0gT2JqLmlzX2ludCAoT2JqLnJlcHIgdClcblxubW9kdWxlIE1hdGNoID0gc3RydWN0XG4gIHR5cGUgXyBraW5kID1cbiAgICB8IEV2ZW50IDogRXZlbnQudCBraW5kXG4gICAgfCBKb2IgOiBKb2IudCBraW5kXG5cbiAgdHlwZSBwYWNrZWQgPSBLIDogXyBraW5kIC0+IHBhY2tlZCBbQEB1bmJveGVkXVxuXG4gIGxldCBraW5kIHQgPSBpZiBpc19ldmVudCB0IHRoZW4gSyBFdmVudCBlbHNlIEsgSm9iXG4gIGxldCBwcm9qZWN0ICh0eXBlIGEpIChfIDogYSBraW5kKSBqb2Jfb3JfZXZlbnQgPSAoT2JqLm1hZ2ljIDogdCAtPiBhKSBqb2Jfb3JfZXZlbnRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5pbmNsdWRlIFR5cGVzLlNjaGVkdWxlclxuXG5sZXQgZXZlbnRzIHQgPSB0LnRpbWVfc291cmNlLmV2ZW50c1xuXG5sZXQgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgPVxuICAoKiBBdm9pZCBhIGNhbWxfbW9kaWZ5IGluIG1vc3QgY2FzZXMuICopXG4gIGlmIG5vdCAocGh5c19lcXVhbCB0LmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHRoZW4gdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDwtIGV4ZWN1dGlvbl9jb250ZXh0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMFxuXG5sZXQgZHVtbXlfZSA9IEV4ZWN1dGlvbl9jb250ZXh0Lm1haW5cbmxldCBkdW1teV9mIDogT2JqLnQgLT4gdW5pdCA9IGlnbm9yZVxubGV0IGR1bW15X2EgOiBPYmoudCA9IE9iai5yZXByICgpXG5sZXQgc2xvdHNfcGVyX2VsdCA9IDNcblxubW9kdWxlIEEgPSBVbmlmb3JtX2FycmF5XG5cbigqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBzcGVjaWFsaXplZCBbRmxhdF9xdWV1ZV0sIGRvbmUgZm9yIHJlYXNvbnMgb2Ygc3BlZWQuICopXG50eXBlIHQgPSBUeXBlcy5Kb2JfcXVldWUudCA9XG4gIHsgbXV0YWJsZSBudW1fam9ic19ydW4gOiBpbnRcbiAgOyBtdXRhYmxlIGpvYnNfbGVmdF90aGlzX2N5Y2xlIDogaW50XG4gIDsgKCogW2pvYnNdIGlzIGFuIGFycmF5IG9mIGxlbmd0aCBbY2FwYWNpdHkgdCAqIHNsb3RzX3Blcl9lbHRdLCB3aGVyZSBlYWNoIGVsdCBoYXMgdGhlXG4gICAgICAgdGhyZWUgY29tcG9uZW50cyBvZiBhIGpvYiAoW2V4ZWN1dGlvbl9jb250ZXh0XSwgW2ZdLCBbYV0pIGluIGNvbnNlY3V0aXZlIHNwb3RzIGluXG4gICAgICAgW2pvYnNdLiAgW2VucXVldWVdIGRvdWJsZXMgdGhlIGxlbmd0aCBvZiBbam9ic10gaWYgW2pvYnNdIGlzIGZ1bGwuICBbam9ic10gbmV2ZXJcbiAgICAgICBzaHJpbmtzLiAgW2pvYnNdIGlzIHNvbWV3aGF0IGxpa2UgYSBbQ29yZS5Qb29sXSBzcGVjaWFsaXplZCB0byAzLXR1cGxlczsgd2VcbiAgICAgICBkb24ndCB1c2UgW1Bvb2xdIGJlY2F1c2UgdGhhdCBpbXBsZW1lbnRzIGEgc2V0LCB3aGVyZSBbam9ic10gaXMgYSBxdWV1ZS4gKilcbiAgICBtdXRhYmxlIGpvYnMgOiAoT2JqLnQgQS50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgKCogW21hc2tdIGlzIFtjYXBhY2l0eSB0IC0gMV0sIGFuZCBpcyB1c2VkIGZvciBxdWlja2x5IGNvbXB1dGluZyBbaSBtb2QgKGNhcGFjaXR5XG4gICAgICAgdCldICopXG4gICAgbXV0YWJsZSBtYXNrIDogaW50XG4gIDsgKCogW2Zyb250XSBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGpvYiBpbiB0aGUgcXVldWUuICBUaGUgYXJyYXkgaW5kZXggb2YgdGhhdCBqb2Inc1xuICAgICAgIGV4ZWN1dGlvbiBjb250ZXh0IGlzIFtmcm9udCAqIHNsb3RzX3Blcl9lbHRdLiAqKVxuICAgIG11dGFibGUgZnJvbnQgOiBpbnRcbiAgOyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBvZmZzZXQgdCBpID0gKHQuZnJvbnQgKyBpKSBsYW5kIHQubWFzayAqIHNsb3RzX3Blcl9lbHRcbmxldCBjYXBhY2l0eSB0ID0gdC5tYXNrICsgMVxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5udW1fam9ic19ydW46KGNoZWNrIChmdW4gbnVtX2pvYnNfcnVuIC0+IGFzc2VydCAobnVtX2pvYnNfcnVuID49IDApKSlcbiAgICAgIH5qb2JzX2xlZnRfdGhpc19jeWNsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gam9ic19sZWZ0X3RoaXNfY3ljbGUgLT4gYXNzZXJ0IChqb2JzX2xlZnRfdGhpc19jeWNsZSA+PSAwKSkpXG4gICAgICB+am9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gam9icyAtPlxuICAgICAgICAgICBmb3IgaSA9IDAgdG8gdC5sZW5ndGggLSAxIGRvXG4gICAgICAgICAgICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50XG4gICAgICAgICAgICAgICAoT2JqLm9iaiAoQS5nZXQgam9icyAob2Zmc2V0IHQgaSkpIDogRXhlY3V0aW9uX2NvbnRleHQudClcbiAgICAgICAgICAgZG9uZSkpXG4gICAgICB+bWFzazpcbiAgICAgICAgKGNoZWNrIChmdW4gbWFzayAtPlxuICAgICAgICAgICBsZXQgY2FwYWNpdHkgPSBtYXNrICsgMSBpblxuICAgICAgICAgICBhc3NlcnQgKEludC5pc19wb3cyIGNhcGFjaXR5KTtcbiAgICAgICAgICAgYXNzZXJ0IChjYXBhY2l0eSAqIHNsb3RzX3Blcl9lbHQgPSBBLmxlbmd0aCB0LmpvYnMpKSlcbiAgICAgIH5mcm9udDpcbiAgICAgICAgKGNoZWNrIChmdW4gZnJvbnQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChmcm9udCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChmcm9udCA8IGNhcGFjaXR5IHQpKSlcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPD0gY2FwYWNpdHkgdCkpKSlcbjs7XG5cbmxldCBjcmVhdGVfYXJyYXkgfmNhcGFjaXR5ID0gQS5jcmVhdGVfb2JqX2FycmF5IH5sZW46KGNhcGFjaXR5ICogc2xvdHNfcGVyX2VsdClcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCBjYXBhY2l0eSA9IDEgaW5cbiAgeyBudW1fam9ic19ydW4gPSAwXG4gIDsgam9ic19sZWZ0X3RoaXNfY3ljbGUgPSAwXG4gIDsgam9icyA9IGNyZWF0ZV9hcnJheSB+Y2FwYWNpdHlcbiAgOyBtYXNrID0gY2FwYWNpdHkgLSAxXG4gIDsgZnJvbnQgPSAwXG4gIDsgbGVuZ3RoID0gMFxuICB9XG47O1xuXG5sZXQgY2xlYXIgdCA9XG4gIHQuZnJvbnQgPC0gMDtcbiAgdC5sZW5ndGggPC0gMDtcbiAgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA8LSAwXG47O1xuXG5sZXQgZ3JvdyB0ID1cbiAgbGV0IG9sZF9jYXBhY2l0eSA9IGNhcGFjaXR5IHQgaW5cbiAgbGV0IG5ld19jYXBhY2l0eSA9IG9sZF9jYXBhY2l0eSAqIDIgaW5cbiAgbGV0IG9sZF9qb2JzID0gdC5qb2JzIGluXG4gIGxldCBvbGRfZnJvbnQgPSB0LmZyb250IGluXG4gIGxldCBsZW4xID0gSW50Lm1pbiB0Lmxlbmd0aCAob2xkX2NhcGFjaXR5IC0gb2xkX2Zyb250KSAqIHNsb3RzX3Blcl9lbHQgaW5cbiAgbGV0IGxlbjIgPSAodC5sZW5ndGggKiBzbG90c19wZXJfZWx0KSAtIGxlbjEgaW5cbiAgbGV0IG5ld19qb2JzID0gY3JlYXRlX2FycmF5IH5jYXBhY2l0eTpuZXdfY2FwYWNpdHkgaW5cbiAgQS5ibGl0XG4gICAgfmxlbjpsZW4xXG4gICAgfnNyYzpvbGRfam9ic1xuICAgIH5zcmNfcG9zOihvbGRfZnJvbnQgKiBzbG90c19wZXJfZWx0KVxuICAgIH5kc3Q6bmV3X2pvYnNcbiAgICB+ZHN0X3BvczowO1xuICBBLmJsaXQgfmxlbjpsZW4yIH5zcmM6b2xkX2pvYnMgfnNyY19wb3M6MCB+ZHN0Om5ld19qb2JzIH5kc3RfcG9zOmxlbjE7XG4gIHQubWFzayA8LSBuZXdfY2FwYWNpdHkgLSAxO1xuICB0LmpvYnMgPC0gbmV3X2pvYnM7XG4gIHQuZnJvbnQgPC0gMFxuOztcblxubGV0IHNldCAodHlwZSBhKSB0IGkgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IG9mZnNldCA9IG9mZnNldCB0IGkgaW5cbiAgQS51bnNhZmVfc2V0IHQuam9icyBvZmZzZXQgKE9iai5yZXByIChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpKTtcbiAgQS51bnNhZmVfc2V0IHQuam9icyAob2Zmc2V0ICsgMSkgKE9iai5yZXByIChmIDogYSAtPiB1bml0KSk7XG4gIEEudW5zYWZlX3NldCB0LmpvYnMgKG9mZnNldCArIDIpIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBpZiB0Lmxlbmd0aCA9IGNhcGFjaXR5IHQgdGhlbiBncm93IHQ7XG4gIHNldCB0IHQubGVuZ3RoIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggKyAxXG47O1xuXG5sZXQgc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJKb2JzLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSBnb3QgbmVnYXRpdmUgbnVtYmVyXCIgKG4gOiBpbnQpICh0IDogdCldO1xuICB0LmpvYnNfbGVmdF90aGlzX2N5Y2xlIDwtIG5cbjs7XG5cbmxldCBjYW5fcnVuX2Ffam9iIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdC5qb2JzX2xlZnRfdGhpc19jeWNsZSA+IDBcblxubGV0IHJ1bl9qb2IgdCAoc2NoZWR1bGVyIDogU2NoZWR1bGVyLnQpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIHQubnVtX2pvYnNfcnVuIDwtIHQubnVtX2pvYnNfcnVuICsgMTtcbiAgU2NoZWR1bGVyLnNldF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQ7XG4gIGYgYVxuOztcblxubGV0IHJ1bl9leHRlcm5hbF9qb2JzIHQgKHNjaGVkdWxlciA6IFNjaGVkdWxlci50KSA9XG4gIGxldCBleHRlcm5hbF9qb2JzID0gc2NoZWR1bGVyLmV4dGVybmFsX2pvYnMgaW5cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIGV4dGVybmFsX2pvYnMgPiAwIGRvXG4gICAgbGV0IChFeHRlcm5hbF9qb2IuVCAoZXhlY3V0aW9uX2NvbnRleHQsIGYsIGEpKSA9XG4gICAgICBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biBleHRlcm5hbF9qb2JzXG4gICAgaW5cbiAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuICBkb25lXG47O1xuXG5sZXQgcnVuX2pvYnMgKHR5cGUgYSkgdCBzY2hlZHVsZXIgPVxuICAoKiBXZSBkbyB0aGUgW3RyeS13aXRoXSBvdXRzaWRlIG9mIHRoZSBbd2hpbGVdIGJlY2F1c2UgaXQgaXMgY2hlYXBlciB0aGFuIGRvaW5nIGFcbiAgICAgW3RyeS13aXRoXSBmb3IgZWFjaCBqb2IuICopXG4gICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYmVmb3JlIGVudGVyaW5nIHRoZSBsb29wLCBzaW5jZSBpdCBtaWdodCBlbnF1ZXVlIGEgam9iLFxuICAgICBjaGFuZ2luZyBbdC5sZW5ndGhdLiAqKVxuICB0cnlcbiAgICBydW5fZXh0ZXJuYWxfam9icyB0IHNjaGVkdWxlcjtcbiAgICB3aGlsZSBjYW5fcnVuX2Ffam9iIHQgZG9cbiAgICAgIGxldCB0aGlzX2pvYiA9IG9mZnNldCB0IDAgaW5cbiAgICAgIGxldCBleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQgPVxuICAgICAgICBPYmoub2JqIChBLnVuc2FmZV9nZXQgdC5qb2JzIHRoaXNfam9iKVxuICAgICAgaW5cbiAgICAgIGxldCBmIDogYSAtPiB1bml0ID0gT2JqLm9iaiAoQS51bnNhZmVfZ2V0IHQuam9icyAodGhpc19qb2IgKyAxKSkgaW5cbiAgICAgIGxldCBhIDogYSA9IE9iai5vYmogKEEudW5zYWZlX2dldCB0LmpvYnMgKHRoaXNfam9iICsgMikpIGluXG4gICAgICAoKiBXZSBjbGVhciBvdXQgdGhlIGpvYiByaWdodCBub3cgc28gdGhhdCBpdCBpc24ndCBsaXZlIGF0IHRoZSBuZXh0IG1pbm9yXG4gICAgICAgICBjb2xsZWN0aW9uLiAgV2UgdHJpZWQgbm90IGRvaW5nIHRoaXMgYW5kIHNhdyBzaWduaWZpY2FudCAoMTUlIG9yIHNvKSBwZXJmb3JtYW5jZVxuICAgICAgICAgaGl0cyBkdWUgdG8gc3B1cmlvdXMgcHJvbW90aW9uLiAqKVxuICAgICAgc2V0IHQgMCBkdW1teV9lIGR1bW15X2YgZHVtbXlfYTtcbiAgICAgIHQuZnJvbnQgPC0gKHQuZnJvbnQgKyAxKSBsYW5kIHQubWFzaztcbiAgICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoIC0gMTtcbiAgICAgIHQuam9ic19sZWZ0X3RoaXNfY3ljbGUgPC0gdC5qb2JzX2xlZnRfdGhpc19jeWNsZSAtIDE7XG4gICAgICAoKiBJdCBpcyBPSyBpZiBbcnVuX2pvYl0gb3IgW3J1bl9leHRlcm5hbF9qb2JzXSByYWlzZXMsIGluIHdoaWNoIGNhc2UgdGhlIGV4biBpc1xuICAgICAgICAgaGFuZGxlZCBieSB0aGUgb3V0ZXIgdHJ5LXdpdGguICBUaGUgb25seSBzaWRlIGVmZmVjdHMgd2UgaGF2ZSBkb25lIGFyZSB0byB0YWtlXG4gICAgICAgICB0aGUgam9iIG91dCBvZiB0aGUgcXVldWUgYW5kIGRlY3JlbWVudCBbam9ic19sZWZ0X3RoaXNfY3ljbGVdLiAgW3J1bl9qb2JdIG9yXG4gICAgICAgICBbcnVuX2V4dGVybmFsX2pvYnNdIG1heSBzaWRlIGVmZmVjdCBbdF0sIGVpdGhlciBieSBlbnF1ZXVlaW5nIGpvYnMsIG9yIGJ5XG4gICAgICAgICBjbGVhcmluZyBbdF0uICopXG4gICAgICBydW5fam9iIHQgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYTtcbiAgICAgICgqIFtydW5fZXh0ZXJuYWxfam9ic10gYXQgZWFjaCBpdGVyYXRpb24gb2YgdGhlIFt3aGlsZV0gbG9vcCwgZm9yIGZhaXJuZXNzLiAqKVxuICAgICAgcnVuX2V4dGVybmFsX2pvYnMgdCBzY2hlZHVsZXJcbiAgICBkb25lO1xuICAgIE9rICgpXG4gIHdpdGhcbiAgfCBleG4gLT5cbiAgICAoKiBXZSBjYWxsIFtFeG4uYmFja3RyYWNlXSBpbW1lZGlhdGVseSBhZnRlciBjYXRjaGluZyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLCB0b1xuICAgICAgIGVuc3VyZSB0aGVyZSBpcyBubyBpbnRlcnZlbmluZyBjb2RlIHRoYXQgaW50ZXJmZXJlcyB3aXRoIHRoZSBnbG9iYWwgYmFja3RyYWNlXG4gICAgICAgc3RhdGUuICopXG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgaW5cbiAgICBFcnJvciAoZXhuLCBiYWNrdHJhY2UpXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSBUaW1lX25zID0gc3RydWN0XG4gIGluY2x1ZGUgVGltZV9uc1xuXG4gIGV4dGVybmFsIGZvcm1hdCA6IGZsb2F0IC0+IHN0cmluZyAtPiBzdHJpbmcgPSBcImNvcmVfdGltZV9uc19mb3JtYXRcIlxuXG4gICgqIFdlIHVzZSBhIG1vcmUgcGxlYXNhbnQgZm9ybWF0IHRoYW4gW0NvcmUuVGltZV9ucy5zZXhwX29mX3RdLFxuICAgICB3aGljaCBoYXMgdG8gYmUgbWVzc2llciBmb3Igcm91bmQgdHJpcHBhYmlsaXR5LiAqKVxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIFslc2V4cFxuICAgICAgKGZvcm1hdCAodCB8PiB0b19zcGFuX3NpbmNlX2Vwb2NoIHw+IFNwYW4udG9fc2VjKSBcIiVZLSVtLSVkVCVIOiVNOiVTJXpcIiA6IHN0cmluZyldXG4gIDs7XG5lbmRcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIGluY2x1ZGUgVGltaW5nX3doZWVsLkFsYXJtXG5cbiAgbGV0IGlzX251bGwgdCA9IHBoeXNfZXF1YWwgdCAobnVsbCAoKSlcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuXG5sZXQgZGVmYXVsdF90aW1pbmdfd2hlZWxfY29uZmlnID1cbiAgKCogMS84dGggb2YgYSBtaWxsaXNlY29uZCBhbGFybV9wcmVjaXNpb24gc2VlbXMgc3VmZmljaWVudCB0byBhdm9pZCBoYXZpbmcgbWFueSBhbGFybXNcbiAgICAgaW4gdGhlIHNhbWUgaW50ZXJ2YWwsIHdoaWNoIGF2b2lkcyBxdWFkcmF0aWMgaW5zZXJ0aW9uIHNvcnQgd2hlbiBmaXJpbmcgYWxhcm1zLiAgQW5kXG4gICAgIHRoZSBsZXZlbCBiaXRzIGdpdmUgdXMgbGV2ZWxzIG9mID4xcywgPjFtLCA+MWgsID4xZC4gIFNlZSB0ZXN0IGluXG4gICAgIFsuLi90ZXN0L3Rlc3Rfc3luY2hyb25vdXNfdGltZV9zb3VyY2UubWxdLiAqKVxuICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgIH5hbGFybV9wcmVjaXNpb246QWxhcm1fcHJlY2lzaW9uLihkaXYgYWJvdXRfb25lX21pbGxpc2Vjb25kIH5wb3cyOjMpXG4gICAgfmxldmVsX2JpdHM6KFRpbWluZ193aGVlbC5MZXZlbF9iaXRzLmNyZWF0ZV9leG4gWyAxMzsgNjsgNjsgNSBdKVxuICAgICgpXG47O1xuXG50eXBlIGNhbGxiYWNrID0gdW5pdCAtPiB1bml0XG5cbm1vZHVsZSBJZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBtb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU3RhdHVzID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBUeXBlcy5FdmVudC5TdGF0dXMudCA9XG4gICAgICAgIHwgRmlyZWQgKCogaW4gW2ZpcmVkX2V2ZW50c10sIHJlYWR5IHRvIHJ1biAqKVxuICAgICAgICB8IEhhcHBlbmluZyAoKiBjdXJyZW50bHkgcnVubmluZyB0aGUgY2FsbGJhY2sgKilcbiAgICAgICAgfCBTY2hlZHVsZWQgKCogaW4gdGhlIHRpbWluZyB3aGVlbCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkICgqIG5vdCBpbiB0aW1pbmcgd2hlZWwgb3IgW2ZpcmVkX2V2ZW50c10gKilcbiAgICAgIFtAQGRlcml2aW5nIGNvbXBhcmUsIGVxdWFsLCBzZXhwX29mXVxuXG4gICAgICBsZXQgdHJhbnNpdGlvbl9pc19hbGxvd2VkIH5mcm9tIH50b18gPVxuICAgICAgICBtYXRjaCBmcm9tLCB0b18gd2l0aFxuICAgICAgICB8IEZpcmVkLCBIYXBwZW5pbmcgKCogc3RhcnRlZCBydW5uaW5nIGNhbGxiYWNrICopXG4gICAgICAgIHwgRmlyZWQsIFVuc2NoZWR1bGVkICgqIGFib3J0ZWQgKilcbiAgICAgICAgKCogW3Jlc2NoZWR1bGVfKl0gZ29lcyB0aHJvdWdoIGFuIGludGVybWVkaWF0ZSBbRmlyZWQsIFVuc2NoZWR1bGVkXSBzdGF0ZSxcbiAgICAgICAgICAgc28gd2UgbmV2ZXIgdHJhbnNpdGlvbiBmcm9tIFtGaXJlZF0gZGlyZWN0bHkgdG8gW1NjaGVkdWxlZF0uICopXG4gICAgICAgIHwgSGFwcGVuaW5nLCBTY2hlZHVsZWQgKCogZm9yIHJlcGVhdGluZyBldmVudHMgKilcbiAgICAgICAgfCBIYXBwZW5pbmcsIFVuc2NoZWR1bGVkICgqIGV2ZW50IGNhbGxiYWNrIGZpbmlzaGVkICopXG4gICAgICAgIHwgU2NoZWR1bGVkLCBGaXJlZCAoKiBtb3ZlZCBmcm9tIHRpbWluZyB3aGVlbCB0byBbZmlyZWRfZXZlbnRzXSAqKVxuICAgICAgICB8IFNjaGVkdWxlZCwgVW5zY2hlZHVsZWQgKCogYWJvcnRlZCAqKVxuICAgICAgICB8IFVuc2NoZWR1bGVkLCBGaXJlZCAoKiBldmVudCBzY2hlZHVsZWQgaW4gdGhlIHBhc3QgKilcbiAgICAgICAgfCBVbnNjaGVkdWxlZCwgU2NoZWR1bGVkICgqIGV2ZW50IHNjaGVkdWxlZCBpbiB0aGUgZnV0dXJlICopIC0+IHRydWVcbiAgICAgICAgfCAoRmlyZWQgfCBIYXBwZW5pbmcgfCBTY2hlZHVsZWQgfCBVbnNjaGVkdWxlZCksIF8gLT4gZmFsc2VcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICB0eXBlIGV2ZW50ID0gVHlwZXMuRXZlbnQudFxuXG4gICAgbGV0IHNleHBfb2ZfZXZlbnRcbiAgICAgICAgICAoeyBhbGFybSA9IF9cbiAgICAgICAgICAgOyBhdFxuICAgICAgICAgICA7IGNhbGxiYWNrID0gX1xuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gX1xuICAgICAgICAgICA7IGludGVydmFsXG4gICAgICAgICAgIDsgbmV4dF9maXJlZCA9IF9cbiAgICAgICAgICAgOyBwcmV2X2ZpcmVkID0gX1xuICAgICAgICAgICA7IHN0YXR1c1xuICAgICAgICAgICB9IDpcbiAgICAgICAgICAgICBldmVudClcbiAgICAgID1cbiAgICAgIFslc2V4cFxuICAgICAgICB7IHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICAgICAgOyBpbnRlcnZhbCA6IChUaW1lX25zLlNwYW4udCBvcHRpb25bQHNleHAub3B0aW9uXSlcbiAgICAgICAgfV1cbiAgICA7O1xuXG4gICAgbW9kdWxlIE9wdGlvbiA9IHN0cnVjdFxuICAgICAgKCogVGhpcyByZWRlZmluaXRpb24gb2YgW0V2ZW50XSBpcyBoZXJlIHNvIHRoZSB0eXBlIGNoZWNrcyBhcmUgcmlnaHQgbmV4dFxuICAgICAgICAgdG8gW09iai5tYWdpY11zLiAqKVxuICAgICAgbW9kdWxlIEV2ZW50X2lzX2Jsb2NrIDogc2lnIGVuZCA9IHN0cnVjdFxuICAgICAgICBvcGVuIFR5cGVzXG4gICAgICAgIG9wZW4gRXZlbnRcblxuICAgICAgICB0eXBlIF90ID0gdCA9XG4gICAgICAgICAgeyAoKiBtdXN0IG5ldmVyIGJlIGltbWVkaWF0ZSAqKVxuICAgICAgICAgICAgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IFRpbWluZ193aGVlbC5BbGFybS50XG4gICAgICAgICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgICAgICAgOyBjYWxsYmFjayA6IHVuaXQgLT4gdW5pdFxuICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gICAgICAgICAgOyBtdXRhYmxlIGludGVydmFsIDogVGltZV9ucy5TcGFuLnQgb3B0aW9uXG4gICAgICAgICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgICAgICAgIDsgbXV0YWJsZSBwcmV2X2ZpcmVkIDogT3B0aW9uLnRcbiAgICAgICAgICA7IG11dGFibGUgc3RhdHVzIDogU3RhdHVzLnRcbiAgICAgICAgICB9XG4gICAgICBlbmRcblxuICAgICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQuT3B0aW9uLnRcblxuICAgICAgKCogVXNpbmcgYW4gaW1tZWRpYXRlIHJhdGhlciB0aGFuIGEgc3RhdGljYWxseS1hbGxvY2F0ZWQgcmVjb3JkIGhlcmUgc2VlbXMgdG9cbiAgICAgICAgIGltcHJvdmUgcGVyZm9ybWFuY2Ugbm90aWNlYWJseSAoWy4uL2JlbmNoL2Jpbi9iZW5jaF90aW1lX3NvdXJjZS5leGVdIGJlbmNobWFya1xuICAgICAgICAgaXMgZmFzdGVyIGJ5IH4xMG5zIHBlciBhbGFybSksIHByZXN1bWFibHkgYmVjYXVzZSBpdCBhdm9pZHMgdGhlIGV4cGVuc2l2ZVxuICAgICAgICAgcGFydHMgb2YgY2FtbF9tb2RpZnkuICopXG4gICAgICBsZXQgbm9uZSA9IChPYmoubWFnaWMgTm9uZSA6IHQpICgqIGFuIGFyYml0cmFyeSBpbW1lZGlhdGUgKilcblxuICAgICAgbGV0IHNvbWUgPSAoT2JqLm1hZ2ljIDogVHlwZXMuRXZlbnQudCAtPiB0KVxuICAgICAgbGV0IGlzX25vbmUgdCA9IHBoeXNfZXF1YWwgdCBub25lXG4gICAgICBsZXQgaXNfc29tZSB0ID0gbm90IChpc19ub25lIHQpXG4gICAgICBsZXQgZmlyc3Rfc29tZSB0MSB0MiA9IGlmIGlzX3NvbWUgdDEgdGhlbiB0MSBlbHNlIHQyXG5cbiAgICAgIG1vZHVsZSBPcHRpb25hbF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgICAgbW9kdWxlIE9wdGlvbmFsX3N5bnRheCA9IHN0cnVjdFxuICAgICAgICAgIGxldCBpc19ub25lID0gaXNfbm9uZVxuICAgICAgICAgIGxldCB1bnNhZmVfdmFsdWUgPSAoT2JqLm1hZ2ljIDogdCAtPiBUeXBlcy5FdmVudC50KVxuICAgICAgICBlbmRcbiAgICAgIGVuZFxuXG4gICAgICBvcGVuIE9wdGlvbmFsX3N5bnRheFxuXG4gICAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgICBtYXRjaCVvcHRpb25hbCB0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFslc2V4cCAoKV1cbiAgICAgICAgfCBTb21lIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBldmVudCldXG4gICAgICA7O1xuXG4gICAgICBsZXQgdmFsdWUgdCB+ZGVmYXVsdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCB2YWx1ZV9leG4gdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gcmFpc2VfcyBbJXNleHAgXCJbU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuT3B0aW9uLnZhbHVlX2V4biBOb25lXVwiXVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gZXZlbnRcbiAgICAgIDs7XG5cbiAgICAgIGxldCB0b19vcHRpb24gdCA9XG4gICAgICAgIG1hdGNoJW9wdGlvbmFsIHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZXZlbnQgLT4gU29tZSBldmVudFxuICAgICAgOztcblxuICAgICAgbGV0IG9mX29wdGlvbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgIHwgU29tZSBldmVudCAtPiBzb21lIGV2ZW50XG4gICAgICA7O1xuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gVHlwZXMuRXZlbnQudCA9XG4gICAgICB7ICgqIFthbGFybV0gaXMgbm9uLW51bGwgaWZmIHRoZSBldmVudCBpcyBpbiB0aGUgdGltaW5nIHdoZWVsLiAqKVxuICAgICAgICBtdXRhYmxlIGFsYXJtIDogSm9iX29yX2V2ZW50LnQgQWxhcm0udFxuICAgICAgOyBtdXRhYmxlIGF0IDogVGltZV9ucy50XG4gICAgICA7IGNhbGxiYWNrIDogdW5pdCAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbaW50ZXJ2YWxdIGlzIHRoZSBwZXJpb2QgZm9yIHRoZSBwZXJpb2RpYyBldmVudHMuICopXG4gICAgICAgIG11dGFibGUgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udCBvcHRpb25cbiAgICAgIDsgKCogW25leHRfZmlyZWRdIGFuZCBbcHJldl9maXJlZF0gY3JlYXRlIGEgZG91Ymx5LWxpbmtlZCAobm9uLWNpcmN1bGFyKSBsaXN0IG9mXG4gICAgICAgICAgIGZpcmVkIGV2ZW50cywgbGlua2VkIHZpYSB0aGVzZSBmaWVsZHMuIEFuIGV2ZW50IGlzIGFkZGVkIHRvIHRoZSBsaXN0IHdoZW5cbiAgICAgICAgICAgaXQgZmlyZXMsIGVpdGhlciBiZWNhdXNlIGl0IGlzIGFkZGVkIHdpdGggYSB0aW1lIGluIHRoZSBwYXN0LCBvclxuICAgICAgICAgICBiZWNhdXNlIHRpbWUgYWR2YW5jZXMuIFthZHZhbmNlX2J5X2FsYXJtc10gaXRlcmF0ZXMgb3ZlciB0aGUgZXZlbnRzXG4gICAgICAgICAgIGluIFtuZXh0X2ZpcmVkXSBhbmQgcnVucyB0aGVtLCBlbXB0eWluZyB0aGUgbGlzdC4gW25vbmVdIGlzIHVzZWQgdG9cbiAgICAgICAgICAgaW5kaWNhdGUgdGhlIGVuZCBvZiB0aGUgbGlua2VkIGxpc3Qgb2YgZmlyZWQgZXZlbnRzLiAqKVxuICAgICAgICBtdXRhYmxlIG5leHRfZmlyZWQgOiBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHByZXZfZmlyZWQgOiBPcHRpb24udFxuICAgICAgOyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgbGV0IHNleHBfb2ZfdCA9IFslc2V4cF9vZjogZXZlbnRdXG5cbiAgICBsZXQgaW52YXJpYW50IHQgPVxuICAgICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgICBGaWVsZHMuaXRlclxuICAgICAgICAgIH5hbGFybTpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBib29sXVxuICAgICAgICAgICAgICAgICAoQWxhcm0uaXNfbnVsbCBhbGFybSlcbiAgICAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggdC5zdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEZpcmVkIHwgSGFwcGVuaW5nIHwgVW5zY2hlZHVsZWQgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB8IFNjaGVkdWxlZCAtPiBmYWxzZSkpKVxuICAgICAgICAgIH5hdDppZ25vcmVcbiAgICAgICAgICB+Y2FsbGJhY2s6aWdub3JlXG4gICAgICAgICAgfmV4ZWN1dGlvbl9jb250ZXh0Omlnbm9yZVxuICAgICAgICAgIH5pbnRlcnZhbDppZ25vcmVcbiAgICAgICAgICB+bmV4dF9maXJlZDpcbiAgICAgICAgICAgIChjaGVjayAoZnVuIG5leHRfZmlyZWQgLT5cbiAgICAgICAgICAgICAgIG1hdGNoJW9wdGlvbmFsIChuZXh0X2ZpcmVkIDogT3B0aW9uLnQpIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAoKiBbbmV4dF9maXJlZF0gY2FuIGJlIFtOb25lXSBldmVuIGlmIHRoZSBldmVudCBzdGF0dXMgaXMgRmlyZWQsIGFzc3VtaW5nXG4gICAgICAgICAgICAgICAgICAgIGl0J3MgYXQgdGhlIGVuZCBvZiB0aGUgZmlyZWQgZXZlbnRzIGxpc3QgKilcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgIHwgU29tZSBuZXh0X2ZpcmVkIC0+XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFN0YXR1cy50XSB0LnN0YXR1cyB+ZXhwZWN0OkZpcmVkO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgKHBoeXNfZXF1YWwgKE9wdGlvbi5zb21lIHQpIG5leHRfZmlyZWQucHJldl9maXJlZCkpKVxuICAgICAgICAgIH5wcmV2X2ZpcmVkOlxuICAgICAgICAgICAgKGNoZWNrIChmdW4gcHJldl9maXJlZCAtPlxuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwgKHByZXZfZmlyZWQgOiBPcHRpb24udCkgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICgqIFtwcmV2X2ZpcmVkXSBjYW4gYmUgW05vbmVdIGV2ZW4gaWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBGaXJlZCwgYXNzdW1pbmdcbiAgICAgICAgICAgICAgICAgICAgaXQncyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJlZCBldmVudHMgbGlzdCAqKVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgfCBTb21lIHByZXZfZmlyZWQgLT5cbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogU3RhdHVzLnRdIHQuc3RhdHVzIH5leHBlY3Q6RmlyZWQ7XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCAoT3B0aW9uLnNvbWUgdCkgcHJldl9maXJlZC5uZXh0X2ZpcmVkKSkpXG4gICAgICAgICAgfnN0YXR1czppZ25vcmUpXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzIHQgdG9fID1cbiAgICAgIGxldCBmcm9tID0gdC5zdGF0dXMgaW5cbiAgICAgIGlmIG5vdCAoU3RhdHVzLnRyYW5zaXRpb25faXNfYWxsb3dlZCB+ZnJvbSB+dG9fKVxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBbJWhlcmVdXG4gICAgICAgICAgICAgIFwiYnVnIC0tIHNldF9zdGF0dXMgdHJhbnNpdGlvbiBub3QgYWxsb3dlZFwiXG4gICAgICAgICAgICAgIChmcm9tIDogU3RhdHVzLnQpXG4gICAgICAgICAgICAgICh0b18gOiBTdGF0dXMudClcbiAgICAgICAgICAgICAgfmV2ZW50Oih0IDogdCldO1xuICAgICAgdC5zdGF0dXMgPC0gdG9fXG4gICAgOztcblxuICAgIGxldCBzZXRfc3RhdHVzX2lmIH5pcyB0IHRvXyA9IGlmIFN0YXR1cy5lcXVhbCBpcyB0LnN0YXR1cyB0aGVuIHNldF9zdGF0dXMgdCB0b19cbiAgICBsZXQgc2NoZWR1bGVkX2F0ID0gYXRcbiAgZW5kXG5cbiAgbW9kdWxlIEpvYl9vcl9ldmVudCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgSm9iX29yX2V2ZW50XG5cbiAgICBsZXQgc2V4cF9vZl90IHQgPVxuICAgICAgbGV0IG9wZW4gSm9iX29yX2V2ZW50Lk1hdGNoIGluXG4gICAgICBsZXQgKEsgaykgPSBraW5kIHQgaW5cbiAgICAgIG1hdGNoIGssIHByb2plY3QgayB0IHdpdGhcbiAgICAgIHwgRXZlbnQsIGV2ZW50IC0+IFslc2V4cCAoZXZlbnQgOiBFdmVudC50KV1cbiAgICAgIHwgSm9iLCBfIC0+XG4gICAgICAgICgqIFdlIGRvbid0IGRpc3BsYXkgdGhlIFtKb2IudF1zIGluIFtldmVudHNdIGJlY2F1c2UgdGhvc2UgYXJlXG4gICAgICAgICAgIHBvb2wgcG9pbnRlcnMsIHdoaWNoIGFyZSB1bmluZm9ybWF0aXZlLiAqKVxuICAgICAgICBbJW1lc3NhZ2UgXCI8Sm9iLnQ+XCJdXG4gICAgOztcbiAgZW5kXG5cbiAgdHlwZSAtJ3J3IHQgPSAncncgVHlwZXMuVGltZV9zb3VyY2UudDEgPVxuICAgIHsgaWQgOiBJZC50XG4gICAgOyAoKiBbYWR2YW5jZV9lcnJvcnNdIGFjY3VtdWxhdGVzIGVycm9ycyByYWlzZWQgYnkgYWxhcm1zIHJ1biBieVxuICAgICAgICAgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYWR2YW5jZV9lcnJvcnMgOiBFcnJvci50IGxpc3RcbiAgICA7ICgqIFthbV9hZHZhbmNpbmddIGlzIHRydWUgb25seSBkdXJpbmcgW2FkdmFuY2VfYnlfYWxhcm1zXSwgYW5kIGlzIHVzZWQgdG8gY2F1c2VcbiAgICAgICAgIGNhbGxiYWNrcyB0byByYWlzZSBpZiB0aGV5IGNhbGwgW2FkdmFuY2VfYnlfYWxhcm1zXS4gKilcbiAgICAgIG11dGFibGUgYW1fYWR2YW5jaW5nIDogYm9vbFxuICAgIDsgZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgVGltaW5nX3doZWVsLnRcbiAgICA7ICgqIFtmaXJlZF9ldmVudHNdIGlzIHRoZSBmcm9udCBvZiB0aGUgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIGZpcmVkIGV2ZW50cyxcbiAgICAgICAgIHdoaWNoIGlzIHN0b3JlZCBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIFtFdmVudC5hdF0uICopXG4gICAgICBtdXRhYmxlIGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBbbW9zdF9yZWNlbnRseV9maXJlZF0gaXMgdGhlIGV2ZW50IHRoYXQgd2FzIG1vc3QgcmVjZW50bHkgaW5zZXJ0ZWQgaW50b1xuICAgICAgICAgW2ZpcmVkX2V2ZW50c10uIEl0IGlzIHVzZWQgYXMgYW4gb3B0aW1pemF0aW9uIHRvIGFsbG93IGluc2VydGlvbiBvZlxuICAgICAgICAgc3Vic2VxdWVudCBldmVudHMgdG8gc3RhcnQgbGF0ZXIgaW4gdGhlIGxpc3QgcmF0aGVyIHRoYW4gYXQgdGhlIGJlZ2lubmluZy5cbiAgICAgICAgIEl0IHNwZWNpZmljYWxseSBhdm9pZHMgcXVhZHJhdGljIGJlaGF2aW9yIHdoZW4gaW5zZXJ0aW5nIG11bHRpcGxlIGV2ZW50c1xuICAgICAgICAgdGhhdCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGltZSAtLSB0aGUgdGltZSBzb3VyY2UgZmlyZXMgc3VjaCBldmVudHMgaW5cbiAgICAgICAgIHRoZSBvcmRlciB0aGV5IHdlcmUgYWRkZWQsIGFuZCB3ZSB3YW50IHRoZW0gdG8gYmUgaW4gdGhhdCBzYW1lIG9yZGVyIGluXG4gICAgICAgICBbZmlyZWRfZXZlbnRzXS4gKilcbiAgICAgIG11dGFibGUgbW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50XG4gICAgOyAoKiBXZSBzdG9yZSBbaGFuZGxlX2ZpcmVkXSBpbiBbdF0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBldmVyeSB0aW1lIHdlIGNhbGxcbiAgICAgICAgIFthZHZhbmNlX2Nsb2NrXS4gKilcbiAgICAgIGhhbmRsZV9maXJlZCA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgaXNfd2FsbF9jbG9jayA6IGJvb2xcbiAgICA7IHNjaGVkdWxlciA6IFNjaGVkdWxlcjAudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICgqIFdlIGRvbid0IGluY2x1ZGUgdGhlIFtpZF0gaW4gdGhlIHNleHAgYmVjYXVzZSB0aGUgdXNlciAocmlnaHRseSkgY2FuJ3QgY29udHJvbCBpdCwgc29cbiAgICAgaXQncyBoYXJkIHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYyBpbiB0ZXN0cy4gKilcbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgaWQgPSBfXG4gICAgICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBfXG4gICAgICAgIDsgYW1fYWR2YW5jaW5nID0gX1xuICAgICAgICA7IGV2ZW50c1xuICAgICAgICA7IGZpcmVkX2V2ZW50cyA9IF9cbiAgICAgICAgOyBoYW5kbGVfZmlyZWQgPSBfXG4gICAgICAgIDsgaXNfd2FsbF9jbG9ja1xuICAgICAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBfXG4gICAgICAgIDsgc2NoZWR1bGVyID0gX1xuICAgICAgICB9XG4gICAgPVxuICAgIGxldCBub3cgPSBUaW1pbmdfd2hlZWwubm93IGV2ZW50cyBpblxuICAgIGlmIGlzX3dhbGxfY2xvY2tcbiAgICB0aGVuIFslbWVzc2FnZSBcIndhbGxfY2xvY2tcIiAobm93IDogVGltZV9ucy50KV1cbiAgICBlbHNlIChcbiAgICAgIGxldCBhbGxfZXZlbnRzID0gcmVmIFtdIGluXG4gICAgICBUaW1pbmdfd2hlZWwuaXRlciBldmVudHMgfmY6KGZ1biBhbGFybSAtPlxuICAgICAgICBhbGxfZXZlbnRzIDo9IChBbGFybS5hdCBldmVudHMgYWxhcm0sIEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkgOjogIWFsbF9ldmVudHMpO1xuICAgICAgbGV0IGV2ZW50cyA9XG4gICAgICAgIExpc3Quc29ydCAhYWxsX2V2ZW50cyB+Y29tcGFyZTooZnVuIChhdDEsIF8pIChhdDIsIF8pIC0+IFRpbWVfbnMuY29tcGFyZSBhdDEgYXQyKVxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjpzbmRcbiAgICAgIGluXG4gICAgICBbJW1lc3NhZ2UgXCJcIiAobm93IDogVGltZV9ucy50KSAoZXZlbnRzIDogSm9iX29yX2V2ZW50LnQgbGlzdCldKVxuICA7O1xuXG4gIGxldCB0aW1pbmdfd2hlZWxfbm93IHQgPSBUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzXG5cbiAgbGV0IGlzX2luX2ZpcmVkX2V2ZW50cyA9XG4gICAgbGV0IHJlYyBzZWFyY2ggY3VycmVudCB+dGFyZ2V0X2V2ZW50ID1cbiAgICAgIG1hdGNoJW9wdGlvbmFsIChjdXJyZW50IDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGN1cnJlbnQgLT5cbiAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50IHRhcmdldF9ldmVudCB8fCBzZWFyY2ggY3VycmVudC5uZXh0X2ZpcmVkIH50YXJnZXRfZXZlbnRcbiAgICBpblxuICAgIGZ1biB0IHRhcmdldF9ldmVudCAtPiBzZWFyY2ggdC5maXJlZF9ldmVudHMgfnRhcmdldF9ldmVudFxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzICh0eXBlIHJ3KSB+am9iOihqb2JfaW52YXJpYW50IDogSm9iLnQgLT4gdW5pdCkgKHQgOiBydyB0KSA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfmlkOmlnbm9yZVxuICAgICAgICB+YWR2YW5jZV9lcnJvcnM6aWdub3JlXG4gICAgICAgIH5hbV9hZHZhbmNpbmc6aWdub3JlXG4gICAgICAgIH5ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gZXZlbnRzIC0+XG4gICAgICAgICAgICAgVGltaW5nX3doZWVsLmludmFyaWFudCBpZ25vcmUgZXZlbnRzO1xuICAgICAgICAgICAgIFRpbWluZ193aGVlbC5pdGVyIGV2ZW50cyB+ZjooZnVuIGFsYXJtIC0+XG4gICAgICAgICAgICAgICBsZXQgam9iX29yX2V2ZW50ID0gQWxhcm0udmFsdWUgZXZlbnRzIGFsYXJtIGluXG4gICAgICAgICAgICAgICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgICAgICAgICAgICAgIGxldCAoSyBrKSA9IGtpbmQgam9iX29yX2V2ZW50IGluXG4gICAgICAgICAgICAgICBtYXRjaCBrLCBwcm9qZWN0IGsgam9iX29yX2V2ZW50IHdpdGhcbiAgICAgICAgICAgICAgIHwgSm9iLCBqb2IgLT4gam9iX2ludmFyaWFudCBqb2JcbiAgICAgICAgICAgICAgIHwgRXZlbnQsIGV2ZW50IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBhbGFybSBldmVudC5hbGFybSk7XG4gICAgICAgICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IFRpbWVfbnMudF0gZXZlbnQuYXQgfmV4cGVjdDooQWxhcm0uYXQgZXZlbnRzIGFsYXJtKTtcbiAgICAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogRXZlbnQuU3RhdHVzLnRdIGV2ZW50LnN0YXR1cyB+ZXhwZWN0OlNjaGVkdWxlZDtcbiAgICAgICAgICAgICAgICAgRXZlbnQuaW52YXJpYW50IGV2ZW50KSkpXG4gICAgICAgIH5maXJlZF9ldmVudHM6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKGZpcmVkX2V2ZW50cyA6IEV2ZW50Lk9wdGlvbi50KSAtPlxuICAgICAgICAgICAgIGxldCByZWMgY2hlY2tfZXZlbnQgKGN1cnJlbnQgOiBFdmVudC50KSA9XG4gICAgICAgICAgICAgICBhc3NlcnQgKFRpbWVfbnMuKCA8PSApIGN1cnJlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdCkpO1xuICAgICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGN1cnJlbnQubmV4dF9maXJlZCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgICAgIHwgU29tZSBuZXh0IC0+XG4gICAgICAgICAgICAgICAgIGFzc2VydCAoVGltZV9ucy4oIDw9ICkgY3VycmVudC5hdCBuZXh0LmF0KTtcbiAgICAgICAgICAgICAgICAgY2hlY2tfZXZlbnQgbmV4dFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbWF0Y2glb3B0aW9uYWwuRXZlbnQuT3B0aW9uIGZpcmVkX2V2ZW50cyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGNoZWNrX2V2ZW50IGV2ZW50KSlcbiAgICAgICAgfmhhbmRsZV9maXJlZDppZ25vcmVcbiAgICAgICAgfmlzX3dhbGxfY2xvY2s6aWdub3JlXG4gICAgICAgIH5tb3N0X3JlY2VudGx5X2ZpcmVkOlxuICAgICAgICAgIChjaGVjayAoZnVuIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgICAgICAgICBtYXRjaCVvcHRpb25hbCAobW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGV2ZW50IC0+IGFzc2VydCAoaXNfaW5fZmlyZWRfZXZlbnRzIHQgZXZlbnQpKSlcbiAgICAgICAgfnNjaGVkdWxlcjppZ25vcmUpXG4gIDs7XG5cbiAgbGV0IGludmFyaWFudCB0ID0gaW52YXJpYW50X3dpdGhfam9icyB+am9iOihmdW4gXyAtPiAoKSkgdFxuZW5kXG5cbm9wZW4gVDFcblxudHlwZSB0ID0gcmVhZCBUMS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWFkX3dyaXRlIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuZW5kXG5cbmxldCBpZCB0ID0gdC5pZFxubGV0IGlzX3dhbGxfY2xvY2sgdCA9IHQuaXNfd2FsbF9jbG9ja1xubGV0IGxlbmd0aCB0ID0gVGltaW5nX3doZWVsLmxlbmd0aCB0LmV2ZW50c1xubGV0IG1heF9hbGxvd2VkX2FsYXJtX3RpbWUgdCA9IFRpbWluZ193aGVlbC5tYXhfYWxsb3dlZF9hbGFybV90aW1lIHQuZXZlbnRzXG5sZXQgcmVhZF9vbmx5ICh0IDogWz4gcmVhZCBdIFQxLnQpID0gKHQgOj4gdClcblxuKCogW2ZpcmUgdCBldmVudF0gc2V0cyBbZXZlbnQuc3RhdHVzID0gRmlyZWRdIGFuZCBpbnNlcnRzIFtldmVudF0gaW50b1xuICAgW3QuZmlyZWRfZXZlbnRzXSBpbiBzb3J0ZWQgdGltZSBvcmRlci4gKilcbmxldCBmaXJlIHQgKGV2ZW50IDogRXZlbnQudCkgPVxuICBFdmVudC5zZXRfc3RhdHVzIGV2ZW50IEZpcmVkO1xuICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICBsZXQgKCkgPVxuICAgICgqIElmIFtldmVudF0gYmVsb25ncyBhZnRlciBbdC5tb3N0X3JlY2VudGx5X2ZpcmVkXSwgdGhlbiB3ZSBzdGFydCB0aGVcbiAgICAgICBpbnNlcnRpb24gdGhlcmUgcmF0aGVyIHRoYW4gYXQgdGhlIGZyb250IG9mIFt0LmZpcmVkX2V2ZW50c10uIFRoaXMgd29ya3NcbiAgICAgICBuaWNlbHkgaWYgd2UncmUgZ2V0dGluZyB0aGUgYWxhcm1zIGluIG5vbi1kZWNyZWFzaW5nIHRpbWUgb3JkZXIsIHdoaWNoIGlzXG4gICAgICAgY2xvc2UgdG8gd2hhdCBbVGltaW5nX3doZWVsXSBwcm92aWRlcyAoYWx0aG91Z2ggW1RpbWluZ193aGVlbF0gZG9lc24ndFxuICAgICAgIGd1YXJhbnRlZSB0aW1lIG9yZGVyaW5nIGZvciB0aW1lcyBpbiB0aGUgc2FtZSBpbnRlcnZhbCkuICopXG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgd2hlbiBUaW1lX25zLiggPD0gKSBtb3N0X3JlY2VudGx5X2ZpcmVkLmF0IGV2ZW50LmF0IC0+XG4gICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIG1vc3RfcmVjZW50bHlfZmlyZWQ7XG4gICAgICBldmVudC5uZXh0X2ZpcmVkIDwtIG1vc3RfcmVjZW50bHlfZmlyZWQubmV4dF9maXJlZFxuICAgIHwgXyAtPlxuICAgICAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gdC5maXJlZF9ldmVudHNcbiAgaW5cbiAgdC5tb3N0X3JlY2VudGx5X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50O1xuICAoKiBXZSB1c2UgW1RpbWVfbnMuKCA8PSApXSByYXRoZXIgdGhhbiBbPF0gc28gdGhhdCBbZXZlbnRdIGlzIGFkZGVkIGFmdGVyIG90aGVyXG4gICAgIGV2ZW50cyBhdCB0aGUgc2FtZSB0aW1lLiBTaW5jZSBbVGltaW5nX3doZWVsXSBmaXJlcyBhbGFybXMgaW4gYSBidWNrZXQgaW5cbiAgICAgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCwgdXNpbmcgWzw9XSBrZWVwcyBldmVudHMgYXQgdGhlIHNhbWVcbiAgICAgdGltZSBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLiAqKVxuICB3aGlsZVxuICAgIG1hdGNoJW9wdGlvbmFsIChldmVudC5uZXh0X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgbGV0IGNvbnRpbnVlID0gVGltZV9ucy4oIDw9ICkgbmV4dC5hdCBldmVudC5hdCBpblxuICAgICAgaWYgY29udGludWVcbiAgICAgIHRoZW4gKFxuICAgICAgICBldmVudC5wcmV2X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWQ7XG4gICAgICAgIGV2ZW50Lm5leHRfZmlyZWQgPC0gbmV4dC5uZXh0X2ZpcmVkKTtcbiAgICAgIGNvbnRpbnVlXG4gIGRvXG4gICAgKClcbiAgZG9uZTtcbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIGluXG4gIG1hdGNoJW9wdGlvbmFsIChldmVudC5wcmV2X2ZpcmVkIDogRXZlbnQuT3B0aW9uLnQpIHdpdGhcbiAgfCBOb25lIC0+IHQuZmlyZWRfZXZlbnRzIDwtIEV2ZW50Lk9wdGlvbi5zb21lIGV2ZW50XG4gIHwgU29tZSBwcmV2IC0+IHByZXYubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24uc29tZSBldmVudFxuOztcblxubGV0IGFsYXJtX3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiB0LmV2ZW50c1xubGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgdCA9IFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG5cbmxldCBuZXh0X2FsYXJtX3J1bnNfYXQgdCA9XG4gIGlmIEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4gIHRoZW4gU29tZSAodGltaW5nX3doZWVsX25vdyB0KVxuICBlbHNlIFRpbWluZ193aGVlbC5uZXh0X2FsYXJtX2ZpcmVzX2F0IHQuZXZlbnRzXG47O1xuXG5sZXQgbm93IHQgPSBpZiB0LmlzX3dhbGxfY2xvY2sgdGhlbiBUaW1lX25zLm5vdyAoKSBlbHNlIHRpbWluZ193aGVlbF9ub3cgdFxubGV0IHRpbWluZ193aGVlbF9ub3cgPSB0aW1pbmdfd2hlZWxfbm93XG5cbmxldCBzY2hlZHVsZSB0IChldmVudCA6IEV2ZW50LnQpID1cbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBTY2hlZHVsZWQ7XG4gIGV2ZW50LmFsYXJtIDwtIFRpbWluZ193aGVlbC5hZGQgdC5ldmVudHMgfmF0OmV2ZW50LmF0IChldmVudCB8PiBKb2Jfb3JfZXZlbnQub2ZfZXZlbnQpXG47O1xuXG5sZXQgcmVtb3ZlX2Zyb21fZmlyZWQgdCAoZXZlbnQgOiBFdmVudC50KSB+bmV3X3N0YXR1cyA9XG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKHQubW9zdF9yZWNlbnRseV9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG1vc3RfcmVjZW50bHlfZmlyZWQgLT5cbiAgICAgIGlmIHBoeXNfZXF1YWwgZXZlbnQgbW9zdF9yZWNlbnRseV9maXJlZFxuICAgICAgdGhlblxuICAgICAgICB0Lm1vc3RfcmVjZW50bHlfZmlyZWQgPC0gRXZlbnQuT3B0aW9uLmZpcnN0X3NvbWUgZXZlbnQubmV4dF9maXJlZCBldmVudC5wcmV2X2ZpcmVkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2glb3B0aW9uYWwgKGV2ZW50LnByZXZfZmlyZWQgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiB0LmZpcmVkX2V2ZW50cyA8LSBldmVudC5uZXh0X2ZpcmVkXG4gICAgfCBTb21lIHByZXYgLT4gcHJldi5uZXh0X2ZpcmVkIDwtIGV2ZW50Lm5leHRfZmlyZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCVvcHRpb25hbCAoZXZlbnQubmV4dF9maXJlZCA6IEV2ZW50Lk9wdGlvbi50KSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIG5leHQgLT4gbmV4dC5wcmV2X2ZpcmVkIDwtIGV2ZW50LnByZXZfZmlyZWRcbiAgaW5cbiAgZXZlbnQubmV4dF9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgZXZlbnQucHJldl9maXJlZCA8LSBFdmVudC5PcHRpb24ubm9uZTtcbiAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBuZXdfc3RhdHVzXG47O1xuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBFdmVudFxuXG4gIGxldCBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayA9XG4gICAgeyBhbGFybSA9IEFsYXJtLm51bGwgKClcbiAgICA7IGF0XG4gICAgOyBjYWxsYmFja1xuICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSB0LnNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG4gICAgOyBpbnRlcnZhbFxuICAgIDsgbmV4dF9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBwcmV2X2ZpcmVkID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IHN0YXR1cyA9IFVuc2NoZWR1bGVkXG4gICAgfVxuICA7O1xuXG4gIGxldCBhZGQgdCBldmVudCA9XG4gICAgaWYgVGltZV9ucy4oIDw9ICkgZXZlbnQuYXQgKHRpbWluZ193aGVlbF9ub3cgdClcbiAgICB0aGVuIGZpcmUgdCBldmVudFxuICAgIGVsc2Ugc2NoZWR1bGUgdCBldmVudFxuICA7O1xuXG4gIGxldCBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWwgfmNhbGxiYWNrID1cbiAgICBsZXQgZXZlbnQgPSBjcmVhdGVfaW50ZXJuYWwgdCB+YXQgfmludGVydmFsIH5jYWxsYmFjayBpblxuICAgIGFkZCB0IGV2ZW50O1xuICAgIGV2ZW50XG4gIDs7XG5cbiAgbGV0IGF0IHQgYXQgY2FsbGJhY2sgPSBjcmVhdGVfYW5kX2FkZCB0IH5hdCB+aW50ZXJ2YWw6Tm9uZSB+Y2FsbGJhY2tcblxuICBsZXQgYWZ0ZXIgdCBzcGFuIGNhbGxiYWNrID1cbiAgICBjcmVhdGVfYW5kX2FkZCB0IH5hdDooVGltZV9ucy5hZnRlciAobm93IHQpIHNwYW4pIH5pbnRlcnZhbDpOb25lIH5jYWxsYmFja1xuICA7O1xuXG4gIGxldCByZXF1aXJlX3NwYW5fYXRfbGVhc3RfYWxhcm1fcHJlY2lzaW9uIHQgc3BhbiA9XG4gICAgbGV0IGFsYXJtX3ByZWNpc2lvbiA9IGFsYXJtX3ByZWNpc2lvbiB0IGluXG4gICAgaWYgVGltZV9ucy5TcGFuLiggPCApIHNwYW4gYWxhcm1fcHJlY2lzaW9uXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludGVydmFsIHNwYW4gc21hbGxlciB0aGFuIGFsYXJtIHByZWNpc2lvblwiXG4gICAgICAgICAgICAoc3BhbiA6IFRpbWVfbnMuU3Bhbi50KVxuICAgICAgICAgICAgKGFsYXJtX3ByZWNpc2lvbiA6IFRpbWVfbnMuU3Bhbi50KV1cbiAgOztcblxuICBsZXQgYXRfaW50ZXJ2YWxzIHQgc3BhbiBjYWxsYmFjayA9XG4gICAgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW47XG4gICAgY3JlYXRlX2FuZF9hZGQgdCB+YXQ6KG5vdyB0KSB+aW50ZXJ2YWw6KFNvbWUgc3BhbikgfmNhbGxiYWNrXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IEN1cnJlbnRseV9oYXBwZW5pbmdcbiAgICAgIHwgUHJldmlvdXNseV91bnNjaGVkdWxlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIGxldCBhYm9ydCB0IChldmVudCA6IHQpIDogQWJvcnRfcmVzdWx0LnQgPVxuICAgIG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgfCBIYXBwZW5pbmcgLT5cbiAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgfCBOb25lIC0+IEN1cnJlbnRseV9oYXBwZW5pbmdcbiAgICAgICB8IFNvbWUgKF8gOiBUaW1lX25zLlNwYW4udCkgLT5cbiAgICAgICAgIGV2ZW50LmludGVydmFsIDwtIE5vbmU7XG4gICAgICAgICBPaylcbiAgICB8IEZpcmVkIC0+XG4gICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOlVuc2NoZWR1bGVkO1xuICAgICAgT2tcbiAgICB8IFNjaGVkdWxlZCAtPlxuICAgICAgRXZlbnQuc2V0X3N0YXR1cyBldmVudCBVbnNjaGVkdWxlZDtcbiAgICAgIFRpbWluZ193aGVlbC5yZW1vdmUgdC5ldmVudHMgZXZlbnQuYWxhcm07XG4gICAgICBldmVudC5hbGFybSA8LSBBbGFybS5udWxsICgpO1xuICAgICAgT2tcbiAgICB8IFVuc2NoZWR1bGVkIC0+IFByZXZpb3VzbHlfdW5zY2hlZHVsZWRcbiAgOztcblxuICBsZXQgYWJvcnRfaWZfcG9zc2libGUgdCBldmVudCA9IGlnbm9yZSAoYWJvcnQgdCBldmVudCA6IEFib3J0X3Jlc3VsdC50KVxuXG4gIGxldCBhYm9ydF9leG4gdCBldmVudCA9XG4gICAgbWF0Y2ggYWJvcnQgdCBldmVudCB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgcmVhc29uIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1N5bmNocm9ub3VzX3RpbWVfc291cmNlLmFib3J0X2V4bl0gY2Fubm90IGFib3J0IGV2ZW50XCJcbiAgICAgICAgICAgIChyZWFzb24gOiBBYm9ydF9yZXN1bHQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB0IGNhbGxiYWNrID0gY3JlYXRlX2ludGVybmFsIHQgfmF0OlRpbWVfbnMuZXBvY2ggfmludGVydmFsOk5vbmUgfmNhbGxiYWNrXG5cbiAgbGV0IHNjaGVkdWxlX2F0X2ludGVybmFsIHQgKGV2ZW50IDogdCkgYXQgfmludGVydmFsID1cbiAgICAoKiBbRmlyZWRdIGlzIGRpc2FsbG93ZWQgdG8gcHJldmVudCB0aGUgdXNlciBmcm9tIGVudGVyaW5nIGludG8gYW4gaW5maW5pdGUgbG9vcC4gIFRoZVxuICAgICAgIHVzZXIgY291bGQgc3BlY2lmeSBbYXRdIGluIHRoZSBwYXN0IHdoaWNoIHdvdWxkIGNvbnN0YW50bHkgYWRkIFtjYWxsYmFja10gdG8gdGhlXG4gICAgICAgYmFjayBvZiBbdC5uZXh0X2ZpcmVkXSBpZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIFtjYWxsYmFja10uICopXG4gICAgbWF0Y2ggZXZlbnQuc3RhdHVzIHdpdGhcbiAgICB8IChIYXBwZW5pbmcgfCBTY2hlZHVsZWQgfCBGaXJlZCkgYXMgc3RhdHVzIC0+XG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslc2V4cCBcImNhbm5vdCBzY2hlZHVsZSBhbiBldmVudCB3aXRoIHN0YXR1c1wiLCAoc3RhdHVzIDogRXZlbnQuU3RhdHVzLnQpXVxuICAgIHwgVW5zY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgZXZlbnQuaW50ZXJ2YWwgPC0gaW50ZXJ2YWw7XG4gICAgICBhZGQgdCBldmVudDtcbiAgICAgIE9rICgpXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX2F0IHQgZXZlbnQgYXQgPSBzY2hlZHVsZV9hdF9pbnRlcm5hbCB0IGV2ZW50IGF0IH5pbnRlcnZhbDpOb25lXG4gIGxldCBzY2hlZHVsZV9hZnRlciB0IGV2ZW50IHNwYW4gPSBzY2hlZHVsZV9hdCB0IGV2ZW50IChUaW1lX25zLmFmdGVyIChub3cgdCkgc3BhbilcblxuICBsZXQgc2NoZWR1bGVfYXRfaW50ZXJ2YWxzIHQgZXZlbnQgc3BhbiA9XG4gICAgcmVxdWlyZV9zcGFuX2F0X2xlYXN0X2FsYXJtX3ByZWNpc2lvbiB0IHNwYW47XG4gICAgc2NoZWR1bGVfYXRfaW50ZXJuYWwgdCBldmVudCAobm93IHQpIH5pbnRlcnZhbDooU29tZSBzcGFuKVxuICA7O1xuXG4gIGxldCByZXNjaGVkdWxlX2F0IHQgZXZlbnQgYXQgOiB1bml0ID1cbiAgICBtYXRjaCBldmVudC5zdGF0dXMgd2l0aFxuICAgIHwgRmlyZWQgLT5cbiAgICAgIHJlbW92ZV9mcm9tX2ZpcmVkIHQgZXZlbnQgfm5ld19zdGF0dXM6VW5zY2hlZHVsZWQ7XG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGFkZCB0IGV2ZW50XG4gICAgfCBIYXBwZW5pbmcgLT5cbiAgICAgICgqIEhhcHBlbmluZyBldmVudHMgaGF2ZSBhbHJlYWR5IGJlZW4gcmVtb3ZlZCBmcm9tIFtmaXJlZF0uICopXG4gICAgICBldmVudC5hdCA8LSBhdDtcbiAgICAgIGFkZCB0IGV2ZW50XG4gICAgfCBTY2hlZHVsZWQgLT5cbiAgICAgIGV2ZW50LmF0IDwtIGF0O1xuICAgICAgaWYgVGltZV9ucy4oID4gKSBhdCAodGltaW5nX3doZWVsX25vdyB0KVxuICAgICAgdGhlbiBUaW1pbmdfd2hlZWwucmVzY2hlZHVsZSB0LmV2ZW50cyBldmVudC5hbGFybSB+YXRcbiAgICAgIGVsc2UgKFxuICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIHQuZXZlbnRzIGV2ZW50LmFsYXJtO1xuICAgICAgICBmaXJlIHQgZXZlbnQpXG4gICAgfCBVbnNjaGVkdWxlZCAtPlxuICAgICAgZXZlbnQuYXQgPC0gYXQ7XG4gICAgICBldmVudC5pbnRlcnZhbCA8LSBOb25lO1xuICAgICAgYWRkIHQgZXZlbnRcbiAgOztcblxuICBsZXQgcmVzY2hlZHVsZV9hZnRlciB0IGV2ZW50IHNwYW4gPSByZXNjaGVkdWxlX2F0IHQgZXZlbnQgKFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuKVxuXG5lbmRcblxubGV0IHJ1bl9hZnRlciB0IHNwYW4gY2FsbGJhY2sgPSBpZ25vcmUgKEV2ZW50LmFmdGVyIHQgc3BhbiBjYWxsYmFjayA6IEV2ZW50LnQpXG5sZXQgcnVuX2F0IHQgYXQgY2FsbGJhY2sgPSBpZ25vcmUgKEV2ZW50LmF0IHQgYXQgY2FsbGJhY2sgOiBFdmVudC50KVxuXG5sZXQgcnVuX2F0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgPVxuICBpZ25vcmUgKEV2ZW50LmF0X2ludGVydmFscyB0IHNwYW4gY2FsbGJhY2sgOiBFdmVudC50KVxuOztcblxudHlwZSBzZW5kX2V4biA9IE1vbml0b3IwLnQgLT4gP2JhY2t0cmFjZTpbIGBHZXQgfCBgVGhpcyBvZiBCYWNrdHJhY2UudCBdIC0+IGV4biAtPiB1bml0XG5cbmxldCBydW5fZmlyZWRfZXZlbnRzIHQgfihzZW5kX2V4biA6IHNlbmRfZXhuIG9wdGlvbikgPVxuICBsZXQgY3VycmVudF9leGVjdXRpb25fY29udGV4dCA9IHQuc2NoZWR1bGVyLmN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgaW5cbiAgd2hpbGVcbiAgICBtYXRjaCVvcHRpb25hbCAodC5maXJlZF9ldmVudHMgOiBFdmVudC5PcHRpb24udCkgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBldmVudCAtPlxuICAgICAgKG1hdGNoIGV2ZW50LnN0YXR1cyB3aXRoXG4gICAgICAgfCBIYXBwZW5pbmcgfCBTY2hlZHVsZWQgfCBVbnNjaGVkdWxlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICB8IEZpcmVkIC0+XG4gICAgICAgICByZW1vdmVfZnJvbV9maXJlZCB0IGV2ZW50IH5uZXdfc3RhdHVzOkhhcHBlbmluZztcbiAgICAgICAgICgqIFdlIHNldCB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBbZXZlbnQuY2FsbGJhY2tdIHJ1bnMgaW4gdGhlIHNhbWUgY29udGV4dFxuICAgICAgICAgICAgdGhhdCB3YXMgaW4gcGxhY2Ugd2hlbiBbZXZlbnRdIHdhcyBjcmVhdGVkLiAqKVxuICAgICAgICAgU2NoZWR1bGVyMC5zZXRfZXhlY3V0aW9uX2NvbnRleHQgdC5zY2hlZHVsZXIgZXZlbnQuZXhlY3V0aW9uX2NvbnRleHQ7XG4gICAgICAgICAoKiBBbnkgbW9kaWZpY2F0aW9uIG9mIFtzdGF0dXNdIGJlbG93IG5lZWRzIHRvIGZpcnN0IGNoZWNrIHRoYXQgdGhlIGV2ZW50IGlzXG4gICAgICAgICAgICBzdGlsbCBbSGFwcGVuaW5nXS4gSWYgdGhlIGV2ZW50IHN0YXR1cyBpcyBub3QgW0hhcHBlbmluZ10gdGhlbiB0aGUgZXZlbnQnc1xuICAgICAgICAgICAgY2FsbGJhY2sgbXVzdCBoYXZlIHJlc2NoZWR1bGVkIHRoZSBldmVudC4gSW4gdGhhdCBjYXNlLCBkbyBub3Qgc2V0IHRoZSBzdGF0dXNcbiAgICAgICAgICAgIG9yIGF0dGVtcHQgdG8gcmVzY2hlZHVsZSBhIHJlcGVhdGluZyBldmVudC5cblxuICAgICAgICAgICAgVGhpcyBjb2RlIGNvdWxkIGJlIG11Y2ggc2ltcGxlciBpZiB3ZSBpbW1lZGlhdGVseSByZXNjaGVkdWxlZCB0aGUgZXZlbnQgYmVmb3JlXG4gICAgICAgICAgICBydW5uaW5nIHRoZSBjYWxsYmFjayAobm8gbmVlZCBmb3IgdGhlIEhhcHBlbmluZyBzdGF0ZSB0aGVuKS4gT25lIHJlYXNvbiB3ZVxuICAgICAgICAgICAgZG9uJ3QgZG8gdGhhdCBpcyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYXV0b21hdGljYWxseSByZXNjaGVkdWxlIGEgcGVyaW9kaWNcbiAgICAgICAgICAgIGV2ZW50IGlmIGl0cyBjYWxsYmFjayByYWlzZXMuICopXG4gICAgICAgICAobWF0Y2ggZXZlbnQuY2FsbGJhY2sgKCkgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgKG1hdGNoIHNlbmRfZXhuIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBFcnJvci5vZl9leG4gZXhuIDo6IHQuYWR2YW5jZV9lcnJvcnNcbiAgICAgICAgICAgICB8IFNvbWUgc2VuZF9leG4gLT5cbiAgICAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICAgICBzZW5kX2V4biBldmVudC5leGVjdXRpb25fY29udGV4dC5tb25pdG9yIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpKTtcbiAgICAgICAgICAgIEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZyBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgIHwgKCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBldmVudC5pbnRlcnZhbCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IEV2ZW50LnNldF9zdGF0dXNfaWYgfmlzOkhhcHBlbmluZyBldmVudCBVbnNjaGVkdWxlZFxuICAgICAgICAgICAgIHwgU29tZSBpbnRlcnZhbCAtPlxuICAgICAgICAgICAgICAgaWYgRXZlbnQuU3RhdHVzLmVxdWFsIEhhcHBlbmluZyBldmVudC5zdGF0dXNcbiAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAoKiBUaGUgZXZlbnQncyBjYWxsYmFjayBkaWQgbm90IHJlc2NoZWR1bGUgdGhlIGV2ZW50LiBTbyByZXNjaGVkdWxlIHRoZVxuICAgICAgICAgICAgICAgICAgICByZXBlYXRpbmcgdGltZXIgYmFzZWQgb24gdGhlIGxhc3QgW2F0XSB0aW1lLiAqKVxuICAgICAgICAgICAgICAgICBldmVudC5hdFxuICAgICAgICAgICAgICAgICA8LSBUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIH5iYXNlOmV2ZW50LmF0XG4gICAgICAgICAgICAgICAgICAgICAgfmFmdGVyOih0aW1pbmdfd2hlZWxfbm93IHQpXG4gICAgICAgICAgICAgICAgICAgICAgfmludGVydmFsO1xuICAgICAgICAgICAgICAgICBzY2hlZHVsZSB0IGV2ZW50KSkpO1xuICAgICAgICAgdHJ1ZSlcbiAgZG9cbiAgICAoKVxuICBkb25lO1xuICBTY2hlZHVsZXIwLnNldF9leGVjdXRpb25fY29udGV4dCB0LnNjaGVkdWxlciBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0XG47O1xuXG5sZXQgYWR2YW5jZV9jbG9jayB0IH50b18gfnNlbmRfZXhuID1cbiAgVGltaW5nX3doZWVsLmFkdmFuY2VfY2xvY2sgdC5ldmVudHMgfnRvXyB+aGFuZGxlX2ZpcmVkOnQuaGFuZGxlX2ZpcmVkO1xuICBydW5fZmlyZWRfZXZlbnRzIHQgfnNlbmRfZXhuXG47O1xuXG5sZXQgZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4biA9XG4gIFRpbWluZ193aGVlbC5maXJlX3Bhc3RfYWxhcm1zIHQuZXZlbnRzIH5oYW5kbGVfZmlyZWQ6dC5oYW5kbGVfZmlyZWQ7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG4gPVxuICBhZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpcmVfcGFzdF9hbGFybXMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBwcmVwYXJlX3RvX2FkdmFuY2UgdCB+c2VuZF9leG4gPVxuICBpZiB0LmFtX2FkdmFuY2luZ1xuICB0aGVuXG4gICAgcmFpc2VfcyBbJXNleHAgXCJjYW5ub3QgY2FsbCBbYWR2YW5jZV9ieV9hbGFybXNdIG9yIFthZHZhbmNlX2RpcmVjdGx5XSBmcm9tIGNhbGxiYWNrXCJdO1xuICB0LmFtX2FkdmFuY2luZyA8LSB0cnVlO1xuICAobWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gICB8IFtdIC0+ICgpXG4gICB8IF8gLT4gdC5hZHZhbmNlX2Vycm9ycyA8LSBbXSk7XG4gIHJ1bl9maXJlZF9ldmVudHMgdCB+c2VuZF9leG5cbjs7XG5cbmxldCBmaW5pc2hfYWR2YW5jaW5nIHQgPVxuICB0LmFtX2FkdmFuY2luZyA8LSBmYWxzZTtcbiAgbWF0Y2ggdC5hZHZhbmNlX2Vycm9ycyB3aXRoXG4gIHwgW10gLT4gT2sgKClcbiAgfCBlcnJvcnMgLT5cbiAgICB0LmFkdmFuY2VfZXJyb3JzIDwtIFtdO1xuICAgIEVycm9yIChFcnJvci5vZl9saXN0IGVycm9ycylcbjs7XG5cbmxldCBhZHZhbmNlX2J5X2FsYXJtcyB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG1pbl9hbGFybV90aW1lID0gVGltaW5nX3doZWVsLm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG1pbl9hbGFybV90aW1lIHRvX1xuICAgICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICAoKiBXZSB1c2UgdGhlIGFjdHVhbCBhbGFybSB0aW1lLCByYXRoZXIgdGhhbiBbbmV4dF9hbGFybV9maXJlc19hdF0sIHNvIGFzIG5vdCB0b1xuICAgICAgICAgICBleHBvc2UgKG9yIGFjY3VtdWxhdGUgZXJyb3JzIGFzc29jaWF0ZWQgd2l0aCkgdGhlIHByZWNpc2lvbiBvZlxuICAgICAgICAgICBbVGltaW5nX3doZWVsXS4gKilcbiAgICAgICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b186bWluX2FsYXJtX3RpbWUgfnNlbmRfZXhuKVxuICBkb25lO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGFkdmFuY2VfYnlfbWF4X2FsYXJtc19pbl9lYWNoX3RpbWluZ193aGVlbF9pbnRlcnZhbCB0IH50b18gPVxuICBsZXQgc2VuZF9leG4gPSBOb25lIGluXG4gIHByZXBhcmVfdG9fYWR2YW5jZSB0IH5zZW5kX2V4bjtcbiAgbGV0IGNvbnRpbnVlID0gcmVmIHRydWUgaW5cbiAgd2hpbGUgIWNvbnRpbnVlIGRvXG4gICAgaWYgVGltaW5nX3doZWVsLmlzX2VtcHR5IHQuZXZlbnRzXG4gICAgdGhlbiBjb250aW51ZSA6PSBmYWxzZVxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5leHRfYWxhcm1fZmlyZXNfYXQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gdC5ldmVudHMgaW5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGNvbnRpbnVlIDo9IGZhbHNlXG4gICAgICBlbHNlXG4gICAgICAgICgqIFdlIHVzZSB0aGUgYWN0dWFsIGFsYXJtIHRpbWUsIHJhdGhlciB0aGFuIFtuZXh0X2FsYXJtX2ZpcmVzX2F0XSwgc28gYXMgbm90IHRvXG4gICAgICAgICAgIGV4cG9zZSAob3IgYWNjdW11bGF0ZSBlcnJvcnMgYXNzb2NpYXRlZCB3aXRoKSB0aGUgcHJlY2lzaW9uIG9mXG4gICAgICAgICAgIFtUaW1pbmdfd2hlZWxdLiAqKVxuICAgICAgICBhZHZhbmNlX2ludGVybmFsXG4gICAgICAgICAgdFxuICAgICAgICAgIH50b186KFRpbWluZ193aGVlbC5tYXhfYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWxfZXhuIHQuZXZlbnRzKVxuICAgICAgICAgIH5zZW5kX2V4bilcbiAgZG9uZTtcbiAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gfnNlbmRfZXhuO1xuICBmaW5pc2hfYWR2YW5jaW5nIHRcbjs7XG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXyA9XG4gIGxldCBzZW5kX2V4biA9IE5vbmUgaW5cbiAgcHJlcGFyZV90b19hZHZhbmNlIHQgfnNlbmRfZXhuO1xuICBhZHZhbmNlX2ludGVybmFsIHQgfnRvXyB+c2VuZF9leG47XG4gIGZpbmlzaF9hZHZhbmNpbmcgdFxuOztcblxubGV0IGR1cmF0aW9uX29mIHQgZiA9XG4gIGxldCBzdGFydCA9IG5vdyB0IGluXG4gIGxldCByZXN1bHQgPSBmICgpIGluXG4gIGxldCBkdXJhdGlvbiA9IFRpbWVfbnMuZGlmZiAobm93IHQpIHN0YXJ0IGluXG4gIHJlc3VsdCwgZHVyYXRpb25cbjs7XG5cbmxldCBtYXhfYWxhcm1fdGltZV9pbl9taW5fdGltaW5nX3doZWVsX2ludGVydmFsIHQgPVxuICBUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIHQuZXZlbnRzXG47O1xuXG5sZXQgaGFzX2V2ZW50c190b19ydW4gdCA9IEV2ZW50Lk9wdGlvbi5pc19zb21lIHQuZmlyZWRfZXZlbnRzXG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5pbmNsdWRlIFNjaGVkdWxlcjBcbm1vZHVsZSBTeW5jaHJvbm91c190aW1lX3NvdXJjZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxubW9kdWxlIEV2ZW50ID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnRcbm1vZHVsZSBBbGFybSA9IFRpbWluZ193aGVlbC5BbGFybVxubW9kdWxlIEpvYl9vcl9ldmVudCA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLkpvYl9vcl9ldmVudFxuXG5sZXQgZGVidWcgPSBEZWJ1Zy5zY2hlZHVsZXJcblxubW9kdWxlIEl2YXIgPSBzdHJ1Y3RcbiAgb3BlbiBUeXBlcy5JdmFyXG5cbiAgbGV0IGNyZWF0ZV93aXRoX2NlbGwgY2VsbCA9IHsgY2VsbCB9XG4gIGxldCBjcmVhdGUgKCkgPSBjcmVhdGVfd2l0aF9jZWxsIEVtcHR5XG5cbiAgbGV0IGNyZWF0ZV9mdWxsICh0eXBlIGEpIChhIDogYSkgPVxuICAgICgqIFdlIGFsbG9jYXRlIGFuIGltbXV0YWJsZSBpdmFyIGFuZCB0aGVuIGNhc3QgaXQgdG8gYSBtdXRhYmxlIGl2YXIuICBUaGUgaW1tdXRhYmlsaXR5XG4gICAgICAgYWxsb3dzIE9DYW1sIHRvIHN0YXRpY2FsbHkgYWxsb2NhdGUgdGhlIGl2YXIgaWYgW2FdIGlzIGNvbnN0YW50LiAgVGhpcyBjYXN0IGlzIHNhZmVcbiAgICAgICBiZWNhdXNlIGEgZnVsbCBpdmFyIGlzIG5ldmVyIG11dGF0ZWQuICBXZSBhbHNvIGJlbGlldmUgdGhhdCB3ZSB3aWxsIG5vdCB0cmlnZ2VyXG4gICAgICAgZmxhbWJkYSB0byBzcHVyaW91c2x5IHJlcG9yIHdhcm5pbmcgNTksIG11dGF0aW9uIG9mIGtub3duIGltbXV0YWJsZSBkYXRhLiAgQWxsXG4gICAgICAgbXV0YXRpb25zIG9mIGFuIGl2YXIgY2VsbCwgaS5lLiBbZm9vLmNlbGwgPC0gLi4uXSwgYXJlIGRpcmVjdGx5IHByZWNlZGVkIGJ5IGFcbiAgICAgICBbbWF0Y2ggZm9vLmNlbGxdIHRoYXQgcHJldmVudHMgdGhlIFtGdWxsXSBjYXNlIGZyb20gcmVhY2hpbmcgdGhlIG1vZGlmaWNhdGlvbi4gIFNvXG4gICAgICAgZmxhbWJkYSBzaG91bGQgYWx3YXlzIGVsaW1pbmF0ZSB0aGUgW2Zvby5jZWxsIDwtIC4uLl0gb2YgYSBjb25zdGFudCBbRnVsbF0gaXZhcixcbiAgICAgICBhbmQgbm90IHdhcm4uICopXG4gICAgKE9iai5tYWdpYyA6IGEgSW1tdXRhYmxlLnQgLT4gYSB0KSB7IGNlbGwgPSBGdWxsIGEgfVxuICA7O1xuZW5kXG5cbm1vZHVsZSBCdmFyID0gc3RydWN0XG4gIG9wZW4gVHlwZXMuQnZhclxuXG4gIGxldCBjcmVhdGUgKCkgPSBvZl9yZXByIHsgaGFzX2FueV93YWl0ZXJzID0gZmFsc2U7IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSB9XG5lbmRcblxubW9kdWxlIFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlciA9IHN0cnVjdFxuICBtb2R1bGUgRXhlY19yZXN1bHQgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBUeXBlcy5WZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuRXhlY19yZXN1bHQudCA9XG4gICAgICB8IEZpbmlzaGVkXG4gICAgICB8IE5vdF9maW5pc2hlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIGVuZFxuXG4gIHR5cGUgdCA9IFR5cGVzLlZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50ID1cbiAgICB7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgIDsgZXhlYyA6IHVuaXQgLT4gRXhlY19yZXN1bHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyIH5leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KSB+ZXhlYzppZ25vcmUpXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gU2NoZWR1bGVyMC50ID1cbiAgeyAoKiBbY2hlY2tfYWNjZXNzXSBvcHRpb25hbGx5IGhvbGRzIGEgZnVuY3Rpb24gdG8gcnVuIHRvIGNoZWNrIHdoZXRoZXIgYWNjZXNzIHRvIFt0XSBpc1xuICAgICAgIGN1cnJlbnRseSBhbGxvd2VkLiAgSXQgaXMgdXNlZCB0byBkZXRlY3QgaW52YWxpZCBhY2Nlc3MgdG8gdGhlIHNjaGVkdWxlciBmcm9tIGFcbiAgICAgICB0aHJlYWQuICopXG4gICAgbXV0YWJsZSBjaGVja19hY2Nlc3MgOiAodW5pdCAtPiB1bml0KSBvcHRpb25cbiAgOyBtdXRhYmxlIGpvYl9wb29sIDogSm9iX3Bvb2wudFxuICA7IG5vcm1hbF9wcmlvcml0eV9qb2JzIDogSm9iX3F1ZXVlLnRcbiAgOyBsb3dfcHJpb3JpdHlfam9icyA6IEpvYl9xdWV1ZS50XG4gIDsgdmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyA6IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci50IERlcXVlLnRcbiAgOyBtdXRhYmxlIG1haW5fZXhlY3V0aW9uX2NvbnRleHQgOiBFeGVjdXRpb25fY29udGV4dC50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAoKiBUaGUgc2NoZWR1bGVyIGNhbGxzIFtnb3RfdW5jYXVnaHRfZXhuXSB3aGVuIGFuIGV4Y2VwdGlvbiBidWJibGVzIHRvIHRoZSB0b3Agb2YgdGhlXG4gICAgIG1vbml0b3IgdHJlZSB3aXRob3V0IGJlaW5nIGhhbmRsZWQuICBUaGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMgdG8gbmV2ZXIgcnVuIGFub3RoZXJcbiAgICAgam9iIGFmdGVyIHRoaXMgYnkgY2FsbGluZyBbY2xlYXJdIGFuZCBiZWNhdXNlIFtlbnF1ZXVlX2pvYl0gd2lsbCBuZXZlciBhZGQgYW5vdGhlclxuICAgICBqb2IuICopXG4gIDsgbXV0YWJsZSB1bmNhdWdodF9leG4gOiAoRXhuLnQgKiBTZXhwLnQpIG9wdGlvblxuICA7IG11dGFibGUgY3ljbGVfY291bnQgOiBpbnRcbiAgOyBtdXRhYmxlIGN5Y2xlX3N0YXJ0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBpbl9jeWNsZSA6IGJvb2xcbiAgOyBtdXRhYmxlIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCA6IChUeXBlcy5DeWNsZV9ob29rLnRbQHNleHAub3BhcXVlXSkgbGlzdFxuICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA6XG4gICAgICAoVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudCwgKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgbXV0YWJsZSBydW5fZXZlcnlfY3ljbGVfZW5kIDogKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSBsaXN0XG4gIDsgcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSA6XG4gICAgICAoVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUudCwgKFR5cGVzLkN5Y2xlX2hvb2sudFtAc2V4cC5vcGFxdWVdKSkgSGFzaHRibC50XG4gIDsgbXV0YWJsZSBsYXN0X2N5Y2xlX3RpbWUgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgbGFzdF9jeWNsZV9udW1fam9icyA6IGludFxuICA7IG11dGFibGUgdG90YWxfY3ljbGVfdGltZSA6IFRpbWVfbnMuU3Bhbi50XG4gIDsgbXV0YWJsZSB0aW1lX3NvdXJjZSA6IHJlYWRfd3JpdGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudFxuICAoKiBbZXh0ZXJuYWxfam9ic10gaXMgYSBxdWV1ZSBvZiBhY3Rpb25zIHNlbnQgZnJvbSBvdXRzaWRlIG9mIGFzeW5jLiAgVGhpcyBpcyBmb3IgdGhlXG4gICAgIGNhc2Ugd2hlcmUgd2Ugd2FudCB0byBzY2hlZHVsZSBhIGpvYiBvciBmaWxsIGFuIGl2YXIgZnJvbSBhIGNvbnRleHQgd2hlcmUgaXQgaXMgbm90XG4gICAgIHNhZmUgdG8gcnVuIGFzeW5jIGNvZGUsIGJlY2F1c2UgdGhlIGFzeW5jIGxvY2sgaXNuJ3QgaGVsZC4gIEZvciBpbnN0YW5jZTogLSBpbiBhblxuICAgICBPQ2FtbCBmaW5hbGl6ZXIsIGFzIHRoZXkgY2FuIHJ1biBhdCBhbnkgdGltZSBpbiBhbnkgdGhyZWFkLlxuXG4gICAgIFRoZSB3YXkgdG8gZG8gaXQgaXMgdG8gcXVldWUgYSB0aHVuayBpbiBbZXh0ZXJuYWxfam9ic10gYW5kIGNhbGxcbiAgICAgW3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIG5vdGlmeWluZyB0aGUgc2NoZWR1bGVyXG4gICAgIHRoYXQgbmV3IGFjdGlvbnMgYXJlIGF2YWlsYWJsZS5cblxuICAgICBXaGVuIHVzaW5nIEFzeW5jIG9uIHVuaXgsIFt0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9va10gaXMgc2V0IGluIFtBc3luY191bml4XVxuICAgICB0byBjYWxsIFtJbnRlcnJ1cHRvci50aHJlYWRfc2FmZV9pbnRlcnJ1cHRdLCB3aGljaCB3aWxsIHdha2UgdXAgdGhlXG4gICAgIFtBc3luY191bml4XSBzY2hlZHVsZXIgYW5kIHJ1biBhIGN5Y2xlLlxuXG4gICAgIE5vdGUgdGhhdCB0aGlzIGhvb2sgbWlnaHQgYmUgdXNlZCBpbiBvdGhlciBjb250ZXh0IChqc19vZl9vY2FtbCwgbWlyYWdlKS5cblxuICAgICBXaGVuIHJ1bm5pbmcgYSBjeWNsZSwgd2UgcHVsbCBleHRlcm5hbCBhY3Rpb25zIGF0IGV2ZXJ5IGpvYiBhbmQgcGVyZm9ybSB0aGVtXG4gICAgIGltbWVkaWF0ZWx5LiAqKVxuICA7IGV4dGVybmFsX2pvYnMgOiBFeHRlcm5hbF9qb2IudCBUaHJlYWRfc2FmZV9xdWV1ZS50XG4gIDsgbXV0YWJsZSB0aHJlYWRfc2FmZV9leHRlcm5hbF9qb2JfaG9vayA6IHVuaXQgLT4gdW5pdFxuICAoKiBbam9iX3F1ZXVlZF9ob29rXSBhbmQgW2V2ZW50X2FkZGVkX2hvb2tdIGFpbSB0byBiZSB1c2VkIGJ5IGpzX29mX29jYW1sLiAqKVxuICAoKiBXZSB1c2UgW18gb3B0aW9uXSBoZXJlIGJlY2F1c2UgdGhvc2UgaG9va3Mgd2lsbCBub3QgYmUgc2V0IGluIHRoZSBjb21tb24gY2FzZVxuICAgICBhbmQgd2Ugd2FudCB0byBhdm9pZCBleHRyYSBmdW5jdGlvbiBjYWxscy4gKilcbiAgOyBtdXRhYmxlIGpvYl9xdWV1ZWRfaG9vayA6IChQcmlvcml0eS50IC0+IHVuaXQpIG9wdGlvblxuICA7IG11dGFibGUgZXZlbnRfYWRkZWRfaG9vayA6IChUaW1lX25zLnQgLT4gdW5pdCkgb3B0aW9uXG4gIDsgbXV0YWJsZSB5aWVsZCA6ICgodW5pdCwgcmVhZF93cml0ZSkgVHlwZXMuQnZhci50W0BzZXhwLm9wYXF1ZV0pXG4gIDsgbXV0YWJsZSB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA6XG4gICAgICAoKHVuaXQsIHJlYWRfd3JpdGUpIFR5cGVzLkJ2YXIudFtAc2V4cC5vcGFxdWVdICgqIGNvbmZpZ3VyYXRpb24qKSlcbiAgOyBtdXRhYmxlIGNoZWNrX2ludmFyaWFudHMgOiBib29sXG4gIDsgbXV0YWJsZSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA6IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnRcbiAgOyBtdXRhYmxlIHJlY29yZF9iYWNrdHJhY2VzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCB1bmNhdWdodF9leG5fdW53cmFwcGVkID0gdW5jYXVnaHRfZXhuXG5cbmxldCB1bmNhdWdodF9leG4gdCA9XG4gIG1hdGNoIHQudW5jYXVnaHRfZXhuIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChleG4sIHNleHApIC0+XG4gICAgU29tZSAoRXJyb3IuY3JlYXRlIFwidW5oYW5kbGVkIGV4Y2VwdGlvblwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdKVxuOztcblxubGV0IG51bV9wZW5kaW5nX2pvYnMgdCA9XG4gIEpvYl9xdWV1ZS5sZW5ndGggdC5ub3JtYWxfcHJpb3JpdHlfam9icyArIEpvYl9xdWV1ZS5sZW5ndGggdC5sb3dfcHJpb3JpdHlfam9ic1xuOztcblxubGV0IG51bV9qb2JzX3J1biB0ID1cbiAgSm9iX3F1ZXVlLm51bV9qb2JzX3J1biB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzXG4gICsgSm9iX3F1ZXVlLm51bV9qb2JzX3J1biB0Lmxvd19wcmlvcml0eV9qb2JzXG47O1xuXG5sZXQgbGFzdF9jeWNsZV9udW1fam9icyB0ID0gdC5sYXN0X2N5Y2xlX251bV9qb2JzXG5cbmxldCB1bm9yZGVyZWRfaXNfc3VibGlzdCB+ZXF1YWwgfnN1Ymxpc3Q6c21hbGwgbGFyZ2UgPVxuICBsZXQgcmVtb3ZlIGwgeCA9XG4gICAgbWF0Y2ggTGlzdC5zcGxpdF93aGlsZSBsIH5mOihmdW4geSAtPiBub3QgKGVxdWFsIHkgeCkpIHdpdGhcbiAgICB8IF8sIFtdIC0+IE5vbmVcbiAgICB8IGwsIF8gOjogciAtPiBTb21lIChsIEAgcilcbiAgaW5cbiAgT3B0aW9uLmlzX3NvbWVcbiAgICAoTGlzdC5mb2xkIHNtYWxsIH5pbml0OihTb21lIGxhcmdlKSB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgT3B0aW9uLmJpbmQgYWNjIH5mOihmdW4gbCAtPiByZW1vdmUgbCB4KSkpXG47O1xuXG5sZXQgY2hlY2tfaG9va190YWJsZV9pbnZhcmlhbnQgdGFibGUgbGlzdCA9XG4gICgqIFlvdSBjYW4gaW4gZmFjdCBoYXZlIGhvb2tzIGluIHRoZSBsaXN0IGZvciB3aGljaCB0aGVyZSBpcyBubyBjb3JyZXNwb25kaW5nIGVudHJ5IGluXG4gICAgIHRoZSB0YWJsZS4gU3VjaCBob29rcyBjYW4gbmV2ZXIgYmUgcmVtb3ZlZC4gKilcbiAgYXNzZXJ0ICh1bm9yZGVyZWRfaXNfc3VibGlzdCB+ZXF1YWw6cGh5c19lcXVhbCB+c3VibGlzdDooSGFzaHRibC5kYXRhIHRhYmxlKSBsaXN0KVxuOztcblxubGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jaGVja19hY2Nlc3M6aWdub3JlXG4gICAgICB+am9iX3Bvb2w6KGNoZWNrIEpvYl9wb29sLmludmFyaWFudClcbiAgICAgIH5ub3JtYWxfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH5sb3dfcHJpb3JpdHlfam9iczooY2hlY2sgSm9iX3F1ZXVlLmludmFyaWFudClcbiAgICAgIH52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBxIC0+IERlcXVlLml0ZXIgcSB+ZjpWZXJ5X2xvd19wcmlvcml0eV93b3JrZXIuaW52YXJpYW50KSlcbiAgICAgIH5tYWluX2V4ZWN1dGlvbl9jb250ZXh0OihjaGVjayBFeGVjdXRpb25fY29udGV4dC5pbnZhcmlhbnQpXG4gICAgICB+Y3VycmVudF9leGVjdXRpb25fY29udGV4dDooY2hlY2sgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50KVxuICAgICAgfnVuY2F1Z2h0X2V4bjpcbiAgICAgICAgKGNoZWNrIChmdW4gdW5jYXVnaHRfZXhuIC0+XG4gICAgICAgICAgIGlmIGlzX3NvbWUgdW5jYXVnaHRfZXhuIHRoZW4gYXNzZXJ0IChudW1fcGVuZGluZ19qb2JzIHQgPSAwKSkpXG4gICAgICB+Y3ljbGVfY291bnQ6KGNoZWNrIChmdW4gY3ljbGVfY291bnQgLT4gYXNzZXJ0IChjeWNsZV9jb3VudCA+PSAwKSkpXG4gICAgICB+Y3ljbGVfc3RhcnQ6aWdub3JlXG4gICAgICB+aW5fY3ljbGU6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0Omlnbm9yZVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIC0+XG4gICAgICAgICAgIGNoZWNrX2hvb2tfdGFibGVfaW52YXJpYW50XG4gICAgICAgICAgICAgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlXG4gICAgICAgICAgICAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQpKVxuICAgICAgfnJ1bl9ldmVyeV9jeWNsZV9lbmQ6aWdub3JlXG4gICAgICB+cnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gcnVuX2V2ZXJ5X2N5Y2xlX2VuZF9zdGF0ZSAtPlxuICAgICAgICAgICBjaGVja19ob29rX3RhYmxlX2ludmFyaWFudCBydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCkpXG4gICAgICB+bGFzdF9jeWNsZV90aW1lOmlnbm9yZVxuICAgICAgfnRvdGFsX2N5Y2xlX3RpbWU6aWdub3JlXG4gICAgICB+bGFzdF9jeWNsZV9udW1fam9iczpcbiAgICAgICAgKGNoZWNrIChmdW4gbGFzdF9jeWNsZV9udW1fam9icyAtPiBhc3NlcnQgKGxhc3RfY3ljbGVfbnVtX2pvYnMgPj0gMCkpKVxuICAgICAgfnRpbWVfc291cmNlOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlJlYWRfd3JpdGUuaW52YXJpYW50X3dpdGhfam9icyB+am9iOihmdW4gam9iIC0+XG4gICAgICAgICAgICAgIGFzc2VydCAoUG9vbC5wb2ludGVyX2lzX3ZhbGlkIHQuam9iX3Bvb2wgam9iKSkpKVxuICAgICAgfmV4dGVybmFsX2pvYnM6aWdub3JlXG4gICAgICB+dGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2s6aWdub3JlXG4gICAgICB+am9iX3F1ZXVlZF9ob29rOmlnbm9yZVxuICAgICAgfmV2ZW50X2FkZGVkX2hvb2s6aWdub3JlXG4gICAgICB+eWllbGQ6aWdub3JlXG4gICAgICB+eWllbGRfdW50aWxfbm9fam9ic19yZW1haW46aWdub3JlXG4gICAgICB+Y2hlY2tfaW52YXJpYW50czppZ25vcmVcbiAgICAgIH5tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZTppZ25vcmVcbiAgICAgIH5yZWNvcmRfYmFja3RyYWNlczppZ25vcmVcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlNjaGVkdWxlci5pbnZhcmlhbnQgZmFpbGVkXCIgKGV4biA6IGV4bikgKHQgOiB0KV1cbjs7XG5cbmxldCBmcmVlX2pvYiB0IGpvYiA9IFBvb2wuZnJlZSB0LmpvYl9wb29sIGpvYlxuXG5sZXQgZW5xdWV1ZSB0IChleGVjdXRpb25fY29udGV4dCA6IEV4ZWN1dGlvbl9jb250ZXh0LnQpIGYgYSA9XG4gICgqIElmIHRoZXJlJ3MgYmVlbiBhbiB1bmNhdWdodCBleG4sIHdlIGRvbid0IGFkZCB0aGUgam9iLCBzaW5jZSB3ZSBkb24ndCB3YW50IGFueSBqb2JzXG4gICAgIHRvIHJ1biBvbmNlIHRoZXJlJ3MgYmVlbiBhbiB1bmNhdWdodCBleG4uICopXG4gIGlmIGlzX25vbmUgdC51bmNhdWdodF9leG5cbiAgdGhlbiAoXG4gICAgbGV0IHByaW9yaXR5ID0gZXhlY3V0aW9uX2NvbnRleHQucHJpb3JpdHkgaW5cbiAgICBsZXQgam9iX3F1ZXVlID1cbiAgICAgIG1hdGNoIHByaW9yaXR5IHdpdGhcbiAgICAgIHwgTm9ybWFsIC0+IHQubm9ybWFsX3ByaW9yaXR5X2pvYnNcbiAgICAgIHwgTG93IC0+IHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICBpblxuICAgIEpvYl9xdWV1ZS5lbnF1ZXVlIGpvYl9xdWV1ZSBleGVjdXRpb25fY29udGV4dCBmIGE7XG4gICAgbWF0Y2ggdC5qb2JfcXVldWVkX2hvb2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBmIC0+IGYgcHJpb3JpdHkpXG47O1xuXG5sZXQgZW5xdWV1ZV9qb2IgdCBqb2IgfmZyZWVfam9iID1cbiAgbGV0IGpvYl9wb29sID0gdC5qb2JfcG9vbCBpblxuICBlbnF1ZXVlXG4gICAgdFxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQwKVxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQxKVxuICAgIChQb29sLmdldCBqb2JfcG9vbCBqb2IgUG9vbC5TbG90LnQyKTtcbiAgaWYgZnJlZV9qb2IgdGhlbiBQb29sLmZyZWUgdC5qb2JfcG9vbCBqb2Jcbjs7XG5cbmxldCBoYW5kbGVfZmlyZWQgKHRpbWVfc291cmNlIDogXyBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5UMS50KSBqb2Jfb3JfZXZlbnQgPVxuICBsZXQgb3BlbiBKb2Jfb3JfZXZlbnQuTWF0Y2ggaW5cbiAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgbWF0Y2ggaywgcHJvamVjdCBrIGpvYl9vcl9ldmVudCB3aXRoXG4gIHwgSm9iLCBqb2IgLT4gZW5xdWV1ZV9qb2IgdGltZV9zb3VyY2Uuc2NoZWR1bGVyIGpvYiB+ZnJlZV9qb2I6dHJ1ZVxuICB8IEV2ZW50LCBldmVudCAtPiBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5maXJlIHRpbWVfc291cmNlIGV2ZW50XG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gIGxldCByZWMgdCA9XG4gICAgeyBjaGVja19hY2Nlc3MgPSBOb25lXG4gICAgOyBqb2JfcG9vbCA9IEpvYl9wb29sLmNyZWF0ZSAoKVxuICAgIDsgbm9ybWFsX3ByaW9yaXR5X2pvYnMgPSBKb2JfcXVldWUuY3JlYXRlICgpXG4gICAgOyBsb3dfcHJpb3JpdHlfam9icyA9IEpvYl9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMgPSBEZXF1ZS5jcmVhdGUgKClcbiAgICA7IG1haW5fZXhlY3V0aW9uX2NvbnRleHQgPSBFeGVjdXRpb25fY29udGV4dC5tYWluXG4gICAgOyBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHQubWFpblxuICAgIDsgdW5jYXVnaHRfZXhuID0gTm9uZVxuICAgIDsgY3ljbGVfc3RhcnQgPSBub3dcbiAgICA7IGN5Y2xlX2NvdW50ID0gMFxuICAgIDsgaW5fY3ljbGUgPSBmYWxzZVxuICAgIDsgcnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0ID0gW11cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSA9IEhhc2h0YmwuY3JlYXRlIChtb2R1bGUgVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUpXG4gICAgOyBydW5fZXZlcnlfY3ljbGVfZW5kID0gW11cbiAgICA7IHJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgPSBIYXNodGJsLmNyZWF0ZSAobW9kdWxlIFR5cGVzLkN5Y2xlX2hvb2tfaGFuZGxlKVxuICAgIDsgbGFzdF9jeWNsZV90aW1lID0gc2VjIDAuXG4gICAgOyBsYXN0X2N5Y2xlX251bV9qb2JzID0gMFxuICAgIDsgdG90YWxfY3ljbGVfdGltZSA9IHNlYyAwLlxuICAgIDsgdGltZV9zb3VyY2VcbiAgICA7IGV4dGVybmFsX2pvYnMgPSBUaHJlYWRfc2FmZV9xdWV1ZS5jcmVhdGUgKClcbiAgICA7IHRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rID0gaWdub3JlXG4gICAgOyBqb2JfcXVldWVkX2hvb2sgPSBOb25lXG4gICAgOyBldmVudF9hZGRlZF9ob29rID0gTm9uZVxuICAgIDsgeWllbGQgPSBCdmFyLmNyZWF0ZSAoKVxuICAgIDsgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gPSBCdmFyLmNyZWF0ZSAoKSAoKiBjb25maWd1cmF0aW9uICopXG4gICAgOyBjaGVja19pbnZhcmlhbnRzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5jaGVja19pbnZhcmlhbnRzXG4gICAgOyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSA9XG4gICAgICAgIEFzeW5jX2tlcm5lbF9jb25maWcubWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGVcbiAgICA7IHJlY29yZF9iYWNrdHJhY2VzID0gQXN5bmNfa2VybmVsX2NvbmZpZy5yZWNvcmRfYmFja3RyYWNlc1xuICAgIH1cbiAgYW5kIGV2ZW50cyA9XG4gICAgVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOkFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93XG4gIGFuZCB0aW1lX3NvdXJjZSA6IF8gU3luY2hyb25vdXNfdGltZV9zb3VyY2UuVDEudCA9XG4gICAgeyBpZCA9IFR5cGVzLlRpbWVfc291cmNlX2lkLmNyZWF0ZSAoKVxuICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBbXVxuICAgIDsgYW1fYWR2YW5jaW5nID0gZmFsc2VcbiAgICA7IGV2ZW50c1xuICAgIDsgaGFuZGxlX2ZpcmVkID0gKGZ1biBhbGFybSAtPiBoYW5kbGVfZmlyZWQgdGltZV9zb3VyY2UgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpXG4gICAgOyBmaXJlZF9ldmVudHMgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgaXNfd2FsbF9jbG9jayA9IHRydWVcbiAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBFdmVudC5PcHRpb24ubm9uZVxuICAgIDsgc2NoZWR1bGVyID0gdFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IGlzX2RlYWQgdCA9IGlzX3NvbWUgdC51bmNhdWdodF9leG5cbmxldCBzZXRfY2hlY2tfYWNjZXNzIHQgZiA9IHQuY2hlY2tfYWNjZXNzIDwtIGZcblxubGV0IHRfcmVmID1cbiAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIGNyZWF0ZSB3aXRoXG4gIHwgT2sgdCAtPiByZWYgdFxuICB8IEVycm9yIGV4biAtPlxuICAgIERlYnVnLmxvZyBcIkFzeW5jIGNhbm5vdCBjcmVhdGUgaXRzIHJhdyBzY2hlZHVsZXJcIiBleG4gWyVzZXhwX29mOiBleG5dO1xuICAgIGV4aXQgMVxuOztcblxubGV0IGNoZWNrX2FjY2VzcyB0ID1cbiAgbWF0Y2ggdC5jaGVja19hY2Nlc3Mgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT4gZiAoKVxuOztcblxubGV0IHQgKCkgPVxuICBsZXQgdCA9ICF0X3JlZiBpblxuICBjaGVja19hY2Nlc3MgdDtcbiAgdFxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCA9XG4gIGlmIHQucmVjb3JkX2JhY2t0cmFjZXNcbiAgdGhlbiBFeGVjdXRpb25fY29udGV4dC5yZWNvcmRfYmFja3RyYWNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuICBlbHNlIHQuY3VycmVudF9leGVjdXRpb25fY29udGV4dFxuOztcblxubGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQxIHQgdG1wX2NvbnRleHQgfmYgeCA9XG4gIGxldCBvbGRfY29udGV4dCA9IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgdCBpblxuICBzZXRfZXhlY3V0aW9uX2NvbnRleHQgdCB0bXBfY29udGV4dDtcbiAgcHJvdGVjdHggfmYgeCB+ZmluYWxseTooZnVuIF8gLT4gc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgb2xkX2NvbnRleHQpXG47O1xuXG5sZXQgd2l0aF9leGVjdXRpb25fY29udGV4dCB0IHRtcF9jb250ZXh0IH5mID0gd2l0aF9leGVjdXRpb25fY29udGV4dDEgdCB0bXBfY29udGV4dCB+ZiAoKVxuXG5sZXQgY3JlYXRlX2pvYiAodHlwZSBhKSB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9XG4gIGlmIFBvb2wuaXNfZnVsbCB0LmpvYl9wb29sIHRoZW4gdC5qb2JfcG9vbCA8LSBQb29sLmdyb3cgdC5qb2JfcG9vbDtcbiAgUG9vbC5uZXczXG4gICAgdC5qb2JfcG9vbFxuICAgIGV4ZWN1dGlvbl9jb250ZXh0XG4gICAgKE9iai5tYWdpYyAoZiA6IGEgLT4gdW5pdCkgOiBPYmoudCAtPiB1bml0KVxuICAgIChPYmoucmVwciAoYSA6IGEpKVxuOztcblxubGV0IGdvdF91bmNhdWdodF9leG4gdCBleG4gc2V4cCA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiZ290X3VuY2F1Z2h0X2V4blwiIChleG4sIHNleHApIFslc2V4cF9vZjogRXhuLnQgKiBTZXhwLnRdO1xuICBMaXN0Lml0ZXIgWyB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzOyB0Lmxvd19wcmlvcml0eV9qb2JzIF0gfmY6Sm9iX3F1ZXVlLmNsZWFyO1xuICB0LnVuY2F1Z2h0X2V4biA8LSBTb21lIChleG4sIHNleHApXG47O1xuXG4oKiBbc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gZW5hYmxlcyBzdWJzZXF1ZW50IGNhbGxzIG9mIFtydW5fam9ic11cbiAgIHRvIHJ1biB1cCB0byBbbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV0gam9icyBvZiBlYWNoIHByaW9yaXR5IGxldmVsLiAqKVxubGV0IHN0YXJ0X2N5Y2xlIHQgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHkgPVxuICBsZXQgbiA9IE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5IGluXG4gIEpvYl9xdWV1ZS5zZXRfam9ic19sZWZ0X3RoaXNfY3ljbGUgdC5ub3JtYWxfcHJpb3JpdHlfam9icyBuO1xuICBKb2JfcXVldWUuc2V0X2pvYnNfbGVmdF90aGlzX2N5Y2xlIHQubG93X3ByaW9yaXR5X2pvYnMgblxuOztcblxuKCogW3J1bl9qb2JzIHRdIHJlbW92ZXMgam9icyBmcm9tIFt0XSBvbmUgYXQgYSB0aW1lIGFuZCBydW5zIHRoZW0sIHN0b3BwaW5nIGFzIHNvb25cbiAgIGFzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gaXMgcmFpc2VkLCBvciB3aGVuIG5vIG1vcmUgam9icyBjYW4gYmUgcnVuIGF0IGFueSBwcmlvcml0eSxcbiAgIGFzIHBlciBbfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHldLiAqKVxubGV0IHJlYyBydW5fam9icyB0ID1cbiAgbWF0Y2ggSm9iX3F1ZXVlLnJ1bl9qb2JzIHQubm9ybWFsX3ByaW9yaXR5X2pvYnMgdCB3aXRoXG4gIHwgRXJyb3IgXyBhcyBlIC0+IGVcbiAgfCBPayAoKSAtPlxuICAgIChtYXRjaCBKb2JfcXVldWUucnVuX2pvYnMgdC5sb3dfcHJpb3JpdHlfam9icyB0IHdpdGhcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICB8IE9rICgpIC0+XG4gICAgICAgaWYgSm9iX3F1ZXVlLmNhbl9ydW5fYV9qb2IgdC5ub3JtYWxfcHJpb3JpdHlfam9ic1xuICAgICAgIHx8IEpvYl9xdWV1ZS5jYW5fcnVuX2Ffam9iIHQubG93X3ByaW9yaXR5X2pvYnNcbiAgICAgICB0aGVuIHJ1bl9qb2JzIHRcbiAgICAgICBlbHNlIE9rICgpKVxuOztcblxubGV0IHN0YWJpbGl6ZSB0ID1cbiAgc3RhcnRfY3ljbGVcbiAgICB0XG4gICAgfm1heF9udW1fam9ic19wZXJfcHJpb3JpdHk6XG4gICAgICAoTWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUuY3JlYXRlX2V4biBJbnQubWF4X3ZhbHVlKTtcbiAgbWF0Y2ggcnVuX2pvYnMgdCB3aXRoXG4gIHwgT2sgKCkgLT4gT2sgKClcbiAgfCBFcnJvciAoZXhuLCBfYmFja3RyYWNlKSAtPiBFcnJvciBleG5cbjs7XG5cbmxldCBjcmVhdGVfdGltZV9zb3VyY2VcbiAgICAgID8odGltaW5nX3doZWVsX2NvbmZpZyA9IEFzeW5jX2tlcm5lbF9jb25maWcudGltaW5nX3doZWVsX2NvbmZpZylcbiAgICAgIH5ub3dcbiAgICAgICgpXG4gID1cbiAgbGV0IHQgPSB0ICgpIGluXG4gIGxldCBldmVudHMgPSBUaW1pbmdfd2hlZWwuY3JlYXRlIH5jb25maWc6dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQ6bm93IGluXG4gIGxldCByZWMgdGltZV9zb3VyY2UgOiBfIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLlQxLnQgPVxuICAgIHsgaWQgPSBUeXBlcy5UaW1lX3NvdXJjZV9pZC5jcmVhdGUgKClcbiAgICA7IGFkdmFuY2VfZXJyb3JzID0gW11cbiAgICA7IGFtX2FkdmFuY2luZyA9IGZhbHNlXG4gICAgOyBldmVudHNcbiAgICA7IGhhbmRsZV9maXJlZCA9IChmdW4gYWxhcm0gLT4gaGFuZGxlX2ZpcmVkIHRpbWVfc291cmNlIChBbGFybS52YWx1ZSBldmVudHMgYWxhcm0pKVxuICAgIDsgZmlyZWRfZXZlbnRzID0gRXZlbnQuT3B0aW9uLm5vbmVcbiAgICA7IGlzX3dhbGxfY2xvY2sgPSBmYWxzZVxuICAgIDsgbW9zdF9yZWNlbnRseV9maXJlZCA9IEV2ZW50Lk9wdGlvbi5ub25lXG4gICAgOyBzY2hlZHVsZXIgPSB0XG4gICAgfVxuICBpblxuICB0aW1lX3NvdXJjZVxuOztcblxubGV0IHdhbGxfY2xvY2sgKCkgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5yZWFkX29ubHkgKHQgKCkpLnRpbWVfc291cmNlXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgQ2VsbCA9IFR5cGVzLkNlbGxcblxudHlwZSBhbnkgPVxuICBbIGBFbXB0eVxuICB8IGBFbXB0eV9vbmVfaGFuZGxlclxuICB8IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICB8IGBGdWxsXG4gIHwgYEluZGlyXG4gIF1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSXZhci50ID0geyBtdXRhYmxlIGNlbGwgOiAoJ2EsIGFueSkgY2VsbCB9XG5cbigqIFRoZSBbJ2JdIGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBjb25zdHJ1Y3Rvci4gIFRoaXMgYWxsb3dzIHVzIHRvIHdyaXRlIGZ1bmN0aW9ucyB0aGF0XG4gICB0YWtlIG9ubHkgb25lIG9mIHRoZSBjb25zdHJ1Y3RvcnMsIHdpdGggbm8gcnVudGltZSB0ZXN0LlxuXG4gICBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGRpcmVjdGVkIGdyYXBoIHdpdGggaXZhcnMgYXMgbm9kZXMgYW5kIFtJbmRpcl1zIGFzXG4gICBlZGdlcyBpcyBhY3ljbGljLiAgVGhlIG9ubHkgZnVuY3Rpb25zIHRoYXQgY3JlYXRlIGFuIFtJbmRpcl0gYXJlIFtzcXVhc2hdIGFuZFxuICAgW2Nvbm5lY3RdLCBhbmQgZm9yIHRob3NlLCB0aGUgdGFyZ2V0IG9mIHRoZSBbSW5kaXJdIGlzIGFsd2F5cyBhIG5vbi1bSW5kaXJdLiAgVGh1cywgdGhlXG4gICBuZXdseSBhZGRlZCBlZGdlcyBhcmUgbmV2ZXIgcGFydCBvZiBhIGN5Y2xlLiAqKVxuYW5kICgnYSwgJ2IpIGNlbGwgPSAoJ2EsICdiKSBUeXBlcy5DZWxsLnQgPVxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIDpcbiAgICAgIHsgKCogW3J1bl0gaXMgbXV0YWJsZSBzbyB3ZSBjYW4gc2V0IGl0IHRvIFtpZ25vcmVdIHdoZW4gdGhlIGhhbmRsZXIgaXMgcmVtb3ZlZC5cbiAgICAgICAgICAgVGhpcyBpcyB1c2VkIHdoZW4gd2UgaW5zdGFsbCBhIGhhbmRsZXIgb24gYSBmdWxsIGl2YXIgc2luY2UgaXQgaXMgaW1tZWRpYXRlbHlcbiAgICAgICAgICAgYWRkZWQgdG8gdGhlIHNjaGVkdWxlci4gKilcbiAgICAgICAgbXV0YWJsZSBydW4gOiAnYSAtPiB1bml0XG4gICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgOyAoKiBbcHJldl0gYW5kIFtuZXh0XSBjaXJjdWxhcmx5IGRvdWJseSBsaW5rIGFsbCBoYW5kbGVycyBvZiB0aGUgc2FtZSBpdmFyLiAqKVxuICAgICAgICBtdXRhYmxlIHByZXYgOiAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcbiAgICAgIDsgbXV0YWJsZSBuZXh0IDogKCdhLCBbIGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gICAgICB9XG4gICAgICAtPiAoJ2EsIFs+IGBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBdKSBjZWxsXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgOlxuICAgICAgKCdhIC0+IHVuaXQpICogRXhlY3V0aW9uX2NvbnRleHQudFxuICAgICAgLT4gKCdhLCBbPiBgRW1wdHlfb25lX2hhbmRsZXIgXSkgY2VsbFxuICB8IEVtcHR5IDogKCdhLCBbPiBgRW1wdHkgXSkgY2VsbFxuICB8IEZ1bGwgOiAnYSAtPiAoJ2EsIFs+IGBGdWxsIF0pIGNlbGxcbiAgfCBJbmRpciA6ICdhIHQgLT4gKCdhLCBbPiBgSW5kaXIgXSkgY2VsbFxuXG5tb2R1bGUgSGFuZGxlciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAoJ2EsIFsgYEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF0pIGNlbGxcblxuICBsZXQgcnVuIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucnVuXG4gIGxldCBleGVjdXRpb25fY29udGV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0LmV4ZWN1dGlvbl9jb250ZXh0XG4gIGxldCBwcmV2IChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB0IDogXyB0KSA9IHQucHJldlxuICBsZXQgbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgPSB0Lm5leHRcbiAgbGV0IHNldF9ydW4gKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHQgOiBfIHQpIHggPSB0LnJ1biA8LSB4XG4gIGxldCBzZXRfcHJldiAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQucHJldiA8LSB4XG4gIGxldCBzZXRfbmV4dCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgdCA6IF8gdCkgeCA9IHQubmV4dCA8LSB4XG5cbiAgbGV0IGNyZWF0ZSBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICAgICgqIEFuIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBvZjpcblxuICAgICAgIHtbXG4gICAgICAgICBsZXQgcmVjIHQgPVxuICAgICAgICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICAgICAgIHsgcnVuXG4gICAgICAgICAgICAgOyBleGVjdXRpb25fY29udGV4dFxuICAgICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0XG4gICAgICAgICAgICAgOyBuZXh0ICAgICAgICAgICAgICA9IHQgfVxuICAgICAgICAgaW5cbiAgICAgICAgIGgxIF19XG5cbiAgICAgICBIb3dldmVyIHRoZSBjb21waWxhdGlvbiBvZiByZWN1cnNpdmUgdmFsdWUgaW4gT0NhbWwgaXMgbm90IG9wdGltYWw6IHRoZSB2YWx1ZSBpc1xuICAgICAgIGFsbG9jYXRlZCB0d2ljZSBhbmQgY29waWVkIG9uY2UgKHdpdGggYSBsb29wIGNhbGxpbmcgY2FtbF9tb2RpZnkpLiAgVGhpcyBpcyBub3RcbiAgICAgICBuZWNlc3NhcnkgZm9yIHNpbXBsZSByZWN1cnNpdmUgZGVmaW5pdGlvbnMgbGlrZSB0aGlzIG9uZS5cblxuICAgICAgIEluc3RlYWQgd2UgYWxsb2NhdGUgdGhlIHZhbHVlIHdpdGggZHVtbXkgZmllbGRzIGFuZCB1cGRhdGUgdGhlbSBhZnRlci4gKilcbiAgICBsZXQgdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBPYmoubWFnaWMgTm9uZTsgbmV4dCA9IE9iai5tYWdpYyBOb25lIH1cbiAgICBpblxuICAgIHNldF9wcmV2IHQgdDtcbiAgICBzZXRfbmV4dCB0IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCBjcmVhdGUyIHJ1bjEgZXhlY3V0aW9uX2NvbnRleHQxIHJ1bjIgZXhlY3V0aW9uX2NvbnRleHQyID1cbiAgICAoKiBBbiBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gb2Y6XG5cbiAgICAgICB7W1xuICAgICAgICAgbGV0IHJlYyB0MSA9XG4gICAgICAgICAgIHsgcnVuICAgICAgICAgICAgICAgPSBydW4xXG4gICAgICAgICAgIDsgZXhlY3V0aW9uX2NvbnRleHQgPSBleGVjdXRpb25fY29udGV4dDFcbiAgICAgICAgICAgOyBwcmV2ICAgICAgICAgICAgICA9IHQyXG4gICAgICAgICAgIDsgbmV4dCAgICAgICAgICAgICAgPSB0MiB9XG4gICAgICAgICBhbmQgdDIgPVxuICAgICAgICAgICB7IHJ1biAgICAgICAgICAgICAgID0gcnVuMlxuICAgICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyXG4gICAgICAgICAgIDsgcHJldiAgICAgICAgICAgICAgPSB0MVxuICAgICAgICAgICA7IG5leHQgICAgICAgICAgICAgID0gdDEgfVxuICAgICAgICAgaW5cbiAgICAgICAgIHQxIF19ICopXG4gICAgbGV0IHQxID1cbiAgICAgIEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzXG4gICAgICAgIHsgcnVuID0gcnVuMVxuICAgICAgICA7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQxXG4gICAgICAgIDsgcHJldiA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIDsgbmV4dCA9IE9iai5tYWdpYyBOb25lXG4gICAgICAgIH1cbiAgICBpblxuICAgIGxldCB0MiA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVyc1xuICAgICAgICB7IHJ1biA9IHJ1bjI7IGV4ZWN1dGlvbl9jb250ZXh0ID0gZXhlY3V0aW9uX2NvbnRleHQyOyBwcmV2ID0gdDE7IG5leHQgPSB0MSB9XG4gICAgaW5cbiAgICBzZXRfcHJldiB0MSB0MjtcbiAgICBzZXRfbmV4dCB0MSB0MjtcbiAgICB0MVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IChleGVjdXRpb25fY29udGV4dCB0KTtcbiAgICBsZXQgciA9IHJlZiAobmV4dCB0KSBpblxuICAgIHdoaWxlIG5vdCAocGh5c19lcXVhbCAhciB0KSBkb1xuICAgICAgbGV0IHQxID0gIXIgaW5cbiAgICAgIGFzc2VydCAocGh5c19lcXVhbCAocHJldiAobmV4dCB0MSkpIHQxKTtcbiAgICAgIEV4ZWN1dGlvbl9jb250ZXh0LmludmFyaWFudCAoZXhlY3V0aW9uX2NvbnRleHQgdDEpO1xuICAgICAgciA6PSBuZXh0ICFyXG4gICAgZG9uZVxuICA7O1xuXG4gIGxldCBpc19zaW5nbGV0b24gdCA9IHBoeXNfZXF1YWwgdCAobmV4dCB0KVxuXG4gIGxldCBsZW5ndGggdCA9XG4gICAgbGV0IG4gPSByZWYgMSBpblxuICAgIGxldCByID0gcmVmIChuZXh0IHQpIGluXG4gICAgd2hpbGUgbm90IChwaHlzX2VxdWFsICFyIHQpIGRvXG4gICAgICBpbmNyIG47XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lO1xuICAgICFuXG4gIDs7XG5cbiAgbGV0IGVucXVldWUgdCBzY2hlZHVsZXIgdiA9IFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciAoZXhlY3V0aW9uX2NvbnRleHQgdCkgKHJ1biB0KSB2XG5cbiAgbGV0IHNjaGVkdWxlX2pvYnMgdCB2ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBlbnF1ZXVlIHQgc2NoZWR1bGVyIHY7XG4gICAgbGV0IHIgPSByZWYgKG5leHQgdCkgaW5cbiAgICB3aGlsZSBub3QgKHBoeXNfZXF1YWwgIXIgdCkgZG9cbiAgICAgIGVucXVldWUgIXIgc2NoZWR1bGVyIHY7XG4gICAgICByIDo9IG5leHQgIXJcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0IHVubGluayB0ID1cbiAgICBzZXRfcHJldiAobmV4dCB0KSAocHJldiB0KTtcbiAgICBzZXRfbmV4dCAocHJldiB0KSAobmV4dCB0KTtcbiAgICBzZXRfcHJldiB0IHQ7XG4gICAgc2V0X25leHQgdCB0XG4gIDs7XG5cbiAgbGV0IGFkZCB0IHJ1biBleGVjdXRpb25fY29udGV4dCA9XG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyB7IHJ1bjsgZXhlY3V0aW9uX2NvbnRleHQ7IHByZXYgPSBwcmV2IHQ7IG5leHQgPSB0IH1cbiAgICBpblxuICAgIHNldF9uZXh0IChwcmV2IHQpIHJlc3VsdDtcbiAgICBzZXRfcHJldiB0IHJlc3VsdDtcbiAgICByZXN1bHRcbiAgOztcblxuICAoKiBbc3BsaWNlIHQxIHQyXSBjcmVhdGVzOlxuXG4gICAgIHt2XG4gICAgICAgLS0+IHQxIDwtLT4gLi4uIDwtLT4gbGFzdDEgPC0tPiB0MiA8LS0+IC4uLiA8LS0+IGxhc3QyIDwtLVxuICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIHZ9ICopXG4gIGxldCBzcGxpY2UgdDEgdDIgPVxuICAgIGxldCBsYXN0MSA9IHByZXYgdDEgaW5cbiAgICBsZXQgbGFzdDIgPSBwcmV2IHQyIGluXG4gICAgc2V0X25leHQgbGFzdDEgdDI7XG4gICAgc2V0X25leHQgbGFzdDIgdDE7XG4gICAgc2V0X3ByZXYgdDEgbGFzdDI7XG4gICAgc2V0X3ByZXYgdDIgbGFzdDFcbiAgOztcblxuICBsZXQgb2ZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICBsZXQgZmlyc3QgPSBjcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgICBsZXQgcmVjIGxvb3AgcHJldiBsID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gc2V0X3ByZXYgZmlyc3QgcHJldlxuICAgICAgICB8IChydW4sIGV4ZWN1dGlvbl9jb250ZXh0KSA6OiBsIC0+XG4gICAgICAgICAgbGV0IHQgPVxuICAgICAgICAgICAgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgeyBydW47IGV4ZWN1dGlvbl9jb250ZXh0OyBwcmV2OyBuZXh0ID0gZmlyc3QgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgc2V0X25leHQgcHJldiB0O1xuICAgICAgICAgIGxvb3AgdCBsXG4gICAgICBpblxuICAgICAgbG9vcCBmaXJzdCBsO1xuICAgICAgU29tZSBmaXJzdFxuICA7O1xuXG4gIGxldCB0b19saXN0IGZpcnN0ID1cbiAgICBsZXQgcmVjIGxvb3AgdCBhY2MgPVxuICAgICAgbGV0IGFjYyA9IChydW4gdCwgZXhlY3V0aW9uX2NvbnRleHQgdCkgOjogYWNjIGluXG4gICAgICBpZiBwaHlzX2VxdWFsIHQgZmlyc3QgdGhlbiBhY2MgZWxzZSBsb29wIChwcmV2IHQpIGFjY1xuICAgIGluXG4gICAgbG9vcCAocHJldiBmaXJzdCkgW11cbiAgOztcblxuICBsZXQgc2V4cF9vZl90IF8gKHQgOiBfIHQpID1cbiAgICBsZXQgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIHsgcnVuID0gXzsgZXhlY3V0aW9uX2NvbnRleHQ7IG5leHQgPSBfOyBwcmV2ID0gXyB9KSA9XG4gICAgICB0XG4gICAgaW5cbiAgICBbJW1lc3NhZ2UgKGV4ZWN1dGlvbl9jb250ZXh0IDogRXhlY3V0aW9uX2NvbnRleHQudCldXG4gIDs7XG5lbmRcblxudHlwZSAnYSBpdmFyID0gJ2EgdFxuXG4oKiBDb21waWxlZCBhcyB0aGUgaWRlbnRpdHkuICopXG5sZXQgY2VsbF9vZl9oYW5kbGVyIDogXyBIYW5kbGVyLnQgLT4gXyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyB4IC0+ICh4IDo+IChfLCBhbnkpIGNlbGwpXG47O1xuXG5sZXQgZXF1YWwgKHQgOiBfIHQpIHQnID0gcGh5c19lcXVhbCB0IHQnXG5sZXQgaW5kaXIgdCA9IHsgY2VsbCA9IEluZGlyIHQgfVxuXG5pbmNsdWRlIFNjaGVkdWxlci5JdmFyXG5cbigqIFtzcXVhc2ggdF0gcmV0dXJucyB0aGUgbm9uLVtJbmRpcl0gaXZhciBhdCB0aGUgZW5kIG9mIHRoZSAocG9zc2libHkgZW1wdHkpIGNoYWluIG9mXG4gICBbSW5kaXJdcyBzdGFydGluZyB3aXRoIFt0XSBhbmQgZW5zdXJlcyB0aGF0IGFsbCBbSW5kaXJdcyBhbG9uZyB0aGF0IGNoYWluIGFyZSByZXBsYWNlZFxuICAgd2l0aCBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGNoYWluLiAqKVxubGV0IHNxdWFzaCA9XG4gIGxldCByZWMgZm9sbG93IGluZGlyIHQgPVxuICAgICgqIFtpbmRpciA9IEluZGlyIHRdICopXG4gICAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgICB8IEluZGlyIHQnIGFzIGluZGlyJyAtPiBmb2xsb3cgaW5kaXInIHQnXG4gICAgfCBfIC0+IGluZGlyXG4gIGluXG4gIGxldCByZWMgdXBkYXRlIHQgaW5kaXIgPVxuICAgIG1hdGNoIHQuY2VsbCB3aXRoXG4gICAgfCBJbmRpciB0JyAtPlxuICAgICAgdC5jZWxsIDwtIGluZGlyO1xuICAgICAgdXBkYXRlIHQnIGluZGlyXG4gICAgfCBfIC0+IHRcbiAgaW5cbiAgZnVuIHQgLT5cbiAgICBtYXRjaCB0LmNlbGwgd2l0aFxuICAgIHwgSW5kaXIgdCcgLT5cbiAgICAgIChtYXRjaCB0Jy5jZWxsIHdpdGhcbiAgICAgICB8IEluZGlyIHQnJyBhcyBpbmRpciAtPiB1cGRhdGUgdCAoZm9sbG93IGluZGlyIHQnJylcbiAgICAgICB8IF8gLT4gdCcgKCogbm90aGluZyB0byBkbywgc2luY2UgW3RdIGlzIGEgY2hhaW4gd2l0aCBhIHNpbmdsZSBbSW5kaXJdICopKVxuICAgIHwgXyAtPiB0XG47O1xuXG4oKiBub3RoaW5nIHRvIGRvLCBzaW5jZSBbdF0gaXNuJ3QgYW4gW0luZGlyXS4gKilcblxubGV0IGludmFyaWFudCBhX2ludmFyaWFudCB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgYSAtPiBhX2ludmFyaWFudCBhXG4gIHwgRW1wdHkgLT4gKClcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAoXywgZXhlY3V0aW9uX2NvbnRleHQpIC0+XG4gICAgRXhlY3V0aW9uX2NvbnRleHQuaW52YXJpYW50IGV4ZWN1dGlvbl9jb250ZXh0XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+IEhhbmRsZXIuaW52YXJpYW50IGhhbmRsZXJcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgOiBTZXhwLnQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRnVsbCBhIC0+IExpc3QgWyBBdG9tIFwiRnVsbFwiOyBzZXhwX29mX2EgYSBdXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBBdG9tIFwiRW1wdHlcIlxuOztcblxubGV0IHBlZWsgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gU29tZSBhXG4gIHwgRW1wdHkgfCBFbXB0eV9vbmVfaGFuZGxlciBfIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyAtPiBOb25lXG47O1xuXG5sZXQgdmFsdWUgdCB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIGEgLT4gYVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gLT5cbiAgICBmYWlsd2l0aCBpZl9lbXB0eV90aGVuX2ZhaWx3aXRoXG47O1xuXG5sZXQgdmFsdWVfZXhuIHQgPSB2YWx1ZSB0IH5pZl9lbXB0eV90aGVuX2ZhaWx3aXRoOlwiSXZhci52YWx1ZV9leG4gY2FsbGVkIG9uIGVtcHR5IGl2YXJcIlxuXG5sZXQgaXNfZW1wdHkgdCA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gZmFsc2VcbiAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbjs7XG5cbmxldCBpc19mdWxsIHQgPSBub3QgKGlzX2VtcHR5IHQpXG5cbmxldCBmaWxsIHQgdiA9XG4gIGxldCB0ID0gc3F1YXNoIHQgaW5cbiAgbWF0Y2ggdC5jZWxsIHdpdGhcbiAgfCBJbmRpciBfIC0+IGFzc2VydCBmYWxzZSAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gKilcbiAgfCBGdWxsIF8gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJJdmFyLmZpbGwgb2YgZnVsbCBpdmFyXCIgKHQgOiBfIHQpXVxuICB8IEVtcHR5IC0+IHQuY2VsbCA8LSBGdWxsIHZcbiAgfCBFbXB0eV9vbmVfaGFuZGxlciAocnVuLCBleGVjdXRpb25fY29udGV4dCkgLT5cbiAgICB0LmNlbGwgPC0gRnVsbCB2O1xuICAgIFNjaGVkdWxlci4oZW5xdWV1ZSAodCAoKSkpIGV4ZWN1dGlvbl9jb250ZXh0IHJ1biB2XG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgdC5jZWxsIDwtIEZ1bGwgdjtcbiAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG47O1xuXG5sZXQgcmVtb3ZlX2hhbmRsZXIgdCAoaGFuZGxlciA6IF8gSGFuZGxlci50KSA9XG4gIEhhbmRsZXIuc2V0X3J1biBoYW5kbGVyIGlnbm9yZTtcbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5IHwgRW1wdHlfb25lX2hhbmRsZXIgXyAtPlxuICAgICgqIFRoZXNlIGFyZSBvbmx5IHBvc3NpYmxlIGlmIFtoYW5kbGVyXSB3YXMgYWxyZWFkeSByZW1vdmVkLiAgKilcbiAgICAoKVxuICB8IEZ1bGwgXyAtPlxuICAgICgqIFRoaXMgaXMgcG9zc2libGUgaWYgW3RdIHdhcyBmaWxsZWQgYmVmb3JlIHdlIHRyeSB0byByZW1vdmUgdGhlIGhhbmRsZXIuICBFLmcuXG4gICAgICAgW0RlZmVycmVkLmNob29zZV0gd2lsbCBkbyB0aGlzLiAqKVxuICAgICgpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBjZWxsIC0+XG4gICAgaWYgSGFuZGxlci5pc19zaW5nbGV0b24gaGFuZGxlclxuICAgIHRoZW4gdC5jZWxsIDwtIEVtcHR5XG4gICAgZWxzZSAoXG4gICAgICBpZiBwaHlzX2VxdWFsIGhhbmRsZXIgY2VsbCB0aGVuIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIubmV4dCBoYW5kbGVyKTtcbiAgICAgIEhhbmRsZXIudW5saW5rIGhhbmRsZXIpXG47O1xuXG5sZXQgYWRkX2hhbmRsZXIgdCBydW4gZXhlY3V0aW9uX2NvbnRleHQgPVxuICBsZXQgdCA9IHNxdWFzaCB0IGluXG4gIG1hdGNoIHQuY2VsbCB3aXRoXG4gIHwgSW5kaXIgXyAtPiBhc3NlcnQgZmFsc2UgKCogZnVsZmlsbGVkIGJ5IFtzcXVhc2hdICopXG4gIHwgRW1wdHkgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlIHJ1biBleGVjdXRpb25fY29udGV4dCBpblxuICAgIHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjtcbiAgICBoYW5kbGVyXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICBsZXQgaGFuZGxlciA9IEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcgaW5cbiAgICB0LmNlbGwgPC0gY2VsbF9vZl9oYW5kbGVyIGhhbmRsZXI7XG4gICAgaGFuZGxlclxuICB8IEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciAtPiBIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dFxuICB8IEZ1bGwgdiAtPlxuICAgIGxldCBoYW5kbGVyID0gSGFuZGxlci5jcmVhdGUgcnVuIGV4ZWN1dGlvbl9jb250ZXh0IGluXG4gICAgKCogW3J1bl0gY2FsbHMgW2hhbmRsZXIucnVuXSwgd2hpY2gsIGlmIFtoYW5kbGVyXSBoYXMgYmVlbiByZW1vdmVkLCBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICAgdG8gW2lnbm9yZV0uICopXG4gICAgbGV0IHJ1biB2ID0gSGFuZGxlci5ydW4gaGFuZGxlciB2IGluXG4gICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHY7XG4gICAgaGFuZGxlclxuOztcblxubGV0IGhhc19oYW5kbGVycyB0ID1cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+IHRydWVcbiAgfCBFbXB0eSB8IEZ1bGwgXyAtPiBmYWxzZVxuOztcblxubGV0IHVwb24nIHQgcnVuID0gYWRkX2hhbmRsZXIgdCBydW4gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSlcblxuKCogW3Vwb25dIGlzIGNvbmNlcHR1YWxseSB0aGUgc2FtZSBhczpcblxuICAge1tcbiAgICAgbGV0IHVwb24gdCBmID0gaWdub3JlICh1cG9uJyB0IHJ1bikgXX1cblxuICAgSG93ZXZlciwgYmVsb3cgaXMgYSBtb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgd29ydGggZG9pbmcgYmVjYXVzZSBbdXBvbl1cbiAgIGlzIHZlcnkgd2lkZWx5IHVzZWQgYW5kIGlzIHNvIG11Y2ggbW9yZSBjb21tb24gdGhhbiBbdXBvbiddLiAgVGhlIGJlbG93IGltcGxlbWVudGF0aW9uXG4gICBhdm9pZHMgdGhlIHVzZSBvZiB0aGUgYmFnIG9mIGhhbmRsZXJzIGluIHRoZSBleHRyZW1lbHkgY29tbW9uIGNhc2Ugb2Ygb25lIGhhbmRsZXIgZm9yXG4gICB0aGUgZGVmZXJyZWQuICopXG5sZXQgdXBvbiB0IHJ1biA9XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IHQgPSBzcXVhc2ggdCBpblxuICBtYXRjaCB0LmNlbGwgd2l0aFxuICB8IEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlICgqIGZ1bGZpbGxlZCBieSBbc3F1YXNoXSAqKVxuICB8IEZ1bGwgdiAtPiBTY2hlZHVsZXIuZW5xdWV1ZSBzY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgfCBFbXB0eSAtPiB0LmNlbGwgPC0gRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpXG4gIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1bicsIGV4ZWN1dGlvbl9jb250ZXh0JykgLT5cbiAgICB0LmNlbGxcbiAgICA8LSBjZWxsX29mX2hhbmRsZXIgKEhhbmRsZXIuY3JlYXRlMiBydW4gZXhlY3V0aW9uX2NvbnRleHQgcnVuJyBleGVjdXRpb25fY29udGV4dCcpXG4gIHwgRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyIC0+XG4gICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyIHJ1biBleGVjdXRpb25fY29udGV4dCA6IF8gSGFuZGxlci50KVxuOztcblxuKCogW2Nvbm5lY3RdIHRha2VzIGl2YXJzIFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10sIGFuZCBtYWtlcyBbYmluZF9yaHNdXG4gICBiZSBhbiBbSW5kaXJdIHBvaW50aW5nIHRvIHRoZSBub24taW5kaXIgY2VsbCByZWFjaGFibGUgZnJvbSBbYmluZF9yZXN1bHRdLiAgT24gZW50cnlcbiAgIHRvIFtjb25uZWN0XSwgW2JpbmRfcmVzdWx0XSBhbmQgW2JpbmRfcmhzXSBtYXkgYmUgY2hhaW5zLCBzaW5jZSBbYmluZF9yaHNdIGlzIGFuXG4gICBhcmJpdHJhcnkgdXNlci1zdXBwbGllZCBkZWZlcnJlZCwgYW5kIFtiaW5kX3Jlc3VsdF0gaXMgcmV0dXJuZWQgdG8gdGhlIHVzZXIgcHJpb3IgdG9cbiAgIGJlaW5nIFtjb25uZWN0XWVkLCBhbmQgbWF5IGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gYW4gaW5kaXJlY3Rpb24gaW4gdGhlIGNhc2Ugb2ZcbiAgIHJpZ2h0LW5lc3RlZCBiaW5kcy5cblxuICAgVGhlIHB1cnBvc2Ugb2YgW2Nvbm5lY3RdIGlzIHRvIG1ha2UgdGFpbC1yZWN1cnNpdmUgYmluZCBsb29wcyB1c2UgY29uc3RhbnQgc3BhY2UuXG4gICBFLmcuOlxuXG4gICB7W1xuICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgaWYgaSA9IDBcbiAgICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBhZnRlciAoc2VjIDEuKSBpblxuICAgICAgICAgbG9vcCAoaSAtIDEpKSBdfVxuXG4gICBbY29ubmVjdF0gbWFrZXMgaW50ZXJtZWRpYXRlIGJpbmQgcmVzdWx0cyBhbGwgYmUgW0luZGlyXXMgcG9pbnRpbmcgYXQgdGhlIG91dGVybW9zdFxuICAgYmluZCwgcmF0aGVyIHRoYW4gYmVpbmcgYSBsaW5lYXItbGVuZ3RoIGNoYWluLCB3aXRoIGVhY2ggcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIG9uZS5cbiAgIFRoZW4sIHNpbmNlIHRoZSBwcm9ncmFtIGlzIG9ubHkgaG9sZGluZyBvbiB0byB0aGUgaW5uZXJtb3N0IGFuZCBvdXRlcm1vc3QgYmluZHMgYWxsIHRoZVxuICAgaW50ZXJtZWRpYXRlIG9uZXMgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkLlxuXG4gICBbY29ubmVjdF0gd29ya3MgYnkgc3F1YXNoaW5nIGl0cyBhcmd1bWVudHMgc28gdGhhdCB0aGUgW2JpbmRfcmhzXSBhbHdheXMgcG9pbnRzIGF0IHRoZVxuICAgdWx0aW1hdGUgcmVzdWx0LiAqKVxubGV0IGNvbm5lY3QgPVxuICAoKiBbcmVwb2ludF9pbmRpcnMgfml2YXIgfmluZGlyIH5iaW5kX3Jlc3VsdF0gcmVwb2ludHMgdG8gW2luZGlyXSBhbGwgdGhlIGl2YXJzIGluIHRoZVxuICAgICBjaGFpbiByZWFjaGFibGUgZnJvbSBbaXZhcl0sIGFuZCByZXR1cm5zIHRoZSBub24tW0luZGlyXSBjZWxsIGF0IHRoZSBlbmQgb2YgdGhlXG4gICAgIGNoYWluLiAgQWZ0ZXIgcmVwb2ludGluZywgd2Ugd2lsbCBtZXJnZSB0aGUgaGFuZGxlcnMgaW4gdGhhdCBjZWxsIHdpdGggdGhlIGhhbmRsZXJzXG4gICAgIGluIFtiaW5kX3Jlc3VsdF0sIGFuZCBwdXQgdGhlIG1lcmdlZCBzZXQgb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XS4gKilcbiAgbGV0IHJlYyByZXBvaW50X2luZGlycyB+aXZhciB+aW5kaXIgfmJpbmRfcmVzdWx0ID1cbiAgICBsZXQgY2VsbCA9IGl2YXIuY2VsbCBpblxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgSW5kaXIgaXZhcicgLT5cbiAgICAgIGl2YXIuY2VsbCA8LSBpbmRpcjtcbiAgICAgIHJlcG9pbnRfaW5kaXJzIH5pdmFyOml2YXInIH5pbmRpciB+YmluZF9yZXN1bHRcbiAgICB8IEZ1bGwgXyAtPiBjZWxsXG4gICAgfCBFbXB0eSB8IEVtcHR5X29uZV9oYW5kbGVyIF8gfCBFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIC0+XG4gICAgICAoKiBJdCBpcyBwb3NzaWJsZSB0aGF0IFtiaW5kX3Jlc3VsdF0gYW5kIFtiaW5kX3Joc10gYXJlIG5vdCBlcXVhbCwgYnV0IHRoZWlyIGNoYWluc1xuICAgICAgICAgb2YgaW5kaXJzIGxlYWQgdG8gdGhlIHNhbWUgbm9uLVtJbmRpcl0gY2VsbCwgaW4gd2hpY2ggY2FzZSB3ZSBjYW5ub3Qgc2V0IHRoYXRcbiAgICAgICAgIGNlbGwgdG8gcG9pbnQgdG8gaXRzZWxmLCBiZWNhdXNlIHRoYXQgd291bGQgaW50cm9kdWNlIGEgY3ljbGUuICopXG4gICAgICBpZiBub3QgKHBoeXNfZXF1YWwgaXZhciBiaW5kX3Jlc3VsdCkgdGhlbiBpdmFyLmNlbGwgPC0gaW5kaXI7XG4gICAgICBjZWxsXG4gIGluXG4gIGZ1biB+YmluZF9yZXN1bHQgfmJpbmRfcmhzIC0+XG4gICAgaWYgbm90IChwaHlzX2VxdWFsIGJpbmRfcmVzdWx0IGJpbmRfcmhzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IGJpbmRfcmVzdWx0ID0gc3F1YXNoIGJpbmRfcmVzdWx0IGluXG4gICAgICBsZXQgaW5kaXIgPSBJbmRpciBiaW5kX3Jlc3VsdCBpblxuICAgICAgbGV0IGJpbmRfcmhzX2NvbnRlbnRzID0gcmVwb2ludF9pbmRpcnMgfml2YXI6YmluZF9yaHMgfmluZGlyIH5iaW5kX3Jlc3VsdCBpblxuICAgICAgKCogdXBkYXRlIFtiaW5kX3Jlc3VsdF0gd2l0aCB0aGUgdW5pb24gb2YgaGFuZGxlcnMgaW4gW2JpbmRfcmVzdWx0XSBhbmRcbiAgICAgICAgIFtiaW5kX3Joc10gKilcbiAgICAgIG1hdGNoIGJpbmRfcmVzdWx0LmNlbGwsIGJpbmRfcmhzX2NvbnRlbnRzIHdpdGhcbiAgICAgIHwgSW5kaXIgXywgXyB8IF8sIEluZGlyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAoKiBmdWxmaWxsZWQgYnkgW3NxdWFzaF0gYW5kIFtyZXBvaW50X2luZGlyc10gKilcbiAgICAgICgqIFtjb25uZWN0XSBpcyBvbmx5IHVzZWQgaW4gYmluZCwgd2hvc2UgaXZhciBpcyBvbmx5IGV2ZXIgZXhwb3J0ZWQgYXMgYSByZWFkLW9ubHlcbiAgICAgICAgIGRlZmVycmVkLiAgVGh1cywgW2JpbmRfcmVzdWx0XSBtdXN0IGJlIGVtcHR5LiAqKVxuICAgICAgfCBGdWxsIF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IF8sIEVtcHR5IC0+ICgpXG4gICAgICB8IEVtcHR5LCBfIC0+IGJpbmRfcmVzdWx0LmNlbGwgPC0gYmluZF9yaHNfY29udGVudHNcbiAgICAgIHwgRW1wdHlfb25lX2hhbmRsZXIgKHJ1biwgZXhlY3V0aW9uX2NvbnRleHQpLCBGdWxsIHYgLT5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBiaW5kX3Joc19jb250ZW50cztcbiAgICAgICAgU2NoZWR1bGVyLihlbnF1ZXVlICh0ICgpKSkgZXhlY3V0aW9uX2NvbnRleHQgcnVuIHZcbiAgICAgIHwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlciksIEZ1bGwgdiAtPlxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGJpbmRfcmhzX2NvbnRlbnRzO1xuICAgICAgICBIYW5kbGVyLnNjaGVkdWxlX2pvYnMgaGFuZGxlciB2XG4gICAgICB8ICggRW1wdHlfb25lX2hhbmRsZXIgKHJ1bjEsIGV4ZWN1dGlvbl9jb250ZXh0MSlcbiAgICAgICAgLCBFbXB0eV9vbmVfaGFuZGxlciAocnVuMiwgZXhlY3V0aW9uX2NvbnRleHQyKSApIC0+XG4gICAgICAgIGxldCBoYW5kbGVyMSA9IEhhbmRsZXIuY3JlYXRlMiBydW4xIGV4ZWN1dGlvbl9jb250ZXh0MSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiBpblxuICAgICAgICBiaW5kX3Jlc3VsdC5jZWxsIDwtIGNlbGxfb2ZfaGFuZGxlciBoYW5kbGVyMVxuICAgICAgfCAoIChFbXB0eV9vbmVfb3JfbW9yZV9oYW5kbGVycyBfIGFzIGhhbmRsZXIxKVxuICAgICAgICAsIEVtcHR5X29uZV9oYW5kbGVyIChydW4yLCBleGVjdXRpb25fY29udGV4dDIpICkgLT5cbiAgICAgICAgaWdub3JlIChIYW5kbGVyLmFkZCBoYW5kbGVyMSBydW4yIGV4ZWN1dGlvbl9jb250ZXh0MiA6IF8gSGFuZGxlci50KVxuICAgICAgfCAoIEVtcHR5X29uZV9oYW5kbGVyIChydW4xLCBleGVjdXRpb25fY29udGV4dDEpXG4gICAgICAgICwgKEVtcHR5X29uZV9vcl9tb3JlX2hhbmRsZXJzIF8gYXMgaGFuZGxlcjIpICkgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIxID0gSGFuZGxlci5hZGQgaGFuZGxlcjIgcnVuMSBleGVjdXRpb25fY29udGV4dDEgaW5cbiAgICAgICAgYmluZF9yZXN1bHQuY2VsbCA8LSBjZWxsX29mX2hhbmRsZXIgaGFuZGxlcjFcbiAgICAgIHwgKCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMSlcbiAgICAgICAgLCAoRW1wdHlfb25lX29yX21vcmVfaGFuZGxlcnMgXyBhcyBoYW5kbGVyMikgKSAtPiBIYW5kbGVyLnNwbGljZSBoYW5kbGVyMSBoYW5kbGVyMilcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBJdmFyID0gSXZhcjBcbm1vZHVsZSBIYW5kbGVyID0gSXZhci5IYW5kbGVyXG5cbigqIERlZmVycmVkcyBwcmVzZW50IGEgY292YXJpYW50IHZpZXcgb2YgaXZhcnMuICBXZSBjb3VsZCBhY3R1YWxseSBpbXBsZW1lbnQgZGVmZXJyZWRzXG4gICB1c2luZyBhIHJlY29yZCBvZiBjbG9zdXJlcywgYXMgaW4gdGhlIFtlc3NlbmNlX29mX2RlZmVycmVkXSByZWNvcmQgYmVsb3csIGZvciB3aGljaCB0aGVcbiAgIE9DYW1sIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgY292YXJpYW5jZS4gIEhvd2V2ZXIsIGRvaW5nIHNvIHdvdWxkIG1ha2UgW0l2YXIucmVhZF0gdmVyeVxuICAgY29zdGx5LCBiZWNhdXNlIGl0IHdvdWxkIGhhdmUgdG8gYWxsb2NhdGUgbG90cyBvZiBjbG9zdXJlcyBhbmQgYSByZWNvcmQuICBJbnN0ZWFkIG9mXG4gICBkb2luZyB0aGlzLCB3ZSBtYWtlIGRlZmVycmVkcyBhbiBhYnN0cmFjdCBjb3ZhcmlhbnQgdHlwZSwgd2hpY2ggY29uY3JldGVseSBpcyBqdXN0IHRoZVxuICAgaXZhciwgYW5kIHVzZSBbT2JqLm1hZ2ljXSB0byBjb252ZXJ0IGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gYSBkZWZlcnJlZCBhbmQgaXRzIGNvbmNyZXRlXG4gICByZXByZXNlbnRhdGlvbiBhcyBhbiBpdmFyLiAgVGhpcyBbT2JqLm1hZ2ljXSBpcyBzYWZlIGJlY2F1c2UgdGhlIHJlcHJlc2VudGF0aW9uIGlzXG4gICBhbHdheXMganVzdCBhbiBpdmFyLCBhbmQgdGhlIGNvdmFyaWFuY2UgZm9sbG93cyBmcm9tIHRoZSBmYWN0IHRoYXQgYWxsIHRoZSBkZWZlcnJlZFxuICAgb3BlcmF0aW9ucyBhcmUgZXF1aXZhbGVudCB0byB0aG9zZSBpbXBsZW1lbnRlZCBkaXJlY3RseSBvbiB0b3Agb2YgdGhlXG4gICBbZXNzZW5jZV9vZl9kZWZlcnJlZF0uXG5cbiAgIHtbXG4gICAgIHR5cGUgKCsnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBlc3NlbmNlX29mX2RlZmVycmVkID1cbiAgICAgICB7IHBlZWsgICAgICAgICAgICAgICAgICAgICAgOiB1bml0IC0+ICdhIG9wdGlvblxuICAgICAgIDsgaXNfZGV0ZXJtaW5lZCAgICAgICAgICAgICA6IHVuaXQgLT4gYm9vbFxuICAgICAgIDsgdXBvbiAgICAgICAgICAgICAgICAgICAgICA6ICgnYSAtPiB1bml0KSAtPiB1bml0XG4gICAgICAgOyB1cG9uJyAgICAgICAgICAgICAgICAgICAgIDogKCdhIC0+IHVuaXQpIC0+IFVucmVnaXN0ZXIudFxuICAgICAgIDsgaW5zdGFsbF9yZW1vdmFibGVfaGFuZGxlciA6ICgnYSwgJ2V4ZWN1dGlvbl9jb250ZXh0KSBSYXdfaGFuZGxlci50IC0+IFVucmVnaXN0ZXIudDsgfSBdfSAqKVxuXG50eXBlICsnYSB0ID0gJ2EgVHlwZXMuRGVmZXJyZWQudFxuXG4oKiB0aGUgYWJzdHJhY3QgY292YXJpYW50IHR5cGUsIGVxdWl2YWxlbnQgdG8gaXZhciAqKVxuXG5sZXQgb2ZfaXZhciAodHlwZSBhKSAoaXZhciA6IGEgSXZhci50KSA6IGEgdCA9IE9iai5tYWdpYyBpdmFyXG5sZXQgdG9faXZhciAodHlwZSBhKSB0IDogYSBJdmFyLnQgPSBPYmoubWFnaWMgKHQgOiBhIHQpXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPSBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSAodG9faXZhciB0KVxubGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9IEl2YXIuc2V4cF9vZl90IHNleHBfb2ZfYSAodG9faXZhciB0KVxubGV0IHBlZWsgdCA9IEl2YXIucGVlayAodG9faXZhciB0KVxubGV0IHJldHVybiBhID0gb2ZfaXZhciAoSXZhci5jcmVhdGVfZnVsbCBhKVxubGV0IGlzX2RldGVybWluZWQgdCA9IEl2YXIuaXNfZnVsbCAodG9faXZhciB0KVxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBJdmFyLnZhbHVlXG4gICAgKHRvX2l2YXIgdClcbiAgICB+aWZfZW1wdHlfdGhlbl9mYWlsd2l0aDpcIkRlZmVycmVkLnZhbHVlX2V4biBjYWxsZWQgb24gdW5kZXRlcm1pbmVkIGRlZmVycmVkXCJcbjs7XG5cbmxldCB1cG9uIHQgZiA9IEl2YXIudXBvbiAodG9faXZhciB0KSBmXG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmIHJlc3VsdDtcbiAgb2ZfaXZhciByZXN1bHRcbjs7XG5cbigqIGRvbid0IHVzZSBbY3JlYXRlXSBoZXJlIGFzIGl0IHdvdWxkIGFsbG9jYXRlIG9uZSBtb3JlIGNsb3N1cmUgKilcbmxldCBiaW5kIHQgfmYgPVxuICBsZXQgYmluZF9yZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuY29ubmVjdCB+YmluZF9yZXN1bHQgfmJpbmRfcmhzOih0b19pdmFyIChmIGEpKSk7XG4gIG9mX2l2YXIgYmluZF9yZXN1bHRcbjs7XG5cbmxldCBhZGRfaGFuZGxlciB0IGYgZXhlY3V0aW9uX2NvbnRleHQgPSBJdmFyLmFkZF9oYW5kbGVyICh0b19pdmFyIHQpIGYgZXhlY3V0aW9uX2NvbnRleHRcbmxldCByZW1vdmVfaGFuZGxlciB0IGggPSBJdmFyLnJlbW92ZV9oYW5kbGVyICh0b19pdmFyIHQpIGhcbiIsIm9wZW4gQ29yZVxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQwXG5pbmNsdWRlIEl2YXIwXG5cbmxldCByZWFkID0gRGVmZXJyZWQub2ZfaXZhclxubGV0IGZpbGxfaWZfZW1wdHkgdCB2ID0gaWYgaXNfZW1wdHkgdCB0aGVuIGZpbGwgdCB2XG5cbmluY2x1ZGVcbiAgQmluYWJsZS5PZl9iaW5hYmxlMV93aXRob3V0X3V1aWQgW0BhbGVydCBcIi1sZWdhY3lcIl1cbiAgICAoT3B0aW9uKVxuICAgIChzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICAgIGxldCB0b19iaW5hYmxlIHQgPSBwZWVrIHRcblxuICAgICAgbGV0IG9mX2JpbmFibGUgPSBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gY3JlYXRlICgpXG4gICAgICAgIHwgU29tZSBhIC0+IGNyZWF0ZV9mdWxsIGFcbiAgICAgIDs7XG4gICAgZW5kKVxuIiwiKCoqIFtNb25hZF9zZXF1ZW5jZS5TXSBpcyBhIGdlbmVyaWMgaW50ZXJmYWNlIHNwZWNpZnlpbmcgZnVuY3Rpb25zIHRoYXQgZGVhbCB3aXRoIGFcbiAgICBjb250YWluZXIgYW5kIGEgbW9uYWQuICBJdCBpcyBzcGVjaWFsaXplZCB0byB0aGUgW0RlZmVycmVkXSBtb25hZCBhbmQgdXNlZCB3aXRoXG4gICAgdmFyaW91cyBjb250YWluZXJzIGluIG1vZHVsZXMgW0RlZmVycmVkLkFycmF5XSwgW0RlZmVycmVkLkxpc3RdLCBbRGVmZXJyZWQuUXVldWVdLCBhbmRcbiAgICBbRGVmZXJyZWQuU2VxdWVuY2VdLiAgVGhlIFtNb25hZF9zZXF1ZW5jZS5ob3ddIHR5cGUgc3BlY2lmaWVzIHRoZSBwYXJhbGxlbGlzbSBvZlxuICAgIGNvbnRhaW5lciBpdGVyYXRvcnMuICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIGhvdyA9XG4gIFsgYFBhcmFsbGVsICgqKiBsaWtlIFtgTWF4X2NvbmN1cnJlbnRfam9icyBJbnQubWF4X3ZhbHVlXSAqKVxuICB8IGBTZXF1ZW50aWFsXG4gICgqKiBbYFNlcXVlbnRpYWxdIGlzIG9mdGVuIGJ1dCBub3QgYWx3YXlzIHRoZSBzYW1lIGFzIFtgTWF4X2NvbmN1cnJlbnRfam9icyAxXVxuICAgICAgKGZvciBleGFtcGxlLCB0aGV5IGRpZmZlciBpbiB0aGUgW09yX2Vycm9yXSBtb25hZCkuICopXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgb2YgaW50XG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSAnYSBtb25hZFxuICB0eXBlICdhIHRcblxuICB2YWwgZm9sZGkgOiAnYSB0IC0+IGluaXQ6J2IgLT4gZjooaW50IC0+ICdiIC0+ICdhIC0+ICdiIG1vbmFkKSAtPiAnYiBtb25hZFxuICB2YWwgZm9sZCA6ICdhIHQgLT4gaW5pdDonYiAtPiBmOignYiAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgbW9uYWRcbiAgdmFsIGZpbmQgOiAnYSB0IC0+IGY6KCdhIC0+IGJvb2wgbW9uYWQpIC0+ICdhIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiAoaW50ICogJ2EpIG9wdGlvbiBtb25hZFxuICB2YWwgZmluZF9tYXAgOiAnYSB0IC0+IGY6KCdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2Igb3B0aW9uIG1vbmFkXG4gIHZhbCBmaW5kX21hcGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBvcHRpb24gbW9uYWQpIC0+ICdiIG9wdGlvbiBtb25hZFxuICB2YWwgZXhpc3RzIDogJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBleGlzdHNpIDogJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbCA6ICdhIHQgLT4gZjooJ2EgLT4gYm9vbCBtb25hZCkgLT4gYm9vbCBtb25hZFxuICB2YWwgZm9yX2FsbGkgOiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiBib29sIG1vbmFkKSAtPiBib29sIG1vbmFkXG4gIHZhbCBhbGwgOiAnYSBtb25hZCB0IC0+ICdhIHQgbW9uYWRcbiAgdmFsIGFsbF91bml0IDogdW5pdCBtb25hZCB0IC0+IHVuaXQgbW9uYWRcblxuICAoKiogezIgRGVmZXJyZWQgaXRlcmF0b3JzfVxuXG4gICAgICBJbiB0aGUgZm9sbG93aW5nLCB0aGUgZGVmYXVsdCBbaG93XSBpcyBbYFNlcXVlbnRpYWxdICopXG5cbiAgdmFsIGluaXQgOiA/aG93OmhvdyAtPiBpbnQgLT4gZjooaW50IC0+ICdhIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBpdGVyIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiB1bml0IG1vbmFkKSAtPiB1bml0IG1vbmFkXG4gIHZhbCBpdGVyaSA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+IHVuaXQgbW9uYWQpIC0+IHVuaXQgbW9uYWRcbiAgdmFsIG1hcCA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgbW9uYWQpIC0+ICdiIHQgbW9uYWRcbiAgdmFsIG1hcGkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgZmlsdGVyIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOignYSAtPiBib29sIG1vbmFkKSAtPiAnYSB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJpIDogP2hvdzpob3cgLT4gJ2EgdCAtPiBmOihpbnQgLT4gJ2EgLT4gYm9vbCBtb25hZCkgLT4gJ2EgdCBtb25hZFxuICB2YWwgZmlsdGVyX21hcCA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2Igb3B0aW9uIG1vbmFkKSAtPiAnYiB0IG1vbmFkXG4gIHZhbCBmaWx0ZXJfbWFwaSA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooaW50IC0+ICdhIC0+ICdiIG9wdGlvbiBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcCA6ID9ob3c6aG93IC0+ICdhIHQgLT4gZjooJ2EgLT4gJ2IgdCBtb25hZCkgLT4gJ2IgdCBtb25hZFxuICB2YWwgY29uY2F0X21hcGkgOiA/aG93OmhvdyAtPiAnYSB0IC0+IGY6KGludCAtPiAnYSAtPiAnYiB0IG1vbmFkKSAtPiAnYiB0IG1vbmFkXG5lbmRcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcbmluY2x1ZGUgRGVmZXJyZWQwXG5cbigqIFRvIGF2b2lkIGEgc3BhY2UgbGVhaywgaXQgaXMgbmVjZXNzYXJ5IHRoYXQgW25ldmVyXSBhbGxvY2F0ZXMgYSBuZXcgaXZhciB3aGVuZXZlciBpdCBpc1xuICAgY2FsbGVkLiAgQ29kZSBjYW4gYmluZCBvbiBbbmV2ZXIgKCldLCBzbyBpZiB3ZSByZS11c2VkIHRoZSBpdmFyLCB3ZSBjb3VsZCBlbmRsZXNzbHlcbiAgIGFjY3VtdWxhdGUgaGFuZGxlcnMuICopXG5sZXQgbmV2ZXIgKCkgPSBJdmFyLnJlYWQgKEl2YXIuY3JlYXRlICgpKVxuXG5tb2R1bGUgTSA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgRGVmZXJyZWQwXG5cbiAgICBsZXQgbWFwIHQgfmYgPVxuICAgICAgKCogV2UgbWFudWFsbHkgaW5saW5lIFtEZWZlcnJlZC5jcmVhdGVdIGhlcmUsIGJlY2F1c2UgdGhlIG5vbi1mbGFtYmRhIGNvbXBpbGVyIGlzbid0XG4gICAgICAgICBhYmxlIHRvIG9wdGltaXplIGF3YXkgdGhlIGNsb3N1cmUgdGhhdCB3b3VsZCBiZSBiZSBjcmVhdGVkLiAqKVxuICAgICAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICB1cG9uIHQgKGZ1biBhIC0+IEl2YXIuZmlsbCByZXN1bHQgKGYgYSkpO1xuICAgICAgb2ZfaXZhciByZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IG1hcCA9IGBDdXN0b20gbWFwXG4gIGVuZClcblxuaW5jbHVkZSBNXG5cbigqIFdlIHJlYmluZCBhbGwgdGhlIHZhcmlvdXMgW3JldHVybl1zIGJlY2F1c2UgdGhlIHVzZSBvZiB0aGUgW01vbmFkLk1ha2VdIGZ1bmN0b3JcbiAgIGNhdXNlcyB0aGUgY29tcGlsZXIgdG8gbm90IGlubGluZSBbcmV0dXJuXSwgYW5kIGhlbmNlIG1ha2VzIGl0IGltcG9zc2libGUgdG9cbiAgIHN0YXRpY2FsbHkgYWxsb2NhdGUgY29uc3RhbnRzIGxpa2UgW3JldHVybiAoKV0uICBCeSByZWJpbmRpbmcgW3JldHVybl0gYXNcbiAgIFtEZWZlcnJlZDAucmV0dXJuXSwgdGhlIGNvbXBpbGVyIGNhbiBzZWUgdGhhdDpcblxuICAge1tcbiAgICAgcmV0dXJuIGEgPSB7IEl2YXIuSW1tdXRhYmxlLiBjZWxsID0gRnVsbCBhIH0gXX1cblxuICAgQW5kIGhlbmNlLCBpZiBbYV0gaXMgY29uc3RhbnQsIHRoZW4gdGhlIHJldHVybiBpcyBjb25zdGFudCBhbmQgY2FuIGJlIHN0YXRpY2FsbHlcbiAgIGFsbG9jYXRlZC4gIFdoZW4gY29tcGlsaW5nIHdpdGggZmxhbWJkYSwgdGhlIGNvbXBpbGVyIGlubGluZXMgW3JldHVybl0gYW5kIHRoaXMgbWFudWFsXG4gICByZWJpbmRpbmcgd291bGQgbm90IGhlbHA7IHdlJ3ZlIGRlY2lkZWQgdG8gZG8gaXQgYW55d2F5IHNvIHRoYXQgbm9uLWZsYW1iZGEgYnVpbGRzXG4gICBnZXQgdGhlIG9wdGltaXphdGlvbi4gKilcbmxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIGluY2x1ZGUgTS5MZXRfc3ludGF4XG5cbiAgbGV0IHJldHVybiA9IERlZmVycmVkMC5yZXR1cm5cblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTS5MZXRfc3ludGF4LkxldF9zeW50YXhcblxuICAgIGxldCByZXR1cm4gPSBEZWZlcnJlZDAucmV0dXJuXG4gIGVuZFxuZW5kXG5cbm9wZW4gTGV0X3N5bnRheFxuXG4oKiBXZSBzaGFkb3cgW2FsbF0gb24tcHVycG9zZSBoZXJlLCBzaW5jZSB0aGUgZGVmYXVsdCBkZWZpbml0aW9uIGludHJvZHVjZXMgYSBjaGFpbiBvZlxuICAgYmluZHMgYXMgbG9uZyBhcyB0aGUgbGlzdC4gKilcbmxldCBhbGwgPSBgTWFrZV9zdXJlX3RvX2RlZmluZV9hbGxfZWxzZXdoZXJlXG5sZXQgXyA9IGFsbFxubGV0IHVuaXQgPSByZXR1cm4gKClcblxubGV0IGJvdGggdDEgdDIgPVxuICBjcmVhdGUgKGZ1biByZXN1bHQgLT4gdXBvbiB0MSAoZnVuIGExIC0+IHVwb24gdDIgKGZ1biBhMiAtPiBJdmFyLmZpbGwgcmVzdWx0IChhMSwgYTIpKSkpXG47O1xuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIGxldCAoID4+PiApID0gdXBvblxuICBsZXQgcHB4X2JvdGggPSBib3RoXG5lbmRcblxub3BlbiBJbmZpeFxuXG5sZXQgZG9uJ3Rfd2FpdF9mb3IgKF8gOiB1bml0IHQpID0gKClcblxubW9kdWxlIENob2ljZSA9IHN0cnVjdFxuICB0eXBlICsnYSB0ID0gVCA6ICdiIERlZmVycmVkMC50ICogKCdiIC0+ICdhKSAtPiAnYSB0XG5cbiAgbGV0IG1hcCAoVCAodCwgZjEpKSB+ZjpmMiA9IFQgKHQsIGZ1biB4IC0+IGYyIChmMSB4KSlcbmVuZFxuXG5tb2R1bGUgVW5yZWdpc3RlciA9IHN0cnVjdFxuICAoKiBUaGlzIHJlcHJlc2VudGF0aW9uIHNhdmVzIDJuIHdvcmRzIGZvciBhIGxpc3Qgb2YgbiBjaG9pY2VzLiAqKVxuICB0eXBlIHQgPVxuICAgIHwgTmlsIDogdFxuICAgIHwgQ29ucyA6ICdhIERlZmVycmVkMC50ICogJ2EgRGVmZXJyZWQwLkhhbmRsZXIudCAqIHQgLT4gdFxuXG4gIGxldCByZWMgcHJvY2VzcyA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gKClcbiAgICB8IENvbnMgKHQsIGhhbmRsZXIsIHJlc3QpIC0+XG4gICAgICByZW1vdmVfaGFuZGxlciB0IGhhbmRsZXI7XG4gICAgICBwcm9jZXNzIHJlc3RcbiAgOztcbmVuZFxuXG5sZXQgY2hvaWNlIHQgZiA9IENob2ljZS5UICh0LCBmKVxuXG5sZXQgZW5hYmxlZCBjaG9pY2VzID1cbiAgbGV0IHJlc3VsdCA9IEl2YXIuY3JlYXRlICgpIGluXG4gIGxldCB1bnJlZ2lzdGVycyA9IHJlZiBVbnJlZ2lzdGVyLk5pbCBpblxuICBsZXQgcmVhZHkgXyA9XG4gICAgaWYgSXZhci5pc19lbXB0eSByZXN1bHRcbiAgICB0aGVuIChcbiAgICAgIFVucmVnaXN0ZXIucHJvY2VzcyAhdW5yZWdpc3RlcnM7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0IChmdW4gKCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6W10gfmY6KGZ1biBhYyAoQ2hvaWNlLlQgKHQsIGYpKSAtPlxuICAgICAgICAgICAgIG1hdGNoIHBlZWsgdCB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IGFjXG4gICAgICAgICAgICAgfCBTb21lIHYgLT4gZiB2IDo6IGFjKSkpKVxuICBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKSBpblxuICB1bnJlZ2lzdGVyc1xuICA6PSBMaXN0LmZvbGQgY2hvaWNlcyB+aW5pdDpVbnJlZ2lzdGVyLk5pbCB+ZjooZnVuIGFjYyAoQ2hvaWNlLlQgKHQsIF8pKSAtPlxuICAgIENvbnMgKHQsIERlZmVycmVkMC5hZGRfaGFuZGxlciB0IHJlYWR5IGV4ZWN1dGlvbl9jb250ZXh0LCBhY2MpKTtcbiAgSXZhci5yZWFkIHJlc3VsdFxuOztcblxubGV0IHJlYyBjaG9vc2VfcmVzdWx0IGNob2ljZXMgPVxuICBtYXRjaCBjaG9pY2VzIHdpdGhcbiAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBDaG9pY2UuVCAodCwgZikgOjogY2hvaWNlcyAtPlxuICAgIChtYXRjaCBwZWVrIHQgd2l0aFxuICAgICB8IE5vbmUgLT4gY2hvb3NlX3Jlc3VsdCBjaG9pY2VzXG4gICAgIHwgU29tZSB2IC0+IGYgdilcbjs7XG5cbmxldCBjaG9vc2UgY2hvaWNlcyA9XG4gIGxldCByZXN1bHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdW5yZWdpc3RlcnMgPSByZWYgVW5yZWdpc3Rlci5OaWwgaW5cbiAgbGV0IHJlYWR5IF8gPVxuICAgIGlmIEl2YXIuaXNfZW1wdHkgcmVzdWx0XG4gICAgdGhlbiAoXG4gICAgICBVbnJlZ2lzdGVyLnByb2Nlc3MgIXVucmVnaXN0ZXJzO1xuICAgICAgSXZhci5maWxsIHJlc3VsdCAoY2hvb3NlX3Jlc3VsdCBjaG9pY2VzKSlcbiAgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID0gU2NoZWR1bGVyLihjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgaW5cbiAgdW5yZWdpc3RlcnNcbiAgOj0gTGlzdC5mb2xkIGNob2ljZXMgfmluaXQ6VW5yZWdpc3Rlci5OaWwgfmY6KGZ1biBhY2MgKENob2ljZS5UICh0LCBfKSkgLT5cbiAgICBDb25zICh0LCBEZWZlcnJlZDAuYWRkX2hhbmRsZXIgdCByZWFkeSBleGVjdXRpb25fY29udGV4dCwgYWNjKSk7XG4gIEl2YXIucmVhZCByZXN1bHRcbjs7XG5cbmxldCBhbnlfZiB0cyBmID0gY2hvb3NlIChMaXN0Lm1hcCB0cyB+ZjooZnVuIHQgLT4gY2hvaWNlIHQgZikpXG5sZXQgYW55IHRzID0gYW55X2YgdHMgRm4uaWRcbmxldCBhbnlfdW5pdCB0cyA9IGFueV9mIHRzIChGbi5pZ25vcmUgOiB1bml0IC0+IHVuaXQpXG5cbmxldCBmb3JfIHN0YXJ0IH50b18gfmRvXyA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID4gdG9fXG4gICAgdGhlbiByZXR1cm4gKClcbiAgICBlbHNlIChcbiAgICAgIGxldCViaW5kICgpID0gZG9fIGkgaW5cbiAgICAgIGxvb3AgKGkgKyAxKSlcbiAgaW5cbiAgbG9vcCBzdGFydFxuOztcblxubGV0IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgY3JlYXRlIChmdW4gZmluaXNoZWQgLT5cbiAgICBsZXQgcmVjIGxvb3Agc3RhdGUgPVxuICAgICAgZiBzdGF0ZVxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IGBSZXBlYXQgc3RhdGUgLT4gbG9vcCBzdGF0ZVxuICAgICAgfCBgRmluaXNoZWQgcmVzdWx0IC0+IEl2YXIuZmlsbCBmaW5pc2hlZCByZXN1bHRcbiAgICBpblxuICAgIGxvb3Agc3RhdGUpXG47O1xuXG5sZXQgZm9yZXZlciBzdGF0ZSBmID1cbiAgcmVwZWF0X3VudGlsX2ZpbmlzaGVkIHN0YXRlIChmdW4gc3RhdGUgLT5cbiAgICBsZXQlbWFwIHN0YXRlID0gZiBzdGF0ZSBpblxuICAgIGBSZXBlYXQgc3RhdGUpXG4gID4+PiBuZXZlcl9yZXR1cm5zXG47O1xuXG50eXBlIGhvdyA9IE1vbmFkX3NlcXVlbmNlLmhvdyBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5tb2R1bGUgdHlwZSBNb25hZF9zZXF1ZW5jZSA9IE1vbmFkX3NlcXVlbmNlLlMgd2l0aCB0eXBlICdhIG1vbmFkIDo9ICdhIHRcblxuXG5sZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIHQgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBiIHggPj4+IGZ1biBiIC0+IGxvb3AgeHMgYlxuICAgIGluXG4gICAgbG9vcCB0IGluaXQpXG47O1xuXG5sZXQgc2VxbWFwIHQgfmYgPSBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBicyBhIC0+IGYgYSA+PnwgZnVuIGIgLT4gYiA6OiBicykgPj58IExpc3QucmV2XG5sZXQgYWxsIGRzID0gc2VxbWFwIGRzIH5mOkZuLmlkXG5sZXQgYWxsX3VuaXQgZHMgPSBmb2xkIGRzIH5pbml0OigpIH5mOihmdW4gKCkgZCAtPiBkKVxubGV0IG9rIHggPSB4ID4+fCBmdW4geCAtPiBPayB4XG4iLCJvcGVuIERlZmVycmVkMVxuaW5jbHVkZSBJbmZpeFxuaW5jbHVkZSBMZXRfc3ludGF4XG5cbmxldCBjaG9pY2UgPSBjaG9pY2VcbmxldCBjaG9vc2UgPSBjaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IGRvbid0X3dhaXRfZm9yXG5sZXQgbmV2ZXIgPSBuZXZlclxubGV0IHJldHVybiA9IHJldHVyblxubGV0IHVwb24gPSB1cG9uXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB1ID1cbiAgfCBFbXB0eSBvZiAnYSBJdmFyLnRcbiAgfCBGdWxsXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlICdhIHQgPSAnYSB1IHJlZiBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgRnVsbCAtPiAoKVxuICAgIHwgRW1wdHkgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpXG47O1xuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IGl2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgdCA9IHJlZiAoRW1wdHkgaXZhcikgaW5cbiAgdCwgSXZhci5yZWFkIGl2YXJcbjs7XG5cbmxldCBpc19lbXB0eSB0ID1cbiAgbWF0Y2ggIXQgd2l0aFxuICB8IEVtcHR5IF8gLT4gdHJ1ZVxuICB8IEZ1bGwgLT4gZmFsc2Vcbjs7XG5cbmxldCBmaWxsIHQgYSA9XG4gIG1hdGNoICF0IHdpdGhcbiAgfCBFbXB0eSBpIC0+XG4gICAgdCA6PSBGdWxsO1xuICAgIEl2YXIuZmlsbCBpIGFcbiAgfCBGdWxsIC0+IHJhaXNlX3MgWyVtZXNzYWdlIFwiYXR0ZW1wdCB0byBmaWxsIGZ1bGwgaXZhclwiXVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBTdHJlYW0gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgbmV4dCBEZWZlcnJlZC50XG5cbiAgYW5kICdhIG5leHQgPSAnYSBUeXBlcy5TdHJlYW0ubmV4dCA9XG4gICAgfCBOaWxcbiAgICB8IENvbnMgb2YgJ2EgKiAnYSB0XG5cbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgdCA9XG4gICAgbGV0IHJlYyBsb29wIGQgYWMgOiBTZXhwLnQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBMaXN0IChMaXN0LnJldiAoU2V4cC5BdG9tIFwiLi4uXCIgOjogYWMpKVxuICAgICAgfCBTb21lIE5pbCAtPiBMaXN0IChMaXN0LnJldiBhYylcbiAgICAgIHwgU29tZSAoQ29ucyAoYSwgdCkpIC0+IGxvb3AgdCAoc2V4cF9vZl9hIGEgOjogYWMpXG4gICAgaW5cbiAgICBsb29wIHQgW11cbiAgOztcblxuICBsZXQgbmV4dCB0ID0gdFxuZW5kXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlRhaWwudCA9XG4gIHsgKCogW25leHRdIHBvaW50cyBhdCB0aGUgdGFpbCBvZiB0aGUgc3RyZWFtICopIG11dGFibGUgbmV4dCA6ICdhIFN0cmVhbS5uZXh0IEl2YXIudCB9XG5bQEBkZXJpdmluZyBmaWVsZHNdXG5cbmxldCBzZXhwX29mX3QgXyB0IDogU2V4cC50ID1cbiAgQXRvbSAoaWYgSXZhci5pc19lbXB0eSB0Lm5leHQgdGhlbiBcIjxvcGVuIHRhaWw+XCIgZWxzZSBcIjxjbG9zZWQgdGFpbD5cIilcbjs7XG5cbmxldCBjcmVhdGUgKCkgPSB7IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSB9XG5sZXQgY29sbGVjdCB0ID0gSXZhci5yZWFkIChuZXh0IHQpXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgKG5leHQgdClcblxubGV0IGZpbGxfZXhuIHQgdiA9XG4gIGlmIGlzX2Nsb3NlZCB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJzdHJlYW0gaXMgY2xvc2VkXCJdIGVsc2UgSXZhci5maWxsIChuZXh0IHQpIHZcbjs7XG5cbmxldCBjbG9zZV9leG4gdCA9IGZpbGxfZXhuIHQgTmlsXG5sZXQgY2xvc2VfaWZfb3BlbiB0ID0gaWYgbm90IChpc19jbG9zZWQgdCkgdGhlbiBJdmFyLmZpbGwgKG5leHQgdCkgTmlsXG5cbmxldCBleHRlbmQgdCB2ID1cbiAgbGV0IG5leHQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBmaWxsX2V4biB0IChDb25zICh2LCBJdmFyLnJlYWQgbmV4dCkpO1xuICB0Lm5leHQgPC0gbmV4dFxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5tb2R1bGUgU3RyZWFtID0gVGFpbC5TdHJlYW1cbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvcjBcbmluY2x1ZGUgTW9uaXRvclxuXG50eXBlIG1vbml0b3IgPSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bmFtZTppZ25vcmVcbiAgICAgIH5oZXJlOmlnbm9yZVxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmZvcndhcmRpbmc6aWdub3JlXG4gICAgICB+bmV4dF9lcnJvcjooY2hlY2sgKGZ1biBuZXh0X2Vycm9yIC0+IGFzc2VydCAoSXZhci5pc19lbXB0eSBuZXh0X2Vycm9yKSkpXG4gICAgICB+aGFuZGxlcnNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+dGFpbHNfZm9yX2FsbF9lcnJvcnM6aWdub3JlXG4gICAgICB+aGFzX3NlZW5fZXJyb3I6aWdub3JlKVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBTY2hlZHVsZXIuKGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKHQgKCkpKVxubGV0IGN1cnJlbnQgKCkgPSBFeGVjdXRpb25fY29udGV4dC5tb25pdG9yIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKVxuXG50eXBlICdhIHdpdGhfb3B0aW9uYWxfbW9uaXRvcl9uYW1lID1cbiAgP2hlcmU6U291cmNlX2NvZGVfcG9zaXRpb24udCAtPiA/aW5mbzpJbmZvLnQgLT4gP25hbWU6c3RyaW5nIC0+ICdhXG5cbmxldCBkZXRhY2ggdCA9IHQuZm9yd2FyZGluZyA8LSBEZXRhY2hlZFxuXG50eXBlIGhhbmRsZXJfc3RhdGUgPVxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBSdW5uaW5nIG9mIChFeGVjdXRpb25fY29udGV4dC50ICogKGV4biAtPiB1bml0KSkgQmFnLkVsdC50XG4gIHwgVGVybWluYXRlZFxuXG5sZXQgZGV0YWNoX2FuZF9pdGVyX2Vycm9ycyB0IH5mID1cbiAgZGV0YWNoIHQ7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgbGV0IGhhbmRsZXJfc3RhdGVfcmVmID0gcmVmIFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IHJ1bl9mIGV4biA9XG4gICAgbWF0Y2ggIWhhbmRsZXJfc3RhdGVfcmVmIHdpdGhcbiAgICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBUZXJtaW5hdGVkIC0+ICgpXG4gICAgfCBSdW5uaW5nIGJhZ19lbHQgLT5cbiAgICAgICh0cnkgZiBleG4gd2l0aFxuICAgICAgIHwgaW5uZXJfZXhuIC0+XG4gICAgICAgICBoYW5kbGVyX3N0YXRlX3JlZiA6PSBUZXJtaW5hdGVkO1xuICAgICAgICAgQmFnLnJlbW92ZSB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIGJhZ19lbHQ7XG4gICAgICAgICAoKiBbcnVuX2ZdIGFsd2F5cyBydW5zIGluIFtleGVjdXRpb25fY29udGV4dF0uICBIZW5jZSwgW3JhaXNlIGlubmVyX2V4bl0gc2VuZHNcbiAgICAgICAgICAgIFtpbm5lcl9leG5dIHRvIFtleGVjdXRpb25fY29udGV4dF0ncyBtb25pdG9yLCBpLmUuIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuXG4gICAgICAgICAgICBbZGV0YWNoX2FuZF9pdGVyX2Vycm9yc10gd2FzIGNhbGxlZC4gKilcbiAgICAgICAgIHJhaXNlIGlubmVyX2V4bilcbiAgaW5cbiAgaGFuZGxlcl9zdGF0ZV9yZWZcbiAgOj0gUnVubmluZyAoQmFnLmFkZCB0LmhhbmRsZXJzX2Zvcl9hbGxfZXJyb3JzIChleGVjdXRpb25fY29udGV4dCwgcnVuX2YpKVxuOztcblxubGV0IGRldGFjaF9hbmRfZ2V0X2Vycm9yX3N0cmVhbSB0ID1cbiAgZGV0YWNoIHQ7XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgdC50YWlsc19mb3JfYWxsX2Vycm9ycyA8LSB0YWlsIDo6IHQudGFpbHNfZm9yX2FsbF9lcnJvcnM7XG4gIFRhaWwuY29sbGVjdCB0YWlsXG47O1xuXG5sZXQgZ2V0X25leHRfZXJyb3IgdCA9IEl2YXIucmVhZCB0Lm5leHRfZXJyb3JcblxubGV0IGRldGFjaF9hbmRfZ2V0X25leHRfZXJyb3IgdCA9XG4gIGRldGFjaCB0O1xuICBnZXRfbmV4dF9lcnJvciB0XG47O1xuXG5sZXQgY3JlYXRlID9oZXJlID9pbmZvID9uYW1lICgpID1cbiAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgY3JlYXRlX3dpdGhfcGFyZW50ID9oZXJlID9pbmZvID9uYW1lIChTb21lIHBhcmVudClcbjs7XG5cbm1vZHVsZSBNb25pdG9yX2V4biA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgZXhuIDogZXhuXG4gICAgOyBiYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgICA7IGJhY2t0cmFjZV9oaXN0b3J5IDogQmFja3RyYWNlLnQgbGlzdFxuICAgIDsgbW9uaXRvciA6IE1vbml0b3IudFxuICAgIH1cblxuICBsZXQgYmFja3RyYWNlIHQgPSB0LmJhY2t0cmFjZVxuICBsZXQgZXh0cmFjdF9leG4gdCA9IHQuZXhuXG5cbiAgbGV0IGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgPVxuICAgIGxldCBqb2JfcXVldWUgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImpvYl9xdWV1ZS5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDAgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMC5tbFxcXCJcIiBpblxuICAgIGxldCBkZWZlcnJlZDEgPSBcIkNhbGxlZCBmcm9tIGZpbGUgXFxcImRlZmVycmVkMS5tbFxcXCJcIiBpblxuICAgIGxldCBtb25pdG9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJtb25pdG9yLm1sXFxcIlwiIGluXG4gICAgbGV0IGltcG9ydDAgPSBcIlJhaXNlZCBhdCBmaWxlIFxcXCJpbXBvcnQwLm1sXFxcIlwiIGluXG4gICAgbGV0IGVycm9yID0gXCJDYWxsZWQgZnJvbSBmaWxlIFxcXCJlcnJvci5tbFxcXCJcIiBpblxuICAgIGZ1biB0cmFjZXMgLT5cbiAgICAgICgqIC4uL3Rlc3QvdGVzdF90cnlfd2l0aF9lcnJvcl9kaXNwbGF5Lm1sIG1ha2VzIHN1cmUgdGhpcyBzdGF5cyB1cC10by1kYXRlLiAqKVxuICAgICAgbGV0IHRyYWNlcyA9XG4gICAgICAgIG1hdGNoIHRyYWNlcyB3aXRoXG4gICAgICAgIHwgdDEgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDEgfnByZWZpeDppbXBvcnQwIC0+XG4gICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICB8IHQyIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZXJyb3IgLT5cbiAgICAgICAgICAgICAobWF0Y2ggcmVzdCB3aXRoXG4gICAgICAgICAgICAgIHwgdDMgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDMgfnByZWZpeDplcnJvciAtPiByZXN0XG4gICAgICAgICAgICAgIHwgXyAtPiByZXN0KVxuICAgICAgICAgICB8IF8gLT4gcmVzdClcbiAgICAgICAgfCBfIC0+IHRyYWNlc1xuICAgICAgaW5cbiAgICAgIG1hdGNoIExpc3QucmV2IHRyYWNlcyB3aXRoXG4gICAgICB8IHQxIDo6IHJlc3Qgd2hlbiBTdHJpbmcuaXNfcHJlZml4IHQxIH5wcmVmaXg6am9iX3F1ZXVlIC0+XG4gICAgICAgIChtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgIHwgdDIgOjogcmVzdCB3aGVuIFN0cmluZy5pc19wcmVmaXggdDIgfnByZWZpeDpqb2JfcXVldWUgLT5cbiAgICAgICAgICAgKG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICAgICAgfCB0MiA6OiByZXN0XG4gICAgICAgICAgICAgIHdoZW4gU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4OmRlZmVycmVkMFxuICAgICAgICAgICAgICAgICgqIGJpbmQgKilcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmcuaXNfcHJlZml4IHQyIH5wcmVmaXg6ZGVmZXJyZWQxXG4gICAgICAgICAgICAgICAgKCogbWFwICopXG4gICAgICAgICAgICAgICAgfHwgU3RyaW5nLmlzX3ByZWZpeCB0MiB+cHJlZml4Om1vbml0b3JcbiAgICAgICAgICAgICAgKCogdHJ5X3dpdGggKikgLT4gTGlzdC5yZXYgcmVzdFxuICAgICAgICAgICAgfCBfIC0+IExpc3QucmV2IHJlc3QpXG4gICAgICAgICB8IF8gLT4gTGlzdC5yZXYgcmVzdClcbiAgICAgIHwgXyAtPiB0cmFjZXNcbiAgOztcblxuICBsZXQgc2V4cF9vZl90IHsgZXhuOyBiYWNrdHJhY2U7IGJhY2t0cmFjZV9oaXN0b3J5OyBtb25pdG9yIH0gPVxuICAgIGxldCBtb25pdG9yID1cbiAgICAgIGxldCBuYW1lID1cbiAgICAgICAgbWF0Y2ggSW5mby50b19zdHJpbmdfaHVtIG1vbml0b3IubmFtZSB3aXRoXG4gICAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICAgIHwgcyAtPiBTb21lIHNcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID1cbiAgICAgICAgbWF0Y2ggbW9uaXRvci5oZXJlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGhlcmUgLT5cbiAgICAgICAgICAoKiBXZSBkaXNwbGF5IHRoZSBmdWxsIGZpbGVuYW1lLCB3aGVyZWFzIGJhY2t0cmFjZXMgb25seSBoYXZlIGJhc2VuYW1lcywgYnV0XG4gICAgICAgICAgICAgcGVyaGFwcyB0aGF0J3Mgd2hhdCBzaG91bGQgY2hhbmdlLiAqKVxuICAgICAgICAgIGxldCBjb2x1bW4gPSBoZXJlLnBvc19jbnVtIC0gaGVyZS5wb3NfYm9sIGluXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKCogV2UgaGlkZSBsaW5lIGFuZCBjb2x1bW4gbnVtYmVycyB3aGVuIFthbV9ydW5uaW5nX3Rlc3RdIHRvIG1ha2UgdGVzdCBvdXRwdXRcbiAgICAgICAgICAgICAgIG1vcmUgcm9idXN0LiAgVGhpcyBzYXZlcyBwZW9wbGUgbWFudWFsbHkgaGlkaW5nIHRoZSBudW1iZXJzIG9yIGV2ZW4gd29yc2UsXG4gICAgICAgICAgICAgICBsZWF2aW5nIHRoZW0gaW4gdGVzdCBvdXRwdXQuICBIaWRpbmcgaW4gdGVzdCBpcyBkaWZmZXJlbnQgY2hvaWNlIGZvclxuICAgICAgICAgICAgICAgYmVoYXZpb3IgdGhhbiBvdXIgY29kZWJhc2UgbWFrZXMgZm9yIFtCYWNrdHJhY2UuZWxpZGVdLCB3aGljaCBoYXMgZGVmYXVsdFxuICAgICAgICAgICAgICAgW2ZhbHNlXSwgYW5kIHRodXMgc2hvd3MgYmFja3RyYWNlcyBpbiB0ZXN0LiAgVGhlcmUgYXJlIGEgY291cGxlIHJlYXNvbnMgZm9yXG4gICAgICAgICAgICAgICB0aGlzIGRpZmZlcmVudCBjaG9pY2UuICBGaXJzdCwgZXhwZWN0LXRlc3QgbWFjaGluZXJ5IGhhcyBjaGVjayB0byBwcmV2ZW50XG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIGZyb20gYXBwZWFyaW5nIGluIHRlc3Qgb3V0cHV0LiAgSXQgaGFzIG5vIHN1Y2ggY2hlY2tzIGZvciBsaW5lXG4gICAgICAgICAgICAgICBhbmQgY29sdW1uIG51bWJlcnMuICBTZWNvbmQsIHdoZW4gdGhlcmUgaXMgYSByZWFsIGVycm9yIGFuZCB5b3Ugd2FudCB0byBzZWVcbiAgICAgICAgICAgICAgIHRoZSBiYWNrdHJhY2UsIHRocm93aW5nIGF3YXkgdGhlIHdob2xlIGJhY2t0cmFjZSBsb3NlcyBhIGxvdCBvZiBwb3RlbnRpYWxseVxuICAgICAgICAgICAgICAgdXNlZnVsIGluZm9ybWF0aW9uIHRoYXQgbWF5IGJlIGhhcmQgdG8gcmVjb3Zlci4gIFdoZXJlYXMgd2UncmUganVzdFxuICAgICAgICAgICAgICAgdGhyb3dpbmcgYSB3YXkgYSBsaW5lIG51bWJlciBhbmQgY29sdW1uLCB3aGljaCBhcmUgYSBtaW5vciBjb252ZW5pZW5jZVxuICAgICAgICAgICAgICAgZ2l2ZW4gdGhhdCB0aGUgZmlsZW5hbWUgaGFzIG1vc3Qgb2YgdGhlIGluZm9ybWF0aW9uLiAqKVxuICAgICAgICAgICAgKGlmIGFtX3J1bm5pbmdfdGVzdFxuICAgICAgICAgICAgIHRoZW4gc3ByaW50ZiBcImZpbGUgJVMsIGxpbmUgTElORSwgY2hhcmFjdGVycyBDMS1DMlwiIGhlcmUucG9zX2ZuYW1lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgICAgICBcImZpbGUgJVMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19mbmFtZVxuICAgICAgICAgICAgICAgICBoZXJlLnBvc19sbnVtXG4gICAgICAgICAgICAgICAgIGNvbHVtblxuICAgICAgICAgICAgICAgICBjb2x1bW4pXG4gICAgICBpblxuICAgICAgbWF0Y2ggcG9zLCBuYW1lIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIHBvcywgTm9uZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciBhdCAlc1wiIHBvcyBdXG4gICAgICB8IE5vbmUsIFNvbWUgbmFtZSAtPiBbIHNwcmludGYgXCJDYXVnaHQgYnkgbW9uaXRvciAlc1wiIG5hbWUgXVxuICAgICAgfCBTb21lIHBvcywgU29tZSBuYW1lIC0+IFsgc3ByaW50ZiBcIkNhdWdodCBieSBtb25pdG9yICVzIGF0ICVzXCIgbmFtZSBwb3MgXVxuICAgIGluXG4gICAgbGV0IGJhY2t0cmFjZSA9XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSBiYWNrdHJhY2UgLT4gQmFja3RyYWNlLnRvX3N0cmluZ19saXN0IGJhY2t0cmFjZVxuICAgICAgaW5cbiAgICAgIGJhY2t0cmFjZV90cnVuY2F0aW9uX2hldXJpc3RpY3MgYmFja3RyYWNlIEAgbW9uaXRvclxuICAgIGluXG4gICAgbGV0IGxpc3RfaWZfbm90X2VtcHR5ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBfIDo6IF8gYXMgbCAtPiBTb21lIGxcbiAgICBpblxuICAgIFslc2V4cFxuICAgICAgKGV4biA6IGV4bilcbiAgICAsIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2UgOiAoc3RyaW5nIGxpc3Qgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICwgYGJhY2t0cmFjZV9oaXN0b3J5XG4gICAgICAgIChsaXN0X2lmX25vdF9lbXB0eSBiYWNrdHJhY2VfaGlzdG9yeSA6IChCYWNrdHJhY2UudCBsaXN0IG9wdGlvbltAc2V4cC5vcHRpb25dKSldXG4gIDs7XG5lbmRcblxuZXhjZXB0aW9uIE1vbml0b3JfZXhuIG9mIE1vbml0b3JfZXhuLnRcblxubGV0ICgpID1cbiAgU2V4cGxpYi5Db252LkV4bl9jb252ZXJ0ZXIuYWRkIFslZXh0ZW5zaW9uX2NvbnN0cnVjdG9yIE1vbml0b3JfZXhuXSAoZnVuY3Rpb25cbiAgICB8IE1vbml0b3JfZXhuIHQgLT4gWyVzZXhwIFwibW9uaXRvci5tbC5FcnJvclwiIDo6ICh0IDogTW9uaXRvcl9leG4udCldXG4gICAgfCBfIC0+XG4gICAgICAoKiBSZWFjaGluZyB0aGlzIGJyYW5jaCBpbmRpY2F0ZXMgYSBidWcgaW4gc2V4cGxpYi4gKilcbiAgICAgIGFzc2VydCBmYWxzZSlcbjs7XG5cbmxldCBleHRyYWN0X2V4biBleG4gPVxuICBtYXRjaCBleG4gd2l0aFxuICB8IE1vbml0b3JfZXhuIGVycm9yIC0+IGVycm9yLmV4blxuICB8IGV4biAtPiBleG5cbjs7XG5cbmxldCBzZW5kX2V4biB0ID8oYmFja3RyYWNlID0gYEdldCkgZXhuID1cbiAgbGV0IGV4biA9XG4gICAgbWF0Y2ggZXhuIHdpdGhcbiAgICB8IE1vbml0b3JfZXhuIF8gLT4gZXhuXG4gICAgfCBfIC0+XG4gICAgICBsZXQgYmFja3RyYWNlID1cbiAgICAgICAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgICAgICAgfCBgR2V0IC0+IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnRfZm9yX2V4biBleG5cbiAgICAgICAgfCBgVGhpcyBiIC0+IFNvbWUgYlxuICAgICAgaW5cbiAgICAgIGxldCBiYWNrdHJhY2VfaGlzdG9yeSA9IChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpKS5iYWNrdHJhY2VfaGlzdG9yeSBpblxuICAgICAgTW9uaXRvcl9leG4geyBNb25pdG9yX2V4bi5leG47IGJhY2t0cmFjZTsgYmFja3RyYWNlX2hpc3Rvcnk7IG1vbml0b3IgPSB0IH1cbiAgaW5cbiAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4biB0aGVuIERlYnVnLmxvZyBcIk1vbml0b3Iuc2VuZF9leG5cIiAodCwgZXhuKSBbJXNleHBfb2Y6IHQgKiBleG5dO1xuICB0Lmhhc19zZWVuX2Vycm9yIDwtIHRydWU7XG4gIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgSXZhci5maWxsIHQubmV4dF9lcnJvciBleG47XG4gICAgdC5uZXh0X2Vycm9yIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBEZXRhY2hlZCAtPlxuICAgICAgaWYgRGVidWcubW9uaXRvcl9zZW5kX2V4blxuICAgICAgdGhlblxuICAgICAgICBEZWJ1Zy5sb2cgXCJNb25pdG9yLnNlbmRfZXhuIGZvdW5kIGxpc3RlbmluZyBtb25pdG9yXCIgKHQsIGV4bikgWyVzZXhwX29mOiB0ICogZXhuXTtcbiAgICAgIEJhZy5pdGVyIHQuaGFuZGxlcnNfZm9yX2FsbF9lcnJvcnMgfmY6KGZ1biAoZXhlY3V0aW9uX2NvbnRleHQsIGYpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBmIGV4bik7XG4gICAgICBMaXN0Lml0ZXIgdC50YWlsc19mb3JfYWxsX2Vycm9ycyB+ZjooZnVuIHRhaWwgLT4gVGFpbC5leHRlbmQgdGFpbCBleG4pXG4gICAgfCBQYXJlbnQgcGFyZW50IC0+IGxvb3AgcGFyZW50XG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+XG4gICAgICAoKiBEbyBub3QgY2hhbmdlIHRoaXMgYnJhbmNoIHRvIHByaW50IHRoZSBleGNlcHRpb24gb3IgdG8gZXhpdC4gIEhhdmluZyB0aGVcbiAgICAgICAgIHNjaGVkdWxlciByYWlzZSBhbiB1bmNhdWdodCBleGNlcHRpb24gaXMgdGhlIG5lY2Vzc2FyeSBiZWhhdmlvciBmb3IgcHJvZ3JhbXNcbiAgICAgICAgIHRoYXQgY2FsbCBbU2NoZWR1bGVyLmdvXSBhbmQgd2FudCB0byBoYW5kbGUgaXQuICopXG4gICAgICBTY2hlZHVsZXIuKGdvdF91bmNhdWdodF9leG4gKHQgKCkpKSBleG4gKCFBc3luY19rZXJuZWxfY29uZmlnLnRhc2tfaWQgKCkpXG4gIGluXG4gIGxvb3AgdFxuOztcblxubW9kdWxlIEV4cG9ydGVkX2Zvcl9zY2hlZHVsZXIgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhpbl9jb250ZXh0IGNvbnRleHQgZiA9XG4gICAgU2NoZWR1bGVyLih3aXRoX2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKSkgY29udGV4dCB+ZjooZnVuICgpIC0+XG4gICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggZiB3aXRoXG4gICAgICB8IE9rIHggLT4gT2sgeFxuICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgc2VuZF9leG4gKEV4ZWN1dGlvbl9jb250ZXh0Lm1vbml0b3IgY29udGV4dCkgZXhuIH5iYWNrdHJhY2U6YEdldDtcbiAgICAgICAgRXJyb3IgKCkpXG4gIDs7XG5cbiAgdHlwZSAnYSB3aXRoX29wdGlvbnMgPSA/bW9uaXRvcjp0IC0+ID9wcmlvcml0eTpQcmlvcml0eS50IC0+ICdhXG5cbiAgbGV0IHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIGxldCB0bXBfY29udGV4dCA9XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAoKSkgP21vbml0b3IgP3ByaW9yaXR5XG4gICAgaW5cbiAgICB3aXRoaW5fY29udGV4dCB0bXBfY29udGV4dCBmXG4gIDs7XG5cbiAgbGV0IHdpdGhpbicgP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICB8IE9rIGQgLT4gZFxuICA7O1xuXG4gIGxldCB3aXRoaW5fdiA/bW9uaXRvciA/cHJpb3JpdHkgZiA9XG4gICAgbWF0Y2ggd2l0aGluX2dlbiA/bW9uaXRvciA/cHJpb3JpdHkgZiB3aXRoXG4gICAgfCBFcnJvciAoKSAtPiBOb25lXG4gICAgfCBPayB4IC0+IFNvbWUgeFxuICA7O1xuXG4gIGxldCB3aXRoaW4gP21vbml0b3IgP3ByaW9yaXR5IGYgPVxuICAgIG1hdGNoIHdpdGhpbl9nZW4gP21vbml0b3IgP3ByaW9yaXR5IGYgd2l0aFxuICAgIHwgRXJyb3IgKCkgLT4gKClcbiAgICB8IE9rICgpIC0+ICgpXG4gIDs7XG5cbiAgbGV0IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayB4ID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBTY2hlZHVsZXIuZW5xdWV1ZVxuICAgICAgc2NoZWR1bGVyXG4gICAgICAoRXhlY3V0aW9uX2NvbnRleHQuY3JlYXRlX2xpa2VcbiAgICAgICAgIChTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIpXG4gICAgICAgICA/bW9uaXRvclxuICAgICAgICAgP3ByaW9yaXR5KVxuICAgICAgd29ya1xuICAgICAgeFxuICA7O1xuXG4gIGxldCBzY2hlZHVsZSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayA9IHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgd29yayAoKVxuXG4gIGxldCBzY2hlZHVsZScgPVxuICAgICgqIEZvciBwZXJmb3JtYW5jZSwgd2UgdXNlIFtzY2hlZHVsZV93aXRoX2RhdGFdIHdpdGggYSBjbG9zZWQgZnVuY3Rpb24sIGFuZCBpbmxpbmVcbiAgICAgICBbRGVmZXJyZWQuY3JlYXRlXS4gKilcbiAgICBsZXQgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSkgPSB1cG9uICh3b3JrICgpKSAoZnVuIGEgLT4gSXZhci5maWxsIGkgYSkgaW5cbiAgICBmdW4gP21vbml0b3IgP3ByaW9yaXR5IHdvcmsgLT5cbiAgICAgIGxldCBpID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIHNjaGVkdWxlX3dpdGhfZGF0YSA/bW9uaXRvciA/cHJpb3JpdHkgdXBvbl93b3JrX2ZpbGxfaSAod29yaywgaSk7XG4gICAgICBJdmFyLnJlYWQgaVxuICA7O1xuXG4gIGxldCBwcmVzZXJ2ZV9leGVjdXRpb25fY29udGV4dCBmID1cbiAgICBsZXQgc2NoZWR1bGVyID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBTY2hlZHVsZXIuY3VycmVudF9leGVjdXRpb25fY29udGV4dCBzY2hlZHVsZXIgaW5cbiAgICBzdGFnZSAoZnVuIGEgLT4gU2NoZWR1bGVyLmVucXVldWUgc2NoZWR1bGVyIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSlcbiAgOztcblxuICBsZXQgcHJlc2VydmVfZXhlY3V0aW9uX2NvbnRleHQnIGYgPVxuICAgIGxldCBzY2hlZHVsZXIgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHNjaGVkdWxlciBpblxuICAgIGxldCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSA9IHVwb24gKGYgYSkgKGZ1biByIC0+IEl2YXIuZmlsbCBpIHIpIGluXG4gICAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpIC0+XG4gICAgICAgIFNjaGVkdWxlci5lbnF1ZXVlIHNjaGVkdWxlciBleGVjdXRpb25fY29udGV4dCBjYWxsX2FuZF9maWxsIChmLCBhLCBpKSkpXG4gIDs7XG5lbmRcblxub3BlbiBFeHBvcnRlZF9mb3Jfc2NoZWR1bGVyXG5cbmxldCBzdHJlYW1faXRlciBzdHJlYW0gfmYgPVxuICBsZXQgcmVjIGxvb3Agc3RyZWFtID1cbiAgICBTdHJlYW0ubmV4dCBzdHJlYW1cbiAgICA+Pj4gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAodiwgc3RyZWFtKSAtPlxuICAgICAgbG9vcCBzdHJlYW07XG4gICAgICBmIHZcbiAgaW5cbiAgbG9vcCBzdHJlYW1cbjs7XG5cbigqIEFuIFsnYSBPa19hbmRfZXhucy50XSByZXByZXNlbnRzIHRoZSBvdXRwdXQgb2YgYSBjb21wdXRhdGlvbiBydW5uaW5nIGluIGEgZGV0YWNoZWRcbiAgIG1vbml0b3IuICopXG5tb2R1bGUgT2tfYW5kX2V4bnMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG9rIDogJ2EgRGVmZXJyZWQudFxuICAgIDsgZXhucyA6IGV4biBTdHJlYW0udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1biBmID1cbiAgICAoKiBXZSBjYWxsIFtjcmVhdGVfd2l0aF9wYXJlbnQgTm9uZV0gYmVjYXVzZSBbbW9uaXRvcl0gZG9lcyBub3QgbmVlZCBhIHBhcmVudC4gIEl0XG4gICAgICAgZG9lcyBub3QgYmVjYXVzZSB3ZSBjYWxsIFtkZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcl0gYW5kIGRlYWwgd2l0aCB0aGVcbiAgICAgICBlcnJvcnMgZXhwbGljaXRseSwgdGh1cyBbc2VuZF9leG5dIHdvdWxkIG5ldmVyIHByb3BhZ2F0ZSBhbiBleG4gcGFzdCBbbW9uaXRvcl0uICopXG4gICAgbGV0IG1vbml0b3IgPSBjcmVhdGVfd2l0aF9wYXJlbnQgP2hlcmUgP2luZm8gP25hbWUgTm9uZSBpblxuICAgIGxldCBleG5zID0gZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIG1vbml0b3IgaW5cbiAgICBsZXQgb2sgPVxuICAgICAgbWF0Y2ggcnVuIHdpdGhcbiAgICAgIHwgYE5vdyAtPiB3aXRoaW4nIH5tb25pdG9yIGZcbiAgICAgIHwgYFNjaGVkdWxlIC0+IHNjaGVkdWxlJyB+bW9uaXRvciBmXG4gICAgaW5cbiAgICB7IG9rOyBleG5zIH1cbiAgOztcbmVuZFxuXG5sZXQgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgcmVzdWx0XG4gICAgICBleG5zXG4gICAgICBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHRcbiAgPVxuICBpZiBJdmFyX2ZpbGxlci5pc19lbXB0eSByZXN1bHRfZmlsbGVyXG4gIHRoZW4gKFxuICAgIEl2YXJfZmlsbGVyLmZpbGwgcmVzdWx0X2ZpbGxlciByZXN1bHQ7XG4gICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0IGV4bnMpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCB0cnlfd2l0aF9sb2dfZXhuIDogKGV4biAtPiB1bml0KSByZWYgPVxuICAgIHJlZiAoZnVuIGV4biAtPlxuICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJmYWlsZWQgdG8gc2V0IFtNb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuXVwiIChleG4gOiBFeG4udCldKVxuICA7O1xuZW5kXG5cbmxldCBtYWtlX2hhbmRsZV9leG4gcmVzdCA9XG4gIG1hdGNoIHJlc3Qgd2l0aFxuICB8IGBMb2cgLT5cbiAgICAoKiBXZSBhcmUgY2FyZWZ1bCB0byBub3QgY2xvc2Ugb3ZlciBjdXJyZW50IGNvbnRleHQsIHdoaWNoIGlzIG5vdCBuZWVkZWQuICopXG4gICAgIUV4cGVydC50cnlfd2l0aF9sb2dfZXhuXG4gIHwgYFJhaXNlIC0+XG4gICAgbGV0IHBhcmVudCA9IGN1cnJlbnQgKCkgaW5cbiAgICBmdW4gZXhuIC0+IHNlbmRfZXhuIHBhcmVudCBleG4gP2JhY2t0cmFjZTpOb25lXG4gIHwgYENhbGwgZiAtPlxuICAgIGxldCBwYXJlbnQgPSBjdXJyZW50ICgpIGluXG4gICAgZnVuIGV4biAtPiB3aXRoaW4gfm1vbml0b3I6cGFyZW50IChmdW4gKCkgLT4gZiBleG4pXG47O1xuXG5sZXQgdHJ5X3dpdGhcbiAgICAgID9oZXJlXG4gICAgICA/aW5mb1xuICAgICAgPyhuYW1lID0gXCJcIilcbiAgICAgID9leHRyYWN0X2V4bjooZG9fZXh0cmFjdF9leG4gPSBmYWxzZSlcbiAgICAgID8ocnVuID0gYE5vdylcbiAgICAgID8ocmVzdCA9IGBSYWlzZSlcbiAgICAgIGZcbiAgPVxuICBsZXQgeyBPa19hbmRfZXhucy5vazsgZXhucyB9ID0gT2tfYW5kX2V4bnMuY3JlYXRlID9oZXJlID9pbmZvIH5uYW1lIH5ydW4gZiBpblxuICBsZXQgaGFuZGxlX2V4biA9IG1ha2VfaGFuZGxlX2V4biByZXN0IGluXG4gIGxldCBoYW5kbGVfZXhuc19hZnRlcl9yZXN1bHQgZXhucyA9IHN0cmVhbV9pdGVyIGV4bnMgfmY6aGFuZGxlX2V4biBpblxuICAoKiBXZSBydW4gW3dpdGhpbicgfm1vbml0b3I6bWFpbl0gdG8gYXZvaWQgaG9sZGluZyBvbiB0byByZWZlcmVuY2VzIHRvIHRoZSBldmFsdWF0aW9uXG4gICAgIGNvbnRleHQgaW4gd2hpY2ggW3RyeV93aXRoXSB3YXMgY2FsbGVkLiAgVGhpcyBhdm9pZHMgYSBzcGFjZSBsZWFrIHdoZW4gYSBjaGFpbiBvZlxuICAgICBbdHJ5X3dpdGhdJ3MgYXJlIHJ1biBlYWNoIG5lc3RlZCB3aXRoaW4gdGhlIHByZXZpb3VzIG9uZS4gIFdpdGhvdXQgdGhlIFt3aXRoaW4nXSwgdGhlXG4gICAgIGVycm9yIGhhbmRsaW5nIGZvciB0aGUgaW5uZXJtb3N0IFt0cnlfd2l0aF0gd291bGQga2VlcCBhbGl2ZSB0aGUgZW50aXJlIGNoYWluLiAqKVxuICB3aXRoaW4nIH5tb25pdG9yOm1haW4gKGZ1biAoKSAtPlxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgb2tcbiAgICB0aGVuIChcbiAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCBleG5zO1xuICAgICAgcmV0dXJuIChPayAoRGVmZXJyZWQudmFsdWVfZXhuIG9rKSkpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVzdWx0X2ZpbGxlciwgcmVzdWx0ID0gSXZhcl9maWxsZXIuY3JlYXRlICgpIGluXG4gICAgICB1cG9uIG9rIChmdW4gcmVzIC0+XG4gICAgICAgIGZpbGxfcmVzdWx0X2FuZF9oYW5kbGVfYmFja2dyb3VuZF9lcnJvcnNcbiAgICAgICAgICByZXN1bHRfZmlsbGVyXG4gICAgICAgICAgKE9rIHJlcylcbiAgICAgICAgICBleG5zXG4gICAgICAgICAgaGFuZGxlX2V4bnNfYWZ0ZXJfcmVzdWx0KTtcbiAgICAgIHVwb24gKFN0cmVhbS5uZXh0IGV4bnMpIChmdW5jdGlvblxuICAgICAgICB8IE5pbCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBDb25zIChleG4sIGV4bnMpIC0+XG4gICAgICAgICAgbGV0IGV4biA9IGlmIGRvX2V4dHJhY3RfZXhuIHRoZW4gZXh0cmFjdF9leG4gZXhuIGVsc2UgZXhuIGluXG4gICAgICAgICAgZmlsbF9yZXN1bHRfYW5kX2hhbmRsZV9iYWNrZ3JvdW5kX2Vycm9yc1xuICAgICAgICAgICAgcmVzdWx0X2ZpbGxlclxuICAgICAgICAgICAgKEVycm9yIGV4bilcbiAgICAgICAgICAgIGV4bnNcbiAgICAgICAgICAgIGhhbmRsZV9leG5zX2FmdGVyX3Jlc3VsdCk7XG4gICAgICByZXN1bHQpKVxuOztcblxubGV0IHRyeV93aXRoX29yX2Vycm9yID9oZXJlID9pbmZvID8obmFtZSA9IFwidHJ5X3dpdGhfb3JfZXJyb3JcIikgP2V4dHJhY3RfZXhuID9yZXN0IGYgPVxuICB0cnlfd2l0aCBmID9oZXJlID9pbmZvIH5uYW1lID9leHRyYWN0X2V4biB+cnVuOmBOb3cgP3Jlc3QgPj58IE9yX2Vycm9yLm9mX2V4bl9yZXN1bHRcbjs7XG5cbmxldCB0cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICA/aGVyZVxuICAgICAgP2luZm9cbiAgICAgID8obmFtZSA9IFwidHJ5X3dpdGhfam9pbl9vcl9lcnJvclwiKVxuICAgICAgP2V4dHJhY3RfZXhuXG4gICAgICA/cmVzdFxuICAgICAgZlxuICA9XG4gIHRyeV93aXRoX29yX2Vycm9yIGYgP2hlcmUgP2luZm8gfm5hbWUgP2V4dHJhY3RfZXhuID9yZXN0ID4+fCBPcl9lcnJvci5qb2luXG47O1xuXG5sZXQgcHJvdGVjdCA/aGVyZSA/aW5mbyA/KG5hbWUgPSBcIk1vbml0b3IucHJvdGVjdFwiKSA/ZXh0cmFjdF9leG4gP3J1biA/cmVzdCBmIH5maW5hbGx5ID1cbiAgbGV0JWJpbmQgciA9IHRyeV93aXRoID9leHRyYWN0X2V4biA/aGVyZSA/aW5mbyA/cnVuID9yZXN0IH5uYW1lIGYgaW5cbiAgbGV0JW1hcCBmciA9XG4gICAgdHJ5X3dpdGhcbiAgICAgIH5leHRyYWN0X2V4bjpmYWxzZVxuICAgICAgP2hlcmVcbiAgICAgID9pbmZvXG4gICAgICB+cnVuOmBTY2hlZHVsZSAoKiBjb25zaWRlciBbfnJ1bjpgTm93XSAqKVxuICAgICAgP3Jlc3RcbiAgICAgIH5uYW1lOlwiZmluYWxseVwiXG4gICAgICBmaW5hbGx5XG4gIGluXG4gIG1hdGNoIHIsIGZyIHdpdGhcbiAgfCBFcnJvciBleG4sIEVycm9yIGZpbmFsbHlfZXhuIC0+XG4gICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJBc3luYyBmaW5hbGx5XCIgKGV4biA6IGV4bikgKGZpbmFsbHlfZXhuIDogZXhuKV1cbiAgfCBFcnJvciBlLCBPayAoKSB8IE9rIF8sIEVycm9yIGUgLT4gcmFpc2UgZVxuICB8IE9rIHIsIE9rICgpIC0+IHJcbjs7XG5cbmxldCBoYW5kbGVfZXJyb3JzID9oZXJlID9pbmZvID9uYW1lIGYgaGFuZGxlciA9XG4gIGxldCB7IE9rX2FuZF9leG5zLm9rOyBleG5zIH0gPSBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IGYgaW5cbiAgc3RyZWFtX2l0ZXIgZXhucyB+ZjpoYW5kbGVyO1xuICBva1xuOztcblxubGV0IGNhdGNoX3N0cmVhbSA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbGV0IHsgT2tfYW5kX2V4bnMuZXhuczsgXyB9ID1cbiAgICBPa19hbmRfZXhucy5jcmVhdGUgP2hlcmUgP2luZm8gP25hbWUgfnJ1bjpgTm93IChmdW4gKCkgLT5cbiAgICAgIGYgKCk7XG4gICAgICByZXR1cm4gKCkpXG4gIGluXG4gIGV4bnNcbjs7XG5cbmxldCBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID1cbiAgbWF0Y2glbWFwIFN0cmVhbS5uZXh0IChjYXRjaF9zdHJlYW0gP2hlcmUgP2luZm8gP25hbWUgZikgd2l0aFxuICB8IENvbnMgKHgsIF8pIC0+IHhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNb25pdG9yLmNhdGNoIGdvdCB1bmV4cGVjdGVkIGVtcHR5IHN0cmVhbVwiXVxuOztcblxubGV0IGNhdGNoX2Vycm9yID9oZXJlID9pbmZvID9uYW1lIGYgPSBjYXRjaCA/aGVyZSA/aW5mbyA/bmFtZSBmID4+fCBFcnJvci5vZl9leG5cblxubW9kdWxlIEZvcl90ZXN0cyA9IHN0cnVjdFxuICBsZXQgcGFyZW50IHQgPVxuICAgIG1hdGNoIHQuZm9yd2FyZGluZyB3aXRoXG4gICAgfCBSZXBvcnRfdW5jYXVnaHRfZXhuIC0+IE5vbmVcbiAgICB8IFBhcmVudCBwYXJlbnQgLT4gU29tZSBwYXJlbnRcbiAgICB8IERldGFjaGVkIC0+IE5vbmVcbiAgOztcblxuICBsZXQgZGVwdGggdCA9XG4gICAgbGV0IHJlYyBsb29wIHQgbiA9XG4gICAgICBtYXRjaCBwYXJlbnQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gblxuICAgICAgfCBTb21lIHQgLT4gbG9vcCB0IChuICsgMSlcbiAgICBpblxuICAgIGxvb3AgdCAwXG4gIDs7XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuaW5jbHVkZSBUYWlsLlN0cmVhbVxuXG5sZXQgZmlyc3RfZXhuIHQgPVxuICBtYXRjaCVtYXAgbmV4dCB0IHdpdGhcbiAgfCBOaWwgLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJTdHJlYW0uZmlyc3Qgb2YgZW1wdHkgc3RyZWFtXCJdXG4gIHwgQ29ucyAoeCwgXykgLT4geFxuOztcblxubGV0IGZvbGQnIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIHVwb24gKG5leHQgdCkgKGZ1bmN0aW9uXG4gICAgICAgIHwgTmlsIC0+IEl2YXIuZmlsbCByZXN1bHQgYlxuICAgICAgICB8IENvbnMgKHYsIHQpIC0+IHVwb24gKGYgYiB2KSAobG9vcCB0KSlcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxuKCogW2ZvbGRdIGlzIGltcGxlbWVudGVkIHRvIGF2b2lkIHBlci1zdHJlYW0tZWxlbWVudCBkZWZlcnJlZCBvdmVyaGVhZCBpbiB0aGUgY2FzZSB3aGVuXG4gICBtdWx0aXBsZSBzdHJlYW0gZWxlbWVudHMgYXJlIGF2YWlsYWJsZSBzaW11bHRhbmVvdXNseS4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biByZXN1bHQgLT5cbiAgICBsZXQgcmVjIGxvb3AgdCBiID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgICAgfCBOb25lIC0+IHVwb24gKG5leHQgdCkgKGZ1biBuZXh0IC0+IGxvb3BfbmV4dCBuZXh0IGIpXG4gICAgICB8IFNvbWUgbmV4dCAtPiBsb29wX25leHQgbmV4dCBiXG4gICAgYW5kIGxvb3BfbmV4dCBuZXh0IGIgPVxuICAgICAgbWF0Y2ggbmV4dCB3aXRoXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0IGJcbiAgICAgIHwgQ29ucyAodiwgdCkgLT4gbG9vcCB0IChmIGIgdilcbiAgICBpblxuICAgIGxvb3AgdCBpbml0KVxuOztcblxubGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG5sZXQgaXRlcicgdCB+ZiA9IGZvbGQnIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSB2IC0+IGYgdilcblxubGV0IGNsb3NlZCB0ID1cbiAgbWF0Y2ggRGVmZXJyZWQucGVlayAobmV4dCB0KSB3aXRoXG4gIHwgU29tZSBOaWwgLT4gcmV0dXJuICgpXG4gIHwgXyAtPiBpdGVyJyB0IH5mOihmdW4gXyAtPiByZXR1cm4gKCkpXG47O1xuXG5sZXQgaXRlciB0IH5mID1cbiAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAoaXRlcicgdCB+ZjooZnVuIGEgLT5cbiAgICAgICBmIGE7XG4gICAgICAgcmV0dXJuICgpKSlcbjs7XG5cbmxldCBjcmVhdGUgZiA9XG4gIGxldCB0YWlsID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgKCogY29sbGVjdCBiZWZvcmUgY2FsbGluZyBbZl0sIGluIGNhc2UgW2ZdIGltbWVkaWF0ZWx5IGV4dGVuZHMuICopXG4gIGxldCB0ID0gVGFpbC5jb2xsZWN0IHRhaWwgaW5cbiAgZiB0YWlsO1xuICB0XG47O1xuXG5sZXQgdW5mb2xkIGIgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgdXBvbiAoZiBiKSAoZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWxcbiAgICAgICAgfCBTb21lIChhLCBiKSAtPlxuICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgYTtcbiAgICAgICAgICBsb29wIGIpXG4gICAgaW5cbiAgICBsb29wIGIpXG47O1xuXG5sZXQgb2ZfbGlzdCBsID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIExpc3QuaXRlciBsIH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpO1xuICAgIFRhaWwuY2xvc2VfZXhuIHRhaWwpXG47O1xuXG5sZXQgdG9fbGlzdCBzID0gZm9sZCcgcyB+aW5pdDpbXSB+ZjooZnVuIGIgYSAtPiByZXR1cm4gKGEgOjogYikpID4+fCBMaXN0LnJldlxubGV0IGNvcHlfdG9fdGFpbCB0IHRhaWwgPSBpdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKFRhaWwuZXh0ZW5kIHRhaWwgYSkpXG5cbmxldCBhcHBlbmQgdDEgdDIgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvbiAoY29weV90b190YWlsIHQxIHRhaWwpIChmdW4gKCkgLT5cbiAgICAgIHVwb24gKGNvcHlfdG9fdGFpbCB0MiB0YWlsKSAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKSlcbjs7XG5cbmxldCBjb25jYXQgdCA9XG4gIGNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICB1cG9uIChpdGVyJyB0IH5mOihmdW4gdCAtPiBjb3B5X3RvX3RhaWwgdCB0YWlsKSkgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXInIHQgfmYgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biB2IC0+XG4gICAgICAgICBtYXRjaCVtYXAgZiB2IHdpdGhcbiAgICAgICAgIHwgZmFsc2UgLT4gKClcbiAgICAgICAgIHwgdHJ1ZSAtPiBUYWlsLmV4dGVuZCB0YWlsIHYpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBmaWx0ZXJfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyJyB0IH5mOihmdW4gYSAtPiByZXR1cm4gKGYgYSkpXG5cbmxldCBmaWx0ZXJfbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPlxuICAgICAgICAgbWF0Y2glbWFwIGYgdiB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSB2IC0+IFRhaWwuZXh0ZW5kIHRhaWwgdikpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGZpbHRlcl9tYXBfZGVwcmVjYXRlZCB0IH5mID0gZmlsdGVyX21hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgbWFwJyB0IH5mID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHVwb25cbiAgICAgIChpdGVyJyB0IH5mOihmdW4gdiAtPiBmIHYgPj58IFRhaWwuZXh0ZW5kIHRhaWwpKVxuICAgICAgKGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKSlcbjs7XG5cbmxldCBtYXAgdCB+ZiA9IG1hcCcgdCB+ZjooZnVuIGEgLT4gcmV0dXJuIChmIGEpKVxuXG5sZXQgZmlyc3RfbiBzIG4gPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgbiA9XG4gICAgICBpZiBuID0gMFxuICAgICAgdGhlbiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgICBlbHNlXG4gICAgICAgIHVwb24gKG5leHQgcykgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgQ29ucyAoeCwgdCkgLT5cbiAgICAgICAgICAgIFRhaWwuZXh0ZW5kIHRhaWwgeDtcbiAgICAgICAgICAgIGxvb3AgdCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBzIG4pXG47O1xuXG5sZXQgYXZhaWxhYmxlX25vdyB0ID1cbiAgbGV0IHJlYyBsb29wIHQgYWMgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKG5leHQgdCkgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgTmlsIC0+IExpc3QucmV2IGFjLCB0XG4gICAgfCBTb21lIChDb25zICh4LCB0KSkgLT4gbG9vcCB0ICh4IDo6IGFjKVxuICBpblxuICBsb29wIHQgW11cbjs7XG5cbmxldCBzcGxpdCA/KHN0b3AgPSBEZWZlcnJlZC5uZXZlciAoKSkgPyhmID0gZnVuIF8gLT4gYENvbnRpbnVlKSB0ID1cbiAgbGV0IHJlYXNvbl9mb3Jfc3RvcHBpbmcgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICBsZXQgcHJlZml4ID0gVGFpbC5jcmVhdGUgKCkgaW5cbiAgbGV0IGZpbmlzaCB2ID1cbiAgICBUYWlsLmNsb3NlX2V4biBwcmVmaXg7XG4gICAgSXZhci5maWxsIHJlYXNvbl9mb3Jfc3RvcHBpbmcgdlxuICBpblxuICBsZXQgcmVjIGxvb3AgdCA9XG4gICAgY2hvb3NlIFsgY2hvaWNlIHN0b3AgKGZ1biAoKSAtPiBgU3RvcHBlZCk7IGNob2ljZSAobmV4dCB0KSAoZnVuIG8gLT4gYE5leHQgbykgXVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgYFN0b3BwZWQgLT4gZmluaXNoIChgU3RvcHBlZCB0KVxuICAgIHwgYE5leHQgbyAtPlxuICAgICAgKG1hdGNoIG8gd2l0aFxuICAgICAgIHwgTmlsIC0+IGZpbmlzaCBgRW5kX29mX3N0cmVhbVxuICAgICAgIHwgQ29ucyAoYSwgdCkgLT5cbiAgICAgICAgIChtYXRjaCBmIGEgd2l0aFxuICAgICAgICAgIHwgYENvbnRpbnVlIC0+XG4gICAgICAgICAgICBUYWlsLmV4dGVuZCBwcmVmaXggYTtcbiAgICAgICAgICAgIGxvb3AgdFxuICAgICAgICAgIHwgYEZvdW5kIGIgLT4gZmluaXNoIChgRm91bmQgKGIsIHQpKSkpXG4gIGluXG4gIGxvb3AgdDtcbiAgVGFpbC5jb2xsZWN0IHByZWZpeCwgSXZhci5yZWFkIHJlYXNvbl9mb3Jfc3RvcHBpbmdcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBsZXQgXywgZm91bmQgPSBzcGxpdCB0IH5mOihmdW4gYSAtPiBpZiBmIGEgdGhlbiBgRm91bmQgYSBlbHNlIGBDb250aW51ZSkgaW5cbiAgbWF0Y2glbWFwIGZvdW5kIHdpdGhcbiAgfCBgU3RvcHBlZCBfIC0+IGFzc2VydCBmYWxzZVxuICB8IChgRW5kX29mX3N0cmVhbSB8IGBGb3VuZCBfKSBhcyB4IC0+IHhcbjs7XG5cbmxldCB1bmdyb3VwIHQgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgdXBvblxuICAgICAgKGl0ZXInIHQgfmY6KGZ1biBsIC0+XG4gICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIHggLT4gVGFpbC5leHRlbmQgdGFpbCB4KTtcbiAgICAgICAgIHJldHVybiAoKSkpXG4gICAgICAoZnVuICgpIC0+IFRhaWwuY2xvc2VfZXhuIHRhaWwpKVxuOztcblxubGV0IGludGVybGVhdmUgdHMgPVxuICBjcmVhdGUgKGZ1biB0YWlsIC0+XG4gICAgKCogVGhlIGludGVybGVhdmVkIHN0cmVhbSBzaG91bGQgYmUgY2xvc2VkIHdoZW4gdGhlIG91dGVyIHN0cmVhbSBhbmQgYWxsIG9mXG4gICAgICAgdGhlIGlubmVyIHN0cmVhbXMgaGF2ZSBiZWVuIGNsb3NlZC4gIEtlZXAgYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIG9wZW5cbiAgICAgICBzdHJlYW1zIGFuZCBjbG9zZSB0aGUgaW50ZXJsZWF2ZWQgc3RyZWFtIHdoZW4gdGhhdCBjb3VudCBiZWNvbWVzXG4gICAgICAgemVyby4gKilcbiAgICBsZXQgbnVtX29wZW4gPSByZWYgMSBpblxuICAgICgqIDEgZm9yIHRoZSBvdXRlciBzdHJlYW0gdGhhdCBpcyBvcGVuICopXG4gICAgbGV0IGNsb3NlICgpID1cbiAgICAgIG51bV9vcGVuIDo9ICFudW1fb3BlbiAtIDE7XG4gICAgICBpZiAhbnVtX29wZW4gPSAwIHRoZW4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgIGluXG4gICAgbGV0IG91dGVyX2Nsb3NlZCA9XG4gICAgICBpdGVyJyB0cyB+ZjooZnVuIHQgLT5cbiAgICAgICAgbnVtX29wZW4gOj0gIW51bV9vcGVuICsgMTtcbiAgICAgICAgdXBvbiAoY29weV90b190YWlsIHQgdGFpbCkgY2xvc2U7XG4gICAgICAgIHJldHVybiAoKSlcbiAgICBpblxuICAgIHVwb24gb3V0ZXJfY2xvc2VkIGNsb3NlKVxuOztcblxubGV0IHRha2VfdW50aWwgdCBkID1cbiAgY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIHVwb25cbiAgICAgICAgKGNob29zZSBbIGNob2ljZSBkIChmdW4gKCkgLT4gYFN0b3ApOyBjaG9pY2UgKG5leHQgdCkgKGZ1biB6IC0+IGBOZXh0IHopIF0pXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYFN0b3AgfCBgTmV4dCBOaWwgLT4gVGFpbC5jbG9zZV9leG4gdGFpbFxuICAgICAgICAgIHwgYE5leHQgKENvbnMgKHgsIHQpKSAtPlxuICAgICAgICAgICAgVGFpbC5leHRlbmQgdGFpbCB4O1xuICAgICAgICAgICAgbG9vcCB0KVxuICAgIGluXG4gICAgbG9vcCB0KVxuOztcblxubGV0IGl0ZXJfZHVyYWJseScgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICB+cnVuOlxuICAgICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgICAgfnJlc3Q6YFJhaXNlXG4gICAgICAgICAgKGZ1biAoKSAtPiBmIHgpXG4gICAgICAgID4+PiBmdW4geiAtPlxuICAgICAgICBsb29wIHQ7XG4gICAgICAgIChtYXRjaCB6IHdpdGhcbiAgICAgICAgIHwgT2sgKCkgLT4gKClcbiAgICAgICAgIHwgRXJyb3IgZSAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGUpXG4gICAgaW5cbiAgICBsb29wIHQpXG47O1xuXG5sZXQgaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQgdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0ID1cbiAgICAgIG5leHQgdFxuICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICB8IE5pbCAtPiBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgICB8IENvbnMgKHgsIHQpIC0+XG4gICAgICAgICgqIFdlIGltbWVkaWF0ZWx5IGNhbGwgW2xvb3BdLCB0aHVzIG1ha2luZyB0aGUgaXRlciBkdXJhYmxlLiAgQW55IGV4Y2VwdGlvbnNcbiAgICAgICAgICAgcmFpc2VkIGJ5IFtmXSB3aWxsIG5vdCBwcmV2ZW50IHRoZSBsb29wIGZyb20gY29udGludWluZywgYW5kIHdpbGwgZ28gdG8gdGhlXG4gICAgICAgICAgIG1vbml0b3Igb2Ygd2hvbWV2ZXIgY2FsbGVkIFtpdGVyX2R1cmFibHlfcmVwb3J0X2VuZF0uICopXG4gICAgICAgIGxvb3AgdDtcbiAgICAgICAgZiB4XG4gICAgaW5cbiAgICBsb29wIHQpXG47O1xuXG5sZXQgaXRlcl9kdXJhYmx5IHQgfmYgPSBkb24ndF93YWl0X2ZvciAoaXRlcl9kdXJhYmx5X3JlcG9ydF9lbmQgdCB+ZilcblxubGV0IG9mX2Z1biBmID1cbiAgdW5mb2xkICgpIH5mOihmdW4gKCkgLT5cbiAgICBsZXQlbWFwIGEgPSBmICgpIGluXG4gICAgU29tZSAoYSwgKCkpKVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlICgnYSwgJ3Blcm1pc3Npb24pIHQgPSAoJ2EsICdwZXJtaXNzaW9uKSBUeXBlcy5CdmFyLnRcblxudHlwZSAnYSByZXByID0gJ2EgVHlwZXMuQnZhci5yZXByID1cbiAgeyBtdXRhYmxlIGhhc19hbnlfd2FpdGVycyA6IGJvb2xcbiAgOyBtdXRhYmxlIGl2YXIgOiAnYSBJdmFyLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9XG4gIGxldCByZXByID0gVHlwZXMuQnZhci50b19yZXByIHQgaW5cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHJlcHIgWyVzZXhwX29mOiBfIHJlcHJdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCByZXByIGYgaW5cbiAgICBGaWVsZHNfb2ZfcmVwci5pdGVyXG4gICAgICB+aGFzX2FueV93YWl0ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBoYXNfYW55X3dhaXRlcnMgLT5cbiAgICAgICAgICAgaWYgSXZhci5oYXNfaGFuZGxlcnMgcmVwci5pdmFyIHRoZW4gYXNzZXJ0IGhhc19hbnlfd2FpdGVycykpXG4gICAgICB+aXZhcjpcbiAgICAgICAgKGNoZWNrIChmdW4gaXZhciAtPlxuICAgICAgICAgICBJdmFyLmludmFyaWFudCBpbnZhcmlhbnRfYSBpdmFyO1xuICAgICAgICAgICBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKSlcbjs7XG5cbmxldCBzZXhwX29mX3QgXyBfIHQgPVxuICBsZXQgeyBoYXNfYW55X3dhaXRlcnM7IGl2YXIgPSBfIH0gPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICAoKiBXZSBkb24ndCBzaG93IFtpdmFyXSBiZWNhdXNlIGl0J3MgYWx3YXlzIGVtcHR5LiAqKVxuICBbJW1lc3NhZ2UgKGhhc19hbnlfd2FpdGVycyA6IGJvb2wpXVxuOztcblxuaW5jbHVkZSBTY2hlZHVsZXIxLkJ2YXJcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIGlmIHJlcHIuaGFzX2FueV93YWl0ZXJzXG4gIHRoZW4gKFxuICAgIHJlcHIuaGFzX2FueV93YWl0ZXJzIDwtIGZhbHNlO1xuICAgIEl2YXIuZmlsbCByZXByLml2YXIgYTtcbiAgICByZXByLml2YXIgPC0gSXZhci5jcmVhdGUgKCkpXG47O1xuXG5sZXQgd2FpdCB0ID1cbiAgbGV0IHJlcHIgPSBUeXBlcy5CdmFyLnRvX3JlcHIgdCBpblxuICByZXByLmhhc19hbnlfd2FpdGVycyA8LSB0cnVlO1xuICBJdmFyLnJlYWQgcmVwci5pdmFyXG47O1xuXG5sZXQgaGFzX2FueV93YWl0ZXJzIHQgPVxuICBsZXQgcmVwciA9IFR5cGVzLkJ2YXIudG9fcmVwciB0IGluXG4gIHJlcHIuaGFzX2FueV93YWl0ZXJzXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5vcGVuISBEZWZlcnJlZF9zdGRcblxubGV0IGRlYnVnID0gRGVidWcuY2xvY2tcblxubW9kdWxlIEFsYXJtID0gVGltaW5nX3doZWVsLkFsYXJtXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBTY2hlZHVsZXIgPSBTY2hlZHVsZXIxXG5cbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IGNob29zZSA9IERlZmVycmVkLmNob29zZVxubGV0IGNob2ljZSA9IERlZmVycmVkLmNob2ljZVxubGV0ICggPj4+ICkgPSB1cG9uXG5cbm1vZHVsZSBUMSA9IHN0cnVjdFxuICBpbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5UMVxuXG4gICgqIFdlIGRvbid0IGluY2x1ZGUgdGhlIFtpZF0gaW4gdGhlIHNleHAgYmVjYXVzZSB0aGUgdXNlciAocmlnaHRseSkgY2FuJ3QgY29udHJvbCBpdCwgc29cbiAgICAgaXQncyBoYXJkIHRvIG1ha2UgaXQgZGV0ZXJtaW5pc3RpYyBpbiB0ZXN0cy4gKilcbiAgbGV0IHNleHBfb2ZfdFxuICAgICAgICBfXG4gICAgICAgIHsgaWQgPSBfXG4gICAgICAgIDsgYWR2YW5jZV9lcnJvcnMgPSBfXG4gICAgICAgIDsgYW1fYWR2YW5jaW5nID0gX1xuICAgICAgICA7IGV2ZW50c1xuICAgICAgICA7IGZpcmVkX2V2ZW50cyA9IF9cbiAgICAgICAgOyBoYW5kbGVfZmlyZWQgPSBfXG4gICAgICAgIDsgaXNfd2FsbF9jbG9ja1xuICAgICAgICA7IG1vc3RfcmVjZW50bHlfZmlyZWQgPSBfXG4gICAgICAgIDsgc2NoZWR1bGVyID0gX1xuICAgICAgICB9XG4gICAgPVxuICAgIGlmIGlzX3dhbGxfY2xvY2tcbiAgICB0aGVuIFslbWVzc2FnZSBcIjx3YWxsX2Nsb2NrPlwiXVxuICAgIGVsc2VcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICAoaXNfd2FsbF9jbG9jayA6IGJvb2wpXG4gICAgICAgICAgKCogV2UgZG9uJ3QgZGlzcGxheSB0aGUgW0pvYi50XXMgaW4gW2V2ZW50c10gYmVjYXVzZSB0aG9zZSBhcmVcbiAgICAgICAgICAgICBwb29sIHBvaW50ZXJzLCB3aGljaCBhcmUgdW5pbmZvcm1hdGl2ZS4gKilcbiAgICAgICAgICAoZXZlbnRzIDogXyBUaW1pbmdfd2hlZWwudCldXG4gIDs7XG5lbmRcblxub3BlbiBUMVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWFkX3dyaXRlIFQxLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG4gIGxldCBpbnZhcmlhbnRfd2l0aF9qb2JzID0gaW52YXJpYW50X3dpdGhfam9ic1xuZW5kXG5cbnR5cGUgdCA9IHJlYWQgVDEudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5sZXQgaW52YXJpYW50X3dpdGhfam9icyA9IGludmFyaWFudF93aXRoX2pvYnNcbmxldCByZWFkX29ubHkgKHQgOiBbPiByZWFkIF0gVDEudCkgPSAodCA6PiB0KVxubGV0IGNyZWF0ZSA9IFNjaGVkdWxlci5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyLndhbGxfY2xvY2tcbmxldCBhbGFybV9wcmVjaXNpb24gdCA9IFRpbWluZ193aGVlbC5hbGFybV9wcmVjaXNpb24gdC5ldmVudHNcbmxldCBpc193YWxsX2Nsb2NrIHQgPSB0LmlzX3dhbGxfY2xvY2tcbmxldCBuZXh0X2FsYXJtX2ZpcmVzX2F0IHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdCB0LmV2ZW50c1xubGV0IHRpbWluZ193aGVlbF9ub3cgdCA9IFRpbWluZ193aGVlbC5ub3cgdC5ldmVudHNcbmxldCBpZCB0ID0gdC5pZFxuXG5tb2R1bGUgSWQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuSWRcblxubGV0IG5vdyB0ID1cbiAgaWYgdC5pc193YWxsX2Nsb2NrXG4gIHRoZW5cbiAgICAoKiBGb3IgdGhlIHdhbGwtY2xvY2sgdGltZS1zb3VyY2UsIHdlIHVzZSBbVGltZV9ucy5ub3cgKCldIHJhdGhlciB0aGFuXG4gICAgICAgW1RpbWluZ193aGVlbC5ub3cgdC5ldmVudHNdLiAgVGhlIGxhdHRlciBpcyBvbmx5IHVwZGF0ZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2hcbiAgICAgICBjeWNsZS4gIFRoZXJlIGNhbiBiZSBzdWJzdGFudGlhbCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byB3aGVuIHBlb3BsZSBkbyBsb25nXG4gICAgICAgcnVubmluZyBjb21wdXRhdGlvbnMgb3IgbWl4IGJsb2NraW5nIGNvZGUgd2l0aCBhc3luYy4gIEFuZCBodW1hbnMgZXhwZWN0IHRoYXRcbiAgICAgICB3YWxsLWNsb2NrIHRpbWUgaXMgYmFzZWQgb24gW1RpbWUubm93XSwgbm90IHNvbWUgYXJ0aWZhY3Qgb2YgYXN5bmNcbiAgICAgICBpbXBsZW1lbnRhdGlvbi4gKilcbiAgICBUaW1lX25zLm5vdyAoKVxuICBlbHNlIHRpbWluZ193aGVlbF9ub3cgdFxuOztcblxuKCogV2UgcHJlYWxsb2NhdGUgW3NlbmRfZXhuXSB0byBhdm9pZCBhbGxvY2F0aW5nIGl0IG9uIGVhY2ggY2FsbCB0byBbYWR2YW5jZV9jbG9ja10uICopXG5sZXQgc2VuZF9leG4gPSBTb21lIE1vbml0b3Iuc2VuZF9leG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXyA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hZHZhbmNlX2Nsb2NrIHQgfnRvXyB+c2VuZF9leG5cbmxldCBhZHZhbmNlX2RpcmVjdGx5X2J5IHQgYnkgPSBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXzooVGltZV9ucy5hZnRlciAobm93IHQpIGJ5KVxubGV0IGFkdmFuY2UgPSBhZHZhbmNlX2RpcmVjdGx5XG5sZXQgYWR2YW5jZV9ieSA9IGFkdmFuY2VfZGlyZWN0bHlfYnlcbmxldCBmaXJlX3Bhc3RfYWxhcm1zIHQgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZTAuZmlyZV9wYXN0X2FsYXJtcyB0IH5zZW5kX2V4blxubGV0IHlpZWxkIHQgPSBCdmFyLndhaXQgKFNjaGVkdWxlci55aWVsZCB0LnNjaGVkdWxlcilcblxubGV0IGFkdmFuY2VfYnlfYWxhcm1zID93YWl0X2ZvciB0IH50b18gPVxuICBsZXQgcnVuX3F1ZXVlZF9hbGFybXMgKCkgPVxuICAgICgqIEV2ZXJ5IHRpbWUgd2Ugd2FudCB0byBydW4gcXVldWVkIGFsYXJtcyB3ZSBuZWVkIHRvIHlpZWxkIGNvbnRyb2wgYmFjayB0byB0aGVcbiAgICAgICBbQXN5bmMuU2NoZWR1bGVyXSBhbmQgW3dhaXRfZm9yXSBhbnkgbG9naWMgdGhhdCBpcyBzdXBwb3NlZCB0byBmaW5pc2ggYXQgdGhpcyB0aW1lXG4gICAgICAgYmVmb3JlIGFkdmFuY2luZy4gIElmIG5vIFt3YWl0X2Zvcl0gbG9naWMgaXMgc3BlY2lmaWVkIHdlIGNhbiBzaW1wbHkgeWllbGQgY29udHJvbFxuICAgICAgIGJ5IGludm9raW5nIFt5aWVsZCB0XSwgd2hpY2ggZW5xdWV1ZXMgYW5vdGhlciBqb2IgYXQgdGhlIGVuZCBvZiB0aGUgc2NoZWR1bGVyIGpvYlxuICAgICAgIHF1ZXVlIHNvIGFsYXJtIGpvYnMgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuIGJlZm9yZSB3ZSBhZHZhbmNlLiAqKVxuICAgIG1hdGNoIHdhaXRfZm9yIHdpdGhcbiAgICB8IE5vbmUgLT4geWllbGQgdFxuICAgIHwgU29tZSBmIC0+IGYgKClcbiAgaW5cbiAgbGV0IGZpbmlzaCAoKSA9XG4gICAgYWR2YW5jZV9kaXJlY3RseSB0IH50b187XG4gICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICgqIHNvIHRoYXQgYWxhcm1zIHNjaGVkdWxlZCBhdCBvciBiZWZvcmUgW3RvX10gZmlyZSAqKVxuICAgIHJ1bl9xdWV1ZWRfYWxhcm1zICgpXG4gIGluXG4gIGxldCByZWMgd2Fsa19hbGFybXMgKCkgPVxuICAgIG1hdGNoIFRpbWluZ193aGVlbC5taW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdC5ldmVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBmaW5pc2ggKClcbiAgICB8IFNvbWUgbWluX2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsIC0+XG4gICAgICBpZiBUaW1lX25zLiggPj0gKSBtaW5fYWxhcm1fdGltZV9pbl9taW5faW50ZXJ2YWwgdG9fXG4gICAgICB0aGVuIGZpbmlzaCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOm1pbl9hbGFybV90aW1lX2luX21pbl9pbnRlcnZhbDtcbiAgICAgICAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAgICAgICBsZXQgcXVldWVkX2FsYXJtc19yYW4gPSBydW5fcXVldWVkX2FsYXJtcyAoKSBpblxuICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHF1ZXVlZF9hbGFybXNfcmFuXG4gICAgICAgIHRoZW4gd2Fsa19hbGFybXMgKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0JWJpbmQgKCkgPSBxdWV1ZWRfYWxhcm1zX3JhbiBpblxuICAgICAgICAgIHdhbGtfYWxhcm1zICgpKSlcbiAgaW5cbiAgZmlyZV9wYXN0X2FsYXJtcyB0O1xuICAoKiBUaGlzIGZpcnN0IFtydW5fcXVldWVkX2FsYXJtc10gY2FsbCBhbGxvd3MgW0Nsb2NrX25zLmV2ZXJ5XSB0aGUgb3Bwb3J0dW5pdHkgdG8gcnVuXG4gICAgIGl0cyBjb250aW51YXRpb24gZGVmZXJyZWRzIHNvIHRoYXQgdGhleSBjYW4gcmVzY2hlZHVsZSBhbGFybXMuICBUaGlzIGlzIHBhcnRpY3VsYXJseVxuICAgICB1c2VmdWwgaW4gb3VyIFwiYWR2YW5jZSBoaXRzIGludGVybWVkaWF0ZSBhbGFybXNcIiB1bml0IHRlc3QgYmVsb3csIGJ1dCBsaWtlbHkgdXNlZnVsXG4gICAgIGluIG90aGVyIGNhc2VzIHdoZXJlIFtldmVyeV0gaXMgc3luY2hyb25vdXNseSBmb2xsb3dlZCBieSBbYWR2YW5jZV0uICopXG4gIGxldCViaW5kICgpID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgd2Fsa19hbGFybXMgKClcbjs7XG5cbmxldCBhZHZhbmNlX2J5X21heF9hbGFybXNfaW5fZWFjaF90aW1pbmdfd2hlZWxfaW50ZXJ2YWwgP3dhaXRfZm9yIHQgfnRvXyA9XG4gIGxldCBydW5fcXVldWVkX2FsYXJtcyAoKSA9XG4gICAgKCogRXZlcnkgdGltZSB3ZSB3YW50IHRvIHJ1biBxdWV1ZWQgYWxhcm1zIHdlIG5lZWQgdG8geWllbGQgY29udHJvbCBiYWNrIHRvIHRoZVxuICAgICAgIFtBc3luYy5TY2hlZHVsZXJdIGFuZCBbd2FpdF9mb3JdIGFueSBsb2dpYyB0aGF0IGlzIHN1cHBvc2VkIHRvIGZpbmlzaCBhdCB0aGlzIHRpbWVcbiAgICAgICBiZWZvcmUgYWR2YW5jaW5nLiAgSWYgbm8gW3dhaXRfZm9yXSBsb2dpYyBpcyBzcGVjaWZpZWQgd2UgY2FuIHNpbXBseSB5aWVsZCBjb250cm9sXG4gICAgICAgYnkgaW52b2tpbmcgW3lpZWxkIHRdLCB3aGljaCBlbnF1ZXVlcyBhbm90aGVyIGpvYiBhdCB0aGUgZW5kIG9mIHRoZSBzY2hlZHVsZXIgam9iXG4gICAgICAgcXVldWUgc28gYWxhcm0gam9icyBoYXZlIHRoZSBvcHBvcnR1bml0eSB0byBydW4gYmVmb3JlIHdlIGFkdmFuY2UuICopXG4gICAgbWF0Y2ggd2FpdF9mb3Igd2l0aFxuICAgIHwgTm9uZSAtPiB5aWVsZCB0XG4gICAgfCBTb21lIGYgLT4gZiAoKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBhZHZhbmNlX2RpcmVjdGx5IHQgfnRvXztcbiAgICBmaXJlX3Bhc3RfYWxhcm1zIHQ7XG4gICAgKCogc28gdGhhdCBhbGFybXMgc2NoZWR1bGVkIGF0IG9yIGJlZm9yZSBbdG9fXSBmaXJlICopXG4gICAgcnVuX3F1ZXVlZF9hbGFybXMgKClcbiAgaW5cbiAgbGV0IHJlYyB3YWxrX2FsYXJtcyAoKSA9XG4gICAgbWF0Y2ggbmV4dF9hbGFybV9maXJlc19hdCB0IHdpdGhcbiAgICB8IE5vbmUgLT4gZmluaXNoICgpXG4gICAgfCBTb21lIG5leHRfYWxhcm1fZmlyZXNfYXQgLT5cbiAgICAgIGlmIFRpbWVfbnMuKCA+PSApIG5leHRfYWxhcm1fZmlyZXNfYXQgdG9fXG4gICAgICB0aGVuIGZpbmlzaCAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGFkdmFuY2VfZGlyZWN0bHkgdCB+dG9fOihUaW1pbmdfd2hlZWwubWF4X2FsYXJtX3RpbWVfaW5fbWluX2ludGVydmFsX2V4biB0LmV2ZW50cyk7XG4gICAgICAgIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgICAgICAgbGV0IHF1ZXVlZF9hbGFybXNfcmFuID0gcnVuX3F1ZXVlZF9hbGFybXMgKCkgaW5cbiAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBxdWV1ZWRfYWxhcm1zX3JhblxuICAgICAgICB0aGVuIHdhbGtfYWxhcm1zICgpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCViaW5kICgpID0gcXVldWVkX2FsYXJtc19yYW4gaW5cbiAgICAgICAgICB3YWxrX2FsYXJtcyAoKSkpXG4gIGluXG4gIGZpcmVfcGFzdF9hbGFybXMgdDtcbiAgKCogVGhpcyBmaXJzdCBbcnVuX3F1ZXVlZF9hbGFybXNdIGNhbGwgYWxsb3dzIFtDbG9ja19ucy5ldmVyeV0gdGhlIG9wcG9ydHVuaXR5IHRvIHJ1blxuICAgICBpdHMgY29udGludWF0aW9uIGRlZmVycmVkcyBzbyB0aGF0IHRoZXkgY2FuIHJlc2NoZWR1bGUgYWxhcm1zLiAgVGhpcyBpcyBwYXJ0aWN1bGFybHlcbiAgICAgdXNlZnVsIGluIG91ciBcImFkdmFuY2UgaGl0cyBpbnRlcm1lZGlhdGUgYWxhcm1zXCIgdW5pdCB0ZXN0IGJlbG93LCBidXQgbGlrZWx5IHVzZWZ1bFxuICAgICBpbiBvdGhlciBjYXNlcyB3aGVyZSBbZXZlcnldIGlzIHN5bmNocm9ub3VzbHkgZm9sbG93ZWQgYnkgW2FkdmFuY2VdLiAqKVxuICBsZXQlYmluZCAoKSA9IHJ1bl9xdWV1ZWRfYWxhcm1zICgpIGluXG4gIHdhbGtfYWxhcm1zICgpXG47O1xuXG5sZXQgYWR2YW5jZV9ieV9hbGFybXNfYnkgP3dhaXRfZm9yIHQgYnkgPVxuICBhZHZhbmNlX2J5X2FsYXJtcyA/d2FpdF9mb3IgdCB+dG9fOihUaW1lX25zLmFmdGVyIChub3cgdCkgYnkpXG47O1xuXG5sZXQgc3Bhbl90b190aW1lIHQgc3BhbiA9IFRpbWVfbnMuYWZ0ZXIgKG5vdyB0KSBzcGFuXG5cbmxldCBzY2hlZHVsZV9qb2IgdCB+YXQgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgbGV0IGFsYXJtID1cbiAgICBUaW1pbmdfd2hlZWwuYWRkXG4gICAgICB0LmV2ZW50c1xuICAgICAgfmF0XG4gICAgICAoSm9iX29yX2V2ZW50Lm9mX2pvYiAoU2NoZWR1bGVyLmNyZWF0ZV9qb2IgdC5zY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhKSlcbiAgaW5cbiAgKG1hdGNoIHQuc2NoZWR1bGVyLmV2ZW50X2FkZGVkX2hvb2sgd2l0aFxuICAgfCBOb25lIC0+ICgpXG4gICB8IFNvbWUgZiAtPiBmIGF0KTtcbiAgYWxhcm1cbjs7XG5cbmxldCBydW5fYXRfaW50ZXJuYWwgdCB0aW1lIGYgYSA9XG4gIGxldCBleGVjdXRpb25fY29udGV4dCA9IFNjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQuc2NoZWR1bGVyIGluXG4gIGlmIFRpbWVfbnMuKCA+ICkgdGltZSAoVGltaW5nX3doZWVsLm5vdyB0LmV2ZW50cylcbiAgdGhlbiBzY2hlZHVsZV9qb2IgdCB+YXQ6dGltZSBleGVjdXRpb25fY29udGV4dCBmIGFcbiAgZWxzZSAoXG4gICAgU2NoZWR1bGVyLmVucXVldWUgdC5zY2hlZHVsZXIgZXhlY3V0aW9uX2NvbnRleHQgZiBhO1xuICAgIEFsYXJtLm51bGwgKCkpXG47O1xuXG5sZXQgcnVuX2F0IHQgdGltZSBmIGEgPSBpZ25vcmUgKHJ1bl9hdF9pbnRlcm5hbCB0IHRpbWUgZiBhIDogXyBBbGFybS50KVxubGV0IHJ1bl9hZnRlciB0IHNwYW4gZiBhID0gcnVuX2F0IHQgKHNwYW5fdG9fdGltZSB0IHNwYW4pIGYgYVxuXG5sZXQgYXQgPVxuICBsZXQgZmlsbCByZXN1bHQgPSBJdmFyLmZpbGwgcmVzdWx0ICgpIGluXG4gIGZ1biB0IHRpbWUgLT5cbiAgICBpZiBUaW1lX25zLiggPD0gKSB0aW1lIChUaW1pbmdfd2hlZWwubm93IHQuZXZlbnRzKVxuICAgIHRoZW4gcmV0dXJuICgpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcmVzdWx0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICAgIGlnbm9yZSAocnVuX2F0X2ludGVybmFsIHQgdGltZSBmaWxsIHJlc3VsdCA6IF8gQWxhcm0udCk7XG4gICAgICBJdmFyLnJlYWQgcmVzdWx0KVxuOztcblxubGV0IGFmdGVyIHQgc3BhbiA9IGF0IHQgKHNwYW5fdG9fdGltZSB0IHNwYW4pXG5cbmxldCByZW1vdmVfYWxhcm0gdCBhbGFybSA6IHVuaXQgPVxuICBsZXQgam9iX29yX2V2ZW50ID0gQWxhcm0udmFsdWUgdC5ldmVudHMgYWxhcm0gaW5cbiAgKGxldCBvcGVuIEpvYl9vcl9ldmVudC5NYXRjaCBpblxuICAgbGV0IChLIGspID0ga2luZCBqb2Jfb3JfZXZlbnQgaW5cbiAgIG1hdGNoIGssIHByb2plY3QgayBqb2Jfb3JfZXZlbnQgd2l0aFxuICAgfCBKb2IsIGpvYiAtPiBTY2hlZHVsZXIuZnJlZV9qb2IgdC5zY2hlZHVsZXIgam9iXG4gICB8IEV2ZW50LCBfIC0+XG4gICAgICgqIFRoaXMgaXMgdW5yZWFjaGFibGUgYmVjYXVzZSBbYWxhcm1dIG9ubHkgZXZlciBjb21lcyBmcm9tIFtFdmVudC5hbGFybV0gd2hpY2ggb25seVxuICAgICAgICBldmVyIGdldHMgcG9wdWxhdGVkIGJ5IGEgY2FsbCB0byBbc2NoZWR1bGVfam9iXS4gKilcbiAgICAgYXNzZXJ0IGZhbHNlKTtcbiAgVGltaW5nX3doZWVsLnJlbW92ZSB0LmV2ZW50cyBhbGFybVxuOztcblxubGV0IHJlbW92ZV9hbGFybV9pZl9zY2hlZHVsZWQgdCBhbGFybSA9XG4gIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgYWxhcm0gdGhlbiByZW1vdmVfYWxhcm0gdCBhbGFybVxuOztcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIG1vZHVsZSBGaXJlZCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgIHsgbXV0YWJsZSBhbGFybSA6IEpvYl9vcl9ldmVudC50IEFsYXJtLnRcbiAgICA7IG11dGFibGUgZmlyZSA6IHVuaXQgLT4gdW5pdFxuICAgIDsgKCogQXMgbG9uZyBhcyBbSXZhci5pc19lbXB0eSBmaXJlZF0sIHdlIGhhdmUgbm90IHlldCBjb21taXR0ZWQgdG8gd2hldGhlciB0aGUgZXZlbnRcbiAgICAgICAgIHdpbGwgaGFwcGVuIG9yIGJlIGFib3J0ZWQuICBXaGVuIFtJdmFyLmlzX2VtcHR5IGZpcmVkXSwgdGhlIGFsYXJtIG1heSBvciBtYXkgbm90XG4gICAgICAgICBiZSBpbiB0aGUgdGltaW5nIHdoZWVsIC0tIGlmIGl0IGlzbid0LCB0aGVuIHRoZXJlJ3MgYSBqb2IgaW4gQXN5bmMncyBqb2IgcXVldWVcbiAgICAgICAgIHRoYXQgd2lsbCBmaXJlIHRoZSBldmVudCwgdW5sZXNzIGl0IGlzIGFib3J0ZWQgYmVmb3JlIHRoYXQgam9iIGNhbiBydW4uICopXG4gICAgICBmaXJlZCA6ICgnYSwgJ2gpIEZpcmVkLnQgSXZhci50XG4gICAgOyAoKiBbbnVtX2ZpcmVzX3RvX3NraXBdIGlzIHVzZWQgdG8gcmVzY2hlZHVsZSBldmVudHMgdGhhdCBoYXZlIGZpcmVkIGFuZCBlbnRlcmVkIHRoZVxuICAgICAgICAgQXN5bmMgam9iIHF1ZXVlLCBidXQgaGF2ZSBub3QgeWV0IHJ1bi4gIFRob3NlIGpvYnMgb25seSBydW4gaWYgW251bV9maXJlc190b19za2lwXG4gICAgICAgICA9IDBdLCBhbmQgb3RoZXJ3aXNlIGp1c3QgZGVjcmVtZW50IGl0LiAgU28sIHRvIHJlc2NoZWR1bGUgYW4gZXZlbnQgaW4gc3VjaCBhXG4gICAgICAgICBzdGF0ZSwgd2UgaW5jcmVtZW50IFtudW1fZmlyZXNfdG9fc2tpcF0gYW5kIGFkZCBhIG5ldyBhbGFybSB0byB0aGUgdGltaW5nXG4gICAgICAgICB3aGVlbC4gKilcbiAgICAgIG11dGFibGUgbnVtX2ZpcmVzX3RvX3NraXAgOiBpbnRcbiAgICA7ICgqIFtzY2hlZHVsZWRfYXRdIGlzIHRoZSB0aW1lIGF0IHdoaWNoIFt0XSBoYXMgbW9zdCByZWNlbnRseSBiZWVuIHNjaGVkdWxlZCB0byBmaXJlLlxuICAgICAgICAgV2hpbGUgW3QuYWxhcm1dIGlzIHN0aWxsIGluIHRoZSB0aW1pbmcgd2hlZWwsIHRoaXMgaXMgdGhlIHNhbWUgYXMgW0FsYXJtLmF0XG4gICAgICAgICB0LmFsYXJtXS4gKilcbiAgICAgIG11dGFibGUgc2NoZWR1bGVkX2F0IDogVGltZV9ucy50XG4gICAgOyB0aW1lX3NvdXJjZSA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBmaXJlZCB0ID0gSXZhci5yZWFkIHQuZmlyZWRcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIGludmFyaWFudF9oIHQgPVxuICAgIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+YWxhcm06XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWxhcm0gLT5cbiAgICAgICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5maXJlZFxuICAgICAgICAgICAgIHRoZW4gYXNzZXJ0IChub3QgKFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIGFsYXJtKSlcbiAgICAgICAgICAgICBlbHNlIGlmIFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIGFsYXJtXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKEpvYl9vcl9ldmVudC5pc19qb2IgKEFsYXJtLnZhbHVlIGV2ZW50cyBhbGFybSkpKSlcbiAgICAgICAgfmZpcmU6aWdub3JlXG4gICAgICAgIH5maXJlZDpcbiAgICAgICAgICAoY2hlY2sgKGZ1biAoZmlyZWQgOiBfIEZpcmVkLnQgSXZhci50KSAtPlxuICAgICAgICAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKEl2YXIucmVhZCBmaXJlZCkgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgIHwgU29tZSAoQWJvcnRlZCBhKSAtPiBpbnZhcmlhbnRfYSBhXG4gICAgICAgICAgICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBpbnZhcmlhbnRfaCBoKSlcbiAgICAgICAgfm51bV9maXJlc190b19za2lwOlxuICAgICAgICAgIChjaGVjayAoZnVuIG51bV9maXJlc190b19za2lwIC0+IGFzc2VydCAobnVtX2ZpcmVzX3RvX3NraXAgPj0gMCkpKVxuICAgICAgICB+c2NoZWR1bGVkX2F0OlxuICAgICAgICAgIChjaGVjayAoZnVuIHNjaGVkdWxlZF9hdCAtPlxuICAgICAgICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm1cbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBUaW1lX25zLnRdXG4gICAgICAgICAgICAgICAgIHNjaGVkdWxlZF9hdFxuICAgICAgICAgICAgICAgICB+ZXhwZWN0OihBbGFybS5hdCBldmVudHMgdC5hbGFybSkpKVxuICAgICAgICB+dGltZV9zb3VyY2U6aWdub3JlKVxuICA7O1xuXG4gIG1vZHVsZSBTdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICB8IEhhcHBlbmVkIG9mICdoXG4gICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lX25zLnRcbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgc3RhdHVzIHQgOiBfIFN0YXR1cy50ID1cbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChJdmFyLnJlYWQgdC5maXJlZCkgd2l0aFxuICAgIHwgTm9uZSAtPiBTY2hlZHVsZWRfYXQgdC5zY2hlZHVsZWRfYXRcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gQWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBIYXBwZW5lZCBoXG4gIDs7XG5cbiAgbW9kdWxlIEFib3J0X3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IGFib3J0IHQgYSA6IF8gQWJvcnRfcmVzdWx0LnQgPVxuICAgIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nIFwiVGltZV9zb3VyY2UuRXZlbnQuYWJvcnRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgKGZpcmVkIHQpIHdpdGhcbiAgICB8IFNvbWUgKEFib3J0ZWQgYSkgLT4gUHJldmlvdXNseV9hYm9ydGVkIGFcbiAgICB8IFNvbWUgKEhhcHBlbmVkIGgpIC0+IFByZXZpb3VzbHlfaGFwcGVuZWQgaFxuICAgIHwgTm9uZSAtPlxuICAgICAgSXZhci5maWxsIHQuZmlyZWQgKEFib3J0ZWQgYSk7XG4gICAgICByZW1vdmVfYWxhcm1faWZfc2NoZWR1bGVkIHQudGltZV9zb3VyY2UgdC5hbGFybTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IGFib3J0X2V4biB0IGEgPVxuICAgIG1hdGNoIGFib3J0IHQgYSB3aXRoXG4gICAgfCBPayAtPiAoKVxuICAgIHwgUHJldmlvdXNseV9oYXBwZW5lZCBfIC0+XG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZSBcIkNsb2NrLkV2ZW50LmFib3J0X2V4biBmYWlsZWQgdG8gYWJvcnQgZXZlbnQgdGhhdCBwcmV2aW91c2x5IGhhcHBlbmVkXCJdXG4gICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgXyAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2UgXCJDbG9jay5FdmVudC5hYm9ydF9leG4gZmFpbGVkIHRvIGFib3J0IGV2ZW50IHRoYXQgcHJldmlvdXNseSBhYm9ydGVkXCJdXG4gIDs7XG5cbiAgbGV0IGFib3J0X2lmX3Bvc3NpYmxlIHQgYSA9IGlnbm9yZSAoYWJvcnQgdCBhIDogXyBBYm9ydF9yZXN1bHQudClcbiAgbGV0IHNjaGVkdWxlIHQgPSB0LmFsYXJtIDwtIHJ1bl9hdF9pbnRlcm5hbCB0LnRpbWVfc291cmNlIHQuc2NoZWR1bGVkX2F0IHQuZmlyZSAoKVxuXG4gIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IHN0cnVjdFxuICAgIHR5cGUgKCdhLCAnaCkgdCA9XG4gICAgICB8IE9rXG4gICAgICB8IFByZXZpb3VzbHlfYWJvcnRlZCBvZiAnYVxuICAgICAgfCBQcmV2aW91c2x5X2hhcHBlbmVkIG9mICdoXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IHJlc2NoZWR1bGVfYXQgdCBhdCA6IF8gUmVzY2hlZHVsZV9yZXN1bHQudCA9XG4gICAgaWYgZGVidWdcbiAgICB0aGVuXG4gICAgICBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5yZXNjaGVkdWxlX2F0XCIgKHQsIGF0KSBbJXNleHBfb2Y6IChfLCBfKSB0ICogVGltZV9ucy50XTtcbiAgICBtYXRjaCBEZWZlcnJlZC5wZWVrIChmaXJlZCB0KSB3aXRoXG4gICAgfCBTb21lIChBYm9ydGVkIGEpIC0+IFByZXZpb3VzbHlfYWJvcnRlZCBhXG4gICAgfCBTb21lIChIYXBwZW5lZCBoKSAtPiBQcmV2aW91c2x5X2hhcHBlbmVkIGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBldmVudHMgPSB0LnRpbWVfc291cmNlLmV2ZW50cyBpblxuICAgICAgbGV0IGlzX2luX3RpbWluZ193aGVlbCA9IFRpbWluZ193aGVlbC5tZW0gZXZlbnRzIHQuYWxhcm0gaW5cbiAgICAgIGxldCBhbV90cnlpbmdfdG9fcmVzY2hlZHVsZV9pbl90aGVfZnV0dXJlID1cbiAgICAgICAgVGltZV9ucy4oID4gKSBhdCAoVGltaW5nX3doZWVsLm5vdyBldmVudHMpXG4gICAgICBpblxuICAgICAgdC5zY2hlZHVsZWRfYXQgPC0gYXQ7XG4gICAgICAobWF0Y2ggYW1fdHJ5aW5nX3RvX3Jlc2NoZWR1bGVfaW5fdGhlX2Z1dHVyZSwgaXNfaW5fdGltaW5nX3doZWVsIHdpdGhcbiAgICAgICB8IGZhbHNlLCBmYWxzZSAtPiAoKVxuICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgIHQudGltZV9zb3VyY2UuaGFuZGxlX2ZpcmVkIHQuYWxhcm07XG4gICAgICAgICBUaW1pbmdfd2hlZWwucmVtb3ZlIGV2ZW50cyB0LmFsYXJtXG4gICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgdC5udW1fZmlyZXNfdG9fc2tpcCA8LSB0Lm51bV9maXJlc190b19za2lwICsgMTtcbiAgICAgICAgIHNjaGVkdWxlIHRcbiAgICAgICB8IHRydWUsIHRydWUgLT4gVGltaW5nX3doZWVsLnJlc2NoZWR1bGUgZXZlbnRzIHQuYWxhcm0gfmF0KTtcbiAgICAgIE9rXG4gIDs7XG5cbiAgbGV0IHJlc2NoZWR1bGVfYWZ0ZXIgdCBzcGFuID0gcmVzY2hlZHVsZV9hdCB0IChzcGFuX3RvX3RpbWUgdC50aW1lX3NvdXJjZSBzcGFuKVxuXG4gIGxldCBydW5fYXQgdGltZV9zb3VyY2Ugc2NoZWR1bGVkX2F0IGYgeiA9XG4gICAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2cgXCJUaW1lX3NvdXJjZS5FdmVudC5ydW5fYXRcIiBzY2hlZHVsZWRfYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdO1xuICAgIGxldCB0ID1cbiAgICAgIHsgYWxhcm0gPSBBbGFybS5udWxsICgpXG4gICAgICA7IGZpcmUgPSBpZ25vcmUgKCogc2V0IGJlbG93ICopXG4gICAgICA7IGZpcmVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgIDsgbnVtX2ZpcmVzX3RvX3NraXAgPSAwXG4gICAgICA7IHNjaGVkdWxlZF9hdFxuICAgICAgOyB0aW1lX3NvdXJjZSA9IHJlYWRfb25seSB0aW1lX3NvdXJjZVxuICAgICAgfVxuICAgIGluXG4gICAgbGV0IGZpcmUgKCkgPVxuICAgICAgKCogW2ZpcmVdIHJ1bnMgaW4gYW4gQXN5bmMgam9iLiAgVGhlIGV2ZW50IG1heSBoYXZlIGJlZW4gYWJvcnRlZCBhZnRlciB0aGUgam9iXG4gICAgICAgICB3YXMgZW5xdWV1ZWQsIHNvIFtmaXJlXSBtdXN0IGNoZWNrIFtmaXJlZF0uICopXG4gICAgICBpZiBJdmFyLmlzX2VtcHR5IHQuZmlyZWRcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgdC5udW1fZmlyZXNfdG9fc2tpcCA+IDBcbiAgICAgICAgdGhlbiB0Lm51bV9maXJlc190b19za2lwIDwtIHQubnVtX2ZpcmVzX3RvX3NraXAgLSAxXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZXN1bHQgPSBmIHogaW5cbiAgICAgICAgICAoKiBbZiB6XSBtYXkgaGF2ZSBhYm9ydGVkIHRoZSBldmVudCwgc28gd2UgbXVzdCBjaGVjayBbZmlyZWRdIGFnYWluLiAqKVxuICAgICAgICAgIGlmIEl2YXIuaXNfZW1wdHkgdC5maXJlZCB0aGVuIEl2YXIuZmlsbCB0LmZpcmVkIChIYXBwZW5lZCByZXN1bHQpKVxuICAgIGluXG4gICAgdC5maXJlIDwtIGZpcmU7XG4gICAgc2NoZWR1bGUgdDtcbiAgICB0XG4gIDs7XG5cbiAgbGV0IGF0IHRpbWVfc291cmNlIHRpbWUgPSBydW5fYXQgdGltZV9zb3VyY2UgdGltZSBpZ25vcmUgKClcblxuICBsZXQgcnVuX2FmdGVyIHRpbWVfc291cmNlIHNwYW4gZiBhID1cbiAgICBydW5fYXQgdGltZV9zb3VyY2UgKHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuKSBmIGFcbiAgOztcblxuICBsZXQgYWZ0ZXIgdGltZV9zb3VyY2Ugc3BhbiA9IGF0IHRpbWVfc291cmNlIChzcGFuX3RvX3RpbWUgdGltZV9zb3VyY2Ugc3BhbilcbmVuZFxuXG5sZXQgYXRfdGltZXMgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpIHQgbmV4dF90aW1lID1cbiAgbGV0IHRhaWwgPSBUYWlsLmNyZWF0ZSAoKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGNob29zZVxuICAgICAgWyBjaG9pY2Ugc3RvcCAoZnVuICgpIC0+IGBTdG9wKTsgY2hvaWNlIChhdCB0IChuZXh0X3RpbWUgKCkpKSAoZnVuICgpIC0+IGBUaWNrKSBdXG4gICAgPj4+IGZ1bmN0aW9uXG4gICAgfCBgU3RvcCAtPiBUYWlsLmNsb3NlX2V4biB0YWlsXG4gICAgfCBgVGljayAtPlxuICAgICAgVGFpbC5leHRlbmQgdGFpbCAoKTtcbiAgICAgIGxvb3AgKClcbiAgaW5cbiAgbG9vcCAoKTtcbiAgVGFpbC5jb2xsZWN0IHRhaWxcbjs7XG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCB0IGNvbXB1dGVfc3BhbiA9XG4gIGF0X3RpbWVzIHQgP3N0b3AgKGZ1biAoKSAtPiBUaW1lX25zLmFmdGVyIChub3cgdCkgKGNvbXB1dGVfc3BhbiAoKSkpXG47O1xuXG5sZXQgYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCB0IGludGVydmFsID1cbiAgbGV0IHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBTb21lIHggLT4geFxuICAgIHwgTm9uZSAtPiBub3cgdFxuICBpblxuICBhdF90aW1lcyB0ID9zdG9wIChmdW4gKCkgLT5cbiAgICBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2U6c3RhcnQgfmFmdGVyOihub3cgdCkgfmludGVydmFsICgpKVxuOztcblxubW9kdWxlIENvbnRpbnVlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBJbW1lZGlhdGVseVxuICAgIHwgQWZ0ZXIgb2YgVGltZV9ucy5TcGFuLnRcbiAgICB8IE5leHRfbXVsdGlwbGUgb2YgVGltZV9ucy50ICogVGltZV9ucy5TcGFuLnRcblxuICBsZXQgaW1tZWRpYXRlbHkgPSBJbW1lZGlhdGVseVxuXG4gIGxldCBhdCB0IHRpbWVfc291cmNlID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IEltbWVkaWF0ZWx5IC0+IFRpbWluZ193aGVlbC5ub3cgdGltZV9zb3VyY2UuZXZlbnRzXG4gICAgfCBBZnRlciBzcGFuIC0+IHNwYW5fdG9fdGltZSB0aW1lX3NvdXJjZSBzcGFuXG4gICAgfCBOZXh0X211bHRpcGxlIChiYXNlLCBpbnRlcnZhbCkgLT5cbiAgICAgIFRpbWVfbnMubmV4dF9tdWx0aXBsZSB+YmFzZSB+YWZ0ZXI6KG5vdyB0aW1lX3NvdXJjZSkgfmludGVydmFsICgpXG4gIDs7XG5lbmRcblxubGV0IHJ1bl9yZXBlYXRlZGx5XG4gICAgICA/KHN0YXJ0ID0gcmV0dXJuICgpKVxuICAgICAgP3N0b3BcbiAgICAgID8oY29udGludWVfb25fZXJyb3IgPSB0cnVlKVxuICAgICAgPyhmaW5pc2hlZCA9IEl2YXIuY3JlYXRlICgpKVxuICAgICAgdFxuICAgICAgfmZcbiAgICAgIH5jb250aW51ZVxuICA9XG4gIHN0YXJ0XG4gID4+PiBmdW4gKCkgLT5cbiAgbGV0IGFsYXJtID0gcmVmIChBbGFybS5udWxsICgpKSBpblxuICBsZXQgc3RvcCA9XG4gICAgbWF0Y2ggc3RvcCB3aXRoXG4gICAgfCBOb25lIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgfCBTb21lIHN0b3AgLT5cbiAgICAgIHVwb24gc3RvcCAoZnVuICgpIC0+XG4gICAgICAgIGlmIFRpbWluZ193aGVlbC5tZW0gdC5ldmVudHMgIWFsYXJtXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9hbGFybSB0ICFhbGFybTtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKCkpKTtcbiAgICAgIHN0b3BcbiAgaW5cbiAgKCogW3J1bl9mXSwgW2NvbnRpbnVlX2ZdLCBhbmQgW2NvbnRpbnVlX3RyeV93aXRoXSBhcmUgZGVmaW5lZCBzbyB0aGF0IHdlIGFsbG9jYXRlIHRoZWlyXG4gICAgIGNsb3N1cmVzIG9uY2UsIG5vdCBvbmNlIHBlciBpdGVyYXRpb24uICopXG4gIGxldCByZWMgcnVuX2YgKCkgPVxuICAgICgqIEJlZm9yZSBjYWxsaW5nIFtmXSwgd2Ugc3luY2hyb25vdXNseSBjaGVjayB3aGV0aGVyIFtzdG9wXSBpcyBkZXRlcm1pbmVkLiAqKVxuICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgIHRoZW4gSXZhci5maWxsX2lmX2VtcHR5IGZpbmlzaGVkICgpXG4gICAgZWxzZSBpZiBjb250aW51ZV9vbl9lcnJvclxuICAgIHRoZW4gTW9uaXRvci50cnlfd2l0aCBmIH5ydW46YE5vdyB+cmVzdDpgUmFpc2UgPj4+IGNvbnRpbnVlX3RyeV93aXRoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZCA9IGYgKCkgaW5cbiAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGNvbnRpbnVlX2YgKCkgZWxzZSBkID4+PiBjb250aW51ZV9mKVxuICBhbmQgY29udGludWVfZiAoKSA9XG4gICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBzdG9wXG4gICAgdGhlbiBJdmFyLmZpbGxfaWZfZW1wdHkgZmluaXNoZWQgKClcbiAgICBlbHNlIGFsYXJtIDo9IHJ1bl9hdF9pbnRlcm5hbCB0IChDb250aW51ZS5hdCBjb250aW51ZSB0KSBydW5fZiAoKVxuICBhbmQgY29udGludWVfdHJ5X3dpdGggb3JfZXJyb3IgPVxuICAgIChtYXRjaCBvcl9lcnJvciB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBlcnJvciAtPiBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGVycm9yKTtcbiAgICBjb250aW51ZV9mICgpXG4gIGluXG4gIHJ1bl9mICgpXG47O1xuXG5sZXQgZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkIHQgc3BhbiBmID1cbiAgaWYgVGltZV9ucy5TcGFuLiggPD0gKSBzcGFuIFRpbWVfbnMuU3Bhbi56ZXJvXG4gIHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS5ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgc3BhblwiIChzcGFuIDogVGltZV9ucy5TcGFuLnQpXTtcbiAgcnVuX3JlcGVhdGVkbHkgdCA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yID9maW5pc2hlZCB+ZiB+Y29udGludWU6KEFmdGVyIHNwYW4pXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IHNwYW4gZiA9XG4gIGV2ZXJ5JyB0ID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkOk5vbmUgc3BhbiAoZnVuICgpIC0+XG4gICAgZiAoKTtcbiAgICByZXR1cm4gKCkpXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBsZXQgbm93ID0gbm93IHQgaW5cbiAgbGV0IGJhc2UsIHN0YXJ0ID1cbiAgICBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBOb25lIC0+IG5vdywgTm9uZVxuICAgIHwgU29tZSBzdGFydCAtPlxuICAgICAgKCBzdGFydFxuICAgICAgLCBTb21lXG4gICAgICAgICAgKGF0XG4gICAgICAgICAgICAgdFxuICAgICAgICAgICAgIChUaW1lX25zLm5leHRfbXVsdGlwbGVcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgIH5iYXNlOnN0YXJ0XG4gICAgICAgICAgICAgICAgfmFmdGVyOm5vd1xuICAgICAgICAgICAgICAgIH5jYW5fZXF1YWxfYWZ0ZXI6dHJ1ZVxuICAgICAgICAgICAgICAgIH5pbnRlcnZhbCkpIClcbiAgaW5cbiAgcnVuX3JlcGVhdGVkbHlcbiAgICB0XG4gICAgP3N0YXJ0XG4gICAgP3N0b3BcbiAgICA/Y29udGludWVfb25fZXJyb3JcbiAgICB+ZlxuICAgIH5jb250aW51ZTooTmV4dF9tdWx0aXBsZSAoYmFzZSwgaW50ZXJ2YWwpKVxuOztcblxubGV0IHJ1bl9hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciB0IGludGVydmFsIGYgPVxuICBydW5fYXRfaW50ZXJ2YWxzJyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHQgaW50ZXJ2YWwgKGZ1biAoKSAtPlxuICAgIGYgKCk7XG4gICAgcmV0dXJuICgpKVxuOztcblxubGV0IHdpdGhfdGltZW91dCB0IHNwYW4gZCA9XG4gIGxldCB0aW1lb3V0ID0gRXZlbnQuYWZ0ZXIgdCBzcGFuIGluXG4gIGNob29zZVxuICAgICgqIFRoZSBjb2RlIGJlbG93IGRvZXMgZXhoYXVzdGl2ZSBjYXNlIGFuYWx5c2lzIGluIGJvdGggW2Nob2ljZV1zLiAgQmVjYXVzZSBbdGltZW91dF1cbiAgICAgICBkb2VzIG5vdCBlc2NhcGUgdGhlIHNjb3BlIG9mIHRoaXMgZnVuY3Rpb24sIGNlcnRhaW4gY2FzZXMgc2hvdWxkIGJlIGltcG9zc2libGUsIGFuZFxuICAgICAgIGFyZSBtYXJrZWQgYXMgc3VjaCB3aXRoIGV4Y2VwdGlvbnMuICBXZSBkbyBub3QgZXhwZWN0IHRob3NlIGV4Y2VwdGlvbnMgdG8gb2NjdXIsXG4gICAgICAgYnV0IGlmIHRoZXkgZG8sIGl0IGxpa2VseSBpbmRpY2F0ZXMgYSBidWcgaW4gW2Nob29zZV0gcmF0aGVyIHRoYW5cbiAgICAgICBbd2l0aF90aW1lb3V0XS4gKilcbiAgICBbIGNob2ljZSBkIChmdW4gdiAtPlxuICAgICAgICAobWF0Y2ggRXZlbnQuYWJvcnQgdGltZW91dCAoKSB3aXRoXG4gICAgICAgICAoKiBbUHJldmlvdXNseV9oYXBwZW5lZF0gY2FuIG9jY3VyIGlmIGJvdGggW2RdIGFuZCBbd2FpdF0gYmVjb21lIGRldGVybWluZWQgYXRcbiAgICAgICAgICAgIHRoZSBzYW1lIHRpbWUsIGUuZy4gW3dpdGhfdGltZW91dCAoc2VjIDAuKSAocmV0dXJuICgpKV0uICopXG4gICAgICAgICB8IE9rIHwgUHJldmlvdXNseV9oYXBwZW5lZCAoKSAtPiAoKVxuICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT5cbiAgICAgICAgICAgcmFpc2VfcyBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBzaG91bGQgb25seSBhYm9ydCBvbmNlXCJdKTtcbiAgICAgICAgYFJlc3VsdCB2KVxuICAgIDsgY2hvaWNlIChFdmVudC5maXJlZCB0aW1lb3V0KSAoZnVuY3Rpb25cbiAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBgVGltZW91dFxuICAgICAgICB8IEFib3J0ZWQgKCkgLT5cbiAgICAgICAgICByYWlzZV9zXG4gICAgICAgICAgICBbJW1lc3NhZ2UgXCJUaW1lX3NvdXJjZS53aXRoX3RpbWVvdXQgYnVnOiBib3RoIGNvbXBsZXRlZCBhbmQgdGltZWQgb3V0XCJdKVxuICAgIF1cbjs7XG5cbmxldCBkdXJhdGlvbl9vZiB0IGYgPVxuICBsZXQgc3RhcnQgPSBub3cgdCBpblxuICBsZXQlbWFwIHJlc3VsdCA9IGYgKCkgaW5cbiAgbGV0IGR1cmF0aW9uID0gVGltZV9ucy5kaWZmIChub3cgdCkgc3RhcnQgaW5cbiAgcmVzdWx0LCBkdXJhdGlvblxuOztcblxubGV0IG9mX3N5bmNocm9ub3VzIHQgPSB0XG5sZXQgdG9fc3luY2hyb25vdXMgdCA9IHRcbiIsIm9wZW4hIEJhc2VcblxudHlwZSBfIHQgPVxuICB8IFN0YWNrIDogJ2EgU3RhY2sudCAtPiAnYSB0XG4gIHwgQ291bnRlciA6IHsgbXV0YWJsZSBsZW5ndGggOiBpbnQgfSAtPiB1bml0IHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBvZl9saXN0IGxpc3QgPSBTdGFjayAoU3RhY2sub2ZfbGlzdCBsaXN0KVxuXG5sZXQgY3JlYXRlX2NvdW50ZXIgfmxlbmd0aCA9XG4gIGlmIGxlbmd0aCA8IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZSBcIltTdGFja19vcl9jb3VudGVyLmNyZWF0ZV9jb3VudGVyXSBnb3QgbmVnYXRpdmUgbGVuZ3RoXCIgKGxlbmd0aCA6IGludCldO1xuICBDb3VudGVyIHsgbGVuZ3RoIH1cbjs7XG5cbmxldCBsZW5ndGggKHR5cGUgYSkgKHQgOiBhIHQpID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU3RhY2sgcyAtPiBTdGFjay5sZW5ndGggc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aFxuOztcblxubGV0IGNsZWFyICh0eXBlIGEpICh0IDogYSB0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suY2xlYXIgc1xuICB8IENvdW50ZXIgciAtPiByLmxlbmd0aCA8LSAwXG47O1xuXG5sZXQgcHVzaCAodHlwZSBhKSAodCA6IGEgdCkgYSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2sucHVzaCBzIGFcbiAgfCBDb3VudGVyIHIgLT4gci5sZW5ndGggPC0gci5sZW5ndGggKyAxXG47O1xuXG5sZXQgcG9wX2V4biAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBTdGFjayBzIC0+IFN0YWNrLnBvcF9leG4gc1xuICB8IENvdW50ZXIgciAtPlxuICAgIGlmIHIubGVuZ3RoID0gMCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwiW1N0YWNrX29yX2NvdW50ZXIucG9wX2V4bl0gb2YgZW1wdHkgc3RhY2tcIl07XG4gICAgci5sZW5ndGggPC0gci5sZW5ndGggLSAxXG47O1xuXG5sZXQgaXRlciAodHlwZSBhKSAodCA6IGEgdCkgfihmIDogYSAtPiB1bml0KSA9XG4gIG1hdGNoIHQgd2l0aFxuICB8IFN0YWNrIHMgLT4gU3RhY2suaXRlciBzIH5mXG4gIHwgQ291bnRlciByIC0+XG4gICAgZm9yIF8gPSAxIHRvIHIubGVuZ3RoIGRvXG4gICAgICBmICgpXG4gICAgZG9uZVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiEgRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxudHlwZSAnYSBvdXRjb21lID1cbiAgWyBgT2sgb2YgJ2FcbiAgfCBgQWJvcnRlZFxuICB8IGBSYWlzZWQgb2YgZXhuXG4gIF1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBJbnRlcm5hbF9qb2IgOiBzaWdcbiAgdHlwZSAnYSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdmFsIGNyZWF0ZSA6ICgnYSAtPiAnYiBEZWZlcnJlZC50KSAtPiAnYSB0ICogJ2Igb3V0Y29tZSBEZWZlcnJlZC50XG5cbiAgKCogRXZlcnkgaW50ZXJuYWwgam9iIHdpbGwgZXZlbnR1YWxseSBiZSBlaXRoZXIgW3J1bl0gb3IgW2Fib3J0XWVkLCBidXQgbm90IGJvdGguICopXG5cbiAgdmFsIHJ1biA6ICdhIHQgLT4gJ2EgLT4gWyBgT2sgfCBgUmFpc2VkIF0gRGVmZXJyZWQudFxuICB2YWwgYWJvcnQgOiBfIHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBzdGFydCA6IFsgYEFib3J0IHwgYFN0YXJ0IG9mICdhIF0gSXZhci50XG4gICAgOyBvdXRjb21lIDogWyBgT2sgfCBgQWJvcnRlZCB8IGBSYWlzZWQgXSBEZWZlcnJlZC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgd29yayA9XG4gICAgbGV0IHN0YXJ0ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoJWJpbmQgSXZhci5yZWFkIHN0YXJ0IHdpdGhcbiAgICAgIHwgYEFib3J0IC0+IHJldHVybiBgQWJvcnRlZFxuICAgICAgfCBgU3RhcnQgYSAtPlxuICAgICAgICAobWF0Y2glbWFwXG4gICAgICAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgICAgICB+cnVuOlxuICAgICAgICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAgICAgIChmdW4gKCkgLT4gd29yayBhKVxuICAgICAgICAgd2l0aFxuICAgICAgICAgfCBPayBhIC0+IGBPayBhXG4gICAgICAgICB8IEVycm9yIGV4biAtPiBgUmFpc2VkIGV4bilcbiAgICBpblxuICAgIGxldCBvdXRjb21lID1cbiAgICAgIG1hdGNoJW1hcCByZXN1bHQgd2l0aFxuICAgICAgfCBgT2sgXyAtPiBgT2tcbiAgICAgIHwgYEFib3J0ZWQgLT4gYEFib3J0ZWRcbiAgICAgIHwgYFJhaXNlZCBfIC0+IGBSYWlzZWRcbiAgICBpblxuICAgIGxldCB0ID0geyBzdGFydDsgb3V0Y29tZSB9IGluXG4gICAgdCwgcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHJ1biB0IGEgPVxuICAgIEl2YXIuZmlsbCB0LnN0YXJ0IChgU3RhcnQgYSk7XG4gICAgbWF0Y2glbWFwIHQub3V0Y29tZSB3aXRoXG4gICAgfCBgQWJvcnRlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICB8IChgT2sgfCBgUmFpc2VkKSBhcyB4IC0+IHhcbiAgOztcblxuICBsZXQgYWJvcnQgdCA9IEl2YXIuZmlsbCB0LnN0YXJ0IGBBYm9ydFxuZW5kXG5cbnR5cGUgJ2EgdCA9XG4gIHsgY29udGludWVfb25fZXJyb3IgOiBib29sXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9icyA6IGludFxuICA7ICgqIFtqb2JfcmVzb3VyY2VzX25vdF9pbl91c2VdIGhvbGRzIHJlc291cmNlcyB0aGF0IGFyZSBub3QgY3VycmVudGx5IGluIHVzZSBieSBhXG4gICAgICAgcnVubmluZyBqb2IuICopXG4gICAgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIDogJ2EgU3RhY2tfb3JfY291bnRlci50XG4gIDtcbiAgICAoKiBbam9ic193YWl0aW5nX3RvX3N0YXJ0XSBpcyB0aGUgcXVldWUgb2Ygam9icyB0aGF0IGhhdmVuJ3QgeWV0IHN0YXJ0ZWQuICopXG4gICAgam9ic193YWl0aW5nX3RvX3N0YXJ0IDogJ2EgSW50ZXJuYWxfam9iLnQgUXVldWUudFxuICA7ICgqIFswIDw9IG51bV9qb2JzX3J1bm5pbmcgPD0gbWF4X2NvbmN1cnJlbnRfam9ic10uICopXG4gICAgbXV0YWJsZSBudW1fam9ic19ydW5uaW5nIDogaW50XG4gIDsgKCogW2NhcGFjaXR5X2F2YWlsYWJsZV0gaXMgW1NvbWUgaXZhcl0gaWYgdXNlciBjb2RlIGhhcyBjYWxsZWQgW2NhcGFjaXR5X2F2YWlsYWJsZSB0XVxuICAgICAgIGFuZCBpcyB3YWl0aW5nIHRvIGJlIG5vdGlmaWVkIHdoZW4gY2FwYWNpdHkgaXMgYXZhaWxhYmxlIGluIHRoZSB0aHJvdHRsZS5cbiAgICAgICBbbWF5YmVfc3RhcnRfam9iXSB3aWxsIGZpbGwgW2l2YXJdIHdoZW4gY2FwYWNpdHkgYmVjb21lcyBhdmFpbGFibGUsIGkuZS4gd2hlblxuICAgICAgIFtqb2JzX3dhaXRpbmdfdG9fc3RhcnRdIGlzIGVtcHR5IGFuZCBbbnVtX2pvYnNfcnVubmluZyA8IG1heF9jb25jdXJyZW50X2pvYnNdLiAqKVxuICAgIG11dGFibGUgY2FwYWNpdHlfYXZhaWxhYmxlIDogdW5pdCBJdmFyLnQgb3B0aW9uXG4gIDsgKCogW2lzX2RlYWRdIGlzIHRydWUgaWYgW3RdIHdhcyBraWxsZWQgZHVlIHRvIGEgam9iIHJhaXNpbmcgYW4gZXhjZXB0aW9uIG9yIFtraWxsIHRdXG4gICAgICAgYmVpbmcgY2FsbGVkLiAqKVxuICAgIG11dGFibGUgaXNfZGVhZCA6IGJvb2xcbiAgOyAoKiBbY2xlYW5zXSBob2xkcyBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjbGVhbiBlYWNoIHJlc291cmNlIHdoZW4gW3RdIGlzXG4gICAgICAga2lsbGVkLiAqKVxuICAgIG11dGFibGUgY2xlYW5zIDogKCdhIC0+IHVuaXQgRGVmZXJyZWQudCkgbGlzdFxuICA7ICgqIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBpcyB0aGUgbnVtYmVyIG9mIHJlc291cmNlcyB3aG9zZSBjbGVhbiBmdW5jdGlvbnMgaGF2ZVxuICAgICAgIG5vdCB5ZXQgY29tcGxldGVkLiAgV2hpbGUgW3RdIGlzIGFsaXZlLCBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9XG4gICAgICAgbWF4X2NvbmN1cnJlbnRfam9ic10uICBPbmNlIFt0XSBpcyBraWxsZWQsIFtudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkXSBkZWNyZWFzZXMgdG9cbiAgICAgICB6ZXJvIG92ZXIgdGltZSBhcyB0aGUgY2xlYW4gZnVuY3Rpb25zIGNvbXBsZXRlLiAqKVxuICAgIG11dGFibGUgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA6IGludFxuICA7ICgqIFtjbGVhbmVkXSBiZWNvbWVzIGRldGVybWluZWQgd2hlbiBbbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZF0gcmVhY2hlcyB6ZXJvLFxuICAgICAgIGkuZS4gYWZ0ZXIgW3RdIGlzIGtpbGxlZCBhbmQgYWxsIGl0cyBjbGVhbiBmdW5jdGlvbnMgY29tcGxldGUuICopXG4gICAgY2xlYW5lZCA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0IDogdW5pdCA9XG4gIHRyeVxuICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5jb250aW51ZV9vbl9lcnJvcjppZ25vcmVcbiAgICAgIH5tYXhfY29uY3VycmVudF9qb2JzOlxuICAgICAgICAoY2hlY2sgKGZ1biBtYXhfY29uY3VycmVudF9qb2JzIC0+IGFzc2VydCAobWF4X2NvbmN1cnJlbnRfam9icyA+IDApKSlcbiAgICAgIH5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2U6XG4gICAgICAgIChjaGVjayAoZnVuIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSAtPlxuICAgICAgICAgICBTdGFja19vcl9jb3VudGVyLml0ZXIgam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOmludmFyaWFudF9hO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIFN0YWNrX29yX2NvdW50ZXIubGVuZ3RoIGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZVxuICAgICAgICAgICAgID0gaWYgdC5pc19kZWFkIHRoZW4gMCBlbHNlIHQubWF4X2NvbmN1cnJlbnRfam9icyAtIHQubnVtX2pvYnNfcnVubmluZykpKVxuICAgICAgfmpvYnNfd2FpdGluZ190b19zdGFydDpcbiAgICAgICAgKGNoZWNrIChmdW5jdGlvbiBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgLT5cbiAgICAgICAgICAgaWYgdC5pc19kZWFkIHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBqb2JzX3dhaXRpbmdfdG9fc3RhcnQpKSlcbiAgICAgIH5udW1fam9ic19ydW5uaW5nOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fam9ic19ydW5uaW5nIC0+XG4gICAgICAgICAgIGFzc2VydCAobnVtX2pvYnNfcnVubmluZyA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChudW1fam9ic19ydW5uaW5nIDw9IHQubWF4X2NvbmN1cnJlbnRfam9icyk7XG4gICAgICAgICAgIGlmIG51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KSkpXG4gICAgICB+Y2FwYWNpdHlfYXZhaWxhYmxlOlxuICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICB8IFNvbWUgaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgfmlzX2RlYWQ6aWdub3JlXG4gICAgICB+Y2xlYW5zOmlnbm9yZVxuICAgICAgfm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChudW1fcmVzb3VyY2VzX25vdF9jbGVhbmVkID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPD0gdC5tYXhfY29uY3VycmVudF9qb2JzKTtcbiAgICAgICAgICAgaWYgbnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8IHQubWF4X2NvbmN1cnJlbnRfam9icyB0aGVuIGFzc2VydCB0LmlzX2RlYWQpKVxuICAgICAgfmNsZWFuZWQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNsZWFuZWQgLT5cbiAgICAgICAgICAgaWYgSXZhci5pc19mdWxsIGNsZWFuZWQgdGhlbiBhc3NlcnQgKHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA9IDApKSlcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlRocm90dGxlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSAodCA6IF8gdCldXG47O1xuXG5tb2R1bGUgVDIgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgKCdhLCAna2luZCkgdCA9ICdhIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IGludmFyaWFudCBpbnZhcmlhbnRfYSB0XG5lbmRcblxubGV0IG51bV9qb2JzX3dhaXRpbmdfdG9fc3RhcnQgdCA9IFF1ZXVlLmxlbmd0aCB0LmpvYnNfd2FpdGluZ190b19zdGFydFxuXG5sZXQgY2xlYW5fcmVzb3VyY2UgdCBhID1cbiAgRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHQuY2xlYW5zIH5mOihmdW4gZiAtPiBmIGEpKVxuICA+Pj4gZnVuICgpIC0+XG4gIHQubnVtX3Jlc291cmNlc19ub3RfY2xlYW5lZCA8LSB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgLSAxO1xuICBpZiB0Lm51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSAwIHRoZW4gSXZhci5maWxsIHQuY2xlYW5lZCAoKVxuOztcblxubGV0IGtpbGwgdCA9XG4gIGlmIG5vdCB0LmlzX2RlYWRcbiAgdGhlbiAoXG4gICAgdC5pc19kZWFkIDwtIHRydWU7XG4gICAgUXVldWUuaXRlciB0LmpvYnNfd2FpdGluZ190b19zdGFydCB+ZjpJbnRlcm5hbF9qb2IuYWJvcnQ7XG4gICAgUXVldWUuY2xlYXIgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQ7XG4gICAgU3RhY2tfb3JfY291bnRlci5pdGVyIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIH5mOihmdW4gYSAtPiBjbGVhbl9yZXNvdXJjZSB0IGEpO1xuICAgIFN0YWNrX29yX2NvdW50ZXIuY2xlYXIgdC5qb2JfcmVzb3VyY2VzX25vdF9pbl91c2UpXG47O1xuXG5sZXQgYXRfa2lsbCB0IGYgPVxuICAoKiBXZSBwcmVzZXJ2ZSB0aGUgZXhlY3V0aW9uIGNvbnRleHQgc28gdGhhdCBleGNlcHRpb25zIHJhaXNlZCBieSBbZl0gZ28gdG8gdGhlIG1vbml0b3JcbiAgICAgaW4gZWZmZWN0IHdoZW4gW2F0X2tpbGxdIHdhcyBjYWxsZWQuICopXG4gIGxldCBmID0gdW5zdGFnZSAoTW9uaXRvci5FeHBvcnRlZF9mb3Jfc2NoZWR1bGVyLnByZXNlcnZlX2V4ZWN1dGlvbl9jb250ZXh0JyBmKSBpblxuICB0LmNsZWFucyA8LSBmIDo6IHQuY2xlYW5zXG47O1xuXG5sZXQgY2xlYW5lZCB0ID0gSXZhci5yZWFkIHQuY2xlYW5lZFxuXG5sZXQgcmVjIHN0YXJ0X2pvYiB0ID1cbiAgYXNzZXJ0IChub3QgdC5pc19kZWFkKTtcbiAgYXNzZXJ0ICh0Lm51bV9qb2JzX3J1bm5pbmcgPCB0Lm1heF9jb25jdXJyZW50X2pvYnMpO1xuICBhc3NlcnQgKG5vdCAoUXVldWUuaXNfZW1wdHkgdC5qb2JzX3dhaXRpbmdfdG9fc3RhcnQpKTtcbiAgbGV0IGpvYiA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGluXG4gIHQubnVtX2pvYnNfcnVubmluZyA8LSB0Lm51bV9qb2JzX3J1bm5pbmcgKyAxO1xuICBsZXQgam9iX3Jlc291cmNlID0gU3RhY2tfb3JfY291bnRlci5wb3BfZXhuIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGluXG4gIEludGVybmFsX2pvYi5ydW4gam9iIGpvYl9yZXNvdXJjZVxuICA+Pj4gZnVuIHJlcyAtPlxuICB0Lm51bV9qb2JzX3J1bm5pbmcgPC0gdC5udW1fam9ic19ydW5uaW5nIC0gMTtcbiAgKG1hdGNoIHJlcyB3aXRoXG4gICB8IGBPayAtPiAoKVxuICAgfCBgUmFpc2VkIC0+IGlmIG5vdCB0LmNvbnRpbnVlX29uX2Vycm9yIHRoZW4ga2lsbCB0KTtcbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gY2xlYW5fcmVzb3VyY2UgdCBqb2JfcmVzb3VyY2VcbiAgZWxzZSAoXG4gICAgU3RhY2tfb3JfY291bnRlci5wdXNoIHQuam9iX3Jlc291cmNlc19ub3RfaW5fdXNlIGpvYl9yZXNvdXJjZTtcbiAgICBpZiBub3QgKFF1ZXVlLmlzX2VtcHR5IHQuam9ic193YWl0aW5nX3RvX3N0YXJ0KVxuICAgIHRoZW4gc3RhcnRfam9iIHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIHQuY2FwYWNpdHlfYXZhaWxhYmxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGl2YXIgLT5cbiAgICAgICAgSXZhci5maWxsIGl2YXIgKCk7XG4gICAgICAgIHQuY2FwYWNpdHlfYXZhaWxhYmxlIDwtIE5vbmUpKVxuOztcblxubGV0IGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGxldCBtYXhfY29uY3VycmVudF9qb2JzID0gU3RhY2tfb3JfY291bnRlci5sZW5ndGggam9iX3Jlc291cmNlcyBpblxuICB7IGNvbnRpbnVlX29uX2Vycm9yXG4gIDsgbWF4X2NvbmN1cnJlbnRfam9ic1xuICA7IGpvYl9yZXNvdXJjZXNfbm90X2luX3VzZSA9IGpvYl9yZXNvdXJjZXNcbiAgOyBqb2JzX3dhaXRpbmdfdG9fc3RhcnQgPSBRdWV1ZS5jcmVhdGUgKClcbiAgOyBudW1fam9ic19ydW5uaW5nID0gMFxuICA7IGNhcGFjaXR5X2F2YWlsYWJsZSA9IE5vbmVcbiAgOyBpc19kZWFkID0gZmFsc2VcbiAgOyBjbGVhbnMgPSBbXVxuICA7IG51bV9yZXNvdXJjZXNfbm90X2NsZWFuZWQgPSBtYXhfY29uY3VycmVudF9qb2JzXG4gIDsgY2xlYW5lZCA9IEl2YXIuY3JlYXRlICgpXG4gIH1cbjs7XG5cbmxldCBjcmVhdGVfd2l0aCB+Y29udGludWVfb25fZXJyb3Igam9iX3Jlc291cmNlcyA9XG4gIGNyZWF0ZV9pbnRlcm5hbCB+Y29udGludWVfb25fZXJyb3IgKFN0YWNrX29yX2NvdW50ZXIub2ZfbGlzdCBqb2JfcmVzb3VyY2VzKVxuOztcblxubW9kdWxlIFNlcXVlbmNlciA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhjb250aW51ZV9vbl9lcnJvciA9IGZhbHNlKSBhID0gY3JlYXRlX3dpdGggfmNvbnRpbnVlX29uX2Vycm9yIFsgYSBdXG5lbmRcblxubGV0IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3Igfm1heF9jb25jdXJyZW50X2pvYnMgPVxuICBpZiBtYXhfY29uY3VycmVudF9qb2JzIDw9IDBcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlRocm90dGxlLmNyZWF0ZSByZXF1aXJlcyBwb3NpdGl2ZSBtYXhfY29uY3VycmVudF9qb2JzLCBidXQgZ290XCJcbiAgICAgICAgICAobWF4X2NvbmN1cnJlbnRfam9icyA6IGludCldO1xuICBjcmVhdGVfaW50ZXJuYWxcbiAgICB+Y29udGludWVfb25fZXJyb3JcbiAgICAoU3RhY2tfb3JfY291bnRlci5jcmVhdGVfY291bnRlciB+bGVuZ3RoOm1heF9jb25jdXJyZW50X2pvYnMpXG47O1xuXG5tb2R1bGUgSm9iID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdCA9XG4gICAgeyBpbnRlcm5hbF9qb2IgOiAnYSBJbnRlcm5hbF9qb2IudFxuICAgIDsgcmVzdWx0IDogWyBgT2sgb2YgJ2IgfCBgQWJvcnRlZCB8IGBSYWlzZWQgb2YgZXhuIF0gRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgcmVzdWx0IHQgPSB0LnJlc3VsdFxuICBsZXQgYWJvcnQgdCA9IEludGVybmFsX2pvYi5hYm9ydCB0LmludGVybmFsX2pvYlxuXG4gIGxldCBjcmVhdGUgZiA9XG4gICAgbGV0IGludGVybmFsX2pvYiwgcmVzdWx0ID0gSW50ZXJuYWxfam9iLmNyZWF0ZSBmIGluXG4gICAgeyBpbnRlcm5hbF9qb2I7IHJlc3VsdCB9XG4gIDs7XG5lbmRcblxubGV0IGVucXVldWUnIHQgZiA9XG4gIGxldCBqb2IgPSBKb2IuY3JlYXRlIGYgaW5cbiAgaWYgdC5pc19kZWFkXG4gIHRoZW4gSm9iLmFib3J0IGpvYlxuICBlbHNlIChcbiAgICBRdWV1ZS5lbnF1ZXVlIHQuam9ic193YWl0aW5nX3RvX3N0YXJ0IGpvYi5pbnRlcm5hbF9qb2I7XG4gICAgaWYgdC5udW1fam9ic19ydW5uaW5nIDwgdC5tYXhfY29uY3VycmVudF9qb2JzIHRoZW4gc3RhcnRfam9iIHQpO1xuICBKb2IucmVzdWx0IGpvYlxuOztcblxubGV0IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdCByZXN1bHQgPVxuICBtYXRjaCByZXN1bHQgd2l0aFxuICB8IGBPayBhIC0+IGFcbiAgfCBgQWJvcnRlZCAtPiByYWlzZV9zIFslbWVzc2FnZSBcInRocm90dGxlIGFib3J0ZWQgam9iXCJdXG4gIHwgYFJhaXNlZCBleG4gLT4gcmFpc2UgZXhuXG47O1xuXG5sZXQgZW5xdWV1ZSB0IGYgPSBlbnF1ZXVlJyB0IGYgPj58IGhhbmRsZV9lbnF1ZXVlX3Jlc3VsdFxuXG5sZXQgZW5xdWV1ZV9leGNsdXNpdmUgdCBmID1cbiAgbGV0IG4gPSB0Lm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgaWYgSW50LiggPj0gKSBuIDFfMDAwXzAwMFxuICB0aGVuXG4gICAgcmFpc2Vfc1xuICAgICAgWyVzZXhwXG4gICAgICAgIFwiW2VucXVldWVfZXhjbHVzaXZlXSB3YXMgY2FsbGVkIHdpdGggYSB2ZXJ5IGxhcmdlIHZhbHVlIG9mIFxcXG4gICAgICAgICBbbWF4X2NvbmN1cnJlbnRfam9ic10uIFRoaXMgZG9lc24ndCB3b3JrLlwiXTtcbiAgbGV0IGRvbmVfID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgYXNzZXJ0IChuID4gMCk7XG4gIGxldCBmX3BsYWNlaG9sZGVyIF9zbG90ID0gSXZhci5yZWFkIGRvbmVfIGluXG4gIGZvciBfID0gMSB0byBuIC0gMSBkb1xuICAgIGRvbid0X3dhaXRfZm9yIChlbnF1ZXVlIHQgZl9wbGFjZWhvbGRlcilcbiAgZG9uZTtcbiAgbGV0JW1hcCByZXN1bHQgPSBlbnF1ZXVlJyB0IChmdW4gX3Nsb3QgLT4gZiAoKSkgaW5cbiAgSXZhci5maWxsIGRvbmVfICgpO1xuICBoYW5kbGVfZW5xdWV1ZV9yZXN1bHQgcmVzdWx0XG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93IH5ob3cgfmYgPVxuICBzdGFnZVxuICAgIChtYXRjaCBob3cgd2l0aFxuICAgICB8IGBQYXJhbGxlbCAtPiBmXG4gICAgIHwgKGBTZXF1ZW50aWFsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICAgbGV0IG1heF9jb25jdXJyZW50X2pvYnMgPVxuICAgICAgICAgbWF0Y2ggaG93IHdpdGhcbiAgICAgICAgIHwgYFNlcXVlbnRpYWwgLT4gMVxuICAgICAgICAgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBtYXhfY29uY3VycmVudF9qb2JzIC0+IG1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICBpblxuICAgICAgIGxldCB0ID0gY3JlYXRlIH5jb250aW51ZV9vbl9lcnJvcjpmYWxzZSB+bWF4X2NvbmN1cnJlbnRfam9icyBpblxuICAgICAgIGZ1biBhIC0+IGVucXVldWUgdCAoZnVuICgpIC0+IGYgYSkpXG47O1xuXG5sZXQgbW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mID1cbiAgc3RhZ2VcbiAgICAobWF0Y2ggaG93IHdpdGhcbiAgICAgfCBgUGFyYWxsZWwgLT4gZlxuICAgICB8IChgU2VxdWVudGlhbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgIGxldCBtYXhfY29uY3VycmVudF9qb2JzID1cbiAgICAgICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgICAgICB8IGBTZXF1ZW50aWFsIC0+IDFcbiAgICAgICAgIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPiBtYXhfY29uY3VycmVudF9qb2JzXG4gICAgICAgaW5cbiAgICAgICBsZXQgdCA9IGNyZWF0ZSB+Y29udGludWVfb25fZXJyb3I6ZmFsc2Ugfm1heF9jb25jdXJyZW50X2pvYnMgaW5cbiAgICAgICBmdW4gYTEgYTIgLT4gZW5xdWV1ZSB0IChmdW4gKCkgLT4gZiBhMSBhMikpXG47O1xuXG5sZXQgcHJpb3Jfam9ic19kb25lIHQgPVxuICAoKiBXZSBxdWV1ZSBbdC5tYXhfY29uY3VycmVudF9qb2JzXSBkdW1teSBqb2JzIGFuZCB3aGVuIHRoZXkgYXJlIGFsbCBzdGFydGVkIHdlIGtub3dcbiAgICAgdGhhdCBhbGwgcHJpb3Igam9icyBmaW5pc2hlZC4gIFdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBkdW1teSBqb2JzIHdhaXQgZm9yIHRoZSBsYXN0IG9uZVxuICAgICB0byBnZXQgc3RhcnRlZCBiZWZvcmUgZmluaXNoaW5nLiAqKVxuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBhbGxfZHVtbXlfam9ic19ydW5uaW5nIC0+XG4gICAgbGV0IGR1bW15X2pvYnNfcnVubmluZyA9IHJlZiAwIGluXG4gICAgZm9yIF8gPSAxIHRvIHQubWF4X2NvbmN1cnJlbnRfam9icyBkb1xuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKGVucXVldWUgdCAoZnVuIF8gLT5cbiAgICAgICAgICAgaW5jciBkdW1teV9qb2JzX3J1bm5pbmc7XG4gICAgICAgICAgIGlmICFkdW1teV9qb2JzX3J1bm5pbmcgPSB0Lm1heF9jb25jdXJyZW50X2pvYnNcbiAgICAgICAgICAgdGhlbiBJdmFyLmZpbGwgYWxsX2R1bW15X2pvYnNfcnVubmluZyAoKTtcbiAgICAgICAgICAgSXZhci5yZWFkIGFsbF9kdW1teV9qb2JzX3J1bm5pbmcpKVxuICAgIGRvbmUpXG47O1xuXG5sZXQgY2FwYWNpdHlfYXZhaWxhYmxlIHQgPVxuICBpZiBudW1fam9ic19ydW5uaW5nIHQgPCBtYXhfY29uY3VycmVudF9qb2JzIHRcbiAgdGhlbiByZXR1cm4gKClcbiAgZWxzZSAoXG4gICAgbWF0Y2ggdC5jYXBhY2l0eV9hdmFpbGFibGUgd2l0aFxuICAgIHwgU29tZSBpdmFyIC0+IEl2YXIucmVhZCBpdmFyXG4gICAgfCBOb25lIC0+IERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT4gdC5jYXBhY2l0eV9hdmFpbGFibGUgPC0gU29tZSBpdmFyKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5pbmNsdWRlIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMFxuXG5sZXQgY3JlYXRlID0gU2NoZWR1bGVyMS5jcmVhdGVfdGltZV9zb3VyY2VcbmxldCB3YWxsX2Nsb2NrID0gU2NoZWR1bGVyMS53YWxsX2Nsb2NrXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5tb2R1bGUgU2NoZWR1bGVyID0gU2NoZWR1bGVyMVxubW9kdWxlIFN0cmVhbSA9IEFzeW5jX3N0cmVhbVxuaW5jbHVkZSAoU2NoZWR1bGVyIDogbW9kdWxlIHR5cGUgb2YgU2NoZWR1bGVyIHdpdGggbW9kdWxlIEJ2YXIgOj0gU2NoZWR1bGVyLkJ2YXIpXG5cbmxldCB0ID0gU2NoZWR1bGVyLnRcblxuaW5jbHVkZSBNb25pdG9yLkV4cG9ydGVkX2Zvcl9zY2hlZHVsZXJcblxubGV0IGZpbmRfbG9jYWwga2V5ID0gRXhlY3V0aW9uX2NvbnRleHQuZmluZF9sb2NhbCAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCAodCAoKSkpIGtleVxuXG5sZXQgd2l0aF9sb2NhbCBrZXkgdmFsdWUgfmYgPVxuICBsZXQgdCA9IHQgKCkgaW5cbiAgbGV0IGV4ZWN1dGlvbl9jb250ZXh0ID1cbiAgICBFeGVjdXRpb25fY29udGV4dC53aXRoX2xvY2FsIChjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQpIGtleSB2YWx1ZVxuICBpblxuICB3aXRoX2V4ZWN1dGlvbl9jb250ZXh0IHQgZXhlY3V0aW9uX2NvbnRleHQgfmZcbjs7XG5cbmxldCBtYWluX2V4ZWN1dGlvbl9jb250ZXh0ID0gKHQgKCkpLm1haW5fZXhlY3V0aW9uX2NvbnRleHRcbmxldCBjYW5fcnVuX2Ffam9iIHQgPSBudW1fcGVuZGluZ19qb2JzIHQgPiAwIHx8IEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRcbmxldCBoYXNfdXBjb21pbmdfZXZlbnQgdCA9IG5vdCAoVGltaW5nX3doZWVsLmlzX2VtcHR5IChldmVudHMgdCkpXG5sZXQgbmV4dF91cGNvbWluZ19ldmVudCB0ID0gVGltaW5nX3doZWVsLm5leHRfYWxhcm1fZmlyZXNfYXQgKGV2ZW50cyB0KVxubGV0IG5leHRfdXBjb21pbmdfZXZlbnRfZXhuIHQgPSBUaW1pbmdfd2hlZWwubmV4dF9hbGFybV9maXJlc19hdF9leG4gKGV2ZW50cyB0KVxubGV0IGV2ZW50X3ByZWNpc2lvbiB0ID0gVGltaW5nX3doZWVsLmFsYXJtX3ByZWNpc2lvbiAoZXZlbnRzIHQpXG5sZXQgY3ljbGVfc3RhcnQgdCA9IHQuY3ljbGVfc3RhcnRcbmxldCBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZiA9IHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IDwtIGYgOjogdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnRcbmxldCBydW5fZXZlcnlfY3ljbGVfZW5kIHQgfmYgPSB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gZiA6OiB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRcblxubGV0IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9zdGFydF9zdGF0ZSB+a2V5OmhhbmRsZSB+ZGF0YTpmO1xuICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjtcbiAgaGFuZGxlXG47O1xuXG5sZXQgYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rIHQgfmYgPVxuICBsZXQgaGFuZGxlID0gVHlwZXMuQ3ljbGVfaG9va19oYW5kbGUuY3JlYXRlICgpIGluXG4gIEhhc2h0YmwuYWRkX2V4biB0LnJ1bl9ldmVyeV9jeWNsZV9lbmRfc3RhdGUgfmtleTpoYW5kbGUgfmRhdGE6ZjtcbiAgcnVuX2V2ZXJ5X2N5Y2xlX2VuZCB0IH5mO1xuICBoYW5kbGVcbjs7XG5cbigqIFVuYmVsaWV2YWJsZSB0aGF0IFtMaXN0LnJlbW92ZV0gaXMgbm90IGEgdGhpbmcgKilcbmxldCBsaXN0X3JlbW92ZV9maXJzdCBsc3QgfmYgPVxuICBtYXRjaCBMaXN0LnNwbGl0X3doaWxlIH5mOihmdW4geCAtPiBub3QgKGYgeCkpIGxzdCB3aXRoXG4gIHwgXywgW10gLT4gTm9uZVxuICB8IGwsIF8gOjogciAtPiBTb21lIChsIEAgcilcbjs7XG5cbmxldCByZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgbHN0IGYgPVxuICAoKiBSZW1vdmUgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgW2ZdIGZyb20gW2xzdF0uIE1vcmUgdGhhbiBvbmUgaW5zdGFuY2UgbWF5IGJlIHByZXNlbnQsXG4gICAgIGJ1dCByZW1vdmFsIGlzIHJlZmVyZW5jZS1jb3VudGVkIGJ5IFtydW5fZXZlcnlfY3ljbGVfKHN0YXJ0fGVuZClfc3RhdGVdIHRhYmxlcy4gKilcbiAgbWF0Y2ggbGlzdF9yZW1vdmVfZmlyc3QgfmY6KHBoeXNfZXF1YWwgZikgbHN0IHdpdGhcbiAgfCBTb21lIGxzdCAtPiBsc3RcbiAgfCBOb25lIC0+XG4gICAgKCogVGhpcyBzaG91bGQgYmUgdW5yZWFjaGFibGUsIHNlZSB0aGUgW2ludmFyaWFudF0gaW4gW3NjaGVkdWxlcjEubWxdLiAqKVxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIlNjaGVkdWxlci5yZW1vdmVfc2luZ2xlX2N5Y2xlX2hvb2sgY2FsbGVkIHdpdGggYSBob29rIHRoYXQgaXNuJ3QgcmVnaXN0ZXJlZFwiXVxuOztcblxubGV0IHJlbW92ZV9ldmVyeV9jeWNsZV9zdGFydF9ob29rX2V4biB0IGhhbmRsZSA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbmRfcmVtb3ZlIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0X3N0YXRlIGhhbmRsZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGZhaWx3aXRoIFwiQXR0ZW1wdGVkIHRvIHJlbW92ZSBhIGN5Y2xlIHN0YXJ0IGhvb2sgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkLlwiXG4gIHwgU29tZSBmIC0+XG4gICAgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgPC0gcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIHQucnVuX2V2ZXJ5X2N5Y2xlX3N0YXJ0IGZcbjs7XG5cbmxldCByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuIHQgaGFuZGxlID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5ydW5fZXZlcnlfY3ljbGVfZW5kX3N0YXRlIGhhbmRsZSB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGZhaWx3aXRoIFwiQXR0ZW1wdGVkIHRvIHJlbW92ZSBhIGN5Y2xlIGVuZCBob29rIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gcmVtb3ZlZC5cIlxuICB8IFNvbWUgZiAtPiB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgPC0gcmVtb3ZlX3NpbmdsZV9jeWNsZV9ob29rIHQucnVuX2V2ZXJ5X2N5Y2xlX2VuZCBmXG47O1xuXG5sZXQgbWFwX2N5Y2xlX3RpbWVzIHQgfmYgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT4gVGFpbC5leHRlbmQgdGFpbCAoZiB0Lmxhc3RfY3ljbGVfdGltZSkpKVxuOztcblxubGV0IGxvbmdfY3ljbGVzIHQgfmF0X2xlYXN0ID1cbiAgU3RyZWFtLmNyZWF0ZSAoZnVuIHRhaWwgLT5cbiAgICBydW5fZXZlcnlfY3ljbGVfc3RhcnQgdCB+ZjooZnVuICgpIC0+XG4gICAgICBpZiBUaW1lX25zLlNwYW4uKCA+PSApIHQubGFzdF9jeWNsZV90aW1lIGF0X2xlYXN0XG4gICAgICB0aGVuIFRhaWwuZXh0ZW5kIHRhaWwgdC5sYXN0X2N5Y2xlX3RpbWUpKVxuOztcblxubGV0IGN5Y2xlX251bV9qb2JzIHQgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIHJ1bl9ldmVyeV9jeWNsZV9zdGFydCB0IH5mOihmdW4gKCkgLT4gVGFpbC5leHRlbmQgdGFpbCB0Lmxhc3RfY3ljbGVfbnVtX2pvYnMpKVxuOztcblxubGV0IGN5Y2xlX2NvdW50IHQgPSB0LmN5Y2xlX2NvdW50XG5cbmxldCBzZXRfbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgdCBpbnQgPVxuICB0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG4gIDwtIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLmNyZWF0ZV9leG4gaW50XG47O1xuXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgdCA9XG4gIE1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlLnJhdyB0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlXG47O1xuXG5sZXQgc2V0X3RocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rIHQgZiA9IHQudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgPC0gZlxuXG5sZXQgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmIGEgPVxuICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQuZXh0ZXJuYWxfam9icyAoRXh0ZXJuYWxfam9iLlQgKGV4ZWN1dGlvbl9jb250ZXh0LCBmLCBhKSk7XG4gIHQudGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgKClcbjs7XG5cbmxldCBzZXRfZXZlbnRfYWRkZWRfaG9vayB0IGYgPSB0LmV2ZW50X2FkZGVkX2hvb2sgPC0gU29tZSBmXG5sZXQgc2V0X2pvYl9xdWV1ZWRfaG9vayB0IGYgPSB0LmpvYl9xdWV1ZWRfaG9vayA8LSBTb21lIGZcblxubGV0IGNyZWF0ZV9hbGFybSB0IGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgR2MuRXhwZXJ0LkFsYXJtLmNyZWF0ZSAoZnVuICgpIC0+XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmICgpKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXIgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciBoZWFwX2Jsb2NrID1cbiAgICAoKiBIZXJlIHdlIGNhbiBiZSBpbiBhbnkgdGhyZWFkLCBhbmQgbWF5IG5vdCBiZSBob2xkaW5nIHRoZSBhc3luYyBsb2NrLiAgU28sIHdlIGNhblxuICAgICAgIG9ubHkgZG8gdGhyZWFkLXNhZmUgdGhpbmdzLlxuXG4gICAgICAgQnkgcHV0dGluZyBbaGVhcF9ibG9ja10gaW4gW2V4dGVybmFsX2pvYnNdLCB3ZSBhcmUga2VlcGluZyBpdCBhbGl2ZSB1bnRpbCB0aGUgbmV4dFxuICAgICAgIHRpbWUgdGhlIGFzeW5jIHNjaGVkdWxlciBnZXRzIGFyb3VuZCB0byBkZXF1ZXVlaW5nIGl0LiAgQ2FsbGluZ1xuICAgICAgIFt0LnRocmVhZF9zYWZlX2V4dGVybmFsX2pvYl9ob29rXSBlbnN1cmVzIHRoYXQgd2lsbCBoYXBwZW4gaW4gc2hvcnQgb3JkZXIuICBUaHVzLFxuICAgICAgIHdlIGFyZSBub3QgZHJhbWF0aWNhbGx5IGluY3JlYXNpbmcgdGhlIGxpZmV0aW1lIG9mIFtoZWFwX2Jsb2NrXSwgc2luY2UgdGhlIE9DYW1sXG4gICAgICAgcnVudGltZSBhbHJlYWR5IHJlc3VycmVjdGVkIFtoZWFwX2Jsb2NrXSBzbyB0aGF0IHdlIGNvdWxkIHJlZmVyIHRvIGl0IGhlcmUuICBUaGVcbiAgICAgICBPQ2FtbCBydW50aW1lIGFscmVhZHkgcmVtb3ZlZCB0aGUgZmluYWxpemVyIGZ1bmN0aW9uIHdoZW4gaXQgbm90aWNlZCBbaGVhcF9ibG9ja11cbiAgICAgICBjb3VsZCBiZSBmaW5hbGl6ZWQsIHNvIHRoZXJlIGlzIG5vIGluZmluaXRlIGxvb3AgaW4gd2hpY2ggd2UgYXJlIGNhdXNpbmcgdGhlXG4gICAgICAgZmluYWxpemVyIHRvIHJ1biBhZ2Fpbi4gIEFsc28sIE9DYW1sIGRvZXMgbm90IGltcG9zZSBhbnkgcmVxdWlyZW1lbnQgb24gZmluYWxpemVyXG4gICAgICAgZnVuY3Rpb25zIHRoYXQgdGhleSBuZWVkIHRvIGRpc3Bvc2Ugb2YgdGhlIGJsb2NrLCBzbyBpdCdzIGZpbmUgdGhhdCB3ZSBrZWVwXG4gICAgICAgW2hlYXBfYmxvY2tdIGFyb3VuZCB1bnRpbCBsYXRlci4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzIHRoZW4gRGVidWcubG9nX3N0cmluZyBcImVucXVldWVpbmcgZmluYWxpemVyXCI7XG4gICAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgdCBleGVjdXRpb25fY29udGV4dCBmIGhlYXBfYmxvY2tcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV0gaW5zdGVhZCBvZiBbQ29yZS5HYy5hZGRfZmluYWxpemVyXSBiZWNhdXNlIHRoZSBsYXR0ZXJcbiAgICAgaGFzIGl0cyBvd24gd3JhcHBlciBhcm91bmQgW0NhbWwuR2MuZmluYWxpc2VdIHRvIHJ1biBmaW5hbGl6ZXJzIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBDYW1sLkdjLmZpbmFsaXNlIGZpbmFsaXplciBoZWFwX2Jsb2NrIHdpdGhcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAoKiBbSGVhcF9ibG9ja10gZW5zdXJlcyB0aGF0IHRoaXMgd2lsbCBvbmx5IGZhaWwgZm9yIHN0YXRpYyBkYXRhLCBpbiB3aGljaCBjYXNlIHdlXG4gICAgICAgY2FuIGRyb3AgdGhlIGZpbmFsaXplciBzaW5jZSB0aGUgYmxvY2sgd2lsbCBuZXZlciBiZSBjb2xsZWN0ZWQuKilcbiAgICAoKVxuOztcblxubGV0IGFkZF9maW5hbGl6ZXJfZXhuIHQgeCBmID1cbiAgYWRkX2ZpbmFsaXplciB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgKGZ1biBoZWFwX2Jsb2NrIC0+XG4gICAgZiAoSGVhcF9ibG9jay52YWx1ZSBoZWFwX2Jsb2NrKSlcbjs7XG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3QgdCBoZWFwX2Jsb2NrIGYgPVxuICBsZXQgZXhlY3V0aW9uX2NvbnRleHQgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHQgaW5cbiAgbGV0IGZpbmFsaXplciAoKSA9XG4gICAgKCogSGVyZSB3ZSBjYW4gYmUgaW4gYW55IHRocmVhZCwgYW5kIG1heSBub3QgYmUgaG9sZGluZyB0aGUgYXN5bmMgbG9jay4gIFNvLCB3ZSBjYW5cbiAgICAgICBvbmx5IGRvIHRocmVhZC1zYWZlIHRoaW5ncy4gKilcbiAgICBpZiBEZWJ1Zy5maW5hbGl6ZXJzXG4gICAgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwiZW5xdWV1ZWluZyBmaW5hbGl6ZXIgKHVzaW5nICdsYXN0JyBzZW1hbnRpYylcIjtcbiAgICB0aHJlYWRfc2FmZV9lbnF1ZXVlX2V4dGVybmFsX2pvYiB0IGV4ZWN1dGlvbl9jb250ZXh0IGYgKClcbiAgaW5cbiAgaWYgRGVidWcuZmluYWxpemVycyB0aGVuIERlYnVnLmxvZ19zdHJpbmcgXCJhZGRpbmcgZmluYWxpemVyICh1c2luZyAnbGFzdCcgc2VtYW50aWMpXCI7XG4gICgqIFdlIHVzZSBbQ2FtbC5HYy5maW5hbGlzZV9sYXN0XSBpbnN0ZWFkIG9mIFtDb3JlLkdjLmFkZF9maW5hbGl6ZXJfbGFzdF0gYmVjYXVzZVxuICAgICB0aGUgbGF0dGVyIGhhcyBpdHMgb3duIHdyYXBwZXIgYXJvdW5kIFtDYW1sLkdjLmZpbmFsaXNlX2xhc3RdIHRvIHJ1biBmaW5hbGl6ZXJzXG4gICAgIHN5bmNocm9ub3VzbHkuICopXG4gIHRyeSBDYW1sLkdjLmZpbmFsaXNlX2xhc3QgZmluYWxpemVyIGhlYXBfYmxvY2sgd2l0aFxuICB8IEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICgqIFtIZWFwX2Jsb2NrXSBlbnN1cmVzIHRoYXQgdGhpcyB3aWxsIG9ubHkgZmFpbCBmb3Igc3RhdGljIGRhdGEsIGluIHdoaWNoIGNhc2Ugd2VcbiAgICAgICBjYW4gZHJvcCB0aGUgZmluYWxpemVyIHNpbmNlIHRoZSBibG9jayB3aWxsIG5ldmVyIGJlIGNvbGxlY3RlZC4qKVxuICAgICgpXG47O1xuXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0X2V4biB0IHggZiA9IGFkZF9maW5hbGl6ZXJfbGFzdCB0IChIZWFwX2Jsb2NrLmNyZWF0ZV9leG4geCkgZlxuXG4oKiogW2ZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kXSBzZXRzIHRoZSBudW1iZXIgb2Ygbm9ybWFsIGpvYnMgYWxsb3dlZCB0byBydW4gaW4gdGhpc1xuICAgIGN5Y2xlIHRvIHplcm8uICBUaHVzLCBhZnRlciB0aGUgY3VycmVudGx5IHJ1bm5pbmcgam9iIGNvbXBsZXRlcywgdGhlIHNjaGVkdWxlciB3aWxsXG4gICAgc3dpdGNoIHRvIGxvdyBwcmlvcml0eSBqb2JzIGFuZCB0aGVuIGVuZCB0aGUgY3VycmVudCBjeWNsZS4gKilcbmxldCBmb3JjZV9jdXJyZW50X2N5Y2xlX3RvX2VuZCB0ID1cbiAgSm9iX3F1ZXVlLnNldF9qb2JzX2xlZnRfdGhpc19jeWNsZSB0Lm5vcm1hbF9wcmlvcml0eV9qb2JzIDBcbjs7XG5cbigqIFdlIHByZWFsbG9jYXRlIFtzZW5kX2V4bl0gdG8gYXZvaWQgYWxsb2NhdGluZyBpdCBvbiBlYWNoIGNhbGwgdG8gW2FkdmFuY2VfY2xvY2tdLiAqKVxubGV0IHNlbmRfZXhuID0gU29tZSBNb25pdG9yLnNlbmRfZXhuXG5cbmxldCBhZHZhbmNlX2Nsb2NrIHQgfm5vdyA9XG4gIFN5bmNocm9ub3VzX3RpbWVfc291cmNlMC5hZHZhbmNlX2ludGVybmFsIHQudGltZV9zb3VyY2UgfnRvXzpub3cgfnNlbmRfZXhuXG47O1xuXG5sZXQgcnVuX2N5Y2xlIHQgPVxuICBpZiBkZWJ1ZyB0aGVuIERlYnVnLmxvZyBcInJ1bl9jeWNsZSBzdGFydGluZ1wiIHQgWyVzZXhwX29mOiB0XTtcbiAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gIHQuY3ljbGVfY291bnQgPC0gdC5jeWNsZV9jb3VudCArIDE7XG4gIHQuY3ljbGVfc3RhcnQgPC0gbm93O1xuICB0LmluX2N5Y2xlIDwtIHRydWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQueWllbGQgKCk7XG4gIGxldCBudW1fam9ic19ydW5fYXRfc3RhcnRfb2ZfY3ljbGUgPSBudW1fam9ic19ydW4gdCBpblxuICBMaXN0Lml0ZXIgdC5ydW5fZXZlcnlfY3ljbGVfc3RhcnQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICBhZHZhbmNlX2Nsb2NrIHQgfm5vdztcbiAgc3RhcnRfY3ljbGUgdCB+bWF4X251bV9qb2JzX3Blcl9wcmlvcml0eTp0Lm1heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlO1xuICBsZXQgcmVjIHJ1bl9qb2JzIHQgPVxuICAgIG1hdGNoIFNjaGVkdWxlci5ydW5fam9icyB0IHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciAoZXhuLCBiYWNrdHJhY2UpIC0+XG4gICAgICBNb25pdG9yLnNlbmRfZXhuIChNb25pdG9yLmN1cnJlbnQgKCkpIGV4biB+YmFja3RyYWNlOihgVGhpcyBiYWNrdHJhY2UpO1xuICAgICAgKCogW3J1bl9qb2JzXSBzdG9wcGVkIGR1ZSB0byBhbiBleG4uICBUaGVyZSBtYXkgc3RpbGwgYmUgam9icyB0aGF0IGNvdWxkIGJlXG4gICAgICAgICBydW4gdGhpcyBjeWNsZSwgc28gW3J1bl9qb2JzXSBhZ2Fpbi4gKilcbiAgICAgIHJ1bl9qb2JzIHRcbiAgaW5cbiAgcnVuX2pvYnMgdDtcbiAgbGV0IGN5Y2xlX3RpbWUgPSBUaW1lX25zLmRpZmYgKFRpbWVfbnMubm93ICgpKSB0LmN5Y2xlX3N0YXJ0IGluXG4gIHQubGFzdF9jeWNsZV90aW1lIDwtIGN5Y2xlX3RpbWU7XG4gIHQubGFzdF9jeWNsZV9udW1fam9icyA8LSBudW1fam9ic19ydW4gdCAtIG51bV9qb2JzX3J1bl9hdF9zdGFydF9vZl9jeWNsZTtcbiAgdC50b3RhbF9jeWNsZV90aW1lIDwtIFRpbWVfbnMuU3Bhbi4odC50b3RhbF9jeWNsZV90aW1lICsgY3ljbGVfdGltZSk7XG4gIGlmIEJ2YXIuaGFzX2FueV93YWl0ZXJzIHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIEJ2YXIuYnJvYWRjYXN0IHQueWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gKCk7XG4gIExpc3QuaXRlciB0LnJ1bl9ldmVyeV9jeWNsZV9lbmQgfmY6KGZ1biBmIC0+IGYgKCkpO1xuICB0LmluX2N5Y2xlIDwtIGZhbHNlO1xuICBpZiBkZWJ1Z1xuICB0aGVuXG4gICAgRGVidWcubG9nXG4gICAgICBcInJ1bl9jeWNsZSBmaW5pc2hlZFwiXG4gICAgICAodW5jYXVnaHRfZXhuIHQsIGlzX3NvbWUgKG5leHRfdXBjb21pbmdfZXZlbnQgdCkpXG4gICAgICBbJXNleHBfb2Y6IEVycm9yLnQgb3B0aW9uICogYm9vbF1cbjs7XG5cbmxldCBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpID1cbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBzdGFydGluZ1wiO1xuICBsZXQgdCA9IHQgKCkgaW5cbiAgaWYgaXNfZGVhZCB0XG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2VcbiAgICAgICAgXCJydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluIGNhbm5vdCBwcm9jZWVkIC0tIHNjaGVkdWxlciBpcyBkZWFkXCJcbiAgICAgICAgICB+c2NoZWR1bGVyOih0IDogdCldO1xuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIHJ1bl9jeWNsZSB0O1xuICAgIGFkdmFuY2VfY2xvY2sgdCB+bm93OihUaW1lX25zLm5vdyAoKSk7XG4gICAgaWYgY2FuX3J1bl9hX2pvYiB0IHRoZW4gbG9vcCAoKVxuICBpblxuICBsb29wICgpO1xuICAoKiBSZXNldCB0aGUgY3VycmVudCBleGVjdXRpb24gY29udGV4dCB0byBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgd2hlbiB3ZSdyZSBub3QgaW5cbiAgICAgYSBqb2IsIFtjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ID0gbWFpbl9leGVjdXRpb25fY29udGV4dF0uICopXG4gIHNldF9leGVjdXRpb25fY29udGV4dCB0IHQubWFpbl9leGVjdXRpb25fY29udGV4dDtcbiAgaWYgZGVidWcgdGhlbiBEZWJ1Zy5sb2dfc3RyaW5nIFwicnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiBmaW5pc2hlZFwiO1xuICBPcHRpb24uaXRlciAodW5jYXVnaHRfZXhuIHQpIH5mOkVycm9yLnJhaXNlXG47O1xuXG5sZXQgbWFrZV9hc3luY191bnVzYWJsZSAoKSA9XG4gIGxldCB0ID0gIXRfcmVmIGluXG4gIHQuY2hlY2tfYWNjZXNzXG4gIDwtIFNvbWVcbiAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgcmFpc2VfcyBbJXNleHAgXCJBc3luYyBzY2hlZHVsZXIgaXMgdW51c2FibGUgZHVlIHRvIFttYWtlX2FzeW5jX3VudXNhYmxlXVwiXSlcbjs7XG5cbmxldCByZXNldF9pbl9mb3JrZWRfcHJvY2VzcyAoKSA9XG4gIGlmIGRlYnVnIHRoZW4gRGVidWcubG9nX3N0cmluZyBcInJlc2V0X2luX2ZvcmtlZF9wcm9jZXNzXCI7XG4gICgqIFRoZXJlIGlzIG5vIG5lZWQgdG8gZW1wdHkgW21haW5fbW9uaXRvcl9ob2xlXS4gKilcbiAgU2NoZWR1bGVyLih0X3JlZiA6PSBjcmVhdGUgKCkpXG47O1xuXG5sZXQgY2hlY2tfaW52YXJpYW50cyB0ID0gdC5jaGVja19pbnZhcmlhbnRzXG5sZXQgc2V0X2NoZWNrX2ludmFyaWFudHMgdCBiID0gdC5jaGVja19pbnZhcmlhbnRzIDwtIGJcbmxldCBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgdCBiID0gdC5yZWNvcmRfYmFja3RyYWNlcyA8LSBiXG5sZXQgeWllbGQgdCA9IEJ2YXIud2FpdCB0LnlpZWxkXG5cbmxldCB5aWVsZF91bnRpbF9ub19qb2JzX3JlbWFpbiA/KG1heV9yZXR1cm5faW1tZWRpYXRlbHkgPSBmYWxzZSkgdCA9XG4gIGlmIG1heV9yZXR1cm5faW1tZWRpYXRlbHkgJiYgbnVtX3BlbmRpbmdfam9icyB0ID0gMFxuICB0aGVuIHJldHVybiAoKVxuICBlbHNlIEJ2YXIud2FpdCB0LnlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluXG47O1xuXG5sZXQgeWllbGRfZXZlcnkgfm4gPVxuICBpZiBuIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlNjaGVkdWxlci55aWVsZF9ldmVyeSBnb3Qgbm9ucG9zaXRpdmUgY291bnRcIiAobiA6IGludCldXG4gIGVsc2UgaWYgbiA9IDFcbiAgdGhlbiBzdGFnZSAoZnVuIHQgLT4geWllbGQgdClcbiAgZWxzZSAoXG4gICAgbGV0IGNvdW50X3VudGlsX3lpZWxkID0gcmVmIG4gaW5cbiAgICBzdGFnZSAoZnVuIHQgLT5cbiAgICAgIGRlY3IgY291bnRfdW50aWxfeWllbGQ7XG4gICAgICBpZiAhY291bnRfdW50aWxfeWllbGQgPiAwXG4gICAgICB0aGVuIHJldHVybiAoKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGNvdW50X3VudGlsX3lpZWxkIDo9IG47XG4gICAgICAgIHlpZWxkIHQpKSlcbjs7XG5cbmxldCB0b3RhbF9jeWNsZV90aW1lIHQgPVxuICAoKiBBZGp1c3QgZm9yIHRoZSBmYWN0IHRoZSBjYWxsZXIncyBwcm9iYWJseSBhbiBBc3luYyBqb2IuICopXG4gIGlmIHQuaW5fY3ljbGVcbiAgdGhlbiAoXG4gICAgbGV0IHRoaXNfY3ljbGVfdGltZSA9IFRpbWVfbnMuKGRpZmYgKG5vdyAoKSkgdC5jeWNsZV9zdGFydCkgaW5cbiAgICBUaW1lX25zLlNwYW4uKHQudG90YWxfY3ljbGVfdGltZSArIHRoaXNfY3ljbGVfdGltZSkpXG4gIGVsc2UgdC50b3RhbF9jeWNsZV90aW1lXG47O1xuXG5tb2R1bGUgVmVyeV9sb3dfcHJpb3JpdHlfd29yayA9IHN0cnVjdFxuICBtb2R1bGUgV29ya2VyX3Jlc3VsdCA9IFZlcnlfbG93X3ByaW9yaXR5X3dvcmtlci5FeGVjX3Jlc3VsdFxuXG5cbiAgbGV0IHJlYyBydW4gdCA9IHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmc6MV8wMDBcblxuICBhbmQgcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9XG4gICAgaWYgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IDBcbiAgICB0aGVuIHlpZWxkX3RoZW5fcnVuIHRcbiAgICBlbHNlIGlmIG5vdCAoRGVxdWUuaXNfZW1wdHkgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzKVxuICAgIHRoZW4gKFxuICAgICAgbGV0IHdvcmtlciA9IERlcXVlLmRlcXVldWVfZnJvbnRfZXhuIHQudmVyeV9sb3dfcHJpb3JpdHlfd29ya2VycyBpblxuICAgICAgc2V0X2V4ZWN1dGlvbl9jb250ZXh0IHQgd29ya2VyLmV4ZWN1dGlvbl9jb250ZXh0O1xuICAgICAgcnVuX3dvcmtlciB0IHdvcmtlciB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZylcblxuICBhbmQgeWllbGRfdGhlbl9ydW4gdCA9XG4gICAgaWYgbm90IChEZXF1ZS5pc19lbXB0eSB0LnZlcnlfbG93X3ByaW9yaXR5X3dvcmtlcnMpXG4gICAgdGhlbiBEZWZlcnJlZC51cG9uICh5aWVsZCB0KSAoZnVuICgpIC0+IHJ1biB0KVxuXG4gIGFuZCBydW5fd29ya2VyIHQgd29ya2VyIH5udW1fZXhlY3NfYmVmb3JlX3lpZWxkaW5nID1cbiAgICBhc3NlcnQgKHBoeXNfZXF1YWwgdC5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0IHdvcmtlci5leGVjdXRpb25fY29udGV4dCk7XG4gICAgaWYgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IDBcbiAgICB0aGVuIChcbiAgICAgIERlcXVlLmVucXVldWVfZnJvbnQgdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIHdvcmtlcjtcbiAgICAgIHlpZWxkX3RoZW5fcnVuIHQpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZyA9IG51bV9leGVjc19iZWZvcmVfeWllbGRpbmcgLSAxIGluXG4gICAgICBtYXRjaCB3b3JrZXIuZXhlYyAoKSB3aXRoXG4gICAgICB8IEZpbmlzaGVkIC0+IHJ1bl93b3JrZXJzIHQgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmdcbiAgICAgIHwgTm90X2ZpbmlzaGVkIC0+IHJ1bl93b3JrZXIgdCB3b3JrZXIgfm51bV9leGVjc19iZWZvcmVfeWllbGRpbmdcbiAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICBsZXQgYnQgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgIE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuIH5iYWNrdHJhY2U6KGBUaGlzIGJ0KTtcbiAgICAgICAgcnVuX3dvcmtlcnMgdCB+bnVtX2V4ZWNzX2JlZm9yZV95aWVsZGluZylcbiAgOztcblxuICBsZXQgZW5xdWV1ZSB+ZiA9XG4gICAgbGV0IHQgPSB0ICgpIGluXG4gICAgbGV0IHF1ZXVlID0gdC52ZXJ5X2xvd19wcmlvcml0eV93b3JrZXJzIGluXG4gICAgbGV0IHJ1bm5pbmcgPSBub3QgKERlcXVlLmlzX2VtcHR5IHF1ZXVlKSBpblxuICAgIGxldCBleGVjdXRpb25fY29udGV4dCA9XG4gICAgICBFeGVjdXRpb25fY29udGV4dC5jcmVhdGVfbGlrZSAoY3VycmVudF9leGVjdXRpb25fY29udGV4dCB0KSB+cHJpb3JpdHk6TG93XG4gICAgaW5cbiAgICBEZXF1ZS5lbnF1ZXVlX2JhY2sgcXVldWUgeyBleGVjdXRpb25fY29udGV4dDsgZXhlYyA9IGYgfTtcbiAgICBpZiBub3QgcnVubmluZyB0aGVuIGVucXVldWUgdCBleGVjdXRpb25fY29udGV4dCBydW4gdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBGb3JfYmVuY2ggPSBzdHJ1Y3RcbiAgbGV0IGFkdmFuY2VfY2xvY2sgPSBhZHZhbmNlX2Nsb2NrXG5lbmRcblxubGV0IGluX2N5Y2xlIHQgPSB0LmluX2N5Y2xlXG4iLCJ0eXBlIHQgPSB1bml0IC0+IHVuaXRcblxubW9kdWxlIEhhbmRsZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5DeWNsZV9ob29rX2hhbmRsZS50XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBTY2hlZHVsZXJcblxubGV0IGVucXVldWVfam9iIGV4ZWN1dGlvbl9jb250ZXh0IGYgYSA9IGVucXVldWUgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuXG5sZXQgdGhyZWFkX3NhZmVfZW5xdWV1ZV9qb2IgZXhlY3V0aW9uX2NvbnRleHQgZiBhID1cbiAgdGhyZWFkX3NhZmVfZW5xdWV1ZV9leHRlcm5hbF9qb2IgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IGYgYVxuOztcblxubGV0IGN1cnJlbnRfZXhlY3V0aW9uX2NvbnRleHQgKCkgPSBjdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICh0ICgpKVxubGV0IGN5Y2xlX2NvdW50ICgpID0gY3ljbGVfY291bnQgKHQgKCkpXG5sZXQgY3ljbGVfc3RhcnRfbnMgKCkgPSBjeWNsZV9zdGFydCAodCAoKSlcbmxldCBjeWNsZV9zdGFydCAoKSA9IFRpbWVfbnMudG9fdGltZV9mbG9hdF9yb3VuZF9uZWFyZXN0IChjeWNsZV9zdGFydF9ucyAoKSlcbmxldCBjeWNsZV90aW1lc19ucyAoKSA9IG1hcF9jeWNsZV90aW1lcyAodCAoKSkgfmY6Rm4uaWRcbmxldCBjeWNsZV90aW1lcyAoKSA9IG1hcF9jeWNsZV90aW1lcyAodCAoKSkgfmY6VGltZV9ucy5TcGFuLnRvX3NwYW5fZmxvYXRfcm91bmRfbmVhcmVzdFxubGV0IHRvdGFsX2N5Y2xlX3RpbWUgKCkgPSB0b3RhbF9jeWNsZV90aW1lICh0ICgpKVxubGV0IGxhc3RfY3ljbGVfdGltZSAoKSA9IGxhc3RfY3ljbGVfdGltZSAodCAoKSlcbmxldCBsb25nX2N5Y2xlcyB+YXRfbGVhc3QgPSBsb25nX2N5Y2xlcyAodCAoKSkgfmF0X2xlYXN0XG5sZXQgZXZlbnRfcHJlY2lzaW9uX25zICgpID0gZXZlbnRfcHJlY2lzaW9uICh0ICgpKVxubGV0IGV2ZW50X3ByZWNpc2lvbiAoKSA9IFRpbWVfbnMuU3Bhbi50b19zcGFuX2Zsb2F0X3JvdW5kX25lYXJlc3QgKGV2ZW50X3ByZWNpc2lvbl9ucyAoKSlcblxubGV0IHNldF9tYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSBpID1cbiAgc2V0X21heF9udW1fam9ic19wZXJfcHJpb3JpdHlfcGVyX2N5Y2xlICh0ICgpKSBpXG47O1xuXG5sZXQgbWF4X251bV9qb2JzX3Blcl9wcmlvcml0eV9wZXJfY3ljbGUgKCkgPSBtYXhfbnVtX2pvYnNfcGVyX3ByaW9yaXR5X3Blcl9jeWNsZSAodCAoKSlcbmxldCBzZXRfcmVjb3JkX2JhY2t0cmFjZXMgYm9vbCA9IHNldF9yZWNvcmRfYmFja3RyYWNlcyAodCAoKSkgYm9vbFxubGV0IGZvcmNlX2N1cnJlbnRfY3ljbGVfdG9fZW5kICgpID0gZm9yY2VfY3VycmVudF9jeWNsZV90b19lbmQgKHQgKCkpXG5sZXQgeWllbGQgKCkgPSB5aWVsZCAodCAoKSlcblxubGV0IHlpZWxkX3VudGlsX25vX2pvYnNfcmVtYWluID9tYXlfcmV0dXJuX2ltbWVkaWF0ZWx5ICgpID1cbiAgeWllbGRfdW50aWxfbm9fam9ic19yZW1haW4gP21heV9yZXR1cm5faW1tZWRpYXRlbHkgKHQgKCkpXG47O1xuXG5sZXQgeWllbGRfZXZlcnkgfm4gPVxuICBsZXQgeWllbGRfZXZlcnkgPSBTdGFnZWQudW5zdGFnZSAoeWllbGRfZXZlcnkgfm4pIGluXG4gIGxldCB0ID0gdCAoKSBpblxuICBzdGFnZSAoZnVuICgpIC0+IHlpZWxkX2V2ZXJ5IHQpXG47O1xuXG5sZXQgbnVtX2pvYnNfcnVuICgpID0gbnVtX2pvYnNfcnVuICh0ICgpKVxubGV0IG51bV9wZW5kaW5nX2pvYnMgKCkgPSBudW1fcGVuZGluZ19qb2JzICh0ICgpKVxuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gIGxldCBydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluID0gcnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpblxuICBsZXQgbGFzdF9jeWNsZV9udW1fam9icyAoKSA9IGxhc3RfY3ljbGVfbnVtX2pvYnMgKHQgKCkpXG4gIGxldCBydW5fZXZlcnlfY3ljbGVfc3RhcnQgZiA9IHJ1bl9ldmVyeV9jeWNsZV9zdGFydCAodCAoKSkgfmZcbiAgbGV0IHJ1bl9ldmVyeV9jeWNsZV9lbmQgZiA9IHJ1bl9ldmVyeV9jeWNsZV9lbmQgKHQgKCkpIH5mXG4gIGxldCBhZGRfZXZlcnlfY3ljbGVfc3RhcnRfaG9vayB+ZiA9IGFkZF9ldmVyeV9jeWNsZV9zdGFydF9ob29rICh0ICgpKSB+ZlxuICBsZXQgYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rIH5mID0gYWRkX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rICh0ICgpKSB+ZlxuXG4gIGxldCByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gaGFuZGxlID1cbiAgICByZW1vdmVfZXZlcnlfY3ljbGVfc3RhcnRfaG9va19leG4gKHQgKCkpIGhhbmRsZVxuICA7O1xuXG4gIGxldCByZW1vdmVfZXZlcnlfY3ljbGVfZW5kX2hvb2tfZXhuIGhhbmRsZSA9XG4gICAgcmVtb3ZlX2V2ZXJ5X2N5Y2xlX2VuZF9ob29rX2V4biAodCAoKSkgaGFuZGxlXG4gIDs7XG5cbiAgbGV0IHdpdGhfZXhlY3V0aW9uX2NvbnRleHQgZXhlY3V0aW9uX2NvbnRleHQgZiA9XG4gICAgd2l0aF9leGVjdXRpb25fY29udGV4dCAodCAoKSkgZXhlY3V0aW9uX2NvbnRleHQgfmZcbiAgOztcblxuICBsZXQgd2l0aF9leGVjdXRpb25fY29udGV4dDEgZXhlY3V0aW9uX2NvbnRleHQgfmYgeCA9XG4gICAgd2l0aF9leGVjdXRpb25fY29udGV4dDEgKHQgKCkpIGV4ZWN1dGlvbl9jb250ZXh0IH5mIHhcbiAgOztcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IFNjaGVkdWxlclxuIiwiKCoqIFNjaGVkdWxlIGpvYnMgdG8gcnVuIGF0IGEgdGltZSBpbiB0aGUgZnV0dXJlLlxuXG4gICAgVGhlIHVuZGVybHlpbmcgaW1wbGVtZW50YXRpb24gdXNlcyBhIGhlYXAgb2YgZXZlbnRzLCBvbmUgZm9yIGVhY2ggam9iIHRoYXQgbmVlZHMgdG9cbiAgICBydW4gaW4gdGhlIGZ1dHVyZS4gIFRoZSBBc3luYyBzY2hlZHVsZXIgaXMgcmVzcG9uc2libGUgZm9yIHdha2luZyB1cCBhdCB0aGUgcmlnaHQgdGltZVxuICAgIHRvIHJ1biB0aGUgam9icy4gKilcblxub3BlbiBDb3JlXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIE9yX3RpbWVvdXQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICBbIGBSZXN1bHQgb2YgJ2FcbiAgICB8IGBUaW1lb3V0XG4gICAgXVxuICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIENsb2NrID0gc2lnXG4gIG1vZHVsZSBPcl90aW1lb3V0ID0gT3JfdGltZW91dFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgbW9kdWxlIFNwYW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgIGVuZFxuXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gICgqKiBbcnVuX2F0IHRpbWUgZiBhXSBydW5zIFtmIGFdIGFzIHNvb24gYXMgcG9zc2libGUgYWZ0ZXIgW3RpbWVdLiAgSWYgW3RpbWVdIGlzIGluIHRoZVxuICAgICAgcGFzdCwgdGhlbiBbcnVuX2F0XSB3aWxsIGltbWVkaWF0ZWx5IHNjaGVkdWxlIGEgam9iIFt0XSB0aGF0IHdpbGwgcnVuIFtmIGFdLiAgSW4gbm9cbiAgICAgIHNpdHVhdGlvbiB3aWxsIFtydW5fYXRdIGFjdHVhbGx5IGNhbGwgW2ZdIGl0c2VsZi4gIFRoZSBjYWxsIHRvIFtmXSB3aWxsIGFsd2F5cyBiZSBpblxuICAgICAgYW5vdGhlciBqb2IuICopXG4gIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcblxuICAoKiogW3J1bl9hZnRlcl0gaXMgbGlrZSBbcnVuX2F0XSwgZXhjZXB0IHRoYXQgb25lIHNwZWNpZmllcyBhIHRpbWUgc3BhbiByYXRoZXIgdGhhbiBhblxuICAgICAgYWJzb2x1dGUgdGltZS4gKilcbiAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgnYSAtPiB1bml0KSAtPiAnYSAtPiB1bml0XG5cbiAgKCoqIFthdCB0aW1lXSByZXR1cm5zIGEgZGVmZXJyZWQgW2RdIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBhcyBzb29uIGFzIHBvc3NpYmxlXG4gICAgICBhZnRlciBbdGltZV0uICopXG4gIHZhbCBhdCA6IFRpbWUudCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW2FmdGVyXSBpcyBsaWtlIFthdF0sIGV4Y2VwdCB0aGF0IG9uZSBzcGVjaWZpZXMgYSB0aW1lIHNwYW4gcmF0aGVyIHRoYW4gYW4gYWJzb2x1dGVcbiAgICAgIHRpbWUuICopXG4gIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbd2l0aF90aW1lb3V0IHNwYW4gZF0gcmV0dXJucyBhIGRlZmVycmVkIHRoYXQgd2lsbCBiZWNvbWUgZGV0ZXJtaW5lZCBhZnRlciBlaXRoZXJcbiAgICAgIFtzcGFuXSBlbGFwc2VzIG9yIFtkXSBpcyBkZXRlcm1pbmVkLCByZXR1cm5pbmcgZWl0aGVyIFtgVGltZW91dF0gb3IgW2BSZXN1bHRdXG4gICAgICBkZXBlbmRpbmcgb24gd2hpY2ggb25lIHN1Y2NlZWRlZCBmaXJzdC4gIEF0IHRoZSB0aW1lIHRoZSByZXR1cm5lZCBkZWZlcnJlZCBiZWNvbWVzXG4gICAgICBkZXRlcm1pbmVkLCBib3RoIHRoaW5ncyBtYXkgaGF2ZSBoYXBwZW5lZCwgaW4gd2hpY2ggY2FzZSBbYFJlc3VsdF0gaXMgZ2l2ZW5cbiAgICAgIHByZWZlcmVuY2UuICopXG4gIHZhbCB3aXRoX3RpbWVvdXQgOiBUaW1lLlNwYW4udCAtPiAnYSBEZWZlcnJlZC50IC0+ICdhIE9yX3RpbWVvdXQudCBEZWZlcnJlZC50XG5cbiAgKCoqIEV2ZW50cyBwcm92aWRlIHZhcmlhbnRzIG9mIFtydW5fYXRdIGFuZCBbcnVuX2FmdGVyXSB3aXRoIHRoZSBhYmlsaXR5IHRvIGFib3J0IG9yXG4gICAgICByZXNjaGVkdWxlIGFuIGV2ZW50IHRoYXQgaGFzbid0IHlldCBoYXBwZW5lZC4gIE9uY2UgYW4gZXZlbnQgaGFwcGVucyBvciBpcyBhYm9ydGVkLFxuICAgICAgQXN5bmMgZG9lc24ndCB1c2UgYW55IHNwYWNlIGZvciB0cmFja2luZyBpdC4gKilcbiAgbW9kdWxlIEV2ZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdoKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgdFxuXG4gICAgdmFsIHNjaGVkdWxlZF9hdCA6IChfLCBfKSB0IC0+IFRpbWUudFxuXG4gICAgbW9kdWxlIFN0YXR1cyA6IHNpZ1xuICAgICAgdHlwZSAoJ2EsICdoKSB0ID1cbiAgICAgICAgfCBBYm9ydGVkIG9mICdhXG4gICAgICAgIHwgSGFwcGVuZWQgb2YgJ2hcbiAgICAgICAgfCBTY2hlZHVsZWRfYXQgb2YgVGltZS50XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgKCoqIElmIFtzdGF0dXNdIHJldHVybnMgW1NjaGVkdWxlZF9hdCB0aW1lXSwgaXQgaXMgcG9zc2libGUgdGhhdCBbdGltZSA8IFRpbWUubm93ICgpXVxuICAgICAgICBpZiBBc3luYydzIHNjaGVkdWxlciBoYXNuJ3QgeWV0IGdvdHRlbiB0aGUgY2hhbmNlIHRvIHVwZGF0ZSBpdHMgY2xvY2ssIGUuZy4sIGR1ZVxuICAgICAgICB0byB1c2VyIGpvYnMgcnVubmluZy4gKilcbiAgICB2YWwgc3RhdHVzIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBTdGF0dXMudFxuXG4gICAgKCoqIExldCBbdCA9IHJ1bl9hdCB0aW1lIGYgel0uICBBdCBbdGltZV0sIHRoaXMgcnVucyBbZiB6XSBhbmQgdHJhbnNpdGlvbnMgW3N0YXR1cyB0XVxuICAgICAgICB0byBbSGFwcGVuZWQgaF0sIHdoZXJlIFtoXSBpcyByZXN1bHQgb2YgW2Ygel0uXG5cbiAgICAgICAgTW9yZSBwcmVjaXNlbHksIGF0IFt0aW1lXSwgcHJvdmlkZWQgW2Fib3J0IHQgYV0gaGFzIG5vdCBwcmV2aW91c2x5IGJlZW4gY2FsbGVkLFxuICAgICAgICB0aGlzIHdpbGwgY2FsbCBbZiB6XSwgd2l0aCB0aGUgZ3VhcmFudGVlIHRoYXQgW3N0YXR1cyB0ID0gU2NoZWR1bGVkX2F0IHRpbWVdLiAgSWZcbiAgICAgICAgW2Ygel0gcmV0dXJucyBbaF0gYW5kIGRpZCBub3QgY2FsbCBbYWJvcnQgdCBhXSwgdGhlbiBbc3RhdHVzIHRdIGJlY29tZXMgW0hhcHBlbmVkXG4gICAgICAgIGhdLiAgSWYgW2Ygel0gY2FsbHMgW2Fib3J0IHQgYV0sIHRoZW4gdGhlIHJlc3VsdCBvZiBbZl0gaXMgaWdub3JlZCwgYW5kIFtzdGF0dXMgdF1cbiAgICAgICAgaXMgW0Fib3J0ZWQgYV0uXG5cbiAgICAgICAgSWYgW2Ygel0gcmFpc2VzLCB0aGVuIFtzdGF0dXMgdF0gZG9lcyBub3QgdHJhbnNpdGlvbiBhbmQgcmVtYWlucyBbU2NoZWR1bGVkX2F0XG4gICAgICAgIHRpbWVdLCBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBzZW50IHRvIHRoZSBtb25pdG9yIGluIGVmZmVjdCB3aGVuIFtydW5fYXRdIHdhc1xuICAgICAgICBjYWxsZWQuICopXG4gICAgdmFsIHJ1bl9hdCA6IFRpbWUudCAtPiAoJ3ogLT4gJ2gpIC0+ICd6IC0+IChfLCAnaCkgdFxuXG4gICAgdmFsIHJ1bl9hZnRlciA6IFRpbWUuU3Bhbi50IC0+ICgneiAtPiAnaCkgLT4gJ3ogLT4gKF8sICdoKSB0XG5cbiAgICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuQWJvcnRfcmVzdWx0XG5cbiAgICAoKiogW2Fib3J0IHRdIGNoYW5nZXMgW3N0YXR1cyB0XSB0byBbQWJvcnRlZF0gYW5kIHJldHVybnMgW09rXSwgdW5sZXNzIFt0XVxuICAgICAgICBwcmV2aW91c2x5IGhhcHBlbmVkIG9yIHdhcyBwcmV2aW91c2x5IGFib3J0ZWQuICopXG4gICAgdmFsIGFib3J0IDogKCdhLCAnaCkgdCAtPiAnYSAtPiAoJ2EsICdoKSBBYm9ydF9yZXN1bHQudFxuXG4gICAgKCoqIFthYm9ydF9leG4gdCBhXSByZXR1cm5zIFt1bml0XSBpZiBbYWJvcnQgdCBhID0gYE9rXSwgYW5kIG90aGVyd2lzZSByYWlzZXMuICopXG4gICAgdmFsIGFib3J0X2V4biA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gdW5pdFxuXG4gICAgKCoqIFthYm9ydF9pZl9wb3NzaWJsZSB0IGEgPSBpZ25vcmUgKGFib3J0IHQgYSldLiAqKVxuICAgIHZhbCBhYm9ydF9pZl9wb3NzaWJsZSA6ICgnYSwgXykgdCAtPiAnYSAtPiB1bml0XG5cbiAgICBtb2R1bGUgRmlyZWQgPSBUaW1lX3NvdXJjZS5FdmVudC5GaXJlZFxuXG4gICAgdmFsIGZpcmVkIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBGaXJlZC50IERlZmVycmVkLnRcblxuICAgIG1vZHVsZSBSZXNjaGVkdWxlX3Jlc3VsdCA9IFRpbWVfc291cmNlLkV2ZW50LlJlc2NoZWR1bGVfcmVzdWx0XG5cbiAgICAoKiogW3Jlc2NoZWR1bGVfYXQgdF0gYW5kIFtyZXNjaGVkdWxlX2FmdGVyIHRdIGNoYW5nZSB0aGUgdGltZSB0aGF0IFt0XSB3aWxsIGZpcmUsIGlmXG4gICAgICAgIHBvc3NpYmxlLCBhbmQgaWYgbm90LCBnaXZlIGEgcmVhc29uIHdoeS4gIExpa2UgW3J1bl9hdF0sIGlmIHRoZSByZXF1ZXN0ZWQgdGltZSBpc1xuICAgICAgICBpbiB0aGUgcGFzdCwgdGhlIGV2ZW50IHdpbGwgYmUgc2NoZWR1bGVkIHRvIHJ1biBpbW1lZGlhdGVseS4gIElmIFtyZXNjaGVkdWxlX2F0IHRcbiAgICAgICAgdGltZSA9IE9rXSwgdGhlbiBzdWJzZXF1ZW50bHkgW3NjaGVkdWxlZF9hdCB0ID0gdGltZV0uICAqKVxuICAgIHZhbCByZXNjaGVkdWxlX2F0IDogKCdhLCAnaCkgdCAtPiBUaW1lLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuXG4gICAgdmFsIHJlc2NoZWR1bGVfYWZ0ZXIgOiAoJ2EsICdoKSB0IC0+IFRpbWUuU3Bhbi50IC0+ICgnYSwgJ2gpIFJlc2NoZWR1bGVfcmVzdWx0LnRcblxuICAgICgqKiBbYXQgdGltZV0gICAgaXMgW3J1bl9hdCAgICB0aW1lIGlnbm9yZSAoKV0uXG4gICAgICAgIFthZnRlciB0aW1lXSBpcyBbcnVuX2FmdGVyIHRpbWUgaWdub3JlICgpXS5cblxuICAgICAgICBZb3Ugc2hvdWxkIGdlbmVyYWxseSBwcmVmZXIgdG8gdXNlIHRoZSBbcnVuXypdIGZ1bmN0aW9ucywgd2hpY2ggYWxsb3cgeW91IHRvXG4gICAgICAgIHN5bmNocm9ub3VzbHkgdXBkYXRlIHN0YXRlIHZpYSBhIHVzZXItc3VwcGxpZWQgZnVuY3Rpb24gd2hlbiB0aGUgZXZlbnRcbiAgICAgICAgdHJhbnNpdGlvbnMgdG8gW0hhcHBlbmVkXS4gIFRoYXQgaXMsIHRoZXJlIGlzIGFuIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW46XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IHJ1bl9hdCB0aW1lIGYgKCkgXX1cblxuICAgICAgICBhbmQ6XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IGF0IHRpbWUgaW5cbiAgICAgICAgICBmaXJlZCB0XG4gICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBIYXBwZW5lZCAoKSAtPiBmICgpXG4gICAgICAgICAgfCBBYm9ydGVkICgpIC0+ICgpIF19XG5cbiAgICAgICAgV2l0aCBbcnVuX2F0XSwgaWYgW3N0YXR1cyB0ID0gSGFwcGVuZWRdLCBvbmUga25vd3MgdGhhdCBbZl0gaGFzIHJ1bi4gIFdpdGggW2F0XVxuICAgICAgICBhbmQgW2ZpcmVkXSwgb25lIGRvZXMgbm90IGtub3cgd2hldGhlciBbZl0gaGFzIHlldCBydW47IGl0IG1heSBzdGlsbCBiZSBzY2hlZHVsZWRcbiAgICAgICAgdG8gcnVuLiAgVGh1cywgd2l0aCBbYXRdIGFuZCBbZmlyZWRdLCBpdCBpcyBlYXN5IHRvIGludHJvZHVjZSBhIHJhY2UuICBGb3JcbiAgICAgICAgZXhhbXBsZSwgY29uc2lkZXIgdGhlc2UgdHdvIGNvZGUgc25pcHBldHM6XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IEV2ZW50LmFmdGVyIChzZWMgMi4pIGluXG4gICAgICAgICAgdXBvbiAoRXZlbnQuZmlyZWQgdCkgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEFib3J0ZWQgKCkgLT4gKClcbiAgICAgICAgICAgIHwgSGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiVGltZXIgZmlyZWRcIik7XG4gICAgICAgICAgdXBvbiBkZWZlcnJlZF9ldmVudCAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBFdmVudC5hYm9ydCB0ICgpIHdpdGhcbiAgICAgICAgICAgIHwgT2sgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWRcIlxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIik7IF19XG5cbiAgICAgICAge1tcbiAgICAgICAgICBsZXQgdCA9IEV2ZW50LnJ1bl9hZnRlciAoc2VjIDIuKSBwcmludGYgXCJUaW1lciBmaXJlZFwiIGluXG4gICAgICAgICAgdXBvbiBkZWZlcnJlZF9ldmVudCAoZnVuICgpIC0+XG4gICAgICAgICAgICBtYXRjaCBFdmVudC5hYm9ydCB0ICgpIHdpdGhcbiAgICAgICAgICAgIHwgT2sgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWRcIlxuICAgICAgICAgICAgfCBQcmV2aW91c2x5X2Fib3J0ZWQgKCkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFByZXZpb3VzbHlfaGFwcGVuZWQgKCkgLT4gcHJpbnRmIFwiRXZlbnQgb2NjdXJyZWQgYWZ0ZXIgdGltZXIgZmlyZWRcIik7IF19XG5cbiAgICAgICAgSW4gYm90aCBzbmlwcGV0cywgaWYgW0V2ZW50LmFib3J0XSByZXR1cm5zIFtPa10sIFwiVGltZXIgZmlyZWRcIiBpcyBuZXZlciBwcmludGVkLlxuICAgICAgICBIb3dldmVyLCB0aGUgZmlyc3Qgc25pcHBldCBtaWdodCBwcmludCBcIkV2ZW50IG9jY3VycmVkIGFmdGVyIHRpbWVyIGZpcmVkXCIgYW5kIHRoZW5cbiAgICAgICAgXCJUaW1lciBmaXJlZFwiLiAgVGhpcyBjb25mdXNlZCBvcmRlcmluZyBjYW5ub3QgaGFwcGVuIHdpdGggW0V2ZW50LnJ1bl9hZnRlcl0uICopXG4gICAgdmFsIGF0IDogVGltZS50IC0+IChfLCB1bml0KSB0XG5cbiAgICB2YWwgYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoXywgdW5pdCkgdFxuICBlbmRcblxuICAoKiogW2F0X3ZhcnlpbmdfaW50ZXJ2YWxzIGYgP3N0b3BdIHJldHVybnMgYSBzdHJlYW0gd2hvc2UgbmV4dCBlbGVtZW50IGJlY29tZXNcbiAgICAgIGRldGVybWluZWQgYnkgY2FsbGluZyBbZiAoKV0gYW5kIHdhaXRpbmcgZm9yIHRoYXQgYW1vdW50IG9mIHRpbWUsIGFuZCB0aGVuIGxvb3BpbmdcbiAgICAgIHRvIGRldGVybWluZSBzdWJzZXF1ZW50IGVsZW1lbnRzLiAgVGhlIHN0cmVhbSB3aWxsIGVuZCBhZnRlciBbc3RvcF0gYmVjb21lc1xuICAgICAgZGV0ZXJtaW5lZC4gKilcbiAgdmFsIGF0X3ZhcnlpbmdfaW50ZXJ2YWxzXG4gICAgOiAgP3N0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gKHVuaXQgLT4gVGltZS5TcGFuLnQpXG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuXG4gICgqKiBbYXRfaW50ZXJ2YWxzIGludGVydmFsID9zdGFydCA/c3RvcF0gcmV0dXJucyBhIHN0cmVhbSB3aG9zZSBlbGVtZW50cyB3aWxsIGJlY29tZVxuICAgICAgZGV0ZXJtaW5lZCBhdCBub25uZWdhdGl2ZSBpbnRlZ2VyIG11bHRpcGxlcyBvZiBbaW50ZXJ2YWxdIGFmdGVyIHRoZSBbc3RhcnRdIHRpbWUsXG4gICAgICB1bnRpbCBbc3RvcF0gYmVjb21lcyBkZXRlcm1pbmVkOlxuXG4gICAgICB7dlxuICAgICAgICBzdGFydCArIDAgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDEgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDIgKiBpbnRlcnZhbFxuICAgICAgICBzdGFydCArIDMgKiBpbnRlcnZhbFxuICAgICAgICAuLi5cbiAgICAgIHZ9XG5cbiAgICAgIE5vdGUgdGhhdCBvbmx5IGVsZW1lbnRzIHRoYXQgYXJlIHN0cmljdGx5IGluIHRoZSBmdXR1cmUgZXZlciBiZWNvbWUgZGV0ZXJtaW5lZC5cbiAgICAgIEluIHBhcnRpY3VsYXIsIGlmIFtzdGFydF0gaXMgbm90IGluIHRoZSBmdXR1cmUsIG9yIFtzdGFydF0gaXMgbm90IHByb3ZpZGVkLFxuICAgICAgdGhlbiB0aGVyZSB3aWxsIGJlIG5vIGVsZW1lbnQgYmVmb3JlIHRoZSBbaW50ZXJ2YWxdIGhhcyBwYXNzZWQuXG5cbiAgICAgIElmIHRoZSBpbnRlcnZhbCBpcyB0b28gc21hbGwgb3IgdGhlIENQVSBpcyB0b28gbG9hZGVkLCBbYXRfaW50ZXJ2YWxzXSB3aWxsIHNraXBcbiAgICAgIHVudGlsIHRoZSBuZXh0IHVwY29taW5nIG11bHRpcGxlIG9mIFtpbnRlcnZhbF0gYWZ0ZXIgW3N0YXJ0XS4gKilcbiAgdmFsIGF0X2ludGVydmFsc1xuICAgIDogID9zdGFydDpUaW1lLnRcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+IHVuaXQgQXN5bmNfc3RyZWFtLnRcblxuICAoKiogW2V2ZXJ5JyA/c3RhcnQgP3N0b3Agc3BhbiBmXSBydW5zIFtmICgpXSBldmVyeSBbc3Bhbl0gYW1vdW50IG9mIHRpbWUgc3RhcnRpbmcgd2hlblxuICAgICAgW3N0YXJ0XSBiZWNvbWVzIGRldGVybWluZWQgYW5kIHN0b3BwaW5nIHdoZW4gW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZC4gIFtldmVyeSddXG4gICAgICB3YWl0cyB1bnRpbCB0aGUgb3V0Y29tZSBvZiBbZiAoKV0gYmVjb21lcyBkZXRlcm1pbmVkIGJlZm9yZSB3YWl0aW5nIGZvciB0aGUgbmV4dFxuICAgICAgW3NwYW5dLlxuXG4gICAgICBJdCBpcyBndWFyYW50ZWVkIHRoYXQgaWYgW3N0b3BdIGJlY29tZXMgZGV0ZXJtaW5lZCwgZXZlbiBkdXJpbmcgZXZhbHVhdGlvbiBvZiBbZl0sXG4gICAgICB0aGVuIFtmXSB3aWxsIG5vdCBiZSBjYWxsZWQgYWdhaW4gYnkgYSBzdWJzZXF1ZW50IGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC5cblxuICAgICAgSXQgaXMgYW4gZXJyb3IgZm9yIFtzcGFuXSB0byBiZSBub25wb3NpdGl2ZS5cblxuICAgICAgW2NvbnRpbnVlX29uX2Vycm9yXSBjb250cm9scyB3aGF0IHNob3VsZCBoYXBwZW4gaWYgW2ZdIHJhaXNlcyBhbiBleGNlcHRpb24uXG4gICAgICBXaXRoIFt+Y29udGludWVfb25fZXJyb3I6ZmFsc2VdLCBpdGVyYXRpb24gb25seSBjb250aW51ZXMgaWYgW2ZdIHN1Y2Nlc3NmdWxseVxuICAgICAgcmV0dXJucyBhIGRlZmVycmVkIGFuZCB0aGF0IGRlZmVycmVkIGlzIGRldGVybWluZWQuXG4gICAgICBXaXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0sIGl0ZXJhdGlvbiBhbHNvIGNvbnRpbnVlcyBpZiBbZl0gcmFpc2VzIGFuIGV4Y2VwdGlvbi5cbiAgICAgIElmIFtmXSByYWlzZXMgYW4gZXhjZXB0aW9uIGFzeW5jaHJvbm91c2x5LCB0aGlzIG1heSBjYXVzZSB1cyB0byBwcm9jZWVkIHdpdGggdGhlXG4gICAgICBuZXh0IGl0ZXJhdGlvbiB3aGlsZSB0aGUgcHJldmlvdXMgY2FsbCB0byBbZl0gaXMgc3RpbGwgcnVubmluZy5cblxuICAgICAgRXhjZXB0aW9ucyByYWlzZWQgYnkgW2ZdIGFyZSBhbHdheXMgc2VudCB0byB0aGUgbW9uaXRvciBpbiBlZmZlY3Qgd2hlbiBbZXZlcnknXSB3YXNcbiAgICAgIGNhbGxlZCwgZXZlbiB3aXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0uXG5cbiAgICAgIElmIFtmaW5pc2hlZF0gaXMgc3VwcGxpZWQsIFtldmVyeSddIHdpbGwgZmlsbCBpdCBvbmNlIGFsbCBvZiB0aGUgZm9sbG93aW5nIGJlY29tZVxuICAgICAgZGV0ZXJtaW5lZDogW3N0YXJ0XSwgW3N0b3BdLCBhbmQgdGhlIG91dGNvbWUgb2YgdGhlIGZpbmFsIGNhbGwgdG8gW2ZdLiAqKVxuICB2YWwgZXZlcnknXG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gP2ZpbmlzaGVkOnVuaXQgSXZhci50XG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZXZlcnkgP3N0YXJ0ID9zdG9wIHNwYW4gZl0gaXNcbiAgICAgIFtldmVyeScgP3N0YXJ0ID9zdG9wIHNwYW4gKGZ1biAoKSAtPiBmICgpOyByZXR1cm4gKCkpXS4gKilcbiAgdmFsIGV2ZXJ5XG4gICAgOiAgP3N0YXJ0OnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbcmV0dXJuICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0KVxuICAgIC0+IHVuaXRcblxuICAoKiogW3J1bl9hdF9pbnRlcnZhbHMnID9zdGFydCA/c3RvcCBzcGFuIGZdIHJ1bnMgW2YoKV0gYXQgaW5jcmVtZW50cyBvZiBbc3RhcnQgKyBpICpcbiAgICAgIHNwYW5dIGZvciBub25uZWdhdGl2ZSBpbnRlZ2VycyBbaV0sIHVudGlsIFtzdG9wXSBiZWNvbWVzIGRldGVybWluZWQuXG4gICAgICBJZiB0aGUgcmVzdWx0IG9mIFtmXSBpcyBub3QgZGV0ZXJtaW5lZCBmYXN0IGVub3VnaCB0aGVuIHRoZSBuZXh0IGludGVydmFsKHMpXG4gICAgICBhcmUgc2tpcHBlZCBzbyB0aGF0IHRoZXJlIGFyZSBuZXZlciBtdWx0aXBsZSBjb25jdXJyZW50IGludm9jYXRpb25zIG9mIFtmXSBpblxuICAgICAgZmxpZ2h0LlxuXG4gICAgICBFeGNlcHRpb25zIHJhaXNlZCBieSBbZl0gYXJlIGFsd2F5cyBzZW50IHRvIG1vbml0b3IgaW4gZWZmZWN0IHdoZW5cbiAgICAgIFtydW5fYXRfaW50ZXJ2YWxzJ10gd2FzIGNhbGxlZCwgZXZlbiB3aXRoIFt+Y29udGludWVfb25fZXJyb3I6dHJ1ZV0uICopXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzJ1xuICAgIDogID9zdGFydDpUaW1lLnQgKCoqIGRlZmF1bHQgaXMgW1RpbWUubm93ICgpXSAqKVxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudCAoKiogZGVmYXVsdCBpcyBbRGVmZXJyZWQubmV2ZXIgKCldICopXG4gICAgLT4gP2NvbnRpbnVlX29uX2Vycm9yOmJvb2wgKCoqIGRlZmF1bHQgaXMgW3RydWVdICopXG4gICAgLT4gVGltZS5TcGFuLnRcbiAgICAtPiAodW5pdCAtPiB1bml0IERlZmVycmVkLnQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIHNwYW4gZl0gaXMgZXF1aXZhbGVudCB0bzpcblxuICAgICAge1tcbiAgICAgICAgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuXG4gICAgICAgICAgKGZ1biAoKSAtPiBmICgpOyByZXR1cm4gKCkpIF19ICopXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuXG4gICgqKiBbZHVyYXRpb25fb2YgZl0gaW52b2tlcyBbZiAoKV0gYW5kIG1lYXN1cmVzIGhvdyBsb25nIGl0IHRha2VzIGZyb20gdGhlIGludm9jYXRpb25cbiAgICAgIHRvIGFmdGVyIHRoZSBkZWZlcnJlZCBpcyBkZXRlcm1pbmVkLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIG1lYXN1cmVtZW50IGlzIG5vdCBleGFjdDsgYmVjYXVzZSBpdCBpbnZvbHZlcyBhbiBhZGRpdGlvbmFsIG1hcCBvbiB0aGVcbiAgICAgIGRlZmVycmVkLCB0aGUgdGltaW5nIGFsc28gaW5jbHVkZXMgdGhlIGR1cmF0aW9uIG9mIGpvYnMgaW4gdGhlIGpvYiBxdWV1ZSB3aGVuIFtmICgpXVxuICAgICAgaXMgZGV0ZXJtaW5lZC4gKilcbiAgdmFsIGR1cmF0aW9uX29mIDogKHVuaXQgLT4gJ2EgRGVmZXJyZWQudCkgLT4gKCdhICogVGltZS5TcGFuLnQpIERlZmVycmVkLnRcbmVuZFxuXG4oKiogW0Nsb2NrX2RlcHJlY2F0ZWRdIGlzIHVzZWQgaW4gW1JlcXVpcmVfZXhwbGljaXRfdGltZV9zb3VyY2VdIHRvIGNyZWF0ZSBhIGNsb2NrXG4gICAgbW9kdWxlIGluIHdoaWNoIGFsbCBmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQuICopXG5tb2R1bGUgdHlwZSBDbG9ja19kZXByZWNhdGVkID0gc2lnXG4gIG1vZHVsZSBPcl90aW1lb3V0ID0gT3JfdGltZW91dFxuXG4gIG1vZHVsZSBUaW1lIDogc2lnXG4gICAgbW9kdWxlIFNwYW4gOiBzaWdcbiAgICAgIHR5cGUgdFxuICAgIGVuZFxuXG4gICAgdHlwZSB0XG4gIGVuZFxuXG4gIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCdhIC0+IHVuaXQpIC0+ICdhIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYWZ0ZXIgOiBUaW1lLlNwYW4udCAtPiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGF0IDogVGltZS50IC0+IHVuaXQgRGVmZXJyZWQudCBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGFmdGVyIDogVGltZS5TcGFuLnQgLT4gdW5pdCBEZWZlcnJlZC50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgd2l0aF90aW1lb3V0IDogVGltZS5TcGFuLnQgLT4gJ2EgRGVmZXJyZWQudCAtPiAnYSBPcl90aW1lb3V0LnQgRGVmZXJyZWQudFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgbW9kdWxlIEV2ZW50IDogc2lnXG4gICAgdHlwZSAoJ2EsICdoKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgdHlwZSB0X3VuaXQgPSAodW5pdCwgdW5pdCkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZVxuICAgICAgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbiAgICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBzY2hlZHVsZWRfYXQgOiAoXywgXykgdCAtPiBUaW1lLnRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgU3RhdHVzIDogc2lnXG4gICAgICB0eXBlICgnYSwgJ2gpIHQgPVxuICAgICAgICB8IEFib3J0ZWQgb2YgJ2FcbiAgICAgICAgfCBIYXBwZW5lZCBvZiAnaFxuICAgICAgICB8IFNjaGVkdWxlZF9hdCBvZiBUaW1lLnRcbiAgICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gICAgZW5kXG5cbiAgICB2YWwgc3RhdHVzIDogKCdhLCAnaCkgdCAtPiAoJ2EsICdoKSBTdGF0dXMudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBydW5fYXQgOiBUaW1lLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICB2YWwgcnVuX2FmdGVyIDogVGltZS5TcGFuLnQgLT4gKCd6IC0+ICdoKSAtPiAneiAtPiAoXywgJ2gpIHRcbiAgICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgICBtb2R1bGUgQWJvcnRfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuQWJvcnRfcmVzdWx0XG5cbiAgICB2YWwgYWJvcnQgOiAoJ2EsICdoKSB0IC0+ICdhIC0+ICgnYSwgJ2gpIEFib3J0X3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGFib3J0X2V4biA6ICgnYSwgJ2gpIHQgLT4gJ2EgLT4gdW5pdFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhYm9ydF9pZl9wb3NzaWJsZSA6ICgnYSwgXykgdCAtPiAnYSAtPiB1bml0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIEZpcmVkID0gVGltZV9zb3VyY2UuRXZlbnQuRmlyZWRcblxuICAgIHZhbCBmaXJlZCA6ICgnYSwgJ2gpIHQgLT4gKCdhLCAnaCkgRmlyZWQudCBEZWZlcnJlZC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgbW9kdWxlIFJlc2NoZWR1bGVfcmVzdWx0ID0gVGltZV9zb3VyY2UuRXZlbnQuUmVzY2hlZHVsZV9yZXN1bHRcblxuICAgIHZhbCByZXNjaGVkdWxlX2F0IDogKCdhLCAnaCkgdCAtPiBUaW1lLnQgLT4gKCdhLCAnaCkgUmVzY2hlZHVsZV9yZXN1bHQudFxuICAgIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCByZXNjaGVkdWxlX2FmdGVyIDogKCdhLCAnaCkgdCAtPiBUaW1lLlNwYW4udCAtPiAoJ2EsICdoKSBSZXNjaGVkdWxlX3Jlc3VsdC50XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gICAgdmFsIGF0IDogVGltZS50IC0+IChfLCB1bml0KSB0IFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICAgIHZhbCBhZnRlciA6IFRpbWUuU3Bhbi50IC0+IChfLCB1bml0KSB0XG4gICAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuICBlbmRcblxuICB2YWwgYXRfdmFyeWluZ19pbnRlcnZhbHNcbiAgICA6ICA/c3RvcDp1bml0IERlZmVycmVkLnRcbiAgICAtPiAodW5pdCAtPiBUaW1lLlNwYW4udClcbiAgICAtPiB1bml0IEFzeW5jX3N0cmVhbS50XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudFxuICAgIC0+ID9zdG9wOnVuaXQgRGVmZXJyZWQudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gdW5pdCBBc3luY19zdHJlYW0udFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGV2ZXJ5J1xuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+ID9maW5pc2hlZDp1bml0IEl2YXIudFxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBldmVyeVxuICAgIDogID9zdGFydDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW3JldHVybiAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdClcbiAgICAtPiB1bml0XG4gIFtAQGRlcHJlY2F0ZWQgXCJbc2luY2UgMjAxNi0wMl0gVXNlIFtUaW1lX3NvdXJjZV1cIl1cblxuICB2YWwgcnVuX2F0X2ludGVydmFscydcbiAgICA6ICA/c3RhcnQ6VGltZS50ICgqKiBkZWZhdWx0IGlzIFtUaW1lLm5vdyAoKV0gKilcbiAgICAtPiA/c3RvcDp1bml0IERlZmVycmVkLnQgKCoqIGRlZmF1bHQgaXMgW0RlZmVycmVkLm5ldmVyICgpXSAqKVxuICAgIC0+ID9jb250aW51ZV9vbl9lcnJvcjpib29sICgqKiBkZWZhdWx0IGlzIFt0cnVlXSAqKVxuICAgIC0+IFRpbWUuU3Bhbi50XG4gICAgLT4gKHVuaXQgLT4gdW5pdCBEZWZlcnJlZC50KVxuICAgIC0+IHVuaXRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuXG4gIHZhbCBydW5fYXRfaW50ZXJ2YWxzXG4gICAgOiAgP3N0YXJ0OlRpbWUudCAoKiogZGVmYXVsdCBpcyBbVGltZS5ub3cgKCldICopXG4gICAgLT4gP3N0b3A6dW5pdCBEZWZlcnJlZC50ICgqKiBkZWZhdWx0IGlzIFtEZWZlcnJlZC5uZXZlciAoKV0gKilcbiAgICAtPiA/Y29udGludWVfb25fZXJyb3I6Ym9vbCAoKiogZGVmYXVsdCBpcyBbdHJ1ZV0gKilcbiAgICAtPiBUaW1lLlNwYW4udFxuICAgIC0+ICh1bml0IC0+IHVuaXQpXG4gICAgLT4gdW5pdFxuICBbQEBkZXByZWNhdGVkIFwiW3NpbmNlIDIwMTYtMDJdIFVzZSBbVGltZV9zb3VyY2VdXCJdXG5cbiAgdmFsIGR1cmF0aW9uX29mIDogKHVuaXQgLT4gJ2EgRGVmZXJyZWQudCkgLT4gKCdhICogVGltZS5TcGFuLnQpIERlZmVycmVkLnRcbiAgW0BAZGVwcmVjYXRlZCBcIltzaW5jZSAyMDE2LTAyXSBVc2UgW1RpbWVfc291cmNlXVwiXVxuZW5kXG5cbigqKiBAaW5saW5lICopXG5pbmNsdWRlIChcbnN0cnVjdFxuICBbQEBAd2FybmluZyBcIi0zXCJdXG5cbiAgbW9kdWxlIF8gKEMgOiBDbG9jaykgOiBDbG9ja19kZXByZWNhdGVkID0gQ1xuXG4gIG1vZHVsZSBfIChDIDogQ2xvY2tfZGVwcmVjYXRlZCkgOiBDbG9jayA9IENcbmVuZCA6XG5zaWcgZW5kKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5cbm1vZHVsZSB0eXBlIENsb2NrID0gQ2xvY2tfaW50Zi5DbG9ja1xubW9kdWxlIHR5cGUgQ2xvY2tfZGVwcmVjYXRlZCA9IENsb2NrX2ludGYuQ2xvY2tfZGVwcmVjYXRlZFxuXG5tb2R1bGUgT3JfdGltZW91dCA9IENsb2NrX2ludGYuT3JfdGltZW91dFxubW9kdWxlIFNjaGVkdWxlciA9IFNjaGVkdWxlcjFcblxubGV0IHRpbWVfc291cmNlICgpID0gKFNjaGVkdWxlci50ICgpKS50aW1lX3NvdXJjZSB8PiBUaW1lX3NvdXJjZS5vZl9zeW5jaHJvbm91c1xubGV0IGFmdGVyIHNwYW4gPSBUaW1lX3NvdXJjZS5hZnRlciAodGltZV9zb3VyY2UgKCkpIHNwYW5cbmxldCBhdCB0aW1lID0gVGltZV9zb3VyY2UuYXQgKHRpbWVfc291cmNlICgpKSB0aW1lXG5cbmxldCBhdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCBjb21wdXRlX3NwYW4gPVxuICBUaW1lX3NvdXJjZS5hdF92YXJ5aW5nX2ludGVydmFscyA/c3RvcCAodGltZV9zb3VyY2UgKCkpIGNvbXB1dGVfc3BhblxuOztcblxubGV0IGF0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgaW50ZXJ2YWwgPVxuICBUaW1lX3NvdXJjZS5hdF9pbnRlcnZhbHMgP3N0YXJ0ID9zdG9wICh0aW1lX3NvdXJjZSAoKSkgaW50ZXJ2YWxcbjs7XG5cbmxldCBldmVyeScgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciA/ZmluaXNoZWQgc3BhbiBmID1cbiAgVGltZV9zb3VyY2UuZXZlcnknID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgP2ZpbmlzaGVkICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgZXZlcnkgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBzcGFuIGYgPVxuICBUaW1lX3NvdXJjZS5ldmVyeSA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmXG47O1xuXG5sZXQgcnVuX2FmdGVyIHNwYW4gZiBhID0gVGltZV9zb3VyY2UucnVuX2FmdGVyICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBmIGFcbmxldCBydW5fYXQgdGltZSBmIGEgPSBUaW1lX3NvdXJjZS5ydW5fYXQgKHRpbWVfc291cmNlICgpKSB0aW1lIGYgYVxuXG5sZXQgcnVuX2F0X2ludGVydmFscyA/c3RhcnQgP3N0b3AgP2NvbnRpbnVlX29uX2Vycm9yIGludGVydmFsIGYgPVxuICBUaW1lX3NvdXJjZS5ydW5fYXRfaW50ZXJ2YWxzID9zdGFydCA/c3RvcCA/Y29udGludWVfb25fZXJyb3IgKHRpbWVfc291cmNlICgpKSBpbnRlcnZhbCBmXG47O1xuXG5sZXQgcnVuX2F0X2ludGVydmFscycgP3N0YXJ0ID9zdG9wID9jb250aW51ZV9vbl9lcnJvciBpbnRlcnZhbCBmID1cbiAgVGltZV9zb3VyY2UucnVuX2F0X2ludGVydmFscydcbiAgICA/c3RhcnRcbiAgICA/c3RvcFxuICAgID9jb250aW51ZV9vbl9lcnJvclxuICAgICh0aW1lX3NvdXJjZSAoKSlcbiAgICBpbnRlcnZhbFxuICAgIGZcbjs7XG5cbmxldCB3aXRoX3RpbWVvdXQgc3BhbiBkID0gVGltZV9zb3VyY2Uud2l0aF90aW1lb3V0ICh0aW1lX3NvdXJjZSAoKSkgc3BhbiBkXG5sZXQgZHVyYXRpb25fb2YgZiA9IFRpbWVfc291cmNlLmR1cmF0aW9uX29mICh0aW1lX3NvdXJjZSAoKSkgZlxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX3NvdXJjZS5FdmVudFxuXG4gIGxldCBhZnRlciBzcGFuID0gYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuXG4gIGxldCBydW5fYWZ0ZXIgc3BhbiBmIGEgPSBydW5fYWZ0ZXIgKHRpbWVfc291cmNlICgpKSBzcGFuIGYgYVxuICBsZXQgYXQgdGltZSA9IGF0ICh0aW1lX3NvdXJjZSAoKSkgdGltZVxuICBsZXQgcnVuX2F0IHRpbWUgZiB6ID0gcnVuX2F0ICh0aW1lX3NvdXJjZSAoKSkgdGltZSBmIHpcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgRGVmZXJyZWQuY3JlYXRlIChmdW4gcmVzdWx0IC0+XG4gICAgbGV0IHJlYyBsb29wIGkgYiA9XG4gICAgICBpZiBpID0gQXJyYXkubGVuZ3RoIHRcbiAgICAgIHRoZW4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICBlbHNlIGYgaSBiIHQuKGkpID4+PiBmdW4gYiAtPiBsb29wIChpICsgMSkgYlxuICAgIGluXG4gICAgbG9vcCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgbGV0JW1hcCBicyA9IGZvbGRpIHQgfmluaXQ6W10gfmY6KGZ1biBpIGJzIGEgLT4gZiBpIGEgPj58IGZ1biBiIC0+IGIgOjogYnMpIGluXG4gIEFycmF5Lm9mX2xpc3QgKENvcmUuTGlzdC5yZXYgYnMpXG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbF91bml0IChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IGZvbGRpIHQgfmluaXQ6KCkgfmY6KGZ1biBpICgpIHggLT4gZiBpIHgpXG47O1xuXG5sZXQgbWFwaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgbWF0Y2ggaG93IHdpdGhcbiAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgYWxsIChBcnJheS5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICB8IGBTZXF1ZW50aWFsIC0+IHNlcW1hcGkgdCB+ZlxuOztcblxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCBib29scyA9IG1hcGkgdCA/aG93IH5mIGluXG4gIEFycmF5Lm9mX2xpc3RfcmV2XG4gICAgKEFycmF5LmZvbGQyX2V4biB0IGJvb2xzIH5pbml0OltdIH5mOihmdW4gYWMgeCBiIC0+IGlmIGIgdGhlbiB4IDo6IGFjIGVsc2UgYWMpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpID9ob3cgdCB+ZiA9IG1hcGkgdCA/aG93IH5mID4+fCBBcnJheS5maWx0ZXJfb3B0XG5cbmxldCBjb25jYXRfbWFwaSA/aG93IHQgfmYgPVxuICBsZXQlbWFwIHQgPSBtYXBpIHQgP2hvdyB+ZiBpblxuICBBcnJheS5jb25jYXQgKEFycmF5LnRvX2xpc3QgdClcbjs7XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdFxuICAgIHRoZW4gcmV0dXJuIE5vbmVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoJWJpbmQgZiBpIHQuKGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggKGkgKyAxKVxuICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgYXV4IDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlciA/aG93IHQgfmYgPSBpdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IG1hcCA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlciA/aG93IHQgfmYgPSBmaWx0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgY29uY2F0X21hcCA/aG93IHQgfmYgPSBjb25jYXRfbWFwaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbmRfbWFwIHQgfmYgPSBmaW5kX21hcGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZvcl9hbGwgdCB+ZiA9IGZvcl9hbGxpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGluaXQgP2hvdyBuIH5mID0gbWFwID9ob3cgKEFycmF5LmluaXQgbiB+ZjpGbi5pZCkgfmZcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgZm9sZGkgdCB+aW5pdCB+ZiA9XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgIGxldCByZWMgbG9vcCB0IGkgYiA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gSXZhci5maWxsIHJlc3VsdCBiXG4gICAgICB8IHggOjogeHMgLT4gZiBpIGIgeCA+Pj4gZnVuIGIgLT4gbG9vcCB4cyAoaSArIDEpIGJcbiAgICBpblxuICAgIGxvb3AgdCAwIGluaXQpXG47O1xuXG5sZXQgZm9sZCB0IH5pbml0IH5mID0gZm9sZGkgdCB+aW5pdCB+ZjooZnVuIF8gYSB4IC0+IGYgYSB4KVxuXG5sZXQgc2VxbWFwaSB0IH5mID1cbiAgZm9sZGkgdCB+aW5pdDpbXSB+ZjooZnVuIGkgYnMgYSAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBhIGluXG4gICAgYiA6OiBicylcbiAgPj58IExpc3QucmV2XG47O1xuXG5sZXQgYWxsIGRzID0gc2VxbWFwaSBkcyB+ZjooZnVuIF8geCAtPiB4KVxubGV0IGFsbF91bml0IGRzID0gRGVmZXJyZWQuaWdub3JlX20gKGZvbGQgZHMgfmluaXQ6KCkgfmY6KGZ1biAoKSBkIC0+IGQpKVxuXG5sZXQgaXRlcmkgPyhob3cgPSBgU2VxdWVudGlhbCkgdCB+ZiA9XG4gIG1hdGNoIGhvdyB3aXRoXG4gIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgIGFsbF91bml0IChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbjs7XG5cbmxldCBtYXBpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IChgUGFyYWxsZWwgfCBgTWF4X2NvbmN1cnJlbnRfam9icyBfKSBhcyBob3cgLT5cbiAgICBhbGwgKExpc3QubWFwaSB0IH5mOih1bnN0YWdlIChUaHJvdHRsZS5tb25hZF9zZXF1ZW5jZV9ob3cyIH5ob3cgfmYpKSlcbiAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbjs7XG5cbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gIGxldCVtYXAgYm9vbHMgPSBtYXBpIHQgP2hvdyB+ZiBpblxuICBMaXN0LnJldiAoTGlzdC5mb2xkMl9leG4gdCBib29scyB+aW5pdDpbXSB+ZjooZnVuIGFjIHggYiAtPiBpZiBiIHRoZW4geCA6OiBhYyBlbHNlIGFjKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwaSA/aG93IHQgfmYgPSBtYXBpIHQgP2hvdyB+ZiA+PnwgTGlzdC5maWx0ZXJfb3B0XG5sZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbmxldCBmaW5kX21hcGkgdCB+ZiA9XG4gIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBbXSAtPiByZXR1cm4gTm9uZVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSBoZCB3aXRoXG4gICAgICAgfCBOb25lIC0+IGZpbmRfbWFwaSB0bCB+ZiAoaSArIDEpXG4gICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgaW5cbiAgZmluZF9tYXBpIHQgfmYgMFxuOztcblxubGV0IGZpbmRpIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgIGlmIGIgdGhlbiBTb21lIChpLCBlbHQpIGVsc2UgTm9uZSlcbjs7XG5cbmxldCBmaW5kIHQgfmYgPVxuICBmaW5kX21hcGkgdCB+ZjooZnVuIF8gZWx0IC0+XG4gICAgbGV0JW1hcCBiID0gZiBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuOztcblxubGV0IGV4aXN0c2kgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gdHJ1ZVxuICB8IE5vbmUgLT4gZmFsc2Vcbjs7XG5cbmxldCBmb3JfYWxsaSB0IH5mID1cbiAgbWF0Y2glbWFwXG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgd2l0aFxuICB8IFNvbWUgKCkgLT4gZmFsc2VcbiAgfCBOb25lIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyID9ob3cgdCB+ZiA9IGl0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gZmlsdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCA/aG93IG4gfmYgPSBtYXAgP2hvdyAoTGlzdC5pbml0IG4gfmY6Rm4uaWQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxuXG50eXBlICgnYSwgJ2IsICdjKSB0ID0gKCdhLCAnYiwgJ2MpIE1hcC50XG5cbmxldCBjaGFuZ2UgdCBrIH5mID1cbiAgbGV0JW1hcCBvcHQgPSBmIChNYXAuZmluZCB0IGspIGluXG4gIE1hcC5jaGFuZ2UgdCBrIH5mOihmdW4gXyAtPiBvcHQpXG47O1xuXG5sZXQgdXBkYXRlIHQgayB+ZiA9XG4gIGxldCVtYXAgZGF0YSA9IGYgKE1hcC5maW5kIHQgaykgaW5cbiAgTWFwLnNldCB0IH5rZXk6ayB+ZGF0YVxuOztcblxubGV0IGl0ZXJfa2V5cyA/aG93IHQgfmYgPSBMaXN0Lml0ZXIgP2hvdyAoTWFwLmtleXMgdCkgfmZcbmxldCBpdGVyID9ob3cgdCB+ZiA9IExpc3QuaXRlciA/aG93IChNYXAuZGF0YSB0KSB+ZlxubGV0IGl0ZXJpID9ob3cgdCB+ZiA9IExpc3QuaXRlciA/aG93IChNYXAudG9fYWxpc3QgdCkgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEpXG5cbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBsZXQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgPVxuICAgIE1hcC5mb2xkX3JpZ2h0IHQgfmluaXQ6W10gfmY6KGZ1biB+a2V5IH5kYXRhIGFsaXN0IC0+IChrZXksIGRhdGEpIDo6IGFsaXN0KVxuICBpblxuICBMaXN0LmZvbGQgYWxpc3RfaW5faW5jcmVhc2luZ19rZXlfb3JkZXIgfmluaXQgfmY6KGZ1biBhYyAoa2V5LCBkYXRhKSAtPiBmIH5rZXkgfmRhdGEgYWMpXG47O1xuXG5sZXQgZm9sZF9yaWdodCB0IH5pbml0IH5mID1cbiAgbGV0IGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyID1cbiAgICBNYXAuZm9sZCB0IH5pbml0OltdIH5mOihmdW4gfmtleSB+ZGF0YSBhbGlzdCAtPiAoa2V5LCBkYXRhKSA6OiBhbGlzdClcbiAgaW5cbiAgTGlzdC5mb2xkIGFsaXN0X2luX2RlY3JlYXNpbmdfa2V5X29yZGVyIH5pbml0IH5mOihmdW4gYWMgKGtleSwgZGF0YSkgLT4gZiB+a2V5IH5kYXRhIGFjKVxuOztcblxubW9kdWxlIEpvYiA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IsICdjKSB0ID1cbiAgICB7IGtleSA6ICdhXG4gICAgOyBkYXRhIDogJ2JcbiAgICA7IG11dGFibGUgcmVzdWx0IDogJ2Mgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5lbmRcblxubGV0IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZiA9XG4gIGxldCBjb21wYXJhdG9yID0gTWFwLmNvbXBhcmF0b3IgdCBpblxuICBsZXQgc2VxdWVuY2UgPSBNYXAudG9fc2VxdWVuY2Ugfm9yZGVyOmBJbmNyZWFzaW5nX2tleSB0IGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGRcbiAgICAgIHNlcXVlbmNlXG4gICAgICB+aW5pdDpCYXNlLk1hcC5Vc2luZ19jb21wYXJhdG9yLlRyZWUuQnVpbGRfaW5jcmVhc2luZy5lbXB0eVxuICAgICAgfmY6KGZ1biBzIChrZXksIGRhdGEpIH5rIC0+XG4gICAgICAgIHVwb24gKGYgfmtleSB+ZGF0YSkgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGsgc1xuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIEJhc2UuTWFwLlVzaW5nX2NvbXBhcmF0b3IuVHJlZS5CdWlsZF9pbmNyZWFzaW5nLmFkZF9leG5cbiAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgfmRhdGFcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBrIHMpKVxuICAgICAgfmZpbmlzaDooZnVuIHggLT5cbiAgICAgICAgSXZhci5maWxsXG4gICAgICAgICAgaXZhclxuICAgICAgICAgIChNYXAuVXNpbmdfY29tcGFyYXRvci5vZl90cmVlXG4gICAgICAgICAgICAgfmNvbXBhcmF0b3JcbiAgICAgICAgICAgICAoQmFzZS5NYXAuVXNpbmdfY29tcGFyYXRvci5UcmVlLkJ1aWxkX2luY3JlYXNpbmcudG9fdHJlZSB4KSkpKVxuOztcblxubGV0IGZpbHRlcl9tYXBpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+IGZpbHRlcl9tYXBpX3NlcXVlbnRpYWwgdCB+ZlxuICB8IGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8gLT5cbiAgICBsZXQgam9icyA9IHJlZiBbXSBpblxuICAgIGxldCBqb2JfbWFwID1cbiAgICAgIE1hcC5tYXBpIHQgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgIGxldCBqb2IgPSB7IEpvYi5rZXk7IGRhdGE7IHJlc3VsdCA9IE5vbmUgfSBpblxuICAgICAgICBqb2JzIDo9IGpvYiA6OiAham9icztcbiAgICAgICAgam9iKVxuICAgIGluXG4gICAgbGV0JW1hcCAoKSA9XG4gICAgICBMaXN0Lml0ZXIgfmhvdyAoQmFzZS5MaXN0LnJldiAham9icykgfmY6KGZ1bmN0aW9uXG4gICAgICAgIHwgeyBKb2Iua2V5OyBkYXRhOyByZXN1bHQgPSBfIH0gYXMgam9iIC0+XG4gICAgICAgICAgbGV0JW1hcCB4ID0gZiB+a2V5IH5kYXRhIGluXG4gICAgICAgICAgam9iLnJlc3VsdCA8LSB4KVxuICAgIGluXG4gICAgTWFwLmZpbHRlcl9tYXAgam9iX21hcCB+ZjpKb2IucmVzdWx0XG47O1xuXG5sZXQgZmlsdGVyX21hcCA/aG93IHQgfmYgPSBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgZmlsdGVyX2tleXMgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYga2V5IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZGF0YSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmlsdGVyID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIH5rZXk6XyB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYgZGF0YSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgYiA9IGYgfmtleSB+ZGF0YSBpblxuICAgIGlmIGIgdGhlbiBTb21lIGRhdGEgZWxzZSBOb25lKVxuOztcblxubGV0IG1hcGkgP2hvdyB0IH5mID1cbiAgZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gfmtleSB+ZGF0YSAtPlxuICAgIGxldCVtYXAgeiA9IGYgfmtleSB+ZGF0YSBpblxuICAgIFNvbWUgeilcbjs7XG5cbmxldCBtYXAgP2hvdyB0IH5mID0gbWFwaSA/aG93IHQgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG5sZXQgbWVyZ2UgP2hvdyB0MSB0MiB+ZiA9XG4gIGZpbHRlcl9tYXBcbiAgICA/aG93XG4gICAgKE1hcC5tZXJnZSB0MSB0MiB+ZjooZnVuIH5rZXkgeiAtPiBTb21lIChmdW4gKCkgLT4gZiB+a2V5IHopKSlcbiAgICB+ZjooZnVuIHRodW5rIC0+IHRodW5rICgpKVxuOztcblxubGV0IGFsbCB0ID0gbWFwIHQgfmY6Rm4uaWRcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBEZWZlcnJlZCA9IERlZmVycmVkMVxuXG5sZXQgcmVyYWlzZSA9IGZ1bmN0aW9uXG4gIHwgT2sgeCAtPiB4XG4gIHwgRXJyb3IgZXhuIC0+IEV4bi5yZXJhaXNlIGV4biBcImNhdWdodCBleGNlcHRpb24gaW4gbWVtb2l6ZWQgZnVuY3Rpb25cIlxuOztcblxubGV0IGdlbmVyYWwgKHR5cGUgYSkgKGhhc2hhYmxlIDogKG1vZHVsZSBIYXNoYWJsZS5TX3BsYWluIHdpdGggdHlwZSB0ID0gYSkpIGYgPVxuICBsZXQgbW9kdWxlIEhhc2hhYmxlID0gKHZhbCBoYXNoYWJsZSkgaW5cbiAgbGV0IGYgPVxuICAgIE1lbW8uZ2VuZXJhbCB+aGFzaGFibGU6SGFzaGFibGUuaGFzaGFibGUgKGZ1biBhIC0+XG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgIChmdW4gKCkgLT4gZiBhKSlcbiAgaW5cbiAgU3RhZ2VkLnN0YWdlIChmdW4gYSAtPiBmIGEgPj58IHJlcmFpc2UpXG47O1xuXG5sZXQgdW5pdCBmID1cbiAgbGV0IGYgPVxuICAgIE1lbW8udW5pdCAoZnVuICgpIC0+XG4gICAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgfnJ1bjpgTm93XG4gICAgICAgIGYpXG4gIGluXG4gIFN0YWdlZC5zdGFnZSAoZnVuICgpIC0+IGYgKCkgPj58IHJlcmFpc2UpXG47O1xuIiwib3BlbiBDb3JlXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgT3B0aW9uLnQgRGVmZXJyZWQudFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5pbmNsdWRlIE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIGluY2x1ZGUgVFxuXG4gICAgbGV0IHJldHVybiBhID0gRGVmZXJyZWQucmV0dXJuIChTb21lIGEpXG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIERlZmVycmVkLmJpbmQgdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBTb21lIGEgLT4gZiBhXG4gICAgICAgIHwgTm9uZSAtPiBEZWZlcnJlZC5yZXR1cm4gTm9uZSlcbiAgICA7O1xuXG4gICAgbGV0IG1hcCB0IH5mID0gRGVmZXJyZWQubWFwIHQgfmY6KGZ1biByIC0+IE9wdGlvbi5tYXAgciB+ZilcbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuIiwib3BlbiBDb3JlXG5vcGVuIERlZmVycmVkX3N0ZFxubW9kdWxlIERlZmVycmVkID0gRGVmZXJyZWQxXG5cbm1vZHVsZSBUID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnZXJyb3IpIHQgPSAoJ2EsICdlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuZW5kXG5cbmluY2x1ZGUgVFxuXG5sZXQgY29tYmluZSB0MSB0MiB+b2sgfmVyciA9XG4gIGxldCVtYXAgdDEgPSB0MVxuICBhbmQgdDIgPSB0MiBpblxuICBSZXN1bHQuY29tYmluZSB0MSB0MiB+b2sgfmVyclxuOztcblxuaW5jbHVkZSBNb25hZC5NYWtlMiAoc3RydWN0XG4gICAgaW5jbHVkZSBUXG5cbiAgICBsZXQgcmV0dXJuIGEgPSBEZWZlcnJlZC5yZXR1cm4gKE9rIGEpXG5cbiAgICBsZXQgYmluZCB0IH5mID1cbiAgICAgIERlZmVycmVkLmJpbmQgdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBPayBhIC0+IGYgYVxuICAgICAgICB8IEVycm9yIF8gYXMgZXJyb3IgLT4gRGVmZXJyZWQucmV0dXJuIGVycm9yKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gUmVzdWx0Lm1hcCByIH5mKVxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbmxldCBmYWlsIHggPSBEZWZlcnJlZC5yZXR1cm4gKEVycm9yIHgpXG5sZXQgZmFpbGYgZm9ybWF0ID0gUHJpbnRmLmtzcHJpbnRmIGZhaWwgZm9ybWF0XG5sZXQgbWFwX2Vycm9yIHQgfmYgPSBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHIgLT4gUmVzdWx0Lm1hcF9lcnJvciByIH5mKVxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxubW9kdWxlIE1vbml0b3IgPSBzdHJ1Y3RcbiAgbGV0IHRyeV93aXRoID0gTW9uaXRvci50cnlfd2l0aFxuZW5kXG5cbigqIENvcGllZCB0byBbZWFnZXJfZGVmZXJyZWRfb3JfZXJyb3IubWxdLiAgVGhlcmUgc2hvdWxkIGJlIG5vIGRpZmZzIGJlbG93IHRoaXMgbGluZS4gKilcblxuaW5jbHVkZSAoRGVmZXJyZWRfcmVzdWx0IDogTW9uYWQuUzIgd2l0aCB0eXBlICgnYSwgJ2IpIHQgOj0gKCdhLCAnYikgRGVmZXJyZWRfcmVzdWx0LnQpXG5cbnR5cGUgJ2EgdCA9ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG5pbmNsdWRlIEFwcGxpY2F0aXZlLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgbm9ucmVjICdhIHQgPSAnYSB0XG5cbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgICBsZXQgYXBwbHkgZiB4ID1cbiAgICAgIERlZmVycmVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgIGZcbiAgICAgICAgeFxuICAgICAgICB+b2s6KGZ1biBmIHggLT4gZiB4KVxuICAgICAgICB+ZXJyOihmdW4gZTEgZTIgLT4gRXJyb3Iub2ZfbGlzdCBbIGUxOyBlMiBdKVxuICAgIDs7XG5cbiAgICBsZXQgbWFwID0gYEN1c3RvbSBtYXBcbiAgZW5kKVxuXG5tb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICBsZXQgcmV0dXJuID0gcmV0dXJuXG5cbiAgaW5jbHVkZSBNb25hZF9pbmZpeFxuXG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgPSBtYXBcbiAgICBsZXQgYmluZCA9IGJpbmRcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgICgqIGZyb20gQXBwbGljYXRpdmUuTWFrZSAqKVxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9IHN0cnVjdCBlbmRcbiAgZW5kXG5lbmRcblxub3BlbiBMZXRfc3ludGF4XG5cbmxldCBmYWlsIGVycm9yID0gRGVmZXJyZWQucmV0dXJuIChSZXN1bHQuZmFpbCBlcnJvcilcbmxldCBva19leG4gdCA9IERlZmVycmVkLm1hcCB0IH5mOk9yX2Vycm9yLm9rX2V4blxubGV0IG9mX2V4biBleG4gPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pXG5sZXQgb2ZfZXhuX3Jlc3VsdCB0ID0gRGVmZXJyZWQubWFwIHQgfmY6T3JfZXJyb3Iub2ZfZXhuX3Jlc3VsdFxubGV0IGVycm9yIG1zZyB2IHNleHBfb2YgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLmVycm9yIG1zZyB2IHNleHBfb2YpXG5sZXQgZXJyb3JfcyBzZXhwID0gRGVmZXJyZWQucmV0dXJuIChPcl9lcnJvci5lcnJvcl9zIHNleHApXG5sZXQgZXJyb3Jfc3RyaW5nIG1zZyA9IERlZmVycmVkLnJldHVybiAoT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIG1zZylcbmxldCBlcnJvcmYgZm9ybWF0ID0ga3NwcmludGYgZXJyb3Jfc3RyaW5nIGZvcm1hdFxubGV0IHRhZyB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnIH50YWcpXG5sZXQgdGFnX3MgdCB+dGFnID0gRGVmZXJyZWQubWFwIHQgfmY6KE9yX2Vycm9yLnRhZ19zIH50YWcpXG5sZXQgdGFnX3NfbGF6eSB0IH50YWcgPSBEZWZlcnJlZC5tYXAgdCB+ZjooT3JfZXJyb3IudGFnX3NfbGF6eSB+dGFnKVxuXG5sZXQgdGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EgPVxuICBEZWZlcnJlZC5tYXAgdCB+ZjooZnVuIHQgLT4gT3JfZXJyb3IudGFnX2FyZyB0IG1lc3NhZ2UgYSBzZXhwX29mX2EpXG47O1xuXG5sZXQgdW5pbXBsZW1lbnRlZCBtc2cgPSBEZWZlcnJlZC5yZXR1cm4gKE9yX2Vycm9yLnVuaW1wbGVtZW50ZWQgbXNnKVxubGV0IGNvbWJpbmVfZXJyb3JzIGwgPSBEZWZlcnJlZC5tYXAgKERlZmVycmVkLmFsbCBsKSB+ZjpPcl9lcnJvci5jb21iaW5lX2Vycm9yc1xubGV0IGNvbWJpbmVfZXJyb3JzX3VuaXQgbCA9IERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmNvbWJpbmVfZXJyb3JzX3VuaXRcblxubGV0IGZpbHRlcl9va19hdF9sZWFzdF9vbmUgbCA9XG4gIERlZmVycmVkLm1hcCAoRGVmZXJyZWQuYWxsIGwpIH5mOk9yX2Vycm9yLmZpbHRlcl9va19hdF9sZWFzdF9vbmVcbjs7XG5cbmxldCBmaW5kX21hcF9vayBsIH5mID1cbiAgRGVmZXJyZWQucmVwZWF0X3VudGlsX2ZpbmlzaGVkIChsLCBbXSkgKGZ1biAobCwgZXJyb3JzKSAtPlxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGxldCBlcnJvcnMgPSBFcnJvci5vZl9saXN0IChMaXN0LnJldiBlcnJvcnMpIGluXG4gICAgICBEZWZlcnJlZC5yZXR1cm4gKGBGaW5pc2hlZCAoRXJyb3IgZXJyb3JzKSlcbiAgICB8IGhkIDo6IHRsIC0+XG4gICAgICBEZWZlcnJlZC5tYXAgKGYgaGQpIH5mOihmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGN1cnJlbnRfZXJyb3IgLT4gYFJlcGVhdCAodGwsIGN1cnJlbnRfZXJyb3IgOjogZXJyb3JzKVxuICAgICAgICB8IE9rIHJlc3VsdCAtPiBgRmluaXNoZWQgKE9rIHJlc3VsdCkpKVxuOztcblxubGV0IG9rX3VuaXQgPSByZXR1cm4gKClcblxubGV0IHRyeV93aXRoID9leHRyYWN0X2V4biA/cnVuID9yZXN0ID9oZXJlID9uYW1lIGYgPVxuICBEZWZlcnJlZC5tYXAgKE1vbml0b3IudHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6KGZ1bmN0aW9uXG4gICAgfCBFcnJvciBleG4gLT4gRXJyb3IgKEVycm9yLm9mX2V4biBleG4pXG4gICAgfCBPayBfIGFzIG9rIC0+IG9rKVxuOztcblxubGV0IHRyeV93aXRoX2pvaW4gP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZiA9XG4gIERlZmVycmVkLm1hcCAodHJ5X3dpdGggP2V4dHJhY3RfZXhuID9ydW4gP3Jlc3QgP2hlcmUgP25hbWUgZikgfmY6T3JfZXJyb3Iuam9pblxuOztcblxubW9kdWxlIExpc3QgPSBzdHJ1Y3RcbiAgbGV0IGZvbGRpIGxpc3QgfmluaXQ6YWNjIH5mID1cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2MgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiByZXR1cm4gYWNjXG4gICAgICB8IGhkIDo6IHRsIC0+XG4gICAgICAgIGxldCViaW5kIGFjYyA9IGYgaSBhY2MgaGQgaW5cbiAgICAgICAgbG9vcCAoaSArIDEpIGFjYyB0bFxuICAgIGluXG4gICAgbG9vcCAwIGFjYyBsaXN0XG4gIDs7XG5cbiAgbGV0IGZvbGQgdCB+aW5pdCB+ZiA9IGZvbGRpIHQgfmluaXQgfmY6KGZ1biBfIGEgeCAtPiBmIGEgeClcblxuICBsZXQgc2VxbWFwaSB0IH5mID1cbiAgICBmb2xkaSB0IH5pbml0OltdIH5mOihmdW4gaSBicyBhIC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgYSBpblxuICAgICAgYiA6OiBicylcbiAgICA+PnwgTGlzdC5yZXZcbiAgOztcblxuICBsZXQgYWxsID0gYWxsXG4gIGxldCBhbGxfdW5pdCA9IGFsbF91bml0XG5cbiAgbGV0IGl0ZXJpID8oaG93ID0gYFNlcXVlbnRpYWwpIHQgfmYgPVxuICAgIG1hdGNoIGhvdyB3aXRoXG4gICAgfCAoYFBhcmFsbGVsIHwgYE1heF9jb25jdXJyZW50X2pvYnMgXykgYXMgaG93IC0+XG4gICAgICBhbGxfdW5pdCAoTGlzdC5tYXBpIHQgfmY6KHVuc3RhZ2UgKFRocm90dGxlLm1vbmFkX3NlcXVlbmNlX2hvdzIgfmhvdyB+ZikpKVxuICAgIHwgYFNlcXVlbnRpYWwgLT4gZm9sZGkgdCB+aW5pdDooKSB+ZjooZnVuIGkgKCkgeCAtPiBmIGkgeClcbiAgOztcblxuICBsZXQgbWFwaSA/KGhvdyA9IGBTZXF1ZW50aWFsKSB0IH5mID1cbiAgICBtYXRjaCBob3cgd2l0aFxuICAgIHwgKGBQYXJhbGxlbCB8IGBNYXhfY29uY3VycmVudF9qb2JzIF8pIGFzIGhvdyAtPlxuICAgICAgYWxsIChMaXN0Lm1hcGkgdCB+ZjoodW5zdGFnZSAoVGhyb3R0bGUubW9uYWRfc2VxdWVuY2VfaG93MiB+aG93IH5mKSkpXG4gICAgfCBgU2VxdWVudGlhbCAtPiBzZXFtYXBpIHQgfmZcbiAgOztcblxuICBsZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuZmlsdGVyX29wdFxuICBsZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID0gbWFwaSB0ID9ob3cgfmYgPj58IExpc3QuY29uY2F0XG5cbiAgbGV0IGZpbHRlcmkgP2hvdyB0IH5mID1cbiAgICBmaWx0ZXJfbWFwaSA/aG93IHQgfmY6KGZ1biBpIHggLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSB4IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcbiAgOztcblxuICBsZXQgZmluZF9tYXBpIHQgfmYgPVxuICAgIGxldCByZWMgZmluZF9tYXBpIHQgfmYgaSA9XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgW10gLT4gcmV0dXJuIE5vbmVcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoJWJpbmQgZiBpIGhkIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcGkgdGwgfmYgKGkgKyAxKVxuICAgICAgICAgfCBTb21lIF8gYXMgc29tZSAtPiByZXR1cm4gc29tZSlcbiAgICBpblxuICAgIGZpbmRfbWFwaSB0IH5mIDBcbiAgOztcblxuICBsZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcblxuICBsZXQgZmluZGkgdCB+ZiA9XG4gICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgbGV0JW1hcCBiID0gZiBpIGVsdCBpblxuICAgICAgaWYgYiB0aGVuIFNvbWUgKGksIGVsdCkgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBmaW5kIHQgfmYgPVxuICAgIGZpbmRfbWFwIHQgfmY6KGZ1biBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSBlbHQgZWxzZSBOb25lKVxuICA7O1xuXG4gIGxldCBleGlzdHNpIHQgfmYgPVxuICAgIG1hdGNoJW1hcFxuICAgICAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICAgIGlmIGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgOztcblxuICBsZXQgZm9yX2FsbGkgdCB+ZiA9XG4gICAgbWF0Y2glbWFwXG4gICAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgICAgaWYgbm90IGIgdGhlbiBTb21lICgpIGVsc2UgTm9uZSlcbiAgICB3aXRoXG4gICAgfCBTb21lICgpIC0+IGZhbHNlXG4gICAgfCBOb25lIC0+IHRydWVcbiAgOztcblxuICBsZXQgaXRlciA/aG93IHQgfmYgPSBpdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbiAgbGV0IGZpbHRlciA/aG93IHQgfmYgPSBmaWx0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBmaW5kX21hcCB0IH5mID0gZmluZF9tYXBpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZXhpc3RzIHQgfmYgPSBleGlzdHNpIHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxuICBsZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG4gIGxldCBpbml0ID9ob3cgbiB+ZiA9IG1hcCA/aG93IChMaXN0LmluaXQgbiB+ZjpGbi5pZCkgfmZcbmVuZFxuXG5sZXQgcmVjIHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmID1cbiAgbWF0Y2glYmluZCBmIHN0YXRlIHdpdGhcbiAgfCBgUmVwZWF0IHN0YXRlIC0+IHJlcGVhdF91bnRpbF9maW5pc2hlZCBzdGF0ZSBmXG4gIHwgYEZpbmlzaGVkIHN0YXRlIC0+IHJldHVybiBzdGF0ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcbm1vZHVsZSBMaXN0ID0gRGVmZXJyZWRfbGlzdFxuXG4oKiBXZSBpbXBsZW1lbnQgYWxsIG9mIHRoZSBbUXVldWVdIG9wZXJhdGlvbnMgYnkgY29udmVydGluZyB0aGUgcXVldWUgdG8gYSBsaXN0IGFuZCB0aGVuXG4gICB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBbTGlzdF0gb3BlcmF0aW9uLiAgV2UgdXNlIGxpc3RzIHJhdGhlciB0aGFuIGFycmF5cyBiZWNhdXNlXG4gICBhcnJheXMgbG9uZ2VyIHRoYW4gYSBjZXJ0YWluIGxlbmd0aCBhcmUgYWxsb2NhdGVkIGluIHRoZSBtYWpvciBoZWFwLCB3aGljaCBjYW4gY2F1c2VcbiAgIHVubmVjZXNzYXJ5IHByb21vdGlvbiBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHF1ZXVlLiAgQWxzbywgd2hlbiBvbmUgaXMgZm9sZGluZyBvclxuICAgaXRlcmF0aW5nIG92ZXIgYW4gYXJyYXksIHRoZSBlbnRpcmUgYXJyYXkgbXVzdCBiZSBrZXB0IGFsaXZlLiAgV2hlbiBmb2xkaW5nIG9yXG4gICBpdGVyYXRpbmcgb3ZlciBhIGxpc3QsIG9ubHkgdGhlIHJlbWFpbmluZyB0YWlsIG9mIHRoZSBsaXN0IGlzIGtlcHQgYWxpdmUuICBTbywgdXNpbmdcbiAgIGFycmF5cyByYXRoZXIgdGhhbiBsaXN0cyB3b3VsZCBpbmNyZWFzZSB0aGUgbGl2ZS1zcGFjZSBuZWVkZWQgYnkgdGhlIHByb2dyYW0uICopXG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID0gTGlzdC5mb2xkaSAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGZvbGQgdCB+aW5pdCB+ZiA9IExpc3QuZm9sZCAoUXVldWUudG9fbGlzdCB0KSB+aW5pdCB+ZlxubGV0IGFsbCB0ID0gTGlzdC5hbGwgKFF1ZXVlLnRvX2xpc3QgdCkgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBhbGxfdW5pdCB0ID0gTGlzdC5hbGxfdW5pdCAoUXVldWUudG9fbGlzdCB0KVxubGV0IGl0ZXIgP2hvdyB0IH5mID0gTGlzdC5pdGVyID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBpdGVyaSA/aG93IHQgfmYgPSBMaXN0Lml0ZXJpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBtYXAgP2hvdyB0IH5mID0gTGlzdC5tYXAgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IG1hcGkgP2hvdyB0IH5mID0gTGlzdC5tYXBpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBpbml0ID9ob3cgbiB+ZiA9IExpc3QuaW5pdCA/aG93IG4gfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gTGlzdC5maWx0ZXIgP2hvdyAoUXVldWUudG9fbGlzdCB0KSB+ZiA+PnwgUXVldWUub2ZfbGlzdFxubGV0IGZpbHRlcmkgP2hvdyB0IH5mID0gTGlzdC5maWx0ZXJpID9ob3cgKFF1ZXVlLnRvX2xpc3QgdCkgfmYgPj58IFF1ZXVlLm9mX2xpc3RcbmxldCBmaWx0ZXJfbWFwID9ob3cgdCB+ZiA9IExpc3QuZmlsdGVyX21hcCA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5sZXQgZmlsdGVyX21hcGkgP2hvdyB0IH5mID0gTGlzdC5maWx0ZXJfbWFwaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mID4+fCBRdWV1ZS5vZl9saXN0XG5cbmxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9XG4gIExpc3QuY29uY2F0X21hcCA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4geCAtPiBmIHggPj58IFF1ZXVlLnRvX2xpc3QpXG4gID4+fCBRdWV1ZS5vZl9saXN0XG47O1xuXG5sZXQgY29uY2F0X21hcGkgP2hvdyB0IH5mID1cbiAgTGlzdC5jb25jYXRfbWFwaSA/aG93IChRdWV1ZS50b19saXN0IHQpIH5mOihmdW4gaSB4IC0+IGYgaSB4ID4+fCBRdWV1ZS50b19saXN0KVxuICA+PnwgUXVldWUub2ZfbGlzdFxuOztcblxubGV0IGZpbmRfbWFwIHQgfmYgPSBMaXN0LmZpbmRfbWFwIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZmluZF9tYXBpIHQgfmYgPSBMaXN0LmZpbmRfbWFwaSAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmQgdCB+ZiA9IExpc3QuZmluZCAoUXVldWUudG9fbGlzdCB0KSB+ZlxubGV0IGZpbmRpIHQgfmYgPSBMaXN0LmZpbmRpIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbCB0IH5mID0gTGlzdC5mb3JfYWxsIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZm9yX2FsbGkgdCB+ZiA9IExpc3QuZm9yX2FsbGkgKFF1ZXVlLnRvX2xpc3QgdCkgfmZcbmxldCBleGlzdHMgdCB+ZiA9IExpc3QuZXhpc3RzIChRdWV1ZS50b19saXN0IHQpIH5mXG5sZXQgZXhpc3RzaSB0IH5mID0gTGlzdC5leGlzdHNpIChRdWV1ZS50b19saXN0IHQpIH5mXG4iLCJvcGVuIENvcmVcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZDFcblxuKCogW2ZvbGRfbWFwaSA/aG93IHQgfmluaXQgfm1hcGlfZiB+Zm9sZF9mXSBpcyBhIG1vcmUgZWZmaWNpZW50IHZlcnNpb24gb2Y6XG5cbiAgIHtbXG4gICAgIGZvbGQgfmluaXQgfmY6KGZ1biBiIGEgLT4gcmV0dXJuIChmb2xkX2YgYiBhKSkgKG1hcGkgdCA/aG93IH5mOm1hcGlfZikgXX1cblxuICAgSXQgYXZvaWRzIGNyZWF0aW5nIHRoZSBpbnRlcm1lZGlhdGUgc2VxdWVuY2UgdGhhdCB3b3VsZCByZXN1bHQgZnJvbSBbbWFwaV0sIGFuZFxuICAgYWxsb3dzIHRoZSBbZm9sZF0gdG8gcHJvY2VlZCBjb25jdXJyZW50bHkgd2l0aCB0aGUgW21hcGldLCBzbyB0aGF0IG9uZSBjYW4gYWNjdW11bGF0ZVxuICAgdGhlIHJlc3VsdCBhcyBzb29uIGFzIHBvc3NpYmxlLCBwb3NzaWJseSBhdm9pZGluZyBjcmVhdGluZyBhbiBpbnRlcm1lZGlhdGUgc3RydWN0dXJlXG4gICAoZS5nLiBbaXRlcmldIGFuZCBbZmlsdGVyX21hcF0gdXNlcyBbZm9sZF9tYXBpXSB0byBkbyB0aGlzKS4gKilcbmxldCBmb2xkX21hcGlcbiAgICAgICh0eXBlIGEgYiBjKVxuICAgICAgPyhob3cgPSBgU2VxdWVudGlhbClcbiAgICAgICh0IDogYSBTZXF1ZW5jZS50KVxuICAgICAgfihpbml0IDogYylcbiAgICAgIH4obWFwaV9mIDogaW50IC0+IGEgLT4gYiBEZWZlcnJlZC50KVxuICAgICAgfihmb2xkX2YgOiBjIC0+IGIgLT4gYylcbiAgOiBjIERlZmVycmVkLnRcbiAgPVxuICBtYXRjaCBob3cgd2l0aFxuICB8IGBTZXF1ZW50aWFsIC0+XG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMpID1cbiAgICAgIG1hdGNoIFNlcXVlbmNlLm5leHQgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV0dXJuIGNcbiAgICAgIHwgU29tZSAoYSwgdCkgLT5cbiAgICAgICAgbGV0JWJpbmQgYiA9IG1hcGlfZiBpIGEgaW5cbiAgICAgICAgbG9vcCAoaSArIDEpIHQgKGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCBpbml0XG4gIHwgYFBhcmFsbGVsIC0+XG4gICAgbGV0IHJlYyBsb29wIGkgdCAoYyA6IGMgRGVmZXJyZWQudCkgPVxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gbWFwaV9mIGkgYSBpblxuICAgICAgICAgICBsZXQlbWFwIGMgPSBjIGluXG4gICAgICAgICAgIGZvbGRfZiBjIGIpXG4gICAgaW5cbiAgICBsb29wIDAgdCAocmV0dXJuIGluaXQpXG4gIHwgYE1heF9jb25jdXJyZW50X2pvYnMgbWF4X2NvbmN1cnJlbnRfam9icyAtPlxuICAgIGxldCB0aHJvdHRsZSA9IFRocm90dGxlLmNyZWF0ZSB+bWF4X2NvbmN1cnJlbnRfam9icyB+Y29udGludWVfb25fZXJyb3I6ZmFsc2UgaW5cbiAgICAoKiBbbG9vcF0gZm9yY2VzIHRoZSBpbnB1dCBzZXF1ZW5jZSBhbmQgZW5xdWV1ZXMgYSB0aHJvdHRsZSBqb2Igb25seSBpZiB0aGVyZSBpc1xuICAgICAgIGNhcGFjaXR5IGF2YWlsYWJsZS4gKilcbiAgICBsZXQgcmVjIGxvb3AgaSB0IChjIDogYyBEZWZlcnJlZC50KSA9XG4gICAgICBsZXQlYmluZCAoKSA9IFRocm90dGxlLmNhcGFjaXR5X2F2YWlsYWJsZSB0aHJvdHRsZSBpblxuICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCB0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjXG4gICAgICB8IFNvbWUgKGEsIHQpIC0+XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaSArIDEpXG4gICAgICAgICAgdFxuICAgICAgICAgIChsZXQlYmluZCBiID0gVGhyb3R0bGUuZW5xdWV1ZSB0aHJvdHRsZSAoZnVuICgpIC0+IG1hcGlfZiBpIGEpIGluXG4gICAgICAgICAgIGxldCVtYXAgYyA9IGMgaW5cbiAgICAgICAgICAgZm9sZF9mIGMgYilcbiAgICBpblxuICAgIGxvb3AgMCB0IChyZXR1cm4gaW5pdClcbjs7XG5cbmxldCBmb2xkaSB0IH5pbml0IH5mID1cbiAgU2VxdWVuY2UuZGVsYXllZF9mb2xkXG4gICAgdFxuICAgIH5pbml0OigwLCBpbml0KVxuICAgIH5mOihmdW4gKGksIGIpIGEgfmsgLT5cbiAgICAgIGxldCViaW5kIGIgPSBmIGkgYiBhIGluXG4gICAgICBrIChpICsgMSwgYikpXG4gICAgfmZpbmlzaDooZnVuIChfLCBiKSAtPiByZXR1cm4gYilcbjs7XG5cbigqIFtmb2xkXSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgW2ZvbGRpXSB0byBzYXZlIHRoZSBpbnRlcm1lZGlhdGUgY2xvc3VyZVxuICAgYWxsb2NhdGlvbi4gKilcbmxldCBmb2xkIHQgfmluaXQgfmYgPVxuICBTZXF1ZW5jZS5kZWxheWVkX2ZvbGQgdCB+aW5pdCB+ZjooZnVuIGIgYSB+ayAtPiBmIGIgYSA+Pj0gaykgfmZpbmlzaDpyZXR1cm5cbjs7XG5cbmxldCBhbGwgdCA9XG4gIGxldCVtYXAgcmVzID1cbiAgICBmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhY2N1bSBkIC0+XG4gICAgICBsZXQlbWFwIGEgPSBkIGluXG4gICAgICBhIDo6IGFjY3VtKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiByZXMpXG47O1xuXG5sZXQgYWxsX3VuaXQgdCA9IGZvbGQgdCB+aW5pdDooKSB+ZjooZnVuICgpIHYgLT4gdilcblxubGV0IGZpbmRfbWFwaSB0IH5mID1cbiAgbGV0IHJlYyBmaW5kX21hcGkgdCB+ZiBpID1cbiAgICBtYXRjaCBTZXF1ZW5jZS5uZXh0IHQgd2l0aFxuICAgIHwgTm9uZSAtPiByZXR1cm4gTm9uZVxuICAgIHwgU29tZSAodiwgcmVzdCkgLT5cbiAgICAgIChtYXRjaCViaW5kIGYgaSB2IHdpdGhcbiAgICAgICB8IE5vbmUgLT4gZmluZF9tYXBpIHJlc3QgfmYgKGkgKyAxKVxuICAgICAgIHwgU29tZSBfIGFzIHNvbWUgLT4gcmV0dXJuIHNvbWUpXG4gIGluXG4gIGZpbmRfbWFwaSB0IH5mIDBcbjs7XG5cbmxldCBmaW5kaSB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBpIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICBpZiBiIHRoZW4gU29tZSAoaSwgZWx0KSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgZmluZCB0IH5mID1cbiAgZmluZF9tYXBpIHQgfmY6KGZ1biBfIGVsdCAtPlxuICAgIGxldCVtYXAgYiA9IGYgZWx0IGluXG4gICAgaWYgYiB0aGVuIFNvbWUgZWx0IGVsc2UgTm9uZSlcbjs7XG5cbmxldCBleGlzdHNpIHQgfmYgPVxuICBtYXRjaCVtYXBcbiAgICBmaW5kX21hcGkgdCB+ZjooZnVuIGkgZWx0IC0+XG4gICAgICBsZXQlbWFwIGIgPSBmIGkgZWx0IGluXG4gICAgICBpZiBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IHRydWVcbiAgfCBOb25lIC0+IGZhbHNlXG47O1xuXG5sZXQgZm9yX2FsbGkgdCB+ZiA9XG4gIG1hdGNoJW1hcFxuICAgIGZpbmRfbWFwaSB0IH5mOihmdW4gaSBlbHQgLT5cbiAgICAgIGxldCVtYXAgYiA9IGYgaSBlbHQgaW5cbiAgICAgIGlmIG5vdCBiIHRoZW4gU29tZSAoKSBlbHNlIE5vbmUpXG4gIHdpdGhcbiAgfCBTb21lICgpIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG47O1xuXG5sZXQgaXRlcmkgP2hvdyB0IH5mIDogdW5pdCBEZWZlcnJlZC50ID1cbiAgZm9sZF9tYXBpID9ob3cgdCB+bWFwaV9mOmYgfmluaXQ6KCkgfmZvbGRfZjooZnVuICgpICgpIC0+ICgpKVxuOztcblxubGV0IG1hcGkgP2hvdyB0IH5mID1cbiAgbGV0JW1hcCBicyA9XG4gICAgZm9sZF9tYXBpID9ob3cgdCB+bWFwaV9mOihmdW4gaSBhIC0+IGYgaSBhKSB+aW5pdDpbXSB+Zm9sZF9mOihmdW4gYnMgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbigqIFtmaWx0ZXJfbWFwaV0gaXMgaW1wbGVtZW50ZWQgdXNpbmcgW2ZvbGRfbWFwaV0gcmF0aGVyIHRoYW4gW21hcF0gc28gdGhhdCB3ZSBuZXZlciBuZWVkXG4gICB0byBrZWVwIGEgbG9uZyBzdHJlYW0gb2YgaW50ZXJtZWRpYXRlIFtOb25lXSByZXN1bHRzIGluIHRoZSBhY2N1bXVsYXRvciwgb25seSB0byBsYXRlclxuICAgZmlsdGVyIHRoZW0gYWxsIG91dC4gKilcbmxldCBmaWx0ZXJfbWFwaSA/aG93IHQgfmYgPVxuICBsZXQlbWFwIGJzID1cbiAgICBmb2xkX21hcGlcbiAgICAgIHRcbiAgICAgID9ob3dcbiAgICAgIH5tYXBpX2Y6KGZ1biBpIGEgLT4gZiBpIGEpXG4gICAgICB+aW5pdDpbXVxuICAgICAgfmZvbGRfZjooZnVuIGJzIG1heWJlX3YgLT5cbiAgICAgICAgbWF0Y2ggbWF5YmVfdiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBic1xuICAgICAgICB8IFNvbWUgYiAtPiBiIDo6IGJzKVxuICBpblxuICBTZXF1ZW5jZS5vZl9saXN0IChMaXN0LnJldiBicylcbjs7XG5cbmxldCBjb25jYXRfbWFwaSA/aG93IHQgfmYgPSBtYXBpID9ob3cgdCB+ZiA+PnwgU2VxdWVuY2UuY29uY2F0XG5cbmxldCBmaWx0ZXJpID9ob3cgdCB+ZiA9XG4gIGZpbHRlcl9tYXBpID9ob3cgdCB+ZjooZnVuIGkgYSAtPlxuICAgIG1hdGNoJW1hcCBmIGkgYSB3aXRoXG4gICAgfCB0cnVlIC0+IFNvbWUgYVxuICAgIHwgZmFsc2UgLT4gTm9uZSlcbjs7XG5cbmxldCBpdGVyID9ob3cgdCB+ZiA9IGl0ZXJpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgbWFwID9ob3cgdCB+ZiA9IG1hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBmaWx0ZXIgP2hvdyB0IH5mID0gZmlsdGVyaSA/aG93IHQgfmY6KGZ1biBfIGEgLT4gZiBhKVxubGV0IGZpbHRlcl9tYXAgP2hvdyB0IH5mID0gZmlsdGVyX21hcGkgP2hvdyB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBjb25jYXRfbWFwID9ob3cgdCB+ZiA9IGNvbmNhdF9tYXBpID9ob3cgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZmluZF9tYXAgdCB+ZiA9IGZpbmRfbWFwaSB0IH5mOihmdW4gXyBhIC0+IGYgYSlcbmxldCBleGlzdHMgdCB+ZiA9IGV4aXN0c2kgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgZm9yX2FsbCB0IH5mID0gZm9yX2FsbGkgdCB+ZjooZnVuIF8gYSAtPiBmIGEpXG5sZXQgaW5pdCA/aG93IG4gfmYgPSBtYXAgP2hvdyAoU2VxdWVuY2UuaW5pdCBuIH5mOkZuLmlkKSB+ZlxuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQ2xvY2tfbnMgPSBDbG9ja19uc1xubW9kdWxlIFRpbWVfbnMgPSBUaW1lX25zXG5tb2R1bGUgVGltZSA9IFRpbWVcbm1vZHVsZSBBc3luY19rZXJuZWxfc2NoZWR1bGVyID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlclxubW9kdWxlIERhdGUgPSBEYXRlXG5cbmxldCBhZnRlciA9IENsb2NrX25zLmFmdGVyXG5sZXQgYXQgPSBDbG9ja19ucy5hdFxubGV0IGV2ZXJ5ID0gQ2xvY2tfbnMuZXZlcnlcbmxldCB3aXRoX3RpbWVvdXQgPSBDbG9ja19ucy53aXRoX3RpbWVvdXRcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gRGVmZXJyZWRfc3RkXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5cbmxldCBzaG93X2RlYnVnX21lc3NhZ2VzID0gcmVmIGZhbHNlXG5sZXQgY2hlY2tfaW52YXJpYW50ID0gcmVmIGZhbHNlXG5cbm1vZHVsZSBGbHVzaGVkX3Jlc3VsdCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIFsgYE9rXG4gICAgfCBgUmVhZGVyX2Nsb3NlZFxuICAgIF1cbiAgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBsZXQgZXF1YWwgPSBbJWNvbXBhcmUuZXF1YWw6IHRdXG5cbiAgbGV0IGNvbWJpbmUgKGwgOiB0IERlZmVycmVkLnQgbGlzdCkgPVxuICAgIGxldCVtYXAgbCA9IERlZmVycmVkLmFsbCBsIGluXG4gICAgbWF0Y2ggTGlzdC5tZW0gbCBgUmVhZGVyX2Nsb3NlZCB+ZXF1YWwgd2l0aFxuICAgIHwgdHJ1ZSAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgIHwgZmFsc2UgLT4gYE9rXG4gIDs7XG5lbmRcblxuKCogQSBbQ29uc3VtZXIudF0gYWN0cyBhcyB0aGUgbW9uaXRvciBvZiBzb21lIHByb2Nlc3MgdGhhdCByZWFkcyB2YWx1ZXMgZnJvbSBhIHBpcGUgYW5kXG4gICBwcm9jZXNzZXMgdGhlbSwgYWxsb3dpbmcgdGhhdCBwcm9jZXNzOlxuICAgLSB0byBjb21tdW5pY2F0ZSB0aGF0IGl0IGhhcyB0YWtlbiByZXNwb25zaWJpbGl0eSBmb3IgdGhlIHZhbHVlc1xuICAgLSB0byBzaWduYWwgd2hlbiBpdCBoYXMgZmluaXNoZWQgd2l0aCB0aGUgdmFsdWVzIHRvIGludGVyZXN0ZWQgcGFydGllcyAodmlhXG4gICAgIFtkb3duc3RyZWFtX2ZsdXNoZWRdKVxuXG4gICBJdCBpcyB1c2VkIGluIHR3byBzdGVwczpcblxuICAgMS4gY2FsbGluZyBbQ29uc3VtZXIuc3RhcnRdIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgY29uc3VtZXIgdGFrZXMgdmFsdWVzIG91dCBvZiB0aGVcbiAgIFBpcGUgdmlhIFtyZWFkXSBvciBbcmVhZCddLlxuXG4gICAyLiBjYWxsaW5nIFtDb25zdW1lci52YWx1ZXNfc2VudF9kb3duc3RyZWFtXS5cblxuICAgQnkgY2FsbGluZyBbdmFsdWVzX3NlbnRfZG93bnN0cmVhbV0gb25lIGFzc2VydHMgdGhhdCB0aGUgW2Rvd25zdHJlYW1fZmx1c2hlZF0gZnVuY3Rpb25cbiAgIHN1cHBsaWVkIHRvIFtjcmVhdGVdIHdpbGwgbm93IHdhaXQgZm9yIHRoaXMgdmFsdWUuXG5cbiAgIElmIG5vIFtDb25zdW1lci50XSBpcyBzdXBwbGllZCB3aGVuIGEgdmFsdWUgaXMgcmVhZCB0aGVuIHRoZSB2YWx1ZSBpcyBkZWZpbmVkIHRvIGJlXG4gICBmbHVzaGVkIGF0IHRoYXQgdGltZS4gKilcbm1vZHVsZSBDb25zdW1lciA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEludmFyaWFudC5TIHdpdGggdHlwZSB0IDo9IHRcblxuICB2YWwgY3JlYXRlXG4gICAgOiAgcGlwZV9pZDppbnRcbiAgICAtPiBkb3duc3RyZWFtX2ZsdXNoZWQ6KHVuaXQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50KVxuICAgIC0+IHRcblxuICB2YWwgcGlwZV9pZCA6IHQgLT4gaW50XG4gIHZhbCBzdGFydCA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbSA6IHQgLT4gdW5pdFxuICB2YWwgdmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCA6IHQgLT4gRmx1c2hlZF9yZXN1bHQudCBEZWZlcnJlZC50XG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IHBpcGVfaWQgOiBpbnRcbiAgICA7ICgqIFt2YWx1ZXNfcmVhZF0gcmVmbGVjdHMgd2hldGhlciB2YWx1ZXMgdGhlIGNvbnN1bWVyIGhhcyByZWFkIGZyb20gdGhlIHBpcGUgaGF2ZSBiZWVuXG4gICAgICAgICBzZW50IGRvd25zdHJlYW0gb3IgaWYgbm90LCBob2xkcyBhbiBpdmFyIHRoYXQgaXMgdG8gYmUgZmlsbGVkIHdoZW4gdGhleSBhcmUuICopXG4gICAgICBtdXRhYmxlIHZhbHVlc19yZWFkIDpcbiAgICAgICAgWyBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSBvZiB1bml0IEl2YXIudCBdXG4gICAgOyAoKiBbZG93bnN0cmVhbV9mbHVzaGVkICgpXSByZXR1cm5zIHdoZW4gYWxsIHByaW9yIHZhbHVlcyB0aGF0IHRoZSBjb25zdW1lciBoYXNcbiAgICAgICAgIHBhc3NlZCBkb3duc3RyZWFtIGhhdmUgYmVlbiBmbHVzaGVkIGFsbCB0aGUgd2F5IGRvd24gdGhlIGNoYWluIG9mIHBpcGVzLiAqKVxuICAgICAgZG93bnN0cmVhbV9mbHVzaGVkIDogdW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgICB0cnlcbiAgICAgIGxldCBjaGVjayBmIGZpZWxkID0gZiAoRmllbGQuZ2V0IGZpZWxkIHQpIGluXG4gICAgICBGaWVsZHMuaXRlclxuICAgICAgICB+cGlwZV9pZDppZ25vcmVcbiAgICAgICAgfnZhbHVlc19yZWFkOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+ICgpXG4gICAgICAgICAgICAgfCBgSGF2ZV9ub3RfYmVlbl9zZW50X2Rvd25zdHJlYW0gaXZhciAtPiBhc3NlcnQgKEl2YXIuaXNfZW1wdHkgaXZhcikpKVxuICAgICAgICB+ZG93bnN0cmVhbV9mbHVzaGVkOmlnbm9yZVxuICAgIHdpdGhcbiAgICB8IGV4biAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQ29uc3VtZXIuaW52YXJpYW50IGZhaWxlZFwiIChleG4gOiBleG4pIH5waXBlOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB+cGlwZV9pZCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgICB7IHBpcGVfaWQ7IHZhbHVlc19yZWFkID0gYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW07IGRvd25zdHJlYW1fZmx1c2hlZCB9XG4gIDs7XG5cbiAgbGV0IHN0YXJ0IHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIF8gLT4gKClcbiAgICB8IGBIYXZlX2JlZW5fc2VudF9kb3duc3RyZWFtIC0+XG4gICAgICB0LnZhbHVlc19yZWFkIDwtIGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSAoSXZhci5jcmVhdGUgKCkpXG4gIDs7XG5cbiAgbGV0IHZhbHVlc19zZW50X2Rvd25zdHJlYW0gdCA9XG4gICAgbWF0Y2ggdC52YWx1ZXNfcmVhZCB3aXRoXG4gICAgfCBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbSAtPiAoKVxuICAgIHwgYEhhdmVfbm90X2JlZW5fc2VudF9kb3duc3RyZWFtIGl2YXIgLT5cbiAgICAgIEl2YXIuZmlsbCBpdmFyICgpO1xuICAgICAgdC52YWx1ZXNfcmVhZCA8LSBgSGF2ZV9iZWVuX3NlbnRfZG93bnN0cmVhbVxuICA7O1xuXG4gIGxldCB2YWx1ZXNfc2VudF9kb3duc3RyZWFtX2FuZF9mbHVzaGVkIHQgPVxuICAgIG1hdGNoIHQudmFsdWVzX3JlYWQgd2l0aFxuICAgIHwgYEhhdmVfYmVlbl9zZW50X2Rvd25zdHJlYW0gLT4gdC5kb3duc3RyZWFtX2ZsdXNoZWQgKClcbiAgICB8IGBIYXZlX25vdF9iZWVuX3NlbnRfZG93bnN0cmVhbSB3aGVuX3NlbnRfZG93bnN0cmVhbSAtPlxuICAgICAgbGV0JWJpbmQgKCkgPSBJdmFyLnJlYWQgd2hlbl9zZW50X2Rvd25zdHJlYW0gaW5cbiAgICAgIHQuZG93bnN0cmVhbV9mbHVzaGVkICgpXG4gIDs7XG5lbmRcblxubW9kdWxlIEJsb2NrZWRfcmVhZCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX3JlYWQudF0gcmVwcmVzZW50cyBhIGJsb2NrZWQgcmVhZCBhdHRlbXB0LiAgSWYgc29tZW9uZSByZWFkcyBmcm9tIGFuIGVtcHR5XG4gICAgIHBpcGUsIHRoZXkgZW5xdWV1ZSBhIFtCbG9ja2VkX3JlYWQudF0gaW4gdGhlIHF1ZXVlIG9mIFtibG9ja2VkX3JlYWRzXS4gIExhdGVyLCB3aGVuXG4gICAgIHZhbHVlcyBhcmUgd3JpdHRlbiB0byBhIHBpcGUsIHRoYXQgd2lsbCBjYXVzZSBzb21lIG51bWJlciBvZiBibG9ja2VkIHJlYWRzIHRvIGJlXG4gICAgIGZpbGxlZCwgZmlyc3QgY29tZSBmaXJzdCBzZXJ2ZS4gIFRoZSBibG9ja2VkLXJlYWQgY29uc3RydWN0b3Igc3BlY2lmaWVzIGhvdyBtYW55XG4gICAgIHZhbHVlcyBhIHJlYWQgc2hvdWxkIGNvbnN1bWUgZnJvbSB0aGUgcGlwZSB3aGVuIGl0IGdldHMgaXRzIHR1cm4uXG5cbiAgICAgSWYgYSBwaXBlIGlzIGNsb3NlZCwgdGhlbiBhbGwgYmxvY2tlZCByZWFkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIFtgRW9mXS4gKilcbiAgdHlwZSAnYSB3YW50cyA9XG4gICAgfCBaZXJvIG9mIFsgYEVvZiB8IGBPayBdIEl2YXIudFxuICAgIHwgT25lIG9mIFsgYEVvZiB8IGBPayBvZiAnYSBdIEl2YXIudFxuICAgIHwgQXRfbW9zdCBvZiBpbnQgKiBbIGBFb2YgfCBgT2sgb2YgJ2EgUXVldWUudCBdIEl2YXIudFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyB3YW50cyA6ICdhIHdhbnRzXG4gICAgOyBjb25zdW1lciA6IENvbnN1bWVyLnQgb3B0aW9uXG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0IDogdW5pdCA9XG4gICAgdHJ5XG4gICAgICBsZXQgY2hlY2sgZiBmaWVsZCA9IGYgKEZpZWxkLmdldCBmaWVsZCB0KSBpblxuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfndhbnRzOlxuICAgICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFplcm8gXyB8IE9uZSBfIC0+ICgpXG4gICAgICAgICAgICAgfCBBdF9tb3N0IChpLCBfKSAtPiBhc3NlcnQgKGkgPiAwKSkpXG4gICAgICAgIH5jb25zdW1lcjpcbiAgICAgICAgICAoY2hlY2sgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgfCBTb21lIGNvbnN1bWVyIC0+IENvbnN1bWVyLmludmFyaWFudCBjb25zdW1lcikpXG4gICAgd2l0aFxuICAgIHwgZXhuIC0+XG4gICAgICByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUuQmxvY2tlZF9yZWFkLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IF8gdCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSB3YW50cyBjb25zdW1lciA9IHsgd2FudHM7IGNvbnN1bWVyIH1cblxuICBsZXQgaXNfZW1wdHkgdCA9XG4gICAgbWF0Y2ggdC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGkgLT4gSXZhci5pc19lbXB0eSBpXG4gICAgfCBPbmUgaSAtPiBJdmFyLmlzX2VtcHR5IGlcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuaXNfZW1wdHkgaVxuICA7O1xuXG4gIGxldCBmaWxsX3dpdGhfZW9mIHQgPVxuICAgIG1hdGNoIHQud2FudHMgd2l0aFxuICAgIHwgWmVybyBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IE9uZSBpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgICB8IEF0X21vc3QgKF8sIGkpIC0+IEl2YXIuZmlsbCBpIGBFb2ZcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmxvY2tlZF9mbHVzaCA9IHN0cnVjdFxuICAoKiBBIFtCbG9ja2VkX2ZsdXNoLnRdIHJlcHJlc2VudHMgYSBibG9ja2VkIGZsdXNoIG9wZXJhdGlvbiwgd2hpY2ggY2FuIGJlIGVuYWJsZWQgYnkgYVxuICAgICBmdXR1cmUgcmVhZC4gIElmIHNvbWVvbmUgZG9lcyBbZmx1c2hlZCBwXSBvbiBhIHBpcGUsIHRoYXQgYmxvY2tzIHVudGlsIGV2ZXJ5dGhpbmdcbiAgICAgdGhhdCdzIGN1cnJlbnRseSBpbiB0aGUgcGlwZSBhdCB0aGF0IHBvaW50IGhhcyBkcmFpbmVkIG91dCBvZiB0aGUgcGlwZS4gIFdoZW4gd2UgY2FsbFxuICAgICBbZmx1c2hlZF0sIGl0IHJlY29yZHMgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIHRoYXQgaGFzIGJlZW4gd3JpdHRlbiBzbyBmYXIgaW5cbiAgICAgW2ZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRdLiAgV2UgZmlsbCB0aGUgW0ZsdXNoLnRdIHdpdGggW2BPa10gd2hlbiB0aGlzIGFtb3VudCBvZlxuICAgICBkYXRhIGhhcyBiZWVuIHJlYWQgZnJvbSB0aGUgcGlwZS5cblxuICAgICBBIFtCbG9ja2VkX2ZsdXNoLnRdIGNhbiBhbHNvIGJlIGZpbGxlZCB3aXRoIFtgUmVhZGVyX2Nsb3NlZF0sIHdoaWNoIGhhcHBlbnMgd2hlbiB0aGVcbiAgICAgcmVhZGVyIGVuZCBvZiB0aGUgcGlwZSBpcyBjbG9zZWQsIGFuZCB3ZSBhcmUgdGh1cyBzdXJlIHRoYXQgdGhlIHVucmVhZCBlbGVtZW50c1xuICAgICBwcmVjZWRpbmcgdGhlIGZsdXNoIHdpbGwgbmV2ZXIgYmUgcmVhZC4gKilcbiAgdHlwZSB0ID1cbiAgICB7IGZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgICA7IHJlYWR5IDogWyBgT2sgfCBgUmVhZGVyX2Nsb3NlZCBdIEl2YXIudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBmaWxsIHQgdiA9IEl2YXIuZmlsbCB0LnJlYWR5IHZcbmVuZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7ICgqIFtpZF0gaXMgYW4gaW50ZWdlciB1c2VkIHRvIGRpc3Rpbmd1aXNoIHBpcGVzIHdoZW4gZGVidWdnaW5nLiAqKVxuICAgIGlkIDogaW50IFNleHBfaGlkZGVuX2luX3Rlc3QudFxuICA7ICgqIFtpbmZvXSBpcyB1c2VyLXByb3ZpZGVkIGFyYml0cmFyeSBzZXhwLCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLiAqKVxuICAgIG11dGFibGUgaW5mbyA6IFNleHAudCBvcHRpb24gW0BzZXhwLm9wdGlvbl1cbiAgOyAoKiBbYnVmZmVyXSBob2xkcyB2YWx1ZXMgd3JpdHRlbiB0byB0aGUgcGlwZSB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHJlYWQuICopXG4gICAgbXV0YWJsZSBidWZmZXIgOiAnYSBRdWV1ZS50XG4gIDsgKCogW3NpemVfYnVkZ2V0XSBnb3Zlcm5zIHB1c2hiYWNrIG9uIHdyaXRlcnMgdG8gdGhlIHBpcGUuXG5cbiAgICAgICBUaGVyZSBpcyAqbm8qIGludmFyaWFudCB0aGF0IFtRdWV1ZS5sZW5ndGggYnVmZmVyIDw9IHNpemVfYnVkZ2V0XS4gIFRoZXJlIGlzIG5vXG4gICAgICAgaGFyZCB1cHBlciBib3VuZCBvbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRoYXQgY2FuIGJlIHN0dWZmZWQgaW50byB0aGUgW2J1ZmZlcl0uXG4gICAgICAgVGhpcyBpcyBkdWUgdG8gdGhlIHdheSB3ZSBoYW5kbGUgd3JpdGVzLiAgV2hlbiB3ZSBkbyBhIHdyaXRlLCBhbGwgb2YgdGhlIHZhbHVlc1xuICAgICAgIHdyaXR0ZW4gYXJlIGltbWVkaWF0ZWx5IGVucXVldWVkIGludG8gW2J1ZmZlcl0uICBBZnRlciB0aGUgd3JpdGUsIGlmIFtRdWV1ZS5sZW5ndGhcbiAgICAgICBidWZmZXIgPD0gdC5zaXplX2J1ZGdldF0sIHRoZW4gdGhlIHdyaXRlciB3aWxsIGJlIG5vdGlmaWVkIHRvIGNvbnRpbnVlIHdyaXRpbmcuXG4gICAgICAgQWZ0ZXIgdGhlIHdyaXRlLCBpZiBbbGVuZ3RoIHQgPiB0LnNpemVfYnVkZ2V0XSwgdGhlbiB0aGUgd3JpdGUgd2lsbCBibG9jayB1bnRpbCB0aGVcbiAgICAgICBwaXBlIGlzIHVuZGVyIGJ1ZGdldC4gKilcbiAgICBtdXRhYmxlIHNpemVfYnVkZ2V0IDogaW50XG4gIDsgKCogW3B1c2hiYWNrXSBpcyB1c2VkIHRvIGdpdmUgZmVlZGJhY2sgdG8gd3JpdGVycyBhYm91dCB3aGV0aGVyIHRoZXkgc2hvdWxkIHdyaXRlIHRvXG4gICAgICAgdGhlIHBpcGUuICBbcHVzaGJhY2tdIGlzIGZ1bGwgaWZmIFtsZW5ndGggdCA8PSB0LnNpemVfYnVkZ2V0IHx8IGlzX2Nsb3NlZCB0XS4gKilcbiAgICBtdXRhYmxlIHB1c2hiYWNrIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbbnVtX3ZhbHVlc19yZWFkXSBrZWVwcyB0cmFjayBvZiB0aGUgdG90YWwgbnVtYmVyIG9mIHZhbHVlcyB0aGF0IGhhdmUgYmVlbiByZWFkXG4gICAgICAgZnJvbSB0aGUgcGlwZS4gIFdlIGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IG92ZXJmbG93IGluIFtudW1fdmFsdWVzX3JlYWRdLiAgWW91J2RcbiAgICAgICBuZWVkIHRvIHdyaXRlIDJeNjIgZWxlbWVudHMgdG8gdGhlIHBpcGUsIHdoaWNoIHdvdWxkIHRha2UgYWJvdXQgMTQ2IHllYXJzLCBhdCBhXG4gICAgICAgZmxvdyByYXRlIG9mIDEgc2l6ZS11bml0L25hbm9zZWNvbmQuICopXG4gICAgbXV0YWJsZSBudW1fdmFsdWVzX3JlYWQgOiBpbnRcbiAgOyAoKiBbYmxvY2tlZF9mbHVzaGVzXSBob2xkcyBmbHVzaGVzIHdob3NlIHByZWNlZGluZyBlbGVtZW50cyBoYXZlIG5vdCBiZWVuIGNvbXBsZXRlbHlcbiAgICAgICByZWFkLiAgRm9yIGVhY2ggYmxvY2tlZCBmbHVzaCwgdGhlIG51bWJlciBvZiBlbGVtZW50cyB0aGF0IG5lZWQgdG8gYmUgcmVhZCBmcm9tIHRoZVxuICAgICAgIHBpcGUgaW4gb3JkZXIgdG8gZmlsbCB0aGUgZmx1c2ggaXMgICAgICAgICAgICAgICAgICAgICAgICA6XG5cbiAgICAgICBmaWxsX3doZW5fbnVtX3ZhbHVlc19yZWFkIC0gbnVtX3ZhbHVlc19yZWFkXG5cbiAgICAgICBLZWVwaW5nIHRoZSBkYXRhIGluIHRoaXMgZm9ybSBhbGxvd3MgdXMgdG8gY2hhbmdlIGEgc2luZ2xlIGZpZWxkKG51bV92YWx1ZXNfcmVhZClcbiAgICAgICB3aGVuIHdlIGNvbnN1bWUgdmFsdWVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIGl0ZXJhdGUgb3ZlciB0aGUgd2hvbGUgcXVldWUgb2ZcbiAgICAgICBmbHVzaGVzLiAqKVxuICAgIGJsb2NrZWRfZmx1c2hlcyA6IEJsb2NrZWRfZmx1c2gudCBRdWV1ZS50XG4gIDsgKCogW2Jsb2NrZWRfcmVhZHNdIGhvbGRzIHJlYWRzIHRoYXQgYXJlIHdhaXRpbmcgb24gZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZSBwaXBlLiAqKVxuICAgIGJsb2NrZWRfcmVhZHMgOiAnYSBCbG9ja2VkX3JlYWQudCBRdWV1ZS50XG4gIDsgKCogW2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHdyaXRlIGVuZCBvZiB0aGUgcGlwZS4gKilcbiAgICBjbG9zZWQgOiB1bml0IEl2YXIudFxuICA7ICgqIFtyZWFkX2Nsb3NlZF0gaXMgZmlsbGVkIHdoZW4gd2UgY2xvc2UgdGhlIHJlYWQgZW5kIG9mIHRoZSBwaXBlLiAqKVxuICAgIHJlYWRfY2xvc2VkIDogdW5pdCBJdmFyLnRcbiAgOyAoKiBbY29uc3VtZXJzXSBpcyBhIGxpc3Qgb2YgYWxsIGNvbnN1bWVycyB0aGF0IG1heSBiZSBoYW5kbGluZyB2YWx1ZXMgcmVhZCBmcm9tIHRoZVxuICAgICAgIHBpcGUuICopXG4gICAgbXV0YWJsZSBjb25zdW1lcnMgOiBDb25zdW1lci50IGxpc3RcbiAgOyAoKiBbdXBzdHJlYW1fZmx1c2hlZHNdIGhhcyBhIGZ1bmN0aW9uIGZvciBlYWNoIHBpcGUgaW1tZWRpYXRlbHkgdXBzdHJlYW0gb2YgdGhpcyBvbmUuXG4gICAgICAgVGhhdCBmdW5jdGlvbiB3YWxrcyB0byB0aGUgaGVhZChzKSBvZiB0aGUgdXBzdHJlYW0gcGlwZSwgYW5kIGNhbGxzXG4gICAgICAgW2Rvd25zdHJlYW1fZmx1c2hlZF0gb24gdGhlIGhlYWQocykuICBTZWUgdGhlIGRlZmluaXRpb24gb2YgW3Vwc3RyZWFtX2ZsdXNoZWRdXG4gICAgICAgYmVsb3cuICopXG4gICAgdXBzdHJlYW1fZmx1c2hlZHMgOiAodW5pdCAtPiBGbHVzaGVkX3Jlc3VsdC50IERlZmVycmVkLnQpIEJhZy50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxudHlwZSAoJ2EsICdwaGFudG9tKSBwaXBlID0gKCdhLCAncGhhbnRvbSkgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaGFzaCB0ID0gSGFzaHRibC5oYXNoIHQuaWRcbmxldCBlcXVhbCAodDEgOiAoXywgXykgdCkgdDIgPSBwaHlzX2VxdWFsIHQxIHQyXG5sZXQgY29tcGFyZSB0MSB0MiA9IEludC5jb21wYXJlIHQxLmlkIHQyLmlkXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbmxldCBpc19yZWFkX2Nsb3NlZCB0ID0gSXZhci5pc19mdWxsIHQucmVhZF9jbG9zZWRcbmxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxubGV0IHB1c2hiYWNrIHQgPSBJdmFyLnJlYWQgdC5wdXNoYmFja1xubGV0IGxlbmd0aCB0ID0gUXVldWUubGVuZ3RoIHQuYnVmZmVyXG5sZXQgaXNfZW1wdHkgdCA9IGxlbmd0aCB0ID0gMFxuXG5sZXQgaW52YXJpYW50IHQgOiB1bml0ID1cbiAgdHJ5XG4gICAgbGV0IGNoZWNrIGYgZmllbGQgPSBmIChGaWVsZC5nZXQgZmllbGQgdCkgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmlkOmlnbm9yZVxuICAgICAgfmluZm86aWdub3JlXG4gICAgICB+YnVmZmVyOmlnbm9yZVxuICAgICAgfnNpemVfYnVkZ2V0OihjaGVjayAoZnVuIHNpemVfYnVkZ2V0IC0+IGFzc2VydCAoc2l6ZV9idWRnZXQgPj0gMCkpKVxuICAgICAgfnB1c2hiYWNrOlxuICAgICAgICAoY2hlY2sgKGZ1biBwdXNoYmFjayAtPlxuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIEJvb2wuZXF1YWxcbiAgICAgICAgICAgICAgIChJdmFyLmlzX2Z1bGwgcHVzaGJhY2spXG4gICAgICAgICAgICAgICAobGVuZ3RoIHQgPD0gdC5zaXplX2J1ZGdldCB8fCBpc19jbG9zZWQgdCkpKSlcbiAgICAgIH5udW1fdmFsdWVzX3JlYWQ6aWdub3JlXG4gICAgICB+YmxvY2tlZF9mbHVzaGVzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX2ZsdXNoZXMgLT5cbiAgICAgICAgICAgUXVldWUuaXRlciBibG9ja2VkX2ZsdXNoZXMgfmY6KGZ1biAoZiA6IEJsb2NrZWRfZmx1c2gudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKGYuZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA+IHQubnVtX3ZhbHVlc19yZWFkKSk7XG4gICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgTGlzdC5pc19zb3J0ZWRcbiAgICAgICAgICAgICAgIH5jb21wYXJlOkludC5jb21wYXJlXG4gICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChRdWV1ZS50b19saXN0IGJsb2NrZWRfZmx1c2hlcylcbiAgICAgICAgICAgICAgICAgIH5mOkJsb2NrZWRfZmx1c2guZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCkpO1xuICAgICAgICAgICBpZiBpc19lbXB0eSB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX2ZsdXNoZXMpKSlcbiAgICAgIH5ibG9ja2VkX3JlYWRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBibG9ja2VkX3JlYWRzIC0+XG4gICAgICAgICAgICgqIElmIGRhdGEgaXMgYXZhaWxhYmxlLCBubyBvbmUgaXMgd2FpdGluZyBmb3IgaXQuICBUaGlzIHdvdWxkIG5lZWQgdG8gY2hhbmdlIGlmXG4gICAgICAgICAgICAgIHdlIGV2ZXIgaW1wbGVtZW50IFtyZWFkX2V4YWN0bHldIGFzIGFuIGF0b21pYyBvcGVyYXRpb24uICopXG4gICAgICAgICAgIGlmIG5vdCAoaXNfZW1wdHkgdCkgdGhlbiBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IGJsb2NrZWRfcmVhZHMpO1xuICAgICAgICAgICBRdWV1ZS5pdGVyIGJsb2NrZWRfcmVhZHMgfmY6KGZ1biByZWFkIC0+XG4gICAgICAgICAgICAgQmxvY2tlZF9yZWFkLmludmFyaWFudCByZWFkO1xuICAgICAgICAgICAgIGFzc2VydCAoQmxvY2tlZF9yZWFkLmlzX2VtcHR5IHJlYWQpKTtcbiAgICAgICAgICAgKCogWW91IG5ldmVyIGJsb2NrIHRyeWluZyB0byByZWFkIGEgY2xvc2VkIHBpcGUuICopXG4gICAgICAgICAgIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSBibG9ja2VkX3JlYWRzKSkpXG4gICAgICB+Y2xvc2VkOmlnbm9yZVxuICAgICAgfnJlYWRfY2xvc2VkOmlnbm9yZVxuICAgICAgfmNvbnN1bWVyczpcbiAgICAgICAgKGNoZWNrIChmdW4gbCAtPlxuICAgICAgICAgICBMaXN0Lml0ZXIgbCB+ZjooZnVuIGNvbnN1bWVyIC0+XG4gICAgICAgICAgICAgQ29uc3VtZXIuaW52YXJpYW50IGNvbnN1bWVyO1xuICAgICAgICAgICAgIGFzc2VydCAoQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lciA9IHQuaWQpKSkpXG4gICAgICB+dXBzdHJlYW1fZmx1c2hlZHM6aWdub3JlXG4gIHdpdGhcbiAgfCBleG4gLT4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJQaXBlLmludmFyaWFudCBmYWlsZWRcIiAoZXhuIDogZXhuKSB+cGlwZToodCA6IChfLCBfKSB0KV1cbjs7XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgdHlwZSBwaGFudG9tIFtAQGRlcml2aW5nIHNleHBfb2ZdXG4gIHR5cGUgJ2EgdCA9ICgnYSwgcGhhbnRvbSkgcGlwZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgPSBpbnZhcmlhbnRcbmVuZFxuXG5tb2R1bGUgV3JpdGVyID0gc3RydWN0XG4gIHR5cGUgcGhhbnRvbSBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlICdhIHQgPSAoJ2EsIHBoYW50b20pIHBpcGUgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gaW52YXJpYW50XG5lbmRcblxubGV0IGlkX3JlZiA9IHJlZiAwXG5cbmxldCBjcmVhdGVfaW50ZXJuYWwgfnNpemVfYnVkZ2V0IH5pbmZvIH5pbml0aWFsX2J1ZmZlciA9XG4gIGluY3IgaWRfcmVmO1xuICBsZXQgdCA9XG4gICAgeyBpZCA9ICFpZF9yZWZcbiAgICA7IGluZm9cbiAgICA7IGNsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgOyByZWFkX2Nsb3NlZCA9IEl2YXIuY3JlYXRlICgpXG4gICAgO1xuICAgICAgc2l6ZV9idWRnZXRcbiAgICA7IHB1c2hiYWNrID0gSXZhci5jcmVhdGUgKClcbiAgICA7IGJ1ZmZlciA9IGluaXRpYWxfYnVmZmVyXG4gICAgOyBudW1fdmFsdWVzX3JlYWQgPSAwXG4gICAgOyBibG9ja2VkX2ZsdXNoZXMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGJsb2NrZWRfcmVhZHMgPSBRdWV1ZS5jcmVhdGUgKClcbiAgICA7IGNvbnN1bWVycyA9IFtdXG4gICAgOyB1cHN0cmVhbV9mbHVzaGVkcyA9IEJhZy5jcmVhdGUgKClcbiAgICB9XG4gIGluXG4gIHRcbjs7XG5cbmxldCB2YWxpZGF0ZV9zaXplX2J1ZGdldCBzaXplX2J1ZGdldCA9XG4gIGlmIHNpemVfYnVkZ2V0IDwgMFxuICB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwibmVnYXRpdmUgc2l6ZV9idWRnZXRcIiAoc2l6ZV9idWRnZXQgOiBpbnQpXVxuICBlbHNlIHNpemVfYnVkZ2V0XG47O1xuXG5sZXQgY3JlYXRlID9zaXplX2J1ZGdldCA/aW5mbyAoKSA9XG4gIGxldCBzaXplX2J1ZGdldCA9XG4gICAgbWF0Y2ggc2l6ZV9idWRnZXQgd2l0aFxuICAgIHwgU29tZSB2IC0+IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHZcbiAgICB8IE5vbmUgLT4gMFxuICBpblxuICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCB+c2l6ZV9idWRnZXQgfmluZm8gfmluaXRpYWxfYnVmZmVyOihRdWV1ZS5jcmVhdGUgKCkpIGluXG4gICgqIGluaXRpYWxseSwgdGhlIHBpcGUgZG9lcyBub3QgcHVzaGJhY2sgKilcbiAgSXZhci5maWxsIHQucHVzaGJhY2sgKCk7XG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgdCwgdFxuOztcblxubGV0IHVwZGF0ZV9wdXNoYmFjayB0ID1cbiAgaWYgbGVuZ3RoIHQgPD0gdC5zaXplX2J1ZGdldCB8fCBpc19jbG9zZWQgdFxuICB0aGVuIEl2YXIuZmlsbF9pZl9lbXB0eSB0LnB1c2hiYWNrICgpXG4gIGVsc2UgaWYgSXZhci5pc19mdWxsIHQucHVzaGJhY2tcbiAgdGhlbiB0LnB1c2hiYWNrIDwtIEl2YXIuY3JlYXRlICgpXG47O1xuXG5sZXQgY2xvc2UgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBub3QgKGlzX2Nsb3NlZCB0KVxuICB0aGVuIChcbiAgICBJdmFyLmZpbGwgdC5jbG9zZWQgKCk7XG4gICAgaWYgaXNfZW1wdHkgdFxuICAgIHRoZW4gKFxuICAgICAgUXVldWUuaXRlciB0LmJsb2NrZWRfcmVhZHMgfmY6QmxvY2tlZF9yZWFkLmZpbGxfd2l0aF9lb2Y7XG4gICAgICBRdWV1ZS5jbGVhciB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0KVxuOztcblxubGV0IGNsb3NlX3JlYWQgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcImNsb3NlX3JlYWRcIiB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGlmIG5vdCAoaXNfcmVhZF9jbG9zZWQgdClcbiAgdGhlbiAoXG4gICAgSXZhci5maWxsIHQucmVhZF9jbG9zZWQgKCk7XG4gICAgUXVldWUuaXRlciB0LmJsb2NrZWRfZmx1c2hlcyB+ZjooZnVuIGZsdXNoIC0+IEJsb2NrZWRfZmx1c2guZmlsbCBmbHVzaCBgUmVhZGVyX2Nsb3NlZCk7XG4gICAgUXVldWUuY2xlYXIgdC5ibG9ja2VkX2ZsdXNoZXM7XG4gICAgUXVldWUuY2xlYXIgdC5idWZmZXI7XG4gICAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gICAgKCogd2UganVzdCBjbGVhcmVkIHRoZSBidWZmZXIsIHNvIG1heSBuZWVkIHRvIGZpbGwgW3QucHVzaGJhY2tdICopXG4gICAgY2xvc2UgdClcbjs7XG5cbmxldCBjcmVhdGVfcmVhZGVyX25vdF9jbG9zZV9vbl9leGNlcHRpb24gP3NpemVfYnVkZ2V0IGYgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgdXBvbiAoZiB3KSAoZnVuICgpIC0+IGNsb3NlIHcpO1xuICByXG47O1xuXG5sZXQgY3JlYXRlX3JlYWRlciA/c2l6ZV9idWRnZXQgfmNsb3NlX29uX2V4Y2VwdGlvbiBmID1cbiAgaWYgbm90IGNsb3NlX29uX2V4Y2VwdGlvblxuICB0aGVuIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiA/c2l6ZV9idWRnZXQgZlxuICBlbHNlIChcbiAgICBsZXQgciwgdyA9IGNyZWF0ZSA/c2l6ZV9idWRnZXQgKCkgaW5cbiAgICBkb24ndF93YWl0X2ZvclxuICAgICAgKE1vbml0b3IucHJvdGVjdFxuICAgICAgICAgfnJ1bjpcbiAgICAgICAgICAgYFNjaGVkdWxlXG4gICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgICAoZnVuICgpIC0+IGYgdylcbiAgICAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgICAgY2xvc2UgdztcbiAgICAgICAgICAgcmV0dXJuICgpKSk7XG4gICAgcilcbjs7XG5cbmxldCBjcmVhdGVfd3JpdGVyID9zaXplX2J1ZGdldCBmID1cbiAgbGV0IHIsIHcgPSBjcmVhdGUgP3NpemVfYnVkZ2V0ICgpIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKE1vbml0b3IucHJvdGVjdFxuICAgICAgIH5ydW46XG4gICAgICAgICBgU2NoZWR1bGVcbiAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgKGZ1biAoKSAtPiBmIHIpXG4gICAgICAgfmZpbmFsbHk6KGZ1biAoKSAtPlxuICAgICAgICAgY2xvc2VfcmVhZCByO1xuICAgICAgICAgcmV0dXJuICgpKSk7XG4gIHdcbjs7XG5cbmxldCB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXIgPVxuICBPcHRpb24uaXRlciBjb25zdW1lciB+ZjpDb25zdW1lci5zdGFydDtcbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBtYXRjaCBRdWV1ZS5wZWVrIHQuYmxvY2tlZF9mbHVzaGVzIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZmx1c2ggLT5cbiAgICAgIGlmIHQubnVtX3ZhbHVlc19yZWFkID49IGZsdXNoLmZpbGxfd2hlbl9udW1fdmFsdWVzX3JlYWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBpZ25vcmUgKFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9mbHVzaGVzIDogQmxvY2tlZF9mbHVzaC50KTtcbiAgICAgICAgKG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggYE9rXG4gICAgICAgICB8IFNvbWUgY29uc3VtZXIgLT5cbiAgICAgICAgICAgdXBvbiAoQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbV9hbmRfZmx1c2hlZCBjb25zdW1lcikgKGZ1biBmbHVzaF9yZXN1bHQgLT5cbiAgICAgICAgICAgICBCbG9ja2VkX2ZsdXNoLmZpbGwgZmx1c2ggZmx1c2hfcmVzdWx0KSk7XG4gICAgICAgIGxvb3AgKCkpXG4gIGluXG4gIGxvb3AgKClcbjs7XG5cbigqIFtjb25zdW1lX2FsbCB0XSByZWFkcyBhbGwgdGhlIGVsZW1lbnRzIGluIFt0XS4gKilcbmxldCBjb25zdW1lX2FsbCB0IGNvbnN1bWVyID1cbiAgbGV0IHJlc3VsdCA9IHQuYnVmZmVyIGluXG4gIHQuYnVmZmVyIDwtIFF1ZXVlLmNyZWF0ZSAoKTtcbiAgdC5udW1fdmFsdWVzX3JlYWQgPC0gdC5udW1fdmFsdWVzX3JlYWQgKyBRdWV1ZS5sZW5ndGggcmVzdWx0O1xuICB2YWx1ZXNfd2VyZV9yZWFkIHQgY29uc3VtZXI7XG4gIHVwZGF0ZV9wdXNoYmFjayB0O1xuICByZXN1bHRcbjs7XG5cbmxldCBjb25zdW1lX29uZSB0IGNvbnN1bWVyID1cbiAgYXNzZXJ0IChsZW5ndGggdCA+PSAxKTtcbiAgbGV0IHJlc3VsdCA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuYnVmZmVyIGluXG4gIHQubnVtX3ZhbHVlc19yZWFkIDwtIHQubnVtX3ZhbHVlc19yZWFkICsgMTtcbiAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICB1cGRhdGVfcHVzaGJhY2sgdDtcbiAgcmVzdWx0XG47O1xuXG5sZXQgY29uc3VtZSB0IH5tYXhfcXVldWVfbGVuZ3RoIGNvbnN1bWVyID1cbiAgYXNzZXJ0IChtYXhfcXVldWVfbGVuZ3RoID49IDApO1xuICBpZiBtYXhfcXVldWVfbGVuZ3RoID49IGxlbmd0aCB0XG4gIHRoZW4gY29uc3VtZV9hbGwgdCBjb25zdW1lclxuICBlbHNlIChcbiAgICB0Lm51bV92YWx1ZXNfcmVhZCA8LSB0Lm51bV92YWx1ZXNfcmVhZCArIG1heF9xdWV1ZV9sZW5ndGg7XG4gICAgdmFsdWVzX3dlcmVfcmVhZCB0IGNvbnN1bWVyO1xuICAgIGxldCByZXN1bHQgPSBRdWV1ZS5jcmVhdGUgfmNhcGFjaXR5Om1heF9xdWV1ZV9sZW5ndGggKCkgaW5cbiAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6dC5idWZmZXIgfmRzdDpyZXN1bHQgfmxlbjptYXhfcXVldWVfbGVuZ3RoICgpO1xuICAgIHVwZGF0ZV9wdXNoYmFjayB0O1xuICAgIHJlc3VsdClcbjs7XG5cbmxldCBzZXRfc2l6ZV9idWRnZXQgdCBzaXplX2J1ZGdldCA9XG4gIGxldCBzaXplX2J1ZGdldCA9IHZhbGlkYXRlX3NpemVfYnVkZ2V0IHNpemVfYnVkZ2V0IGluXG4gIHQuc2l6ZV9idWRnZXQgPC0gc2l6ZV9idWRnZXQ7XG4gIHVwZGF0ZV9wdXNoYmFjayB0XG47O1xuXG5sZXQgZmlsbF9ibG9ja2VkX3JlYWRzIHQgPVxuICB3aGlsZSAobm90IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpKSAmJiBub3QgKGlzX2VtcHR5IHQpIGRvXG4gICAgbGV0IGJsb2NrZWRfcmVhZCA9IFF1ZXVlLmRlcXVldWVfZXhuIHQuYmxvY2tlZF9yZWFkcyBpblxuICAgIGxldCBjb25zdW1lciA9IGJsb2NrZWRfcmVhZC5jb25zdW1lciBpblxuICAgIG1hdGNoIGJsb2NrZWRfcmVhZC53YW50cyB3aXRoXG4gICAgfCBaZXJvIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYE9rXG4gICAgfCBPbmUgaXZhciAtPiBJdmFyLmZpbGwgaXZhciAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSlcbiAgICB8IEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpIC0+XG4gICAgICBJdmFyLmZpbGwgaXZhciAoYE9rIChjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpKVxuICBkb25lXG47O1xuXG4oKiBjaGVja3MgYWxsIGludmFyaWFudHMsIGNhbGxzIGEgcGFzc2VkIGluIGYgdG8gaGFuZGxlIGEgd3JpdGUsIHRoZW4gdXBkYXRlcyByZWFkcyBhbmRcbiAgIHB1c2hiYWNrICopXG5sZXQgc3RhcnRfd3JpdGUgdCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBcIndyaXRlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgaWYgIWNoZWNrX2ludmFyaWFudCB0aGVuIGludmFyaWFudCB0O1xuICBpZiBpc19jbG9zZWQgdCB0aGVuIHJhaXNlX3MgWyVtZXNzYWdlIFwid3JpdGUgdG8gY2xvc2VkIHBpcGVcIiB+cGlwZToodCA6IChfLCBfKSB0KV1cbjs7XG5cbmxldCBmaW5pc2hfd3JpdGUgdCA9XG4gIGZpbGxfYmxvY2tlZF9yZWFkcyB0O1xuICB1cGRhdGVfcHVzaGJhY2sgdFxuOztcblxubGV0IHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbSA9XG4gIHN0YXJ0X3dyaXRlIHQ7XG4gIFF1ZXVlLmJsaXRfdHJhbnNmZXIgfnNyYzpmcm9tIH5kc3Q6dC5idWZmZXIgKCk7XG4gIGZpbmlzaF93cml0ZSB0XG47O1xuXG5sZXQgdHJhbnNmZXJfaW4gdCB+ZnJvbSA9XG4gIHRyYW5zZmVyX2luX3dpdGhvdXRfcHVzaGJhY2sgdCB+ZnJvbTtcbiAgcHVzaGJhY2sgdFxuOztcblxubGV0IGNvcHlfaW5fd2l0aG91dF9wdXNoYmFjayB0IH5mcm9tID1cbiAgc3RhcnRfd3JpdGUgdDtcbiAgUXVldWUuaXRlciBmcm9tIH5mOihmdW4geCAtPiBRdWV1ZS5lbnF1ZXVlIHQuYnVmZmVyIHgpO1xuICBmaW5pc2hfd3JpdGUgdFxuOztcblxuKCogW3dyaXRlJ10gaXMgdXNlZCBpbnRlcm5hbGx5ICopXG5sZXQgd3JpdGUnIHQgcSA9IHRyYW5zZmVyX2luIHQgfmZyb206cVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlID1cbiAgc3RhcnRfd3JpdGUgdDtcbiAgUXVldWUuZW5xdWV1ZSB0LmJ1ZmZlciB2YWx1ZTtcbiAgZmluaXNoX3dyaXRlIHRcbjs7XG5cbmxldCB3cml0ZSB0IHZhbHVlID1cbiAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHZhbHVlO1xuICBwdXNoYmFjayB0XG47O1xuXG5sZXQgd3JpdGVfd2hlbl9yZWFkeSB0IH5mID1cbiAgbGV0JW1hcCAoKSA9IHB1c2hiYWNrIHQgaW5cbiAgaWYgaXNfY2xvc2VkIHQgdGhlbiBgQ2xvc2VkIGVsc2UgYE9rIChmIChmdW4geCAtPiB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeCkpXG47O1xuXG5sZXQgd3JpdGVfaWZfb3BlbiB0IHggPSBpZiBub3QgKGlzX2Nsb3NlZCB0KSB0aGVuIHdyaXRlIHQgeCBlbHNlIHJldHVybiAoKVxuXG5sZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFja19pZl9vcGVuIHQgeCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpIHRoZW4gd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHhcbjs7XG5cbmxldCBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyA/Y29uc3VtZXIgdCA9XG4gIG1hdGNoIGNvbnN1bWVyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBjb25zdW1lciAtPlxuICAgIGlmIHQuaWQgPD4gQ29uc3VtZXIucGlwZV9pZCBjb25zdW1lclxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgXCJBdHRlbXB0IHRvIHVzZSBjb25zdW1lciB3aXRoIHdyb25nIHBpcGVcIlxuICAgICAgICAgICAgKGNvbnN1bWVyIDogQ29uc3VtZXIudClcbiAgICAgICAgICAgIH5waXBlOih0IDogXyBSZWFkZXIudCldXG47O1xuXG5sZXQgc3RhcnRfcmVhZCA/Y29uc3VtZXIgdCBsYWJlbCA9XG4gIGlmICFzaG93X2RlYnVnX21lc3NhZ2VzIHRoZW4gZXByaW50cyBsYWJlbCB0IFslc2V4cF9vZjogKF8sIF8pIHRdO1xuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gaW52YXJpYW50IHQ7XG4gIGVuc3VyZV9jb25zdW1lcl9tYXRjaGVzIHQgP2NvbnN1bWVyXG47O1xuXG5sZXQgZ2VuX3JlYWRfbm93ID9jb25zdW1lciB0IGNvbnN1bWUgPVxuICBzdGFydF9yZWFkIHQgXCJyZWFkX25vd1wiID9jb25zdW1lcjtcbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIGlmIGlzX2Nsb3NlZCB0IHRoZW4gYEVvZiBlbHNlIGBOb3RoaW5nX2F2YWlsYWJsZVxuICBlbHNlIChcbiAgICBhc3NlcnQgKFF1ZXVlLmlzX2VtcHR5IHQuYmxvY2tlZF9yZWFkcyk7XG4gICAgKCogZnJvbSBbaW52YXJpYW50XSBhbmQgW25vdCAoaXNfZW1wdHkgdCldICopXG4gICAgYE9rIChjb25zdW1lIHQgY29uc3VtZXIpKVxuOztcblxubGV0IGdldF9tYXhfcXVldWVfbGVuZ3RoIH5tYXhfcXVldWVfbGVuZ3RoID1cbiAgbWF0Y2ggbWF4X3F1ZXVlX2xlbmd0aCB3aXRoXG4gIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gIHwgU29tZSBtYXhfcXVldWVfbGVuZ3RoIC0+XG4gICAgaWYgbWF4X3F1ZXVlX2xlbmd0aCA8PSAwXG4gICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIm1heF9xdWV1ZV9sZW5ndGggPD0gMFwiIChtYXhfcXVldWVfbGVuZ3RoIDogaW50KV07XG4gICAgbWF4X3F1ZXVlX2xlbmd0aFxuOztcblxubGV0IHJlYWRfbm93JyA/Y29uc3VtZXIgP21heF9xdWV1ZV9sZW5ndGggdCA9XG4gIGxldCBtYXhfcXVldWVfbGVuZ3RoID0gZ2V0X21heF9xdWV1ZV9sZW5ndGggfm1heF9xdWV1ZV9sZW5ndGggaW5cbiAgZ2VuX3JlYWRfbm93IHQgP2NvbnN1bWVyIChmdW4gdCBjb25zdW1lciAtPiBjb25zdW1lIHQgfm1heF9xdWV1ZV9sZW5ndGggY29uc3VtZXIpXG47O1xuXG5sZXQgcmVhZF9ub3cgP2NvbnN1bWVyIHQgPSBnZW5fcmVhZF9ub3cgdCA/Y29uc3VtZXIgY29uc3VtZV9vbmVcbmxldCBwZWVrIHQgPSBRdWV1ZS5wZWVrIHQuYnVmZmVyXG5cbmxldCBjbGVhciB0ID1cbiAgbWF0Y2ggcmVhZF9ub3cnIHQgd2l0aFxuICB8IGBFb2YgfCBgTm90aGluZ19hdmFpbGFibGUgfCBgT2sgXyAtPiAoKVxuOztcblxubGV0IHJlYWQnID9jb25zdW1lciA/bWF4X3F1ZXVlX2xlbmd0aCB0ID1cbiAgbGV0IG1heF9xdWV1ZV9sZW5ndGggPSBnZXRfbWF4X3F1ZXVlX2xlbmd0aCB+bWF4X3F1ZXVlX2xlbmd0aCBpblxuICBzdGFydF9yZWFkIHQgXCJyZWFkJ1wiID9jb25zdW1lcjtcbiAgbWF0Y2ggcmVhZF9ub3cnIHQgP2NvbnN1bWVyIH5tYXhfcXVldWVfbGVuZ3RoIHdpdGhcbiAgfCAoYE9rIF8gfCBgRW9mKSBhcyByIC0+IHJldHVybiByXG4gIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgUXVldWUuZW5xdWV1ZVxuICAgICAgICB0LmJsb2NrZWRfcmVhZHNcbiAgICAgICAgKEJsb2NrZWRfcmVhZC5jcmVhdGUgKEF0X21vc3QgKG1heF9xdWV1ZV9sZW5ndGgsIGl2YXIpKSBjb25zdW1lcikpXG47O1xuXG5sZXQgcmVhZCA/Y29uc3VtZXIgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInJlYWRcIiA/Y29uc3VtZXI7XG4gIGlmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGlmIGlzX2Nsb3NlZCB0XG4gICAgdGhlbiByZXR1cm4gYEVvZlxuICAgIGVsc2VcbiAgICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIGl2YXIgLT5cbiAgICAgICAgUXVldWUuZW5xdWV1ZSB0LmJsb2NrZWRfcmVhZHMgKEJsb2NrZWRfcmVhZC4oY3JlYXRlIChPbmUgaXZhcikpIGNvbnN1bWVyKSlcbiAgZWxzZSAoXG4gICAgYXNzZXJ0IChRdWV1ZS5pc19lbXB0eSB0LmJsb2NrZWRfcmVhZHMpO1xuICAgIHJldHVybiAoYE9rIChjb25zdW1lX29uZSB0IGNvbnN1bWVyKSkpXG47O1xuXG5sZXQgcmVhZF9leG4gP2NvbnN1bWVyIHQgPVxuICBtYXRjaCVtYXAgcmVhZCA/Y29uc3VtZXIgdCB3aXRoXG4gIHwgYE9rIHZhbHVlIC0+IHZhbHVlXG4gIHwgYEVvZiAtPiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leG46IHJlY2VpdmVkIEVPRlwiXVxuOztcblxubGV0IHZhbHVlc19hdmFpbGFibGUgdCA9XG4gIHN0YXJ0X3JlYWQgdCBcInZhbHVlc19hdmFpbGFibGVcIjtcbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiBgT2tcbiAgZWxzZSBpZiBpc19jbG9zZWQgdFxuICB0aGVuIHJldHVybiBgRW9mXG4gIGVsc2UgKFxuICAgIG1hdGNoIFF1ZXVlLmxhc3QgdC5ibG9ja2VkX3JlYWRzIHdpdGhcbiAgICB8IFNvbWUgeyBjb25zdW1lciA9IE5vbmU7IHdhbnRzID0gWmVybyBpdmFyIH0gLT5cbiAgICAgICgqIFRoaXMgY2FzZSBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIG11bHRpcGxlIGNhbGxzIHRvIFt2YWx1ZXNfYXZhaWxhYmxlXSBpblxuICAgICAgICAgc2VxdWVuY2UuICBJdCBjYXVzZXMgdGhlbSB0byBhbGwgc2hhcmUgdGhlIHNhbWUgaXZhciwgcmF0aGVyIHRoYW4gYWxsb2NhdGVcbiAgICAgICAgIGFuIGl2YXIgcGVyIGNhbGwuICopXG4gICAgICBJdmFyLnJlYWQgaXZhclxuICAgIHwgXyAtPlxuICAgICAgRGVmZXJyZWQuY3JlYXRlIChmdW4gaXZhciAtPlxuICAgICAgICBRdWV1ZS5lbnF1ZXVlIHQuYmxvY2tlZF9yZWFkcyAoQmxvY2tlZF9yZWFkLihjcmVhdGUgKFplcm8gaXZhcikpIE5vbmUpKSlcbjs7XG5cbmxldCByZWFkX2Nob2ljZSB0ID0gY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIHQpIChmdW4gKF8gOiBbIGBPayB8IGBFb2YgXSkgLT4gcmVhZF9ub3cgdClcblxubGV0IHJlYWRfY2hvaWNlX3NpbmdsZV9jb25zdW1lcl9leG4gdCBoZXJlID1cbiAgRGVmZXJyZWQuQ2hvaWNlLm1hcCAocmVhZF9jaG9pY2UgdCkgfmY6KGZ1bmN0aW9uXG4gICAgfCAoYE9rIF8gfCBgRW9mKSBhcyB4IC0+IHhcbiAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcIlBpcGUucmVhZF9jaG9pY2Vfc2luZ2xlX2NvbnN1bWVyX2V4bjogY2hvaWNlIHdhcyBlbmFibGVkIGJ1dCBwaXBlIGlzIGVtcHR5OyBcXFxuICAgICAgICAgICB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbiB3aXRoIG9uZSBvciBtb3JlIG90aGVyIGNvbnN1bWVyc1wiXG4gICAgICAgICAgICAoaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpXSlcbjs7XG5cbigqIFtyZWFkX2V4YWN0bHkgdCB+bnVtX3ZhbHVlc10gbG9vcHMsIGdldHRpbmcgeW91IGFsbCBbbnVtX3ZhbHVlc10gaXRlbXMsIHVwXG4gICB0byBFT0YuICopXG5sZXQgcmVhZF9leGFjdGx5ID9jb25zdW1lciB0IH5udW1fdmFsdWVzID1cbiAgc3RhcnRfcmVhZCB0IFwicmVhZF9leGFjdGx5XCIgP2NvbnN1bWVyO1xuICBpZiBudW1fdmFsdWVzIDw9IDBcbiAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIlBpcGUucmVhZF9leGFjdGx5IGdvdCBudW1fdmFsdWVzIDw9IDBcIiAobnVtX3ZhbHVlcyA6IGludCldO1xuICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBmaW5pc2ggLT5cbiAgICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGxldCBhbHJlYWR5X3JlYWQgPSBRdWV1ZS5sZW5ndGggcmVzdWx0IGluXG4gICAgICBhc3NlcnQgKGFscmVhZHlfcmVhZCA8PSBudW1fdmFsdWVzKTtcbiAgICAgIGlmIGFscmVhZHlfcmVhZCA9IG51bV92YWx1ZXNcbiAgICAgIHRoZW4gSXZhci5maWxsIGZpbmlzaCAoYEV4YWN0bHkgcmVzdWx0KVxuICAgICAgZWxzZVxuICAgICAgICByZWFkJyA/Y29uc3VtZXIgdCB+bWF4X3F1ZXVlX2xlbmd0aDoobnVtX3ZhbHVlcyAtIGFscmVhZHlfcmVhZClcbiAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgZmluaXNoIChpZiBhbHJlYWR5X3JlYWQgPSAwIHRoZW4gYEVvZiBlbHNlIGBGZXdlciByZXN1bHQpXG4gICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICBRdWV1ZS5ibGl0X3RyYW5zZmVyIH5zcmM6cSB+ZHN0OnJlc3VsdCAoKTtcbiAgICAgICAgICBsb29wICgpXG4gICAgaW5cbiAgICBsb29wICgpKVxuOztcblxubGV0IGRvd25zdHJlYW1fZmx1c2hlZCB0ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuXG4gICAgaWYgTGlzdC5pc19lbXB0eSB0LmNvbnN1bWVyc1xuICAgIHRoZW4gcmV0dXJuIGBPa1xuICAgIGVsc2VcbiAgICAgIEZsdXNoZWRfcmVzdWx0LmNvbWJpbmVcbiAgICAgICAgKExpc3QubWFwIHQuY29uc3VtZXJzIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW1fYW5kX2ZsdXNoZWQpXG4gIGVsc2VcbiAgICAoKiBbdF0gbWlnaHQgYmUgY2xvc2VkLiAgQnV0IHRoZSByZWFkIGVuZCBjYW4ndCBiZSBjbG9zZWQsIGJlY2F1c2UgaWYgaXQgd2VyZSwgdGhlblxuICAgICAgIFt0XSB3b3VsZCBiZSBlbXB0eS4gIElmIHRoZSB3cml0ZSBlbmQgaXMgY2xvc2VkIGJ1dCBub3QgdGhlIHJlYWQgZW5kLCB0aGVuIHdlIHdhbnRcbiAgICAgICB0byBlbnF1ZXVlIGEgYmxvY2tlZCBmbHVzaCBiZWNhdXNlIHRoZSBlbnF1ZXVlZCB2YWx1ZXMgbWF5IGdldCByZWFkLiAqKVxuICAgIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlYWR5IC0+XG4gICAgICBRdWV1ZS5lbnF1ZXVlXG4gICAgICAgIHQuYmxvY2tlZF9mbHVzaGVzXG4gICAgICAgIHsgZmlsbF93aGVuX251bV92YWx1ZXNfcmVhZCA9IHQubnVtX3ZhbHVlc19yZWFkICsgbGVuZ3RoIHQ7IHJlYWR5IH0pXG47O1xuXG4oKiBJbiBwcmFjdGljZSwgYWxvbmcgd2l0aCBbTGluay5jcmVhdGVdIGFuZCBbYWRkX3Vwc3RyZWFtX2ZsdXNoZWRdLCBbdXBzdHJlYW1fZmx1c2hlZF1cbiAgIHRyYXZlcnNlcyB0aGUgZ3JhcGggb2YgbGlua2VkIHBpcGVzIHVwIHRvIHRoZSBoZWFkcyBhbmQgdGhlbiBjYWxscyBbZG93bnN0cmVhbV9mbHVzaGVkXVxuICAgb24gdGhlbS4gKilcbmxldCB1cHN0cmVhbV9mbHVzaGVkIHQgPVxuICBpZiBCYWcuaXNfZW1wdHkgdC51cHN0cmVhbV9mbHVzaGVkc1xuICB0aGVuIGRvd25zdHJlYW1fZmx1c2hlZCB0XG4gIGVsc2VcbiAgICBCYWcudG9fbGlzdCB0LnVwc3RyZWFtX2ZsdXNoZWRzXG4gICAgfD4gTGlzdC5tYXAgfmY6KGZ1biBmIC0+IGYgKCkpXG4gICAgfD4gRmx1c2hlZF9yZXN1bHQuY29tYmluZVxuOztcblxubGV0IGFkZF91cHN0cmVhbV9mbHVzaGVkIHQgdXBzdHJlYW1fZmx1c2hlZCA9IEJhZy5hZGQgdC51cHN0cmVhbV9mbHVzaGVkcyB1cHN0cmVhbV9mbHVzaGVkXG5cbmxldCBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkID1cbiAgbGV0IGNvbnN1bWVyID0gQ29uc3VtZXIuY3JlYXRlIH5waXBlX2lkOnQuaWQgfmRvd25zdHJlYW1fZmx1c2hlZCBpblxuICB0LmNvbnN1bWVycyA8LSBjb25zdW1lciA6OiB0LmNvbnN1bWVycztcbiAgY29uc3VtZXJcbjs7XG5cbigqIEEgW0xpbmsudF0gbGlua3MgZmx1c2hpbmcgb2YgdHdvIHBpcGVzIHRvZ2V0aGVyLiAqKVxubW9kdWxlIExpbmsgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVwc3RyZWFtOihfLCBfKSBwaXBlIC0+IGRvd25zdHJlYW06KF8sIF8pIHBpcGUgLT4gdFxuICB2YWwgY29uc3VtZXIgOiB0IC0+IENvbnN1bWVyLnRcblxuICAoKiBbdW5saW5rX3Vwc3RyZWFtXSByZW1vdmVzIGRvd25zdHJlYW0ncyByZWZlcmVuY2UgdG8gdXBzdHJlYW0uICopXG5cbiAgdmFsIHVubGlua191cHN0cmVhbSA6IHQgLT4gdW5pdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgdW5wYWNrZWQgPVxuICAgIHsgZG93bnN0cmVhbSA6ICgnYSwgJ2IpIHRcbiAgICA7IGNvbnN1bWVyIDogQ29uc3VtZXIudFxuICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA6ICh1bml0IC0+IEZsdXNoZWRfcmVzdWx0LnQgRGVmZXJyZWQudCkgQmFnLkVsdC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAoXywgXykgdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBjb25zdW1lciAoVCB0KSA9IHQuY29uc3VtZXJcblxuICBsZXQgY3JlYXRlIH51cHN0cmVhbSB+ZG93bnN0cmVhbSA9XG4gICAgVFxuICAgICAgeyBkb3duc3RyZWFtXG4gICAgICA7IGNvbnN1bWVyID1cbiAgICAgICAgICBhZGRfY29uc3VtZXIgdXBzdHJlYW0gfmRvd25zdHJlYW1fZmx1c2hlZDooZnVuICgpIC0+XG4gICAgICAgICAgICBkb3duc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSlcbiAgICAgIDsgdXBzdHJlYW1fZmx1c2hlZHNfYmFnX2VsdCA9XG4gICAgICAgICAgYWRkX3Vwc3RyZWFtX2ZsdXNoZWQgZG93bnN0cmVhbSAoZnVuICgpIC0+IHVwc3RyZWFtX2ZsdXNoZWQgdXBzdHJlYW0pXG4gICAgICB9XG4gIDs7XG5cbiAgbGV0IHVubGlua191cHN0cmVhbSAoVCB0KSA9XG4gICAgQmFnLnJlbW92ZSB0LmRvd25zdHJlYW0udXBzdHJlYW1fZmx1c2hlZHMgdC51cHN0cmVhbV9mbHVzaGVkc19iYWdfZWx0XG4gIDs7XG5lbmRcblxubW9kdWxlIEZsdXNoZWQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENvbnN1bWVyIG9mIENvbnN1bWVyLnRcbiAgICB8IFdoZW5fdmFsdWVfcHJvY2Vzc2VkXG4gICAgfCBXaGVuX3ZhbHVlX3JlYWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG5sZXQgZm9sZF9nZW5cbiAgICAgIChyZWFkX25vdyA6ID9jb25zdW1lcjpDb25zdW1lci50IC0+IF8gUmVhZGVyLnQgLT4gXylcbiAgICAgID8oZmx1c2hlZCA9IEZsdXNoZWQuV2hlbl92YWx1ZV9yZWFkKVxuICAgICAgdFxuICAgICAgfmluaXRcbiAgICAgIH5mXG4gID1cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBtYXRjaCBmbHVzaGVkIHdpdGhcbiAgICB8IFdoZW5fdmFsdWVfcmVhZCAtPiBOb25lXG4gICAgfCBDb25zdW1lciBjb25zdW1lciAtPiBTb21lIGNvbnN1bWVyXG4gICAgfCBXaGVuX3ZhbHVlX3Byb2Nlc3NlZCAtPlxuICAgICAgKCogVGhlIGZhY3QgdGhhdCBcIm5vIGNvbnN1bWVyXCIgYmVoYXZlcyBkaWZmZXJlbnQgZnJvbSBcInRyaXZpYWwgY29uc3VtZXJcIiBpcyB3ZWlyZCxcbiAgICAgICAgIGJ1dCB0aGF0J3MgaG93IHRoZSBjb25zdW1lciBtYWNoaW5lcnkgd29ya3MuICopXG4gICAgICBTb21lIChhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT4gcmV0dXJuIGBPaykpXG4gIGluXG4gIGlmICFjaGVja19pbnZhcmlhbnQgdGhlbiBpbnZhcmlhbnQgdDtcbiAgZW5zdXJlX2NvbnN1bWVyX21hdGNoZXMgdCA/Y29uc3VtZXI7XG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3JldHVybiAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gKilcbiAgICByZXR1cm4gKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IHJlYyBsb29wIGIgPVxuICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgfCBgRW9mIC0+IEl2YXIuZmlsbCBmaW5pc2hlZCBiXG4gICAgICB8IGBPayB2IC0+IGYgYiB2IGNvbnRpbnVlXG4gICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IGxvb3AgYlxuICAgIGFuZCBjb250aW51ZSBiID1cbiAgICAgIE9wdGlvbi5pdGVyIGNvbnN1bWVyIH5mOkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW07XG4gICAgICBsb29wIGJcbiAgICBpblxuICAgIGxvb3AgaW5pdClcbjs7XG5cbmxldCBmb2xkJyA/Zmx1c2hlZCA/bWF4X3F1ZXVlX2xlbmd0aCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgcSBsb29wIC0+XG4gICAgZiBiIHEgPj4+IGxvb3ApXG47O1xuXG5sZXQgZm9sZCA/Zmx1c2hlZCB0IH5pbml0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdCB+ZjooZnVuIGIgYSBsb29wIC0+IGYgYiBhID4+PiBsb29wKVxuOztcblxubGV0IGZvbGRfd2l0aG91dF9wdXNoYmFjayA/Y29uc3VtZXIgdCB+aW5pdCB+ZiA9XG4gIGZvbGRfZ2VuXG4gICAgcmVhZF9ub3dcbiAgICB0XG4gICAgfmluaXRcbiAgICB+ZjooZnVuIGIgYSBsb29wIC0+IGxvb3AgKGYgYiBhKSlcbiAgICA/Zmx1c2hlZDpcbiAgICAgIChtYXRjaCBjb25zdW1lciB3aXRoXG4gICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICB8IFNvbWUgYyAtPiBTb21lIChDb25zdW1lciBjKSlcbjs7XG5cbmxldCB3aXRoX2Vycm9yX3RvX2N1cnJlbnRfbW9uaXRvciA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpIGYgYSA9XG4gIGlmIG5vdCBjb250aW51ZV9vbl9lcnJvclxuICB0aGVuIGYgYVxuICBlbHNlIChcbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpcbiAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICAoZnVuICgpIC0+IGYgYSlcbiAgICB3aXRoXG4gICAgfCBPayAoKSAtPiAoKVxuICAgIHwgRXJyb3IgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgKE1vbml0b3IuZXh0cmFjdF9leG4gZXhuKSlcbjs7XG5cbmxldCBpdGVyJyA/Y29udGludWVfb25fZXJyb3IgP2ZsdXNoZWQgP21heF9xdWV1ZV9sZW5ndGggdCB+ZiA9XG4gIGZvbGQnID9tYXhfcXVldWVfbGVuZ3RoID9mbHVzaGVkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBxIC0+XG4gICAgd2l0aF9lcnJvcl90b19jdXJyZW50X21vbml0b3IgP2NvbnRpbnVlX29uX2Vycm9yIGYgcSlcbjs7XG5cbmxldCBpdGVyID9jb250aW51ZV9vbl9lcnJvciA/Zmx1c2hlZCB0IH5mID1cbiAgZm9sZF9nZW4gcmVhZF9ub3cgP2ZsdXNoZWQgdCB+aW5pdDooKSB+ZjooZnVuICgpIGEgbG9vcCAtPlxuICAgIHdpdGhfZXJyb3JfdG9fY3VycmVudF9tb25pdG9yID9jb250aW51ZV9vbl9lcnJvciBmIGEgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuOztcblxuKCogW2l0ZXJfd2l0aG91dF9wdXNoYmFja10gaXMgYSBjb21tb24gY2FzZSwgc28gd2UgaW1wbGVtZW50IGl0IGluIGFuIG9wdGltaXplZCBtYW5uZXIsXG4gICByYXRoZXIgdGhhbiB2aWEgW2l0ZXJdLiAgVGhlIGltcGxlbWVudGF0aW9uIHJlYWRzIG9ubHkgb25lIGVsZW1lbnQgYXQgYSB0aW1lLCBzbyB0aGF0XG4gICBpZiBbZl0gY2xvc2VzIFt0XSBvciByYWlzZXMsIG5vIG1vcmUgZWxlbWVudHMgd2lsbCBiZSByZWFkLiAqKVxubGV0IGl0ZXJfd2l0aG91dF9wdXNoYmFja1xuICAgICAgP2NvbnN1bWVyXG4gICAgICA/KGNvbnRpbnVlX29uX2Vycm9yID0gZmFsc2UpXG4gICAgICA/bWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICAgICAgdFxuICAgICAgfmZcbiAgPVxuICBlbnN1cmVfY29uc3VtZXJfbWF0Y2hlcyB0ID9jb25zdW1lcjtcbiAgbGV0IG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPVxuICAgIG1hdGNoIG1heF9pdGVyYXRpb25zX3Blcl9qb2Igd2l0aFxuICAgIHwgTm9uZSAtPiBJbnQubWF4X3ZhbHVlXG4gICAgfCBTb21lIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgLT5cbiAgICAgIGlmIG1heF9pdGVyYXRpb25zX3Blcl9qb2IgPD0gMFxuICAgICAgdGhlblxuICAgICAgICByYWlzZV9zXG4gICAgICAgICAgWyVtZXNzYWdlXG4gICAgICAgICAgICBcIml0ZXJfd2l0aG91dF9wdXNoYmFjayBnb3Qgbm9uLXBvc2l0aXZlIG1heF9pdGVyYXRpb25zX3Blcl9qb2JcIlxuICAgICAgICAgICAgICAobWF4X2l0ZXJhdGlvbnNfcGVyX2pvYiA6IGludCldO1xuICAgICAgbWF4X2l0ZXJhdGlvbnNfcGVyX2pvYlxuICBpblxuICBsZXQgZiA9XG4gICAgaWYgbm90IGNvbnRpbnVlX29uX2Vycm9yXG4gICAgdGhlbiBmXG4gICAgZWxzZVxuICAgICAgZnVuIGEgLT5cbiAgICAgICAgdHJ5IGYgYSB3aXRoXG4gICAgICAgIHwgZXhuIC0+IE1vbml0b3Iuc2VuZF9leG4gKE1vbml0b3IuY3VycmVudCAoKSkgZXhuXG4gIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIGZpbmlzaGVkIC0+XG4gICAgKCogV2UgZG8gW3JldHVybiAoKSA+Pj5dIHRvIGVuc3VyZSB0aGF0IFtmXSBpcyBvbmx5IGNhbGxlZCBhc3luY2hyb25vdXNseS4gKilcbiAgICByZXR1cm4gKClcbiAgICA+Pj4gZnVuICgpIC0+XG4gICAgbGV0IHJlYyBzdGFydCAoKSA9IGxvb3AgfnJlbWFpbmluZzptYXhfaXRlcmF0aW9uc19wZXJfam9iXG4gICAgYW5kIGxvb3AgfnJlbWFpbmluZyA9XG4gICAgICBpZiByZW1haW5pbmcgPSAwXG4gICAgICB0aGVuIHJldHVybiAoKSA+Pj4gZnVuICgpIC0+IHN0YXJ0ICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmVhZF9ub3cgdCA/Y29uc3VtZXIgd2l0aFxuICAgICAgICB8IGBFb2YgLT4gSXZhci5maWxsIGZpbmlzaGVkICgpXG4gICAgICAgIHwgYE9rIGEgLT5cbiAgICAgICAgICBmIGE7XG4gICAgICAgICAgbG9vcCB+cmVtYWluaW5nOihyZW1haW5pbmcgLSAxKVxuICAgICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiB2YWx1ZXNfYXZhaWxhYmxlIHQgPj4+IGZ1biBfIC0+IHN0YXJ0ICgpKVxuICAgIGluXG4gICAgc3RhcnQgKCkpXG47O1xuXG5sZXQgZHJhaW4gdCA9IGl0ZXInIHQgfmY6KGZ1biBfIC0+IHJldHVybiAoKSlcbmxldCBkcmFpbl9hbmRfY291bnQgdCA9IGZvbGQnIHQgfmluaXQ6MCB+ZjooZnVuIHN1bSBxIC0+IHJldHVybiAoc3VtICsgUXVldWUubGVuZ3RoIHEpKVxuXG5sZXQgcmVhZF9hbGwgaW5wdXQgPVxuICBsZXQgcmVzdWx0ID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCVtYXAgKCkgPVxuICAgIGl0ZXInIGlucHV0IH5mOihmdW4gcSAtPlxuICAgICAgUXVldWUuYmxpdF90cmFuc2ZlciB+c3JjOnEgfmRzdDpyZXN1bHQgKCk7XG4gICAgICByZXR1cm4gKCkpXG4gIGluXG4gIHJlc3VsdFxuOztcblxubGV0IHRvX2xpc3QgciA9IHJlYWRfYWxsIHIgPj58IFF1ZXVlLnRvX2xpc3RcblxubGV0IHRvX3N0cmVhbV9kZXByZWNhdGVkIHQgPVxuICBTdHJlYW0uY3JlYXRlIChmdW4gdGFpbCAtPlxuICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayB0IH5mOihmdW4geCAtPiBUYWlsLmV4dGVuZCB0YWlsIHgpXG4gICAgPj4+IGZ1biAoKSAtPiBUYWlsLmNsb3NlX2V4biB0YWlsKVxuOztcblxuKCogVGhlIGltcGxlbWVudGF0aW9uIG9mIFtvZl9zdHJlYW1fZGVwcmVjYXRlZF0gZG9lcyBhcyBtdWNoIGJhdGNoaW5nIGFzIHBvc3NpYmxlLiAgSXRcbiAgIGdyYWJzIGFzIG1hbnkgaXRlbXMgYXMgYXJlIGF2YWlsYWJsZSBpbnRvIGFuIGludGVybmFsIHF1ZXVlLiAgT25jZSBpdCBoYXMgZ3JhYmJlZFxuICAgZXZlcnl0aGluZywgaXQgd3JpdGVzIGl0IHRvIHRoZSBwaXBlIGFuZCB0aGVuIGJsb2NrcyB3YWl0aW5nIGZvciB0aGUgbmV4dCBlbGVtZW50IGZyb21cbiAgIHRoZSBzdHJlYW0uXG5cbiAgIFRoZXJlJ3Mgbm8gcG9zc2liaWxpdHkgdGhhdCB3ZSdsbCBzdGFydmUgdGhlIHBpcGUgcmVhZGluZyBhbiBlbmRsZXNzIHN0cmVhbSwganVzdFxuICAgYWNjdW11bGF0aW5nIHRoZSBlbGVtZW50cyBpbnRvIG91ciBwcml2YXRlIHF1ZXVlIGZvcmV2ZXIgd2l0aG91dCBldmVyIHdyaXRpbmcgdGhlbVxuICAgZG93bnN0cmVhbSB0byB0aGUgcGlwZS4gIFdoeT8gYmVjYXVzZSB3aGlsZSB3ZSdyZSBydW5uaW5nLCB0aGUgc3RyZWFtLXByb2R1Y2VyICppc24ndCpcbiAgIHJ1bm5pbmcgLS0gdGhlcmUgYXJlIG5vIEFzeW5jIGJsb2NrIHBvaW50cyBpbiB0aGUgcXVldWUtYWNjdW11bGF0b3IgbG9vcC4gIFNvIHRoZVxuICAgcXVldWUtYWNjdW11bGF0b3IgbG9vcCB3aWxsIGV2ZW50dWFsbHkgY2F0Y2ggdXAgdG8gdGhlIGN1cnJlbnQgc3RyZWFtIHRhaWwsIGF0IHdoaWNoXG4gICBwb2ludCB3ZSdsbCBkbyB0aGUgcGlwZS13cml0ZSBhbmQgdGhlbiBibG9jayBvbiB0aGUgc3RyZWFtLi4uIHRodXMgZ2l2aW5nIHRoZVxuICAgc3RyZWFtLXByb2R1Y2VyIGEgY2hhbmNlIHRvIG1ha2UgbW9yZSBlbGVtZW50cy5cblxuICAgT25lIGNhbid0IGltcGxlbWVudCBbb2Zfc3RyZWFtXSB1c2luZyBbU3RyZWFtLml0ZXJdIG9yIFtTdHJlYW0uaXRlciddIGJlY2F1c2UgeW91XG4gICBuZWVkIHRvIGJlIGFibGUgdG8gc3RvcCBlYXJseSB3aGVuIHRoZSBjb25zdW1lciBjbG9zZXMgdGhlIHBpcGUuICBBbHNvLCB1c2luZyBlaXRoZXJcbiAgIG9mIHRob3NlIHdvdWxkIGVudGFpbCBzaWduaWZpY2FudGx5IG1vcmUgZGVmZXJyZWQgb3ZlcmhlYWQsIHdoZXJlYXMgdGhlIGJlbG93XG4gICBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgZGVmZXJyZWQgb25seSB3aGVuIGl0IG5lZWRzIHRvIHdhaXQgZm9yIGRhdGEgZnJvbSB0aGUgc3RyZWFtLiAqKVxubGV0IG9mX3N0cmVhbV9kZXByZWNhdGVkIHMgPVxuICBsZXQgciwgdyA9IGNyZWF0ZSAoKSBpblxuICBsZXQgcSA9IFF1ZXVlLmNyZWF0ZSAoKSBpblxuICBsZXQgdHJhbnNmZXIgKCkgPVxuICAgIGlmIG5vdCAoUXVldWUuaXNfZW1wdHkgcSlcbiAgICB0aGVuXG4gICAgICAoKiBDYW4gbm90IHB1c2hiYWNrIG9uIHRoZSBzdHJlYW0sIHNvIGlnbm9yZSB0aGUgcHVzaGJhY2sgb24gdGhlIHBpcGUuICopXG4gICAgICBkb24ndF93YWl0X2ZvciAod3JpdGUnIHcgcSlcbiAgaW5cbiAgbGV0IHJlYyBsb29wIHMgPVxuICAgIGFzc2VydCAobm90IChpc19jbG9zZWQgdykpO1xuICAgIGxldCBuZXh0X2RlZmVycmVkID0gU3RyZWFtLm5leHQgcyBpblxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgbmV4dF9kZWZlcnJlZCB3aXRoXG4gICAgfCBTb21lIG5leHQgLT4gbG9vcF9uZXh0IG5leHRcbiAgICB8IE5vbmUgLT5cbiAgICAgIHRyYW5zZmVyICgpO1xuICAgICAgdXBvbiBuZXh0X2RlZmVycmVkIGNoZWNrX2Nsb3NlZF9sb29wX25leHRcbiAgYW5kIGNoZWNrX2Nsb3NlZF9sb29wX25leHQgbmV4dCA9IGlmIG5vdCAoaXNfY2xvc2VkIHcpIHRoZW4gbG9vcF9uZXh0IG5leHRcbiAgYW5kIGxvb3BfbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT5cbiAgICAgIHRyYW5zZmVyICgpO1xuICAgICAgY2xvc2Ugd1xuICAgIHwgQ29ucyAoeCwgcykgLT5cbiAgICAgIFF1ZXVlLmVucXVldWUgcSB4O1xuICAgICAgbG9vcCBzXG4gIGluXG4gIGxvb3AgcztcbiAgclxuOztcblxubGV0IHRyYW5zZmVyX2dlblxuICAgICAgKHJlYWRfbm93IDogP2NvbnN1bWVyOkNvbnN1bWVyLnQgLT4gXyBSZWFkZXIudCAtPiBfKVxuICAgICAgd3JpdGVcbiAgICAgIGlucHV0XG4gICAgICBvdXRwdXRcbiAgICAgIH5mXG4gID1cbiAgaWYgIWNoZWNrX2ludmFyaWFudFxuICB0aGVuIChcbiAgICBpbnZhcmlhbnQgaW5wdXQ7XG4gICAgaW52YXJpYW50IG91dHB1dCk7XG4gIGxldCBsaW5rID0gTGluay5jcmVhdGUgfnVwc3RyZWFtOmlucHV0IH5kb3duc3RyZWFtOm91dHB1dCBpblxuICBsZXQgY29uc3VtZXIgPSBMaW5rLmNvbnN1bWVyIGxpbmsgaW5cbiAgKCogV2hlbiB3ZSdyZSBkb25lIHdpdGggW2lucHV0XSwgd2UgdW5saW5rIHRvIHJlbW92ZSBwb2ludGVycyBmcm9tXG4gICAgIFtvdXRwdXRdIHRvIFtpbnB1dF0sIHdoaWNoIHdvdWxkIGNhdXNlIGEgc3BhY2UgbGVhayBpZiB3ZSBoYWQgc2luZ2xlIGxvbmctbGl2ZWRcbiAgICAgb3V0cHV0IGludG8gd2hpY2ggd2UgdHJhbnNmZXIgbG90cyBvZiBzaG9ydC1saXZlZCBpbnB1dHMuICopXG4gIGxldCB1bmxpbmsgKCkgPSBMaW5rLnVubGlua191cHN0cmVhbSBsaW5rIGluXG4gIERlZmVycmVkLmNyZWF0ZSAoZnVuIHJlc3VsdCAtPlxuICAgICgqIFdlIGRvIFtyZXR1cm4gKCkgPj4+XSB0byBlbnN1cmUgdGhhdCBbZl0gaXMgb25seSBjYWxsZWQgYXN5bmNocm9ub3VzbHkuICopXG4gICAgcmV0dXJuICgpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIGxldCBvdXRwdXRfY2xvc2VkICgpID1cbiAgICAgIGNsb3NlX3JlYWQgaW5wdXQ7XG4gICAgICB1bmxpbmsgKCk7XG4gICAgICBJdmFyLmZpbGwgcmVzdWx0ICgpXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggcmVhZF9ub3cgaW5wdXQgfmNvbnN1bWVyIHdpdGhcbiAgICAgICAgfCBgRW9mIC0+XG4gICAgICAgICAgdW5saW5rICgpO1xuICAgICAgICAgIEl2YXIuZmlsbCByZXN1bHQgKClcbiAgICAgICAgfCBgT2sgeCAtPiBmIHggY29udGludWVcbiAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICBjaG9vc2VcbiAgICAgICAgICAgIFsgY2hvaWNlICh2YWx1ZXNfYXZhaWxhYmxlIGlucHV0KSBpZ25vcmU7IGNob2ljZSAoY2xvc2VkIG91dHB1dCkgaWdub3JlIF1cbiAgICAgICAgICA+Pj4gZnVuICgpIC0+IGxvb3AgKCkpXG4gICAgYW5kIGNvbnRpbnVlIHkgPVxuICAgICAgaWYgaXNfY2xvc2VkIG91dHB1dFxuICAgICAgdGhlbiBvdXRwdXRfY2xvc2VkICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHB1c2hiYWNrID0gd3JpdGUgb3V0cHV0IHkgaW5cbiAgICAgICAgQ29uc3VtZXIudmFsdWVzX3NlbnRfZG93bnN0cmVhbSBjb25zdW1lcjtcbiAgICAgICAgcHVzaGJhY2sgPj4+IGZ1biAoKSAtPiBsb29wICgpKVxuICAgIGluXG4gICAgbG9vcCAoKSlcbjs7XG5cbmxldCB0cmFuc2ZlcicgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgb3V0cHV0IH5mID1cbiAgdHJhbnNmZXJfZ2VuIChyZWFkX25vdycgP21heF9xdWV1ZV9sZW5ndGgpIHdyaXRlJyBpbnB1dCBvdXRwdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IHRyYW5zZmVyIGlucHV0IG91dHB1dCB+ZiA9XG4gIHRyYW5zZmVyX2dlbiByZWFkX25vdyB3cml0ZSBpbnB1dCBvdXRwdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcbjs7XG5cbmxldCB0cmFuc2Zlcl9pZCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCBvdXRwdXQgPVxuICB0cmFuc2Zlcl9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IG91dHB1dCB+ZjooZnVuIHEgayAtPiBrIHEpXG47O1xuXG5sZXQgbWFwX2dlbiByZWFkIHdyaXRlIGlucHV0IH5mID1cbiAgbGV0IGluZm8gPSBPcHRpb24ubWFwIGlucHV0LmluZm8gfmY6KGZ1biBpbmZvIC0+IFslc2V4cCBNYXBwZWQgKGluZm8gOiBTZXhwLnQpXSkgaW5cbiAgbGV0IHJlc3VsdCwgb3V0cHV0ID0gY3JlYXRlID9pbmZvICgpIGluXG4gIHVwb24gKHRyYW5zZmVyX2dlbiByZWFkIHdyaXRlIGlucHV0IG91dHB1dCB+ZikgKGZ1biAoKSAtPiBjbG9zZSBvdXRwdXQpO1xuICByZXN1bHRcbjs7XG5cbmxldCBtYXAnID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT4gZiBxID4+PiBrKVxuOztcblxubGV0IG1hcCBpbnB1dCB+ZiA9IG1hcF9nZW4gcmVhZF9ub3cgd3JpdGUgaW5wdXQgfmY6KGZ1biBhIGsgLT4gayAoZiBhKSlcblxubGV0IGNvbmNhdF9tYXBfbGlzdCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcF9nZW4gKHJlYWRfbm93JyA/bWF4X3F1ZXVlX2xlbmd0aCkgd3JpdGUnIGlucHV0IH5mOihmdW4gcSBrIC0+XG4gICAgayAoUXVldWUuY29uY2F0X21hcCBxIH5mKSlcbjs7XG5cbmxldCBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZiA9XG4gIG1hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biBxIC0+IERlZmVycmVkLlF1ZXVlLmZpbHRlcl9tYXAgcSB+Zilcbjs7XG5cbmxldCBmaWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5mID1cbiAgbWFwX2dlbiAocmVhZF9ub3cnID9tYXhfcXVldWVfbGVuZ3RoKSB3cml0ZScgaW5wdXQgfmY6KGZ1biBxIGsgLT5cbiAgICBrIChRdWV1ZS5maWx0ZXJfbWFwIHEgfmY6KGZ1biB4IC0+IGlmIGlzX3JlYWRfY2xvc2VkIGlucHV0IHRoZW4gTm9uZSBlbHNlIGYgeCkpKVxuOztcblxubGV0IGZvbGRpbmdfZmlsdGVyX21hcCcgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmluaXQgfmYgPVxuICBsZXQgYWNjdW0gPSByZWYgaW5pdCBpblxuICBmaWx0ZXJfbWFwJyA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+ZjooZnVuIHggLT5cbiAgICBsZXQlbWFwIGEsIHggPSBmICFhY2N1bSB4IGluXG4gICAgYWNjdW0gOj0gYTtcbiAgICB4KVxuOztcblxubGV0IGZvbGRpbmdfZmlsdGVyX21hcCA/bWF4X3F1ZXVlX2xlbmd0aCBpbnB1dCB+aW5pdCB+ZiA9XG4gIGxldCBhY2N1bSA9IHJlZiBpbml0IGluXG4gIGZpbHRlcl9tYXAgP21heF9xdWV1ZV9sZW5ndGggaW5wdXQgfmY6KGZ1biB4IC0+XG4gICAgbGV0IGEsIHggPSBmICFhY2N1bSB4IGluXG4gICAgYWNjdW0gOj0gYTtcbiAgICB4KVxuOztcblxubGV0IGZvbGRpbmdfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mID1cbiAgZm9sZGluZ19maWx0ZXJfbWFwID9tYXhfcXVldWVfbGVuZ3RoIGlucHV0IH5pbml0IH5mOihmdW4gYWNjdW0gYSAtPlxuICAgIGxldCBhY2N1bSwgYiA9IGYgYWNjdW0gYSBpblxuICAgIGFjY3VtLCBTb21lIGIpXG47O1xuXG5sZXQgZmlsdGVyIGlucHV0IH5mID0gZmlsdGVyX21hcCBpbnB1dCB+ZjooZnVuIHggLT4gaWYgZiB4IHRoZW4gU29tZSB4IGVsc2UgTm9uZSlcblxubGV0IG9mX2xpc3QgbCA9XG4gIGxldCB0ID0gY3JlYXRlX2ludGVybmFsIH5zaXplX2J1ZGdldDowIH5pbmZvOk5vbmUgfmluaXRpYWxfYnVmZmVyOihRdWV1ZS5vZl9saXN0IGwpIGluXG4gIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgdXBkYXRlX3B1c2hiYWNrIHQ7XG4gIHRcbjs7XG5cbmxldCBlbXB0eSAoKSA9IG9mX2xpc3QgW11cblxubGV0IHNpbmdsZXRvbiB4ID1cbiAgbGV0IHJlYWRlciwgd3JpdGVyID0gY3JlYXRlICgpIGluXG4gIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIHg7XG4gIGNsb3NlIHdyaXRlcjtcbiAgcmVhZGVyXG47O1xuXG5sZXQgdW5mb2xkIH5pbml0OnMgfmYgPVxuICAoKiBUbyBnZXQgc29tZSBiYXRjaGluZywgd2UgcnVuIHRoZSBjb250aW51YXRpb24gaW1tZWRpYXRlbHkgaWYgdGhlIGRlZmVycmVkIGlzXG4gICAgIGRldGVybWluZWQuICBIb3dldmVyLCB3ZSBhbHdheXMgY2hlY2sgZm9yIHB1c2hiYWNrLiAgQmVjYXVzZSBzaXplIGJ1ZGdldCBjYW4ndCBiZVxuICAgICBpbmZpbml0ZSwgdGhlIGJlbG93IGxvb3AgaXMgZ3VhcmFudGVlZCB0byBldmVudHVhbGx5IHlpZWxkIHRvIHRoZSBzY2hlZHVsZXIuICopXG4gIGxldCAoID4+PX4gKSBkIGYgPVxuICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgfCBOb25lIC0+IGQgPj49IGZcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgY3JlYXRlX3JlYWRlciB+Y2xvc2Vfb25fZXhjZXB0aW9uOmZhbHNlIChmdW4gd3JpdGVyIC0+XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgZiBzXG4gICAgICA+Pj1+IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gcmV0dXJuICgpXG4gICAgICB8IFNvbWUgKGEsIHMpIC0+XG4gICAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXIgdGhlbiByZXR1cm4gKCkgZWxzZSB3cml0ZSB3cml0ZXIgYSA+Pj1+IGZ1biAoKSAtPiBsb29wIHNcbiAgICBpblxuICAgIGxvb3Agcylcbjs7XG5cbmxldCBvZl9zZXF1ZW5jZSBzZXF1ZW5jZSA9XG4gIGNyZWF0ZV9yZWFkZXIgfmNsb3NlX29uX2V4Y2VwdGlvbjpmYWxzZSAoZnVuIHdyaXRlciAtPlxuICAgIGxldCByZWMgZW5xdWV1ZV9uIHNlcXVlbmNlIGkgPVxuICAgICAgaWYgaSA8PSAwXG4gICAgICB0aGVuIHNlcXVlbmNlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzZXF1ZW5jZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzZXF1ZW5jZVxuICAgICAgICB8IFNvbWUgKGEsIHNlcXVlbmNlKSAtPlxuICAgICAgICAgIFF1ZXVlLmVucXVldWUgd3JpdGVyLmJ1ZmZlciBhO1xuICAgICAgICAgIGVucXVldWVfbiBzZXF1ZW5jZSAoaSAtIDEpKVxuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIHNlcXVlbmNlID1cbiAgICAgIGlmIGlzX2Nsb3NlZCB3cml0ZXIgfHwgU2VxdWVuY2UuaXNfZW1wdHkgc2VxdWVuY2VcbiAgICAgIHRoZW4gcmV0dXJuICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgc3RhcnRfd3JpdGUgd3JpdGVyO1xuICAgICAgICBsZXQgc2VxdWVuY2UgPSBlbnF1ZXVlX24gc2VxdWVuY2UgKDEgKyB3cml0ZXIuc2l6ZV9idWRnZXQgLSBsZW5ndGggd3JpdGVyKSBpblxuICAgICAgICBmaW5pc2hfd3JpdGUgd3JpdGVyO1xuICAgICAgICBsZXQlYmluZCAoKSA9IHB1c2hiYWNrIHdyaXRlciBpblxuICAgICAgICBsb29wIHNlcXVlbmNlKVxuICAgIGluXG4gICAgbG9vcCBzZXF1ZW5jZSlcbjs7XG5cbnR5cGUgJ2EgdG9fc2VxdWVuY2VfZWx0ID1cbiAgfCBWYWx1ZSBvZiAnYVxuICB8IFdhaXRfZm9yIDogXyBEZWZlcnJlZC50IC0+IF8gdG9fc2VxdWVuY2VfZWx0XG5cbmxldCB0b19zZXF1ZW5jZSB0ID1cbiAgU2VxdWVuY2UudW5mb2xkIH5pbml0OigpIH5mOihmdW4gKCkgLT5cbiAgICBtYXRjaCByZWFkX25vdyB0IHdpdGhcbiAgICB8IGBFb2YgLT4gTm9uZVxuICAgIHwgYE9rIGEgLT4gU29tZSAoVmFsdWUgYSwgKCkpXG4gICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT4gU29tZSAoV2FpdF9mb3IgKHZhbHVlc19hdmFpbGFibGUgdCksICgpKSlcbjs7XG5cbmxldCBpbnRlcmxlYXZlX3BpcGUgaW5wdXRzID1cbiAgbGV0IG91dHB1dCwgb3V0cHV0X3dyaXRlciA9IGNyZWF0ZSB+aW5mbzpbJXNleHAgXCJQaXBlLmludGVybGVhdmVcIl0gKCkgaW5cbiAgKCogV2Uga2VlcCBhIHJlZmVyZW5jZSBjb3VudCBvZiBhbGwgdGhlIHBpcGVzIHRoYXQgW2ludGVybGVhdmVfcGlwZV0gaXMgbWFuYWdpbmc7XG4gICAgIFtpbnB1dHNdIGNvdW50cyBhcyBvbmUuICBXaGVuIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVybywgd2Uga25vdyB0aGF0IGFsbFxuICAgICBwaXBlcyBhcmUgY2xvc2VkIGFuZCB3ZSBjYW4gY2xvc2UgW291dHB1dF93cml0ZXJdLiAqKVxuICBsZXQgbnVtX3BpcGVzX3JlbWFpbmluZyA9IHJlZiAxIGluXG4gIGxldCBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkgPVxuICAgIGRlY3IgbnVtX3BpcGVzX3JlbWFpbmluZztcbiAgICBpZiAhbnVtX3BpcGVzX3JlbWFpbmluZyA9IDAgdGhlbiBjbG9zZSBvdXRwdXRfd3JpdGVyXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yXG4gICAgKGxldCVtYXAgKCkgPVxuICAgICAgIGl0ZXJfd2l0aG91dF9wdXNoYmFjayBpbnB1dHMgfmY6KGZ1biBpbnB1dCAtPlxuICAgICAgICAgaW5jciBudW1fcGlwZXNfcmVtYWluaW5nO1xuICAgICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgICAgKGxldCVtYXAgKCkgPSB0cmFuc2Zlcl9pZCBpbnB1dCBvdXRwdXRfd3JpdGVyIGluXG4gICAgICAgICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpKVxuICAgICBpblxuICAgICBkZWNyX251bV9waXBlc19yZW1haW5pbmcgKCkpO1xuICAoKiBmb3IgW2lucHV0c10gKilcbiAgb3V0cHV0XG47O1xuXG5sZXQgaW50ZXJsZWF2ZSBpbnB1dHMgPVxuICBpZiAhY2hlY2tfaW52YXJpYW50IHRoZW4gTGlzdC5pdGVyIGlucHV0cyB+ZjppbnZhcmlhbnQ7XG4gIGludGVybGVhdmVfcGlwZSAob2ZfbGlzdCBpbnB1dHMpXG47O1xuXG5sZXQgbWVyZ2UgaW5wdXRzIH5jb21wYXJlID1cbiAgbWF0Y2ggaW5wdXRzIHdpdGhcbiAgfCBbXSAtPiBlbXB0eSAoKVxuICB8IFsgaW5wdXQgXSAtPiBpbnB1dFxuICB8IGlucHV0cyAtPlxuICAgIGxldCBtb2R1bGUgSGVhcCA9IFBhaXJpbmdfaGVhcCBpblxuICAgIGxldCByLCB3ID0gY3JlYXRlICgpIGluXG4gICAgdXBvbiAoY2xvc2VkIHcpIChmdW4gKCkgLT4gTGlzdC5pdGVyIGlucHV0cyB+ZjpjbG9zZV9yZWFkKTtcbiAgICBsZXQgaGVhcCA9IEhlYXAuY3JlYXRlIH5jbXA6KGZ1biAoYTEsIF8pIChhMiwgXykgLT4gY29tcGFyZSBhMSBhMikgKCkgaW5cbiAgICBsZXQgaGFuZGxlX3JlYWQgaW5wdXQgZW9mX29yX29rID1cbiAgICAgIG1hdGNoIGVvZl9vcl9vayB3aXRoXG4gICAgICB8IGBFb2YgLT4gKClcbiAgICAgIHwgYE9rIHYgLT4gSGVhcC5hZGQgaGVhcCAodiwgaW5wdXQpXG4gICAgaW5cbiAgICBsZXQgcmVjIHBvcF9oZWFwX2FuZF9sb29wICgpID1cbiAgICAgICgqIEF0IHRoaXMgcG9pbnQsIGFsbCBpbnB1dHMgbm90IGF0IEVvZiBvY2N1ciBpbiBbaGVhcF0gZXhhY3RseSBvbmNlLCBzbyB3ZSBrbm93XG4gICAgICAgICB3aGF0IHRoZSBuZXh0IG91dHB1dCBlbGVtZW50IGlzLiAgW3BvcF9oZWFwX2FuZF9sb29wXSByZXBlYXRlZGx5IHRha2VzIGVsZW1lbnRzXG4gICAgICAgICBmcm9tIHRoZSBpbnB1dHMgYXMgbG9uZyBhcyBpdCBoYXMgb25lIGZyb20gZWFjaCBpbnB1dC4gIFRoaXMgaXMgZG9uZVxuICAgICAgICAgc3luY2hyb25vdXNseSB0byBhdm9pZCB0aGUgY29zdCBvZiBhIGRlZmVycmVkIGZvciBlYWNoIGVsZW1lbnQgb2YgdGhlIG91dHB1dCAtLVxuICAgICAgICAgdGhlcmUncyBubyBuZWVkIHRvIHB1c2hiYWNrIHNpbmNlIHRoYXQgaXMgb25seSBtb3ZpbmcgZWxlbWVudHMgZnJvbSBvbmUgcGlwZSB0b1xuICAgICAgICAgYW5vdGhlci4gIEFzIHNvb24gYXMgW3BvcF9oZWFwX2FuZF9sb29wXSBjYW4ndCBnZXQgYW4gZWxlbWVudCBmcm9tIHNvbWUgaW5wdXQsIGl0XG4gICAgICAgICB3YWl0cyBvbiBwdXNoYmFjayBmcm9tIHRoZSBvdXRwdXQsIHNpbmNlIGl0IGhhcyB0byB3YWl0IG9uIHRoZSBpbnB1dCBhbnl3YXkuXG4gICAgICAgICBUaGlzIGFsc28gcHJldmVudHMgW21lcmdlXSBmcm9tIGNvbnN1bWluZyBpbnB1dHMgYXQgYSByYXRlIGZhc3RlciB0aGFuIGl0cyBvdXRwdXRcbiAgICAgICAgIGlzIGNvbnN1bWVkLiAqKVxuICAgICAgbWF0Y2ggSGVhcC5wb3AgaGVhcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gY2xvc2Ugd1xuICAgICAgfCBTb21lICh2LCBpbnB1dCkgLT5cbiAgICAgICAgaWYgbm90IChpc19jbG9zZWQgdylcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB3IHY7XG4gICAgICAgICAgaWYgSGVhcC5sZW5ndGggaGVhcCA9IDBcbiAgICAgICAgICB0aGVuIHVwb24gKHRyYW5zZmVyX2lkIGlucHV0IHcpIChmdW4gKCkgLT4gY2xvc2UgdylcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJlYWRfbm93IGlucHV0IHdpdGhcbiAgICAgICAgICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgeCAtPlxuICAgICAgICAgICAgICBoYW5kbGVfcmVhZCBpbnB1dCB4O1xuICAgICAgICAgICAgICBwb3BfaGVhcF9hbmRfbG9vcCAoKVxuICAgICAgICAgICAgfCBgTm90aGluZ19hdmFpbGFibGUgLT5cbiAgICAgICAgICAgICAgcHVzaGJhY2sgd1xuICAgICAgICAgICAgICA+Pj4gZnVuICgpIC0+XG4gICAgICAgICAgICAgIHJlYWQgaW5wdXRcbiAgICAgICAgICAgICAgPj4+IGZ1biB4IC0+XG4gICAgICAgICAgICAgIGhhbmRsZV9yZWFkIGlucHV0IHg7XG4gICAgICAgICAgICAgIHBvcF9oZWFwX2FuZF9sb29wICgpKSlcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3B1c2ggPVxuICAgICAgRGVmZXJyZWQuTGlzdC5pdGVyIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+XG4gICAgICAgIGxldCVtYXAgeCA9IHJlYWQgaW5wdXQgaW5cbiAgICAgICAgaGFuZGxlX3JlYWQgaW5wdXQgeClcbiAgICBpblxuICAgIHVwb24gaW5pdGlhbF9wdXNoIHBvcF9oZWFwX2FuZF9sb29wO1xuICAgIHJcbjs7XG5cbmxldCBjb25jYXRfcGlwZSBpbnB1dHMgPVxuICBsZXQgciA9XG4gICAgY3JlYXRlX3JlYWRlcl9ub3RfY2xvc2Vfb25fZXhjZXB0aW9uIChmdW4gdyAtPlxuICAgICAgbGV0IGxpbmsgPSBMaW5rLmNyZWF0ZSB+dXBzdHJlYW06aW5wdXRzIH5kb3duc3RyZWFtOncgaW5cbiAgICAgIGxldCBjb25zdW1lciA9IExpbmsuY29uc3VtZXIgbGluayBpblxuICAgICAgaXRlciB+Zmx1c2hlZDooQ29uc3VtZXIgY29uc3VtZXIpIGlucHV0cyB+ZjooZnVuIGlucHV0IC0+IHRyYW5zZmVyX2lkIGlucHV0IHcpKVxuICBpblxuICB1cG9uIChjbG9zZWQgcikgKGZ1biAoKSAtPiBjbG9zZSBpbnB1dHMpO1xuICByXG47O1xuXG5sZXQgY29uY2F0IGlucHV0cyA9XG4gIGNyZWF0ZV9yZWFkZXJfbm90X2Nsb3NlX29uX2V4Y2VwdGlvbiAoZnVuIHcgLT5cbiAgICBEZWZlcnJlZC5MaXN0Lml0ZXIgaW5wdXRzIH5mOihmdW4gaW5wdXQgLT4gdHJhbnNmZXJfaWQgaW5wdXQgdykpXG47O1xuXG5sZXQgZm9yayB0IH5wdXNoYmFja191c2VzID1cbiAgbGV0IHJlYWRlcjAsIHdyaXRlcjAgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHJlYWRlcjEsIHdyaXRlcjEgPSBjcmVhdGUgKCkgaW5cbiAgbGV0IHNvbWVfcmVhZGVyX3dhc19jbG9zZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGNvbnN1bWVyID1cbiAgICBhZGRfY29uc3VtZXIgdCB+ZG93bnN0cmVhbV9mbHVzaGVkOihmdW4gKCkgLT5cbiAgICAgIGxldCBzb21lX3JlYWRlcl93YXNfY2xvc2VkID0gIXNvbWVfcmVhZGVyX3dhc19jbG9zZWQgaW5cbiAgICAgIG1hdGNoJW1hcFxuICAgICAgICBGbHVzaGVkX3Jlc3VsdC5jb21iaW5lXG4gICAgICAgICAgWyBkb3duc3RyZWFtX2ZsdXNoZWQgd3JpdGVyMDsgZG93bnN0cmVhbV9mbHVzaGVkIHdyaXRlcjEgXVxuICAgICAgd2l0aFxuICAgICAgfCBgUmVhZGVyX2Nsb3NlZCAtPiBgUmVhZGVyX2Nsb3NlZFxuICAgICAgfCBgT2sgLT5cbiAgICAgICAgKCogSW4gdGhpcyBjYXNlLCB0aGVyZSBjb3VsZCBoYXZlIGJlZW4gbm8gcGVuZGluZyBpdGVtcyBpbiBbd3JpdGVyMF0gbm9yIGluXG4gICAgICAgICAgIFt3cml0ZXIxXSwgaW4gd2hpY2ggY2FzZSB3ZSBjb3VsZCBoYXZlIGhhZCBhIGNsb3NlZCBwaXBlIHRoYXQgbWlzc2VkIHNvbWVcbiAgICAgICAgICAgd3JpdGVzLCBidXQgW0ZsdXNoZWRfcmVzdWx0LmNvbWJpbmVdIHdvdWxkIHN0aWxsIGhhdmUgcmV0dXJuZWQgW2BPa10gKilcbiAgICAgICAgaWYgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCB0aGVuIGBSZWFkZXJfY2xvc2VkIGVsc2UgYE9rKVxuICBpblxuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQgc3RpbGxfb3BlbiA9IFsgd3JpdGVyMDsgd3JpdGVyMSBdIGluXG4gICAgIGxldCBmaWx0ZXJfb3BlbiBzdGlsbF9vcGVuID1cbiAgICAgICAoKiBPbmx5IGNhbGwgW2ZpbHRlcl0gYW5kIHJlYWxsb2NhdGUgbGlzdCBpZiBzb21ldGhpbmcgd2lsbCBnZXQgZmlsdGVyZWQgKilcbiAgICAgICBpZiBub3QgKExpc3QuZXhpc3RzIHN0aWxsX29wZW4gfmY6aXNfY2xvc2VkKVxuICAgICAgIHRoZW4gc3RpbGxfb3BlblxuICAgICAgIGVsc2UgKFxuICAgICAgICAgc29tZV9yZWFkZXJfd2FzX2Nsb3NlZCA6PSB0cnVlO1xuICAgICAgICAgbGV0IHN0aWxsX29wZW4gPSBMaXN0LmZpbHRlciBzdGlsbF9vcGVuIH5mOihmdW4gdyAtPiBub3QgKGlzX2Nsb3NlZCB3KSkgaW5cbiAgICAgICAgIGlmIExpc3QuaXNfZW1wdHkgc3RpbGxfb3BlbiB0aGVuIGNsb3NlIHQ7XG4gICAgICAgICBzdGlsbF9vcGVuKVxuICAgICBpblxuICAgICBsZXQlYmluZCBzdGlsbF9vcGVuID1cbiAgICAgICBmb2xkJyB0IH5mbHVzaGVkOihDb25zdW1lciBjb25zdW1lcikgfmluaXQ6c3RpbGxfb3BlbiB+ZjooZnVuIHN0aWxsX29wZW4gcXVldWUgLT5cbiAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgaWYgTGlzdC5pc19lbXB0eSBzdGlsbF9vcGVuXG4gICAgICAgICB0aGVuIHJldHVybiBbXVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICAgIG1hdGNoIHB1c2hiYWNrX3VzZXMgd2l0aFxuICAgICAgICAgICAgIHwgYEZhc3RfY29uc3VtZXJfb25seSAtPiBEZWZlcnJlZC5hbnkgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgICAgfCBgQm90aF9jb25zdW1lcnMgLT4gRGVmZXJyZWQuYWxsX3VuaXQgKExpc3QubWFwIHN0aWxsX29wZW4gfmY6cHVzaGJhY2spXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBzdGlsbF9vcGVuID0gZmlsdGVyX29wZW4gc3RpbGxfb3BlbiBpblxuICAgICAgICAgICBMaXN0Lml0ZXIgc3RpbGxfb3BlbiB+ZjooZnVuIHcgLT4gY29weV9pbl93aXRob3V0X3B1c2hiYWNrIHcgfmZyb206cXVldWUpO1xuICAgICAgICAgICBzdGlsbF9vcGVuKSlcbiAgICAgaW5cbiAgICAgTGlzdC5pdGVyIHN0aWxsX29wZW4gfmY6Y2xvc2U7XG4gICAgIHJldHVybiAoKSk7XG4gIHJlYWRlcjAsIHJlYWRlcjFcbjs7XG5cbmxldCBzZXRfaW5mbyB0IGluZm8gPSBzZXRfaW5mbyB0IChTb21lIGluZm8pXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4hIERlZmVycmVkX3N0ZFxuXG50eXBlICgnYSwgJ3BoYW50b20pIHQgPVxuICB7IGN1cnJlbnRfdmFsdWUgOiAnYSBNb3B0aW9uLnRcbiAgOyB0YWtlbiA6ICh1bml0LCByZWFkX3dyaXRlKSBCdmFyLnRcbiAgOyBtdXRhYmxlIHZhbHVlX2F2YWlsYWJsZSA6IHVuaXQgSXZhci50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHZhbHVlX2F2YWlsYWJsZSB0ID0gSXZhci5yZWFkIHQudmFsdWVfYXZhaWxhYmxlXG5sZXQgaXNfZW1wdHkgdCA9IE1vcHRpb24uaXNfbm9uZSB0LmN1cnJlbnRfdmFsdWVcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBfICh0IDogXyB0KSA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogKF8sIF8pIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfmN1cnJlbnRfdmFsdWU6KGNoZWNrIChNb3B0aW9uLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+dGFrZW46KGNoZWNrIChCdmFyLmludmFyaWFudCBVbml0LmludmFyaWFudCBpZ25vcmUpKVxuICAgICAgfnZhbHVlX2F2YWlsYWJsZTpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKEl2YXIuaXNfZnVsbCB2YWx1ZV9hdmFpbGFibGUpXG4gICAgICAgICAgICAgfmV4cGVjdDooTW9wdGlvbi5pc19zb21lIHQuY3VycmVudF92YWx1ZSkpKSlcbjs7XG5cbmxldCBwZWVrIHQgPSBNb3B0aW9uLmdldCB0LmN1cnJlbnRfdmFsdWVcblxubGV0IHBlZWtfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnBlZWtfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWVcbjs7XG5cbmxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIF8gdCA9IFslc2V4cCAocGVlayB0IDogYSBvcHRpb24pXVxuXG5tb2R1bGUgUmVhZF93cml0ZSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkX3dyaXRlKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubW9kdWxlIFJlYWRfb25seSA9IHN0cnVjdFxuICB0eXBlIG5vbnJlYyAnYSB0ID0gKCdhLCByZWFkKSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID0gaW52YXJpYW50IGludmFyaWFudF9hIGlnbm9yZSB0XG5lbmRcblxubGV0IHJlYWRfb25seSAodCA6ICgnYSwgWz4gcmVhZCBdKSB0KSA9ICh0IDo+ICgnYSwgcmVhZCkgdClcbmxldCB3cml0ZV9vbmx5ICh0IDogKCdhLCBbPiB3cml0ZSBdKSB0KSA9ICh0IDo+ICgnYSwgd3JpdGUpIHQpXG5cbmxldCBjcmVhdGUgKCkgPVxuICB7IGN1cnJlbnRfdmFsdWUgPSBNb3B0aW9uLmNyZWF0ZSAoKVxuICA7IHRha2VuID0gQnZhci5jcmVhdGUgKClcbiAgOyB2YWx1ZV9hdmFpbGFibGUgPSBJdmFyLmNyZWF0ZSAoKVxuICB9XG47O1xuXG5sZXQgdGFrZV9ub25lbXB0eSB0ID1cbiAgYXNzZXJ0IChub3QgKGlzX2VtcHR5IHQpKTtcbiAgbGV0IHIgPSBNb3B0aW9uLmdldF9zb21lX2V4biB0LmN1cnJlbnRfdmFsdWUgaW5cbiAgTW9wdGlvbi5zZXRfbm9uZSB0LmN1cnJlbnRfdmFsdWU7XG4gIEJ2YXIuYnJvYWRjYXN0IHQudGFrZW4gKCk7XG4gIHQudmFsdWVfYXZhaWxhYmxlIDwtIEl2YXIuY3JlYXRlICgpO1xuICByXG47O1xuXG5sZXQgdGFrZV9ub3dfZXhuIHQgPVxuICBpZiBpc19lbXB0eSB0IHRoZW4gcmFpc2VfcyBbJW1lc3NhZ2UgXCJNdmFyLnRha2VfZXhuIGNhbGxlZCBvbiBlbXB0eSBtdmFyXCJdO1xuICB0YWtlX25vbmVtcHR5IHRcbjs7XG5cbmxldCB0YWtlX25vdyB0ID0gaWYgbm90IChpc19lbXB0eSB0KSB0aGVuIFNvbWUgKHRha2Vfbm9uZW1wdHkgdCkgZWxzZSBOb25lXG5cbmxldCByZWMgdGFrZSB0ID1cbiAgaWYgbm90IChpc19lbXB0eSB0KVxuICB0aGVuIHJldHVybiAodGFrZV9ub25lbXB0eSB0KVxuICBlbHNlIChcbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgdGFrZSB0KVxuOztcblxubGV0IHNldCB0IHYgPVxuICBNb3B0aW9uLnNldF9zb21lIHQuY3VycmVudF92YWx1ZSB2O1xuICBJdmFyLmZpbGxfaWZfZW1wdHkgdC52YWx1ZV9hdmFpbGFibGUgKClcbjs7XG5cbmxldCB1cGRhdGUgdCB+ZiA9IHNldCB0IChmIChwZWVrIHQpKVxubGV0IHVwZGF0ZV9leG4gdCB+ZiA9IHNldCB0IChmIChwZWVrX2V4biB0KSlcbmxldCB0YWtlbiB0ID0gQnZhci53YWl0IHQudGFrZW5cblxubGV0IHJlYyBwdXQgdCB2ID1cbiAgaWYgaXNfZW1wdHkgdFxuICB0aGVuIChcbiAgICBzZXQgdCB2O1xuICAgIHJldHVybiAoKSlcbiAgZWxzZSAoXG4gICAgbGV0JWJpbmQgKCkgPSB0YWtlbiB0IGluXG4gICAgcHV0IHQgdilcbjs7XG5cbmxldCBwaXBlX3doZW5fcmVhZHkgdCA9XG4gIGxldCByLCB3ID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQlYmluZCAoKSA9IHZhbHVlX2F2YWlsYWJsZSB0IGluXG4gICAgaWYgbm90IChQaXBlLmlzX2Nsb3NlZCB3KVxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggdGFrZV9ub3cgdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gbG9vcCAoKVxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgbGV0JWJpbmQgKCkgPSBQaXBlLndyaXRlIHcgeCBpblxuICAgICAgICBsb29wICgpKVxuICAgIGVsc2UgcmV0dXJuICgpXG4gIGluXG4gIGRvbid0X3dhaXRfZm9yIChsb29wICgpKTtcbiAgclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBEZWZlcnJlZF9zdGRcblxubW9kdWxlIFQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB7IHN0YXJ0IDogdW5pdCBJdmFyLnRcbiAgICA7IHJlc3VsdCA6ICdhIE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuICAgIH1cblxuICBsZXQgY3JlYXRlIGYgPVxuICAgIGxldCBzdGFydCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgeyBzdGFydFxuICAgIDsgcmVzdWx0ID1cbiAgICAgICAgKGxldCViaW5kICgpID0gSXZhci5yZWFkIHN0YXJ0IGluXG4gICAgICAgICBNb25pdG9yLnRyeV93aXRoX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9vcl9lcnJvciBmID1cbiAgICBsZXQgc3RhcnQgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIHsgc3RhcnRcbiAgICA7IHJlc3VsdCA9XG4gICAgICAgIChsZXQlYmluZCAoKSA9IEl2YXIucmVhZCBzdGFydCBpblxuICAgICAgICAgTW9uaXRvci50cnlfd2l0aF9qb2luX29yX2Vycm9yXG4gICAgICAgICAgIH5yZXN0OmBMb2dcbiAgICAgICAgICAgZilcbiAgICB9XG4gIDs7XG5cbiAgbGV0IHdhaXQgdCA9IHQucmVzdWx0XG4gIGxldCB3YWl0X2V4biB0ID0gd2FpdCB0ID4+fCBva19leG5cbiAgbGV0IHN0YXJ0IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC5zdGFydCAoKVxuXG4gIGxldCBmb3JjZSB0ID1cbiAgICBzdGFydCB0O1xuICAgIHdhaXQgdFxuICA7O1xuXG4gIGxldCBmb3JjZV9leG4gdCA9IGZvcmNlIHQgPj58IG9rX2V4blxuICBsZXQgcmV0dXJuIGEgPSBjcmVhdGUgKGZ1biAoKSAtPiByZXR1cm4gYSlcblxuICBsZXQgYmluZCB0IH5mID1cbiAgICBjcmVhdGUgKGZ1biAoKSAtPlxuICAgICAgbGV0JWJpbmQgYSA9IGZvcmNlX2V4biB0IGluXG4gICAgICBmb3JjZV9leG4gKGYgYSkpXG4gIDs7XG5cbiAgbGV0IG1hcCB0IH5mID0gY3JlYXRlIChmdW4gKCkgLT4gZm9yY2VfZXhuIHQgPj58IGYpXG4gIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuZW5kXG5cbmluY2x1ZGUgVFxuaW5jbHVkZSBNb25hZC5NYWtlIChUKVxuXG5sZXQgYmluZCcgdCBmID0gYmluZCB0IH5mOihmdW4gYSAtPiBjcmVhdGUgKGZ1biAoKSAtPiBmIGEpKVxubGV0IGlzX2ZvcmNlZCB0ID0gSXZhci5pc19mdWxsIHQuc3RhcnRcbmxldCBpc19kZXRlcm1pbmVkIHQgPSBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHQucmVzdWx0XG5sZXQgcGVlayB0ID0gRGVmZXJyZWQucGVlayB0LnJlc3VsdFxubGV0IHBlZWtfZXhuIHQgPSBPcHRpb24ubWFwIChwZWVrIHQpIH5mOm9rX2V4blxuIiwib3BlbiBDb3JlXG5cbnR5cGUgJ2EgdCA9IHsgd2FpdHMgOiAnYSBJdmFyLnQgUXVldWUudCB9IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgKCkgPSB7IHdhaXRzID0gUXVldWUuY3JlYXRlICgpIH1cbmxldCB3YWl0IHQgPSBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+IFF1ZXVlLmVucXVldWUgdC53YWl0cyBpdmFyKVxubGV0IHNpZ25hbCB0IGEgPSBPcHRpb24uaXRlciAoUXVldWUuZGVxdWV1ZSB0LndhaXRzKSB+ZjooZnVuIGl2YXIgLT4gSXZhci5maWxsIGl2YXIgYSlcblxubGV0IGJyb2FkY2FzdCB0IGEgPVxuICBRdWV1ZS5pdGVyIHQud2FpdHMgfmY6KGZ1biBpdmFyIC0+IEl2YXIuZmlsbCBpdmFyIGEpO1xuICBRdWV1ZS5jbGVhciB0LndhaXRzXG47O1xuIiwib3BlbiBDb3JlXG5pbmNsdWRlIEdjXG5cbigqKiBbYWRkX2ZpbmFsaXplciBmIHhdIGlzIGxpa2UgW0djLmZpbmFsaXNlIGYgeF0sIGV4Y2VwdCB0aGF0IHRoZSBmaW5hbGl6ZXIgaXMgZ3VhcmFudGVlZFxuICAgIHRvIHJ1biBhcyBhbiBBc3luYyBqb2IgKGkuZS4gd2l0aG91dCBpbnRlcnJ1cHRpbmcgb3RoZXIgQXN5bmMgam9icykuICBVbnByb3RlY3RlZCB1c2VcbiAgICBvZiBbQ2FtbC5HYy5maW5hbGlzZV0gb3IgW0NvcmUuR2MuYWRkX2ZpbmFsaXplcl0gaW4gQXN5bmMgcHJvZ3JhbXMgaXMgd3JvbmcsIGJlY2F1c2VcbiAgICB0aGUgZmluYWxpemVycyB3b24ndCBob2xkIHRoZSBhc3luYyBsb2NrLCBhbmQgdGh1cyBjb3VsZCBpbnRlcmxlYXZlIGFyYml0cmFyaWx5IHdpdGhcbiAgICBhc3luYyBqb2JzLiAqKVxubGV0IGFkZF9maW5hbGl6ZXIgaGVhcF9ibG9jayBmID0gU2NoZWR1bGVyLihhZGRfZmluYWxpemVyICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2V4biBoZWFwX2Jsb2NrIGYgPSBTY2hlZHVsZXIuKGFkZF9maW5hbGl6ZXJfZXhuICh0ICgpKSkgaGVhcF9ibG9jayBmXG5sZXQgYWRkX2ZpbmFsaXplcl9sYXN0IGhlYXBfYmxvY2sgZiA9IFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0ICh0ICgpKSkgaGVhcF9ibG9jayBmXG5cbmxldCBhZGRfZmluYWxpemVyX2xhc3RfZXhuIGhlYXBfYmxvY2sgZiA9XG4gIFNjaGVkdWxlci4oYWRkX2ZpbmFsaXplcl9sYXN0X2V4biAodCAoKSkpIGhlYXBfYmxvY2sgZlxuOztcblxubW9kdWxlIEFsYXJtID0gc3RydWN0XG4gIG1vZHVsZSBBbGFybSA9IEdjLkV4cGVydC5BbGFybVxuXG4gIHR5cGUgdCA9IEFsYXJtLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgY3JlYXRlIGYgPSBTY2hlZHVsZXIuKGNyZWF0ZV9hbGFybSAodCAoKSkpIGZcbiAgbGV0IGRlbGV0ZSA9IEFsYXJtLmRlbGV0ZVxuZW5kXG4iLCIoKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBzaWduYXR1cmVzIHRoYXQgZXh0ZW5kIFtDb3JlLkludmFyaWFudF0gd2l0aCBhbiBbQXN5bmNdXG4gICAgc3VibW9kdWxlIGZvciBpbnZhcmlhbnRzIHRoYXQgdXNlIGFzeW5jIGNvbXB1dGF0aW9uIGFuZCByZXR1cm4gW3VuaXQgRGVmZXJyZWQudF0uICopXG5cbm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2EgLT4gdW5pdCBEZWZlcnJlZC50XG4gIHR5cGUgJ2EgaW52ID0gJ2EgdFxuXG4gIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBpbnZhcmlhbnQgOiB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMSA9IHNpZ1xuICAgIHR5cGUgJ2EgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYSB0IGludlxuICBlbmRcblxuICBtb2R1bGUgdHlwZSBTMiA9IHNpZ1xuICAgIHR5cGUgKCdhLCAnYikgdFxuXG4gICAgdmFsIGludmFyaWFudCA6ICdhIGludiAtPiAnYiBpbnYgLT4gKCdhLCAnYikgdCBpbnZcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUzMgPSBzaWdcbiAgICB0eXBlICgnYSwgJ2IsICdjKSB0XG5cbiAgICB2YWwgaW52YXJpYW50IDogJ2EgaW52IC0+ICdiIGludiAtPiAnYyBpbnYgLT4gKCdhLCAnYiwgJ2MpIHQgaW52XG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIEFzeW5jX2ludmFyaWFudCA9IHNpZ1xuICBpbmNsdWRlIG1vZHVsZSB0eXBlIG9mIENvcmUuSW52YXJpYW50XG5cbiAgbW9kdWxlIEFzeW5jIDogc2lnXG4gICAgb3BlbiBBc3luY1xuXG4gICAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIEFzeW5jLnRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBTXG4gICAgbW9kdWxlIHR5cGUgUzEgPSBTMVxuICAgIG1vZHVsZSB0eXBlIFMyID0gUzJcbiAgICBtb2R1bGUgdHlwZSBTMyA9IFMzXG5cbiAgICB2YWwgaW52YXJpYW50XG4gICAgICA6ICBTb3VyY2VfY29kZV9wb3NpdGlvbi50XG4gICAgICAtPiAnYVxuICAgICAgLT4gKCdhIC0+IFNleHAudClcbiAgICAgIC0+ICh1bml0IC0+IHVuaXQgRGVmZXJyZWQudClcbiAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICAgKCoqIFtjaGVja19maWVsZF0gY2FuIGJlIHVzZWQgdG8gY2hlY2sgcmVjb3JkIGZpZWxkcyB3aGVuIHVzaW5nIFtbQEBkZXJpdmluZyBmaWVsZHNdXS5cbiAgICAgICAgSWRpb21hdGljIHVzYWdlIGxvb2tzIGxpa2U6XG5cbiAgICAgICAge1tcbiAgICAgICAgICB0eXBlIHQgPSB7IGZvbyA6IEZvby50IDsgYmFyIDogQmFyLnQgfVxuICAgICAgICAgIFtAQGRlcml2aW5nIGZpZWxkc11cblxuICAgICAgICAgIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgICAgICAgICBJbnZhcmlhbnQuQXN5bmMuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgbGV0IGNoZWNrIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286IChjaGVjayBGb28uaW52YXJpYW50KVxuICAgICAgICAgICAgICAgIH5iYXI6IChjaGVjayBCYXIuaW52YXJpYW50KSBdfVxuXG4gICAgICAgIFdoZW4gc29tZSBmaWVsZHMgaGF2ZSBzeW5jaHJvbm91cyBpbnZhcmlhbnRzLCBvciBkbyBub3QgbmVlZCB0byBiZSBjaGVja2VkLCBpdFxuICAgICAgICBtYXkgYmUgdXNlZnVsIHRvIGRlZmluZSBhIHNlY29uZCB3cmFwcGVyIGFyb3VuZCBbY2hlY2tfZmllbGRdOlxuXG4gICAgICAgIHtbXG4gICAgICAgICAgdHlwZSB0ID0geyBmb28gOiBGb28udCA7IGJhciA6IEJhci50IDsgcXV1eCA6IFF1dXgudCB9XG4gICAgICAgICAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gICAgICAgICAgbGV0IGludmFyaWFudCB0ID1cbiAgICAgICAgICAgIEludmFyaWFudC5Bc3luYy5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgY2hlY2snIGludiA9IEludmFyaWFudC5Bc3luYy5jaGVja19maWVsZCB0IGludiBpblxuICAgICAgICAgICAgICBsZXQgY2hlY2sgaW52ID0gY2hlY2snIChmdW4geCAtPiBpbnYgeDsgcmV0dXJuICgpKSBpblxuICAgICAgICAgICAgICBGaWVsZHMuZm9sZCB+aW5pdDoocmV0dXJuICgpKVxuICAgICAgICAgICAgICAgIH5mb286ICAoY2hlY2snIEZvby5pbnZhcmlhbnQpXG4gICAgICAgICAgICAgICAgfmJhcjogIChjaGVjayAgQmFyLmludmFyaWFudClcbiAgICAgICAgICAgICAgICB+cXV1eDogKGNoZWNrICBpZ25vcmUpIF19ICopXG4gICAgdmFsIGNoZWNrX2ZpZWxkIDogJ2EgLT4gJ2IgdCAtPiB1bml0IERlZmVycmVkLnQgLT4gKCdhLCAnYikgRmllbGQudCAtPiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIERlZmVycmVkLkxldF9zeW50YXhcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb3JlLkludmFyaWFudFxuXG5tb2R1bGUgQXN5bmMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBc3luY19pbnZhcmlhbnRfaW50Zi5Bc3luY1xuXG4gIGxldCBpbnZhcmlhbnQgaGVyZSB0IHNleHBfb2ZfdCBmID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJ1bjpcbiAgICAgICAgICBgU2NoZWR1bGVcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICBmXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgd2l0aFxuICAgIHwgT2sgKCkgLT4gKClcbiAgICB8IEVycm9yIGV4biAtPlxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImludmFyaWFudCBmYWlsZWRcIiB+XzooaGVyZSA6IFNvdXJjZV9jb2RlX3Bvc2l0aW9uLnQpIChleG4gOiBleG4pIH5fOih0IDogdCldXG4gIDs7XG5cbiAgbGV0IGNoZWNrX2ZpZWxkIHQgZiB3YWl0X2Zvcl9wcmV2aW91cyBmaWVsZCA9XG4gICAgbGV0JWJpbmQgKCkgPSB3YWl0X2Zvcl9wcmV2aW91cyBpblxuICAgIG1hdGNoJW1hcFxuICAgICAgTW9uaXRvci50cnlfd2l0aFxuICAgICAgICB+cnVuOlxuICAgICAgICAgIGBTY2hlZHVsZVxuICAgICAgICB+cmVzdDpgTG9nXG4gICAgICAgIH5leHRyYWN0X2V4bjp0cnVlXG4gICAgICAgIChmdW4gKCkgLT4gZiAoRmllbGQuZ2V0IGZpZWxkIHQpKVxuICAgIHdpdGhcbiAgICB8IE9rICgpIC0+ICgpXG4gICAgfCBFcnJvciBleG4gLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwicHJvYmxlbSB3aXRoIGZpZWxkXCIgfmZpZWxkOihGaWVsZC5uYW1lIGZpZWxkIDogc3RyaW5nKSAoZXhuIDogZXhuKV1cbiAgOztcbmVuZFxuIiwiKCoqIENvbnRhaW5zIEFzeW5jJ3MgY29yZSBkYXRhIHN0cnVjdHVyZXMsIGxpa2Uge3shQXN5bmNfa2VybmVsLkRlZmVycmVkfVtEZWZlcnJlZF19LFxuICAgIHt7IUFzeW5jX2tlcm5lbC5JdmFyfVtJdmFyXX0sIGFuZCB7eyFBc3luY19rZXJuZWwuQ2xvY2tfaW50Zi5DbG9ja31bQ2xvY2tdfS5cblxuICAgIFtBc3luY19rZXJuZWxdIGlzIGRlc2lnbmVkIHRvIGRlcGVuZCBvbmx5IG9uIHt7IUNvcmV9W0NvcmVdfSBhbmQgc28gaXMgbW9yZVxuICAgIHBsYXRmb3JtLWluZGVwZW5kZW50LiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBBc3luY19rZXJuZWxfY29uZmlnID0gQXN5bmNfa2VybmVsX2NvbmZpZ1xubW9kdWxlIEFzeW5jX2tlcm5lbF9yZXF1aXJlX2V4cGxpY2l0X3RpbWVfc291cmNlID0gUmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxubW9kdWxlIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyXG5tb2R1bGUgQnZhciA9IEJ2YXJcbm1vZHVsZSBDbG9ja19ucyA9IENsb2NrX25zXG5tb2R1bGUgQ29uZGl0aW9uID0gQXN5bmNfY29uZGl0aW9uXG5tb2R1bGUgRGVmZXJyZWQgPSBEZWZlcnJlZFxubW9kdWxlIEV4ZWN1dGlvbl9jb250ZXh0ID0gRXhlY3V0aW9uX2NvbnRleHRcbm1vZHVsZSBHYyA9IEFzeW5jX2djXG5tb2R1bGUgSW52YXJpYW50ID0gQXN5bmNfaW52YXJpYW50XG5tb2R1bGUgSXZhciA9IEl2YXJcbm1vZHVsZSBMYXp5X2RlZmVycmVkID0gTGF6eV9kZWZlcnJlZFxubW9kdWxlIE1vbmFkX3NlcXVlbmNlID0gTW9uYWRfc2VxdWVuY2Vcbm1vZHVsZSBNb25pdG9yID0gTW9uaXRvclxubW9kdWxlIE12YXIgPSBNdmFyXG5tb2R1bGUgUGlwZSA9IFBpcGVcbm1vZHVsZSBQcmlvcml0eSA9IFByaW9yaXR5XG5tb2R1bGUgU2VxdWVuY2VyID0gVGhyb3R0bGUuU2VxdWVuY2VyXG5tb2R1bGUgU3RyZWFtID0gQXN5bmNfc3RyZWFtXG5tb2R1bGUgU3luY2hyb25vdXNfdGltZV9zb3VyY2UgPSBTeW5jaHJvbm91c190aW1lX3NvdXJjZVxubW9kdWxlIFRhaWwgPSBUYWlsXG5tb2R1bGUgVGhyb3R0bGUgPSBUaHJvdHRsZVxubW9kdWxlIFRpbWVfc291cmNlID0gVGltZV9zb3VyY2VcblxuXG4oKiogezIgVG9wbGV2ZWwgZnVuY3Rpb25zIH1cblxuICAgIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGJyb2FkbHkgdXNlZnVsIHdoZW4gd3JpdGluZyBBc3luYyBwcm9ncmFtcywgYW5kIHNvIGFyZSBtYWRlXG4gICAgYXZhaWxhYmxlIGF0IHRoZSB0b3BsZXZlbC4gKilcblxuXG5sZXQgYWZ0ZXIgPSBDbG9ja19ucy5hZnRlclxubGV0IGF0ID0gQ2xvY2tfbnMuYXRcbmxldCBjYXRjaCA9IE1vbml0b3IuY2F0Y2hcbmxldCBjaG9pY2UgPSBEZWZlcnJlZC5jaG9pY2VcbmxldCBjaG9vc2UgPSBEZWZlcnJlZC5jaG9vc2VcbmxldCBkb24ndF93YWl0X2ZvciA9IERlZmVycmVkLmRvbid0X3dhaXRfZm9yXG5sZXQgZXZlcnkgPSBDbG9ja19ucy5ldmVyeVxubGV0IG5ldmVyID0gRGVmZXJyZWQubmV2ZXJcbmxldCBzY2hlZHVsZSA9IFNjaGVkdWxlci5zY2hlZHVsZVxubGV0IHNjaGVkdWxlJyA9IFNjaGVkdWxlci5zY2hlZHVsZSdcbmxldCB0cnlfd2l0aCA9IE1vbml0b3IudHJ5X3dpdGhcbmxldCB1cG9uID0gRGVmZXJyZWQudXBvblxubGV0IHdpdGhfdGltZW91dCA9IENsb2NrX25zLndpdGhfdGltZW91dFxubGV0IHdpdGhpbiA9IFNjaGVkdWxlci53aXRoaW5cbmxldCB3aXRoaW4nID0gU2NoZWR1bGVyLndpdGhpbidcblxuKCoqIHsyIEluZml4IG9wZXJhdG9ycyBhbmQgW0xldF9zeW50YXhdIHN1cHBvcnR9ICopXG5cbmluY2x1ZGUgKERlZmVycmVkIDogTW9uYWQuSW5maXggd2l0aCB0eXBlICdhIHQgOj0gJ2EgRGVmZXJyZWQudClcblxuKCoqIGVxdWl2YWxlbnQgdG8geyFEZWZlcnJlZC51cG9ufS4gKilcbmxldCAoID4+PiApID0gRGVmZXJyZWQuSW5maXguKCA+Pj4gKVxuXG4oKiogZXF1aXZhbGVudCB0byB7IURlZmVycmVkLlJlc3VsdC5iaW5kfS4gKilcbmxldCAoID4+PT8gKSA9IERlZmVycmVkLlJlc3VsdC4oID4+PSApXG5cbigqKiBlcXVpdmFsZW50IHRvIHshRGVmZXJyZWQuUmVzdWx0Lm1hcH0uICopXG5sZXQgKCA+Pnw/ICkgPSBEZWZlcnJlZC5SZXN1bHQuKCA+PnwgKVxuXG5pbmNsdWRlIERlZmVycmVkLkxldF9zeW50YXhcblxuKCoqLyoqKVxuXG4oKiogVGhlIG1vZHVsZXMgaW4gW0FzeW5jX2tlcm5lbF9wcml2YXRlXSBhcmUgdXNlZCBmb3IgY29uc3RydWN0aW5nIGFuZCB0ZXN0aW5nIEFzeW5jLCBhbmRcbiAgICBzaG91bGQgbm90IG90aGVyd2lzZSBiZSB1c2VkLiAqKVxubW9kdWxlIEFzeW5jX2tlcm5lbF9wcml2YXRlID0gc3RydWN0XG4gIG1vZHVsZSBEZWJ1ZyA9IERlYnVnXG4gIG1vZHVsZSBJdmFyMCA9IEl2YXIwXG4gIG1vZHVsZSBJdmFyX2ZpbGxlciA9IEl2YXJfZmlsbGVyXG4gIG1vZHVsZSBKb2IgPSBKb2JcbiAgbW9kdWxlIFN0YWNrX29yX2NvdW50ZXIgPSBTdGFja19vcl9jb3VudGVyXG5lbmRcblxuKCoqLyoqKVxuXG4oKiBUaGlzIHRlc3QgbXVzdCBiZSBpbiB0aGlzIGxpYnJhcnksIGJlY2F1c2UgaXQgcmVxdWlyZXMgW3JldHVybl0gdG8gYmUgaW5saW5lZC4gIE1vdmluZ1xuICAgaXQgdG8gYW5vdGhlciBsaWJyYXJ5IHdpbGwgY2F1c2UgaXQgdG8gYnJlYWsgd2l0aCBbWF9MSUJSQVJZX0lOTElOSU5HPWZhbHNlXS4gKilcbmxldCV0ZXN0X3VuaXQgXCJbcmV0dXJuICgpXSBkb2VzIG5vdCBhbGxvY2F0ZVwiID1cbiAgbGV0IHcxID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChyZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IChEZWZlcnJlZC5MZXRfc3ludGF4LnJldHVybiAoKSkgOiBfIERlZmVycmVkLnQpO1xuICBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgKERlZmVycmVkLkxldF9zeW50YXguTGV0X3N5bnRheC5yZXR1cm4gKCkpIDogXyBEZWZlcnJlZC50KTtcbiAgbGV0IHcyID0gR2MubWlub3Jfd29yZHMgKCkgaW5cbiAgWyV0ZXN0X3Jlc3VsdDogaW50XSB3MiB+ZXhwZWN0OncxXG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgQXN5bmNfa2VybmVsXG5vcGVuISBBc3luY19rZXJuZWxfcmVxdWlyZV9leHBsaWNpdF90aW1lX3NvdXJjZVxuaW5jbHVkZSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb25fa2VybmVsX2ludGZcblxubW9kdWxlIE1ha2UgKENvbm4gOiBDbG9zYWJsZSkgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm4gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIENvbm5cblxuICAgIGxldCBzZXhwX29mX3QgKF8gOiB0KSA6IFNleHAudCA9IEF0b20gXCI8Q29ubi50PlwiXG4gIGVuZFxuXG4gIHR5cGUgY29ubiA9IENvbm4udFxuXG4gIG1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdFxuICAgICAgfCBPYnRhaW5lZF9hZGRyZXNzIG9mICdhZGRyZXNzXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IG9mIEVycm9yLnRcbiAgICAgIHwgQ29ubmVjdGVkIG9mIChjb25uW0BzZXhwLm9wYXF1ZV0pXG4gICAgICB8IERpc2Nvbm5lY3RlZFxuICAgIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICB0eXBlICdhZGRyZXNzIGV2ZW50ID0gJ2FkZHJlc3MgdFxuXG4gICAgbW9kdWxlIEhhbmRsZXIgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2FkZHJlc3MgdCA9XG4gICAgICAgIHsgc2VydmVyX25hbWUgOiBzdHJpbmdcbiAgICAgICAgOyBvbl9ldmVudCA6ICdhZGRyZXNzIGV2ZW50IC0+IHVuaXQgRGVmZXJyZWQudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IGxvZ19sZXZlbCA9IGZ1bmN0aW9uXG4gICAgICB8IEF0dGVtcHRpbmdfdG9fY29ubmVjdCB8IENvbm5lY3RlZCBfIHwgRGlzY29ubmVjdGVkIHwgT2J0YWluZWRfYWRkcmVzcyBfIC0+IGBJbmZvXG4gICAgICB8IEZhaWxlZF90b19jb25uZWN0IF8gLT4gYEVycm9yXG4gICAgOztcblxuICAgIGxldCBoYW5kbGUgdCB7IEhhbmRsZXIuc2VydmVyX25hbWUgPSBfOyBvbl9ldmVudCB9ID0gb25fZXZlbnQgdFxuICBlbmRcblxuICAoKiBBIHBlcnNpc3RlbnQgY29ubmVjdGlvbiB0aGF0IGlzIHBvbHltb3JwaGljIGluIHRoZSBhZGRyZXNzIHR5cGUuICBXZSBoaWRlIGF3YXkgdGhpc1xuICAgICB0eXBlIGxhdGVyIHNpbmNlIGl0IG9ubHkgYXBwZWFycyBpbiB0aGUgdHlwZSBvZiBbY3JlYXRlXS4gKilcbiAgbW9kdWxlIFBvbHkgPSBzdHJ1Y3RcbiAgICB0eXBlICdhZGRyZXNzIHQgPVxuICAgICAgeyBnZXRfYWRkcmVzcyA6IHVuaXQgLT4gJ2FkZHJlc3MgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IGNvbm5lY3QgOiAnYWRkcmVzcyAtPiBDb25uLnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG4gICAgICA7IHJldHJ5X2RlbGF5IDogdW5pdCAtPiB1bml0IERlZmVycmVkLnRcbiAgICAgIDsgbXV0YWJsZSBjb25uIDogWyBgT2sgb2YgQ29ubi50IHwgYENsb3NlX3N0YXJ0ZWQgXSBJdmFyLnRcbiAgICAgIDsgbXV0YWJsZSBuZXh0X2Nvbm5lY3RfcmVzdWx0IDogQ29ubi50IE9yX2Vycm9yLnQgSXZhci50XG4gICAgICA7IGV2ZW50X2hhbmRsZXIgOiAnYWRkcmVzcyBFdmVudC5IYW5kbGVyLnRcbiAgICAgIDsgY2xvc2Vfc3RhcnRlZCA6IHVuaXQgSXZhci50XG4gICAgICA7IGNsb3NlX2ZpbmlzaGVkIDogdW5pdCBJdmFyLnRcbiAgICAgIDsgZG9uJ3RfcmVjb25uZWN0IDogdW5pdCBJdmFyLnRcbiAgICAgIDsgYWRkcmVzc19lcXVhbCA6ICdhZGRyZXNzIC0+ICdhZGRyZXNzIC0+IGJvb2xcbiAgICAgIDsgc2V4cF9vZl9hZGRyZXNzIDogJ2FkZHJlc3MgLT4gU2V4cC50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gICAgbGV0IHNlcnZlcl9uYW1lIHQgPSB0LmV2ZW50X2hhbmRsZXIuc2VydmVyX25hbWVcbiAgICBsZXQgaGFuZGxlX2V2ZW50IHQgZXZlbnQgPSBFdmVudC5oYW5kbGUgZXZlbnQgdC5ldmVudF9oYW5kbGVyXG5cbiAgICAoKiBUaGlzIGZ1bmN0aW9uIGZvY3VzZXMgaW4gb24gdGhlIHRoZSBlcnJvciBpdHNlbGYsIGRpc2NhcmRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hpY2hcbiAgICAgICBtb25pdG9yIGNhdWdodCB0aGUgZXJyb3IsIGlmIGFueS5cblxuICAgICAgIElmIHdlIGRvbid0IGRvIHRoaXMsIHdlIHNvbWV0aW1lcyBlbmQgdXAgd2l0aCBub2lzeSBsb2dzIHdoaWNoIHJlcG9ydCB0aGUgc2FtZSBlcnJvclxuICAgICAgIGFnYWluIGFuZCBhZ2FpbiwgZGlmZmVyaW5nIG9ubHkgYXMgdG8gd2hhdCBtb25pdG9yIGNhdWdodCB0aGVtLiAqKVxuICAgIGxldCBzYW1lX2Vycm9yIGUxIGUyID1cbiAgICAgIGxldCB0b19zZXhwIGUgPSBFeG4uc2V4cF9vZl90IChNb25pdG9yLmV4dHJhY3RfZXhuIChFcnJvci50b19leG4gZSkpIGluXG4gICAgICBTZXhwLmVxdWFsICh0b19zZXhwIGUxKSAodG9fc2V4cCBlMilcbiAgICA7O1xuXG4gICAgKCogQ29udGludWUgdHJ5aW5nIHRvIGNvbm5lY3QgdW50aWwgd2UgYXJlIGFibGUgdG8gZG8gc28sIGluIHdoaWNoIGNhc2Ugd2UgcmV0dXJuIGJvdGhcbiAgICAgICB0aGUgbmV3IGNvbm5lY3Rpb24gYW5kIGEgZGVmZXJyZWQgdGhhdCB3aWxsIGJlY29tZSBkZXRlcm1pbmVkIG9uY2Ugd2UgYXJlIHJlYWR5IGZvclxuICAgICAgIHRoZSBuZXh0IHJlY29ubmVjdGlvbiBhdHRlbXB0LiAqKVxuICAgIGxldCB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHQgPVxuICAgICAgKCogV2UgdGFrZSBjYXJlIG5vdCB0byBzcGFtIGxvZ3Mgd2l0aCB0aGUgc2FtZSBtZXNzYWdlIG92ZXIgYW5kIG92ZXIgYnkgY29tcGFyaW5nXG4gICAgICAgICBlYWNoIGxvZyBtZXNzYWdlIHRoZSB0aGUgcHJldmlvdXMgb25lIG9mIHRoZSBzYW1lIHR5cGUuICopXG4gICAgICBsZXQgcHJldmlvdXNfYWRkcmVzcyA9IHJlZiBOb25lIGluXG4gICAgICBsZXQgcHJldmlvdXNfZXJyb3IgPSByZWYgTm9uZSBpblxuICAgICAgbGV0IGNvbm5lY3QgKCkgPVxuICAgICAgICB0LmdldF9hZGRyZXNzICgpXG4gICAgICAgID4+PSBmdW5jdGlvblxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIGFkZHIgLT5cbiAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19hZGRyZXNzID1cbiAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19hZGRyZXNzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgfCBTb21lIHByZXZpb3VzX2FkZHJlc3MgLT4gdC5hZGRyZXNzX2VxdWFsIGFkZHIgcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgcHJldmlvdXNfYWRkcmVzcyA6PSBTb21lIGFkZHI7XG4gICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfYWRkcmVzc1xuICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgZWxzZSBoYW5kbGVfZXZlbnQgdCAoT2J0YWluZWRfYWRkcmVzcyBhZGRyKSlcbiAgICAgICAgICA+Pj0gZnVuICgpIC0+IHQuY29ubmVjdCBhZGRyXG4gICAgICBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICB0aGVuIHJldHVybiBgQ2xvc2Vfc3RhcnRlZFxuICAgICAgICBlbHNlIGlmIEl2YXIuaXNfZnVsbCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICB0aGVuIHJldHVybiBgRG9uJ3RfcmVjb25uZWN0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nID0gdC5yZXRyeV9kZWxheSAoKSBpblxuICAgICAgICAgIGxldCViaW5kIGNvbm5lY3RfcmVzdWx0ID0gY29ubmVjdCAoKSBpblxuICAgICAgICAgIEl2YXIuZmlsbCB0Lm5leHRfY29ubmVjdF9yZXN1bHQgY29ubmVjdF9yZXN1bHQ7XG4gICAgICAgICAgdC5uZXh0X2Nvbm5lY3RfcmVzdWx0IDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIG1hdGNoIGNvbm5lY3RfcmVzdWx0IHdpdGhcbiAgICAgICAgICB8IE9rIGNvbm4gLT4gcmV0dXJuIChgT2sgKGNvbm4sIHJlYWR5X3RvX3JldHJ5X2Nvbm5lY3RpbmcpKVxuICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICBsZXQgc2FtZV9hc19wcmV2aW91c19lcnJvciA9XG4gICAgICAgICAgICAgIG1hdGNoICFwcmV2aW91c19lcnJvciB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICB8IFNvbWUgcHJldmlvdXNfZXJyIC0+IHNhbWVfZXJyb3IgZXJyIHByZXZpb3VzX2VyclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHByZXZpb3VzX2Vycm9yIDo9IFNvbWUgZXJyO1xuICAgICAgICAgICAgKGlmIHNhbWVfYXNfcHJldmlvdXNfZXJyb3JcbiAgICAgICAgICAgICB0aGVuIERlZmVycmVkLnVuaXRcbiAgICAgICAgICAgICBlbHNlIGhhbmRsZV9ldmVudCB0IChGYWlsZWRfdG9fY29ubmVjdCBlcnIpKVxuICAgICAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICAgICAgRGVmZXJyZWQuYW55XG4gICAgICAgICAgICAgIFsgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZ1xuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgOyBJdmFyLnJlYWQgdC5kb24ndF9yZWNvbm5lY3RcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgPj49IGZ1biAoKSAtPiBsb29wICgpKVxuICAgICAgaW5cbiAgICAgIGxvb3AgKClcbiAgICA7O1xuXG4gICAgbGV0IGFib3J0X3JlY29ubmVjdGluZ193aXRoX25vX2FjdGl2ZV9jb25uZWN0aW9uIHQgPVxuICAgICAgSXZhci5maWxsIHQuY2xvc2Vfc3RhcnRlZCAoKTtcbiAgICAgIEl2YXIuZmlsbCB0LmNsb3NlX2ZpbmlzaGVkICgpO1xuICAgICAgSXZhci5maWxsIHQuY29ubiBgQ2xvc2Vfc3RhcnRlZFxuICAgIDs7XG5cbiAgICBsZXQgY3JlYXRlXG4gICAgICAgICAgKHR5cGUgYWRkcmVzcylcbiAgICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgICA/KG9uX2V2ZW50ID0gZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbiAgICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgICA/KHJhbmRvbV9zdGF0ZSA9IGBTdGF0ZSBSYW5kb20uU3RhdGUuZGVmYXVsdClcbiAgICAgICAgICA/KHRpbWVfc291cmNlID0gVGltZV9zb3VyY2Uud2FsbF9jbG9jayAoKSlcbiAgICAgICAgICB+Y29ubmVjdFxuICAgICAgICAgIH5hZGRyZXNzOihtb2R1bGUgQWRkcmVzcyA6IEFkZHJlc3Mgd2l0aCB0eXBlIHQgPSBhZGRyZXNzKVxuICAgICAgICAgIGdldF9hZGRyZXNzXG4gICAgICA9XG4gICAgICBsZXQgZXZlbnRfaGFuZGxlciA9IHsgRXZlbnQuSGFuZGxlci5zZXJ2ZXJfbmFtZTsgb25fZXZlbnQgfSBpblxuICAgICAgbGV0IGRlZmF1bHRfcmV0cnlfZGVsYXkgPVxuICAgICAgICBGbi5jb25zdCAoVGltZV9ucy5TcGFuLm9mX3NlYyAoaWYgYW1fcnVubmluZ190ZXN0IHRoZW4gMC4xIGVsc2UgMTAuKSlcbiAgICAgIGluXG4gICAgICBsZXQgbm9uX3JhbmRvbWl6ZWRfZGVsYXkgPSBPcHRpb24udmFsdWUgcmV0cnlfZGVsYXkgfmRlZmF1bHQ6ZGVmYXVsdF9yZXRyeV9kZWxheSBpblxuICAgICAgbGV0IHJldHJ5X2RlbGF5X3NwYW4gPVxuICAgICAgICBtYXRjaCByYW5kb21fc3RhdGUgd2l0aFxuICAgICAgICB8IGBOb25fcmFuZG9tIC0+IG5vbl9yYW5kb21pemVkX2RlbGF5XG4gICAgICAgIHwgYFN0YXRlIHJhbmRvbV9zdGF0ZSAtPlxuICAgICAgICAgIGZ1biAoKSAtPlxuICAgICAgICAgICAgbGV0IHNwYW4gPSBub25fcmFuZG9taXplZF9kZWxheSAoKSBpblxuICAgICAgICAgICAgbGV0IHNwYW4gPSBUaW1lX25zLlNwYW4udG9fc2VjIHNwYW4gaW5cbiAgICAgICAgICAgIGxldCBkaXN0YW5jZSA9IFJhbmRvbS5TdGF0ZS5mbG9hdCByYW5kb21fc3RhdGUgKHNwYW4gKi4gMC4zKSBpblxuICAgICAgICAgICAgbGV0IHdhaXQgPVxuICAgICAgICAgICAgICBpZiBSYW5kb20uU3RhdGUuYm9vbCByYW5kb21fc3RhdGVcbiAgICAgICAgICAgICAgdGhlbiBzcGFuICsuIGRpc3RhbmNlXG4gICAgICAgICAgICAgIGVsc2Ugc3BhbiAtLiBkaXN0YW5jZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFRpbWVfbnMuU3Bhbi5vZl9zZWMgd2FpdFxuICAgICAgaW5cbiAgICAgIGxldCByZXRyeV9kZWxheSAoKSA9IFRpbWVfc291cmNlLmFmdGVyIHRpbWVfc291cmNlIChyZXRyeV9kZWxheV9zcGFuICgpKSBpblxuICAgICAgbGV0IHQgPVxuICAgICAgICB7IGV2ZW50X2hhbmRsZXJcbiAgICAgICAgOyBnZXRfYWRkcmVzc1xuICAgICAgICA7IGNvbm5lY3RcbiAgICAgICAgOyBuZXh0X2Nvbm5lY3RfcmVzdWx0ID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyByZXRyeV9kZWxheVxuICAgICAgICA7IGNvbm4gPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGNsb3NlX2ZpbmlzaGVkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgOyBkb24ndF9yZWNvbm5lY3QgPSBJdmFyLmNyZWF0ZSAoKVxuICAgICAgICA7IGFkZHJlc3NfZXF1YWwgPSBBZGRyZXNzLmVxdWFsXG4gICAgICAgIDsgc2V4cF9vZl9hZGRyZXNzID0gQWRkcmVzcy5zZXhwX29mX3RcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgICgqIHRoaXMgbG9vcCBmaW5pc2hlcyBvbmNlIFtjbG9zZSB0XSBoYXMgYmVlbiBjYWxsZWQsIGluIHdoaWNoIGNhc2UgaXQgbWFrZXMgc3VyZSB0b1xuICAgICAgICAgbGVhdmUgW3QuY29ubl0gZmlsbGVkIHdpdGggW2BDbG9zZV9zdGFydGVkXS4gKilcbiAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICBAQCBEZWZlcnJlZC5yZXBlYXRfdW50aWxfZmluaXNoZWQgKCkgKGZ1biAoKSAtPlxuICAgICAgICBoYW5kbGVfZXZlbnQgdCBBdHRlbXB0aW5nX3RvX2Nvbm5lY3RcbiAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICB0cnlfY29ubmVjdGluZ191bnRpbF9zdWNjZXNzZnVsIHRcbiAgICAgICAgPj49IGZ1bmN0aW9uXG4gICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkO1xuICAgICAgICAgIHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBEb24ndF9yZWNvbm5lY3QgLT5cbiAgICAgICAgICBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0O1xuICAgICAgICAgIHJldHVybiAoYEZpbmlzaGVkICgpKVxuICAgICAgICB8IGBPayAoY29ubiwgcmVhZHlfdG9fcmV0cnlfY29ubmVjdGluZykgLT5cbiAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIChgT2sgY29ubik7XG4gICAgICAgICAgaGFuZGxlX2V2ZW50IHQgKENvbm5lY3RlZCBjb25uKVxuICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICBDb25uLmNsb3NlX2ZpbmlzaGVkIGNvbm5cbiAgICAgICAgICA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgdC5jb25uIDwtIEl2YXIuY3JlYXRlICgpO1xuICAgICAgICAgIGhhbmRsZV9ldmVudCB0IERpc2Nvbm5lY3RlZFxuICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAoKiB3YWl0cyB1bnRpbCBbcmV0cnlfZGVsYXkgKCldIHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGUgdGltZSBqdXN0IGJlZm9yZSB3ZSBsYXN0XG4gICAgICAgICAgICAgdHJpZWQgdG8gY29ubmVjdCByYXRoZXIgdGhhbiB0aGUgdGltZSB3ZSBub3RpY2VkIGJlaW5nIGRpc2Nvbm5lY3RlZCwgc28gdGhhdCBpZlxuICAgICAgICAgICAgIGEgbG9uZy1saXZlZCBjb25uZWN0aW9uIGRpZXMsIHdlIHdpbGwgYXR0ZW1wdCB0byByZWNvbm5lY3QgaW1tZWRpYXRlbHkuICopXG4gICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgICBEZWZlcnJlZC5hbnlcbiAgICAgICAgICAgICAgWyByZWFkeV90b19yZXRyeV9jb25uZWN0aW5nXG4gICAgICAgICAgICAgIDsgSXZhci5yZWFkIHQuY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICA7IEl2YXIucmVhZCB0LmRvbid0X3JlY29ubmVjdFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBJdmFyLmZpbGwgdC5jb25uIGBDbG9zZV9zdGFydGVkO1xuICAgICAgICAgICAgYEZpbmlzaGVkICgpKVxuICAgICAgICAgIGVsc2UgaWYgSXZhci5pc19mdWxsIHQuZG9uJ3RfcmVjb25uZWN0XG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICBhYm9ydF9yZWNvbm5lY3Rpbmdfd2l0aF9ub19hY3RpdmVfY29ubmVjdGlvbiB0O1xuICAgICAgICAgICAgYEZpbmlzaGVkICgpKVxuICAgICAgICAgIGVsc2UgYFJlcGVhdCAoKSk7XG4gICAgICB0XG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWQgdCA9XG4gICAgICAoKiBUYWtlIGNhcmUgbm90IHRvIHJldHVybiBhIGNvbm5lY3Rpb24gdGhhdCBpcyBrbm93biB0byBiZSBjbG9zZWQgYXQgdGhlIHRpbWVcbiAgICAgICAgIFtjb25uZWN0ZWRdIHdhcyBjYWxsZWQuICBUaGlzIGNvdWxkIGhhcHBlbiBpbiBjbGllbnQgY29kZSB0aGF0IGJlaGF2ZXMgbGlrZVxuICAgICAgICAge1tcbiAgICAgICAgICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jb25uZWN0ZWQgdFxuICAgICAgICAgICA+Pj0gZnVuIGMxIC0+XG4gICAgICAgICAgIC4uLlxuICAgICAgICAgICAgIFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIGMxXG4gICAgICAgICAgICgqIGF0IHRoaXMgcG9pbnQgd2UgYXJlIGluIGEgcmFjZSB3aXRoIHRoZSBzYW1lIGNhbGwgaW5zaWRlXG4gICAgICAgICAgICAgIHBlcnNpc3RlbnRfY2xpZW50Lm1sICopXG4gICAgICAgICAgID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jb25uZWN0ZWQgdFxuICAgICAgICAgICAoKiBkZXBlbmRpbmcgb24gaG93IHRoZSByYWNlIHR1cm5zIG91dCwgd2UgZG9uJ3Qgd2FudCB0byBnZXQgYSBjbG9zZWQgY29ubmVjdGlvblxuICAgICAgICAgICAgICBoZXJlICopXG4gICAgICAgICAgID4+PSBmdW4gYzIgLT5cbiAgICAgICAgICAgLi4uXG4gICAgICAgICBdfVxuICAgICAgICAgVGhpcyBkb2Vzbid0IHJlbW92ZSB0aGUgcmFjZSBjb25kaXRpb24sIGJ1dCBpdCBtYWtlcyBpdCBsZXNzIGxpa2VseSB0byBoYXBwZW4uXG4gICAgICAqKVxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgbGV0IGQgPSBJdmFyLnJlYWQgdC5jb25uIGluXG4gICAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGRcbiAgICAgICAgICA+Pj0gKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBDbG9zZV9zdGFydGVkIC0+IERlZmVycmVkLm5ldmVyICgpXG4gICAgICAgICAgICB8IGBPayBjb25uIC0+IHJldHVybiBjb25uKVxuICAgICAgICB8IFNvbWUgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQubmV2ZXIgKClcbiAgICAgICAgfCBTb21lIChgT2sgY29ubikgLT5cbiAgICAgICAgICBpZiBDb25uLmlzX2Nsb3NlZCBjb25uXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgKCogZ2l2ZSB0aGUgcmVjb25uZWN0aW9uIGxvb3AgYSBjaGFuY2UgdG8gb3ZlcndyaXRlIHRoZSBpdmFyICopXG4gICAgICAgICAgICBDb25uLmNsb3NlX2ZpbmlzaGVkIGNvbm4gPj49IGxvb3BcbiAgICAgICAgICBlbHNlIHJldHVybiBjb25uXG4gICAgICBpblxuICAgICAgbG9vcCAoKVxuICAgIDs7XG5cbiAgICBsZXQgY3VycmVudF9jb25uZWN0aW9uIHQgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayAoSXZhci5yZWFkIHQuY29ubikgd2l0aFxuICAgICAgfCBOb25lIHwgU29tZSBgQ2xvc2Vfc3RhcnRlZCAtPiBOb25lXG4gICAgICB8IFNvbWUgKGBPayBjb25uKSAtPiBTb21lIGNvbm5cbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBJdmFyLnJlYWQgdC5jbG9zZV9maW5pc2hlZFxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcblxuICAgIGxldCBjbG9zZSB0ID1cbiAgICAgIGlmIEl2YXIuaXNfZnVsbCB0LmNsb3NlX3N0YXJ0ZWRcbiAgICAgIHRoZW5cbiAgICAgICAgKCogQW5vdGhlciBjYWxsIHRvIGNsb3NlIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuICBXYWl0IGZvciBpdCB0byBmaW5pc2guICopXG4gICAgICAgIGNsb3NlX2ZpbmlzaGVkIHRcbiAgICAgIGVsc2UgKFxuICAgICAgICBJdmFyLmZpbGwgdC5jbG9zZV9zdGFydGVkICgpO1xuICAgICAgICBJdmFyLnJlYWQgdC5jb25uXG4gICAgICAgID4+PSBmdW4gY29ubl9vcHQgLT5cbiAgICAgICAgKG1hdGNoIGNvbm5fb3B0IHdpdGhcbiAgICAgICAgIHwgYENsb3NlX3N0YXJ0ZWQgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgfCBgT2sgY29ubiAtPiBDb25uLmNsb3NlIGNvbm4pXG4gICAgICAgID4+fCBmdW4gKCkgLT4gSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCkpXG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWQgPVxuICAgICAgT3JfZXJyb3IuZXJyb3JfcyBbJW1lc3NhZ2UgXCJQZXJzaXN0ZW50IGNvbm5lY3Rpb24gY2xvc2VkXCJdXG4gICAgOztcblxuICAgIGxldCBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgdCA9XG4gICAgICBpZiBpc19jbG9zZWQgdFxuICAgICAgdGhlbiByZXR1cm4gY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0X2Nvbm5lY3Rpb25fY2xvc2VkXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggY3VycmVudF9jb25uZWN0aW9uIHQgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIG5vdCAoQ29ubi5pc19jbG9zZWQgeCkgLT4gcmV0dXJuIChPayB4KVxuICAgICAgICB8IFNvbWUgKF8gOiBDb25uLnQpIHwgTm9uZSAtPlxuICAgICAgICAgIERlZmVycmVkLmNob29zZVxuICAgICAgICAgICAgWyBjaG9pY2UgKEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICBjb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3RfY29ubmVjdGlvbl9jbG9zZWQpXG4gICAgICAgICAgICA7IGNob2ljZSAoSXZhci5yZWFkIHQubmV4dF9jb25uZWN0X3Jlc3VsdCkgRm4uaWRcbiAgICAgICAgICAgIF0pXG4gICAgOztcblxuICAgIGxldCBjbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgdCA9XG4gICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgdC5kb24ndF9yZWNvbm5lY3QgKClcbiAgICA7O1xuICBlbmRcblxuICB0eXBlIHQgPSBUIDogJ2FkZHJlc3MgUG9seS50IC0+IHQgW0BAdW5ib3hlZF1cblxuICBsZXQgc2V4cF9vZl90IChUIHQpID0gUG9seS5zZXhwX29mX3QgdC5zZXhwX29mX2FkZHJlc3MgdFxuXG4gIGxldCBjbG9zZV93aGVuX2N1cnJlbnRfY29ubmVjdGlvbl9pc19jbG9zZWQgKFQgdCkgPVxuICAgIFBvbHkuY2xvc2Vfd2hlbl9jdXJyZW50X2Nvbm5lY3Rpb25faXNfY2xvc2VkIHRcbiAgOztcblxuICBsZXQgY2xvc2VfZmluaXNoZWQgKFQgdCkgPSBQb2x5LmNsb3NlX2ZpbmlzaGVkIHRcbiAgbGV0IGlzX2Nsb3NlZCAoVCB0KSA9IFBvbHkuaXNfY2xvc2VkIHRcbiAgbGV0IGNsb3NlIChUIHQpID0gUG9seS5jbG9zZSB0XG4gIGxldCBzZXJ2ZXJfbmFtZSAoVCB0KSA9IFBvbHkuc2VydmVyX25hbWUgdFxuICBsZXQgY3VycmVudF9jb25uZWN0aW9uIChUIHQpID0gUG9seS5jdXJyZW50X2Nvbm5lY3Rpb24gdFxuICBsZXQgY29ubmVjdGVkX29yX2ZhaWxlZF90b19jb25uZWN0IChUIHQpID0gUG9seS5jb25uZWN0ZWRfb3JfZmFpbGVkX3RvX2Nvbm5lY3QgdFxuICBsZXQgY29ubmVjdGVkIChUIHQpID0gUG9seS5jb25uZWN0ZWQgdFxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgfnNlcnZlcl9uYW1lXG4gICAgICAgID9vbl9ldmVudFxuICAgICAgICA/cmV0cnlfZGVsYXlcbiAgICAgICAgP3JhbmRvbV9zdGF0ZVxuICAgICAgICA/dGltZV9zb3VyY2VcbiAgICAgICAgfmNvbm5lY3RcbiAgICAgICAgfmFkZHJlc3NcbiAgICAgICAgZ2V0X2FkZHJlc3NcbiAgICA9XG4gICAgVFxuICAgICAgKFBvbHkuY3JlYXRlXG4gICAgICAgICB+c2VydmVyX25hbWVcbiAgICAgICAgID9vbl9ldmVudFxuICAgICAgICAgP3JldHJ5X2RlbGF5XG4gICAgICAgICA/cmFuZG9tX3N0YXRlXG4gICAgICAgICA/dGltZV9zb3VyY2VcbiAgICAgICAgIH5jb25uZWN0XG4gICAgICAgICB+YWRkcmVzc1xuICAgICAgICAgZ2V0X2FkZHJlc3MpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcblxudHlwZSB0ID1cbiAgfCBLcmJcbiAgfCBLcmJfdGVzdF9tb2RlXG4gIHwgUnBjXG5bQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHAsIGJpbl9pb11cblxubGV0IG1hZ2ljX3dvcmQgPSBmdW5jdGlvblxuICB8IEtyYiAtPiBcIktSQjJcIlxuICB8IEtyYl90ZXN0X21vZGUgLT4gXCJLQlRcIlxuICB8IFJwYyAtPiBcIlJQQ1wiXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyX2Jpbl9zaXplID0gNVxuXG5sZXQgZ2VuX21hZ2ljX251bWJlciB3b3JkID1cbiAgU3RyaW5nLnRvX2xpc3RfcmV2IHdvcmRcbiAgfD4gTGlzdC5mb2xkIH5pbml0OjAgfmY6KGZ1biBhY2MgYyAtPiAoYWNjICogMjU2KSArIENoYXIudG9faW50IGMpXG47O1xuXG5sZXQgbWFnaWNfbnVtYmVyIHQgPSBnZW5fbWFnaWNfbnVtYmVyIChtYWdpY193b3JkIHQpXG5sZXQgYnlfbWFnaWNfbnVtYmVyID0gSW50Lk1hcC5vZl9hbGlzdF9leG4gKExpc3QubWFwIGFsbCB+ZjooZnVuIHAgLT4gbWFnaWNfbnVtYmVyIHAsIHApKVxuXG4oKiBXZSBvbmNlIG1pbnRlZCBhIG5ldyBtYWdpYyBudW1iZXIgZm9yIEtyYiBpbiBvcmRlciB0byBjaGFuZ2UgdGhlIHByb3RvY29sXG4gICBuZWdvdGlhdGlvbi4gIExldCdzIGJlIGNhcmVmdWwgdGhhdCB3ZSBkb24ndCByZXVzZSB0aGUgb2xkIG1hZ2ljIG51bWJlciAqKVxubGV0IHJldGlyZWRfa3JiX3dvcmQgPSBcIktSQlwiXG5cbmxldCV0ZXN0X3VuaXQgXCJ2YWxpZGF0ZSBtYWdpYyB3b3Jkc1wiID1cbiAgbGV0IG1hZ2ljX3dvcmRzID0gcmV0aXJlZF9rcmJfd29yZCA6OiBMaXN0Lm1hcCBhbGwgfmY6bWFnaWNfd29yZCBpblxuICBsZXQgbWFnaWNfbnVtYmVycyA9IExpc3QubWFwIG1hZ2ljX3dvcmRzIH5mOmdlbl9tYWdpY19udW1iZXIgaW5cbiAgKCogTWFnaWMgbnVtYmVycyBtdXN0IGZpdCBpbnRvIE9jYW1sIGludGVnZXJzICgzMSBiaXRzIG9uIDMyIGJpdCBidWlsZHMpLiAqKVxuICBhc3NlcnQgKExpc3QuZm9yX2FsbCBtYWdpY19udW1iZXJzIH5mOihmdW4gbiAtPiBuIDw9IEludC5vZl9mbG9hdCAoKDIuICoqIDMwLikgLS4gMS4pKSk7XG4gICgqIE5vIGR1cGxpY2F0ZSBtYWdpYyBudW1iZXJzICopXG4gIGFzc2VydCAobm90IChMaXN0LmNvbnRhaW5zX2R1cCBtYWdpY19udW1iZXJzIH5jb21wYXJlOkludC5jb21wYXJlKSlcbjs7XG5cbigqIEVuc3VyZSB0ZXN0cyBicmVhayBpZiB0aGUgbWFnaWMgbnVtYmVycyBhcmUgY2hhbmdlZCAqKVxubGV0JXRlc3RfdW5pdCBcIm1hZ2ljIG51bWJlcnNcIiA9XG4gIGFzc2VydCAoZ2VuX21hZ2ljX251bWJlciByZXRpcmVkX2tyYl93b3JkID0gNF8zNDZfNDQzKTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgS3JiID0gODQzXzIwN18yNDMpO1xuICBhc3NlcnQgKG1hZ2ljX251bWJlciBLcmJfdGVzdF9tb2RlID0gNV81MjFfOTk1KTtcbiAgYXNzZXJ0IChtYWdpY19udW1iZXIgUnBjID0gNF80MTFfNDc0KVxuOztcblxubGV0JXRlc3RfdW5pdCBcIm1hZ2ljX251bWJlcl9iaW5fc2l6ZSBpcyBjb3JyZWN0XCIgPVxuICBMaXN0Lml0ZXIgYWxsIH5mOihmdW4gdCAtPlxuICAgIGxldCBtYWdpY19udW1iZXIgPSBtYWdpY19udW1iZXIgdCBpblxuICAgIGxldCBzaXplID0gSW50LmJpbl9zaXplX3QgbWFnaWNfbnVtYmVyIGluXG4gICAgWyV0ZXN0X2VxOiBpbnRdIHNpemUgbWFnaWNfbnVtYmVyX2Jpbl9zaXplKVxuOztcbiIsIm9wZW4hIENvcmVcbmluY2x1ZGUgTGlzdF93aXRoX21heF9sZW5faW50ZlxuXG5tb2R1bGUgTWFrZSAoQ29uZmlnIDogQ29uZmlnKSA9IHN0cnVjdFxuICBpbmNsdWRlIENvbmZpZ1xuXG4gIHR5cGUgJ2EgdCA9ICdhIGxpc3QgW0BAZGVyaXZpbmcgYmluX3NoYXBlLCBiaW5fd3JpdGVdXG5cbiAgbGV0IF9fYmluX3JlYWRfdF9fID0gTGlzdC5fX2Jpbl9yZWFkX3RfX1xuXG4gIGxldCBiaW5fcmVhZF90IGJpbl9yZWFkX2VsIGJ1ZiB+cG9zX3JlZiA9XG4gICAgdHJ5IEJpbl9wcm90LlJlYWQuYmluX3JlYWRfbGlzdF93aXRoX21heF9sZW4gfm1heF9sZW4gYmluX3JlYWRfZWwgYnVmIH5wb3NfcmVmIHdpdGhcbiAgICB8IGV4biAtPiBFeG4ucmVyYWlzZSBleG4gKEluZm8udG9fc3RyaW5nX2h1bSBjb250ZXh0KVxuICA7O1xuXG4gIGxldCBiaW5fcmVhZGVyX3QgKGJpbl9yZWFkZXJfYSA6ICdhIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90IGJpbl9yZWFkZXJfYS5yZWFkXG4gICAgOyB2dGFnX3JlYWQgPSBfX2Jpbl9yZWFkX3RfXyBiaW5fcmVhZGVyX2EucmVhZFxuICAgIH1cbiAgOztcblxuICBsZXQgYmluX3QgKGJpbl9hIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy50KSA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnNoYXBlID0gYmluX3NoYXBlX3QgYmluX2Euc2hhcGVcbiAgICA7IHdyaXRlciA9IGJpbl93cml0ZXJfdCBiaW5fYS53cml0ZXJcbiAgICA7IHJlYWRlciA9IGJpbl9yZWFkZXJfdCBiaW5fYS5yZWFkZXJcbiAgICB9XG4gIDs7XG5cbiAgbGV0IG9mX2xpc3RfZXhuIGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgaWYgbGVuID4gbWF4X2xlblxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwiTGlzdCBpcyB0b28gbGFyZ2VcIiAoY29udGV4dCA6IEluZm8udCkgKGxlbiA6IGludCkgKG1heF9sZW4gOiBpbnQpXTtcbiAgICBsXG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IExpc3Quc2V4cF9vZl90XG5cbiAgbGV0IHRfb2Zfc2V4cCB0X29mX2Egc2V4cCA9XG4gICAgbGV0IHQgPSBMaXN0LnRfb2Zfc2V4cCB0X29mX2Egc2V4cCBpblxuICAgIG9mX2xpc3RfZXhuIHRcbiAgOztcbmVuZFxuIiwib3BlbiEgQ29yZVxubW9kdWxlIEtub3duX3Byb3RvY29sID0gS25vd25fcHJvdG9jb2xcblxubW9kdWxlIEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZSA9XG4gIExpc3Rfd2l0aF9tYXhfbGVuLk1ha2UgKHN0cnVjdFxuICAgIGxldCBtYXhfbGVuID0gMTAwXG4gICAgbGV0IGNvbnRleHQgPSBJbmZvLm9mX3N0cmluZyBcIlByb3RvY29sX3ZlcnNpb25faGVhZGVyXCJcbiAgZW5kKVxuXG50eXBlIHQgPSBpbnQgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLnRcbltAQGRlcml2aW5nIGJpbl9pbywgc2V4cF1cblxubGV0IGNyZWF0ZV9leG4gfnByb3RvY29sIH5zdXBwb3J0ZWRfdmVyc2lvbnMgPVxuICBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXIgcHJvdG9jb2wgOjogc3VwcG9ydGVkX3ZlcnNpb25zXG4gIHw+IEJvdW5kZWRfbGlzdF9pbl9jYXNlX3NvbWVvbmVfc2VuZHNfZ2FyYmFnZV9vbl90aGVfd2lyZS5vZl9saXN0X2V4blxuOztcblxubGV0IGdldF9wcm90b2NvbCAodCA6IHQpID1cbiAgbGV0IHByb3RvY29scywgdmVyc2lvbnMgPVxuICAgIExpc3QucGFydGl0aW9uX21hcFxuICAgICAgKHQgOj4gaW50IGxpc3QpXG4gICAgICB+ZjooZnVuIHYgLT5cbiAgICAgICAgbWF0Y2ggTWFwLmZpbmQgS25vd25fcHJvdG9jb2wuYnlfbWFnaWNfbnVtYmVyIHYgd2l0aFxuICAgICAgICB8IFNvbWUgcCAtPiBGaXJzdCBwXG4gICAgICAgIHwgTm9uZSAtPiBTZWNvbmQgdilcbiAgaW5cbiAgbWF0Y2ggcHJvdG9jb2xzIHdpdGhcbiAgfCBbXSAtPiBPayAoTm9uZSwgSW50LlNldC5vZl9saXN0IHZlcnNpb25zKVxuICB8IFsgcCBdIC0+IE9rIChTb21lIHAsIEludC5TZXQub2ZfbGlzdCB2ZXJzaW9ucylcbiAgfCBfIC0+XG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IG11bHRpcGxlIG1hZ2ljIG51bWJlcnMgc2Vlbi5cIlxuICAgICAgICAgIChwcm90b2NvbHMgOiBLbm93bl9wcm90b2NvbC50IGxpc3QpXG4gICAgICAgICAgKHZlcnNpb25zIDogaW50IGxpc3QpXVxuOztcblxubGV0IG5lZ290aWF0ZSB+YWxsb3dfbGVnYWN5X3BlZXIgfih1cyA6IHQpIH4ocGVlciA6IHQpID1cbiAgbGV0IG9wZW4gT3JfZXJyb3IuTGV0X3N5bnRheCBpblxuICBsZXQlYmluZCB1c19wcm90b2NvbCwgdXNfdmVyc2lvbnMgPSBnZXRfcHJvdG9jb2wgdXMgaW5cbiAgbGV0JWJpbmQgcGVlcl9wcm90b2NvbCwgcGVlcl92ZXJzaW9ucyA9IGdldF9wcm90b2NvbCBwZWVyIGluXG4gIGxldCViaW5kIHVzX3Byb3RvY29sID1cbiAgICBtYXRjaCB1c19wcm90b2NvbCB3aXRoXG4gICAgfCBTb21lIHggLT4gcmV0dXJuIHhcbiAgICB8IE5vbmUgLT4gZXJyb3JfcyBbJW1lc3NhZ2UgXCJObyBtYWdpYyBudW1iZXJzIHNlZW5cIiAodXNfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXVxuICBpblxuICBsZXQlYmluZCBwZWVyX3Byb3RvY29sID1cbiAgICBtYXRjaCBwZWVyX3Byb3RvY29sIHdpdGhcbiAgICB8IFNvbWUgeCAtPiByZXR1cm4geFxuICAgIHwgTm9uZSAtPlxuICAgICAgKCogd2UgYXNzdW1lIHBlZXIgaXMgc3BlYWtpbmcgb3VyIHByb3RvY29sIGlmIFthbGxvd19sZWdhY3lfcGVlcl0gKilcbiAgICAgIGlmIGFsbG93X2xlZ2FjeV9wZWVyXG4gICAgICB0aGVuIHJldHVybiB1c19wcm90b2NvbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBwZWVyX3Byb3RvY29sID0gYFVua25vd24gaW5cbiAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgICAgXCJbUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIubmVnb3RpYXRlXTogY29uZmxpY3RpbmcgbWFnaWMgcHJvdG9jb2wgbnVtYmVyc1wiXG4gICAgICAgICAgICAgICh1c19wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXG4gICAgICAgICAgICAgIChwZWVyX3Byb3RvY29sIDogWyBgVW5rbm93biBdKV0pXG4gIGluXG4gIGlmIG5vdCAoWyVjb21wYXJlLmVxdWFsOiBLbm93bl9wcm90b2NvbC50XSB1c19wcm90b2NvbCBwZWVyX3Byb3RvY29sKVxuICB0aGVuXG4gICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IGNvbmZsaWN0aW5nIG1hZ2ljIHByb3RvY29sIG51bWJlcnNcIlxuICAgICAgICAgICh1c19wcm90b2NvbCA6IEtub3duX3Byb3RvY29sLnQpXG4gICAgICAgICAgKHBlZXJfcHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KV1cbiAgZWxzZSAoXG4gICAgbGV0IHByb3RvY29sID0gdXNfcHJvdG9jb2wgaW5cbiAgICBtYXRjaCBTZXQubWF4X2VsdCAoU2V0LmludGVyIHVzX3ZlcnNpb25zIHBlZXJfdmVyc2lvbnMpIHdpdGhcbiAgICB8IFNvbWUgdmVyc2lvbiAtPiBPayB2ZXJzaW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBPcl9lcnJvci5lcnJvcl9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiW1Byb3RvY29sX3ZlcnNpb25faGVhZGVyLm5lZ290aWF0ZV06IG5vIHNoYXJlZCB2ZXJzaW9uIG51bWJlcnNcIlxuICAgICAgICAgICAgKHVzX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKHBlZXJfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAocHJvdG9jb2wgOiBLbm93bl9wcm90b2NvbC50KV0pXG47O1xuXG5sZXQgbWF0Y2hlc19tYWdpY19wcmVmaXggKHQgOiB0KSB+cHJvdG9jb2wgPVxuICBsZXQgbWFnaWNfbnVtYmVyID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyIHByb3RvY29sIGluXG4gIExpc3QubWVtIH5lcXVhbDpJbnQuZXF1YWwgKHQgOj4gaW50IGxpc3QpIG1hZ2ljX251bWJlclxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgPVxuICBCaW5fcHJvdC5UeXBlX2NsYXNzLmNudl9yZWFkZXIgKG1hdGNoZXNfbWFnaWNfcHJlZml4IH5wcm90b2NvbCkgYmluX3QucmVhZGVyXG47O1xuXG5sZXQgYW55X21hZ2ljX3ByZWZpeCA9XG4gIGxldCBmIHQgPVxuICAgIExpc3QuZmluZCBLbm93bl9wcm90b2NvbC5hbGwgfmY6KGZ1biBwcm90b2NvbCAtPiBtYXRjaGVzX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2wgdClcbiAgaW5cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyIGYgYmluX3QucmVhZGVyXG47O1xuXG5tb2R1bGUgTWFnaWNfcHJlZml4X2Jpbl9yZXByID0gc3RydWN0XG4gIHR5cGUgdCA9IGludCBbQEBkZXJpdmluZyBiaW5fc2hhcGUsIGJpbl93cml0ZV1cblxuICAoKiBUaGUgYmluIHByb3QgcmVwcmVzZW50YXRpb24gb2YgYSBwcm90b2NvbCB2ZXJzaW9uIGhlYWRlciBpcyB0aGUgc3RhbmRhcmRcbiAgICAgcmVwcmVzZW50YXRpb24gZm9yIGFuIGludCBsaXN0OlxuXG4gICAgIHwgbmF0MCBpbmRpY2F0aW5nIHNpemUgfCBlbGVtZW50IDAgfCBlbGVtZW50IDEgfCAuLi5cblxuICAgICBbY3JlYXRlX2V4bl0gd2lsbCBhbHdheXMgcHV0IHRoZSBrbm93biBwcm90b2NvbCBtYWdpYyBudW1iZXIgYXMgXCJlbGVtZW50IDBcIi5cblxuICAgICBUaGUgYmluIHNpemUgb2YgXCJuYXQwIGluZGljYXRpbmcgc2l6ZVwiIGFuZCBcImVsZW1lbnQgMFwiIGlzIGZpeGVkICh0aGVyZSBhcmUgZXhwZWN0XG4gICAgIHRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBuZXZlciBjaGFuZ2UgdGhlbSkuICopXG4gIGxldCBiaW5fc2l6ZSA9XG4gICAgYmluX3NpemVfdCBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICsgS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyX2Jpbl9zaXplXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkX3QgYnVmIH5wb3NfcmVmID1cbiAgICBsZXQgKF9saXN0X2xlbmd0aCA6IEJpbl9wcm90Lk5hdDAudCkgPSBCaW5fcHJvdC5SZWFkLmJpbl9yZWFkX25hdDAgYnVmIH5wb3NfcmVmIGluXG4gICAgQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9pbnQgYnVmIH5wb3NfcmVmXG4gIDs7XG5cbiAgbGV0IGJpbl9yZWFkZXJfdCA9XG4gICAgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWQgPSBiaW5fcmVhZF90OyB2dGFnX3JlYWQgPSBJbnQuX19iaW5fcmVhZF90X18gfVxuICA7O1xuZW5kXG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzID1cbiAgQmluX3Byb3QuVHlwZV9jbGFzcy5jbnZfcmVhZGVyXG4gICAgKGZ1biBtYWdpY19udW1iZXIgLT4gKE1hcC5maW5kIEtub3duX3Byb3RvY29sLmJ5X21hZ2ljX251bWJlcikgbWFnaWNfbnVtYmVyKVxuICAgIE1hZ2ljX3ByZWZpeF9iaW5fcmVwci5iaW5fcmVhZGVyX3Rcbjs7XG5cbmxldCBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplID0gTWFnaWNfcHJlZml4X2Jpbl9yZXByLmJpbl9zaXplXG5cbm1vZHVsZSBGb3JfdGVzdCA9IHN0cnVjdFxuICBtb2R1bGUgTWFrZV9saXN0X3dpdGhfbWF4X2xlbiA9IExpc3Rfd2l0aF9tYXhfbGVuLk1ha2VcbmVuZFxuXG5sZXQldGVzdF91bml0IFwiYmluIHNpemVzIGFyZSBub3QgY2hhbmdlZCBieSBhY2NpZGVudFwiID1cbiAgKCogRW5zdXJlIHRoZSBiaW5fc2l6ZSBvZiBCb3VuZGVkX2xpc3RfaW5fY2FzZV9zb21lb25lX3NlbmRzX2dhcmJhZ2Vfb25fdGhlX3dpcmUubWF4X2xlblxuICAgICBpcyBhbHdheXMgMS4gVGhpcyBtZWFucyB0aGF0IHJlZ2FyZGxlc3Mgb2YgaG93IGxvbmcgdGhlIGxpc3Qgb2YgdmVyc2lvbnMgaW4gdGhlXG4gICAgIHByb3RvY29sIGhlYWRlciBpcywgdGhlIHJlcHJlc2VudGF0aW9uIHdpbGwgYmUgdGhlIHNhbWUgbnVtYmVyIG9mIGJ5dGVzLiBUaGVcbiAgICAgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50IGp1bXBzIHRvIDMgYnl0ZXMgYXQgdGhlIHZhbHVlIDEyOC4gKilcbiAgbGV0IGJvdW5kZWRfbGlzdF9iaW5fc2l6ZSA9XG4gICAgSW50LmJpbl9zaXplX3QgQm91bmRlZF9saXN0X2luX2Nhc2Vfc29tZW9uZV9zZW5kc19nYXJiYWdlX29uX3RoZV93aXJlLm1heF9sZW5cbiAgaW5cbiAgYXNzZXJ0IChib3VuZGVkX2xpc3RfYmluX3NpemUgPSAxKTtcbiAgYXNzZXJ0ICg2ID0gS25vd25fcHJvdG9jb2wubWFnaWNfbnVtYmVyX2Jpbl9zaXplICsgYm91bmRlZF9saXN0X2Jpbl9zaXplKTtcbiAgYXNzZXJ0IChcbiAgICBhbnlfbWFnaWNfcHJlZml4X2Zyb21fc2l4X2J5dGVzX2Jpbl9zaXplXG4gICAgPSBLbm93bl9wcm90b2NvbC5tYWdpY19udW1iZXJfYmluX3NpemUgKyBib3VuZGVkX2xpc3RfYmluX3NpemUpXG47O1xuIiwidHlwZSB0ID0gQmluX3Byb3QuTmF0MC50XG5bQEBkZXJpdmluZyBiaW5fc2hhcGUgfmJhc2V0eXBlOlwiODk5ZTJmNGEtNDkwYS0xMWU2LWI2OGYtYmJkNjI0NzI1MTZjXCJdXG5cbmxldCBiaW5fdCA9IEJpbl9wcm90LlR5cGVfY2xhc3MuYmluX25hdDBcbmxldCBiaW5fc2l6ZV90ID0gQmluX3Byb3QuU2l6ZS5iaW5fc2l6ZV9uYXQwXG5sZXQgYmluX3dyaXRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fd3JpdGVyX25hdDBcbmxldCBiaW5fd3JpdGVfdCA9IEJpbl9wcm90LldyaXRlLmJpbl93cml0ZV9uYXQwXG5sZXQgYmluX3JlYWRlcl90ID0gQmluX3Byb3QuVHlwZV9jbGFzcy5iaW5fcmVhZGVyX25hdDBcbmxldCBiaW5fcmVhZF90ID0gQmluX3Byb3QuUmVhZC5iaW5fcmVhZF9uYXQwXG5cbmxldCBfX2Jpbl9yZWFkX3RfXyBfYnVmIH5wb3NfcmVmIF92bmF0MCA9XG4gIEJpbl9wcm90LkNvbW1vbi5yYWlzZV92YXJpYW50X3dyb25nX3R5cGUgXCJ0XCIgIXBvc19yZWZcbjs7XG5cbmxldCBvZl9pbnRfZXhuID0gQmluX3Byb3QuTmF0MC5vZl9pbnRcbiIsIm9wZW4gQ29yZVxub3BlbiBQb2x5XG5cbmxldCBvZl93cml0ZXIgeyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlOyBzaXplIH0gPVxuICBsZXQgd3JpdGUgYnVmIH5wb3MgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIGxldCBwb3MgPSBOYXQwLmJpbl93cml0ZV90IGJ1ZiB+cG9zIGxlbiBpblxuICAgIHdyaXRlIGJ1ZiB+cG9zIGFcbiAgaW5cbiAgbGV0IHNpemUgYSA9XG4gICAgbGV0IGxlbiA9IE5hdDAub2ZfaW50X2V4biAoc2l6ZSBhKSBpblxuICAgIE5hdDAuYmluX3NpemVfdCBsZW4gKyAoKGxlbiA6IEJpbl9wcm90Lk5hdDAudCkgOj4gaW50KVxuICBpblxuICB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfVxuOztcblxubGV0IG9mX3R5cGVfY2xhc3MgKGJpbl9hIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnQpID0gb2Zfd3JpdGVyIGJpbl9hLndyaXRlclxuXG5sZXQldGVzdF9tb2R1bGUgXyA9XG4gIChtb2R1bGUgc3RydWN0XG4gICAgbGV0IGJpZ3N0cmluZ19iaW5fcHJvdCBzID1cbiAgICAgIGxldCBiaWdzdHJpbmcgPSBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCBCeXRlcy5iaW5fd3JpdGVyX3QgcyBpblxuICAgICAgQmluX3Byb3QuVXRpbHMuYmluX2R1bXAgQmlnc3RyaW5nLlN0YWJsZS5WMS5iaW5fd3JpdGVyX3QgYmlnc3RyaW5nXG4gICAgOztcblxuICAgIGxldCBiaW5fcHJvdF93aXRoX2xlbmd0aCBzID1cbiAgICAgIGxldCB3cml0ZXJfd2l0aF9sZW5ndGggPSBvZl93cml0ZXIgQnl0ZXMuYmluX3dyaXRlcl90IGluXG4gICAgICBCaW5fcHJvdC5VdGlscy5iaW5fZHVtcCB3cml0ZXJfd2l0aF9sZW5ndGggc1xuICAgIDs7XG5cbiAgICBsZXQgdGVzdCBsZW4gPVxuICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgICBsZXQgYmlnc3RyaW5nX3ZlcnNpb24gPSBiaWdzdHJpbmdfYmluX3Byb3QgcyBpblxuICAgICAgbGV0IHdpdGhfbGVuZ3RoX3ZlcnNpb24gPSBiaW5fcHJvdF93aXRoX2xlbmd0aCBzIGluXG4gICAgICBpZiBCaWdzdHJpbmcudG9fc3RyaW5nIGJpZ3N0cmluZ192ZXJzaW9uIDw+IEJpZ3N0cmluZy50b19zdHJpbmcgd2l0aF9sZW5ndGhfdmVyc2lvblxuICAgICAgdGhlbiBmYWlsd2l0aGYgXCJtaXNtYXRjaCBmb3IgbGVuZ3RoICVkXCIgbGVuICgpXG4gICAgOztcblxuICAgIGxldCV0ZXN0X3VuaXQgXyA9XG4gICAgICBmb3IgbGVuID0gMCB0byBJbnQucG93IDIgMTAgZG9cbiAgICAgICAgdGVzdCBsZW5cbiAgICAgIGRvbmU7XG4gICAgICBmb3IgcG93ID0gMTAgdG8gMjAgZG9cbiAgICAgICAgbGV0IHggPSBJbnQucG93IDIgcG93IGluXG4gICAgICAgIHRlc3QgKHggLSAxKTtcbiAgICAgICAgdGVzdCB4O1xuICAgICAgICB0ZXN0ICh4ICsgMSlcbiAgICAgIGRvbmVcbiAgICA7O1xuICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIFYxID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgOyB2ZXJzaW9uIDogaW50XG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBoYXNoLCBzZXhwXVxuICBlbmRcbmVuZFxuXG5pbmNsdWRlIFN0YWJsZS5WMVxuaW5jbHVkZSBDb21wYXJhYmxlLk1ha2UgKFN0YWJsZS5WMSlcbmluY2x1ZGUgSGFzaGFibGUuTWFrZSAoU3RhYmxlLlYxKVxuXG5sZXQgc3VtbWFyaXplIHRzID1cbiAgTGlzdC5tYXAgdHMgfmY6KGZ1biB7IG5hbWU7IHZlcnNpb24gfSAtPiBuYW1lLCB2ZXJzaW9uKVxuICB8PiBTdHJpbmcuTWFwLm9mX2FsaXN0X2ZvbGQgfmluaXQ6SW50LlNldC5lbXB0eSB+ZjpJbnQuU2V0LmFkZFxuOztcblxubGV0JWV4cGVjdF90ZXN0IF8gPVxuICBsZXQgZGVzY3JpcHRpb25zID1cbiAgICBbIHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAxIH1cbiAgICA7IHsgbmFtZSA9IFwiZm9vXCI7IHZlcnNpb24gPSAyIH1cbiAgICA7IHsgbmFtZSA9IFwiYmFyXCI7IHZlcnNpb24gPSA1IH1cbiAgICBdXG4gIGluXG4gIGxldCBzdW1tYXJ5ID0gc3VtbWFyaXplIGRlc2NyaXB0aW9ucyBpblxuICBwcmludF9zIFslc2V4cCAoc3VtbWFyeSA6IEludC5TZXQudCBTdHJpbmcuTWFwLnQpXTtcbiAgWyVleHBlY3Qge3wgKChiYXIgKDUpKSAoZm9vICgxIDIpKSkgfH1dXG47O1xuIiwiKCoqIEFzeW5jX3JwYyBwcm90b2NvbCB0eXBlcywgZm9yIGludGVybmFsIHVzZSBvbmx5ICopXG5cbigqIFdBUk5JTkc6IGRvIG5vdCBjaGFuZ2UgYW55IG9mIHRoZXNlIHR5cGVzIHdpdGhvdXQgZ29vZCByZWFzb24gKilcblxub3BlbiBCaW5fcHJvdC5TdGRcbm9wZW4gU2V4cGxpYi5TdGRcbm1vZHVsZSBScGNfdGFnIDogQ29yZS5JZGVudGlmaWFibGUgPSBDb3JlLlN0cmluZ1xubW9kdWxlIFF1ZXJ5X2lkID0gQ29yZS5VbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIFVudXNlZF9xdWVyeV9pZCA6IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHZhbCB0IDogdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9IFF1ZXJ5X2lkLnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIGxldCB0ID0gUXVlcnlfaWQuY3JlYXRlICgpXG5lbmRcblxubW9kdWxlIFJwY19lcnJvciA6IHNpZ1xuICBvcGVuIENvcmVcblxuICB0eXBlIHQgPVxuICAgIHwgQmluX2lvX2V4biBvZiBTZXhwLnRcbiAgICB8IENvbm5lY3Rpb25fY2xvc2VkXG4gICAgfCBXcml0ZV9lcnJvciBvZiBTZXhwLnRcbiAgICB8IFVuY2F1Z2h0X2V4biBvZiBTZXhwLnRcbiAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIG9mIFJwY190YWcudCAqIFsgYFZlcnNpb24gb2YgaW50IF1cbiAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHAsIGNvbXBhcmVdXG5cbiAgaW5jbHVkZSBDb21wYXJhYmxlLlMgd2l0aCB0eXBlIHQgOj0gdFxuZW5kID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQmluX2lvX2V4biBvZiBDb3JlLlNleHAudFxuICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgfCBXcml0ZV9lcnJvciBvZiBDb3JlLlNleHAudFxuICAgICAgfCBVbmNhdWdodF9leG4gb2YgQ29yZS5TZXhwLnRcbiAgICAgIHwgVW5pbXBsZW1lbnRlZF9ycGMgb2YgUnBjX3RhZy50ICogWyBgVmVyc2lvbiBvZiBDb3JlLkludC5TdGFibGUuVjEudCBdXG4gICAgICB8IFVua25vd25fcXVlcnlfaWQgb2YgUXVlcnlfaWQudFxuICAgIFtAQGRlcml2aW5nIGJpbl9pbywgc2V4cCwgY29tcGFyZV1cblxuICAgIGxldCVleHBlY3RfdGVzdCBcInN0YWJsZVwiID1cbiAgICAgIHByaW50X2VuZGxpbmUgWyViaW5fZGlnZXN0OiB0XTtcbiAgICAgIFslZXhwZWN0IHt8IDhjYzc2NmJlZmEyY2Y1NjVlYTE0N2Q5ZmNkNWVhYWFiIHx9XVxuICAgIDs7XG4gIGVuZFxuXG4gIGluY2x1ZGUgVFxuICBpbmNsdWRlIENvcmUuQ29tcGFyYWJsZS5NYWtlIChUKVxuZW5kXG5cbm1vZHVsZSBScGNfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIENvcmUuUmVzdWx0LnQgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSBIZWFkZXIgPSBQcm90b2NvbF92ZXJzaW9uX2hlYWRlclxuXG5tb2R1bGUgUXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgdGFnIDogUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBpZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IGRhdGEgOiAnYVxuICAgIH1cbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBzZXhwX29mXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbmVuZFxuXG5tb2R1bGUgUmVzcG9uc2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHsgaWQgOiBRdWVyeV9pZC50XG4gICAgOyBkYXRhIDogJ2EgUnBjX3Jlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1fcXVlcnkgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIFsgYFF1ZXJ5IG9mICdhXG4gICAgfCBgQWJvcnRcbiAgICBdXG4gIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICB0eXBlICdhIHQgPSAnYSBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWRdXG4gIHR5cGUgbmF0MF90ID0gTmF0MC50IG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZCwgYmluX3dyaXRlXVxuZW5kXG5cbm1vZHVsZSBTdHJlYW1faW5pdGlhbF9tZXNzYWdlID0gc3RydWN0XG4gIHR5cGUgKCdyZXNwb25zZSwgJ2Vycm9yKSB0ID1cbiAgICB7IHVudXNlZF9xdWVyeV9pZCA6IFVudXNlZF9xdWVyeV9pZC50XG4gICAgOyBpbml0aWFsIDogKCdyZXNwb25zZSwgJ2Vycm9yKSBDb3JlLlJlc3VsdC50XG4gICAgfVxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIFN0cmVhbV9yZXNwb25zZV9kYXRhID0gc3RydWN0XG4gIHR5cGUgJ2EgbmVlZHNfbGVuZ3RoID1cbiAgICBbIGBPayBvZiAnYVxuICAgIHwgYEVvZlxuICAgIF1cbiAgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gIHR5cGUgJ2EgdCA9ICdhIG5lZWRzX2xlbmd0aCBbQEBkZXJpdmluZyBiaW5fcmVhZF1cbiAgdHlwZSBuYXQwX3QgPSBOYXQwLnQgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBiaW5fd3JpdGVdXG5lbmRcblxubW9kdWxlIE1lc3NhZ2UgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBuZWVkc19sZW5ndGggPVxuICAgIHwgSGVhcnRiZWF0XG4gICAgfCBRdWVyeSBvZiAnYSBRdWVyeS5uZWVkc19sZW5ndGhcbiAgICB8IFJlc3BvbnNlIG9mICdhIFJlc3BvbnNlLm5lZWRzX2xlbmd0aFxuICBbQEBkZXJpdmluZyBiaW5faW8sIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID0gJ2EgbmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl9yZWFkLCBzZXhwX29mXVxuICB0eXBlIG5hdDBfdCA9IE5hdDAudCBuZWVkc19sZW5ndGggW0BAZGVyaXZpbmcgYmluX3JlYWQsIGJpbl93cml0ZV1cbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG50eXBlICdhIG1lc3NhZ2VfaGFuZGxlciA9IEJpZ3N0cmluZy50IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYVxuXG5tb2R1bGUgSGFuZGxlcl9yZXN1bHQgPSBzdHJ1Y3RcbiAgKCoqIFJlc3VsdCBvZiBhbiBbb25fbWVzc2FnZV0gY2FsbGJhY2suICBXZSBzcGxpdCB0aGUgW0NvbnRpbnVlXSBhbmQgW1dhaXQgX10gY2FzZXMgdG9cbiAgICAgIG1ha2UgaXQgY2xlYXIgdGhhdCBbQ29udGludWVdIGlzIHRoZSBleHBlY3RlZCBjYXNlLiAgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZVxuICAgICAgb3B0aW1pemVkIGZvciB0aGlzIGNhc2UuICopXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdG9wIG9mICdhXG4gICAgfCBDb250aW51ZVxuICAgIHwgV2FpdCBvZiB1bml0IERlZmVycmVkLnRcbmVuZFxuXG5cbm1vZHVsZSB0eXBlIFJlYWRlciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY2xvc2UgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgaXNfY2xvc2VkIDogdCAtPiBib29sXG5cbiAgKCoqIFN0YXJ0IHJlYWRpbmcgaW5jb21pbmcgbWVzc2FnZXMgYW5kIHBhc3MgdGhlbSB0byBbb25fbWVzc2FnZV0sIHVudGlsIGl0IHJldHVybnNcbiAgICAgIFtTdG9wIF9dLlxuXG4gICAgICBbb25fZW5kX29mX2JhdGNoXSBpcyBjYWxsZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhIGJhdGNoIG9mIG1lc3NhZ2VzLCBiZWZvcmUgd2FpdGluZyBmb3JcbiAgICAgIHRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gYmVjb21lIHJlYWRhYmxlIGFnYWluLiAqKVxuICB2YWwgcmVhZF9mb3JldmVyXG4gICAgOiAgdFxuICAgIC0+IG9uX21lc3NhZ2U6KEJpZ3N0cmluZy50IC0+IHBvczppbnQgLT4gbGVuOmludCAtPiAnYSBIYW5kbGVyX3Jlc3VsdC50KVxuICAgIC0+IG9uX2VuZF9vZl9iYXRjaDoodW5pdCAtPiB1bml0KVxuICAgIC0+ICgnYSwgWyBgRW9mIHwgYENsb3NlZCBdKSBSZXN1bHQudCBEZWZlcnJlZC50XG5lbmRcblxubW9kdWxlIFNlbmRfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgbWVzc2FnZV90b29fYmlnID1cbiAgICB7IHNpemUgOiBpbnRcbiAgICA7IG1heF9tZXNzYWdlX3NpemUgOiBpbnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB8IFNlbnQgb2YgJ2FcbiAgICB8IENsb3NlZFxuICAgIHwgTWVzc2FnZV90b29fYmlnIG9mIG1lc3NhZ2VfdG9vX2JpZ1xuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbm1vZHVsZSB0eXBlIFdyaXRlciA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgY2xvc2UgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuICB2YWwgaXNfY2xvc2VkIDogdCAtPiBib29sXG4gIHZhbCBtb25pdG9yIDogdCAtPiBNb25pdG9yLnRcbiAgdmFsIGJ5dGVzX3RvX3dyaXRlIDogdCAtPiBpbnRcblxuICAoKiogQmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHNlbmQgbWVzc2FnZSB1c2luZyB0aGlzIHdyaXRlcixcbiAgICAgIGZvciBpbnN0YW5jZSB3aGVuIHRoZSB3cml0ZXIgaXMgY2xvc2VkIG9yIHRoZSBjb25zdW1lciBsZWF2ZXMuXG5cbiAgICAgIFRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyBjYWNoZWQgYnkgW1JwYy5UcmFuc3BvcnRdICopXG4gIHZhbCBzdG9wcGVkIDogdCAtPiB1bml0IERlZmVycmVkLnRcblxuICAoKiogW2ZsdXNoZWQgdF0gcmV0dXJucyBhIGRlZmVycmVkIHRoYXQgbXVzdCBiZWNvbWUgZGV0ZXJtaW5lZCB3aGVuIGFsbCBwcmlvciBzZW50XG4gICAgICBtZXNzYWdlcyBhcmUgZGVsaXZlcmVkLlxuXG4gICAgICBJdCBtdXN0IGJlIE9LIHRvIGNhbGwgW2ZsdXNoZWQgdF0gYWZ0ZXIgW3RdIGhhcyBiZWVuIGNsb3NlZC4gKilcbiAgdmFsIGZsdXNoZWQgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBbcmVhZHlfdG9fd3JpdGUgdF0gYmVjb21lcyBkZXRlcm1pbmVkIHdoZW4gaXQgaXMgYSBnb29kIHRpbWUgdG8gc2VuZCBtZXNzYWdlc1xuICAgICAgYWdhaW4uIEFzeW5jIFJQQyBjYWxscyB0aGlzIGZ1bmN0aW9uIGFmdGVyIHNlbmRpbmcgYSBiYXRjaCBvZiBtZXNzYWdlcywgdG8gYXZvaWRcbiAgICAgIGZsb29kaW5nIHRoZSB0cmFuc3BvcnQuXG5cbiAgICAgIFVzaW5nIFtsZXQgcmVhZHlfdG9fd3JpdGUgPSBmbHVzaGVkXSBpcyBhbiBhY2NlcHRhYmxlIGltcGxlbWVudGF0aW9uLiAqKVxuICB2YWwgcmVhZHlfdG9fd3JpdGUgOiB0IC0+IHVuaXQgRGVmZXJyZWQudFxuXG4gICgqKiBBbGwgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgc2VuZCBleGFjdGx5IG9uZSBtZXNzYWdlLiAqKVxuXG4gIHZhbCBzZW5kX2Jpbl9wcm90IDogdCAtPiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciAtPiAnYSAtPiB1bml0IFNlbmRfcmVzdWx0LnRcblxuICB2YWwgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgOiAgdFxuICAgIC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gJ2FcbiAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAtPiBwb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXQgU2VuZF9yZXN1bHQudFxuXG4gICgqKiBTYW1lIGFzIFtzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmddIGJ1dCB0aGUgYmlnc3RyaW5nIGNhbid0IGJlIG1vZGlmaWVkIHVudGlsIHRoZVxuICAgICAgcmV0dXJuZWQgZGVmZXJyZWQgYmVjb21lcyBkZXRlcm1pbmVkLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBhdm9pZCBjb3B5aW5nIHRoZVxuICAgICAgYmlnc3RyaW5nLiAqKVxuICB2YWwgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgOiAgdFxuICAgIC0+ICdhIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgLT4gJ2FcbiAgICAtPiBidWY6Qmlnc3RyaW5nLnRcbiAgICAtPiBwb3M6aW50XG4gICAgLT4gbGVuOmludFxuICAgIC0+IHVuaXQgRGVmZXJyZWQudCBTZW5kX3Jlc3VsdC50XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcblxubW9kdWxlIEhlYWRlciA9IHN0cnVjdFxuICBsZXQgbGVuZ3RoID0gOFxuICBsZXQgdW5zYWZlX2dldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvcyA9IEJpZ3N0cmluZy51bnNhZmVfZ2V0X2ludDY0X2xlX2V4biBidWYgfnBvc1xuXG4gIGxldCB1bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zIHBheWxvYWRfbGVuID1cbiAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQ2NF9sZSBidWYgfnBvcyBwYXlsb2FkX2xlblxuICA7O1xuZW5kXG5cbm1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLkhhbmRsZXJfcmVzdWx0XG5cbm1vZHVsZSBSZWFkZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLlJlYWRlclxuXG4gIHR5cGUgdCA9IFQgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSkgKiAnYSAtPiB0XG5cbiAgbGV0IHBhY2sgbSB0ID0gVCAobSwgdClcblxuICAoKiBXZSBwdXQgdHlwZSBhbm5vdGF0aW9ucyB0byBiZSBzdXJlIHRoZSB0eXBlIGlzIG5vdCBhIGZ1bmN0aW9uIHR5cGUsIGkuZS4gdG8gYXZvaWRcbiAgICAgY3JlYXRpbmcgY2xvc3VyZXMgKilcbiAgbGV0IHNleHBfb2ZfdCAoVCAoKG1vZHVsZSBNKSwgdCkpIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgKChtb2R1bGUgTSksIHQpKSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUICgobW9kdWxlIE0pLCB0KSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuXG4gIGxldCByZWFkX2ZvcmV2ZXIgKFQgKChtb2R1bGUgTSksIHQpKSB+b25fbWVzc2FnZSB+b25fZW5kX29mX2JhdGNoIDogXyBEZWZlcnJlZC50ID1cbiAgICBNLnJlYWRfZm9yZXZlciB0IH5vbl9tZXNzYWdlIH5vbl9lbmRfb2ZfYmF0Y2hcbiAgOztcblxuICBsZXQgcmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0IChiaW5fcmVhZGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlcikgPVxuICAgIHJlYWRfZm9yZXZlclxuICAgICAgdFxuICAgICAgfm9uX21lc3NhZ2U6KGZ1biBidWYgfnBvcyB+bGVuIC0+XG4gICAgICAgIGxldCBwb3NfcmVmID0gcmVmIHBvcyBpblxuICAgICAgICBsZXQgeCA9IGJpbl9yZWFkZXIucmVhZCBidWYgfnBvc19yZWYgaW5cbiAgICAgICAgaWYgIXBvc19yZWYgPD4gcG9zICsgbGVuXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aGZcbiAgICAgICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgICAgICghcG9zX3JlZiAtIHBvcylcbiAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgKClcbiAgICAgICAgZWxzZSBTdG9wIHgpXG4gICAgICB+b25fZW5kX29mX2JhdGNoOmlnbm9yZVxuICA7O1xuZW5kXG5cbm1vZHVsZSBTZW5kX3Jlc3VsdCA9IFRyYW5zcG9ydF9pbnRmLlNlbmRfcmVzdWx0XG5cbm1vZHVsZSBXcml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgUyA9IFRyYW5zcG9ydF9pbnRmLldyaXRlclxuXG4gIHR5cGUgJ2Egd3JpdGVyID1cbiAgICB7IGltcGwgOiAobW9kdWxlIFMgd2l0aCB0eXBlIHQgPSAnYSlcbiAgICA7IHQgOiAnYVxuICAgICgqIFdlIGNhY2hlIHRoZSByZXN1bHQgb2YgW3N0b3BwZWRdIGJlY2F1c2UgaXQgaXMgb2Z0ZW4gdGhlIFtEZWZlcnJlZC5hbnldIG9mIHNldmVyYWxcbiAgICAgICBvdGhlciBkZWZlcnJlZHMgYW5kIHdlIHdhbnQgW2Nhbl9zZW5kXSB0byBiZSBzaW1wbGUuICopXG4gICAgOyBzdG9wcGVkIDogdW5pdCBEZWZlcnJlZC50XG4gICAgfVxuXG4gIHR5cGUgdCA9IFQgOiAnYSB3cml0ZXIgLT4gdFxuXG4gIGxldCBwYWNrICh0eXBlIGEpIChtb2R1bGUgTSA6IFMgd2l0aCB0eXBlIHQgPSBhKSB0ID1cbiAgICBUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgPSBNLnN0b3BwZWQgdCB9XG4gIDs7XG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogU2V4cC50ID0gTS5zZXhwX29mX3QgdFxuICBsZXQgY2xvc2UgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uY2xvc2UgdFxuICBsZXQgaXNfY2xvc2VkIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBib29sID0gTS5pc19jbG9zZWQgdFxuICBsZXQgbW9uaXRvciAoVCB7IGltcGwgPSAobW9kdWxlIE0pOyB0OyBfIH0pIDogTW9uaXRvci50ID0gTS5tb25pdG9yIHRcbiAgbGV0IGJ5dGVzX3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiBpbnQgPSBNLmJ5dGVzX3RvX3dyaXRlIHRcbiAgbGV0IGZsdXNoZWQgKFQgeyBpbXBsID0gKG1vZHVsZSBNKTsgdDsgXyB9KSA6IHVuaXQgRGVmZXJyZWQudCA9IE0uZmx1c2hlZCB0XG5cbiAgbGV0IHJlYWR5X3RvX3dyaXRlIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgOiB1bml0IERlZmVycmVkLnQgPVxuICAgIE0ucmVhZHlfdG9fd3JpdGUgdFxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90IChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSkgYmluX3dyaXRlciB4IDogXyBTZW5kX3Jlc3VsdC50ID1cbiAgICBNLnNlbmRfYmluX3Byb3QgdCBiaW5fd3JpdGVyIHhcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nXG4gICAgICAgIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IF8gfSlcbiAgICAgICAgYmluX3dyaXRlclxuICAgICAgICB4XG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgOiBfIFNlbmRfcmVzdWx0LnRcbiAgICA9XG4gICAgTS5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmcgdCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW5cbiAgOztcblxuICBsZXQgc3RvcHBlZCAoVCB7IHN0b3BwZWQ7IF8gfSkgPSBzdG9wcGVkXG5cbiAgbGV0IGNhbl9zZW5kIChUIHsgaW1wbCA9IChtb2R1bGUgTSk7IHQ7IHN0b3BwZWQgfSkgPVxuICAgIG5vdCAoTS5pc19jbG9zZWQgdCB8fCBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIHN0b3BwZWQpXG4gIDs7XG5cbiAgbGV0IHRyYW5zZmVyIHQgPyhtYXhfbnVtX3ZhbHVlc19wZXJfcmVhZCA9IDFfMDAwKSBwaXBlIGYgPVxuICAgIGxldCBjb25zdW1lciA9XG4gICAgICBQaXBlLmFkZF9jb25zdW1lciBwaXBlIH5kb3duc3RyZWFtX2ZsdXNoZWQ6KGZ1biAoKSAtPlxuICAgICAgICBsZXQlbWFwICgpID0gZmx1c2hlZCB0IGluXG4gICAgICAgIGBPaylcbiAgICBpblxuICAgIGxldCBlbmRfb2ZfcGlwZSA9XG4gICAgICBEZWZlcnJlZC5jcmVhdGUgKGZ1biBpdmFyIC0+XG4gICAgICAgIGxldCByZWMgaXRlciAoKSA9XG4gICAgICAgICAgaWYgY2FuX3NlbmQgdFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgUGlwZS5yZWFkX25vdycgcGlwZSB+Y29uc3VtZXIgfm1heF9xdWV1ZV9sZW5ndGg6bWF4X251bV92YWx1ZXNfcGVyX3JlYWRcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgYE9rIHEgLT5cbiAgICAgICAgICAgICAgUXVldWUuaXRlciBxIH5mO1xuICAgICAgICAgICAgICBQaXBlLkNvbnN1bWVyLnZhbHVlc19zZW50X2Rvd25zdHJlYW0gY29uc3VtZXI7XG4gICAgICAgICAgICAgIHJlYWR5X3RvX3dyaXRlIHQgPj4+IGl0ZXJcbiAgICAgICAgICAgIHwgYE5vdGhpbmdfYXZhaWxhYmxlIC0+XG4gICAgICAgICAgICAgIFBpcGUudmFsdWVzX2F2YWlsYWJsZSBwaXBlID4+PiBmdW4gKGBPayB8IGBFb2YpIC0+IGl0ZXIgKClcbiAgICAgICAgICAgIHwgYEVvZiAtPiBJdmFyLmZpbGwgaXZhciAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgaXRlciAoKSlcbiAgICBpblxuICAgIGxldCVtYXAgKCkgPSBEZWZlcnJlZC5hbnkgWyBlbmRfb2ZfcGlwZTsgc3RvcHBlZCB0IF0gaW5cbiAgICBQaXBlLmNsb3NlX3JlYWQgcGlwZVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9XG4gIHsgcmVhZGVyIDogUmVhZGVyLnRcbiAgOyB3cml0ZXIgOiBXcml0ZXIudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY2xvc2UgdCA9XG4gIGxldCViaW5kICgpID0gV3JpdGVyLmNsb3NlIHQud3JpdGVyIGluXG4gIFJlYWRlci5jbG9zZSB0LnJlYWRlclxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUHJvdG9jb2xcblxuKCoqIFRoZSB0eXBlcyBvZiB0aGUgW0ltcGxlbWVudGF0aW9uXSBhbmQgW0ltcGxlbWVudGF0aW9uc10gbW9kdWxlcywgd2hpY2ggaGF2ZVxuICAgIGEgZGVwZW5kZW5jeSBjeWxlOiBbSW1wbGVtZW50YXRpb25dIC0+IFtEaXJlY3Rfc3RyZWFtX3dyaXRlcl0gLT5cbiAgICBbSW1wbGVtZW50YXRpb25zXSAtPiBbSW1wbGVtZW50YXRpb25dLiAqKVxuXG5tb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXJfaWQgPSBVbmlxdWVfaWQuSW50NjMgKClcblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgY2FsbGJhY2sgOiAoZXhuIC0+IHVuaXQpIG9wdGlvbiBbQHNleHAub21pdF9uaWxdXG4gICAgOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA6IGJvb2xcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHJlYyBJbXBsZW1lbnRhdGlvbiA6IHNpZ1xuICBtb2R1bGUgRXhwZXJ0IDogc2lnXG4gICAgbW9kdWxlIFJlc3BvbmRlciA6IHNpZ1xuICAgICAgdHlwZSB0ID1cbiAgICAgICAgeyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgICAgOyBtdXRhYmxlIHJlc3BvbmRlZCA6IGJvb2xcbiAgICAgICAgfVxuICAgIGVuZFxuXG4gICAgdHlwZSBpbXBsZW1lbnRhdGlvbl9yZXN1bHQgPVxuICAgICAgfCBSZXBsaWVkXG4gICAgICB8IERlbGF5ZWRfcmVzcG9uc2Ugb2YgdW5pdCBEZWZlcnJlZC50XG4gIGVuZFxuXG4gIG1vZHVsZSBGIDogc2lnXG4gICAgdHlwZSAoXywgXykgcmVzdWx0X21vZGUgPVxuICAgICAgfCBCbG9ja2luZyA6ICgnYSwgJ2EpIHJlc3VsdF9tb2RlXG4gICAgICB8IERlZmVycmVkIDogKCdhLCAnYSBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gICAgdHlwZSAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsID1cbiAgICAgIHwgUGlwZSBvZlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgICAgLT4gKCdpbml0ICogJ3VwZGF0ZSBQaXBlLlJlYWRlci50LCAnaW5pdCkgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgIHwgRGlyZWN0IG9mXG4gICAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIC0+ICdxdWVyeVxuICAgICAgICAgICAtPiAndXBkYXRlIERpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgLT4gKCdpbml0LCAnaW5pdCkgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICAgIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgdCA9XG4gICAgICB8IE9uZV93YXkgOlxuICAgICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0KVxuICAgICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICAgIHwgT25lX3dheV9leHBlcnQgOlxuICAgICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSAtPiBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gdW5pdClcbiAgICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgICB8IFJwYyA6XG4gICAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICAgKiAncmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSAtPiAncXVlcnkgLT4gJ3Jlc3VsdClcbiAgICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBScGNfZXhwZXJ0IDpcbiAgICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgLT4gRXhwZXJ0LlJlc3BvbmRlci50XG4gICAgICAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgICAgLT4gbGVuOmludFxuICAgICAgICAgICAtPiAncmVzdWx0KVxuICAgICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgICAgfCBTdHJlYW1pbmdfcnBjIDpcbiAgICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAgICAgICAqICdpbml0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgKiAndXBkYXRlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICAgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUsICdxdWVyeSwgJ2luaXQsICd1cGRhdGUpIHN0cmVhbWluZ19pbXBsXG4gICAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICBlbmRcblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgIHsgdGFnIDogUnBjX3RhZy50XG4gICAgOyB2ZXJzaW9uIDogaW50XG4gICAgOyBmIDogJ2Nvbm5lY3Rpb25fc3RhdGUgRi50XG4gICAgOyBzaGFwZXMgOiBTZXhwLnQgTGF6eS50XG4gICAgOyBvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udFxuICAgIH1cbmVuZCA9XG4gIEltcGxlbWVudGF0aW9uXG5cbmFuZCBJbXBsZW1lbnRhdGlvbnMgOiBzaWdcbiAgdHlwZSAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwYyA9XG4gICAgWyBgUmFpc2VcbiAgICB8IGBDb250aW51ZVxuICAgIHwgYENsb3NlX2Nvbm5lY3Rpb25cbiAgICB8IGBDYWxsIG9mXG4gICAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICAgIHwgYEV4cGVydCBvZlxuICAgICAgICAnY29ubmVjdGlvbl9zdGF0ZVxuICAgICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAtPiBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLnRcbiAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgLT4gcG9zOmludFxuICAgICAgICAtPiBsZW46aW50XG4gICAgICAgIC0+IHVuaXQgRGVmZXJyZWQudFxuICAgIF1cblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPVxuICAgIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gICAgOyBvbl91bmtub3duX3JwYyA6ICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gICAgfVxuXG4gIHR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIG1vZHVsZSByZWMgSW5zdGFuY2UgOiBzaWdcbiAgICB0eXBlIHN0cmVhbWluZ19yZXNwb25zZSA9XG4gICAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgICB8IERpcmVjdCA6IF8gRGlyZWN0X3N0cmVhbV93cml0ZXIudCAtPiBzdHJlYW1pbmdfcmVzcG9uc2VcblxuICAgIHR5cGUgJ2EgdW5wYWNrZWQgPVxuICAgICAgeyBpbXBsZW1lbnRhdGlvbnMgOiAnYSBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIDsgd3JpdGVyIDogVHJhbnNwb3J0LldyaXRlci50XG4gICAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA6IChRdWVyeV9pZC50LCBzdHJlYW1pbmdfcmVzcG9uc2UpIEhhc2h0YmwudFxuICAgICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgICA7IGNvbm5lY3Rpb25fc3RhdGUgOiAnYVxuICAgICAgOyBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uIDogSW5mby50XG4gICAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgICA7IG11dGFibGUgbGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIDpcbiAgICAgICAgICAoRGVzY3JpcHRpb24udCAqICdhIEltcGxlbWVudGF0aW9uLnQpIG9wdGlvblxuICAgICAgOyBwYWNrZWRfc2VsZiA6IHRcbiAgICAgIH1cblxuICAgIGFuZCB0ID0gVCA6IF8gdW5wYWNrZWQgLT4gdFxuICBlbmRcbmVuZCA9XG4gIEltcGxlbWVudGF0aW9uc1xuXG5hbmQgRGlyZWN0X3N0cmVhbV93cml0ZXIgOiBzaWdcbiAgbW9kdWxlIFBlbmRpbmdfcmVzcG9uc2UgOiBzaWdcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBOb3JtYWwgb2YgJ2FcbiAgICAgIHwgRXhwZXJ0IG9mIHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgU3RhdGUgOiBzaWdcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBOb3Rfc3RhcnRlZCBvZiAnYSBQZW5kaW5nX3Jlc3BvbnNlLnQgUXVldWUudFxuICAgICAgfCBTdGFydGVkXG4gIGVuZFxuXG4gIG1vZHVsZSBJZCA9IERpcmVjdF9zdHJlYW1fd3JpdGVyX2lkXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGlkIDogSWQudFxuICAgIDsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnRcbiAgICA7IGNsb3NlZCA6IHVuaXQgSXZhci50XG4gICAgOyBpbnN0YW5jZSA6IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS50XG4gICAgOyBxdWVyeV9pZCA6IFF1ZXJ5X2lkLnRcbiAgICA7IHN0cmVhbV93cml0ZXIgOiAnYSBDYWNoZWRfc3RyZWFtX3dyaXRlci50XG4gICAgOyBncm91cHMgOiAnYSBncm91cF9lbnRyeSBCYWcudFxuICAgIH1cblxuICBhbmQgJ2EgZ3JvdXBfZW50cnkgPVxuICAgIHsgZ3JvdXAgOiAnYSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC50XG4gICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICB9XG5cbiAgbW9kdWxlIEdyb3VwIDogc2lnXG4gICAgdHlwZSAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciA9ICdhIHRcblxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB7ICgqIFtjb21wb25lbnRzXSBpcyBvbmx5IHRyYWNrZWQgc2VwYXJhdGVseSBmcm9tIFtjb21wb25lbnRzX2J5X2lkXSBzbyB3ZSBjYW4gaXRlcmF0ZVxuICAgICAgICAgICBvdmVyIGl0cyBlbGVtZW50cyBtb3JlIHF1aWNrbHkgdGhhbiB3ZSBjb3VsZCBpdGVyYXRlIG92ZXIgdGhlIHZhbHVlcyBvZlxuICAgICAgICAgICBbY29tcG9uZW50c19ieV9pZF0uICopXG4gICAgICAgIG11dGFibGUgY29tcG9uZW50cyA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy50XG4gICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgOyBidWZmZXIgOiBCaWdzdHJpbmcudCByZWZcbiAgICAgIH1cblxuICAgIGFuZCAnYSBjb21wb25lbnQgPVxuICAgICAgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA6ICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIEJhZy5FbHQudFxuICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIGdyb3VwX2VudHJ5IEJhZy5FbHQudFxuICAgICAgfVxuICBlbmRcbiAgd2l0aCB0eXBlICdhIGRpcmVjdF9zdHJlYW1fd3JpdGVyIDo9ICdhIHRcbmVuZCA9XG4gIERpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbmFuZCBDYWNoZWRfc3RyZWFtX3dyaXRlciA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgaGVhZGVyX3ByZWZpeCA6IHN0cmluZyAoKiBCaW5fcHJvdHRlZCBjb25zdGFudCBwcmVmaXggb2YgdGhlIG1lc3NhZ2UgKilcbiAgICA7IG11dGFibGUgZGF0YV9sZW4gOiBOYXQwLnRcbiAgICA7IGJpbl93cml0ZXIgOiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgIH1cbmVuZCA9XG4gIENhY2hlZF9zdHJlYW1fd3JpdGVyXG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgdCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLk9uX2V4Y2VwdGlvbi50ID1cbiAgeyBjYWxsYmFjayA6IChleG4gLT4gdW5pdCkgb3B0aW9uIFtAc2V4cC5vbWl0X25pbF1cbiAgOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA6IGJvb2xcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubGV0IGNsb3NlX2Nvbm5lY3Rpb24gPSB7IGNhbGxiYWNrID0gTm9uZTsgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWUgPSB0cnVlIH1cbmxldCBjb250aW51ZSA9IHsgY2FsbGJhY2sgPSBOb25lOyBjbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZSA9IGZhbHNlIH1cblxubGV0IGhhbmRsZV9leG5cbiAgICAgIHsgY2FsbGJhY2s7IGNsb3NlX2Nvbm5lY3Rpb25faWZfbm9fcmV0dXJuX3ZhbHVlIH1cbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIGV4blxuICA9XG4gIE9wdGlvbi5pdGVyIGNhbGxiYWNrIH5mOihmdW4gY2FsbGJhY2sgLT4gY2FsbGJhY2sgZXhuKTtcbiAgaWYgY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgdGhlbiBNb25pdG9yLnNlbmRfZXhuIGNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG5cbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIFByb3RvY29sXG5vcGVuIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uXG5cbm1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlc3BvbmRlciA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IEV4cGVydC5SZXNwb25kZXIudCA9XG4gICAgICB7IHF1ZXJ5X2lkIDogUXVlcnlfaWQudFxuICAgICAgOyB3cml0ZXIgOiBUcmFuc3BvcnQuV3JpdGVyLnRcbiAgICAgIDsgbXV0YWJsZSByZXNwb25kZWQgOiBib29sXG4gICAgICB9XG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGxldCBjcmVhdGUgcXVlcnlfaWQgd3JpdGVyID0geyBxdWVyeV9pZDsgd3JpdGVyOyByZXNwb25kZWQgPSBmYWxzZSB9XG4gIGVuZFxuXG4gIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgfCBSZXBsaWVkXG4gICAgfCBEZWxheWVkX3Jlc3BvbnNlIG9mIHVuaXQgRGVmZXJyZWQudFxuZW5kXG5cbm1vZHVsZSBGID0gc3RydWN0XG4gIHR5cGUgKCdhLCAnYikgcmVzdWx0X21vZGUgPSAoJ2EsICdiKSBGLnJlc3VsdF9tb2RlID1cbiAgICB8IEJsb2NraW5nIDogKCdhLCAnYSkgcmVzdWx0X21vZGVcbiAgICB8IERlZmVycmVkIDogKCdhLCAnYSBEZWZlcnJlZC50KSByZXN1bHRfbW9kZVxuXG4gIHR5cGUgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBzdHJlYW1pbmdfaW1wbCA9XG4gICAgKCdjb25uZWN0aW9uX3N0YXRlLCAncXVlcnksICdpbml0LCAndXBkYXRlKSBGLnN0cmVhbWluZ19pbXBsID1cbiAgICB8IFBpcGUgb2ZcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgIC0+ICgnaW5pdCAqICd1cGRhdGUgUGlwZS5SZWFkZXIudCwgJ2luaXQpIFJlc3VsdC50IERlZmVycmVkLnQpXG4gICAgfCBEaXJlY3Qgb2ZcbiAgICAgICAgKCdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAtPiAncXVlcnlcbiAgICAgICAgIC0+ICd1cGRhdGUgSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICAgLT4gKCdpbml0LCAnaW5pdCkgUmVzdWx0LnQgRGVmZXJyZWQudClcblxuICB0eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBGLnQgPVxuICAgIHwgT25lX3dheSA6XG4gICAgICAgICdtc2cgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXIgKiAoJ2Nvbm5lY3Rpb25fc3RhdGUgLT4gJ21zZyAtPiB1bml0KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSB0XG4gICAgfCBPbmVfd2F5X2V4cGVydCA6XG4gICAgICAgICgnY29ubmVjdGlvbl9zdGF0ZSAtPiBCaWdzdHJpbmcudCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gdW5pdClcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuICAgIHwgUnBjIDpcbiAgICAgICAgJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyXG4gICAgICAgICogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogKCdjb25uZWN0aW9uX3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzdWx0KVxuICAgICAgICAqICgncmVzcG9uc2UsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFJwY19leHBlcnQgOlxuICAgICAgICAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgIC0+IEV4cGVydC5SZXNwb25kZXIudFxuICAgICAgICAgLT4gQmlnc3RyaW5nLnRcbiAgICAgICAgIC0+IHBvczppbnRcbiAgICAgICAgIC0+IGxlbjppbnRcbiAgICAgICAgIC0+ICdyZXN1bHQpXG4gICAgICAgICogKEV4cGVydC5pbXBsZW1lbnRhdGlvbl9yZXN1bHQsICdyZXN1bHQpIHJlc3VsdF9tb2RlXG4gICAgICAgIC0+ICdjb25uZWN0aW9uX3N0YXRlIHRcbiAgICB8IFN0cmVhbWluZ19ycGMgOlxuICAgICAgICAncXVlcnkgQmluX3Byb3QuVHlwZV9jbGFzcy5yZWFkZXJcbiAgICAoKiAnaW5pdCBjYW4gYmUgYW4gZXJyb3Igb3IgYW4gaW5pdGlhbCBzdGF0ZSAqKVxuICAgICAgICAqICdpbml0IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGVyXG4gICAgICAgICogJ3VwZGF0ZSBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlclxuICAgICAgICAqICgnY29ubmVjdGlvbl9zdGF0ZSwgJ3F1ZXJ5LCAnaW5pdCwgJ3VwZGF0ZSkgc3RyZWFtaW5nX2ltcGxcbiAgICAgICAgLT4gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG4gIGxldCBzZXhwX29mX3QgXyA9IGZ1bmN0aW9uXG4gICAgfCBPbmVfd2F5X2V4cGVydCBfIHwgT25lX3dheSBfIC0+IFslbWVzc2FnZSBcIm9uZS13YXlcIl1cbiAgICB8IFJwY19leHBlcnQgXyB8IFJwYyBfIC0+IFslbWVzc2FnZSBcInJwY1wiXVxuICAgIHwgU3RyZWFtaW5nX3JwYyBfIC0+IFslbWVzc2FnZSBcInN0cmVhbWluZy1ycGNcIl1cbiAgOztcblxuICBsZXQgbGlmdCB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IE9uZV93YXkgKGJpbl9tc2csIGltcGwpIC0+IE9uZV93YXkgKGJpbl9tc2csIGZ1biBzdGF0ZSBzdHIgLT4gaW1wbCAoZiBzdGF0ZSkgc3RyKVxuICAgIHwgT25lX3dheV9leHBlcnQgaW1wbCAtPlxuICAgICAgT25lX3dheV9leHBlcnQgKGZ1biBzdGF0ZSBidWYgfnBvcyB+bGVuIC0+IGltcGwgKGYgc3RhdGUpIGJ1ZiB+cG9zIH5sZW4pXG4gICAgfCBScGMgKGJpbl9xdWVyeSwgYmluX3Jlc3BvbnNlLCBpbXBsLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIFJwYyAoYmluX3F1ZXJ5LCBiaW5fcmVzcG9uc2UsIChmdW4gc3RhdGUgcSAtPiBpbXBsIChmIHN0YXRlKSBxKSwgcmVzdWx0X21vZGUpXG4gICAgfCBScGNfZXhwZXJ0IChpbXBsLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIFJwY19leHBlcnRcbiAgICAgICAgKChmdW4gc3RhdGUgcmVzcCBidWYgfnBvcyB+bGVuIC0+IGltcGwgKGYgc3RhdGUpIHJlc3AgYnVmIH5wb3MgfmxlbiksIHJlc3VsdF9tb2RlKVxuICAgIHwgU3RyZWFtaW5nX3JwYyAoYmluX3EsIGJpbl9pLCBiaW5fdSwgaW1wbCkgLT5cbiAgICAgIGxldCBpbXBsID1cbiAgICAgICAgbWF0Y2ggaW1wbCB3aXRoXG4gICAgICAgIHwgUGlwZSBpbXBsIC0+IFBpcGUgKGZ1biBzdGF0ZSBxIC0+IGltcGwgKGYgc3RhdGUpIHEpXG4gICAgICAgIHwgRGlyZWN0IGltcGwgLT4gRGlyZWN0IChmdW4gc3RhdGUgcSB3IC0+IGltcGwgKGYgc3RhdGUpIHEgdylcbiAgICAgIGluXG4gICAgICBTdHJlYW1pbmdfcnBjIChiaW5fcSwgYmluX2ksIGJpbl91LCBpbXBsKVxuICA7O1xuZW5kXG5cbnR5cGUgbm9ucmVjICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSB0ID1cbiAgeyB0YWcgOiBScGNfdGFnLnRcbiAgOyB2ZXJzaW9uIDogaW50XG4gIDsgZiA6ICdjb25uZWN0aW9uX3N0YXRlIEYudFxuICA7IHNoYXBlcyA6IFNleHAudCBMYXp5LnRcbiAgOyBvbl9leGNlcHRpb24gOiBPbl9leGNlcHRpb24udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IFJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbmxldCBsaWZ0IHQgfmYgPSB7IHQgd2l0aCBmID0gRi5saWZ0IH5mIHQuZiB9XG5sZXQgdXBkYXRlX29uX2V4Y2VwdGlvbiB0IH5mID0geyB0IHdpdGggb25fZXhjZXB0aW9uID0gZiB0Lm9uX2V4Y2VwdGlvbiB9XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5pbmNsdWRlIFByb3RvY29sLlJwY19lcnJvclxuaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChQcm90b2NvbC5ScGNfZXJyb3IpXG5cbmV4Y2VwdGlvbiBScGMgb2YgdCAqIEluZm8udCBbQEBkZXJpdmluZyBzZXhwXVxuXG5sZXQgcmFpc2UgdCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uID0gcmFpc2UgKFJwYyAodCwgY29ubmVjdGlvbl9kZXNjcmlwdGlvbikpXG5cbmxldCBzZXhwX29mX3QgdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgQ29ubmVjdGlvbl9jbG9zZWQgLT5cbiAgICBbJXNleHAgYENvbm5lY3Rpb25fY2xvc2VkIChnZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gKCkgOiBTZXhwLnQpXVxuICB8IEJpbl9pb19leG4gX1xuICB8IFdyaXRlX2Vycm9yIF9cbiAgfCBVbmNhdWdodF9leG4gX1xuICB8IFVuaW1wbGVtZW50ZWRfcnBjIF9cbiAgfCBVbmtub3duX3F1ZXJ5X2lkIF8gLT4gc2V4cF9vZl90IHRcbjs7XG5cbigqIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8ganVzdCB0YWtlIGEgW0Nvbm5lY3Rpb24udF0sIGJ1dCB3ZSB0YWtlIGl0cyBwaWVjZXMgaW5zdGVhZCB0b1xuICAgYXZvaWQgYSBkZXBlbmRlbmN5IGN5Y2xlICopXG5sZXQgdG9fZXJyb3JcbiAgICAgIHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246eyBEZXNjcmlwdGlvbi5uYW1lID0gcnBjX25hbWU7IHZlcnNpb24gPSBycGNfdmVyc2lvbiB9XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICA9XG4gIGxldCBycGNfZXJyb3IgPVxuICAgIHNleHBfb2ZfdCB0IH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb246KGZ1biAoKSAtPlxuICAgICAgbGV0IGNsb3NlX3JlYXNvbiA9XG4gICAgICAgICgqIFVzdWFsbHkgKGFsd2F5cz8pIGhlcmUgd2Ugd2lsbCBoYXZlIHRoZSBkZWZlcnJlZCBhbHJlYWR5IGZ1bGxcbiAgICAgICAgICAgYmVjYXVzZSBDb25uZWN0aW9uX2Nsb3NlZCBlcnJvciBtZWFucyB0aGUgY29ubmVjdGlvbiBpcyBhbHJlYWR5XG4gICAgICAgICAgIGNsb3NlZCAqKVxuICAgICAgICBEZWZlcnJlZC5wZWVrIGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgaW5cbiAgICAgIFslc2V4cCAoY2xvc2VfcmVhc29uIDogSW5mby50IG9wdGlvbildKVxuICBpblxuICBFcnJvci5jcmVhdGVfc1xuICAgIFslc2V4cFxuICAgICAgeyBycGNfZXJyb3IgOiBTZXhwLnRcbiAgICAgIDsgY29ubmVjdGlvbl9kZXNjcmlwdGlvbiA6IEluZm8udFxuICAgICAgOyBycGNfbmFtZSA6IHN0cmluZ1xuICAgICAgOyBycGNfdmVyc2lvbiA6IGludFxuICAgICAgfV1cbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gQXN5bmNfa2VybmVsXG5cbnR5cGUgJ2EgdCA9ICgnYSwgUnBjX2Vycm9yLnQpIFJlc3VsdC50IFtAQGRlcml2aW5nIGJpbl9pb11cblxudHlwZSBsb2NhdGVkX2Vycm9yID1cbiAgeyBsb2NhdGlvbiA6IHN0cmluZ1xuICA7IGV4biA6IEV4bi50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCB1bmNhdWdodF9leG4gfmxvY2F0aW9uIGV4biA9XG4gIEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIChzZXhwX29mX2xvY2F0ZWRfZXJyb3IgeyBsb2NhdGlvbjsgZXhuIH0pKVxuOztcblxubGV0IGJpbl9pb19leG4gfmxvY2F0aW9uIGV4biA9XG4gIEVycm9yIChScGNfZXJyb3IuQmluX2lvX2V4biAoc2V4cF9vZl9sb2NhdGVkX2Vycm9yIHsgbG9jYXRpb247IGV4biB9KSlcbjs7XG5cbmxldCB0cnlfd2l0aCA/b25fYmFja2dyb3VuZF9leGNlcHRpb24gP3J1biB+bG9jYXRpb24gZiA9XG4gIGxldCB4ID1cbiAgICBsZXQgcmVzdCA9XG4gICAgICBtYXRjaCBvbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gYExvZ1xuICAgICAgfCBTb21lIGNhbGxiYWNrIC0+IGBDYWxsIGNhbGxiYWNrXG4gICAgaW5cbiAgICBNb25pdG9yLnRyeV93aXRoXG4gICAgICB+cmVzdFxuICAgICAgfnJ1bjooT3B0aW9uLnZhbHVlIHJ1biB+ZGVmYXVsdDpgU2NoZWR1bGUpXG4gICAgICBmXG4gIGluXG4gIGxldCBqb2luID0gZnVuY3Rpb25cbiAgICB8IE9rIHggLT4geFxuICAgIHwgRXJyb3IgZXhuIC0+IHVuY2F1Z2h0X2V4biB+bG9jYXRpb24gZXhuXG4gIGluXG4gIG1hdGNoIERlZmVycmVkLnBlZWsgeCB3aXRoXG4gIHwgTm9uZSAtPiB4ID4+fCBqb2luXG4gIHwgU29tZSB4IC0+IHJldHVybiAoam9pbiB4KVxuOztcblxubGV0IG9yX2Vycm9yIH5ycGNfZGVzY3JpcHRpb24gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb24gfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA9XG4gIFJlc3VsdC5tYXBfZXJyb3JcbiAgICB+ZjpcbiAgICAgIChScGNfZXJyb3IudG9fZXJyb3JcbiAgICAgICAgIH5ycGNfZGVzY3JpcHRpb25cbiAgICAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICB+Y29ubmVjdGlvbl9jbG9zZV9zdGFydGVkKVxuOztcbiIsIm9wZW4gQ29yZVxuXG4oKiB1dGlsaXR5IGZ1bmN0aW9uIGZvciBiaW4taW8naW5nIG91dCBvZiBhIEJpZ3N0cmluZy50ICopXG5sZXQgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgIChiaW5fcmVhZGVyX3QgOiBfIEJpbl9wcm90LlR5cGVfY2xhc3MucmVhZGVyKVxuICAgICAgP2FkZF9sZW5cbiAgICAgIGJ1ZlxuICAgICAgfnBvc19yZWZcbiAgICAgIH4obGVuIDogTmF0MC50KVxuICAgICAgfmxvY2F0aW9uXG4gID1cbiAgdHJ5XG4gICAgbGV0IGluaXRfcG9zID0gIXBvc19yZWYgaW5cbiAgICBsZXQgZGF0YSA9IGJpbl9yZWFkZXJfdC5yZWFkIGJ1ZiB+cG9zX3JlZiBpblxuICAgIGxldCBhZGRfbGVuID1cbiAgICAgIG1hdGNoIGFkZF9sZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IDBcbiAgICAgIHwgU29tZSBhZGRfbGVuIC0+IGFkZF9sZW4gZGF0YVxuICAgIGluXG4gICAgaWYgIXBvc19yZWYgLSBpbml0X3BvcyArIGFkZF9sZW4gPD4gKGxlbiA6PiBpbnQpXG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhmXG4gICAgICAgIFwibWVzc2FnZSBsZW5ndGggKCVkKSBkaWQgbm90IG1hdGNoIGV4cGVjdGVkIGxlbmd0aCAoJWQpXCJcbiAgICAgICAgKCFwb3NfcmVmIC0gaW5pdF9wb3MpXG4gICAgICAgIChsZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgICAgICAoKTtcbiAgICBPayBkYXRhXG4gIHdpdGhcbiAgfCBlIC0+IFJwY19yZXN1bHQuYmluX2lvX2V4biB+bG9jYXRpb24gZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBQb2x5XG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBVdGlsXG5vcGVuIEltcGxlbWVudGF0aW9uX3R5cGVzLkltcGxlbWVudGF0aW9uc1xubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFdyaXRlciA9IFRyYW5zcG9ydC5Xcml0ZXJcblxuKCogVGhlIFJlc3VsdCBtb25hZCBpcyBhbHNvIHVzZWQuICopXG5sZXQgKCA+Pnx+ICkgPSBSZXN1bHQuKCA+PnwgKVxuXG4oKiBDb21tdXRlIFJlc3VsdCBhbmQgRGVmZXJyZWQuICopXG5sZXQgZGVmZXJfcmVzdWx0IDogJ2EgJ2IuICgnYSBEZWZlcnJlZC50LCAnYikgUmVzdWx0LnQgLT4gKCdhLCAnYikgUmVzdWx0LnQgRGVmZXJyZWQudFxuICA9IGZ1bmN0aW9uXG4gICAgfCBFcnJvciBfIGFzIGVyciAtPiByZXR1cm4gZXJyXG4gICAgfCBPayBkIC0+XG4gICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGxldCVtYXAgeCA9IGQgaW5cbiAgICAgICAgIE9rIHhcbiAgICAgICB8IFNvbWUgZCAtPiByZXR1cm4gKE9rIGQpKVxuOztcblxubW9kdWxlIERlZmVycmVkX2ltbWVkaWF0ZSA9IE1vbmFkLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIERlZmVycmVkLnRcblxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cblxuICAgIGxldCBiaW5kIGQgfmYgPVxuICAgICAgbWF0Y2ggRGVmZXJyZWQucGVlayBkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkID4+PSBmXG4gICAgICB8IFNvbWUgeCAtPiBmIHhcbiAgICA7O1xuXG4gICAgbGV0IG1hcCBkIH5mID1cbiAgICAgIG1hdGNoIERlZmVycmVkLnBlZWsgZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZCA+PnwgZlxuICAgICAgfCBTb21lIHggLT4gcmV0dXJuIChmIHgpXG4gICAgOztcblxuICAgIGxldCBtYXAgPSBgQ3VzdG9tIG1hcFxuICBlbmQpXG5cbm1vZHVsZSBSZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGMgPVxuICBbIGBSYWlzZVxuICB8IGBDb250aW51ZVxuICB8IGBDbG9zZV9jb25uZWN0aW9uXG4gIHwgYENhbGwgb2ZcbiAgICAgICdjb25uZWN0aW9uX3N0YXRlXG4gICAgICAtPiBycGNfdGFnOnN0cmluZ1xuICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgIC0+IFsgYENsb3NlX2Nvbm5lY3Rpb24gfCBgQ29udGludWUgXVxuICBdXG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgb25fdW5rbm93bl9ycGNfd2l0aF9leHBlcnQgPVxuICBbICdjb25uZWN0aW9uX3N0YXRlIG9uX3Vua25vd25fcnBjXG4gIHwgYEV4cGVydCBvZlxuICAgICAgJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgIC0+IHJwY190YWc6c3RyaW5nXG4gICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgLT4gUmVzcG9uZGVyLnRcbiAgICAgIC0+IEJpZ3N0cmluZy50XG4gICAgICAtPiBwb3M6aW50XG4gICAgICAtPiBsZW46aW50XG4gICAgICAtPiB1bml0IERlZmVycmVkLnRcbiAgXVxuXG50eXBlICdjb25uZWN0aW9uX3N0YXRlIHQgPSAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbl90eXBlcy5JbXBsZW1lbnRhdGlvbnMudCA9XG4gIHsgaW1wbGVtZW50YXRpb25zIDogJ2Nvbm5lY3Rpb25fc3RhdGUgSW1wbGVtZW50YXRpb24udCBEZXNjcmlwdGlvbi5UYWJsZS50XG4gIDsgb25fdW5rbm93bl9ycGMgOiAnY29ubmVjdGlvbl9zdGF0ZSBvbl91bmtub3duX3JwY193aXRoX2V4cGVydFxuICB9XG5cbnR5cGUgJ2Nvbm5lY3Rpb25fc3RhdGUgaW1wbGVtZW50YXRpb25zID0gJ2Nvbm5lY3Rpb25fc3RhdGUgdFxuXG5sZXQgZGVzY3JpcHRpb25zIHQgPSBIYXNodGJsLmtleXMgdC5pbXBsZW1lbnRhdGlvbnNcblxubW9kdWxlIEluc3RhbmNlID0gc3RydWN0XG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlID0gSW5zdGFuY2Uuc3RyZWFtaW5nX3Jlc3BvbnNlID1cbiAgICB8IFBpcGUgOiBfIFBpcGUuUmVhZGVyLnQgLT4gc3RyZWFtaW5nX3Jlc3BvbnNlXG4gICAgfCBEaXJlY3QgOlxuICAgICAgICAoXyBJbXBsZW1lbnRhdGlvbl90eXBlcy5EaXJlY3Rfc3RyZWFtX3dyaXRlci50W0BzZXhwLm9wYXF1ZV0pXG4gICAgICAgIC0+IHN0cmVhbWluZ19yZXNwb25zZVxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIHR5cGUgc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IChQLlF1ZXJ5X2lkLnQsIHN0cmVhbWluZ19yZXNwb25zZSkgSGFzaHRibC50XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgdHlwZSAnYSB1bnBhY2tlZCA9ICdhIEluc3RhbmNlLnVucGFja2VkID1cbiAgICB7IGltcGxlbWVudGF0aW9ucyA6ICgnYSBpbXBsZW1lbnRhdGlvbnNbQHNleHAub3BhcXVlXSlcbiAgICA7IHdyaXRlciA6IFdyaXRlci50XG4gICAgOyBvcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgOiBzdHJlYW1pbmdfcmVzcG9uc2VzXG4gICAgOyBtdXRhYmxlIHN0b3BwZWQgOiBib29sXG4gICAgOyBjb25uZWN0aW9uX3N0YXRlIDogJ2FcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb24gOiBJbmZvLnRcbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZCA6IEluZm8udCBEZWZlcnJlZC50XG4gICAgOyBtdXRhYmxlIGxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA6XG4gICAgICAgIChEZXNjcmlwdGlvbi50ICogKCdhIEltcGxlbWVudGF0aW9uLnRbQHNleHAub3BhcXVlXSkpIG9wdGlvblxuICAgICgqIFtwYWNrZWRfc2VsZl0gaXMgaGVyZSBzbyB3ZSBjYW4gZXNzZW50aWFsbHkgcGFjayBhbiB1bnBhY2tlZCBpbnN0YW5jZSB3aXRob3V0IGRvaW5nXG4gICAgICAgYW55IGFkZGl0aW9uYWwgYWxsb2NhdGlvbi4gKilcbiAgICA7IHBhY2tlZF9zZWxmIDogKHRbQHNleHAub3BhcXVlXSlcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgYW5kIHQgPSBJbnN0YW5jZS50ID0gVCA6IF8gdW5wYWNrZWQgLT4gdFxuXG4gIGxldCBzZXhwX29mX3QgKFQgdCkgPSBbJXNleHBfb2Y6IF8gdW5wYWNrZWRdIHRcblxuICBsZXQgc2VuZF93cml0ZV9lcnJvciB0IGlkIHNleHAgPVxuICAgIGxldCBkYXRhIDogXyBQLk1lc3NhZ2UudCA9IFJlc3BvbnNlIHsgaWQ7IGRhdGEgPSBFcnJvciAoV3JpdGVfZXJyb3Igc2V4cCkgfSBpblxuICAgIG1hdGNoIFdyaXRlci5zZW5kX2Jpbl9wcm90IHQud3JpdGVyIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdCBkYXRhIHdpdGhcbiAgICB8IFNlbnQgKCkgfCBDbG9zZWQgLT4gKClcbiAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgXCJGYWlsZWQgdG8gc2VuZCB3cml0ZSBlcnJvciB0byBjbGllbnRcIlxuICAgICAgICAsIHsgZXJyb3IgPSAoc2V4cCA6IFNleHAudCk7IHJlYXNvbiA9IChyIDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCkgfV1cbiAgOztcblxuICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWQgKHJlc3VsdCA6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgU2VudCAoKSAtPiAoKVxuICAgIHwgQ2xvc2VkIC0+ICgpXG4gICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+XG4gICAgICBzZW5kX3dyaXRlX2Vycm9yIHQgaWQgKFslc2V4cF9vZjogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudF0gcilcbiAgOztcblxuICBsZXQgd3JpdGVfbWVzc2FnZSB0IH5pZCBiaW5fd3JpdGVyIHggPVxuICAgIGlmIG5vdCB0LnN0b3BwZWRcbiAgICB0aGVuIFdyaXRlci5zZW5kX2Jpbl9wcm90IHQud3JpdGVyIGJpbl93cml0ZXIgeCB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdCBpZFxuICA7O1xuXG4gIGxldCB3cml0ZV9tZXNzYWdlX2V4cGVydCB0IH5pZCBiaW5fd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gPVxuICAgIGlmIG5vdCB0LnN0b3BwZWRcbiAgICB0aGVuXG4gICAgICBXcml0ZXIuc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nIHQud3JpdGVyIGJpbl93cml0ZXIgeCB+YnVmIH5wb3MgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQgaWRcbiAgOztcblxuICBsZXQgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fd3JpdGVyX2RhdGEgZGF0YSA9XG4gICAgbGV0IGJpbl93cml0ZXIgPVxuICAgICAgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmVlZHNfbGVuZ3RoIChXcml0ZXJfd2l0aF9sZW5ndGgub2Zfd3JpdGVyIGJpbl93cml0ZXJfZGF0YSlcbiAgICBpblxuICAgIHdyaXRlX21lc3NhZ2UgdCB+aWQgYmluX3dyaXRlciAoUmVzcG9uc2UgeyBpZDsgZGF0YSB9KVxuICA7O1xuXG4gIG1vZHVsZSBDYWNoZWRfc3RyZWFtX3dyaXRlciA6IHNpZ1xuICAgIHR5cGUgaW5zdGFuY2VcbiAgICB0eXBlICdhIHQgPSAnYSBJbXBsZW1lbnRhdGlvbl90eXBlcy5DYWNoZWRfc3RyZWFtX3dyaXRlci50XG5cbiAgICB2YWwgY3JlYXRlIDogaWQ6UC5RdWVyeV9pZC50IC0+IGJpbl93cml0ZXI6J2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgLT4gJ2EgdFxuICAgIHZhbCB3cml0ZSA6ICdhIHQgLT4gaW5zdGFuY2UgLT4gUC5RdWVyeV9pZC50IC0+ICdhIC0+IHVuaXRcblxuICAgIHZhbCB3cml0ZV9leHBlcnRcbiAgICAgIDogICdhIHRcbiAgICAgIC0+IGluc3RhbmNlXG4gICAgICAtPiBQLlF1ZXJ5X2lkLnRcbiAgICAgIC0+IGJ1ZjpCaWdzdHJpbmcudFxuICAgICAgLT4gcG9zOmludFxuICAgICAgLT4gbGVuOmludFxuICAgICAgLT4gdW5pdFxuXG4gICAgdmFsIHdyaXRlX3N0cmluZyA6ICdhIHQgLT4gaW5zdGFuY2UgLT4gUC5RdWVyeV9pZC50IC0+IHN0cmluZyAtPiB1bml0XG4gIGVuZFxuICB3aXRoIHR5cGUgaW5zdGFuY2UgOj0gdCA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9ICdhIEltcGxlbWVudGF0aW9uX3R5cGVzLkNhY2hlZF9zdHJlYW1fd3JpdGVyLnQgPVxuICAgICAgeyBoZWFkZXJfcHJlZml4IDogc3RyaW5nICgqIEJpbl9wcm90dGVkIGNvbnN0YW50IHByZWZpeCBvZiB0aGUgbWVzc2FnZSAqKVxuICAgICAgOyAoKiBMZW5ndGggb2YgdGhlIHVzZXIgZGF0YSBwYXJ0LiBXZSBzZXQgdGhpcyBmaWVsZCB3aGVuIHNlbmRpbmcgYSBtZXNzYWdlLiBUaGlzXG4gICAgICAgICAgIHJlbGllcyBvbiB0aGUgZmFjdCB0aGF0IHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgaW1tZWRpYXRlbHkgKHdoaWNoIGlzIHRoZVxuICAgICAgICAgICBvbmx5IGFjY2VwdGFibGUgc2VtYW50aWNzIGZvciB0aGUgdHJhbnNwb3J0IGxheWVyIGFueXdheSwgYXMgaXQgZG9lc24ndCBrbm93IGlmXG4gICAgICAgICAgIHRoZSB2YWx1ZSBpcyBtdXRhYmxlIG9yIG5vdCkuXG5cbiAgICAgICAgICAgW2RhdGFfbGVuXSBpcyBwYXNzZWQgdG8gYmluLXByb3Qgd3JpdGVycyBieSBtdXRhdGluZyBbZGF0YV9sZW5dIGluc3RlYWQgb2YgYnlcbiAgICAgICAgICAgcGFzc2luZyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRvIGF2b2lkIHNvbWUgYWxsb2NhdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhX2xlbiA6IE5hdDAudFxuICAgICAgOyBiaW5fd3JpdGVyIDogJ2EgQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXJcbiAgICAgIH1cblxuXG4gICAgdHlwZSB2b2lkID0gVm9pZFxuXG4gICAgbGV0IGJpbl9zaXplX3ZvaWQgVm9pZCA9IDBcbiAgICBsZXQgYmluX3dyaXRlX3ZvaWQgX2J1ZiB+cG9zIFZvaWQgPSBwb3NcblxuICAgIHR5cGUgdm9pZF9tZXNzYWdlID0gdm9pZCBQLk1lc3NhZ2UubmVlZHNfbGVuZ3RoIFtAQGRlcml2aW5nIGJpbl93cml0ZV1cblxuICAgIHR5cGUgdm9pZF9zdHJlYW1fcmVzcG9uc2VfZGF0YSA9IHZvaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5uZWVkc19sZW5ndGhcbiAgICBbQEBkZXJpdmluZyBiaW5fd3JpdGVdXG5cbiAgICAoKiBUaGlzIGlzIG5vdCByZS1lbnRyYW50IGJ1dCBBc3luYyBjb2RlIGFsd2F5cyBydW5zIG9uIG9uZSB0aHJlYWQgYXQgYSB0aW1lICopXG4gICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgMzJcblxuICAgIGxldCBjYWNoZV9iaW5fcHJvdHRlZCAoYmluX3dyaXRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIpIHggPVxuICAgICAgbGV0IGxlbiA9IGJpbl93cml0ZXIud3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICBCaWdzdHJpbmcuVG9fc3RyaW5nLnN1YiBidWZmZXIgfnBvczowIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSAodHlwZSBhKSB+aWQgfmJpbl93cml0ZXIgOiBhIHQgPVxuICAgICAgbGV0IGhlYWRlcl9wcmVmaXggPVxuICAgICAgICBjYWNoZV9iaW5fcHJvdHRlZCBiaW5fd3JpdGVyX3ZvaWRfbWVzc2FnZSAoUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIFZvaWQgfSlcbiAgICAgIGluXG4gICAgICB7IGhlYWRlcl9wcmVmaXg7IGJpbl93cml0ZXI7IGRhdGFfbGVuID0gTmF0MC5vZl9pbnRfZXhuIDAgfVxuICAgIDs7XG5cbiAgICAoKiBUaGlzIHBhcnQgb2YgdGhlIG1lc3NhZ2UgaGVhZGVyIGlzIGEgY29uc3RhbnQsIG1ha2UgaXQgYSBsaXRlcmFsIHRvIG1ha2UgdGhlXG4gICAgICAgd3JpdGluZyBjb2RlIHNsaWdodGx5IGZhc3Rlci4gKilcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiA9IDRcbiAgICBsZXQgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2FzX2ludDMyID0gMHg4YTc5bFxuXG4gICAgbGV0JXRlc3RfdW5pdCBcInN0cmVhbV9yZXNwb25zZV8qIGNvbnN0YW50cyBhcmUgY29ycmVjdFwiID1cbiAgICAgIGxldCBsZW4gPVxuICAgICAgICBiaW5fd3JpdGVyX3ZvaWRfc3RyZWFtX3Jlc3BvbnNlX2RhdGEud3JpdGVcbiAgICAgICAgICBidWZmZXJcbiAgICAgICAgICB+cG9zOjBcbiAgICAgICAgICAoYE9rIFZvaWQgOiB2b2lkX3N0cmVhbV9yZXNwb25zZV9kYXRhKVxuICAgICAgaW5cbiAgICAgIGFzc2VydCAobGVuID0gc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbik7XG4gICAgICBhc3NlcnQgKFxuICAgICAgICBCaWdzdHJpbmcudW5zYWZlX2dldF9pbnQzMl90X2xlIGJ1ZmZlciB+cG9zOjBcbiAgICAgICAgPSBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfYXNfaW50MzIpXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVfc3RyaW5nX25vX2xlbmd0aCBidWYgfnBvcyBzdHIgPVxuICAgICAgbGV0IHN0cl9sZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICAgICAgKCogVmVyeSBsb3ctbGV2ZWwgYmluX3Byb3Qgc3R1ZmYuLi4gKilcbiAgICAgIEJpbl9wcm90LkNvbW1vbi5hc3NlcnRfcG9zIHBvcztcbiAgICAgIGxldCBuZXh0ID0gcG9zICsgc3RyX2xlbiBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaW5fcHJvdC5Db21tb24udW5zYWZlX2JsaXRfc3RyaW5nX2J1ZiB+c3JjX3BvczowIHN0ciB+ZHN0X3Bvczpwb3MgYnVmIH5sZW46c3RyX2xlbjtcbiAgICAgIG5leHRcbiAgICA7O1xuXG4gICAgKCogVGhlIHR3byBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSAzIHZhcmlhbnRzIGV4cG9zZWQgYnkgdGhpcyBtb2R1bGUuIFRoZXlcbiAgICAgICBzZXJpYWxpemUgYSBbUmVzcG9uc2UgeyBpZDsgZGF0YSA9IE9rIChgT2sgZGF0YV9sZW4pIH1dIHZhbHVlLCB0YWtpbmcgY2FyZSBvZlxuICAgICAgIHdyaXRpbmcgdGhlIFtOYXQwLnRdIGxlbmd0aCBwcmVmaXggd2hlcmUgYXBwcm9yaWF0ZS5cblxuICAgICAgIEJlYXIgaW4gbWluZCB0aGF0IHRoZXJlIGFyZSB0d28gbGV2ZWxzIG9mIGxlbmd0aCBwcmVmaXhlcyBmb3Igc3RyZWFtIHJlc3BvbnNlIGRhdGFcbiAgICAgICBtZXNzYWdlOiBvbmUgZm9yIHRoZSB1c2VyIGRhdGEgKHVuZGVyIHRoZSBgT2ssIGJlZm9yZSB0aGUgYWN0dWFsIGRhdGEpLCBhbmQgb25lIGZvclxuICAgICAgIHRoZSByZXNwb25zZSBkYXRhICh1bmRlciB0aGUgLmRhdGEgZmllbGQsIGJlZm9yZSB0aGUgT2spLiAqKVxuICAgIGxldCBiaW5fc2l6ZV9uYXQwX2hlYWRlciB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHN0cmVhbV9yZXNwb25zZV9kYXRhX25hdDBfbGVuID1cbiAgICAgICAgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfaGVhZGVyX2xlbiArIE5hdDAuYmluX3NpemVfdCBkYXRhX2xlblxuICAgICAgaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9uYXQwX2xlbiArIChkYXRhX2xlbiA6IE5hdDAudCA6PiBpbnQpXG4gICAgICBpblxuICAgICAgU3RyaW5nLmxlbmd0aCBoZWFkZXJfcHJlZml4XG4gICAgICArIE5hdDAuYmluX3NpemVfdCAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbilcbiAgICAgICsgc3RyZWFtX3Jlc3BvbnNlX2RhdGFfbmF0MF9sZW5cbiAgICA7O1xuXG4gICAgbGV0IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB7IGhlYWRlcl9wcmVmaXg7IGRhdGFfbGVuOyBfIH0gPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9zdHJpbmdfbm9fbGVuZ3RoIGJ1ZiB+cG9zIGhlYWRlcl9wcmVmaXggaW5cbiAgICAgIGxldCBzdHJlYW1fcmVzcG9uc2VfZGF0YV9sZW4gPVxuICAgICAgICBzdHJlYW1fcmVzcG9uc2VfZGF0YV9oZWFkZXJfbGVuXG4gICAgICAgICsgTmF0MC5iaW5fc2l6ZV90IGRhdGFfbGVuXG4gICAgICAgICsgKGRhdGFfbGVuIDogTmF0MC50IDo+IGludClcbiAgICAgIGluXG4gICAgICBsZXQgcG9zID0gTmF0MC5iaW5fd3JpdGVfdCBidWYgfnBvcyAoTmF0MC5vZl9pbnRfZXhuIHN0cmVhbV9yZXNwb25zZV9kYXRhX2xlbikgaW5cbiAgICAgIGxldCBuZXh0ID0gcG9zICsgNCBpblxuICAgICAgQmluX3Byb3QuQ29tbW9uLmNoZWNrX25leHQgYnVmIG5leHQ7XG4gICAgICBCaWdzdHJpbmcudW5zYWZlX3NldF9pbnQzMl90X2xlIGJ1ZiB+cG9zIHN0cmVhbV9yZXNwb25zZV9kYXRhX2hlYWRlcl9hc19pbnQzMjtcbiAgICAgIE5hdDAuYmluX3dyaXRlX3QgYnVmIH5wb3M6bmV4dCBkYXRhX2xlblxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9uYXQwX2hlYWRlciA6IF8gQmluX3Byb3QuVHlwZV9jbGFzcy53cml0ZXIgPVxuICAgICAgeyBzaXplID0gYmluX3NpemVfbmF0MF9oZWFkZXI7IHdyaXRlID0gYmluX3dyaXRlX25hdDBfaGVhZGVyIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2UgKHQsIF8pID0gYmluX3NpemVfbmF0MF9oZWFkZXIgdCArICh0LmRhdGFfbGVuIDogTmF0MC50IDo+IGludClcblxuICAgIGxldCBiaW5fd3JpdGVfbWVzc2FnZSBidWYgfnBvcyAodCwgZGF0YSkgPVxuICAgICAgbGV0IHBvcyA9IGJpbl93cml0ZV9uYXQwX2hlYWRlciBidWYgfnBvcyB0IGluXG4gICAgICB0LmJpbl93cml0ZXIud3JpdGUgYnVmIH5wb3MgZGF0YVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlcl9tZXNzYWdlIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlOyB3cml0ZSA9IGJpbl93cml0ZV9tZXNzYWdlIH1cbiAgICA7O1xuXG4gICAgbGV0IGJpbl9zaXplX21lc3NhZ2VfYXNfc3RyaW5nICh0LCBfKSA9XG4gICAgICBiaW5fc2l6ZV9uYXQwX2hlYWRlciB0ICsgKHQuZGF0YV9sZW4gOiBOYXQwLnQgOj4gaW50KVxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlX21lc3NhZ2VfYXNfc3RyaW5nIGJ1ZiB+cG9zICh0LCBzdHIpID1cbiAgICAgIGxldCBwb3MgPSBiaW5fd3JpdGVfbmF0MF9oZWFkZXIgYnVmIH5wb3MgdCBpblxuICAgICAgYmluX3dyaXRlX3N0cmluZ19ub19sZW5ndGggYnVmIH5wb3Mgc3RyXG4gICAgOztcblxuICAgIGxldCBiaW5fd3JpdGVyX21lc3NhZ2VfYXNfc3RyaW5nIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlciA9XG4gICAgICB7IHNpemUgPSBiaW5fc2l6ZV9tZXNzYWdlX2FzX3N0cmluZzsgd3JpdGUgPSBiaW5fd3JpdGVfbWVzc2FnZV9hc19zdHJpbmcgfVxuICAgIDs7XG5cbiAgICAoKiBbd3JpdGVdIGFuZCBbd3JpdGVfc3RyaW5nXSBib3RoIGFsbG9jYXRlIDMgd29yZHMgZm9yIHRoZSB0dXBsZXMuIFt3cml0ZV9leHBlcnRdXG4gICAgICAgZG9lcyBub3QgYWxsb2NhdGUuICopXG4gICAgbGV0IHdyaXRlIHQgKFQgaW5zdGFuY2UpIGlkIGRhdGEgPVxuICAgICAgdC5kYXRhX2xlbiA8LSBOYXQwLm9mX2ludF9leG4gKHQuYmluX3dyaXRlci5zaXplIGRhdGEpO1xuICAgICAgd3JpdGVfbWVzc2FnZSBpbnN0YW5jZSB+aWQgYmluX3dyaXRlcl9tZXNzYWdlICh0LCBkYXRhKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfc3RyaW5nIHQgKFQgaW5zdGFuY2UpIGlkIHN0ciA9XG4gICAgICB0LmRhdGFfbGVuIDwtIE5hdDAub2ZfaW50X2V4biAoU3RyaW5nLmxlbmd0aCBzdHIpO1xuICAgICAgd3JpdGVfbWVzc2FnZSBpbnN0YW5jZSB+aWQgYmluX3dyaXRlcl9tZXNzYWdlX2FzX3N0cmluZyAodCwgc3RyKVxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfZXhwZXJ0IHQgKFQgaW5zdGFuY2UpIGlkIH5idWYgfnBvcyB+bGVuID1cbiAgICAgIHQuZGF0YV9sZW4gPC0gTmF0MC5vZl9pbnRfZXhuIGxlbjtcbiAgICAgIHdyaXRlX21lc3NhZ2VfZXhwZXJ0IGluc3RhbmNlIH5pZCBiaW5fd3JpdGVyX25hdDBfaGVhZGVyIHQgfmJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgRGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IEltcGxlbWVudGF0aW9uX3R5cGVzLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG4gICAgbW9kdWxlIFN0YXRlID0gVC5TdGF0ZVxuICAgIG1vZHVsZSBJZCA9IFQuSWRcblxuICAgIHR5cGUgJ2EgdCA9ICdhIFQudCA9XG4gICAgICB7IGlkIDogSWQudFxuICAgICAgOyBtdXRhYmxlIHN0YXRlIDogJ2EgU3RhdGUudFxuICAgICAgOyBjbG9zZWQgOiB1bml0IEl2YXIudFxuICAgICAgOyBpbnN0YW5jZSA6IEluc3RhbmNlLnRcbiAgICAgIDsgcXVlcnlfaWQgOiBQLlF1ZXJ5X2lkLnRcbiAgICAgIDsgc3RyZWFtX3dyaXRlciA6ICdhIENhY2hlZF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgIDsgZ3JvdXBzIDogJ2EgZ3JvdXBfZW50cnkgQmFnLnRcbiAgICAgIH1cblxuICAgIGFuZCAnYSBncm91cF9lbnRyeSA9ICdhIFQuZ3JvdXBfZW50cnkgPVxuICAgICAgeyBncm91cCA6ICdhIFQuR3JvdXAudFxuICAgICAgOyBlbGVtZW50X2luX2dyb3VwIDogJ2EgdCBCYWcuRWx0LnRcbiAgICAgIH1cblxuICAgIGxldCBpc19jbG9zZWQgdCA9IEl2YXIuaXNfZnVsbCB0LmNsb3NlZFxuICAgIGxldCBjbG9zZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlZFxuXG4gICAgbGV0IGZsdXNoZWQgdCA9XG4gICAgICBsZXQgKFQgaW5zdGFuY2UpID0gdC5pbnN0YW5jZSBpblxuICAgICAgVHJhbnNwb3J0LldyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlclxuICAgIDs7XG5cbiAgICBsZXQgYmluX3dyaXRlciB0ID0gdC5zdHJlYW1fd3JpdGVyLmJpbl93cml0ZXJcblxuICAgIGxldCB3cml0ZV9lb2YgeyBpbnN0YW5jZSA9IFQgaW5zdGFuY2U7IHF1ZXJ5X2lkOyBfIH0gPVxuICAgICAgd3JpdGVfcmVzcG9uc2UgaW5zdGFuY2UgcXVlcnlfaWQgUC5TdHJlYW1fcmVzcG9uc2VfZGF0YS5iaW5fd3JpdGVyX25hdDBfdCAoT2sgYEVvZilcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2UgeyBpbnN0YW5jZTsgc3RyZWFtX3dyaXRlcjsgcXVlcnlfaWQ7IF8gfSB4ID1cbiAgICAgIENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlIHN0cmVhbV93cml0ZXIgaW5zdGFuY2UgcXVlcnlfaWQgeFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfbWVzc2FnZV9zdHJpbmcgeyBpbnN0YW5jZTsgc3RyZWFtX3dyaXRlcjsgcXVlcnlfaWQ7IF8gfSB4ID1cbiAgICAgIENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlX3N0cmluZyBzdHJlYW1fd3JpdGVyIGluc3RhbmNlIHF1ZXJ5X2lkIHhcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX21lc3NhZ2VfZXhwZXJ0IHsgaW5zdGFuY2U7IHN0cmVhbV93cml0ZXI7IHF1ZXJ5X2lkOyBfIH0gfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgQ2FjaGVkX3N0cmVhbV93cml0ZXIud3JpdGVfZXhwZXJ0IHN0cmVhbV93cml0ZXIgaW5zdGFuY2UgcXVlcnlfaWQgfmJ1ZiB+cG9zIH5sZW5cbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB0ID1cbiAgICAgIGlmIG5vdCAoSXZhci5pc19mdWxsIHQuY2xvc2VkKVxuICAgICAgdGhlbiAoXG4gICAgICAgIEl2YXIuZmlsbCB0LmNsb3NlZCAoKTtcbiAgICAgICAgbGV0IGdyb3VwcyA9IHQuZ3JvdXBzIGluXG4gICAgICAgIGlmIG5vdCAoQmFnLmlzX2VtcHR5IGdyb3VwcylcbiAgICAgICAgdGhlblxuICAgICAgICAgIEFzeW5jX2tlcm5lbF9zY2hlZHVsZXIuUHJpdmF0ZS5WZXJ5X2xvd19wcmlvcml0eV93b3JrLmVucXVldWUgfmY6KGZ1biAoKSAtPlxuICAgICAgICAgICAgbWF0Y2ggQmFnLnJlbW92ZV9vbmUgZ3JvdXBzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBGaW5pc2hlZFxuICAgICAgICAgICAgfCBTb21lIHsgZ3JvdXA7IGVsZW1lbnRfaW5fZ3JvdXAgfSAtPlxuICAgICAgICAgICAgICBCYWcucmVtb3ZlIGdyb3VwLmNvbXBvbmVudHMgZWxlbWVudF9pbl9ncm91cDtcbiAgICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgZ3JvdXAuY29tcG9uZW50c19ieV9pZCB0LmlkO1xuICAgICAgICAgICAgICBOb3RfZmluaXNoZWQpO1xuICAgICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgfCBOb3Rfc3RhcnRlZCBfIC0+ICgpXG4gICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9lb2YgdClcbiAgICA7O1xuXG4gICAgbGV0IGNsb3NlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgcXVlcnlfaWQ7IF8gfSBhcyB0KSA9XG4gICAgICBjbG9zZV93aXRob3V0X3JlbW92aW5nX2Zyb21faW5zdGFuY2UgdDtcbiAgICAgIEhhc2h0YmwucmVtb3ZlIGluc3RhbmNlLm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBxdWVyeV9pZFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHggPVxuICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkXG4gICAgICB0aGVuIGBDbG9zZWRcbiAgICAgIGVsc2UgKFxuICAgICAgICAobWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICB8IE5vdF9zdGFydGVkIHEgLT4gUXVldWUuZW5xdWV1ZSBxIChOb3JtYWwgeClcbiAgICAgICAgIHwgU3RhcnRlZCAtPiB3cml0ZV9tZXNzYWdlIHQgeCk7XG4gICAgICAgIGBPaylcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgXyB9IGFzIHQpIHggPVxuICAgICAgbWF0Y2ggd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IHggd2l0aFxuICAgICAgfCBgQ2xvc2VkIC0+IGBDbG9zZWRcbiAgICAgIHwgYE9rIC0+IGBGbHVzaGVkIChXcml0ZXIuZmx1c2hlZCBpbnN0YW5jZS53cml0ZXIpXG4gICAgOztcblxuICAgIG1vZHVsZSBFeHBlcnQgPSBzdHJ1Y3RcbiAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICBpZiBJdmFyLmlzX2Z1bGwgdC5jbG9zZWRcbiAgICAgICAgdGhlbiBgQ2xvc2VkXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgfCBOb3Rfc3RhcnRlZCBxIC0+XG4gICAgICAgICAgICAgUXVldWUuZW5xdWV1ZSBxIChFeHBlcnQgKEJpZ3N0cmluZy5Ub19zdHJpbmcuc3ViIGJ1ZiB+cG9zIH5sZW4pKVxuICAgICAgICAgICB8IFN0YXJ0ZWQgLT4gd3JpdGVfbWVzc2FnZV9leHBlcnQgdCB+YnVmIH5wb3Mgfmxlbik7XG4gICAgICAgICAgYE9rKVxuICAgICAgOztcblxuICAgICAgbGV0IHdyaXRlICh7IGluc3RhbmNlID0gVCBpbnN0YW5jZTsgXyB9IGFzIHQpIH5idWYgfnBvcyB+bGVuID1cbiAgICAgICAgbWF0Y2ggd3JpdGVfd2l0aG91dF9wdXNoYmFjayB0IH5idWYgfnBvcyB+bGVuIHdpdGhcbiAgICAgICAgfCBgQ2xvc2VkIC0+IGBDbG9zZWRcbiAgICAgICAgfCBgT2sgLT4gYEZsdXNoZWQgKFdyaXRlci5mbHVzaGVkIGluc3RhbmNlLndyaXRlcilcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBsZXQgc3RhcnQgdCA9XG4gICAgICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgIHwgU3RhcnRlZCAtPiBmYWlsd2l0aCBcImF0dGVtcHRlZCB0byBzdGFydCB3cml0ZXIgd2hpY2ggd2FzIGFscmVhZHkgc3RhcnRlZFwiXG4gICAgICB8IE5vdF9zdGFydGVkIHEgLT5cbiAgICAgICAgdC5zdGF0ZSA8LSBTdGFydGVkO1xuICAgICAgICBRdWV1ZS5pdGVyIHEgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb3JtYWwgeCAtPiB3cml0ZV9tZXNzYWdlIHQgeFxuICAgICAgICAgIHwgRXhwZXJ0IHggLT4gd3JpdGVfbWVzc2FnZV9zdHJpbmcgdCB4KTtcbiAgICAgICAgaWYgSXZhci5pc19mdWxsIHQuY2xvc2VkIHRoZW4gd3JpdGVfZW9mIHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgbWF5YmVfZGlzcGF0Y2hfb25fZXhjZXB0aW9uXG4gICAgICAgIChyZXN1bHQgOiAoXywgUnBjX2Vycm9yLnQpIFJlc3VsdC50KVxuICAgICAgICBvbl9leGNlcHRpb25cbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgIHwgRXJyb3IgKFVuY2F1Z2h0X2V4biBzZXhwKSAtPlxuICAgICAgT25fZXhjZXB0aW9uLmhhbmRsZV9leG4gb25fZXhjZXB0aW9uIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgKEV4bi5jcmVhdGVfcyBzZXhwKVxuICAgIHwgRXJyb3IgXyB8IE9rIF8gLT4gKClcbiAgOztcblxuICBsZXQgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgdFxuICAgICAgICBpbXBsZW1lbnRhdGlvblxuICAgICAgICB+KHF1ZXJ5IDogTmF0MC50IFAuUXVlcnkudClcbiAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgICAgfm9uX2V4Y2VwdGlvblxuICAgIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICAgID1cbiAgICBsZXQgaWQgPSBxdWVyeS5pZCBpblxuICAgIG1hdGNoIGltcGxlbWVudGF0aW9uIHdpdGhcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuT25lX3dheSAoYmluX3F1ZXJ5X3JlYWRlciwgZikgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIG1lc3NhZ2UgdW4tYmluLWlvJ2luZ1wiXG4gICAgICBpblxuICAgICAgKG1hdGNoIHF1ZXJ5X2NvbnRlbnRzIHdpdGhcbiAgICAgICB8IEVycm9yIF8gYXMgZXJyIC0+IFN0b3AgZXJyXG4gICAgICAgfCBPayBxIC0+XG4gICAgICAgICAodHJ5XG4gICAgICAgICAgICBmIHQuY29ubmVjdGlvbl9zdGF0ZSBxO1xuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgICAgIGlmIG9uX2V4Y2VwdGlvbi5jbG9zZV9jb25uZWN0aW9uX2lmX25vX3JldHVybl92YWx1ZVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBTdG9wXG4gICAgICAgICAgICAgICAgKFJwY19yZXN1bHQudW5jYXVnaHRfZXhuXG4gICAgICAgICAgICAgICAgICAgZXhuXG4gICAgICAgICAgICAgICAgICAgfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgb25lLXdheSBycGMgY29tcHV0YXRpb25cIilcbiAgICAgICAgICAgIGVsc2UgQ29udGludWUpKVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5PbmVfd2F5X2V4cGVydCBmIC0+XG4gICAgICAodHJ5XG4gICAgICAgICBsZXQgbGVuID0gKHF1ZXJ5LmRhdGEgOj4gaW50KSBpblxuICAgICAgICAgZiB0LmNvbm5lY3Rpb25fc3RhdGUgcmVhZF9idWZmZXIgfnBvczohcmVhZF9idWZmZXJfcG9zX3JlZiB+bGVuO1xuICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgIENvbnRpbnVlXG4gICAgICAgd2l0aFxuICAgICAgIHwgZXhuIC0+XG4gICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4biBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvciBleG47XG4gICAgICAgICBpZiBvbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbl9pZl9ub19yZXR1cm5fdmFsdWVcbiAgICAgICAgIHRoZW5cbiAgICAgICAgICAgU3RvcFxuICAgICAgICAgICAgIChScGNfcmVzdWx0LnVuY2F1Z2h0X2V4blxuICAgICAgICAgICAgICAgIGV4blxuICAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIG9uZS13YXkgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiKVxuICAgICAgICAgZWxzZSBDb250aW51ZSlcbiAgICB8IEltcGxlbWVudGF0aW9uLkYuUnBjIChiaW5fcXVlcnlfcmVhZGVyLCBiaW5fcmVzcG9uc2Vfd3JpdGVyLCBmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCBxdWVyeV9jb250ZW50cyA9XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBxdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICAobWF0Y2ggcmVzdWx0X21vZGUgd2l0aFxuICAgICAgIHwgSW1wbGVtZW50YXRpb24uRi5CbG9ja2luZyAtPlxuICAgICAgICAgKHRyeVxuICAgICAgICAgICAgcXVlcnlfY29udGVudHNcbiAgICAgICAgICAgID4+fH4gZiB0LmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgIHw+IHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX3Jlc3BvbnNlX3dyaXRlclxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IGV4biAtPlxuICAgICAgICAgICAgKCogSW4gdGhlIFtEZWZlcnJlZF0gYnJhbmNoIHdlIHVzZSBbTW9uaXRvci50cnlfd2l0aF0sIHdoaWNoIGluY2x1ZGVzXG4gICAgICAgICAgICAgICBiYWNrdHJhY2VzIHdoZW4gaXQgY2F0Y2hlcyBhbiBleGNlcHRpb24uIEZvciBjb25zaXN0ZW5jeSwgd2UgYWxzbyBnZXRcbiAgICAgICAgICAgICAgIGJhY2t0cmFjZXMgaGVyZS4gKilcbiAgICAgICAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuRXhuLm1vc3RfcmVjZW50ICgpIGluXG4gICAgICAgICAgICBsZXQgc2V4cCA9XG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsgbG9jYXRpb24gPSBcInNlcnZlci1zaWRlIGJsb2NraW5nIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgICAgOyBleG4gOiBleG5cbiAgICAgICAgICAgICAgICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgKEVycm9yIChScGNfZXJyb3IuVW5jYXVnaHRfZXhuIHNleHApKTtcbiAgICAgICAgICAgIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bilcbiAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT5cbiAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgKCogV2UgZ2VuZXJhbGx5IHRyeSB0byB3cml0ZSBhIHJlc3BvbnNlIGJlZm9yZSBoYW5kbGluZyBbb25fZXhjZXB0aW9uXSBzbyBpZiB3ZVxuICAgICAgICAgICAgICBhcmUgY2xvc2luZyB0aGUgY29ubmVjdGlvbiB3ZSBzdGlsbCBhY3R1YWxseSBzZW5kIHRoZSByZXNwb25zZSBiYWNrLiBXaGVuIHdlXG4gICAgICAgICAgICAgIHBhc3MgW29uX2V4Y2VwdGlvbi5jYWxsYmFja10gaGVyZSwgd2UgYXJlIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgcmFpc2VkXG4gICAgICAgICAgICAgIGV4Y2VwdGlvbnMgbm90IHRvIGJlIHdyaXR0ZW4gYmFjayB0byB0aGUgY2xpZW50IChlLmcuIGlmIHRoZSBpbXBsZW1lbnRhdGlvblxuICAgICAgICAgICAgICByYWlzZXMgYm90aCBhc3luY2hyb25vdXNseSBhbmQgc3luY2hyb25vdXNseSkuIFRoaXMgd291bGQgYmUgaGFyZCB0byBoYW5kbGVcbiAgICAgICAgICAgICAgaW4gYSBtb3JlIHByaW5jaXBsZWQgd2F5LiAqKVxuICAgICAgICAgICBScGNfcmVzdWx0LnRyeV93aXRoXG4gICAgICAgICAgICAgP29uX2JhY2tncm91bmRfZXhjZXB0aW9uOm9uX2V4Y2VwdGlvbi5jYWxsYmFja1xuICAgICAgICAgICAgIH5ydW46YE5vd1xuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHJwYyBjb21wdXRhdGlvblwiXG4gICAgICAgICAgICAgKGZ1biAoKSAtPiBkZWZlcl9yZXN1bHQgKHF1ZXJ5X2NvbnRlbnRzID4+fH4gZiB0LmNvbm5lY3Rpb25fc3RhdGUpKVxuICAgICAgICAgaW5cbiAgICAgICAgICgqIEluIHRoZSBjb21tb24gY2FzZSB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGEgdmFsdWUgaW1tZWRpYXRlbHksIHdlIHdpbGxcbiAgICAgICAgICAgIHdyaXRlIHRoZSByZXNwb25zZSBpbW1lZGlhdGVseSBhcyB3ZWxsICh0aGlzIGlzIGFsc28gd2h5IHRoZSBhYm92ZSBbdHJ5X3dpdGhdXG4gICAgICAgICAgICBoYXMgW35ydW46YE5vd10pLiAgVGhpcyBjYW4gYmUgYSBiaWcgcGVyZm9ybWFuY2Ugd2luIGZvciBzZXJ2ZXJzIHRoYXQgZ2V0IG1hbnlcbiAgICAgICAgICAgIHF1ZXJpZXMgaW4gYSBzaW5nbGUgQXN5bmMgY3ljbGUuICopXG4gICAgICAgICAobWF0Y2ggRGVmZXJyZWQucGVlayBkYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgID4+PiBmdW4gZGF0YSAtPlxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fcmVzcG9uc2Vfd3JpdGVyIGRhdGE7XG4gICAgICAgICAgICBtYXliZV9kaXNwYXRjaF9vbl9leGNlcHRpb24gZGF0YSBvbl9leGNlcHRpb24gfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9yZXNwb25zZV93cml0ZXIgZGF0YTtcbiAgICAgICAgICAgIG1heWJlX2Rpc3BhdGNoX29uX2V4Y2VwdGlvbiBkYXRhIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yKSk7XG4gICAgICBDb250aW51ZVxuICAgIHwgSW1wbGVtZW50YXRpb24uRi5ScGNfZXhwZXJ0IChmLCByZXN1bHRfbW9kZSkgLT5cbiAgICAgIGxldCByZXNwb25kZXIgPSBJbXBsZW1lbnRhdGlvbi5FeHBlcnQuUmVzcG9uZGVyLmNyZWF0ZSBxdWVyeS5pZCB0LndyaXRlciBpblxuICAgICAgbGV0IGQgPVxuICAgICAgICAoKiBXZSBuZWVkIHRoZSBbTW9uaXRvci50cnlfd2l0aF0gZXZlbiBmb3IgdGhlIGJsb2NraW5nIG1vZGUgYXMgdGhlIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgIG1pZ2h0IHJldHVybiBbRGVsYXllZF9yZXBvbnNlXSwgc28gd2UgZG9uJ3QgYm90aGVyIG9wdGltaXppbmcgdGhlIGJsb2NraW5nXG4gICAgICAgICAgIG1vZGUuICopXG4gICAgICAgIGxldCByZXN0ID1cbiAgICAgICAgICBtYXRjaCBvbl9leGNlcHRpb24uY2FsbGJhY2sgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgYExvZ1xuICAgICAgICAgIHwgU29tZSBjYWxsYmFjayAtPiBgQ2FsbCBjYWxsYmFja1xuICAgICAgICBpblxuICAgICAgICBNb25pdG9yLnRyeV93aXRoIH5yZXN0IH5ydW46YE5vdyAoZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IChxdWVyeS5kYXRhIDo+IGludCkgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICAgIGYgdC5jb25uZWN0aW9uX3N0YXRlIHJlc3BvbmRlciByZWFkX2J1ZmZlciB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmIH5sZW5cbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHJlc3VsdF9tb2RlIHdpdGhcbiAgICAgICAgICB8IEltcGxlbWVudGF0aW9uLkYuRGVmZXJyZWQgLT4gcmVzdWx0XG4gICAgICAgICAgfCBJbXBsZW1lbnRhdGlvbi5GLkJsb2NraW5nIC0+IERlZmVycmVkLnJldHVybiByZXN1bHQpXG4gICAgICBpblxuICAgICAgbGV0IGhhbmRsZV9leG4gfmlzX3VuY2F1Z2h0X2V4biBleG4gPVxuICAgICAgICBsZXQgcmVzdWx0ID1cbiAgICAgICAgICBScGNfcmVzdWx0LnVuY2F1Z2h0X2V4biBleG4gfmxvY2F0aW9uOlwic2VydmVyLXNpZGUgcnBjIGV4cGVydCBjb21wdXRhdGlvblwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICAgIGlmIHJlc3BvbmRlci5yZXNwb25kZWRcbiAgICAgICAgICB0aGVuIHJlc3VsdFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5fd3JpdGVyX3VuaXQgcmVzdWx0O1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICAgIGluXG4gICAgICAgIGlmIGlzX3VuY2F1Z2h0X2V4blxuICAgICAgICB0aGVuIE9uX2V4Y2VwdGlvbi5oYW5kbGVfZXhuIG9uX2V4Y2VwdGlvbiB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIGV4bjtcbiAgICAgICAgcmVzdWx0XG4gICAgICBpblxuICAgICAgbGV0IGNoZWNrX3Jlc3BvbmRlZCAoKSA9XG4gICAgICAgIGlmIHJlc3BvbmRlci5yZXNwb25kZWRcbiAgICAgICAgdGhlbiBPayAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaGFuZGxlX2V4blxuICAgICAgICAgICAgfmlzX3VuY2F1Z2h0X2V4bjpmYWxzZVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJFeHBlcnQgaW1wbGVtZW50YXRpb24gZGlkIG5vdCByZXBseVwiKVxuICAgICAgaW5cbiAgICAgIGxldCBkID1cbiAgICAgICAgbGV0IG9wZW4gRGVmZXJyZWRfaW1tZWRpYXRlLkxldF9zeW50YXggaW5cbiAgICAgICAgbWF0Y2glbWFwIGQgd2l0aFxuICAgICAgICB8IE9rIHJlc3VsdCAtPlxuICAgICAgICAgIGxldCBkID1cbiAgICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgICB8IFJlcGxpZWQgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgfCBEZWxheWVkX3Jlc3BvbnNlIGQgLT4gZFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgRGVmZXJyZWQuaXNfZGV0ZXJtaW5lZCBkXG4gICAgICAgICAgdGhlbiBjaGVja19yZXNwb25kZWQgKClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIHVwb24gZCAoZnVuICgpIC0+XG4gICAgICAgICAgICAgIGNoZWNrX3Jlc3BvbmRlZCAoKVxuICAgICAgICAgICAgICB8PiBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgcXVlcnkudGFnOyB2ZXJzaW9uID0gcXVlcnkudmVyc2lvbiB9XG4gICAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246dC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDp0LmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgICAgICAgICB8PiBva19leG4pO1xuICAgICAgICAgICAgT2sgKCkpXG4gICAgICAgIHwgRXJyb3IgZXhuIC0+IGhhbmRsZV9leG4gfmlzX3VuY2F1Z2h0X2V4bjp0cnVlIGV4blxuICAgICAgaW5cbiAgICAgIChtYXRjaCBEZWZlcnJlZC5wZWVrIGQgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgV2FpdFxuICAgICAgICAgICAobGV0JW1hcCByID0gZCBpblxuICAgICAgICAgICAgb2tfZXhuXG4gICAgICAgICAgICAgIChScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgICAgICAgIH5ycGNfZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICAgICAgICAgICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246dC5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6dC5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWRcbiAgICAgICAgICAgICAgICAgcikpXG4gICAgICAgfCBTb21lIHJlc3VsdCAtPlxuICAgICAgICAgKG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBPayAoKSAtPiBDb250aW51ZVxuICAgICAgICAgIHwgRXJyb3IgXyAtPiBTdG9wIHJlc3VsdCkpXG4gICAgfCBJbXBsZW1lbnRhdGlvbi5GLlN0cmVhbWluZ19ycGNcbiAgICAgICAgKGJpbl9xdWVyeV9yZWFkZXIsIGJpbl9pbml0X3dyaXRlciwgYmluX3VwZGF0ZV93cml0ZXIsIGltcGwpIC0+XG4gICAgICBsZXQgc3RyZWFtX3F1ZXJ5ID1cbiAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fcmVhZGVyX25hdDBfdFxuICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgIH5sZW46cXVlcnkuZGF0YVxuICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHBpcGVfcnBjIHN0cmVhbV9xdWVyeSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICB+YWRkX2xlbjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYEFib3J0IC0+IDBcbiAgICAgICAgICAgIHwgYFF1ZXJ5IChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgIGluXG4gICAgICAobWF0Y2ggc3RyZWFtX3F1ZXJ5IHdpdGhcbiAgICAgICB8IEVycm9yIF9lcnIgLT4gKClcbiAgICAgICB8IE9rIGBBYm9ydCAtPlxuICAgICAgICAgKCogTm90ZSB0aGF0IHRoZXJlJ3Mgc29tZSBkZWxheSBiZXR3ZWVuIHdoZW4gd2UgcmVjZWl2ZSBhIHBpcGUgUlBDIHF1ZXJ5IGFuZFxuICAgICAgICAgICAgd2hlbiB3ZSBwdXQgc29tZXRoaW5nIGluIFtvcGVuX3N0cmVhbWluZ19yZXNwb25zZXNdICh3ZSB3YWl0IGZvclxuICAgICAgICAgICAgYSB1c2VyLXN1cHBsaWVkIGZ1bmN0aW9uIHRvIHJldHVybikuIER1cmluZyB0aGlzIHRpbWUsIGFuIGFib3J0IG1lc3NhZ2Ugd291bGRcbiAgICAgICAgICAgIGp1c3QgYmUgaWdub3JlZC4gVGhlIGRpc3BhdGNoZXIgY2FuJ3QgYWJvcnQgdGhlIHF1ZXJ5IHdoaWxlIHRoaXMgaXNcbiAgICAgICAgICAgIGhhcHBlbmluZywgdGhvdWdoLCBzaW5jZSB0aGUgaW50ZXJmYWNlIGRvZXNuJ3QgZXhwb3NlIHRoZSBJRCByZXF1aXJlZCB0b1xuICAgICAgICAgICAgYWJvcnQgdGhlIHF1ZXJ5IHVudGlsIGFmdGVyIGEgcmVzcG9uc2UgaGFzIGJlZW4gcmV0dXJuZWQuICopXG4gICAgICAgICBPcHRpb24uaXRlciAoSGFzaHRibC5maW5kIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIHF1ZXJ5LmlkKSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgfCBQaXBlIHBpcGUgLT4gUGlwZS5jbG9zZV9yZWFkIHBpcGVcbiAgICAgICAgICAgfCBEaXJlY3QgdyAtPiBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3KVxuICAgICAgIHwgT2sgKGBRdWVyeSBsZW4pIC0+XG4gICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgICAgYmluX3F1ZXJ5X3JlYWRlclxuICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgfnBvc19yZWY6cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICB+bG9jYXRpb246XCJzdHJlYW1pbmdfcnBjIHNlcnZlci1zaWRlIHF1ZXJ5IHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBzdHJlYW1fd3JpdGVyID1cbiAgICAgICAgICAgQ2FjaGVkX3N0cmVhbV93cml0ZXIuY3JlYXRlIH5pZCB+YmluX3dyaXRlcjpiaW5fdXBkYXRlX3dyaXRlclxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBpbXBsX3dpdGhfc3RhdGUgPVxuICAgICAgICAgICBtYXRjaCBpbXBsIHdpdGhcbiAgICAgICAgICAgfCBQaXBlIGYgLT4gYFBpcGUgZlxuICAgICAgICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgICAgICAgbGV0IHdyaXRlciA6IF8gRGlyZWN0X3N0cmVhbV93cml0ZXIudCA9XG4gICAgICAgICAgICAgICB7IGlkID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuSWQuY3JlYXRlICgpXG4gICAgICAgICAgICAgICA7IHN0YXRlID0gTm90X3N0YXJ0ZWQgKFF1ZXVlLmNyZWF0ZSAoKSlcbiAgICAgICAgICAgICAgIDsgY2xvc2VkID0gSXZhci5jcmVhdGUgKClcbiAgICAgICAgICAgICAgIDsgaW5zdGFuY2UgPSB0LnBhY2tlZF9zZWxmXG4gICAgICAgICAgICAgICA7IHF1ZXJ5X2lkID0gaWRcbiAgICAgICAgICAgICAgIDsgZ3JvdXBzID0gQmFnLmNyZWF0ZSAoKVxuICAgICAgICAgICAgICAgOyBzdHJlYW1fd3JpdGVyXG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBIYXNodGJsLnNldCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+a2V5OnF1ZXJ5LmlkIH5kYXRhOihEaXJlY3Qgd3JpdGVyKTtcbiAgICAgICAgICAgICBgRGlyZWN0IChmLCB3cml0ZXIpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IHJ1bl9pbXBsIGltcGwgc3BsaXRfb2sgaGFuZGxlX29rID1cbiAgICAgICAgICAgUnBjX3Jlc3VsdC50cnlfd2l0aFxuICAgICAgICAgICAgID9vbl9iYWNrZ3JvdW5kX2V4Y2VwdGlvbjpvbl9leGNlcHRpb24uY2FsbGJhY2tcbiAgICAgICAgICAgICAoZnVuICgpIC0+IGRlZmVyX3Jlc3VsdCAoZGF0YSA+Pnx+IGltcGwpKVxuICAgICAgICAgICAgIH5sb2NhdGlvbjpcInNlcnZlci1zaWRlIHBpcGVfcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAgPj4+IGZ1bmN0aW9uXG4gICAgICAgICAgIHwgRXJyb3IgKFVuY2F1Z2h0X2V4biBzZXhwIGFzIGVycikgLT5cbiAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZDtcbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoRXJyb3IgZXJyKTtcbiAgICAgICAgICAgICBPbl9leGNlcHRpb24uaGFuZGxlX2V4blxuICAgICAgICAgICAgICAgb25fZXhjZXB0aW9uXG4gICAgICAgICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgICAgICAgICAoRXhuLmNyZWF0ZV9zIHNleHApXG4gICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgaWQ7XG4gICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBiaW5faW5pdF93cml0ZXIgKEVycm9yIGVycilcbiAgICAgICAgICAgfCBPayAoRXJyb3IgZXJyKSAtPlxuICAgICAgICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzIGlkO1xuICAgICAgICAgICAgIHdyaXRlX3Jlc3BvbnNlIHQgaWQgYmluX2luaXRfd3JpdGVyIChPayBlcnIpXG4gICAgICAgICAgIHwgT2sgKE9rIG9rKSAtPlxuICAgICAgICAgICAgIGxldCBpbml0aWFsLCByZXN0ID0gc3BsaXRfb2sgb2sgaW5cbiAgICAgICAgICAgICB3cml0ZV9yZXNwb25zZSB0IGlkIGJpbl9pbml0X3dyaXRlciAoT2sgaW5pdGlhbCk7XG4gICAgICAgICAgICAgaGFuZGxlX29rIHJlc3RcbiAgICAgICAgIGluXG4gICAgICAgICAobWF0Y2ggaW1wbF93aXRoX3N0YXRlIHdpdGhcbiAgICAgICAgICB8IGBQaXBlIGYgLT5cbiAgICAgICAgICAgIHJ1bl9pbXBsXG4gICAgICAgICAgICAgIChmdW4gZGF0YSAtPiBmIHQuY29ubmVjdGlvbl9zdGF0ZSBkYXRhKVxuICAgICAgICAgICAgICBGbi5pZFxuICAgICAgICAgICAgICAoZnVuIHBpcGVfciAtPlxuICAgICAgICAgICAgICAgICBIYXNodGJsLnNldCB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+a2V5OmlkIH5kYXRhOihQaXBlIHBpcGVfcik7XG4gICAgICAgICAgICAgICAgIGRvbid0X3dhaXRfZm9yXG4gICAgICAgICAgICAgICAgICAgKFdyaXRlci50cmFuc2ZlclxuICAgICAgICAgICAgICAgICAgICAgIHQud3JpdGVyXG4gICAgICAgICAgICAgICAgICAgICAgcGlwZV9yXG4gICAgICAgICAgICAgICAgICAgICAgKENhY2hlZF9zdHJlYW1fd3JpdGVyLndyaXRlIHN0cmVhbV93cml0ZXIgdC5wYWNrZWRfc2VsZiBpZCkpO1xuICAgICAgICAgICAgICAgICBQaXBlLmNsb3NlZCBwaXBlX3JcbiAgICAgICAgICAgICAgICAgPj4+IGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBQaXBlLnVwc3RyZWFtX2ZsdXNoZWQgcGlwZV9yXG4gICAgICAgICAgICAgICAgID4+PiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IGBPayB8IGBSZWFkZXJfY2xvc2VkIC0+XG4gICAgICAgICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBpZCBQLlN0cmVhbV9yZXNwb25zZV9kYXRhLmJpbl93cml0ZXJfbmF0MF90IChPayBgRW9mKTtcbiAgICAgICAgICAgICAgICAgICBIYXNodGJsLnJlbW92ZSB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyBpZClcbiAgICAgICAgICB8IGBEaXJlY3QgKGYsIHdyaXRlcikgLT5cbiAgICAgICAgICAgIHJ1bl9pbXBsXG4gICAgICAgICAgICAgIChmdW4gZGF0YSAtPiBmIHQuY29ubmVjdGlvbl9zdGF0ZSBkYXRhIHdyaXRlcilcbiAgICAgICAgICAgICAgKGZ1biB4IC0+IHgsICgpKVxuICAgICAgICAgICAgICAoZnVuICgpIC0+IERpcmVjdF9zdHJlYW1fd3JpdGVyLnN0YXJ0IHdyaXRlcikpKTtcbiAgICAgIENvbnRpbnVlXG4gIDs7XG5cbiAgbGV0IGZsdXNoIChUIHQpID1cbiAgICBhc3NlcnQgKG5vdCB0LnN0b3BwZWQpO1xuICAgIGxldCBwcm9kdWNlcnNfZmx1c2hlZCA9XG4gICAgICBIYXNodGJsLmZvbGQgdC5vcGVuX3N0cmVhbWluZ19yZXNwb25zZXMgfmluaXQ6W10gfmY6KGZ1biB+a2V5Ol8gfmRhdGEgYWNjIC0+XG4gICAgICAgIG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICB8IERpcmVjdCBfIC0+IGFjY1xuICAgICAgICB8IFBpcGUgcGlwZSAtPiBEZWZlcnJlZC5pZ25vcmVfbSAoUGlwZS51cHN0cmVhbV9mbHVzaGVkIHBpcGUpIDo6IGFjYylcbiAgICBpblxuICAgIERlZmVycmVkLmFsbF91bml0IHByb2R1Y2Vyc19mbHVzaGVkXG4gIDs7XG5cbiAgbGV0IHN0b3AgKFQgdCkgPVxuICAgIHQuc3RvcHBlZCA8LSB0cnVlO1xuICAgIEhhc2h0YmwuaXRlciB0Lm9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyB+ZjooZnVuY3Rpb25cbiAgICAgIHwgRGlyZWN0IHdyaXRlciAtPlxuICAgICAgICAoKiBEb24ndCByZW1vdmUgdGhlIHdyaXRlciBmcm9tIHRoZSBpbnN0YW5jZSwgYXMgdGhhdCB3b3VsZCBtb2RpZnkgdGhlIGhhc2h0YWJsZVxuICAgICAgICAgICB0aGF0IHdlIGFyZSBjdXJyZW50bHkgaXRlcmF0aW5nIG92ZXIuICopXG4gICAgICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLmNsb3NlX3dpdGhvdXRfcmVtb3ZpbmdfZnJvbV9pbnN0YW5jZSB3cml0ZXJcbiAgICAgIHwgUGlwZSBfIC0+ICgpKTtcbiAgICBIYXNodGJsLmNsZWFyIHQub3Blbl9zdHJlYW1pbmdfcmVzcG9uc2VzXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV91bmtub3duX3JwYyBvbl91bmtub3duX3JwYyBlcnJvciB0IHF1ZXJ5IDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudCA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgYENvbnRpbnVlIC0+IENvbnRpbnVlXG4gICAgfCBgUmFpc2UgLT4gUnBjX2Vycm9yLnJhaXNlIGVycm9yIHQuY29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgIHwgYENsb3NlX2Nvbm5lY3Rpb24gLT4gU3RvcCAoT2sgKCkpXG4gICAgfCBgQ2FsbCBmIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGZcbiAgICAgICAgICAgdC5jb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgIH5ycGNfdGFnOihQLlJwY190YWcudG9fc3RyaW5nIHF1ZXJ5LlAuUXVlcnkudGFnKVxuICAgICAgICAgICB+dmVyc2lvbjpxdWVyeS52ZXJzaW9uXG4gICAgICAgd2l0aFxuICAgICAgIHwgYENsb3NlX2Nvbm5lY3Rpb24gLT4gU3RvcCAoT2sgKCkpXG4gICAgICAgfCBgQ29udGludWUgLT4gQ29udGludWUpXG4gIDs7XG5cbiAgbGV0IGhhbmRsZV9xdWVyeV9pbnRlcm5hbFxuICAgICAgICB0XG4gICAgICAgIH4ocXVlcnkgOiBOYXQwLnQgUC5RdWVyeS50KVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBsZXQgeyBpbXBsZW1lbnRhdGlvbnM7IG9uX3Vua25vd25fcnBjIH0gPSB0LmltcGxlbWVudGF0aW9ucyBpblxuICAgIGxldCBkZXNjcmlwdGlvbiA6IERlc2NyaXB0aW9uLnQgPVxuICAgICAgeyBuYW1lID0gUC5ScGNfdGFnLnRvX3N0cmluZyBxdWVyeS50YWc7IHZlcnNpb24gPSBxdWVyeS52ZXJzaW9uIH1cbiAgICBpblxuICAgIG1hdGNoIHQubGFzdF9kaXNwYXRjaGVkX2ltcGxlbWVudGF0aW9uIHdpdGhcbiAgICB8IFNvbWUgKGxhc3RfZGVzYywgaW1wbGVtZW50YXRpb24pIHdoZW4gRGVzY3JpcHRpb24uZXF1YWwgbGFzdF9kZXNjIGRlc2NyaXB0aW9uIC0+XG4gICAgICBhcHBseV9pbXBsZW1lbnRhdGlvblxuICAgICAgICB0XG4gICAgICAgIGltcGxlbWVudGF0aW9uLmZcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5yZWFkX2J1ZmZlclxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgICB+Y2xvc2VfY29ubmVjdGlvbl9tb25pdG9yXG4gICAgICAgIH5vbl9leGNlcHRpb246aW1wbGVtZW50YXRpb24ub25fZXhjZXB0aW9uXG4gICAgfCBOb25lIHwgU29tZSBfIC0+XG4gICAgICAobWF0Y2ggSGFzaHRibC5maW5kIGltcGxlbWVudGF0aW9ucyBkZXNjcmlwdGlvbiB3aXRoXG4gICAgICAgfCBTb21lIGltcGxlbWVudGF0aW9uIC0+XG4gICAgICAgICB0Lmxhc3RfZGlzcGF0Y2hlZF9pbXBsZW1lbnRhdGlvbiA8LSBTb21lIChkZXNjcmlwdGlvbiwgaW1wbGVtZW50YXRpb24pO1xuICAgICAgICAgYXBwbHlfaW1wbGVtZW50YXRpb25cbiAgICAgICAgICAgdFxuICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi5mXG4gICAgICAgICAgIH5vbl9leGNlcHRpb246aW1wbGVtZW50YXRpb24ub25fZXhjZXB0aW9uXG4gICAgICAgICAgIH5xdWVyeVxuICAgICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgKG1hdGNoIG9uX3Vua25vd25fcnBjIHdpdGhcbiAgICAgICAgICB8IGBFeHBlcnQgaW1wbCAtPlxuICAgICAgICAgICAgbGV0IHsgUC5RdWVyeS50YWc7IHZlcnNpb247IGlkOyBkYXRhID0gbGVuIH0gPSBxdWVyeSBpblxuICAgICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgICBsZXQgcmVzcG9uZGVyID0gUmVzcG9uZGVyLmNyZWF0ZSBpZCB0LndyaXRlciBpblxuICAgICAgICAgICAgICBpbXBsXG4gICAgICAgICAgICAgICAgdC5jb25uZWN0aW9uX3N0YXRlXG4gICAgICAgICAgICAgICAgfnJwY190YWc6KFAuUnBjX3RhZy50b19zdHJpbmcgdGFnKVxuICAgICAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICAgICAgcmVzcG9uZGVyXG4gICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgICB+cG9zOiFyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICAgfmxlbjoobGVuIDo+IGludClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBEZWZlcnJlZC5pc19kZXRlcm1pbmVkIGQgdGhlbiBDb250aW51ZSBlbHNlIFdhaXQgZFxuICAgICAgICAgIHwgKGBDb250aW51ZSB8IGBSYWlzZSB8IGBDbG9zZV9jb25uZWN0aW9uIHwgYENhbGwgXykgYXMgb25fdW5rbm93bl9ycGMgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciA9IFJwY19lcnJvci5VbmltcGxlbWVudGVkX3JwYyAocXVlcnkudGFnLCBgVmVyc2lvbiBxdWVyeS52ZXJzaW9uKSBpblxuICAgICAgICAgICAgd3JpdGVfcmVzcG9uc2UgdCBxdWVyeS5pZCBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgKEVycm9yIGVycm9yKTtcbiAgICAgICAgICAgIGhhbmRsZV91bmtub3duX3JwYyBvbl91bmtub3duX3JwYyBlcnJvciB0IHF1ZXJ5KSlcbiAgOztcblxuICBsZXQgaGFuZGxlX3F1ZXJ5XG4gICAgICAgIChUIHQpXG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICAgID1cbiAgICBpZiB0LnN0b3BwZWQgfHwgV3JpdGVyLmlzX2Nsb3NlZCB0LndyaXRlclxuICAgIHRoZW4gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LlN0b3AgKE9rICgpKVxuICAgIGVsc2VcbiAgICAgIGhhbmRsZV9xdWVyeV9pbnRlcm5hbFxuICAgICAgICB0XG4gICAgICAgIH5xdWVyeVxuICAgICAgICB+cmVhZF9idWZmZXJcbiAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICA7O1xuZW5kXG5cbm1vZHVsZSBEaXJlY3Rfc3RyZWFtX3dyaXRlciA9IEluc3RhbmNlLkRpcmVjdF9zdHJlYW1fd3JpdGVyXG5cbmxldCBjcmVhdGUgfmltcGxlbWVudGF0aW9uczppJ3Mgfm9uX3Vua25vd25fcnBjID1cbiAgKCogTWFrZSBzdXJlIHRoZSB0YWdzIGFyZSB1bmlxdWUuICopXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBEZXNjcmlwdGlvbi5UYWJsZS5jcmVhdGUgfnNpemU6MTAgKCkgaW5cbiAgbGV0IGR1cHMgPSBEZXNjcmlwdGlvbi5IYXNoX3NldC5jcmVhdGUgfnNpemU6MTAgKCkgaW5cbiAgTGlzdC5pdGVyIGkncyB+ZjooZnVuIChpIDogXyBJbXBsZW1lbnRhdGlvbi50KSAtPlxuICAgIGxldCBkZXNjcmlwdGlvbiA9XG4gICAgICB7IERlc2NyaXB0aW9uLm5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIGkudGFnOyB2ZXJzaW9uID0gaS52ZXJzaW9uIH1cbiAgICBpblxuICAgIG1hdGNoIEhhc2h0YmwuYWRkIGltcGxlbWVudGF0aW9ucyB+a2V5OmRlc2NyaXB0aW9uIH5kYXRhOmkgd2l0aFxuICAgIHwgYE9rIC0+ICgpXG4gICAgfCBgRHVwbGljYXRlIC0+IEhhc2hfc2V0LmFkZCBkdXBzIGRlc2NyaXB0aW9uKTtcbiAgaWYgbm90IChIYXNoX3NldC5pc19lbXB0eSBkdXBzKVxuICB0aGVuIEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyAoSGFzaF9zZXQudG9fbGlzdCBkdXBzKSlcbiAgZWxzZVxuICAgIE9rXG4gICAgICB7IGltcGxlbWVudGF0aW9uc1xuICAgICAgOyBvbl91bmtub3duX3JwYyA9IChvbl91bmtub3duX3JwYyA6PiBfIG9uX3Vua25vd25fcnBjX3dpdGhfZXhwZXJ0KVxuICAgICAgfVxuOztcblxubGV0IGluc3RhbnRpYXRlXG4gICAgICB0XG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvblxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgICAgfmNvbm5lY3Rpb25fc3RhdGVcbiAgICAgIH53cml0ZXJcbiAgPVxuICBsZXQgcmVjIHVucGFja2VkIDogXyBJbnN0YW5jZS51bnBhY2tlZCA9XG4gICAgeyBpbXBsZW1lbnRhdGlvbnMgPSB0XG4gICAgOyB3cml0ZXJcbiAgICA7IG9wZW5fc3RyZWFtaW5nX3Jlc3BvbnNlcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNvbm5lY3Rpb25fc3RhdGVcbiAgICA7IGNvbm5lY3Rpb25fZGVzY3JpcHRpb25cbiAgICA7IGNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZFxuICAgIDsgc3RvcHBlZCA9IGZhbHNlXG4gICAgOyBsYXN0X2Rpc3BhdGNoZWRfaW1wbGVtZW50YXRpb24gPSBOb25lXG4gICAgOyBwYWNrZWRfc2VsZiA9IEluc3RhbmNlLlQgdW5wYWNrZWRcbiAgICB9XG4gIGluXG4gIHVucGFja2VkLnBhY2tlZF9zZWxmXG47O1xuXG5leGNlcHRpb24gRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBvZiBEZXNjcmlwdGlvbi50IGxpc3QgW0BAZGVyaXZpbmcgc2V4cF1cblxubGV0IGNyZWF0ZV9leG4gfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgPVxuICBtYXRjaCBjcmVhdGUgfmltcGxlbWVudGF0aW9ucyB+b25fdW5rbm93bl9ycGMgd2l0aFxuICB8IE9rIHggLT4geFxuICB8IEVycm9yIChgRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBkdXBzKVxuOztcblxubGV0IG51bGwgKCkgPSBjcmVhdGVfZXhuIH5pbXBsZW1lbnRhdGlvbnM6W10gfm9uX3Vua25vd25fcnBjOmBSYWlzZVxuXG5sZXQgYWRkX2V4biB0IChpbXBsZW1lbnRhdGlvbiA6IF8gSW1wbGVtZW50YXRpb24udCkgPVxuICBsZXQgZGVzYyA6IERlc2NyaXB0aW9uLnQgPVxuICAgIHsgbmFtZSA9IFAuUnBjX3RhZy50b19zdHJpbmcgaW1wbGVtZW50YXRpb24udGFnOyB2ZXJzaW9uID0gaW1wbGVtZW50YXRpb24udmVyc2lvbiB9XG4gIGluXG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLmNvcHkgdC5pbXBsZW1lbnRhdGlvbnMgaW5cbiAgbWF0Y2ggSGFzaHRibC5hZGQgaW1wbGVtZW50YXRpb25zIH5rZXk6ZGVzYyB+ZGF0YTppbXBsZW1lbnRhdGlvbiB3aXRoXG4gIHwgYER1cGxpY2F0ZSAtPiByYWlzZSAoRHVwbGljYXRlX2ltcGxlbWVudGF0aW9ucyBbIGRlc2MgXSlcbiAgfCBgT2sgLT4geyB0IHdpdGggaW1wbGVtZW50YXRpb25zIH1cbjs7XG5cbmxldCBhZGQgdCBpbXBsZW1lbnRhdGlvbiA9IE9yX2Vycm9yLnRyeV93aXRoIChmdW4gKCkgLT4gYWRkX2V4biB0IGltcGxlbWVudGF0aW9uKVxuXG5sZXQgbGlmdCB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfSB+ZiA9XG4gIGxldCBpbXBsZW1lbnRhdGlvbnMgPSBIYXNodGJsLm1hcCBpbXBsZW1lbnRhdGlvbnMgfmY6KEltcGxlbWVudGF0aW9uLmxpZnQgfmYpIGluXG4gIGxldCBvbl91bmtub3duX3JwYyA9XG4gICAgbWF0Y2ggb25fdW5rbm93bl9ycGMgd2l0aFxuICAgIHwgKGBSYWlzZSB8IGBDb250aW51ZSB8IGBDbG9zZV9jb25uZWN0aW9uKSBhcyB4IC0+IHhcbiAgICB8IGBDYWxsIGNhbGwgLT4gYENhbGwgKGZ1biBzdGF0ZSAtPiBjYWxsIChmIHN0YXRlKSlcbiAgICB8IGBFeHBlcnQgZXhwZXJ0IC0+IGBFeHBlcnQgKGZ1biBzdGF0ZSAtPiBleHBlcnQgKGYgc3RhdGUpKVxuICBpblxuICB7IGltcGxlbWVudGF0aW9uczsgb25fdW5rbm93bl9ycGMgfVxuOztcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBtb2R1bGUgUmVzcG9uZGVyID0gUmVzcG9uZGVyXG5cbiAgbW9kdWxlIFJwY19yZXNwb25kZXIgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBSZXNwb25kZXIudFxuXG4gICAgbGV0IGNhbm5vdF9zZW5kIHIgPVxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICAgclxuICAgICAgICBbJXNleHBfb2Y6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnRdXG4gICAgOztcblxuICAgIGxldCBtYXJrX3Jlc3BvbmRlZCAodCA6IHQpID1cbiAgICAgIGlmIHQucmVzcG9uZGVkXG4gICAgICB0aGVuIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWxyZWFkeSByZXNwb25kZWRcIiB0IFslc2V4cF9vZjogUmVzcG9uZGVyLnRdO1xuICAgICAgdC5yZXNwb25kZWQgPC0gdHJ1ZVxuICAgIDs7XG5cbiAgICBsZXQgc2NoZWR1bGUgKHQgOiB0KSBidWYgfnBvcyB+bGVuID1cbiAgICAgIG1hcmtfcmVzcG9uZGVkIHQ7XG4gICAgICBsZXQgaGVhZGVyIDogTmF0MC50IFAuTWVzc2FnZS50ID1cbiAgICAgICAgUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayAoTmF0MC5vZl9pbnRfZXhuIGxlbikgfVxuICAgICAgaW5cbiAgICAgIG1hdGNoXG4gICAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbiAgICAgICAgICB0LndyaXRlclxuICAgICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAgIGhlYWRlclxuICAgICAgICAgIH5idWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgd2l0aFxuICAgICAgfCBTZW50IGQgLT4gYEZsdXNoZWQgZFxuICAgICAgfCBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyBfIGFzIHIgLT4gY2Fubm90X3NlbmQgclxuICAgIDs7XG5cbiAgICBsZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdW5pdCBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiB1bml0ID0gZnVuY3Rpb25cbiAgICAgIHwgU2VudCAoKSB8IENsb3NlZCAtPiAoKVxuICAgICAgfCBNZXNzYWdlX3Rvb19iaWcgXyBhcyByIC0+IGNhbm5vdF9zZW5kIHJcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2JpZ3N0cmluZyAodCA6IHQpIGJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBoZWFkZXIgOiBOYXQwLnQgUC5NZXNzYWdlLnQgPVxuICAgICAgICBSZXNwb25zZSB7IGlkID0gdC5xdWVyeV9pZDsgZGF0YSA9IE9rIChOYXQwLm9mX2ludF9leG4gbGVuKSB9XG4gICAgICBpblxuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZ1xuICAgICAgICB0LndyaXRlclxuICAgICAgICBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3RcbiAgICAgICAgaGVhZGVyXG4gICAgICAgIH5idWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuXG4gICAgbGV0IHdyaXRlX2Vycm9yICh0IDogdCkgZXJyb3IgPVxuICAgICAgbWFya19yZXNwb25kZWQgdDtcbiAgICAgIGxldCBkYXRhID1cbiAgICAgICAgUnBjX3Jlc3VsdC51bmNhdWdodF9leG5cbiAgICAgICAgICB+bG9jYXRpb246XCJzZXJ2ZXItc2lkZSByYXcgcnBjIGNvbXB1dGF0aW9uXCJcbiAgICAgICAgICAoRXJyb3IudG9fZXhuIGVycm9yKVxuICAgICAgaW5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICAgIHQud3JpdGVyXG4gICAgICAgIFAuTWVzc2FnZS5iaW5fd3JpdGVyX25hdDBfdFxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgfSlcbiAgICAgIHw+IGhhbmRsZV9zZW5kX3Jlc3VsdFxuICAgIDs7XG5cbiAgICBsZXQgd3JpdGVfYmluX3Byb3QgKHQgOiB0KSBiaW5fd3JpdGVyX2EgYSA9XG4gICAgICBtYXJrX3Jlc3BvbmRlZCB0O1xuICAgICAgV3JpdGVyLnNlbmRfYmluX3Byb3RcbiAgICAgICAgdC53cml0ZXJcbiAgICAgICAgKFAuTWVzc2FnZS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aCAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3dyaXRlciBiaW5fd3JpdGVyX2EpKVxuICAgICAgICAoUmVzcG9uc2UgeyBpZCA9IHQucXVlcnlfaWQ7IGRhdGEgPSBPayBhIH0pXG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHRcbiAgICA7O1xuICBlbmRcblxuICBsZXQgY3JlYXRlX2V4biA9IGNyZWF0ZV9leG5cbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxubW9kdWxlIFRpbWVfbnMgPSBDb3JlX3ByaXZhdGUuVGltZV9uc19hbHRlcm5hdGVfc2V4cFxubW9kdWxlIFAgPSBQcm90b2NvbFxubW9kdWxlIFJlYWRlciA9IFRyYW5zcG9ydC5SZWFkZXJcbm1vZHVsZSBXcml0ZXIgPSBUcmFuc3BvcnQuV3JpdGVyXG5cbm1vZHVsZSBIZWFkZXIgOiBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIGJpbl90eXBlX2NsYXNzXVxuXG4gIHZhbCB2MSA6IHRcbiAgdmFsIG5lZ290aWF0ZSA6IHVzOnQgLT4gcGVlcjp0IC0+IGludCBPcl9lcnJvci50XG5lbmQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQLkhlYWRlclxuXG4gIGxldCBuZWdvdGlhdGUgPSBuZWdvdGlhdGUgfmFsbG93X2xlZ2FjeV9wZWVyOnRydWVcbiAgbGV0IHYxID0gUHJvdG9jb2xfdmVyc2lvbl9oZWFkZXIuY3JlYXRlX2V4biB+cHJvdG9jb2w6UnBjIH5zdXBwb3J0ZWRfdmVyc2lvbnM6WyAxIF1cbmVuZFxuXG5tb2R1bGUgSGFuZHNoYWtlX2Vycm9yID0gc3RydWN0XG4gIG1vZHVsZSBUID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRW9mXG4gICAgICB8IFRyYW5zcG9ydF9jbG9zZWRcbiAgICAgIHwgVGltZW91dFxuICAgICAgfCBSZWFkaW5nX2hlYWRlcl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGlvbl9mYWlsZWQgb2YgRXJyb3IudFxuICAgICAgfCBOZWdvdGlhdGVkX3VuZXhwZWN0ZWRfdmVyc2lvbiBvZiBpbnRcbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcblxuICBpbmNsdWRlIFRcbiAgaW5jbHVkZSBTZXhwYWJsZS5Ub19zdHJpbmdhYmxlIChUKVxuXG4gIGV4Y2VwdGlvbiBIYW5kc2hha2VfZXJyb3Igb2YgKHQgKiBJbmZvLnQpIFtAQGRlcml2aW5nIHNleHBdXG5cbiAgbGV0IHRvX2V4biB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbiB0ID0gSGFuZHNoYWtlX2Vycm9yICh0LCBjb25uZWN0aW9uX2Rlc2NyaXB0aW9uKVxuZW5kXG5cbm1vZHVsZSBIZWFydGJlYXRfY29uZmlnID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyB0aW1lb3V0IDogVGltZV9ucy5TcGFuLnRcbiAgICA7IHNlbmRfZXZlcnkgOiBUaW1lX25zLlNwYW4udFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCBmaWVsZHNdXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/KHRpbWVvdXQgPSBUaW1lX25zLlNwYW4ub2Zfc2VjIDMwLilcbiAgICAgICAgPyhzZW5kX2V2ZXJ5ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAxMC4pXG4gICAgICAgICgpXG4gICAgPVxuICAgIHsgdGltZW91dDsgc2VuZF9ldmVyeSB9XG4gIDs7XG5cbiAgbW9kdWxlIFJ1bnRpbWUgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBtdXRhYmxlIHRpbWVvdXQgOiBUaW1lX25zLlNwYW4udFxuICAgICAgOyBzZW5kX2V2ZXJ5IDogVGltZV9ucy5TcGFuLnRcbiAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwX29mXVxuICBlbmRcblxuICBsZXQgdG9fcnVudGltZSB7IHRpbWVvdXQ7IHNlbmRfZXZlcnkgfSA9IHsgUnVudGltZS50aW1lb3V0OyBzZW5kX2V2ZXJ5IH1cbmVuZFxuXG50eXBlIHJlc3BvbnNlX2hhbmRsZXIgPVxuICBOYXQwLnQgUC5SZXNwb25zZS50XG4gIC0+IHJlYWRfYnVmZmVyOkJpZ3N0cmluZy50XG4gIC0+IHJlYWRfYnVmZmVyX3Bvc19yZWY6aW50IHJlZlxuICAtPiBbIGBrZWVwXG4gICAgIHwgYHdhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gICAgIHwgYHJlbW92ZSBvZiB1bml0IFJwY19yZXN1bHQudFxuICAgICB8IGByZW1vdmVfYW5kX3dhaXQgb2YgdW5pdCBEZWZlcnJlZC50XG4gICAgIF1cblxudHlwZSB0ID1cbiAgeyBkZXNjcmlwdGlvbiA6IEluZm8udFxuICA7IGhlYXJ0YmVhdF9jb25maWcgOiBIZWFydGJlYXRfY29uZmlnLlJ1bnRpbWUudFxuICA7IG11dGFibGUgaGVhcnRiZWF0X2NhbGxiYWNrcyA6ICh1bml0IC0+IHVuaXQpIGFycmF5XG4gIDsgbXV0YWJsZSBsYXN0X3NlZW5fYWxpdmUgOiBUaW1lX25zLnRcbiAgOyByZWFkZXIgOiBSZWFkZXIudFxuICA7IHdyaXRlciA6IFdyaXRlci50XG4gIDsgb3Blbl9xdWVyaWVzIDogKFAuUXVlcnlfaWQudCwgKHJlc3BvbnNlX2hhbmRsZXJbQHNleHAub3BhcXVlXSkpIEhhc2h0YmwudFxuICA7IGNsb3NlX3N0YXJ0ZWQgOiBJbmZvLnQgSXZhci50XG4gIDsgY2xvc2VfZmluaXNoZWQgOiB1bml0IEl2YXIudFxuICAoKiBUaGVyZSdzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBiZXR3ZWVuIGNvbm5lY3Rpb25zIGFuZCB0aGVpciBpbXBsZW1lbnRhdGlvbiBpbnN0YW5jZXNcbiAgICAgKHRoZSBsYXR0ZXIgZGVwZW5kcyBvbiB0aGUgY29ubmVjdGlvbiBzdGF0ZSwgd2hpY2ggaXMgZ2l2ZW4gYWNjZXNzIHRvIHRoZSBjb25uZWN0aW9uXG4gICAgIHdoZW4gaXQgaXMgY3JlYXRlZCkuICopXG4gIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIDogSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnQgU2V0X29uY2UudFxuICA7IHRpbWVfc291cmNlIDogU3luY2hyb25vdXNfdGltZV9zb3VyY2UudFxuICA7IGhlYXJ0YmVhdF9ldmVudCA6IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LnQgU2V0X29uY2UudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgc2V4cF9vZl90X2h1bV93cml0ZXIgdCA9XG4gIFslc2V4cCB7IGRlc2NyaXB0aW9uIDogSW5mby50ID0gdC5kZXNjcmlwdGlvbjsgd3JpdGVyIDogV3JpdGVyLnQgPSB0LndyaXRlciB9XVxuOztcblxubGV0IGRlc2NyaXB0aW9uIHQgPSB0LmRlc2NyaXB0aW9uXG5sZXQgaXNfY2xvc2VkIHQgPSBJdmFyLmlzX2Z1bGwgdC5jbG9zZV9zdGFydGVkXG5cbmxldCB3cml0ZXIgdCA9XG4gIGlmIGlzX2Nsb3NlZCB0IHx8IG5vdCAoV3JpdGVyLmNhbl9zZW5kIHQud3JpdGVyKSB0aGVuIEVycm9yIGBDbG9zZWQgZWxzZSBPayB0LndyaXRlclxuOztcblxubGV0IGJ5dGVzX3RvX3dyaXRlIHQgPSBXcml0ZXIuYnl0ZXNfdG9fd3JpdGUgdC53cml0ZXJcbmxldCBmbHVzaGVkIHQgPSBXcml0ZXIuZmx1c2hlZCB0LndyaXRlclxuXG5sZXQgaGFuZGxlX3NlbmRfcmVzdWx0IDogdCAtPiAnYSBUcmFuc3BvcnQuU2VuZF9yZXN1bHQudCAtPiAnYSA9XG4gIGZ1biB0IHIgLT5cbiAgbWF0Y2ggciB3aXRoXG4gIHwgU2VudCB4IC0+IHhcbiAgfCBDbG9zZWQgLT5cbiAgICAoKiBBbGwgb2YgdGhlIHBsYWNlcyB3ZSBjYWxsIFtoYW5kbGVfc2VuZF9yZXN1bHRdIGNoZWNrIHdoZXRoZXIgW3RdIGlzIGNsb3NlZFxuICAgICAgICh1c3VhbGx5IHZpYSB0aGUgW3dyaXRlcl0gZnVuY3Rpb24gYWJvdmUpLiBUaGlzIGNoZWNrcyB3aGV0aGVyIFt0LndyaXRlcl0gaXNcbiAgICAgICBjbG9zZWQsIHdoaWNoIHNob3VsZCBub3QgaGFwcGVuIHVubGVzcyBbdF0gaXMgY2xvc2VkLiAqKVxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiUlBDIGNvbm5lY3Rpb24gZ290IGNsb3NlZCB3cml0ZXJcIiB0IHNleHBfb2ZfdF9odW1fd3JpdGVyXG4gIHwgTWVzc2FnZV90b29fYmlnIF8gLT5cbiAgICByYWlzZV9zXG4gICAgICBbJXNleHBcbiAgICAgICAgXCJNZXNzYWdlIGNhbm5vdCBiZSBzZW50XCJcbiAgICAgICwgeyByZWFzb24gPSAociA6IF8gVHJhbnNwb3J0LlNlbmRfcmVzdWx0LnQpOyBjb25uZWN0aW9uID0gKHQgOiB0X2h1bV93cml0ZXIpIH1dXG47O1xuXG5sZXQgZGlzcGF0Y2ggdCB+cmVzcG9uc2VfaGFuZGxlciB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCBhcyByIC0+IHJcbiAgfCBPayB3cml0ZXIgLT5cbiAgICBPcHRpb24uaXRlciByZXNwb25zZV9oYW5kbGVyIH5mOihmdW4gcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgICAgSGFzaHRibC5zZXQgdC5vcGVuX3F1ZXJpZXMgfmtleTpxdWVyeS5QLlF1ZXJ5LmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90XG4gICAgICB3cml0ZXJcbiAgICAgIChQLk1lc3NhZ2UuYmluX3dyaXRlcl9uZWVkc19sZW5ndGggKFdyaXRlcl93aXRoX2xlbmd0aC5vZl93cml0ZXIgYmluX3dyaXRlcl9xdWVyeSkpXG4gICAgICAoUXVlcnkgcXVlcnkpXG4gICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHQ7XG4gICAgT2sgKClcbjs7XG5cbmxldCBtYWtlX2Rpc3BhdGNoX2JpZ3N0cmluZyBkb19zZW5kIHQgfnRhZyB+dmVyc2lvbiBidWYgfnBvcyB+bGVuIH5yZXNwb25zZV9oYW5kbGVyID1cbiAgbWF0Y2ggd3JpdGVyIHQgd2l0aFxuICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgYENsb3NlZFxuICB8IE9rIHdyaXRlciAtPlxuICAgIGxldCBpZCA9IFAuUXVlcnlfaWQuY3JlYXRlICgpIGluXG4gICAgbGV0IGhlYWRlciA6IE5hdDAudCBQLk1lc3NhZ2UudCA9XG4gICAgICBRdWVyeSB7IHRhZzsgdmVyc2lvbjsgaWQ7IGRhdGEgPSBOYXQwLm9mX2ludF9leG4gbGVuIH1cbiAgICBpblxuICAgIE9wdGlvbi5pdGVyIHJlc3BvbnNlX2hhbmRsZXIgfmY6KGZ1biByZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBIYXNodGJsLnNldCB0Lm9wZW5fcXVlcmllcyB+a2V5OmlkIH5kYXRhOnJlc3BvbnNlX2hhbmRsZXIpO1xuICAgIGxldCByZXN1bHQgPVxuICAgICAgZG9fc2VuZCB3cml0ZXIgUC5NZXNzYWdlLmJpbl93cml0ZXJfbmF0MF90IGhlYWRlciB+YnVmIH5wb3MgfmxlblxuICAgICAgfD4gaGFuZGxlX3NlbmRfcmVzdWx0IHRcbiAgICBpblxuICAgIE9rIHJlc3VsdFxuOztcblxubGV0IGRpc3BhdGNoX2JpZ3N0cmluZyA9IG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcblxubGV0IHNjaGVkdWxlX2Rpc3BhdGNoX2JpZ3N0cmluZyA9XG4gIG1ha2VfZGlzcGF0Y2hfYmlnc3RyaW5nIFdyaXRlci5zZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdfbm9uX2NvcHlpbmdcbjs7XG5cbmxldCBoYW5kbGVfcmVzcG9uc2UgdCAocmVzcG9uc2UgOiBfIFAuUmVzcG9uc2UudCkgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmXG4gIDogXyBUcmFuc3BvcnQuSGFuZGxlcl9yZXN1bHQudFxuICA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZCB0Lm9wZW5fcXVlcmllcyByZXNwb25zZS5pZCB3aXRoXG4gIHwgTm9uZSAtPiBTdG9wIChFcnJvciAoUnBjX2Vycm9yLlVua25vd25fcXVlcnlfaWQgcmVzcG9uc2UuaWQpKVxuICB8IFNvbWUgcmVzcG9uc2VfaGFuZGxlciAtPlxuICAgIChtYXRjaCByZXNwb25zZV9oYW5kbGVyIHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZiB3aXRoXG4gICAgIHwgYGtlZXAgLT4gQ29udGludWVcbiAgICAgfCBgd2FpdCB3YWl0IC0+IFdhaXQgd2FpdFxuICAgICB8IGByZW1vdmVfYW5kX3dhaXQgd2FpdCAtPlxuICAgICAgIEhhc2h0YmwucmVtb3ZlIHQub3Blbl9xdWVyaWVzIHJlc3BvbnNlLmlkO1xuICAgICAgIFdhaXQgd2FpdFxuICAgICB8IGByZW1vdmUgcmVtb3ZhbF9jaXJjdW1zdGFuY2VzIC0+XG4gICAgICAgSGFzaHRibC5yZW1vdmUgdC5vcGVuX3F1ZXJpZXMgcmVzcG9uc2UuaWQ7XG4gICAgICAgKG1hdGNoIHJlbW92YWxfY2lyY3Vtc3RhbmNlcyB3aXRoXG4gICAgICAgIHwgT2sgKCkgLT4gQ29udGludWVcbiAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgKG1hdGNoIGUgd2l0aFxuICAgICAgICAgICB8IFVuaW1wbGVtZW50ZWRfcnBjIF8gLT4gQ29udGludWVcbiAgICAgICAgICAgfCBCaW5faW9fZXhuIF9cbiAgICAgICAgICAgfCBDb25uZWN0aW9uX2Nsb3NlZFxuICAgICAgICAgICB8IFdyaXRlX2Vycm9yIF9cbiAgICAgICAgICAgfCBVbmNhdWdodF9leG4gX1xuICAgICAgICAgICB8IFVua25vd25fcXVlcnlfaWQgXyAtPiBTdG9wIChFcnJvciBlKSkpKVxuOztcblxubGV0IGhhbmRsZV9tc2dcbiAgICAgIHRcbiAgICAgIChtc2cgOiBfIFAuTWVzc2FnZS50KVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICAgICAgfmNsb3NlX2Nvbm5lY3Rpb25fbW9uaXRvclxuICA6IF8gVHJhbnNwb3J0LkhhbmRsZXJfcmVzdWx0LnRcbiAgPVxuICBtYXRjaCBtc2cgd2l0aFxuICB8IEhlYXJ0YmVhdCAtPlxuICAgIEFycmF5Lml0ZXIgdC5oZWFydGJlYXRfY2FsbGJhY2tzIH5mOihmdW4gZiAtPiBmICgpKTtcbiAgICBDb250aW51ZVxuICB8IFJlc3BvbnNlIHJlc3BvbnNlIC0+IGhhbmRsZV9yZXNwb25zZSB0IHJlc3BvbnNlIH5yZWFkX2J1ZmZlciB+cmVhZF9idWZmZXJfcG9zX3JlZlxuICB8IFF1ZXJ5IHF1ZXJ5IC0+XG4gICAgbGV0IGluc3RhbmNlID0gU2V0X29uY2UuZ2V0X2V4biB0LmltcGxlbWVudGF0aW9uc19pbnN0YW5jZSBbJWhlcmVdIGluXG4gICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLmhhbmRsZV9xdWVyeVxuICAgICAgaW5zdGFuY2VcbiAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICAgIH5xdWVyeVxuICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZlxuOztcblxubGV0IGNsb3NlX3JlYXNvbiB0IH5vbl9jbG9zZSA9XG4gIGxldCByZWFzb24gPSBJdmFyLnJlYWQgdC5jbG9zZV9zdGFydGVkIGluXG4gIG1hdGNoIG9uX2Nsb3NlIHdpdGhcbiAgfCBgc3RhcnRlZCAtPiByZWFzb25cbiAgfCBgZmluaXNoZWQgLT5cbiAgICBsZXQlYmluZCAoKSA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkIGluXG4gICAgcmVhc29uXG47O1xuXG5sZXQgY2xvc2VfZmluaXNoZWQgdCA9IEl2YXIucmVhZCB0LmNsb3NlX2ZpbmlzaGVkXG5cbmxldCBhZGRfaGVhcnRiZWF0X2NhbGxiYWNrIHQgZiA9XG4gICgqIEFkZGluZyBoZWFydGJlYXQgY2FsbGJhY2tzIGlzIHJlbGF0aXZlbHkgcmFyZSwgYnV0IHRoZSBjYWxsYmFja3MgYXJlIHRyaWdnZXJlZCBhIGxvdC5cbiAgICAgVGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG1ha2VzIHRoZSBhZGRpdGlvbiBxdWFkcmF0aWMgZm9yIHRoZSBzYWtlIG9mIGtlZXBpbmcgdGhlXG4gICAgIHRyaWdnZXJpbmcgY2hlYXAuICopXG4gIHQuaGVhcnRiZWF0X2NhbGxiYWNrcyA8LSBBcnJheS5hcHBlbmQgW3wgZiB8XSB0LmhlYXJ0YmVhdF9jYWxsYmFja3Ncbjs7XG5cbmxldCByZXNldF9oZWFydGJlYXRfdGltZW91dCB0IHRpbWVvdXQgPVxuICB0LmhlYXJ0YmVhdF9jb25maWcudGltZW91dCA8LSB0aW1lb3V0O1xuICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZVxuOztcblxubGV0IGxhc3Rfc2Vlbl9hbGl2ZSB0ID0gdC5sYXN0X3NlZW5fYWxpdmVcblxubGV0IGFib3J0X2hlYXJ0YmVhdGluZyB0ID1cbiAgT3B0aW9uLml0ZXIgKFNldF9vbmNlLmdldCB0LmhlYXJ0YmVhdF9ldmVudCkgfmY6KGZ1biBldmVudCAtPlxuICAgIG1hdGNoIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmFib3J0IHQudGltZV9zb3VyY2UgZXZlbnQgd2l0aFxuICAgIHwgT2sgfCBQcmV2aW91c2x5X3Vuc2NoZWR1bGVkIC0+ICgpXG4gICAgfCBDdXJyZW50bHlfaGFwcGVuaW5nIC0+XG4gICAgICBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ydW5fYWZ0ZXIgdC50aW1lX3NvdXJjZSBUaW1lX25zLlNwYW4uemVybyAoZnVuICgpIC0+XG4gICAgICAgIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLkV2ZW50LmFib3J0X2V4biB0LnRpbWVfc291cmNlIGV2ZW50KSlcbjs7XG5cbmxldCBjbG9zZSA/KHN0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dCA9IFRpbWVfbnMuU3Bhbi5vZl9pbnRfc2VjIDUpIH5yZWFzb24gdCA9XG4gIGlmIG5vdCAoaXNfY2xvc2VkIHQpXG4gIHRoZW4gKFxuICAgIGFib3J0X2hlYXJ0YmVhdGluZyB0O1xuICAgIEl2YXIuZmlsbCB0LmNsb3NlX3N0YXJ0ZWQgcmVhc29uO1xuICAgIChtYXRjaCBTZXRfb25jZS5nZXQgdC5pbXBsZW1lbnRhdGlvbnNfaW5zdGFuY2Ugd2l0aFxuICAgICB8IE5vbmUgLT4gRGVmZXJyZWQudW5pdFxuICAgICB8IFNvbWUgaW5zdGFuY2UgLT5cbiAgICAgICBsZXQgZmx1c2hlZCA9IEltcGxlbWVudGF0aW9ucy5JbnN0YW5jZS5mbHVzaCBpbnN0YW5jZSBpblxuICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZmx1c2hlZFxuICAgICAgIHRoZW4gKFxuICAgICAgICAgSW1wbGVtZW50YXRpb25zLkluc3RhbmNlLnN0b3AgaW5zdGFuY2U7XG4gICAgICAgICBmbHVzaGVkKVxuICAgICAgIGVsc2UgKFxuICAgICAgICAgbGV0JW1hcCAoKSA9XG4gICAgICAgICAgIERlZmVycmVkLmFueV91bml0XG4gICAgICAgICAgICAgWyBmbHVzaGVkXG4gICAgICAgICAgICAgOyBXcml0ZXIuc3RvcHBlZCB0LndyaXRlclxuICAgICAgICAgICAgIDsgVGltZV9zb3VyY2UuYWZ0ZXJcbiAgICAgICAgICAgICAgICAgKFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzIHQudGltZV9zb3VyY2UpXG4gICAgICAgICAgICAgICAgIHN0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dFxuICAgICAgICAgICAgIF1cbiAgICAgICAgIGluXG4gICAgICAgICBJbXBsZW1lbnRhdGlvbnMuSW5zdGFuY2Uuc3RvcCBpbnN0YW5jZSkpXG4gICAgPj4+IGZ1biAoKSAtPlxuICAgIFdyaXRlci5jbG9zZSB0LndyaXRlclxuICAgID4+PiBmdW4gKCkgLT4gUmVhZGVyLmNsb3NlIHQucmVhZGVyID4+PiBmdW4gKCkgLT4gSXZhci5maWxsIHQuY2xvc2VfZmluaXNoZWQgKCkpO1xuICBjbG9zZV9maW5pc2hlZCB0XG47O1xuXG5sZXQgb25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPVxuICBsZXQgZiBidWYgfnBvcyB+bGVuOl8gOiBfIFRyYW5zcG9ydC5IYW5kbGVyX3Jlc3VsdC50ID1cbiAgICBsZXQgcG9zX3JlZiA9IHJlZiBwb3MgaW5cbiAgICBsZXQgbmF0MF9tc2cgPSBQLk1lc3NhZ2UuYmluX3JlYWRfbmF0MF90IGJ1ZiB+cG9zX3JlZiBpblxuICAgIG1hdGNoXG4gICAgICBoYW5kbGVfbXNnXG4gICAgICAgIHRcbiAgICAgICAgbmF0MF9tc2dcbiAgICAgICAgfnJlYWRfYnVmZmVyOmJ1ZlxuICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZjpwb3NfcmVmXG4gICAgICAgIH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3JcbiAgICB3aXRoXG4gICAgfCBDb250aW51ZSAtPiBDb250aW51ZVxuICAgIHwgV2FpdCBfIGFzIHJlcyAtPiByZXNcbiAgICB8IFN0b3AgcmVzdWx0IC0+XG4gICAgICBsZXQgcmVhc29uID1cbiAgICAgICAgbGV0IG1zZyA9IFwiUnBjIG1lc3NhZ2UgaGFuZGxpbmcgbG9vcCBzdG9wcGVkXCIgaW5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBPayAoKSAtPiBJbmZvLm9mX3N0cmluZyBtc2dcbiAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgSW5mby5jcmVhdGVcbiAgICAgICAgICAgIG1zZ1xuICAgICAgICAgICAgZVxuICAgICAgICAgICAgKFJwY19lcnJvci5zZXhwX29mX3QgfmdldF9jb25uZWN0aW9uX2Nsb3NlX3JlYXNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgXCJDb25uZWN0aW9uLm9uX21lc3NhZ2UgcmVzdWx0ZWQgaW4gQ29ubmVjdGlvbl9jbG9zZWQgZXJyb3IuIFRoaXMgaXMgXFxcbiAgICAgICAgICAgICAgICAgIHdlaXJkLlwiXSkpXG4gICAgICBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3IgKGNsb3NlIHQgfnJlYXNvbik7XG4gICAgICBTdG9wIHJlYXNvblxuICBpblxuICBTdGFnZWQuc3RhZ2UgZlxuOztcblxubGV0IGhlYXJ0YmVhdF9ub3cgdCA9XG4gIGxldCBzaW5jZV9sYXN0X2hlYXJ0YmVhdCA9XG4gICAgVGltZV9ucy5kaWZmIChTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZSkgdC5sYXN0X3NlZW5fYWxpdmVcbiAgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPiApIHNpbmNlX2xhc3RfaGVhcnRiZWF0IHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0XG4gIHRoZW4gKFxuICAgIGxldCByZWFzb24gKCkgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICAhXCJObyBoZWFydGJlYXRzIHJlY2VpdmVkIGZvciAle3NleHA6VGltZV9ucy5TcGFuLnR9LlwiXG4gICAgICAgIHQuaGVhcnRiZWF0X2NvbmZpZy50aW1lb3V0XG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3RodW5rIHJlYXNvbikpKVxuICBlbHNlIChcbiAgICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gICAgfCBFcnJvciBgQ2xvc2VkIC0+ICgpXG4gICAgfCBPayB3cml0ZXIgLT5cbiAgICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90IHdyaXRlciBQLk1lc3NhZ2UuYmluX3dyaXRlcl9uYXQwX3QgSGVhcnRiZWF0XG4gICAgICB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdClcbjs7XG5cbmxldCBkZWZhdWx0X2hhbmRzaGFrZV90aW1lb3V0ID0gVGltZV9ucy5TcGFuLm9mX3NlYyAzMC5cblxubGV0IGNsZWFudXAgdCB+cmVhc29uIGV4biA9XG4gIGRvbid0X3dhaXRfZm9yIChjbG9zZSB+cmVhc29uIHQpO1xuICBpZiBub3QgKEhhc2h0YmwuaXNfZW1wdHkgdC5vcGVuX3F1ZXJpZXMpXG4gIHRoZW4gKFxuICAgIGxldCBlcnJvciA9XG4gICAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgfCBScGNfZXJyb3IuUnBjIChlcnJvciwgKF8gOiBJbmZvLnQpKSAtPiBlcnJvclxuICAgICAgfCBleG4gLT4gVW5jYXVnaHRfZXhuIChFeG4uc2V4cF9vZl90IGV4bilcbiAgICBpblxuICAgICgqIGNsZWFuIHVwIG9wZW4gc3RyZWFtaW5nIHJlc3BvbnNlcyAqKVxuICAgICgqIGFuIHVuZm9ydHVuYXRlIGhhY2s7IG9rIGJlY2F1c2UgdGhlIHJlc3BvbnNlIGhhbmRsZXIgd2lsbCBoYXZlIG5vdGhpbmdcbiAgICAgICB0byByZWFkIGZvbGxvd2luZyBhIHJlc3BvbnNlIHdoZXJlIFtkYXRhXSBpcyBhbiBlcnJvciAqKVxuICAgIGxldCBkdW1teV9idWZmZXIgPSBCaWdzdHJpbmcuY3JlYXRlIDEgaW5cbiAgICBsZXQgZHVtbXlfcmVmID0gcmVmIDAgaW5cbiAgICBIYXNodGJsLml0ZXJpIHQub3Blbl9xdWVyaWVzIH5mOihmdW4gfmtleTpxdWVyeV9pZCB+ZGF0YTpyZXNwb25zZV9oYW5kbGVyIC0+XG4gICAgICBpZ25vcmVcbiAgICAgICAgKHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICAgfnJlYWRfYnVmZmVyOmR1bW15X2J1ZmZlclxuICAgICAgICAgICB+cmVhZF9idWZmZXJfcG9zX3JlZjpkdW1teV9yZWZcbiAgICAgICAgICAgeyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gRXJyb3IgZXJyb3IgfSkpO1xuICAgIEhhc2h0YmwuY2xlYXIgdC5vcGVuX3F1ZXJpZXM7XG4gICAgQmlnc3RyaW5nLnVuc2FmZV9kZXN0cm95IGR1bW15X2J1ZmZlcilcbjs7XG5cbmxldCBzY2hlZHVsZV9oZWFydGJlYXRzIHQgPVxuICB0Lmxhc3Rfc2Vlbl9hbGl2ZSA8LSBTeW5jaHJvbm91c190aW1lX3NvdXJjZS5ub3cgdC50aW1lX3NvdXJjZTtcbiAgbGV0IGhlYXJ0YmVhdF9mcm9tX25vd19vbiA9XG4gICAgKCogW2F0X2ludGVydmFsc10gd2lsbCBzY2hlZHVsZSB0aGUgZmlyc3QgaGVhcnRiZWF0IHRoZSBmaXJzdCB0aW1lIHRoZSB0aW1lX3NvdXJjZSBpc1xuICAgICAgIGFkdmFuY2VkICopXG4gICAgU3luY2hyb25vdXNfdGltZV9zb3VyY2UuRXZlbnQuYXRfaW50ZXJ2YWxzXG4gICAgICB0LnRpbWVfc291cmNlXG4gICAgICB0LmhlYXJ0YmVhdF9jb25maWcuc2VuZF9ldmVyeVxuICAgICAgKGZ1biAoKSAtPiBoZWFydGJlYXRfbm93IHQpXG4gIGluXG4gIFNldF9vbmNlLnNldF9leG4gdC5oZWFydGJlYXRfZXZlbnQgWyVoZXJlXSBoZWFydGJlYXRfZnJvbV9ub3dfb25cbjs7XG5cbmxldCBydW5fYWZ0ZXJfaGFuZHNoYWtlIHQgfmltcGxlbWVudGF0aW9ucyB+Y29ubmVjdGlvbl9zdGF0ZSB+d3JpdGVyX21vbml0b3JfZXhucyA9XG4gIGxldCBpbnN0YW5jZSA9XG4gICAgSW1wbGVtZW50YXRpb25zLmluc3RhbnRpYXRlXG4gICAgICBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIH53cml0ZXI6dC53cml0ZXJcbiAgICAgIH5jb25uZWN0aW9uX2Rlc2NyaXB0aW9uOnQuZGVzY3JpcHRpb25cbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KEl2YXIucmVhZCB0LmNsb3NlX3N0YXJ0ZWQpXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZTooY29ubmVjdGlvbl9zdGF0ZSB0KVxuICBpblxuICBTZXRfb25jZS5zZXRfZXhuIHQuaW1wbGVtZW50YXRpb25zX2luc3RhbmNlIFslaGVyZV0gaW5zdGFuY2U7XG4gIGxldCBjbG9zZV9jb25uZWN0aW9uX21vbml0b3IgPSBNb25pdG9yLmNyZWF0ZSB+bmFtZTpcIlJQQyBjbG9zZSBjb25uZWN0aW9uIG1vbml0b3JcIiAoKSBpblxuICBNb25pdG9yLmRldGFjaF9hbmRfaXRlcl9lcnJvcnMgY2xvc2VfY29ubmVjdGlvbl9tb25pdG9yIH5mOihmdW4gZXhuIC0+XG4gICAgbGV0IHJlYXNvbiA9XG4gICAgICBJbmZvLmNyZWF0ZV9zIFslbWVzc2FnZSBcIlVuY2F1Z2h0IGV4Y2VwdGlvbiBpbiBpbXBsZW1lbnRhdGlvblwiIChleG4gOiBFeG4udCldXG4gICAgaW5cbiAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgfnJlYXNvbiB0KSk7XG4gIGxldCBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgfm5hbWU6XCJSUEMgY29ubmVjdGlvbiBsb29wXCIgKCkgaW5cbiAgbGV0IHJlYXNvbiBuYW1lIGV4biA9XG4gICAgZXhuLCBJbmZvLnRhZyAoSW5mby5vZl9leG4gZXhuKSB+dGFnOihcImV4biByYWlzZWQgaW4gUlBDIGNvbm5lY3Rpb24gXCIgXiBuYW1lKVxuICBpblxuICBTdHJlYW0uaXRlclxuICAgIChTdHJlYW0uaW50ZXJsZWF2ZVxuICAgICAgIChTdHJlYW0ub2ZfbGlzdFxuICAgICAgICAgIFsgU3RyZWFtLm1hcCB+ZjoocmVhc29uIFwibG9vcFwiKSAoTW9uaXRvci5kZXRhY2hfYW5kX2dldF9lcnJvcl9zdHJlYW0gbW9uaXRvcilcbiAgICAgICAgICA7IFN0cmVhbS5tYXAgfmY6KHJlYXNvbiBcIldyaXRlci50XCIpIHdyaXRlcl9tb25pdG9yX2V4bnNcbiAgICAgICAgICBdKSlcbiAgICB+ZjooZnVuIChleG4sIHJlYXNvbikgLT4gY2xlYW51cCB0IGV4biB+cmVhc29uKTtcbiAgd2l0aGluIH5tb25pdG9yIChmdW4gKCkgLT5cbiAgICBzY2hlZHVsZV9oZWFydGJlYXRzIHQ7XG4gICAgUmVhZGVyLnJlYWRfZm9yZXZlclxuICAgICAgdC5yZWFkZXJcbiAgICAgIH5vbl9tZXNzYWdlOihTdGFnZWQudW5zdGFnZSAob25fbWVzc2FnZSB0IH5jbG9zZV9jb25uZWN0aW9uX21vbml0b3IpKVxuICAgICAgfm9uX2VuZF9vZl9iYXRjaDooZnVuICgpIC0+XG4gICAgICAgIHQubGFzdF9zZWVuX2FsaXZlIDwtIFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0LnRpbWVfc291cmNlKVxuICAgID4+PiBmdW5jdGlvblxuICAgIHwgT2sgcmVhc29uIC0+IGNsZWFudXAgdCB+cmVhc29uIChScGNfZXJyb3IuUnBjIChDb25uZWN0aW9uX2Nsb3NlZCwgdC5kZXNjcmlwdGlvbikpXG4gICAgKCogVGhlIHByb3RvY29sIGlzIHN1Y2ggdGhhdCByaWdodCBub3csIHRoZSBvbmx5IG91dGNvbWUgb2YgdGhlIG90aGVyIHNpZGUgY2xvc2luZyB0aGVcbiAgICAgICBjb25uZWN0aW9uIG5vcm1hbGx5IGlzIHRoYXQgd2UgZ2V0IGFuIGVvZi4gKilcbiAgICB8IEVycm9yIChgRW9mIHwgYENsb3NlZCkgLT5cbiAgICAgIGNsZWFudXBcbiAgICAgICAgdFxuICAgICAgICB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIkVPRiBvciBjb25uZWN0aW9uIGNsb3NlZFwiKVxuICAgICAgICAoUnBjX2Vycm9yLlJwYyAoQ29ubmVjdGlvbl9jbG9zZWQsIHQuZGVzY3JpcHRpb24pKSlcbjs7XG5cbmxldCBkb19oYW5kc2hha2UgdCB+aGFuZHNoYWtlX3RpbWVvdXQgPVxuICBtYXRjaCB3cml0ZXIgdCB3aXRoXG4gIHwgRXJyb3IgYENsb3NlZCAtPiByZXR1cm4gKEVycm9yIEhhbmRzaGFrZV9lcnJvci5UcmFuc3BvcnRfY2xvc2VkKVxuICB8IE9rIHdyaXRlciAtPlxuICAgIFdyaXRlci5zZW5kX2Jpbl9wcm90IHdyaXRlciBIZWFkZXIuYmluX3Qud3JpdGVyIEhlYWRlci52MSB8PiBoYW5kbGVfc2VuZF9yZXN1bHQgdDtcbiAgICAoKiBJZiB3ZSB1c2UgW21heF9jb25uZWN0aW9uc10gaW4gdGhlIHNlcnZlciwgdGhlbiB0aGlzIHJlYWQgbWF5IGp1c3QgaGFuZyB1bnRpbCB0aGVcbiAgICAgICBzZXJ2ZXIgc3RhcnRzIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgKHdoaWNoIGNvdWxkIGJlIG5ldmVyKS4gIFRoYXQgaXMgd2h5IGFcbiAgICAgICB0aW1lb3V0IGlzIHVzZWQgKilcbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIE1vbml0b3IudHJ5X3dpdGhcbiAgICAgICAgfnJlc3Q6YExvZ1xuICAgICAgICB+cnVuOmBOb3dcbiAgICAgICAgKGZ1biAoKSAtPiBSZWFkZXIucmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdCB0LnJlYWRlciBIZWFkZXIuYmluX3QucmVhZGVyKVxuICAgIGluXG4gICAgKG1hdGNoJW1hcFxuICAgICAgIFRpbWVfc291cmNlLndpdGhfdGltZW91dFxuICAgICAgICAgKFRpbWVfc291cmNlLm9mX3N5bmNocm9ub3VzIHQudGltZV9zb3VyY2UpXG4gICAgICAgICBoYW5kc2hha2VfdGltZW91dFxuICAgICAgICAgcmVzdWx0XG4gICAgIHdpdGhcbiAgICAgfCBgVGltZW91dCAtPlxuICAgICAgICgqIFRoZXJlJ3MgYSBwZW5kaW5nIHJlYWQsIHRoZSByZWFkZXIgaXMgYmFzaWNhbGx5IHVzZWxlc3Mgbm93LCBzbyB3ZSBjbGVhbiBpdFxuICAgICAgICAgIHVwLiAqKVxuICAgICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiSGFuZHNoYWtlIHRpbWVvdXRcIikpO1xuICAgICAgIEVycm9yIEhhbmRzaGFrZV9lcnJvci5UaW1lb3V0XG4gICAgIHwgYFJlc3VsdCAoRXJyb3IgZXhuKSAtPlxuICAgICAgIGxldCByZWFzb24gPSBJbmZvLm9mX3N0cmluZyBcIltSZWFkZXIucmVhZF9vbmVfbWVzc2FnZV9iaW5fcHJvdF0gcmFpc2VkXCIgaW5cbiAgICAgICBkb24ndF93YWl0X2ZvciAoY2xvc2UgdCB+cmVhc29uKTtcbiAgICAgICBFcnJvciAoUmVhZGluZ19oZWFkZXJfZmFpbGVkIChFcnJvci5vZl9leG4gZXhuKSlcbiAgICAgfCBgUmVzdWx0IChPayAoRXJyb3IgYEVvZikpIC0+IEVycm9yIEVvZlxuICAgICB8IGBSZXN1bHQgKE9rIChFcnJvciBgQ2xvc2VkKSkgLT4gRXJyb3IgVHJhbnNwb3J0X2Nsb3NlZFxuICAgICB8IGBSZXN1bHQgKE9rIChPayBwZWVyKSkgLT5cbiAgICAgICAobWF0Y2ggSGVhZGVyLm5lZ290aWF0ZSB+dXM6SGVhZGVyLnYxIH5wZWVyIHdpdGhcbiAgICAgICAgfCBFcnJvciBlIC0+IEVycm9yIChOZWdvdGlhdGlvbl9mYWlsZWQgZSlcbiAgICAgICAgfCBPayAxIC0+IE9rICgpXG4gICAgICAgIHwgT2sgaSAtPiBFcnJvciAoTmVnb3RpYXRlZF91bmV4cGVjdGVkX3ZlcnNpb24gaSkpKVxuOztcblxubGV0IGNvbnRhaW5zX21hZ2ljX3ByZWZpeCA9IFByb3RvY29sX3ZlcnNpb25faGVhZGVyLmNvbnRhaW5zX21hZ2ljX3ByZWZpeCB+cHJvdG9jb2w6UnBjXG5cbmxldCBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICA/KGhhbmRzaGFrZV90aW1lb3V0ID0gZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dClcbiAgICAgID8oaGVhcnRiZWF0X2NvbmZpZyA9IEhlYXJ0YmVhdF9jb25maWcuY3JlYXRlICgpKVxuICAgICAgPyhkZXNjcmlwdGlvbiA9IEluZm8ub2Zfc3RyaW5nIFwiPGNyZWF0ZWQtZGlyZWN0bHk+XCIpXG4gICAgICA/KHRpbWVfc291cmNlID0gU3luY2hyb25vdXNfdGltZV9zb3VyY2Uud2FsbF9jbG9jayAoKSlcbiAgICAgICh7IHJlYWRlcjsgd3JpdGVyIH0gOiBUcmFuc3BvcnQudClcbiAgPVxuICBsZXQgaW1wbGVtZW50YXRpb25zID1cbiAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBJbXBsZW1lbnRhdGlvbnMubnVsbCAoKVxuICAgIHwgU29tZSBzIC0+IHNcbiAgaW5cbiAgbGV0IHQgPVxuICAgIHsgZGVzY3JpcHRpb25cbiAgICA7IGhlYXJ0YmVhdF9jb25maWcgPSBIZWFydGJlYXRfY29uZmlnLnRvX3J1bnRpbWUgaGVhcnRiZWF0X2NvbmZpZ1xuICAgIDsgaGVhcnRiZWF0X2NhbGxiYWNrcyA9IFt8fF1cbiAgICA7IGxhc3Rfc2Vlbl9hbGl2ZSA9IFN5bmNocm9ub3VzX3RpbWVfc291cmNlLm5vdyB0aW1lX3NvdXJjZVxuICAgIDsgcmVhZGVyXG4gICAgOyB3cml0ZXJcbiAgICA7IG9wZW5fcXVlcmllcyA9IEhhc2h0YmwuUG9seS5jcmVhdGUgfnNpemU6MTAgKClcbiAgICA7IGNsb3NlX3N0YXJ0ZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgY2xvc2VfZmluaXNoZWQgPSBJdmFyLmNyZWF0ZSAoKVxuICAgIDsgaW1wbGVtZW50YXRpb25zX2luc3RhbmNlID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgOyB0aW1lX3NvdXJjZVxuICAgIDsgaGVhcnRiZWF0X2V2ZW50ID0gU2V0X29uY2UuY3JlYXRlICgpXG4gICAgfVxuICBpblxuICBsZXQgd3JpdGVyX21vbml0b3JfZXhucyA9IE1vbml0b3IuZGV0YWNoX2FuZF9nZXRfZXJyb3Jfc3RyZWFtIChXcml0ZXIubW9uaXRvciB3cml0ZXIpIGluXG4gIHVwb24gKFdyaXRlci5zdG9wcGVkIHdyaXRlcikgKGZ1biAoKSAtPlxuICAgIGRvbid0X3dhaXRfZm9yIChjbG9zZSB0IH5yZWFzb246KEluZm8ub2Zfc3RyaW5nIFwiUlBDIHRyYW5zcG9ydCBzdG9wcGVkXCIpKSk7XG4gIG1hdGNoJW1hcCBkb19oYW5kc2hha2UgdCB+aGFuZHNoYWtlX3RpbWVvdXQgd2l0aFxuICB8IE9rICgpIC0+XG4gICAgcnVuX2FmdGVyX2hhbmRzaGFrZSB0IH5pbXBsZW1lbnRhdGlvbnMgfmNvbm5lY3Rpb25fc3RhdGUgfndyaXRlcl9tb25pdG9yX2V4bnM7XG4gICAgT2sgdFxuICB8IEVycm9yIGVycm9yIC0+XG4gICAgRXJyb3IgKEhhbmRzaGFrZV9lcnJvci50b19leG4gfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246ZGVzY3JpcHRpb24gZXJyb3IpXG47O1xuXG5sZXQgd2l0aF9jbG9zZVxuICAgICAgP2ltcGxlbWVudGF0aW9uc1xuICAgICAgP2hhbmRzaGFrZV90aW1lb3V0XG4gICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgP2Rlc2NyaXB0aW9uXG4gICAgICA/dGltZV9zb3VyY2VcbiAgICAgIH5jb25uZWN0aW9uX3N0YXRlXG4gICAgICB0cmFuc3BvcnRcbiAgICAgIH5kaXNwYXRjaF9xdWVyaWVzXG4gICAgICB+b25faGFuZHNoYWtlX2Vycm9yXG4gID1cbiAgbGV0IGhhbmRsZV9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGZcbiAgICB8IGBSYWlzZSAtPiByYWlzZVxuICBpblxuICBsZXQlYmluZCB0ID1cbiAgICBjcmVhdGVcbiAgICAgID9pbXBsZW1lbnRhdGlvbnNcbiAgICAgID9oYW5kc2hha2VfdGltZW91dFxuICAgICAgP2hlYXJ0YmVhdF9jb25maWdcbiAgICAgID9kZXNjcmlwdGlvblxuICAgICAgP3RpbWVfc291cmNlXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgdHJhbnNwb3J0XG4gIGluXG4gIG1hdGNoIHQgd2l0aFxuICB8IEVycm9yIGUgLT5cbiAgICBsZXQlYmluZCAoKSA9IFRyYW5zcG9ydC5jbG9zZSB0cmFuc3BvcnQgaW5cbiAgICBoYW5kbGVfaGFuZHNoYWtlX2Vycm9yIGVcbiAgfCBPayB0IC0+XG4gICAgTW9uaXRvci5wcm90ZWN0XG4gICAgICB+cnVuOlxuICAgICAgICBgU2NoZWR1bGVcbiAgICAgIH5yZXN0OmBMb2dcbiAgICAgIH5maW5hbGx5OihmdW4gKCkgLT5cbiAgICAgICAgY2xvc2UgdCB+cmVhc29uOihJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLndpdGhfY2xvc2UgZmluaXNoZWRcIikpXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgICBsZXQlYmluZCByZXN1bHQgPSBkaXNwYXRjaF9xdWVyaWVzIHQgaW5cbiAgICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgICBtYXRjaCBpbXBsZW1lbnRhdGlvbnMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICB8IFNvbWUgXyAtPiBjbG9zZV9maW5pc2hlZCB0XG4gICAgICAgICBpblxuICAgICAgICAgcmVzdWx0KVxuOztcblxubGV0IHNlcnZlcl93aXRoX2Nsb3NlXG4gICAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICAgID9oZWFydGJlYXRfY29uZmlnXG4gICAgICA/ZGVzY3JpcHRpb25cbiAgICAgID90aW1lX3NvdXJjZVxuICAgICAgdHJhbnNwb3J0XG4gICAgICB+aW1wbGVtZW50YXRpb25zXG4gICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgfm9uX2hhbmRzaGFrZV9lcnJvclxuICA9XG4gIGxldCBvbl9oYW5kc2hha2VfZXJyb3IgPVxuICAgIG1hdGNoIG9uX2hhbmRzaGFrZV9lcnJvciB3aXRoXG4gICAgfCBgQ2FsbCBmIC0+IGBDYWxsIGZcbiAgICB8IGBSYWlzZSAtPiBgUmFpc2VcbiAgICB8IGBJZ25vcmUgLT4gYENhbGwgKGZ1biBfIC0+IERlZmVycmVkLnVuaXQpXG4gIGluXG4gIHdpdGhfY2xvc2VcbiAgICA/aGFuZHNoYWtlX3RpbWVvdXRcbiAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgID9kZXNjcmlwdGlvblxuICAgID90aW1lX3NvdXJjZVxuICAgIHRyYW5zcG9ydFxuICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgIH5vbl9oYW5kc2hha2VfZXJyb3JcbiAgICB+ZGlzcGF0Y2hfcXVlcmllczooZnVuIF8gLT4gRGVmZXJyZWQudW5pdClcbjs7XG5cbmxldCBjbG9zZVxuICAgICAgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dFxuICAgICAgPyhyZWFzb24gPSBJbmZvLm9mX3N0cmluZyBcIlJwYy5Db25uZWN0aW9uLmNsb3NlXCIpXG4gICAgICB0XG4gID1cbiAgY2xvc2UgP3N0cmVhbWluZ19yZXNwb25zZXNfZmx1c2hfdGltZW91dCB+cmVhc29uIHRcbjs7XG5cbm1vZHVsZSBDbGllbnRfaW1wbGVtZW50YXRpb25zID0gc3RydWN0XG4gIHR5cGUgbm9ucmVjICdzIHQgPVxuICAgIHsgY29ubmVjdGlvbl9zdGF0ZSA6IHQgLT4gJ3NcbiAgICA7IGltcGxlbWVudGF0aW9ucyA6ICdzIEltcGxlbWVudGF0aW9ucy50XG4gICAgfVxuXG4gIGxldCBudWxsICgpID1cbiAgICB7IGNvbm5lY3Rpb25fc3RhdGUgPSAoZnVuIF8gLT4gKCkpOyBpbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnMubnVsbCAoKSB9XG4gIDs7XG5lbmRcbiIsIlxub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBVdGlsXG5tb2R1bGUgUCA9IFByb3RvY29sXG5tb2R1bGUgRGVzY3JpcHRpb24gPSBEZXNjcmlwdGlvblxubW9kdWxlIE9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvblxubW9kdWxlIEltcGxlbWVudGF0aW9uID0gSW1wbGVtZW50YXRpb25cbm1vZHVsZSBJbXBsZW1lbnRhdGlvbnMgPSBJbXBsZW1lbnRhdGlvbnNcbm1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcbm1vZHVsZSBDb25uZWN0aW9uID0gQ29ubmVjdGlvblxuXG4oKiBUaGUgUmVzdWx0IG1vbmFkIGlzIGFsc28gdXNlZC4gKilcbmxldCAoID4+PX4gKSA9IFJlc3VsdC4oID4+PSApXG5sZXQgKCA+Pnx+ICkgPSBSZXN1bHQuKCA+PnwgKVxuXG5tb2R1bGUgUnBjX2NvbW1vbiA9IHN0cnVjdFxuICBsZXQgZGlzcGF0Y2hfcmF3J1xuICAgICAgICBjb25uXG4gICAgICAgIH50YWdcbiAgICAgICAgfnZlcnNpb25cbiAgICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgICAgfnF1ZXJ5XG4gICAgICAgIH5xdWVyeV9pZFxuICAgICAgICB+cmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgcXVlcnkgPSB7IFAuUXVlcnkudGFnOyB2ZXJzaW9uOyBpZCA9IHF1ZXJ5X2lkOyBkYXRhID0gcXVlcnkgfSBpblxuICAgIG1hdGNoIENvbm5lY3Rpb24uZGlzcGF0Y2ggY29ubiB+cmVzcG9uc2VfaGFuZGxlciB+YmluX3dyaXRlcl9xdWVyeSB+cXVlcnkgd2l0aFxuICAgIHwgT2sgKCkgLT4gT2sgKClcbiAgICB8IEVycm9yIGBDbG9zZWQgLT4gRXJyb3IgUnBjX2Vycm9yLkNvbm5lY3Rpb25fY2xvc2VkXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoX3JhdyBjb25uIH50YWcgfnZlcnNpb24gfmJpbl93cml0ZXJfcXVlcnkgfnF1ZXJ5IH5xdWVyeV9pZCB+ZiA9XG4gICAgbGV0IHJlc3BvbnNlX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgIChtYXRjaFxuICAgICAgIGRpc3BhdGNoX3JhdydcbiAgICAgICAgIGNvbm5cbiAgICAgICAgIH50YWdcbiAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICB+YmluX3dyaXRlcl9xdWVyeVxuICAgICAgICAgfnF1ZXJ5XG4gICAgICAgICB+cXVlcnlfaWRcbiAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOihTb21lIChmIHJlc3BvbnNlX2l2YXIpKVxuICAgICB3aXRoXG4gICAgIHwgT2sgKCkgLT4gKClcbiAgICAgfCBFcnJvciBfIGFzIGUgLT4gSXZhci5maWxsIHJlc3BvbnNlX2l2YXIgZSk7XG4gICAgSXZhci5yZWFkIHJlc3BvbnNlX2l2YXJcbiAgOztcbmVuZFxuXG5sZXQgc2hhcGVzIGxzdCA9XG4gIFNleHAuTGlzdFxuICAgIChMaXN0Lm1hcCBsc3QgfmY6KGZ1biAobmFtZSwgc2hhcGUpIC0+XG4gICAgICAgWyVtZXNzYWdlXG4gICAgICAgICBcIlwiIH5fOihuYW1lIDogc3RyaW5nKSB+XzooQmluX3Byb3QuU2hhcGUuZXZhbF90b19kaWdlc3Rfc3RyaW5nIHNoYXBlIDogc3RyaW5nKV0pKVxuOztcblxubW9kdWxlIFJwYyA9IHN0cnVjdFxuICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgeyB0YWcgOiBQLlJwY190YWcudFxuICAgIDsgdmVyc2lvbiA6IGludFxuICAgIDsgYmluX3F1ZXJ5IDogJ3F1ZXJ5IEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgYmluX3Jlc3BvbnNlIDogJ3Jlc3BvbnNlIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgcXVlcnlfdHlwZV9pZCA6ICdxdWVyeSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHJlc3BvbnNlX3R5cGVfaWQgOiAncmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlID1cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCByZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTpyZXNwb25zZVwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX3Jlc3BvbnNlXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyByZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5xdWVyeV90eXBlX2lkXG4gIGxldCByZXNwb25zZV90eXBlX2lkIHQgPSB0LnJlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5iaW5fcmVzcG9uc2VcbiAgbGV0IHNoYXBlcyB0ID0gc2hhcGVzIFsgXCJxdWVyeVwiLCB0LmJpbl9xdWVyeS5zaGFwZTsgXCJyZXNwb25zZVwiLCB0LmJpbl9yZXNwb25zZS5zaGFwZSBdXG5cbiAgbGV0IGltcGxlbWVudCA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID0gUnBjICh0LmJpbl9xdWVyeS5yZWFkZXIsIHQuYmluX3Jlc3BvbnNlLndyaXRlciwgZiwgRGVmZXJyZWQpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgaW1wbGVtZW50JyA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSkgdCBmID1cbiAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgOyBmID0gUnBjICh0LmJpbl9xdWVyeS5yZWFkZXIsIHQuYmluX3Jlc3BvbnNlLndyaXRlciwgZiwgQmxvY2tpbmcpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICBpdmFyXG4gICAgICAgICAgKHJlc3BvbnNlIDogXyBQLlJlc3BvbnNlLnQpXG4gICAgICAgICAgfnJlYWRfYnVmZmVyXG4gICAgICAgICAgfnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgID1cbiAgICAgIGxldCByZXNwb25zZSA9XG4gICAgICAgIHJlc3BvbnNlLmRhdGFcbiAgICAgICAgPj49fiBmdW4gbGVuIC0+XG4gICAgICAgIGJpbl9yZWFkX2Zyb21fYmlnc3RyaW5nXG4gICAgICAgICAgdC5iaW5fcmVzcG9uc2UucmVhZGVyXG4gICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHJwYyByZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgIGluXG4gICAgICBJdmFyLmZpbGwgaXZhciByZXNwb25zZTtcbiAgICAgIGByZW1vdmUgKE9rICgpKVxuICAgIGluXG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3Jhd1xuICAgICAgY29ublxuICAgICAgfnRhZzp0LnRhZ1xuICAgICAgfnZlcnNpb246dC52ZXJzaW9uXG4gICAgICB+YmluX3dyaXRlcl9xdWVyeTp0LmJpbl9xdWVyeS53cml0ZXJcbiAgICAgIH5xdWVyeVxuICAgICAgfnF1ZXJ5X2lkXG4gICAgICB+ZjpyZXNwb25zZV9oYW5kbGVyXG4gIDs7XG5cbiAgbGV0IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdCA9XG4gICAgUnBjX3Jlc3VsdC5vcl9lcnJvclxuICAgICAgcmVzdWx0XG4gICAgICB+cnBjX2Rlc2NyaXB0aW9uOihkZXNjcmlwdGlvbiB0KVxuICAgICAgfmNvbm5lY3Rpb25fZGVzY3JpcHRpb246KENvbm5lY3Rpb24uZGVzY3JpcHRpb24gY29ubilcbiAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSBpblxuICAgIHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9leG4gdCBjb25uIHF1ZXJ5ID0gZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID4+fCBPcl9lcnJvci5va19leG5cblxuICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgbW9kdWxlIFJlc3BvbmRlciA9IEltcGxlbWVudGF0aW9ucy5FeHBlcnQuUnBjX3Jlc3BvbmRlclxuXG4gICAgbGV0IG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBkb19kaXNwYXRjaFxuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgPVxuICAgICAgbGV0IHJlc3BvbnNlX2hhbmRsZXIgOiBDb25uZWN0aW9uLnJlc3BvbnNlX2hhbmRsZXIgPVxuICAgICAgICBmdW4gcmVzcG9uc2UgfnJlYWRfYnVmZmVyIH5yZWFkX2J1ZmZlcl9wb3NfcmVmIC0+XG4gICAgICAgICAgbWF0Y2ggcmVzcG9uc2UuZGF0YSB3aXRoXG4gICAgICAgICAgfCBFcnJvciBlIC0+XG4gICAgICAgICAgICBoYW5kbGVfZXJyb3JcbiAgICAgICAgICAgICAgKEVycm9yLnRfb2Zfc2V4cFxuICAgICAgICAgICAgICAgICAoUnBjX2Vycm9yLnNleHBfb2ZfdFxuICAgICAgICAgICAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBbJXNleHBcbiAgICAgICAgICAgICAgICAgICAgICAgIChEZWZlcnJlZC5wZWVrIChDb25uZWN0aW9uLmNsb3NlX3JlYXNvbiB+b25fY2xvc2U6YHN0YXJ0ZWQgY29ubilcbiAgICAgICAgICAgICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICAgICAgICAgICAgZSkpO1xuICAgICAgICAgICAgYHJlbW92ZSAoT2sgKCkpXG4gICAgICAgICAgfCBPayBsZW4gLT5cbiAgICAgICAgICAgIGxldCBsZW4gPSAobGVuIDogTmF0MC50IDo+IGludCkgaW5cbiAgICAgICAgICAgIGxldCBkID0gaGFuZGxlX3Jlc3BvbnNlIHJlYWRfYnVmZmVyIH5wb3M6IXJlYWRfYnVmZmVyX3Bvc19yZWYgfmxlbiBpblxuICAgICAgICAgICAgcmVhZF9idWZmZXJfcG9zX3JlZiA6PSAhcmVhZF9idWZmZXJfcG9zX3JlZiArIGxlbjtcbiAgICAgICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgZCB0aGVuIGByZW1vdmUgKE9rICgpKSBlbHNlIGByZW1vdmVfYW5kX3dhaXQgZFxuICAgICAgaW5cbiAgICAgIGRvX2Rpc3BhdGNoXG4gICAgICAgIGNvbm5cbiAgICAgICAgfnRhZzooUC5ScGNfdGFnLm9mX3N0cmluZyBycGNfdGFnKVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICBidWZcbiAgICAgICAgfnBvc1xuICAgICAgICB+bGVuXG4gICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOihTb21lIHJlc3BvbnNlX2hhbmRsZXIpXG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaCBjb25uIH5ycGNfdGFnIH52ZXJzaW9uIGJ1ZiB+cG9zIH5sZW4gfmhhbmRsZV9yZXNwb25zZSB+aGFuZGxlX2Vycm9yID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG1ha2VfZGlzcGF0Y2hcbiAgICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgICAgICB+aGFuZGxlX3Jlc3BvbnNlXG4gICAgICAgICAgfmhhbmRsZV9lcnJvclxuICAgICAgd2l0aFxuICAgICAgfCBPayAoKSAtPiBgT2tcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuXG4gICAgbGV0IHNjaGVkdWxlX2Rpc3BhdGNoXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH5ycGNfdGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5oYW5kbGVfcmVzcG9uc2VcbiAgICAgICAgICB+aGFuZGxlX2Vycm9yXG4gICAgICA9XG4gICAgICBtYXRjaFxuICAgICAgICBtYWtlX2Rpc3BhdGNoXG4gICAgICAgICAgQ29ubmVjdGlvbi5zY2hlZHVsZV9kaXNwYXRjaF9iaWdzdHJpbmdcbiAgICAgICAgICBjb25uXG4gICAgICAgICAgfnJwY190YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfmhhbmRsZV9yZXNwb25zZVxuICAgICAgICAgIH5oYW5kbGVfZXJyb3JcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgZCAtPiBgRmx1c2hlZCBkXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIHR5cGUgaW1wbGVtZW50YXRpb25fcmVzdWx0ID0gSW1wbGVtZW50YXRpb24uRXhwZXJ0LmltcGxlbWVudGF0aW9uX3Jlc3VsdCA9XG4gICAgICB8IFJlcGxpZWRcbiAgICAgIHwgRGVsYXllZF9yZXNwb25zZSBvZiB1bml0IERlZmVycmVkLnRcblxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIHQgZiA9XG4gICAgICB7IEltcGxlbWVudGF0aW9uLnRhZyA9IHQudGFnXG4gICAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICAgIDsgZiA9IFJwY19leHBlcnQgKGYsIERlZmVycmVkKVxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnQnID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNvbnRpbnVlKSB0IGYgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgICAgOyB2ZXJzaW9uID0gdC52ZXJzaW9uXG4gICAgICA7IGYgPSBScGNfZXhwZXJ0IChmLCBCbG9ja2luZylcbiAgICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgICA7IG9uX2V4Y2VwdGlvblxuICAgICAgfVxuICAgIDs7XG5cbiAgICBsZXQgaW1wbGVtZW50X2Zvcl90YWdfYW5kX3ZlcnNpb25cbiAgICAgICAgICA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSlcbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgZlxuICAgICAgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWdcbiAgICAgIDsgdmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZiwgRGVmZXJyZWQpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKFNleHAuQXRvbSBcIlVua25vd25cIilcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBpbXBsZW1lbnRfZm9yX3RhZ19hbmRfdmVyc2lvbidcbiAgICAgICAgICA/KG9uX2V4Y2VwdGlvbiA9IE9uX2V4Y2VwdGlvbi5jb250aW51ZSlcbiAgICAgICAgICB+cnBjX3RhZ1xuICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgZlxuICAgICAgPVxuICAgICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIHJwY190YWdcbiAgICAgIDsgdmVyc2lvblxuICAgICAgOyBmID0gUnBjX2V4cGVydCAoZiwgQmxvY2tpbmcpXG4gICAgICA7IHNoYXBlcyA9IGxhenkgKFNleHAuQXRvbSBcIlVua25vd25cIilcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcbiAgZW5kXG5lbmRcblxubW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgdHlwZSAnbXNnIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9tc2cgOiAnbXNnIEJpbl9wcm90LlR5cGVfY2xhc3MudFxuICAgIDsgbXNnX3R5cGVfaWQgOiAnbXNnIFR5cGVfZXF1YWwuSWQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzXVxuXG4gIGxldCBuYW1lIHQgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnXG5cbiAgbGV0IGNyZWF0ZSB+bmFtZSB+dmVyc2lvbiB+YmluX21zZyA9XG4gICAgbGV0IG1zZ190eXBlX2lkID0gVHlwZV9lcXVhbC5JZC5jcmVhdGUgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9Om1zZ1wiXSBzZXhwX29mX29wYXF1ZSBpblxuICAgIHsgdGFnID0gUC5ScGNfdGFnLm9mX3N0cmluZyBuYW1lOyB2ZXJzaW9uOyBiaW5fbXNnOyBtc2dfdHlwZV9pZCB9XG4gIDs7XG5cbiAgbGV0IHNoYXBlcyB0ID0gc2hhcGVzIFsgXCJtc2dcIiwgdC5iaW5fbXNnLnNoYXBlIF1cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgbXNnX3R5cGVfaWQgdCA9IHQubXNnX3R5cGVfaWRcblxuICBsZXQgaW1wbGVtZW50ID8ob25fZXhjZXB0aW9uID0gT25fZXhjZXB0aW9uLmNsb3NlX2Nvbm5lY3Rpb24pIHQgZiA9XG4gICAgeyBJbXBsZW1lbnRhdGlvbi50YWcgPSB0LnRhZ1xuICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgIDsgZiA9IE9uZV93YXkgKHQuYmluX21zZy5yZWFkZXIsIGYpXG4gICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICA7IG9uX2V4Y2VwdGlvblxuICAgIH1cbiAgOztcblxuICBsZXQgZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0IHF1ZXJ5X2lkID0gUC5RdWVyeV9pZC5jcmVhdGUgKCkgaW5cbiAgICBScGNfY29tbW9uLmRpc3BhdGNoX3JhdydcbiAgICAgIGNvbm5cbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnk6dC5iaW5fbXNnLndyaXRlclxuICAgICAgfnF1ZXJ5XG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgOztcblxuICBsZXQgcnBjX3Jlc3VsdF90b19vcl9lcnJvciB0IGNvbm4gcmVzdWx0ID1cbiAgICBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICByZXN1bHRcbiAgICAgIH5ycGNfZGVzY3JpcHRpb246KGRlc2NyaXB0aW9uIHQpXG4gICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgfmNvbm5lY3Rpb25fY2xvc2Vfc3RhcnRlZDooQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gIDs7XG5cbiAgbGV0IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA9XG4gICAgZGlzcGF0Y2gnIHQgY29ubiBxdWVyeSB8PiBmdW4gcmVzdWx0IC0+IHJwY19yZXN1bHRfdG9fb3JfZXJyb3IgdCBjb25uIHJlc3VsdFxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9leG4gdCBjb25uIHF1ZXJ5ID0gT3JfZXJyb3Iub2tfZXhuIChkaXNwYXRjaCB0IGNvbm4gcXVlcnkpXG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIGxldCBpbXBsZW1lbnQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY2xvc2VfY29ubmVjdGlvbikgdCBmID1cbiAgICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICAgIDsgdmVyc2lvbiA9IHQudmVyc2lvblxuICAgICAgOyBmID0gT25lX3dheV9leHBlcnQgZlxuICAgICAgOyBzaGFwZXMgPSBsYXp5IChzaGFwZXMgdClcbiAgICAgIDsgb25fZXhjZXB0aW9uXG4gICAgICB9XG4gICAgOztcblxuICAgIGxldCBkaXNwYXRjaCB7IHRhZzsgdmVyc2lvbjsgYmluX21zZyA9IF87IG1zZ190eXBlX2lkID0gXyB9IGNvbm4gYnVmIH5wb3MgfmxlbiA9XG4gICAgICBtYXRjaFxuICAgICAgICBDb25uZWN0aW9uLmRpc3BhdGNoX2JpZ3N0cmluZ1xuICAgICAgICAgIGNvbm5cbiAgICAgICAgICB+dGFnXG4gICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICBidWZcbiAgICAgICAgICB+cG9zXG4gICAgICAgICAgfmxlblxuICAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgIHdpdGhcbiAgICAgIHwgT2sgKCkgLT4gYE9rXG4gICAgICB8IEVycm9yIGBDbG9zZWQgLT4gYENvbm5lY3Rpb25fY2xvc2VkXG4gICAgOztcblxuICAgIGxldCBzY2hlZHVsZV9kaXNwYXRjaFxuICAgICAgICAgIHsgdGFnOyB2ZXJzaW9uOyBiaW5fbXNnID0gXzsgbXNnX3R5cGVfaWQgPSBfIH1cbiAgICAgICAgICBjb25uXG4gICAgICAgICAgYnVmXG4gICAgICAgICAgfnBvc1xuICAgICAgICAgIH5sZW5cbiAgICAgID1cbiAgICAgIG1hdGNoXG4gICAgICAgIENvbm5lY3Rpb24uc2NoZWR1bGVfZGlzcGF0Y2hfYmlnc3RyaW5nXG4gICAgICAgICAgY29ublxuICAgICAgICAgIH50YWdcbiAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgIGJ1ZlxuICAgICAgICAgIH5wb3NcbiAgICAgICAgICB+bGVuXG4gICAgICAgICAgfnJlc3BvbnNlX2hhbmRsZXI6Tm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBPayBmbHVzaGVkIC0+IGBGbHVzaGVkIGZsdXNoZWRcbiAgICAgIHwgRXJyb3IgYENsb3NlZCAtPiBgQ29ubmVjdGlvbl9jbG9zZWRcbiAgICA7O1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9jbG9zZV9yZWFzb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IENsb3NlZF9sb2NhbGx5XG4gICAgfCBDbG9zZWRfcmVtb3RlbHlcbiAgICB8IEVycm9yIG9mIEVycm9yLnRcbiAgW0BAZGVyaXZpbmcgYmluX2lvLCBjb21wYXJlLCBzZXhwXVxuXG4gIG1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgbm9ucmVjIHQgPSB0ID1cbiAgICAgICAgfCBDbG9zZWRfbG9jYWxseVxuICAgICAgICB8IENsb3NlZF9yZW1vdGVseVxuICAgICAgICB8IEVycm9yIG9mIEVycm9yLlN0YWJsZS5WMi50XG4gICAgICBbQEBkZXJpdmluZyBiaW5faW8sIGNvbXBhcmUsIHNleHBdXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbigqIHRoZSBiYXNpcyBvZiB0aGUgaW1wbGVtZW50YXRpb25zIG9mIFBpcGVfcnBjIGFuZCBTdGF0ZV9ycGMgKilcbm1vZHVsZSBTdHJlYW1pbmdfcnBjID0gc3RydWN0XG4gIG1vZHVsZSBJbml0aWFsX21lc3NhZ2UgPSBQLlN0cmVhbV9pbml0aWFsX21lc3NhZ2VcblxuICB0eXBlICgncXVlcnksICdpbml0aWFsX3Jlc3BvbnNlLCAndXBkYXRlX3Jlc3BvbnNlLCAnZXJyb3JfcmVzcG9uc2UpIHQgPVxuICAgIHsgdGFnIDogUC5ScGNfdGFnLnRcbiAgICA7IHZlcnNpb24gOiBpbnRcbiAgICA7IGJpbl9xdWVyeSA6ICdxdWVyeSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9pbml0aWFsX3Jlc3BvbnNlIDogJ2luaXRpYWxfcmVzcG9uc2UgQmluX3Byb3QuVHlwZV9jbGFzcy50XG4gICAgOyBiaW5fdXBkYXRlX3Jlc3BvbnNlIDogJ3VwZGF0ZV9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGJpbl9lcnJvcl9yZXNwb25zZSA6ICdlcnJvcl9yZXNwb25zZSBCaW5fcHJvdC5UeXBlX2NsYXNzLnRcbiAgICA7IGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICA7IHF1ZXJ5X3R5cGVfaWQgOiAncXVlcnkgVHlwZV9lcXVhbC5JZC50XG4gICAgOyBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQgOiAnaW5pdGlhbF9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkIDogJ3VwZGF0ZV9yZXNwb25zZSBUeXBlX2VxdWFsLklkLnRcbiAgICA7IGVycm9yX3Jlc3BvbnNlX3R5cGVfaWQgOiAnZXJyb3JfcmVzcG9uc2UgVHlwZV9lcXVhbC5JZC50XG4gICAgfVxuXG4gIGxldCBjcmVhdGVcbiAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFja1xuICAgICAgICB+bmFtZVxuICAgICAgICB+dmVyc2lvblxuICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZVxuICAgICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZVxuICAgICAgICB+YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZVxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgY2xpZW50X3B1c2hlc19iYWNrID1cbiAgICAgIG1hdGNoIGNsaWVudF9wdXNoZXNfYmFjayB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSAoKSAtPiB0cnVlXG4gICAgaW5cbiAgICBsZXQgcXVlcnlfdHlwZV9pZCA9XG4gICAgICBUeXBlX2VxdWFsLklkLmNyZWF0ZSB+bmFtZTpbJXN0cmluZyBcIiV7bmFtZX06cXVlcnlcIl0gc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGVcbiAgICAgICAgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OiV7YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2V9XCJdXG4gICAgICAgIHNleHBfb2Zfb3BhcXVlXG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWQgPVxuICAgICAgVHlwZV9lcXVhbC5JZC5jcmVhdGVcbiAgICAgICAgfm5hbWU6WyVzdHJpbmcgXCIle25hbWV9OiV7YWxpYXNfZm9yX3VwZGF0ZV9yZXNwb25zZX1cIl1cbiAgICAgICAgc2V4cF9vZl9vcGFxdWVcbiAgICBpblxuICAgIGxldCBlcnJvcl9yZXNwb25zZV90eXBlX2lkID1cbiAgICAgIFR5cGVfZXF1YWwuSWQuY3JlYXRlIH5uYW1lOlslc3RyaW5nIFwiJXtuYW1lfTplcnJvclwiXSBzZXhwX29mX29wYXF1ZVxuICAgIGluXG4gICAgeyB0YWcgPSBQLlJwY190YWcub2Zfc3RyaW5nIG5hbWVcbiAgICA7IHZlcnNpb25cbiAgICA7IGJpbl9xdWVyeVxuICAgIDsgYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgICA7IGJpbl91cGRhdGVfcmVzcG9uc2VcbiAgICA7IGJpbl9lcnJvcl9yZXNwb25zZSA9IGJpbl9lcnJvclxuICAgIDsgY2xpZW50X3B1c2hlc19iYWNrXG4gICAgOyBxdWVyeV90eXBlX2lkXG4gICAgOyBpbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWRcbiAgICA7IHVwZGF0ZV9yZXNwb25zZV90eXBlX2lkXG4gICAgOyBlcnJvcl9yZXNwb25zZV90eXBlX2lkXG4gICAgfVxuICA7O1xuXG4gIGxldCBtYWtlX2luaXRpYWxfbWVzc2FnZSB4ID1cbiAgICB7IEluaXRpYWxfbWVzc2FnZS51bnVzZWRfcXVlcnlfaWQgPSBQLlVudXNlZF9xdWVyeV9pZC50OyBpbml0aWFsID0geCB9XG4gIDs7XG5cbiAgbGV0IHNoYXBlcyB0ID1cbiAgICBzaGFwZXNcbiAgICAgIFsgXCJxdWVyeVwiLCB0LmJpbl9xdWVyeS5zaGFwZVxuICAgICAgOyBcImluaXRpYWwtcmVzcG9uc2VcIiwgdC5iaW5faW5pdGlhbF9yZXNwb25zZS5zaGFwZVxuICAgICAgOyBcInVwZGF0ZS1yZXNwb25zZVwiLCB0LmJpbl91cGRhdGVfcmVzcG9uc2Uuc2hhcGVcbiAgICAgIDsgXCJlcnJvclwiLCB0LmJpbl9lcnJvcl9yZXNwb25zZS5zaGFwZVxuICAgICAgXVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnRfZ2VuIHQgPyhvbl9leGNlcHRpb24gPSBPbl9leGNlcHRpb24uY29udGludWUpIGltcGwgPVxuICAgIGxldCBiaW5faW5pdF93cml0ZXIgPVxuICAgICAgSW5pdGlhbF9tZXNzYWdlLmJpbl93cml0ZXJfdFxuICAgICAgICB0LmJpbl9pbml0aWFsX3Jlc3BvbnNlLndyaXRlclxuICAgICAgICB0LmJpbl9lcnJvcl9yZXNwb25zZS53cml0ZXJcbiAgICBpblxuICAgIHsgSW1wbGVtZW50YXRpb24udGFnID0gdC50YWdcbiAgICA7IHZlcnNpb24gPSB0LnZlcnNpb25cbiAgICA7IGYgPVxuICAgICAgICBTdHJlYW1pbmdfcnBjXG4gICAgICAgICAgKHQuYmluX3F1ZXJ5LnJlYWRlciwgYmluX2luaXRfd3JpdGVyLCB0LmJpbl91cGRhdGVfcmVzcG9uc2Uud3JpdGVyLCBpbXBsKVxuICAgIDsgc2hhcGVzID0gbGF6eSAoc2hhcGVzIHQpXG4gICAgOyBvbl9leGNlcHRpb25cbiAgICB9XG4gIDs7XG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgbGV0IGYgYyBxdWVyeSA9XG4gICAgICBtYXRjaCVtYXAgZiBjIHF1ZXJ5IHdpdGhcbiAgICAgIHwgRXJyb3IgZXJyIC0+IEVycm9yIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoRXJyb3IgZXJyKSlcbiAgICAgIHwgT2sgKGluaXRpYWwsIHBpcGUpIC0+IE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSAoT2sgaW5pdGlhbCksIHBpcGUpXG4gICAgaW5cbiAgICBpbXBsZW1lbnRfZ2VuIHQgP29uX2V4Y2VwdGlvbiAoUGlwZSBmKVxuICA7O1xuXG4gIGxldCBpbXBsZW1lbnRfZGlyZWN0ID9vbl9leGNlcHRpb24gdCBmID1cbiAgICBsZXQgZiBjIHF1ZXJ5IHdyaXRlciA9XG4gICAgICBtYXRjaCVtYXAgZiBjIHF1ZXJ5IHdyaXRlciB3aXRoXG4gICAgICB8IEVycm9yIF8gYXMgeCAtPiBFcnJvciAobWFrZV9pbml0aWFsX21lc3NhZ2UgeClcbiAgICAgIHwgT2sgXyBhcyB4IC0+IE9rIChtYWtlX2luaXRpYWxfbWVzc2FnZSB4KVxuICAgIGluXG4gICAgaW1wbGVtZW50X2dlbiA/b25fZXhjZXB0aW9uIHQgKERpcmVjdCBmKVxuICA7O1xuXG4gIGxldCBhYm9ydCB0IGNvbm4gaWQgPVxuICAgIGxldCBxdWVyeSA9IHsgUC5RdWVyeS50YWcgPSB0LnRhZzsgdmVyc2lvbiA9IHQudmVyc2lvbjsgaWQ7IGRhdGEgPSBgQWJvcnQgfSBpblxuICAgIGlnbm9yZVxuICAgICAgKENvbm5lY3Rpb24uZGlzcGF0Y2hcbiAgICAgICAgIGNvbm5cbiAgICAgICAgIH5iaW5fd3JpdGVyX3F1ZXJ5OlAuU3RyZWFtX3F1ZXJ5LmJpbl93cml0ZXJfbmF0MF90XG4gICAgICAgICB+cXVlcnlcbiAgICAgICAgIH5yZXNwb25zZV9oYW5kbGVyOk5vbmVcbiAgICAgICA6ICh1bml0LCBbIGBDbG9zZWQgXSkgUmVzdWx0LnQpXG4gIDs7XG5cbiAgbW9kdWxlIFBpcGVfbWVzc2FnZSA9IHN0cnVjdFxuICAgIHR5cGUgJ2EgdCA9XG4gICAgICB8IFVwZGF0ZSBvZiAnYVxuICAgICAgfCBDbG9zZWQgb2YgWyBgQnlfcmVtb3RlX3NpZGUgfCBgRXJyb3Igb2YgRXJyb3IudCBdXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3Jlc3BvbnNlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQ29udGludWVcbiAgICAgIHwgV2FpdCBvZiB1bml0IERlZmVycmVkLnRcbiAgZW5kXG5cbiAgbW9kdWxlIFBpcGVfbWV0YWRhdGEgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgeyBxdWVyeV9pZCA6IFAuUXVlcnlfaWQudFxuICAgICAgOyBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IERlZmVycmVkLnRcbiAgICAgIH1cblxuICAgIGxldCBpZCB0ID0gdC5xdWVyeV9pZFxuICAgIGxldCBjbG9zZV9yZWFzb24gdCA9IHQuY2xvc2VfcmVhc29uXG4gIGVuZFxuXG4gIG1vZHVsZSBSZXNwb25zZV9zdGF0ZSA9IHN0cnVjdFxuICAgIG1vZHVsZSBVcGRhdGVfaGFuZGxlciA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0gJ2EgUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9yZXNwb25zZS50XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgSW5pdGlhbCA9IHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCdxLCAnaSwgJ3UsICdlLCAnZXh0cmEpIHQgPVxuICAgICAgICB7IHJwYyA6ICgncSwgJ2ksICd1LCAnZSkgdFxuICAgICAgICA7IHF1ZXJ5X2lkIDogUC5RdWVyeV9pZC50XG4gICAgICAgIDsgbWFrZV91cGRhdGVfaGFuZGxlciA6IHVuaXQgLT4gJ2V4dHJhICogJ3UgVXBkYXRlX2hhbmRsZXIudFxuICAgICAgICA7IGl2YXIgOiAoUC5RdWVyeV9pZC50ICogJ2kgKiAnZXh0cmEsICdlKSBSZXN1bHQudCBScGNfcmVzdWx0LnQgSXZhci50XG4gICAgICAgIDsgY29ubmVjdGlvbiA6IENvbm5lY3Rpb24udFxuICAgICAgICB9XG4gICAgZW5kXG5cbiAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgdCA9XG4gICAgICAgIHwgV2FpdGluZ19mb3JfaW5pdGlhbF9yZXNwb25zZSA6ICgncSwgJ2ksICd1LCAnZSwgJ2V4dHJhKSBJbml0aWFsLnQgLT4gJ3UgdFxuICAgICAgICB8IFdyaXRpbmdfdXBkYXRlcyBvZiAnYSBCaW5fcHJvdC5UeXBlX2NsYXNzLnJlYWRlciAqICdhIFVwZGF0ZV9oYW5kbGVyLnRcbiAgICBlbmRcblxuICAgIHR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBzdGF0ZSA6ICdhIFN0YXRlLnQgfVxuICBlbmRcblxuICBsZXQgcmVhZF9lcnJvclxuICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uXG4gICAgICAgIChoYW5kbGVyIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50KVxuICAgICAgICBlcnJcbiAgICA9XG4gICAgbGV0IGNvcmVfZXJyID1cbiAgICAgIEVycm9yLnRfb2Zfc2V4cCAoUnBjX2Vycm9yLnNleHBfb2ZfdCB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGVycilcbiAgICBpblxuICAgIGlnbm9yZSAoaGFuZGxlciAoQ2xvc2VkIChgRXJyb3IgY29yZV9lcnIpKSA6IFBpcGVfcmVzcG9uc2UudCk7XG4gICAgYHJlbW92ZSAoRXJyb3IgZXJyKVxuICA7O1xuXG4gIGxldCBlb2YgKGhhbmRsZXIgOiBfIFJlc3BvbnNlX3N0YXRlLlVwZGF0ZV9oYW5kbGVyLnQpID1cbiAgICBpZ25vcmUgKGhhbmRsZXIgKENsb3NlZCBgQnlfcmVtb3RlX3NpZGUpIDogUGlwZV9yZXNwb25zZS50KTtcbiAgICBgcmVtb3ZlIChPayAoKSlcbiAgOztcblxuICBsZXQgcmVzcG9uc2VfaGFuZGxlciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGluaXRpYWxfc3RhdGVcbiAgICA6IENvbm5lY3Rpb24ucmVzcG9uc2VfaGFuZGxlclxuICAgID1cbiAgICBsZXQgb3BlbiBSZXNwb25zZV9zdGF0ZSBpblxuICAgIGxldCBzdGF0ZSA9IHsgc3RhdGUgPSBXYWl0aW5nX2Zvcl9pbml0aWFsX3Jlc3BvbnNlIGluaXRpYWxfc3RhdGUgfSBpblxuICAgIGZ1biByZXNwb25zZSB+cmVhZF9idWZmZXIgfnJlYWRfYnVmZmVyX3Bvc19yZWYgLT5cbiAgICAgIG1hdGNoIHN0YXRlLnN0YXRlIHdpdGhcbiAgICAgIHwgV3JpdGluZ191cGRhdGVzIChiaW5fcmVhZGVyX3VwZGF0ZSwgaGFuZGxlcikgLT5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIFAuU3RyZWFtX3Jlc3BvbnNlX2RhdGEuYmluX3JlYWRlcl9uYXQwX3RcbiAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICAgfmFkZF9sZW46KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgIHwgYEVvZiAtPiAwXG4gICAgICAgICAgICAgICAgIHwgYE9rIChsZW4gOiBOYXQwLnQpIC0+IChsZW4gOj4gaW50KSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGRhdGEgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gcmVhZF9lcnJvciB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uIGhhbmRsZXIgZXJyXG4gICAgICAgICAgICB8IE9rIGBFb2YgLT4gZW9mIGhhbmRsZXJcbiAgICAgICAgICAgIHwgT2sgKGBPayBsZW4pIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgICAgICBiaW5fcmVhZF9mcm9tX2JpZ3N0cmluZ1xuICAgICAgICAgICAgICAgICAgYmluX3JlYWRlcl91cGRhdGVcbiAgICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyXG4gICAgICAgICAgICAgICAgICB+cG9zX3JlZjpyZWFkX2J1ZmZlcl9wb3NfcmVmXG4gICAgICAgICAgICAgICAgICB+bGVuXG4gICAgICAgICAgICAgICAgICB+bG9jYXRpb246XCJjbGllbnQtc2lkZSBzdHJlYW1pbmdfcnBjIHJlc3BvbnNlIHVuLWJpbi1pbydpbmdcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAobWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICB8IEVycm9yIGVyciAtPiByZWFkX2Vycm9yIH5nZXRfY29ubmVjdGlvbl9jbG9zZV9yZWFzb24gaGFuZGxlciBlcnJcbiAgICAgICAgICAgICAgIHwgT2sgZGF0YSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaGFuZGxlciAoVXBkYXRlIGRhdGEpIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgQ29udGludWUgLT4gYGtlZXBcbiAgICAgICAgICAgICAgICAgIHwgV2FpdCBkIC0+IGB3YWl0IGQpKSkpXG4gICAgICB8IFN0YXRlLldhaXRpbmdfZm9yX2luaXRpYWxfcmVzcG9uc2UgaW5pdGlhbF9oYW5kbGVyIC0+XG4gICAgICAgICgqIFdlIG5ldmVyIHVzZSBbYHJlbW92ZSAoRXJyb3IgXyldIGhlcmUsIHNpbmNlIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhlXG4gICAgICAgICAgIGNvbm5lY3Rpb24gc2hvdWxkIGJlIGNsb3NlZCwgYW5kIHRoZXNlIGFyZSBcIm5vcm1hbFwiIGVycm9ycy4gKEluIGNvbnRyYXN0LCB0aGVcbiAgICAgICAgICAgZXJyb3JzIHdlIGdldCBpbiB0aGUgW1dyaXRpbmdfdXBkYXRlc190b19waXBlXSBjYXNlIGluZGljYXRlIG1vcmUgc2VyaW91c1xuICAgICAgICAgICBwcm9ibGVtcy4pIEluc3RlYWQsIHdlIGp1c3QgcHV0IGVycm9ycyBpbiBbaXZhcl0uICopXG4gICAgICAgIGxldCBlcnJvciBlcnIgPVxuICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoRXJyb3IgZXJyKTtcbiAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHJlc3BvbnNlLmRhdGEgd2l0aFxuICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICB8IE9rIGxlbiAtPlxuICAgICAgICAgICBsZXQgaW5pdGlhbCA9XG4gICAgICAgICAgICAgYmluX3JlYWRfZnJvbV9iaWdzdHJpbmdcbiAgICAgICAgICAgICAgIChJbml0aWFsX21lc3NhZ2UuYmluX3JlYWRlcl90XG4gICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIucnBjLmJpbl9pbml0aWFsX3Jlc3BvbnNlLnJlYWRlclxuICAgICAgICAgICAgICAgICAgaW5pdGlhbF9oYW5kbGVyLnJwYy5iaW5fZXJyb3JfcmVzcG9uc2UucmVhZGVyKVxuICAgICAgICAgICAgICAgcmVhZF9idWZmZXJcbiAgICAgICAgICAgICAgIH5wb3NfcmVmOnJlYWRfYnVmZmVyX3Bvc19yZWZcbiAgICAgICAgICAgICAgIH5sZW5cbiAgICAgICAgICAgICAgIH5sb2NhdGlvbjpcImNsaWVudC1zaWRlIHN0cmVhbWluZ19ycGMgaW5pdGlhbF9yZXNwb25zZSB1bi1iaW4taW8naW5nXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgKG1hdGNoIGluaXRpYWwgd2l0aFxuICAgICAgICAgICAgfCBFcnJvciBlcnIgLT4gZXJyb3IgZXJyXG4gICAgICAgICAgICB8IE9rIGluaXRpYWxfbXNnIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBpbml0aWFsX21zZy5pbml0aWFsIHdpdGhcbiAgICAgICAgICAgICAgIHwgRXJyb3IgZXJyIC0+XG4gICAgICAgICAgICAgICAgIEl2YXIuZmlsbCBpbml0aWFsX2hhbmRsZXIuaXZhciAoT2sgKEVycm9yIGVycikpO1xuICAgICAgICAgICAgICAgICBgcmVtb3ZlIChPayAoKSlcbiAgICAgICAgICAgICAgIHwgT2sgaW5pdGlhbCAtPlxuICAgICAgICAgICAgICAgICBsZXQgZXh0cmEsIGhhbmRsZXIgPSBpbml0aWFsX2hhbmRsZXIubWFrZV91cGRhdGVfaGFuZGxlciAoKSBpblxuICAgICAgICAgICAgICAgICBJdmFyLmZpbGxcbiAgICAgICAgICAgICAgICAgICBpbml0aWFsX2hhbmRsZXIuaXZhclxuICAgICAgICAgICAgICAgICAgIChPayAoT2sgKGluaXRpYWxfaGFuZGxlci5xdWVyeV9pZCwgaW5pdGlhbCwgZXh0cmEpKSk7XG4gICAgICAgICAgICAgICAgIHN0YXRlLnN0YXRlXG4gICAgICAgICAgICAgICAgIDwtIFdyaXRpbmdfdXBkYXRlc1xuICAgICAgICAgICAgICAgICAgICAgIChpbml0aWFsX2hhbmRsZXIucnBjLmJpbl91cGRhdGVfcmVzcG9uc2UucmVhZGVyLCBoYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAgYGtlZXApKSlcbiAgOztcblxuICBsZXQgZGlzcGF0Y2hfZ2VuIHQgY29ubiBxdWVyeSBtYWtlX3VwZGF0ZV9oYW5kbGVyID1cbiAgICBsZXQgYmluX3dyaXRlcl9xdWVyeSA9XG4gICAgICBQLlN0cmVhbV9xdWVyeS5iaW5fd3JpdGVyX25lZWRzX2xlbmd0aFxuICAgICAgICAoV3JpdGVyX3dpdGhfbGVuZ3RoLm9mX3R5cGVfY2xhc3MgdC5iaW5fcXVlcnkpXG4gICAgaW5cbiAgICBsZXQgcXVlcnkgPSBgUXVlcnkgcXVlcnkgaW5cbiAgICBsZXQgcXVlcnlfaWQgPSBQLlF1ZXJ5X2lkLmNyZWF0ZSAoKSBpblxuICAgIFJwY19jb21tb24uZGlzcGF0Y2hfcmF3XG4gICAgICBjb25uXG4gICAgICB+cXVlcnlfaWRcbiAgICAgIH50YWc6dC50YWdcbiAgICAgIH52ZXJzaW9uOnQudmVyc2lvblxuICAgICAgfmJpbl93cml0ZXJfcXVlcnlcbiAgICAgIH5xdWVyeVxuICAgICAgfmY6KGZ1biBpdmFyIC0+XG4gICAgICAgIHJlc3BvbnNlX2hhbmRsZXJcbiAgICAgICAgICB+Z2V0X2Nvbm5lY3Rpb25fY2xvc2VfcmVhc29uOihmdW4gKCkgLT5cbiAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAoRGVmZXJyZWQucGVlayAoQ29ubmVjdGlvbi5jbG9zZV9yZWFzb24gfm9uX2Nsb3NlOmBzdGFydGVkIGNvbm4pXG4gICAgICAgICAgICAgICA6IEluZm8udCBvcHRpb24pXSlcbiAgICAgICAgICB7IHJwYyA9IHQ7IHF1ZXJ5X2lkOyBjb25uZWN0aW9uID0gY29ubjsgaXZhcjsgbWFrZV91cGRhdGVfaGFuZGxlciB9KVxuICAgID4+fCBScGNfcmVzdWx0Lm9yX2Vycm9yXG4gICAgICAgICAgfnJwY19kZXNjcmlwdGlvbjp7IG5hbWUgPSBQLlJwY190YWcudG9fc3RyaW5nIHQudGFnOyB2ZXJzaW9uID0gdC52ZXJzaW9uIH1cbiAgICAgICAgICB+Y29ubmVjdGlvbl9kZXNjcmlwdGlvbjooQ29ubmVjdGlvbi5kZXNjcmlwdGlvbiBjb25uKVxuICAgICAgICAgIH5jb25uZWN0aW9uX2Nsb3NlX3N0YXJ0ZWQ6KENvbm5lY3Rpb24uY2xvc2VfcmVhc29uIH5vbl9jbG9zZTpgc3RhcnRlZCBjb25uKVxuICA7O1xuXG4gIGxldCBkaXNwYXRjaF9pdGVyIHQgY29ubiBxdWVyeSB+ZiA9XG4gICAgbWF0Y2glbWFwIGRpc3BhdGNoX2dlbiB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPiAoKSwgZikgd2l0aFxuICAgIHwgKEVycm9yIF8gfCBPayAoRXJyb3IgXykpIGFzIGUgLT4gZVxuICAgIHwgT2sgKE9rIChpZCwgaW5pdCwgKCkpKSAtPiBPayAoT2sgKGlkLCBpbml0KSlcbiAgOztcblxuICBsZXQgZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5ID1cbiAgICBtYXRjaCVtYXBcbiAgICAgIGRpc3BhdGNoX2dlbiB0IGNvbm4gcXVlcnkgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgcGlwZV9yLCBwaXBlX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgICAgICAoKiBTZXQgYSBzbWFsbCBidWZmZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgcHVzaGJhY2sgZXZlbnRzICopXG4gICAgICAgIFBpcGUuc2V0X3NpemVfYnVkZ2V0IHBpcGVfdyAxMDA7XG4gICAgICAgIGxldCBjbG9zZV9yZWFzb24gOiBQaXBlX2Nsb3NlX3JlYXNvbi50IEl2YXIudCA9IEl2YXIuY3JlYXRlICgpIGluXG4gICAgICAgIGxldCBmIDogXyBSZXNwb25zZV9zdGF0ZS5VcGRhdGVfaGFuZGxlci50ID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFVwZGF0ZSBkYXRhIC0+XG4gICAgICAgICAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHBpcGVfdylcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBQaXBlLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgcGlwZV93IGRhdGE7XG4gICAgICAgICAgICAgIGlmIHQuY2xpZW50X3B1c2hlc19iYWNrICYmIFBpcGUubGVuZ3RoIHBpcGVfdyA+PSBQaXBlLnNpemVfYnVkZ2V0IHBpcGVfd1xuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgV2FpdFxuICAgICAgICAgICAgICAgICAgKG1hdGNoJW1hcCBQaXBlLmRvd25zdHJlYW1fZmx1c2hlZCBwaXBlX3cgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgYE9rIHwgYFJlYWRlcl9jbG9zZWQgLT4gKCkpXG4gICAgICAgICAgICAgIGVsc2UgQ29udGludWUpXG4gICAgICAgICAgICBlbHNlIENvbnRpbnVlXG4gICAgICAgICAgfCBDbG9zZWQgcmVhc29uIC0+XG4gICAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHlcbiAgICAgICAgICAgICAgY2xvc2VfcmVhc29uXG4gICAgICAgICAgICAgIChtYXRjaCByZWFzb24gd2l0aFxuICAgICAgICAgICAgICAgfCBgQnlfcmVtb3RlX3NpZGUgLT4gQ2xvc2VkX3JlbW90ZWx5XG4gICAgICAgICAgICAgICB8IGBFcnJvciBlcnIgLT4gRXJyb3IgZXJyKTtcbiAgICAgICAgICAgIFBpcGUuY2xvc2UgcGlwZV93O1xuICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgaW5cbiAgICAgICAgKHBpcGVfciwgY2xvc2VfcmVhc29uKSwgZilcbiAgICB3aXRoXG4gICAgfCAoRXJyb3IgXyB8IE9rIChFcnJvciBfKSkgYXMgZSAtPiBlXG4gICAgfCBPayAoT2sgKGlkLCBpbml0LCAocGlwZV9yLCBjbG9zZV9yZWFzb24pKSkgLT5cbiAgICAgIHVwb24gKFBpcGUuY2xvc2VkIHBpcGVfcikgKGZ1biAoKSAtPlxuICAgICAgICBpZiBub3QgKEl2YXIuaXNfZnVsbCBjbG9zZV9yZWFzb24pXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIGFib3J0IHQgY29ubiBpZDtcbiAgICAgICAgICBJdmFyLmZpbGxfaWZfZW1wdHkgY2xvc2VfcmVhc29uIENsb3NlZF9sb2NhbGx5KSk7XG4gICAgICBsZXQgcGlwZV9tZXRhZGF0YSA6IFBpcGVfbWV0YWRhdGEudCA9XG4gICAgICAgIHsgcXVlcnlfaWQgPSBpZDsgY2xvc2VfcmVhc29uID0gSXZhci5yZWFkIGNsb3NlX3JlYXNvbiB9XG4gICAgICBpblxuICAgICAgT2sgKE9rIChwaXBlX21ldGFkYXRhLCBpbml0LCBwaXBlX3IpKVxuICA7O1xuZW5kXG5cbigqIEEgUGlwZV9ycGMgaXMgbGlrZSBhIFN0cmVhbWluZ19ycGMsIGV4Y2VwdCB3ZSBkb24ndCBjYXJlIGFib3V0IGluaXRpYWwgc3RhdGUgLSB0aHVzXG4gICBpdCBpcyByZXN0cmljdGVkIHRvIHVuaXQgYW5kIHVsdGltYXRlbHkgaWdub3JlZCAqKVxubW9kdWxlIFBpcGVfcnBjID0gc3RydWN0XG4gIHR5cGUgKCdxdWVyeSwgJ3Jlc3BvbnNlLCAnZXJyb3IpIHQgPSAoJ3F1ZXJ5LCB1bml0LCAncmVzcG9uc2UsICdlcnJvcikgU3RyZWFtaW5nX3JwYy50XG5cbiAgbW9kdWxlIElkID0gUC5RdWVyeV9pZFxuICBtb2R1bGUgTWV0YWRhdGEgPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGFcblxuICBsZXQgY3JlYXRlID9jbGllbnRfcHVzaGVzX2JhY2sgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIH5iaW5fZXJyb3IgKCkgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpVbml0LmJpbl90XG4gICAgICB+YmluX3VwZGF0ZV9yZXNwb25zZTpiaW5fcmVzcG9uc2VcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgICgqIFtpbml0aWFsX3Jlc3BvbnNlXSBkb2Vzbid0IHNob3cgdXAgaW4gW1BpcGVfcnBjXSdzIHNpZ25hdHVyZSxcbiAgICAgICAgIHNvIHRoZSB0eXBlLWlkIGNyZWF0ZWQgdXNpbmcgW2FsaWFzX2Zvcl9pbml0aWFsX3Jlc3BvbnNlXSBpc1xuICAgICAgICAgdW5yZWFjaGFibGUuICopXG4gICAgICB+YWxpYXNfZm9yX2luaXRpYWxfcmVzcG9uc2U6XCJcIlxuICAgICAgfmFsaWFzX2Zvcl91cGRhdGVfcmVzcG9uc2U6XCJyZXNwb25zZVwiXG4gICAgICAoKVxuICA7O1xuXG4gIGxldCBiaW5fcXVlcnkgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fcXVlcnlcbiAgbGV0IGJpbl9yZXNwb25zZSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl91cGRhdGVfcmVzcG9uc2VcbiAgbGV0IGJpbl9lcnJvciB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9lcnJvcl9yZXNwb25zZVxuICBsZXQgY2xpZW50X3B1c2hlc19iYWNrIHQgPSB0LlN0cmVhbWluZ19ycGMuY2xpZW50X3B1c2hlc19iYWNrXG5cbiAgbGV0IGltcGxlbWVudCA/b25fZXhjZXB0aW9uIHQgZiA9XG4gICAgU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnQgP29uX2V4Y2VwdGlvbiB0IChmdW4gYSBxdWVyeSAtPlxuICAgICAgbGV0JW1hcCB4ID0gZiBhIHF1ZXJ5IGluXG4gICAgICB4ID4+fH4gZnVuIHggLT4gKCksIHgpXG4gIDs7XG5cbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBJbXBsZW1lbnRhdGlvbnMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgIG1vZHVsZSBHcm91cCA9IHN0cnVjdFxuICAgICAgbW9kdWxlIEJ1ZmZlciA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBCaWdzdHJpbmcudCByZWZcblxuICAgICAgICBsZXQgY3JlYXRlID8oaW5pdGlhbF9zaXplID0gNDA5NikgKCkgPVxuICAgICAgICAgIGlmIGluaXRpYWxfc2l6ZSA8IDBcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgICBcIlJwYy5QaXBlX3JwYy5EaXJlY3Rfc3RyZWFtX3dyaXRlci5Hcm91cC5CdWZmZXIuY3JlYXRlIGdvdCBuZWdhdGl2ZSBidWZmZXIgXFxcbiAgICAgICAgICAgICAgIHNpemVcIlxuICAgICAgICAgICAgICBpbml0aWFsX3NpemVcbiAgICAgICAgICAgICAgSW50LnNleHBfb2ZfdDtcbiAgICAgICAgICByZWYgKEJpZ3N0cmluZy5jcmVhdGUgaW5pdGlhbF9zaXplKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIHR5cGUgJ2EgZGlyZWN0X3N0cmVhbV93cml0ZXIgPSAnYSB0XG5cbiAgICAgIG1vZHVsZSBUID0gSW1wbGVtZW50YXRpb25fdHlwZXMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICAgICAgdHlwZSAnYSB0ID0gJ2EgVC5Hcm91cC50ID1cbiAgICAgICAgeyBtdXRhYmxlIGNvbXBvbmVudHMgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcudFxuICAgICAgICA7IGNvbXBvbmVudHNfYnlfaWQgOiAnYSBjb21wb25lbnQgSWQuVGFibGUudFxuICAgICAgICA7IGJ1ZmZlciA6IEJpZ3N0cmluZy50IHJlZlxuICAgICAgICB9XG5cbiAgICAgIGFuZCAnYSBjb21wb25lbnQgPSAnYSBULkdyb3VwLmNvbXBvbmVudCA9XG4gICAgICAgIHsgd3JpdGVyX2VsZW1lbnRfaW5fZ3JvdXAgOiAnYSBkaXJlY3Rfc3RyZWFtX3dyaXRlciBCYWcuRWx0LnRcbiAgICAgICAgOyBncm91cF9lbGVtZW50X2luX3dyaXRlciA6ICdhIFQuZ3JvdXBfZW50cnkgQmFnLkVsdC50XG4gICAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZSA/YnVmZmVyICgpID1cbiAgICAgICAgbGV0IGJ1ZmZlciA9XG4gICAgICAgICAgbWF0Y2ggYnVmZmVyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgaW5cbiAgICAgICAgeyBjb21wb25lbnRzID0gQmFnLmNyZWF0ZSAoKTsgY29tcG9uZW50c19ieV9pZCA9IElkLlRhYmxlLmNyZWF0ZSAoKTsgYnVmZmVyIH1cbiAgICAgIDs7XG5cbiAgICAgIGxldCBsZW5ndGggdCA9IEJhZy5sZW5ndGggdC5jb21wb25lbnRzXG5cbiAgICAgIGxldCBhZGRfZXhuIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgaWYgaXNfY2xvc2VkIHdyaXRlclxuICAgICAgICB0aGVuXG4gICAgICAgICAgZmFpbHdpdGhcbiAgICAgICAgICAgIFwiUnBjLlBpcGVfcnBjLkRpcmVjdF9zdHJlYW1fd3JpdGVyLkdyb3VwLmFkZF9leG46IGNhbm5vdCBhZGQgYSBjbG9zZWQgZGlyZWN0IFxcXG4gICAgICAgICAgICAgc3RyZWFtIHdyaXRlclwiO1xuICAgICAgICBpZiBIYXNodGJsLm1lbSB0LmNvbXBvbmVudHNfYnlfaWQgd3JpdGVyLmlkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkX2V4bjogdHJ5aW5nIHRvIGFkZCBhIGRpcmVjdCBcXFxuICAgICAgICAgICAgIHN0cmVhbSB3cml0ZXIgdGhhdCBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGdyb3VwXCI7XG4gICAgICAgIChtYXRjaCBCYWcuY2hvb3NlIHQuY29tcG9uZW50cyB3aXRoXG4gICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgIHwgU29tZSBvbmUgLT5cbiAgICAgICAgICAgbGV0IG9uZSA9IEJhZy5FbHQudmFsdWUgb25lIGluXG4gICAgICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAoYmluX3dyaXRlciBvbmUpIChiaW5fd3JpdGVyIHdyaXRlcikpXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJScGMuUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXIuR3JvdXAuYWRkOiBjYW5ub3QgYWRkIGEgZGlyZWN0IHN0cmVhbSBcXFxuICAgICAgICAgICAgICAgIHdyaXRlciB3aXRoIGEgZGlmZmVyZW50IGJpbl93cml0ZXJcIik7XG4gICAgICAgIGxldCB3cml0ZXJfZWxlbWVudF9pbl9ncm91cCA9IEJhZy5hZGQgdC5jb21wb25lbnRzIHdyaXRlciBpblxuICAgICAgICBsZXQgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgPVxuICAgICAgICAgIEJhZy5hZGQgd3JpdGVyLmdyb3VwcyB7IGdyb3VwID0gdDsgZWxlbWVudF9pbl9ncm91cCA9IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwIH1cbiAgICAgICAgaW5cbiAgICAgICAgSGFzaHRibC5hZGRfZXhuXG4gICAgICAgICAgdC5jb21wb25lbnRzX2J5X2lkXG4gICAgICAgICAgfmtleTp3cml0ZXIuaWRcbiAgICAgICAgICB+ZGF0YTp7IHdyaXRlcl9lbGVtZW50X2luX2dyb3VwOyBncm91cF9lbGVtZW50X2luX3dyaXRlciB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgcmVtb3ZlIHQgKHdyaXRlciA6IF8gSW1wbGVtZW50YXRpb25zLkRpcmVjdF9zdHJlYW1fd3JpdGVyLnQpID1cbiAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kX2FuZF9yZW1vdmUgdC5jb21wb25lbnRzX2J5X2lkIHdyaXRlci5pZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgeyB3cml0ZXJfZWxlbWVudF9pbl9ncm91cDsgZ3JvdXBfZWxlbWVudF9pbl93cml0ZXIgfSAtPlxuICAgICAgICAgIEJhZy5yZW1vdmUgdC5jb21wb25lbnRzIHdyaXRlcl9lbGVtZW50X2luX2dyb3VwO1xuICAgICAgICAgIEJhZy5yZW1vdmUgd3JpdGVyLmdyb3VwcyBncm91cF9lbGVtZW50X2luX3dyaXRlclxuICAgICAgOztcblxuICAgICAgbGV0IHRvX2xpc3QgdCA9IEJhZy50b19saXN0IHQuY29tcG9uZW50c1xuXG4gICAgICBsZXQgZmx1c2hlZF9vcl9jbG9zZWQgdCA9XG4gICAgICAgIHRvX2xpc3QgdFxuICAgICAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIHQgLT4gRGVmZXJyZWQuYW55X3VuaXQgWyBmbHVzaGVkIHQ7IGNsb3NlZCB0IF0pXG4gICAgICAgIHw+IERlZmVycmVkLmFsbF91bml0XG4gICAgICA7O1xuXG4gICAgICBsZXQgZmx1c2hlZCB0ID0gZmx1c2hlZF9vcl9jbG9zZWQgdFxuXG4gICAgICBtb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICAgICAgIGxldCB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIEJhZy5pdGVyIHQuY29tcG9uZW50cyB+ZjooZnVuIGRpcmVjdF9zdHJlYW1fd3JpdGVyIC0+XG4gICAgICAgICAgICAoKiBXcml0ZXJzIGFyZSBhdXRvbWF0aWNhbGx5IHNjaGVkdWxlZCB0byBiZSByZW1vdmVkIGZyb20gdGhlaXIgZ3JvdXBzIHdoZW5cbiAgICAgICAgICAgICAgIGNsb3NlZCwgc28gW2BDbG9zZWRdIGhlcmUganVzdCBtZWFucyB0aGF0IHRoZSByZW1vdmFsIGRpZG4ndCBoYXBwZW4geWV0LiAqKVxuICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgIChFeHBlcnQud3JpdGVfd2l0aG91dF9wdXNoYmFjayBkaXJlY3Rfc3RyZWFtX3dyaXRlciB+YnVmIH5wb3MgfmxlblxuICAgICAgICAgICAgICAgOiBbIGBPayB8IGBDbG9zZWQgXSkpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyaXRlIHQgfmJ1ZiB+cG9zIH5sZW4gPVxuICAgICAgICAgIHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmIH5wb3MgfmxlbjtcbiAgICAgICAgICBmbHVzaGVkX29yX2Nsb3NlZCB0XG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB4ID1cbiAgICAgICAgbWF0Y2ggQmFnLmNob29zZSB0LmNvbXBvbmVudHMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIG9uZSAtPlxuICAgICAgICAgIGxldCBvbmUgPSBCYWcuRWx0LnZhbHVlIG9uZSBpblxuICAgICAgICAgIGxldCB7IEJpbl9wcm90LlR5cGVfY2xhc3Mud3JpdGU7IHNpemUgfSA9IGJpbl93cml0ZXIgb25lIGluXG4gICAgICAgICAgbGV0IGJ1ZmZlciA9ICEodC5idWZmZXIpIGluXG4gICAgICAgICAgKCogT3B0aW1pc3RpYyBmaXJzdCB0cnkgKilcbiAgICAgICAgICAobWF0Y2ggd3JpdGUgYnVmZmVyIH5wb3M6MCB4IHdpdGhcbiAgICAgICAgICAgfCBsZW4gLT4gRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlblxuICAgICAgICAgICB8IGV4Y2VwdGlvbiBfIC0+XG4gICAgICAgICAgICAgKCogSXQncyBsaWtlbHkgdGhhdCB0aGUgZXhjZXB0aW9uIGlzIGR1ZSB0byBhIGJ1ZmZlciBvdmVyZmxvdywgc28gcmVzaXplIHRoZVxuICAgICAgICAgICAgICAgIGludGVybmFsIGJ1ZmZlciBhbmQgdHJ5IGFnYWluLiBUZWNobmljYWxseSB3ZSBjb3VsZCBtYXRjaCBvblxuICAgICAgICAgICAgICAgIFtCaW5fcHJvdC5Db21tb24uQnVmZmVyX3Nob3J0XSBvbmx5LCBob3dldmVyIHdlIGNhbid0IGVhc2lseSBlbmZvcmNlIHRoYXRcbiAgICAgICAgICAgICAgICBjdXN0b20gYmluX3dyaXRlX3h4eCBmdW5jdGlvbnMgcmFpc2UgdGhpcyBwYXJ0aWN1bGFyIGV4Y2VwdGlvbiBhbmQgbm90XG4gICAgICAgICAgICAgICAgW0ludmFsaWRfYXJndW1lbnRdIG9yIFtGYWlsdXJlXSBmb3IgaW5zdGFuY2UuICopXG4gICAgICAgICAgICAgbGV0IGxlbiA9IHNpemUgeCBpblxuICAgICAgICAgICAgIEJpZ3N0cmluZy51bnNhZmVfZGVzdHJveSBidWZmZXI7XG4gICAgICAgICAgICAgbGV0IGJ1ZmZlciA9IEJpZ3N0cmluZy5jcmVhdGUgKEludC5jZWlsX3BvdzIgbGVuKSBpblxuICAgICAgICAgICAgIHQuYnVmZmVyIDo9IGJ1ZmZlcjtcbiAgICAgICAgICAgICBsZXQgbGVuID0gd3JpdGUgYnVmZmVyIH5wb3M6MCB4IGluXG4gICAgICAgICAgICAgRXhwZXJ0LndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgdCB+YnVmOmJ1ZmZlciB+cG9zOjAgfmxlbilcbiAgICAgIDs7XG5cbiAgICAgIGxldCB3cml0ZSB0IHggPVxuICAgICAgICB3cml0ZV93aXRob3V0X3B1c2hiYWNrIHQgeDtcbiAgICAgICAgZmx1c2hlZF9vcl9jbG9zZWQgdFxuICAgICAgOztcbiAgICBlbmRcbiAgZW5kXG5cbiAgbGV0IGltcGxlbWVudF9kaXJlY3QgdCBmID0gU3RyZWFtaW5nX3JwYy5pbXBsZW1lbnRfZGlyZWN0IHQgZlxuXG4gIGxldCBkaXNwYXRjaCB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoIHQgY29ubiBxdWVyeSBpblxuICAgIHJlc3BvbnNlID4+fH4gZnVuIHggLT4geCA+Pnx+IGZ1biAobWV0YWRhdGEsICgpLCBwaXBlX3IpIC0+IHBpcGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBleGNlcHRpb24gUGlwZV9ycGNfZmFpbGVkXG5cbiAgbGV0IGRpc3BhdGNoX2V4biB0IGNvbm4gcXVlcnkgPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5IGluXG4gICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICB8IEVycm9yIHJwY19lcnJvciAtPiByYWlzZSAoRXJyb3IudG9fZXhuIHJwY19lcnJvcilcbiAgICB8IE9rIChFcnJvciBfKSAtPiByYWlzZSBQaXBlX3JwY19mYWlsZWRcbiAgICB8IE9rIChPayBwaXBlX2FuZF9pZCkgLT4gcGlwZV9hbmRfaWRcbiAgOztcblxuICBtb2R1bGUgUGlwZV9tZXNzYWdlID0gU3RyZWFtaW5nX3JwYy5QaXBlX21lc3NhZ2VcbiAgbW9kdWxlIFBpcGVfcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLlBpcGVfcmVzcG9uc2VcblxuICBsZXQgZGlzcGF0Y2hfaXRlciB0IGNvbm4gcXVlcnkgfmYgPVxuICAgIGxldCVtYXAgcmVzcG9uc2UgPSBTdHJlYW1pbmdfcnBjLmRpc3BhdGNoX2l0ZXIgdCBjb25uIHF1ZXJ5IH5mIGluXG4gICAgcmVzcG9uc2UgPj58fiBmdW4geCAtPiB4ID4+fH4gZnVuIChpZCwgKCkpIC0+IGlkXG4gIDs7XG5cbiAgbGV0IGFib3J0ID0gU3RyZWFtaW5nX3JwYy5hYm9ydFxuICBsZXQgY2xvc2VfcmVhc29uID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhLmNsb3NlX3JlYXNvblxuICBsZXQgbmFtZSB0ID0gUC5ScGNfdGFnLnRvX3N0cmluZyB0LlN0cmVhbWluZ19ycGMudGFnXG4gIGxldCB2ZXJzaW9uIHQgPSB0LlN0cmVhbWluZ19ycGMudmVyc2lvblxuICBsZXQgZGVzY3JpcHRpb24gdCA9IHsgRGVzY3JpcHRpb24ubmFtZSA9IG5hbWUgdDsgdmVyc2lvbiA9IHZlcnNpb24gdCB9XG4gIGxldCBxdWVyeV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMucXVlcnlfdHlwZV9pZFxuICBsZXQgZXJyb3JfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLmVycm9yX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHJlc3BvbnNlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy51cGRhdGVfcmVzcG9uc2VfdHlwZV9pZFxuZW5kXG5cbm1vZHVsZSBTdGF0ZV9ycGMgPSBzdHJ1Y3RcbiAgdHlwZSAoJ3F1ZXJ5LCAnc3RhdGUsICd1cGRhdGUsICdlcnJvcikgdCA9XG4gICAgKCdxdWVyeSwgJ3N0YXRlLCAndXBkYXRlLCAnZXJyb3IpIFN0cmVhbWluZ19ycGMudFxuXG4gIG1vZHVsZSBJZCA9IFAuUXVlcnlfaWRcbiAgbW9kdWxlIE1ldGFkYXRhID0gU3RyZWFtaW5nX3JwYy5QaXBlX21ldGFkYXRhXG5cbiAgbGV0IGNyZWF0ZVxuICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH52ZXJzaW9uXG4gICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICgpXG4gICAgPVxuICAgIFN0cmVhbWluZ19ycGMuY3JlYXRlXG4gICAgICA/Y2xpZW50X3B1c2hlc19iYWNrXG4gICAgICB+bmFtZVxuICAgICAgfnZlcnNpb25cbiAgICAgIH5iaW5fcXVlcnlcbiAgICAgIH5iaW5faW5pdGlhbF9yZXNwb25zZTpiaW5fc3RhdGVcbiAgICAgIH5iaW5fdXBkYXRlX3Jlc3BvbnNlOmJpbl91cGRhdGVcbiAgICAgIH5iaW5fZXJyb3JcbiAgICAgIH5hbGlhc19mb3JfaW5pdGlhbF9yZXNwb25zZTpcInN0YXRlXCJcbiAgICAgIH5hbGlhc19mb3JfdXBkYXRlX3Jlc3BvbnNlOlwidXBkYXRlXCJcbiAgICAgICgpXG4gIDs7XG5cbiAgbGV0IGJpbl9xdWVyeSB0ID0gdC5TdHJlYW1pbmdfcnBjLmJpbl9xdWVyeVxuICBsZXQgYmluX3N0YXRlIHQgPSB0LlN0cmVhbWluZ19ycGMuYmluX2luaXRpYWxfcmVzcG9uc2VcbiAgbGV0IGJpbl91cGRhdGUgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fdXBkYXRlX3Jlc3BvbnNlXG4gIGxldCBiaW5fZXJyb3IgdCA9IHQuU3RyZWFtaW5nX3JwYy5iaW5fZXJyb3JfcmVzcG9uc2VcbiAgbGV0IGltcGxlbWVudCA9IFN0cmVhbWluZ19ycGMuaW1wbGVtZW50XG5cbiAgbGV0IGRpc3BhdGNoIHQgY29ubiBxdWVyeSA9XG4gICAgbGV0JW1hcCByZXNwb25zZSA9IFN0cmVhbWluZ19ycGMuZGlzcGF0Y2ggdCBjb25uIHF1ZXJ5IGluXG4gICAgcmVzcG9uc2VcbiAgICA+Pnx+IGZ1biB4IC0+IHggPj58fiBmdW4gKG1ldGFkYXRhLCBzdGF0ZSwgdXBkYXRlX3IpIC0+IHN0YXRlLCB1cGRhdGVfciwgbWV0YWRhdGFcbiAgOztcblxuICBsZXQgYWJvcnQgPSBTdHJlYW1pbmdfcnBjLmFib3J0XG4gIGxldCBjbG9zZV9yZWFzb24gPSBTdHJlYW1pbmdfcnBjLlBpcGVfbWV0YWRhdGEuY2xvc2VfcmVhc29uXG4gIGxldCBjbGllbnRfcHVzaGVzX2JhY2sgdCA9IHQuU3RyZWFtaW5nX3JwYy5jbGllbnRfcHVzaGVzX2JhY2tcbiAgbGV0IG5hbWUgdCA9IFAuUnBjX3RhZy50b19zdHJpbmcgdC5TdHJlYW1pbmdfcnBjLnRhZ1xuICBsZXQgdmVyc2lvbiB0ID0gdC5TdHJlYW1pbmdfcnBjLnZlcnNpb25cbiAgbGV0IGRlc2NyaXB0aW9uIHQgPSB7IERlc2NyaXB0aW9uLm5hbWUgPSBuYW1lIHQ7IHZlcnNpb24gPSB2ZXJzaW9uIHQgfVxuICBsZXQgcXVlcnlfdHlwZV9pZCB0ID0gdC5TdHJlYW1pbmdfcnBjLnF1ZXJ5X3R5cGVfaWRcbiAgbGV0IHN0YXRlX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5pbml0aWFsX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IHVwZGF0ZV90eXBlX2lkIHQgPSB0LlN0cmVhbWluZ19ycGMudXBkYXRlX3Jlc3BvbnNlX3R5cGVfaWRcbiAgbGV0IGVycm9yX3R5cGVfaWQgdCA9IHQuU3RyZWFtaW5nX3JwYy5lcnJvcl9yZXNwb25zZV90eXBlX2lkXG5lbmRcblxubW9kdWxlIEFueSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgUnBjIDogKCdxLCAncikgUnBjLnQgLT4gdFxuICAgIHwgUGlwZSA6ICgncSwgJ3IsICdlKSBQaXBlX3JwYy50IC0+IHRcbiAgICB8IFN0YXRlIDogKCdxLCAncywgJ3UsICdlKSBTdGF0ZV9ycGMudCAtPiB0XG4gICAgfCBPbmVfd2F5IDogJ20gT25lX3dheS50IC0+IHRcblxuICBsZXQgZGVzY3JpcHRpb24gPSBmdW5jdGlvblxuICAgIHwgUnBjIHJwYyAtPiBScGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBQaXBlIHJwYyAtPiBQaXBlX3JwYy5kZXNjcmlwdGlvbiBycGNcbiAgICB8IFN0YXRlIHJwYyAtPiBTdGF0ZV9ycGMuZGVzY3JpcHRpb24gcnBjXG4gICAgfCBPbmVfd2F5IHJwYyAtPiBPbmVfd2F5LmRlc2NyaXB0aW9uIHJwY1xuICA7O1xuZW5kXG5cbm1vZHVsZSBTdGFibGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIERlc2NyaXB0aW9uID0gRGVzY3JpcHRpb24uU3RhYmxlXG4gIG1vZHVsZSBQaXBlX2Nsb3NlX3JlYXNvbiA9IFBpcGVfY2xvc2VfcmVhc29uLlN0YWJsZVxuICBtb2R1bGUgUnBjID0gUnBjXG4gIG1vZHVsZSBQaXBlX3JwYyA9IFBpcGVfcnBjXG4gIG1vZHVsZSBTdGF0ZV9ycGMgPSBTdGF0ZV9ycGNcbiAgbW9kdWxlIE9uZV93YXkgPSBPbmVfd2F5XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gUnBjXG5cbm1vZHVsZSBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIgPSBzdHJ1Y3RcbiAgbW9kdWxlIERpcmVjdF9zdHJlYW1fd3JpdGVyID0gUGlwZV9ycGMuRGlyZWN0X3N0cmVhbV93cml0ZXJcblxuICB0eXBlICdpbnB1dCB0ID1cbiAgICB8IFQgOlxuICAgICAgICB7IGNvbnZlcnQgOiAnaW5wdXQgLT4gJ291dHB1dFxuICAgICAgICA7IHdyaXRlciA6ICdvdXRwdXQgRGlyZWN0X3N0cmVhbV93cml0ZXIudFxuICAgICAgICB9XG4gICAgICAgIC0+ICdpbnB1dCB0XG5cbiAgbGV0IGNyZWF0ZSB+Y29udmVydCB+d3JpdGVyID0gVCB7IGNvbnZlcnQ7IHdyaXRlciB9XG5cbiAgbGV0IHdyaXRlIChUIHsgY29udmVydDsgd3JpdGVyIH0pIGlucHV0ID1cbiAgICBEaXJlY3Rfc3RyZWFtX3dyaXRlci53cml0ZSB3cml0ZXIgKGNvbnZlcnQgaW5wdXQpXG4gIDs7XG5cbiAgbGV0IHdyaXRlX3dpdGhvdXRfcHVzaGJhY2sgKFQgeyBjb252ZXJ0OyB3cml0ZXIgfSkgaW5wdXQgPVxuICAgIERpcmVjdF9zdHJlYW1fd3JpdGVyLndyaXRlX3dpdGhvdXRfcHVzaGJhY2sgd3JpdGVyIChjb252ZXJ0IGlucHV0KVxuICA7O1xuXG4gIGxldCBjbG9zZSAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5jbG9zZSB3cml0ZXJcbiAgbGV0IGlzX2Nsb3NlZCAoVCB7IGNvbnZlcnQgPSBfOyB3cml0ZXIgfSkgPSBEaXJlY3Rfc3RyZWFtX3dyaXRlci5pc19jbG9zZWQgd3JpdGVyXG4gIGxldCBjbG9zZWQgKFQgeyBjb252ZXJ0ID0gXzsgd3JpdGVyIH0pID0gRGlyZWN0X3N0cmVhbV93cml0ZXIuY2xvc2VkIHdyaXRlclxuZW5kXG5cbmxldCBmYWlsZWRfY29udmVyc2lvbiB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJ0eXBlIGNvbnZlcnNpb24gZmFpbHVyZVwiXG4gICAgeFxuICAgIFslc2V4cF9vZjpcbiAgICAgIFsgYE1zZyB8IGBRdWVyeSB8IGBSZXNwb25zZSB8IGBFcnJvciB8IGBTdGF0ZSB8IGBVcGRhdGUgXVxuICAgICAgKiBbIGBScGMgb2Ygc3RyaW5nIF1cbiAgICAgICogWyBgVmVyc2lvbiBvZiBpbnQgXVxuICAgICAgKiBleG5dXG47O1xuXG5sZXQgbXVsdGlwbGVfcmVnaXN0cmF0aW9ucyB4ID1cbiAgRXJyb3IuY3JlYXRlXG4gICAgXCJtdWx0aXBsZSBycGMgcmVnaXN0cmF0aW9uc1wiXG4gICAgeFxuICAgIFslc2V4cF9vZjogWyBgUnBjIG9mIHN0cmluZyBdICogWyBgVmVyc2lvbiBvZiBpbnQgXV1cbjs7XG5cbmxldCB1bmtub3duX3ZlcnNpb24geCA9IEVycm9yLmNyZWF0ZSBcInVua25vd24gcnBjIHZlcnNpb25cIiB4IFslc2V4cF9vZjogc3RyaW5nICogaW50XVxuXG5tb2R1bGUgQ2FsbGVlX2NvbnZlcnRzID0gc3RydWN0XG4gIG1vZHVsZSBScGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgU2ltcGxlID0gc3RydWN0XG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgYWRhcHRlciA9XG4gICAgICAgIHsgYWRhcHQgOlxuICAgICAgICAgICAgJ3N0YXRlLiAoJ3N0YXRlIC0+ICdxdWVyeSAtPiAncmVzcG9uc2UgRGVmZXJyZWQudCkgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnRcbiAgICAgICAgfVxuXG4gICAgICB0eXBlICgncXVlcnksICdyZXNwb25zZSkgdCA9XG4gICAgICAgIHsgbmFtZSA6IHN0cmluZ1xuICAgICAgICA7IGFkYXB0ZXJzIDogKCdxdWVyeSwgJ3Jlc3BvbnNlKSBhZGFwdGVyIEludC5NYXAudFxuICAgICAgICB9XG4gICAgICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgICAgIGxldCBjcmVhdGUgfm5hbWUgPSB7IG5hbWU7IGFkYXB0ZXJzID0gSW50Lk1hcC5lbXB0eSB9XG5cbiAgICAgIGxldCB3cmFwX2Vycm9yIGZuIHN0YXRlIHF1ZXJ5ID1cbiAgICAgICAgbWF0Y2glbWFwIGZuIHN0YXRlIHF1ZXJ5IHdpdGhcbiAgICAgICAgfCBPayB2YWx1ZSAtPiBPayB2YWx1ZVxuICAgICAgICB8IEVycm9yIGVycm9yIC0+IEVycm9yIChFcnJvci50b19zdHJpbmdfaHVtIGVycm9yKVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZCB7IG5hbWU7IGFkYXB0ZXJzIH0gcnBjIGFkYXB0ZXIgPVxuICAgICAgICBpZiBTdHJpbmcuKCA8PiApIG5hbWUgKFJwYy5uYW1lIHJwYylcbiAgICAgICAgdGhlblxuICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICBcIlJwYyBuYW1lcyBkb24ndCBhZ3JlZVwiXG4gICAgICAgICAgICAobmFtZSwgUnBjLm5hbWUgcnBjKVxuICAgICAgICAgICAgWyVzZXhwX29mOiBzdHJpbmcgKiBzdHJpbmddXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB2ZXJzaW9uID0gUnBjLnZlcnNpb24gcnBjIGluXG4gICAgICAgICAgbWF0Y2ggTWFwLmZpbmQgYWRhcHRlcnMgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yXG4gICAgICAgICAgICAgIFwiVmVyc2lvbiBhbHJlYWR5IGV4aXN0c1wiXG4gICAgICAgICAgICAgIChuYW1lLCB2ZXJzaW9uKVxuICAgICAgICAgICAgICBbJXNleHBfb2Y6IHN0cmluZyAqIGludF1cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBhZGFwdGVycyA9IE1hcC5zZXQgYWRhcHRlcnMgfmtleTp2ZXJzaW9uIH5kYXRhOmFkYXB0ZXIgaW5cbiAgICAgICAgICAgIE9rIHsgbmFtZTsgYWRhcHRlcnMgfSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhZGRfcnBjX3ZlcnNpb24gdCBvbGRfcnBjIHVwZ3JhZGUgZG93bmdyYWRlID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0JW1hcCByZXN1bHQgPSBmbiBzdGF0ZSAodXBncmFkZSBvbGRfcXVlcnkpIGluXG4gICAgICAgICAgICBkb3duZ3JhZGUgcmVzdWx0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBScGMuaW1wbGVtZW50IG9sZF9ycGMgYWRhcHRlZFxuICAgICAgICBpblxuICAgICAgICBhZGQgdCBvbGRfcnBjIHsgYWRhcHQgfVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF9ycGNfdmVyc2lvbl93aXRoX2ZhaWx1cmUgdCBvbGRfcnBjIHVwZ3JhZGVfb3JfZXJyb3IgZG93bmdyYWRlX29yX2Vycm9yID1cbiAgICAgICAgbGV0IGFkYXB0IGZuID1cbiAgICAgICAgICBsZXQgYWRhcHRlZCBzdGF0ZSBvbGRfcXVlcnkgPVxuICAgICAgICAgICAgbGV0IG9wZW4gRGVmZXJyZWQuUmVzdWx0LkxldF9zeW50YXggaW5cbiAgICAgICAgICAgIGxldCViaW5kIHF1ZXJ5ID0gRGVmZXJyZWQucmV0dXJuICh1cGdyYWRlX29yX2Vycm9yIG9sZF9xdWVyeSkgaW5cbiAgICAgICAgICAgIGxldCViaW5kIHJlc3BvbnNlID0gZm4gc3RhdGUgcXVlcnkgaW5cbiAgICAgICAgICAgIERlZmVycmVkLnJldHVybiAoZG93bmdyYWRlX29yX2Vycm9yIHJlc3BvbnNlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUnBjLmltcGxlbWVudCBvbGRfcnBjICh3cmFwX2Vycm9yIGFkYXB0ZWQpXG4gICAgICAgIGluXG4gICAgICAgIGFkZCB0IG9sZF9ycGMgeyBhZGFwdCB9XG4gICAgICA7O1xuXG4gICAgICBsZXQgYWRkX3ZlcnNpb24gdCB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgdXBncmFkZSBkb3duZ3JhZGUgPVxuICAgICAgICBsZXQgcnBjID0gUnBjLmNyZWF0ZSB+bmFtZTp0Lm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlIGluXG4gICAgICAgIGFkZF9ycGNfdmVyc2lvbiB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGFkZF92ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IH52ZXJzaW9uIH5iaW5fcXVlcnkgfmJpbl9yZXNwb25zZSB1cGdyYWRlIGRvd25ncmFkZSA9XG4gICAgICAgIGxldCBycGMgPSBScGMuY3JlYXRlIH5uYW1lOnQubmFtZSB+dmVyc2lvbiB+YmluX3F1ZXJ5IH5iaW5fcmVzcG9uc2UgaW5cbiAgICAgICAgYWRkX3JwY192ZXJzaW9uX3dpdGhfZmFpbHVyZSB0IHJwYyB1cGdyYWRlIGRvd25ncmFkZVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudCB0IGZuID0gTWFwLmRhdGEgdC5hZGFwdGVycyB8PiBMaXN0Lm1hcCB+ZjooZnVuIHsgYWRhcHQgfSAtPiBhZGFwdCBmbilcbiAgICBlbmRcblxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gcXVlcnkgLT4gcmVzcG9uc2UgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9ICdzIC0+IHZlcnNpb246aW50IC0+IE1vZGVsLnF1ZXJ5IC0+IE1vZGVsLnJlc3BvbnNlIERlZmVycmVkLnRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFJwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxKSB3aXRoXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFF1ZXJ5LCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICAgIGxldCVtYXAgciA9IGYgcyB+dmVyc2lvbiBxIGluXG4gICAgICAgICAgICAgICAgKG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbCByKSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgT2sgciAtPiByXG4gICAgICAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOih7IGltcGxlbWVudCB9LCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgUGlwZV9ycGMgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIHF1ZXJ5XG4gICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlXG4gICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgICAgIC0+IChyZXNwb25zZSBQaXBlLlJlYWRlci50LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgaW1wbGVtZW50X2RpcmVjdF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgVmVyc2lvbmVkX2RpcmVjdF9zdHJlYW1fd3JpdGVyLnRcbiAgICAgICAgICAgIC0+ICh1bml0LCBlcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID1cbiAgICAgICAgfCBQaXBlIG9mXG4gICAgICAgICAgICAoJ3NcbiAgICAgICAgICAgICAtPiB2ZXJzaW9uOmludFxuICAgICAgICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgICAgICAgLT4gKE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICB8IERpcmVjdCBvZlxuICAgICAgICAgICAgKCdzXG4gICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgIC0+IE1vZGVsLnJlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAgLT4gKHVuaXQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gaW1wbCA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF8pIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBpbXBsKVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgaW1wbGVtZW50X211bHRpX2dlbiA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiAoUGlwZSBmKVxuICAgICAgOztcblxuICAgICAgbGV0IGltcGxlbWVudF9kaXJlY3RfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGltcGxlbWVudF9tdWx0aV9nZW4gP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gKERpcmVjdCBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIG1vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgdmFsIGVycm9yX29mX21vZGVsIDogTW9kZWwuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pIDogVmVyc2lvbl9zaGFyZWQpIChDb252ZXJ0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9lbHQgOiAoTW9kZWwucmVzcG9uc2UgLT4gVmVyc2lvbl9pLnJlc3BvbnNlKSBPcl9lcnJvci50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X3BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgTW9kZWwucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBWZXJzaW9uX2kucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG4gICAgICAgIG9wZW4gQ29udmVydFxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFBpcGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3Jlc3BvbnNlXG4gICAgICAgICAgICB+YmluX2Vycm9yXG4gICAgICAgICAgICA/Y2xpZW50X3B1c2hlc19iYWNrOihPcHRpb24uc29tZV9pZiBjbGllbnRfcHVzaGVzX2JhY2sgKCkpXG4gICAgICAgICAgICAoKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCB3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEgPVxuICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgfCBxIC0+IHFcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgd3JhcHBlZF9lcnJvcl9vZl9tb2RlbCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICBFcnJvci5yYWlzZSAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGltcGwgPVxuICAgICAgICAgIG1hdGNoIGltcGwgd2l0aFxuICAgICAgICAgIHwgUGlwZSBmIC0+XG4gICAgICAgICAgICBQaXBlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoJWJpbmQgZiBzIH52ZXJzaW9uICh3cmFwcGVkX21vZGVsX29mX3F1ZXJ5IHEpIHdpdGhcbiAgICAgICAgICAgICAgfCBPayBwaXBlIC0+XG4gICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IHJldHVybiAoT2sgKGNvbnZlcnRfcGlwZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgUmVzcG9uc2UsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgIHwgRXJyb3IgZXJyb3IgLT4gcmV0dXJuICh3cmFwcGVkX2Vycm9yX29mX21vZGVsIGVycm9yKSlcbiAgICAgICAgICB8IERpcmVjdCBmIC0+XG4gICAgICAgICAgICBsZXQgY29udmVydF9lbHQgPSBPcl9lcnJvci5va19leG4gY29udmVydF9lbHQgaW5cbiAgICAgICAgICAgIFBpcGVfcnBjLmltcGxlbWVudF9kaXJlY3QgcnBjIChmdW4gcyBxIGRzdyAtPlxuICAgICAgICAgICAgICBsZXQgd3JpdGVyID1cbiAgICAgICAgICAgICAgICBWZXJzaW9uZWRfZGlyZWN0X3N0cmVhbV93cml0ZXIuY3JlYXRlIH5jb252ZXJ0OmNvbnZlcnRfZWx0IH53cml0ZXI6ZHN3XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoJW1hcCBmIHMgfnZlcnNpb24gKHdyYXBwZWRfbW9kZWxfb2ZfcXVlcnkgcSkgd3JpdGVyIHdpdGhcbiAgICAgICAgICAgICAgfCBPayAoKSAtPiBPayAoKVxuICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+IHdyYXBwZWRfZXJyb3Jfb2ZfbW9kZWwgZXJyb3IpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IEhhc2h0Ymwuc2V0IHJlZ2lzdHJ5IH5rZXk6dmVyc2lvbiB+ZGF0YTooeyBpbXBsZW1lbnQgfSwgQW55LlBpcGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnQgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9XG4gICAgICAgICAgICAgIE9yX2Vycm9yLmVycm9yX3N0cmluZyBcImNhbm5vdCB1c2UgZGlyZWN0IGludGVyZmFjZSB3aXRoIFJlZ2lzdGVyX3Jhd1wiXG4gICAgICAgICAgICA7O1xuXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlID0gVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9tb2RlbCA6IE1vZGVsLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT2sgVmVyc2lvbl9pLnJlc3BvbnNlX29mX21vZGVsXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlIHBpcGUgPSBQaXBlLm1hcCBwaXBlIH5mOlZlcnNpb25faS5yZXNwb25zZV9vZl9tb2RlbFxuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgc3RhdGVcbiAgICAgIHR5cGUgdXBkYXRlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ2Nvbm5lY3Rpb25fc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBxdWVyeVxuICAgICAgICAgICAgLT4gKHN0YXRlICogdXBkYXRlIFBpcGUuUmVhZGVyLnQsIGVycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnY29ubmVjdGlvbl9zdGF0ZSBJbXBsZW1lbnRhdGlvbi50IGxpc3RcblxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICB0eXBlIHN0YXRlXG4gICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgIHR5cGUgZXJyb3JcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG5cbiAgICAgIHR5cGUgJ3MgaW1wbCA9XG4gICAgICAgICdzXG4gICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgIC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIC0+IChNb2RlbC5zdGF0ZSAqIE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50LCBNb2RlbC5lcnJvcikgUmVzdWx0LnQgRGVmZXJyZWQudFxuXG4gICAgICB0eXBlIGltcGxlbWVudGVyID1cbiAgICAgICAgeyBpbXBsZW1lbnQgOiAncy4gbG9nX3ZlcnNpb246KGludCAtPiB1bml0KSAtPiAncyBpbXBsIC0+ICdzIEltcGxlbWVudGF0aW9uLnQgfVxuXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcblxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiBmID1cbiAgICAgICAgbGV0IGxvZ192ZXJzaW9uID1cbiAgICAgICAgICBtYXRjaCBsb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWdub3JlXG4gICAgICAgICAgKCogcHJldmVudCBjYWxsaW5nIFtmXSBtb3JlIHRoYW4gb25jZSBwZXIgdmVyc2lvbiAqKVxuICAgICAgICAgIHwgU29tZSBmIC0+IE1lbW8uZ2VuZXJhbCAoZiB+bmFtZSlcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoaSwgXykgLT4gaS5pbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdHlwZSBxdWVyeSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgc3RhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHVwZGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgIHZhbCBtb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLnF1ZXJ5XG4gICAgICAgIHZhbCBzdGF0ZV9vZl9tb2RlbCA6IE1vZGVsLnN0YXRlIC0+IHN0YXRlXG4gICAgICAgIHZhbCBlcnJvcl9vZl9tb2RlbCA6IE1vZGVsLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjbGllbnRfcHVzaGVzX2JhY2sgOiBib29sXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyX3JhdyAoVmVyc2lvbl9pIDogc2lnXG4gICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX3NoYXJlZFxuXG4gICAgICAgICAgdmFsIHVwZGF0ZV9vZl9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuc3RhdGVcbiAgICAgICAgICAgIC0+IE1vZGVsLnVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiB1cGRhdGUgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBvcGVuIFZlcnNpb25faVxuXG4gICAgICAgIGxldCBycGMgPVxuICAgICAgICAgIFN0YXRlX3JwYy5jcmVhdGVcbiAgICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgICB+dmVyc2lvblxuICAgICAgICAgICAgfmJpbl9xdWVyeVxuICAgICAgICAgICAgfmJpbl9zdGF0ZVxuICAgICAgICAgICAgfmJpbl91cGRhdGVcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmID1cbiAgICAgICAgICAgIFN0YXRlX3JwYy5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9xdWVyeSBxIHdpdGhcbiAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpXG4gICAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICAgIChtYXRjaCViaW5kIGYgcyB+dmVyc2lvbiBxIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBPayAobW9kZWxfc3RhdGUsIHBpcGUpIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFZlcnNpb25faS5zdGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IHN0YXRlIC0+IHN0YXRlXG4gICAgICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBTdGF0ZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTW9uaXRvci5oYW5kbGVfZXJyb3JzXG4gICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKE9rIChzdGF0ZSwgVmVyc2lvbl9pLnVwZGF0ZV9vZl9tb2RlbCBtb2RlbF9zdGF0ZSBwaXBlKSkpXG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGV4biAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IucmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhaWxlZF9jb252ZXJzaW9uIChgVXBkYXRlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgICAgICAgICB8IEVycm9yIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLmVycm9yX29mX21vZGVsIGVycm9yIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IGVycm9yIC0+IEVycm9yIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb24gKGBFcnJvciwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSkpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5TdGF0ZSBycGMpXG4gICAgICAgICAgfCBTb21lIF8gLT4gRXJyb3IucmFpc2UgKG11bHRpcGxlX3JlZ2lzdHJhdGlvbnMgKGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbikpXG4gICAgICAgIDs7XG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX21vZGVsIDogTW9kZWwudXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIFJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgdXBkYXRlX29mX21vZGVsIF9zdGF0ZSBwaXBlID0gUGlwZS5tYXAgfmY6dXBkYXRlX29mX21vZGVsIHBpcGVcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIG1zZ1xuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZSAtPiB2ZXJzaW9uOmludCAtPiBtc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIG1zZ1xuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcblxuICAgICAgdHlwZSAncyBpbXBsID0gJ3MgLT4gdmVyc2lvbjppbnQgLT4gTW9kZWwubXNnIC0+IHVuaXRcblxuICAgICAgdHlwZSBpbXBsZW1lbnRlciA9XG4gICAgICAgIHsgaW1wbGVtZW50IDogJ3MuIGxvZ192ZXJzaW9uOihpbnQgLT4gdW5pdCkgLT4gJ3MgaW1wbCAtPiAncyBJbXBsZW1lbnRhdGlvbi50IH1cblxuICAgICAgbGV0IHJlZ2lzdHJ5IDogKGludCwgaW1wbGVtZW50ZXIgKiBBbnkudCkgSGFzaHRibC50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG5cbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb24gZiA9XG4gICAgICAgIGxldCBsb2dfdmVyc2lvbiA9XG4gICAgICAgICAgbWF0Y2ggbG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGlnbm9yZVxuICAgICAgICAgICgqIHByZXZlbnQgY2FsbGluZyBbZl0gbW9yZSB0aGFuIG9uY2UgcGVyIHZlcnNpb24gKilcbiAgICAgICAgICB8IFNvbWUgZiAtPiBNZW1vLmdlbmVyYWwgKGYgfm5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKGksIF9ycGMpIC0+IGkuaW1wbGVtZW50IH5sb2dfdmVyc2lvbiBmKVxuICAgICAgOztcblxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSGFzaHRibC5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1vZGVsX29mX21zZyA6IG1zZyAtPiBNb2RlbC5tc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBpbXBsZW1lbnQgfmxvZ192ZXJzaW9uIGYgPVxuICAgICAgICAgICAgT25lX3dheS5pbXBsZW1lbnQgcnBjIChmdW4gcyBxIC0+XG4gICAgICAgICAgICAgIGxvZ192ZXJzaW9uIHZlcnNpb247XG4gICAgICAgICAgICAgIG1hdGNoIFJlc3VsdC50cnlfd2l0aCAoZnVuICgpIC0+IFZlcnNpb25faS5tb2RlbF9vZl9tc2cgcSkgd2l0aFxuICAgICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICAgIEVycm9yLnJhaXNlIChmYWlsZWRfY29udmVyc2lvbiAoYE1zZywgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKVxuICAgICAgICAgICAgICB8IE9rIHEgLT4gZiBzIH52ZXJzaW9uIHEpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KHsgaW1wbGVtZW50IH0sIEFueS5PbmVfd2F5IHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTWVudSA9IHN0cnVjdFxuICAoKioqKioqKioqKioqKioqKiogc29tZSBwcm9oaWJpdGlvbnMgZm9yIHRoaXMgbW9kdWxlICoqKioqKioqKioqKioqKioqKlxuXG4gICAgICAgICAgICAgICAgICAgICAoMSkgISEhIG5ldmVyIHBydW5lIG9sZCB2ZXJzaW9ucyBvZiB0aGlzIHJwYyAhISFcblxuICAgICAgICAgICAgICAgICAgICAgSXQgaXMgdG9vIGZ1bmRhbWVudGFsIHRvIHRoZSB3b3JraW5ncyBvZiB2YXJpb3VzIHZlcnNpb25pbmdcbiAgICAgICAgICAgICAgICAgICAgIHNjaGVtZXMgYW5kIGl0IHByb2JhYmx5IHdvbid0IGNoYW5nZSB2ZXJ5IG11Y2ggYW55d2F5LlxuXG4gICAgICAgICAgICAgICAgICAgICAoMikgISEhIG9ubHkgZXZlciBzYXkgXCJ3aXRoIGJpbl9pb1wiIG9uIGJ1aWx0LWluIG9jYW1sIHR5cGVzICEhIVxuXG4gICAgICAgICAgICAgICAgICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiB0eXBlcyBhcmUgaW50LCBsaXN0LCBzdHJpbmcsIGV0Yy5cblxuICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0byBwcm90ZWN0IG91cnNlbHZlcyBhZ2FpbnN0IGNoYW5nZXMgdG8gQ29yZSBkYXRhXG4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3R1cmVzLCBmb3IgZXhhbXBsZS5cblxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4gIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgIGxldCBuYW1lID0gXCJfX1ZlcnNpb25lZF9ycGMuTWVudVwiXG5cbiAgICB0eXBlIHF1ZXJ5ID0gdW5pdFxuICAgIHR5cGUgcmVzcG9uc2UgPSBEZXNjcmlwdGlvbi50IGxpc3RcbiAgZW5kXG5cbiAgaW5jbHVkZSBDYWxsZWVfY29udmVydHMuUnBjLk1ha2UgKE1vZGVsKVxuXG4gIGxldCBycGNfbmFtZSA9IE1vZGVsLm5hbWVcblxuICBtb2R1bGUgVjEgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgICAgbGV0IHZlcnNpb24gPSAxXG5cbiAgICAgIHR5cGUgcXVlcnkgPSB1bml0IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgIHR5cGUgcmVzcG9uc2UgPSAoc3RyaW5nICogaW50KSBsaXN0IFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5IHEgPSBxXG5cbiAgICAgIGxldCByZXNwb25zZV9vZl9tb2RlbCA9XG4gICAgICAgIExpc3QubWFwIH5mOihmdW4geyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgICAgIDs7XG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIFJlZ2lzdGVyIChUKVxuICBlbmRcblxuICBtb2R1bGUgQ3VycmVudF92ZXJzaW9uID0gVjFcblxuICBsZXQgYWRkIGltcGxzID1cbiAgICBsZXQgbWVudSA9IExpc3QubWFwIGltcGxzIH5mOkltcGxlbWVudGF0aW9uLmRlc2NyaXB0aW9uIGluXG4gICAgbGV0IG1lbnVfaW1wbHMgPSBpbXBsZW1lbnRfbXVsdGkgKGZ1biBfIH52ZXJzaW9uOl8gKCkgLT4gcmV0dXJuIG1lbnUpIGluXG4gICAgaW1wbHMgQCBtZW51X2ltcGxzXG4gIDs7XG5cbiAgdHlwZSB0ID0gSW50LlNldC50IFN0cmluZy5UYWJsZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHN1cHBvcnRlZF9ycGNzIHQgPVxuICAgIGxldCBvcGVuIExpc3QuTGV0X3N5bnRheCBpblxuICAgIGxldCViaW5kIG5hbWUsIHZlcnNpb25zID0gU3RyaW5nLlRhYmxlLnRvX2FsaXN0IHQgaW5cbiAgICBsZXQlbWFwIHZlcnNpb24gPSBJbnQuU2V0LnRvX2xpc3QgdmVyc2lvbnMgaW5cbiAgICB7IERlc2NyaXB0aW9uLm5hbWU7IHZlcnNpb24gfVxuICA7O1xuXG4gIGxldCBzdXBwb3J0ZWRfdmVyc2lvbnMgdCB+cnBjX25hbWUgPVxuICAgIE9wdGlvbi52YWx1ZSB+ZGVmYXVsdDpJbnQuU2V0LmVtcHR5IChIYXNodGJsLmZpbmQgdCBycGNfbmFtZSlcbiAgOztcblxuICBsZXQgb2ZfZW50cmllcyBlbnRyaWVzID1cbiAgICBIYXNodGJsLm1hcCB+ZjpJbnQuU2V0Lm9mX2xpc3QgKFN0cmluZy5UYWJsZS5vZl9hbGlzdF9tdWx0aSBlbnRyaWVzKVxuICA7O1xuXG4gIGxldCByZXF1ZXN0IGNvbm4gPVxuICAgIGxldCVtYXAgcmVzdWx0ID0gUnBjLmRpc3BhdGNoIEN1cnJlbnRfdmVyc2lvbi5ycGMgY29ubiAoKSBpblxuICAgIFJlc3VsdC5tYXAgcmVzdWx0IH5mOm9mX2VudHJpZXNcbiAgOztcblxuICBsZXQgY3JlYXRlIGRlc2NyaXB0aW9ucyA9XG4gICAgTGlzdC5tYXAgZGVzY3JpcHRpb25zIH5mOihmdW4geyBEZXNjcmlwdGlvbi5uYW1lOyB2ZXJzaW9uIH0gLT4gbmFtZSwgdmVyc2lvbilcbiAgICB8PiBvZl9lbnRyaWVzXG4gIDs7XG5lbmRcblxubW9kdWxlIENvbm5lY3Rpb25fd2l0aF9tZW51ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBjb25uZWN0aW9uIDogQ29ubmVjdGlvbi50XG4gICAgOyBtZW51IDogTWVudS50XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHNdXG5cbiAgbGV0IGNyZWF0ZSBjb25uZWN0aW9uID1cbiAgICBsZXQgb3BlbiBEZWZlcnJlZC5Pcl9lcnJvci5MZXRfc3ludGF4IGluXG4gICAgbGV0JW1hcCBtZW51ID0gTWVudS5yZXF1ZXN0IGNvbm5lY3Rpb24gaW5cbiAgICB7IGNvbm5lY3Rpb247IG1lbnUgfVxuICA7O1xuXG4gIGxldCBjcmVhdGVfZGlyZWN0bHkgY29ubmVjdGlvbiBtZW51ID0geyBjb25uZWN0aW9uOyBtZW51IH1cbmVuZFxuXG5tb2R1bGUgQ2FsbGVyX2NvbnZlcnRzID0gc3RydWN0XG4gIGxldCBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiB+cnBjX25hbWUgfmNhbGxlcl92ZXJzaW9ucyB+Y2FsbGVlX3ZlcnNpb25zIH5jYWxsZWVfbWVudSA9XG4gICAgbWF0Y2ggU2V0Lm1heF9lbHQgKFNldC5pbnRlciBjYWxsZWVfdmVyc2lvbnMgY2FsbGVyX3ZlcnNpb25zKSB3aXRoXG4gICAgfCBTb21lIHZlcnNpb24gLT4gT2sgdmVyc2lvblxuICAgIHwgTm9uZSAtPlxuICAgICAgZXJyb3Jfc1xuICAgICAgICBbJW1lc3NhZ2VcbiAgICAgICAgICBcImNhbGxlciBhbmQgY2FsbGVlIHNoYXJlIG5vIGNvbW1vbiB2ZXJzaW9ucyBmb3IgcnBjXCJcbiAgICAgICAgICAgIChycGNfbmFtZSA6IHN0cmluZylcbiAgICAgICAgICAgIChjYWxsZXJfdmVyc2lvbnMgOiBJbnQuU2V0LnQpXG4gICAgICAgICAgICAoY2FsbGVlX3ZlcnNpb25zIDogSW50LlNldC50KVxuICAgICAgICAgICAgKGNhbGxlZV9tZW51IDogTWVudS50KV1cbiAgOztcblxuICBsZXQlZXhwZWN0X3Rlc3QgXCJoaWdoZXN0IHZlcnNpb24gbnVtYmVyIGlzIHRha2VuIGluIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXCIgPVxuICAgIGxldCBycGNfbmFtZSA9IFwidGhlLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBycGNfbmFtZSwgMiBdIGluXG4gICAgbGV0IHJlc3VsdCA9XG4gICAgICBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvblxuICAgICAgICB+cnBjX25hbWVcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihJbnQuU2V0Lm9mX2xpc3QgWyAyIF0pXG4gICAgICAgIH5jYWxsZWVfbWVudTptZW51XG4gICAgaW5cbiAgICBwcmludF9zIFslc2V4cCAocmVzdWx0IDogaW50IE9yX2Vycm9yLnQpXTtcbiAgICBbJWV4cGVjdCB7fCAoT2sgMikgfH1dXG4gIDs7XG5cbiAgbGV0JWV4cGVjdF90ZXN0IFwiZXJyb3IgZnJvbSBtb3N0X3JlY2VudF9jb21tb25fdmVyc2lvbiBsb29rcyByZWFzb25hYmxlXCIgPVxuICAgIGxldCB0aGVfcnBjID0gXCJ0aGUtcnBjXCIgaW5cbiAgICBsZXQgbm90X3RoZV9ycGMgPSBcIm90aGVyLXJwY1wiIGluXG4gICAgbGV0IG1lbnUgPSBNZW51Lm9mX2VudHJpZXMgWyBub3RfdGhlX3JwYywgMTsgbm90X3RoZV9ycGMsIDIgXSBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbW9zdF9yZWNlbnRfY29tbW9uX3ZlcnNpb25cbiAgICAgICAgfnJwY19uYW1lOnRoZV9ycGNcbiAgICAgICAgfmNhbGxlcl92ZXJzaW9uczooSW50LlNldC5vZl9saXN0IFsgMTsgMjsgMyBdKVxuICAgICAgICB+Y2FsbGVlX3ZlcnNpb25zOihNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTp0aGVfcnBjKVxuICAgICAgICB+Y2FsbGVlX21lbnU6bWVudVxuICAgIGluXG4gICAgcHJpbnRfcyBbJXNleHAgKHJlc3VsdCA6IGludCBPcl9lcnJvci50KV07XG4gICAgWyVleHBlY3RcbiAgICAgIHt8XG4gICAgICAoRXJyb3JcbiAgICAgICAoXCJjYWxsZXIgYW5kIGNhbGxlZSBzaGFyZSBubyBjb21tb24gdmVyc2lvbnMgZm9yIHJwY1wiIChycGNfbmFtZSB0aGUtcnBjKVxuICAgICAgICAoY2FsbGVyX3ZlcnNpb25zICgxIDIgMykpIChjYWxsZWVfdmVyc2lvbnMgKCkpXG4gICAgICAgIChjYWxsZWVfbWVudSAoKG90aGVyLXJwYyAoMSAyKSkpKSkpfH1dXG4gIDs7XG5cbiAgbW9kdWxlIERpc3BhdGNoID0gc3RydWN0XG4gICAgbW9kdWxlIE1ha2UgKE0gOiBNb25hZCkgPSBzdHJ1Y3RcbiAgICAgIG9wZW4gTVxuXG4gICAgICBsZXQgd2l0aF9zcGVjaWZpY192ZXJzaW9uIH52ZXJzaW9uIH5jb25uZWN0aW9uIH5uYW1lIH5xdWVyeSB+ZGlzcGF0Y2hlciB+cmVnaXN0cnkgPVxuICAgICAgICBtYXRjaCBIYXNodGJsLmZpbmQgcmVnaXN0cnkgdmVyc2lvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiByZXR1cm4gKEVycm9yICh1bmtub3duX3ZlcnNpb24gKG5hbWUsIHZlcnNpb24pKSlcbiAgICAgICAgfCBTb21lIChkaXNwYXRjaCwgX3JwYykgLT4gZGlzcGF0Y2hlciBkaXNwYXRjaCBjb25uZWN0aW9uIHF1ZXJ5XG4gICAgICA7O1xuXG4gICAgICBsZXQgd2l0aF92ZXJzaW9uX21lbnVcbiAgICAgICAgICAgIHsgQ29ubmVjdGlvbl93aXRoX21lbnUuY29ubmVjdGlvbjsgbWVudSB9XG4gICAgICAgICAgICBxdWVyeVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgICB+ZGlzcGF0Y2hlclxuICAgICAgICA9XG4gICAgICAgIGxldCBjYWxsZWVfdmVyc2lvbnMgPSBNZW51LnN1cHBvcnRlZF92ZXJzaW9ucyBtZW51IH5ycGNfbmFtZTpuYW1lIGluXG4gICAgICAgIGxldCBjYWxsZXJfdmVyc2lvbnMgPSB2ZXJzaW9ucyAoKSBpblxuICAgICAgICBtYXRjaFxuICAgICAgICAgIG1vc3RfcmVjZW50X2NvbW1vbl92ZXJzaW9uXG4gICAgICAgICAgICB+cnBjX25hbWU6bmFtZVxuICAgICAgICAgICAgfmNhbGxlcl92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV92ZXJzaW9uc1xuICAgICAgICAgICAgfmNhbGxlZV9tZW51Om1lbnVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IEVycm9yIGUgLT4gcmV0dXJuIChFcnJvciBlKVxuICAgICAgICB8IE9rIHZlcnNpb24gLT5cbiAgICAgICAgICB3aXRoX3NwZWNpZmljX3ZlcnNpb24gfnZlcnNpb24gfmNvbm5lY3Rpb24gfm5hbWUgfnF1ZXJ5IH5yZWdpc3RyeSB+ZGlzcGF0Y2hlclxuICAgICAgOztcbiAgICBlbmRcblxuICAgIG1vZHVsZSBBc3luYyA9IE1ha2UgKERlZmVycmVkKVxuICAgIG1vZHVsZSBEaXJlY3QgPSBNYWtlIChNb25hZC5JZGVudClcbiAgZW5kXG5cbiAgbW9kdWxlIFJwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gcmVzcG9uc2UgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSBSZWdpc3RlcicgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IE1vZGVsLnF1ZXJ5IC0+IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9IFJwYy5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9xdWVyeSB+YmluX3Jlc3BvbnNlXG5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBsZXQgZGlzcGF0Y2ggY29ubiBtcSA9XG4gICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kucXVlcnlfb2ZfbW9kZWwgbXEpIHdpdGhcbiAgICAgICAgICAgIHwgRXJyb3IgZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFJwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIFJlc3VsdC5iaW5kIHJlc3VsdCB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBSZXN1bHQudHJ5X3dpdGggKGZ1biAoKSAtPiBWZXJzaW9uX2kubW9kZWxfb2ZfcmVzcG9uc2UgbXEgcikgd2l0aFxuICAgICAgICAgICAgICAgIHwgT2sgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT5cbiAgICAgICAgICAgICAgICAgIEVycm9yXG4gICAgICAgICAgICAgICAgICAgIChmYWlsZWRfY29udmVyc2lvbiAoYFJlc3BvbnNlLCBgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24sIGV4bikpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIHJlZ2lzdHJ5IHZlcnNpb24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBIYXNodGJsLnNldCByZWdpc3RyeSB+a2V5OnZlcnNpb24gfmRhdGE6KGRpc3BhdGNoLCBBbnkuUnBjIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgICBSZWdpc3RlcicgKHN0cnVjdFxuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgXyByID0gbW9kZWxfb2ZfcmVzcG9uc2UgclxuICAgICAgICBlbmQpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgIHR5cGUgZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gKHJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnQsIGVycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBkaXNwYXRjaF9pdGVyX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gcXVlcnlcbiAgICAgICAgLT4gZjoocmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAtPiAoUGlwZV9ycGMuSWQudCwgZXJyb3IpIFJlc3VsdC50IE9yX2Vycm9yLnQgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgYWJvcnRfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdCBPcl9lcnJvci50XG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICB0eXBlIGRpc3BhdGNoZXIgPVxuICAgICAgICB7IGFib3J0IDogQ29ubmVjdGlvbi50IC0+IFBpcGVfcnBjLklkLnQgLT4gdW5pdFxuICAgICAgICA7IGRpc3BhdGNoIDpcbiAgICAgICAgICAgIENvbm5lY3Rpb24udFxuICAgICAgICAgICAgLT4gTW9kZWwucXVlcnlcbiAgICAgICAgICAgIC0+ICggTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogUGlwZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAgICAgLCBNb2RlbC5lcnJvciApXG4gICAgICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgICAgIE9yX2Vycm9yLnRcbiAgICAgICAgICAgICAgICAgRGVmZXJyZWQudFxuICAgICAgICA7IGRpc3BhdGNoX2l0ZXIgOlxuICAgICAgICAgICAgQ29ubmVjdGlvbi50XG4gICAgICAgICAgICAtPiBNb2RlbC5xdWVyeVxuICAgICAgICAgICAgLT4gZjooTW9kZWwucmVzcG9uc2UgUGlwZV9ycGMuUGlwZV9tZXNzYWdlLnQgLT4gUGlwZV9ycGMuUGlwZV9yZXNwb25zZS50KVxuICAgICAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIE1vZGVsLmVycm9yKSBSZXN1bHQudCBPcl9lcnJvci50IERlZmVycmVkLnRcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA6IChkaXNwYXRjaGVyICogQW55LnQpIEludC5UYWJsZS50ID0gSW50LlRhYmxlLmNyZWF0ZSB+c2l6ZToxICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IExpc3QubWFwIChIYXNodGJsLmRhdGEgcmVnaXN0cnkpIH5mOihmdW4gKF8sIHJwYykgLT4gcnBjKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gSW50LlNldC5vZl9saXN0IChJbnQuVGFibGUua2V5cyByZWdpc3RyeSlcblxuICAgICAgbGV0IGRpc3BhdGNoX2l0ZXJfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgfmYgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBkaXNwYXRjaF9pdGVyOyBfIH0gY29ubiBxdWVyeSAtPiBkaXNwYXRjaF9pdGVyIGNvbm4gcXVlcnkgfmYpXG4gICAgICA7O1xuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgcXVlcnkgPVxuICAgICAgICBEaXNwYXRjaC5Bc3luYy53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgcXVlcnlcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBkaXNwYXRjaDsgXyB9IGNvbm4gcXVlcnkgLT4gZGlzcGF0Y2ggY29ubiBxdWVyeSlcbiAgICAgIDs7XG5cbiAgICAgIGxldCBhYm9ydF9tdWx0aSBjb25uX3dpdGhfbWVudSBpZCA9XG4gICAgICAgIERpc3BhdGNoLkRpcmVjdC53aXRoX3ZlcnNpb25fbWVudVxuICAgICAgICAgIGNvbm5fd2l0aF9tZW51XG4gICAgICAgICAgaWRcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOihmdW4geyBhYm9ydDsgXyB9IGNvbm4gaWQgLT5cbiAgICAgICAgICAgIGFib3J0IGNvbm4gaWQ7XG4gICAgICAgICAgICBPayAoKSlcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHJlc3BvbnNlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcbiAgICAgICAgdmFsIHF1ZXJ5X29mX21vZGVsIDogTW9kZWwucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIG1vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pIDogVmVyc2lvbl9zaGFyZWQpIChDb252ZXJ0IDogc2lnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgY29udmVydF9lbHQgOiAoVmVyc2lvbl9pLnJlc3BvbnNlIC0+IE1vZGVsLnJlc3BvbnNlKSBPcl9lcnJvci50XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCBjb252ZXJ0X3BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgVmVyc2lvbl9pLnJlc3BvbnNlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcbiAgICAgICAgb3BlbiBDb252ZXJ0XG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgUGlwZV9ycGMuY3JlYXRlXG4gICAgICAgICAgICB+bmFtZVxuICAgICAgICAgICAgfnZlcnNpb25cbiAgICAgICAgICAgIH5iaW5fcXVlcnlcbiAgICAgICAgICAgIH5iaW5fcmVzcG9uc2VcbiAgICAgICAgICAgIH5iaW5fZXJyb3JcbiAgICAgICAgICAgID9jbGllbnRfcHVzaGVzX2JhY2s6KE9wdGlvbi5zb21lX2lmIGNsaWVudF9wdXNoZXNfYmFjayAoKSlcbiAgICAgICAgICAgICgpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IHdyYXBwZWRfcXVlcnlfb2ZfbW9kZWwgcSA9XG4gICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIHEgd2l0aFxuICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgcmV0dXJuIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICB8IHEgLT4gcmV0dXJuIChPayBxKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBjb252ZXJ0X3Jlc3VsdCByZXN1bHQgfmNvbnZlcnRfb2sgPVxuICAgICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgICAgfCBFcnJvciBfIGFzIGUgLT4gZVxuICAgICAgICAgIHwgT2sgKEVycm9yIGUpIC0+XG4gICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX2Vycm9yIGUgd2l0aFxuICAgICAgICAgICAgIHwgZScgLT4gT2sgKEVycm9yIGUnKVxuICAgICAgICAgICAgIHwgZXhjZXB0aW9uIGV4biAtPlxuICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgfCBPayAoT2sgb2spIC0+IE9rIChPayAoY29udmVydF9vayBvaykpXG4gICAgICAgIDs7XG5cbiAgICAgICAgbGV0IGRpc3BhdGNoIGNvbm4gcSA9XG4gICAgICAgICAgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxXG4gICAgICAgICAgPj49PyBmdW4gcSAtPlxuICAgICAgICAgIGxldCVtYXAgcmVzdWx0ID0gUGlwZV9ycGMuZGlzcGF0Y2ggcnBjIGNvbm4gcSBpblxuICAgICAgICAgIGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vazooZnVuIChwaXBlLCBpZCkgLT4gY29udmVydF9waXBlIHBpcGUsIGlkKVxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBkaXNwYXRjaF9pdGVyIGNvbm4gcSB+ZiA9XG4gICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3Iub2tfZXhuIGNvbnZlcnRfZWx0IGluXG4gICAgICAgICAgd3JhcHBlZF9xdWVyeV9vZl9tb2RlbCBxXG4gICAgICAgICAgPj49PyBmdW4gcSAtPlxuICAgICAgICAgIGxldCBjb252ZXJ0X21lc3NhZ2UgKG0gOiBfIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50KSA9XG4gICAgICAgICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgICAgIHwgQ2xvc2VkIF8gYXMgY2xvc2VkIC0+IGNsb3NlZFxuICAgICAgICAgICAgfCBVcGRhdGUgdSAtPiBVcGRhdGUgKGNvbnZlcnRfZWx0IHUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9XG4gICAgICAgICAgICBQaXBlX3JwYy5kaXNwYXRjaF9pdGVyIHJwYyBjb25uIHEgfmY6KGZ1biBtZXNzYWdlIC0+XG4gICAgICAgICAgICAgIGYgKGNvbnZlcnRfbWVzc2FnZSBtZXNzYWdlKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGNvbnZlcnRfcmVzdWx0IHJlc3VsdCB+Y29udmVydF9vazpGbi5pZFxuICAgICAgICA7O1xuXG4gICAgICAgIGxldCBhYm9ydCBjb25uIGlkID0gUGlwZV9ycGMuYWJvcnQgcnBjIGNvbm4gaWRcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIEhhc2h0Ymwuc2V0XG4gICAgICAgICAgICAgIHJlZ2lzdHJ5XG4gICAgICAgICAgICAgIH5rZXk6dmVyc2lvblxuICAgICAgICAgICAgICB+ZGF0YTooeyBhYm9ydDsgZGlzcGF0Y2g7IGRpc3BhdGNoX2l0ZXIgfSwgQW55LlBpcGUgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwucmVzcG9uc2UgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgICBNYWtlX3NoYXJlZFxuICAgICAgICAgIChWZXJzaW9uX2kpXG4gICAgICAgICAgKHN0cnVjdFxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfZWx0ID0gT3JfZXJyb3IuZXJyb3Jfc3RyaW5nIFwiQ2Fubm90IHVzZSBEaXJlY3Qgd2l0aCBSZWdpc3Rlcl9yYXdcIlxuICAgICAgICAgICAgbGV0IGNvbnZlcnRfcGlwZSA9IFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgbW9kZWxfb2ZfcmVzcG9uc2UgOiByZXNwb25zZSAtPiBNb2RlbC5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgICAgTWFrZV9zaGFyZWRcbiAgICAgICAgICAoVmVyc2lvbl9pKVxuICAgICAgICAgIChzdHJ1Y3RcbiAgICAgICAgICAgIGxldCBjb252ZXJ0X2VsdCA9IE9rIFZlcnNpb25faS5tb2RlbF9vZl9yZXNwb25zZVxuXG4gICAgICAgICAgICBsZXQgY29udmVydF9waXBlIHJzID1cbiAgICAgICAgICAgICAgUGlwZS5tYXAgcnMgfmY6KGZ1biByIC0+XG4gICAgICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX3Jlc3BvbnNlIHIgd2l0aFxuICAgICAgICAgICAgICAgIHwgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvclxuICAgICAgICAgICAgICAgICAgICAoZmFpbGVkX2NvbnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgKGBSZXNwb25zZSwgYFJwYyBuYW1lLCBgVmVyc2lvbiBWZXJzaW9uX2kudmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIFN0YXRlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgcXVlcnlcbiAgICAgIHR5cGUgc3RhdGVcbiAgICAgIHR5cGUgdXBkYXRlXG4gICAgICB0eXBlIGVycm9yXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aVxuICAgICAgICA6ICBDb25uZWN0aW9uX3dpdGhfbWVudS50XG4gICAgICAgIC0+IHF1ZXJ5XG4gICAgICAgIC0+ICggc3RhdGUgKiB1cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50ICogU3RhdGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBlcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgdHlwZSB1cGRhdGVcbiAgICAgICAgdHlwZSBlcnJvclxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBsZXQgbmFtZSA9IE1vZGVsLm5hbWVcbiAgICAgIGxldCByZWdpc3RyeSA9IEludC5UYWJsZS5jcmVhdGUgfnNpemU6MSAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBMaXN0Lm1hcCAoSGFzaHRibC5kYXRhIHJlZ2lzdHJ5KSB+ZjooZnVuIChfLCBycGMpIC0+IHJwYylcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IEludC5TZXQub2ZfbGlzdCAoSW50LlRhYmxlLmtleXMgcmVnaXN0cnkpXG5cbiAgICAgIGxldCBkaXNwYXRjaF9tdWx0aSBjb25uX3dpdGhfbWVudSBxdWVyeSA9XG4gICAgICAgIERpc3BhdGNoLkFzeW5jLndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBxdWVyeVxuICAgICAgICAgIH5uYW1lXG4gICAgICAgICAgfnZlcnNpb25zXG4gICAgICAgICAgfnJlZ2lzdHJ5XG4gICAgICAgICAgfmRpc3BhdGNoZXI6Rm4uaWRcbiAgICAgIDs7XG5cbiAgICAgIG1vZHVsZSB0eXBlIFZlcnNpb25fc2hhcmVkID0gc2lnXG4gICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIHN0YXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSB1cGRhdGUgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICB0eXBlIGVycm9yIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICB2YWwgdmVyc2lvbiA6IGludFxuICAgICAgICB2YWwgcXVlcnlfb2ZfbW9kZWwgOiBNb2RlbC5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5zdGF0ZVxuICAgICAgICB2YWwgbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5lcnJvclxuICAgICAgICB2YWwgY2xpZW50X3B1c2hlc19iYWNrIDogYm9vbFxuICAgICAgZW5kXG5cbiAgICAgIG1vZHVsZSBSZWdpc3Rlcl9yYXcgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIDogIHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgICAgICAtPiBNb2RlbC51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIG9wZW4gVmVyc2lvbl9pXG5cbiAgICAgICAgbGV0IHJwYyA9XG4gICAgICAgICAgU3RhdGVfcnBjLmNyZWF0ZVxuICAgICAgICAgICAgfm5hbWVcbiAgICAgICAgICAgIH52ZXJzaW9uXG4gICAgICAgICAgICB+YmluX3F1ZXJ5XG4gICAgICAgICAgICB+YmluX3N0YXRlXG4gICAgICAgICAgICB+YmluX3VwZGF0ZVxuICAgICAgICAgICAgfmJpbl9lcnJvclxuICAgICAgICAgICAgP2NsaWVudF9wdXNoZXNfYmFjazooT3B0aW9uLnNvbWVfaWYgY2xpZW50X3B1c2hlc19iYWNrICgpKVxuICAgICAgICAgICAgKClcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggVmVyc2lvbl9pLnF1ZXJ5X29mX21vZGVsIHEgd2l0aFxuICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIChFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBRdWVyeSwgYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uLCBleG4pKSlcbiAgICAgICAgICAgIHwgcSAtPlxuICAgICAgICAgICAgICBsZXQlbWFwIHJlc3VsdCA9IFN0YXRlX3JwYy5kaXNwYXRjaCBycGMgY29ubiBxIGluXG4gICAgICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICAgICAgfCBFcnJvciBleG4gLT4gRXJyb3IgZXhuXG4gICAgICAgICAgICAgICB8IE9rIChFcnJvciBlKSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggVmVyc2lvbl9pLm1vZGVsX29mX2Vycm9yIGUgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBlJyAtPiBPayAoRXJyb3IgZScpXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgRXJyb3IsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICAgICB8IE9rIChPayAoc3RhdGUsIHBpcGUsIGlkKSkgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIFZlcnNpb25faS5tb2RlbF9vZl9zdGF0ZSBzdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBleG4gLT5cbiAgICAgICAgICAgICAgICAgICAgRXJyb3IgKGZhaWxlZF9jb252ZXJzaW9uIChgU3RhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgICAgICAgIHwgc3RhdGUgLT4gT2sgKE9rIChzdGF0ZSwgVmVyc2lvbl9pLm1vZGVsX29mX3VwZGF0ZSBwaXBlLCBpZCkpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55LlN0YXRlIHJwYylcbiAgICAgICAgICB8IFNvbWUgXyAtPiBFcnJvci5yYWlzZSAobXVsdGlwbGVfcmVnaXN0cmF0aW9ucyAoYFJwYyBuYW1lLCBgVmVyc2lvbiB2ZXJzaW9uKSlcbiAgICAgICAgOztcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCBtb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwudXBkYXRlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgUmVnaXN0ZXJfcmF3IChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgcnMgPVxuICAgICAgICAgICAgICBQaXBlLm1hcCBycyB+ZjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBWZXJzaW9uX2kubW9kZWxfb2ZfdXBkYXRlIHIgd2l0aFxuICAgICAgICAgICAgICAgIHwgciAtPiBPayByXG4gICAgICAgICAgICAgICAgfCBleGNlcHRpb24gZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBVcGRhdGUsIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSkpXG4gICAgICAgICAgICA7O1xuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgT25lX3dheSA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgbXNnXG5cbiAgICAgIHZhbCBkaXNwYXRjaF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gbXNnIC0+IHVuaXQgT3JfZXJyb3IudFxuICAgICAgdmFsIHJwY3MgOiB1bml0IC0+IEFueS50IGxpc3RcbiAgICAgIHZhbCB2ZXJzaW9ucyA6IHVuaXQgLT4gSW50LlNldC50XG4gICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuICAgIGVuZFxuXG4gICAgbW9kdWxlIE1ha2UgKE1vZGVsIDogc2lnXG4gICAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG5cbiAgICAgICAgdHlwZSBtc2dcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgbGV0IG5hbWUgPSBNb2RlbC5uYW1lXG4gICAgICBsZXQgcmVnaXN0cnkgPSBJbnQuVGFibGUuY3JlYXRlIH5zaXplOjEgKClcbiAgICAgIGxldCBycGNzICgpID0gTGlzdC5tYXAgKEhhc2h0YmwuZGF0YSByZWdpc3RyeSkgfmY6KGZ1biAoXywgcnBjKSAtPiBycGMpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBJbnQuU2V0Lm9mX2xpc3QgKEludC5UYWJsZS5rZXlzIHJlZ2lzdHJ5KVxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgY29ubl93aXRoX21lbnUgbXNnID1cbiAgICAgICAgRGlzcGF0Y2guRGlyZWN0LndpdGhfdmVyc2lvbl9tZW51XG4gICAgICAgICAgY29ubl93aXRoX21lbnVcbiAgICAgICAgICBtc2dcbiAgICAgICAgICB+bmFtZVxuICAgICAgICAgIH52ZXJzaW9uc1xuICAgICAgICAgIH5yZWdpc3RyeVxuICAgICAgICAgIH5kaXNwYXRjaGVyOkZuLmlkXG4gICAgICA7O1xuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCB2ZXJzaW9uIDogaW50XG4gICAgICAgICAgdmFsIG1zZ19vZl9tb2RlbCA6IE1vZGVsLm1zZyAtPiBtc2dcbiAgICAgICAgZW5kKSA9XG4gICAgICBzdHJ1Y3RcbiAgICAgICAgb3BlbiBWZXJzaW9uX2lcblxuICAgICAgICBsZXQgcnBjID0gT25lX3dheS5jcmVhdGUgfm5hbWUgfnZlcnNpb24gfmJpbl9tc2dcblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCBkaXNwYXRjaCBjb25uIHEgPVxuICAgICAgICAgICAgbWF0Y2ggUmVzdWx0LnRyeV93aXRoIChmdW4gKCkgLT4gVmVyc2lvbl9pLm1zZ19vZl9tb2RlbCBxKSB3aXRoXG4gICAgICAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgICAgICBFcnJvciAoZmFpbGVkX2NvbnZlcnNpb24gKGBNc2csIGBScGMgbmFtZSwgYFZlcnNpb24gdmVyc2lvbiwgZXhuKSlcbiAgICAgICAgICAgIHwgT2sgcSAtPiBPbmVfd2F5LmRpc3BhdGNoIHJwYyBjb25uIHFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCByZWdpc3RyeSB2ZXJzaW9uIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gSGFzaHRibC5zZXQgcmVnaXN0cnkgfmtleTp2ZXJzaW9uIH5kYXRhOihkaXNwYXRjaCwgQW55Lk9uZV93YXkgcnBjKVxuICAgICAgICAgIHwgU29tZSBfIC0+IEVycm9yLnJhaXNlIChtdWx0aXBsZV9yZWdpc3RyYXRpb25zIChgUnBjIG5hbWUsIGBWZXJzaW9uIHZlcnNpb24pKVxuICAgICAgICA7O1xuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBCb3RoX2NvbnZlcnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBsYWluID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9yZXNwb25zZVxuICAgICAgdHlwZSBjYWxsZWVfcmVzcG9uc2VcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+IGNhbGxlcl9yZXNwb25zZSBPcl9lcnJvci50IERlZmVycmVkLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGUgLT4gdmVyc2lvbjppbnQgLT4gY2FsbGVlX3F1ZXJ5IC0+IGNhbGxlZV9yZXNwb25zZSBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2VcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuUnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlJwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgcXVlcnkgW0BAZGVyaXZpbmcgYmluX2lvXVxuICAgICAgICAgIHR5cGUgcmVzcG9uc2UgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IENhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICAgIHZhbCBjYWxsZWVfbW9kZWxfb2ZfcXVlcnkgOiBxdWVyeSAtPiBDYWxsZWUucXVlcnlcbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsIDogQ2FsbGVlLnJlc3BvbnNlIC0+IHJlc3BvbnNlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZSA6IHJlc3BvbnNlIC0+IENhbGxlci5yZXNwb25zZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uXG5cbiAgICAgICAgICAgIGxldCBxdWVyeV9vZl9tb2RlbCA9IHF1ZXJ5X29mX2NhbGxlcl9tb2RlbFxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3Jlc3BvbnNlID0gY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlXG4gICAgICAgICAgZW5kKVxuXG4gICAgICAgIGxldCV0ZXN0IF8gPSBJbnQuU2V0LmVxdWFsIChDYWxsZXIudmVyc2lvbnMgKCkpIChDYWxsZWUudmVyc2lvbnMgKCkpXG4gICAgICBlbmRcblxuICAgICAgbGV0IGRpc3BhdGNoX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX211bHRpXG4gICAgICBsZXQgaW1wbGVtZW50X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9tdWx0aVxuXG4gICAgICAoKiBOb3RlOiBDYWxsZXIudmVyc2lvbnMgaXMgdGhlIHNhbWUgYXMgQ2FsbGVlLnZlcnNpb25zLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaFxuICAgICAgICAgb25lIHdlIGNhbGwgaGVyZS4gU2FtZSBmb3IgW3JwY3NdLiAqKVxuICAgICAgbGV0IHZlcnNpb25zICgpID0gQ2FsbGVyLnZlcnNpb25zICgpXG4gICAgICBsZXQgcnBjcyAoKSA9IENhbGxlci5ycGNzICgpXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBQaXBlX3JwYyA9IHN0cnVjdFxuICAgIG1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgICAgIHR5cGUgY2FsbGVyX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlZV9xdWVyeVxuICAgICAgdHlwZSBjYWxsZXJfcmVzcG9uc2VcbiAgICAgIHR5cGUgY2FsbGVlX3Jlc3BvbnNlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3Jlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudCAqIFBpcGVfcnBjLk1ldGFkYXRhLnRcbiAgICAgICAgICAgLCBjYWxsZXJfZXJyb3IgKVxuICAgICAgICAgICAgIFJlc3VsdC50XG4gICAgICAgICAgICAgT3JfZXJyb3IudFxuICAgICAgICAgICAgIERlZmVycmVkLnRcblxuICAgICAgdmFsIGRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgICAgOiAgQ29ubmVjdGlvbl93aXRoX21lbnUudFxuICAgICAgICAtPiBjYWxsZXJfcXVlcnlcbiAgICAgICAgLT4gZjooY2FsbGVyX3Jlc3BvbnNlIFBpcGVfcnBjLlBpcGVfbWVzc2FnZS50IC0+IFBpcGVfcnBjLlBpcGVfcmVzcG9uc2UudClcbiAgICAgICAgLT4gKFBpcGVfcnBjLklkLnQsIGNhbGxlcl9lcnJvcikgUmVzdWx0LnQgT3JfZXJyb3IudCBEZWZlcnJlZC50XG5cbiAgICAgIHZhbCBhYm9ydF9tdWx0aSA6IENvbm5lY3Rpb25fd2l0aF9tZW51LnQgLT4gUGlwZV9ycGMuSWQudCAtPiB1bml0IE9yX2Vycm9yLnRcblxuICAgICAgdmFsIGltcGxlbWVudF9tdWx0aVxuICAgICAgICA6ICA/bG9nX25vdF9wcmV2aW91c2x5X3NlZW5fdmVyc2lvbjoobmFtZTpzdHJpbmcgLT4gaW50IC0+IHVuaXQpXG4gICAgICAgIC0+ICgnc3RhdGVcbiAgICAgICAgICAgIC0+IHZlcnNpb246aW50XG4gICAgICAgICAgICAtPiBjYWxsZWVfcXVlcnlcbiAgICAgICAgICAgIC0+IChjYWxsZWVfcmVzcG9uc2UgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfZGlyZWN0X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gY2FsbGVlX3Jlc3BvbnNlIFZlcnNpb25lZF9kaXJlY3Rfc3RyZWFtX3dyaXRlci50XG4gICAgICAgICAgICAtPiAodW5pdCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudCBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSByZXNwb25zZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgcXVlcnlcbiAgICAgICAgICB0eXBlIHJlc3BvbnNlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgbW9kdWxlIENhbGxlciA9IENhbGxlcl9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVyXG4gICAgICAgIGVuZClcblxuICAgICAgbW9kdWxlIENhbGxlZSA9IENhbGxlZV9jb252ZXJ0cy5QaXBlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSByZXNwb25zZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgZXJyb3IgW0BAZGVyaXZpbmcgYmluX2lvXVxuXG4gICAgICAgIHZhbCBxdWVyeV9vZl9jYWxsZXJfbW9kZWwgOiBNb2RlbC5DYWxsZXIucXVlcnkgLT4gcXVlcnlcbiAgICAgICAgdmFsIGNhbGxlZV9tb2RlbF9vZl9xdWVyeSA6IHF1ZXJ5IC0+IE1vZGVsLkNhbGxlZS5xdWVyeVxuICAgICAgICB2YWwgZXJyb3Jfb2ZfY2FsbGVlX21vZGVsIDogTW9kZWwuQ2FsbGVlLmVycm9yIC0+IGVycm9yXG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2ZfZXJyb3IgOiBlcnJvciAtPiBNb2RlbC5DYWxsZXIuZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICA6ICBNb2RlbC5DYWxsZWUucmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl9yZXNwb25zZVxuICAgICAgICAgICAgOiAgcmVzcG9uc2UgUGlwZS5SZWFkZXIudFxuICAgICAgICAgICAgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlIE9yX2Vycm9yLnQgUGlwZS5SZWFkZXIudFxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3F1ZXJ5ID0gY2FsbGVlX21vZGVsX29mX3F1ZXJ5XG4gICAgICAgICAgICBsZXQgcmVzcG9uc2Vfb2ZfbW9kZWwgPSByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXIgKFZlcnNpb25faSA6IHNpZ1xuICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9zaGFyZWRcblxuICAgICAgICAgIHZhbCByZXNwb25zZV9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUucmVzcG9uc2UgLT4gcmVzcG9uc2VcbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3Jlc3BvbnNlIDogcmVzcG9uc2UgLT4gTW9kZWwuQ2FsbGVyLnJlc3BvbnNlXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvbl9pXG5cbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9xdWVyeSA9IGNhbGxlZV9tb2RlbF9vZl9xdWVyeVxuICAgICAgICAgICAgbGV0IHJlc3BvbnNlX29mX21vZGVsID0gcmVzcG9uc2Vfb2ZfY2FsbGVlX21vZGVsXG4gICAgICAgICAgICBsZXQgZXJyb3Jfb2ZfbW9kZWwgPSBlcnJvcl9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgaW5jbHVkZSBDYWxsZXIuUmVnaXN0ZXIgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcmVzcG9uc2UgPSBjYWxsZXJfbW9kZWxfb2ZfcmVzcG9uc2VcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBkaXNwYXRjaF9pdGVyX211bHRpID0gQ2FsbGVyLmRpc3BhdGNoX2l0ZXJfbXVsdGlcbiAgICAgIGxldCBhYm9ydF9tdWx0aSA9IENhbGxlci5hYm9ydF9tdWx0aVxuICAgICAgbGV0IGltcGxlbWVudF9tdWx0aSA9IENhbGxlZS5pbXBsZW1lbnRfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfZGlyZWN0X211bHRpID0gQ2FsbGVlLmltcGxlbWVudF9kaXJlY3RfbXVsdGlcbiAgICAgIGxldCB2ZXJzaW9ucyAoKSA9IENhbGxlci52ZXJzaW9ucyAoKVxuICAgICAgbGV0IHJwY3MgKCkgPSBDYWxsZXIucnBjcyAoKVxuICAgIGVuZFxuICBlbmRcblxuICBtb2R1bGUgU3RhdGVfcnBjID0gc3RydWN0XG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBjYWxsZXJfcXVlcnlcbiAgICAgIHR5cGUgY2FsbGVlX3F1ZXJ5XG4gICAgICB0eXBlIGNhbGxlcl9zdGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfc3RhdGVcbiAgICAgIHR5cGUgY2FsbGVyX3VwZGF0ZVxuICAgICAgdHlwZSBjYWxsZWVfdXBkYXRlXG4gICAgICB0eXBlIGNhbGxlcl9lcnJvclxuICAgICAgdHlwZSBjYWxsZWVfZXJyb3JcblxuICAgICAgdmFsIGRpc3BhdGNoX211bHRpXG4gICAgICAgIDogIENvbm5lY3Rpb25fd2l0aF9tZW51LnRcbiAgICAgICAgLT4gY2FsbGVyX3F1ZXJ5XG4gICAgICAgIC0+ICggY2FsbGVyX3N0YXRlICogY2FsbGVyX3VwZGF0ZSBPcl9lcnJvci50IFBpcGUuUmVhZGVyLnQgKiBTdGF0ZV9ycGMuTWV0YWRhdGEudFxuICAgICAgICAgICAsIGNhbGxlcl9lcnJvciApXG4gICAgICAgICAgICAgUmVzdWx0LnRcbiAgICAgICAgICAgICBPcl9lcnJvci50XG4gICAgICAgICAgICAgRGVmZXJyZWQudFxuXG4gICAgICB2YWwgaW1wbGVtZW50X211bHRpXG4gICAgICAgIDogID9sb2dfbm90X3ByZXZpb3VzbHlfc2Vlbl92ZXJzaW9uOihuYW1lOnN0cmluZyAtPiBpbnQgLT4gdW5pdClcbiAgICAgICAgLT4gKCdzdGF0ZVxuICAgICAgICAgICAgLT4gdmVyc2lvbjppbnRcbiAgICAgICAgICAgIC0+IGNhbGxlZV9xdWVyeVxuICAgICAgICAgICAgLT4gKGNhbGxlZV9zdGF0ZSAqIGNhbGxlZV91cGRhdGUgUGlwZS5SZWFkZXIudCwgY2FsbGVlX2Vycm9yKSBSZXN1bHQudFxuICAgICAgICAgICAgICAgICBEZWZlcnJlZC50KVxuICAgICAgICAtPiAnc3RhdGUgSW1wbGVtZW50YXRpb24udCBsaXN0XG5cbiAgICAgIHZhbCBycGNzIDogdW5pdCAtPiBBbnkudCBsaXN0XG4gICAgICB2YWwgdmVyc2lvbnMgOiB1bml0IC0+IEludC5TZXQudFxuICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcbiAgICBlbmRcblxuICAgIG1vZHVsZSBNYWtlIChNb2RlbCA6IHNpZ1xuICAgICAgICB2YWwgbmFtZSA6IHN0cmluZ1xuXG4gICAgICAgIG1vZHVsZSBDYWxsZXIgOiBzaWdcbiAgICAgICAgICB0eXBlIHF1ZXJ5XG4gICAgICAgICAgdHlwZSBzdGF0ZVxuICAgICAgICAgIHR5cGUgdXBkYXRlXG4gICAgICAgICAgdHlwZSBlcnJvclxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgQ2FsbGVlIDogc2lnXG4gICAgICAgICAgdHlwZSBxdWVyeVxuICAgICAgICAgIHR5cGUgc3RhdGVcbiAgICAgICAgICB0eXBlIHVwZGF0ZVxuICAgICAgICAgIHR5cGUgZXJyb3JcbiAgICAgICAgZW5kXG4gICAgICBlbmQpID1cbiAgICBzdHJ1Y3RcbiAgICAgIG9wZW4gTW9kZWxcblxuICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgIG1vZHVsZSBDYWxsZXIgPSBDYWxsZXJfY29udmVydHMuU3RhdGVfcnBjLk1ha2UgKHN0cnVjdFxuICAgICAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICAgICAgaW5jbHVkZSBDYWxsZXJcbiAgICAgICAgZW5kKVxuXG4gICAgICBtb2R1bGUgQ2FsbGVlID0gQ2FsbGVlX2NvbnZlcnRzLlN0YXRlX3JwYy5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIHR5cGUgVmVyc2lvbl9zaGFyZWQgPSBzaWdcbiAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICB0eXBlIHF1ZXJ5IFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBzdGF0ZSBbQEBkZXJpdmluZyBiaW5faW9dXG4gICAgICAgIHR5cGUgdXBkYXRlIFtAQGRlcml2aW5nIGJpbl9pb11cbiAgICAgICAgdHlwZSBlcnJvciBbQEBkZXJpdmluZyBiaW5faW9dXG5cbiAgICAgICAgdmFsIHF1ZXJ5X29mX2NhbGxlcl9tb2RlbCA6IE1vZGVsLkNhbGxlci5xdWVyeSAtPiBxdWVyeVxuICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX3F1ZXJ5IDogcXVlcnkgLT4gTW9kZWwuQ2FsbGVlLnF1ZXJ5XG4gICAgICAgIHZhbCBjYWxsZXJfbW9kZWxfb2Zfc3RhdGUgOiBzdGF0ZSAtPiBNb2RlbC5DYWxsZXIuc3RhdGVcbiAgICAgICAgdmFsIHN0YXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS5zdGF0ZSAtPiBzdGF0ZVxuICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX2Vycm9yIDogZXJyb3IgLT4gTW9kZWwuQ2FsbGVyLmVycm9yXG4gICAgICAgIHZhbCBlcnJvcl9vZl9jYWxsZWVfbW9kZWwgOiBNb2RlbC5DYWxsZWUuZXJyb3IgLT4gZXJyb3JcbiAgICAgICAgdmFsIGNsaWVudF9wdXNoZXNfYmFjayA6IGJvb2xcbiAgICAgIGVuZFxuXG4gICAgICBtb2R1bGUgUmVnaXN0ZXJfcmF3IChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgY2FsbGVyX21vZGVsX29mX3VwZGF0ZVxuICAgICAgICAgICAgOiAgdXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IE1vZGVsLkNhbGxlci51cGRhdGUgT3JfZXJyb3IudCBQaXBlLlJlYWRlci50XG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgOiAgTW9kZWwuQ2FsbGVlLnN0YXRlXG4gICAgICAgICAgICAtPiBNb2RlbC5DYWxsZWUudXBkYXRlIFBpcGUuUmVhZGVyLnRcbiAgICAgICAgICAgIC0+IHVwZGF0ZSBQaXBlLlJlYWRlci50XG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyX3JhdyAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3Rlcl9yYXcgKHN0cnVjdFxuICAgICAgICAgICAgaW5jbHVkZSBWZXJzaW9uX2lcblxuICAgICAgICAgICAgbGV0IHF1ZXJ5X29mX21vZGVsID0gcXVlcnlfb2ZfY2FsbGVyX21vZGVsXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2Zfc3RhdGUgPSBjYWxsZXJfbW9kZWxfb2Zfc3RhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl91cGRhdGUgPSBjYWxsZXJfbW9kZWxfb2ZfdXBkYXRlXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfZXJyb3IgPSBjYWxsZXJfbW9kZWxfb2ZfZXJyb3JcbiAgICAgICAgICBlbmQpXG4gICAgICBlbmRcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uX2kgOiBzaWdcbiAgICAgICAgICBpbmNsdWRlIFZlcnNpb25fc2hhcmVkXG5cbiAgICAgICAgICB2YWwgdXBkYXRlX29mX2NhbGxlZV9tb2RlbCA6IE1vZGVsLkNhbGxlZS51cGRhdGUgLT4gdXBkYXRlXG4gICAgICAgICAgdmFsIGNhbGxlcl9tb2RlbF9vZl91cGRhdGUgOiB1cGRhdGUgLT4gTW9kZWwuQ2FsbGVyLnVwZGF0ZVxuICAgICAgICBlbmQpID1cbiAgICAgIHN0cnVjdFxuICAgICAgICBpbmNsdWRlIENhbGxlZS5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfcXVlcnkgPSBjYWxsZWVfbW9kZWxfb2ZfcXVlcnlcbiAgICAgICAgICAgIGxldCBzdGF0ZV9vZl9tb2RlbCA9IHN0YXRlX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgICAgbGV0IHVwZGF0ZV9vZl9tb2RlbCA9IHVwZGF0ZV9vZl9jYWxsZWVfbW9kZWxcbiAgICAgICAgICAgIGxldCBlcnJvcl9vZl9tb2RlbCA9IGVycm9yX29mX2NhbGxlZV9tb2RlbFxuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25faVxuXG4gICAgICAgICAgICBsZXQgcXVlcnlfb2ZfbW9kZWwgPSBxdWVyeV9vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9zdGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl9zdGF0ZVxuICAgICAgICAgICAgbGV0IG1vZGVsX29mX3VwZGF0ZSA9IGNhbGxlcl9tb2RlbF9vZl91cGRhdGVcbiAgICAgICAgICAgIGxldCBtb2RlbF9vZl9lcnJvciA9IGNhbGxlcl9tb2RlbF9vZl9lcnJvclxuICAgICAgICAgIGVuZClcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5cbiAgbW9kdWxlIE9uZV93YXkgPSBzdHJ1Y3RcbiAgICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgICB0eXBlIGNhbGxlcl9tc2dcbiAgICAgIHR5cGUgY2FsbGVlX21zZ1xuXG4gICAgICB2YWwgZGlzcGF0Y2hfbXVsdGkgOiBDb25uZWN0aW9uX3dpdGhfbWVudS50IC0+IGNhbGxlcl9tc2cgLT4gdW5pdCBPcl9lcnJvci50XG5cbiAgICAgIHZhbCBpbXBsZW1lbnRfbXVsdGlcbiAgICAgICAgOiAgP2xvZ19ub3RfcHJldmlvdXNseV9zZWVuX3ZlcnNpb246KG5hbWU6c3RyaW5nIC0+IGludCAtPiB1bml0KVxuICAgICAgICAtPiAoJ3N0YXRlIC0+IHZlcnNpb246aW50IC0+IGNhbGxlZV9tc2cgLT4gdW5pdClcbiAgICAgICAgLT4gJ3N0YXRlIEltcGxlbWVudGF0aW9uLnQgbGlzdFxuXG4gICAgICB2YWwgcnBjcyA6IHVuaXQgLT4gQW55LnQgbGlzdFxuICAgICAgdmFsIHZlcnNpb25zIDogdW5pdCAtPiBJbnQuU2V0LnRcbiAgICAgIHZhbCBuYW1lIDogc3RyaW5nXG4gICAgZW5kXG5cbiAgICBtb2R1bGUgTWFrZSAoTW9kZWwgOiBzaWdcbiAgICAgICAgdmFsIG5hbWUgOiBzdHJpbmdcblxuICAgICAgICBtb2R1bGUgQ2FsbGVyIDogc2lnXG4gICAgICAgICAgdHlwZSBtc2dcbiAgICAgICAgZW5kXG5cbiAgICAgICAgbW9kdWxlIENhbGxlZSA6IHNpZ1xuICAgICAgICAgIHR5cGUgbXNnXG4gICAgICAgIGVuZFxuICAgICAgZW5kKSA9XG4gICAgc3RydWN0XG4gICAgICBvcGVuIE1vZGVsXG5cbiAgICAgIGxldCBuYW1lID0gbmFtZVxuXG4gICAgICBtb2R1bGUgQ2FsbGVyID0gQ2FsbGVyX2NvbnZlcnRzLk9uZV93YXkuTWFrZSAoc3RydWN0XG4gICAgICAgICAgbGV0IG5hbWUgPSBuYW1lXG5cbiAgICAgICAgICBpbmNsdWRlIENhbGxlclxuICAgICAgICBlbmQpXG5cbiAgICAgIG1vZHVsZSBDYWxsZWUgPSBDYWxsZWVfY29udmVydHMuT25lX3dheS5NYWtlIChzdHJ1Y3RcbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVcblxuICAgICAgICAgIGluY2x1ZGUgQ2FsbGVlXG4gICAgICAgIGVuZClcblxuICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcblxuICAgICAgbW9kdWxlIFJlZ2lzdGVyIChWZXJzaW9uIDogc2lnXG4gICAgICAgICAgb3BlbiBNb2RlbFxuXG4gICAgICAgICAgdmFsIHZlcnNpb24gOiBpbnRcblxuICAgICAgICAgIHR5cGUgbXNnIFtAQGRlcml2aW5nIGJpbl9pb11cblxuICAgICAgICAgIHZhbCBtc2dfb2ZfY2FsbGVyX21vZGVsIDogQ2FsbGVyLm1zZyAtPiBtc2dcbiAgICAgICAgICB2YWwgY2FsbGVlX21vZGVsX29mX21zZyA6IG1zZyAtPiBDYWxsZWUubXNnXG4gICAgICAgIGVuZCkgPVxuICAgICAgc3RydWN0XG4gICAgICAgIGluY2x1ZGUgQ2FsbGVlLlJlZ2lzdGVyIChzdHJ1Y3RcbiAgICAgICAgICAgIGluY2x1ZGUgVmVyc2lvblxuXG4gICAgICAgICAgICBsZXQgbW9kZWxfb2ZfbXNnID0gY2FsbGVlX21vZGVsX29mX21zZ1xuICAgICAgICAgIGVuZClcblxuICAgICAgICBpbmNsdWRlIENhbGxlci5SZWdpc3RlciAoc3RydWN0XG4gICAgICAgICAgICBpbmNsdWRlIFZlcnNpb25cblxuICAgICAgICAgICAgbGV0IG1zZ19vZl9tb2RlbCA9IG1zZ19vZl9jYWxsZXJfbW9kZWxcbiAgICAgICAgICBlbmQpXG5cbiAgICAgICAgbGV0JXRlc3QgXyA9IEludC5TZXQuZXF1YWwgKENhbGxlci52ZXJzaW9ucyAoKSkgKENhbGxlZS52ZXJzaW9ucyAoKSlcbiAgICAgIGVuZFxuXG4gICAgICBsZXQgZGlzcGF0Y2hfbXVsdGkgPSBDYWxsZXIuZGlzcGF0Y2hfbXVsdGlcbiAgICAgIGxldCBpbXBsZW1lbnRfbXVsdGkgPSBDYWxsZWUuaW1wbGVtZW50X211bHRpXG5cbiAgICAgICgqIE5vdGU6IENhbGxlci52ZXJzaW9ucyBpcyB0aGUgc2FtZSBhcyBDYWxsZWUudmVyc2lvbnMsIHNvIGl0IGRvZXNuJ3QgbWF0dGVyIHdoaWNoXG4gICAgICAgICBvbmUgd2UgY2FsbCBoZXJlLiBTYW1lIGZvciBbcnBjc10uICopXG4gICAgICBsZXQgdmVyc2lvbnMgKCkgPSBDYWxsZXIudmVyc2lvbnMgKClcbiAgICAgIGxldCBycGNzICgpID0gQ2FsbGVyLnJwY3MgKClcbiAgICBlbmRcbiAgZW5kXG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiBBc3luY19rZXJuZWxcbm9wZW4gSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG5pbmNsdWRlIHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydFxuICBtb2R1bGUgSGVhZGVyID0gSGVhZGVyXG4gIG1vZHVsZSBIYW5kbGVyX3Jlc3VsdCA9IEhhbmRsZXJfcmVzdWx0XG4gIG1vZHVsZSBTZW5kX3Jlc3VsdCA9IFNlbmRfcmVzdWx0XG4gIG1vZHVsZSBSZWFkZXIgPSBSZWFkZXJcbiAgbW9kdWxlIFdyaXRlciA9IFdyaXRlclxuZW5kXG5cbmxldCByZWMgcGlwZV9yZWFkIHQgZiA9XG4gIG1hdGNoJWJpbmQgUGlwZS52YWx1ZXNfYXZhaWxhYmxlIHQgd2l0aFxuICB8IGBFb2YgLT4gZiBgRW9mXG4gIHwgYE9rIC0+XG4gICAgKG1hdGNoIFBpcGUucmVhZF9ub3cnIHQgd2l0aFxuICAgICB8IGBOb3RoaW5nX2F2YWlsYWJsZSAtPiBwaXBlX3JlYWQgdCBmXG4gICAgIHwgKGBFb2YgfCBgT2sgXykgYXMgcmVzIC0+IGYgcmVzKVxuOztcblxubW9kdWxlIHR5cGUgREFUQSA9IHNpZ1xuICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICB2YWwgbGVuZ3RoIDogdCAtPiBpbnRcbiAgdmFsIGFkZF90b19iaWdidWZmZXIgOiBCaWdidWZmZXIudCAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX2JpZ3N0cmluZyA6IHQgLT4gQmlnc3RyaW5nLnRcbiAgdmFsIG9mX2JpZ3N0cmluZyA6IEJpZ3N0cmluZy50IC0+IHRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfYnVmZmVyID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBwaXBlIDogJ2EgUGlwZS5SZWFkZXIudFxuICAgIDsgYnVmZmVyIDogQmlnYnVmZmVyLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID0geyBwaXBlOyBidWZmZXIgPSBCaWdidWZmZXIuY3JlYXRlIEhlYWRlci5sZW5ndGggfVxuZW5kXG5cbm1vZHVsZSBQaXBlX3JlYWRlciAoRGF0YSA6IERBVEEpID0gc3RydWN0XG4gIHR5cGUgdCA9IERhdGEudCBQaXBlX2FuZF9idWZmZXIudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjbG9zZSAodCA6IHQpID1cbiAgICBQaXBlLmNsb3NlX3JlYWQgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcblxuICBsZXQgcmVhZF9mb3JldmVyICh0IDogdCkgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCA6IChfLCBfKSBEZWZlcnJlZC5SZXN1bHQudCA9XG4gICAgbGV0IGJ1ZmZlciA9IHQuYnVmZmVyIGluXG4gICAgKCogRGVxdWV1ZSB1bnRpbCBlbm91Z2ggZGF0YSAoW25lZWRdKSBpcyBhdmFpbGFibGUgYW5kIHRyeSByZWFkIG1lc3NhZ2VzICopXG4gICAgbGV0IHJlYyBwcm9jZXNzX3F1ZXVlIH5uZWVkIHF1ZXVlID1cbiAgICAgIG1hdGNoIFF1ZXVlLmRlcXVldWUgcXVldWUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIFF1ZXVlIGlzIGVtcHR5IC0gd2UgbmVlZCB0byB3YWl0IGZvciBtb3JlIGRhdGEgKilcbiAgICAgICAgcmV0dXJuIChTZWNvbmQgbmVlZClcbiAgICAgIHwgU29tZSBkYXRhIC0+XG4gICAgICAgIGxldCBidWZmX2xlbiA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgICAgIGxldCBkYXRhX2xlbiA9IERhdGEubGVuZ3RoIGRhdGEgaW5cbiAgICAgICAgaWYgYnVmZl9sZW4gPSAwICYmIGRhdGFfbGVuID49IG5lZWRcbiAgICAgICAgdGhlblxuICAgICAgICAgICgqIFdlIGhhdmUgZW5vdWdoIGRhdGEgYW5kIGJ1ZmZlciBpcyBlbXB0eS5cbiAgICAgICAgICAgICBUaGlzIGlzIHRoZSBjb21tb24gY2FzZSB3aGVyZSBldmVyeSBiaW5fcHJvdCBtZXNzYWdlIGlzIHNlbnQgaW4gaXRzIG93blxuICAgICAgICAgICAgIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGE6KERhdGEudG9fYmlnc3RyaW5nIGRhdGEpIH5sZW5ndGg6ZGF0YV9sZW4gcXVldWVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogU2xvdyBwYXRoLiBXZSBoYXZlIHRvIGFjY3VtdWxhdGUgW0JpZ3N0cmluZy50XXMgKilcbiAgICAgICAgICBEYXRhLmFkZF90b19iaWdidWZmZXIgYnVmZmVyIGRhdGE7XG4gICAgICAgICAgaWYgQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgPj0gbmVlZFxuICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgKCogVGhlcmUgaXMgZW5vdWdoIGRhdGEgaW4gdGhlIGJ1ZmZlciAqKVxuICAgICAgICAgICAgbGV0IGRhdGEgPSBCaWdidWZmZXIudm9sYXRpbGVfY29udGVudHMgYnVmZmVyIGluXG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gQmlnYnVmZmVyLmxlbmd0aCBidWZmZXIgaW5cbiAgICAgICAgICAgIHByb2Nlc3NfZGF0YSB+cG9zOjAgfmRhdGEgfmxlbmd0aCBxdWV1ZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKiBXZSBuZWVkIG1vcmUgZGF0YSAtIGtlZXAgcHJvY2Vzc2luZyB0aGUgcXVldWUgKilcbiAgICAgICAgICAgIHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUpXG4gICAgKCogUmVhZCBhcyBtYW55IG1lc3NhZ2VzIGFzIHBvc3NpYmxlIGZyb20gdGhlIGN1cnJlbnQgZGF0YSAqKVxuICAgIGFuZCBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlID1cbiAgICAgIGlmIGxlbmd0aCA+PSBIZWFkZXIubGVuZ3RoXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IHBheWxvYWRfbGVuID0gSGVhZGVyLnVuc2FmZV9nZXRfcGF5bG9hZF9sZW5ndGggZGF0YSB+cG9zIGluXG4gICAgICAgIGxldCB0b3RhbF9sZW4gPSBIZWFkZXIubGVuZ3RoICsgcGF5bG9hZF9sZW4gaW5cbiAgICAgICAgaWYgbGVuZ3RoID49IHRvdGFsX2xlblxuICAgICAgICB0aGVuIChcbiAgICAgICAgICBtYXRjaCBvbl9tZXNzYWdlIGRhdGEgfnBvczoocG9zICsgSGVhZGVyLmxlbmd0aCkgfmxlbjpwYXlsb2FkX2xlbiB3aXRoXG4gICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIHggLT5cbiAgICAgICAgICAgIGxldCBwb3MgPSBwb3MgKyB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgIGxldCBsZW5ndGggPSBsZW5ndGggLSB0b3RhbF9sZW4gaW5cbiAgICAgICAgICAgICgqIE1ha2Ugc3VyZSB0aGF0IGFsbCBkYXRhIHdlJ3ZlIHJlYWQgKGFuZCBub3QgXCJjb25zdW1lZFwiKSBmcm9tIHRoZSBwaXBlXG4gICAgICAgICAgICAgICBpcyBrZXB0IGluIHRoZSBidWZmZXIuXG4gICAgICAgICAgICAgICBUaGF0IGlzIHRoZSByZW1haW5pbmcgYml0cyBpbiBbZGF0YV0gYW5kIGFsbCBjb250ZW50cyBpbiBbcXVldWVdLlxuICAgICAgICAgICAgKilcbiAgICAgICAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgICAgICAgUXVldWUuaXRlciBxdWV1ZSB+ZjooZnVuIGRhdGEgLT4gRGF0YS5hZGRfdG9fYmlnYnVmZmVyIGJ1ZmZlciBkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiAoRmlyc3QgeClcbiAgICAgICAgICB8IChDb250aW51ZSB8IFdhaXQgXykgYXMgY29udGludWVfb3Jfd2FpdCAtPlxuICAgICAgICAgICAgbGV0JWJpbmQgKCkgPVxuICAgICAgICAgICAgICBtYXRjaCBjb250aW51ZV9vcl93YWl0IHdpdGhcbiAgICAgICAgICAgICAgfCBIYW5kbGVyX3Jlc3VsdC5TdG9wIF8gLT5cbiAgICAgICAgICAgICAgICAoKiBJbXBvc3NpYmxlOiB0aGlzIGJyYW5jaCBkb2VzIG5vdCBjb250YWluIFtTdG9wIF9dICopXG4gICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgQ29udGludWUgLT4gRGVmZXJyZWQudW5pdFxuICAgICAgICAgICAgICB8IFdhaXQgZCAtPiBkXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHBvcyA9IHBvcyArIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IGxlbmd0aCAtIHRvdGFsX2xlbiBpblxuICAgICAgICAgICAgYXNzZXJ0IChsZW5ndGggPj0gMCk7XG4gICAgICAgICAgICBpZiBsZW5ndGggPiAwXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICgqIFByb2Nlc3MgdGhlIHJlc3Qgb2YgdGhlIGRhdGEuXG4gICAgICAgICAgICAgICAgIE1vcmUgdGhhbiBvbmUgYmluX3Byb3QgbWVzc2FnZSB3YXMgc2VudCBpbnNpZGUgdGhlIHdlYnNvY2tldCBmcmFtZSAqKVxuICAgICAgICAgICAgICBwcm9jZXNzX2RhdGEgfnBvcyB+ZGF0YSB+bGVuZ3RoIHF1ZXVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgqIGxlbmd0aCA9IDAgKilcbiAgICAgICAgICAgICAgKCogQWxsIGRhdGEgd2FzIHJlYWQgLSBrZWVwIHByb2Nlc3NpbmcgdGhlIHF1ZXVlICopXG4gICAgICAgICAgICAgIHNldF9idWZmZXJfYW5kX3Byb2Nlc3NfcXVldWUgfm5lZWQ6SGVhZGVyLmxlbmd0aCB+cG9zIH5sZW5ndGg6MCB+cXVldWUgfmRhdGEpXG4gICAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDp0b3RhbF9sZW4gfnBvcyB+bGVuZ3RoIH5xdWV1ZSB+ZGF0YSlcbiAgICAgIGVsc2Ugc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZDpIZWFkZXIubGVuZ3RoIH5wb3Mgfmxlbmd0aCB+cXVldWUgfmRhdGFcbiAgICBhbmQgc2V0X2J1ZmZlciB+cG9zIH5sZW5ndGggfmRhdGEgPVxuICAgICAgaWYgbGVuZ3RoID0gMFxuICAgICAgdGhlbiBCaWdidWZmZXIuY2xlYXIgYnVmZmVyXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuc3ViIGRhdGEgfnBvcyB+bGVuOmxlbmd0aCBpblxuICAgICAgICBCaWdidWZmZXIuY2xlYXIgYnVmZmVyO1xuICAgICAgICBCaWdidWZmZXIuYWRkX2JpZ3N0cmluZyBidWZmZXIgZGF0YSlcbiAgICBhbmQgc2V0X2J1ZmZlcl9hbmRfcHJvY2Vzc19xdWV1ZSB+bmVlZCB+cG9zIH5sZW5ndGggfnF1ZXVlIH5kYXRhID1cbiAgICAgIHNldF9idWZmZXIgfnBvcyB+bGVuZ3RoIH5kYXRhO1xuICAgICAgcHJvY2Vzc19xdWV1ZSB+bmVlZCBxdWV1ZVxuICAgIGluXG4gICAgbGV0IHJlYyB3YWl0X2Zvcl9yZWFkIH5uZWVkID1cbiAgICAgIHBpcGVfcmVhZCB0LnBpcGUgKGZ1bmN0aW9uXG4gICAgICAgIHwgYEVvZiAtPiByZXR1cm4gKEVycm9yIGBFb2YpXG4gICAgICAgIHwgYE9rIHF1ZXVlIC0+IHByb2Nlc3NfcXVldWUgfm5lZWQgcXVldWUgPj49IGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUpXG4gICAgYW5kIGVuZF9vZl9iYXRjaF9hbmRfY29udGludWUgbmV4dCA9XG4gICAgICBvbl9lbmRfb2ZfYmF0Y2ggKCk7XG4gICAgICBtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgRmlyc3QgcmVzdWx0IC0+IHJldHVybiAoT2sgcmVzdWx0KVxuICAgICAgfCBTZWNvbmQgbmVlZCAtPiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgaW5cbiAgICBsZXQgc3RhcnRfcHJvY2Vzc2luZ19leGlzdGluZ19kYXRhIH5kYXRhIH5sZW5ndGggPVxuICAgICAgcHJvY2Vzc19kYXRhIH5wb3M6MCB+ZGF0YSB+bGVuZ3RoIChRdWV1ZS5jcmVhdGUgKCkpID4+PSBlbmRfb2ZfYmF0Y2hfYW5kX2NvbnRpbnVlXG4gICAgaW5cbiAgICAoKiBXZSBlaXRoZXIgc3RhcnQgYnlcbiAgICAgICAtIHByb2Nlc3NpbmcgcmVtYWluaW5nIGJpdHMgaW4gdGhlIGJ1ZmZlclxuICAgICAgIC0gb3Igd2FpdGluZyBmb3IgbW9yZSBkYXRhIGluIHRoZSBwaXBlICopXG4gICAgbGV0IG5lZWQgPSBIZWFkZXIubGVuZ3RoIGluXG4gICAgbGV0IGxlbmd0aCA9IEJpZ2J1ZmZlci5sZW5ndGggYnVmZmVyIGluXG4gICAgaWYgSW50LiggPCApIGxlbmd0aCBuZWVkXG4gICAgdGhlbiB3YWl0X2Zvcl9yZWFkIH5uZWVkXG4gICAgZWxzZSBzdGFydF9wcm9jZXNzaW5nX2V4aXN0aW5nX2RhdGEgfmxlbmd0aCB+ZGF0YTooQmlnYnVmZmVyLnZvbGF0aWxlX2NvbnRlbnRzIGJ1ZmZlcilcbiAgOztcblxuICBtb2R1bGUgRm9yX3Rlc3RpbmcgPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPSBEYXRhLnRcblxuICAgIGxldCBvZl9iaWdzdHJpbmcgPSBEYXRhLm9mX2JpZ3N0cmluZ1xuICBlbmRcbmVuZFxuXG5tb2R1bGUgUGlwZV9hbmRfbW9uaXRvciA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgcGlwZSA6ICdhIFBpcGUuV3JpdGVyLnRcbiAgICA7IG1vbml0b3IgOiBNb25pdG9yLnRcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNyZWF0ZSBwaXBlID0geyBwaXBlOyBtb25pdG9yID0gTW9uaXRvci5jcmVhdGUgKCkgfVxuZW5kXG5cbigqIFdlIGRvbid0IHBlcmZvcm0gYW55IGJ1ZmZlcmluZyBoZXJlLlxuICAgQSBtZXNzYWdlIGlzIGNvbnNpZGVyIHRvIGJlIGZsdXNoZWQgYXMgc29vbiBhcyBpdCBlbnRlcnMgdGhlIHBpcGUuICopXG5tb2R1bGUgUGlwZV93cml0ZXIgKERhdGEgOiBEQVRBKSA9IHN0cnVjdFxuICB0eXBlIHQgPSBEYXRhLnQgUGlwZV9hbmRfbW9uaXRvci50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IGNsb3NlICh0IDogdCkgPVxuICAgIFBpcGUuY2xvc2UgdC5waXBlO1xuICAgIERlZmVycmVkLnVuaXRcbiAgOztcblxuICBsZXQgaXNfY2xvc2VkICh0IDogdCkgPSBQaXBlLmlzX2Nsb3NlZCB0LnBpcGVcbiAgbGV0IG1vbml0b3IgKHQgOiB0KSA9IHQubW9uaXRvclxuXG4gICgqIEJlY2F1c2Ugd2UgZG9uJ3QgbWFpbnRhaW4gYW55IGJ1ZmZlciwgdGhlcmUgYXJlIG5vIHBlbmRpbmcgd3JpdGVzICopXG4gIGxldCBieXRlc190b193cml0ZSAoXyA6IHQpID0gMFxuICBsZXQgc3RvcHBlZCAodCA6IHQpID0gUGlwZS5jbG9zZWQgdC5waXBlXG5cbiAgKCogV2UgY29uc2lkZXIgdGhhdCBhIG1lc3NhZ2UgaXMgZmx1c2hlZCBhcyBzb29uIGFzIGl0IHJlYWNoZXMgdGhlIHVuZGVybGluaW5nXG4gICAgIHRyYW5zcG9ydC4gKilcbiAgbGV0IGZsdXNoZWQgKF8gOiB0KSA9IERlZmVycmVkLnVuaXRcbiAgbGV0IHJlYWR5X3RvX3dyaXRlID0gZmx1c2hlZFxuICBsZXQgc2VudF9yZXN1bHQgeCA6IF8gU2VuZF9yZXN1bHQudCA9IFNlbnQgeFxuXG4gIGxldCBjaGVja19jbG9zZWQgKHQgOiB0KSBmID1cbiAgICBpZiBub3QgKFBpcGUuaXNfY2xvc2VkIHQucGlwZSkgdGhlbiBmICgpIGVsc2UgU2VuZF9yZXN1bHQuQ2xvc2VkXG4gIDs7XG5cbiAgbGV0IHNlbmRfYmluX3Byb3QgdCB3cml0ZXIgeCA9XG4gICAgY2hlY2tfY2xvc2VkIHQgKGZ1biAoKSAtPlxuICAgICAgbGV0IGJ1ZiA9IEJpbl9wcm90LlV0aWxzLmJpbl9kdW1wIH5oZWFkZXI6dHJ1ZSB3cml0ZXIgeCBpblxuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSAoRGF0YS5vZl9iaWdzdHJpbmcgYnVmKTtcbiAgICAgIHNlbnRfcmVzdWx0ICgpKVxuICA7O1xuXG4gIGxldCBzZW5kX2Jpbl9wcm90X2FuZF9iaWdzdHJpbmdcbiAgICAgICAgdFxuICAgICAgICAod3JpdGVyIDogXyBCaW5fcHJvdC5UeXBlX2NsYXNzLndyaXRlcilcbiAgICAgICAgeFxuICAgICAgICB+YnVmXG4gICAgICAgIH5wb3NcbiAgICAgICAgfmxlbjpwYXlsb2FkX3NpemVcbiAgICA9XG4gICAgY2hlY2tfY2xvc2VkIHQgKGZ1biAoKSAtPlxuICAgICAgKCogV3JpdGUgdGhlIHNpemUgaGVhZGVyIG1hbnVhbGx5IGFuZCBjb25jYXRlbmF0ZSB0aGUgdHdvICopXG4gICAgICBsZXQgZGF0YV9zaXplID0gd3JpdGVyLnNpemUgeCBpblxuICAgICAgbGV0IGRhdGEgPSBCaWdzdHJpbmcuY3JlYXRlIChkYXRhX3NpemUgKyBIZWFkZXIubGVuZ3RoICsgcGF5bG9hZF9zaXplKSBpblxuICAgICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggZGF0YSB+cG9zOjAgKGRhdGFfc2l6ZSArIHBheWxvYWRfc2l6ZSk7XG4gICAgICBsZXQgZHN0X3BvcyA9IHdyaXRlci53cml0ZSBkYXRhIH5wb3M6SGVhZGVyLmxlbmd0aCB4IGluXG4gICAgICBCaWdzdHJpbmcuYmxpdCB+c3JjOmJ1ZiB+c3JjX3Bvczpwb3MgfmRzdDpkYXRhIH5kc3RfcG9zIH5sZW46cGF5bG9hZF9zaXplO1xuICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHQucGlwZSAoRGF0YS5vZl9iaWdzdHJpbmcgZGF0YSk7XG4gICAgICBzZW50X3Jlc3VsdCAoKSlcbiAgOztcblxuICBsZXQgc2VuZF9iaW5fcHJvdF9hbmRfYmlnc3RyaW5nX25vbl9jb3B5aW5nIHQgd3JpdGVyIHggfmJ1ZiB+cG9zIH5sZW4gPVxuICAgIG1hdGNoIHNlbmRfYmluX3Byb3RfYW5kX2JpZ3N0cmluZyB0IHdyaXRlciB4IH5idWYgfnBvcyB+bGVuIHdpdGhcbiAgICB8IFNlbnQgKCkgLT4gc2VudF9yZXN1bHQgRGVmZXJyZWQudW5pdFxuICAgIHwgKENsb3NlZCB8IE1lc3NhZ2VfdG9vX2JpZyBfKSBhcyByIC0+IHJcbiAgOztcbmVuZFxuXG5tb2R1bGUgQmlnc3RyaW5nX2RhdGEgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQmlnc3RyaW5nLnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgbGVuZ3RoID0gQmlnc3RyaW5nLmxlbmd0aFxuICBsZXQgYWRkX3RvX2JpZ2J1ZmZlciA9IEJpZ2J1ZmZlci5hZGRfYmlnc3RyaW5nXG4gIGxldCB0b19iaWdzdHJpbmcgeCA9IHhcbiAgbGV0IG9mX2JpZ3N0cmluZyB4ID0geFxuZW5kXG5cbm1vZHVsZSBTdHJpbmdfZGF0YSA9IHN0cnVjdFxuICB0eXBlIHQgPSBTdHJpbmcudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoXG4gIGxldCBhZGRfdG9fYmlnYnVmZmVyID0gQmlnYnVmZmVyLmFkZF9zdHJpbmdcbiAgbGV0IHRvX2JpZ3N0cmluZyB4ID0gQmlnc3RyaW5nLm9mX3N0cmluZyB4XG4gIGxldCBvZl9iaWdzdHJpbmcgeCA9IEJpZ3N0cmluZy50b19zdHJpbmcgeFxuZW5kXG5cbm1vZHVsZSBCaWdzdHJpbmdfcGlwZV9yZWFkZXIgPSBQaXBlX3JlYWRlciAoQmlnc3RyaW5nX2RhdGEpXG5tb2R1bGUgQmlnc3RyaW5nX3BpcGVfd3JpdGVyID0gUGlwZV93cml0ZXIgKEJpZ3N0cmluZ19kYXRhKVxubW9kdWxlIFN0cmluZ19waXBlX3JlYWRlciA9IFBpcGVfcmVhZGVyIChTdHJpbmdfZGF0YSlcbm1vZHVsZSBTdHJpbmdfcGlwZV93cml0ZXIgPSBQaXBlX3dyaXRlciAoU3RyaW5nX2RhdGEpXG5cbm1vZHVsZSBLaW5kID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBTdHJpbmcgOiBzdHJpbmcgdFxuICAgIHwgQmlnc3RyaW5nIDogYmlnc3RyaW5nIHRcblxuICBsZXQgc3RyaW5nID0gU3RyaW5nXG4gIGxldCBiaWdzdHJpbmcgPSBCaWdzdHJpbmdcbmVuZFxuXG5sZXQgbWFrZV9yZWFkZXIgKHR5cGUgYSkgKHggOiBhIEtpbmQudCkgKHJlYWRlciA6IGEgUGlwZS5SZWFkZXIudCkgPVxuICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgS2luZC5TdHJpbmcgLT4gUmVhZGVyLnBhY2sgKG1vZHVsZSBTdHJpbmdfcGlwZV9yZWFkZXIpIHJlYWRlclxuICB8IEtpbmQuQmlnc3RyaW5nIC0+IFJlYWRlci5wYWNrIChtb2R1bGUgQmlnc3RyaW5nX3BpcGVfcmVhZGVyKSByZWFkZXJcbjs7XG5cbmxldCBtYWtlX3dyaXRlciAodHlwZSBhKSAoeCA6IGEgS2luZC50KSAod3JpdGVyIDogYSBQaXBlLldyaXRlci50KSA9XG4gIGxldCB3cml0ZXIgPSBQaXBlX2FuZF9tb25pdG9yLmNyZWF0ZSB3cml0ZXIgaW5cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgS2luZC5TdHJpbmcgLT4gV3JpdGVyLnBhY2sgKG1vZHVsZSBTdHJpbmdfcGlwZV93cml0ZXIpIHdyaXRlclxuICB8IEtpbmQuQmlnc3RyaW5nIC0+IFdyaXRlci5wYWNrIChtb2R1bGUgQmlnc3RyaW5nX3BpcGVfd3JpdGVyKSB3cml0ZXJcbjs7XG5cbmxldCBjcmVhdGUga2luZCByZWFkZXIgd3JpdGVyID1cbiAgeyBUcmFuc3BvcnQucmVhZGVyID0gbWFrZV9yZWFkZXIga2luZCByZWFkZXI7IHdyaXRlciA9IG1ha2Vfd3JpdGVyIGtpbmQgd3JpdGVyIH1cbjs7XG5cbigqIFRlc3RpbmcgKilcblxubW9kdWxlIHR5cGUgVHJhbnNwb3J0X3JlYWRlciA9IHNpZ1xuICBtb2R1bGUgRm9yX3Rlc3RpbmcgOiBzaWdcbiAgICB0eXBlIHRcblxuICAgIHZhbCBvZl9iaWdzdHJpbmcgOiBCaWdzdHJpbmcudCAtPiB0XG4gIGVuZFxuXG4gIGluY2x1ZGUgVHJhbnNwb3J0LlJlYWRlci5TIHdpdGggdHlwZSB0ID0gRm9yX3Rlc3RpbmcudCBQaXBlX2FuZF9idWZmZXIudFxuZW5kXG5cbm1vZHVsZSBUZXN0X3JlYWRlciAoVHJhbnNwb3J0X3JlYWRlciA6IFRyYW5zcG9ydF9yZWFkZXIpID0gc3RydWN0XG4gIG9wZW4gVHJhbnNwb3J0X3JlYWRlci5Gb3JfdGVzdGluZ1xuXG4gIGxldCBkZWZhdWx0X21lc3NhZ2UgPSBCaWdzdHJpbmcub2Zfc3RyaW5nIFwiRk9PQkFSMTIzXCJcblxuICBsZXQgY3JlYXRlX21lc3NhZ2VfYnVmIChtZXNzYWdlIDogQmlnc3RyaW5nLnQpIDogQmlnc3RyaW5nLnQgPVxuICAgIGxldCBtZXNzYWdlX2xlbiA9IEJpZ3N0cmluZy5sZW5ndGggbWVzc2FnZSBpblxuICAgIGxldCBidWYgPSBCaWdzdHJpbmcuY3JlYXRlIChIZWFkZXIubGVuZ3RoICsgbWVzc2FnZV9sZW4pIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCBtZXNzYWdlX2xlbjtcbiAgICBCaWdzdHJpbmcuYmxpdFxuICAgICAgfnNyYzptZXNzYWdlXG4gICAgICB+ZHN0OmJ1ZlxuICAgICAgfnNyY19wb3M6MFxuICAgICAgfmRzdF9wb3M6SGVhZGVyLmxlbmd0aFxuICAgICAgfmxlbjptZXNzYWdlX2xlbjtcbiAgICBidWZcbiAgOztcblxuICBsZXQgY3JlYXRlX21lc3NhZ2UgKCkgPSBjcmVhdGVfbWVzc2FnZV9idWYgZGVmYXVsdF9tZXNzYWdlXG5cbiAgbGV0IG9uX21lc3NhZ2UgPyhtZXNzYWdlID0gZGVmYXVsdF9tZXNzYWdlKSBvbl9tZXNzYWdlX2NvdW50IGJ1ZmZlciB+cG9zIH5sZW4gPVxuICAgIG9uX21lc3NhZ2VfY291bnQgOj0gIW9uX21lc3NhZ2VfY291bnQgKyAxO1xuICAgIFsldGVzdF9yZXN1bHQ6IEJpZ3N0cmluZy50XSAoQmlnc3RyaW5nLnN1YiBidWZmZXIgfnBvcyB+bGVuKSB+ZXhwZWN0Om1lc3NhZ2U7XG4gICAgSGFuZGxlcl9yZXN1bHQuQ29udGludWVcbiAgOztcblxuICBsZXQgb25fZW5kX29mX2JhdGNoIG9uX2VuZF9vZl9iYXRjaF9jb3VudCAoKSA9IGluY3Igb25fZW5kX29mX2JhdGNoX2NvdW50XG4gIGxldCB3YWl0ICgpID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5FeHBlcnQucnVuX2N5Y2xlc191bnRpbF9ub19qb2JzX3JlbWFpbiAoKVxuXG4gIGxldCBydW5fdGVzdCBydW4gdmVyaWZ5ID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9tZXNzYWdlX2NvdW50ID0gcmVmIDAgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoX2NvdW50ID0gcmVmIDAgaW5cbiAgICBsZXQgb25fbWVzc2FnZSA9IG9uX21lc3NhZ2Ugb25fbWVzc2FnZV9jb3VudCBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggPSBvbl9lbmRfb2ZfYmF0Y2ggb25fZW5kX29mX2JhdGNoX2NvdW50IGluXG4gICAgaWdub3JlIChUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlciByZWFkZXIgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCk7XG4gICAgd2FpdCAoKTtcbiAgICBydW4gKGZ1biB4IC0+IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSk7XG4gICAgd2FpdCAoKTtcbiAgICB2ZXJpZnkgfm9uX21lc3NhZ2VfY291bnQgfm9uX2VuZF9vZl9iYXRjaF9jb3VudFxuICA7O1xuXG4gIGxldCB2ZXJpZnkgfm9uX21lc3NhZ2VfY291bnQgfm9uX2VuZF9vZl9iYXRjaF9jb3VudCBtZXNzYWdlX2NvdW50IGJhdGNoX2NvdW50ID1cbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdICFvbl9tZXNzYWdlX2NvdW50IH5leHBlY3Q6bWVzc2FnZV9jb3VudDtcbiAgICBbJXRlc3RfcmVzdWx0OiBpbnRdICFvbl9lbmRfb2ZfYmF0Y2hfY291bnQgfmV4cGVjdDpiYXRjaF9jb3VudFxuICA7O1xuXG4gIGxldCB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlID0gd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuXG4gICgqIE5vdCBlbm91Z2ggZGF0YSwgd2UgbmVlZCB0byBhY2N1bXVsYXRlICopXG4gIGxldCB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlID1cbiAgICBsZXQgYnVmID0gY3JlYXRlX21lc3NhZ2VfYnVmIChCaWdzdHJpbmcub2Zfc3RyaW5nIFwiXCIpIGluXG4gICAgbGV0IG1lc3NhZ2VfcmF3ID0gZGVmYXVsdF9tZXNzYWdlIGluXG4gICAgSGVhZGVyLnVuc2FmZV9zZXRfcGF5bG9hZF9sZW5ndGggYnVmIH5wb3M6MCAoQmlnc3RyaW5nLmxlbmd0aCBtZXNzYWdlX3Jhdyk7XG4gICAgd3JpdGUgYnVmO1xuICAgIHdhaXQgKCk7XG4gICAgbGV0IG1zZ19sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2VfcmF3IGluXG4gICAgbGV0IHNwbGl0X2F0ID0gbXNnX2xlbiAvIDIgaW5cbiAgICBsZXQgcGFydDEgPSBCaWdzdHJpbmcuc3ViIG1lc3NhZ2VfcmF3IH5wb3M6MCB+bGVuOnNwbGl0X2F0IGluXG4gICAgbGV0IHBhcnQyID0gQmlnc3RyaW5nLnN1YiBtZXNzYWdlX3JhdyB+cG9zOnNwbGl0X2F0IH5sZW46KG1zZ19sZW4gLSBzcGxpdF9hdCkgaW5cbiAgICB3cml0ZSBwYXJ0MTtcbiAgICB3YWl0ICgpO1xuICAgIHdyaXRlIHBhcnQyXG4gIDs7XG5cbiAgKCogVG9vIG11Y2ggZGF0YSwgd2UgbmVlZCB0byBsb29wIHdpdGhpbmcgdGhlIHNhbWUgYmF0Y2ggKilcbiAgbGV0IHdyaXRlXzJfbXNnXzFfY2h1bmsgd3JpdGUgPVxuICAgIGxldCBvbmVfbXNnID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZSBpblxuICAgIGxldCB0d29fbXNnID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tc2c7IG9uZV9tc2cgXSBpblxuICAgIHdyaXRlIHR3b19tc2dcbiAgOztcblxuICBsZXQgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlID1cbiAgICBsZXQgb25lX21zZyA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiBkZWZhdWx0X21lc3NhZ2UgaW5cbiAgICBsZXQgdHdvX21zZyA9IEJpZ3N0cmluZy5jb25jYXQgWyBvbmVfbXNnOyBvbmVfbXNnIF0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQmlnc3RyaW5nLmxlbmd0aCB0d29fbXNnIC0gMSBkb1xuICAgICAgd3JpdGUgKEJpZ3N0cmluZy5zdWIgdHdvX21zZyB+cG9zOmkgfmxlbjoxKTtcbiAgICAgIHdhaXQgKClcbiAgICBkb25lXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBfID0gcnVuX3Rlc3Qgd3JpdGVfMV9tc2dfMV9jaHVuayAodmVyaWZ5IDEgMSlcblxuICBsZXQldGVzdF91bml0IF8gPVxuICAgIGxldCBmIHdyaXRlID1cbiAgICAgIHdyaXRlXzFfbXNnXzFfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlXG4gICAgaW5cbiAgICBydW5fdGVzdCBmICh2ZXJpZnkgMiAxKVxuICA7O1xuXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzNfY2h1bmsgKHZlcmlmeSAxIDMpXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnXzFfY2h1bmsgKHZlcmlmeSAyIDEpXG4gIGxldCV0ZXN0X3VuaXQgXyA9IHJ1bl90ZXN0IHdyaXRlXzJfbXNnX29uZV9ieXRlX2F0X2FfdGltZV8zNF9jaHVuayAodmVyaWZ5IDIgMzQpXG5cbiAgbGV0JXRlc3RfdW5pdCBfID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZSAoY3JlYXRlX21lc3NhZ2UgKCkpO1xuICAgICAgd2FpdCAoKTtcbiAgICAgIHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICAgIHdhaXQgKCk7XG4gICAgICB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGU7XG4gICAgICB3YWl0ICgpO1xuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZiAodmVyaWZ5IDcgNDApXG4gIDs7XG5cbiAgbGV0JXRlc3RfdW5pdCBcImNhbiBjYWxsIHJlYWRfZm9yZXZlciBtdWx0aXBsZSB0aW1lc1wiID1cbiAgICBsZXQgcmVhZGVyLCB3cml0ZXIgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCByZWFkZXIgPSBQaXBlX2FuZF9idWZmZXIuY3JlYXRlIHJlYWRlciBpblxuICAgIGxldCBvbl9lbmRfb2ZfYmF0Y2ggKCkgPSAoKSBpblxuICAgIGxldCB3cml0ZSB4ID0gUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrIHdyaXRlciAob2ZfYmlnc3RyaW5nIHgpIGluXG4gICAgbGV0IG51bSA9IHJlZiAwIGluXG4gICAgbGV0IHN0b3BfYWZ0ZXJfb25fbWVzc2FnZSBidWZmZXIgfnBvcyB+bGVuID1cbiAgICAgIGluY3IgbnVtO1xuICAgICAgWyV0ZXN0X3Jlc3VsdDogQmlnc3RyaW5nLnRdIChCaWdzdHJpbmcuc3ViIGJ1ZmZlciB+cG9zIH5sZW4pIH5leHBlY3Q6ZGVmYXVsdF9tZXNzYWdlO1xuICAgICAgSGFuZGxlcl9yZXN1bHQuU3RvcCAoKVxuICAgIGluXG4gICAgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZTtcbiAgICBQaXBlLmNsb3NlIHdyaXRlcjtcbiAgICBkb24ndF93YWl0X2ZvclxuICAgICAgKGxldCViaW5kIHggPVxuICAgICAgICAgVHJhbnNwb3J0X3JlYWRlci5yZWFkX2ZvcmV2ZXJcbiAgICAgICAgICAgcmVhZGVyXG4gICAgICAgICAgIH5vbl9tZXNzYWdlOnN0b3BfYWZ0ZXJfb25fbWVzc2FnZVxuICAgICAgICAgICB+b25fZW5kX29mX2JhdGNoXG4gICAgICAgaW5cbiAgICAgICBhc3NlcnQgKFJlc3VsdC5pc19vayB4KTtcbiAgICAgICBsZXQlYmluZCB4ID1cbiAgICAgICAgIFRyYW5zcG9ydF9yZWFkZXIucmVhZF9mb3JldmVyXG4gICAgICAgICAgIHJlYWRlclxuICAgICAgICAgICB+b25fbWVzc2FnZTpzdG9wX2FmdGVyX29uX21lc3NhZ2VcbiAgICAgICAgICAgfm9uX2VuZF9vZl9iYXRjaFxuICAgICAgIGluXG4gICAgICAgYXNzZXJ0IChSZXN1bHQuaXNfb2sgeCk7XG4gICAgICAgRGVmZXJyZWQudW5pdCk7XG4gICAgd2FpdCAoKTtcbiAgICBbJXRlc3RfcmVzdWx0OiBJbnQudF0gfmV4cGVjdDoyICFudW1cbiAgOztcbmVuZFxuXG5sZXQldGVzdF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9zdHJpbmdcIiA9IChtb2R1bGUgVGVzdF9yZWFkZXIgKFN0cmluZ19waXBlX3JlYWRlcikpXG5sZXQldGVzdF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9iaWdzdHJpbmdcIiA9IChtb2R1bGUgVGVzdF9yZWFkZXIgKEJpZ3N0cmluZ19waXBlX3JlYWRlcikpXG5cbm1vZHVsZSBCZW5jaF9yZWFkZXIgKFRyYW5zcG9ydF9yZWFkZXIgOiBUcmFuc3BvcnRfcmVhZGVyKSA9IHN0cnVjdFxuICBvcGVuIFRyYW5zcG9ydF9yZWFkZXIuRm9yX3Rlc3RpbmdcblxuICBsZXQgZGVmYXVsdF9tZXNzYWdlID0gQmlnc3RyaW5nLm9mX3N0cmluZyBcIkZPT0JBUjEyM1wiXG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlX2J1ZiAobWVzc2FnZSA6IEJpZ3N0cmluZy50KSA6IEJpZ3N0cmluZy50ID1cbiAgICBsZXQgbWVzc2FnZV9sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG1lc3NhZ2UgaW5cbiAgICBsZXQgYnVmID0gQmlnc3RyaW5nLmNyZWF0ZSAoSGVhZGVyLmxlbmd0aCArIG1lc3NhZ2VfbGVuKSBpblxuICAgIEhlYWRlci51bnNhZmVfc2V0X3BheWxvYWRfbGVuZ3RoIGJ1ZiB+cG9zOjAgbWVzc2FnZV9sZW47XG4gICAgQmlnc3RyaW5nLmJsaXRcbiAgICAgIH5zcmM6bWVzc2FnZVxuICAgICAgfmRzdDpidWZcbiAgICAgIH5zcmNfcG9zOjBcbiAgICAgIH5kc3RfcG9zOkhlYWRlci5sZW5ndGhcbiAgICAgIH5sZW46bWVzc2FnZV9sZW47XG4gICAgYnVmXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZV9tZXNzYWdlICgpID0gY3JlYXRlX21lc3NhZ2VfYnVmIGRlZmF1bHRfbWVzc2FnZVxuICBsZXQgb25lX21lc3NhZ2UgPSBjcmVhdGVfbWVzc2FnZSAoKVxuICBsZXQgdHdvX21lc3NhZ2VzID0gQmlnc3RyaW5nLmNvbmNhdCBbIG9uZV9tZXNzYWdlOyBvbmVfbWVzc2FnZSBdXG5cbiAgbGV0IG9uZV9tZXNzYWdlX3AxLCBvbmVfbWVzc2FnZV9wMiA9XG4gICAgbGV0IG1zZ19sZW4gPSBCaWdzdHJpbmcubGVuZ3RoIG9uZV9tZXNzYWdlIGluXG4gICAgbGV0IHNwbGl0X2F0ID0gbXNnX2xlbiAvIDIgaW5cbiAgICBsZXQgcGFydDEgPSBCaWdzdHJpbmcuc3ViIG9uZV9tZXNzYWdlIH5wb3M6MCB+bGVuOnNwbGl0X2F0IGluXG4gICAgbGV0IHBhcnQyID0gQmlnc3RyaW5nLnN1YiBvbmVfbWVzc2FnZSB+cG9zOnNwbGl0X2F0IH5sZW46KG1zZ19sZW4gLSBzcGxpdF9hdCkgaW5cbiAgICBwYXJ0MSwgcGFydDJcbiAgOztcblxuICBsZXQgb25fbWVzc2FnZSBfYnVmZmVyIH5wb3M6XyB+bGVuOl8gPSBIYW5kbGVyX3Jlc3VsdC5Db250aW51ZVxuICBsZXQgb25fZW5kX29mX2JhdGNoICgpID0gKClcbiAgbGV0IHdhaXQgKCkgPSBBc3luY19rZXJuZWxfc2NoZWR1bGVyLkV4cGVydC5ydW5fY3ljbGVzX3VudGlsX25vX2pvYnNfcmVtYWluICgpXG5cbiAgbGV0IHJ1bl90ZXN0IHJ1biA9XG4gICAgbGV0IHJlYWRlciwgd3JpdGVyID0gUGlwZS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVhZGVyID0gUGlwZV9hbmRfYnVmZmVyLmNyZWF0ZSByZWFkZXIgaW5cbiAgICBsZXQgb25fbWVzc2FnZSA9IG9uX21lc3NhZ2UgaW5cbiAgICBsZXQgb25fZW5kX29mX2JhdGNoID0gb25fZW5kX29mX2JhdGNoIGluXG4gICAgaWdub3JlIChUcmFuc3BvcnRfcmVhZGVyLnJlYWRfZm9yZXZlciByZWFkZXIgfm9uX21lc3NhZ2Ugfm9uX2VuZF9vZl9iYXRjaCk7XG4gICAgd2FpdCAoKTtcbiAgICBmb3IgXyA9IDAgdG8gMTAwIGRvXG4gICAgICBydW4gKGZ1biB4IC0+IFBpcGUud3JpdGVfd2l0aG91dF9wdXNoYmFjayB3cml0ZXIgKG9mX2JpZ3N0cmluZyB4KSlcbiAgICBkb25lO1xuICAgIHdhaXQgKClcbiAgOztcblxuICBsZXQgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIG9uZV9tZXNzYWdlXG5cbiAgKCogTm90IGVub3VnaCBkYXRhLCB3ZSBuZWVkIHRvIGFjY3VtdWxhdGUgKilcbiAgbGV0IGJ1ZiA9IGNyZWF0ZV9tZXNzYWdlX2J1ZiAoQmlnc3RyaW5nLm9mX3N0cmluZyBcIlwiKVxuXG4gIGxldCB3cml0ZV8xX21zZ18zX2NodW5rIHdyaXRlID1cbiAgICBIZWFkZXIudW5zYWZlX3NldF9wYXlsb2FkX2xlbmd0aCBidWYgfnBvczowIChCaWdzdHJpbmcubGVuZ3RoIG9uZV9tZXNzYWdlKTtcbiAgICB3cml0ZSBidWY7XG4gICAgd3JpdGUgb25lX21lc3NhZ2VfcDE7XG4gICAgd3JpdGUgb25lX21lc3NhZ2VfcDJcbiAgOztcblxuICAoKiBUb28gbXVjaCBkYXRhLCB3ZSBuZWVkIHRvIGxvb3Agd2l0aGluZyB0aGUgc2FtZSBiYXRjaCAqKVxuICBsZXQgd3JpdGVfMl9tc2dfMV9jaHVuayB3cml0ZSA9IHdyaXRlIHR3b19tZXNzYWdlc1xuXG4gIGxldCB3cml0ZV8yX21zZ19vbmVfYnl0ZV9hdF9hX3RpbWVfMzRfY2h1bmsgd3JpdGUgPVxuICAgIGZvciBpID0gMCB0byBCaWdzdHJpbmcubGVuZ3RoIHR3b19tZXNzYWdlcyAtIDEgZG9cbiAgICAgIHdyaXRlIChCaWdzdHJpbmcuc3ViIHR3b19tZXNzYWdlcyB+cG9zOmkgfmxlbjoxKVxuICAgIGRvbmVcbiAgOztcblxuICBsZXQlYmVuY2ggXCJ3cml0ZV8xX21zZ18xX2NodW5rXCIgPSBydW5fdGVzdCB3cml0ZV8xX21zZ18xX2NodW5rXG5cbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfMV9jaHVua1wiID1cbiAgICBsZXQgZiB3cml0ZSA9XG4gICAgICB3cml0ZV8xX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMV9tc2dfMV9jaHVuayB3cml0ZVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZlxuICA7O1xuXG4gIGxldCViZW5jaCBcIndyaXRlXzFfbXNnXzNfY2h1bmtcIiA9IHJ1bl90ZXN0IHdyaXRlXzFfbXNnXzNfY2h1bmtcbiAgbGV0JWJlbmNoIFwid3JpdGVfMl9tc2dfMV9jaHVua1wiID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfMV9jaHVua1xuICBsZXQlYmVuY2ggXCJ3cml0ZV8yX21zZ19vbmVfYnl0ZVwiID0gcnVuX3Rlc3Qgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rXG5cbiAgbGV0JWJlbmNoIFwibXVsdGlcIiA9XG4gICAgbGV0IGYgd3JpdGUgPVxuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKTtcbiAgICAgIHdyaXRlXzFfbXNnXzNfY2h1bmsgd3JpdGU7XG4gICAgICB3cml0ZV8yX21zZ18xX2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGVfMl9tc2dfb25lX2J5dGVfYXRfYV90aW1lXzM0X2NodW5rIHdyaXRlO1xuICAgICAgd3JpdGUgKGNyZWF0ZV9tZXNzYWdlICgpKVxuICAgIGluXG4gICAgcnVuX3Rlc3QgZlxuICA7O1xuZW5kXG5cbmxldCViZW5jaF9tb2R1bGUgXCJUZXN0X3JlYWRlcl9zdHJpbmdcIiA9IChtb2R1bGUgQmVuY2hfcmVhZGVyIChTdHJpbmdfcGlwZV9yZWFkZXIpKVxubGV0JWJlbmNoX21vZHVsZSBcIlRlc3RfcmVhZGVyX2JpZ3N0cmluZ1wiID0gKG1vZHVsZSBCZW5jaF9yZWFkZXIgKEJpZ3N0cmluZ19waXBlX3JlYWRlcikpXG4iLCJvcGVuISBDb3JlXG5vcGVuISBBc3luY19rZXJuZWxcbmluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uX2tlcm5lbFxuXG5tb2R1bGUgVmVyc2lvbmVkX3JwYyA9IE1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IFZlcnNpb25lZF9ycGMuQ29ubmVjdGlvbl93aXRoX21lbnUudFxuXG4gICAgbGV0IHJwY19jb25uZWN0aW9uID0gVmVyc2lvbmVkX3JwYy5Db25uZWN0aW9uX3dpdGhfbWVudS5jb25uZWN0aW9uXG4gICAgbGV0IGNsb3NlIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZSAocnBjX2Nvbm5lY3Rpb24gdClcbiAgICBsZXQgaXNfY2xvc2VkIHQgPSBScGMuQ29ubmVjdGlvbi5pc19jbG9zZWQgKHJwY19jb25uZWN0aW9uIHQpXG4gICAgbGV0IGNsb3NlX2ZpbmlzaGVkIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZV9maW5pc2hlZCAocnBjX2Nvbm5lY3Rpb24gdClcbiAgZW5kKVxuXG5tb2R1bGUgUnBjID0gTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gUnBjLkNvbm5lY3Rpb24udFxuXG4gICAgbGV0IGNsb3NlIHQgPSBScGMuQ29ubmVjdGlvbi5jbG9zZSB0XG4gICAgbGV0IGlzX2Nsb3NlZCB0ID0gUnBjLkNvbm5lY3Rpb24uaXNfY2xvc2VkIHRcbiAgICBsZXQgY2xvc2VfZmluaXNoZWQgdCA9IFJwYy5Db25uZWN0aW9uLmNsb3NlX2ZpbmlzaGVkIHRcbiAgZW5kKVxuIiwibW9kdWxlIFJwYyA9IFJwY1xubW9kdWxlIFZlcnNpb25lZF9ycGMgPSBWZXJzaW9uZWRfcnBjXG5tb2R1bGUgUGVyc2lzdGVudF9jb25uZWN0aW9uID0gUGVyc2lzdGVudF9jb25uZWN0aW9uXG5tb2R1bGUgUGlwZV90cmFuc3BvcnQgPSBQaXBlX3RyYW5zcG9ydFxubW9kdWxlIFJwY19lcnJvciA9IFJwY19lcnJvclxubW9kdWxlIFJwY19yZXN1bHQgPSBScGNfcmVzdWx0XG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3N0YWJsZSA9IHN0cnVjdFxuICBtb2R1bGUgUnBjID0gUnBjLlN0YWJsZVxuZW5kXG5cbm1vZHVsZSBBc3luY19ycGNfa2VybmVsX3ByaXZhdGUgPSBzdHJ1Y3RcbiAgbW9kdWxlIENvbm5lY3Rpb24gPSBDb25uZWN0aW9uXG4gIG1vZHVsZSBQcm90b2NvbCA9IFByb3RvY29sXG4gIG1vZHVsZSBUcmFuc3BvcnQgPSBUcmFuc3BvcnRcblxuICBsZXQgZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dCA9IENvbm5lY3Rpb24uZGVmYXVsdF9oYW5kc2hha2VfdGltZW91dFxuZW5kXG4iLCJvcGVuIFN0cmluZ1xuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKDIgKiBsZW4pIGluXG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgJ1snIHwgJ10nIHwgJyonIHwgJy4nIHwgJ1xcXFwnIHwgJz8nIHwgJysnIHwgJ14nIHwgJyQnIGFzIGMgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1xcXFwnO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgfCBjIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgY1xuICBkb25lO1xuICBCdWZmZXIuY29udGVudHMgYnVmXG5cblxuKCogTm90IHRhaWwgcmVjdXJzaXZlIGZvciBcInBlcmZvcm1hbmNlXCIsIHBsZWFzZSBjaG9vc2UgbG93IHZhbHVlcyBmb3JcbiAgIFttYXhdLiBUaGUgaWRlYSBpcyB0aGF0IG1heCBpcyBhbHdheXMgc21hbGwgYmVjYXVzZSBpdCdzIGhhcmRcbiAgIGNvZGUgKilcbmxldCBzcGxpdF9jaGFyX2JvdW5kZWQgc3RyIH5vbiB+bWF4ID1cbiAgaWYgc3RyID0gXCJcIiB0aGVuIFtdXG4gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtzdHJdXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3Agb2Zmc2V0IHRva2VucyA9XG4gICAgICBpZiB0b2tlbnMgPSBtYXggLSAxXG4gICAgICB0aGVuIFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgICBlbHNlXG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBpbmRleCA9IGluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICAgIFwiXCI6Oihsb29wIChvZmZzZXQgKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHRva2VuID0gU3RyaW5nLnN1YiBzdHIgb2Zmc2V0IChpbmRleCAtIG9mZnNldCkgaW5cbiAgICAgICAgICAgIHRva2VuOjoobG9vcCAoaW5kZXggKyAxKSAodG9rZW5zICsgMSkpXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFtzdWIgc3RyIG9mZnNldCAobGVuZ3RoIHN0ciAtIG9mZnNldCldXG4gICAgaW4gbG9vcCAwIDBcblxubGV0IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHN0ciB+b24gPVxuICBpZiBzdHIgPSBcIlwiIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByZWMgbG9vcCBhY2Mgb2Zmc2V0ID1cbiAgICAgIHRyeSBiZWdpblxuICAgICAgICBsZXQgaW5kZXggPSByaW5kZXhfZnJvbSBzdHIgb2Zmc2V0IG9uIGluXG4gICAgICAgIGlmIGluZGV4ID0gb2Zmc2V0IHRoZW5cbiAgICAgICAgICBsb29wIChcIlwiOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wICh0b2tlbjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgZW5kXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiAoc3ViIHN0ciAwIChvZmZzZXQgKyAxKSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5sZXQgb2ZfY2hhciA9IFN0cmluZy5tYWtlIDFcblxubGV0IGZ1bGxfc3BsaXQgc3RyIH5vbiA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHNlcCA9IG9mX2NoYXIgb24gaW5cbiAgICBsZXQgcmVjIGxvb3AgYWNjIG9mZnNldCA9XG4gICAgICB0cnkgYmVnaW5cbiAgICAgICAgbGV0IGluZGV4ID0gcmluZGV4X2Zyb20gc3RyIG9mZnNldCBvbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoc2VwOjphY2MpIChpbmRleCAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgdG9rZW4gPSBzdWIgc3RyIChpbmRleCArIDEpIChvZmZzZXQgLSBpbmRleCkgaW5cbiAgICAgICAgICBsb29wIChzZXA6OnRva2VuOjphY2MpIChpbmRleCAtIDEpXG4gICAgICBlbmRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGlmIG9mZnNldCA+PSAwXG4gICAgICAgIHRoZW4gKHN1YiBzdHIgMCAob2Zmc2V0ICsgMSkpOjphY2NcbiAgICAgICAgZWxzZSBhY2NcbiAgICBpbiBsb29wIFtdIChsZW5ndGggc3RyIC0gMSlcblxuKCogY29weWluZyBjb3JlJ3MgY29udmVudGlvbiBmb3IgU3RyaW5nLnNwbGl0IGJ1dCB3aXRoIGFuIG9wdGlvbmFsIG1heFxuICAgYXJndW1lbnQgKilcbmxldCBzcGxpdCA/bWF4IHMgfm9uID1cbiAgbWF0Y2ggbWF4IHdpdGhcbiAgfCBOb25lIC0+IHNwbGl0X2NoYXJfdW5ib3VuZGVkIHMgfm9uXG4gIHwgU29tZSBtYXggLT4gICAgICAgICAgICAgICAgICgqIGFzc2VydCAobWF4IDwgMTAwKTsgKilcbiAgICBzcGxpdF9jaGFyX2JvdW5kZWQgcyB+b24gfm1heFxuXG5sZXQgcmluZGV4X2Zyb21fb24gcyB+b2Zmc2V0IH5vbiA9XG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIG9uIHMuW2ldIHRoZW4gaVxuICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gIGluIGxvb3Agb2Zmc2V0XG5cbmxldCB0cmltX2xlZnRfc3ViIHMgfnBvcyB+bGVuIH5jaGFycyA9XG4gIGxldCBzdGFydF9wb3MgPVxuICAgIGxldCBmaW5hbCA9IHBvcyArIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsYXN0X2NoYXIgaSA9XG4gICAgICBpZiBpID0gZmluYWwgdGhlbiBsYXN0X2NoYXJcbiAgICAgIGVsc2UgaWYgU3RyaW5nLmNvbnRhaW5zIGNoYXJzIHMuW2ldIHRoZW4gbG9vcCAoaSArIDEpIChpICsgMSlcbiAgICAgIGVsc2UgbGFzdF9jaGFyXG4gICAgaW4gbG9vcCBwb3MgcG9zXG4gIGluXG4gIGxldCBuZXdfbGVuID0gbGVuIC0gKHN0YXJ0X3BvcyAtIHBvcykgaW5cbiAgU3RyaW5nLnN1YiBzIHN0YXJ0X3BvcyBuZXdfbGVuXG5cbmxldCBzcGxpdF90cmltX2xlZnQgc3RyIH5vbiB+dHJpbSA9XG4gIGlmIHN0ciA9IFwiXCIgdGhlbiBbXVxuICBlbHNlXG4gICAgbGV0IHJlYyBsb29wIGFjYyBvZmZzZXQgPVxuICAgICAgdHJ5IGJlZ2luXG4gICAgICAgIGxldCBpbmRleCA9IHJpbmRleF9mcm9tX29uIHN0ciB+b2Zmc2V0IH5vbiBpblxuICAgICAgICBpZiBpbmRleCA9IG9mZnNldCB0aGVuXG4gICAgICAgICAgbG9vcCAoXCJcIjo6YWNjKSAoaW5kZXggLSAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IHRva2VuID0gdHJpbV9sZWZ0X3N1YiBzdHIgfnBvczooaW5kZXggKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgfmxlbjoob2Zmc2V0IC0gaW5kZXgpIH5jaGFyczp0cmltIGluXG4gICAgICAgICAgbG9vcCAodG9rZW46OmFjYykgKGluZGV4IC0gMSlcbiAgICAgIGVuZFxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHRyaW1fbGVmdF9zdWIgc3RyIH5wb3M6MCB+bGVuOihvZmZzZXQgKyAxKSB+Y2hhcnM6dHJpbSk6OmFjY1xuICAgIGluIGxvb3AgW10gKGxlbmd0aCBzdHIgLSAxKVxuXG5leGNlcHRpb24gRm91bmRfaW50IG9mIGludFxuXG5sZXQgZmlyc3RfY2hhcl9uZSBzIGMgPVxuICBTdHJpbmcubGVuZ3RoIHMgPiAwICYmIHMuWzBdIDw+IGNcblxubGV0IHRyaW1fbGVmdCBzID1cbiAgaWYgZmlyc3RfY2hhcl9uZSBzICcgJyB0aGVuIHNcbiAgZWxzZVxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICB0cnlcbiAgICAgIGZvciBpPTAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBpZiBzLltpXSA8PiAnICcgdGhlbiByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgICBkb25lO1xuICAgICAgXCJcIlxuICAgIHdpdGggRm91bmRfaW50IG5vbl9zcGFjZSAtPlxuICAgICAgc3ViIHMgbm9uX3NwYWNlIChsZW4gLSBub25fc3BhY2UpXG5cbmxldCBzdWJzdHJfZXEgPyhzdGFydD0wKSBzIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcGF0dGVybiAtIDEgZG9cbiAgICAgIGlmIHMuW2kgKyBzdGFydF0gPD4gcGF0dGVybi5baV0gdGhlbiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggXyAtPiBmYWxzZVxuXG5sZXQgZmluZF9mcm9tID8oc3RhcnQ9MCkgc3RyIH5wYXR0ZXJuID1cbiAgdHJ5XG4gICAgZm9yIGkgPSBzdGFydCB0byAoU3RyaW5nLmxlbmd0aCBzdHIpIC0gKFN0cmluZy5sZW5ndGggcGF0dGVybikgZG9cbiAgICAgIGlmIHN1YnN0cl9lcSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gdGhlblxuICAgICAgICByYWlzZSAoRm91bmRfaW50IGkpXG4gICAgZG9uZTtcbiAgICBOb25lXG4gIHdpdGhcbiAgfCBGb3VuZF9pbnQgaSAtPiBTb21lIGlcbiAgfCAgXyAtPiBOb25lXG5cbmxldCBmaW5kX21pbiBsIH5mID1cbiAgbGV0IHJlYyBsb29wIHggZnggPSBmdW5jdGlvblxuICAgIHwgW10gLT4gU29tZSAoeCwgZngpXG4gICAgfCB4Jzo6eHMgLT5cbiAgICAgIGxldCBmeCcgPSBmIHgnIGluXG4gICAgICBpZiBmeCcgPCBmeCB0aGVuIGxvb3AgeCcgZngnIHhzXG4gICAgICBlbHNlIGxvb3AgeCBmeCB4c1xuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBOb25lXG4gIHwgeDo6eHMgLT4gbG9vcCB4IChmIHgpIHhzXG5cbmxldCByZXBsYWNlX2FsbCBzdHIgfnBhdHRlcm4gfndpdGhfID1cbiAgbGV0IChzbGVuLCBwbGVuKSA9IFN0cmluZy4obGVuZ3RoIHN0ciwgbGVuZ3RoIHBhdHRlcm4pIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIG1hdGNoIGZpbmRfZnJvbSB+c3RhcnQ6aSBzdHIgfnBhdHRlcm4gd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICBCdWZmZXIuY29udGVudHMgYnVmXG4gICAgfCBTb21lIGogLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIHdpdGhfO1xuICAgICAgbG9vcCAoaiArIHBsZW4pXG4gIGluIGxvb3AgMFxuXG5leGNlcHRpb24gRm91bmRfcmVwbGFjZSBvZiBpbnQgKiBzdHJpbmcgKiBzdHJpbmdcblxubGV0IHJlcGxhY2VfYWxsX2Fzc29jIHN0ciB0YmwgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggc3RyIGluXG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIHNsZW4gaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPj0gc2xlbiB0aGVuIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICBlbHNlXG4gICAgICBsZXQgciA9XG4gICAgICAgIHRyeVxuICAgICAgICAgIGxldCBmb3VuZCA9IHJlZiBmYWxzZSBpblxuICAgICAgICAgIGxldCBlID1cbiAgICAgICAgICAgIGZpbmRfbWluIHRibCB+ZjooZnVuIChwYXR0ZXJuLCB3aXRoXykgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggZmluZF9mcm9tIH5zdGFydDppIHN0ciB+cGF0dGVybiB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAgIC0+IG1heF9pbnRcbiAgICAgICAgICAgICAgfCBTb21lIGogd2hlbiBqID0gaSAtPiByYWlzZSAoRm91bmRfcmVwbGFjZSAoaiwgcGF0dGVybiwgd2l0aF8pKVxuICAgICAgICAgICAgICB8IFNvbWUgaiAtPiBmb3VuZCA6PSB0cnVlOyBqKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgKChwYXR0ZXJuLCB3aXRoXyksIGopIHdoZW4gIWZvdW5kIC0+IFNvbWUgKGosIHBhdHRlcm4sIHdpdGhfKVxuICAgICAgICAgIHwgU29tZSBfIC0+IE5vbmVcbiAgICAgICAgd2l0aCBGb3VuZF9yZXBsYWNlIChqLCBwYXR0ZXJuLCB3aXRoXykgLT4gU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pXG4gICAgICBpblxuICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHN0ciBpIChzbGVuIC0gaSk7XG4gICAgICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbiAgICAgIHwgU29tZSAoaiwgcGF0dGVybiwgd2l0aF8pIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzdHIgaSAoaiAtIGkpO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgd2l0aF87XG4gICAgICAgIGxvb3AgKGogKyBTdHJpbmcubGVuZ3RoIHBhdHRlcm4pXG4gIGluIGxvb3AgMFxuXG5sZXQgaXRlcmkgZiBsID1cbiAgbGV0IHJlYyBsb29wIGkgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IHg6OnhzIC0+IChmIGkgeCk7IGxvb3AgKHN1Y2MgaSkgeHNcbiAgaW4gbG9vcCAwIGxcblxubGV0IG9mX2xpc3QgeHMgPVxuICBsZXQgbCA9IExpc3QubGVuZ3RoIHhzIGluXG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIGwgaW5cbiAgaXRlcmkgKGZ1biBpIGMgLT4gQnl0ZXMuc2V0IHMgaSBjKSB4cztcbiAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5cbmxldCB0b19saXN0IHMgPVxuICBsZXQgcmVjIGxvb3AgYWNjIGkgPVxuICAgIGlmIGkgPSAtMSB0aGVuIGFjY1xuICAgIGVsc2VcbiAgICAgIGxvb3AgKHMuW2ldIDo6IGFjYykgKHByZWQgaSlcbiAgaW4gbG9vcCBbXSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcblxubGV0IG9mX2FycmF5IGEgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IGJ5dGVzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIEJ5dGVzLnNldCBieXRlcyBpIGEuKGkpXG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYnl0ZXNcblxubGV0IHRvX2FycmF5IHMgPSBBcnJheS5pbml0IChTdHJpbmcubGVuZ3RoIHMpIChTdHJpbmcuZ2V0IHMpXG5cbigqIHJpcHBlZCBvZmYgZnJvbSBvbmUgb2YgZGJ1ZW56bGkncyBsaWJzICopXG5sZXQgY3V0IHMgfm9uID1cbiAgbGV0IHNlcF9tYXggPSBsZW5ndGggb24gLSAxIGluXG4gIGlmIHNlcF9tYXggPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmdleHQuY3V0OiBlbXB0eSBzZXBhcmF0b3JcIiBlbHNlXG4gICAgbGV0IHNfbWF4ID0gbGVuZ3RoIHMgLSAxIGluXG4gICAgaWYgc19tYXggPCAwIHRoZW4gTm9uZSBlbHNlXG4gICAgICBsZXQgayA9IHJlZiAwIGluXG4gICAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgc3RhcnQgb2YgW3NdIHRvIGVuZCB3aXRoIFtpXSB0cnlpbmcgdG8gbWF0Y2ggdGhlXG4gICAgICAgICBmaXJzdCBjaGFyYWN0ZXIgb2YgW29uXSBpbiBbc10uIElmIHRoaXMgbWF0Y2hlcywgd2UgdmVyaWZ5IHRoYXRcbiAgICAgICAgIHRoZSB3aG9sZSBbb25dIGlzIG1hdGNoZWQgdXNpbmcgW2tdLiBJZiBpdCBkb2Vzbid0IG1hdGNoIHdlXG4gICAgICAgICBjb250aW51ZSB0byBsb29rIGZvciBbb25dIHdpdGggW2ldLiBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlXG4gICAgICAgICBsb29wIGFuZCBleHRyYWN0IGEgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGVcbiAgICAgICAgIHBvc2l0aW9uIGJlZm9yZSB0aGUgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvblxuICAgICAgICAgYWZ0ZXIgdGhlIFtvbl0gd2UgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gSWYgW2ldIGlzIHN1Y2ggdGhhdCBub1xuICAgICAgICAgc2VwYXJhdG9yIGNhbiBiZSBmb3VuZCB3ZSBleGl0IHRoZSBsb29wIGFuZCByZXR1cm4gdGhlIG5vIG1hdGNoXG4gICAgICAgICBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSArIHNlcF9tYXggPD0gc19tYXgpIGRvXG4gICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmUgcyAoIWkgKyAhaykgaXNcbiAgICAgICAgICAgICBndWFyYW50ZWVkIGJ5IGxvb3AgaW52YXJpYW50LiAqKVxuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIDAgdGhlbiBpbmNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgayA6PSAxO1xuICAgICAgICAgICAgd2hpbGUgKCFrIDw9IHNlcF9tYXggJiYgdW5zYWZlX2dldCBzICghaSArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBpbmNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrIDw9IHNlcF9tYXggdGhlbiAoKiBubyBtYXRjaCAqKSBpbmNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIDEgaW5cbiAgICAgICAgbGV0IHJpZ2h0X3N0YXJ0ID0gIWkgKyBzZXBfbWF4ICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgcmN1dCBzIH5vbiA9XG4gIGxldCBzZXBfbWF4ID0gbGVuZ3RoIG9uIC0gMSBpblxuICBpZiBzZXBfbWF4IDwgMCB0aGVuIGludmFsaWRfYXJnIFwiU3RyaW5nZXh0LnJjdXQ6IGVtcHR5IHNlcGFyYXRvclwiIGVsc2VcbiAgICBsZXQgc19tYXggPSBsZW5ndGggcyAtIDEgaW5cbiAgICBpZiBzX21heCA8IDAgdGhlbiBOb25lIGVsc2VcbiAgICAgIGxldCBrID0gcmVmIDAgaW5cbiAgICAgIGxldCBpID0gcmVmIHNfbWF4IGluXG4gICAgICAoKiBXZSBydW4gZnJvbSB0aGUgZW5kIG9mIFtzXSB0byB0aGUgYmVnaW5uaW5nIHdpdGggW2ldIHRyeWluZyB0b1xuICAgICAgICAgbWF0Y2ggdGhlIGxhc3QgY2hhcmFjdGVyIG9mIFtvbl0gaW4gW3NdLiBJZiB0aGlzIG1hdGNoZXMsIHdlXG4gICAgICAgICB2ZXJpZnkgdGhhdCB0aGUgd2hvbGUgW29uXSBpcyBtYXRjaGVkIHVzaW5nIFtrXSAod2UgZG8gdGhhdFxuICAgICAgICAgYmFja3dhcmRzKS4gIElmIGl0IGRvZXNuJ3QgbWF0Y2ggd2UgY29udGludWUgdG8gbG9vayBmb3IgW29uXVxuICAgICAgICAgd2l0aCBbaV0uICBJZiBpdCBtYXRjaGVzIHdlIGV4aXQgdGhlIGxvb3AgYW5kIGV4dHJhY3QgYVxuICAgICAgICAgc3Vic3RyaW5nIGZyb20gdGhlIHN0YXJ0IG9mIFtzXSB0byB0aGUgcG9zaXRpb24gYmVmb3JlIHRoZVxuICAgICAgICAgW29uXSB3ZSBmb3VuZCBhbmQgYW5vdGhlciBmcm9tIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgW29uXSB3ZVxuICAgICAgICAgZm91bmQgdG8gZW5kIG9mIHN0cmluZy4gIElmIFtpXSBpcyBzdWNoIHRoYXQgbm8gc2VwYXJhdG9yIGNhblxuICAgICAgICAgYmUgZm91bmQgd2UgZXhpdCB0aGUgbG9vcCBhbmQgcmV0dXJuIHRoZSBubyBtYXRjaCBjYXNlLiAqKVxuICAgICAgdHJ5XG4gICAgICAgIHdoaWxlICghaSA+PSBzZXBfbWF4KSBkb1xuICAgICAgICAgIGlmIHVuc2FmZV9nZXQgcyAhaSA8PiB1bnNhZmVfZ2V0IG9uIHNlcF9tYXggdGhlbiBkZWNyIGkgZWxzZSBiZWdpblxuICAgICAgICAgICAgKCogQ2hlY2sgcmVtYWluaW5nIFtvbl0gY2hhcnMgbWF0Y2gsIGFjY2VzcyB0byB1bnNhZmVfZ2V0XG4gICAgICAgICAgICAgICBzIChzZXBfc3RhcnQgKyAhaykgaXMgZ3VhcmFudGVlZCBieSBsb29wIGludmFyaWFudC4gKilcbiAgICAgICAgICAgIGxldCBzZXBfc3RhcnQgPSAhaSAtIHNlcF9tYXggaW5cbiAgICAgICAgICAgIGsgOj0gc2VwX21heCAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoIWsgPj0gMCAmJiB1bnNhZmVfZ2V0IHMgKHNlcF9zdGFydCArICFrKSA9IHVuc2FmZV9nZXQgb24gIWspXG4gICAgICAgICAgICBkbyBkZWNyIGsgZG9uZTtcbiAgICAgICAgICAgIGlmICFrID49IDAgdGhlbiAoKiBubyBtYXRjaCAqKSBkZWNyIGkgZWxzZSByYWlzZSBFeGl0XG4gICAgICAgICAgZW5kXG4gICAgICAgIGRvbmU7XG4gICAgICAgIE5vbmUgKCogbm8gbWF0Y2ggaW4gdGhlIHdob2xlIHN0cmluZy4gKilcbiAgICAgIHdpdGhcbiAgICAgIHwgRXhpdCAtPiAoKiBpIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHNlcGFyYXRvciAqKVxuICAgICAgICBsZXQgbGVmdF9lbmQgPSAhaSAtIHNlcF9tYXggLSAxIGluXG4gICAgICAgIGxldCByaWdodF9zdGFydCA9ICFpICsgMSBpblxuICAgICAgICBTb21lIChzdWIgcyAwIChsZWZ0X2VuZCArIDEpLFxuICAgICAgICAgICAgICBzdWIgcyByaWdodF9zdGFydCAoc19tYXggLSByaWdodF9zdGFydCArIDEpKVxuXG5sZXQgY2hvcF9wcmVmaXggcyB+cHJlZml4ID1cbiAgbGV0IHByZWZpeF9sID0gU3RyaW5nLmxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHN0cmluZ19sID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIHByZWZpeF9sID4gc3RyaW5nX2wgdGhlbiBOb25lXG4gIGVsc2VcbiAgICB0cnlcbiAgICAgIGZvciBpID0gMCB0byBwcmVmaXhfbCAtIDEgZG9cbiAgICAgICAgaWYgcy5baV0gPD4gcHJlZml4LltpXSB0aGVuIHJhaXNlIEV4aXQ7XG4gICAgICBkb25lO1xuICAgICAgU29tZSAoU3RyaW5nLnN1YiBzIHByZWZpeF9sIChzdHJpbmdfbCAtIHByZWZpeF9sKSlcbiAgICB3aXRoIF8gLT4gTm9uZVxuXG5sZXQgZHJvcCBzIG4gPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBuID49IGxcbiAgdGhlbiBcIlwiXG4gIGVsc2UgU3RyaW5nLnN1YiBzIG4gKGwgLSBuKVxuXG5sZXQgdGFrZSBzIG4gPVxuICBpZiBuID49IFN0cmluZy5sZW5ndGggc1xuICB0aGVuIHNcbiAgZWxzZSBTdHJpbmcuc3ViIHMgMCBuXG4iLCJ0eXBlIGJpZ3N0cmluZyA9XG4gIChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbnR5cGUgdCA9IGJpZ3N0cmluZ1xuXG5sZXQgY3JlYXRlIHNpemUgPSBCaWdhcnJheS4oQXJyYXkxLmNyZWF0ZSBjaGFyIGNfbGF5b3V0IHNpemUpXG5sZXQgZW1wdHkgICAgICAgPSBjcmVhdGUgMFxuXG5tb2R1bGUgQkExID0gQmlnYXJyYXkuQXJyYXkxXG5cbmxldCBsZW5ndGggdCA9IEJBMS5kaW0gdFxuXG5leHRlcm5hbCBnZXQgOiB0IC0+IGludCAtPiBjaGFyID0gXCIlY2FtbF9iYV9yZWZfMVwiXG5leHRlcm5hbCBzZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3NldF8xXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHQgLT4gaW50IC0+IGNoYXIgICAgICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0ICAgICAgICAgICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2JpZ3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X3RvX2J5dGVzICAgOiB0ICAgICAgIC0+IHNyY19vZmY6aW50IC0+IEJ5dGVzLnQgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X3RvX2J5dGVzXCIgICAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgOiBCeXRlcy50IC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9ibGl0X2Zyb21fc3RyaW5nIDogc3RyaW5nIC0+IHNyY19vZmY6aW50IC0+IHQgICAgICAgLT4gZHN0X29mZjppbnQgLT4gbGVuOmludCAtPiB1bml0ID1cbiAgXCJiaWdzdHJpbmdhZl9ibGl0X2Zyb21fYnl0ZXNcIiAgIFtAQG5vYWxsb2NdXG5cbmV4dGVybmFsIHVuc2FmZV9tZW1jbXAgOiB0IC0+IGludCAtPiB0IC0+IGludCAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jbXBfYmlnc3RyaW5nXCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgdW5zYWZlX21lbWNtcF9zdHJpbmcgOiB0IC0+IGludCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiBpbnQgPVxuICBcImJpZ3N0cmluZ2FmX21lbWNtcF9zdHJpbmdcIiBbQEBub2FsbG9jXVxuXG5leHRlcm5hbCB1bnNhZmVfbWVtY2hyIDogdCAtPiBpbnQgLT4gY2hhciAtPiBpbnQgLT4gaW50ID1cbiAgXCJiaWdzdHJpbmdhZl9tZW1jaHJcIiBbQEBub2FsbG9jXVxuXG5sZXQgc3ViIHQgfm9mZiB+bGVuID1cbiAgQkExLnN1YiB0IG9mZiBsZW5cblxubGV0W0BpbmxpbmUgbmV2ZXJdIGludmFsaWRfYm91bmRzIG9wIGJ1ZmZlcl9sZW4gb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgYnVmZmVyX2xlbjogJWQsIG9mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmZmVyX2xlbiBvZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG5sZXRbQGlubGluZSBuZXZlcl0gaW52YWxpZF9ib3VuZHNfYmxpdCBvcCBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbiA9XG4gIGxldCBtZXNzYWdlID1cbiAgICBQcmludGYuc3ByaW50ZiBcIkJpZ3N0cmluZ2FmLiVzIGludmFsaWQgcmFuZ2U6IHsgc3JjX2xlbjogJWQsIHNyY19vZmY6ICVkLCBkc3RfbGVuOiAlZCwgZHN0X29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3Agc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW5cbiAgaW5cbiAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgbWVzc2FnZSlcbjs7XG5cbmxldFtAaW5saW5lIG5ldmVyXSBpbnZhbGlkX2JvdW5kc19tZW1jbXAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiQmlnc3RyaW5nYWYuJXMgaW52YWxpZCByYW5nZTogeyBidWYxX2xlbjogJWQsIGJ1ZjFfb2ZmOiAlZCwgYnVmMl9sZW46ICVkLCBidWYyX29mZjogJWQsIGxlbjogJWQgfVwiXG4gICAgb3AgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuXG4gIGluXG4gIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IG1lc3NhZ2UpXG47O1xuXG4oKiBBIG5vdGUgb24gYm91bmRzIGNoZWNraW5nLlxuICpcbiAqIFRoZSBjb2RlIHNob3VsZCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIGJsaXQgZG9lc24ndFxuICogcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dCBidWZmZXI6XG4gKlxuICogICB7W29mZiArIGxlbiA8PSBidWZmZXJfbGVuXX1cbiAqXG4gKiBIb3dldmVyLCB0aGlzIG1heSBsZWFkIHRvIGFuIGludGVnZXIgb3ZlcmZsb3cgZm9yIGxhcmdlIHZhbHVlcyBvZiBbb2ZmXSxcbiAqIGUuZy4sIFttYXhfaW50XSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgY29tcGFyaXNvbiB0byByZXR1cm4gW3RydWVdIHdoZW4gaXRcbiAqIHNob3VsZCByZWFsbHkgcmV0dXJuIFtmYWxzZV0uXG4gKlxuICogQW4gZXF1aXZhbGVudCBjb21wYXJpc29uIHRoYXQgZG9lcyBub3QgcnVuIGludG8gdGhpcyBpbnRlZ2VyIG92ZXJmbG93XG4gKiBwcm9ibGVtIGlzOlxuICpcbiAqICAge1tidWZmZXJfbGVuIC0gb2ZmID0+IGxlbl19XG4gKlxuICogVGhpcyBpcyBjaGVja2luZyB0aGF0IHRoZSBpbnB1dCBidWZmZXIsIGxlc3MgdGhlIG9mZnNldCwgaXMgc3VmZmljaWVudGx5XG4gKiBsb25nIHRvIHBlcmZvcm0gdGhlIGJsaXQuIFNpbmNlIHRoZSBleHByZXNzaW9uIGlzIHN1YnRyYWN0aW5nIFtvZmZdIHJhdGhlclxuICogdGhhbiBhZGRpbmcgaXQsIGl0IGRvZXNuJ3Qgc3VmZmVyIGZyb20gdGhlIG92ZXJmbG93IHRoYXQgdGhlIHByZXZpb3VzXG4gKiBpbmVxdWFsaXR5IGRpZC4gQXMgbG9uZyBhcyB0aGVyZSBpcyBhIGNoZWNrIHRvIGVuc3VyZSB0aGF0IFtvZmZdIGlzIG5vdFxuICogbmVnYXRpdmUsIGl0IHdvbid0IHVuZGVyZmxvdyBlaXRoZXIuICopXG5cbmxldCBjb3B5IHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwiY29weVwiIGJ1ZmZlcl9sZW4gb2ZmIGxlbjtcbiAgbGV0IGRzdCA9IGNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXQgdCB+c3JjX29mZjpvZmYgZHN0IH5kc3Rfb2ZmOjAgfmxlbjtcbiAgZHN0XG47O1xuXG5sZXQgc3Vic3RyaW5nIHQgfm9mZiB+bGVuID1cbiAgbGV0IGJ1ZmZlcl9sZW4gPSBsZW5ndGggdCBpblxuICBpZiBsZW4gPCAwIHx8IG9mZiA8IDAgfHwgYnVmZmVyX2xlbiAtIG9mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwic3Vic3RyaW5nXCIgYnVmZmVyX2xlbiBvZmYgbGVuO1xuICBsZXQgYiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgdCB+c3JjX29mZjpvZmYgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IHRvX3N0cmluZyB0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCB0IGluXG4gIGxldCBiID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF90b19ieXRlcyB0IH5zcmNfb2ZmOjAgYiB+ZHN0X29mZjowIH5sZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYlxuOztcblxubGV0IG9mX3N0cmluZyB+b2ZmIH5sZW4gcyA9XG4gIGxldCBidWZmZXJfbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGlmIGxlbiA8IDAgfHwgb2ZmIDwgMCB8fCBidWZmZXJfbGVuIC0gb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJvZl9zdHJpbmdcIiBidWZmZXJfbGVuIG9mZiBsZW47XG4gIGxldCBiID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOm9mZiBiIH5kc3Rfb2ZmOjAgfmxlbjtcbiAgYlxuOztcblxubGV0IGJsaXQgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBsZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgc3JjX29mZiA8IDAgfHwgc3JjX2xlbiAtIHNyY19vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdFwiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBkc3Rfb2ZmIDwgMCB8fCBkc3RfbGVuIC0gZHN0X29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0XCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0IHNyYyB+c3JjX29mZiBkc3QgfmRzdF9vZmYgfmxlblxuOztcblxubGV0IGJsaXRfZnJvbV9zdHJpbmcgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBTdHJpbmcubGVuZ3RoIHNyYyBpblxuICBsZXQgZHN0X2xlbiA9IGxlbmd0aCBkc3QgaW5cbiAgaWYgbGVuIDwgMFxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fc3RyaW5nXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIHNyY19vZmYgPCAwIHx8IHNyY19sZW4gLSBzcmNfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9zdHJpbmdcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX3N0cmluZ1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICB1bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW5cbjs7XG5cbmxldCBibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuID1cbiAgbGV0IHNyY19sZW4gPSBCeXRlcy5sZW5ndGggc3JjIGluXG4gIGxldCBkc3RfbGVuID0gbGVuZ3RoIGRzdCBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfZnJvbV9ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X2Zyb21fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgaWYgZHN0X29mZiA8IDAgfHwgZHN0X2xlbiAtIGRzdF9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF9mcm9tX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIHVuc2FmZV9ibGl0X2Zyb21fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgYmxpdF90b19ieXRlcyBzcmMgfnNyY19vZmYgZHN0IH5kc3Rfb2ZmIH5sZW4gPVxuICBsZXQgc3JjX2xlbiA9IGxlbmd0aCBzcmMgaW5cbiAgbGV0IGRzdF9sZW4gPSBCeXRlcy5sZW5ndGggZHN0IGluXG4gIGlmIGxlbiA8IDBcbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19ibGl0IFwiYmxpdF90b19ieXRlc1wiIHNyY19sZW4gc3JjX29mZiBkc3RfbGVuIGRzdF9vZmYgbGVuO1xuICBpZiBzcmNfb2ZmIDwgMCB8fCBzcmNfbGVuIC0gc3JjX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX2JsaXQgXCJibGl0X3RvX2J5dGVzXCIgc3JjX2xlbiBzcmNfb2ZmIGRzdF9sZW4gZHN0X29mZiBsZW47XG4gIGlmIGRzdF9vZmYgPCAwIHx8IGRzdF9sZW4gLSBkc3Rfb2ZmIDwgbGVuXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfYmxpdCBcImJsaXRfdG9fYnl0ZXNcIiBzcmNfbGVuIHNyY19vZmYgZHN0X2xlbiBkc3Rfb2ZmIGxlbjtcbiAgdW5zYWZlX2JsaXRfdG9fYnl0ZXMgc3JjIH5zcmNfb2ZmIGRzdCB+ZHN0X29mZiB+bGVuXG47O1xuXG5sZXQgbWVtY21wIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW4gPVxuICBsZXQgYnVmMV9sZW4gPSBsZW5ndGggYnVmMSBpblxuICBsZXQgYnVmMl9sZW4gPSBsZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYxX29mZiA8IDAgfHwgYnVmMV9sZW4gLSBidWYxX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcFwiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMl9vZmYgPCAwIHx8IGJ1ZjJfbGVuIC0gYnVmMl9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXAgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlblxuOztcblxubGV0IG1lbWNtcF9zdHJpbmcgYnVmMSBidWYxX29mZiBidWYyIGJ1ZjJfb2ZmIGxlbiA9XG4gIGxldCBidWYxX2xlbiA9IGxlbmd0aCBidWYxIGluXG4gIGxldCBidWYyX2xlbiA9IFN0cmluZy5sZW5ndGggYnVmMiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHNfbWVtY21wIFwibWVtY21wX3N0cmluZ1wiIGJ1ZjFfbGVuIGJ1ZjFfb2ZmIGJ1ZjJfbGVuIGJ1ZjJfb2ZmIGxlbjtcbiAgaWYgYnVmMV9vZmYgPCAwIHx8IGJ1ZjFfbGVuIC0gYnVmMV9vZmYgPCBsZW5cbiAgdGhlbiBpbnZhbGlkX2JvdW5kc19tZW1jbXAgXCJtZW1jbXBfc3RyaW5nXCIgYnVmMV9sZW4gYnVmMV9vZmYgYnVmMl9sZW4gYnVmMl9vZmYgbGVuO1xuICBpZiBidWYyX29mZiA8IDAgfHwgYnVmMl9sZW4gLSBidWYyX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzX21lbWNtcCBcIm1lbWNtcF9zdHJpbmdcIiBidWYxX2xlbiBidWYxX29mZiBidWYyX2xlbiBidWYyX29mZiBsZW47XG4gIHVuc2FmZV9tZW1jbXBfc3RyaW5nIGJ1ZjEgYnVmMV9vZmYgYnVmMiBidWYyX29mZiBsZW5cbjs7XG5cbmxldCBtZW1jaHIgYnVmIGJ1Zl9vZmYgY2hyIGxlbiA9XG4gIGxldCBidWZfbGVuID0gbGVuZ3RoIGJ1ZiBpblxuICBpZiBsZW4gPCAwXG4gIHRoZW4gaW52YWxpZF9ib3VuZHMgXCJtZW1jaHJcIiBidWZfbGVuIGJ1Zl9vZmYgbGVuO1xuICBpZiBidWZfb2ZmIDwgMCB8fCBidWZfbGVuIC0gYnVmX29mZiA8IGxlblxuICB0aGVuIGludmFsaWRfYm91bmRzIFwibWVtY2hyXCIgYnVmX2xlbiBidWZfb2ZmIGxlbjtcbiAgdW5zYWZlX21lbWNociBidWYgYnVmX29mZiBjaHIgbGVuXG5cbigqIFNhZmUgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludCAgIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQzMlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NFwiXG5cbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX2dldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgPSBcIiVjYW1sX2JpZ3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9iaWdzdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0XCJcblxubW9kdWxlIFN3YXAgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgYnN3YXAxNiA6IGludCAtPiBpbnQgPSBcIiVic3dhcDE2XCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50MzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbiAgZXh0ZXJuYWwgYnN3YXBfaW50NjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfMTYgYnMgb2ZmIChic3dhcDE2IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3NldF8zMiBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfc2V0XzY0IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgYnMgb2ZmIChic3dhcF9pbnQ2NCBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ19nZXRfMTYgYnMgb2ZmKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ19nZXRfMzIgYnMgb2ZmID1cbiAgICBic3dhcF9pbnQzMiAoY2FtbF9iaWdzdHJpbmdfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfZ2V0XzY0IGJzIG9mZiA9XG4gICAgYnN3YXBfaW50NjQgKGNhbWxfYmlnc3RyaW5nX2dldF82NCBicyBvZmYpXG5cbiAgbGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkIHggb2ZmID1cbiAgICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5lbmRcblxubGV0IHNldF9pbnQxNl9sZSwgc2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfc2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzE2XG5cbmxldCBzZXRfaW50MzJfbGUsIHNldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3NldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3NldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX3NldF8zMlxuXG5sZXQgc2V0X2ludDY0X2xlLCBzZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19zZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19zZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19zZXRfNjRcblxubGV0IGdldF9pbnQxNl9sZSwgZ2V0X2ludDE2X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfZ2V0XzE2ICAgICAsIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzE2XG5cbmxldCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9ub3N3YXAgeCBvZmYgPVxuICAoKGNhbWxfYmlnc3RyaW5nX2dldF8xNiAgICAgIHggb2ZmKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IGdldF9pbnQxNl9zaWduX2V4dGVuZGVkX2xlLCBnZXRfaW50MTZfc2lnbl9leHRlbmRlZF9iZSAgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWQgICwgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwXG4gIGVsc2UgZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfbm9zd2FwLCBTd2FwLmdldF9pbnQxNl9zaWduX2V4dGVuZGVkXG5cbmxldCBnZXRfaW50MzJfbGUsIGdldF9pbnQzMl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX2dldF8zMlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX2dldF8zMiAgICAgLCBTd2FwLmNhbWxfYmlnc3RyaW5nX2dldF8zMlxuXG5sZXQgZ2V0X2ludDY0X2xlLCBnZXRfaW50NjRfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFN3YXAuY2FtbF9iaWdzdHJpbmdfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ19nZXRfNjRcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ19nZXRfNjQgICAgICwgU3dhcC5jYW1sX2JpZ3N0cmluZ19nZXRfNjRcblxuKCogVW5zYWZlIG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiA6IGJpZ3N0cmluZyAtPiBpbnQgLT4gaW50ICAgLT4gdW5pdCA9IFwiJWNhbWxfYmlnc3RyaW5nX3NldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9iaWdzdHJpbmdfc2V0MzJ1XCJcbmV4dGVybmFsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfNjQgOiBiaWdzdHJpbmcgLT4gaW50IC0+IGludDY0IC0+IHVuaXQgPSBcIiVjYW1sX2JpZ3N0cmluZ19zZXQ2NHVcIlxuXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQgICA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDE2dVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDMydVwiXG5leHRlcm5hbCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IDogYmlnc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfYmlnc3RyaW5nX2dldDY0dVwiXG5cbm1vZHVsZSBVU3dhcCA9IHN0cnVjdFxuICBleHRlcm5hbCBic3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuICBleHRlcm5hbCBic3dhcF9pbnQzMiA6IGludDMyIC0+IGludDMyID0gXCIlYnN3YXBfaW50MzJcIlxuICBleHRlcm5hbCBic3dhcF9pbnQ2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzE2IGJzIG9mZiAoYnN3YXAxNiBpKVxuXG4gIGxldCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiBpID1cbiAgICBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyIGJzIG9mZiAoYnN3YXBfaW50MzIgaSlcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgaSA9XG4gICAgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCBicyBvZmYgKGJzd2FwX2ludDY0IGkpXG5cbiAgbGV0IGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgYnMgb2ZmID1cbiAgICBic3dhcDE2IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzE2IGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8zMiBicyBvZmYgPVxuICAgIGJzd2FwX2ludDMyIChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyIGJzIG9mZilcblxuICBsZXQgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCBicyBvZmYgPVxuICAgIGJzd2FwX2ludDY0IChjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0IGJzIG9mZilcbmVuZFxuXG5sZXQgdW5zYWZlX3NldF9pbnQxNl9sZSwgdW5zYWZlX3NldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMTZcblxubGV0IHVuc2FmZV9zZXRfaW50MzJfbGUsIHVuc2FmZV9zZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9zZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzMyXG5cbmxldCB1bnNhZmVfc2V0X2ludDY0X2xlLCB1bnNhZmVfc2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfc2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX3NldF82NFxuXG5sZXQgdW5zYWZlX2dldF9pbnQxNl9sZSwgdW5zYWZlX2dldF9pbnQxNl9iZSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuXG4gIHRoZW4gVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNiwgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF8xNlxuICBlbHNlIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTYgICAgICAsIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMTZcblxubGV0IHVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSB4IG9mZiA9XG4gICgodW5zYWZlX2dldF9pbnQxNl9sZSB4IG9mZikgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgeCBvZmYgPVxuICAoKHVuc2FmZV9nZXRfaW50MTZfYmUgeCBvZmYgKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDE2KSkgYXNyIChTeXMuaW50X3NpemUgLSAxNilcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUsIHVuc2FmZV9nZXRfaW50MzJfYmUgPVxuICBpZiBTeXMuYmlnX2VuZGlhblxuICB0aGVuIFVTd2FwLmNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzIsIGNhbWxfYmlnc3RyaW5nX3Vuc2FmZV9nZXRfMzJcbiAgZWxzZSBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyICAgICAgLCBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzMyXG5cbmxldCB1bnNhZmVfZ2V0X2ludDY0X2xlLCB1bnNhZmVfZ2V0X2ludDY0X2JlID1cbiAgaWYgU3lzLmJpZ19lbmRpYW5cbiAgdGhlbiBVU3dhcC5jYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0LCBjYW1sX2JpZ3N0cmluZ191bnNhZmVfZ2V0XzY0XG4gIGVsc2UgY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NCAgICAgICwgVVN3YXAuY2FtbF9iaWdzdHJpbmdfdW5zYWZlX2dldF82NFxuIiwidHlwZSAnYSBzdGF0ZSA9XG4gIHwgUGFydGlhbCBvZiAnYSBwYXJ0aWFsXG4gIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICB8IEZhaWwgICAgb2YgaW50ICogc3RyaW5nIGxpc3QgKiBzdHJpbmdcblxuYW5kICdhIHBhcnRpYWwgPVxuICB7IGNvbW1pdHRlZCA6IGludFxuICA7IGNvbnRpbnVlICA6IEJpZ3N0cmluZ2FmLnQgLT4gb2ZmOmludCAtPiBsZW46aW50IC0+IE1vcmUudCAtPiAnYSBzdGF0ZSB9XG5cblxubGV0IHN0YXRlX3RvX29wdGlvbiB4ID0gbWF0Y2ggeCB3aXRoXG4gIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgfCBGYWlsIF8gICAgIC0+IE5vbmVcbiAgfCBQYXJ0aWFsIF8gIC0+IE5vbmVcblxubGV0IGZhaWxfdG9fc3RyaW5nIG1hcmtzIGVyciA9XG4gIFN0cmluZy5jb25jYXQgXCIgPiBcIiBtYXJrcyBeIFwiOiBcIiBeIGVyclxuXG5sZXQgc3RhdGVfdG9fcmVzdWx0IHggPSBtYXRjaCB4IHdpdGhcbiAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gIHwgRmFpbChfLCBtYXJrcywgZXJyKSAtPiBFcnJvciAoZmFpbF90b19zdHJpbmcgbWFya3MgZXJyKVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE3IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG50eXBlIHQgPVxuICB7IG11dGFibGUgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA6IGludFxuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgICAgICAgICA6IGludFxuICA7IG9mZiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGxlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGludFxuICA7IGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICA6IEJpZ3N0cmluZ2FmLnRcbiAgfVxuXG5sZXQgY3JlYXRlIGJ1ZmZlciB+b2ZmIH5sZW4gfmNvbW1pdHRlZF9ieXRlcyA9XG4gIHsgcGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA9IGNvbW1pdHRlZF9ieXRlc1xuICA7IGNsaWVudF9jb21taXR0ZWRfYnl0ZXMgPSBjb21taXR0ZWRfYnl0ZXNcbiAgOyBvZmZcbiAgOyBsZW5cbiAgOyBidWZmZXIgfVxuXG5sZXQgbGVuZ3RoICAgICAgICAgICAgICAgICB0ID0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzICsgdC5sZW5cbmxldCBjbGllbnRfY29tbWl0dGVkX2J5dGVzIHQgPSB0LmNsaWVudF9jb21taXR0ZWRfYnl0ZXNcbmxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgPSB0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXNcblxubGV0IGNvbW1pdHRlZF9ieXRlc19kaXNjcmVwYW5jeSB0ID0gdC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIC0gdC5jbGllbnRfY29tbWl0dGVkX2J5dGVzXG5sZXQgYnl0ZXNfZm9yX2NsaWVudF90b19jb21taXQgIHQgPSBjb21taXR0ZWRfYnl0ZXNfZGlzY3JlcGFuY3kgdFxuXG5sZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHQgPSB0LmxlbiAtIGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHRcblxubGV0IGludmFyaWFudCB0ID1cbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgKyBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdCA9IGxlbmd0aCB0KTtcbiAgYXNzZXJ0IChwYXJzZXJfY29tbWl0dGVkX2J5dGVzIHQgLSBjbGllbnRfY29tbWl0dGVkX2J5dGVzICAgdCA9IGJ5dGVzX2Zvcl9jbGllbnRfdG9fY29tbWl0IHQpO1xuOztcblxubGV0IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgPVxuICB0Lm9mZiArIHBvcyAtIHQuY2xpZW50X2NvbW1pdHRlZF9ieXRlc1xuXG5sZXQgYXBwbHkgdCBwb3MgbGVuIH5mID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgZiB0LmJ1ZmZlciB+b2ZmIH5sZW5cblxubGV0IHVuc2FmZV9nZXRfY2hhciB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2xlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9sZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfbGUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9sZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgdC5idWZmZXIgb2ZmXG5cbmxldCB1bnNhZmVfZ2V0X2ludDE2X2JlIHQgcG9zID1cbiAgbGV0IG9mZiA9IG9mZnNldF9pbl9idWZmZXIgdCBwb3MgaW5cbiAgQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSB0LmJ1ZmZlciBvZmZcblxubGV0IHVuc2FmZV9nZXRfaW50MzJfYmUgdCBwb3MgPVxuICBsZXQgb2ZmID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2JlIHQuYnVmZmVyIG9mZlxuXG5sZXQgdW5zYWZlX2dldF9pbnQ2NF9iZSB0IHBvcyA9XG4gIGxldCBvZmYgPSBvZmZzZXRfaW5fYnVmZmVyIHQgcG9zIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfYmUgdC5idWZmZXIgb2ZmXG5cbmxldCBjb3VudF93aGlsZSB0IHBvcyB+ZiA9XG4gIGxldCBidWZmZXIgPSB0LmJ1ZmZlciBpblxuICBsZXQgb2ZmICAgID0gb2Zmc2V0X2luX2J1ZmZlciB0IHBvcyBpblxuICBsZXQgaSAgICAgID0gcmVmIG9mZiBpblxuICBsZXQgbGltaXQgID0gdC5vZmYgKyB0LmxlbiBpblxuICB3aGlsZSAhaSA8IGxpbWl0ICYmIGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyICFpKSBkb1xuICAgIGluY3IgaVxuICBkb25lO1xuICAhaSAtIG9mZlxuOztcblxubGV0IGNvbW1pdCB0IHBvcyA9XG4gIHQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyA8LSBwb3Ncbjs7XG4iLCJtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IFBhcnRpYWwgb2YgJ2EgcGFydGlhbFxuICAgIHwgTGF6eSAgICBvZiAnYSB0IExhenkudFxuICAgIHwgRG9uZSAgICBvZiBpbnQgKiAnYVxuICAgIHwgRmFpbCAgICBvZiBpbnQgKiBzdHJpbmcgbGlzdCAqIHN0cmluZ1xuXG4gIGFuZCAnYSBwYXJ0aWFsID1cbiAgICB7IGNvbW1pdHRlZCA6IGludFxuICAgIDsgY29udGludWUgIDogQmlnc3RyaW5nYWYudCAtPiBvZmY6aW50IC0+IGxlbjppbnQgLT4gTW9yZS50IC0+ICdhIHQgfVxuXG5lbmRcbnR5cGUgJ2Egd2l0aF9zdGF0ZSA9IElucHV0LnQgLT4gIGludCAtPiBNb3JlLnQgLT4gJ2FcblxudHlwZSAnYSBmYWlsdXJlID0gKHN0cmluZyBsaXN0IC0+IHN0cmluZyAtPiAnYSBTdGF0ZS50KSB3aXRoX3N0YXRlXG50eXBlICgnYSwgJ3IpIHN1Y2Nlc3MgPSAoJ2EgLT4gJ3IgU3RhdGUudCkgd2l0aF9zdGF0ZVxuXG50eXBlICdhIHQgPVxuICB7IHJ1biA6ICdyLiAoJ3IgZmFpbHVyZSAtPiAoJ2EsICdyKSBzdWNjZXNzIC0+ICdyIFN0YXRlLnQpIHdpdGhfc3RhdGUgfVxuXG5sZXQgZmFpbF9rICAgIGlucHV0IHBvcyBfIG1hcmtzIG1zZyA9XG4gIFN0YXRlLkZhaWwocG9zIC0gSW5wdXQuY2xpZW50X2NvbW1pdHRlZF9ieXRlcyBpbnB1dCwgbWFya3MsIG1zZylcbmxldCBzdWNjZWVkX2sgaW5wdXQgcG9zIF8gICAgICAgdiAgID1cbiAgU3RhdGUuRG9uZShwb3MgLSBJbnB1dC5jbGllbnRfY29tbWl0dGVkX2J5dGVzIGlucHV0LCB2KVxuXG5sZXQgcmVjIHRvX2V4cG9ydGVkX3N0YXRlID0gZnVuY3Rpb25cbiAgfCBTdGF0ZS5QYXJ0aWFsIHtjb21taXR0ZWQ7Y29udGludWV9IC0+XG4gICAgIEV4cG9ydGVkX3N0YXRlLlBhcnRpYWxcbiAgICAgICB7IGNvbW1pdHRlZFxuICAgICAgIDsgY29udGludWUgPVxuICAgICAgICAgICBmdW4gYnMgfm9mZiB+bGVuIG1vcmUgLT5cbiAgICAgICAgICAgdG9fZXhwb3J0ZWRfc3RhdGUgKGNvbnRpbnVlIGJzIH5vZmYgfmxlbiBtb3JlKX1cbiAgfCBTdGF0ZS5Eb25lIChpLHgpIC0+IEV4cG9ydGVkX3N0YXRlLkRvbmUgKGkseClcbiAgfCBTdGF0ZS5GYWlsIChpLCBzbCwgcykgLT4gRXhwb3J0ZWRfc3RhdGUuRmFpbCAoaSwgc2wsIHMpXG4gIHwgU3RhdGUuTGF6eSB4IC0+IHRvX2V4cG9ydGVkX3N0YXRlIChMYXp5LmZvcmNlIHgpXG5cbmxldCBwYXJzZSBwID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIEJpZ3N0cmluZ2FmLmVtcHR5IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjowIGluXG4gIHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIEluY29tcGxldGUgZmFpbF9rIHN1Y2NlZWRfaylcblxubGV0IHBhcnNlX2JpZ3N0cmluZyBwIGlucHV0ID1cbiAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5jb21taXR0ZWRfYnl0ZXM6MCB+b2ZmOjAgfmxlbjooQmlnc3RyaW5nYWYubGVuZ3RoIGlucHV0KSBpblxuICBFeHBvcnRlZF9zdGF0ZS5zdGF0ZV90b19yZXN1bHQgKHRvX2V4cG9ydGVkX3N0YXRlIChwLnJ1biBpbnB1dCAwIENvbXBsZXRlIGZhaWxfayBzdWNjZWVkX2spKVxuXG5tb2R1bGUgTW9uYWQgPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiB2ID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlIHZcbiAgICB9XG5cbiAgbGV0IGZhaWwgbXNnID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIF9zdWNjIC0+XG4gICAgICBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIG1zZ1xuICAgIH1cblxuICBsZXQgKD4+PSkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gKGYgdikucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKD4+fCkgcCBmID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyB2ID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoZiB2KSBpblxuICAgICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJ1xuICAgIH1cblxuICBsZXQgKDwkPikgZiBtID1cbiAgICBtID4+fCBmXG5cbiAgbGV0ICg8Kj4pIGYgbSA9XG4gICAgKCogZiA+Pj0gZnVuIGYgLT4gbSA+PnwgZiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIGYgPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgbSA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgKGYgbSkgaW5cbiAgICAgICAgbS5ydW4gaW5wdXQwIHBvczAgbW9yZTAgZmFpbCBzdWNjMVxuICAgICAgaW5cbiAgICAgIGYucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzAgfVxuXG4gIGxldCBsaWZ0IGYgbSA9XG4gICAgZiA8JD4gbVxuXG4gIGxldCBsaWZ0MiBmIG0xIG0yID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9IHN1Y2MgaW5wdXQyIHBvczIgbW9yZTIgKGYgbTEgbTIpIGluXG4gICAgICAgIG0yLnJ1biBpbnB1dDEgcG9zMSBtb3JlMSBmYWlsIHN1Y2MyXG4gICAgICBpblxuICAgICAgbTEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYzEgfVxuXG4gIGxldCBsaWZ0MyBmIG0xIG0yIG0zID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBzdWNjMSBpbnB1dDEgcG9zMSBtb3JlMSBtMSA9XG4gICAgICAgIGxldCBzdWNjMiBpbnB1dDIgcG9zMiBtb3JlMiBtMiA9XG4gICAgICAgICAgbGV0IHN1Y2MzIGlucHV0MyBwb3MzIG1vcmUzIG0zID1cbiAgICAgICAgICAgIHN1Y2MgaW5wdXQzIHBvczMgbW9yZTMgKGYgbTEgbTIgbTMpIGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0IGxpZnQ0IGYgbTEgbTIgbTMgbTQgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MxIGlucHV0MSBwb3MxIG1vcmUxIG0xID1cbiAgICAgICAgbGV0IHN1Y2MyIGlucHV0MiBwb3MyIG1vcmUyIG0yID1cbiAgICAgICAgICBsZXQgc3VjYzMgaW5wdXQzIHBvczMgbW9yZTMgbTMgPVxuICAgICAgICAgICAgbGV0IHN1Y2M0IGlucHV0NCBwb3M0IG1vcmU0IG00ID1cbiAgICAgICAgICAgICAgc3VjYyBpbnB1dDQgcG9zNCBtb3JlNCAoZiBtMSBtMiBtMyBtNCkgaW5cbiAgICAgICAgICAgIG00LnJ1biBpbnB1dDMgcG9zMyBtb3JlMyBmYWlsIHN1Y2M0IGluXG4gICAgICAgICAgbTMucnVuIGlucHV0MiBwb3MyIG1vcmUyIGZhaWwgc3VjYzMgaW5cbiAgICAgICAgbTIucnVuIGlucHV0MSBwb3MxIG1vcmUxIGZhaWwgc3VjYzJcbiAgICAgIGluXG4gICAgICBtMS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMSB9XG5cbiAgbGV0ICggKj4pIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIF8gLT4gYiAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnIF8gPSBiLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGEucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYydcbiAgICB9XG5cbiAgbGV0ICg8KiApIGEgYiA9XG4gICAgKCogYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geCAqKVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IHN1Y2MwIGlucHV0MCBwb3MwIG1vcmUwIHggPVxuICAgICAgICBsZXQgc3VjYzEgaW5wdXQxIHBvczEgbW9yZTEgXyA9IHN1Y2MgaW5wdXQxIHBvczEgbW9yZTEgeCBpblxuICAgICAgICBiLnJ1biBpbnB1dDAgcG9zMCBtb3JlMCBmYWlsIHN1Y2MxXG4gICAgICBpblxuICAgICAgYS5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjMCB9XG5lbmRcblxubW9kdWxlIENob2ljZSA9IHN0cnVjdFxuICBsZXQgKDw/PikgcCBtYXJrID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyBtYXJrcyBtc2cgPVxuICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIChtYXJrOjptYXJrcykgbXNnIGluXG4gICAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsJyBzdWNjXG4gICAgfVxuXG4gIGxldCAoPHw+KSBwIHEgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnIG1hcmtzIG1zZyA9XG4gICAgICAgICgqIFRoZSBvbmx5IHR3byBjb25zdHJ1Y3RvcnMgdGhhdCBpbnRyb2R1Y2UgbmV3IGZhaWx1cmUgY29udGludWF0aW9ucyBhcmVcbiAgICAgICAgICogWzw/Pl0gYW5kIFs8fD5dLiBJZiB0aGUgaW5pdGlhbCBpbnB1dCBwb3NpdGlvbiBpcyBsZXNzIHRoYW4gdGhlIGxlbmd0aFxuICAgICAgICAgKiBvZiB0aGUgY29tbWl0dGVkIGlucHV0LCB0aGVuIGNhbGxpbmcgdGhlIGZhaWx1cmUgY29udGludWF0aW9uIHdpbGxcbiAgICAgICAgICogaGF2ZSB0aGUgZWZmZWN0IG9mIHVud2luZGluZyBhbGwgY2hvaWNlcyBhbmQgY29sbGVjdGluZyBtYXJrcyBhbG9uZ1xuICAgICAgICAgKiB0aGUgd2F5LiAqKVxuICAgICAgICBpZiBwb3MgPCBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzIGlucHV0JyB0aGVuXG4gICAgICAgICAgZmFpbCBpbnB1dCcgcG9zJyBtb3JlIG1hcmtzIG1zZ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgcS5ydW4gaW5wdXQnIHBvcyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIHAucnVuIGlucHV0IHBvcyBtb3JlIGZhaWwnIHN1Y2NcbiAgICB9XG5lbmRcblxubW9kdWxlIE1vbmFkX3VzZV9mb3JfZGVidWdnaW5nID0gc3RydWN0XG4gIGxldCByZXR1cm4gPSBNb25hZC5yZXR1cm5cbiAgbGV0IGZhaWwgICA9IE1vbmFkLmZhaWxcbiAgbGV0ICg+Pj0pICA9IE1vbmFkLig+Pj0pXG5cbiAgbGV0ICg+PnwpIG0gZiA9IG0gPj49IGZ1biB4IC0+IHJldHVybiAoZiB4KVxuXG4gIGxldCAoPCQ+KSBmIG0gPSBtID4+fCBmXG4gIGxldCAoPCo+KSBmIG0gPSBmID4+PSBmdW4gZiAtPiBtID4+fCBmXG5cbiAgbGV0IGxpZnQgID0gKD4+fClcbiAgbGV0IGxpZnQyIGYgbTEgbTIgICAgICAgPSBmIDwkPiBtMSA8Kj4gbTJcbiAgbGV0IGxpZnQzIGYgbTEgbTIgbTMgICAgPSBmIDwkPiBtMSA8Kj4gbTIgPCo+IG0zXG4gIGxldCBsaWZ0NCBmIG0xIG0yIG0zIG00ID0gZiA8JD4gbTEgPCo+IG0yIDwqPiBtMyA8Kj4gbTRcblxuICBsZXQgKCAqPikgYSBiID0gYSA+Pj0gZnVuIF8gLT4gYlxuICBsZXQgKDwqICkgYSBiID0gYSA+Pj0gZnVuIHggLT4gYiA+PnwgZnVuIF8gLT4geFxuZW5kXG4iLCJ0eXBlIHQgPVxuICB7IG11dGFibGUgYnVmIDogQmlnc3RyaW5nYWYudFxuICA7IG11dGFibGUgb2ZmIDogaW50XG4gIDsgbXV0YWJsZSBsZW4gOiBpbnQgfVxuXG5sZXQgb2ZfYmlnc3RyaW5nIH5vZmYgfmxlbiBidWYgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYnVmID49IGxlbiAtIG9mZik7XG4gIHsgYnVmOyBvZmY7IGxlbiB9XG5cbmxldCBjcmVhdGUgbGVuID1cbiAgb2ZfYmlnc3RyaW5nIH5vZmY6MCB+bGVuOjAgKEJpZ3N0cmluZ2FmLmNyZWF0ZSBsZW4pXG5cbmxldCB3cml0YWJsZV9zcGFjZSB0ID1cbiAgQmlnc3RyaW5nYWYubGVuZ3RoIHQuYnVmIC0gdC5sZW5cblxubGV0IHRyYWlsaW5nX3NwYWNlIHQgPVxuICBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgLSAodC5vZmYgKyB0LmxlbilcblxubGV0IGNvbXByZXNzIHQgPVxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdCB0LmJ1ZiB+c3JjX29mZjp0Lm9mZiB0LmJ1ZiB+ZHN0X29mZjowIH5sZW46dC5sZW47XG4gIHQub2ZmIDwtIDBcblxubGV0IGdyb3cgdCB0b19jb3B5ID1cbiAgbGV0IG9sZF9sZW4gPSBCaWdzdHJpbmdhZi5sZW5ndGggdC5idWYgaW5cbiAgbGV0IG5ld19sZW4gPSByZWYgb2xkX2xlbiBpblxuICBsZXQgc3BhY2UgPSB3cml0YWJsZV9zcGFjZSB0IGluXG4gIHdoaWxlIHNwYWNlICsgIW5ld19sZW4gLSBvbGRfbGVuIDwgdG9fY29weSBkb1xuICAgIG5ld19sZW4gOj0gKDMgKiAhbmV3X2xlbikgLyAyXG4gIGRvbmU7XG4gIGxldCBuZXdfYnVmID0gQmlnc3RyaW5nYWYuY3JlYXRlICFuZXdfbGVuIGluXG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IHQuYnVmIH5zcmNfb2ZmOnQub2ZmIG5ld19idWYgfmRzdF9vZmY6MCB+bGVuOnQubGVuO1xuICB0LmJ1ZiA8LSBuZXdfYnVmO1xuICB0Lm9mZiA8LSAwXG5cbmxldCBlbnN1cmUgdCB0b19jb3B5ID1cbiAgaWYgdHJhaWxpbmdfc3BhY2UgdCA8IHRvX2NvcHkgdGhlblxuICAgIGlmIHdyaXRhYmxlX3NwYWNlIHQgPj0gdG9fY29weVxuICAgIHRoZW4gY29tcHJlc3MgdFxuICAgIGVsc2UgZ3JvdyB0IHRvX2NvcHlcblxubGV0IHdyaXRlX3BvcyB0ID1cbiAgdC5vZmYgKyB0LmxlblxuXG5sZXQgZmVlZF9zdHJpbmcgdCB+b2ZmIH5sZW4gc3RyID1cbiAgYXNzZXJ0IChvZmYgPj0gMCk7XG4gIGFzc2VydCAoU3RyaW5nLmxlbmd0aCBzdHIgPj0gbGVuIC0gb2ZmKTtcbiAgZW5zdXJlIHQgbGVuO1xuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzdHIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfYmlnc3RyaW5nIHQgfm9mZiB+bGVuIGIgPVxuICBhc3NlcnQgKG9mZiA+PSAwKTtcbiAgYXNzZXJ0IChCaWdzdHJpbmdhZi5sZW5ndGggYiA+PSBsZW4gLSBvZmYpO1xuICBlbnN1cmUgdCBsZW47XG4gIEJpZ3N0cmluZ2FmLnVuc2FmZV9ibGl0IGIgfnNyY19vZmY6b2ZmIHQuYnVmIH5kc3Rfb2ZmOih3cml0ZV9wb3MgdCkgfmxlbjtcbiAgdC5sZW4gPC0gdC5sZW4gKyBsZW5cblxubGV0IGZlZWRfaW5wdXQgdCA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyAgICBzIC0+IGZlZWRfc3RyaW5nICAgIHQgfm9mZjowIH5sZW46KFN0cmluZyAgICAgLmxlbmd0aCBzKSBzXG4gIHwgYEJpZ3N0cmluZyBiIC0+IGZlZWRfYmlnc3RyaW5nIHQgfm9mZjowIH5sZW46KEJpZ3N0cmluZ2FmLmxlbmd0aCBiKSBiXG5cbmxldCBzaGlmdCB0IG4gPVxuICBhc3NlcnQgKHQubGVuID49IG4pO1xuICB0Lm9mZiA8LSB0Lm9mZiArIG47XG4gIHQubGVuIDwtIHQubGVuIC0gblxuXG5sZXQgZm9yX3JlYWRpbmcgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBCaWdzdHJpbmdhZi5zdWIgfm9mZiB+bGVuIGJ1ZlxuXG5tb2R1bGUgVW5jb25zdW1lZCA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgYnVmIDogQmlnc3RyaW5nYWYudFxuICAgIDsgb2ZmIDogaW50XG4gICAgOyBsZW4gOiBpbnQgfVxuZW5kXG5cbmxldCB1bmNvbnN1bWVkID8oc2hpZnQ9MCkgeyBidWY7IG9mZjsgbGVuIH0gPVxuICBhc3NlcnQgKGxlbiA+PSBzaGlmdCk7XG4gIHsgVW5jb25zdW1lZC5idWY7IG9mZiA9IG9mZiArIHNoaWZ0OyBsZW4gPSBsZW4gLSBzaGlmdCB9XG5cbmxldCBvZl91bmNvbnN1bWVkIHsgVW5jb25zdW1lZC5idWY7IG9mZjsgbGVuIH0gPVxuICB7IGJ1Zjsgb2ZmOyBsZW4gfVxuXG50eXBlIHVuY29uc3VtZWQgPSBVbmNvbnN1bWVkLnQgPVxuICB7IGJ1ZiA6IEJpZ3N0cmluZ2FmLnRcbiAgOyBvZmYgOiBpbnRcbiAgOyBsZW4gOiBpbnQgfVxuIiwiKCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgQ29weXJpZ2h0IChjKSAyMDE2IEluaGFiaXRlZCBUeXBlIExMQy5cblxuICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cbiAgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXRcbiAgICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnNcbiAgICBhcmUgbWV0OlxuXG4gICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG5cbiAgICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGVcbiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuXG4gICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgaGlzIGNvbnRyaWJ1dG9yc1xuICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZVxuICAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1NcbiAgICBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICAgIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAgICBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1JcbiAgICBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gICAgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFNcbiAgICBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTilcbiAgICBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsXG4gICAgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOXG4gICAgQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFXG4gICAgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qKVxuXG5tb2R1bGUgQmlnYXJyYXkgPSBzdHJ1Y3RcbiAgKCogRG8gbm90IGFjY2VzcyBCaWdhcnJheSBvcGVyYXRpb25zIGRpcmVjdGx5LiBJZiBhbnl0aGluZydzIG5lZWRlZCwgcmVmZXIgdG9cbiAgICogdGhlIGludGVybmFsIEJpZ3N0cmluZyBtb2R1bGUuICopXG5lbmRcblxudHlwZSBiaWdzdHJpbmcgPSBCaWdzdHJpbmdhZi50XG5cblxubW9kdWxlIFVuYnVmZmVyZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYXJzZXJcblxuICBpbmNsdWRlIEV4cG9ydGVkX3N0YXRlXG5cbiAgdHlwZSBtb3JlID0gTW9yZS50ID1cbiAgICB8IENvbXBsZXRlXG4gICAgfCBJbmNvbXBsZXRlXG5lbmRcblxuaW5jbHVkZSBVbmJ1ZmZlcmVkXG5pbmNsdWRlIFBhcnNlci5Nb25hZFxuaW5jbHVkZSBQYXJzZXIuQ2hvaWNlXG5cbm1vZHVsZSBCdWZmZXJlZCA9IHN0cnVjdFxuICB0eXBlIHVuY29uc3VtZWQgPSBCdWZmZXJpbmcudW5jb25zdW1lZCA9XG4gICAgeyBidWYgOiBiaWdzdHJpbmdcbiAgICA7IG9mZiA6IGludFxuICAgIDsgbGVuIDogaW50IH1cblxuICB0eXBlIGlucHV0ID1cbiAgICBbIGBCaWdzdHJpbmcgb2YgYmlnc3RyaW5nXG4gICAgfCBgU3RyaW5nICAgIG9mIHN0cmluZyBdXG5cbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBQYXJ0aWFsIG9mIChbIGlucHV0IHwgYEVvZiBdIC0+ICdhIHN0YXRlKVxuICAgIHwgRG9uZSAgICBvZiB1bmNvbnN1bWVkICogJ2FcbiAgICB8IEZhaWwgICAgb2YgdW5jb25zdW1lZCAqIHN0cmluZyBsaXN0ICogc3RyaW5nXG5cbiAgbGV0IGZyb21fdW5idWZmZXJlZF9zdGF0ZSB+ZiBidWZmZXJpbmcgPSBmdW5jdGlvblxuICAgIHwgVW5idWZmZXJlZC5QYXJ0aWFsIHAgICAgICAgICAtPiBQYXJ0aWFsIChmIHApXG4gICAgfCBVbmJ1ZmZlcmVkLkRvbmUoY29uc3VtZWQsIHYpIC0+XG4gICAgICBsZXQgdW5jb25zdW1lZCA9IEJ1ZmZlcmluZy51bmNvbnN1bWVkIH5zaGlmdDpjb25zdW1lZCBidWZmZXJpbmcgaW5cbiAgICAgIERvbmUodW5jb25zdW1lZCwgdilcbiAgICB8IFVuYnVmZmVyZWQuRmFpbChjb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGxldCB1bmNvbnN1bWVkID0gQnVmZmVyaW5nLnVuY29uc3VtZWQgfnNoaWZ0OmNvbnN1bWVkIGJ1ZmZlcmluZyBpblxuICAgICAgRmFpbCh1bmNvbnN1bWVkLCBtYXJrcywgbXNnKVxuXG4gIGxldCBwYXJzZSA/KGluaXRpYWxfYnVmZmVyX3NpemU9MHgxMDAwKSBwID1cbiAgICBpZiBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMSB0aGVuXG4gICAgICBmYWlsd2l0aCBcInBhcnNlOiBpbnZhbGlkIGFyZ3VtZW50LCBpbml0aWFsX2J1ZmZlcl9zaXplIDwgMVwiO1xuICAgIGxldCBidWZmZXJpbmcgPSBCdWZmZXJpbmcuY3JlYXRlIGluaXRpYWxfYnVmZmVyX3NpemUgaW5cbiAgICBsZXQgcmVjIGYgcCBpbnB1dCA9XG4gICAgICBCdWZmZXJpbmcuc2hpZnQgYnVmZmVyaW5nIHAuY29tbWl0dGVkO1xuICAgICAgbGV0IG1vcmUgOiBNb3JlLnQgPVxuICAgICAgICBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICAgIHwgYEVvZiAgICAgICAgICAgIC0+IENvbXBsZXRlXG4gICAgICAgIHwgI2lucHV0IGFzIGlucHV0IC0+XG4gICAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICAgIEluY29tcGxldGVcbiAgICAgIGluXG4gICAgICBsZXQgZm9yX3JlYWRpbmcgPSBCdWZmZXJpbmcuZm9yX3JlYWRpbmcgYnVmZmVyaW5nIGluXG4gICAgICBwLmNvbnRpbnVlIGZvcl9yZWFkaW5nIH5vZmY6MCB+bGVuOihCaWdzdHJpbmdhZi5sZW5ndGggZm9yX3JlYWRpbmcpIG1vcmVcbiAgICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcbiAgICBpblxuICAgIFVuYnVmZmVyZWQucGFyc2UgcFxuICAgIHw+IGZyb21fdW5idWZmZXJlZF9zdGF0ZSBidWZmZXJpbmcgfmZcblxuICBsZXQgZmVlZCBzdGF0ZSBpbnB1dCA9XG4gICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgIHwgUGFydGlhbCBrIC0+IGsgaW5wdXRcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgbWFya3MsIG1zZykgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGlucHV0IHdpdGhcbiAgICAgIHwgYEVvZiAgIC0+IHN0YXRlXG4gICAgICB8ICNpbnB1dCBhcyBpbnB1dCAtPlxuICAgICAgICBsZXQgYnVmZmVyaW5nID0gQnVmZmVyaW5nLm9mX3VuY29uc3VtZWQgdW5jb25zdW1lZCBpblxuICAgICAgICBCdWZmZXJpbmcuZmVlZF9pbnB1dCBidWZmZXJpbmcgaW5wdXQ7XG4gICAgICAgIEZhaWwoQnVmZmVyaW5nLnVuY29uc3VtZWQgYnVmZmVyaW5nLCBtYXJrcywgbXNnKVxuICAgICAgZW5kXG4gICAgfCBEb25lKHVuY29uc3VtZWQsIHYpIC0+XG4gICAgICBiZWdpbiBtYXRjaCBpbnB1dCB3aXRoXG4gICAgICB8IGBFb2YgICAtPiBzdGF0ZVxuICAgICAgfCAjaW5wdXQgYXMgaW5wdXQgLT5cbiAgICAgICAgbGV0IGJ1ZmZlcmluZyA9IEJ1ZmZlcmluZy5vZl91bmNvbnN1bWVkIHVuY29uc3VtZWQgaW5cbiAgICAgICAgQnVmZmVyaW5nLmZlZWRfaW5wdXQgYnVmZmVyaW5nIGlucHV0O1xuICAgICAgICBEb25lKEJ1ZmZlcmluZy51bmNvbnN1bWVkIGJ1ZmZlcmluZywgdilcbiAgICAgIGVuZFxuXG4gIGxldCBzdGF0ZV90b19vcHRpb24gPSBmdW5jdGlvblxuICAgIHwgRG9uZShfLCB2KSAtPiBTb21lIHZcbiAgICB8IFBhcnRpYWwgXyAgLT4gTm9uZVxuICAgIHwgRmFpbCBfICAgICAtPiBOb25lXG5cbiAgbGV0IHN0YXRlX3RvX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgIC0+IEVycm9yIFwiaW5jb21wbGV0ZSBpbnB1dFwiXG4gICAgfCBEb25lKF8sIHYpICAgICAgICAgIC0+IE9rIHZcbiAgICB8IEZhaWwoXywgbWFya3MsIG1zZykgLT4gRXJyb3IgKFVuYnVmZmVyZWQuZmFpbF90b19zdHJpbmcgbWFya3MgbXNnKVxuXG4gIGxldCBzdGF0ZV90b191bmNvbnN1bWVkID0gZnVuY3Rpb25cbiAgICB8IERvbmUodW5jb25zdW1lZCwgXylcbiAgICB8IEZhaWwodW5jb25zdW1lZCwgXywgXykgLT4gU29tZSB1bmNvbnN1bWVkXG4gICAgfCBQYXJ0aWFsIF8gICAgICAgICAgICAgIC0+IE5vbmVcblxuZW5kXG5cbigqKiBCRUdJTjogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgcmVjIHByb21wdCBpbnB1dCBwb3MgZmFpbCBzdWNjID1cbiAgKCogW3Byb21wdF0gc2hvdWxkIG9ubHkgY2FsbCBbc3VjY10gaWYgaXQgaGFzIHJlY2VpdmVkIG1vcmUgaW5wdXQuIElmIHRoZXJlXG4gICAqIGlzIG5vIGNoYW5jZSB0aGF0IHRoZSBpbnB1dCB3aWxsIGdyb3csIGkuZS4sIFttb3JlID0gQ29tcGxldGVdLCB0aGVuXG4gICAqIFtwcm9tcHRdIHNob3VsZCBjYWxsIFtmYWlsXS4gT3RoZXJ3aXNlIChpbiB0aGUgY2FzZSB3aGVyZSB0aGUgaW5wdXRcbiAgICogaGFzbid0IGdyb3duIGJ1dCBbbW9yZSA9IEluY29tcGxldGVdIGp1c3QgcHJvbXB0IGFnYWluLiAqKVxuICBsZXQgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIGlucHV0IGluXG4gIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgPSBJbnB1dC5wYXJzZXJfY29tbWl0dGVkX2J5dGVzICAgaW5wdXQgaW5cbiAgKCogVGhlIGNvbnRpbnVhdGlvbiBzaG91bGQgbm90IGhvbGQgYW55IHJlZmVyZW5jZXMgdG8gaW5wdXQgYWJvdmUuICopXG4gIGxldCBjb250aW51ZSBpbnB1dCB+b2ZmIH5sZW4gbW9yZSA9XG4gICAgaWYgbGVuIDwgcGFyc2VyX3VuY29tbWl0dGVkX2J5dGVzIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwicHJvbXB0OiBpbnB1dCBzaHJ1bmshXCI7XG4gICAgbGV0IGlucHV0ID0gSW5wdXQuY3JlYXRlIGlucHV0IH5vZmYgfmxlbiB+Y29tbWl0dGVkX2J5dGVzOnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5cbiAgICBpZiBsZW4gPSBwYXJzZXJfdW5jb21taXR0ZWRfYnl0ZXMgdGhlblxuICAgICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICAgIHwgQ29tcGxldGUgICAtPiBmYWlsIGlucHV0IHBvcyBNb3JlLkNvbXBsZXRlXG4gICAgICB8IEluY29tcGxldGUgLT4gcHJvbXB0IGlucHV0IHBvcyBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBzdWNjIGlucHV0IHBvcyBtb3JlXG4gIGluXG4gIFN0YXRlLlBhcnRpYWwgeyBjb21taXR0ZWQgPSBJbnB1dC5ieXRlc19mb3JfY2xpZW50X3RvX2NvbW1pdCBpbnB1dDsgY29udGludWUgfVxuXG5sZXQgZGVtYW5kX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbWF0Y2ggKG1vcmUgOiBNb3JlLnQpIHdpdGhcbiAgICB8IENvbXBsZXRlICAgLT4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIlxuICAgIHwgSW5jb21wbGV0ZSAtPlxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnID0gc3VjYyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID0gZmFpbCBpbnB1dCcgcG9zJyBtb3JlJyBbXSBcIm5vdCBlbm91Z2ggaW5wdXRcIiBpblxuICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICB9XG5cbmxldCBlbnN1cmVfc3VzcGVuZGVkIG4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjID1cbiAgbGV0IHJlYyBnbyA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYycgLT5cbiAgICAgIGlmIHBvcycgKyBuIDw9IElucHV0Lmxlbmd0aCBpbnB1dCcgdGhlblxuICAgICAgICBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyAoKVxuICAgICAgZWxzZVxuICAgICAgICAoZGVtYW5kX2lucHV0ICo+IGdvKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCcgc3VjYydcbiAgICB9XG4gIGluXG4gIChkZW1hbmRfaW5wdXQgKj4gZ28pLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcblxubGV0IHVuc2FmZV9hcHBseSBsZW4gfmYgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mKVxuICB9XG5cbmxldCB1bnNhZmVfYXBwbHlfb3B0IGxlbiB+ZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIG1hdGNoIElucHV0LmFwcGx5IGlucHV0IHBvcyBsZW4gfmYgd2l0aFxuICAgIHwgRXJyb3IgZSAtPiBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIGVcbiAgICB8IE9rICAgIHggLT4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIHhcbiAgfVxuXG5sZXQgZW5zdXJlIG4gcCA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGlmIHBvcyArIG4gPD0gSW5wdXQubGVuZ3RoIGlucHV0XG4gICAgdGhlbiBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICBlbHNlXG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgKCkgPSBwLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2MgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgbiBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxuKCoqIEVORDogZ2V0dGluZyBpbnB1dCAqKVxuXG5sZXQgYXRfZW5kX29mX2lucHV0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgXyBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgZmFsc2VcbiAgICBlbHNlIG1hdGNoIG1vcmUgd2l0aFxuICAgIHwgQ29tcGxldGUgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSB0cnVlXG4gICAgfCBJbmNvbXBsZXRlIC0+XG4gICAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIGZhbHNlXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPSBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIHRydWUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG5sZXQgZW5kX29mX2lucHV0ID1cbiAgYXRfZW5kX29mX2lucHV0XG4gID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAgLT4gcmV0dXJuICgpXG4gICAgfCBmYWxzZSAtPiBmYWlsIFwiZW5kX29mX2lucHV0XCJcblxubGV0IGFkdmFuY2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImFkdmFuY2VcIlxuICBlbHNlXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPiBzdWNjIGlucHV0IChwb3MgKyBuKSBtb3JlICgpIH1cbiAgICBpblxuICAgIGVuc3VyZSBuIHBcblxubGV0IHBvcyA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT4gc3VjYyBpbnB1dCBwb3MgbW9yZSBwb3MgfVxuXG5sZXQgYXZhaWxhYmxlID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0Lmxlbmd0aCBpbnB1dCAtIHBvcylcbiAgfVxuXG5sZXQgY29tbWl0ID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgIElucHV0LmNvbW1pdCBpbnB1dCBwb3M7XG4gICAgc3VjYyBpbnB1dCBwb3MgbW9yZSAoKSB9XG5cbigqIERvIG5vdCB1c2UgdGhpcyBpZiBbcF0gY29udGFpbnMgYSBbY29tbWl0XS4gKilcbmxldCB1bnNhZmVfbG9va2FoZWFkIHAgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3VjYycgaW5wdXQnIF8gbW9yZScgdiA9IHN1Y2MgaW5wdXQnIHBvcyBtb3JlJyB2IGluXG4gICAgcC5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjJyB9XG5cbmxldCBwZWVrX2NoYXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBfZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpKVxuICAgIGVsc2UgaWYgbW9yZSA9IENvbXBsZXRlIHRoZW5cbiAgICAgIHN1Y2MgaW5wdXQgcG9zIG1vcmUgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgKFNvbWUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCcgcG9zJykpXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyBwb3MnIG1vcmUnIE5vbmUgaW5cbiAgICAgIHByb21wdCBpbnB1dCBwb3MgZmFpbCcgc3VjYydcbiAgfVxuXG4oKiBUaGlzIHBhcnNlciBpcyB0b28gaW1wb3J0YW50IHRvIG5vdCBiZSBvcHRpbWl6ZWQuIERvIGEgY3VzdG9tIGpvYi4gKilcbmxldCByZWMgcGVla19jaGFyX2ZhaWwgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBpZiBwb3MgPCBJbnB1dC5sZW5ndGggaW5wdXRcbiAgICB0aGVuIHN1Y2MgaW5wdXQgcG9zIG1vcmUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgcGVla19jaGFyX2ZhaWwucnVuIGlucHV0JyBwb3MnIG1vcmUnIGZhaWwgc3VjYyBpblxuICAgICAgZW5zdXJlX3N1c3BlbmRlZCAxIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYycgfVxuXG5sZXQgc2F0aXNmeSBmID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgaWYgcG9zIDwgSW5wdXQubGVuZ3RoIGlucHV0IHRoZW5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgaWYgZiBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBQcmludGYua3NwcmludGYgKGZhaWwgaW5wdXQgcG9zIG1vcmUgW10pIFwic2F0aXNmeTogJUNcIiBjXG4gICAgZWxzZVxuICAgICAgbGV0IHN1Y2MnIGlucHV0JyBwb3MnIG1vcmUnICgpID1cbiAgICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQnIHBvcycgaW5cbiAgICAgICAgaWYgZiBjXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCcgKHBvcycgKyAxKSBtb3JlJyBjXG4gICAgICAgIGVsc2UgUHJpbnRmLmtzcHJpbnRmIChmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdKSBcInNhdGlzZnk6ICVDXCIgY1xuICAgICAgaW5cbiAgICAgIGVuc3VyZV9zdXNwZW5kZWQgMSBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnIH1cblxubGV0IGNoYXIgYyA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MgPSBjXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgY1xuICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIChQcmludGYuc3ByaW50ZiBcImNoYXIgJUNcIiBjKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IG5vdF9jaGFyIGMgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICBsZXQgYycgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBpZiBjIDw+IGMnXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgYydcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSAoUHJpbnRmLnNwcmludGYgXCJub3QgY2hhciAlQ1wiIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2NoYXIgPVxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcykgIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgaW50OCBpID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpIGluXG4gICAgICBpZiBjID0gaSBsYW5kIDB4ZmZcbiAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSBjXG4gICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gKFByaW50Zi5zcHJpbnRmIFwiaW50OCAlZFwiIGkpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X3VpbnQ4ID1cbiAgbGV0IHAgPVxuICAgIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIF9mYWlsIHN1Y2MgLT5cbiAgICAgIGxldCBjID0gSW5wdXQudW5zYWZlX2dldF9jaGFyIGlucHV0IHBvcyBpblxuICAgICAgc3VjYyBpbnB1dCAocG9zICsgMSkgbW9yZSAoQ2hhci5jb2RlIGMpIH1cbiAgaW5cbiAgZW5zdXJlIDEgcFxuXG5sZXQgYW55X2ludDggPVxuICAoKiBodHRwczovL2dyYXBoaWNzLnN0YW5mb3JkLmVkdS9+c2VhbmRlci9iaXRoYWNrcy5odG1sI1ZhcmlhYmxlU2lnbkV4dGVuZFJpc2t5ICopXG4gIGxldCBzID0gU3lzLmludF9zaXplIC0gOCBpblxuICBsZXQgcCA9XG4gICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgX2ZhaWwgc3VjYyAtPlxuICAgICAgbGV0IGMgPSBJbnB1dC51bnNhZmVfZ2V0X2NoYXIgaW5wdXQgcG9zIGluXG4gICAgICBzdWNjIGlucHV0IChwb3MgKyAxKSBtb3JlICgoQ2hhci5jb2RlIGMgbHNsIHMpIGFzciBzKSB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHNraXAgZiA9XG4gIGxldCBwID1cbiAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgIGlmIGYgKElucHV0LnVuc2FmZV9nZXRfY2hhciBpbnB1dCBwb3MpXG4gICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIDEpIG1vcmUgKClcbiAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcInNraXBcIiB9XG4gIGluXG4gIGVuc3VyZSAxIHBcblxubGV0IHJlYyBjb3VudF93aGlsZSB+aW5pdCB+ZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgbGVuICAgICAgICAgPSBJbnB1dC5jb3VudF93aGlsZSBpbnB1dCAocG9zICsgaW5pdCkgfmYgaW5cbiAgICBsZXQgaW5wdXRfbGVuICAgPSBJbnB1dC5sZW5ndGggaW5wdXQgaW5cbiAgICBsZXQgaW5pdCcgICAgICAgPSBpbml0ICsgbGVuIGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgcG9zICsgaW5pdCcgPCBpbnB1dF9sZW4gfHwgbW9yZSA9IENvbXBsZXRlXG4gICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBpbml0JykgbW9yZSAoSW5wdXQuYXBwbHkgaW5wdXQgcG9zIGluaXQnIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDppbml0JyB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgIGFuZCBmYWlsJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIHN1Y2MgaW5wdXQnIChwb3MnICsgaW5pdCcpIG1vcmUnIChJbnB1dC5hcHBseSBpbnB1dCcgcG9zJyBpbml0JyB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHJlYyBjb3VudF93aGlsZTEgfmYgfndpdGhfYnVmZmVyID1cbiAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgbGV0IGxlbiAgICAgICAgID0gSW5wdXQuY291bnRfd2hpbGUgaW5wdXQgcG9zIH5mIGluXG4gICAgbGV0IGlucHV0X2xlbiAgID0gSW5wdXQubGVuZ3RoIGlucHV0IGluXG4gICAgKCogQ2hlY2sgaWYgdGhlIGxvb3AgdGVybWluYXRlZCBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXRcbiAgICAgKiBidWZmZXIuIElmIHNvLCB0aGVuIHByb21wdCBmb3IgYWRkaXRpb25hbCBpbnB1dCBhbmQgY29udGludWUuICopXG4gICAgaWYgbGVuIDwgMVxuICAgIHRoZW5cbiAgICAgIGlmIHBvcyA8IGlucHV0X2xlbiB8fCBtb3JlID0gQ29tcGxldGVcbiAgICAgIHRoZW4gZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcImNvdW50X3doaWxlMVwiXG4gICAgICBlbHNlXG4gICAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgICAgKGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXIpLnJ1biBpbnB1dCcgcG9zJyBtb3JlJyBmYWlsIHN1Y2NcbiAgICAgICAgYW5kIGZhaWwnIGlucHV0JyBwb3MnIG1vcmUnID1cbiAgICAgICAgICBmYWlsIGlucHV0JyBwb3MnIG1vcmUnIFtdIFwiY291bnRfd2hpbGUxXCJcbiAgICAgICAgaW5cbiAgICAgICAgcHJvbXB0IGlucHV0IHBvcyBmYWlsJyBzdWNjJ1xuICAgIGVsc2UgaWYgcG9zICsgbGVuIDwgaW5wdXRfbGVuIHx8IG1vcmUgPSBDb21wbGV0ZVxuICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgbGVuKSBtb3JlIChJbnB1dC5hcHBseSBpbnB1dCBwb3MgbGVuIH5mOndpdGhfYnVmZmVyKVxuICAgIGVsc2VcbiAgICAgIGxldCBzdWNjJyBpbnB1dCcgcG9zJyBtb3JlJyA9XG4gICAgICAgIChjb3VudF93aGlsZSB+aW5pdDpsZW4gfmYgfndpdGhfYnVmZmVyKS5ydW4gaW5wdXQnIHBvcycgbW9yZScgZmFpbCBzdWNjXG4gICAgICBhbmQgZmFpbCcgaW5wdXQnIHBvcycgbW9yZScgPVxuICAgICAgICBzdWNjIGlucHV0JyAocG9zJyArIGxlbikgbW9yZScgKElucHV0LmFwcGx5IGlucHV0JyBwb3MnIGxlbiB+Zjp3aXRoX2J1ZmZlcilcbiAgICAgIGluXG4gICAgICBwcm9tcHQgaW5wdXQgcG9zIGZhaWwnIHN1Y2MnXG4gIH1cblxubGV0IHN0cmluZ18gZiBzID1cbiAgKCogWFhYKHNlbGlvcG91KTogSW5lZmZpY2llbnQuIENvdWxkIGNoZWNrIHByZWZpeCBlcXVhbGl0eSB0byBzaG9ydC1jaXJjdWl0XG4gICAqIHRoZSBpby4gKilcbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBlbnN1cmUgIGxlbiAodW5zYWZlX2FwcGx5X29wdCBsZW4gfmY6KGZ1biBidWZmZXIgfm9mZiB+bGVuIC0+XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIHdoaWxlICFpIDwgbGVuICYmIENoYXIuZXF1YWwgKGYgKEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXQgYnVmZmVyIChvZmYgKyAhaSkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGYgKFN0cmluZy51bnNhZmVfZ2V0IHMgIWkpKVxuICAgIGRvXG4gICAgICBpbmNyIGlcbiAgICBkb25lO1xuICAgIGlmIGxlbiA9ICFpXG4gICAgdGhlbiBPayAoQmlnc3RyaW5nYWYuc3Vic3RyaW5nIGJ1ZmZlciB+b2ZmIH5sZW4pXG4gICAgZWxzZSBFcnJvciBcInN0cmluZ1wiKSlcblxubGV0IHN0cmluZyBzICAgID0gc3RyaW5nXyAoZnVuIHggLT4geCkgc1xubGV0IHN0cmluZ19jaSBzID0gc3RyaW5nXyBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBza2lwX3doaWxlIGYgPVxuICBjb3VudF93aGlsZSB+aW5pdDowIH5mIH53aXRoX2J1ZmZlcjooZnVuIF8gfm9mZjpfIH5sZW46XyAtPiAoKSlcblxubGV0IHRha2UgbiA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcInRha2U6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5zdWJzdHJpbmcpXG5cbmxldCB0YWtlX2JpZ3N0cmluZyBuID1cbiAgaWYgbiA8IDBcbiAgdGhlbiBmYWlsIFwidGFrZV9iaWdzdHJpbmc6IG4gPCAwXCJcbiAgZWxzZVxuICAgIGxldCBuID0gbWF4IG4gMCBpblxuICAgIGVuc3VyZSBuICh1bnNhZmVfYXBwbHkgbiB+ZjpCaWdzdHJpbmdhZi5jb3B5KVxuXG5sZXQgdGFrZV9iaWdzdHJpbmdfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLmNvcHlcblxubGV0IHRha2VfYmlnc3RyaW5nX3doaWxlMSBmID1cbiAgY291bnRfd2hpbGUxIH5mIH53aXRoX2J1ZmZlcjpCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCB0YWtlX2JpZ3N0cmluZ190aWxsIGYgPVxuICB0YWtlX2JpZ3N0cmluZ193aGlsZSAoZnVuIGMgLT4gbm90IChmIGMpKVxuXG5sZXQgcGVla19zdHJpbmcgbiA9XG4gIHVuc2FmZV9sb29rYWhlYWQgKHRha2UgbilcblxubGV0IHRha2Vfd2hpbGUgZiA9XG4gIGNvdW50X3doaWxlIH5pbml0OjAgfmYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgdGFrZV93aGlsZTEgZiA9XG4gIGNvdW50X3doaWxlMSB+ZiB+d2l0aF9idWZmZXI6Qmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5cbmxldCB0YWtlX3RpbGwgZiA9XG4gIHRha2Vfd2hpbGUgKGZ1biBjIC0+IG5vdCAoZiBjKSlcblxubGV0IGNob2ljZSA/KGZhaWx1cmVfbXNnPVwibm8gbW9yZSBjaG9pY2VzXCIpIHBzID1cbiAgTGlzdC5mb2xkX3JpZ2h0ICg8fD4pIHBzIChmYWlsIGZhaWx1cmVfbXNnKVxuXG5sZXQgZml4X2RpcmVjdCBmID1cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAoTGF6eS5mb3JjZSBwKS5ydW4gYnVmIHBvcyBtb3JlIGZhaWwgc3VjYyB9XG4gIGluXG4gIHJcblxubGV0IGZpeF9sYXp5IH5tYXhfc3RlcHMgZiA9XG4gIGxldCBzdGVwcyA9IHJlZiBtYXhfc3RlcHMgaW5cbiAgbGV0IHJlYyBwID0gbGF6eSAoZiByKVxuICBhbmQgciA9IHsgcnVuID0gZnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBkZWNyIHN0ZXBzO1xuICAgIGlmICFzdGVwcyA8IDBcbiAgICB0aGVuIChcbiAgICAgIHN0ZXBzIDo9IG1heF9zdGVwcztcbiAgICAgIFN0YXRlLkxhenkgKGxhenkgKChMYXp5LmZvcmNlIHApLnJ1biBidWYgcG9zIG1vcmUgZmFpbCBzdWNjKSkpXG4gICAgZWxzZVxuICAgICAgKExhenkuZm9yY2UgcCkucnVuIGJ1ZiBwb3MgbW9yZSBmYWlsIHN1Y2NcbiAgICAgICAgICB9XG4gIGluXG4gIHJcblxubGV0IGZpeCA9IG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IE5hdGl2ZSAtPiBmaXhfZGlyZWN0XG4gIHwgQnl0ZWNvZGUgLT4gZml4X2RpcmVjdFxuICB8IE90aGVyIF8gLT4gZnVuIGYgLT4gZml4X2xhenkgfm1heF9zdGVwczoyMCBmXG5cbmxldCBvcHRpb24geCBwID1cbiAgcCA8fD4gcmV0dXJuIHhcblxubGV0IGNvbnMgeCB4cyA9IHggOjogeHNcblxubGV0IHJlYyBsaXN0IHBzID1cbiAgbWF0Y2ggcHMgd2l0aFxuICB8IFtdICAgIC0+IHJldHVybiBbXVxuICB8IHA6OnBzIC0+IGxpZnQyIGNvbnMgcCAobGlzdCBwcylcblxubGV0IGNvdW50IG4gcCA9XG4gIGlmIG4gPCAwXG4gIHRoZW4gZmFpbCBcImNvdW50OiBuIDwgMFwiXG4gIGVsc2VcbiAgICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgICAgfCAwIC0+IHJldHVybiBbXVxuICAgICAgfCBuIC0+IGxpZnQyIGNvbnMgcCAobG9vcCAobiAtIDEpKVxuICAgIGluXG4gICAgbG9vcCBuXG5cbmxldCBtYW55IHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgKGxpZnQyIGNvbnMgcCBtKSA8fD4gcmV0dXJuIFtdKVxuXG5sZXQgbWFueTEgcCA9XG4gIGxpZnQyIGNvbnMgcCAobWFueSBwKVxuXG5sZXQgbWFueV90aWxsIHAgdCA9XG4gIGZpeCAoZnVuIG0gLT5cbiAgICAodCAqPiByZXR1cm4gW10pIDx8PiAobGlmdDIgY29ucyBwIG0pKVxuXG5sZXQgc2VwX2J5MSBzIHAgPVxuICBmaXggKGZ1biBtIC0+XG4gICAgbGlmdDIgY29ucyBwICgocyAqPiBtKSA8fD4gcmV0dXJuIFtdKSlcblxubGV0IHNlcF9ieSBzIHAgPVxuICAobGlmdDIgY29ucyBwICgocyAqPiBzZXBfYnkxIHMgcCkgPHw+IHJldHVybiBbXSkpIDx8PiByZXR1cm4gW11cblxubGV0IHNraXBfbWFueSBwID1cbiAgZml4IChmdW4gbSAtPlxuICAgICAgKChwID4+fCBmdW4gXyAtPiB0cnVlKSA8fD4gcmV0dXJuIGZhbHNlKSA+Pj0gZnVuY3Rpb25cbiAgICAgIHwgdHJ1ZSAtPiBtXG4gICAgICB8IGZhbHNlIC0+IHJldHVybiAoKVxuICAgIClcblxubGV0IHNraXBfbWFueTEgcCA9XG4gIHAgKj4gc2tpcF9tYW55IHBcblxubGV0IGVuZF9vZl9saW5lID1cbiAgKGNoYXIgJ1xcbicgKj4gcmV0dXJuICgpKSA8fD4gKHN0cmluZyBcIlxcclxcblwiICo+IHJldHVybiAoKSkgPD8+IFwiZW5kX29mX2xpbmVcIlxuXG5sZXQgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXIgPVxuICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICBsZXQgc3RhdGUgPSByZWYgc3RhdGUgaW5cbiAgICBsZXQgcGFyc2VyID1cbiAgICAgIGNvdW50X3doaWxlIH5pbml0OjAgfmY6KGZ1biBjIC0+XG4gICAgICAgIG1hdGNoIGYgIXN0YXRlIGMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHN0YXRlJyAtPiBzdGF0ZSA6PSBzdGF0ZSc7IHRydWUpXG4gICAgICB+d2l0aF9idWZmZXJcbiAgICAgID4+fCBmdW4geCAtPiB4LCAhc3RhdGVcbiAgICBpblxuICAgIHBhcnNlci5ydW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIH1cblxubGV0IHNjYW4gc3RhdGUgZiA9XG4gIHNjYW5fIHN0YXRlIGYgfndpdGhfYnVmZmVyOkJpZ3N0cmluZ2FmLnN1YnN0cmluZ1xuXG5sZXQgc2Nhbl9zdGF0ZSBzdGF0ZSBmID1cbiAgc2Nhbl8gc3RhdGUgZiB+d2l0aF9idWZmZXI6KGZ1biBfIH5vZmY6XyB+bGVuOl8gLT4gKCkpXG4gID4+fCBmdW4gKCgpLCBzdGF0ZSkgLT4gc3RhdGVcblxubGV0IHNjYW5fc3RyaW5nIHN0YXRlIGYgPVxuICBzY2FuIHN0YXRlIGYgPj58IGZzdFxuXG5sZXQgY29uc3VtZV93aXRoIHAgZiA9XG4gIHsgcnVuID0gZnVuIGlucHV0IHBvcyBtb3JlIGZhaWwgc3VjYyAtPlxuICAgIGxldCBzdGFydCA9IHBvcyBpblxuICAgIGxldCBwYXJzZXJfY29tbWl0dGVkX2J5dGVzID0gSW5wdXQucGFyc2VyX2NvbW1pdHRlZF9ieXRlcyBpbnB1dCAgaW5cbiAgICBsZXQgc3VjYycgaW5wdXQnIHBvcycgbW9yZScgXyA9XG4gICAgICBpZiBwYXJzZXJfY29tbWl0dGVkX2J5dGVzIDw+IElucHV0LnBhcnNlcl9jb21taXR0ZWRfYnl0ZXMgaW5wdXQnXG4gICAgICB0aGVuIGZhaWwgaW5wdXQnIHBvcycgbW9yZScgW10gXCJjb25zdW1lZDogcGFyc2VyIGNvbW1pdHRlZFwiXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxlbiA9IHBvcycgLSBzdGFydCBpblxuICAgICAgICBsZXQgY29uc3VtZWQgPSBJbnB1dC5hcHBseSBpbnB1dCcgc3RhcnQgbGVuIH5mIGluXG4gICAgICAgIHN1Y2MgaW5wdXQnIHBvcycgbW9yZScgY29uc3VtZWQpXG4gICAgaW5cbiAgICBwLnJ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MnXG4gIH1cblxubGV0IGNvbnN1bWVkICAgICAgICAgICBwID0gY29uc3VtZV93aXRoIHAgQmlnc3RyaW5nYWYuc3Vic3RyaW5nXG5sZXQgY29uc3VtZWRfYmlnc3RyaW5nIHAgPSBjb25zdW1lX3dpdGggcCBCaWdzdHJpbmdhZi5jb3B5XG5cbmxldCBib3RoIGEgYiA9IGxpZnQyIChmdW4gYSBiIC0+IGEsIGIpIGEgYlxubGV0IG1hcCB0IH5mID0gdCA+PnwgZlxubGV0IGJpbmQgdCB+ZiA9IHQgPj49IGZcbmxldCBtYXAyIGEgYiB+ZiA9IGxpZnQyIGYgYSBiXG5sZXQgbWFwMyBhIGIgYyB+ZiA9IGxpZnQzIGYgYSBiIGNcbmxldCBtYXA0IGEgYiBjIGQgfmYgPSBsaWZ0NCBmIGEgYiBjIGRcblxubW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgbGV0IHJldHVybiA9IHJldHVyblxuICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgbGV0ICggPj49ICkgPSAoID4+PSApXG5cbiAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgbGV0IG1hcCA9IG1hcFxuICAgIGxldCBiaW5kID0gYmluZFxuICAgIGxldCBib3RoID0gYm90aFxuICAgIGxldCBtYXAyID0gbWFwMlxuICAgIGxldCBtYXAzID0gbWFwM1xuICAgIGxldCBtYXA0ID0gbWFwNFxuICBlbmRcbmVuZFxuXG5sZXQgKCBsZXQrICkgPSAoID4+fCApXG5sZXQgKCBsZXQqICkgPSAoID4+PSApXG5sZXQgKCBhbmQrICkgPSBib3RoXG5cbm1vZHVsZSBCRSA9IHN0cnVjdFxuICAoKiBYWFgoc2VsaW9wb3UpOiBUaGUgcGF0dGVybiBpbiBib3RoIHRoaXMgbW9kdWxlIGFuZCBbTEVdIGFyZSBhIGNvbXByb21pc2VcbiAgICogYmV0d2VlbiBlZmZpY2llbmN5IGFuZCBjb2RlIHJldXNlLiBCeSBpbmxpbmluZyBbZW5zdXJlXSB5b3UgY2FuIHJlY292ZXJcbiAgICogYWJvdXQgMiBuYW5vc2Vjb25kcyBvbiBhdmVyYWdlLiBUaGF0IG1heSBhZGQgdXAgaW4gY2VydGFpbiBhcHBsaWNhdGlvbnMuXG4gICAqXG4gICAqIFRoaXMgcGF0dGVybiBkb2VzIG5vdCBhbGxvY2F0ZSBpbiB0aGUgZmFzdCAoc3VjY2VzcykgcGF0aC5cbiAgICogKilcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9iZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJCRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfYmUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiQkUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2JlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkJFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuICBsZXQgYW55X3VpbnQxNiA9XG4gICAgZW5zdXJlIDIgKHVuc2FmZV9hcHBseSAyIH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQxNl9iZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50MTYgID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X3NpZ25fZXh0ZW5kZWRfYmUgIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQzMiAgPVxuICAgIGVuc3VyZSA0ICh1bnNhZmVfYXBwbHkgNCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MzJfYmUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDY0ID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2JlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9mbG9hdCA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50MzIuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9iZSBicyBvZmYpKSlcblxuICBsZXQgYW55X2RvdWJsZSA9XG4gICAgZW5zdXJlIDggKHVuc2FmZV9hcHBseSA4IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gSW50NjQuZmxvYXRfb2ZfYml0cyAoQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQ2NF9iZSBicyBvZmYpKSlcbmVuZFxuXG5tb2R1bGUgTEUgPSBzdHJ1Y3RcbiAgbGV0IGludDE2IG4gPVxuICAgIGxldCBieXRlcyA9IDIgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW5wdXQudW5zYWZlX2dldF9pbnQxNl9sZSBpbnB1dCBwb3MgPSAobiBsYW5kIDB4ZmZmZilcbiAgICAgICAgdGhlbiBzdWNjIGlucHV0IChwb3MgKyBieXRlcykgbW9yZSAoKVxuICAgICAgICBlbHNlIGZhaWwgaW5wdXQgcG9zIG1vcmUgW10gXCJMRS5pbnQxNlwiIH1cbiAgICBpblxuICAgIGVuc3VyZSBieXRlcyBwXG5cbiAgbGV0IGludDMyIG4gPVxuICAgIGxldCBieXRlcyA9IDQgaW5cbiAgICBsZXQgcCA9XG4gICAgICB7IHJ1biA9IGZ1biBpbnB1dCBwb3MgbW9yZSBmYWlsIHN1Y2MgLT5cbiAgICAgICAgaWYgSW50MzIuZXF1YWwgKElucHV0LnVuc2FmZV9nZXRfaW50MzJfbGUgaW5wdXQgcG9zKSBuXG4gICAgICAgIHRoZW4gc3VjYyBpbnB1dCAocG9zICsgYnl0ZXMpIG1vcmUgKClcbiAgICAgICAgZWxzZSBmYWlsIGlucHV0IHBvcyBtb3JlIFtdIFwiTEUuaW50MzJcIiB9XG4gICAgaW5cbiAgICBlbnN1cmUgYnl0ZXMgcFxuXG4gIGxldCBpbnQ2NCBuID1cbiAgICBsZXQgYnl0ZXMgPSA4IGluXG4gICAgbGV0IHAgPVxuICAgICAgeyBydW4gPSBmdW4gaW5wdXQgcG9zIG1vcmUgZmFpbCBzdWNjIC0+XG4gICAgICAgIGlmIEludDY0LmVxdWFsIChJbnB1dC51bnNhZmVfZ2V0X2ludDY0X2xlIGlucHV0IHBvcykgblxuICAgICAgICB0aGVuIHN1Y2MgaW5wdXQgKHBvcyArIGJ5dGVzKSBtb3JlICgpXG4gICAgICAgIGVsc2UgZmFpbCBpbnB1dCBwb3MgbW9yZSBbXSBcIkxFLmludDY0XCIgfVxuICAgIGluXG4gICAgZW5zdXJlIGJ5dGVzIHBcblxuXG4gIGxldCBhbnlfdWludDE2ID1cbiAgICBlbnN1cmUgMiAodW5zYWZlX2FwcGx5IDIgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDE2X2xlIGJzIG9mZikpXG5cbiAgbGV0IGFueV9pbnQxNiAgPVxuICAgIGVuc3VyZSAyICh1bnNhZmVfYXBwbHkgMiB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50MTZfc2lnbl9leHRlbmRlZF9sZSAgYnMgb2ZmKSlcblxuICBsZXQgYW55X2ludDMyICA9XG4gICAgZW5zdXJlIDQgKHVuc2FmZV9hcHBseSA0IH5mOihmdW4gYnMgfm9mZiB+bGVuOl8gLT4gQmlnc3RyaW5nYWYudW5zYWZlX2dldF9pbnQzMl9sZSBicyBvZmYpKVxuXG4gIGxldCBhbnlfaW50NjQgPVxuICAgIGVuc3VyZSA4ICh1bnNhZmVfYXBwbHkgOCB+ZjooZnVuIGJzIH5vZmYgfmxlbjpfIC0+IEJpZ3N0cmluZ2FmLnVuc2FmZV9nZXRfaW50NjRfbGUgYnMgb2ZmKSlcblxuICBsZXQgYW55X2Zsb2F0ID1cbiAgICBlbnN1cmUgNCAodW5zYWZlX2FwcGx5IDQgfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQzMi5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDMyX2xlIGJzIG9mZikpKVxuXG4gIGxldCBhbnlfZG91YmxlID1cbiAgICBlbnN1cmUgOCAodW5zYWZlX2FwcGx5IDggfmY6KGZ1biBicyB+b2ZmIH5sZW46XyAtPiBJbnQ2NC5mbG9hdF9vZl9iaXRzIChCaWdzdHJpbmdhZi51bnNhZmVfZ2V0X2ludDY0X2xlIGJzIG9mZikpKVxuZW5kXG5cbm1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcbiAgbGV0IHRha2UgbiBmID1cbiAgICBsZXQgbiA9IG1heCBuIDAgaW5cbiAgICBlbnN1cmUgbiAodW5zYWZlX2FwcGx5IG4gfmYpXG5cbiAgbGV0IHBlZWsgbiBmID1cbiAgICB1bnNhZmVfbG9va2FoZWFkICh0YWtlIG4gZilcblxuICBsZXQgdGFrZV93aGlsZSBjaGVjayBmID1cbiAgICBjb3VudF93aGlsZSB+aW5pdDowIH5mOmNoZWNrIH53aXRoX2J1ZmZlcjpmXG5cbiAgbGV0IHRha2Vfd2hpbGUxIGNoZWNrIGYgPVxuICAgIGNvdW50X3doaWxlMSB+ZjpjaGVjayB+d2l0aF9idWZmZXI6ZlxuXG4gIGxldCB0YWtlX3RpbGwgY2hlY2sgZiA9XG4gICAgdGFrZV93aGlsZSAoZnVuIGMgLT4gbm90IChjaGVjayBjKSkgZlxuZW5kXG5cbm1vZHVsZSBDb25zdW1lID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBQcmVmaXhcbiAgICB8IEFsbFxuZW5kXG5cbmxldCBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBicyA9XG4gIGxldCBwID1cbiAgICBtYXRjaCAoY29uc3VtZSA6IENvbnN1bWUudCkgd2l0aFxuICAgIHwgUHJlZml4IC0+IHBcbiAgICB8IEFsbCAtPiBwIDwqIGVuZF9vZl9pbnB1dFxuICBpblxuICBVbmJ1ZmZlcmVkLnBhcnNlX2JpZ3N0cmluZyBwIGJzXG5cbmxldCBwYXJzZV9zdHJpbmcgfmNvbnN1bWUgcCBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnMgID0gQmlnc3RyaW5nYWYuY3JlYXRlIGxlbiBpblxuICBCaWdzdHJpbmdhZi51bnNhZmVfYmxpdF9mcm9tX3N0cmluZyBzIH5zcmNfb2ZmOjAgYnMgfmRzdF9vZmY6MCB+bGVuO1xuICBwYXJzZV9iaWdzdHJpbmcgfmNvbnN1bWUgcCBic1xuIiwiKCpcbiAqIENvcHlyaWdodCAoYykgMjAxMi0yMDE0IEFuaWwgTWFkaGF2YXBlZGR5IDxhbmlsQHJlY29pbC5vcmc+XG4gKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxNCBEYXZpZCBTaGVldHMgPHNoZWV0c0BhbHVtLm1pdC5lZHU+XG4gKlxuICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XG4gKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlXG4gKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTXG4gKiBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUlxuICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFU1xuICogV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTSBMT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOXG4gKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRlxuICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cbiAqXG4gKilcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzJcIl1cblxudHlwZSBjb21wb25lbnQgPSBbXG4gIHwgYFNjaGVtZVxuICB8IGBBdXRob3JpdHlcbiAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcbiAgfCBgSG9zdCAoKiBzdWJjb21wb25lbnQgb2YgYXV0aG9yaXR5IGluIHNvbWUgc2NoZW1lcyAqKVxuICB8IGBQYXRoXG4gIHwgYFF1ZXJ5XG4gIHwgYFF1ZXJ5X2tleVxuICB8IGBRdWVyeV92YWx1ZVxuICB8IGBGcmFnbWVudFxuICB8IGBHZW5lcmljXG4gIHwgYEN1c3RvbSBvZiAoY29tcG9uZW50ICogc3RyaW5nICogc3RyaW5nKSAoKiAoY29tcG9uZW50ICogc2FmZSBjaGFycyAqIHVuc2FmZSBjaGFycykgKilcbl1cblxudHlwZSBwY3RfZW5jb2RlciA9IHtcbiAgICBzY2hlbWU6IGNvbXBvbmVudDtcbiAgICB1c2VyaW5mbzogY29tcG9uZW50O1xuICAgIGhvc3Q6IGNvbXBvbmVudDtcbiAgICBwYXRoOiBjb21wb25lbnQ7XG4gICAgcXVlcnlfa2V5OiBjb21wb25lbnQ7XG4gICAgcXVlcnlfdmFsdWU6IGNvbXBvbmVudDtcbiAgICBmcmFnbWVudDogY29tcG9uZW50O1xuICB9XG5cbmxldCByZWMgaXRlcl9jb25jYXQgZm4gc2VwIGJ1ZiA9IGZ1bmN0aW9uXG4gIHwgbGFzdDo6W10gLT4gZm4gYnVmIGxhc3RcbiAgfCBlbDo6cmVzdCAtPlxuICAgIGZuIGJ1ZiBlbDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc2VwO1xuICAgIGl0ZXJfY29uY2F0IGZuIHNlcCBidWYgcmVzdFxuICB8IFtdIC0+ICgpXG5cbmxldCByZXZfaW50ZXJqZWN0IGUgbHN0ID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdICAtPiBhY2NcbiAgICB8IHg6OnhzIC0+IGF1eCAoeDo6ZTo6YWNjKSB4c1xuICBpbiBtYXRjaCBsc3Qgd2l0aFxuICB8IFtdICAtPiBbXVxuICB8IGg6OnQgLT4gYXV4IFtoXSB0XG5cbmxldCBjb21wYXJlX29wdCBjIHQgdCcgPSBtYXRjaCB0LCB0JyB3aXRoXG4gIHwgTm9uZSwgICBOb25lICAgLT4gMFxuICB8IFNvbWUgXywgTm9uZSAgIC0+IDFcbiAgfCBOb25lLCAgIFNvbWUgXyAtPiAtMVxuICB8IFNvbWUgYSwgU29tZSBiIC0+IGMgYSBiXG5cbmxldCByZWMgY29tcGFyZV9saXN0IGYgdCB0JyA9IG1hdGNoIHQsIHQnIHdpdGhcbiAgfCBbXSwgICAgW10gICAgLT4gIDBcbiAgfCBfOjpfLCAgW10gICAgLT4gIDFcbiAgfCBbXSwgICAgXzo6XyAgLT4gLTFcbiAgfCB4Ojp4cywgeTo6eXMgLT5cbiAgICBtYXRjaCBmIHggeSB3aXRoIDAgLT4gY29tcGFyZV9saXN0IGYgeHMgeXMgfCBjIC0+IGNcblxuKCoqIFNhZmUgY2hhcmFjdGVycyB0aGF0IGFyZSBhbHdheXMgYWxsb3dlZCBpbiBhIFVSSVxuICAqIFVuZm9ydHVuYXRlbHksIHRoaXMgdmFyaWVzIGRlcGVuZGluZyBvbiB3aGljaCBiaXQgb2YgdGhlIFVSSVxuICAqIGlzIGJlaW5nIHBhcnNlZCwgc28gdGhlcmUgYXJlIG11bHRpcGxlIHZhcmlhbnRzIChhbmQgdGhpc1xuICAqIHNldCBpcyBwcm9iYWJseSBub3QgZXhoYXVzdGl2ZS4gVE9ETzogY2hlY2suXG4qKVxudHlwZSBzYWZlX2NoYXJzID0gYm9vbCBhcnJheVxuXG5tb2R1bGUgdHlwZSBTY2hlbWUgPSBzaWdcbiAgdmFsIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA6IGNvbXBvbmVudCAtPiBzYWZlX2NoYXJzXG4gIHZhbCBub3JtYWxpemVfaG9zdCA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGNhbm9uaWNhbGl6ZV9wb3J0IDogaW50IG9wdGlvbiAtPiBpbnQgb3B0aW9uXG4gIHZhbCBjYW5vbmljYWxpemVfcGF0aCA6IHN0cmluZyBsaXN0IC0+IHN0cmluZyBsaXN0XG5lbmRcblxubW9kdWxlIEdlbmVyaWMgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgbGV0IHN1Yl9kZWxpbXMgYSA9XG4gICAgbGV0IHN1YmQgPSBcIiEkJicoKSorLDs9XCIgaW5cbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdWJkIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgc3ViZC5baV0gaW5cbiAgICAgIGEuKGMpIDwtIHRydWVcbiAgICBkb25lO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFycyA6IHNhZmVfY2hhcnMgPVxuICAgIGxldCBhID0gQXJyYXkubWFrZSAyNTYgZmFsc2UgaW5cbiAgICBsZXQgYWx3YXlzX3NhZmUgPVxuICAgICAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OV8uLX5cIiBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIGFsd2F5c19zYWZlIC0gMSBkb1xuICAgICAgbGV0IGMgPSBDaGFyLmNvZGUgYWx3YXlzX3NhZmUuW2ldIGluXG4gICAgICBhLihjKSA8LSB0cnVlXG4gICAgZG9uZTtcbiAgICBhXG5cbiAgbGV0IHBjaGFyIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBzdWJfZGVsaW1zIChBcnJheS5jb3B5IHNhZmVfY2hhcnMpIGluXG4gICAgYS4oQ2hhci5jb2RlICc6JykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJ0AnKSA8LSB0cnVlO1xuICAgIGFcblxuICBsZXQgc2FmZV9jaGFyc19mb3Jfc2NoZW1lIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnMgaW5cbiAgICBhLihDaGFyLmNvZGUgJysnKSA8LSB0cnVlO1xuICAgIGFcblxuICAoKiogU2FmZSBjaGFyYWN0ZXJzIGZvciB0aGUgcGF0aCBjb21wb25lbnQgb2YgYSBVUkkgKilcbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3BhdGggOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IHN1Yl9kZWxpbXMgKEFycmF5LmNvcHkgcGNoYXIpIGluXG4gICAgKCogZGVsaW1pdGVyOiBub24tc2VnbWVudCBkZWxpbWl0aW5nIHVzZXMgc2hvdWxkIGJlIHBjdCBlbmNvZGVkICopXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeSA6IHNhZmVfY2hhcnMgPVxuICAgICgqIFRPRE86IFdoYXQgYWJvdXQge1wiIVwiLFwiJFwiLFwiLFwifT8gU2VlIDxodHRwczovL2dpdGh1Yi5jb20vYXZzbS9vY2FtbC11cmkvY29tbWl0LzFlZjNmMWRmYjQxYmRiNGYzM2YyMjNmZmUxNmU2MmEzMzk3NTY2MWEjZGlmZi03NDBmMmRlNTNjOWViMzZlOTY3MGRkZmJkYjliYTkxNFIxNzE+ICopXG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHBjaGFyIGluXG4gICAgYS4oQ2hhci5jb2RlICcvJykgPC0gdHJ1ZTtcbiAgICBhLihDaGFyLmNvZGUgJz8nKSA8LSB0cnVlO1xuICAgICgqICcmJyBpcyBzYWZlIGJ1dCB3ZSBzaG91bGQgZW5jb2RlIGxpdGVyYWxzIHRvIGF2b2lkIGFtYmlndWl0eVxuICAgICAgIHdpdGggdGhlIGFscmVhZHkgcGFyc2VkIHFzIHBhcmFtcyAqKVxuICAgIGEuKENoYXIuY29kZSAnJicpIDwtIGZhbHNlO1xuICAgICgqICc7JyBpcyBzYWZlIGJ1dCBzb21lIHN5c3RlbXMgdHJlYXQgaXQgbGlrZSAnJicuICopXG4gICAgYS4oQ2hhci5jb2RlICc7JykgPC0gZmFsc2U7XG4gICAgYS4oQ2hhci5jb2RlICcrJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXkgOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFyc19mb3JfcXVlcnkgaW5cbiAgICBhLihDaGFyLmNvZGUgJz0nKSA8LSBmYWxzZTtcbiAgICBhXG5cbiAgbGV0IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5X3ZhbHVlIDogc2FmZV9jaGFycyA9XG4gICAgbGV0IGEgPSBBcnJheS5jb3B5IHNhZmVfY2hhcnNfZm9yX3F1ZXJ5IGluXG4gICAgYS4oQ2hhci5jb2RlICcsJykgPC0gZmFsc2U7XG4gICAgYVxuXG4gIGxldCBzYWZlX2NoYXJzX2Zvcl9mcmFnbWVudCA6IHNhZmVfY2hhcnMgPSBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuXG4gICgqKiBTYWZlIGNoYXJhY3RlcnMgZm9yIHRoZSB1c2VyaW5mbyBzdWJjb21wb25lbnQgb2YgYSBVUkkuXG4gICAgICBUT0RPOiB0aGlzIG5lZWRzIG1vcmUgcmVzZXJ2ZWQgY2hhcmFjdGVycyBhZGRlZCAqKVxuICBsZXQgc2FmZV9jaGFyc19mb3JfdXNlcmluZm8gOiBzYWZlX2NoYXJzID1cbiAgICBsZXQgYSA9IEFycmF5LmNvcHkgc2FmZV9jaGFycyBpblxuICAgICgqIGRlbGltaXRlcjogbm9uLXNlZ21lbnQgZGVsaW1pdGluZyB1c2VzIHNob3VsZCBiZSBwY3QgZW5jb2RlZCAqKVxuICAgIGEuKENoYXIuY29kZSAnOicpIDwtIGZhbHNlO1xuICAgIGFcblxuICBsZXQgcmVjIHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCA9IGZ1bmN0aW9uXG4gICAgfCBgUGF0aCAtPiBzYWZlX2NoYXJzX2Zvcl9wYXRoXG4gICAgfCBgVXNlcmluZm8gLT4gc2FmZV9jaGFyc19mb3JfdXNlcmluZm9cbiAgICB8IGBRdWVyeSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeVxuICAgIHwgYFF1ZXJ5X2tleSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV9rZXlcbiAgICB8IGBRdWVyeV92YWx1ZSAtPiBzYWZlX2NoYXJzX2Zvcl9xdWVyeV92YWx1ZVxuICAgIHwgYEZyYWdtZW50IC0+IHNhZmVfY2hhcnNfZm9yX2ZyYWdtZW50XG4gICAgfCBgU2NoZW1lIC0+IHNhZmVfY2hhcnNfZm9yX3NjaGVtZVxuICAgIHwgYEN1c3RvbSAoKGNvbXBvbmVudCA6IGNvbXBvbmVudCksIHNhZmUsIHVuc2FmZSkgLT5cbiAgICAgICBsZXQgc2FmZV9jaGFycyA9IEFycmF5LmNvcHkgKHNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQpIGluXG4gICAgICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggc2FmZSAtIDEgZG9cbiAgICAgICAgIGxldCBjID0gQ2hhci5jb2RlIHNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSB0cnVlXG4gICAgICAgZG9uZTtcbiAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB1bnNhZmUgLSAxIGRvXG4gICAgICAgICBsZXQgYyA9IENoYXIuY29kZSB1bnNhZmUuW2ldIGluXG4gICAgICAgICBzYWZlX2NoYXJzLihjKSA8LSBmYWxzZVxuICAgICAgIGRvbmU7XG4gICAgICAgc2FmZV9jaGFyc1xuICAgIHwgYEdlbmVyaWNcbiAgICB8IF8gLT4gc2FmZV9jaGFyc1xuXG4gIGxldCBub3JtYWxpemVfaG9zdCBoc28gPSBoc29cblxuICBsZXQgY2Fub25pY2FsaXplX3BvcnQgcG9ydCA9IHBvcnRcbiAgbGV0IGNhbm9uaWNhbGl6ZV9wYXRoIHBhdGggPSBwYXRoXG5lbmRcblxubW9kdWxlIEh0dHAgOiBTY2hlbWUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBHZW5lcmljXG5cbiAgbGV0IG5vcm1hbGl6ZV9ob3N0IGhzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBoc1xuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgODAgLT4gTm9uZVxuICAgIHwgU29tZSB4IC0+IFNvbWUgeFxuXG4gIGxldCBjYW5vbmljYWxpemVfcGF0aCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXCIvXCJdXG4gICAgfCB4ICAtPiB4XG5lbmRcblxubW9kdWxlIEh0dHBzIDogU2NoZW1lID0gc3RydWN0XG4gIGluY2x1ZGUgSHR0cFxuXG4gIGxldCBjYW5vbmljYWxpemVfcG9ydCA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgNDQzIC0+IE5vbmVcbiAgICB8IFNvbWUgeCAtPiBTb21lIHhcbmVuZFxuXG5tb2R1bGUgRmlsZSA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgbm9ybWFsaXplX2hvc3QgaHMgPVxuICAgIGxldCBocyA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgaHMgaW5cbiAgICBpZiBocz1cImxvY2FsaG9zdFwiIHRoZW4gXCJcIiBlbHNlIGhzXG5lbmRcblxubW9kdWxlIFVybiA6IFNjaGVtZSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuZW5kXG5cbmxldCBtb2R1bGVfb2Zfc2NoZW1lID0gZnVuY3Rpb25cbiAgfCBTb21lIHMgLT4gYmVnaW4gbWF0Y2ggU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzIHdpdGhcbiAgICAgIHwgXCJodHRwXCIgLT4gKG1vZHVsZSBIdHRwIDogU2NoZW1lKVxuICAgICAgfCBcImh0dHBzXCIgIC0+IChtb2R1bGUgSHR0cHMgOiBTY2hlbWUpXG4gICAgICB8IFwiZmlsZVwiIC0+IChtb2R1bGUgRmlsZSA6IFNjaGVtZSlcbiAgICAgIHwgXCJ1cm5cIiAgLT4gKG1vZHVsZSBVcm4gOiBTY2hlbWUpXG4gICAgICB8IF8gLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuICAgIGVuZFxuICB8IE5vbmUgLT4gKG1vZHVsZSBHZW5lcmljIDogU2NoZW1lKVxuXG4oKiogUG9ydGlvbnMgb2YgdGhlIFVSTCBtdXN0IGJlIGNvbnZlcnRlZCB0by1hbmQtZnJvbSBwZXJjZW50LWVuY29kaW5nXG4gICogYW5kIHRoaXMgcmVhbGx5LCByZWFsbHkgc2hvdWxkbid0IGJlIG1peGVkIHVwLiBTbyB0aGlzIFBjdCBtb2R1bGVcbiAgKiBkZWZpbmVzIGFic3RyYWN0IFBjdC5lbmNvZGVkIGFuZCBQY3QuZGVjb2RlZCB0eXBlcyB3aGljaCBzZXRzIHRoZVxuICAqIHN0YXRlIG9mIHRoZSB1bmRlcmx5aW5nIHN0cmluZy4gIFRoZXJlIGFyZSBmdW5jdGlvbnMgdG8gXCJjYXN0XCIgdG9cbiAgKiBhbmQgZnJvbSB0aGVzZSBhbmQgbm9ybWFsIHN0cmluZ3MsIGFuZCB0aGlzIHByb21vdGVzIGEgYml0IG9mXG4gICogaW50ZXJuYWwgc2FmZXR5LiAgVGhlc2UgdHlwZXMgYXJlIG5vdCBleHBvc2VkIHRvIHRoZSBleHRlcm5hbFxuICAqIGludGVyZmFjZSwgYXMgY2FzdGluZyB0by1hbmQtZnJvbSBpcyBxdWl0ZSBhIGJpdCBvZiBoYXNzbGUgYW5kXG4gICogcHJvYmFibHkgbm90IGEgbG90IG9mIHVzZSB0byB0aGUgYXZlcmFnZSBjb25zdW1lciBvZiB0aGlzIGxpYnJhcnlcbiopXG5tb2R1bGUgUGN0IDogc2lnXG4gIHR5cGUgZW5jb2RlZFxuICB0eXBlIGRlY29kZWRcblxuICB2YWwgZW5jb2RlIDogP3NjaGVtZTpzdHJpbmcgLT4gP2NvbXBvbmVudDpjb21wb25lbnQgLT4gZGVjb2RlZCAtPiBlbmNvZGVkXG4gIHZhbCBkZWNvZGUgOiBlbmNvZGVkIC0+IGRlY29kZWRcblxuICAoKiBUaGUgZW1wdHkgZGVjb2RlZCBzdHJpbmcgKilcbiAgdmFsIGVtcHR5X2RlY29kZWQgOiBkZWNvZGVkXG4gICgqIElkZW50aXR5IGZ1bmN0aW9ucyBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgY2FzdCB3aGVuIHVzaW5nIHRoZW0gYmVsb3cgKilcbiAgdmFsIGNhc3RfZW5jb2RlZCA6IHN0cmluZyAtPiBlbmNvZGVkXG4gIHZhbCBjYXN0X2RlY29kZWQgOiBzdHJpbmcgLT4gZGVjb2RlZFxuICB2YWwgdW5jYXN0X2VuY29kZWQgOiBlbmNvZGVkIC0+IHN0cmluZ1xuICB2YWwgdW5jYXN0X2RlY29kZWQgOiBkZWNvZGVkIC0+IHN0cmluZ1xuICAoKiBMaWZ0IEhPRnMgZm9yIG1hcHMgb3ZlciBlbmNvZGluZ3MsIGRlY29kaW5ncywgYW5kIHN0cmluZ3MgKilcbiAgdmFsIGxpZnRfZW5jb2RlZCA6IChlbmNvZGVkIC0+IGVuY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIGxpZnRfZGVjb2RlZCA6IChkZWNvZGVkIC0+IGRlY29kZWQpIC0+IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHVubGlmdF9lbmNvZGVkIDogKHN0cmluZyAtPiBzdHJpbmcpIC0+IGVuY29kZWQgLT4gZW5jb2RlZFxuICB2YWwgdW5saWZ0X2RlY29kZWQgOiAoc3RyaW5nIC0+IHN0cmluZykgLT4gZGVjb2RlZCAtPiBkZWNvZGVkXG4gIHZhbCB1bmxpZnRfZGVjb2RlZDIgOiAoc3RyaW5nIC0+IHN0cmluZyAtPiAnYSkgLT4gZGVjb2RlZCAtPiBkZWNvZGVkIC0+ICdhXG5lbmQgPSBzdHJ1Y3RcbiAgdHlwZSBlbmNvZGVkID0gc3RyaW5nXG4gIHR5cGUgZGVjb2RlZCA9IHN0cmluZ1xuICBsZXQgY2FzdF9lbmNvZGVkIHggPSB4XG4gIGxldCBjYXN0X2RlY29kZWQgeCA9IHhcbiAgbGV0IGVtcHR5X2RlY29kZWQgPSBcIlwiXG4gIGxldCB1bmNhc3RfZGVjb2RlZCB4ID0geFxuICBsZXQgdW5jYXN0X2VuY29kZWQgeCA9IHhcblxuICBsZXQgbGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCBsaWZ0X2RlY29kZWQgZiA9IGZcbiAgbGV0IHVubGlmdF9lbmNvZGVkIGYgPSBmXG4gIGxldCB1bmxpZnRfZGVjb2RlZCBmID0gZlxuICBsZXQgdW5saWZ0X2RlY29kZWQyIGYgPSBmXG5cbiAgKCoqIFNjYW4gZm9yIHJlc2VydmVkIGNoYXJhY3RlcnMgYW5kIHJlcGxhY2UgdGhlbSB3aXRoXG4gICAgICBwZXJjZW50LWVuY29kZWQgZXF1aXZhbGVudHMuXG4gICAgICBAcmV0dXJuIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgZW5jb2RlID9zY2hlbWUgPyhjb21wb25lbnQ9YFBhdGgpIGIgPVxuICAgIGxldCBtb2R1bGUgU2NoZW1lID0gKHZhbCAobW9kdWxlX29mX3NjaGVtZSBzY2hlbWUpIDogU2NoZW1lKSBpblxuICAgIGxldCBzYWZlX2NoYXJzID0gU2NoZW1lLnNhZmVfY2hhcnNfZm9yX2NvbXBvbmVudCBjb21wb25lbnQgaW5cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gYmVnaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBsZXQgYyA9IENoYXIuY29kZSBiLltjdXJdIGluXG4gICAgICAgIGlmIHNhZmVfY2hhcnMuKGMpIHRoZW5cbiAgICAgICAgICBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgIGlmIGN1ciA+IHN0YXJ0IHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydCk7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQcmludGYuc3ByaW50ZiBcIiUlJTAyWFwiIGMpO1xuICAgICAgICAgIHNjYW4gKGN1cisxKSAoY3VyKzEpXG4gICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgaW5cbiAgICBzY2FuIDAgMDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IGludF9vZl9oZXhfY2hhciBjID1cbiAgICBsZXQgYyA9IGludF9vZl9jaGFyIChDaGFyLnVwcGVyY2FzZV9hc2NpaSBjKSAtIDQ4IGluXG4gICAgaWYgYyA+IDlcbiAgICB0aGVuIGlmIGMgPiAxNiAmJiBjIDwgMjNcbiAgICAgIHRoZW4gYyAtIDdcbiAgICAgIGVsc2UgZmFpbHdpdGggXCJpbnRfb2ZfaGV4X2NoYXJcIlxuICAgIGVsc2UgaWYgYyA+PSAwXG4gICAgdGhlbiBjXG4gICAgZWxzZSBmYWlsd2l0aCBcImludF9vZl9oZXhfY2hhclwiXG5cbiAgKCoqIFNjYW4gZm9yIHBlcmNlbnQtZW5jb2RpbmcgYW5kIGNvbnZlcnQgdGhlbSBpbnRvIEFTQ0lJLlxuICAgICAgQHJldHVybiBhIHBlcmNlbnQtZGVjb2RlZCBzdHJpbmcgKilcbiAgbGV0IGRlY29kZSBiID1cbiAgICAoKiBUT0RPOiBTaG91bGQgYm90aCBzdHJpY3QgYW5kIG5vbi1zdHJpY3QgdmVyc2lvbnMgYmUgZXhwb3NlZD8gKilcbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBiIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBzY2FuIHN0YXJ0IGN1ciA9XG4gICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIGIgc3RhcnQgKGN1ci1zdGFydClcbiAgICAgIGVsc2UgaWYgYi5bY3VyXSA9ICclJyB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBiIHN0YXJ0IChjdXItc3RhcnQpO1xuICAgICAgICBsZXQgY3VyID0gY3VyICsgMSBpblxuICAgICAgICBpZiBjdXIgPj0gbGVuIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnJSdcbiAgICAgICAgZWxzZSBtYXRjaCBpbnRfb2ZfaGV4X2NoYXIgYi5bY3VyXSB3aXRoXG4gICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICBzY2FuIGN1ciBjdXJcbiAgICAgICAgfCBoaWdoYml0cyAtPiBiZWdpblxuICAgICAgICAgIGxldCBjdXIgPSBjdXIgKyAxIGluXG4gICAgICAgICAgaWYgY3VyID49IGxlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgYi5bY3VyLTFdXG4gICAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIGxldCBzdGFydF9hdCA9XG4gICAgICAgICAgICAgIG1hdGNoIGludF9vZl9oZXhfY2hhciBiLltjdXJdIHdpdGhcbiAgICAgICAgICAgICAgfCBsb3diaXRzIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgKGhpZ2hiaXRzIGxzbCA0ICsgbG93Yml0cykpO1xuICAgICAgICAgICAgICAgIGN1cisxXG4gICAgICAgICAgICAgIHwgZXhjZXB0aW9uIF8gLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICclJztcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGIuW2N1ci0xXTtcbiAgICAgICAgICAgICAgICBjdXJcbiAgICAgICAgICAgIGluIHNjYW4gc3RhcnRfYXQgc3RhcnRfYXRcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZSBzY2FuIHN0YXJ0IChjdXIrMSlcbiAgICBpblxuICAgIHNjYW4gMCAwO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcbmVuZFxuXG4oKiBQZXJjZW50IGVuY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9lbmNvZGUgP3NjaGVtZSA/KGNvbXBvbmVudD1gUGF0aCkgcyA9XG4gIFBjdC4odW5jYXN0X2VuY29kZWQgKGVuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgKGNhc3RfZGVjb2RlZCBzKSkpXG5cbmxldCBwY3RfZW5jb2RlclxuICAgICAgPyhzY2hlbWU9YFNjaGVtZSlcbiAgICAgID8odXNlcmluZm89YFVzZXJpbmZvKVxuICAgICAgPyhob3N0PWBIb3N0KVxuICAgICAgPyhwYXRoPWBQYXRoKVxuICAgICAgPyhxdWVyeV9rZXk9YFF1ZXJ5X2tleSlcbiAgICAgID8ocXVlcnlfdmFsdWU9YFF1ZXJ5X3ZhbHVlKVxuICAgICAgPyhmcmFnbWVudD1gRnJhZ21lbnQpXG4gICAgICAoKSA9XG4gIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcGF0aDsgcXVlcnlfa2V5OyBxdWVyeV92YWx1ZTsgZnJhZ21lbnQgfVxuXG4oKiBQZXJjZW50IGRlY29kZSBhIHN0cmluZyAqKVxubGV0IHBjdF9kZWNvZGUgcyA9IFBjdC4odW5jYXN0X2RlY29kZWQgKGRlY29kZSAoY2FzdF9lbmNvZGVkIHMpKSlcblxuKCogVXNlcmluZm8gc3RyaW5nIGhhbmRsaW5nLCB0byBhbmQgZnJvbSBhbiBpZCAqIGNyZWRlbnRpYWwgcGFpciAqKVxubW9kdWxlIFVzZXJpbmZvID0gc3RydWN0XG4gIHR5cGUgdCA9IHN0cmluZyAqIHN0cmluZyBvcHRpb25cblxuICBsZXQgY29tcGFyZSAodSxwKSAodScscCcpID1cbiAgICBtYXRjaCBTdHJpbmcuY29tcGFyZSB1IHUnIHdpdGhcbiAgICB8IDAgLT4gY29tcGFyZV9vcHQgU3RyaW5nLmNvbXBhcmUgcCBwJ1xuICAgIHwgYyAtPiBjXG5cbiAgbGV0IHVzZXJpbmZvX29mX2VuY29kZWQgdXMgPVxuICAgIG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+bWF4OjIgfm9uOic6JyB1cyB3aXRoXG4gICAgfCBbXSAtPiAoXCJcIixOb25lKVxuICAgIHwgW3VdIC0+IChwY3RfZGVjb2RlIHUsTm9uZSlcbiAgICB8IHU6OnA6Ol8gLT4gKHBjdF9kZWNvZGUgdSxTb21lIChwY3RfZGVjb2RlIHApKVxuXG4gIGxldCBlbmNvZGVkX29mX3VzZXJpbmZvID9zY2hlbWUgfmNvbXBvbmVudCAodSxwbykgPVxuICAgIGxldCBsZW4gPSBTdHJpbmcuKFxuICAgICAgMSArIChsZW5ndGggdSkgKyAobWF0Y2ggcG8gd2l0aCBOb25lIC0+IDAgfCBTb21lIHAgLT4gbGVuZ3RoIHApKVxuICAgIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCB1KTtcbiAgICBiZWdpbiBtYXRjaCBwbyB3aXRoIE5vbmUgLT4gKCk7XG4gICAgfCBTb21lIHAgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJzonO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudCBwKVxuICAgIGVuZDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuZW5kXG5cbmxldCB1c2VyaW5mb19vZl9lbmNvZGVkID0gVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZFxubGV0IGVuY29kZWRfb2ZfdXNlcmluZm8gP3NjaGVtZSB+Y29tcG9uZW50ID0gVXNlcmluZm8uZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnRcblxuKCogUGF0aCBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGEgbGlzdCBvZiBwYXRoIHRva2VucyAqKVxubW9kdWxlIFBhdGggPSBzdHJ1Y3RcbiAgKCogSW52YXJpYW50OiBldmVyeSBlbGVtZW50IGlzIG5vbi16ZXJvLCBzbGFzaGVzICgvKSBvbmx5IG9jY3VyIGFsb25lLiAqKVxuICAoKiBZZXMsIGl0J3MgYmV0dGVyIHRoaXMgd2F5LiBUaGlzIG1lYW5zIHlvdSBjYW4gcmV0YWluIHNlcGFyYXRvclxuICAgICBjb250ZXh0IGluIHJlY3Vyc2lvbiAoZS5nLiByZW1vdmVfZG90X3NlZ21lbnRzIGZvciByZWxhdGl2ZSByZXNvbHV0aW9uKS4gKilcblxuICB0eXBlIHQgPSBzdHJpbmcgbGlzdFxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZV9saXN0IFN0cmluZy5jb21wYXJlXG5cbiAgKCogTWFrZSBhIHBhdGggdG9rZW4gbGlzdCBmcm9tIGEgcGVyY2VudC1lbmNvZGVkIHN0cmluZyAqKVxuICBsZXQgcGF0aF9vZl9lbmNvZGVkIHBzID1cbiAgICBsZXQgdG9rbCA9IFN0cmluZ2V4dC5mdWxsX3NwbGl0IHBzIH5vbjonLycgaW5cbiAgICBMaXN0Lm1hcCBwY3RfZGVjb2RlIHRva2xcblxuICAoKiBTdWJyb3V0aW5lIGZvciByZXNvbHZlIDxodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQ+ICopXG4gIGxldCByZW1vdmVfZG90X3NlZ21lbnRzIHAgPVxuICAgIGxldCByZXZwID0gTGlzdC5yZXYgcCBpblxuICAgIGxldCByZWMgbG9vcCBhc2NlbnNpb24gb3V0cCA9IGZ1bmN0aW9uXG4gICAgICB8IFwiL1wiOjpcIi4uXCI6OnIgfCBcIi4uXCI6OnIgLT4gbG9vcCAoYXNjZW5zaW9uICsgMSkgb3V0cCByXG4gICAgICB8IFwiL1wiOjpcIi5cIjo6ciAgfCBcIi5cIjo6ciAgLT4gbG9vcCBhc2NlbnNpb24gb3V0cCByXG4gICAgICB8IFwiL1wiOjpbXSB8IFtdIHdoZW4gTGlzdC4obGVuZ3RoIHAgPiAwICYmIGhkIHAgPSBcIi9cIikgLT4gXCIvXCI6Om91dHBcbiAgICAgIHwgW10gd2hlbiBhc2NlbnNpb24gPiAwIC0+IExpc3QucmV2X2FwcGVuZFxuICAgICAgICAoXCIvXCI6OihyZXZfaW50ZXJqZWN0IFwiL1wiIEFycmF5Lih0b19saXN0IChtYWtlIGFzY2Vuc2lvbiBcIi4uXCIpKSkpIG91dHBcbiAgICAgIHwgW10gLT4gTGlzdC4oaWYgbGVuZ3RoIG91dHAgPiAwICYmIGhkIG91dHAgPSBcIi9cIiB0aGVuIHRsIG91dHAgZWxzZSBvdXRwKVxuICAgICAgfCBcIi9cIjo6XCIvXCI6OnIgd2hlbiBhc2NlbnNpb24gPiAwIC0+IGxvb3AgKGFzY2Vuc2lvbiAtIDEpIG91dHAgKFwiL1wiOjpyKVxuICAgICAgfCBcIi9cIjo6Xzo6ciB3aGVuIGFzY2Vuc2lvbiA+IDAgLT4gbG9vcCAoYXNjZW5zaW9uIC0gMSkgb3V0cCByXG4gICAgICB8IHM6OnIgLT4gbG9vcCAwIChzOjpvdXRwKSByXG4gICAgaW4gbG9vcCAwIFtdIHJldnBcblxuICBsZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCBwID1cbiAgICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBjIHRvayAtPiBTdHJpbmcubGVuZ3RoIHRvayArIGMpIDAgcCBpblxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIGl0ZXJfY29uY2F0IChmdW4gYnVmIC0+IGZ1bmN0aW9uXG4gICAgfCBcIi9cIiAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgIHwgc2VnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQgc2VnKVxuICAgICkgXCJcIiBidWYgcDtcbiAgICBQY3QuY2FzdF9lbmNvZGVkIChCdWZmZXIuY29udGVudHMgYnVmKVxuXG4gICgqIFN1YnJvdXRpbmUgZm9yIHJlc29sdmUgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuMz4gKilcbiAgbGV0IG1lcmdlIGJob3N0IGJwYXRoIHJlbHBhdGggPVxuICAgIG1hdGNoIGJob3N0LCBMaXN0LnJldiBicGF0aCB3aXRoXG4gICAgfCBTb21lIF8sIFtdIC0+IFwiL1wiOjpyZWxwYXRoXG4gICAgfCBfLCAoXCIvXCI6OnJicGF0aCB8IF86OlwiL1wiOjpyYnBhdGgpIC0+IExpc3QucmV2X2FwcGVuZCAoXCIvXCI6OnJicGF0aCkgcmVscGF0aFxuICAgIHwgXywgXyAtPiByZWxwYXRoXG5lbmRcblxubGV0IHBhdGhfb2ZfZW5jb2RlZCA9IFBhdGgucGF0aF9vZl9lbmNvZGVkXG5sZXQgZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudCA9IFBhdGguZW5jb2RlZF9vZl9wYXRoID9zY2hlbWUgfmNvbXBvbmVudFxuXG4oKiBRdWVyeSBzdHJpbmcgaGFuZGxpbmcsIHRvIGFuZCBmcm9tIGFuIGFzc29jIGxpc3Qgb2Yga2V5L3ZhbHVlcyAqKVxubW9kdWxlIFF1ZXJ5ID0gc3RydWN0XG5cbiAgdHlwZSBrdiA9IChzdHJpbmcgKiBzdHJpbmcgbGlzdCkgbGlzdFxuXG4gIHR5cGUgdCA9XG4gICAgfCBLViBvZiBrdlxuICAgIHwgUmF3IG9mIHN0cmluZyBvcHRpb24gKiBrdiBMYXp5LnRcblxuICBsZXQgY29tcGFyZSB4IHkgPSBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IEtWIGt2bCwgS1Yga3ZsJ1xuICAgIHwgUmF3IChfLCBsYXp5IGt2bCksIEtWIGt2bCdcbiAgICB8IEtWIGt2bCwgUmF3IChfLCBsYXp5IGt2bCcpIC0+XG4gICAgICBjb21wYXJlX2xpc3QgKGZ1biAoayx2bCkgKGsnLHZsJykgLT5cbiAgICAgICAgbWF0Y2ggU3RyaW5nLmNvbXBhcmUgayBrJyB3aXRoXG4gICAgICAgIHwgMCAtPiBjb21wYXJlX2xpc3QgU3RyaW5nLmNvbXBhcmUgdmwgdmwnXG4gICAgICAgIHwgYyAtPiBjXG4gICAgICApIGt2bCBrdmwnXG4gICAgfCBSYXcgKHJhdyxfKSwgUmF3IChyYXcnLF8pIC0+IGNvbXBhcmVfb3B0IFN0cmluZy5jb21wYXJlIHJhdyByYXcnXG5cbiAgbGV0IGZpbmQgcSBrID0gdHJ5IFNvbWUgKExpc3QuYXNzb2MgayBxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG5cbiAgbGV0IHNwbGl0X3F1ZXJ5IHFzID1cbiAgICBsZXQgZWxzID0gU3RyaW5nZXh0LnNwbGl0IH5vbjonJicgcXMgaW5cbiAgICAoKiBSZXBsYWNlIGEgKyBpbiBhIHF1ZXJ5IHN0cmluZyB3aXRoIGEgc3BhY2UgaW4tcGxhY2UgKilcbiAgICBsZXQgcGx1c190b19zcGFjZSBzID1cbiAgICAgIGxldCBzID0gQnl0ZXMudW5zYWZlX29mX3N0cmluZyBzIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQnl0ZXMubGVuZ3RoIHMgLSAxIGRvXG4gICAgICAgIGlmIEJ5dGVzLmdldCBzIGkgPSAnKycgdGhlbiBCeXRlcy5zZXQgcyBpICcgJ1xuICAgICAgZG9uZTtcbiAgICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgc1xuICAgIGluXG4gICAgbGV0IHJlYyBsb29wIGFjYyA9IGZ1bmN0aW9uXG4gICAgICB8IChrOjp2OjpfKTo6dGwgLT5cbiAgICAgICAgbGV0IG4gPSBwbHVzX3RvX3NwYWNlIGssXG4gICAgICAgICAgICAgICAgKG1hdGNoIFN0cmluZ2V4dC5zcGxpdCB+b246JywnIChwbHVzX3RvX3NwYWNlIHYpIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBbXSAtPiBbXCJcIl0gfCBsIC0+IGwpIGluXG4gICAgICAgIGxvb3AgKG46OmFjYykgdGxcbiAgICAgIHwgW2tdOjp0bCAtPlxuICAgICAgICBsZXQgbiA9IHBsdXNfdG9fc3BhY2UgaywgW10gaW5cbiAgICAgICAgbG9vcCAobjo6YWNjKSB0bFxuICAgICAgfCBbXTo6dGwgLT4gbG9vcCAoKFwiXCIsIFtdKTo6YWNjKSB0bFxuICAgICAgfCBbXSAtPiBhY2NcbiAgICBpblxuICAgIG1hdGNoIGVscyB3aXRoXG4gICAgfCBbXSAgLT4gW1wiXCIsW11dXG4gICAgfCBlbHMgLT4gbG9vcCBbXVxuICAgICAgKExpc3QucmV2X21hcCAoZnVuIGVsIC0+IFN0cmluZ2V4dC5zcGxpdCB+b246Jz0nIGVsIH5tYXg6MikgZWxzKVxuXG4gICgqIE1ha2UgYSBxdWVyeSB0dXBsZSBsaXN0IGZyb20gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nICopXG4gIGxldCBxdWVyeV9vZl9lbmNvZGVkIHFzID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAoaywgdikgLT4gKHBjdF9kZWNvZGUgaywgTGlzdC5tYXAgcGN0X2RlY29kZSB2KSlcbiAgICAgIChzcGxpdF9xdWVyeSBxcylcblxuICAoKiBBc3NlbWJsZSBhIHF1ZXJ5IHN0cmluZyBzdWl0YWJsZSBmb3IgcHV0dGluZyBpbnRvIGEgVVJJLlxuICAgKiBUdXBsZSBpbnB1dHMgYXJlIHBlcmNlbnQgZGVjb2RlZCBhbmQgd2lsbCBiZSBlbmNvZGVkIGJ5XG4gICAqIHRoaXMgZnVuY3Rpb24uXG4gICopXG4gIGxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgbCA9XG4gICAgbGV0IGxlbiA9IExpc3QuZm9sZF9sZWZ0IChmdW4gYSAoayx2KSAtPlxuICAgICAgICBhICsgKFN0cmluZy5sZW5ndGggaylcbiAgICAgICAgKyAoTGlzdC5mb2xkX2xlZnQgKGZ1biBhIHMgLT4gYSsoU3RyaW5nLmxlbmd0aCBzKSsxKSAwIHYpICsgMikgKC0xKSBsIGluXG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgaXRlcl9jb25jYXQgKGZ1biBidWYgKGssdikgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChwY3RfZW5jb2RlID9zY2hlbWUgfmNvbXBvbmVudDpwY3RfZW5jb2Rlci5xdWVyeV9rZXkgayk7XG4gICAgICAgIGlmIHYgPD4gW10gdGhlbiAoXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnPSc7XG4gICAgICAgICAgaXRlcl9jb25jYXQgKGZ1biBidWYgcyAtPlxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgICAgICAgICAgICAocGN0X2VuY29kZSA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucXVlcnlfdmFsdWUgcylcbiAgICAgICAgICAgICkgXCIsXCIgYnVmIHYpXG4gICAgICApIFwiJlwiIGJ1ZiBsO1xuICAgIEJ1ZmZlci5jb250ZW50cyBidWZcblxuICBsZXQgb2ZfcmF3IHFzID1cbiAgICBsZXQgbGF6eV9xdWVyeSA9IExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiBxdWVyeV9vZl9lbmNvZGVkIHFzKSBpblxuICAgIFJhdyAoU29tZSBxcywgbGF6eV9xdWVyeSlcblxuICBsZXQga3YgPSBmdW5jdGlvbiBSYXcgKF8sIGxhenkga3YpIHwgS1Yga3YgLT4ga3ZcbmVuZFxuXG5sZXQgcXVlcnlfb2ZfZW5jb2RlZCA9IFF1ZXJ5LnF1ZXJ5X29mX2VuY29kZWRcbmxldCBlbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWUgPSBRdWVyeS5lbmNvZGVkX29mX3F1ZXJ5ID9zY2hlbWVcblxuKCogVHlwZSBvZiB0aGUgVVJJLCB3aXRoIG1vc3QgYml0cyBiZWluZyBvcHRpb25hbCAqKVxudHlwZSB0ID0ge1xuICBzY2hlbWU6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbiAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICBob3N0OiBbIGBJcHY0X2xpdGVyYWwgb2Ygc3RyaW5nXG4gICAgICAgIHwgYElwdjZfbGl0ZXJhbCBvZiBzdHJpbmdcbiAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF0gb3B0aW9uIDtcbiAgcG9ydDogaW50IG9wdGlvbjtcbiAgcGF0aDogUGF0aC50O1xuICBxdWVyeTogUXVlcnkudDtcbiAgZnJhZ21lbnQ6IFBjdC5kZWNvZGVkIG9wdGlvbjtcbn1cblxubGV0IGVtcHR5ID0ge1xuICBzY2hlbWUgPSBOb25lO1xuICB1c2VyaW5mbyA9IE5vbmU7XG4gIGhvc3QgPSBOb25lO1xuICBwb3J0ID0gTm9uZTtcbiAgcGF0aCA9IFtdO1xuICBxdWVyeSA9IFF1ZXJ5LlJhdyAoTm9uZSwgTGF6eS5mcm9tX3ZhbCBbXSk7XG4gIGZyYWdtZW50ID0gTm9uZTtcbn1cblxubGV0IGNvbXBhcmVfZGVjb2RlZCA9IFBjdC51bmxpZnRfZGVjb2RlZDIgU3RyaW5nLmNvbXBhcmVcbmxldCBjb21wYXJlX2RlY29kZWRfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9kZWNvZGVkXG5sZXQgY29tcGFyZV9ob3N0IGgxIGgyID1cbiAgbWF0Y2ggaDEsIGgyIHdpdGhcbiAgfCBgSXB2NF9saXRlcmFsIGlwMSwgYElwdjRfbGl0ZXJhbCBpcDIgLT4gU3RyaW5nLmNvbXBhcmUgaXAxIGlwMlxuICB8IGBJcHY2X2xpdGVyYWwgaXAxLCBgSXB2Nl9saXRlcmFsIGlwMiAtPiBTdHJpbmcuY29tcGFyZSBpcDEgaXAyXG4gIHwgYEhvc3QgaDEsIGBIb3N0IGgyIC0+IGNvbXBhcmVfZGVjb2RlZCBoMSBoMlxuICB8IF8gLT4gLTFcbmxldCBjb21wYXJlX2hvc3Rfb3B0ID0gY29tcGFyZV9vcHQgY29tcGFyZV9ob3N0XG5cbmxldCBjb21wYXJlIHQgdCcgPVxuICAobWF0Y2ggY29tcGFyZV9ob3N0X29wdCB0Lmhvc3QgdCcuaG9zdCB3aXRoXG4gIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9kZWNvZGVkX29wdCB0LnNjaGVtZSB0Jy5zY2hlbWUgd2l0aFxuICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZV9vcHQgKGZ1biBwIHAnIC0+XG4gICAgICBpZiBwIDwgcCcgdGhlbiAtMSBlbHNlIGlmIHAgPiBwJyB0aGVuIDEgZWxzZSAwXG4gICAgKSB0LnBvcnQgdCcucG9ydCB3aXRoXG4gICAgICB8IDAgLT4gKG1hdGNoIGNvbXBhcmVfb3B0IFVzZXJpbmZvLmNvbXBhcmUgdC51c2VyaW5mbyB0Jy51c2VyaW5mbyB3aXRoXG4gICAgICAgIHwgMCAtPiAobWF0Y2ggUGF0aC5jb21wYXJlIHQucGF0aCB0Jy5wYXRoIHdpdGhcbiAgICAgICAgICB8IDAgLT4gKG1hdGNoIFF1ZXJ5LmNvbXBhcmUgdC5xdWVyeSB0Jy5xdWVyeSB3aXRoXG4gICAgICAgICAgICB8IDAgLT4gY29tcGFyZV9kZWNvZGVkX29wdCB0LmZyYWdtZW50IHQnLmZyYWdtZW50XG4gICAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgICB8IGMgLT4gYylcbiAgICAgICAgfCBjIC0+IGMpXG4gICAgICB8IGMgLT4gYylcbiAgICB8IGMgLT4gYylcbiAgfCBjIC0+IGMpXG5cbmxldCBlcXVhbCB0IHQnID0gY29tcGFyZSB0IHQnID0gMFxuXG5sZXQgdW5jYXN0X29wdCA9IGZ1bmN0aW9uXG4gIHwgU29tZSBoIC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgbm9ybWFsaXplIHNjaGVtIHVyaSA9XG4gIGxldCBtb2R1bGUgU2NoZW1lID1cbiAgICAodmFsIChtb2R1bGVfb2Zfc2NoZW1lICh1bmNhc3Rfb3B0IHNjaGVtKSkgOiBTY2hlbWUpIGluXG4gIGxldCBkb2IgZiA9IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT4gU29tZSAoUGN0LnVubGlmdF9kZWNvZGVkIGYgeClcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpbiB7dXJpIHdpdGhcbiAgICAgIHNjaGVtZT1kb2IgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSB1cmkuc2NoZW1lO1xuICAgICAgaG9zdD0gbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICAgIHwgU29tZSAoYElwdjRfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjRfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYElwdjZfbGl0ZXJhbCBob3N0KSAtPlxuICAgICAgICAgU29tZSAoYElwdjZfbGl0ZXJhbCAoU2NoZW1lLm5vcm1hbGl6ZV9ob3N0IGhvc3QpKVxuICAgICAgIHwgU29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICAgICAgIFNvbWUgKGBIb3N0IChQY3QuY2FzdF9kZWNvZGVkIChTY2hlbWUubm9ybWFsaXplX2hvc3QgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgIH1cblxuKCoqIENvbnZlcnQgYSBVUkkgc3RydWN0dXJlIGludG8gYSBwZXJjZW50LWVuY29kZWQgc3RyaW5nXG4gICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjM+XG4qKVxubGV0IHRvX3N0cmluZyA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPVxuICBsZXQgc2NoZW1lID0gbWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBTb21lIHMgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIHMpXG4gICAgfCBOb25lIC0+IE5vbmUgaW5cbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gICgqIFBlcmNlbnQgZW5jb2RlIGEgZGVjb2RlZCBzdHJpbmcgYW5kIGFkZCBpdCB0byB0aGUgYnVmZmVyICopXG4gIGxldCBhZGRfcGN0X3N0cmluZyA/KGNvbXBvbmVudD1gUGF0aCkgeCA9XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWQgKFBjdC5lbmNvZGUgP3NjaGVtZSB+Y29tcG9uZW50IHgpKVxuICBpblxuICAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICB8Tm9uZSAtPiAoKVxuICAgfFNvbWUgeCAtPlxuICAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnNjaGVtZSB4O1xuICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc6J1xuICApO1xuICAoKiBVUkkgaGFzIGEgaG9zdCBpZiBhbnkgaG9zdC1yZWxhdGVkIGNvbXBvbmVudCBpcyBzZXQuIERlZmF1bHRzIHRvIFwiXCIuICopXG4gIGlmIChtYXRjaCB1cmkudXNlcmluZm8sIHVyaS5ob3N0LCB1cmkucG9ydCB3aXRoXG4gIHwgU29tZSBfLCBfLCBfIHwgXywgU29tZSBfLCBfIHwgXywgXywgU29tZSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBcIi8vXCI7XG4gIChtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSB1c2VyaW5mbyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZlxuICAgICAgKFBjdC51bmNhc3RfZW5jb2RlZCAoZW5jb2RlZF9vZl91c2VyaW5mbyA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICdAJ1xuICApO1xuICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSAoYEhvc3QgaG9zdCkgLT5cbiAgICBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmhvc3QgaG9zdDtcbiAgfFNvbWUgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3RcbiAgfFNvbWUgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgJ1snO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGhvc3Q7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICddJ1xuICApO1xuICAobWF0Y2ggdXJpLnBvcnQgd2l0aFxuICB8Tm9uZSAtPiAoKVxuICB8U29tZSBwb3J0IC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnOic7XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChzdHJpbmdfb2ZfaW50IHBvcnQpXG4gICk7XG4gIChtYXRjaCB1cmkucGF0aCB3aXRoICgqIEhhbmRsZSByZWxhdGl2ZSBwYXRocyBjb3JyZWN0bHkgKilcbiAgfCBbXSAtPiAoKVxuICB8IFwiL1wiOjpfIC0+XG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIChQY3QudW5jYXN0X2VuY29kZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbmNvZGVkX29mX3BhdGggP3NjaGVtZSB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLnBhdGggdXJpLnBhdGgpKVxuICB8IGZpcnN0X3NlZ21lbnQ6Ol8gLT5cbiAgICAobWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICAgICB8IFNvbWUgXyAtPiBCdWZmZXIuYWRkX2NoYXIgYnVmICcvJ1xuICAgICB8IE5vbmUgLT5cbiAgICAgICAoKiBlbnN1cmUgcm91bmR0cmlwIGJ5IGZvcmNpbmcgcmVsYXRpdmUgcGF0aCBpbnRlcnByZXRhdGlvbiBub3Qgc2NoZW1lICopXG4gICAgICAgbWF0Y2ggU3RyaW5nZXh0LmZpbmRfZnJvbSBmaXJzdF9zZWdtZW50IH5wYXR0ZXJuOlwiOlwiIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICB8IFNvbWUgXyAtPiBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgIHwgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIuL1wiXG4gICAgKTtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZcbiAgICAgIChQY3QudW5jYXN0X2VuY29kZWQgKGVuY29kZWRfb2ZfcGF0aCA/c2NoZW1lIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aCkpXG4gICk7XG4gIFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgIHwgUmF3IChOb25lLF8pIHwgS1YgW10gLT4gKClcbiAgICB8IFJhdyAoXyxsYXp5IHEpIHwgS1YgcSAtPiAoKiBub3JtYWxpemUgZS5nLiBwZXJjZW50IGNhcGl0YWxpemF0aW9uICopXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmICc/JztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIH5wY3RfZW5jb2RlciBxKVxuICApO1xuICAobWF0Y2ggdXJpLmZyYWdtZW50IHdpdGhcbiAgIHxOb25lIC0+ICgpXG4gICB8U29tZSBmIC0+IEJ1ZmZlci5hZGRfY2hhciBidWYgJyMnOyBhZGRfcGN0X3N0cmluZyB+Y29tcG9uZW50OnBjdF9lbmNvZGVyLmZyYWdtZW50IGZcbiAgKTtcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4oKiBWYXJpb3VzIGFjY2Vzc29yIGZ1bmN0aW9ucywgYXMgdGhlIGV4dGVybmFsIHVyaSB0eXBlIGlzIGFic3RyYWN0ICAqKVxubGV0IGdldF9kZWNvZGVkX29wdCA9IGZ1bmN0aW9uIE5vbmUgLT4gTm9uZSB8U29tZSB4IC0+IFNvbWUgKFBjdC51bmNhc3RfZGVjb2RlZCB4KVxubGV0IHNjaGVtZSB1cmkgPSBnZXRfZGVjb2RlZF9vcHQgdXJpLnNjaGVtZVxubGV0IHdpdGhfc2NoZW1lIHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxTb21lIHNjaGVtZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIHNjaGVtZSkgfVxuICB8Tm9uZSAtPiB7IHVyaSB3aXRoIHNjaGVtZT1Ob25lIH1cblxubGV0IGhvc3QgdXJpID1cbiAgbWF0Y2ggdXJpLmhvc3Qgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKGBJcHY0X2xpdGVyYWwgaCB8IGBJcHY2X2xpdGVyYWwgaCkgLT4gU29tZSBoXG4gIHwgU29tZSAoYEhvc3QgaCkgLT4gU29tZSAoUGN0LnVuY2FzdF9kZWNvZGVkIGgpXG5cbmxldCBob3N0X3dpdGhfZGVmYXVsdCA/KGRlZmF1bHQ9XCJsb2NhbGhvc3RcIikgdXJpID1cbiAgbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICB8Tm9uZSAtPiBkZWZhdWx0XG4gIHxTb21lIGggLT4gaFxuXG5sZXQgdXNlcmluZm8gPyhwY3RfZW5jb2Rlcj1wY3RfZW5jb2RlciAoKSkgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIHVzZXJpbmZvIC0+IFNvbWUgKFBjdC51bmNhc3RfZW5jb2RlZCAobWF0Y2ggdXJpLnNjaGVtZSB3aXRoXG4gICAgfCBOb25lIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfmNvbXBvbmVudDpwY3RfZW5jb2Rlci51c2VyaW5mbyB1c2VyaW5mb1xuICAgIHwgU29tZSBzIC0+IGVuY29kZWRfb2ZfdXNlcmluZm8gfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIudXNlcmluZm8gdXNlcmluZm8pKVxubGV0IHdpdGhfdXNlcmluZm8gdXJpIHVzZXJpbmZvID1cbiAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgIHwgU29tZSB1IC0+IFNvbWUgKHVzZXJpbmZvX29mX2VuY29kZWQgdSlcbiAgICB8IE5vbmUgLT4gTm9uZVxuICBpblxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggdXNlcmluZm89dXNlcmluZm8gfVxuXG5sZXQgdXNlciB1cmkgPSBtYXRjaCB1cmkudXNlcmluZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgKHVzZXIsIF8pIC0+IFNvbWUgdXNlclxuXG5sZXQgcGFzc3dvcmQgdXJpID0gbWF0Y2ggdXJpLnVzZXJpbmZvIHdpdGhcbiAgfCBOb25lIHwgU29tZSAoXywgTm9uZSkgLT4gTm9uZVxuICB8IFNvbWUgKF8sIFNvbWUgcGFzcykgLT4gU29tZSBwYXNzXG5sZXQgd2l0aF9wYXNzd29yZCB1cmkgcGFzc3dvcmQgPVxuICBsZXQgcmVzdWx0IHVzZXJpbmZvID0gbWF0Y2ggaG9zdCB1cmkgd2l0aFxuICAgIHwgTm9uZSAtPiB7IHVyaSB3aXRoIGhvc3Q9U29tZSAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgXCJcIikpOyB1c2VyaW5mbz11c2VyaW5mbyB9XG4gICAgfCBTb21lIF8gLT4geyB1cmkgd2l0aCB1c2VyaW5mbz11c2VyaW5mbyB9XG4gIGluXG4gIG1hdGNoIHVyaS51c2VyaW5mbywgcGFzc3dvcmQgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gdXJpXG4gIHwgTm9uZSwgU29tZSBfIC0+IHJlc3VsdCAoU29tZSAoXCJcIixwYXNzd29yZCkpXG4gIHwgU29tZSAodXNlcixfKSwgXyAtPiByZXN1bHQgKFNvbWUgKHVzZXIsIHBhc3N3b3JkKSlcblxubGV0IHBvcnQgdXJpID0gdXJpLnBvcnRcbmxldCB3aXRoX3BvcnQgdXJpIHBvcnQgPVxuICBtYXRjaCBob3N0IHVyaSB3aXRoXG4gIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggcG9ydD1wb3J0IH1cbiAgfCBOb25lIC0+IGJlZ2luXG4gICAgIG1hdGNoIHBvcnQgd2l0aFxuICAgICB8IE5vbmUgLT4geyB1cmkgd2l0aCBob3N0PU5vbmU7IHBvcnQ9Tm9uZSB9XG4gICAgIHwgU29tZSBfIC0+IHsgdXJpIHdpdGggaG9zdD1Tb21lIChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBcIlwiKSk7IHBvcnQ9cG9ydCB9XG4gIGVuZFxuXG4oKiBSZXR1cm4gdGhlIHBhdGggY29tcG9uZW50ICopXG5sZXQgcGF0aCA/KHBjdF9lbmNvZGVyPXBjdF9lbmNvZGVyICgpKSB1cmkgPSBQY3QudW5jYXN0X2VuY29kZWQgKG1hdGNoIHVyaS5zY2hlbWUgd2l0aFxuICB8IE5vbmUgLT4gZW5jb2RlZF9vZl9wYXRoIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aFxuICB8IFNvbWUgcyAtPiBlbmNvZGVkX29mX3BhdGggfnNjaGVtZTooUGN0LnVuY2FzdF9kZWNvZGVkIHMpIH5jb21wb25lbnQ6cGN0X2VuY29kZXIucGF0aCB1cmkucGF0aClcbmxldCB3aXRoX3BhdGggdXJpIHBhdGggPVxuICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwYXRoIGluXG4gIG1hdGNoIGhvc3QgdXJpLCBwYXRoIHdpdGhcbiAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4geyB1cmkgd2l0aCBwYXRoPXBhdGggfVxuICB8IFNvbWUgXywgXyAgLT4geyB1cmkgd2l0aCBwYXRoPVwiL1wiOjpwYXRoIH1cblxubGV0IGZyYWdtZW50IHVyaSA9IGdldF9kZWNvZGVkX29wdCB1cmkuZnJhZ21lbnRcbmxldCB3aXRoX2ZyYWdtZW50IHVyaSA9XG4gIGZ1bmN0aW9uXG4gIHxOb25lIC0+IHsgdXJpIHdpdGggZnJhZ21lbnQ9Tm9uZSB9XG4gIHxTb21lIGZyYWcgLT4geyB1cmkgd2l0aCBmcmFnbWVudD1Tb21lIChQY3QuY2FzdF9kZWNvZGVkIGZyYWcpIH1cblxubGV0IHF1ZXJ5IHVyaSA9IFF1ZXJ5Lmt2IHVyaS5xdWVyeVxubGV0IHZlcmJhdGltX3F1ZXJ5ID8ocGN0X2VuY29kZXI9cGN0X2VuY29kZXIgKCkpIHVyaSA9IFF1ZXJ5LihtYXRjaCB1cmkucXVlcnkgd2l0aFxuICB8IFJhdyAocXMsXykgLT4gcXNcbiAgfCBLViBbXSAtPiBOb25lXG4gIHwgS1Yga3YgLT4gU29tZSAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lOihzY2hlbWUgdXJpKSB+cGN0X2VuY29kZXIga3YpXG4pXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayA9IFF1ZXJ5LihmaW5kIChrdiB1cmkucXVlcnkpIGspXG5sZXQgZ2V0X3F1ZXJ5X3BhcmFtIHVyaSBrID1cbiAgbWF0Y2ggZ2V0X3F1ZXJ5X3BhcmFtJyB1cmkgayB3aXRoXG4gIHxOb25lIC0+IE5vbmVcbiAgfFNvbWUgdiAtPiBTb21lIChTdHJpbmcuY29uY2F0IFwiLFwiIHYpXG5cbmxldCB3aXRoX3F1ZXJ5IHVyaSBxdWVyeSA9IHsgdXJpIHdpdGggcXVlcnk9UXVlcnkuS1YgcXVlcnkgfVxubGV0IHFfcyBxID0gTGlzdC5tYXAgKGZ1biAoayx2KSAtPiBrLFt2XSkgcVxubGV0IHdpdGhfcXVlcnknIHVyaSBxdWVyeSA9IHdpdGhfcXVlcnkgdXJpIChxX3MgcXVlcnkpXG5sZXQgYWRkX3F1ZXJ5X3BhcmFtIHVyaSBwID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHA6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbScgdXJpIChrLHYpID1cbiAgUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKChrLFt2XSk6OihrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMgdXJpIHBzID0gUXVlcnkuKHsgdXJpIHdpdGggcXVlcnk9S1YgKHBzQChrdiB1cmkucXVlcnkpKSB9KVxubGV0IGFkZF9xdWVyeV9wYXJhbXMnIHVyaSBwcyA9XG4gIFF1ZXJ5Lih7IHVyaSB3aXRoIHF1ZXJ5PUtWICgocV9zIHBzKUAoa3YgdXJpLnF1ZXJ5KSkgfSlcbmxldCByZW1vdmVfcXVlcnlfcGFyYW0gdXJpIGsgPSBRdWVyeS4oXG4gIHsgdXJpIHdpdGggcXVlcnk9S1YgKExpc3QuZmlsdGVyIChmdW4gKGsnLF8pIC0+IGs8PmsnKSAoa3YgdXJpLnF1ZXJ5KSkgfVxuKVxuXG4oKiBDb25zdHJ1Y3QgZW5jb2RlZCBwYXRoIGFuZCBxdWVyeSBjb21wb25lbnRzICopXG5sZXQgcGF0aF9hbmRfcXVlcnkgdXJpID1cbiAgbWF0Y2ggKHBhdGggdXJpKSwgKHF1ZXJ5IHVyaSkgd2l0aFxuICB8XCJcIiwgW10gLT4gXCIvXCIgKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgfFwiXCIsIHEgLT4gKCogVE9ETzogV2hhdCBhYm91dCBzYW1lIGRvY3VtZW50PyAoLykgKilcbiAgICBsZXQgc2NoZW1lID0gdW5jYXN0X29wdCB1cmkuc2NoZW1lIGluXG4gICAgUHJpbnRmLnNwcmludGYgXCIvPyVzXCIgKGVuY29kZWRfb2ZfcXVlcnkgP3NjaGVtZSBxKVxuICB8cCwgW10gLT4gcFxuICB8cCwgcSAtPlxuICAgIGxldCBzY2hlbWUgPSB1bmNhc3Rfb3B0IHVyaS5zY2hlbWUgaW5cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzPyVzXCIgcCAoZW5jb2RlZF9vZl9xdWVyeSA/c2NoZW1lIHEpXG5cbigqIFRPRE86IGZ1bmN0aW9ucyB0byBhZGQgYW5kIHJlbW92ZSBmcm9tIGEgVVJJICopXG5cbigqIFJlc29sdmUgYSBVUkkgd3J0IGEgYmFzZSBVUkkgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjI+ICopXG5sZXQgcmVzb2x2ZSBzY2hlbSBiYXNlIHVyaSA9XG4gIGxldCBzY2hlbSA9IFNvbWUgKFBjdC5jYXN0X2RlY29kZWQgKG1hdGNoIHNjaGVtZSBiYXNlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAgc2NoZW1cbiAgICAgIHwgU29tZSBzY2hlbWUgLT4gc2NoZW1lXG4gICAgKSkgaW5cbiAgbm9ybWFsaXplIHNjaGVtXG4gICAgUGF0aC4obWF0Y2ggc2NoZW1lIHVyaSwgdXNlcmluZm8gdXJpLCBob3N0IHVyaSB3aXRoXG4gICAgfCBTb21lIF8sIF8sIF8gLT5cbiAgICAgIHt1cmkgd2l0aCBwYXRoPXJlbW92ZV9kb3Rfc2VnbWVudHMgdXJpLnBhdGh9XG4gICAgfCBOb25lLCBTb21lIF8sIF9cbiAgICB8IE5vbmUsIF8sIFNvbWUgXyAtPlxuICAgICAge3VyaSB3aXRoIHNjaGVtZT1iYXNlLnNjaGVtZTsgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgIHwgTm9uZSwgTm9uZSwgTm9uZSAtPlxuICAgICAgbGV0IHVyaSA9IHt1cmkgd2l0aCBzY2hlbWU9YmFzZS5zY2hlbWU7IHVzZXJpbmZvPWJhc2UudXNlcmluZm87XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9YmFzZS5ob3N0OyBwb3J0PWJhc2UucG9ydH0gaW5cbiAgICAgIGxldCBwYXRoX3N0ciA9IHBhdGggdXJpIGluXG4gICAgICBpZiBwYXRoX3N0cj1cIlwiXG4gICAgICB0aGVuIHsgdXJpIHdpdGhcbiAgICAgICAgICAgICBwYXRoPWJhc2UucGF0aDtcbiAgICAgICAgICAgICBxdWVyeT1tYXRjaCB1cmkucXVlcnkgd2l0aFxuICAgICAgICAgICAgICAgfCBRdWVyeS5SYXcgKE5vbmUsXykgfCBRdWVyeS5LViBbXSAtPiBiYXNlLnF1ZXJ5XG4gICAgICAgICAgICAgICB8IF8gLT4gdXJpLnF1ZXJ5XG4gICAgICAgICAgIH1cbiAgICAgIGVsc2UgaWYgcGF0aF9zdHIuWzBdPScvJ1xuICAgICAgdGhlbiB7dXJpIHdpdGggcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIHVyaS5wYXRofVxuICAgICAgZWxzZSB7dXJpIHdpdGhcbiAgICAgICAgcGF0aD1yZW1vdmVfZG90X3NlZ21lbnRzIChtZXJnZSBiYXNlLmhvc3QgYmFzZS5wYXRoIHVyaS5wYXRoKTtcbiAgICAgIH1cbiAgICApXG5cbmxldCBjYW5vbmljYWxpemUgdXJpID1cbiAgbGV0IHVyaSA9IHJlc29sdmUgXCJcIiBlbXB0eSB1cmkgaW5cbiAgbGV0IG1vZHVsZSBTY2hlbWUgPVxuICAgICh2YWwgKG1vZHVsZV9vZl9zY2hlbWUgKHVuY2FzdF9vcHQgdXJpLnNjaGVtZSkpIDogU2NoZW1lKSBpblxuICB7IHVyaSB3aXRoXG4gICAgcG9ydD1TY2hlbWUuY2Fub25pY2FsaXplX3BvcnQgdXJpLnBvcnQ7XG4gICAgcGF0aD1TY2hlbWUuY2Fub25pY2FsaXplX3BhdGggdXJpLnBhdGg7XG4gIH1cblxubGV0IHBwIHBwZiB1cmkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIHBwZiAodG9fc3RyaW5nIHVyaSlcbmxldCBwcF9odW0gcHBmIHVyaSA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgcHBmICh0b19zdHJpbmcgdXJpKVxuXG5tb2R1bGUgUGFyc2VyID0gc3RydWN0XG4gIG9wZW4gQW5nc3Ryb21cblxuICBsZXQgc3RyaW5nX29mX2NoYXIgPSBTdHJpbmcubWFrZSAxXG5cbiAgbGV0IHN0cmluZ19vZl9jaGFyX2xpc3QgY2hhcnMgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5tYXAgc3RyaW5nX29mX2NoYXIgY2hhcnMpXG5cbiAgbGV0IHNjaGVtZSA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKHRha2Vfd2hpbGUgKGZ1biBjIC0+IGMgPD4gJzonICYmIGMgPD4gJy8nICYmIGMgPD4gJz8nICYmIGMgPD4gJyMnKVxuICAgICAgPCogY2hhciAnOicpXG4gICAgPHw+IHJldHVybiBOb25lXG5cbiAgbGV0IGlzX2RpZ2l0ID0gZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBoZXhfZGlnaXQgPVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJzAnIC4uICc5JyB8ICdBJyAuLiAnRicgfCAnYScgLi4gJ2YnIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgaGV4YWRlY2ltYWwgPSBsaWZ0IHN0cmluZ19vZl9jaGFyX2xpc3QgKG1hbnkgaGV4X2RpZ2l0KVxuXG4gIGxldCBjX2RvdCA9IGNoYXIgJy4nXG5cbiAgbGV0IGNfYXQgPSBjaGFyICdAJ1xuXG4gIGxldCBjX2NvbG9uID0gY2hhciAnOidcblxuICBsZXQgZGVjX29jdGV0ID1cbiAgICB0YWtlX3doaWxlMSAoZnVuY3Rpb24gJzAnIC4uICc5JyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgPj49IGZ1biBudW0gLT5cbiAgICBpZiBpbnRfb2Zfc3RyaW5nIG51bSA8IDI1NiB0aGVuXG4gICAgICByZXR1cm4gbnVtXG4gICAgZWxzZVxuICAgICAgZmFpbCBcImludmFsaWQgb2N0ZWN0XCJcblxuICBsZXQgaXB2NF9hZGRyZXNzID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB0aHJlZSBvbmUgLT4gU3RyaW5nLmNvbmNhdCBcIi5cIiB0aHJlZSBeIFwiLlwiIF4gb25lKVxuICAgICAgKGNvdW50IDMgKGRlY19vY3RldCA8KiBjX2RvdCkpXG4gICAgICBkZWNfb2N0ZXRcblxuICAoKiAtLSBhZnRlciBkb3VibGUgY29sb24sIElQdjQgZG90dGVkIG5vdGF0aW9uIGNvdWxkIGFwcGVhciBhbnl3aGVyZSAqKVxuICBsZXQgYWZ0ZXJfZG91YmxlX2NvbG9uID1cbiAgICBmaXggKGZ1biBmIC0+XG4gICAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXVxuICAgICAgICA8fD4gbGlmdDIgKGZ1biB4IHkgLT4geCA6OiB5KSBoZXhhZGVjaW1hbCAoY19jb2xvbiAqPiBmIDx8PiByZXR1cm4gW10pKVxuXG4gIGxldCBkb3VibGVfY29sb24gY291bnQgPVxuICAgIGFmdGVyX2RvdWJsZV9jb2xvbiA+Pj0gKGZ1biByZXN0IC0+XG4gICAgbGV0IGZpbGxlcl9sZW5ndGggPSA4IC0gY291bnQgLSBMaXN0Lmxlbmd0aCByZXN0IGluXG4gICAgaWYgZmlsbGVyX2xlbmd0aCA8PSAwIHRoZW5cbiAgICAgIGZhaWwgXCJ0b28gbWFueSBwYXJ0cyBpbiBJUHY2IGFkZHJlc3NcIlxuICAgIGVsc2VcbiAgICAgIHJldHVybiAoXCJcIiA6OiByZXN0KSlcbiAgICA8fD4gcmV0dXJuIFtcIlwiXVxuXG4gIGxldCByZWMgcGFydCA9IGZ1bmN0aW9uXG4gICAgfCA3IC0+XG4gICAgICAoKiBtYXggOCBwYXJ0cyBpbiBhbiBJUHY2IGFkZHJlc3MgKilcbiAgICAgIGxpZnQgKGZ1biB4IC0+IFsgeCBdKSBoZXhhZGVjaW1hbFxuICAgIHwgNiAtPlxuICAgICAgKCogYWZ0ZXIgNiBwYXJ0cyBpdCBjb3VsZCBlbmQgaW4gSVB2NCBkb3R0ZWQgbm90YXRpb24gKilcbiAgICAgIGxpc3QgWyBpcHY0X2FkZHJlc3MgXSA8fD4gaGV4X3BhcnQgNlxuICAgIHwgbiAtPlxuICAgICAgaGV4X3BhcnQgblxuXG4gIGFuZCBoZXhfcGFydCBuID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biB4IHkgLT4geCA6OiB5KVxuICAgICAgaGV4YWRlY2ltYWxcbiAgICAgIChjX2NvbG9uICo+IChjX2NvbG9uICo+IGRvdWJsZV9jb2xvbiAobiArIDEpIDx8PiBwYXJ0IChuICsgMSkpKVxuXG4gIGxldCByZWMgc3BsaXRfd2l0aCBmIHhzID1cbiAgICBtYXRjaCB4cyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgW10sIFtdXG4gICAgfCB5IDo6IHlzIC0+XG4gICAgICBpZiBmIHkgdGhlblxuICAgICAgICBsZXQgenMsIHRzID0gc3BsaXRfd2l0aCBmIHlzIGluXG4gICAgICAgIHkgOjogenMsIHRzXG4gICAgICBlbHNlXG4gICAgICAgIFtdLCB4c1xuXG4gIGxldCBpcHY2ID1cbiAgICBsZXQgZm9ybWF0X2FkZHIgc2VnbWVudHMgPVxuICAgICAgbGV0IGJlZm9yZV9kb3VibGVfY29sb24sIGFmdGVyX2RvdWJsZV9jb2xvbiA9XG4gICAgICAgIHNwbGl0X3dpdGggKGZ1biBzZWdtZW50IC0+IHNlZ21lbnQgPD4gXCJcIikgc2VnbWVudHNcbiAgICAgIGluXG4gICAgICBsZXQgYmVmb3JlID0gU3RyaW5nLmNvbmNhdCBcIjpcIiBiZWZvcmVfZG91YmxlX2NvbG9uIGluXG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgbWF0Y2ggYWZ0ZXJfZG91YmxlX2NvbG9uIHdpdGhcbiAgICAgICAgfCBcIlwiIDo6IHhzIC0+XG4gICAgICAgICAgYmVmb3JlIF4gXCI6OlwiIF4gU3RyaW5nLmNvbmNhdCBcIjpcIiB4c1xuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBiZWZvcmVcbiAgICAgIGluXG4gICAgICByZXNcbiAgICBpblxuICAgIGxpZnQgZm9ybWF0X2FkZHIgKGNfY29sb24gKj4gY19jb2xvbiAqPiBkb3VibGVfY29sb24gMCA8fD4gcGFydCAwKVxuXG4gIGxldCBpcHY2X2FkZHJlc3MgPVxuICAgIChjaGFyICdbJykgKj4gaXB2NiA8KiAoY2hhciAnXScpXG5cbiAgbGV0IHBjdF9lbmNvZGVkID1cbiAgICBsaWZ0MlxuICAgICAgKGZ1biBwY3QgZGlnaXRzIC0+IHN0cmluZ19vZl9jaGFyX2xpc3QgKHBjdCA6OiBkaWdpdHMpKVxuICAgICAgKGNoYXIgJyUnKVxuICAgICAgKGNvdW50IDIgaGV4X2RpZ2l0KVxuXG4gIGxldCBzdWJfZGVsaW1zID1cbiAgICBzYXRpc2Z5IChmdW5jdGlvblxuICAgICAgICB8ICchJyB8ICckJyB8ICcmJyB8ICdcXCcnIHwgJygnIHwgJyknIHwgJyonIHwgJysnIHwgJywnIHwgJzsnIHwgJz0nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgdW5yZXNlcnZlZCA9XG4gICAgKCogXCJbQS1aYS16MC05LS5ffl1cIiAqKVxuICAgIHNhdGlzZnkgKGZ1bmN0aW9uXG4gICAgICAgIHwgJ0EnIC4uICdaJyB8ICdhJyAuLiAneicgfCAnMCcgLi4gJzknIHwgJy0nIHwgJy4nIHwgJ18nIHwgJ34nIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBmYWxzZSlcblxuICBsZXQgcmVnX25hbWUgPVxuICAgIGxpZnRcbiAgICAgIChTdHJpbmcuY29uY2F0IFwiXCIpXG4gICAgICAobWFueVxuICAgICAgICAgKGNob2ljZVxuICAgICAgICAgICAgWyBzdHJpbmdfb2ZfY2hhciA8JD4gdW5yZXNlcnZlZFxuICAgICAgICAgICAgOyBwY3RfZW5jb2RlZFxuICAgICAgICAgICAgOyBzdHJpbmdfb2ZfY2hhciA8JD4gc3ViX2RlbGltc1xuICAgICAgICAgICAgXSkpXG5cbiAgbGV0IGhvc3QgPVxuICAgIGNob2ljZVxuICAgICAgWyBpcHY0X2FkZHJlc3MgPj58IChmdW4gaCAtPiBgSXB2NF9saXRlcmFsIGgpXG4gICAgICA7IGlwdjZfYWRkcmVzcyA+PnwgKGZ1biBoIC0+IGBJcHY2X2xpdGVyYWwgaClcbiAgICAgIDsgcmVnX25hbWUgPj58IChmdW4gcyAtPiBgSG9zdCAoUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBzKSkpXG4gICAgICAoKiBUT0RPKGRpbm9zYXVyZSk6IEFjY29yZGluZyB0byBSRkMzOTg2OlxuXG4gICAgICAgICBob3N0ICAgICAgICA9IElQLWxpdGVyYWwgLyBJUHY0YWRkcmVzcyAvIHJlZy1uYW1lXG4gICAgICAgICBJUC1saXRlcmFsICA9IFwiW1wiICggSVB2NmFkZHJlc3MgLyBJUHZGdXR1cmUgICkgXCJdXCJcbiAgICAgICAgIElQdkZ1dHVyZSAgID0gXCJ2XCIgMSpIRVhESUcgXCIuXCIgMSooIHVucmVzZXJ2ZWQgLyBzdWItZGVsaW1zIC8gXCI6XCIgKVxuXG4gICAgICAgICBJUHZGdXR1cmUgaXMgbm90IGltcGxlbWVudGVkLiBXZSBzaG91bGQgaGFuZGxlIGl0OlxuXG4gICAgICAgICBJUHZGdXR1cmUgICA9IFwidlwiIDEqSEVYRElHIFwiLlwiIDEqKCB1bnJlc2VydmVkIC8gc3ViLWRlbGltcyAvIFwiOlwiIClcbiAgICAgICAqKVxuICAgICAgXVxuXG4gIGxldCB1c2VyaW5mbyA9XG4gICAgbGlmdFxuICAgICAgKGZ1biB4IC0+XG4gICAgICAgIGxldCBzID0gU3RyaW5nLmNvbmNhdCBcIlwiIHggaW5cbiAgICAgICAgU29tZSAoVXNlcmluZm8udXNlcmluZm9fb2ZfZW5jb2RlZCBzKSlcbiAgICAgIChtYW55XG4gICAgICAgICAoY2hvaWNlXG4gICAgICAgICAgICBbIHN0cmluZ19vZl9jaGFyIDwkPiB1bnJlc2VydmVkXG4gICAgICAgICAgICA7IHBjdF9lbmNvZGVkXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBzdWJfZGVsaW1zXG4gICAgICAgICAgICA7IHN0cmluZ19vZl9jaGFyIDwkPiBjX2NvbG9uXG4gICAgICAgICAgICBdKVxuICAgICAgPCogY19hdClcbiAgICA8fD4gcmV0dXJuIE5vbmVcblxuICBsZXQgcG9ydCA9XG4gICAgcGVla19jaGFyID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSAnOicgLT5cbiAgICAgIGNfY29sb24gKj4gdGFrZV93aGlsZSBpc19kaWdpdCA+PnwgZnVuIHBvcnQgLT5cbiAgICAgIGxldCBkZWNvZGVkID0gUGN0LmRlY29kZSAoUGN0LmNhc3RfZW5jb2RlZCBwb3J0KSBpblxuICAgICAgKHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIChQY3QudW5jYXN0X2RlY29kZWQgZGVjb2RlZCkpIHdpdGggXyAtPiBOb25lKVxuICAgIHwgU29tZSBfIHwgTm9uZSAtPlxuICAgICAgcmV0dXJuIE5vbmVcblxuICBsZXQgYXV0aG9yaXR5ID1cbiAgICBzdHJpbmcgXCIvL1wiXG4gICAgKj4gbGlmdDNcbiAgICAgICAgIChmdW4gdXNlcmluZm8gaG9zdCBwb3J0IC0+XG4gICAgICAgICAgIHVzZXJpbmZvLCBTb21lIGhvc3QsIHBvcnQpXG4gICAgICAgICB1c2VyaW5mb1xuICAgICAgICAgaG9zdFxuICAgICAgICAgcG9ydFxuICAgIDx8PiByZXR1cm4gKE5vbmUsIE5vbmUsIE5vbmUpXG5cbiAgbGV0IHBhdGggPVxuICAgIGxpZnRcbiAgICAgIFBhdGgucGF0aF9vZl9lbmNvZGVkXG4gICAgICAodGFrZV93aGlsZSAoZnVuY3Rpb24gJz8nIHwgJyMnIC0+IGZhbHNlIHwgXyAtPiB0cnVlKSlcblxuICBsZXQgcXVlcnkgPVxuICAgIGxpZnRcbiAgICAgIFF1ZXJ5Lm9mX3Jhd1xuICAgICAgKGNoYXIgJz8nICo+IHRha2VfdGlsbCAoZnVuY3Rpb24gJyMnIC0+IHRydWUgfCBfIC0+IGZhbHNlKSlcbiAgICA8fD4gcmV0dXJuIChRdWVyeS5SYXcgKE5vbmUsIExhenkuZnJvbV92YWwgW10pKVxuXG4gIGxldCBmcmFnbWVudCA9XG4gICAgbGlmdFxuICAgICAgKGZ1biBzIC0+IFNvbWUgKFBjdC5kZWNvZGUgKFBjdC5jYXN0X2VuY29kZWQgcykpKVxuICAgICAgKGNoYXIgJyMnICo+IHRha2Vfd2hpbGUgKGZ1biBfIC0+IHRydWUpKVxuICAgIDx8PiByZXR1cm4gTm9uZVxuXG4gIGxldCBfdXJpX3JlZmVyZW5jZSA9XG4gICAgbGlmdDRcbiAgICAgIChmdW4gc2NoZW1lICh1c2VyaW5mbywgaG9zdCwgcG9ydCkgcGF0aCBxdWVyeSBmcmFnbWVudCAtPlxuICAgICAgICBub3JtYWxpemUgc2NoZW1lIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH0pXG4gICAgICBzY2hlbWVcbiAgICAgIGF1dGhvcml0eVxuICAgICAgcGF0aFxuICAgICAgcXVlcnlcbiAgICA8Kj4gZnJhZ21lbnRcblxuICAoKiBYWFgoYW5tb250ZWlybyk6IEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2l0aCB0aGUgb2xkIHJlZ2V4IHBhcnNlciwgd2VcbiAgICogb25seSBwYXJzZSB1bnRpbCB0aGUgZmlyc3QgbmV3bGluZSBjaGFyYWN0ZXIgYW5kIGRyb3AgZXZlcnl0aGluZyBlbHNlXG4gICAqIGFmdGVyIHRoYXQgKilcbiAgbGV0IHVyaV9yZWZlcmVuY2UgPVxuICAgIHRha2Vfd2hpbGUgKGZ1bmN0aW9uIHwgJ1xcbicgLT4gZmFsc2UgfCBfIC0+IHRydWUpID4+fCBmdW4gcyAtPlxuICAgICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBfdXJpX3JlZmVyZW5jZSBzIHdpdGhcbiAgICAgIHwgT2sgdCAtPiB0XG4gICAgICB8IEVycm9yIF8gLT5cbiAgICAgICAgKCogU2hvdWxkbid0IHJlYWxseSBoYXBwZW4gaWYgdGhlIHBhcnNlciBpcyBmb3JnaXZpbmcuICopXG4gICAgICAgIGVtcHR5XG5lbmRcblxubGV0IGRlY29kZV9ob3N0IGhvc3QgPVxuICBtYXRjaCBBbmdzdHJvbS5wYXJzZV9zdHJpbmcgfmNvbnN1bWU6QWxsIFBhcnNlci5ob3N0IGhvc3Qgd2l0aFxuICB8IE9rIHBhcnNlZCAtPiBwYXJzZWRcbiAgfCBFcnJvciBfIC0+XG4gICAgbWF0Y2ggQW5nc3Ryb20ucGFyc2Vfc3RyaW5nIH5jb25zdW1lOkFsbCBQYXJzZXIuaXB2NiBob3N0IHdpdGhcbiAgICB8IE9rIHBhcnNlZCAtPiAoYElwdjZfbGl0ZXJhbCBwYXJzZWQpXG4gICAgfCBFcnJvciBfIC0+IChgSG9zdCAoUGN0LmNhc3RfZGVjb2RlZCBob3N0KSlcblxuKCogTWFrZSBhIFVSSSByZWNvcmQuIFRoaXMgaXMgYSBiaXQgbW9yZSBpbmVmZmljaWVudCB0aGFuIGl0IG5lZWRzIHRvIGJlIGR1ZSB0byB0aGVcbiAqIGNhc3RpbmcvdW5jYXN0aW5nICh3aGljaCBpc24ndCBmdWxseSBpZGVudGl0eSBkdWUgdG8gdGhlIG9wdGlvbiBib3gpLCBidXQgaXQgaXNcbiAqIG5vIGJpZyBkZWFsIGZvciBub3cuXG4qKVxubGV0IG1ha2UgP3NjaGVtZSA/dXNlcmluZm8gP2hvc3QgP3BvcnQgP3BhdGggP3F1ZXJ5ID9mcmFnbWVudCAoKSA9XG4gIGxldCBkZWNvZGUgPSBmdW5jdGlvblxuICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gIGxldCBob3N0ID0gbWF0Y2ggdXNlcmluZm8sIGhvc3QsIHBvcnQgd2l0aFxuICAgIHwgXywgU29tZSBfLCBfIHwgTm9uZSwgTm9uZSwgTm9uZSAtPiBob3N0XG4gICAgfCBTb21lIF8sIE5vbmUsIF8gfCBfLCBOb25lLCBTb21lIF8gLT4gU29tZSBcIlwiXG4gIGluXG4gIGxldCB1c2VyaW5mbyA9IG1hdGNoIHVzZXJpbmZvIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgdSAtPiBTb21lICh1c2VyaW5mb19vZl9lbmNvZGVkIHUpIGluXG4gIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgfE5vbmUgLT4gW10gfCBTb21lIHAgLT5cbiAgICAgIGxldCBwYXRoID0gcGF0aF9vZl9lbmNvZGVkIHAgaW5cbiAgICAgIG1hdGNoIGhvc3QsIHBhdGggd2l0aFxuICAgICAgfCBOb25lLCBfIHwgU29tZSBfLCBcIi9cIjo6XyB8IFNvbWUgXywgW10gLT4gcGF0aFxuICAgICAgfCBTb21lIF8sIF8gIC0+IFwiL1wiOjpwYXRoXG4gIGluXG4gIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICB8IE5vbmUgLT4gUXVlcnkuS1YgW11cbiAgICB8IFNvbWUgcCAtPiBRdWVyeS5LViBwXG4gIGluXG4gIGxldCBzY2hlbWUgPSBkZWNvZGUgc2NoZW1lIGluXG4gIG5vcm1hbGl6ZSBzY2hlbWVcbiAgICB7IHNjaGVtZTsgdXNlcmluZm87XG4gICAgICBob3N0ID1cbiAgICAgICAgKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICB8IFNvbWUgaG9zdCAtPiBTb21lIChkZWNvZGVfaG9zdCBob3N0KVxuICAgICAgICB8IE5vbmUgLT4gTm9uZSk7XG4gICAgICBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQ9ZGVjb2RlIGZyYWdtZW50IH1cblxubGV0IHdpdGhfaG9zdCB1cmkgaG9zdCA9XG4gIHsgdXJpIHdpdGhcbiAgICBob3N0ID0gKG1hdGNoIGhvc3Qgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGhvc3QgLT4gU29tZSAoZGVjb2RlX2hvc3QgaG9zdClcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lKVxuICB9XG5cbmxldCB3aXRoX3VyaSA/c2NoZW1lID91c2VyaW5mbyA/aG9zdCA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50IHVyaSA9XG4gIGxldCB3aXRoX3BhdGhfb3B0IHUgbyA9XG4gICAgbWF0Y2ggbyB3aXRoXG4gICAgfCBOb25lIC0+IHdpdGhfcGF0aCB1IFwiXCJcbiAgICB8IFNvbWUgcCAtPiB3aXRoX3BhdGggdSBwXG4gIGluXG4gIGxldCB3aXRoX3F1ZXJ5X29wdCB1IG8gPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB3aXRoX3F1ZXJ5IHUgW11cbiAgICB8IFNvbWUgcSAtPiB3aXRoX3F1ZXJ5IHUgcVxuICBpblxuICBsZXQgd2l0aF8gZiBvIHUgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgIHwgTm9uZSAtPiB1XG4gICAgfCBTb21lIHggLT4gZiB1IHhcbiAgaW5cbiAgd2l0aF8gd2l0aF9zY2hlbWUgc2NoZW1lIHVyaVxuICB8PiB3aXRoXyB3aXRoX3VzZXJpbmZvIHVzZXJpbmZvXG4gIHw+IHdpdGhfIHdpdGhfaG9zdCBob3N0XG4gIHw+IHdpdGhfIHdpdGhfcG9ydCBwb3J0XG4gIHw+IHdpdGhfIHdpdGhfcGF0aF9vcHQgcGF0aFxuICB8PiB3aXRoXyB3aXRoX3F1ZXJ5X29wdCBxdWVyeVxuICB8PiB3aXRoXyB3aXRoX2ZyYWdtZW50IGZyYWdtZW50XG5cbmxldCBvZl9zdHJpbmcgcyA9XG4gICgqIFRvIHByZXNlcnZlIHRoZSBvbGQgcmVnZXggcGFyc2VyJ3MgYmVoYXZpb3IsIHdlIG9ubHkgcGFyc2UgYSBwcmVmaXgsIGFuZFxuICAgKiBzdG9wIHdoZW5ldmVyIHdlIGNhbid0IHBhcnNlIG1vcmUuICopXG4gIG1hdGNoIEFuZ3N0cm9tLnBhcnNlX3N0cmluZyB+Y29uc3VtZTpQcmVmaXggUGFyc2VyLnVyaV9yZWZlcmVuY2UgcyB3aXRoXG4gIHwgT2sgdCAtPiB0XG4gIHwgRXJyb3IgXyAtPlxuICAgICgqIFNob3VsZG4ndCByZWFsbHkgaGFwcGVuIGlmIHRoZSBwYXJzZXIgaXMgZm9yZ2l2aW5nLiAqKVxuICAgIGVtcHR5XG5cbm1vZHVsZSBBYnNvbHV0ZV9odHRwID0gc3RydWN0XG4gIHR5cGUgdXJpID0gdFxuICB0eXBlIHQgPVxuICAgIHsgc2NoZW1lIDogWyBgSHR0cCB8IGBIdHRwcyBdO1xuICAgICAgdXNlcmluZm86IFVzZXJpbmZvLnQgb3B0aW9uO1xuICAgICAgaG9zdDogWyBgSXB2NF9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSXB2Nl9saXRlcmFsIG9mIHN0cmluZ1xuICAgICAgICAgICAgfCBgSG9zdCBvZiBQY3QuZGVjb2RlZF07XG4gICAgICBwb3J0IDogaW50IG9wdGlvbjtcbiAgICAgIHBhdGggOiBQYXRoLnQ7XG4gICAgICBxdWVyeSA6IFF1ZXJ5LnQ7XG4gICAgICBmcmFnbWVudCA6IFBjdC5kZWNvZGVkIG9wdGlvblxuICAgIH1cblxuICBsZXQgKCBsZXQqICkgPSBSZXN1bHQuYmluZFxuXG4gIGxldCB0b191cmkgeyBzY2hlbWU7IHVzZXJpbmZvOyBob3N0OyBwb3J0OyBwYXRoOyBxdWVyeTsgZnJhZ21lbnQgfSA9XG4gICAgbGV0IHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBgSHR0cCAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cFwiXG4gICAgICB8IGBIdHRwcyAtPiBQY3QuY2FzdF9kZWNvZGVkIFwiaHR0cHNcIlxuICAgIGluXG4gICAgKHsgc2NoZW1lID0gU29tZSBzY2hlbWU7XG4gICAgICAgdXNlcmluZm87XG4gICAgICAgaG9zdCA9IFNvbWUgaG9zdDtcbiAgICAgICBwb3J0O1xuICAgICAgIHBhdGg7XG4gICAgICAgcXVlcnk7XG4gICAgICAgZnJhZ21lbnQgfSA6IHVyaSlcbiAgOztcblxuICBsZXQgb2ZfdXJpICh7IHNjaGVtZTsgdXNlcmluZm87IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudCB9OiB1cmkpID1cbiAgICBsZXQqIHNjaGVtZSA9XG4gICAgICBtYXRjaCBzY2hlbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEVycm9yIChgTXNnIFwiTm8gc2NoZW1lIHByZXNlbnQgaW4gVVJJXCIpXG4gICAgICB8IFNvbWUgc2NoZW1lIC0+XG4gICAgICAgIChtYXRjaCBQY3QudW5jYXN0X2RlY29kZWQgc2NoZW1lIHdpdGhcbiAgICAgICAgIHwgXCJodHRwXCIgLT4gT2sgYEh0dHBcbiAgICAgICAgIHwgXCJodHRwc1wiIC0+IE9rIGBIdHRwc1xuICAgICAgICAgfCB1bnN1cHBvcnRlZF9zY2hlbWUgLT5cbiAgICAgICAgICAgRXJyb3JcbiAgICAgICAgICAgICAoYE1zZ1xuICAgICAgICAgICAgICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgIFwiT25seSBodHRwIGFuZCBodHRwcyBVUklzIGFyZSBzdXBwb3J0ZWQuICVzIGlzIGludmFsaWQuXCJcbiAgICAgICAgICAgICAgICAgICB1bnN1cHBvcnRlZF9zY2hlbWUpKSlcbiAgICBpblxuICAgIGxldCogaG9zdCA9IE9wdGlvbi50b19yZXN1bHQgfm5vbmU6KGBNc2cgXCJob3N0IGlzIHJlcXVpcmVkIGZvciBIVFRQKFMpIHVyaXNcIikgaG9zdCBpblxuICAgIE9rIHsgc2NoZW1lOyB1c2VyaW5mbzsgaG9zdDsgcG9ydDsgcGF0aDsgcXVlcnk7IGZyYWdtZW50IH1cbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nIHMgPSBtYXRjaCBvZl9zdHJpbmcgcyB8PiBvZl91cmkgd2l0aFxuICAgIHwgT2sgdCAtPiB0XG4gICAgfCBFcnJvciAoYE1zZyBlcnJvcikgLT4gZmFpbHdpdGggZXJyb3JcblxuICBsZXQgdG9fc3RyaW5nID9wY3RfZW5jb2RlciB0ID0gdG9fdXJpIHQgfD4gdG9fc3RyaW5nID9wY3RfZW5jb2RlclxuXG4gIGxldCBub3JtYWxpemUgdCA9XG4gICAgeyB0IHdpdGhcbiAgICAgIGhvc3QgPSBtYXRjaCB0Lmhvc3Qgd2l0aFxuICAgICAgIHwgKGBJcHY0X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2NF9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBJcHY2X2xpdGVyYWwgaG9zdCkgLT5cbiAgICAgICAgIChgSXB2Nl9saXRlcmFsIChTdHJpbmcubG93ZXJjYXNlX2FzY2lpIGhvc3QpKVxuICAgICAgIHwgKGBIb3N0IGhvc3QpIC0+XG4gICAgICAgICAoYEhvc3QgKFBjdC5jYXN0X2RlY29kZWQgKFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgKFBjdC51bmNhc3RfZGVjb2RlZCBob3N0KSkpKVxuICAgIH1cblxuICBsZXQgbWFrZSB+c2NoZW1lIH5ob3N0ID91c2VyaW5mbyA/cG9ydCA/cGF0aCA/cXVlcnkgP2ZyYWdtZW50ICgpID1cbiAgICBsZXQgZGVjb2RlID0gZnVuY3Rpb25cbiAgICAgIHxTb21lIHggLT4gU29tZSAoUGN0LmNhc3RfZGVjb2RlZCB4KSB8Tm9uZSAtPiBOb25lIGluXG4gICAgbGV0IHVzZXJpbmZvID0gbWF0Y2ggdXNlcmluZm8gd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmUgfCBTb21lIHUgLT4gU29tZSAodXNlcmluZm9fb2ZfZW5jb2RlZCB1KSBpblxuICAgIGxldCBwYXRoID0gbWF0Y2ggcGF0aCB3aXRoXG4gICAgICB8Tm9uZSAtPiBbXSB8IFNvbWUgcCAtPlxuICAgICAgICBsZXQgcGF0aCA9IHBhdGhfb2ZfZW5jb2RlZCBwIGluXG4gICAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgICB8ICBcIi9cIjo6XyB8ICBbXSAtPiBwYXRoXG4gICAgICAgIHwgXyAgLT4gXCIvXCI6OnBhdGhcbiAgICBpblxuICAgIGxldCBxdWVyeSA9IG1hdGNoIHF1ZXJ5IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBRdWVyeS5LViBbXVxuICAgICAgfCBTb21lIHAgLT4gUXVlcnkuS1YgcFxuICAgIGluXG4gICAgbm9ybWFsaXplXG4gICAgICB7IHNjaGVtZTtcbiAgICAgICAgdXNlcmluZm87XG4gICAgICAgIGhvc3Q9IGRlY29kZV9ob3N0IGhvc3Q7IHBvcnQ7IHBhdGg7IHF1ZXJ5OyBmcmFnbWVudD1kZWNvZGUgZnJhZ21lbnQgfVxuXG4gIGxldCBob3N0IHQgPVxuICAgIG1hdGNoIHQuaG9zdCB3aXRoXG4gICAgfCAoYElwdjRfbGl0ZXJhbCBoIHwgYElwdjZfbGl0ZXJhbCBoKSAtPiBoXG4gICAgfCAoYEhvc3QgaCkgLT4gKFBjdC51bmNhc3RfZGVjb2RlZCBoKVxuXG4gIGxldCBzY2hlbWUgdCA9IHQuc2NoZW1lXG5lbmRcbiIsIm9wZW4gVXJpXG5cbm1vZHVsZSBEZXJpdmVkID1cbnN0cnVjdFxuXG5cdG9wZW4gU2V4cGxpYjAuU2V4cF9jb252XG5cblx0dHlwZSBjb21wb25lbnQgPSBbXG5cdCAgfCBgU2NoZW1lXG5cdCAgfCBgQXV0aG9yaXR5XG5cdCAgfCBgVXNlcmluZm8gKCogc3ViY29tcG9uZW50IG9mIGF1dGhvcml0eSBpbiBzb21lIHNjaGVtZXMgKilcblx0ICB8IGBIb3N0ICgqIHN1YmNvbXBvbmVudCBvZiBhdXRob3JpdHkgaW4gc29tZSBzY2hlbWVzICopXG5cdCAgfCBgUGF0aFxuXHQgIHwgYFF1ZXJ5XG5cdCAgfCBgUXVlcnlfa2V5XG5cdCAgfCBgUXVlcnlfdmFsdWVcblx0ICB8IGBGcmFnbWVudFxuICAgICAgICAgIHwgYEdlbmVyaWNcbiAgICAgICAgICB8IGBDdXN0b20gb2YgKGNvbXBvbmVudCAqIHN0cmluZyAqIHN0cmluZylcblx0XSBbQEBkZXJpdmluZyBzZXhwXVxuXG5cdHR5cGUgdCA9IHtcbiAgICAgICAgICBzY2hlbWU6IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgdXNlcmluZm86IHN0cmluZyBvcHRpb24gW0BkZWZhdWx0IE5vbmVdIFtAc2V4cF9kcm9wX2RlZmF1bHQuc2V4cF07XG4gICAgICAgICAgaG9zdDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBwb3J0OiBpbnQgb3B0aW9uIFtAZGVmYXVsdCBOb25lXSBbQHNleHBfZHJvcF9kZWZhdWx0LnNleHBdO1xuICAgICAgICAgIHBhdGg6IHN0cmluZyBbQGRlZmF1bHQgXCJcIl0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXTtcbiAgICAgICAgICBxdWVyeTogKHN0cmluZyAqIHN0cmluZyBsaXN0KSBsaXN0IFtAc2V4cC5saXN0XTtcbiAgICAgICAgICBmcmFnbWVudDogc3RyaW5nIG9wdGlvbiBbQGRlZmF1bHQgTm9uZV0gW0BzZXhwX2Ryb3BfZGVmYXVsdC5zZXhwXVxuXHR9IFtAQGRlcml2aW5nIHNleHBdXG5cbmVuZFxuXG5vcGVuIERlcml2ZWRcblxubGV0IGNvbXBvbmVudF9vZl9zZXhwID0gY29tcG9uZW50X29mX3NleHBcbmxldCBzZXhwX29mX2NvbXBvbmVudCA9IHNleHBfb2ZfY29tcG9uZW50XG5cbmxldCB0X29mX3NleHAgc2V4cCA9XG5cdGxldCB0ID0gdF9vZl9zZXhwIHNleHAgaW5cblx0VXJpLm1ha2Vcblx0XHQ/c2NoZW1lOnQuc2NoZW1lXG5cdFx0P3VzZXJpbmZvOnQudXNlcmluZm9cblx0XHQ/aG9zdDp0Lmhvc3Rcblx0XHQ/cG9ydDp0LnBvcnRcblx0XHR+cGF0aDp0LnBhdGhcblx0XHR+cXVlcnk6dC5xdWVyeVxuXHRcdD9mcmFnbWVudDp0LmZyYWdtZW50XG5cdFx0KClcblxubGV0IHNleHBfb2ZfdCB0ID1cblx0c2V4cF9vZl90IHtcblx0XHRzY2hlbWUgPSBzY2hlbWUgdDtcblx0XHR1c2VyaW5mbyA9IHVzZXJpbmZvIHQ7XG5cdFx0aG9zdCA9IGhvc3QgdDtcblx0XHRwb3J0ID0gcG9ydCB0O1xuXHRcdHBhdGggPSBwYXRoIHQ7XG5cdFx0cXVlcnkgPSBxdWVyeSB0O1xuXHRcdGZyYWdtZW50ID0gZnJhZ21lbnQgdFxuXHR9XG5cbnR5cGUgY29tcG9uZW50ID0gVXJpLmNvbXBvbmVudFxubGV0IGNvbXBhcmUgYSBiID0gVXJpLmNvbXBhcmUgYSBiXG5sZXQgZXF1YWwgYSBiID0gVXJpLmVxdWFsIGEgYlxudHlwZSB0ID0gVXJpLnRcbiIsIm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gQ29yZVxuXG5sZXQgaXNfdmFsaWRfaWQgcyA9XG4gIGlmIFN0cmluZy5lcXVhbCBzIFwiXCJcbiAgdGhlbiBmYWxzZVxuICBlbHNlIChcbiAgICBtYXRjaCBzLlswXSB3aXRoXG4gICAgfCAnMCcgLi4gJzknIC0+IGZhbHNlXG4gICAgfCBfIC0+XG4gICAgICBTdHJpbmcuZm9yX2FsbCBzIH5mOihmdW5jdGlvblxuICAgICAgICB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onIHwgJ18nIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZSkpXG47O1xuXG5sZXQgaXNfdmFsaWRfZmllbGRfbmFtZSB+c2VlbiBuYW1lID0gaXNfdmFsaWRfaWQgbmFtZSAmJiBub3QgKFNldC5tZW0gc2VlbiBuYW1lKVxuXG5sZXQgcmVjIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyBsaXN0ID1cbiAgbWF0Y2ggKGxpc3QgOiBTZXhwLnQgbGlzdCkgd2l0aFxuICB8IFtdIC0+IFNvbWUgKExpc3QucmV2IHJldl9hY2MpXG4gIHwgQXRvbSBuYW1lIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBOb25lKSA6OiByZXZfYWNjIGluXG4gICAgbGV0IHNlZW4gPSBTZXQuYWRkIHNlZW4gbmFtZSBpblxuICAgIGtleV92YWx1ZV9zaGFwZSB+c2VlbiB+cmV2X2FjYyByZXN0XG4gIHwgTGlzdCBbIEF0b20gbmFtZTsgdiBdIDo6IHJlc3Qgd2hlbiBpc192YWxpZF9maWVsZF9uYW1lIH5zZWVuIG5hbWUgLT5cbiAgICBsZXQgcmV2X2FjYyA9IChuYW1lLCBTb21lIHYpIDo6IHJldl9hY2MgaW5cbiAgICBsZXQgc2VlbiA9IFNldC5hZGQgc2VlbiBuYW1lIGluXG4gICAga2V5X3ZhbHVlX3NoYXBlIH5zZWVuIH5yZXZfYWNjIHJlc3RcbiAgfCBfIC0+IE5vbmVcbjs7XG5cbmxldCByZWMgYW55X29mX3NleHAgPSBmdW5jdGlvblxuICB8IFNleHAuQXRvbSBzIC0+IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBzKVxuICB8IFNleHAuTGlzdCBbIEF0b20gbmFtZTsgdiBdIC0+IEpzLlVuc2FmZS5vYmogW3wgbmFtZSwgYW55X29mX3NleHAgdiB8XVxuICB8IFNleHAuTGlzdCBsIC0+XG4gICAgKG1hdGNoIGtleV92YWx1ZV9zaGFwZSB+c2VlbjpTdHJpbmcuU2V0LmVtcHR5IH5yZXZfYWNjOltdIGwgd2l0aFxuICAgICB8IE5vbmUgLT4gTGlzdC5tYXAgbCB+Zjphbnlfb2Zfc2V4cCB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IHw+IEpzLlVuc2FmZS5pbmplY3RcbiAgICAgfCBTb21lIFtdIC0+IEpzLmFycmF5IFt8fF0gfD4gSnMuVW5zYWZlLmluamVjdFxuICAgICB8IFNvbWUgbCAtPlxuICAgICAgIEpzLlVuc2FmZS5vYmpcbiAgICAgICAgIChMaXN0Lm1hcCBsIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgfCBuYW1lLCBTb21lIHYgLT4gbmFtZSwgYW55X29mX3NleHAgdlxuICAgICAgICAgICAgfCBuYW1lLCBOb25lIC0+IG5hbWUsIEpzLlVuc2FmZS5pbmplY3QgSnMubnVsbClcbiAgICAgICAgICB8PiBBcnJheS5vZl9saXN0KSlcbjs7XG5cbmxldCBsb2dfcyBzZXhwID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKGFueV9vZl9zZXhwIHNleHApXG5sZXQgbG9nX3NfYXNfc3RyaW5nIHNleHAgPSBGaXJlYnVnLmNvbnNvbGUjI2xvZyAoSnMuc3RyaW5nIChTZXhwLnRvX3N0cmluZ19odW0gc2V4cCkpXG5cbmxldCVleHBlY3RfdGVzdCBfID1cbiAgbGV0IG1vZHVsZSBNID0gc3RydWN0XG4gICAgdHlwZSB1ID0geyBzb21lX25hbWUgOiBzdHJpbmcgfSBbQEBkZXJpdmluZyBzZXhwXVxuXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgRm9vXG4gICAgICB8IEJhciBvZlxuICAgICAgICAgIHsgZmllbGQxIDogdVxuICAgICAgICAgIDsgZmllbGQyIDogc3RyaW5nIG9wdGlvblxuICAgICAgICAgIH1cbiAgICBbQEBkZXJpdmluZyBzZXhwXVxuICBlbmRcbiAgaW5cbiAgbGV0IHRvX3N0cmluZyA6IEpzLlVuc2FmZS5hbnkgLT4gc3RyaW5nID1cbiAgICBmdW4gYW55IC0+IEpzLnRvX3N0cmluZyAoSnMuX0pTT04jI3N0cmluZ2lmeSBhbnkgOiBKcy5qc19zdHJpbmcgSnMudClcbiAgaW5cbiAgbGV0IG9wZW4gTSBpblxuICBwcmludF9lbmRsaW5lICh0b19zdHJpbmcgKGFueV9vZl9zZXhwIChzZXhwX29mX3QgRm9vKSkpO1xuICBbJWV4cGVjdCB7fCBcIkZvb1wiIHx9XTtcbiAgcHJpbnRfZW5kbGluZVxuICAgICh0b19zdHJpbmdcbiAgICAgICAoYW55X29mX3NleHBcbiAgICAgICAgICAoc2V4cF9vZl90XG4gICAgICAgICAgICAgKEJhciB7IGZpZWxkMSA9IHsgc29tZV9uYW1lID0gXCJkZWJ1Z1wiIH07IGZpZWxkMiA9IFNvbWUgXCJvdGhlciBzdHJpbmdcIiB9KSkpKTtcbiAgWyVleHBlY3Qge3wge1wiQmFyXCI6bnVsbCxcImZpZWxkMVwiOntcInNvbWVfbmFtZVwiOlwiZGVidWdcIn0sXCJmaWVsZDJcIjpbXCJvdGhlciBzdHJpbmdcIl19IHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwiZHVwbGljYXRlIGtleXMgYXJlIGRpc3BsYXllZCBjb3JyZWN0bHlcIiA9XG4gIGxldCB0b19zdHJpbmcgOiBKcy5VbnNhZmUuYW55IC0+IHN0cmluZyA9XG4gICAgZnVuIGFueSAtPiBKcy50b19zdHJpbmcgKEpzLl9KU09OIyNzdHJpbmdpZnkgYW55IDogSnMuanNfc3RyaW5nIEpzLnQpXG4gIGluXG4gIGxldCBzZXhwX3dpdGhfZHVwbGljYXRlX2tleXMgPSB7fCAoKEEgQikgKEEgQykpIHx9IHw+IFNleHAub2Zfc3RyaW5nIGluXG4gIHByaW50X2VuZGxpbmUgKHRvX3N0cmluZyAoYW55X29mX3NleHAgc2V4cF93aXRoX2R1cGxpY2F0ZV9rZXlzKSk7XG4gIFslZXhwZWN0IHt8IFt7XCJBXCI6XCJCXCJ9LHtcIkFcIjpcIkNcIn1dIHx9XVxuOztcblxubGV0JWV4cGVjdF90ZXN0IFwibm8gc3RhY2sgb3ZlcmZsb3dcIiA9XG4gIGxldCBhID0gQXJyYXkuaW5pdCAxMDAwMCB+ZjooZnVuIGkgLT4gc3ByaW50ZiBcImYlZFwiIGksIGkpIGluXG4gIGxldCBzZXhwID0gWyVzZXhwX29mOiAoc3RyaW5nICogaW50KSBhcnJheV0gYSBpblxuICBsZXQgeCA9IGFueV9vZl9zZXhwIHNleHAgaW5cbiAgcHJpbnRmIFwiJWRcIiAoSnMuVW5zYWZlLmNvZXJjZSB4KSMjLmY5OTk7XG4gIFslZXhwZWN0IHt8IDk5OSB8fV1cbjs7XG4iLCJtb2R1bGUgQXN5bmNfanNfZGVidWcgPSBEZWJ1Z1xub3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgVXJpID0gc3RydWN0XG4gIGluY2x1ZGUgVXJpXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFVyaV9zZXhwLnNleHBfb2ZfdFxuZW5kXG5cbm1vZHVsZSBXZWJzb2NrZXRfY29ubmVjdGlvbiA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IEFzeW5jX3JwY19rZXJuZWwuUnBjLkNvbm5lY3Rpb25cblxuICB0eXBlICgncmVzdCwgJ2ltcGxlbWVudGF0aW9ucykgY2xpZW50X3QgPVxuICAgID91cmk6VXJpLnRcbiAgICAtPiA/aGVhcnRiZWF0X2NvbmZpZzpULkhlYXJ0YmVhdF9jb25maWcudFxuICAgIC0+ID9kZXNjcmlwdGlvbjpJbmZvLnRcbiAgICAtPiA/aW1wbGVtZW50YXRpb25zOidpbXBsZW1lbnRhdGlvbnMgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLnRcbiAgICAtPiAncmVzdFxuXG4gIG1vZHVsZSBDbG9zZV9jb2RlIDogc2lnXG4gICAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBdXG5cbiAgICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgICB2YWwgb2ZfZXZlbnQgOiBfIFdlYlNvY2tldHMuY2xvc2VFdmVudCBKcy50IC0+IHRcbiAgICB2YWwgbm9ybWFsX2Nsb3N1cmUgOiB0XG4gIGVuZCA9IHN0cnVjdFxuICAgIHR5cGUgY2xvc2VfZXZlbnRfY29kZSA9IGludCBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwXVxuXG4gICAgbGV0IGFsbF9vZl9jbG9zZV9ldmVudF9jb2RlID0gW11cblxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5vcm1hbF9jbG9zdXJlXG4gICAgICB8IEdvaW5nX2F3YXlcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgVW5zdXBwb3J0ZWRfZGF0YVxuICAgICAgfCBOb19zdGF0dXNfUmVjZWl2ZWRcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCBJbnZhbGlkX2ZyYW1lX3BheWxvYWRfZGF0YVxuICAgICAgfCBQb2xpY3lfdmlvbGF0aW9uXG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCBNaXNzaW5nX2V4dGVuc2lvblxuICAgICAgfCBJbnRlcm5hbF9lcnJvclxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgVHJ5X2FnYWluX2xhdGVyXG4gICAgICB8IEJhZF9nYXRld2F5XG4gICAgICB8IFRMU19oYW5kc2hha2VcbiAgICAgIHwgVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICAgIHwgSW52YWxpZF9jbG9zZV9ldmVudF9jb2RlIG9mIGNsb3NlX2V2ZW50X2NvZGVcbiAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBlbnVtZXJhdGUsIHNleHBdXG5cbiAgICBsZXQgbm9ybWFsX2Nsb3N1cmUgPSBOb3JtYWxfY2xvc3VyZVxuXG4gICAgbGV0IG9mX2ludCA9IGZ1bmN0aW9uXG4gICAgICB8IDEwMDAgLT4gTm9ybWFsX2Nsb3N1cmVcbiAgICAgIHwgMTAwMSAtPiBHb2luZ19hd2F5XG4gICAgICB8IDEwMDIgLT4gUHJvdG9jb2xfZXJyb3JcbiAgICAgIHwgMTAwMyAtPiBVbnN1cHBvcnRlZF9kYXRhXG4gICAgICB8IDEwMDUgLT4gTm9fc3RhdHVzX1JlY2VpdmVkXG4gICAgICB8IDEwMDYgLT4gQWJub3JtYWxfY2xvc3VyZVxuICAgICAgfCAxMDA3IC0+IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhXG4gICAgICB8IDEwMDggLT4gUG9saWN5X3Zpb2xhdGlvblxuICAgICAgfCAxMDA5IC0+IE1lc3NhZ2VfdG9vX2JpZ1xuICAgICAgfCAxMDEwIC0+IE1pc3NpbmdfZXh0ZW5zaW9uXG4gICAgICB8IDEwMTEgLT4gSW50ZXJuYWxfZXJyb3JcbiAgICAgIHwgMTAxMiAtPiBTZXJ2aWNlX3Jlc3RhcnRcbiAgICAgIHwgMTAxMyAtPiBUcnlfYWdhaW5fbGF0ZXJcbiAgICAgIHwgMTAxNCAtPiBCYWRfZ2F0ZXdheVxuICAgICAgfCAxMDE1IC0+IFRMU19oYW5kc2hha2VcbiAgICAgIHwgY29kZSAtPlxuICAgICAgICBpZiBjb2RlID49IDMwMDAgJiYgY29kZSA8PSA0OTk5XG4gICAgICAgIHRoZW4gVW5rbm93bl9jbG9zZV9ldmVudF9jb2RlIGNvZGVcbiAgICAgICAgZWxzZSBJbnZhbGlkX2Nsb3NlX2V2ZW50X2NvZGUgY29kZVxuICAgIDs7XG5cbiAgICBsZXQgb2ZfZXZlbnQgY2xvc2VfZXZlbnQgPSBvZl9pbnQgY2xvc2VfZXZlbnQjIy5jb2RlXG5cbiAgICBsZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgICAgIHwgTm9ybWFsX2Nsb3N1cmUgLT4gMTAwMFxuICAgICAgfCBHb2luZ19hd2F5IC0+IDEwMDFcbiAgICAgIHwgUHJvdG9jb2xfZXJyb3IgLT4gMTAwMlxuICAgICAgfCBVbnN1cHBvcnRlZF9kYXRhIC0+IDEwMDNcbiAgICAgIHwgTm9fc3RhdHVzX1JlY2VpdmVkIC0+IDEwMDVcbiAgICAgIHwgQWJub3JtYWxfY2xvc3VyZSAtPiAxMDA2XG4gICAgICB8IEludmFsaWRfZnJhbWVfcGF5bG9hZF9kYXRhIC0+IDEwMDdcbiAgICAgIHwgUG9saWN5X3Zpb2xhdGlvbiAtPiAxMDA4XG4gICAgICB8IE1lc3NhZ2VfdG9vX2JpZyAtPiAxMDA5XG4gICAgICB8IE1pc3NpbmdfZXh0ZW5zaW9uIC0+IDEwMTBcbiAgICAgIHwgSW50ZXJuYWxfZXJyb3IgLT4gMTAxMVxuICAgICAgfCBTZXJ2aWNlX3Jlc3RhcnQgLT4gMTAxMlxuICAgICAgfCBUcnlfYWdhaW5fbGF0ZXIgLT4gMTAxM1xuICAgICAgfCBCYWRfZ2F0ZXdheSAtPiAxMDE0XG4gICAgICB8IFRMU19oYW5kc2hha2UgLT4gMTAxNVxuICAgICAgfCBVbmtub3duX2Nsb3NlX2V2ZW50X2NvZGUgY29kZSAtPiBjb2RlXG4gICAgICB8IEludmFsaWRfY2xvc2VfZXZlbnRfY29kZSBjb2RlIC0+IGNvZGVcbiAgICA7O1xuXG4gICAgbGV0JXRlc3RfdW5pdCBcInRvX2ludCAtPiBvZl9pbnQgcm91bmQtdHJpcFwiID1cbiAgICAgIExpc3QuaXRlciBhbGwgfmY6KGZ1biB0IC0+IGFzc2VydCAoWyVjb21wYXJlLmVxdWFsOiB0XSAob2ZfaW50ICh0b19pbnQgdCkpIHQpKVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBjbG9zZV93ZWJzb2NrZXQgKHdlYnNvY2tldCA6IFdlYlNvY2tldHMud2ViU29ja2V0IEpzLnQpIHJlYXNvbiA9XG4gICAgKCogW2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXSBkb2VzIG5vdGhpbmcgaWYgdGhlIGNvbm5lY3Rpb24gaXMgYWxyZWFkeSBDbG9zZWQuICopXG4gICAgbGV0IGNsb3NlIHJlYXNvbiA9XG4gICAgICAoKiBUaGUgY29kZSBtdXN0IGJlIGVpdGhlciAxMDAwIChOb3JtYWxfY2xvc3VyZSksIG9yIGJldHdlZW4gMzAwMCBhbmQgNDk5OVxuICAgICAgICAgKFVua25vd25fY2xvc2VfZXZlbnRfY29kZSkuICopXG4gICAgICB3ZWJzb2NrZXQjI2Nsb3NlX3dpdGhDb2RlQW5kUmVhc29uXG4gICAgICAgIENsb3NlX2NvZGUuKHRvX2ludCBub3JtYWxfY2xvc3VyZSlcbiAgICAgICAgKEpzLnN0cmluZyByZWFzb24pXG4gICAgaW5cbiAgICBtYXRjaCBjbG9zZSByZWFzb24gd2l0aFxuICAgIHwgKCkgLT4gKClcbiAgICB8IGV4Y2VwdGlvbiAoXyA6IEV4bi50KSAtPlxuICAgICAgKCogdGhpcyBjYW4gZmFpbCBpZiBbcmVhc29uXSBpcyB0b28gbG9uZyBvciBjb250YWlucyBpbnZhbGlkIFVURjggKilcbiAgICAgIGNsb3NlIFwiY2xvc2UtcmVhc29uLXdhcy10b28tbG9uZy1vci1jb250YWlucy1pbnZhbGlkLXV0ZjhcIlxuICA7O1xuXG4gIGxldCBjb25uZWN0X3dlYnNvY2tldCB1cmwgfmZyb21fc2VydmVyIH50b19zZXJ2ZXIgPVxuICAgIG1hdGNoIG5ldyVqcyBXZWJTb2NrZXRzLndlYlNvY2tldCAoSnMuc3RyaW5nIChVcmkudG9fc3RyaW5nIHVybCkpIHdpdGhcbiAgICB8IGV4Y2VwdGlvbiBKcy5FcnJvciBleG4gLT5cbiAgICAgICgqIGUuZy4gU0VDVVJJVFlfRVJSLCB0aG91Z2ggbm90ZSB0aGF0IGUuZy4gY29ubmVjdGluZyB0byB3czovLyBmcm9tIGEgaHR0cHM6Ly8gcGFnZVxuICAgICAgICAgaW4gY2hyb21lIHNlZW1zIHRvIG1hbmlmZXN0IGFzIHN1Y2Nlc3NmdWwgY29uc3RydWN0aW9uIGJ1dCBpbW1lZGlhdGUgY2xvc3VyZVxuICAgICAgICAgKHNlZSBiZWxvdykuICAqKVxuICAgICAgcmV0dXJuIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgKEpzLnRvX3N0cmluZyBleG4jIy5tZXNzYWdlKSlcbiAgICB8IGV4Y2VwdGlvbiBleG4gLT4gcmV0dXJuIChPcl9lcnJvci5vZl9leG4gZXhuKVxuICAgIHwgd2Vic29ja2V0IC0+XG4gICAgICBsZXQgY29ubmVjdGVkX2l2YXIgPSBJdmFyLmNyZWF0ZSAoKSBpblxuICAgICAgbGV0IGNsZWFudXAgfnJlYXNvbiA9XG4gICAgICAgICgqIElmIHdlIGhhdmVuJ3QgY29ubmVjdGVkIHlldCwgdGhlbiBjb25uZWN0aW5nIGp1c3QgZmFpbGVkLiBPdGhlcndpc2UgaXQgd2FzIHRoZVxuICAgICAgICAgICBjbG9zdXJlIG9mIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24uICopXG4gICAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoRXJyb3IgcmVhc29uKTtcbiAgICAgICAgKCogW1BpcGUuY2xvc2VdIGFuZCBbV2ViU29ja2V0LmNsb3NlXSBhcmUgYWxsIGlkZW1wb3RlbnQuICopXG4gICAgICAgIFBpcGUuY2xvc2UgZnJvbV9zZXJ2ZXI7XG4gICAgICAgIFBpcGUuY2xvc2VfcmVhZCB0b19zZXJ2ZXI7XG4gICAgICAgIGNsb3NlX3dlYnNvY2tldCB3ZWJzb2NrZXQgKEVycm9yLnRvX3N0cmluZ19odW0gcmVhc29uKVxuICAgICAgaW5cbiAgICAgIGxldCBvbmNsb3NlIChjbG9zZV9ldmVudCA6IF8gV2ViU29ja2V0cy5jbG9zZUV2ZW50IEpzLnQpID1cbiAgICAgICAgKCogVGhlIFJQQyBBUEkgZG9lc24ndCBnaXZlIHVzIGEgZ29vZCBwbGFjZSB0byBwdXQgZGV0YWlscyBhYm91dCBfd2h5XyB0aGVcbiAgICAgICAgICAgY29ubmVjdGlvbiBjbG9zZWQuXG5cbiAgICAgICAgICAgTm90ZSB0aGF0IGluIENocm9tZSBbY2xvc2VfZXZlbnQjIy5yZWFzb25dIGlzIHR5cGljYWxseSBlbXB0eSBhbmRcbiAgICAgICAgICAgW2Nsb3NlX2V2ZW50IyMuY29kZV0gZG9lc24ndCBhY3R1YWxseSBwcm92aWRlIHRoYXQgbXVjaCBpbnNpZ2h0IGludG8gd2h5IHRoZVxuICAgICAgICAgICBjb25uZWN0aW9uIGZhaWxlZCAoaXQncyBhdmFpbGFibGUgaW4gdGhlIGluc3BlY3RvciBjb25zb2xlLCBidXQgYXMgZmFyIGFzIEkgY2FuXG4gICAgICAgICAgIHRlbGwsIG5vdCBhdmFpbGFibGUgdG8gdXMpLiBTbyBpdCdzIG5vdCBsaWtlIHdlJ3JlIGxvc2luZyBtdWNoIGFueXdheS4gKilcbiAgICAgICAgbGV0IHJlYXNvbiA9XG4gICAgICAgICAgbGV0IHdoYXRfaGFwcGVuZWQgPVxuICAgICAgICAgICAgbWF0Y2ggSXZhci5pc19mdWxsIGNvbm5lY3RlZF9pdmFyIHdpdGhcbiAgICAgICAgICAgIHwgZmFsc2UgLT4gXCJjb25uZWN0aW9uIGZhaWxlZFwiXG4gICAgICAgICAgICB8IHRydWUgLT4gXCJjbG9zZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgc3ByaW50ZlxuICAgICAgICAgICAgIVwiV2ViU29ja2V0ICVzICgle3NleHA6Q2xvc2VfY29kZS50fSlcIlxuICAgICAgICAgICAgd2hhdF9oYXBwZW5lZFxuICAgICAgICAgICAgKENsb3NlX2NvZGUub2ZfZXZlbnQgY2xvc2VfZXZlbnQpXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIHJlYXNvbik7XG4gICAgICAgIEpzLl9mYWxzZVxuICAgICAgaW5cbiAgICAgIGxldCBvbm1lc3NhZ2UgKGV2ZW50IDogXyBXZWJTb2NrZXRzLm1lc3NhZ2VFdmVudCBKcy50KSA9XG4gICAgICAgIGxldCBkYXRhID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLm9mX2FycmF5QnVmZmVyIGV2ZW50IyMuZGF0YV9idWZmZXIgaW5cbiAgICAgICAgUGlwZS53cml0ZV93aXRob3V0X3B1c2hiYWNrX2lmX29wZW4gZnJvbV9zZXJ2ZXIgZGF0YTtcbiAgICAgICAgSnMuX2ZhbHNlXG4gICAgICBpblxuICAgICAgbGV0IGNvbm5lY3RlZCAoKSA9IEl2YXIuZmlsbF9pZl9lbXB0eSBjb25uZWN0ZWRfaXZhciAoT2sgKCkpIGluXG4gICAgICB3ZWJzb2NrZXQjIy5iaW5hcnlUeXBlIDo9IEpzLnN0cmluZyBcImFycmF5YnVmZmVyXCI7XG4gICAgICAoKiBpZiB0aGUgd2Vic29ja2V0IGlzIGFscmVhZHkgY2xvc2VkLCBbb25jbG9zZV0gd29uJ3QgYmUgcmUtZmlyZWQgd2hlbiB3ZSBhZGQgb3VyXG4gICAgICAgICBoYW5kbGVyLiAqKVxuICAgICAgKG1hdGNoIHdlYnNvY2tldCMjLnJlYWR5U3RhdGUgd2l0aFxuICAgICAgIHwgQ09OTkVDVElORyAtPlxuICAgICAgICAgd2Vic29ja2V0IyMub25vcGVuXG4gICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgY29ubmVjdGVkICgpO1xuICAgICAgICAgICBKcy5fZmFsc2UpXG4gICAgICAgfCBPUEVOIC0+IGNvbm5lY3RlZCAoKVxuICAgICAgIHwgQ0xPU0lORyB8IENMT1NFRCAtPlxuICAgICAgICAgKCogZS5nLiwgUmVmdXNlZCB0byBjb25uZWN0IHRvIHdzOiBiZWNhdXNlIGl0IHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5ICopXG4gICAgICAgICBjbGVhbnVwIH5yZWFzb246KEVycm9yLm9mX3N0cmluZyBcIldlYlNvY2tldCBmYWlsZWQgaW1tZWRpYXRlbHkgKGlsbGVnYWwgVVJJPylcIikpO1xuICAgICAgKCogVXBvbiBhbiBlcnJvciwgW29uZXJyb3JdIGZpcmVzIGFuZCB0aGVuIFtvbmNsb3NlXSBmaXJlcyAoaXQncyBwb3NzaWJsZSBmb3IgYVxuICAgICAgICAgZ3JhY2VmdWwgY2xvc3VyZSB0byBjYWxsIFtvbmNsb3NlXSBvbmx5KS4gU2luY2UgQXN5bmNfUlBDIGhhcyBubyBub3Rpb24gb2ZcbiAgICAgICAgIGdyYWNlZnVsIGNsb3N1cmUsIHdlIG9ubHkgbmVlZCB0byBoYW5kbGUgW29uY2xvc2VdIGFueXdheS4gRnVydGhlciwgdGhlIGV2ZW50XG4gICAgICAgICBwYXNzZWQgdG8gW29uZXJyb3JdIGNvbnRhaW5zIG5vIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4gIE5vdGUgdGhhdCB3ZVxuICAgICAgICAgc3RpbGwgbGlzdGVuIHRvIFtvbmVycm9yXSB0byBwcmV2ZW50IHRoZSBlcnJvciBmcm9tIGxlYWtpbmcgdG8gdW5jb250cm9sbGVkXG4gICAgICAgICBjb250ZXh0ICopXG4gICAgICB3ZWJzb2NrZXQjIy5vbmVycm9yXG4gICAgICA6PSBEb20uaGFuZGxlciAoZnVuIChfIDogXyBEb20uZXZlbnQgSnMudCkgLT5cbiAgICAgICAgQXN5bmNfanNfZGVidWcubG9nX3MgWyVtZXNzYWdlIFwid2Vic29ja2V0IGVuY291bnRlcmVkIHVuZXhwZWN0ZWQgZXJyb3JcIl07XG4gICAgICAgIEpzLl9mYWxzZSk7XG4gICAgICB3ZWJzb2NrZXQjIy5vbm1lc3NhZ2UgOj0gRG9tLmhhbmRsZXIgb25tZXNzYWdlO1xuICAgICAgd2Vic29ja2V0IyMub25jbG9zZSA6PSBEb20uaGFuZGxlciBvbmNsb3NlO1xuICAgICAgbGV0IGNvbm5lY3RlZF9kZWZlcnJlZCA9IEl2YXIucmVhZCBjb25uZWN0ZWRfaXZhciBpblxuICAgICAgZG9uJ3Rfd2FpdF9mb3JcbiAgICAgICAgKG1hdGNoJWJpbmQgY29ubmVjdGVkX2RlZmVycmVkIHdpdGhcbiAgICAgICAgIHwgRXJyb3IgKF8gOiBFcnJvci50KSAtPiByZXR1cm4gKClcbiAgICAgICAgIHwgT2sgKCkgLT5cbiAgICAgICAgICAgUGlwZS5pdGVyX3dpdGhvdXRfcHVzaGJhY2sgdG9fc2VydmVyIH5mOihmdW4gZGF0YSAtPlxuICAgICAgICAgICAgIG1hdGNoICh3ZWJzb2NrZXQjIy5yZWFkeVN0YXRlIDogV2ViU29ja2V0cy5yZWFkeVN0YXRlKSB3aXRoXG4gICAgICAgICAgICAgfCBDT05ORUNUSU5HIC0+XG4gICAgICAgICAgICAgICByYWlzZV9zIFslbWVzc2FnZSBcIkJVRzogb25vcGVuIGNhbGxlZCBidXQgcmVhZHlTdGF0ZSBpcyBDT05ORUNUSU5HXCJdXG4gICAgICAgICAgICAgfCBDTE9TSU5HIHwgQ0xPU0VEIC0+ICgpXG4gICAgICAgICAgICAgfCBPUEVOIC0+XG4gICAgICAgICAgICAgICBsZXQgYnVmZmVyID0gVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIGRhdGEgaW5cbiAgICAgICAgICAgICAgICh0cnkgd2Vic29ja2V0IyNzZW5kX2J1ZmZlciBidWZmZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgICBFcnJvci5yYWlzZSAoRXJyb3IudGFnIH50YWc6XCJ3ZWJzb2NrZXQjI3NlbmRfYnVmZmVyXCIgKEVycm9yLm9mX2V4biBleG4pKSkpKTtcbiAgICAgIGxldCBjbGVhbnVwX3doZW5fYV9waXBlX2lzX2Nsb3NlZCA9XG4gICAgICAgIGxldCVtYXAgKCkgPVxuICAgICAgICAgIERlZmVycmVkLmFueV91bml0IFsgUGlwZS5jbG9zZWQgdG9fc2VydmVyOyBQaXBlLmNsb3NlZCBmcm9tX3NlcnZlciBdXG4gICAgICAgIGluXG4gICAgICAgIGNsZWFudXAgfnJlYXNvbjooRXJyb3Iub2Zfc3RyaW5nIFwiUlBDIGNvbm5lY3Rpb24gY2xvc2VkIGJ5IGNsaWVudFwiKVxuICAgICAgaW5cbiAgICAgIGRvbid0X3dhaXRfZm9yIGNsZWFudXBfd2hlbl9hX3BpcGVfaXNfY2xvc2VkO1xuICAgICAgY29ubmVjdGVkX2RlZmVycmVkXG4gIDs7XG5cbiAgbGV0IGRlZmF1bHRfdXJpICgpID1cbiAgICBsZXQgc2NoZW1lID0gaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCIgdGhlbiBcIndzc1wiIGVsc2UgXCJ3c1wiIGluXG4gICAgbGV0IHBvcnQgPVxuICAgICAgbWF0Y2ggVXJsLkN1cnJlbnQucG9ydCB3aXRoXG4gICAgICB8IFNvbWUgcG9ydCAtPiBwb3J0XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgaWYgU3RyaW5nLmVxdWFsIFVybC5DdXJyZW50LnByb3RvY29sIFwiaHR0cHM6XCJcbiAgICAgICAgdGhlbiBVcmwuZGVmYXVsdF9odHRwc19wb3J0XG4gICAgICAgIGVsc2UgVXJsLmRlZmF1bHRfaHR0cF9wb3J0XG4gICAgaW5cbiAgICBsZXQgaG9zdCA9IFVybC5DdXJyZW50Lmhvc3QgaW5cbiAgICBVcmkubWFrZSB+c2NoZW1lIH5ob3N0IH5wb3J0ICgpXG4gIDs7XG5cbiAgbGV0IGNsaWVudCA/KHVyaSA9IGRlZmF1bHRfdXJpICgpKSA/aGVhcnRiZWF0X2NvbmZpZyA/ZGVzY3JpcHRpb24gP2ltcGxlbWVudGF0aW9ucyAoKSA9XG4gICAgbGV0IGRlc2NyaXB0aW9uID1cbiAgICAgIEluZm8uY3JlYXRlX3NcbiAgICAgICAgWyVtZXNzYWdlIFwid2Vic29ja2V0XCIgKGRlc2NyaXB0aW9uIDogKEluZm8udCBvcHRpb25bQHNleHAub3B0aW9uXSkpICh1cmkgOiBVcmkudCldXG4gICAgaW5cbiAgICBsZXQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCA9XG4gICAgICBsZXQgY3JlYXRlIHsgVC5DbGllbnRfaW1wbGVtZW50YXRpb25zLmNvbm5lY3Rpb25fc3RhdGU7IGltcGxlbWVudGF0aW9ucyB9ID1cbiAgICAgICAgVC5jcmVhdGVcbiAgICAgICAgICB0cmFuc3BvcnRcbiAgICAgICAgICA/aGVhcnRiZWF0X2NvbmZpZ1xuICAgICAgICAgIH5kZXNjcmlwdGlvblxuICAgICAgICAgIH5pbXBsZW1lbnRhdGlvbnNcbiAgICAgICAgICB+Y29ubmVjdGlvbl9zdGF0ZVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGltcGxlbWVudGF0aW9ucyB3aXRoXG4gICAgICB8IE5vbmUgLT4gY3JlYXRlIChULkNsaWVudF9pbXBsZW1lbnRhdGlvbnMubnVsbCAoKSlcbiAgICAgIHwgU29tZSBpbXBsZW1lbnRhdGlvbnMgLT4gY3JlYXRlIGltcGxlbWVudGF0aW9uc1xuICAgIGluXG4gICAgbGV0IGZyb21fc2VydmVyX3IsIGZyb21fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIGxldCB0b19zZXJ2ZXJfciwgdG9fc2VydmVyX3cgPSBQaXBlLmNyZWF0ZSAoKSBpblxuICAgIG1hdGNoJWJpbmRcbiAgICAgIGNvbm5lY3Rfd2Vic29ja2V0IHVyaSB+ZnJvbV9zZXJ2ZXI6ZnJvbV9zZXJ2ZXJfdyB+dG9fc2VydmVyOnRvX3NlcnZlcl9yXG4gICAgd2l0aFxuICAgIHwgRXJyb3IgXyBhcyBlcnJvciAtPiByZXR1cm4gZXJyb3JcbiAgICB8IE9rICgpIC0+XG4gICAgICBsZXQgdHJhbnNwb3J0ID1cbiAgICAgICAgQXN5bmNfcnBjX2tlcm5lbC5QaXBlX3RyYW5zcG9ydC5jcmVhdGVcbiAgICAgICAgICBBc3luY19ycGNfa2VybmVsLlBpcGVfdHJhbnNwb3J0LktpbmQuYmlnc3RyaW5nXG4gICAgICAgICAgZnJvbV9zZXJ2ZXJfclxuICAgICAgICAgIHRvX3NlcnZlcl93XG4gICAgICBpblxuICAgICAgKG1hdGNoJWJpbmQgbWFrZV9jb25uZWN0aW9uIHRyYW5zcG9ydCB3aXRoXG4gICAgICAgfCBPayBjb25uZWN0aW9uIC0+IHJldHVybiAoT2sgY29ubmVjdGlvbilcbiAgICAgICB8IEVycm9yIGV4biAtPlxuICAgICAgICAgbGV0JWJpbmQgKCkgPSBBc3luY19ycGNfa2VybmVsLlJwYy5UcmFuc3BvcnQuY2xvc2UgdHJhbnNwb3J0IGluXG4gICAgICAgICByZXR1cm4gKE9yX2Vycm9yLm9mX2V4biBleG4pKVxuICA7O1xuXG4gIGxldCBjbGllbnRfZXhuID91cmkgP2hlYXJ0YmVhdF9jb25maWcgP2Rlc2NyaXB0aW9uID9pbXBsZW1lbnRhdGlvbnMgKCkgPVxuICAgIGNsaWVudCA/dXJpID9oZWFydGJlYXRfY29uZmlnID9kZXNjcmlwdGlvbiA/aW1wbGVtZW50YXRpb25zICgpID4+fCBPcl9lcnJvci5va19leG5cbiAgOztcbmVuZFxuXG5pbmNsdWRlIEFzeW5jX3JwY19rZXJuZWwuUnBjXG5cbm1vZHVsZSBDb25uZWN0aW9uID0gc3RydWN0XG4gIGluY2x1ZGUgQ29ubmVjdGlvblxuICBpbmNsdWRlIFdlYnNvY2tldF9jb25uZWN0aW9uXG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEFzeW5jX3JwY19rZXJuZWxcblxubW9kdWxlIFVyaSA9IHN0cnVjdFxuICBtb2R1bGUgVCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgVXJpXG5cbiAgICBsZXQgdG9fc3RyaW5nIHMgPSBVcmkudG9fc3RyaW5nIHNcbiAgZW5kXG5cbiAgaW5jbHVkZSBUXG4gIGluY2x1ZGUgU2V4cGFibGUuT2Zfc3RyaW5nYWJsZSAoVClcbmVuZFxuXG5tb2R1bGUgUnBjID0gc3RydWN0XG4gIGluY2x1ZGUgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwY1xuXG4gIGxldCBjcmVhdGVfZnJvbV91cmkgPSBQZXJzaXN0ZW50X2Nvbm5lY3Rpb24uUnBjLmNyZWF0ZSB+YWRkcmVzczoobW9kdWxlIFVyaSlcblxuICBsZXQgY3JlYXRlX2Zyb21fdXJpX29wdGlvbiA9XG4gICAgUGVyc2lzdGVudF9jb25uZWN0aW9uLlJwYy5jcmVhdGVcbiAgICAgIH5hZGRyZXNzOlxuICAgICAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IFVyaS50IG9wdGlvbiBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cF1cbiAgICAgICAgZW5kKVxuICA7O1xuZW5kXG5cbm1vZHVsZSBWZXJzaW9uZWRfcnBjID0gQXN5bmNfcnBjX2tlcm5lbC5QZXJzaXN0ZW50X2Nvbm5lY3Rpb24uVmVyc2lvbmVkX3JwY1xuIiwib3BlbiBDb3JlXG5vcGVuIEFzeW5jX2tlcm5lbFxub3BlbiBKc19vZl9vY2FtbFxubW9kdWxlIE9wdCA9IEpzLk9wdFxubW9kdWxlIE9wdGRlZiA9IEpzLk9wdGRlZlxuXG5tb2R1bGUgUmVzcG9uc2VfdHlwZSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBYbWxIdHRwUmVxdWVzdC5yZXNwb25zZSA9XG4gICAgfCBBcnJheUJ1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgT3B0LnQgdFxuICAgIHwgQmxvYiA6ICNGaWxlLmJsb2IgSnMudCBKcy5PcHQudCB0XG4gICAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50IE9wdC50IHRcbiAgICB8IEpTT04gOiAnYSBPcHQudCB0XG4gICAgfCBUZXh0IDogSnMuanNfc3RyaW5nIEpzLnQgdFxuICAgIHwgRGVmYXVsdCA6IHN0cmluZyB0XG5lbmRcblxubW9kdWxlIFJlc3BvbnNlID0gc3RydWN0XG4gIHR5cGUgJ3Jlc3BvbnNlIHQgPVxuICAgIHsgY29kZSA6IGludFxuICAgIDsgZ2V0X2hlYWRlciA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgOyBjb250ZW50IDogJ3Jlc3BvbnNlXG4gICAgfVxuZW5kXG5cbm1vZHVsZSBQb3N0X2JvZHkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEJsb2Igb2YgRmlsZS5ibG9iIEpzLnRcbiAgICB8IERvY3VtZW50IG9mIERvbS5lbGVtZW50IERvbS5kb2N1bWVudCBKcy50XG4gICAgfCBTdHJpbmcgb2Ygc3RyaW5nXG4gICAgfCBGb3JtX2RhdGEgb2YgRm9ybS5mb3JtRGF0YSBKcy50XG5lbmRcblxubW9kdWxlIE1ldGhvZF93aXRoX2FyZ3MgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB8IEdldCBvZiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgfCBQb3N0IG9mIFBvc3RfYm9keS50IG9wdGlvblxuZW5kXG5cbnR5cGUgJ2sgd2l0aF9yZXF1ZXN0X2FyZ3MgPVxuICA/aGVhZGVyczooc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gIC0+ID9vbl9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gP29uX3VwbG9hZF9wcm9ncmVzczoobG9hZGVkOmludCAtPiB0b3RhbDppbnQgLT4gdW5pdClcbiAgLT4gdXJsOnN0cmluZ1xuICAtPiAna1xuXG5sZXQgaGFzX2dldF9hcmdzIHVybCA9IE9wdGlvbi5pc19zb21lIChTdHJpbmcuaW5kZXggdXJsICc/JylcblxubGV0IHJlcXVlc3RcbiAgICAgID8oaGVhZGVycyA9IFtdKVxuICAgICAgP29uX3Byb2dyZXNzXG4gICAgICA/b25fdXBsb2FkX3Byb2dyZXNzXG4gICAgICB+dXJsXG4gICAgICAodHlwZSByZXNwKVxuICAgICAgfihyZXNwb25zZV90eXBlIDogcmVzcCBSZXNwb25zZV90eXBlLnQpXG4gICAgICAobWV0aG9kX3dpdGhfYXJncyA6IE1ldGhvZF93aXRoX2FyZ3MudClcbiAgPVxuICBsZXQgdXJsLCBtZXRob2Rfc3RyaW5nID1cbiAgICBtYXRjaCBtZXRob2Rfd2l0aF9hcmdzIHdpdGhcbiAgICB8IEdldCBhcmdzIC0+XG4gICAgICB1cmwgXiAoaWYgaGFzX2dldF9hcmdzIHVybCB0aGVuIFwiJlwiIGVsc2UgXCI/XCIpIF4gVXJsLmVuY29kZV9hcmd1bWVudHMgYXJncywgXCJHRVRcIlxuICAgIHwgUG9zdCBfYm9keSAtPiB1cmwsIFwiUE9TVFwiXG4gIGluXG4gIGxldCByZXEgPSBYbWxIdHRwUmVxdWVzdC5jcmVhdGUgKCkgaW5cbiAgcmVxIyNfb3BlbiAoSnMuc3RyaW5nIG1ldGhvZF9zdHJpbmcpIChKcy5zdHJpbmcgdXJsKSBKcy5fdHJ1ZTtcbiAgKGxldCBvcGVuIFJlc3BvbnNlX3R5cGUgaW5cbiAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgfCBBcnJheUJ1ZmZlciAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYXJyYXlidWZmZXJcIlxuICAgfCBCbG9iIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJibG9iXCJcbiAgIHwgRG9jdW1lbnQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImRvY3VtZW50XCJcbiAgIHwgSlNPTiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwianNvblwiXG4gICB8IFRleHQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcInRleHRcIlxuICAgfCBEZWZhdWx0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJcIik7XG4gIExpc3QuaXRlciBoZWFkZXJzIH5mOihmdW4gKG5hbWUsIHZhbHVlKSAtPlxuICAgIHJlcSMjc2V0UmVxdWVzdEhlYWRlciAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgdmFsdWUpKTtcbiAgbGV0IHJlc3BvbnNlIDogcmVzcCBSZXNwb25zZS50IE9yX2Vycm9yLnQgSXZhci50ID0gSXZhci5jcmVhdGUgKCkgaW5cbiAgcmVxIyMub25lcnJvclxuICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICBJdmFyLmZpbGxfaWZfZW1wdHkgcmVzcG9uc2UgKE9yX2Vycm9yLmVycm9yX3N0cmluZyBcIk5ldHdvcmsgZXJyb3JcIik7XG4gICAgSnMuX3RydWUpO1xuICByZXEjIy5vbnRpbWVvdXRcbiAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgSXZhci5maWxsX2lmX2VtcHR5IHJlc3BvbnNlIChPcl9lcnJvci5lcnJvcl9zdHJpbmcgXCJUaW1lb3V0XCIpO1xuICAgIEpzLl90cnVlKTtcbiAgcmVxIyMub25yZWFkeXN0YXRlY2hhbmdlXG4gIDo9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+XG4gICAgbWF0Y2ggcmVxIyMucmVhZHlTdGF0ZSB3aXRoXG4gICAgfCBET05FIC0+XG4gICAgICBsZXQgcmVzID1cbiAgICAgICAgaWYgcmVxIyMuc3RhdHVzID49IDIwMCAmJiByZXEjIy5zdGF0dXMgPCAzMDBcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0JWJpbmQuT3JfZXJyb3IgY29udGVudCA6IHJlc3AgT3JfZXJyb3IudCA9XG4gICAgICAgICAgICBsZXQgZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKCkgPVxuICAgICAgICAgICAgICBPcHQuY2FzZVxuICAgICAgICAgICAgICAgIHJlcSMjLnJlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2Ugc2hvdWxkIG5vdCBiZSBlbnRlcmVkIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiBvZlxuICAgICAgICAgICAgICAgICAgICAgIFhNTEh0dHBSZXF1ZXN0IGF0IE1ETiB3ZWIgZG9jcywgYmVjYXVzZSBpZiBhIHJlcXVlc3QgaXMgc3VjY2Vzc2Z1bCxcbiAgICAgICAgICAgICAgICAgICAgICBpbiBzdGF0ZSBbRE9ORV0gYW5kIHJlc3BvbnNlX3R5cGUgW1RleHRdIG9yIFtEZWZhdWx0XSxcbiAgICAgICAgICAgICAgICAgICAgICBbcmVzcG9uc2VUZXh0XSBzaG91bGQgbm90IGJlIFtudWxsXS5cbiAgICAgICAgICAgICAgICAgICAgICBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3Jlc3BvbnNlVGV4dFxuICAgICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICAgICAgZXJyb3Jfc1xuICAgICAgICAgICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgICAgICAgICAgIFwiTm8gcmVzcG9uc2UgcmV0dXJuZWQgZGVzcGl0ZSBzdWNjZXNzZnVsIHJlcXVlc3RcIlxuICAgICAgICAgICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgICAgICB9XSlcbiAgICAgICAgICAgICAgICBSZXN1bHQucmV0dXJuXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IG9wZW4gUmVzcG9uc2VfdHlwZSBpblxuICAgICAgICAgICAgbWF0Y2ggcmVzcG9uc2VfdHlwZSB3aXRoXG4gICAgICAgICAgICB8IEFycmF5QnVmZmVyIC0+IE9rIChGaWxlLkNvZXJjZVRvLmFycmF5QnVmZmVyIHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBCbG9iIC0+IE9rIChGaWxlLkNvZXJjZVRvLmJsb2IgcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IERvY3VtZW50IC0+IE9rIChGaWxlLkNvZXJjZVRvLmRvY3VtZW50IHJlcSMjLnJlc3BvbnNlKVxuICAgICAgICAgICAgfCBKU09OIC0+IE9rIChGaWxlLkNvZXJjZVRvLmpzb24gcmVxIyMucmVzcG9uc2UpXG4gICAgICAgICAgICB8IFRleHQgLT4gZ2V0X3RleHRfY29udGVudHNfb3JfZXJyb3IgKClcbiAgICAgICAgICAgIHwgRGVmYXVsdCAtPlxuICAgICAgICAgICAgICBPcl9lcnJvci5tYXAgKGdldF90ZXh0X2NvbnRlbnRzX29yX2Vycm9yICgpKSB+ZjpKcy50b19zdHJpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBnZXRfaGVhZGVyIHMgPVxuICAgICAgICAgICAgT3B0LmNhc2VcbiAgICAgICAgICAgICAgKHJlcSMjZ2V0UmVzcG9uc2VIZWFkZXIgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgICAgICAgKGZ1biB2IC0+IFNvbWUgKEpzLnRvX3N0cmluZyB2KSlcbiAgICAgICAgICBpblxuICAgICAgICAgIE9rIHsgUmVzcG9uc2UuY29udGVudDsgY29kZSA9IHJlcSMjLnN0YXR1czsgZ2V0X2hlYWRlciB9KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgT3JfZXJyb3IuZXJyb3Jfc1xuICAgICAgICAgICAgWyVzZXhwXG4gICAgICAgICAgICAgIFwiUmVxdWVzdCBmYWlsZWRcIlxuICAgICAgICAgICAgLCB7IGNvZGUgPSAocmVxIyMuc3RhdHVzIDogaW50KVxuICAgICAgICAgICAgICA7IHN0YXR1c190ZXh0ID0gKEpzLnRvX3N0cmluZyByZXEjIy5zdGF0dXNUZXh0IDogc3RyaW5nKVxuICAgICAgICAgICAgICB9XVxuICAgICAgaW5cbiAgICAgIEl2YXIuZmlsbF9pZl9lbXB0eSByZXNwb25zZSByZXNcbiAgICB8IF8gLT4gKCkpO1xuICBPcHRpb24uaXRlciBvbl9wcm9ncmVzcyB+ZjooZnVuIG9uX3Byb2dyZXNzIC0+XG4gICAgcmVxIyMub25wcm9ncmVzc1xuICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgb25fcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICBKcy5fdHJ1ZSkpO1xuICBPcHRkZWYuaXRlciByZXEjIy51cGxvYWQgKGZ1biB1cGxvYWQgLT5cbiAgICBPcHRpb24uaXRlciBvbl91cGxvYWRfcHJvZ3Jlc3MgfmY6KGZ1biBvbl91cGxvYWRfcHJvZ3Jlc3MgLT5cbiAgICAgIHVwbG9hZCMjLm9ucHJvZ3Jlc3NcbiAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICBvbl91cGxvYWRfcHJvZ3Jlc3MgfmxvYWRlZDplIyMubG9hZGVkIH50b3RhbDplIyMudG90YWw7XG4gICAgICAgIEpzLl90cnVlKSkpO1xuICAobWF0Y2ggbWV0aG9kX3dpdGhfYXJncyB3aXRoXG4gICB8IEdldCBfIC0+IHJlcSMjc2VuZCBKcy5udWxsXG4gICB8IFBvc3QgYm9keSAtPlxuICAgICAobWF0Y2ggYm9keSB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgICAgIHwgU29tZSBib2R5IC0+XG4gICAgICAgIChtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgIHwgQmxvYiBiIC0+IHJlcSMjc2VuZF9ibG9iIGJcbiAgICAgICAgIHwgRG9jdW1lbnQgZCAtPiByZXEjI3NlbmRfZG9jdW1lbnQgZFxuICAgICAgICAgfCBTdHJpbmcgcyAtPiByZXEjI3NlbmQgKEpzLnNvbWUgKEpzLnN0cmluZyBzKSlcbiAgICAgICAgIHwgRm9ybV9kYXRhIGZkIC0+IHJlcSMjc2VuZF9mb3JtRGF0YSBmZCkpKTtcbiAgSXZhci5yZWFkIHJlc3BvbnNlXG47O1xuXG5sZXQgZ2V0ID8oYXJndW1lbnRzID0gW10pIHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChHZXQgYXJndW1lbnRzKSlcbjs7XG5cbmxldCBwb3N0ID9ib2R5IHVybCA9XG4gIERlZmVycmVkLk9yX2Vycm9yLm1hcFxuICAgIH5mOihmdW4gcmVzcCAtPiByZXNwLmNvbnRlbnQpXG4gICAgKHJlcXVlc3QgfnVybCB+cmVzcG9uc2VfdHlwZTpEZWZhdWx0IChQb3N0IGJvZHkpKVxuOztcbiIsIm9wZW4gQ29yZVxubW9kdWxlIFRpbWVfbnMgPSBDb3JlLlRpbWVfbnNcbm1vZHVsZSBDbG9ja19ucyA9IEFzeW5jX2tlcm5lbC5DbG9ja19uc1xubW9kdWxlIFNjaGVkdWxlciA9IEFzeW5jX2tlcm5lbC5Bc3luY19rZXJuZWxfc2NoZWR1bGVyLlByaXZhdGVcbm9wZW4gSnNfb2Zfb2NhbWxcblxubGV0IHNsZWVwIGQgPSBDbG9ja19ucy5hZnRlciAoVGltZV9ucy5TcGFuLm9mX3NlYyBkKVxubGV0IHlpZWxkICgpID0gU2NoZWR1bGVyLnlpZWxkIChTY2hlZHVsZXIudCAoKSlcblxubGV0IGV4dHJhY3RfanNfZXJyb3IgKGV4biA6IGV4bikgOiBKcy5lcnJvciBKcy50IG9wdGlvbiA9XG4gIEpzLk9wdC50b19vcHRpb24gKEpzLmpzX2Vycm9yX29mX2V4biBleG4pXG47O1xuXG5sZXQgcnVuID1cbiAgbGV0IG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IElkbGVcbiAgICAgIHwgUnVubmluZ1xuICAgICAgfCBXaWxsX3J1bl9zb29uXG4gIGVuZFxuICBpblxuICBsZXQgbW9kdWxlIE5leHRfd2FrZXVwID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQXQgb2YgVGltZV9ucy50ICogZmxvYXRcbiAgICAgIHwgTm9fd2FrZXVwXG4gICAgICB8IFNvb25cbiAgZW5kXG4gIGluXG4gIGxldCBzdGF0ZSA9IHJlZiBTdGF0ZS5JZGxlIGluXG4gIGxldCB0aW1lb3V0cyA9IFN0YWNrLmNyZWF0ZSAoKSBpblxuICBsZXQgcnVuX2FmdGVyIH5mIH5tcyA9IGlnbm9yZSAoRG9tX2h0bWwuc2V0VGltZW91dCBmIG1zIDogRG9tX2h0bWwudGltZW91dF9pZF9zYWZlKSBpblxuICBsZXQgcmVjIGxvb3AgKCkgPVxuICAgIGxldCB0ID0gU2NoZWR1bGVyLnQgKCkgaW5cbiAgICBtYXRjaCAhc3RhdGUsIFNjaGVkdWxlci51bmNhdWdodF9leG4gdCB3aXRoXG4gICAgfCBfLCBTb21lIF8gfCBTdGF0ZS5SdW5uaW5nLCBOb25lIC0+ICgpXG4gICAgfCAoU3RhdGUuSWRsZSB8IFN0YXRlLldpbGxfcnVuX3Nvb24pLCBOb25lIC0+XG4gICAgICBzdGF0ZSA6PSBTdGF0ZS5SdW5uaW5nO1xuICAgICAgU2NoZWR1bGVyLnJ1bl9jeWNsZSB0O1xuICAgICAgbGV0IG5leHRfd2FrZXVwIDogTmV4dF93YWtldXAudCA9XG4gICAgICAgIGlmIFNjaGVkdWxlci5jYW5fcnVuX2Ffam9iIHRcbiAgICAgICAgdGhlbiBTb29uXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIFNjaGVkdWxlci5uZXh0X3VwY29taW5nX2V2ZW50IHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb193YWtldXBcbiAgICAgICAgICB8IFNvbWUgbmV4dCAtPlxuICAgICAgICAgICAgbGV0IG5vdyA9IFRpbWVfbnMubm93ICgpIGluXG4gICAgICAgICAgICBsZXQgZCA9IFRpbWVfbnMuZGlmZiBuZXh0IG5vdyBpblxuICAgICAgICAgICAgbGV0IGRfbXMgPSBUaW1lX25zLlNwYW4udG9fbXMgZCBpblxuICAgICAgICAgICAgaWYgRmxvYXQuKCA8PSApIGRfbXMgMC4gdGhlbiBTb29uIGVsc2UgQXQgKG5leHQsIGRfbXMpKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi5pdGVyIChTY2hlZHVsZXIudW5jYXVnaHRfZXhuX3Vud3JhcHBlZCB0KSB+ZjooZnVuIChleG4sIF9zZXhwKSAtPlxuICAgICAgICBtYXRjaCBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gd2l0aFxuICAgICAgICB8IEpzLkVycm9yIGVyciAtPiBKcy5yYWlzZV9qc19lcnJvciBlcnJcbiAgICAgICAgfCBleG4gLT5cbiAgICAgICAgICAobWF0Y2ggZXh0cmFjdF9qc19lcnJvciBleG4gd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgZXhuXG4gICAgICAgICAgIHwgU29tZSBlcnIgLT5cbiAgICAgICAgICAgICAoKiBIYWNrIHRvIGdldCBhIGJldHRlciBiYWNrdHJhY2UgKilcbiAgICAgICAgICAgICAoKiBXZSBmaXJzdCBvdXRwdXQgdGhlIHN0cmluZ2lmaWVkIG9jYW1sIGV4Y2VwdGlvbiAqKVxuICAgICAgICAgICAgIEZpcmVidWcuY29uc29sZSMjZXJyb3IgKEpzLnN0cmluZyAoRXhuLnRvX3N0cmluZyBleG4pKTtcbiAgICAgICAgICAgICAoKiBBbmQgdGhlbiByYWlzZSB0aGUgZW1iZWRkZWQgamF2YXNjcmlwdCBlcnJvciB0aGF0IHByb3ZpZGVzIGEgcHJvcGVyXG4gICAgICAgICAgICAgICAgYmFja3RyYWNlIHdpdGggZ29vZCBzb3VyY2VtYXAgc3VwcG9ydC5cbiAgICAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGlzIGphdmFzY3JpcHQgZXJyb3IgaXMgcHJvYmFibHkgbm90IG1lYW5pbmdmdWwgd2hpY2ggaXMgd2h5XG4gICAgICAgICAgICAgICAgd2UgZmlyc3Qgb3V0cHV0IHRoZSBzZXJpYWxpemF0aW9uIG9mIG9jYW1sIGV4Y2VwdGlvbi4gKilcbiAgICAgICAgICAgICBKcy5yYWlzZV9qc19lcnJvciBlcnIpKTtcbiAgICAgIChtYXRjaCBuZXh0X3dha2V1cCB3aXRoXG4gICAgICAgfCBOb193YWtldXAgLT4gc3RhdGUgOj0gSWRsZVxuICAgICAgIHwgU29vbiAtPlxuICAgICAgICAgc3RhdGUgOj0gV2lsbF9ydW5fc29vbjtcbiAgICAgICAgIHJ1bl9hZnRlciB+Zjpsb29wIH5tczowLlxuICAgICAgIHwgQXQgKGF0LCBkX21zKSAtPlxuICAgICAgICAgc3RhdGUgOj0gSWRsZTtcbiAgICAgICAgIGlmIFN0YWNrLmlzX2VtcHR5IHRpbWVvdXRzIHx8IFRpbWVfbnMuKCA8ICkgYXQgKFN0YWNrLnRvcF9leG4gdGltZW91dHMpXG4gICAgICAgICB0aGVuIChcbiAgICAgICAgICAgU3RhY2sucHVzaCB0aW1lb3V0cyBhdDtcbiAgICAgICAgICAgcnVuX2FmdGVyIH5mOnJ1bl90aW1lb3V0IH5tczpkX21zKSlcbiAgYW5kIHJ1bl90aW1lb3V0ICgpID1cbiAgICAoKiBFYWNoIGNhbGwgdG8gW3J1bl90aW1lb3V0XSByZW1vdmVzIGV4YWN0bHkgb25lIGVsZW1lbnQgZnJvbSBbdGltZW91dHNdLiAgVGhpc1xuICAgICAgIG1haW50YWlucyB0aGUgaW52YXJpYW50IHRoYXQgW1N0YWNrLmxlbmd0aCB0aW1lb3V0c10gaXMgZXhhY3RseSB0aGUgbnVtYmVyIG9mXG4gICAgICAgb3V0c3RhbmRpbmcgdGltZW91dHMgd2UgaGF2ZSByZWdpc3RlcmVkLiAqKVxuICAgIGlnbm9yZSAoU3RhY2sucG9wX2V4biB0aW1lb3V0cyA6IFRpbWVfbnMudCk7XG4gICAgbG9vcCAoKVxuICBpblxuICBmdW4gKCkgLT5cbiAgICBtYXRjaCAhc3RhdGUgd2l0aFxuICAgIHwgU3RhdGUuSWRsZSAtPlxuICAgICAgcnVuX2FmdGVyIH5mOmxvb3Agfm1zOjAuO1xuICAgICAgc3RhdGUgOj0gU3RhdGUuV2lsbF9ydW5fc29vblxuICAgIHwgU3RhdGUuUnVubmluZyB8IFN0YXRlLldpbGxfcnVuX3Nvb24gLT4gKClcbjs7XG5cbmxldCBsb2cgbmFtZSBleG4gPVxuICBsZXQgZXhuID1cbiAgICBtYXRjaCBBc3luY19rZXJuZWwuTW9uaXRvci5leHRyYWN0X2V4biBleG4gd2l0aFxuICAgIHwgSnMuRXJyb3IgZXJyIC0+IGBKcyBlcnJcbiAgICB8IGV4biAtPlxuICAgICAgKG1hdGNoIGV4dHJhY3RfanNfZXJyb3IgZXhuIHdpdGhcbiAgICAgICB8IE5vbmUgLT4gYEV4biBleG5cbiAgICAgICB8IFNvbWUgZXJyIC0+IGBKc19hbmRfZXhuIChleG4sIGVycikpXG4gIGluXG4gIG1hdGNoIGV4biB3aXRoXG4gIHwgYEpzIGVyciAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBuYW1lKSBlcnJcbiAgfCBgRXhuIGV4biAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yXzIgKEpzLnN0cmluZyBuYW1lKSAoSnMuc3RyaW5nIChFeG4udG9fc3RyaW5nIGV4bikpXG4gIHwgYEpzX2FuZF9leG4gKGV4biwgZXJyKSAtPlxuICAgIEZpcmVidWcuY29uc29sZSMjZXJyb3JfMyAoSnMuc3RyaW5nIG5hbWUpIChKcy5zdHJpbmcgKEV4bi50b19zdHJpbmcgZXhuKSkgZXJyXG47O1xuXG5sZXQgaW5pdGlhbGl6ZWRfcmVmID0gcmVmIGZhbHNlXG5cbmxldCBpbml0aWFsaXphdGlvbiA9XG4gIGxhenlcbiAgICAobGV0IHQgPSBTY2hlZHVsZXIudCAoKSBpblxuICAgICBpbml0aWFsaXplZF9yZWYgOj0gdHJ1ZTtcbiAgICAgU2NoZWR1bGVyLnNldF9qb2JfcXVldWVkX2hvb2sgdCAoZnVuIF8gLT4gcnVuICgpKTtcbiAgICAgU2NoZWR1bGVyLnNldF9ldmVudF9hZGRlZF9ob29rIHQgKGZ1biBfIC0+IHJ1biAoKSk7XG4gICAgIFNjaGVkdWxlci5zZXRfdGhyZWFkX3NhZmVfZXh0ZXJuYWxfam9iX2hvb2sgdCBydW47XG4gICAgIEFzeW5jX2tlcm5lbC5Nb25pdG9yLkV4cGVydC50cnlfd2l0aF9sb2dfZXhuIDo9IGxvZyBcIkFzeW5jX2tlcm5lbDogTW9uaXRvci50cnlfd2l0aFwiO1xuICAgICBBc3luY19rZXJuZWwuTW9uaXRvci5kZXRhY2hfYW5kX2l0ZXJfZXJyb3JzXG4gICAgICAgQXN5bmNfa2VybmVsLk1vbml0b3IubWFpblxuICAgICAgIH5mOihsb2cgXCJBc3luY19rZXJuZWw6IFVuaGFuZGxlZCBleGNlcHRpb25cIik7XG4gICAgIHJ1biAoKSlcbjs7XG5cbmxldCBpbml0ICgpID0gZm9yY2UgaW5pdGlhbGl6YXRpb25cbmxldCBpbml0aWFsaXplZCAoKSA9ICFpbml0aWFsaXplZF9yZWZcblxubGV0IGRvY3VtZW50X2xvYWRlZCA9XG4gIGxldCBqc19zdHJpbmdfY29tcGFyZSBzID1cbiAgICBsZXQgY29tcGFyZV91c2luZ19qYXZhc2NyaXB0X3RyaXBsZV9lcXVhbF9mb3Jfc3RyaW5ncyA9IHBoeXNfZXF1YWwgaW5cbiAgICBjb21wYXJlX3VzaW5nX2phdmFzY3JpcHRfdHJpcGxlX2VxdWFsX2Zvcl9zdHJpbmdzIChKcy5zdHJpbmcgcylcbiAgaW5cbiAgbGV0IHJlYWR5X3N0YXRlX2NoYW5nZSA9IFwicmVhZHlzdGF0ZWNoYW5nZVwiIGluXG4gIGxldCBjb21wbGV0ZSA9IFwiY29tcGxldGVcIiBpblxuICBsZXQgcmVhZHlzdGF0ZWNoYW5nZV9ldiA9IERvbS5FdmVudC5tYWtlIHJlYWR5X3N0YXRlX2NoYW5nZSBpblxuICBsZXQgYWRkX2V2ZW50IHRhcmdldCBldnQgaGFuZGxlciA9XG4gICAgaWdub3JlXG4gICAgICAoRG9tX2h0bWwuYWRkRXZlbnRMaXN0ZW5lciB0YXJnZXQgZXZ0IGhhbmRsZXIgSnMuX2ZhbHNlIDogRG9tLmV2ZW50X2xpc3RlbmVyX2lkKVxuICBpblxuICBmdW4gKCkgLT5cbiAgICBpZiBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICB0aGVuIEFzeW5jX2tlcm5lbC5EZWZlcnJlZC51bml0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgbG9hZGVkID0gQXN5bmNfa2VybmVsLkl2YXIuY3JlYXRlICgpIGluXG4gICAgICBsZXQgaGFuZGxlciBldnQgPVxuICAgICAgICBpZiAobm90IChqc19zdHJpbmdfY29tcGFyZSByZWFkeV9zdGF0ZV9jaGFuZ2UgZXZ0IyMuX3R5cGUpKVxuICAgICAgICB8fCBqc19zdHJpbmdfY29tcGFyZSBjb21wbGV0ZSBEb21faHRtbC5kb2N1bWVudCMjLnJlYWR5U3RhdGVcbiAgICAgICAgdGhlbiBBc3luY19rZXJuZWwuSXZhci5maWxsX2lmX2VtcHR5IGxvYWRlZCAoKTtcbiAgICAgICAgSnMuX3RydWVcbiAgICAgIGluXG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgRG9tX2h0bWwuRXZlbnQuZG9tQ29udGVudExvYWRlZCAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwuZG9jdW1lbnQgcmVhZHlzdGF0ZWNoYW5nZV9ldiAoRG9tLmhhbmRsZXIgaGFuZGxlcik7XG4gICAgICBhZGRfZXZlbnQgRG9tX2h0bWwud2luZG93IERvbV9odG1sLkV2ZW50LmxvYWQgKERvbS5oYW5kbGVyIGhhbmRsZXIpO1xuICAgICAgQXN5bmNfa2VybmVsLkl2YXIucmVhZCBsb2FkZWQpXG47O1xuIiwibW9kdWxlIFJwYyA9IFJwY1xubW9kdWxlIEh0dHAgPSBIdHRwXG5tb2R1bGUgRGVidWcgPSBEZWJ1Z1xubW9kdWxlIFBlcnNpc3RlbnRfY29ubmVjdGlvbiA9IFBlcnNpc3RlbnRfY29ubmVjdGlvblxuaW5jbHVkZSBBc3luY19qczBcblxubGV0IGxvZ19zID0gRGVidWcubG9nX3NcbmxldCBsb2dfc19hc19zdHJpbmcgPSBEZWJ1Zy5sb2dfc19hc19zdHJpbmdcbiIsIm9wZW4hIEJhc2VcblxuKCogVGhlIFtkYXRhXSBhcnJheSBpcyBhbiBpbXBsaWNpdCBiaW5hcnkgdHJlZSB3aXRoIFtjaGlsZHJlbl9sZW5ndGggKiAyIC0gMV0gbm9kZXMsXG4gICB3aXRoIGVhY2ggbm9kZSBiZWluZyB0aGUgc3VtIG9mIHRoZSB0d28gY2hpbGQgbm9kZXMgYW5kIHRoZSByb290IG5vZGUgYmVpbmcgdGhlIDB0aFxuICAgbm9kZS4gIFRoZSBsZWF2ZXMgb2YgdGhlIHRyZWUgYXJlIHRoZSBsYXN0IFtudW1fbGVhdmVzXSBub2Rlcy5cblxuICAgVGhlIGNoaWxkcmVuIGFyZSBub3QgbmVjZXNzYXJpbHkgYWxsIGF0IHRoZSBzYW1lIGxldmVsIG9mIHRoZSB0cmVlLiBGb3IgaW5zdGFuY2UgaWZcbiAgIHlvdSBoYXZlIDMgY2hpbGRyZW4gW3wgYTsgYjsgYyB8XTpcblxuICAge3ZcbiAgICAgICAgICBvXG4gICAgICAgICAvIFxcXG4gICAgICAgIG8gICBjXG4gICAgICAgLyBcXFxuICAgICAgYSAgIGJcbiAgIHZ9XG5cbiAgIFdlIHdhbnQgdGhpcyB0cmVlIHRvIGJlIHJlcHJlc2VudGF0ZWQgYXMgW3wgbzsgbzsgYzsgYTsgYiB8XSwgaS5lLiB3ZSBuZWVkIHRvIGFwcGx5XG4gICBmaXJzdCBhIHJvdGF0aW9uIHRoZW4gYSB0cmFuc2xhdGlvbiB0byBjb252ZXJ0IGFuIGluZGV4IGluIFt8IGE7IGI7IGMgfF0gdG8gYSAobGVhZilcbiAgIGluZGV4IGluIFt8IG87IG87IGM7IGE7IGIgfF0uICopXG50eXBlICdhIHQgPVxuICB7IGRhdGEgOiAnYSBPcHRpb25fYXJyYXkudFxuICA7IG51bV9sZWF2ZXMgOiBpbnRcbiAgOyBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgOiBpbnRcbiAgOyByZWR1Y2UgOiAnYSAtPiAnYSAtPiAnYVxuICA7IHNleHBfb2ZfYSA6ICdhIC0+IFNleHAudFxuICB9XG5cbmxldCBsZW5ndGggdCA9IHQubnVtX2xlYXZlc1xuXG4oKiB7dlxuICAgICBwYXJlbnQ6ICAgICAgMCAgMSAgMiAgMyAgNCAgNSAgNiAgNyAgOCAgOSAxMCAxMSAxMiAxMyAxNCAxNSAxNiAxNyAxOCAxOSAuLi5cbiAgICAgbGVmdCBjaGlsZDogIDEgIDMgIDUgIDcgIDkgMTEgMTMgMTUgMTcgMTkgMjEgMjMgMjUgMjcgMjkgMzEgMzMgMzUgMzcgMzkgLi4uXG4gICAgIHJpZ2h0IGNoaWxkOiAyICA0ICA2ICA4IDEwIDEyIDE0IDE2IDE4IDIwIDIyIDI0IDI2IDI4IDMwIDMyIDM0IDM2IDM4IDQwIC4uLiB2fSAqKVxubGV0IHBhcmVudF9pbmRleCB+Y2hpbGRfaW5kZXggPSAoY2hpbGRfaW5kZXggLSAxKSAvIDJcbmxldCBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXggPSAocGFyZW50X2luZGV4ICogMikgKyAxXG5sZXQgcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXggPSBsZWZ0X2NoaWxkX2luZGV4ICsgMVxuXG4oKiBUaGUgZmlyc3QgW251bV9sZWF2ZXMtMV0gZWxlbWVudHMgYXJlIGludGVybmFsIG5vZGVzIG9mIHRoZSB0cmVlLiAgVGhlIG5leHRcbiAgIFtudW1fbGVhdmVzXSBlbGVtZW50cyBhcmUgdGhlIGxlYXZlcy4gKilcbmxldCBudW1fYnJhbmNoZXMgdCA9IHQubnVtX2xlYXZlcyAtIDFcbmxldCBpbmRleF9pc19sZWFmIHQgaSA9IGkgPj0gbnVtX2JyYW5jaGVzIHRcblxuKCogVGhlIHRyZWUgaXMgY29tcGxldGUsIGJ1dCBub3QgbmVjZXNzYXJpbHkgcGVyZmVjdCwgc28gd2UgcGVyZm9ybSBzb21lIHJvdGF0aW9uIG9mIHRoZVxuICAgbGVhdmVzIHRvIGVuc3VyZSB0aGF0IG91ciByZWR1Y3Rpb25zIHByZXNlcnZlIG9yZGVyaW5nLiAqKVxubGV0IGxlYWZfaW5kZXggdCBpID1cbiAgKCogVGhlIHRyZWUgbGF5b3V0IGlzIGxldmVsIG9yZGVyLiAgQW55IGxlYXZlcyBpbiB0aGUgc2Vjb25kIHRvIGxhc3QgbGV2ZWwgbmVlZCB0byBvY2N1clxuICAgICBpbiB0aGUgYXJyYXkgYmVmb3JlIHRoZSBsZWF2ZXMgaW4gdGhlIGJvdHRvbSBsZXZlbC4gKilcbiAgbGV0IHJvdGF0ZWRfaW5kZXggPVxuICAgIGxldCBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPSBpICsgdC5udW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgaW5cbiAgICBpZiBvZmZzZXRfZnJvbV9zdGFydF9vZl9sZWF2ZXNfaW5fYXJyYXkgPCB0Lm51bV9sZWF2ZXNcbiAgICB0aGVuIG9mZnNldF9mcm9tX3N0YXJ0X29mX2xlYXZlc19pbl9hcnJheVxuICAgIGVsc2Ugb2Zmc2V0X2Zyb21fc3RhcnRfb2ZfbGVhdmVzX2luX2FycmF5IC0gdC5udW1fbGVhdmVzXG4gIGluXG4gICgqIFRoZSBsZWF2ZXMgb2NjdXIgYWZ0ZXIgdGhlIGJyYW5jaGVzIGluIHRoZSBhcnJheS4gKilcbiAgcm90YXRlZF9pbmRleCArIG51bV9icmFuY2hlcyB0XG47O1xuXG5sZXQgZ2V0X2xlYWYgdCBpID0gT3B0aW9uX2FycmF5LmdldCB0LmRhdGEgKGxlYWZfaW5kZXggdCBpKVxubGV0IHRvX2xpc3QgdCA9IExpc3QuaW5pdCAobGVuZ3RoIHQpIH5mOihmdW4gaSAtPiBnZXRfbGVhZiB0IGkpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwICh0b19saXN0IHQgOiBhIG9wdGlvbiBsaXN0KV1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgbGV0IGRhdGEgPSB0LmRhdGEgaW5cbiAgZm9yIGkgPSAwIHRvIE9wdGlvbl9hcnJheS5sZW5ndGggZGF0YSAtIDEgZG9cbiAgICBtYXRjaCBPcHRpb25fYXJyYXkuZ2V0IGRhdGEgaSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGEgLT4gaW52YXJpYW50X2EgYVxuICBkb25lO1xuICBmb3IgaSA9IDAgdG8gbnVtX2JyYW5jaGVzIHQgLSAxIGRvXG4gICAgbGV0IGxlZnQgPSBsZWZ0X2NoaWxkX2luZGV4IH5wYXJlbnRfaW5kZXg6aSBpblxuICAgIGxldCByaWdodCA9IHJpZ2h0X2NoaWxkX2luZGV4IH5sZWZ0X2NoaWxkX2luZGV4OmxlZnQgaW5cbiAgICBsZXQgbGVmdF9pc19ub25lID0gT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBsZWZ0IGluXG4gICAgbGV0IHJpZ2h0X2lzX25vbmUgPSBPcHRpb25fYXJyYXkuaXNfbm9uZSBkYXRhIHJpZ2h0IGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgZGF0YSBpXG4gICAgdGhlbiBhc3NlcnQgKG5vdCAobGVmdF9pc19ub25lIHx8IHJpZ2h0X2lzX25vbmUpKVxuICAgIGVsc2VcbiAgICAgIGFzc2VydCAoXG4gICAgICAgIGluZGV4X2lzX2xlYWYgdCBsZWZ0IHx8IGluZGV4X2lzX2xlYWYgdCByaWdodCB8fCBsZWZ0X2lzX25vbmUgfHwgcmlnaHRfaXNfbm9uZSlcbiAgZG9uZVxuOztcblxubGV0IGNyZWF0ZV9leG4gPyhzZXhwX29mX2EgPSBbJXNleHBfb2Y6IF9dKSAoKSB+bGVuOm51bV9sZWF2ZXMgfnJlZHVjZSA9XG4gIGlmIG51bV9sZWF2ZXMgPCAxXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJub24tcG9zaXRpdmUgbnVtYmVyIG9mIGxlYXZlcyBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgKG51bV9sZWF2ZXMgOiBpbnQpXTtcbiAgbGV0IG51bV9icmFuY2hlcyA9IG51bV9sZWF2ZXMgLSAxIGluXG4gIGxldCBudW1fbGVhdmVzX25vdF9pbl9ib3R0b21fbGV2ZWwgPSBJbnQuY2VpbF9wb3cyIG51bV9sZWF2ZXMgLSBudW1fbGVhdmVzIGluXG4gIGxldCBkYXRhID0gT3B0aW9uX2FycmF5LmNyZWF0ZSB+bGVuOihudW1fYnJhbmNoZXMgKyBudW1fbGVhdmVzKSBpblxuICB7IGRhdGE7IG51bV9sZWF2ZXM7IG51bV9sZWF2ZXNfbm90X2luX2JvdHRvbV9sZXZlbDsgcmVkdWNlOyBzZXhwX29mX2EgfVxuOztcblxubGV0IHZhbGlkYXRlX2luZGV4IHQgaSA9XG4gIGlmIGkgPCAwXG4gIHRoZW5cbiAgICByYWlzZV9zXG4gICAgICBbJW1lc3NhZ2UgXCJhdHRlbXB0IHRvIGFjY2VzcyBuZWdhdGl2ZSBpbmRleCBpbiBiYWxhbmNlZCByZWR1Y2VyXCIgfmluZGV4OihpIDogaW50KV07XG4gIGxldCBsZW5ndGggPSB0Lm51bV9sZWF2ZXMgaW5cbiAgaWYgaSA+PSBsZW5ndGhcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcImF0dGVtcHQgdG8gYWNjZXNzIG91dCBvZiBib3VuZHMgaW5kZXggaW4gYmFsYW5jZWQgcmVkdWNlclwiXG4gICAgICAgICAgfmluZGV4OihpIDogaW50KVxuICAgICAgICAgIChsZW5ndGggOiBpbnQpXVxuOztcblxubGV0IHNldF9leG4gdCBpIGEgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIGxldCBkYXRhID0gdC5kYXRhIGluXG4gIGxldCBpID0gcmVmIChsZWFmX2luZGV4IHQgaSkgaW5cbiAgT3B0aW9uX2FycmF5LnNldF9zb21lIGRhdGEgIWkgYTtcbiAgd2hpbGUgIWkgPD4gMCBkb1xuICAgIGxldCBwYXJlbnQgPSBwYXJlbnRfaW5kZXggfmNoaWxkX2luZGV4OiFpIGluXG4gICAgaWYgT3B0aW9uX2FycmF5LmlzX25vbmUgZGF0YSBwYXJlbnRcbiAgICB0aGVuIGkgOj0gMFxuICAgIGVsc2UgKFxuICAgICAgT3B0aW9uX2FycmF5LnVuc2FmZV9zZXRfbm9uZSBkYXRhIHBhcmVudDtcbiAgICAgIGkgOj0gcGFyZW50KVxuICBkb25lXG47O1xuXG5sZXQgZ2V0X2V4biB0IGkgPVxuICB2YWxpZGF0ZV9pbmRleCB0IGk7XG4gIE9wdGlvbl9hcnJheS5nZXRfc29tZV9leG4gdC5kYXRhIChsZWFmX2luZGV4IHQgaSlcbjs7XG5cbmxldCByZWMgY29tcHV0ZV9leG4gdCBpID1cbiAgaWYgT3B0aW9uX2FycmF5LmlzX3NvbWUgdC5kYXRhIGlcbiAgdGhlbiBPcHRpb25fYXJyYXkudW5zYWZlX2dldF9zb21lX2V4biB0LmRhdGEgaVxuICBlbHNlIChcbiAgICBsZXQgbGVmdCA9IGxlZnRfY2hpbGRfaW5kZXggfnBhcmVudF9pbmRleDppIGluXG4gICAgbGV0IHJpZ2h0ID0gcmlnaHRfY2hpbGRfaW5kZXggfmxlZnRfY2hpbGRfaW5kZXg6bGVmdCBpblxuICAgIGlmIGxlZnQgPj0gT3B0aW9uX2FycmF5Lmxlbmd0aCB0LmRhdGFcbiAgICB0aGVuIChcbiAgICAgICgqIElmIHdlIGdldCBoZXJlLCB0aGUgcGFyZW50IHdhcyBhbiB1bnNldCBsZWFmLiAqKVxuICAgICAgbGV0IHNleHBfb2ZfYSA9IHQuc2V4cF9vZl9hIGluXG4gICAgICByYWlzZV9zXG4gICAgICAgIFslbWVzc2FnZVxuICAgICAgICAgIFwiYXR0ZW1wdCB0byBjb21wdXRlIGJhbGFuY2VkIHJlZHVjZXIgd2l0aCB1bnNldCBlbGVtZW50c1wiXG4gICAgICAgICAgICB+YmFsYW5jZWRfcmVkdWNlcjoodCA6IGEgdCldKTtcbiAgICBsZXQgYSA9IHQucmVkdWNlIChjb21wdXRlX2V4biB0IGxlZnQpIChjb21wdXRlX2V4biB0IHJpZ2h0KSBpblxuICAgIE9wdGlvbl9hcnJheS51bnNhZmVfc2V0X3NvbWUgdC5kYXRhIGkgYTtcbiAgICBhKVxuOztcblxubGV0IGNvbXB1dGVfZXhuIHQgPSBjb21wdXRlX2V4biB0IDBcbiIsIm9wZW4hIENvcmVcblxubW9kdWxlIFRpbWVfbnMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUaW1lX25zXG5cbiAgbGV0IHNleHBfb2ZfdCA9IFRpbWVfbnMuQWx0ZXJuYXRlX3NleHAuc2V4cF9vZl90XG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBpbml0IDogJ2FcbiAgOyBzdGVwcyA6IChUaW1lX25zLnQgKiAnYSkgU2VxdWVuY2UudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgeyBpbml0OyBzdGVwcyA9IF8gfSA9IGludmFyaWFudF9hIGluaXRcblxubGV0IHJlYyB2YWx1ZV9pbnRlcm5hbCBpbml0IHN0ZXBzIH5hdCA9XG4gIG1hdGNoIFNlcXVlbmNlLm5leHQgc3RlcHMgd2l0aFxuICB8IE5vbmUgLT4gaW5pdFxuICB8IFNvbWUgKCh0LCBhKSwgc3RlcHMpIC0+XG4gICAgaWYgVGltZV9ucy4oIDwgKSBhdCB0IHRoZW4gaW5pdCBlbHNlIHZhbHVlX2ludGVybmFsIGEgc3RlcHMgfmF0XG47O1xuXG5sZXQgdmFsdWUgdCB+YXQgPSB2YWx1ZV9pbnRlcm5hbCB0LmluaXQgdC5zdGVwcyB+YXRcbmxldCBjb25zdGFudCBpbml0ID0geyBpbml0OyBzdGVwcyA9IFNlcXVlbmNlLmVtcHR5IH1cblxubGV0IGNyZWF0ZV9leG4gfmluaXQgfnN0ZXBzID1cbiAgaWYgbm90XG4gICAgICAgKExpc3QuaXNfc29ydGVkIHN0ZXBzIH5jb21wYXJlOihmdW4gKHRpbWUxLCBfKSAodGltZTIsIF8pIC0+XG4gICAgICAgICAgVGltZV9ucy5jb21wYXJlIHRpbWUxIHRpbWUyKSlcbiAgdGhlblxuICAgIHJhaXNlX3NcbiAgICAgIFslbWVzc2FnZVxuICAgICAgICBcIltTdGVwX2Z1bmN0aW9uLmNyZWF0ZV9leG5dIGdvdCB1bnNvcnRlZCB0aW1lc1wiXG4gICAgICAgICAgfnN0ZXBzOihzdGVwcyB8PiBMaXN0Lm1hcCB+Zjpmc3QgOiBUaW1lX25zLnQgbGlzdCldO1xuICB7IGluaXQ7IHN0ZXBzID0gc3RlcHMgfD4gU2VxdWVuY2Uub2ZfbGlzdCB9XG47O1xuXG5sZXQgY3JlYXRlX2Zyb21fc2VxdWVuY2UgfmluaXQgfnN0ZXBzID0geyBpbml0OyBzdGVwcyB9XG4iLCJvcGVuISBDb3JlXG5cbm1vZHVsZSBXZWFrID0gQ2FtbC5XZWFrXG5cbnR5cGUgJ2EgdCA9ICdhIEhlYXBfYmxvY2sudCBXZWFrLnRcblxubGV0IGNyZWF0ZSB+bGVuID0gV2Vhay5jcmVhdGUgbGVuXG5sZXQgbGVuZ3RoIHQgPSBXZWFrLmxlbmd0aCB0XG5sZXQgc2V0ID0gV2Vhay5zZXRcblxubGV0IHNldF9leG4gdCBpIHggPSBzZXQgdCBpIChPcHRpb24ubWFwIHggfmY6SGVhcF9ibG9jay5jcmVhdGVfZXhuKVxuXG5sZXQgZ2V0ID0gV2Vhay5nZXRcbmxldCBpc19zb21lIHQgaSA9IFdlYWsuY2hlY2sgdCBpXG5sZXQgaXNfbm9uZSB0IGkgPSBub3QgKGlzX3NvbWUgdCBpKVxubGV0IHRvX2FycmF5IHQgPSBBcnJheS5pbml0IChsZW5ndGggdCkgfmY6KGZ1biBpIC0+IGdldCB0IGkpXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwX29mOiBhIEhlYXBfYmxvY2sudCBvcHRpb24gYXJyYXldICh0b19hcnJheSB0KVxuXG5sZXQgaXRlciB0IH5mID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCB0IC0gMSBkb1xuICAgIG1hdGNoIGdldCB0IGkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB2IC0+IGYgKEhlYXBfYmxvY2sudmFsdWUgdilcbiAgZG9uZVxuXG5sZXQgaXRlcmkgdCB+ZiA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggdCAtIDEgZG9cbiAgICBtYXRjaCBnZXQgdCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdiAtPiBmIGkgKEhlYXBfYmxvY2sudmFsdWUgdilcbiAgZG9uZVxuXG5sZXQgYmxpdCB+c3JjIH5zcmNfcG9zIH5kc3QgfmRzdF9wb3MgfmxlbiA9XG4gIFdlYWsuYmxpdCBzcmMgc3JjX3BvcyBkc3QgZHN0X3BvcyBsZW5cbiIsIigqIFdlIGltcGxlbWVudCBhIHdlYWsgcG9pbnRlciB1c2luZyBhIFtXZWFrX2FycmF5LnRdLiAqKVxuXG5vcGVuISBDb3JlXG5cbnR5cGUgJ2EgdCA9ICdhIFdlYWtfYXJyYXkudFxuXG5sZXQgY3JlYXRlICgpID0gV2Vha19hcnJheS5jcmVhdGUgfmxlbjoxXG5cbigqIFdlIHVzZSBhIHdlYWsgYXJyYXkgb2YgbGVuZ3RoIDEsIHNvIHRoZSB3ZWFrIHBvaW50ZXIgaXMgYXQgaW5kZXggMC4gKilcbmxldCBpbmRleCA9IDBcblxubGV0IGdldCB0ID0gV2Vha19hcnJheS5nZXQgdCBpbmRleFxuXG5sZXQgc2V4cF9vZl90IHNleHBfb2ZfYSB0ID0gWyVzZXhwIChnZXQgdCA6IGEgSGVhcF9ibG9jay50IG9wdGlvbildXG5cbmxldCBpc19ub25lIHQgPSBXZWFrX2FycmF5LmlzX25vbmUgdCBpbmRleFxubGV0IGlzX3NvbWUgdCA9IFdlYWtfYXJyYXkuaXNfc29tZSB0IGluZGV4XG5cbmxldCBzZXQgdCBibG9jayA9IFdlYWtfYXJyYXkuc2V0IHQgaW5kZXggKFNvbWUgYmxvY2spXG4iLCJvcGVuISBJbXBvcnRcblxuXG50eXBlICgnYSwgJ2IpIHQgPVxuICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAoJ2EsICdiIFdlYWtfcG9pbnRlci50KSBIYXNodGJsLnRcbiAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICAgICAgICAgIDogJ2EgVGhyZWFkX3NhZmVfcXVldWUudFxuICA7IG11dGFibGUgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgOiB1bml0IC0+IHVuaXRcbiAgfVxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxubW9kdWxlIFVzaW5nX2hhc2hhYmxlID0gc3RydWN0XG4gIGxldCBjcmVhdGUgP2dyb3d0aF9hbGxvd2VkID9zaXplIGhhc2hhYmxlID1cbiAgICB7IGVudHJ5X2J5X2tleSAgICAgICAgICAgICAgICAgICAgID0gSGFzaHRibC5Vc2luZ19oYXNoYWJsZS5jcmVhdGUgfmhhc2hhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgP2dyb3d0aF9hbGxvd2VkID9zaXplICgpXG4gICAgOyBrZXlzX3dpdGhfdW51c2VkX2RhdGEgICAgICAgICAgICA9IFRocmVhZF9zYWZlX3F1ZXVlLmNyZWF0ZSAoKVxuICAgIDsgdGhyZWFkX3NhZmVfcnVuX3doZW5fdW51c2VkX2RhdGEgPSBpZ25vcmVcbiAgICB9XG4gIDs7XG5lbmRcblxubGV0IGNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgbSA9XG4gIFVzaW5nX2hhc2hhYmxlLmNyZWF0ZSA/Z3Jvd3RoX2FsbG93ZWQgP3NpemUgKEhhc2h0YmwuSGFzaGFibGUub2Zfa2V5IG0pXG47O1xuXG5sZXQgc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHQgfnRocmVhZF9zYWZlX2YgPVxuICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhIDwtIHRocmVhZF9zYWZlX2Y7XG47O1xuXG5sZXQgcmVtb3ZlIHQga2V5ID0gSGFzaHRibC5yZW1vdmUgdC5lbnRyeV9ieV9rZXkga2V5XG5cbigqIEluIG9yZGVyIGZvciBhIGNhbGwgdG8gW3JlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YV0gdG8gcmVjbGFpbSBhIGtleSB0aGF0XG4gICB3YXMgcHJldmlvdXNseSBmaW5hbGl6ZWQsIHRoZSB3ZWFrIHBvaW50ZXIgbXVzdCBoYXZlIGJlZW4gY2xlYXJlZC4gIFRoaXMgcmVsaWVzIG9uIHRoZVxuICAgZmFjdCB0aGF0IHRoZSBPQ2FtbCBnYXJiYWdlIGNvbGxlY3RvciBjbGVhcnMgd2Vha3MgYW5kIHRoZW4gcnVucyBmaW5hbGl6ZXJzLiAqKVxubGV0IHJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQua2V5c193aXRoX3VudXNlZF9kYXRhID4gMCBkb1xuICAgIGxldCBrZXkgPSBUaHJlYWRfc2FmZV9xdWV1ZS5kZXF1ZXVlX2V4biB0LmtleXNfd2l0aF91bnVzZWRfZGF0YSBpblxuICAgIG1hdGNoIEhhc2h0YmwuZmluZCB0LmVudHJ5X2J5X2tleSBrZXkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBlbnRyeSAtPiBpZiBXZWFrX3BvaW50ZXIuaXNfbm9uZSBlbnRyeSB0aGVuIHJlbW92ZSB0IGtleVxuICBkb25lO1xuOztcblxubGV0IGdldF9lbnRyeSB0IGtleSA9XG4gIEhhc2h0YmwuZmluZF9vcl9hZGQgdC5lbnRyeV9ieV9rZXkga2V5XG4gICAgfmRlZmF1bHQ6KGZ1biAoKSAtPiBXZWFrX3BvaW50ZXIuY3JlYXRlICgpKTtcbjs7XG5cbmxldCBtZW0gdCBrZXkgPVxuICBtYXRjaCBIYXNodGJsLmZpbmQgdC5lbnRyeV9ieV9rZXkga2V5IHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuaXNfc29tZSBlbnRyeVxuOztcblxubGV0IGtleV9pc191c2luZ19zcGFjZSB0IGtleSA9IEhhc2h0YmwubWVtIHQuZW50cnlfYnlfa2V5IGtleVxuXG5sZXQgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YSA9XG4gIFdlYWtfcG9pbnRlci5zZXQgZW50cnkgZGF0YTtcbiAgR2MuRXhwZXJ0LmFkZF9maW5hbGl6ZXJfbGFzdCBkYXRhIChmdW4gKCkgLT5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQua2V5c193aXRoX3VudXNlZF9kYXRhIGtleTtcbiAgICB0LnRocmVhZF9zYWZlX3J1bl93aGVuX3VudXNlZF9kYXRhICgpKTtcbjs7XG5cbmxldCByZXBsYWNlIHQgfmtleSB+ZGF0YSA9IHNldF9kYXRhIHQga2V5IChnZXRfZW50cnkgdCBrZXkpIGRhdGFcblxubGV0IGFkZF9leG4gdCB+a2V5IH5kYXRhID1cbiAgbGV0IGVudHJ5ID0gZ2V0X2VudHJ5IHQga2V5IGluXG4gIGlmIFdlYWtfcG9pbnRlci5pc19zb21lIGVudHJ5XG4gIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJXZWFrX2hhc2h0YmwuYWRkX2V4biBvZiBrZXkgaW4gdXNlXCIgdCBbJXNleHBfb2Y6IChfLCBfKSB0XTtcbiAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbjs7XG5cbmxldCBmaW5kIHQga2V5ID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kIHQuZW50cnlfYnlfa2V5IGtleSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBlbnRyeSAtPiBXZWFrX3BvaW50ZXIuZ2V0IGVudHJ5XG47O1xuXG5sZXQgZmluZF9vcl9hZGQgdCBrZXkgfmRlZmF1bHQgPVxuICBsZXQgZW50cnkgPSBnZXRfZW50cnkgdCBrZXkgaW5cbiAgbWF0Y2ggV2Vha19wb2ludGVyLmdldCBlbnRyeSB3aXRoXG4gIHwgU29tZSB2IC0+IHZcbiAgfCBOb25lIC0+XG4gICAgbGV0IGRhdGEgPSBkZWZhdWx0ICgpIGluXG4gICAgc2V0X2RhdGEgdCBrZXkgZW50cnkgZGF0YTtcbiAgICBkYXRhXG47O1xuIiwidHlwZSB0ID1cbiAgfCBCZWZvcmVcbiAgfCBBZnRlclxuW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiIsIlslJWltcG9ydCBcImRlYnVnLm1saFwiXVxuXG5vcGVuIENvcmVcbmluY2x1ZGUgSW50LlJlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuXG4oKiBBbGwgW2Fzc2VydF1zIGFuZCBvdGhlciBjaGVja3MgdGhyb3VnaG91dCB0aGUgY29kZSBhcmUgZ3VhcmRlZCBieSBbaWYgZGVidWddLiAgVGhlXG4gICBERUJVRyB2YXJpYWJsZSBpcyBzZXQgaW4gdGhlIGxpYiBbaW5jcmVtZW50YWxdIGFuZCB1bnNldCBpbiB0aGUgbGliXG4gICBbaW5jcmVtZW50YWxfZGVidWddLCBidXQgYXBhcnQgZnJvbSB0aGF0IHRoZXkgYXJlIGlkZW50aWNhbC4gIFRlc3RzIGFyZSBydW4gd2l0aCBib3RoXG4gICB0aGUgcHJvZHVjdGlvbiBhbmQgZGVidWcgbGliLCBhbmQgdXNlcnMgY2FuIGNob29zZSB0byBidWlsZCB3aXRoIHRoZSBkZWJ1ZyBsaWJyYXJ5LCBpZlxuICAgdGhleSBzdXNwZWN0IHRoZXkgZm91bmQgYSBidWcgaW4gaW5jcmVtZW50YWwuICopXG5cblslJWlmIEpTQ19ERUJVR11cblxubGV0IGRlYnVnID0gdHJ1ZVxuXG5bJSVlbHNlXVxuXG5sZXQgZGVidWcgPSBmYWxzZVxuXG5bJSVlbmRpZl1cblxubGV0IGNvbmNhdCA9IFN0cmluZy5jb25jYXRcbmxldCB0YWcgbmFtZSBhIHNleHBfb2ZfYSA9IChuYW1lLCBhKSB8PiBbJXNleHBfb2Y6IHN0cmluZyAqIGFdXG5cbm1vZHVsZSBTdGVwX2Z1bmN0aW9uID0gSW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG5tb2R1bGUgVGltZV9ucyA9IHN0cnVjdFxuICBpbmNsdWRlIFRpbWVfbnNcblxuICBsZXQgc2V4cF9vZl90ID0gVGltZV9ucy5BbHRlcm5hdGVfc2V4cC5zZXhwX29mX3RcbmVuZFxuXG5tb2R1bGUgQXJyYXkgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBBcnJheVxuXG4gICgqIE5vdCBkZWZpbmluZyBhbGlhc2VzIGluIHByb2R1Y3Rpb24gbW9kZSwgc2luY2UgdGhleSBicmVhayB0eXBlIHNwZWNpYWxpemF0aW9uIG9mXG4gICAgIGFycmF5IGFjY2Vzc2VzLiAqKVxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuIGEgPVxuICAgIGxldCBuZXdfdCA9IGNyZWF0ZSB+bGVuIGEgaW5cbiAgICBBcnJheS5ibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgVW9wdCA9IHN0cnVjdFxuICBpbmNsdWRlIFVvcHRcblxuICBsZXQgdW5zYWZlX3ZhbHVlID0gaWYgZGVidWcgdGhlbiB2YWx1ZV9leG4gZWxzZSB1bnNhZmVfdmFsdWVcbmVuZFxuXG5tb2R1bGUgVW5pZm9ybV9hcnJheSA9IHN0cnVjdFxuICBpbmNsdWRlIFVuaWZvcm1fYXJyYXlcblxuICBbJSVpZiBKU0NfREVCVUddXG5cbiAgbGV0IHVuc2FmZV9nZXQgPSBnZXRcbiAgbGV0IHVuc2FmZV9zZXQgPSBzZXRfd2l0aF9jYW1sX21vZGlmeVxuXG4gIFslJWVsc2VdXG5cbiAgKCogVW5pZm9ybV9hcnJheSBpcyBiZWluZyBcInNtYXJ0XCIgYnkgY2hlY2tpbmcgaWYgZWxlbWVudHMgYXJlIGludGVnZXJzLCBidXQgVW9wdC50XG4gICAgIGFsbW9zdCBuZXZlciBjb250YWluIGludGVnZXJzLCBzbyB0aGUgZXh0cmEgY2hlY2sgdG8gbWFrZSBnZW5lcmF0ZWQgY29kZSBoYXJkZXIgdG9cbiAgICAgcmVhZCBhbmQgcG90ZW50aWFsbHkgc2xvd2VyLiAqKVxuICBsZXQgdW5zYWZlX3NldCA9IHVuc2FmZV9zZXRfd2l0aF9jYW1sX21vZGlmeVxuICBsZXQgc2V0ID0gc2V0X3dpdGhfY2FtbF9tb2RpZnlcblxuICBbJSVlbmRpZl1cblxuICAoKiBSZXF1aXJlcyBbbGVuID49IGxlbmd0aCB0XS4gKilcbiAgbGV0IHJlYWxsb2MgdCB+bGVuID1cbiAgICBsZXQgbmV3X3QgPSBjcmVhdGUgfmxlbiBVb3B0Lm5vbmUgaW5cbiAgICBibGl0IH5zcmM6dCB+c3JjX3BvczowIH5kc3Q6bmV3X3QgfmRzdF9wb3M6MCB+bGVuOihsZW5ndGggdCk7XG4gICAgbmV3X3RcbiAgOztcbmVuZFxuXG5tb2R1bGUgQWxhcm1fcHJlY2lzaW9uID0gVGltaW5nX3doZWVsLkFsYXJtX3ByZWNpc2lvblxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxudHlwZSAnYSB0ID1cbiAgKCogV2Ugc3BlY2lhbGl6ZSBzb21lIGN1dG9mZnMgdG8gYXZvaWQgYW4gaW5kaXJlY3QgZnVuY3Rpb24gY2FsbDsgaW4gcGFydGljdWxhciB3ZVxuICAgICBzcGVjaWFsaXplIHRoZSBkZWZhdWx0IChhbmQgaGVuY2Ugb3ZlcndoZWxtaW5nbHkgY29tbW9uKSBjYXNlIG9mIHBoeXNpY2FsXG4gICAgIGVxdWFsaXR5LiAqKVxuICB8IEFsd2F5c1xuICB8IE5ldmVyXG4gIHwgUGh5c19lcXVhbFxuICB8IENvbXBhcmUgb2YgKCdhIC0+ICdhIC0+IGludClcbiAgfCBFcXVhbCBvZiAoJ2EgLT4gJ2EgLT4gYm9vbClcbiAgfCBGIG9mIChvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+IGJvb2wpXG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IF8gdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBBbHdheXMgfCBOZXZlciB8IFBoeXNfZXF1YWwgfCBDb21wYXJlIF8gfCBFcXVhbCBfIHwgRiBfIC0+ICgpKVxuOztcblxubGV0IGNyZWF0ZSBmID0gRiBmXG5sZXQgb2ZfY29tcGFyZSBmID0gQ29tcGFyZSBmXG5sZXQgb2ZfZXF1YWwgZiA9IEVxdWFsIGZcbmxldCBuZXZlciA9IE5ldmVyXG5sZXQgYWx3YXlzID0gQWx3YXlzXG5sZXQgcG9seV9lcXVhbCA9IEVxdWFsIFBvbHkuZXF1YWxcblxubGV0IHNob3VsZF9jdXRvZmYgdCB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBQaHlzX2VxdWFsIC0+IHBoeXNfZXF1YWwgb2xkX3ZhbHVlIG5ld192YWx1ZVxuICB8IE5ldmVyIC0+IGZhbHNlXG4gIHwgQWx3YXlzIC0+IHRydWVcbiAgfCBDb21wYXJlIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlID0gMFxuICB8IEVxdWFsIGYgLT4gZiBvbGRfdmFsdWUgbmV3X3ZhbHVlXG4gIHwgRiBmIC0+IGYgfm9sZF92YWx1ZSB+bmV3X3ZhbHVlXG47O1xuXG5sZXQgZXF1YWwgdDEgdDIgPVxuICBtYXRjaCB0MSwgdDIgd2l0aFxuICB8IEFsd2F5cywgQWx3YXlzIC0+IHRydWVcbiAgfCBBbHdheXMsIF8gLT4gZmFsc2VcbiAgfCBOZXZlciwgTmV2ZXIgLT4gdHJ1ZVxuICB8IE5ldmVyLCBfIC0+IGZhbHNlXG4gIHwgUGh5c19lcXVhbCwgUGh5c19lcXVhbCAtPiB0cnVlXG4gIHwgUGh5c19lcXVhbCwgXyAtPiBmYWxzZVxuICB8IENvbXBhcmUgZjEsIENvbXBhcmUgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IENvbXBhcmUgXywgXyAtPiBmYWxzZVxuICB8IEVxdWFsIGYxLCBFcXVhbCBmMiAtPiBwaHlzX2VxdWFsIGYxIGYyXG4gIHwgRXF1YWwgXywgXyAtPiBmYWxzZVxuICB8IEYgZjEsIEYgZjIgLT4gcGh5c19lcXVhbCBmMSBmMlxuICB8IEYgXywgXyAtPiBmYWxzZVxuOztcblxubGV0IHBoeXNfZXF1YWwgPSBQaHlzX2VxdWFsXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgU3RyaW5nX2xpc3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nIGxpc3QgW0BAZGVyaXZpbmcgY29tcGFyZSwgc2V4cF9vZl1cblxuICBpbmNsdWRlICh2YWwgQ29tcGFyYXRvci5tYWtlIH5zZXhwX29mX3QgfmNvbXBhcmUpXG5lbmRcblxudHlwZSBkb3QgPVxuICB7IGxhYmVsIDogU2V0Lk0oU3RyaW5nX2xpc3QpLnRcbiAgOyBhdHRyaWJ1dGVzIDogc3RyaW5nIFN0cmluZy5NYXAudFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG50eXBlIHQgPVxuICB8IERvdCBvZiBkb3RcbiAgfCBJbmZvIG9mIEluZm8udFxuICB8IEFwcGVuZCBvZlxuICAgICAgeyBwcmlvciA6IHRcbiAgICAgIDsgbmV3XyA6IHRcbiAgICAgIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbmZvIGluZm8gPSBJbmZvIGluZm9cbmxldCBhcHBlbmQgcHJpb3IgbmV3XyA9IEFwcGVuZCB7IHByaW9yOyBuZXdfIH1cblxubGV0IGRvdCB+bGFiZWwgfmF0dHJpYnV0ZXMgPVxuICBsZXQgbGFiZWwgPSBTZXQuc2luZ2xldG9uIChtb2R1bGUgU3RyaW5nX2xpc3QpIGxhYmVsIGluXG4gIERvdCB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCByZWMgdG9fZG90ID0gZnVuY3Rpb25cbiAgfCBJbmZvIGkgLT5cbiAgICB7IGxhYmVsID0gU2V0LnNpbmdsZXRvbiAobW9kdWxlIFN0cmluZ19saXN0KSBbIEluZm8udG9fc3RyaW5nX2h1bSBpIF1cbiAgICA7IGF0dHJpYnV0ZXMgPSBTdHJpbmcuTWFwLmVtcHR5XG4gICAgfVxuICB8IERvdCBkb3QgLT4gZG90XG4gIHwgQXBwZW5kIHsgcHJpb3I7IG5ld18gfSAtPlxuICAgIGxldCBwcmlvciA9IHRvX2RvdCBwcmlvciBpblxuICAgIGxldCBuZXdfID0gdG9fZG90IG5ld18gaW5cbiAgICBsZXQgbGFiZWwgPSBTZXQudW5pb24gcHJpb3IubGFiZWwgbmV3Xy5sYWJlbCBpblxuICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgIE1hcC5tZXJnZV9za2V3ZWRcbiAgICAgICAgcHJpb3IuYXR0cmlidXRlc1xuICAgICAgICBuZXdfLmF0dHJpYnV0ZXNcbiAgICAgICAgfmNvbWJpbmU6KGZ1biB+a2V5Ol8gX2xlZnQgcmlnaHQgLT4gcmlnaHQpXG4gICAgaW5cbiAgICB7IGxhYmVsOyBhdHRyaWJ1dGVzIH1cbjs7XG5cbmxldCBlc2NhcGVfZG90X3N0cmluZyBzID1cbiAgKCogaHR0cHM6Ly9ncmFwaHZpei5vcmcvZG9jL2luZm8vbGFuZy5odG1sICopXG4gIFwiXFxcIlwiIF4gU3RyaW5nLnN1YnN0cl9yZXBsYWNlX2FsbCBzIH5wYXR0ZXJuOlwiXFxcIlwiIH53aXRoXzpcIlxcXFxcXFwiXCIgXiBcIlxcXCJcIlxuOztcblxubGV0IGVzY2FwZV9yZWNvcmRfbGFiZWwgcyA9XG4gICgqIGh0dHBzOi8vZ3JhcGh2aXoub3JnL2RvYy9pbmZvL3NoYXBlcy5odG1sICopXG4gIFN0cmluZy5jb25jYXRfbWFwIHMgfmY6KGZ1bmN0aW9uXG4gICAgfCAoJzwnIHwgJz4nIHwgJ3snIHwgJ30nIHwgJ3wnIHwgJ1xcXFwnIHwgJyAnKSBhcyBjIC0+IFwiXFxcXFwiIF4gU3RyaW5nLm9mX2NoYXIgY1xuICAgIHwgYyAtPiBTdHJpbmcub2ZfY2hhciBjKVxuOztcblxubGV0IHRvX3N0cmluZyB+bmFtZSB7IGxhYmVsOyBhdHRyaWJ1dGVzIH0gPVxuICBsZXQgbGFiZWwgPVxuICAgIGxhYmVsXG4gICAgfD4gU2V0LnRvX2xpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIGNvbHMgLT5cbiAgICAgIFwie1wiIF4gU3RyaW5nLmNvbmNhdCAoTGlzdC5tYXAgY29scyB+Zjplc2NhcGVfcmVjb3JkX2xhYmVsKSB+c2VwOlwifFwiIF4gXCJ9XCIpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwifFwiXG4gICAgfD4gZnVuIHMgLT4gXCJ7XCIgXiBzIF4gXCJ9XCJcbiAgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIGF0dHJpYnV0ZXNcbiAgICB8PiBNYXAudG9fYWxpc3RcbiAgICB8PiBMaXN0Lm1hcCB+ZjooZnVuIChrLCB2KSAtPlxuICAgICAgc3ByaW50ZiB7fCAlcz0lc3x9IChlc2NhcGVfZG90X3N0cmluZyBrKSAoZXNjYXBlX2RvdF9zdHJpbmcgdikpXG4gICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiIFwiXG4gIGluXG4gIHNwcmludGYge3wgICVzIFtzaGFwZT1NcmVjb3JkIGxhYmVsPSVzICVzXXx9IG5hbWUgKGVzY2FwZV9kb3Rfc3RyaW5nIGxhYmVsKSBhdHRyaWJ1dGVzXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAxKVxuXG5sZXQgbmV4dCA9XG4gIGxldCByID0gcmVmIDAgaW5cbiAgZnVuICgpIC0+XG4gICAgaW5jciByO1xuICAgICFyXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW50XG5cbmxldCBpbnZhcmlhbnQgdCA9IGFzc2VydCAodCA+PSAtMSlcbmxldCBub25lID0gLTFcbmxldCBpc19ub25lIHQgPSB0ID0gbm9uZVxubGV0IGlzX3NvbWUgdCA9IHQgPj0gMFxubGV0IGFkZDEgdCA9IHQgKyAxXG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIFByZXZpb3VzX3VwZGF0ZV9raW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWRcbiAgICB8IE5lY2Vzc2FyeVxuICAgIHwgQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIE5vZGVfdXBkYXRlID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBOZWNlc3Nhcnkgb2YgJ2FcbiAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgIHwgSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5XG4gIFtAQGRlcml2aW5nIGNvbXBhcmUsIHNleHBfb2ZdXG5lbmRcblxudHlwZSAnYSB0ID1cbiAgeyBmIDogJ2EgTm9kZV91cGRhdGUudCAtPiB1bml0XG4gIDsgbXV0YWJsZSBwcmV2aW91c191cGRhdGVfa2luZCA6IFByZXZpb3VzX3VwZGF0ZV9raW5kLnRcbiAgOyBjcmVhdGVkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgY3JlYXRlIGYgfmF0OmNyZWF0ZWRfYXQgPSB7IGY7IHByZXZpb3VzX3VwZGF0ZV9raW5kID0gTmV2ZXJfYmVlbl91cGRhdGVkOyBjcmVhdGVkX2F0IH1cblxubGV0IHJlYWxseV9ydW4gdCAobm9kZV91cGRhdGUgOiBfIE5vZGVfdXBkYXRlLnQpID1cbiAgdC5wcmV2aW91c191cGRhdGVfa2luZFxuICA8LSAobWF0Y2ggbm9kZV91cGRhdGUgd2l0aFxuICAgIHwgTmVjZXNzYXJ5IF8gLT4gTmVjZXNzYXJ5XG4gICAgfCBDaGFuZ2VkIF8gLT4gQ2hhbmdlZFxuICAgIHwgSW52YWxpZGF0ZWQgLT4gSW52YWxpZGF0ZWRcbiAgICB8IFVubmVjZXNzYXJ5IC0+IFVubmVjZXNzYXJ5KTtcbiAgdC5mIG5vZGVfdXBkYXRlXG47O1xuXG5sZXQgcnVuIHQgKG5vZGVfdXBkYXRlIDogXyBOb2RlX3VwZGF0ZS50KSB+bm93ID1cbiAgKCogV2Ugb25seSBydW4gdGhlIGhhbmRsZXIgaWYgd2FzIGNyZWF0ZWQgaW4gYW4gZWFybGllciBzdGFiaWxpemF0aW9uIGN5Y2xlLiAgSWYgdGhlXG4gICAgIGhhbmRsZXIgd2FzIGNyZWF0ZWQgYnkgYW5vdGhlciBvbi11cGRhdGUgaGFuZGxlciBkdXJpbmcgdGhlIHJ1bm5pbmcgb2Ygb24tdXBkYXRlXG4gICAgIGhhbmRsZXJzIGluIHRoZSBjdXJyZW50IHN0YWJpbGl6YXRpb24sIHdlIHRyZWF0IHRoZSBhZGRlZCBoYW5kbGVyIGFzIGlmIGl0IHdlcmUgYWRkZWRcbiAgICAgYWZ0ZXIgdGhpcyBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgV2Ugd2lsbCBydW4gaXQgYXQgdGhlIG5leHQgc3RhYmlsaXphdGlvbiwgYmVjYXVzZVxuICAgICB0aGUgbm9kZSB3aXRoIHRoZSBoYW5kbGVyIHdhcyBwdXNoZWQgb24gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgaWYgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSB0LmNyZWF0ZWRfYXQgbm93IDwgMFxuICB0aGVuIChcbiAgICBtYXRjaCB0LnByZXZpb3VzX3VwZGF0ZV9raW5kLCBub2RlX3VwZGF0ZSB3aXRoXG4gICAgKCogT25jZSBhIG5vZGUgaXMgaW52YWxpZGF0ZWQsIHRoZXJlIHdpbGwgbmV2ZXIgYmUgZnVydGhlciBpbmZvcm1hdGlvbiB0byBwcm92aWRlLFxuICAgICAgIHNpbmNlIGluY3JlbWVudGFsIGRvZXMgbm90IGFsbG93IGFuIGludmFsaWQgbm9kZSB0byBiZWNvbWUgdmFsaWQuICopXG4gICAgfCBJbnZhbGlkYXRlZCwgXyAtPiAoKVxuICAgICgqIFRoZXNlIGNhc2VzIGNhbiBoYXBwZW4gaWYgYSBub2RlIGlzIGhhbmRsZWQgYWZ0ZXIgc3RhYmlsaXphdGlvbiBkdWUgdG8gYW5vdGhlclxuICAgICAgIGhhbmRsZXIuICBCdXQgZm9yIHRoZSBjdXJyZW50IGhhbmRsZXIsIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG8gYmVjYXVzZSB0aGVyZSBpcyBub1xuICAgICAgIG5ldyBpbmZvcm1hdGlvbiB0byBwcm92aWRlLiAqKVxuICAgIHwgQ2hhbmdlZCwgTmVjZXNzYXJ5IF8gfCBOZWNlc3NhcnksIE5lY2Vzc2FyeSBfIHwgVW5uZWNlc3NhcnksIFVubmVjZXNzYXJ5IC0+ICgpXG4gICAgKCogSWYgdGhpcyBoYW5kbGVyIGhhc24ndCBzZWVuIGEgbm9kZSB0aGF0IGlzIGNoYW5naW5nLCB3ZSB0cmVhdCB0aGUgdXBkYXRlIGFzIGFuXG4gICAgICAgaW5pdGlhbGl6YXRpb24uICopXG4gICAgfCAoTmV2ZXJfYmVlbl91cGRhdGVkIHwgVW5uZWNlc3NhcnkpLCBDaGFuZ2VkIChfLCBhKSAtPiByZWFsbHlfcnVuIHQgKE5lY2Vzc2FyeSBhKVxuICAgICgqIEFsbCBvdGhlciB1cGRhdGVzIGFyZSBydW4gYXMgaXMuICopXG4gICAgfCBOZXZlcl9iZWVuX3VwZGF0ZWQsIChOZWNlc3NhcnkgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpXG4gICAgfCBVbm5lY2Vzc2FyeSwgKE5lY2Vzc2FyeSBfIHwgSW52YWxpZGF0ZWQpXG4gICAgfCBOZWNlc3NhcnksIChDaGFuZ2VkIF8gfCBVbm5lY2Vzc2FyeSB8IEludmFsaWRhdGVkKVxuICAgIHwgQ2hhbmdlZCwgKENoYW5nZWQgXyB8IFVubmVjZXNzYXJ5IHwgSW52YWxpZGF0ZWQpIC0+IHJlYWxseV9ydW4gdCBub2RlX3VwZGF0ZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxuXG50eXBlIHQgPVxuICB7IGV4biA6IGV4blxuICA7IGJhY2t0cmFjZSA6IEJhY2t0cmFjZS50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBjcmVhdGUgZXhuID0geyBleG47IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5FeG4ubW9zdF9yZWNlbnQgKCkgfVxuIiwiKCogVGhpcyBtb2R1bGUgaGFzIGEgZ2lhbnQgW21vZHVsZSByZWNdIGRlZmluaW5nIGFsbCB0aGUgbXV0dWFsbHkgcmVjdXJzaXZlIHR5cGVzIHVzZWRcbiAgIGluIHRoZSBpbXBsZW1lbnRhdGlvbi4gIFRoZSBkZWZpbml0aW9uIG9mIGVhY2ggdHlwZSBpcyB0aGVuIHJlcGVhdGVkIGluIGl0cyBmaWxlO1xuICAgY29tbWVudHMgYmVsb25nIHRoZXJlLCBub3QgaGVyZS5cblxuICAgV2UgcHV0IGp1c3QgZW5vdWdoIHNleHAgY29udmVydGVycyBoZXJlIHRvIGRpc3BsYXkgbm9kZSBpZHMuICBUaGUgZGV0YWlsZWQgc2V4cFxuICAgY29udmVydGVycyBhcmUgZ2VuZXJhdGVkIHZpYSBbd2l0aCBzZXhwXSBpbiB0aGUgaW5kaXZpZHVhbCBmaWxlcy4gIERlZmluaW5nIHRoZSBzZXhwXG4gICBjb252ZXJ0ZXJzIG91dHNpZGUgb2YgdGhlIFttb2R1bGUgcmVjXSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGFjY2lkZW50YWxseSBpbnRyb2R1Y2UgYVxuICAgc2V4cCBjb252ZXJ0ZXIgdGhhdCB3b3VsZCB0cnkgdG8gcHJvZHVjZSBhbiBpbmZpbml0ZSBzZXhwLlxuKilcblxub3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgcmVjIEFkanVzdF9oZWlnaHRzX2hlYXAgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG11dGFibGUgbGVuZ3RoIDogaW50XG4gICAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICAgIDsgbXV0YWJsZSBtYXhfaGVpZ2h0X3NlZW4gOiBpbnRcbiAgICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgfVxuZW5kID1cbiAgQWRqdXN0X2hlaWdodHNfaGVhcFxuXG5hbmQgQWxhcm0gOiBzaWdcbiAgdHlwZSB0ID0gQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwuQWxhcm0udFxuZW5kID1cbiAgQWxhcm1cblxuYW5kIEFsYXJtX3ZhbHVlIDogc2lnXG4gIG1vZHVsZSBBY3Rpb24gOiBzaWdcbiAgICB0eXBlIHQgPVxuICAgICAgfCBBdCBvZiBBdC50XG4gICAgICB8IEF0X2ludGVydmFscyBvZiBBdF9pbnRlcnZhbHMudFxuICAgICAgfCBTbmFwc2hvdCA6IF8gU25hcHNob3QudCAtPiB0XG4gICAgICB8IFN0ZXBfZnVuY3Rpb24gOiBfIFN0ZXBfZnVuY3Rpb25fbm9kZS50IC0+IHRcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB7IGFjdGlvbiA6IEFjdGlvbi50XG4gICAgOyBtdXRhYmxlIG5leHRfZmlyZWQgOiB0IFVvcHQudFxuICAgIH1cbmVuZCA9XG4gIEFsYXJtX3ZhbHVlXG5cbmFuZCBBcnJheV9mb2xkIDogc2lnXG4gIHR5cGUgKCdhLCAnYWNjKSB0ID1cbiAgICB7IGluaXQgOiAnYWNjXG4gICAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gICAgOyBjaGlsZHJlbiA6ICdhIE5vZGUudCBhcnJheVxuICAgIH1cbmVuZCA9XG4gIEFycmF5X2ZvbGRcblxuYW5kIEF0IDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtYWluIDogQmVmb3JlX29yX2FmdGVyLnQgTm9kZS50XG4gICAgOyBhdCA6IFRpbWVfbnMudFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIEF0XG5cbmFuZCBBdF9pbnRlcnZhbHMgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IG1haW4gOiB1bml0IE5vZGUudFxuICAgIDsgYmFzZSA6IFRpbWVfbnMudFxuICAgIDsgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udFxuICAgIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgICA7IGNsb2NrIDogQ2xvY2sudFxuICAgIH1cbmVuZCA9XG4gIEF0X2ludGVydmFsc1xuXG5hbmQgQmluZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2IpIHQgPVxuICAgIHsgbWFpbiA6ICdiIE5vZGUudFxuICAgIDsgbXV0YWJsZSBmIDogJ2EgLT4gJ2IgTm9kZS50XG4gICAgOyBsaHMgOiAnYSBOb2RlLnRcbiAgICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSByaHMgOiAnYiBOb2RlLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIHJoc19zY29wZSA6IFNjb3BlLnRcbiAgICA7IG11dGFibGUgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBCaW5kXG5cbmFuZCBDbG9jayA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgdGltaW5nX3doZWVsIDogQWxhcm1fdmFsdWUudCBUaW1pbmdfd2hlZWwudFxuICAgIDsgbm93IDogVGltZV9ucy50IFZhci50XG4gICAgOyBoYW5kbGVfZmlyZWQgOiBBbGFybS50IC0+IHVuaXRcbiAgICA7IG11dGFibGUgZmlyZWRfYWxhcm1fdmFsdWVzIDogQWxhcm1fdmFsdWUudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBDbG9ja1xuXG5hbmQgRXhwZXJ0IDogc2lnXG4gIHR5cGUgJ2EgZWRnZSA9XG4gICAgeyBjaGlsZCA6ICdhIE5vZGUudFxuICAgIDsgb25fY2hhbmdlIDogJ2EgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBpbmRleCA6IGludCBVb3B0LnRcbiAgICB9XG5cbiAgdHlwZSBwYWNrZWRfZWRnZSA9IEUgOiAnYSBlZGdlIC0+IHBhY2tlZF9lZGdlIFtAQHVuYm94ZWRdXG5cbiAgdHlwZSAnYSB0ID1cbiAgICB7IGYgOiB1bml0IC0+ICdhXG4gICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA6IGlzX25vd19vYnNlcnZhYmxlOmJvb2wgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBjaGlsZHJlbiA6IHBhY2tlZF9lZGdlIFVvcHQudCBVbmlmb3JtX2FycmF5LnRcbiAgICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gICAgOyBtdXRhYmxlIGZvcmNlX3N0YWxlIDogYm9vbFxuICAgIDsgbXV0YWJsZSBudW1faW52YWxpZF9jaGlsZHJlbiA6IGludFxuICAgIDsgbXV0YWJsZSB3aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyA6IGJvb2xcbiAgICB9XG5lbmQgPVxuICBFeHBlcnRcblxuYW5kIEZyZWV6ZSA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgICA7IG9ubHlfZnJlZXplX3doZW4gOiAnYSAtPiBib29sXG4gICAgfVxuZW5kID1cbiAgRnJlZXplXG5cbmFuZCBJZl90aGVuX2Vsc2UgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgICA7IHRlc3QgOiBib29sIE5vZGUudFxuICAgIDsgdGVzdF9jaGFuZ2UgOiB1bml0IE5vZGUudFxuICAgIDsgbXV0YWJsZSBjdXJyZW50X2JyYW5jaCA6ICdhIE5vZGUudCBVb3B0LnRcbiAgICA7IHRoZW5fIDogJ2EgTm9kZS50XG4gICAgOyBlbHNlXyA6ICdhIE5vZGUudFxuICAgIH1cbmVuZCA9XG4gIElmX3RoZW5fZWxzZVxuXG5hbmQgSW50ZXJuYWxfb2JzZXJ2ZXIgOiBzaWdcbiAgbW9kdWxlIFN0YXRlIDogc2lnXG4gICAgdHlwZSB0ID1cbiAgICAgIHwgQ3JlYXRlZFxuICAgICAgfCBJbl91c2VcbiAgICAgIHwgRGlzYWxsb3dlZFxuICAgICAgfCBVbmxpbmtlZFxuICBlbmRcblxuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSBzdGF0ZSA6IFN0YXRlLnRcbiAgICA7IG9ic2VydmluZyA6ICdhIE5vZGUudFxuICAgIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgICA7IG11dGFibGUgcHJldl9pbl9hbGwgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgbmV4dF9pbl9hbGwgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgICA7IG11dGFibGUgcHJldl9pbl9vYnNlcnZpbmcgOiAnYSB0IFVvcHQudFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX29ic2VydmluZyA6ICdhIHQgVW9wdC50XG4gICAgfVxuXG4gIHR5cGUgJ2EgaW50ZXJuYWxfb2JzZXJ2ZXIgPSAnYSB0XG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFQgOiBfIGludGVybmFsX29ic2VydmVyIC0+IHQgW0BAdW5ib3hlZF1cbiAgZW5kXG5lbmQgPVxuICBJbnRlcm5hbF9vYnNlcnZlclxuXG5hbmQgSm9pbiA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgbGhzIDogJ2EgTm9kZS50IE5vZGUudFxuICAgIDsgbGhzX2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gICAgOyBtdXRhYmxlIHJocyA6ICdhIE5vZGUudCBVb3B0LnRcbiAgICB9XG5lbmQgPVxuICBKb2luXG5cbmFuZCBLaW5kIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBBcnJheV9mb2xkIDogKF8sICdhKSBBcnJheV9mb2xkLnQgLT4gJ2EgdFxuICAgIHwgQXQgOiBBdC50IC0+IEJlZm9yZV9vcl9hZnRlci50IHRcbiAgICB8IEF0X2ludGVydmFscyA6IEF0X2ludGVydmFscy50IC0+IHVuaXQgdFxuICAgIHwgQmluZF9saHNfY2hhbmdlIDogKF8sIF8pIEJpbmQudCAtPiB1bml0IHRcbiAgICB8IEJpbmRfbWFpbiA6IChfLCAnYSkgQmluZC50IC0+ICdhIHRcbiAgICB8IENvbnN0IG9mICdhXG4gICAgfCBFeHBlcnQgb2YgJ2EgRXhwZXJ0LnRcbiAgICB8IEZyZWV6ZSBvZiAnYSBGcmVlemUudFxuICAgIHwgSWZfdGVzdF9jaGFuZ2UgOiBfIElmX3RoZW5fZWxzZS50IC0+IHVuaXQgdFxuICAgIHwgSWZfdGhlbl9lbHNlIG9mICdhIElmX3RoZW5fZWxzZS50XG4gICAgfCBJbnZhbGlkXG4gICAgfCBKb2luX2xoc19jaGFuZ2UgOiBfIEpvaW4udCAtPiB1bml0IHRcbiAgICB8IEpvaW5fbWFpbiBvZiAnYSBKb2luLnRcbiAgICB8IE1hcCA6ICgnYTEgLT4gJ2EpICogJ2ExIE5vZGUudCAtPiAnYSB0XG4gICAgfCBTbmFwc2hvdCBvZiAnYSBTbmFwc2hvdC50XG4gICAgfCBTdGVwX2Z1bmN0aW9uIG9mICdhIFN0ZXBfZnVuY3Rpb25fbm9kZS50XG4gICAgfCBVbmluaXRpYWxpemVkXG4gICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IChfLCAnYSkgVW5vcmRlcmVkX2FycmF5X2ZvbGQudCAtPiAnYSB0XG4gICAgfCBWYXIgb2YgJ2EgVmFyLnRcbiAgICB8IE1hcDIgOiAoJ2ExIC0+ICdhMiAtPiAnYSkgKiAnYTEgTm9kZS50ICogJ2EyIE5vZGUudCAtPiAnYSB0XG4gICAgfCBNYXAzIDogKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAtPiAnYSB0XG4gICAgfCBNYXA0IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDUgOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA2IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA3IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDggOlxuICAgICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYSlcbiAgICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAgICogJ2EyIE5vZGUudFxuICAgICAgICAqICdhMyBOb2RlLnRcbiAgICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAgICogJ2E1IE5vZGUudFxuICAgICAgICAqICdhNiBOb2RlLnRcbiAgICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAgICogJ2E4IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXA5IDpcbiAgICAgICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYTggLT4gJ2E5IC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAtPiAnYSB0XG4gICAgfCBNYXAxMCA6XG4gICAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYTEwIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDExIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTIgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDEzIDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbiAgICB8IE1hcDE0IDpcbiAgICAgICAgKCdhMVxuICAgICAgICAgLT4gJ2EyXG4gICAgICAgICAtPiAnYTNcbiAgICAgICAgIC0+ICdhNFxuICAgICAgICAgLT4gJ2E1XG4gICAgICAgICAtPiAnYTZcbiAgICAgICAgIC0+ICdhN1xuICAgICAgICAgLT4gJ2E4XG4gICAgICAgICAtPiAnYTlcbiAgICAgICAgIC0+ICdhMTBcbiAgICAgICAgIC0+ICdhMTFcbiAgICAgICAgIC0+ICdhMTJcbiAgICAgICAgIC0+ICdhMTNcbiAgICAgICAgIC0+ICdhMTRcbiAgICAgICAgIC0+ICdhKVxuICAgICAgICAqICdhMSBOb2RlLnRcbiAgICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAgICogJ2EzIE5vZGUudFxuICAgICAgICAqICdhNCBOb2RlLnRcbiAgICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAgICogJ2E2IE5vZGUudFxuICAgICAgICAqICdhNyBOb2RlLnRcbiAgICAgICAgKiAnYTggTm9kZS50XG4gICAgICAgICogJ2E5IE5vZGUudFxuICAgICAgICAqICdhMTAgTm9kZS50XG4gICAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgICAqICdhMTMgTm9kZS50XG4gICAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICAgLT4gJ2EgdFxuICAgIHwgTWFwMTUgOlxuICAgICAgICAoJ2ExXG4gICAgICAgICAtPiAnYTJcbiAgICAgICAgIC0+ICdhM1xuICAgICAgICAgLT4gJ2E0XG4gICAgICAgICAtPiAnYTVcbiAgICAgICAgIC0+ICdhNlxuICAgICAgICAgLT4gJ2E3XG4gICAgICAgICAtPiAnYThcbiAgICAgICAgIC0+ICdhOVxuICAgICAgICAgLT4gJ2ExMFxuICAgICAgICAgLT4gJ2ExMVxuICAgICAgICAgLT4gJ2ExMlxuICAgICAgICAgLT4gJ2ExM1xuICAgICAgICAgLT4gJ2ExNFxuICAgICAgICAgLT4gJ2ExNVxuICAgICAgICAgLT4gJ2EpXG4gICAgICAgICogJ2ExIE5vZGUudFxuICAgICAgICAqICdhMiBOb2RlLnRcbiAgICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAgICogJ2E0IE5vZGUudFxuICAgICAgICAqICdhNSBOb2RlLnRcbiAgICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAgICogJ2E3IE5vZGUudFxuICAgICAgICAqICdhOCBOb2RlLnRcbiAgICAgICAgKiAnYTkgTm9kZS50XG4gICAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgICAqICdhMTIgTm9kZS50XG4gICAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgICAqICdhMTUgTm9kZS50XG4gICAgICAgIC0+ICdhIHRcbmVuZCA9XG4gIEtpbmRcblxuYW5kIE5vZGUgOiBzaWdcbiAgdHlwZSAnYSB0ID1cbiAgICB7IGlkIDogTm9kZV9pZC50XG4gICAgOyBzdGF0ZSA6IFN0YXRlLnRcbiAgICA7IG11dGFibGUgcmVjb21wdXRlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIGtpbmQgOiAnYSBLaW5kLnRcbiAgICA7IG11dGFibGUgY3V0b2ZmIDogJ2EgQ3V0b2ZmLnRcbiAgICA7IG11dGFibGUgY2hhbmdlZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgbnVtX29uX3VwZGF0ZV9oYW5kbGVycyA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fcGFyZW50cyA6IGludFxuICAgIDtcbiAgICAgIG11dGFibGUgcGFyZW50MV9hbmRfYmV5b25kIDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgOyBtdXRhYmxlIHBhcmVudDAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBjcmVhdGVkX2luIDogU2NvcGUudFxuICAgIDsgbXV0YWJsZSBuZXh0X25vZGVfaW5fc2FtZV9zY29wZSA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGhlaWdodCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgOiBpbnRcbiAgICA7IG11dGFibGUgcHJldl9pbl9yZWNvbXB1dGVfaGVhcCA6IE5vZGUuUGFja2VkLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIG5leHRfaW5fcmVjb21wdXRlX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA6IGludFxuICAgIDsgbXV0YWJsZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBOb2RlLlBhY2tlZC50IFVvcHQudFxuICAgIDsgbXV0YWJsZSBvbGRfdmFsdWVfb3B0IDogJ2EgVW9wdC50XG4gICAgOyBtdXRhYmxlIG9ic2VydmVycyA6ICdhIEludGVybmFsX29ic2VydmVyLnQgVW9wdC50XG4gICAgOyBtdXRhYmxlIGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogYm9vbFxuICAgIDsgbXV0YWJsZSBvbl91cGRhdGVfaGFuZGxlcnMgOiAnYSBPbl91cGRhdGVfaGFuZGxlci50IGxpc3RcbiAgICA7IG11dGFibGUgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IDogaW50IGFycmF5XG4gICAgOyBtdXRhYmxlIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCA6IGludCBhcnJheVxuICAgIDsgbXV0YWJsZSBmb3JjZV9uZWNlc3NhcnkgOiBib29sXG4gICAgOyBtdXRhYmxlIHVzZXJfaW5mbyA6IERvdF91c2VyX2luZm8udCBvcHRpb25cbiAgICA7IGNyZWF0aW9uX2JhY2t0cmFjZSA6IEJhY2t0cmFjZS50IG9wdGlvblxuICAgIH1cbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBtb2R1bGUgUGFja2VkIDogc2lnXG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdFxuICAgIHR5cGUgdCA9IFQgOiBfIG5vZGUgLT4gdCBbQEBkZXJpdmluZyBzZXhwX29mXSBbQEB1bmJveGVkXVxuICBlbmRcblxuICB2YWwgaXNfdmFsaWQgOiBfIHQgLT4gYm9vbFxuICB2YWwgaXNfbmVjZXNzYXJ5IDogXyB0IC0+IGJvb2xcbiAgdmFsIHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIDogJ2EgdCAtPiAnYiB0IC0+ICgnYSwgJ2IpIFR5cGVfZXF1YWwudCBvcHRpb25cbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIChcbiAgICBOb2RlIDpcbiAgICAgIG1vZHVsZSB0eXBlIG9mIHN0cnVjdFxuICAgICAgaW5jbHVkZSBOb2RlXG4gICAgZW5kXG4gICAgd2l0aCBtb2R1bGUgUGFja2VkIDo9IE5vZGUuUGFja2VkKVxuXG4gIGxldCBzZXhwX29mX3QgXyB0ID0gY29uY2F0IFsgXCJuXCI7IE5vZGVfaWQudG9fc3RyaW5nIHQuaWQgXSB8PiBbJXNleHBfb2Y6IHN0cmluZ11cblxuICBtb2R1bGUgUGFja2VkID0gc3RydWN0XG4gICAgdHlwZSAnYSBub2RlID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICAgIHR5cGUgdCA9IFQgOiBfIG5vZGUgLT4gdCBbQEB1bmJveGVkXVxuXG4gICAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIG5vZGVdXG4gIGVuZFxuXG4gIGxldCBpc192YWxpZCB0ID1cbiAgICBtYXRjaCB0LmtpbmQgd2l0aFxuICAgIHwgSW52YWxpZCAtPiBmYWxzZVxuICAgIHwgXyAtPiB0cnVlXG4gIDs7XG5cbiAgKCogW2lzX25lY2Vzc2FyeV0gaXMgZGVmaW5lZCBoZXJlIGJlY2F1c2Ugd2UgbmVlZCBpdCBiZWZvcmUgbm9kZS5tbCBpcyBhdmFpbGFibGUuICBJdCBpc1xuICAgICB1c2VkIGR1cmluZyBncmFwaCBtYW5pcHVsYXRpb24sIGFuZCBzbyBpcyB3cml0dGVuIHdpdGggc29tZSBjYXJlIHRvIGJlIGZhc3QuICopXG4gIGxldCBpc19uZWNlc3NhcnkgdCA9XG4gICAgdC5udW1fcGFyZW50cyA+IDBcbiAgICB8fCBVb3B0LmlzX3NvbWUgdC5vYnNlcnZlcnNcbiAgICB8fCAobWF0Y2ggdC5raW5kIHdpdGhcbiAgICAgIHwgRnJlZXplIF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHx8IHQuZm9yY2VfbmVjZXNzYXJ5XG4gIDs7XG5cbiAgbGV0IHRfaXNfaW5qZWN0aXZlICh0eXBlIGEgYikgKFQgOiAoYSB0LCBiIHQpIFR5cGVfZXF1YWwudCkgOiAoYSwgYikgVHlwZV9lcXVhbC50ID0gVFxuXG4gIGxldCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSAodHlwZSBhIGIpICh0MSA6IGEgdCkgKHQyIDogYiB0KSA9XG4gICAgKCogVGhpcyBpcyB0eXBlLXNhZmUgYXNzdW1pbmcgbm8gb25lIGNhbiBnaXZlIHRoZSBzYW1lIGluY3JlbWVudGFsIG5vZGUgdHdvIGRpZmZlcmVudFxuICAgICAgIHR5cGVzLiAgVGhpcyBpcyB0cnVlIGJlY2F1c2UgdGhlIGZpZWxkIFttdXRhYmxlIG9sZF92YWx1ZV9vcHQgOiAnYSBvcHRpb25dIHByZXZlbnRzXG4gICAgICAgYm90aCBzdWJ0eXBpbmcgYW5kIHBhcmFtZXRlcmljIHBvbHltb3JwaGlzbS4gIEJ1dCB0aGlzIGFsbG93cyB0byBicmVha1xuICAgICAgIGFic3RyYWN0aW9ucywgYXMgaW4gc29tZW9uZSBjb3VsZCB3cml0ZTpcblxuICAgICAgIHtbXG4gICAgICAgICB0eXBlIHRcbiAgICAgICAgIHR5cGUgdSAoKiA9IHQgdW5kZXJuZWF0aCAqKVxuICAgICAgICAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdCBJbmNyLnQgKiB1IEluY3IudCAoKiB0aGUgdHdvIGluY3JlbWVudGFscyBhcmUgcGh5c19lcXVhbCAqKVxuICAgICAgIF19XG5cbiAgICAgICBhbmQgd2Ugd291bGQgZmlndXJlIG91dCB0aGF0IHR5cGUgdCA9IHUuICBIb3dldmVyLCB3ZSBjb3VsZCBhZGQgYSBUeXBlX2VxdWFsLklkIHRvXG4gICAgICAgbm9kZXMgYW5kIGRvIHRoZSBzYW1lLCBzbyBpdCBzZWVtcyB0byBiZSBhIG1vcmUgZ2VuZXJhbCBpc3N1ZS4gKilcbiAgICBpZiBwaHlzX3NhbWUgdDEgdDJcbiAgICB0aGVuIFNvbWUgKHRfaXNfaW5qZWN0aXZlIChPYmoubWFnaWMgKFQgOiBfIFR5cGVfZXF1YWwudCkgOiAoYSB0LCBiIHQpIFR5cGVfZXF1YWwudCkpXG4gICAgZWxzZSBOb25lXG4gIDs7XG5lbmRcblxuYW5kIE9ic2VydmVyIDogc2lnXG4gIHR5cGUgJ2EgdCA9ICdhIEludGVybmFsX29ic2VydmVyLnQgcmVmXG5lbmQgPVxuICBPYnNlcnZlclxuXG5hbmQgT25seV9pbl9kZWJ1ZyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19ub2RlIDogTm9kZS5QYWNrZWQudCBvcHRpb25cbiAgICA7IG11dGFibGUgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDogTm9kZS5QYWNrZWQudCBsaXN0XG4gICAgfVxuZW5kID1cbiAgT25seV9pbl9kZWJ1Z1xuXG5hbmQgUGFja2VkX3dlYWtfaGFzaHRibCA6IHNpZ1xuICB0eXBlIHQgPSBUIDogKF8sIF8pIFdlYWtfaGFzaHRibC50IC0+IHRcbmVuZCA9XG4gIFBhY2tlZF93ZWFrX2hhc2h0YmxcblxuYW5kIFJlY29tcHV0ZV9oZWFwIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIGxlbmd0aCA6IGludFxuICAgIDsgbXV0YWJsZSBoZWlnaHRfbG93ZXJfYm91bmQgOiBpbnRcbiAgICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gICAgfVxuZW5kID1cbiAgUmVjb21wdXRlX2hlYXBcblxuYW5kIFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgOiBzaWdcbiAgdHlwZSB0ID0gVCA6ICdhIE5vZGUudCAqICdhIE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlLnQgLT4gdFxuZW5kID1cbiAgUnVuX29uX3VwZGF0ZV9oYW5kbGVyc1xuXG5hbmQgU2NvcGUgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB8IFRvcFxuICAgIHwgQmluZCA6IChfLCBfKSBCaW5kLnQgLT4gdFxuICBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUb3BcbiAgICB8IEJpbmQgOiAoXywgXykgQmluZC50IC0+IHRcblxuICBsZXQgc2V4cF9vZl90ID0gZnVuY3Rpb25cbiAgICB8IFRvcCAtPiBcIlRvcFwiIHw+IFslc2V4cF9vZjogc3RyaW5nXVxuICAgIHwgQmluZCBiaW5kIC0+IGJpbmQubWFpbiB8PiBbJXNleHBfb2Y6IF8gTm9kZS50XVxuICA7O1xuZW5kXG5cbmFuZCBTbmFwc2hvdCA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbWFpbiA6ICdhIE5vZGUudFxuICAgIDsgYXQgOiBUaW1lX25zLnRcbiAgICA7IGJlZm9yZSA6ICdhXG4gICAgOyB2YWx1ZV9hdCA6ICdhIE5vZGUudFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgU25hcHNob3RcblxuYW5kIFN0YXRlIDogc2lnXG4gIHR5cGUgdCA9XG4gICAgeyBtdXRhYmxlIHN0YXR1cyA6IFN0YXR1cy50XG4gICAgOyBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzIDogYm9vbFxuICAgIDsgbXV0YWJsZSBzdGFiaWxpemF0aW9uX251bSA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgY3VycmVudF9zY29wZSA6IFNjb3BlLnRcbiAgICA7IHJlY29tcHV0ZV9oZWFwIDogUmVjb21wdXRlX2hlYXAudFxuICAgIDsgYWRqdXN0X2hlaWdodHNfaGVhcCA6IEFkanVzdF9oZWlnaHRzX2hlYXAudFxuICAgIDsgcHJvcGFnYXRlX2ludmFsaWRpdHkgOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IG11dGFibGUgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgOiBpbnRcbiAgICA7IG11dGFibGUgYWxsX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFVvcHQudFxuICAgIDsgZmluYWxpemVkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgICA7IG5ld19vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgICA7IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6IFZhci5QYWNrZWQudCBTdGFjay50XG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA6IE5vZGUuUGFja2VkLnQgU3RhY2sudFxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA6IFJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCBTdGFjay50XG4gICAgOyBtdXRhYmxlIG9ubHlfaW5fZGVidWcgOiBPbmx5X2luX2RlYnVnLnRcbiAgICA7IHdlYWtfaGFzaHRibHMgOiBQYWNrZWRfd2Vha19oYXNodGJsLnQgVGhyZWFkX3NhZmVfcXVldWUudFxuICAgIDsgbXV0YWJsZSBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlIDogYm9vbFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5IDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19jaGFuZ2VkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19jcmVhdGVkIDogaW50XG4gICAgOyBtdXRhYmxlIG51bV9ub2Rlc19pbnZhbGlkYXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCA6IGludFxuICAgIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQgOiBpbnRcbiAgICA7IG11dGFibGUgbnVtX3Zhcl9zZXRzIDogaW50XG4gICAgfVxuZW5kID1cbiAgU3RhdGVcblxuYW5kIFN0YXR1cyA6IHNpZ1xuICB0eXBlIHQgPVxuICAgIHwgU3RhYmlsaXppbmdcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgfCBOb3Rfc3RhYmlsaXppbmdcbiAgICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBvZiBSYWlzZWRfZXhuLnRcbmVuZCA9XG4gIFN0YXR1c1xuXG5hbmQgU3RlcF9mdW5jdGlvbl9ub2RlIDogc2lnXG4gIHR5cGUgJ2EgdCA9XG4gICAgeyBtYWluIDogJ2EgTm9kZS50XG4gICAgOyBtdXRhYmxlIGNoaWxkIDogJ2EgU3RlcF9mdW5jdGlvbi50IE5vZGUudCBVb3B0LnRcbiAgICA7IG11dGFibGUgZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdCA6IFN0YWJpbGl6YXRpb25fbnVtLnRcbiAgICA7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgICA7IG11dGFibGUgdXBjb21pbmdfc3RlcHMgOiAoVGltZV9ucy50ICogJ2EpIFNlcXVlbmNlLnRcbiAgICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gICAgOyBtdXRhYmxlIGFsYXJtX3ZhbHVlIDogQWxhcm1fdmFsdWUudFxuICAgIDsgY2xvY2sgOiBDbG9jay50XG4gICAgfVxuZW5kID1cbiAgU3RlcF9mdW5jdGlvbl9ub2RlXG5cbmFuZCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IHNpZ1xuICB0eXBlICgnYSwgJ2FjYykgdCA9XG4gICAgeyBtYWluIDogJ2FjYyBOb2RlLnRcbiAgICA7IGluaXQgOiAnYWNjXG4gICAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gICAgOyB1cGRhdGUgOiAnYWNjIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2FjY1xuICAgIDsgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyA6IGludFxuICAgIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgICA7IG11dGFibGUgZm9sZF92YWx1ZSA6ICdhY2MgVW9wdC50XG4gICAgOyBtdXRhYmxlIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDogaW50XG4gICAgfVxuZW5kID1cbiAgVW5vcmRlcmVkX2FycmF5X2ZvbGRcblxuYW5kIFZhciA6IHNpZ1xuICB0eXBlICdhIHQgPVxuICAgIHsgbXV0YWJsZSB2YWx1ZSA6ICdhXG4gICAgOyBtdXRhYmxlIHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6ICdhIFVvcHQudFxuICAgIDsgbXV0YWJsZSBzZXRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gICAgOyB3YXRjaCA6ICdhIE5vZGUudFxuICAgIH1cblxuICB0eXBlICdhIHZhciA6PSAnYSB0XG5cbiAgbW9kdWxlIFBhY2tlZCA6IHNpZ1xuICAgIHR5cGUgdCA9IFQgOiBfIHZhciAtPiB0IFtAQHVuYm94ZWRdXG4gIGVuZFxuZW5kID1cbiAgVmFyXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlZhci50ID1cbiAgeyBtdXRhYmxlIHZhbHVlIDogJ2FcbiAgOyAoKiBbdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXSBpcyBvbmx5IHNldCB0byBbVW9wdC5zb21lXSBpZiB0aGUgdXNlciBjYWxsc1xuICAgICAgIFtWYXIuc2V0XSBkdXJpbmcgc3RhYmlsaXphdGlvbiwgaW4gd2hpY2ggY2FzZSBpdCBob2xkcyB0aGUgKGxhc3QpIHZhbHVlIHNldC4gIEF0XG4gICAgICAgdGhlIGVuZCBvZiBzdGFiaWxpemF0aW9uLCBhbGwgc3VjaCB2YXJpYWJsZXMgYXJlIHByb2Nlc3NlZCB0byBkbyBbdC52YWx1ZSA8LVxuICAgICAgIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXS4gKilcbiAgICBtdXRhYmxlIHZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6ICdhIFVvcHQudFxuICA7ICgqIFtzZXRfYXRdIHRoZSBzdGFiaWxpemF0aW9uIG51bWJlciBpbiBlZmZlY3QgdGhlIG1vc3QgcmVjZW50IHRpbWUgW3QudmFsdWVdIGNoYW5nZWQuXG4gICAgICAgVGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIHN0YWJpbGl6YXRpb24gbnVtYmVyIGluIGVmZmVjdCB0aGUgbW9zdFxuICAgICAgIHJlY2VudCB0aW1lIFtWYXIuc2V0IHRdIHdhcyBjYWxsZWQsIGR1ZSB0byB0aGUgZWZmZWN0IG9mIFtWYXIuc2V0XSBkdXJpbmdcbiAgICAgICBzdGFiaWxpemF0aW9uIGJlaW5nIGRlbGF5ZWQgdW50aWwgYWZ0ZXIgdGhlIHN0YWJpbGl6YXRpb24uICopXG4gICAgbXV0YWJsZSBzZXRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgd2F0Y2ggOiAnYSBOb2RlLnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IGludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+dmFsdWU6KGNoZWNrIGludmFyaWFudF9hKVxuICAgICAgfnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbjooY2hlY2sgKFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hKSlcbiAgICAgIH5zZXRfYXQ6KGNoZWNrIFN0YWJpbGl6YXRpb25fbnVtLmludmFyaWFudClcbiAgICAgIH53YXRjaDpcbiAgICAgICAgKGNoZWNrIChmdW4gKHdhdGNoIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIHdhdGNoLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogcG9zc2libGUgd2l0aCBbfnVzZV9jdXJyZW50X3Njb3BlOnRydWVdICopXG4gICAgICAgICAgIHwgVmFyIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSkpXG47O1xuXG5sZXQgaW5jcl9zdGF0ZSB0ID0gdC53YXRjaC5zdGF0ZVxuXG5tb2R1bGUgUGFja2VkID0gc3RydWN0XG4gIHR5cGUgJ2EgdmFyID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuICB0eXBlIHQgPSBUeXBlcy5WYXIuUGFja2VkLnQgPSBUIDogXyB2YXIgLT4gdCBbQEB1bmJveGVkXSBbQEBkZXJpdmluZyBzZXhwX29mXVxuZW5kXG5cbmxldCBsYXRlc3RfdmFsdWUgdCA9XG4gIGlmIFVvcHQuaXNfc29tZSB0LnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICB0aGVuIFVvcHQudW5zYWZlX3ZhbHVlIHQudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uXG4gIGVsc2UgdC52YWx1ZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbm1vZHVsZSBVcGRhdGUgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0ID1cbiAgICB8IEZfaW52ZXJzZSBvZiAoJ2IgLT4gJ2EgLT4gJ2IpXG4gICAgfCBVcGRhdGUgb2YgKCdiIC0+IG9sZF92YWx1ZTonYSAtPiBuZXdfdmFsdWU6J2EgLT4gJ2IpXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgbGV0IHVwZGF0ZSB0IH5mID1cbiAgICBtYXRjaCB0IHdpdGhcbiAgICB8IFVwZGF0ZSB1cGRhdGUgLT4gdXBkYXRlXG4gICAgfCBGX2ludmVyc2UgZl9pbnZlcnNlIC0+XG4gICAgICBmdW4gZm9sZF92YWx1ZSB+b2xkX3ZhbHVlIH5uZXdfdmFsdWUgLT4gZiAoZl9pbnZlcnNlIGZvbGRfdmFsdWUgb2xkX3ZhbHVlKSBuZXdfdmFsdWVcbiAgOztcbmVuZFxuXG50eXBlICgnYSwgJ2FjYykgdCA9ICgnYSwgJ2FjYykgVHlwZXMuVW5vcmRlcmVkX2FycmF5X2ZvbGQudCA9XG4gIHsgbWFpbiA6ICdhY2MgTm9kZS50XG4gIDsgaW5pdCA6ICdhY2NcbiAgOyBmIDogJ2FjYyAtPiAnYSAtPiAnYWNjXG4gIDsgdXBkYXRlIDogJ2FjYyAtPiBvbGRfdmFsdWU6J2EgLT4gbmV3X3ZhbHVlOidhIC0+ICdhY2NcbiAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDogaW50XG4gIDsgY2hpbGRyZW4gOiAnYSBOb2RlLnQgYXJyYXlcbiAgOyBtdXRhYmxlIGZvbGRfdmFsdWUgOiAnYWNjIFVvcHQudFxuICA7IG11dGFibGUgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgOiBpbnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiAoXywgXykgdCkgKHQyIDogKF8sIF8pIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgaW52YXJpYW50X2FjYyB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiAoXywgXykgdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmluaXQ6KGNoZWNrIGludmFyaWFudF9hY2MpXG4gICAgICB+ZjppZ25vcmVcbiAgICAgIH51cGRhdGU6aWdub3JlXG4gICAgICB+Y2hpbGRyZW46XG4gICAgICAgIChjaGVjayAoZnVuIGNoaWxkcmVuIC0+XG4gICAgICAgICAgIEFycmF5Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1biAoY2hpbGQgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSBjaGlsZC52YWx1ZV9vcHQ7XG4gICAgICAgICAgICAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZVxuICAgICAgICAgICAgICAgIDwgdC5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfc29tZSBjaGlsZC52YWx1ZV9vcHQpKSkpXG4gICAgICB+Zm9sZF92YWx1ZTpcbiAgICAgICAgKGNoZWNrIChmdW4gZm9sZF92YWx1ZSAtPlxuICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYWNjIGZvbGRfdmFsdWU7XG4gICAgICAgICAgIFsldGVzdF9yZXN1bHQ6IGJvb2xdXG4gICAgICAgICAgICAgKFVvcHQuaXNfc29tZSBmb2xkX3ZhbHVlKVxuICAgICAgICAgICAgIH5leHBlY3Q6XG4gICAgICAgICAgICAgICAodC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA8IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgIG51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDw9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcykpKVxuICAgICAgfmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXM6XG4gICAgICAgIChjaGVjayAoZnVuIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLT5cbiAgICAgICAgICAgYXNzZXJ0IChmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzID4gMCkpKSlcbjs7XG5cbmxldCBjcmVhdGUgfmluaXQgfmYgfnVwZGF0ZSB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB+Y2hpbGRyZW4gfm1haW4gPVxuICB7IGluaXRcbiAgOyBmXG4gIDsgdXBkYXRlID0gVXBkYXRlLnVwZGF0ZSB1cGRhdGUgfmZcbiAgOyBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIDsgY2hpbGRyZW5cbiAgOyBtYWluXG4gIDsgZm9sZF92YWx1ZSA9XG4gICAgICBVb3B0Lm5vbmVcbiAgKCogV2UgbWFrZSBbbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXVxuICAgICBzbyB0aGF0IHRoZXJlIHdpbGwgYmUgYSBmdWxsIGNvbXB1dGF0aW9uIHRoZSBuZXh0IHRpbWUgdGhlIG5vZGUgaXMgY29tcHV0ZWQuICopXG4gIDsgbnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPSBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gIH1cbjs7XG5cbmxldCBmdWxsX2NvbXB1dGUgeyBpbml0OyBmOyBjaGlsZHJlbjsgXyB9ID1cbiAgbGV0IHJlc3VsdCA9IHJlZiBpbml0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgcmVzdWx0IDo9IGYgIXJlc3VsdCAoVW9wdC52YWx1ZV9leG4gKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkudmFsdWVfb3B0KVxuICBkb25lO1xuICAhcmVzdWx0XG47O1xuXG5sZXQgY29tcHV0ZSB0ID1cbiAgaWYgdC5udW1fY2hhbmdlc19zaW5jZV9sYXN0X2Z1bGxfY29tcHV0ZSA9IHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICB0aGVuIChcbiAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIDA7XG4gICAgdC5mb2xkX3ZhbHVlIDwtIFVvcHQuc29tZSAoZnVsbF9jb21wdXRlIHQpKTtcbiAgVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlXG47O1xuXG5sZXQgZm9yY2VfZnVsbF9jb21wdXRlIHQgPVxuICB0LmZvbGRfdmFsdWUgPC0gVW9wdC5ub25lO1xuICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQuZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuOztcblxubGV0IGNoaWxkX2NoYW5nZWRcbiAgICAgICh0eXBlIGEgYilcbiAgICAgICh0IDogKGEsIF8pIHQpXG4gICAgICB+KGNoaWxkIDogYiBOb2RlLnQpXG4gICAgICB+Y2hpbGRfaW5kZXhcbiAgICAgIH4ob2xkX3ZhbHVlX29wdCA6IGIgVW9wdC50KVxuICAgICAgfihuZXdfdmFsdWUgOiBiKVxuICA9XG4gIGxldCBjaGlsZF9hdF9pbmRleCA9IHQuY2hpbGRyZW4uKGNoaWxkX2luZGV4KSBpblxuICBtYXRjaCBOb2RlLnR5cGVfZXF1YWxfaWZfcGh5c19zYW1lIGNoaWxkIGNoaWxkX2F0X2luZGV4IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgcmFpc2Vfc1xuICAgICAgWyVtZXNzYWdlXG4gICAgICAgIFwiW1Vub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRdIG1pc21hdGNoXCJcbiAgICAgICAgICB+dW5vcmRlcmVkX2FycmF5X2ZvbGQ6KHQgOiAoXywgXykgdClcbiAgICAgICAgICAoY2hpbGRfaW5kZXggOiBpbnQpXG4gICAgICAgICAgKGNoaWxkIDogXyBOb2RlLnQpXVxuICB8IFNvbWUgVCAtPlxuICAgIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgLSAxXG4gICAgdGhlbiAoXG4gICAgICB0Lm51bV9jaGFuZ2VzX3NpbmNlX2xhc3RfZnVsbF9jb21wdXRlIDwtIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgKyAxO1xuICAgICAgKCogV2Ugb25seSByZWFjaCB0aGlzIGNhc2UgaWYgd2UgaGF2ZSBhbHJlYWR5IGRvbmUgYSBmdWxsIGNvbXB1dGUsIGluIHdoaWNoIGNhc2VcbiAgICAgICAgIFtVb3B0LmlzX3NvbWUgdC5mb2xkX3ZhbHVlXSBhbmQgW1VvcHQuaXNfc29tZSBvbGRfdmFsdWVfb3B0XS4gKilcbiAgICAgIHQuZm9sZF92YWx1ZVxuICAgICAgPC0gVW9wdC5zb21lXG4gICAgICAgICAgICh0LnVwZGF0ZVxuICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gdC5mb2xkX3ZhbHVlKVxuICAgICAgICAgICAgICB+b2xkX3ZhbHVlOihVb3B0LnZhbHVlX2V4biBvbGRfdmFsdWVfb3B0KVxuICAgICAgICAgICAgICB+bmV3X3ZhbHVlKSlcbiAgICBlbHNlIGlmIHQubnVtX2NoYW5nZXNfc2luY2VfbGFzdF9mdWxsX2NvbXB1dGUgPCB0LmZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgICB0aGVuIGZvcmNlX2Z1bGxfY29tcHV0ZSB0XG47O1xuIiwib3BlbiEgQ29yZVxub3BlbiEgSW1wb3J0XG5tb2R1bGUgQWxhcm0gPSBUaW1pbmdfd2hlZWwuQWxhcm1cblxudHlwZSB0ID0gKFR5cGVzLkFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSkgQWxhcm0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IChfIDogdCkgPSAoKVxubGV0IG51bGwgPSBBbGFybS5udWxsICgpXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgQWxhcm1fdmFsdWUgPSBUeXBlcy5BbGFybV92YWx1ZVxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlN0ZXBfZnVuY3Rpb25fbm9kZS50ID1cbiAgeyBtYWluIDogJ2EgTm9kZS50XG4gIDsgbXV0YWJsZSBjaGlsZCA6ICdhIFN0ZXBfZnVuY3Rpb24udCBOb2RlLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBleHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0IDogU3RhYmlsaXphdGlvbl9udW0udFxuICA7IG11dGFibGUgdmFsdWUgOiAnYSBVb3B0LnRcbiAgOyBtdXRhYmxlIHVwY29taW5nX3N0ZXBzIDogKFRpbWVfbnMudCAqICdhKSBTZXF1ZW5jZS50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBtdXRhYmxlIGFsYXJtX3ZhbHVlIDogKEFsYXJtX3ZhbHVlLnRbQHNleHAub3BhcXVlXSlcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHBoeXNfc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyB3aGVuIFt1cGNvbWluZ19zdGVwc10gYmVjb21lcyBlbXB0eS4gKilcbiAgICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5leHRyYWN0ZWRfc3RlcF9mdW5jdGlvbl9mcm9tX2NoaWxkX2F0Omlnbm9yZVxuICAgICAgfnZhbHVlOihjaGVjayAoVW9wdC5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfnVwY29taW5nX3N0ZXBzOmlnbm9yZVxuICAgICAgfmFsYXJtOihjaGVjayBBbGFybS5pbnZhcmlhbnQpXG4gICAgICB+YWxhcm1fdmFsdWU6XG4gICAgICAgIChjaGVjayAoZnVuIChhbGFybV92YWx1ZSA6IEFsYXJtX3ZhbHVlLnQpIC0+XG4gICAgICAgICAgIG1hdGNoIGFsYXJtX3ZhbHVlLmFjdGlvbiB3aXRoXG4gICAgICAgICAgIHwgU3RlcF9mdW5jdGlvbiB0MiAtPiBhc3NlcnQgKHBoeXNfc2FtZSB0IHQyKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuXG5sZXQgcmVjIGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIGExIHN0ZXBzID1cbiAgbWF0Y2ggU2VxdWVuY2UubmV4dCBzdGVwcyB3aXRoXG4gIHwgU29tZSAoKHN0ZXBfYXQsIGEyKSwgc3RlcHMyKSB3aGVuIFRpbWVfbnMuKCA+PSApIHRvXyBzdGVwX2F0IC0+XG4gICAgYWR2YW5jZV9pbnRlcm5hbCB0IH50b18gYTIgc3RlcHMyXG4gIHwgXyAtPlxuICAgIHQudmFsdWUgPC0gVW9wdC5zb21lIGExO1xuICAgIHQudXBjb21pbmdfc3RlcHMgPC0gc3RlcHNcbjs7XG5cbmxldCBhZHZhbmNlIHQgfnRvXyA9IGFkdmFuY2VfaW50ZXJuYWwgdCB+dG9fIChVb3B0LnZhbHVlX2V4biB0LnZhbHVlKSB0LnVwY29taW5nX3N0ZXBzXG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgKCdhLCAnYWNjKSB0ID0gKCdhLCAnYWNjKSBUeXBlcy5BcnJheV9mb2xkLnQgPVxuICB7IGluaXQgOiAnYWNjXG4gIDsgZiA6ICdhY2MgLT4gJ2EgLT4gJ2FjY1xuICA7IGNoaWxkcmVuIDogJ2EgTm9kZS50IGFycmF5XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSBpbnZhcmlhbnRfYWNjIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pbml0OihjaGVjayBpbnZhcmlhbnRfYWNjKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+Y2hpbGRyZW46XG4gICAgICAgIChjaGVjayAoZnVuIGNoaWxkcmVuIC0+XG4gICAgICAgICAgIEFycmF5Lml0ZXIgY2hpbGRyZW4gfmY6KGZ1biAoY2hpbGQgOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgICBVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSBjaGlsZC52YWx1ZV9vcHQpKSkpXG47O1xuXG5sZXQgY29tcHV0ZSB7IGluaXQ7IGY7IGNoaWxkcmVuIH0gPVxuICBsZXQgcmVzdWx0ID0gcmVmIGluaXQgaW5cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiAtIDEgZG9cbiAgICByZXN1bHQgOj0gZiAhcmVzdWx0IChVb3B0LnZhbHVlX2V4biAoQXJyYXkudW5zYWZlX2dldCBjaGlsZHJlbiBpKS52YWx1ZV9vcHQpXG4gIGRvbmU7XG4gICFyZXN1bHRcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSB0ID0gVHlwZXMuQXQudCA9XG4gIHsgbWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudFxuICA7IGF0IDogVGltZV9ucy50XG4gIDsgbXV0YWJsZSBhbGFybSA6IEFsYXJtLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IEJlZm9yZV9vcl9hZnRlci50IE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQ29uc3QgQWZ0ZXIgLT4gKCkgKCogaGFwcGVucyBvbmNlIHRoZSBjdXJyZW50IHRpbWUgcGFzc2VzIFt0LmF0XS4gKilcbiAgICAgICAgICAgfCBBdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgdCA9IFR5cGVzLkF0X2ludGVydmFscy50ID1cbiAgeyBtYWluIDogdW5pdCBOb2RlLnRcbiAgOyBiYXNlIDogVGltZV9ucy50XG4gIDsgaW50ZXJ2YWwgOiBUaW1lX25zLlNwYW4udFxuICA7IG11dGFibGUgYWxhcm0gOiBBbGFybS50XG4gIDsgY2xvY2sgOiAoVHlwZXMuQ2xvY2sudFtAc2V4cC5vcGFxdWVdKVxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgQXRfaW50ZXJ2YWxzIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5iYXNlOmlnbm9yZVxuICAgICAgfmludGVydmFsOihjaGVjayAoZnVuIGludGVydmFsIC0+IGFzc2VydCAoVGltZV9ucy5TcGFuLmlzX3Bvc2l0aXZlIGludGVydmFsKSkpXG4gICAgICB+YWxhcm06KGNoZWNrIEFsYXJtLmludmFyaWFudClcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIEJpbmQgPSBUeXBlcy5CaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm1vZHVsZSBTY29wZSA9IFR5cGVzLlNjb3BlXG5cbnR5cGUgKCdhLCAnYikgdCA9ICgnYSwgJ2IpIEJpbmQudCA9XG4gIHsgbWFpbiA6ICdiIE5vZGUudFxuICA7ICgqIFtmXSBpcyB0aGUgdXNlci1zdXBwbGllZCBmdW5jdGlvbiB0aGF0IHdlIHJ1biBlYWNoIHRpbWUgW3QubGhzXSBjaGFuZ2VzLiAgSXQgaXNcbiAgICAgICBtdXRhYmxlIG9ubHkgc28gd2UgY2FuIGNsZWFyIGl0IHdoZW4gW3RdIGlzIGludmFsaWRhdGVkLiAqKVxuICAgIG11dGFibGUgZiA6ICdhIC0+ICdiIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudFxuICA7IGxoc19jaGFuZ2UgOiB1bml0IE5vZGUudFxuICA7ICgqIFtyaHNdIGlzIGluaXRpYWxseSBbbm9uZV0sIGFuZCBhZnRlciB0aGF0IGlzIFtzb21lXSBvZiB0aGUgcmVzdWx0IG9mIHRoZSBtb3N0IHJlY2VudFxuICAgICAgIGNhbGwgdG8gW2ZdLiAqKVxuICAgIG11dGFibGUgcmhzIDogJ2IgTm9kZS50IFVvcHQudFxuICA7ICgqIFtyaHNfc2NvcGVdIGlzIHRoZSBzY29wZSBpbiB3aGljaCBbdC5mXSBpcyBydW4sIGkuZS4gaXQgaXMgW1Njb3BlLkJpbmQgdF0uICBJdCBpc1xuICAgICAgIFttdXRhYmxlXSBvbmx5IHRvIGF2b2lkIGEgW2xldCByZWNdIGR1cmluZyBjcmVhdGlvbi4gKilcbiAgICBtdXRhYmxlIHJoc19zY29wZSA6IFNjb3BlLnRcbiAgOyAoKiBbYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXSBpcyB0aGUgaGVhZCBvZiB0aGUgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIG5vZGVzIGNyZWF0ZWQgb25cbiAgICAgICB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIFt0XSwgaS5lLiBpbiBbdC5yaHNfc2NvcGVdLiAqKVxuICAgIG11dGFibGUgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiAoXywgXykgdCkgKHQyIDogKF8sIF8pIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpc192YWxpZCB0ID1cbiAgbWF0Y2ggdC5tYWluLmtpbmQgd2l0aFxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgfCBfIC0+IHRydWVcbjs7XG5cbmxldCBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfihmIDogTm9kZS5QYWNrZWQudCAtPiB1bml0KSA9XG4gIGxldCByID0gcmVmIHQuYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCAoVCBub2RlX29uX3JocykgPSBVb3B0LnVuc2FmZV92YWx1ZSAhciBpblxuICAgIHIgOj0gbm9kZV9vbl9yaHMubmV4dF9ub2RlX2luX3NhbWVfc2NvcGU7XG4gICAgZiAoVCBub2RlX29uX3JocylcbiAgZG9uZVxuOztcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgX2ludmFyaWFudF9iIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IChfLCBfKSB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmY6aWdub3JlXG4gICAgICB+bGhzOmlnbm9yZVxuICAgICAgfmxoc19jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuIChsaHNfY2hhbmdlIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBsaHNfY2hhbmdlLmNyZWF0ZWRfaW4gdC5tYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBCaW5kX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmVcbiAgICAgIH5yaHNfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBTY29wZS5Ub3AgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgIHwgQmluZCB0JyAtPiBhc3NlcnQgKHNhbWUgdCB0JykpKVxuICAgICAgfmFsbF9ub2Rlc19jcmVhdGVkX29uX3JoczpcbiAgICAgICAgKGNoZWNrIChmdW4gXyAtPlxuICAgICAgICAgICBpdGVyX25vZGVzX2NyZWF0ZWRfb25fcmhzIHQgfmY6KGZ1biAoVCBub2RlKSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCBub2RlLmNyZWF0ZWRfaW4gdC5yaHNfc2NvcGUpO1xuICAgICAgICAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGVcbiAgICAgICAgICAgICB0aGVuIGFzc2VydCAodC5saHNfY2hhbmdlLmhlaWdodCA8IG5vZGUuaGVpZ2h0KSkpKSlcbjs7XG4iLCJvcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbm1vZHVsZSBOb2RlID0gVHlwZXMuTm9kZVxuXG50eXBlICdhIGVkZ2UgPSAnYSBUeXBlcy5FeHBlcnQuZWRnZSA9XG4gIHsgY2hpbGQgOiAnYSBOb2RlLnRcbiAgOyBvbl9jaGFuZ2UgOiAnYSAtPiB1bml0XG4gIDsgKCogW2luZGV4XSBpcyBkZWZpbmVkIHdoZW5ldmVyIHRoZSBbZWRnZV0gaXMgaW4gdGhlIFtjaGlsZHJlbl0gb2Ygc29tZSBbdF0uIFRoZW4gaXQgaXNcbiAgICAgICB0aGUgaW5kZXggb2YgdGhpcyBbZWRnZV0gaW4gdGhhdCBbY2hpbGRyZW5dIGFycmF5LiBJdCBtaWdodCBzZWVtIHJlZHVuZGFudCB3aXRoIGFsbFxuICAgICAgIHRoZSBvdGhlciBpbmRleGVzIHdlIGhhdmUsIGJ1dCBpdCBpcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIGNoaWxkcmVuLiAgVGhlIGluZGV4IG1heVxuICAgICAgIGNoYW5nZSBhcyBzaWJsaW5nIGNoaWxkcmVuIGFyZSByZW1vdmVkLiAqKVxuICAgIG11dGFibGUgaW5kZXggOiBpbnQgVW9wdC50XG4gIH1cbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbnR5cGUgcGFja2VkX2VkZ2UgPSBUeXBlcy5FeHBlcnQucGFja2VkX2VkZ2UgPSBFIDogJ2EgZWRnZSAtPiBwYWNrZWRfZWRnZVxuW0BAdW5ib3hlZF0gW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRXhwZXJ0LnQgPVxuICB7IGYgOiB1bml0IC0+ICdhXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgOiBpc19ub3dfb2JzZXJ2YWJsZTpib29sIC0+IHVuaXRcbiAgOyBtdXRhYmxlIGNoaWxkcmVuIDogcGFja2VkX2VkZ2UgVW9wdC50IFVuaWZvcm1fYXJyYXkudFxuICA7IG11dGFibGUgbnVtX2NoaWxkcmVuIDogaW50XG4gIDsgKCogV2hlbiBzZXQsIG1ha2VzIHRoZSBub2RlIG9mIFt0XSBzdGFsZS4gIEl0IGlzIHNldCB3aGVuIHRoZSBzZXQgb2YgY2hpbGRyZW4gY2hhbmdlcy5cbiAgICAgICBPdGhlcndpc2UgdGhlIG5vcm1hbCBjaGVjayBvZiBzdGFsZW5lc3MgKGNvbXBhcmluZyB0aGUgW2NoYW5nZWRfYXRdIGZpZWxkIG9mXG4gICAgICAgY2hpbGRyZW4gYW5kIHRoZSBbcmVjb21wdXRlZF9hdF0gZmllbGQgZm9yIHRoZSBub2RlIG9mIFt0XSkgd291bGQgbm90IGJlIGVub3VnaC5cbiAgICAgICBUaGlzIHBsYXlzIGEgcm9sZSBzaW1pbGFyIHRvIHRoZSBjdXRvZmYgb2YgW05ldmVyXSBmb3IgdGhlIGxocy1jaGFuZ2Ugb2YgYmluZHMsIGJ1dFxuICAgICAgIHdlIGRvbid0IGhhdmUgYSBzcGVjaWFsIGNoaWxkLiAqKVxuICAgIG11dGFibGUgZm9yY2Vfc3RhbGUgOiBib29sXG4gIDsgKCogVGhlIG51bWJlciBvZiBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgcG9pbnQgdG8gdXMuICBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBub2RlXG4gICAgICAgb2YgW3RdIG5lZWRzIHRvIGludmFsaWRhdGVkLCB3aXRob3V0IGl0ZXJhdGluZyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4uICBUaGlzIGlzIG5vdFxuICAgICAgIG5lZWRlZCBmb3Igb3RoZXIgbm9kZXMsIGJlY2F1c2UgdGhlcmUgYXJlIG5vIG90aGVyIG5vZGVzIHRoYXQgaGF2ZSBhIHBvdGVudGlhbGx5XG4gICAgICAgbGFyZ2UgYW5kIGR5bmFtaWMgc2V0IG9mIGNoaWxkcmVuLiAqKVxuICAgIG11dGFibGUgbnVtX2ludmFsaWRfY2hpbGRyZW4gOiBpbnRcbiAgOyAoKiBXaGV0aGVyIHdlIHdpbGwgZmlyZSB0aGUgW29uX2NoYW5nZV0gY2FsbGJhY2tzIGZvciBhbGwgY2hpbGRyZW4gd2hlbiB0aGUgbm9kZSBvZiBbdF1cbiAgICAgICBpdHNlbGYgcnVucy4gIFVzZWQgdG8gbWFrZSBzdXJlIHdlIHJlcnVuIGV2ZXJ5dGhpbmcgYWZ0ZXIgW3RdIHN3aXRjaGVzIGZyb21cbiAgICAgICB1bm9ic2VydmFibGUgYW5kIGJhY2sgdG8gb2JzZXJ2YWJsZS4gKilcbiAgICBtdXRhYmxlIHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDogYm9vbFxuICB9XG5bQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50XG4gICAgICBfaW52YXJpYW50X2FcbiAgICAgIHsgZiA9IF9cbiAgICAgIDsgY2hpbGRyZW5cbiAgICAgIDsgbnVtX2NoaWxkcmVuXG4gICAgICA7IGZvcmNlX3N0YWxlID0gX1xuICAgICAgOyBudW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgOyBvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IF9cbiAgICAgIDsgd2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPSBfXG4gICAgICB9XG4gID1cbiAgYXNzZXJ0IChudW1fY2hpbGRyZW4gPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggY2hpbGRyZW4pO1xuICBpZ25vcmUgbnVtX2ludmFsaWRfY2hpbGRyZW47XG4gICgqIGludmFyaWFudCBpcyBiZWxvdywgYmVjYXVzZSB3ZSBuZWVkIHNvbWUgY29udGV4dCAqKVxuICBVbmlmb3JtX2FycmF5Lml0ZXJpIGNoaWxkcmVuIH5mOihmdW4gaSB1b3B0IC0+XG4gICAgbWF0Y2ggaSA8IG51bV9jaGlsZHJlbiB3aXRoXG4gICAgfCB0cnVlIC0+XG4gICAgICBsZXQgKEUgcikgPSBVb3B0LnZhbHVlX2V4biB1b3B0IGluXG4gICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdIChVb3B0LnZhbHVlX2V4biByLmluZGV4KSB+ZXhwZWN0OmlcbiAgICB8IGZhbHNlIC0+IGFzc2VydCAoVW9wdC5pc19ub25lIHVvcHQpKVxuOztcblxubGV0IGludmFyaWFudF9hYm91dF9udW1faW52YWxpZF9jaGlsZHJlblxuICAgICAgeyBjaGlsZHJlbjsgbnVtX2NoaWxkcmVuOyBudW1faW52YWxpZF9jaGlsZHJlbjsgXyB9XG4gICAgICB+aXNfbmVjZXNzYXJ5XG4gID1cbiAgaWYgbm90IGlzX25lY2Vzc2FyeVxuICB0aGVuIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDowXG4gIGVsc2UgKFxuICAgIGxldCBjb3VudF9pbnZhbGlkX2NoaWxkcmVuID0gcmVmIDAgaW5cbiAgICBmb3IgaSA9IDAgdG8gbnVtX2NoaWxkcmVuIC0gMSBkb1xuICAgICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgci5jaGlsZCkgdGhlbiBpbmNyIGNvdW50X2ludmFsaWRfY2hpbGRyZW5cbiAgICBkb25lO1xuICAgIFsldGVzdF9yZXN1bHQ6IGludF0gbnVtX2ludmFsaWRfY2hpbGRyZW4gfmV4cGVjdDohY291bnRfaW52YWxpZF9jaGlsZHJlbilcbjs7XG5cbmxldCBjcmVhdGUgfmYgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlID1cbiAgeyBmXG4gIDsgb25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2VcbiAgOyBjaGlsZHJlbiA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgOyBudW1fY2hpbGRyZW4gPSAwXG4gIDsgZm9yY2Vfc3RhbGUgPSBmYWxzZVxuICA7IG51bV9pbnZhbGlkX2NoaWxkcmVuID0gMFxuICA7IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdHJ1ZVxuICB9XG47O1xuXG5sZXQgbWFrZV9zdGFsZSB0ID1cbiAgaWYgdC5mb3JjZV9zdGFsZVxuICB0aGVuIGBBbHJlYWR5X3N0YWxlXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgICBgT2spXG47O1xuXG5sZXQgaW5jcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gKyAxXG5sZXQgZGVjcl9pbnZhbGlkX2NoaWxkcmVuIHQgPSB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuIDwtIHQubnVtX2ludmFsaWRfY2hpbGRyZW4gLSAxXG5cbmxldCBtYWtlX3NwYWNlX2Zvcl9jaGlsZF9pZl9uZWNlc3NhcnkgdCA9XG4gIGlmIHQubnVtX2NoaWxkcmVuID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQuY2hpbGRyZW5cbiAgdGhlbiAoXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHQubnVtX2NoaWxkcmVuID0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5jaGlsZHJlbik7XG4gICAgbGV0IG5ld19tYXggPSBJbnQubWF4IDIgKDIgKiBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LmNoaWxkcmVuKSBpblxuICAgIHQuY2hpbGRyZW4gPC0gVW5pZm9ybV9hcnJheS5yZWFsbG9jIHQuY2hpbGRyZW4gfmxlbjpuZXdfbWF4KVxuOztcblxubGV0IGFkZF9jaGlsZF9lZGdlIHQgcGFja2VkX2VkZ2UgPVxuICBsZXQgKEUgZWRnZSkgPSBwYWNrZWRfZWRnZSBpblxuICBhc3NlcnQgKFVvcHQuaXNfbm9uZSBlZGdlLmluZGV4KTtcbiAgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQ7XG4gIGxldCBuZXdfY2hpbGRfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQuc29tZSBuZXdfY2hpbGRfaW5kZXg7XG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQuY2hpbGRyZW4gbmV3X2NoaWxkX2luZGV4IChVb3B0LnNvbWUgcGFja2VkX2VkZ2UpO1xuICB0Lm51bV9jaGlsZHJlbiA8LSB0Lm51bV9jaGlsZHJlbiArIDE7XG4gIHQuZm9yY2Vfc3RhbGUgPC0gdHJ1ZTtcbiAgKCogV2Ugd2lsbCBidW1wIHRoZSBudW1iZXIgb2YgaW52YWxpZCBjaGlsZHJlbiBpZiBuZWNlc3Nhcnkgd2hlbiBjb25uZWN0aW5nIGNoaWxkIGFuZFxuICAgICBwYXJlbnQuICBTYW1lIHRoaW5nIGZvciBydW5uaW5nIHRoZSBbb25fY2hhbmdlXSBjYWxsYmFja3MuICopXG4gIG5ld19jaGlsZF9pbmRleFxuOztcblxubGV0IHN3YXBfY2hpbGRyZW4gdCB+Y2hpbGRfaW5kZXgxIH5jaGlsZF9pbmRleDIgPVxuICBsZXQgKEUgZWRnZTEpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgxKSBpblxuICBsZXQgKEUgZWRnZTIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgyKSBpblxuICBlZGdlMS5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgyO1xuICBlZGdlMi5pbmRleCA8LSBVb3B0LnNvbWUgY2hpbGRfaW5kZXgxO1xuICBVbmlmb3JtX2FycmF5LnN3YXAgdC5jaGlsZHJlbiBjaGlsZF9pbmRleDEgY2hpbGRfaW5kZXgyXG47O1xuXG5sZXQgbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleClcbjs7XG5cbmxldCByZW1vdmVfbGFzdF9jaGlsZF9lZGdlX2V4biB0ID1cbiAgbGV0IGxhc3RfaW5kZXggPSB0Lm51bV9jaGlsZHJlbiAtIDEgaW5cbiAgbGV0IHBhY2tlZF9lZGdlX29wdCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gbGFzdF9pbmRleCBpblxuICBVbmlmb3JtX2FycmF5LnNldCB0LmNoaWxkcmVuIGxhc3RfaW5kZXggVW9wdC5ub25lO1xuICB0Lm51bV9jaGlsZHJlbiA8LSBsYXN0X2luZGV4O1xuICB0LmZvcmNlX3N0YWxlIDwtIHRydWU7XG4gIGFzc2VydCAoVW9wdC5pc19zb21lIHBhY2tlZF9lZGdlX29wdCk7XG4gIGxldCAoRSBlZGdlKSA9IFVvcHQudW5zYWZlX3ZhbHVlIHBhY2tlZF9lZGdlX29wdCBpblxuICBlZGdlLmluZGV4IDwtIFVvcHQubm9uZVxuOztcblxubGV0IGJlZm9yZV9tYWluX2NvbXB1dGF0aW9uIHQgPVxuICBpZiB0Lm51bV9pbnZhbGlkX2NoaWxkcmVuID4gMFxuICB0aGVuIGBJbnZhbGlkXG4gIGVsc2UgKFxuICAgIHQuZm9yY2Vfc3RhbGUgPC0gZmFsc2U7XG4gICAgbGV0IHdpbGxfZmlyZV9hbGxfY2FsbGJhY2tzID0gdC53aWxsX2ZpcmVfYWxsX2NhbGxiYWNrcyBpblxuICAgIHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3MgPC0gZmFsc2U7XG4gICAgaWYgd2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgICB0aGVuXG4gICAgICBmb3IgaSA9IDAgdG8gdC5udW1fY2hpbGRyZW4gLSAxIGRvXG4gICAgICAgIGxldCAoRSByKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LmNoaWxkcmVuIGkpIGluXG4gICAgICAgIHIub25fY2hhbmdlIChVb3B0LnZhbHVlX2V4biByLmNoaWxkLnZhbHVlX29wdClcbiAgICAgIGRvbmU7XG4gICAgYE9rKVxuOztcblxubGV0IG9ic2VydmFiaWxpdHlfY2hhbmdlIHQgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgdC5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSB+aXNfbm93X29ic2VydmFibGU7XG4gIGlmIG5vdCBpc19ub3dfb2JzZXJ2YWJsZVxuICB0aGVuIChcbiAgICB0LndpbGxfZmlyZV9hbGxfY2FsbGJhY2tzIDwtIHRydWU7XG4gICAgKCogSWYgd2UgZG9uJ3QgcmVzZXQgbnVtX2ludmFsaWRfY2hpbGRyZW4sIHdlIHdvdWxkIGRvdWJsZSBjb3VudCB0aGVtOiBqdXN0IGltYWdpbmVcbiAgICAgICB3aGF0IGhhcHBlbnMgd2UgaWYgcmVjb25uZWN0L2Rpc2Nvbm5lY3QvcmVjb25uZWN0L2Rpc2Nvbm5lY3Qgd2l0aCBhbiBpbnZhbGlkXG4gICAgICAgY2hpbGQuICopXG4gICAgdC5udW1faW52YWxpZF9jaGlsZHJlbiA8LSAwKVxuOztcblxubGV0IHJ1bl9lZGdlX2NhbGxiYWNrIHQgfmNoaWxkX2luZGV4ID1cbiAgaWYgbm90IHQud2lsbF9maXJlX2FsbF9jYWxsYmFja3NcbiAgdGhlbiAoXG4gICAgbGV0IChFIHIpID0gVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IHQuY2hpbGRyZW4gY2hpbGRfaW5kZXgpIGluXG4gICAgKCogVGhpcyB2YWx1ZSBpcyBub3QgbmVjZXNzYXJpbHkgc2V0LCBiZWNhdXNlIHdlIHRyeSB0byBydW4gdGhpcyB3aGVuIGNvbm5lY3RpbmcgdGhlXG4gICAgICAgbm9kZSB0byBpdHMgY2hpbGRyZW4sIHdoaWNoIGNvdWxkIGJlIGJlZm9yZSB0aGV5IGhhdmUgcnVuIGV2ZW4gb25jZS4gIEFsc28gdGhlIG5vZGVcbiAgICAgICBjb3VsZCBiZSBpbnZhbGlkLiAqKVxuICAgIGlmIFVvcHQuaXNfc29tZSByLmNoaWxkLnZhbHVlX29wdFxuICAgIHRoZW4gci5vbl9jaGFuZ2UgKFVvcHQudW5zYWZlX3ZhbHVlIHIuY2hpbGQudmFsdWVfb3B0KSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5pbmNsdWRlIFR5cGVzLlNjb3BlXG5cbmxldCB0b3AgPSBUb3BcblxubGV0IGlzX3RvcCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBpbnZhcmlhbnQgPSBmdW5jdGlvblxuICB8IFRvcCAtPiAoKVxuICB8IEJpbmQgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbjs7XG5cbigqIFVubGlrZSBmb3Igbm9kZXMsIHRoZXJlIGlzIG5vIGludmFyaWFudCBbaXNfbmVjZXNzYXJ5IHQgPD0+IGhlaWdodCA+IC0xXSAoZG9lc24ndCB3b3JrXG4gICBiZWNhdXNlIG9mIFtUb3BdKS4gIFRoaXMgaXMgZmluZSBzaW5jZSB0aGUgaGVpZ2h0IG9mIGEgc2NvcGUgaXMgb25seSB1c2VkIHRvIGNvbnN0cmFpblxuICAgb3RoZXIgaGVpZ2h0cywgbm90IHRvIHNjaGVkdWxlIGl0LiAqKVxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IC0xXG4gIHwgQmluZCBiaW5kIC0+IGJpbmQubGhzX2NoYW5nZS5oZWlnaHRcbjs7XG5cbmxldCBpc192YWxpZCA9IGZ1bmN0aW9uXG4gIHwgVG9wIC0+IHRydWVcbiAgfCBCaW5kIGJpbmQgLT4gQmluZC5pc192YWxpZCBiaW5kXG47O1xuXG5sZXQgaXNfbmVjZXNzYXJ5ID0gZnVuY3Rpb25cbiAgfCBUb3AgLT4gdHJ1ZVxuICB8IEJpbmQgYmluZCAtPiBOb2RlLmlzX25lY2Vzc2FyeSBiaW5kLm1haW5cbjs7XG5cbmxldCBhZGRfbm9kZSB0IChub2RlIDogXyBOb2RlLnQpID1cbiAgYXNzZXJ0IChwaHlzX2VxdWFsIG5vZGUuY3JlYXRlZF9pbiB0KTtcbiAgbWF0Y2ggdCB3aXRoXG4gIHwgVG9wIC0+ICgpXG4gIHwgQmluZCBiaW5kIC0+XG4gICAgbm9kZS5uZXh0X25vZGVfaW5fc2FtZV9zY29wZSA8LSBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocztcbiAgICBiaW5kLmFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA8LSBVb3B0LnNvbWUgKFR5cGVzLk5vZGUuUGFja2VkLlQgbm9kZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuRnJlZXplLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBjaGlsZCA6ICdhIE5vZGUudFxuICA7IG9ubHlfZnJlZXplX3doZW4gOiAnYSAtPiBib29sXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBhc3NlcnQgKFNjb3BlLmlzX3RvcCBtYWluLmNyZWF0ZWRfaW4pO1xuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKCkgKCogaGFwcGVucyB3aGVuIGZyZWV6aW5nIGFuIGludmFsaWQgdmFsdWUgKilcbiAgICAgICAgICAgfCBDb25zdCBfIC0+ICgpICgqIGhhcHBlbnMgb24gYmVjb21pbmcgZnJvemVuICopXG4gICAgICAgICAgIHwgRnJlZXplIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIH5jaGlsZDppZ25vcmVcbiAgICAgIH5vbmx5X2ZyZWV6ZV93aGVuOmlnbm9yZSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4hIEltcG9ydFxub3BlbiBUeXBlcy5LaW5kXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcblxudHlwZSAnYSB0ID0gJ2EgVHlwZXMuSWZfdGhlbl9lbHNlLnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyB0ZXN0IDogYm9vbCBOb2RlLnRcbiAgOyB0ZXN0X2NoYW5nZSA6IHVuaXQgTm9kZS50XG4gIDsgbXV0YWJsZSBjdXJyZW50X2JyYW5jaCA6ICdhIE5vZGUudCBVb3B0LnRcbiAgOyB0aGVuXyA6ICdhIE5vZGUudFxuICA7IGVsc2VfIDogJ2EgTm9kZS50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IHNhbWUgKHQxIDogXyB0KSAodDIgOiBfIHQpID0gcGh5c19zYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgX2ludmFyaWFudF9hIHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bWFpbjpcbiAgICAgICAgKGNoZWNrIChmdW4gKG1haW4gOiBfIE5vZGUudCkgLT5cbiAgICAgICAgICAgbWF0Y2ggbWFpbi5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGhlbl9lbHNlIHQnIC0+IGFzc2VydCAocGh5c19lcXVhbCB0IHQnKVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfnRlc3Q6aWdub3JlXG4gICAgICB+dGVzdF9jaGFuZ2U6XG4gICAgICAgIChjaGVjayAoZnVuICh0ZXN0X2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCB0ZXN0X2NoYW5nZS5raW5kIHdpdGhcbiAgICAgICAgICAgfCBJbnZhbGlkIC0+ICgpXG4gICAgICAgICAgIHwgSWZfdGVzdF9jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmN1cnJlbnRfYnJhbmNoOlxuICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X2JyYW5jaCAtPlxuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgY3VycmVudF9icmFuY2hcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IGN1cnJlbnRfYnJhbmNoID0gVW9wdC52YWx1ZV9leG4gY3VycmVudF9icmFuY2ggaW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbCBjdXJyZW50X2JyYW5jaCB0LnRoZW5fIHx8IHBoeXNfZXF1YWwgY3VycmVudF9icmFuY2ggdC5lbHNlXykpKSlcbiAgICAgIH50aGVuXzppZ25vcmVcbiAgICAgIH5lbHNlXzppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLkpvaW4udCA9XG4gIHsgbWFpbiA6ICdhIE5vZGUudFxuICA7IGxocyA6ICdhIE5vZGUudCBOb2RlLnRcbiAgOyBsaHNfY2hhbmdlIDogdW5pdCBOb2RlLnRcbiAgOyBtdXRhYmxlIHJocyA6ICdhIE5vZGUudCBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcblxubGV0IGludmFyaWFudCBfaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5tYWluOlxuICAgICAgICAoY2hlY2sgKGZ1biAobWFpbiA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBtYWluLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX21haW4gdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfmxoczppZ25vcmVcbiAgICAgIH5saHNfY2hhbmdlOlxuICAgICAgICAoY2hlY2sgKGZ1biAobGhzX2NoYW5nZSA6IF8gTm9kZS50KSAtPlxuICAgICAgICAgICBtYXRjaCBsaHNfY2hhbmdlLmtpbmQgd2l0aFxuICAgICAgICAgICB8IEludmFsaWQgLT4gKClcbiAgICAgICAgICAgfCBKb2luX2xoc19jaGFuZ2UgdCcgLT4gYXNzZXJ0IChzYW1lIHQgdCcpXG4gICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgfnJoczppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLlNuYXBzaG90LnQgPVxuICB7IG1haW4gOiAnYSBOb2RlLnRcbiAgOyBhdCA6IFRpbWVfbnMudFxuICA7IGJlZm9yZSA6ICdhXG4gIDsgdmFsdWVfYXQgOiAnYSBOb2RlLnRcbiAgOyBjbG9jayA6IChUeXBlcy5DbG9jay50W0BzZXhwLm9wYXF1ZV0pXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubGV0IGludmFyaWFudCBpbnZhcmlhbnRfYSB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiBfIHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlclxuICAgICAgfm1haW46XG4gICAgICAgIChjaGVjayAoZnVuIChtYWluIDogXyBOb2RlLnQpIC0+XG4gICAgICAgICAgIGFzc2VydCAoU2NvcGUuaXNfdG9wIG1haW4uY3JlYXRlZF9pbik7XG4gICAgICAgICAgIG1hdGNoIG1haW4ua2luZCB3aXRoXG4gICAgICAgICAgIHwgSW52YWxpZCAtPiAoKSAoKiBoYXBwZW5zIHdoZW4gc25hcHNob3R0aW5nIGFuIGludmFsaWQgbm9kZSAqKVxuICAgICAgICAgICB8IENvbnN0IF8gLT4gKCkgKCogaGFwcGVucyBhZnRlciB0aGUgc25hcHNob3QgKilcbiAgICAgICAgICAgfCBTbmFwc2hvdCB0JyAtPiBhc3NlcnQgKHBoeXNfZXF1YWwgdCB0JylcbiAgICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSkpXG4gICAgICB+YXQ6aWdub3JlXG4gICAgICB+YmVmb3JlOihjaGVjayBpbnZhcmlhbnRfYSlcbiAgICAgIH52YWx1ZV9hdDppZ25vcmVcbiAgICAgIH5jbG9jazppZ25vcmUpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxubW9kdWxlIE5vZGUgPSBUeXBlcy5Ob2RlXG5cbnR5cGUgJ2EgdCA9ICdhIFR5cGVzLktpbmQudCA9XG4gIHwgQXJyYXlfZm9sZCA6IChfLCAnYSkgQXJyYXlfZm9sZC50IC0+ICdhIHRcbiAgfCBBdCA6IEF0LnQgLT4gQmVmb3JlX29yX2FmdGVyLnQgdFxuICB8IEF0X2ludGVydmFscyA6IEF0X2ludGVydmFscy50IC0+IHVuaXQgdFxuICB8IEJpbmRfbGhzX2NoYW5nZSA6IChfLCBfKSBCaW5kLnQgLT4gdW5pdCB0XG4gIHwgQmluZF9tYWluIDogKF8sICdhKSBCaW5kLnQgLT4gJ2EgdFxuICB8IENvbnN0IG9mICdhXG4gIHwgRXhwZXJ0IG9mICdhIEV4cGVydC50XG4gIHwgRnJlZXplIG9mICdhIEZyZWV6ZS50XG4gIHwgSWZfdGVzdF9jaGFuZ2UgOiBfIElmX3RoZW5fZWxzZS50IC0+IHVuaXQgdFxuICB8IElmX3RoZW5fZWxzZSBvZiAnYSBJZl90aGVuX2Vsc2UudFxuICB8IEludmFsaWRcbiAgfCBKb2luX2xoc19jaGFuZ2UgOiBfIEpvaW4udCAtPiB1bml0IHRcbiAgfCBKb2luX21haW4gb2YgJ2EgSm9pbi50XG4gIHwgTWFwIDogKCdhMSAtPiAnYSkgKiAnYTEgTm9kZS50IC0+ICdhIHRcbiAgfCBTbmFwc2hvdCBvZiAnYSBTbmFwc2hvdC50XG4gIHwgU3RlcF9mdW5jdGlvbiBvZiAnYSBTdGVwX2Z1bmN0aW9uX25vZGUudFxuICB8IFVuaW5pdGlhbGl6ZWRcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCA6IChfLCAnYSkgVW5vcmRlcmVkX2FycmF5X2ZvbGQudCAtPiAnYSB0XG4gIHwgVmFyIG9mICdhIFZhci50XG4gIHwgTWFwMiA6ICgnYTEgLT4gJ2EyIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50IC0+ICdhIHRcbiAgfCBNYXAzIDogKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAtPiAnYSB0XG4gIHwgTWFwNCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhKSAqICdhMSBOb2RlLnQgKiAnYTIgTm9kZS50ICogJ2EzIE5vZGUudCAqICdhNCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA1IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA2IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA3IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2EpXG4gICAgICAqICdhMSBOb2RlLnRcbiAgICAgICogJ2EyIE5vZGUudFxuICAgICAgKiAnYTMgTm9kZS50XG4gICAgICAqICdhNCBOb2RlLnRcbiAgICAgICogJ2E1IE5vZGUudFxuICAgICAgKiAnYTYgTm9kZS50XG4gICAgICAqICdhNyBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA4IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXA5IDpcbiAgICAgICgnYTEgLT4gJ2EyIC0+ICdhMyAtPiAnYTQgLT4gJ2E1IC0+ICdhNiAtPiAnYTcgLT4gJ2E4IC0+ICdhOSAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMCA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMSA6XG4gICAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdhOCAtPiAnYTkgLT4gJ2ExMCAtPiAnYTExIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDEyIDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbiAgfCBNYXAxMyA6XG4gICAgICAoJ2ExXG4gICAgICAgLT4gJ2EyXG4gICAgICAgLT4gJ2EzXG4gICAgICAgLT4gJ2E0XG4gICAgICAgLT4gJ2E1XG4gICAgICAgLT4gJ2E2XG4gICAgICAgLT4gJ2E3XG4gICAgICAgLT4gJ2E4XG4gICAgICAgLT4gJ2E5XG4gICAgICAgLT4gJ2ExMFxuICAgICAgIC0+ICdhMTFcbiAgICAgICAtPiAnYTEyXG4gICAgICAgLT4gJ2ExM1xuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE0IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhKVxuICAgICAgKiAnYTEgTm9kZS50XG4gICAgICAqICdhMiBOb2RlLnRcbiAgICAgICogJ2EzIE5vZGUudFxuICAgICAgKiAnYTQgTm9kZS50XG4gICAgICAqICdhNSBOb2RlLnRcbiAgICAgICogJ2E2IE5vZGUudFxuICAgICAgKiAnYTcgTm9kZS50XG4gICAgICAqICdhOCBOb2RlLnRcbiAgICAgICogJ2E5IE5vZGUudFxuICAgICAgKiAnYTEwIE5vZGUudFxuICAgICAgKiAnYTExIE5vZGUudFxuICAgICAgKiAnYTEyIE5vZGUudFxuICAgICAgKiAnYTEzIE5vZGUudFxuICAgICAgKiAnYTE0IE5vZGUudFxuICAgICAgLT4gJ2EgdFxuICB8IE1hcDE1IDpcbiAgICAgICgnYTFcbiAgICAgICAtPiAnYTJcbiAgICAgICAtPiAnYTNcbiAgICAgICAtPiAnYTRcbiAgICAgICAtPiAnYTVcbiAgICAgICAtPiAnYTZcbiAgICAgICAtPiAnYTdcbiAgICAgICAtPiAnYThcbiAgICAgICAtPiAnYTlcbiAgICAgICAtPiAnYTEwXG4gICAgICAgLT4gJ2ExMVxuICAgICAgIC0+ICdhMTJcbiAgICAgICAtPiAnYTEzXG4gICAgICAgLT4gJ2ExNFxuICAgICAgIC0+ICdhMTVcbiAgICAgICAtPiAnYSlcbiAgICAgICogJ2ExIE5vZGUudFxuICAgICAgKiAnYTIgTm9kZS50XG4gICAgICAqICdhMyBOb2RlLnRcbiAgICAgICogJ2E0IE5vZGUudFxuICAgICAgKiAnYTUgTm9kZS50XG4gICAgICAqICdhNiBOb2RlLnRcbiAgICAgICogJ2E3IE5vZGUudFxuICAgICAgKiAnYTggTm9kZS50XG4gICAgICAqICdhOSBOb2RlLnRcbiAgICAgICogJ2ExMCBOb2RlLnRcbiAgICAgICogJ2ExMSBOb2RlLnRcbiAgICAgICogJ2ExMiBOb2RlLnRcbiAgICAgICogJ2ExMyBOb2RlLnRcbiAgICAgICogJ2ExNCBOb2RlLnRcbiAgICAgICogJ2ExNSBOb2RlLnRcbiAgICAgIC0+ICdhIHRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBuYW1lIDogdHlwZSBhLiBhIHQgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBBcnJheV9mb2xkIF8gLT4gXCJBcnJheV9mb2xkXCJcbiAgfCBBdCBfIC0+IFwiQXRcIlxuICB8IEF0X2ludGVydmFscyBfIC0+IFwiQXRfaW50ZXJ2YWxzXCJcbiAgfCBCaW5kX2xoc19jaGFuZ2UgXyAtPiBcIkJpbmRfbGhzX2NoYW5nZVwiXG4gIHwgQmluZF9tYWluIF8gLT4gXCJCaW5kX21haW5cIlxuICB8IENvbnN0IF8gLT4gXCJDb25zdFwiXG4gIHwgRXhwZXJ0IF8gLT4gXCJFeHBlcnRcIlxuICB8IEZyZWV6ZSBfIC0+IFwiRnJlZXplXCJcbiAgfCBJZl90ZXN0X2NoYW5nZSBfIC0+IFwiSWZfdGVzdF9jaGFuZ2VcIlxuICB8IElmX3RoZW5fZWxzZSBfIC0+IFwiSWZfdGhlbl9lbHNlXCJcbiAgfCBJbnZhbGlkIC0+IFwiSW52YWxpZFwiXG4gIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gXCJKb2luX2xoc19jaGFuZ2VcIlxuICB8IEpvaW5fbWFpbiBfIC0+IFwiSm9pbl9tYWluXCJcbiAgfCBNYXAgXyAtPiBcIk1hcFwiXG4gIHwgTWFwMiBfIC0+IFwiTWFwMlwiXG4gIHwgTWFwMyBfIC0+IFwiTWFwM1wiXG4gIHwgTWFwNCBfIC0+IFwiTWFwNFwiXG4gIHwgTWFwNSBfIC0+IFwiTWFwNVwiXG4gIHwgTWFwNiBfIC0+IFwiTWFwNlwiXG4gIHwgTWFwNyBfIC0+IFwiTWFwN1wiXG4gIHwgTWFwOCBfIC0+IFwiTWFwOFwiXG4gIHwgTWFwOSBfIC0+IFwiTWFwOVwiXG4gIHwgTWFwMTAgXyAtPiBcIk1hcDEwXCJcbiAgfCBNYXAxMSBfIC0+IFwiTWFwMTFcIlxuICB8IE1hcDEyIF8gLT4gXCJNYXAxMlwiXG4gIHwgTWFwMTMgXyAtPiBcIk1hcDEzXCJcbiAgfCBNYXAxNCBfIC0+IFwiTWFwMTRcIlxuICB8IE1hcDE1IF8gLT4gXCJNYXAxNVwiXG4gIHwgU25hcHNob3QgXyAtPiBcIlNuYXBzaG90XCJcbiAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gXCJTdGVwX2Z1bmN0aW9uXCJcbiAgfCBVbmluaXRpYWxpemVkIC0+IFwiVW5pbml0aWFsaXplZFwiXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBcIlVub3JkZXJlZF9hcnJheV9mb2xkXCJcbiAgfCBWYXIgXyAtPiBcIlZhclwiXG47O1xuXG5sZXQgaW52YXJpYW50IDogdHlwZSBhLiBhIEludmFyaWFudC50IC0+IGEgdCBJbnZhcmlhbnQudCA9XG4gIGZ1biBpbnZhcmlhbnRfYSB0IC0+XG4gIG1hdGNoIHQgd2l0aFxuICB8IEFycmF5X2ZvbGQgYXJyYXlfZm9sZCAtPiBBcnJheV9mb2xkLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYXJyYXlfZm9sZFxuICB8IEF0IGF0IC0+IEF0LmludmFyaWFudCBhdFxuICB8IEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMgLT4gQXRfaW50ZXJ2YWxzLmludmFyaWFudCBhdF9pbnRlcnZhbHNcbiAgfCBCaW5kX2xoc19jaGFuZ2UgYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaWdub3JlIGJpbmRcbiAgfCBCaW5kX21haW4gYmluZCAtPiBCaW5kLmludmFyaWFudCBpZ25vcmUgaW52YXJpYW50X2EgYmluZFxuICB8IENvbnN0IGEgLT4gaW52YXJpYW50X2EgYVxuICB8IEV4cGVydCBlIC0+IEV4cGVydC5pbnZhcmlhbnQgaW52YXJpYW50X2EgZVxuICB8IEZyZWV6ZSBmcmVlemUgLT4gRnJlZXplLmludmFyaWFudCBpbnZhcmlhbnRfYSBmcmVlemVcbiAgfCBJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UgLT4gSWZfdGhlbl9lbHNlLmludmFyaWFudCBpZ25vcmUgaWZfdGhlbl9lbHNlXG4gIHwgSWZfdGhlbl9lbHNlIGlmX3RoZW5fZWxzZSAtPiBJZl90aGVuX2Vsc2UuaW52YXJpYW50IGludmFyaWFudF9hIGlmX3RoZW5fZWxzZVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2Ugam9pbiAtPiBKb2luLmludmFyaWFudCBpZ25vcmUgam9pblxuICB8IEpvaW5fbWFpbiBqb2luIC0+IEpvaW4uaW52YXJpYW50IGludmFyaWFudF9hIGpvaW5cbiAgfCBNYXAgX1xuICB8IE1hcDIgX1xuICB8IE1hcDMgX1xuICB8IE1hcDQgX1xuICB8IE1hcDUgX1xuICB8IE1hcDYgX1xuICB8IE1hcDcgX1xuICB8IE1hcDggX1xuICB8IE1hcDkgX1xuICB8IE1hcDEwIF9cbiAgfCBNYXAxMSBfXG4gIHwgTWFwMTIgX1xuICB8IE1hcDEzIF9cbiAgfCBNYXAxNCBfXG4gIHwgTWFwMTUgXyAtPiAoKVxuICB8IFNuYXBzaG90IHNuYXBzaG90IC0+IFNuYXBzaG90LmludmFyaWFudCBpbnZhcmlhbnRfYSBzbmFwc2hvdFxuICB8IFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlIC0+XG4gICAgU3RlcF9mdW5jdGlvbl9ub2RlLmludmFyaWFudCBpbnZhcmlhbnRfYSBzdGVwX2Z1bmN0aW9uX25vZGVcbiAgfCBVbmluaXRpYWxpemVkIC0+ICgpXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdW5vcmRlcmVkX2FycmF5X2ZvbGQgLT5cbiAgICBVbm9yZGVyZWRfYXJyYXlfZm9sZC5pbnZhcmlhbnQgaWdub3JlIGludmFyaWFudF9hIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gIHwgVmFyIHZhciAtPiBWYXIuaW52YXJpYW50IGlnbm9yZSB2YXJcbjs7XG5cbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiAodHlwZSBhKSAodCA6IGEgdCkgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBdCBfIC0+IDBcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAwXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT4gMVxuICB8IEJpbmRfbWFpbiBfIC0+IDJcbiAgfCBDb25zdCBfIC0+IDBcbiAgfCBFeHBlcnQgXyAtPiAwXG4gIHwgRnJlZXplIF8gLT4gMVxuICB8IElmX3Rlc3RfY2hhbmdlIF8gLT4gMVxuICB8IElmX3RoZW5fZWxzZSBfIC0+IDJcbiAgfCBJbnZhbGlkIC0+IDBcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPiAxXG4gIHwgSm9pbl9tYWluIF8gLT4gMlxuICB8IE1hcCBfIC0+IDFcbiAgfCBNYXAyIF8gLT4gMlxuICB8IE1hcDMgXyAtPiAzXG4gIHwgTWFwNCBfIC0+IDRcbiAgfCBNYXA1IF8gLT4gNVxuICB8IE1hcDYgXyAtPiA2XG4gIHwgTWFwNyBfIC0+IDdcbiAgfCBNYXA4IF8gLT4gOFxuICB8IE1hcDkgXyAtPiA5XG4gIHwgTWFwMTAgXyAtPiAxMFxuICB8IE1hcDExIF8gLT4gMTFcbiAgfCBNYXAxMiBfIC0+IDEyXG4gIHwgTWFwMTMgXyAtPiAxM1xuICB8IE1hcDE0IF8gLT4gMTRcbiAgfCBNYXAxNSBfIC0+IDE1XG4gIHwgU25hcHNob3QgXyAtPiAwXG4gIHwgU3RlcF9mdW5jdGlvbiBfIC0+IDFcbiAgfCBVbmluaXRpYWxpemVkIC0+IDBcbiAgfCBWYXIgXyAtPiAwXG4gIHwgQXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gQXJyYXkubGVuZ3RoIGNoaWxkcmVuXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgeyBjaGlsZHJlbjsgXyB9IC0+IEFycmF5Lmxlbmd0aCBjaGlsZHJlblxuOztcblxubGV0IGJpbmRfcmhzX2NoaWxkX2luZGV4ID0gMVxubGV0IGZyZWV6ZV9jaGlsZF9pbmRleCA9IDBcbmxldCBpZl9icmFuY2hfY2hpbGRfaW5kZXggPSAxXG5sZXQgam9pbl9yaHNfY2hpbGRfaW5kZXggPSAxXG5cbigqIFdlIGRvIG5vdCBpbXBsZW1lbnQgdGhlIHRpbWUtYmFzZWQgbm9kZXMgKFtBdF0sIFtBdF9pbnRlcnZhbHNdLCBbU25hcHNob3RdLFxuICAgW1N0ZXBfZnVuY3Rpb25dKSBhcyBwYXJlbnRzIG9mIHRoZSBjdXJyZW50LXRpbWUgbm9kZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIFdlIGRvbid0XG4gICB3YW50IGFsbCBzdWNoIG5vZGVzIHRvIGJlIHJlY29tcHV0ZWQgd2hlbmV2ZXIgdGhlIHRpbWUgY2hhbmdlcywgd2hpY2ggd291bGQgYmUgaG9ycmlibHlcbiAgIGlubmVmaWNpZW50LiAgSW5zdGVhZCwgd2Ugb25seSB3YW50IHRoZW0gdG8gYmUgcmVjb21wdXRlZCBhdCB0aGUgXCJyaWdodFwiIHRpbWUsXG4gICBpLmUuIHdoZW4gdGltZSBwYXNzZXMgc29tZSB0aHJlc2hvbGQgcmVsZXZhbnQgdG8gdGhlbS4gIFdlIGRvIHRoaXMgdmlhIHNjaGVkdWxpbmdcbiAgIGFsYXJtcyBhdCB0aG9zZSB0aHJlc2hvbGRzLiAqKVxubGV0IGl0ZXJpX2NoaWxkcmVuICh0eXBlIGEpICh0IDogYSB0KSB+KGYgOiBpbnQgLT4gTm9kZS5QYWNrZWQudCAtPiB1bml0KSA6IHVuaXQgPVxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IEF0IF8gLT4gKClcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiAoKVxuICB8IEJpbmRfbGhzX2NoYW5nZSBiaW5kIC0+IGYgMCAoVCBiaW5kLmxocylcbiAgfCBCaW5kX21haW4geyBsaHNfY2hhbmdlOyByaHM7IF8gfSAtPlxuICAgICgqIFZhcmlvdXMgY29kZSwgZS5nLiBbc3RhdGUuYmVjYW1lX25lY2Vzc2FyeV0sIHJlbGllcyBvbiBwcm9jZXNzaW5nIFtsaHNfY2hhbmdlXVxuICAgICAgIGJlZm9yZSBbcmhzXS4gKilcbiAgICBmIDAgKFQgbGhzX2NoYW5nZSk7XG4gICAgaWYgVW9wdC5pc19zb21lIHJocyB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgcmhzKSlcbiAgfCBDb25zdCBfIC0+ICgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IG51bV9jaGlsZHJlbjsgXyB9IC0+XG4gICAgZm9yIGkgPSAwIHRvIG51bV9jaGlsZHJlbiAtIDEgZG9cbiAgICAgIGxldCAoRXhwZXJ0LkUgcikgPSBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS51bnNhZmVfZ2V0IGNoaWxkcmVuIGkpIGluXG4gICAgICBmIGkgKFQgci5jaGlsZClcbiAgICBkb25lXG4gIHwgRnJlZXplIHsgY2hpbGQ7IF8gfSAtPiBmIDAgKFQgY2hpbGQpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gZiAwIChUIHRlc3QpXG4gIHwgSWZfdGhlbl9lbHNlIHsgdGVzdF9jaGFuZ2U7IGN1cnJlbnRfYnJhbmNoOyBfIH0gLT5cbiAgICBmIDAgKFQgdGVzdF9jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSBjdXJyZW50X2JyYW5jaCB0aGVuIGYgMSAoVCAoVW9wdC51bnNhZmVfdmFsdWUgY3VycmVudF9icmFuY2gpKVxuICB8IEludmFsaWQgLT4gKClcbiAgfCBKb2luX2xoc19jaGFuZ2UgeyBsaHM7IF8gfSAtPiBmIDAgKFQgbGhzKVxuICB8IEpvaW5fbWFpbiB7IGxoc19jaGFuZ2U7IHJoczsgXyB9IC0+XG4gICAgZiAwIChUIGxoc19jaGFuZ2UpO1xuICAgIGlmIFVvcHQuaXNfc29tZSByaHMgdGhlbiBmIDEgKFQgKFVvcHQudW5zYWZlX3ZhbHVlIHJocykpXG4gIHwgU25hcHNob3QgXyAtPiAoKVxuICB8IFN0ZXBfZnVuY3Rpb24geyBjaGlsZDsgXyB9IC0+XG4gICAgaWYgVW9wdC5pc19zb21lIGNoaWxkIHRoZW4gZiAwIChUIChVb3B0LnVuc2FmZV92YWx1ZSBjaGlsZCkpXG4gIHwgVW5pbml0aWFsaXplZCAtPiAoKVxuICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggY2hpbGRyZW4gLSAxIGRvXG4gICAgICBmIGkgKFQgKEFycmF5LnVuc2FmZV9nZXQgY2hpbGRyZW4gaSkpXG4gICAgZG9uZVxuICB8IFZhciBfIC0+ICgpXG4gIHwgTWFwIChfLCBub2RlMCkgLT4gZiAwIChUIG5vZGUwKVxuICB8IE1hcDIgKF8sIG5vZGUwLCBub2RlMSkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSlcbiAgfCBNYXAzIChfLCBub2RlMCwgbm9kZTEsIG5vZGUyKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpXG4gIHwgTWFwNCAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKVxuICB8IE1hcDUgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNClcbiAgfCBNYXA2IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpXG4gIHwgTWFwNyAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYpIC0+XG4gICAgZiAwIChUIG5vZGUwKTtcbiAgICBmIDEgKFQgbm9kZTEpO1xuICAgIGYgMiAoVCBub2RlMik7XG4gICAgZiAzIChUIG5vZGUzKTtcbiAgICBmIDQgKFQgbm9kZTQpO1xuICAgIGYgNSAoVCBub2RlNSk7XG4gICAgZiA2IChUIG5vZGU2KVxuICB8IE1hcDggKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNykgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNylcbiAgfCBNYXA5IChfLCBub2RlMCwgbm9kZTEsIG5vZGUyLCBub2RlMywgbm9kZTQsIG5vZGU1LCBub2RlNiwgbm9kZTcsIG5vZGU4KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpXG4gIHwgTWFwMTAgKF8sIG5vZGUwLCBub2RlMSwgbm9kZTIsIG5vZGUzLCBub2RlNCwgbm9kZTUsIG5vZGU2LCBub2RlNywgbm9kZTgsIG5vZGU5KSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSlcbiAgfCBNYXAxMSAoXywgbm9kZTAsIG5vZGUxLCBub2RlMiwgbm9kZTMsIG5vZGU0LCBub2RlNSwgbm9kZTYsIG5vZGU3LCBub2RlOCwgbm9kZTksIG5vZGUxMClcbiAgICAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApXG4gIHwgTWFwMTJcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSlcbiAgfCBNYXAxM1xuICAgICAgKCBfXG4gICAgICAsIG5vZGUwXG4gICAgICAsIG5vZGUxXG4gICAgICAsIG5vZGUyXG4gICAgICAsIG5vZGUzXG4gICAgICAsIG5vZGU0XG4gICAgICAsIG5vZGU1XG4gICAgICAsIG5vZGU2XG4gICAgICAsIG5vZGU3XG4gICAgICAsIG5vZGU4XG4gICAgICAsIG5vZGU5XG4gICAgICAsIG5vZGUxMFxuICAgICAgLCBub2RlMTFcbiAgICAgICwgbm9kZTEyICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpXG4gIHwgTWFwMTRcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTMgKSAtPlxuICAgIGYgMCAoVCBub2RlMCk7XG4gICAgZiAxIChUIG5vZGUxKTtcbiAgICBmIDIgKFQgbm9kZTIpO1xuICAgIGYgMyAoVCBub2RlMyk7XG4gICAgZiA0IChUIG5vZGU0KTtcbiAgICBmIDUgKFQgbm9kZTUpO1xuICAgIGYgNiAoVCBub2RlNik7XG4gICAgZiA3IChUIG5vZGU3KTtcbiAgICBmIDggKFQgbm9kZTgpO1xuICAgIGYgOSAoVCBub2RlOSk7XG4gICAgZiAxMCAoVCBub2RlMTApO1xuICAgIGYgMTEgKFQgbm9kZTExKTtcbiAgICBmIDEyIChUIG5vZGUxMik7XG4gICAgZiAxMyAoVCBub2RlMTMpXG4gIHwgTWFwMTVcbiAgICAgICggX1xuICAgICAgLCBub2RlMFxuICAgICAgLCBub2RlMVxuICAgICAgLCBub2RlMlxuICAgICAgLCBub2RlM1xuICAgICAgLCBub2RlNFxuICAgICAgLCBub2RlNVxuICAgICAgLCBub2RlNlxuICAgICAgLCBub2RlN1xuICAgICAgLCBub2RlOFxuICAgICAgLCBub2RlOVxuICAgICAgLCBub2RlMTBcbiAgICAgICwgbm9kZTExXG4gICAgICAsIG5vZGUxMlxuICAgICAgLCBub2RlMTNcbiAgICAgICwgbm9kZTE0ICkgLT5cbiAgICBmIDAgKFQgbm9kZTApO1xuICAgIGYgMSAoVCBub2RlMSk7XG4gICAgZiAyIChUIG5vZGUyKTtcbiAgICBmIDMgKFQgbm9kZTMpO1xuICAgIGYgNCAoVCBub2RlNCk7XG4gICAgZiA1IChUIG5vZGU1KTtcbiAgICBmIDYgKFQgbm9kZTYpO1xuICAgIGYgNyAoVCBub2RlNyk7XG4gICAgZiA4IChUIG5vZGU4KTtcbiAgICBmIDkgKFQgbm9kZTkpO1xuICAgIGYgMTAgKFQgbm9kZTEwKTtcbiAgICBmIDExIChUIG5vZGUxMSk7XG4gICAgZiAxMiAoVCBub2RlMTIpO1xuICAgIGYgMTMgKFQgbm9kZTEzKTtcbiAgICBmIDE0IChUIG5vZGUxNClcbjs7XG5cbigqIFtzbG93X2dldF9jaGlsZF0gaXMgb25seSB1c2VkIGJ5IFtOb2RlLmludmFyaWFudF0sIHNvIHdlIGRvbid0IG1pbmQgdXNpbmcgW3dpdGhfcmV0dXJuXVxuICAgYW5kIFtpdGVyaV9jaGlsZHJlbl0uICBJZiB3ZSBldmVyIG5lZWQgYSBmYXN0IFtnZXRfY2hpbGRdLCB3ZSBjb2RlZCBpdCBpbiByZXZcbiAgIDQ4ZGJmZDAzYzljNS4gKilcbmxldCBzbG93X2dldF9jaGlsZCA6IHR5cGUgYS4gYSB0IC0+IGluZGV4Ol8gLT4gTm9kZS5QYWNrZWQudCA9XG4gIGZ1biB0IH5pbmRleCAtPlxuICBtYXRjaCB0IHdpdGhcbiAgfCBBcnJheV9mb2xkIHsgY2hpbGRyZW47IF8gfSAtPiBUIGNoaWxkcmVuLihpbmRleClcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB7IGNoaWxkcmVuOyBfIH0gLT4gVCBjaGlsZHJlbi4oaW5kZXgpXG4gIHwgRXhwZXJ0IHsgY2hpbGRyZW47IF8gfSAtPlxuICAgIGxldCAoRSBlZGdlKSA9IFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCBjaGlsZHJlbiBpbmRleCkgaW5cbiAgICBUIGVkZ2UuY2hpbGRcbiAgfCBfIC0+XG4gICAgd2l0aF9yZXR1cm4gKGZ1biByIC0+XG4gICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gaSBjaGlsZCAtPiBpZiBpID0gaW5kZXggdGhlbiByLnJldHVybiBjaGlsZCk7XG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICBcIktpbmQuc2xvd19nZXRfY2hpbGQgZ290IGludmFsaWQgaW5kZXhcIlxuICAgICAgICAoaW5kZXgsIHQpXG4gICAgICAgIFslc2V4cF9vZjogaW50ICogXyB0XSlcbjs7XG4iLCJvcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIEtpbmRcbm1vZHVsZSBJbnRlcm5hbF9vYnNlcnZlciA9IFR5cGVzLkludGVybmFsX29ic2VydmVyXG5tb2R1bGUgTm9kZSA9IFR5cGVzLk5vZGVcbm9wZW4gTm9kZVxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5Ob2RlLnQgPVxuICB7ICgqIFtpZF0gaXMgYSB1bmlxdWUgaWQgZm9yIHRoZSBub2RlLiAqKVxuICAgIGlkIDogTm9kZV9pZC50XG4gIDsgc3RhdGUgOiAoVHlwZXMuU3RhdGUudFtAc2V4cC5vcGFxdWVdKVxuICA7ICgqIFRoZSBmaWVsZHMgZnJvbSBbcmVjb21wdXRlZF9hdF0gdG8gW2NyZWF0ZWRfaW5dIGFyZSBncm91cGVkIHRvZ2V0aGVyIGFuZCBhcmUgaW4gdGhlXG4gICAgICAgc2FtZSBvcmRlciBhcyB0aGV5IGFyZSB1c2VkIGJ5IFtTdGF0ZS5yZWNvbXB1dGVdIFRoaXMgaGFzIGEgcG9zaXRpdmUgcGVyZm9ybWFuY2VcbiAgICAgICBpbXBhY3QgZHVlIHRvIGNhY2hlIGVmZmVjdHMuICBEb24ndCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZXNlIG5vZGVzIHdpdGhvdXRcbiAgICAgICBwZXJmb3JtYW5jZSB0ZXN0aW5nLiAqKVxuICAgICgqIFtyZWNvbXB1dGVkX2F0XSBpcyB0aGUgbGFzdCBzdGFiaWxpemF0aW9uIHdoZW4gW3RdJ3MgdmFsdWUgd2FzIHJlY29tcHV0ZWQsIGV2ZW4gaWZcbiAgICAgICBpdCB3YXMgY3V0IG9mZi4gKilcbiAgICBtdXRhYmxlIHJlY29tcHV0ZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW3ZhbHVlX29wdF0gc3RhcnRzIGFzIFtub25lXSwgYW5kIHRoZSBmaXJzdCB0aW1lIFt0XSBpcyBjb21wdXRlZCBpdCBpcyBzZXQgdG9cbiAgICAgICBbc29tZV0sIGFuZCByZW1haW5zIFtzb21lXSB0aGVyZWFmdGVyLCB1bnRpbCBbdF0gaXMgaW52YWxpZGF0ZWQsIGlmIGV2ZXIuICopXG4gICAgbXV0YWJsZSB2YWx1ZV9vcHQgOiAnYSBVb3B0LnRcbiAgOyAoKiBba2luZF0gaXMgdGhlIGtpbmQgb2YgREFHIG5vZGUgW3RdIGlzLiAgW2tpbmRdIGlzIG11dGFibGUgYm90aCBmb3IgaW5pdGlhbGl6YXRpb25cbiAgICAgICBhbmQgYmVjYXVzZSBpdCBjYW4gY2hhbmdlLCBlLmcuIGlmIFt0XSBpcyBpbnZhbGlkYXRlZC4gKilcbiAgICBtdXRhYmxlIGtpbmQgOiAnYSBLaW5kLnRcbiAgOyBtdXRhYmxlIGN1dG9mZiA6ICdhIEN1dG9mZi50XG4gIDsgKCogW2NoYW5nZWRfYXRdIGlzIHRoZSBsYXN0IHN0YWJpbGl6YXRpb24gd2hlbiB0aGlzIG5vZGUgd2FzIGNvbXB1dGVkIGFuZCBub3QgY3V0IG9mZi5cbiAgICAgICBJdCBpcyB1c2VkIHRvIGRldGVjdCB3aGVuIFt0XSdzIHBhcmVudHMgYXJlIHN0YWxlIGFuZCAoYmVjYXVzZSBhbGwgcGFyZW50cyBhcmVcbiAgICAgICBuZWNlc3NhcnkpIG5lZWQgdG8gYmUgcmVjb21wdXRlZC4gKilcbiAgICBtdXRhYmxlIGNoYW5nZWRfYXQgOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgKCogW251bV9vbl91cGRhdGVfaGFuZGxlcnNdIGlzIFtMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVyc10gcGx1cyB0aGUgbnVtYmVyIG9mXG4gICAgICAgb24tdXBkYXRlIGhhbmRsZXJzIHN1bW1lZCBvdmVyIGFsbCBvYnNlcnZlcnMgaW4gW3Qub2JzZXJ2ZXJzXS4gIEl0IGlzIHVzZWQgdG9cbiAgICAgICBxdWlja2x5IGRlY2lkZSB3aGV0aGVyIFt0XSBuZWVkcyB0byBiZSBhZGRlZCB0byBbc3RhdGUuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dXG4gICAgICAgd2hlbiBbdF0gY2hhbmdlcy4gIFtudW1fb25fdXBkYXRlX2hhbmRsZXJzXSB3aWxsIGRlY3JlYXNlIHdoZW4gYW4gb2JzZXJ2ZXIgaXNcbiAgICAgICByZW1vdmVkIGZyb20gW3Qub2JzZXJ2ZXJzXSwgaWYgdGhlIG9ic2VydmVyIGhhcyBvbi11cGRhdGUgaGFuZGxlcnMuICopXG4gICAgbXV0YWJsZSBudW1fb25fdXBkYXRlX2hhbmRsZXJzIDogaW50XG4gIDsgKCogVGhlIHBhcmVudHMgb2YgW3RdIGFyZSB0aGUgbm9kZXMgdGhhdCBkZXBlbmQgb24gaXQsIGFuZCBzaG91bGQgYmUgY29tcHV0ZWQgd2hlbiBbdF1cbiAgICAgICBjaGFuZ2VzLCBvbmNlIGFsbCBvZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgdXAgdG8gZGF0ZS4gIFtudW1fcGFyZW50c10gaXMgdGhlXG4gICAgICAgbnVtYmVyIG9mIHBhcmVudHMuICBJZiBbbnVtX3BhcmVudHMgPj0gMV0sIHRoZW4gW3BhcmVudDBdIGlzIHRoZSBmaXJzdCBwYXJlbnQuXG4gICAgICAgW3BhcmVudDFfYW5kX2JleW9uZF0gaG9sZHMgdGhlIHJlbWFpbmluZyBwYXJlbnRzLiAgVGhlIG9yZGVyIG9mIHRoZSBwYXJlbnRzIGRvZXNuJ3RcbiAgICAgICBtYXR0ZXIuICBPbmUgbm9kZSBtYXkgb2NjdXIgbXVsdGlwbGUgdGltZXMgYXMgYSBwYXJlbnQgb2YgYW5vdGhlciAoZS5nLiBjb25zaWRlclxuICAgICAgIFttYXAyIG4xIG4xIH5mXSkuXG5cbiAgICAgICBUaGlzIHJlcHJlc2VudGF0aW9uIGlzIG9wdGltaXplZCBmb3IgdGhlIG92ZXJ3aGVsbWluZ2x5IGNvbW1vbiBjYXNlIHRoYXQgYSBub2RlIGhhc1xuICAgICAgIG9ubHkgb25lIHBhcmVudC4gKilcbiAgICBtdXRhYmxlIG51bV9wYXJlbnRzIDogaW50XG4gIDsgbXV0YWJsZSBwYXJlbnQxX2FuZF9iZXlvbmQgOiBQYWNrZWQudCBVb3B0LnQgVW5pZm9ybV9hcnJheS50XG4gIDsgbXV0YWJsZSBwYXJlbnQwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2NyZWF0ZWRfaW5dIGlzIGluaXRpYWxseSB0aGUgc2NvcGUgdGhhdCB0aGUgbm9kZSBpcyBjcmVhdGVkIGluLiAgSWYgYSBub2RlIGlzXG4gICAgICAgbGF0ZXIgXCJyZXNjb3BlZFwiLCB0aGVuIGNyZWF0ZWRfaW4gd2lsbCBiZSBhZGp1c3RlZCB0byB0aGUgbmV3IHNjb3BlIHRoYXQgdGhlIG5vZGVcbiAgICAgICBpcyBwYXJ0IG9mLiAqKVxuICAgIG11dGFibGUgY3JlYXRlZF9pbiA6IFNjb3BlLnRcbiAgOyAoKiBbbmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdIHNpbmdseSBsaW5rcyBhbGwgbm9kZXMgY3JlYXRlZCBpbiBbdC5jcmVhdGVkX2luXS4gKilcbiAgICBtdXRhYmxlIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF0gaXMgdXNlZCB0byB2aXNpdCBub2RlcyBpbiB0b3BvbG9naWNhbCBvcmRlci4gIElmIFtpc19uZWNlc3NhcnkgdF0sIHRoZW5cbiAgICAgICBbaGVpZ2h0ID4gYy5oZWlnaHRdIGZvciBhbGwgY2hpbGRyZW4gW2NdIG9mIFt0XSwgYW5kIFtoZWlnaHQgPiBTY29wZS5oZWlnaHRcbiAgICAgICB0LmNyZWF0ZWRfaW5dLiAgSWYgW25vdCAoaXNfbmVjZXNzYXJ5IHQpXSwgdGhlbiBbaGVpZ2h0ID0gLTFdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0IDogaW50XG4gIDsgKCogW2hlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0gaXMgdGhlIGhlaWdodCBhdCB3aGljaCBbdF0gaXMgc3RvcmVkIGluIHRoZSByZWNvbXB1dGVcbiAgICAgICBoZWFwLCBhbmQgaXMgbm9uLW5lZ2F0aXZlIGlmZiBbdF0gaXMgaW4gdGhlIHJlY29tcHV0ZSBoZWFwLiAgSWYgW3RdIGlzIHRoZVxuICAgICAgIHJlY29tcHV0ZSBoZWFwLCB0aGVuIHR5cGljYWxseSBbdC5oZWlnaHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF07IGhvd2V2ZXIsXG4gICAgICAgd2hpbGUgaGVpZ2h0IGlzIGJlaW5nIGFkanVzdGVkLCBvbmUgY2FuIHRlbXBvcmFyaWx5IGhhdmUgW3QuaGVpZ2h0ID5cbiAgICAgICB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcF0uICBXaGVuIGhlaWdodCBhZGp1c3RtZW50IGZpbmlzaGVzLCBlcXVhbGl0eSBpcyByZXN0b3JlZFxuICAgICAgIGJ5IGluY3JlYXNpbmcgW3QuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwXSB0byBbdC5oZWlnaHRdIGFuZCBzaGlmdGluZyBbdF0nc1xuICAgICAgIHBvc2l0aW9uIGluIHRoZSByZWNvbXB1dGUgaGVhcC4gKilcbiAgICBtdXRhYmxlIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA6IGludFxuICA7ICgqIFtwcmV2X2luX3JlY29tcHV0ZV9oZWFwXSBhbmQgW25leHRfaW5fcmVjb21wdXRlX2hlYXBdIGRvdWJseSBsaW5rIGFsbCBub2RlcyBvZiB0aGVcbiAgICAgICBzYW1lIGhlaWdodCBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICopXG4gICAgbXV0YWJsZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgbXV0YWJsZSBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW2hlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBpcyB1c2VkIG9ubHkgZHVyaW5nIGhlaWdodCBhZGp1c3RtZW50LCBhbmQgaXNcbiAgICAgICBub24tbmVnYXRpdmUgaWZmIFt0XSBpcyBpbiB0aGUgYWRqdXN0LWhlaWdodHMgaGVhcC4gIEl0IGhvbGRzIHRoZSBwcmUtYWRqdXN0ZWRcbiAgICAgICBoZWlnaHQgb2YgW3RdLiAqKVxuICAgIG11dGFibGUgaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgOiBpbnRcbiAgOyAoKiBbbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwXSBzaW5nbHkgbGlua3MgYWxsIG5vZGVzIG9mIHRoZSBzYW1lIGhlaWdodCBpbiB0aGVcbiAgICAgICBhZGp1c3QtaGVpZ2h0cyBoZWFwLiAqKVxuICAgIG11dGFibGUgbmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50XG4gIDsgKCogW29sZF92YWx1ZV9vcHRdIGlzIHVzZWQgb25seSBkdXJpbmcgc3RhYmlsaXphdGlvbiwgYW5kIG9ubHkgaWZcbiAgICAgICBbdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMF0uICBJdCBob2xkcyB0aGUgcHJlLXN0YWJpbGl6YXRpb24gdmFsdWUgb2YgW3RdLiAgSXRcbiAgICAgICBpcyBjbGVhcmVkIHdoZW4gcnVubmluZyBbdF0ncyBvbi11cGRhdGUgaGFuZGxlcnMsIGFuZCBzbyBpcyBhbHdheXMgW1VvcHQubm9uZV1cbiAgICAgICBiZXR3ZWVuIHN0YWJpbGl6YXRpb25zLiAqKVxuICAgIG11dGFibGUgb2xkX3ZhbHVlX29wdCA6ICdhIFVvcHQudFxuICA7ICgqIFtvYnNlcnZlcnNdIGlzIHRoZSBoZWFkIG9mIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2Ygb2JzZXJ2ZXJzIG9mIFt0XSwgb3JcbiAgICAgICBbVW9wdC5ub25lXSBpZiB0aGVyZSBhcmUgbm8gb2JzZXJ2ZXJzLiAqKVxuICAgIG11dGFibGUgb2JzZXJ2ZXJzIDogKCdhIEludGVybmFsX29ic2VydmVyLnRbQHNleHAub3BhcXVlXSkgVW9wdC50XG4gIDsgKCogW2lzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSBpcyB1c2VkIHRvIGF2b2lkIHB1c2hpbmcgdGhlIHNhbWUgbm9kZSBtdWx0aXBsZVxuICAgICAgIHRpbWVzIG9udG8gW3N0YXRlLmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXS4gKilcbiAgICBtdXRhYmxlIGlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDogYm9vbFxuICA7ICgqIFtvbl91cGRhdGVfaGFuZGxlcnNdIGlzIHRoZSBmdW5jdGlvbnMgc3VwcGxpZWQgdG8gW0luY3JlbWVudGFsLm9uX3VwZGF0ZV0gdG8gYmUgcnVuXG4gICAgICAgYXMgZGVzY3JpYmVkIGluIHRoZSBtb2R1bGUgW09uX3VwZGF0ZV9oYW5kbGVyXS4gIFtvbl91cGRhdGVfaGFuZGxlcnNdIGRvZXMgbm90XG4gICAgICAgY29udGFpbiB0aGUgb24tdXBkYXRlIGhhbmRsZXJzIGluIFt0Lm9ic2VydmVyc10uICBbb25fdXBkYXRlX2hhbmRsZXJzXSBvbmx5IGV2ZXJcbiAgICAgICBnZXRzIGxvbmdlcjsgdGhlcmUgaXMgbm8gd2F5IHRvIHJlbW92ZSBlbGVtZW50cy4gKilcbiAgICBtdXRhYmxlIG9uX3VwZGF0ZV9oYW5kbGVycyA6ICdhIE9uX3VwZGF0ZV9oYW5kbGVyLnQgbGlzdFxuICA7IG11dGFibGUgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4IDogaW50IGFycmF5XG4gIDsgbXV0YWJsZSBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXggOiBpbnQgYXJyYXlcbiAgOyBtdXRhYmxlIGZvcmNlX25lY2Vzc2FyeSA6IGJvb2xcbiAgOyBtdXRhYmxlIHVzZXJfaW5mbyA6IERvdF91c2VyX2luZm8udCBvcHRpb25cbiAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgOiBCYWNrdHJhY2UudCBvcHRpb25cbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgc2FtZSAodDEgOiBfIHQpICh0MiA6IF8gdCkgPSBwaHlzX3NhbWUgdDEgdDJcbmxldCBwYWNrZWRfc2FtZSAoUGFja2VkLlQgdDEpIChQYWNrZWQuVCB0MikgPSBzYW1lIHQxIHQyXG5sZXQgaXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3NhcnlcbmxldCBpbml0aWFsX251bV9jaGlsZHJlbiB0ID0gS2luZC5pbml0aWFsX251bV9jaGlsZHJlbiB0LmtpbmRcbmxldCBpdGVyaV9jaGlsZHJlbiB0IH5mID0gS2luZC5pdGVyaV9jaGlsZHJlbiB0LmtpbmQgfmZcbmxldCBpc192YWxpZCA9IE5vZGUuaXNfdmFsaWRcbmxldCB0eXBlX2VxdWFsX2lmX3BoeXNfc2FtZSA9IHR5cGVfZXF1YWxfaWZfcGh5c19zYW1lXG5cbmxldCB1c2VyX2luZm8gdCA9XG4gIG1hdGNoIHQudXNlcl9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChJbmZvIGkpIC0+IFNvbWUgaVxuICB8IFNvbWUgb3RoZXIgLT4gU29tZSAoSW5mby5jcmVhdGVfcyAoRG90X3VzZXJfaW5mby5zZXhwX29mX3Qgb3RoZXIpKVxuOztcblxubGV0IHNldF91c2VyX2luZm8gdCBpbmZvID1cbiAgdC51c2VyX2luZm9cbiAgPC0gKG1hdGNoIGluZm8gd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGkgLT4gU29tZSAoSW5mbyBpKSlcbjs7XG5cbmxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IHQgfmxhYmVsIH5hdHRycyA9XG4gIGxldCBuZXdfID0gRG90X3VzZXJfaW5mby5kb3QgfmxhYmVsIH5hdHRyaWJ1dGVzOmF0dHJzIGluXG4gIHQudXNlcl9pbmZvXG4gIDwtIChtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgbmV3X1xuICAgIHwgU29tZSBvdGhlciAtPiBTb21lIChEb3RfdXNlcl9pbmZvLmFwcGVuZCBvdGhlciBuZXdfKSlcbjs7XG5cbmxldCBlZGdlX2lzX3N0YWxlIH5jaGlsZCB+cGFyZW50ID1cbiAgU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBjaGlsZC5jaGFuZ2VkX2F0IHBhcmVudC5yZWNvbXB1dGVkX2F0ID4gMFxuOztcblxubGV0IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHQgPVxuICBsZXQgaXNfc3RhbGUgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgaWYgZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudDp0IHRoZW4gaXNfc3RhbGUgOj0gdHJ1ZSk7XG4gICFpc19zdGFsZVxuOztcblxubGV0IGlzX3N0YWxlIDogdHlwZSBhLiBhIHQgLT4gYm9vbCA9XG4gIGZ1biAodCA6IGEgdCkgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAoKiBBIGNvbnN0IG5vZGUgaXMgc3RhbGUgb25seSBhdCBpbml0aWFsaXphdGlvbi4gKilcbiAgfCBDb25zdCBfIC0+IFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0XG4gICgqIFRpbWUtYmFzZWQgbm9kZXMgYXJlIGNvbnNpZGVyZWQgc3RhbGUgd2hlbiBbdC5yZWNvbXB1dGVkX2F0XSBpcyBub25lLCB3aGljaCBoYXBwZW5zXG4gICAgIGF0IGluaXRpYWxpemF0aW9uIGFuZCB3aGVuIHRoZSBhbGFybSBtZWNoYW5pc20gbWFrZXMgYSBub2RlIHN0YWxlIChpdCBzZXRzIHRoZVxuICAgICBbdC5yZWNvbXB1dGVkX2F0XSB0byBbU3RhYmlsaXphdGlvbl9udW0ubm9uZV0pLiAqKVxuICB8IEF0IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgfCBBdF9pbnRlcnZhbHMgXyAtPiBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICB8IFNuYXBzaG90IF8gLT4gU3RhYmlsaXphdGlvbl9udW0uaXNfbm9uZSB0LnJlY29tcHV0ZWRfYXRcbiAgKCogV2UgbmV2ZXIgY29uc2lkZXIgYW4gaW52YWxpZGF0ZWQgbm9kZSB0byBiZSBzdGFsZSAtLSB3aGVuIHdlIGludmFsaWRhdGUgYSBub2RlLCB3ZVxuICAgICBpbW1lZGlhdGVseSBwcm9wYWdhdGUgaW52YWxpZGl0eSB0byBpdHMgYW5jZXN0b3JzLiAqKVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogQSBbVmFyXSBub2RlIGlzIHN0YWxlIGlmIGl0IHdhcyBzZXQgc2luY2UgaXQgd2FzIHJlY29tcHV0ZWQuICopXG4gIHwgVmFyIHsgc2V0X2F0OyBfIH0gLT4gU3RhYmlsaXphdGlvbl9udW0uY29tcGFyZSBzZXRfYXQgdC5yZWNvbXB1dGVkX2F0ID4gMFxuICAoKiBOb2RlcyB0aGF0IGhhdmUgY2hpbGRyZW4uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIF8gLT5cbiAgICBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdCB8fCBpc19zdGFsZV93aXRoX3Jlc3BlY3RfdG9fYV9jaGlsZCB0XG4gIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBKb2luX2xoc19jaGFuZ2UgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBCaW5kX21haW4gX1xuICB8IEZyZWV6ZSBfXG4gIHwgSWZfdGhlbl9lbHNlIF9cbiAgfCBKb2luX21haW4gX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPlxuICAgIFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgdC5yZWNvbXB1dGVkX2F0IHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbiAgfCBFeHBlcnQgeyBmb3JjZV9zdGFsZTsgXyB9IC0+XG4gICAgZm9yY2Vfc3RhbGVcbiAgICB8fCBTdGFiaWxpemF0aW9uX251bS5pc19ub25lIHQucmVjb21wdXRlZF9hdFxuICAgIHx8IGlzX3N0YWxlX3dpdGhfcmVzcGVjdF90b19hX2NoaWxkIHRcbjs7XG5cbmxldCBuZWVkc190b19iZV9jb21wdXRlZCB0ID0gaXNfbmVjZXNzYXJ5IHQgJiYgaXNfc3RhbGUgdFxubGV0IGlzX2luX3JlY29tcHV0ZV9oZWFwIHQgPSB0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAwXG5sZXQgaXNfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCB0ID0gdC5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG5cbmxldCBnZXRfcGFyZW50IHQgfmluZGV4ID1cbiAgVW9wdC52YWx1ZV9leG5cbiAgICAoaWYgaW5kZXggPSAwIHRoZW4gdC5wYXJlbnQwIGVsc2UgVW5pZm9ybV9hcnJheS5nZXQgdC5wYXJlbnQxX2FuZF9iZXlvbmQgKGluZGV4IC0gMSkpXG47O1xuXG5sZXQgaXRlcmlfcGFyZW50cyB0IH5mID1cbiAgaWYgdC5udW1fcGFyZW50cyA+IDBcbiAgdGhlbiAoXG4gICAgZiAwIChVb3B0LnZhbHVlX2V4biB0LnBhcmVudDApO1xuICAgIGZvciBpbmRleCA9IDEgdG8gdC5udW1fcGFyZW50cyAtIDEgZG9cbiAgICAgIGYgaW5kZXggKFVvcHQudmFsdWVfZXhuIChVbmlmb3JtX2FycmF5LmdldCB0LnBhcmVudDFfYW5kX2JleW9uZCAoaW5kZXggLSAxKSkpXG4gICAgZG9uZSlcbjs7XG5cbmxldCBoYXNfY2hpbGQgdCB+Y2hpbGQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBfIChUIGNoaWxkJykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBjaGlsZCBjaGlsZCcpO1xuICAhaGFzXG47O1xuXG5sZXQgaGFzX2ludmFsaWRfY2hpbGQgdCA9XG4gIGxldCBoYXMgPSByZWYgZmFsc2UgaW5cbiAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+IGhhcyA6PSAhaGFzIHx8IG5vdCAoaXNfdmFsaWQgY2hpbGQpKTtcbiAgIWhhc1xuOztcblxubGV0IGhhc19wYXJlbnQgKHQgOiBfIHQpIH5wYXJlbnQgPVxuICBsZXQgaGFzID0gcmVmIGZhbHNlIGluXG4gIGl0ZXJpX3BhcmVudHMgdCB+ZjooZnVuIF8gKFQgcGFyZW50JykgLT4gaGFzIDo9ICFoYXMgfHwgc2FtZSBwYXJlbnQgcGFyZW50Jyk7XG4gICFoYXNcbjs7XG5cbmxldCBzaG91bGRfYmVfaW52YWxpZGF0ZWQgOiB0eXBlIGEuIGEgdCAtPiBib29sID1cbiAgZnVuIHQgLT5cbiAgbWF0Y2ggdC5raW5kIHdpdGhcbiAgKCogbm9kZXMgd2l0aCBubyBjaGlsZHJlbiAqKVxuICB8IFVuaW5pdGlhbGl6ZWQgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQXQgXyAtPiBmYWxzZVxuICB8IEF0X2ludGVydmFscyBfIC0+IGZhbHNlXG4gIHwgQ29uc3QgXyB8IFNuYXBzaG90IF8gfCBWYXIgXyAtPiBmYWxzZVxuICB8IEludmFsaWQgLT4gZmFsc2VcbiAgKCogTm9kZXMgd2l0aCBhIGZpeGVkIHNldCBvZiBjaGlsZHJlbiBhcmUgaW52YWxpZCBpZiBhbnkgY2hpbGQgaXMgaW52YWxpZC4gKilcbiAgfCBBcnJheV9mb2xkIF9cbiAgfCBGcmVlemUgX1xuICB8IE1hcCBfXG4gIHwgTWFwMiBfXG4gIHwgTWFwMyBfXG4gIHwgTWFwNCBfXG4gIHwgTWFwNSBfXG4gIHwgTWFwNiBfXG4gIHwgTWFwNyBfXG4gIHwgTWFwOCBfXG4gIHwgTWFwOSBfXG4gIHwgTWFwMTAgX1xuICB8IE1hcDExIF9cbiAgfCBNYXAxMiBfXG4gIHwgTWFwMTMgX1xuICB8IE1hcDE0IF9cbiAgfCBNYXAxNSBfXG4gIHwgU3RlcF9mdW5jdGlvbiBfXG4gIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgXyAtPiBoYXNfaW52YWxpZF9jaGlsZCB0XG4gICgqIEEgKl9jaGFuZ2Ugbm9kZSBpcyBpbnZhbGlkIGlmIHRoZSBub2RlIGl0IGlzIHdhdGNoaW5nIGZvciBjaGFuZ2VzIGlzIGludmFsaWQgKHNhbWVcbiAgICAgcmVhc29uIGFzIGFib3ZlKS4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBbaGFzX2ludmFsaWRfY2hpbGQgdF0uICopXG4gIHwgQmluZF9saHNfY2hhbmdlIHsgbGhzOyBfIH0gLT4gbm90IChpc192YWxpZCBsaHMpXG4gIHwgSWZfdGVzdF9jaGFuZ2UgeyB0ZXN0OyBfIH0gLT4gbm90IChpc192YWxpZCB0ZXN0KVxuICB8IEpvaW5fbGhzX2NoYW5nZSB7IGxoczsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzKVxuICAoKiBbQmluZF9tYWluXSwgW0lmX3RoZW5fZWxzZV0sIGFuZCBbSm9pbl9tYWluXSBhcmUgaW52YWxpZCBpZiB0aGVpciAqX2NoYW5nZSBjaGlsZCBpcyxcbiAgICAgYnV0IG5vdCBuZWNlc3NhcmlseSBpZiB0aGVpciBvdGhlciBjaGlsZHJlbiBhcmUgLS0gdGhlIGdyYXBoIG1heSBiZSByZXN0cnVjdHVyZWQgdG9cbiAgICAgYXZvaWQgdGhlIGludmFsaWRpdHkgb2YgdGhvc2UuICopXG4gIHwgQmluZF9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBJZl90aGVuX2Vsc2UgeyB0ZXN0X2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgdGVzdF9jaGFuZ2UpXG4gIHwgSm9pbl9tYWluIHsgbGhzX2NoYW5nZTsgXyB9IC0+IG5vdCAoaXNfdmFsaWQgbGhzX2NoYW5nZSlcbiAgfCBFeHBlcnQgXyAtPlxuICAgICgqIFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IHdlIGRvIGZvciBiaW5kIGFib3ZlLCBleGNlcHQgdGhhdCBhbnkgaW52YWxpZCBjaGlsZCBjYW4gYmVcbiAgICAgICByZW1vdmVkLCBzbyB3ZSBjYW4gb25seSB0ZWxsIGlmIGFuIGV4cGVydCBub2RlIGJlY29tZXMgaW52YWxpZCB3aGVuIGFsbCBpdHNcbiAgICAgICBkZXBlbmRlbmNpZXMgaGF2ZSBmaXJlZCAod2hpY2ggaW4gcHJhY3RpY2UgbWVhbnMgd2hlbiB3ZSBhcmUgYWJvdXQgdG8gcnVuIGl0KS4gKilcbiAgICBmYWxzZVxuOztcblxubGV0IGZvbGRfb2JzZXJ2ZXJzICh0IDogXyB0KSB+aW5pdCB+ZiA9XG4gIGxldCByID0gcmVmIHQub2JzZXJ2ZXJzIGluXG4gIGxldCBhYyA9IHJlZiBpbml0IGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudmFsdWVfZXhuICFyIGluXG4gICAgciA6PSBvYnNlcnZlci5uZXh0X2luX29ic2VydmluZztcbiAgICBhYyA6PSBmICFhYyBvYnNlcnZlclxuICBkb25lO1xuICAhYWNcbjs7XG5cbmxldCBpdGVyX29ic2VydmVycyB0IH5mID0gZm9sZF9vYnNlcnZlcnMgdCB+aW5pdDooKSB+ZjooZnVuICgpIG9ic2VydmVyIC0+IGYgb2JzZXJ2ZXIpXG5cbmxldCBpbnZhcmlhbnQgKHR5cGUgYSkgKGludmFyaWFudF9hIDogYSAtPiB1bml0KSAodCA6IGEgdCkgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IF8gdF0gKGZ1biAoKSAtPlxuICAgIFsldGVzdF9lcTogYm9vbF0gKG5lZWRzX3RvX2JlX2NvbXB1dGVkIHQpIChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KTtcbiAgICBpZiBpc19uZWNlc3NhcnkgdFxuICAgIHRoZW4gKFxuICAgICAgYXNzZXJ0ICh0LmhlaWdodCA+IFNjb3BlLmhlaWdodCB0LmNyZWF0ZWRfaW4pO1xuICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgY2hpbGQpIC0+XG4gICAgICAgIGFzc2VydCAodC5oZWlnaHQgPiBjaGlsZC5oZWlnaHQpO1xuICAgICAgICBhc3NlcnQgKGhhc19wYXJlbnQgY2hpbGQgfnBhcmVudDp0KSk7XG4gICAgICBhc3NlcnQgKG5vdCAoc2hvdWxkX2JlX2ludmFsaWRhdGVkIHQpKSk7XG4gICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gXyAoVCBwYXJlbnQpIC0+XG4gICAgICBhc3NlcnQgKGhhc19jaGlsZCBwYXJlbnQgfmNoaWxkOnQpO1xuICAgICAgYXNzZXJ0IChpc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgICAgIGFzc2VydCAodC5oZWlnaHQgPCBwYXJlbnQuaGVpZ2h0KSk7XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5pZDooY2hlY2sgTm9kZV9pZC5pbnZhcmlhbnQpXG4gICAgICB+c3RhdGU6aWdub3JlXG4gICAgICB+cmVjb21wdXRlZF9hdDooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgfnZhbHVlX29wdDpcbiAgICAgICAgKGNoZWNrIChmdW4gdmFsdWVfb3B0IC0+XG4gICAgICAgICAgIGlmIGlzX3ZhbGlkIHQgJiYgbm90IChpc19zdGFsZSB0KSB0aGVuIGFzc2VydCAoVW9wdC5pc19zb21lIHZhbHVlX29wdCk7XG4gICAgICAgICAgIFVvcHQuaW52YXJpYW50IGludmFyaWFudF9hIHZhbHVlX29wdCkpXG4gICAgICB+a2luZDpcbiAgICAgICAgKGNoZWNrIChmdW4ga2luZCAtPlxuICAgICAgICAgICBLaW5kLmludmFyaWFudCBpbnZhcmlhbnRfYSBraW5kO1xuICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgfCBFeHBlcnQgZSAtPlxuICAgICAgICAgICAgIEV4cGVydC5pbnZhcmlhbnRfYWJvdXRfbnVtX2ludmFsaWRfY2hpbGRyZW5cbiAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgIH5pc19uZWNlc3Nhcnk6KGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB8IF8gLT4gKCkpKVxuICAgICAgfmN1dG9mZjooY2hlY2sgKEN1dG9mZi5pbnZhcmlhbnQgaW52YXJpYW50X2EpKVxuICAgICAgfmNoYW5nZWRfYXQ6XG4gICAgICAgIChjaGVjayAoZnVuIGNoYW5nZWRfYXQgLT5cbiAgICAgICAgICAgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50IGNoYW5nZWRfYXQ7XG4gICAgICAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmlzX3NvbWUgdC5yZWNvbXB1dGVkX2F0XG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIGNoYW5nZWRfYXQgdC5yZWNvbXB1dGVkX2F0IDw9IDApKSlcbiAgICAgIH5udW1fb25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgKFsldGVzdF9yZXN1bHQ6IGludF1cbiAgICAgICAgICAgICAgfmV4cGVjdDpcbiAgICAgICAgICAgICAgICAoTGlzdC5sZW5ndGggdC5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgICAgICAgICAgICAgKyBmb2xkX29ic2VydmVycyB0IH5pbml0OjAgfmY6KGZ1biBuIHsgb25fdXBkYXRlX2hhbmRsZXJzOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgICBuICsgTGlzdC5sZW5ndGggb25fdXBkYXRlX2hhbmRsZXJzKSkpKVxuICAgICAgfm51bV9wYXJlbnRzOlxuICAgICAgICAoY2hlY2sgKGZ1biBudW1fcGFyZW50cyAtPlxuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG51bV9wYXJlbnRzIDw9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZCkpKVxuICAgICAgfnBhcmVudDFfYW5kX2JleW9uZDpcbiAgICAgICAgKGNoZWNrIChmdW4gcGFyZW50MV9hbmRfYmV5b25kIC0+XG4gICAgICAgICAgIGZvciBwYXJlbnRfaW5kZXggPSAxIHRvIFVuaWZvcm1fYXJyYXkubGVuZ3RoIHBhcmVudDFfYW5kX2JleW9uZCBkb1xuICAgICAgICAgICAgIFsldGVzdF9lcTogYm9vbF1cbiAgICAgICAgICAgICAgIChwYXJlbnRfaW5kZXggPCB0Lm51bV9wYXJlbnRzKVxuICAgICAgICAgICAgICAgKFVvcHQuaXNfc29tZVxuICAgICAgICAgICAgICAgICAgKFVuaWZvcm1fYXJyYXkuZ2V0IHBhcmVudDFfYW5kX2JleW9uZCAocGFyZW50X2luZGV4IC0gMSkpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5wYXJlbnQwOlxuICAgICAgICAoY2hlY2sgKGZ1biBwYXJlbnQwIC0+XG4gICAgICAgICAgIFsldGVzdF9lcTogYm9vbF0gKHQubnVtX3BhcmVudHMgPiAwKSAoVW9wdC5pc19zb21lIHBhcmVudDApKSlcbiAgICAgIH5jcmVhdGVkX2luOihjaGVjayBTY29wZS5pbnZhcmlhbnQpXG4gICAgICB+bmV4dF9ub2RlX2luX3NhbWVfc2NvcGU6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIC0+XG4gICAgICAgICAgIGlmIFNjb3BlLmlzX3RvcCB0LmNyZWF0ZWRfaW4gfHwgbm90IChpc192YWxpZCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlKSkpXG4gICAgICB+aGVpZ2h0OlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHQgLT5cbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHQgdGhlbiBhc3NlcnQgKGhlaWdodCA+PSAwKSBlbHNlIGFzc2VydCAoaGVpZ2h0ID0gLTEpKSlcbiAgICAgIH5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXA6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA+PSAtMSk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDw9IHQuaGVpZ2h0KSkpXG4gICAgICB+cHJldl9pbl9yZWNvbXB1dGVfaGVhcDpcbiAgICAgICAgKGNoZWNrIChmdW4gKHByZXZfaW5fcmVjb21wdXRlX2hlYXAgOiBQYWNrZWQudCBVb3B0LnQpIC0+XG4gICAgICAgICAgIGlmIG5vdCAoaXNfaW5fcmVjb21wdXRlX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBwcmV2X2luX3JlY29tcHV0ZV9oZWFwKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fcmVjb21wdXRlX2hlYXBcbiAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0IChUIHByZXYpID0gVW9wdC52YWx1ZV9leG4gcHJldl9pbl9yZWNvbXB1dGVfaGVhcCBpblxuICAgICAgICAgICAgIGFzc2VydCAocGFja2VkX3NhbWUgKFQgdCkgKFVvcHQudmFsdWVfZXhuIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCkpO1xuICAgICAgICAgICAgIGFzc2VydCAodC5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBwcmV2LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCkpKSlcbiAgICAgIH5uZXh0X2luX3JlY29tcHV0ZV9oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA6IFBhY2tlZC50IFVvcHQudCkgLT5cbiAgICAgICAgICAgaWYgbm90IChpc19pbl9yZWNvbXB1dGVfaGVhcCB0KVxuICAgICAgICAgICB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5leHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgICAgICAgICBpZiBVb3B0LmlzX3NvbWUgbmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gICAgICAgICAgICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCB0KSAoVW9wdC52YWx1ZV9leG4gbmV4dC5wcmV2X2luX3JlY29tcHV0ZV9oZWFwKSk7XG4gICAgICAgICAgICAgYXNzZXJ0ICh0LmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA9IG5leHQuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwKSkpKVxuICAgICAgfmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICBpZiBoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA+PSAwXG4gICAgICAgICAgIHRoZW4gYXNzZXJ0IChoZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8IHQuaGVpZ2h0KSkpXG4gICAgICB+bmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwOlxuICAgICAgICAoY2hlY2sgKGZ1biAobmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDogUGFja2VkLnQgVW9wdC50KSAtPlxuICAgICAgICAgICBpZiBub3QgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgdClcbiAgICAgICAgICAgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXApXG4gICAgICAgICAgIGVsc2UgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcFxuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKFQgbmV4dCkgPSBVb3B0LnZhbHVlX2V4biBuZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgaW5cbiAgICAgICAgICAgICBhc3NlcnQgKGlzX2luX2FkanVzdF9oZWlnaHRzX2hlYXAgbmV4dCk7XG4gICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgIHQuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPSBuZXh0LmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICAgICAgfm9sZF92YWx1ZV9vcHQ6KGNoZWNrIChVb3B0LmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b2JzZXJ2ZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBfIC0+XG4gICAgICAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biB7IHN0YXRlOyBvYnNlcnZpbmc7IF8gfSAtPlxuICAgICAgICAgICAgIGFzc2VydCAocGh5c19lcXVhbCB0IG9ic2VydmluZyk7XG4gICAgICAgICAgICAgbWF0Y2ggc3RhdGUgd2l0aFxuICAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgIHwgQ3JlYXRlZCB8IFVubGlua2VkIC0+IGFzc2VydCBmYWxzZSkpKVxuICAgICAgfmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uOmlnbm9yZVxuICAgICAgfm9uX3VwZGF0ZV9oYW5kbGVyczppZ25vcmVcbiAgICAgIH51c2VyX2luZm86aWdub3JlXG4gICAgICB+bXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4OlxuICAgICAgICAoY2hlY2sgKGZ1biBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggLT5cbiAgICAgICAgICAgKG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgICAgICB8IEV4cGVydCBfIC0+ICgpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgWyV0ZXN0X3Jlc3VsdDogaW50XVxuICAgICAgICAgICAgICAgIChBcnJheS5sZW5ndGggbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4KVxuICAgICAgICAgICAgICAgIH5leHBlY3Q6KGluaXRpYWxfbnVtX2NoaWxkcmVuIHQpKTtcbiAgICAgICAgICAgaWYgaXNfbmVjZXNzYXJ5IHRcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIGl0ZXJpX2NoaWxkcmVuIHQgfmY6KGZ1biBjaGlsZF9pbmRleCAoVCBjaGlsZCkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAoXG4gICAgICAgICAgICAgICAgIHBhY2tlZF9zYW1lXG4gICAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgICAoZ2V0X3BhcmVudFxuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkXG4gICAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpKSkpO1xuICAgICAgICAgICBpZiBkZWJ1ZyAmJiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgQXJyYXkuaXRlciBteV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggfmY6KGZ1biB4IC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKHggPSAtMSkpKSlcbiAgICAgIH5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXg6XG4gICAgICAgIChjaGVjayAoZnVuIG15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCAtPlxuICAgICAgICAgICBbJXRlc3RfcmVzdWx0OiBpbnRdXG4gICAgICAgICAgICAgKEFycmF5Lmxlbmd0aCBteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXgpXG4gICAgICAgICAgICAgfmV4cGVjdDooVW5pZm9ybV9hcnJheS5sZW5ndGggdC5wYXJlbnQxX2FuZF9iZXlvbmQgKyAxKTtcbiAgICAgICAgICAgaXRlcmlfcGFyZW50cyB0IH5mOihmdW4gcGFyZW50X2luZGV4IChUIHBhcmVudCkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGFja2VkX3NhbWVcbiAgICAgICAgICAgICAgICAgKFQgdClcbiAgICAgICAgICAgICAgICAgKEtpbmQuc2xvd19nZXRfY2hpbGRcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50LmtpbmRcbiAgICAgICAgICAgICAgICAgICAgfmluZGV4Om15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSkpKTtcbiAgICAgICAgICAgaWYgZGVidWcgJiYgbm90IChpc19uZWNlc3NhcnkgdClcbiAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgIEFycmF5Lml0ZXIgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4IH5mOihmdW4geCAtPlxuICAgICAgICAgICAgICAgYXNzZXJ0ICh4ID0gLTEpKSkpXG4gICAgICB+Zm9yY2VfbmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgfmNyZWF0aW9uX2JhY2t0cmFjZTppZ25vcmUpXG47O1xuXG5sZXQgdW5zYWZlX3ZhbHVlIHQgPSBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuXG5sZXQgdmFsdWVfZXhuIHQgPVxuICBpZiBVb3B0LmlzX3NvbWUgdC52YWx1ZV9vcHRcbiAgdGhlbiBVb3B0LnVuc2FmZV92YWx1ZSB0LnZhbHVlX29wdFxuICBlbHNlIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiYXR0ZW1wdCB0byBnZXQgdmFsdWUgb2YgYW4gaW52YWxpZCBub2RlXCIgdCBbJXNleHBfb2Y6IF8gdF1cbjs7XG5cbmxldCBnZXRfY3V0b2ZmIHQgPSB0LmN1dG9mZlxubGV0IHNldF9jdXRvZmYgdCBjdXRvZmYgPSB0LmN1dG9mZiA8LSBjdXRvZmZcblxubGV0IGlzX2NvbnN0IHQgPVxuICBtYXRjaCB0LmtpbmQgd2l0aFxuICB8IENvbnN0IF8gLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2Vcbjs7XG5cbmxldCBvbl91cGRhdGUgdCBvbl91cGRhdGVfaGFuZGxlciA9XG4gIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICB0Lm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPC0gdC5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMVxuOztcblxubGV0IHJ1bl9vbl91cGRhdGVfaGFuZGxlcnMgdCBub2RlX3VwZGF0ZSB+bm93ID1cbiAgbGV0IHIgPSByZWYgdC5vbl91cGRhdGVfaGFuZGxlcnMgaW5cbiAgd2hpbGUgbm90IChMaXN0LmlzX2VtcHR5ICFyKSBkb1xuICAgIG1hdGNoICFyIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgb25fdXBkYXRlX2hhbmRsZXIgOjogcmVzdCAtPlxuICAgICAgciA6PSByZXN0O1xuICAgICAgT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgbGV0IHIgPSByZWYgdC5vYnNlcnZlcnMgaW5cbiAgd2hpbGUgVW9wdC5pc19zb21lICFyIGRvXG4gICAgbGV0IG9ic2VydmVyID0gVW9wdC52YWx1ZV9leG4gIXIgaW5cbiAgICByIDo9IG9ic2VydmVyLm5leHRfaW5fb2JzZXJ2aW5nO1xuICAgIGxldCByID0gcmVmIG9ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIHdoaWxlIG5vdCAoTGlzdC5pc19lbXB0eSAhcikgZG9cbiAgICAgIG1hdGNoICFyIHdpdGhcbiAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHJlc3QgLT5cbiAgICAgICAgciA6PSByZXN0O1xuICAgICAgICAoKiBXZSBoYXZlIHRvIHRlc3QgW3N0YXRlXSBiZWZvcmUgZWFjaCBvbi11cGRhdGUgaGFuZGxlciwgYmVjYXVzZSBhbiBvbi11cGRhdGVcbiAgICAgICAgICAgaGFuZGxlciBtaWdodCBkaXNhYmxlIGl0cyBvd24gb2JzZXJ2ZXIsIHdoaWNoIHNob3VsZCBwcmV2ZW50IG90aGVyIG9uLXVwZGF0ZVxuICAgICAgICAgICBoYW5kbGVycyBpbiB0aGUgc2FtZSBvYnNlcnZlciBmcm9tIHJ1bm5pbmcuICopXG4gICAgICAgIChtYXRjaCBvYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICB8IENyZWF0ZWQgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBJbl91c2UgLT4gT25fdXBkYXRlX2hhbmRsZXIucnVuIG9uX3VwZGF0ZV9oYW5kbGVyIG5vZGVfdXBkYXRlIH5ub3cpXG4gICAgZG9uZVxuICBkb25lXG47O1xuXG5sZXQgc2V0X2tpbmQgdCBraW5kID1cbiAgdC5raW5kIDwtIGtpbmQ7XG4gIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gIDwtIEFycmF5LmNyZWF0ZSB+bGVuOihLaW5kLmluaXRpYWxfbnVtX2NoaWxkcmVuIGtpbmQpICgtMSlcbjs7XG5cbmxldCBjcmVhdGUgc3RhdGUgY3JlYXRlZF9pbiBraW5kID1cbiAgbGV0IHQgPVxuICAgIHsgaWQgPSBOb2RlX2lkLm5leHQgKClcbiAgICA7IHN0YXRlXG4gICAgOyByZWNvbXB1dGVkX2F0ID0gU3RhYmlsaXphdGlvbl9udW0ubm9uZVxuICAgIDsgdmFsdWVfb3B0ID0gVW9wdC5ub25lXG4gICAgOyBraW5kXG4gICAgOyBjdXRvZmYgPSBDdXRvZmYucGh5c19lcXVhbFxuICAgIDsgY2hhbmdlZF9hdCA9IFN0YWJpbGl6YXRpb25fbnVtLm5vbmVcbiAgICA7IG51bV9vbl91cGRhdGVfaGFuZGxlcnMgPSAwXG4gICAgOyBudW1fcGFyZW50cyA9IDBcbiAgICA7IHBhcmVudDFfYW5kX2JleW9uZCA9IFVuaWZvcm1fYXJyYXkuZW1wdHlcbiAgICA7IHBhcmVudDAgPSBVb3B0Lm5vbmVcbiAgICA7IGNyZWF0ZWRfaW5cbiAgICA7IG5leHRfbm9kZV9pbl9zYW1lX3Njb3BlID0gVW9wdC5ub25lXG4gICAgOyBoZWlnaHQgPSAtMVxuICAgIDsgaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwID0gLTFcbiAgICA7IHByZXZfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fcmVjb21wdXRlX2hlYXAgPSBVb3B0Lm5vbmVcbiAgICA7IGhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgICA7IG5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA9IFVvcHQubm9uZVxuICAgIDsgb2xkX3ZhbHVlX29wdCA9IFVvcHQubm9uZVxuICAgIDsgb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBpc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IGZhbHNlXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgbXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4ID1cbiAgICAgICAgQXJyYXkuY3JlYXRlIH5sZW46KEtpbmQuaW5pdGlhbF9udW1fY2hpbGRyZW4ga2luZCkgKC0xKVxuICAgICgqIFtteV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXhdIGhhcyBvbmUgZWxlbWVudCBiZWNhdXNlIGl0IG1heSBuZWVkIHRvIGhvbGRcbiAgICAgICB0aGUgY2hpbGQgaW5kZXggb2YgW3BhcmVudDBdLiAqKVxuICAgIDsgbXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4ID0gW3wgLTEgfF1cbiAgICA7IGZvcmNlX25lY2Vzc2FyeSA9IGZhbHNlXG4gICAgOyB1c2VyX2luZm8gPSBOb25lXG4gICAgOyBjcmVhdGlvbl9iYWNrdHJhY2UgPVxuICAgICAgICAoaWYgc3RhdGUua2VlcF9ub2RlX2NyZWF0aW9uX2JhY2t0cmFjZSB0aGVuIFNvbWUgKEJhY2t0cmFjZS5nZXQgKCkpIGVsc2UgTm9uZSlcbiAgICB9XG4gIGluXG4gIFNjb3BlLmFkZF9ub2RlIGNyZWF0ZWRfaW4gdDtcbiAgKCogW2ludmFyaWFudF0gZG9lcyBub3QgeWV0IGhvbGQgaGVyZSBiZWNhdXNlIG1hbnkgdXNlcyBvZiBbTm9kZS5jcmVhdGVdIHVzZSBba2luZCA9XG4gICAgIFVuaW5pdGlhbGl6ZWRdLCBhbmQgdGhlbiBtdXRhdGUgW3Qua2luZF0gbGF0ZXIuICopXG4gIHRcbjs7XG5cbmxldCBtYXhfbnVtX3BhcmVudHMgdCA9IDEgKyBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0LnBhcmVudDFfYW5kX2JleW9uZFxuXG5sZXQgbWFrZV9zcGFjZV9mb3JfcGFyZW50X2lmX25lY2Vzc2FyeSB0ID1cbiAgaWYgdC5udW1fcGFyZW50cyA9IG1heF9udW1fcGFyZW50cyB0XG4gIHRoZW4gKFxuICAgIGxldCBuZXdfbWF4X251bV9wYXJlbnRzID0gMiAqIG1heF9udW1fcGFyZW50cyB0IGluXG4gICAgdC5wYXJlbnQxX2FuZF9iZXlvbmRcbiAgICA8LSBVbmlmb3JtX2FycmF5LnJlYWxsb2MgdC5wYXJlbnQxX2FuZF9iZXlvbmQgfmxlbjoobmV3X21heF9udW1fcGFyZW50cyAtIDEpO1xuICAgIHQubXlfY2hpbGRfaW5kZXhfaW5fcGFyZW50X2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX3BhcmVudHMgKC0xKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0ICh0Lm51bV9wYXJlbnRzIDwgbWF4X251bV9wYXJlbnRzIHQpXG47O1xuXG5sZXQgbWFrZV9zcGFjZV9mb3JfY2hpbGRfaWZfbmVjZXNzYXJ5IHQgfmNoaWxkX2luZGV4ID1cbiAgbGV0IG1heF9udW1fY2hpbGRyZW4gPSBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXggaW5cbiAgaWYgY2hpbGRfaW5kZXggPj0gbWF4X251bV9jaGlsZHJlblxuICB0aGVuIChcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPSBtYXhfbnVtX2NoaWxkcmVuKTtcbiAgICBsZXQgbmV3X21heF9udW1fY2hpbGRyZW4gPSBJbnQubWF4IDIgKDIgKiBtYXhfbnVtX2NoaWxkcmVuKSBpblxuICAgIHQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4XG4gICAgPC0gQXJyYXkucmVhbGxvYyB0Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleCB+bGVuOm5ld19tYXhfbnVtX2NoaWxkcmVuICgtMSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGRfaW5kZXggPCBBcnJheS5sZW5ndGggdC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXgpXG47O1xuXG5sZXQgc2V0X3BhcmVudCA6IHR5cGUgYS4gY2hpbGQ6YSB0IC0+IHBhcmVudDpQYWNrZWQudCBVb3B0LnQgLT4gcGFyZW50X2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgaWYgcGFyZW50X2luZGV4ID0gMFxuICB0aGVuIGNoaWxkLnBhcmVudDAgPC0gcGFyZW50XG4gIGVsc2UgVW5pZm9ybV9hcnJheS5zZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSBwYXJlbnRcbjs7XG5cbmxldCBsaW5rXG4gIDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBjaGlsZF9pbmRleDppbnQgLT4gcGFyZW50OmIgdCAtPiBwYXJlbnRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5jaGlsZF9pbmRleCB+cGFyZW50IH5wYXJlbnRfaW5kZXggLT5cbiAgc2V0X3BhcmVudCB+Y2hpbGQgfnBhcmVudDooVW9wdC5zb21lIChQYWNrZWQuVCBwYXJlbnQpKSB+cGFyZW50X2luZGV4O1xuICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gY2hpbGRfaW5kZXg7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4KSA8LSBwYXJlbnRfaW5kZXhcbjs7XG5cbmxldCB1bmxpbmtcbiAgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IGNoaWxkX2luZGV4OmludCAtPiBwYXJlbnQ6YiB0IC0+IHBhcmVudF9pbmRleDppbnQgLT4gdW5pdFxuICA9XG4gIGZ1biB+Y2hpbGQgfmNoaWxkX2luZGV4IH5wYXJlbnQgfnBhcmVudF9pbmRleCAtPlxuICBzZXRfcGFyZW50IH5jaGlsZCB+cGFyZW50OlVvcHQubm9uZSB+cGFyZW50X2luZGV4O1xuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBjaGlsZC5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleCkgPC0gLTE7XG4gICAgcGFyZW50Lm15X3BhcmVudF9pbmRleF9pbl9jaGlsZF9hdF9pbmRleC4oY2hpbGRfaW5kZXgpIDwtIC0xKVxuOztcblxubGV0IGFkZF9wYXJlbnQgOiB0eXBlIGEgYi4gY2hpbGQ6YSB0IC0+IHBhcmVudDpiIHQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIG1ha2Vfc3BhY2VfZm9yX3BhcmVudF9pZl9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1ha2Vfc3BhY2VfZm9yX2NoaWxkX2lmX25lY2Vzc2FyeSBwYXJlbnQgfmNoaWxkX2luZGV4O1xuICBsaW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4OmNoaWxkLm51bV9wYXJlbnRzO1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyArIDFcbjs7XG5cbmxldCByZW1vdmVfcGFyZW50IDogdHlwZSBhIGIuIGNoaWxkOmEgdCAtPiBwYXJlbnQ6YiB0IC0+IGNoaWxkX2luZGV4OmludCAtPiB1bml0ID1cbiAgZnVuIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleCAtPlxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoY2hpbGQubnVtX3BhcmVudHMgPj0gMSk7XG4gIGxldCBwYXJlbnRfaW5kZXggPSBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleCkgaW5cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIHBhcmVudCkgKGdldF9wYXJlbnQgY2hpbGQgfmluZGV4OnBhcmVudF9pbmRleCkpO1xuICBsZXQgbGFzdF9wYXJlbnRfaW5kZXggPSBjaGlsZC5udW1fcGFyZW50cyAtIDEgaW5cbiAgaWYgcGFyZW50X2luZGV4IDwgbGFzdF9wYXJlbnRfaW5kZXhcbiAgdGhlbiAoXG4gICAgbGV0IChUIHBhcmVudCkgPVxuICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IGNoaWxkLnBhcmVudDFfYW5kX2JleW9uZCAobGFzdF9wYXJlbnRfaW5kZXggLSAxKSlcbiAgICBpblxuICAgIGxpbmtcbiAgICAgIH5jaGlsZFxuICAgICAgfmNoaWxkX2luZGV4OmNoaWxkLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4obGFzdF9wYXJlbnRfaW5kZXgpXG4gICAgICB+cGFyZW50XG4gICAgICB+cGFyZW50X2luZGV4KTtcbiAgdW5saW5rIH5jaGlsZCB+Y2hpbGRfaW5kZXggfnBhcmVudCB+cGFyZW50X2luZGV4Omxhc3RfcGFyZW50X2luZGV4O1xuICBjaGlsZC5udW1fcGFyZW50cyA8LSBjaGlsZC5udW1fcGFyZW50cyAtIDFcbjs7XG5cbmxldCBzd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kIHBhcmVudCB+Y2hpbGQxIH5jaGlsZF9pbmRleDEgfmNoaWxkMiB+Y2hpbGRfaW5kZXgyID1cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChwYWNrZWRfc2FtZSAoVCBjaGlsZDEpIChLaW5kLnNsb3dfZ2V0X2NoaWxkIHBhcmVudC5raW5kIH5pbmRleDpjaGlsZF9pbmRleDEpKTtcbiAgICBhc3NlcnQgKHBhY2tlZF9zYW1lIChUIGNoaWxkMikgKEtpbmQuc2xvd19nZXRfY2hpbGQgcGFyZW50LmtpbmQgfmluZGV4OmNoaWxkX2luZGV4MikpKTtcbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MSlcbiAgaW5cbiAgbGV0IGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDIgPVxuICAgIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MilcbiAgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgYXNzZXJ0IChcbiAgICAgIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpID0gY2hpbGRfaW5kZXgxKTtcbiAgICBhc3NlcnQgKFxuICAgICAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPSBjaGlsZF9pbmRleDIpKTtcbiAgKCogbm93IHN0YXJ0IHN3YXBwaW5nICopXG4gIGNoaWxkMS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDEpIDwtIGNoaWxkX2luZGV4MjtcbiAgY2hpbGQyLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4oaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMikgPC0gY2hpbGRfaW5kZXgxO1xuICBwYXJlbnQubXlfcGFyZW50X2luZGV4X2luX2NoaWxkX2F0X2luZGV4LihjaGlsZF9pbmRleDEpIDwtIGluZGV4X29mX3BhcmVudF9pbl9jaGlsZDI7XG4gIHBhcmVudC5teV9wYXJlbnRfaW5kZXhfaW5fY2hpbGRfYXRfaW5kZXguKGNoaWxkX2luZGV4MikgPC0gaW5kZXhfb2ZfcGFyZW50X2luX2NoaWxkMVxuOztcblxubW9kdWxlIFBhY2tlZCA9IHN0cnVjdFxuICB0eXBlIHQgPSBQYWNrZWQudCA9IFQgOiBfIFR5cGVzLk5vZGUudCAtPiB0IFtAQHVuYm94ZWRdXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCB0KSA9IHQgfD4gWyVzZXhwX29mOiBfIHRdXG4gIGxldCBpbnZhcmlhbnQgKFQgdCkgPSBpbnZhcmlhbnQgaWdub3JlIHRcblxuICBtb2R1bGUgQXNfbGlzdCAoTSA6IHNpZ1xuICAgICAgdmFsIG5leHQgOiBQYWNrZWQudCAtPiBQYWNrZWQudCBVb3B0LnRcbiAgICBlbmQpID1cbiAgc3RydWN0XG4gICAgdHlwZSB0ID0gUGFja2VkLnQgVW9wdC50XG5cbiAgICBsZXQgZm9sZCB0IH5pbml0IH5mID1cbiAgICAgIGxldCBhYyA9IHJlZiBpbml0IGluXG4gICAgICBsZXQgciA9IHJlZiB0IGluXG4gICAgICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICAgICAgbGV0IHBhY2tlZF9ub2RlID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBNLm5leHQgcGFja2VkX25vZGU7XG4gICAgICAgIGFjIDo9IGYgIWFjIHBhY2tlZF9ub2RlXG4gICAgICBkb25lO1xuICAgICAgIWFjXG4gICAgOztcblxuICAgIGxldCBpdGVyIHQgfmYgPSBmb2xkIHQgfmluaXQ6KCkgfmY6KGZ1biAoKSBuIC0+IGYgbilcbiAgICBsZXQgaW52YXJpYW50IHQgPSBpdGVyIHQgfmY6aW52YXJpYW50XG4gICAgbGV0IGxlbmd0aCB0ID0gZm9sZCB0IH5pbml0OjAgfmY6KGZ1biBuIF8gLT4gbiArIDEpXG4gICAgbGV0IHRvX2xpc3QgdCA9IExpc3QucmV2IChmb2xkIHQgfmluaXQ6W10gfmY6KGZ1biBhYyBuIC0+IG4gOjogYWMpKVxuICAgIGxldCBzZXhwX29mX3QgdCA9IHRvX2xpc3QgdCB8PiBbJXNleHBfb2Y6IFBhY2tlZC50IGxpc3RdXG4gIGVuZFxuXG4gIGxldCBpdGVyX2Rlc2NlbmRhbnRzX2ludGVybmFsIHRzIH5mID1cbiAgICBsZXQgc2VlbiA9IE5vZGVfaWQuSGFzaF9zZXQuY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBpdGVyX2Rlc2NlbmRhbnRzIChUIHQpID1cbiAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlZW4gdC5pZClcbiAgICAgIHRoZW4gKFxuICAgICAgICBIYXNoX3NldC5hZGQgc2VlbiB0LmlkO1xuICAgICAgICBmIChUIHQpO1xuICAgICAgICBpdGVyaV9jaGlsZHJlbiB0IH5mOihmdW4gXyB0IC0+IGl0ZXJfZGVzY2VuZGFudHMgdCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgdHMgfmY6aXRlcl9kZXNjZW5kYW50cztcbiAgICBzZWVuXG4gIDs7XG5cbiAgbGV0IGl0ZXJfZGVzY2VuZGFudHMgdHMgfmYgPSBpZ25vcmUgKGl0ZXJfZGVzY2VuZGFudHNfaW50ZXJuYWwgdHMgfmYgOiBfIEhhc2hfc2V0LnQpXG5cbiAgbW9kdWxlIERvdF91c2VyX2luZm8gPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIERvdF91c2VyX2luZm9cblxuICAgIGxldCBkZWZhdWx0IH5uYW1lIHQgPVxuICAgICAgRG90X3VzZXJfaW5mby5kb3RcbiAgICAgICAgfmxhYmVsOlsgbmFtZTsgS2luZC5uYW1lIHQua2luZDsgc3ByaW50ZiBcImhlaWdodD0lZFwiIHQuaGVpZ2h0IF1cbiAgICAgICAgfmF0dHJpYnV0ZXM6U3RyaW5nLk1hcC5lbXB0eVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBhcHBlbmRfdXNlcl9pbmZvX2dyYXBodml6IChUIHQpID0gYXBwZW5kX3VzZXJfaW5mb19ncmFwaHZpeiB0XG5cbiAgbGV0IHByaW50X25vZGUgb3V0IH5uYW1lIHQgPVxuICAgIGxldCBkZWZhdWx0ID0gRG90X3VzZXJfaW5mby5kZWZhdWx0IH5uYW1lIHQgaW5cbiAgICBsZXQgaW5mbyA9XG4gICAgICBtYXRjaCB0LnVzZXJfaW5mbyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGVmYXVsdFxuICAgICAgfCBTb21lIHVzZXJfaW5mbyAtPiBEb3RfdXNlcl9pbmZvLmFwcGVuZCBkZWZhdWx0IHVzZXJfaW5mb1xuICAgIGluXG4gICAgZnByaW50ZiBvdXQgXCIlc1xcblwiIChEb3RfdXNlcl9pbmZvLnRvX3N0cmluZyB+bmFtZSAoRG90X3VzZXJfaW5mby50b19kb3QgaW5mbykpXG4gIDs7XG5cbiAgbGV0IHNhdmVfZG90IG91dCB0cyA9XG4gICAgbGV0IG5vZGVfbmFtZSA9XG4gICAgICBpZiBhbV9ydW5uaW5nX3Rlc3RcbiAgICAgIHRoZW4gZnVuIF8gLT4gXCJuIyMjXCJcbiAgICAgIGVsc2UgZnVuIG5vZGUgLT4gXCJuXCIgXiBOb2RlX2lkLnRvX3N0cmluZyBub2RlLmlkXG4gICAgaW5cbiAgICBmcHJpbnRmIG91dCBcImRpZ3JhcGggRyB7XFxuXCI7XG4gICAgZnByaW50ZiBvdXQgXCIgIHJhbmtkaXIgPSBCVFxcblwiO1xuICAgIGxldCBiaW5kX2VkZ2VzID0gcmVmIFtdIGluXG4gICAgbGV0IHNlZW4gPVxuICAgICAgaXRlcl9kZXNjZW5kYW50c19pbnRlcm5hbCB0cyB+ZjooZnVuIChUIHQpIC0+XG4gICAgICAgIGxldCBuYW1lID0gbm9kZV9uYW1lIHQgaW5cbiAgICAgICAgcHJpbnRfbm9kZSBvdXQgfm5hbWUgdDtcbiAgICAgICAgaXRlcmlfY2hpbGRyZW4gdCB+ZjooZnVuIF8gKFQgZnJvbV8pIC0+XG4gICAgICAgICAgZnByaW50ZiBvdXQgXCIgICVzIC0+ICVzXFxuXCIgKG5vZGVfbmFtZSBmcm9tXykgbmFtZSk7XG4gICAgICAgIG1hdGNoIHQua2luZCB3aXRoXG4gICAgICAgIHwgQmluZF9saHNfY2hhbmdlIGJpbmQgLT5cbiAgICAgICAgICBCaW5kLml0ZXJfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZCB+ZjooZnVuIHRvXyAtPlxuICAgICAgICAgICAgYmluZF9lZGdlcyA6PSAoVCB0LCB0b18pIDo6ICFiaW5kX2VkZ2VzKVxuICAgICAgICB8IF8gLT4gKCkpXG4gICAgaW5cbiAgICBMaXN0Lml0ZXIgIWJpbmRfZWRnZXMgfmY6KGZ1biAoVCBmcm9tLCBUIHRvXykgLT5cbiAgICAgIGlmIEhhc2hfc2V0Lm1lbSBzZWVuIHRvXy5pZFxuICAgICAgdGhlbiBmcHJpbnRmIG91dCBcIiAgJXMgLT4gJXMgW3N0eWxlPWRhc2hlZF1cXG5cIiAobm9kZV9uYW1lIGZyb20pIChub2RlX25hbWUgdG9fKSk7XG4gICAgZnByaW50ZiBvdXQgXCJ9XFxuJSFcIlxuICA7O1xuXG4gIGxldCBzYXZlX2RvdF90b19maWxlIGZpbGUgdHMgPVxuICAgIE91dF9jaGFubmVsLndpdGhfZmlsZSBmaWxlIH5mOihmdW4gb3V0IC0+IHNhdmVfZG90IG91dCB0cylcbiAgOztcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIEltcG9ydFxuXG5tb2R1bGUgQXNfcmVjb21wdXRlX2xpc3QgPSBOb2RlLlBhY2tlZC5Bc19saXN0IChzdHJ1Y3RcbiAgICBsZXQgbmV4dCAoTm9kZS5QYWNrZWQuVCBub2RlKSA9IG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcFxuICBlbmQpXG5cbm1vZHVsZSBOb2Rlc19ieV9oZWlnaHQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQXNfcmVjb21wdXRlX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAoKiBXZSBkaXNwbGF5IHRoZSBzbWFsbGVzdCBwcmVmaXggb2YgW25vZGVzX2J5X2hlaWdodF0gdGhhdCBpbmNsdWRlcyBhbGwgbm9kZXMuICopXG4gIGxldCBzZXhwX29mX3QgdCA9XG4gICAgbGV0IG1heF9ub25lbXB0eV9pbmRleCA9IHJlZiAoLTEpIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyaSB0IH5mOihmdW4gaSBsIC0+IGlmIFVvcHQuaXNfc29tZSBsIHRoZW4gbWF4X25vbmVtcHR5X2luZGV4IDo9IGkpO1xuICAgIFVuaWZvcm1fYXJyYXkuc3ViIHQgfnBvczowIH5sZW46KCFtYXhfbm9uZW1wdHlfaW5kZXggKyAxKSB8PiBbJXNleHBfb2Y6IHRdXG4gIDs7XG5lbmRcblxudHlwZSB0ID0gVHlwZXMuUmVjb21wdXRlX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbm9kZXNfYnlfaGVpZ2h0IDogTm9kZXNfYnlfaGVpZ2h0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcbmxldCBpc19lbXB0eSB0ID0gdC5sZW5ndGggPSAwXG5cbmxldCBpbnZhcmlhbnQgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogdF0gKGZ1biAoKSAtPlxuICAgIGxldCBjaGVjayBmID0gSW52YXJpYW50LmNoZWNrX2ZpZWxkIHQgZiBpblxuICAgIEZpZWxkcy5pdGVyXG4gICAgICB+bGVuZ3RoOlxuICAgICAgICAoY2hlY2sgKGZ1biBsZW5ndGggLT5cbiAgICAgICAgICAgbGV0IGFjdHVhbF9sZW5ndGggPSByZWYgMCBpblxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXIgdC5ub2Rlc19ieV9oZWlnaHQgfmY6KGZ1biBub2RlIC0+XG4gICAgICAgICAgICAgYWN0dWFsX2xlbmd0aCA6PSAhYWN0dWFsX2xlbmd0aCArIEFzX3JlY29tcHV0ZV9saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAgICAgICAgWyV0ZXN0X2VxOiBpbnRdIGxlbmd0aCAhYWN0dWFsX2xlbmd0aCkpXG4gICAgICB+aGVpZ2h0X2xvd2VyX2JvdW5kOlxuICAgICAgICAoY2hlY2sgKGZ1biBoZWlnaHRfbG93ZXJfYm91bmQgLT5cbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPj0gMCk7XG4gICAgICAgICAgIGFzc2VydCAoaGVpZ2h0X2xvd2VyX2JvdW5kIDw9IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0KTtcbiAgICAgICAgICAgZm9yIGhlaWdodCA9IDAgdG8gaGVpZ2h0X2xvd2VyX2JvdW5kIC0gMSBkb1xuICAgICAgICAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQpKVxuICAgICAgICAgICBkb25lKSlcbiAgICAgIH5ub2Rlc19ieV9oZWlnaHQ6XG4gICAgICAgIChjaGVjayAoZnVuIG5vZGVzX2J5X2hlaWdodCAtPlxuICAgICAgICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIG5vZGVzX2J5X2hlaWdodCB+ZjooZnVuIGhlaWdodCBub2RlIC0+XG4gICAgICAgICAgICAgQXNfcmVjb21wdXRlX2xpc3QuaXRlciBub2RlIH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgICAgICAgIGFzc2VydCAobm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBoZWlnaHQpO1xuICAgICAgICAgICAgICAgYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKSkpKSlcbjs7XG5cbmxldCBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICBVbmlmb3JtX2FycmF5LmNyZWF0ZSB+bGVuOihtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxKSBVb3B0Lm5vbmVcbjs7XG5cbmxldCBzZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQgbWF4X2hlaWdodF9hbGxvd2VkID1cbiAgaWYgZGVidWdcbiAgdGhlblxuICAgIGZvciBpID0gbWF4X2hlaWdodF9hbGxvd2VkICsgMSB0byBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDEgZG9cbiAgICAgIGFzc2VydCAoVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBpKSlcbiAgICBkb25lO1xuICBsZXQgc3JjID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IGRzdCA9IGNyZWF0ZV9ub2Rlc19ieV9oZWlnaHQgfm1heF9oZWlnaHRfYWxsb3dlZCBpblxuICBVbmlmb3JtX2FycmF5LmJsaXRcbiAgICB+c3JjXG4gICAgfnNyY19wb3M6MFxuICAgIH5kc3RcbiAgICB+ZHN0X3BvczowXG4gICAgfmxlbjoobWluIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBzcmMpIChVbmlmb3JtX2FycmF5Lmxlbmd0aCBkc3QpKTtcbiAgdC5ub2Rlc19ieV9oZWlnaHQgPC0gZHN0O1xuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBtaW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgKFVuaWZvcm1fYXJyYXkubGVuZ3RoIGRzdClcbjs7XG5cbmxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIHsgbGVuZ3RoID0gMFxuICA7IGhlaWdodF9sb3dlcl9ib3VuZCA9IG1heF9oZWlnaHRfYWxsb3dlZCArIDFcbiAgOyBub2Rlc19ieV9oZWlnaHQgPSBjcmVhdGVfbm9kZXNfYnlfaGVpZ2h0IH5tYXhfaGVpZ2h0X2FsbG93ZWRcbiAgfVxuOztcblxubGV0IHNldF9uZXh0IChwcmV2IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXh0ID1cbiAgaWYgVW9wdC5pc19zb21lIHByZXZcbiAgdGhlbiAoXG4gICAgbGV0IChUIHByZXYpID0gVW9wdC51bnNhZmVfdmFsdWUgcHJldiBpblxuICAgIHByZXYubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBuZXh0KVxuOztcblxubGV0IHNldF9wcmV2IChuZXh0IDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5wcmV2ID1cbiAgaWYgVW9wdC5pc19zb21lIG5leHRcbiAgdGhlbiAoXG4gICAgbGV0IChUIG5leHQpID0gVW9wdC51bnNhZmVfdmFsdWUgbmV4dCBpblxuICAgIG5leHQucHJldl9pbl9yZWNvbXB1dGVfaGVhcCA8LSBwcmV2KVxuOztcblxubGV0IGxpbmsgKHR5cGUgYSkgdCAobm9kZSA6IGEgTm9kZS50KSA9XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0IDw9IG1heF9oZWlnaHRfYWxsb3dlZCB0KTtcbiAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gaGVpZ2h0O1xuICBsZXQgbmV4dCA9IFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCBpblxuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjooVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKTtcbiAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKVxuOztcblxubGV0IHVubGluayAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgbGV0IHByZXYgPSBub2RlLnByZXZfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgbGV0IG5leHQgPSBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgaW5cbiAgaWYgcGh5c19zYW1lXG4gICAgICAgKFVvcHQuc29tZSBub2RlKVxuICAgICAgIChVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcClcbiAgdGhlbiBVbmlmb3JtX2FycmF5LnVuc2FmZV9zZXQgdC5ub2Rlc19ieV9oZWlnaHQgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgbmV4dDtcbiAgc2V0X3ByZXYgbmV4dCB+cHJldjtcbiAgc2V0X25leHQgcHJldiB+bmV4dDtcbiAgbm9kZS5wcmV2X2luX3JlY29tcHV0ZV9oZWFwIDwtIFVvcHQubm9uZVxuOztcblxuKCogV2UgZG9uJ3Qgc2V0IFtub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXBdIGhlcmUsIGJ1dCByYXRoZXIgYWZ0ZXIgY2FsbGluZyBbdW5saW5rXS4gKilcblxubGV0IGFkZCAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSB8fCBub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiaW5jb3JyZWN0IGF0dGVtcHQgdG8gYWRkIG5vZGUgdG8gcmVjb21wdXRlIGhlYXBcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub2RlLmhlaWdodCA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCk7XG4gIGxldCBoZWlnaHQgPSBub2RlLmhlaWdodCBpblxuICBpZiBoZWlnaHQgPCB0LmhlaWdodF9sb3dlcl9ib3VuZCB0aGVuIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIGhlaWdodDtcbiAgbGluayB0IG5vZGU7XG4gIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMVxuOztcblxubGV0IHJlbW92ZSAodHlwZSBhKSB0IChub2RlIDogYSBOb2RlLnQpID1cbiAgaWYgZGVidWcgJiYgKChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpIHx8IE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSlcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJpbmNvcnJlY3QgW3JlbW92ZV0gb2Ygbm9kZSBmcm9tIHJlY29tcHV0ZSBoZWFwXCJcbiAgICAgIG5vZGVcbiAgICAgIFslc2V4cF9vZjogXyBOb2RlLnRdO1xuICB1bmxpbmsgdCBub2RlO1xuICBub2RlLm5leHRfaW5fcmVjb21wdXRlX2hlYXAgPC0gVW9wdC5ub25lO1xuICBub2RlLmhlaWdodF9pbl9yZWNvbXB1dGVfaGVhcCA8LSAtMTtcbiAgdC5sZW5ndGggPC0gdC5sZW5ndGggLSAxXG47O1xuXG5sZXQgaW5jcmVhc2VfaGVpZ2h0ICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBkZWJ1Z1xuICB0aGVuIChcbiAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXApO1xuICAgIGFzc2VydCAobm9kZS5oZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIGFzc2VydCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKSk7XG4gIHVubGluayB0IG5vZGU7XG4gIGxpbmsgdCBub2RlXG47O1xuXG5sZXQgbWluX2hlaWdodCB0ID1cbiAgaWYgdC5sZW5ndGggPSAwXG4gIHRoZW4gdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHRcbiAgZWxzZSAoXG4gICAgbGV0IG5vZGVzX2J5X2hlaWdodCA9IHQubm9kZXNfYnlfaGVpZ2h0IGluXG4gICAgd2hpbGUgVW9wdC5pc19ub25lIChVbmlmb3JtX2FycmF5LmdldCBub2Rlc19ieV9oZWlnaHQgdC5oZWlnaHRfbG93ZXJfYm91bmQpIGRvXG4gICAgICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSB0LmhlaWdodF9sb3dlcl9ib3VuZCArIDFcbiAgICBkb25lKTtcbiAgdC5oZWlnaHRfbG93ZXJfYm91bmRcbjs7XG5cbmxldCByZW1vdmVfbWluIHQgOiBOb2RlLlBhY2tlZC50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG5vdCAoaXNfZW1wdHkgdCkpO1xuICBsZXQgbm9kZXNfYnlfaGVpZ2h0ID0gdC5ub2Rlc19ieV9oZWlnaHQgaW5cbiAgbGV0IG5vZGUgPSByZWYgKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGVzX2J5X2hlaWdodCB0LmhlaWdodF9sb3dlcl9ib3VuZCkgaW5cbiAgd2hpbGUgVW9wdC5pc19ub25lICFub2RlIGRvXG4gICAgdC5oZWlnaHRfbG93ZXJfYm91bmQgPC0gdC5oZWlnaHRfbG93ZXJfYm91bmQgKyAxO1xuICAgIGlmIGRlYnVnICYmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kID49IFVuaWZvcm1fYXJyYXkubGVuZ3RoIHQubm9kZXNfYnlfaGVpZ2h0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzXG4gICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgXCJSZWNvbXB1dGVfaGVhcC5yZW1vdmVfbWluIHVuZXhwZWN0ZWRseSByZWFjaGVkIGVuZCBvZiBoZWFwXCJcbiAgICAgICAgdFxuICAgICAgICBbJXNleHBfb2Y6IHRdO1xuICAgIG5vZGUgOj0gVW5pZm9ybV9hcnJheS5nZXQgbm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kXG4gIGRvbmU7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlICFub2RlIGluXG4gIG5vZGUuaGVpZ2h0X2luX3JlY29tcHV0ZV9oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIGxldCBuZXh0ID0gbm9kZS5uZXh0X2luX3JlY29tcHV0ZV9oZWFwIGluXG4gIFVuaWZvcm1fYXJyYXkuc2V0IHQubm9kZXNfYnlfaGVpZ2h0IHQuaGVpZ2h0X2xvd2VyX2JvdW5kIG5leHQ7XG4gIHNldF9wcmV2IG5leHQgfnByZXY6VW9wdC5ub25lO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVW9wdC5pc19ub25lIG5vZGUucHJldl9pbl9yZWNvbXB1dGVfaGVhcCk7XG4gIG5vZGUubmV4dF9pbl9yZWNvbXB1dGVfaGVhcCA8LSBVb3B0Lm5vbmU7XG4gIFQgbm9kZVxuOztcbiIsIm9wZW4gQ29yZVxub3BlbiBJbXBvcnRcbm9wZW4gVHlwZXMuS2luZFxuXG5tb2R1bGUgQXNfYWRqdXN0X2hlaWdodHNfbGlzdCA9IE5vZGUuUGFja2VkLkFzX2xpc3QgKHN0cnVjdFxuICAgIGxldCBuZXh0IChOb2RlLlBhY2tlZC5UIG5vZGUpID0gbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXBcbiAgZW5kKVxuXG5tb2R1bGUgTm9kZXNfYnlfaGVpZ2h0ID0gc3RydWN0XG4gIHR5cGUgdCA9IEFzX2FkanVzdF9oZWlnaHRzX2xpc3QudCBVbmlmb3JtX2FycmF5LnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgc2V4cF9vZl90IHQgPVxuICAgIGxldCBtYXhfbm9uZW1wdHlfaW5kZXggPSByZWYgKC0xKSBpblxuICAgIFVuaWZvcm1fYXJyYXkuaXRlcmkgdCB+ZjooZnVuIGkgbCAtPiBpZiBVb3B0LmlzX3NvbWUgbCB0aGVuIG1heF9ub25lbXB0eV9pbmRleCA6PSBpKTtcbiAgICBVbmlmb3JtX2FycmF5LnN1YiB0IH5wb3M6MCB+bGVuOighbWF4X25vbmVtcHR5X2luZGV4ICsgMSkgfD4gWyVzZXhwX29mOiB0XVxuICA7O1xuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBVbmlmb3JtX2FycmF5Lml0ZXJpIHQgfmY6KGZ1biBoZWlnaHQgbm9kZXMgLT5cbiAgICAgICAgQXNfYWRqdXN0X2hlaWdodHNfbGlzdC5pbnZhcmlhbnQgbm9kZXM7XG4gICAgICAgIEFzX2FkanVzdF9oZWlnaHRzX2xpc3QuaXRlciBub2RlcyB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgICAgICAgYXNzZXJ0IChub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gaGVpZ2h0KTtcbiAgICAgICAgICBhc3NlcnQgKG5vZGUuaGVpZ2h0ID4gbm9kZS5oZWlnaHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCk7XG4gICAgICAgICAgaWYgTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgYXNzZXJ0IChcbiAgICAgICAgICAgICAgbm9kZS5oZWlnaHRfaW5fcmVjb21wdXRlX2hlYXAgPSBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwKSkpKVxuICA7O1xuXG4gIGxldCBjcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZCA9XG4gICAgVW5pZm9ybV9hcnJheS5jcmVhdGUgfmxlbjoobWF4X2hlaWdodF9hbGxvd2VkICsgMSkgVW9wdC5ub25lXG4gIDs7XG5cbiAgbGV0IGxlbmd0aCB0ID1cbiAgICBsZXQgciA9IHJlZiAwIGluXG4gICAgVW5pZm9ybV9hcnJheS5pdGVyIHQgfmY6KGZ1biBub2RlIC0+IHIgOj0gIXIgKyBBc19hZGp1c3RfaGVpZ2h0c19saXN0Lmxlbmd0aCBub2RlKTtcbiAgICAhclxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLkFkanVzdF9oZWlnaHRzX2hlYXAudCA9XG4gIHsgbXV0YWJsZSBsZW5ndGggOiBpbnRcbiAgOyBtdXRhYmxlIGhlaWdodF9sb3dlcl9ib3VuZCA6IGludFxuICA7IG11dGFibGUgbWF4X2hlaWdodF9zZWVuIDogaW50XG4gIDsgbXV0YWJsZSBub2Rlc19ieV9oZWlnaHQgOiBOb2Rlc19ieV9oZWlnaHQudFxuICB9XG5bQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbmxldCBpc19lbXB0eSB0ID0gbGVuZ3RoIHQgPSAwXG5sZXQgbWF4X2hlaWdodF9hbGxvd2VkIHQgPSBVbmlmb3JtX2FycmF5Lmxlbmd0aCB0Lm5vZGVzX2J5X2hlaWdodCAtIDFcblxubGV0IGludmFyaWFudCB0ID1cbiAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5sZW5ndGg6XG4gICAgICAgIChjaGVjayAoZnVuIGxlbmd0aCAtPlxuICAgICAgICAgICBhc3NlcnQgKGxlbmd0aCA9IE5vZGVzX2J5X2hlaWdodC5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQpKSlcbiAgICAgIH5oZWlnaHRfbG93ZXJfYm91bmQ6XG4gICAgICAgIChjaGVjayAoZnVuIGhlaWdodF9sb3dlcl9ib3VuZCAtPlxuICAgICAgICAgICBhc3NlcnQgKGhlaWdodF9sb3dlcl9ib3VuZCA+PSAwKTtcbiAgICAgICAgICAgYXNzZXJ0IChoZWlnaHRfbG93ZXJfYm91bmQgPD0gVW5pZm9ybV9hcnJheS5sZW5ndGggdC5ub2Rlc19ieV9oZWlnaHQpO1xuICAgICAgICAgICBmb3IgaGVpZ2h0ID0gMCB0byBoZWlnaHRfbG93ZXJfYm91bmQgLSAxIGRvXG4gICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX25vbmUgKFVuaWZvcm1fYXJyYXkuZ2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCkpXG4gICAgICAgICAgIGRvbmUpKVxuICAgICAgfm1heF9oZWlnaHRfc2VlbjpcbiAgICAgICAgKGNoZWNrIChmdW4gbWF4X2hlaWdodF9zZWVuIC0+XG4gICAgICAgICAgIGFzc2VydCAobWF4X2hlaWdodF9zZWVuID49IDApO1xuICAgICAgICAgICBhc3NlcnQgKG1heF9oZWlnaHRfc2VlbiA8PSBtYXhfaGVpZ2h0X2FsbG93ZWQgdCkpKVxuICAgICAgfm5vZGVzX2J5X2hlaWdodDooY2hlY2sgTm9kZXNfYnlfaGVpZ2h0LmludmFyaWFudCkpXG47O1xuXG5sZXQgY3JlYXRlIH5tYXhfaGVpZ2h0X2FsbG93ZWQgPVxuICB7IGxlbmd0aCA9IDBcbiAgOyBoZWlnaHRfbG93ZXJfYm91bmQgPSBtYXhfaGVpZ2h0X2FsbG93ZWQgKyAxXG4gIDsgbWF4X2hlaWdodF9zZWVuID0gMFxuICA7IG5vZGVzX2J5X2hlaWdodCA9IE5vZGVzX2J5X2hlaWdodC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZFxuICB9XG47O1xuXG5sZXQgc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0IG1heF9oZWlnaHRfYWxsb3dlZCA9XG4gIGlmIG1heF9oZWlnaHRfYWxsb3dlZCA8IHQubWF4X2hlaWdodF9zZWVuXG4gIHRoZW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIFwiY2Fubm90IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgbGVzcyB0aGFuIHRoZSBtYXggaGVpZ2h0IGFscmVhZHkgc2VlblwiXG4gICAgICAobWF4X2hlaWdodF9hbGxvd2VkLCBgbWF4X2hlaWdodF9zZWVuIHQubWF4X2hlaWdodF9zZWVuKVxuICAgICAgWyVzZXhwX29mOiBpbnQgKiBbIGBtYXhfaGVpZ2h0X3NlZW4gb2YgaW50IF1dO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIHQubm9kZXNfYnlfaGVpZ2h0IDwtIE5vZGVzX2J5X2hlaWdodC5jcmVhdGUgfm1heF9oZWlnaHRfYWxsb3dlZFxuOztcblxubGV0IGFkZF91bmxlc3NfbWVtICh0eXBlIGEpIHQgKG5vZGUgOiBhIE5vZGUudCkgPVxuICBpZiBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwID0gLTFcbiAgdGhlbiAoXG4gICAgbGV0IGhlaWdodCA9IG5vZGUuaGVpZ2h0IGluXG4gICAgKCogV2UgcHJvY2VzcyBub2RlcyBpbiBpbmNyZWFzaW5nIG9yZGVyIG9mIHByZS1hZGp1c3RlZCBoZWlnaHQsIHNvIGl0IGlzIGEgYnVnIGlmIHdlXG4gICAgICAgZXZlciB0cnkgdG8gYWRkIGEgbm9kZSB0aGF0IHdvdWxkIHZpb2xhdGUgdGhhdC4gKilcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaGVpZ2h0ID49IHQuaGVpZ2h0X2xvd2VyX2JvdW5kKTtcbiAgICAoKiBXaGVuZXZlciB3ZSBzZXQgYSBub2RlJ3MgaGVpZ2h0LCB3ZSB1c2UgW3NldF9oZWlnaHRdLCB3aGljaCBlbmZvcmNlcyB0aGlzLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChoZWlnaHQgPD0gbWF4X2hlaWdodF9hbGxvd2VkIHQpO1xuICAgIG5vZGUuaGVpZ2h0X2luX2FkanVzdF9oZWlnaHRzX2hlYXAgPC0gaGVpZ2h0O1xuICAgIHQubGVuZ3RoIDwtIHQubGVuZ3RoICsgMTtcbiAgICBub2RlLm5leHRfaW5fYWRqdXN0X2hlaWdodHNfaGVhcCA8LSBVbmlmb3JtX2FycmF5LmdldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQ7XG4gICAgVW5pZm9ybV9hcnJheS51bnNhZmVfc2V0IHQubm9kZXNfYnlfaGVpZ2h0IGhlaWdodCAoVW9wdC5zb21lIChOb2RlLlBhY2tlZC5UIG5vZGUpKSlcbjs7XG5cbmxldCByZW1vdmVfbWluX2V4biB0IDogTm9kZS5QYWNrZWQudCA9XG4gIGlmIGRlYnVnICYmIGlzX2VtcHR5IHRcbiAgdGhlblxuICAgIGZhaWx3aXRocyB+aGVyZTpbJWhlcmVdIFwiQWRqdXN0X2hlaWdodHNfaGVhcC5yZW1vdmVfbWluIG9mIGVtcHR5IGhlYXBcIiB0IFslc2V4cF9vZjogdF07XG4gIGxldCByID0gcmVmIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIGluXG4gIHdoaWxlIFVvcHQuaXNfbm9uZSAoVW5pZm9ybV9hcnJheS5nZXQgdC5ub2Rlc19ieV9oZWlnaHQgIXIpIGRvXG4gICAgaW5jciByXG4gIGRvbmU7XG4gIGxldCBoZWlnaHQgPSAhciBpblxuICB0LmhlaWdodF9sb3dlcl9ib3VuZCA8LSBoZWlnaHQ7XG4gIGxldCAoVCBub2RlKSA9IFVvcHQudW5zYWZlX3ZhbHVlIChVbmlmb3JtX2FycmF5LnVuc2FmZV9nZXQgdC5ub2Rlc19ieV9oZWlnaHQgaGVpZ2h0KSBpblxuICBub2RlLmhlaWdodF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIC0xO1xuICB0Lmxlbmd0aCA8LSB0Lmxlbmd0aCAtIDE7XG4gIFVuaWZvcm1fYXJyYXkudW5zYWZlX3NldCB0Lm5vZGVzX2J5X2hlaWdodCBoZWlnaHQgbm9kZS5uZXh0X2luX2FkanVzdF9oZWlnaHRzX2hlYXA7XG4gIG5vZGUubmV4dF9pbl9hZGp1c3RfaGVpZ2h0c19oZWFwIDwtIFVvcHQubm9uZTtcbiAgVCBub2RlXG47O1xuXG5sZXQgc2V0X2hlaWdodCB0IChub2RlIDogXyBOb2RlLnQpIGhlaWdodCA9XG4gIGlmIGhlaWdodCA+IHQubWF4X2hlaWdodF9zZWVuXG4gIHRoZW4gKFxuICAgIHQubWF4X2hlaWdodF9zZWVuIDwtIGhlaWdodDtcbiAgICBpZiBoZWlnaHQgPiBtYXhfaGVpZ2h0X2FsbG93ZWQgdFxuICAgIHRoZW5cbiAgICAgIGZhaWx3aXRoc1xuICAgICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAgIFwibm9kZSB3aXRoIHRvbyBsYXJnZSBoZWlnaHRcIlxuICAgICAgICAoYEhlaWdodCBoZWlnaHQsIGBNYXggKG1heF9oZWlnaHRfYWxsb3dlZCB0KSlcbiAgICAgICAgWyVzZXhwX29mOiBbIGBIZWlnaHQgb2YgaW50IF0gKiBbIGBNYXggb2YgaW50IF1dKTtcbiAgbm9kZS5oZWlnaHQgPC0gaGVpZ2h0XG47O1xuXG5sZXQgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50ID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IGNoaWxkKTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gIGlmIE5vZGUuc2FtZSBwYXJlbnQgb3JpZ2luYWxfY2hpbGRcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhZGRpbmcgZWRnZSBtYWRlIGdyYXBoIGN5Y2xpY1wiXG4gICAgICAoYGNoaWxkIG9yaWdpbmFsX2NoaWxkLCBgcGFyZW50IG9yaWdpbmFsX3BhcmVudClcbiAgICAgIFslc2V4cF9vZjogWyBgY2hpbGQgb2YgXyBOb2RlLnQgXSAqIFsgYHBhcmVudCBvZiBfIE5vZGUudCBdXTtcbiAgaWYgY2hpbGQuaGVpZ2h0ID49IHBhcmVudC5oZWlnaHRcbiAgdGhlbiAoXG4gICAgYWRkX3VubGVzc19tZW0gdCBwYXJlbnQ7XG4gICAgKCogV2Ugc2V0IFtwYXJlbnQuaGVpZ2h0XSBhZnRlciBhZGRpbmcgW3BhcmVudF0gdG8gdGhlIGhlYXAsIHNvIHRoYXQgW3BhcmVudF0gZ29lc1xuICAgICAgIGluIHRoZSBoZWFwIHdpdGggaXRzIHByZS1hZGp1c3RlZCBoZWlnaHQuICopXG4gICAgc2V0X2hlaWdodCB0IHBhcmVudCAoY2hpbGQuaGVpZ2h0ICsgMSkpXG47O1xuXG5sZXQgYWRqdXN0X2hlaWdodHNcbiAgICAgICh0eXBlIGEgYilcbiAgICAgIHRcbiAgICAgIHJlY29tcHV0ZV9oZWFwXG4gICAgICB+Y2hpbGQ6KG9yaWdpbmFsX2NoaWxkIDogYSBOb2RlLnQpXG4gICAgICB+cGFyZW50OihvcmlnaW5hbF9wYXJlbnQgOiBiIE5vZGUudClcbiAgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoaXNfZW1wdHkgdCk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChvcmlnaW5hbF9jaGlsZC5oZWlnaHQgPj0gb3JpZ2luYWxfcGFyZW50LmhlaWdodCk7XG4gIHQuaGVpZ2h0X2xvd2VyX2JvdW5kIDwtIG9yaWdpbmFsX3BhcmVudC5oZWlnaHQ7XG4gIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnRcbiAgICB0XG4gICAgfm9yaWdpbmFsX2NoaWxkXG4gICAgfm9yaWdpbmFsX3BhcmVudFxuICAgIH5jaGlsZDpvcmlnaW5hbF9jaGlsZFxuICAgIH5wYXJlbnQ6b3JpZ2luYWxfcGFyZW50O1xuICB3aGlsZSBsZW5ndGggdCA+IDAgZG9cbiAgICBsZXQgKFQgY2hpbGQpID0gcmVtb3ZlX21pbl9leG4gdCBpblxuICAgIGlmIE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgY2hpbGRcbiAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmluY3JlYXNlX2hlaWdodCByZWNvbXB1dGVfaGVhcCBjaGlsZDtcbiAgICBpZiBjaGlsZC5udW1fcGFyZW50cyA+IDBcbiAgICB0aGVuIChcbiAgICAgIGxldCAoVCBwYXJlbnQpID0gVW9wdC52YWx1ZV9leG4gY2hpbGQucGFyZW50MCBpblxuICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50O1xuICAgICAgZm9yIHBhcmVudF9pbmRleCA9IDEgdG8gY2hpbGQubnVtX3BhcmVudHMgLSAxIGRvXG4gICAgICAgIGxldCAoVCBwYXJlbnQpID1cbiAgICAgICAgICBVb3B0LnZhbHVlX2V4biAoVW5pZm9ybV9hcnJheS5nZXQgY2hpbGQucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgZW5zdXJlX2hlaWdodF9yZXF1aXJlbWVudCB0IH5vcmlnaW5hbF9jaGlsZCB+b3JpZ2luYWxfcGFyZW50IH5jaGlsZCB+cGFyZW50XG4gICAgICBkb25lKTtcbiAgICBtYXRjaCBjaGlsZC5raW5kIHdpdGhcbiAgICB8IEJpbmRfbGhzX2NoYW5nZSB7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JoczsgXyB9IC0+XG4gICAgICBsZXQgciA9IHJlZiBhbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgaW5cbiAgICAgIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgICAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICAgICAgciA6PSBub2RlX29uX3Jocy5uZXh0X25vZGVfaW5fc2FtZV9zY29wZTtcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZV9vbl9yaHNcbiAgICAgICAgdGhlblxuICAgICAgICAgIGVuc3VyZV9oZWlnaHRfcmVxdWlyZW1lbnRcbiAgICAgICAgICAgIHRcbiAgICAgICAgICAgIH5vcmlnaW5hbF9jaGlsZFxuICAgICAgICAgICAgfm9yaWdpbmFsX3BhcmVudFxuICAgICAgICAgICAgfmNoaWxkXG4gICAgICAgICAgICB+cGFyZW50Om5vZGVfb25fcmhzXG4gICAgICBkb25lXG4gICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChpc19lbXB0eSB0KTtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKG9yaWdpbmFsX2NoaWxkLmhlaWdodCA8IG9yaWdpbmFsX3BhcmVudC5oZWlnaHQpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIEFjdGlvbiA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5BbGFybV92YWx1ZS5BY3Rpb24udCA9XG4gICAgfCBBdCBvZiBBdC50XG4gICAgfCBBdF9pbnRlcnZhbHMgb2YgQXRfaW50ZXJ2YWxzLnRcbiAgICB8IFNuYXBzaG90IDogXyBTbmFwc2hvdC50IC0+IHRcbiAgICB8IFN0ZXBfZnVuY3Rpb24gOiBfIFN0ZXBfZnVuY3Rpb25fbm9kZS50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IEF0IGF0IC0+IEF0LmludmFyaWFudCBhdFxuICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiBBdF9pbnRlcnZhbHMuaW52YXJpYW50IGF0X2ludGVydmFsc1xuICAgIHwgU25hcHNob3Qgc25hcHNob3QgLT4gU25hcHNob3QuaW52YXJpYW50IGlnbm9yZSBzbmFwc2hvdFxuICAgIHwgU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUgLT5cbiAgICAgIFN0ZXBfZnVuY3Rpb25fbm9kZS5pbnZhcmlhbnQgaWdub3JlIHN0ZXBfZnVuY3Rpb25fbm9kZVxuICA7O1xuZW5kXG5cbnR5cGUgdCA9IFR5cGVzLkFsYXJtX3ZhbHVlLnQgPVxuICB7IGFjdGlvbiA6IEFjdGlvbi50XG4gIDsgKCogW25leHRfZmlyZWRdIHNpbmdseSBsaW5rcyBhbGwgYWxhcm0gdmFsdWVzIHRoYXQgZmlyZSBkdXJpbmcgYSBzaW5nbGUgY2FsbCB0b1xuICAgICAgIFthZHZhbmNlX2Nsb2NrXS4gKilcbiAgICBtdXRhYmxlIG5leHRfZmlyZWQgOiAodCBVb3B0LnRbQHNleHAub3BhcXVlXSlcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG5sZXQgaW52YXJpYW50IHQgPVxuICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICBGaWVsZHMuaXRlciB+YWN0aW9uOihjaGVjayBBY3Rpb24uaW52YXJpYW50KSB+bmV4dF9maXJlZDppZ25vcmUpXG47O1xuXG5sZXQgY3JlYXRlIGFjdGlvbiA9IHsgYWN0aW9uOyBuZXh0X2ZpcmVkID0gVW9wdC5ub25lIH1cbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuaW5jbHVkZSBDb25maWdfaW50ZlxuXG5tb2R1bGUgRGVmYXVsdCAoKSA9IHN0cnVjdFxuICBsZXQgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IHRydWVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuISBJbXBvcnRcbm9wZW4gVHlwZXMuSW50ZXJuYWxfb2JzZXJ2ZXJcblxubW9kdWxlIFBhY2tlZF8gPSBzdHJ1Y3RcbiAgaW5jbHVkZSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci5QYWNrZWRcblxuICBsZXQgc2V4cF9vZl90IChUIGludGVybmFsX29ic2VydmVyKSA9XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIHw+IFslc2V4cF9vZjogXyBUeXBlcy5Ob2RlLnRdXG4gIDs7XG5cbiAgbGV0IHByZXZfaW5fYWxsIChUIHQpID0gdC5wcmV2X2luX2FsbFxuICBsZXQgbmV4dF9pbl9hbGwgKFQgdCkgPSB0Lm5leHRfaW5fYWxsXG4gIGxldCBzZXRfcHJldl9pbl9hbGwgKFQgdDEpIHQyID0gdDEucHJldl9pbl9hbGwgPC0gdDJcbiAgbGV0IHNldF9uZXh0X2luX2FsbCAoVCB0MSkgdDIgPSB0MS5uZXh0X2luX2FsbCA8LSB0MlxuZW5kXG5cbm1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci5TdGF0ZS50ID1cbiAgICB8IENyZWF0ZWRcbiAgICB8IEluX3VzZVxuICAgIHwgRGlzYWxsb3dlZFxuICAgIHwgVW5saW5rZWRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbmVuZFxuXG50eXBlICdhIHQgPSAnYSBUeXBlcy5JbnRlcm5hbF9vYnNlcnZlci50ID1cbiAgeyAoKiBTdGF0ZSB0cmFuc2l0aW9uczpcblxuICAgICAgIHt2XG4gICAgICAgICBDcmVhdGVkIC0tPiBJbl91c2UgLS0+IERpc2FsbG93ZWQgLS0+IFVubGlua2VkXG4gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICBcXC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vXG4gICAgICAgdn0gKilcbiAgICBtdXRhYmxlIHN0YXRlIDogU3RhdGUudFxuICA7IG9ic2VydmluZyA6ICdhIE5vZGUudFxuICA7IG11dGFibGUgb25fdXBkYXRlX2hhbmRsZXJzIDogJ2EgT25fdXBkYXRlX2hhbmRsZXIudCBsaXN0XG4gIDsgKCogW3twcmV2LG5leHR9X2luX2FsbF0gZG91Ymx5IGxpbmsgYWxsIG9ic2VydmVycyBpbiBbc3RhdGUuYWxsX29ic2VydmVyc10uICopXG4gICAgbXV0YWJsZSBwcmV2X2luX2FsbCA6IFBhY2tlZF8udCBVb3B0LnRcbiAgOyBtdXRhYmxlIG5leHRfaW5fYWxsIDogUGFja2VkXy50IFVvcHQudFxuICA7ICgqIFt7cHJldixuZXh0fV9pbl9vYnNlcnZpbmddIGRvdWJseSBsaW5rIGFsbCBvYnNlcnZlcnMgb2YgW29ic2VydmluZ10uICopXG4gICAgbXV0YWJsZSBwcmV2X2luX29ic2VydmluZyA6ICgnYSB0W0BzZXhwLm9wYXF1ZV0pIFVvcHQudFxuICA7IG11dGFibGUgbmV4dF9pbl9vYnNlcnZpbmcgOiAoJ2EgdFtAc2V4cC5vcGFxdWVdKSBVb3B0LnRcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG50eXBlICdhIGludGVybmFsX29ic2VydmVyID0gJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG5sZXQgaW5jcl9zdGF0ZSB0ID0gdC5vYnNlcnZpbmcuc3RhdGVcblxubGV0IHVzZV9pc19hbGxvd2VkIHQgPVxuICBtYXRjaCB0LnN0YXRlIHdpdGhcbiAgfCBDcmVhdGVkIHwgSW5fdXNlIC0+IHRydWVcbiAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gZmFsc2Vcbjs7XG5cbmxldCBzYW1lICh0MSA6IF8gdCkgKHQyIDogXyB0KSA9IHBoeXNfc2FtZSB0MSB0MlxubGV0IHNhbWVfYXNfcGFja2VkICh0MSA6IF8gdCkgKFBhY2tlZF8uVCB0MikgPSBzYW1lIHQxIHQyXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9XG4gIEludmFyaWFudC5pbnZhcmlhbnQgWyVoZXJlXSB0IFslc2V4cF9vZjogXyB0XSAoZnVuICgpIC0+XG4gICAgbGV0IGNoZWNrIGYgPSBJbnZhcmlhbnQuY2hlY2tfZmllbGQgdCBmIGluXG4gICAgRmllbGRzLml0ZXJcbiAgICAgIH5zdGF0ZTppZ25vcmVcbiAgICAgIH5vYnNlcnZpbmc6KGNoZWNrIChOb2RlLmludmFyaWFudCBpbnZhcmlhbnRfYSkpXG4gICAgICB+b25fdXBkYXRlX2hhbmRsZXJzOlxuICAgICAgICAoY2hlY2sgKGZ1biBvbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICAgICAgICAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gICAgICAgICAgIHwgQ3JlYXRlZCB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgfCBVbmxpbmtlZCAtPiBhc3NlcnQgKExpc3QuaXNfZW1wdHkgb25fdXBkYXRlX2hhbmRsZXJzKSkpXG4gICAgICB+cHJldl9pbl9hbGw6XG4gICAgICAgIChjaGVjayAoZnVuIHByZXZfaW5fYWxsIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9hbGwpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fYWxsXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgc2FtZV9hc19wYWNrZWRcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKFBhY2tlZF8ubmV4dF9pbl9hbGwgKFVvcHQudmFsdWVfZXhuIHByZXZfaW5fYWxsKSkpKSkpXG4gICAgICB+bmV4dF9pbl9hbGw6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfaW5fYWxsIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9hbGwpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fYWxsXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgc2FtZV9hc19wYWNrZWRcbiAgICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgICAgICAoVW9wdC52YWx1ZV9leG4gKFBhY2tlZF8ucHJldl9pbl9hbGwgKFVvcHQudmFsdWVfZXhuIG5leHRfaW5fYWxsKSkpKSkpXG4gICAgICB+cHJldl9pbl9vYnNlcnZpbmc6XG4gICAgICAgIChjaGVjayAoZnVuIHByZXZfaW5fb2JzZXJ2aW5nIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgcHJldl9pbl9vYnNlcnZpbmcpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIHByZXZfaW5fb2JzZXJ2aW5nXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4blxuICAgICAgICAgICAgICAgICAgICAobmV4dF9pbl9vYnNlcnZpbmcgKFVvcHQudmFsdWVfZXhuIHByZXZfaW5fb2JzZXJ2aW5nKSkpKSkpXG4gICAgICB+bmV4dF9pbl9vYnNlcnZpbmc6XG4gICAgICAgIChjaGVjayAoZnVuIG5leHRfaW5fb2JzZXJ2aW5nIC0+XG4gICAgICAgICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbmV4dF9pbl9vYnNlcnZpbmcpKTtcbiAgICAgICAgICAgaWYgVW9wdC5pc19zb21lIG5leHRfaW5fb2JzZXJ2aW5nXG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgICAgICAgcGh5c19lcXVhbFxuICAgICAgICAgICAgICAgICB0XG4gICAgICAgICAgICAgICAgIChVb3B0LnZhbHVlX2V4blxuICAgICAgICAgICAgICAgICAgICAocHJldl9pbl9vYnNlcnZpbmcgKFVvcHQudmFsdWVfZXhuIG5leHRfaW5fb2JzZXJ2aW5nKSkpKSkpKVxuOztcblxubGV0IHZhbHVlX2V4biB0ID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgQ3JlYXRlZCAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIHdpdGhvdXQgc3RhYmlsaXppbmdcIlxuICAgICAgdFxuICAgICAgWyVzZXhwX29mOiBfIHRdXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIk9ic2VydmVyLnZhbHVlX2V4biBjYWxsZWQgYWZ0ZXIgZGlzYWxsb3dfZnV0dXJlX3VzZVwiXG4gICAgICB0XG4gICAgICBbJXNleHBfb2Y6IF8gdF1cbiAgfCBJbl91c2UgLT5cbiAgICBsZXQgdW9wdCA9IHQub2JzZXJ2aW5nLnZhbHVlX29wdCBpblxuICAgIGlmIFVvcHQuaXNfbm9uZSB1b3B0XG4gICAgdGhlblxuICAgICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIGdldCB2YWx1ZSBvZiBhbiBpbnZhbGlkIG5vZGVcIiB0IFslc2V4cF9vZjogXyB0XTtcbiAgICBVb3B0LnVuc2FmZV92YWx1ZSB1b3B0XG47O1xuXG5sZXQgb25fdXBkYXRlX2V4biB0IG9uX3VwZGF0ZV9oYW5kbGVyID1cbiAgbWF0Y2ggdC5zdGF0ZSB3aXRoXG4gIHwgRGlzYWxsb3dlZCB8IFVubGlua2VkIC0+XG4gICAgZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJvbl91cGRhdGUgZGlzYWxsb3dlZFwiIHQgWyVzZXhwX29mOiBfIHRdXG4gIHwgQ3JlYXRlZCB8IEluX3VzZSAtPlxuICAgIHQub25fdXBkYXRlX2hhbmRsZXJzIDwtIG9uX3VwZGF0ZV9oYW5kbGVyIDo6IHQub25fdXBkYXRlX2hhbmRsZXJzO1xuICAgIChtYXRjaCB0LnN0YXRlIHdpdGhcbiAgICAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gYXNzZXJ0IGZhbHNlXG4gICAgIHwgQ3JlYXRlZCAtPlxuICAgICAgICgqIFdlJ2xsIGJ1bXAgW29ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXSB3aGVuIFt0XSBpcyBhY3R1YWxseSBhZGRlZCB0b1xuICAgICAgICAgIFtvYnNlcnZpbmcub2JzZXJ2ZXJzXSBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHQgc3RhYmlsaXphdGlvbi4gKilcbiAgICAgICAoKVxuICAgICB8IEluX3VzZSAtPlxuICAgICAgIGxldCBvYnNlcnZpbmcgPSB0Lm9ic2VydmluZyBpblxuICAgICAgIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzICsgMSlcbjs7XG5cbmxldCB1bmxpbmtfZnJvbV9vYnNlcnZpbmcgdCA9XG4gIGxldCBwcmV2ID0gdC5wcmV2X2luX29ic2VydmluZyBpblxuICBsZXQgbmV4dCA9IHQubmV4dF9pbl9vYnNlcnZpbmcgaW5cbiAgdC5wcmV2X2luX29ic2VydmluZyA8LSBVb3B0Lm5vbmU7XG4gIHQubmV4dF9pbl9vYnNlcnZpbmcgPC0gVW9wdC5ub25lO1xuICBpZiBVb3B0LmlzX3NvbWUgbmV4dCB0aGVuIChVb3B0LnVuc2FmZV92YWx1ZSBuZXh0KS5wcmV2X2luX29ic2VydmluZyA8LSBwcmV2O1xuICBpZiBVb3B0LmlzX3NvbWUgcHJldiB0aGVuIChVb3B0LnVuc2FmZV92YWx1ZSBwcmV2KS5uZXh0X2luX29ic2VydmluZyA8LSBuZXh0O1xuICBsZXQgb2JzZXJ2aW5nID0gdC5vYnNlcnZpbmcgaW5cbiAgaWYgcGh5c19lcXVhbCB0IChVb3B0LnZhbHVlX2V4biBvYnNlcnZpbmcub2JzZXJ2ZXJzKSB0aGVuIG9ic2VydmluZy5vYnNlcnZlcnMgPC0gbmV4dDtcbiAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgPC0gb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgLSBMaXN0Lmxlbmd0aCB0Lm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgdC5vbl91cGRhdGVfaGFuZGxlcnMgPC0gW11cbjs7XG5cbmxldCB1bmxpbmtfZnJvbV9hbGwgdCA9XG4gIGxldCBwcmV2ID0gdC5wcmV2X2luX2FsbCBpblxuICBsZXQgbmV4dCA9IHQubmV4dF9pbl9hbGwgaW5cbiAgdC5wcmV2X2luX2FsbCA8LSBVb3B0Lm5vbmU7XG4gIHQubmV4dF9pbl9hbGwgPC0gVW9wdC5ub25lO1xuICBpZiBVb3B0LmlzX3NvbWUgbmV4dCB0aGVuIFBhY2tlZF8uc2V0X3ByZXZfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBuZXh0KSBwcmV2O1xuICBpZiBVb3B0LmlzX3NvbWUgcHJldiB0aGVuIFBhY2tlZF8uc2V0X25leHRfaW5fYWxsIChVb3B0LnVuc2FmZV92YWx1ZSBwcmV2KSBuZXh0XG47O1xuXG5sZXQgdW5saW5rIHQgPVxuICB1bmxpbmtfZnJvbV9vYnNlcnZpbmcgdDtcbiAgdW5saW5rX2Zyb21fYWxsIHRcbjs7XG5cbm1vZHVsZSBQYWNrZWQgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBQYWNrZWRfXG5cbiAgbGV0IHNleHBfb2ZfdCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPVxuICAgIGludGVybmFsX29ic2VydmVyIHw+IFslc2V4cF9vZjogXyBpbnRlcm5hbF9vYnNlcnZlcl1cbiAgOztcblxuICBsZXQgaW52YXJpYW50IChUIHQpID0gaW52YXJpYW50IGlnbm9yZSB0XG5lbmRcbiIsIm9wZW4gQ29yZVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgJ2EgdCA9ICdhIEludGVybmFsX29ic2VydmVyLnQgcmVmIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbmxldCBpbnZhcmlhbnQgaW52YXJpYW50X2EgdCA9IEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpbnZhcmlhbnRfYSAhdFxubGV0IG9ic2VydmluZyB0ID0gSW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nICF0XG5sZXQgdXNlX2lzX2FsbG93ZWQgdCA9IEludGVybmFsX29ic2VydmVyLnVzZV9pc19hbGxvd2VkICF0XG5sZXQgdmFsdWVfZXhuIHQgPSBJbnRlcm5hbF9vYnNlcnZlci52YWx1ZV9leG4gIXRcbmxldCBpbmNyX3N0YXRlIHQgPSBJbnRlcm5hbF9vYnNlcnZlci5pbmNyX3N0YXRlICF0XG5cbmxldCBvbl91cGRhdGVfZXhuIHQgb25fdXBkYXRlX2hhbmRsZXIgPVxuICBJbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfZXhuICF0IG9uX3VwZGF0ZV9oYW5kbGVyXG47O1xuIiwiKCogW1N0YXRlXSBkZWZpbmVzIHRoZSBnbG9iYWwgc3RhdGUgb2Ygd2hpY2ggdGhlcmUgaXMgb25lIGluc3RhbmNlIGZvciBlYWNoIGNhbGwgdG9cbiAgIFtJbmNyZW1lbnRhbC5NYWtlXS5cblxuICAgVGhpcyBtb2R1bGUgZG9lcyBub3QgaGF2ZSBhbiBtbGkgYmVjYXVzZSBpdCB3b3VsZCBlc3NlbnRpYWxseSBkdXBsaWNhdGVcbiAgIFtJbmNyZW1lbnRhbC5TXSwgZXhjZXB0IGFkZGluZyBhbiBleHRyYSBbU3RhdGUudF0gYXJndW1lbnQgdG8gZnVuY3Rpb25zLiAqKVxuXG5vcGVuIENvcmVcbm9wZW4gSW1wb3J0XG5vcGVuIFR5cGVzLktpbmRcblxudHlwZSBzdGF0dXMgPSBUeXBlcy5TdGF0dXMudCA9XG4gIHwgU3RhYmlsaXppbmdcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVyc1xuICB8IE5vdF9zdGFiaWxpemluZ1xuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCBvZiBSYWlzZWRfZXhuLnRcbltAQGRlcml2aW5nIHNleHBfb2ZdXG5cbm1vZHVsZSBOb2RlX3VwZGF0ZSA9IE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlXG5cbm1vZHVsZSBSdW5fb25fdXBkYXRlX2hhbmRsZXJzID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLlJ1bl9vbl91cGRhdGVfaGFuZGxlcnMudCA9IFQgOiAnYSBOb2RlLnQgKiAnYSBOb2RlX3VwZGF0ZS50IC0+IHRcbiAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBsZXQgaW52YXJpYW50IChUIChub2RlLCBfbm9kZV91cGRhdGUpIGFzIHQpID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT4gTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGUpXG4gIDs7XG5lbmRcblxubW9kdWxlIE9ubHlfaW5fZGVidWcgPSBzdHJ1Y3RcbiAgKCogRXh0cmEgc3RhdGUga2VwdCBvbmx5IHdoZW4gW2RlYnVnXSBmb3IgdGhlIHB1cnBvc2Ugb2Ygd3JpdGluZyBhc3NlcnRpb25zLiAqKVxuICB0eXBlIHQgPSBUeXBlcy5Pbmx5X2luX2RlYnVnLnQgPVxuICAgIHsgbXV0YWJsZSBjdXJyZW50bHlfcnVubmluZ19ub2RlIDogTm9kZS5QYWNrZWQudCBvcHRpb25cbiAgICA7IG11dGFibGUgZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDogTm9kZS5QYWNrZWQudCBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBmaWVsZHMsIHNleHBfb2ZdXG5cbiAgbGV0IGludmFyaWFudCB0ID1cbiAgICBJbnZhcmlhbnQuaW52YXJpYW50IFslaGVyZV0gdCBbJXNleHBfb2Y6IHRdIChmdW4gKCkgLT5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5jdXJyZW50bHlfcnVubmluZ19ub2RlOmlnbm9yZVxuICAgICAgICB+ZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlOmlnbm9yZSlcbiAgOztcblxuICBsZXQgY3JlYXRlICgpID1cbiAgICB7IGN1cnJlbnRseV9ydW5uaW5nX25vZGUgPSBOb25lOyBleHBlcnRfbm9kZXNfY3JlYXRlZF9ieV9jdXJyZW50X25vZGUgPSBbXSB9XG4gIDs7XG5lbmRcblxubW9kdWxlIFBhY2tlZF93ZWFrX2hhc2h0YmwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVHlwZXMuUGFja2VkX3dlYWtfaGFzaHRibC50ID0gVCA6IChfLCBfKSBXZWFrX2hhc2h0YmwudCAtPiB0XG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxudHlwZSB0ID0gVHlwZXMuU3RhdGUudCA9XG4gIHsgbXV0YWJsZSBzdGF0dXMgOiBzdGF0dXNcbiAgOyBiaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzIDogYm9vbFxuICA7ICgqIFtzdGFiaWxpemF0aW9uX251bV0gc3RhcnRzIGF0IHplcm8sIGFuZCBpcyBpbmNyZW1lbnRlZCBhdCB0aGUgZW5kIG9mIGVhY2hcbiAgICAgICBzdGFiaWxpemF0aW9uLiAqKVxuICAgIG11dGFibGUgc3RhYmlsaXphdGlvbl9udW0gOiBTdGFiaWxpemF0aW9uX251bS50XG4gIDsgbXV0YWJsZSBjdXJyZW50X3Njb3BlIDogU2NvcGUudFxuICA7IHJlY29tcHV0ZV9oZWFwIDogUmVjb21wdXRlX2hlYXAudFxuICA7IGFkanVzdF9oZWlnaHRzX2hlYXAgOiBBZGp1c3RfaGVpZ2h0c19oZWFwLnRcbiAgOyAoKiBbcHJvcGFnYXRlX2ludmFsaWRpdHldIGhvbGRzIG5vZGVzIHRoYXQgaGF2ZSBpbnZhbGlkIGNoaWxkcmVuIHRoYXQgc2hvdWxkIGJlXG4gICAgICAgY29uc2lkZXJlZCBmb3IgaW52YWxpZGF0aW9uLiAgSXQgaXMgb25seSB1c2VkIGR1cmluZyBncmFwaCByZXN0cnVjdHVyaW5nOlxuICAgICAgIFtpbnZhbGlkYXRlX25vZGVdIGFuZCBbYWRkX3BhcmVudF0uICBPbmNlIGFuIGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHN0YWNrLCB3ZSB0aGVuXG4gICAgICAgaXRlcmF0ZSB1bnRpbCBpbnZhbGlkaXR5IGhhcyBwcm9wYWdhdGVkIHRvIGFsbCBhbmNlc3RvcnMgYXMgbmVjZXNzYXJ5LCBhY2NvcmRpbmcgdG9cbiAgICAgICBbTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWRdLiAqKVxuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IDogTm9kZS5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW251bV9hY3RpdmVfb2JzZXJ2ZXJzXSBpcyB0aGUgbnVtYmVyIG9mIG9ic2VydmVycyB3aG9zZSBzdGF0ZSBpcyBbQ3JlYXRlZF0gb3JcbiAgICAgICBbSW5fdXNlXS4gKilcbiAgICBtdXRhYmxlIG51bV9hY3RpdmVfb2JzZXJ2ZXJzIDogaW50XG4gIDsgKCogW2FsbF9vYnNlcnZlcnNdIGlzIHRoZSBkb3VibHktbGlua2VkIGxpc3Qgb2YgYWxsIG9ic2VydmVycyBpbiBlZmZlY3QsIG9yIHRoYXQgaGF2ZVxuICAgICAgIGJlZW4gZGlzYWxsb3dlZCBzaW5jZSB0aGUgbW9zdCByZWNlbnQgc3RhcnQgb2YgYSBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmVcbiAgICAgICBbc3RhdGVdIGFzIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICBtdXRhYmxlIGFsbF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBVb3B0LnRcbiAgOyAoKiBXZSBlbnF1ZXVlIGZpbmFsaXplZCBvYnNlcnZlcnMgaW4gYSB0aHJlYWQtc2FmZSBxdWV1ZSwgZm9yIGhhbmRsaW5nIGR1cmluZ1xuICAgICAgIHN0YWJpbGl6YXRpb24uICBXZSB1c2UgYSB0aHJlYWQtc2FmZSBxdWV1ZSBiZWNhdXNlIE9DYW1sIGZpbmFsaXplcnMgY2FuIHJ1biBpbiBhbnlcbiAgICAgICB0aHJlYWQuICopXG4gICAgZmluYWxpemVkX29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyAoKiBbbmV3X29ic2VydmVyc10gaG9sZHMgb2JzZXJ2ZXJzIGNyZWF0ZWQgc2luY2UgdGhlIG1vc3QgcmVjZW50IHN0YXJ0IG9mIGFcbiAgICAgICBzdGFiaWxpemF0aW9uIC0tIHRoZXNlIGhhdmUgW3N0YXRlXSBhcyBbQ3JlYXRlZF0gb3IgW1VubGlua2VkXS4gIEF0IHRoZSBzdGFydCBvZlxuICAgICAgIHN0YWJpbGl6YXRpb24sIHdlIGxpbmsgaW50byBbYWxsX29ic2VydmVyc10gYWxsIG9ic2VydmVycyBpbiBbbmV3X29ic2VydmVyc10gd2hvc2VcbiAgICAgICBzdGF0ZSBpcyBbQ3JlYXRlZF0gYW5kIGFkZCB0aGVtIHRvIHRoZSBbb2JzZXJ2ZXJzXSBvZiB0aGUgbm9kZSB0aGV5IGFyZSBvYnNlcnZpbmcuXG4gICAgICAgV2Ugc3RydWN0dXJlIHRoaW5ncyB0aGlzIHdheSB0byBhbGxvdyBvYnNlcnZlcnMgdG8gYmUgY3JlYXRlZCBkdXJpbmcgc3RhYmlsaXphdGlvblxuICAgICAgIHdoaWxlIHJ1bm5pbmcgdXNlciBjb2RlIChbbWFwXSwgW2JpbmRdLCBldGMpLCBidXQgdG8gbm90IGhhdmUgdG8gZGVhbCB3aXRoIG5vZGVzXG4gICAgICAgYmVjb21pbmcgbmVjZXNzYXJ5IGFuZCB0aGUgdGhlIGdyYXBoIGNoYW5naW5nIGR1cmluZyBzdWNoIGNvZGUuICopXG4gICAgbmV3X29ic2VydmVycyA6IEludGVybmFsX29ic2VydmVyLlBhY2tlZC50IFN0YWNrLnRcbiAgOyAoKiBbZGlzYWxsb3dlZF9vYnNlcnZlcnNdIGhvbGRzIGFsbCBvYnNlcnZlcnMgdGhhdCBoYXZlIGJlZW4gZGlzYWxsb3dlZCBzaW5jZSB0aGUgbW9zdFxuICAgICAgIHJlY2VudCBzdGFydCBvZiBhIHN0YWJpbGl6YXRpb24gLS0gdGhlc2UgaGF2ZSBbc3RhdGUgPSBEaXNhbGxvd2VkXS4gIEF0IHRoZSBzdGFydFxuICAgICAgIG9mIHN0YWJpbGl6YXRpb24sIHRoZXNlIGFyZSB1bmxpbmtlZCBmcm9tIFthbGxfb2JzZXJ2ZXJzXSBhbmQgdGhlaXIgc3RhdGUgaXNcbiAgICAgICBjaGFuZ2VkIHRvIFtVbmxpbmtlZF0uICBXZSBzdHJ1Y3R1cmUgdGhpbmdzIHRoaXMgd2F5IHRvIGFsbG93IHVzZXIgY29kZSBydW5uaW5nXG4gICAgICAgZHVyaW5nIHN0YWJpbGl6YXRpb24gdG8gY2FsbCBbZGlzYWxsb3dfZnV0dXJlX3VzZV0sIGJ1dCB0byBub3QgaGF2ZSB0byBkZWFsIHdpdGhcbiAgICAgICBub2RlcyBiZWNvbWluZyB1bm5lY2Vzc2FyeSBhbmQgdGhlIGdyYXBoIGNoYW5naW5nIGR1cmluZyBzdWNoIGNvZGUuICopXG4gICAgZGlzYWxsb3dlZF9vYnNlcnZlcnMgOiBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogV2UgZGVsYXkgYWxsIFtWYXIuc2V0XSBjYWxscyB0aGF0IGhhcHBlbiBkdXJpbmcgc3RhYmlsaXphdGlvbiBzbyB0aGF0IHRoZXkgdGFrZVxuICAgICAgIGVmZmVjdCBhZnRlciBzdGFiaWxpemF0aW9uLiAgQWxsIHZhcmlhYmxlcyBzZXQgZHVyaW5nIHN0YWJpbGl6YXRpb24gYXJlIHB1c2hlZCBvblxuICAgICAgIFtzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHJhdGhlciB0aGFuIHNldHRpbmcgdGhlbS4gIFRoZW4sIGFmdGVyIHRoZSBncmFwaCBoYXNcbiAgICAgICBzdGFiaWxpemVkLCB3ZSBkbyBhbGwgdGhlIHNldHMsIHNvIHRoYXQgdGhleSB0YWtlIGVmZmVjdCBhdCB0aGUgc3RhcnQgb2YgdGhlIG5leHRcbiAgICAgICBzdGFiaWxpemF0aW9uLiAqKVxuICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA6IFZhci5QYWNrZWQudCBTdGFjay50XG4gIDsgKCogW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSBoYXMgYWxsIG5vZGVzIHdpdGggaGFuZGxlcnMgdG8gY29uc2lkZXIgcnVubmluZyBhdCB0aGVcbiAgICAgICBlbmQgb2YgdGhlIG5leHQgc3RhYmlsaXphdGlvbi4gIEF0IHRoZSBlbmQgb2Ygc3RhYmlsaXphdGlvbiwgd2UgY29uc2lkZXIgZWFjaCBub2RlXG4gICAgICAgaW4gW2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uXSwgYW5kIGlmIHdlIGRlY2lkZSB0byBydW4gaXRzIG9uLXVwZGF0ZSBoYW5kbGVycyxcbiAgICAgICBwdXNoIGl0IG9uIFtydW5fb25fdXBkYXRlX2hhbmRsZXJzXS4gIFRoZW4sIG9uY2Ugd2UndmUgY29uc2lkZXJlZCBhbGwgbm9kZXMgaW5cbiAgICAgICBbaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb25dLCB3ZSBpdGVyYXRlIHRocm91Z2ggW3J1bl9vbl91cGRhdGVfaGFuZGxlcnNdIGFuZFxuICAgICAgIGFjdHVhbGx5IHJ1biB0aGUgaGFuZGxlcnMuXG5cbiAgICAgICBUaGVzZSB0d28gcGFzc2VzIGFyZSBlc3NlbnRpYWwgZm9yIGNvcnJlY3RuZXNzLiAgRHVyaW5nIHRoZSBmaXJzdCBwYXNzLCB3ZSBoYXZlbid0XG4gICAgICAgcnVuIGFueSB1c2VyIGhhbmRsZXJzLCBzbyB3ZSBrbm93IHRoYXQgdGhlIHN0YXRlIGlzIGV4YWN0bHkgYXMgaXQgd2FzIHdoZW5cbiAgICAgICBzdGFiaWxpemF0aW9uIGZpbmlzaGVkLiAgSW4gcGFydGljdWxhciwgd2Uga25vdyB0aGF0IGlmIGEgbm9kZSBpcyBuZWNlc3NhcnksIHRoZW5cbiAgICAgICBpdCBoYXMgYSBzdGFibGUgdmFsdWU7IG9uY2UgdXNlciBoYW5kbGVycyBydW4sIHdlIGRvbid0IGtub3cgdGhpcy4gIER1cmluZyB0aGVcbiAgICAgICBzZWNvbmQgcGFzcywgdXNlciBoYW5kbGVycyBjYW4gbWFrZSBjYWxscyB0byBhbnkgaW5jcmVtZW50YWwgZnVuY3Rpb24gZXhjZXB0IGZvclxuICAgICAgIFtzdGFiaWxpemVdLiAgSW4gcGFydGljdWxhciwgc29tZSBmdW5jdGlvbnMgcHVzaCBub2RlcyBvblxuICAgICAgIFtoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbl0uICBCdXQgbm8gZnVuY3Rpb25zIChleGNlcHQgZm9yIFtzdGFiaWxpemVdKSBtb2RpZnlcbiAgICAgICBbcnVuX29uX3VwZGF0ZV9oYW5kbGVyc10uICopXG4gICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiBOb2RlLlBhY2tlZC50IFN0YWNrLnRcbiAgOyBydW5fb25fdXBkYXRlX2hhbmRsZXJzIDogUnVuX29uX3VwZGF0ZV9oYW5kbGVycy50IFN0YWNrLnRcbiAgOyBtdXRhYmxlIG9ubHlfaW5fZGVidWcgOiBPbmx5X2luX2RlYnVnLnRcbiAgOyB3ZWFrX2hhc2h0YmxzIDogUGFja2VkX3dlYWtfaGFzaHRibC50IFRocmVhZF9zYWZlX3F1ZXVlLnRcbiAgOyBtdXRhYmxlIGtlZXBfbm9kZV9jcmVhdGlvbl9iYWNrdHJhY2UgOiBib29sXG4gIDsgKCogU3RhdHMuICBUaGVzZSBhcmUgYWxsIGluY3JlbWVudGVkIGF0IHRoZSBhcHByb3ByaWF0ZSBwbGFjZSwgYW5kIG5ldmVyIGRlY3JlbWVudGVkLiAqKVxuICAgIG11dGFibGUgbnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19jaGFuZ2VkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfY3JlYXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX2ludmFsaWRhdGVkIDogaW50XG4gIDsgbXV0YWJsZSBudW1fbm9kZXNfcmVjb21wdXRlZCA6IGludFxuICA7IG11dGFibGUgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQgOiBpbnRcbiAgOyBtdXRhYmxlIG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodCA6IGludFxuICA7IG11dGFibGUgbnVtX3Zhcl9zZXRzIDogaW50XG4gIH1cbltAQGRlcml2aW5nIGZpZWxkcywgc2V4cF9vZl1cblxubW9kdWxlIENsb2NrID0gc3RydWN0XG4gIHR5cGUgdCA9IFR5cGVzLkNsb2NrLnQgPVxuICAgIHsgKCogV2UgdXNlIFt0aW1pbmdfd2hlZWxdIGZvciB0aW1lLWJhc2VkIGluY3JlbWVudGFscy4gIFtub3ddIGlzIGEgdmFyaWFibGUgaG9sZGluZ1xuICAgICAgICAgdGhlIGN1cnJlbnQgdGltZS4gIFtoYW5kbGVfZmlyZWRdIGlzIHRoZSBjbG9zdXJlIHBhc3NlZCB0b1xuICAgICAgICAgW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXS4gIEl0IGxpbmtzIGFsbCB0aGUgZmlyZWQgYWxhcm0gdmFsdWVzIGludG9cbiAgICAgICAgIFtmaXJlZF9hbGFybV92YWx1ZXNdLiAgQWZ0ZXIgW1RpbWluZ193aGVlbC5hZHZhbmNlX2Nsb2NrXSByZXR1cm5zLCBpdCB0aGVuXG4gICAgICAgICB3YWxrcyB0aHJvdWdoIHRoZSBsaW5rZWQgbGlzdCBhbmQgYWN0dWFsbHkgZmlyZXMgdGhlbS4gIFRoaXMgdHdvLXBhc3MgYXBwcm9hY2ggaXNcbiAgICAgICAgIG5lY2Vzc2FyeSBiZWNhdXNlIG9uZSBpcyBub3QgYWxsb3dlZCB0byBjYWxsIFtUaW1pbmdfd2hlZWxdIGZ1bmN0aW9ucyBmcm9tIHRoZVxuICAgICAgICAgW2hhbmRsZV9maXJlZF0gdGhhdCBvbmUgcGFzc2VzIHRvIFtUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9ja10uICopXG4gICAgICB0aW1pbmdfd2hlZWwgOiBBbGFybV92YWx1ZS50IFRpbWluZ193aGVlbC50XG4gICAgOyBub3cgOiBUaW1lX25zLnQgVmFyLnRcbiAgICA7IGhhbmRsZV9maXJlZCA6IEFsYXJtLnQgLT4gdW5pdFxuICAgIDsgbXV0YWJsZSBmaXJlZF9hbGFybV92YWx1ZXMgOiBBbGFybV92YWx1ZS50IFVvcHQudFxuICAgIH1cbiAgW0BAZGVyaXZpbmcgZmllbGRzLCBzZXhwX29mXVxuXG4gIGxldCBpbnZhcmlhbnQgdCA9XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIEZpZWxkcy5pdGVyXG4gICAgICAgIH5ub3c6XG4gICAgICAgICAgKGNoZWNrIChmdW4gKG5vdyA6IF8gVmFyLnQpIC0+XG4gICAgICAgICAgICAgYXNzZXJ0IChUaW1lX25zLmVxdWFsIG5vdy52YWx1ZSAoVGltaW5nX3doZWVsLm5vdyB0LnRpbWluZ193aGVlbCkpKSlcbiAgICAgICAgfmhhbmRsZV9maXJlZDppZ25vcmVcbiAgICAgICAgfmZpcmVkX2FsYXJtX3ZhbHVlczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBmaXJlZF9hbGFybV92YWx1ZXMgLT4gYXNzZXJ0IChVb3B0LmlzX25vbmUgZmlyZWRfYWxhcm1fdmFsdWVzKSkpXG4gICAgICAgIH50aW1pbmdfd2hlZWw6KGNoZWNrIChUaW1pbmdfd2hlZWwuaW52YXJpYW50IEFsYXJtX3ZhbHVlLmludmFyaWFudCkpKVxuICA7O1xuXG4gIGxldCBpbmNyX3N0YXRlIHQgPSBWYXIuaW5jcl9zdGF0ZSB0Lm5vd1xuZW5kXG5cbmxldCBub3cgKGNsb2NrIDogQ2xvY2sudCkgPSBjbG9jay5ub3cudmFsdWVcbmxldCB0aW1pbmdfd2hlZWxfbGVuZ3RoIChjbG9jayA6IENsb2NrLnQpID0gVGltaW5nX3doZWVsLmxlbmd0aCBjbG9jay50aW1pbmdfd2hlZWxcbmxldCBudW1fc3RhYmlsaXplcyB0ID0gU3RhYmlsaXphdGlvbl9udW0udG9faW50IHQuc3RhYmlsaXphdGlvbl9udW1cbmxldCBtYXhfaGVpZ2h0X2FsbG93ZWQgdCA9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQuYWRqdXN0X2hlaWdodHNfaGVhcFxubGV0IG1heF9oZWlnaHRfc2VlbiB0ID0gQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X3NlZW4gdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG5cbmxldCBpdGVyX29ic2VydmVycyB0IH5mID1cbiAgbGV0IHIgPSByZWYgdC5hbGxfb2JzZXJ2ZXJzIGluXG4gIHdoaWxlIFVvcHQuaXNfc29tZSAhciBkb1xuICAgIGxldCBvYnNlcnZlciA9IFVvcHQudW5zYWZlX3ZhbHVlICFyIGluXG4gICAgciA6PSBJbnRlcm5hbF9vYnNlcnZlci5QYWNrZWQubmV4dF9pbl9hbGwgb2JzZXJ2ZXI7XG4gICAgZiBvYnNlcnZlclxuICBkb25lXG47O1xuXG5sZXQgZGlyZWN0bHlfb2JzZXJ2ZWQgdCA9XG4gIGxldCByIDogTm9kZS5QYWNrZWQudCBsaXN0IHJlZiA9IHJlZiBbXSBpblxuICBpdGVyX29ic2VydmVycyB0IH5mOihmdW4gKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpIC0+XG4gICAgciA6PSBUIGludGVybmFsX29ic2VydmVyLm9ic2VydmluZyA6OiAhcik7XG4gICFyXG47O1xuXG5sZXQgc2F2ZV9kb3QgdCBvdXQgPSBOb2RlLlBhY2tlZC5zYXZlX2RvdCBvdXQgKGRpcmVjdGx5X29ic2VydmVkIHQpXG5sZXQgc2F2ZV9kb3RfdG9fZmlsZSB0IGZpbGUgPSBOb2RlLlBhY2tlZC5zYXZlX2RvdF90b19maWxlIGZpbGUgKGRpcmVjdGx5X29ic2VydmVkIHQpXG5sZXQgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mID0gTm9kZS5QYWNrZWQuaXRlcl9kZXNjZW5kYW50cyAoZGlyZWN0bHlfb2JzZXJ2ZWQgdCkgfmZcblxubW9kdWxlIFN0YXRzID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBtYXhfbnVtX3BhcmVudHMgOiBpbnRcbiAgICA7IHBlcmNlbnRhZ2Vfb2Zfbm9kZXNfYnlfbnVtX3BhcmVudHMgOiAoaW50ICogUGVyY2VudC50KSBsaXN0XG4gICAgfVxuICBbQEBkZXJpdmluZyBzZXhwXVxuZW5kXG5cbmxldCBzdGF0cyB0ID1cbiAgbGV0IG1heF9udW1fcGFyZW50cyA9IHJlZiAoLTEpIGluXG4gIGxldCBudW1fbmVjZXNzYXJ5X25vZGVzID0gcmVmIDAgaW5cbiAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICBpbmNyIG51bV9uZWNlc3Nhcnlfbm9kZXM7XG4gICAgbWF4X251bV9wYXJlbnRzIDo9IEludC5tYXggIW1heF9udW1fcGFyZW50cyBub2RlLm51bV9wYXJlbnRzKTtcbiAgbGV0IG1heF9udW1fcGFyZW50cyA9ICFtYXhfbnVtX3BhcmVudHMgaW5cbiAgbGV0IG51bV9ub2Rlc19ieV9udW1fcGFyZW50cyA9IEFycmF5LmNyZWF0ZSB+bGVuOihtYXhfbnVtX3BhcmVudHMgKyAxKSAwIGluXG4gIGl0ZXJfb2JzZXJ2ZXJfZGVzY2VuZGFudHMgdCB+ZjooZnVuIChUIG5vZGUpIC0+XG4gICAgbGV0IG51bV9wYXJlbnRzID0gbm9kZS5udW1fcGFyZW50cyBpblxuICAgIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cy4obnVtX3BhcmVudHMpIDwtIG51bV9ub2Rlc19ieV9udW1fcGFyZW50cy4obnVtX3BhcmVudHMpICsgMSk7XG4gIGxldCBwZXJjZW50YWdlX29mX25vZGVzX2J5X251bV9wYXJlbnRzID1cbiAgICBBcnJheS5mb2xkaSBudW1fbm9kZXNfYnlfbnVtX3BhcmVudHMgfmluaXQ6W10gfmY6KGZ1biBpIGFjIG51bV9ub2RlcyAtPlxuICAgICAgaWYgbnVtX25vZGVzID0gMFxuICAgICAgdGhlbiBhY1xuICAgICAgZWxzZSAoaSwgUGVyY2VudC5vZl9tdWx0IChmbG9hdCBudW1fbm9kZXMgLy4gZmxvYXQgIW51bV9uZWNlc3Nhcnlfbm9kZXMpKSA6OiBhYylcbiAgICB8PiBMaXN0LnJldlxuICBpblxuICB7IFN0YXRzLm1heF9udW1fcGFyZW50czsgcGVyY2VudGFnZV9vZl9ub2Rlc19ieV9udW1fcGFyZW50cyB9XG47O1xuXG5sZXQgYW1fc3RhYmlsaXppbmcgdCA9XG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIC0+IHRydWVcbiAgfCBOb3Rfc3RhYmlsaXppbmcgLT4gZmFsc2VcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJjYW5ub3QgY2FsbCBhbV9zdGFiaWxpemluZyAtLSBzdGFiaWxpemUgcHJldmlvdXNseSByYWlzZWRcIlxuICAgICAgcmFpc2VkX2V4blxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnRdXG47O1xuXG5sZXQgaW52YXJpYW50IHQgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT4gKClcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IFN0YWJpbGl6aW5nIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgSW52YXJpYW50LmludmFyaWFudCBbJWhlcmVdIHQgWyVzZXhwX29mOiB0XSAoZnVuICgpIC0+XG4gICAgICBsZXQgY2hlY2sgZiA9IEludmFyaWFudC5jaGVja19maWVsZCB0IGYgaW5cbiAgICAgIGl0ZXJfb2JzZXJ2ZXJzIHQgfmY6KGZ1biAoVCBpbnRlcm5hbF9vYnNlcnZlcikgLT5cbiAgICAgICAgKG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgIHwgSW5fdXNlIHwgRGlzYWxsb3dlZCAtPiAoKVxuICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT5cbiAgICAgICAgICAgZmFpbHdpdGhzXG4gICAgICAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAgICAgIFwibWVtYmVyIG9mIGFsbF9vYnNlcnZlcnMgd2l0aCB1bmV4cGVjdGVkIHN0YXRlXCJcbiAgICAgICAgICAgICBpbnRlcm5hbF9vYnNlcnZlclxuICAgICAgICAgICAgIFslc2V4cF9vZjogXyBJbnRlcm5hbF9vYnNlcnZlci50XSk7XG4gICAgICAgIEludGVybmFsX29ic2VydmVyLmludmFyaWFudCBpZ25vcmUgaW50ZXJuYWxfb2JzZXJ2ZXIpO1xuICAgICAgaXRlcl9vYnNlcnZlcl9kZXNjZW5kYW50cyB0IH5mOihmdW4gKFQgbm9kZSkgLT5cbiAgICAgICAgTm9kZS5pbnZhcmlhbnQgaWdub3JlIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoYW1fc3RhYmlsaXppbmcgdCkgdGhlbiBhc3NlcnQgKFVvcHQuaXNfbm9uZSBub2RlLm9sZF92YWx1ZV9vcHQpO1xuICAgICAgICBhc3NlcnQgKFxuICAgICAgICAgIG5vZGUuaGVpZ2h0IDw9IEFkanVzdF9oZWlnaHRzX2hlYXAubWF4X2hlaWdodF9zZWVuIHQuYWRqdXN0X2hlaWdodHNfaGVhcCkpO1xuICAgICAgYXNzZXJ0IChcbiAgICAgICAgQWRqdXN0X2hlaWdodHNfaGVhcC5tYXhfaGVpZ2h0X2FsbG93ZWQgdC5hZGp1c3RfaGVpZ2h0c19oZWFwXG4gICAgICAgID0gUmVjb21wdXRlX2hlYXAubWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXApO1xuICAgICAgRmllbGRzLml0ZXJcbiAgICAgICAgfnN0YXR1czppZ25vcmVcbiAgICAgICAgfmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHM6aWdub3JlXG4gICAgICAgIH5zdGFiaWxpemF0aW9uX251bTooY2hlY2sgU3RhYmlsaXphdGlvbl9udW0uaW52YXJpYW50KVxuICAgICAgICB+Y3VycmVudF9zY29wZTpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBjdXJyZW50X3Njb3BlIC0+IGFzc2VydCAocGh5c19lcXVhbCBjdXJyZW50X3Njb3BlIFNjb3BlLnRvcCkpKVxuICAgICAgICB+cmVjb21wdXRlX2hlYXA6KGNoZWNrIFJlY29tcHV0ZV9oZWFwLmludmFyaWFudClcbiAgICAgICAgfmFkanVzdF9oZWlnaHRzX2hlYXA6XG4gICAgICAgICAgKGNoZWNrIChmdW4gYWRqdXN0X2hlaWdodHNfaGVhcCAtPlxuICAgICAgICAgICAgIGFzc2VydCAoQWRqdXN0X2hlaWdodHNfaGVhcC5sZW5ndGggYWRqdXN0X2hlaWdodHNfaGVhcCA9IDApO1xuICAgICAgICAgICAgIEFkanVzdF9oZWlnaHRzX2hlYXAuaW52YXJpYW50IGFkanVzdF9oZWlnaHRzX2hlYXApKVxuICAgICAgICB+cHJvcGFnYXRlX2ludmFsaWRpdHk6XG4gICAgICAgICAgKGNoZWNrIChmdW4gcHJvcGFnYXRlX2ludmFsaWRpdHkgLT5cbiAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHByb3BhZ2F0ZV9pbnZhbGlkaXR5KSkpXG4gICAgICAgIH5udW1fYWN0aXZlX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBudW1fYWN0aXZlX29ic2VydmVycyAtPiBhc3NlcnQgKG51bV9hY3RpdmVfb2JzZXJ2ZXJzID49IDApKSlcbiAgICAgICAgfmFsbF9vYnNlcnZlcnM6aWdub3JlXG4gICAgICAgIH5maW5hbGl6ZWRfb2JzZXJ2ZXJzOmlnbm9yZVxuICAgICAgICB+bmV3X29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgICgqIFdoZW4gYW4gb2JzZXJ2ZXIgaXMgYWRkZWQgdG8gW25ld19vYnNlcnZlcnNdLCBpdCBoYXMgW3N0YXRlID0gQ3JlYXRlZF0uXG4gICAgICAgICAgICAgICAgICAgVGhlIG9ubHkgcG9zc2libGUgdHJhbnNpdGlvbnMgZnJvbSB0aGVyZSBhcmUgdG8gW1VubGlua2VkXSBvciB0b1xuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdLCB3aGljaCBhbHNvIHJlbW92ZXMgaXQgZnJvbSBbbmV3X29ic2VydmVyc10sIG5ldmVyIHRvIGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgICAgYWdhaW4uICBUaHVzIGl0IGlzIGltcG9zc2libGUgZm9yIGFuIG9ic2VydmVyIGluIFtuZXdfb2JzZXJ2ZXJzXSB0byBiZVxuICAgICAgICAgICAgICAgICAgIFtJbl91c2VdIG9yIFtEaXNhbGxvd2VkXS4gKilcbiAgICAgICAgICAgICAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBDcmVhdGVkIHwgVW5saW5rZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IEluX3VzZSB8IERpc2FsbG93ZWQgLT4gYXNzZXJ0IGZhbHNlKSkpXG4gICAgICAgIH5kaXNhbGxvd2VkX29ic2VydmVyczpcbiAgICAgICAgICAoY2hlY2tcbiAgICAgICAgICAgICAoU3RhY2suaW52YXJpYW50IChmdW4gcGFja2VkIC0+XG4gICAgICAgICAgICAgICAgSW50ZXJuYWxfb2JzZXJ2ZXIuUGFja2VkLmludmFyaWFudCBwYWNrZWQ7XG4gICAgICAgICAgICAgICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGludGVybmFsX29ic2VydmVyLnN0YXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IERpc2FsbG93ZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IENyZWF0ZWQgfCBJbl91c2UgfCBVbmxpbmtlZCAtPiBhc3NlcnQgZmFsc2UpKSlcbiAgICAgICAgfnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbjpcbiAgICAgICAgICAoY2hlY2sgKGZ1biBzZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gLT5cbiAgICAgICAgICAgICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgICAgICAgICAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgTm90X3N0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBhc3NlcnQgKFN0YWNrLmlzX2VtcHR5IHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbilcbiAgICAgICAgICAgICB8IFN0YWJpbGl6aW5nIC0+XG4gICAgICAgICAgICAgICBTdGFjay5pbnZhcmlhbnRcbiAgICAgICAgICAgICAgICAgKGZ1biAoVmFyLlBhY2tlZC5UIHZhcikgLT5cbiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChVb3B0LmlzX3NvbWUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgICAgICAgICAgIHNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikpXG4gICAgICAgIH5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbjooY2hlY2sgKFN0YWNrLmludmFyaWFudCBOb2RlLlBhY2tlZC5pbnZhcmlhbnQpKVxuICAgICAgICB+cnVuX29uX3VwZGF0ZV9oYW5kbGVyczpcbiAgICAgICAgICAoY2hlY2sgKFN0YWNrLmludmFyaWFudCBSdW5fb25fdXBkYXRlX2hhbmRsZXJzLmludmFyaWFudCkpXG4gICAgICAgIH5vbmx5X2luX2RlYnVnOihjaGVjayBPbmx5X2luX2RlYnVnLmludmFyaWFudClcbiAgICAgICAgfndlYWtfaGFzaHRibHM6aWdub3JlXG4gICAgICAgIH5rZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2JlY2FtZV9uZWNlc3Nhcnk6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfYmVjYW1lX3VubmVjZXNzYXJ5Omlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX2NoYW5nZWQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfY3JlYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19pbnZhbGlkYXRlZDppZ25vcmVcbiAgICAgICAgfm51bV9ub2Rlc19yZWNvbXB1dGVkOmlnbm9yZVxuICAgICAgICB+bnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9vbmVfY2hpbGQ6aWdub3JlXG4gICAgICAgIH5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX21pbl9oZWlnaHQ6aWdub3JlXG4gICAgICAgIH5udW1fdmFyX3NldHM6aWdub3JlKVxuOztcblxubGV0IGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZSB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXIgPVxuICBtYXRjaCB0LnN0YXR1cyB3aXRoXG4gIHwgTm90X3N0YWJpbGl6aW5nIC0+ICgpXG4gIHwgUnVubmluZ19vbl91cGRhdGVfaGFuZGxlcnMgLT5cbiAgICBpZiBub3QgYWxsb3dfaW5fdXBkYXRlX2hhbmRsZXJcbiAgICB0aGVuIChcbiAgICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgICBmYWlsd2l0aHNcbiAgICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgb24tdXBkYXRlIGhhbmRsZXJzXCIgbmFtZSlcbiAgICAgICAgYmFja3RyYWNlXG4gICAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdKVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgbGV0IGJhY2t0cmFjZSA9IEJhY2t0cmFjZS5nZXQgKCkgaW5cbiAgICBmYWlsd2l0aHNcbiAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgIChzcHJpbnRmIFwiY2Fubm90ICVzIC0tIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiIG5hbWUpXG4gICAgICAocmFpc2VkX2V4biwgYmFja3RyYWNlKVxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnQgKiBCYWNrdHJhY2UudF1cbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGxldCBiYWNrdHJhY2UgPSBCYWNrdHJhY2UuZ2V0ICgpIGluXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICAoc3ByaW50ZiBcImNhbm5vdCAlcyBkdXJpbmcgc3RhYmlsaXphdGlvblwiIG5hbWUpXG4gICAgICBiYWNrdHJhY2VcbiAgICAgIFslc2V4cF9vZjogQmFja3RyYWNlLnRdXG47O1xuXG5sZXQgc2V0X2hlaWdodCAobm9kZSA6IF8gTm9kZS50KSBoZWlnaHQgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgQWRqdXN0X2hlaWdodHNfaGVhcC5zZXRfaGVpZ2h0IHQuYWRqdXN0X2hlaWdodHNfaGVhcCBub2RlIGhlaWdodFxuOztcblxubGV0IHNldF9tYXhfaGVpZ2h0X2FsbG93ZWQgdCBoZWlnaHQgPVxuICBlbnN1cmVfbm90X3N0YWJpbGl6aW5nIHQgfm5hbWU6XCJzZXRfbWF4X2hlaWdodF9hbGxvd2VkXCIgfmFsbG93X2luX3VwZGF0ZV9oYW5kbGVyOnRydWU7XG4gIEFkanVzdF9oZWlnaHRzX2hlYXAuc2V0X21heF9oZWlnaHRfYWxsb3dlZCB0LmFkanVzdF9oZWlnaHRzX2hlYXAgaGVpZ2h0O1xuICBSZWNvbXB1dGVfaGVhcC5zZXRfbWF4X2hlaWdodF9hbGxvd2VkIHQucmVjb21wdXRlX2hlYXAgaGVpZ2h0XG47O1xuXG5sZXQgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBub3Qgbm9kZS5pc19pbl9oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvblxuICB0aGVuIChcbiAgICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIHRydWU7XG4gICAgU3RhY2sucHVzaCB0LmhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIChUIG5vZGUpKVxuOztcblxubGV0IHJlYyByZW1vdmVfY2hpbGRyZW4gOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gcGFyZW50IC0+XG4gIE5vZGUuaXRlcmlfY2hpbGRyZW4gcGFyZW50IH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgcmVtb3ZlX2NoaWxkIH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleClcblxuYW5kIHJlbW92ZV9jaGlsZCA6IHR5cGUgYSBiLiBjaGlsZDpiIE5vZGUudCAtPiBwYXJlbnQ6YSBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXQgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIE5vZGUucmVtb3ZlX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gIGNoZWNrX2lmX3VubmVjZXNzYXJ5IGNoaWxkXG5cbmFuZCBjaGVja19pZl91bm5lY2Vzc2FyeSA6IHR5cGUgYS4gYSBOb2RlLnQgLT4gdW5pdCA9XG4gIGZ1biBub2RlIC0+IGlmIG5vdCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSkgdGhlbiBiZWNhbWVfdW5uZWNlc3Nhcnkgbm9kZVxuXG5hbmQgYmVjYW1lX3VubmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA8LSB0Lm51bV9ub2Rlc19iZWNhbWVfdW5uZWNlc3NhcnkgKyAxO1xuICBpZiBub2RlLm51bV9vbl91cGRhdGVfaGFuZGxlcnMgPiAwIHRoZW4gaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZTtcbiAgbm9kZS5oZWlnaHQgPC0gLTE7XG4gIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAobWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgdSAtPiBVbm9yZGVyZWRfYXJyYXlfZm9sZC5mb3JjZV9mdWxsX2NvbXB1dGUgdVxuICAgfCBFeHBlcnQgcCAtPiBFeHBlcnQub2JzZXJ2YWJpbGl0eV9jaGFuZ2UgcCB+aXNfbm93X29ic2VydmFibGU6ZmFsc2VcbiAgIHwgXyAtPiAoKSk7XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSkpO1xuICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgcmVtb3ZlX2FsYXJtIChjbG9jayA6IENsb2NrLnQpIGFsYXJtID1cbiAgaWYgVGltaW5nX3doZWVsLm1lbSBjbG9jay50aW1pbmdfd2hlZWwgYWxhcm1cbiAgdGhlbiBUaW1pbmdfd2hlZWwucmVtb3ZlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybVxuOztcblxuKCogQW4gaW52YWxpZCBub2RlIGlzIG5vZGUgd2hvc2Uga2luZCBpcyBbSW52YWxpZF0uICBBIG5vZGUncyBraW5kIGlzIHNldCB0byBbSW52YWxpZF1cbiAgIHdoZW4gdGhlIGxocyBvZiBpdHMgc2NvcGUgY2hhbmdlcywgb3Igb25lIGlmIGl0cyBjaGlsZHJlbiBwcm9wYWdhdGUgdGhlIGludmFsaWRpdHlcbiAgIHVwd2FyZCAoc2VlIFtOb2RlLnNob3VsZF9iZV9pbnZhbGlkYXRlZF0gdG8gc2VlIGluIHdoaWNoIGNhc2UgaW52YWxpZGl0eSBwcm9wYWdhdGlvblxuICAgc3RvcHMpLiAgSW52YWxpZGF0aW5nIGEgbm9kZSBkaXNjb25uZWN0cyBpdCBmcm9tIGl0cyBjaGlsZHJlbiwgd2hpY2ggbWVhbnM6XG5cbiAgIDEuIGFuIGludmFsaWQgbm9kZSBjYW5ub3QgZW5kIHVwIG9uIHRoZSBzY2hlZHVsZXIgKGlmIGl0IGlzIG9uIHRoZSBzY2hlZHVsZXIgd2hlblxuICAgaXQgaXMgaW52YWxpZGF0ZWQsIGl0IGlzIHJlbW92ZWQpXG4gICAyLiBhbiBpbnZhbGlkIG5vZGUgZG9lc24ndCBtYWtlIGl0cyBjaGlsZHJlbiBuZWNlc3NhcnkgYW55bW9yZS5cblxuICAgSW52YWxpZCBub2RlcyB1c3VhbGx5IGhhdmUgbm8gcGFyZW50cywgYmVjYXVzZSB0aGUgdXB3YXJkIGludmFsaWRpdHkgcHJvcGFnYXRpb24gbWVhbnNcbiAgIHRoYXQgdGhlaXIgcGFyZW50cyB3aWxsIHRoZW1zZWx2ZXMgYmVjb21lIGludmFsaWQgYW5kIGRpc2Nvbm5lY3QgZnJvbSB0aGVpciBjaGlsZHJlbi5cbiAgIEhvd2V2ZXIsIFtpZl0sIFtqb2luXSBvciBbYmluZF0gYXJlIG5vdCBpbnZhbGlkYXRlZCBieSB0aGUgdXB3YXJkIHByb3BhZ2F0aW9uLCBzbyBhblxuICAgaW52YWxpZCBub2RlIGNhbiBzdGlsbCBoYXZlIHBhcmVudHMuICBJbnZhbGlkIG5vZGVzIGNhbiBiZSBuZWNlc3NhcnksIGluIHRoZSBjYXNlIHdoZXJlXG4gICB0aGV5IGhhdmUgcGFyZW50cywgYW5kIGFsc28gd2hlbiB0aGV5IGFyZSBvYnNlcnZlZC5cblxuICAgVGhlIHVwd2FyZCBwcm9wYWdhdGlvbiBvZiBpbnZhbGlkaXR5IGhhcHBlbnMgYm90aCB3aGVuIGEgbm9kZSBiZWNvbWVzIGludmFsaWQsIGFuZCB3aGVuXG4gICB0cnlpbmcgdG8gYWRkIGFuIGVkZ2UgZnJvbSBhbiBpbnZhbGlkIGNoaWxkIG5vZGUgdG8gYW5vdGhlciBub2RlLiAgQmVjYXVzZSBpbnZhbGlkaXR5XG4gICBpcyBvbmx5IHByb3BhZ2F0ZWQgdXB3YXJkLCBhbmQgYmVjYXVzZSB0aGUgcmhzIG9mIGEgYmluZCBpcyBpbnZhbGlkYXRlZCBiZWZvcmUgaXRcbiAgIGV4ZWN1dGVzLCBhIG5vZGUgY2Fubm90IGJlIGJvdGggY29tcHV0ZWQgYW5kIGludmFsaWRhdGVkIGluIHRoZSBzYW1lIHN0YWJpbGl6YXRpb24uXG5cbiAgIFdoZW4gaW52YWxpZGF0aW5nLCB3ZSBjYW4ndCBhc3N1bWUgbXVjaCBhYm91dCB0aGUgbm9kZXMgd2UgdmlzaXQuICBXZSBjYW5ub3QgYXNzdW1lXG4gICB0aGF0IG5vZGVzIGFyZSB2YWxpZCAodGhlIHJocyBjYW4gY29udGFpbiBwcmV2aW91c2x5IGludmFsaWRhdGVkIG5vZGVzKSwgb3IgdGhhdCBub2Rlc1xuICAgYXJlIHVubmVjZXNzYXJ5IChub2RlcyBjYW4gYmUgbWFkZSBuZWNlc3Nhcnkgd2l0aG91dCBnb2luZyB0aHJvdWdoIHRoZWlyIGNvbnRhaW5pbmdcbiAgIGJpbmRzKS4gKilcblxubGV0IHJlYyBpbnZhbGlkYXRlX25vZGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBpZiBOb2RlLmlzX3ZhbGlkIG5vZGVcbiAgdGhlbiAoXG4gICAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgbm9kZS5udW1fb25fdXBkYXRlX2hhbmRsZXJzID4gMCB0aGVuIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG5vZGU7XG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChVb3B0LmlzX25vbmUgbm9kZS5vbGRfdmFsdWVfb3B0KTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBub2RlLnJlY29tcHV0ZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCA8LSB0Lm51bV9ub2Rlc19pbnZhbGlkYXRlZCArIDE7XG4gICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICAoKiBUaGUgbm9kZSBkb2Vzbid0IGhhdmUgY2hpbGRyZW4gYW55bW9yZSwgc28gd2UgY2FuIGxvd2VyIGl0cyBoZWlnaHQgYXMgbXVjaCBhc1xuICAgICAgICAgcG9zc2libGUsIHRvIG9uZSBncmVhdGVyIHRoYW4gdGhlIHNjb3BlIGl0IHdhcyBjcmVhdGVkIGluLiAgQWxzbywgYmVjYXVzZSB3ZVxuICAgICAgICAgYXJlIGxvd2VyaW5nIHRoZSBoZWlnaHQsIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0IGFueSBvZiBpdHMgYW5jZXN0b3JzJyBoZWlnaHRzLlxuICAgICAgICAgV2UgY291bGQgbGVhdmUgdGhlIGhlaWdodCBhbG9uZSwgYnV0IHdlIG1heSBhcyB3ZWxsIGxvd2VyIGl0IGFzIG11Y2ggYXNcbiAgICAgICAgIHBvc3NpYmxlIHRvIGF2b2lkIG1ha2luZyB0aGUgaGVpZ2h0cyBvZiBhbnkgZnV0dXJlIGFuY2VzdG9ycyB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICBsYXJnZS4gKilcbiAgICAgIG5vZGUuaGVpZ2h0IDwtIFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgICAoKiBXZSBkb24ndCBzZXQgW25vZGUuY3JlYXRlZF9pbl0gb3IgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdOyB3ZSBsZWF2ZSBbbm9kZV1cbiAgICAgICBpbiB0aGUgc2NvcGUgaXQgd2FzIGNyZWF0ZWQgaW4uICBJZiB0aGF0IHNjb3BlIGlzIGV2ZXIgaW52YWxpZGF0ZWQsIHRoZW4gdGhhdFxuICAgICAgIHdpbGwgY2xlYXIgW25vZGUubmV4dF9ub2RlX2luX3NhbWVfc2NvcGVdICopXG4gICAgKG1hdGNoIG5vZGUua2luZCB3aXRoXG4gICAgIHwgQXQgYXQgLT4gcmVtb3ZlX2FsYXJtIGF0LmNsb2NrIGF0LmFsYXJtXG4gICAgIHwgQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyAtPiByZW1vdmVfYWxhcm0gYXRfaW50ZXJ2YWxzLmNsb2NrIGF0X2ludGVydmFscy5hbGFybVxuICAgICB8IEJpbmRfbWFpbiBiaW5kIC0+IGludmFsaWRhdGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgYWxhcm07IGNsb2NrOyBfIH0gLT4gcmVtb3ZlX2FsYXJtIGNsb2NrIGFsYXJtXG4gICAgIHwgXyAtPiAoKSk7XG4gICAgTm9kZS5zZXRfa2luZCBub2RlIEludmFsaWQ7XG4gICAgKCogSWYgd2UgY2FsbGVkIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gcmlnaHQgYXdheSBvbiB0aGUgcGFyZW50cywgd2Ugd291bGQgZ2V0IGludG9cbiAgICAgICB0cm91YmxlLiAgVGhlIHBhcmVudCB3b3VsZCBkaXNjb25uZWN0IGl0c2VsZiBmcm9tIHRoZSBjdXJyZW50IG5vZGUsIHRodXNcbiAgICAgICBtb2RpZnlpbmcgdGhlIGxpc3Qgb2YgcGFyZW50cyB3ZSBpdGVyYXRlIG9uLiAgRXZlbiBpZiB3ZSBtYWRlIGEgc3BlY2lhbCBjYXNlLCBpdFxuICAgICAgIHN0aWxsIHdvdWxkbid0IGJlIGVub3VnaCB0byBoYW5kbGUgb3RoZXIgY2FzZXMgd2hlcmUgdGhlIGxpc3Qgb2YgcGFyZW50cyBpc1xuICAgICAgIG1vZGlmaWVkIChlLmcuIHdoZW4gW2xoc10gaXMgaW52YWxpZGF0ZWQgaW4gdGhlIGV4YW1wbGUgaW4gdGhlIGNvbW1lbnQgYWJvdXRcbiAgICAgICBbY2FuX3JlY29tcHV0ZV9ub3ddIGZhciBiZWxvdykuICopXG4gICAgZm9yIGluZGV4ID0gMCB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgU3RhY2sucHVzaCB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IChOb2RlLmdldF9wYXJlbnQgbm9kZSB+aW5kZXgpXG4gICAgZG9uZTtcbiAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAobm90IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGUpKTtcbiAgICBpZiBOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUgdGhlbiBSZWNvbXB1dGVfaGVhcC5yZW1vdmUgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuXG5hbmQgaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBub2RlID1cbiAgbGV0IHIgPSByZWYgbm9kZSBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBpbnZhbGlkYXRlX25vZGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxuKCogV2hlbiBbbm90IHQuYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3Joc10gYW5kIGEgYmluZCdzIGxocyBjaGFuZ2VzLCB3ZSBtb3ZlXG4gICBub2RlcyBjcmVhdGVkIG9uIHRoZSBiaW5kJ3MgcmhzIHVwIHRvIGl0cyBwYXJlbnQgYmluZCwgYXMgb3Bwb3NlZCB0byBbU2NvcGUuVG9wXS4gIFRoaXNcbiAgIG1haW50YWlucyB0aGVpciBkZXBlbmRlbmNlIG9uIHZhbGlkIGJpbmQgbGVmdC1oYW5kIHNpZGVzLCBhbmQga2VlcHMgdGhlbSBoaWdoZXIgaW4gdGhlXG4gICBncmFwaC4gIFRoaXMgaW4gdHVybiBtZWFucyB0aGF0IHdlIHdpbGwgY29udGludWUgdG8gY29tcHV0ZSB0aG9zZSBub2RlcyBhZnRlciB0aGVcbiAgIHBhcmVudCBiaW5kJ3MgbGhzLCB3aGljaCBnaXZlcyB0aGVtIG1vcmUgb2YgYSBjaGFuY2UgdG8gYmVjb21lIHVubmVjZXNzYXJ5IGFuZCBub3QgYmVcbiAgIGNvbXB1dGVkIHNob3VsZCB0aGUgcGFyZW50IGJpbmQncyBsaHMgY2hhbmdlLiAqKVxubGV0IHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHMgX3QgKGZpcnN0X25vZGVfb25fcmhzIDogTm9kZS5QYWNrZWQudCBVb3B0LnQpIH5uZXdfc2NvcGUgPVxuICBsZXQgciA9IHJlZiBmaXJzdF9ub2RlX29uX3JocyBpblxuICB3aGlsZSBVb3B0LmlzX3NvbWUgIXIgZG9cbiAgICBsZXQgKFQgbm9kZV9vbl9yaHMpID0gVW9wdC51bnNhZmVfdmFsdWUgIXIgaW5cbiAgICByIDo9IG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlO1xuICAgIG5vZGVfb25fcmhzLm5leHRfbm9kZV9pbl9zYW1lX3Njb3BlIDwtIFVvcHQubm9uZTtcbiAgICBub2RlX29uX3Jocy5jcmVhdGVkX2luIDwtIG5ld19zY29wZTtcbiAgICBTY29wZS5hZGRfbm9kZSBuZXdfc2NvcGUgbm9kZV9vbl9yaHNcbiAgZG9uZVxuOztcblxubGV0IHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHQgPVxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucHJvcGFnYXRlX2ludmFsaWRpdHkpIGRvXG4gICAgbGV0IChUIG5vZGUpID0gU3RhY2sucG9wX2V4biB0LnByb3BhZ2F0ZV9pbnZhbGlkaXR5IGluXG4gICAgaWYgTm9kZS5pc192YWxpZCBub2RlXG4gICAgdGhlblxuICAgICAgaWYgTm9kZS5zaG91bGRfYmVfaW52YWxpZGF0ZWQgbm9kZVxuICAgICAgdGhlbiBpbnZhbGlkYXRlX25vZGUgbm9kZVxuICAgICAgZWxzZSAoXG4gICAgICAgICgqIFtOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIG5vZGVdIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIG5vZGUgaXMgbmVjZXNzYXJ5LiBUaGlzIGlzIGJlY2F1c2UgY2hpbGRyZW4gY2FuIG9ubHkgcG9pbnQgdG8gbmVjZXNzYXJ5XG4gICAgICAgICAgICAgcGFyZW50c1xuICAgICAgICAgICAtIG5vZGUgaXMgc3RhbGUuIFRoaXMgaXMgYmVjYXVzZTogRm9yIGJpbmQsIGlmLCBqb2luLCB0aGlzIGlzIHRydWUgYmVjYXVzZVxuICAgICAgICAgICAtIGVpdGhlciB0aGUgaW52YWxpZGF0aW9uIGlzIGNhdXNlZCBieSB0aGUgbGhzIGNoYW5naW5nIChpbiB3aGljaCBjYXNlIHRoZVxuICAgICAgICAgICAgIGxocy1jaGFuZ2Ugbm9kZSBiZWluZyBuZXdlciBtYWtlcyB1cyBzdGFsZSkuXG4gICAgICAgICAgIC0gb3IgYSBjaGlsZCBiZWNhbWUgaW52YWxpZCB0aGlzIHN0YWJpbGl6YXRpb24gY3ljbGUsIGluIHdoaWNoIGNhc2UgaXQgaGFzXG4gICAgICAgICAgICAgdC5jaGFuZ2VkX2F0IG9mIFt0LnN0YWJpbGl6YXRpb25fbnVtXSwgYW5kIHNvIFtub2RlXSBpcyBzdGFsZVxuICAgICAgICAgICAtIG9yIFtub2RlXSBqdXN0IGJlY2FtZSBuZWNlc3NhcnkgYW5kIHRyaWVkIGNvbm5lY3RpbmcgdG8gYW4gYWxyZWFkeSBpbnZhbGlkXG4gICAgICAgICAgICAgY2hpbGQuIEluIHRoYXQgY2FzZSwgW2NoaWxkLmNoYW5nZWRfYXQgPiBub2RlLnJlY29tcHV0ZWRfYXRdIGZvciB0aGF0IGNoaWxkLFxuICAgICAgICAgICAgIGJlY2F1c2UgaWYgd2UgaGFkIGJlZW4gcmVjb21wdXRlZCB3aGVuIHRoYXQgY2hpbGQgY2hhbmdlZCwgd2Ugd291bGQgaGF2ZSBiZWVuXG4gICAgICAgICAgICAgbWFkZSBpbnZhbGlkIGJhY2sgdGhlbi4gIEZvciBleHBlcnQgbm9kZXMsIHRoZSBhcmd1bWVudCBpcyB0aGUgc2FtZSwgZXhjZXB0XG4gICAgICAgICAgICAgdGhhdCBpbnN0ZWFkIG9mIGxocy1jaGFuZ2Ugbm9kZXMgbWFrZSB0aGUgZXhwZXJ0IG5vZGVzIHN0YWxlLCBpdCdzIG1hZGUgc3RhbGVcbiAgICAgICAgICAgICBleHBsaWNpdGVseSB3aGVuIGFkZGluZyBvciByZW1vdmluZyBjaGlsZHJlbi4gKilcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIChtYXRjaCBub2RlLmtpbmQgd2l0aFxuICAgICAgICAgfCBFeHBlcnQgZXhwZXJ0IC0+XG4gICAgICAgICAgICgqIElmIG11bHRpcGxlIGNoaWxkcmVuIGFyZSBpbnZhbGlkLCB0aGV5IHdpbGwgcHVzaCB1cyBhcyBtYW55IHRpbWVzIG9uIHRoZVxuICAgICAgICAgICAgICBwcm9wYWdhdGlvbiBzdGFjaywgc28gd2UgY291bnQgdGhlbSByaWdodC4gKilcbiAgICAgICAgICAgRXhwZXJ0LmluY3JfaW52YWxpZF9jaGlsZHJlbiBleHBlcnRcbiAgICAgICAgIHwga2luZCAtPlxuICAgICAgICAgICBpZiBkZWJ1Z1xuICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgICAgICB8IEJpbmRfbWFpbiBfIHwgSWZfdGhlbl9lbHNlIF8gfCBKb2luX21haW4gXyAtPiAoKVxuICAgICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UgKCogbm9kZXMgd2l0aCBubyBjaGlsZHJlbiBhcmUgbmV2ZXIgcHVzaGVkIG9uIHRoZSBzdGFjayAqKSkpO1xuICAgICAgICAoKiBXZSBkbyBub3QgY2hlY2sgW05vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZV0gaGVyZSwgYmVjYXVzZSBpdCBzaG91bGQgYmVcbiAgICAgICAgICAgdHJ1ZSwgYW5kIGJlY2F1c2UgY29tcHV0aW5nIGl0IHRha2VzIE8obnVtYmVyIG9mIGNoaWxkcmVuKSwgbm9kZSBjYW4gYmUgcHVzaGVkXG4gICAgICAgICAgIG9uIHRoZSBzdGFjayBvbmNlIHBlciBjaGlsZCwgYW5kIGV4cGVydCBub2RlcyBjYW4gaGF2ZSBsb3RzIG9mIGNoaWxkcmVuLiAqKVxuICAgICAgICBpZiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgICAgICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICBkb25lXG47O1xuXG4oKiBbYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIHQgfmNoaWxkIH5wYXJlbnRdIGFkZHMgW3BhcmVudF0gYXMgYSBwYXJlbnQgb2ZcbiAgIFtjaGlsZF0sIGFuZCBtYWtlcyBbY2hpbGRdIGFuZCBhbGwgaXRzIGRlc2NlbmRhbnRzIG5lY2Vzc2FyeSwgZW5zdXJpbmcgdGhlaXIgaGVpZ2h0c1xuICAgYXJlIGFjY3VyYXRlLiAgVGhlcmUgaXMgbm8gZ3VhcmFudGVlIGFib3V0IHRoZSByZWxhdGl2ZSBoZWlnaHRzIG9mIFtjaGlsZF0gYW5kIFtwYXJlbnRdXG4gICB0aG91Z2guICopXG5sZXQgcmVjIGFkZF9wYXJlbnRfd2l0aG91dF9hZGp1c3RpbmdfaGVpZ2h0c1xuICA6IHR5cGUgYSBiLiBjaGlsZDphIE5vZGUudCAtPiBwYXJlbnQ6YiBOb2RlLnQgLT4gY2hpbGRfaW5kZXg6aW50IC0+IHVuaXRcbiAgPVxuICBmdW4gfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4IC0+XG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBwYXJlbnQpO1xuICBsZXQgdCA9IGNoaWxkLnN0YXRlIGluXG4gIGxldCB3YXNfbmVjZXNzYXJ5ID0gTm9kZS5pc19uZWNlc3NhcnkgY2hpbGQgaW5cbiAgTm9kZS5hZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgaWYgbm90IChOb2RlLmlzX3ZhbGlkIGNoaWxkKSB0aGVuIFN0YWNrLnB1c2ggdC5wcm9wYWdhdGVfaW52YWxpZGl0eSAoVCBwYXJlbnQpO1xuICBpZiBub3Qgd2FzX25lY2Vzc2FyeSB0aGVuIGJlY2FtZV9uZWNlc3NhcnkgY2hpbGQ7XG4gIG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgfCBFeHBlcnQgZSAtPiBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgZSB+Y2hpbGRfaW5kZXhcbiAgfCBfIC0+ICgpXG5cbmFuZCBiZWNhbWVfbmVjZXNzYXJ5IDogdHlwZSBhLiBhIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIG5vZGUgLT5cbiAgKCogW1Njb3BlLmlzX25lY2Vzc2FyeSBub2RlLmNyZWF0ZWRfaW5dIGlzIHRydWUgKGFzc3VtaW5nIHRoZSBzY29wZSBpdHNlbGYgaXMgdmFsaWQpXG4gICAgIGJlY2F1c2UgW05vZGUuaXRlcl9jaGlsZHJlbl0gYmVsb3cgZmlyc3QgdmlzaXRzIHRoZSBsaHMtY2hhbmdlIG9mIGJpbmQgbm9kZXMgYW5kXG4gICAgIHRoZW4gdGhlIHJocy4gKilcbiAgaWYgTm9kZS5pc192YWxpZCBub2RlICYmIG5vdCAoU2NvcGUuaXNfbmVjZXNzYXJ5IG5vZGUuY3JlYXRlZF9pbilcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJUcnlpbmcgdG8gbWFrZSBhIG5vZGUgbmVjZXNzYXJ5IHdob3NlIGRlZmluaW5nIGJpbmQgaXMgbm90IG5lY2Vzc2FyeVwiXG4gICAgICBub2RlXG4gICAgICBbJXNleHBfb2Y6IF8gTm9kZS50XTtcbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIHQubnVtX25vZGVzX2JlY2FtZV9uZWNlc3NhcnkgPC0gdC5udW1fbm9kZXNfYmVjYW1lX25lY2Vzc2FyeSArIDE7XG4gIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDAgdGhlbiBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiBub2RlO1xuICAoKiBTaW5jZSBbbm9kZV0gYmVjYW1lIG5lY2Vzc2FyeSwgdG8gcmVzdG9yZSB0aGUgaW52YXJpYW50LCB3ZSBuZWVkIHRvOlxuXG4gICAgIC0gYWRkIHBhcmVudCBwb2ludGVycyB0byBbbm9kZV0gZnJvbSBpdHMgY2hpbGRyZW4uXG4gICAgIC0gc2V0IFtub2RlXSdzIGhlaWdodC5cbiAgICAgLSBhZGQgW25vZGVdIHRvIHRoZSByZWNvbXB1dGUgaGVhcCwgaWYgbmVjZXNzYXJ5LiAqKVxuICBzZXRfaGVpZ2h0IG5vZGUgKFNjb3BlLmhlaWdodCBub2RlLmNyZWF0ZWRfaW4gKyAxKTtcbiAgTm9kZS5pdGVyaV9jaGlsZHJlbiBub2RlIH5mOihmdW4gY2hpbGRfaW5kZXggKFQgY2hpbGQpIC0+XG4gICAgYWRkX3BhcmVudF93aXRob3V0X2FkanVzdGluZ19oZWlnaHRzIH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4O1xuICAgICgqIE5vdyB0aGF0IGNoaWxkIGlzIG5lY2Vzc2FyeSwgaXQgc2hvdWxkIGhhdmUgYSB2YWxpZCBoZWlnaHQuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKGNoaWxkLmhlaWdodCA+PSAwKTtcbiAgICBpZiBjaGlsZC5oZWlnaHQgPj0gbm9kZS5oZWlnaHQgdGhlbiBzZXRfaGVpZ2h0IG5vZGUgKGNoaWxkLmhlaWdodCArIDEpKTtcbiAgKCogTm93IHRoYXQgdGhlIGhlaWdodCBpcyBjb3JyZWN0LCBtYXliZSBhZGQgW25vZGVdIHRvIHRoZSByZWNvbXB1dGUgaGVhcC4gIFtub2RlXVxuICAgICBqdXN0IGJlY2FtZSBuZWNlc3NhcnksIHNvIGl0IGNhbid0IGhhdmUgYmVlbiBpbiB0aGUgcmVjb21wdXRlIGhlYXAuICBTaW5jZSBbbm9kZV1cbiAgICAgaXMgbmVjZXNzYXJ5LCB3ZSBzaG91bGQgYWRkIGl0IHRvIHRoZSByZWNvbXB1dGUgaGVhcCBpZmYgaXQgaXMgc3RhbGUuICopXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSkpO1xuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3Nhcnkgbm9kZSk7XG4gIGlmIE5vZGUuaXNfc3RhbGUgbm9kZSB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCB0LnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gIHwgRXhwZXJ0IHAgLT4gRXhwZXJ0Lm9ic2VydmFiaWxpdHlfY2hhbmdlIHAgfmlzX25vd19vYnNlcnZhYmxlOnRydWVcbiAgfCBfIC0+ICgpXG47O1xuXG5sZXQgYmVjYW1lX25lY2Vzc2FyeSBub2RlID1cbiAgYmVjYW1lX25lY2Vzc2FyeSBub2RlO1xuICBwcm9wYWdhdGVfaW52YWxpZGl0eSBub2RlLnN0YXRlXG47O1xuXG5sZXQgYWRkX3BhcmVudCB+Y2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXggPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc19uZWNlc3NhcnkgcGFyZW50KTtcbiAgbGV0IHQgPSBwYXJlbnQuc3RhdGUgaW5cbiAgKCogSW4gdGhlIGNhc2Ugd2hlbiB0aGUgZWRnZSBiZWluZyBhZGRlZCBjcmVhdGVzIGEgY3ljbGUsIGl0IGlzIHBvc3NpYmxlIGZvciB0aGVcbiAgICAgcmVjdXJzaW9uIGluIFthZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHNdIHRvIHJlYWNoIFtwYXJlbnRdIGFzIGEgZGVzY2VuZGFudFxuICAgICBvZiBbY2hpbGRdLiAgSW4gdGhhdCBjYXNlLCB0aGUgcmVjdXJzaW9uIHRlcm1pbmF0ZXMsIGJlY2F1c2UgW05vZGUuaXNfbmVjZXNzYXJ5XG4gICAgIHBhcmVudF0uICBXZSB0aGVuIHJldHVybiBoZXJlIGFuZCBzdWJzZXF1ZW50bHkgZGV0ZWN0IHRoZSBjeWNsZSBpblxuICAgICBbYWRqdXN0X2hlaWdodHNdLiAqKVxuICBhZGRfcGFyZW50X3dpdGhvdXRfYWRqdXN0aW5nX2hlaWdodHMgfmNoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4O1xuICAoKiBXZSBhZGp1c3QgaGVpZ2h0cyBzbyB0aGF0IHdlIGVuc3VyZSB0aGVyZSBhcmUgbm8gY3ljbGVzIGJlZm9yZSBjYWxsaW5nXG4gICAgIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0uICopXG4gIGlmIGNoaWxkLmhlaWdodCA+PSBwYXJlbnQuaGVpZ2h0XG4gIHRoZW5cbiAgICBBZGp1c3RfaGVpZ2h0c19oZWFwLmFkanVzdF9oZWlnaHRzXG4gICAgICB0LmFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICAgIHQucmVjb21wdXRlX2hlYXBcbiAgICAgIH5jaGlsZFxuICAgICAgfnBhcmVudDtcbiAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdDtcbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUuaXNfbmVjZXNzYXJ5IHBhcmVudCk7XG4gICgqIHdlIG9ubHkgYWRkIG5lY2Vzc2FyeSBwYXJlbnRzICopXG4gIGlmIChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KSlcbiAgJiYgKFN0YWJpbGl6YXRpb25fbnVtLmlzX25vbmUgcGFyZW50LnJlY29tcHV0ZWRfYXRcbiAgICAgIHx8IE5vZGUuZWRnZV9pc19zdGFsZSB+Y2hpbGQgfnBhcmVudClcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBwYXJlbnRcbjs7XG5cbmxldCBydW5fd2l0aF9zY29wZSB0IHNjb3BlIH5mID1cbiAgbGV0IHNhdmVkID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIHQuY3VycmVudF9zY29wZSA8LSBzY29wZTtcbiAgdHJ5XG4gICAgbGV0IHYgPSBmICgpIGluXG4gICAgdC5jdXJyZW50X3Njb3BlIDwtIHNhdmVkO1xuICAgIHZcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIHQuY3VycmVudF9zY29wZSA8LSBzYXZlZDtcbiAgICByYWlzZSBleG5cbjs7XG5cbmxldCB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZiA9XG4gIGlmIG5vdCAoU2NvcGUuaXNfdmFsaWQgc2NvcGUpXG4gIHRoZW4gZmFpbHdpdGhzIH5oZXJlOlslaGVyZV0gXCJhdHRlbXB0IHRvIHJ1biB3aXRoaW4gYW4gaW52YWxpZCBzY29wZVwiIHQgWyVzZXhwX29mOiB0XTtcbiAgcnVuX3dpdGhfc2NvcGUgdCBzY29wZSB+ZlxuOztcblxubGV0IGNoYW5nZV9jaGlsZFxuICA6IHR5cGUgYSBiLlxuICAgIHBhcmVudDphIE5vZGUudFxuICAgIC0+IG9sZF9jaGlsZDpiIE5vZGUudCBVb3B0LnRcbiAgICAtPiBuZXdfY2hpbGQ6YiBOb2RlLnRcbiAgICAtPiBjaGlsZF9pbmRleDppbnRcbiAgICAtPiB1bml0XG4gID1cbiAgZnVuIH5wYXJlbnQgfm9sZF9jaGlsZCB+bmV3X2NoaWxkIH5jaGlsZF9pbmRleCAtPlxuICBpZiBVb3B0LmlzX25vbmUgb2xkX2NoaWxkXG4gIHRoZW4gYWRkX3BhcmVudCB+Y2hpbGQ6bmV3X2NoaWxkIH5wYXJlbnQgfmNoaWxkX2luZGV4XG4gIGVsc2UgKFxuICAgIGxldCBvbGRfY2hpbGQgPSBVb3B0LnVuc2FmZV92YWx1ZSBvbGRfY2hpbGQgaW5cbiAgICBpZiBub3QgKHBoeXNfZXF1YWwgb2xkX2NoaWxkIG5ld19jaGlsZClcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIHJlbW92ZSBbb2xkX2NoaWxkXSBiZWZvcmUgYWRkaW5nIFtuZXdfY2hpbGRdLCBiZWNhdXNlIHRoZXkgc2hhcmUgdGhlIHNhbWVcbiAgICAgICAgIGNoaWxkIGluZGV4LiAqKVxuICAgICAgTm9kZS5yZW1vdmVfcGFyZW50IH5jaGlsZDpvbGRfY2hpbGQgfnBhcmVudCB+Y2hpbGRfaW5kZXg7XG4gICAgICAoKiBXZSBmb3JjZSBbb2xkX2NoaWxkXSB0byB0ZW1wb3JhcmlseSBiZSBuZWNlc3Nhcnkgc28gdGhhdCBbYWRkX3BhcmVudF0gY2FuJ3RcbiAgICAgICAgIG1pc3Rha2VubHkgdGhpbmsgaXQgaXMgdW5uZWNlc3NhcnkgYW5kIHRyYW5zaXRpb24gaXQgdG8gbmVjZXNzYXJ5ICh3aGljaCB3b3VsZFxuICAgICAgICAgYWRkIGR1cGxpY2F0ZSBlZGdlcyBhbmQgYnJlYWsgdGhpbmdzIGhvcnJpYmx5KS4gKilcbiAgICAgIG9sZF9jaGlsZC5mb3JjZV9uZWNlc3NhcnkgPC0gdHJ1ZTtcbiAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOm5ld19jaGlsZCB+cGFyZW50IH5jaGlsZF9pbmRleDtcbiAgICAgIG9sZF9jaGlsZC5mb3JjZV9uZWNlc3NhcnkgPC0gZmFsc2U7XG4gICAgICAoKiBXZSBbY2hlY2tfaWZfdW5uZWNlc3NhcnldIGFmdGVyIFthZGRfcGFyZW50XSwgc28gdGhhdCB3ZSBkb24ndCB1bm5lY2Vzc2FyaWx5XG4gICAgICAgICB0cmFuc2l0aW9uIG5vZGVzIGZyb20gbmVjZXNzYXJ5IHRvIHVubmVjZXNzYXJ5IGFuZCB0aGVuIGJhY2sgYWdhaW4uICopXG4gICAgICBjaGVja19pZl91bm5lY2Vzc2FyeSBvbGRfY2hpbGQpKVxuOztcblxubGV0IGFkZF9hbGFybSBjbG9jayB+YXQgYWxhcm1fdmFsdWUgPVxuICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoVGltZV9ucy4oID4gKSBhdCAobm93IGNsb2NrKSk7XG4gIFRpbWluZ193aGVlbC5hZGQgY2xvY2sudGltaW5nX3doZWVsIH5hdCBhbGFybV92YWx1ZVxuOztcblxubGV0IHJlYyByZWNvbXB1dGUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IHVuaXQgPVxuICBmdW4gbm9kZSAtPlxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgaWYgZGVidWdcbiAgdGhlbiAoXG4gICAgdC5vbmx5X2luX2RlYnVnLmN1cnJlbnRseV9ydW5uaW5nX25vZGUgPC0gU29tZSAoVCBub2RlKTtcbiAgICB0Lm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlIDwtIFtdKTtcbiAgdC5udW1fbm9kZXNfcmVjb21wdXRlZCA8LSB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkICsgMTtcbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIHQuc3RhYmlsaXphdGlvbl9udW07XG4gIG1hdGNoIG5vZGUua2luZCB3aXRoXG4gIHwgQXJyYXlfZm9sZCBhcnJheV9mb2xkIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChBcnJheV9mb2xkLmNvbXB1dGUgYXJyYXlfZm9sZClcbiAgfCBBdCB7IGF0OyBjbG9jazsgXyB9IC0+XG4gICAgKCogSXQgaXMgYSBidWcgaWYgd2UgdHJ5IHRvIGNvbXB1dGUgYW4gW0F0XSBub2RlIGFmdGVyIFthdF0uICBbYWR2YW5jZV9jbG9ja10gd2FzXG4gICAgICAgc3VwcG9zZWQgdG8gY29udmVydCBpdCB0byBhIFtDb25zdF0gYXQgdGhlIGFwcHJvcHJpYXRlIHRpbWUuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIEJlZm9yZVxuICB8IEF0X2ludGVydmFscyBfIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgQmluZF9saHNfY2hhbmdlXG4gICAgICAoeyBtYWluXG4gICAgICAgOyBmXG4gICAgICAgOyBsaHNcbiAgICAgICA7IHJoc19zY29wZVxuICAgICAgIDsgcmhzID0gb2xkX3Joc1xuICAgICAgIDsgYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzID0gb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgIDsgX1xuICAgICAgIH0gYXMgYmluZCkgLT5cbiAgICAoKiBXZSBjbGVhciBbYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXSBzbyBpdCB3aWxsIGhvbGQganVzdCB0aGUgbm9kZXMgY3JlYXRlZCBieVxuICAgICAgIHRoaXMgY2FsbCB0byBbZl0uICopXG4gICAgYmluZC5hbGxfbm9kZXNfY3JlYXRlZF9vbl9yaHMgPC0gVW9wdC5ub25lO1xuICAgIGxldCByaHMgPSBydW5fd2l0aF9zY29wZSB0IHJoc19zY29wZSB+ZjooZnVuICgpIC0+IGYgKE5vZGUudmFsdWVfZXhuIGxocykpIGluXG4gICAgYmluZC5yaHMgPC0gVW9wdC5zb21lIHJocztcbiAgICAoKiBBbnRpY2lwYXRlIHdoYXQgW21heWJlX2NoYW5nZV92YWx1ZV0gd2lsbCBkbywgdG8gbWFrZSBzdXJlIEJpbmRfbWFpbiBpcyBzdGFsZVxuICAgICAgIHJpZ2h0IGF3YXkuIFRoaXMgd2F5LCBpZiB0aGUgbmV3IGNoaWxkIGlzIGludmFsaWQsIHdlJ2xsIHNhdGlzZnkgdGhlIGludmFyaWFudFxuICAgICAgIHNheWluZyB0aGF0IFtuZWVkc190b19iZV9jb21wdXRlZCBiaW5kX21haW5dIGluIFtwcm9wYWdhdGVfaW52YWxpZGl0eV0gKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpvbGRfcmhzXG4gICAgICB+bmV3X2NoaWxkOnJoc1xuICAgICAgfmNoaWxkX2luZGV4OktpbmQuYmluZF9yaHNfY2hpbGRfaW5kZXg7XG4gICAgaWYgVW9wdC5pc19zb21lIG9sZF9yaHNcbiAgICB0aGVuIChcbiAgICAgICgqIFdlIGludmFsaWRhdGUgYWZ0ZXIgW2NoYW5nZV9jaGlsZF0sIGJlY2F1c2UgaW52YWxpZGF0aW9uIGNoYW5nZXMgdGhlIFtraW5kXSBvZlxuICAgICAgICAgbm9kZXMgdG8gW0ludmFsaWRdLCB3aGljaCBtZWFucyB0aGF0IHdlIGNhbiBubyBsb25nZXIgdmlzaXQgdGhlaXIgY2hpbGRyZW4uXG4gICAgICAgICBBbHNvLCB0aGUgW29sZF9yaHNdIG5vZGVzIGFyZSB0eXBpY2FsbHkgbWFkZSB1bm5lY2Vzc2FyeSBieSBbY2hhbmdlX2NoaWxkXSwgYW5kXG4gICAgICAgICBzbyBieSBpbnZhbGlkYXRpbmcgYWZ0ZXJ3YXJkcywgd2Ugd2lsbCBub3Qgd2FzdGUgdGltZSBhZGRpbmcgdGhlbSB0byB0aGVcbiAgICAgICAgIHJlY29tcHV0ZSBoZWFwIGFuZCB0aGVuIHJlbW92aW5nIHRoZW0uICopXG4gICAgICBpZiB0LmJpbmRfbGhzX2NoYW5nZV9zaG91bGRfaW52YWxpZGF0ZV9yaHNcbiAgICAgIHRoZW4gaW52YWxpZGF0ZV9ub2Rlc19jcmVhdGVkX29uX3JocyBvbGRfYWxsX25vZGVzX2NyZWF0ZWRfb25fcmhzXG4gICAgICBlbHNlXG4gICAgICAgIHJlc2NvcGVfbm9kZXNfY3JlYXRlZF9vbl9yaHNcbiAgICAgICAgICB0XG4gICAgICAgICAgb2xkX2FsbF9ub2Rlc19jcmVhdGVkX29uX3Joc1xuICAgICAgICAgIH5uZXdfc2NvcGU6bWFpbi5jcmVhdGVkX2luO1xuICAgICAgcHJvcGFnYXRlX2ludmFsaWRpdHkgdCk7XG4gICAgKCogW25vZGVdIHdhcyB2YWxpZCBhdCB0aGUgc3RhcnQgb2YgdGhlIFtCaW5kX2xoc19jaGFuZ2VdIGJyYW5jaCwgYW5kIGludmFsaWRhdGlvblxuICAgICAgIG9ubHkgdmlzaXRzIGhpZ2hlciBub2Rlcywgc28gW25vZGVdIGlzIHN0aWxsIHZhbGlkLiAqKVxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3ZhbGlkIG5vZGUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgQmluZF9tYWluIHsgcmhzOyBfIH0gLT4gY29weV9jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkOihVb3B0LnZhbHVlX2V4biByaHMpXG4gIHwgQ29uc3QgYSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSBhXG4gIHwgRnJlZXplIHsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW47IF8gfSAtPlxuICAgIGxldCB2YWx1ZSA9IE5vZGUudmFsdWVfZXhuIGNoaWxkIGluXG4gICAgaWYgb25seV9mcmVlemVfd2hlbiB2YWx1ZVxuICAgIHRoZW4gKFxuICAgICAgcmVtb3ZlX2NoaWxkcmVuIG5vZGU7XG4gICAgICBOb2RlLnNldF9raW5kIG5vZGUgKENvbnN0IHZhbHVlKTtcbiAgICAgIGlmIE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgdGhlbiBzZXRfaGVpZ2h0IG5vZGUgMCBlbHNlIGJlY2FtZV91bm5lY2Vzc2FyeSBub2RlKTtcbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSB2YWx1ZVxuICB8IElmX3Rlc3RfY2hhbmdlICh7IG1haW47IGN1cnJlbnRfYnJhbmNoOyB0ZXN0OyB0aGVuXzsgZWxzZV87IF8gfSBhcyBpZl90aGVuX2Vsc2UpIC0+XG4gICAgbGV0IGRlc2lyZWRfYnJhbmNoID0gaWYgTm9kZS52YWx1ZV9leG4gdGVzdCB0aGVuIHRoZW5fIGVsc2UgZWxzZV8gaW5cbiAgICBpZl90aGVuX2Vsc2UuY3VycmVudF9icmFuY2ggPC0gVW9wdC5zb21lIGRlc2lyZWRfYnJhbmNoO1xuICAgICgqIHNlZSB0aGUgY29tbWVudCBpbiBCaW5kX2xoc19jaGFuZ2UgKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpjdXJyZW50X2JyYW5jaFxuICAgICAgfm5ld19jaGlsZDpkZXNpcmVkX2JyYW5jaFxuICAgICAgfmNoaWxkX2luZGV4OktpbmQuaWZfYnJhbmNoX2NoaWxkX2luZGV4O1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlICgpXG4gIHwgSWZfdGhlbl9lbHNlIHsgY3VycmVudF9icmFuY2g7IF8gfSAtPlxuICAgIGNvcHlfY2hpbGQgfnBhcmVudDpub2RlIH5jaGlsZDooVW9wdC52YWx1ZV9leG4gY3VycmVudF9icmFuY2gpXG4gIHwgSW52YWxpZCAtPlxuICAgICgqIFdlIG5ldmVyIGhhdmUgaW52YWxpZCBub2RlcyBpbiB0aGUgcmVjb21wdXRlIGhlYXA7IHRoZXkgYXJlIG5ldmVyIHN0YWxlLiAqKVxuICAgIGFzc2VydCBmYWxzZVxuICB8IEpvaW5fbGhzX2NoYW5nZSAoeyBsaHM7IG1haW47IHJocyA9IG9sZF9yaHM7IF8gfSBhcyBqb2luKSAtPlxuICAgIGxldCByaHMgPSBOb2RlLnZhbHVlX2V4biBsaHMgaW5cbiAgICBqb2luLnJocyA8LSBVb3B0LnNvbWUgcmhzO1xuICAgICgqIHNlZSB0aGUgY29tbWVudCBpbiBCaW5kX2xoc19jaGFuZ2UgKilcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICBjaGFuZ2VfY2hpbGRcbiAgICAgIH5wYXJlbnQ6bWFpblxuICAgICAgfm9sZF9jaGlsZDpvbGRfcmhzXG4gICAgICB+bmV3X2NoaWxkOnJoc1xuICAgICAgfmNoaWxkX2luZGV4OktpbmQuam9pbl9yaHNfY2hpbGRfaW5kZXg7XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKClcbiAgfCBKb2luX21haW4geyByaHM7IF8gfSAtPiBjb3B5X2NoaWxkIH5wYXJlbnQ6bm9kZSB+Y2hpbGQ6KFVvcHQudmFsdWVfZXhuIHJocylcbiAgfCBNYXAgKGYsIG4xKSAtPiBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZiAoTm9kZS52YWx1ZV9leG4gbjEpKVxuICB8IFNuYXBzaG90IHsgYXQ7IGJlZm9yZTsgY2xvY2s7IF8gfSAtPlxuICAgICgqIEl0IGlzIGEgYnVnIGlmIHdlIHRyeSB0byBjb21wdXRlIGEgW1NuYXBzaG90XSBhbmQgdGhlIGFsYXJtIHNob3VsZCBoYXZlIGZpcmVkLlxuICAgICAgIFthZHZhbmNlX2Nsb2NrXSB3YXMgc3VwcG9zZWQgdG8gY29udmVydCBpdCB0byBhIFtGcmVlemVdIGF0IHRoZSBhcHByb3ByaWF0ZVxuICAgICAgIHRpbWUuICopXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFRpbWVfbnMuKCA+ICkgYXQgKG5vdyBjbG9jaykpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIGJlZm9yZVxuICB8IFN0ZXBfZnVuY3Rpb24gKHsgY2hpbGQ7IGNsb2NrOyBfIH0gYXMgc3RlcF9mdW5jdGlvbl9ub2RlKSAtPlxuICAgIGlmIFVvcHQuaXNfc29tZSBjaGlsZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IGNoaWxkID0gVW9wdC52YWx1ZV9leG4gY2hpbGQgaW5cbiAgICAgIGlmIFN0YWJpbGl6YXRpb25fbnVtLmNvbXBhcmVcbiAgICAgICAgICAgY2hpbGQuY2hhbmdlZF9hdFxuICAgICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuZXh0cmFjdGVkX3N0ZXBfZnVuY3Rpb25fZnJvbV9jaGlsZF9hdFxuICAgICAgICAgPiAwXG4gICAgICB0aGVuIChcbiAgICAgICAgc3RlcF9mdW5jdGlvbl9ub2RlLmV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPC0gY2hpbGQuY2hhbmdlZF9hdDtcbiAgICAgICAgcmVtb3ZlX2FsYXJtIGNsb2NrIHN0ZXBfZnVuY3Rpb25fbm9kZS5hbGFybTtcbiAgICAgICAgbGV0IHN0ZXBfZnVuY3Rpb24gPSBOb2RlLnZhbHVlX2V4biBjaGlsZCBpblxuICAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUudmFsdWUgPC0gVW9wdC5zb21lIChTdGVwX2Z1bmN0aW9uLmluaXQgc3RlcF9mdW5jdGlvbik7XG4gICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS51cGNvbWluZ19zdGVwcyA8LSBTdGVwX2Z1bmN0aW9uLnN0ZXBzIHN0ZXBfZnVuY3Rpb247XG4gICAgICAgICgqIElmIHRoZSBjaGlsZCBpcyBhIGNvbnN0YW50LCB3ZSBkcm9wIG91ciByZWZlcmVuY2UgdG8gaXQsIHRvIGF2b2lkIGhvbGRpbmcgb24gdG9cbiAgICAgICAgICAgdGhlIGVudGlyZSBzdGVwIGZ1bmN0aW9uLiAqKVxuICAgICAgICBpZiBOb2RlLmlzX2NvbnN0IGNoaWxkXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIHJlbW92ZV9jaGlsZHJlbiBub2RlO1xuICAgICAgICAgIHN0ZXBfZnVuY3Rpb25fbm9kZS5jaGlsZCA8LSBVb3B0Lm5vbmU7XG4gICAgICAgICAgc2V0X2hlaWdodCBub2RlIChTY29wZS5oZWlnaHQgbm9kZS5jcmVhdGVkX2luICsgMSkpKSk7XG4gICAgU3RlcF9mdW5jdGlvbl9ub2RlLmFkdmFuY2Ugc3RlcF9mdW5jdGlvbl9ub2RlIH50b186KG5vdyBjbG9jayk7XG4gICAgbGV0IHN0ZXBfZnVuY3Rpb25fdmFsdWUgPSBVb3B0LnZhbHVlX2V4biBzdGVwX2Z1bmN0aW9uX25vZGUudmFsdWUgaW5cbiAgICAobWF0Y2ggU2VxdWVuY2UuaGQgc3RlcF9mdW5jdGlvbl9ub2RlLnVwY29taW5nX3N0ZXBzIHdpdGhcbiAgICAgfCBOb25lIC0+IGlmIFVvcHQuaXNfbm9uZSBjaGlsZCB0aGVuIE5vZGUuc2V0X2tpbmQgbm9kZSAoQ29uc3Qgc3RlcF9mdW5jdGlvbl92YWx1ZSlcbiAgICAgfCBTb21lIChhdCwgXykgLT5cbiAgICAgICBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm0gPC0gYWRkX2FsYXJtIGNsb2NrIH5hdCBzdGVwX2Z1bmN0aW9uX25vZGUuYWxhcm1fdmFsdWUpO1xuICAgIG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHN0ZXBfZnVuY3Rpb25fdmFsdWVcbiAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIChVbm9yZGVyZWRfYXJyYXlfZm9sZC5jb21wdXRlIHUpXG4gIHwgVW5pbml0aWFsaXplZCAtPiBhc3NlcnQgZmFsc2VcbiAgfCBWYXIgdmFyIC0+IG1heWJlX2NoYW5nZV92YWx1ZSBub2RlIHZhci52YWx1ZVxuICB8IE1hcDIgKGYsIG4xLCBuMikgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWUgbm9kZSAoZiAoTm9kZS52YWx1ZV9leG4gbjEpIChOb2RlLnZhbHVlX2V4biBuMikpXG4gIHwgTWFwMyAoZiwgbjEsIG4yLCBuMykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmIChOb2RlLnZhbHVlX2V4biBuMSkgKE5vZGUudmFsdWVfZXhuIG4yKSAoTm9kZS52YWx1ZV9leG4gbjMpKVxuICB8IE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGYgKE5vZGUudmFsdWVfZXhuIG4xKSAoTm9kZS52YWx1ZV9leG4gbjIpIChOb2RlLnZhbHVlX2V4biBuMykgKE5vZGUudmFsdWVfZXhuIG40KSlcbiAgfCBNYXA1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KSlcbiAgfCBNYXA2IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNikpXG4gIHwgTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KSlcbiAgfCBNYXA4IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KSlcbiAgfCBNYXA5IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSkpXG4gIHwgTWFwMTAgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCkgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKSlcbiAgfCBNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpKVxuICB8IE1hcDEyIChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyKSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMikpXG4gIHwgTWFwMTMgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMykgLT5cbiAgICBtYXliZV9jaGFuZ2VfdmFsdWVcbiAgICAgIG5vZGVcbiAgICAgIChmXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjQpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjUpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjYpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjcpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjgpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjkpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEwKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTIpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEzKSlcbiAgfCBNYXAxNCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzLCBuMTQpIC0+XG4gICAgbWF5YmVfY2hhbmdlX3ZhbHVlXG4gICAgICBub2RlXG4gICAgICAoZlxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4yKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4zKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG40KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG41KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG42KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG43KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG44KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG45KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTEpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjEyKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTQpKVxuICB8IE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSAtPlxuICAgIG1heWJlX2NoYW5nZV92YWx1ZVxuICAgICAgbm9kZVxuICAgICAgKGZcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuNylcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOClcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuOSlcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTApXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjExKVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xMilcbiAgICAgICAgIChOb2RlLnZhbHVlX2V4biBuMTMpXG4gICAgICAgICAoTm9kZS52YWx1ZV9leG4gbjE0KVxuICAgICAgICAgKE5vZGUudmFsdWVfZXhuIG4xNSkpXG4gIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgIChtYXRjaCBFeHBlcnQuYmVmb3JlX21haW5fY29tcHV0YXRpb24gZXhwZXJ0IHdpdGhcbiAgICAgfCBgSW52YWxpZCAtPlxuICAgICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHRcbiAgICAgfCBgT2sgLT4gbWF5YmVfY2hhbmdlX3ZhbHVlIG5vZGUgKGV4cGVydC5mICgpKSlcblxuYW5kIGNvcHlfY2hpbGQgOiB0eXBlIGEuIHBhcmVudDphIE5vZGUudCAtPiBjaGlsZDphIE5vZGUudCAtPiB1bml0ID1cbiAgZnVuIH5wYXJlbnQgfmNoaWxkIC0+XG4gIGlmIE5vZGUuaXNfdmFsaWQgY2hpbGRcbiAgdGhlbiBtYXliZV9jaGFuZ2VfdmFsdWUgcGFyZW50IChOb2RlLnZhbHVlX2V4biBjaGlsZClcbiAgZWxzZSAoXG4gICAgaW52YWxpZGF0ZV9ub2RlIHBhcmVudDtcbiAgICBwcm9wYWdhdGVfaW52YWxpZGl0eSBwYXJlbnQuc3RhdGUpXG5cbmFuZCBtYXliZV9jaGFuZ2VfdmFsdWUgOiB0eXBlIGEuIGEgTm9kZS50IC0+IGEgLT4gdW5pdCA9XG4gIGZ1biBub2RlIG5ld192YWx1ZSAtPlxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbGV0IG9sZF92YWx1ZV9vcHQgPSBub2RlLnZhbHVlX29wdCBpblxuICBpZiBVb3B0LmlzX25vbmUgb2xkX3ZhbHVlX29wdFxuICB8fCBub3RcbiAgICAgICAoQ3V0b2ZmLnNob3VsZF9jdXRvZmZcbiAgICAgICAgICBub2RlLmN1dG9mZlxuICAgICAgICAgIH5vbGRfdmFsdWU6KFVvcHQudW5zYWZlX3ZhbHVlIG9sZF92YWx1ZV9vcHQpXG4gICAgICAgICAgfm5ld192YWx1ZSlcbiAgdGhlbiAoXG4gICAgbm9kZS52YWx1ZV9vcHQgPC0gVW9wdC5zb21lIG5ld192YWx1ZTtcbiAgICBub2RlLmNoYW5nZWRfYXQgPC0gdC5zdGFiaWxpemF0aW9uX251bTtcbiAgICB0Lm51bV9ub2Rlc19jaGFuZ2VkIDwtIHQubnVtX25vZGVzX2NoYW5nZWQgKyAxO1xuICAgIGlmIG5vZGUubnVtX29uX3VwZGF0ZV9oYW5kbGVycyA+IDBcbiAgICB0aGVuIChcbiAgICAgIG5vZGUub2xkX3ZhbHVlX29wdCA8LSBvbGRfdmFsdWVfb3B0O1xuICAgICAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZSk7XG4gICAgaWYgbm9kZS5udW1fcGFyZW50cyA+PSAxXG4gICAgdGhlbiAoXG4gICAgICBmb3IgcGFyZW50X2luZGV4ID0gMSB0byBub2RlLm51bV9wYXJlbnRzIC0gMSBkb1xuICAgICAgICBsZXQgKFQgcGFyZW50KSA9XG4gICAgICAgICAgVW9wdC52YWx1ZV9leG4gKFVuaWZvcm1fYXJyYXkuZ2V0IG5vZGUucGFyZW50MV9hbmRfYmV5b25kIChwYXJlbnRfaW5kZXggLSAxKSlcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIHBhcmVudC5raW5kIHdpdGhcbiAgICAgICAgIHwgRXhwZXJ0IGV4cGVydCAtPlxuICAgICAgICAgICBsZXQgY2hpbGRfaW5kZXggPSBub2RlLm15X2NoaWxkX2luZGV4X2luX3BhcmVudF9hdF9pbmRleC4ocGFyZW50X2luZGV4KSBpblxuICAgICAgICAgICBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgfmNoaWxkX2luZGV4IGV4cGVydFxuICAgICAgICAgfCBVbm9yZGVyZWRfYXJyYXlfZm9sZCB1IC0+XG4gICAgICAgICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRcbiAgICAgICAgICAgICB1XG4gICAgICAgICAgICAgfmNoaWxkOm5vZGVcbiAgICAgICAgICAgICB+Y2hpbGRfaW5kZXg6bm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKHBhcmVudF9pbmRleClcbiAgICAgICAgICAgICB+b2xkX3ZhbHVlX29wdFxuICAgICAgICAgICAgIH5uZXdfdmFsdWVcbiAgICAgICAgIHwgXyAtPiAoKSk7XG4gICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLm5lZWRzX3RvX2JlX2NvbXB1dGVkIHBhcmVudCk7XG4gICAgICAgICgqIFdlIGRvbid0IGRvIHRoZSBbY2FuX3JlY29tcHV0ZV9ub3ddIG9wdGltaXphdGlvbi4gIFNpbmNlIG1vc3Qgbm9kZXMgb25seSBoYXZlXG4gICAgICAgICAgIG9uZSBwYXJlbnQsIGl0IGlzIG5vdCBwcm9iYWJseSBub3QgYSBiaWcgbG9zcy4gIElmIHdlIGRpZCBpdCBhbnl3YXksIHdlJ2RcbiAgICAgICAgICAgaGF2ZSB0byBiZSBjYXJlZnVsLCBiZWNhdXNlIHdoaWxlIHdlIGl0ZXJhdGUgb3ZlciB0aGUgbGlzdCBvZiBwYXJlbnRzLCB3ZVxuICAgICAgICAgICB3b3VsZCBleGVjdXRlIHRoZW0sIGFuZCBpbiBwYXJ0aWN1bGFyIHdlIGNhbiBleGVjdXRlIGxocy1jaGFuZ2Ugbm9kZXMgd2hvIGNhblxuICAgICAgICAgICBjaGFuZ2UgdGhlIHN0cnVjdHVyZSBvZiB0aGUgbGlzdCBvZiBwYXJlbnRzIHdlIGl0ZXJhdGUgb24uICBUaGluayBhYm91dDpcblxuICAgICAgICAgICB7W1xuICAgICAgICAgICAgIGxocyA+Pj0gZnVuIGIgLT4gaWYgYiB0aGVuIGxocyA+PnwgRm4uaWQgZWxzZSBjb25zdCBiXG4gICAgICAgICAgIF19XG5cbiAgICAgICAgICAgSWYgdGhlIG9wdGltaXphdGlvbiBraWNrcyBpbiB3aGVuIHdlIHByb3BhZ2F0ZSBjaGFuZ2UgdG8gdGhlIHBhcmVudHMgb2YgW2xoc11cbiAgICAgICAgICAgKHdoaWNoIGNoYW5nZXMgZnJvbSBbdHJ1ZV0gdG8gW2ZhbHNlXSksIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIFtsaHMtY2hhbmdlXVxuICAgICAgICAgICBmaXJzdCwgd2hpY2ggd291bGQgbWFrZSBkaXNjb25uZWN0IHRoZSBbbWFwXSBub2RlIGZyb20gW2xoc10uICBBbmQgdGhlbiB3ZVxuICAgICAgICAgICB3b3VsZCBleGVjdXRlIHRoZSBzZWNvbmQgY2hpbGQgb2YgdGhlIFtsaHNdLCB3aGljaCBkb2Vzbid0IGV4aXN0IGFueW1vcmUgYW5kXG4gICAgICAgICAgIGluY3JlbWVudGFsIHdvdWxkIHNlZ2ZhdWx0ICh0aGVyZSBtYXkgYmUgYSBsZXNzIG5haXZlIHdheSBvZiBtYWtpbmcgdGhpcyB3b3JrXG4gICAgICAgICAgIHRob3VnaCkuICopXG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50XG4gICAgICBkb25lO1xuICAgICAgbGV0IChUIHBhcmVudCkgPSBVb3B0LnZhbHVlX2V4biBub2RlLnBhcmVudDAgaW5cbiAgICAgIChtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgfCBFeHBlcnQgcCAtPlxuICAgICAgICAgbGV0IGNoaWxkX2luZGV4ID0gbm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKDApIGluXG4gICAgICAgICBFeHBlcnQucnVuX2VkZ2VfY2FsbGJhY2sgfmNoaWxkX2luZGV4IHBcbiAgICAgICB8IFVub3JkZXJlZF9hcnJheV9mb2xkIHUgLT5cbiAgICAgICAgIFVub3JkZXJlZF9hcnJheV9mb2xkLmNoaWxkX2NoYW5nZWRcbiAgICAgICAgICAgdVxuICAgICAgICAgICB+Y2hpbGQ6bm9kZVxuICAgICAgICAgICB+Y2hpbGRfaW5kZXg6bm9kZS5teV9jaGlsZF9pbmRleF9pbl9wYXJlbnRfYXRfaW5kZXguKDApXG4gICAgICAgICAgIH5vbGRfdmFsdWVfb3B0XG4gICAgICAgICAgIH5uZXdfdmFsdWVcbiAgICAgICB8IF8gLT4gKCkpO1xuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgcGFyZW50KTtcbiAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBwYXJlbnQpXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IGNhbl9yZWNvbXB1dGVfbm93ID1cbiAgICAgICAgICBtYXRjaCBwYXJlbnQua2luZCB3aXRoXG4gICAgICAgICAgfCBVbmluaXRpYWxpemVkIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICgqIFRoZXNlIG5vZGVzIGFyZW4ndCBwYXJlbnRzLiAqKVxuICAgICAgICAgIHwgQXQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IEF0X2ludGVydmFscyBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgQ29uc3QgXyB8IEludmFsaWQgfCBTbmFwc2hvdCBfIHwgVmFyIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKCogVGhlc2Ugbm9kZXMgaGF2ZSBtb3JlIHRoYW4gb25lIGNoaWxkLiAqKVxuICAgICAgICAgIHwgQXJyYXlfZm9sZCBfXG4gICAgICAgICAgfCBNYXAyIF9cbiAgICAgICAgICB8IE1hcDMgX1xuICAgICAgICAgIHwgTWFwNCBfXG4gICAgICAgICAgfCBNYXA1IF9cbiAgICAgICAgICB8IE1hcDYgX1xuICAgICAgICAgIHwgTWFwNyBfXG4gICAgICAgICAgfCBNYXA4IF9cbiAgICAgICAgICB8IE1hcDkgX1xuICAgICAgICAgIHwgTWFwMTAgX1xuICAgICAgICAgIHwgTWFwMTEgX1xuICAgICAgICAgIHwgTWFwMTIgX1xuICAgICAgICAgIHwgTWFwMTMgX1xuICAgICAgICAgIHwgTWFwMTQgX1xuICAgICAgICAgIHwgTWFwMTUgX1xuICAgICAgICAgIHwgVW5vcmRlcmVkX2FycmF5X2ZvbGQgX1xuICAgICAgICAgIHwgRXhwZXJ0IF8gLT4gZmFsc2VcbiAgICAgICAgICAoKiBXZSBjYW4gaW1tZWRpYXRlbHkgcmVjb21wdXRlIFtwYXJlbnRdIGlmIG5vIG90aGVyIG5vZGUgbmVlZHMgdG8gYmUgc3RhYmxlXG4gICAgICAgICAgICAgYmVmb3JlIGNvbXB1dGluZyBpdC4gIElmIFtwYXJlbnRdIGhhcyBhIHNpbmdsZSBjaGlsZCAoaS5lLiBbbm9kZV0pLCB0aGVuXG4gICAgICAgICAgICAgdGhpcyBhbW91bnRzIHRvIGNoZWNraW5nIHRoYXQgW3BhcmVudF0gd29uJ3QgYmUgaW52YWxpZGF0ZWQsIGkuZS4gdGhhdFxuICAgICAgICAgICAgIFtwYXJlbnRdJ3Mgc2NvcGUgaGFzIGFscmVhZHkgc3RhYmlsaXplZC4gKilcbiAgICAgICAgICB8IEJpbmRfbGhzX2NoYW5nZSBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBGcmVlemUgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgSWZfdGVzdF9jaGFuZ2UgXyAtPiBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgIHwgSm9pbl9saHNfY2hhbmdlIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICB8IE1hcCBfIC0+IG5vZGUuaGVpZ2h0ID4gU2NvcGUuaGVpZ2h0IHBhcmVudC5jcmVhdGVkX2luXG4gICAgICAgICAgfCBTdGVwX2Z1bmN0aW9uIF8gLT4gbm9kZS5oZWlnaHQgPiBTY29wZS5oZWlnaHQgcGFyZW50LmNyZWF0ZWRfaW5cbiAgICAgICAgICAoKiBGb3IgdGhlc2UsIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgXCJfY2hhbmdlXCIgY2hpbGQgaGFzIGFscmVhZHkgYmVlblxuICAgICAgICAgICAgIGV2YWx1YXRlZCAoaWYgbmVlZGVkKS4gIElmIHNvLCB0aGlzIGFsc28gaW1wbGllczpcblxuICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICBub2RlLmhlaWdodCA+IFNjb3BlLmhlaWdodCBwYXJlbnQuY3JlYXRlZF9pblxuICAgICAgICAgICAgIF19ICopXG4gICAgICAgICAgfCBCaW5kX21haW4gYiAtPiBub2RlLmhlaWdodCA+IGIubGhzX2NoYW5nZS5oZWlnaHRcbiAgICAgICAgICB8IElmX3RoZW5fZWxzZSBpIC0+IG5vZGUuaGVpZ2h0ID4gaS50ZXN0X2NoYW5nZS5oZWlnaHRcbiAgICAgICAgICB8IEpvaW5fbWFpbiBqIC0+IG5vZGUuaGVpZ2h0ID4gai5saHNfY2hhbmdlLmhlaWdodFxuICAgICAgICBpblxuICAgICAgICBpZiBjYW5fcmVjb21wdXRlX25vd1xuICAgICAgICB0aGVuIChcbiAgICAgICAgICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkXG4gICAgICAgICAgPC0gdC5udW1fbm9kZXNfcmVjb21wdXRlZF9kaXJlY3RseV9iZWNhdXNlX29uZV9jaGlsZCArIDE7XG4gICAgICAgICAgcmVjb21wdXRlIHBhcmVudClcbiAgICAgICAgZWxzZSBpZiBwYXJlbnQuaGVpZ2h0IDw9IFJlY29tcHV0ZV9oZWFwLm1pbl9oZWlnaHQgdC5yZWNvbXB1dGVfaGVhcFxuICAgICAgICB0aGVuIChcbiAgICAgICAgICAoKiBJZiBbcGFyZW50LmhlaWdodF0gaXMgWzw9XSB0aGUgaGVpZ2h0IG9mIGFsbCBub2RlcyBpbiB0aGUgcmVjb21wdXRlIGhlYXBcbiAgICAgICAgICAgICAocG9zc2libHkgYmVjYXVzZSB0aGUgcmVjb21wdXRlIGhlYXAgaXMgZW1wdHkpLCB0aGVuIHdlIGNhbiByZWNvbXB1dGVcbiAgICAgICAgICAgICBbcGFyZW50XSBpbW1lZGlhdGVseSBhbmQgc2F2ZSBhZGRpbmcgaXQgdG8gYW5kIHRoZW4gcmVtb3ZpbmcgaXQgZnJvbSB0aGVcbiAgICAgICAgICAgICByZWNvbXB1dGUgaGVhcC4gKilcbiAgICAgICAgICB0Lm51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2VfbWluX2hlaWdodFxuICAgICAgICAgIDwtIHQubnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ICsgMTtcbiAgICAgICAgICByZWNvbXB1dGUgcGFyZW50KVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBwYXJlbnQpO1xuICAgICAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgcGFyZW50KSk7XG4gICAgICAgICAgUmVjb21wdXRlX2hlYXAuYWRkIHQucmVjb21wdXRlX2hlYXAgcGFyZW50KSkpKTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdFxuOztcblxubGV0W0BpbmxpbmUgYWx3YXlzXSByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByID1cbiAgbGV0IChUIG5vZGUpID0gUmVjb21wdXRlX2hlYXAucmVtb3ZlX21pbiByIGluXG4gIGlmIGRlYnVnICYmIG5vdCAoTm9kZS5uZWVkc190b19iZV9jb21wdXRlZCBub2RlKVxuICB0aGVuXG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcIm5vZGUgdW5leHBlY3RlZGx5IGRvZXMgbm90IG5lZWQgdG8gYmUgY29tcHV0ZWRcIlxuICAgICAgbm9kZVxuICAgICAgWyVzZXhwX29mOiBfIE5vZGUudF07XG4gIHJlY29tcHV0ZSBub2RlXG47O1xuXG5sZXQgdW5saW5rX2Rpc2FsbG93ZWRfb2JzZXJ2ZXJzIHQgPVxuICB3aGlsZSBTdGFjay5sZW5ndGggdC5kaXNhbGxvd2VkX29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgcGFja2VkID0gU3RhY2sucG9wX2V4biB0LmRpc2FsbG93ZWRfb2JzZXJ2ZXJzIGluXG4gICAgbGV0IChUIGludGVybmFsX29ic2VydmVyKSA9IHBhY2tlZCBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgYXNzZXJ0IChcbiAgICAgICAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICAgICAgICB8IERpc2FsbG93ZWQgLT4gdHJ1ZVxuICAgICAgICB8IF8gLT4gZmFsc2UpO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIFVubGlua2VkO1xuICAgIGxldCAoVCBhbGxfb2JzZXJ2ZXJzKSA9IFVvcHQudmFsdWVfZXhuIHQuYWxsX29ic2VydmVycyBpblxuICAgIGlmIEludGVybmFsX29ic2VydmVyLnNhbWUgaW50ZXJuYWxfb2JzZXJ2ZXIgYWxsX29ic2VydmVyc1xuICAgIHRoZW4gdC5hbGxfb2JzZXJ2ZXJzIDwtIGludGVybmFsX29ic2VydmVyLm5leHRfaW5fYWxsO1xuICAgIEludGVybmFsX29ic2VydmVyLnVubGluayBpbnRlcm5hbF9vYnNlcnZlcjtcbiAgICBjaGVja19pZl91bm5lY2Vzc2FyeSBpbnRlcm5hbF9vYnNlcnZlci5vYnNlcnZpbmdcbiAgZG9uZVxuOztcblxubGV0IGRpc2FsbG93X2Z1dHVyZV91c2UgaW50ZXJuYWxfb2JzZXJ2ZXIgPVxuICBsZXQgdCA9IEludGVybmFsX29ic2VydmVyLmluY3Jfc3RhdGUgaW50ZXJuYWxfb2JzZXJ2ZXIgaW5cbiAgbWF0Y2ggaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgd2l0aFxuICB8IERpc2FsbG93ZWQgfCBVbmxpbmtlZCAtPiAoKVxuICB8IENyZWF0ZWQgLT5cbiAgICB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzIDwtIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgLSAxO1xuICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIFVubGlua2VkO1xuICAgIGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycyA8LSBbXVxuICB8IEluX3VzZSAtPlxuICAgIHQubnVtX2FjdGl2ZV9vYnNlcnZlcnMgPC0gdC5udW1fYWN0aXZlX29ic2VydmVycyAtIDE7XG4gICAgaW50ZXJuYWxfb2JzZXJ2ZXIuc3RhdGUgPC0gRGlzYWxsb3dlZDtcbiAgICBTdGFjay5wdXNoIHQuZGlzYWxsb3dlZF9vYnNlcnZlcnMgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpXG47O1xuXG5sZXQgZGlzYWxsb3dfZmluYWxpemVkX29ic2VydmVycyB0ID1cbiAgd2hpbGUgVGhyZWFkX3NhZmVfcXVldWUubGVuZ3RoIHQuZmluYWxpemVkX29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgKFQgaW50ZXJuYWxfb2JzZXJ2ZXIpID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzIGluXG4gICAgaWYgTGlzdC5pc19lbXB0eSBpbnRlcm5hbF9vYnNlcnZlci5vbl91cGRhdGVfaGFuZGxlcnNcbiAgICB0aGVuIGRpc2FsbG93X2Z1dHVyZV91c2UgaW50ZXJuYWxfb2JzZXJ2ZXJcbiAgZG9uZVxuOztcblxubGV0IG9ic2VydmVyX2ZpbmFsaXplciB0ID1cbiAgc3RhZ2UgKGZ1biBvYnNlcnZlciAtPlxuICAgIGxldCBpbnRlcm5hbF9vYnNlcnZlciA9ICFvYnNlcnZlciBpblxuICAgIFRocmVhZF9zYWZlX3F1ZXVlLmVucXVldWUgdC5maW5hbGl6ZWRfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKSlcbjs7XG5cbmxldCBjcmVhdGVfb2JzZXJ2ZXIgPyhzaG91bGRfZmluYWxpemUgPSB0cnVlKSAob2JzZXJ2aW5nIDogXyBOb2RlLnQpID1cbiAgbGV0IHQgPSBvYnNlcnZpbmcuc3RhdGUgaW5cbiAgbGV0IGludGVybmFsX29ic2VydmVyIDogXyBJbnRlcm5hbF9vYnNlcnZlci50ID1cbiAgICB7IHN0YXRlID0gQ3JlYXRlZFxuICAgIDsgb2JzZXJ2aW5nXG4gICAgOyBvbl91cGRhdGVfaGFuZGxlcnMgPSBbXVxuICAgIDsgcHJldl9pbl9hbGwgPSBVb3B0Lm5vbmVcbiAgICA7IG5leHRfaW5fYWxsID0gVW9wdC5ub25lXG4gICAgOyBwcmV2X2luX29ic2VydmluZyA9IFVvcHQubm9uZVxuICAgIDsgbmV4dF9pbl9vYnNlcnZpbmcgPSBVb3B0Lm5vbmVcbiAgICB9XG4gIGluXG4gIFN0YWNrLnB1c2ggdC5uZXdfb2JzZXJ2ZXJzIChUIGludGVybmFsX29ic2VydmVyKTtcbiAgbGV0IG9ic2VydmVyID0gcmVmIGludGVybmFsX29ic2VydmVyIGluXG4gIGlmIHNob3VsZF9maW5hbGl6ZVxuICB0aGVuIEdjLkV4cGVydC5hZGRfZmluYWxpemVyX2V4biBvYnNlcnZlciAodW5zdGFnZSAob2JzZXJ2ZXJfZmluYWxpemVyIHQpKTtcbiAgdC5udW1fYWN0aXZlX29ic2VydmVycyA8LSB0Lm51bV9hY3RpdmVfb2JzZXJ2ZXJzICsgMTtcbiAgb2JzZXJ2ZXJcbjs7XG5cbmxldCBhZGRfbmV3X29ic2VydmVycyB0ID1cbiAgd2hpbGUgU3RhY2subGVuZ3RoIHQubmV3X29ic2VydmVycyA+IDAgZG9cbiAgICBsZXQgcGFja2VkID0gU3RhY2sucG9wX2V4biB0Lm5ld19vYnNlcnZlcnMgaW5cbiAgICBsZXQgbW9kdWxlIFBhY2tlZCA9IEludGVybmFsX29ic2VydmVyLlBhY2tlZCBpblxuICAgIGxldCAoVCBpbnRlcm5hbF9vYnNlcnZlcikgPSBwYWNrZWQgaW5cbiAgICBtYXRjaCBpbnRlcm5hbF9vYnNlcnZlci5zdGF0ZSB3aXRoXG4gICAgfCBJbl91c2UgfCBEaXNhbGxvd2VkIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgVW5saW5rZWQgLT4gKClcbiAgICB8IENyZWF0ZWQgLT5cbiAgICAgIGludGVybmFsX29ic2VydmVyLnN0YXRlIDwtIEluX3VzZTtcbiAgICAgIGxldCBvbGRfYWxsX29ic2VydmVycyA9IHQuYWxsX29ic2VydmVycyBpblxuICAgICAgaWYgVW9wdC5pc19zb21lIG9sZF9hbGxfb2JzZXJ2ZXJzXG4gICAgICB0aGVuIChcbiAgICAgICAgaW50ZXJuYWxfb2JzZXJ2ZXIubmV4dF9pbl9hbGwgPC0gb2xkX2FsbF9vYnNlcnZlcnM7XG4gICAgICAgIFBhY2tlZC5zZXRfcHJldl9pbl9hbGwgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF9hbGxfb2JzZXJ2ZXJzKSAoVW9wdC5zb21lIHBhY2tlZCkpO1xuICAgICAgdC5hbGxfb2JzZXJ2ZXJzIDwtIFVvcHQuc29tZSBwYWNrZWQ7XG4gICAgICBsZXQgb2JzZXJ2aW5nID0gaW50ZXJuYWxfb2JzZXJ2ZXIub2JzZXJ2aW5nIGluXG4gICAgICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG9ic2VydmluZyBpblxuICAgICAgb2JzZXJ2aW5nLm51bV9vbl91cGRhdGVfaGFuZGxlcnNcbiAgICAgIDwtIG9ic2VydmluZy5udW1fb25fdXBkYXRlX2hhbmRsZXJzXG4gICAgICAgICArIExpc3QubGVuZ3RoIGludGVybmFsX29ic2VydmVyLm9uX3VwZGF0ZV9oYW5kbGVycztcbiAgICAgIGxldCBvbGRfb2JzZXJ2ZXJzID0gb2JzZXJ2aW5nLm9ic2VydmVycyBpblxuICAgICAgaWYgVW9wdC5pc19zb21lIG9sZF9vYnNlcnZlcnNcbiAgICAgIHRoZW4gKFxuICAgICAgICBpbnRlcm5hbF9vYnNlcnZlci5uZXh0X2luX29ic2VydmluZyA8LSBvbGRfb2JzZXJ2ZXJzO1xuICAgICAgICAoVW9wdC51bnNhZmVfdmFsdWUgb2xkX29ic2VydmVycykucHJldl9pbl9vYnNlcnZpbmcgPC0gVW9wdC5zb21lIGludGVybmFsX29ic2VydmVyKTtcbiAgICAgIG9ic2VydmluZy5vYnNlcnZlcnMgPC0gVW9wdC5zb21lIGludGVybmFsX29ic2VydmVyO1xuICAgICAgKCogQnkgYWRkaW5nIFtpbnRlcm5hbF9vYnNlcnZlcl0gdG8gW29ic2VydmluZy5vYnNlcnZlcnNdLCB3ZSBtYXkgaGF2ZSBhZGRlZFxuICAgICAgICAgb24tdXBkYXRlIGhhbmRsZXJzIHRvIFtvYnNlcnZpbmddLiAgV2UgbmVlZCB0byBoYW5kbGUgW29ic2VydmluZ10gYWZ0ZXIgdGhpc1xuICAgICAgICAgc3RhYmlsaXphdGlvbiB0byBnaXZlIHRob3NlIGhhbmRsZXJzIGEgY2hhbmNlIHRvIHJ1bi4gKilcbiAgICAgIGhhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIG9ic2VydmluZztcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX25lY2Vzc2FyeSBvYnNlcnZpbmcpO1xuICAgICAgaWYgbm90IHdhc19uZWNlc3NhcnkgdGhlbiBiZWNhbWVfbmVjZXNzYXJ5IG9ic2VydmluZ1xuICBkb25lXG47O1xuXG5sZXQgb2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyID1cbiAgbGV0IHQgPSBPYnNlcnZlci5pbmNyX3N0YXRlIG9ic2VydmVyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBOb3Rfc3RhYmlsaXppbmcgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyAtPiBPYnNlcnZlci52YWx1ZV9leG4gb2JzZXJ2ZXJcbiAgfCBTdGFiaWxpemVfcHJldmlvdXNseV9yYWlzZWQgcmFpc2VkX2V4biAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGFmdGVyIHN0YWJpbGl6ZSBwcmV2aW91c2x5IHJhaXNlZFwiXG4gICAgICByYWlzZWRfZXhuXG4gICAgICBbJXNleHBfb2Y6IFJhaXNlZF9leG4udF1cbiAgfCBTdGFiaWxpemluZyAtPlxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJPYnNlcnZlci52YWx1ZV9leG4gY2FsbGVkIGR1cmluZyBzdGFiaWxpemF0aW9uXCJcbiAgICAgIG9ic2VydmVyXG4gICAgICBbJXNleHBfb2Y6IF8gT2JzZXJ2ZXIudF1cbjs7XG5cbmxldCBvYnNlcnZlcl92YWx1ZSBvYnNlcnZlciA9XG4gIHRyeSBPayAob2JzZXJ2ZXJfdmFsdWVfZXhuIG9ic2VydmVyKSB3aXRoXG4gIHwgZXhuIC0+IEVycm9yIChFcnJvci5vZl9leG4gZXhuKVxuOztcblxubGV0IG5vZGVfb25fdXBkYXRlICh0eXBlIGEpIChub2RlIDogYSBOb2RlLnQpIH5mID1cbiAgbGV0IHQgPSBub2RlLnN0YXRlIGluXG4gIE5vZGUub25fdXBkYXRlIG5vZGUgKE9uX3VwZGF0ZV9oYW5kbGVyLmNyZWF0ZSBmIH5hdDp0LnN0YWJpbGl6YXRpb25fbnVtKTtcbiAgaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gbm9kZVxuOztcblxubGV0IG9ic2VydmVyX29uX3VwZGF0ZV9leG4gb2JzZXJ2ZXIgfmYgPVxuICBsZXQgdCA9IE9ic2VydmVyLmluY3Jfc3RhdGUgb2JzZXJ2ZXIgaW5cbiAgT2JzZXJ2ZXIub25fdXBkYXRlX2V4biBvYnNlcnZlciAoT25fdXBkYXRlX2hhbmRsZXIuY3JlYXRlIGYgfmF0OnQuc3RhYmlsaXphdGlvbl9udW0pO1xuICBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiAoT2JzZXJ2ZXIub2JzZXJ2aW5nIG9ic2VydmVyKVxuOztcblxubGV0IHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIHQubnVtX3Zhcl9zZXRzIDwtIHQubnVtX3Zhcl9zZXRzICsgMTtcbiAgdmFyLnZhbHVlIDwtIHZhbHVlO1xuICBpZiBTdGFiaWxpemF0aW9uX251bS5jb21wYXJlIHZhci5zZXRfYXQgdC5zdGFiaWxpemF0aW9uX251bSA8IDBcbiAgdGhlbiAoXG4gICAgdmFyLnNldF9hdCA8LSB0LnN0YWJpbGl6YXRpb25fbnVtO1xuICAgIGxldCB3YXRjaCA9IHZhci53YXRjaCBpblxuICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIHdhdGNoKTtcbiAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSB3YXRjaCAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgd2F0Y2gpXG4gICAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCB3YXRjaClcbjs7XG5cbmxldCBzZXRfdmFyIHZhciB2YWx1ZSA9XG4gIGxldCB0ID0gVmFyLmluY3Jfc3RhdGUgdmFyIGluXG4gIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgfCBSdW5uaW5nX29uX3VwZGF0ZV9oYW5kbGVycyB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgIHNldF92YXJfd2hpbGVfbm90X3N0YWJpbGl6aW5nIHZhciB2YWx1ZVxuICB8IFN0YWJpbGl6ZV9wcmV2aW91c2x5X3JhaXNlZCByYWlzZWRfZXhuIC0+XG4gICAgZmFpbHdpdGhzXG4gICAgICB+aGVyZTpbJWhlcmVdXG4gICAgICBcImNhbm5vdCBzZXQgdmFyIC0tIHN0YWJpbGl6YXRpb24gcHJldmlvdXNseSByYWlzZWRcIlxuICAgICAgcmFpc2VkX2V4blxuICAgICAgWyVzZXhwX29mOiBSYWlzZWRfZXhuLnRdXG4gIHwgU3RhYmlsaXppbmcgLT5cbiAgICBpZiBVb3B0LmlzX25vbmUgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvblxuICAgIHRoZW4gU3RhY2sucHVzaCB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbiAoVCB2YXIpO1xuICAgIHZhci52YWx1ZV9zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gPC0gVW9wdC5zb21lIHZhbHVlXG47O1xuXG5sZXQgcmVjbGFpbV9zcGFjZV9pbl93ZWFrX2hhc2h0YmxzIHQgPVxuICB3aGlsZSBUaHJlYWRfc2FmZV9xdWV1ZS5sZW5ndGggdC53ZWFrX2hhc2h0YmxzID4gMCBkb1xuICAgIGxldCAoVCB3ZWFrX2hhc2h0YmwpID0gVGhyZWFkX3NhZmVfcXVldWUuZGVxdWV1ZV9leG4gdC53ZWFrX2hhc2h0YmxzIGluXG4gICAgV2Vha19oYXNodGJsLnJlY2xhaW1fc3BhY2VfZm9yX2tleXNfd2l0aF91bnVzZWRfZGF0YSB3ZWFrX2hhc2h0YmxcbiAgZG9uZVxuOztcblxubGV0IHN0YWJpbGl6ZV9zdGFydCB0ID1cbiAgdC5zdGF0dXMgPC0gU3RhYmlsaXppbmc7XG4gIGRpc2FsbG93X2ZpbmFsaXplZF9vYnNlcnZlcnMgdDtcbiAgKCogSnVzdCBsaWtlIGZvciBiaW5kcywgd2UgYWRkIG5ldyBvYnNlcnZlcnMgYmVmb3JlIHJlbW92aW5nIGRpc2FsbG93ZWQgb2JzZXJ2ZXJzIHRvXG4gICAgIHBvdGVudGlhbGx5IGF2b2lkIHN3aXRjaGluZyB0aGUgb2JzZXJ2YWJpbGl0eSBvZiBzb21lIG5vZGVzIGJhY2sgYW5kIGZvcnRoLiAqKVxuICBhZGRfbmV3X29ic2VydmVycyB0O1xuICB1bmxpbmtfZGlzYWxsb3dlZF9vYnNlcnZlcnMgdDtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdFxuOztcblxubGV0IHN0YWJpbGl6ZV9lbmQgdCA9XG4gIGlmIGRlYnVnXG4gIHRoZW4gKFxuICAgIHQub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlIDwtIE5vbmU7XG4gICAgdC5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZSA8LSBbXSk7XG4gICgqIFdlIGluY3JlbWVudCBbdC5zdGFiaWxpemF0aW9uX251bV0gYmVmb3JlIGhhbmRsaW5nIHZhcmlhYmxlcyBzZXQgZHVyaW5nXG4gICAgIHN0YWJpbGl6YXRpb24sIHNvIHRoYXQgdGhleSBhcmUgdHJlYXRlZCBhcyBzZXQgZHVyaW5nIHRoZSBuZXcgc3RhYmlsaXphdGlvbiBjeWNsZS5cbiAgICAgQWxzbywgd2UgaW5jcmVtZW50IGJlZm9yZSBydW5uaW5nIG9uLXVwZGF0ZSBoYW5kbGVycywgdG8gYXZvaWQgcnVubmluZyBvbiB1cGRhdGVcbiAgICAgaGFuZGxlcnMgY3JlYXRlZCBkdXJpbmcgb24gdXBkYXRlIGhhbmRsZXJzLiAqKVxuICB0LnN0YWJpbGl6YXRpb25fbnVtIDwtIFN0YWJpbGl6YXRpb25fbnVtLmFkZDEgdC5zdGFiaWxpemF0aW9uX251bTtcbiAgd2hpbGUgbm90IChTdGFjay5pc19lbXB0eSB0LnNldF9kdXJpbmdfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgdmFyKSA9IFN0YWNrLnBvcF9leG4gdC5zZXRfZHVyaW5nX3N0YWJpbGl6YXRpb24gaW5cbiAgICBsZXQgdmFsdWUgPSBVb3B0LnZhbHVlX2V4biB2YXIudmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uIGluXG4gICAgdmFyLnZhbHVlX3NldF9kdXJpbmdfc3RhYmlsaXphdGlvbiA8LSBVb3B0Lm5vbmU7XG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgdmFyIHZhbHVlXG4gIGRvbmU7XG4gIHdoaWxlIG5vdCAoU3RhY2suaXNfZW1wdHkgdC5oYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbikgZG9cbiAgICBsZXQgKFQgbm9kZSkgPSBTdGFjay5wb3BfZXhuIHQuaGFuZGxlX2FmdGVyX3N0YWJpbGl6YXRpb24gaW5cbiAgICBub2RlLmlzX2luX2hhbmRsZV9hZnRlcl9zdGFiaWxpemF0aW9uIDwtIGZhbHNlO1xuICAgIGxldCBvbGRfdmFsdWUgPSBub2RlLm9sZF92YWx1ZV9vcHQgaW5cbiAgICBub2RlLm9sZF92YWx1ZV9vcHQgPC0gVW9wdC5ub25lO1xuICAgIGxldCBub2RlX3VwZGF0ZSA6IF8gTm9kZV91cGRhdGUudCA9XG4gICAgICBpZiBub3QgKE5vZGUuaXNfdmFsaWQgbm9kZSlcbiAgICAgIHRoZW4gSW52YWxpZGF0ZWRcbiAgICAgIGVsc2UgaWYgbm90IChOb2RlLmlzX25lY2Vzc2FyeSBub2RlKVxuICAgICAgdGhlbiBVbm5lY2Vzc2FyeVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfdmFsdWUgPSBVb3B0LnZhbHVlX2V4biBub2RlLnZhbHVlX29wdCBpblxuICAgICAgICBpZiBVb3B0LmlzX25vbmUgb2xkX3ZhbHVlXG4gICAgICAgIHRoZW4gTmVjZXNzYXJ5IG5ld192YWx1ZVxuICAgICAgICBlbHNlIENoYW5nZWQgKFVvcHQudW5zYWZlX3ZhbHVlIG9sZF92YWx1ZSwgbmV3X3ZhbHVlKSlcbiAgICBpblxuICAgIFN0YWNrLnB1c2ggdC5ydW5fb25fdXBkYXRlX2hhbmRsZXJzIChUIChub2RlLCBub2RlX3VwZGF0ZSkpXG4gIGRvbmU7XG4gIHQuc3RhdHVzIDwtIFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzO1xuICBsZXQgbm93ID0gdC5zdGFiaWxpemF0aW9uX251bSBpblxuICB3aGlsZSBub3QgKFN0YWNrLmlzX2VtcHR5IHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycykgZG9cbiAgICBsZXQgKFQgKG5vZGUsIG5vZGVfdXBkYXRlKSkgPSBTdGFjay5wb3BfZXhuIHQucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBpblxuICAgIE5vZGUucnVuX29uX3VwZGF0ZV9oYW5kbGVycyBub2RlIG5vZGVfdXBkYXRlIH5ub3dcbiAgZG9uZTtcbiAgdC5zdGF0dXMgPC0gTm90X3N0YWJpbGl6aW5nO1xuICByZWNsYWltX3NwYWNlX2luX3dlYWtfaGFzaHRibHMgdFxuOztcblxubGV0IHJhaXNlX2R1cmluZ19zdGFiaWxpemF0aW9uIHQgZXhuID1cbiAgdC5zdGF0dXMgPC0gU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIChSYWlzZWRfZXhuLmNyZWF0ZSBleG4pO1xuICByYWlzZSBleG5cbjs7XG5cbmxldCBzdGFiaWxpemUgdCA9XG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0YWJpbGl6ZVwiIH5hbGxvd19pbl91cGRhdGVfaGFuZGxlcjpmYWxzZTtcbiAgdHJ5XG4gICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgd2hpbGUgUmVjb21wdXRlX2hlYXAubGVuZ3RoIHIgPiAwIGRvXG4gICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByXG4gICAgZG9uZTtcbiAgICBzdGFiaWxpemVfZW5kIHRcbiAgd2l0aFxuICB8IGV4biAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4blxuOztcblxubW9kdWxlIFN0ZXBfcmVzdWx0ID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBLZWVwX2dvaW5nXG4gICAgfCBEb25lXG4gIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubGV0IGRvX29uZV9zdGVwX29mX3N0YWJpbGl6ZSB0IDogU3RlcF9yZXN1bHQudCA9XG4gIHRyeVxuICAgIG1hdGNoIHQuc3RhdHVzIHdpdGhcbiAgICB8IE5vdF9zdGFiaWxpemluZyAtPlxuICAgICAgc3RhYmlsaXplX3N0YXJ0IHQ7XG4gICAgICBLZWVwX2dvaW5nXG4gICAgfCBTdGFiaWxpemluZyAtPlxuICAgICAgbGV0IHIgPSB0LnJlY29tcHV0ZV9oZWFwIGluXG4gICAgICBpZiBSZWNvbXB1dGVfaGVhcC5sZW5ndGggciA+IDBcbiAgICAgIHRoZW4gKFxuICAgICAgICByZWNvbXB1dGVfZmlyc3Rfbm9kZV90aGF0X2lzX25lY2Vzc2FyeSByO1xuICAgICAgICBLZWVwX2dvaW5nKVxuICAgICAgZWxzZSAoXG4gICAgICAgIHN0YWJpbGl6ZV9lbmQgdDtcbiAgICAgICAgRG9uZSlcbiAgICB8IFJ1bm5pbmdfb25fdXBkYXRlX2hhbmRsZXJzIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcInN0ZXBcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6ZmFsc2U7XG4gICAgICBhc3NlcnQgZmFsc2VcbiAgd2l0aFxuICB8IGV4biAtPlxuICAgIChtYXRjaCB0LnN0YXR1cyB3aXRoXG4gICAgIHwgU3RhYmlsaXplX3ByZXZpb3VzbHlfcmFpc2VkIF8gLT5cbiAgICAgICAoKiBJZiBzdGFiaWxpemF0aW9uIGhhcyBhbHJlYWR5IHJhaXNlZCwgdGhlbiBbZXhuXSBpcyBtZXJlbHkgYSBub3RpZmljYXRpb24gb2YgdGhpc1xuICAgICAgICAgIGZhY3QsIHJhdGhlciB0aGFuIHRoZSBvcmlnaW5hbCBleGNlcHRpb24gaXRzZWxmLiAgV2Ugc2hvdWxkIGp1c3QgcHJvcGFnYXRlIFtleG5dXG4gICAgICAgICAgZm9yd2FyZDsgY2FsbGluZyBbcmFpc2VfZHVyaW5nX3N0YWJpbGl6YXRpb25dIHdvdWxkIHN0b3JlIFtleG5dIGFzIHRoZSBleGNlcHRpb25cbiAgICAgICAgICB0aGF0IGluaXRpYWxseSByYWlzZWQgZHVyaW5nIHN0YWJpbGl6YXRpb24uICopXG4gICAgICAgcmFpc2UgZXhuXG4gICAgIHwgXyAtPiByYWlzZV9kdXJpbmdfc3RhYmlsaXphdGlvbiB0IGV4bilcbjs7XG5cbmxldCBjcmVhdGVfbm9kZV9pbiB0IGNyZWF0ZWRfaW4ga2luZCA9XG4gIHQubnVtX25vZGVzX2NyZWF0ZWQgPC0gdC5udW1fbm9kZXNfY3JlYXRlZCArIDE7XG4gIE5vZGUuY3JlYXRlIHQgY3JlYXRlZF9pbiBraW5kXG47O1xuXG5sZXQgY3JlYXRlX25vZGUgdCBraW5kID0gY3JlYXRlX25vZGVfaW4gdCB0LmN1cnJlbnRfc2NvcGUga2luZFxubGV0IGNyZWF0ZV9ub2RlX3RvcCB0IGtpbmQgPSBjcmVhdGVfbm9kZV9pbiB0IFNjb3BlLnRvcCBraW5kXG5cbmxldCBjcmVhdGVfdmFyIHQgPyh1c2VfY3VycmVudF9zY29wZSA9IGZhbHNlKSB2YWx1ZSA9XG4gIGxldCBzY29wZSA9IGlmIHVzZV9jdXJyZW50X3Njb3BlIHRoZW4gdC5jdXJyZW50X3Njb3BlIGVsc2UgU2NvcGUudG9wIGluXG4gIGxldCB3YXRjaCA9IGNyZWF0ZV9ub2RlX2luIHQgc2NvcGUgVW5pbml0aWFsaXplZCBpblxuICBsZXQgdmFyID1cbiAgICB7IFZhci52YWx1ZVxuICAgIDsgdmFsdWVfc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gVW9wdC5ub25lXG4gICAgOyBzZXRfYXQgPSB0LnN0YWJpbGl6YXRpb25fbnVtXG4gICAgOyB3YXRjaFxuICAgIH1cbiAgaW5cbiAgTm9kZS5zZXRfa2luZCB3YXRjaCAoVmFyIHZhcik7XG4gIHZhclxuOztcblxuKCogQSBbY29uc3RdIHZhbHVlIGNvdWxkIGNvbWUgZnJvbSB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIG91dGVyIGJpbmQuICBTbywgd2UgY3JlYXRlIGFcbiAgIFtjb25zdF0gbm9kZSBpbiB0aGUgY3VycmVudCBzY29wZSwgbm90IGluIFtTY29wZS50b3BdLiAqKVxubGV0IGNvbnN0IHQgYSA9IGNyZWF0ZV9ub2RlIHQgKENvbnN0IGEpXG5sZXQgbWFwIChuIDogXyBOb2RlLnQpIH5mID0gY3JlYXRlX25vZGUgbi5zdGF0ZSAoTWFwIChmLCBuKSlcbmxldCBtYXAyIChuMSA6IF8gTm9kZS50KSBuMiB+ZiA9IGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAyIChmLCBuMSwgbjIpKVxuXG5sZXQgYm90aCAobjEgOiBfIE5vZGUudCkgKG4yIDogXyBOb2RlLnQpID1cbiAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgfCB7IGtpbmQgPSBDb25zdCBhOyBfIH0sIHsga2luZCA9IENvbnN0IGI7IF8gfSAtPiBjb25zdCBuMS5zdGF0ZSAoYSwgYilcbiAgfCBfIC0+IG1hcDIgbjEgbjIgfmY6VHVwbGUyLmNyZWF0ZVxuOztcblxubGV0IG1hcDMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDMgKGYsIG4xLCBuMiwgbjMpKVxubGV0IG1hcDQgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IH5mID0gY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDQgKGYsIG4xLCBuMiwgbjMsIG40KSlcblxubGV0IG1hcDUgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDUgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSkpXG47O1xuXG5sZXQgbWFwNiAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNikpXG47O1xuXG5sZXQgbWFwNyAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwNyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcpKVxuOztcblxubGV0IG1hcDggKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IH5mID1cbiAgY3JlYXRlX25vZGUgbjEuc3RhdGUgKE1hcDggKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCkpXG47O1xuXG5sZXQgbWFwOSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgfmYgPVxuICBjcmVhdGVfbm9kZSBuMS5zdGF0ZSAoTWFwOSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSkpXG47O1xuXG5sZXQgbWFwMTAgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMCAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwKSlcbjs7XG5cbmxldCBtYXAxMSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMSAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEpKVxuOztcblxubGV0IG1hcDEyIChuMSA6IF8gTm9kZS50KSBuMiBuMyBuNCBuNSBuNiBuNyBuOCBuOSBuMTAgbjExIG4xMiB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMiAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMikpXG47O1xuXG5sZXQgbWFwMTMgKG4xIDogXyBOb2RlLnQpIG4yIG4zIG40IG41IG42IG43IG44IG45IG4xMCBuMTEgbjEyIG4xMyB+ZiA9XG4gIGNyZWF0ZV9ub2RlIG4xLnN0YXRlIChNYXAxMyAoZiwgbjEsIG4yLCBuMywgbjQsIG41LCBuNiwgbjcsIG44LCBuOSwgbjEwLCBuMTEsIG4xMiwgbjEzKSlcbjs7XG5cbmxldCBtYXAxNCAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCB+ZiA9XG4gIGNyZWF0ZV9ub2RlXG4gICAgbjEuc3RhdGVcbiAgICAoTWFwMTQgKGYsIG4xLCBuMiwgbjMsIG40LCBuNSwgbjYsIG43LCBuOCwgbjksIG4xMCwgbjExLCBuMTIsIG4xMywgbjE0KSlcbjs7XG5cbmxldCBtYXAxNSAobjEgOiBfIE5vZGUudCkgbjIgbjMgbjQgbjUgbjYgbjcgbjggbjkgbjEwIG4xMSBuMTIgbjEzIG4xNCBuMTUgfmYgPVxuICBjcmVhdGVfbm9kZVxuICAgIG4xLnN0YXRlXG4gICAgKE1hcDE1IChmLCBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCBuNywgbjgsIG45LCBuMTAsIG4xMSwgbjEyLCBuMTMsIG4xNCwgbjE1KSlcbjs7XG5cbmxldCBwcmVzZXJ2ZV9jdXRvZmYgfihpbnB1dCA6IF8gTm9kZS50KSB+b3V0cHV0ID1cbiAgTm9kZS5zZXRfY3V0b2ZmXG4gICAgb3V0cHV0XG4gICAgKEN1dG9mZi5jcmVhdGUgKGZ1biB+b2xkX3ZhbHVlOl8gfm5ld192YWx1ZTpfIC0+XG4gICAgICAgU3RhYmlsaXphdGlvbl9udW0uZXF1YWwgaW5wdXQuY2hhbmdlZF9hdCBvdXRwdXQuY2hhbmdlZF9hdCkpXG47O1xuXG5sZXQgZGVwZW5kX29uIGlucHV0IH5kZXBlbmRfb24gPVxuICBsZXQgb3V0cHV0ID0gbWFwMiBpbnB1dCBkZXBlbmRfb24gfmY6KGZ1biBhIF8gLT4gYSkgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBuZWNlc3NhcnlfaWZfYWxpdmUgaW5wdXQgPVxuICAoKiBJZiBbb3V0cHV0XSBpcyBhbGl2ZSwgdGhlbiBbb2JzZXJ2ZXJdIGlzIGFsaXZlLCB0aGVuIFtpbnB1dF0gaXMgbmVjZXNzYXJ5LiAgSWZcbiAgICAgW291dHB1dF0gaXMgdW5uZWNlc3NhcnksIHRoZW4gW291dHB1dF0gaXMgbm90IGEgcGFyZW50IG9mIFtpbnB1dF0sIGFuZCB0aHVzXG4gICAgIFtvdXRwdXRdJ3MgbGl2ZW5lc3MgaXMgZGVwZW5kZW50IHNvbGVseSBvbiB1c2VyIGNvZGUuICBBbmQgaW4gcGFydGljdWxhciwgaWYgW291dHB1dF1cbiAgICAgZGllcywgdGhlbiBbb2JzZXJ2ZXJdIHdpbGwgYmUgZmluYWxpemVkLCBhbmQgdGhlbiB1cG9uIHRoZSBuZXh0IHN0YWJpbGl6YXRpb24sXG4gICAgIFtpbnB1dF0gd2lsbCBiZWNvbWUgdW5uZWNlc3NhcnkgKGF0IGxlYXN0IHdpdGggcmVzcGVjdCB0byBbb3V0cHV0XSkuICopXG4gIGxldCBvYnNlcnZlciA9IGNyZWF0ZV9vYnNlcnZlciBpbnB1dCBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBtYXAgaW5wdXQgfmY6KGZ1biBhIC0+XG4gICAgICBHYy5rZWVwX2FsaXZlIG9ic2VydmVyO1xuICAgICAgYSlcbiAgaW5cbiAgcHJlc2VydmVfY3V0b2ZmIH5pbnB1dCB+b3V0cHV0O1xuICBvdXRwdXRcbjs7XG5cbmxldCBiaW5kIChsaHMgOiBfIE5vZGUudCkgfmYgPVxuICBsZXQgdCA9IGxocy5zdGF0ZSBpblxuICBsZXQgbGhzX2NoYW5nZSA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgYmluZCA9XG4gICAgeyBCaW5kLm1haW5cbiAgICA7IGZcbiAgICA7IGxoc1xuICAgIDsgbGhzX2NoYW5nZVxuICAgIDsgcmhzID0gVW9wdC5ub25lXG4gICAgOyByaHNfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFsbF9ub2Rlc19jcmVhdGVkX29uX3JocyA9IFVvcHQubm9uZVxuICAgIH1cbiAgaW5cbiAgKCogV2Ugc2V0IFtsaHNfY2hhbmdlXSB0byBuZXZlciBjdXRvZmYgc28gdGhhdCB3aGVuZXZlciBbbGhzXSBjaGFuZ2VzLCBbbWFpbl0gaXNcbiAgICAgcmVjb21wdXRlZC4gIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBbZl0gcmV0dXJucyBhbiBleGlzdGluZyBzdGFibGVcbiAgICAgbm9kZSwgaW4gd2hpY2ggY2FzZSB0aGUgW2xoc19jaGFuZ2VdIHdvdWxkIGJlIHRoZSBvbmx5IHRoaW5nIGNhdXNpbmcgW21haW5dIHRvIGJlXG4gICAgIHN0YWxlLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbGhzX2NoYW5nZSBDdXRvZmYubmV2ZXI7XG4gIGJpbmQucmhzX3Njb3BlIDwtIEJpbmQgYmluZDtcbiAgTm9kZS5zZXRfa2luZCBsaHNfY2hhbmdlIChCaW5kX2xoc19jaGFuZ2UgYmluZCk7XG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQmluZF9tYWluIGJpbmQpO1xuICBtYWluXG47O1xuXG5sZXQgYmluZDIgbjEgbjIgfmYgPVxuICBiaW5kIChtYXAyIG4xIG4yIH5mOihmdW4gdjEgdjIgLT4gdjEsIHYyKSkgfmY6KGZ1biAodjEsIHYyKSAtPiBmIHYxIHYyKVxuOztcblxubGV0IGJpbmQzIG4xIG4yIG4zIH5mID1cbiAgYmluZCAobWFwMyBuMSBuMiBuMyB+ZjooZnVuIHYxIHYyIHYzIC0+IHYxLCB2MiwgdjMpKSB+ZjooZnVuICh2MSwgdjIsIHYzKSAtPiBmIHYxIHYyIHYzKVxuOztcblxubGV0IGJpbmQ0IG4xIG4yIG4zIG40IH5mID1cbiAgYmluZFxuICAgIChtYXA0IG4xIG4yIG4zIG40IH5mOihmdW4gdjEgdjIgdjMgdjQgLT4gdjEsIHYyLCB2MywgdjQpKVxuICAgIH5mOihmdW4gKHYxLCB2MiwgdjMsIHY0KSAtPiBmIHYxIHYyIHYzIHY0KVxuOztcblxubGV0IGpvaW4gKGxocyA6IF8gTm9kZS50KSA9XG4gIGxldCB0ID0gbGhzLnN0YXRlIGluXG4gIGxldCBsaHNfY2hhbmdlID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBqb2luID0geyBKb2luLmxoczsgbGhzX2NoYW5nZTsgcmhzID0gVW9wdC5ub25lOyBtYWluIH0gaW5cbiAgTm9kZS5zZXRfY3V0b2ZmIGxoc19jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIGxoc19jaGFuZ2UgKEpvaW5fbGhzX2NoYW5nZSBqb2luKTtcbiAgTm9kZS5zZXRfa2luZCBtYWluIChKb2luX21haW4gam9pbik7XG4gIG1haW5cbjs7XG5cbmxldCBpZl8gKHRlc3QgOiBfIE5vZGUudCkgfnRoZW5fIH5lbHNlXyA9XG4gIGxldCB0ID0gdGVzdC5zdGF0ZSBpblxuICBsZXQgdGVzdF9jaGFuZ2UgPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZSB0IFVuaW5pdGlhbGl6ZWQgaW5cbiAgbGV0IGlmX3RoZW5fZWxzZSA9XG4gICAgeyBJZl90aGVuX2Vsc2UudGVzdDsgdGhlbl87IGVsc2VfOyB0ZXN0X2NoYW5nZTsgbWFpbjsgY3VycmVudF9icmFuY2ggPSBVb3B0Lm5vbmUgfVxuICBpblxuICBOb2RlLnNldF9jdXRvZmYgdGVzdF9jaGFuZ2UgQ3V0b2ZmLm5ldmVyO1xuICBOb2RlLnNldF9raW5kIHRlc3RfY2hhbmdlIChJZl90ZXN0X2NoYW5nZSBpZl90aGVuX2Vsc2UpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKElmX3RoZW5fZWxzZSBpZl90aGVuX2Vsc2UpO1xuICBtYWluXG47O1xuXG5sZXQgbGF6eV9mcm9tX2Z1biB0IH5mID1cbiAgbGV0IHNjb3BlID0gdC5jdXJyZW50X3Njb3BlIGluXG4gIExhenkuZnJvbV9mdW4gKGZ1biAoKSAtPiB3aXRoaW5fc2NvcGUgdCBzY29wZSB+Zilcbjs7XG5cbmxldCBkZWZhdWx0X2hhc2hfdGFibGVfaW5pdGlhbF9zaXplID0gNFxuXG5sZXQgbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICAoKiBIZXJlJ3MgYW4gZXhwbGFuYXRpb24gb2Ygd2h5IHdlIGdldCBbdC5jdXJyZW50X3Njb3BlXSBoZXJlLCBhbmQgdGhlbiBjYWxsXG4gICAgIFt3aXRoaW5fc2NvcGVdIGJlbG93LiAgQ29uc2lkZXIgdGhpcyAoaW1wb3NzaWJsZSkgYWx0ZXJuYXRlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgIFttZW1vaXplX2Z1bl9ieV9rZXldOlxuXG4gICAgIHtbXG4gICAgICAgbGV0IHRhYmxlID1cbiAgICAgICAgIEhhc2h0Ymwub2ZfYWxpc3RfZXhuIGhhc2hhYmxlXG4gICAgICAgICAgIChMaXN0Lm1hcCBhbGxfcG9zc2libGVfYV92YWx1ZXMgfmY6KGZ1biBhIC0+IChwcm9qZWN0X2tleSBhLCBmIGEpKVxuICAgICAgIGluXG4gICAgICAgc3RhZ2UgKGZ1biBrZXkgLT4gSGFzaHRibC5maW5kX2V4biB0YWJsZSAocHJvamVjdF9rZXkgYSkpXG4gICAgIF19XG5cbiAgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IHVzZSBbY3VycmVudF9zY29wZV0gb3IgW3dpdGhpbl9zY29wZV0uICBBbGwgY2FsbHMgdG8gW2ZdXG4gICAgIG5hdHVyYWxseSBvY2N1ciBpbiBbdC5jdXJyZW50X3Njb3BlXS5cblxuICAgICBTdWNoIGFuIGltcGxlbWVudGF0aW9uIGlzIGltcG9zc2libGUgYmVjYXVzZSB3ZSBkbyBub3QgaGF2ZSBbYWxsX3Bvc3NpYmxlX2FfdmFsdWVzXS5cbiAgICAgVGhlIGltcGxlbWVudGF0aW9uIGJlbG93IHVzZXMgW3dpdGhpbl9zY29wZV0gdG8gY2FsbCBbZiBhXSBpbiB0aGUgc2NvcGUgdGhhdCB3YXNcbiAgICAgY3VycmVudCBhdCB0aGUgcG9pbnQgb2YgdGhlIGNhbGwgdG8gW21lbW9pemVfZnVuX2J5X2tleV0gc28gdGhhdCB3ZSBjYW4gdGhpbmsgb2YgdGhlXG4gICAgIFt0YWJsZV0gYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCB0aGVuLCB3aGVuIGl0IGluIHJlYWxpdHkgaXMgY3JlYXRlZCBvbi1kZW1hbmQuICopXG4gIGxldCBzY29wZSA9IHQuY3VycmVudF9zY29wZSBpblxuICBsZXQgdGFibGUgPSBIYXNodGJsLmNyZWF0ZSBoYXNoYWJsZSB+c2l6ZTppbml0aWFsX3NpemUgaW5cbiAgc3RhZ2UgKGZ1biBhIC0+XG4gICAgbGV0IGtleSA9IHByb2plY3Rfa2V5IGEgaW5cbiAgICBtYXRjaCBIYXNodGJsLmZpbmQgdGFibGUga2V5IHdpdGhcbiAgICB8IFNvbWUgYiAtPiBiXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgYiA9IHdpdGhpbl9zY29wZSB0IHNjb3BlIH5mOihmdW4gKCkgLT4gZiBhKSBpblxuICAgICAgSGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5sZXQgYXJyYXlfZm9sZCB0IGNoaWxkcmVuIH5pbml0IH5mID1cbiAgaWYgQXJyYXkubGVuZ3RoIGNoaWxkcmVuID0gMFxuICB0aGVuIGNvbnN0IHQgaW5pdFxuICBlbHNlIGNyZWF0ZV9ub2RlIHQgKEFycmF5X2ZvbGQgeyBpbml0OyBmOyBjaGlsZHJlbiB9KVxuOztcblxubGV0IGFsbCB0IHRzID0gYXJyYXlfZm9sZCB0IChBcnJheS5vZl9saXN0X3JldiB0cykgfmluaXQ6W10gfmY6KGZ1biBhYyBhIC0+IGEgOjogYWMpXG5cbm1vZHVsZSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUgPSBVbm9yZGVyZWRfYXJyYXlfZm9sZC5VcGRhdGVcblxubGV0IHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICB0XG4gICAgICA/KGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgPSBJbnQubWF4X3ZhbHVlKVxuICAgICAgY2hpbGRyZW5cbiAgICAgIH5pbml0XG4gICAgICB+ZlxuICAgICAgfnVwZGF0ZVxuICA9XG4gIGlmIEFycmF5Lmxlbmd0aCBjaGlsZHJlbiA9IDBcbiAgdGhlbiBjb25zdCB0IGluaXRcbiAgZWxzZSBpZiBmdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIDw9IDBcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJ1bm9yZGVyZWRfYXJyYXlfZm9sZCBnb3Qgbm9uLXBvc2l0aXZlIGZ1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcIlxuICAgICAgZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlc1xuICAgICAgWyVzZXhwX29mOiBpbnRdXG4gIGVsc2UgKFxuICAgIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gICAgTm9kZS5zZXRfa2luZFxuICAgICAgbWFpblxuICAgICAgKFVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgICAoVW5vcmRlcmVkX2FycmF5X2ZvbGQuY3JlYXRlXG4gICAgICAgICAgICB+aW5pdFxuICAgICAgICAgICAgfmZcbiAgICAgICAgICAgIH51cGRhdGVcbiAgICAgICAgICAgIH5mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzXG4gICAgICAgICAgICB+Y2hpbGRyZW5cbiAgICAgICAgICAgIH5tYWluKSk7XG4gICAgbWFpbilcbjs7XG5cbmxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgdCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+Zl9pbnZlcnNlID1cbiAgbGV0IGYgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCArIDFcbiAgICB8IFNvbWUgeCAtPiBmIGFjY3VtIHgsIG51bV9pbnZhbGlkXG4gIGluXG4gIGxldCBmX2ludmVyc2UgKGFjY3VtLCBudW1faW52YWxpZCkgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBOb25lIC0+IGFjY3VtLCBudW1faW52YWxpZCAtIDFcbiAgICB8IFNvbWUgeCAtPiBmX2ludmVyc2UgYWNjdW0geCwgbnVtX2ludmFsaWRcbiAgaW5cbiAgbWFwXG4gICAgKHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgICAgdFxuICAgICAgIHRzXG4gICAgICAgfmluaXQ6KGluaXQsIDApXG4gICAgICAgfmZcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgZl9pbnZlcnNlKVxuICAgICAgID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzKVxuICAgIH5mOihmdW4gKGFjY3VtLCBudW1faW52YWxpZCkgLT4gaWYgbnVtX2ludmFsaWQgPSAwIHRoZW4gU29tZSBhY2N1bSBlbHNlIE5vbmUpXG47O1xuXG5sZXQgYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rID1cbiAgbGV0IGJvb2xfdG9faW50IGIgPSBpZiBiIHRoZW4gMSBlbHNlIDAgaW5cbiAgbWFwXG4gICAgfmY6KGZ1biBpIC0+IGkgPj0gaylcbiAgICAodW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgICAgICB0XG4gICAgICAgbm9kZXNcbiAgICAgICB+aW5pdDowXG4gICAgICAgfmY6KGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlICsgYm9vbF90b19pbnQgYilcbiAgICAgICB+dXBkYXRlOihGX2ludmVyc2UgKGZ1biBudW1fdHJ1ZSBiIC0+IG51bV90cnVlIC0gYm9vbF90b19pbnQgYikpKVxuOztcblxubGV0IGV4aXN0cyB0IG5vZGVzID0gYXRfbGVhc3Rfa19vZiB0IG5vZGVzIH5rOjFcbmxldCBmb3JfYWxsIHQgbm9kZXMgPSBhdF9sZWFzdF9rX29mIHQgbm9kZXMgfms6KEFycmF5Lmxlbmd0aCBub2RlcylcblxubGV0IHN1bSB0ID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIG5vZGVzIH56ZXJvIH5hZGQgfnN1YiA9XG4gIHVub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH51cGRhdGU6KEZfaW52ZXJzZSBzdWIpXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBvcHRfc3VtIHQgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgbm9kZXMgfnplcm8gfmFkZCB+c3ViID1cbiAgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkXG4gICAgdFxuICAgIG5vZGVzXG4gICAgfmluaXQ6emVyb1xuICAgIH5mOmFkZFxuICAgIH5mX2ludmVyc2U6c3ViXG4gICAgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbjs7XG5cbmxldCBzdW1faW50IHQgbm9kZXMgPSBzdW0gdCBub2RlcyB+emVybzowIH5hZGQ6KCArICkgfnN1YjooIC0gKVxuXG5sZXQgc3VtX2Zsb2F0IHQgbm9kZXMgPVxuICBzdW1cbiAgICB0XG4gICAgbm9kZXNcbiAgICB+emVybzowLlxuICAgIH5hZGQ6KCArLiApXG4gICAgfnN1YjooIC0uIClcbiAgICB+ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlczooQXJyYXkubGVuZ3RoIG5vZGVzKVxuOztcblxubGV0IHNldF9mcmVlemUgKG5vZGUgOiBfIE5vZGUudCkgfmNoaWxkIH5vbmx5X2ZyZWV6ZV93aGVuID1cbiAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKFNjb3BlLmlzX3RvcCBub2RlLmNyZWF0ZWRfaW4pO1xuICAoKiBCeSBtYWtpbmcgW25vZGUua2luZF0gYmUgW0ZyZWV6ZV0sIHdlIGFyZSBtYWtpbmcgW05vZGUuaXNfbmVjZXNzYXJ5IG5vZGVdLiAqKVxuICBsZXQgd2FzX25lY2Vzc2FyeSA9IE5vZGUuaXNfbmVjZXNzYXJ5IG5vZGUgaW5cbiAgTm9kZS5zZXRfa2luZCBub2RlIChGcmVlemUgeyBtYWluID0gbm9kZTsgY2hpbGQ7IG9ubHlfZnJlZXplX3doZW4gfSk7XG4gIGlmIHdhc19uZWNlc3NhcnlcbiAgdGhlbiBhZGRfcGFyZW50IH5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4OktpbmQuZnJlZXplX2NoaWxkX2luZGV4XG4gIGVsc2UgYmVjYW1lX25lY2Vzc2FyeSBub2RlXG47O1xuXG5sZXQgZnJlZXplIChjaGlsZCA6IF8gTm9kZS50KSB+b25seV9mcmVlemVfd2hlbiA9XG4gIGxldCB0ID0gY2hpbGQuc3RhdGUgaW5cbiAgbGV0IG5vZGUgPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gIHNldF9mcmVlemUgbm9kZSB+Y2hpbGQgfm9ubHlfZnJlZXplX3doZW47XG4gIG5vZGVcbjs7XG5cbmxldCBhdCBjbG9jayB0aW1lID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIHRpbWUgKG5vdyBjbG9jaylcbiAgdGhlbiBjb25zdCB0IEJlZm9yZV9vcl9hZnRlci5BZnRlclxuICBlbHNlIChcbiAgICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICAgIGxldCBhdCA9IHsgQXQuYXQgPSB0aW1lOyBtYWluOyBhbGFybSA9IEFsYXJtLm51bGw7IGNsb2NrIH0gaW5cbiAgICBOb2RlLnNldF9raW5kIG1haW4gKEF0IGF0KTtcbiAgICBhdC5hbGFybSA8LSBhZGRfYWxhcm0gY2xvY2sgfmF0OnRpbWUgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoQXQgYXQpKTtcbiAgICBtYWluKVxuOztcblxubGV0IGFmdGVyIGNsb2NrIHNwYW4gPSBhdCBjbG9jayAoVGltZV9ucy5hZGQgKG5vdyBjbG9jaykgc3BhbilcblxubGV0IG5leHRfaW50ZXJ2YWxfYWxhcm1fc3RyaWN0IChjbG9jayA6IENsb2NrLnQpIH5iYXNlIH5pbnRlcnZhbCA9XG4gIGxldCBhZnRlciA9IG5vdyBjbG9jayBpblxuICBsZXQgYXQgPSBUaW1lX25zLm5leHRfbXVsdGlwbGUgfmJhc2UgfmFmdGVyIH5pbnRlcnZhbCB+Y2FuX2VxdWFsX2FmdGVyOmZhbHNlICgpIGluXG4gIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChUaW1lX25zLiggPiApIGF0IGFmdGVyKTtcbiAgYXRcbjs7XG5cbmxldCBhdF9pbnRlcnZhbHMgKGNsb2NrIDogQ2xvY2sudCkgaW50ZXJ2YWwgPVxuICBsZXQgdCA9IENsb2NrLmluY3Jfc3RhdGUgY2xvY2sgaW5cbiAgaWYgVGltZV9ucy5TcGFuLiggPCApIGludGVydmFsIChUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIGNsb2NrLnRpbWluZ193aGVlbClcbiAgdGhlblxuICAgIGZhaWx3aXRoc1xuICAgICAgfmhlcmU6WyVoZXJlXVxuICAgICAgXCJhdF9pbnRlcnZhbHMgZ290IHRvbyBzbWFsbCBpbnRlcnZhbFwiXG4gICAgICBpbnRlcnZhbFxuICAgICAgWyVzZXhwX29mOiBUaW1lX25zLlNwYW4udF07XG4gIGxldCBtYWluID0gY3JlYXRlX25vZGUgdCBVbmluaXRpYWxpemVkIGluXG4gIGxldCBiYXNlID0gbm93IGNsb2NrIGluXG4gIGxldCBhdF9pbnRlcnZhbHMgPSB7IEF0X2ludGVydmFscy5tYWluOyBiYXNlOyBpbnRlcnZhbDsgYWxhcm0gPSBBbGFybS5udWxsOyBjbG9jayB9IGluXG4gIE5vZGUuc2V0X2tpbmQgbWFpbiAoQXRfaW50ZXJ2YWxzIGF0X2ludGVydmFscyk7XG4gICgqIFttYWluIDogdW5pdCBOb2RlLnRdLCBzbyB3ZSBtYWtlIGl0IG5ldmVyIGN1dG9mZiBzbyBpdCBjaGFuZ2VzIGVhY2ggdGltZSBpdCBpc1xuICAgICByZWNvbXB1dGVkLiAqKVxuICBOb2RlLnNldF9jdXRvZmYgbWFpbiBDdXRvZmYubmV2ZXI7XG4gIGF0X2ludGVydmFscy5hbGFybVxuICA8LSBhZGRfYWxhcm1cbiAgICAgICBjbG9ja1xuICAgICAgIH5hdDoobmV4dF9pbnRlcnZhbF9hbGFybV9zdHJpY3QgY2xvY2sgfmJhc2UgfmludGVydmFsKVxuICAgICAgIChBbGFybV92YWx1ZS5jcmVhdGUgKEF0X2ludGVydmFscyBhdF9pbnRlcnZhbHMpKTtcbiAgbWFpblxuOztcblxubGV0IHNuYXBzaG90IGNsb2NrIHZhbHVlX2F0IH5hdCB+YmVmb3JlID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGlmIFRpbWVfbnMuKCA8PSApIGF0IChub3cgY2xvY2spXG4gIHRoZW5cbiAgICBpZiBUaW1lX25zLiggPCApIGF0IChub3cgY2xvY2spXG4gICAgdGhlbiBPcl9lcnJvci5lcnJvciBcImNhbm5vdCB0YWtlIHNuYXBzaG90IGluIHRoZSBwYXN0XCIgYXQgWyVzZXhwX29mOiBUaW1lX25zLnRdXG4gICAgZWxzZSBPayAoZnJlZXplIHZhbHVlX2F0IH5vbmx5X2ZyZWV6ZV93aGVuOihGbi5jb25zdCB0cnVlKSlcbiAgZWxzZSAoXG4gICAgbGV0IG1haW4gPSBjcmVhdGVfbm9kZV90b3AgdCBVbmluaXRpYWxpemVkIGluXG4gICAgbGV0IHNuYXBzaG90ID0geyBTbmFwc2hvdC5tYWluOyBhdDsgYmVmb3JlOyB2YWx1ZV9hdDsgY2xvY2sgfSBpblxuICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoU25hcHNob3Qgc25hcHNob3QpO1xuICAgICgqIFVubGlrZSBvdGhlciB0aW1lLWJhc2VkIGluY3JlbWVudGFscywgYSBzbmFwc2hvdCBpcyBjcmVhdGVkIGluIFtTY29wZS50b3BdIGFuZFxuICAgICAgIGNhbm5vdCBiZSBpbnZhbGlkYXRlZCBieSBpdHMgc2NvcGUuICBUaHVzLCB0aGVyZSBpcyBubyBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG4gICAgICAgYWxhcm0gdGhhdCBpcyBhZGRlZCwgYmVjYXVzZSBpdCB3aWxsIG5ldmVyIG5lZWQgdG8gYmUgcmVtb3ZlZCBlYXJseS4gKilcbiAgICBpZ25vcmUgKGFkZF9hbGFybSBjbG9jayB+YXQgKEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU25hcHNob3Qgc25hcHNob3QpKSA6IEFsYXJtLnQpO1xuICAgIE9rIG1haW4pXG47O1xuXG5sZXQgaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvbiBjbG9jayBjaGlsZCA9XG4gIGxldCB0ID0gQ2xvY2suaW5jcl9zdGF0ZSBjbG9jayBpblxuICBsZXQgbWFpbiA9IGNyZWF0ZV9ub2RlIHQgVW5pbml0aWFsaXplZCBpblxuICBsZXQgc3RlcF9mdW5jdGlvbl9ub2RlID1cbiAgICB7IFN0ZXBfZnVuY3Rpb25fbm9kZS5tYWluXG4gICAgOyB2YWx1ZSA9IFVvcHQubm9uZVxuICAgIDsgY2hpbGQgPSBVb3B0LnNvbWUgY2hpbGRcbiAgICA7IGV4dHJhY3RlZF9zdGVwX2Z1bmN0aW9uX2Zyb21fY2hpbGRfYXQgPSBTdGFiaWxpemF0aW9uX251bS5ub25lXG4gICAgOyB1cGNvbWluZ19zdGVwcyA9IFNlcXVlbmNlLmVtcHR5XG4gICAgOyBhbGFybSA9IEFsYXJtLm51bGxcbiAgICA7IGFsYXJtX3ZhbHVlID0gT2JqLm1hZ2ljIE5vbmUgKCogc2V0IGJlbG93ICopXG4gICAgOyBjbG9ja1xuICAgIH1cbiAgaW5cbiAgc3RlcF9mdW5jdGlvbl9ub2RlLmFsYXJtX3ZhbHVlIDwtIEFsYXJtX3ZhbHVlLmNyZWF0ZSAoU3RlcF9mdW5jdGlvbiBzdGVwX2Z1bmN0aW9uX25vZGUpO1xuICBOb2RlLnNldF9raW5kIG1haW4gKFN0ZXBfZnVuY3Rpb24gc3RlcF9mdW5jdGlvbl9ub2RlKTtcbiAgbWFpblxuOztcblxubGV0IG1ha2Vfc3RhbGUgKG5vZGUgOiBfIE5vZGUudCkgPVxuICBsZXQgdCA9IG5vZGUuc3RhdGUgaW5cbiAgbm9kZS5yZWNvbXB1dGVkX2F0IDwtIFN0YWJpbGl6YXRpb25fbnVtLm5vbmU7XG4gICgqIGZvcmNlIHRoZSBub2RlIHRvIGJlIHN0YWxlICopXG4gIGlmIE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSAmJiBub3QgKE5vZGUuaXNfaW5fcmVjb21wdXRlX2hlYXAgbm9kZSlcbiAgdGhlbiBSZWNvbXB1dGVfaGVhcC5hZGQgdC5yZWNvbXB1dGVfaGVhcCBub2RlXG47O1xuXG5sZXQgYWR2YW5jZV9jbG9jayAoY2xvY2sgOiBDbG9jay50KSB+dG9fID1cbiAgbGV0IHQgPSBDbG9jay5pbmNyX3N0YXRlIGNsb2NrIGluXG4gIGVuc3VyZV9ub3Rfc3RhYmlsaXppbmcgdCB+bmFtZTpcImFkdmFuY2VfY2xvY2tcIiB+YWxsb3dfaW5fdXBkYXRlX2hhbmRsZXI6dHJ1ZTtcbiAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdDtcbiAgaWYgVGltZV9ucy4oID4gKSB0b18gKG5vdyBjbG9jaylcbiAgdGhlbiAoXG4gICAgc2V0X3Zhcl93aGlsZV9ub3Rfc3RhYmlsaXppbmcgY2xvY2subm93IHRvXztcbiAgICBUaW1pbmdfd2hlZWwuYWR2YW5jZV9jbG9jayBjbG9jay50aW1pbmdfd2hlZWwgfnRvXyB+aGFuZGxlX2ZpcmVkOmNsb2NrLmhhbmRsZV9maXJlZDtcbiAgICBUaW1pbmdfd2hlZWwuZmlyZV9wYXN0X2FsYXJtcyBjbG9jay50aW1pbmdfd2hlZWwgfmhhbmRsZV9maXJlZDpjbG9jay5oYW5kbGVfZmlyZWQ7XG4gICAgd2hpbGUgVW9wdC5pc19zb21lIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyBkb1xuICAgICAgbGV0IGFsYXJtX3ZhbHVlID0gVW9wdC51bnNhZmVfdmFsdWUgY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzIGluXG4gICAgICBjbG9jay5maXJlZF9hbGFybV92YWx1ZXMgPC0gYWxhcm1fdmFsdWUubmV4dF9maXJlZDtcbiAgICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gVW9wdC5ub25lO1xuICAgICAgbWF0Y2ggYWxhcm1fdmFsdWUuYWN0aW9uIHdpdGhcbiAgICAgIHwgQXQgeyBtYWluOyBfIH0gLT5cbiAgICAgICAgaWYgTm9kZS5pc192YWxpZCBtYWluXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgIE5vZGUuc2V0X2tpbmQgbWFpbiAoQ29uc3QgQWZ0ZXIpO1xuICAgICAgICAgIG1ha2Vfc3RhbGUgbWFpbilcbiAgICAgIHwgQXRfaW50ZXJ2YWxzICh7IG1haW47IGJhc2U7IGludGVydmFsOyBfIH0gYXMgYXRfaW50ZXJ2YWxzKSAtPlxuICAgICAgICBpZiBOb2RlLmlzX3ZhbGlkIG1haW5cbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgYXRfaW50ZXJ2YWxzLmFsYXJtXG4gICAgICAgICAgPC0gYWRkX2FsYXJtXG4gICAgICAgICAgICAgICBjbG9ja1xuICAgICAgICAgICAgICAgfmF0OihuZXh0X2ludGVydmFsX2FsYXJtX3N0cmljdCBjbG9jayB+YmFzZSB+aW50ZXJ2YWwpXG4gICAgICAgICAgICAgICBhbGFybV92YWx1ZTtcbiAgICAgICAgICBtYWtlX3N0YWxlIG1haW4pXG4gICAgICB8IFNuYXBzaG90IHsgbWFpbjsgdmFsdWVfYXQ7IF8gfSAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGFzc2VydCAoTm9kZS5pc192YWxpZCBtYWluKTtcbiAgICAgICAgc2V0X2ZyZWV6ZSBtYWluIH5jaGlsZDp2YWx1ZV9hdCB+b25seV9mcmVlemVfd2hlbjooZnVuIF8gLT4gdHJ1ZSk7XG4gICAgICAgIG1ha2Vfc3RhbGUgbWFpblxuICAgICAgfCBTdGVwX2Z1bmN0aW9uIHsgbWFpbjsgXyB9IC0+IGlmIE5vZGUuaXNfdmFsaWQgbWFpbiB0aGVuIG1ha2Vfc3RhbGUgbWFpblxuICAgIGRvbmU7XG4gICAgaWYgZGVidWcgdGhlbiBpbnZhcmlhbnQgdClcbjs7XG5cbmxldCBjcmVhdGVfY2xvY2sgdCB+dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgPVxuICBsZXQgdGltaW5nX3doZWVsID0gVGltaW5nX3doZWVsLmNyZWF0ZSB+Y29uZmlnOnRpbWluZ193aGVlbF9jb25maWcgfnN0YXJ0IGluXG4gIGxldCByZWMgY2xvY2sgOiBDbG9jay50ID1cbiAgICB7IG5vdyA9IGNyZWF0ZV92YXIgdCBzdGFydFxuICAgIDsgaGFuZGxlX2ZpcmVkXG4gICAgOyBmaXJlZF9hbGFybV92YWx1ZXMgPSBVb3B0Lm5vbmVcbiAgICA7IHRpbWluZ193aGVlbFxuICAgIH1cbiAgYW5kIGhhbmRsZV9maXJlZCBhbGFybSA9XG4gICAgbGV0IGFsYXJtX3ZhbHVlID0gVGltaW5nX3doZWVsLkFsYXJtLnZhbHVlIGNsb2NrLnRpbWluZ193aGVlbCBhbGFybSBpblxuICAgIGFsYXJtX3ZhbHVlLm5leHRfZmlyZWQgPC0gY2xvY2suZmlyZWRfYWxhcm1fdmFsdWVzO1xuICAgIGNsb2NrLmZpcmVkX2FsYXJtX3ZhbHVlcyA8LSBVb3B0LnNvbWUgYWxhcm1fdmFsdWVcbiAgaW5cbiAgY2xvY2tcbjs7XG5cbmxldCBjcmVhdGUgKG1vZHVsZSBDb25maWcgOiBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnKSB+bWF4X2hlaWdodF9hbGxvd2VkID1cbiAgbGV0IGFkanVzdF9oZWlnaHRzX2hlYXAgPSBBZGp1c3RfaGVpZ2h0c19oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCByZWNvbXB1dGVfaGVhcCA9IFJlY29tcHV0ZV9oZWFwLmNyZWF0ZSB+bWF4X2hlaWdodF9hbGxvd2VkIGluXG4gIGxldCB0ID1cbiAgICB7IHN0YXR1cyA9IE5vdF9zdGFiaWxpemluZ1xuICAgIDsgYmluZF9saHNfY2hhbmdlX3Nob3VsZF9pbnZhbGlkYXRlX3JocyA9IENvbmZpZy5iaW5kX2xoc19jaGFuZ2Vfc2hvdWxkX2ludmFsaWRhdGVfcmhzXG4gICAgOyBzdGFiaWxpemF0aW9uX251bSA9IFN0YWJpbGl6YXRpb25fbnVtLnplcm9cbiAgICA7IGN1cnJlbnRfc2NvcGUgPSBTY29wZS50b3BcbiAgICA7IGFkanVzdF9oZWlnaHRzX2hlYXBcbiAgICA7IHJlY29tcHV0ZV9oZWFwXG4gICAgOyBwcm9wYWdhdGVfaW52YWxpZGl0eSA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbnVtX2FjdGl2ZV9vYnNlcnZlcnMgPSAwXG4gICAgOyBhbGxfb2JzZXJ2ZXJzID0gVW9wdC5ub25lXG4gICAgOyBmaW5hbGl6ZWRfb2JzZXJ2ZXJzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBkaXNhbGxvd2VkX29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgbmV3X29ic2VydmVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgc2V0X2R1cmluZ19zdGFiaWxpemF0aW9uID0gU3RhY2suY3JlYXRlICgpXG4gICAgOyBoYW5kbGVfYWZ0ZXJfc3RhYmlsaXphdGlvbiA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgcnVuX29uX3VwZGF0ZV9oYW5kbGVycyA9IFN0YWNrLmNyZWF0ZSAoKVxuICAgIDsgb25seV9pbl9kZWJ1ZyA9IE9ubHlfaW5fZGVidWcuY3JlYXRlICgpXG4gICAgOyB3ZWFrX2hhc2h0YmxzID0gVGhyZWFkX3NhZmVfcXVldWUuY3JlYXRlICgpXG4gICAgOyBrZWVwX25vZGVfY3JlYXRpb25fYmFja3RyYWNlID0gZmFsc2VcbiAgICA7IG51bV9ub2Rlc19iZWNhbWVfbmVjZXNzYXJ5ID0gMFxuICAgIDsgbnVtX25vZGVzX2JlY2FtZV91bm5lY2Vzc2FyeSA9IDBcbiAgICA7IG51bV9ub2Rlc19jaGFuZ2VkID0gMFxuICAgIDsgbnVtX25vZGVzX2ludmFsaWRhdGVkID0gMFxuICAgIDsgbnVtX25vZGVzX2NyZWF0ZWQgPSAwXG4gICAgOyBudW1fbm9kZXNfcmVjb21wdXRlZCA9IDBcbiAgICA7IG51bV9ub2Rlc19yZWNvbXB1dGVkX2RpcmVjdGx5X2JlY2F1c2Vfb25lX2NoaWxkID0gMFxuICAgIDsgbnVtX25vZGVzX3JlY29tcHV0ZWRfZGlyZWN0bHlfYmVjYXVzZV9taW5faGVpZ2h0ID0gMFxuICAgIDsgbnVtX3Zhcl9zZXRzID0gMFxuICAgIH1cbiAgaW5cbiAgdFxuOztcblxubGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG4gICAgICA/KGluaXRpYWxfc2l6ZSA9IGRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemUpXG4gICAgICB0XG4gICAgICBoYXNoYWJsZVxuICAgICAgcHJvamVjdF9rZXlcbiAgICAgIGZcbiAgPVxuICBsZXQgc2NvcGUgPSB0LmN1cnJlbnRfc2NvcGUgaW5cbiAgbGV0IHRhYmxlID0gV2Vha19oYXNodGJsLmNyZWF0ZSB+c2l6ZTppbml0aWFsX3NpemUgaGFzaGFibGUgaW5cbiAgbGV0IHBhY2tlZCA9IFBhY2tlZF93ZWFrX2hhc2h0YmwuVCB0YWJsZSBpblxuICBXZWFrX2hhc2h0Ymwuc2V0X3J1bl93aGVuX3VudXNlZF9kYXRhIHRhYmxlIH50aHJlYWRfc2FmZV9mOihmdW4gKCkgLT5cbiAgICBUaHJlYWRfc2FmZV9xdWV1ZS5lbnF1ZXVlIHQud2Vha19oYXNodGJscyBwYWNrZWQpO1xuICBzdGFnZSAoZnVuIGEgLT5cbiAgICBsZXQga2V5ID0gcHJvamVjdF9rZXkgYSBpblxuICAgIG1hdGNoIFdlYWtfaGFzaHRibC5maW5kIHRhYmxlIGtleSB3aXRoXG4gICAgfCBTb21lIGIgLT4gYlxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGIgPSB3aXRoaW5fc2NvcGUgdCBzY29wZSB+ZjooZnVuICgpIC0+IGYgYSkgaW5cbiAgICAgIFdlYWtfaGFzaHRibC5hZGRfZXhuIHRhYmxlIH5rZXkgfmRhdGE6YjtcbiAgICAgIGIpXG47O1xuXG5tb2R1bGUgRXhwZXJ0ID0gc3RydWN0XG4gICgqIEdpdmVuIHRoYXQgaW52YWxpZCBub2RlIGFyZSBhdCBhdHRlbXB0IGF0IGF2b2lkaW5nIGJyZWFraW5nIHRoZSBlbnRpcmUgaW5jcmVtZW50YWxcbiAgICAgY29tcHV0YXRpb24gb24gcHJvYmxlbXMsIGxldCdzIGp1c3QgaWdub3JlIGFueSBvcGVyYXRpb24gb24gYW4gaW52YWxpZCBpbmNyZW1lbnRhbFxuICAgICByYXRoZXIgdGhhbiByYWlzaW5nLiAqKVxuICBsZXQgZXhwZXJ0X2tpbmRfb2Zfbm9kZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbWF0Y2ggbm9kZS5raW5kIHdpdGhcbiAgICB8IEV4cGVydCBlIC0+IFVvcHQuc29tZSBlXG4gICAgfCBJbnZhbGlkIC0+IFVvcHQubm9uZVxuICAgIHwga2luZCAtPiByYWlzZV9zIFslc2V4cCBcInVuZXhwZWN0ZWQga2luZCBmb3IgZXhwZXJ0IG5vZGVcIiwgKGtpbmQgOiBfIEtpbmQudCldXG4gIDs7XG5cbiAgbGV0IGNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZiA9XG4gICAgbGV0IGUgPSBFeHBlcnQuY3JlYXRlIH5mIH5vbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSBpblxuICAgIGxldCBub2RlID0gY3JlYXRlX25vZGUgc3RhdGUgKEV4cGVydCBlKSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgaWYgT3B0aW9uLmlzX3NvbWUgc3RhdGUub25seV9pbl9kZWJ1Zy5jdXJyZW50bHlfcnVubmluZ19ub2RlXG4gICAgICB0aGVuXG4gICAgICAgIHN0YXRlLm9ubHlfaW5fZGVidWcuZXhwZXJ0X25vZGVzX2NyZWF0ZWRfYnlfY3VycmVudF9ub2RlXG4gICAgICAgIDwtIFQgbm9kZSA6OiBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZTtcbiAgICBub2RlXG4gIDs7XG5cbiAgbGV0IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgPVxuICAgIG1hdGNoIHN0YXRlLm9ubHlfaW5fZGVidWcuY3VycmVudGx5X3J1bm5pbmdfbm9kZSB3aXRoXG4gICAgfCBOb25lIC0+IHJhaXNlX3MgWyVzZXhwIChcImNhbiBvbmx5IGNhbGwgXCIgXiBuYW1lIF4gXCIgZHVyaW5nIHN0YWJpbGl6YXRpb25cIiA6IHN0cmluZyldXG4gICAgfCBTb21lIGN1cnJlbnQgLT4gY3VycmVudFxuICA7O1xuXG4gICgqIE5vdGUgdGhhdCB0aGUgdHdvIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBzeW1tZXRyaWMgb2Ygb25lIGFub3RoZXI6IGluIFtsZXQgeSA9XG4gICAgIG1hcCB4XSwgW3hdIGlzIGFsd2F5cyBhIGNoaWxkIG9mIFt5XSAoYXNzdW1pbmcgW3hdIGRvZXNuJ3QgYmVjb21lIGludmFsaWQpIGJ1dCBbeV0gaW5cbiAgICAgb25seSBhIHBhcmVudCBvZiBbeF0gaWYgeSBpcyBuZWNlc3NhcnkuICopXG4gIGxldCBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIG5hbWUgPVxuICAgIGxldCAoVCBjdXJyZW50KSA9IGN1cnJlbnRseV9ydW5uaW5nX25vZGVfZXhuIHN0YXRlIG5hbWUgaW5cbiAgICBpZiBub3QgKE5vZGUuaGFzX2NoaWxkIG5vZGUgfmNoaWxkOmN1cnJlbnQpXG4gICAgdGhlblxuICAgICAgcmFpc2Vfc1xuICAgICAgICBbJXNleHBcbiAgICAgICAgICAoXCJjYW4gb25seSBjYWxsIFwiIF4gbmFtZSBeIFwiIG9uIHBhcmVudCBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgYXNzZXJ0X2N1cnJlbnRseV9ydW5uaW5nX25vZGVfaXNfcGFyZW50IHN0YXRlIG5vZGUgbmFtZSA9XG4gICAgbGV0IChUIGN1cnJlbnQpID0gY3VycmVudGx5X3J1bm5pbmdfbm9kZV9leG4gc3RhdGUgbmFtZSBpblxuICAgIGlmIG5vdCAoTm9kZS5oYXNfcGFyZW50IH5wYXJlbnQ6Y3VycmVudCBub2RlKVxuICAgIHRoZW5cbiAgICAgIHJhaXNlX3NcbiAgICAgICAgWyVzZXhwXG4gICAgICAgICAgKFwiY2FuIG9ubHkgY2FsbCBcIiBeIG5hbWUgXiBcIiBvbiBjaGlsZHJlbiBub2Rlc1wiIDogc3RyaW5nKVxuICAgICAgICAsIH5+KG5vZGUua2luZCA6IF8gS2luZC50KVxuICAgICAgICAsIH5+KGN1cnJlbnQua2luZCA6IF8gS2luZC50KV1cbiAgOztcblxuICBsZXQgbWFrZV9zdGFsZSAobm9kZSA6IF8gTm9kZS50KSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwibWFrZV9zdGFsZVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbWF0Y2ggRXhwZXJ0Lm1ha2Vfc3RhbGUgZSB3aXRoXG4gICAgICB8IGBBbHJlYWR5X3N0YWxlIC0+ICgpXG4gICAgICB8IGBPayAtPlxuICAgICAgICBpZiBOb2RlLmlzX25lY2Vzc2FyeSBub2RlICYmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKVxuICA7O1xuXG4gIGxldCBpbnZhbGlkYXRlIChub2RlIDogXyBOb2RlLnQpID1cbiAgICBsZXQgc3RhdGUgPSBub2RlLnN0YXRlIGluXG4gICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwiaW52YWxpZGF0ZVwiO1xuICAgIGludmFsaWRhdGVfbm9kZSBub2RlO1xuICAgIHByb3BhZ2F0ZV9pbnZhbGlkaXR5IHN0YXRlXG4gIDs7XG5cbiAgbGV0IGFkZF9kZXBlbmRlbmN5IChub2RlIDogXyBOb2RlLnQpIChkZXAgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWdcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgKExpc3QubWVtXG4gICAgICAgICAgICAgICAgfmVxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICAgICBzdGF0ZS5vbmx5X2luX2RlYnVnLmV4cGVydF9ub2Rlc19jcmVhdGVkX2J5X2N1cnJlbnRfbm9kZVxuICAgICAgICAgICAgICAgIChUIG5vZGUpKVxuICAgICAgICB0aGVuIGFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX2NoaWxkIHN0YXRlIG5vZGUgXCJhZGRfZGVwZW5kZW5jeVwiO1xuICAgICAgbGV0IGUgPSBVb3B0LnVuc2FmZV92YWx1ZSBlX29wdCBpblxuICAgICAgbGV0IG5ld19jaGlsZF9pbmRleCA9IEV4cGVydC5hZGRfY2hpbGRfZWRnZSBlIChFIGRlcCkgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGV2ZW4gaWYgd2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBvZlxuICAgICAgICAgW25vZGVdLCBiZWNhdXNlIHdlIGNvdWxkIGJlIHJ1bm5pbmcgZHVlIHRvIGEgcGFyZW50IG90aGVyIHRoYW4gW25vZGVdIG1ha2luZyB1c1xuICAgICAgICAgbmVjZXNzYXJ5LiAqKVxuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIGFkZF9wYXJlbnQgfmNoaWxkOmRlcC5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Om5ld19jaGlsZF9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnQgKE5vZGUubmVlZHNfdG9fYmVfY29tcHV0ZWQgbm9kZSk7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc19pbl9yZWNvbXB1dGVfaGVhcCBub2RlKVxuICAgICAgICB0aGVuIFJlY29tcHV0ZV9oZWFwLmFkZCBzdGF0ZS5yZWNvbXB1dGVfaGVhcCBub2RlKSlcbiAgOztcblxuICBsZXQgcmVtb3ZlX2RlcGVuZGVuY3kgKG5vZGUgOiBfIE5vZGUudCkgKGVkZ2UgOiBfIEV4cGVydC5lZGdlKSA9XG4gICAgbGV0IHN0YXRlID0gbm9kZS5zdGF0ZSBpblxuICAgIGxldCBlX29wdCA9IGV4cGVydF9raW5kX29mX25vZGUgbm9kZSBpblxuICAgIGlmIFVvcHQuaXNfc29tZSBlX29wdFxuICAgIHRoZW4gKFxuICAgICAgaWYgZGVidWcgdGhlbiBhc3NlcnRfY3VycmVudGx5X3J1bm5pbmdfbm9kZV9pc19jaGlsZCBzdGF0ZSBub2RlIFwicmVtb3ZlX2RlcGVuZGVuY3lcIjtcbiAgICAgIGxldCBlID0gVW9wdC51bnNhZmVfdmFsdWUgZV9vcHQgaW5cbiAgICAgICgqIFtub2RlXSBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBuZWNlc3NhcnksIGZvciB0aGUgcmVhc29uIHN0YXRlZCBpblxuICAgICAgICAgW2FkZF9kZXBlbmRlbmN5XSAqKVxuICAgICAgbGV0IGVkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBlZGdlLmluZGV4IGluXG4gICAgICBsZXQgKEUgbGFzdF9lZGdlKSA9IEV4cGVydC5sYXN0X2NoaWxkX2VkZ2VfZXhuIGUgaW5cbiAgICAgIGxldCBsYXN0X2VkZ2VfaW5kZXggPSBVb3B0LnZhbHVlX2V4biBsYXN0X2VkZ2UuaW5kZXggaW5cbiAgICAgIGlmIGVkZ2VfaW5kZXggPD4gbGFzdF9lZGdlX2luZGV4XG4gICAgICB0aGVuIChcbiAgICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTm9kZS5zd2FwX2NoaWxkcmVuX2V4Y2VwdF9pbl9raW5kXG4gICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB+Y2hpbGQxOmVkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleFxuICAgICAgICAgICAgfmNoaWxkMjpsYXN0X2VkZ2UuY2hpbGRcbiAgICAgICAgICAgIH5jaGlsZF9pbmRleDI6bGFzdF9lZGdlX2luZGV4O1xuICAgICAgICBFeHBlcnQuc3dhcF9jaGlsZHJlbiBlIH5jaGlsZF9pbmRleDE6ZWRnZV9pbmRleCB+Y2hpbGRfaW5kZXgyOmxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgZGVidWcgdGhlbiBOb2RlLmludmFyaWFudCBpZ25vcmUgbm9kZSk7XG4gICAgICBFeHBlcnQucmVtb3ZlX2xhc3RfY2hpbGRfZWRnZV9leG4gZTtcbiAgICAgIGlmIGRlYnVnIHRoZW4gYXNzZXJ0IChOb2RlLmlzX3N0YWxlIG5vZGUpO1xuICAgICAgaWYgTm9kZS5pc19uZWNlc3Nhcnkgbm9kZVxuICAgICAgdGhlbiAoXG4gICAgICAgIHJlbW92ZV9jaGlsZCB+Y2hpbGQ6ZWRnZS5jaGlsZCB+cGFyZW50Om5vZGUgfmNoaWxkX2luZGV4Omxhc3RfZWRnZV9pbmRleDtcbiAgICAgICAgaWYgbm90IChOb2RlLmlzX2luX3JlY29tcHV0ZV9oZWFwIG5vZGUpXG4gICAgICAgIHRoZW4gUmVjb21wdXRlX2hlYXAuYWRkIHN0YXRlLnJlY29tcHV0ZV9oZWFwIG5vZGU7XG4gICAgICAgIGlmIG5vdCAoTm9kZS5pc192YWxpZCBlZGdlLmNoaWxkKSB0aGVuIEV4cGVydC5kZWNyX2ludmFsaWRfY2hpbGRyZW4gZSkpXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgRGVwZW5kZW5jeSA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBFeHBlcnQuZWRnZSBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgPyhvbl9jaGFuZ2UgPSBpZ25vcmUpIGNoaWxkIDogXyB0ID0geyBjaGlsZDsgb25fY2hhbmdlOyBpbmRleCA9IFVvcHQubm9uZSB9XG5cbiAgbGV0IHZhbHVlICh0IDogXyB0KSA9XG4gICAgbGV0IHN0YXRlID0gdC5jaGlsZC5zdGF0ZSBpblxuICAgIGlmIGRlYnVnXG4gICAgdGhlblxuICAgICAgU3RhdGUuRXhwZXJ0LmFzc2VydF9jdXJyZW50bHlfcnVubmluZ19ub2RlX2lzX3BhcmVudFxuICAgICAgICBzdGF0ZVxuICAgICAgICB0LmNoaWxkXG4gICAgICAgIFwiRGVwZW5kZW5jeS52YWx1ZVwiO1xuICAgICgqIE5vdCBleHBvc2luZyB0aGUgX2V4biwgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIGFkdmVydGlzZWQgYXMgYmVpbmcgdXNhYmxlIG9ubHlcbiAgICAgICBpbnNpZGUgdGhlIGNhbGxiYWNrcyBvZiBwYXJlbnRzLCB3aGVyZSBpdCB3aWxsIG5vdCByYWlzZS4gKilcbiAgICBOb2RlLnZhbHVlX2V4biB0LmNoaWxkXG4gIDs7XG5lbmRcblxubW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgdHlwZSBub25yZWMgJ2EgdCA9ICdhIE5vZGUudCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGxldCBjcmVhdGUgc3RhdGUgPyhvbl9vYnNlcnZhYmlsaXR5X2NoYW5nZSA9IGZ1biB+aXNfbm93X29ic2VydmFibGU6XyAtPiAoKSkgZiA9XG4gICAgU3RhdGUuRXhwZXJ0LmNyZWF0ZSBzdGF0ZSB+b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICA7O1xuXG4gIGxldCBtYWtlX3N0YWxlID0gU3RhdGUuRXhwZXJ0Lm1ha2Vfc3RhbGVcbiAgbGV0IHdhdGNoID0gRm4uaWRcbiAgbGV0IGludmFsaWRhdGUgPSBTdGF0ZS5FeHBlcnQuaW52YWxpZGF0ZVxuICBsZXQgYWRkX2RlcGVuZGVuY3kgPSBTdGF0ZS5FeHBlcnQuYWRkX2RlcGVuZGVuY3lcbiAgbGV0IHJlbW92ZV9kZXBlbmRlbmN5ID0gU3RhdGUuRXhwZXJ0LnJlbW92ZV9kZXBlbmRlbmN5XG5lbmRcbiIsIm9wZW4hIENvcmVcbm9wZW4hIEltcG9ydFxuXG5sZXQgY3JlYXRlIHN0YXRlIGNoaWxkcmVuIH5mIH5yZWR1Y2UgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGNoaWxkcmVuIGluXG4gIGlmIGxlbiA9IDBcbiAgdGhlbiBOb25lXG4gIGVsc2UgKFxuICAgIGxldCByZWR1Y2VyID0gQmFsYW5jZWRfcmVkdWNlci5jcmVhdGVfZXhuICgpIH5sZW4gfnJlZHVjZSBpblxuICAgIGlmIGRlYnVnIHRoZW4gQmFsYW5jZWRfcmVkdWNlci5pbnZhcmlhbnQgKGNvbnN0ICgpKSByZWR1Y2VyO1xuICAgIGxldCBub2RlID1cbiAgICAgIEV4cGVydDEuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICBsZXQgYSA9IEJhbGFuY2VkX3JlZHVjZXIuY29tcHV0ZV9leG4gcmVkdWNlciBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIEJhbGFuY2VkX3JlZHVjZXIuaW52YXJpYW50IChjb25zdCAoKSkgcmVkdWNlcjtcbiAgICAgICAgYSlcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBFeHBlcnQxLk5vZGUuYWRkX2RlcGVuZGVuY3lcbiAgICAgICAgbm9kZVxuICAgICAgICAoRXhwZXJ0MS5EZXBlbmRlbmN5LmNyZWF0ZSBjaGlsZHJlbi4oaSkgfm9uX2NoYW5nZTooZnVuIGEgLT5cbiAgICAgICAgICAgQmFsYW5jZWRfcmVkdWNlci5zZXRfZXhuIHJlZHVjZXIgaSAoZiBhKTtcbiAgICAgICAgICAgaWYgZGVidWcgdGhlbiBCYWxhbmNlZF9yZWR1Y2VyLmludmFyaWFudCAoY29uc3QgKCkpIHJlZHVjZXIpKVxuICAgIGRvbmU7XG4gICAgU29tZSAoRXhwZXJ0MS5Ob2RlLndhdGNoIG5vZGUpKVxuOztcbiIsIigqIFRoaXMgbW9kdWxlIGlzIG1vc3RseSBhIHdyYXBwZXIgYXJvdW5kIFtTdGF0ZV0gZnVuY3Rpb25zLiAqKVxuXG5vcGVuISBDb3JlXG5vcGVuISBJbXBvcnRcbmluY2x1ZGUgSW5jcmVtZW50YWxfaW50ZlxuXG5tb2R1bGUgdHlwZSBJbmNyZW1lbnRhbF9jb25maWcgPSBDb25maWcuSW5jcmVtZW50YWxfY29uZmlnXG5cbm1vZHVsZSBDb25maWcgPSBDb25maWdcblxubGV0IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkID0gMTI4XG5cbm1vZHVsZSBHZW5lcmljID0gc3RydWN0XG4gIG1vZHVsZSBDdXRvZmYgPSBDdXRvZmZcbiAgbW9kdWxlIFN0ZXBfZnVuY3Rpb24gPSBTdGVwX2Z1bmN0aW9uXG5cbiAgbW9kdWxlIFN0YXRlID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZVxuXG4gICAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgIHZhbCB0IDogdFxuICAgIGVuZFxuXG4gICAgbGV0IGNyZWF0ZV9pbnRlcm5hbCA9IGNyZWF0ZVxuXG4gICAgbGV0IGNyZWF0ZSA/KG1heF9oZWlnaHRfYWxsb3dlZCA9IGRlZmF1bHRfbWF4X2hlaWdodF9hbGxvd2VkKSAoKSA6IChtb2R1bGUgUykgPVxuICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgICAgICAgbGV0IHQgPSBjcmVhdGUgKG1vZHVsZSBDb25maWcuRGVmYXVsdCAoKSkgfm1heF9oZWlnaHRfYWxsb3dlZFxuICAgICAgZW5kKVxuICAgIDs7XG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50IChzdGF0ZSA6IFN0YXRlLnQpICgpID0gc3RhdGUuY3VycmVudF9zY29wZVxuICAgIGxldCB3aXRoaW4gc3RhdGUgdCB+ZiA9IFN0YXRlLndpdGhpbl9zY29wZSBzdGF0ZSB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgTm9kZVxuXG4gIGxldCBzdGF0ZSB0ID0gdC5zdGF0ZVxuICBsZXQgcGFjayB0ID0gUGFja2VkLlQgdFxuICBsZXQgY29uc3Qgc3RhdGUgYSA9IFN0YXRlLmNvbnN0IHN0YXRlIGFcbiAgbGV0IHJldHVybiA9IGNvbnN0XG4gIGxldCBvYnNlcnZlID0gU3RhdGUuY3JlYXRlX29ic2VydmVyXG4gIGxldCBtYXAgPSBTdGF0ZS5tYXBcbiAgbGV0IGJpbmQgPSBTdGF0ZS5iaW5kXG5cbiAgbW9kdWxlIE5fYXJ5X21hcF9hbmRfYmluZCA9IHN0cnVjdFxuICAgIGxldCBtYXAyID0gU3RhdGUubWFwMlxuICAgIGxldCBtYXAzID0gU3RhdGUubWFwM1xuICAgIGxldCBtYXA0ID0gU3RhdGUubWFwNFxuICAgIGxldCBtYXA1ID0gU3RhdGUubWFwNVxuICAgIGxldCBtYXA2ID0gU3RhdGUubWFwNlxuICAgIGxldCBtYXA3ID0gU3RhdGUubWFwN1xuICAgIGxldCBtYXA4ID0gU3RhdGUubWFwOFxuICAgIGxldCBtYXA5ID0gU3RhdGUubWFwOVxuICAgIGxldCBtYXAxMCA9IFN0YXRlLm1hcDEwXG4gICAgbGV0IG1hcDExID0gU3RhdGUubWFwMTFcbiAgICBsZXQgbWFwMTIgPSBTdGF0ZS5tYXAxMlxuICAgIGxldCBtYXAxMyA9IFN0YXRlLm1hcDEzXG4gICAgbGV0IG1hcDE0ID0gU3RhdGUubWFwMTRcbiAgICBsZXQgbWFwMTUgPSBTdGF0ZS5tYXAxNVxuICAgIGxldCBiaW5kMiA9IFN0YXRlLmJpbmQyXG4gICAgbGV0IGJpbmQzID0gU3RhdGUuYmluZDNcbiAgICBsZXQgYmluZDQgPSBTdGF0ZS5iaW5kNFxuICBlbmRcblxuICBpbmNsdWRlIE5fYXJ5X21hcF9hbmRfYmluZFxuXG4gIG1vZHVsZSBJbmZpeCA9IHN0cnVjdFxuICAgIGxldCAoID4+fCApIHQgZiA9IG1hcCB0IH5mXG4gICAgbGV0ICggPj49ICkgdCBmID0gYmluZCB0IH5mXG4gIGVuZFxuXG4gIGluY2x1ZGUgSW5maXhcblxuICBsZXQgam9pbiA9IFN0YXRlLmpvaW5cbiAgbGV0IGlmXyA9IFN0YXRlLmlmX1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuICBsZXQgZGVmYXVsdF9oYXNoX3RhYmxlX2luaXRpYWxfc2l6ZSA9IFN0YXRlLmRlZmF1bHRfaGFzaF90YWJsZV9pbml0aWFsX3NpemVcbiAgbGV0IG1lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLm1lbW9pemVfZnVuX2J5X2tleVxuXG4gIGxldCBtZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIGYgPVxuICAgIG1lbW9pemVfZnVuX2J5X2tleSBzdGF0ZSA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcblxuICBsZXQgYXJyYXlfZm9sZCBzdGF0ZSB0cyB+aW5pdCB+ZiA9IFN0YXRlLmFycmF5X2ZvbGQgc3RhdGUgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCBzdGF0ZSB0cyB+ZiB+cmVkdWNlID0gUmVkdWNlX2JhbGFuY2VkLmNyZWF0ZSBzdGF0ZSB0cyB+ZiB+cmVkdWNlXG5cbiAgbW9kdWxlIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZSA9IFN0YXRlLlVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA9IFN0YXRlLnVub3JkZXJlZF9hcnJheV9mb2xkXG4gIGxldCBvcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGQgPSBTdGF0ZS5vcHRfdW5vcmRlcmVkX2FycmF5X2ZvbGRcbiAgbGV0IGFsbCA9IFN0YXRlLmFsbFxuICBsZXQgZXhpc3RzID0gU3RhdGUuZXhpc3RzXG4gIGxldCBmb3JfYWxsID0gU3RhdGUuZm9yX2FsbFxuICBsZXQgYm90aCA9IFN0YXRlLmJvdGhcbiAgbGV0IHN1bSA9IFN0YXRlLnN1bVxuICBsZXQgb3B0X3N1bSA9IFN0YXRlLm9wdF9zdW1cbiAgbGV0IHN1bV9pbnQgPSBTdGF0ZS5zdW1faW50XG4gIGxldCBzdW1fZmxvYXQgPSBTdGF0ZS5zdW1fZmxvYXRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgPSBTdGF0ZS5jcmVhdGVfdmFyXG4gICAgbGV0IHNldCA9IFN0YXRlLnNldF92YXJcbiAgICBsZXQgdmFsdWUgdCA9IHQudmFsdWVcbiAgICBsZXQgd2F0Y2ggdCA9IHQud2F0Y2hcblxuICAgICgqIFdlIG92ZXJyaWRlIFtzZXhwX29mX3RdIHRvIGp1c3Qgc2hvdyB0aGUgdmFsdWUsIHJhdGhlciB0aGFuIHRoZSBpbnRlcm5hbFxuICAgICAgIHJlcHJlc2VudGF0aW9uLiAqKVxuICAgIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPSB0LnZhbHVlIHw+IFslc2V4cF9vZjogYV1cbiAgICBsZXQgcmVwbGFjZSB0IH5mID0gc2V0IHQgKGYgKGxhdGVzdF92YWx1ZSB0KSlcbiAgZW5kXG5cbiAgbW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gICAgaW5jbHVkZSBPYnNlcnZlclxuXG4gICAgbW9kdWxlIFVwZGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID1cbiAgICAgICAgfCBJbml0aWFsaXplZCBvZiAnYVxuICAgICAgICB8IENoYW5nZWQgb2YgJ2EgKiAnYVxuICAgICAgICB8IEludmFsaWRhdGVkXG4gICAgICBbQEBkZXJpdmluZyBjb21wYXJlLCBzZXhwX29mXVxuICAgIGVuZFxuXG4gICAgbGV0IG9uX3VwZGF0ZV9leG4gdCB+KGYgOiBfIFVwZGF0ZS50IC0+IHVuaXQpID1cbiAgICAgIFN0YXRlLm9ic2VydmVyX29uX3VwZGF0ZV9leG4gdCB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOZWNlc3NhcnkgYSAtPiBmIChJbml0aWFsaXplZCBhKVxuICAgICAgICB8IENoYW5nZWQgKGExLCBhMikgLT4gZiAoQ2hhbmdlZCAoYTEsIGEyKSlcbiAgICAgICAgfCBJbnZhbGlkYXRlZCAtPiBmIEludmFsaWRhdGVkXG4gICAgICAgIHwgVW5uZWNlc3NhcnkgLT5cbiAgICAgICAgICBmYWlsd2l0aHNcbiAgICAgICAgICAgIH5oZXJlOlslaGVyZV1cbiAgICAgICAgICAgIFwiSW5jcmVtZW50YWwgYnVnIC0tIE9ic2VydmVyLm9uX3VwZGF0ZV9leG4gZ290IHVuZXhwZWN0ZWQgdXBkYXRlIFxcXG4gICAgICAgICAgICAgVW5uZWNlc3NhcnlcIlxuICAgICAgICAgICAgdFxuICAgICAgICAgICAgWyVzZXhwX29mOiBfIHRdKVxuICAgIDs7XG5cbiAgICBsZXQgZGlzYWxsb3dfZnV0dXJlX3VzZSB0ID0gU3RhdGUuZGlzYWxsb3dfZnV0dXJlX3VzZSAhdFxuICAgIGxldCB2YWx1ZSA9IFN0YXRlLm9ic2VydmVyX3ZhbHVlXG4gICAgbGV0IHZhbHVlX2V4biA9IFN0YXRlLm9ic2VydmVyX3ZhbHVlX2V4blxuXG4gICAgKCogV2Ugb3ZlcnJpZGUgW3NleHBfb2ZfdF0gdG8ganVzdCBzaG93IHRoZSB2YWx1ZSwgcmF0aGVyIHRoYW4gdGhlIGludGVybmFsXG4gICAgICAgcmVwcmVzZW50YXRpb24uICopXG4gICAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgKHQgOiBfIHQpID1cbiAgICAgIG1hdGNoICF0LnN0YXRlIHdpdGhcbiAgICAgIHwgQ3JlYXRlZCAtPiBbJW1lc3NhZ2UgXCI8dW5zdGFiaWxpemVkPlwiXVxuICAgICAgfCBEaXNhbGxvd2VkIHwgVW5saW5rZWQgLT4gWyVtZXNzYWdlIFwiPGRpc2FsbG93ZWQ+XCJdXG4gICAgICB8IEluX3VzZSAtPlxuICAgICAgICBsZXQgdW9wdCA9ICF0Lm9ic2VydmluZy52YWx1ZV9vcHQgaW5cbiAgICAgICAgaWYgVW9wdC5pc19ub25lIHVvcHRcbiAgICAgICAgdGhlbiBbJW1lc3NhZ2UgXCI8aW52YWxpZD5cIl1cbiAgICAgICAgZWxzZSBbJXNleHAgKFVvcHQudW5zYWZlX3ZhbHVlIHVvcHQgOiBhKV1cbiAgICA7O1xuICBlbmRcblxuICBtb2R1bGUgQmVmb3JlX29yX2FmdGVyID0gQmVmb3JlX29yX2FmdGVyXG5cbiAgbW9kdWxlIENsb2NrID0gc3RydWN0XG4gICAgaW5jbHVkZSBTdGF0ZS5DbG9ja1xuXG4gICAgbGV0IHN0YXRlID0gaW5jcl9zdGF0ZVxuXG4gICAgbGV0IGRlZmF1bHRfdGltaW5nX3doZWVsX2NvbmZpZyA9XG4gICAgICBsZXQgYWxhcm1fcHJlY2lzaW9uID0gQWxhcm1fcHJlY2lzaW9uLmFib3V0X29uZV9taWxsaXNlY29uZCBpblxuICAgICAgbGV0IGxldmVsX2JpdHMgPSBbIDE0OyAxMzsgNSBdIGluXG4gICAgICBUaW1pbmdfd2hlZWwuQ29uZmlnLmNyZWF0ZVxuICAgICAgICB+YWxhcm1fcHJlY2lzaW9uXG4gICAgICAgIH5sZXZlbF9iaXRzOlxuICAgICAgICAgIChUaW1pbmdfd2hlZWwuTGV2ZWxfYml0cy5jcmVhdGVfZXhuIGxldmVsX2JpdHMgfmV4dGVuZF90b19tYXhfbnVtX2JpdHM6dHJ1ZSlcbiAgICAgICAgKClcbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZSBzdGF0ZSA/KHRpbWluZ193aGVlbF9jb25maWcgPSBkZWZhdWx0X3RpbWluZ193aGVlbF9jb25maWcpIH5zdGFydCAoKSA9XG4gICAgICAoKiBNYWtlIHN1cmUgW3N0YXJ0XSBpcyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IG1pY3Jvc2Vjb25kLiAgT3RoZXJ3aXNlLCBpZiB5b3VcbiAgICAgICAgIGZlZWQgW0Nsb2NrLm5vdyAoKV0gdG8gYSB0aW1lIGZ1bmN0aW9uLCBpdCBjYW4gYmUgcm91bmRlZCBkb3duIHRvIGEgdGltZSBpblxuICAgICAgICAgdGhlIHBhc3QsIGNhdXNpbmcgZXJyb3JzLiAqKVxuICAgICAgbGV0IHN0YXJ0ID1cbiAgICAgICAgVGltZV9ucy5vZl90aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmRcbiAgICAgICAgICAoVGltZV9ucy50b190aW1lX2Zsb2F0X3JvdW5kX25lYXJlc3RfbWljcm9zZWNvbmQgc3RhcnQpXG4gICAgICBpblxuICAgICAgU3RhdGUuY3JlYXRlX2Nsb2NrIHN0YXRlIH50aW1pbmdfd2hlZWxfY29uZmlnIH5zdGFydFxuICAgIDs7XG5cbiAgICBsZXQgYWxhcm1fcHJlY2lzaW9uIHQgPSBUaW1pbmdfd2hlZWwuYWxhcm1fcHJlY2lzaW9uIHQudGltaW5nX3doZWVsXG4gICAgbGV0IHRpbWluZ193aGVlbF9sZW5ndGggPSBTdGF0ZS50aW1pbmdfd2hlZWxfbGVuZ3RoXG4gICAgbGV0IG5vdyA9IFN0YXRlLm5vd1xuICAgIGxldCB3YXRjaF9ub3cgdCA9IHQubm93LndhdGNoXG4gICAgbGV0IGF0ID0gU3RhdGUuYXRcbiAgICBsZXQgYWZ0ZXIgPSBTdGF0ZS5hZnRlclxuICAgIGxldCBhdF9pbnRlcnZhbHMgPSBTdGF0ZS5hdF9pbnRlcnZhbHNcbiAgICBsZXQgYWR2YW5jZV9jbG9jayA9IFN0YXRlLmFkdmFuY2VfY2xvY2tcbiAgICBsZXQgYWR2YW5jZV9jbG9ja19ieSB0IHNwYW4gPSBhZHZhbmNlX2Nsb2NrIHQgfnRvXzooVGltZV9ucy5hZGQgKG5vdyB0KSBzcGFuKVxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uID0gU3RhdGUuaW5jcmVtZW50YWxfc3RlcF9mdW5jdGlvblxuXG4gICAgbGV0IHN0ZXBfZnVuY3Rpb24gdCB+aW5pdCBzdGVwcyA9XG4gICAgICBpbmNyZW1lbnRhbF9zdGVwX2Z1bmN0aW9uXG4gICAgICAgIHRcbiAgICAgICAgKGNvbnN0IChpbmNyX3N0YXRlIHQpIChTdGVwX2Z1bmN0aW9uLmNyZWF0ZV9leG4gfmluaXQgfnN0ZXBzKSlcbiAgICA7O1xuXG4gICAgbGV0IHNuYXBzaG90ID0gU3RhdGUuc25hcHNob3RcbiAgZW5kXG5cbiAgbGV0IGZyZWV6ZSA/KHdoZW5fID0gZnVuIF8gLT4gdHJ1ZSkgdCA9IFN0YXRlLmZyZWV6ZSB0IH5vbmx5X2ZyZWV6ZV93aGVuOndoZW5fXG4gIGxldCBkZXBlbmRfb24gdCB+ZGVwZW5kX29uID0gU3RhdGUuZGVwZW5kX29uIHQgfmRlcGVuZF9vblxuICBsZXQgbmVjZXNzYXJ5X2lmX2FsaXZlID0gU3RhdGUubmVjZXNzYXJ5X2lmX2FsaXZlXG5cbiAgbW9kdWxlIFVwZGF0ZSA9IE9uX3VwZGF0ZV9oYW5kbGVyLk5vZGVfdXBkYXRlXG5cbiAgbGV0IG9uX3VwZGF0ZSA9IFN0YXRlLm5vZGVfb25fdXBkYXRlXG4gIGxldCBzdGFiaWxpemUgc3RhdGUgPSBTdGF0ZS5zdGFiaWxpemUgc3RhdGVcbiAgbGV0IGFtX3N0YWJpbGl6aW5nIHN0YXRlID0gU3RhdGUuYW1fc3RhYmlsaXppbmcgc3RhdGVcbiAgbGV0IHNhdmVfZG90ID0gU3RhdGUuc2F2ZV9kb3RcbiAgbGV0IHNhdmVfZG90X3RvX2ZpbGUgPSBTdGF0ZS5zYXZlX2RvdF90b19maWxlXG5cbiAgbW9kdWxlIE5vZGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPVxuICAgICAgfCBJbnZhbGlkXG4gICAgICB8IE5lY2Vzc2FyeV9tYXliZV9zdGFsZSBvZiAnYSBvcHRpb25cbiAgICAgIHwgVW5uZWNlc3NhcnlfbWF5YmVfc3RhbGUgb2YgJ2Egb3B0aW9uXG4gICAgW0BAZGVyaXZpbmcgc2V4cF9vZl1cbiAgZW5kXG5cbiAgbGV0IG5vZGVfdmFsdWUgdCA6IF8gTm9kZV92YWx1ZS50ID1cbiAgICBpZiBub3QgKGlzX3ZhbGlkIHQpXG4gICAgdGhlbiBJbnZhbGlkXG4gICAgZWxzZSBpZiBpc19uZWNlc3NhcnkgdFxuICAgIHRoZW4gTmVjZXNzYXJ5X21heWJlX3N0YWxlIChVb3B0LnRvX29wdGlvbiB0LnZhbHVlX29wdClcbiAgICBlbHNlIFVubmVjZXNzYXJ5X21heWJlX3N0YWxlIChVb3B0LnRvX29wdGlvbiB0LnZhbHVlX29wdClcbiAgOztcblxuICAoKiBXZSBvdmVycmlkZSBbc2V4cF9vZl90XSB0byBzaG93IGp1c3QgdGhlIHZhbHVlLCByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWxcbiAgICAgcmVwcmVzZW50YXRpb24uICBXZSBvbmx5IHNob3cgdGhlIHZhbHVlIGlmIGl0IGlzIG5lY2Vzc2FyeSBhbmQgdmFsaWQuICopXG4gIGxldCBzZXhwX29mX3Qgc2V4cF9vZl9hIHQgPVxuICAgIGlmIG5vdCAoaXNfdmFsaWQgdClcbiAgICB0aGVuIFwiPGludmFsaWQ+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSBpZiBub3QgKGlzX25lY2Vzc2FyeSB0KVxuICAgIHRoZW4gXCI8dW5uZWNlc3Nhcnk+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSBpZiBVb3B0LmlzX25vbmUgdC52YWx1ZV9vcHRcbiAgICB0aGVuIFwiPHVuY29tcHV0ZWQ+XCIgfD4gWyVzZXhwX29mOiBzdHJpbmddXG4gICAgZWxzZSB1bnNhZmVfdmFsdWUgdCB8PiBbJXNleHBfb2Y6IGFdXG4gIDs7XG5cbiAgbW9kdWxlIEV4cGVydCA9IEV4cGVydDFcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGxldCByZXR1cm4gPSByZXR1cm5cbiAgICBsZXQgKCA+PnwgKSA9ICggPj58IClcbiAgICBsZXQgKCA+Pj0gKSA9ICggPj49IClcblxuICAgIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgICBsZXQgYmluZCA9IGJpbmRcbiAgICAgIGxldCBtYXAgPSBtYXBcbiAgICAgIGxldCBib3RoIHQxIHQyID0gbWFwMiB0MSB0MiB+ZjooZnVuIHgxIHgyIC0+IHgxLCB4MilcblxuICAgICAgaW5jbHVkZSBOX2FyeV9tYXBfYW5kX2JpbmRcblxuICAgICAgbW9kdWxlIE9wZW5fb25fcmhzID0gc3RydWN0XG4gICAgICAgIGxldCB3YXRjaCA9IFZhci53YXRjaFxuICAgICAgZW5kXG4gICAgZW5kXG4gIGVuZFxuXG4gIGxldCB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA9IFN0YXRlLndlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5XG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBzdGF0ZSBoYXNoYWJsZSBmID1cbiAgICB3ZWFrX21lbW9pemVfZnVuX2J5X2tleSA/aW5pdGlhbF9zaXplIHN0YXRlIGhhc2hhYmxlIEZuLmlkIGZcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZV93aXRoX2NvbmZpZyAoSW5jcmVtZW50YWxfY29uZmlnIDogSW5jcmVtZW50YWxfY29uZmlnKSAoKSA9IHN0cnVjdFxuICB0eXBlIHN0YXRlX3dpdG5lc3MgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIFN0YXRlXG5cbiAgICBsZXQgdCA9IGNyZWF0ZV9pbnRlcm5hbCAobW9kdWxlIEluY3JlbWVudGFsX2NvbmZpZykgfm1heF9oZWlnaHRfYWxsb3dlZDoxMjhcbiAgZW5kXG5cbiAgbW9kdWxlIENsb2NrID0gc3RydWN0XG4gICAgaW5jbHVkZSBDbG9ja1xuXG4gICAgbGV0IGNyZWF0ZSA/dGltaW5nX3doZWVsX2NvbmZpZyB+c3RhcnQgKCkgPVxuICAgICAgY3JlYXRlID90aW1pbmdfd2hlZWxfY29uZmlnIFN0YXRlLnQgfnN0YXJ0ICgpXG4gICAgOztcbiAgZW5kXG5cbiAgbW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgRXhwZXJ0XG5cbiAgICBtb2R1bGUgTm9kZSA9IHN0cnVjdFxuICAgICAgaW5jbHVkZSBOb2RlXG5cbiAgICAgIGxldCBjcmVhdGUgP29uX29ic2VydmFiaWxpdHlfY2hhbmdlIGYgPSBjcmVhdGUgU3RhdGUudCA/b25fb2JzZXJ2YWJpbGl0eV9jaGFuZ2UgZlxuICAgIGVuZFxuXG4gICAgbW9kdWxlIFN0ZXBfcmVzdWx0ID0gU3RhdGUuU3RlcF9yZXN1bHRcblxuICAgIGxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgKCkgPSBTdGF0ZS5kb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgU3RhdGUudFxuICBlbmRcblxuICBtb2R1bGUgTGV0X3N5bnRheCA9IHN0cnVjdFxuICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuXG4gICAgbGV0IHJldHVybiBhID0gcmV0dXJuIFN0YXRlLnQgYVxuXG4gICAgbW9kdWxlIExldF9zeW50YXggPSBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgTGV0X3N5bnRheFxuXG4gICAgICBsZXQgcmV0dXJuID0gcmV0dXJuXG4gICAgZW5kXG4gIGVuZFxuXG4gIG1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICAgIGluY2x1ZGUgU2NvcGVcblxuICAgIGxldCBjdXJyZW50ICgpID0gY3VycmVudCBTdGF0ZS50ICgpXG4gICAgbGV0IHdpdGhpbiB0IH5mID0gd2l0aGluIFN0YXRlLnQgdCB+ZlxuICBlbmRcblxuICBtb2R1bGUgVmFyID0gc3RydWN0XG4gICAgaW5jbHVkZSBWYXJcblxuICAgIGxldCBjcmVhdGUgP3VzZV9jdXJyZW50X3Njb3BlIHZhbHVlID0gY3JlYXRlID91c2VfY3VycmVudF9zY29wZSBTdGF0ZS50IHZhbHVlXG4gIGVuZFxuXG4gIGxldCBjb25zdCBhID0gY29uc3QgU3RhdGUudCBhXG4gIGxldCByZXR1cm4gYSA9IHJldHVybiBTdGF0ZS50IGFcbiAgbGV0IGFsbCB0cyA9IGFsbCBTdGF0ZS50IHRzXG4gIGxldCBleGlzdHMgdHMgPSBleGlzdHMgU3RhdGUudCB0c1xuICBsZXQgZm9yX2FsbCB0cyA9IGZvcl9hbGwgU3RhdGUudCB0c1xuICBsZXQgbGF6eV9mcm9tX2Z1biBzdGF0ZSBmID0gU3RhdGUubGF6eV9mcm9tX2Z1biBzdGF0ZSB+ZlxuXG4gIGxldCBtZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBwcm9qZWN0X2tleSBmID1cbiAgICBtZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIHByb2plY3Rfa2V5IGZcbiAgOztcblxuICBsZXQgbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBoYXNoYWJsZSBmID0gbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIGZcbiAgbGV0IGFycmF5X2ZvbGQgdHMgfmluaXQgfmYgPSBhcnJheV9mb2xkIFN0YXRlLnQgdHMgfmluaXQgfmZcbiAgbGV0IHJlZHVjZV9iYWxhbmNlZCB0cyB+ZiB+cmVkdWNlID0gcmVkdWNlX2JhbGFuY2VkIFN0YXRlLnQgdHMgfmYgfnJlZHVjZVxuXG4gIGxldCB1bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyB0cyB+aW5pdCB+ZiB+dXBkYXRlID1cbiAgICB1bm9yZGVyZWRfYXJyYXlfZm9sZCBTdGF0ZS50IHRzIH5pbml0IH5mIH51cGRhdGUgP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXNcbiAgOztcblxuICBsZXQgb3B0X3Vub3JkZXJlZF9hcnJheV9mb2xkID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH5pbml0IH5mIH5mX2ludmVyc2UgPVxuICAgIG9wdF91bm9yZGVyZWRfYXJyYXlfZm9sZCA/ZnVsbF9jb21wdXRlX2V2ZXJ5X25fY2hhbmdlcyBTdGF0ZS50IHRzIH5pbml0IH5mIH5mX2ludmVyc2VcbiAgOztcblxuICBsZXQgc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIHRzIH56ZXJvIH5hZGQgfnN1YiA9XG4gICAgc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfnplcm8gfmFkZCB+c3ViXG4gIDs7XG5cbiAgbGV0IG9wdF9zdW0gP2Z1bGxfY29tcHV0ZV9ldmVyeV9uX2NoYW5nZXMgdHMgfnplcm8gfmFkZCB+c3ViID1cbiAgICBvcHRfc3VtID9mdWxsX2NvbXB1dGVfZXZlcnlfbl9jaGFuZ2VzIFN0YXRlLnQgdHMgfnplcm8gfmFkZCB+c3ViXG4gIDs7XG5cbiAgbGV0IHN1bV9pbnQgdHMgPSBzdW1faW50IFN0YXRlLnQgdHNcbiAgbGV0IHN1bV9mbG9hdCB0cyA9IHN1bV9mbG9hdCBTdGF0ZS50IHRzXG4gIGxldCBzdGFiaWxpemUgKCkgPSBzdGFiaWxpemUgU3RhdGUudFxuICBsZXQgYW1fc3RhYmlsaXppbmcgKCkgPSBhbV9zdGFiaWxpemluZyBTdGF0ZS50XG4gIGxldCBzYXZlX2RvdCBvdXQgPSBzYXZlX2RvdCBTdGF0ZS50IG91dFxuICBsZXQgc2F2ZV9kb3RfdG9fZmlsZSBmaWxlID0gT3V0X2NoYW5uZWwud2l0aF9maWxlIGZpbGUgfmY6c2F2ZV9kb3RcbiAgbGV0IGxhenlfZnJvbV9mdW4gZiA9IGxhenlfZnJvbV9mdW4gU3RhdGUudCBmXG5cbiAgbGV0IHdlYWtfbWVtb2l6ZV9mdW5fYnlfa2V5ID9pbml0aWFsX3NpemUgaGFzaGFibGUgcHJvamVjdF9rZXkgZiA9XG4gICAgd2Vha19tZW1vaXplX2Z1bl9ieV9rZXkgP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIHByb2plY3Rfa2V5IGZcbiAgOztcblxuICBsZXQgd2Vha19tZW1vaXplX2Z1biA/aW5pdGlhbF9zaXplIGhhc2hhYmxlIGYgPVxuICAgIHdlYWtfbWVtb2l6ZV9mdW4gP2luaXRpYWxfc2l6ZSBTdGF0ZS50IGhhc2hhYmxlIGZcbiAgOztcbmVuZFxuXG5tb2R1bGUgTWFrZSAoKSA9IE1ha2Vfd2l0aF9jb25maWcgKENvbmZpZy5EZWZhdWx0ICgpKSAoKVxuaW5jbHVkZSBHZW5lcmljXG5cbm1vZHVsZSBBZGRfd2l0bmVzczAgKE0gOiBzaWdcbiAgICB0eXBlIHQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgIGluY2x1ZGUgSW52YXJpYW50LlMgd2l0aCB0eXBlIHQgOj0gdFxuICBlbmQpIDogc2lnXG4gIHR5cGUgJ3cgdCA9IE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMxIHdpdGggdHlwZSAnYSB0IDo9ICdhIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICd3IHQgPSBNLnRcblxuICBsZXQgaW52YXJpYW50IF8gdCA9IE0uaW52YXJpYW50IHRcbiAgbGV0IHNleHBfb2ZfdCBfIHQgPSBNLnNleHBfb2ZfdCB0XG5lbmRcblxubW9kdWxlIEFkZF93aXRuZXNzMSAoTSA6IHNpZ1xuICAgIHR5cGUgJ2EgdCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gICAgaW5jbHVkZSBJbnZhcmlhbnQuUzEgd2l0aCB0eXBlICdhIHQgOj0gJ2EgdFxuICBlbmQpIDogc2lnXG4gIHR5cGUgKCdhLCAndykgdCA9ICdhIE0udCBbQEBkZXJpdmluZyBzZXhwX29mXVxuXG4gIGluY2x1ZGUgSW52YXJpYW50LlMyIHdpdGggdHlwZSAoJ2EsICdiKSB0IDo9ICgnYSwgJ2IpIHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ3cpIHQgPSAnYSBNLnRcblxuICBsZXQgaW52YXJpYW50IGludmFyaWFudF9hIF8gdCA9IE0uaW52YXJpYW50IGludmFyaWFudF9hIHRcbiAgbGV0IHNleHBfb2ZfdCBzZXhwX29mX2EgXyB0ID0gTS5zZXhwX29mX3Qgc2V4cF9vZl9hIHRcbmVuZFxuXG5tb2R1bGUgQ2xvY2sgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBDbG9ja1xuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoQ2xvY2spXG5lbmRcblxubW9kdWxlIEV4cGVydCA9IHN0cnVjdFxuICBpbmNsdWRlIEV4cGVydFxuXG4gIG1vZHVsZSBEZXBlbmRlbmN5ID0gc3RydWN0XG4gICAgaW5jbHVkZSBEZXBlbmRlbmN5XG5cbiAgICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoc3RydWN0XG4gICAgICAgIGluY2x1ZGUgRGVwZW5kZW5jeVxuXG4gICAgICAgIGxldCBpbnZhcmlhbnQgXyBfID0gKClcbiAgICAgIGVuZClcbiAgZW5kXG5cbiAgbW9kdWxlIE5vZGUgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIE5vZGVcblxuICAgIGluY2x1ZGUgQWRkX3dpdG5lc3MxIChzdHJ1Y3RcbiAgICAgICAgaW5jbHVkZSBOb2RlXG5cbiAgICAgICAgbGV0IGludmFyaWFudCBfIF8gPSAoKVxuICAgICAgZW5kKVxuICBlbmRcblxuICBtb2R1bGUgU3RlcF9yZXN1bHQgPSBTdGF0ZS5TdGVwX3Jlc3VsdFxuXG4gIGxldCBkb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgc3RhdGUgPSBTdGF0ZS5kb19vbmVfc3RlcF9vZl9zdGFiaWxpemUgc3RhdGVcbmVuZFxuXG5tb2R1bGUgTm9kZSA9IHN0cnVjdFxuICBpbmNsdWRlIE5vZGVcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKE5vZGUpXG5lbmRcblxudHlwZSAoJ2EsICd3KSB0ID0gKCdhLCAndykgTm9kZS50IFtAQGRlcml2aW5nIHNleHBfb2ZdXG50eXBlICgnYSwgJ3cpIGluY3JlbWVudGFsID0gKCdhLCAndykgdFxuXG5sZXQgaW52YXJpYW50ID0gTm9kZS5pbnZhcmlhbnRcblxubW9kdWxlIE9ic2VydmVyID0gc3RydWN0XG4gIGluY2x1ZGUgT2JzZXJ2ZXJcbiAgaW5jbHVkZSBBZGRfd2l0bmVzczEgKE9ic2VydmVyKVxuZW5kXG5cbm1vZHVsZSBTY29wZSA9IHN0cnVjdFxuICBpbmNsdWRlIFNjb3BlXG4gIGluY2x1ZGUgQWRkX3dpdG5lc3MwIChTY29wZSlcbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTdGF0ZVxuICBpbmNsdWRlIEFkZF93aXRuZXNzMCAoU3RhdGUpXG5lbmRcblxubW9kdWxlIFZhciA9IHN0cnVjdFxuICBpbmNsdWRlIFZhclxuICBpbmNsdWRlIEFkZF93aXRuZXNzMSAoVmFyKVxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBzdGF0ZV93aXRuZXNzIFtAQGRlcml2aW5nIHNleHBfb2ZdXG5cbiAgaW5jbHVkZVxuICAgIFNfZ2VuXG4gICAgd2l0aCB0eXBlICdhIHQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIGluY3JlbWVudGFsXG4gICAgd2l0aCB0eXBlIEJlZm9yZV9vcl9hZnRlci50ID0gQmVmb3JlX29yX2FmdGVyLnRcbiAgICB3aXRoIHR5cGUgQ2xvY2sudCA9IHN0YXRlX3dpdG5lc3MgQ2xvY2sudFxuICAgIHdpdGggdHlwZSAnYSBDdXRvZmYudCA9ICdhIEN1dG9mZi50XG4gICAgd2l0aCB0eXBlICdhIEV4cGVydC5EZXBlbmRlbmN5LnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIEV4cGVydC5EZXBlbmRlbmN5LnRcbiAgICB3aXRoIHR5cGUgJ2EgRXhwZXJ0Lk5vZGUudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgRXhwZXJ0Lk5vZGUudFxuICAgIHdpdGggdHlwZSBFeHBlcnQuU3RlcF9yZXN1bHQudCA9IEV4cGVydC5TdGVwX3Jlc3VsdC50XG4gICAgd2l0aCB0eXBlICdhIE9ic2VydmVyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIE9ic2VydmVyLnRcbiAgICB3aXRoIHR5cGUgJ2EgT2JzZXJ2ZXIuVXBkYXRlLnQgPSAnYSBPYnNlcnZlci5VcGRhdGUudFxuICAgIHdpdGggdHlwZSBQYWNrZWQudCA9IFBhY2tlZC50XG4gICAgd2l0aCB0eXBlIFNjb3BlLnQgPSBzdGF0ZV93aXRuZXNzIFNjb3BlLnRcbiAgICB3aXRoIHR5cGUgU3RhdGUudCA9IHN0YXRlX3dpdG5lc3MgU3RhdGUudFxuICAgIHdpdGggdHlwZSBTdGF0ZS5TdGF0cy50ID0gU3RhdGUuU3RhdHMudFxuICAgIHdpdGggdHlwZSAoJ2EsICdiKSBVbm9yZGVyZWRfYXJyYXlfZm9sZF91cGRhdGUudCA9XG4gICAgICAgICAgICgnYSwgJ2IpIFVub3JkZXJlZF9hcnJheV9mb2xkX3VwZGF0ZS50XG4gICAgd2l0aCB0eXBlICdhIFVwZGF0ZS50ID0gJ2EgVXBkYXRlLnRcbiAgICB3aXRoIHR5cGUgJ2EgVmFyLnQgPSAoJ2EsIHN0YXRlX3dpdG5lc3MpIFZhci50XG5lbmRcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IGRlYnVnID0gZGVidWdcbmVuZFxuIiwiXG5vcGVuIEJhc2VcblxubW9kdWxlIENvbW11dGF0aXZlX2dyb3VwID0gc3RydWN0XG4gICgqKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGludGVyZmFjZSBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cbiAgICAgICsgYXNzb2NpYXRpdml0eTogWyhhICsgYikgKyBjID0gYSArIChiICsgYyldXG4gICAgICArIGlkZW50aXR5OiBbemVybyArIGEgPSBhICsgemVybyA9IGFdXG4gICAgICArIGludmVyc2VzOiBnaXZlbiBhbnkgW2FdIHRoZXJlIGV4aXN0cyBhICh1bmlxdWUpIGVsdCBbYl0gc3VjaCB0aGF0IFthICsgYiA9IGIgKyBhID1cbiAgICAgIHplcm9dXG4gICAgICArIGNvbW11dGF0aXZpdHk6IFthICsgYiA9IGIgKyBhXVxuICAqKVxuXG4gIG1vZHVsZSB0eXBlIFdpdGhvdXRfc2V4cCA9IHNpZ1xuICAgIHR5cGUgdFxuXG4gICAgdmFsIHplcm8gOiB0XG4gICAgdmFsICgrKSAgOiB0IC0+IHQgLT4gdFxuICAgIHZhbCAoLSkgIDogdCAtPiB0IC0+IHRcbiAgZW5kXG5cbiAgbW9kdWxlIHR5cGUgUyA9IHNpZ1xuICAgIHR5cGUgdCBbQEBkZXJpdmluZyBzZXhwXVxuICAgIGluY2x1ZGUgV2l0aG91dF9zZXhwIHdpdGggdHlwZSB0IDo9IHRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFZlY3Rvcl9zcGFjZSA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBTID0gc2lnXG4gICAgdHlwZSB0XG4gICAgaW5jbHVkZSBDb21tdXRhdGl2ZV9ncm91cC5TIHdpdGggdHlwZSB0IDo9IHRcbiAgICB2YWwgc2NhbGUgOiB0IC0+IGZsb2F0IC0+IHRcbiAgZW5kXG5lbmRcblxuIiwib3BlbiEgQ29yZVxuaW5jbHVkZSBJbmNyX21hcF9pbnRmXG5cbigqKiBUaGlzIHR5cGUgbGV0cyB1cyBjYXB0dXJlIHRoZSBraW5kIG9mIG1hcCBmdW5jdGlvbiBiZWluZyBwZXJmb3JtZWQsIHNvIHdlIGNhbiB3aXRoXG4gICAgb25lIGltcGxlbWVudGF0aW9uIHBlcmZvcm0gbWFwIGFuZCBmaWx0ZXItbWFwIG9wZXJhdGlvbnMuXG5cbiAgICBIZXJlLCBbJ2lucHV0X2RhdGFdIGlzIHRoZSB0eXBlIG9mIGRhdGEgaW4gdGhlIGlucHV0IG1hcCwgWydvdXRwdXRfZGF0YV0gaXMgdGhlIHR5cGVcbiAgICBvZiBkYXRhIGluIHRoZSBvdXRwdXQgbWFwLCBhbmQgWydmX291dHB1dF0gaXMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBbfmZdIGZ1bmN0aW9uXG4gICAgcGFzc2VkIHRvIHRoZSBtYXBwaW5nIGZ1bmN0aW9uLiAqKVxubW9kdWxlIE1hcF90eXBlID0gc3RydWN0XG4gIHR5cGUgKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdmX291dHB1dCkgdCA9XG4gICAgfCBNYXAgOiAoJ2lucHV0X2RhdGEsICdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhKSB0XG4gICAgfCBGaWx0ZXJfbWFwIDogKCdpbnB1dF9kYXRhLCAnb3V0cHV0X2RhdGEsICdvdXRwdXRfZGF0YSBvcHRpb24pIHRcblxuICAoKiBUaGUgZXh0cmEgdHlwZSB2YXJpYWJsZSAnYSBpcyB0byBhbGxvdyBpbiBmdXR1cmU6XG4gICAgIHwgRmlsdGVyIDogKCdvdXRwdXRfZGF0YSwgJ291dHB1dF9kYXRhLCBib29sKSB0ICopXG5lbmRcblxubW9kdWxlIEdlbmVyaWMgPSBzdHJ1Y3RcbiAgbGV0IHdpdGhfb2xkIGkgfmYgPVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBsZXQlbWFwIGEgPSBpIGluXG4gICAgbGV0IGIgPSBmIH5vbGQ6IW9sZCBhIGluXG4gICAgb2xkIDo9IFNvbWUgKGEsIGIpO1xuICAgIGJcbiAgOztcblxuICBsZXQgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgP3VwZGF0ZVxuICAgICAgICA/c3BlY2lhbGl6ZWRfaW5pdGlhbFxuICAgICAgICA/KHJldmVydF90b19pbml0X3doZW5fZW1wdHkgPSBmYWxzZSlcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIGxldCBkZWZhdWx0IH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgPVxuICAgICAgICBhZGQgfmtleSB+ZGF0YTpuZXdfZGF0YSAocmVtb3ZlIH5rZXkgfmRhdGE6b2xkX2RhdGEgYWNjKVxuICAgICAgaW5cbiAgICAgIE9wdGlvbi52YWx1ZSB1cGRhdGUgfmRlZmF1bHRcbiAgICBpblxuICAgIHdpdGhfb2xkIG1hcCB+ZjooZnVuIH5vbGQgbmV3X2luIC0+XG4gICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBzcGVjaWFsaXplZF9pbml0aWFsIHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBNYXAuZm9sZCB+aW5pdCB+ZjphZGQgbmV3X2luXG4gICAgICAgICB8IFNvbWUgaW5pdGlhbCAtPiBpbml0aWFsIH5pbml0IG5ld19pbilcbiAgICAgIHwgU29tZSAob2xkX2luLCBvbGRfb3V0KSAtPlxuICAgICAgICBpZiByZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5ICYmIE1hcC5sZW5ndGggbmV3X2luID0gMFxuICAgICAgICB0aGVuIGluaXRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICB+aW5pdDpvbGRfb3V0XG4gICAgICAgICAgICBvbGRfaW5cbiAgICAgICAgICAgIG5ld19pblxuICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgIH5mOihmdW4gYWNjIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgfCBgTGVmdCBvbGQgLT4gcmVtb3ZlIH5rZXkgfmRhdGE6b2xkIGFjY1xuICAgICAgICAgICAgICB8IGBSaWdodCBuZXdfIC0+IGFkZCB+a2V5IH5kYXRhOm5ld18gYWNjXG4gICAgICAgICAgICAgIHwgYFVuZXF1YWwgKG9sZCwgbmV3XykgLT4gdXBkYXRlIH5rZXkgfm9sZF9kYXRhOm9sZCB+bmV3X2RhdGE6bmV3XyBhY2MpKVxuICA7O1xuXG4gIGxldCB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eVxuICAgICAgICA/dXBkYXRlXG4gICAgICAgIGluY3JfbWFwXG4gICAgICAgIH5pbml0XG4gICAgICAgIH5hZGRcbiAgICAgICAgfnJlbW92ZVxuICAgID1cbiAgICBsZXQgdXBkYXRlID1cbiAgICAgIG1hdGNoIHVwZGF0ZSB3aXRoXG4gICAgICB8IFNvbWUgdXBkYXRlIC0+IHVwZGF0ZVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgICBhZGRcbiAgICAgICAgICAgIH5vdXRlcl9rZXlcbiAgICAgICAgICAgIH5pbm5lcl9rZXlcbiAgICAgICAgICAgIH5kYXRhOm5ld19kYXRhXG4gICAgICAgICAgICAocmVtb3ZlIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpvbGRfZGF0YSBhY2MpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgaW5jcl9tYXBcbiAgICAgID9yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5XG4gICAgICB+aW5pdFxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXk6b3V0ZXJfa2V5IH5vbGRfZGF0YTpvbGRfaW5uZXJfbWFwIH5uZXdfZGF0YTpuZXdfaW5uZXJfbWFwIGFjYyAtPlxuICAgICAgICAoTWFwLmZvbGRfc3ltbWV0cmljX2RpZmYgb2xkX2lubmVyX21hcCBuZXdfaW5uZXJfbWFwIH5kYXRhX2VxdWFsKVxuICAgICAgICAgIH5pbml0OmFjY1xuICAgICAgICAgIH5mOihmdW4gYWNjIChpbm5lcl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgZGF0YV9yZW1vdmVkIC0+IHJlbW92ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGE6ZGF0YV9yZW1vdmVkIGFjY1xuICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9hZGRlZCAtPiBhZGQgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhOmRhdGFfYWRkZWQgYWNjXG4gICAgICAgICAgICB8IGBVbmVxdWFsIChvbGRfZGF0YSwgbmV3X2RhdGEpIC0+XG4gICAgICAgICAgICAgIHVwZGF0ZSB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MpKVxuICAgICAgfmFkZDooZnVuIH5rZXk6b3V0ZXJfa2V5IH5kYXRhOmlubmVyX21hcCBhY2MgLT5cbiAgICAgICAgTWFwLmZvbGQgaW5uZXJfbWFwIH5pbml0OmFjYyB+ZjooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIGFjYyAtPlxuICAgICAgICAgIGFkZCB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjKSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5Om91dGVyX2tleSB+ZGF0YTppbm5lcl9tYXAgYWNjIC0+XG4gICAgICAgIE1hcC5mb2xkIGlubmVyX21hcCB+aW5pdDphY2MgfmY6KGZ1biB+a2V5OmlubmVyX2tleSB+ZGF0YSBhY2MgLT5cbiAgICAgICAgICByZW1vdmUgfm91dGVyX2tleSB+aW5uZXJfa2V5IH5kYXRhIGFjYykpXG4gIDs7XG5cbiAgbGV0IHdpdGhfY29tcGFyYXRvcicgZ2V0X2NvbXBhcmF0b3IgeCBmID1cbiAgICBJbmNyZW1lbnRhbC5iaW5kIChJbmNyZW1lbnRhbC5mcmVlemUgKEluY3JlbWVudGFsLm1hcCB4IH5mOmdldF9jb21wYXJhdG9yKSkgfmZcbiAgOztcblxuICAoKiogQ2FwdHVyZXMgdGhlIGNvbXBhcmF0b3IgKHdoaWNoIGNhbid0IGNoYW5nZSBhbnl3YXksIHNpbmNlIHRoZSB0eXBlIGRldGVybWluZXMgdGhlXG4gICAgICBjb21wYXJhdG9yKSBieSBmcmVlemluZyB0aGUgY29ycmVzcG9uZGluZyBtYXAuICBOb3RlIHRoYXQgYnkgZmlyc3QgdXNpbmcgSW5jcmVtZW50YWwubWFwIHRvXG4gICAgICBnZXQgdGhlIGNvbXBhcmF0b3Igb3V0IG9mIHRoZSBtYXAsIHdlIGFsbG93IHRoZSBpbml0aWFsIG1hcCBpdHNlbGYgdG8gYmUgZ2FyYmFnZVxuICAgICAgY29sbGVjdGVkICopXG4gIGxldCB3aXRoX2NvbXBhcmF0b3IgbWFwIGYgPSB3aXRoX2NvbXBhcmF0b3InIE1hcC5jb21wYXJhdG9yIG1hcCBmXG5cbiAgbGV0IG9mX3NldCBzZXQgPVxuICAgIHdpdGhfY29tcGFyYXRvcicgU2V0LmNvbXBhcmF0b3Igc2V0IChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IG9sZF9pbnB1dCA9IHJlZiAoU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBsZXQgb2xkX291dHB1dCA9IHJlZiAoTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpIGluXG4gICAgICBJbmNyZW1lbnRhbC5tYXAgc2V0IH5mOihmdW4gbmV3X2lucHV0IC0+XG4gICAgICAgIGxldCBuZXdfb3V0cHV0ID1cbiAgICAgICAgICBTZXF1ZW5jZS5mb2xkXG4gICAgICAgICAgICAoU2V0LnN5bW1ldHJpY19kaWZmICFvbGRfaW5wdXQgbmV3X2lucHV0KVxuICAgICAgICAgICAgfmluaXQ6IW9sZF9vdXRwdXRcbiAgICAgICAgICAgIH5mOihmdW4gb3V0cHV0IC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgRmlyc3QgayAtPiBNYXAucmVtb3ZlIG91dHB1dCBrXG4gICAgICAgICAgICAgIHwgU2Vjb25kIGsgLT4gTWFwLmFkZF9leG4gb3V0cHV0IH5rZXk6ayB+ZGF0YTooKSlcbiAgICAgICAgaW5cbiAgICAgICAgb2xkX2lucHV0IDo9IG5ld19pbnB1dDtcbiAgICAgICAgb2xkX291dHB1dCA6PSBuZXdfb3V0cHV0O1xuICAgICAgICBuZXdfb3V0cHV0KSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpXG4gICAgICAgICh0eXBlIGlucHV0X2RhdGEgb3V0cHV0X2RhdGEgZl9vdXRwdXQgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKHdpdG5lc3MgOiAoaW5wdXRfZGF0YSwgb3V0cHV0X2RhdGEsIGZfb3V0cHV0KSBNYXBfdHlwZS50KVxuICAgICAgICA/KGRhdGFfZXF1YWwgPSBwaHlzX2VxdWFsKVxuICAgICAgICAobWFwIDogKCgna2V5LCBpbnB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihmIDoga2V5OidrZXkgLT4gZGF0YTppbnB1dF9kYXRhIC0+IGZfb3V0cHV0KVxuICAgID1cbiAgICB3aXRoX29sZCBtYXAgfmY6KGZ1biB+b2xkIGlucHV0IC0+XG4gICAgICBtYXRjaCBvbGQsIE1hcC5sZW5ndGggaW5wdXQgd2l0aFxuICAgICAgfCBfLCAwIHwgTm9uZSwgXyAtPlxuICAgICAgICAobWF0Y2ggd2l0bmVzcyB3aXRoXG4gICAgICAgICB8IE1hcF90eXBlLk1hcCAtPiAoTWFwLm1hcGkgaW5wdXQgfmYgOiAoJ2tleSwgb3V0cHV0X2RhdGEsICdjbXApIE1hcC50KVxuICAgICAgICAgfCBNYXBfdHlwZS5GaWx0ZXJfbWFwIC0+IE1hcC5maWx0ZXJfbWFwaSBpbnB1dCB+ZilcbiAgICAgIHwgU29tZSAob2xkX2lucHV0LCBvbGRfb3V0cHV0KSwgXyAtPlxuICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgIG9sZF9pbnB1dFxuICAgICAgICAgIGlucHV0XG4gICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICB+aW5pdDpvbGRfb3V0cHV0XG4gICAgICAgICAgfmY6KGZ1biBvdXRwdXQgKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIG91dHB1dCBrZXlcbiAgICAgICAgICAgIHwgYFJpZ2h0IG5ld19kYXRhIHwgYFVuZXF1YWwgKF8sIG5ld19kYXRhKSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgICAgICAgIChtYXRjaCB3aXRuZXNzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTWFwX3R5cGUuTWFwIC0+IE1hcC5zZXQgb3V0cHV0IH5rZXkgfmRhdGE6cmVzXG4gICAgICAgICAgICAgICB8IE1hcF90eXBlLkZpbHRlcl9tYXAgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHJlcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTWFwLnJlbW92ZSBvdXRwdXQga2V5XG4gICAgICAgICAgICAgICAgICB8IFNvbWUgb3V0cHV0X2RhdGEgLT4gTWFwLnNldCBvdXRwdXQgfmtleSB+ZGF0YTpvdXRwdXRfZGF0YSkpKSlcbiAgOztcblxuICBsZXQgbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmYgPSBnZW5lcmljX21hcGkgTWFwID9kYXRhX2VxdWFsIG1hcCB+ZlxuICBsZXQgZmlsdGVyX21hcGkgP2RhdGFfZXF1YWwgbWFwIH5mID0gZ2VuZXJpY19tYXBpIEZpbHRlcl9tYXAgP2RhdGFfZXF1YWwgbWFwIH5mXG4gIGxldCBtYXAgP2RhdGFfZXF1YWwgbWFwIH5mID0gbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuXG4gIGxldCBmaWx0ZXJfbWFwID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZmlsdGVyX21hcGkgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgd2l0aF9vbGQyIGkxIGkyIH5mID1cbiAgICBsZXQgb2xkID0gcmVmIE5vbmUgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAyIGkxIGkyIH5mOihmdW4gYTEgYTIgLT5cbiAgICAgIGxldCBiID0gZiB+b2xkOiFvbGQgYTEgYTIgaW5cbiAgICAgIG9sZCA6PSBTb21lIChhMSwgYTIsIGIpO1xuICAgICAgYilcbiAgOztcblxuICBsZXQgbWFwaV9jb3VudFxuICAgICAgICAodHlwZSBhIGNtcClcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgaW5wdXRcbiAgICAgICAgfihjb21wYXJhdG9yIDpcbiAgICAgICAgICAgIChtb2R1bGUgQ29tcGFyYXRvci5TIHdpdGggdHlwZSB0ID0gYSBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApKVxuICAgICAgICB+ZlxuICAgID1cbiAgICBsZXQgbW9kdWxlIE0gPSAodmFsIGNvbXBhcmF0b3IpIGluXG4gICAgbGV0IGFkZCBuZXdfa2V5IGFjYyA9XG4gICAgICBNYXAudXBkYXRlIGFjYyBuZXdfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gMVxuICAgICAgICB8IFNvbWUgbiAtPiBuICsgMSlcbiAgICBpblxuICAgIGxldCByZW1vdmUgbmV3X2tleSBhY2MgPVxuICAgICAgTWFwLmNoYW5nZSBhY2MgbmV3X2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIDEgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgbiAtPiBTb21lIChuIC0gMSkpXG4gICAgaW5cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgfmRhdGFfZXF1YWxcbiAgICAgIGlucHV0XG4gICAgICB+aW5pdDooTWFwLmVtcHR5IChtb2R1bGUgTSkpXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBhY2MgLT4gYWRkIChmIH5rZXkgfmRhdGEpIGFjYylcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIGFjYyAtPiByZW1vdmUgKGYgfmtleSB+ZGF0YSkgYWNjKVxuICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgbGV0IHByZXZfa2V5ID0gZiB+a2V5IH5kYXRhOm9sZF9kYXRhIGluXG4gICAgICAgIGxldCBuZXdfa2V5ID0gZiB+a2V5IH5kYXRhOm5ld19kYXRhIGluXG4gICAgICAgIGlmIE0uY29tcGFyYXRvci5jb21wYXJlIHByZXZfa2V5IG5ld19rZXkgPSAwXG4gICAgICAgIHRoZW4gYWNjXG4gICAgICAgIGVsc2UgYWNjIHw+IHJlbW92ZSBwcmV2X2tleSB8PiBhZGQgbmV3X2tleSlcbiAgOztcblxuICBsZXQgbWFwX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBtYXBpX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWluX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1pbiwgXykgLT4gU29tZSBtaW5cbiAgOztcblxuICBsZXQgbWF4X2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5tYXhfZWx0IG1hcCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgKG1heCwgXykgLT4gU29tZSBtYXhcbiAgOztcblxuICBsZXQgYm91bmRzX2hlbHBlciBtYXAgPVxuICAgIG1hdGNoIE1hcC5taW5fZWx0IG1hcCwgTWFwLm1heF9lbHQgbWFwIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSAobWluLCBfKSwgU29tZSAobWF4LCBfKSAtPiBTb21lIChtaW4sIG1heClcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG4gIDs7XG5cbiAgbGV0IG1hcGlfbWluID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6bWluX2hlbHBlciAobWFwaV9jb3VudCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZilcbiAgOztcblxuICBsZXQgbWFwaV9tYXggP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIEluY3JlbWVudGFsLm1hcCB+ZjptYXhfaGVscGVyIChtYXBpX2NvdW50ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mKVxuICA7O1xuXG4gIGxldCBtYXBpX2JvdW5kcyA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIH5mOmJvdW5kc19oZWxwZXIgKG1hcGlfY291bnQgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYpXG4gIDs7XG5cbiAgbGV0IG1hcGlfbW4gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfbWluID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWFwX21heCA/ZGF0YV9lcXVhbCBpbnB1dCB+Y29tcGFyYXRvciB+ZiA9XG4gICAgbWFwaV9tYXggP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBtaW5fdmFsdWUgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgPVxuICAgIG1hcGlfbW4gP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmY6Rm4uaWRcbiAgOztcblxuICBsZXQgbWF4X3ZhbHVlID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfbWF4ID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1hcF9ib3VuZHMgP2RhdGFfZXF1YWwgaW5wdXQgfmNvbXBhcmF0b3IgfmYgPVxuICAgIG1hcGlfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgdmFsdWVfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yID1cbiAgICBtYXBfYm91bmRzID9kYXRhX2VxdWFsIGlucHV0IH5jb21wYXJhdG9yIH5mOkZuLmlkXG4gIDs7XG5cbiAgbGV0IG1lcmdlXG4gICAgICAgID8oZGF0YV9lcXVhbF9sZWZ0ID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhkYXRhX2VxdWFsX3JpZ2h0ID0gcGh5c19lcXVhbClcbiAgICAgICAgbGVmdF9tYXBcbiAgICAgICAgcmlnaHRfbWFwXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHdpdGhfb2xkMiBsZWZ0X21hcCByaWdodF9tYXAgfmY6KGZ1biB+b2xkIG5ld19sZWZ0X21hcCBuZXdfcmlnaHRfbWFwIC0+XG4gICAgICBsZXQgY29tcGFyYXRvciA9IE1hcC5jb21wYXJhdG9yIG5ld19sZWZ0X21hcCBpblxuICAgICAgbGV0IG9sZF9sZWZ0X21hcCwgb2xkX3JpZ2h0X21hcCwgb2xkX291dHB1dCA9XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgICAgZW1wdHksIGVtcHR5LCBlbXB0eVxuICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICBpblxuICAgICAgbGV0IGxlZnRfZGlmZiA9XG4gICAgICAgIE1hcC5zeW1tZXRyaWNfZGlmZiBvbGRfbGVmdF9tYXAgbmV3X2xlZnRfbWFwIH5kYXRhX2VxdWFsOmRhdGFfZXF1YWxfbGVmdFxuICAgICAgaW5cbiAgICAgIGxldCByaWdodF9kaWZmID1cbiAgICAgICAgTWFwLnN5bW1ldHJpY19kaWZmIG9sZF9yaWdodF9tYXAgbmV3X3JpZ2h0X21hcCB+ZGF0YV9lcXVhbDpkYXRhX2VxdWFsX3JpZ2h0XG4gICAgICBpblxuICAgICAgKCogV2UgbWVyZ2UgdGhlIHR3byBzaWRlcyBvZiB0aGUgZGlmZnMgdG9nZXRoZXIgc28gd2UgY2FuIG1ha2Ugc3VyZSB0byBoYW5kbGUgZWFjaFxuICAgICAgICAga2V5IGV4YWN0bHkgb25jZS4gVGhpcyByZWxpZXMgb24gc3ltbWV0cmljIGRpZmYgZ2l2aW5nIHNvcnRlZCBvdXRwdXQuICopXG4gICAgICBTZXF1ZW5jZS5tZXJnZV93aXRoX2R1cGxpY2F0ZXNcbiAgICAgICAgbGVmdF9kaWZmXG4gICAgICAgIHJpZ2h0X2RpZmZcbiAgICAgICAgfmNvbXBhcmU6KGZ1biAobGVmdF9rZXksIF8pIChyaWdodF9rZXksIF8pIC0+XG4gICAgICAgICAgY29tcGFyYXRvci5jb21wYXJlIGxlZnRfa2V5IHJpZ2h0X2tleSlcbiAgICAgIHw+IFNlcXVlbmNlLmZvbGQgfmluaXQ6b2xkX291dHB1dCB+ZjooZnVuIG91dHB1dCBkaWZmX2VsZW1lbnQgLT5cbiAgICAgICAgbGV0IGtleSA9XG4gICAgICAgICAgbWF0Y2ggZGlmZl9lbGVtZW50IHdpdGhcbiAgICAgICAgICB8IExlZnQgKGtleSwgXykgfCBSaWdodCAoa2V5LCBfKSAtPiBrZXlcbiAgICAgICAgICB8IEJvdGggKChsZWZ0X2tleSwgXyksIChyaWdodF9rZXksIF8pKSAtPlxuICAgICAgICAgICAgYXNzZXJ0IChjb21wYXJhdG9yLmNvbXBhcmUgbGVmdF9rZXkgcmlnaHRfa2V5ID0gMCk7XG4gICAgICAgICAgICBsZWZ0X2tleVxuICAgICAgICBpblxuICAgICAgICAoKiBUaGVzZSB2YWx1ZXMgcmVwcmVzZW50IHdoZXRoZXIgdGhlcmUgaXMgZGF0YSBmb3IgdGhlIGdpdmVuIGtleSBpbiB0aGUgbmV3XG4gICAgICAgICAgIGlucHV0IGluIHRoZSBsZWZ0IGFuZCByaWdodCBtYXAuICopXG4gICAgICAgIGxldCBsZWZ0X2RhdGFfb3B0LCByaWdodF9kYXRhX29wdCA9XG4gICAgICAgICAgbGV0IG5ld19kYXRhID0gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggZGlmZl9lbGVtZW50IHdpdGhcbiAgICAgICAgICB8IEJvdGggKChfLCBsZWZ0X2RpZmYpLCAoXywgcmlnaHRfZGlmZikpIC0+XG4gICAgICAgICAgICBuZXdfZGF0YSBsZWZ0X2RpZmYsIG5ld19kYXRhIHJpZ2h0X2RpZmZcbiAgICAgICAgICB8IExlZnQgKF8sIGxlZnRfZGlmZikgLT4gbmV3X2RhdGEgbGVmdF9kaWZmLCBNYXAuZmluZCBuZXdfcmlnaHRfbWFwIGtleVxuICAgICAgICAgIHwgUmlnaHQgKF8sIHJpZ2h0X2RpZmYpIC0+IE1hcC5maW5kIG5ld19sZWZ0X21hcCBrZXksIG5ld19kYXRhIHJpZ2h0X2RpZmZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG91dHB1dF9kYXRhX29wdCA9XG4gICAgICAgICAgbWF0Y2ggbGVmdF9kYXRhX29wdCwgcmlnaHRfZGF0YV9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIHgsIE5vbmUgLT4gZiB+a2V5IChgTGVmdCB4KVxuICAgICAgICAgIHwgTm9uZSwgU29tZSB5IC0+IGYgfmtleSAoYFJpZ2h0IHkpXG4gICAgICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBmIH5rZXkgKGBCb3RoICh4LCB5KSlcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggb3V0cHV0X2RhdGFfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb3V0cHV0IGtleVxuICAgICAgICB8IFNvbWUgZGF0YSAtPiBNYXAuc2V0IG91dHB1dCB+a2V5IH5kYXRhKSlcbiAgOztcblxuICBsZXQgZ2VuZXJpY19tYXBpX3dpdGhfY29tcGFyYXRvcidcbiAgICAgICAgKHR5cGUgaW5wdXRfZGF0YSBvdXRwdXRfZGF0YSBmX291dHB1dCBzdGF0ZV93aXRuZXNzKVxuICAgICAgICAod2l0bmVzcyA6IChpbnB1dF9kYXRhLCBvdXRwdXRfZGF0YSwgZl9vdXRwdXQpIE1hcF90eXBlLnQpXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKGxocyA6ICgoJ2tleSwgaW5wdXRfZGF0YSwgJ2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4oY29tcGFyYXRvciA6ICgna2V5LCAnY21wKSBDb21wYXJhdG9yLnQpXG4gICAgICAgIH4oZiA6XG4gICAgICAgICAgICBrZXk6J2tleVxuICAgICAgICAgIC0+IGRhdGE6KGlucHV0X2RhdGEsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICAgICAgICAtPiAoZl9vdXRwdXQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgOiAoKCdrZXksIG91dHB1dF9kYXRhLCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgID1cbiAgICBsZXQgbW9kdWxlIEUgPSBJbmNyZW1lbnRhbC5FeHBlcnQgaW5cbiAgICBsZXQgaW5jcmVtZW50YWxfc3RhdGUgPSBJbmNyZW1lbnRhbC5zdGF0ZSBsaHMgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcHJldl9tYXAgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHByZXZfbm9kZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGFjYyA6ICgna2V5LCBvdXRwdXRfZGF0YSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIWFjYykgaW5cbiAgICBsZXQgKG9uX2lubmVyX2NoYW5nZSA6IGtleTona2V5IC0+IGZfb3V0cHV0IC0+IHVuaXQpID1cbiAgICAgIG1hdGNoIHdpdG5lc3Mgd2l0aFxuICAgICAgfCBNYXBfdHlwZS5NYXAgLT4gZnVuIH5rZXkgZGF0YSAtPiBhY2MgOj0gTWFwLnNldCAhYWNjIH5rZXkgfmRhdGFcbiAgICAgIHwgTWFwX3R5cGUuRmlsdGVyX21hcCAtPlxuICAgICAgICBmdW4gfmtleSBvcHQgLT5cbiAgICAgICAgICBsZXQgb2xkID0gIWFjYyBpblxuICAgICAgICAgIGFjY1xuICAgICAgICAgIDo9IChtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE1hcC5yZW1vdmUgb2xkIGtleVxuICAgICAgICAgICAgfCBTb21lIGRhdGEgLT4gTWFwLnNldCBvbGQgfmtleSB+ZGF0YSlcbiAgICBpblxuICAgIGxldCByZWMgbGhzX2NoYW5nZSA9XG4gICAgICBsYXp5XG4gICAgICAgIChJbmNyZW1lbnRhbC5tYXAgbGhzIH5mOihmdW4gbWFwIC0+XG4gICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgIH5pbml0OiFwcmV2X25vZGVzXG4gICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2RlcCA9IE1hcC5maW5kX2V4biBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUubWFrZV9zdGFsZSBub2RlO1xuICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlLCBkZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWFwLnJlbW92ZSBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgcmVzdWx0IGRlcDtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gTWFwLnJlbW92ZSAhYWNjIGtleTtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuaW52YWxpZGF0ZSBub2RlO1xuICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgIHwgYFJpZ2h0IF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTWFwLmZpbmRfZXhuICFwcmV2X21hcCBrZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBPcHRpb24uaXRlciBjdXRvZmYgfmY6KGZ1biBjIC0+XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5zZXRfY3V0b2ZmIChFLk5vZGUud2F0Y2ggbm9kZSkgYyk7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IG5vZGUgKEUuRGVwZW5kZW5jeS5jcmVhdGUgKGZvcmNlIGxoc19jaGFuZ2UpKTtcbiAgICAgICAgICAgICAgICAgICBsZXQgdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAoZiB+a2V5IH5kYXRhOihFLk5vZGUud2F0Y2ggbm9kZSkpXG4gICAgICAgICAgICAgICAgICAgICAgIH5vbl9jaGFuZ2U6KG9uX2lubmVyX2NoYW5nZSB+a2V5KVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJlc3VsdCB1c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICBNYXAuc2V0IG5vZGVzIH5rZXkgfmRhdGE6KG5vZGUsIHVzZXJfZnVuY3Rpb25fZGVwKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgcHJldl9ub2RlcyA6PSBuZXdfbm9kZXM7XG4gICAgICAgICAgIHByZXZfbWFwIDo9IG1hcCkpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIChmb3JjZSBsaHNfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLndhdGNoIHJlc3VsdFxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwaScgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBnZW5lcmljX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICBNYXBfdHlwZS5GaWx0ZXJfbWFwXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5mXG4gICAgICAgIH5jb21wYXJhdG9yKVxuICA7O1xuXG4gIGxldCBtYXBpJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgd2l0aF9jb21wYXJhdG9yIG1hcCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgIGdlbmVyaWNfbWFwaV93aXRoX2NvbXBhcmF0b3InIE1hcF90eXBlLk1hcCA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiB+Y29tcGFyYXRvcilcbiAgOztcblxuICBsZXQgbWFwJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgbWFwaScgP2N1dG9mZiA/ZGF0YV9lcXVhbCBtYXAgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIGxldCBmaWx0ZXJfbWFwJyA/Y3V0b2ZmID9kYXRhX2VxdWFsIG1hcCB+ZiA9XG4gICAgZmlsdGVyX21hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgbWVyZ2UnID9jdXRvZmYgP2RhdGFfZXF1YWxfbGVmdCA/ZGF0YV9lcXVhbF9yaWdodCBtYXAxIG1hcDIgfmYgPVxuICAgIG1lcmdlID9kYXRhX2VxdWFsX2xlZnQgP2RhdGFfZXF1YWxfcmlnaHQgbWFwMSBtYXAyIH5mOihmdW4gfmtleTpfIGRpZmYgLT4gU29tZSBkaWZmKVxuICAgIHw+IGZpbHRlcl9tYXBpJyA/Y3V0b2ZmIH5mOihmdW4gfmtleSB+ZGF0YTpkaWZmIC0+IGYgfmtleSBkaWZmKVxuICA7O1xuXG4gIGxldCB1bnppcF9tYXBpX3dpdGhfY29tcGFyYXRvclxuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oZGF0YV9lcXVhbCA6IHYgLT4gdiAtPiBib29sID0gcGh5c19lcXVhbClcbiAgICAgICAgPyhsZWZ0X3Jlc3VsdF9lcXVhbCA6IHYxIC0+IHYxIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICA/KHJpZ2h0X3Jlc3VsdF9lcXVhbCA6IHYyIC0+IHYyIC0+IGJvb2wgPSBwaHlzX2VxdWFsKVxuICAgICAgICAoaW5wdXQgOiAoKCdrZXksIHYsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoJ2tleSwgJ2NtcCkgQ29tcGFyYXRvci50KVxuICAgICAgICB+KGYgOiBrZXk6J2tleSAtPiBkYXRhOnYgLT4gdjEgKiB2MilcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IGxlZnRfYWNjIDogKCdrZXksIHYxLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IGxlZnRfcmVzdWx0ID0gRS5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+ICFsZWZ0X2FjYykgaW5cbiAgICBsZXQgcmlnaHRfYWNjIDogKCdrZXksIHYyLCAnY21wKSBNYXAudCByZWYgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJpZ2h0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmlnaHRfYWNjKSBpblxuICAgIGxldCBwcmV2X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgaW5wdXRfY2hhbmdlID1cbiAgICAgIEluY3JlbWVudGFsLm1hcCBpbnB1dCB+ZjooZnVuIG1hcCAtPlxuICAgICAgICBsZXQgbGVmdCwgcmlnaHQgPVxuICAgICAgICAgIG1hdGNoIE1hcC5pc19lbXB0eSAhcHJldl9tYXAsIE1hcC5pc19lbXB0eSBtYXAgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSwgdHJ1ZSB8IGZhbHNlLCB0cnVlIC0+IGVtcHR5X21hcCwgZW1wdHlfbWFwXG4gICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICAgKCogTWFwcGluZyBvbiBhIG1hcCBpcyB3YXkgZmFzdGVyIHRoYW4gc3ltbWV0cmljIGRpZmZpbmcgYW5kIHRoZW5cbiAgICAgICAgICAgICAgIGJ1aWxkaW5nIHRoZSBtYXBzIHVwIHBpZWNlIGJ5IHBpZWNlLCBzbyB3ZSBkbyB0aGlzIHdoZW5ldmVyIHdlXG4gICAgICAgICAgICAgICB0cmFuc2l0aW9uIGZyb20gXCJlbXB0eVwiIHRvIFwic29tZXRoaW5nXCIsIHdoaWNoIHdpbGwgYWxtb3N0IGFsd2F5c1xuICAgICAgICAgICAgICAgaGFwcGVuIG9uIHRoZSBmaXJzdCBzdGFiaWxpemF0aW9uLiAqKVxuICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICBNYXAubWFwaSBtYXAgfmY6KGZ1biB+a2V5IH5kYXRhIC0+XG4gICAgICAgICAgICAgICAgbGV0IGwsIF8gPSBmIH5rZXkgfmRhdGEgaW5cbiAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCByaWdodCA9XG4gICAgICAgICAgICAgIE1hcC5tYXBpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGEgLT5cbiAgICAgICAgICAgICAgICBsZXQgXywgciA9IGYgfmtleSB+ZGF0YSBpblxuICAgICAgICAgICAgICAgIHIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGVmdCwgcmlnaHRcbiAgICAgICAgICB8IGZhbHNlLCBmYWxzZSAtPlxuICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICB+aW5pdDooIWxlZnRfYWNjLCAhcmlnaHRfYWNjKVxuICAgICAgICAgICAgICB+ZjooZnVuIChsZWZ0LCByaWdodCkgKGtleSwgY2hhbmdlZCkgLT5cbiAgICAgICAgICAgICAgICBtYXRjaCBjaGFuZ2VkIHdpdGhcbiAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIChwcmV2LCBuZXdfKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHByZXZfYSwgcHJldl9iID0gZiB+a2V5IH5kYXRhOnByZXYgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBuZXdfYSwgbmV3X2IgPSBmIH5rZXkgfmRhdGE6bmV3XyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxlZnQgPVxuICAgICAgICAgICAgICAgICAgICBpZiBsZWZ0X3Jlc3VsdF9lcXVhbCBwcmV2X2EgbmV3X2FcbiAgICAgICAgICAgICAgICAgICAgdGhlbiBsZWZ0XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgTWFwLnNldCBsZWZ0IH5rZXkgfmRhdGE6bmV3X2FcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgcmlnaHQgPVxuICAgICAgICAgICAgICAgICAgICBpZiByaWdodF9yZXN1bHRfZXF1YWwgcHJldl9iIG5ld19iXG4gICAgICAgICAgICAgICAgICAgIHRoZW4gcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHJpZ2h0IH5rZXkgfmRhdGE6bmV3X2JcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZWZ0LCByaWdodFxuICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBNYXAucmVtb3ZlIGxlZnQga2V5LCBNYXAucmVtb3ZlIHJpZ2h0IGtleVxuICAgICAgICAgICAgICAgIHwgYFJpZ2h0IGVsZW1lbnQgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gZiB+a2V5IH5kYXRhOmVsZW1lbnQgaW5cbiAgICAgICAgICAgICAgICAgIE1hcC5zZXQgbGVmdCB+a2V5IH5kYXRhOmEsIE1hcC5zZXQgcmlnaHQgfmtleSB+ZGF0YTpiKVxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgKHBoeXNfZXF1YWwgIWxlZnRfYWNjIGxlZnQpIHRoZW4gRS5Ob2RlLm1ha2Vfc3RhbGUgbGVmdF9yZXN1bHQ7XG4gICAgICAgIGlmIG5vdCAocGh5c19lcXVhbCAhcmlnaHRfYWNjIHJpZ2h0KSB0aGVuIEUuTm9kZS5tYWtlX3N0YWxlIHJpZ2h0X3Jlc3VsdDtcbiAgICAgICAgbGVmdF9hY2MgOj0gbGVmdDtcbiAgICAgICAgcmlnaHRfYWNjIDo9IHJpZ2h0O1xuICAgICAgICBwcmV2X21hcCA6PSBtYXApXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfY2hhbmdlKTtcbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGlucHV0X2NoYW5nZSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGkgP2RhdGFfZXF1YWwgP2xlZnRfcmVzdWx0X2VxdWFsID9yaWdodF9yZXN1bHRfZXF1YWwgaW5wdXQgfmYgPVxuICAgIGxldCBwYWlyID1cbiAgICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dCAoZnVuIGNvbXBhcmF0b3IgLT5cbiAgICAgICAgaW5wdXRcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3JcbiAgICAgICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgICAgICAgID9yaWdodF9yZXN1bHRfZXF1YWxcbiAgICAgICAgICAgICB+Y29tcGFyYXRvclxuICAgICAgICAgICAgIH5mXG4gICAgICAgIHw+IFR1cGxlMi51bmN1cnJ5IEluY3JlbWVudGFsLmJvdGgpXG4gICAgaW5cbiAgICBJbmNyZW1lbnRhbC5tYXAgfmY6ZnN0IHBhaXIsIEluY3JlbWVudGFsLm1hcCB+ZjpzbmQgcGFpclxuICA7O1xuXG4gIGxldCB1bnppcCA/bGVmdF9yZXN1bHRfZXF1YWwgP3JpZ2h0X3Jlc3VsdF9lcXVhbCBpbnB1dCA9XG4gICAgbGV0IGRhdGFfZXF1YWwgPVxuICAgICAgT3B0aW9uLm1hcDIgbGVmdF9yZXN1bHRfZXF1YWwgcmlnaHRfcmVzdWx0X2VxdWFsIH5mOihmdW4gbCByIC0+XG4gICAgICAgIFR1cGxlMi5lcXVhbCB+ZXExOmwgfmVxMjpyKVxuICAgIGluXG4gICAgdW56aXBfbWFwaVxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgID9sZWZ0X3Jlc3VsdF9lcXVhbFxuICAgICAgP3JpZ2h0X3Jlc3VsdF9lcXVhbFxuICAgICAgaW5wdXRcbiAgICAgIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGRhdGEpXG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGlfd2l0aF9jb21wYXJhdG9yJ1xuICAgICAgICAodHlwZSB2IHYxIHYyIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID9jdXRvZmZcbiAgICAgICAgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbClcbiAgICAgICAgKGlucHV0IDogKCgna2V5LCB2LCAnY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfihjb21wYXJhdG9yIDogKCdrZXksICdjbXApIENvbXBhcmF0b3IudClcbiAgICAgICAgfihmIDpcbiAgICAgICAgICAgIGtleTona2V5XG4gICAgICAgICAgLT4gZGF0YToodiwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICAgICAgIC0+ICh2MSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudCAqICh2Miwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICA6ICgoJ2tleSwgdjEsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAqICgoJ2tleSwgdjIsICdjbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0IGluXG4gICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgbGV0IHByZXZfbWFwID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBwcmV2X25vZGVzID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X2FjYyA6ICgna2V5LCB2MSwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCBsZWZ0X3Jlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhbGVmdF9hY2MpIGluXG4gICAgbGV0IHJpZ2h0X2FjYyA6ICgna2V5LCB2MiwgJ2NtcCkgTWFwLnQgcmVmID0gcmVmIGVtcHR5X21hcCBpblxuICAgIGxldCByaWdodF9yZXN1bHQgPSBFLk5vZGUuY3JlYXRlIGluY3JlbWVudGFsX3N0YXRlIChmdW4gKCkgLT4gIXJpZ2h0X2FjYykgaW5cbiAgICBsZXQgbGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gbGVmdF9hY2MgOj0gTWFwLnNldCAhbGVmdF9hY2MgfmtleSB+ZGF0YSBpblxuICAgIGxldCByaWdodF9vbl9pbm5lcl9jaGFuZ2UgfmtleSBkYXRhID0gcmlnaHRfYWNjIDo9IE1hcC5zZXQgIXJpZ2h0X2FjYyB+a2V5IH5kYXRhIGluXG4gICAgbGV0IHJlYyBpbnB1dF9jaGFuZ2UgPVxuICAgICAgbGF6eVxuICAgICAgICAoSW5jcmVtZW50YWwubWFwIGlucHV0IH5mOihmdW4gbWFwIC0+XG4gICAgICAgICAgIGxldCBuZXdfbm9kZXMgPVxuICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICAgIXByZXZfbWFwXG4gICAgICAgICAgICAgICBtYXBcbiAgICAgICAgICAgICAgIH5pbml0OiFwcmV2X25vZGVzXG4gICAgICAgICAgICAgICB+ZjooZnVuIG5vZGVzIChrZXksIGNoYW5nZWQpIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNoYW5nZWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IGBVbmVxdWFsIF8gLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSwgX2xlZnRfZGVwLCBfcmlnaHRfZGVwID0gTWFwLmZpbmRfZXhuIG5vZGVzIGtleSBpblxuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5tYWtlX3N0YWxlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+XG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGUsIGxlZnRfZGVwLCByaWdodF9kZXAgPSBNYXAuZmluZF9leG4gbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgbGV0IG5vZGVzID0gTWFwLnJlbW92ZSBub2RlcyBrZXkgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUucmVtb3ZlX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgbGVmdF9kZXA7XG4gICAgICAgICAgICAgICAgICAgRS5Ob2RlLnJlbW92ZV9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCByaWdodF9kZXA7XG4gICAgICAgICAgICAgICAgICAgbGVmdF9hY2MgOj0gTWFwLnJlbW92ZSAhbGVmdF9hY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgIHJpZ2h0X2FjYyA6PSBNYXAucmVtb3ZlICFyaWdodF9hY2Mga2V5O1xuICAgICAgICAgICAgICAgICAgIEUuTm9kZS5pbnZhbGlkYXRlIG5vZGU7XG4gICAgICAgICAgICAgICAgICAgbm9kZXNcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgXyAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgICAgICAgICAgIEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBNYXAuZmluZF9leG4gIXByZXZfbWFwIGtleSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIE9wdGlvbi5pdGVyIGN1dG9mZiB+ZjooZnVuIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLnNldF9jdXRvZmYgKEUuTm9kZS53YXRjaCBub2RlKSBjKTtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgICAgICAgICAgICAgICAgbGV0IGxlZnRfaW5jciwgcmlnaHRfaW5jciA9IGYgfmtleSB+ZGF0YTooRS5Ob2RlLndhdGNoIG5vZGUpIGluXG4gICAgICAgICAgICAgICAgICAgbGV0IGxlZnRfdXNlcl9mdW5jdGlvbl9kZXAgPVxuICAgICAgICAgICAgICAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAgICBsZWZ0X2luY3JcbiAgICAgICAgICAgICAgICAgICAgICAgfm9uX2NoYW5nZToobGVmdF9vbl9pbm5lcl9jaGFuZ2UgfmtleSlcbiAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgIGxldCByaWdodF91c2VyX2Z1bmN0aW9uX2RlcCA9XG4gICAgICAgICAgICAgICAgICAgICBFLkRlcGVuZGVuY3kuY3JlYXRlXG4gICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0X2luY3JcbiAgICAgICAgICAgICAgICAgICAgICAgfm9uX2NoYW5nZToocmlnaHRfb25faW5uZXJfY2hhbmdlIH5rZXkpXG4gICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgbGVmdF9yZXN1bHQgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcDtcbiAgICAgICAgICAgICAgICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmlnaHRfcmVzdWx0IHJpZ2h0X3VzZXJfZnVuY3Rpb25fZGVwO1xuICAgICAgICAgICAgICAgICAgIE1hcC5zZXRcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzXG4gICAgICAgICAgICAgICAgICAgICB+a2V5XG4gICAgICAgICAgICAgICAgICAgICB+ZGF0YToobm9kZSwgbGVmdF91c2VyX2Z1bmN0aW9uX2RlcCwgcmlnaHRfdXNlcl9mdW5jdGlvbl9kZXApKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBwcmV2X25vZGVzIDo9IG5ld19ub2RlcztcbiAgICAgICAgICAgcHJldl9tYXAgOj0gbWFwKSlcbiAgICBpblxuICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBsZWZ0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5IHJpZ2h0X3Jlc3VsdCAoRS5EZXBlbmRlbmN5LmNyZWF0ZSAoZm9yY2UgaW5wdXRfY2hhbmdlKSk7XG4gICAgRS5Ob2RlLndhdGNoIGxlZnRfcmVzdWx0LCBFLk5vZGUud2F0Y2ggcmlnaHRfcmVzdWx0XG4gIDs7XG5cbiAgbGV0IHVuemlwX21hcGknID9jdXRvZmYgP2RhdGFfZXF1YWwgbWFwIH5mID1cbiAgICBsZXQgcGFpciA9XG4gICAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgICBtYXBcbiAgICAgICAgfD4gdW56aXBfbWFwaV93aXRoX2NvbXBhcmF0b3InID9jdXRvZmYgP2RhdGFfZXF1YWwgfmNvbXBhcmF0b3IgfmZcbiAgICAgICAgfD4gVHVwbGUyLnVuY3VycnkgSW5jcmVtZW50YWwuYm90aClcbiAgICBpblxuICAgIEluY3JlbWVudGFsLm1hcCB+Zjpmc3QgcGFpciwgSW5jcmVtZW50YWwubWFwIH5mOnNuZCBwYWlyXG4gIDs7XG5cbiAgbGV0IGtleXMgbWFwID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhOl8gYWNjID0gU2V0LmFkZCBhY2Mga2V5IGluXG4gICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGE6XyBhY2MgPSBTZXQucmVtb3ZlIGFjYyBrZXkgaW5cbiAgICAgIGxldCBkYXRhX2VxdWFsIF8gXyA9IHRydWUgaW5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgIG1hcFxuICAgICAgICB+aW5pdDooU2V0LlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgfmFkZFxuICAgICAgICB+cmVtb3ZlKVxuICA7O1xuXG4gIGxldCBwYXJ0aXRpb25fbWFwaSA/ZGF0YV9lcXVhbCBtYXAgfmYgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgZW1wdHkgPSBNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvciBpblxuICAgICAgdW5vcmRlcmVkX2ZvbGRcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgbWFwXG4gICAgICAgIH5pbml0OihlbXB0eSwgZW1wdHkpXG4gICAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgICAgfnVwZGF0ZTooZnVuIH5rZXkgfm9sZF9kYXRhOl8gfm5ld19kYXRhOmRhdGEgKGZpcnN0LCBzZWNvbmQpIC0+XG4gICAgICAgICAgbWF0Y2ggZiB+a2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IEZpcnN0IGRhdGEgLT4gTWFwLnNldCBmaXJzdCB+a2V5IH5kYXRhLCBNYXAucmVtb3ZlIHNlY29uZCBrZXlcbiAgICAgICAgICB8IFNlY29uZCBkYXRhIC0+IE1hcC5yZW1vdmUgZmlyc3Qga2V5LCBNYXAuc2V0IHNlY29uZCB+a2V5IH5kYXRhKVxuICAgICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBtYXRjaCBmIH5rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgRmlyc3QgZGF0YSAtPiBNYXAuYWRkX2V4biBmaXJzdCB+a2V5IH5kYXRhLCBzZWNvbmRcbiAgICAgICAgICB8IFNlY29uZCBkYXRhIC0+IGZpcnN0LCBNYXAuYWRkX2V4biBzZWNvbmQgfmtleSB+ZGF0YSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXkgfmRhdGE6XyAoZmlyc3QsIHNlY29uZCkgLT5cbiAgICAgICAgICBNYXAucmVtb3ZlIGZpcnN0IGtleSwgTWFwLnJlbW92ZSBzZWNvbmQga2V5KSlcbiAgOztcblxuICBsZXQgZmxhdHRlbiBzdGF0ZSBtYXAgPVxuICAgIGxldCBtb2R1bGUgRSA9IEluY3JlbWVudGFsLkV4cGVydCBpblxuICAgIGxldCByZXN1bHQgPSByZWYgKE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yOihNYXAuY29tcGFyYXRvciBtYXApKSBpblxuICAgIGxldCBub2RlID0gRS5Ob2RlLmNyZWF0ZSBzdGF0ZSAoZnVuICgpIC0+ICFyZXN1bHQpIGluXG4gICAgTWFwLml0ZXJpIG1hcCB+ZjooZnVuIH5rZXkgfmRhdGE6aW5jciAtPlxuICAgICAgRS5Ob2RlLmFkZF9kZXBlbmRlbmN5XG4gICAgICAgIG5vZGVcbiAgICAgICAgKEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5jciB+b25fY2hhbmdlOihmdW4gYSAtPlxuICAgICAgICAgICByZXN1bHQgOj0gTWFwLnNldCAhcmVzdWx0IH5rZXkgfmRhdGE6YSkpKTtcbiAgICBFLk5vZGUud2F0Y2ggbm9kZVxuICA7O1xuXG4gIGxldCBqb2luX3dpdGhfY29tcGFyYXRvciBtYXBfaW5jciB+Y29tcGFyYXRvciA9XG4gICAgbGV0IG1vZHVsZSBFID0gSW5jcmVtZW50YWwuRXhwZXJ0IGluXG4gICAgbGV0IGluY3JlbWVudGFsX3N0YXRlID0gSW5jcmVtZW50YWwuc3RhdGUgbWFwX2luY3IgaW5cbiAgICBsZXQgZW1wdHlfbWFwID0gTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3IgaW5cbiAgICBsZXQgcmVzdWx0X21hcCA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgb2xkX21hcF9vZl9pbmNycyA9IHJlZiBlbXB0eV9tYXAgaW5cbiAgICBsZXQgY3VycmVudF9kZXBlbmRlbmNpZXMgPSByZWYgZW1wdHlfbWFwIGluXG4gICAgbGV0IHJlc3VsdCA9IEUuTm9kZS5jcmVhdGUgaW5jcmVtZW50YWxfc3RhdGUgKGZ1biAoKSAtPiAhcmVzdWx0X21hcCkgaW5cbiAgICBsZXQgYWRkX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YV9ub2RlID1cbiAgICAgIGxldCBuZXdfZGVwID1cbiAgICAgICAgRS5EZXBlbmRlbmN5LmNyZWF0ZSBkYXRhX25vZGUgfm9uX2NoYW5nZTooZnVuIGRhdGEgLT5cbiAgICAgICAgICByZXN1bHRfbWFwIDo9IE1hcC5zZXQgIXJlc3VsdF9tYXAgfmtleSB+ZGF0YSlcbiAgICAgIGluXG4gICAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IG5ld19kZXA7XG4gICAgICBNYXAuc2V0IGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGE6bmV3X2RlcFxuICAgIGluXG4gICAgbGV0IHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgPVxuICAgICAgbGV0IGRlcCA9IE1hcC5maW5kX2V4biBjdXJyZW50X2RlcGVuZGVuY2llcyBrZXkgaW5cbiAgICAgIEUuTm9kZS5yZW1vdmVfZGVwZW5kZW5jeSByZXN1bHQgZGVwO1xuICAgICAgcmVzdWx0X21hcCA6PSBNYXAucmVtb3ZlICFyZXN1bHRfbWFwIGtleTtcbiAgICAgIE1hcC5yZW1vdmUgY3VycmVudF9kZXBlbmRlbmNpZXMga2V5XG4gICAgaW5cbiAgICBsZXQgbGhzX2NoYW5nZSA9XG4gICAgICBJbmNyZW1lbnRhbC5tYXAgbWFwX2luY3IgfmY6KGZ1biBtYXBfb2ZfaW5jcnMgLT5cbiAgICAgICAgbGV0IG5ld19kZXBlbmRlbmN5X21hcCA9XG4gICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgIH5kYXRhX2VxdWFsOnBoeXNfZXF1YWxcbiAgICAgICAgICAgICFvbGRfbWFwX29mX2luY3JzXG4gICAgICAgICAgICBtYXBfb2ZfaW5jcnNcbiAgICAgICAgICAgIH5pbml0OiFjdXJyZW50X2RlcGVuZGVuY2llc1xuICAgICAgICAgICAgfmY6KGZ1biBjdXJyZW50X2RlcGVuZGVuY2llcyAoa2V5LCBkaWZmKSAtPlxuICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IHJlbW92ZV9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXlcbiAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YV9ub2RlIC0+IGFkZF9zdWJub2RlIGN1cnJlbnRfZGVwZW5kZW5jaWVzIH5rZXkgfmRhdGFfbm9kZVxuICAgICAgICAgICAgICB8IGBVbmVxdWFsIChfLCBkYXRhX25vZGUpIC0+XG4gICAgICAgICAgICAgICAgcmVtb3ZlX3N1Ym5vZGUgY3VycmVudF9kZXBlbmRlbmNpZXMgfmtleSB8PiBhZGRfc3Vibm9kZSB+a2V5IH5kYXRhX25vZGUpXG4gICAgICAgIGluXG4gICAgICAgIGN1cnJlbnRfZGVwZW5kZW5jaWVzIDo9IG5ld19kZXBlbmRlbmN5X21hcDtcbiAgICAgICAgb2xkX21hcF9vZl9pbmNycyA6PSBtYXBfb2ZfaW5jcnMpXG4gICAgaW5cbiAgICBFLk5vZGUuYWRkX2RlcGVuZGVuY3kgcmVzdWx0IChFLkRlcGVuZGVuY3kuY3JlYXRlIGxoc19jaGFuZ2UpO1xuICAgIEUuTm9kZS53YXRjaCByZXN1bHRcbiAgOztcblxuICBsZXQgam9pbiBtYXAgPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXAgKGZ1biBjb21wYXJhdG9yIC0+IGpvaW5fd2l0aF9jb21wYXJhdG9yIG1hcCB+Y29tcGFyYXRvcilcbiAgOztcblxuICBtb2R1bGUgU2VwYXJhdGVfc3RhdGUgPSBzdHJ1Y3RcbiAgICB0eXBlICgnaywgJ3YsICdjbXAsICd3KSB0ID1cbiAgICAgIHsgbXV0YWJsZSBpbnB1dF9tYXAgOiAoJ2ssICd2LCAnY21wKSBNYXAudFxuICAgICAgOyBtdXRhYmxlIGV4cGVydF9ub2RlcyA6ICgnaywgKCd2LCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudCwgJ2NtcCkgTWFwLnRcbiAgICAgIDsgbXV0YWJsZSBvdXRwdXRfbWFwIDogKCdrLCAoJ3YsICd3KSBJbmNyZW1lbnRhbC50LCAnY21wKSBNYXAudFxuICAgICAgfVxuXG4gICAgbGV0IGNyZWF0ZSBjb21wYXJhdG9yID1cbiAgICAgIGxldCBlbXB0eSA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICB7IGlucHV0X21hcCA9IGVtcHR5OyBleHBlcnRfbm9kZXMgPSBlbXB0eTsgb3V0cHV0X21hcCA9IGVtcHR5IH1cbiAgICA7O1xuXG4gICAgbGV0IGNyZWF0ZV9sb29rdXBfbm9kZSBzdGF0ZSB0IGtleSA9XG4gICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5jcmVhdGUgc3RhdGUgKGZ1biAoKSAtPiBNYXAuZmluZF9leG4gdC5pbnB1dF9tYXAga2V5KVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBzZXBhcmF0ZSBpbnB1dF9tYXAgfmRhdGFfZXF1YWwgPVxuICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIGlucHV0X21hcCBpblxuICAgIHdpdGhfY29tcGFyYXRvciBpbnB1dF9tYXAgKGZ1biBjb21wYXJhdG9yIC0+XG4gICAgICBsZXQgc3RhdGUgPSBTZXBhcmF0ZV9zdGF0ZS5jcmVhdGUgY29tcGFyYXRvciBpblxuICAgICAgbGV0IG91dHB1dF9tYXBfbm9kZSA9XG4gICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLmNyZWF0ZSBpbmNyZW1lbnRhbF9zdGF0ZSAoZnVuICgpIC0+IHN0YXRlLm91dHB1dF9tYXApXG4gICAgICBpblxuICAgICAgbGV0IG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgbm9kZSB+aW5wdXRfbWFwX2NoYW5nZWQgPVxuICAgICAgICBsZXQgZGVwZW5kZW5jeSA9XG4gICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0LkRlcGVuZGVuY3kuY3JlYXRlIChMYXp5LmZvcmNlX3ZhbCBpbnB1dF9tYXBfY2hhbmdlZClcbiAgICAgICAgaW5cbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuYWRkX2RlcGVuZGVuY3kgbm9kZSBkZXBlbmRlbmN5XG4gICAgICBpblxuICAgICAgKCogV2Ugd2FudCB0byBtYWtlIG5vZGVzIGRlcGVuZCBvbiBbaW5wdXRfbWFwX2NoYW5nZWRdIHNvIHRoYXQgW2lucHV0X21hcF9jaGFuZ2VkXVxuICAgICAgICAgaXMgYWxsb3dlZCB0byBtYWtlIHRoZW0gc3RhbGUsIGJ1dCB3ZSBkbyBub3Qgd2FudCB0aGVtIHRvIGJlIHJlY29tcHV0ZWQgZm9yIGFueVxuICAgICAgICAgb3RoZXIgcmVhc29uLiBTbyB3ZSBtYWtlIFtpbnB1dF9tYXBfY2hhbmdlZF0gYSB1bml0IGluY3JlbWVudGFsICh0aGF0IHRoZXJlZm9yZVxuICAgICAgICAgbmV2ZXIgY2hhbmdlcykgYW5kIHRoaXMgd2F5IFtvdXRwdXRfbWFwX25vZGVdIGFuZCB0aGUgbG9va3VwIG5vZGVzIHdpbGwgb25seSBiZVxuICAgICAgICAgcmVjb21wdXRlZCB3aGVuIHRoZXkgYXJlIGV4cGxpY2l0bHkgbWFkZSBzdGFsZS5cbiAgICAgICopXG4gICAgICBsZXQgcmVjIGlucHV0X21hcF9jaGFuZ2VkID1cbiAgICAgICAgbGF6eVxuICAgICAgICAgIChJbmNyZW1lbnRhbC5tYXAgaW5wdXRfbWFwIH5mOihmdW4gaW5wdXRfbWFwIC0+XG4gICAgICAgICAgICAgbGV0IHByZXZfaW5wdXRfbWFwID0gc3RhdGUuaW5wdXRfbWFwIGluXG4gICAgICAgICAgICAgbGV0IGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcCA9XG4gICAgICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICAgICBwcmV2X2lucHV0X21hcFxuICAgICAgICAgICAgICAgICBpbnB1dF9tYXBcbiAgICAgICAgICAgICAgICAgfmRhdGFfZXF1YWxcbiAgICAgICAgICAgICAgICAgfmluaXQ6KHN0YXRlLmV4cGVydF9ub2Rlcywgc3RhdGUub3V0cHV0X21hcClcbiAgICAgICAgICAgICAgICAgfmY6KGZ1biAoZXhwZXJ0X25vZGVzLCBvdXRwdXRfbWFwKSAoa2V5LCBjaGFuZ2UpIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggY2hhbmdlIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBMZWZ0IF9vbGRfdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBvbGRfbm9kZSA9IE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5pbnZhbGlkYXRlIG9sZF9ub2RlO1xuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBvdXRwdXRfbWFwX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICBNYXAucmVtb3ZlIGV4cGVydF9ub2RlcyBrZXksIE1hcC5yZW1vdmUgb3V0cHV0X21hcCBrZXlcbiAgICAgICAgICAgICAgICAgICB8IGBSaWdodCBfbmV3X3ZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICAgICAgICAgICAgIFNlcGFyYXRlX3N0YXRlLmNyZWF0ZV9sb29rdXBfbm9kZSBpbmNyZW1lbnRhbF9zdGF0ZSBzdGF0ZSBrZXlcbiAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGVfZGVwZW5kX29uX2lucHV0X21hcF9jaGFuZ2VkIG5vZGUgfmlucHV0X21hcF9jaGFuZ2VkO1xuICAgICAgICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUubWFrZV9zdGFsZSBvdXRwdXRfbWFwX25vZGU7XG4gICAgICAgICAgICAgICAgICAgICAoIE1hcC5hZGRfZXhuIGV4cGVydF9ub2RlcyB+a2V5IH5kYXRhOm5vZGVcbiAgICAgICAgICAgICAgICAgICAgICwgTWFwLmFkZF9leG5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgIH5kYXRhOihJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS53YXRjaCBub2RlKSApXG4gICAgICAgICAgICAgICAgICAgfCBgVW5lcXVhbCAoX29sZF92YWx1ZSwgX25ld192YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLm1ha2Vfc3RhbGVcbiAgICAgICAgICAgICAgICAgICAgICAgKE1hcC5maW5kX2V4biBleHBlcnRfbm9kZXMga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgIGV4cGVydF9ub2Rlcywgb3V0cHV0X21hcClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIHN0YXRlLmlucHV0X21hcCA8LSBpbnB1dF9tYXA7XG4gICAgICAgICAgICAgc3RhdGUuZXhwZXJ0X25vZGVzIDwtIGV4cGVydF9ub2RlcztcbiAgICAgICAgICAgICBzdGF0ZS5vdXRwdXRfbWFwIDwtIG91dHB1dF9tYXApKVxuICAgICAgaW5cbiAgICAgIG1ha2Vfbm9kZV9kZXBlbmRfb25faW5wdXRfbWFwX2NoYW5nZWQgb3V0cHV0X21hcF9ub2RlIH5pbnB1dF9tYXBfY2hhbmdlZDtcbiAgICAgIEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIG91dHB1dF9tYXBfbm9kZSlcbiAgOztcblxuICAoKiBKdXN0IGZvciBkZXJpdmluZyBzdHJ1Y3R1cmFsIGVxdWFsaXR5LiAqKVxuICB0eXBlICdhIG1heWJlX2JvdW5kX3N0cnVjdHVyYWxseSA9ICdhIE1heWJlX2JvdW5kLnQgPVxuICAgIHwgSW5jbCBvZiAnYVxuICAgIHwgRXhjbCBvZiAnYVxuICAgIHwgVW5ib3VuZGVkXG4gIFtAQGRlcml2aW5nIGVxdWFsXVxuXG4gIGxldCBzdWJyYW5nZVxuICAgICAgICAodHlwZSBrIHYgY21wIHN0YXRlX3dpdG5lc3MpXG4gICAgICAgID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpXG4gICAgICAgIChtYXBfaW5jciA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgcmFuZ2VcbiAgICA9XG4gICAgd2l0aF9vbGQyIG1hcF9pbmNyIHJhbmdlIH5mOihmdW4gfm9sZCBtYXAgcmFuZ2UgLT5cbiAgICAgIGxldCBjb21wYXJlID0gKE1hcC5jb21wYXJhdG9yIG1hcCkuY29tcGFyZSBpblxuICAgICAgbGV0IGVxdWFsIGwgciA9IGNvbXBhcmUgbCByID0gMCBpblxuICAgICAgbGV0ICggPiApIGEgYiA9IGNvbXBhcmUgYSBiID4gMFxuICAgICAgYW5kICggPj0gKSBhIGIgPSBjb21wYXJlIGEgYiA+PSAwIGluXG4gICAgICBsZXQgbWF5YmVfYm91bmRfZXF1YWwgYSBiIDogYm9vbCA9IGVxdWFsX21heWJlX2JvdW5kX3N0cnVjdHVyYWxseSBlcXVhbCBhIGIgaW5cbiAgICAgIGxldCByYW5nZV9pc19lbXB0eSB+bWluIH5tYXggOiBib29sID1cbiAgICAgICAgbWF0Y2ggbWluLCBtYXggd2l0aFxuICAgICAgICB8IFVuYm91bmRlZCwgKFVuYm91bmRlZCB8IEV4Y2wgXyB8IEluY2wgXykgfCAoRXhjbCBfIHwgSW5jbCBfKSwgVW5ib3VuZGVkIC0+XG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgfCBJbmNsIG1pbiwgSW5jbCBtYXggLT4gbWluID4gbWF4XG4gICAgICAgIHwgRXhjbCBtaW4sIEV4Y2wgbWF4IHwgSW5jbCBtaW4sIEV4Y2wgbWF4IHwgRXhjbCBtaW4sIEluY2wgbWF4IC0+IG1pbiA+PSBtYXhcbiAgICAgIGluXG4gICAgICBsZXQgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleSA6IGJvb2wgPVxuICAgICAgICBNYXliZV9ib3VuZC5pc19sb3dlcl9ib3VuZCBtaW4gfm9mXzprZXkgfmNvbXBhcmVcbiAgICAgICAgJiYgTWF5YmVfYm91bmQuaXNfdXBwZXJfYm91bmQgbWF4IH5vZl86a2V5IH5jb21wYXJlXG4gICAgICBpblxuICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICgqIEVtcHR5IG5ldyByYW5nZSBtZWFucyBlbXB0eSBtYXAgKilcbiAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgIHwgU29tZSAoKG1pbiwgbWF4KSBhcyByYW5nZSkgLT5cbiAgICAgICAgbGV0IGZyb21fc2NyYXRjaCAoKSA9IE1hcC5zdWJyYW5nZSBtYXAgfmxvd2VyX2JvdW5kOm1pbiB+dXBwZXJfYm91bmQ6bWF4IGluXG4gICAgICAgIChtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgfCBOb25lIHwgU29tZSAoXywgTm9uZSwgXykgLT5cbiAgICAgICAgICAgKCogbm8gb2xkIHJhbmdlICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChfLCBTb21lIChvbGRfbWluLCBvbGRfbWF4KSwgXylcbiAgICAgICAgICAgd2hlbiByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heDpvbGRfbWF4XG4gICAgICAgICAgICAgfHwgcmFuZ2VfaXNfZW1wdHkgfm1pbiB+bWF4Om9sZF9tYXhcbiAgICAgICAgICAgICB8fCByYW5nZV9pc19lbXB0eSB+bWluOm9sZF9taW4gfm1heCAtPlxuICAgICAgICAgICAoKiBlbXB0eSBvbGQgcmFuZ2Ugb3Igb2xkIHJhbmdlIGRpc2pvaW50IHdpdGggbmV3ICopXG4gICAgICAgICAgIGZyb21fc2NyYXRjaCAoKVxuICAgICAgICAgfCBTb21lIChvbGRfbWFwLCBTb21lICgob2xkX21pbiwgb2xkX21heCkgYXMgb2xkX3JhbmdlKSwgb2xkX3JlcykgLT5cbiAgICAgICAgICAgd2l0aF9yZXR1cm4gKGZ1biB7IHJldHVybiB9IC0+XG4gICAgICAgICAgICAgKCogUmV0dXJucyB0cnVlIGlmZiB0aGUga2V5IGlzIGluIGJvdGggbmV3IGFuZCBvbGQgcmFuZ2VzICopXG4gICAgICAgICAgICAgbGV0IGluX3JhbmdlX2ludGVyc2VjdGlvbiBrZXkgPVxuICAgICAgICAgICAgICAgcmFuZ2VfaW5jbHVkZXMgfm1pbiB+bWF4IGtleVxuICAgICAgICAgICAgICAgJiYgcmFuZ2VfaW5jbHVkZXMgfm1pbjpvbGRfbWluIH5tYXg6b2xkX21heCBrZXlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEFwcGx5IGNoYW5nZXMgdG8ga2V5cyB3aGljaCBhcmUgaW4gdGhlIGludGVyc2VjdGlvbiBvZiBib3RoIHJhbmdlcy5cblxuICAgICAgICAgICAgICAgIFtvdXRzaWRlXSBpcyB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgb3V0c2lkZSB0aGUgcmFuZ2UgaW50ZXJzZWN0aW9uIHRoYXQgd2VcbiAgICAgICAgICAgICAgICB0b2xlcmF0ZSBiZWZvcmUgZ2l2aW5nIHVwIGFuZCByZWNvbnN0cnVjdGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlLiBUaGlzXG4gICAgICAgICAgICAgICAgaXMgYW4gb3B0aW1pc2F0aW9uIGluIHRoZSBjYXNlIHRoYXQgdGhlIG1hcCBjaGFuZ2VzIGluIGEgdmVyeSBiaWcgd2F5LCBhdFxuICAgICAgICAgICAgICAgIHdoaWNoIHBvaW50IGNvbXB1dGluZyBiYXNlZCBvbiB0aGUgbmV3IHJhbmdlIGlzIGNoZWFwZXIuICAqKVxuICAgICAgICAgICAgIGxldCBhcHBseV9kaWZmX2luX2ludGVyc2VjdGlvbiAob3V0c2lkZSwgbWFwKSAoa2V5LCBkYXRhKSA9XG4gICAgICAgICAgICAgICBpZiBpbl9yYW5nZV9pbnRlcnNlY3Rpb24ga2V5XG4gICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBvdXRzaWRlLCBNYXAucmVtb3ZlIG1hcCBrZXlcbiAgICAgICAgICAgICAgICAgfCBgUmlnaHQgZGF0YSB8IGBVbmVxdWFsIChfLCBkYXRhKSAtPiBvdXRzaWRlLCBNYXAuc2V0IG1hcCB+a2V5IH5kYXRhKVxuICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgIGxldCBvdXRzaWRlID0gb3V0c2lkZSAtIDEgaW5cbiAgICAgICAgICAgICAgICAgaWYgSW50Lk8uKG91dHNpZGUgPCAwKVxuICAgICAgICAgICAgICAgICB0aGVuIHJldHVybiAoZnJvbV9zY3JhdGNoICgpKVxuICAgICAgICAgICAgICAgICBlbHNlIG91dHNpZGUsIE1hcC5yZW1vdmUgbWFwIGtleSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICgqIEZpcnN0IHVwZGF0ZSB0aGUga2V5cyBpbiAvYm90aC8gdGhlIG9sZCBhbmQgdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICBsZXQgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb24gPVxuICAgICAgICAgICAgICAgKCogQ3V0b2ZmIHRoZSBiaWcgZGlmZiBjb21wdXRhdGlvbiBpZiB3ZSByZWFjaCBPKHxzdWJtYXB8KSBudW1iZXIgb2ZcbiAgICAgICAgICAgICAgICAgIGNoYW5nZXMgdGhhdCBhcmUgb3V0c2lkZSB0aGUgcmFuZ2UgKilcbiAgICAgICAgICAgICAgIGxldCBvdXRzaWRlX2N1dG9mZiA9IE1hcC5sZW5ndGggb2xkX3JlcyAvIDQgaW5cbiAgICAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgICAgICAgIH5pbml0OihvdXRzaWRlX2N1dG9mZiwgb2xkX3JlcylcbiAgICAgICAgICAgICAgICAgfmY6YXBwbHlfZGlmZl9pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgIHw+IHNuZFxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgaWYgVHVwbGUyLmVxdWFsXG4gICAgICAgICAgICAgICAgICB+ZXExOm1heWJlX2JvdW5kX2VxdWFsXG4gICAgICAgICAgICAgICAgICB+ZXEyOm1heWJlX2JvdW5kX2VxdWFsXG4gICAgICAgICAgICAgICAgICBvbGRfcmFuZ2VcbiAgICAgICAgICAgICAgICAgIHJhbmdlXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgKCogVGhlcmUgYXJlIG5vIGtleXMgdG8gcmVtb3ZlIGFuZCBldmVyeXRoaW5nIGluIHJhbmdlIGlzIHVwZGF0ZWQuICopXG4gICAgICAgICAgICAgICB3aXRoX3VwZGF0ZWRfdmFsdWVzX2luX2ludGVyc2VjdGlvblxuICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgKCogUmVtb3ZlIGFueSBrZXlzIHdoaWNoIGFyZSBub3QgaW4gdGhlIG5ldyByYW5nZS4gKilcbiAgICAgICAgICAgICAgIGxldCB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlID1cbiAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlXG4gICAgICAgICAgICAgICAgICAgd2l0aF91cGRhdGVkX3ZhbHVlc19pbl9pbnRlcnNlY3Rpb25cbiAgICAgICAgICAgICAgICAgICB+bG93ZXJfYm91bmQ6bWluXG4gICAgICAgICAgICAgICAgICAgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICgqIEFkZCBpbiBhbnkga2V5cyB3aGljaCBhcmUgaW4gdGhlIG5ldyByYW5nZSBidXQgbm90IHRoZSBvbGQgcmFuZ2UuICopXG4gICAgICAgICAgICAgICBsZXQgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UgPVxuICAgICAgICAgICAgICAgICBsZXQgbWFwX2FwcGVuZF9leG4gbG93ZXJfcGFydCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBNYXAuYXBwZW5kIH5sb3dlcl9wYXJ0IH51cHBlcl9wYXJ0IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IGBPayBtYXAgLT4gbWFwXG4gICAgICAgICAgICAgICAgICAgfCBgT3ZlcmxhcHBpbmdfa2V5X3JhbmdlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbXBvc3NpYmxlIGNhc2U6IEJVRyBpbiBpbmNyX21hcC5tbCBzdWJyYW5nZVwiXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIGxldCBsb3dlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21pbiAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6bWluIH51cHBlcl9ib3VuZDooSW5jbCBvbGRfbWluKVxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWluIC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDptaW4gfnVwcGVyX2JvdW5kOihFeGNsIG9sZF9taW4pXG4gICAgICAgICAgICAgICAgIGFuZCB1cHBlcl9wYXJ0ID1cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBvbGRfbWF4IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFVuYm91bmRlZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLlVzaW5nX2NvbXBhcmF0b3IuZW1wdHkgfmNvbXBhcmF0b3I6KE1hcC5jb21wYXJhdG9yIG1hcClcbiAgICAgICAgICAgICAgICAgICB8IEV4Y2wgb2xkX21heCAtPlxuICAgICAgICAgICAgICAgICAgICAgTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQ6KEluY2wgb2xkX21heCkgfnVwcGVyX2JvdW5kOm1heFxuICAgICAgICAgICAgICAgICAgIHwgSW5jbCBvbGRfbWF4IC0+XG4gICAgICAgICAgICAgICAgICAgICBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZDooRXhjbCBvbGRfbWF4KSB+dXBwZXJfYm91bmQ6bWF4XG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIG1hcF9hcHBlbmRfZXhuXG4gICAgICAgICAgICAgICAgICAgbG93ZXJfcGFydFxuICAgICAgICAgICAgICAgICAgIChtYXBfYXBwZW5kX2V4biB3aXRob3V0X2tleXNfb3V0X29mX3JhbmdlIHVwcGVyX3BhcnQpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgd2l0aF9uZXdfa2V5c19ub3dfaW5fcmFuZ2UpKSkpXG4gIDs7XG5cbiAgbGV0IHJla2V5ID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yOm91dGVyX2NvbXBhcmF0b3IgfmYgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICBtYXBfaW5jclxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5IH5kYXRhIG91dHB1dCAtPiBNYXAuYWRkX2V4biBvdXRwdXQgfmtleTooZiB+a2V5IH5kYXRhKSB+ZGF0YSlcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIG91dHB1dCAtPiBNYXAucmVtb3ZlIG91dHB1dCAoZiB+a2V5IH5kYXRhKSlcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5IH5vbGRfZGF0YSB+bmV3X2RhdGEgb3V0cHV0IC0+XG4gICAgICAgIGxldCBwcmV2X2tleSA9IGYgfmtleSB+ZGF0YTpvbGRfZGF0YSBpblxuICAgICAgICBsZXQgbmV3X2tleSA9IGYgfmtleSB+ZGF0YTpuZXdfZGF0YSBpblxuICAgICAgICBpZiAoTWFwLmNvbXBhcmF0b3Igb3V0cHV0KS5jb21wYXJlIHByZXZfa2V5IG5ld19rZXkgPSAwXG4gICAgICAgIHRoZW4gTWFwLnNldCBvdXRwdXQgfmtleTpuZXdfa2V5IH5kYXRhOm5ld19kYXRhXG4gICAgICAgIGVsc2UgTWFwLnJlbW92ZSBvdXRwdXQgcHJldl9rZXkgfD4gTWFwLmFkZF9leG4gfmtleTpuZXdfa2V5IH5kYXRhOm5ld19kYXRhKVxuICA7O1xuXG4gIGxldCBpbmRleF9ieWkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmNvbXBhcmF0b3I6b3V0ZXJfY29tcGFyYXRvciB+aW5kZXggPVxuICAgIHdpdGhfY29tcGFyYXRvciBtYXBfaW5jciAoZnVuIGlubmVyX2NvbXBhcmF0b3IgLT5cbiAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgICAgfnJldmVydF90b19pbml0X3doZW5fZW1wdHk6dHJ1ZVxuICAgICAgICB+YWRkOihmdW4gfmtleTppbm5lcl9rZXkgfmRhdGEgb3V0ZXJfbWFwIC0+XG4gICAgICAgICAgbWF0Y2ggaW5kZXggfmtleTppbm5lcl9rZXkgfmRhdGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBvdXRlcl9tYXBcbiAgICAgICAgICB8IFNvbWUgb3V0ZXJfa2V5IC0+XG4gICAgICAgICAgICBNYXAudXBkYXRlIG91dGVyX21hcCBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIE1hcC5Vc2luZ19jb21wYXJhdG9yLnNpbmdsZXRvblxuICAgICAgICAgICAgICAgICAgaW5uZXJfa2V5XG4gICAgICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICAgICAgICB+Y29tcGFyYXRvcjppbm5lcl9jb21wYXJhdG9yXG4gICAgICAgICAgICAgIHwgU29tZSBpbm5lcl9tYXAgLT4gTWFwLmFkZF9leG4gaW5uZXJfbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhKSlcbiAgICAgICAgfnJlbW92ZTooZnVuIH5rZXk6aW5uZXJfa2V5IH5kYXRhIG91dGVyX21hcCAtPlxuICAgICAgICAgIG1hdGNoIGluZGV4IH5rZXk6aW5uZXJfa2V5IH5kYXRhIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gb3V0ZXJfbWFwXG4gICAgICAgICAgfCBTb21lIG91dGVyX2tleSAtPlxuICAgICAgICAgICAgTWFwLmNoYW5nZSBvdXRlcl9tYXAgb3V0ZXJfa2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcIkJVRzogSGl0IHN1cHBvc2VkbHkgaW1wb3NzaWJsZSBjYXNlIGluIEluY3JfbWFwLmluZGV4X2J5XCJcbiAgICAgICAgICAgICAgfCBTb21lIGlubmVyX21hcCAtPlxuICAgICAgICAgICAgICAgIGxldCBpbm5lcl9tYXAgPSBNYXAucmVtb3ZlIGlubmVyX21hcCBpbm5lcl9rZXkgaW5cbiAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgaW5uZXJfbWFwIHRoZW4gTm9uZSBlbHNlIFNvbWUgaW5uZXJfbWFwKSkpXG4gIDs7XG5cbiAgbGV0IGluZGV4X2J5ID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yIH5pbmRleCA9XG4gICAgaW5kZXhfYnlpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5jb21wYXJhdG9yIH5pbmRleDooZnVuIH5rZXk6XyB+ZGF0YSAtPiBpbmRleCBkYXRhKVxuICA7O1xuXG5cbiAgKCoqIEZpbmQgdHdvIGtleXMgaW4gbWFwIGJ5IGluZGV4LCBPKG4pLiBXZSB1c2UganVzdCBvbmUgZm9sZCAodHdvIE1hcC5udGggd291bGQgdXNlIHR3bylcbiAgICAgIGFuZCBvcHRpbWl6ZSBmb3Iga2V5cyBjbG9zZSB0byBlaXRoZXIgYmVnaW5uaW5nIG9yIGVuZCBieSB1c2luZyBlaXRoZXIgZm9sZCBvclxuICAgICAgZm9sZF9yaWdodC5cbiAgKilcbiAgbW9kdWxlIEtleV9zdGF0dXMgPSBzdHJ1Y3RcbiAgICB0eXBlICdrIHQgPVxuICAgICAgfCBLbm93biBvZiAna1xuICAgICAgfCBLbm93bl9ub25lXG4gICAgICB8IFVua25vd25cblxuICAgIGxldCBpc19rbm93biA9IGZ1bmN0aW9uXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlXG4gICAgOztcblxuICAgIGxldCB0b19vcHRpb24gPSBmdW5jdGlvblxuICAgICAgfCBVbmtub3duIHwgS25vd25fbm9uZSAtPiBOb25lXG4gICAgICB8IEtub3duIGsgLT4gU29tZSBrXG4gICAgOztcbiAgZW5kXG5cbiAgbGV0IGZpbmRfa2V5X3JhbmdlX2xpbmVhciAodHlwZSBrKSB+ZnJvbSB+dG9fIChtYXAgOiAoaywgXywgXykgTWFwLnQpXG4gICAgOiAoayAqIGsgb3B0aW9uKSBvcHRpb25cbiAgICA9XG4gICAgbGV0IG9wZW4gS2V5X3N0YXR1cyBpblxuICAgIGxldCBsZW4gPSBNYXAubGVuZ3RoIG1hcCBpblxuICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA+PSApIGZyb20gbGVuIHRoZW4gS25vd25fbm9uZSBlbHNlIFVua25vd24gaW5cbiAgICBsZXQgZW5kX2tleSA9IGlmIEludC4oID49ICkgdG9fIGxlbiB0aGVuIEtub3duX25vbmUgZWxzZSBVbmtub3duIGluXG4gICAgbGV0IGZpbmRfa2V5cyBmb2xkIH5zdGFydF9wb3MgfmFkdmFuY2VfcG9zID1cbiAgICAgIHdpdGhfcmV0dXJuIChmdW4geyByZXR1cm4gfSAtPlxuICAgICAgICBmb2xkXG4gICAgICAgICAgbWFwXG4gICAgICAgICAgfmluaXQ6KGJlZ2luX2tleSwgZW5kX2tleSwgc3RhcnRfcG9zKVxuICAgICAgICAgIH5mOihmdW4gfmtleSB+ZGF0YTpfIChiZWdpbl9rZXksIGVuZF9rZXksIHBvcykgLT5cbiAgICAgICAgICAgIGxldCBiZWdpbl9rZXkgPSBpZiBJbnQuKCA9ICkgcG9zIGZyb20gdGhlbiBLbm93biBrZXkgZWxzZSBiZWdpbl9rZXkgaW5cbiAgICAgICAgICAgIGxldCBlbmRfa2V5ID0gaWYgSW50LiggPSApIHBvcyB0b18gdGhlbiBLbm93biBrZXkgZWxzZSBlbmRfa2V5IGluXG4gICAgICAgICAgICBpZiBpc19rbm93biBiZWdpbl9rZXkgJiYgaXNfa25vd24gZW5kX2tleVxuICAgICAgICAgICAgdGhlbiByZXR1cm4gKGJlZ2luX2tleSwgZW5kX2tleSwgcG9zKVxuICAgICAgICAgICAgZWxzZSBiZWdpbl9rZXksIGVuZF9rZXksIGFkdmFuY2VfcG9zIHBvcykpXG4gICAgaW5cbiAgICBsZXQgYmVnaW5fa2V5LCBlbmRfa2V5LCBfID1cbiAgICAgICgqIFNlYXJjaGluZyBmcm9tIGxlZnQgdGFrZXMgTyh0b18pLCBmcm9tIHJpZ2h0IC0gTyhsZW4gLSBmcm9tKSwgc28gc2VsZWN0IHRoZVxuICAgICAgICAgc21hbGxlciBvbmUuICopXG4gICAgICBpZiB0b18gPCBsZW4gLSBmcm9tXG4gICAgICB0aGVuIGZpbmRfa2V5cyBNYXAuZm9sZCB+c3RhcnRfcG9zOjAgfmFkdmFuY2VfcG9zOihmdW4gcG9zIC0+IHBvcyArIDEpXG4gICAgICBlbHNlIGZpbmRfa2V5cyBNYXAuZm9sZF9yaWdodCB+c3RhcnRfcG9zOihsZW4gLSAxKSB+YWR2YW5jZV9wb3M6KGZ1biBwb3MgLT4gcG9zIC0gMSlcbiAgICBpblxuICAgIE9wdGlvbi5tYXAgKEtleV9zdGF0dXMudG9fb3B0aW9uIGJlZ2luX2tleSkgfmY6KGZ1biBiZWdpbl9rZXkgLT5cbiAgICAgIGJlZ2luX2tleSwgS2V5X3N0YXR1cy50b19vcHRpb24gZW5kX2tleSlcbiAgOztcblxuICBsZXQgbnRoX2Zyb21fZWl0aGVyX3NpZGUgKHR5cGUgaykgbiAobWFwIDogKGssIF8sIF8pIE1hcC50KSA6IGsgb3B0aW9uID1cbiAgICBPcHRpb24ubWFwIH5mOmZzdCAoZmluZF9rZXlfcmFuZ2VfbGluZWFyIH5mcm9tOm4gfnRvXzpuIG1hcClcbiAgOztcblxuICAoKiogRmluZCBrZXkgW2J5XSBwb3NpdGlvbnMgZWFybGllci9sYXRlciBpbiBhIG1hcC4gUmV0dXJucyBub25lIGlmIG91dCBvZiBib3VuZHMuICopXG4gIGxldCByZWMgb2Zmc2V0IChrZXkgOiAnaykgKG1hcCA6ICgnaywgXywgXykgTWFwLnQpIH5ieSA6ICdrIG9wdGlvbiA9XG4gICAgaWYgSW50LiggPSApIGJ5IDBcbiAgICB0aGVuIFNvbWUga2V5XG4gICAgZWxzZSAoXG4gICAgICBsZXQgY2xvc2VzdF9kaXIsIGFkZCA9XG4gICAgICAgIGlmIEludC4oIDwgKSBieSAwIHRoZW4gYExlc3NfdGhhbiwgMSBlbHNlIGBHcmVhdGVyX3RoYW4sIC0xXG4gICAgICBpblxuICAgICAgbWF0Y2ggTWFwLmNsb3Nlc3Rfa2V5IG1hcCBjbG9zZXN0X2RpciBrZXkgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAoa2V5LCBfKSAtPiBvZmZzZXQga2V5IG1hcCB+Ynk6KGJ5ICsgYWRkKSlcbiAgOztcblxuICAoKiogRmluZCBob3cgd2UgbmVlZCB0byBtb3ZlIFtrZXldIGlmIFtjaGFuZ2VkX2tleV0gY2hhbmdlZCBpbiB0aGUgZ2l2ZW5cbiAgICAgIHdheSAqKVxuICBsZXQgZmluZF9vZmZzZXQgfmNvbXBhcmUgfmtleSB+Y2hhbmdlZF9rZXkgY2hhbmdlID1cbiAgICBpZiBJbnQuKCA8ICkgKGNvbXBhcmUgY2hhbmdlZF9rZXkga2V5KSAwXG4gICAgdGhlbiAoXG4gICAgICBtYXRjaCBjaGFuZ2Ugd2l0aFxuICAgICAgfCBgTGVmdCBfIC0+IDFcbiAgICAgIHwgYFJpZ2h0IF8gLT4gLTFcbiAgICAgIHwgXyAtPiAwKVxuICAgIGVsc2UgMFxuICA7O1xuXG4gIGxldCByYW5rXG4gICAgICAgICh0eXBlIGsgdiBjbXAgc3RhdGVfd2l0bmVzcylcbiAgICAgICAgKG1hcCA6ICgoaywgdiwgY21wKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKGtleSA6IChrLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwIChmdW4gY29tcGFyYXRvciAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5ID0gY29tcGFyYXRvci5jb21wYXJlIGluXG4gICAgICBsZXQgc2FtZV9rZXkgYSBiID0gY29tcGFyZV9rZXkgYSBiID0gMCBpblxuICAgICAgbGV0IHdoZW5fa2V5X2NoYW5nZWQgfm1hcCB+b2xkX2tleSB+bmV3X2tleSB+b2xkX3JhbmsgPVxuICAgICAgICBpZiBjb21wYXJlX2tleSBuZXdfa2V5IG9sZF9rZXkgPCAwXG4gICAgICAgIHRoZW4gKFxuICAgICAgICAgICgqIElmIHRoZSBuZXcga2V5IGlzIHNtYWxsZXIgdGhhbiB0aGUgb2xkIGtleSwgZmluZCB0aGUgc2l6ZSBvZiB0aGUgbWFwIHN1YnJhbmdlXG4gICAgICAgICAgICAgYmV0d2VlbiB0aGVtIGFuZCBzdWJ0cmFjdCBpdCBmcm9tIHRoZSBwcmV2aW91cyByYW5rICopXG4gICAgICAgICAgbGV0IGxvd2VyX2JvdW5kLCB1cHBlcl9ib3VuZCA9IEV4Y2wgbmV3X2tleSwgRXhjbCBvbGRfa2V5IGluXG4gICAgICAgICAgbGV0IHN1YnJhbmdlID0gTWFwLnN1YnJhbmdlIG1hcCB+bG93ZXJfYm91bmQgfnVwcGVyX2JvdW5kIGluXG4gICAgICAgICAgb2xkX3JhbmsgLSBNYXAubGVuZ3RoIHN1YnJhbmdlIC0gMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgKCogT3RoZXJ3aXNlLCB0aGUgbmV3IGtleSBpcyBsYXJnZXIgdGhhbiB0aGUgb2xkIGtleSwgc28gZmluZCB0aGUgc2l6ZSBvZiB0aGVcbiAgICAgICAgICAgICBtYXAgc3VicmFuZ2UgYmV0d2VlbiB0aGVtIGFuZCBhZGQgaXQgdG8gdGhlIHByZXZpb3VzIHJhbmsgKilcbiAgICAgICAgICBsZXQgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kID0gRXhjbCBvbGRfa2V5LCBFeGNsIG5ld19rZXkgaW5cbiAgICAgICAgICBsZXQgc3VicmFuZ2UgPSBNYXAuc3VicmFuZ2UgbWFwIH5sb3dlcl9ib3VuZCB+dXBwZXJfYm91bmQgaW5cbiAgICAgICAgICBvbGRfcmFuayArIE1hcC5sZW5ndGggc3VicmFuZ2UgKyAxKVxuICAgICAgaW5cbiAgICAgIGxldCB3aGVuX21hcF9jaGFuZ2VkIH5vbGRfbWFwIH5uZXdfbWFwIH5rZXkgfm9sZF9yYW5rID1cbiAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAoKiBXZSBkb24ndCBjYXJlIGFib3V0IHRoZSBkYXRhLCBzbyBvcHRpbWl6ZSB0aGVzZSBjaGVja3MgKilcbiAgICAgICAgICB+ZGF0YV9lcXVhbDooZnVuIF8gXyAtPiB0cnVlKVxuICAgICAgICAgIG9sZF9tYXBcbiAgICAgICAgICBuZXdfbWFwXG4gICAgICAgICAgfmluaXQ6b2xkX3JhbmtcbiAgICAgICAgICB+ZjooZnVuIGFjYyAoZGlmZl9rZXksIGRpZmYpIC0+XG4gICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgIHwgYExlZnQgXyB3aGVuIGNvbXBhcmVfa2V5IGRpZmZfa2V5IGtleSA8IDAgLT4gYWNjIC0gMVxuICAgICAgICAgICAgfCBgUmlnaHQgXyB3aGVuIGNvbXBhcmVfa2V5IGRpZmZfa2V5IGtleSA8IDAgLT4gYWNjICsgMVxuICAgICAgICAgICAgfCBfIC0+IGFjYylcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIHByb2Nlc3MgfihvbGQgOiAoKGssIHYsIF8pIE1hcC50ICogXyAqIF8pIG9wdGlvbikgbmV3X21hcCAobmV3X2tleSA6IGspID1cbiAgICAgICAgaWYgbm90IChNYXAubWVtIG5ld19tYXAgbmV3X2tleSlcbiAgICAgICAgdGhlbiBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgICAgKCogSWYgdGhlIG1hcCBhbmQga2V5IGFyZSB0aGUgc2FtZSwganVzdCByZXVzZSB0aGUgb2xkIHJhbmsgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIG9sZF9yYW5rKVxuICAgICAgICAgICAgd2hlbiBwaHlzX2VxdWFsIG5ld19tYXAgb2xkX21hcCAmJiBzYW1lX2tleSBvbGRfa2V5IG5ld19rZXkgLT4gb2xkX3JhbmtcbiAgICAgICAgICAoKiBJZiB0aGUgbWFwIGlzIHRoZSBzYW1lIGJ1dCB0aGUga2V5IGNoYW5nZWQgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIHdoZW4gcGh5c19lcXVhbCBuZXdfbWFwIG9sZF9tYXAgLT5cbiAgICAgICAgICAgIFNvbWUgKHdoZW5fa2V5X2NoYW5nZWQgfm1hcDpuZXdfbWFwIH5vbGRfa2V5IH5uZXdfa2V5IH5vbGRfcmFuaylcbiAgICAgICAgICAoKiBJZiB0aGUga2V5IGlzIHRoZSBzYW1lIGJ1dCB0aGUgbWFwIGNoYW5nZWQgKilcbiAgICAgICAgICB8IFNvbWUgKG9sZF9tYXAsIG9sZF9rZXksIFNvbWUgb2xkX3JhbmspIHdoZW4gc2FtZV9rZXkgbmV3X2tleSBvbGRfa2V5IC0+XG4gICAgICAgICAgICBTb21lICh3aGVuX21hcF9jaGFuZ2VkIH5vbGRfbWFwIH5uZXdfbWFwIH5rZXk6bmV3X2tleSB+b2xkX3JhbmspXG4gICAgICAgICAgKCogSWYgYm90aCB0aGUgbWFwIGFuZCB0aGUga2V5IGNoYW5nZWQsIHRoaXMgY2FuIGJlIHNpbXVsYXRlZCBhcyB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdpbmcgZm9sbG93ZWQgYnkgdGhlIGtleSBjaGFuZ2luZyAqKVxuICAgICAgICAgIHwgU29tZSAob2xkX21hcCwgb2xkX2tleSwgU29tZSBvbGRfcmFuaykgLT5cbiAgICAgICAgICAgICgqIFdlIGNhbGwgW3Byb2Nlc3NdIHJlY3Vyc2l2ZWx5IGluc3RlYWQgb2YgZGlyZWN0bHkgY2FsbGluZ1xuICAgICAgICAgICAgICAgW3doZW5fbWFwX2NoYW5nZWRdIGZvbGxvd2VkIGJ5IFt3aGVuX2tleV9jaGFuZ2VkXSBzaW5jZSBpdCBtaWdodCBiZSB0aGVcbiAgICAgICAgICAgICAgIGNhc2UgdGhhdCBbb2xkX2tleV0gaXMgaW4gW29sZF9tYXBdIGFuZCBbbmV3X2tleV0gaXMgaW4gW25ld19tYXBdLCBidXRcbiAgICAgICAgICAgICAgIFtvbGRfa2V5XSBpcyBub3QgaW4gW25ld19tYXBdLiAqKVxuICAgICAgICAgICAgbGV0IG9sZF9yYW5rID1cbiAgICAgICAgICAgICAgcHJvY2VzcyB+b2xkOihTb21lIChvbGRfbWFwLCBvbGRfa2V5LCBTb21lIG9sZF9yYW5rKSkgbmV3X21hcCBvbGRfa2V5XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcHJvY2VzcyB+b2xkOihTb21lIChuZXdfbWFwLCBvbGRfa2V5LCBvbGRfcmFuaykpIG5ld19tYXAgbmV3X2tleVxuICAgICAgICAgICgqIElmIHRoZSBwcmV2aW91cyBrZXkgd2FzIG5vdCBpbiB0aGUgbWFwIG9yIHRoaXMgaXMgdGhlIGZpcnN0IHN0YWJpbGl6YXRpb24sXG4gICAgICAgICAgICAgY29tcHV0ZSB0aGUgcmFuayBmcm9tIHNjcmF0Y2ggKilcbiAgICAgICAgICB8IFNvbWUgKF8sIF8sIE5vbmUpIHwgTm9uZSAtPiBNYXAucmFuayBuZXdfbWFwIG5ld19rZXkpXG4gICAgICBpblxuICAgICAgd2l0aF9vbGQyIG1hcCBrZXkgfmY6cHJvY2VzcylcbiAgOztcblxuICAoKiogUmFuZ2UgbWFwIGJ5IGluZGljZXMgKilcbiAgbGV0IHN1YnJhbmdlX2J5X3JhbmtcbiAgICAgICAgKHR5cGUgayBzdGF0ZV93aXRuZXNzKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwIDogKChrLCBfLCBfKSBNYXAudCwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudClcbiAgICAgICAgKHJhbmdlIDogKGludCBNYXliZV9ib3VuZC50ICogaW50IE1heWJlX2JvdW5kLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnQpXG4gICAgPVxuICAgIGxldCBmaW5kX2tleV9yYW5nZSAocmFuZ2UgOiAoaW50ICogaW50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50KVxuICAgICAgOiAoKGsgKiBrIG9wdGlvbikgb3B0aW9uLCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICA9XG4gICAgICB3aXRoX29sZDIgbWFwIHJhbmdlIH5mOihmdW4gfm9sZCBtYXAgKGZyb20sIHRvXykgLT5cbiAgICAgICAgKCogVGhpcyBmdW5jdGlvbiByZXR1cm5zIG5vIGtleXMsIG9ubHkgYmVnaW4ga2V5LCBvciBiZWdpbiBhbmQgZW5kIGtleXMuXG4gICAgICAgICAgIFRoZXNlIGFyZSB0aGUga2V5cyBhdCBbZnJvbV0gYW5kIFt0b19dIHBvc2l0aW9ucyBpbiB0aGUgbWFwLCBvciBOb25lIGlmIHRoZVxuICAgICAgICAgICBpbmRpY2VzIGFyZSB0b28gYmlnLiBBcyBhbHdheXMgWzAgPD0gZnJvbSAmJiBmcm9tIDw9IHRvX10sIHRoZXJlIGlzIG5vXG4gICAgICAgICAgIHBvc3NpYmlsaXR5IG9mIG9ubHkgW3RvX10gYmVpbmcgYSB2YWxpZCBwb3NpdGlvbi5cbiAgICAgICAgKilcbiAgICAgICAgaWYgSW50LiggPCApIHRvXyBmcm9tIHx8IEludC4oIDwgKSBmcm9tIDBcbiAgICAgICAgdGhlbiByYWlzZV9zIFslbWVzc2FnZSBcIkludmFsaWQgaW5kaWNlc1wiIChmcm9tIDogaW50KSAodG9fIDogaW50KV07XG4gICAgICAgIG1hdGNoIG9sZCB3aXRoXG4gICAgICAgIHwgU29tZSAob2xkX21hcCwgKG9sZF9mcm9tLCBvbGRfdG8pLCBTb21lIChiZWdpbl9rZXksIGVuZF9rZXlfb3B0KSkgLT5cbiAgICAgICAgICBsZXQgZmluZF9vZmZzZXQgPSBmaW5kX29mZnNldCB+Y29tcGFyZTooTWFwLmNvbXBhcmF0b3IgbWFwKS5jb21wYXJlIGluXG4gICAgICAgICAgbGV0IHJhbmdlX29mZnNldF9iZWdpbiA9IGZyb20gLSBvbGRfZnJvbSBpblxuICAgICAgICAgIGxldCByYW5nZV9vZmZzZXRfZW5kID0gdG9fIC0gb2xkX3RvIGluXG4gICAgICAgICAgbGV0IGFkanVzdF9hbmRfb2Zmc2V0IH5ieSBrZXkgPVxuICAgICAgICAgICAgbGV0IGJ5ID0gYnkgKyBpZiBieSA+PSAwICYmIG5vdCAoTWFwLm1lbSBtYXAga2V5KSB0aGVuIDEgZWxzZSAwIGluXG4gICAgICAgICAgICBvZmZzZXQga2V5IG1hcCB+YnlcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIFdlIG9ubHkgY2FyZSBhYm91dCB0aGUga2V5cyBjaGFuZ2luZyBhbmQgbm90IHRoZSBkYXRhLCBzbyBbZGF0YV9lcXVhbF0gaGVyZVxuICAgICAgICAgICAgIGNhbiBiZSBhbHdheXMgdHJ1ZSAqKVxuICAgICAgICAgIGxldCBkaWZmIH5pbml0IH5mID1cbiAgICAgICAgICAgIE1hcC5mb2xkX3N5bW1ldHJpY19kaWZmIH5kYXRhX2VxdWFsOihmdW4gXyBfIC0+IHRydWUpIG9sZF9tYXAgbWFwIH5pbml0IH5mXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmVnaW5fa2V5X29wdCwgZW5kX2tleV9vcHQgPVxuICAgICAgICAgICAgbWF0Y2ggZW5kX2tleV9vcHQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGVuZF9rZXkgLT5cbiAgICAgICAgICAgICAgbGV0IG1hcF9vZmZzZXRfYmVnaW4sIG1hcF9vZmZzZXRfZW5kID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OigwLCAwKSB+ZjooZnVuIChvZmZzZXRfYmVnaW4sIG9mZnNldF9lbmQpIChrZXksIGNoYW5nZSkgLT5cbiAgICAgICAgICAgICAgICAgICggb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2VcbiAgICAgICAgICAgICAgICAgICwgb2Zmc2V0X2VuZCArIGZpbmRfb2Zmc2V0IH5rZXk6ZW5kX2tleSB+Y2hhbmdlZF9rZXk6a2V5IGNoYW5nZSApKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGFkanVzdF9hbmRfb2Zmc2V0IGJlZ2luX2tleSB+Ynk6KG1hcF9vZmZzZXRfYmVnaW4gKyByYW5nZV9vZmZzZXRfYmVnaW4pXG4gICAgICAgICAgICAgICwgYWRqdXN0X2FuZF9vZmZzZXQgZW5kX2tleSB+Ynk6KG1hcF9vZmZzZXRfZW5kICsgcmFuZ2Vfb2Zmc2V0X2VuZCkgKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBtYXBfb2Zmc2V0X2JlZ2luID1cbiAgICAgICAgICAgICAgICBkaWZmIH5pbml0OjAgfmY6KGZ1biBvZmZzZXRfYmVnaW4gKGtleSwgY2hhbmdlKSAtPlxuICAgICAgICAgICAgICAgICAgb2Zmc2V0X2JlZ2luICsgZmluZF9vZmZzZXQgfmtleTpiZWdpbl9rZXkgfmNoYW5nZWRfa2V5OmtleSBjaGFuZ2UpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICggYWRqdXN0X2FuZF9vZmZzZXQgYmVnaW5fa2V5IH5ieToobWFwX29mZnNldF9iZWdpbiArIHJhbmdlX29mZnNldF9iZWdpbilcbiAgICAgICAgICAgICAgLCBudGhfZnJvbV9laXRoZXJfc2lkZSB0b18gbWFwIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGFzc2VydCAoT3B0aW9uLmZvcl9hbGwgfmY6KE1hcC5tZW0gbWFwKSBiZWdpbl9rZXlfb3B0KTtcbiAgICAgICAgICBhc3NlcnQgKE9wdGlvbi5mb3JfYWxsIH5mOihNYXAubWVtIG1hcCkgZW5kX2tleV9vcHQpO1xuICAgICAgICAgIE9wdGlvbi5tYXAgYmVnaW5fa2V5X29wdCB+ZjooZnVuIGJlZ2luX2tleSAtPiBiZWdpbl9rZXksIGVuZF9rZXlfb3B0KVxuICAgICAgICB8IE5vbmUgfCBTb21lIChfLCBfLCBOb25lKSAtPlxuICAgICAgICAgICgqIE9uIGZpcnN0IHJ1biAod2hlbiB3ZSBoYXZlIHRvKSBvciB3aGVuIGJvdGggdGhlIGtleXMgYXJlIG5vbmUsIHJ1biBPKG4pXG4gICAgICAgICAgICAgc2Nhbi4gVGhpcyBpcyBmaW5lIGZvciBrZXlzLWFyZS1ub25lIGNhc2UgYXMgaXQgaGFwcGVucyB3aGVuIHRoZSBwb3NpdGlvbnNcbiAgICAgICAgICAgICBhcmUgcGFzdCBlbmQgb2YgdGhlIG1hcCwgc28gdGhleSBzaG91bGRuJ3QgYmUgdG9vIGZhciBmcm9tIGVuZCBhZnRlciB0aGVcbiAgICAgICAgICAgICBtYXAgY2hhbmdlcywgYW5kIFtmaW5kX2tleV9yYW5nZV9saW5lYXJdIGlzIGZhc3QgaW4gc3VjaCBjYXNlLiAqKVxuICAgICAgICAgIGZpbmRfa2V5X3JhbmdlX2xpbmVhciBtYXAgfmZyb20gfnRvXylcbiAgICBpblxuICAgICgqIEhhbmRsZSBkaWZmZXJlbnQgTWF5YmVfYm91bmQgY2FzZXMgYW5kIGNhbGwgZmluZF9rZXlfcmFuZ2UgaWYgbmVjZXNzYXJ5LiBJdCdzXG4gICAgICAgbmljZXIgdG8gZG8gdGhpcyBoZXJlIGFzIG9wcG9zZWQgdG8gbWFraW5nIGZpbmRfa2V5X3JhbmdlIGV2ZW4gbW9yZSBjb21wbGljYXRlZCAqKVxuICAgIGxldCBvcGVuIEluY3JlbWVudGFsLkxldF9zeW50YXggaW5cbiAgICBsZXQgKCA+Pj4gKSBuZXdfIGJvdW5kID0gTWF5YmVfYm91bmQubWFwIH5mOihmdW4gXyAtPiBuZXdfKSBib3VuZCBpblxuICAgIGxldCByZXR1cm4gPSBJbmNyZW1lbnRhbC5yZXR1cm4gKEluY3JlbWVudGFsLnN0YXRlIG1hcCkgaW5cbiAgICBsZXQga2V5X3JhbmdlID1cbiAgICAgIG1hdGNoJXBhdHRlcm5fYmluZCByYW5nZSB3aXRoXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgTWF5YmVfYm91bmQuVW5ib3VuZGVkIC0+XG4gICAgICAgIHJldHVybiAoU29tZSAoTWF5YmVfYm91bmQuVW5ib3VuZGVkLCBNYXliZV9ib3VuZC5VbmJvdW5kZWQpKVxuICAgICAgfCAoICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYilcbiAgICAgICAgLCAoKE1heWJlX2JvdW5kLkluY2wgdSB8IE1heWJlX2JvdW5kLkV4Y2wgdSkgYXMgdWIpICkgLT5cbiAgICAgICAgbGV0JW1hcCBrZXlfcmFuZ2UgPSBmaW5kX2tleV9yYW5nZSAoSW5jcmVtZW50YWwuYm90aCBsIHUpXG4gICAgICAgIGFuZCBsYiA9IGxiXG4gICAgICAgIGFuZCB1YiA9IHViIGluXG4gICAgICAgIChtYXRjaCBrZXlfcmFuZ2Ugd2l0aFxuICAgICAgICAgfCBTb21lIChiZWdpbl9rZXksIFNvbWUgZW5kX2tleSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgZW5kX2tleSA+Pj4gdWIpXG4gICAgICAgICB8IFNvbWUgKGJlZ2luX2tleSwgTm9uZSkgLT4gU29tZSAoYmVnaW5fa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8ICgoTWF5YmVfYm91bmQuSW5jbCBsIHwgTWF5YmVfYm91bmQuRXhjbCBsKSBhcyBsYiksIE1heWJlX2JvdW5kLlVuYm91bmRlZCAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIGwgbClcbiAgICAgICAgYW5kIGxiID0gbGIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoa2V5ID4+PiBsYiwgVW5ib3VuZGVkKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgICB8IE1heWJlX2JvdW5kLlVuYm91bmRlZCwgKChNYXliZV9ib3VuZC5JbmNsIHUgfCBNYXliZV9ib3VuZC5FeGNsIHUpIGFzIHViKSAtPlxuICAgICAgICBsZXQlbWFwIGtleV9yYW5nZSA9IGZpbmRfa2V5X3JhbmdlIChJbmNyZW1lbnRhbC5ib3RoIHUgdSlcbiAgICAgICAgYW5kIHViID0gdWIgaW5cbiAgICAgICAgKG1hdGNoIGtleV9yYW5nZSB3aXRoXG4gICAgICAgICB8IFNvbWUgKGtleSwgXykgLT4gU29tZSAoVW5ib3VuZGVkLCBrZXkgPj4+IHViKVxuICAgICAgICAgfCBOb25lIC0+IE5vbmUpXG4gICAgaW5cbiAgICBzdWJyYW5nZSA/ZGF0YV9lcXVhbCBtYXAga2V5X3JhbmdlXG4gIDs7XG5cbiAgbGV0IHRyYW5zcG9zZVxuICAgIDogdHlwZSBrMSBrMiB2IGsxX2NtcCBrMl9jbXAgc3RhdGVfd2l0bmVzcy5cbiAgICAgID9kYXRhX2VxdWFsOih2IC0+IHYgLT4gYm9vbClcbiAgICAgIC0+IChrMiwgazJfY21wKSBNYXAuY29tcGFyYXRvclxuICAgICAgLT4gKChrMSwgKGsyLCB2LCBrMl9jbXApIE1hcC50LCBrMV9jbXApIE1hcC50LCBzdGF0ZV93aXRuZXNzKSBJbmNyZW1lbnRhbC50XG4gICAgICAtPiAoKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnQsIHN0YXRlX3dpdG5lc3MpIEluY3JlbWVudGFsLnRcbiAgICA9XG4gICAgZnVuID8oZGF0YV9lcXVhbCA9IHBoeXNfZXF1YWwpIGsyX2NvbXBhcmF0b3IgbSAtPlxuICAgICAgd2l0aF9jb21wYXJhdG9yIG0gKGZ1biBrMV9jb21wYXJhdG9yIC0+XG4gICAgICAgIGxldCB1cGRhdGVcbiAgICAgICAgICA6ICBrZXk6azEgLT4gb2xkX2RhdGE6KGsyLCB2LCBrMl9jbXApIE1hcC50IC0+IG5ld19kYXRhOihrMiwgdiwgazJfY21wKSBNYXAudFxuICAgICAgICAgICAgLT4gKGsyLCAoazEsIHYsIGsxX2NtcCkgTWFwLnQsIGsyX2NtcCkgTWFwLnRcbiAgICAgICAgICAgIC0+IChrMiwgKGsxLCB2LCBrMV9jbXApIE1hcC50LCBrMl9jbXApIE1hcC50XG4gICAgICAgICAgPVxuICAgICAgICAgIGZ1biB+a2V5OmsxIH5vbGRfZGF0YSB+bmV3X2RhdGEgYWNjIC0+XG4gICAgICAgICAgICBNYXAuZm9sZF9zeW1tZXRyaWNfZGlmZlxuICAgICAgICAgICAgICBvbGRfZGF0YVxuICAgICAgICAgICAgICBuZXdfZGF0YVxuICAgICAgICAgICAgICB+ZGF0YV9lcXVhbFxuICAgICAgICAgICAgICB+aW5pdDphY2NcbiAgICAgICAgICAgICAgfmY6KGZ1biBhY2MgKGsyLCBkaWZmKSAtPlxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkaWZmIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgYExlZnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGBSaWdodCB4IHwgYFVuZXF1YWwgKF8sIHgpIC0+IFNvbWUgeFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTWFwLmNoYW5nZSBhY2MgazIgfmY6KGZ1biBhY2NfaW5uZXIgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBhY2NfaW5uZXIgPVxuICAgICAgICAgICAgICAgICAgICBNYXAuY2hhbmdlXG4gICAgICAgICAgICAgICAgICAgICAgKE9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19pbm5lclxuICAgICAgICAgICAgICAgICAgICAgICAgIH5kZWZhdWx0OihNYXAuVXNpbmdfY29tcGFyYXRvci5lbXB0eSB+Y29tcGFyYXRvcjprMV9jb21wYXJhdG9yKSlcbiAgICAgICAgICAgICAgICAgICAgICBrMVxuICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW4gXyAtPiB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBNYXAuaXNfZW1wdHkgYWNjX2lubmVyIHRoZW4gTm9uZSBlbHNlIFNvbWUgYWNjX2lubmVyKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFkZCB+a2V5IH5kYXRhID1cbiAgICAgICAgICB1cGRhdGUgfmtleSB+b2xkX2RhdGE6KE1hcC5lbXB0eSBrMl9jb21wYXJhdG9yKSB+bmV3X2RhdGE6ZGF0YVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtb3ZlIH5rZXkgfmRhdGEgPVxuICAgICAgICAgIHVwZGF0ZSB+a2V5IH5vbGRfZGF0YTpkYXRhIH5uZXdfZGF0YTooTWFwLmVtcHR5IGsyX2NvbXBhcmF0b3IpXG4gICAgICAgIGluXG4gICAgICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICAgICAgbVxuICAgICAgICAgIH5pbml0OihNYXAuZW1wdHkgazJfY29tcGFyYXRvcilcbiAgICAgICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICAgICAgfnVwZGF0ZVxuICAgICAgICAgIH5hZGRcbiAgICAgICAgICB+cmVtb3ZlKVxuICA7O1xuXG4gIGxldCBjb2xsYXBzZV9ieVxuICAgICAgICAodHlwZSBvdXRlcl9rZXkgb3V0ZXJfY21wIGlubmVyX2tleSBpbm5lcl9jbXAgY29tYmluZWRfa2V5IGNvbWJpbmVkX2NtcClcbiAgICAgICAgP2RhdGFfZXF1YWxcbiAgICAgICAgKG1hcF9pbmNyIDpcbiAgICAgICAgICAgKChvdXRlcl9rZXksIChpbm5lcl9rZXksIF8sIGlubmVyX2NtcCkgTWFwLnQsIG91dGVyX2NtcCkgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIH4obWVyZ2Vfa2V5cyA6IG91dGVyX2tleSAtPiBpbm5lcl9rZXkgLT4gY29tYmluZWRfa2V5KVxuICAgICAgICB+KGNvbXBhcmF0b3IgOiAoY29tYmluZWRfa2V5LCBjb21iaW5lZF9jbXApIE1hcC5jb21wYXJhdG9yKVxuICAgID1cbiAgICB1bm9yZGVyZWRfZm9sZF9uZXN0ZWRfbWFwc1xuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDooTWFwLmVtcHR5IGNvbXBhcmF0b3IpXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+dXBkYXRlOihmdW4gfm91dGVyX2tleSB+aW5uZXJfa2V5IH5vbGRfZGF0YTpfIH5uZXdfZGF0YSBhY2MgLT5cbiAgICAgICAgTWFwLnNldCBhY2MgfmtleToobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSB+ZGF0YTpuZXdfZGF0YSlcbiAgICAgIH5hZGQ6KGZ1biB+b3V0ZXJfa2V5IH5pbm5lcl9rZXkgfmRhdGEgYWNjIC0+XG4gICAgICAgIE1hcC5hZGRfZXhuIGFjYyB+a2V5OihtZXJnZV9rZXlzIG91dGVyX2tleSBpbm5lcl9rZXkpIH5kYXRhKVxuICAgICAgfnJlbW92ZTooZnVuIH5vdXRlcl9rZXkgfmlubmVyX2tleSB+ZGF0YTpfIGFjYyAtPlxuICAgICAgICBNYXAucmVtb3ZlIGFjYyAobWVyZ2Vfa2V5cyBvdXRlcl9rZXkgaW5uZXJfa2V5KSlcbiAgOztcblxuICBsZXQgY29sbGFwc2VcbiAgICAgICAgKHR5cGUgb3V0ZXJfa2V5IG91dGVyX2NtcCBpbm5lcl9rZXkgaW5uZXJfY21wKVxuICAgICAgICA/ZGF0YV9lcXVhbFxuICAgICAgICAobWFwX2luY3IgOlxuICAgICAgICAgICAoKG91dGVyX2tleSwgKGlubmVyX2tleSwgXywgaW5uZXJfY21wKSBNYXAudCwgb3V0ZXJfY21wKSBNYXAudCwgXykgSW5jcmVtZW50YWwudClcbiAgICAgICAgfmNvbXBhcmF0b3I6KGlubmVyX2NvbXBhcmF0b3IgOiAoaW5uZXJfa2V5LCBpbm5lcl9jbXApIE1hcC5jb21wYXJhdG9yKVxuICAgID1cbiAgICB3aXRoX2NvbXBhcmF0b3IgbWFwX2luY3IgKGZ1biBvdXRlcl9jb21wYXJhdG9yIC0+XG4gICAgICBsZXQgbW9kdWxlIENtcCA9IHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBvdXRlcl9rZXkgKiBpbm5lcl9rZXlcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSAob3V0ZXJfY21wLCBpbm5lcl9jbXApIFR1cGxlMi5jb21wYXJhdG9yX3dpdG5lc3NcblxuICAgICAgICBsZXQgY29tcGFyYXRvciA9XG4gICAgICAgICAgbGV0IGlubmVyX2NvbXBhcmF0b3IgPVxuICAgICAgICAgICAgbGV0IG1vZHVsZSBNID0gKHZhbCBpbm5lcl9jb21wYXJhdG9yKSBpblxuICAgICAgICAgICAgTS5jb21wYXJhdG9yXG4gICAgICAgICAgaW5cbiAgICAgICAgICBUdXBsZTIuY29tcGFyYXRvciBvdXRlcl9jb21wYXJhdG9yIGlubmVyX2NvbXBhcmF0b3JcbiAgICAgICAgOztcbiAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGNvbGxhcHNlX2J5XG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIG1hcF9pbmNyXG4gICAgICAgIH5tZXJnZV9rZXlzOlR1cGxlMi5jcmVhdGVcbiAgICAgICAgfmNvbXBhcmF0b3I6KG1vZHVsZSBDbXApKVxuICA7O1xuXG4gIGxldCBleHBhbmQgP2RhdGFfZXF1YWwgbWFwX2luY3Igfm91dGVyX2NvbXBhcmF0b3IgfmlubmVyX2NvbXBhcmF0b3IgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0OihNYXAuZW1wdHkgb3V0ZXJfY29tcGFyYXRvcilcbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH51cGRhdGU6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfm9sZF9kYXRhOl8gfm5ld19kYXRhIGFjYyAtPlxuICAgICAgICBNYXAudXBkYXRlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE1hcC5zaW5nbGV0b24gaW5uZXJfY29tcGFyYXRvciBpbm5lcl9rZXkgbmV3X2RhdGFcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+IE1hcC5zZXQgbWFwIH5rZXk6aW5uZXJfa2V5IH5kYXRhOm5ld19kYXRhKSlcbiAgICAgIH5hZGQ6KGZ1biB+a2V5OihvdXRlcl9rZXksIGlubmVyX2tleSkgfmRhdGEgYWNjIC0+XG4gICAgICAgIE1hcC51cGRhdGUgYWNjIG91dGVyX2tleSB+ZjooZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gTWFwLnNpbmdsZXRvbiBpbm5lcl9jb21wYXJhdG9yIGlubmVyX2tleSBkYXRhXG4gICAgICAgICAgfCBTb21lIG1hcCAtPiBNYXAuYWRkX2V4biBtYXAgfmtleTppbm5lcl9rZXkgfmRhdGEpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6KG91dGVyX2tleSwgaW5uZXJfa2V5KSB+ZGF0YTpfIGFjYyAtPlxuICAgICAgICBNYXAuY2hhbmdlIGFjYyBvdXRlcl9rZXkgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgbWFwIC0+XG4gICAgICAgICAgICBsZXQgbWFwID0gTWFwLnJlbW92ZSBtYXAgaW5uZXJfa2V5IGluXG4gICAgICAgICAgICBPcHRpb24uc29tZV9pZiAobm90IChNYXAuaXNfZW1wdHkgbWFwKSkgbWFwKSlcbiAgOztcblxuICBsZXQgY291bnRpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICB1bm9yZGVyZWRfZm9sZFxuICAgICAgP2RhdGFfZXF1YWxcbiAgICAgIG1hcF9pbmNyXG4gICAgICB+aW5pdDowXG4gICAgICB+cmV2ZXJ0X3RvX2luaXRfd2hlbl9lbXB0eTp0cnVlXG4gICAgICB+YWRkOihmdW4gfmtleSB+ZGF0YSBjb3VudCAtPiBpZiBmIH5rZXkgfmRhdGEgdGhlbiBjb3VudCArIDEgZWxzZSBjb3VudClcbiAgICAgIH5yZW1vdmU6KGZ1biB+a2V5IH5kYXRhIGNvdW50IC0+IGlmIGYgfmtleSB+ZGF0YSB0aGVuIGNvdW50IC0gMSBlbHNlIGNvdW50KVxuICA7O1xuXG4gIGxldCBjb3VudCA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgY291bnRpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgZXhpc3RzaSA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgSW5jcmVtZW50YWwubWFwIChjb3VudGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmYpIH5mOihmdW4gY291bnQgLT4gY291bnQgPD4gMClcbiAgOztcblxuICBsZXQgZXhpc3RzID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBleGlzdHNpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mOihmdW4gfmtleTpfIH5kYXRhIC0+IGYgZGF0YSlcbiAgOztcblxuICBsZXQgc3VtXG4gICAgICAgICh0eXBlIHUpXG4gICAgICAgID9kYXRhX2VxdWFsXG4gICAgICAgIChtYXBfaW5jciA6ICgoXywgXywgXykgTWFwLnQsIF8pIEluY3JlbWVudGFsLnQpXG4gICAgICAgIChtb2R1bGUgR3JvdXAgOiBBYnN0cmFjdF9hbGdlYnJhLkNvbW11dGF0aXZlX2dyb3VwLldpdGhvdXRfc2V4cCB3aXRoIHR5cGUgdCA9IHUpXG4gICAgICAgIH5mXG4gICAgPVxuICAgIHVub3JkZXJlZF9mb2xkXG4gICAgICA/ZGF0YV9lcXVhbFxuICAgICAgbWFwX2luY3JcbiAgICAgIH5pbml0Okdyb3VwLnplcm9cbiAgICAgIH5yZXZlcnRfdG9faW5pdF93aGVuX2VtcHR5OnRydWVcbiAgICAgIH5hZGQ6KGZ1biB+a2V5Ol8gfmRhdGE6diBhY2MgLT4gR3JvdXAuKCArICkgYWNjIChmIHYpKVxuICAgICAgfnJlbW92ZTooZnVuIH5rZXk6XyB+ZGF0YTp2IGFjYyAtPiBHcm91cC4oIC0gKSBhY2MgKGYgdikpXG4gIDs7XG5cbiAgbGV0IGZvcl9hbGxpID9kYXRhX2VxdWFsIG1hcF9pbmNyIH5mID1cbiAgICBJbmNyZW1lbnRhbC5tYXBcbiAgICAgIChjb3VudGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5IH5kYXRhIC0+IG5vdCAoZiB+a2V5IH5kYXRhKSkpXG4gICAgICB+ZjooZnVuIGNvdW50IC0+IGNvdW50ID0gMClcbiAgOztcblxuICBsZXQgZm9yX2FsbCA/ZGF0YV9lcXVhbCBtYXBfaW5jciB+ZiA9XG4gICAgZm9yX2FsbGkgP2RhdGFfZXF1YWwgbWFwX2luY3IgfmY6KGZ1biB+a2V5Ol8gfmRhdGEgLT4gZiBkYXRhKVxuICA7O1xuXG4gIG1vZHVsZSBGb3JfdGVzdGluZyA9IHN0cnVjdFxuICAgIGxldCBmaW5kX2tleV9yYW5nZV9saW5lYXIgPSBmaW5kX2tleV9yYW5nZV9saW5lYXJcbiAgZW5kXG5cbiAgbW9kdWxlIExvb2t1cCA9IHN0cnVjdFxuICAgIHR5cGUgKCd2LCAndykgZW50cnkgPVxuICAgICAgeyBtdXRhYmxlIHNhdmVkX3ZhbHVlIDogJ3Ygb3B0aW9uXG4gICAgICA7IG5vZGUgOiAoJ3Ygb3B0aW9uLCAndykgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUudFxuICAgICAgfVxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wLCAndykgdCA9XG4gICAgICB7IG11dGFibGUgc2F2ZWRfbWFwIDogKCdrLCAndiwgJ2NtcCkgTWFwLnRcbiAgICAgICgqIFdlIG1heSBoYXZlIG11bHRpcGxlIGVudHJpZXMgcGVyIGtleSBpZiBub2RlcyBiZWNvbWUgbmVjZXNzYXJ5IGFnYWluIGFmdGVyIGJlaW5nXG4gICAgICAgICByZW1vdmVkLiAqKVxuICAgICAgOyBtdXRhYmxlIGxvb2t1cF9lbnRyaWVzIDogKCdrLCAoJ3YsICd3KSBlbnRyeSBsaXN0LCAnY21wKSBNYXAudFxuICAgICAgOyB1cGRhdGVyX25vZGUgOiAodW5pdCwgJ3cpIEluY3JlbWVudGFsLnRcbiAgICAgIDsgc2NvcGUgOiAndyBJbmNyZW1lbnRhbC5TY29wZS50XG4gICAgICB9XG5cbiAgICBtb2R1bGUgTSAoSyA6IHNpZ1xuICAgICAgICB0eXBlIHRcbiAgICAgICAgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3NcbiAgICAgIGVuZCkgPVxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgKCd2LCAndykgdCA9IChLLnQsICd2LCBLLmNvbXBhcmF0b3Jfd2l0bmVzcywgJ3cpIHRcbiAgICBlbmRcblxuICAgIGxldCBjcmVhdGUgPyhkYXRhX2VxdWFsID0gcGh5c19lcXVhbCkgaW5wdXRfbWFwIH5jb21wYXJhdG9yID1cbiAgICAgIGxldCByZWMgc2VsZiA9XG4gICAgICAgIGxhenlcbiAgICAgICAgICAobGV0IHVwZGF0ZXJfbm9kZSA9XG4gICAgICAgICAgICAgSW5jcmVtZW50YWwubWFwIGlucHV0X21hcCB+ZjooZnVuIGlucHV0X21hcCAtPlxuICAgICAgICAgICAgICAgbGV0IChsYXp5IHNlbGYpID0gc2VsZiBpblxuICAgICAgICAgICAgICAgTWFwLmZvbGRfc3ltbWV0cmljX2RpZmZcbiAgICAgICAgICAgICAgICAgc2VsZi5zYXZlZF9tYXBcbiAgICAgICAgICAgICAgICAgaW5wdXRfbWFwXG4gICAgICAgICAgICAgICAgIH5kYXRhX2VxdWFsXG4gICAgICAgICAgICAgICAgIH5pbml0OigpXG4gICAgICAgICAgICAgICAgIH5mOihmdW4gKCkgKGtleSwgY2hhbmdlZF92YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgZW50cmllcyA9IE1hcC5maW5kX211bHRpIHNlbGYubG9va3VwX2VudHJpZXMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgTGlzdC5pdGVyIGVudHJpZXMgfmY6KGZ1biBlbnRyeSAtPlxuICAgICAgICAgICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgIDwtIChtYXRjaCBjaGFuZ2VkX3ZhbHVlIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBgTGVmdCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgICAgICAgfCBgUmlnaHQgbmV3X3ZhbHVlIHwgYFVuZXF1YWwgKF8sIG5ld192YWx1ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIG5ld192YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5tYWtlX3N0YWxlIGVudHJ5Lm5vZGUpKTtcbiAgICAgICAgICAgICAgIHNlbGYuc2F2ZWRfbWFwIDwtIGlucHV0X21hcClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGVtcHR5X21hcCA9IE1hcC5Vc2luZ19jb21wYXJhdG9yLmVtcHR5IH5jb21wYXJhdG9yIGluXG4gICAgICAgICAgIHsgc2F2ZWRfbWFwID0gZW1wdHlfbWFwXG4gICAgICAgICAgIDsgbG9va3VwX2VudHJpZXMgPSBlbXB0eV9tYXBcbiAgICAgICAgICAgOyB1cGRhdGVyX25vZGVcbiAgICAgICAgICAgOyBzY29wZSA9IEluY3JlbWVudGFsLlNjb3BlLmN1cnJlbnQgKEluY3JlbWVudGFsLnN0YXRlIGlucHV0X21hcCkgKClcbiAgICAgICAgICAgfSlcbiAgICAgIGluXG4gICAgICBMYXp5LmZvcmNlIHNlbGZcbiAgICA7O1xuXG4gICAgbGV0W0Bjb2xkXSBzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkgfmlzX25vd19vYnNlcnZhYmxlID1cbiAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgbGV0IGN1cnJlbnRfZW50cmllcyA9IE1hcC5maW5kX211bHRpIHQubG9va3VwX2VudHJpZXMga2V5IGluXG4gICAgICBsZXQgaXNfbGlua2VkID0gTGlzdC5leGlzdHMgY3VycmVudF9lbnRyaWVzIH5mOihwaHlzX2VxdWFsIGVudHJ5KSBpblxuICAgICAgaWYgQm9vbC5lcXVhbCBpc19saW5rZWQgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW4gKClcbiAgICAgIGVsc2UgaWYgaXNfbm93X29ic2VydmFibGVcbiAgICAgIHRoZW5cbiAgICAgICAgdC5sb29rdXBfZW50cmllc1xuICAgICAgICA8LSBNYXAudXBkYXRlIHQubG9va3VwX2VudHJpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSAob3RoZXJfZW50cnkgOjogXyBhcyBvdGhlcl9lbnRyaWVzKSAtPlxuICAgICAgICAgICAgKCogVXBkYXRlIHRoaXMgZW50cnkncyB2YWx1ZSB0byBiZSBjdXJyZW50LiAqKVxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gb3RoZXJfZW50cnkuc2F2ZWRfdmFsdWU7XG4gICAgICAgICAgICBlbnRyeSA6OiBvdGhlcl9lbnRyaWVzXG4gICAgICAgICAgfCBOb25lIHwgU29tZSBbXSAtPlxuICAgICAgICAgICAgZW50cnkuc2F2ZWRfdmFsdWUgPC0gTWFwLmZpbmQgdC5zYXZlZF9tYXAga2V5O1xuICAgICAgICAgICAgWyBlbnRyeSBdKVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBuZXdfZW50cmllcyA9XG4gICAgICAgICAgTGlzdC5maWx0ZXIgY3VycmVudF9lbnRyaWVzIH5mOihmdW4geCAtPiBub3QgKHBoeXNfZXF1YWwgZW50cnkgeCkpXG4gICAgICAgIGluXG4gICAgICAgIHQubG9va3VwX2VudHJpZXNcbiAgICAgICAgPC0gKGlmIExpc3QuaXNfZW1wdHkgbmV3X2VudHJpZXNcbiAgICAgICAgICAgIHRoZW4gTWFwLnJlbW92ZSB0Lmxvb2t1cF9lbnRyaWVzIGtleVxuICAgICAgICAgICAgZWxzZSBNYXAuc2V0IHQubG9va3VwX2VudHJpZXMgfmtleSB+ZGF0YTpuZXdfZW50cmllcykpXG4gICAgOztcblxuICAgIGxldFtAY29sZF0gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5ID1cbiAgICAgIGxldCBpbmNyZW1lbnRhbF9zdGF0ZSA9IEluY3JlbWVudGFsLnN0YXRlIHQudXBkYXRlcl9ub2RlIGluXG4gICAgICBJbmNyZW1lbnRhbC5TY29wZS53aXRoaW4gaW5jcmVtZW50YWxfc3RhdGUgdC5zY29wZSB+ZjooZnVuICgpIC0+XG4gICAgICAgIGxldCByZWMgZW50cnkgPVxuICAgICAgICAgIGxhenlcbiAgICAgICAgICAgIHsgc2F2ZWRfdmFsdWUgPSBNYXAuZmluZCB0LnNhdmVkX21hcCBrZXlcbiAgICAgICAgICAgIDsgbm9kZSA9XG4gICAgICAgICAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUuY3JlYXRlXG4gICAgICAgICAgICAgICAgICBpbmNyZW1lbnRhbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgKGZ1biAoKSAtPiAoZm9yY2UgZW50cnkpLnNhdmVkX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihzbG93X3BhdGhfbGlua19lbnRyeSB0IGVudHJ5IH5rZXkpXG4gICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCAobGF6eSBlbnRyeSkgPSBlbnRyeSBpblxuICAgICAgICBJbmNyZW1lbnRhbC5FeHBlcnQuTm9kZS5hZGRfZGVwZW5kZW5jeVxuICAgICAgICAgIGVudHJ5Lm5vZGVcbiAgICAgICAgICAoSW5jcmVtZW50YWwuRXhwZXJ0LkRlcGVuZGVuY3kuY3JlYXRlIHQudXBkYXRlcl9ub2RlKTtcbiAgICAgICAgSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggZW50cnkubm9kZSlcbiAgICA7O1xuXG4gICAgbGV0IGZpbmQgdCBrZXkgPVxuICAgICAgbWF0Y2ggTWFwLmZpbmRfbXVsdGkgdC5sb29rdXBfZW50cmllcyBrZXkgd2l0aFxuICAgICAgfCBlbnRyeSA6OiBfIC0+IEluY3JlbWVudGFsLkV4cGVydC5Ob2RlLndhdGNoIGVudHJ5Lm5vZGVcbiAgICAgIHwgW10gLT4gc2xvd19wYXRoX2NyZWF0ZV9ub2RlIHQga2V5XG4gICAgOztcblxuICAgIG1vZHVsZSBGb3JfZGVidWcgPSBzdHJ1Y3RcbiAgICAgIGxldFtAY29sZF0gc2V4cF9vZl9lbnRyeSBzZXhwX29mX3ZhbHVlIGVudHJ5ID1cbiAgICAgICAgbGV0IHsgc2F2ZWRfdmFsdWU7IG5vZGUgfSA9IGVudHJ5IGluXG4gICAgICAgIGxldCBub2RlID0gSW5jcmVtZW50YWwuRXhwZXJ0Lk5vZGUud2F0Y2ggbm9kZSBpblxuICAgICAgICBbJXNleHBcbiAgICAgICAgICB7IHNhdmVkX3ZhbHVlIDogdmFsdWUgb3B0aW9uXG4gICAgICAgICAgOyBub2RlX2luZm8gPSAoSW5jcmVtZW50YWwudXNlcl9pbmZvIG5vZGUgOiAoSW5mby50IG9wdGlvbltAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfY29uc3QgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKEluY3JlbWVudGFsLmlzX2NvbnN0IG5vZGUpICgpIDogKHVuaXQgb3B0aW9uW0BzZXhwLm9wdGlvbl0pKVxuICAgICAgICAgIDsgbm9kZV9pc19pbnZhbGlkID1cbiAgICAgICAgICAgICAgKE9wdGlvbi5zb21lX2lmIChub3QgKEluY3JlbWVudGFsLmlzX3ZhbGlkIG5vZGUpKSAoKSA6ICh1bml0IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtAc2V4cC5vcHRpb25dKSlcbiAgICAgICAgICA7IG5vZGVfaXNfdW5uZWNlc3NhcnkgPVxuICAgICAgICAgICAgICAoT3B0aW9uLnNvbWVfaWYgKG5vdCAoSW5jcmVtZW50YWwuaXNfbmVjZXNzYXJ5IG5vZGUpKSAoKSA6ICh1bml0IG9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQHNleHAub3B0aW9uXSkpXG4gICAgICAgICAgfV1cbiAgICAgIDs7XG5cbiAgICAgIGxldFtAY29sZF0gc2V4cF9vZl90IHNleHBfb2Zfa2V5IHNleHBfb2ZfdmFsdWUgdCA9XG4gICAgICAgIGxldCBpbmZvX3Blcl9rZXkgPVxuICAgICAgICAgIE1hcC5tZXJnZSB0LnNhdmVkX21hcCB0Lmxvb2t1cF9lbnRyaWVzIH5mOihmdW4gfmtleSBkYXRhIC0+XG4gICAgICAgICAgICBsZXQgYWN0dWFsX3ZhbHVlLCBlbnRyaWVzID1cbiAgICAgICAgICAgICAgbWF0Y2ggZGF0YSB3aXRoXG4gICAgICAgICAgICAgIHwgYExlZnQgeCAtPiBTb21lIHgsIFtdXG4gICAgICAgICAgICAgIHwgYFJpZ2h0IHkgLT4gTm9uZSwgeVxuICAgICAgICAgICAgICB8IGBCb3RoICh4LCB5KSAtPiBTb21lIHgsIHlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgIFslc2V4cFxuICAgICAgICAgICAgICAgIHsga2V5IDoga2V5XG4gICAgICAgICAgICAgICAgOyBhY3R1YWxfdmFsdWUgOiAodmFsdWUgb3B0aW9uW0BzZXhwLm9wdGlvbl0pXG4gICAgICAgICAgICAgICAgOyBlbnRyaWVzIDogdmFsdWUgZW50cnkgbGlzdFxuICAgICAgICAgICAgICAgIH1dKVxuICAgICAgICBpblxuICAgICAgICBTZXhwLkxpc3QgKE1hcC5kYXRhIGluZm9fcGVyX2tleSlcbiAgICAgIDs7XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdHlwZSBzdGF0ZV93aXRuZXNzXG5cbiAgaW5jbHVkZVxuICAgIFNfZ2VuXG4gICAgd2l0aCB0eXBlICdhIEluY3IudCA9ICgnYSwgc3RhdGVfd2l0bmVzcykgSW5jcmVtZW50YWwudFxuICAgICBhbmQgdHlwZSAnYSBJbmNyLkN1dG9mZi50ID0gJ2EgSW5jcmVtZW50YWwuQ3V0b2ZmLnRcbiAgICAgYW5kIHR5cGUgKCdrLCAndiwgJ2NtcCkgTG9va3VwLnQgPSAoJ2ssICd2LCAnY21wLCBzdGF0ZV93aXRuZXNzKSBHZW5lcmljLkxvb2t1cC50XG5lbmRcblxubW9kdWxlIE1ha2UgKEluY3IgOiBJbmNyZW1lbnRhbC5TKSA9IHN0cnVjdFxuICBpbmNsdWRlIEdlbmVyaWNcblxuICBsZXQgZmxhdHRlbiB4ID0gZmxhdHRlbiBJbmNyLlN0YXRlLnQgeFxuXG4gIG1vZHVsZSBMb29rdXAgPSBzdHJ1Y3RcbiAgICBpbmNsdWRlIExvb2t1cFxuXG4gICAgdHlwZSAoJ2ssICd2LCAnY21wKSB0ID0gKCdrLCAndiwgJ2NtcCwgSW5jci5zdGF0ZV93aXRuZXNzKSBMb29rdXAudFxuXG4gICAgbW9kdWxlIE0gKEsgOiBzaWdcbiAgICAgICAgdHlwZSB0XG4gICAgICAgIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzXG4gICAgICBlbmQpIDogc2lnXG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIG5vbnJlYyAndiB0ID0gKEsudCwgJ3YsIEsuY29tcGFyYXRvcl93aXRuZXNzKSB0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbmluY2x1ZGUgR2VuZXJpY1xuIiwib3BlbiBDb3JlXG5cbm1vZHVsZSBNYWtlIChJbmNyIDogSW5jcmVtZW50YWwuU19nZW4pID0gc3RydWN0XG4gIG1vZHVsZSBFID0gSW5jci5FeHBlcnRcblxuICAoKiBIYXNodGJsIHN0YXJ0cyBvdXQgYXQgYSByaWRpY3Vsb3VzIHNpemUgb2YgMTI4LiBUaGlzIGlzIGEgbW9yZSByZWFzb25hYmxlIG51bWJlclxuICAgICBvZiBiaW5zIHRvIGhhdmUuICopXG4gIGxldCBoYXNodGJsX3NpemUgPSAxMFxuXG4gICgqKiBbc2V0dXBfZ2VuZXJhdG9yXSBzZXRzIHVwIHRoZSBzdGFnZWQgY29udmVyc2lvbi5cblxuICAgICAgW2hhc2hhYmxlXSBpcyB1c2VkIHRvIGJ1aWxkIGEgdGFibGUgb2YgbmVjZXNzYXJ5IGRlcGVuZGVuY2llcy4gV2UgZHJvcCB1bm5lY2Vzc2FyeVxuICAgICAgZGVwZW5kZW5jaWVzIHRvIGFsbG93IHRoZW0gdG8gYmUgY29sbGVjdGVkLlxuXG4gICAgICBbY29tcHV0ZV9vdXRwdXQga2V5XSByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgb3V0cHV0IG5vZGUgY29ycmVzcG9uZGluZyB0byBba2V5XS5cbiAgICAgIFtjb21wdXRlX291dHB1dF0gaXMgY2xvc2VkIG92ZXIgdGhlIG11dGFibGUgc3RhdGUgZGV0ZXJtaW5pbmcgdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIHRoZSBzZWxlY3RvcidzIGlucHV0LlxuXG4gICAgICBbbWFrZV9pbnB1dF9ub2RlXSBtYWtlcyBzdXJlIHRoYXQgd2hlbiB0aGUgbXV0YWJsZSBzdGF0ZSBpbnNpZGUgW2NvbXB1dGVfb3V0cHV0XSBpc1xuICAgICAgdXBkYXRlZCwgdGhlIGNvcnJlc3BvbmRpbmcgbm9kZXMgaW4gdGhlIFtuZWNlc3NhcnlfZGVwZW5kZW5jaWVzXSB0YWJsZSBhcmUgbWFkZVxuICAgICAgc3RhbGUuICAqKVxuICBsZXQgc2V0dXBfZ2VuZXJhdG9yXG4gICAgICAgIChoYXNoYWJsZSA6ICdhIEhhc2h0YmxfaW50Zi5IYXNoYWJsZS50KVxuICAgICAgICB+KGNvbXB1dGVfb3V0cHV0IDogJ2EgLT4gJ2IpXG4gICAgICAgIH4obWFrZV9pbnB1dF9ub2RlIDogbWFrZV9rZXlfc3RhbGU6KCdhIC0+IHVuaXQpIC0+IHVuaXQgSW5jci50KVxuICAgIDogKCdhIC0+ICdiIEluY3IudCkgU3RhZ2VkLnRcbiAgICA9XG4gICAgbGV0IG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IChpbnB1dF9ub2RlIDogdW5pdCBJbmNyLnQpID1cbiAgICAgIGxldCBtYWtlX2tleV9zdGFsZSBrZXkgPVxuICAgICAgICBIYXNodGJsLmZpbmQgbmVjZXNzYXJ5X2RlcGVuZGVuY2llcyBrZXlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlIH5kZWZhdWx0OltdXG4gICAgICAgIHw+IExpc3QuaXRlciB+ZjpFLk5vZGUubWFrZV9zdGFsZVxuICAgICAgaW5cbiAgICAgIG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGVcbiAgICBpblxuICAgICgqIFNldCB0aGUgY3V0b2ZmIHNvIHRoYXQgd2UgbmV2ZXIgcGFzcyBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIHVwZGF0ZSB0byB0aGUgbm9kZXMuIFdlXG4gICAgICAgd2FudCBldmVyeXRoaW5nIHRvIGdvIHRocm91Z2ggW21ha2Vfa2V5X3N0YWxlXSAqKVxuICAgIEluY3Iuc2V0X2N1dG9mZiBpbnB1dF9ub2RlIEluY3IuQ3V0b2ZmLmFsd2F5cztcbiAgICBzdGFnZSAoZnVuIGtleSAtPlxuICAgICAgbGV0IGlucHV0X2RlcCA9IEUuRGVwZW5kZW5jeS5jcmVhdGUgaW5wdXRfbm9kZSBpblxuICAgICAgbGV0IHJlYyBvdXRwdXRfbm9kZSA9IGxhenkgKFxuICAgICAgICBFLk5vZGUuY3JlYXRlXG4gICAgICAgICAgKGZ1biAoKSAtPiBjb21wdXRlX291dHB1dCBrZXkpXG4gICAgICAgICAgfm9uX29ic2VydmFiaWxpdHlfY2hhbmdlOihmdW4gfmlzX25vd19vYnNlcnZhYmxlIC0+XG4gICAgICAgICAgICBpZiBpc19ub3dfb2JzZXJ2YWJsZSB0aGVuXG4gICAgICAgICAgICAgIEhhc2h0YmwuYWRkX211bHRpIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMgfmtleSB+ZGF0YTooZm9yY2Ugb3V0cHV0X25vZGUpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEhhc2h0YmwuY2hhbmdlIG5lY2Vzc2FyeV9kZXBlbmRlbmNpZXMga2V5IH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICAgICAgICAgIG1hdGNoIExpc3QuZmlsdGVyIGwgfmY6KEZuLm5vbiAocGh5c19lcXVhbCAoZm9yY2Ugb3V0cHV0X25vZGUpKSkgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IGwnIC0+IFNvbWUgbCdcbiAgICAgICAgICAgICAgKSkpXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dF9ub2RlID0gZm9yY2Ugb3V0cHV0X25vZGUgaW5cbiAgICAgIEUuTm9kZS5hZGRfZGVwZW5kZW5jeSBvdXRwdXRfbm9kZSBpbnB1dF9kZXA7XG4gICAgICBFLk5vZGUud2F0Y2ggb3V0cHV0X25vZGVcbiAgICApXG5cbiAgKCoqIFRoaXMgY3JlYXRlcyBhIHVuaXQgaW5jcmVtZW50YWwgdGhhdCBmaXJlcyB3aGVuZXZlciB0aGUgaW5wdXQgaW5jcmVtZW50YWxcbiAgICAgIGZpcmVzLiBXaGVuIHRoYXQgb2NjdXJzLCBpdCB1cGRhdGVzIFtzZWxlY3RlZF0gdG8gbWF0Y2ggdGhlIGN1cnJlbnQgdmFsdWUgb2ZcbiAgICAgIFtpbnB1dF0sIGFuZCBjYWxscyBbbWFrZV9rZXlfc3RhbGVdIGZvciBib3RoIHRoZSBvbGQgYW5kIG5ldyB2YWx1ZSBvZiB0aGVcbiAgICAgIGluY3JlbWVudGFsLiAqKVxuICBsZXQgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlID1cbiAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgT3B0aW9uLml0ZXIgaW5wIH5mOm1ha2Vfc3RhbGU7XG4gICAgICBPcHRpb24uaXRlciAhc2VsZWN0ZWQgfmY6bWFrZV9zdGFsZTtcbiAgICAgIHNlbGVjdGVkIDo9IGlucFxuICAgIClcblxuICBsZXQgc2VsZWN0X29uZSdcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgKGlucHV0IDogYSBvcHRpb24gSW5jci50KVxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGtleScgLT4gSC5jb21wYXJlIGtleSBrZXknID0gMFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+aW5wdXQgfnNlbGVjdGVkIH5tYWtlX3N0YWxlOm1ha2Vfa2V5X3N0YWxlXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgSC5oYXNoYWJsZSB+Y29tcHV0ZV9vdXRwdXQgfm1ha2VfaW5wdXRfbm9kZVxuXG4gIGxldCBzZWxlY3Rfb25lIGggaW5wdXQgPVxuICAgIHNlbGVjdF9vbmUnIGggKEluY3IubWFwIH5mOk9wdGlvbi5zb21lIGlucHV0KVxuXG4gIGxldCBzZWxlY3Rfb25lX3ZhbHVlJ1xuICAgICAgICAodHlwZSBhKVxuICAgICAgICAobW9kdWxlIEggOiBIYXNoYWJsZS5Db21tb24gd2l0aCB0eXBlIHQgPSBhKVxuICAgICAgICB+ZGVmYXVsdFxuICAgICAgICBpbnB1dFxuICAgID1cbiAgICBsZXQgc2VsZWN0ZWQgPSByZWYgTm9uZSBpblxuICAgIGxldCBjb21wdXRlX291dHB1dCBrZXkgPVxuICAgICAgbWF0Y2ggIXNlbGVjdGVkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBkZWZhdWx0XG4gICAgICB8IFNvbWUgKGtleScsIGRhdGEpIC0+IGlmIEguY29tcGFyZSBrZXkga2V5JyA9IDAgdGhlbiBkYXRhIGVsc2UgZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgdXBkYXRlX29uZSB+c2VsZWN0ZWQgfmlucHV0IH5tYWtlX3N0YWxlOihmdW4gKGtleSwgXykgLT4gbWFrZV9rZXlfc3RhbGUga2V5KVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIEguaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X29uZV92YWx1ZSBoIH5kZWZhdWx0IGlucHV0ID1cbiAgICBzZWxlY3Rfb25lX3ZhbHVlJyBoIH5kZWZhdWx0IChJbmNyLm1hcCB+ZjpPcHRpb24uc29tZSBpbnB1dClcblxuICBsZXQgc2VsZWN0X21hbnlfdmFsdWVzXG4gICAgICAgICh0eXBlIGEpXG4gICAgICAgIChtb2R1bGUgSCA6IEhhc2hhYmxlLkNvbW1vbiB3aXRoIHR5cGUgdCA9IGEpXG4gICAgICAgIH5kZWZhdWx0XG4gICAgICAgIGlucHV0XG4gICAgPVxuICAgIGxldCBoYXNoYWJsZSA9IEguaGFzaGFibGUgaW5cbiAgICBsZXQgc2VsZWN0ZWQgPSBIYXNodGJsLlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9XG4gICAgICBIYXNodGJsLmZpbmQgc2VsZWN0ZWQga2V5IHw+IE9wdGlvbi52YWx1ZSB+ZGVmYXVsdFxuICAgIGluXG4gICAgbGV0IG1ha2VfaW5wdXRfbm9kZSB+bWFrZV9rZXlfc3RhbGUgPVxuICAgICAgSW5jci5tYXAgaW5wdXQgfmY6KGZ1biBpbnAgLT5cbiAgICAgICAgSGFzaHRibC5pdGVyX2tleXMgc2VsZWN0ZWQgfmY6bWFrZV9rZXlfc3RhbGU7XG4gICAgICAgIEhhc2h0YmwuY2xlYXIgc2VsZWN0ZWQ7XG4gICAgICAgIExpc3QuaXRlciBpbnAgfmY6KGZ1biAoa2V5LCBkYXRhKSAtPlxuICAgICAgICAgIG1ha2Vfa2V5X3N0YWxlIGtleTtcbiAgICAgICAgICBIYXNodGJsLnNldCBzZWxlY3RlZCB+a2V5IH5kYXRhXG4gICAgICAgICkpXG4gICAgaW5cbiAgICBzZXR1cF9nZW5lcmF0b3IgaGFzaGFibGUgfmNvbXB1dGVfb3V0cHV0IH5tYWtlX2lucHV0X25vZGVcblxuICBsZXQgc2VsZWN0X21hbnlcbiAgICAgICAgKHR5cGUgYSlcbiAgICAgICAgKG1vZHVsZSBIIDogSGFzaGFibGUuQ29tbW9uIHdpdGggdHlwZSB0ID0gYSlcbiAgICAgICAgaW5wdXRcbiAgICA9XG4gICAgbGV0IGhhc2hhYmxlID0gSC5oYXNoYWJsZSBpblxuICAgIGxldCBzZWxlY3RlZCA9IEhhc2hfc2V0LlVzaW5nX2hhc2hhYmxlLmNyZWF0ZSB+c2l6ZTpoYXNodGJsX3NpemUgfmhhc2hhYmxlICgpIGluXG4gICAgbGV0IGNvbXB1dGVfb3V0cHV0IGtleSA9IEhhc2hfc2V0Lm1lbSBzZWxlY3RlZCBrZXkgaW5cbiAgICBsZXQgbWFrZV9pbnB1dF9ub2RlIH5tYWtlX2tleV9zdGFsZSA9XG4gICAgICBJbmNyLm1hcCBpbnB1dCB+ZjooZnVuIGlucCAtPlxuICAgICAgICBsZXQgb2xkX3NldCA9IEhhc2hfc2V0LmNvcHkgc2VsZWN0ZWQgaW5cbiAgICAgICAgSGFzaF9zZXQuY2xlYXIgc2VsZWN0ZWQ7XG5cbiAgICAgICAgTGlzdC5pdGVyIGlucCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIG9sZF9zZXQga2V5KSB0aGVuXG4gICAgICAgICAgICBtYWtlX2tleV9zdGFsZSBrZXk7XG4gICAgICAgICAgSGFzaF9zZXQuYWRkIHNlbGVjdGVkIGtleVxuICAgICAgICApO1xuXG4gICAgICAgIEhhc2hfc2V0Lml0ZXIgb2xkX3NldCB+ZjooZnVuIGtleSAtPlxuICAgICAgICAgIGlmIG5vdCAoSGFzaF9zZXQubWVtIHNlbGVjdGVkIGtleSkgdGhlblxuICAgICAgICAgICAgbWFrZV9rZXlfc3RhbGUga2V5O1xuICAgICAgICApKVxuICAgIGluXG4gICAgc2V0dXBfZ2VuZXJhdG9yIGhhc2hhYmxlIH5jb21wdXRlX291dHB1dCB+bWFrZV9pbnB1dF9ub2RlXG5lbmRcblxuIiwiZXh0ZXJuYWwganNfcHJvZl9tYXJrIDogc3RyaW5nIC0+IHVuaXQgPSBcImpzX3Byb2ZfbWFya1wiXG5leHRlcm5hbCBqc19wcm9mX21lYXN1cmUgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0ID0gXCJqc19wcm9mX21lYXN1cmVcIlxuZXh0ZXJuYWwganNfcHJvZl9jbGVhcl9tYXJrcyA6IHVuaXQgLT4gdW5pdCA9IFwianNfcHJvZl9jbGVhcl9tYXJrc1wiXG5leHRlcm5hbCBqc19wcm9mX2NsZWFyX21lYXN1cmVzIDogdW5pdCAtPiB1bml0ID0gXCJqc19wcm9mX2NsZWFyX21lYXN1cmVzXCJcblxubGV0IG1hcmsgbmFtZSA9IGpzX3Byb2ZfbWFyayBuYW1lXG5sZXQgbWVhc3VyZSB+bmFtZSB+c3RhcnQgfmVuZF8gPSBqc19wcm9mX21lYXN1cmUgbmFtZSBzdGFydCBlbmRfXG5cbmxldCByZWNvcmQgbmFtZSB+ZiA9XG4gIGxldCBiZWZvcmVfbmFtZSA9IG5hbWUgXiBcIl9iZWZvcmVcIiBpblxuICBsZXQgYWZ0ZXJfbmFtZSA9IG5hbWUgXiBcIl9hZnRlclwiIGluXG4gIGxldCAoKSA9IG1hcmsgYmVmb3JlX25hbWUgaW5cbiAgbGV0IHJlcyA9IGYgKCkgaW5cbiAgbGV0ICgpID0gbWFyayBhZnRlcl9uYW1lIGluXG4gIG1lYXN1cmUgfm5hbWUgfnN0YXJ0OmJlZm9yZV9uYW1lIH5lbmRfOmFmdGVyX25hbWU7XG4gIHJlc1xuOztcblxubGV0IGNsZWFyX21hcmtzICgpID0ganNfcHJvZl9jbGVhcl9tYXJrcyAoKVxubGV0IGNsZWFyX21lYXN1cmVzICgpID0ganNfcHJvZl9jbGVhcl9tZWFzdXJlcyAoKVxuXG5tb2R1bGUgTWFudWFsID0gc3RydWN0XG4gIGxldCBtYXJrID0gbWFya1xuICBsZXQgbWVhc3VyZSA9IG1lYXN1cmVcbmVuZFxuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5cbnR5cGUgdCA9XG4gIHsgZmlsZW5hbWUgOiBzdHJpbmdcbiAgOyBtaW1ldHlwZSA6IHN0cmluZ1xuICA7IGNvbnRlbnRzIDogc3RyaW5nXG4gIH1cbltAQGRlcml2aW5nIGZpZWxkc11cblxubGV0IGNyZWF0ZSA9IEZpZWxkcy5jcmVhdGVcbmxldCBzZXhwX29mX3QgdCA9IFNleHAuQXRvbSAoc3ByaW50ZiBcIjxkb3dubG9hZGVyOiAlcz5cIiB0LmZpbGVuYW1lKVxuXG5sZXQgdHJpZ2dlciB7IGZpbGVuYW1lOyBtaW1ldHlwZTsgY29udGVudHMgfSA9XG4gIGxldCBvcGVuIEpzX29mX29jYW1sIGluXG4gIGlmIGFtX3J1bm5pbmdfaW5saW5lX3Rlc3RcbiAgdGhlblxuICAgIHByaW50X3NcbiAgICAgIFslbWVzc2FnZSBcIkRvd25sb2FkIHRyaWdnZXJlZFwiIChmaWxlbmFtZSA6IHN0cmluZykgKG1pbWV0eXBlIDogc3RyaW5nKSBjb250ZW50c11cbiAgZWxzZSAoXG4gICAgKCogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE5MzI4ODkxLzU1ODU5MiAqKVxuICAgIGxldCBhID0gRG9tX2h0bWwuY3JlYXRlQSBEb21faHRtbC5kb2N1bWVudCBpblxuICAgIGxldCBjb250ZW50c19iaWdzdHIgPVxuICAgICAgVHlwZWRfYXJyYXkuQmlnc3RyaW5nLnRvX2FycmF5QnVmZmVyIChCaWdzdHJpbmcub2Zfc3RyaW5nIGNvbnRlbnRzKVxuICAgIGluXG4gICAgbGV0IGJsb2IgPVxuICAgICAgKCogRG9uJ3QgdXNlIFtibG9iX2Zyb21fc3RyaW5nXS4gVGhhdCBoYXMgYW4gYXR0cmFjdGl2ZSB0eXBlIGJ1dCB3b3JrcyBieSBmaXJzdFxuICAgICAgICAgY29udmVydGluZyBvdXIgT0NhbWwgc3RyaW5nIHRvIGEgSmF2YXNjcmlwdCBzdHJpbmcsIHdoaWNoIGNvbnZlcnRzIHRvXG4gICAgICAgICBVVEYtMTYuIElmIHRoZSBzdHJpbmcgY29udGFpbnMgcmFuZG9tIGJpbmFyeSBkYXRhIHRoYXQgd2lsbCBkaXN0b3J0IGl0LiAqKVxuICAgICAgRmlsZS5ibG9iX2Zyb21fYW55IFsgYGFycmF5QnVmZmVyIGNvbnRlbnRzX2JpZ3N0ciBdIH5jb250ZW50VHlwZTptaW1ldHlwZVxuICAgIGluXG4gICAgbGV0IHVybCA9IERvbV9odG1sLndpbmRvdyMjLl9VUkwjI2NyZWF0ZU9iamVjdFVSTCBibG9iIGluXG4gICAgYSMjc2V0QXR0cmlidXRlIChKcy5zdHJpbmcgXCJocmVmXCIpIHVybDtcbiAgICBhIyNzZXRBdHRyaWJ1dGUgKEpzLnN0cmluZyBcImRvd25sb2FkXCIpIChKcy5zdHJpbmcgZmlsZW5hbWUpO1xuICAgIGEjI2NsaWNrO1xuICAgIERvbV9odG1sLndpbmRvdyMjLl9VUkwjI3Jldm9rZU9iamVjdFVSTCB1cmwpXG47O1xuXG5tb2R1bGUgQnV0dG9uID0gc3RydWN0XG4gIGxldCBjcmVhdGVcbiAgICAgICAgPyhlbmFibGVkID0gdHJ1ZSlcbiAgICAgICAgPyhvbl9jbGljayA9IGZ1biBfIC0+IFZkb20uRWZmZWN0Lklnbm9yZSlcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICB+Z2V0X2Rvd25sb2FkXG4gICAgICAgIH5idXR0b25fdGV4dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgb3BlbiBWZG9tIGluXG4gICAgbGV0IHRyaWdnZXJfY3N2X2Rvd25sb2FkIGV2ID1cbiAgICAgIHRyaWdnZXIgKGdldF9kb3dubG9hZCAoKSk7XG4gICAgICBvbl9jbGljayBldlxuICAgIGluXG4gICAgbGV0IGVuYWJsZWRfZGlzYWJsZWQgPVxuICAgICAgaWYgZW5hYmxlZCB0aGVuIFtdIGVsc2UgWyBBdHRyLmRpc2FibGVkOyBBdHRyLnN0eWxlIChDc3NfZ2VuLmNvbG9yIChgTmFtZSBcImdyZXlcIikpIF1cbiAgICBpblxuICAgIGxldCBhdHRycyA9XG4gICAgICBbIGV4dHJhX2F0dHJzOyBlbmFibGVkX2Rpc2FibGVkOyBbIEF0dHIub25fY2xpY2sgdHJpZ2dlcl9jc3ZfZG93bmxvYWQgXSBdXG4gICAgICB8PiBMaXN0LmNvbmNhdFxuICAgIGluXG4gICAgTm9kZS5idXR0b24gfmF0dHI6KEF0dHIubWFueV93aXRob3V0X21lcmdlIGF0dHJzKSBbIE5vZGUudGV4dCBidXR0b25fdGV4dCBdXG4gIDs7XG5lbmRcbiIsIm9wZW4hIENvcmVcbm1vZHVsZSBJbmNyID0gSW5jcmVtZW50YWwuTWFrZSAoKVxuXG4oKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGNsb2NrIGZvciBydW5uaW5nIGNsaWVudHMsIGJ1dCBib25zYWkgdGVzdHMgaGF2ZSB0aGVpclxuICAgb3duIHNlcGFyYXRlIGNsb2NrcyAqKVxubGV0IGNsb2NrID0gSW5jci5DbG9jay5jcmVhdGUgfnN0YXJ0OihUaW1lX25zLm5vdyAoKSkgKClcblxuaW5jbHVkZSBJbmNyXG5tb2R1bGUgTWFwID0gSW5jcl9tYXAuTWFrZSAoSW5jcilcbm1vZHVsZSBTZWxlY3QgPSBJbmNyX3NlbGVjdC5NYWtlIChJbmNyKVxuIiwib3BlbiBWaXJ0dWFsX2RvbVxub3BlbiBDb3JlXG5cbnR5cGUgKCdhY3Rpb24sICdtb2RlbCwgJ3N0YXRlLCAnZXh0cmEpIHdpdGhfZXh0cmEgPVxuICB7IGFwcGx5X2FjdGlvbiA6ICdhY3Rpb24gLT4gJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiAnbW9kZWxcbiAgOyB2aWV3IDogVmRvbS5Ob2RlLnRcbiAgOyBvbl9kaXNwbGF5IDogJ3N0YXRlIC0+IHNjaGVkdWxlX2FjdGlvbjooJ2FjdGlvbiAtPiB1bml0KSAtPiB1bml0XG4gIDsgZXh0cmEgOiAnZXh0cmFcbiAgfVxuW0BAZGVyaXZpbmcgZmllbGRzXVxuXG50eXBlICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCkgdCA9ICgnYWN0aW9uLCAnc3RhdGUsICdtb2RlbCwgdW5pdCkgd2l0aF9leHRyYVxuXG5sZXQgY3JlYXRlX3dpdGhfZXh0cmEgP2FwcGx5X2FjdGlvbiA/dXBkYXRlX3Zpc2liaWxpdHkgP29uX2Rpc3BsYXkgfmV4dHJhIG1vZGVsIHZpZXcgPVxuICBsZXQgYXBwbHlfYWN0aW9uID1cbiAgICBPcHRpb24udmFsdWUgYXBwbHlfYWN0aW9uIH5kZWZhdWx0OihmdW4gXyBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiBtb2RlbClcbiAgaW5cbiAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5ID1cbiAgICBPcHRpb24udmFsdWUgdXBkYXRlX3Zpc2liaWxpdHkgfmRlZmF1bHQ6KGZ1biB+c2NoZWR1bGVfYWN0aW9uOl8gLT4gbW9kZWwpXG4gIGluXG4gIGxldCBvbl9kaXNwbGF5ID0gT3B0aW9uLnZhbHVlIG9uX2Rpc3BsYXkgfmRlZmF1bHQ6KGZ1biBfIH5zY2hlZHVsZV9hY3Rpb246XyAtPiAoKSkgaW5cbiAgeyBhcHBseV9hY3Rpb247IHVwZGF0ZV92aXNpYmlsaXR5OyBvbl9kaXNwbGF5OyBleHRyYTsgdmlldyB9XG47O1xuXG5sZXQgY3JlYXRlID0gY3JlYXRlX3dpdGhfZXh0cmEgfmV4dHJhOigpXG4iLCJvcGVuISBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tXG5vcGVuIEFzeW5jX2tlcm5lbFxuXG4oKiogQ29tbW9uIG1vZHVsZSB0eXBlcyAqKVxubW9kdWxlIHR5cGUgTW9kZWwgPSBzaWdcbiAgdHlwZSB0XG5cblxuICAoKiogQSBmdW5jdGlvbiBmb3IgdGVzdGluZyB3aGV0aGVyIHRoZSBtb2RlbCBoYXMgY2hhbmdlZCBlbm91Z2ggdG8gcmVxdWlyZSByZWZpcmluZ1xuICAgICAgdGhlIGluY3JlbWVudGFsIGdyYXBoLlxuXG4gICAgICBJdCdzIGJlc3QgaWYgdGhlIHZhbHVlcyBpbiB0aGUgbW9kZWwgc3VwcG9ydCBhIHNlbWFudGljYWxseSByZWFzb25hYmxlIGN1dG9mZlxuICAgICAgZnVuY3Rpb24gd2hpY2ggbGV0cyB5b3UgYXZvaWQgaW5maW5pdGUgcmVjb21wdXRhdGlvbiBsb29wcyB0aGF0IGNhbiBvdGhlcndpc2UgYmVcbiAgICAgIHRyaWdnZXJlZCBieSB0aGUgdmlzaWJpbGl0eSBjaGVja3MuIEZvciB0aGlzIHJlYXNvbiwgaXQncyB0eXBpY2FsbHkgYSBnb29kIGlkZWEgdG9cbiAgICAgIGF2b2lkIGhhdmluZyBzaW1wbGUgY2xvc3VyZXMgc3RvcmVkIGluIHRoZSBtb2RlbC5cblxuICAgICAgVGhhdCBzYWlkLCBpdCBkb2VzIHdvcmsgaWYgeW91IHB1dCBwaHlzX2VxdWFsIGluIGZvciB0aGUgY3V0b2ZmLiAqKVxuICB2YWwgY3V0b2ZmIDogdCAtPiB0IC0+IGJvb2xcbmVuZFxuXG5tb2R1bGUgdHlwZSBBY3Rpb24gPSBzaWdcbiAgdHlwZSB0IFtAQGRlcml2aW5nIHNleHBfb2ZdXG5lbmRcblxubW9kdWxlIHR5cGUgU3RhdGUgPSBzaWdcbiAgKCoqIFJlcHJlc2VudHMgdGhlIGltcGVyYXRpdmUgc3RhdGUgYXNzb2NpYXRlZCB3aXRoIGFuIGFwcGxpY2F0aW9uLCB0eXBpY2FsbHkgdXNlZCBmb3JcbiAgICAgIGhvdXNpbmcgdGhpbmdzIGxpa2UgY29tbXVuaWNhdGlvbiBBc3luYy1SUEMgY29ubmVjdGlvbnMuICopXG4gIHR5cGUgdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgbW9kdWxlIE1vZGVsIDogTW9kZWxcbiAgbW9kdWxlIEFjdGlvbiA6IEFjdGlvblxuICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICgqKiBbb25fc3RhcnR1cF0gaXMgY2FsbGVkIG9uY2UsIHJpZ2h0IGFmdGVyIHRoZSBpbml0aWFsIERPTSBpcyBzZXQgdG8gdGhlIHZpZXcgdGhhdFxuICAgICAgY29ycmVzcG9uZHMgdG8gdGhlIGluaXRpYWwgc3RhdGUuIFRoaXMgaXMgdXNlZnVsIGZvciBkb2luZyB0aGluZ3MgbGlrZSBzdGFydGluZyB1cFxuICAgICAgYXN5bmMgcHJvY2Vzc2VzLiAgTm90ZSB0aGF0IHRoaXMgcGFydCBvZiB0aGUgY29tcHV0YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBhbnlcbiAgICAgIGluY3JlbWVudGFsaXR5LCBzaW5jZSBpdCdzIG9ubHkgcnVuIG9uY2UuICopXG4gIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICgqKiBbY3JlYXRlXSBpcyBhIGZ1bmN0aW9uIHRoYXQgaW5jcmVtZW50YWxseSBjb25zdHJ1Y3RzIGEgeyFDb21wb25lbnR9LiBOb3RlIHRoYXQgYVxuICAgICAgW0NvbXBvbmVudF0gc3VwcG9ydHMgZnVuY3Rpb25zIGxpa2UgW2FwcGx5X2FjdGlvbl0sIHdoaWNoIHJldHVybiBhIG5ldyBbTW9kZWwudF0sXG4gICAgICB3aXRob3V0IHRha2luZyBhIG1vZGVsIGFzIGFuIGV4cGxpY2l0IGlucHV0LiAgVGhlIGludGVudCBpcyBmb3IgW2FwcGx5X2FjdGlvbl0gdG9cbiAgICAgIGhhdmUgYWNjZXNzIHRvIHRoZSBjdXJyZW50IG1vZGVsIHZpYSBpdHMgY29uc3RydWN0aW9uXG5cbiAgICAgIEhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0aGlzIG1pZ2h0IGxvb2sgaW4gcHJhY3RpY2UuXG5cbiAgICAgIHtbXG4gICAgICAgIG1vZHVsZSBNb2RlbCA9IHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IHsgY291bnRlciA6IGludCB9IFtAQGRlcml2aW5nIGZpZWxkcywgY29tcGFyZV1cblxuICAgICAgICAgIGxldCBjdXRvZmYgdDEgdDIgPSBjb21wYXJlIHQxIHQyID0gMFxuICAgICAgICBlbmRcblxuICAgICAgICBtb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSB1bml0XG4gICAgICAgIGVuZFxuXG4gICAgICAgIG1vZHVsZSBBY3Rpb24gPSBzdHJ1Y3RcbiAgICAgICAgICB0eXBlIHQgPSBJbmNyZW1lbnQgW0BAZGVyaXZpbmcgc2V4cF9vZl1cblxuICAgICAgICAgIGxldCBzaG91bGRfbG9nIF8gPSBmYWxzZVxuICAgICAgICBlbmRcblxuICAgICAgICBsZXQgaW5pdGlhbF9tb2RlbCA9IHsgTW9kZWwuY291bnRlciA9IDAgfVxuXG4gICAgICAgIGxldCBvbl9zdGFydHVwIH5zY2hlZHVsZV9hY3Rpb25zIF9tb2RlbCA9XG4gICAgICAgICAgZXZlcnkgKFRpbWVfbnMuU3Bhbi5vZl9zZWMgMS4pIChmdW4gKCkgLT5cbiAgICAgICAgICAgIHNjaGVkdWxlX2FjdGlvbnMgWyBBY3Rpb24uSW5jcmVtZW50IF0pO1xuICAgICAgICAgIERlZmVycmVkLnVuaXRcbiAgICAgICAgOztcblxuICAgICAgICBsZXQgY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWw6XyB+aW5qZWN0Ol8gPVxuICAgICAgICAgIGxldCBvcGVuIEluY3IuTGV0X3N5bnRheCBpblxuICAgICAgICAgIGxldCVtYXAgYXBwbHlfYWN0aW9uID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICBmdW4gKEluY3JlbWVudCA6IEFjdGlvbi50KSBfIH5zY2hlZHVsZV9hY3Rpb25zOl8gLT5cbiAgICAgICAgICAgICAgeyBNb2RlbC5jb3VudGVyID0gY291bnRlciArIDEgfVxuICAgICAgICAgIGFuZCB2aWV3ID1cbiAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9XG4gICAgICAgICAgICAgIGxldCVtYXAgY291bnRlciA9IG1vZGVsID4+fCBNb2RlbC5jb3VudGVyIGluXG4gICAgICAgICAgICAgIFZkb20uTm9kZS5kaXYgW10gWyBWZG9tLk5vZGUudGV4dCAoSW50LnRvX3N0cmluZyBjb3VudGVyKSBdXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVmRvbS5Ob2RlLmJvZHkgW10gWyBjb3VudGVyIF1cbiAgICAgICAgICBhbmQgbW9kZWwgPSBtb2RlbCBpblxuICAgICAgICAgICgqIE5vdGUgdGhhdCB3ZSBkb24ndCBpbmNsdWRlIFtvbl9kaXNwbGF5XSBvciBbdXBkYXRlX3Zpc2liaWxpdHldLCBzaW5jZVxuICAgICAgICAgICAgIHRoZXNlIGFyZSBvcHRpb25hbCBhcmd1bWVudHMgKilcbiAgICAgICAgICBDb21wb25lbnQuY3JlYXRlIH5hcHBseV9hY3Rpb24gbW9kZWwgdmlld1xuICAgICAgICA7OyBdfVxuXG4gICAgICBUaGUgZnVsbCBjb2RlIGZvciB0aGlzIGV4YW1wbGUgY2FuIGJlIGZvdW5kIGluIGV4YW1wbGVzL2NvdW50ZXIuXG4gICopXG4gIHZhbCBjcmVhdGVcbiAgICA6ICBNb2RlbC50IEluY3IudFxuICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICgqKiBbb2xkX21vZGVsXSBjb250YWlucyB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgbW9kZWwgKilcbiAgICAtPiBpbmplY3Q6KEFjdGlvbi50IC0+IHVuaXQgVmRvbS5FZmZlY3QudClcbiAgICAoKiogW2luamVjdF0gZ2l2ZXMgeW91IHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBldmVudCBoYW5kbGVycyBpbiB0aGUgdmlydHVhbCBET00uIEluXG4gICAgICAgIHlvdXIgZXZlbnQgaGFuZGxlciwgY2FsbCB0aGlzIGZ1bmN0aW9uIG9uIHRoZSBhY3Rpb24geW91IHdvdWxkIGxpa2UgdG9cbiAgICAgICAgc2NoZWR1bGUuIFZpcnR1YWwgRE9NIHdpbGwgYXV0b21hdGljYWxseSBkZWxlZ2F0ZSB0aGF0IGFjdGlvbiBiYWNrIHRvIHRoZVxuICAgICAgICBbU3RhcnRfYXBwXSBtYWluIGxvb3AuICopXG4gICAgLT4gKEFjdGlvbi50LCBNb2RlbC50LCBTdGF0ZS50KSBDb21wb25lbnQudCBJbmNyLnRcbmVuZFxuXG5tb2R1bGUgUHJpdmF0ZSA9IHN0cnVjdFxuICB0eXBlICgnc3RhdGUsICdtb2RlbCwgJ2FjdGlvbikgc25hcHNob3QgPVxuICAgIHsgdmlldyA6IFZkb20uTm9kZS50XG4gICAgOyBhcHBseV9hY3Rpb24gOlxuICAgICAgICAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gJ21vZGVsIC0+ICdhY3Rpb24gLT4gJ21vZGVsXG4gICAgOyB1cGRhdGVfdmlzaWJpbGl0eSA6ICdtb2RlbCAtPiBzY2hlZHVsZV9ldmVudDoodW5pdCBVaV9lZmZlY3QudCAtPiB1bml0KSAtPiAnbW9kZWxcbiAgICA7IG9uX2Rpc3BsYXkgOiAnc3RhdGUgLT4gc2NoZWR1bGVfZXZlbnQ6KHVuaXQgVWlfZWZmZWN0LnQgLT4gdW5pdCkgLT4gdW5pdFxuICAgIH1cblxuICBtb2R1bGUgdHlwZSBTX2Zvcl9ib25zYWkgPSBzaWdcbiAgICBtb2R1bGUgTW9kZWwgOiBNb2RlbFxuICAgIG1vZHVsZSBBY3Rpb24gOiBBY3Rpb25cbiAgICBtb2R1bGUgU3RhdGUgOiBTdGF0ZVxuXG4gICAgdmFsIGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIDogQWN0aW9uLnQgLT4gYm9vbFxuICAgIHZhbCBvbl9zdGFydHVwIDogc2NoZWR1bGVfYWN0aW9uOihBY3Rpb24udCAtPiB1bml0KSAtPiBNb2RlbC50IC0+IFN0YXRlLnQgRGVmZXJyZWQudFxuXG4gICAgdmFsIGNyZWF0ZVxuICAgICAgOiAgTW9kZWwudCBJbmNyLnRcbiAgICAgIC0+IG9sZF9tb2RlbDpNb2RlbC50IEluY3IudFxuICAgICAgLT4gaW5qZWN0OihBY3Rpb24udCAtPiB1bml0IFZkb20uRWZmZWN0LnQpXG4gICAgICAtPiAoU3RhdGUudCwgTW9kZWwudCwgQWN0aW9uLnQpIHNuYXBzaG90IEluY3IudFxuICBlbmRcbmVuZFxuIiwib3BlbiEgQ29yZVxub3BlbiBKc19vZl9vY2FtbFxuXG5tb2R1bGUgUmVjdCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPVxuICAgIHsgdG9wIDogJ2FcbiAgICA7IGxlZnQgOiAnYVxuICAgIDsgYm90dG9tIDogJ2FcbiAgICA7IHJpZ2h0IDogJ2FcbiAgICB9XG4gIFtAQGRlcml2aW5nIHNleHAsIGJpbl9pbywgY29tcGFyZSwgZmllbGRzXVxuXG4gIGxldCBtYXAgdCB+ZiA9XG4gICAgeyB0b3AgPSBmIHQudG9wOyBsZWZ0ID0gZiB0LmxlZnQ7IGJvdHRvbSA9IGYgdC5ib3R0b207IHJpZ2h0ID0gZiB0LnJpZ2h0IH1cbiAgOztcblxuICBsZXQgaW50X2hlaWdodCB0ID0gdC5ib3R0b20gLSB0LnRvcFxuICBsZXQgaW50X3dpZHRoIHQgPSB0LnJpZ2h0IC0gdC5sZWZ0XG4gIGxldCBmbG9hdF9oZWlnaHQgdCA9IHQuYm90dG9tIC0uIHQudG9wXG4gIGxldCBmbG9hdF93aWR0aCB0ID0gdC5yaWdodCAtLiB0LmxlZnRcbmVuZFxuXG5sZXQgcm91bmRfZmxvYXRfcmVjdCA/KHJvdW5kID0gRmxvYXQuaXJvdW5kX25lYXJlc3RfZXhuKSA9IFJlY3QubWFwIH5mOnJvdW5kXG5cbnR5cGUgcm93c19vcl9jb2x1bW5zID1cbiAgfCBSb3dzXG4gIHwgQ29sdW1uc1xuW0BAZGVyaXZpbmcgc2V4cCwgYmluX2lvLCB2YXJpYW50cywgY29tcGFyZV1cblxubGV0IGlubmVySGVpZ2h0ICgpID1cbiAgRG9tX2h0bWwud2luZG93IyMuaW5uZXJIZWlnaHRcbjs7XG5cbmxldCBpbm5lcldpZHRoICgpID1cbiAgRG9tX2h0bWwud2luZG93IyMuaW5uZXJXaWR0aFxuOztcblxubGV0IGVsZW1lbnRfaXNfaW5fdmlld3BvcnQgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICBsZXQgcmVjdCA9IGVsdCMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIEZsb2F0LiggPj0gKSByZWN0IyMudG9wIDAuXG4gICYmIEZsb2F0LiggPj0gKSByZWN0IyMubGVmdCAwLlxuICAmJiBGbG9hdC4oIDw9ICkgcmVjdCMjLmJvdHRvbSAoRmxvYXQub2ZfaW50IChpbm5lckhlaWdodCAoKSkpXG4gICYmIEZsb2F0LiggPD0gKSByZWN0IyMucmlnaHQgKEZsb2F0Lm9mX2ludCAoaW5uZXJXaWR0aCAoKSkpXG47O1xuXG4oKiogU2Nyb2xscyB0byB0aGUgaXRlbSBtYXJrZWQgYXMgXCJrZWVwLWluLXZpZXdcIiAqKVxubGV0IHNjcm9sbCA/KGlkID0gXCJrZWVwLWluLXZpZXdcIikgKCkgPVxuICBtYXRjaCBEb21faHRtbC5nZXRFbGVtZW50QnlJZF9vcHQgaWQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGVsdCAtPiBpZiBub3QgKGVsZW1lbnRfaXNfaW5fdmlld3BvcnQgZWx0KSB0aGVuIGVsdCMjc2Nyb2xsSW50b1ZpZXcgSnMuX3RydWVcbjs7XG5cbigqIE5vdCB5ZXQgc3VwcG9ydGVkIG9uIENocm9tZS4gIE1heWJlIHdlIHNob3VsZCB1c2UgalF1ZXJ5P1xuICAge1tcbiAgICAgbGV0IHNjcm9sbF9pbnRvX3ZpZXcgKGVsdCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOiB1bml0ID1cbiAgICAgICBlbHQjI3Njcm9sbEludG9WaWV3IChvYmplY3QlanNcbiAgICAgICAgIHZhbCBibG9jayA9IEpzLnN0cmluZyBcInN0YXJ0XCJcbiAgICAgICAgIHZhbCBiZWhhdmlvciA9IEpzLnN0cmluZyBcInNtb290aFwiXG4gICAgICAgZW5kKVxuICAgXX1cbiopXG4oKiBbdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IGVsXSBnZXRzIGJvdW5kaW5nIHJlY3Qgb2YgW2VsdF0uIFRoZSBib3VuZGluZyByZWN0IGlzXG4gICByZWxhdGl2ZSB0byB0aGUgdmlldyBwb3J0ICopXG5sZXQgdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChlbHQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDogZmxvYXQgUmVjdC50ID1cbiAgbGV0IHJlY3QgPSBlbHQjI2dldEJvdW5kaW5nQ2xpZW50UmVjdCBpblxuICB7IFJlY3QudG9wID0gcmVjdCMjLnRvcFxuICA7IGxlZnQgPSByZWN0IyMubGVmdFxuICA7IGJvdHRvbSA9IHJlY3QjIy5ib3R0b21cbiAgOyByaWdodCA9IHJlY3QjIy5yaWdodFxuICB9XG47O1xuXG5sZXQgdmlld3BvcnRfcmVjdCAoKSA9XG4gIHsgUmVjdC50b3AgPSAwOyBsZWZ0ID0gMDsgYm90dG9tID0gaW5uZXJIZWlnaHQgKCk7IHJpZ2h0ID0gaW5uZXJXaWR0aCAoKSB9XG47O1xuXG5sZXQgY2xpZW50X3JlY3Rfb2ZfZWxlbWVudCAoZWx0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA6IGZsb2F0IFJlY3QudCA9XG4gIGxldCBib3VuZGluZ19yZWN0ID0gdmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IGVsdCBpblxuICB7IGJvdW5kaW5nX3JlY3Qgd2l0aFxuICAgIGJvdHRvbSA9IGJvdW5kaW5nX3JlY3QudG9wICsuIEZsb2F0Lm9mX2ludCBlbHQjIy5jbGllbnRIZWlnaHRcbiAgOyByaWdodCA9IGJvdW5kaW5nX3JlY3QubGVmdCArLiBGbG9hdC5vZl9pbnQgZWx0IyMuY2xpZW50V2lkdGhcbiAgfVxuOztcblxubGV0IGNsaWVudF9yZWN0ICgpID1cbiAgeyBSZWN0LnRvcCA9IDBcbiAgOyBsZWZ0ID0gMFxuICA7IGJvdHRvbSA9IERvbV9odG1sLmRvY3VtZW50IyMuZG9jdW1lbnRFbGVtZW50IyMuY2xpZW50SGVpZ2h0XG4gIDsgcmlnaHQgPSBEb21faHRtbC5kb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCMjLmNsaWVudFdpZHRoXG4gIH1cbjs7XG5cblxuKCoqIFNpbXBsZSB3cmFwcGVyIGZvciB0aGUgYmluYXJ5LXNlYXJjaCBmdW5jdG9yICAgKilcbmxldCBiaW5hcnlfc2VhcmNoICh0eXBlIGVsdCkgfmxlbmd0aCB+Z2V0IH5jb21wYXJlIG1vZGUgeCA9XG4gIGxldCBtb2R1bGUgQnMgPVxuICAgIEJpbmFyeV9zZWFyY2hhYmxlLk1ha2UgKHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgZWx0ID0gZWx0XG4gICAgICB0eXBlIG5vbnJlYyB0ID0gdW5pdFxuXG4gICAgICBsZXQgZ2V0ICgpIG4gPSBnZXQgblxuICAgICAgbGV0IGxlbmd0aCAoKSA9IGxlbmd0aFxuICAgIGVuZClcbiAgaW5cbiAgQnMuYmluYXJ5X3NlYXJjaCAoKSB+Y29tcGFyZSBtb2RlIHhcbjs7XG5cbigqKiBTZWFyY2hlcyB0aHJvdWdoIGVsZW1lbnRzIGluZGV4ZWQgZnJvbSBbMF0gdG8gW2xlbmd0aCAtIDFdLiAqKVxubGV0IGVsZW1lbnRfc2VhcmNoIH5sZW5ndGggfm50aF9lbGVtZW50X2lkIH5zZWFyY2hfYnkgbW9kZSBsYXlvdXQgeCA9XG4gIGxldCBnZXQgPVxuICAgIGxldCBudGhfZWxlbWVudCBuID1cbiAgICAgIGxldCBpZCA9IG50aF9lbGVtZW50X2lkIG4gaW5cbiAgICAgIG1hdGNoIERvbV9odG1sLmdldEVsZW1lbnRCeUlkX29wdCBpZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFpbHdpdGhmIFwiRWxlbWVudCAlcyBub3QgZm91bmRcIiBpZCAoKVxuICAgICAgfCBTb21lIGVsdCAtPiBlbHRcbiAgICBpblxuICAgIGxldCBmaXJzdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnQgMCkgaW5cbiAgICBsZXQgbGFzdCA9IHZpZXdwb3J0X3JlY3Rfb2ZfZWxlbWVudCAobnRoX2VsZW1lbnQgKGxlbmd0aCAtIDEpKSBpblxuICAgICgqIENvbXB1dGUgdGhlIG4ndGggZWxlbWVudCBpbiBhIG5vcm1hbGl6ZWQgd2F5LCBhcyBpZiB0aGUgaW5kZXhpbmcgYWx3YXlzIGdvZXMgaW5cbiAgICAgICBpbmNyZWFzaW5nIG9yZGVyIGZyb20gdG9wIHRvcCBib3R0b20gKilcbiAgICBsZXQgbnRoX2VsZW1lbnRfbm9ybWFsaXplZCBuID1cbiAgICAgIGxldCBpc19hc2NlbmRpbmcgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gRmxvYXQuKCA8PSApIGZpcnN0LnRvcCBsYXN0LnRvcFxuICAgICAgICB8IENvbHVtbnMgLT4gRmxvYXQuKCA8PSApIGZpcnN0LmxlZnQgbGFzdC5sZWZ0XG4gICAgICBpblxuICAgICAgbnRoX2VsZW1lbnQgKGlmIGlzX2FzY2VuZGluZyB0aGVuIG4gZWxzZSBsZW5ndGggLSBuIC0gMSlcbiAgICBpblxuICAgIGZ1biBuIC0+IHNlYXJjaF9ieSAodmlld3BvcnRfcmVjdF9vZl9lbGVtZW50IChudGhfZWxlbWVudF9ub3JtYWxpemVkIG4pKVxuICBpblxuICBiaW5hcnlfc2VhcmNoIH5sZW5ndGggfmdldCB+Y29tcGFyZTpGbG9hdC5jb21wYXJlIG1vZGUgeFxuOztcblxubGV0IGZpbmRfdmlzaWJsZV9yYW5nZSB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCBsYXlvdXQgPVxuICBpZiBsZW5ndGggPSAwXG4gIHRoZW4gTm9uZVxuICBlbHNlIChcbiAgICBsZXQgZWxlbWVudF9zZWFyY2ggPSBlbGVtZW50X3NlYXJjaCB+bGVuZ3RoIH5udGhfZWxlbWVudF9pZCBpblxuICAgIGxldCB2aWV3cG9ydF9yZWN0ID0gdmlld3BvcnRfcmVjdCAoKSBpblxuICAgIGxldCBmaXJzdCA9XG4gICAgICBsZXQgc2VhcmNoX2J5LCB0YXJnZXQgPVxuICAgICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICB8IFJvd3MgLT4gUmVjdC5ib3R0b20sIHZpZXdwb3J0X3JlY3QudG9wXG4gICAgICAgIHwgQ29sdW1ucyAtPiBSZWN0LnJpZ2h0LCB2aWV3cG9ydF9yZWN0LmxlZnRcbiAgICAgIGluXG4gICAgICBlbGVtZW50X3NlYXJjaCB+c2VhcmNoX2J5IGBGaXJzdF9zdHJpY3RseV9ncmVhdGVyX3RoYW4gbGF5b3V0IChGbG9hdC5vZl9pbnQgdGFyZ2V0KVxuICAgIGluXG4gICAgbGV0IGxhc3QgPVxuICAgICAgbGV0IHNlYXJjaF9ieSwgdGFyZ2V0ID1cbiAgICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgfCBSb3dzIC0+IFJlY3QudG9wLCB2aWV3cG9ydF9yZWN0LmJvdHRvbVxuICAgICAgICB8IENvbHVtbnMgLT4gUmVjdC5sZWZ0LCB2aWV3cG9ydF9yZWN0LnJpZ2h0XG4gICAgICBpblxuICAgICAgZWxlbWVudF9zZWFyY2ggfnNlYXJjaF9ieSBgTGFzdF9zdHJpY3RseV9sZXNzX3RoYW4gbGF5b3V0IChGbG9hdC5vZl9pbnQgdGFyZ2V0KVxuICAgIGluXG4gICAgKCogQm90aCBbZmlyc3RdIGFuZCBbbGFzdF0gbmVlZCB0byBiZSBbU29tZV0uIE90aGVyd2lzZSwgZm9yIGV4YW1wbGUgaWYgdGhlIHdob2xlXG4gICAgICAgdGFibGUgaXMgYmVsb3cgdmlldyBwb3J0LCB0aGVuIFtmaXJzdF0gd2lsbCBiZSBbU29tZV0sIFtsYXN0XSB3aWxsIGJlIFtOb25lXSAqKVxuICAgIE9wdGlvbi5ib3RoIGZpcnN0IGxhc3QpXG47O1xuXG5sZXQgZ2V0X3Njcm9sbF9jb250YWluZXJfanNfZXhwciA9XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHJcbiAgICB7anN8XG4gICAgICAoZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgICAgICAgdmFyIGRvYyA9IGVsZW1lbnQub3duZXJEb2N1bWVudCB8fCBkb2N1bWVudDtcbiAgICAgICAgdmFyIHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gICAgICAgIHZhciByZSA9IC8oYXV0b3xzY3JvbGwpLztcblxuICAgICAgICBpZiAoZWxlbWVudCA9PT0gZG9jKSB7XG4gICAgICAgICAgcmV0dXJuIGRvYztcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjdXIgPSBlbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICAgICAgd2hpbGUgKGN1ci5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgdmFyIHN0eWxlID0gd2luLmdldENvbXB1dGVkU3R5bGUoY3VyKTtcblxuICAgICAgICAgIGlmIChyZS50ZXN0KHN0eWxlLm92ZXJmbG93ICsgc3R5bGUub3ZlcmZsb3dZICsgc3R5bGUub3ZlcmZsb3dYKSkge1xuICAgICAgICAgICAgcmV0dXJuIGN1cjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXIgPSBjdXIucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkb2M7XG4gICAgICB9KVxuICAgIHxqc31cbjs7XG5cbmxldCBnZXRfc2Nyb2xsX2NvbnRhaW5lciAoZWwgOiAjRG9tLm5vZGUgSnMudCkgOiBEb20ubm9kZSBKcy50ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIGdldF9zY3JvbGxfY29udGFpbmVyX2pzX2V4cHIgW3wgSnMuVW5zYWZlLmluamVjdCBlbCB8XVxuOztcbiIsIm9wZW4hIENvcmVcbm9wZW4gVmlydHVhbF9kb21cbm9wZW4gQXN5bmNfa2VybmVsXG5vcGVuIEpzX29mX29jYW1sXG5tb2R1bGUgUGVyZm9ybWFuY2UgPSBKYXZhc2NyaXB0X3Byb2ZpbGluZ1xuXG5sZXQgdGltZXJfc3RhcnQgcyB+ZGVidWcgfnByb2ZpbGUgPVxuICBpZiBwcm9maWxlIHRoZW4gUGVyZm9ybWFuY2UuTWFudWFsLm1hcmsgKHMgXiBcImJlZm9yZVwiKTtcbiAgaWYgZGVidWcgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI3RpbWUgKEpzLnN0cmluZyBzKVxuOztcblxubGV0IHRpbWVyX3N0b3AgcyB+ZGVidWcgfnByb2ZpbGUgPVxuICBpZiBwcm9maWxlXG4gIHRoZW4gKFxuICAgIGxldCBiZWZvcmUgPSBzIF4gXCJiZWZvcmVcIiBpblxuICAgIGxldCBhZnRlciA9IHMgXiBcImFmdGVyXCIgaW5cbiAgICBQZXJmb3JtYW5jZS5NYW51YWwubWFyayBhZnRlcjtcbiAgICBQZXJmb3JtYW5jZS5NYW51YWwubWVhc3VyZSB+bmFtZTpzIH5zdGFydDpiZWZvcmUgfmVuZF86YWZ0ZXIpO1xuICBpZiBkZWJ1ZyB0aGVuIEZpcmVidWcuY29uc29sZSMjdGltZUVuZCAoSnMuc3RyaW5nIHMpXG47O1xuXG5sZXQgcHJpbnRfZXJyb3JmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBGaXJlYnVnLmNvbnNvbGUjI2Vycm9yIChKcy5zdHJpbmcgcykpIGZtdFxuXG5tb2R1bGUgUmVxdWVzdF9pZHMgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZSA6IHVuaXQgLT4gdFxuXG4gIHZhbCBzZXRfb25jZV9leG5cbiAgICA6ICB0XG4gICAgLT4gYW5pbWF0aW9uX2ZyYW1lX2lkOkRvbV9odG1sLmFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkXG4gICAgLT4gc2V0X3RpbWVvdXRfaWQ6RG9tX2h0bWwudGltZW91dF9pZFxuICAgIC0+IHVuaXRcblxuICB2YWwgY2FuY2VsbGVkIDogdCAtPiBib29sXG4gIHZhbCBjYW5jZWwgOiB0IC0+IHVuaXRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIGlkcyA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ2FuY2VsbGVkXG4gICAgfCBJZHMgb2ZcbiAgICAgICAgeyBhbmltYXRpb25fZnJhbWVfaWQgOiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZFxuICAgICAgICA7IHNldF90aW1lb3V0X2lkIDogRG9tX2h0bWwudGltZW91dF9pZFxuICAgICAgICB9XG5cbiAgdHlwZSB0ID0gaWRzIHJlZlxuXG4gIGxldCBjcmVhdGUgKCkgOiB0ID0gcmVmIEVtcHR5XG5cbiAgbGV0IHNldF9vbmNlX2V4biAodCA6IHQpIH5hbmltYXRpb25fZnJhbWVfaWQgfnNldF90aW1lb3V0X2lkID1cbiAgICBtYXRjaCAhdCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT5cbiAgICAgICgqIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCBsZXQncyBiZSBkZWZlbnNpdmUuICopXG4gICAgICBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9mcmFtZV9pZDtcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0IHNldF90aW1lb3V0X2lkXG4gICAgfCBFbXB0eSAtPiB0IDo9IElkcyB7IGFuaW1hdGlvbl9mcmFtZV9pZDsgc2V0X3RpbWVvdXRfaWQgfVxuICAgIHwgSWRzIF8gLT4gaW52YWxpZF9hcmcgXCJyZXF1ZXN0X2lkcyBhbHJlYWR5IHNldFwiXG4gIDs7XG5cbiAgbGV0IGNhbmNlbGxlZCB4ID1cbiAgICBtYXRjaCAheCB3aXRoXG4gICAgfCBDYW5jZWxsZWQgLT4gdHJ1ZVxuICAgIHwgRW1wdHkgfCBJZHMgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBjYW5jZWwgKHQgOiB0KSA9XG4gICAgbWF0Y2ggIXQgd2l0aFxuICAgIHwgQ2FuY2VsbGVkIC0+ICgpXG4gICAgfCBFbXB0eSAtPiB0IDo9IENhbmNlbGxlZFxuICAgIHwgSWRzIHsgYW5pbWF0aW9uX2ZyYW1lX2lkOyBzZXRfdGltZW91dF9pZCB9IC0+XG4gICAgICBEb21faHRtbC53aW5kb3cjI2NhbmNlbEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9mcmFtZV9pZDtcbiAgICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0IHNldF90aW1lb3V0X2lkO1xuICAgICAgdCA6PSBDYW5jZWxsZWRcbiAgOztcbmVuZFxuXG4oKiogW3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSBub3RpZmllcyB0aGUgYnJvd3NlciB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIGRvIHNvbWVcbiAgICBjb21wdXRhdGlvbiBiZWZvcmUgdGhlIG5leHQgcmVwYWludC4gQmVjYXVzZSB0aGlzIG5lZWRzIHRvIG9jY3VyIGluIHRoZSBzYW1lXG4gICAgc3luY2hyb25vdXMgY2FsbCAoY2FsbGVkIGJlZm9yZSB0aGUgbmV4dCByZXBhaW50KSwgcmV0dXJuaW5nIGEgRGVmZXJyZWQudCB3aWxsIG5vdFxuICAgIHdvcmsuIEluc3RlYWQsIHlvdSBwYXNzIGluIGEgam9iIHRvIGJlIHJ1biBiZWZvcmUgdGhlIHJlcGFpbnQuXG5cbiAgICBOb3RlIHRoYXQgaWYgW2NhbGxiYWNrXSBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHdvcmsgYmVmb3JlIGRvaW5nIERPTSBjaGFuZ2VzLCB0aG9zZVxuICAgIGNoYW5nZXMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcGFpbnQgYW5kIHdpbGwgYmUgc2F2ZWQgdW50aWwgdGhlIGZvbGxvd2luZyBvbmUuXG5cbiAgICBXaGVuIHRoZSB0YWIgaXMgaW4gdGhlIGJhY2tncm91bmQsIHRoZSBicm93c2VycyBuYXRpdmUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZ1bmN0aW9uXG4gICAgd2lsbCBuZXZlciBjYWxsIHRoZSBjYWxsYmFjaywgc28gaW4gb3JkZXIgdG8gY29udGludWUgcHJvY2Vzc2luZyBldmVudHMsIHdlIHNldCBhblxuICAgIGFsdGVybmF0ZSBzZXRUaW1lb3V0IGF0IDEgc2Vjb25kLlxuKilcbmxldCByZXF1ZXN0X2FuaW1hdGlvbl9mcmFtZSBjYWxsYmFjayA9XG4gICgqIFdlIGNhcHR1cmUgdGhlIGN1cnJlbnQgY29udGV4dCB0byB1c2UgaXQgbGF0ZXIgd2hlbiBoYW5kbGluZyBjYWxsYmFja3MgZnJvbVxuICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIHNpbmNlIGV4Y2VwdGlvbnMgcmFpc2VkIHRvIHRoYXQgd291bGQgb3RoZXJ3aXNlIG5vdCBnbyB0aHJvdWdoXG4gICAgIG91ciBvcmRpbmFyeSBBc3luYyBtb25pdG9yLiAqKVxuICBsZXQgY3VycmVudF9jb250ZXh0ID0gQXN5bmNfa2VybmVsX3NjaGVkdWxlci5jdXJyZW50X2V4ZWN1dGlvbl9jb250ZXh0ICgpIGluXG4gIGxldCByZXF1ZXN0X2lkcyA9IFJlcXVlc3RfaWRzLmNyZWF0ZSAoKSBpblxuICBsZXQgY2FsbGJhY2sgKCkgPVxuICAgIGlmIFJlcXVlc3RfaWRzLmNhbmNlbGxlZCByZXF1ZXN0X2lkc1xuICAgIHRoZW4gKClcbiAgICBlbHNlIChcbiAgICAgIFJlcXVlc3RfaWRzLmNhbmNlbCByZXF1ZXN0X2lkcztcbiAgICAgIGxldCBjYWxsYmFja19yZXN1bHQgPVxuICAgICAgICBBc3luY19rZXJuZWxfc2NoZWR1bGVyLndpdGhpbl9jb250ZXh0IGN1cnJlbnRfY29udGV4dCBjYWxsYmFja1xuICAgICAgaW5cbiAgICAgIGlnbm9yZSAoY2FsbGJhY2tfcmVzdWx0IDogKHVuaXQsIHVuaXQpIFJlc3VsdC50KSlcbiAgaW5cbiAgbGV0IGFuaW1hdGlvbl9mcmFtZV9pZCA9XG4gICAgbGV0IGFuaW1hdGlvbl9jYWxsYmFjayA9IEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGNhbGxiYWNrICgpKSBpblxuICAgIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGFuaW1hdGlvbl9jYWxsYmFja1xuICBpblxuICBsZXQgc2V0X3RpbWVvdXRfaWQgPVxuICAgIGxldCB0aW1lb3V0X2NhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayAoZnVuIF8gLT4gY2FsbGJhY2sgKCkpIGluXG4gICAgKCogMTAwMCBtcyA9IDFzOyAgQ2hvc2VuIGJlY2F1c2UgYmFja2dyb3VuZGVkIHRhbmdsZSBzZW5kcyByZXF1ZXN0c1xuICAgICAgIGF0IGFwcHJveGltYXRlbHkgdGhpcyByYXRlLiAqKVxuICAgIGxldCB0aW1lb3V0ID0gMTAwMC4wIGluXG4gICAgRG9tX2h0bWwud2luZG93IyNzZXRUaW1lb3V0IHRpbWVvdXRfY2FsbGJhY2sgdGltZW91dFxuICBpblxuICBSZXF1ZXN0X2lkcy5zZXRfb25jZV9leG4gcmVxdWVzdF9pZHMgfmFuaW1hdGlvbl9mcmFtZV9pZCB+c2V0X3RpbWVvdXRfaWRcbjs7XG5cbigqKiBUaGUgSnNfb2Zfb2NhbWwgdHlwZSBEb21faHRtbC5lbGVtZW50IGRvZXNuJ3QgaGF2ZSB0aGUgY29ycmVjdCBvcHRpb25zIGZvclxuICAgIHRoZWlyIGBmb2N1c2AgbWV0aG9kLiBDYXN0IHRvIHRoaXMgaW4gb3JkZXIgdG8gd29yayBhcm91bmQgdGhpcyBidWcuICAqKVxudHlwZSBmb2N1c2FibGUgPVxuICA8IGZvY3VzIDogPCBwcmV2ZW50U2Nyb2xsIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3AgPiBKcy50IC0+IHVuaXQgSnMubWV0aCA+XG5cbmxldCBhc19mb2N1c2FibGUgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gZm9jdXNhYmxlIEpzLnQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbigqKiBbVmlzaWJpbGl0eV0gZW5jYXBzdWxhdGVzIHRoZSBkaXJ0eWluZyBhbmQgY2xlYW5pbmcgb2YgdGhlIHZpc2liaWxpdHkgZmxhZ1xuXG4gICAgVGhlIHZpZXdwb3J0IHN0YXJ0cyBvdXQgZGlydHkuIFdoZW4gd2UgbG9vayBhdCB0aGUgRE9NIHRvIGNvbXB1dGUgd2hhdCBpcyB2aXNpYmxlIGJ5XG4gICAgY2FsbGluZyBbdXBkYXRlX3Zpc2liaWxpdHldLCB0aGUgdmlld3BvcnQgdGhlbiBiZWNvbWVzIGNsZWFuLiBBbnkgdGltZSB0aGUgdXNlclxuICAgIHNjcm9sbHMgb3VyIHBhZ2Ugb3IgcmVzaXplcyB0aGUgd2luZG93LCB0aGUgdmlld3BvcnQgYmVjb21lcyBkaXJ0eSBhZ2Fpbi4gSWYgd2UgdXBkYXRlXG4gICAgdGhlIERPTSwgdGhlIHZpZXdwb3J0IGJlY29tZXMgZGlydHkgYWdhaW4gYmVjYXVzZSBhIERPTSB1cGRhdGUgY291bGQgY2F1c2UgYSByZWZsb3csXG4gICAgbW92aW5nIHRoZSBlbGVtZW50cyB0aGF0IGFyZSB2aXNpYmxlLlxuXG4gICAgV2UgaGF2ZSBpbXBsZW1lbnRlZCB0aGlzIGFzIGEgZmxhZyBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgdXNlcnMgdG8gc2VuZCBhbiBhY3Rpb24gb25cbiAgICBzY3JvbGwgYmVjYXVzZSBpdCB3b3VsZCBtYWtlIG5vIHNlbnNlIHRvIGNvbXB1dGUgdGhlIHZpc2liaWxpdHkgb24gdGhlIHZpcnR1YWwtZG9tXG4gICAgd2hlbiB0aGUgdmlydHVhbC1kb20gZG9lcyBub3QgbWF0Y2ggdGhlIGFjdHVhbCBkb20gKGFzIGl0IGlzIGluIHRoZSBtaWRkbGUgb2ZcbiAgICBbYXBwbHlfYWN0aW9uc10pLiAqKVxubW9kdWxlIFZpc2liaWxpdHkgOiBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNyZWF0ZV9hc19kaXJ0eSA6IHVuaXQgLT4gdFxuICB2YWwgbWFya19jbGVhbiA6IHQgLT4gdW5pdFxuICB2YWwgbWFya19kaXJ0eSA6IHQgLT4gdW5pdFxuICB2YWwgaXNfZGlydHkgOiB0IC0+IGJvb2xcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7IG11dGFibGUgd2hlbl9kaXJ0eSA6IHVuaXQgSXZhci50IH1cblxuICBsZXQgY3JlYXRlX2FzX2RpcnR5ICgpID0geyB3aGVuX2RpcnR5ID0gSXZhci5jcmVhdGVfZnVsbCAoKSB9XG4gIGxldCBtYXJrX2RpcnR5IHQgPSBJdmFyLmZpbGxfaWZfZW1wdHkgdC53aGVuX2RpcnR5ICgpXG4gIGxldCBpc19kaXJ0eSB0ID0gSXZhci5pc19mdWxsIHQud2hlbl9kaXJ0eVxuICBsZXQgbWFya19jbGVhbiB0ID0gaWYgaXNfZGlydHkgdCB0aGVuIHQud2hlbl9kaXJ0eSA8LSBJdmFyLmNyZWF0ZSAoKVxuZW5kXG5cbm1vZHVsZSBMb2dnaW5nX2ZpbHRlciA9IHN0cnVjdFxuICBtb2R1bGUgU3RyaW5nX2JsYW5nID0gc3RydWN0XG4gICAgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgIHR5cGUgdCA9IHN0cmluZyBCbGFuZy50IFtAQGRlcml2aW5nIHNleHAsIGNvbXBhcmVdXG4gICAgZW5kXG5cbiAgICBpbmNsdWRlIFRcbiAgICBpbmNsdWRlIENvbXBhcmFibGUuTWFrZSAoVClcbiAgZW5kXG5cbiAgdHlwZSB0ID1cbiAgICB8IEFsbFxuICAgIHwgTm9uZVxuICAgIHwgTmFtZWRfZmlsdGVyX2JsYW5nIG9mIFN0cmluZ19ibGFuZy50XG4gICAgfCBDdXN0b21fZmlsdGVyIG9mIChTZXhwLnQgLT4gYm9vbClcbmVuZFxuXG5tb2R1bGUgRGVidWdfZmxhZ3MgOiBzaWdcbiAgdHlwZSB0ID1cbiAgICB7IGxvZ2dpbmdfZmlsdGVyIDogdW5pdCAtPiBMb2dnaW5nX2ZpbHRlci50XG4gICAgOyBzaG91bGRfcHJvZmlsZSA6IHVuaXQgLT4gYm9vbFxuICAgIDsgc2hvdWxkX2RlYnVnIDogdW5pdCAtPiBib29sXG4gICAgfVxuXG4gIHZhbCBpbml0X2FwcFxuICAgIDogIGFwcF9pZDpzdHJpbmdcbiAgICAtPiBmaWx0ZXJfbmFtZXM6U3RyaW5nLlNldC50XG4gICAgLT4gZGVidWc6Ym9vbFxuICAgIC0+IHN0b3A6dW5pdCBEZWZlcnJlZC50XG4gICAgLT4gdFxuZW5kID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgeyBsb2dnaW5nX2ZpbHRlciA6IHVuaXQgLT4gTG9nZ2luZ19maWx0ZXIudFxuICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiB1bml0IC0+IGJvb2xcbiAgICA7IHNob3VsZF9kZWJ1ZyA6IHVuaXQgLT4gYm9vbFxuICAgIH1cblxuICBtb2R1bGUgQXBwX3N0YXRlID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHsgZmlsdGVyX25hbWVzIDogU3RyaW5nLlNldC50XG4gICAgICA7IGxvZ2dpbmdfZmlsdGVyIDogTG9nZ2luZ19maWx0ZXIudCByZWZcbiAgICAgIDsgc2hvdWxkX3Byb2ZpbGUgOiBib29sIHJlZlxuICAgICAgOyBzaG91bGRfZGVidWcgOiBib29sIHJlZlxuICAgICAgfVxuXG4gICAgbGV0IHNldF9sb2dnaW5nX2ZpbHRlciB0IH5sb2dnaW5nX2ZpbHRlciA9IHQubG9nZ2luZ19maWx0ZXIgOj0gbG9nZ2luZ19maWx0ZXJcbiAgICBsZXQgc2V0X3Nob3VsZF9wcm9maWxlIHQgfnNob3VsZF9wcm9maWxlID0gdC5zaG91bGRfcHJvZmlsZSA6PSBzaG91bGRfcHJvZmlsZVxuICAgIGxldCBzZXRfc2hvdWxkX2RlYnVnIHQgfnNob3VsZF9kZWJ1ZyA9IHQuc2hvdWxkX2RlYnVnIDo9IHNob3VsZF9kZWJ1Z1xuICBlbmRcblxuICBjbGFzcyB0eXBlIGdsb2JhbCA9XG4gICAgb2JqZWN0XG4gICAgICBtZXRob2Qgc3RhcnRMb2dnaW5nQWxsIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnRMb2dnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFja1xuICAgICAgICAgIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdGFydExvZ2dpbmdDdXN0b20gOlxuICAgICAgICAoKEpzLmpzX3N0cmluZyBKcy50IC0+IGJvb2wgSnMudCkgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgICAgICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICAgICAgbWV0aG9kIHN0b3BMb2dnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnRQcm9maWxpbmcgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdG9wUHJvZmlsaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc3RhcnREZWJ1Z2dpbmcgOlxuICAgICAgICAoSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgICAgIG1ldGhvZCBzdG9wRGVidWdnaW5nIDpcbiAgICAgICAgKEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuXG4gICAgICBtZXRob2Qgc2F2ZUluY3JlbWVudGFsR3JhcGggOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayBKcy53cml0ZW9ubHlfcHJvcFxuICAgIGVuZFxuXG4gIGxldCBnbG9iYWwgOiBnbG9iYWwgSnMudCA9IEpzLlVuc2FmZS5nbG9iYWxcbiAgbGV0IGdsb2JhbF9pc19pbml0aWFsaXplZCA9IHJlZiBmYWxzZVxuICBsZXQgYXBwX3N0YXRlcyA6IEFwcF9zdGF0ZS50IFN0cmluZy5UYWJsZS50ID0gU3RyaW5nLlRhYmxlLmNyZWF0ZSAoKVxuXG4gIGxldCBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiXFxcIlwiIF4gc3RyIF4gXCJcXFwiXCIpIHw+IFN0cmluZy5jb25jYXQgfnNlcDpcIiwgXCJcbiAgOztcblxuICBsZXQgbXVsdGlfbGluZV9zdHJpbmdfbGlzdCBzdHJpbmdzID1cbiAgICBzdHJpbmdzIHw+IExpc3QubWFwIH5mOihmdW4gc3RyIC0+IFwiICBcIiBeIHN0cikgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiXFxuXCJcbiAgOztcblxuICBsZXQgaW5pdF9nbG9iYWwgKCkgPVxuICAgIGxldCB3aXRoX2FwcF9pZF9vcHQgdXBkYXRlX3N0YXRlIGFwcF9pZF9vcHQgPVxuICAgICAgbGV0IGFwcF9pZF9vcHQgPSBKcy5PcHQudG9fb3B0aW9uIGFwcF9pZF9vcHQgfD4gT3B0aW9uLm1hcCB+ZjpKcy50b19zdHJpbmcgaW5cbiAgICAgIG1hdGNoIGFwcF9pZF9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+IEhhc2h0YmwuaXRlciBhcHBfc3RhdGVzIH5mOnVwZGF0ZV9zdGF0ZVxuICAgICAgfCBTb21lIGFwcF9pZCAtPlxuICAgICAgICAobWF0Y2ggSGFzaHRibC5maW5kIGFwcF9zdGF0ZXMgYXBwX2lkIHdpdGhcbiAgICAgICAgIHwgU29tZSBzdGF0ZSAtPiB1cGRhdGVfc3RhdGUgc3RhdGVcbiAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICBwcmludF9lcnJvcmZcbiAgICAgICAgICAgICBcIlVuYWJsZSB0byBmaW5kIGFwcCB3aXRoIGlkIFxcXCIlc1xcXCIuIFZhbGlkIGFwcCBpZHMgYXJlOiAlc1wiXG4gICAgICAgICAgICAgYXBwX2lkXG4gICAgICAgICAgICAgKEhhc2h0Ymwua2V5cyBhcHBfc3RhdGVzIHw+IHNpbmdsZV9saW5lX3N0cmluZ19saXN0KSlcbiAgICBpblxuICAgIGxldCB1cGRhdGVfbG9nZ2luZ19maWx0ZXIgbG9nZ2luZ19maWx0ZXIgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X2xvZ2dpbmdfZmlsdGVyIH5sb2dnaW5nX2ZpbHRlcilcbiAgICBpblxuICAgIGxldCB1cGRhdGVfc2hvdWxkX3Byb2ZpbGUgc2hvdWxkX3Byb2ZpbGUgPVxuICAgICAgd2l0aF9hcHBfaWRfb3B0IChBcHBfc3RhdGUuc2V0X3Nob3VsZF9wcm9maWxlIH5zaG91bGRfcHJvZmlsZSlcbiAgICBpblxuICAgIGxldCB1cGRhdGVfc2hvdWxkX2RlYnVnIHNob3VsZF9kZWJ1ZyA9XG4gICAgICB3aXRoX2FwcF9pZF9vcHQgKEFwcF9zdGF0ZS5zZXRfc2hvdWxkX2RlYnVnIH5zaG91bGRfZGVidWcpXG4gICAgaW5cbiAgICBnbG9iYWwjIy5zdGFydExvZ2dpbmdBbGwgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX2xvZ2dpbmdfZmlsdGVyIEFsbCk7XG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGJsYW5nX3N0ciAtPlxuICAgICAgbGV0IGJsYW5nX3N0ciA9IEpzLnRvX3N0cmluZyBibGFuZ19zdHIgaW5cbiAgICAgIHdpdGhfYXBwX2lkX29wdCAoZnVuIGFwcF9zdGF0ZSAtPlxuICAgICAgICBsZXQgYmxhbmcgPVxuICAgICAgICAgIEJsYW5nLnRfb2Zfc2V4cCBTdHJpbmcudF9vZl9zZXhwIChTZXhwLm9mX3N0cmluZyBibGFuZ19zdHIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpbnZhbGlkX25hbWVzID1cbiAgICAgICAgICBCbGFuZy5mb2xkIGJsYW5nIH5pbml0OlN0cmluZy5TZXQuZW1wdHkgfmY6KGZ1biBpbnZhbGlkX25hbWVzIG5hbWUgLT5cbiAgICAgICAgICAgIGlmIFNldC5tZW0gYXBwX3N0YXRlLmZpbHRlcl9uYW1lcyBuYW1lXG4gICAgICAgICAgICB0aGVuIGludmFsaWRfbmFtZXNcbiAgICAgICAgICAgIGVsc2UgU2V0LmFkZCBpbnZhbGlkX25hbWVzIG5hbWUpXG4gICAgICAgIGluXG4gICAgICAgIGlmIFNldC5pc19lbXB0eSBpbnZhbGlkX25hbWVzXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBBcHBfc3RhdGUuc2V0X2xvZ2dpbmdfZmlsdGVyXG4gICAgICAgICAgICBhcHBfc3RhdGVcbiAgICAgICAgICAgIH5sb2dnaW5nX2ZpbHRlcjooTmFtZWRfZmlsdGVyX2JsYW5nIGJsYW5nKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgcHJpbnRfZXJyb3JmXG4gICAgICAgICAgICBcIlVuYWJsZSB0byBmaW5kIG5hbWVkIGZpbHRlcihzKTogJXMuIFZhbGlkIG5hbWVzIGFyZTpcXG4lc1wiXG4gICAgICAgICAgICAoU2V0LnRvX2xpc3QgaW52YWxpZF9uYW1lcyB8PiBzaW5nbGVfbGluZV9zdHJpbmdfbGlzdClcbiAgICAgICAgICAgIChTZXQudG9fbGlzdCBhcHBfc3RhdGUuZmlsdGVyX25hbWVzIHw+IG11bHRpX2xpbmVfc3RyaW5nX2xpc3QpKSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRMb2dnaW5nQ3VzdG9tXG4gICAgOj0gSnMud3JhcF9jYWxsYmFjayAoZnVuIGZpbHRlciAtPlxuICAgICAgbGV0IGZpbHRlciBhY3Rpb25fc2V4cCA9XG4gICAgICAgIGFjdGlvbl9zZXhwIHw+IFNleHAudG9fc3RyaW5nIHw+IEpzLnN0cmluZyB8PiBmaWx0ZXIgfD4gSnMudG9fYm9vbFxuICAgICAgaW5cbiAgICAgIHVwZGF0ZV9sb2dnaW5nX2ZpbHRlciAoQ3VzdG9tX2ZpbHRlciBmaWx0ZXIpKTtcbiAgICBnbG9iYWwjIy5zdG9wTG9nZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfbG9nZ2luZ19maWx0ZXIgTm9uZSk7XG4gICAgZ2xvYmFsIyMuc3RhcnRQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BQcm9maWxpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9wcm9maWxlIGZhbHNlKTtcbiAgICBnbG9iYWwjIy5zdGFydERlYnVnZ2luZyA6PSBKcy53cmFwX2NhbGxiYWNrICh1cGRhdGVfc2hvdWxkX2RlYnVnIHRydWUpO1xuICAgIGdsb2JhbCMjLnN0b3BEZWJ1Z2dpbmcgOj0gSnMud3JhcF9jYWxsYmFjayAodXBkYXRlX3Nob3VsZF9kZWJ1ZyBmYWxzZSk7XG4gICAgZ2xvYmFsIyMuc2F2ZUluY3JlbWVudGFsR3JhcGhcbiAgICA6PSBKcy53cmFwX2NhbGxiYWNrIChmdW4gKCkgLT5cbiAgICAgIGxldCBmaWxlbmFtZSA9IFwiY3VycmVudF9pbmNyX2RvbV9kb3RfZ3JhcGguZG90XCIgaW5cbiAgICAgIFVpX2luY3Iuc2F2ZV9kb3RfdG9fZmlsZSBmaWxlbmFtZTtcbiAgICAgIGxldCBjb250ZW50cyA9IEluX2NoYW5uZWwucmVhZF9hbGwgZmlsZW5hbWUgaW5cbiAgICAgIFZkb21fZmlsZV9kb3dubG9hZC5jcmVhdGUgfmZpbGVuYW1lIH5taW1ldHlwZTpcInBsYWluL3RleHRcIiB+Y29udGVudHNcbiAgICAgIHw+IFZkb21fZmlsZV9kb3dubG9hZC50cmlnZ2VyKTtcbiAgICBsZXQgaW5pdF9tZXNzYWdlID1cbiAgICAgIFwiIEluY3JfZG9tIEFjdGlvbiBMb2dnaW5nXFxuXFxcbiAgICAgIFxcID09PT09PT09PT09PT09PT09PT09PT09XFxuXFxcbiAgICAgIFxcIExvZ2dpbmcgcHJpbnRzIGFjdGlvbiBpbmZvIHRvIHRoZSBjb25zb2xlLlxcblxcXG4gICAgICBcXCBJdCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LlxcblxcXG4gICAgICBcXCBUbyBzdGFydCBsb2dnaW5nLCB0eXBlIG9uZSBvZiB0aGUgZm9sbG93aW5nOlxcblxcXG4gICAgICBcXCBcXHRzdGFydExvZ2dpbmdBbGwoW2FwcF9pZF0pIC0gbG9nIGFsbCBhY3Rpb25zXFxuXFxcbiAgICAgIFxcIFxcdHN0YXJ0TG9nZ2luZyhmaWx0ZXJfbmFtZSBbLCBhcHBfaWRdKSAtIGZpbHRlciBhY3Rpb25zIHVzaW5nIGEgcHJlLWRlZmluZWQgXFxcbiAgICAgICBuYW1lZCBmaWx0ZXIgW2ZpbHRlcl9uYW1lXVxcblxcXG4gICAgICBcXCBcXHRzdGFydExvZ2dpbmcoZmlsdGVyX25hbWVfYmxhbmcgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIGJsYW5nIG9mIFxcXG4gICAgICAgbmFtZWQgZmlsdGVycyBbZmlsdGVyX25hbWVfYmxhbmddXFxuXFxcbiAgICAgIFxcIFxcdHN0YXJ0TG9nZ2luZ0N1c3RvbShmaWx0ZXIgWywgYXBwX2lkXSkgLSBmaWx0ZXIgYWN0aW9ucyB1c2luZyBhIGN1c3RvbSBmdW5jdGlvbiBcXFxuICAgICAgIFtmaWx0ZXJdIGZyb20gYSBzdHJpbmcgKHRoZSBhY3Rpb24gc2V4cCkgdG8gYSBib29sXFxuXFxcbiAgICAgIFxcIFRvIHN0b3AgbG9nZ2luZywgdHlwZTogc3RvcExvZ2dpbmcoW2FwcF9pZF0pXFxuXFxuXFxcbiAgICAgIFxcIEluY3JfZG9tIEFjdGlvbiBQcm9maWxpbmdcXG5cXFxuICAgICAgXFwgPT09PT09PT09PT09PT09PT09PT09PT09PVxcblxcXG4gICAgICBcXCBQcm9maWxpbmcgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC5cXG5cXFxuICAgICAgXFwgVG8gc3RhcnQgcHJvZmlsaW5nLCB0eXBlOiBzdGFydFByb2ZpbGluZyhbYXBwX2lkXSlcXG5cXFxuICAgICAgXFwgVG8gc3RvcCBwcm9maWxpbmcsIHR5cGU6IHN0b3BQcm9maWxpbmcoW2FwcF9pZF0pXFxuXFxuXFxcbiAgICAgIFxcIEluY3JfZG9tIERlYnVnZ2luZ1xcblxcXG4gICAgICBcXCA9PT09PT09PT09PT09PT09PT1cXG5cXFxuICAgICAgXFwgRGVidWdnaW5nIHByaW50cyB0aW1pbmcgaW5mbyB0byB0aGUgY29uc29sZS5cXG5cXFxuICAgICAgXFwgSXQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCBieSB0aGUgYXBwLlxcblxcXG4gICAgICBcXCBUbyBzdGFydCBkZWJ1Z2dpbmcsIHR5cGU6IHN0YXJ0RGVidWdnaW5nKFthcHBfaWRdKVxcblxcXG4gICAgICBcXCBUbyBzdG9wIGRlYnVnZ2luZywgdHlwZTogc3RvcERlYnVnZ2luZyhbYXBwX2lkXSlcXG5cXG5cXFxuICAgICAgXFwgW2FwcF9pZF0gaXMgZXF1YWwgdG8gdGhlIGlkIG9mIHRoZSBlbGVtZW50IHRoYXQgdGhlIGluY3ItZG9tIGFwcCBpcyBib3VuZCB0by4gSWYgXFxcbiAgICAgICB0aGUgcGFnZSBvbmx5IGhhcyBvbmUgYXBwIG9yIHlvdSB3YW50IHRvIGFwcGx5IHRoZSBhY3Rpb24gdG8gYWxsIGFwcHMsIHlvdSBjYW4gXFxcbiAgICAgICBwYXNzIGluIFtudWxsXSAob3IgZm9yIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMsIG9taXQgaXQgYWx0b2dldGhlcikuXCJcbiAgICBpblxuICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgaW5pdF9tZXNzYWdlKVxuICA7O1xuXG4gIGxldCBpbml0X2FwcCB+YXBwX2lkIH5maWx0ZXJfbmFtZXMgfmRlYnVnIH5zdG9wID1cbiAgICBpZiBub3QgIWdsb2JhbF9pc19pbml0aWFsaXplZFxuICAgIHRoZW4gKFxuICAgICAgaW5pdF9nbG9iYWwgKCk7XG4gICAgICBnbG9iYWxfaXNfaW5pdGlhbGl6ZWQgOj0gdHJ1ZSk7XG4gICAgbGV0IGFwcF9pbml0X21lc3NhZ2UgPVxuICAgICAgc3ByaW50ZlxuICAgICAgICBcIkF2YWlsYWJsZSBsb2dnaW5nIGZpbHRlcnMgZm9yIFxcXCIlc1xcXCI6XFxuJXNcIlxuICAgICAgICBhcHBfaWRcbiAgICAgICAgKFNldC50b19saXN0IGZpbHRlcl9uYW1lcyB8PiBtdWx0aV9saW5lX3N0cmluZ19saXN0KVxuICAgIGluXG4gICAgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBhcHBfaW5pdF9tZXNzYWdlKTtcbiAgICBsZXQgbG9nZ2luZ19maWx0ZXIgPSByZWYgTG9nZ2luZ19maWx0ZXIuTm9uZSBpblxuICAgIGxldCBzaG91bGRfcHJvZmlsZSA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBzaG91bGRfZGVidWcgPSByZWYgZGVidWcgaW5cbiAgICBIYXNodGJsLnNldFxuICAgICAgYXBwX3N0YXRlc1xuICAgICAgfmtleTphcHBfaWRcbiAgICAgIH5kYXRhOnsgZmlsdGVyX25hbWVzOyBsb2dnaW5nX2ZpbHRlcjsgc2hvdWxkX3Byb2ZpbGU7IHNob3VsZF9kZWJ1ZyB9O1xuICAgIHVwb24gc3RvcCAoZnVuICgpIC0+IEhhc2h0YmwucmVtb3ZlIGFwcF9zdGF0ZXMgYXBwX2lkKTtcbiAgICB7IGxvZ2dpbmdfZmlsdGVyID0gKGZ1biAoKSAtPiAhbG9nZ2luZ19maWx0ZXIpXG4gICAgOyBzaG91bGRfcHJvZmlsZSA9IChmdW4gKCkgLT4gIXNob3VsZF9wcm9maWxlKVxuICAgIDsgc2hvdWxkX2RlYnVnID0gKGZ1biAoKSAtPiAhc2hvdWxkX2RlYnVnKVxuICAgIH1cbiAgOztcbmVuZFxuXG4oKiBBZGRzIHRoZSBuZWNlc3NhcnkgYXR0cmlidXRlIHRvIHRoZSByb290IG5vZGUgc28gdGhhdCBpdCBjYW4gaW50ZXJjZXB0XG4gICBrZXlib2FyZCBldmVudHMuXG4gICBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4ICopXG5sZXQgb3ZlcnJpZGVfcm9vdF9lbGVtZW50IHJvb3QgPVxuICBsZXQgb3BlbiBWZG9tIGluXG4gIGxldCBzaG91bGRfYWRkX2ZvY3VzX21vZGlmaWVycyBlbGVtZW50ID1cbiAgICBlbGVtZW50IHw+IE5vZGUuRWxlbWVudC5hdHRycyB8PiBBdHRyLkV4cGVydC5jb250YWluc19uYW1lIFwiZGlzYWJsZV90YWJfaW5kZXhcIiB8PiBub3RcbiAgaW5cbiAgbWF0Y2ggKHJvb3QgOiBOb2RlLnQpIHdpdGhcbiAgfCBFbGVtZW50IGVsZW1lbnQgd2hlbiBzaG91bGRfYWRkX2ZvY3VzX21vZGlmaWVycyBlbGVtZW50IC0+XG4gICAgbGV0IGFkZF9uZXdfYXR0cnMgYXR0cnMgPVxuICAgICAgVmRvbS5BdHRyLihzdHlsZSAoQ3NzX2dlbi5vdXRsaW5lIH5zdHlsZTpgTm9uZSAoKSkgQCB0YWJpbmRleCAwIEAgYXR0cnMpXG4gICAgaW5cbiAgICBlbGVtZW50IHw+IE5vZGUuRWxlbWVudC5tYXBfYXR0cnMgfmY6YWRkX25ld19hdHRycyB8PiBOb2RlLkVsZW1lbnRcbiAgfCBfIC0+IHJvb3Rcbjs7XG5cbmxldCBnZXRfdGFnX25hbWUgKG5vZGUgOiBWZG9tLk5vZGUudCkgPVxuICBtYXRjaCBub2RlIHdpdGhcbiAgfCBFbGVtZW50IGUgLT4gU29tZSAoVmRvbS5Ob2RlLkVsZW1lbnQudGFnIGUpXG4gIHwgTm9uZSB8IFRleHQgXyB8IFdpZGdldCBfIC0+IE5vbmVcbjs7XG5cbmxldCBzdGFydF9ib25zYWlcbiAgICAgICh0eXBlIG1vZGVsIGFjdGlvbilcbiAgICAgID8oZGVidWcgPSBmYWxzZSlcbiAgICAgID8oc3RvcCA9IERlZmVycmVkLm5ldmVyICgpKVxuICAgICAgPyhuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgPSBbXSlcbiAgICAgIH5iaW5kX3RvX2VsZW1lbnRfd2l0aF9pZFxuICAgICAgfmluaXRpYWxfbW9kZWxcbiAgICAgIChtb2R1bGUgQXBwIDogQXBwX2ludGYuUHJpdmF0ZS5TX2Zvcl9ib25zYWlcbiAgICAgICAgd2l0aCB0eXBlIE1vZGVsLnQgPSBtb2RlbFxuICAgICAgICAgYW5kIHR5cGUgQWN0aW9uLnQgPSBhY3Rpb24pXG4gID1cbiAgKCogVGhpcyBpcyBpZGVtcG90ZW50IGFuZCBzbyBmaW5lIHRvIGRvLiAqKVxuICBBc3luY19qcy5pbml0ICgpO1xuICBkb24ndF93YWl0X2ZvclxuICAgIChsZXQlYmluZCAoKSA9IEFzeW5jX2pzLmRvY3VtZW50X2xvYWRlZCAoKSBpblxuICAgICBsZXQgbW9kZWxfdiA9IEluY3IuVmFyLmNyZWF0ZSBpbml0aWFsX21vZGVsIGluXG4gICAgIGxldCBtb2RlbCA9IEluY3IuVmFyLndhdGNoIG1vZGVsX3YgaW5cbiAgICAgbGV0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgPSBJbmNyLlZhci5jcmVhdGUgaW5pdGlhbF9tb2RlbCBpblxuICAgICBsZXQgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgPSBJbmNyLlZhci53YXRjaCBtb2RlbF9mcm9tX2xhc3RfZGlzcGxheV92IGluXG4gICAgIGxldCBjdXRvZmYgPVxuICAgICAgIEluY3IuQ3V0b2ZmLmNyZWF0ZSAoZnVuIH5vbGRfdmFsdWUgfm5ld192YWx1ZSAtPlxuICAgICAgICAgQXBwLk1vZGVsLmN1dG9mZiBvbGRfdmFsdWUgbmV3X3ZhbHVlKVxuICAgICBpblxuICAgICBJbmNyLnNldF9jdXRvZmYgbW9kZWwgY3V0b2ZmO1xuICAgICBJbmNyLnNldF9jdXRvZmYgbW9kZWxfZnJvbV9sYXN0X2Rpc3BsYXkgY3V0b2ZmO1xuICAgICBsZXQgYWN0aW9uX3F1ZXVlID0gRGVxdWUuY3JlYXRlICgpIGluXG4gICAgIGxldCBtb2R1bGUgRXZlbnQgPVxuICAgICAgIFZkb20uRWZmZWN0LkRlZmluZSAoc3RydWN0XG4gICAgICAgICBtb2R1bGUgQWN0aW9uID0gQXBwLkFjdGlvblxuXG4gICAgICAgICBsZXQgaGFuZGxlIGFjdGlvbiA9IERlcXVlLmVucXVldWVfYmFjayBhY3Rpb25fcXVldWUgYWN0aW9uXG4gICAgICAgZW5kKVxuICAgICBpblxuICAgICBsZXQgdmlzaWJpbGl0eSA9IFZpc2liaWxpdHkuY3JlYXRlX2FzX2RpcnR5ICgpIGluXG4gICAgIGxldCB2aWV3cG9ydF9jaGFuZ2VkICgpID0gVmlzaWJpbGl0eS5tYXJrX2RpcnR5IHZpc2liaWxpdHkgaW5cbiAgICAgKCogVGhpcyByZWdpc3RlcnMgdGhlIFt2aWV3cG9ydF9jaGFuZ2VkXSBoYW5kbGVyIHdpdGggVmlydHVhbF9kb20uIElmIGV2ZW50IGhhbmRsZXJzXG4gICAgICAgIHVzZSB0aGUgW1Zkb20uRWZmZWN0LlZpZXdwb3J0X2NoYW5nZWRdIGV2ZW50LCB3ZSBhcmUgbm90aWZpZWQuICopXG4gICAgIGxldCBtb2R1bGUgXyA9XG4gICAgICAgVmRvbS5FZmZlY3QuRGVmaW5lX3Zpc2liaWxpdHkgKHN0cnVjdFxuICAgICAgICAgbGV0IGhhbmRsZSA9IHZpZXdwb3J0X2NoYW5nZWRcbiAgICAgICBlbmQpXG4gICAgIGluXG4gICAgIGxldCBnZXRfdmlldywgZ2V0X2FwcGx5X2FjdGlvbiwgZ2V0X3VwZGF0ZV92aXNpYmlsaXR5LCBnZXRfb25fZGlzcGxheSA9XG4gICAgICAgbGV0IG9icyA9XG4gICAgICAgICBJbmNyLm9ic2VydmVcbiAgICAgICAgICAgKEFwcC5jcmVhdGUgbW9kZWwgfm9sZF9tb2RlbDptb2RlbF9mcm9tX2xhc3RfZGlzcGxheSB+aW5qZWN0OkV2ZW50LmluamVjdClcbiAgICAgICBpblxuICAgICAgIGxldCBmZXRjaCAoZiA6IF8gQXBwX2ludGYuUHJpdmF0ZS5zbmFwc2hvdCAtPiBfKSAoKSA9XG4gICAgICAgICBmIChJbmNyLk9ic2VydmVyLnZhbHVlX2V4biBvYnMpXG4gICAgICAgaW5cbiAgICAgICAoIGZldGNoIChmdW4geyB2aWV3OyBfIH0gLT4gdmlldylcbiAgICAgICAsIGZldGNoIChmdW4geyBhcHBseV9hY3Rpb247IF8gfSAtPiBhcHBseV9hY3Rpb24pXG4gICAgICAgLCBmZXRjaCAoZnVuIHsgdXBkYXRlX3Zpc2liaWxpdHk7IF8gfSAtPiB1cGRhdGVfdmlzaWJpbGl0eSlcbiAgICAgICAsIGZldGNoIChmdW4geyBvbl9kaXNwbGF5OyBfIH0gLT4gb25fZGlzcGxheSkgKVxuICAgICBpblxuICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgbGV0IG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9XG4gICAgICAgKFwiYWxsXCIsIEZuLmNvbnN0IHRydWUpIDo6IChcIm5vbmVcIiwgRm4uY29uc3QgZmFsc2UpIDo6IG5hbWVkX2xvZ2dpbmdfZmlsdGVyc1xuICAgICAgIHw+IFN0cmluZy5UYWJsZS5vZl9hbGlzdF9leG5cbiAgICAgaW5cbiAgICAgbGV0IHsgRGVidWdfZmxhZ3MubG9nZ2luZ19maWx0ZXI7IHNob3VsZF9wcm9maWxlOyBzaG91bGRfZGVidWcgfSA9XG4gICAgICAgbGV0IGZpbHRlcl9uYW1lcyA9IEhhc2h0Ymwua2V5cyBuYW1lZF9sb2dnaW5nX2ZpbHRlcnMgfD4gU3RyaW5nLlNldC5vZl9saXN0IGluXG4gICAgICAgRGVidWdfZmxhZ3MuaW5pdF9hcHAgfmFwcF9pZDpiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCB+ZmlsdGVyX25hbWVzIH5kZWJ1ZyB+c3RvcFxuICAgICBpblxuICAgICBsZXQgaHRtbCA9IGdldF92aWV3ICgpIGluXG4gICAgIGxldCBodG1sX2RvbSA9IFZkb20uTm9kZS50b19kb20gaHRtbCBpblxuICAgICBsZXQgZWxlbSA9IERvbV9odG1sLmdldEVsZW1lbnRCeUlkX2V4biBiaW5kX3RvX2VsZW1lbnRfd2l0aF9pZCBpblxuICAgICBsZXQgcGFyZW50ID0gT3B0aW9uLnZhbHVlX2V4biB+aGVyZTpbJWhlcmVdIChKcy5PcHQudG9fb3B0aW9uIGVsZW0jIy5wYXJlbnROb2RlKSBpblxuICAgICBEb20ucmVwbGFjZUNoaWxkIHBhcmVudCBodG1sX2RvbSBlbGVtO1xuICAgICAoKiB3ZSBtYWtlIHN1cmUgdG8gY2FsbCBbdmlld3BvcnRfY2hhbmdlZF0gd2hlbmV2ZXIgdGhlIHdpbmRvdyByZXNpemVzIG9yIHRoZSBzY3JvbGxcbiAgICAgICAgY29udGFpbmVyIGluIHdoaWNoIG91ciBIVE1MIGlzIGxvY2F0ZWQgaXMgc2Nyb2xsZWQuICopXG4gICAgIGxldCBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgZXZlbnRfbmFtZSB3aGVyZSA9XG4gICAgICAgaWdub3JlXG4gICAgICAgICAoRG9tLmFkZEV2ZW50TGlzdGVuZXJcbiAgICAgICAgICAgIHdoZXJlXG4gICAgICAgICAgICAoRG9tLkV2ZW50Lm1ha2UgZXZlbnRfbmFtZSlcbiAgICAgICAgICAgIChEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgIHZpZXdwb3J0X2NoYW5nZWQgKCk7XG4gICAgICAgICAgICAgICBKcy5fdHJ1ZSkpXG4gICAgICAgICAgICBKcy5fZmFsc2VcbiAgICAgICAgICA6IERvbS5ldmVudF9saXN0ZW5lcl9pZClcbiAgICAgaW5cbiAgICAgY2FsbF92aWV3cG9ydF9jaGFuZ2VkX29uX2V2ZW50IFwic2Nyb2xsXCIgKEpzX21pc2MuZ2V0X3Njcm9sbF9jb250YWluZXIgaHRtbF9kb20pO1xuICAgICBjYWxsX3ZpZXdwb3J0X2NoYW5nZWRfb25fZXZlbnQgXCJyZXNpemVcIiBEb21faHRtbC53aW5kb3c7XG4gICAgIGxldCViaW5kIHN0YXRlID1cbiAgICAgICBBcHAub25fc3RhcnR1cFxuICAgICAgICAgfnNjaGVkdWxlX2FjdGlvbjooZnVuIGEgLT4gVWlfZWZmZWN0LkV4cGVydC5oYW5kbGUgKEV2ZW50LmluamVjdCBhKSlcbiAgICAgICAgIChJbmNyLlZhci52YWx1ZSBtb2RlbF92KVxuICAgICBpblxuICAgICBsZXQgcHJldl9odG1sID0gcmVmIGh0bWwgaW5cbiAgICAgbGV0IHByZXZfZWx0ID0gcmVmIGh0bWxfZG9tIGluXG4gICAgIGxldCByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKSA9XG4gICAgICAgbGV0IGVsZW1lbnQgPSAhcHJldl9lbHQgaW5cbiAgICAgICAoKiBJZiB0aGUgZWxlbWVudCB0byBmb2N1cyBpcyBhbiBlbGVtZW50LCBjYXN0IGl0IGludG8gdGhlXG4gICAgICAgICAgbW9yZSBwZXJtaXNzaXZlIFwiZm9jdXNhYmxlXCIgdHlwZSBkZWZpbmVkIGF0IHRoZSB0b3Agb2ZcbiAgICAgICAgICB0aGlzIGZpbGUsIGFuZCB0aGVuIGZvY3VzIHRoYXQuICopXG4gICAgICAgRG9tX2h0bWwuQ29lcmNlVG8uZWxlbWVudCBlbGVtZW50XG4gICAgICAgfD4gSnMuT3B0LnRvX29wdGlvblxuICAgICAgIHw+IE9wdGlvbi5tYXAgfmY6YXNfZm9jdXNhYmxlXG4gICAgICAgfD4gT3B0aW9uLml0ZXIgfmY6KGZ1biBlbGVtZW50IC0+XG4gICAgICAgICBlbGVtZW50IyNmb2N1c1xuICAgICAgICAgICAob2JqZWN0JWpzXG4gICAgICAgICAgICAgdmFsIHByZXZlbnRTY3JvbGwgPSBKcy5fdHJ1ZVxuICAgICAgICAgICBlbmQpKVxuICAgICBpblxuICAgICBsZXQgdGltZXJfc3RhcnQgcyA9XG4gICAgICAgdGltZXJfc3RhcnQgcyB+ZGVidWc6KHNob3VsZF9kZWJ1ZyAoKSkgfnByb2ZpbGU6KHNob3VsZF9wcm9maWxlICgpKVxuICAgICBpblxuICAgICBsZXQgdGltZXJfc3RvcCBzID1cbiAgICAgICB0aW1lcl9zdG9wIHMgfmRlYnVnOihzaG91bGRfZGVidWcgKCkpIH5wcm9maWxlOihzaG91bGRfcHJvZmlsZSAoKSlcbiAgICAgaW5cbiAgICAgKCpcbiAgICAgICAgVGFrZSBhY3Rpb24gb24gYW55IGJsdXIgZXZlbnQsIHJlZm9jdXNpbmcgdG8gdGhlIHJvb3Qgbm9kZSBpZiB0aGUgcmVsYXRlZFRhcmdldCBpc1xuICAgICAgICBudWxsIG9yIHVuZGVmaW5lZCwgc2lnbmlmeWluZyB0aGF0IGZvY3VzIHdhcyBsb3N0IGFuZCB3b3VsZCBvdGhlcndpc2UgYmUgcmVzZXQgdG9cbiAgICAgICAgdGhlIGJvZHkgbm9kZS5cblxuICAgICAgICBUaGUgSnMuX3RydWUgcGFyYW1ldGVyIHByb3ZpZGVkIHRvIERvbS5hZGRFdmVudExpc3RlbmVyIGlzIHRoZSB1c2VDYXB0dXJlXG4gICAgICAgIHBhcmFtZXRlciBkZXNjcmliZWQgaGVyZTpcbiAgICAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0V2ZW50VGFyZ2V0L2FkZEV2ZW50TGlzdGVuZXJcbiAgICAgKilcbiAgICAgaWdub3JlXG4gICAgIEBAIERvbS5hZGRFdmVudExpc3RlbmVyXG4gICAgICAgICAgRG9tX2h0bWwud2luZG93XG4gICAgICAgICAgRG9tX2h0bWwuRXZlbnQuYmx1clxuICAgICAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gZSAtPlxuICAgICAgICAgICAgICgqIFtKcy5VbnNhZmUuKl0gaXMgbGlrZSBbT2JqLm1hZ2ljXS4gV2Ugc2hvdWxkIGJlIGV4cGxpY2l0IGFib3V0IHdoYXQgd2VcbiAgICAgICAgICAgICAgICBleHBlY3QuICopXG4gICAgICAgICAgICAgbGV0IGVcbiAgICAgICAgICAgICAgIDogPCByZWxhdGVkVGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wID5cbiAgICAgICAgICAgICAgICAgICBKcy50XG4gICAgICAgICAgICAgICA9XG4gICAgICAgICAgICAgICBKcy5VbnNhZmUuY29lcmNlIGVcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCByZWxhdGVkX3RhcmdldCA9IGUjIy5yZWxhdGVkVGFyZ2V0IGluXG4gICAgICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCByZWxhdGVkX3RhcmdldCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKTtcbiAgICAgICAgICAgICBKcy5fdHJ1ZSkpXG4gICAgICAgICAgSnMuX3RydWU7XG4gICAgIGxldCB1cGRhdGVfdmlzaWJpbGl0eSAoKSA9XG4gICAgICAgVmlzaWJpbGl0eS5tYXJrX2NsZWFuIHZpc2liaWxpdHk7XG4gICAgICAgbGV0IG5ld19tb2RlbCA9XG4gICAgICAgICAoZ2V0X3VwZGF0ZV92aXNpYmlsaXR5ICgpKVxuICAgICAgICAgICB+c2NoZWR1bGVfZXZlbnQ6VWlfZWZmZWN0LkV4cGVydC5oYW5kbGVcbiAgICAgICAgICAgKEluY3IuVmFyLmxhdGVzdF92YWx1ZSBtb2RlbF92KVxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwic3RhYmlsaXplXCI7XG4gICAgICAgSW5jci5zdGFiaWxpemUgKCk7XG4gICAgICAgdGltZXJfc3RvcCBcInN0YWJpbGl6ZVwiXG4gICAgIGluXG4gICAgIGxldCBtYXliZV9sb2dfYWN0aW9uID1cbiAgICAgICBsZXQgc2FmZV9maWx0ZXIgfm5hbWUgZmlsdGVyIGFjdGlvbiA9XG4gICAgICAgICBtYXRjaCBPcl9lcnJvci50cnlfd2l0aCAoZnVuICgpIC0+IGZpbHRlciBhY3Rpb24pIHdpdGhcbiAgICAgICAgIHwgT2sgc2hvdWxkX2xvZyAtPiBzaG91bGRfbG9nXG4gICAgICAgICB8IEVycm9yIGVyciAtPlxuICAgICAgICAgICBwcmludF9lcnJvcmYgIVwiRXhjZXB0aW9uIHJhaXNlZCBieSAlczogJXtFcnJvciNodW19XCIgbmFtZSBlcnI7XG4gICAgICAgICAgIGZhbHNlXG4gICAgICAgaW5cbiAgICAgICBsZXQgbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlID1cbiAgICAgICAgIENvcmUuTWVtby5vZl9jb21wYXJhYmxlXG4gICAgICAgICAgIChtb2R1bGUgTG9nZ2luZ19maWx0ZXIuU3RyaW5nX2JsYW5nKVxuICAgICAgICAgICAoZnVuIGJsYW5nIC0+XG4gICAgICAgICAgICAgIGxldCBmaWx0ZXIgPSBIYXNodGJsLmZpbmRfZXhuIG5hbWVkX2xvZ2dpbmdfZmlsdGVycyBpblxuICAgICAgICAgICAgICBzYWZlX2ZpbHRlclxuICAgICAgICAgICAgICAgIH5uYW1lOihzcHJpbnRmICFcIm5hbWVkIGZpbHRlciBibGFuZyBcXFwiJXtzZXhwOnN0cmluZyBCbGFuZy50fVxcXCJcIiBibGFuZylcbiAgICAgICAgICAgICAgICAobWF0Y2ggYmxhbmcgd2l0aFxuICAgICAgICAgICAgICAgICB8IEJhc2UgbmFtZSAtPiBmaWx0ZXIgbmFtZVxuICAgICAgICAgICAgICAgICB8IF8gLT4gZnVuIGFjdGlvbiAtPiBCbGFuZy5ldmFsIGJsYW5nIChmdW4gbmFtZSAtPiBmaWx0ZXIgbmFtZSBhY3Rpb24pKSlcbiAgICAgICBpblxuICAgICAgIGZ1biBhY3Rpb24gLT5cbiAgICAgICAgIGxldCBzaG91bGRfbG9nX2FjdGlvbiA9XG4gICAgICAgICAgIG1hdGNoIGxvZ2dpbmdfZmlsdGVyICgpIHdpdGhcbiAgICAgICAgICAgfCBBbGwgLT4gdHJ1ZVxuICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgfCBOYW1lZF9maWx0ZXJfYmxhbmcgYmxhbmcgLT4gbmFtZWRfZmlsdGVyX2JsYW5nX2NhY2hlIGJsYW5nIGFjdGlvblxuICAgICAgICAgICB8IEN1c3RvbV9maWx0ZXIgZmlsdGVyIC0+XG4gICAgICAgICAgICAgc2FmZV9maWx0ZXJcbiAgICAgICAgICAgICAgIH5uYW1lOlwiY3VzdG9tIGZpbHRlclwiXG4gICAgICAgICAgICAgICAoZnVuIGFjdGlvbiAtPiBmaWx0ZXIgKEFwcC5BY3Rpb24uc2V4cF9vZl90IGFjdGlvbikpXG4gICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgIGluXG4gICAgICAgICBpZiBzaG91bGRfbG9nX2FjdGlvblxuICAgICAgICAgdGhlbiBBc3luY19qcy5sb2dfc19hc19zdHJpbmcgWyVtZXNzYWdlIFwiQWN0aW9uXCIgKGFjdGlvbiA6IEFwcC5BY3Rpb24udCldXG4gICAgIGluXG4gICAgIGxldCBhcHBseV9hY3Rpb24gYWN0aW9uID1cbiAgICAgICBtYXliZV9sb2dfYWN0aW9uIGFjdGlvbjtcbiAgICAgICBpZiBBcHAuYWN0aW9uX3JlcXVpcmVzX3N0YWJpbGl6YXRpb24gYWN0aW9uXG4gICAgICAgdGhlbiAoXG4gICAgICAgICB0aW1lcl9zdGFydCBcInN0YWJpbGl6ZS1mb3ItYWN0aW9uXCI7XG4gICAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICAgIHRpbWVyX3N0b3AgXCJzdGFiaWxpemUtZm9yLWFjdGlvblwiKVxuICAgICAgIGVsc2UgaWYgc2hvdWxkX2RlYnVnICgpXG4gICAgICAgdGhlbiBGaXJlYnVnLmNvbnNvbGUjI2RlYnVnIChKcy5zdHJpbmcgXCJhY3Rpb24gYXBwbGllZCB3aXRob3V0IHN0YWJpbGl6aW5nXCIpO1xuICAgICAgIGxldCBuZXdfbW9kZWwgPVxuICAgICAgICAgKGdldF9hcHBseV9hY3Rpb24gKCkpXG4gICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgIH5zY2hlZHVsZV9ldmVudDpVaV9lZmZlY3QuRXhwZXJ0LmhhbmRsZVxuICAgICAgICAgICAoSW5jci5WYXIubGF0ZXN0X3ZhbHVlIG1vZGVsX3YpXG4gICAgICAgICAgIGFjdGlvblxuICAgICAgIGluXG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX3YgbmV3X21vZGVsXG4gICAgIGluXG4gICAgIGxldCByZWMgYXBwbHlfYWN0aW9ucyAoKSA9XG4gICAgICAgbWF0Y2ggRGVxdWUuZGVxdWV1ZV9mcm9udCBhY3Rpb25fcXVldWUgd2l0aFxuICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgIHwgU29tZSBhY3Rpb24gLT5cbiAgICAgICAgIGFwcGx5X2FjdGlvbiBhY3Rpb247XG4gICAgICAgICBhcHBseV9hY3Rpb25zICgpXG4gICAgIGluXG4gICAgIGxldCBwZXJmb3JtX3VwZGF0ZSAoKSA9XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICAoKiBUaGUgY2xvY2sgaXMgc2V0IG9ubHkgb25jZSBwZXIgY2FsbCB0byBwZXJmb3JtX3VwZGF0ZSwgc28gdGhhdCBhbGwgYWN0aW9ucyB0aGF0XG4gICAgICAgICAgb2NjdXIgYmVmb3JlIGVhY2ggZGlzcGxheSB1cGRhdGUgb2NjdXIgXCJhdCB0aGUgc2FtZSB0aW1lLlwiICopXG4gICAgICAgbGV0IG5vdyA9XG4gICAgICAgICBsZXQgZGF0ZSA9IG5ldyVqcyBKcy5kYXRlX25vdyBpblxuICAgICAgICAgVGltZV9ucy5TcGFuLm9mX21zIGRhdGUjI2dldFRpbWUgfD4gVGltZV9ucy5vZl9zcGFuX3NpbmNlX2Vwb2NoXG4gICAgICAgaW5cbiAgICAgICBJbmNyLkNsb2NrLmFkdmFuY2VfY2xvY2sgSW5jci5jbG9jayB+dG9fOm5vdztcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJ0b3RhbFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICBpZiBWaXNpYmlsaXR5LmlzX2RpcnR5IHZpc2liaWxpdHkgdGhlbiB1cGRhdGVfdmlzaWJpbGl0eSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwidXBkYXRlIHZpc2liaWxpdHlcIjtcbiAgICAgICB0aW1lcl9zdGFydCBcImFwcGx5IGFjdGlvbnNcIjtcbiAgICAgICBhcHBseV9hY3Rpb25zICgpO1xuICAgICAgIHRpbWVyX3N0b3AgXCJhcHBseSBhY3Rpb25zXCI7XG4gICAgICAgdGltZXJfc3RhcnQgXCJzdGFiaWxpemVcIjtcbiAgICAgICBJbmNyLnN0YWJpbGl6ZSAoKTtcbiAgICAgICB0aW1lcl9zdG9wIFwic3RhYmlsaXplXCI7XG4gICAgICAgbGV0IGh0bWwgPSBnZXRfdmlldyAoKSBpblxuICAgICAgIGxldCBodG1sID0gb3ZlcnJpZGVfcm9vdF9lbGVtZW50IGh0bWwgaW5cbiAgICAgICB0aW1lcl9zdGFydCBcImRpZmZcIjtcbiAgICAgICBsZXQgcGF0Y2ggPSBWZG9tLk5vZGUuUGF0Y2guY3JlYXRlIH5wcmV2aW91czohcHJldl9odG1sIH5jdXJyZW50Omh0bWwgaW5cbiAgICAgICB0aW1lcl9zdG9wIFwiZGlmZlwiO1xuICAgICAgIGlmIG5vdCAoVmRvbS5Ob2RlLlBhdGNoLmlzX2VtcHR5IHBhdGNoKSB0aGVuIFZpc2liaWxpdHkubWFya19kaXJ0eSB2aXNpYmlsaXR5O1xuICAgICAgIHRpbWVyX3N0YXJ0IFwicGF0Y2hcIjtcbiAgICAgICBsZXQgZWx0ID0gVmRvbS5Ob2RlLlBhdGNoLmFwcGx5IHBhdGNoICFwcmV2X2VsdCBpblxuICAgICAgIHRpbWVyX3N0b3AgXCJwYXRjaFwiO1xuICAgICAgIHRpbWVyX3N0YXJ0IFwib25fZGlzcGxheVwiO1xuICAgICAgIChnZXRfb25fZGlzcGxheSAoKSkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50OlVpX2VmZmVjdC5FeHBlcnQuaGFuZGxlO1xuICAgICAgIHRpbWVyX3N0b3AgXCJvbl9kaXNwbGF5XCI7XG4gICAgICAgSW5jci5WYXIuc2V0IG1vZGVsX2Zyb21fbGFzdF9kaXNwbGF5X3YgKEluY3IuVmFyLnZhbHVlIG1vZGVsX3YpO1xuICAgICAgIGxldCBvbGRfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgIXByZXZfaHRtbCBpblxuICAgICAgIGxldCBuZXdfdGFnX25hbWUgPSBnZXRfdGFnX25hbWUgaHRtbCBpblxuICAgICAgIGxldCB0YWdzX3RoZV9zYW1lID0gT3B0aW9uLmVxdWFsIFN0cmluZy5lcXVhbCBvbGRfdGFnX25hbWUgbmV3X3RhZ19uYW1lIGluXG4gICAgICAgcHJldl9odG1sIDo9IGh0bWw7XG4gICAgICAgcHJldl9lbHQgOj0gZWx0O1xuICAgICAgIHRpbWVyX3N0b3AgXCJ0b3RhbFwiO1xuICAgICAgIGlmIHNob3VsZF9kZWJ1ZyAoKSB0aGVuIEZpcmVidWcuY29uc29sZSMjZGVidWcgKEpzLnN0cmluZyBcIi0tLS0tLS1cIik7XG4gICAgICAgKCogQ2hhbmdpbmcgdGhlIHRhZyBuYW1lIGNhdXNlcyBmb2N1cyB0byBiZSBsb3N0LiAgUmVmb2N1cyBpbiB0aGF0IGNhc2UuICopXG4gICAgICAgaWYgbm90IHRhZ3NfdGhlX3NhbWUgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICBpblxuICAgICAoKiBXZSB1c2UgW3JlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lXSBzbyB0aGF0IGJyb3dzZXIgdGVsbHMgdXMgd2hlcmUgaXQncyB0aW1lIHRvXG4gICAgICAgIHJlZnJlc2ggdGhlIFVJLiBBbGwgdGhlIGFjdGlvbnMgd2lsbCBiZSBwcm9jZXNzZWQgYW5kIHRoZSBjaGFuZ2VzIHByb3BhZ2F0ZWRcbiAgICAgICAgdG8gdGhlIERPTSBpbiBvbmUgZnJhbWUuICopXG4gICAgIGxldCByZWMgY2FsbGJhY2sgKCkgPVxuICAgICAgIGlmIERlZmVycmVkLmlzX2RldGVybWluZWQgc3RvcFxuICAgICAgIHRoZW4gKClcbiAgICAgICBlbHNlIChcbiAgICAgICAgIHBlcmZvcm1fdXBkYXRlICgpO1xuICAgICAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2spXG4gICAgIGluXG4gICAgICgqIFdlIHdhbnQgdGhlIHJvb3QgZWxlbWVudCB0byBzdGFydCBvdXQgZm9jdXNlZCwgc28gcGVyZm9ybSBhbiBpbml0aWFsXG4gICAgICAgIHVwZGF0ZS9yZW5kZXIsIHRoZW4gaW1tZWRpYXRlbHkgZm9jdXMgdGhlIHJvb3QgKHVubGVzcyBhIG5vbi1ib2R5IGVsZW1lbnQgYWxyZWFkeVxuICAgICAgICBoYXMgZm9jdXMpLiAgVGhpcyBmb2N1c2luZyBjYW4ndCBoYXBwZW4gaW5zaWRlIG9mIHRoZSBgY2FsbGJhY2tgIGJlY2F1c2UgdGhlbiBpdFxuICAgICAgICB3b3VsZCByZWZvY3VzIHJvb3QgZXZlcnkgZnJhbWUuICAqKVxuICAgICBwZXJmb3JtX3VwZGF0ZSAoKTtcbiAgICAgKG1hdGNoIEpzLk9wdC50b19vcHRpb24gRG9tX2h0bWwuZG9jdW1lbnQjIy5hY3RpdmVFbGVtZW50IHdpdGhcbiAgICAgIHwgU29tZSBlbCAtPiBpZiBKcy5PcHQudGVzdCAoRG9tX2h0bWwuQ29lcmNlVG8uYm9keSBlbCkgdGhlbiByZWZvY3VzX3Jvb3RfZWxlbWVudCAoKVxuICAgICAgfCBOb25lIC0+IHJlZm9jdXNfcm9vdF9lbGVtZW50ICgpKTtcbiAgICAgcmVxdWVzdF9hbmltYXRpb25fZnJhbWUgY2FsbGJhY2s7XG4gICAgIERlZmVycmVkLm5ldmVyICgpKVxuOztcblxubW9kdWxlIFByaXZhdGUgPSBzdHJ1Y3RcbiAgbGV0IHN0YXJ0X2JvbnNhaSA9IHN0YXJ0X2JvbnNhaVxuZW5kXG5cbmxldCBzdGFydFxuICAgICAgKHR5cGUgbW9kZWwgYWN0aW9uKVxuICAgICAgPyhkZWJ1ZyA9IGZhbHNlKVxuICAgICAgPyhzdG9wID0gRGVmZXJyZWQubmV2ZXIgKCkpXG4gICAgICA/KG5hbWVkX2xvZ2dpbmdfZmlsdGVycyA9IFtdKVxuICAgICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgICB+aW5pdGlhbF9tb2RlbFxuICAgICAgKG1vZHVsZSBBcHAgOiBBcHBfaW50Zi5TIHdpdGggdHlwZSBNb2RlbC50ID0gbW9kZWwgYW5kIHR5cGUgQWN0aW9uLnQgPSBhY3Rpb24pXG4gID1cbiAgc3RhcnRfYm9uc2FpXG4gICAgfmRlYnVnXG4gICAgfnN0b3BcbiAgICB+bmFtZWRfbG9nZ2luZ19maWx0ZXJzXG4gICAgfmJpbmRfdG9fZWxlbWVudF93aXRoX2lkXG4gICAgfmluaXRpYWxfbW9kZWxcbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgaW5jbHVkZSBBcHBcblxuICAgICAgbGV0IGFjdGlvbl9yZXF1aXJlc19zdGFiaWxpemF0aW9uIF8gPSB0cnVlXG5cbiAgICAgIGxldCBjcmVhdGUgbW9kZWwgfm9sZF9tb2RlbCB+aW5qZWN0ID1cbiAgICAgICAgbGV0IG9wZW4gSW5jci5MZXRfc3ludGF4IGluXG4gICAgICAgIGxldCVtYXAgY29tcG9uZW50ID0gY3JlYXRlIG1vZGVsIH5vbGRfbW9kZWwgfmluamVjdCBpblxuICAgICAgICBsZXQgdmlldyA9IENvbXBvbmVudC52aWV3IGNvbXBvbmVudCBpblxuICAgICAgICBsZXQgYXBwbHlfYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9ldmVudCBfbW9kZWwgYWN0aW9uID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50LmFwcGx5X2FjdGlvbiBjb21wb25lbnQgYWN0aW9uIHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHVwZGF0ZV92aXNpYmlsaXR5IF9tb2RlbCB+c2NoZWR1bGVfZXZlbnQgPVxuICAgICAgICAgIGxldCBzY2hlZHVsZV9hY3Rpb24gYSA9IHNjaGVkdWxlX2V2ZW50IChpbmplY3QgYSkgaW5cbiAgICAgICAgICBDb21wb25lbnQudXBkYXRlX3Zpc2liaWxpdHkgY29tcG9uZW50IH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG9uX2Rpc3BsYXkgc3RhdGUgfnNjaGVkdWxlX2V2ZW50ID1cbiAgICAgICAgICBsZXQgc2NoZWR1bGVfYWN0aW9uIGEgPSBzY2hlZHVsZV9ldmVudCAoaW5qZWN0IGEpIGluXG4gICAgICAgICAgQ29tcG9uZW50Lm9uX2Rpc3BsYXkgY29tcG9uZW50IHN0YXRlIH5zY2hlZHVsZV9hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgeyBBcHBfaW50Zi5Qcml2YXRlLnZpZXc7IGFwcGx5X2FjdGlvbjsgdXBkYXRlX3Zpc2liaWxpdHk7IG9uX2Rpc3BsYXkgfVxuICAgICAgOztcbiAgICBlbmQpXG47O1xuIiwib3BlbiBDb3JlXG5vcGVuIFZpcnR1YWxfZG9tLlZkb21cbmluY2x1ZGUgVmRvbV9pbnB1dF93aWRnZXRzX2ludGZcblxubW9kdWxlIERlY2ltYWwgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gZmxvYXRcblxuICBsZXQgaW52YXJpYW50IHQgPVxuICAgIGlmIG5vdCAoRmxvYXQuaXNfZmluaXRlIHQpXG4gICAgdGhlbiBmYWlsd2l0aGYgXCJDYW5ub3QgcmVwcmVzZW50IG5vbi1maW5pdGUgZmxvYXQgYXMgZGVjaW1hbDogJWZcIiB0ICgpXG4gIDs7XG5cbiAgbGV0IG9mX3N0cmluZyBzID1cbiAgICBsZXQgdCA9IEZsb2F0Lm9mX3N0cmluZyBzIGluXG4gICAgaW52YXJpYW50IHQ7XG4gICAgdFxuICA7O1xuXG4gIGxldCB0b19zdHJpbmcgdCA9XG4gICAgaW52YXJpYW50IHQ7XG4gICAgc3ByaW50ZiBcIiUuMTJnXCIgdFxuICA7O1xuZW5kXG5cbm1vZHVsZSBWYWxpZGF0ZWQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID1cbiAgICB8IEluaXRpYWxcbiAgICAoKiBUaGlzIGlzIHVzZWQgdG8gYXZvaWQgbWFya2luZyBhcyBpbnZhbGlkIGEgZmllbGQgdGhhdCBoYXNuJ3QgZXZlciBiZWVuXG4gICAgICAgdG91Y2hlZCBieSB0aGUgdXNlciwgdG8gaW1wcm92ZSBVWC4gKilcbiAgICB8IFZhbGlkIG9mXG4gICAgICAgIHsgaW5wdXQgOiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIDsgdmFsdWUgOiAnYVxuICAgICAgICB9XG4gICAgfCBJbnZhbGlkIG9mXG4gICAgICAgIHsgaW5wdXQgOiBzdHJpbmdcbiAgICAgICAgOyBsYXN0X3ZhbGlkIDogJ2Egb3B0aW9uXG4gICAgICAgIDsgZXJyb3IgOiBzdHJpbmdcbiAgICAgICAgfVxuICBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIHR5cGUgJ2EgdXBkYXRlID0gJ2EgdCBbQEBkZXJpdmluZyBlcXVhbCwgc2V4cCwgYmluX2lvLCBjb21wYXJlXVxuXG4gIGxldCBsaWZ0ICh0eXBlIGEpIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IGEpID1cbiAgICAobW9kdWxlIHN0cnVjdFxuICAgICAgdHlwZSBub25yZWMgdCA9IGEgdFxuXG4gICAgICBsZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBJbml0aWFsIC0+IFwiXCJcbiAgICAgICAgfCBJbnZhbGlkIHsgaW5wdXQ7IGxhc3RfdmFsaWQgPSBfOyBlcnJvciA9IF8gfSAtPiBpbnB1dFxuICAgICAgICB8IFZhbGlkIHsgaW5wdXQ7IHZhbHVlIH0gLT5cbiAgICAgICAgICAobWF0Y2ggaW5wdXQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgaW5wdXQgLT4gaW5wdXRcbiAgICAgICAgICAgfCBOb25lIC0+IE0udG9fc3RyaW5nIHZhbHVlKVxuICAgICAgOztcblxuICAgICAgbGV0IG9mX3N0cmluZyBzID1cbiAgICAgICAgdHJ5IFZhbGlkIHsgaW5wdXQgPSBTb21lIHM7IHZhbHVlID0gTS5vZl9zdHJpbmcgcyB9IHdpdGhcbiAgICAgICAgfCBleG4gLT4gSW52YWxpZCB7IGlucHV0ID0gczsgbGFzdF92YWxpZCA9IE5vbmU7IGVycm9yID0gRXhuLnRvX3N0cmluZyBleG4gfVxuICAgICAgOztcbiAgICBlbmQgOiBTdHJpbmdhYmxlLlNcbiAgICAgIHdpdGggdHlwZSB0ID0gYSB0KVxuICA7O1xuXG4gIGxldCBpbml0aWFsX2VtcHR5ID0gSW5pdGlhbFxuICBsZXQgcmV0dXJuIHZhbHVlID0gVmFsaWQgeyBpbnB1dCA9IE5vbmU7IHZhbHVlIH1cblxuICBsZXQgZ2V0X2N1cnJlbnQgPSBmdW5jdGlvblxuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlIH0gLT4gU29tZSB2YWx1ZVxuICAgIHwgSW52YWxpZCBfIHwgSW5pdGlhbCAtPiBOb25lXG4gIDs7XG5cbiAgbGV0IGdldF9sYXN0ID0gZnVuY3Rpb25cbiAgICB8IFZhbGlkIHsgaW5wdXQgPSBfOyB2YWx1ZSB9IC0+IFNvbWUgdmFsdWVcbiAgICB8IEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQ7IGVycm9yID0gXyB9IC0+IGxhc3RfdmFsaWRcbiAgICB8IEluaXRpYWwgLT4gTm9uZVxuICA7O1xuXG4gIGxldCBnZXRfZXJyb3IgPSBmdW5jdGlvblxuICAgIHwgSW5pdGlhbCB8IFZhbGlkIF8gLT4gTm9uZVxuICAgIHwgSW52YWxpZCB7IGlucHV0ID0gXzsgbGFzdF92YWxpZCA9IF87IGVycm9yIH0gLT4gU29tZSBlcnJvclxuICA7O1xuXG4gIGxldCBpc19pbnZhbGlkID0gZnVuY3Rpb25cbiAgICB8IEludmFsaWQgXyAtPiB0cnVlXG4gICAgfCBWYWxpZCBfIHwgSW5pdGlhbCAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCBpc19pbml0aWFsX2VtcHR5ID0gZnVuY3Rpb25cbiAgICB8IEluaXRpYWwgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuICA7O1xuXG4gIGxldCB1cGRhdGUgb2xkIG5ld18gPVxuICAgIG1hdGNoIG9sZCwgbmV3XyB3aXRoXG4gICAgfCBJbml0aWFsLCBfIC0+IG5ld19cbiAgICB8IF8sIFZhbGlkIF8gLT4gbmV3X1xuICAgIHwgVmFsaWQgeyBpbnB1dCA9IF87IHZhbHVlID0gb2xkIH0sIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IF87IGVycm9yIH0gLT5cbiAgICAgIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IFNvbWUgb2xkOyBlcnJvciB9XG4gICAgfCAoIEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQ7IGVycm9yID0gXyB9XG4gICAgICAsIEludmFsaWQgeyBpbnB1dDsgbGFzdF92YWxpZCA9IE5vbmU7IGVycm9yIH0gKSAtPlxuICAgICAgSW52YWxpZCB7IGlucHV0OyBsYXN0X3ZhbGlkOyBlcnJvciB9XG4gICAgfCBJbnZhbGlkIF8sIEludmFsaWQgeyBpbnB1dCA9IF87IGxhc3RfdmFsaWQgPSBTb21lIF87IGVycm9yID0gXyB9IC0+IG5ld19cbiAgICB8IF8sIEluaXRpYWwgLT4gb2xkXG4gIDs7XG5lbmRcblxubGV0IG1heWJlX2ludmFsaWQgdmFsaWRhdGVkIGF0dHJzID1cbiAgaWYgVmFsaWRhdGVkLmlzX2ludmFsaWQgdmFsaWRhdGVkXG4gIHRoZW4gQXR0ci5jcmVhdGUgXCJhcmlhLWludmFsaWRcIiBcInRydWVcIiA6OiBhdHRyc1xuICBlbHNlIGF0dHJzXG47O1xuXG5tb2R1bGUgVGltZV9jb21wYXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE9mZGF5ID0gc3RydWN0XG4gICAgdHlwZSB0ID0gVGltZV9ucy5PZmRheS50XG5cbiAgICBsZXQgb2Zfc3RyaW5nID0gVGltZV9ucy5PZmRheS5vZl9zdHJpbmdcblxuICAgICgqIFRoZSBicm93c2VyIGV4cGVjdHMgYSBISDptbSBmb3JtYXQgd2l0aCBvcHRpb25hbCB0cmFpbGluZyBcIjpzc1wiIG9yIFwiOnNzLlNTU1wiO1xuICAgICAgIFtUaW1lX25zLk9mZGF5LnRvX3N0cmluZ10gcHJvdmlkZXMgcHJlY2lzaW9uIGluIG5hbm9zZWNvbmRzLCB3aGljaCBpcyB0b28gbXVjaC4gKilcbiAgICBsZXQgdG9fc3RyaW5nID0gVGltZV9ucy5PZmRheS50b19taWxsaXNlY29uZF9zdHJpbmdcbiAgZW5kXG5cbiAgbGV0IHpvbmVkIHpvbmUgOiAobW9kdWxlIFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IFRpbWVfbnMudCkgPVxuICAgIChtb2R1bGUgc3RydWN0XG4gICAgICB0eXBlIHQgPSBUaW1lX25zLnRcblxuICAgICAgKCogRm9ybWF0IGZyb20gdGhlIGJyb3dzZXI6IHl5eXktTU0tZGRUaGg6bW0gKilcbiAgICAgIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgICAgIGxldCBwYXJ0cyA9IFN0cmluZy5zcGxpdF9vbl9jaGFycyBzIH5vbjpbICdUJzsgJzonIF0gaW5cbiAgICAgICAgbGV0IGRhdGUgPSBMaXN0Lm50aF9leG4gcGFydHMgMCB8PiBEYXRlLm9mX3N0cmluZyBpblxuICAgICAgICBsZXQgaHIgPSBMaXN0Lm50aF9leG4gcGFydHMgMSB8PiBJbnQub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBtaW4gPSBMaXN0Lm50aF9leG4gcGFydHMgMiB8PiBJbnQub2Zfc3RyaW5nIGluXG4gICAgICAgIGxldCBvZmRheSA9IFRpbWVfbnMuT2ZkYXkuY3JlYXRlIH5ociB+bWluICgpIGluXG4gICAgICAgIFRpbWVfbnMub2ZfZGF0ZV9vZmRheSB+em9uZSBkYXRlIG9mZGF5XG4gICAgICA7O1xuXG4gICAgICBsZXQgdG9fc3RyaW5nIHQgPVxuICAgICAgICBsZXQgcyA9IFRpbWVfbnMudG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgfnpvbmUgdCBpblxuICAgICAgICAoKiBUaGUgYnJvd3NlciBleHBlY3QgYSB5eXl5LU1NLWRkVGhoOm1tIGZvcm1hdCBhbmQgaXQgYWxsb3dzXG4gICAgICAgICAgIHRyYWlsaW5nIFwiOnNzXCIgb3IgXCI6c3MuU1NTXCIuXG5cbiAgICAgICAgICAgdG9fc3RyaW5nX2lzbzg2MDFfYmFzaWMgZm9ybWF0OiAyMDE5LTAxLTMwVDAxOjAwOjAwLjAwMDAwMDAwMCswMTowMFxuXG4gICAgICAgICAgIGRlc2lyZWQgZm9ybWF0IGFmdGVyIGN1dHRpbmc6ICAgMjAxOS0wMS0zMFQwMTowMDowMFxuICAgICAgICAqKVxuICAgICAgICBTdHJpbmcubHNwbGl0Ml9leG4gfm9uOicuJyBzIHw+IFR1cGxlMi5nZXQxXG4gICAgICA7O1xuICAgIGVuZClcbiAgOztcbmVuZFxuXG5sZXQgbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkIGF0dHJzID0gaWYgZGlzYWJsZWQgdGhlbiBBdHRyLmRpc2FibGVkIDo6IGF0dHJzIGVsc2UgYXR0cnNcbmxldCBhZGRfYXR0cnMgYXR0cnMnIGF0dHJzID0gYXR0cnMgQCBhdHRycycgfD4gQXR0cnMubWVyZ2VfY2xhc3Nlc19hbmRfc3R5bGVzXG5cbmxldCBzdHJ1Y3R1cmFsX2xpc3QgPyhvcmllbnRhdGlvbiA9IGBWZXJ0aWNhbCkgYXR0cnMgY2hpbGRyZW4gPVxuICBsZXQgbGF5b3V0X3N0eWxlID1cbiAgICBtYXRjaCBvcmllbnRhdGlvbiB3aXRoXG4gICAgfCBgVmVydGljYWwgLT4gQ3NzX2dlbi4oZGlzcGxheSBgQmxvY2spXG4gICAgfCBgSG9yaXpvbnRhbCAtPiBDc3NfZ2VuLihkaXNwbGF5IGBJbmxpbmVfYmxvY2spXG4gIGluXG4gIE5vZGUudWxcbiAgICB+YXR0cjpcbiAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgKFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwibGlzdC1zdHlsZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiBtYXJnaW5fbGVmdCAoYFB4IDApKVxuICAgICAgICAgIF1cbiAgICAgICAgICB8PiBhZGRfYXR0cnMgYXR0cnMpKVxuICAgIChMaXN0Lm1hcCBjaGlsZHJlbiB+ZjooZnVuIGNoaWxkIC0+IE5vZGUubGkgfmF0dHI6KEF0dHIuc3R5bGUgbGF5b3V0X3N0eWxlKSBbIGNoaWxkIF0pKVxuOztcblxubW9kdWxlIFZhbHVlX25vcm1hbGl6aW5nX2hvb2sgPSBzdHJ1Y3RcbiAgbW9kdWxlIFVuc2FmZSA9IEpzX29mX29jYW1sLkpzLlVuc2FmZVxuICBvcGVuIEpzX29mX29jYW1sXG4gIG9wZW4gSnNfb2Zfb2NhbWwuRG9tX2h0bWxcblxuICBsZXQgaXNfYWN0aXZlIGVsZW1lbnQgPVxuICAgIGxldCBkb2N1bWVudF9hY3RpdmVfZWxlbWVudCA9IFVuc2FmZS5nZXQgZG9jdW1lbnQgKEpzLnN0cmluZyBcImFjdGl2ZUVsZW1lbnRcIikgaW5cbiAgICBwaHlzX2VxdWFsIGVsZW1lbnQgZG9jdW1lbnRfYWN0aXZlX2VsZW1lbnRcbiAgOztcblxuICBsZXQgdmFsdWVfcHJvcGVydHkgPSBKcy5zdHJpbmcgXCJ2YWx1ZVwiXG4gIGxldCBnZXRfdmFsdWUgZWxlbWVudCA6ICdhIEpzLnQgPSBVbnNhZmUuZ2V0IGVsZW1lbnQgdmFsdWVfcHJvcGVydHlcbiAgbGV0IHNldF92YWx1ZSBlbGVtZW50IHZhbHVlID0gVW5zYWZlLnNldCBlbGVtZW50IHZhbHVlX3Byb3BlcnR5IHZhbHVlXG5cbiAgbGV0IGluc3RhbGxfZXZlbnRfaGFuZGxlciBlbGVtZW50IH5mID1cbiAgICAoKiBUaGlzIGV2ZW50IGhhbmRsZXIgbm9ybWFsaXplcyB0aGUgdmFsdWUgb24gdGhlIGlucHV0IGVsZW1lbnQgb24gdGhlIFtjaGFuZ2VdIGV2ZW50LlxuICAgICAgIEZvciBhIHRleHQgZW50cnksIHRoaXMgbWVhbnMgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGVudGVyLCBhbmQgd2hlbiB0aGUgdXNlciBibHVyc1xuICAgICAgIHRoZSBlbGVtZW50LiBXaHkgZG9uJ3Qgd2Ugc2ltcGx5IFt0b19zdHJpbmddIHRoZSB2YWx1ZSBpbiB0aGUgbW9kZWw/IEJlY2F1c2UgZm9yXG4gICAgICAgc29tZSBpbnB1dCBlbGVtZW50cywgeW91IGNhbiBoYXZlIGEgY2hhbmdlIGV2ZW50IHRoYXQgZmlyZXMgYWZ0ZXIgdGhlIHZhbHVlIGNoYW5nZXNcbiAgICAgICBidXQgYmVmb3JlIFtJbmNyX2RvbV0gY2FuIHVwZGF0ZSB0aGUgbW9kZWwuIEZvciBleGFtcGxlLCB0aGlzIGhhcHBlbnMgd2hlbiB5b3VcbiAgICAgICBwcmVzcyB0aGUgdXAgYXJyb3cgb24gYSBudW1iZXIgaW5wdXQuIFRoaXMgbGVhZHMgdG8gYSBidWcgd2hlcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgICAgIG1vZGVsIHN3YXBzIGJhY2sgYW5kIGZvcnRoIHdpdGggdGhlIHZhbHVlIGluIHRoZSBlbGVtZW50LiAqKVxuICAgIGxldCBjaGFuZ2VfaGFuZGxlciBfID1cbiAgICAgIGxldCB2YWx1ZSA9IEpzLnRvX3N0cmluZyAoZ2V0X3ZhbHVlIGVsZW1lbnQpIGluXG4gICAgICBPcHRpb24uaXRlciAoZiB2YWx1ZSkgfmY6KGZ1biBub3JtYWxpemVkIC0+XG4gICAgICAgIHNldF92YWx1ZSBlbGVtZW50IChKcy5zdHJpbmcgbm9ybWFsaXplZCkpO1xuICAgICAgSnMuX3RydWVcbiAgICBpblxuICAgIGxldCBjaGFuZ2VfaGFuZGxlciA9IERvbS5oYW5kbGVyIGNoYW5nZV9oYW5kbGVyIGluXG4gICAgYWRkRXZlbnRMaXN0ZW5lciBlbGVtZW50IEV2ZW50LmNoYW5nZSBjaGFuZ2VfaGFuZGxlciBKcy5fZmFsc2VcbiAgOztcblxuICBtb2R1bGUgTSA9IHN0cnVjdFxuICAgIG1vZHVsZSBTdGF0ZSA9IHN0cnVjdFxuICAgICAgdHlwZSB0ID0geyBtdXRhYmxlIGV2ZW50X2lkIDogZXZlbnRfbGlzdGVuZXJfaWQgfVxuICAgIGVuZFxuXG4gICAgbW9kdWxlIElucHV0ID0gc3RydWN0XG4gICAgICB0eXBlIHQgPVxuICAgICAgICB7IHZhbHVlIDogc3RyaW5nXG4gICAgICAgIDsgZiA6IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gICAgICAgIH1cblxuICAgICAgbGV0IHNleHBfb2ZfdCB7IHZhbHVlOyBfIH0gPSBTZXhwLkF0b20gdmFsdWVcbiAgICAgIGxldCBjb21iaW5lIF9sZWZ0IHJpZ2h0ID0gcmlnaHRcbiAgICBlbmRcblxuICAgIGxldCBpbml0IHsgSW5wdXQudmFsdWU7IGYgfSBlbGVtZW50ID1cbiAgICAgIGlmIG5vdCAoaXNfYWN0aXZlIGVsZW1lbnQpIHRoZW4gc2V0X3ZhbHVlIGVsZW1lbnQgKEpzLnN0cmluZyB2YWx1ZSk7XG4gICAgICBsZXQgZXZlbnRfaWQgPSBpbnN0YWxsX2V2ZW50X2hhbmRsZXIgZWxlbWVudCB+ZiBpblxuICAgICAgeyBTdGF0ZS5ldmVudF9pZCB9XG4gICAgOztcblxuICAgIGxldCBvbl9tb3VudCBfaW5wdXQgX3N0YXRlIF9lbGVtZW50ID0gKClcbiAgICBsZXQgZGVzdHJveSBfaW5wdXQgeyBTdGF0ZS5ldmVudF9pZCB9IF9lbGVtZW50ID0gcmVtb3ZlRXZlbnRMaXN0ZW5lciBldmVudF9pZFxuXG4gICAgbGV0IHVwZGF0ZSB+b2xkX2lucHV0IH5uZXdfaW5wdXQgc3RhdGUgZWxlbWVudCA9XG4gICAgICBkZXN0cm95IG9sZF9pbnB1dCBzdGF0ZSBlbGVtZW50O1xuICAgICAgbGV0IHsgU3RhdGUuZXZlbnRfaWQgfSA9IGluaXQgbmV3X2lucHV0IGVsZW1lbnQgaW5cbiAgICAgIHN0YXRlLlN0YXRlLmV2ZW50X2lkIDwtIGV2ZW50X2lkXG4gICAgOztcbiAgZW5kXG5cbiAgaW5jbHVkZSBBdHRyLkhvb2tzLk1ha2UgKE0pXG5cbiAgKCogW2NyZWF0ZSB2YWx1ZSB+Zl0gd2lsbCBzZXQgdGhlIFwidmFsdWVcIiBwcm9wZXJ0eSB0byBbdmFsdWVdIGlmIHRoZSBlbGVtZW50IGlzIG5vdFxuICAgICBmb2N1c2VkIGFuZCBvbiBlYWNoIGNoYW5nZSwgcnVuIHRoZSBjdXJyZW50IHZhbHVlIHRocm91Z2ggW2ZdIHRvIHJlLXNldCBpdC4gQWdhaW4sXG4gICAgIHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZSBlbGVtZW50IGlzIG5vdCBmb2N1c2VkLiBJZiBbZl0gcmV0dXJucyBbTm9uZV0sIG5vIGNoYW5nZVxuICAgICB0YWtlcyBwbGFjZS4gKilcbiAgbGV0IGNyZWF0ZSB2YWx1ZSB+ZiA9IEF0dHIuY3JlYXRlX2hvb2sgXCJ2YWx1ZTpub3JtYWxpemVkXCIgKGNyZWF0ZSB7IHZhbHVlOyBmIH0pXG5lbmRcblxubW9kdWxlIERyb3Bkb3duID0gc3RydWN0XG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmVxdWFsXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+dG9fc3RyaW5nXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgTm9kZS5zZWxlY3RcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci5jbGFzc18gXCJ3aWRnZXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgOyBBdHRyLm9uX2NoYW5nZSAoZnVuIF8gdmFsdWUgLT5cbiAgICAgICAgICAgICAgICBvbl9jaGFuZ2UgKEludC5vZl9zdHJpbmcgdmFsdWUgfD4gTGlzdC5udGhfZXhuIHZhbHVlcykpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICAoTGlzdC5tYXBpIHZhbHVlcyB+ZjooZnVuIGluZGV4IHZhbHVlIC0+XG4gICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICB+YXR0cjpcbiAgICAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAgICBbIEF0dHIudmFsdWUgKEludC50b19zdHJpbmcgaW5kZXgpXG4gICAgICAgICAgICAgICAgOyBBdHRyLmJvb2xfcHJvcGVydHkgXCJzZWxlY3RlZFwiIChlcXVhbCB2YWx1ZSBzZWxlY3RlZClcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICBbIE5vZGUudGV4dCAodG9fc3RyaW5nIHZhbHVlKSBdKSlcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIHZhbHVlc1xuICAgICAgfmVxdWFsOk0uZXF1YWxcbiAgICAgIH5zZWxlY3RlZFxuICAgICAgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICAgICAgfm9uX2NoYW5nZVxuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRXF1YWwgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgbGV0IHZhbHVlcyA9IE5vbmUgOjogTGlzdC5tYXAgdmFsdWVzIH5mOk9wdGlvbi5zb21lIGluXG4gICAgbGV0IHRvX3N0cmluZyA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6XCJcIiB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICAobW9kdWxlIE0gOiBFbnVtIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgIE0uYWxsXG4gICAgICB+ZXF1YWw6TS5lcXVhbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOk0udG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1fb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGxldCB2YWx1ZXMgPSBOb25lIDo6IExpc3QubWFwIE0uYWxsIH5mOk9wdGlvbi5zb21lIGluXG4gICAgbGV0IHRvX3N0cmluZyA9IE9wdGlvbi52YWx1ZV9tYXAgfmRlZmF1bHQ6XCJcIiB+ZjpNLnRvX3N0cmluZyBpblxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2Rpc2FibGVkXG4gICAgICB2YWx1ZXNcbiAgICAgIH5lcXVhbDpbJWVxdWFsOiBNLnQgb3B0aW9uXVxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5lbmRcblxubW9kdWxlIENoZWNrYm94ID0gc3RydWN0XG4gIGxldCBpbXBsID8oZXh0cmFfYXR0cnMgPSBbXSkgPyhkaXNhYmxlZCA9IGZhbHNlKSB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSAoKSA9XG4gICAgTm9kZS5sYWJlbFxuICAgICAgfmF0dHI6KEF0dHIubWFueV93aXRob3V0X21lcmdlIGV4dHJhX2F0dHJzKVxuICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgfmF0dHI6XG4gICAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX3RvZ2dsZSAoKSlcbiAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBpc19jaGVja2VkXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZCkpXG4gICAgICAgICAgW11cbiAgICAgIDsgTm9kZS50ZXh0IGxhYmVsXG4gICAgICBdXG4gIDs7XG5cbiAgbGV0IHNpbXBsZSA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkIH5pc19jaGVja2VkIH5sYWJlbCB+b25fdG9nZ2xlICgpID1cbiAgICBOb2RlLmRpdlxuICAgICAgfmF0dHI6KEF0dHIuY2xhc3NfIFwiY2hlY2tib3gtY29udGFpbmVyXCIpXG4gICAgICBbIGltcGwgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCB+aXNfY2hlY2tlZCB+bGFiZWwgfm9uX3RvZ2dsZSAoKSBdXG4gIDs7XG5lbmRcblxubW9kdWxlIENoZWNrbGlzdCA9IHN0cnVjdFxuICBsZXQgaW1wbFxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgdmFsdWVzXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgID1cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIChbIEF0dHIuY2xhc3NlcyBbIFwid2lkZ2V0LWNoZWNrbGlzdFwiOyBcImNoZWNrYm94LWNvbnRhaW5lclwiIF0gXVxuICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycylcbiAgICAgIChMaXN0Lm1hcCB2YWx1ZXMgfmY6KGZ1biBpdGVtIC0+XG4gICAgICAgICBDaGVja2JveC5pbXBsXG4gICAgICAgICAgIH5leHRyYV9hdHRyc1xuICAgICAgICAgICB+ZGlzYWJsZWRcbiAgICAgICAgICAgfmlzX2NoZWNrZWQ6KGlzX2NoZWNrZWQgaXRlbSlcbiAgICAgICAgICAgfmxhYmVsOih0b19zdHJpbmcgaXRlbSlcbiAgICAgICAgICAgfm9uX3RvZ2dsZTooZnVuICgpIC0+IG9uX3RvZ2dsZSBpdGVtKVxuICAgICAgICAgICAoKSkpXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc1xuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgIChtb2R1bGUgTSA6IERpc3BsYXkgd2l0aCB0eXBlIHQgPSB0KVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfmlzX2NoZWNrZWRcbiAgICAgICAgfm9uX3RvZ2dsZVxuICAgID1cbiAgICBpbXBsID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgdmFsdWVzIH5pc19jaGVja2VkIH5vbl90b2dnbGUgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICA7O1xuXG4gIGxldCBvZl9lbnVtXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgKG1vZHVsZSBNIDogRW51bSB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH5pc19jaGVja2VkXG4gICAgICAgIH5vbl90b2dnbGVcbiAgICA9XG4gICAgaW1wbCA/ZXh0cmFfYXR0cnMgP2Rpc2FibGVkIE0uYWxsIH5pc19jaGVja2VkIH5vbl90b2dnbGUgfnRvX3N0cmluZzpNLnRvX3N0cmluZ1xuICA7O1xuZW5kXG5cbm1vZHVsZSBNdWx0aV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIFJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yID0gc3RydWN0XG4gICAgdHlwZSB0ID1cbiAgICAgIHwgTm9fYWN0aW9uXG4gICAgICB8IENsZWFyX2FsbFxuICAgICAgfCBTZWxlY3RfYWxsXG4gIGVuZFxuXG4gIGxldCBpbXBsXG4gICAgICAgICh0eXBlIHQgY21wKVxuICAgICAgICA/KHJlcGVhdGVkX2NsaWNrX2JlaGF2aW9yID0gUmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3IuTm9fYWN0aW9uKVxuICAgICAgICA/KGV4dHJhX2F0dHJzID0gW10pXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgP3NpemVcbiAgICAgICAgKG1vZHVsZSBNIDogU2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIHZhbHVlc1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfm9uX2NoYW5nZVxuICAgID1cbiAgICBsZXQgb3BlbiBKc19vZl9vY2FtbCBpblxuICAgIGxldCBzaXplID0gT3B0aW9uLnZhbHVlIHNpemUgfmRlZmF1bHQ6KExpc3QubGVuZ3RoIHZhbHVlcykgaW5cbiAgICBsZXQgYXR0cnMgPVxuICAgICAgWyBBdHRyLmNyZWF0ZSBcIm11bHRpcGxlXCIgXCJcIlxuICAgICAgOyBBdHRyLmNyZWF0ZSBcInNpemVcIiAoSW50LnRvX3N0cmluZyBzaXplKVxuICAgICAgOyBBdHRyLm9uX2NoYW5nZSAoZnVuIGV2dCAoXyA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5iaW5kIGV2dCMjLnRhcmdldCBEb21faHRtbC5Db2VyY2VUby5zZWxlY3QpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgdGFyZ2V0IC0+IHRhcmdldFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGZhaWx3aXRoXG4gICAgICAgICAgICAgICAgXCJNdWx0aV9zZWxlY3QgW29uX2NoYW5nZV0gZXZlbnQgZmlyZWQgd2l0aCBhIG1pc3NpbmcgdGFyZ2V0IG9yIHRhcmdldCBcXFxuICAgICAgICAgICAgICAgICB0aGF0IHdhcyBub3QgYSBzZWxlY3QgZWxlbWVudC5cIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGNvbGxlY3Rpb25fdG9fbGlzdCBjb2xsZWN0aW9uID1cbiAgICAgICAgICAgIExpc3QuaW5pdCBjb2xsZWN0aW9uIyMubGVuZ3RoIH5mOihmdW4gaSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuZ2V0IChjb2xsZWN0aW9uIyNpdGVtIGkpIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvcHRpb25zID0gY29sbGVjdGlvbl90b19saXN0IHRhcmdldCMjLm9wdGlvbnMgaW5cbiAgICAgICAgICBsZXQgc2VsZWN0ZWRfdmFsdWVzID1cbiAgICAgICAgICAgIExpc3QuZmlsdGVyX21hcCAoTGlzdC56aXBfZXhuIHZhbHVlcyBvcHRpb25zKSB+ZjooZnVuICh2YWx1ZSwgb3B0aW9uKSAtPlxuICAgICAgICAgICAgICBPcHRpb24uc29tZV9pZiAoSnMudG9fYm9vbCBvcHRpb24jIy5zZWxlY3RlZCkgdmFsdWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBvbl9jaGFuZ2UgKFNldC5vZl9saXN0IChtb2R1bGUgTSkgc2VsZWN0ZWRfdmFsdWVzKSlcbiAgICAgIF1cbiAgICAgIEAgZXh0cmFfYXR0cnNcbiAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgIGluXG4gICAgbGV0IG9wdGlvbnMgPVxuICAgICAgTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gdmFsdWUgLT5cbiAgICAgICAgbGV0IGlzX3NlbGVjdGVkID0gU2V0Lm1lbSBzZWxlY3RlZCB2YWx1ZSBpblxuICAgICAgICBOb2RlLm9wdGlvblxuICAgICAgICAgICgqIFtBdHRyLmJvb2xfcHJvcGVydHldIGtlZXBzIHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW9uIGluIHN5bmMgYnkgc2V0dGluZyB0aGUgSlNcbiAgICAgICAgICAgICBwcm9wZXJ0eS4gW0F0dHIuc2VsZWN0ZWRdIG1vZGlmaWVzIHRoZSBET00gYXR0cmlidXRlIHNvIHRoYXQgc2VsZWN0ZWQgb3B0aW9uc1xuICAgICAgICAgICAgIGNhbiBiZSBzdHlsZWQgd2l0aCBDU1MuIFtBdHRyLnNlbGVjdGVkXSBhbG9uZSBkb2VzIG5vdCB1cGRhdGUgdGhlIHN0YXRlXG4gICAgICAgICAgICAgcHJvcGVybHkgaWYgdGhlIG1vZGVsIGNoYW5nZXMsIHNvIGJvdGggYXJlIG5lZWRlZC4gKilcbiAgICAgICAgICB+YXR0cjpcbiAgICAgICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAgICAgKFsgU29tZSAoQXR0ci5ib29sX3Byb3BlcnR5IFwic2VsZWN0ZWRcIiBpc19zZWxlY3RlZClcbiAgICAgICAgICAgICAgICA7IFNvbWVcbiAgICAgICAgICAgICAgICAgICAgKEF0dHIub25fY2xpY2sgKGZ1biBldnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhc19yZXBlYXRlZF9jbGljayA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgKG5vdCAoSnMudG9fYm9vbCBldnQjIy5jdHJsS2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTZXQuZXF1YWwgc2VsZWN0ZWQgKFNldC5zaW5nbGV0b24gKG1vZHVsZSBNKSB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggd2FzX3JlcGVhdGVkX2NsaWNrLCByZXBlYXRlZF9jbGlja19iZWhhdmlvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgIHwgZmFsc2UsIF8gfCB0cnVlLCBOb19hY3Rpb24gLT4gRWZmZWN0Lklnbm9yZVxuICAgICAgICAgICAgICAgICAgICAgICB8IHRydWUsIENsZWFyX2FsbCAtPiBvbl9jaGFuZ2UgKFNldC5lbXB0eSAobW9kdWxlIE0pKVxuICAgICAgICAgICAgICAgICAgICAgICB8IHRydWUsIFNlbGVjdF9hbGwgLT4gb25fY2hhbmdlIChTZXQub2ZfbGlzdCAobW9kdWxlIE0pIHZhbHVlcykpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB8PiBMaXN0LmZpbHRlcl9vcHQpKVxuICAgICAgICAgIFsgTm9kZS50ZXh0IChNLnRvX3N0cmluZyB2YWx1ZSkgXSlcbiAgICBpblxuICAgIE5vZGUuc2VsZWN0IH5hdHRyOihBdHRyLm1hbnlfd2l0aG91dF9tZXJnZSBhdHRycykgb3B0aW9uc1xuICA7O1xuXG4gIGxldCBvZl92YWx1ZXNcbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IFNldCB3aXRoIHR5cGUgdCA9IHQgYW5kIHR5cGUgY29tcGFyYXRvcl93aXRuZXNzID0gY21wKVxuICAgICAgICB2YWx1ZXNcbiAgICAgICAgfnNlbGVjdGVkXG4gICAgICAgIH5vbl9jaGFuZ2VcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3NpemVcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIHZhbHVlc1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5cbiAgbGV0IG9mX2VudW1cbiAgICAgICAgKHR5cGUgdCBjbXApXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/cmVwZWF0ZWRfY2xpY2tfYmVoYXZpb3JcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9zaXplXG4gICAgICAgIChtb2R1bGUgTSA6IEVudW1fc2V0IHdpdGggdHlwZSB0ID0gdCBhbmQgdHlwZSBjb21wYXJhdG9yX3dpdG5lc3MgPSBjbXApXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB+b25fY2hhbmdlXG4gICAgPVxuICAgIGltcGxcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP3JlcGVhdGVkX2NsaWNrX2JlaGF2aW9yXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zaXplXG4gICAgICAobW9kdWxlIE0pXG4gICAgICBNLmFsbFxuICAgICAgfnNlbGVjdGVkXG4gICAgICB+b25fY2hhbmdlXG4gIDs7XG5lbmRcblxubW9kdWxlIEVudHJ5ID0gc3RydWN0XG4gIG1vZHVsZSBDYWxsX29uX2lucHV0X3doZW4gPSBzdHJ1Y3RcbiAgICB0eXBlIHQgPVxuICAgICAgfCBUZXh0X2NoYW5nZWRcbiAgICAgIHwgRW50ZXJfa2V5X3ByZXNzZWRfb3JfZm9jdXNfbG9zdFxuXG4gICAgbGV0IGxpc3RlbmVyID0gZnVuY3Rpb25cbiAgICAgIHwgVGV4dF9jaGFuZ2VkIC0+IEF0dHIub25faW5wdXRcbiAgICAgIHwgRW50ZXJfa2V5X3ByZXNzZWRfb3JfZm9jdXNfbG9zdCAtPiBBdHRyLm9uX2NoYW5nZVxuICAgIDs7XG4gIGVuZFxuXG4gIGxldCBub3JtYWxpemUgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TKSBzID1cbiAgICBtYXRjaCBNLnRvX3N0cmluZyAoTS5vZl9zdHJpbmcgcykgd2l0aFxuICAgIHwgZXhjZXB0aW9uIF8gLT4gU29tZSBcIlwiXG4gICAgfCB2IC0+IFNvbWUgdlxuICA7O1xuXG4gIGxldCBtYXliZV9vbl9yZXR1cm4gb25fcmV0dXJuIGF0dHJzID1cbiAgICBtYXRjaCBvbl9yZXR1cm4gd2l0aFxuICAgIHwgTm9uZSAtPiBhdHRyc1xuICAgIHwgU29tZSBvbl9yZXR1cm4gLT5cbiAgICAgIEF0dHIub25fa2V5ZG93biAoZnVuIGV2IC0+XG4gICAgICAgIGlmIGV2IyMua2V5Q29kZSA9IDEzIHRoZW4gb25fcmV0dXJuICgpIGVsc2UgRWZmZWN0Lklnbm9yZSlcbiAgICAgIDo6IGF0dHJzXG4gIDs7XG5cbiAgbGV0IGlucHV0X25vZGUgPyhleHRyYV9hdHRycyA9IFtdKSA/KGRpc2FibGVkID0gZmFsc2UpID8ocGxhY2Vob2xkZXIgPSBcIlwiKSBhdHRycyA9XG4gICAgTm9kZS5pbnB1dFxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoYXR0cnNcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBbIEF0dHIucGxhY2Vob2xkZXIgcGxhY2Vob2xkZXI7IEF0dHIuY3JlYXRlIFwic3BlbGxjaGVja1wiIFwiZmFsc2VcIiBdXG4gICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWRcbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbXVxuICA7O1xuXG4gIGxldCByYXcgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgP29uX3JldHVybiB+dmFsdWUgfm9uX2lucHV0ICgpID1cbiAgICBbIEF0dHIuc3RyaW5nX3Byb3BlcnR5IFwidmFsdWVcIiB2YWx1ZTsgQXR0ci5vbl9pbnB1dCAoZnVuIF9ldiAtPiBvbl9pbnB1dCkgXVxuICAgIHw+IG1heWJlX29uX3JldHVybiBvbl9yZXR1cm5cbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyXG4gIDs7XG5cbiAgbGV0IHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgPyhzaG91bGRfbm9ybWFsaXplID0gdHJ1ZSlcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnR5cGVfYXR0cnNcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBsZXQgdmFsdWUgPVxuICAgICAgbGV0IHZhbHVlID0gT3B0aW9uLnZhbHVlX21hcCB+ZjpNLnRvX3N0cmluZyB2YWx1ZSB+ZGVmYXVsdDpcIlwiIGluXG4gICAgICBpZiBzaG91bGRfbm9ybWFsaXplXG4gICAgICB0aGVuIFZhbHVlX25vcm1hbGl6aW5nX2hvb2suY3JlYXRlIHZhbHVlIH5mOihub3JtYWxpemUgKG1vZHVsZSBNKSlcbiAgICAgIGVsc2UgVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6KGNvbnN0IE5vbmUpXG4gICAgaW5cbiAgICBbIENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IG9uX2lucHV0IE5vbmVcbiAgICAgICAgfCBzIC0+IG9uX2lucHV0IChPcHRpb24udHJ5X3dpdGggKGZ1biAoKSAtPiBNLm9mX3N0cmluZyBzKSkpXG4gICAgOyB2YWx1ZVxuICAgIF1cbiAgICB8PiBhZGRfYXR0cnMgdHlwZV9hdHRyc1xuICAgIHw+IGlucHV0X25vZGUgP2V4dHJhX2F0dHJzID9kaXNhYmxlZCA/cGxhY2Vob2xkZXJcbiAgOztcblxuICBsZXQgb2Zfc3RyaW5nYWJsZVxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcInRleHRcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCB2YWxpZGF0ZWRcbiAgICAgICAgKHR5cGUgdClcbiAgICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICAgID8oY2FsbF9vbl9pbnB1dF93aGVuID0gQ2FsbF9vbl9pbnB1dF93aGVuLlRleHRfY2hhbmdlZClcbiAgICAgICAgP2Rpc2FibGVkXG4gICAgICAgID9wbGFjZWhvbGRlclxuICAgICAgICA/b25fcmV0dXJuXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgbGV0IChtb2R1bGUgVikgPSBWYWxpZGF0ZWQubGlmdCAobW9kdWxlIE0pIGluXG4gICAgbGV0IHZhbHVlX2F0dHIgPVxuICAgICAgbWF0Y2ggKHZhbHVlIDogVi50KSB3aXRoXG4gICAgICB8IEluaXRpYWwgLT4gQXR0ci5zdHJpbmdfcHJvcGVydHkgXCJ2YWx1ZVwiIFwiXCJcbiAgICAgIHwgXyAtPiBWYWx1ZV9ub3JtYWxpemluZ19ob29rLmNyZWF0ZSAoVi50b19zdHJpbmcgdmFsdWUpIH5mOihub3JtYWxpemUgKG1vZHVsZSBWKSlcbiAgICBpblxuICAgIFsgQ2FsbF9vbl9pbnB1dF93aGVuLmxpc3RlbmVyIGNhbGxfb25faW5wdXRfd2hlbiAoZnVuIF9ldiBzIC0+XG4gICAgICAgIG9uX2lucHV0IChWLm9mX3N0cmluZyBzKSlcbiAgICA7IHZhbHVlX2F0dHJcbiAgICA7IEF0dHIudHlwZV8gXCJ0ZXh0XCJcbiAgICBdXG4gICAgfD4gbWF5YmVfb25fcmV0dXJuIG9uX3JldHVyblxuICAgIHw+IG1heWJlX2ludmFsaWQgdmFsdWVcbiAgICB8PiBpbnB1dF9ub2RlID9leHRyYV9hdHRycyA/ZGlzYWJsZWQgP3BsYWNlaG9sZGVyXG4gIDs7XG5cbiAgbGV0IHRleHQgP2V4dHJhX2F0dHJzID9jYWxsX29uX2lucHV0X3doZW4gP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+dmFsdWUgfm9uX2lucHV0ICgpID1cbiAgICBvZl9zdHJpbmdhYmxlXG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFN0cmluZylcbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IG51bWJlclxuICAgICAgICAodHlwZSB0KVxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgIChtb2R1bGUgTSA6IFN0cmluZ2FibGUuUyB3aXRoIHR5cGUgdCA9IHQpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+c3RlcFxuICAgICAgICB+b25faW5wdXRcbiAgICA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgTSlcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcIm51bWJlclwiOyBBdHRyLmNyZWF0ZV9mbG9hdCBcInN0ZXBcIiBzdGVwIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IHJhbmdlXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICAgID9kaXNhYmxlZFxuICAgICAgICA/cGxhY2Vob2xkZXJcbiAgICAgICAgKG1vZHVsZSBNIDogU3RyaW5nYWJsZS5TIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5zdGVwXG4gICAgICAgIH5vbl9pbnB1dFxuICAgID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBNKVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwicmFuZ2VcIjsgQXR0ci5jcmVhdGVfZmxvYXQgXCJzdGVwXCIgc3RlcCBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCB0aW1lID9leHRyYV9hdHRycyA/Y2FsbF9vbl9pbnB1dF93aGVuID9kaXNhYmxlZCA/cGxhY2Vob2xkZXIgfnZhbHVlIH5vbl9pbnB1dCAoKSA9XG4gICAgc3RyaW5nYWJsZV9pbnB1dF9vcHRcbiAgICAgID9leHRyYV9hdHRyc1xuICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgP2Rpc2FibGVkXG4gICAgICA/cGxhY2Vob2xkZXJcbiAgICAgIChtb2R1bGUgVGltZV9jb21wYXQuT2ZkYXkpXG4gICAgICB+c2hvdWxkX25vcm1hbGl6ZTpmYWxzZVxuICAgICAgfnR5cGVfYXR0cnM6WyBBdHRyLnR5cGVfIFwidGltZVwiIF1cbiAgICAgIH52YWx1ZVxuICAgICAgfm9uX2lucHV0XG4gIDs7XG5cbiAgbGV0IGRhdGUgP2V4dHJhX2F0dHJzID9jYWxsX29uX2lucHV0X3doZW4gP2Rpc2FibGVkID9wbGFjZWhvbGRlciB+dmFsdWUgfm9uX2lucHV0ICgpID1cbiAgICBzdHJpbmdhYmxlX2lucHV0X29wdFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/Y2FsbF9vbl9pbnB1dF93aGVuXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9wbGFjZWhvbGRlclxuICAgICAgKG1vZHVsZSBEYXRlKVxuICAgICAgfnNob3VsZF9ub3JtYWxpemU6ZmFsc2VcbiAgICAgIH50eXBlX2F0dHJzOlsgQXR0ci50eXBlXyBcImRhdGVcIiBdXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCBkYXRldGltZV9sb2NhbFxuICAgICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgICAgP2NhbGxfb25faW5wdXRfd2hlblxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAgID91dGNfb2Zmc2V0XG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgbGV0IGhvdXJzID1cbiAgICAgIE9wdGlvbi52YWx1ZV9tYXBcbiAgICAgICAgdXRjX29mZnNldFxuICAgICAgICAoKiBnZXRUaW1lem9uZU9mZnNldCByZXR1cm5zIHRoZSB0aW1lIHpvbmUgZGlmZmVyZW5jZSwgaW4gbWludXRlcywgZnJvbSBjdXJyZW50XG4gICAgICAgICAgIGxvY2FsZSB0byBVVEMuIFV0YyBvZmZzZXQgaXMgdGhlIGRpZmZlcmVuY2UgZnJvbSBVVEMgdG8gY3VycmVudCBsb2NhbGUgd2hpY2hcbiAgICAgICAgICAgaXMgd2hlcmUgdGhlIG1pbnVzIGNvbWVzIGZyb20uXG5cbiAgICAgICAgICAgVGhlIG1pbnV0ZXMgaGF2ZSB0byBiZSBjb252ZXJ0ZWQgdG8gaG91cnMgc2luY2UgdGhhdCBpcyB0aGUgZm9ybWF0XG4gICAgICAgICAgIFRpbWUuWm9uZS5vZl91dGNfb2Zmc2V0IGV4cGVjdHMgZm9yIHRoZSB1dGNfb2Zmc2V0LiAqKVxuICAgICAgICB+ZGVmYXVsdDooKG5ldyVqcyBKc19vZl9vY2FtbC5Kcy5kYXRlX25vdykjI2dldFRpbWV6b25lT2Zmc2V0IC8gLTYwKVxuICAgICAgICB+ZjooZnVuIHV0Y19vZmZzZXQgLT4gVGltZV9ucy5TcGFuLnRvX2hyIHV0Y19vZmZzZXQgfD4gRmxvYXQudG9faW50KVxuICAgIGluXG4gICAgbGV0IChtb2R1bGUgWm9uZWRfdGltZSkgPSBUaW1lX2NvbXBhdC56b25lZCAoVGltZS5ab25lLm9mX3V0Y19vZmZzZXQgfmhvdXJzKSBpblxuICAgIHN0cmluZ2FibGVfaW5wdXRfb3B0XG4gICAgICA/ZXh0cmFfYXR0cnNcbiAgICAgID9jYWxsX29uX2lucHV0X3doZW5cbiAgICAgID9kaXNhYmxlZFxuICAgICAgP3BsYWNlaG9sZGVyXG4gICAgICAobW9kdWxlIFpvbmVkX3RpbWUpXG4gICAgICB+dHlwZV9hdHRyczpbIEF0dHIudHlwZV8gXCJkYXRldGltZS1sb2NhbFwiIF1cbiAgICAgIH5zaG91bGRfbm9ybWFsaXplOmZhbHNlXG4gICAgICB+dmFsdWVcbiAgICAgIH5vbl9pbnB1dFxuICA7O1xuXG4gIGxldCB0ZXh0X2FyZWFcbiAgICAgICAgPyhleHRyYV9hdHRycyA9IFtdKVxuICAgICAgICA/KGNhbGxfb25faW5wdXRfd2hlbiA9IENhbGxfb25faW5wdXRfd2hlbi5UZXh0X2NoYW5nZWQpXG4gICAgICAgID8oZGlzYWJsZWQgPSBmYWxzZSlcbiAgICAgICAgPyhwbGFjZWhvbGRlciA9IFwiXCIpXG4gICAgICAgIH52YWx1ZVxuICAgICAgICB+b25faW5wdXRcbiAgICAgICAgKClcbiAgICA9XG4gICAgTm9kZS50ZXh0YXJlYVxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoWyBBdHRyLnBsYWNlaG9sZGVyIHBsYWNlaG9sZGVyXG4gICAgICAgICAgICA7IENhbGxfb25faW5wdXRfd2hlbi5saXN0ZW5lciBjYWxsX29uX2lucHV0X3doZW4gKGZ1biBfZXYgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICBvbl9pbnB1dCB2YWx1ZSlcbiAgICAgICAgICAgIDsgVmFsdWVfbm9ybWFsaXppbmdfaG9vay5jcmVhdGUgdmFsdWUgfmY6T3B0aW9uLnJldHVyblxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgfD4gbWF5YmVfZGlzYWJsZWQgfmRpc2FibGVkXG4gICAgICAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpKVxuICAgICAgW11cbiAgOztcblxuICAoKiBBY2NvcmRpbmcgdG9cbiAgICAgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9FbGVtZW50L2lucHV0L2NvbG9yI1ZhbHVlIHRoZVxuICAgICB2YWx1ZSBtdXN0IGJlIHNldCBpbiBoZXggZm9ybWF0IGFuZCB3aWxsIGFsd2F5cyBjb21lcyBiYWNrIGluIGhleCBmb3JtYXQuICopXG4gIGxldCBjb2xvcl9waWNrZXJcbiAgICAgICAgPyhleHRyYV9hdHRyID0gQXR0ci5lbXB0eSlcbiAgICAgICAgPyhjYWxsX29uX2lucHV0X3doZW4gPSBDYWxsX29uX2lucHV0X3doZW4uVGV4dF9jaGFuZ2VkKVxuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgfnZhbHVlXG4gICAgICAgIH5vbl9pbnB1dFxuICAgICAgICAoKVxuICAgID1cbiAgICBsZXQgKGBIZXggdmFsdWVfKSA9IHZhbHVlIGluXG4gICAgWyBBdHRyLih0eXBlXyBcImNvbG9yXCIgQCB2YWx1ZV9wcm9wIHZhbHVlXyBAIGV4dHJhX2F0dHIpXG4gICAgOyBDYWxsX29uX2lucHV0X3doZW4ubGlzdGVuZXIgY2FsbF9vbl9pbnB1dF93aGVuIChmdW4gX2V2IHMgLT4gb25faW5wdXQgKGBIZXggcykpXG4gICAgXVxuICAgIHw+IGlucHV0X25vZGUgP2Rpc2FibGVkXG4gIDs7XG5lbmRcblxubW9kdWxlIEJ1dHRvbiA9IHN0cnVjdFxuICBsZXQgd2l0aF92YWxpZGF0aW9uID8oZXh0cmFfYXR0cnMgPSBbXSkgdGV4dCB+dmFsaWRhdGlvbiB+b25fY2xpY2sgPVxuICAgIG1hdGNoIHZhbGlkYXRpb24gd2l0aFxuICAgIHwgT2sgcmVzdWx0IC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cjpcbiAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAoWyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIHJlc3VsdCk7IEF0dHIudHlwZV8gXCJidXR0b25cIiBdXG4gICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICAgIHwgRXJyb3IgcmVhc29uIC0+XG4gICAgICBOb2RlLmJ1dHRvblxuICAgICAgICB+YXR0cjpcbiAgICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgICAoWyBBdHRyLmRpc2FibGVkXG4gICAgICAgICAgICAgIDsgQXR0ci50eXBlXyBcImJ1dHRvblwiXG4gICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJ0b29sdGlwXCIgcmVhc29uXG4gICAgICAgICAgICAgIDsgQXR0ci5jcmVhdGUgXCJ0b29sdGlwLXBvc2l0aW9uXCIgXCJ0b3BcIlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICA7O1xuXG4gIGxldCBzaW1wbGUgPyhleHRyYV9hdHRycyA9IFtdKSA/KGRpc2FibGVkID0gZmFsc2UpIHRleHQgfm9uX2NsaWNrID1cbiAgICBOb2RlLmJ1dHRvblxuICAgICAgfmF0dHI6XG4gICAgICAgIChBdHRyLm1hbnlfd2l0aG91dF9tZXJnZVxuICAgICAgICAgICAoWyBBdHRyLnR5cGVfIFwiYnV0dG9uXCI7IEF0dHIub25fY2xpY2sgKGZ1biBfZXYgLT4gb25fY2xpY2sgKCkpIF1cbiAgICAgICAgICAgIHw+IG1heWJlX2Rpc2FibGVkIH5kaXNhYmxlZFxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIFsgTm9kZS50ZXh0IHRleHQgXVxuICA7O1xuZW5kXG5cbm1vZHVsZSBSYWRpb19idXR0b25zID0gc3RydWN0XG4gIG1vZHVsZSBTdHlsZSA9IHN0cnVjdFxuICAgIHR5cGUgdCA9XG4gICAgICB8IE5hdGl2ZVxuICAgICAgfCBCdXR0b25fbGlrZSBvZiB7IGV4dHJhX2F0dHJzIDogY2hlY2tlZDpib29sIC0+IEF0dHIudCBsaXN0IH1cblxuICAgIGxldCBiYXJlYm9uZXNfYnV0dG9uX2xpa2UgPVxuICAgICAgQnV0dG9uX2xpa2VcbiAgICAgICAgeyBleHRyYV9hdHRycyA9XG4gICAgICAgICAgICAoZnVuIH5jaGVja2VkIC0+XG4gICAgICAgICAgICAgICBpZiBjaGVja2VkXG4gICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgICAgQ3NzX2dlbi4oXG4gICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiM0MDQwNDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgQD4gY29sb3IgKGBIZXggXCIjRjdGN0Y3XCIpKVxuICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFsgQXR0ci5zdHlsZVxuICAgICAgICAgICAgICAgICAgICAgQ3NzX2dlbi4oXG4gICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciB+d2lkdGg6KGBQeCAxKSB+Y29sb3I6KGBIZXggXCIjRDBEMEQwXCIpIH5zdHlsZTpgU29saWQgKClcbiAgICAgICAgICAgICAgICAgICAgICAgQD4gYmFja2dyb3VuZF9jb2xvciAoYEhleCBcIiNFRkVGRUZcIikpXG4gICAgICAgICAgICAgICAgIF0pXG4gICAgICAgIH1cbiAgICA7O1xuICBlbmRcblxuICBsZXQgaGlkZV9uYXRpdmVfaW5wdXRzID1cbiAgICBDc3NfZ2VuLihjcmVhdGUgfmZpZWxkOlwiYXBwZWFyYW5jZVwiIH52YWx1ZTpcIm5vbmVcIiBAPiB1bmlmb3JtX21hcmdpbiAoYFB4IDApKVxuICA7O1xuXG4gIGxldCBpbXBsXG4gICAgICAgID8oZXh0cmFfYXR0cnMgPSBbXSlcbiAgICAgICAgPyhkaXNhYmxlZCA9IGZhbHNlKVxuICAgICAgICA/KHN0eWxlIDogU3R5bGUudCA9IE5hdGl2ZSlcbiAgICAgICAgfm9yaWVudGF0aW9uXG4gICAgICAgIH5uYW1lXG4gICAgICAgIH5vbl9jbGlja1xuICAgICAgICB+c2VsZWN0ZWRcbiAgICAgICAgfnRvX3N0cmluZ1xuICAgICAgICB+ZXF1YWxcbiAgICAgICAgdmFsdWVzXG4gICAgPVxuICAgIGxldCBpbnB1dF9hdHRycywgbGFiZWxfYXR0cnMgPVxuICAgICAgbWF0Y2ggc3R5bGUgd2l0aFxuICAgICAgfCBOYXRpdmUgLT4gW10sIGZ1biB+Y2hlY2tlZDpfIC0+IFtdXG4gICAgICB8IEJ1dHRvbl9saWtlIHsgZXh0cmFfYXR0cnMgfSAtPiBbIEF0dHIuc3R5bGUgaGlkZV9uYXRpdmVfaW5wdXRzIF0sIGV4dHJhX2F0dHJzXG4gICAgaW5cbiAgICBzdHJ1Y3R1cmFsX2xpc3RcbiAgICAgIH5vcmllbnRhdGlvblxuICAgICAgKFsgQXR0ci5jbGFzc2VzIFsgXCJ3aWRnZXQtcmFkaW8tYnV0dG9uc1wiOyBcInJhZGlvLWJ1dHRvbi1jb250YWluZXJcIiBdIF1cbiAgICAgICB8PiBhZGRfYXR0cnMgZXh0cmFfYXR0cnMpXG4gICAgICAoTGlzdC5tYXAgdmFsdWVzIH5mOihmdW4gaXRlbSAtPlxuICAgICAgICAgbGV0IGNoZWNrZWQgPSBPcHRpb24udmFsdWVfbWFwIHNlbGVjdGVkIH5kZWZhdWx0OmZhbHNlIH5mOihlcXVhbCBpdGVtKSBpblxuICAgICAgICAgTm9kZS5sYWJlbFxuICAgICAgICAgICB+YXR0cjooQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2UgKGxhYmVsX2F0dHJzIH5jaGVja2VkKSlcbiAgICAgICAgICAgWyBOb2RlLmlucHV0XG4gICAgICAgICAgICAgICB+YXR0cjpcbiAgICAgICAgICAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICA7IEF0dHIubmFtZSBuYW1lXG4gICAgICAgICAgICAgICAgICAgICA7IEF0dHIuY2xhc3NlcyBbIFwicmFkaW8tYnV0dG9uXCIgXVxuICAgICAgICAgICAgICAgICAgICAgOyBBdHRyLm9uX2NsaWNrIChmdW4gX2V2IC0+IG9uX2NsaWNrIGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICA7IEF0dHIuYm9vbF9wcm9wZXJ0eSBcImNoZWNrZWRcIiBjaGVja2VkXG4gICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICBAIGlucHV0X2F0dHJzXG4gICAgICAgICAgICAgICAgICAgICB8PiBtYXliZV9kaXNhYmxlZCB+ZGlzYWJsZWQpKVxuICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgOyBOb2RlLnRleHQgKHRvX3N0cmluZyBpdGVtKVxuICAgICAgICAgICBdKSlcbiAgOztcblxuICBsZXQgb2ZfdmFsdWVzXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3N0eWxlXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBWZXJ0aWNhbFxuICAgICAgfm5hbWVcbiAgICAgIH5vbl9jbGlja1xuICAgICAgfnNlbGVjdGVkXG4gICAgICB+dG9fc3RyaW5nOkUudG9fc3RyaW5nXG4gICAgICB+ZXF1YWw6RS5lcXVhbFxuICAgICAgdmFsdWVzXG4gIDs7XG5cbiAgbGV0IG9mX3ZhbHVlc19ob3Jpem9udGFsXG4gICAgICAgICh0eXBlIHQpXG4gICAgICAgID9leHRyYV9hdHRyc1xuICAgICAgICA/ZGlzYWJsZWRcbiAgICAgICAgP3N0eWxlXG4gICAgICAgIChtb2R1bGUgRSA6IEVxdWFsIHdpdGggdHlwZSB0ID0gdClcbiAgICAgICAgfm5hbWVcbiAgICAgICAgfm9uX2NsaWNrXG4gICAgICAgIH5zZWxlY3RlZFxuICAgICAgICB2YWx1ZXNcbiAgICA9XG4gICAgaW1wbFxuICAgICAgP2V4dHJhX2F0dHJzXG4gICAgICA/ZGlzYWJsZWRcbiAgICAgID9zdHlsZVxuICAgICAgfm9yaWVudGF0aW9uOmBIb3Jpem9udGFsXG4gICAgICB+bmFtZVxuICAgICAgfm9uX2NsaWNrXG4gICAgICB+c2VsZWN0ZWRcbiAgICAgIH50b19zdHJpbmc6RS50b19zdHJpbmdcbiAgICAgIH5lcXVhbDpFLmVxdWFsXG4gICAgICB2YWx1ZXNcbiAgOztcbmVuZFxuXG5tb2R1bGUgRmlsZV9zZWxlY3QgPSBzdHJ1Y3RcbiAgbW9kdWxlIEpzID0gSnNfb2Zfb2NhbWwuSnNcblxuICBsZXQgYWNjZXB0X2F0dHJzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQXR0ci5lbXB0eVxuICAgIHwgU29tZSBhY2NlcHRzIC0+XG4gICAgICBBdHRyLmNyZWF0ZVxuICAgICAgICBcImFjY2VwdFwiXG4gICAgICAgIChMaXN0Lm1hcCBhY2NlcHRzIH5mOihmdW5jdGlvblxuICAgICAgICAgICB8IGBFeHRlbnNpb24gcyAtPiBpZiBTdHJpbmcuaXNfcHJlZml4IHMgfnByZWZpeDpcIi5cIiB0aGVuIHMgZWxzZSBcIi5cIiBeIHNcbiAgICAgICAgICAgfCBgTWltZXR5cGUgcyAtPiBzKVxuICAgICAgICAgfD4gU3RyaW5nLmNvbmNhdCB+c2VwOlwiLFwiKVxuICA7O1xuXG4gIGxldCBsaXN0ID8oZXh0cmFfYXR0cnMgPSBbXSkgP2FjY2VwdCB+b25faW5wdXQgKCkgPVxuICAgIE5vZGUuaW5wdXRcbiAgICAgIH5hdHRyOlxuICAgICAgICAoQXR0ci5tYW55X3dpdGhvdXRfbWVyZ2VcbiAgICAgICAgICAgKFsgQXR0ci50eXBlXyBcImZpbGVcIlxuICAgICAgICAgICAgOyBhY2NlcHRfYXR0cnMgYWNjZXB0XG4gICAgICAgICAgICA7IEF0dHIuY3JlYXRlIFwibXVsdGlwbGVcIiBcIlwiXG4gICAgICAgICAgICA7IEF0dHIub25fZmlsZV9pbnB1dCAoZnVuIF9ldiBmaWxlX2xpc3QgLT5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZXMgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5pbml0IGZpbGVfbGlzdCMjLmxlbmd0aCB+ZjooZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgICAgZmlsZV9saXN0IyNpdGVtIGlcbiAgICAgICAgICAgICAgICAgICAgfD4gSnMuT3B0LnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICB8PiBPcHRpb24udmFsdWVfZXhuXG4gICAgICAgICAgICAgICAgICAgICAgICAgfm1lc3NhZ2U6WyVzdHJpbmcgXCJjb3VsZG4ndCBnZXQgZmlsZSAle2kjSW50fVwiXSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG9uX2lucHV0IGZpbGVzKVxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgfD4gYWRkX2F0dHJzIGV4dHJhX2F0dHJzKSlcbiAgICAgIFtdXG4gIDs7XG5cbiAgbGV0IHNpbmdsZSA/KGV4dHJhX2F0dHJzID0gW10pID9hY2NlcHQgfm9uX2lucHV0ICgpID1cbiAgICBOb2RlLmlucHV0XG4gICAgICB+YXR0cjpcbiAgICAgICAgKEF0dHIubWFueV93aXRob3V0X21lcmdlXG4gICAgICAgICAgIChbIEF0dHIudHlwZV8gXCJmaWxlXCJcbiAgICAgICAgICAgIDsgYWNjZXB0X2F0dHJzIGFjY2VwdFxuICAgICAgICAgICAgOyBBdHRyLm9uX2ZpbGVfaW5wdXQgKGZ1biBfZXYgZmlsZV9saXN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZpbGUgPSBmaWxlX2xpc3QjI2l0ZW0gMCB8PiBKcy5PcHQudG9fb3B0aW9uIGluXG4gICAgICAgICAgICAgICAgb25faW5wdXQgZmlsZSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHw+IGFkZF9hdHRycyBleHRyYV9hdHRycykpXG4gICAgICBbXVxuICA7O1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IChDKSBKZWFuLUNocmlzdG9waGUgRmlsbGlhdHJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgVGhpcyBzb2Z0d2FyZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgICAgICopXG4oKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICopXG4oKiAgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyAgICAgICAgICAgICopXG4oKiAgZGVzY3JpYmVkIGluIGZpbGUgTElDRU5TRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgICAgICopXG4oKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICopXG4oKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqcyBNYXBzIG9mIGludGVnZXJzIGltcGxlbWVudGVkIGFzIFBhdHJpY2lhIHRyZWVzLCBmb2xsb3dpbmcgQ2hyaXNcbiAgICBPa2FzYWtpIGFuZCBBbmRyZXcgR2lsbCdzIHBhcGVyIHtcXGVtIEZhc3QgTWVyZ2VhYmxlIEludGVnZXIgTWFwc31cbiAgICAoe1xcdHRcXHNtYWxsIGh0dHA6Ly93d3cuY3MuY29sdW1iaWEuZWR1L1xcfnt9Y2RvL3BhcGVycy5odG1sXFwjbWw5OG1hcHN9KS5cbiAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgbW9kdWxlIFtQdHNldF0gd2hpY2ggaXMgYWxzbyBiYXNlZCBvbiB0aGVcbiAgICBzYW1lIGRhdGEtc3RydWN0dXJlLiAqKVxuXG50eXBlIGtleSA9IGludFxuXG50eXBlICdhIHQgPVxuICB8IEVtcHR5XG4gIHwgTGVhZiBvZiBpbnQgKiAnYVxuICB8IEJyYW5jaCBvZiBpbnQgKiBpbnQgKiAnYSB0ICogJ2EgdFxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgdCA9IHQgPSBFbXB0eVxuXG5sZXQgemVyb19iaXQgayBtID0gKGsgbGFuZCBtKSA9PSAwXG5cbmxldCByZWMgbWVtIGsgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGZhbHNlXG4gIHwgTGVhZiAoaixfKSAtPiBrID09IGpcbiAgfCBCcmFuY2ggKF8sIG0sIGwsIHIpIC0+IG1lbSBrIChpZiB6ZXJvX2JpdCBrIG0gdGhlbiBsIGVsc2UgcilcblxubGV0IHJlYyBmaW5kIGsgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGoseCkgLT4gaWYgayA9PSBqIHRoZW4geCBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgbSwgbCwgcikgLT4gZmluZCBrIChpZiB6ZXJvX2JpdCBrIG0gdGhlbiBsIGVsc2UgcilcblxubGV0IGZpbmRfb3B0IGsgbSA9IHRyeSBTb21lIChmaW5kIGsgbSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG4oKiBOb3RlOiBmaW5kX2ZpcnN0L2xhc3QgaGF2ZSB0byBsb29rIGluIGJvdGggc3VidHJlZXNcbiAgIGFzIHRoZXNlIGFyZSBsaXR0bGUtZW5kaWFuIFBhdHJpY2lhIHRyZWVzICopXG5sZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIFNvbWUgKGoseCkgZWxzZSBOb25lXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfZmlyc3Rfb3B0IGYgbCwgZmluZF9maXJzdF9vcHQgZiByIHdpdGhcbiAgICB8IFNvbWUgKGxrLGx2KSAsIFNvbWUgKHJrLHJ2KSAtPlxuICAgICAgICBpZiBsayA8IHJrIHRoZW4gU29tZSAobGssbHYpIGVsc2UgU29tZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gU29tZSB2XG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcblxubGV0IGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiAoaix4KSBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2ZpcnN0X29wdCBmIGwsIGZpbmRfZmlyc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT4gaWYgbGsgPCByayB0aGVuIChsayxsdikgZWxzZSAocmsscnYpXG4gICAgfCBTb21lIHYsIE5vbmUgfCBOb25lLCBTb21lIHYgLT4gdlxuICAgIHwgTm9uZSwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBmaW5kX2xhc3Rfb3B0IGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChqLHgpIC0+IGlmIGYgaiB0aGVuIFNvbWUgKGoseCkgZWxzZSBOb25lXG4gIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPlxuICAgIG1hdGNoIGZpbmRfbGFzdF9vcHQgZiBsLCBmaW5kX2xhc3Rfb3B0IGYgciB3aXRoXG4gICAgfCBTb21lIChsayxsdikgLCBTb21lIChyayxydikgLT5cbiAgICAgICAgaWYgbGsgPiByayB0aGVuIFNvbWUgKGxrLGx2KSBlbHNlIFNvbWUgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IFNvbWUgdlxuICAgIHwgTm9uZSwgTm9uZSAtPiBOb25lXG5cbmxldCBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgTGVhZiAoaix4KSAtPiBpZiBmIGogdGhlbiAoaix4KSBlbHNlIHJhaXNlIE5vdF9mb3VuZFxuICB8IEJyYW5jaCAoXywgXywgbCwgcikgLT5cbiAgICBtYXRjaCBmaW5kX2xhc3Rfb3B0IGYgbCwgZmluZF9sYXN0X29wdCBmIHIgd2l0aFxuICAgIHwgU29tZSAobGssbHYpICwgU29tZSAocmsscnYpIC0+IGlmIGxrID4gcmsgdGhlbiAobGssbHYpIGVsc2UgKHJrLHJ2KVxuICAgIHwgU29tZSB2LCBOb25lIHwgTm9uZSwgU29tZSB2IC0+IHZcbiAgICB8IE5vbmUsIE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBsb3dlc3RfYml0IHggPSB4IGxhbmQgKC14KVxuXG5sZXQgYnJhbmNoaW5nX2JpdCBwMCBwMSA9IGxvd2VzdF9iaXQgKHAwIGx4b3IgcDEpXG5cbmxldCBtYXNrIHAgbSA9IHAgbGFuZCAobS0xKVxuXG5sZXQgam9pbiAocDAsdDAscDEsdDEpID1cbiAgbGV0IG0gPSBicmFuY2hpbmdfYml0IHAwIHAxIGluXG4gIGlmIHplcm9fYml0IHAwIG0gdGhlblxuICAgIEJyYW5jaCAobWFzayBwMCBtLCBtLCB0MCwgdDEpXG4gIGVsc2VcbiAgICBCcmFuY2ggKG1hc2sgcDAgbSwgbSwgdDEsIHQwKVxuXG5sZXQgbWF0Y2hfcHJlZml4IGsgcCBtID0gKG1hc2sgayBtKSA9PSBwXG5cbmxldCBhZGQgayB4IHQgPVxuICBsZXQgcmVjIGlucyA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBMZWFmIChrLHgpXG4gICAgfCBMZWFmIChqLF8pIGFzIHQgLT5cbiAgICAgIGlmIGogPT0gayB0aGVuIExlYWYgKGsseCkgZWxzZSBqb2luIChrLCBMZWFmIChrLHgpLCBqLCB0KVxuICAgIHwgQnJhbmNoIChwLG0sdDAsdDEpIGFzIHQgLT5cbiAgICAgIGlmIG1hdGNoX3ByZWZpeCBrIHAgbSB0aGVuXG5cdGlmIHplcm9fYml0IGsgbSB0aGVuXG5cdCAgQnJhbmNoIChwLCBtLCBpbnMgdDAsIHQxKVxuXHRlbHNlXG5cdCAgQnJhbmNoIChwLCBtLCB0MCwgaW5zIHQxKVxuICAgICAgZWxzZVxuXHRqb2luIChrLCBMZWFmIChrLHgpLCBwLCB0KVxuICBpblxuICBpbnMgdFxuXG5sZXQgc2luZ2xldG9uIGsgdiA9XG4gIGFkZCBrIHYgZW1wdHlcblxubGV0IGJyYW5jaCA9IGZ1bmN0aW9uXG4gIHwgKF8sXyxFbXB0eSx0KSAtPiB0XG4gIHwgKF8sXyx0LEVtcHR5KSAtPiB0XG4gIHwgKHAsbSx0MCx0MSkgICAtPiBCcmFuY2ggKHAsbSx0MCx0MSlcblxubGV0IHJlbW92ZSBrIHQgPVxuICBsZXQgcmVjIHJtdiA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBFbXB0eVxuICAgIHwgTGVhZiAoaixfKSBhcyB0IC0+IGlmIGsgPT0gaiB0aGVuIEVtcHR5IGVsc2UgdFxuICAgIHwgQnJhbmNoIChwLG0sdDAsdDEpIGFzIHQgLT5cbiAgICAgIGlmIG1hdGNoX3ByZWZpeCBrIHAgbSB0aGVuXG5cdGlmIHplcm9fYml0IGsgbSB0aGVuXG5cdCAgYnJhbmNoIChwLCBtLCBybXYgdDAsIHQxKVxuXHRlbHNlXG5cdCAgYnJhbmNoIChwLCBtLCB0MCwgcm12IHQxKVxuICAgICAgZWxzZVxuXHR0XG4gIGluXG4gIHJtdiB0XG5cbmxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IDBcbiAgfCBMZWFmIF8gLT4gMVxuICB8IEJyYW5jaCAoXyxfLHQwLHQxKSAtPiBjYXJkaW5hbCB0MCArIGNhcmRpbmFsIHQxXG5cbmxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiAoKVxuICB8IExlYWYgKGsseCkgLT4gZiBrIHhcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gaXRlciBmIHQwOyBpdGVyIGYgdDFcblxubGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLHgpIC0+IExlYWYgKGssIGYgeClcbiAgfCBCcmFuY2ggKHAsbSx0MCx0MSkgLT4gQnJhbmNoIChwLCBtLCBtYXAgZiB0MCwgbWFwIGYgdDEpXG5cbmxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGsseCkgLT4gTGVhZiAoaywgZiBrIHgpXG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IEJyYW5jaCAocCwgbSwgbWFwaSBmIHQwLCBtYXBpIGYgdDEpXG5cbmxldCByZWMgZm9sZCBmIHMgYWNjdSA9IG1hdGNoIHMgd2l0aFxuICB8IEVtcHR5IC0+IGFjY3VcbiAgfCBMZWFmIChrLHgpIC0+IGYgayB4IGFjY3VcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZm9sZCBmIHQwIChmb2xkIGYgdDEgYWNjdSlcblxubGV0IHJlYyBmb3JfYWxsIHAgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBMZWFmIChrLCB2KSAgLT4gcCBrIHZcbiAgfCBCcmFuY2ggKF8sXyx0MCx0MSkgLT4gZm9yX2FsbCBwIHQwICYmIGZvcl9hbGwgcCB0MVxuXG5sZXQgcmVjIGV4aXN0cyBwID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBmYWxzZVxuICB8IExlYWYgKGssIHYpIC0+IHAgayB2XG4gIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IGV4aXN0cyBwIHQwIHx8IGV4aXN0cyBwIHQxXG5cbmxldCByZWMgZmlsdGVyIHByID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBFbXB0eVxuICB8IExlYWYgKGssIHYpIGFzIHQgLT4gaWYgcHIgayB2IHRoZW4gdCBlbHNlIEVtcHR5XG4gIHwgQnJhbmNoIChwLG0sdDAsdDEpIC0+IGJyYW5jaCAocCwgbSwgZmlsdGVyIHByIHQwLCBmaWx0ZXIgcHIgdDEpXG5cbmxldCByZWMgZmlsdGVyX21hcCBwciA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBMZWFmIChrLCB2KSAtPiAobWF0Y2ggcHIgayB2IHdpdGggU29tZSB2JyAtPiBMZWFmIChrLCB2JykgfCBOb25lIC0+IEVtcHR5KVxuICB8IEJyYW5jaCAocCxtLHQwLHQxKSAtPiBicmFuY2ggKHAsIG0sIGZpbHRlcl9tYXAgcHIgdDAsIGZpbHRlcl9tYXAgcHIgdDEpXG5cbmxldCBwYXJ0aXRpb24gcCBzID1cbiAgbGV0IHJlYyBwYXJ0ICh0LGYgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiBhY2NcbiAgICB8IExlYWYgKGssIHYpIC0+IGlmIHAgayB2IHRoZW4gKGFkZCBrIHYgdCwgZikgZWxzZSAodCwgYWRkIGsgdiBmKVxuICAgIHwgQnJhbmNoIChfLF8sdDAsdDEpIC0+IHBhcnQgKHBhcnQgYWNjIHQwKSB0MVxuICBpblxuICBwYXJ0IChFbXB0eSwgRW1wdHkpIHNcblxubGV0IHJlYyBjaG9vc2UgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXywgXywgdDAsIF8pIC0+IGNob29zZSB0MCAgICgqIHdlIGtub3cgdGhhdCBbdDBdIGlzIG5vbi1lbXB0eSAqKVxuXG5sZXQgcmVjIGNob29zZV9vcHQgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBMZWFmIChrLCB2KSAtPiBTb21lIChrLCB2KVxuICB8IEJyYW5jaCAoXywgXywgdDAsIF8pIC0+IGNob29zZV9vcHQgdDAgICAoKiB3ZSBrbm93IHRoYXQgW3QwXSBpcyBub24tZW1wdHkgKilcblxubGV0IHNwbGl0IHggbSA9XG4gIGxldCBjb2xsIGsgdiAobCwgYiwgcikgPVxuICAgIGlmIGsgPCB4IHRoZW4gYWRkIGsgdiBsLCBiLCByXG4gICAgZWxzZSBpZiBrID4geCB0aGVuIGwsIGIsIGFkZCBrIHYgclxuICAgIGVsc2UgbCwgU29tZSB2LCByXG4gIGluXG4gIGZvbGQgY29sbCBtIChlbXB0eSwgTm9uZSwgZW1wdHkpXG5cbmxldCByZWMgbWluX2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBsZXQgKGtzLCBfKSBhcyBicyA9IG1pbl9iaW5kaW5nIHMgaW5cbiAgICBsZXQgKGt0LCBfKSBhcyBidCA9IG1pbl9iaW5kaW5nIHQgaW5cbiAgICBpZiBrcyA8IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIG1hdGNoIChtaW5fYmluZGluZ19vcHQgcywgbWluX2JpbmRpbmdfb3B0IHQpIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gTm9uZVxuICAgIHwgTm9uZSwgYnQgLT4gYnRcbiAgICB8IGJzLCBOb25lIC0+IGJzXG4gICAgfCAoU29tZSAoa3MsIF8pIGFzIGJzKSwgKFNvbWUgKGt0LCBfKSBhcyBidCkgLT5cbiAgICAgIGlmIGtzIDwga3QgdGhlbiBicyBlbHNlIGJ0XG5cbmxldCByZWMgbWF4X2JpbmRpbmcgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IExlYWYgKGssIHYpIC0+IChrLCB2KVxuICB8IEJyYW5jaCAoXyxfLHMsdCkgLT5cbiAgICBsZXQgKGtzLCBfKSBhcyBicyA9IG1heF9iaW5kaW5nIHMgaW5cbiAgICBsZXQgKGt0LCBfKSBhcyBidCA9IG1heF9iaW5kaW5nIHQgaW5cbiAgICBpZiBrcyA+IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgcmVjIG1heF9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9uZVxuICB8IExlYWYgKGssIHYpIC0+IFNvbWUgKGssIHYpXG4gIHwgQnJhbmNoIChfLF8scyx0KSAtPlxuICAgIG1hdGNoIG1heF9iaW5kaW5nX29wdCBzLCBtYXhfYmluZGluZ19vcHQgdCB3aXRoXG4gICAgfCBOb25lLCBOb25lIC0+IE5vbmVcbiAgICB8IE5vbmUsIGJ0IC0+IGJ0XG4gICAgfCBicywgTm9uZSAtPiBic1xuICAgIHwgKFNvbWUgKGtzLCBfKSBhcyBicyksIChTb21lIChrdCwgXykgYXMgYnQpIC0+XG4gICAgICBpZiBrcyA+IGt0IHRoZW4gYnMgZWxzZSBidFxuXG5sZXQgYmluZGluZ3MgbSA9XG4gIGZvbGQgKGZ1biBrIHYgYWNjIC0+IChrLCB2KSA6OiBhY2MpIG0gW11cblxuKCogd2Ugb3JkZXIgY29uc3RydWN0b3JzIGFzIEVtcHR5IDwgTGVhZiA8IEJyYW5jaCAqKVxubGV0IGNvbXBhcmUgY21wIHQxIHQyID1cbiAgbGV0IHJlYyBjb21wYXJlX2F1eCB0MSB0MiA9IG1hdGNoIHQxLHQyIHdpdGhcbiAgICB8IEVtcHR5LCBFbXB0eSAtPiAwXG4gICAgfCBFbXB0eSwgXyAtPiAtMVxuICAgIHwgXywgRW1wdHkgLT4gMVxuICAgIHwgTGVhZiAoazEseDEpLCBMZWFmIChrMix4MikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBrMSBrMiBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlIGNtcCB4MSB4MlxuICAgIHwgTGVhZiBfLCBCcmFuY2ggXyAtPiAtMVxuICAgIHwgQnJhbmNoIF8sIExlYWYgXyAtPiAxXG4gICAgfCBCcmFuY2ggKHAxLG0xLGwxLHIxKSwgQnJhbmNoIChwMixtMixsMixyMikgLT5cbiAgICAgIGxldCBjID0gY29tcGFyZSBwMSBwMiBpblxuICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG5cdGxldCBjID0gY29tcGFyZSBtMSBtMiBpblxuXHRpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgICAgICBsZXQgYyA9IGNvbXBhcmVfYXV4IGwxIGwyIGluXG4gICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCByMSByMlxuICBpblxuICBjb21wYXJlX2F1eCB0MSB0MlxuXG5sZXQgZXF1YWwgZXEgdDEgdDIgPVxuICBsZXQgcmVjIGVxdWFsX2F1eCB0MSB0MiA9IG1hdGNoIHQxLCB0MiB3aXRoXG4gICAgfCBFbXB0eSwgRW1wdHkgLT4gdHJ1ZVxuICAgIHwgTGVhZiAoazEseDEpLCBMZWFmIChrMix4MikgLT4gazEgPSBrMiAmJiBlcSB4MSB4MlxuICAgIHwgQnJhbmNoIChwMSxtMSxsMSxyMSksIEJyYW5jaCAocDIsbTIsbDIscjIpIC0+XG4gICAgICBwMSA9IHAyICYmIG0xID0gbTIgJiYgZXF1YWxfYXV4IGwxIGwyICYmIGVxdWFsX2F1eCByMSByMlxuICAgIHwgXyAtPiBmYWxzZVxuICBpblxuICBlcXVhbF9hdXggdDEgdDJcblxubGV0IG1lcmdlIGYgbTEgbTIgPVxuICBsZXQgYWRkIG0gayA9IGZ1bmN0aW9uIE5vbmUgLT4gbSB8IFNvbWUgdiAtPiBhZGQgayB2IG0gaW5cbiAgKCogZmlyc3QgY29uc2lkZXIgYWxsIGJpbmRpbmdzIGluIG0xICopXG4gIGxldCBtID0gZm9sZFxuICAgICAgKGZ1biBrMSB2MSBtIC0+IGFkZCBtIGsxIChmIGsxIChTb21lIHYxKSAoZmluZF9vcHQgazEgbTIpKSkgbTEgZW1wdHkgaW5cbiAgKCogdGhlbiBiaW5kaW5ncyBpbiBtMiB0aGF0IGFyZSBub3QgaW4gbTEgKilcbiAgZm9sZCAoZnVuIGsyIHYyIG0gLT4gaWYgbWVtIGsyIG0xIHRoZW4gbSBlbHNlIGFkZCBtIGsyIChmIGsyIE5vbmUgKFNvbWUgdjIpKSlcbiAgICBtMiBtXG5cbmxldCB1cGRhdGUgeCBmIG0gPVxuICBtYXRjaCBmIChmaW5kX29wdCB4IG0pIHdpdGhcbiAgfCBOb25lIC0+IHJlbW92ZSB4IG1cbiAgfCBTb21lIHogLT4gYWRkIHggeiBtXG5cbmxldCB1bnNpZ25lZF9sdCBuIG0gPSBuID49IDAgJiYgKG0gPCAwIHx8IG4gPCBtKVxuXG5sZXQgcmVjIHVuaW9uIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5LCB0ICAtPiB0XG4gIHwgdCwgRW1wdHkgIC0+IHRcbiAgfCBMZWFmIChrLHYxKSwgdCAtPlxuICAgICAgdXBkYXRlIGsgKGZ1bmN0aW9uIE5vbmUgLT4gU29tZSB2MSB8IFNvbWUgdjIgLT4gZiBrIHYxIHYyKSB0XG4gIHwgdCwgTGVhZiAoayx2MikgLT5cbiAgICAgIHVwZGF0ZSBrIChmdW5jdGlvbiBOb25lIC0+IFNvbWUgdjIgfCBTb21lIHYxIC0+IGYgayB2MSB2MikgdFxuICB8IChCcmFuY2ggKHAsbSxzMCxzMSkgYXMgcyksIChCcmFuY2ggKHEsbix0MCx0MSkgYXMgdCkgLT5cbiAgICAgIGlmIG0gPT0gbiAmJiBtYXRjaF9wcmVmaXggcSBwIG0gdGhlblxuXHQoKiBUaGUgdHJlZXMgaGF2ZSB0aGUgc2FtZSBwcmVmaXguIE1lcmdlIHRoZSBzdWJ0cmVlcy4gKilcblx0YnJhbmNoIChwLCBtLCB1bmlvbiBmIChzMCx0MCksIHVuaW9uIGYgKHMxLHQxKSlcbiAgICAgIGVsc2UgaWYgdW5zaWduZWRfbHQgbSBuICYmIG1hdGNoX3ByZWZpeCBxIHAgbSB0aGVuXG5cdCgqIFtxXSBjb250YWlucyBbcF0uIE1lcmdlIFt0XSB3aXRoIGEgc3VidHJlZSBvZiBbc10uICopXG5cdGlmIHplcm9fYml0IHEgbSB0aGVuXG5cdCAgYnJhbmNoIChwLCBtLCB1bmlvbiBmIChzMCx0KSwgczEpXG4gICAgICAgIGVsc2Vcblx0ICBicmFuY2ggKHAsIG0sIHMwLCB1bmlvbiBmIChzMSx0KSlcbiAgICAgIGVsc2UgaWYgdW5zaWduZWRfbHQgbiBtICYmIG1hdGNoX3ByZWZpeCBwIHEgbiB0aGVuXG5cdCgqIFtwXSBjb250YWlucyBbcV0uIE1lcmdlIFtzXSB3aXRoIGEgc3VidHJlZSBvZiBbdF0uICopXG5cdGlmIHplcm9fYml0IHAgbiB0aGVuXG5cdCAgYnJhbmNoIChxLCBuLCB1bmlvbiBmIChzLHQwKSwgdDEpXG5cdGVsc2Vcblx0ICBicmFuY2ggKHEsIG4sIHQwLCB1bmlvbiBmIChzLHQxKSlcbiAgICAgIGVsc2Vcblx0KCogVGhlIHByZWZpeGVzIGRpc2FncmVlLiAqKVxuXHRqb2luIChwLCBzLCBxLCB0KVxuXG5sZXQgdW5pb24gZiBzIHQgPSB1bmlvbiBmIChzLHQpXG5cbmxldCB0b19zZXEgbSA9XG4gIGxldCByZWMgcHJlcGVuZF9zZXEgbSBzID0gbWF0Y2ggbSB3aXRoXG4gICAgfCBFbXB0eSAtPiBzXG4gICAgfCBMZWFmIChrLCB2KSAtPiBmdW4gKCkgLT4gU2VxLkNvbnMoKGssdiksIHMpXG4gICAgfCBCcmFuY2ggKF8sIF8sIGwsIHIpIC0+IHByZXBlbmRfc2VxIGwgKHByZXBlbmRfc2VxIHIgcylcbiAgaW5cbiAgcHJlcGVuZF9zZXEgbSBTZXEuZW1wdHlcblxubGV0IHRvX3NlcV9mcm9tIGsgbSA9XG4gIGxldCByZWMgcHJlcGVuZF9zZXEgbSBzID0gbWF0Y2ggbSB3aXRoXG4gICAgfCBFbXB0eSAtPiBzXG4gICAgfCBMZWFmIChrZXksIHYpIC0+IGlmIGtleSA+PSBrIHRoZW4gZnVuICgpIC0+IFNlcS5Db25zKChrZXksdiksIHMpIGVsc2Ugc1xuICAgIHwgQnJhbmNoIChfLCBfLCBsLCByKSAtPiBwcmVwZW5kX3NlcSBsIChwcmVwZW5kX3NlcSByIHMpXG4gIGluXG4gIHByZXBlbmRfc2VxIG0gU2VxLmVtcHR5XG5cbmxldCBhZGRfc2VxIHMgbSA9XG4gIFNlcS5mb2xkX2xlZnQgKGZ1biBtIChrLCB2KSAtPiBhZGQgayB2IG0pIG0gc1xuXG5sZXQgb2Zfc2VxIHMgPVxuICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoaywgdikgLT4gYWRkIGsgdiBtKSBlbXB0eSBzXG4iLCJsZXQgdXRmOF9vZl9jb2RlIGJ1ZiB4ID1cbiAgbGV0IGFkZCA9IEJ1ZmZlci5hZGRfY2hhciBpblxuXG4gICgqIFN0cmFpZ2h0IDw9IGRvZXNuJ3Qgd29yayB3aXRoIHNpZ25lZCAzMS1iaXQgaW50cyAqKVxuICBsZXQgbWF4Yml0cyBuIHggPSB4IGxzciBuID0gMCBpblxuXG4gIGlmIG1heGJpdHMgNyB4IHRoZW4gKCogNyAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyIHgpXG4gIGVsc2UgaWYgbWF4Yml0cyAxMSB4IHRoZW4gKFxuICAgICgqIDUgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTEwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMDExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAxNiB4IHRoZW4gKFxuICAgICgqIDQgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAwMDExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyMSB4IHRoZW4gKFxuICAgICgqIDMgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMDAwMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgaWYgbWF4Yml0cyAyNiB4IHRoZW4gKFxuICAgICgqIDIgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTEwMDAgbG9yICgoeCBsc3IgMjQpIGxhbmQgMGIwMDAwMDAxMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxOCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDEyKSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgNikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoeCBsYW5kIDBiMDAxMTExMTEpKSkpXG4gIGVsc2UgKFxuICAgIGFzc2VydCAobWF4Yml0cyAzMSB4KTtcbiAgICAoKiAxICsgNiArIDYgKyA2ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTExMTEwMCBsb3IgKCh4IGxzciAzMCkgbGFuZCAwYjAwMDAwMDAxKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuXG5sZXQgY29kZV9vZl9zdXJyb2dhdGVfcGFpciBpIGogPVxuICBsZXQgaGlnaDEwID0gaSAtIDB4RDgwMCBpblxuICBsZXQgbG93MTAgPSBqIC0gMHhEQzAwIGluXG4gIDB4MTAwMDAgKyAoKGhpZ2gxMCBsc2wgMTApIGxvciBsb3cxMClcblxubGV0IHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgYnVmIGkgaiA9XG4gIHV0Zjhfb2ZfY29kZSBidWYgKGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqKVxuIiwibGV0IHZlcnNpb24gPSBcIjIuMS4yXCJcblxuZXhjZXB0aW9uIEpzb25fZXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBqc29uX2Vycm9yIHMgPSByYWlzZSAoSnNvbl9lcnJvciBzKVxuXG5leGNlcHRpb24gRW5kX29mX2FycmF5XG5leGNlcHRpb24gRW5kX29mX29iamVjdFxuZXhjZXB0aW9uIEVuZF9vZl90dXBsZVxuZXhjZXB0aW9uIEVuZF9vZl9pbnB1dFxuXG50eXBlIGxleGVyX3N0YXRlID0ge1xuICBidWYgOiBCdWZmZXIudDsgKCogQnVmZmVyIHVzZWQgdG8gYWNjdW11bGF0ZSBzdWJzdHJpbmdzICopXG4gIG11dGFibGUgbG51bSA6IGludDsgKCogQ3VycmVudCBsaW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAxKSAqKVxuICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICAgICgqIEFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGN1cnJlbnQgbGluZVxuICAgICAgICAgKHN0YXJ0aW5nIGZyb20gMCkgKilcbiAgbXV0YWJsZSBmbmFtZSA6IHN0cmluZyBvcHRpb247ICgqIE5hbWUgZGVzY3JpYmluZyB0aGUgaW5wdXQgZmlsZSAqKVxufVxuXG5tb2R1bGUgTGV4ZXJfc3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gbGV4ZXJfc3RhdGUgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5lbmRcblxubGV0IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgPyhsbnVtID0gMSkgKCkgPVxuICBsZXQgYnVmID0gbWF0Y2ggYnVmIHdpdGggTm9uZSAtPiBCdWZmZXIuY3JlYXRlIDI1NiB8IFNvbWUgYnVmIC0+IGJ1ZiBpblxuICB7IGJ1ZjsgbG51bTsgYm9sID0gMDsgZm5hbWUgfVxuIiwibGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFzZV9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfYmFja3Rya19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfdHJhbnNfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jb2RlID1cbiAgIFwiXCI7XG59XG5cbmxldCByZWMgcmVhZF9qdW5rIGJ1ZiBuIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2p1bmtfcmVjIGJ1ZiBuIGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qdW5rX3JlYyBidWYgbiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDIgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiAgICAgICAgKCAoKSApXG4jIDk4IFwibGliL2xleGVyX3V0aWxzLm1sXCJcblxuICB8IDEgLT5cbiMgMyBcImxpYi9sZXhlcl91dGlscy5tbGxcIlxuICAgICAgKFxuICAgICBpZiBuIDw9IDAgdGhlbiAoKVxuICAgICBlbHNlIGJlZ2luXG4gICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoTGV4aW5nLmxleGVtZV9jaGFyIGxleGJ1ZiAwKTtcbiAgICAgICByZWFkX2p1bmsgYnVmIChuIC0gMSkgbGV4YnVmXG4gICAgIGVuZFxuICAgICApXG4jIDEwOSBcImxpYi9sZXhlcl91dGlscy5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanVua19yZWMgYnVmIG4gbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTEgXCJsaWIvbGV4ZXJfdXRpbHMubWxsXCJcbiBcbmxldCByZWFkX2p1bmtfd2l0aG91dF9wb3NpdGlvbnMgYnVmIG4gKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgbGV0IGp1bmtfc3RhcnRfcG9zID0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgcmVhZF9qdW5rIGJ1ZiBuIGxleGJ1ZjtcbiAgbGV4YnVmLmxleF9zdGFydF9wb3MgPC0ganVua19zdGFydF9wb3MgKyAxXG5cbiMgMTIzIFwibGliL2xleGVyX3V0aWxzLm1sXCJcbiIsIm9wZW4gU3RkTGFiZWxzXG5vcGVuIE1vcmVMYWJlbHNcbm9wZW4hIFlvanNvblxuXG50eXBlIHQgPSBZb2pzb24uU2FmZS50XG5cbmxldCB5b2pzb25fb2ZfdW5pdCAoKSA6IHQgPSBgTnVsbFxubGV0IHlvanNvbl9vZl9ib29sIGIgOiB0ID0gYEJvb2wgYlxubGV0IHlvanNvbl9vZl9zdHJpbmcgc3RyIDogdCA9IGBTdHJpbmcgc3RyXG5sZXQgeW9qc29uX29mX2J5dGVzIGJ5dGVzIDogdCA9IGBTdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBieXRlcylcbmxldCB5b2pzb25fb2ZfY2hhciBjIDogdCA9IGBTdHJpbmcgKFN0cmluZy5tYWtlIDEgYylcbmxldCB5b2pzb25fb2ZfaW50IG4gOiB0ID0gYEludCBuXG5sZXQgeW9qc29uX29mX2Zsb2F0IG4gOiB0ID0gYEZsb2F0IG5cbmxldCB5b2pzb25fb2ZfaW50MzIgKG4gOiBJbnQzMi50KSA6IHQgPSBgSW50bGl0IChJbnQzMi50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfaW50NjQgKG4gOiBJbnQ2NC50KSA6IHQgPSBgSW50bGl0IChJbnQ2NC50b19zdHJpbmcgbilcbmxldCB5b2pzb25fb2ZfbmF0aXZlaW50IG4gOiB0ID0gYEludGxpdCAoTmF0aXZlaW50LnRvX3N0cmluZyBuKVxubGV0IHlvanNvbl9vZl9yZWYgeW9qc29uX29mX19hIHJmID0geW9qc29uX29mX19hICFyZlxubGV0IHlvanNvbl9vZl9sYXp5X3QgeW9qc29uX29mX19hIGx2ID0geW9qc29uX29mX19hIChMYXp5LmZvcmNlIGx2KVxuXG5sZXQgeW9qc29uX29mX29wdGlvbiB5b2pzb25fb2ZfX2EgPSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPiB5b2pzb25fb2ZfX2EgeFxuICB8IE5vbmUgLT4gYE51bGxcbjs7XG5cbmxldCB5b2pzb25fb2ZfcGFpciB5b2pzb25fb2ZfX2EgeW9qc29uX29mX19iIChhLCBiKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiIF1cbjs7XG5cbmxldCB5b2pzb25fb2ZfdHJpcGxlIHlvanNvbl9vZl9fYSB5b2pzb25fb2ZfX2IgeW9qc29uX29mX19jIChhLCBiLCBjKSA9XG4gIGBMaXN0IFsgeW9qc29uX29mX19hIGE7IHlvanNvbl9vZl9fYiBiOyB5b2pzb25fb2ZfX2MgYyBdXG47O1xuXG4oKiBMaXN0LnJldiAoTGlzdC5yZXZfbWFwIC4uLikgaXMgdGFpbCByZWN1cnNpdmUsIHRoZSBPQ2FtbCBzdGFuZGFyZFxuICAgbGlicmFyeSBMaXN0Lm1hcCBpcyBOT1QuICopXG5sZXQgeW9qc29uX29mX2xpc3QgeW9qc29uX29mX19hIGxzdCA9IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIH5mOnlvanNvbl9vZl9fYSBsc3QpKVxuXG5sZXQgeW9qc29uX29mX2FycmF5IHlvanNvbl9vZl9fYSBhciA9XG4gIGxldCBsc3RfcmVmID0gcmVmIFtdIGluXG4gIGZvciBpID0gQXJyYXkubGVuZ3RoIGFyIC0gMSBkb3dudG8gMCBkb1xuICAgIGxzdF9yZWYgOj0geW9qc29uX29mX19hIGFyLihpKSA6OiAhbHN0X3JlZlxuICBkb25lO1xuICBgTGlzdCAhbHN0X3JlZlxuOztcblxubGV0IHlvanNvbl9vZl9oYXNodGJsIHlvanNvbl9vZl9rZXkgeW9qc29uX29mX3ZhbCBodGJsID1cbiAgbGV0IGNvbGwgfmtleTprIH5kYXRhOnYgYWNjID0gYExpc3QgWyB5b2pzb25fb2Zfa2V5IGs7IHlvanNvbl9vZl92YWwgdiBdIDo6IGFjYyBpblxuICBgTGlzdCAoSGFzaHRibC5mb2xkIGh0YmwgfmluaXQ6W10gfmY6Y29sbClcbjs7XG5cbmxldCB5b2pzb25fb2Zfb3BhcXVlIF8gPSBgU3RyaW5nIFwiPG9wYXF1ZT5cIlxubGV0IHlvanNvbl9vZl9mdW4gXyA9IGBTdHJpbmcgXCI8ZnVuPlwiXG5cbmV4Y2VwdGlvbiBPZl95b2pzb25fZXJyb3Igb2YgZXhuICogdFxuXG5sZXQgcmVjb3JkX2NoZWNrX2V4dHJhX2ZpZWxkcyA9IHJlZiB0cnVlXG5sZXQgb2ZfeW9qc29uX2Vycm9yX2V4biBleGMgeW9qc29uID0gcmFpc2UgKE9mX3lvanNvbl9lcnJvciAoZXhjLCB5b2pzb24pKVxubGV0IG9mX3lvanNvbl9lcnJvciB3aGF0IHlvanNvbiA9IHJhaXNlIChPZl95b2pzb25fZXJyb3IgKEZhaWx1cmUgd2hhdCwgeW9qc29uKSlcblxubGV0IHVuaXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYE51bGwgLT4gKClcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInVuaXRfb2ZfeW9qc29uOiBgTnVsbCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBib29sX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBCb29sIHYgLT4gdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiYm9vbF9vZl95b2pzb246IHRydWUvZmFsc2UgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgc3RyaW5nX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IHN0clxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwic3RyaW5nX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGJ5dGVzX29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBTdHJpbmcgc3RyIC0+IEJ5dGVzLm9mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImJ5dGVzX29mX3lvanNvbjogc3RyaW5nIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGNoYXJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYFN0cmluZyBzdHIgLT5cbiAgICBpZiBTdHJpbmcubGVuZ3RoIHN0ciA8PiAxXG4gICAgdGhlbiBvZl95b2pzb25fZXJyb3IgXCJjaGFyX29mX3lvanNvbjogc3RyaW5nIG11c3QgY29udGFpbiBvbmUgY2hhcmFjdGVyIG9ubHlcIiB5b2pzb247XG4gICAgc3RyLlswXVxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiY2hhcl9vZl95b2pzb246IHN0cmluZyBvZiBzaXplIG9uZSBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludCB2IC0+IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludF9vZl95b2pzb246IGludGVnZXIgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgZmxvYXRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEZsb2F0IHYgLT4gdlxuICB8IGBJbnQgaSAtPiBmbG9hdF9vZl9pbnQgaVxuICB8IGBJbnRsaXQgc3RyIC0+IGZsb2F0X29mX3N0cmluZyBzdHJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImZsb2F0X29mX3lvanNvbjogZmxvYXQgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgaW50MzJfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gSW50MzIub2Zfc3RyaW5nIHN0clxuICB8IGBJbnQgdiAtPiBJbnQzMi5vZl9pbnQgdlxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaW50MzJfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGludDY0X29mX3lvanNvbiB5b2pzb24gPVxuICBtYXRjaCB5b2pzb24gd2l0aFxuICB8IGBJbnRsaXQgc3RyIC0+IEludDY0Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gSW50NjQub2ZfaW50IHZcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImludDY0X29mX3lvanNvbjogaW50ZWdlciBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBuYXRpdmVpbnRfb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYEludGxpdCBzdHIgLT4gTmF0aXZlaW50Lm9mX3N0cmluZyBzdHJcbiAgfCBgSW50IHYgLT4gTmF0aXZlaW50Lm9mX2ludCB2XG4gIHwgXyAtPiBvZl95b2pzb25fZXJyb3IgXCJuYXRpdmVpbnRfb2ZfeW9qc29uOiBpbnRlZ2VyIG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IHJlZl9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9IHJlZiAoYV9fb2ZfeW9qc29uIHlvanNvbilcbmxldCBsYXp5X3Rfb2ZfeW9qc29uIGFfX29mX3lvanNvbiB5b2pzb24gPSBMYXp5LmZyb21fdmFsIChhX19vZl95b2pzb24geW9qc29uKVxuXG5sZXQgb3B0aW9uX29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwgZWwgLT4gU29tZSAoYV9fb2ZfeW9qc29uIGVsKVxuOztcblxubGV0IHBhaXJfb2ZfeW9qc29uIGFfX29mX3lvanNvbiBiX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbiBdIC0+XG4gICAgbGV0IGEgPSBhX19vZl95b2pzb24gYV95b2pzb24gaW5cbiAgICBsZXQgYiA9IGJfX29mX3lvanNvbiBiX3lvanNvbiBpblxuICAgIGEsIGJcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInBhaXJfb2ZfeW9qc29uOiBpbnZhbGlkIGZvcm1hdFwiIHlvanNvblxuOztcblxubGV0IHRyaXBsZV9vZl95b2pzb24gYV9fb2ZfeW9qc29uIGJfX29mX3lvanNvbiBjX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbIGFfeW9qc29uOyBiX3lvanNvbjsgY195b2pzb24gXSAtPlxuICAgIGxldCBhID0gYV9fb2ZfeW9qc29uIGFfeW9qc29uIGluXG4gICAgbGV0IGIgPSBiX19vZl95b2pzb24gYl95b2pzb24gaW5cbiAgICBsZXQgYyA9IGNfX29mX3lvanNvbiBjX3lvanNvbiBpblxuICAgIGEsIGIsIGNcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcInRyaXBsZV9vZl95b2pzb246IGludmFsaWQgZm9ybWF0XCIgeW9qc29uXG47O1xuXG5sZXQgbGlzdF9vZl95b2pzb24gYV9fb2ZfeW9qc29uIHlvanNvbiA9XG4gIG1hdGNoIHlvanNvbiB3aXRoXG4gIHwgYExpc3QgbHN0IC0+XG4gICAgbGV0IHJldl9sc3QgPSBMaXN0LnJldl9tYXAgbHN0IH5mOmFfX29mX3lvanNvbiBpblxuICAgIExpc3QucmV2IHJldl9sc3RcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImxpc3Rfb2ZfeW9qc29uOiBsaXN0IG5lZWRlZFwiIHlvanNvblxuOztcblxubGV0IGFycmF5X29mX3lvanNvbiBhX19vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBbXSAtPiBbfHxdXG4gIHwgYExpc3QgKGggOjogdCkgLT5cbiAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggdCArIDEgaW5cbiAgICBsZXQgcmVzID0gQXJyYXkubWFrZSBsZW4gKGFfX29mX3lvanNvbiBoKSBpblxuICAgIGxldCByZWMgbG9vcCBpID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gcmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICByZXMuKGkpIDwtIGFfX29mX3lvanNvbiBoO1xuICAgICAgICBsb29wIChpICsgMSkgdFxuICAgIGluXG4gICAgbG9vcCAxIHRcbiAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImFycmF5X29mX3lvanNvbjogbGlzdCBuZWVkZWRcIiB5b2pzb25cbjs7XG5cbmxldCBoYXNodGJsX29mX3lvanNvbiBrZXlfb2ZfeW9qc29uIHZhbF9vZl95b2pzb24geW9qc29uID1cbiAgbWF0Y2ggeW9qc29uIHdpdGhcbiAgfCBgTGlzdCBsc3QgLT5cbiAgICBsZXQgaHRibCA9IEhhc2h0YmwuY3JlYXRlIDAgaW5cbiAgICBsZXQgYWN0ID0gZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgWyBrX3lvanNvbjsgdl95b2pzb24gXSAtPlxuICAgICAgICBIYXNodGJsLmFkZCBodGJsIH5rZXk6KGtleV9vZl95b2pzb24ga195b2pzb24pIH5kYXRhOih2YWxfb2ZfeW9qc29uIHZfeW9qc29uKVxuICAgICAgfCBfIC0+IG9mX3lvanNvbl9lcnJvciBcImhhc2h0Ymxfb2ZfeW9qc29uOiB0dXBsZSBsaXN0IG5lZWRlZFwiIHlvanNvblxuICAgIGluXG4gICAgTGlzdC5pdGVyIGxzdCB+ZjphY3Q7XG4gICAgaHRibFxuICB8IF8gLT4gb2ZfeW9qc29uX2Vycm9yIFwiaGFzaHRibF9vZl95b2pzb246IGxpc3QgbmVlZGVkXCIgeW9qc29uXG47O1xuXG5sZXQgb3BhcXVlX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJvcGFxdWVfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBvcGFxdWUgdmFsdWVzXCIgeW9qc29uXG47O1xuXG5sZXQgZnVuX29mX3lvanNvbiB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgXCJmdW5fb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCBmdW5jdGlvbiB2YWx1ZXNcIiB5b2pzb25cbjs7XG5cbm1vZHVsZSBQcmltaXRpdmVzID0gc3RydWN0XG4gIGxldCB5b2pzb25fb2ZfYXJyYXkgPSB5b2pzb25fb2ZfYXJyYXlcbiAgbGV0IGFycmF5X29mX3lvanNvbiA9IGFycmF5X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Jvb2wgPSB5b2pzb25fb2ZfYm9vbFxuICBsZXQgYm9vbF9vZl95b2pzb24gPSBib29sX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2NoYXIgPSB5b2pzb25fb2ZfY2hhclxuICBsZXQgY2hhcl9vZl95b2pzb24gPSBjaGFyX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2Zsb2F0ID0geW9qc29uX29mX2Zsb2F0XG4gIGxldCBmbG9hdF9vZl95b2pzb24gPSBmbG9hdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQgPSB5b2pzb25fb2ZfaW50XG4gIGxldCBpbnRfb2ZfeW9qc29uID0gaW50X29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX2ludDMyID0geW9qc29uX29mX2ludDMyXG4gIGxldCBpbnQzMl9vZl95b2pzb24gPSBpbnQzMl9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9pbnQ2NCA9IHlvanNvbl9vZl9pbnQ2NFxuICBsZXQgaW50NjRfb2ZfeW9qc29uID0gaW50NjRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGlzdCA9IHlvanNvbl9vZl9saXN0XG4gIGxldCBsaXN0X29mX3lvanNvbiA9IGxpc3Rfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbmF0aXZlaW50ID0geW9qc29uX29mX25hdGl2ZWludFxuICBsZXQgbmF0aXZlaW50X29mX3lvanNvbiA9IG5hdGl2ZWludF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9vcHRpb24gPSB5b2pzb25fb2Zfb3B0aW9uXG4gIGxldCBvcHRpb25fb2ZfeW9qc29uID0gb3B0aW9uX29mX3lvanNvblxuICBsZXQgeW9qc29uX29mX3JlZiA9IHlvanNvbl9vZl9yZWZcbiAgbGV0IHJlZl9vZl95b2pzb24gPSByZWZfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2Zfc3RyaW5nID0geW9qc29uX29mX3N0cmluZ1xuICBsZXQgc3RyaW5nX29mX3lvanNvbiA9IHN0cmluZ19vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9ieXRlcyA9IHlvanNvbl9vZl9ieXRlc1xuICBsZXQgYnl0ZXNfb2ZfeW9qc29uID0gYnl0ZXNfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfdW5pdCA9IHlvanNvbl9vZl91bml0XG4gIGxldCB1bml0X29mX3lvanNvbiA9IHVuaXRfb2ZfeW9qc29uXG4gIGxldCB5b2pzb25fb2ZfbGF6eV90ID0geW9qc29uX29mX2xhenlfdFxuICBsZXQgbGF6eV90X29mX3lvanNvbiA9IGxhenlfdF9vZl95b2pzb25cbiAgbGV0IHlvanNvbl9vZl9oYXNodGJsID0geW9qc29uX29mX2hhc2h0YmxcbiAgbGV0IGhhc2h0Ymxfb2ZfeW9qc29uID0gaGFzaHRibF9vZl95b2pzb25cbmVuZFxuIiwiKCogQ29udl9lcnJvcjogTW9kdWxlIGZvciBIYW5kbGluZyBFcnJvcnMgZHVyaW5nIEF1dG9tYXRlZCBZb2pzb25cbiAgIENvbnZlcnNpb25zICopXG5cbm9wZW4hIFN0ZExhYmVsc1xub3BlbiBZb2pzb25fY29udlxuXG5sZXQgc3ByaW50ZiA9IFByaW50Zi5zcHJpbnRmXG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHR1cGxlcyAqKVxuXG5sZXQgdHVwbGVfb2Zfc2l6ZV9uX2V4cGVjdGVkIGxvYyBuIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAoc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdHVwbGUgb2Ygc2l6ZSAlZCBleHBlY3RlZFwiIGxvYyBuKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHN1bSB0eXBlcyAqKVxuXG5sZXQgc3RhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdGhpcyBjb25zdHJ1Y3RvciBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBzdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIHRhZyB5b2pzb24gPVxuICBsZXQgbXNnID1cbiAgICBzcHJpbnRmIFwiJXNfb2ZfeW9qc29uOiBzdW0gdGFnICVTIGhhcyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50c1wiIGxvYyB0YWdcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbmxldCBzdGFnX3Rha2VzX2FyZ3MgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvciAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGlzIGNvbnN0cnVjdG9yIHJlcXVpcmVzIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBuZXN0ZWRfbGlzdF9pbnZhbGlkX3N1bSBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IGV4cGVjdGVkIGEgdmFyaWFudCB0eXBlLCBzYXcgYSBuZXN0ZWQgbGlzdFwiKSB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV9saXN0X2ludmFsaWRfc3VtIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogZXhwZWN0ZWQgYSB2YXJpYW50IHR5cGUsIHNhdyBhbiBlbXB0eSBsaXN0XCIpIHlvanNvblxuOztcblxubGV0IHVuZXhwZWN0ZWRfc3RhZyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHVuZXhwZWN0ZWQgdmFyaWFudCBjb25zdHJ1Y3RvclwiKSB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHJlY29yZHMgKilcblxubGV0IHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIGxldCBmbGRfbmFtZXNfc3RyID0gU3RyaW5nLmNvbmNhdCAoTGlzdC5yZXYgcmV2X2ZsZF9uYW1lcykgfnNlcDpcIiBcIiBpblxuICBsZXQgbXNnID0gc3ByaW50ZiBcIiVzX29mX3lvanNvbjogJXM6ICVzXCIgbG9jIHdoYXQgZmxkX25hbWVzX3N0ciBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9kdXBsaWNhdGVfZmllbGRzIGxvYyByZXZfZmxkX25hbWVzIHlvanNvbiA9XG4gIHJlY29yZF9zdXBlcmZsdW91c19maWVsZHMgfndoYXQ6XCJkdXBsaWNhdGUgZmllbGRzXCIgfmxvYyByZXZfZmxkX25hbWVzIHlvanNvblxuOztcblxubGV0IHJlY29yZF9leHRyYV9maWVsZHMgbG9jIHJldl9mbGRfbmFtZXMgeW9qc29uID1cbiAgcmVjb3JkX3N1cGVyZmx1b3VzX2ZpZWxkcyB+d2hhdDpcImV4dHJhIGZpZWxkc1wiIH5sb2MgcmV2X2ZsZF9uYW1lcyB5b2pzb25cbjs7XG5cbmxldCByZWMgcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgPSBmdW5jdGlvblxuICB8IFtdIC0+IFN0cmluZy5jb25jYXQgKExpc3QucmV2IGZpZWxkcykgfnNlcDpcIiBcIlxuICB8ICh0cnVlLCBmaWVsZCkgOjogcmVzdCAtPiByZWNvcmRfZ2V0X3VuZGVmaW5lZF9sb29wIChmaWVsZCA6OiBmaWVsZHMpIHJlc3RcbiAgfCBfIDo6IHJlc3QgLT4gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBmaWVsZHMgcmVzdFxuOztcblxubGV0IHJlY29yZF91bmRlZmluZWRfZWxlbWVudHMgbG9jIHlvanNvbiBsc3QgPVxuICBsZXQgdW5kZWZpbmVkID0gcmVjb3JkX2dldF91bmRlZmluZWRfbG9vcCBbXSBsc3QgaW5cbiAgbGV0IG1zZyA9XG4gICAgc3ByaW50ZiBcIiVzX29mX3lvanNvbjogdGhlIGZvbGxvd2luZyByZWNvcmQgZWxlbWVudHMgd2VyZSB1bmRlZmluZWQ6ICVzXCIgbG9jIHVuZGVmaW5lZFxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHJlY29yZF9saXN0X2luc3RlYWRfYXRvbSBsb2MgeW9qc29uID1cbiAgbGV0IG1zZyA9IGxvYyBeIFwiX29mX3lvanNvbjogbGlzdCBpbnN0ZWFkIG9mIGF0b20gZm9yIHJlY29yZCBleHBlY3RlZFwiIGluXG4gIG9mX3lvanNvbl9lcnJvciBtc2cgeW9qc29uXG47O1xuXG5sZXQgcmVjb3JkX3BvbHlfZmllbGRfdmFsdWUgbG9jIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIGxvY1xuICAgIF4gXCJfb2ZfeW9qc29uOiBjYW5ub3QgY29udmVydCB2YWx1ZXMgb2YgdHlwZXMgcmVzdWx0aW5nIGZyb20gcG9seW1vcnBoaWMgcmVjb3JkIFxcXG4gICAgICAgZmllbGRzXCJcbiAgaW5cbiAgb2ZfeW9qc29uX2Vycm9yIG1zZyB5b2pzb25cbjs7XG5cbigqIEVycm9ycyBjb25jZXJuaW5nIHBvbHltb3JwaGljIHZhcmlhbnRzICopXG5cbmV4Y2VwdGlvbiBOb192YXJpYW50X21hdGNoXG5cbmxldCBub192YXJpYW50X21hdGNoICgpID0gcmFpc2UgTm9fdmFyaWFudF9tYXRjaFxuXG5sZXQgbm9fbWF0Y2hpbmdfdmFyaWFudF9mb3VuZCBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IG5vIG1hdGNoaW5nIHZhcmlhbnQgZm91bmRcIikgeW9qc29uXG47O1xuXG5sZXQgcHRhZ19ub19hcmdzIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogcG9seW1vcnBoaWMgdmFyaWFudCBkb2VzIG5vdCB0YWtlIGFyZ3VtZW50c1wiKSB5b2pzb25cbjs7XG5cbmxldCBwdGFnX2luY29ycmVjdF9uX2FyZ3MgbG9jIGNuc3RyIHlvanNvbiA9XG4gIGxldCBtc2cgPVxuICAgIHNwcmludGZcbiAgICAgIFwiJXNfb2ZfeW9qc29uOiBwb2x5bW9ycGhpYyB2YXJpYW50IHRhZyAlUyBoYXMgaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHNcIlxuICAgICAgbG9jXG4gICAgICBjbnN0clxuICBpblxuICBvZl95b2pzb25fZXJyb3IgbXNnIHlvanNvblxuOztcblxubGV0IHB0YWdfdGFrZXNfYXJncyBsb2MgeW9qc29uID1cbiAgb2ZfeW9qc29uX2Vycm9yIChsb2MgXiBcIl9vZl95b2pzb246IHBvbHltb3JwaGljIHZhcmlhbnQgdGFnIHRha2VzIGFuIGFyZ3VtZW50XCIpIHlvanNvblxuOztcblxubGV0IG5lc3RlZF9saXN0X2ludmFsaWRfcG9seV92YXIgbG9jIHlvanNvbiA9XG4gIG9mX3lvanNvbl9lcnJvclxuICAgIChsb2MgXiBcIl9vZl95b2pzb246IGEgbmVzdGVkIGxpc3QgaXMgYW4gaW52YWxpZCBwb2x5bW9ycGhpYyB2YXJpYW50XCIpXG4gICAgeW9qc29uXG47O1xuXG5sZXQgZW1wdHlfbGlzdF9pbnZhbGlkX3BvbHlfdmFyIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3JcbiAgICAobG9jIF4gXCJfb2ZfeW9qc29uOiB0aGUgZW1wdHkgbGlzdCBpcyBhbiBpbnZhbGlkIHBvbHltb3JwaGljIHZhcmlhbnRcIilcbiAgICB5b2pzb25cbjs7XG5cbmxldCBlbXB0eV90eXBlIGxvYyB5b2pzb24gPVxuICBvZl95b2pzb25fZXJyb3IgKGxvYyBeIFwiX29mX3lvanNvbjogdHJ5aW5nIHRvIGNvbnZlcnQgYW4gZW1wdHkgdHlwZVwiKSB5b2pzb25cbjs7XG4iLCJtb2R1bGUgWW9qc29uX2NvbnZfZXJyb3IgPSBZb2pzb25fY29udl9lcnJvclxubW9kdWxlIFlvanNvbl9jb252ID0gWW9qc29uX2NvbnZcbm1vZHVsZSBZb2pzb25hYmxlID0gWW9qc29uYWJsZV9pbnRmXG5tb2R1bGUgWW9qc29uID0gWW9qc29uXG5cbm1vZHVsZSBPcHRpb24gPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0gJ2Egb3B0aW9uID1cbiAgICB8IE5vbmVcbiAgICB8IFNvbWUgb2YgJ2FcbmVuZFxuXG5leHRlcm5hbCBpZ25vcmUgOiBfIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuZXh0ZXJuYWwgcG9seV9lcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbmxldCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IGZ1biB4IC0+ICF4XG4iLCIjIDEgXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbnR5cGUgbm9ucmVjIGludCA9IGludFxudHlwZSBub25yZWMgY2hhciA9IGNoYXJcbnR5cGUgbm9ucmVjIHN0cmluZyA9IHN0cmluZ1xudHlwZSBub25yZWMgZmxvYXQgPSBmbG9hdFxudHlwZSBub25yZWMgYm9vbCA9IGJvb2xcbnR5cGUgbm9ucmVjIHVuaXQgPSB1bml0XG50eXBlIG5vbnJlYyBleG4gPSBleG5cbnR5cGUgbm9ucmVjICdhIGFycmF5ID0gJ2EgYXJyYXlcbnR5cGUgbm9ucmVjICdhIGxpc3QgPSAnYSBsaXN0XG50eXBlIG5vbnJlYyAnYSBvcHRpb24gPSAnYSBvcHRpb25cbnR5cGUgbm9ucmVjIG5hdGl2ZWludCA9IG5hdGl2ZWludFxudHlwZSBub25yZWMgaW50MzIgPSBpbnQzMlxudHlwZSBub25yZWMgaW50NjQgPSBpbnQ2NFxudHlwZSBub25yZWMgJ2EgbGF6eV90ID0gJ2EgbGF6eV90XG50eXBlIG5vbnJlYyBieXRlcyA9IGJ5dGVzXG5cbiMgMTggXCJwcHhfZGVyaXZpbmdfcnVudGltZS5jcHBvLm1sXCJcbigqIFdlIHJlcXVpcmUgNC4wOCB3aGlsZSA0LjA3IGFscmVhZHkgaGFzIGEgU3RkbGliIG1vZHVsZS5cbiAgIEluIDQuMDcsIHRoZSB0eXBlIGVxdWFsaXRpZXMgb24gU3RkbGliLlBlcnZhc2l2ZXNcbiAgIGFyZSBub3Qgc3Ryb25nIGVub3VnaCBmb3IgdGhlICdpbmNsdWRlIFN0ZGxpYidcbiAgIGJlbG93IHRvIHNhdGlzZnkgdGhlIHNpZ25hdHVyZSBjb25zdHJhaW50cyBvblxuICAgUHB4X2Rlcml2aW5nX3J1bnRpbWUuUGVydmFzaXZlcy4gKilcbm1vZHVsZSBTdGRsaWIgPSBTdGRsaWJcblxuaW5jbHVkZSBTdGRsaWJcblxubW9kdWxlIFJlc3VsdCA9IHN0cnVjdFxuICB0eXBlICgnYSwgJ2IpIHQgPSAoJ2EsICdiKSByZXN1bHQgPVxuICAgIHwgT2sgb2YgJ2FcbiAgICB8IEVycm9yIG9mICdiXG5cbiAgdHlwZSAoJ2EsICdiKSByZXN1bHQgPSAoJ2EsICdiKSB0ID1cbiAgICB8IE9rIG9mICdhXG4gICAgfCBFcnJvciBvZiAnYlxuZW5kXG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbmxldCBjbHNzID0gQXR0ci5jbGFzc2VzO1xuXG5sZXQgZGl2X2MgPSBjbHMgPT4gZGl2KH5hdHRyPUF0dHIuY2xhc3NfKGNscykpO1xubGV0IHNwYW5fYyA9IGNscyA9PiBzcGFuKH5hdHRyPUF0dHIuY2xhc3NfKGNscykpO1xuXG5sZXQgZGl2X2VtcHR5ID0gZGl2KH5hdHRyPUF0dHIuY3JlYXRlKFwic3R5bGVcIiwgXCJkaXNwbGF5Om5vbmVcIiksIFtdKTtcblxubGV0IGRpdl9pZiA9IChwLCBhdHMsIG5zKSA9PiBwID8gZGl2KH5hdHRyPUF0dHIubWFueShhdHMpLCBucykgOiBkaXZfZW1wdHk7XG5sZXQgc3Bhbl9pZiA9IChwLCBhdHMsIG5zKSA9PlxuICBwID8gc3Bhbih+YXR0cj1BdHRyLm1hbnkoYXRzKSwgbnMpIDogc3BhbihbXSk7XG5cbmxldCB1bmxlc3MgPSAocCwgYSkgPT4gcCA/IEVmZmVjdC5NYW55KFtdKSA6IGE7XG4iLCJsZXQgc3dhcCA9ICgoYSwgYikpID0+IChiLCBhKTtcblxubGV0IG1hcDIgPSAoZiwgKGEsIGIpKSA9PiAoZihhKSwgZihiKSk7XG5cbmxldCBtYXAzID0gKGYsIChhLCBiLCBjKSkgPT4gKGYoYSksIGYoYiksIGYoYykpO1xuIiwibGV0IHByaW50X3RpbWVfcHJlZml4ID1cbiAgICAobmFtZTogc3RyaW5nLCBzdGFydF90aW1lOiBmbG9hdCwgZW5kX3RpbWU6IGZsb2F0KTogdW5pdCA9PiB7XG4gIFByaW50Zi5wcmludGYoXG4gICAgXCIlLTMycyU0LjBmbXNcIixcbiAgICBuYW1lICsrIFwiOlwiLFxuICAgIDEwMDAuMCAqLiAoZW5kX3RpbWUgLS4gc3RhcnRfdGltZSksXG4gICk7XG59O1xuXG5sZXQgcHJpbnRfdGltZSA9IChuYW1lOiBzdHJpbmcsIHN0YXJ0X3RpbWU6IGZsb2F0LCBlbmRfdGltZTogZmxvYXQpOiB1bml0ID0+IHtcbiAgcHJpbnRfdGltZV9wcmVmaXgobmFtZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUpO1xuICBQcmludGYucHJpbnRmKFwiXFxuJSFcIik7XG59O1xuXG5sZXQgcHJpbnRfdGltZXMgPVxuICAgIChuYW1lOiBzdHJpbmcsIHN0YXJ0X3RpbWU6IGZsb2F0LCB0aW1lczogbGlzdCgoc3RyaW5nLCBmbG9hdCkpKTogdW5pdCA9PiB7XG4gIGFzc2VydCh0aW1lcyAhPSBbXSk7XG4gIGxldCBlbmRfdGltZSA9IExpc3QuZm9sZF9sZWZ0KChfLCBsYXN0KSA9PiBzbmQobGFzdCksIC0xLjAsIHRpbWVzKTtcbiAgcHJpbnRfdGltZV9wcmVmaXgobmFtZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUpO1xuICBQcmludGYucHJpbnRmKFwiIFtcIik7XG4gIGxldCByZWMgZ28gPSAocHJldmlvdXNfdGltZTogZmxvYXQsIHRpbWVzOiBsaXN0KChzdHJpbmcsIGZsb2F0KSkpOiB1bml0ID0+IHtcbiAgICBzd2l0Y2ggKHRpbWVzKSB7XG4gICAgfCBbXSA9PiAoKVxuICAgIHwgWyhuYW1lLCB0aW1lKSwgLi4udGltZXNdID0+XG4gICAgICBQcmludGYucHJpbnRmKFwiICVzOiAlLjBmbXNcIiwgbmFtZSwgMTAwMC4wICouICh0aW1lIC0uIHByZXZpb3VzX3RpbWUpKTtcbiAgICAgIGdvKHRpbWUsIHRpbWVzKTtcbiAgICB9O1xuICB9O1xuICBnbyhzdGFydF90aW1lLCB0aW1lcyk7XG4gIFByaW50Zi5wcmludGYoXCIgXVxcbiUhXCIpO1xufTtcblxubGV0IG1lYXN1cmVfdGltZSA9IChuYW1lOiBzdHJpbmcsIG1lYXN1cmU6IGJvb2wsIGY6IHVuaXQgPT4gJ2EpOiAnYSA9PlxuICBpZiAobWVhc3VyZSkge1xuICAgIGxldCBzdGFydF90aW1lID0gU3lzLnRpbWUoKTtcbiAgICBsZXQgeCA9IGYoKTtcbiAgICBsZXQgZW5kX3RpbWUgPSBTeXMudGltZSgpO1xuICAgIHByaW50X3RpbWUobmFtZSwgc3RhcnRfdGltZSwgZW5kX3RpbWUpO1xuICAgIHg7XG4gIH0gZWxzZSB7XG4gICAgZigpO1xuICB9O1xuIiwibGV0IGNhdCA9IFN0cmluZy5jb25jYXQoXCJcIik7XG5cbmxldCByZW1vdmVfbnRoID0gKG4sIHQpID0+IHtcbiAgYXNzZXJ0KG4gPCBTdHJpbmcubGVuZ3RoKHQpKTtcbiAgU3RyaW5nLnN1Yih0LCAwLCBuKSArKyBTdHJpbmcuc3ViKHQsIG4gKyAxLCBTdHJpbmcubGVuZ3RoKHQpIC0gbiAtIDEpO1xufTtcblxubGV0IHJlbW92ZV9maXJzdCA9IHJlbW92ZV9udGgoMCk7XG5sZXQgcmVtb3ZlX2xhc3QgPSB0ID0+IHJlbW92ZV9udGgoU3RyaW5nLmxlbmd0aCh0KSAtIDEsIHQpO1xuXG5sZXQgaW5zZXJ0X250aCA9IChuLCBzLCB0KSA9PiB7XG4gIGFzc2VydChuIDwgU3RyaW5nLmxlbmd0aCh0KSk7XG4gIFN0cmluZy5zdWIodCwgMCwgbikgKysgcyArKyBTdHJpbmcuc3ViKHQsIG4sIFN0cmluZy5sZW5ndGgodCkgLSBuKTtcbn07XG5cbmxldCBzcGxpdF9udGggPSAobiwgdCkgPT4ge1xuICBhc3NlcnQobiA8IFN0cmluZy5sZW5ndGgodCkpO1xuICAoU3RyaW5nLnN1Yih0LCAwLCBuKSwgU3RyaW5nLnN1Yih0LCBuLCBTdHJpbmcubGVuZ3RoKHQpIC0gbikpO1xufTtcblxubGV0IHRvX2xpc3QgPSBzID0+IExpc3QuaW5pdChTdHJpbmcubGVuZ3RoKHMpLCBpID0+IFN0cmluZy5tYWtlKDEsIHMuW2ldKSk7XG5cbmxldCByZXBlYXQgPSAobiwgcykgPT4gU3RyaW5nLmNvbmNhdChcIlwiLCBMaXN0LmluaXQobiwgXyA9PiBzKSk7XG5cbmxldCBhYmJyZXZpYXRlID0gKG1heF9sZW4sIHMpID0+XG4gIFN0cmluZy5sZW5ndGgocykgPiBtYXhfbGVuID8gU3RyaW5nLnN1YihzLCAwLCBtYXhfbGVuKSArKyBcIi4uLlwiIDogcztcbiIsIi8qIFRPRE86IHdlIG1pZ2h0IHdhbnQgdG8ganVzdCB1c2UgdGhpcyBBUEk/XG5cbiAgICBodHRwczovL2dpdGh1Yi5jb20vcmdyaW5iZXJnL29jYW1sLW10bC9ibG9iL21hc3Rlci9saWIvbXRsLm1sXG5cbiAgIFRob3VnaCBpdCdzIGEgYml0IGhlYXZ5LCBlc3BlY2lhbGx5IHdpdGggdGhlIGV4dHJhIHR5cGUgcGFyYW1ldGVyLi4uXG5cbiAgIEluIGFueSBjYXNlLCB0aGF0J3MgYSBnb29kIHJlZmVyZW5jZS4gKi9cblxubW9kdWxlIHR5cGUgTU9OQURfQkFTSUMgPSB7XG4gIFtAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB0KCdhKTtcbiAgbGV0IHJldHVybjogJ2EgPT4gdCgnYSk7XG4gIGxldCBiaW5kOiAodCgnYSksICdhID0+IHQoJ2IpKSA9PiB0KCdiKTtcbn07XG5cbm1vZHVsZSB0eXBlIE1PTkFEX0ZVTkNUT1IgPSB7XG4gIGluY2x1ZGUgTU9OQURfQkFTSUM7XG4gIGxldCBtYXA6ICh0KCdhKSwgJ2EgPT4gJ2IpID0+IHQoJ2IpO1xufTtcblxubW9kdWxlIE1ha2VfRnVuY3RvciA9IChNOiBNT05BRF9CQVNJQykgPT4ge1xuICBpbmNsdWRlIE07XG4gIGxldCBtYXAgPSAoeCwgZikgPT4gYmluZCh4LCBhID0+IE0ucmV0dXJuKGYoYSkpKTtcbn07XG5cbm1vZHVsZSB0eXBlIE1PTkFEX1pJUCA9IHtcbiAgaW5jbHVkZSBNT05BRF9GVU5DVE9SO1xuICBsZXQgemlwOiAodCgnYSksIHQoJ2IpKSA9PiB0KCgnYSwgJ2IpKTtcbn07XG5cbm1vZHVsZSBNYWtlX1ppcCA9IChNOiBNT05BRF9GVU5DVE9SKSA9PiB7XG4gIGluY2x1ZGUgTTtcblxuICBsZXQgemlwID0gKHgsIHkpID0+IGJpbmQoeCwgYSA9PiBiaW5kKHksIGIgPT4gTS5yZXR1cm4oKGEsIGIpKSkpO1xufTtcblxubW9kdWxlIHR5cGUgTU9OQUQgPSB7XG4gIGluY2x1ZGUgTU9OQURfWklQO1xuXG4gIGxldCBzZXF1ZW5jZTogbGlzdCh0KCdhKSkgPT4gdChsaXN0KCdhKSk7XG5cbiAgbW9kdWxlIFN5bnRheDoge1xuICAgIGxldCAoIGxldCogKTogKHQoJ2EpLCAnYSA9PiB0KCdiKSkgPT4gdCgnYik7XG4gICAgbGV0IChsZXQrKTogKHQoJ2EpLCAnYSA9PiAnYikgPT4gdCgnYik7XG4gICAgbGV0IChhbmQrKTogKHQoJ2EpLCB0KCdiKSkgPT4gdCgoJ2EsICdiKSk7XG5cbiAgICBsZXQgKD4+PSk6ICh0KCdhKSwgJ2EgPT4gdCgnYikpID0+IHQoJ2IpO1xuICAgIGxldCAoPj58KTogKHQoJ2EpLCAnYSA9PiAnYikgPT4gdCgnYik7XG4gIH07XG59O1xuXG5tb2R1bGUgTWFrZV9Nb25hZF9aID0gKE06IE1PTkFEX1pJUCkgPT4ge1xuICBpbmNsdWRlIE07XG5cbiAgbGV0IHNlcXVlbmNlID0gbXMgPT4ge1xuICAgIGxldCByZWMgc2VxdWVuY2UnID0gKG1zLCBhY2MpID0+IHtcbiAgICAgIHN3aXRjaCAobXMpIHtcbiAgICAgIHwgW10gPT4gYWNjXG4gICAgICB8IFttLCAuLi5tc10gPT5cbiAgICAgICAgYmluZChtLCB4ID0+IHNlcXVlbmNlJyhtcywgbWFwKGFjYywgYWNjID0+IFt4LCAuLi5hY2NdKSkpXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBtYXAoc2VxdWVuY2UnKG1zLCBbXSB8PiByZXR1cm4pLCBMaXN0LnJldik7XG4gIH07XG5cbiAgbW9kdWxlIFN5bnRheCA9IHtcbiAgICBsZXQgKCBsZXQqICkgPSBiaW5kO1xuICAgIGxldCAobGV0KykgPSBtYXA7XG4gICAgbGV0IChhbmQrKSA9IHppcDtcblxuICAgIGxldCAoPj49KSA9IGJpbmQ7XG4gICAgbGV0ICg+PnwpID0gbWFwO1xuICB9O1xufTtcblxubW9kdWxlIE1ha2VfTW9uYWRfQiA9IChNOiBNT05BRF9CQVNJQykgPT5cbiAgTWFrZV9Nb25hZF9aKE1ha2VfWmlwKE1ha2VfRnVuY3RvcihNKSkpO1xuIiwibW9kdWxlIHR5cGUgU1RBVEUgPSB7XG4gIHR5cGUgdDtcbn07XG5cbm1vZHVsZSB0eXBlIFMgPSB7XG4gIHR5cGUgc3RhdGU7XG5cbiAgaW5jbHVkZSBNb25hZHMuTU9OQUQgd2l0aCB0eXBlIHQoJ2EpID0gc3RhdGUgPT4gKHN0YXRlLCAnYSk7XG5cbiAgbGV0IGdldDogdChzdGF0ZSk7XG4gIGxldCBwdXQ6IHN0YXRlID0+IHQodW5pdCk7XG4gIGxldCBtb2RpZnk6IChzdGF0ZSA9PiBzdGF0ZSkgPT4gdCh1bml0KTtcbiAgbGV0IG1vZGlmeSc6IChzdGF0ZSA9PiAoJ2EsIHN0YXRlKSkgPT4gdCgnYSk7XG59O1xuXG5tb2R1bGUgTWFrZSA9IChTVDogU1RBVEUpID0+IHtcbiAgdHlwZSBzdGF0ZSA9IFNULnQ7XG5cbiAgbW9kdWxlIFQgPSB7XG4gICAgW0BkZXJpdmluZyBzZXhwXVxuICAgIHR5cGUgdCgnYSkgPSBzdGF0ZSA9PiAoc3RhdGUsICdhKTtcblxuICAgIGxldCByZXR1cm4gPSAoeCwgcykgPT4gKHMsIHgpO1xuXG4gICAgbGV0IGJpbmQgPSAoeGYsIGYsIHMpID0+IHtcbiAgICAgIGxldCAocycsIHgpID1cbiAgICAgICAgc3dpdGNoICh4ZihzKSkge1xuICAgICAgICB8IHIgPT4gclxuICAgICAgICB8IGV4Y2VwdGlvbiBleG4gPT5cbiAgICAgICAgICBwcmludF9lbmRsaW5lKFxuICAgICAgICAgICAgXCJiaW5kIGV4Y2VwdGlvbjogXCJcbiAgICAgICAgICAgICsrIFNleHBsaWIuU2V4cC50b19zdHJpbmdfaHVtKFNleHBsaWIuU3RkLnNleHBfb2ZfZXhuKGV4bikpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmFpc2UoZXhuKTtcbiAgICAgICAgfTtcbiAgICAgIGYoeCwgcycpO1xuICAgIH07XG5cbiAgICBsZXQgZ2V0ID0gcyA9PiAocywgcyk7XG5cbiAgICBsZXQgcHV0ID0gKHgsIF8pID0+ICh4LCAoKSk7XG5cbiAgICBsZXQgbW9kaWZ5ID0gZiA9PiBiaW5kKGdldCwgcyA9PiBwdXQoZihzKSkpO1xuXG4gICAgbGV0IG1vZGlmeScgPSBmID0+XG4gICAgICBiaW5kKFxuICAgICAgICBnZXQsXG4gICAgICAgIHMgPT4ge1xuICAgICAgICAgIGxldCAoeCwgcykgPSBmKHMpO1xuICAgICAgICAgIGJpbmQocHV0KHMpLCBfID0+IHJldHVybih4KSk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICB9O1xuXG4gIGluY2x1ZGUgVDtcbiAgaW5jbHVkZSBNb25hZHMuTWFrZV9Nb25hZF9CKFQpO1xufTtcbiIsImluY2x1ZGUgQmFzZS5SZXN1bHQ7XG5cbm1vZHVsZSBTeW50YXggPSB7XG4gIGxldCAoIGxldCogKSA9IChyZXN1bHQsIGYpID0+IGJpbmQofmYsIHJlc3VsdCk7XG4gIGxldCAobGV0KykgPSAocmVzdWx0LCBmKSA9PiBtYXAofmYsIHJlc3VsdCk7XG59O1xuXG5tb2R1bGUgU2VyaWFsaXphdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdywgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50KCdhLCAnYikgPVxuICAgIHwgT2soJ2EpXG4gICAgfCBFcnJvcignYik7XG5cbiAgbGV0IHRvX3BlcnNpc3RlbnQgPSAocmVzdWx0OiB0KCdhLCAnYikpOiBwZXJzaXN0ZW50KCdhLCAnYikgPT5cbiAgICBzd2l0Y2ggKHJlc3VsdCkge1xuICAgIHwgT2soYSkgPT4gT2soYSlcbiAgICB8IEVycm9yKGIpID0+IEVycm9yKGIpXG4gICAgfTtcblxuICBsZXQgb2ZfcGVyc2lzdGVudCA9IChyZXN1bHQ6IHBlcnNpc3RlbnQoJ2EsICdiKSk6IHQoJ2EsICdiKSA9PlxuICAgIHN3aXRjaCAocmVzdWx0KSB7XG4gICAgfCBPayhhKSA9PiBPayhhKVxuICAgIHwgRXJyb3IoYikgPT4gRXJyb3IoYilcbiAgICB9O1xufTtcblxubGV0IHBwID0gKGEsIGIsIGMsIHgpID0+XG4gIHggfD4gU2VyaWFsaXphdGlvbi50b19wZXJzaXN0ZW50IHw+IFNlcmlhbGl6YXRpb24ucHBfcGVyc2lzdGVudChhLCBiLCBjKTtcblxubGV0IHRfb2ZfeW9qc29uID0gKGEsIGIsIHgpID0+XG4gIHggfD4gU2VyaWFsaXphdGlvbi5wZXJzaXN0ZW50X29mX3lvanNvbihhLCBiKSB8PiBTZXJpYWxpemF0aW9uLm9mX3BlcnNpc3RlbnQ7XG5cbmxldCB5b2pzb25fb2ZfdCA9IChhLCBiLCB4KSA9PlxuICB4IHw+IFNlcmlhbGl6YXRpb24udG9fcGVyc2lzdGVudCB8PiBTZXJpYWxpemF0aW9uLnlvanNvbl9vZl9wZXJzaXN0ZW50KGEsIGIpO1xuIiwibGV0IG1hcF9mc3QgPSAoZiwgKHgsIHkpKSA9PiAoZih4KSwgeSk7XG5sZXQgbWFwX3NuZCA9IChmLCAoeCwgeSkpID0+ICh4LCBmKHkpKTtcbiIsImxldCBnZXQgPSAoaWZfbm9uZSwgbykgPT5cbiAgc3dpdGNoIChvKSB7XG4gIHwgTm9uZSA9PiBpZl9ub25lKClcbiAgfCBTb21lKGEpID0+IGFcbiAgfTtcbmxldCBnZXRfb3JfZmFpbCA9IHMgPT4gZ2V0KCgpID0+IGZhaWx3aXRoKHMpKTtcbmxldCBnZXRfb3JfcmFpc2UgPSBlID0+IGdldCgoKSA9PiByYWlzZShlKSk7XG5cbmxldCBtYXAyID0gKGYsIG8xLCBvMikgPT5cbiAgc3dpdGNoIChvMSwgbzIpIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gTm9uZVxuICB8IChTb21lKHYxKSwgU29tZSh2MikpID0+IFNvbWUoZih2MSwgdjIpKVxuICB9O1xuXG5sZXQgc29tZV9pZiA9IChjb25kLCBhKSA9PiBjb25kID8gU29tZShhKSA6IE5vbmU7XG5cbmxldCB6aXAgPSAobzEsIG8yKSA9PlxuICBzd2l0Y2ggKG8xLCBvMikge1xuICB8IChOb25lLCBfKVxuICB8IChfLCBOb25lKSA9PiBOb25lXG4gIHwgKFNvbWUoYSksIFNvbWUoYikpID0+IFNvbWUoKGEsIGIpKVxuICB9O1xubGV0IHVuemlwID0gKG86IG9wdGlvbigoJ2EsICdiKSkpOiAob3B0aW9uKCdhKSwgb3B0aW9uKCdiKSkgPT5cbiAgc3dpdGNoIChvKSB7XG4gIHwgTm9uZSA9PiAoTm9uZSwgTm9uZSlcbiAgfCBTb21lKChhLCBiKSkgPT4gKFNvbWUoYSksIFNvbWUoYikpXG4gIH07XG5cbmxldCBzZXF1ZW5jZSA9IChsOiBsaXN0KG9wdGlvbignYSkpKTogb3B0aW9uKGxpc3QoJ2EpKSA9PlxuICBMaXN0LmZvbGRfcmlnaHQobWFwMigoeCwgeHMpID0+IFt4LCAuLi54c10pLCBsLCBTb21lKFtdKSk7XG5cbmxldCBhbmRfdGhlbiA9IChmLCBvKSA9PiBPcHRpb24uYmluZChvLCBmKTtcblxubW9kdWxlIFN5bnRheCA9IHtcbiAgbGV0ICggbGV0KiApID0gT3B0aW9uLmJpbmQ7XG4gIGxldCAobGV0KykgPSAobywgZikgPT4gT3B0aW9uLm1hcChmLCBvKTtcbiAgbGV0IChhbmQrKSA9IHppcDtcbn07XG4iLCJtb2R1bGUgdHlwZSBPcmRlcmVkU2hvd1R5cGUgPSB7XG4gIGluY2x1ZGUgTWFwLk9yZGVyZWRUeXBlO1xuXG4gIGxldCBwcDogKEZvcm1hdC5mb3JtYXR0ZXIsIHQpID0+IHVuaXQ7XG59O1xuXG5tb2R1bGUgdHlwZSBPcmRlcmVkU2V4cFR5cGUgPSB7XG4gIGluY2x1ZGUgTWFwLk9yZGVyZWRUeXBlO1xuXG4gIGxldCBzZXhwX29mX3Q6IHQgPT4gU2V4cGxpYi5TZXhwLnQ7XG4gIGxldCB0X29mX3NleHA6IFNleHBsaWIuU2V4cC50ID0+IHQ7XG59O1xuXG5tb2R1bGUgdHlwZSBPcmRlcmVkWW9qc29uVHlwZSA9IHtcbiAgaW5jbHVkZSBNYXAuT3JkZXJlZFR5cGU7XG5cbiAgbGV0IHlvanNvbl9vZl90OiB0ID0+IFlvanNvbi5TYWZlLnQ7XG4gIGxldCB0X29mX3lvanNvbjogWW9qc29uLlNhZmUudCA9PiB0O1xufTtcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPSB7XG4gIGluY2x1ZGUgT3JkZXJlZFNob3dUeXBlO1xuICBpbmNsdWRlIE9yZGVyZWRTZXhwVHlwZSB3aXRoIHR5cGUgdCA6PSB0O1xuICBpbmNsdWRlIE9yZGVyZWRZb2pzb25UeXBlIHdpdGggdHlwZSB0IDo9IHQ7XG59O1xuXG5tb2R1bGUgdHlwZSBTaG93UyA9IHtcbiAgaW5jbHVkZSBNYXAuUztcblxuICBsZXQgcHA6ICgoRm9ybWF0LmZvcm1hdHRlciwgJ2EpID0+IHVuaXQsIEZvcm1hdC5mb3JtYXR0ZXIsIHQoJ2EpKSA9PiB1bml0O1xufTtcblxubW9kdWxlIHR5cGUgU2V4cFMgPSB7XG4gIGluY2x1ZGUgTWFwLlM7XG5cbiAgbGV0IHNleHBfb2ZfdDogKCd2ID0+IFNleHBsaWIuU2V4cC50LCB0KCd2KSkgPT4gU2V4cGxpYi5TZXhwLnQ7XG4gIGxldCB0X29mX3NleHA6IChTZXhwbGliLlNleHAudCA9PiAndiwgU2V4cGxpYi5TZXhwLnQpID0+IHQoJ3YpO1xufTtcblxubW9kdWxlIHR5cGUgWW9qc29uUyA9IHtcbiAgaW5jbHVkZSBNYXAuUztcblxuICBsZXQgeW9qc29uX29mX3Q6ICgndiA9PiBZb2pzb24uU2FmZS50LCB0KCd2KSkgPT4gWW9qc29uLlNhZmUudDtcbiAgbGV0IHRfb2ZfeW9qc29uOiAoWW9qc29uLlNhZmUudCA9PiAndiwgWW9qc29uLlNhZmUudCkgPT4gdCgndik7XG59O1xuXG5tb2R1bGUgdHlwZSBTID0ge1xuICBpbmNsdWRlIFNob3dTO1xuICBpbmNsdWRlIFNleHBTIHdpdGggdHlwZSB0KCdhKSA6PSB0KCdhKSBhbmQgdHlwZSBrZXkgOj0ga2V5O1xuICBpbmNsdWRlIFlvanNvblMgd2l0aCB0eXBlIHQoJ2EpIDo9IHQoJ2EpIGFuZCB0eXBlIGtleSA6PSBrZXk7XG59O1xuXG5tb2R1bGUgTWFrZVNob3dGb3IgPSAoTzogT3JkZXJlZFNob3dUeXBlLCBTOiBNYXAuUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIGxldCBwcCA9IChwcF92LCBmLCBtYXApID0+XG4gICAgUy5pdGVyKFxuICAgICAgKGssIHYpID0+IEZvcm1hdC5mcHJpbnRmKGYsIFwiJWEgLT4gJWFAXFxuXCIsIE8ucHAsIGssIHBwX3YsIHYpLFxuICAgICAgbWFwLFxuICAgICk7XG59O1xuXG5tb2R1bGUgTWFrZVNob3cgPSAoTzogT3JkZXJlZFNob3dUeXBlKSA6IChTaG93UyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIG1vZHVsZSBNID0gTWFwLk1ha2UoTyk7XG5cbiAgaW5jbHVkZSBNO1xuICBpbmNsdWRlIE1ha2VTaG93Rm9yKE8sIE0pO1xufTtcblxubW9kdWxlIE1ha2VTZXhwRm9yID0gKE86IE9yZGVyZWRTZXhwVHlwZSwgUzogTWFwLlMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBvcGVuIFNleHBsaWIuU3RkO1xuXG4gIFtAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSBiaW5kaW5nKCd2KSA9IChPLnQsICd2KTtcblxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdiwgbWFwKSA9PlxuICAgIG1hcCB8PiBTLmJpbmRpbmdzIHw+IHNleHBfb2ZfbGlzdChzZXhwX29mX2JpbmRpbmcoc2V4cF9vZl92KSk7XG4gIGxldCB0X29mX3NleHAgPSAodl9vZl9zZXhwLCBzZXhwKSA9PlxuICAgIHNleHBcbiAgICB8PiBsaXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBTLm9mX3NlcTtcbn07XG5cbm1vZHVsZSBNYWtlU2V4cCA9IChPOiBPcmRlcmVkU2V4cFR5cGUpIDogKFNleHBTIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbW9kdWxlIE0gPSBNYXAuTWFrZShPKTtcblxuICBpbmNsdWRlIE07XG4gIGluY2x1ZGUgTWFrZVNleHBGb3IoTywgTSk7XG59O1xuXG5tb2R1bGUgTWFrZVlvanNvbkZvciA9IChPOiBPcmRlcmVkWW9qc29uVHlwZSwgUzogTWFwLlMgd2l0aCB0eXBlIGtleSA9IE8udCkgPT4ge1xuICBbQGRlcml2aW5nIHlvanNvbl1cbiAgdHlwZSBiaW5kaW5nKCd2KSA9IChPLnQsICd2KTtcblxuICBsZXQgeW9qc29uX29mX3QgPSAoeW9qc29uX29mX3YsIG1hcCkgPT5cbiAgICBtYXAgfD4gUy5iaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuICBsZXQgdF9vZl95b2pzb24gPSAodl9vZl95b2pzb24sIHlvanNvbikgPT5cbiAgICB5b2pzb25cbiAgICB8PiBsaXN0X29mX3lvanNvbihiaW5kaW5nX29mX3lvanNvbih2X29mX3lvanNvbikpXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBTLm9mX3NlcTtcbn07XG5cbm1vZHVsZSBNYWtlWW9qc29uID0gKE86IE9yZGVyZWRZb2pzb25UeXBlKSA6IChZb2pzb25TIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbW9kdWxlIE0gPSBNYXAuTWFrZShPKTtcblxuICBpbmNsdWRlIE07XG4gIGluY2x1ZGUgTWFrZVlvanNvbkZvcihPLCBNKTtcbn07XG5cbm1vZHVsZSBNYWtlRm9yID0gKE86IE9yZGVyZWRUeXBlLCBNOiBNYXAuUyB3aXRoIHR5cGUga2V5ID0gTy50KSA9PiB7XG4gIGluY2x1ZGUgTWFrZVNob3dGb3IoTywgTSk7XG4gIGluY2x1ZGUgTWFrZVNleHBGb3IoTywgTSk7XG4gIGluY2x1ZGUgTWFrZVlvanNvbkZvcihPLCBNKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE86IE9yZGVyZWRUeXBlKSA6IChTIHdpdGggdHlwZSBrZXkgPSBPLnQpID0+IHtcbiAgbW9kdWxlIE0gPSBNYXAuTWFrZShPKTtcblxuICBpbmNsdWRlIE07XG4gIGluY2x1ZGUgTWFrZUZvcihPLCBNKTtcbn07XG4iLCJsZXQgcmV2X2lmID0gKGI6IGJvb2wpID0+IGIgPyBMaXN0LnJldiA6IEZ1bi5pZDtcblxubGV0IGRlZHVwID0geHMgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICh4LCBkZWR1cGVkKSA9PiBMaXN0Lm1lbSh4LCBkZWR1cGVkKSA/IGRlZHVwZWQgOiBbeCwgLi4uZGVkdXBlZF0sXG4gICAgeHMsXG4gICAgW10sXG4gICk7XG5cbmxldCBkZWR1cF9mID0gKGYsIHhzKSA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKHgsIGRlZHVwZWQpID0+IExpc3QuZXhpc3RzKGYoeCksIGRlZHVwZWQpID8gZGVkdXBlZCA6IFt4LCAuLi5kZWR1cGVkXSxcbiAgICB4cyxcbiAgICBbXSxcbiAgKTtcblxubGV0IGFyZV9kdXBsaWNhdGVzID0geHMgPT5cbiAgTGlzdC5sZW5ndGgoTGlzdC5zb3J0X3VuaXEoY29tcGFyZSwgeHMpKSA9PSBMaXN0Lmxlbmd0aCh4cyk7XG5cbmxldCBncm91cF9ieSA9IChrZXk6ICd4ID0+ICdrLCB4czogbGlzdCgneCkpOiBsaXN0KCgnaywgbGlzdCgneCkpKSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoZ3JvdXBlZCwgeCkgPT4ge1xuICAgICAgbGV0IGsgPSBrZXkoeCk7XG4gICAgICBsZXQga19ncm91cCA9XG4gICAgICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoaywgZ3JvdXBlZCkpIHtcbiAgICAgICAgfCBOb25lID0+IFtdXG4gICAgICAgIHwgU29tZSh4cykgPT4geHNcbiAgICAgICAgfTtcbiAgICAgIFsoaywgW3gsIC4uLmtfZ3JvdXBdKSwgLi4uTGlzdC5yZW1vdmVfYXNzb2MoaywgZ3JvdXBlZCldO1xuICAgIH0sXG4gICAgW10sXG4gICAgeHMsXG4gICk7XG5cbmxldCByZWMgcmFuZ2UgPSAofmxvPTAsIGhpKSA9PlxuICBpZiAobG8gPiBoaSkge1xuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5yYW5nZVwiKSk7XG4gIH0gZWxzZSBpZiAobG8gPT0gaGkpIHtcbiAgICBbXTtcbiAgfSBlbHNlIHtcbiAgICBbbG8sIC4uLnJhbmdlKH5sbz1sbyArIDEsIGhpKV07XG4gIH07XG5cbi8vIGhlYWRzIG9mIHByZWZpeCBhbmQgc3VmZml4IG5laWdoYm9yIHRoZSBzdWJqZWN0XG50eXBlIGZyYW1lKCd4KSA9IChsaXN0KCd4KSwgbGlzdCgneCkpO1xuXG5sZXQgcmVjIG1rX2ZyYW1lID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogZnJhbWUoJ3gpID0+IHtcbiAgbGV0IGludmFsaWRfYXJnID0gKCkgPT4gcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLm1rX2ZyYW1lXCIpKTtcbiAgaWYgKG4gPCAwKSB7XG4gICAgaW52YWxpZF9hcmcoKTtcbiAgfSBlbHNlIGlmIChuID09IDApIHtcbiAgICAoW10sIHhzKTtcbiAgfSBlbHNlIHtcbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiBpbnZhbGlkX2FyZygpXG4gICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICBsZXQgKHByZWZpeCwgc3VmZml4KSA9IG1rX2ZyYW1lKG4gLSAxLCB4cyk7XG4gICAgICAocHJlZml4IEAgW3hdLCBzdWZmaXgpO1xuICAgIH07XG4gIH07XG59O1xuXG5sZXQgcmVjIHNwbGl0ID1cbiAgICAgICAgKGw6IGxpc3QoJ3gpLCBjb25kOiAneCA9PiBib29sKTogKGxpc3QoJ3gpLCBvcHRpb24oJ3gpLCBsaXN0KCd4KSkgPT4ge1xuICBzd2l0Y2ggKGwpIHtcbiAgfCBbXSA9PiAoW10sIE5vbmUsIFtdKVxuICB8IFt4LCAuLi54c10gPT5cbiAgICBpZiAoY29uZCh4KSkge1xuICAgICAgKFtdLCBTb21lKHgpLCB4cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCAocHJlLCB4JywgcG9zdCkgPSBzcGxpdCh4cywgY29uZCk7XG4gICAgICAoW3gsIC4uLnByZV0sIHgnLCBwb3N0KTtcbiAgICB9XG4gIH07XG59O1xuXG5sZXQgcmVjIHNwbGl0X2ZyYW1lID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogKCd4LCBmcmFtZSgneCkpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IGZhaWx3aXRoKFwibGlzdCBpbmRleCBvdXQgb2YgYm91bmRzXCIpXG4gIHwgKDAsIFt4LCAuLi54c10pID0+ICh4LCAoW10sIHhzKSlcbiAgfCAoXywgW3gsIC4uLnhzXSkgPT5cbiAgICBsZXQgKHN1YmosIChwcmVmaXgsIHN1ZmZpeCkpID0gc3BsaXRfZnJhbWUobiAtIDEsIHhzKTtcbiAgICAoc3ViaiwgKHByZWZpeCBAIFt4XSwgc3VmZml4KSk7XG4gIH07XG5cbmxldCBvZl9mcmFtZSA9ICh+c3ViamVjdDogbGlzdCgneCk9W10sIChwcmVmaXgsIHN1ZmZpeCk6IGZyYW1lKCd4KSkgPT5cbiAgTGlzdC5jb25jYXQoW0xpc3QucmV2KHByZWZpeCksIHN1YmplY3QsIHN1ZmZpeF0pO1xuXG5sZXQgY29tYmluZV9vcHQgPSAoeHMsIHlzKSA9PlxuICBzd2l0Y2ggKExpc3QuY29tYmluZSh4cywgeXMpKSB7XG4gIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBOb25lXG4gIHwgeHlzID0+IFNvbWUoeHlzKVxuICB9O1xuXG5sZXQgaXNfZW1wdHkgPVxuICBmdW5cbiAgfCBbXSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGZsYXRfbWFwID0gKGYsIGwpID0+IExpc3QuZmxhdHRlbihMaXN0Lm1hcChmLCBsKSk7XG5cbmxldCByZWMgam9pbiA9IChzZXA6ICd4LCB4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeF0gPT4gW3hdXG4gIHwgW3gsIC4uLnhzXSA9PiBbeCwgc2VwLCAuLi5qb2luKHNlcCwgeHMpXVxuICB9O1xuXG5sZXQgaGRfb3B0ID1cbiAgZnVuXG4gIHwgW10gPT4gTm9uZVxuICB8IFtoZCwgLi4uX10gPT4gU29tZShoZCk7XG5cbmxldCByZWMgbnRoX29wdCA9IChuLCB4cykgPT5cbiAgbiA8IDBcbiAgICA/IE5vbmVcbiAgICA6IChcbiAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgfCBbaGQsIC4uLnRsXSA9PiBuID09IDAgPyBTb21lKGhkKSA6IG50aF9vcHQobiAtIDEsIHRsKVxuICAgICAgfVxuICAgICk7XG5cbi8qKlxuICogYHNwbGl0X25fb3B0KG4sIHhzKWAgc3BsaXRzIHRoZSBmaXJzdCBgbmAgZWxlbWVudHMgZnJvbSBgeHNgXG4gKiBpZiBgeHNgIGhhcyBgbmAgb3IgbW9yZSBlbGVtZW50c1xuICovXG5sZXQgc3BsaXRfbl9vcHQgPSAobjogaW50LCB4czogbGlzdCgneCkpOiBvcHRpb24oKGxpc3QoJ3gpLCBsaXN0KCd4KSkpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChuOiBpbnQsIHhzOiBsaXN0KCd4KSkgPT5cbiAgICBpZiAobiA8IDApIHtcbiAgICAgIE5vbmU7XG4gICAgfSBlbHNlIGlmIChuID09IDApIHtcbiAgICAgIFNvbWUoKFtdLCB4cykpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICB8IFtdID0+IE5vbmVcbiAgICAgIHwgW3gsIC4uLnhzXSA9PlxuICAgICAgICBnbyhuIC0gMSwgeHMpXG4gICAgICAgIHw+IE9wdGlvbi5tYXAoKChwcmVmaXgsIHN1ZmZpeCkpID0+IChbeCwgLi4ucHJlZml4XSwgc3VmZml4KSlcbiAgICAgIH07XG4gICAgfTtcbiAgZ28obiwgeHMpO1xufTtcblxuLy8gVE9ETyB1bmlmeSB3aXRoIExpc3RGcmFtZVxubGV0IHNwbGl0X24gPSAobjogaW50LCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIGxpc3QoJ3gpKSA9PlxuICBzd2l0Y2ggKHNwbGl0X25fb3B0KG4sIHhzKSkge1xuICB8IE5vbmUgPT5cbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfbjogXCIgKysgc3RyaW5nX29mX2ludChuKSkpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBzdWJsaXN0IGZyb20gaW5kZXggaSAoaW5jbHVzaXZlKVxuICogdG8gaW5kZXggaiAoZXhjbHVzaXZlKSwgY291cGxlZCB3aXRoIHRoZVxuICogc3Vycm91bmRpbmcgcHJlZml4L3N1ZmZpeCBzdWJsaXN0cy5cbiAqIFJldHVybnMgTm9uZSBpZiBpID4gai5cbiAqL1xubGV0IHNwbGl0X3N1Ymxpc3Rfb3B0ID1cbiAgICAoaTogaW50LCBqOiBpbnQsIHhzOiBsaXN0KCd4KSlcbiAgICA6IG9wdGlvbigobGlzdCgneCksIGxpc3QoJ3gpLCBsaXN0KCd4KSkpID0+IHtcbiAgc3dpdGNoIChzcGxpdF9uX29wdChqLCB4cykpIHtcbiAgfCBOb25lID0+IE5vbmVcbiAgfCBTb21lKChsZWZ0LCByaWdodCkpID0+XG4gICAgc3dpdGNoIChzcGxpdF9uX29wdChpLCBsZWZ0KSkge1xuICAgIHwgTm9uZSA9PiBOb25lXG4gICAgfCBTb21lKChsZWZ0LCBtaWQpKSA9PiBTb21lKChsZWZ0LCBtaWQsIHJpZ2h0KSlcbiAgICB9XG4gIH07XG59O1xubGV0IHNwbGl0X3N1Ymxpc3QgPVxuICAgIChpOiBpbnQsIGo6IGludCwgeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCBsaXN0KCd4KSwgbGlzdCgneCkpID0+XG4gIHN3aXRjaCAoc3BsaXRfc3VibGlzdF9vcHQoaSwgaiwgeHMpKSB7XG4gIHwgTm9uZSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiTGlzdFV0aWwuc3BsaXRfc3VibGlzdFwiKSlcbiAgfCBTb21lKHIpID0+IHJcbiAgfTtcbmxldCBzdWJsaXN0ID0gKChpLCBqKSwgeHM6IGxpc3QoJ3gpKTogbGlzdCgneCkgPT4ge1xuICBsZXQgKF8sIHN1Ymxpc3QsIF8pID0gc3BsaXRfc3VibGlzdChpLCBqLCB4cyk7XG4gIHN1Ymxpc3Q7XG59O1xuXG5sZXQgcmVjIHNwbGl0X250aF9vcHQgPSAobiwgeHMpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCBfIHdoZW4gbiA8IDAgPT4gTm9uZVxuICB8IChfLCBbXSkgPT4gTm9uZVxuICB8ICgwLCBbeCwgLi4uc3VmZml4XSkgPT4gU29tZSgoW10sIHgsIHN1ZmZpeCkpXG4gIHwgKF8sIFt4LCAuLi54c10pID0+XG4gICAgc3BsaXRfbnRoX29wdChuIC0gMSwgeHMpXG4gICAgfD4gT3B0aW9uLm1hcCgoKHByZWZpeCwgc3ViamVjdCwgc3VmZml4KSkgPT5cbiAgICAgICAgIChbeCwgLi4ucHJlZml4XSwgc3ViamVjdCwgc3VmZml4KVxuICAgICAgIClcbiAgfTtcbmxldCBzcGxpdF9udGggPSAobiwgeHMpID0+XG4gIHN3aXRjaCAoc3BsaXRfbnRoX29wdChuLCB4cykpIHtcbiAgfCBOb25lID0+XG4gICAgcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLnNwbGl0X250aDogXCIgKysgc3RyaW5nX29mX2ludChuKSkpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG5cbmxldCByZWMgcHV0X250aCA9IChuOiBpbnQsIHg6ICd4LCB4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBmYWlsd2l0aChcIm91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW18sIC4uLnRsXSkgPT4gW3gsIC4uLnRsXVxuICB8IChfLCBbaGQsIC4uLnRsXSkgPT5cbiAgICBsZXQgdGwgPSBwdXRfbnRoKG4gLSAxLCB4LCB0bCk7XG4gICAgW2hkLCAuLi50bF07XG4gIH07XG5cbmxldCByZWMgbWFwX250aCA9IChuOiBpbnQsIGY6ICdhID0+ICdhLCB4czogbGlzdCgnYSkpOiBsaXN0KCdhKSA9PlxuICBzd2l0Y2ggKG4sIHhzKSB7XG4gIHwgKF8sIFtdKSA9PiBmYWlsd2l0aChcIm91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW2hkLCAuLi50bF0pID0+IFtmKGhkKSwgLi4udGxdXG4gIHwgKF8sIFtoZCwgLi4udGxdKSA9PiBbaGQsIC4uLm1hcF9udGgobiAtIDEsIGYsIHRsKV1cbiAgfTtcblxubGV0IHJlYyBzcGxpdF9sYXN0X29wdCA9ICh4czogbGlzdCgneCkpOiBvcHRpb24oKGxpc3QoJ3gpLCAneCkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3hdID0+IFNvbWUoKFtdLCB4KSlcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgc3BsaXRfbGFzdF9vcHQoeHMpXG4gICAgfD4gT3B0aW9uLm1hcCgoKGxlYWRpbmcsIGxhc3QpKSA9PiAoW3gsIC4uLmxlYWRpbmddLCBsYXN0KSlcbiAgfTtcbi8vIGxldCBsYXN0X29wdCA9IHhzID0+IHhzIHw+IHNwbGl0X2xhc3Rfb3B0IHw+IE9wdGlvbi5tYXAoc25kKTtcblxubGV0IHNwbGl0X2xhc3QgPSAoeHM6IGxpc3QoJ3gpKTogKGxpc3QoJ3gpLCAneCkgPT5cbiAgc3dpdGNoIChzcGxpdF9sYXN0X29wdCh4cykpIHtcbiAgfCBOb25lID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9sYXN0XCIpKVxuICB8IFNvbWUocikgPT4gclxuICB9O1xubGV0IGxlYWRpbmcgPSB4cyA9PiBmc3Qoc3BsaXRfbGFzdCh4cykpO1xubGV0IGxhc3QgPSB4cyA9PiBzbmQoc3BsaXRfbGFzdCh4cykpO1xubGV0IGxhc3Rfb3B0ID0geHMgPT4ge1xuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGgoeHMpO1xuICBpZiAobGVuZ3RoID09IDApIHtcbiAgICBOb25lO1xuICB9IGVsc2Uge1xuICAgIFNvbWUoTGlzdC5udGgoeHMsIGxlbmd0aCAtIDEpKTtcbiAgfTtcbn07XG5cbmxldCBzcGxpdF9maXJzdF9vcHQgPSAoeHM6IGxpc3QoJ3gpKTogb3B0aW9uKCgneCwgbGlzdCgneCkpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmaXJzdCwgLi4udHJhaWxpbmddID0+IFNvbWUoKGZpcnN0LCB0cmFpbGluZykpXG4gIH07XG5sZXQgc3BsaXRfZmlyc3QgPSB4cyA9PlxuICBzcGxpdF9maXJzdF9vcHQoeHMpXG4gIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0VXRpbC5zcGxpdF9maXJzdFwiKSk7XG5cbmxldCByZWMgZm9sZF9sZWZ0X21hcCA9XG4gICAgICAgIChmOiAoJ2FjYywgJ3gpID0+ICgnYWNjLCAneSksIHN0YXJ0OiAnYWNjLCB4czogbGlzdCgneCkpXG4gICAgICAgIDogKCdhY2MsIGxpc3QoJ3kpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gKHN0YXJ0LCBbXSlcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgbGV0IChuZXdfYWNjLCB5KSA9IGYoc3RhcnQsIHgpO1xuICAgIGxldCAoZmluYWwsIHlzKSA9IGZvbGRfbGVmdF9tYXAoZiwgbmV3X2FjYywgeHMpO1xuICAgIChmaW5hbCwgW3ksIC4uLnlzXSk7XG4gIH07XG5cbmxldCByZWMgdGFrZV93aGlsZSA9IChwOiAneCA9PiBib29sLCB4czogbGlzdCgneCkpOiAobGlzdCgneCksIGxpc3QoJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gKFtdLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIGlmIChwKGhkKSkge1xuICAgICAgbGV0ICh0YWtlbiwgcmVzdCkgPSB0YWtlX3doaWxlKHAsIHRsKTtcbiAgICAgIChbaGQsIC4uLnRha2VuXSwgcmVzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIChbXSwgeHMpO1xuICAgIH1cbiAgfTtcblxubGV0IHByb2R1Y3QgPSAoeHMsIHlzKSA9PlxuICB4cyB8PiBMaXN0Lm1hcCh4ID0+IHlzIHw+IExpc3QubWFwKHkgPT4gKHgsIHkpKSkgfD4gTGlzdC5mbGF0dGVuO1xuXG5sZXQgcmVjIG9yZGVyZWRfcGFpcnMgPSAoeHM6IGxpc3QoJ3gpKTogbGlzdCgoJ3gsICd4KSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW2hkLCAuLi50bF0gPT4gTGlzdC5tYXAoeCA9PiAoaGQsIHgpLCB0bCkgQCBvcmRlcmVkX3BhaXJzKHRsKVxuICB9O1xuXG5sZXQgcmVjIG5laWdoYm9ycyA9ICh4czogbGlzdCgneCkpOiBsaXN0KCgneCwgJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW11cbiAgfCBbX10gPT4gW11cbiAgfCBbeDEsIHgyLCAuLi54c10gPT4gWyh4MSwgeDIpLCAuLi5uZWlnaGJvcnMoW3gyLCAuLi54c10pXVxuICB9O1xuXG5tb2R1bGUgU3ludGF4ID0ge1xuICBsZXQgKGxldCspID0gKHhzLCBmKSA9PiBMaXN0Lm1hcChmLCB4cyk7XG4gIGxldCAoYW5kKykgPSBwcm9kdWN0O1xuICBsZXQgKCBsZXQqICkgPSAoeHMsIGYpID0+IExpc3QuY29uY2F0X21hcChmLCB4cyk7XG59O1xuXG5sZXQgbWFwX2FsdDogKCdhID0+ICdjLCAnYiA9PiAnYywgbGlzdCgnYSksIGxpc3QoJ2IpKSA9PiBsaXN0KCdjKSA9XG4gIChmeCwgZnksIHhzLCB5cykgPT4ge1xuICAgIGlmIChMaXN0Lmxlbmd0aCh4cykgIT0gTGlzdC5sZW5ndGgoeXMpICsgMSkge1xuICAgICAgcmFpc2UoSW52YWxpZF9hcmd1bWVudChcIkxpc3RVdGlsLm1hcF9hbHRcIikpO1xuICAgIH07XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKGFjYywgeCwgeSkgPT4gYWNjIEAgW2Z5KHkpLCBmeCh4KV0sXG4gICAgICBbZngoTGlzdC5oZCh4cykpXSxcbiAgICAgIExpc3QudGwoeHMpLFxuICAgICAgeXMsXG4gICAgKTtcbiAgfTtcblxubGV0IGludGVybGVhdmUgPSAoeHMsIHlzKSA9PiBtYXBfYWx0KHggPT4geCwgeSA9PiB5LCB4cywgeXMpO1xuXG5sZXQgcF9pbmRpY2VzID0gKHA6ICdhID0+IGJvb2wsIHhzOiBsaXN0KCdhKSk6IGxpc3QoaW50KSA9PiB7XG4gIGxldCAoXywgaWR4cykgPVxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKChuLCBpZHhzKSwgeCkgPT4gKG4gKyAxLCBpZHhzIEAgKHAoeCkgPyBbbl0gOiBbXSkpLFxuICAgICAgKDAsIFtdKSxcbiAgICAgIHhzLFxuICAgICk7XG4gIGlkeHM7XG59O1xuXG5sZXQgc3BsaXRzID0gKHhzOiBsaXN0KCd4KSBhcyAneHMpOiBsaXN0KCgneHMsICd4cykpID0+IHtcbiAgbGV0IHJlYyBnbyA9IChzcGxpdDogKCd4cywgJ3hzKSk6IGxpc3QoKCd4cywgJ3hzKSkgPT5cbiAgICBzd2l0Y2ggKHNwbGl0KSB7XG4gICAgfCAoXywgW10pID0+IFtzcGxpdF1cbiAgICB8IChsLCBbaGQsIC4uLnRsXSkgPT4gW3NwbGl0LCAuLi5nbygobCBAIFtoZF0sIHRsKSldXG4gICAgfTtcbiAgZ28oKFtdLCB4cykpO1xufTtcblxubGV0IGVsZW1fc3BsaXRzID0gKHhzOiBsaXN0KCd4KSBhcyAneHMpOiBsaXN0KCgneHMsICd4LCAneHMpKSA9PiB7XG4gIGxldCByZWMgZ28gPSAoc3BsaXQ6ICgneHMsICd4LCAneHMpKTogbGlzdCgoJ3hzLCAneCwgJ3hzKSkgPT5cbiAgICBzd2l0Y2ggKHNwbGl0KSB7XG4gICAgfCAoXywgXywgW10pID0+IFtzcGxpdF1cbiAgICB8IChsLCB4LCBbaGQsIC4uLnRsXSkgPT4gW3NwbGl0LCAuLi5nbygoW3gsIC4uLmxdLCBoZCwgdGwpKV1cbiAgICB9O1xuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeCwgLi4ueHNdID0+IGdvKChbXSwgeCwgeHMpKVxuICB9O1xufTtcblxubGV0IHJvdGF0ZSA9ICh4czogbGlzdCgneCkpOiBsaXN0KCd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PiB0bCBAIFtoZF1cbiAgfTtcblxubGV0IHNpbmdsZV9lbGVtID0gKHhzOiBsaXN0KCd4KSk6IG9wdGlvbigneCkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbaGQsIC4uLnRsXSA9PiBMaXN0LmZvcl9hbGwoKD09KShoZCksIHRsKSA/IFNvbWUoaGQpIDogTm9uZVxuICB9O1xuXG5sZXQgY291bnRfcHJlZCA9IChmOiAnYSA9PiBib29sLCB4czogbGlzdCgnYSkpOiBpbnQgPT5cbiAgTGlzdC5mb2xkX2xlZnQoKG4sIHgpID0+IGYoeCkgPyBuICsgMSA6IG4sIDAsIHhzKTtcblxubGV0IGZvcl9hbGwyX29wdCA9XG4gICAgKGY6ICgnYSwgJ2IpID0+IGJvb2wsIHhzOiBsaXN0KCdhKSwgeXM6IGxpc3QoJ2IpKTogb3B0aW9uKGJvb2wpID0+XG4gIHN3aXRjaCAoTGlzdC5mb3JfYWxsMihmLCB4cywgeXMpKSB7XG4gIHwgYiA9PiBTb21lKGIpXG4gIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBOb25lXG4gIH07XG5cbmxldCBtYXAyX29wdCA9XG4gICAgKGY6ICgnYSwgJ2IpID0+ICdjLCB4czogbGlzdCgnYSksIHlzOiBsaXN0KCdiKSk6IG9wdGlvbihsaXN0KCdjKSkgPT5cbiAgc3dpdGNoIChMaXN0Lm1hcDIoZiwgeHMsIHlzKSkge1xuICB8IGIgPT4gU29tZShiKVxuICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gTm9uZVxuICB9O1xuXG4vKiByZXBlYXQgYW4gZWxlbWVudCBuIHRpbWVzICovXG5sZXQgcmVwbGljYXRlID0gKG46IGludCwgZTogJ2EpOiBsaXN0KCdhKSA9PiB7XG4gIC8qIGFkZCBjIGFkZGl0aW9uYWwgY29waWVzIG9mIGUgdG8geHMgKi9cbiAgbGV0IHJlYyBmID0gKGMsIHhzKSA9PlxuICAgIGlmIChjID4gMCkge1xuICAgICAgZihjIC0gMSwgW2UsIC4uLnhzXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHhzO1xuICAgIH07XG4gIGYobiwgW10pO1xufTtcblxuLyoqXG4gKiBaaXBzIHRvZ2V0aGVyIHR3byBsaXN0cywgcmV0dXJuaW5nIE5vbmUgaWYgZGlmZmVyZW50IGxlbmd0aHNcbiAqL1xubGV0IHJlYyBvcHRfemlwID0gKHhzOiBsaXN0KCd4KSwgeXM6IGxpc3QoJ3kpKTogb3B0aW9uKGxpc3QoKCd4LCAneSkpKSA9PlxuICBzd2l0Y2ggKHhzLCB5cykge1xuICB8IChbXSwgW18sIC4uLl9dKVxuICB8IChbXywgLi4uX10sIFtdKSA9PiBOb25lXG4gIHwgKFtdLCBbXSkgPT4gU29tZShbXSlcbiAgfCAoW3gsIC4uLnhzXSwgW3ksIC4uLnlzXSkgPT5cbiAgICBvcHRfemlwKHhzLCB5cykgfD4gT3B0aW9uLm1hcCh4eXMgPT4gWyh4LCB5KSwgLi4ueHlzXSlcbiAgfTtcblxubGV0IHJlYyB6aXBfZGVmYXVsdHMgPVxuICAgICAgICAoeHM6IGxpc3QoJ2EpLCB5czogbGlzdCgnYiksIGRlZmF1bHRfeDogJ2EsIGRlZmF1bHRfeTogJ2IpXG4gICAgICAgIDogbGlzdCgoJ2EsICdiKSkgPT5cbiAgc3dpdGNoICh4cywgeXMpIHtcbiAgfCAoW10sIFtdKSA9PiBbXVxuICB8IChbeCwgLi4ueHNdLCBbeSwgLi4ueXNdKSA9PiBbXG4gICAgICAoeCwgeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB8IChbXSwgW3ksIC4uLnlzXSkgPT4gW1xuICAgICAgKGRlZmF1bHRfeCwgeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB8IChbeCwgLi4ueHNdLCBbXSkgPT4gW1xuICAgICAgKHgsIGRlZmF1bHRfeSksXG4gICAgICAuLi56aXBfZGVmYXVsdHMoeHMsIHlzLCBkZWZhdWx0X3gsIGRlZmF1bHRfeSksXG4gICAgXVxuICB9O1xuXG5sZXQgcmVjIHVwZGF0ZV9udGggPSAobiwgeHMsIGYpID0+XG4gIHN3aXRjaCAobiwgeHMpIHtcbiAgfCAoXywgW10pID0+IFtdXG4gIHwgKDAsIFt4LCAuLi54c10pID0+IFtmKHgpLCAuLi54c11cbiAgfCAobiwgW3gsIC4uLnhzXSkgPT4gW3gsIC4uLnVwZGF0ZV9udGgobiAtIDEsIHhzLCBmKV1cbiAgfTtcblxubGV0IHJlYyBkaXNqb2ludF9wYWlycyA9ICh4czogbGlzdCgneCkpOiBsaXN0KCgneCwgJ3gpKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW11cbiAgfCBbX10gPT4gW11cbiAgfCBbeDEsIHgyLCAuLi54c10gPT4gWyh4MSwgeDIpLCAuLi5kaXNqb2ludF9wYWlycyh4cyldXG4gIH07XG5cbmxldCBmaW5kaV9vcHQ6ICgneCA9PiBib29sLCBsaXN0KCd4KSkgPT4gb3B0aW9uKChpbnQsICd4KSkgPVxuICAoZiwgeHMpID0+IHtcbiAgICBMaXN0Lm1hcGkoKGksIHgpID0+IChpLCB4KSwgeHMpXG4gICAgfD4gTGlzdC5maW5kX21hcCgoKF8sIHgpIGFzIHBhaXIpID0+XG4gICAgICAgICBpZiAoZih4KSkge1xuICAgICAgICAgICBTb21lKHBhaXIpO1xuICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgTm9uZTtcbiAgICAgICAgIH1cbiAgICAgICApO1xuICB9O1xuXG5sZXQgaW5pdF9mb2xkOiAoaW50LCAnYiwgKGludCwgJ2IpID0+ICgnYiwgJ2EpKSA9PiAoJ2IsIGxpc3QoJ2EpKSA9XG4gIChuLCBiLCBmKSA9PiB7XG4gICAgbGV0IHJhbmdlID0gTGlzdC5pbml0KG4sIG4gPT4gbik7XG4gICAgbGV0IChhY2MsIHJldl94cykgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICgoYWNjLCB4cyksIG4pID0+IHtcbiAgICAgICAgICBsZXQgKGFjYycsIGVsdCkgPSBmKG4sIGFjYyk7XG4gICAgICAgICAgKGFjYycsIFtlbHQsIC4uLnhzXSk7XG4gICAgICAgIH0sXG4gICAgICAgIChiLCBbXSksXG4gICAgICAgIHJhbmdlLFxuICAgICAgKTtcbiAgICAoYWNjLCBMaXN0LnJldihyZXZfeHMpKTtcbiAgfTtcblxubGV0IGFzc29jX2VyciA9ICh4LCB4cywgZXJyOiBzdHJpbmcpID0+XG4gIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQoeCwgeHMpKSB7XG4gIHwgTm9uZSA9PiBmYWlsd2l0aChlcnIpXG4gIHwgU29tZSh5KSA9PiB5XG4gIH07XG5cbmxldCB1cGRhdGVfYXNzb2MgPSAoKGssIHYpKSA9PlxuICBMaXN0Lm1hcCgoKGsnLCB2JykpID0+IGsgPT0gaycgPyAoaywgdikgOiAoaycsIHYnKSk7XG5cbi8qIEdpdmUgYSBsaXN0IG9mIG9wdGlvbmFsICdhLCBzcGxpdCB0aGVcbiAqIGxpc3QgdXAgdXNpbmcgdGhlIE5vbmVzIGFzIGRpdmlkZXJzICovXG5sZXQgc3BsaXRfYXRfbm9uZXMgPSAoeHM6IGxpc3Qob3B0aW9uKCdhKSkpOiBsaXN0KGxpc3QoJ2EpKSA9PiB7XG4gIGxldCByZWMgZ28gPSAoeHMsIGFjYykgPT5cbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiBhY2NcbiAgICB8IFtOb25lLCAuLi54c10gPT4gZ28oeHMsIFtbXSwgLi4uYWNjXSlcbiAgICB8IFtTb21lKHgpLCAuLi54c10gPT5cbiAgICAgIHN3aXRjaCAoYWNjKSB7XG4gICAgICB8IFthY2MsIC4uLmFjY3NdID0+IGdvKHhzLCBbW3gsIC4uLmFjY10sIC4uLmFjY3NdKVxuICAgICAgfCBbXSA9PiBnbyh4cywgW1t4XV0pXG4gICAgICB9XG4gICAgfTtcbiAgZ28oeHMsIFtdKSB8PiBMaXN0Lm1hcChMaXN0LnJldikgfD4gTGlzdC5yZXY7XG59O1xuXG4vKiBHaXZlIGEgbGlzdCBvZiBsaXN0cywgcmV0dXJuIGEgbGlzdCBvZiBwYWlycyBvZlxuICogdGhlIGZpcnN0IGFuZCBsYXN0IGVsZW1lbnQgb2YgZWFjaCBsaXN0LiAqL1xubGV0IGZpcnN0X2FuZF9sYXN0ID0gKHhzczogbGlzdChsaXN0KCdhKSkpOiBsaXN0KCgnYSwgJ2EpKSA9PlxuICB4c3NcbiAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgIGZ1blxuICAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgIHwgW3hdID0+IFNvbWUoKHgsIHgpKVxuICAgICAgIHwgW3gsIC4uLnhzXSA9PiBTb21lKCh4LCBsYXN0KHhzKSkpLFxuICAgICApO1xuXG5sZXQgcmVjIHJldl9jb25jYXQ6IChsaXN0KCdhKSwgbGlzdCgnYSkpID0+IGxpc3QoJ2EpID1cbiAgKGxzLCBycykgPT4ge1xuICAgIHN3aXRjaCAobHMpIHtcbiAgICB8IFtdID0+IHJzXG4gICAgfCBbaGQsIC4uLnRsXSA9PiByZXZfY29uY2F0KHRsLCBbaGQsIC4uLnJzXSlcbiAgICB9O1xuICB9O1xuXG5sZXQgcmVjIG1hcDMgPSAoZiwgeHMsIHlzLCB6cykgPT5cbiAgc3dpdGNoICh4cywgeXMsIHpzKSB7XG4gIHwgKFtdLCBbXSwgW10pID0+IFtdXG4gIHwgKFt4LCAuLi54c10sIFt5LCAuLi55c10sIFt6LCAuLi56c10pID0+IFtcbiAgICAgIGYoeCwgeSwgeiksXG4gICAgICAuLi5tYXAzKGYsIHhzLCB5cywgenMpLFxuICAgIF1cbiAgfCBfID0+IGZhaWx3aXRoKFwiTGlzdHMgYXJlIG9mIHVuZXF1YWwgbGVuZ3RoXCIpXG4gIH07XG5cbmxldCByZWMgdW56aXAgPSAobHN0OiBsaXN0KCgnYSwgJ2IpKSk6IChsaXN0KCdhKSwgbGlzdCgnYikpID0+IHtcbiAgc3dpdGNoIChsc3QpIHtcbiAgfCBbXSA9PiAoW10sIFtdKVxuICB8IFsoYSwgYiksIC4uLnRhaWxdID0+XG4gICAgbGV0IChfYXMsIGJzKSA9IHVuemlwKHRhaWwpO1xuICAgIChbYSwgLi4uX2FzXSwgW2IsIC4uLmJzXSk7XG4gIH07XG59O1xuXG5sZXQgY3Jvc3MgPSAoeHMsIHlzKSA9PlxuICBMaXN0LmNvbmNhdChMaXN0Lm1hcCh4ID0+IExpc3QubWFwKHkgPT4gKHgsIHkpLCB5cyksIHhzKSk7XG5cbmxldCByZWMgaW50ZXJzcGVyc2UgPSAoc2VwLCB4cykgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IFtdXG4gIHwgW3hdID0+IFt4XVxuICB8IFt4LCAuLi54c10gPT4gW3gsIHNlcCwgLi4uaW50ZXJzcGVyc2Uoc2VwLCB4cyldXG4gIH07XG5cbmxldCByZWMgZmxhdF9pbnRlcnNwZXJzZSA9IChzZXAsIHhzcykgPT5cbiAgc3dpdGNoICh4c3MpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFt4c10gPT4geHNcbiAgfCBbeHMsIC4uLnhzc10gPT4geHMgQCBbc2VwLCAuLi5mbGF0X2ludGVyc3BlcnNlKHNlcCwgeHNzKV1cbiAgfTtcblxubGV0IHJlYyBtYXBfbGFzdF9vbmx5ID0gKGYsIHhzKSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbeF0gPT4gW2YoeCldXG4gIHwgW3gsIC4uLnhzXSA9PiBbeCwgLi4ubWFwX2xhc3Rfb25seShmLCB4cyldXG4gIH07XG5cbmxldCByZWMgc3BsaXRfbGFzdCA9ICh4czogbGlzdCgneCkpOiAobGlzdCgneCksICd4KSA9PlxuICBzd2l0Y2ggKHhzKSB7XG4gIHwgW10gPT4gZmFpbHdpdGgoXCJMaXN0VXRpbC5zcGxpdF9sYXN0XCIpXG4gIHwgW3hdID0+IChbXSwgeClcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgbGV0IChwcmVmaXgsIGxhc3QpID0gc3BsaXRfbGFzdCh4cyk7XG4gICAgKFt4LCAuLi5wcmVmaXhdLCBsYXN0KTtcbiAgfTtcblxubGV0IG1pbmltdW0gPSAoZjogJ2EgPT4gaW50LCB4czogbGlzdCgnYSkpOiBvcHRpb24oJ2EpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBOb25lXG4gIHwgW3gsIC4uLnhzXSA9PlxuICAgIGxldCByZWMgbG9vcCA9IChiZXN0OiAnYSwgYmVzdF9mOiBpbnQsIHhzOiBsaXN0KCdhKSk6IG9wdGlvbignYSkgPT5cbiAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgIHwgW10gPT4gU29tZShiZXN0KVxuICAgICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICAgIGxldCBmX3ggPSBmKHgpO1xuICAgICAgICBpZiAoZl94IDwgYmVzdF9mKSB7XG4gICAgICAgICAgbG9vcCh4LCBmX3gsIHhzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb29wKGJlc3QsIGJlc3RfZiwgeHMpO1xuICAgICAgICB9O1xuICAgICAgfTtcbiAgICBsb29wKHgsIGYoeCksIHhzKTtcbiAgfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgTGVmdFxuICB8IFJpZ2h0O1xuXG5sZXQgdG9nZ2xlID1cbiAgZnVuXG4gIHwgTGVmdCA9PiBSaWdodFxuICB8IFJpZ2h0ID0+IExlZnQ7XG5cbmxldCBzaWduID1cbiAgZnVuXG4gIHwgTGVmdCA9PiAoLTEpXG4gIHwgUmlnaHQgPT4gMTtcblxubGV0IGNob29zZSA9IChkLCAobCwgcikpID0+XG4gIHN3aXRjaCAoZCkge1xuICB8IExlZnQgPT4gbFxuICB8IFJpZ2h0ID0+IHJcbiAgfTtcbiIsIm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8vIGhlYWRzIG9mIHByZWZpeCBhbmQgc3VmZml4IG5laWdoYm9yIHRoZSBzdWJqZWN0XG4vLyBOT1RFOiBERVBSRUNBVEVEXG50eXBlIHQoJ3gpID0gKGxpc3QoJ3gpLCBsaXN0KCd4KSk7XG5cbmxldCByZWMgbWtfb3B0ID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogb3B0aW9uKHQoJ3gpKSA9PlxuICBpZiAobiA8IDApIHtcbiAgICBOb25lO1xuICB9IGVsc2UgaWYgKG4gPT0gMCkge1xuICAgIFNvbWUoKFtdLCB4cykpO1xuICB9IGVsc2Uge1xuICAgIHN3aXRjaCAoeHMpIHtcbiAgICB8IFtdID0+IE5vbmVcbiAgICB8IFt4LCAuLi54c10gPT5cbiAgICAgIGxldCsgKHByZWZpeCwgc3VmZml4KSA9IG1rX29wdChuIC0gMSwgeHMpO1xuICAgICAgKHByZWZpeCBAIFt4XSwgc3VmZml4KTtcbiAgICB9O1xuICB9O1xubGV0IG1rID0gKG4sIHhzKSA9PlxuICBta19vcHQobiwgeHMpXG4gIHw+IE9wdFV0aWwuZ2V0KCgpID0+IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJMaXN0RnJhbWUubWtcIikpKTtcblxubGV0IHJlYyBmaW5kX21rID1cbiAgICAgICAgKHA6ICd4ID0+IG9wdGlvbigneSksIHhzOiBsaXN0KCd4KSk6IG9wdGlvbigoJ3ksIHQoJ3gpKSkgPT5cbiAgc3dpdGNoICh4cykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbeCwgLi4ueHNdID0+XG4gICAgc3dpdGNoIChwKHgpKSB7XG4gICAgfCBTb21lKHkpID0+IFNvbWUoKHksIChbXSwgeHMpKSlcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCsgKHksIChwcmVmaXgsIHN1ZmZpeCkpID0gZmluZF9tayhwLCB4cyk7XG4gICAgICAoeSwgKHByZWZpeCBAIFt4XSwgc3VmZml4KSk7XG4gICAgfVxuICB9O1xuXG5sZXQgb3JpZW50ID1cbiAgICAoZDogRGlyZWN0aW9uLnQsIChwcmVmaXgsIHN1ZmZpeCk6IHQoJ3gpKTogKGxpc3QoJ3gpLCBsaXN0KCd4KSkgPT5cbiAgZCA9PSBMZWZ0ID8gKHByZWZpeCwgc3VmZml4KSA6IChzdWZmaXgsIHByZWZpeCk7XG5sZXQgdW5vcmllbnQgPSBvcmllbnQ7XG5cbmxldCByZWMgc3BsaXRfbnRoID0gKG46IGludCwgeHM6IGxpc3QoJ3gpKTogKCd4LCB0KCd4KSkgPT5cbiAgc3dpdGNoIChuLCB4cykge1xuICB8IChfLCBbXSkgPT4gZmFpbHdpdGgoXCJsaXN0IGluZGV4IG91dCBvZiBib3VuZHNcIilcbiAgfCAoMCwgW3gsIC4uLnhzXSkgPT4gKHgsIChbXSwgeHMpKVxuICB8IChfLCBbeCwgLi4ueHNdKSA9PlxuICAgIGxldCAoc3ViaiwgKHByZWZpeCwgc3VmZml4KSkgPSBzcGxpdF9udGgobiAtIDEsIHhzKTtcbiAgICAoc3ViaiwgKHByZWZpeCBAIFt4XSwgc3VmZml4KSk7XG4gIH07XG5cbmxldCBzcGxpdF9zdWJsaXN0ID0gKChpOiBpbnQsIGo6IGludCksIHhzOiBsaXN0KCd4KSk6IChsaXN0KCd4KSwgdCgneCkpID0+IHtcbiAgbGV0IChwcmVmaXgsIHN1ZmZpeCkgPSBtayhqLCB4cyk7XG4gIGxldCAocHJlZml4LCBzdWJsaXN0KSA9IG1rKGksIExpc3QucmV2KHByZWZpeCkpO1xuICAoc3VibGlzdCwgKHByZWZpeCwgc3VmZml4KSk7XG59O1xuXG5sZXQgdG9fbGlzdCA9ICh+c3ViamVjdDogbGlzdCgneCk9W10sIChwcmVmaXgsIHN1ZmZpeCk6IHQoJ3gpKSA9PlxuICBMaXN0LmNvbmNhdChbTGlzdC5yZXYocHJlZml4KSwgc3ViamVjdCwgc3VmZml4XSk7XG5cbmxldCBhcHBlbmQgPSAoKHByZWZpeCwgc3VmZml4KTogdCgneCksIChwcmVmaXgnLCBzdWZmaXgnKTogdCgneCkpID0+IChcbiAgcHJlZml4IEAgcHJlZml4JyxcbiAgc3VmZml4IEAgc3VmZml4Jyxcbik7XG4iLCJsZXQgbnVtX2RpZ2l0cyA9IG4gPT4gU3RyaW5nLmxlbmd0aChzdHJpbmdfb2ZfaW50KG4pKTtcblxubGV0IG1vZHVsbyA9ICh4LCB5KSA9PiB7XG4gIGxldCByZXN1bHQgPSB4IG1vZCB5O1xuICByZXN1bHQgPj0gMCA/IHJlc3VsdCA6IHJlc3VsdCArIHk7XG59O1xuXG5sZXQgaXBvdyA9IChiYXNlOiBpbnQsIGV4cG9uZW50OiBpbnQpOiBpbnQgPT4ge1xuICBsZXQgcmVjIGlwb3dfaXRlciA9IChiOiBpbnQsIGU6IGludCwgcjogaW50KTogaW50ID0+XG4gICAgaWYgKGUgPT09IDApIHtcbiAgICAgIHI7XG4gICAgfSBlbHNlIGlmIChlIGxhbmQgMSAhPT0gMCkge1xuICAgICAgaXBvd19pdGVyKGIgKiBiLCBlIGxzciAxLCByICogYik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlwb3dfaXRlcihiICogYiwgZSBsc3IgMSwgcik7XG4gICAgfTtcbiAgaXBvd19pdGVyKGJhc2UsIGV4cG9uZW50LCAxKTtcbn07XG4iLCJpbmNsdWRlIFB0bWFwO1xub3BlbiBTZXhwbGliLlN0ZDtcbm1vZHVsZSBTZXhwID0gU2V4cGxpYi5TZXhwO1xuXG5bQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxudHlwZSBiaW5kaW5nKCd2KSA9IChpbnQsICd2KTtcblxubGV0IHNpbmdsZXRvbiA9IChrLCB2KSA9PiBQdG1hcC5hZGQoaywgdiwgUHRtYXAuZW1wdHkpO1xuXG5sZXQgZGlzal91bmlvbiA9IChtOiB0KCdhKSwgbSc6IHQoJ2EpKTogdCgnYSkgPT5cbiAgdW5pb24oXG4gICAgKF8sIF8sIF8pID0+XG4gICAgICByYWlzZShcbiAgICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgICBcIkludE1hcC5kaXNqX3VuaW9uIGV4cGVjdHMgaW5wdXQgbWFwcyB0byBoYXZlIGRpc2pvaW50IGtleSBzZXRzXCIsXG4gICAgICAgICksXG4gICAgICApLFxuICAgIG0sXG4gICAgbScsXG4gICk7XG5cbmxldCBwcCA9IChwcF92LCBmLCBtYXApID0+XG4gIGl0ZXIoKGssIHYpID0+IEZvcm1hdC5mcHJpbnRmKGYsIFwiJWQgLT4gJWFAXFxuXCIsIGssIHBwX3YsIHYpLCBtYXApO1xuXG5sZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdjogJ3YgPT4gU2V4cC50LCBtYXA6IHQoJ3YpKTogU2V4cC50ID0+XG4gIG1hcCB8PiBiaW5kaW5ncyB8PiBzZXhwX29mX2xpc3Qoc2V4cF9vZl9iaW5kaW5nKHNleHBfb2ZfdikpO1xubGV0IHRfb2Zfc2V4cCA9ICh2X29mX3NleHA6IFNleHAudCA9PiAndiwgc2V4cDogU2V4cC50KTogdCgndikgPT5cbiAgc2V4cCB8PiBsaXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpIHw+IExpc3QudG9fc2VxIHw+IG9mX3NlcTtcblxubGV0IHlvanNvbl9vZl90ID1cbiAgICAoeW9qc29uX29mX3Y6ICd2ID0+IFlvanNvbi5TYWZlLnQsIG1hcDogdCgndikpOiBZb2pzb24uU2FmZS50ID0+XG4gIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xubGV0IHRfb2ZfeW9qc29uID1cbiAgICAodl9vZl95b2pzb246IFlvanNvbi5TYWZlLnQgPT4gJ3YsIHlvanNvbjogWW9qc29uLlNhZmUudCk6IHQoJ3YpID0+XG4gIHlvanNvblxuICB8PiBsaXN0X29mX3lvanNvbihiaW5kaW5nX29mX3lvanNvbih2X29mX3lvanNvbikpXG4gIHw+IExpc3QudG9fc2VxXG4gIHw+IG9mX3NlcTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnbCwgJ3IpID1cbiAgfCBMKCdsKVxuICB8IFIoJ3IpO1xuXG5sZXQgbCA9IHggPT4gTCh4KTtcbmxldCByID0geCA9PiBSKHgpO1xuXG5sZXQgaXNfTCA9XG4gIGZ1blxuICB8IEwoXykgPT4gdHJ1ZVxuICB8IFIoXykgPT4gZmFsc2U7XG5sZXQgaXNfUiA9IGUgPT4gIWlzX0woZSk7XG5cbmxldCBnZXRfTCA9XG4gIGZ1blxuICB8IEwobCkgPT4gU29tZShsKVxuICB8IFIoXykgPT4gTm9uZTtcbmxldCBnZXRfUiA9XG4gIGZ1blxuICB8IFIocikgPT4gU29tZShyKVxuICB8IEwoXykgPT4gTm9uZTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8vIGludmFyaWFudDogTGlzdC5sZW5ndGgoYXMpID09IExpc3QubGVuZ3RoKGJzKSArIDFcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnYSwgJ2IpID0gKGxpc3QoJ2EpLCBsaXN0KCdiKSk7XG5cbmxldCBtayA9IChhc186IGxpc3QoJ2EpLCBiczogbGlzdCgnYikpOiB0KCdhLCAnYikgPT4ge1xuICBhc3NlcnQoTGlzdC5sZW5ndGgoYXNfKSA9PSBMaXN0Lmxlbmd0aChicykgKyAxKTtcbiAgKGFzXywgYnMpO1xufTtcblxubGV0IGZpcnN0X2EgPSAoKGFzXywgXyk6IHQoJ2EsIF8pKTogJ2EgPT4ge1xuICBhc3NlcnQoTGlzdC5sZW5ndGgoYXNfKSA+IDApO1xuICBMaXN0LmhkKGFzXyk7XG59O1xubGV0IGxhc3RfYSA9ICgoYXNfLCBfKTogdCgnYSwgXykpOiAnYSA9PiB7XG4gIGFzc2VydChMaXN0Lmxlbmd0aChhc18pID4gMCk7XG4gIExpc3RVdGlsLmxhc3QoYXNfKTtcbn07XG5cbmxldCByZXYgPSAocmV2X2EsIHJldl9iLCAoYXNfLCBicyk6IHQoJ2EsICdiKSk6IHQoJ2EsICdiKSA9PiAoXG4gIExpc3QucmV2X21hcChyZXZfYSwgYXNfKSxcbiAgTGlzdC5yZXZfbWFwKHJldl9iLCBicyksXG4pO1xuXG5sZXQgY29ucyA9IChhOiAnYSwgYjogJ2IsIChhc18sIGJzKTogdCgnYSwgJ2IpKTogdCgnYSwgJ2IpID0+IChcbiAgW2EsIC4uLmFzX10sXG4gIFtiLCAuLi5ic10sXG4pO1xubGV0IHNub2MgPSAoKGFzXywgYnMpOiB0KCdhLCAnYiksIGI6ICdiLCBhOiAnYSk6IHQoJ2EsICdiKSA9PiAoXG4gIGFzXyBAIFthXSxcbiAgYnMgQCBbYl0sXG4pO1xuXG5sZXQgc2luZ2xldG9uID0gKGE6ICdhKTogdCgnYSwgXykgPT4gKFthXSwgW10pO1xuXG5sZXQgZ2V0X2FzOiB0KCdhLCBfKSA9PiBsaXN0KCdhKSA9IGZzdDtcbmxldCBnZXRfYnM6IHQoXywgJ2IpID0+IGxpc3QoJ2IpID0gc25kO1xuXG5sZXQgaGQgPSAoKGFzXywgXyk6IHQoJ2EsICdiKSk6ICdhID0+IExpc3QuaGQoYXNfKTtcblxubGV0IHJlYyBhYmFfdHJpcGxlcyA9IChhYmE6IHQoJ2EsICdiKSk6IGxpc3QoKCdhLCAnYiwgJ2EpKSA9PlxuICBzd2l0Y2ggKGFiYSkge1xuICB8IChbYTEsIGEyLCAuLi5hc19dLCBbYiwgLi4uYnNdKSA9PiBbXG4gICAgICAoYTEsIGIsIGEyKSxcbiAgICAgIC4uLmFiYV90cmlwbGVzKChbYTIsIC4uLmFzX10sIGJzKSksXG4gICAgXVxuICB8IF8gPT4gW11cbiAgfTtcbmxldCByZWMgYmFiX3RyaXBsZXMnID1cbiAgICAgICAgKGIxOiBvcHRpb24oJ2IpLCBhYmE6IHQoJ2EsICdiKSlcbiAgICAgICAgOiBsaXN0KChvcHRpb24oJ2IpLCAnYSwgb3B0aW9uKCdiKSkpID0+XG4gIHN3aXRjaCAoYWJhKSB7XG4gIHwgKFthLCAuLi5hc19dLCBbYjIsIC4uLmJzXSkgPT4gW1xuICAgICAgKGIxLCBhLCBTb21lKGIyKSksXG4gICAgICAuLi5iYWJfdHJpcGxlcycoU29tZShiMiksIChhc18sIGJzKSksXG4gICAgXVxuICB8IChbYV0sIFtdKSA9PiBbKGIxLCBhLCBOb25lKV1cbiAgfCBfID0+IFtdXG4gIH07XG5sZXQgYmFiX3RyaXBsZXM6IHQoJ2EsICdiKSA9PiBsaXN0KChvcHRpb24oJ2IpLCAnYSwgb3B0aW9uKCdiKSkpID1cbiAgYWJhID0+IGJhYl90cmlwbGVzJyhOb25lLCBhYmEpO1xuXG5sZXQgbWFwX2EgPSAoZl9hOiAnYSA9PiAnYywgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdjLCAnYikgPT4gKFxuICBMaXN0Lm1hcChmX2EsIGFzXyksXG4gIGJzLFxuKTtcbmxldCBtYXBfYiA9IChmX2I6ICdiID0+ICdjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSk6IHQoJ2EsICdjKSA9PiAoXG4gIGFzXyxcbiAgTGlzdC5tYXAoZl9iLCBicyksXG4pO1xubGV0IG1hcF9hYmFzID1cbiAgICAoZl9hYmE6ICgoJ2EsICdiLCAnYSkpID0+ICdjLCAoYXNfLCBfKSBhcyBhYmE6IHQoJ2EsICdiKSk6IHQoJ2EsICdjKSA9PiAoXG4gIGFzXyxcbiAgTGlzdC5tYXAoZl9hYmEsIGFiYV90cmlwbGVzKGFiYSkpLFxuKTtcbmxldCBtYXBfaGQgPSAoZl9hOiAnYSA9PiAnYSwgKGFzXywgYnMpOiB0KCdhLCAnYikpOiB0KCdhLCAnYikgPT4gKFxuICBbYXNfIHw+IExpc3QuaGQgfD4gZl9hLCAuLi5hc18gfD4gTGlzdC50bF0sXG4gIGJzLFxuKTtcblxubGV0IHRyaW0gPSAoKGFzXywgYnMpOiB0KCdhLCAnYikpOiBvcHRpb24oKCdhLCB0KCdiLCAnYSksICdhKSkgPT5cbiAgc3dpdGNoIChicykge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbXywgLi4uX10gPT5cbiAgICBsZXQgKGwsIGFzXykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChhc18pO1xuICAgIGxldCAoYXNfLCByKSA9IExpc3RVdGlsLnNwbGl0X2xhc3QoYXNfKTtcbiAgICBTb21lKChsLCBtayhicywgYXNfKSwgcikpO1xuICB9O1xuXG5sZXQgc3BsaXQgPSAoZjogJ2MgPT4gRWl0aGVyLnQoJ2EsICdiKSwgY3M6IGxpc3QoJ2MpKTogdChsaXN0KCdhKSwgJ2IpID0+XG4gIExpc3QuZm9sZF9yaWdodChcbiAgICAoYywgKGFzXywgYnMpKSA9PlxuICAgICAgc3dpdGNoIChmKGMpKSB7XG4gICAgICB8IEwoYSkgPT5cbiAgICAgICAgbGV0IChoZCwgdGwpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoYXNfKTtcbiAgICAgICAgKFtbYSwgLi4uaGRdLCAuLi50bF0sIGJzKTtcbiAgICAgIHwgUihiKSA9PiAoW1tdLCAuLi5hc19dLCBbYiwgLi4uYnNdKVxuICAgICAgfSxcbiAgICBjcyxcbiAgICBtayhbW11dLCBbXSksXG4gICk7XG5cbmxldCBqb2luID0gKGZfYTogJ2EgPT4gJ2MsIGZfYjogJ2IgPT4gJ2MsIGFiYTogdCgnYSwgJ2IpKTogbGlzdCgnYykgPT4ge1xuICBsZXQgKGFzXywgYSkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGdldF9hcyhhYmEpKTtcbiAgbGV0IGJzID0gZ2V0X2JzKGFiYSk7XG4gIExpc3QuZm9sZF9yaWdodDIoXG4gICAgKGEsIGIsIGNzKSA9PiBbZl9hKGEpLCBmX2IoYiksIC4uLmNzXSxcbiAgICBhc18sXG4gICAgYnMsXG4gICAgW2ZfYShhKV0sXG4gICk7XG59O1xuXG5sZXQgZm9sZF9sZWZ0ID1cbiAgICAoZl9hOiAnYSA9PiAnYWNjLCBmX2JhOiAoJ2FjYywgJ2IsICdhKSA9PiAnYWNjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSlcbiAgICA6ICdhY2MgPT4ge1xuICBsZXQgKGEsIGFzXykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdChhc18pO1xuICBMaXN0LmZvbGRfbGVmdDIoZl9iYSwgZl9hKGEpLCBicywgYXNfKTtcbn07XG5sZXQgZm9sZF9sZWZ0X21hcCA9XG4gICAgKFxuICAgICAgZl9hOiAnYSA9PiAoJ2FjYywgJ2MpLFxuICAgICAgZl9iYTogKCdhY2MsICdiLCAnYSkgPT4gKCdhY2MsICdkLCAnYyksXG4gICAgICBhYmE6IHQoJ2EsICdiKSxcbiAgICApXG4gICAgOiAoJ2FjYywgdCgnYywgJ2QpKSA9PlxuICBhYmFcbiAgfD4gZm9sZF9sZWZ0KFxuICAgICAgIGEgPT4ge1xuICAgICAgICAgbGV0IChhY2MsIGMpID0gZl9hKGEpO1xuICAgICAgICAgKGFjYywgc2luZ2xldG9uKGMpKTtcbiAgICAgICB9LFxuICAgICAgICgoYWNjLCBtYXBwZWQpLCBiLCBhKSA9PiB7XG4gICAgICAgICBsZXQgKGFjYywgZCwgYykgPSBmX2JhKGFjYywgYiwgYSk7XG4gICAgICAgICAoYWNjLCBzbm9jKG1hcHBlZCwgZCwgYykpO1xuICAgICAgIH0sXG4gICAgICk7XG5cbmxldCBmb2xkX3JpZ2h0ID1cbiAgICAoZl9hYjogKCdhLCAnYiwgJ2MpID0+ICdjLCBmX2E6ICdhID0+ICdjLCAoYXNfLCBicyk6IHQoJ2EsICdiKSkgPT4ge1xuICBsZXQgKGFzXywgYSkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGFzXyk7XG4gIExpc3QuZm9sZF9yaWdodDIoZl9hYiwgYXNfLCBicywgZl9hKGEpKTtcbn07XG4iLCJcbnR5cGUgdCA9IGludFxubGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxubGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG5sZXQgdG9faW50IHggPSB4XG5sZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5cbmxldCBpbnRlcnNlY3QgeCB5ID0geCBsYW5kIHkgPD4gMFxubGV0ICgrKykgeCB5ID0geCBsb3IgeVxuXG5sZXQgZHVtbXkgPSAtMVxubGV0IGluZXhpc3RhbnQgPSAxXG5sZXQgbGV0dGVyID0gMlxubGV0IG5vdF9sZXR0ZXIgPSA0XG5sZXQgbmV3bGluZSA9IDhcbmxldCBsYXN0bmV3bGluZSA9IDE2XG5sZXQgc2VhcmNoX2JvdW5kYXJ5ID0gMzJcblxubGV0IGZyb21fY2hhciA9IGZ1bmN0aW9uXG4gICgqIFNob3VsZCBtYXRjaCBbY3dvcmRdIGRlZmluaXRpb24gKilcbiAgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScgfCAnXycgfCAnXFwxNzAnIHwgJ1xcMTgxJyB8ICdcXDE4NidcbiAgfCAnXFwxOTInLi4nXFwyMTQnIHwgJ1xcMjE2Jy4uJ1xcMjQ2JyB8ICdcXDI0OCcuLidcXDI1NScgLT5cbiAgICBsZXR0ZXJcbiAgfCAnXFxuJyAtPlxuICAgIG5vdF9sZXR0ZXIgKysgbmV3bGluZVxuICB8IF8gLT5cbiAgICBub3RfbGV0dGVyXG4iLCIoKiogVmVyeSBzbWFsbCB0b29saW5nIGZvciBmb3JtYXQgcHJpbnRlcnMuICopXG5cbmluY2x1ZGUgRm9ybWF0XG5cbnR5cGUgJ2EgdCA9IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdFxuXG5sZXQgbGlzdCA9IHBwX3ByaW50X2xpc3RcbmxldCBzdHIgPSBwcF9wcmludF9zdHJpbmdcbmxldCBzZXhwIGZtdCBzIHBwIHggPSBmcHJpbnRmIGZtdCBcIkBbPDM+KCVzQCAlYSlAXVwiIHMgcHAgeFxubGV0IHBhaXIgcHAxIHBwMiBmbXQgKHYxLHYyKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7IHBwMiBmbXQgdjJcbmxldCB0cmlwbGUgcHAxIHBwMiBwcDMgZm10ICh2MSwgdjIsIHYzKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMiBmbXQgdjI7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMyBmbXQgdjNcbmxldCBpbnQgPSBwcF9wcmludF9pbnRcbmxldCBvcHRpbnQgZm10ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpIC0+IGZwcmludGYgZm10IFwiQCAlZFwiIGlcblxubGV0IHF1b3RlIGZtdCBzID0gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIHNcblxubGV0IHBwX29saXN0IHBwX2VsZW0gZm10ID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mz5bQCAlYUAgXUBdXCJcbiAgICAocHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gZnByaW50ZiBmbXQgXCI7QCBcIilcbiAgICAgICBwcF9lbGVtKVxuXG5sZXQgcHBfc3RyX2xpc3QgPSBwcF9vbGlzdCBxdW90ZVxuXG5sZXQgdG9fdG9fc3RyaW5nIHBwIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgcHAgZm10IHg7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIGMgPSBpbnRcbnR5cGUgdCA9IChjICogYykgbGlzdFxuXG5sZXQgcmVjIHVuaW9uIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IGwnXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgKyAxIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjp1bmlvbiByIGwnXG4gICAgZWxzZSBpZiBjMicgKyAxIDwgYzEgdGhlblxuICAgICAgKGMxJywgYzInKTo6dW5pb24gbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgdW5pb24gciAoKG1pbiBjMSBjMScsIGMyJyk6OnInKVxuICAgIGVsc2VcbiAgICAgIHVuaW9uICgobWluIGMxIGMxJywgYzIpOjpyKSByJ1xuXG5sZXQgcmVjIGludGVyIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gW11cbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIGludGVyIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGludGVyIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIChtYXggYzEgYzEnLCBjMik6OmludGVyIHIgbCdcbiAgICBlbHNlXG4gICAgICAobWF4IGMxIGMxJywgYzInKTo6aW50ZXIgbCByJ1xuXG5sZXQgcmVjIGRpZmYgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6ZGlmZiByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBkaWZmIGwgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcicnID0gaWYgYzInIDwgYzIgdGhlbiAoYzInICsgMSwgYzIpIDo6IHIgZWxzZSByIGluXG4gICAgICBpZiBjMSA8IGMxJyB0aGVuXG4gICAgICAgIChjMSwgYzEnIC0gMSk6OmRpZmYgcicnIHInXG4gICAgICBlbHNlXG4gICAgICAgIGRpZmYgcicnIHInXG5cbmxldCBzaW5nbGUgYyA9IFtjLCBjXVxuXG5sZXQgYWRkIGMgbCA9IHVuaW9uIChzaW5nbGUgYykgbFxuXG5sZXQgc2VxIGMgYycgPSBpZiBjIDw9IGMnIHRoZW4gW2MsIGMnXSBlbHNlIFtjJywgY11cblxubGV0IHJlYyBvZmZzZXQgbyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgICAgICAgICAtPiBbXVxuICB8IChjMSwgYzIpIDo6IHIgLT4gKGMxICsgbywgYzIgKyBvKSA6OiBvZmZzZXQgbyByXG5cbmxldCBlbXB0eSA9IFtdXG5cbmxldCByZWMgbWVtIChjIDogaW50KSBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gICAgW10gICAgICAgICAgICAgIC0+IGZhbHNlXG4gIHwgKGMxLCBjMikgOjogcmVtIC0+IGlmIGMgPD0gYzIgdGhlbiBjID49IGMxIGVsc2UgbWVtIGMgcmVtXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcblxubGV0IHJlYyBoYXNoX3JlYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgIC0+IDBcbiAgfCAoaSwgaik6OnIgLT4gaSArIDEzICogaiArIDI1NyAqIGhhc2hfcmVjIHJcbmxldCBoYXNoIGwgPSAoaGFzaF9yZWMgbCkgbGFuZCAweDNGRkZGRkZGXG5cbigqKioqKVxuXG5sZXQgcHJpbnRfb25lIGNoIChjMSwgYzIpID1cbiAgaWYgYzEgPSBjMiB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZFwiIGMxXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYzEgYzJcblxubGV0IHBwID0gRm10Lmxpc3QgcHJpbnRfb25lXG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoeCwgeSk6OnhzIC0+XG4gICAgZiB4IHk7XG4gICAgaXRlciB4cyAgfmZcblxubGV0IG9uZV9jaGFyID0gZnVuY3Rpb25cbiAgfCBbaSwgal0gd2hlbiBpID0gaiAtPiBTb21lIGlcbiAgfCBfIC0+IE5vbmVcblxuXG5tb2R1bGUgQ1NldE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgKiAoaW50ICogaW50KSBsaXN0XG4gICAgbGV0IGNvbXBhcmUgKGksIHUpIChqLCB2KSA9XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaSBqIGluXG4gICAgICBpZiBjIDw+IDBcbiAgICAgIHRoZW4gY1xuICAgICAgZWxzZSBjb21wYXJlIHUgdlxuICBlbmQpXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBMaXN0LmZvbGRfcmlnaHQgZiB0IGluaXRcblxubGV0IGNzaW5nbGUgYyA9IHNpbmdsZSAoQ2hhci5jb2RlIGMpXG5cbmxldCBjYW55ID0gWzAsIDI1NV1cblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIHByZXBlbmQgcyB4IGwgPVxuICBtYXRjaCBzLCBsIHdpdGhcbiAgfCBbXSwgXyAtPiBsXG4gIHwgX3IsIFtdIC0+IFtdXG4gIHwgKF9jLCBjJykgOjogciwgKFtkLCBfZCddLCBfeCcpIDo6IF9yJyB3aGVuIGMnIDwgZCAtPiBwcmVwZW5kIHIgeCBsXG4gIHwgKGMsIGMnKSA6OiByLCAoW2QsIGQnXSwgeCcpIDo6IHInIC0+XG4gICAgaWYgYyA8PSBkIHRoZW4gYmVnaW5cbiAgICAgIGlmIGMnIDwgZCdcbiAgICAgIHRoZW4gKFtkLCBjJ10sIHggQCB4JykgOjogcHJlcGVuZCByIHggKChbYycgKyAxLCBkJ10sIHgnKSA6OiByJylcbiAgICAgIGVsc2UgKFtkLCBkJ10sIHggQCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgYyA+IGQnXG4gICAgICB0aGVuIChbZCwgZCddLCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICAgIGVsc2UgKFtkLCBjIC0gMV0sIHgnKSA6OiBwcmVwZW5kIHMgeCAoKFtjLCBkJ10sIHgnKSA6OiByJylcbiAgICBlbmRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcGljayA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJSZV9jc2V0LnBpY2tcIlxuICB8ICh4LCBfKTo6XyAtPiB4XG4iLCJcbm1vZHVsZSBQbWFyayA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbiAgbGV0IHIgPSByZWYgMFxuICBsZXQgZ2VuICgpID0gaW5jciByIDsgIXJcblxuICBsZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmRcblxuaW5jbHVkZSBQbWFya1xubW9kdWxlIFNldCA9IFNldC5NYWtlKFBtYXJrKVxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBzZW0gPSBbIGBMb25nZXN0IHwgYFNob3J0ZXN0IHwgYEZpcnN0IF1cblxudHlwZSByZXBfa2luZCA9IFsgYEdyZWVkeSB8IGBOb25fZ3JlZWR5IF1cblxudHlwZSBtYXJrID0gaW50XG50eXBlIGlkeCA9IGludFxuXG50eXBlIGV4cHIgPSB7IGlkIDogaW50OyBkZWYgOiBkZWYgfVxuXG5hbmQgZGVmID1cbiAgICBDc3Qgb2YgQ3NldC50XG4gIHwgQWx0IG9mIGV4cHIgbGlzdFxuICB8IFNlcSBvZiBzZW0gKiBleHByICogZXhwclxuICB8IEVwc1xuICB8IFJlcCBvZiByZXBfa2luZCAqIHNlbSAqIGV4cHJcbiAgfCBNYXJrIG9mIGludFxuICB8IEVyYXNlIG9mIGludCAqIGludFxuICB8IEJlZm9yZSBvZiBDYXRlZ29yeS50XG4gIHwgQWZ0ZXIgb2YgQ2F0ZWdvcnkudFxuICB8IFBtYXJrIG9mIFBtYXJrLnRcblxubGV0IGhhc2hfY29tYmluZSBoIGFjY3UgPSBhY2N1ICogNjU1OTkgKyBoXG5cbm1vZHVsZSBNYXJrcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWFya3MgOiAoaW50ICogaW50KSBsaXN0XG4gICAgOyBwbWFya3MgOiBQbWFyay5TZXQudCB9XG5cbiAgbGV0IGVtcHR5ID0geyBtYXJrcyA9IFtdIDsgcG1hcmtzID0gUG1hcmsuU2V0LmVtcHR5IH1cblxuICBsZXQgcmVjIG1lcmdlX21hcmtzX29mZnNldCBvbGQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIG9sZFxuICAgIHwgKGksIHYpIDo6IHJlbSAtPlxuICAgICAgbGV0IG53JyA9IG1lcmdlX21hcmtzX29mZnNldCAoTGlzdC5yZW1vdmVfYXNzcSBpIG9sZCkgcmVtIGluXG4gICAgICBpZiB2ID0gLTIgdGhlblxuICAgICAgICBudydcbiAgICAgIGVsc2VcbiAgICAgICAgKGksIHYpIDo6IG53J1xuXG4gIGxldCBtZXJnZSBvbGQgbncgPVxuICAgIHsgbWFya3MgPSBtZXJnZV9tYXJrc19vZmZzZXQgb2xkLm1hcmtzIG53Lm1hcmtzXG4gICAgOyBwbWFya3MgPSBQbWFyay5TZXQudW5pb24gb2xkLnBtYXJrcyBudy5wbWFya3MgfVxuXG4gIGxldCByZWMgaGFzaF9tYXJrc19vZmZzZXQgbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdICAgICAgICAgIC0+IGFjY3VcbiAgICB8IChhLCBpKSA6OiByIC0+IGhhc2hfbWFya3Nfb2Zmc2V0IHIgKGhhc2hfY29tYmluZSBhIChoYXNoX2NvbWJpbmUgaSBhY2N1KSlcblxuICBsZXQgaGFzaCBtIGFjY3UgPVxuICAgIGhhc2hfbWFya3Nfb2Zmc2V0IG0ubWFya3MgKGhhc2hfY29tYmluZSAoSGFzaHRibC5oYXNoIG0ucG1hcmtzKSBhY2N1KVxuXG4gIGxldCByZWMgbWFya3Nfc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICAgIHwgKGEsIC0xKSA6OiByZW0gLT5cbiAgICAgIChhLCBpZHgpIDo6IG1hcmtzX3NldF9pZHggaWR4IHJlbVxuICAgIHwgbWFya3MgLT5cbiAgICAgIG1hcmtzXG5cbiAgbGV0IG1hcmtzX3NldF9pZHggbWFya3MgaWR4ID1cbiAgICB7IG1hcmtzIHdpdGggbWFya3MgPSBtYXJrc19zZXRfaWR4IGlkeCBtYXJrcy5tYXJrcyB9XG5cbiAgbGV0IHBwX21hcmtzIGNoIHQgPVxuICAgIG1hdGNoIHQubWFya3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gICAgfCAoYSwgaSkgOjogciAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGEgaTtcbiAgICAgIExpc3QuaXRlciAoZnVuIChhLCBpKSAtPiBGb3JtYXQuZnByaW50ZiBjaCBcIiAlZC0lZFwiIGEgaSkgclxuZW5kXG5cbigqKioqKVxuXG5sZXQgcHBfc2VtIGNoIGsgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGNoXG4gICAgKG1hdGNoIGsgd2l0aFxuICAgICAgIGBTaG9ydGVzdCAtPiBcInNob3J0XCJcbiAgICAgfCBgTG9uZ2VzdCAgLT4gXCJsb25nXCJcbiAgICAgfCBgRmlyc3QgICAgLT4gXCJmaXJzdFwiKVxuXG5cbmxldCBwcF9yZXBfa2luZCBmbXQgPSBmdW5jdGlvblxuICB8IGBHcmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJHcmVlZHlcIlxuICB8IGBOb25fZ3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uX2dyZWVkeVwiXG5cbmxldCByZWMgcHAgY2ggZSA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBtYXRjaCBlLmRlZiB3aXRoXG4gICAgQ3N0IGwgLT5cbiAgICBzZXhwIGNoIFwiY3N0XCIgQ3NldC5wcCBsO1xuICB8IEFsdCBsIC0+XG4gICAgc2V4cCBjaCBcImFsdFwiIChsaXN0IHBwKSBsXG4gIHwgU2VxIChrLCBlLCBlJykgLT5cbiAgICBzZXhwIGNoIFwic2VxXCIgKHRyaXBsZSBwcF9zZW0gcHAgcHApIChrLCBlLCBlJylcbiAgfCBFcHMgLT5cbiAgICBzdHIgY2ggXCJlcHNcIlxuICB8IFJlcCAoX3JrLCBrLCBlKSAtPlxuICAgIHNleHAgY2ggXCJyZXBcIiAocGFpciBwcF9zZW0gcHApIChrLCBlKVxuICB8IE1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJtYXJrXCIgaW50IGlcbiAgfCBQbWFyayBpIC0+XG4gICAgc2V4cCBjaCBcInBtYXJrXCIgaW50IChpIDo+IGludClcbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBzZXhwIGNoIFwiZXJhc2VcIiAocGFpciBpbnQgaW50KSAoYiwgZSlcbiAgfCBCZWZvcmUgYyAtPlxuICAgIHNleHAgY2ggXCJiZWZvcmVcIiBDYXRlZ29yeS5wcCBjXG4gIHwgQWZ0ZXIgYyAtPlxuICAgIHNleHAgY2ggXCJhZnRlclwiIENhdGVnb3J5LnBwIGNcblxuXG4oKioqKilcblxubGV0IHJlYyBmaXJzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIE5vbmVcbiAgfCB4IDo6IHIgLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgTm9uZSAgICAgICAgICAtPiBmaXJzdCBmIHJcbiAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzXG5cbigqKioqKVxuXG50eXBlIGlkcyA9IGludCByZWZcbmxldCBjcmVhdGVfaWRzICgpID0gcmVmIDBcblxubGV0IGVwc19leHByID0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5cbmxldCBta19leHByIGlkcyBkZWYgPVxuICBpbmNyIGlkcztcbiAgeyBpZCA9ICFpZHM7IGRlZiA9IGRlZiB9XG5cbmxldCBlbXB0eSBpZHMgPSBta19leHByIGlkcyAoQWx0IFtdKVxuXG5sZXQgY3N0IGlkcyBzID1cbiAgaWYgQ3NldC5pc19lbXB0eSBzXG4gIHRoZW4gZW1wdHkgaWRzXG4gIGVsc2UgbWtfZXhwciBpZHMgKENzdCBzKVxuXG5sZXQgYWx0IGlkcyA9IGZ1bmN0aW9uXG4gIHwgW10gIC0+IGVtcHR5IGlkc1xuICB8IFtjXSAtPiBjXG4gIHwgbCAgIC0+IG1rX2V4cHIgaWRzIChBbHQgbClcblxubGV0IHNlcSBpZHMga2luZCB4IHkgPVxuICBtYXRjaCB4LmRlZiwgeS5kZWYgd2l0aFxuICAgIEFsdCBbXSwgXyAgICAgICAgICAgICAgICAgLT4geFxuICB8IF8sIEFsdCBbXSAgICAgICAgICAgICAgICAgLT4geVxuICB8IEVwcywgXyAgICAgICAgICAgICAgICAgICAgLT4geVxuICB8IF8sIEVwcyB3aGVuIGtpbmQgPSBgRmlyc3QgLT4geFxuICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgLT4gbWtfZXhwciBpZHMgKFNlcSAoa2luZCwgeCwgeSkpXG5cbmxldCBpc19lcHMgZXhwciA9XG4gIG1hdGNoIGV4cHIuZGVmIHdpdGhcbiAgfCBFcHMgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IGVwcyBpZHMgPSBta19leHByIGlkcyBFcHNcblxubGV0IHJlcCBpZHMga2luZCBzZW0geCA9IG1rX2V4cHIgaWRzIChSZXAgKGtpbmQsIHNlbSwgeCkpXG5cbmxldCBtYXJrIGlkcyBtID0gbWtfZXhwciBpZHMgKE1hcmsgbSlcblxubGV0IHBtYXJrIGlkcyBpID0gbWtfZXhwciBpZHMgKFBtYXJrIGkpXG5cbmxldCBlcmFzZSBpZHMgbSBtJyA9IG1rX2V4cHIgaWRzIChFcmFzZSAobSwgbScpKVxuXG5sZXQgYmVmb3JlIGlkcyBjID0gbWtfZXhwciBpZHMgKEJlZm9yZSBjKVxuXG5sZXQgYWZ0ZXIgaWRzIGMgPSBta19leHByIGlkcyAoQWZ0ZXIgYylcblxuKCoqKiopXG5cbmxldCByZWMgcmVuYW1lIGlkcyB4ID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBfIHwgRXBzIHwgTWFyayBfIHwgUG1hcmsgXyB8IEVyYXNlIF8gfCBCZWZvcmUgXyB8IEFmdGVyIF8gLT5cbiAgICBta19leHByIGlkcyB4LmRlZlxuICB8IEFsdCBsIC0+XG4gICAgbWtfZXhwciBpZHMgKEFsdCAoTGlzdC5tYXAgKHJlbmFtZSBpZHMpIGwpKVxuICB8IFNlcSAoaywgeSwgeikgLT5cbiAgICBta19leHByIGlkcyAoU2VxIChrLCByZW5hbWUgaWRzIHksIHJlbmFtZSBpZHMgeikpXG4gIHwgUmVwIChnLCBrLCB5KSAtPlxuICAgIG1rX2V4cHIgaWRzIChSZXAgKGcsIGssIHJlbmFtZSBpZHMgeSkpXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcbnR5cGUgbWFya19pbmZvcyA9IGludCBhcnJheVxudHlwZSBzdGF0dXMgPSBGYWlsZWQgfCBNYXRjaCBvZiBtYXJrX2luZm9zICogUG1hcmsuU2V0LnQgfCBSdW5uaW5nXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUU2VxIG9mIHQgbGlzdCAqIGV4cHIgKiBzZW1cbiAgICB8IFRFeHAgb2YgTWFya3MudCAqIGV4cHJcbiAgICB8IFRNYXRjaCBvZiBNYXJrcy50XG5cbiAgbGV0IHJlYyBlcXVhbCBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgVFNlcSAobDEnLCBlMSwgXykgOjogcjEsIFRTZXEgKGwyJywgZTIsIF8pIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIGVxdWFsIGwxJyBsMicgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRFeHAgKG1hcmtzMSwgZTEpIDo6IHIxLCBURXhwIChtYXJrczIsIGUyKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRNYXRjaCBtYXJrczEgOjogcjEsIFRNYXRjaCBtYXJrczIgOjogcjIgLT5cbiAgICAgIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgcmVjIGhhc2ggbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhY2N1XG4gICAgfCBUU2VxIChsJywgZSwgXykgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxNzJhMWJjZSAoaGFzaF9jb21iaW5lIGUuaWQgKGhhc2ggbCcgYWNjdSkpKVxuICAgIHwgVEV4cCAobWFya3MsIGUpIDo6IHIgLT5cbiAgICAgIGhhc2ggclxuICAgICAgICAoaGFzaF9jb21iaW5lIDB4MmI0YzBkNzcgKGhhc2hfY29tYmluZSBlLmlkIChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKSlcbiAgICB8IFRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDFjMjA1YWQ1IChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKVxuXG4gIGxldCB0ZXhwIG1hcmtzIHggPSBURXhwIChtYXJrcywgeClcblxuICBsZXQgdHNlcSBraW5kIHggeSByZW0gPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiByZW1cbiAgICB8IFtURXhwIChtYXJrcywge2RlZiA9IEVwcyA7IF99KV0gLT4gVEV4cCAobWFya3MsIHkpIDo6IHJlbVxuICAgIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBUU2VxICh4LCB5LCBraW5kKSA6OiByZW1cblxuICBsZXQgcmVjIHByaW50X3N0YXRlX3JlYyBjaCBlIHkgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgVE1hdGNoIG1hcmtzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KE1hdGNoQCAlYSlAXVwiIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBUU2VxIChsJywgeCwgX2tpbmQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KFNlcUAgXCI7XG4gICAgICBwcmludF9zdGF0ZV9sc3QgY2ggbCcgeDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCAlYSlAXVwiIHBwIHhcbiAgICB8IFRFeHAgKG1hcmtzLCB7ZGVmID0gRXBzOyBffSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgKGVwcykpQF1cIiB5LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBURXhwIChtYXJrcywgeCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgJWEpQF1cIiB4LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzIHBwIHhcblxuICBhbmQgcHJpbnRfc3RhdGVfbHN0IGNoIGwgeSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIoKVwiXG4gICAgfCBlIDo6IHJlbSAtPlxuICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeTtcbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAIHwgXCI7XG4gICAgICAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHkpXG4gICAgICAgIHJlbVxuXG4gIGxldCBwcCBjaCB0ID0gcHJpbnRfc3RhdGVfbHN0IGNoIFt0XSB7IGlkID0gMDsgZGVmID0gRXBzIH1cbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGlkeDogaWR4XG4gICAgOyBjYXRlZ29yeTogQ2F0ZWdvcnkudFxuICAgIDsgZGVzYzogRS50IGxpc3RcbiAgICA7IG11dGFibGUgc3RhdHVzOiBzdGF0dXMgb3B0aW9uXG4gICAgOyBoYXNoOiBoYXNoIH1cblxuICBsZXQgZHVtbXkgPVxuICAgIHsgaWR4ID0gLTFcbiAgICA7IGNhdGVnb3J5ID0gQ2F0ZWdvcnkuZHVtbXlcbiAgICA7IGRlc2MgPSBbXVxuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IC0xIH1cblxuICBsZXQgaGFzaCBpZHggY2F0IGRlc2MgPVxuICAgIEUuaGFzaCBkZXNjIChoYXNoX2NvbWJpbmUgaWR4IChoYXNoX2NvbWJpbmUgKENhdGVnb3J5LnRvX2ludCBjYXQpIDApKSBsYW5kIDB4M0ZGRkZGRkZcblxuICBsZXQgbWsgaWR4IGNhdCBkZXNjID1cbiAgICB7IGlkeFxuICAgIDsgY2F0ZWdvcnkgPSBjYXRcbiAgICA7IGRlc2NcbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSBoYXNoIGlkeCBjYXQgZGVzY31cblxuICBsZXQgY3JlYXRlIGNhdCBlID0gbWsgMCBjYXQgW0UuVEV4cCAoTWFya3MuZW1wdHksIGUpXVxuXG4gIGxldCBlcXVhbCB4IHkgPVxuICAgICh4Lmhhc2ggOiBpbnQpID0geS5oYXNoICYmICh4LmlkeCA6IGludCkgPSB5LmlkeCAmJlxuICAgIENhdGVnb3J5LmVxdWFsIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSAmJiBFLmVxdWFsIHguZGVzYyB5LmRlc2NcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgIGxldCBjID0gY29tcGFyZSAoeC5oYXNoIDogaW50KSB5Lmhhc2ggaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgIGxldCBjID0gQ2F0ZWdvcnkuY29tcGFyZSB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICBjb21wYXJlIHguZGVzYyB5LmRlc2NcblxuICB0eXBlIHQnID0gdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSB0J1xuICAgICAgbGV0IGVxdWFsID0gZXF1YWxcbiAgICAgIGxldCBoYXNoIHQgPSB0Lmhhc2hcbiAgICBlbmQpXG5lbmRcblxuKCoqKiogRmluZCBhIGZyZWUgaW5kZXggKioqKilcblxudHlwZSB3b3JraW5nX2FyZWEgPSBib29sIGFycmF5IHJlZlxuXG5sZXQgY3JlYXRlX3dvcmtpbmdfYXJlYSAoKSA9IHJlZiBbfCBmYWxzZSB8XVxuXG5sZXQgaW5kZXhfY291bnQgdyA9IEFycmF5Lmxlbmd0aCAhd1xuXG5sZXQgcmVzZXRfdGFibGUgYSA9IEFycmF5LmZpbGwgYSAwIChBcnJheS5sZW5ndGggYSkgZmFsc2VcblxubGV0IHJlYyBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgPVxuICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEUuVFNlcSAobCwgXywgXykgLT4gbWFya191c2VkX2luZGljZXMgdGJsIGxcbiAgICAgIHwgRS5URXhwIChtYXJrcywgXylcbiAgICAgIHwgRS5UTWF0Y2ggbWFya3MgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKF8sIGkpIC0+IGlmIGkgPj0gMCB0aGVuIHRibC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBtYXJrcy5NYXJrcy5tYXJrcylcblxubGV0IHJlYyBmaW5kX2ZyZWUgdGJsIGlkeCBsZW4gPVxuICBpZiBpZHggPSBsZW4gfHwgbm90IHRibC4oaWR4KSB0aGVuIGlkeCBlbHNlIGZpbmRfZnJlZSB0YmwgKGlkeCArIDEpIGxlblxuXG5sZXQgZnJlZV9pbmRleCB0YmxfcmVmIGwgPVxuICBsZXQgdGJsID0gIXRibF9yZWYgaW5cbiAgcmVzZXRfdGFibGUgdGJsO1xuICBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0YmwgaW5cbiAgbGV0IGlkeCA9IGZpbmRfZnJlZSB0YmwgMCBsZW4gaW5cbiAgaWYgaWR4ID0gbGVuIHRoZW4gdGJsX3JlZiA6PSBBcnJheS5tYWtlICgyICogbGVuKSBmYWxzZTtcbiAgaWR4XG5cbigqKioqIENvbXB1dGF0aW9uIG9mIHRoZSBuZXh0IHN0YXRlICoqKiopXG5cbmxldCByZW1vdmVfbWF0Y2hlcyA9IExpc3QuZmlsdGVyIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuXG5sZXQgcmVjIHNwbGl0X2F0X21hdGNoX3JlYyBsJyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBFLlRNYXRjaCBfIDo6IHIgLT4gKExpc3QucmV2IGwnLCByZW1vdmVfbWF0Y2hlcyByKVxuICB8IHggOjogciAgICAgICAgLT4gc3BsaXRfYXRfbWF0Y2hfcmVjICh4IDo6IGwnKSByXG5cbmxldCBzcGxpdF9hdF9tYXRjaCBsID0gc3BsaXRfYXRfbWF0Y2hfcmVjIFtdIGxcblxubGV0IHJlYyByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwgeSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+XG4gICAgKFtdLCBwcmV2KVxuICB8IEUuVE1hdGNoIF8gYXMgeCA6OiBfIC0+ICgqIFRydW5jYXRlIGFmdGVyIGZpcnN0IG1hdGNoICopXG4gICAgKFt4XSwgcHJldilcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgbGV0IChsJycsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCcgeCBpblxuICAgIGxldCAocicsIHByZXYnJykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2JyByIHkgaW5cbiAgICAoRS50c2VxIGtpbmQgbCcnIHggcicsIHByZXYnJylcbiAgfCBFLlRFeHAgKF9tYXJrcywge2RlZiA9IEVwczsgX30pIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB5LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeS5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcbiAgfCBFLlRFeHAgKF9tYXJrcywgeCkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHguaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh4LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuXG5sZXQgcmVjIHNldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgRS5UTWF0Y2ggbWFya3MgOjogciAtPlxuICAgIEUuVE1hdGNoIChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBFLlRTZXEgKHNldF9pZHggaWR4IGwnLCB4LCBraW5kKSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5URXhwIChtYXJrcywgeCkgOjogciAtPlxuICAgIEUuVEV4cCAoKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSwgeCkgOjogc2V0X2lkeCBpZHggclxuXG5sZXQgZmlsdGVyX21hcmtzIGIgZSBtYXJrcyA9XG4gIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gTGlzdC5maWx0ZXIgKGZ1biAoaSwgXykgLT4gaSA8IGIgfHwgaSA+IGUpIG1hcmtzLk1hcmtzLm1hcmtzIH1cblxubGV0IHJlYyBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gICgqRm9ybWF0LmVwcmludGYgXCIlZEAuXCIgeC5pZDsqKVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IHMgLT5cbiAgICBpZiBDc2V0Lm1lbSBjIHMgdGhlbiBFLnRleHAgbWFya3MgZXBzX2V4cHIgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgbGV0ICh5JycsIG1hcmtzJykgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgZmlyc3RcbiAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeSdcbiAgICAgIHdpdGhcbiAgICAgICAgTm9uZSAgICAgICAgLT4gKHknLCBtYXJrcylcbiAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHknLCBtYXJrcycpXG4gICAgaW5cbiAgICBiZWdpbiBtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHknJyB4IChFLlRNYXRjaCBtYXJrcycgOjogcmVtKVxuICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB5JycgeCByZW1cbiAgICBlbmRcbiAgfCBFcHMgLT5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MubWFya3MgPSAoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgUG1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5wbWFya3MgPSBQbWFyay5TZXQuYWRkIGkgbWFya3MuTWFya3MucG1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBFLlRNYXRjaCAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykgOjogcmVtXG4gIHwgQmVmb3JlIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IG5leHRfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWZ0ZXIgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgcHJldl9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cblxuYW5kIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxuYW5kIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5IHogcmVtID1cbiAgbWF0Y2hcbiAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeVxuICB3aXRoXG4gICAgTm9uZSAtPlxuICAgIEUudHNlcSBraW5kIHkgeiByZW1cbiAgfCBTb21lIG1hcmtzIC0+XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICBgTG9uZ2VzdCAtPlxuICAgICAgRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogcmVtKVxuICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6XG4gICAgICAgIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiByZW0pXG4gICAgfCBgRmlyc3QgLT5cbiAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICBFLnRzZXEga2luZCB5JyB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IChFLnRzZXEga2luZCB5JycgeiByZW0pKVxuXG5sZXQgcmVjIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIHggOjogcmVtXG5cbmFuZCBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmxldCBkZWx0YSB0YmxfcmVmIG5leHRfY2F0IGNoYXIgc3QgPVxuICBsZXQgcHJldl9jYXQgPSBzdC5TdGF0ZS5jYXRlZ29yeSBpblxuICBsZXQgKGV4cHInLCBfKSA9XG4gICAgcmVtb3ZlX2R1cGxpY2F0ZXMgW11cbiAgICAgIChkZWx0YV80IGNoYXIgfm5leHRfY2F0IH5wcmV2X2NhdCBzdC5TdGF0ZS5kZXNjIFtdKVxuICAgICAgZXBzX2V4cHIgaW5cbiAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgU3RhdGUubWsgaWR4IG5leHRfY2F0IGV4cHInJ1xuXG4oKioqKilcblxubGV0IHJlYyByZWRfdHIgPSBmdW5jdGlvblxuICB8IFtdIHwgW19dIGFzIGwgLT5cbiAgICBsXG4gIHwgKChzMSwgc3QxKSBhcyB0cjEpIDo6ICgoczIsIHN0MikgYXMgdHIyKSA6OiByZW0gLT5cbiAgICBpZiBTdGF0ZS5lcXVhbCBzdDEgc3QyIHRoZW5cbiAgICAgIHJlZF90ciAoKENzZXQudW5pb24gczEgczIsIHN0MSkgOjogcmVtKVxuICAgIGVsc2VcbiAgICAgIHRyMSA6OiByZWRfdHIgKHRyMiA6OiByZW0pXG5cbmxldCBzaW1wbF90ciBsID1cbiAgTGlzdC5zb3J0XG4gICAgKGZ1biAoczEsIF8pIChzMiwgXykgLT4gY29tcGFyZSBzMSBzMilcbiAgICAocmVkX3RyIChMaXN0LnNvcnQgKGZ1biAoXywgc3QxKSAoXywgc3QyKSAtPiBTdGF0ZS5jb21wYXJlIHN0MSBzdDIpIGwpKVxuXG4oKioqKilcblxubGV0IHByZXBlbmRfZGVyaXYgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgeCkgbCAtPiBDc2V0LnByZXBlbmQgcyB4IGwpXG5cbmxldCByZWMgcmVzdHJpY3QgcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAocycsIHgnKSA6OiByZW0gLT5cbiAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICB0aGVuIHJlc3RyaWN0IHMgcmVtXG4gICAgZWxzZSAocycnLCB4JykgOjogcmVzdHJpY3QgcyByZW1cblxubGV0IHJlYyByZW1vdmVfbWFya3MgYiBlIHJlbSA9XG4gIGlmIGIgPiBlIHRoZW4gcmVtIGVsc2UgcmVtb3ZlX21hcmtzIGIgKGUgLSAxKSAoKGUsIC0yKSA6OiByZW0pXG5cbmxldCByZWMgcHJlcGVuZF9tYXJrc19leHByIG0gPSBmdW5jdGlvblxuICB8IEUuVFNlcSAobCwgZScsIHMpIC0+IEUuVFNlcSAocHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwsIGUnLCBzKVxuICB8IEUuVEV4cCAobScsIGUnKSAgIC0+IEUuVEV4cCAoTWFya3MubWVyZ2UgbSBtJywgZScpXG4gIHwgRS5UTWF0Y2ggbScgICAgICAgLT4gRS5UTWF0Y2ggKE1hcmtzLm1lcmdlIG0gbScpXG5cbmFuZCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCA9XG4gIExpc3QubWFwIChwcmVwZW5kX21hcmtzX2V4cHIgbSkgbFxuXG5sZXQgcHJlcGVuZF9tYXJrcyBtID1cbiAgTGlzdC5tYXAgKGZ1biAocywgeCkgLT4gKHMsIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSB4KSlcblxubGV0IHJlYyBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgfCBDc3QgcyAtPlxuICAgIENzZXQucHJlcGVuZCBzIFtFLnRleHAgbWFya3MgZXBzX2V4cHJdIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeikgcmVtIC0+XG4gICAgICAgICBsZXQgKHonLCBtYXJrcycpID1cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgICB6XG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICBOb25lICAgICAgICAtPiAoeiwgbWFya3MpXG4gICAgICAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHosIG1hcmtzJylcbiAgICAgICAgIGluXG4gICAgICAgICBDc2V0LnByZXBlbmQgc1xuICAgICAgICAgICAobWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB6JyB4IFtFLlRNYXRjaCBtYXJrcyddXG4gICAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHonIHggW10pXG4gICAgICAgICAgIHJlbSlcbiAgICAgIHknIHJlbVxuICB8IEVwcyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9ICgoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBQbWFyayBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnNcbiAgICAgIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChyZW1vdmVfbWFya3MgYiBlIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKS5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBCZWZvcmUgY2F0JyAtPlxuICAgIENzZXQucHJlcGVuZCAoTGlzdC5hc3NxIGNhdCcgY2F0ZWdvcmllcykgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBBZnRlciBjYXQnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IGNhdCBjYXQnIHRoZW4gQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgciByZW0pXG5cbmFuZCBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeSB6IHJlbSA9XG4gIGlmXG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gKF9zLCB4bCkgLT5cbiAgICAgICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSB4bClcbiAgICAgIHlcbiAgdGhlblxuICAgIGxldCB6JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgTWFya3MuZW1wdHkgY2F0IHogWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHkpIHJlbSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgeVxuICAgICAgICAgd2l0aFxuICAgICAgICAgICBOb25lIC0+XG4gICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5IHogW10pIHJlbVxuICAgICAgICAgfCBTb21lIG1hcmtzIC0+XG4gICAgICAgICAgIGxldCB6JycgPSBwcmVwZW5kX21hcmtzIG1hcmtzIHonIGluXG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIGBMb25nZXN0IC0+XG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgcmVtKVxuICAgICAgICAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIHJlbSlcbiAgICAgICAgICAgfCBgRmlyc3QgLT5cbiAgICAgICAgICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JyB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScnIHogW10pIHJlbSkpKVxuICAgICAgeSByZW1cbiAgZWxzZVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeGwpIHJlbSAtPiBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeGwgeiBbXSkgcmVtKSB5IHJlbVxuXG5sZXQgcmVjIGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW3hdIHJlbVxuXG5hbmQgZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgciByZW0pXG5cbmxldCBkZXJpdiB0YmxfcmVmIGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0ID1cbiAgbGV0IGRlciA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QuU3RhdGUuY2F0ZWdvcnkgc3QuU3RhdGUuZGVzY1xuICAgICAgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgc2ltcGxfdHIgKFxuICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCBleHByKSByZW0gLT5cbiAgICAgICAgbGV0IChleHByJywgXykgPSByZW1vdmVfZHVwbGljYXRlcyBbXSBleHByIGVwc19leHByIGluXG4oKlxuRm9ybWF0LmVwcmludGYgXCJAWzwzPkBbJWFAXTogJWEgLyAlYUBdQC5cIiBDc2V0LnByaW50IHMgcHJpbnRfc3RhdGUgZXhwciBwcmludF9zdGF0ZSBleHByJztcbiopXG4gICAgICAgIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgICAgICAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChjYXQnLCBzJykgcmVtIC0+XG4gICAgICAgICAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgICAgICAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgICAgICAgICAgdGhlbiByZW1cbiAgICAgICAgICAgIGVsc2UgKHMnJywgU3RhdGUubWsgaWR4IGNhdCcgZXhwcicnKSA6OiByZW0pXG4gICAgICAgICAgY2F0ZWdvcmllcyByZW0pIGRlciBbXSlcblxuKCoqKiopXG5cbmxldCBmbGF0dGVuX21hdGNoIG0gPVxuICBsZXQgbWEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG1hIChpLCBfKSAtPiBtYXggbWEgaSkgKC0xKSBtIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChtYSArIDEpICgtMSkgaW5cbiAgTGlzdC5pdGVyIChmdW4gKGksIHYpIC0+IHJlcy4oaSkgPC0gdikgbTtcbiAgcmVzXG5cbmxldCBzdGF0dXMgcyA9XG4gIG1hdGNoIHMuU3RhdGUuc3RhdHVzIHdpdGhcbiAgICBTb21lIHN0IC0+XG4gICAgc3RcbiAgfCBOb25lIC0+XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIHMuU3RhdGUuZGVzYyB3aXRoXG4gICAgICAgIFtdICAgICAgICAgICAgICAtPiBGYWlsZWRcbiAgICAgIHwgRS5UTWF0Y2ggbSA6OiBfIC0+IE1hdGNoIChmbGF0dGVuX21hdGNoIG0uTWFya3MubWFya3MsIG0uTWFya3MucG1hcmtzKVxuICAgICAgfCBfICAgICAgICAgICAgICAgLT4gUnVubmluZ1xuICAgIGluXG4gICAgcy5TdGF0ZS5zdGF0dXMgPC0gU29tZSBzdDtcbiAgICBzdFxuIiwiKCogSW4gcmVhbGl0eSwgdGhpcyBjYW4gcmVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIGEgYm9vbCBhcnJheS5cblxuICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIGxpc3Qgb2YgYWxsIGNoYXJzIGFsb25nIHdpdGggYVxuICAgZmxhZzpcblxuICAgKGEsIDApLCAoYiwgMSksIChjLCAwKSwgKGQsIDApLCAuLi5cblxuICAgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgY29sb3IgYXJlIHJlcHJlc2VudGVkIGJ5IHNlcXVuY2VzIG9mXG4gICBjaGFyYWN0ZXJzIHdpdGggdGhlIGZsYWcgc2V0IHRvIDAuXG4qKVxuXG50eXBlIHQgPSBCeXRlcy50XG5cbmxldCBtYWtlICgpID0gQnl0ZXMubWFrZSAyNTcgJ1xcMDAwJ1xuXG5sZXQgZmxhdHRlbiBjbSA9XG4gIGxldCBjID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgY29sb3JfcmVwciA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IHYgPSByZWYgMCBpblxuICBCeXRlcy5zZXQgYyAwICdcXDAwMCc7XG4gIEJ5dGVzLnNldCBjb2xvcl9yZXByIDAgJ1xcMDAwJztcbiAgZm9yIGkgPSAxIHRvIDI1NSBkb1xuICAgIGlmIEJ5dGVzLmdldCBjbSBpIDw+ICdcXDAwMCcgdGhlbiBpbmNyIHY7XG4gICAgQnl0ZXMuc2V0IGMgaSAoQ2hhci5jaHIgIXYpO1xuICAgIEJ5dGVzLnNldCBjb2xvcl9yZXByICF2IChDaGFyLmNociBpKVxuICBkb25lO1xuICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjLCBCeXRlcy5zdWJfc3RyaW5nIGNvbG9yX3JlcHIgMCAoIXYgKyAxKSwgIXYgKyAxKVxuXG4oKiBtYXJrIGFsbCB0aGUgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMgb2YgdGhlIGNoYXIgc2V0IHdpdGggdGhlIDEgYnl0ZSAqKVxubGV0IHNwbGl0IHMgY20gPVxuICBDc2V0Lml0ZXIgcyB+ZjooZnVuIGkgaiAtPlxuICAgICAgQnl0ZXMuc2V0IGNtIGkgJ1xcMDAxJztcbiAgICAgIEJ5dGVzLnNldCBjbSAoaiArIDEpICdcXDAwMSc7XG4gICAgKVxuIiwiKCogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gKilcbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG1hcmtzIDogQXV0b21hdGEubWFya19pbmZvc1xuICA7IHBtYXJrcyA6IFBtYXJrLlNldC50XG4gIDsgZ3BvcyA6IGludCBhcnJheVxuICA7IGdjb3VudCA6IGludFxuICB9XG5cbmxldCBvZmZzZXQgdCBpID1cbiAgaWYgMiAqIGkgKyAxID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgaWYgbTEgPSAtMSB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAocDEsIHAyKVxuXG5sZXQgZ2V0IHQgaSA9XG4gIGxldCAocDEsIHAyKSA9IG9mZnNldCB0IGkgaW5cbiAgU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG5cbmxldCBzdGFydCBzdWJzIGkgPSBmc3QgKG9mZnNldCBzdWJzIGkpXG5cbmxldCBzdG9wIHN1YnMgaSA9IHNuZCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHRlc3QgdCBpID1cbiAgaWYgMiAqIGkgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlblxuICAgIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaWR4ID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWR4IDw+IC0xXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIGlmIHRlc3QgdCBpXG4gIHRoZW4gU29tZSAoZ2V0IHQgaSlcbiAgZWxzZSBOb25lXG5cbmxldCBkdW1teV9vZmZzZXQgPSAoLTEsIC0xKVxuXG5sZXQgYWxsX29mZnNldCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfb2Zmc2V0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gKHAxLCBwMilcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBkdW1teV9zdHJpbmcgPSBcIlwiXG5cbmxldCBhbGwgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X3N0cmluZyBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IHBwIGZtdCB0ID1cbiAgbGV0IG1hdGNoZXMgPVxuICAgIGxldCBvZmZzZXRzID0gYWxsX29mZnNldCB0IGluXG4gICAgbGV0IHN0cnMgPSBhbGwgdCBpblxuICAgIEFycmF5LnRvX2xpc3QgKFxuICAgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHN0cnMpIChmdW4gaSAtPiBzdHJzLihpKSwgb2Zmc2V0cy4oaSkpXG4gICAgKSBpblxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHBwX21hdGNoIGZtdCAoc3RyLCAoc3RhcnQsIHN0b3ApKSA9XG4gICAgZnByaW50ZiBmbXQgXCJAWyglcyAoJWQgJWQpKUBdXCIgc3RyIHN0YXJ0IHN0b3AgaW5cbiAgc2V4cCBmbXQgXCJHcm91cFwiIChsaXN0IHBwX21hdGNoKSBtYXRjaGVzXG5cbmxldCBuYl9ncm91cHMgdCA9IHQuZ2NvdW50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5sZXQgcmVjIGl0ZXIgbiBmIHYgPSBpZiBuID0gMCB0aGVuIHYgZWxzZSBpdGVyIChuIC0gMSkgZiAoZiB2KVxuXG4oKioqKilcblxubGV0IHVua25vd24gPSAtMlxubGV0IGJyZWFrID0gLTNcblxudHlwZSBtYXRjaF9pbmZvID1cbiAgfCBNYXRjaCBvZiBHcm91cC50XG4gIHwgRmFpbGVkXG4gIHwgUnVubmluZyBvZiB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgOiBpbnQgfVxuXG50eXBlIHN0YXRlID1cbiAgeyBpZHggOiBpbnQ7XG4gICAgKCogSW5kZXggb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHBvc2l0aW9uIHRhYmxlLlxuICAgICAgIE5vdCB5ZXQgY29tcHV0ZWQgdHJhbnNpdGlvbnMgcG9pbnQgdG8gYSBkdW1teSBzdGF0ZSB3aGVyZVxuICAgICAgIFtpZHhdIGlzIHNldCB0byBbdW5rbm93bl07XG4gICAgICAgSWYgW2lkeF0gaXMgc2V0IHRvIFticmVha10gZm9yIHN0YXRlcyB0aGF0IGVpdGhlciBhbHdheXNcbiAgICAgICBzdWNjZWVkIG9yIGFsd2F5cyBmYWlsLiAqKVxuICAgIHJlYWxfaWR4IDogaW50O1xuICAgICgqIFRoZSByZWFsIGluZGV4LCBpbiBjYXNlIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdICopXG4gICAgbmV4dCA6IHN0YXRlIGFycmF5O1xuICAgICgqIFRyYW5zaXRpb24gdGFibGUsIGluZGV4ZWQgYnkgY29sb3IgKilcbiAgICBtdXRhYmxlIGZpbmFsIDpcbiAgICAgIChDYXRlZ29yeS50ICpcbiAgICAgICAoQXV0b21hdGEuaWR4ICogQXV0b21hdGEuc3RhdHVzKSkgbGlzdDtcbiAgICAoKiBNYXBwaW5nIGZyb20gdGhlIGNhdGVnb3J5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b1xuICAgICAgIC0gdGhlIGluZGV4IHdoZXJlIHRoZSBuZXh0IHBvc2l0aW9uIHNob3VsZCBiZSBzYXZlZFxuICAgICAgIC0gcG9zc2libHksIHRoZSBsaXN0IG9mIG1hcmtzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5kaWNlcylcbiAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJlc3QgbWF0Y2ggKilcbiAgICBkZXNjIDogQXV0b21hdGEuU3RhdGUudFxuICAgICgqIERlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgb2YgdGhlIGF1dG9tYXRhICopIH1cblxuKCogQXV0b21hdGEgKGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbikgKilcbnR5cGUgcmUgPVxuICB7IGluaXRpYWwgOiBBdXRvbWF0YS5leHByO1xuICAgICgqIFRoZSB3aG9sZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc3RhdGVzIDogKENhdGVnb3J5LnQgKiBzdGF0ZSkgbGlzdDtcbiAgICAoKiBJbml0aWFsIHN0YXRlcywgaW5kZXhlZCBieSBpbml0aWFsIGNhdGVnb3J5ICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlICopXG4gICAgY29sb3JfcmVwciA6IHN0cmluZztcbiAgICAoKiBUYWJsZSBmcm9tIGNvbG9ycyB0byBvbmUgY2hhcmFjdGVyIG9mIHRoaXMgY29sb3IgKilcbiAgICBuY29sb3IgOiBpbnQ7XG4gICAgKCogTnVtYmVyIG9mIGNvbG9ycy4gKilcbiAgICBsbmwgOiBpbnQ7XG4gICAgKCogQ29sb3Igb2YgdGhlIGxhc3QgbmV3bGluZS4gLTEgaWYgdW5uZWNlc3NhcnkgKilcbiAgICB0YmwgOiBBdXRvbWF0YS53b3JraW5nX2FyZWE7XG4gICAgKCogVGVtcG9yYXJ5IHRhYmxlIHVzZWQgdG8gY29tcHV0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGluZGV4XG4gICAgICAgd2hlbiBjb21wdXRpbmcgYSBuZXcgc3RhdGUgKilcbiAgICBzdGF0ZXMgOiBzdGF0ZSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS50O1xuICAgICgqIFN0YXRlcyBvZiB0aGUgZGV0ZXJtaW5pc3RpYyBhdXRvbWF0YSAqKVxuICAgIGdyb3VwX25hbWVzIDogKHN0cmluZyAqIGludCkgbGlzdDtcbiAgICAoKiBOYW1lZCBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIGdyb3VwX2NvdW50IDogaW50XG4gICAgKCogTnVtYmVyIG9mIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopIH1cblxubGV0IHBwX3JlIGNoIHJlID0gQXV0b21hdGEucHAgY2ggcmUuaW5pdGlhbFxuXG5sZXQgcHJpbnRfcmUgPSBwcF9yZVxuXG5sZXQgZ3JvdXBfY291bnQgcmUgPSByZS5ncm91cF9jb3VudFxuXG5sZXQgZ3JvdXBfbmFtZXMgcmUgPSByZS5ncm91cF9uYW1lc1xuXG4oKiBJbmZvcm1hdGlvbiB1c2VkIGR1cmluZyBtYXRjaGluZyAqKVxudHlwZSBpbmZvID1cbiAgeyByZSA6IHJlO1xuICAgICgqIFRoZSBhdXRvbWF0YSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAoW3guY29sb3JzID0geC5yZS5jb2xvcnNdKVxuICAgICAgIFNob3J0Y3V0IHVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBtdXRhYmxlIHBvc2l0aW9ucyA6IGludCBhcnJheTtcbiAgICAoKiBBcnJheSBvZiBtYXJrIHBvc2l0aW9uc1xuICAgICAgIFRoZSBtYXJrIGFyZSBvZmYgYnkgb25lIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgcG9zIDogaW50O1xuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBpcyBzdGFydGVkICopXG4gICAgbGFzdCA6IGludFxuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBzaG91bGQgc3RvcCAqKSB9XG5cblxuKCoqKiopXG5cbmxldCBjYXRlZ29yeSByZSB+Y29sb3IgPVxuICBpZiBjb2xvciA9IC0xIHRoZW5cbiAgICBDYXRlZ29yeS5pbmV4aXN0YW50XG4gICAgKCogU3BlY2lhbCBjYXRlZ29yeSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICBlbHNlIGlmIGNvbG9yID0gcmUubG5sIHRoZW5cbiAgICBDYXRlZ29yeS4obGFzdG5ld2xpbmUgKysgbmV3bGluZSArKyBub3RfbGV0dGVyKVxuICBlbHNlXG4gICAgQ2F0ZWdvcnkuZnJvbV9jaGFyIChyZS5jb2xvcl9yZXByLltjb2xvcl0pXG5cbigqKioqKVxuXG5sZXQgZHVtbXlfbmV4dCA9IFt8fF1cblxubGV0IHVua25vd25fc3RhdGUgPVxuICB7IGlkeCA9IHVua25vd247IHJlYWxfaWR4ID0gMDtcbiAgICBuZXh0ID0gZHVtbXlfbmV4dDsgZmluYWwgPSBbXTtcbiAgICBkZXNjID0gQXV0b21hdGEuU3RhdGUuZHVtbXkgfVxuXG5sZXQgbWtfc3RhdGUgbmNvbCBkZXNjID1cbiAgbGV0IGJyZWFrX3N0YXRlID1cbiAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgZGVzYyB3aXRoXG4gICAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+IGZhbHNlXG4gICAgfCBBdXRvbWF0YS5GYWlsZWRcbiAgICB8IEF1dG9tYXRhLk1hdGNoIF8gLT4gdHJ1ZVxuICBpblxuICB7IGlkeCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gYnJlYWsgZWxzZSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICByZWFsX2lkeCA9IGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIG5leHQgPSBpZiBicmVha19zdGF0ZSB0aGVuIGR1bW15X25leHQgZWxzZSBBcnJheS5tYWtlIG5jb2wgdW5rbm93bl9zdGF0ZTtcbiAgICBmaW5hbCA9IFtdO1xuICAgIGRlc2MgfVxuXG5sZXQgZmluZF9zdGF0ZSByZSBkZXNjID1cbiAgdHJ5XG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuZmluZCByZS5zdGF0ZXMgZGVzY1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IG1rX3N0YXRlIHJlLm5jb2xvciBkZXNjIGluXG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuYWRkIHJlLnN0YXRlcyBkZXNjIHN0O1xuICAgIHN0XG5cbigqKioqIE1hdGNoIHdpdGggbWFya3MgKioqKilcblxubGV0IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCA9XG4gIGxldCBkZXNjID0gQXV0b21hdGEuZGVsdGEgaW5mby5yZS50YmwgY2F0IGNvbG9yIHN0LmRlc2MgaW5cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBpbmZvLnBvc2l0aW9ucyBpblxuICBpZiBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeCA9IGxlbiAmJiBsZW4gPiAwIHRoZW4gYmVnaW5cbiAgICBsZXQgcG9zID0gaW5mby5wb3NpdGlvbnMgaW5cbiAgICBpbmZvLnBvc2l0aW9ucyA8LSBBcnJheS5tYWtlICgyICogbGVuKSAwO1xuICAgIEFycmF5LmJsaXQgcG9zIDAgaW5mby5wb3NpdGlvbnMgMCBsZW5cbiAgZW5kO1xuICBkZXNjXG5cbmxldCB2YWxpZGF0ZSBpbmZvIChzOnN0cmluZykgfnBvcyBzdCA9XG4gIGxldCBjb2xvciA9IENoYXIuY29kZSAoaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCBpblxuICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCdcblxubGV0IHJlYyBsb29wIGluZm8gcyB+cG9zIHN0ID1cbiAgaWYgcG9zIDwgaW5mby5sYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgbGV0IGlkeCA9IHN0Jy5pZHggaW5cbiAgICBpZiBpZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBwb3M7XG4gICAgICBsb29wIGluZm8gcyB+cG9zOihwb3MgKyAxKSBzdCdcbiAgICBlbmQgZWxzZSBpZiBpZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgICBzdCdcbiAgICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3Mgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCByZWMgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0ID1cbiAgaWYgcG9zIDwgbGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGlmIHN0Jy5pZHggPj0gMCB0aGVuXG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3M6KHBvcyArIDEpIH5sYXN0IHN0J1xuICAgIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0J1xuICAgIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCBmaW5hbCBpbmZvIHN0IGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgc3QuZmluYWxcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOigtMSkgc3QgaW5cbiAgICBsZXQgcmVzID0gKHN0Jy5BdXRvbWF0YS5TdGF0ZS5pZHgsIEF1dG9tYXRhLnN0YXR1cyBzdCcpIGluXG4gICAgc3QuZmluYWwgPC0gKGNhdCwgcmVzKSA6OiBzdC5maW5hbDtcbiAgICByZXNcblxubGV0IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHJlLmluaXRpYWxfc3RhdGVzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gZmluZF9zdGF0ZSByZSAoQXV0b21hdGEuU3RhdGUuY3JlYXRlIGNhdCByZS5pbml0aWFsKSBpblxuICAgIHJlLmluaXRpYWxfc3RhdGVzIDwtIChjYXQsIHN0KSA6OiByZS5pbml0aWFsX3N0YXRlcztcbiAgICBzdFxuXG5sZXQgZ2V0X2NvbG9yIHJlIChzOnN0cmluZykgcG9zID1cbiAgaWYgcG9zIDwgMCB0aGVuXG4gICAgLTFcbiAgZWxzZVxuICAgIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgaWYgcG9zID49IHNsZW4gdGhlblxuICAgICAgLTFcbiAgICBlbHNlIGlmIHBvcyA9IHNsZW4gLSAxICYmIHJlLmxubCA8PiAtMSAmJiBzLltwb3NdID0gJ1xcbicgdGhlblxuICAgICAgKCogU3BlY2lhbCBjYXNlIGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gICAgICByZS5sbmxcbiAgICBlbHNlXG4gICAgICBDaGFyLmNvZGUgcmUuY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV1cblxubGV0IHJlYyBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzID1cbiAgbGV0IHN0JyA9IHN0Lm5leHQuKGluZm8ucmUubG5sKSBpblxuICBpZiBzdCcuaWR4ID49IDAgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcuaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgbGV0IGNvbG9yID0gaW5mby5yZS5sbmwgaW5cbiAgICBsZXQgcmVhbF9jID0gQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgJ1xcbiddIGluXG4gICAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gICAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOnJlYWxfYyBzdCBpblxuICAgIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnO1xuICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHNcbiAgZW5kXG5cbmxldCByZWMgc2Nhbl9zdHIgaW5mbyAoczpzdHJpbmcpIGluaXRpYWxfc3RhdGUgfmdyb3VwcyA9XG4gIGxldCBwb3MgPSBpbmZvLnBvcyBpblxuICBsZXQgbGFzdCA9IGluZm8ubGFzdCBpblxuICBpZiAobGFzdCA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgJiYgaW5mby5yZS5sbmwgPD4gLTFcbiAgICAgICYmIGxhc3QgPiBwb3NcbiAgICAgICYmIFN0cmluZy5nZXQgcyAobGFzdCAtIDEpID0gJ1xcbicpXG4gIHRoZW4gYmVnaW5cbiAgICBsZXQgaW5mbyA9IHsgaW5mbyB3aXRoIGxhc3QgPSBsYXN0IC0gMSB9IGluXG4gICAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0XG4gICAgZWxzZVxuICAgICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3M6KGxhc3QgLSAxKSBzdCB+Z3JvdXBzXG4gIGVuZCBlbHNlIGlmIGdyb3VwcyB0aGVuXG4gICAgbG9vcCBpbmZvIHMgfnBvcyBpbml0aWFsX3N0YXRlXG4gIGVsc2VcbiAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3QgaW5pdGlhbF9zdGF0ZVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBmaW5hbCBib3VuZGFyeSBjaGVjayBvbiB0aGUgaW5wdXQuXG4gICBUaGlzIGlzIHVzZWZ1bCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZmFpbGVkIGJlY2F1c2VcbiAgIG9mIGluc3VmZmljaWVudCBpbnB1dCwgb3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseVxuICAgbWF0Y2hlcyBmb3IgcmVnZXggdGhhdCBoYXZlIGJvdW5kYXJ5IGNvbmRpdGlvbnMgd2l0aCByZXNwZWN0XG4gICB0byB0aGUgaW5wdXQgc3RyaW5nLlxuICopXG5sZXQgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyA9XG4gIGxldCBmaW5hbF9jYXQgPVxuICAgIGlmIGxhc3QgPSBzbGVuIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgbGFzdCkpXG4gIGluXG4gIGxldCAoaWR4LCByZXMpID0gZmluYWwgaW5mbyBzdCBmaW5hbF9jYXQgaW5cbiAgKG1hdGNoIGdyb3VwcywgcmVzIHdpdGhcbiAgfCB0cnVlLCBNYXRjaCBfIC0+IGluZm8ucG9zaXRpb25zLihpZHgpIDwtIGxhc3RcbiAgfCBfIC0+ICgpKTtcbiAgcmVzXG5cbmxldCBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsYXN0ID0gaWYgbGVuID0gLTEgdGhlbiBzbGVuIGVsc2UgcG9zICsgbGVuIGluXG4gIGxldCBpbmZvID1cbiAgICB7IHJlIDsgY29sb3JzID0gcmUuY29sb3JzOyBwb3MgOyBsYXN0XG4gICAgOyBwb3NpdGlvbnMgPVxuICAgICAgICBpZiBncm91cHMgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuID0gQXV0b21hdGEuaW5kZXhfY291bnQgcmUudGJsICsgMSBpblxuICAgICAgICAgIGlmIG4gPD0gMTAgdGhlblxuICAgICAgICAgICAgW3wwOzA7MDswOzA7MDswOzA7MDswfF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5tYWtlIG4gMFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIFt8fF0gfVxuICBpblxuICBsZXQgaW5pdGlhbF9jYXQgPVxuICAgIGlmIHBvcyA9IDAgdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnlcbiAgICAgICAgICAgICAgICArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIChwb3MgLSAxKSkpXG4gIGluXG4gIGxldCBpbml0aWFsX3N0YXRlID0gZmluZF9pbml0aWFsX3N0YXRlIHJlIGluaXRpYWxfY2F0IGluXG4gIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgbGV0IHJlcyA9XG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgfHwgKHBhcnRpYWwgJiYgbm90IGdyb3VwcykgdGhlblxuICAgICAgQXV0b21hdGEuc3RhdHVzIHN0LmRlc2NcbiAgICBlbHNlIGlmIHBhcnRpYWwgJiYgZ3JvdXBzIHRoZW5cbiAgICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjIHdpdGhcbiAgICAgIHwgTWF0Y2ggXyB8IEZhaWxlZCBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgKCogVGhpcyBjb3VsZCBiZSBiZWNhdXNlIGl0J3Mgc3RpbGwgbm90IGZ1bGx5IG1hdGNoZWQsIG9yIGl0XG4gICAgICAgICAgIGNvdWxkIGJlIHRoYXQgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biBzcGVjaWFsIGVuZCBvZiBpbnB1dFxuICAgICAgICAgICBjaGVja3MuICopXG4gICAgICAgIChtYXRjaCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzIHdpdGhcbiAgICAgICAgIHwgTWF0Y2ggXyBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICAgICB8IEZhaWxlZCB8IFJ1bm5pbmcgLT5cbiAgICAgICAgICAgKCogQSBmYWlsdXJlIGhlcmUganVzdCBtZWFucyB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhLCBpLmUuXG4gICAgICAgICAgICAgIGl0J3MgYSBwYXJ0aWFsIG1hdGNoLiAqKVxuICAgICAgICAgICBSdW5uaW5nKVxuICAgIGVsc2UgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3Vwc1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICAgIEF1dG9tYXRhLk1hdGNoIChtYXJrcywgcG1hcmtzKSAtPlxuICAgIE1hdGNoIHsgcyA7IG1hcmtzOyBwbWFya3MgOyBncG9zID0gaW5mby5wb3NpdGlvbnM7IGdjb3VudCA9IHJlLmdyb3VwX2NvdW50fVxuICB8IEF1dG9tYXRhLkZhaWxlZCAtPiBGYWlsZWRcbiAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+XG4gICAgbGV0IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgPSBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oMCkgZWxzZSAwIGluXG4gICAgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfVxuXG5sZXQgbWtfcmUgfmluaXRpYWwgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzIH5ncm91cF9jb3VudCA9XG4gIHsgaW5pdGlhbCA7XG4gICAgaW5pdGlhbF9zdGF0ZXMgPSBbXTtcbiAgICBjb2xvcnM7XG4gICAgY29sb3JfcmVwcjtcbiAgICBuY29sb3I7XG4gICAgbG5sO1xuICAgIHRibCA9IEF1dG9tYXRhLmNyZWF0ZV93b3JraW5nX2FyZWEgKCk7XG4gICAgc3RhdGVzID0gQXV0b21hdGEuU3RhdGUuVGFibGUuY3JlYXRlIDk3O1xuICAgIGdyb3VwX25hbWVzO1xuICAgIGdyb3VwX2NvdW50IH1cblxuKCoqKiogQ2hhcmFjdGVyIHNldHMgKioqKilcblxubGV0IGNzZXEgYyBjJyA9IENzZXQuc2VxIChDaGFyLmNvZGUgYykgKENoYXIuY29kZSBjJylcbmxldCBjYWRkIGMgcyA9IENzZXQuYWRkIChDaGFyLmNvZGUgYykgc1xuXG5sZXQgdHJhbnNfc2V0IGNhY2hlIGNtIHMgPVxuICBtYXRjaCBDc2V0Lm9uZV9jaGFyIHMgd2l0aFxuICB8IFNvbWUgaSAtPiBDc2V0LmNzaW5nbGUgY20uW2ldXG4gIHwgTm9uZSAtPlxuICAgIGxldCB2ID0gKENzZXQuaGFzaF9yZWMgcywgcykgaW5cbiAgICB0cnlcbiAgICAgIENzZXQuQ1NldE1hcC5maW5kIHYgIWNhY2hlXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBsID1cbiAgICAgICAgQ3NldC5mb2xkX3JpZ2h0XG4gICAgICAgICAgc1xuICAgICAgICAgIH5mOihmdW4gKGksIGopIGwgLT4gQ3NldC51bmlvbiAoY3NlcSBjbS5baV0gY20uW2pdKSBsKVxuICAgICAgICAgIH5pbml0OkNzZXQuZW1wdHlcbiAgICAgIGluXG4gICAgICBjYWNoZSA6PSBDc2V0LkNTZXRNYXAuYWRkIHYgbCAhY2FjaGU7XG4gICAgICBsXG5cbigqKioqKVxuXG50eXBlIHJlZ2V4cCA9XG4gICAgU2V0IG9mIENzZXQudFxuICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG5tb2R1bGUgVmlldyA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWdleHAgPVxuICAgICAgU2V0IG9mIENzZXQudFxuICAgIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICAgIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICAgIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICAgIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG4gIGxldCB2aWV3IHQgPSB0XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgdCA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgdmFyIHMgcmUgPSBzZXhwIGZtdCBzIHBwIHJlIGluXG4gIGxldCBzZXEgcyByZWwgPSBzZXhwIGZtdCBzIChsaXN0IHBwKSByZWwgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2V0IHMgLT4gIHNleHAgZm10IFwiU2V0XCIgQ3NldC5wcCBzXG4gIHwgU2VxdWVuY2Ugc3EgLT4gc2VxIFwiU2VxdWVuY2VcIiBzcVxuICB8IEFsdGVybmF0aXZlIGFsdCAtPiBzZXEgXCJBbHRlcm5hdGl2ZVwiIGFsdFxuICB8IFJlcGVhdCAocmUsIHN0YXJ0LCBzdG9wKSAtPlxuICAgIGxldCBwcCcgZm10ICgpID0gZnByaW50ZiBmbXQgXCIlYUAgJWQlYVwiIHBwIHJlICAgc3RhcnQgICBvcHRpbnQgc3RvcCBpblxuICAgIHNleHAgZm10IFwiUmVwZWF0XCIgcHAnICgpXG4gIHwgQmVnX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX2xpbmVcIlxuICB8IEVuZF9vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9saW5lXCJcbiAgfCBCZWdfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfd29yZFwiXG4gIHwgRW5kX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3dvcmRcIlxuICB8IE5vdF9ib3VuZCAgICAgICAgLT4gc3RyIGZtdCBcIk5vdF9ib3VuZFwiXG4gIHwgQmVnX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3N0clwiXG4gIHwgRW5kX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3N0clwiXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPiBzdHIgZm10IFwiTGFzdF9lbmRfb2ZfbGluZVwiXG4gIHwgU3RhcnQgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RhcnRcIlxuICB8IFN0b3AgICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0b3BcIlxuICB8IFNlbSAoc2VtLCByZSkgICAgLT5cbiAgICBzZXhwIGZtdCBcIlNlbVwiIChwYWlyIEF1dG9tYXRhLnBwX3NlbSBwcCkgKHNlbSwgcmUpXG4gIHwgU2VtX2dyZWVkeSAoaywgcmUpIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1fZ3JlZWR5XCIgKHBhaXIgQXV0b21hdGEucHBfcmVwX2tpbmQgcHApIChrLCByZSlcbiAgfCBHcm91cCAoTm9uZSwgYykgICAtPiB2YXIgXCJHcm91cFwiIGNcbiAgfCBHcm91cCAoU29tZSBuLCBjKSAtPiBzZXhwIGZtdCBcIk5hbWVkX2dyb3VwXCIgKHBhaXIgc3RyIHBwKSAobiwgYylcbiAgfCBOb19ncm91cCBjICAgICAtPiB2YXIgXCJOb19ncm91cFwiIGNcbiAgfCBOZXN0IGMgICAgICAgICAtPiB2YXIgXCJOZXN0XCIgY1xuICB8IENhc2UgYyAgICAgICAgIC0+IHZhciBcIkNhc2VcIiBjXG4gIHwgTm9fY2FzZSBjICAgICAgLT4gdmFyIFwiTm9fY2FzZVwiIGNcbiAgfCBJbnRlcnNlY3Rpb24gYyAtPiBzZXEgXCJJbnRlcnNlY3Rpb25cIiBjXG4gIHwgQ29tcGxlbWVudCBjICAgLT4gc2VxIFwiQ29tcGxlbWVudFwiIGNcbiAgfCBEaWZmZXJlbmNlIChhLCBiKSAtPiBzZXhwIGZtdCBcIkRpZmZlcmVuY2VcIiAocGFpciBwcCBwcCkgKGEsIGIpXG4gIHwgUG1hcmsgKG0sIHIpICAgICAgLT4gc2V4cCBmbXQgXCJQbWFya1wiIChwYWlyIFBtYXJrLnBwIHBwKSAobSwgcilcblxubGV0IHJlYyBpc19jaGFyc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgXyAtPlxuICAgIHRydWVcbiAgfCBBbHRlcm5hdGl2ZSBsIHwgSW50ZXJzZWN0aW9uIGwgfCBDb21wbGVtZW50IGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgaXNfY2hhcnNldCBsXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgaXNfY2hhcnNldCByICYmIGlzX2NoYXJzZXQgcidcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgfCBOb19ncm91cCByIHwgQ2FzZSByIHwgTm9fY2FzZSByIC0+XG4gICAgaXNfY2hhcnNldCByXG4gIHwgU2VxdWVuY2UgXyB8IFJlcGVhdCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IE5vdF9ib3VuZCB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBHcm91cCBfIHwgTmVzdCBfIHwgUG1hcmsgKF8sXyktPlxuICAgIGZhbHNlXG5cbigqWFhYIFVzZSBhIGJldHRlciBhbGdvcml0aG0gYWxsb3dpbmcgbm9uLWNvbnRpZ3VvdXMgcmVnaW9ucz8gKilcblxubGV0IGN1cHBlciA9XG4gIENzZXQudW5pb24gKGNzZXEgJ0EnICdaJylcbiAgICAoQ3NldC51bmlvbiAoY3NlcSAnXFwxOTInICdcXDIxNCcpIChjc2VxICdcXDIxNicgJ1xcMjIyJykpXG5sZXQgY2xvd2VyID0gQ3NldC5vZmZzZXQgMzIgY3VwcGVyXG5sZXQgY2FscGhhID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGNhZGQgWydcXDE3MCc7ICdcXDE4MSc7ICdcXDE4Nic7ICdcXDIyMyc7ICdcXDI1NSddXG4gICAgKENzZXQudW5pb24gY2xvd2VyIGN1cHBlcilcbmxldCBjZGlnaXQgPSBjc2VxICcwJyAnOSdcbmxldCBjYWxudW0gPSBDc2V0LnVuaW9uIGNhbHBoYSBjZGlnaXRcbmxldCBjd29yZCA9IGNhZGQgJ18nIGNhbG51bVxuXG5sZXQgY29sb3JpemUgYyByZWdleHAgPVxuICBsZXQgbG5sID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgY29sb3JpemUgcmVnZXhwID1cbiAgICBtYXRjaCByZWdleHAgd2l0aFxuICAgICAgU2V0IHMgICAgICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgcyBjXG4gICAgfCBTZXF1ZW5jZSBsICAgICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBBbHRlcm5hdGl2ZSBsICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBSZXBlYXQgKHIsIF8sIF8pICAgICAgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgLT4gQ29sb3JfbWFwLnNwbGl0IChDc2V0LmNzaW5nbGUgJ1xcbicpIGNcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZCAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IGN3b3JkIGNcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBTdGFydCB8IFN0b3AgICAgICAgICAgICAgIC0+ICgpXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lICAgICAgICAgIC0+IGxubCA6PSB0cnVlXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKVxuICAgIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByIHwgUG1hcmsgKF8scikgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IENhc2UgXyB8IE5vX2Nhc2UgX1xuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSBfICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgY29sb3JpemUgcmVnZXhwO1xuICAhbG5sXG5cbigqKioqIENvbXBpbGF0aW9uICoqKiopXG5cbmxldCByZWMgZXF1YWwgeDEgeDIgPVxuICBtYXRjaCB4MSwgeDIgd2l0aFxuICAgIFNldCBzMSwgU2V0IHMyIC0+XG4gICAgczEgPSBzMlxuICB8IFNlcXVlbmNlIGwxLCBTZXF1ZW5jZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBBbHRlcm5hdGl2ZSBsMSwgQWx0ZXJuYXRpdmUgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgUmVwZWF0ICh4MScsIGkxLCBqMSksIFJlcGVhdCAoeDInLCBpMiwgajIpIC0+XG4gICAgaTEgPSBpMiAmJiBqMSA9IGoyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBCZWdfb2ZfbGluZSwgQmVnX29mX2xpbmVcbiAgfCBFbmRfb2ZfbGluZSwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCwgQmVnX29mX3dvcmRcbiAgfCBFbmRfb2Zfd29yZCwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQsIE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIsIEJlZ19vZl9zdHJcbiAgfCBFbmRfb2Zfc3RyLCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSwgTGFzdF9lbmRfb2ZfbGluZVxuICB8IFN0YXJ0LCBTdGFydFxuICB8IFN0b3AsIFN0b3AgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChzZW0xLCB4MScpLCBTZW0gKHNlbTIsIHgyJykgLT5cbiAgICBzZW0xID0gc2VtMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgU2VtX2dyZWVkeSAoazEsIHgxJyksIFNlbV9ncmVlZHkgKGsyLCB4MicpIC0+XG4gICAgazEgPSBrMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgR3JvdXAgXywgR3JvdXAgXyAtPiAoKiBEbyBub3QgbWVyZ2UgZ3JvdXBzISAqKVxuICAgIGZhbHNlXG4gIHwgTm9fZ3JvdXAgeDEnLCBOb19ncm91cCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTmVzdCB4MScsIE5lc3QgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IENhc2UgeDEnLCBDYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOb19jYXNlIHgxJywgTm9fY2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgSW50ZXJzZWN0aW9uIGwxLCBJbnRlcnNlY3Rpb24gbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQ29tcGxlbWVudCBsMSwgQ29tcGxlbWVudCBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBEaWZmZXJlbmNlICh4MScsIHgxJycpLCBEaWZmZXJlbmNlICh4MicsIHgyJycpIC0+XG4gICAgZXF1YWwgeDEnIHgyJyAmJiBlcXVhbCB4MScnIHgyJydcbiAgfCBQbWFyayAobTEsIHIxKSwgUG1hcmsgKG0yLCByMikgLT5cbiAgICBQbWFyay5lcXVhbCBtMSBtMiAmJiBlcXVhbCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5hbmQgZXFfbGlzdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgW10sIFtdIC0+XG4gICAgdHJ1ZVxuICB8IHgxIDo6IHIxLCB4MiA6OiByMiAtPlxuICAgIGVxdWFsIHgxIHgyICYmIGVxX2xpc3QgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxubGV0IHNlcXVlbmNlID0gZnVuY3Rpb25cbiAgfCBbeF0gLT4geFxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCByZWMgbWVyZ2Vfc2VxdWVuY2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgQWx0ZXJuYXRpdmUgbCcgOjogciAtPlxuICAgIG1lcmdlX3NlcXVlbmNlcyAobCcgQCByKVxuICB8IFNlcXVlbmNlICh4IDo6IHkpIDo6IHIgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgciB3aXRoXG4gICAgICAgIFNlcXVlbmNlICh4JyA6OiB5JykgOjogcicgd2hlbiBlcXVhbCB4IHgnIC0+XG4gICAgICAgIFNlcXVlbmNlIFt4OyBBbHRlcm5hdGl2ZSBbc2VxdWVuY2UgeTsgc2VxdWVuY2UgeSddXSA6OiByJ1xuICAgICAgfCByJyAtPlxuICAgICAgICBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByJ1xuICAgIGVuZFxuICB8IHggOjogciAtPlxuICAgIHggOjogbWVyZ2Vfc2VxdWVuY2VzIHJcblxubW9kdWxlIEEgPSBBdXRvbWF0YVxuXG5sZXQgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyID1cbiAgbWF0Y2gga2luZCwga2luZCcgd2l0aFxuICAgIGBGaXJzdCwgYEZpcnN0IC0+IGNyXG4gIHwgYEZpcnN0LCBrICAgICAgIC0+IEEuc2VxIGlkcyBrIGNyIChBLmVwcyBpZHMpXG4gIHwgIF8gICAgICAgICAgICAgICAtPiBjclxuXG4oKiBYWFggc2hvdWxkIHByb2JhYmx5IGNvbXB1dGUgYSBjYXRlZ29yeSBtYXNrICopXG5sZXQgcmVjIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIChBLmNzdCBpZHMgKHRyYW5zX3NldCBjYWNoZSBjIHMpLCBraW5kKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICAodHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgbCwga2luZClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIGwgd2l0aFxuICAgICAgICBbciddIC0+XG4gICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciwga2luZClcbiAgICAgIHwgbWVyZ2VkX3NlcXVlbmNlcyAtPlxuICAgICAgICAoQS5hbHQgaWRzXG4gICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAoZnVuIHInIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHlcbiAgICAgICAgICAgICAgICAgICAgIHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgICAgICAgICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcilcbiAgICAgICAgICAgICAgbWVyZ2VkX3NlcXVlbmNlcyksXG4gICAgICAgICBraW5kKVxuICAgIGVuZFxuICB8IFJlcGVhdCAocicsIGksIGopIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgbGV0IHJlbSA9XG4gICAgICBtYXRjaCBqIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICBBLnJlcCBpZHMgZ3JlZWR5IGtpbmQnIGNyXG4gICAgICB8IFNvbWUgaiAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggZ3JlZWR5IHdpdGhcbiAgICAgICAgICAgIGBHcmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0Euc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW07IEEuZXBzIGlkc11cbiAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLmVwcyBpZHM7IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKGogLSBpKSBmIChBLmVwcyBpZHMpXG4gICAgaW5cbiAgICAoaXRlciBpIChmdW4gcmVtIC0+IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW0pIHJlbSwga2luZClcbiAgfCBCZWdfb2ZfbGluZSAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBFbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgQmVnX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlciksXG4gICAgIGtpbmQpXG4gIHwgRW5kX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSksXG4gICAgIGtpbmQpXG4gIHwgTm90X2JvdW5kIC0+XG4gICAgKEEuYWx0IGlkcyBbQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKTtcbiAgICAgICAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKV0sXG4gICAgIGtpbmQpXG4gIHwgQmVnX29mX3N0ciAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IEVuZF9vZl9zdHIgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbGFzdG5ld2xpbmUpLCBraW5kKVxuICB8IFN0YXJ0IC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTdG9wIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU2VtIChraW5kJywgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQnIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kJyBraW5kJycgY3IsXG4gICAgIGtpbmQnKVxuICB8IFNlbV9ncmVlZHkgKGdyZWVkeScsIHInKSAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5JyBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IEdyb3VwIChuLCByJykgLT5cbiAgICBpZiBpZ25fZ3JvdXAgdGhlblxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcCA9ICFwb3MgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lcyA6PSAobmFtZSwgcCAvIDIpIDo6ICFuYW1lc1xuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgIGluXG4gICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEubWFyayBpZHMgcCkgKFxuICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3QgY3IgKEEubWFyayBpZHMgKHAgKyAxKSkpLFxuICAgICAgIGtpbmQnKVxuICB8IE5vX2dyb3VwIHInIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIHRydWUgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgTmVzdCByJyAtPlxuICAgIGxldCBiID0gIXBvcyBpblxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGluXG4gICAgbGV0IGUgPSAhcG9zIC0gMSBpblxuICAgIGlmIGUgPCBiIHRoZW5cbiAgICAgIChjciwga2luZCcpXG4gICAgZWxzZVxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEuZXJhc2UgaWRzIGIgZSkgY3IsIGtpbmQnKVxuICB8IERpZmZlcmVuY2UgXyB8IENvbXBsZW1lbnQgXyB8IEludGVyc2VjdGlvbiBfIHwgTm9fY2FzZSBfIHwgQ2FzZSBfIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgUG1hcmsgKGksIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLnBtYXJrIGlkcyBpKSBjciwga2luZCcpXG5cbmFuZCB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBBLmVwcyBpZHNcbiAgfCBbcl0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3InXG4gIHwgciA6OiByZW0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBsZXQgY3InJyA9XG4gICAgICB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByZW0gaW5cbiAgICBpZiBBLmlzX2VwcyBjcicnIHRoZW5cbiAgICAgIGNyJ1xuICAgIGVsc2UgaWYgQS5pc19lcHMgY3InIHRoZW5cbiAgICAgIGNyJydcbiAgICBlbHNlXG4gICAgICBBLnNlcSBpZHMga2luZCcgY3InIGNyJydcblxuKCoqKiogQ2FzZSAqKioqKVxuXG5sZXQgY2FzZV9pbnNlbnMgcyA9XG4gIENzZXQudW5pb24gcyAoQ3NldC51bmlvbiAoQ3NldC5vZmZzZXQgMzIgKENzZXQuaW50ZXIgcyBjdXBwZXIpKVxuICAgICAgICAgICAgICAgICAgKENzZXQub2Zmc2V0ICgtMzIpIChDc2V0LmludGVyIHMgY2xvd2VyKSkpXG5cbmxldCBhc19zZXQgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+IHNcbiAgfCBfICAgICAtPiBhc3NlcnQgZmFsc2VcblxuKCogWFhYIFNob3VsZCBzcGxpdCBhbHRlcm5hdGl2ZXMgaW50byAoMSkgY2hhcnNldHMgYW5kICgyKSBtb3JlXG4gICBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGFsdGVybmF0aXZlIHNob3VsZCB0aGVyZWZvcmUgcHJvYmFibHlcbiAgIGJlIGZsYXR0ZW4gaGVyZSAqKVxubGV0IHJlYyBoYW5kbGVfY2FzZSBpZ25fY2FzZSA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICBTZXQgKGlmIGlnbl9jYXNlIHRoZW4gY2FzZV9pbnNlbnMgcyBlbHNlIHMpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIFNlcXVlbmNlIChMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbCBpblxuICAgIGlmIGlzX2NoYXJzZXQgKEFsdGVybmF0aXZlIGwnKSB0aGVuXG4gICAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKSBDc2V0LmVtcHR5IGwnKVxuICAgIGVsc2VcbiAgICAgIEFsdGVybmF0aXZlIGwnXG4gIHwgUmVwZWF0IChyLCBpLCBqKSAtPlxuICAgIFJlcGVhdCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciwgaSwgailcbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcCBhcyByIC0+XG4gICAgclxuICB8IFNlbSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtIChrLCByJylcbiAgfCBTZW1fZ3JlZWR5IChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW1fZ3JlZWR5IChrLCByJylcbiAgfCBHcm91cCAobiwgcikgLT5cbiAgICBHcm91cCAobiwgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcbiAgfCBOb19ncm91cCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5vX2dyb3VwIHInXG4gIHwgTmVzdCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5lc3QgcidcbiAgfCBDYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSBmYWxzZSByXG4gIHwgTm9fY2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgdHJ1ZSByXG4gIHwgSW50ZXJzZWN0aW9uIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC5pbnRlciBzIChhc19zZXQgcikpIENzZXQuY2FueSBsJylcbiAgfCBDb21wbGVtZW50IGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoQ3NldC5kaWZmIENzZXQuY2FueVxuICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpXG4gICAgICAgICAgICAgIENzZXQuZW1wdHkgbCcpKVxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIFNldCAoQ3NldC5pbnRlciAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSlcbiAgICAgICAgICAgKENzZXQuZGlmZiBDc2V0LmNhbnkgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcicpKSkpXG4gIHwgUG1hcmsgKGkscikgLT4gUG1hcmsgKGksaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcblxuKCoqKiopXG5cbmxldCBjb21waWxlXzEgcmVnZXhwID1cbiAgbGV0IHJlZ2V4cCA9IGhhbmRsZV9jYXNlIGZhbHNlIHJlZ2V4cCBpblxuICBsZXQgYyA9IENvbG9yX21hcC5tYWtlICgpIGluXG4gIGxldCBuZWVkX2xubCA9IGNvbG9yaXplIGMgcmVnZXhwIGluXG4gIGxldCAoY29sb3JzLCBjb2xvcl9yZXByLCBuY29sb3IpID0gQ29sb3JfbWFwLmZsYXR0ZW4gYyBpblxuICBsZXQgbG5sID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgZWxzZSAtMSBpblxuICBsZXQgbmNvbG9yID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgKyAxIGVsc2UgbmNvbG9yIGluXG4gIGxldCBpZHMgPSBBLmNyZWF0ZV9pZHMgKCkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCBuYW1lcyA9IHJlZiBbXSBpblxuICBsZXQgKHIsIGtpbmQpID1cbiAgICB0cmFuc2xhdGUgaWRzXG4gICAgICBgRmlyc3QgZmFsc2UgZmFsc2UgYEdyZWVkeSBwb3MgbmFtZXMgKHJlZiBDc2V0LkNTZXRNYXAuZW1wdHkpIGNvbG9ycyByZWdleHAgaW5cbiAgbGV0IHIgPSBlbmZvcmNlX2tpbmQgaWRzIGBGaXJzdCBraW5kIHIgaW5cbiAgKCpGb3JtYXQuZXByaW50ZiBcIjwlZCAlZD5ALlwiICFpZHMgbmNvbDsqKVxuICBta19yZSB+aW5pdGlhbDpyIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lczooTGlzdC5yZXYgIW5hbWVzKSB+Z3JvdXBfY291bnQ6KCFwb3MgLyAyKVxuXG4oKioqKilcblxubGV0IHJlYyBhbmNob3JlZCA9IGZ1bmN0aW9uXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIExpc3QuZXhpc3RzIGFuY2hvcmVkIGxcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGFuY2hvcmVkIGxcbiAgfCBSZXBlYXQgKHIsIGksIF8pIC0+XG4gICAgaSA+IDAgJiYgYW5jaG9yZWQgclxuICB8IFNldCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0b3BcbiAgfCBJbnRlcnNlY3Rpb24gXyB8IENvbXBsZW1lbnQgXyB8IERpZmZlcmVuY2UgXyAtPlxuICAgIGZhbHNlXG4gIHwgQmVnX29mX3N0ciB8IFN0YXJ0IC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKSB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHIgfCBOZXN0IHJcbiAgfCBDYXNlIHIgfCBOb19jYXNlIHIgfCBQbWFyayAoXywgcikgLT5cbiAgICBhbmNob3JlZCByXG5cbigqKioqKVxuXG50eXBlIHQgPSByZWdleHBcblxubGV0IHN0ciBzID1cbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSBTZXQgKENzZXQuY3NpbmdsZSBzLltpXSkgOjogIWxcbiAgZG9uZTtcbiAgU2VxdWVuY2UgIWxcbmxldCBjaGFyIGMgPSBTZXQgKENzZXQuY3NpbmdsZSBjKVxuXG5sZXQgYWx0ID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBBbHRlcm5hdGl2ZSBsXG5sZXQgc2VxID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCBlbXB0eSA9IGFsdCBbXVxubGV0IGVwc2lsb24gPSBzZXEgW11cbmxldCByZXBuIHIgaSBqID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIjtcbiAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIlxuICAgIHwgXyAtPiAoKVxuICBlbmQ7XG4gIFJlcGVhdCAociwgaSwgailcbmxldCByZXAgciA9IHJlcG4gciAwIE5vbmVcbmxldCByZXAxIHIgPSByZXBuIHIgMSBOb25lXG5sZXQgb3B0IHIgPSByZXBuIHIgMCAoU29tZSAxKVxubGV0IGJvbCA9IEJlZ19vZl9saW5lXG5sZXQgZW9sID0gRW5kX29mX2xpbmVcbmxldCBib3cgPSBCZWdfb2Zfd29yZFxubGV0IGVvdyA9IEVuZF9vZl93b3JkXG5sZXQgd29yZCByID0gc2VxIFtib3c7IHI7IGVvd11cbmxldCBub3RfYm91bmRhcnkgPSBOb3RfYm91bmRcbmxldCBib3MgPSBCZWdfb2Zfc3RyXG5sZXQgZW9zID0gRW5kX29mX3N0clxubGV0IHdob2xlX3N0cmluZyByID0gc2VxIFtib3M7IHI7IGVvc11cbmxldCBsZW9sID0gTGFzdF9lbmRfb2ZfbGluZVxubGV0IHN0YXJ0ID0gU3RhcnRcbmxldCBzdG9wID0gU3RvcFxubGV0IGxvbmdlc3QgciA9IFNlbSAoYExvbmdlc3QsIHIpXG5sZXQgc2hvcnRlc3QgciA9IFNlbSAoYFNob3J0ZXN0LCByKVxubGV0IGZpcnN0IHIgPSBTZW0gKGBGaXJzdCwgcilcbmxldCBncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBHcmVlZHksIHIpXG5sZXQgbm9uX2dyZWVkeSByID0gU2VtX2dyZWVkeSAoYE5vbl9ncmVlZHksIHIpXG5sZXQgZ3JvdXAgP25hbWUgciA9IEdyb3VwIChuYW1lLCByKVxubGV0IG5vX2dyb3VwIHIgPSBOb19ncm91cCByXG5sZXQgbmVzdCByID0gTmVzdCByXG5sZXQgbWFyayByID0gbGV0IGkgPSBQbWFyay5nZW4gKCkgaW4gKGksUG1hcmsgKGkscikpXG5cbmxldCBzZXQgc3RyID1cbiAgbGV0IHMgPSByZWYgQ3NldC5lbXB0eSBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgcyA6PSBDc2V0LnVuaW9uIChDc2V0LmNzaW5nbGUgc3RyLltpXSkgIXNcbiAgZG9uZTtcbiAgU2V0ICFzXG5cbmxldCByZyBjIGMnID0gU2V0IChjc2VxIGMgYycpXG5cbmxldCBpbnRlciBsID1cbiAgbGV0IHIgPSBJbnRlcnNlY3Rpb24gbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuaW50ZXJcIlxuXG5sZXQgY29tcGwgbCA9XG4gIGxldCByID0gQ29tcGxlbWVudCBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5jb21wbFwiXG5cbmxldCBkaWZmIHIgcicgPVxuICBsZXQgcicnID0gRGlmZmVyZW5jZSAociwgcicpIGluXG4gIGlmIGlzX2NoYXJzZXQgcicnIHRoZW5cbiAgICByJydcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuZGlmZlwiXG5cbmxldCBhbnkgPSBTZXQgQ3NldC5jYW55XG5sZXQgbm90bmwgPSBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnkgKENzZXQuY3NpbmdsZSAnXFxuJykpXG5cbmxldCBsb3dlciA9IGFsdCBbcmcgJ2EnICd6JzsgY2hhciAnXFwxODEnOyByZyAnXFwyMjMnICdcXDI0Nic7IHJnICdcXDI0OCcgJ1xcMjU1J11cbmxldCB1cHBlciA9IGFsdCBbcmcgJ0EnICdaJzsgcmcgJ1xcMTkyJyAnXFwyMTQnOyByZyAnXFwyMTYnICdcXDIyMiddXG5sZXQgYWxwaGEgPSBhbHQgW2xvd2VyOyB1cHBlcjsgY2hhciAnXFwxNzAnOyBjaGFyICdcXDE4NiddXG5sZXQgZGlnaXQgPSByZyAnMCcgJzknXG5sZXQgYWxudW0gPSBhbHQgW2FscGhhOyBkaWdpdF1cbmxldCB3b3JkYyA9IGFsdCBbYWxudW07IGNoYXIgJ18nXVxubGV0IGFzY2lpID0gcmcgJ1xcMDAwJyAnXFwxMjcnXG5sZXQgYmxhbmsgPSBzZXQgXCJcXHQgXCJcbmxldCBjbnRybCA9IGFsdCBbcmcgJ1xcMDAwJyAnXFwwMzEnOyByZyAnXFwxMjcnICdcXDE1OSddXG5sZXQgZ3JhcGggPSBhbHQgW3JnICdcXDAzMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHByaW50ID0gYWx0IFtyZyAnXFwwMzInICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwdW5jdCA9XG4gIGFsdCBbcmcgJ1xcMDMzJyAnXFwwNDcnOyByZyAnXFwwNTgnICdcXDA2NCc7IHJnICdcXDA5MScgJ1xcMDk2JztcbiAgICAgICByZyAnXFwxMjMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMTY5JzsgcmcgJ1xcMTcxJyAnXFwxODAnO1xuICAgICAgIHJnICdcXDE4MicgJ1xcMTg1JzsgcmcgJ1xcMTg3JyAnXFwxOTEnOyBjaGFyICdcXDIxNSc7IGNoYXIgJ1xcMjQ3J11cbmxldCBzcGFjZSA9IGFsdCBbY2hhciAnICc7IHJnICdcXDAwOScgJ1xcMDEzJ11cbmxldCB4ZGlnaXQgPSBhbHQgW2RpZ2l0OyByZyAnYScgJ2YnOyByZyAnQScgJ0YnXVxuXG5sZXQgY2FzZSByID0gQ2FzZSByXG5sZXQgbm9fY2FzZSByID0gTm9fY2FzZSByXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZSByID1cbiAgY29tcGlsZV8xIChcbiAgICBpZiBhbmNob3JlZCByIHRoZW5cbiAgICAgIGdyb3VwIHJcbiAgICBlbHNlXG4gICAgICBzZXEgW3Nob3J0ZXN0IChyZXAgYW55KTsgZ3JvdXAgcl1cbiAgKVxuXG5sZXQgZXhlY19pbnRlcm5hbCBuYW1lID8ocG9zPTApID8obGVuID0gLTEpIH5wYXJ0aWFsIH5ncm91cHMgcmUgcyA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgLTEgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBuYW1lO1xuICBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlblxuXG5sZXQgZXhlYyA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjXCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZXhlY19vcHQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY19vcHRcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlXG4gICAgICAgICAgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IFNvbWUgc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IE5vbmVcblxubGV0IGV4ZWNwID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOmZhbHNlIFwiUmUuZXhlY3BcIiA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggX3N1YnN0ciAtPiB0cnVlXG4gIHwgXyAgICAgICAgICAgICAtPiBmYWxzZVxuXG5sZXQgZXhlY19wYXJ0aWFsID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfIC0+IGBGdWxsXG4gIHwgUnVubmluZyBfIC0+IGBQYXJ0aWFsXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubGV0IGV4ZWNfcGFydGlhbF9kZXRhaWxlZCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxfZGV0YWlsZWRcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBncm91cCAtPiBgRnVsbCBncm91cFxuICB8IFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH0gLT4gYFBhcnRpYWwgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZVxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbm1vZHVsZSBNYXJrID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gUG1hcmsudFxuXG4gIGxldCB0ZXN0IChnIDogR3JvdXAudCkgcCA9XG4gICAgUG1hcmsuU2V0Lm1lbSBwIGcucG1hcmtzXG5cbiAgbGV0IGFsbCAoZyA6IEdyb3VwLnQpID0gZy5wbWFya3NcblxuICBtb2R1bGUgU2V0ID0gUG1hcmsuU2V0XG5cbiAgbGV0IGVxdWFsID0gUG1hcmsuZXF1YWxcblxuICBsZXQgY29tcGFyZSA9IFBtYXJrLmNvbXBhcmVcblxuZW5kXG5cbnR5cGUgc3BsaXRfdG9rZW4gPVxuICBbIGBUZXh0IG9mIHN0cmluZ1xuICB8IGBEZWxpbSBvZiBHcm91cC50XG4gIF1cblxubW9kdWxlIFJzZXEgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAoKiBpbmRleCBvZiB0aGUgZmlyc3QgcG9zaXRpb24gd2UgZG8gbm90IGNvbnNpZGVyLlxuICAgICAgICFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQgKilcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGl0ZXJhdGUgb24gbWF0Y2hlcy4gV2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBuZXh0XG4gICAgICAgb25lIGp1c3QgYWZ0ZXIgaXRzIGVuZCAqKVxuICAgIGxldCByZWMgYXV4IHBvcyAoKSA9XG4gICAgICBpZiBwb3MgPj0gbGltaXRcbiAgICAgIHRoZW4gU2VxLk5pbCAoKiBubyBtb3JlIG1hdGNoZXMgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzXG4gICAgICAgICAgICAgICAgfnBvcyB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoc3Vic3RyLCBhdXggcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgX1xuICAgICAgICB8IEZhaWxlZCAtPiBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggcG9zXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBhbGwgP3BvcyA/bGVuIHJlIHNcbiAgICB8PiBTZXEubWFwIChmdW4gc3ViIC0+IEdyb3VwLmdldCBzdWIgMClcblxuICBsZXQgc3BsaXRfZnVsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpOiBzdGFydCBvZiBkZWxpbWl0ZWQgc3RyaW5nXG4gICAgICAgcG9zOiBmaXJzdCBwb3NpdGlvbiBhZnRlciBsYXN0IG1hdGNoIG9mIFtyZV1cbiAgICAgICBsaW1pdDogZmlyc3QgaW5kZXggd2UgaWdub3JlICghcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50KSAqKVxuICAgIGxldCBwb3MwID0gcG9zIGluXG4gICAgbGV0IHJlYyBhdXggc3RhdGUgaSBwb3MgKCkgPSBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IGBJZGxlIHdoZW4gcG9zID49IGxpbWl0IC0+XG4gICAgICAgIGlmIGkgPCBsaW1pdCB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgc3ViLCBhdXggc3RhdGUgKGkrMSkgcG9zKVxuICAgICAgICApIGVsc2UgU2VxLk5pbFxuICAgICAgfCBgSWRsZSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIGxldCBvbGRfaSA9IGkgaW5cbiAgICAgICAgICBsZXQgaSA9IHAyIGluXG4gICAgICAgICAgaWYgcDEgPiBwb3MwIHRoZW4gKFxuICAgICAgICAgICAgKCogc3RyaW5nIGRvZXMgbm90IHN0YXJ0IGJ5IGEgZGVsaW1pdGVyICopXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBvbGRfaSAocDEgLSBvbGRfaSkgaW5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGBZaWVsZCAoYERlbGltIHN1YnN0cikgaW5cbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgICAgKSBlbHNlIFNlcS5Db25zIChgRGVsaW0gc3Vic3RyLCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfIC0+IFNlcS5OaWxcbiAgICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgICBpZiBpIDwgbGltaXRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICAgICgqIHlpZWxkIGxhc3Qgc3RyaW5nICopXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGxpbWl0IHBvcylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgZW5kXG4gICAgICB8IGBZaWVsZCB4IC0+XG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggYElkbGUgaSBwb3MpXG4gICAgaW5cbiAgICBhdXggYElkbGUgcG9zIHBvc1xuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGxldCBzZXEgPSBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgc2VxICgpID0gbWF0Y2ggc2VxICgpICB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gU2VxLk5pbFxuICAgICAgfCBTZXEuQ29ucyAoYERlbGltIF8sIHRsKSAtPiBmaWx0ZXIgdGwgKClcbiAgICAgIHwgU2VxLkNvbnMgKGBUZXh0IHMsdGwpIC0+IFNlcS5Db25zIChzLCBmaWx0ZXIgdGwpXG4gICAgaW4gZmlsdGVyIHNlcVxuZW5kXG5cbm1vZHVsZSBSbGlzdCA9IHN0cnVjdFxuICBsZXQgbGlzdF9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgbGlzdCA9XG4gICAgU2VxLmZvbGRfbGVmdCAoZnVuIGwgeCAtPiB4IDo6IGwpIFtdIHMgfD4gTGlzdC5yZXZcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuZW5kXG5cbm1vZHVsZSBHZW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSBnZW4gPSB1bml0IC0+ICdhIG9wdGlvblxuICBsZXQgZ2VuX29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBnZW4gPVxuICAgIGxldCByID0gcmVmIHMgaW5cbiAgICBmdW4gKCkgLT4gbWF0Y2ggIXIgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICAgIHwgU2VxLkNvbnMgKHgsIHRsKSAtPlxuICAgICAgICByIDo9IHRsO1xuICAgICAgICBTb21lIHhcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcbmVuZFxuXG5sZXQgcmVwbGFjZSA/KHBvcz0wKSA/bGVuID8oYWxsPXRydWUpIHJlIH5mIHMgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgIHwgU29tZSBsIC0+XG4gICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgICAgIHBvcytsXG4gIGluXG4gICgqIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIHdyaXRlIHRoZSByZXN1bHQgKilcbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgKCogaXRlcmF0ZSBvbiBtYXRjaGVkIHN1YnN0cmluZ3MuICopXG4gIGxldCByZWMgaXRlciBwb3MgPVxuICAgIGlmIHBvcyA8IGxpbWl0XG4gICAgdGhlblxuICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3MgfmxlbjoobGltaXQtcG9zKSB3aXRoXG4gICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICgqIGFkZCBzdHJpbmcgYmV0d2VlbiBwcmV2aW91cyBtYXRjaCBhbmQgY3VycmVudCBtYXRjaCAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKHAxLXBvcyk7XG4gICAgICAgICgqIHdoYXQgc2hvdWxkIHdlIHJlcGxhY2UgdGhlIG1hdGNoZWQgZ3JvdXAgd2l0aD8gKilcbiAgICAgICAgbGV0IHJlcGxhY2luZyA9IGYgc3Vic3RyIGluXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiByZXBsYWNpbmc7XG4gICAgICAgIGlmIGFsbCB0aGVuXG4gICAgICAgICAgKCogaWYgd2UgbWF0Y2hlZCBhIG5vbi1jaGFyIGUuZy4gXiB3ZSBtdXN0IG1hbnVhbGx5IGFkdmFuY2UgYnkgMSAqKVxuICAgICAgICAgIGl0ZXIgKFxuICAgICAgICAgICAgaWYgcDE9cDIgdGhlbiAoXG4gICAgICAgICAgICAgICgqIGEgbm9uIGNoYXIgY291bGQgYmUgcGFzdCB0aGUgZW5kIG9mIHN0cmluZy4gZS5nLiAkICopXG4gICAgICAgICAgICAgIGlmIHAyIDwgbGltaXQgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmIHMuW3AyXTtcbiAgICAgICAgICAgICAgcDIrMVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHAyKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcDIgKGxpbWl0LXAyKVxuICAgICAgfCBSdW5uaW5nIF8gLT4gKClcbiAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAobGltaXQtcG9zKVxuICBpblxuICBpdGVyIHBvcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcmVwbGFjZV9zdHJpbmcgP3BvcyA/bGVuID9hbGwgcmUgfmJ5IHMgPVxuICByZXBsYWNlID9wb3MgP2xlbiA/YWxsIHJlIHMgfmY6KGZ1biBfIC0+IGJ5KVxuXG5sZXQgd2l0bmVzcyB0ID1cbiAgbGV0IHJlYyB3aXRuZXNzID0gZnVuY3Rpb25cbiAgICB8IFNldCBjIC0+IFN0cmluZy5tYWtlIDEgKENoYXIuY2hyIChDc2V0LnBpY2sgYykpXG4gICAgfCBTZXF1ZW5jZSB4cyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHdpdG5lc3MgeHMpXG4gICAgfCBBbHRlcm5hdGl2ZSAoeCA6OiBfKSAtPiB3aXRuZXNzIHhcbiAgICB8IEFsdGVybmF0aXZlIFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgUmVwZWF0IChyLCBmcm9tLCBfdG8pIC0+XG4gICAgICBsZXQgdyA9IHdpdG5lc3MgciBpblxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHcgKiBmcm9tKSBpblxuICAgICAgZm9yIF9pPTEgdG8gZnJvbSBkb1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHdcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgTm9fY2FzZSByIC0+IHdpdG5lc3MgclxuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSAoXywgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBHcm91cCAoXywgcilcbiAgICB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgclxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgUG1hcmsgKF8sIHIpXG4gICAgfCBDYXNlIHJcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpIC0+IHdpdG5lc3MgclxuICAgIHwgQmVnX29mX2xpbmVcbiAgICB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZFxuICAgIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZVxuICAgIHwgU3RhcnRcbiAgICB8IFN0b3BcbiAgICB8IEVuZF9vZl9zdHIgLT4gXCJcIiBpblxuICB3aXRuZXNzIChoYW5kbGVfY2FzZSBmYWxzZSB0KVxuXG5tb2R1bGUgU2VxID0gUnNlcVxubW9kdWxlIExpc3QgPSBSbGlzdFxubW9kdWxlIEdyb3VwID0gR3JvdXBcblxuKCoqIHsyIERlcHJlY2F0ZWQgZnVuY3Rpb25zfSAqKVxuXG5sZXQgc3BsaXRfZnVsbF9zZXEgPSBTZXEuc3BsaXRfZnVsbFxubGV0IHNwbGl0X3NlcSA9IFNlcS5zcGxpdFxubGV0IG1hdGNoZXNfc2VxID0gU2VxLm1hdGNoZXNcbmxldCBhbGxfc2VxID0gU2VxLmFsbFxuXG50eXBlICdhIGdlbiAgICAgICAgPSAnYSBHZW4uZ2VuXG5sZXQgYWxsX2dlbiAgICAgICAgPSBHZW4uYWxsXG5sZXQgbWF0Y2hlc19nZW4gICAgPSBHZW4ubWF0Y2hlc1xubGV0IHNwbGl0X2dlbiAgICAgID0gR2VuLnNwbGl0XG5sZXQgc3BsaXRfZnVsbF9nZW4gPSBHZW4uc3BsaXRfZnVsbFxuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcblxubGV0IGdldCA9IEdyb3VwLmdldFxubGV0IGdldF9vZnMgPSBHcm91cC5vZmZzZXRcbmxldCBnZXRfYWxsID0gR3JvdXAuYWxsXG5sZXQgZ2V0X2FsbF9vZnMgPSBHcm91cC5hbGxfb2Zmc2V0XG5sZXQgdGVzdCA9IEdyb3VwLnRlc3RcblxudHlwZSBtYXJraWQgPSBNYXJrLnRcblxubGV0IG1hcmtlZCA9IE1hcmsudGVzdFxubGV0IG1hcmtfc2V0ID0gTWFyay5hbGxcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqXG5JbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyOlxuLSBkb2VzIG5vdCBleGlzdHNcbi0gaXMgYSBsZXR0ZXJcbi0gaXMgbm90IGEgbGV0dGVyXG4tIGlzIGEgbmV3bGluZVxuLSBpcyBsYXN0IG5ld2xpbmVcblxuQmVnaW5uaW5nIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgbGluZTpcbi0gcHJldmlvdXMgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBidWZmZXI6XG4tIHByZXZpb3VzIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBidWZmZXJcbi0gY3VycmVudCBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgbGluZVxuLSBjdXJyZW50IGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuKilcblxuKCpcblJlcDogZSA9IFQsZSB8ICgpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSBjb21tYSAoc2hvcnRlc3QvbG9uZ2VzdC9maXJzdClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIHVuaW9uIChncmVlZHkvbm9uLWdyZWVkeSlcblxuQm91bmRlZCByZXBldGl0aW9uXG4gIGF7MCwzfSA9IChhLChhLGE/KT8pP1xuKilcblxudHlwZSBncm91cHMgPSBHcm91cC50XG5cbmluY2x1ZGUgUmxpc3RcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IHRlc3QyIGMgYycgPSAhaSArIDEgPCBsICYmIHMuWyFpXSA9IGMgJiYgcy5bIWkgKyAxXSA9IGMnIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdDIgYyBjJyA9IGxldCByID0gdGVzdDIgYyBjJyBpbiBpZiByIHRoZW4gaSA6PSAhaSArIDI7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQyICdcXFxcJyAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdDIgJ1xcXFwnICd8JyB8fCB0ZXN0MiAnXFxcXCcgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgUmUuYm9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBSZS5lb2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0MiAnXFxcXCcgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ2AnIHRoZW5cbiAgICAgICAgUmUuYm9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnXFwnJyB0aGVuXG4gICAgICAgIFJlLmVvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz0nIHRoZW5cbiAgICAgICAgUmUuc3RhcnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdiJyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnQicgdGhlblxuICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuXG4gICAgICAgIFJlLmJvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz4nIHRoZW5cbiAgICAgICAgUmUuZW93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAndycgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdXJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICdbJyB8ICddJyB8ICcuJyB8ICdeJyB8ICckJyB8ICdcXFxcJyBhcyBjIC0+XG4gICAgICAgICAgICBSZS5jaGFyIGNcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgYyAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgZ2V0ICgpXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG5sZXQgcmUgPyhjYXNlID0gdHJ1ZSkgcyA9IGxldCByID0gcGFyc2UgcyBpbiBpZiBjYXNlIHRoZW4gciBlbHNlIFJlLm5vX2Nhc2UgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KGNhc2UgPSB0cnVlKSBzID0gY29tcGlsZSAocmUgfmNhc2UgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKilcbigqICBsaW5raW5nIGV4Y2VwdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kaWZpZWQgYnkgSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyIGZvciBpbnRlZ3JhdGlvbiBpbiBSRSAqKVxuXG4oKiAkSWQ6IHJlX3N0ci5tbCx2IDEuMyAyMDAyLzA3LzAzIDE1OjQ3OjU0IHZvdWlsbG9uIEV4cCAkICopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxudHlwZSByZWdleHAgPVxuICB7IHJlOiBSZS50XG4gIDsgbXRjaDogUmUucmUgTGF6eS50XG4gIDsgc3JjaDogUmUucmUgTGF6eS50IH1cblxubGV0IGNvbXBpbGVfcmVnZXhwIHMgYyA9XG4gIGxldCByZSA9IEVtYWNzLnJlIH5jYXNlOihub3QgYykgcyBpblxuICB7IHJlXG4gIDsgbXRjaCA9IGxhenkgKFJlLmNvbXBpbGUgKFJlLnNlcSBbUmUuc3RhcnQ7IHJlXSkpXG4gIDsgc3JjaCA9IGxhenkgKFJlLmNvbXBpbGUgcmUpIH1cblxubGV0IHN0YXRlID0gcmVmIE5vbmVcblxubGV0IHN0cmluZ19tYXRjaCByZSBzIHAgPVxuICB0cnlcbiAgICBzdGF0ZSA6PSBTb21lIChSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBmYWxzZVxuXG5sZXQgc3RyaW5nX3BhcnRpYWxfbWF0Y2ggcmUgcyBwID1cbiAgbWF0Y2hcbiAgICBSZS5leGVjX3BhcnRpYWwgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHNcbiAgd2l0aFxuICAgIGBGdWxsICAgICAtPiBzdHJpbmdfbWF0Y2ggcmUgcyBwXG4gIHwgYFBhcnRpYWwgIC0+IHRydWVcbiAgfCBgTWlzbWF0Y2ggLT4gZmFsc2VcblxubGV0IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5zcmNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgZnN0IChSZS5Hcm91cC5vZmZzZXQgcmVzIDApXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBzZWFyY2hfYmFja3dhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBwXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBpZiBwID0gMCB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlXG4gICAgICBzZWFyY2hfYmFja3dhcmQgcmUgcyAocCAtIDEpXG5cbmxldCB2YWxpZF9ncm91cCBuID1cbiAgbiA+PSAwICYmIG4gPCAxMCAmJiAoXG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbSAtPiBuIDwgUmUuR3JvdXAubmJfZ3JvdXBzIG1cbiAgKVxuXG5sZXQgb2Zmc2V0X2dyb3VwIGkgPVxuICBtYXRjaCAhc3RhdGUgd2l0aFxuICB8IFNvbWUgbSAtPiBSZS5Hcm91cC5vZmZzZXQgbSBpXG4gIHwgTm9uZSAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZ3JvdXBfbGVuIGkgPVxuICB0cnlcbiAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIGkgaW5cbiAgICBlIC0gYlxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIDBcblxubGV0IHJlYyByZXBsX2xlbmd0aCByZXBsIHAgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBpZiByZXBsLltwXSA8PiAnXFxcXCcgdGhlblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIChxICsgMSkgbGVuXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHAgPSBwICsgMSBpblxuICAgICAgaWYgcCA9IGxlbiB0aGVuIGZhaWx3aXRoIFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCI7XG4gICAgICBsZXQgcSA9XG4gICAgICAgIG1hdGNoIHJlcGwuW3BdIHdpdGhcbiAgICAgICAgfCAnXFxcXCcgLT4gcSArIDFcbiAgICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gcSArIGdyb3VwX2xlbiAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgICB8IF8gLT4gcSArIDIgaW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSBxIGxlblxuICAgIGVuZFxuICBlbmQgZWxzZVxuICAgIHFcblxubGV0IHJlYyByZXBsYWNlIG9yaWcgcmVwbCBwIHJlcyBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGxldCBjID0gcmVwbC5bcF0gaW5cbiAgICBpZiBjIDw+ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBCeXRlcy5zZXQgcmVzIHEgYztcbiAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMSkgcmVzIChxICsgMSkgbGVuXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIHJlcGwuW3AgKyAxXSB3aXRoXG4gICAgICAgICdcXFxcJyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDEpIGxlblxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgbGV0IGQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBlIC0gYiBpblxuICAgICAgICAgICAgaWYgZCA+IDAgdGhlbiBTdHJpbmcuYmxpdCBvcmlnIGIgcmVzIHEgZDtcbiAgICAgICAgICAgIGRcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgMFxuICAgICAgICBpblxuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIGQpIGxlblxuICAgICAgfCBjIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIEJ5dGVzLnNldCByZXMgKHEgKyAxKSBjO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDIpIGxlblxuICAgIGVuZFxuICBlbmRcblxubGV0IHJlcGxhY2VtZW50X3RleHQgcmVwbCBvcmlnID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcmVwbCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChyZXBsX2xlbmd0aCByZXBsIDAgMCBsZW4pIGluXG4gIHJlcGxhY2Ugb3JpZyByZXBsIDAgcmVzIDAgKFN0cmluZy5sZW5ndGggcmVwbCk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHN0cmluZ19iZWZvcmUgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgZmlyc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgbGFzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgKFN0cmluZy5sZW5ndGggcyAtIG4pIG5cblxubGV0IHJlZ2V4cCBlID0gY29tcGlsZV9yZWdleHAgZSBmYWxzZVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBlID0gY29tcGlsZV9yZWdleHAgZSB0cnVlXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgZmFsc2VcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgdHJ1ZVxuXG5sZXQgZ3JvdXBfYmVnaW5uaW5nIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfYmVnaW5uaW5nXCI7XG4gIGxldCBwb3MgPSBmc3QgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IGdyb3VwX2VuZCBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2VuZFwiO1xuICBsZXQgcG9zID0gc25kIChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBtYXRjaGVkX2dyb3VwIG4gdHh0ID1cbiAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBuIGluXG4gIFN0cmluZy5zdWIgdHh0IGIgKGUgLSBiKVxuXG5sZXQgcmVwbGFjZV9tYXRjaGVkIHJlcGwgbWF0Y2hlZCA9IHJlcGxhY2VtZW50X3RleHQgcmVwbCBtYXRjaGVkXG5cbmxldCBtYXRjaF9iZWdpbm5pbmcgKCkgPSBncm91cF9iZWdpbm5pbmcgMFxuYW5kIG1hdGNoX2VuZCAoKSA9IGdyb3VwX2VuZCAwXG5hbmQgbWF0Y2hlZF9zdHJpbmcgdHh0ID0gbWF0Y2hlZF9ncm91cCAwIHR4dFxuXG5sZXQgc3Vic3RpdHV0ZV9maXJzdCBleHByIHJlcGxfZnVuIHRleHQgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IDAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW3N0cmluZ19iZWZvcmUgdGV4dCBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbF9mdW4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfYWZ0ZXIgdGV4dCAobWF0Y2hfZW5kICgpKV1cbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0ZXh0XG5cbmxldCBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIHJlcGxfZnVuIHRleHQgPVxuICBsZXQgcmVjIHJlcGxhY2UgYWNjdSBzdGFydCBsYXN0X3dhc19lbXB0eSA9XG4gICAgbGV0IHN0YXJ0cG9zID0gaWYgbGFzdF93YXNfZW1wdHkgdGhlbiBzdGFydCArIDEgZWxzZSBzdGFydCBpblxuICAgIGlmIHN0YXJ0cG9zID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCBzdGFydHBvcyB3aXRoXG4gICAgICB8IHBvcyAtPlxuICAgICAgICBsZXQgZW5kX3BvcyA9IG1hdGNoX2VuZCAoKSBpblxuICAgICAgICBsZXQgcmVwbF90ZXh0ID0gcmVwbF9mdW4gdGV4dCBpblxuICAgICAgICByZXBsYWNlIChyZXBsX3RleHQgOjogU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgZW5kX3BvcyAoZW5kX3BvcyA9IHBvcylcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiAocmVwbGFjZSBbXSAwIGZhbHNlKSlcblxubGV0IGdsb2JhbF9yZXBsYWNlIGV4cHIgcmVwbCB0ZXh0ID1cbiAgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5hbmQgcmVwbGFjZV9maXJzdCBleHByIHJlcGwgdGV4dCA9XG4gIHN1YnN0aXR1dGVfZmlyc3QgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5cbmxldCBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyByZSBzIHAgPVxuICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgcmUgcyBwIGluXG4gIGlmIG1hdGNoX2VuZCAoKSA+IHAgdGhlblxuICAgIHBvc1xuICBlbHNlIGlmIHAgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIHNlYXJjaF9mb3J3YXJkIHJlIHMgKHAgKyAxKVxuICBlbHNlXG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgc3RhcnQgPVxuICAgIGlmIHN0cmluZ19tYXRjaCBleHByIHRleHQgMCB0aGVuIG1hdGNoX2VuZCAoKSBlbHNlIDAgaW5cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIHN0YXJ0IG51bSlcblxubGV0IHNwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IDBcblxubGV0IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIGlmIHRleHQgPSBcIlwiIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gICAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgc3BsaXRfZGVsaW0gZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgMFxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nIHwgRGVsaW0gb2Ygc3RyaW5nXG5cbmxldCBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBsZXQgcyA9IG1hdGNoZWRfc3RyaW5nIHRleHQgaW5cbiAgICAgICAgaWYgcG9zID4gc3RhcnQgdGhlblxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjpcbiAgICAgICAgICAgICAgICAgVGV4dCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3MgLSBzdGFydCkpIDo6XG4gICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6IGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBmdWxsX3NwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgMFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBlbmNsb3NlZCA9XG4gIHwgQ2hhciBvZiBjaGFyXG4gIHwgUmFuZ2Ugb2YgY2hhciAqIGNoYXJcblxudHlwZSBwaWVjZSA9XG4gIHwgRXhhY3RseSBvZiBjaGFyXG4gIHwgQW55X29mIG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBBbnlfYnV0IG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBPbmVcbiAgfCBNYW55XG4gIHwgTWFueU1hbnlcblxudHlwZSB0ID0gcGllY2UgbGlzdFxuXG5sZXQgb2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcyA6IHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHJlYWQgYyA9XG4gICAgbGV0IHIgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICAgIGlmIHIgdGhlbiBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gICgqKlxuICAgW3JlYWRfYWhlYWQgcGF0dGVybl0gd2lsbCBhdHRlbXB0IHRvIHJlYWQgW3BhdHRlcm5dIGFuZCB3aWxsIHJldHVybiBbdHJ1ZV0gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwuXG4gICBJZiBpdCBmYWlscywgaXQgd2lsbCByZXR1cm4gW2ZhbHNlXSBhbmQgbm90IGluY3JlbWVudCB0aGUgcmVhZCBpbmRleC5cbiAgKilcbiAgbGV0IHJlYWRfYWhlYWQgcGF0dGVybiA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIGluXG4gICAgKCogaWYgdGhlIHBhdHRlcm4gd2UgYXJlIGxvb2tpbmcgZm9yIGV4ZWVkcyB0aGUgcmVtYWluaW5nIGxlbmd0aCBvZiBzLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHkgKilcbiAgICBpZiAhaSArIHBhdHRlcm5fbGVuID49IGwgdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAwIHRvIHBhdHRlcm5fbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBmb3VuZCA9IG5vdCAoZW9zICgpKSAmJiBzLlshaSArIGpdID0gcGF0dGVybi5bal0gaW5cbiAgICAgICAgICBpZiBub3QgZm91bmQgdGhlbiByYWlzZV9ub3RyYWNlIEV4aXQ7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGkgOj0gIWkgKyBwYXR0ZXJuX2xlbjtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCB8IEV4aXQgIC0+IGZhbHNlXG4gIGluXG5cbiAgbGV0IGNoYXIgKCkgPVxuICAgIGlnbm9yZSAocmVhZCAnXFxcXCcgOiBib29sKTtcbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgciA9IHMuWyFpXSBpblxuICAgIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgbGV0IGVuY2xvc2VkICgpIDogZW5jbG9zZWQgbGlzdCA9XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgKCogVGhpcyByZXR1cm5zIHRoZSBsaXN0IGluIHJldmVyc2Ugb3JkZXIsIGJ1dCBvcmRlciBpc24ndCBpbXBvcnRhbnQgYW55d2F5ICopXG4gICAgICBpZiBzIDw+IFtdICYmIHJlYWQgJ10nXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICAgIGlmIG5vdCAocmVhZCAnLScpXG4gICAgICAgIHRoZW4gbG9vcCAoQ2hhciBjIDo6IHMpXG4gICAgICAgIGVsc2UgaWYgcmVhZCAnXSdcbiAgICAgICAgdGhlbiBDaGFyIGMgOjogQ2hhciAnLScgOjogc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGxvb3AgKFJhbmdlIChjLCBjJykgOjogcylcbiAgICBpblxuICAgIGxvb3AgW11cbiAgaW5cblxuICBsZXQgcGllY2UgKCkgPVxuICAgIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkX2FoZWFkIFwiLyoqXCIgJiYgbm90IChlb3MgKCkpXG4gICAgdGhlbiBNYW55TWFueVxuICAgIGVsc2UgaWYgcmVhZCAnKidcbiAgICB0aGVuIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkICcqJ1xuICAgICAgdGhlbiBNYW55TWFueVxuICAgICAgZWxzZSBNYW55XG4gICAgZWxzZSBpZiByZWFkICc/J1xuICAgIHRoZW4gT25lXG4gICAgZWxzZSBpZiBub3QgKHJlYWQgJ1snKVxuICAgIHRoZW4gRXhhY3RseSAoY2hhciAoKSlcbiAgICBlbHNlIGlmIHJlYWQgJ14nIHx8IHJlYWQgJyEnXG4gICAgdGhlbiBBbnlfYnV0IChlbmNsb3NlZCAoKSlcbiAgICBlbHNlIEFueV9vZiAoZW5jbG9zZWQgKCkpXG4gIGluXG5cbiAgbGV0IHJlYyBsb29wIHBpZWNlcyA9XG4gICAgaWYgZW9zICgpXG4gICAgdGhlbiBMaXN0LnJldiBwaWVjZXNcbiAgICBlbHNlIGxvb3AgKHBpZWNlICgpIDo6IHBpZWNlcylcbiAgaW5cblxuICBsb29wIFtdXG5cbmxldCBtdWwgbCBsJyA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biBzIC0+IExpc3QubWFwIChmdW4gcycgLT4gcyBeIHMnKSBsJykgbClcblxubGV0IGV4cGxvZGUgc3RyID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGV4cGwgaW5uZXIgcyBpIGFjYyBiZWcgPVxuICAgIGlmIGkgPj0gbCB0aGVuIGJlZ2luXG4gICAgICBpZiBpbm5lciB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0sIGkpXG4gICAgZW5kIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgfCAnXFxcXCcgLT4gZXhwbCBpbm5lciBzIChpICsgMikgYWNjIGJlZ1xuICAgICAgfCAneycgLT5cbiAgICAgICAgbGV0ICh0LCBpJykgPSBleHBsIHRydWUgKGkgKyAxKSAoaSArIDEpIFtdIFtcIlwiXSBpblxuICAgICAgICBleHBsIGlubmVyIGknIGknIGFjY1xuICAgICAgICAgIChtdWwgYmVnIChtdWwgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gdCkpXG4gICAgICB8ICcsJyB3aGVuIGlubmVyIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgKGkgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MpIFtcIlwiXVxuICAgICAgfCAnfScgd2hlbiBpbm5lciAtPlxuICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYywgaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgZXhwbCBpbm5lciBzIChpICsgMSkgYWNjIGJlZ1xuICBpblxuICBMaXN0LnJldiAoZnN0IChleHBsIGZhbHNlIDAgMCBbXSBbXCJcIl0pKVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlX3BpZWNlcyAgICAgICAgICAgICAgICA6IFJlLnQgbGlzdDsgICgqIGxhc3QgcGllY2UgYXQgaGVhZCBvZiBsaXN0LiAqKVxuICAgIHJlbWFpbmluZyAgICAgICAgICAgICAgICA6IHBpZWNlIGxpc3Q7ICgqIGxhc3QgcGllY2UgYXQgdGFpbCBvZiBsaXN0LiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gICA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiBvciBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyICcvJyAqKVxuICAgIHBhdGhuYW1lICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gICAgbWF0Y2hfYmFja3NsYXNoZXMgICAgICAgIDogYm9vbDtcbiAgICBwZXJpb2QgICAgICAgICAgICAgICAgICAgOiBib29sO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+cGVyaW9kIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgcmVtYWluaW5nID1cbiAgICB7XG4gICAgICByZV9waWVjZXMgPSBbXTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSB0cnVlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIHBhdGhuYW1lO1xuICAgICAgbWF0Y2hfYmFja3NsYXNoZXM7XG4gICAgICBwZXJpb2Q7XG4gICAgICByZW1haW5pbmc7XG4gICAgfVxuXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgdCA9XG4gICAgdC5wZXJpb2QgJiYgKFxuICAgICAgdC5hbV9hdF9zdGFydF9vZl9wYXR0ZXJuIHx8XG4gICAgICAodC5hbV9hdF9zdGFydF9vZl9jb21wb25lbnQgJiYgdC5wYXRobmFtZSlcbiAgICApXG5cbiAgbGV0IGV4cGxpY2l0X3NsYXNoIHQgPSB0LnBhdGhuYW1lXG5cbiAgbGV0IHNsYXNoZXMgdCA9XG4gICAgaWYgdC5tYXRjaF9iYWNrc2xhc2hlcyB0aGVuIFsnLyc7ICdcXFxcJ10gZWxzZSBbJy8nXVxuXG4gIGxldCBhcHBlbmQgPyhhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ9ZmFsc2UpIHQgcGllY2UgPVxuICAgIHsgdCB3aXRoXG4gICAgICByZV9waWVjZXMgPSBwaWVjZSA6OiB0LnJlX3BpZWNlcztcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSBmYWxzZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgbGV0IHRvX3JlIHQgPSBSZS5zZXEgKExpc3QucmV2IHQucmVfcGllY2VzKVxuXG4gIGxldCBuZXh0IHQgPVxuICAgIG1hdGNoIHQucmVtYWluaW5nIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHBpZWNlIDo6IHJlbWFpbmluZyAtPiBTb21lIChwaWVjZSwgeyB0IHdpdGggcmVtYWluaW5nIH0pXG5lbmRcblxubGV0IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCA9XG4gIFJlLmNvbXBsIChcbiAgICBMaXN0LmNvbmNhdCBbXG4gICAgICBpZiBleHBsaWNpdF9zbGFzaCAgdGhlbiBMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMgZWxzZSBbXTtcbiAgICAgIGlmIGV4cGxpY2l0X3BlcmlvZCB0aGVuIFtSZS5jaGFyICcuJ10gZWxzZSBbXTtcbiAgICBdXG4gIClcblxubGV0IGVuY2xvc2VkIGVuY2xvc2VkID1cbiAgbWF0Y2ggZW5jbG9zZWQgd2l0aFxuICB8IENoYXIgYyAtPiBSZS5jaGFyIGNcbiAgfCBSYW5nZSAobG93LCBoaWdoKSAtPiBSZS5yZyBsb3cgaGlnaFxuXG5sZXQgZW5jbG9zZWRfc2V0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGtpbmQgc2V0ID1cbiAgbGV0IHNldCA9IExpc3QubWFwIGVuY2xvc2VkIHNldCBpblxuICBsZXQgZW5jbG9zdXJlID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBbnlfb2YgLT4gUmUuYWx0IHNldFxuICAgIHwgYEFueV9idXQgLT4gUmUuY29tcGwgc2V0XG4gIGluXG4gIFJlLmludGVyIFtlbmNsb3N1cmU7IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZF1cblxubGV0IGV4YWN0bHkgc3RhdGUgYyA9XG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gTGlzdC5tZW0gYyBzbGFzaGVzIGluXG4gIGxldCBjaGFycyA9IGlmIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCB0aGVuIHNsYXNoZXMgZWxzZSBbY10gaW5cbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgY2hhcnMpKSB+YW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50XG5cbmxldCBtYW55X21hbnkgc3RhdGUgPVxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gc3RhdGUuU3RhdGUucGVyaW9kICYmIHN0YXRlLlN0YXRlLnBhdGhuYW1lIGluXG4gIGxldCBmaXJzdF9leHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCA9XG4gICAgUmUuc2VxIFtcbiAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICBdXG4gIGluXG4gICgqIFdlIG11c3QgbWF0Y2ggY29tcG9uZW50cyBpbmRpdmlkdWFsbHkgd2hlbiBbcGVyaW9kXSBmbGFnIGlzIHNldCxcbiAgICAgbWFraW5nIHN1cmUgdG8gbm90IG1hdGNoIFtcImZvby8uYmFyXCJdLiAqKVxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFxuICAgIFJlLnNlcSBbXG4gICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kOmZpcnN0X2V4cGxpY2l0X3BlcmlvZCk7XG4gICAgICBSZS5yZXAgKFxuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzKTtcbiAgICAgICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgICAgXVxuICAgICAgKTtcbiAgICBdKVxuXG5sZXQgbWFueSAoc3RhdGUgOiBTdGF0ZS50KSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gICgqIFdoZXRoZXIgd2UgbXVzdCBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZCBkZXBlbmRzIG9uIHRoZSBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBidXRcbiAgICAgc2xhc2hlcyBhcmUgZWFzeSB0byBleHBsaWNpdCBtYXRjaC4gVGhpcyBjb25kaXRpb25hbCBzcGxpdHMgb3V0IHNvbWUgc2ltcGxlIGNhc2VzLlxuICAqKVxuICBpZiBub3QgZXhwbGljaXRfcGVyaW9kIHRoZW4gYmVnaW5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKSlcbiAgZW5kIGVsc2UgaWYgbm90IGV4cGxpY2l0X3NsYXNoIHRoZW4gYmVnaW5cbiAgICAoKiBJbiB0aGlzIHN0YXRlLCB3ZSBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZHMgb25seSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgKilcbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLm9wdCAoXG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgICkpXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgbGV0IG5vdF9lbXB0eSA9XG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgIGluXG4gICAgKCogW21heWJlX2VtcHR5XSBpcyB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbiBvZiBNYW55LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLlxuICAgICopXG4gICAgbGV0IG1heWJlX2VtcHR5ID0gUmUub3B0IG5vdF9lbXB0eSBpblxuICAgIGxldCBlbmNsb3NlZF9zZXQgc3RhdGUga2luZCBzZXQgPVxuICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgW1xuICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIG5vdF9lbXB0eTtcbiAgICAgICAgICAoKiBTaW5jZSBbbm90X2VtcHR5XSBtYXRjaGVkLCBzdWJzZXF1ZW50IGRvdHMgYXJlIG5vdCBsZWFkaW5nLiAqKVxuICAgICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlO1xuICAgICAgICBdO1xuICAgICAgXSlcbiAgICBpblxuICAgIGxldCByZWMgbG9va2FoZWFkIHN0YXRlID1cbiAgICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBtYXliZV9lbXB0eVxuICAgICAgKCogZ2xvYiAqKiA9PT0gZ2xvYiAqIC4gKilcbiAgICAgIHwgU29tZSAoTWFueSwgc3RhdGUpIC0+IGxvb2thaGVhZCBzdGF0ZVxuICAgICAgfCBTb21lIChFeGFjdGx5IGMsIHN0YXRlKSAtPlxuICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZVxuICAgICAgICAgICAgKGlmIGMgPSAnLidcbiAgICAgICAgICAgICB0aGVuIG5vdF9lbXB0eVxuICAgICAgICAgICAgIGVsc2UgbWF5YmVfZW1wdHkpXG4gICAgICAgIGluXG4gICAgICAgIGV4YWN0bHkgc3RhdGUgY1xuICAgICAgKCogZ2xvYiAqPyA9PT0gZ2xvYiA/KiAqKVxuICAgICAgfCBTb21lIChPbmUsIHN0YXRlKSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbm90X2VtcHR5XG4gICAgICB8IFNvbWUgKEFueV9vZiBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X29mIGVuY2xvc2VkXG4gICAgICB8IFNvbWUgKEFueV9idXQgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9idXQgZW5jbG9zZWRcbiAgICAgICgqICogdGhlbiAqKiA9PT0gKiogKilcbiAgICAgIHwgU29tZSAoTWFueU1hbnksIHN0YXRlKSAtPiBtYW55X21hbnkgc3RhdGVcbiAgICBpblxuICAgIGxvb2thaGVhZCBzdGF0ZVxuICBlbmRcblxubGV0IHBpZWNlIHN0YXRlIHBpZWNlID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbWF0Y2ggcGllY2Ugd2l0aFxuICB8IE9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZClcbiAgfCBNYW55IC0+IG1hbnkgc3RhdGVcbiAgfCBBbnlfb2YgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X29mIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEFueV9idXQgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X2J1dCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBFeGFjdGx5IGMgLT4gZXhhY3RseSBzdGF0ZSBjXG4gIHwgTWFueU1hbnkgLT4gbWFueV9tYW55IHN0YXRlXG5cbmxldCBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RhdGUudG9fcmUgc3RhdGVcbiAgICB8IFNvbWUgKHAsIHN0YXRlKSAtPiBsb29wIChwaWVjZSBzdGF0ZSBwKVxuICBpblxuICBsb29wIChTdGF0ZS5jcmVhdGUgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IpXG5cbmxldCBnbG9iXG4gICAgICA/KGFuY2hvcmVkID0gZmFsc2UpXG4gICAgICA/KHBhdGhuYW1lID0gdHJ1ZSlcbiAgICAgID8obWF0Y2hfYmFja3NsYXNoZXMgPSBmYWxzZSlcbiAgICAgID8ocGVyaW9kID0gdHJ1ZSlcbiAgICAgID8oZXhwYW5kX2JyYWNlcyA9IGZhbHNlKVxuICAgICAgPyhkb3VibGVfYXN0ZXJpc2sgPSB0cnVlKVxuICAgICAgc1xuICA9XG4gIGxldCB0b19yZSBzID1cbiAgICBsZXQgcmUgPSBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCAob2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcykgaW5cbiAgICBpZiBhbmNob3JlZFxuICAgIHRoZW4gUmUud2hvbGVfc3RyaW5nIHJlXG4gICAgZWxzZSByZVxuICBpblxuICBpZiBleHBhbmRfYnJhY2VzXG4gIHRoZW4gUmUuYWx0IChMaXN0Lm1hcCB0b19yZSAoZXhwbG9kZSBzKSlcbiAgZWxzZSB0b19yZSBzXG5cbmxldCBnbG9iJyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+cGVyaW9kIHNcblxubGV0IGdsb2J4ID9hbmNob3JlZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSBzXG5cbmxldCBnbG9ieCcgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSB+cGVyaW9kIHNcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImFscGhhXCIgIC0+IFJlLmFscGhhXG4gIHwgXCJhbG51bVwiICAtPiBSZS5hbG51bVxuICB8IFwiYXNjaWlcIiAgLT4gUmUuYXNjaWlcbiAgfCBcImJsYW5rXCIgIC0+IFJlLmJsYW5rXG4gIHwgXCJjbnRybFwiICAtPiBSZS5jbnRybFxuICB8IFwiZGlnaXRcIiAgLT4gUmUuZGlnaXRcbiAgfCBcImxvd2VyXCIgIC0+IFJlLmxvd2VyXG4gIHwgXCJwcmludFwiICAtPiBSZS5wcmludFxuICB8IFwic3BhY2VcIiAgLT4gUmUuc3BhY2VcbiAgfCBcInVwcGVyXCIgIC0+IFJlLnVwcGVyXG4gIHwgXCJ3b3JkXCIgICAtPiBSZS53b3JkY1xuICB8IFwicHVuY3RcIiAgLT4gUmUucHVuY3RcbiAgfCBcImdyYXBoXCIgIC0+IFJlLmdyYXBoXG4gIHwgXCJ4ZGlnaXRcIiAtPiBSZS54ZGlnaXRcbiAgfCBjbGFzc18gICAtPiBpbnZhbGlkX2FyZyAoXCJJbnZhbGlkIHBjcmUgY2xhc3M6IFwiIF4gY2xhc3NfKVxuXG5sZXQgcG9zaXhfY2xhc3Nfc3RyaW5ncyA9XG4gIFsgXCJhbHBoYVwiIDsgXCJhbG51bVwiIDsgXCJhc2NpaVwiXG4gIDsgXCJibGFua1wiIDsgXCJjbnRybFwiIDsgXCJkaWdpdFwiXG4gIDsgXCJsb3dlclwiIDsgXCJwcmludFwiIDsgXCJzcGFjZVwiXG4gIDsgXCJ1cHBlclwiIDsgXCJ3b3JkXCIgIDsgXCJwdW5jdFwiXG4gIDsgXCJncmFwaFwiIDsgXCJ4ZGlnaXRcIiBdXG5cbmxldCBwYXJzZSBtdWx0aWxpbmUgZG9sbGFyX2VuZG9ubHkgZG90YWxsIHVuZ3JlZWR5IHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdF9zIHMnID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzJyBpblxuICAgIHRyeVxuICAgICAgZm9yIGogPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgdHJ5IGlmIHMnLltqXSA8PiBzLlshaSArIGpdIHRoZW4gcmFpc2UgRXhpdFxuICAgICAgICB3aXRoIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGkgOj0gIWkgKyBsZW47XG4gICAgICB0cnVlXG4gICAgd2l0aCBFeGl0IC0+IGZhbHNlIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG4gIGxldCBncmVlZHlfbW9kIHIgPVxuICAgIGxldCBnciA9IGFjY2VwdCAnPycgaW5cbiAgICBsZXQgZ3IgPSBpZiB1bmdyZWVkeSB0aGVuIG5vdCBnciBlbHNlIGdyIGluXG4gICAgaWYgZ3IgdGhlbiBSZS5ub25fZ3JlZWR5IHIgZWxzZSBSZS5ncmVlZHkgclxuICBpblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcDEgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBncmVlZHlfbW9kIChSZS5vcHQgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgZ3JlZWR5X21vZCAoUmUucmVwbiByIGkgailcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBkb3RhbGwgdGhlbiBSZS5hbnkgZWxzZSBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc/JyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIHJcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcjJyB0aGVuIGJlZ2luXG4gICAgICAgICAgY29tbWVudCAoKVxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWUgKCkgaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBSZS5ncm91cCB+bmFtZSByXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuZW9sIGVsc2UgaWYgZG9sbGFyX2VuZG9ubHkgdGhlbiBSZS5sZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbigqIFhYWFxuICAgLSBCYWNrLXJlZmVyZW5jZXNcbiAgIC0gXFxjeCAoY29udHJvbC14KSwgXFxkZGRcbiopXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd3JyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAnVycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAncycgLT5cbiAgICAgICAgICBSZS5zcGFjZVxuICAgICAgfCAnUycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuc3BhY2VdXG4gICAgICB8ICdkJyAtPlxuICAgICAgICAgIFJlLmRpZ2l0XG4gICAgICB8ICdEJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5kaWdpdF1cbiAgICAgIHwgJ2InIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIHwgJ0InIC0+XG4gICAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICB8ICdBJyAtPlxuICAgICAgICAgIFJlLmJvc1xuICAgICAgfCAnWicgLT5cbiAgICAgICAgICBSZS5sZW9sXG4gICAgICB8ICd6JyAtPlxuICAgICAgICAgIFJlLmVvc1xuICAgICAgfCAnRycgLT5cbiAgICAgICAgICBSZS5zdGFydFxuICAgICAgfCAnZScgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgxYidcbiAgICAgIHwgJ2YnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MGMnXG4gICAgICB8ICduJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcbidcbiAgICAgIHwgJ3InIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxyJ1xuICAgICAgfCAndCcgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHQnXG4gICAgICB8ICd4JyAtPlxuICAgICAgICAgIGxldCBjMSA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGMyID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgY29kZSA9IGMxICogMTYgKyBjMiBpblxuICAgICAgICAgIFJlLmNoYXIgKGNoYXJfb2ZfaW50IGNvZGUpXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIFJlLmNoYXIgY1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaGV4ZGlnaXQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ2EnLi4nZicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgJ0EnLi4nRicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgbmFtZSAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJykgYXMgYyAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDMyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgbmFtZScgYiA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknKSBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgJz4nIC0+IEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICB8IGBDaGFyIGMgLT5cbiAgICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgICAgICAgICBgQ2hhciBjJyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgICAgICB8IGBTZXQgc3QnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzdCcgOjogcylcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICAgIHwgYFNldCBzdCAtPiBicmFja2V0IChzdCA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuXG4gICAgICAgIGxldCBjb21wbCA9IGFjY2VwdCAnXicgaW5cbiAgICAgICAgbGV0IGNscyA9XG4gICAgICAgICAgdHJ5IExpc3QuZmluZCBhY2NlcHRfcyBwb3NpeF9jbGFzc19zdHJpbmdzXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgUGFyc2VfZXJyb3IgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHRfcyBcIjpdXCIpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCByZSA9XG4gICAgICAgICAgbGV0IHBvc2l4X2NsYXNzID0gcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nIGNscyBpblxuICAgICAgICAgIGlmIGNvbXBsIHRoZW4gUmUuY29tcGwgW3Bvc2l4X2NsYXNzXSBlbHNlIHBvc2l4X2NsYXNzIGluXG4gICAgICAgIGBTZXQgKHJlKVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGBDaGFyIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZSBpZiBjID0gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbigqIFhYWFxuICAgXFwxMjcsIC4uLlxuKilcbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnYicgLT4gYENoYXIgJ1xcMDA4J1xuICAgICAgfCAnbicgLT4gYENoYXIgJ1xcbicgKCpYWFgqKVxuICAgICAgfCAncicgLT4gYENoYXIgJ1xccicgKCpYWFgqKVxuICAgICAgfCAndCcgLT4gYENoYXIgJ1xcdCcgKCpYWFgqKVxuICAgICAgfCAndycgLT4gYFNldCAoUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAnVycgLT4gYFNldCAoUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdzJyAtPiBgU2V0IChSZS5zcGFjZSlcbiAgICAgIHwgJ1MnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5zcGFjZV0pXG4gICAgICB8ICdkJyAtPiBgU2V0IChSZS5kaWdpdClcbiAgICAgIHwgJ0QnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5kaWdpdF0pXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZVxuICAgICAgYENoYXIgY1xuICBhbmQgY29tbWVudCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgaWYgYWNjZXB0ICcpJyB0aGVuIFJlLmVwc2lsb24gZWxzZSBiZWdpbiBpbmNyIGk7IGNvbW1lbnQgKCkgZW5kXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9XG4gIFsgYFVuZ3JlZWR5IHwgYERvdGFsbCB8IGBEb2xsYXJfZW5kb25seVxuICB8IGBNdWx0aWxpbmUgfCBgQW5jaG9yZWQgfCBgQ2FzZWxlc3MgXVxuXG5sZXQgcmUgID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPVxuICAgIHBhcnNlXG4gICAgICAoTGlzdC5tZW1xIGBNdWx0aWxpbmUgb3B0cykgKExpc3QubWVtcSBgRG9sbGFyX2VuZG9ubHkgb3B0cylcbiAgICAgIChMaXN0Lm1lbXEgYERvdGFsbCBvcHRzKSAoTGlzdC5tZW1xIGBVbmdyZWVkeSBvcHRzKVxuICAgICAgc1xuICBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQW5jaG9yZWQgb3B0cyB0aGVuIFJlLnNlcSBbUmUuc3RhcnQ7IHJdIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQ2FzZWxlc3Mgb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCJtb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBlcmwuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkID0gUGVybC5Ob3Rfc3VwcG9ydGVkXG5cbnR5cGUgcmVnZXhwID0gUmUucmVcblxudHlwZSBmbGFnID0gWyBgQ0FTRUxFU1MgfCBgTVVMVElMSU5FIHwgYEFOQ0hPUkVEIHwgYERPVEFMTCBdXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID1cbiAgfCBUZXh0ICBvZiBzdHJpbmdcbiAgfCBEZWxpbSBvZiBzdHJpbmdcbiAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmdcbiAgfCBOb0dyb3VwXG5cbnR5cGUgZ3JvdXBzID0gQ29yZS5Hcm91cC50XG5cbmxldCByZSA/KGZsYWdzID0gW10pIHBhdCA9XG4gIGxldCBvcHRzID0gTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgfCBgQ0FTRUxFU1MgLT4gYENhc2VsZXNzXG4gICAgfCBgTVVMVElMSU5FIC0+IGBNdWx0aWxpbmVcbiAgICB8IGBBTkNIT1JFRCAtPiBgQW5jaG9yZWRcbiAgICB8IGBET1RBTEwgLT4gYERvdGFsbFxuICApIGZsYWdzIGluXG4gIFBlcmwucmUgfm9wdHMgcGF0XG5cbmxldCByZWdleHAgP2ZsYWdzIHBhdCA9IFJlLmNvbXBpbGUgKHJlID9mbGFncyBwYXQpXG5cbmxldCBleHRyYWN0IH5yZXggcyA9XG4gIFJlLkdyb3VwLmFsbCAoUmUuZXhlYyByZXggcylcblxubGV0IGV4ZWMgfnJleCA/cG9zIHMgPVxuICBSZS5leGVjIHJleCA/cG9zIHNcblxubGV0IGdldF9zdWJzdHJpbmcgcyBpID1cbiAgUmUuR3JvdXAuZ2V0IHMgaVxuXG5sZXQgbmFtZXMgcmV4ID1cbiAgUmUuZ3JvdXBfbmFtZXMgcmV4XG4gIHw+IExpc3QubWFwIGZzdFxuICB8PiBBcnJheS5vZl9saXN0XG5cbmxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHMgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCAobiwgaSkgOjogcmVtIHdoZW4gbiA9IG5hbWUgLT5cbiAgICAgICBiZWdpblxuICAgICAgICAgdHJ5IGdldF9zdWJzdHJpbmcgcyBpXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBsb29wIHJlbVxuICAgICAgIGVuZFxuICAgIHwgXyA6OiByZW0gLT4gbG9vcCByZW1cbiAgaW5cbiAgbG9vcCAoUmUuZ3JvdXBfbmFtZXMgcmV4KVxuXG5sZXQgZ2V0X3N1YnN0cmluZ19vZnMgcyBpID1cbiAgUmUuR3JvdXAub2Zmc2V0IHMgaVxuXG5sZXQgcG1hdGNoIH5yZXggcyA9XG4gIFJlLmV4ZWNwIHJleCBzXG5cbmxldCBzdWJzdGl0dXRlIH5yZXggfnN1YnN0IHN0ciA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBwYXQgPSBSZS5Hcm91cC5nZXQgc3MgMCBpblxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChzdGFydCAtIHBvcyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdWJzdCBwYXQpO1xuICAgICAgbG9vcCBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcyk7XG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgfnJleCBzdHIgPVxuICBsZXQgcmVjIGxvb3AgYWNjdSBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBMaXN0LnJldiBhY2N1XG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKSBpblxuICBsb29wIFtdIDBcblxuKCogRnJvbSBQQ1JFICopXG5sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgcyBvZnMgbGVuID1cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIEJ5dGVzLnVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgclxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgIHwgJ1xcXFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnXG4gICAgfCAnKCcgIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcXFwnO1xuICAgICAgaW5jciBwb3M7XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gICAgfCBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgZG9uZTtcbiAgc3RyaW5nX3Vuc2FmZV9zdWIgYnVmIDAgIXBvc1xuXG5sZXQgZnVsbF9zcGxpdCA/KG1heD0wKSB+cmV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAwIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQgc11cbiAgZWxzZVxuICAgIGxldCByZXN1bHRzID0gUmUuc3BsaXRfZnVsbCByZXggcyBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIExpc3QubWFwIChmdW5jdGlvblxuICAgICAgICB8IGBUZXh0IHMgLT4gW1RleHQgc11cbiAgICAgICAgfCBgRGVsaW0gZCAtPlxuICAgICAgICAgIGxldCBtYXRjaGVzID0gUmUuR3JvdXAuYWxsX29mZnNldCBkIGluXG4gICAgICAgICAgbGV0IGRlbGltID0gUmUuR3JvdXAuZ2V0IGQgMCBpblxuICAgICAgICAgIChEZWxpbSBkZWxpbSk6OihcbiAgICAgICAgICAgIGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIG1hdGNoZXMgLSAxIGRvXG4gICAgICAgICAgICAgIGwgOj1cbiAgICAgICAgICAgICAgICAoaWYgbWF0Y2hlcy4oaSkgPSAoLTEsIC0xKVxuICAgICAgICAgICAgICAgICB0aGVuIE5vR3JvdXBcbiAgICAgICAgICAgICAgICAgZWxzZSBHcm91cCAoaSwgUmUuR3JvdXAuZ2V0IGQgaSkpXG4gICAgICAgICAgICAgICAgOjooIWwpXG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgTGlzdC5yZXYgIWwpKSByZXN1bHRzIGluXG4gICAgTGlzdC5jb25jYXQgbWF0Y2hlc1xuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbigqXG5XaGF0IHdlIGNvdWxkIChzaG91bGQ/KSBkbzpcbi0gYSogPT0+IGxvbmdlc3QgKChzaG9ydGVzdCAobm9fZ3JvdXAgYSkqICksIGEgfCAoKSkgICghISEpXG4tIGFiYyB1bmRlcnN0b29kIGFzIChhYiljXG4tIFwiKChhPyl8YilcIiBhZ2FpbnN0IFwiYWJcIiBzaG91bGQgbm90IGJpbmQgdGhlIGZpcnN0IHN1YnBhdHRlcm4gdG8gYW55dGhpbmdcblxuTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBoYW5kbGUgXCIoKChhYiljKWQpZVwiIGVmZmljaWVudGx5XG4qKVxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBuZXdsaW5lIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBSZS5yZXBuIChSZS5uZXN0IHIpIGkgalxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ub3RubCBlbHNlIFJlLmFueVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIFJlLmdyb3VwIHJcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmRpZmYgKFJlLmNvbXBsIChicmFja2V0IFtdKSkgKFJlLmNoYXIgJ1xcbicpXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnfCcgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnPydcbiAgICAgIHwgJ1snIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ3snIHwgJ1xcXFwnIGFzIGMgLT4gUmUuY2hhciBjXG4gICAgICB8ICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZCAoKlhYWCopXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGNcbiAgICBlbmQgZWxzZVxuICAgICAgY1xuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPSBbYElDYXNlIHwgYE5vU3ViIHwgYE5ld2xpbmVdXG5cbmxldCByZSA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID0gcGFyc2UgKExpc3QubWVtcSBgTmV3bGluZSBvcHRzKSBzIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBJQ2FzZSBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgTm9TdWIgb3B0cyB0aGVuIFJlLm5vX2dyb3VwIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgcmUgPSBSZS5jb21waWxlIChSZS5sb25nZXN0IHJlKVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGlzIG1vZHVsZSBvZmZlcnMgYSB1bmlvbi1maW5kIGRhdGEgc3RydWN0dXJlIGJhc2VkIG9uIGRpc2pvaW50IHNldFxuICAgZm9yZXN0cywgd2l0aCBwYXRoIGNvbXByZXNzaW9uIGFuZCBsaW5raW5nIGJ5IHJhbmsuICopXG5cbm9wZW4gU3RvcmVcblxubW9kdWxlIE1ha2UgKFMgOiBTVE9SRSkgPSBzdHJ1Y3RcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHJhbmsgb2YgYSB2ZXJ0ZXggaXMgdGhlIG1heGltdW0gbGVuZ3RoLCBpbiBlZGdlcywgb2YgYW4gdW5jb21wcmVzc2VkIHBhdGhcbiAgIHRoYXQgbGVhZHMgdG8gdGhpcyB2ZXJ0ZXguIEluIG90aGVyIHdvcmRzLCB0aGUgcmFuayBvZiBbeF0gaXMgdGhlIGhlaWdodCBvZlxuICAgdGhlIHRyZWUgcm9vdGVkIGF0IFt4XSB0aGF0IHdvdWxkIGV4aXN0IGlmIHdlIGRpZCBub3QgcGVyZm9ybSBwYXRoXG4gICBjb21wcmVzc2lvbi4gKilcblxudHlwZSByYW5rID1cbiAgaW50XG5cbigqIFRoZSBjb250ZW50IG9mIGEgdmVydGV4IGlzIGEgcG9pbnRlciB0byBhIHBhcmVudCB2ZXJ0ZXggKGlmIHRoZSB2ZXJ0ZXhcbiAgIGhhcyBhIHBhcmVudCkgb3IgYSBwYWlyIG9mIGEgcmFuayBhbmQgYSB1c2VyIHZhbHVlIChpZiB0aGUgdmVydGV4IGhhcyBub1xuICAgcGFyZW50LCBhbmQgaXMgdGh1cyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IGZvciB0aGlzIGVxdWl2YWxlbmNlXG4gICBjbGFzcykuICopXG5cbigqIEluIHRoaXMgdmVyc2lvbiB0aGUgY29kZSwgdGhlIHR5cGUgWydhIGNvbnRlbnRdIG11c3Qgbm90IG11dGFibGUuIEluZGVlZCxcbiAgIGV2ZXJ5IG11dGF0aW9uIG11c3QgYmUgcGVyZm9ybWVkIHZpYSBbUy5zZXRdLiAqKVxuXG50eXBlICdhIGNvbnRlbnQgPVxufCBMaW5rIG9mICdhIHJyZWZcbnwgUm9vdCBvZiByYW5rICogJ2FcblxuKCogVGhlIHR5cGUgWydhIHJyZWZdIHJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUuICopXG5cbmFuZCAnYSBycmVmID1cbiAgJ2EgY29udGVudCBTLnJyZWZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHR5cGUgb2Ygc3RvcmVzLCBhbmQgdGhlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhIG5ldyBzdG9yZSwgYXJlIHRob3NlXG4gICBvZiB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBbU10uICopXG5cbnR5cGUgJ2Egc3RvcmUgPVxuICAnYSBjb250ZW50IFMuc3RvcmVcblxubGV0IG5ld19zdG9yZSA6IHVuaXQgLT4gJ2Egc3RvcmUgPVxuICBTLm5ld19zdG9yZVxuXG5sZXQgY29weSA6ICdhIHN0b3JlIC0+ICdhIHN0b3JlID1cbiAgUy5jb3B5XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFttYWtlIHMgdl0gY3JlYXRlcyBhIG5ldyByb290IG9mIHJhbmsgemVyby4gKilcblxubGV0IG1ha2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgUy5tYWtlIHMgKFJvb3QgKDAsIHYpKVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZmluZCBzIHhdIGZpbmRzIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXggb2YgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIG9mIFt4XS5cbiAgIEl0IGRvZXMgYnkgZm9sbG93aW5nIHRoZSBwYXRoIGZyb20gW3hdIHRvIHRoZSByb290LiBQYXRoIGNvbXByZXNzaW9uIGlzXG4gICBwZXJmb3JtZWQgKG9uIHRoZSB3YXkgYmFjaykgYnkgbWFraW5nIGV2ZXJ5IHZlcnRleCBhbG9uZyB0aGUgcGF0aCBhXG4gICBkaXJlY3QgY2hpbGQgb2YgdGhlIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gTm8gcmFuayBpcyBhbHRlcmVkLiAqKVxuXG5sZXQgcmVjIGZpbmQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKF8sIF8pIC0+XG4gICAgICB4XG4gIHwgTGluayB5IC0+XG4gICAgICBsZXQgeiA9IGZpbmQgcyB5IGluXG4gICAgICBpZiBTLmVxIHMgeSB6IHRoZW5cbiAgICAgICAgelxuICAgICAgZWxzZVxuICAgICAgICBsZXQgbGlua190b196ID0gUy5nZXQgcyB5IGluXG4gICAgICAgIFMuc2V0IHMgeCBsaW5rX3RvX3o7XG4gICAgICAgIHpcblxubGV0IGlzX3JlcHJlc2VudGF0aXZlIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiBib29sID1cbiAgbWF0Y2ggUy5nZXQgcyB4IHdpdGhcbiAgfCBSb290IF8gLT5cbiAgICAgIHRydWVcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtlcSBzIHggeV0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB2ZXJ0aWNlcyBbeF0gYW5kIFt5XSBiZWxvbmcgaW4gdGhlIHNhbWVcbiAgIGVxdWl2YWxlbmNlIGNsYXNzLiBJdCBkb2VzIHNvIHZpYSB0d28gY2FsbHMgdG8gW2ZpbmRdIGFuZCBhIHBoeXNpY2FsXG4gICBlcXVhbGl0eSB0ZXN0LiBBcyBhIGZhc3QgcGF0aCwgd2UgZmlyc3QgdGVzdCB3aGV0aGVyIFt4XSBhbmQgW3ldIGFyZVxuICAgcGh5c2ljYWxseSBlcXVhbC4gKilcblxubGV0IGVxIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICBTLmVxIHMgeCB5IHx8IFMuZXEgcyAoZmluZCBzIHgpIChmaW5kIHMgeSlcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2dldF8gcyB4XSByZXR1cm5zIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG5sZXQgZ2V0XyAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBsZXQgeCA9IGZpbmQgcyB4IGluXG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgdikgLT5cbiAgICAgIHZcbiAgfCBMaW5rIF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiBbZ2V0IHMgeF0gcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxuKCogQnkgbm90IGNhbGxpbmcgW2ZpbmRdIGltbWVkaWF0ZWx5LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIHRoZVxuICAgcGF0aCBvdXQgb2YgW3hdIGhhcyBsZW5ndGggMCBvciAxLCBhdCB0aGUgZXhwZW5zZSBvZiB0aGUgZ2VuZXJhbCBjYXNlLlxuICAgVGh1cywgd2UgY2FsbCBbZmluZF0gb25seSBpZiBwYXRoIGNvbXByZXNzaW9uIG11c3QgYmUgcGVyZm9ybWVkLiAqKVxuXG5sZXQgZ2V0IChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiAnYSA9XG4gIG1hdGNoIFMuZ2V0IHMgeCB3aXRoXG4gIHwgUm9vdCAoXywgdikgLT5cbiAgICAgIHZcbiAgfCBMaW5rIHkgLT5cbiAgICAgIG1hdGNoIFMuZ2V0IHMgeSB3aXRoXG4gICAgICB8IFJvb3QgKF8sIHYpIC0+XG4gICAgICAgICAgdlxuICAgICAgfCBMaW5rIF8gLT5cbiAgICAgICAgICBnZXRfIHMgeFxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbc2V0XyBzIHhdIHVwZGF0ZXMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBzZXRfIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHYgOiAnYSkgOiB1bml0ID1cbiAgbGV0IHggPSBmaW5kIHMgeCBpblxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICBTLnNldCBzIHggKFJvb3QgKHIsIHYpKVxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIFtzZXQgcyB4XSB1cGRhdGVzIHRoZSB2YWx1ZSBzdG9yZWQgYXQgW3hdJ3MgcmVwcmVzZW50YXRpdmUgdmVydGV4LiAqKVxuXG4oKiBCeSBub3QgY2FsbGluZyBbZmluZF0gaW1tZWRpYXRlbHksIHdlIG9wdGltaXplIHRoZSBjb21tb24gY2FzZXMgd2hlcmUgdGhlXG4gICBwYXRoIG91dCBvZiBbeF0gaGFzIGxlbmd0aCAwIG9yIDEsIGF0IHRoZSBleHBlbnNlIG9mIHRoZSBnZW5lcmFsIGNhc2UuXG4gICBUaHVzLCB3ZSBjYWxsIFtmaW5kXSBvbmx5IGlmIHBhdGggY29tcHJlc3Npb24gbXVzdCBiZSBwZXJmb3JtZWQuICopXG5cbmxldCBzZXQgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAodiA6ICdhKSA6IHVuaXQgPVxuICBtYXRjaCBTLmdldCBzIHggd2l0aFxuICB8IFJvb3QgKHIsIF8pIC0+XG4gICAgICBTLnNldCBzIHggKFJvb3QgKHIsIHYpKVxuICB8IExpbmsgeSAtPlxuICAgICAgbWF0Y2ggUy5nZXQgcyB5IHdpdGhcbiAgICAgIHwgUm9vdCAociwgXykgLT5cbiAgICAgICAgICBTLnNldCBzIHkgKFJvb3QgKHIsIHYpKVxuICAgICAgfCBMaW5rIF8gLT5cbiAgICAgICAgICBzZXRfIHMgeCB2XG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFt1bmlvbiBzIHggeV0gbWVyZ2VzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzIG9mIFt4XSBhbmQgW3ldIGJ5IGluc3RhbGxpbmcgYVxuICAgbGluayBmcm9tIG9uZSByb290IHZlcnRleCB0byB0aGUgb3RoZXIuICopXG5cbigqIExpbmtpbmcgaXMgYnkgcmFuazogdGhlIHNtYWxsZXItcmFua2VkIHZlcnRleCBpcyBtYWRlIHRvIHBvaW50IHRvIHRoZVxuICAgbGFyZ2VyLiBJZiB0aGUgdHdvIHZlcnRpY2VzIGhhdmUgdGhlIHNhbWUgcmFuaywgdGhlbiBhbiBhcmJpdHJhcnkgY2hvaWNlXG4gICBpcyBtYWRlLCBhbmQgdGhlIHJhbmsgb2YgdGhlIG5ldyByb290IGlzIGluY3JlbWVudGVkIGJ5IG9uZS4gKilcblxubGV0IHVuaW9uIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6ICdhIHJyZWYgPVxuICBsZXQgeCA9IGZpbmQgcyB4XG4gIGFuZCB5ID0gZmluZCBzIHkgaW5cbiAgaWYgUy5lcSBzIHggeSB0aGVuIHggZWxzZVxuICAgIG1hdGNoIFMuZ2V0IHMgeCwgUy5nZXQgcyB5IHdpdGhcbiAgICB8IFJvb3QgKHJ4LCB2eCksIFJvb3QgKHJ5LCBfKSAtPlxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHggKExpbmsgeSk7IHlcbiAgICAgICAgZW5kXG4gICAgICAgIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpOyB4XG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgUy5zZXQgcyB5IChMaW5rIHgpO1xuICAgICAgICAgIFMuc2V0IHMgeCAoUm9vdCAocnggKyAxLCB2eCkpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kXG4gICAgfCBSb290IF8sIExpbmsgX1xuICAgIHwgTGluayBfLCBSb290IF9cbiAgICB8IExpbmsgXywgTGluayBfIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbbWVyZ2VdIGlzIGFuYWxvZ291cyB0byBbdW5pb25dLCBidXQgaW52b2tlcyBhIHVzZXItc3BlY2lmaWVkIGZ1bmN0aW9uIFtmXVxuICAgdG8gY29tcHV0ZSB0aGUgbmV3IHZhbHVlIFt2XSBhc3NvY2lhdGVkIHdpdGggdGhlIGVxdWl2YWxlbmNlIGNsYXNzLiAqKVxuXG4oKiBUaGUgZnVuY3Rpb24gW2ZdIG11c3Qgbm90IGFmZmVjdCB0aGUgdW5pb24tZmluZCBkYXRhIHN0cnVjdHVyZSBieSBtYWtpbmdcbiAgIHJlLWVudHJhbnQgY2FsbHMgdG8gW3NldF0sIFt1bmlvbl0sIG9yIFttZXJnZV0uIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3JcbiAgIHRoaXMuIEZpcnN0LCBbZl0gbWF5IGJlIGludm9rZWQgYXQgYSB0aW1lIHdoZW4gdGhlIGludmFyaWFudCBvZiB0aGUgZGF0YVxuICAgc3RydWN0dXJlIGlzIHRlbXBvcmFyaWx5IHZpb2xhdGVkOiBpbiB0aGUgdGhpcmQgYnJhbmNoIGJlbG93LCB0aGUgcmFuayBvZlxuICAgW3hdIGhhcyBub3QgeWV0IGJlZW4gaW5jcmVhc2VkIHdoZW4gW2ZdIGlzIGludm9rZWQuIFNlY29uZCwgbW9yZSBzZXJpb3VzbHksXG4gICBpZiBbZl0gY291bGQgY2FsbCwgc2F5LCBbdW5pb25dLCB0aGVuIHRoYXQgY291bGQgY2hhbmdlIGEgW1Jvb3RdIGludG8gYVxuICAgW0xpbmtdLCBzbyB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCBjaGFuZ2UgYSBbTGlua11cbiAgIGJhY2sgaW50byBhIFtSb290XSwgc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbWFrZSBhbnkgc2Vuc2UuIEFsc28sIGlmIFtmXVxuICAgY291bGQgY2FsbCBbc2V0XSwgdGhlbiB0aGUgd3JpdGUgdGhhdCBmb2xsb3dzIHRoZSBjYWxsIHRvIFtmXSBtaWdodCB1bmRvXG4gICB0aGUgZWZmZWN0IG9mIHRoaXMgW3NldF0gb3BlcmF0aW9uOyB0aGlzIGFsc28gZG9lcyBub3QgbWFrZSBzZW5zZS4gKilcblxuKCogVGhlIHRlc3RzIFtpZiB2ICE9IHZ5IHRoZW4gLi4uXSBhbmQgW2lmIHYgIT0gdnggdGhlbiAuLi5dIGFyZSBpbnRlbmRlZCB0b1xuICAgc2F2ZSBhbiBhbGxvY2F0aW9uIGFuZCBhIHdyaXRlIHdoZW4gcG9zc2libGUuICopXG5cbigqIFdlIGludm9rZSBbZl0gYmVmb3JlIHBlcmZvcm1pbmcgYW55IHVwZGF0ZSwgc28gdGhhdCBpZiBbZl0gZmFpbHNcbiAgIChieSByYWlzaW5nIGFuIGV4Y2VwdGlvbiksIHRoZSBzdGF0ZSBpcyB1bmFmZmVjdGVkLiAqKVxuXG5sZXQgbWVyZ2UgcyAoZiA6ICdhIC0+ICdhIC0+ICdhKSAoeCA6ICdhIHJyZWYpICh5IDogJ2EgcnJlZikgOiAnYSBycmVmID1cbiAgbGV0IHggPSBmaW5kIHMgeFxuICBhbmQgeSA9IGZpbmQgcyB5IGluXG4gIGlmIFMuZXEgcyB4IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCBTLmdldCBzIHgsIFMuZ2V0IHMgeSB3aXRoXG4gICAgfCBSb290IChyeCwgdngpLCBSb290IChyeSwgdnkpIC0+XG4gICAgICAgIGxldCB2ID0gZiB2eCB2eSBpblxuICAgICAgICBpZiByeCA8IHJ5IHRoZW4gYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHggKExpbmsgeSk7XG4gICAgICAgICAgaWYgdiAhPSB2eSB0aGVuIFMuc2V0IHMgeSAoUm9vdCAocnksIHYpKTtcbiAgICAgICAgICB5XG4gICAgICAgIGVuZCBlbHNlIGlmIHJ4ID4gcnkgdGhlbiBiZWdpblxuICAgICAgICAgIFMuc2V0IHMgeSAoTGluayB4KTtcbiAgICAgICAgICBpZiB2ICE9IHZ4IHRoZW4gUy5zZXQgcyB4IChSb290IChyeCwgdikpO1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBTLnNldCBzIHkgKExpbmsgeCk7XG4gICAgICAgICAgUy5zZXQgcyB4IChSb290IChyeCsxLCB2KSk7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoaXMgbW9kdWxlIG9mZmVycyBhIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYmFzZWQgb24gZGlzam9pbnQgc2V0XG4gICBmb3Jlc3RzLCB3aXRoIHBhdGggY29tcHJlc3Npb24gYW5kIGxpbmtpbmcgYnkgcmFuay4gKilcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogVGhlIHJhbmsgb2YgYSB2ZXJ0ZXggaXMgdGhlIG1heGltdW0gbGVuZ3RoLCBpbiBlZGdlcywgb2YgYW4gdW5jb21wcmVzc2VkIHBhdGhcbiAgIHRoYXQgbGVhZHMgdG8gdGhpcyB2ZXJ0ZXguIEluIG90aGVyIHdvcmRzLCB0aGUgcmFuayBvZiBbeF0gaXMgdGhlIGhlaWdodCBvZlxuICAgdGhlIHRyZWUgcm9vdGVkIGF0IFt4XSB0aGF0IHdvdWxkIGV4aXN0IGlmIHdlIGRpZCBub3QgcGVyZm9ybSBwYXRoXG4gICBjb21wcmVzc2lvbi4gKilcblxudHlwZSByYW5rID1cbiAgaW50XG5cbigqIFRoZSBjb250ZW50IG9mIGEgdmVydGV4IGlzIGEgcG9pbnRlciB0byBhIHBhcmVudCB2ZXJ0ZXggKGlmIHRoZSB2ZXJ0ZXhcbiAgIGhhcyBhIHBhcmVudCkgb3IgYSBwYWlyIG9mIGEgcmFuayBhbmQgYSB1c2VyIHZhbHVlIChpZiB0aGUgdmVydGV4IGhhcyBub1xuICAgcGFyZW50LCBhbmQgaXMgdGh1cyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IGZvciB0aGlzIGVxdWl2YWxlbmNlXG4gICBjbGFzcykuICopXG5cbigqIFdlIG1ha2UgdGhlIHR5cGUgWydhIGNvbnRlbnRdIG11dGFibGUsIGFuZCB3ZSBtYWludGFpbiB0aGUgcHJvcGVydHkgdGhhdFxuICAgZXZlcnkgdmVydGV4IHVuaXF1ZWx5IG93bnMgaXRzIGNvbnRlbnQuIFRoaXMgYWxsb3dzIHVzIHRvIHVwZGF0ZSBhIGNvbnRlbnRcbiAgIGluIHBsYWNlIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIG5ldyBjb250ZW50IGFuZCB1cGRhdGluZyB0aGUgdmVydGV4IHdpdGhcbiAgIHRoaXMgbmV3IGNvbnRlbnQuXG5cbiAgIFdlIG9idGFpbiB0aGUgcHJvcGVydHkgdGhhdDpcbiAgIC0gb25seSBbbWFrZV0gYWxsb2NhdGVzIGEgbmV3IHZlcnRleCAoYSByZWZlcmVuY2UgYW5kIGEgW1Jvb3RdIGNvbnRlbnQpO1xuICAgLSBvbmx5IFt1bmlvbl0gYW5kIFttZXJnZV0gYWxsb2NhdGUgYSBuZXcgZWRnZSAoYSBbTGlua10gY29udGVudCkuXG4gICBbZmluZF0sIFtnZXRdLCBbc2V0XSwgW2VxXSBhbGxvY2F0ZSBubyBtZW1vcnkuICopXG5cbnR5cGUgJ2EgY29udGVudCA9XG58IExpbmsgb2YgeyBtdXRhYmxlIHBhcmVudCA6ICdhIGVsZW0gfVxufCBSb290IG9mIHsgbXV0YWJsZSByYW5rIDogcmFuazsgbXV0YWJsZSB2YWx1ZSA6ICdhIH1cblxuKCogVGhlIHR5cGUgWydhIGVsZW1dIHJlcHJlc2VudHMgYSB2ZXJ0ZXggaW4gdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUuICopXG5cbmFuZCAnYSBlbGVtID1cbiAgJ2EgY29udGVudCByZWZcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21ha2Ugdl0gY3JlYXRlcyBhIG5ldyByb290IG9mIHJhbmsgemVyby4gKilcblxubGV0IG1ha2UgKHYgOiAnYSkgOiAnYSBlbGVtID1cbiAgcmVmIChSb290IHsgcmFuayA9IDA7IHZhbHVlID0gdiB9KVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZmluZCB4XSBmaW5kcyB0aGUgcmVwcmVzZW50YXRpdmUgdmVydGV4IG9mIHRoZSBlcXVpdmFsZW5jZSBjbGFzcyBvZiBbeF0uXG4gICBJdCBkb2VzIHNvIGJ5IGZvbGxvd2luZyB0aGUgcGF0aCBmcm9tIFt4XSB0byB0aGUgcm9vdC4gUGF0aCBjb21wcmVzc2lvbiBpc1xuICAgcGVyZm9ybWVkIChvbiB0aGUgd2F5IGJhY2spIGJ5IG1ha2luZyBldmVyeSB2ZXJ0ZXggYWxvbmcgdGhlIHBhdGggYVxuICAgZGlyZWN0IGNoaWxkIG9mIHRoZSByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguIE5vIHJhbmsgaXMgYWx0ZXJlZC4gKilcblxubGV0IHJlYyBmaW5kICh4IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgeFxuICB8IExpbmsgKHsgcGFyZW50ID0geSB9IGFzIGxpbmspIC0+XG4gICAgICBsZXQgeiA9IGZpbmQgeSBpblxuICAgICAgaWYgeiAhPSB5IHRoZW5cbiAgICAgICAgbGluay5wYXJlbnQgPC0gejtcbiAgICAgIHpcblxubGV0IGlzX3JlcHJlc2VudGF0aXZlICh4IDogJ2EgZWxlbSkgOiBib29sID1cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgXyAtPlxuICAgICAgdHJ1ZVxuICB8IExpbmsgXyAtPlxuICAgICAgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW2VxIHggeV0gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB2ZXJ0aWNlcyBbeF0gYW5kIFt5XSBiZWxvbmcgaW4gdGhlXG4gICBzYW1lIGVxdWl2YWxlbmNlIGNsYXNzLiBJdCBkb2VzIHNvIHZpYSB0d28gY2FsbHMgdG8gW2ZpbmRdIGFuZCBhXG4gICBwaHlzaWNhbCBlcXVhbGl0eSB0ZXN0LiBBcyBhIGZhc3QgcGF0aCwgd2UgZmlyc3QgdGVzdCB3aGV0aGVyIFt4XVxuICAgYW5kIFt5XSBhcmUgcGh5c2ljYWxseSBlcXVhbC4gKilcblxubGV0IGVxICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6IGJvb2wgPVxuICB4ID09IHkgfHwgZmluZCB4ID09IGZpbmQgeVxuXG4oKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKVxuXG4oKiBbZ2V0IHhdIHJldHVybnMgdGhlIHZhbHVlIHN0b3JlZCBhdCBbeF0ncyByZXByZXNlbnRhdGl2ZSB2ZXJ0ZXguICopXG5cbmxldCBnZXQgKHggOiAnYSBlbGVtKSA6ICdhID1cbiAgbGV0IHggPSBmaW5kIHggaW5cbiAgbWF0Y2ggIXggd2l0aFxuICB8IFJvb3QgeyB2YWx1ZSA9IHY7IF8gfSAtPlxuICAgICAgdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFtzZXQgeF0gdXBkYXRlcyB0aGUgdmFsdWUgc3RvcmVkIGF0IFt4XSdzIHJlcHJlc2VudGF0aXZlIHZlcnRleC4gKilcblxubGV0IHNldCAoeCA6ICdhIGVsZW0pICh2IDogJ2EpIDogdW5pdCA9XG4gIGxldCB4ID0gZmluZCB4IGluXG4gIG1hdGNoICF4IHdpdGhcbiAgfCBSb290IHJvb3QgLT5cbiAgICAgIHJvb3QudmFsdWUgPC0gdlxuICB8IExpbmsgXyAtPlxuICAgICAgYXNzZXJ0IGZhbHNlXG5cbigqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICopXG5cbigqIFt1bmlvbiB4IHldIG1lcmdlcyB0aGUgZXF1aXZhbGVuY2UgY2xhc3NlcyBvZiBbeF0gYW5kIFt5XSBieSBpbnN0YWxsaW5nIGFcbiAgIGxpbmsgZnJvbSBvbmUgcm9vdCB2ZXJ0ZXggdG8gdGhlIG90aGVyLiAqKVxuXG4oKiBMaW5raW5nIGlzIGJ5IHJhbms6IHRoZSBzbWFsbGVyLXJhbmtlZCB2ZXJ0ZXggaXMgbWFkZSB0byBwb2ludCB0byB0aGVcbiAgIGxhcmdlci4gSWYgdGhlIHR3byB2ZXJ0aWNlcyBoYXZlIHRoZSBzYW1lIHJhbmssIHRoZW4gYW4gYXJiaXRyYXJ5IGNob2ljZVxuICAgaXMgbWFkZSwgYW5kIHRoZSByYW5rIG9mIHRoZSBuZXcgcm9vdCBpcyBpbmNyZW1lbnRlZCBieSBvbmUuICopXG5cbmxldCB1bmlvbiAoeCA6ICdhIGVsZW0pICh5IDogJ2EgZWxlbSkgOiAnYSBlbGVtID1cbiAgbGV0IHggPSBmaW5kIHhcbiAgYW5kIHkgPSBmaW5kIHkgaW5cbiAgaWYgeCA9PSB5IHRoZW4geCBlbHNlXG4gICAgbWF0Y2ggIXgsICF5IHdpdGhcbiAgICB8IFJvb3QgKHsgcmFuayA9IHJ4OyBfIH0gYXMgcm9vdHgpLCBSb290IHsgcmFuayA9IHJ5OyBfIH0gLT5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeCA6PSBMaW5rIHsgcGFyZW50ID0geSB9O1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4fTtcbiAgICAgICAgICByb290eC5yYW5rIDwtIHJ4ICsgMTtcbiAgICAgICAgICB4XG4gICAgICAgIGVuZFxuICAgIHwgUm9vdCBfLCBMaW5rIF9cbiAgICB8IExpbmsgXywgUm9vdCBfXG4gICAgfCBMaW5rIF8sIExpbmsgXyAtPlxuICAgICAgICBhc3NlcnQgZmFsc2VcblxuKCogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKilcblxuKCogW21lcmdlXSBpcyBhbmFsb2dvdXMgdG8gW3VuaW9uXSwgYnV0IGludm9rZXMgYSB1c2VyLXNwZWNpZmllZCBmdW5jdGlvbiBbZl1cbiAgIHRvIGNvbXB1dGUgdGhlIG5ldyB2YWx1ZSBbdl0gYXNzb2NpYXRlZCB3aXRoIHRoZSBlcXVpdmFsZW5jZSBjbGFzcy4gKilcblxuKCogVGhlIGZ1bmN0aW9uIFtmXSBtdXN0IG5vdCBhZmZlY3QgdGhlIHVuaW9uLWZpbmQgZGF0YSBzdHJ1Y3R1cmUgYnkgbWFraW5nXG4gICByZS1lbnRyYW50IGNhbGxzIHRvIFtzZXRdLCBbdW5pb25dLCBvciBbbWVyZ2VdLiBUaGVyZSBhcmUgdHdvIHJlYXNvbnMgZm9yXG4gICB0aGlzLiBGaXJzdCwgW2ZdIG1heSBiZSBpbnZva2VkIGF0IGEgdGltZSB3aGVuIHRoZSBpbnZhcmlhbnQgb2YgdGhlIGRhdGFcbiAgIHN0cnVjdHVyZSBpcyB0ZW1wb3JhcmlseSB2aW9sYXRlZDogaW4gdGhlIHRoaXJkIGJyYW5jaCBiZWxvdywgdGhlIHJhbmsgb2ZcbiAgIFt4XSBoYXMgbm90IHlldCBiZWVuIGluY3JlYXNlZCB3aGVuIFtmXSBpcyBpbnZva2VkLiBTZWNvbmQsIG1vcmUgc2VyaW91c2x5LFxuICAgaWYgW2ZdIGNvdWxkIGNhbGwsIHNheSwgW3VuaW9uXSwgdGhlbiB0aGF0IGNvdWxkIGNoYW5nZSBhIFtSb290XSBpbnRvIGFcbiAgIFtMaW5rXSwgc28gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgY2hhbmdlIGEgW0xpbmtdXG4gICBiYWNrIGludG8gYSBbUm9vdF0sIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG1ha2UgYW55IHNlbnNlLiBBbHNvLCBpZiBbZl1cbiAgIGNvdWxkIGNhbGwgW3NldF0sIHRoZW4gdGhlIHdyaXRlIHRoYXQgZm9sbG93cyB0aGUgY2FsbCB0byBbZl0gbWlnaHQgdW5kb1xuICAgdGhlIGVmZmVjdCBvZiB0aGlzIFtzZXRdIG9wZXJhdGlvbjsgdGhpcyBhbHNvIGRvZXMgbm90IG1ha2Ugc2Vuc2UuICopXG5cbigqIFRoZSB0ZXN0cyBbaWYgdiAhPSB2eSB0aGVuIC4uLl0gYW5kIFtpZiB2ICE9IHZ4IHRoZW4gLi4uXSBhcmUgaW50ZW5kZWQgdG9cbiAgIHNhdmUgYW4gYWxsb2NhdGlvbiBhbmQgYSB3cml0ZSB3aGVuIHBvc3NpYmxlLiAqKVxuXG4oKiBXZSBpbnZva2UgW2ZdIGJlZm9yZSBwZXJmb3JtaW5nIGFueSB1cGRhdGUsIHNvIHRoYXQgaWYgW2ZdIGZhaWxzXG4gICAoYnkgcmFpc2luZyBhbiBleGNlcHRpb24pLCB0aGUgc3RhdGUgaXMgdW5hZmZlY3RlZC4gKilcblxubGV0IG1lcmdlIChmIDogJ2EgLT4gJ2EgLT4gJ2EpICh4IDogJ2EgZWxlbSkgKHkgOiAnYSBlbGVtKSA6ICdhIGVsZW0gPVxuICBsZXQgeCA9IGZpbmQgeFxuICBhbmQgeSA9IGZpbmQgeSBpblxuICBpZiB4ID09IHkgdGhlbiB4IGVsc2VcbiAgICBtYXRjaCAheCwgIXkgd2l0aFxuICAgIHwgUm9vdCAoeyByYW5rID0gcng7IHZhbHVlID0gdnggfSBhcyByb290eCksXG4gICAgICBSb290ICh7IHJhbmsgPSByeTsgdmFsdWUgPSB2eSB9IGFzIHJvb3R5KSAtPlxuICAgICAgICBsZXQgdiA9IGYgdnggdnkgaW5cbiAgICAgICAgaWYgcnggPCByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeCA6PSBMaW5rIHsgcGFyZW50ID0geSB9O1xuICAgICAgICAgIGlmIHYgIT0gdnkgdGhlbiByb290eS52YWx1ZSA8LSB2O1xuICAgICAgICAgIHlcbiAgICAgICAgZW5kIGVsc2UgaWYgcnggPiByeSB0aGVuIGJlZ2luXG4gICAgICAgICAgeSA6PSBMaW5rIHsgcGFyZW50ID0geCB9O1xuICAgICAgICAgIGlmIHYgIT0gdnggdGhlbiByb290eC52YWx1ZSA8LSB2O1xuICAgICAgICAgIHhcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICB5IDo9IExpbmsgeyBwYXJlbnQgPSB4IH07XG4gICAgICAgICAgcm9vdHgucmFuayA8LSByeCArIDE7XG4gICAgICAgICAgaWYgdiAhPSB2eCB0aGVuIHJvb3R4LnZhbHVlIDwtIHY7XG4gICAgICAgICAgeFxuICAgICAgICBlbmRcbiAgICB8IFJvb3QgXywgTGluayBfXG4gICAgfCBMaW5rIF8sIFJvb3QgX1xuICAgIHwgTGluayBfLCBMaW5rIF8gLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pb25GaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgIEZyYW7Dp29pcyBQb3R0aWVyLCBJbnJpYSBQYXJpcyAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCBJbnJpYS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyICAgKilcbigqICB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLCB3aXRoIGEgICopXG4oKiAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZywgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgSU5UTUFQID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB2YWwgZW1wdHk6ICdhIHRcbiAgdmFsIGZpbmQ6IGludCAtPiAnYSB0IC0+ICdhXG4gIHZhbCBhZGQ6IGludCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbmVuZFxuXG5tb2R1bGUgTWFrZSAoSW50TWFwIDogSU5UTUFQKSA9IHN0cnVjdFxuXG4oKiBBIHN0b3JlIGlzIGltcGxlbWVudGVkIGFzIGEgcGFpciBvZiBhbiBpbnRlZ2VyIGFkZHJlc3MgYW5kIGEgbWFwIG9mXG4gICBpbnRlZ2VyIGFkZHJlc3NlcyB0byB2YWx1ZXMuIFdlIG1haW50YWluIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGVcbiAgIGRvbWFpbiBvZiB0aGUgbWFwIFtjb250ZW50XSBpcyB0aGUgc2VtaS1vcGVuIGludGVydmFsIG9mIHplcm9cbiAgIChpbmNsdWRlZCkgdXAgdG8gW2xpbWl0XSAoZXhjbHVkZWQpLiAqKVxuXG50eXBlICdhIHN0b3JlID0ge1xuICAoKiBUaGUgbmV4dCBhdmFpbGFibGUgYWRkcmVzcy4gKilcbiAgbXV0YWJsZSBsaW1pdDogICBpbnQ7XG4gICgqIFRoZSBjb250ZW50IG9mIHRoZSBzdG9yZS4gKilcbiAgbXV0YWJsZSBjb250ZW50OiAnYSBJbnRNYXAudFxufVxuXG5sZXQgbmV3X3N0b3JlICgpID0ge1xuICBsaW1pdCA9IDA7XG4gIGNvbnRlbnQgPSBJbnRNYXAuZW1wdHlcbn1cblxuKCogQmVjYXVzZSBhIHBlcnNpc3RlbnQgbWFwIGlzIHVzZWQsIGNvcHlpbmcgYSBzdG9yZSBhbW91bnRzIHRvIGNvcHlpbmdcbiAgIHRoZSBtdXRhYmxlIHJlY29yZCBhdCB0aGUgcm9vdC4gKilcblxubGV0IGNvcHkgcyA9XG4gIHsgbGltaXQgPSBzLmxpbWl0OyBjb250ZW50ID0gcy5jb250ZW50IH1cblxuKCogQSByZWZlcmVuY2UgaXMganVzdCBhbiBpbnRlZ2VyIGFkZHJlc3MuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gIGludFxuXG5sZXQgbWFrZSBzIHYgPVxuICBsZXQgeCA9IHMubGltaXQgaW5cbiAgcy5saW1pdCA8LSB4ICsgMTtcbiAgcy5jb250ZW50IDwtIEludE1hcC5hZGQgeCB2IHMuY29udGVudDtcbiAgeFxuXG4oKiBbY2hlY2sgcyB4XSBjaGVja3MgdGhhdCB0aGUgYWRkcmVzcyBbeF0gaXMgaW4gcmFuZ2UgZm9yIHRoZSBzdG9yZSBbc10uIElmXG4gICB0aGlzIGR5bmFtaWMgY2hlY2sgZmFpbHMsIHRoZW4gdGhlIHVzZXIgaXMgY29uZnVzZWQgYW5kIGhhcyBwYXNzZWQgdXMgYW5cbiAgIGFkZHJlc3MgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBzdG9yZS4gKElmIHRoZSBjaGVjayBzdWNjZWVkcyxcbiAgIHRoZSB1c2VyIG1heSBiZSBjb25mdXNlZCB0b28hIGJ1dCB3ZSBjYW5ub3QgZGV0ZWN0IGl0LikgKilcblxuZXhjZXB0aW9uIEludmFsaWRSZWZcblxubGV0IGNoZWNrIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgPVxuICAoKiBXZSBkbyBub3QgY2hlY2sgdGhhdCBbeF0gaXMgbm9ubmVnYXRpdmUuIEFuIG92ZXJmbG93IGNhbm5vdCBvY2N1cixcbiAgICAgc2luY2UgdGhhdCB3b3VsZCBpbXBseSB0aGF0IHdlIGhhdmUgZmlsbGVkIHRoZSBtZW1vcnkgd2l0aCBhIGh1Z2VcbiAgICAgYXJyYXkuICopXG4gICBpZiB4ID49IHMubGltaXQgdGhlblxuICAgICByYWlzZSBJbnZhbGlkUmVmXG5cbmxldCBnZXQgcyB4ID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIEludE1hcC5maW5kIHggcy5jb250ZW50XG5cbmxldCBzZXQgcyB4IHYgPVxuICAoKiBGYWlsdXJlIG9mIHRoaXMgYXNzZXJ0aW9uIHdvdWxkIGluZGljYXRlIHRoYXQgdGhlIHVzZXIgaGFzIHBhc3NlZCB1c1xuICAgICBhbiBhZGRyZXNzIHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgc3RvcmUuICopXG4gIGNoZWNrIHMgeDtcbiAgcy5jb250ZW50IDwtIEludE1hcC5hZGQgeCB2IHMuY29udGVudFxuXG5sZXQgZXEgcyAoeCA6IGludCkgKHkgOiBpbnQpID1cbiAgKCogRmFpbHVyZSBvZiB0aGlzIGFzc2VydGlvbiB3b3VsZCBpbmRpY2F0ZSB0aGF0IHRoZSB1c2VyIGhhcyBwYXNzZWQgdXNcbiAgICAgYW4gYWRkcmVzcyB0aGF0IGlzIGFzc29jaWF0ZWQgd2l0aCBzb21lIG90aGVyIHN0b3JlLiAqKVxuICBjaGVjayBzIHg7XG4gIGNoZWNrIHMgeTtcbiAgeCA9IHlcblxuZW5kXG5cbigqIEluY2x1ZGUgdGhlIG1vc3QgY29tbW9uIGluc3RhbmNlIG9mIHRoZSBhYm92ZSBmdW5jdG9yLiAqKVxuXG5pbmNsdWRlIE1ha2UoTWFwLk1ha2Uoc3RydWN0XG4gIHR5cGUgdCA9IGludFxuICBsZXQgY29tcGFyZSA9ICgtKSAoKiBvayBzaW5jZSB0aGUgYXJndW1lbnRzIGFyZSBub25uZWdhdGl2ZSBpbnRlZ2VycyAqKVxuZW5kKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlvbkZpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgRnJhbsOnb2lzIFBvdHRpZXIsIElucmlhIFBhcmlzICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgQ29weXJpZ2h0IElucmlhLiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgICAqKVxuKCogIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggYSAgKilcbigqICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nLCBhcyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBXaGVuIE9DYW1sJ3MgYnVpbHQtaW4gc3RvcmUgaXMgdXNlZCwgbm8gZXhwbGljaXQgc3RvcmUgaXMgbmVlZGVkLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgdW5pdFxuXG5sZXQgbmV3X3N0b3JlICgpID1cbiAgKClcblxuKCogQ29weWluZyBpcyBub3Qgc3VwcG9ydGVkLiAqKVxuXG5sZXQgY29weSBfcyA9XG4gIGFzc2VydCBmYWxzZVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBhIHByaW1pdGl2ZSByZWZlcmVuY2UuICopXG5cbnR5cGUgJ2EgcnJlZiA9XG4gICdhIHJlZlxuXG5sZXQgbWFrZSAoKSB2ID1cbiAgcmVmIHZcblxubGV0IGdldCAoKSB4ID1cbiAgIXhcblxubGV0IHNldCAoKSB4IHYgPVxuICB4IDo9IHZcblxubGV0IGVxICgpIHggeSA9XG4gIHggPT0geVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgcmVmZXJlbmNlIGNlbGwgcmVjb3JkcyBib3RoIGl0cyBjdXJyZW50IChwb3NzaWJseSB1bmNvbW1pdHRlZCkgdmFsdWUgYW5kXG4gICBpdHMgbGFzdCBjb21taXR0ZWQgdmFsdWUuIEEgY2VsbCBpcyBjb25zaWRlcmVkIHN0YWJsZSB3aGVuIHRoZXNlIHR3byB2YWx1ZXNcbiAgIGFyZSAocGh5c2ljYWxseSkgZXF1YWwsIGFuZCB1bnN0YWJsZSBvdGhlcndpc2UuICopXG5cbigqIE9uZSBjb3VsZCBwZXJoYXBzIGVucmljaCBlYWNoIGNlbGwgd2l0aCBhIHBvaW50ZXIgdG8gaXRzIHN0b3JlLCBzbyBhcyB0b1xuICAgZW5zdXJlIGF0IHJ1bnRpbWUgdGhhdCB0aGUgdXNlciBpcyBub3QgY29uZnVzZWQuICopXG5cbnR5cGUgJ2EgcnJlZiA9IHtcbiAgKCogVGhlIGN1cnJlbnQgKHBvc3NpYmx5IHVuY29tbWl0dGVkKSB2YWx1ZS4gKilcbiAgbXV0YWJsZSBjdXJyZW50OiAnYTtcbiAgKCogVGhlIGxhc3QgY29tbWl0dGVkIHZhbHVlLiAqKVxuICBtdXRhYmxlIGNvbW1pdHRlZDogJ2Fcbn1cblxuKCogQSB0cmFuc2FjdGlvbiBjb250YWlucyBhIHN0YWNrIG9mIGFsbCB1bnN0YWJsZSBjZWxscyAoYW5kIHBvc3NpYmx5IHNvbWVcbiAgIHN0YWJsZSBjZWxscyB0b28sIGFsdGhvdWdoIHRoYXQgaXMgdW5saWtlbHkpLiAqKVxuXG50eXBlICdhIHRyYW5zYWN0aW9uID1cbiAgJ2EgcnJlZiBTdGFjay50XG5cbigqIEEgc3RvcmUgY29udGFpbnMgYW4gb3B0aW9uYWwgdHJhbnNhY3Rpb24uIFRoaXMgaW5kaWNhdGVzIHdoZXRoZXIgYVxuICAgdHJhbnNhY3Rpb24gaXMgY3VycmVudGx5IG9uZ29pbmcuIFRyYW5zYWN0aW9ucyBjYW5ub3QgYmUgbmVzdGVkLiAqKVxuXG50eXBlICdhIHN0b3JlID1cbiAgeyBtdXRhYmxlIHRyYW5zYWN0aW9uOiAnYSB0cmFuc2FjdGlvbiBvcHRpb24gfVxuXG5sZXQgbmV3X3N0b3JlICgpIDogJ2Egc3RvcmUgPVxuICB7IHRyYW5zYWN0aW9uID0gTm9uZSB9XG5cbigqIENvcHlpbmcgaXMgbm90IHN1cHBvcnRlZC4gKilcblxubGV0IGNvcHkgX3MgPVxuICBhc3NlcnQgZmFsc2VcblxubGV0IG1ha2UgKF9zIDogJ2Egc3RvcmUpICh2IDogJ2EpIDogJ2EgcnJlZiA9XG4gIHsgY3VycmVudCA9IHY7IGNvbW1pdHRlZCA9IHYgfVxuXG5sZXQgZ2V0IChfcyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICB4LmN1cnJlbnRcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gICgqIElmIHRoZSBuZXcgdmFsdWUgaGFwcGVucyB0byBiZSB0aGUgY3VycmVudCB2YWx1ZSwgdGhlcmUgaXMgbm90aGluZyB0byBkby4gKilcbiAgbGV0IGN1cnJlbnQgPSB4LmN1cnJlbnQgaW5cbiAgaWYgdiA9PSBjdXJyZW50IHRoZW5cbiAgICAoKVxuICBlbHNlIGJlZ2luIG1hdGNoIHMudHJhbnNhY3Rpb24gd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgICgqIE91dHNpZGUgb2YgYSB0cmFuc2FjdGlvbiwgdHdvIG5vcm1hbCB3cml0ZSBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQuXG4gICAgICAgICBUaGUgY2VsbCByZW1haW5zIHN0YWJsZS4gTm90aGluZyBpcyBsb2dnZWQuICopXG4gICAgICB4LmN1cnJlbnQgPC0gdjtcbiAgICAgIHguY29tbWl0dGVkIDwtIHZcbiAgfCBTb21lIHN0YWNrIC0+XG4gICAgICAoKiBXZSBhcmUgd2l0aGluIGEgdHJhbnNhY3Rpb24uICopXG4gICAgICAoKiBJZiB0aGlzIGNlbGwgd2FzIHN0YWJsZSBhbmQgbm93IGJlY29tZXMgdW5zdGFibGUsIHRoZW4gaXQgbXVzdCBiZVxuICAgICAgICAgaW5zZXJ0ZWQgaW50byB0aGUgc2V0IG9mIHVuc3RhYmxlIGNlbGxzLCB3aGljaCBpcyByZWNvcmRlZCBhcyBwYXJ0XG4gICAgICAgICBvZiB0aGUgdHJhbnNhY3Rpb24uICopXG4gICAgICBpZiBjdXJyZW50ID09IHguY29tbWl0dGVkIHRoZW5cbiAgICAgICAgU3RhY2sucHVzaCB4IHN0YWNrO1xuICAgICAgKCogVGhlIGNlbGwgbXVzdCB0aGVuIGJlIHVwZGF0ZWQuIElmIFt2XSBoYXBwZW5zIHRvIGJlIGVxdWFsIHRvXG4gICAgICAgICBbY29tbWl0dGVkXSwgdGhpcyBjb3VsZCBtYWtlIHRoZSBjZWxsIHN0YWJsZSBhZ2Fpbi4gV2UgZG8gbm90XG4gICAgICAgICBjaGVjayBmb3IgdGhpcyB1bmxpa2VseSBzaXR1YXRpb24uIFRoaXMgbWVhbnMgdGhhdCB0aGUgc2V0IG9mXG4gICAgICAgICB1bnN0YWJsZSBjZWxscyBjb3VsZCBhY3R1YWxseSBjb250YWluIHN0YWJsZSBjZWxscyB0b28uICopXG4gICAgICB4LmN1cnJlbnQgPC0gdlxuICAgIGVuZFxuXG5sZXQgZXEgKF9zIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgKHkgOiAnYSBycmVmKSA6IGJvb2wgPVxuICB4ID09IHlcblxuZXhjZXB0aW9uIE5lc3RlZFRyYW5zYWN0aW9uQXR0ZW1wdFxuXG5sZXQgY29tbWl0IHggPVxuICB4LmNvbW1pdHRlZCA8LSB4LmN1cnJlbnRcblxubGV0IHJvbGxiYWNrIHggPVxuICB4LmN1cnJlbnQgPC0geC5jb21taXR0ZWRcblxubGV0IHRlbnRhdGl2ZWx5IChzIDogJ2Egc3RvcmUpIChmIDogdW5pdCAtPiAnYikgOiAnYiA9XG4gIG1hdGNoIHMudHJhbnNhY3Rpb24gd2l0aFxuICB8IFNvbWUgXyAtPlxuICAgICAgcmFpc2UgTmVzdGVkVHJhbnNhY3Rpb25BdHRlbXB0XG4gIHwgTm9uZSAtPlxuICAgICAgbGV0IHN0YWNrID0gU3RhY2suY3JlYXRlKCkgaW5cbiAgICAgIHMudHJhbnNhY3Rpb24gPC0gU29tZSBzdGFjaztcbiAgICAgIHRyeVxuICAgICAgICBsZXQgYiA9IGYoKSBpblxuICAgICAgICAoKiBDb21taXQgZXZlcnkgdW5zdGFibGUgY2VsbC4gKilcbiAgICAgICAgU3RhY2suaXRlciBjb21taXQgc3RhY2s7XG4gICAgICAgICgqIENsb3NlIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICAgcy50cmFuc2FjdGlvbiA8LSBOb25lO1xuICAgICAgICAoKiBSZXBvcnQgdGhlIG91dGNvbWUuICopXG4gICAgICAgIGJcbiAgICAgIHdpdGggZSAtPlxuICAgICAgICBsZXQgYiA9IFByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlKCkgaW5cbiAgICAgICAgKCogUm9sbCBiYWNrIGV2ZXJ5IHVuc3RhYmxlIGNlbGwuICopXG4gICAgICAgIFN0YWNrLml0ZXIgcm9sbGJhY2sgc3RhY2s7XG4gICAgICAgICgqIENsb3NlIHRoZSB0cmFuc2FjdGlvbi4gKilcbiAgICAgICAgcy50cmFuc2FjdGlvbiA8LSBOb25lO1xuICAgICAgICAoKiBSZXBvcnQgdGhlIG91dGNvbWUuICopXG4gICAgICAgIFByaW50ZXhjLnJhaXNlX3dpdGhfYmFja3RyYWNlIGUgYlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW9uRmluZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICBGcmFuw6dvaXMgUG90dGllciwgSW5yaWEgUGFyaXMgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgSW5yaWEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciAgICopXG4oKiAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiwgd2l0aCBhICAqKVxuKCogIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEEgc3RvcmUgaXMgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZW5zaWJsZSBhcnJheSwgdGhhdCBpcywgYSBwYWlyIG9mIGFuXG4gICBpbnRlZ2VyIGFkZHJlc3MgYW5kIGFuIGFycmF5LiBXZSBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgdGhlIGxlbmd0aCBvZlxuICAgdGhlIGFycmF5IGlzIGF0IGxlYXN0IFtsaW1pdF0uIFRoZSBhcmVhIG9mIHRoZSBhcnJheSBhdCBpbmRleCBbbGltaXRdIGFuZFxuICAgYmV5b25kIGlzIGNvbnNpZGVyZWQgdW5pbml0aWFsaXplZC4gKilcblxuKCogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoaXMgYXJlYSBpcyBmaWxsZWQgd2l0aCBhcmJpdHJhcnkgdmFsdWUocylcbiAgIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGluIGNhbGxzIHRvIFttYWtlXSBvciBbc2V0XS4gVGhpcyBpcyBub3QgaWRlYWwsIGFzIGl0XG4gICBjYW4gY2F1c2UgYSBtZW1vcnkgbGVhay4gKilcblxudHlwZSAnYSBzdG9yZSA9IHtcbiAgKCogVGhlIGxvZ2ljYWwgc2l6ZSBvZiB0aGUgYXJyYXk7IGFsc28sIHRoZSBuZXh0IGF2YWlsYWJsZSBhZGRyZXNzLiAqKVxuICBtdXRhYmxlIGxpbWl0OiAgIGludDtcbiAgKCogVGhlIGFycmF5LCB3aG9zZSBsZW5ndGggaXMgYXQgbGVhc3QgW2xpbWl0XS4gKilcbiAgbXV0YWJsZSBjb250ZW50OiAnYSBhcnJheVxufVxuXG4oKiBUaGUgYXJyYXkgaXMgY3JlYXRlZCB3aXRoIGEgc2l6ZSBhbmQgbGVuZ3RoIG9mIHplcm8uIFdlIGhhdmUgbm8gb3RoZXJcbiAgIGNob2ljZSwgc2luY2Ugd2UgZG8gbm90IGhhdmUgYSB2YWx1ZSBvZiB0eXBlIFsnYV0gYXQgaGFuZC4gKilcblxubGV0IG5ld19zdG9yZSAoKSA6ICdhIHN0b3JlID0ge1xuICBsaW1pdCA9IDA7XG4gIGNvbnRlbnQgPSBbfHxdXG59XG5cbigqIENvcHlpbmcgaXMgc3VwcG9ydGVkLCBidXQgaXMgbm90IGNoZWFwLiBVc2UgYXQgeW91ciBvd24gcmlzay4gKilcblxubGV0IGNvcHkgKHMgOiAnYSBzdG9yZSkgOiAnYSBzdG9yZSA9XG4gIHsgbGltaXQgPSBzLmxpbWl0OyBjb250ZW50ID0gQXJyYXkuY29weSBzLmNvbnRlbnQgfVxuXG4oKiBBIHJlZmVyZW5jZSBpcyBhbiBpbmRleCBpbnRvIHRoZSBhcnJheS4gKilcblxudHlwZSAnYSBycmVmID1cbiAgaW50XG5cbigqIFRoZSBhcnJheSBqdW1wcyBmcm9tIGxlbmd0aCB6ZXJvIHRvIGxlbmd0aCBbZGVmYXVsdF9pbml0aWFsX2xlbmd0aF0gYXMgc29vblxuICAgYXMgYSBjYWxsIHRvIFttYWtlXSBpcyBtYWRlLiAqKVxuXG5sZXQgZGVmYXVsdF9pbml0aWFsX2xlbmd0aCA9XG4gIDI1NlxuXG4oKiBbZW5sYXJnZSBzIHZdIGluY3JlYXNlcyB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSAoaWYgbmVjZXNzYXJ5KSBzbyBhcyB0b1xuICAgZW5zdXJlIHRoYXQgW3MubGltaXRdIGJlY29tZXMgYSB2YWxpZCBpbmRleC4gVGhlIGFyZ3VtZW50IFt2XSBpcyB1c2VkIGFzIGFcbiAgIGRlZmF1bHQgdmFsdWUgdG8gZmlsbCB0aGUgdW5pbml0aWFsaXplZCBhcmVhLiAqKVxuXG5sZXQgZW5sYXJnZSAocyA6ICdhIHN0b3JlKSAodiA6ICdhKSA6IHVuaXQgPVxuICBsZXQgY29udGVudCA9IHMuY29udGVudCBpblxuICBsZXQgbGVuZ3RoID0gQXJyYXkubGVuZ3RoIGNvbnRlbnQgaW5cbiAgaWYgcy5saW1pdCA9IGxlbmd0aCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbmd0aCcgPVxuICAgICAgaWYgbGVuZ3RoID0gMCB0aGVuXG4gICAgICAgIGRlZmF1bHRfaW5pdGlhbF9sZW5ndGhcbiAgICAgIGVsc2VcbiAgICAgICAgMiAqIGxlbmd0aFxuICAgIGluXG4gICAgYXNzZXJ0IChzLmxpbWl0IDwgbGVuZ3RoJyk7XG4gICAgbGV0IGNvbnRlbnQnID0gQXJyYXkubWFrZSBsZW5ndGgnIHYgaW5cbiAgICBBcnJheS5ibGl0IGNvbnRlbnQgMCBjb250ZW50JyAwIGxlbmd0aDtcbiAgICBzLmNvbnRlbnQgPC0gY29udGVudCdcbiAgZW5kXG5cbigqIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIFtBcnJheS51bnNhZmVfc2V0XSBhbmQgW0FycmF5LnVuc2FmZV9nZXRdIHdpdGhvdXRcbiAgIGFueSBwcmVjYXV0aW9ucywgc2luY2UgdGhlIE9DYW1sIHR5cGUtY2hlY2tlciBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgdGhlXG4gICBpbmRpY2VzIGFyZSBpbiByYW5nZS4gQSBjb25mdXNlZCB1c2VyIGNvdWxkIHBhc3MgcmVmZXJlbmNlcyBpbnRvIHNvbWVcbiAgIG90aGVyIHN0b3JlLiBXZSBjaG9vc2UgdG8gZXhwbGljaXRseSBjaGVjayB0aGF0IHRoZSBpbmRleCBpcyB3aXRoaW4gdGhlXG4gICBsb2dpY2FsIGJvdW5kcyBvZiB0aGUgYXJyYXkgLS0gdGhpcyBpcyBhIG1vcmUgcHJlY2lzZSBjaGVjay4gKilcblxuZXhjZXB0aW9uIEludmFsaWRSZWZcblxubGV0IGNoZWNrIChzIDogJ2Egc3RvcmUpICh4IDogJ2EgcnJlZikgOiB1bml0ID1cbiAgKCogV2UgZG8gbm90IGNoZWNrIHRoYXQgW3hdIGlzIG5vbm5lZ2F0aXZlLiBBbiBvdmVyZmxvdyBjYW5ub3Qgb2NjdXIsXG4gICAgIHNpbmNlIHRoYXQgd291bGQgaW1wbHkgdGhhdCB3ZSBoYXZlIGZpbGxlZCB0aGUgbWVtb3J5IHdpdGggYSBodWdlXG4gICAgIGFycmF5LiAqKVxuICBpZiB4ID49IHMubGltaXQgdGhlblxuICAgIHJhaXNlIEludmFsaWRSZWZcblxubGV0IG1ha2UgKHMgOiAnYSBzdG9yZSkgKHYgOiAnYSkgOiAnYSBycmVmID1cbiAgZW5sYXJnZSBzIHY7XG4gIGxldCB4ID0gcy5saW1pdCBpblxuICBzLmxpbWl0IDwtIHggKyAxO1xuICBBcnJheS51bnNhZmVfc2V0IHMuY29udGVudCB4IHY7XG4gIHhcblxubGV0IGdldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpIDogJ2EgPVxuICBjaGVjayBzIHg7XG4gIEFycmF5LnVuc2FmZV9nZXQgcy5jb250ZW50IHhcblxubGV0IHNldCAocyA6ICdhIHN0b3JlKSAoeCA6ICdhIHJyZWYpICh2IDogJ2EpIDogdW5pdCA9XG4gIGNoZWNrIHMgeDtcbiAgQXJyYXkudW5zYWZlX3NldCBzLmNvbnRlbnQgeCB2XG5cbmxldCBlcSAgKHMgOiAnYSBzdG9yZSkgKHggOiAnYSBycmVmKSAoeSA6ICdhIHJyZWYpIDogYm9vbCA9XG4gIGNoZWNrIHMgeDtcbiAgY2hlY2sgcyB5O1xuICB4ID0geVxuIiwiLyogSUQgRkFRXG5cbiAgIFdIQVRTIEFOIElEP1xuXG4gICBJRHMgYXJlIHJhbmRvbS1nZW5lcmF0ZWQgMTI4Yml0IFVVSURzOyB1c2UgSWQubWsoKSB0byBnZW5lcmF0ZSBvbmUuXG5cbiAgIFdIQVQgQVJFIElEUyBVU0VEIEZPUj9cblxuICAgVW5pcXVlIGlkcyBhcmUgYXNzaWduZWQgdG8gdGlsZXMgKGFuZCBoZW5jZSwgaW5kaXJlY3RseSwgdG8gdGVybXMpXG4gICBhdCB0aGUgdGltZSBvZiBjcmVhdGlvbiBvZiBzdXJmYWNlIHN5bnRheC4gSWRzIGFyZSB1c2VkIGFzIGtleXMgaW5cbiAgIHZhcmlvdXMgbWFwcyAobW9zdGx5IG5vdGFibHkgdGhlIE1lYXN1cmVkIG1hcCwgd2hpY2ggdHJhY2tzIHNjcmVlblxuICAgY29vcmRpbmF0ZXMgZm9yIHRoZSB2aWV3LCBhbmQgdGhlIEluZm8gbWFwIHdoaWNoIGNvbGxlY3RzIHN0YXRpY1xuICAgZGF0YSBzdWNoIGFzIHR5cGUgaW5mb3JtYXRpb24pLiBJZHMgYXJlIHVzZWQgZm9yIG1hbnkgemlwcGVyIGFjdGlvbnMsXG4gICBpbmNsdWRpbmcganVtcCB0byBkZWZpbml0aW9uLCBhbmQgYXJlIGFsc28gdXNlZCB0byBjb29yZGluYXRlIHRlcm1cbiAgIGRlY29yYXRpb25zLiBBY2NpZGVudGFsbHkgY3JlYXRpbmcgbm9uLXVuaXF1ZSBJRHMgY2FuIGJlIHRoZSBjYXVzZVxuICAgb2YgbWFueSBvZGQgaXNzdWVzIGZvciB6aXBwZXIgYWN0aW9ucyBhbmQgZGlzcGxheS5cblxuICAgQlVUIFdIWSBJUyBUSEVSRSBBIF9MSVNUXyBPRiBJRFM/XG5cbiAgIFRlY2huaWNhbGx5LCBlYWNoIHRpbGUgaGFzIGEgbGlzdCBvZiBpZHMsIHRvIHN1cHBvcnQgbi1hcnkgZm9ybXMgbGlrZVxuICAgdHVwbGVzOyB0aGVyZSBhcmUgcmVwX2lkIGZ1bmN0aW9ucyBpbiBUZXJtIHRvIGNhbm9uaWNhbGx5IGV4dHJhY3RcbiAgIHNpbmdsZSByZXByZXNlbnRhdGl2ZSBpZHMgZnJvbSB0aGlzIGxpc3Qgd2hlcmUgYXBwcm9wcmlhdGUuXG5cbiAgIENBTiBJIFVTRSBJRFMgSU4gRFlOQU1JQ1M/XG5cbiAgIEN1cnJlbnRseSwgREhFeHBzIChhcyBwcm9kdWNlZCBieSB0aGUgZWxhYm9yYXRvciBhbmQgcHJvZHVjZWQvY29uc3VtZWRcbiAgIGJ5IHRoZSBldmFsdWF0b3IpIGRvIG5vdCBpbiBnZW5lcmFsIHBlcnNpc3QgaWRzOyB0aGUgZXhjZXB0aW9ucyBhcmVcbiAgIHRoaW5ncyBsaWtlIGhvbGVzIGFuZCB0ZXN0cyB3aGljaCBoYXZlIGFkZGl0aW9uYWwgbWV0YWRhdGEgd2hpY2ggaXNcbiAgIGFjY3VtdWxhdGVkIGR1dGluZyBldmFsdWF0aW9uLiBUaGVyZSBhcmUgbWFueSB1c2UgY2FzZXMgZm9yIHRyYWNraW5nXG4gICBpZHMgbW9yZSBnZW5lcmFsbHkgZHVyaW5nIGV2YWx1YXRpb24sIGJ1dCBkb2luZyBzbyBpbiBhIHByaW5jaXBsZWRcbiAgIHdheSBpcyBhIGxhcmdlLXNjYWxlIGNoYW5nZSB3aXRoIGFyY2hpdGVjdHVyYWwgaW1wbGljYXRpb25zLlxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG5sZXQgc2V4cF9vZl90OiBVdWlkbS50ID0+IFNleHBsaWIuU2V4cC50ID1cbiAgdCA9PiBTZXhwbGliLlNleHAuQXRvbShVdWlkbS50b19zdHJpbmcodCkpO1xuXG5sZXQgdF9vZl9zZXhwOiBTZXhwbGliLlNleHAudCA9PiBVdWlkbS50ID1cbiAgZnVuXG4gIHwgU2V4cGxpYi5TZXhwLkF0b20ocykgPT5cbiAgICBVdWlkbS5vZl9zdHJpbmcocylcbiAgICB8PiBVdGlsLk9wdFV0aWwuZ2V0KF8gPT4gZmFpbHdpdGgoXCJVdWlkbS50X29mX3NleHA6IG5vdCB2YWxpZCBVVUlEICgxKVwiKSlcbiAgfCBfID0+IGZhaWx3aXRoKFwiVXVpZG0udF9vZl9zZXhwOiBub3QgdmFsaWQgVVVJRCAoMilcIik7XG5cbmxldCB5b2pzb25fb2ZfdDogVXVpZG0udCA9PiBZb2pzb24uU2FmZS50ID0gdCA9PiBgU3RyaW5nKFV1aWRtLnRvX3N0cmluZyh0KSk7XG5cbmxldCB0X29mX3lvanNvbjogWW9qc29uLlNhZmUudCA9PiBVdWlkbS50ID1cbiAgZnVuXG4gIHwgYFN0cmluZyhzKSA9PlxuICAgIFV1aWRtLm9mX3N0cmluZyhzKVxuICAgIHw+IFV0aWwuT3B0VXRpbC5nZXQoXyA9PlxuICAgICAgICAgZmFpbHdpdGgoXCJVdWlkbS50X29mX3lvanNvbjogbm90IHZhbGlkIFVVSUQgKDEpXCIpXG4gICAgICAgKVxuICB8IF8gPT4gZmFpbHdpdGgoXCJVdWlkbS50X29mX3lvanNvbjogbm90IHZhbGlkIFVVSUQgKDIpXCIpO1xuXG50eXBlIHQgPSBVdWlkbS50O1xuXG5sZXQgbWs6IHVuaXQgPT4gdCA9IFV1aWRtLnY0X2dlbihSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSk7XG5cbmxldCBjb21wYXJlOiAodCwgdCkgPT4gaW50ID0gVXVpZG0uY29tcGFyZTtcbmxldCB0b19zdHJpbmc6ICh+dXBwZXI6IGJvb2w9PywgdCkgPT4gc3RyaW5nID0gVXVpZG0udG9fc3RyaW5nO1xubGV0IG9mX3N0cmluZzogKH5wb3M6IGludD0/LCBzdHJpbmcpID0+IG9wdGlvbih0KSA9IFV1aWRtLm9mX3N0cmluZztcbmxldCBwcDogKEZvcm1hdC5mb3JtYXR0ZXIsIHQpID0+IHVuaXQgPVxuICAoZiwgaWQpID0+XG4gICAgRm9ybWF0LmZwcmludGYoXG4gICAgICBmLFxuICAgICAgXCJPcHRpb24uZ2V0KEhhejNsY29yZS5JZC5vZl9zdHJpbmcoXFxcIiVzXFxcIikpXCIsXG4gICAgICB0b19zdHJpbmcoaWQpLFxuICAgICk7XG5sZXQgc2hvdyA9IGlkID0+XG4gIEZvcm1hdC5zcHJpbnRmKFxuICAgIFwiT3B0aW9uLmdldChIYXozbGNvcmUuSWQub2Zfc3RyaW5nKFxcXCIlc1xcXCIpKVwiLFxuICAgIHRvX3N0cmluZyhpZCksXG4gICk7XG5cbltAZGVyaXZpbmcgKHNleHAsIHlvanNvbildXG50eXBlIGJpbmRpbmcoJ3YpID0gKHQsICd2KTtcblxubW9kdWxlIE1hcCA9IHtcbiAgaW5jbHVkZSBNYXAuTWFrZShVdWlkbSk7XG5cbiAgbGV0IHNleHBfb2ZfdCA9IChzZXhwX29mX3YsIG1hcCkgPT5cbiAgICBtYXAgfD4gYmluZGluZ3MgfD4gU2V4cGxpYi5TdGQuc2V4cF9vZl9saXN0KHNleHBfb2ZfYmluZGluZyhzZXhwX29mX3YpKTtcblxuICBsZXQgdF9vZl9zZXhwID0gKHZfb2Zfc2V4cCwgc2V4cCkgPT5cbiAgICBzZXhwXG4gICAgfD4gU2V4cGxpYi5TdGQubGlzdF9vZl9zZXhwKGJpbmRpbmdfb2Zfc2V4cCh2X29mX3NleHApKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gb2Zfc2VxO1xuXG4gIGxldCB5b2pzb25fb2ZfdCA9ICh5b2pzb25fb2ZfdiwgbWFwKSA9PlxuICAgIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuXG4gIGxldCB0X29mX3lvanNvbiA9ICh2X29mX3lvanNvbiwganNvbikgPT5cbiAgICBqc29uXG4gICAgfD4gbGlzdF9vZl95b2pzb24oYmluZGluZ19vZl95b2pzb24odl9vZl95b2pzb24pKVxuICAgIHw+IExpc3QudG9fc2VxXG4gICAgfD4gb2Zfc2VxO1xuXG4gIGxldCBwcCA9IChwcF92LCBmbXQsIG1hcCkgPT5cbiAgICBiaW5kaW5ncyhtYXApXG4gICAgfD4gTGlzdC5pdGVyKCgoaywgdikpID0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZihmbXQsIFwiJWEgLT4gJWFcXG5cIiwgcHAsIGssIHBwX3YsIHYpXG4gICAgICAgKTtcbn07XG5sZXQgaW52YWxpZDogdCA9XG4gIFwiMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIgfD4gVXVpZG0ub2Zfc3RyaW5nIHw+IE9wdGlvbi5nZXQ7XG5cbi8qIFNwZWNpYWwgaWQgdXNlZCB0byBkZW5vdGUgYSB0cml2aWFsIChlbXB0eSkgZnVuY3Rpb24gYXBwbGljYXRpb24gKi9cbmxldCBudWxsYXJ5X2FwX2ZsYWc6IHQgPVxuICBcIkRFQURCRUVGLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiIHw+IFV1aWRtLm9mX3N0cmluZyB8PiBPcHRpb24uZ2V0O1xuXG5sZXQgaXNfbnVsbGFyeV9hcF9mbGFnID0gKGlkczogbGlzdCh0KSkgPT5cbiAgc3dpdGNoIChpZHMpIHtcbiAgfCBbaWRdIHdoZW4gaWQgPT0gbnVsbGFyeV9hcF9mbGFnID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbm1vZHVsZSBVZjoge1xuICB0eXBlIHN0b3JlKCdhKTtcbiAgbGV0IGluaXQ6IHVuaXQgPT4gc3RvcmUoXyk7XG4gIGxldCBhZGQ6ICh0LCAnYSwgc3RvcmUoJ2EpKSA9PiB1bml0O1xuICBsZXQgZ2V0OiAodCwgc3RvcmUoJ2EpKSA9PiAnYTtcbiAgbGV0IGdldF9vcHQ6ICh0LCBzdG9yZSgnYSkpID0+IG9wdGlvbignYSk7XG4gIGxldCBzZXQ6ICh0LCAnYSwgc3RvcmUoJ2EpKSA9PiB1bml0O1xuICBsZXQgbWVyZ2U6ICgoJ2EsICdhKSA9PiAnYSwgdCwgdCwgc3RvcmUoJ2EpKSA9PiB1bml0O1xufSA9IHtcbiAgbW9kdWxlIE0gPSBVbmlvbkZpbmQuTWFrZShVbmlvbkZpbmQuU3RvcmVWZWN0b3IpO1xuICB0eXBlIHN0b3JlKCdhKSA9IHtcbiAgICByZWZzOiByZWYoTWFwLnQoTS5ycmVmKCdhKSkpLFxuICAgIHN0b3JlOiBNLnN0b3JlKCdhKSxcbiAgfTtcbiAgbGV0IGluaXQgPSAoKSA9PiB7cmVmczogcmVmKE1hcC5lbXB0eSksIHN0b3JlOiBNLm5ld19zdG9yZSgpfTtcbiAgbGV0IHJyZWYgPSAoaWQsIHMpID0+IE1hcC5maW5kKGlkLCBzLnJlZnNeKTtcbiAgbGV0IGFkZCA9IChpZCwgYSwgcykgPT5cbiAgICBzd2l0Y2ggKE1hcC5maW5kX29wdChpZCwgcy5yZWZzXikpIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCByID0gTS5tYWtlKHMuc3RvcmUsIGEpO1xuICAgICAgcy5yZWZzIDo9IE1hcC5hZGQoaWQsIHIsIHMucmVmc14pO1xuICAgIHwgU29tZShfKSA9PiAoKVxuICAgIH07XG4gIGxldCBnZXQgPSAoaWQsIHMpID0+IE0uZ2V0KHMuc3RvcmUsIE0uZmluZChzLnN0b3JlLCBycmVmKGlkLCBzKSkpO1xuICBsZXQgZ2V0X29wdCA9IChpZCwgcykgPT5cbiAgICBNYXAuZmluZF9vcHQoaWQsIHMucmVmc14pIHw+IE9wdGlvbi5tYXAoXyA9PiBnZXQoaWQsIHMpKTtcbiAgbGV0IHNldCA9IChpZCwgYSwgcykgPT4gTS5zZXQocy5zdG9yZSwgTS5maW5kKHMuc3RvcmUsIHJyZWYoaWQsIHMpKSwgYSk7XG5cbiAgbGV0IG1lcmdlID0gKGYsIGlkLCBpZCcsIHMpID0+XG4gICAgaWdub3JlKE0ubWVyZ2Uocy5zdG9yZSwgZiwgcnJlZihpZCwgcyksIHJyZWYoaWQnLCBzKSkpO1xufTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfdW5fYm9vbCA9XG4gIHwgTm90O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG9wX3VuX21ldGEgPVxuICB8IFVucXVvdGU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfdW5faW50ID1cbiAgfCBNaW51cztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBvcF9iaW5fYm9vbCA9XG4gIHwgQW5kXG4gIHwgT3I7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluX2ludCA9XG4gIHwgUGx1c1xuICB8IE1pbnVzXG4gIHwgVGltZXNcbiAgfCBQb3dlclxuICB8IERpdmlkZVxuICB8IExlc3NUaGFuXG4gIHwgTGVzc1RoYW5PckVxdWFsXG4gIHwgR3JlYXRlclRoYW5cbiAgfCBHcmVhdGVyVGhhbk9yRXF1YWxcbiAgfCBFcXVhbHNcbiAgfCBOb3RFcXVhbHM7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluX2Zsb2F0ID1cbiAgfCBQbHVzXG4gIHwgTWludXNcbiAgfCBUaW1lc1xuICB8IFBvd2VyXG4gIHwgRGl2aWRlXG4gIHwgTGVzc1RoYW5cbiAgfCBMZXNzVGhhbk9yRXF1YWxcbiAgfCBHcmVhdGVyVGhhblxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbFxuICB8IEVxdWFsc1xuICB8IE5vdEVxdWFscztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBvcF9iaW5fc3RyaW5nID1cbiAgfCBDb25jYXRcbiAgfCBFcXVhbHM7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfdW4gPVxuICB8IE1ldGEob3BfdW5fbWV0YSlcbiAgfCBJbnQob3BfdW5faW50KVxuICB8IEJvb2wob3BfdW5fYm9vbCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb3BfYmluID1cbiAgfCBJbnQob3BfYmluX2ludClcbiAgfCBGbG9hdChvcF9iaW5fZmxvYXQpXG4gIHwgQm9vbChvcF9iaW5fYm9vbClcbiAgfCBTdHJpbmcob3BfYmluX3N0cmluZyk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYXBfZGlyZWN0aW9uID1cbiAgfCBGb3J3YXJkXG4gIHwgUmV2ZXJzZTtcblxuLy8gQXJlIHRoZXNlIHNob3cgZnVuY3Rpb24gbmVjZXNzYXJ5P1xubGV0IHNob3dfb3BfdW5fbWV0YTogb3BfdW5fbWV0YSA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBVbnF1b3RlID0+IFwiVW4tcXVvdGF0aW9uXCI7XG5cbmxldCBzaG93X29wX3VuX2Jvb2w6IG9wX3VuX2Jvb2wgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTm90ID0+IFwiQm9vbGVhbiBOZWdhdGlvblwiO1xuXG5sZXQgc2hvd19vcF91bl9pbnQ6IG9wX3VuX2ludCA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBNaW51cyA9PiBcIkludGVnZXIgTmVnYXRpb25cIjtcblxubGV0IHNob3dfdW5vcDogb3BfdW4gPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTWV0YShvcCkgPT4gc2hvd19vcF91bl9tZXRhKG9wKVxuICB8IEJvb2wob3ApID0+IHNob3dfb3BfdW5fYm9vbChvcClcbiAgfCBJbnQob3ApID0+IHNob3dfb3BfdW5faW50KG9wKTtcblxubGV0IHNob3dfb3BfYmluX2Jvb2w6IG9wX2Jpbl9ib29sID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IEFuZCA9PiBcIkJvb2xlYW4gQ29uanVuY3Rpb25cIlxuICB8IE9yID0+IFwiQm9vbGVhbiBEaXNqdW5jdGlvblwiO1xuXG5sZXQgc2hvd19vcF9iaW5faW50OiBvcF9iaW5faW50ID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IFBsdXMgPT4gXCJJbnRlZ2VyIEFkZGl0aW9uXCJcbiAgfCBNaW51cyA9PiBcIkludGVnZXIgU3VidHJhY3Rpb25cIlxuICB8IFRpbWVzID0+IFwiSW50ZWdlciBNdWx0aXBsaWNhdGlvblwiXG4gIHwgUG93ZXIgPT4gXCJJbnRlZ2VyIEV4cG9uZW50aWF0aW9uXCJcbiAgfCBEaXZpZGUgPT4gXCJJbnRlZ2VyIERpdmlzaW9uXCJcbiAgfCBMZXNzVGhhbiA9PiBcIkludGVnZXIgTGVzcyBUaGFuXCJcbiAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCJJbnRlZ2VyIExlc3MgVGhhbiBvciBFcXVhbFwiXG4gIHwgR3JlYXRlclRoYW4gPT4gXCJJbnRlZ2VyIEdyZWF0ZXIgVGhhblwiXG4gIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IFwiSW50ZWdlciBHcmVhdGVyIFRoYW4gb3IgRXF1YWxcIlxuICB8IEVxdWFscyA9PiBcIkludGVnZXIgRXF1YWxpdHlcIlxuICB8IE5vdEVxdWFscyA9PiBcIkludGVnZXIgSW5lcXVhbGl0eVwiO1xuXG5sZXQgc2hvd19vcF9iaW5fZmxvYXQ6IG9wX2Jpbl9mbG9hdCA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBQbHVzID0+IFwiRmxvYXQgQWRkaXRpb25cIlxuICB8IE1pbnVzID0+IFwiRmxvYXQgU3VidHJhY3Rpb25cIlxuICB8IFRpbWVzID0+IFwiRmxvYXQgTXVsdGlwbGljYXRpb25cIlxuICB8IFBvd2VyID0+IFwiRmxvYXQgRXhwb25lbnRpYXRpb25cIlxuICB8IERpdmlkZSA9PiBcIkZsb2F0IERpdmlzaW9uXCJcbiAgfCBMZXNzVGhhbiA9PiBcIkZsb2F0IExlc3MgVGhhblwiXG4gIHwgTGVzc1RoYW5PckVxdWFsID0+IFwiRmxvYXQgTGVzcyBUaGFuIG9yIEVxdWFsXCJcbiAgfCBHcmVhdGVyVGhhbiA9PiBcIkZsb2F0IEdyZWF0ZXIgVGhhblwiXG4gIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IFwiRmxvYXQgR3JlYXRlciBUaGFuIG9yIEVxdWFsXCJcbiAgfCBFcXVhbHMgPT4gXCJGbG9hdCBFcXVhbGl0eVwiXG4gIHwgTm90RXF1YWxzID0+IFwiRmxvYXQgSW5lcXVhbGl0eVwiO1xuXG5sZXQgc2hvd19vcF9iaW5fc3RyaW5nOiBvcF9iaW5fc3RyaW5nID0+IHN0cmluZyA9XG4gIGZ1blxuICB8IENvbmNhdCA9PiBcIlN0cmluZyBDb25jYXRlbmF0aW9uXCJcbiAgfCBFcXVhbHMgPT4gXCJTdHJpbmcgRXF1YWxpdHlcIjtcblxubGV0IHNob3dfYmlub3A6IG9wX2JpbiA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBJbnQob3ApID0+IHNob3dfb3BfYmluX2ludChvcClcbiAgfCBGbG9hdChvcCkgPT4gc2hvd19vcF9iaW5fZmxvYXQob3ApXG4gIHwgQm9vbChvcCkgPT4gc2hvd19vcF9iaW5fYm9vbChvcClcbiAgfCBTdHJpbmcob3ApID0+IHNob3dfb3BfYmluX3N0cmluZyhvcCk7XG5cbmxldCBib29sX29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluX2Jvb2wpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG9wKSB7XG4gIHwgQW5kID0+IFwiJiZcIlxuICB8IE9yID0+IFwifHxcIlxuICB9O1xufTtcblxubGV0IGludF9vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbl9pbnQpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG9wKSB7XG4gIHwgUGx1cyA9PiBcIitcIlxuICB8IE1pbnVzID0+IFwiLVwiXG4gIHwgVGltZXMgPT4gXCIqXCJcbiAgfCBQb3dlciA9PiBcIioqXCJcbiAgfCBEaXZpZGUgPT4gXCIvXCJcbiAgfCBMZXNzVGhhbiA9PiBcIjxcIlxuICB8IExlc3NUaGFuT3JFcXVhbCA9PiBcIjw9XCJcbiAgfCBHcmVhdGVyVGhhbiA9PiBcIj5cIlxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBcIj49XCJcbiAgfCBFcXVhbHMgPT4gXCI9PVwiXG4gIHwgTm90RXF1YWxzID0+IFwiIT1cIlxuICB9O1xufTtcblxubGV0IGZsb2F0X29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluX2Zsb2F0KTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICB8IFBsdXMgPT4gXCIrLlwiXG4gIHwgTWludXMgPT4gXCItLlwiXG4gIHwgVGltZXMgPT4gXCIqLlwiXG4gIHwgUG93ZXIgPT4gXCIqKi5cIlxuICB8IERpdmlkZSA9PiBcIi8uXCJcbiAgfCBMZXNzVGhhbiA9PiBcIjwuXCJcbiAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gXCI8PS5cIlxuICB8IEdyZWF0ZXJUaGFuID0+IFwiPi5cIlxuICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBcIj49LlwiXG4gIHwgRXF1YWxzID0+IFwiPT0uXCJcbiAgfCBOb3RFcXVhbHMgPT4gXCIhPS5cIlxuICB9O1xufTtcblxubGV0IHN0cmluZ19vcF90b19zdHJpbmcgPSAob3A6IG9wX2Jpbl9zdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBzd2l0Y2ggKG9wKSB7XG4gIHwgQ29uY2F0ID0+IFwiKytcIlxuICB8IEVxdWFscyA9PiBcIiQ9PVwiXG4gIH07XG59O1xuXG5sZXQgYmluX29wX3RvX3N0cmluZyA9IChvcDogb3BfYmluKTogc3RyaW5nID0+IHtcbiAgc3dpdGNoIChvcCkge1xuICB8IEludChvcCkgPT4gaW50X29wX3RvX3N0cmluZyhvcClcbiAgfCBGbG9hdChvcCkgPT4gZmxvYXRfb3BfdG9fc3RyaW5nKG9wKVxuICB8IEJvb2wob3ApID0+IGJvb2xfb3BfdG9fc3RyaW5nKG9wKVxuICB8IFN0cmluZyhvcCkgPT4gc3RyaW5nX29wX3RvX3N0cmluZyhvcClcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG4vKipcbiAqIGhpZ2hlciBwcmVjZWRlbmNlIG1lYW5zIGxvd2VyIGludCByZXByZXNlbnRhdGlvblxuICpcbiAqIFRoZXNlIHByZWNlZGVuY2VzIGFyZSBpbnRlcnNwZXJzZWQgd2l0aCBleGFtcGxlcyB0byBoZWxwIHlvdVxuICogd29yayBvdXQgdGhlIHByZWNlZGVuY2UuIEZvciBlYWNoIGV4YW1wbGUsIGlmIGEgY29uc3RydWN0XG4gKiByZXF1aXJlcyBwYXJlbnRoZXNlcyB3aGVuIHBsYWNlZCBpbiB0aGUgJ19fX19fJyBzcGFjZSwgdGhlblxuICogeW91ciBuZXcgY29uc3RydWN0J3MgcHJlY2VkZW5jZSBpcyBiZWxvdyB0aGUgY29tbWVudCB3aXRoXG4gKiB0aGUgZXhhbXBsZS4gKGkuZS4gaGlnaGVyIGludClcbiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gaW50O1xuXG5sZXQgbWF4OiB0ID0gMDtcblxubGV0IHVucXVvdGUgPSAxO1xubGV0IGNhc3QgPSAyO1xubGV0IGFwID0gMztcbi8vIF9fX19fKHgpXG4vLyAtIF9fX19fXG5sZXQgbmVnID0gNDtcbi8vIF9fX19fICoqIDJcbmxldCBwb3dlciA9IDU7XG4vLyAyICoqIF9fX19fXG4vLyA2IC8gX19fX19cbmxldCBtdWx0ID0gNjtcbmxldCBub3RfID0gNjtcbi8vIF9fX19fIC8gNlxuLy8gNCAtIF9fX19fXG5sZXQgcGx1cyA9IDc7XG4vLyBfX19fXyAtIDRcbi8vIF9fX19fIDo6IFtdXG5sZXQgY29ucyA9IDg7XG4vLyAxIDo6IF9fX19fXG4vLyBbMSwyXSBAIF9fX19fXG5sZXQgY29uY2F0ID0gOTtcbi8vIF9fX19fIEAgWzEsMl1cbi8vIHggPT0gX19fX19cbmxldCBlcXMgPSAxMDtcbi8vIF9fX19fID09IHhcbi8vIF9fX19fICYmIHRydWVcbmxldCBhbmRfID0gMTE7XG4vLyB0cnVlICYmIF9fX19fXG4vLyBfX19fXyB8fCBmYWxzZVxubGV0IG9yXyA9IDEyO1xuLy8gZmFsc2UgfHwgX19fX19cbmxldCBhbm4gPSAxMztcbi8vIF9fX19fIDogVFxubGV0IGlmXyA9IDE0O1xubGV0IGZ1bl8gPSAxNTtcbi8vIGZ1biB4IC0+IF9fX19fXG5sZXQgcHJvZCA9IDE2O1xuLy8gYSAsIF9fX19fICwgeFxuLy8gX19fX18gOyAoKVxubGV0IHNlbWkgPSAxNztcbi8vICgpIDsgX19fX19cbmxldCBsZXRfID0gMTg7XG5sZXQgcnVsZV9hcnIgPSAxOTtcbmxldCBydWxlX3ByZSA9IDIwO1xubGV0IHJ1bGVfc2VwID0gMjE7XG5sZXQgY2FzZV8gPSAyMjtcbmxldCBtaW4gPSAyNDtcblxubGV0IGNvbXBhcmUgPSAocDE6IHQsIHAyOiB0KTogaW50ID0+XG4gICgtMSkgKiBJbnQuY29tcGFyZSgocDEgOj4gaW50KSwgKHAyIDo+IGludCkpO1xuLy8gbGV0IG1pbiA9IChwMTogdCwgcDI6IHQpOiB0ID0+IG1heChwMSwgcDIpO1xuXG5sZXQgYXNzb2NpYXRpdml0eV9tYXA6IEludE1hcC50KERpcmVjdGlvbi50KSA9XG4gIFtcbiAgICAobXVsdCwgRGlyZWN0aW9uLkxlZnQpLFxuICAgIChwbHVzLCBMZWZ0KSxcbiAgICAocG93ZXIsIFJpZ2h0KSxcbiAgICAoY29ucywgUmlnaHQpLFxuICAgIChjb25jYXQsIFJpZ2h0KSxcbiAgICAoYW5uLCBMZWZ0KSxcbiAgICAoZXFzLCBMZWZ0KSxcbiAgXVxuICB8PiBMaXN0LnRvX3NlcVxuICB8PiBJbnRNYXAub2Zfc2VxO1xuXG5sZXQgYXNzb2NpYXRpdml0eSA9IChwOiB0KTogb3B0aW9uKERpcmVjdGlvbi50KSA9PlxuICBJbnRNYXAuZmluZF9vcHQocCwgYXNzb2NpYXRpdml0eV9tYXApO1xuXG5sZXQgb2ZfYmluX29wOiBPcGVyYXRvcnMub3BfYmluID0+IHQgPVxuICBmdW5cbiAgfCBJbnQob3ApID0+XG4gICAgc3dpdGNoIChvcCkge1xuICAgIHwgUGx1cyA9PiBwbHVzXG4gICAgfCBNaW51cyA9PiBwbHVzXG4gICAgfCBUaW1lcyA9PiBtdWx0XG4gICAgfCBQb3dlciA9PiBwb3dlclxuICAgIHwgRGl2aWRlID0+IG11bHRcbiAgICB8IExlc3NUaGFuID0+IGVxc1xuICAgIHwgTGVzc1RoYW5PckVxdWFsID0+IGVxc1xuICAgIHwgR3JlYXRlclRoYW4gPT4gZXFzXG4gICAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gZXFzXG4gICAgfCBFcXVhbHMgPT4gZXFzXG4gICAgfCBOb3RFcXVhbHMgPT4gZXFzXG4gICAgfVxuICB8IEZsb2F0KG9wKSA9PlxuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IFBsdXMgPT4gcGx1c1xuICAgIHwgTWludXMgPT4gcGx1c1xuICAgIHwgVGltZXMgPT4gbXVsdFxuICAgIHwgUG93ZXIgPT4gcG93ZXJcbiAgICB8IERpdmlkZSA9PiBtdWx0XG4gICAgfCBMZXNzVGhhbiA9PiBlcXNcbiAgICB8IExlc3NUaGFuT3JFcXVhbCA9PiBlcXNcbiAgICB8IEdyZWF0ZXJUaGFuID0+IGVxc1xuICAgIHwgR3JlYXRlclRoYW5PckVxdWFsID0+IGVxc1xuICAgIHwgRXF1YWxzID0+IGVxc1xuICAgIHwgTm90RXF1YWxzID0+IGVxc1xuICAgIH1cbiAgfCBCb29sKG9wKSA9PlxuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IEFuZCA9PiBhbmRfXG4gICAgfCBPciA9PiBvcl9cbiAgICB9XG4gIHwgU3RyaW5nKG9wKSA9PlxuICAgIHN3aXRjaCAob3ApIHtcbiAgICB8IENvbmNhdCA9PiBjb25jYXRcbiAgICB8IEVxdWFscyA9PiBlcXNcbiAgICB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBBbnlcbiAgfCBOdWxcbiAgfCBQYXRcbiAgfCBUeXBcbiAgfCBUUGF0XG4gIHwgUnVsXG4gIHwgRXhwO1xuXG5sZXQgcm9vdCA9IEV4cDtcblxubGV0IGFsbCA9IFtBbnksIE51bCwgUGF0LCBUeXAsIFJ1bCwgRXhwLCBUUGF0XTtcblxubGV0IGNvbnNpc3RlbnQgPSAocywgcycpID0+XG4gIHN3aXRjaCAocywgcycpIHtcbiAgfCAoQW55LCBfKVxuICB8IChfLCBBbnkpID0+IHRydWVcbiAgfCAoTnVsLCBfKVxuICB8IChfLCBOdWwpID0+IGZhbHNlXG4gIHwgXyA9PiBzID09IHMnXG4gIH07XG5cbmxldCB0b19zdHJpbmcgPVxuICBmdW5cbiAgfCBBbnkgPT4gXCJBbnlcIlxuICB8IE51bCA9PiBcIk51bFwiXG4gIHwgUGF0ID0+IFwiUGF0XCJcbiAgfCBUUGF0ID0+IFwiVFBhdFwiXG4gIHwgVHlwID0+IFwiVHlwXCJcbiAgfCBSdWwgPT4gXCJSdWxcIlxuICB8IEV4cCA9PiBcIkV4cFwiO1xuXG5sZXQgdG9fc3RyaW5nX3ZlcmJvc2UgPVxuICBmdW5cbiAgfCBBbnkgPT4gXCJhbnlcIlxuICB8IE51bCA9PiBcIm51bGxcIlxuICB8IFBhdCA9PiBcInBhdHRlcm5cIlxuICB8IFRQYXQgPT4gXCJ0eXBlIHBhdHRlcm5cIlxuICB8IFR5cCA9PiBcInR5cGVcIlxuICB8IFJ1bCA9PiBcInJ1bGVcIlxuICB8IEV4cCA9PiBcImV4cHJlc3Npb25cIjtcbiIsIm1vZHVsZSBTaGFwZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQ29udmV4XG4gICAgfCBDb25jYXZlKFByZWNlZGVuY2UudCk7XG5cbiAgbGV0IGNvbmNhdmUgPSAofnA9PywgKCkpID0+IHtcbiAgICBsZXQgcCA9XG4gICAgICBzd2l0Y2ggKHApIHtcbiAgICAgIHwgTm9uZSA9PiBQcmVjZWRlbmNlLm1pblxuICAgICAgfCBTb21lKHApID0+IHBcbiAgICAgIH07XG4gICAgQ29uY2F2ZShwKTtcbiAgfTtcblxuICBsZXQgZml0cyA9IChsOiB0LCByOiB0KSA9PlxuICAgIHN3aXRjaCAobCwgcikge1xuICAgIHwgKENvbnZleCwgQ29uY2F2ZShfKSlcbiAgICB8IChDb25jYXZlKF8pLCBDb252ZXgpID0+IHRydWVcbiAgICB8IChDb252ZXgsIENvbnZleClcbiAgICB8IChDb25jYXZlKF8pLCBDb25jYXZlKF8pKSA9PiBmYWxzZVxuICAgIH07XG5cbiAgbGV0IGZpdHRpbmcgPVxuICAgIGZ1blxuICAgIHwgQ29udmV4ID0+IGNvbmNhdmUoKVxuICAgIHwgQ29uY2F2ZShfKSA9PiBDb252ZXg7XG5cbiAgbGV0IGZsaXAgPVxuICAgIGZ1blxuICAgIHwgQ29udmV4ID0+IGNvbmNhdmUoKVxuICAgIHwgQ29uY2F2ZShfKSA9PiBDb252ZXg7XG5cbiAgbGV0IGFic29sdXRlID0gKGQ6IFV0aWwuRGlyZWN0aW9uLnQsIHM6IHQpOiBVdGlsLkRpcmVjdGlvbi50ID0+XG4gICAgLyogVGhlIGRpcmVjdGlvbiBhbiBzLXNoYXBlZCBuaWIgb24gdGhlIGQtaGFuZCBzaWRlIGlzIGZhY2luZyAqL1xuICAgIHN3aXRjaCAocykge1xuICAgIHwgQ29udmV4ID0+IGRcbiAgICB8IENvbmNhdmUoXykgPT4gVXRpbC5EaXJlY3Rpb24udG9nZ2xlKGQpXG4gICAgfTtcblxuICBsZXQgcmVsYXRpdmUgPSAobmliOiBVdGlsLkRpcmVjdGlvbi50LCBzaWRlOiBVdGlsLkRpcmVjdGlvbi50KTogdCA9PlxuICAgIG5pYiA9PSBzaWRlID8gQ29udmV4IDogY29uY2F2ZSgpO1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzaGFwZTogU2hhcGUudCxcbiAgc29ydDogU29ydC50LFxufTtcblxubGV0IHNoYXBlID0gbiA9PiBuLnNoYXBlO1xuXG5sZXQgZml0cyA9IChsOiB0LCByOiB0KTogYm9vbCA9PlxuICBsLnNvcnQgPT0gci5zb3J0ICYmIFNoYXBlLmZpdHMobC5zaGFwZSwgci5zaGFwZSk7XG5cbmxldCBmaXR0aW5nID0gKG5pYjogdCk6IHQgPT4gey4uLm5pYiwgc2hhcGU6IFNoYXBlLmZpdHRpbmcobmliLnNoYXBlKX07XG5cbmxldCBmbGlwID0gKG5pYjogdCkgPT4gey4uLm5pYiwgc2hhcGU6IFNoYXBlLmZsaXAobmliLnNoYXBlKX07XG5cbi8vIGxldCB0b2dnbGUgPSAobmliOiB0KSA9PiB7XG4vLyAgIC4uLm5pYixcbi8vICAgb3JpZW50YXRpb246IERpcmVjdGlvbi50b2dnbGUobmliLm9yaWVudGF0aW9uKSxcbi8vIH07XG5cbi8vIGxldCBzb3J0X2NvbnNpc3RlbnQgPSAobmliOiB0LCBuaWInOiB0KSA9PiBuaWIuc29ydCA9PSBuaWInLnNvcnQ7XG5cbi8vIGxldCBvZl9zb3J0ID0gc29ydCA9PiBbXG4vLyAgIHtzb3J0LCBvcmllbnRhdGlvbjogTGVmdH0sXG4vLyAgIHtzb3J0LCBvcmllbnRhdGlvbjogUmlnaHR9LFxuLy8gXTtcbiIsIm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzaGFwZSA9XG4gIHwgQ29udmV4XG4gIHwgQ29uY2F2ZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBpZDogSWQudCxcbiAgc2hhcGUsXG59O1xuXG5sZXQgaWQgPSBnID0+IGcuaWQ7XG5cbmxldCBzaGFwZXMgPSBnID0+XG4gIHN3aXRjaCAoZy5zaGFwZSkge1xuICB8IENvbnZleCA9PiBOaWIuU2hhcGUuKENvbnZleCwgQ29udmV4KVxuICB8IENvbmNhdmUgPT4gTmliLlNoYXBlLihDb25jYXZlKFByZWNlZGVuY2UubWluKSwgQ29uY2F2ZShQcmVjZWRlbmNlLm1pbikpXG4gIH07XG5cbi8vIGFzc3VtZXMgc2FtZSBzaGFwZSBvbiBib3RoIHNpZGVzXG5sZXQgbWtfZml0c19zaGFwZSA9IChzOiBOaWIuU2hhcGUudCk6IHQgPT4ge1xuICBsZXQgaWQgPSBJZC5taygpO1xuICBsZXQgc2hhcGUgPVxuICAgIHN3aXRjaCAocykge1xuICAgIHwgQ29udmV4ID0+IENvbmNhdmVcbiAgICB8IENvbmNhdmUoXykgPT4gQ29udmV4XG4gICAgfTtcbiAge2lkLCBzaGFwZX07XG59O1xuLy9sZXQgbWtfZml0cyA9ICgobCwgcik6IE5pYnMuc2hhcGVzKTogb3B0aW9uKHQpID0+XG4vLyAgTmliLlNoYXBlLmZpdHMobCwgcikgPyBOb25lIDogU29tZShta19maXRzX3NoYXBlKGwpKTtcblxubGV0IGZpdHNfc2hhcGUgPSAoZzogdCwgczogTmliLlNoYXBlLnQpID0+XG4gIHN3aXRjaCAoZy5zaGFwZSwgcykge1xuICB8IChDb252ZXgsIENvbnZleClcbiAgfCAoQ29uY2F2ZSwgQ29uY2F2ZShfKSkgPT4gZmFsc2VcbiAgfCAoQ29udmV4LCBDb25jYXZlKF8pKVxuICB8IChDb25jYXZlLCBDb252ZXgpID0+IHRydWVcbiAgfTtcblxubGV0IGZpdHMgPSAoZzogdCwgZyc6IHQpID0+XG4gIHN3aXRjaCAoZy5zaGFwZSwgZycuc2hhcGUpIHtcbiAgfCAoQ29udmV4LCBDb252ZXgpXG4gIHwgKENvbmNhdmUsIENvbmNhdmUpID0+IGZhbHNlXG4gIHwgKENvbnZleCwgQ29uY2F2ZSlcbiAgfCAoQ29uY2F2ZSwgQ29udmV4KSA9PiB0cnVlXG4gIH07XG5cbmxldCBtZXJnZSA9IChnczogbGlzdCh0KSk6IG9wdGlvbih0KSA9PlxuICBzd2l0Y2ggKGdzKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9sYXN0X29wdCh0bCkpIHtcbiAgICB8IE5vbmUgPT4gU29tZShoZClcbiAgICB8IFNvbWUoKF8sIGZ0KSkgPT4gaGQuc2hhcGUgPT0gZnQuc2hhcGUgPyBTb21lKGhkKSA6IE5vbmVcbiAgICB9XG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vLyBtYWtlIGFuIGVudW1cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHN0cmluZztcblxubW9kdWxlIEluZGV4ID0ge1xuICB0eXBlIHQgPSBpbnQ7XG59O1xuXG5sZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aDtcbmxldCBjb21wYXJlID0gU3RyaW5nLmNvbXBhcmU7XG5sZXQgcm1fbnRoID0gVXRpbC5TdHJpbmdVdGlsLnJlbW92ZV9udGg7XG5sZXQgcm1fbGFzdCA9IFV0aWwuU3RyaW5nVXRpbC5yZW1vdmVfbGFzdDtcbmxldCBybV9maXJzdCA9IFV0aWwuU3RyaW5nVXRpbC5yZW1vdmVfZmlyc3Q7XG5sZXQgc3BsaXRfbnRoID0gVXRpbC5TdHJpbmdVdGlsLnNwbGl0X250aDtcbmxldCBpbnNlcnRfbnRoID0gVXRpbC5TdHJpbmdVdGlsLmluc2VydF9udGg7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBBIGxhYmVsIGlzIHRoZSB0ZXh0dWFsIGV4cHJlc3Npb24gb2YgYSBmb3JtJ3MgZGVsaW1pdGVycyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gbGlzdChUb2tlbi50KTtcbmV4Y2VwdGlvbiBFbXB0eV9sYWJlbDtcblxubGV0IGxlbmd0aDogdCA9PiBpbnQgPSBMaXN0Lmxlbmd0aDtcblxubGV0IHJldjogdCA9PiB0ID0gTGlzdC5yZXY7XG5cbmxldCBoZF90bCA9IChsYmw6IHQpOiAoVG9rZW4udCwgbGlzdChUb2tlbi50KSkgPT5cbiAgc3dpdGNoIChsYmwpIHtcbiAgfCBbXSA9PiByYWlzZShFbXB0eV9sYWJlbClcbiAgfCBbaGQsIC4uLnRsXSA9PiAoaGQsIHRsKVxuICB9O1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gKE5pYi50LCBOaWIudCk7XG5cbltAZGVyaXZpbmcgc2hvd11cbnR5cGUgc2hhcGVzID0gKE5pYi5TaGFwZS50LCBOaWIuU2hhcGUudCk7XG5cbmxldCBmbGlwID0gKChsLCByKTogdCkgPT4gKHIsIGwpO1xuXG5sZXQgb2ZfaG9sZSA9IHNvcnQgPT4gTmliLih7c29ydCwgc2hhcGU6IENvbnZleH0sIHtzb3J0LCBzaGFwZTogQ29udmV4fSk7XG5cbmxldCBmaXR0aW5nID0gKChsLCByKTogdCkgPT4gKE5pYi5maXR0aW5nKGwpLCBOaWIuZml0dGluZyhyKSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIG91dDogU29ydC50LFxuICBpbl86IGxpc3QoU29ydC50KSxcbiAgbmliczogTmlicy50LFxufTtcblxubGV0IGZsaXBfbmlicyA9IG0gPT4gey4uLm0sIG5pYnM6IE5pYnMuZmxpcChtLm5pYnMpfTtcblxubGV0IG1rX29wID0gKG91dCwgaW5fKSA9PiB7XG4gIGxldCBuID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0OiBvdXR9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChuLCBuKX07XG59O1xubGV0IG1rX3ByZSA9IChwLCBvdXQsIGluXykgPT4ge1xuICBsZXQgbCA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogb3V0fTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBvdXR9O1xuICB7b3V0LCBpbl8sIG5pYnM6IChsLCByKX07XG59O1xubGV0IG1rX3Bvc3QgPSAocCwgb3V0LCBpbl8pID0+IHtcbiAgbGV0IGwgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBvdXR9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydDogb3V0fTtcbiAge291dCwgaW5fLCBuaWJzOiAobCwgcil9O1xufTtcbmxldCBta19iaW4gPSAofmw9PywgfnI9PywgcCwgb3V0LCBpbl8pID0+IHtcbiAgbGV0IGwgPSBPcHRpb24udmFsdWUobCwgfmRlZmF1bHQ9b3V0KTtcbiAgbGV0IHIgPSBPcHRpb24udmFsdWUociwgfmRlZmF1bHQ9b3V0KTtcbiAgbGV0IG5pYiA9IHNvcnQgPT4gTmliLntzb3J0LCBzaGFwZTogQ29uY2F2ZShwKX07XG4gIHtvdXQsIGluXywgbmliczogKG5pYihsKSwgbmliKHIpKX07XG59O1xuXG4vLyBmb3JtcyB3aGVyZSB0aXBzIGNhbiBiZSBkaWZmZXJlbnQgdGhhbiBvdXQgc29ydFxubGV0IG1rX3ByZScgPSAocCwgb3V0LCBzb3J0X2wsIGluXywgc29ydF9yKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29udmV4LCBzb3J0OiBzb3J0X2x9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IHNvcnRfcn07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5sZXQgbWtfcG9zdCcgPSAocCwgb3V0LCBzb3J0X2wsIGluXywgc29ydF9yKSA9PiB7XG4gIGxldCBsID0gTmliLntzaGFwZTogQ29uY2F2ZShwKSwgc29ydDogc29ydF9sfTtcbiAgbGV0IHIgPSBOaWIue3NoYXBlOiBDb252ZXgsIHNvcnQ6IHNvcnRfcn07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5sZXQgbWtfYmluJyA9IChwLCBvdXQsIHNvcnRfbCwgaW5fLCBzb3J0X3IpID0+IHtcbiAgbGV0IGwgPSBOaWIue3NoYXBlOiBDb25jYXZlKHApLCBzb3J0OiBzb3J0X2x9O1xuICBsZXQgciA9IE5pYi57c2hhcGU6IENvbmNhdmUocCksIHNvcnQ6IHNvcnRfcn07XG4gIHtvdXQsIGluXywgbmliczogKGwsIHIpfTtcbn07XG5cbmxldCBuaWJzID0gKH5pbmRleD0/LCBtb2xkOiB0KTogTmlicy50ID0+XG4gIHN3aXRjaCAoaW5kZXgpIHtcbiAgfCBOb25lID0+IG1vbGQubmlic1xuICB8IFNvbWUoaSkgPT5cbiAgICBsZXQgKGwsIHIpID0gbW9sZC5uaWJzO1xuICAgIGxldCBpbl8gPSBtb2xkLmluXztcbiAgICBsZXQgbCA9XG4gICAgICBpID09IDAgPyBsIDogTmliLntzaGFwZTogU2hhcGUuY29uY2F2ZSgpLCBzb3J0OiBMaXN0Lm50aChpbl8sIGkgLSAxKX07XG4gICAgbGV0IHIgPVxuICAgICAgaSA9PSBMaXN0Lmxlbmd0aChpbl8pXG4gICAgICAgID8gciA6IE5pYi57c2hhcGU6IFNoYXBlLmNvbmNhdmUoKSwgc29ydDogTGlzdC5udGgoaW5fLCBpKX07XG4gICAgKGwsIHIpO1xuICB9O1xuXG5sZXQgbmliX3NoYXBlcyA9ICh+aW5kZXg9PywgbW9sZDogdCk6IE5pYnMuc2hhcGVzID0+IHtcbiAgbGV0IChuaWJfbCwgbmliX3IpID0gbmlicyh+aW5kZXg/LCBtb2xkKTtcbiAgKG5pYl9sLnNoYXBlLCBuaWJfci5zaGFwZSk7XG59O1xuXG5tb2R1bGUgTWFwID0ge1xuICB0eXBlIG1vbGQgPSB0O1xuICBpbmNsdWRlIElkLk1hcDtcbiAgdHlwZSBub25yZWMgdCA9IElkLk1hcC50KGxpc3QobW9sZCkpO1xufTtcblxubGV0IG9mX2dyb3V0OiAoR3JvdXQudCwgU29ydC50KSA9PiB0ID1cbiAgKGcsIHNvcnQpID0+IHtcbiAgICBuaWJzOlxuICAgICAgLy8gVE9ETyhkKTogcmV2aXNpdCB0aGlzIHdoZW4gcmVmb3JtdWxhdGluZyBtb2xkc1xuICAgICAgc3dpdGNoIChnLnNoYXBlKSB7XG4gICAgICB8IENvbnZleCA9PlxuICAgICAgICBsZXQgbiA9IE5pYi57c2hhcGU6IENvbnZleCwgc29ydH07XG4gICAgICAgIChuLCBuKTtcbiAgICAgIHwgQ29uY2F2ZSA9PlxuICAgICAgICBsZXQgbiA9IE5pYi57c2hhcGU6IENvbmNhdmUoUHJlY2VkZW5jZS5taW4pLCBzb3J0fTtcbiAgICAgICAgKG4sIG4pO1xuICAgICAgfSxcbiAgICBvdXQ6IHNvcnQsXG4gICAgaW5fOiBbXSxcbiAgfTtcblxubGV0IG9mX3NlY29uZGFyeSA9IChsOiBOaWIudCkgPT4ge1xuICBuaWJzOiAoTmliLmZsaXAobCksIGwpLFxuICBvdXQ6IGwuc29ydCxcbiAgaW5fOiBbXSxcbn07XG5cbmxldCBmaXRzX3NoYXBlID0gKGQ6IERpcmVjdGlvbi50LCBzOiBOaWIuU2hhcGUudCwgbTogdCk6IGJvb2wgPT4ge1xuICBsZXQgcycgPSBEaXJlY3Rpb24uY2hvb3NlKGQsIG5pYl9zaGFwZXMobSkpO1xuICBOaWIuU2hhcGUuZml0cyhzLCBzJyk7XG59O1xuXG5sZXQgY29uc2lzdGVudF9zaGFwZXMgPSAobXM6IGxpc3QodCkpID0+XG4gIG1zXG4gIHw+IExpc3QubWFwKG5pYl9zaGFwZXMpXG4gIHw+IExpc3Quc3BsaXRcbiAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdFV0aWwuc2luZ2xlX2VsZW0pO1xuXG5sZXQgaXNfaW5maXhfb3AgPSAobW9sZDogdCk6IGJvb2wgPT5cbiAgc3dpdGNoIChtb2xkLm5pYnMsIG1vbGQuaW5fKSB7XG4gIHwgKCh7c2hhcGU6IENvbmNhdmUoXyksIF99LCB7c2hhcGU6IENvbmNhdmUoXyksIF99KSwgW10pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbmxldCBjaGV2cm9uID0gKHNvcnQ6IFNvcnQudCwgcDogUHJlY2VkZW5jZS50LCBkOiBVdGlsLkRpcmVjdGlvbi50KTogdCA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBSaWdodCA9PiBta19wb3N0KHAsIHNvcnQsIFtdKVxuICB8IExlZnQgPT4gbWtfcHJlKHAsIHNvcnQsIFtdKVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gTW9sZDtcbm1vZHVsZSBQID0gUHJlY2VkZW5jZTtcblxuLyogRk9STVxuICAgVGhpcyBtb2R1bGUgZGV0ZXJtaW5lcyB0aGUgc3ludGFjdGljIGV4dGVudCBvZiB0aGUgbGFuZ3VhZ2U7IHRoZVxuICAgZW50aXJlIFN5bnRheCBtb2R1bGUgaXMgZHJpdmVuIGJ5IHRoZSBiZWxvdyBkZWZpbml0aW9ucy4gQWRkaW5nXG4gICBhIG5ldyBzeW50YWN0aWMgZm9ybSBpcyBzaW1wbHkgYSBtYXR0ZXIgb2YgYWRkaW5nIGEgbmV3IGxpbmUgdG8gZWl0aGVyXG4gICB0aGUgJ2NvbnZleF9tb25vcycgdGFibGUsIGZvciBzaW5nbGUtdG9rZW4gZm9ybXMsIG9yIHRoZSAnZm9ybXMnXG4gICB0YWJsZSwgZm9yIGNvbXBvdW5kIGZvcm1zLlxuICAgVGhlIHdyYXBwaW5nIGZ1bmN0aW9ucyBzZWVuIGluIGJvdGggb2YgdGhvc2UgdGFibGVzIGRldGVybWluZSB0aGVcbiAgIHNoYXBlLCBwcmVjZWRlbmNlLCBhbmQgZXhwYW5zaW9uIGJlaGF2aW9yIG9mIHRoZSBmb3JtLiAqL1xuXG5sZXQgcmVnZXhwID0gKHIsIHMpID0+XG4gIEpzX29mX29jYW1sLlJlZ2V4cC5zdHJpbmdfbWF0Y2goSnNfb2Zfb2NhbWwuUmVnZXhwLnJlZ2V4cChyKSwgcywgMClcbiAgfD4gT3B0aW9uLmlzX3NvbWU7XG5cbi8qIEEgbGFiZWwgaXMgdGhlIHRleHR1YWwgZXhwcmVzc2lvbiBvZiBhIGZvcm0ncyBkZWxpbWl0ZXJzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGxhYmVsID0gbGlzdChUb2tlbi50KTtcblxuLyogVGhlIGNvbnN0cnVjdGlvbiBvZiBhIGNvbXBvdW5kIGZvcm1zIGNhbiBiZSB0cmlnZ2VyZWQgYnkgaW5zZXJ0aW5nXG4gICBvbmUgb2YgaXRzIGRlbGltaXRlcnMgdGhyb3VnaCBhIHByb2Nlc3MgY2FsbGVkIGV4cGFuc2lvbi4gRXhwYW5zaW9uXG4gICBjYW4gZWl0aGVyIG9jY3VyIChJbnN0YW50KWx5IHVwb24gZGVsaW1pdGVyIGNyZWF0aW9uLCBvciBiZSAoRGVsYXllZClcbiAgIHVudGlsIGFmdGVyIGEgdG9rZW4gYm91bmRhcnkgZXZlbnQgaXMgdHJpZ2dlcmVkIChzYXkgYnkgcHJlc3NpbmdcbiAgIHNwYWNlIGFmdGVyIGVudGVyaW5nICdsZXQnKS4gVGhlIChTdGF0aWMpIGNhc2UgaXMgdXNlZCBmb3IgbW9ub3NcbiAgIGFrYSBzaW5nbGUtdG9rZW4gZm9ybXMuICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwYW5zaW9uX3RpbWUgPVxuICB8IFN0YXRpY1xuICB8IEluc3RhbnRcbiAgfCBEZWxheWVkO1xuXG4vKiBFeHBhbnNpb24gY2FuIGJlIHRyaWdnZXJlZCBieSBlaXRoZXIvYm90aCB0aGUgZmlyc3Qgb3IgbGFzdCB0b2tlblxuICAgb2YgYSBmb3JtLCByZXByZXNlbnRlZCBoZXJlIGJ5IHRoZSBmaXJzdC9sYXN0IGVsZW1lbnRzIG9mIHRoaXMgcGFpci4gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwYW5zaW9uID0gKGV4cGFuc2lvbl90aW1lLCBleHBhbnNpb25fdGltZSk7XG5cbi8qIEEgbGFiZWwsIGEgbW9sZCwgYW5kIGV4cGFuc2lvbiBiZWhhdmlvciB0b2dldGhlciBkZXRlcm1pbmUgYSBmb3JtLiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBsYWJlbCxcbiAgZXhwYW5zaW9uLFxuICBtb2xkOiBNb2xkLnQsXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGJhZF90b2tlbl9jbHMgPVxuICB8IE90aGVyXG4gIHwgQmFkSW50O1xuXG5sZXQgbWsgPSAoZXhwYW5zaW9uLCBsYWJlbCwgbW9sZCkgPT4ge2xhYmVsLCBtb2xkLCBleHBhbnNpb259O1xuXG4vKiBBYmJyZXZpYXRpb25zIGZvciBleHBhbnNpb24gYmVoYXZpb3JzICovXG5sZXQgc3M6IGV4cGFuc2lvbiA9IChTdGF0aWMsIFN0YXRpYyk7XG5sZXQgaWk6IGV4cGFuc2lvbiA9IChJbnN0YW50LCBJbnN0YW50KTtcbmxldCBpczogZXhwYW5zaW9uID0gKEluc3RhbnQsIFN0YXRpYyk7XG5sZXQgZHM6IGV4cGFuc2lvbiA9IChEZWxheWVkLCBTdGF0aWMpO1xuXG5sZXQgbWtfaW5maXggPSAodDogVG9rZW4udCwgc29ydDogU29ydC50LCBwcmVjKSA9PlxuICBtayhzcywgW3RdLCBta19iaW4ocHJlYywgc29ydCwgW10pKTtcblxubGV0IG1rX251bF9pbmZpeCA9ICh0OiBUb2tlbi50LCBwcmVjKSA9PlxuICBtayhzcywgW3RdLCBta19iaW4ofmw9QW55LCB+cj1BbnksIHByZWMsIEFueSwgW10pKTtcblxuLyogVG9rZW4gUmVjb2duaXRpb24gUHJlZGljYXRlcyAqL1xuXG4vKiBBLiBTZWNvbmRhcnkgTm90YXRpb24gKENvbW1lbnRzLCBXaGl0ZXNwYWNlLCBldGMuKSAgKi9cbmxldCBzcGFjZSA9IFwiIFwiO1xuLyogSEFDSyhhbmRyZXcpOiBVc2luZyDij44gY2hhciB0byByZXByZXNlbnQgbGluZWJyZWFrIHRvIGF2b2lkIHJlZ2V4cFxuICAgaXNzdWVzIHdpdGggdXNpbmcgXFxuLiBTb21lb25lIHdobyB1bmRlcnN0YW5kcyByZWdleHBzIGJldHRlclxuICAgc2hvdWxkIGZpeCB0aGlzLiAqL1xubGV0IGxpbmVicmVhayA9IFwi4o+OXCI7XG5sZXQgY29tbWVudF9yZWdleHAgPSBcIl4jW14j4o+OXSojJFwiOyAvKiBNdWx0aWxpbmUgY29tbWVudHMgbm90IHN1cHBvcnRlZCAqL1xubGV0IGlzX2NvbW1lbnQgPSB0ID0+IHJlZ2V4cChjb21tZW50X3JlZ2V4cCwgdCkgfHwgdCA9PSBcIiNcIjtcbmxldCBpc19jb21tZW50X2RlbGltID0gdCA9PiB0ID09IFwiI1wiO1xubGV0IGlzX3NlY29uZGFyeSA9IHQgPT5cbiAgTGlzdC5tZW0odCwgW3NwYWNlLCBsaW5lYnJlYWtdKSB8fCByZWdleHAoY29tbWVudF9yZWdleHAsIHQpO1xuXG4vKiBTVFJJTkdTOiBzcGVjaWFsLWNhc2Ugc3ludGF4ICovXG5cbi8qIGlzX3N0cmluZzogbGFzdCBjbGF1c2UgaXMgYSBzb21ld2hhdCBoYWNreSB3YXkgb2YgbWFraW5nIHN1cmVcbiAgIHRoZXJlIGFyZSBhdCBtb3N0IHR3byBxdW90ZXMsIGluIG9yZGVyIHRvIHByZXZlbnQgbWVyZ2VzICovXG5sZXQgaXNfc3RyaW5nID0gdCA9PlxuICByZWdleHAoXCJeXFxcIlte4o+OXSpcXFwiJFwiLCB0KVxuICAmJiBMaXN0Lmxlbmd0aChTdHJpbmcuc3BsaXRfb25fY2hhcignXCInLCB0KSkgPCA0O1xubGV0IHN0cmluZ19kZWxpbSA9IFwiXFxcIlwiO1xubGV0IGVtcHR5X3N0cmluZyA9IHN0cmluZ19kZWxpbSArKyBzdHJpbmdfZGVsaW07XG5sZXQgaXNfc3RyaW5nX2RlbGltID0gKD09KShzdHJpbmdfZGVsaW0pO1xubGV0IHN0cmlwX3F1b3RlcyA9IHMgPT5cbiAgaWYgKFN0cmluZy5sZW5ndGgocykgPCAyKSB7XG4gICAgcztcbiAgfSBlbHNlIGlmIChTdHJpbmcuc3ViKHMsIDAsIDEpICE9IFwiXFxcIlwiXG4gICAgICAgICAgICAgfHwgU3RyaW5nLnN1YihzLCBTdHJpbmcubGVuZ3RoKHMpIC0gMSwgMSkgIT0gXCJcXFwiXCIpIHtcbiAgICBzO1xuICB9IGVsc2Uge1xuICAgIFN0cmluZy5zdWIocywgMSwgU3RyaW5nLmxlbmd0aChzKSAtIDIpO1xuICB9O1xubGV0IHN0cmluZ19xdW90ZSA9IHMgPT4gXCJcXFwiXCIgKysgcyArKyBcIlxcXCJcIjtcblxubGV0IGtleXdvcmRzID0gW1xuICBcImZ1blwiLFxuICBcImxldFwiLFxuICBcImluXCIsXG4gIFwidHlwZVwiLFxuICBcImNhc2VcIixcbiAgXCJ0ZXN0XCIsXG4gIFwiaWZcIixcbiAgXCJ0aGVuXCIsXG4gIFwiZWxzZVwiLFxuXTtcbmxldCByZXNlcnZlZF9rZXl3b3JkcyA9IFtcIm9mXCIsIFwid2hlblwiLCBcIndpdGhcIiwgXCJzd2l0Y2hcIiwgXCJtYXRjaFwiXTtcbmxldCBpc19rZXl3b3JkID0gcmVnZXhwKFwiXihcIiArKyBTdHJpbmcuY29uY2F0KFwifFwiLCBrZXl3b3JkcykgKysgXCIpJFwiKTtcbmxldCBpc19yZXNlcnZlZF9rZXl3b3JkID1cbiAgcmVnZXhwKFwiXihcIiArKyBTdHJpbmcuY29uY2F0KFwifFwiLCByZXNlcnZlZF9rZXl3b3JkcykgKysgXCIpJFwiKTtcblxuLyogUG90ZW50aWFsIHRva2VuczogVGhlc2UgYXJlIGZhbGx0aHJvdWdoIGNsYXNzZXMgd2hpY2ggZGV0ZXJtaW5lXG4gKiB0aGUgYmVoYXZpb3Igd2hlbiBpbnNlcnRpbmcgYSBjaGFyYWN0ZXIgaW4gY29udGFjdCB3aXRoIGEgdG9rZW4gKi9cbmxldCBpc19wb3RlbnRpYWxfb3BlcmFuZCA9IHJlZ2V4cChcIl5bYS16QS1aMC05XydcXFxcLj9dKyRcIik7XG4vKiBBbnl0aGluZyBlbHNlIGlzIGNvbnNpZGVyZWQgYSBwb3RlbnRpYWwgb3BlcmF0b3IsIGFzIGxvbmdcbiAqICBhcyBpdCBkb2VzIG5vdCBjb250YWluIGFueSB3aGl0ZXNwYWNlLCBsaW5lYnJlYWtzLCBjb21tZW50XG4gKiAgZGVsaW1pdGVycywgc3RyaW5nIGRlbGltaXRlcnMsIG9yIHRoZSBpbnN0YW50IGV4cGFuZGluZyBwYWlyZWRcbiAqICBkZWxpbWl0ZXJzOiAoKVtdfCAqL1xubGV0IGlzX3BvdGVudGlhbF9vcGVyYXRvciA9IHJlZ2V4cChcIl5bXmEtekEtWjAtOV8nP1xcXCIj4o+OXFxcXHNcXFxcW1xcXFxdXFxcXChcXFxcKV0rJFwiKTtcbmxldCBpc19wb3RlbnRpYWxfdG9rZW4gPSB0ID0+XG4gIGlzX3BvdGVudGlhbF9vcGVyYW5kKHQpXG4gIHx8IGlzX3BvdGVudGlhbF9vcGVyYXRvcih0KVxuICB8fCBpc19zdHJpbmcodClcbiAgfHwgaXNfY29tbWVudCh0KTtcblxubGV0IGlzX2FyYml0YXJ5X2ludCA9IHJlZ2V4cChcIl4tP1xcXFxkK1swLTlfXSokXCIpO1xubGV0IGlzX2FyYml0YXJ5X2Zsb2F0ID0geCA9PlxuICB4ICE9IFwiLlwiICYmIHggIT0gXCItXCIgJiYgcmVnZXhwKFwiXi0/WzAtOV0qXFxcXC4/WzAtOV0qKChlfEUpLT9bMC05XSopPyRcIiwgeCk7XG5sZXQgaXNfaW50ID0gc3RyID0+IGlzX2FyYml0YXJ5X2ludChzdHIpICYmIGludF9vZl9zdHJpbmdfb3B0KHN0cikgIT0gTm9uZTtcbi8qIE5PVEU6IFRoZSBpc19hcmJpdGFyeV9pbnQgY2hlY2sgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnRcbiAgIG1pbnVzZXMgZnJvbSBiZWluZyBwYXJzZWQgYXMgcGFydCBvZiB0aGUgaW50IHRva2VuLiAqL1xuXG5sZXQgaXNfYmFkX2ludCA9IHN0ciA9PiBpc19hcmJpdGFyeV9pbnQoc3RyKSAmJiAhaXNfaW50KHN0cik7XG5cbi8qIE5PVEU6IEFzIHdlbGwgYXMgbWFraW5nIGlzX2Zsb2F0ICBkaXNqb2ludCBmcm9tIGlzX2ludCxcbiAgIHRoZSBpc19hcmJpdGFyeV9pbnQgIGFsc28gcHJldmVudHMgaW50cyBvdmVyIGludF9tYXggZnJvbSBiZWluZ1xuICAgY2FzdCBhcyBmbG9hdHMuIFRoZSBpc19hcmJpdGFyeV9mbG9hdCBjaGVjayBpcyBuZWNlc3NhcnkgdG8gcHJldmVudFxuICAgbWludXNlcyBmcm9tIGJlaW5nIHBhcnNlZCBhcyBwYXJ0IG9mIHRoZSBmbG9hdCB0b2tlbi4gKi9cbmxldCBpc19mbG9hdCA9IHN0ciA9PlxuICAhaXNfYXJiaXRhcnlfaW50KHN0cilcbiAgJiYgaXNfYXJiaXRhcnlfZmxvYXQoc3RyKVxuICAmJiBmbG9hdF9vZl9zdHJpbmdfb3B0KHN0cikgIT0gTm9uZTtcbmxldCBpc19iYWRfZmxvYXQgPSBzdHIgPT4gaXNfYXJiaXRhcnlfZmxvYXQoc3RyKSAmJiAhaXNfZmxvYXQoc3RyKTtcbmxldCBib29scyA9IFtcInRydWVcIiwgXCJmYWxzZVwiXTtcbmxldCBpc19ib29sID0gcmVnZXhwKFwiXihcIiArKyBTdHJpbmcuY29uY2F0KFwifFwiLCBib29scykgKysgXCIpJFwiKTtcblxubGV0IGlzX3ZhciA9IHN0ciA9PlxuICAhaXNfYm9vbChzdHIpXG4gICYmIHN0ciAhPSBcIl9cIlxuICAvLyYmICFpc19rZXl3b3JkKHN0cilcbiAgLy8mJiAhaXNfcmVzZXJ2ZWQoc3RyKVxuICAmJiByZWdleHAoXG4gICAgICAge3woXlthLXpfXVtBLVphLXowLTlfJ10qJCl8KF5bQS1aXVtBLVphLXowLTlfJ10qXFwuW2Etel1bQS1aYS16MC05XyddKiQpfH0sXG4gICAgICAgc3RyLFxuICAgICApO1xubGV0IGlzX2NhcGl0YWxpemVkX25hbWUgPSByZWdleHAoXCJeW0EtWl1bQS1aYS16MC05X10qJFwiKTtcbmxldCBpc19jdHIgPSBpc19jYXBpdGFsaXplZF9uYW1lO1xubGV0IGJhc2VfdHlwcyA9IFtcIlN0cmluZ1wiLCBcIkludFwiLCBcIkZsb2F0XCIsIFwiQm9vbFwiXTtcbmxldCBpc19iYXNlX3R5cCA9IHJlZ2V4cChcIl4oXCIgKysgU3RyaW5nLmNvbmNhdChcInxcIiwgYmFzZV90eXBzKSArKyBcIikkXCIpO1xubGV0IGlzX3R5cF92YXIgPSBzdHIgPT4gaXNfdmFyKHN0cikgfHwgaXNfY2FwaXRhbGl6ZWRfbmFtZShzdHIpO1xubGV0IHdpbGQgPSBcIl9cIjtcbmxldCBpc193aWxkID0gcmVnZXhwKFwiXlwiICsrIHdpbGQgKysgXCIkXCIpO1xuXG4vKiBMaXN0IGxpdGVyYWxzICovXG5sZXQgbGlzdF9zdGFydCA9IFwiW1wiO1xubGV0IGxpc3RfZW5kID0gXCJdXCI7XG5sZXQgbGlzdGxpdF9sYmwgPSBbbGlzdF9zdGFydCwgbGlzdF9lbmRdO1xubGV0IGVtcHR5X2xpc3QgPSBsaXN0X3N0YXJ0ICsrIGxpc3RfZW5kO1xubGV0IGlzX2VtcHR5X2xpc3QgPSAoPT0pKGVtcHR5X2xpc3QpO1xuXG4vKiBUdXBsZXMgKi9cbmxldCB0dXBsZV9zdGFydCA9IFwiKFwiO1xubGV0IHR1cGxlX2VuZCA9IFwiKVwiO1xubGV0IHR1cGxlX2xibCA9IFt0dXBsZV9zdGFydCwgdHVwbGVfZW5kXTtcbmxldCBlbXB0eV90dXBsZSA9IHR1cGxlX3N0YXJ0ICsrIHR1cGxlX2VuZDtcbmxldCBpc19lbXB0eV90dXBsZSA9ICg9PSkoZW1wdHlfdHVwbGUpO1xuXG4vKiBUaGVzZSBmdW5jdGlvbnMgZGV0ZXJtaW5lIHdoaWNoIGZvcm1zIGNhbiBzd2l0Y2ggYmFjayBhbmQgZm9ydGggYmV0d2VlblxuICAgbW9ubyBhbmQgZHVvdGlsZSBmb3JtcywgbGlrZSBsaXN0IGxpdGVyYWxzIGFuZCB0dXBsZXMgc3dpdGNoaW5nIHRvL2Zyb21cbiAgIHRoZSBlbXB0eSBsaXN0IGFuZCBlbXB0eSB0dXBsZS4gVGVjaG5pY2FsbHkgdGhpcyBzaG91bGQgYmUgZGVyaXZhYmxlIGZyb21cbiAgIHRoZSBsYW5ndWFnZSBkYXRhOyBsZWF2aW5nIHRoYXQgZm9yIGEgZnV0dXJlIHJlZmFjdG9yLiAqL1xubGV0IGR1b3NwbGl0cyA9ICh0OiBUb2tlbi50KTogTGFiZWwudCA9PlxuICBzd2l0Y2ggKCkge1xuICB8IF8gd2hlbiBpc19lbXB0eV9saXN0KHQpID0+IGxpc3RsaXRfbGJsXG4gIHwgXyB3aGVuIGlzX2VtcHR5X3R1cGxlKHQpID0+IHR1cGxlX2xibFxuICB8IF8gPT4gW11cbiAgfTtcblxubGV0IGR1b21lcmdlcyA9IChsYmw6IExhYmVsLnQpOiBvcHRpb24oTGFiZWwudCkgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gbGJsID09IGxpc3RsaXRfbGJsID0+IFNvbWUoW2VtcHR5X2xpc3RdKVxuICB8IF8gd2hlbiBsYmwgPT0gdHVwbGVfbGJsID0+IFNvbWUoW2VtcHR5X3R1cGxlXSlcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxuLy9UT0RPKGFuZHJldyk6IHJlZmFjdG9yIGF0b21pY19mb3JtcyB0byBzZXBlcmF0ZSB0aGVzZSBvdXRcbmxldCBjb25zdF9tb25vX2RlbGltcyA9XG4gIGJhc2VfdHlwcyBAIGJvb2xzIEAgW3dpbGQsIGVtcHR5X2xpc3QsIGVtcHR5X3R1cGxlLCBlbXB0eV9zdHJpbmddO1xuXG5sZXQgZXhwbGljaXRfaG9sZSA9IFwiP1wiO1xubGV0IGlzX2V4cGxpY2l0X2hvbGUgPSB0ID0+IHQgPT0gZXhwbGljaXRfaG9sZTtcbmxldCBiYWRfdG9rZW5fY2xzOiBzdHJpbmcgPT4gYmFkX3Rva2VuX2NscyA9XG4gIHQgPT5cbiAgICBzd2l0Y2ggKCkge1xuICAgIHwgXyB3aGVuIGlzX2JhZF9pbnQodCkgPT4gQmFkSW50XG4gICAgfCBfID0+IE90aGVyXG4gICAgfTtcblxuLyogQi4gT3BlcmFuZHM6XG4gICBPcmRlciBpbiB0aGlzIGxpc3QgZGV0ZXJtaW5lcyByZWxhdGl2ZSByZW1vbGRpbmdcbiAgIHByaW9yaXR5IGZvciBmb3JtcyB3aXRoIG92ZXJsYXBwaW5nIHJlZ2V4cHMgKi9cbmxldCBhdG9taWNfZm9ybXM6IGxpc3QoKHN0cmluZywgKHN0cmluZyA9PiBib29sLCBsaXN0KE1vbGQudCkpKSkgPSBbXG4gIChcInZhclwiLCAoaXNfdmFyLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXG4gICAgXCJleHBsaWNpdF9ob2xlXCIsXG4gICAgKFxuICAgICAgaXNfZXhwbGljaXRfaG9sZSxcbiAgICAgIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSksIG1rX29wKFR5cCwgW10pLCBta19vcChUUGF0LCBbXSldLFxuICAgICksXG4gICksXG4gIChcIndpbGRcIiwgKGlzX3dpbGQsIFtta19vcChQYXQsIFtdKV0pKSxcbiAgKFwic3RyaW5nXCIsIChpc19zdHJpbmcsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcImludF9saXRcIiwgKGlzX2ludCwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFwiZmxvYXRfbGl0XCIsIChpc19mbG9hdCwgW21rX29wKEV4cCwgW10pLCBta19vcChQYXQsIFtdKV0pKSxcbiAgKFwiYm9vbF9saXRcIiwgKGlzX2Jvb2wsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcImVtcHR5X2xpc3RcIiwgKGlzX2VtcHR5X2xpc3QsIFtta19vcChFeHAsIFtdKSwgbWtfb3AoUGF0LCBbXSldKSksXG4gIChcbiAgICBcImVtcHR5X3R1cGxlXCIsXG4gICAgKGlzX2VtcHR5X3R1cGxlLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pLCBta19vcChUeXAsIFtdKV0pLFxuICApLFxuICAoXCJkZWZlcnJhbFwiLCAoaXNfd2lsZCwgW21rX29wKEV4cCwgW10pXSkpLFxuICAoXCJ0eV92YXJcIiwgKGlzX3R5cF92YXIsIFtta19vcChUeXAsIFtdKV0pKSxcbiAgKFwidHlfdmFyX3BcIiwgKGlzX3R5cF92YXIsIFtta19vcChUUGF0LCBbXSldKSksXG4gIChcImN0clwiLCAoaXNfY3RyLCBbbWtfb3AoRXhwLCBbXSksIG1rX29wKFBhdCwgW10pXSkpLFxuICAoXCJ0eXBlXCIsIChpc19iYXNlX3R5cCwgW21rX29wKFR5cCwgW10pXSkpLFxuXTtcblxuLyogQy4gQ29tcG91bmQgRm9ybXM6XG4gICBPcmRlciBpbiB0aGlzIGxpc3QgZGV0ZXJtaW5lcyByZWxhdGl2ZSByZW1vbGRpbmdcbiAgIHByaW9yaXR5IGZvciBmb3JtcyB3aGljaCBzaGFyZSB0aGUgc2FtZSBsYWJlbHMgKi9cblxubGV0IGZvcm1zOiBsaXN0KChzdHJpbmcsIHQpKSA9IFtcbiAgLy8gSU5GSVggT1BFUkFUT1JTXG4gIChcInR5cF9wbHVzXCIsIG1rX2luZml4KFwiK1wiLCBUeXAsIFAub3JfKSksXG4gIChcInR5cGUtYXJyb3dcIiwgbWtfaW5maXgoXCItPlwiLCBUeXAsIFAucGx1cykpLFxuICAoXCJjZWxsLWpvaW5cIiwgbWtfaW5maXgoXCI7XCIsIEV4cCwgUC5zZW1pKSksXG4gIChcInBsdXNcIiwgbWtfaW5maXgoXCIrXCIsIEV4cCwgUC5wbHVzKSksXG4gIChcIm1pbnVzXCIsIG1rX2luZml4KFwiLVwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJ0aW1lc1wiLCBta19pbmZpeChcIipcIiwgRXhwLCBQLm11bHQpKSxcbiAgKFwicG93ZXJcIiwgbWtfaW5maXgoXCIqKlwiLCBFeHAsIFAucG93ZXIpKSxcbiAgKFwiZnBvd2VyXCIsIG1rX2luZml4KFwiKiouXCIsIEV4cCwgUC5wb3dlcikpLFxuICAoXCJkaXZpZGVcIiwgbWtfaW5maXgoXCIvXCIsIEV4cCwgUC5tdWx0KSksXG4gIChcImVxdWFsc1wiLCBta19pbmZpeChcIj09XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwic3RyaW5nX2VxdWFsc1wiLCBta19pbmZpeChcIiQ9PVwiLCBFeHAsIFAuZXFzKSksXG4gIChcInN0cmluZ19jb25jYXRcIiwgbWtfaW5maXgoXCIrK1wiLCBFeHAsIFAucGx1cykpLFxuICAoXCJsdFwiLCBta19pbmZpeChcIjxcIiwgRXhwLCBQLmVxcykpLFxuICAoXCJndFwiLCBta19pbmZpeChcIj5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJub3RfZXF1YWxzXCIsIG1rX2luZml4KFwiIT1cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJndGVcIiwgbWtfaW5maXgoXCI+PVwiLCBFeHAsIFAuZXFzKSksXG4gIChcImx0ZVwiLCBta19pbmZpeChcIjw9XCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZnBsdXNcIiwgbWtfaW5maXgoXCIrLlwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJmbWludXNcIiwgbWtfaW5maXgoXCItLlwiLCBFeHAsIFAucGx1cykpLFxuICAoXCJmdGltZXNcIiwgbWtfaW5maXgoXCIqLlwiLCBFeHAsIFAubXVsdCkpLFxuICAoXCJmZGl2aWRlXCIsIG1rX2luZml4KFwiLy5cIiwgRXhwLCBQLm11bHQpKSxcbiAgKFwiZmVxdWFsc1wiLCBta19pbmZpeChcIj09LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZsdFwiLCBta19pbmZpeChcIjwuXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwiZmd0XCIsIG1rX2luZml4KFwiPi5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmbm90X2VxdWFsc1wiLCBta19pbmZpeChcIiE9LlwiLCBFeHAsIFAuZXFzKSksXG4gIChcImZndGVcIiwgbWtfaW5maXgoXCI+PS5cIiwgRXhwLCBQLmVxcykpLFxuICAoXCJmbHRlXCIsIG1rX2luZml4KFwiPD0uXCIsIEV4cCwgUC5lcXMpKSxcbiAgKFwibG9naWNhbF9hbmRcIiwgbWtfaW5maXgoXCImJlwiLCBFeHAsIFAuYW5kXykpLFxuICAoXCJsb2dpY2FsX29yX2xlZ2FjeVwiLCBta19pbmZpeChcIlxcXFwvXCIsIEV4cCwgUC5vcl8pKSxcbiAgKFwibG9naWNhbF9vclwiLCBta19pbmZpeChcInx8XCIsIEV4cCwgUC5vcl8pKSxcbiAgKFwibGlzdF9jb25jYXRcIiwgbWtfaW5maXgoXCJAXCIsIEV4cCwgUC5wbHVzKSksXG4gIChcImNvbnNfZXhwXCIsIG1rX2luZml4KFwiOjpcIiwgRXhwLCBQLmNvbnMpKSxcbiAgKFwiY29uc19wYXRcIiwgbWtfaW5maXgoXCI6OlwiLCBQYXQsIFAuY29ucykpLFxuICAoXCJ0eXBlYW5uXCIsIG1rKHNzLCBbXCI6XCJdLCBta19iaW4nKFAuYW5uLCBQYXQsIFBhdCwgW10sIFR5cCkpKSxcbiAgLy8gVU5BUlkgUFJFRklYIE9QRVJBVE9SU1xuICAoXCJub3RcIiwgbWsoaWksIFtcIiFcIl0sIG1rX3ByZShQLm5vdF8sIEV4cCwgW10pKSksIC8vVE9ETzogcHJlY2VkZW5jZVxuICAoXCJ0eXBfc3VtX3NpbmdsZVwiLCBtayhzcywgW1wiK1wiXSwgbWtfcHJlKFAub3JfLCBUeXAsIFtdKSkpLFxuICAoXCJ1bmFyeV9taW51c1wiLCBtayhzcywgW1wiLVwiXSwgbWtfcHJlKFAubmVnLCBFeHAsIFtdKSkpLFxuICAoXCJ1bnF1b3RlXCIsIG1rKHNzLCBbXCIkXCJdLCBta19wcmUoUC51bnF1b3RlLCBFeHAsIFtdKSkpLFxuICAvLyBOLUFSWSBPUFMgKG9uIHRoZSBzZW1hbnRpY3MgbGV2ZWwpXG4gIChcImNvbW1hX2V4cFwiLCBta19pbmZpeChcIixcIiwgRXhwLCBQLnByb2QpKSxcbiAgKFwiY29tbWFfcGF0XCIsIG1rX2luZml4KFwiLFwiLCBQYXQsIFAucHJvZCkpLFxuICAoXCJjb21tYV90eXBcIiwgbWtfaW5maXgoXCIsXCIsIFR5cCwgUC5wcm9kKSksXG4gIC8vIFBBSVJFRCBERUxJTUlURVJTOlxuICAoXCJsaXN0X2xpdF9leHBcIiwgbWsoaWksIFtcIltcIiwgXCJdXCJdLCBta19vcChFeHAsIFtFeHBdKSkpLFxuICAoXCJsaXN0X2xpdF9wYXRcIiwgbWsoaWksIFtcIltcIiwgXCJdXCJdLCBta19vcChQYXQsIFtQYXRdKSkpLFxuICAoXCJsaXN0X3R5cFwiLCBtayhpaSwgW1wiW1wiLCBcIl1cIl0sIG1rX29wKFR5cCwgW1R5cF0pKSksXG4gIC8vTk9URShhbmRyZXcpOiBwYXJlbnMgYmVpbmcgYmVsb3cgYXBzIGlzIGxvYWQtYmVhcmluZywgdW5mb3J0dW5hdGVseVxuICAoXCJwYXJlbnNfZXhwXCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfb3AoRXhwLCBbRXhwXSkpKSxcbiAgKFwicGFyZW5zX3BhdFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX29wKFBhdCwgW1BhdF0pKSksXG4gIChcInBhcmVuc190eXBcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19vcChUeXAsIFtUeXBdKSkpLFxuICAoXCJhcF9leHBfZW1wdHlcIiwgbWsoaWksIFtcIigpXCJdLCBta19wb3N0KFAuYXAsIEV4cCwgW10pKSksXG4gIChcImFwX2V4cFwiLCBtayhpaSwgW1wiKFwiLCBcIilcIl0sIG1rX3Bvc3QoUC5hcCwgRXhwLCBbRXhwXSkpKSxcbiAgKFwiYXBfcGF0XCIsIG1rKGlpLCBbXCIoXCIsIFwiKVwiXSwgbWtfcG9zdChQLmFwLCBQYXQsIFtQYXRdKSkpLFxuICAoXCJhcF90eXBcIiwgbWsoaWksIFtcIihcIiwgXCIpXCJdLCBta19wb3N0KFAuYXAsIFR5cCwgW1R5cF0pKSksXG4gIChcbiAgICBcImFwX2V4cF90eXBcIixcbiAgICBtaygoSW5zdGFudCwgU3RhdGljKSwgW1wiQDxcIiwgXCI+XCJdLCBta19wb3N0KFAuYXAsIEV4cCwgW1R5cF0pKSxcbiAgKSxcbiAgKFwiYXRfc2lnblwiLCBta19udWxfaW5maXgoXCJAXCIsIFAuZXFzKSksIC8vIEhBQ0s6IFNVQlNUUklORyBSRVFcbiAgKFwiY2FzZVwiLCBtayhkcywgW1wiY2FzZVwiLCBcImVuZFwiXSwgbWtfb3AoRXhwLCBbUnVsXSkpKSxcbiAgKFwidGVzdFwiLCBtayhkcywgW1widGVzdFwiLCBcImVuZFwiXSwgbWtfb3AoRXhwLCBbRXhwXSkpKSxcbiAgKFwiZnVuX1wiLCBtayhkcywgW1wiZnVuXCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIEV4cCwgW1BhdF0pKSksXG4gIChcImZpeFwiLCBtayhkcywgW1wiZml4XCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIEV4cCwgW1BhdF0pKSksXG4gIChcInR5cGZ1blwiLCBtayhkcywgW1widHlwZnVuXCIsIFwiLT5cIl0sIG1rX3ByZShQLmZ1bl8sIEV4cCwgW1RQYXRdKSkpLFxuICAoXCJmb3JhbGxcIiwgbWsoZHMsIFtcImZvcmFsbFwiLCBcIi0+XCJdLCBta19wcmUoUC5mdW5fLCBUeXAsIFtUUGF0XSkpKSxcbiAgKFwicmVjXCIsIG1rKGRzLCBbXCJyZWNcIiwgXCItPlwiXSwgbWtfcHJlKFAuZnVuXywgVHlwLCBbVFBhdF0pKSksXG4gIChcbiAgICBcInJ1bGVcIixcbiAgICBtayhkcywgW1wifFwiLCBcIj0+XCJdLCBta19iaW4nKFAucnVsZV9zZXAsIFJ1bCwgRXhwLCBbUGF0XSwgRXhwKSksXG4gICksXG4gIChcInBpcGVsaW5lXCIsIG1rX2luZml4KFwifD5cIiwgRXhwLCBQLmVxcykpLCAvLyBpbiBPQ2FtbCwgcGlwZWxpbmUgcHJlY2VkZW5jZSBpcyBpbiBzYW1lIGNsYXNzIGFzICc9JywgJzwnLCBldGMuXG4gIC8vIERPVUJMRSBERUxJTUlURVJTXG4gIChcImZpbHRlcl9oaWRlXCIsIG1rKGRzLCBbXCJoaWRlXCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW0V4cF0pKSksXG4gIChcImZpbHRlcl9ldmFsXCIsIG1rKGRzLCBbXCJldmFsXCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW0V4cF0pKSksXG4gIChcImZpbHRlcl9wYXVzZVwiLCBtayhkcywgW1wicGF1c2VcIiwgXCJpblwiXSwgbWtfcHJlKFAubGV0XywgRXhwLCBbRXhwXSkpKSxcbiAgKFwiZmlsdGVyX2RlYnVnXCIsIG1rKGRzLCBbXCJkZWJ1Z1wiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtFeHBdKSkpLFxuICAvLyBUUklQTEUgREVMSU1JVEVSU1xuICAoXCJsZXRfXCIsIG1rKGRzLCBbXCJsZXRcIiwgXCI9XCIsIFwiaW5cIl0sIG1rX3ByZShQLmxldF8sIEV4cCwgW1BhdCwgRXhwXSkpKSxcbiAgKFxuICAgIFwidHlwZV9hbGlhc1wiLFxuICAgIG1rKGRzLCBbXCJ0eXBlXCIsIFwiPVwiLCBcImluXCJdLCBta19wcmUoUC5sZXRfLCBFeHAsIFtUUGF0LCBUeXBdKSksXG4gICksXG4gIChcImlmX1wiLCBtayhkcywgW1wiaWZcIiwgXCJ0aGVuXCIsIFwiZWxzZVwiXSwgbWtfcHJlKFAuaWZfLCBFeHAsIFtFeHAsIEV4cF0pKSksXG5dO1xuXG5sZXQgZ2V0OiBTdHJpbmcudCA9PiB0ID1cbiAgbmFtZSA9PiBVdGlsLkxpc3RVdGlsLmFzc29jX2VycihuYW1lLCBmb3JtcywgXCJGb3Jtcy5nZXQgOiBcIiArKyBuYW1lKTtcblxubGV0IGRlbGltczogbGlzdChUb2tlbi50KSA9XG4gIGZvcm1zXG4gIHw+IExpc3QuZm9sZF9sZWZ0KChhY2MsIChfLCB7bGFiZWwsIF99OiB0KSkgPT4ge2xhYmVsIEAgYWNjfSwgW10pXG4gIHw+IExpc3Quc29ydF91bmlxKGNvbXBhcmUpO1xuXG5sZXQgYXRvbWljX21vbGRzOiBUb2tlbi50ID0+IGxpc3QoTW9sZC50KSA9XG4gIHMgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIChfLCAodGVzdCwgbW9sZHMpKSkgPT4gdGVzdChzKSA/IG1vbGRzIEAgYWNjIDogYWNjLFxuICAgICAgW10sXG4gICAgICBhdG9taWNfZm9ybXMsXG4gICAgKTtcblxubGV0IGlzX2F0b21pYyA9IHQgPT4gYXRvbWljX21vbGRzKHQpICE9IFtdO1xuXG5sZXQgaXNfZGVsaW0gPSB0ID0+IExpc3QubWVtKHQsIGRlbGltcyk7XG5cbmxldCBpc192YWxpZF90b2tlbiA9IHQgPT4gaXNfYXRvbWljKHQpIHx8IGlzX3NlY29uZGFyeSh0KSB8fCBpc19kZWxpbSh0KTtcblxubGV0IG1rX2F0b21pYyA9IChzb3J0OiBTb3J0LnQsIHQ6IFRva2VuLnQpID0+IHtcbiAgYXNzZXJ0KGlzX2F0b21pYyh0KSk7XG4gIG1rKHNzLCBbdF0sIE1vbGQuKG1rX29wKHNvcnQsIFtdKSkpO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY2xzID1cbiAgfCBXaGl0ZXNwYWNlXG4gIHwgQ29tbWVudDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZWNvbmRhcnlfY29udGVudCA9XG4gIHwgV2hpdGVzcGFjZShzdHJpbmcpXG4gIHwgQ29tbWVudChzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGlkOiBJZC50LFxuICBjb250ZW50OiBzZWNvbmRhcnlfY29udGVudCxcbn07XG5cbmxldCBjbHNfb2YgPSAoczogdCk6IGNscyA9PlxuICBzd2l0Y2ggKHMuY29udGVudCkge1xuICB8IFdoaXRlc3BhY2UoXykgPT4gV2hpdGVzcGFjZVxuICB8IENvbW1lbnQoXykgPT4gQ29tbWVudFxuICB9O1xuXG5sZXQgbWtfc3BhY2UgPSBpZCA9PiB7Y29udGVudDogV2hpdGVzcGFjZShGb3JtLnNwYWNlKSwgaWR9O1xuXG5sZXQgbWtfbmV3bGluZSA9IGlkID0+IHtjb250ZW50OiBXaGl0ZXNwYWNlKFwiXFxuXCIpLCBpZH07XG5cbmxldCBjb25zdHJ1Y3RfY29tbWVudCA9IGNvbnRlbnQgPT5cbiAgaWYgKFN0cmluZy5lcXVhbChjb250ZW50LCBcIiNcIikpIHtcbiAgICBDb21tZW50KFwiIyNcIik7XG4gIH0gZWxzZSB7XG4gICAgQ29tbWVudChjb250ZW50KTtcbiAgfTtcblxubGV0IGlzX3NwYWNlOiB0ID0+IGJvb2wgPVxuICB3ID0+XG4gICAgc3dpdGNoICh3LmNvbnRlbnQpIHtcbiAgICB8IFdoaXRlc3BhY2UocykgPT4gcyA9PSBGb3JtLnNwYWNlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxubGV0IGlzX2xpbmVicmVhazogdCA9PiBib29sID1cbiAgdyA9PlxuICAgIHN3aXRjaCAody5jb250ZW50KSB7XG4gICAgfCBXaGl0ZXNwYWNlKHMpID0+IHMgPT0gRm9ybS5saW5lYnJlYWtcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xuXG5sZXQgY29udGVudF9pc19jb21tZW50OiBzZWNvbmRhcnlfY29udGVudCA9PiBib29sID1cbiAgY29udGVudCA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgQ29tbWVudChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxubGV0IGlzX2NvbW1lbnQ6IHQgPT4gYm9vbCA9XG4gIHcgPT5cbiAgICBzd2l0Y2ggKHcuY29udGVudCkge1xuICAgIHwgQ29tbWVudChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcblxuLy8gUmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIG9mIHRoZSBXaGl0ZXNwYWNlXG5sZXQgZ2V0X3N0cmluZzogc2Vjb25kYXJ5X2NvbnRlbnQgPT4gc3RyaW5nID1cbiAgY29udGVudCA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgQ29tbWVudChzKVxuICAgIHwgV2hpdGVzcGFjZShzKSA9PiBzXG4gICAgfTtcblxubGV0IGlkID0gdyA9PiB3LmlkO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzZWdtZW50ID0gbGlzdChwaWVjZSlcbmFuZCBwaWVjZSA9XG4gIHwgVGlsZSh0aWxlKVxuICB8IEdyb3V0KEdyb3V0LnQpXG4gIHwgU2Vjb25kYXJ5KFNlY29uZGFyeS50KVxuYW5kIHRpbGUgPSB7XG4gIC8vIGludmFyaWFudHM6XG4gIC8vIC0gbGVuZ3RoKG1vbGQuaW5fKSArIDEgPT0gbGVuZ3RoKGxhYmVsKVxuICAvLyAtIGxlbmd0aChzaGFyZHMpIDw9IGxlbmd0aChsYWJlbClcbiAgLy8gLSBsZW5ndGgoc2hhcmRzKSA9PSBsZW5ndGgoY2hpbGRyZW4pICsgMVxuICAvLyAtIHNvcnQoc2hhcmRzKSA9PSBzaGFyZHNcbiAgaWQ6IElkLnQsXG4gIGxhYmVsOiBMYWJlbC50LFxuICBtb2xkOiBNb2xkLnQsXG4gIHNoYXJkczogbGlzdChpbnQpLFxuICBjaGlsZHJlbjogbGlzdChzZWdtZW50KSxcbn07XG5cbi8vIFRoaXMgaXMgZm9yIGNvbW1lbnQgaW5zZXJ0aW9uXG5sZXQgbWtfc2Vjb25kYXJ5ID0gKGlkLCBjb250ZW50KSA9PiBbU2Vjb25kYXJ5KHtpZCwgY29udGVudH0pXTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgVG91Y2goSWQudClcbiAgfCBEZWxldGUoSWQudCk7XG5cbi8vIHVzZWQgdG8gcmVjb3JkIGVmZmVjdHMgb3ZlciB0aGUgY291cnNlIG9mIGEgc2luZ2xlIGFjdGlvblxubGV0IHM6IHJlZihsaXN0KHQpKSA9IHJlZihbXSk7XG5sZXQgc19jbGVhciA9ICgpID0+IHMgOj0gW107XG5sZXQgc190b3VjaCA9IChpZHM6IGxpc3QoSWQudCkpID0+XG4gIHMgOj0gTGlzdC5tYXAoaWQgPT4gVG91Y2goaWQpLCBpZHMpIEAgc147XG5cbmxldCBzX3RvdWNoZWQgPSAoaWQ6IElkLnQpOiBib29sID0+IExpc3QubWVtKFRvdWNoKGlkKSwgc14pO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBleHBhbnNpb25zID0gbGlzdCgoVG9rZW4udCwgKGxpc3QoVG9rZW4udCksIERpcmVjdGlvbi50KSkpO1xuXG5sZXQgZm9ybXNfYXNzb2M6IGxpc3QoKExhYmVsLnQsIGxpc3QoTW9sZC50KSkpID1cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKGFjYywgKF8sIHtsYWJlbCwgbW9sZCwgX306IEZvcm0udCkpID0+IHtcbiAgICAgIGxldCBtb2xkcyA9XG4gICAgICAgIHN3aXRjaCAoTGlzdC5hc3NvY19vcHQobGFiZWwsIGFjYykpIHtcbiAgICAgICAgfCBTb21lKG9sZF9tb2xkcykgPT4gb2xkX21vbGRzIEAgW21vbGRdXG4gICAgICAgIHwgTm9uZSA9PiBbbW9sZF1cbiAgICAgICAgfTtcbiAgICAgIExpc3QuY29ucygobGFiZWwsIG1vbGRzKSwgTGlzdC5yZW1vdmVfYXNzb2MobGFiZWwsIGFjYykpO1xuICAgIH0sXG4gICAgW10sXG4gICAgRm9ybS5mb3JtcyxcbiAgKTtcblxubGV0IGdldCA9IChsYWJlbDogTGFiZWwudCk6IGxpc3QoTW9sZC50KSA9PlxuICBzd2l0Y2ggKGxhYmVsLCBMaXN0LmFzc29jX29wdChsYWJlbCwgZm9ybXNfYXNzb2MpKSB7XG4gIHwgKFt0XSwgU29tZShtb2xkcykpIHdoZW4gRm9ybS5hdG9taWNfbW9sZHModCkgIT0gW10gPT5cbiAgICAvLyBUT0RPKGFuZHJldyk6IGRvZXMgdGhpcyBtYWtlIHNlbnNlP1xuICAgIEZvcm0uYXRvbWljX21vbGRzKHQpIEAgbW9sZHNcbiAgfCAoW3RdLCBOb25lKSB3aGVuIEZvcm0uYXRvbWljX21vbGRzKHQpICE9IFtdID0+IEZvcm0uYXRvbWljX21vbGRzKHQpXG4gIHwgKF8sIFNvbWUobW9sZHMpKSA9PiBtb2xkc1xuICB8IChbdF0sIE5vbmUpID0+XG4gICAgLyogRm9yIHRva2VucyB3aGljaCBhcmUgbm90IGFzc2lnbmVkIG1vbGRzIGJ5IHRoZSBsYW5ndWFnZSBkZWZpbml0aW9uLFxuICAgICAgIGFzc2luZyBhIGRlZmF1bHQgJ0FueScgbW9sZCwgd2hpY2ggaXMgZWl0aGVyIGNvbnZleCBvciBjb25jYXZlXG4gICAgICAgZGVwZW5kaW5nIG9uIHRoZSBmaXJzdCBjaGFyYWN0ZXIuIFRoaXMgaXMgYSBoZXVyaXN0aWMgYXQgdGhlXG4gICAgICAgbW9tZW50IGFzIHdlIGRvbid0IGN1cnJlbnRseSByaWdvcm91c2x5IGRpdmlkZSB0b2tlbiBjbGFzc2VzXG4gICAgICAgZm9yIG9wZXJhdG9ycyB2cyBvcGVyYW5kcywgYnV0IGlzIHNvbWV3aGF0IGxvYWQtYmVhcmluZyBpbiB0aGF0XG4gICAgICAgcmVtb2xkaW5nIGFzIG9uZSBpcyB0eXBpbmcgaW4gYSBtdWx0aS1jaGFyYWN0ZXIgb3BlcmF0b3IgY2FuIGNhdXNlXG4gICAgICAgamFuaywgd2hpY2ggaXMgYWxsZXZpYXRlZCBpZiB3ZSBjb3JyZWN0bHkgZ3Vlc3MgdGhhdCBpdCB3aWxsXG4gICAgICAgYmVjb21lIGFuIG9wZXJhdG9yLiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGNvdWxkIGJlIGJhc2VkIG9uXG4gICAgICAgbG9naWMgd2hpY2ggY2hlY2tzIGlmIHRoZSB0b2tlbiBpcyB0aGUgcHJlZml4IG9mIHdoYXRldmVyLiAqL1xuICAgIHN3aXRjaCAoRm9ybS5pc19wb3RlbnRpYWxfb3BlcmFuZCh0KSwgRm9ybS5pc19wb3RlbnRpYWxfb3BlcmF0b3IodCkpIHtcbiAgICB8ICh0cnVlLCBmYWxzZSkgPT4gW01vbGQubWtfb3AoQW55LCBbXSldXG4gICAgfCAoZmFsc2UsIHRydWUpID0+IFtNb2xkLm1rX2JpbihQcmVjZWRlbmNlLm1heCwgQW55LCBbXSldXG4gICAgfCAodHJ1ZSwgdHJ1ZSkgPT5cbiAgICAgIFByaW50Zi5wcmludGYoXG4gICAgICAgIFwiV2FybmluZzogTW9sZHMuZ2V0OiBjYW4ndCBkZWNpZGUgaWYgb3BlcmFuZCBvciBvcGVyYXRvcjogJyVzJ1xcblwiLFxuICAgICAgICB0LFxuICAgICAgKTtcbiAgICAgIFtNb2xkLm1rX29wKEFueSwgW10pXTtcbiAgICB8IChmYWxzZSwgZmFsc2UpID0+XG4gICAgICAvL1RPRE8oYW5kcmV3KTogdGhpcyBpcyB0cmlnZ2VyZWQgaW4gYWxsIGluc3RhbnQgZXhwYW5kIGNhc2VzIChbXSgpfCwgZXRjKVxuICAgICAgLy9QcmludGYucHJpbnRmKFwiV2FybmluZzogTW9sZHMuZ2V0OiB1bmhhbmRsZWQgbW9ubzogJyVzJ1xcblwiLCB0KTtcbiAgICAgIFtNb2xkLm1rX29wKEFueSwgW10pXVxuICAgIH1cbiAgfCAobGJsLCBOb25lKSA9PlxuICAgIFByaW50Zi5wcmludGYoXG4gICAgICBcIldhcm5pbmc6IE1vbGRzLmdldDogdW5oYW5kbGVkIGxhYmVsOiAnJXMnXFxuXCIsXG4gICAgICBTdHJpbmcuY29uY2F0KFwiIFwiLCBsYmwpLFxuICAgICk7XG4gICAgW01vbGQubWtfb3AoQW55LCBbXSldO1xuICB9O1xuXG5sZXQgZGVsYXllZF9leHBhbnNpb25zOiBleHBhbnNpb25zID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICgoXywge2V4cGFuc2lvbiwgbGFiZWwsIF99OiBGb3JtLnQpKSA9PlxuICAgICAgc3dpdGNoIChleHBhbnNpb24sIGxhYmVsKSB7XG4gICAgICB8ICgoRGVsYXllZCwgRGVsYXllZCksIFtoZCwgLi4uX10pID0+XG4gICAgICAgIFNvbWUoW1xuICAgICAgICAgIChoZCwgKGxhYmVsLCBEaXJlY3Rpb24uTGVmdCkpLFxuICAgICAgICAgIChMaXN0VXRpbC5sYXN0KGxhYmVsKSwgKGxhYmVsLCBSaWdodCkpLFxuICAgICAgICBdKVxuICAgICAgfCAoKERlbGF5ZWQsIF8pLCBbaGQsIC4uLl9dKSA9PiBTb21lKFsoaGQsIChsYWJlbCwgTGVmdCkpXSlcbiAgICAgIHwgKChfLCBEZWxheWVkKSwgW18sIC4uLl9dKSA9PlxuICAgICAgICBTb21lKFsoTGlzdFV0aWwubGFzdChsYWJlbCksIChsYWJlbCwgUmlnaHQpKV0pXG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfSxcbiAgICBGb3JtLmZvcm1zLFxuICApXG4gIHw+IExpc3QuZmxhdHRlblxuICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxubGV0IGluc3RhbnRfZXhwYW5zaW9uczogZXhwYW5zaW9ucyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICAoKF8sIHtleHBhbnNpb24sIGxhYmVsLCBffTogRm9ybS50KSkgPT5cbiAgICAgIHN3aXRjaCAoZXhwYW5zaW9uLCBsYWJlbCkge1xuICAgICAgfCAoKEluc3RhbnQsIEluc3RhbnQpLCBbaGQsIC4uLl9dKSA9PlxuICAgICAgICBTb21lKFtcbiAgICAgICAgICAoaGQsIChsYWJlbCwgRGlyZWN0aW9uLkxlZnQpKSxcbiAgICAgICAgICAoTGlzdFV0aWwubGFzdChsYWJlbCksIChsYWJlbCwgUmlnaHQpKSxcbiAgICAgICAgXSlcbiAgICAgIHwgKChJbnN0YW50LCBfKSwgW2hkLCAuLi5fXSkgPT4gU29tZShbKGhkLCAobGFiZWwsIExlZnQpKV0pXG4gICAgICB8ICgoXywgSW5zdGFudCksIFtfLCAuLi5fXSkgPT5cbiAgICAgICAgU29tZShbKExpc3RVdGlsLmxhc3QobGFiZWwpLCAobGFiZWwsIFJpZ2h0KSldKVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH0sXG4gICAgRm9ybS5mb3JtcyxcbiAgKVxuICB8PiBMaXN0LmZsYXR0ZW5cbiAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbmxldCBkZWxheWVkX2V4cGFuc2lvbjogVG9rZW4udCA9PiAobGlzdChUb2tlbi50KSwgRGlyZWN0aW9uLnQpID1cbiAgcyA9PlxuICAgIC8qIENvbXBsZXRpb25zIHdoaWNoIG11c3QgYmUgZGVmZXJlZCBhcyB0aGV5IGFyZSBhbWJpZ3VvdXMgcHJlZml4ZXMgKi9cbiAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KHMsIGRlbGF5ZWRfZXhwYW5zaW9ucykpIHtcbiAgICB8IFNvbWUoZXhwYW5zaW9uKSA9PiBleHBhbnNpb25cbiAgICB8IE5vbmUgPT4gKFtzXSwgUmlnaHQpXG4gICAgfTtcblxubGV0IGluc3RhbnRfZXhwYW5zaW9uOiBUb2tlbi50ID0+IChsaXN0KFRva2VuLnQpLCBEaXJlY3Rpb24udCkgPVxuICBzID0+XG4gICAgLyogQ29tcGxldGlvbnMgd2hpY2ggY2FuIG9yIG11c3QgYmUgZXhlY3V0ZWQgaW1tZWRpYXRlbHkgKi9cbiAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KHMsIGluc3RhbnRfZXhwYW5zaW9ucykpIHtcbiAgICB8IFNvbWUoZXhwYW5zaW9uKSA9PiBleHBhbnNpb25cbiAgICB8IE5vbmUgPT4gKFtzXSwgUmlnaHQpXG4gICAgfTtcblxubGV0IGlzX2RlbGF5ZWQgPSBrdyA9PiBMaXN0Lmxlbmd0aChkZWxheWVkX2V4cGFuc2lvbihrdykgfD4gZnN0KSA+IDE7XG5cbmxldCBhbGxvd19tZXJnZSA9IChsOiBUb2tlbi50LCByOiBUb2tlbi50KTogYm9vbCA9PlxuICBGb3JtLmlzX3BvdGVudGlhbF90b2tlbihsICsrIHIpO1xuXG5sZXQgYWxsb3dfYXBwZW5kX3JpZ2h0ID0gKHQ6IFRva2VuLnQsIGNoYXI6IHN0cmluZyk6IGJvb2wgPT5cbiAgRm9ybS5pc19wb3RlbnRpYWxfdG9rZW4odCArKyBjaGFyKTtcblxubGV0IGFsbG93X2FwcGVuZF9sZWZ0ID0gKGNoYXI6IHN0cmluZywgdDogVG9rZW4udCk6IGJvb2wgPT5cbiAgRm9ybS5pc19wb3RlbnRpYWxfdG9rZW4odCArKyBjaGFyKTtcblxubGV0IGFsbG93X2luc2VydGlvbiA9IChfY2hhcjogc3RyaW5nLCBfdDogVG9rZW4udCwgbmV3X3Q6IFRva2VuLnQpOiBib29sID0+XG4gIEZvcm0uaXNfcG90ZW50aWFsX3Rva2VuKG5ld190KTtcbiIsIm9wZW4gVXRpbDtcbmluY2x1ZGUgQmFzZTtcblxuZXhjZXB0aW9uIEFtYmlndW91c19tb2xkcztcbmV4Y2VwdGlvbiBJbnZhbGlkX21vbGQ7XG5leGNlcHRpb24gRW1wdHlfdGlsZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gdGlsZTtcblxubGV0IGlkID0gdCA9PiB0LmlkO1xuXG5sZXQgaXNfY29tcGxldGUgPSAodDogdCkgPT4gTGlzdC5sZW5ndGgodC5sYWJlbCkgPT0gTGlzdC5sZW5ndGgodC5zaGFyZHMpO1xuXG5sZXQgbF9zaGFyZCA9IHQgPT5cbiAgT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSwgTGlzdFV0aWwuaGRfb3B0KHQuc2hhcmRzKSk7XG5sZXQgcl9zaGFyZCA9IHQgPT5cbiAgT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSwgTGlzdFV0aWwubGFzdF9vcHQodC5zaGFyZHMpKTtcblxubGV0IGhhc19lbmQgPSAoZDogRGlyZWN0aW9uLnQsIHQpID0+XG4gIHN3aXRjaCAoZCkge1xuICB8IExlZnQgPT4gbF9zaGFyZCh0KSA9PSAwXG4gIHwgUmlnaHQgPT4gcl9zaGFyZCh0KSA9PSBMaXN0Lmxlbmd0aCh0LmxhYmVsKSAtIDFcbiAgfTtcbmxldCBoYXNfZW5kcyA9IHQgPT4gaGFzX2VuZChMZWZ0LCB0KSAmJiBoYXNfZW5kKFJpZ2h0LCB0KTtcblxubGV0IG5pYnMgPSAodDogdCkgPT4ge1xuICBsZXQgKGwsIF8pID0gTW9sZC5uaWJzKH5pbmRleD1sX3NoYXJkKHQpLCB0Lm1vbGQpO1xuICBsZXQgKF8sIHIpID0gTW9sZC5uaWJzKH5pbmRleD1yX3NoYXJkKHQpLCB0Lm1vbGQpO1xuICAobCwgcik7XG59O1xuXG5sZXQgc2hhcGVzID0gKHQ6IHQpID0+IHtcbiAgbGV0IChsLCByKSA9IG5pYnModCk7XG4gIChsLnNoYXBlLCByLnNoYXBlKTtcbn07XG5cbmxldCB0b19waWVjZSA9IHQgPT4gVGlsZSh0KTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9ICh7bW9sZCwgc2hhcmRzLCBjaGlsZHJlbiwgX306IHQpID0+XG4gIEFiYS5tayhzaGFyZHMsIGNoaWxkcmVuKVxuICB8PiBBYmEuYWJhX3RyaXBsZXNcbiAgfD4gTGlzdC5tYXAoKChsLCBjaGlsZCwgcikpID0+IHtcbiAgICAgICBsZXQgKF8sIGwpID0gTW9sZC5uaWJzKH5pbmRleD1sLCBtb2xkKTtcbiAgICAgICBsZXQgKHIsIF8pID0gTW9sZC5uaWJzKH5pbmRleD1yLCBtb2xkKTtcbiAgICAgICAobC5zb3J0ID09IHIuc29ydCA/IGwuc29ydCA6IEFueSwgY2hpbGQpO1xuICAgICB9KTtcblxubGV0IGNvbnRhaW5lZF9jaGlsZHJlbiA9ICh0OiB0KTogbGlzdCgodCwgQmFzZS5zZWdtZW50LCB0KSkgPT5cbiAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICB8PiBBYmEuYWJhX3RyaXBsZXNcbiAgfD4gTGlzdC5tYXAoKChsLCBjaGlsZCwgcikpID0+IHtcbiAgICAgICBsZXQgbCA9IHsuLi50LCBzaGFyZHM6IFtsXSwgY2hpbGRyZW46IFtdfTtcbiAgICAgICBsZXQgciA9IHsuLi50LCBzaGFyZHM6IFtyXSwgY2hpbGRyZW46IFtdfTtcbiAgICAgICAobCwgY2hpbGQsIHIpO1xuICAgICB9KTtcblxuLy8gbGV0IHJlbW9sZCA9ICh0OiB0KTogbGlzdCh0KSA9PlxuLy8gICBNb2xkcy5nZXQodC5sYWJlbCkgfD4gTGlzdC5tYXAobW9sZCA9PiB7Li4udCwgbW9sZH0pO1xuXG5sZXQgc3BsaXRfc2hhcmRzID0gKGlkLCBsYWJlbCwgbW9sZCwgc2hhcmRzKSA9PlxuICBzaGFyZHMgfD4gTGlzdC5tYXAoaSA9PiB7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHM6IFtpXSwgY2hpbGRyZW46IFtdfSk7XG5cbi8vIHBvc3Rjb25kOiBvdXRwdXQgc2VnbWVudCBpcyBub25lbXB0eVxubGV0IGRpc2Fzc2VtYmxlID0gKHtpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcywgY2hpbGRyZW59OiB0KTogc2VnbWVudCA9PiB7XG4gIGxldCBzaGFyZHMgPSBzcGxpdF9zaGFyZHMoaWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMpO1xuICBBYmEubWsoc2hhcmRzLCBjaGlsZHJlbilcbiAgfD4gQWJhLmpvaW4ocyA9PiBbdG9fcGllY2UocyldLCBGdW4uaWQpXG4gIHw+IExpc3QuY29uY2F0O1xufTtcblxubGV0IGRpc2ludGVncmF0ZSA9ICh7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMsIF99OiB0KTogbGlzdCh0aWxlKSA9PiB7XG4gIHNwbGl0X3NoYXJkcyhpZCwgbGFiZWwsIG1vbGQsIHNoYXJkcyk7XG59O1xuXG5sZXQgcmVhc3NlbWJsZSA9IChtYXRjaDogQWJhLnQodCwgc2VnbWVudCkpOiB0ID0+IHtcbiAgbGV0IHQgPSBBYmEuaGQobWF0Y2gpO1xuICBsZXQgKHNoYXJkcywgY2hpbGRyZW4pID1cbiAgICBtYXRjaFxuICAgIHw+IEFiYS5mb2xkX3JpZ2h0KFxuICAgICAgICAgKHQsIGNoaWxkLCAoc2hhcmRzLCBjaGlsZHJlbikpID0+XG4gICAgICAgICAgICh0LnNoYXJkcyBAIHNoYXJkcywgdC5jaGlsZHJlbiBAIFtjaGlsZCwgLi4uY2hpbGRyZW5dKSxcbiAgICAgICAgIHQgPT4gKHQuc2hhcmRzLCB0LmNoaWxkcmVuKSxcbiAgICAgICApO1xuICAvLyBjaGVjayBsZW5ndGhzXG4gIGxldCBfID0gQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pO1xuICBhc3NlcnQoTGlzdC5zb3J0KEludC5jb21wYXJlLCBzaGFyZHMpID09IHNoYXJkcyk7XG4gIHtcbiAgICBpZDogdC5pZCxcbiAgICBsYWJlbDogdC5sYWJlbCxcbiAgICAvLyBub3RlOiB0aGlzIHRocm93cyBhd2F5IG1vbGRzIG9uIHRpbGVzIG90aGVyIHRoYW4gaGQuXG4gICAgLy8gaW4gY2FzZXMgd2hlcmUgdGhvc2UgbW9sZHMgZGlmZmVyLCByZWFzc2VtYmxlZCB0aWxlXG4gICAgLy8gc2hvdWxkIHVuZGVyZ28gc3Vic2VxdWVudCByZW1vbGRpbmcuXG4gICAgbW9sZDogdC5tb2xkLFxuICAgIHNoYXJkcyxcbiAgICBjaGlsZHJlbixcbiAgfTtcbn07XG5cbmxldCBwb3BfbCA9ICh0aWxlOiB0KTogKHBpZWNlLCBzZWdtZW50KSA9PlxuICBkaXNhc3NlbWJsZSh0aWxlKVxuICB8PiBMaXN0VXRpbC5zcGxpdF9maXJzdF9vcHRcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSk7XG5sZXQgcG9wX3IgPSAodGlsZTogdCk6IChzZWdtZW50LCBwaWVjZSkgPT5cbiAgZGlzYXNzZW1ibGUodGlsZSlcbiAgfD4gTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHRcbiAgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfdGlsZSk7XG5cbi8vIGxldCB1bmlxdWVfbW9sZCA9IF8gPT4gZmFpbHdpdGgoXCJ0b2RvIHVuaXF1ZV9tb2xkXCIpO1xuXG4vLyBtb2R1bGUgTWF0Y2ggPSB7XG4vLyAgIHR5cGUgdGlsZSA9IHQ7XG5cbi8vICAgbW9kdWxlIE1ha2UgPSAoTzogT3JpZW50YXRpb24uUykgPT4ge1xuLy8gICAgIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbi8vICAgICB0eXBlIHQgPSBBYmEudChTaGFyZC50LCBzZWdtZW50KTtcblxuLy8gICAgIGxldCBpZCA9IChtOiB0KSA9PiBBYmEuaGQobSkudGlsZV9pZDtcblxuLy8gICAgIGxldCBsYWJlbCA9IChtOiB0KSA9PiBzbmQoQWJhLmhkKG0pLmxhYmVsKTtcblxuLy8gICAgIGxldCBzaGFyZHM6IHQgPT4gbGlzdChTaGFyZC50KSA9IEFiYS5nZXRfYXM7XG4vLyAgICAgLy8gbGV0IGNoaWxkcmVuOiB0ID0+IGxpc3Qoc2VnbWVudCkgPSBBYmEuZ2V0X2JzO1xuXG4vLyAgICAgbGV0IGxlbmd0aCA9IChtOiB0KSA9PiBMaXN0Lmxlbmd0aChzaGFyZHMobSkpO1xuXG4vLyAgICAgbGV0IG1vbGQgPSAobTogdCkgPT4ge1xuLy8gICAgICAgbGV0IG1vbGRzID1cbi8vICAgICAgICAgc3dpdGNoIChTaGFyZC5jb25zaXN0ZW50X21vbGRzKHNoYXJkcyhtKSkpIHtcbi8vICAgICAgICAgfCBbXSA9PlxuLy8gICAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIHVwb24gY29uc3RydWN0L2Rlc3RydWN0LFxuLy8gICAgICAgICAgIC8vIGluIHdoaWNoIGNhc2UgZXZlcnl0aGluZyB3aWxsIGJlIHN1YnNlcXVlbnRseSByZW1vbGRlZFxuLy8gICAgICAgICAgIE1vbGRzLmdldChsYWJlbChtKSlcbi8vICAgICAgICAgfCBbXywgLi4uX10gYXMgbW9sZHMgPT4gbW9sZHNcbi8vICAgICAgICAgfTtcbi8vICAgICAgIGFzc2VydChtb2xkcyAhPSBbXSk7XG4vLyAgICAgICBMaXN0LmhkKG1vbGRzKTtcbi8vICAgICB9O1xuXG4vLyAgICAgbGV0IGNoaWxkcmVuID0gbSA9PlxuLy8gICAgICAgTGlzdC5tYXAoTGlzdFV0aWwucmV2X2lmKE8uZCA9PSBMZWZ0KSwgQWJhLmdldF9icyhtKSk7XG5cbi8vICAgICBsZXQgam9pbiA9IChtOiB0KTogc2VnbWVudCA9PlxuLy8gICAgICAgbSB8PiBBYmEuam9pbihzID0+IFtTaGFyZC50b19waWVjZShzKV0sIEZ1bi5pZCkgfD4gTGlzdC5mbGF0dGVuO1xuXG4vLyAgICAgbGV0IGNvbXBsZXRlID0gKG06IHQpOiBvcHRpb24odGlsZSkgPT4ge1xuLy8gICAgICAgbGV0IGlkID0gaWQobSk7XG4vLyAgICAgICBsZXQgbGFiZWwgPSBsYWJlbChtKTtcbi8vICAgICAgIGxldCBtb2xkID0gbW9sZChtKTtcbi8vICAgICAgIGxlbmd0aChtKSA9PSBMYWJlbC5sZW5ndGgobGFiZWwpXG4vLyAgICAgICAgID8ge1xuLy8gICAgICAgICAgIGxldCBjaGlsZHJlbiA9IExpc3RVdGlsLnJldl9pZihPLmQgPT0gTGVmdCwgY2hpbGRyZW4obSkpO1xuLy8gICAgICAgICAgIFNvbWUoQmFzZS5UaWxlLntpZCwgbGFiZWwsIG1vbGQsIGNoaWxkcmVufSk7XG4vLyAgICAgICAgIH1cbi8vICAgICAgICAgOiBOb25lO1xuLy8gICAgIH07XG4vLyAgIH07XG4vLyB9O1xuIiwiLy8gb3BlbiBVdGlsO1xuaW5jbHVkZSBCYXNlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBwaWVjZTtcblxubGV0IHNlY29uZGFyeSA9IHcgPT4gU2Vjb25kYXJ5KHcpO1xubGV0IGdyb3V0ID0gZyA9PiBHcm91dChnKTtcbmxldCB0aWxlID0gdCA9PiBUaWxlKHQpO1xuXG5sZXQgZ2V0ID0gKGZfdywgZl9nLCBmX3QsIHA6IHQpID0+XG4gIHN3aXRjaCAocCkge1xuICB8IFNlY29uZGFyeSh3KSA9PiBmX3codylcbiAgfCBHcm91dChnKSA9PiBmX2coZylcbiAgfCBUaWxlKHQpID0+IGZfdCh0KVxuICB9O1xuXG5sZXQgaWQgPSBnZXQoU2Vjb25kYXJ5LmlkLCBHcm91dC5pZCwgVGlsZS5pZCk7XG5cbmxldCBzb3J0ID1cbiAgZ2V0KFxuICAgIF8gPT4gKFNvcnQuQW55LCBbXSksXG4gICAgXyA9PiAoU29ydC5BbnksIFtdKSxcbiAgICB0ID0+ICh0Lm1vbGQub3V0LCB0Lm1vbGQuaW5fKSxcbiAgKTtcblxubGV0IG5pYnMgPVxuICBnZXQoXG4gICAgXyA9PiBOb25lLFxuICAgIGcgPT4ge1xuICAgICAgbGV0IChsLCByKSA9IEdyb3V0LnNoYXBlcyhnKTtcbiAgICAgIFNvbWUoTmliLih7c2hhcGU6IGwsIHNvcnQ6IEFueX0sIHtzaGFwZTogciwgc29ydDogQW55fSkpO1xuICAgIH0sXG4gICAgdCA9PiBTb21lKFRpbGUubmlicyh0KSksXG4gICk7XG5cbmxldCBuaWJfc29ydHMgPVxuICBnZXQoXG4gICAgXyA9PiAoU29ydC5BbnksIFNvcnQuQW55KSxcbiAgICBfID0+IChTb3J0LkFueSwgU29ydC5BbnkpLFxuICAgIHQgPT4ge1xuICAgICAgbGV0IChsLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgIChsLnNvcnQsIHIuc29ydCk7XG4gICAgfSxcbiAgKTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IGdldChfID0+IFtdLCBfID0+IFtdLCBUaWxlLnNvcnRlZF9jaGlsZHJlbik7XG5sZXQgY2hpbGRyZW4gPSBwID0+IHNvcnRlZF9jaGlsZHJlbihwKSB8PiBMaXN0LnNwbGl0IHw+IHNuZDtcblxuLy8gbGV0IGlzX2JhbGFuY2VkID1cbi8vICAgZnVuXG4vLyAgIHwgU2hhcmQoXykgPT4gZmFsc2Vcbi8vICAgfCBTZWNvbmRhcnkoXylcbi8vICAgfCBHcm91dChfKVxuLy8gICB8IFRpbGUoXykgPT4gdHJ1ZTtcblxubGV0IHBvcF9sID0gKHA6IHQpOiAodCwgc2VnbWVudCkgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiBUaWxlLnBvcF9sKHQpXG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gKHAsIFtdKVxuICB9O1xubGV0IHBvcF9yID0gKHA6IHQpOiAoc2VnbWVudCwgdCkgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiBUaWxlLnBvcF9yKHQpXG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gKFtdLCBwKVxuICB9O1xuXG5sZXQgZGlzYXNzZW1ibGUgPSAocDogdCk6IHNlZ21lbnQgPT5cbiAgc3dpdGNoIChwKSB7XG4gIHwgR3JvdXQoXylcbiAgfCBTZWNvbmRhcnkoXykgPT4gW3BdXG4gIHwgVGlsZSh0KSA9PiBUaWxlLmRpc2Fzc2VtYmxlKHQpXG4gIH07XG5cbi8vIGxldCByZW1vbGQgPSAocDogdCkgPT5cbi8vICAgc3dpdGNoIChwKSB7XG4vLyAgIHwgR3JvdXQoXylcbi8vICAgfCBTZWNvbmRhcnkoXykgPT4gW3BdXG4vLyAgIHwgVGlsZSh0KSA9PiBMaXN0Lm1hcCh0aWxlLCBUaWxlLnJlbW9sZCh0KSlcbi8vICAgfTtcblxubGV0IHNoYXBlcyA9XG4gIGdldChfID0+IE5vbmUsIGcgPT4gU29tZShHcm91dC5zaGFwZXMoZykpLCB0ID0+IFNvbWUoVGlsZS5zaGFwZXModCkpKTtcblxubGV0IGlzX2dyb3V0OiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBHcm91dChfKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGlzX3NlY29uZGFyeTogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgU2Vjb25kYXJ5KF8pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlO1xuXG5sZXQgaXNfdGlsZTogdCA9PiBvcHRpb24oVGlsZS50KSA9XG4gIGZ1blxuICB8IFRpbGUodCkgPT4gU29tZSh0KVxuICB8IF8gPT4gTm9uZTtcblxubGV0IGxhYmVsOiB0ID0+IG9wdGlvbihMYWJlbC50KSA9XG4gIGZ1blxuICB8IFRpbGUoe2xhYmVsLCBffSkgPT4gU29tZShsYWJlbClcbiAgfCBfID0+IE5vbmU7XG5cbmxldCBtb25vdGlsZTogdCA9PiBvcHRpb24oVG9rZW4udCkgPVxuICBmdW5cbiAgfCBUaWxlKHtsYWJlbDogW3RdLCBffSkgPT4gU29tZSh0KVxuICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHcpID0+XG4gICAgU29tZShTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpKVxuICB8IF8gPT4gTm9uZTtcblxubGV0IGhhc19lbmRzID0gZ2V0KF8gPT4gdHJ1ZSwgXyA9PiB0cnVlLCBUaWxlLmhhc19lbmRzKTtcblxubGV0IGlzX2NvbXBsZXRlOiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBUaWxlKHQpID0+IFRpbGUuaXNfY29tcGxldGUodClcbiAgfCBfID0+IHRydWU7XG5cbmxldCBnZXRfb3V0c2lkZV9zb3J0cyA9ICh+ZGVmYXVsdF9zb3J0PVNvcnQuQW55LCBwOiB0KTogbGlzdChTb3J0LnQpID0+XG4gIC8vVE9ETzogRGF2aWQgcGxlYXNlIHJldmlldyB0aGlzXG4gIHN3aXRjaCAocCkge1xuICB8IFNlY29uZGFyeShfKSA9PiBbXVxuICB8IEdyb3V0KHtzaGFwZTogQ29udmV4LCBffSkgPT4gW11cbiAgfCBHcm91dCh7c2hhcGU6IENvbmNhdmUsIF99KSA9PiBbZGVmYXVsdF9zb3J0LCBkZWZhdWx0X3NvcnRdXG4gIHwgVGlsZSh7c2hhcmRzOiBfLCBffSBhcyB0KSB3aGVuICFUaWxlLmlzX2NvbXBsZXRlKHQpID0+XG4gICAgLy8gVE9ETyhhbmRyZXcpOiBiZXR0ZXIgaW5jb21wbGV0ZSB0aWxlIGhhbmRsaW5nXG4gICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgc2hhcGUgb2YgaW5jb21wbGV0ZSB0aWxlIGlzXG4gICAgW11cbiAgfCBUaWxlKHQpID0+XG4gICAgbGV0IChzb3J0X2wsIHNvcnRfcikgPSBuaWJfc29ydHMocCk7XG4gICAgc3dpdGNoICgodC5tb2xkLm5pYnMgfD4gZnN0KS5zaGFwZSwgKHQubW9sZC5uaWJzIHw+IHNuZCkuc2hhcGUpIHtcbiAgICB8IChDb252ZXgsIENvbnZleCkgPT4gW11cbiAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+IFtzb3J0X3JdXG4gICAgfCAoQ29uY2F2ZShfKSwgQ29udmV4KSA9PiBbc29ydF9sXVxuICAgIHwgKENvbmNhdmUoXyksIENvbmNhdmUoXykpID0+IFtzb3J0X2wsIHNvcnRfcl1cbiAgICB9O1xuICB9O1xuXG5sZXQgbW9sZF9vZiA9ICh+c2hhcGU9TmliLlNoYXBlLkNvbnZleCwgcDogdCkgPT5cbiAgLy8gVE9ETyhkKSBmaXggc29ydHNcbiAgc3dpdGNoIChwKSB7XG4gIHwgVGlsZSh0KSA9PiB0Lm1vbGRcbiAgfCBHcm91dChnKSA9PiBNb2xkLm9mX2dyb3V0KGcsIEFueSlcbiAgfCBTZWNvbmRhcnkoXykgPT4gTW9sZC5vZl9zZWNvbmRhcnkoe3NvcnQ6IEFueSwgc2hhcGV9KVxuICB9O1xuIiwib3BlbiBVdGlsO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBPcChyb290KVxuICB8IFByZShyb290LCB0KVxuICB8IFBvc3QodCwgcm9vdClcbiAgfCBCaW4odCwgcm9vdCwgdClcbmFuZCByb290ID0gQWJhLnQoaW50LCB0KTtcblxuLy8gbGV0IHJlYyBzaXplID1cbi8vICAgZnVuXG4vLyAgIHwgT3AoXykgPT4gMVxuLy8gICB8IFByZShfLCByKSA9PiAxICsgc2l6ZShyKVxuLy8gICB8IFBvc3QobCwgXykgPT4gc2l6ZShsKSArIDFcbi8vICAgfCBCaW4obCwgXywgcikgPT4gc2l6ZShsKSArIDEgKyBzaXplKHIpO1xuXG4vLyBUT0RPKGQpOiByZW5hbWUgdG8gcmVmbGVjdCBhYmFcbmxldCByb290ID1cbiAgZnVuXG4gIHwgT3AocilcbiAgfCBQcmUociwgXylcbiAgfCBQb3N0KF8sIHIpXG4gIHwgQmluKF8sIHIsIF8pID0+IHI7XG5cbi8vIGxldCBjaGlsZHJlbiA9XG4vLyAgIGZ1blxuLy8gICB8IE9wKF8pID0+IFtdXG4vLyAgIHwgUHJlKF8sIHNrZWwpID0+IFsoRGlyZWN0aW9uLlJpZ2h0LCBza2VsKV1cbi8vICAgfCBQb3N0KHNrZWwsIF8pID0+IFsoTGVmdCwgc2tlbCldXG4vLyAgIHwgQmluKGwsIF8sIHIpID0+IFsoTGVmdCwgbCksIChSaWdodCwgcildO1xuXG4vLyByZXR1cm5zIGluY2x1c2l2ZSBsb3dlciBib3VuZCwgZXhjbHVzaXZlIHVwcGVyIGJvdW5kXG4vLyBsZXQgcmVjIHJhbmdlID1cbi8vICAgZnVuXG4vLyAgIHwgT3AobikgPT4gKG4sIG4gKyAxKVxuLy8gICB8IFByZShuLCByKSA9PiAobiwgc25kKHJhbmdlKHIpKSlcbi8vICAgfCBQb3N0KGwsIG4pID0+IChmc3QocmFuZ2UobCkpLCBuICsgMSlcbi8vICAgfCBCaW4obCwgXywgcikgPT4gKGZzdChyYW5nZShsKSksIHNuZChyYW5nZShyKSkpO1xuXG4vLyBsZXQgcmVjIHNrZWxfYXQgPSAobiwgc2tlbCkgPT5cbi8vICAgc3dpdGNoIChza2VsKSB7XG4vLyAgIHwgT3AobSkgPT4gbiA9PSBtID8gc2tlbCA6IHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJTa2VsLnNrZWxfYXRcIikpXG4vLyAgIHwgUHJlKG0sIHIpID0+IG4gPT0gbSA/IHNrZWwgOiBza2VsX2F0KG4sIHIpXG4vLyAgIHwgUG9zdChsLCBtKSA9PiBuID09IG0gPyBza2VsIDogc2tlbF9hdChuLCBsKVxuLy8gICB8IEJpbihsLCBtLCByKSA9PlxuLy8gICAgIGlmIChuIDwgbSkge1xuLy8gICAgICAgc2tlbF9hdChuLCBsKTtcbi8vICAgICB9IGVsc2UgaWYgKG4gPiBtKSB7XG4vLyAgICAgICBza2VsX2F0KG4sIHIpO1xuLy8gICAgIH0gZWxzZSB7XG4vLyAgICAgICBza2VsO1xuLy8gICAgIH1cbi8vICAgfTtcblxuZXhjZXB0aW9uIElucHV0X2NvbnRhaW5zX3NlY29uZGFyeTtcbmV4Y2VwdGlvbiBOb25jb252ZXhfc2VnbWVudDtcblxuW0BkZXJpdmluZyBzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSldXG50eXBlIGlwID0gKGludCwgUGllY2UudCk7XG5cbnR5cGUgcmVsID1cbiAgfCBMdFxuICB8IEVxXG4gIHwgR3Q7XG5cbmxldCByZWwgPSAocDE6IFBpZWNlLnQsIHAyOiBQaWVjZS50KTogb3B0aW9uKHJlbCkgPT5cbiAgc3dpdGNoIChwMSwgcDIpIHtcbiAgfCAoU2Vjb25kYXJ5KF8pLCBfKVxuICB8IChfLCBTZWNvbmRhcnkoXykpID0+IE5vbmVcbiAgfCAoR3JvdXQoe3NoYXBlLCBffSksIF8pID0+XG4gICAgc3dpdGNoIChzaGFwZSkge1xuICAgIHwgQ29udmV4ID0+IFNvbWUoR3QpXG4gICAgfCBDb25jYXZlID0+IFNvbWUoTHQpXG4gICAgfVxuICB8IChfLCBHcm91dCh7c2hhcGUsIF99KSkgPT5cbiAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgfCBDb252ZXggPT4gU29tZShMdClcbiAgICB8IENvbmNhdmUgPT4gU29tZShHdClcbiAgICB9XG4gIHwgKFRpbGUodDEpLCBUaWxlKHQyKSkgPT5cbiAgICBvcGVuIExhYmVscztcbiAgICBsZXQgbGJsMSA9ICg9PSkodDEubGFiZWwpO1xuICAgIGxldCBsYmwyID0gKD09KSh0Mi5sYWJlbCk7XG4gICAgbGV0IGVxID1cbiAgICAgIFtcbiAgICAgICAgbGJsMShjYXNlKSAmJiBsYmwyKHJ1bGUpLFxuICAgICAgICBsYmwxKHJ1bGUpICYmIGxibDIocnVsZSksXG4gICAgICAgIGxibDEoY29tbWEpICYmIGxibDIoY29tbWEpICYmIHQxLm1vbGQgPT0gdDIubW9sZCxcbiAgICAgICAgbGJsMShbXCIrXCJdKSAmJiBsYmwyKFtcIitcIl0pICYmIHQxLm1vbGQgPT0gdDIubW9sZCxcbiAgICAgIF1cbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KCh8fCksIGZhbHNlKTtcbiAgICBpZiAoZXEpIHtcbiAgICAgIFNvbWUoRXEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgKF8sIHIxKSA9IFRpbGUuc2hhcGVzKHQxKTtcbiAgICAgIGxldCAobDIsIF8pID0gVGlsZS5zaGFwZXModDIpO1xuICAgICAgc3dpdGNoIChyMSwgbDIpIHtcbiAgICAgIHwgKENvbnZleCwgQ29udmV4KSA9PiBOb25lXG4gICAgICB8IChDb25jYXZlKF8pLCBDb252ZXgpID0+IFNvbWUoTHQpXG4gICAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+IFNvbWUoR3QpXG4gICAgICB8IChDb25jYXZlKHApLCBDb25jYXZlKHAnKSkgPT5cbiAgICAgICAgaWYgKHAgPCBwJykge1xuICAgICAgICAgIFNvbWUoTHQpO1xuICAgICAgICB9IGVsc2UgaWYgKHAgPiBwJykge1xuICAgICAgICAgIFNvbWUoR3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN3aXRjaCAoUHJlY2VkZW5jZS5hc3NvY2lhdGl2aXR5KHApKSB7XG4gICAgICAgICAgfCBTb21lKExlZnQpID0+IFNvbWUoR3QpXG4gICAgICAgICAgfCBTb21lKFJpZ2h0KSA9PiBTb21lKEx0KVxuICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgLy8gbWF5IHdhbnQgdG8gbWFrZSB0aGlzIFNvbWUoRXEpXG4gICAgICAgICAgICAvLyBmb3IgdGhpbmdzIGxpa2UgY29tbWEgYnV0IGRvbid0XG4gICAgICAgICAgICAvLyB3YW50IHRvIGJvdGhlciB3aXRoIG1vbGQgY29uY2VybnMgaGVyZVxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfTtcbiAgfTtcblxubW9kdWxlIFN0YWNrcyA9IHtcbiAgW0BkZXJpdmluZyBzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSldXG4gIHR5cGUgc2tlbCA9IHQ7XG4gIFtAZGVyaXZpbmcgc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pXVxuICB0eXBlIHQgPSB7XG4gICAgb3V0cHV0OiBsaXN0KHNrZWwpLFxuICAgIHNodW50ZWQ6IGxpc3QoaXApLFxuICB9O1xuXG4gIGxldCBlbXB0eSA9IHtvdXRwdXQ6IFtdLCBzaHVudGVkOiBbXX07XG5cbiAgbGV0IHJlYyBwb3BfY2hhaW4gPVxuICAgICAgICAgICh+cG9wcGVkPVtdLCBzaHVudGVkOiBsaXN0KGlwKSk6IChsaXN0KGlwKSwgbGlzdChpcCkpID0+XG4gICAgc3dpdGNoIChzaHVudGVkKSB7XG4gICAgfCBbXSA9PiAocG9wcGVkLCBzaHVudGVkKVxuICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgIHN3aXRjaCAocG9wcGVkKSB7XG4gICAgICB8IFtdID0+IHBvcF9jaGFpbih+cG9wcGVkPVtoZF0sIHRsKVxuICAgICAgfCBbcCwgLi4uX10gPT5cbiAgICAgICAgc3dpdGNoIChyZWwoc25kKGhkKSwgc25kKHApKSkge1xuICAgICAgICB8IFNvbWUoRXEpID0+IHBvcF9jaGFpbih+cG9wcGVkPVtoZCwgLi4ucG9wcGVkXSwgdGwpXG4gICAgICAgIHwgXyA9PiAocG9wcGVkLCBzaHVudGVkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgc2hhcGVzID0gcCA9PlxuICAgIFBpZWNlLnNoYXBlcyhwKSB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnB1dF9jb250YWluc19zZWNvbmRhcnkpO1xuXG4gIGxldCBzaGFwZXNfb2ZfY2hhaW4gPVxuICAgICAgKGNoYWluOiBsaXN0KGlwKSk6IG9wdGlvbigoTmliLlNoYXBlLnQsIE5pYi5TaGFwZS50KSkgPT5cbiAgICBzd2l0Y2ggKGNoYWluLCBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChjaGFpbikpIHtcbiAgICB8IChbKF8sIGZpcnN0KSwgLi4uX10sIFNvbWUoKF8sIChfLCBsYXN0KSkpKSA9PlxuICAgICAgbGV0IChsLCBfKSA9IHNoYXBlcyhmaXJzdCk7XG4gICAgICBsZXQgKF8sIHIpID0gc2hhcGVzKGxhc3QpO1xuICAgICAgU29tZSgobCwgcikpO1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgcmVjIHB1c2hfb3V0cHV0ID0gKH5wcmVjOiBvcHRpb24oUHJlY2VkZW5jZS50KT0/LCBzdGFja3M6IHQpOiB0ID0+IHtcbiAgICBsZXQgKGNoYWluLCBzaHVudGVkKSA9IHBvcF9jaGFpbihzdGFja3Muc2h1bnRlZCk7XG4gICAgc3dpdGNoIChwcmVjLCBzaGFwZXNfb2ZfY2hhaW4oY2hhaW4pKSB7XG4gICAgfCAoU29tZShwcmVjKSwgU29tZSgoXywgQ29uY2F2ZShwcmVjJykpKSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFByZWNlZGVuY2UuY29tcGFyZShwcmVjJywgcHJlYykgPCAwXG4gICAgICAgICAgfHwgUHJlY2VkZW5jZS5jb21wYXJlKHByZWMnLCBwcmVjKSA9PSAwXG4gICAgICAgICAgJiYgUHJlY2VkZW5jZS5hc3NvY2lhdGl2aXR5KHByZWMnKSAhPSBTb21lKExlZnQpID0+IHN0YWNrc1xuICAgIHwgKF8sIE5vbmUpID0+IHN0YWNrc1xuICAgIHwgKF8sIFNvbWUoKGwsIHIpKSkgPT5cbiAgICAgIGxldCBpcyA9IExpc3QubWFwKGZzdCwgY2hhaW4pO1xuICAgICAgbGV0IHNwbGl0X2tpZHMgPSBuID0+XG4gICAgICAgIHRyeShMaXN0VXRpbC5zcGxpdF9uKG4sIHN0YWNrcy5vdXRwdXQpIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5yZXYpKSB7XG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIHByaW50X2VuZGxpbmUoc2hvdyhzdGFja3MpKTtcbiAgICAgICAgICBmYWlsd2l0aChcIlNrZWwucHVzaF9vdXRwdXQ6IHNwbGl0X2tpZHM6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG4gICAgICAgIH07XG4gICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgc3dpdGNoIChsLCByKSB7XG4gICAgICAgIHwgKENvbnZleCwgQ29udmV4KSA9PlxuICAgICAgICAgIGxldCAoa2lkcywgb3V0cHV0KSA9IHNwbGl0X2tpZHMoTGlzdC5sZW5ndGgoY2hhaW4pIC0gMSk7XG4gICAgICAgICAgW09wKEFiYS5tayhpcywga2lkcykpLCAuLi5vdXRwdXRdO1xuICAgICAgICB8IChDb252ZXgsIENvbmNhdmUoXykpID0+XG4gICAgICAgICAgbGV0IChraWRzLCBvdXRwdXQpID0gc3BsaXRfa2lkcyhMaXN0Lmxlbmd0aChjaGFpbikpO1xuICAgICAgICAgIGxldCAoa2lkcywgcikgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGtpZHMpO1xuICAgICAgICAgIFtQcmUoQWJhLm1rKGlzLCBraWRzKSwgciksIC4uLm91dHB1dF07XG4gICAgICAgIHwgKENvbmNhdmUoXyksIENvbnZleCkgPT5cbiAgICAgICAgICBsZXQgKGtpZHMsIG91dHB1dCkgPSBzcGxpdF9raWRzKExpc3QubGVuZ3RoKGNoYWluKSk7XG4gICAgICAgICAgbGV0IChsLCBraWRzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGtpZHMpO1xuICAgICAgICAgIFtQb3N0KGwsIEFiYS5tayhpcywga2lkcykpLCAuLi5vdXRwdXRdO1xuICAgICAgICB8IChDb25jYXZlKF8pLCBDb25jYXZlKF8pKSA9PlxuICAgICAgICAgIGxldCAoa2lkcywgb3V0cHV0KSA9IHNwbGl0X2tpZHMoTGlzdC5sZW5ndGgoY2hhaW4pICsgMSk7XG4gICAgICAgICAgbGV0IChsLCBraWRzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KGtpZHMpO1xuICAgICAgICAgIGxldCAoa2lkcywgcikgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KGtpZHMpO1xuICAgICAgICAgIFtCaW4obCwgQWJhLm1rKGlzLCBraWRzKSwgciksIC4uLm91dHB1dF07XG4gICAgICAgIH07XG4gICAgICBwdXNoX291dHB1dCh+cHJlYz8sIHtzaHVudGVkLCBvdXRwdXR9KTtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBwdXNoX3NodW50ZWQgPSAoKF8sIHApIGFzIGlwOiBpcCwgc3RhY2tzOiB0KTogdCA9PiB7XG4gICAgbGV0IChsLCBfKSA9IHNoYXBlcyhwKTtcbiAgICBsZXQgc3RhY2tzID1cbiAgICAgIHN3aXRjaCAobCkge1xuICAgICAgfCBDb252ZXggPT4gc3RhY2tzXG4gICAgICB8IENvbmNhdmUocHJlYykgPT4gcHVzaF9vdXRwdXQofnByZWMsIHN0YWNrcylcbiAgICAgIH07XG4gICAgey4uLnN0YWNrcywgc2h1bnRlZDogW2lwLCAuLi5zdGFja3Muc2h1bnRlZF19O1xuICB9O1xuXG4gIGxldCBmaW5pc2ggPSBzdGFja3MgPT4gcHVzaF9vdXRwdXQoc3RhY2tzKTtcbn07XG5cbmxldCBtayA9IChzZWc6IGxpc3QoaXApKTogdCA9PiB7XG4gIGxldCBzdGFja3MgPVxuICAgIHNlZ1xuICAgIHw+IExpc3QuZm9sZF9sZWZ0KEZ1bi5mbGlwKFN0YWNrcy5wdXNoX3NodW50ZWQpLCBTdGFja3MuZW1wdHkpXG4gICAgfD4gU3RhY2tzLmZpbmlzaDtcbiAgTGlzdFV0aWwuaGRfb3B0KHN0YWNrcy5vdXRwdXQpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKE5vbmNvbnZleF9zZWdtZW50KTtcbn07XG4iLCJvcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBFbXB0eV9zZWdtZW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBCYXNlLnNlZ21lbnQ7XG5cbmxldCBlbXB0eSA9IFtdO1xubGV0IGNvbnMgPSBMaXN0LmNvbnM7XG5sZXQgY29uY2F0ID0gTGlzdC5jb25jYXQ7XG5sZXQgZm9sZF9yaWdodCA9IExpc3QuZm9sZF9yaWdodDtcbmxldCByZXYgPSBMaXN0LnJldjtcblxubGV0IG9mX3RpbGUgPSB0ID0+IFtUaWxlLnRvX3BpZWNlKHQpXTtcblxubGV0IG5pYnMgPSB0aWxlcyA9PlxuICBzd2l0Y2ggKHRpbGVzLCBMaXN0VXRpbC5zcGxpdF9sYXN0X29wdCh0aWxlcykpIHtcbiAgfCAoW10sIF8pXG4gIHwgKF8sIE5vbmUpID0+IE5vbmVcbiAgfCAoW19maXJzdCwgLi4uX10sIFNvbWUoKF8sIF9sYXN0KSkpID0+IGZhaWx3aXRoKFwidG9kbyBUaWxlcy5uaWJzXCIpXG4gIH07XG5cbmxldCBpbmNvbXBsZXRlX3RpbGVzID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSB3aGVuICFUaWxlLmlzX2NvbXBsZXRlKHQpID0+IFNvbWUodClcbiAgICB8IF8gPT4gTm9uZSxcbiAgKTtcbmxldCB0aWxlcyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgPT4gU29tZSh0KVxuICAgIHwgXyA9PiBOb25lLFxuICApO1xuXG5sZXQgY29udmV4X2dyb3V0ID1cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuR3JvdXQoZykgd2hlbiBnLnNoYXBlID09IENvbnZleCA9PiBTb21lKGcpXG4gICAgfCBfID0+IE5vbmUsXG4gICk7XG5cbmxldCBjb250YWluc19tYXRjaGluZyA9ICh0OiBUaWxlLnQpID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0JykgPT4gdCcuaWQgPT0gdC5pZFxuICAgIHwgXyA9PiBmYWxzZSxcbiAgKTtcblxubGV0IHJlbW92ZV9tYXRjaGluZyA9ICh0OiBUaWxlLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCcpIHdoZW4gdCcuaWQgPT0gdC5pZCA9PiBOb25lXG4gICAgfCBwID0+IFNvbWUocCksXG4gICk7XG5cbmxldCBzbm9jID0gKHRpbGVzLCB0aWxlKSA9PiB0aWxlcyBAIFt0aWxlXTtcblxuLy8gbGV0IGlzX2JhbGFuY2VkID0gTGlzdC5mb3JfYWxsKFBpZWNlLmlzX2JhbGFuY2VkKTtcblxubGV0IHNoYXBlX2FmZml4ID1cbiAgICAoZDogRGlyZWN0aW9uLnQsIGFmZml4OiB0LCByOiBOaWIuU2hhcGUudClcbiAgICA6IChBYmEudChsaXN0KFNlY29uZGFyeS50KSwgR3JvdXQudCksIE5pYi5TaGFwZS50LCB0KSA9PiB7XG4gIGxldCBlbXB0eV93Z3cgPSBBYmEubWsoW1tdXSwgW10pO1xuICBsZXQgcmVjIGdvID0gKGFmZml4OiB0LCByOiBOaWIuU2hhcGUudCkgPT5cbiAgICBzd2l0Y2ggKGFmZml4KSB7XG4gICAgfCBbXSA9PiAoZW1wdHlfd2d3LCByLCBbXSlcbiAgICB8IFtwLCAuLi50bF0gPT5cbiAgICAgIGxldCAod2d3LCBzLCB0bCkgPSBnbyh0bCwgcik7XG4gICAgICBzd2l0Y2ggKHApIHtcbiAgICAgIHwgU2Vjb25kYXJ5KHcpID0+XG4gICAgICAgIGxldCAod3NzLCBncykgPSB3Z3c7XG4gICAgICAgIGxldCAod3MsIHdzcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdCh3c3MpO1xuICAgICAgICAoKFtbdywgLi4ud3NdLCAuLi53c3NdLCBncyksIHMsIHRsKTtcbiAgICAgIHwgR3JvdXQoZykgPT4gKEFiYS5jb25zKFtdLCBnLCB3Z3cpLCBzLCB0bClcbiAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICBsZXQgKGwsIF8pID0gVGlsZS5zaGFwZXModCkgfD4gKGQgPT0gTGVmdCA/IFR1cGxlVXRpbC5zd2FwIDogRnVuLmlkKTtcbiAgICAgICAgKGVtcHR5X3dndywgbCwgdGwpO1xuICAgICAgfTtcbiAgICB9O1xuICBnbygoZCA9PSBMZWZ0ID8gTGlzdC5yZXYgOiBGdW4uaWQpKGFmZml4KSwgcik7XG59O1xubGV0IHNoYXBlID0gc2hhcGVfYWZmaXgoUmlnaHQpO1xuXG5sZXQgcmVjIGNvbnZleCA9IHNlZyA9PiB7XG4gIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gIGxldCBsID1cbiAgICBmb2xkX3JpZ2h0KFxuICAgICAgKHA6IFBpZWNlLnQsIHNoYXBlKSA9PiB7XG4gICAgICAgIGxldCogcyA9IHNoYXBlO1xuICAgICAgICBzd2l0Y2ggKHApIHtcbiAgICAgICAgfCBTZWNvbmRhcnkoXykgPT4gc2hhcGVcbiAgICAgICAgfCBHcm91dChnKSA9PlxuICAgICAgICAgIEdyb3V0LmZpdHNfc2hhcGUoZywgcykgPyBTb21lKGZzdChHcm91dC5zaGFwZXMoZykpKSA6IE5vbmVcbiAgICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgICAgbGV0IChsLCByKSA9IFRpbGUuc2hhcGVzKHQpO1xuICAgICAgICAgIExpc3QuZm9yX2FsbChjb252ZXgsIHQuY2hpbGRyZW4pICYmIE5pYi5TaGFwZS5maXRzKHIsIHMpXG4gICAgICAgICAgICA/IFNvbWUobCkgOiBOb25lO1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHNlZyxcbiAgICAgIFNvbWUoTmliLlNoYXBlLmNvbmNhdmUoKSksXG4gICAgKTtcbiAgc3dpdGNoIChsKSB7XG4gIHwgTm9uZSA9PiBmYWxzZVxuICB8IFNvbWUobCkgPT4gTmliLlNoYXBlLmZpdHMoTmliLlNoYXBlLmNvbmNhdmUoKSwgbClcbiAgfTtcbn07XG5cbmxldCBzcGxpdF9ieV9ncm91dDogdCA9PiBBYmEudCh0LCBHcm91dC50KSA9XG4gIEFiYS5zcGxpdChcbiAgICBmdW5cbiAgICB8IFBpZWNlLkdyb3V0KGcpID0+IEVpdGhlci5SKGcpXG4gICAgfCBwID0+IEwocCksXG4gICk7XG5cbmxldCByZWMgcmVtb2xkID0gKH5zaGFwZT1OaWIuU2hhcGUuY29uY2F2ZSgpLCBzZWc6IHQsIHM6IFNvcnQudCkgPT5cbiAgc3dpdGNoIChzKSB7XG4gIHwgQW55ID0+IHNlZ1xuICB8IFR5cCA9PiByZW1vbGRfdHlwKHNoYXBlLCBzZWcpXG4gIHwgUGF0ID0+IHJlbW9sZF9wYXQoc2hhcGUsIHNlZylcbiAgfCBFeHAgPT4gcmVtb2xkX2V4cChzaGFwZSwgc2VnKVxuICB8IFJ1bCA9PiByZW1vbGRfcnVsKHNoYXBlLCBzZWcpXG4gIHwgVFBhdCA9PiByZW1vbGRfdHBhdChzaGFwZSwgc2VnKVxuICB8IF8gPT4gZmFpbHdpdGgoXCJyZW1vbGQgdW5leHBlY3RlZFwiKVxuICB9XG5hbmQgcmVtb2xkX3RpbGUgPSAoczogU29ydC50LCBzaGFwZSwgdDogVGlsZS50KTogb3B0aW9uKFRpbGUudCkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHJlbW9sZGVkID1cbiAgICBNb2xkcy5nZXQodC5sYWJlbClcbiAgICB8PiBMaXN0LmZpbHRlcigobTogTW9sZC50KSA9PiBtLm91dCA9PSBzKVxuICAgIHw+IExpc3QubWFwKG1vbGQgPT4gey4uLnQsIG1vbGR9KVxuICAgIHw+IChcbiAgICAgIGZ1blxuICAgICAgfCBbX10gYXMgdHMgPT4gdHNcbiAgICAgIHwgdHMgPT5cbiAgICAgICAgdHMgfD4gTGlzdC5maWx0ZXIodCA9PiBOaWIuU2hhcGUuZml0cyhzaGFwZSwgZnN0KFRpbGUuc2hhcGVzKHQpKSkpXG4gICAgKVxuICAgIHw+IExpc3RVdGlsLmhkX29wdDtcbiAgbGV0IGNoaWxkcmVuID1cbiAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAoKGwsIGNoaWxkLCByKSwgY2hpbGRyZW4pID0+IHtcbiAgICAgICAgbGV0IGNoaWxkID1cbiAgICAgICAgICBpZiAobFxuICAgICAgICAgICAgICArIDEgPT0gclxuICAgICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgTGlzdC5udGgocmVtb2xkZWQubW9sZC5pbl8sIGwpICE9IExpc3QubnRoKHQubW9sZC5pbl8sIGwpXG4gICAgICAgICAgICAgICAgfHwgRWZmZWN0LnNfdG91Y2hlZChyZW1vbGRlZC5pZClcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgcmVtb2xkKGNoaWxkLCBMaXN0Lm50aChyZW1vbGRlZC5tb2xkLmluXywgbCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjaGlsZDtcbiAgICAgICAgICB9O1xuICAgICAgICBbY2hpbGQsIC4uLmNoaWxkcmVuXTtcbiAgICAgIH0sXG4gICAgICBBYmEuYWJhX3RyaXBsZXMoQWJhLm1rKHJlbW9sZGVkLnNoYXJkcywgcmVtb2xkZWQuY2hpbGRyZW4pKSxcbiAgICAgIFtdLFxuICAgICk7XG4gIHsuLi5yZW1vbGRlZCwgY2hpbGRyZW59O1xufVxuYW5kIHJlbW9sZF90eXAgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF90eXAoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoVHlwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3R5cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT4gW1RpbGUodCksIC4uLnJlbW9sZF90eXAoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF90eXBfdW5pID0gKHNoYXBlLCBzZWc6IHQpOiAodCwgTmliLlNoYXBlLnQsIHQpID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gKFtdLCBzaGFwZSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+XG4gICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgKFtoZCwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFR5cCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IE5vbmUgPT4gKFtdLCBzaGFwZSwgc2VnKVxuICAgICAgfCBTb21lKHQpIHdoZW4gIVRpbGUuaGFzX2VuZChSaWdodCwgdCkgPT5cbiAgICAgICAgbGV0IChfLCByKSA9IFRpbGUubmlicyh0KTtcbiAgICAgICAgbGV0IHJlbW9sZGVkID0gcmVtb2xkKH5zaGFwZT1yLnNoYXBlLCB0bCwgci5zb3J0KTtcbiAgICAgICAgbGV0IChfLCBzaGFwZSwgXykgPSBzaGFwZV9hZmZpeChMZWZ0LCByZW1vbGRlZCwgci5zaGFwZSk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgW10pO1xuICAgICAgfCBTb21lKHQpIHdoZW4gdC5sYWJlbCA9PSBGb3JtLmdldChcImNvbW1hX3R5cFwiKS5sYWJlbCA9PiAoXG4gICAgICAgICAgW10sXG4gICAgICAgICAgc2hhcGUsXG4gICAgICAgICAgc2VnLFxuICAgICAgICApXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID1cbiAgICAgICAgICByZW1vbGRfdHlwX3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3BhdF91bmkgPSAoc2hhcGUsIHNlZzogdCk6ICh0LCBOaWIuU2hhcGUudCwgdCkgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAoW10sIHNoYXBlLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT5cbiAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAoW2hkLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWRfdHlwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfcGF0LCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfcGF0X3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90eXBdIEAgcmVtb2xkZWRfcGF0LCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgXyA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9XG4gICAgICAgICAgICByZW1vbGRfcGF0X3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9wYXQgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF9wYXQoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3BhdChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9wYXQoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IF8gPT4gW1RpbGUodCksIC4uLnJlbW9sZF9wYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX3RwYXRfdW5pID0gKHNoYXBlLCBzZWc6IHQpOiAodCwgTmliLlNoYXBlLnQsIHQpID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gKFtdLCBzaGFwZSwgW10pXG4gIHwgW2hkLCAuLi50bF0gPT5cbiAgICBzd2l0Y2ggKGhkKSB7XG4gICAgfCBTZWNvbmRhcnkoXylcbiAgICB8IEdyb3V0KF8pID0+XG4gICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHBhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgIChbaGQsIC4uLnJlbW9sZGVkXSwgc2hhcGUsIHJlc3QpO1xuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShUUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCBfID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID1cbiAgICAgICAgICAgIHJlbW9sZF90cGF0X3VuaShzbmQoVGlsZS5zaGFwZXModCkpLCB0bCk7XG4gICAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF90cGF0ID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfdHBhdChzaGFwZSwgdGwpXVxuICAgIHwgVGlsZSh0KSA9PlxuICAgICAgc3dpdGNoIChyZW1vbGRfdGlsZShUUGF0LCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3RwYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIHN3aXRjaCAoVGlsZS5uaWJzKHQpKSB7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogVHlwfSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfdHBhdChzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgXyA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX3RwYXQoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5hbmQgcmVtb2xkX2V4cF91bmkgPSAoc2hhcGUsIHNlZzogdCk6ICh0LCBOaWIuU2hhcGUudCwgdCkgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAoW10sIHNoYXBlLCBbXSlcbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT5cbiAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAoW2hkLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCByZXN0KTtcbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoRXhwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiAoW10sIHNoYXBlLCBzZWcpXG4gICAgICB8IFNvbWUodCkgd2hlbiAhVGlsZS5oYXNfZW5kKFJpZ2h0LCB0KSA9PlxuICAgICAgICBsZXQgKF8sIHIpID0gVGlsZS5uaWJzKHQpO1xuICAgICAgICBsZXQgcmVtb2xkZWQgPSByZW1vbGQofnNoYXBlPXIuc2hhcGUsIHRsLCByLnNvcnQpO1xuICAgICAgICBsZXQgKF8sIHNoYXBlLCBfKSA9IHNoYXBlX2FmZml4KExlZnQsIHJlbW9sZGVkLCByLnNoYXBlKTtcbiAgICAgICAgKFtUaWxlKHQpLCAuLi5yZW1vbGRlZF0sIHNoYXBlLCBbXSk7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUUGF0fSkgPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkX3RwYXQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90cGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90cGF0XSBAIHJlbW9sZGVkX2V4cCwgc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9wYXQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgbGV0IChyZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCByZXN0KTtcbiAgICAgICAgICAoW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkX3BhdF0gQCByZW1vbGRlZF9leHAsIHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWRfdHlwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfdHlwX3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIGxldCAocmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgcmVzdCk7XG4gICAgICAgICAgKFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF90eXBdIEAgcmVtb2xkZWRfZXhwLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIHwgKF8sIHtzaGFwZSwgc29ydDogUnVsfSkgPT5cbiAgICAgICAgICAvLyBUT0RPIHJldmlldyBzaG9ydCBjaXJjdWl0XG4gICAgICAgICAgKFtUaWxlKHQpXSwgc2hhcGUsIHRsKVxuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPVxuICAgICAgICAgICAgcmVtb2xkX2V4cF91bmkoc25kKFRpbGUuc2hhcGVzKHQpKSwgdGwpO1xuICAgICAgICAgIChbVGlsZSh0KSwgLi4ucmVtb2xkZWRdLCBzaGFwZSwgcmVzdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmFuZCByZW1vbGRfcnVsID0gKHNoYXBlLCBzZWc6IHQpOiB0ID0+XG4gIHN3aXRjaCAoc2VnKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbaGQsIC4uLnRsXSA9PlxuICAgIHN3aXRjaCAoaGQpIHtcbiAgICB8IFNlY29uZGFyeShfKVxuICAgIHwgR3JvdXQoXykgPT4gW2hkLCAuLi5yZW1vbGRfcnVsKHNoYXBlLCB0bCldXG4gICAgfCBUaWxlKHQpID0+XG4gICAgICBzd2l0Y2ggKHJlbW9sZF90aWxlKFJ1bCwgc2hhcGUsIHQpKSB7XG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBFeHB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9leHBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9ydWwoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFBhdH0pID0+XG4gICAgICAgICAgbGV0IChyZW1vbGRlZCwgc2hhcGUsIHJlc3QpID0gcmVtb2xkX3BhdF91bmkoc2hhcGUsIHRsKTtcbiAgICAgICAgICAvLyBUT0RPKGQpIGNvbnRpbnVpbmcgb250byBydWxlIG1pZ2h0IG5vdCBiZSByaWdodCByaWdodC4uLlxuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfcnVsKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCBfID0+IGZhaWx3aXRoKFwicmVtb2xkX3J1bCB1bmV4cGVjdGVkXCIpXG4gICAgICAgIH1cbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBsZXQgKHJlbW9sZGVkLCBzaGFwZSwgcmVzdCkgPSByZW1vbGRfZXhwX3VuaShzaGFwZSwgW2hkLCAuLi50bF0pO1xuICAgICAgICBzd2l0Y2ggKHJlbW9sZGVkKSB7XG4gICAgICAgIHwgW10gPT4gW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZF9ydWwoc2hhcGUsIHRsKV1cbiAgICAgICAgfCBbXywgLi4uX10gPT4gcmVtb2xkZWQgQCByZW1vbGRfcnVsKHNoYXBlLCByZXN0KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxuYW5kIHJlbW9sZF9leHAgPSAoc2hhcGUsIHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiBbXVxuICB8IFtoZCwgLi4udGxdID0+XG4gICAgc3dpdGNoIChoZCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbaGQsIC4uLnJlbW9sZF9leHAoc2hhcGUsIHRsKV1cbiAgICB8IFRpbGUodCkgPT5cbiAgICAgIHN3aXRjaCAocmVtb2xkX3RpbGUoRXhwLCBzaGFwZSwgdCkpIHtcbiAgICAgIHwgTm9uZSA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX2V4cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICB8IFNvbWUodCkgPT5cbiAgICAgICAgc3dpdGNoIChUaWxlLm5pYnModCkpIHtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF9wYXRfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9leHAoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFRQYXR9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90cGF0X3VuaShzaGFwZSwgdGwpO1xuICAgICAgICAgIFtQaWVjZS5UaWxlKHQpLCAuLi5yZW1vbGRlZF0gQCByZW1vbGRfZXhwKHNoYXBlLCByZXN0KTtcbiAgICAgICAgfCAoXywge3NoYXBlLCBzb3J0OiBUeXB9KSA9PlxuICAgICAgICAgIGxldCAocmVtb2xkZWQsIHNoYXBlLCByZXN0KSA9IHJlbW9sZF90eXBfdW5pKHNoYXBlLCB0bCk7XG4gICAgICAgICAgW1BpZWNlLlRpbGUodCksIC4uLnJlbW9sZGVkXSBAIHJlbW9sZF9leHAoc2hhcGUsIHJlc3QpO1xuICAgICAgICB8IChfLCB7c2hhcGUsIHNvcnQ6IFJ1bH0pID0+IFtUaWxlKHQpLCAuLi5yZW1vbGRfcnVsKHNoYXBlLCB0bCldXG4gICAgICAgIHwgXyA9PiBbVGlsZSh0KSwgLi4ucmVtb2xkX2V4cChzbmQoVGlsZS5zaGFwZXModCkpLCB0bCldXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbmxldCBza2VsID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMDAsIHNlZyA9PlxuICAgIHNlZ1xuICAgIHw+IExpc3QubWFwaSgoaSwgcCkgPT4gKGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpXG4gICAgfD4gU2tlbC5ta1xuICApO1xuXG5sZXQgc29ydGVkX2NoaWxkcmVuID0gTGlzdC5jb25jYXRfbWFwKFBpZWNlLnNvcnRlZF9jaGlsZHJlbik7XG5sZXQgY2hpbGRyZW4gPSBzZWcgPT4gTGlzdC5tYXAoc25kLCBzb3J0ZWRfY2hpbGRyZW4oc2VnKSk7XG5cbm1vZHVsZSBUcmltID0ge1xuICB0eXBlIHNlZyA9IHQ7XG4gIHR5cGUgdCA9IEFiYS50KGxpc3QoU2Vjb25kYXJ5LnQpLCBHcm91dC50KTtcblxuICBsZXQgZW1wdHkgPSBBYmEubWsoW1tdXSwgW10pO1xuXG4gIGxldCByZXYgPSBBYmEucmV2KExpc3QucmV2LCBGdW4uaWQpO1xuXG4gIGxldCBjb25zX3cgPSAodzogU2Vjb25kYXJ5LnQsICh3c3MsIGdzKSkgPT4ge1xuICAgIC8vIHNhZmUgYmMgQWJhIGFsd2F5cyBoYXMgYXQgbGVhc3Qgb25lIEEgZWxlbWVudFxuICAgIGxldCAod3MsIHdzcykgPSBMaXN0VXRpbC5zcGxpdF9maXJzdCh3c3MpO1xuICAgIEFiYS5tayhbW3csIC4uLndzXSwgLi4ud3NzXSwgZ3MpO1xuICB9O1xuICBsZXQgY29uc19nID0gKGc6IEdyb3V0LnQsICh3c3MsIGdzKSkgPT5cbiAgICBBYmEubWsoW1tdLCAuLi53c3NdLCBbZywgLi4uZ3NdKTtcblxuICBsZXQgd3MgPSAoKHdzcywgXyk6IHQpOiBzZWcgPT4gTGlzdC4obWFwKFBpZWNlLnNlY29uZGFyeSwgY29uY2F0KHdzcykpKTtcblxuICAvLyBwb3N0Y29uZDogcmVzdWx0IGlzIGVpdGhlciA8d3M+IG9yIDx3cyxnLHdzJz5cbiAgbGV0IG1lcmdlID0gKCh3c3MsIGdzKTogdCk6IHQgPT4ge1xuICAgIHN3aXRjaCAoR3JvdXQubWVyZ2UoZ3MpKSB7XG4gICAgfCBOb25lID0+IEFiYS5tayhbTGlzdC5jb25jYXQod3NzKV0sIFtdKVxuICAgIHwgU29tZShnKSA9PlxuICAgICAgbGV0ICh3cywgd3NzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KHdzcyk7XG4gICAgICBBYmEubWsoW3dzLCBMaXN0LmNvbmNhdCh3c3MpXSwgW2ddKTtcbiAgICB9O1xuICB9O1xuICAvLyBzYW1lIGFzIG1lcmdlIGJ1dCB0eXBlIGVuY29kZXMgcG9zdGNvbmRcbiAgLy8gbGV0IG1lcmdlZCA9ICh0cmltOiB0KTogKGxpc3QoU2Vjb25kYXJ5LnQpLCBvcHRpb24oKEdyb3V0LnQsIGxpc3QoU2Vjb25kYXJ5LnQpKSkpID0+IHtcbiAgLy8gICBsZXQgKHdzcywgZ3MpID0gbWVyZ2UodHJpbSk7XG4gIC8vICAgbGV0ICh3cywgd3NzKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KHdzcyk7XG4gIC8vICAgc3dpdGNoIChncykge1xuICAvLyAgIHwgW10gPT4gKHdzLCBOb25lKVxuICAvLyAgIHwgW2csIC4uLl9dID0+ICh3cywgU29tZSgoZywgTGlzdC5jb25jYXQod3NzKSkpKVxuICAvLyAgIH07XG4gIC8vIH07XG4gIGxldCByZWMgcm1fdXBfdG9fb25lX3NwYWNlID1cbiAgICAgICAgICAod3NzOiBsaXN0KGxpc3QoU2Vjb25kYXJ5LnQpKSk6IGxpc3QobGlzdChTZWNvbmRhcnkudCkpID0+XG4gICAgc3dpdGNoICh3c3MpIHtcbiAgICB8IFtdID0+IFtdXG4gICAgfCBbW3csIC4uLndzXSwgLi4ud3NzXSB3aGVuIFNlY29uZGFyeS5pc19zcGFjZSh3KSA9PiBMaXN0LmNvbnMod3MsIHdzcylcbiAgICB8IFt3cywgLi4ud3NzXSA9PiBMaXN0LmNvbnMod3MsIHJtX3VwX3RvX29uZV9zcGFjZSh3c3MpKVxuICAgIH07XG5cbiAgbGV0IGFkZF9ncm91dCA9ICh+ZDogRGlyZWN0aW9uLnQsIHNoYXBlOiBOaWIuU2hhcGUudCwgKHdzcywgZ3MpOiB0KTogdCA9PiB7XG4gICAgbGV0IGcgPSBHcm91dC5ta19maXRzX3NoYXBlKHNoYXBlKTtcbiAgICAvKiBXaGVuIGFkZGluZyBhIGdyb3V0IHRvIHRoZSBsZWZ0LCBjb25zdW1lIGEgc3BhY2UuIE5vdGVcbiAgICAgICBjaGFuZ2VzIG1hZGUgdG8gdGhlIGxvZ2ljIGhlcmUgc2hvdWxkIGFsc28gdGFrZSBpbnRvXG4gICAgICAgYWNjb3VudCB0aGUgb3RoZXIgZGlyZWN0aW9uIGluICdyZWdyb3V0JyBiZWxvdyAqL1xuICAgIGxldCB3c3MnID1cbiAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgLyogUmlnaHQgQ29udmV4IGUuZy4gQmFja3NwYWNlIGAxfCArIDJgID0+IGB8PD4gKyAyYCAoRG9uJ3QgY29uc3VtZSkgKi9cbiAgICAgIC8qIFJpZ2h0IENvbmNhdmUgZS5nLiBCYWNrc3BhY2UgYDEgK3wgMWAgPT4gYDEgfD48IDFgIChEb24ndCBjb25zdW1lKSAqL1xuICAgICAgfCBSaWdodCA9PiB3c3NcbiAgICAgIC8qIExlZnQgQ29udmV4IGUuZy4gSW5zZXJ0IFNwYWNlIGBbfF1gID0+IGBbIHxdYCA9PiBgWzw+fF1gIChDb25zdW1lKSAqL1xuICAgICAgLyogTGVmdCBDb25jYXZlIGUuZy4gSW5zZXJ0IFwiaVwiIGBsZXQgYSA9IDEgaXxgID0+IGBsZXQgYSA9IDE+PGl8YCAoQ29uc3VtZSkgKi9cbiAgICAgIHwgTGVmdCA9PiBybV91cF90b19vbmVfc3BhY2Uod3NzKVxuICAgICAgfTtcbiAgICBjb25zX2coZywgKHdzcycsIGdzKSk7XG4gIH07XG5cbiAgLy8gYXNzdW1lcyBncm91dCBpbiB0cmltIGZpdCByIGJ1dCBtYXkgbm90IGZpdCBsXG4gIGxldCByZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCAobCwgcik6IE5pYnMuc2hhcGVzLCB0cmltOiB0KTogdCA9PlxuICAgIGlmIChOaWIuU2hhcGUuZml0cyhsLCByKSkge1xuICAgICAgbGV0ICh3c3MsIGdzKSA9IHRyaW07XG4gICAgICAvKiBXaGVuIHJlbW92aW5nIGEgZ3JvdXQgdG8gdGhlIExlZnQsIGFkZCBhIHNwYWNlLiBOb3RlXG4gICAgICAgICBjaGFuZ2VzIG1hZGUgdG8gdGhlIGxvZ2ljIGhlcmUgc2hvdWxkIGFsc28gdGFrZSBpbnRvXG4gICAgICAgICBhY2NvdW50IHRoZSBvdGhlciBkaXJlY3Rpb24gaW4gJ2FkZF9ncm91dCcgYWJvdmUgKi9cbiAgICAgIGxldCBuZXdfc3BhY2VzID1cbiAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgIChnOiBHcm91dC50KSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGcuc2hhcGUsIGQpIHtcbiAgICAgICAgICAgIC8qIExlZnQgQ29uY2F2ZSBlLmcuIGBsZXQgYSA9IDE+PGlufGAgPT4gYGxldCBhID0gMSBpbiB8YCAoQWRkKSAqL1xuICAgICAgICAgICAgLyogTk9URShhbmRyZXcpOiBOb3Qgc3VyZSB3aHkgZCBoZXJlIHNlZW1zIHJldmVyc2VkLiBBbHNvIG5vdCBzdXJlIHdoeVxuICAgICAgICAgICAgICogcmVzdHJpY3Rpb24gdG8gY29uY2F2ZSBpcyBuZWNlc3NhcnkgYnV0IHNlZW1zIHRvIHByZXZlbnQgYWRkaXRpb25cbiAgICAgICAgICAgICAqIG9mIG5lZWRsZXNzIHdoaXRlc3BhY2UgaW4gc29tZSBzaXR1YXRpb24gc3VjaCBhcyB3aGVuIGluc2VydGluZ1xuICAgICAgICAgICAgICogb24gYCh8KWAsIHdoaWNoIHNlZW1zIHRvIGFkZCB3aGl0ZXNwYWNlIGFmdGVyIHRoZSByaWdodCBwYXJlbnNcbiAgICAgICAgICAgICAqIHdpdGhvdXQgdGhpcyBzaGFwZSByZXN0aXJjdGlvbiAqL1xuICAgICAgICAgICAgfCAoQ29uY2F2ZSwgUmlnaHQpID0+IFNvbWUoU2Vjb25kYXJ5Lm1rX3NwYWNlKGcuaWQpKVxuICAgICAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdzLFxuICAgICAgICApO1xuICAgICAgLyogTm90ZSBiZWxvdyB0aGF0IGl0IGlzIGltcG9ydGFudCB0aGF0IHdlIGFkZCB0aGUgbmV3IHNwYWNlc1xuICAgICAgICAgYmVmb3JlIHRoZSBleGlzdGluZyB3c3MsIGFzIGRvaW5nIG90aGVyd2lzZSBtYXkgcmVzdWx0XG4gICAgICAgICBpbiB0aGUgbmV3IHNwYWNlcyBlbmRpbmcgdXAgbGVhZGluZyBhIGxpbmUuIFRoaXMgYXBwcm9hY2ggaXNcbiAgICAgICAgIHNvbWV3aGF0IGhhY2t5OyB3ZSBtYXkganVzdCB3YW50IHRvIHJlbW92ZSBhbGwgdGhlIHNwYWNlc1xuICAgICAgICAgd2hlbmV2ZXIgdGhlcmUgaXMgYSBsaW5lYnJlYWs7IG5vdCBtYWtpbmcgdGhpcyBjaGFuY2Ugbm93XG4gICAgICAgICBhcyBJJ20gd29ycmllZCBhYm91dCBpdCBpbnRyb2R1Y2luZyBzdWJ0bGUgamFuayAqL1xuXG4gICAgICAvKiBEYXZpZCBQUiBjb21tZW50OlxuICAgICAgICAgQWxsIHRoZXNlIGNoYW5nZXMgYXNzdW1lIHRoZSB0cmltIGlzIG9yZGVyZWQgbGVmdC10by1yaWdodCxcbiAgICAgICAgIGJ1dCB0aGlzIG1heSBub3QgYmUgdHJ1ZSB3aGVuIFRyaW0ucmVncm91dCBpcyBjYWxsZWQgYnlcbiAgICAgICAgIHJlZ3JvdXRfYWZmaXgoTGVmdCwgLi4uKSBiZWxvdywgd2hpY2ggcmV2ZXJzZXMgdGhlIGFmZml4IGJlZm9yZVxuICAgICAgICAgcHJvY2Vzc2luZy4gKFRoaXMgZGlkbid0IHBvc2UgYW4gaXNzdWUgYmVmb3JlIHdpdGggdHJpbSBiZWNhdXNlXG4gICAgICAgICB0aGUgc2Vjb25kYXJ5IGFuZCBncm91dCBhcmUgc3ltbWV0cmljIGFuZCB0aGUgZXhpc3RpbmcgY29kZVxuICAgICAgICAgZGlkbid0IGFmZmVjdCBvcmRlci4pXG4gICAgICAgICBQcm9wZXIgZml4IHdvdWxkIHJlcXVpcmUgdGhyZWFkaW5nIHRocm91Z2ggZGlyZWN0aW9uYWwgcGFyYW1ldGVyXG4gICAgICAgICBmcm9tIHJlZ3JvdXRfYWZmaXggaW50byBUcmltLnJlZ3JvdXQgYW5kIGFwcGVuZGluZyB0byBjb3JyZWN0IHNpZGUuXG4gICAgICAgICBTaW1pbGFyIHRocmVhZGluZyBmb3IgYWRkX2dyb3V0LiBUaGF0IHNhaWQsIEkgY291bGRuJ3QgdHJpZ2dlciBhbnlcbiAgICAgICAgIHVuZGVzaXJhYmxlIGJlaGF2aW9yIHdpdGggdGhlc2UgY2hhbmdlcyBhbmQgYW0gZmluZSB3aXRoIGdvaW5nIGFoZWFkXG4gICAgICAgICB3aXRoIHRoaXMgZm9yIG5vdy4gKi9cbiAgICAgIGxldCB3c3MgPSBbbmV3X3NwYWNlcyBAIExpc3QuY29uY2F0KHdzcyldO1xuICAgICAgQWJhLm1rKHdzcywgW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgKF8sIGdzKSBhcyBtZXJnZWQgPSBtZXJnZSh0cmltKTtcbiAgICAgIHN3aXRjaCAoZ3MpIHtcbiAgICAgIHwgW10gPT4gYWRkX2dyb3V0KH5kLCBsLCBtZXJnZWQpXG4gICAgICB8IFtfLCAuLi5fXSA9PiBtZXJnZWRcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgdG9fc2VnID0gKHRyaW06IHQpID0+XG4gICAgdHJpbVxuICAgIHw+IEFiYS5qb2luKExpc3QubWFwKFBpZWNlLnNlY29uZGFyeSksIGcgPT4gW1BpZWNlLkdyb3V0KGcpXSlcbiAgICB8PiBMaXN0LmNvbmNhdDtcbn07XG5cbmxldCByZWMgcmVncm91dCA9ICgobCwgciksIHNlZykgPT4ge1xuICBsZXQgKHRyaW0sIHIsIHRsKSA9IHJlZ3JvdXRfYWZmaXgoRGlyZWN0aW9uLlJpZ2h0LCBzZWcsIHIpO1xuICBsZXQgdHJpbSA9IFRyaW0ucmVncm91dChEaXJlY3Rpb24uUmlnaHQsIChsLCByKSwgdHJpbSk7XG4gIFRyaW0udG9fc2VnKHRyaW0pIEAgdGw7XG59XG5hbmQgcmVncm91dF9hZmZpeCA9XG4gICAgKGQ6IERpcmVjdGlvbi50LCBhZmZpeDogdCwgcjogTmliLlNoYXBlLnQpOiAoVHJpbS50LCBOaWIuU2hhcGUudCwgdCkgPT4ge1xuICBsZXQgKHRyaW0sIHMsIGFmZml4KSA9XG4gICAgZm9sZF9yaWdodChcbiAgICAgIChwOiBQaWVjZS50LCAodHJpbSwgciwgdGwpKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocCkge1xuICAgICAgICB8IFNlY29uZGFyeSh3KSA9PiAoVHJpbS5jb25zX3codywgdHJpbSksIHIsIHRsKVxuICAgICAgICB8IEdyb3V0KGcpID0+IChUcmltLihtZXJnZShjb25zX2coZywgdHJpbSkpKSwgciwgdGwpXG4gICAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICAgIGxldCBjaGlsZHJlbiA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgICAgICAgICAgIChoZCwgdGwpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdGwgPSB0bDtcbiAgICAgICAgICAgICAgICBsZXQgaGQgPSByZWdyb3V0KE5pYi5TaGFwZS4oY29uY2F2ZSgpLCBjb25jYXZlKCkpLCBoZCk7XG4gICAgICAgICAgICAgICAgW2hkLCAuLi50bF07XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHQuY2hpbGRyZW4sXG4gICAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBsZXQgcCA9IFBpZWNlLlRpbGUoey4uLnQsIGNoaWxkcmVufSk7XG4gICAgICAgICAgbGV0IChsJywgcicpID1cbiAgICAgICAgICAgIFRpbGUuc2hhcGVzKHQpIHw+IChkID09IExlZnQgPyBUdXBsZVV0aWwuc3dhcCA6IEZ1bi5pZCk7XG4gICAgICAgICAgbGV0IHRyaW0gPSBUcmltLnJlZ3JvdXQoZCwgKHInLCByKSwgdHJpbSk7XG4gICAgICAgICAgKFRyaW0uZW1wdHksIGwnLCBbcCwgLi4uVHJpbS50b19zZWcodHJpbSldIEAgdGwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGQgPT0gTGVmdCA/IExpc3QucmV2IDogRnVuLmlkKShhZmZpeCksXG4gICAgICAoQWJhLm1rKFtbXV0sIFtdKSwgciwgZW1wdHkpLFxuICAgICk7XG4gIGQgPT0gTGVmdCA/IChUcmltLnJldih0cmltKSwgcywgcmV2KGFmZml4KSkgOiAodHJpbSwgcywgYWZmaXgpO1xufTtcblxuLy8gZm9yIGludGVybmFsIHVzZSB3aGVuIGRlYWxpbmcgd2l0aCBzZWdtZW50cyBpbiByZXZlcnNlIG9yZGVyIChlZyBBZmZpeC5yZSlcbi8vIGxldCBmbGlwX25pYnMgPVxuLy8gICBMaXN0Lm1hcChcbi8vICAgICBmdW5cbi8vICAgICB8IChQaWVjZS5TZWNvbmRhcnkoXykgfCBHcm91dChfKSkgYXMgcCA9PiBwXG4vLyAgICAgfCBUaWxlKHQpID0+IFRpbGUoey4uLnQsIG1vbGQ6IE1vbGQuZmxpcF9uaWJzKHQubW9sZCl9KSxcbi8vICAgKTtcblxubGV0IHNwbGl0X2J5X21hdGNoaW5nID0gKGlkOiBJZC50KTogKHQgPT4gQWJhLnQodCwgVGlsZS50KSkgPT5cbiAgQWJhLnNwbGl0KFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSB3aGVuIHQuaWQgPT0gaWQgPT4gRWl0aGVyLlIodClcbiAgICB8IHAgPT4gTChwKSxcbiAgKTtcblxuLy8gbW9kdWxlIE1hdGNoID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLlIpO1xubGV0IHJlYyByZWFzc2VtYmxlID0gKHNlZzogdCk6IHQgPT5cbiAgc3dpdGNoIChpbmNvbXBsZXRlX3RpbGVzKHNlZykpIHtcbiAgfCBbXSA9PiBzZWdcbiAgfCBbdCwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKEFiYS50cmltKHNwbGl0X2J5X21hdGNoaW5nKHQuaWQsIHNlZykpKSB7XG4gICAgfCBOb25lID0+IHNlZ1xuICAgIHwgU29tZSgoc2VnX2wsIG1hdGNoLCBzZWdfcikpID0+XG4gICAgICBsZXQgdCA9IFRpbGUucmVhc3NlbWJsZShtYXRjaCk7XG4gICAgICBsZXQgY2hpbGRyZW4gPSBMaXN0Lm1hcChyZWFzc2VtYmxlLCB0LmNoaWxkcmVuKTtcbiAgICAgIGxldCBwID0gVGlsZS50b19waWVjZSh7Li4udCwgY2hpbGRyZW59KTtcbiAgICAgIHNlZ19sIEAgW3AsIC4uLnJlYXNzZW1ibGUoc2VnX3IpXTtcbiAgICB9XG4gIH07XG5cbmxldCB0cmltX2Y6IChsaXN0KEJhc2UucGllY2UpID0+IGxpc3QoQmFzZS5waWVjZSksIERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKHRyaW1fbCwgZCwgcHMpID0+IHtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IExlZnQgPT4gcHMgfD4gdHJpbV9sXG4gICAgfCBSaWdodCA9PiBwcyB8PiBMaXN0LnJldiB8PiB0cmltX2wgfD4gTGlzdC5yZXZcbiAgICB9O1xuICB9O1xuXG5sZXQgdHJpbV9zZWNvbmRhcnk6IChEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gIChkLCBwcykgPT4ge1xuICAgIC8qIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgc2Vjb25kYXJ5ICovXG4gICAgbGV0IHJlYyB0cmltX2wgPSB4cyA9PlxuICAgICAgc3dpdGNoICh4cykge1xuICAgICAgfCBbXSA9PiBbXVxuICAgICAgfCBbUGllY2UuU2Vjb25kYXJ5KF8pLCAuLi54c10gPT4gdHJpbV9sKHhzKVxuICAgICAgfCBbXywgLi4uX10gPT4geHNcbiAgICAgIH07XG4gICAgdHJpbV9mKHRyaW1fbCwgZCwgcHMpO1xuICB9O1xuXG5sZXQgdHJpbV9ncm91dDogKERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKGQsIHBzKSA9PiB7XG4gICAgLyogVHJpbXMgbGVhZGluZy90cmFpbGluZyBncm91dCAqL1xuICAgIGxldCByZWMgdHJpbV9sOiBsaXN0KEJhc2UucGllY2UpID0+IGxpc3QoQmFzZS5waWVjZSkgPVxuICAgICAgeHMgPT5cbiAgICAgICAgc3dpdGNoICh4cykge1xuICAgICAgICB8IFtdID0+IFtdXG4gICAgICAgIHwgW0dyb3V0KF8pLCAuLi54c10gPT4gdHJpbV9sKHhzKVxuICAgICAgICB8IFtfLCAuLi5fXSA9PiB4c1xuICAgICAgICB9O1xuICAgIHRyaW1fZih0cmltX2wsIGQsIHBzKTtcbiAgfTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dDogKERpcmVjdGlvbi50LCB0KSA9PiB0ID1cbiAgKGQsIHBzKSA9PiB7XG4gICAgLyogVHJpbXMgbGVhZGluZy90cmFpbGluZyBzZWNvbmRhcnksIGNvbnRpbnVpbmdcbiAgICAgICB0byB0cmltIGFyb3VuZCBncm91dCB1bnRpbCBmaXJzdCBUaWxlIGlzIHJlYWNoZWQgKi9cbiAgICBsZXQgcmVjIHRyaW1fbDogbGlzdChCYXNlLnBpZWNlKSA9PiBsaXN0KEJhc2UucGllY2UpID1cbiAgICAgIHhzID0+XG4gICAgICAgIHN3aXRjaCAoeHMpIHtcbiAgICAgICAgfCBbXSA9PiBbXVxuICAgICAgICB8IFtTZWNvbmRhcnkoXykgfCBHcm91dChfKSwgLi4ueHNdID0+IHRyaW1fbCh4cylcbiAgICAgICAgfCBbXywgLi4uX10gPT4geHNcbiAgICAgICAgfTtcbiAgICB0cmltX2YodHJpbV9sLCBkLCBwcyk7XG4gIH07XG5cbmxldCB0cmltX2dyb3V0X2Fyb3VuZF9zZWNvbmRhcnk6IChEaXJlY3Rpb24udCwgdCkgPT4gdCA9XG4gIChkLCBwcykgPT4ge1xuICAgIC8qIFRyaW1zIGxlYWRpbmcvdHJhaWxpbmcgZ3JvdXQsIHNraXBwaW5nIG92ZXIgc2Vjb25kYXJ5LFxuICAgICAgIGJ1dCBub3Qgc2tpcHBpbmcgb3ZlciBvdGhlciBwaWVjZXMuICovXG4gICAgbGV0IHJlYyB0cmltX2w6IGxpc3QoQmFzZS5waWVjZSkgPT4gbGlzdChCYXNlLnBpZWNlKSA9XG4gICAgICB4cyA9PlxuICAgICAgICBzd2l0Y2ggKHhzKSB7XG4gICAgICAgIHwgW10gPT4gW11cbiAgICAgICAgfCBbU2Vjb25kYXJ5KHcpLCAuLi54c10gPT4gW1NlY29uZGFyeSh3KSwgLi4udHJpbV9sKHhzKV1cbiAgICAgICAgfCBbR3JvdXQoXyksIC4uLnhzXSA9PiB0cmltX2woeHMpXG4gICAgICAgIHwgW18sIC4uLl9dID0+IHhzXG4gICAgICAgIH07XG4gICAgdHJpbV9mKHRyaW1fbCwgZCwgcHMpO1xuICB9O1xuXG5sZXQgZWRnZV9zaGFwZV9vZiA9IChkOiBEaXJlY3Rpb24udCwgcHM6IHQpOiBvcHRpb24oTmliLlNoYXBlLnQpID0+IHtcbiAgbGV0IHRyaW1tZWQgPSB0cmltX3NlY29uZGFyeShkLCBwcyk7XG4gIHN3aXRjaCAoZCwgTGlzdFV0aWwuaGRfb3B0KHRyaW1tZWQpLCBMaXN0VXRpbC5sYXN0X29wdCh0cmltbWVkKSkge1xuICB8IChSaWdodCwgXywgU29tZShwKSkgPT4gcCB8PiBQaWVjZS5zaGFwZXMgfD4gT3B0aW9uLm1hcChzbmQpXG4gIHwgKExlZnQsIFNvbWUocCksIF8pID0+IHAgfD4gUGllY2Uuc2hhcGVzIHw+IE9wdGlvbi5tYXAoZnN0KVxuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IGVkZ2VfZGlyZWN0aW9uX29mID0gKGQ6IERpcmVjdGlvbi50LCBwczogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgT3B0aW9uLm1hcChOaWIuU2hhcGUuYWJzb2x1dGUoZCksIGVkZ2Vfc2hhcGVfb2YoZCwgcHMpKTtcblxubGV0IHJlYyBzZXJpYWxpemUgPSAoc2VnOiB0KSA9PlxuICBzZWdcbiAgfD4gTGlzdC5jb25jYXRfbWFwKFxuICAgICAgIGZ1blxuICAgICAgIHwgKFBpZWNlLlNlY29uZGFyeShfKSB8IEdyb3V0KF8pIHwgVGlsZSh7c2hhcmRzOiBbX10sIF99KSkgYXMgcCA9PiBbXG4gICAgICAgICAgIHAsXG4gICAgICAgICBdXG4gICAgICAgfCBUaWxlKHQpID0+IHtcbiAgICAgICAgICAgbGV0IHNoYXJkcyA9XG4gICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICBUaWxlLnRvX3BpZWNlLFxuICAgICAgICAgICAgICAgVGlsZS5zcGxpdF9zaGFyZHModC5pZCwgdC5sYWJlbCwgdC5tb2xkLCB0LnNoYXJkcyksXG4gICAgICAgICAgICAgKTtcbiAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gTGlzdC5tYXAoc2VyaWFsaXplLCB0LmNoaWxkcmVuKTtcbiAgICAgICAgICAgQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pXG4gICAgICAgICAgIHw+IEFiYS5qb2luKHMgPT4gW3NdLCBGdW4uaWQpXG4gICAgICAgICAgIHw+IExpc3QuY29uY2F0O1xuICAgICAgICAgfSxcbiAgICAgKTtcblxubGV0IHNhbWVsaW5lX3NlY29uZGFyeSA9XG4gIExpc3QuZm9yX2FsbChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlNlY29uZGFyeSh3KSA9PiAhU2Vjb25kYXJ5LmlzX2xpbmVicmVhayh3KVxuICAgIHwgXyA9PiBmYWxzZSxcbiAgKTtcblxubGV0IGV4cGVjdGVkX3NvcnRzID0gKHNvcnQ6IFNvcnQudCwgc2VnOiB0KTogbGlzdCgoaW50LCBTb3J0LnQpKSA9PiB7XG4gIGxldCBwID0gTGlzdC5udGgoc2VnKTtcbiAgbGV0IHJlYyBnbyA9IChzb3J0OiBTb3J0LnQsIHNrZWw6IFNrZWwudCk6IGxpc3QoKGxpc3QoaW50KSwgU29ydC50KSkgPT4ge1xuICAgIGxldCByb290ID0gU2tlbC5yb290KHNrZWwpO1xuICAgIGxldCBpbnNpZGVfc29ydHMgPVxuICAgICAgQWJhLmFiYV90cmlwbGVzKHJvb3QpXG4gICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChuX2wsIGtpZCwgbl9yKSkgPT4ge1xuICAgICAgICAgICBsZXQgKF8sIHNfbCkgPSBQaWVjZS5uaWJfc29ydHMocChuX2wpKTtcbiAgICAgICAgICAgbGV0IChzX3IsIF8pID0gUGllY2UubmliX3NvcnRzKHAobl9yKSk7XG4gICAgICAgICAgIGxldCBzID0gc19sID09IHNfciA/IHNfbCA6IFNvcnQuQW55O1xuICAgICAgICAgICBnbyhzLCBraWQpO1xuICAgICAgICAgfSk7XG4gICAgbGV0IG91dHNpZGVfc29ydHMgPSB7XG4gICAgICBsZXQgbnMgPSBBYmEuZ2V0X2FzKHJvb3QpO1xuICAgICAgbGV0IChsX3NvcnQsIF8pID0gUGllY2UubmliX3NvcnRzKHAoQWJhLmZpcnN0X2Eocm9vdCkpKTtcbiAgICAgIGxldCAoXywgcl9zb3J0KSA9IFBpZWNlLm5pYl9zb3J0cyhwKEFiYS5sYXN0X2Eocm9vdCkpKTtcbiAgICAgIHN3aXRjaCAoc2tlbCkge1xuICAgICAgfCBPcChfKSA9PiBbKG5zLCBzb3J0KV1cbiAgICAgIHwgUHJlKF8sIHIpID0+IFsobnMsIHNvcnQpXSBAIGdvKHJfc29ydCwgcilcbiAgICAgIHwgUG9zdChsLCBfKSA9PiBnbyhsX3NvcnQsIGwpIEAgWyhucywgc29ydCldXG4gICAgICB8IEJpbihsLCBfLCByKSA9PiBnbyhsX3NvcnQsIGwpIEAgWyhucywgc29ydCldIEAgZ28ocl9zb3J0LCByKVxuICAgICAgfTtcbiAgICB9O1xuICAgIG91dHNpZGVfc29ydHMgQCBpbnNpZGVfc29ydHM7XG4gIH07XG4gIGdvKHNvcnQsIHNrZWwoc2VnKSlcbiAgfD4gTGlzdC5jb25jYXRfbWFwKCgobnMsIHMpKSA9PiBMaXN0Lm1hcChuID0+IChuLCBzKSwgbnMpKTtcbn07XG5cbmxldCByZWMgaG9sZXMgPSAoc2VnbWVudDogdCk6IGxpc3QoR3JvdXQudCkgPT5cbiAgTGlzdC5jb25jYXRfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuU2Vjb25kYXJ5KF8pID0+IFtdXG4gICAgfCBUaWxlKHQpID0+IExpc3QuY29uY2F0X21hcChob2xlcywgdC5jaGlsZHJlbilcbiAgICB8IEdyb3V0KGcpID0+IFtnXSxcbiAgICBzZWdtZW50LFxuICApO1xuXG5sZXQgZ2V0X2NoaWxkcmVuczogdCA9PiBsaXN0KHQpID1cbiAgTGlzdC5jb25jYXRfbWFwKFxuICAgIGZ1blxuICAgIHwgUGllY2UuVGlsZSh0KSA9PiB0LmNoaWxkcmVuXG4gICAgfCBfID0+IFtdLFxuICApO1xuXG5sZXQgcmVjIGdldF9pbmNvbXBsZXRlX2lkcyA9IChzZWc6IHQpOiBsaXN0KElkLnQpID0+XG4gIExpc3QuY29uY2F0X21hcChcbiAgICBmdW5cbiAgICB8IFBpZWNlLlRpbGUodCkgPT4ge1xuICAgICAgICBsZXQgaWRzID0gTGlzdC5jb25jYXRfbWFwKGdldF9pbmNvbXBsZXRlX2lkcywgdC5jaGlsZHJlbik7XG4gICAgICAgIFRpbGUuaXNfY29tcGxldGUodCkgPyBpZHMgOiBbdC5pZCwgLi4uaWRzXTtcbiAgICAgIH1cbiAgICB8IF8gPT4gW10sXG4gICAgc2VnLFxuICApO1xuXG5sZXQgaWRzX29mX2luY29tcGxldGVfdGlsZXNfaW5fYmlkZWxpbWl0ZWRzID0gKHNlZzogdCk6IGxpc3QoSWQudCkgPT5cbiAgZ2V0X2NoaWxkcmVucyhzZWcpIHw+IExpc3QuY29uY2F0IHw+IGdldF9pbmNvbXBsZXRlX2lkcztcblxubGV0IGZpcnN0X3N0cmluZyA9XG4gIGZ1blxuICB8IFtdID0+IFwiRklSU1RcIlxuICB8IFtQaWVjZS5TZWNvbmRhcnkodyksIC4uLl9dID0+IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudClcbiAgfCBbUGllY2UuR3JvdXQoXyksIC4uLl9dID0+IFwiP1wiXG4gIHwgW1BpZWNlLlRpbGUodCksIC4uLl9dID0+IHQubGFiZWwgfD4gTGlzdC5oZDtcblxubGV0IGxhc3Rfc3RyaW5nID1cbiAgZnVuXG4gIHwgW10gPT4gXCJMQVNUXCJcbiAgfCB4cyA9PlxuICAgIHN3aXRjaCAoTGlzdFV0aWwubGFzdCh4cykpIHtcbiAgICB8IFBpZWNlLlNlY29uZGFyeSh3KSA9PiBTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpXG4gICAgfCBQaWVjZS5Hcm91dChfKSA9PiBcIj9cIlxuICAgIHwgUGllY2UuVGlsZSh0KSA9PiB0LmxhYmVsIHw+IExpc3RVdGlsLmxhc3RcbiAgICB9O1xuIiwib3BlbiBVdGlsO1xuXG4vLyBtb2R1bGUgUHJlZml4ID0gQWZmaXguTWFrZShPcmllbnRhdGlvbi5MKTtcbi8vIG1vZHVsZSBTdWZmaXggPSBBZmZpeC5NYWtlKE9yaWVudGF0aW9uLlIpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSAoU2VnbWVudC50LCBTZWdtZW50LnQpO1xuXG5sZXQgZW1wdHkgPSBTZWdtZW50LihlbXB0eSwgZW1wdHkpO1xuXG5sZXQgbm9fc2libGluZ3M6IHQgPT4gYm9vbCA9IHMgPT4gcyA9PSBlbXB0eTtcblxubGV0IHVuemlwOiAoaW50LCBTZWdtZW50LnQpID0+IHQgPSBMaXN0VXRpbC5zcGxpdF9uO1xubGV0IHppcCA9ICh+c2VsPVNlZ21lbnQuZW1wdHksIChwcmUsIHN1Zik6IHQpID0+XG4gIFNlZ21lbnQuY29uY2F0KFtwcmUsIHNlbCwgc3VmXSk7XG5cbmxldCBwcmVwZW5kID0gKGQ6IERpcmVjdGlvbi50LCBzZWc6IFNlZ21lbnQudCwgKGwsIHIpOiB0KTogdCA9PlxuICBzd2l0Y2ggKGQpIHtcbiAgfCBMZWZ0ID0+IChsIEAgc2VnLCByKVxuICB8IFJpZ2h0ID0+IChsLCBzZWcgQCByKVxuICB9O1xuXG5sZXQgY29uY2F0ID0gKHNpYnNzOiBsaXN0KHQpKTogdCA9PlxuICBzaWJzc1xuICB8PiBMaXN0LnNwbGl0XG4gIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5yZXYpXG4gIHw+IFBhaXJVdGlsLm1hcF9mc3QoTGlzdC5jb25jYXQpXG4gIHw+IFBhaXJVdGlsLm1hcF9zbmQoTGlzdC5jb25jYXQpO1xuXG4vLyBsZXQgY29uc2lzdGVudF9zaGFyZHMgPSAoKHByZSwgc3VmKTogdCk6IGJvb2wgPT4ge1xuLy8gICBsZXQgc2hhcmRzX3ByZSA9IFByZWZpeC5zaGFyZHMocHJlKTtcbi8vICAgbGV0IHNoYXJkc19zdWYgPSBTdWZmaXguc2hhcmRzKHN1Zik7XG4vLyAgIExpc3RVdGlsLmdyb3VwX2J5KFNoYXJkLmlkLCBzaGFyZHNfcHJlIEAgc2hhcmRzX3N1Zilcbi8vICAgfD4gTGlzdC5mb3JfYWxsKCgoXywgc2hhcmRzKSkgPT4gU2hhcmQuY29uc2lzdGVudF9tb2xkcyhzaGFyZHMpICE9IFtdKTtcbi8vIH07XG5cbmxldCByZW1vbGQgPSAoKHByZSwgXykgYXMgc2liczogdCwgczogU29ydC50KTogdCA9PlxuICBTZWdtZW50LnJlbW9sZCh6aXAoc2licyksIHMpIHw+IHVuemlwKExpc3QubGVuZ3RoKHByZSkpO1xuXG5sZXQgc2hhcGVzID0gKChwcmUsIHN1Zik6IHQpID0+IHtcbiAgbGV0IHMgPSBOaWIuU2hhcGUuY29uY2F2ZSgpO1xuICBsZXQgKF8sIGwsIF8pID0gU2VnbWVudC5zaGFwZV9hZmZpeChMZWZ0LCBwcmUsIHMpO1xuICBsZXQgKF8sIHIsIF8pID0gU2VnbWVudC5zaGFwZV9hZmZpeChSaWdodCwgc3VmLCBzKTtcbiAgKGwsIHIpO1xufTtcblxubGV0IGlzX21pc21hdGNoID0gKChsLCByKTogdCk6IGJvb2wgPT4ge1xuICAvKiBwcmVkaWN0cyBpZiBncm91dCBpcyBuZWNjZXNzYXJ5IGJldHdlZW4gc2libGluZ3MgKi9cbiAgc3dpdGNoIChTZWdtZW50LmVkZ2Vfc2hhcGVfb2YoTGVmdCwgciksIFNlZ21lbnQuZWRnZV9zaGFwZV9vZihSaWdodCwgbCkpIHtcbiAgfCAoTm9uZSwgXylcbiAgfCAoXywgTm9uZSkgPT4gZmFsc2VcbiAgfCAoczEsIHMyKSA9PiBzMSA9PSBzMlxuICB9O1xufTtcblxubGV0IGNvbnRhaW5zX21hdGNoaW5nID0gKHQ6IFRpbGUudCwgKHByZSwgc3VmKTogdCkgPT5cbiAgU2VnbWVudC4oY29udGFpbnNfbWF0Y2hpbmcodCwgcHJlKSB8fCBjb250YWluc19tYXRjaGluZyh0LCBzdWYpKTtcblxubGV0IHB1c2ggPSAob250bzogRGlyZWN0aW9uLnQsIHA6IFBpZWNlLnQsIChwcmUsIHN1Zik6IHQpOiB0ID0+XG4gIHN3aXRjaCAob250bykge1xuICB8IExlZnQgPT4gKHByZSBAIFtwXSwgc3VmKVxuICB8IFJpZ2h0ID0+IChwcmUsIFtwLCAuLi5zdWZdKVxuICB9O1xuXG5sZXQgcG9wID0gKGZyb206IERpcmVjdGlvbi50LCAocHJlLCBzdWYpOiB0KTogb3B0aW9uKChQaWVjZS50LCB0KSkgPT5cbiAgc3dpdGNoIChmcm9tKSB7XG4gIHwgTGVmdCA9PlxuICAgIExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHByZSlcbiAgICB8PiBPcHRpb24ubWFwKCgocHJlLCBwKSkgPT4ge1xuICAgICAgICAgbGV0IChwcmUnLCBwKSA9IFBpZWNlLnBvcF9yKHApO1xuICAgICAgICAgKHAsIChwcmUgQCBwcmUnLCBzdWYpKTtcbiAgICAgICB9KVxuICB8IFJpZ2h0ID0+XG4gICAgTGlzdFV0aWwuc3BsaXRfZmlyc3Rfb3B0KHN1ZilcbiAgICB8PiBPcHRpb24ubWFwKCgocCwgc3VmKSkgPT4ge1xuICAgICAgICAgbGV0IChwLCBzdWYnKSA9IFBpZWNlLnBvcF9sKHApO1xuICAgICAgICAgKHAsIChwcmUsIHN1ZicgQCBzdWYpKTtcbiAgICAgICB9KVxuICB9O1xuXG5sZXQgaW5jb21wbGV0ZV90aWxlcyA9IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyk7XG5cbmxldCBzcGxpdF9ieV9tYXRjaGluZyA9IGlkID0+IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuc3BsaXRfYnlfbWF0Y2hpbmcoaWQpKTtcblxubGV0IHJlYXNzZW1ibGUgPSBUdXBsZVV0aWwubWFwMihTZWdtZW50LnJlYXNzZW1ibGUpO1xuXG5sZXQgcmVncm91dCA9ICgocHJlLCBzdWYpOiB0KSA9PiB7XG4gIGxldCBzID0gTmliLlNoYXBlLmNvbmNhdmUoKTtcbiAgbGV0IHN1ZiA9IFNlZ21lbnQucmVncm91dF9hZmZpeChSaWdodCwgc3VmLCBzKTtcbiAgbGV0ICh0cmltX2wsIHNfbCwgcHJlKSA9IFNlZ21lbnQucmVncm91dF9hZmZpeChMZWZ0LCBwcmUsIHMpO1xuICAoKHByZSwgc19sLCB0cmltX2wpLCBzdWYpO1xufTtcblxubGV0IGxlZnRfbmVpZ2hib3I6IHQgPT4gb3B0aW9uKFBpZWNlLnQpID0gKChsLCBfKSkgPT4gTGlzdFV0aWwubGFzdF9vcHQobCk7XG5cbmxldCByaWdodF9uZWlnaGJvcjogdCA9PiBvcHRpb24oUGllY2UudCkgPSAoKF8sIHIpKSA9PiBMaXN0VXRpbC5oZF9vcHQocik7XG5cbmxldCBuZWlnaGJvcnM6IHQgPT4gKG9wdGlvbihQaWVjZS50KSwgb3B0aW9uKFBpZWNlLnQpKSA9XG4gIG4gPT4gKGxlZnRfbmVpZ2hib3IobiksIHJpZ2h0X25laWdoYm9yKG4pKTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5ID0gKChsX3NpYnMsIHJfc2licyk6IHQpID0+IChcbiAgU2VnbWVudC50cmltX3NlY29uZGFyeShSaWdodCwgbF9zaWJzKSxcbiAgU2VnbWVudC50cmltX3NlY29uZGFyeShMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IHRyaW1fZ3JvdXQgPSAoKGxfc2licywgcl9zaWJzKTogdCkgPT4gKFxuICBTZWdtZW50LnRyaW1fZ3JvdXQoUmlnaHQsIGxfc2licyksXG4gIFNlZ21lbnQudHJpbV9ncm91dChMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IHRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dCA9ICgobF9zaWJzLCByX3NpYnMpOiB0KSA9PiAoXG4gIFNlZ21lbnQudHJpbV9zZWNvbmRhcnlfYW5kX2dyb3V0KFJpZ2h0LCBsX3NpYnMpLFxuICBTZWdtZW50LnRyaW1fc2Vjb25kYXJ5X2FuZF9ncm91dChMZWZ0LCByX3NpYnMpLFxuKTtcblxubGV0IGRpcmVjdGlvbl9iZXR3ZWVuID0gKChsLCByKTogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgLyogRmFjaW5nIGRpcmVjdGlvbiBvZiB0aGUgc2hhcmVkIG5pYiBiZXR3ZWVuIGwgJiByICovXG4gIHN3aXRjaCAoU2VnbWVudC5lZGdlX2RpcmVjdGlvbl9vZihMZWZ0LCByKSkge1xuICB8IE5vbmUgPT4gU2VnbWVudC5lZGdlX2RpcmVjdGlvbl9vZihSaWdodCwgbClcbiAgfCBkID0+IGRcbiAgfTtcblxubGV0IG1vbGRfZml0dGluZ19iZXR3ZWVuID0gKHNvcnQ6IFNvcnQudCwgcDogUHJlY2VkZW5jZS50LCBzaWJzOiB0KTogTW9sZC50ID0+XG4gIHN3aXRjaCAoZGlyZWN0aW9uX2JldHdlZW4oc2licykpIHtcbiAgfCBTb21lKGQpID0+IE1vbGQuY2hldnJvbihzb3J0LCBwLCBkKVxuICB8IE5vbmUgPT4gTW9sZC5ta19vcChzb3J0LCBbXSlcbiAgfTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IFR1cGxlVXRpbC5tYXAyKFNlZ21lbnQuc29ydGVkX2NoaWxkcmVuKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBFbXB0eV9zaGFyZF9hZmZpeDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGVwID0gaW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGlkOiBJZC50LFxuICBsYWJlbDogTGFiZWwudCxcbiAgbW9sZDogTW9sZC50LFxuICBzaGFyZHM6IChsaXN0KGludCksIGxpc3QoaW50KSksXG4gIGNoaWxkcmVuOiAobGlzdChTZWdtZW50LnQpLCBsaXN0KFNlZ21lbnQudCkpLFxufTtcblxuLy8gVE9ETyhkKSByZXZpc2l0IG5hbWluZyB3LnIudC4gb3V0ZXIgdnMgaW5uZXIgc2hhcmRzXG5sZXQgbF9zaGFyZCA9IGEgPT5cbiAgTGlzdFV0aWwuaGRfb3B0KGZzdChhLnNoYXJkcykpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3NoYXJkX2FmZml4KTtcbmxldCByX3NoYXJkID0gYSA9PlxuICBMaXN0VXRpbC5sYXN0X29wdChzbmQoYS5zaGFyZHMpKVxuICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShFbXB0eV9zaGFyZF9hZmZpeCk7XG5cbmxldCBuaWJzID0gKGE6IHQpID0+IHtcbiAgbGV0IChsLCBfKSA9IE1vbGQubmlicyh+aW5kZXg9bF9zaGFyZChhKSwgYS5tb2xkKTtcbiAgbGV0IChfLCByKSA9IE1vbGQubmlicyh+aW5kZXg9cl9zaGFyZChhKSwgYS5tb2xkKTtcbiAgKGwsIHIpO1xufTtcbmxldCBzaGFwZXMgPSBhID0+IHtcbiAgbGV0IChsLCByKSA9IG5pYnMoYSk7XG4gIChsLnNoYXBlLCByLnNoYXBlKTtcbn07XG5cbmxldCB6aXAgPSAoY2hpbGQ6IFNlZ21lbnQudCwge2lkLCBsYWJlbCwgbW9sZCwgc2hhcmRzLCBjaGlsZHJlbn06IHQpOiBUaWxlLnQgPT4ge1xuICBpZCxcbiAgbGFiZWwsXG4gIG1vbGQsXG4gIHNoYXJkczogZnN0KHNoYXJkcykgQCBzbmQoc2hhcmRzKSxcbiAgY2hpbGRyZW46IGZzdChjaGlsZHJlbikgQCBbY2hpbGQsIC4uLnNuZChjaGlsZHJlbildLFxufTtcblxubGV0IHNvcnRlZF9jaGlsZHJlbiA9IChhOiB0KSA9PiB7XG4gIGxldCBuID0gTGlzdC5sZW5ndGgoZnN0KGEuY2hpbGRyZW4pKTtcbiAgbGV0IHQgPSB6aXAoU2VnbWVudC5lbXB0eSwgYSk7XG4gIGxldCAobCwgXywgcikgPSBMaXN0VXRpbC5zcGxpdF9udGgobiwgVGlsZS5zb3J0ZWRfY2hpbGRyZW4odCkpO1xuICAobCwgcik7XG59O1xuXG4vLyBUT0RPIGZsYXR0ZW4gd2l0aCBzaGFyZCBpbmRpY2VzXG4vLyBsZXQgc3RlcCA9IChmcmFtZTogdCk6IHN0ZXAgPT4ge1xuLy8gICBsZXQgKHByZWZpeCwgXykgPSBmcmFtZS5jaGlsZHJlbjtcbi8vICAgTGlzdC5sZW5ndGgocHJlZml4KTtcbi8vIH07XG5cbmxldCByZW1vbGQgPSAoYTogdCk6IGxpc3QodCkgPT5cbiAgTW9sZHMuZ2V0KGEubGFiZWwpIHw+IExpc3QubWFwKG1vbGQgPT4gey4uLmEsIG1vbGR9KTtcblxuLy8gbGV0IHNvcnQgPSAoZnJhbWU6IHQpOiBTb3J0LnQgPT4ge1xuLy8gICBhc3NlcnQoc3RlcChmcmFtZSkgPj0gMCAmJiBzdGVwKGZyYW1lKSA8IExpc3QubGVuZ3RoKGZyYW1lLm1vbGQuaW5fKSk7XG4vLyAgIExpc3QubnRoKGZyYW1lLm1vbGQuaW5fLCBzdGVwKGZyYW1lKSk7XG4vLyB9O1xubGV0IHNvcnQgPSAoYTogdCk6IFNvcnQudCA9PiB7XG4gIGxldCAocHJlLCBzdWYpID0gYS5zaGFyZHM7XG4gIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQocHJlKSwgc3VmKSB7XG4gIHwgKFNvbWUoKF8sIGkpKSwgW2osIC4uLl9dKSA9PlxuICAgIGxldCAoXywgbCkgPSBNb2xkLm5pYnMofmluZGV4PWksIGEubW9sZCk7XG4gICAgbGV0IChyLCBfKSA9IE1vbGQubmlicyh+aW5kZXg9aiwgYS5tb2xkKTtcbiAgICBsLnNvcnQgPT0gci5zb3J0ID8gbC5zb3J0IDogQW55O1xuICB8IF8gPT4gcmFpc2UoRW1wdHlfc2hhcmRfYWZmaXgpXG4gIH07XG59O1xuXG5sZXQgZGlzYXNzZW1ibGUgPVxuICAgICh7aWQsIGxhYmVsLCBtb2xkLCBzaGFyZHMsIGNoaWxkcmVuOiAoa2lkc19sLCBraWRzX3IpfTogdCk6IFNpYmxpbmdzLnQgPT4ge1xuICBsZXQgKHNoYXJkc19sLCBzaGFyZHNfcikgPVxuICAgIHNoYXJkc1xuICAgIHw+IFR1cGxlVXRpbC5tYXAyKFRpbGUuc3BsaXRfc2hhcmRzKGlkLCBsYWJlbCwgbW9sZCkpXG4gICAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdC5tYXAoVGlsZS50b19waWVjZSkpO1xuICBsZXQgZmxhdHRlbiA9IChzaGFyZHMsIGtpZHMpID0+XG4gICAgQWJhLm1rKHNoYXJkcywga2lkcykgfD4gQWJhLmpvaW4ocCA9PiBbcF0sIEZ1bi5pZCkgfD4gTGlzdC5mbGF0dGVuO1xuICAoZmxhdHRlbihzaGFyZHNfbCwga2lkc19sKSwgZmxhdHRlbihzaGFyZHNfciwga2lkc19yKSk7XG59O1xuXG5sZXQgY29udGFpbmVyX3NoYXJkcyA9IChhOiB0KTogKFBpZWNlLnQsIFBpZWNlLnQpID0+IHtcbiAgbGV0IChzaGFyZHNfbCwgc2hhcmRzX3IpID1cbiAgICBhLnNoYXJkc1xuICAgIHw+IFR1cGxlVXRpbC5tYXAyKFRpbGUuc3BsaXRfc2hhcmRzKGEuaWQsIGEubGFiZWwsIGEubW9sZCkpXG4gICAgfD4gVHVwbGVVdGlsLm1hcDIoTGlzdC5tYXAoVGlsZS50b19waWVjZSkpO1xuICBsZXQgbCA9XG4gICAgTGlzdFV0aWwubGFzdF9vcHQoc2hhcmRzX2wpIHw+IE9wdFV0aWwuZ2V0X29yX3JhaXNlKEVtcHR5X3NoYXJkX2FmZml4KTtcbiAgbGV0IHIgPVxuICAgIExpc3RVdGlsLmhkX29wdChzaGFyZHNfcikgfD4gT3B0VXRpbC5nZXRfb3JfcmFpc2UoRW1wdHlfc2hhcmRfYWZmaXgpO1xuICAobCwgcik7XG59O1xuXG5sZXQgcmVhc3NlbWJsZSA9IChtYXRjaF9sOiBBYmEudChUaWxlLnQsIFNlZ21lbnQudCkgYXMgJ20sIG1hdGNoX3I6ICdtKTogdCA9PiB7XG4gIC8vIFRPRE8oZCkgYml0IGhhY2t5LCBuZWVkIHRvIGRvIGEgZmxpcC9vcmllbnRhdGlvbiBwYXNzXG4gIC8vIGxldCBtYXRjaF9sID0gQWJhLm1hcF9iKFNlZ21lbnQucmV2LCBtYXRjaF9sKTtcbiAgbGV0ICh0X2wsIHRfcikgPSBUaWxlLihyZWFzc2VtYmxlKG1hdGNoX2wpLCByZWFzc2VtYmxlKG1hdGNoX3IpKTtcbiAgYXNzZXJ0KHRfbC5pZCA9PSB0X3IuaWQpO1xuICB7XG4gICAgaWQ6IHRfbC5pZCxcbiAgICBsYWJlbDogdF9sLmxhYmVsLFxuICAgIG1vbGQ6IHRfbC5tb2xkLFxuICAgIHNoYXJkczogKHRfbC5zaGFyZHMsIHRfci5zaGFyZHMpLFxuICAgIGNoaWxkcmVuOiAodF9sLmNoaWxkcmVuLCB0X3IuY2hpbGRyZW4pLFxuICB9O1xufTtcblxuLy8gbW9kdWxlIE1hdGNoID0ge1xuLy8gICBtb2R1bGUgUHJlZml4ID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLkwpO1xuLy8gICBtb2R1bGUgU3VmZml4ID0gVGlsZS5NYXRjaC5NYWtlKE9yaWVudGF0aW9uLlIpO1xuXG4vLyAgIHR5cGUgYW5jZXN0b3IgPSB0O1xuLy8gICB0eXBlIHQgPSAoUHJlZml4LnQsIFN1ZmZpeC50KTtcblxuLy8gICBsZXQgaWQgPSAoKHByZSwgXyk6IHQpID0+IFByZWZpeC5pZChwcmUpO1xuXG4vLyAgIGxldCBzaGFyZHMgPSAoKHByZSwgc3VmKTogdCkgPT5cbi8vICAgICBMaXN0LnJldihQcmVmaXguc2hhcmRzKHByZSkpIEAgU3VmZml4LnNoYXJkcyhzdWYpO1xuXG4vLyAgIGxldCBsYWJlbCA9ICgoXywgc3VmKSkgPT4gU3VmZml4LmxhYmVsKHN1Zik7XG5cbi8vICAgbGV0IGxlbmd0aCA9ICgocHJlLCBzdWYpKSA9PiBQcmVmaXgubGVuZ3RoKHByZSkgKyBTdWZmaXgubGVuZ3RoKHN1Zik7XG5cbi8vICAgbGV0IGNoaWxkcmVuID0gKChwcmUsIHN1ZikpID0+IChcbi8vICAgICBQcmVmaXguY2hpbGRyZW4ocHJlKSxcbi8vICAgICBTdWZmaXguY2hpbGRyZW4oc3VmKSxcbi8vICAgKTtcblxuLy8gICBsZXQgbW9sZCA9IChtOiB0KSA9PiB7XG4vLyAgICAgbGV0IG1vbGRzID1cbi8vICAgICAgIHN3aXRjaCAoU2hhcmQuY29uc2lzdGVudF9tb2xkcyhzaGFyZHMobSkpKSB7XG4vLyAgICAgICB8IFtdID0+XG4vLyAgICAgICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgaGFwcGVuIHVwb24gY29uc3RydWN0L2Rlc3RydWN0LFxuLy8gICAgICAgICAvLyBpbiB3aGljaCBjYXNlIGV2ZXJ5dGhpbmcgd2lsbCBiZSBzdWJzZXF1ZW50bHkgcmVtb2xkZWRcbi8vICAgICAgICAgTW9sZHMuZ2V0KGxhYmVsKG0pKVxuLy8gICAgICAgfCBbXywgLi4uX10gYXMgbW9sZHMgPT4gbW9sZHNcbi8vICAgICAgIH07XG4vLyAgICAgYXNzZXJ0KG1vbGRzICE9IFtdKTtcbi8vICAgICBMaXN0LmhkKG1vbGRzKTtcbi8vICAgfTtcblxuLy8gICBsZXQgam9pbiA9ICgocHJlLCBzdWYpOiB0KSA9PiAoUHJlZml4LmpvaW4ocHJlKSwgU3VmZml4LmpvaW4oc3VmKSk7XG5cbi8vICAgbGV0IGNvbXBsZXRlID0gKG06IHQpOiBvcHRpb24oYW5jZXN0b3IpID0+IHtcbi8vICAgICBsZXQgaWQgPSBpZChtKTtcbi8vICAgICBsZXQgbGFiZWwgPSBsYWJlbChtKTtcbi8vICAgICBsZXQgbW9sZCA9IG1vbGQobSk7XG4vLyAgICAgbGVuZ3RoKG0pID09IFRpbGUuTGFiZWwubGVuZ3RoKGxhYmVsKVxuLy8gICAgICAgPyBTb21lKHtpZCwgbGFiZWwsIG1vbGQsIGNoaWxkcmVuOiBjaGlsZHJlbihtKX0pIDogTm9uZTtcbi8vICAgfTtcbi8vIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdlbmVyYXRpb24gPSAoQW5jZXN0b3IudCwgU2libGluZ3MudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoZ2VuZXJhdGlvbik7XG5cbmxldCBlbXB0eSA9IFtdO1xuXG5sZXQgcGFyZW50OiB0ID0+IG9wdGlvbihBbmNlc3Rvci50KSA9XG4gIGZ1blxuICB8IFtdID0+IE5vbmVcbiAgfCBbKHBhcmVudCwgXyksIC4uLl9dID0+IFNvbWUocGFyZW50KTtcblxubGV0IHNvcnQgPVxuICBmdW5cbiAgfCBbXSA9PiBTb3J0LnJvb3RcbiAgfCBbKGEsIF8pLCAuLi5fXSA9PiBBbmNlc3Rvci5zb3J0KGEpO1xuXG5sZXQgemlwX2dlbiA9IChzZWc6IFNlZ21lbnQudCwgKGEsIChwcmUsIHN1ZikpOiBnZW5lcmF0aW9uKTogU2VnbWVudC50ID0+XG4gIHByZSBAIFtQaWVjZS5UaWxlKEFuY2VzdG9yLnppcChzZWcsIGEpKSwgLi4uc3VmXTtcbmxldCB6aXAgPSAoc2VnOiBTZWdtZW50LnQsIGFuY3M6IHQpID0+IGFuY3MgfD4gTGlzdC5mb2xkX2xlZnQoemlwX2dlbiwgc2VnKTtcblxubGV0IGRpc2Fzc2VtYmxlID0gYW5jcyA9PlxuICBhbmNzXG4gIHw+IExpc3QubWFwKCgoYSwgc2licykpID0+XG4gICAgICAgU2libGluZ3MuY29uY2F0KFtBbmNlc3Rvci5kaXNhc3NlbWJsZShhKSwgc2lic10pXG4gICAgIClcbiAgfD4gU2libGluZ3MuY29uY2F0O1xuXG4vLyBsZXQgcmVtb2xkID0gKGFuY2VzdG9yczogdCk6IGxpc3QodCkgPT5cbi8vICAgTGlzdC5mb2xkX3JpZ2h0KFxuLy8gICAgICgoYSwgc2licyksIHJlbW9sZGVkKSA9PiB7XG4vLyAgICAgICBvcGVuIExpc3RVdGlsLlN5bnRheDtcbi8vICAgICAgIGxldCsgYW5jZXN0b3JzID0gcmVtb2xkZWRcbi8vICAgICAgIGFuZCsgc2licyA9IFNpYmxpbmdzLnJlbW9sZChzaWJzKVxuLy8gICAgICAgYW5kKyBhID0gQW5jZXN0b3IucmVtb2xkKGEpO1xuLy8gICAgICAgWyhhLCBzaWJzKSwgLi4uYW5jZXN0b3JzXTtcbi8vICAgICB9LFxuLy8gICAgIGFuY2VzdG9ycyxcbi8vICAgICBbZW1wdHldLFxuLy8gICApO1xuXG5sZXQgc2tlbCA9ICgoYSwgKHByZSwgc3VmKSk6IGdlbmVyYXRpb24pOiBTa2VsLnQgPT4ge1xuICBsZXQgbiA9IExpc3QubGVuZ3RoKHByZSk7XG4gIGxldCBhID0gKG4sIFBpZWNlLlRpbGUoQW5jZXN0b3IuemlwKFNlZ21lbnQuZW1wdHksIGEpKSk7XG4gIGxldCBwcmUgPVxuICAgIHByZVxuICAgIHw+IExpc3QubWFwaSgoaSwgcCkgPT4gKGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpO1xuICBsZXQgc3VmID1cbiAgICBzdWZcbiAgICB8PiBMaXN0Lm1hcGkoKGksIHApID0+IChuICsgMSArIGksIHApKVxuICAgIHw+IExpc3QuZmlsdGVyKCgoXywgcCkpID0+ICFQaWVjZS5pc19zZWNvbmRhcnkocCkpO1xuICBTa2VsLm1rKHByZSBAIFthLCAuLi5zdWZdKTtcbn07XG5cbi8vIGxldCBzb3J0cyA9IChpLCAoYSwgKHByZSwgc3VmKSk6IGdlbmVyYXRpb24pID0+IHtcbi8vICAgbGV0IG4gPSBMaXN0Lmxlbmd0aChwcmUpO1xuLy8gICBpZiAoaSA8IExpc3QubGVuZ3RoKHByZSkpIHtcbi8vICAgICBMaXN0Lm50aF9vcHQocHJlLCBpKVxuLy8gICAgIHw+IE9wdGlvbi5tYXAoUGllY2Uuc29ydClcbi8vICAgICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiQW5jZXN0b3JzLnNvcnRfb3V0XCIpKVxuLy8gICB9IGVsc2UgaWYgKGkgPiBuKSB7XG4vLyAgICAgTGlzdC5udGhfb3B0KHN1ZiwgaSAtIDEgLSBuKVxuLy8gICAgIHw+IE9wdGlvbi5tYXAoUGllY2Uuc29ydClcbi8vICAgICB8PiBPcHRVdGlsLmdldF9vcl9yYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiQW5jZXN0b3JzLnNvcnRfb3V0XCIpKVxuLy8gICB9IGVsc2Uge1xuLy8gICAgIGEubW9sZC5vdXQ7XG4vLyAgIH07XG4vLyB9O1xuXG5sZXQgcmVncm91dCA9IChhbmNzOiB0KSA9PlxuICBMaXN0LmZvbGRfcmlnaHQoXG4gICAgKChhLCBzaWJzKTogZ2VuZXJhdGlvbiwgcmVncm91dGVkKSA9PiB7XG4gICAgICBsZXQgcmVncm91dGVkID0gcmVncm91dGVkO1xuICAgICAgbGV0ICgocHJlLCBsLCB0cmltX2wpLCAodHJpbV9yLCByLCBzdWYpKSA9IFNpYmxpbmdzLnJlZ3JvdXQoc2licyk7XG4gICAgICBsZXQgKGwnLCByJykgPSBUdXBsZVV0aWwubWFwMihOaWIuc2hhcGUsIE1vbGQubmlicyhhLm1vbGQpKTtcbiAgICAgIGxldCB0cmltX2wgPSBTZWdtZW50LlRyaW0ucmVncm91dChMZWZ0LCAobCwgbCcpLCB0cmltX2wpO1xuICAgICAgbGV0IHRyaW1fciA9IFNlZ21lbnQuVHJpbS5yZWdyb3V0KFJpZ2h0LCAocicsIHIpLCB0cmltX3IpO1xuICAgICAgbGV0IHByZSA9IHByZSBAIFNlZ21lbnQuVHJpbS50b19zZWcodHJpbV9sKTtcbiAgICAgIGxldCBzdWYgPSBTZWdtZW50LlRyaW0udG9fc2VnKHRyaW1fcikgQCBzdWY7XG4gICAgICBbKGEsIChwcmUsIHN1ZikpLCAuLi5yZWdyb3V0ZWRdO1xuICAgIH0sXG4gICAgYW5jcyxcbiAgICBlbXB0eSxcbiAgKTtcblxubGV0IHBhcmVudF9tYXRjaGVzID0gKHQ6IFRpbGUudCwgYW5jczogdCkgPT5cbiAgc3dpdGNoIChhbmNzKSB7XG4gIHwgW10gPT4gZmFsc2VcbiAgfCBbKGEsIF8pLCAuLi5fXSA9PiBhLmlkID09IHQuaWRcbiAgfTtcbiIsInR5cGUgdCA9IGludDtcbmxldCB0ID0gcmVmKDApO1xuXG5sZXQgdGljayA9ICgpOiB0ID0+IHtcbiAgbGV0IHRpbWUgPSB0XjtcbiAgdCA6PSB0aW1lICsgMTtcbiAgdGltZTtcbn07XG5cbmxldCBsdCA9ICg8KTtcblxubGV0IG1pbiA9IG1pbjtcbmxldCBtYXggPSBtYXg7XG5cbmxldCBtYXhfdGltZSA9IEludC5tYXhfaW50O1xuIiwiaW5jbHVkZSBJZC5NYXA7XG50eXBlIHQgPSBJZC5NYXAudChUaW1lLnQpO1xuXG5tb2R1bGUgdHlwZSBTID0ge1xuICBsZXQgdG91Y2hlZDogdDtcbn07XG5cbmxldCB1cGRhdGUgPSAodDogVGltZS50LCBlczogbGlzdChFZmZlY3QudCksIHRkOiB0KSA9PlxuICBlc1xuICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAodGQsIGU6IEVmZmVjdC50KSA9PlxuICAgICAgICAgc3dpdGNoIChlKSB7XG4gICAgICAgICB8IERlbGV0ZShpZCkgPT4gdGQgfD4gcmVtb3ZlKGlkKVxuICAgICAgICAgfCBUb3VjaChpZCkgPT5cbiAgICAgICAgICAgdGRcbiAgICAgICAgICAgfD4gdXBkYXRlKFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGZ1blxuICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBTb21lKHQpXG4gICAgICAgICAgICAgICAgfCBTb21lKHQnKSA9PiBTb21lKFRpbWUubWF4KHQsIHQnKSksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgIH0sXG4gICAgICAgdGQsXG4gICAgICk7XG4iLCJsZXQgbGFtID0gXCLOu1wiO1xubGV0IHVwX2Fycm93ID0gXCLihpFcIjtcbmxldCBkb3duX2Fycm93ID0gXCLihpNcIjtcbmxldCBsZWZ0X2Fycm93ID0gXCLihpBcIjtcbmxldCByaWdodF9hcnJvdyA9IFwi4oaSXCI7XG5sZXQgbmJzcCA9IFwiXFx4QzJcXHhBMFwiO1xubGV0IHp3c3AgPSBcIuKAi1wiO1xuXG5sZXQgdHlwZUFycm93U3ltID0gXCLihpJcIjsgLy8gVSsyMTkyIFwiUmlnaHR3YXJkcyBBcnJvd1wiXG5sZXQgY2FzdEFycm93U3ltID0gXCLih6hcIjtcbmxldCBjYXN0QmFja0Fycm93U3ltID0gXCLih6ZcIjtcblxubGV0IGVsbGlwc2lzID0gXCJcXHhFMlxceDgwXFx4QTZcIjtcblxuLy8gY29waWVkIGZyb20gaGF6ZWxcbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByb3cgPSBpbnQ7XG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNvbCA9IGludDtcblxubW9kdWxlIFBvaW50ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICByb3csXG4gICAgY29sLFxuICB9O1xuICBsZXQgemVybyA9IHtyb3c6IDAsIGNvbDogMH07XG5cbiAgbGV0IGVxdWFsczogKHQsIHQpID0+IGJvb2wgPSAocCwgcSkgPT4gcC5yb3cgPT0gcS5yb3cgJiYgcC5jb2wgPT0gcS5jb2w7XG5cbiAgdHlwZSBjb21wYXJpc29uID1cbiAgICB8IEV4YWN0XG4gICAgfCBVbmRlclxuICAgIHwgT3ZlcjtcblxuICBsZXQgY29tcCA9IChjdXJyZW50LCB0YXJnZXQpOiBjb21wYXJpc29uID0+XG4gICAgc3dpdGNoICgpIHtcbiAgICB8IF8gd2hlbiBjdXJyZW50ID09IHRhcmdldCA9PiBFeGFjdFxuICAgIHwgXyB3aGVuIGN1cnJlbnQgPCB0YXJnZXQgPT4gVW5kZXJcbiAgICB8IF8gPT4gT3ZlclxuICAgIH07XG4gIGxldCBjb21wYXJlID0gKHAxLCBwMikgPT5cbiAgICBzd2l0Y2ggKGNvbXAocDEsIHAyKSkge1xuICAgIHwgRXhhY3QgPT4gMFxuICAgIHwgVW5kZXIgPT4gKC0xKVxuICAgIHwgT3ZlciA9PiAxXG4gICAgfTtcblxuICBsZXQgZGNvbXAgPSAoZGlyZWN0aW9uOiBEaXJlY3Rpb24udCwgYSwgYikgPT5cbiAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgIHwgUmlnaHQgPT4gY29tcChhLCBiKVxuICAgIHwgTGVmdCA9PiBjb21wKGIsIGEpXG4gICAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgbWVhc3VyZW1lbnQgPSB7XG4gIG9yaWdpbjogUG9pbnQudCxcbiAgbGFzdDogUG9pbnQudCxcbn07XG5cbi8vIGluZGVudGF0aW9uIHJlbGF0aXZlIHRvIGNvbnRhaW5lclxudHlwZSByZWxfaW5kZW50ID0gaW50O1xuLy8gaW5kZW50YXRpb24gcmVsYXRpdmUgdG8gY29kZSBjb250YWluZXJcbnR5cGUgYWJzX2luZGVudCA9IGludDtcblxubW9kdWxlIFJvd3MgPSB7XG4gIGluY2x1ZGUgSW50TWFwO1xuICB0eXBlIHNoYXBlID0ge1xuICAgIGluZGVudDogY29sLFxuICAgIG1heF9jb2w6IGNvbCxcbiAgfTtcbiAgdHlwZSB0ID0gSW50TWFwLnQoc2hhcGUpO1xuXG4gIGxldCBtYXhfY29sID0gKHJzOiBsaXN0KHJvdyksIG1hcDogdCkgPT5cbiAgICBycyB8PiBMaXN0Lm1hcChyID0+IGZpbmQociwgbWFwKS5tYXhfY29sKSB8PiBMaXN0LmZvbGRfbGVmdChtYXgsIDApO1xuXG4gIGxldCBtaW5fY29sID0gKHJzOiBsaXN0KHJvdyksIG1hcDogdCkgPT5cbiAgICByc1xuICAgIHw+IExpc3QubWFwKHIgPT4gZmluZChyLCBtYXApLmluZGVudClcbiAgICB8PiBMaXN0LmZvbGRfbGVmdChtaW4sIEludC5tYXhfaW50KTtcbn07XG5cbm1vZHVsZSBTaGFyZHMgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzaGFyZCA9IChpbnQsIG1lYXN1cmVtZW50KTtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KHNoYXJkKTtcblxuICAvLyBlbGVtZW50cyBvZiByZXR1cm5lZCBsaXN0IGFyZSBub25lbXB0eVxuICBsZXQgcmVjIHNwbGl0X2J5X3JvdzogdCA9PiBsaXN0KHQpID1cbiAgICBmdW5cbiAgICB8IFtdID0+IFtdXG4gICAgfCBbaGQsIC4uLnRsXSA9PlxuICAgICAgc3dpdGNoIChzcGxpdF9ieV9yb3codGwpKSB7XG4gICAgICB8IFtdID0+IFtbaGRdXVxuICAgICAgfCBbcm93LCAuLi5yb3dzXSA9PlxuICAgICAgICBzbmQoTGlzdC5oZChyb3cpKS5vcmlnaW4ucm93ID09IHNuZChoZCkub3JpZ2luLnJvd1xuICAgICAgICAgID8gW1toZCwgLi4ucm93XSwgLi4ucm93c10gOiBbW2hkXSwgcm93LCAuLi5yb3dzXVxuICAgICAgfTtcbiAgLy8gbGV0IGxhc3QgPSAoc2hhcmRzOiB0KSA9PlxuICAvLyAgIHNoYXJkc1xuICAvLyAgIHw+IExpc3Quc29ydCgoKGksIF8pLCAoaiwgXykpID0+IEludC5jb21wYXJlKGksIGopKVxuICAvLyAgIHw+IExpc3RVdGlsLmxhc3Rfb3B0XG4gIC8vICAgfD4gT3B0aW9uLm1hcChzbmQpO1xufTtcblxudHlwZSB0ID0ge1xuICB0aWxlczogSWQuTWFwLnQoU2hhcmRzLnQpLFxuICBncm91dDogSWQuTWFwLnQobWVhc3VyZW1lbnQpLFxuICBzZWNvbmRhcnk6IElkLk1hcC50KG1lYXN1cmVtZW50KSxcbiAgcm93czogUm93cy50LFxuICBsaW5lYnJlYWtzOiBJZC5NYXAudChyZWxfaW5kZW50KSxcbn07XG5cbmxldCBlbXB0eSA9IHtcbiAgdGlsZXM6IElkLk1hcC5lbXB0eSxcbiAgZ3JvdXQ6IElkLk1hcC5lbXB0eSxcbiAgc2Vjb25kYXJ5OiBJZC5NYXAuZW1wdHksXG4gIHJvd3M6IFJvd3MuZW1wdHksXG4gIGxpbmVicmVha3M6IElkLk1hcC5lbXB0eSxcbn07XG5cbmxldCBhZGRfcyA9IChpZDogSWQudCwgaTogaW50LCBtLCBtYXApID0+IHtcbiAgLi4ubWFwLFxuICB0aWxlczpcbiAgICBtYXAudGlsZXNcbiAgICB8PiBJZC5NYXAudXBkYXRlKFxuICAgICAgICAgaWQsXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgTm9uZSA9PiBTb21lKFsoaSwgbSldKVxuICAgICAgICAgfCBTb21lKG1zKSA9PlxuICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgIFsoaSwgbSksIC4uLm1zXVxuICAgICAgICAgICAgIHw+IExpc3Quc29ydCgoKGksIF8pLCAoaiwgXykpID0+IEludC5jb21wYXJlKGksIGopKSxcbiAgICAgICAgICAgKSxcbiAgICAgICApLFxufTtcblxuLy8gYXNzdW1lcyB0aWxlIGlzIHNpbmdsZSBzaGFyZFxubGV0IGFkZF90ID0gKHQ6IFRpbGUudCwgbSwgbWFwKSA9PiB7XG4gIC4uLm1hcCxcbiAgdGlsZXM6XG4gICAgbWFwLnRpbGVzXG4gICAgfD4gSWQuTWFwLnVwZGF0ZShcbiAgICAgICAgIHQuaWQsXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgTm9uZSA9PiBTb21lKFsoVGlsZS5sX3NoYXJkKHQpLCBtKV0pXG4gICAgICAgICB8IFNvbWUobXMpID0+IFNvbWUoWyhUaWxlLmxfc2hhcmQodCksIG0pLCAuLi5tc10pLFxuICAgICAgICksXG59O1xubGV0IGFkZF9nID0gKGc6IEdyb3V0LnQsIG0sIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIGdyb3V0OiBtYXAuZ3JvdXQgfD4gSWQuTWFwLmFkZChnLmlkLCBtKSxcbn07XG5sZXQgYWRkX3cgPSAodzogU2Vjb25kYXJ5LnQsIG0sIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIHNlY29uZGFyeTogbWFwLnNlY29uZGFyeSB8PiBJZC5NYXAuYWRkKHcuaWQsIG0pLFxufTtcbmxldCBhZGRfcCA9IChwOiBQaWVjZS50LCBtLCBtYXApID0+XG4gIHBcbiAgfD4gUGllY2UuZ2V0KFxuICAgICAgIHcgPT4gYWRkX3codywgbSwgbWFwKSxcbiAgICAgICBnID0+IGFkZF9nKGcsIG0sIG1hcCksXG4gICAgICAgdCA9PiBhZGRfdCh0LCBtLCBtYXApLFxuICAgICApO1xuXG5sZXQgYWRkX3JvdyA9IChyb3c6IGludCwgc2hhcGU6IFJvd3Muc2hhcGUsIG1hcCkgPT4ge1xuICAuLi5tYXAsXG4gIHJvd3M6IFJvd3MuYWRkKHJvdywgc2hhcGUsIG1hcC5yb3dzKSxcbn07XG5cbmxldCBhZGRfbGIgPSAoaWQsIGluZGVudCwgbWFwKSA9PiB7XG4gIC4uLm1hcCxcbiAgbGluZWJyZWFrczogSWQuTWFwLmFkZChpZCwgaW5kZW50LCBtYXAubGluZWJyZWFrcyksXG59O1xuXG5sZXQgc2luZ2xldG9uX3cgPSAodywgbSkgPT4gZW1wdHkgfD4gYWRkX3codywgbSk7XG5sZXQgc2luZ2xldG9uX2cgPSAoZywgbSkgPT4gZW1wdHkgfD4gYWRkX2coZywgbSk7XG5sZXQgc2luZ2xldG9uX3MgPSAoaWQsIHNoYXJkLCBtKSA9PiBlbXB0eSB8PiBhZGRfcyhpZCwgc2hhcmQsIG0pO1xuXG4vLyBUT0RPKGQpIHJlbmFtZVxubGV0IGZpbmRfb3B0X3NoYXJkcyA9ICh0OiBUaWxlLnQsIG1hcCkgPT4gSWQuTWFwLmZpbmRfb3B0KHQuaWQsIG1hcC50aWxlcyk7XG5sZXQgZmluZF9zaGFyZHMgPSAodDogVGlsZS50LCBtYXApID0+IElkLk1hcC5maW5kKHQuaWQsIG1hcC50aWxlcyk7XG5cbmxldCBmaW5kX29wdF9sYiA9IChpZCwgbWFwKSA9PiBJZC5NYXAuZmluZF9vcHQoaWQsIG1hcC5saW5lYnJlYWtzKTtcblxubGV0IGZpbmRfc2hhcmRzJyA9IChpZDogSWQudCwgbWFwKSA9PlxuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLnRpbGVzKSkge1xuICB8IE5vbmUgPT4gW11cbiAgfCBTb21lKHNzKSA9PiBzc1xuICB9O1xuXG5sZXQgZmluZF93ID0gKHc6IFNlY29uZGFyeS50LCBtYXApOiBtZWFzdXJlbWVudCA9PlxuICBJZC5NYXAuZmluZCh3LmlkLCBtYXAuc2Vjb25kYXJ5KTtcbmxldCBmaW5kX2cgPSAoZzogR3JvdXQudCwgbWFwKTogbWVhc3VyZW1lbnQgPT4gSWQuTWFwLmZpbmQoZy5pZCwgbWFwLmdyb3V0KTtcbi8vIHJldHVybnMgdGhlIG1lYXN1cmVtZW50IHNwYW5uaW5nIHRoZSB3aG9sZSB0aWxlXG5sZXQgZmluZF90ID0gKHQ6IFRpbGUudCwgbWFwKTogbWVhc3VyZW1lbnQgPT4ge1xuICBsZXQgc2hhcmRzID0gSWQuTWFwLmZpbmQodC5pZCwgbWFwLnRpbGVzKTtcbiAgbGV0IGZpcnN0ID0gTGlzdFV0aWwuYXNzb2NfZXJyKFRpbGUubF9zaGFyZCh0KSwgc2hhcmRzLCBcImZpbmRfdFwiKTtcbiAgbGV0IGxhc3QgPSBMaXN0VXRpbC5hc3NvY19lcnIoVGlsZS5yX3NoYXJkKHQpLCBzaGFyZHMsIFwiZmluZF90XCIpO1xuICB7b3JpZ2luOiBmaXJzdC5vcmlnaW4sIGxhc3Q6IGxhc3QubGFzdH07XG59O1xuLy8gbGV0IGZpbmRfYSA9ICh7c2hhcmRzOiAobCwgciksIF99IGFzIGE6IEFuY2VzdG9yLnQsIG1hcCkgPT5cbi8vICAgTGlzdC5hc3NvYyhsIEAgciwgSWQuTWFwLmZpbmQoYS5pZCwgbWFwLnRpbGVzKSk7XG5sZXQgZmluZF9wID0gKHA6IFBpZWNlLnQsIG1hcCk6IG1lYXN1cmVtZW50ID0+XG4gIHBcbiAgfD4gUGllY2UuZ2V0KFxuICAgICAgIHcgPT4gZmluZF93KHcsIG1hcCksXG4gICAgICAgZyA9PiBmaW5kX2coZywgbWFwKSxcbiAgICAgICB0ID0+IGZpbmRfdCh0LCBtYXApLFxuICAgICApO1xuXG5sZXQgZmluZF9ieV9pZCA9IChpZDogSWQudCwgbWFwOiB0KTogb3B0aW9uKG1lYXN1cmVtZW50KSA9PiB7XG4gIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KGlkLCBtYXAuc2Vjb25kYXJ5KSkge1xuICB8IFNvbWUobSkgPT4gU29tZShtKVxuICB8IE5vbmUgPT5cbiAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLmdyb3V0KSkge1xuICAgIHwgU29tZShtKSA9PiBTb21lKG0pXG4gICAgfCBOb25lID0+XG4gICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbWFwLnRpbGVzKSkge1xuICAgICAgfCBTb21lKHNoYXJkcykgPT5cbiAgICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgICBMaXN0VXRpbC5hc3NvY19lcnIoTGlzdC5oZChzaGFyZHMpIHw+IGZzdCwgc2hhcmRzLCBcImZpbmRfYnlfaWRcIik7XG4gICAgICAgIGxldCBsYXN0ID1cbiAgICAgICAgICBMaXN0VXRpbC5hc3NvY19lcnIoXG4gICAgICAgICAgICBMaXN0VXRpbC5sYXN0KHNoYXJkcykgfD4gZnN0LFxuICAgICAgICAgICAgc2hhcmRzLFxuICAgICAgICAgICAgXCJmaW5kX2J5X2lkXCIsXG4gICAgICAgICAgKTtcbiAgICAgICAgU29tZSh7b3JpZ2luOiBmaXJzdC5vcmlnaW4sIGxhc3Q6IGxhc3QubGFzdH0pO1xuICAgICAgfCBOb25lID0+XG4gICAgICAgIFByaW50Zi5wcmludGYoXCJNZWFzdXJlZC5XQVJOSU5HOiBpZCAlcyBub3QgZm91bmRcIiwgSWQudG9fc3RyaW5nKGlkKSk7XG4gICAgICAgIE5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxubGV0IHBvc3RfdGlsZV9pbmRlbnQgPSAodDogVGlsZS50KSA9PiB7XG4gIC8vIGhhY2sgZm9yIGluZGVudCBmb2xsb3dpbmcgZnVuL2lmIHRpbGVzLlxuICAvLyBwcm9wZXIgZml4IGludm9sdmVzIHVwZGF0aW5nIG1vbGQgZGF0YXR5cGVcbiAgLy8gdG8gc3BlY2lmeSB3aGV0aGVyIGEgcmlnaHQtZmFjaW5nIGNvbmNhdmVcbiAgLy8gdGlwIGltcG9zZXMgaW5kZW50YXRpb24gb24gYSBmb2xsb3dpbmcgbmV3bGluZS5cbiAgbGV0IGNvbXBsZXRlX2Z1biA9XG4gICAgVGlsZS5pc19jb21wbGV0ZSh0KVxuICAgICYmIChcbiAgICAgIHQubGFiZWwgPT0gRm9ybS5nZXQoXCJmdW5fXCIpLmxhYmVsXG4gICAgICB8fCB0LmxhYmVsID09IEZvcm0uZ2V0KFwidHlwZnVuXCIpLmxhYmVsXG4gICAgICB8fCB0LmxhYmVsID09IEZvcm0uZ2V0KFwiaWZfXCIpLmxhYmVsXG4gICAgKTtcbiAgbGV0IG1pc3NpbmdfcmlnaHRfZXh0cmVtZSA9IFRpbGUucl9zaGFyZCh0KSA8IExpc3QubGVuZ3RoKHQubGFiZWwpIC0gMTtcbiAgY29tcGxldGVfZnVuIHx8IG1pc3NpbmdfcmlnaHRfZXh0cmVtZTtcbn07XG5cbmxldCBtaXNzaW5nX2xlZnRfZXh0cmVtZSA9ICh0OiBUaWxlLnQpID0+IFRpbGUubF9zaGFyZCh0KSA+IDA7XG5cbmxldCBpc19pbmRlbnRlZF9tYXAgPSAoc2VnOiBTZWdtZW50LnQpID0+IHtcbiAgbGV0IHJlYyBnbyA9ICh+aXNfaW5kZW50ZWQ9ZmFsc2UsIH5tYXA9SWQuTWFwLmVtcHR5LCBzZWc6IFNlZ21lbnQudCkgPT5cbiAgICBzZWdcbiAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICgoaXNfaW5kZW50ZWQsIG1hcCksIHA6IFBpZWNlLnQpID0+XG4gICAgICAgICAgIHN3aXRjaCAocCkge1xuICAgICAgICAgICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsodykgPT4gKFxuICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICBJZC5NYXAuYWRkKHcuaWQsIGlzX2luZGVudGVkLCBtYXApLFxuICAgICAgICAgICAgIClcbiAgICAgICAgICAgfCBTZWNvbmRhcnkoXylcbiAgICAgICAgICAgfCBHcm91dChfKSA9PiAoaXNfaW5kZW50ZWQsIG1hcClcbiAgICAgICAgICAgfCBUaWxlKHQpID0+XG4gICAgICAgICAgICAgbGV0IGlzX2luZGVudGVkID0gaXNfaW5kZW50ZWQgfHwgcG9zdF90aWxlX2luZGVudCh0KTtcbiAgICAgICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICAgICAgIHQuY2hpbGRyZW5cbiAgICAgICAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAgICAobWFwLCBjaGlsZCkgPT4gZ28ofmlzX2luZGVudGVkPXRydWUsIH5tYXAsIGNoaWxkKSxcbiAgICAgICAgICAgICAgICAgICAgbWFwLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAoaXNfaW5kZW50ZWQsIG1hcCk7XG4gICAgICAgICAgIH0sXG4gICAgICAgICAoaXNfaW5kZW50ZWQsIG1hcCksXG4gICAgICAgKVxuICAgIHw+IHNuZDtcbiAgZ28oc2VnKTtcbn07XG5cbmxldCBvZl9zZWdtZW50ID0gKH5vbGQ6IHQ9ZW1wdHksIH50b3VjaGVkPVRvdWNoZWQuZW1wdHksIHNlZzogU2VnbWVudC50KTogdCA9PiB7XG4gIGxldCBpc19pbmRlbnRlZCA9IGlzX2luZGVudGVkX21hcChzZWcpO1xuXG4gIC8vIHJlY3Vyc2l2ZSBhY3Jvc3Mgc2VnJ3MgYmlkZWxpbWl0ZWQgY29udGFpbmVyc1xuICBsZXQgcmVjIGdvX25lc3RlZCA9XG4gICAgICAgICAgKFxuICAgICAgICAgICAgfm1hcCxcbiAgICAgICAgICAgIH5jb250YWluZXJfaW5kZW50OiBhYnNfaW5kZW50PTAsXG4gICAgICAgICAgICB+b3JpZ2luPVBvaW50Lnplcm8sXG4gICAgICAgICAgICBzZWc6IFNlZ21lbnQudCxcbiAgICAgICAgICApXG4gICAgICAgICAgOiAoUG9pbnQudCwgdCkgPT4ge1xuICAgIGxldCBmaXJzdF90b3VjaGVkX2luY29tcGxldGUgPVxuICAgICAgc3dpdGNoIChTZWdtZW50LmluY29tcGxldGVfdGlsZXMoc2VnKSkge1xuICAgICAgfCBbXSA9PiBOb25lXG4gICAgICB8IHRzID0+XG4gICAgICAgIHRzXG4gICAgICAgIHw+IExpc3QubWFwKCh0OiBUaWxlLnQpID0+IFRvdWNoZWQuZmluZF9vcHQodC5pZCwgdG91Y2hlZCkpXG4gICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgIChhY2MsIHRvdWNoZWQpID0+XG4gICAgICAgICAgICAgICBzd2l0Y2ggKGFjYywgdG91Y2hlZCkge1xuICAgICAgICAgICAgICAgfCAoU29tZSh0aW1lKSwgU29tZSh0aW1lJykpID0+IFNvbWUoVGltZS5taW4odGltZSwgdGltZScpKVxuICAgICAgICAgICAgICAgfCAoU29tZSh0aW1lKSwgXylcbiAgICAgICAgICAgICAgIHwgKF8sIFNvbWUodGltZSkpID0+IFNvbWUodGltZSlcbiAgICAgICAgICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgIE5vbmUsXG4gICAgICAgICAgIClcbiAgICAgIH07XG5cbiAgICAvLyByZWN1cnNpdmUgYWNyb3NzIHNlZydzIGxpc3Qgc3RydWN0dXJlXG4gICAgbGV0IHJlYyBnb19zZXEgPVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICB+Y29udGFpbmVkX2luZGVudDogcmVsX2luZGVudD0wLFxuICAgICAgICAgICAgICB+b3JpZ2luOiBQb2ludC50LFxuICAgICAgICAgICAgICBzZWc6IFNlZ21lbnQudCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogKFBvaW50LnQsIHQpID0+XG4gICAgICBzd2l0Y2ggKHNlZykge1xuICAgICAgfCBbXSA9PlxuICAgICAgICBsZXQgbWFwID1cbiAgICAgICAgICBtYXBcbiAgICAgICAgICB8PiBhZGRfcm93KFxuICAgICAgICAgICAgICAgb3JpZ2luLnJvdyxcbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgaW5kZW50OiBjb250YWluZXJfaW5kZW50ICsgY29udGFpbmVkX2luZGVudCxcbiAgICAgICAgICAgICAgICAgbWF4X2NvbDogb3JpZ2luLmNvbCxcbiAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgKTtcbiAgICAgICAgKG9yaWdpbiwgbWFwKTtcbiAgICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgICAgbGV0IChjb250YWluZWRfaW5kZW50LCBvcmlnaW4sIG1hcCkgPVxuICAgICAgICAgIHN3aXRjaCAoaGQpIHtcbiAgICAgICAgICB8IFNlY29uZGFyeSh3KSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsodykgPT5cbiAgICAgICAgICAgIGxldCByb3dfaW5kZW50ID0gY29udGFpbmVyX2luZGVudCArIGNvbnRhaW5lZF9pbmRlbnQ7XG4gICAgICAgICAgICBsZXQgaW5kZW50ID1cbiAgICAgICAgICAgICAgaWYgKFNlZ21lbnQuc2FtZWxpbmVfc2Vjb25kYXJ5KHRsKSkge1xuICAgICAgICAgICAgICAgIDA7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICAgICAgICAgIFRvdWNoZWQuZmluZF9vcHQody5pZCwgdG91Y2hlZCksXG4gICAgICAgICAgICAgICAgICBmaXJzdF90b3VjaGVkX2luY29tcGxldGUsXG4gICAgICAgICAgICAgICAgICBmaW5kX29wdF9sYih3LmlkLCBvbGQpLFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHwgKFNvbWUodG91Y2hlZCksIFNvbWUodG91Y2hlZCcpLCBTb21lKGluZGVudCkpXG4gICAgICAgICAgICAgICAgICAgIHdoZW4gVGltZS5sdCh0b3VjaGVkLCB0b3VjaGVkJykgPT4gaW5kZW50XG4gICAgICAgICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICAgICAgICBjb250YWluZWRfaW5kZW50ICsgKElkLk1hcC5maW5kKHcuaWQsIGlzX2luZGVudGVkKSA/IDIgOiAwKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgICAgIFBvaW50Lntyb3c6IG9yaWdpbi5yb3cgKyAxLCBjb2w6IGNvbnRhaW5lcl9pbmRlbnQgKyBpbmRlbnR9O1xuICAgICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICB8PiBhZGRfdyh3LCB7b3JpZ2luLCBsYXN0fSlcbiAgICAgICAgICAgICAgfD4gYWRkX3JvdyhcbiAgICAgICAgICAgICAgICAgICBvcmlnaW4ucm93LFxuICAgICAgICAgICAgICAgICAgIHtpbmRlbnQ6IHJvd19pbmRlbnQsIG1heF9jb2w6IG9yaWdpbi5jb2x9LFxuICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHw+IGFkZF9sYih3LmlkLCBpbmRlbnQpO1xuICAgICAgICAgICAgKGluZGVudCwgbGFzdCwgbWFwKTtcbiAgICAgICAgICB8IFNlY29uZGFyeSh3KSA9PlxuICAgICAgICAgICAgbGV0IHdzcGFjZV9sZW5ndGggPVxuICAgICAgICAgICAgICBVbmljb2RlLmxlbmd0aChTZWNvbmRhcnkuZ2V0X3N0cmluZyh3LmNvbnRlbnQpKTtcbiAgICAgICAgICAgIGxldCBsYXN0ID0gey4uLm9yaWdpbiwgY29sOiBvcmlnaW4uY29sICsgd3NwYWNlX2xlbmd0aH07XG4gICAgICAgICAgICBsZXQgbWFwID0gbWFwIHw+IGFkZF93KHcsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIHwgR3JvdXQoZykgPT5cbiAgICAgICAgICAgIGxldCBsYXN0ID0gey4uLm9yaWdpbiwgY29sOiBvcmlnaW4uY29sICsgMX07XG4gICAgICAgICAgICBsZXQgbWFwID0gbWFwIHw+IGFkZF9nKGcsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIHwgVGlsZSh0KSA9PlxuICAgICAgICAgICAgbGV0IHRva2VuID0gTGlzdC5udGgodC5sYWJlbCk7XG4gICAgICAgICAgICBsZXQgYWRkX3NoYXJkID0gKG9yaWdpbiwgc2hhcmQsIG1hcCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgbGFzdCA9XG4gICAgICAgICAgICAgICAgUG9pbnQue1xuICAgICAgICAgICAgICAgICAgLi4ub3JpZ2luLFxuICAgICAgICAgICAgICAgICAgY29sOiBvcmlnaW4uY29sICsgU3RyaW5nLmxlbmd0aCh0b2tlbihzaGFyZCkpLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGxldCBtYXAgPSBtYXAgfD4gYWRkX3ModC5pZCwgc2hhcmQsIHtvcmlnaW4sIGxhc3R9KTtcbiAgICAgICAgICAgICAgKGxhc3QsIG1hcCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbGV0IChsYXN0LCBtYXApID1cbiAgICAgICAgICAgICAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICAgICAgICAgICAgICB8PiBBYmEuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAgICAgIHNoYXJkID0+IGFkZF9zaGFyZChvcmlnaW4sIHNoYXJkLCBtYXApLFxuICAgICAgICAgICAgICAgICAgICgob3JpZ2luLCBtYXApLCBjaGlsZCwgc2hhcmQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgIGxldCAoY2hpbGRfbGFzdCwgY2hpbGRfbWFwKSA9XG4gICAgICAgICAgICAgICAgICAgICAgIGdvX25lc3RlZChcbiAgICAgICAgICAgICAgICAgICAgICAgICB+bWFwLFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5jb250YWluZXJfaW5kZW50PWNvbnRhaW5lcl9pbmRlbnQgKyBjb250YWluZWRfaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgIH5vcmlnaW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICBhZGRfc2hhcmQoY2hpbGRfbGFzdCwgc2hhcmQsIGNoaWxkX21hcCk7XG4gICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIChjb250YWluZWRfaW5kZW50LCBsYXN0LCBtYXApO1xuICAgICAgICAgIH07XG4gICAgICAgIGxldCAodGxfbGFzdCwgbWFwKSA9IGdvX3NlcSh+bWFwLCB+Y29udGFpbmVkX2luZGVudCwgfm9yaWdpbiwgdGwpO1xuICAgICAgICAodGxfbGFzdCwgbWFwKTtcbiAgICAgIH07XG4gICAgZ29fc2VxKH5tYXAsIH5vcmlnaW4sIHNlZyk7XG4gIH07XG4gIHNuZChnb19uZXN0ZWQofm1hcD1lbXB0eSwgc2VnKSk7XG59O1xuXG5sZXQgbGVuZ3RoID0gKHNlZzogU2VnbWVudC50LCBtYXA6IHQpOiBpbnQgPT5cbiAgc3dpdGNoIChzZWcpIHtcbiAgfCBbXSA9PiAwXG4gIHwgW3BdID0+XG4gICAgbGV0IG0gPSBmaW5kX3AocCwgbWFwKTtcbiAgICBtLmxhc3QuY29sIC0gbS5vcmlnaW4uY29sO1xuICB8IFtoZCwgLi4udGxdID0+XG4gICAgbGV0IGZpcnN0ID0gZmluZF9wKGhkLCBtYXApO1xuICAgIGxldCBsYXN0ID0gZmluZF9wKExpc3RVdGlsLmxhc3QodGwpLCBtYXApO1xuICAgIGxhc3QubGFzdC5jb2wgLSBmaXJzdC5vcmlnaW4uY29sO1xuICB9O1xuXG5sZXQgc2VnbWVudF9vcmlnaW4gPSAoc2VnOiBTZWdtZW50LnQpOiBvcHRpb24oUG9pbnQudCkgPT5cbiAgT3B0aW9uLm1hcChcbiAgICBmaXJzdCA9PiBmaW5kX3AoZmlyc3QsIG9mX3NlZ21lbnQoc2VnKSkub3JpZ2luLFxuICAgIExpc3RVdGlsLmhkX29wdChzZWcpLFxuICApO1xuXG5sZXQgc2VnbWVudF9sYXN0ID0gKHNlZzogU2VnbWVudC50KTogb3B0aW9uKFBvaW50LnQpID0+XG4gIE9wdGlvbi5tYXAoXG4gICAgbGFzdCA9PiBmaW5kX3AobGFzdCwgb2Zfc2VnbWVudChzZWcpKS5sYXN0LFxuICAgIExpc3RVdGlsLmxhc3Rfb3B0KHNlZyksXG4gICk7XG5cbmxldCBzZWdtZW50X2hlaWdodCA9IChzZWc6IFNlZ21lbnQudCkgPT5cbiAgc3dpdGNoIChzZWdtZW50X2xhc3Qoc2VnKSwgc2VnbWVudF9vcmlnaW4oc2VnKSkge1xuICB8IChTb21lKGxhc3QpLCBTb21lKGZpcnN0KSkgPT4gMSArIGxhc3Qucm93IC0gZmlyc3Qucm93XG4gIHwgXyA9PiAwXG4gIH07XG5cbmxldCBzZWdtZW50X3dpZHRoID0gKHNlZzogU2VnbWVudC50KTogaW50ID0+XG4gIEludE1hcC5mb2xkKFxuICAgIChfLCB7bWF4X2NvbCwgX306IFJvd3Muc2hhcGUsIGFjYykgPT4gbWF4KG1heF9jb2wsIGFjYyksXG4gICAgb2Zfc2VnbWVudChzZWcpLnJvd3MsXG4gICAgMCxcbiAgKTtcblxubGV0IHdpZHRoX2Nvc3QgPSAoc2VnOiBTZWdtZW50LnQsIG1heF93aWR0aDogaW50KTogaW50ID0+XG4gIEludE1hcC5mb2xkKFxuICAgIChfLCB7bWF4X2NvbCwgX306IFJvd3Muc2hhcGUsIGFjYykgPT4ge1xuICAgICAgbGV0IG92ZXJmbG93ID0gbWF4KG1heF9jb2wgLSBtYXhfd2lkdGgsIDApO1xuICAgICAgYWNjICsgb3ZlcmZsb3cgKiBvdmVyZmxvdztcbiAgICB9LFxuICAgIG9mX3NlZ21lbnQoc2VnKS5yb3dzLFxuICAgIDAsXG4gICk7XG4iLCJvcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYnVmZmVyID1cbiAgfCBVbnBhcnNlZFxuICB8IFBhcnNlZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb2RlID1cbiAgfCBOb3JtYWxcbiAgfCBCdWZmZXIoYnVmZmVyKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBmb2N1czogRGlyZWN0aW9uLnQsXG4gIGNvbnRlbnQ6IFNlZ21lbnQudCxcbiAgbW9kZSxcbn07XG5cbi8qIE5PVEU6IGJhY2twYWNrIG5vIGxvbmdlciB1c2VzIHNlbGVjdGlvbiBmb2N1cyAqL1xubGV0IG1rID0gKH5tb2RlPU5vcm1hbCwgfmZvY3VzPURpcmVjdGlvbi5MZWZ0LCBjb250ZW50OiBTZWdtZW50LnQpID0+IHtcbiAgZm9jdXMsXG4gIGNvbnRlbnQsXG4gIG1vZGUsXG59O1xuXG5sZXQgbWtfYnVmZmVyID0gYnVmZmVyID0+IG1rKH5tb2RlPUJ1ZmZlcihidWZmZXIpLCB+Zm9jdXM9RGlyZWN0aW9uLkxlZnQpO1xuXG5sZXQgaXNfYnVmZmVyOiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCB7bW9kZTogQnVmZmVyKF8pLCBffSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZTtcblxubGV0IGJ1ZmZlcl9pZHMgPSAoc2VsOiB0KTogbGlzdChJZC50KSA9PiB7XG4gIC8qIENvbGxlY3QgaWRzIG9mIHRva2VucyBpbiBidWZmZXIgZm9yIHN0eWxpbmcgcHVycG9zZXMuIFRoaXMgaXNcbiAgICogY3VycmVudGx5IG5lY2Vzc2FyeSBhcyB0aGUgc2VsZWN0aW9uIGlzIG5vdCBwZXJzaXN0ZWQgdGhyb3VnaFxuICAgKiB1bnppcHBpbmcgZm9yIGRpc3BsYXkgKi9cbiAgbGV0IGJ1ZmZlciA9IGlzX2J1ZmZlcihzZWwpID8gc2VsLmNvbnRlbnQgOiBbXTtcbiAgSWQuTWFwLmJpbmRpbmdzKE1lYXN1cmVkLm9mX3NlZ21lbnQoYnVmZmVyKS50aWxlcykgfD4gTGlzdC5tYXAoZnN0KTtcbn07XG5cbmxldCBlbXB0eSA9IG1rKFNlZ21lbnQuZW1wdHkpO1xuXG5sZXQgbWFwID0gKGYsIHNlbCkgPT4gey4uLnNlbCwgY29udGVudDogZihzZWwuY29udGVudCl9O1xuXG5sZXQgdG9nZ2xlX2ZvY3VzID0gc2VsZWN0aW9uID0+IHtcbiAgLi4uc2VsZWN0aW9uLFxuICBmb2N1czogVXRpbC5EaXJlY3Rpb24udG9nZ2xlKHNlbGVjdGlvbi5mb2N1cyksXG59O1xuXG5sZXQgaXNfZW1wdHkgPSAoc2VsZWN0aW9uOiB0KSA9PiBzZWxlY3Rpb24uY29udGVudCA9PSBTZWdtZW50LmVtcHR5O1xuXG5sZXQgcHVzaCA9IChwOiBQaWVjZS50LCB7Zm9jdXMsIGNvbnRlbnQsIG1vZGV9OiB0KTogdCA9PiB7XG4gIGxldCBjb250ZW50ID1cbiAgICBTZWdtZW50LnJlYXNzZW1ibGUoXG4gICAgICBzd2l0Y2ggKGZvY3VzKSB7XG4gICAgICB8IExlZnQgPT4gU2VnbWVudC5jb25zKHAsIGNvbnRlbnQpXG4gICAgICB8IFJpZ2h0ID0+IFNlZ21lbnQuc25vYyhjb250ZW50LCBwKVxuICAgICAgfSxcbiAgICApO1xuICB7Zm9jdXMsIGNvbnRlbnQsIG1vZGV9O1xufTtcblxubGV0IHBvcCA9IChzZWw6IHQpOiBvcHRpb24oKFBpZWNlLnQsIHQpKSA9PlxuICBzd2l0Y2ggKHNlbC5mb2N1cywgc2VsLmNvbnRlbnQsIExpc3RVdGlsLnNwbGl0X2xhc3Rfb3B0KHNlbC5jb250ZW50KSkge1xuICB8IChfLCBbXSwgXylcbiAgfCAoXywgXywgTm9uZSkgPT4gTm9uZVxuICB8IChMZWZ0LCBbcCwgLi4uY29udGVudF0sIF8pID0+XG4gICAgbGV0IChwLCByZXN0KSA9IFBpZWNlLnBvcF9sKHApO1xuICAgIFNvbWUoKHAsIHsuLi5zZWwsIGNvbnRlbnQ6IHJlc3QgQCBjb250ZW50fSkpO1xuICB8IChSaWdodCwgXywgU29tZSgoY29udGVudCwgcCkpKSA9PlxuICAgIGxldCAocmVzdCwgcCkgPSBQaWVjZS5wb3BfcihwKTtcbiAgICBTb21lKChwLCB7Li4uc2VsLCBjb250ZW50OiBjb250ZW50IEAgcmVzdH0pKTtcbiAgfTtcblxubGV0IHNwbGl0X3BpZWNlID0gXzogb3B0aW9uKChQaWVjZS50LCB0KSkgPT4gZmFpbHdpdGgoXCJ0b2RvIHNwbGl0X3BpZWNlXCIpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcblxubW9kdWxlIFNoYXJkSW5mbyA9IHtcbiAgbW9kdWxlIE9yZGVyID0ge1xuICAgIHR5cGUga2V5ID0gKElkLnQsIGludCk7XG4gICAgLy8gbGV0IGtleSA9IChzOiBTaGFyZC50KSA9PiAocy50aWxlX2lkLCBTaGFyZC5pbmRleChzKSk7XG5cbiAgICBvcGVuIEhhc2h0Ymw7XG4gICAgdHlwZSB0ID0gSGFzaHRibC50KGtleSwgSGFzaHRibC50KGtleSwgdW5pdCkpO1xuXG4gICAgbGV0IG4gPSAyMDtcbiAgICBsZXQgaW5pdCA9ICgpID0+IGNyZWF0ZShuKTtcblxuICAgIGxldCBsdCA9IChsOiBUaWxlLnQsIHI6IFRpbGUudCwgb3JkOiB0KTogYm9vbCA9PiB7XG4gICAgICBsZXQgKGlfbCwgaV9yKSA9IFRpbGUuKHJfc2hhcmQobCksIGxfc2hhcmQocikpO1xuICAgICAgc3dpdGNoIChmaW5kX29wdChvcmQsIChsLmlkLCBpX2wpKSkge1xuICAgICAgfCBOb25lID0+IGZhbHNlXG4gICAgICB8IFNvbWUocm93KSA9PiBPcHRpb24uaXNfc29tZShmaW5kX29wdChyb3csIChyLmlkLCBpX3IpKSlcbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgZ3QgPSAobCwgciwgb3JkKSA9PiBsdChyLCBsLCBvcmQpO1xuICAgIGxldCB1biA9IChsLCByLCBvcmQpID0+ICFsdChsLCByLCBvcmQpICYmICFndChsLCByLCBvcmQpO1xuXG4gICAgbGV0IGRpc29yZGVyZWQgPSAodDogVGlsZS50LCB0JzogVGlsZS50KTogYm9vbCA9PlxuICAgICAgdC5pZCA9PSB0Jy5pZFxuICAgICAgJiYge1xuICAgICAgICBsZXQgKGwsIHIpID0gVGlsZS4obF9zaGFyZCh0KSwgcl9zaGFyZCh0KSk7XG4gICAgICAgIGxldCAobCcsIHInKSA9IFRpbGUuKGxfc2hhcmQodCcpLCByX3NoYXJkKHQnKSk7XG4gICAgICAgIGwgPCBsJyAmJiBsJyA8IHIgfHwgbCcgPCBsICYmIGwgPCByJztcbiAgICAgIH07XG5cbiAgICBsZXQgbHRfb3JfdW4gPSAobHMsIHJzLCBvcmQpID0+XG4gICAgICBsc1xuICAgICAgfD4gTGlzdC5mb3JfYWxsKGwgPT5cbiAgICAgICAgICAgcnNcbiAgICAgICAgICAgfD4gTGlzdC5mb3JfYWxsKHIgPT5cbiAgICAgICAgICAgICAgICAhZGlzb3JkZXJlZChsLCByKSAmJiAobHQobCwgciwgb3JkKSB8fCB1bihsLCByLCBvcmQpKVxuICAgICAgICAgICAgICApXG4gICAgICAgICApO1xuXG4gICAgbGV0IGdldCA9IChpLCBqLCBtKSA9PiB7XG4gICAgICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICAgICAgbGV0KiByID0gZmluZF9vcHQobSwgaSk7XG4gICAgICBmaW5kX29wdChyLCBqKTtcbiAgICB9O1xuXG4gICAgbGV0IHNldCA9IChpLCBqLCBtKSA9PiB7XG4gICAgICBsZXQgciA9XG4gICAgICAgIHN3aXRjaCAoZmluZF9vcHQobSwgaSkpIHtcbiAgICAgICAgfCBOb25lID0+IGNyZWF0ZShuKVxuICAgICAgICB8IFNvbWUocikgPT4gclxuICAgICAgICB9O1xuICAgICAgcmVwbGFjZShyLCBqLCAoKSk7XG4gICAgICByZXBsYWNlKG0sIGksIHIpO1xuICAgIH07XG5cbiAgICBsZXQgYWRkX3RpbGUgPSAoaWQsIGxibCwgb3JkKSA9PlxuICAgICAgbGJsXG4gICAgICB8PiBMaXN0Lml0ZXJpKChpLCBfKSA9PiB7XG4gICAgICAgICAgIHN3aXRjaCAoZmluZF9vcHQob3JkLCAoaWQsIGkpKSkge1xuICAgICAgICAgICB8IFNvbWUoXykgPT4gKClcbiAgICAgICAgICAgfCBOb25lID0+IHJlcGxhY2Uob3JkLCAoaWQsIGkpLCBjcmVhdGUobikpXG4gICAgICAgICAgIH07XG4gICAgICAgICAgIGkgPT0gMCA/ICgpIDogc2V0KChpZCwgaSAtIDEpLCAoaWQsIGkpLCBvcmQpO1xuICAgICAgICAgfSk7XG5cbiAgICAvLyBXYXJzaGFsbCdzIGFsZ29yaXRobSBodHRwczovL2NzLndpbm9uYS5lZHUvbGluL2NzNDQwL2NoMDgtMi5wZGZcbiAgICBsZXQgdHJhbl9jbG9zZSA9IChvcmQ6IHQpOiB1bml0ID0+IHtcbiAgICAgIGxldCBrZXlzID0gTGlzdC5vZl9zZXEoSGFzaHRibC50b19zZXFfa2V5cyhvcmQpKTtcbiAgICAgIGtleXNcbiAgICAgIHw+IExpc3QuaXRlcmkoKG4sIGspID0+XG4gICAgICAgICAgIGlmIChuID09IDApIHtcbiAgICAgICAgICAgICAoKTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBrZXlzXG4gICAgICAgICAgICAgfD4gTGlzdC5pdGVyKGkgPT5cbiAgICAgICAgICAgICAgICAgIGtleXNcbiAgICAgICAgICAgICAgICAgIHw+IExpc3QuaXRlcihqID0+XG4gICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0KGksIGosIG9yZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKF8pID0+ICgpXG4gICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0KGksIGssIG9yZCksIGdldChrLCBqLCBvcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfCAoTm9uZSwgXylcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IChfLCBOb25lKSA9PiAoKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKFNvbWUoXyksIFNvbWUoXykpID0+IHNldChpLCBqLCBvcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgfVxuICAgICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBDb3VudCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBsYWJlbHM6IElkLk1hcC50KExhYmVsLnQpLFxuICAgICAgY291bnRzOiBJZC5NYXAudChpbnQpLFxuICAgIH07XG5cbiAgICBsZXQgb2ZfdGlsZSA9ICh0OiBUaWxlLnQpID0+IHtcbiAgICAgIGxhYmVsczogSWQuTWFwLnNpbmdsZXRvbih0LmlkLCB0LmxhYmVsKSxcbiAgICAgIGNvdW50czogSWQuTWFwLnNpbmdsZXRvbih0LmlkLCBMaXN0Lmxlbmd0aCh0LnNoYXJkcykpLFxuICAgIH07XG5cbiAgICBsZXQgbWVyZ2UgPSAobTogdCwgbSc6IHQpID0+IHtcbiAgICAgIGxhYmVsczogSWQuTWFwLnVuaW9uKChfLCBsYmwsIF8pID0+IFNvbWUobGJsKSwgbS5sYWJlbHMsIG0nLmxhYmVscyksXG4gICAgICBjb3VudHM6IElkLk1hcC51bmlvbigoXywgbiwgbicpID0+IFNvbWUobiArIG4nKSwgbS5jb3VudHMsIG0nLmNvdW50cyksXG4gICAgfTtcblxuICAgIGxldCBtZW0gPSAoaWQsIG0pID0+IElkLk1hcC5tZW0oaWQsIG0ubGFiZWxzKTtcblxuICAgIGxldCBleGlzdHNfbWVtID0gKHRzOiBsaXN0KFRpbGUudCksIG0pID0+XG4gICAgICBMaXN0LmV4aXN0cygodDogVGlsZS50KSA9PiBtZW0odC5pZCwgbSksIHRzKTtcblxuICAgIGxldCBpc19jb21wbGV0ZSA9IChtOiB0KSA9PlxuICAgICAgbS5jb3VudHNcbiAgICAgIHw+IElkLk1hcC5mb3JfYWxsKChpZCwgbikgPT5cbiAgICAgICAgICAgbiA9PSBMaXN0Lmxlbmd0aChJZC5NYXAuZmluZChpZCwgbS5sYWJlbHMpKVxuICAgICAgICAgKTtcbiAgfTtcblxuICBtb2R1bGUgQ291bnRzID0ge1xuICAgIHR5cGUgdCA9IElkLlVmLnN0b3JlKENvdW50LnQpO1xuICAgIGluY2x1ZGUgSWQuVWY7XG4gICAgbGV0IG1lcmdlID0gbWVyZ2UoQ291bnQubWVyZ2UpO1xuICAgIGxldCBhZGRfdGlsZSA9ICh0OiBUaWxlLnQsIGNzOiB0KTogdW5pdCA9PlxuICAgICAgc3dpdGNoIChnZXRfb3B0KHQuaWQsIGNzKSkge1xuICAgICAgfCBOb25lID0+IGFkZCh0LmlkLCBDb3VudC5vZl90aWxlKHQpLCBjcylcbiAgICAgIHwgU29tZShjKSA9PlxuICAgICAgICBsZXQgYyA9IHtcbiAgICAgICAgICAuLi5jLFxuICAgICAgICAgIGNvdW50czpcbiAgICAgICAgICAgIElkLk1hcC51cGRhdGUoXG4gICAgICAgICAgICAgIHQuaWQsXG4gICAgICAgICAgICAgIE9wdGlvbi5tYXAoKCspKExpc3QubGVuZ3RoKHQuc2hhcmRzKSkpLFxuICAgICAgICAgICAgICBjLmNvdW50cyxcbiAgICAgICAgICAgICksXG4gICAgICAgIH07XG4gICAgICAgIHNldCh0LmlkLCBjLCBjcyk7XG4gICAgICB9O1xuICB9O1xuXG4gIC8vIFNoYXJkcyBhcmUgY29uc2lkZXJlZCBzZWxlY3Rpb24tbWF0Y2hpbmcgaWYgdGhleSBhcmUgcmVsYXRlZCB0cmFuc2l0aXZlbHlcbiAgLy8gYnkgbm9ybWFsIHdpdGhpbi10aWxlIG1hdGNoaW5nIG9yIGJ5IHNhbWUtc2VsZWN0aW9uLWNvbnRhaW5tZW50LlxuICAvLyBTZWxlY3Rpb24tbWF0Y2hpbmcgc2hhcmRzIGFyZSBvcmRlcmVkIHRyYW5zaXRpdmVseSBieSB3aXRoaW4tdGlsZVxuICAvLyBvcmRlcmluZyBhbmQgc2FtZS1zZWxlY3Rpb24gb3JkZXJpbmcgY29tYmluZWQgd2l0aCB3ZWxsLW5lc3RlZG5lc3MuXG4gIC8vIFJlcHJlc2VudHMgdGhlIGV4cGVjdGVkIG9yZGVyIG9mIGFsbCBzZWxlY3Rpb24tbWF0Y2hpbmcgc2hhcmRzIGFzXG4gIC8vIGltcG9zZWQgYnkgc2VsZWN0aW9ucyBpbiB0aGUgYmFja3BhY2ssIGFsb25nIHdpdGggY291bnRzIG9mIHRob3NlXG4gIC8vIHNoYXJkcyBjb250YWluZWQgaW4gdGhlIGJhY2twYWNrLlxuICAvLyBDb3VudHMgYXJlIHBhcnRpdGlvbmVkIGJ5IHRoZSBzZWxlY3Rpb24tbWF0Y2hpbmcgcmVsYXRpb24uXG4gIHR5cGUgdCA9IHtcbiAgICBvcmRlcjogT3JkZXIudCxcbiAgICBjb3VudHM6IENvdW50cy50LFxuICB9O1xuXG4gIGxldCBpbml0ID0gKCkgPT4ge29yZGVyOiBPcmRlci5pbml0KCksIGNvdW50czogQ291bnRzLmluaXQoKX07XG5cbiAgbGV0IGFkZF9zZWwgPSAoc2VsOiBTZWxlY3Rpb24udCwge2NvdW50cywgb3JkZXJ9OiB0KTogdW5pdCA9PiB7XG4gICAgbGV0IHRzID0gU2VnbWVudC5pbmNvbXBsZXRlX3RpbGVzKHNlbC5jb250ZW50KTtcbiAgICAvLyBpbml0aWFsaXplXG4gICAgdHNcbiAgICB8PiBMaXN0Lml0ZXIoKHQ6IFRpbGUudCkgPT4ge1xuICAgICAgICAgQ291bnRzLmFkZF90aWxlKHQsIGNvdW50cyk7XG4gICAgICAgICBPcmRlci5hZGRfdGlsZSh0LmlkLCB0LmxhYmVsLCBvcmRlcik7XG4gICAgICAgfSk7XG4gICAgLy8gbWVyZ2UgY291bnRzXG4gICAgaWdub3JlKFxuICAgICAgdHNcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAocHJldjogb3B0aW9uKFRpbGUudCksIGN1cnI6IFRpbGUudCkgPT4ge1xuICAgICAgICAgICAgIHN3aXRjaCAocHJldikge1xuICAgICAgICAgICAgIHwgTm9uZSA9PiAoKVxuICAgICAgICAgICAgIHwgU29tZShwcmV2KSA9PiBDb3VudHMubWVyZ2UocHJldi5pZCwgY3Vyci5pZCwgY291bnRzKVxuICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgU29tZShjdXJyKTtcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgTm9uZSxcbiAgICAgICAgICksXG4gICAgKTtcbiAgICAvLyBwcm9wYWdhdGUgd2VsbC1uZXN0ZWQgb3JkZXJpbmcgY29uc3RyYWludHNcbiAgICBMaXN0VXRpbC5vcmRlcmVkX3BhaXJzKHRzKVxuICAgIHw+IExpc3QuaXRlcigoKGw6IFRpbGUudCwgcjogVGlsZS50KSkgPT4ge1xuICAgICAgICAgbGV0IChuX2wsIG5fcikgPSBMaXN0LihsZW5ndGgobC5sYWJlbCksIGxlbmd0aChyLmxhYmVsKSk7XG4gICAgICAgICBsZXQgKGlfbCwgaV9yKSA9IFRpbGUuKHJfc2hhcmQobCksIGxfc2hhcmQocikpO1xuICAgICAgICAgT3JkZXIuc2V0KChsLmlkLCBpX2wpLCAoci5pZCwgaV9yKSwgb3JkZXIpO1xuICAgICAgICAgaWYgKGlfbCA9PSBuX2wgLSAxICYmIGlfciAhPSAwKSB7XG4gICAgICAgICAgIC8vIGwgbXVzdCBiZSBuZXN0ZWQgd2l0aGluIHJcbiAgICAgICAgICAgT3JkZXIuc2V0KFxuICAgICAgICAgICAgIChyLmlkLCBpX3IgLSAxKSxcbiAgICAgICAgICAgICAobC5pZCwgMCksXG4gICAgICAgICAgICAgb3JkZXIsXG4gICAgICAgICAgICk7XG4gICAgICAgICB9IGVsc2UgaWYgKGlfbCAhPSBuX2wgLSAxICYmIGlfciA9PSAwKSB7XG4gICAgICAgICAgIC8vIHIgbXVzdCBiZSBuZXN0ZWQgd2l0aGluIGxcbiAgICAgICAgICAgT3JkZXIuc2V0KFxuICAgICAgICAgICAgIChyLmlkLCBuX3IgLSAxKSxcbiAgICAgICAgICAgICAobC5pZCwgaV9sICsgMSksXG4gICAgICAgICAgICAgb3JkZXIsXG4gICAgICAgICAgICk7XG4gICAgICAgICB9O1xuICAgICAgIH0pO1xuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gbGlzdChTZWxlY3Rpb24udCk7XG5cbmxldCBlbXB0eSA9IFtdO1xuXG5sZXQgc2hhcmRfaW5mbyA9IChicDogdCkgPT4ge1xuICBvcGVuIFNoYXJkSW5mbztcbiAgbGV0IGluZm8gPSBpbml0KCk7XG4gIGJwIHw+IExpc3QuaXRlcihzZWwgPT4gYWRkX3NlbChzZWwsIGluZm8pKTtcbiAgT3JkZXIudHJhbl9jbG9zZShpbmZvLm9yZGVyKTtcbiAgaW5mbztcbn07XG5cbi8qIFBFUkY6IFRoaXMgYmVjb21lcyB2ZXJ5IGNvc3RseSB3aGVuIHRoZXJlIGFyZSBhIGxvdCBvZiB0aGluZ3NcbiAgIGluIHRoZSBiYWNrcGFjazsgZS5nLiBpZiB5b3Ugb3BlbiAyMyBwYXJlbnMsIGl0J3MgYWxtb3N0IDEwMCVcbiAgIG9mIHRoZSBrZXlzdG9rZSBjb3N0LCBmb3IgYSA1NXggdG90YWwgc2xvd2Rvd24gICovXG5sZXQgc2hhcmRfaW5mbyA9IENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIHNoYXJkX2luZm8pO1xuXG5sZXQgcHVzaCA9IHNlbCA9PiBTZWxlY3Rpb24uaXNfZW1wdHkoc2VsKSA/IEZ1bi5pZCA6IExpc3QuY29ucyhzZWwpO1xuXG5sZXQgcHVzaF9zOiAobGlzdChTZWxlY3Rpb24udCksIHQpID0+IHQgPSBMaXN0LmZvbGRfcmlnaHQocHVzaCk7XG5cbmxldCBwb3AgPVxuICAgICgocHJlLCBzdWYpOiAobGlzdChUaWxlLnQpLCBsaXN0KFRpbGUudCkpLCBicDogdClcbiAgICA6IG9wdGlvbigoYm9vbCwgU2VsZWN0aW9uLnQsIHQpKSA9PiB7XG4gIG9wZW4gT3B0VXRpbC5TeW50YXg7XG4gIGxldCogKGhkLCB0bCkgPSBMaXN0VXRpbC5zcGxpdF9maXJzdF9vcHQoYnApO1xuICBzd2l0Y2ggKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhoZC5jb250ZW50KSkge1xuICB8IFtdID0+IFNvbWUoKHRydWUsIGhkLCB0bCkpXG4gIHwgW3QsIC4uLl9dIGFzIHRzID0+XG4gICAgb3BlbiBTaGFyZEluZm87XG4gICAgbGV0IHtjb3VudHMsIG9yZGVyfSA9IHNoYXJkX2luZm8oYnApO1xuICAgIGxldCBjb3VudCA9IENvdW50cy5nZXQodC5pZCwgY291bnRzKTtcbiAgICBsZXQgZmlyc3QgPSBDb3VudC5pc19jb21wbGV0ZShjb3VudCk7XG4gICAgZmlyc3RcbiAgICB8fCAoQ291bnQuZXhpc3RzX21lbShwcmUsIGNvdW50KSB8fCBDb3VudC5leGlzdHNfbWVtKHN1ZiwgY291bnQpKVxuICAgICYmIE9yZGVyLmx0X29yX3VuKHByZSwgdHMsIG9yZGVyKVxuICAgICYmIE9yZGVyLmx0X29yX3VuKHRzLCBzdWYsIG9yZGVyKVxuICAgICAgPyBTb21lKChmaXJzdCwgaGQsIHRsKSkgOiBOb25lO1xuICB9O1xufTtcblxubGV0IHJlc3RyaWN0ZWQgPSAoYnA6IHQpOiBib29sID0+XG4gIHN3aXRjaCAoYnApIHtcbiAgfCBbXSA9PiBmYWxzZVxuICB8IFtoZCwgLi4uX10gPT5cbiAgICBzd2l0Y2ggKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhoZC5jb250ZW50KSkge1xuICAgIHwgW10gPT4gZmFsc2VcbiAgICB8IFt0LCAuLi5fXSA9PlxuICAgICAgb3BlbiBTaGFyZEluZm87XG4gICAgICBsZXQgaW5mbyA9IHNoYXJkX2luZm8oYnApO1xuICAgICAgIUNvdW50LmlzX2NvbXBsZXRlKENvdW50cy5nZXQodC5pZCwgaW5mby5jb3VudHMpKTtcbiAgICB9XG4gIH07XG5cbmxldCByZW1vdmVfbWF0Y2hpbmcgPSAodHM6IGxpc3QoVGlsZS50KSwgYnA6IHQpID0+XG4gIExpc3QuZm9sZF9sZWZ0KFxuICAgIChicCwgdDogVGlsZS50KSA9PlxuICAgICAgYnBcbiAgICAgIHw+IExpc3QubWFwKFNlbGVjdGlvbi5tYXAoU2VnbWVudC5yZW1vdmVfbWF0Y2hpbmcodCkpKVxuICAgICAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICBmdW5cbiAgICAgICAgICAgfCBzZWwgd2hlbiAhU2VsZWN0aW9uLmlzX2VtcHR5KHNlbCkgPT4gU29tZShzZWwpXG4gICAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgICAgKSxcbiAgICBicCxcbiAgICB0cyxcbiAgKTtcblxubGV0IHdpbGxfYmFyZiA9ICh0OiBUb2tlbi50LCBicDogdCk6IGJvb2wgPT5cbiAgLyogRG9lcyB0aGUgZmlyc3Qgc2VsZWN0aW9uIGluIHRoZSBiYWNrcGFjayBjb25zaXN0XG4gICAgIG9mIGEgc2luZ2xlIHRva2VuIHdoaWNoIG1hdGNoZXMgdGhlIG9uZSBwcm92aWRlZD8gKi9cbiAgc3dpdGNoIChicCkge1xuICB8IFtdID0+IGZhbHNlXG4gIHwgW3tjb250ZW50OiBbcF0sIF99LCAuLi5fXSA9PlxuICAgIHN3aXRjaCAocCkge1xuICAgIHwgVGlsZSh7c2hhcmRzOiBbaV0sIGxhYmVsLCBffSkgPT5cbiAgICAgIGFzc2VydChpIDwgTGlzdC5sZW5ndGgobGFiZWwpKTtcbiAgICAgIExpc3QubnRoKGxhYmVsLCBpKSA9PSB0O1xuICAgIHwgXyA9PiBmYWxzZVxuICAgIH1cbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbmxldCByZW1vdmVfdW5pX3RpbGVzX3dpdGhfZGVlcF9tYXRjaGVzID0gKGJwOiB0LCBzZWw6IFNlbGVjdGlvbi50KTogdCA9PiB7XG4gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIHByZXZlbnQgaW5jb21wbGV0ZSB0aWxlcyBpbnNpZGUgc2VsZWN0aW9uIHRpbGVzXG4gICAqIGZyb20gYmVpbmcgb3JwaGFuZWQgb24gZGVsZXRpb24sIGUuZy4gaWYgeW91IGRlbGV0ZSBzZWdtZW50IFwiKFspXCJcbiAgICogd2l0aCBcIl1cIiBpbiB0aGUgYmFja3BhY2suICAqL1xuICBsZXQgaWRzID0gU2VnbWVudC5pZHNfb2ZfaW5jb21wbGV0ZV90aWxlc19pbl9iaWRlbGltaXRlZHMoc2VsLmNvbnRlbnQpO1xuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBTZWxlY3Rpb24ue2NvbnRlbnQ6IFtQaWVjZS5UaWxlKHtpZCwgX30pXSwgX30gd2hlbiBMaXN0Lm1lbShpZCwgaWRzKSA9PlxuICAgICAgTm9uZVxuICAgIHwgeCA9PiBTb21lKHgpLFxuICAgIGJwLFxuICApO1xufTtcbiIsIm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzaWJsaW5nczogU2libGluZ3MudCxcbiAgYW5jZXN0b3JzOiBBbmNlc3RvcnMudCxcbn07XG5cbmxldCBlbXB0eSA9IHtzaWJsaW5nczogU2libGluZ3MuZW1wdHksIGFuY2VzdG9yczogQW5jZXN0b3JzLmVtcHR5fTtcblxubGV0IHB1c2ggPSAoZDogRGlyZWN0aW9uLnQsIHA6IFBpZWNlLnQsIHJzOiB0KTogdCA9PiB7XG4gIC4uLnJzLFxuICBzaWJsaW5nczogU2libGluZ3MucHVzaChkLCBwLCBycy5zaWJsaW5ncyksXG59O1xuXG5sZXQgcHJlcGVuZCA9IChkOiBEaXJlY3Rpb24udCwgc2VnOiBTZWdtZW50LnQsIHJzOiB0KTogdCA9PiB7XG4gIGxldCBzaWJsaW5ncyA9IFNpYmxpbmdzLnByZXBlbmQoZCwgc2VnLCBycy5zaWJsaW5ncyk7XG4gIHsuLi5ycywgc2libGluZ3N9O1xufTtcblxubGV0IHBvcCA9IChkOiBEaXJlY3Rpb24udCwgcnM6IHQpOiBvcHRpb24oKFBpZWNlLnQsIHQpKSA9PlxuICBzd2l0Y2ggKFNpYmxpbmdzLnBvcChkLCBycy5zaWJsaW5ncykpIHtcbiAgfCBTb21lKChwLCBzaWJsaW5ncykpID0+IFNvbWUoKHAsIHsuLi5ycywgc2libGluZ3N9KSlcbiAgfCBOb25lID0+XG4gICAgc3dpdGNoIChycy5hbmNlc3RvcnMpIHtcbiAgICB8IFtdID0+IE5vbmVcbiAgICB8IFsoYW5jZXN0b3IsIHNpYmxpbmdzKSwgLi4uYW5jZXN0b3JzXSA9PlxuICAgICAgb3BlbiBPcHRVdGlsLlN5bnRheDtcbiAgICAgIGxldCBzaWJsaW5ncycgPSBBbmNlc3Rvci5kaXNhc3NlbWJsZShhbmNlc3Rvcik7XG4gICAgICBsZXQrIChwLCBzaWJsaW5ncykgPVxuICAgICAgICBTaWJsaW5ncy4ocG9wKGQsIGNvbmNhdChbcnMuc2libGluZ3MsIHNpYmxpbmdzJywgc2libGluZ3NdKSkpO1xuICAgICAgKHAsIHtzaWJsaW5ncywgYW5jZXN0b3JzfSk7XG4gICAgfVxuICB9O1xuXG5sZXQgemlwID0gKH5zZWw9U2VnbWVudC5lbXB0eSwge3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KSA9PlxuICBBbmNlc3RvcnMuemlwKFNpYmxpbmdzLnppcCh+c2VsLCBzaWJsaW5ncyksIGFuY2VzdG9ycyk7XG5cbmxldCBsb2NhbF9pbmNvbXBsZXRlX3RpbGVzID0gKHtzaWJsaW5nczogKHByZSwgc3VmKSwgYW5jZXN0b3JzfTogdCkgPT4ge1xuICBsZXQgc2licyA9XG4gICAgc3dpdGNoIChhbmNlc3RvcnMpIHtcbiAgICB8IFtdID0+IChwcmUsIHN1ZilcbiAgICB8IFsoYSwgXyksIC4uLl9dID0+XG4gICAgICBsZXQgKGwsIHIpID0gQW5jZXN0b3IuY29udGFpbmVyX3NoYXJkcyhhKTtcbiAgICAgIChbbCwgLi4ucHJlXSwgc3VmIEAgW3JdKTtcbiAgICB9O1xuICBTaWJsaW5ncy5pbmNvbXBsZXRlX3RpbGVzKHNpYnMpO1xufTtcblxubGV0IHBhcmVudCA9XG4gICAgKH5zZWw9U2VnbWVudC5lbXB0eSwge3NpYmxpbmdzOiAobF9zaWJzLCByX3NpYnMpLCBhbmNlc3RvcnN9OiB0KVxuICAgIDogb3B0aW9uKFBpZWNlLnQpID0+XG4gIGFuY2VzdG9yc1xuICB8PiBBbmNlc3RvcnMucGFyZW50XG4gIHw+IE9wdGlvbi5tYXAocCA9PiBCYXNlLlRpbGUoQW5jZXN0b3IuemlwKGxfc2licyBAIHNlbCBAIHJfc2licywgcCkpKTtcblxubGV0IGRlbGV0ZV9wYXJlbnQgPSAoe3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KTogdCA9PiB7XG4gIHN3aXRjaCAoYW5jZXN0b3JzKSB7XG4gIHwgW10gPT4ge3NpYmxpbmdzLCBhbmNlc3RvcnN9XG4gIHwgWyhfLCBwX3NpYnMpLCAuLi5hbmNlc3RvcnNdID0+IHtcbiAgICAgIHNpYmxpbmdzOiBTaWJsaW5ncy5jb25jYXQoW3NpYmxpbmdzLCBwX3NpYnNdKSxcbiAgICAgIGFuY2VzdG9ycyxcbiAgICB9XG4gIH07XG59O1xuXG5sZXQgZGlzYXNzZW1ibGUgPSAoe3NpYmxpbmdzLCBhbmNlc3RvcnN9OiB0KTogU2libGluZ3MudCA9PlxuICBTaWJsaW5ncy5jb25jYXQoW3NpYmxpbmdzLCBBbmNlc3RvcnMuZGlzYXNzZW1ibGUoYW5jZXN0b3JzKV0pO1xuXG5sZXQgcmVtb2xkID0gKHtzaWJsaW5ncywgYW5jZXN0b3JzfTogdCk6IHQgPT4ge1xuICBsZXQgcyA9IEFuY2VzdG9ycy5zb3J0KGFuY2VzdG9ycyk7XG4gIGxldCBzaWJsaW5ncyA9IFNpYmxpbmdzLnJlbW9sZChzaWJsaW5ncywgcyk7XG4gIHthbmNlc3RvcnMsIHNpYmxpbmdzfTtcbn07XG5cbmxldCByZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCB7c2libGluZ3MsIGFuY2VzdG9yc306IHQpOiB0ID0+IHtcbiAgLyogRGlyZWN0aW9uIGlzIHNpZGUgb2YgZ3JvdXQgY2FyZXQgd2lsbCBlbmQgdXAgb24gKi9cblxuICBsZXQgYW5jZXN0b3JzID0gQW5jZXN0b3JzLnJlZ3JvdXQoYW5jZXN0b3JzKTtcbiAgbGV0IHNpYmxpbmdzID0ge1xuICAgIGxldCAoKHByZSwgc19sLCB0cmltX2wpLCAodHJpbV9yLCBzX3IsIHN1ZikpID1cbiAgICAgIFNpYmxpbmdzLnJlZ3JvdXQoc2libGluZ3MpO1xuICAgIGxldCAodHJpbV9sLCB0cmltX3IpID0ge1xuICAgICAgb3BlbiBTZWdtZW50LlRyaW07XG4gICAgICBsZXQgKChfLCBnc19sKSwgKF8sIGdzX3IpKSA9ICh0cmltX2wsIHRyaW1fcik7XG4gICAgICBsZXQgKHNlZ19sLCBzZWdfcikgPSAodG9fc2VnKHRyaW1fbCksIHRvX3NlZyh0cmltX3IpKTtcbiAgICAgIHN3aXRjaCAoTGlzdFV0aWwuc3BsaXRfbGFzdF9vcHQoZ3NfbCksIGdzX3IpIHtcbiAgICAgIHwgKFNvbWUoKF8sIGdfbCkpLCBbZ19yLCAuLi5fXSkgPT5cbiAgICAgICAgR3JvdXQuZml0cyhnX2wsIGdfcilcbiAgICAgICAgICAvLyBub3RlOiBhc3N1bWVzIHNpbmdsZSBncm91dCBpbnZhcmlhbnQgaW4gdW4tY2FyZXQtaW50ZXJydXB0ZWQgdHJpbVxuICAgICAgICAgID8gKHdzKHRyaW1fbCksIHdzKHRyaW1fcikpICAvLyh3cyh0cmltX2wpLCBzZWdfcilcbiAgICAgICAgICA6IChcbiAgICAgICAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgICAgICAgfCBMZWZ0ID0+ICh3cyh0cmltX2wpLCBzZWdfcilcbiAgICAgICAgICAgIHwgUmlnaHQgPT4gKHNlZ19sLCB3cyh0cmltX3IpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgIHwgKFNvbWUoKF8sIGcpKSwgW10pID0+XG4gICAgICAgIEdyb3V0LmZpdHNfc2hhcGUoZywgc19yKSA/IChzZWdfbCwgc2VnX3IpIDogKHdzKHRyaW1fbCksIHNlZ19yKVxuICAgICAgfCAoTm9uZSwgW2csIC4uLl9dKSA9PlxuICAgICAgICBHcm91dC5maXRzX3NoYXBlKGcsIHNfbCkgPyAoc2VnX2wsIHNlZ19yKSA6IChzZWdfbCwgd3ModHJpbV9yKSlcbiAgICAgIHwgKE5vbmUsIFtdKSA9PlxuICAgICAgICBOaWIuU2hhcGUuZml0cyhzX2wsIHNfcilcbiAgICAgICAgICA/IChzZWdfbCwgc2VnX3IpXG4gICAgICAgICAgLy8gY2FuIG1vZHVsYXRlIHdpdGggZGlyZWN0aW9uYWwgYXJnXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgICAgICAgIHwgTGVmdCA9PlxuICAgICAgICAgICAgICBsZXQgdHJpbSA9IGFkZF9ncm91dCh+ZD1SaWdodCwgc19yLCB0cmltX3IpO1xuICAgICAgICAgICAgICAoc2VnX2wsIHRvX3NlZyh0cmltKSk7XG4gICAgICAgICAgICB8IFJpZ2h0ID0+XG4gICAgICAgICAgICAgIGxldCB0cmltID0gYWRkX2dyb3V0KH5kPUxlZnQsIHNfbCwgdHJpbV9sKTtcbiAgICAgICAgICAgICAgKHRvX3NlZyh0cmltKSwgc2VnX3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgIH07XG4gICAgfTtcbiAgICAocHJlIEAgdHJpbV9sLCB0cmltX3IgQCBzdWYpO1xuICB9O1xuICB7c2libGluZ3MsIGFuY2VzdG9yc307XG59O1xuXG5sZXQgcHJlcGVuZF9nZW5lcmF0aW9uID0gKChhLCBzaWJzKTogQW5jZXN0b3JzLmdlbmVyYXRpb24sIHJzOiB0KTogdCA9PiB7XG4gIHNpYmxpbmdzOiBTaWJsaW5ncy5lbXB0eSxcbiAgYW5jZXN0b3JzOiBbKGEsIFNpYmxpbmdzLmNvbmNhdChbc2licywgcnMuc2libGluZ3NdKSksIC4uLnJzLmFuY2VzdG9yc10sXG59O1xubGV0IHByZXBlbmRfc2libGluZ3MgPSAoc2liczogU2libGluZ3MudCwgcnM6IHQpOiB0ID0+IHtcbiAgLi4ucnMsXG4gIHNpYmxpbmdzOiBTaWJsaW5ncy5jb25jYXQoW3NpYnMsIHJzLnNpYmxpbmdzXSksXG59O1xuXG5sZXQgY29uY2F0ID0gKHJzczogbGlzdCh0KSk6IHQgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgIChyczogdCwgY2F0OiB0KSA9PlxuICAgICAgTGlzdC5mb2xkX3JpZ2h0KHByZXBlbmRfZ2VuZXJhdGlvbiwgcnMuYW5jZXN0b3JzLCBjYXQpXG4gICAgICB8PiBwcmVwZW5kX3NpYmxpbmdzKHJzLnNpYmxpbmdzKSxcbiAgICByc3MsXG4gICAgZW1wdHksXG4gICk7XG5cbmxldCByZWFzc2VtYmxlX3BhcmVudCA9IChyczogdCk6IHQgPT5cbiAgc3dpdGNoIChycy5hbmNlc3RvcnMpIHtcbiAgfCBbXSA9PiByc1xuICB8IFsoYSwgc2licyksIC4uLmFuY3NdID0+XG4gICAgbGV0IChsLCByKSA9XG4gICAgICBycy5zaWJsaW5nc1xuICAgICAgfD4gU2libGluZ3Muc3BsaXRfYnlfbWF0Y2hpbmcoYS5pZClcbiAgICAgIHw+IFR1cGxlVXRpbC5tYXAyKEFiYS50cmltKTtcbiAgICBsZXQgZmxhdHRlbl9tYXRjaCA9XG4gICAgICBBYmEuZm9sZF9yaWdodChcbiAgICAgICAgKHQ6IFRpbGUudCwga2lkLCAoc2hhcmRzLCBraWRzKSkgPT5cbiAgICAgICAgICBBYmEubWsodC5zaGFyZHMgQCBzaGFyZHMsIHQuY2hpbGRyZW4gQCBba2lkLCAuLi5raWRzXSksXG4gICAgICAgICh0OiBUaWxlLnQpID0+IEFiYS5tayh0LnNoYXJkcywgdC5jaGlsZHJlbiksXG4gICAgICApO1xuICAgIGxldCAoYSwgbCkgPVxuICAgICAgc3dpdGNoIChsKSB7XG4gICAgICB8IE5vbmUgPT4gKGEsIGZzdChycy5zaWJsaW5ncykpXG4gICAgICB8IFNvbWUoKG91dGVyX2wsIG1hdGNoX2wsIGlubmVyX2wpKSA9PlxuICAgICAgICBsZXQgKHNoYXJkc19sLCBraWRzX2wpID0gZmxhdHRlbl9tYXRjaChtYXRjaF9sKTtcbiAgICAgICAgbGV0IGEgPSB7XG4gICAgICAgICAgLi4uYSxcbiAgICAgICAgICBzaGFyZHM6IGEuc2hhcmRzIHw+IFBhaXJVdGlsLm1hcF9mc3Qoc3MgPT4gc3MgQCBzaGFyZHNfbCksXG4gICAgICAgICAgY2hpbGRyZW46XG4gICAgICAgICAgICBhLmNoaWxkcmVuXG4gICAgICAgICAgICB8PiBQYWlyVXRpbC5tYXBfZnN0KGtpZHMgPT4ga2lkcyBAIFtvdXRlcl9sLCAuLi5raWRzX2xdKSxcbiAgICAgICAgfTtcbiAgICAgICAgKGEsIGlubmVyX2wpO1xuICAgICAgfTtcbiAgICBsZXQgKGEsIHIpID1cbiAgICAgIHN3aXRjaCAocikge1xuICAgICAgfCBOb25lID0+IChhLCBzbmQocnMuc2libGluZ3MpKVxuICAgICAgfCBTb21lKChpbm5lcl9yLCBtYXRjaF9yLCBvdXRlcl9yKSkgPT5cbiAgICAgICAgbGV0IChzaGFyZHNfciwga2lkc19yKSA9IGZsYXR0ZW5fbWF0Y2gobWF0Y2hfcik7XG4gICAgICAgIGxldCBhID0ge1xuICAgICAgICAgIC4uLmEsXG4gICAgICAgICAgc2hhcmRzOiBhLnNoYXJkcyB8PiBQYWlyVXRpbC5tYXBfc25kKHNzID0+IHNoYXJkc19yIEAgc3MpLFxuICAgICAgICAgIGNoaWxkcmVuOlxuICAgICAgICAgICAgYS5jaGlsZHJlblxuICAgICAgICAgICAgfD4gUGFpclV0aWwubWFwX3NuZChraWRzID0+IFtvdXRlcl9yLCAuLi5raWRzX3JdIEAga2lkcyksXG4gICAgICAgIH07XG4gICAgICAgIChhLCBpbm5lcl9yKTtcbiAgICAgIH07XG4gICAge3NpYmxpbmdzOiAobCwgciksIGFuY2VzdG9yczogWyhhLCBzaWJzKSwgLi4uYW5jc119O1xuICB9O1xuXG5sZXQgcmVhc3NlbWJsZV9zaWJsaW5ncyA9IChyczogdCkgPT4ge1xuICAuLi5ycyxcbiAgc2libGluZ3M6IFNpYmxpbmdzLnJlYXNzZW1ibGUocnMuc2libGluZ3MpLFxufTtcblxubGV0IHJlYXNzZW1ibGUgPSAocnM6IHQpOiB0ID0+IHtcbiAgbGV0IHJlYyBnbyA9IChyczogdCk6IHQgPT5cbiAgICBzd2l0Y2ggKFNlZ21lbnQuaW5jb21wbGV0ZV90aWxlcyhzbmQocnMuc2libGluZ3MpKSkge1xuICAgIHwgW10gPT4gcnNcbiAgICB8IFt0LCAuLi5fXSA9PlxuICAgICAgc3dpdGNoIChcbiAgICAgICAgcnMuc2libGluZ3NcbiAgICAgICAgfD4gU2libGluZ3Muc3BsaXRfYnlfbWF0Y2hpbmcodC5pZClcbiAgICAgICAgfD4gVHVwbGVVdGlsLm1hcDIoQWJhLnRyaW0pXG4gICAgICApIHtcbiAgICAgIHwgKF8sIE5vbmUpID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZVwiKVxuICAgICAgfCAoTm9uZSwgU29tZSgoaW5uZXJfciwgbWF0Y2hfciwgb3V0ZXJfcikpKSA9PlxuICAgICAgICBsZXQge3NpYmxpbmdzOiAocHJlLCBzdWYpLCBhbmNlc3RvcnN9ID1cbiAgICAgICAgICBnbyh7Li4ucnMsIHNpYmxpbmdzOiAoZnN0KHJzLnNpYmxpbmdzKSwgb3V0ZXJfcil9KTtcbiAgICAgICAgbGV0IHQgPSBUaWxlLnJlYXNzZW1ibGUobWF0Y2hfcik7XG4gICAgICAgIGxldCBzdWYgPSBTZWdtZW50LmNvbmNhdChbaW5uZXJfciwgW1RpbGUudG9fcGllY2UodCksIC4uLnN1Zl1dKTtcbiAgICAgICAge3NpYmxpbmdzOiAocHJlLCBzdWYpLCBhbmNlc3RvcnN9O1xuICAgICAgfCAoXG4gICAgICAgICAgU29tZSgob3V0ZXJfbCwgbWF0Y2hfbCwgaW5uZXJfbCkpLFxuICAgICAgICAgIFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSxcbiAgICAgICAgKSA9PlxuICAgICAgICBsZXQgcnMgPSBnbyh7Li4ucnMsIHNpYmxpbmdzOiAob3V0ZXJfbCwgb3V0ZXJfcil9KTtcbiAgICAgICAgbGV0IGFuY2VzdG9ycyA9IFtcbiAgICAgICAgICAoQW5jZXN0b3IucmVhc3NlbWJsZShtYXRjaF9sLCBtYXRjaF9yKSwgcnMuc2libGluZ3MpLFxuICAgICAgICAgIC4uLnJzLmFuY2VzdG9ycyxcbiAgICAgICAgXTtcbiAgICAgICAgbGV0IHNpYmxpbmdzID0gKGlubmVyX2wsIGlubmVyX3IpO1xuICAgICAgICB7YW5jZXN0b3JzLCBzaWJsaW5nc307XG4gICAgICB9XG4gICAgfTtcbiAgcnMgfD4gcmVhc3NlbWJsZV9zaWJsaW5ncyB8PiByZWFzc2VtYmxlX3BhcmVudCB8PiBnbztcbn07XG5cbi8vIGxldCByZWMgcmVhc3NlbWJsZSA9IChyczogdCk6IHQgPT4ge1xuLy8gICBsZXQgc2libGluZ3MgPSBTaWJsaW5ncy5yZWFzc2VtYmxlKHJzLnNpYmxpbmdzKTtcbi8vICAgc3dpdGNoIChTaWJsaW5ncy5pbmNvbXBsZXRlX3RpbGVzKHNpYmxpbmdzKSkge1xuLy8gICB8IChbXSwgXylcbi8vICAgfCAoXywgW10pID0+IHsuLi5ycywgc2libGluZ3N9XG4vLyAgIHwgKFtfLCAuLi5fXSwgW3QsIC4uLl9dKSA9PlxuLy8gICAgIHN3aXRjaCAoXG4vLyAgICAgICBzaWJsaW5nc1xuLy8gICAgICAgfD4gU2libGluZ3Muc3BsaXRfYnlfbWF0Y2hpbmcodC5pZClcbi8vICAgICAgIHw+IFR1cGxlVXRpbC5tYXAyKEFiYS50cmltKVxuLy8gICAgICkge1xuLy8gICAgIHwgKE5vbmUsIE5vbmUpID0+IHsuLi5ycywgc2libGluZ3N9XG4vLyAgICAgfCAoTm9uZSwgU29tZSgoaW5uZXJfciwgbWF0Y2hfciwgb3V0ZXJfcikpKSA9PlxuLy8gICAgICAgbGV0IHtzaWJsaW5nczogKGwsIHIpLCBhbmNlc3RvcnN9ID1cbi8vICAgICAgICAgcmVhc3NlbWJsZSh7Li4ucnMsIHNpYmxpbmdzOiAoZnN0KHNpYmxpbmdzKSwgb3V0ZXJfcil9KTtcbi8vICAgICAgIHtcbi8vICAgICAgICAgc2libGluZ3M6IChcbi8vICAgICAgICAgICBsLFxuLy8gICAgICAgICAgIFNlZ21lbnQuY29uY2F0KFtpbm5lcl9yLCBBbmNlc3Rvci5NYXRjaC5TdWZmaXguam9pbihtYXRjaF9yKSwgcl0pLFxuLy8gICAgICAgICApLFxuLy8gICAgICAgICBhbmNlc3RvcnMsXG4vLyAgICAgICB9O1xuLy8gICAgIHwgKFNvbWUoKGlubmVyX2wsIG1hdGNoX2wsIG91dGVyX2wpKSwgTm9uZSkgPT5cbi8vICAgICAgIGxldCB7c2libGluZ3M6IChsLCByKSwgYW5jZXN0b3JzfSA9XG4vLyAgICAgICAgIHJlYXNzZW1ibGUoey4uLnJzLCBzaWJsaW5nczogKG91dGVyX2wsIHNuZChycy5zaWJsaW5ncykpfSk7XG4vLyAgICAgICB7XG4vLyAgICAgICAgIHNpYmxpbmdzOiAoXG4vLyAgICAgICAgICAgU2VnbWVudC5jb25jYXQoW2lubmVyX2wsIEFuY2VzdG9yLk1hdGNoLlN1ZmZpeC5qb2luKG1hdGNoX2wpLCBsXSksXG4vLyAgICAgICAgICAgcixcbi8vICAgICAgICAgKSxcbi8vICAgICAgICAgYW5jZXN0b3JzLFxuLy8gICAgICAgfTtcbi8vICAgICB8IChTb21lKChpbm5lcl9sLCBtYXRjaF9sLCBvdXRlcl9sKSksIFNvbWUoKGlubmVyX3IsIG1hdGNoX3IsIG91dGVyX3IpKSkgPT5cbi8vICAgICAgIGxldCBtYXRjaCA9IChtYXRjaF9sLCBtYXRjaF9yKTtcbi8vICAgICAgIGxldCByc19pbm5lciA9XG4vLyAgICAgICAgIHN3aXRjaCAoQW5jZXN0b3IuTWF0Y2guY29tcGxldGUobWF0Y2gpKSB7XG4vLyAgICAgICAgIHwgTm9uZSA9PiB7XG4vLyAgICAgICAgICAgICBzaWJsaW5nczpcbi8vICAgICAgICAgICAgICAgU2libGluZ3MuY29uY2F0KFtcbi8vICAgICAgICAgICAgICAgICAoaW5uZXJfbCwgaW5uZXJfciksXG4vLyAgICAgICAgICAgICAgICAgQW5jZXN0b3IuTWF0Y2guam9pbihtYXRjaCksXG4vLyAgICAgICAgICAgICAgIF0pLFxuLy8gICAgICAgICAgICAgYW5jZXN0b3JzOiBBbmNlc3RvcnMuZW1wdHksXG4vLyAgICAgICAgICAgfVxuLy8gICAgICAgICB8IFNvbWUoYSkgPT4ge1xuLy8gICAgICAgICAgICAgc2libGluZ3M6IChpbm5lcl9sLCBpbm5lcl9yKSxcbi8vICAgICAgICAgICAgIGFuY2VzdG9yczogWyhhLCBTaWJsaW5ncy5lbXB0eSldLFxuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfTtcbi8vICAgICAgIGxldCByc19vdXRlciA9IHJlYXNzZW1ibGUoey4uLnJzLCBzaWJsaW5nczogKG91dGVyX2wsIG91dGVyX3IpfSk7XG4vLyAgICAgICBjb25jYXQoW3JzX2lubmVyLCByc19vdXRlcl0pO1xuLy8gICAgIH1cbi8vICAgfTtcbi8vIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubW9kdWxlIENhcmV0ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBPdXRlclxuICAgIHwgSW5uZXIoaW50LCBpbnQpO1xuXG4gIGxldCBkZWNyZW1lbnQ6IHQgPT4gdCA9XG4gICAgZnVuXG4gICAgfCBPdXRlclxuICAgIHwgSW5uZXIoXywgMCkgPT4gT3V0ZXJcbiAgICB8IElubmVyKGQsIGMpID0+IElubmVyKGQsIGMgLSAxKTtcblxuICBsZXQgb2Zmc2V0OiB0ID0+IGludCA9XG4gICAgZnVuXG4gICAgfCBPdXRlciA9PiAwXG4gICAgfCBJbm5lcihfLCBjKSA9PiBjICsgMTtcbn07XG5cbi8vIGFzc3VtaW5nIHNpbmdsZSBiYWNrcGFjaywgc2hhcmRzIG1heSBhcHBlYXIgaW4gc2VsZWN0aW9uLCBiYWNrcGFjaywgb3Igc2libGluZ3NcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb24udCxcbiAgYmFja3BhY2s6IEJhY2twYWNrLnQsXG4gIHJlbGF0aXZlczogUmVsYXRpdmVzLnQsXG4gIGNhcmV0OiBDYXJldC50LFxuICAvLyBjb2xfdGFyZ2V0OiBpbnQsXG59O1xuXG5sZXQgaW5pdDogdW5pdCA9PiB0ID1cbiAgKCkgPT4ge1xuICAgIHNlbGVjdGlvbjogU2VsZWN0aW9uLm1rKFtdKSxcbiAgICBiYWNrcGFjazogW10sXG4gICAgcmVsYXRpdmVzOiB7XG4gICAgICBzaWJsaW5nczogKFtdLCBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldKSxcbiAgICAgIGFuY2VzdG9yczogW10sXG4gICAgfSxcbiAgICBjYXJldDogT3V0ZXIsXG4gICAgLy8gY29sX3RhcmdldDogMCxcbiAgfTtcblxubGV0IG5leHRfYmxhbmsgPSBfID0+IElkLm1rKCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY2h1bmtpbmVzcyA9XG4gIHwgQnlDaGFyXG4gIHwgTW9ub0J5Q2hhclxuICB8IEJ5VG9rZW47XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGxhbmFyID1cbiAgfCBVcFxuICB8IERvd25cbiAgfCBMZWZ0KGNodW5raW5lc3MpXG4gIHwgUmlnaHQoY2h1bmtpbmVzcyk7XG5cbmxldCBmcm9tX3BsYW5lOiBwbGFuYXIgPT4gRGlyZWN0aW9uLnQgPVxuICBmdW5cbiAgfCBMZWZ0KF8pID0+IExlZnRcbiAgfCBSaWdodChfKSA9PiBSaWdodFxuICB8IFVwID0+IExlZnRcbiAgfCBEb3duID0+IFJpZ2h0O1xuXG5sZXQgdXBkYXRlX2NhcmV0ID0gKGY6IENhcmV0LnQgPT4gQ2FyZXQudCwgejogdCk6IHQgPT4ge1xuICAuLi56LFxuICBjYXJldDogZih6LmNhcmV0KSxcbn07XG5sZXQgc2V0X2NhcmV0ID0gKGNhcmV0OiBDYXJldC50KTogKHQgPT4gdCkgPT4gdXBkYXRlX2NhcmV0KF8gPT4gY2FyZXQpO1xuXG5sZXQgdXBkYXRlX3JlbGF0aXZlcyA9IChmOiBSZWxhdGl2ZXMudCA9PiBSZWxhdGl2ZXMudCwgejogdCk6IHQgPT4ge1xuICAuLi56LFxuICByZWxhdGl2ZXM6IGYoei5yZWxhdGl2ZXMpLFxufTtcblxubGV0IHVwZGF0ZV9zaWJsaW5nczogKFNpYmxpbmdzLnQgPT4gU2libGluZ3MudCwgdCkgPT4gdCA9XG4gIGYgPT4gdXBkYXRlX3JlbGF0aXZlcyhycyA9PiB7Li4ucnMsIHNpYmxpbmdzOiBmKHJzLnNpYmxpbmdzKX0pO1xuXG5sZXQgcGFyZW50ID0gKHo6IHQpOiBvcHRpb24oUGllY2UudCkgPT5cbiAgUmVsYXRpdmVzLnBhcmVudCh+c2VsPXouc2VsZWN0aW9uLmNvbnRlbnQsIHoucmVsYXRpdmVzKTtcblxubGV0IGRlbGV0ZV9wYXJlbnQgPSAoejogdCk6IHQgPT4ge1xuICAuLi56LFxuICByZWxhdGl2ZXM6IFJlbGF0aXZlcy5kZWxldGVfcGFyZW50KHoucmVsYXRpdmVzKSxcbn07XG5cbmxldCB6aXAgPSAoejogdCk6IFNlZ21lbnQudCA9PlxuICBSZWxhdGl2ZXMuemlwKH5zZWw9ei5zZWxlY3Rpb24uY29udGVudCwgei5yZWxhdGl2ZXMpO1xuXG5sZXQgdW56aXAgPSAoc2VnOiBTZWdtZW50LnQpOiB0ID0+IHtcbiAgc2VsZWN0aW9uOiBTZWxlY3Rpb24ubWsoW10pLFxuICBiYWNrcGFjazogW10sXG4gIHJlbGF0aXZlczoge1xuICAgIHNpYmxpbmdzOiAoc2VnLCBbXSksXG4gICAgYW5jZXN0b3JzOiBbXSxcbiAgfSxcbiAgY2FyZXQ6IE91dGVyLFxufTtcblxubGV0IHNpYnNfd2l0aF9zZWwgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgc2VsZWN0aW9uOiB7Y29udGVudCwgZm9jdXMsIF99LFxuICAgICAgICByZWxhdGl2ZXM6IHtzaWJsaW5nczogKGxfc2licywgcl9zaWJzKSwgX30sXG4gICAgICAgIF8sXG4gICAgICB9OiB0LFxuICAgIClcbiAgICA6IFNpYmxpbmdzLnQgPT5cbiAgc3dpdGNoIChmb2N1cykge1xuICB8IExlZnQgPT4gKGxfc2licywgY29udGVudCBAIHJfc2licylcbiAgfCBSaWdodCA9PiAobF9zaWJzIEAgY29udGVudCwgcl9zaWJzKVxuICB9O1xuXG5sZXQgcG9wX2JhY2twYWNrID0gKHo6IHQpID0+XG4gIEJhY2twYWNrLnBvcChSZWxhdGl2ZXMubG9jYWxfaW5jb21wbGV0ZV90aWxlcyh6LnJlbGF0aXZlcyksIHouYmFja3BhY2spO1xuXG5sZXQgbGVmdF9uZWlnaGJvcl9tb25vdGlsZTogU2libGluZ3MudCA9PiBvcHRpb24oVG9rZW4udCkgPVxuICBzID0+IHMgfD4gU2libGluZ3MubGVmdF9uZWlnaGJvciB8PiBPcHRVdGlsLmFuZF90aGVuKFBpZWNlLm1vbm90aWxlKTtcblxubGV0IHJpZ2h0X25laWdoYm9yX21vbm90aWxlOiBTaWJsaW5ncy50ID0+IG9wdGlvbihUb2tlbi50KSA9XG4gIHMgPT4gcyB8PiBTaWJsaW5ncy5yaWdodF9uZWlnaGJvciB8PiBPcHRVdGlsLmFuZF90aGVuKFBpZWNlLm1vbm90aWxlKTtcblxubGV0IG5laWdoYm9yX21vbm90aWxlczogU2libGluZ3MudCA9PiAob3B0aW9uKFRva2VuLnQpLCBvcHRpb24oVG9rZW4udCkpID1cbiAgcyA9PiAobGVmdF9uZWlnaGJvcl9tb25vdGlsZShzKSwgcmlnaHRfbmVpZ2hib3JfbW9ub3RpbGUocykpO1xuXG5sZXQgcmVncm91dCA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IHQgPT4ge1xuICBhc3NlcnQoU2VsZWN0aW9uLmlzX2VtcHR5KHouc2VsZWN0aW9uKSk7XG4gIGxldCByZWxhdGl2ZXMgPSBSZWxhdGl2ZXMucmVncm91dChkLCB6LnJlbGF0aXZlcyk7XG4gIHsuLi56LCByZWxhdGl2ZXN9O1xufTtcblxubGV0IHJlbW9sZCA9ICh6OiB0KTogdCA9PiB7XG4gIGFzc2VydChTZWxlY3Rpb24uaXNfZW1wdHkoei5zZWxlY3Rpb24pKTtcbiAgey4uLnosIHJlbGF0aXZlczogUmVsYXRpdmVzLnJlbW9sZCh6LnJlbGF0aXZlcyl9O1xufTtcblxubGV0IHJlbW9sZF9yZWdyb3V0ID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogdCA9PiB6IHw+IHJlbW9sZCB8PiByZWdyb3V0KGQpO1xuXG5sZXQgY2xlYXJfdW5wYXJzZWRfYnVmZmVyID0gKHo6IHQpID0+XG4gIHN3aXRjaCAoei5zZWxlY3Rpb24ubW9kZSkge1xuICB8IEJ1ZmZlcihVbnBhcnNlZCkgPT4gey4uLnosIHNlbGVjdGlvbjogU2VsZWN0aW9uLmVtcHR5fVxuICB8IF8gPT4gelxuICB9O1xuXG5sZXQgdW5zZWxlY3QgPSAofmVyYXNlX2J1ZmZlcj1mYWxzZSwgejogdCk6IHQgPT4ge1xuICAvKiBOT1RFKGFuZHJldyk6IEVyYXNlIGJ1ZmZlciBmbGFnIG9ubHkgYXBwbGllcyB0byB1bnBhcnNlZCBidWZmZXIsXG4gICAqIHRoYXQgaXMsIHRoZSBidWZmZXIgc3R5bGUgdGhhdCBqdXN0IGNvbnRhaW5zIGEgc2luZ2xlIGZsYXQgdG9rZW4uXG4gICAqIEVyYXNpbmcgYSBidWZmZXIgdGhlIGNvbnRhaW5zIGFyYml0cmFyeSB0aWxlcyB3b3VsZCBiZSBtb3JlIGNvbXBsZXhcbiAgICogYXMgd2UgY2FuJ3QganVzdCBlbXB0eSB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgcmVncm91dGluZyAqL1xuICBsZXQgeiA9IGVyYXNlX2J1ZmZlciA/IGNsZWFyX3VucGFyc2VkX2J1ZmZlcih6KSA6IHo7XG4gIGxldCByZWxhdGl2ZXMgPVxuICAgIHoucmVsYXRpdmVzXG4gICAgfD4gUmVsYXRpdmVzLnByZXBlbmQoei5zZWxlY3Rpb24uZm9jdXMsIHouc2VsZWN0aW9uLmNvbnRlbnQpXG4gICAgfD4gUmVsYXRpdmVzLnJlYXNzZW1ibGU7XG4gIGxldCBzZWxlY3Rpb24gPSBTZWxlY3Rpb24uZW1wdHk7XG4gIHsuLi56LCBzZWxlY3Rpb24sIHJlbGF0aXZlc307XG59O1xubGV0IHVuc2VsZWN0X2FuZF96aXAgPSAofmVyYXNlX2J1ZmZlcj1mYWxzZSwgejogdCk6IFNlZ21lbnQudCA9PlxuICB6IHw+IHVuc2VsZWN0KH5lcmFzZV9idWZmZXIpIHw+IHppcDtcblxubGV0IHVwZGF0ZV9zZWxlY3Rpb24gPSAoc2VsZWN0aW9uOiBTZWxlY3Rpb24udCwgejogdCk6IChTZWxlY3Rpb24udCwgdCkgPT4ge1xuICBsZXQgb2xkID0gei5zZWxlY3Rpb247XG4gIC8vIHVzZWQgdG8gYmUgbmVjZXNzYXJ5IHRvIHVuc2VsZWN0IHdoZW4gc2VsZWN0aW9uIHVwZGF0ZVxuICAvLyBpbmNsdWRlZCByZW1vbGQvcmVncm91dCwgbm93IG5vIGxvbmdlciBuZWNlc3NhcnkgaWYgbmVlZHNcbiAgLy8gdG8gYmUgY2hhbmdlZCBidXQga2VlcGluZyBmb3Igbm93IHRvIG1pbmltaXplIGNoYW5nZVxuICBsZXQgeiA9IHVuc2VsZWN0KHsuLi56LCBzZWxlY3Rpb259KTtcbiAgKG9sZCwgeik7XG59O1xuXG5sZXQgcHV0X3NlbGVjdGlvbiA9IChzZWw6IFNlbGVjdGlvbi50LCB6OiB0KTogdCA9PlxuICBzbmQodXBkYXRlX3NlbGVjdGlvbihzZWwsIHopKTtcblxubGV0IGdyb3dfc2VsZWN0aW9uID0gKHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICBsZXQrIChwLCByZWxhdGl2ZXMpID0gUmVsYXRpdmVzLnBvcCh6LnNlbGVjdGlvbi5mb2N1cywgei5yZWxhdGl2ZXMpO1xuICBsZXQgc2VsZWN0aW9uID0gU2VsZWN0aW9uLnB1c2gocCwgei5zZWxlY3Rpb24pO1xuICB7Li4ueiwgc2VsZWN0aW9uLCByZWxhdGl2ZXN9O1xufTtcblxuLy8gdG9nZ2xlcyBmb2N1cyBhbmQgZ3Jvd3MgaWYgc2VsZWN0aW9uIGlzIGVtcHR5XG5sZXQgc2hyaW5rX3NlbGVjdGlvbiA9ICh6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgc3dpdGNoIChTZWxlY3Rpb24ucG9wKHouc2VsZWN0aW9uKSkge1xuICB8IE5vbmUgPT5cbiAgICBsZXQgc2VsZWN0aW9uID0gU2VsZWN0aW9uLnRvZ2dsZV9mb2N1cyh6LnNlbGVjdGlvbik7XG4gICAgZ3Jvd19zZWxlY3Rpb24oey4uLnosIHNlbGVjdGlvbn0pO1xuICB8IFNvbWUoKHAsIHNlbGVjdGlvbikpID0+XG4gICAgbGV0IHJlbGF0aXZlcyA9XG4gICAgICB6LnJlbGF0aXZlc1xuICAgICAgfD4gUmVsYXRpdmVzLnB1c2goc2VsZWN0aW9uLmZvY3VzLCBwKVxuICAgICAgfD4gUmVsYXRpdmVzLnJlYXNzZW1ibGU7XG4gICAgU29tZSh7Li4ueiwgc2VsZWN0aW9uLCByZWxhdGl2ZXN9KTtcbiAgfTtcbn07XG5cbmxldCB0b2dnbGVfZm9jdXMgPSAoejogdCk6IHQgPT4ge1xuICAuLi56LFxuICBzZWxlY3Rpb246IFNlbGVjdGlvbi50b2dnbGVfZm9jdXMoei5zZWxlY3Rpb24pLFxufTtcblxubGV0IGRpcmVjdGlvbmFsX3Vuc2VsZWN0ID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogdCA9PiB7XG4gIGxldCBzZWxlY3Rpb24gPSB7Li4uei5zZWxlY3Rpb24sIGZvY3VzOiBEaXJlY3Rpb24udG9nZ2xlKGQpfTtcbiAgdW5zZWxlY3Qoey4uLnosIHNlbGVjdGlvbn0pO1xufTtcblxubGV0IG1vdmUgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgaWYgKFNlbGVjdGlvbi5pc19lbXB0eSh6LnNlbGVjdGlvbikpIHtcbiAgICAvLyBsZXQgYmFsYW5jZWQgPSAhQmFja3BhY2suaXNfYmFsYW5jZWQoei5iYWNrcGFjayk7XG4gICAgbGV0KyAocCwgcmVsYXRpdmVzKSA9IFJlbGF0aXZlcy5wb3AoZCwgei5yZWxhdGl2ZXMpO1xuICAgIGxldCByZWxhdGl2ZXMgPVxuICAgICAgcmVsYXRpdmVzXG4gICAgICB8PiBSZWxhdGl2ZXMucHVzaChEaXJlY3Rpb24udG9nZ2xlKGQpLCBwKVxuICAgICAgfD4gUmVsYXRpdmVzLnJlYXNzZW1ibGU7XG4gICAgey4uLnosIHJlbGF0aXZlc307XG4gIH0gZWxzZSB7XG4gICAgU29tZShkaXJlY3Rpb25hbF91bnNlbGVjdChkLCB6KSk7XG4gIH07XG5cbmxldCBzZWxlY3QgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgZCA9PSB6LnNlbGVjdGlvbi5mb2N1cyA/IGdyb3dfc2VsZWN0aW9uKHopIDogc2hyaW5rX3NlbGVjdGlvbih6KTtcblxubGV0IHBpY2tfdXAgPSAoejogdCk6IHQgPT4ge1xuICBsZXQgKHNlbGVjdGVkLCB6KSA9IHVwZGF0ZV9zZWxlY3Rpb24oU2VsZWN0aW9uLmVtcHR5LCB6KTtcbiAgbGV0IHNlbGVjdGlvbiA9XG4gICAgc2VsZWN0ZWQuY29udGVudFxuICAgIHw+IFNlZ21lbnQudHJpbV9ncm91dF9hcm91bmRfc2Vjb25kYXJ5KExlZnQpXG4gICAgfD4gU2VnbWVudC50cmltX2dyb3V0X2Fyb3VuZF9zZWNvbmRhcnkoUmlnaHQpXG4gICAgfD4gU2VsZWN0aW9uLm1rO1xuICBTZWdtZW50LnRpbGVzKHNlbGVjdGlvbi5jb250ZW50KVxuICB8PiBMaXN0Lm1hcCgodDogVGlsZS50KSA9PiB0LmlkKVxuICB8PiBFZmZlY3Quc190b3VjaDtcbiAgbGV0IGJhY2twYWNrID0gQmFja3BhY2sucHVzaChzZWxlY3Rpb24sIHouYmFja3BhY2spO1xuICB7Li4ueiwgYmFja3BhY2t9O1xufTtcblxubGV0IGRlc3RydWN0ID0gKH5kZXN0cm95X2tpZHM9dHJ1ZSwgejogdCk6IHQgPT4ge1xuICBsZXQgYmFja3BhY2sgPVxuICAgIEJhY2twYWNrLnJlbW92ZV91bmlfdGlsZXNfd2l0aF9kZWVwX21hdGNoZXMoei5iYWNrcGFjaywgei5zZWxlY3Rpb24pO1xuICBsZXQgKHNlbGVjdGVkLCB6KSA9IHVwZGF0ZV9zZWxlY3Rpb24oU2VsZWN0aW9uLmVtcHR5LCB6KTtcbiAgbGV0ICh0b19waWNrX3VwLCB0b19yZW1vdmUpID1cbiAgICBTZWdtZW50LmluY29tcGxldGVfdGlsZXMoc2VsZWN0ZWQuY29udGVudClcbiAgICB8PiBMaXN0LnBhcnRpdGlvbih0ID0+XG4gICAgICAgICBTaWJsaW5ncy5jb250YWluc19tYXRjaGluZyh0LCB6LnJlbGF0aXZlcy5zaWJsaW5ncylcbiAgICAgICAgIHx8IEFuY2VzdG9ycy5wYXJlbnRfbWF0Y2hlcyh0LCB6LnJlbGF0aXZlcy5hbmNlc3RvcnMpXG4gICAgICAgKTtcbiAgLyogSWYgZmxhZyBpcyBzZXQsIGJyZWFrIHVwIHRpbGVzIGFuZCByZW1vdmUgY2hpbGRyZW4gKi9cbiAgbGV0IHRvX3BpY2tfdXAgPVxuICAgIGRlc3Ryb3lfa2lkc1xuICAgICAgPyBMaXN0Lm1hcChUaWxlLmRpc2ludGVncmF0ZSwgdG9fcGlja191cCkgfD4gTGlzdC5mbGF0dGVuIDogdG9fcGlja191cDtcbiAgRWZmZWN0LnNfdG91Y2goTGlzdC5tYXAoKHQ6IFRpbGUudCkgPT4gdC5pZCwgdG9fcGlja191cCkpO1xuICBsZXQgYmFja3BhY2sgPVxuICAgIGJhY2twYWNrXG4gICAgfD4gQmFja3BhY2sucmVtb3ZlX21hdGNoaW5nKHRvX3JlbW92ZSlcbiAgICB8PiBCYWNrcGFjay5wdXNoX3MoXG4gICAgICAgICB0b19waWNrX3VwIHw+IExpc3QubWFwKFNlZ21lbnQub2ZfdGlsZSkgfD4gTGlzdC5tYXAoU2VsZWN0aW9uLm1rKSxcbiAgICAgICApO1xuICB7Li4ueiwgYmFja3BhY2t9O1xufTtcblxubGV0IGRlbGV0ZSA9IChkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PlxuICB6IHw+IHNlbGVjdChkKSB8PiBPcHRpb24ubWFwKGRlc3RydWN0KTtcblxubGV0IHB1dF9kb3duID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgbGV0IHogPSBkZXN0cnVjdCh6KTtcbiAgbGV0KiAoXywgcG9wcGVkLCBiYWNrcGFjaykgPSBwb3BfYmFja3BhY2soeik7XG4gIFNlZ21lbnQudGlsZXMocG9wcGVkLmNvbnRlbnQpXG4gIHw+IExpc3QubWFwKCh0OiBUaWxlLnQpID0+IHQuaWQpXG4gIHw+IEVmZmVjdC5zX3RvdWNoO1xuICBsZXQgeiA9IHsuLi56LCBiYWNrcGFja30gfD4gcHV0X3NlbGVjdGlvbihwb3BwZWQpIHw+IHVuc2VsZWN0O1xuICBzd2l0Y2ggKGQpIHtcbiAgfCBMZWZ0ID0+IFNvbWUoeilcbiAgfCBSaWdodCA9PiBtb3ZlKExlZnQsIHopXG4gIH07XG59O1xuXG5sZXQgcmVjIGNvbnN0cnVjdCA9XG4gICAgICAgICh+Y2FyZXQ6IERpcmVjdGlvbi50LCB+YmFja3BhY2s6IERpcmVjdGlvbi50LCBsYWJlbDogTGFiZWwudCwgejogdCk6IHQgPT4ge1xuICBzd2l0Y2ggKGxhYmVsKSB7XG4gIHwgW3RdIHdoZW4gRm9ybS5pc19zdHJpbmdfZGVsaW0odCkgPT5cbiAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGNvbnN0cnVjdGluZyBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgICAgU2VlIEluc2VydC5tb3ZlX2ludG9faWZfc3RyaW5nbGl0IGZvciBtb3JlIHNwZWNpYWwtY2FzaW5nLiAqL1xuICAgIGNvbnN0cnVjdCh+Y2FyZXQsIH5iYWNrcGFjaywgW0Zvcm0uc3RyaW5nX2RlbGltICsrIEZvcm0uc3RyaW5nX2RlbGltXSwgeilcbiAgfCBbY29udGVudF0gd2hlbiBGb3JtLmlzX2NvbW1lbnQoY29udGVudCkgPT5cbiAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGNvbW1lbnRzLCBjYW4ndCByZWx5IG9uIHRoZSBsYXN0IGJyYW5jaCB0byBjb25zdHJ1Y3QgKi9cbiAgICBsZXQgY29udGVudCA9IFNlY29uZGFyeS5jb25zdHJ1Y3RfY29tbWVudChjb250ZW50KTtcbiAgICBsZXQgaWQgPSBJZC5taygpO1xuICAgIEVmZmVjdC5zX3RvdWNoKFtpZF0pO1xuICAgIGxldCB6ID0gZGVzdHJ1Y3Qoeik7XG4gICAgbGV0IHNlbGVjdGlvbnMgPSBbU2VsZWN0aW9uLm1rKEJhc2UubWtfc2Vjb25kYXJ5KGlkLCBjb250ZW50KSldO1xuICAgIGxldCBiYWNrcGFjayA9IEJhY2twYWNrLnB1c2hfcyhzZWxlY3Rpb25zLCB6LmJhY2twYWNrKTtcbiAgICBPcHRpb24uZ2V0KHB1dF9kb3duKGNhcmV0LCB7Li4ueiwgYmFja3BhY2t9KSk7XG5cbiAgfCBbY29udGVudF0gd2hlbiBGb3JtLmlzX3NlY29uZGFyeShjb250ZW50KSA9PlxuICAgIGxldCBjb250ZW50ID0gU2Vjb25kYXJ5LldoaXRlc3BhY2UoY29udGVudCk7XG4gICAgbGV0IGlkID0gSWQubWsoKTtcbiAgICBFZmZlY3Quc190b3VjaChbaWRdKTtcbiAgICB6IHw+IHVwZGF0ZV9zaWJsaW5ncygoKGwsIHIpKSA9PiAobCBAIFtTZWNvbmRhcnkoe2lkLCBjb250ZW50fSldLCByKSk7XG4gIHwgXyA9PlxuICAgIGxldCB6ID0gZGVzdHJ1Y3Qoeik7XG4gICAgbGV0IG1vbGRzID0gTW9sZHMuZ2V0KGxhYmVsKTtcbiAgICBhc3NlcnQobW9sZHMgIT0gW10pO1xuICAgIC8vIGluaXRpYWwgbW9sZCB0byB0eXBlY2hlY2ssIHdpbGwgYmUgcmVtb2xkZWRcbiAgICBsZXQgbW9sZCA9IExpc3QuaGQobW9sZHMpO1xuICAgIGxldCBpZCA9IElkLm1rKCk7XG4gICAgRWZmZWN0LnNfdG91Y2goW2lkXSk7XG4gICAgbGV0IHNlbGVjdGlvbnMgPVxuICAgICAgVGlsZS5zcGxpdF9zaGFyZHMoaWQsIGxhYmVsLCBtb2xkLCBMaXN0Lm1hcGkoKGksIF8pID0+IGksIGxhYmVsKSlcbiAgICAgIHw+IExpc3QubWFwKFNlZ21lbnQub2ZfdGlsZSlcbiAgICAgIHw+IExpc3QubWFwKFNlbGVjdGlvbi5taylcbiAgICAgIHw+IExpc3RVdGlsLnJldl9pZihiYWNrcGFjayA9PSBSaWdodCk7XG4gICAgbGV0IGJhY2twYWNrID0gQmFja3BhY2sucHVzaF9zKHNlbGVjdGlvbnMsIHouYmFja3BhY2spO1xuICAgIE9wdGlvbi5nZXQocHV0X2Rvd24oY2FyZXQsIHsuLi56LCBiYWNrcGFja30pKTtcbiAgfTtcbn07XG5cbmxldCBjb25zdHJ1Y3RfbW9ubyA9IChkOiBEaXJlY3Rpb24udCwgdDogVG9rZW4udCwgejogdCk6IHQgPT5cbiAgY29uc3RydWN0KH5jYXJldD1kLCB+YmFja3BhY2s9TGVmdCwgW3RdLCB6KTtcblxubGV0IHJlcGxhY2UgPVxuICAgICh+Y2FyZXQ6IERpcmVjdGlvbi50LCB+YmFja3BhY2s6IERpcmVjdGlvbi50LCBsOiBMYWJlbC50LCB6OiB0KVxuICAgIDogb3B0aW9uKHQpID0+XG4gIC8qIGkuZS4gc2VsZWN0IGFuZCBjb25zdHJ1Y3QsIG92ZXJ3cml0aW5nIHRoZSBzZWxlY3Rpb24gKi9cbiAgeiB8PiBkZWxldGUoY2FyZXQpIHw+IE9wdGlvbi5tYXAoY29uc3RydWN0KH5jYXJldCwgfmJhY2twYWNrLCBsKSk7XG5cbmxldCByZXBsYWNlX21vbm8gPSAoZDogRGlyZWN0aW9uLnQsIHQ6IFRva2VuLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgcmVwbGFjZSh+Y2FyZXQ9ZCwgfmJhY2twYWNrPUxlZnQsIFt0XSwgeik7XG5cbmxldCByZXByZXNlbnRhdGl2ZV9waWVjZSA9ICh6OiB0KTogb3B0aW9uKChQaWVjZS50LCBEaXJlY3Rpb24udCkpID0+IHtcbiAgLyogVGhlIHBpZWNlIHRvIHRoZSBsZWZ0IG9mIHRoZSBjYXJldCwgb3IgaWYgbm9uZSBleGlzdHMsIHRoZSBwaWVjZSB0byB0aGUgcmlnaHQgKi9cbiAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoc2lic193aXRoX3NlbCh6KSkpIHtcbiAgfCAoU29tZShsKSwgXykgPT4gU29tZSgobCwgTGVmdCkpXG4gIHwgKF8sIFNvbWUocikpID0+IFNvbWUoKHIsIFJpZ2h0KSlcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCBjYXJldF9kaXJlY3Rpb24gPSAoejogdCk6IG9wdGlvbihEaXJlY3Rpb24udCkgPT5cbiAgLyogRGlyZWN0aW9uIHRoZSBjYXJldCBpcyBmYWNpbmcgaW4gKi9cbiAgc3dpdGNoICh6LmNhcmV0KSB7XG4gIHwgSW5uZXIoXykgPT4gTm9uZVxuICB8IE91dGVyID0+XG4gICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoc2lic193aXRoX3NlbCh6KSkpIHtcbiAgICB8IChTb21lKGwpLCBTb21lKHIpKSB3aGVuIFBpZWNlLmlzX3NlY29uZGFyeShsKSAmJiBQaWVjZS5pc19zZWNvbmRhcnkocikgPT5cbiAgICAgIE5vbmVcbiAgICB8IF8gPT4gU2libGluZ3MuZGlyZWN0aW9uX2JldHdlZW4oc2lic193aXRoX3NlbCh6KSlcbiAgICB9XG4gIH07XG5cbmxldCBiYXNlX3BvaW50ID0gKG1lYXN1cmVkOiBNZWFzdXJlZC50LCB6OiB0KTogTWVhc3VyZWQuUG9pbnQudCA9PiB7XG4gIHN3aXRjaCAocmVwcmVzZW50YXRpdmVfcGllY2UoeikpIHtcbiAgfCBTb21lKChwLCBkKSkgPT5cbiAgICBsZXQgc2VnID0gUGllY2UuZGlzYXNzZW1ibGUocCk7XG4gICAgc3dpdGNoIChkKSB7XG4gICAgfCBMZWZ0ID0+XG4gICAgICBsZXQgcCA9IExpc3RVdGlsLmxhc3Qoc2VnKTtcbiAgICAgIGxldCBtID0gTWVhc3VyZWQuZmluZF9wKHAsIG1lYXN1cmVkKTtcbiAgICAgIG0ubGFzdDtcbiAgICB8IFJpZ2h0ID0+XG4gICAgICBsZXQgcCA9IExpc3QuaGQoc2VnKTtcbiAgICAgIGxldCBtID0gTWVhc3VyZWQuZmluZF9wKHAsIG1lYXN1cmVkKTtcbiAgICAgIG0ub3JpZ2luO1xuICAgIH07XG4gIHwgTm9uZSA9PiB7cm93OiAwLCBjb2w6IDB9XG4gIH07XG59O1xubGV0IGNhcmV0X3BvaW50ID0gKG1lYXN1cmVkLCB6OiB0KTogTWVhc3VyZWQuUG9pbnQudCA9PiB7XG4gIGxldCBNZWFzdXJlZC5Qb2ludC57cm93LCBjb2x9ID0gYmFzZV9wb2ludChtZWFzdXJlZCwgeik7XG4gIHtyb3csIGNvbDogY29sICsgQ2FyZXQub2Zmc2V0KHouY2FyZXQpfTtcbn07XG5cbmxldCBzZXJpYWxpemUgPSAoejogdCk6IHN0cmluZyA9PiB7XG4gIHNleHBfb2ZfdCh6KSB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xufTtcblxubGV0IGRlc2VyaWFsaXplID0gKGRhdGE6IHN0cmluZyk6IHQgPT4ge1xuICBTZXhwbGliLlNleHAub2Zfc3RyaW5nKGRhdGEpIHw+IHRfb2Zfc2V4cDtcbn07XG5cbmxldCBjYW5fcHV0X2Rvd24gPSB6ID0+XG4gIHN3aXRjaCAocG9wX2JhY2twYWNrKHopKSB7XG4gIHwgU29tZShfKSA9PiB6LmNhcmV0ID09IE91dGVyXG4gIHwgTm9uZSA9PiBmYWxzZVxuICB9O1xuXG5sZXQgc2V0X2J1ZmZlciA9ICh6OiB0LCB+bW9kZTogU2VsZWN0aW9uLmJ1ZmZlciwgfmNvbnRlbnQ6IFNlZ21lbnQudCk6IHQgPT4ge1xuICAuLi56LFxuICBzZWxlY3Rpb246IFNlbGVjdGlvbi5ta19idWZmZXIobW9kZSwgY29udGVudCksXG59O1xuXG5sZXQgaXNfbGluZWJyZWFrX3RvX3JpZ2h0X29mX2NhcmV0ID1cbiAgICAoe3JlbGF0aXZlczoge3NpYmxpbmdzOiAoXywgciksIF99LCBffTogdCk6IGJvb2wgPT4ge1xuICBzd2l0Y2ggKHIpIHtcbiAgfCBbU2Vjb25kYXJ5KHMpLCAuLi5fXSB3aGVuIFNlY29uZGFyeS5pc19saW5lYnJlYWsocykgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbi8qIFRyeSB0byBjb21wbGV0ZSB0aGUgc3ludGF4IHRvIGdpdmUgYmV0dGVyIHNlbWFudGljIGZlZWJhY2suXG4gKiBUaGlzIGlzIGEgYmVzdC1lZmZvcnQgYXBwcm9hY2ggZm9jdXNzZWQgb24gYWRkaW5nIG5ldyBkZWZpbml0aW9uc1xuICogYXMgb3Bwb3NlZCB0byByZXN0cnVjdHVyaW5nOyBpdCBkb2VzIG5vdCBjb21wbGV0ZSB0aGUgc3ludGF4IGluXG4gKiBhbGwgY2FzZXMuXG4gKlxuICogTk9URTogU2V0dGluZyB0aGUgY2FyZXQgdG8gb3V0ZXIgd2FzIG5lY2Vzc2FyeSB0byAnZ2V0IGl0IHBhc3QnXG4gKiBzdHJpbmcgbGl0ZXJhbHMsIGkuZS4gb2ZmZXIgbGl2ZSBmZWViYWNrIHdoZW4gdHlwaW5nIGluc2lkZSBhXG4gKiBzdHJpbmc7IG5vdCBzdXJlIGlmIHRoaXMgaXMgYSBoYWNrIG9yIG5vdCwgaXQgbWF5IGJlIGNvbXBlbnNhdGluZ1xuICogZm9yIHRoZSBwdXRfZG93biBsb2dpYyBub3Qgd29ya2luZyByaWdodCB3aXRoIHN0cmluZyBsaXRzLiBUbyB0ZXN0LFxuICogdHJ5IHRvIGxvb2sgYXQgbGl2ZSBldmFsdWF0aW9uIHdoaWxlIHR5cGluZyBpbnNpZGUgYSBzdHJpbmcgbGl0IHdpdGhcbiAqIHN0dWZmIGxlZnQgdG8gZHJvcCBpbiBiYWNrcGFjayB3aXRoIGJlbG93IHNldDogT3V0ZXIgZGlzYWJsZWQuICovXG5sZXQgdHJ5X3RvX2R1bXBfYmFja3BhY2sgPSAoemlwcGVyOiB0KSA9PiB7XG4gIHN3aXRjaCAoemlwcGVyLmJhY2twYWNrKSB7XG4gIHwgW10gPT4gemlwcGVyXG4gIHwgXyA9PlxuICAgIGxldCB6aXBwZXIgPSB7Li4uemlwcGVyLCBjYXJldDogT3V0ZXJ9O1xuICAgIGxldCByZWMgbW92ZV91bnRpbF9jYW50X3B1dF9kb3duID0gKHpfbGFzdCwgejogdCkgPT5cbiAgICAgIGlmIChjYW5fcHV0X2Rvd24oeikgJiYgIWlzX2xpbmVicmVha190b19yaWdodF9vZl9jYXJldCh6KSkge1xuICAgICAgICBzd2l0Y2ggKG1vdmUoUmlnaHQsIHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6XG4gICAgICAgIHwgU29tZSh6X25ldykgPT4gbW92ZV91bnRpbF9jYW50X3B1dF9kb3duKHosIHpfbmV3KVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgel9sYXN0O1xuICAgICAgfTtcbiAgICBsZXQgcmVjIG1vdmVfdW50aWxfY2FuX3B1dF9kb3duID0gKHo6IHQpID0+XG4gICAgICBpZiAoIWNhbl9wdXRfZG93bih6KSkge1xuICAgICAgICBzd2l0Y2ggKG1vdmUoUmlnaHQsIHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6XG4gICAgICAgIHwgU29tZSh6X25ldykgPT4gbW92ZV91bnRpbF9jYW5fcHV0X2Rvd24oel9uZXcpXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB6O1xuICAgICAgfTtcbiAgICBsZXQgcmVjIGdvID0gKHo6IHQpOiB0ID0+XG4gICAgICBpZiAoY2FuX3B1dF9kb3duKHopKSB7XG4gICAgICAgIGxldCB6X2NhbiA9IG1vdmVfdW50aWxfY2FudF9wdXRfZG93bih6LCB6KTtcbiAgICAgICAgc3dpdGNoIChwdXRfZG93bihSaWdodCwgel9jYW4pKSB7XG4gICAgICAgIHwgTm9uZSA9PiB6X2NhblxuICAgICAgICB8IFNvbWUoeikgPT5cbiAgICAgICAgICBsZXQgeiA9IHJlZ3JvdXQoUmlnaHQsIHopO1xuICAgICAgICAgIGdvKHopO1xuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHpfY2FuID0gbW92ZV91bnRpbF9jYW5fcHV0X2Rvd24oeik7XG4gICAgICAgIGxldCB6X2NhbiA9IG1vdmVfdW50aWxfY2FudF9wdXRfZG93bih6X2Nhbiwgel9jYW4pO1xuICAgICAgICBzd2l0Y2ggKHB1dF9kb3duKFJpZ2h0LCB6X2NhbikpIHtcbiAgICAgICAgfCBOb25lID0+IHpfY2FuXG4gICAgICAgIHwgU29tZSh6KSA9PlxuICAgICAgICAgIGxldCB6ID0gcmVncm91dChSaWdodCwgeik7XG4gICAgICAgICAgZ28oeik7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIGdvKHppcHBlcik7XG4gIH07XG59O1xuXG5sZXQgc21hcnRfc2VnID0gKH5kdW1wX2JhY2twYWNrOiBib29sLCB+ZXJhc2VfYnVmZmVyOiBib29sLCB6OiB0KSA9PiB7XG4gIGxldCB6ID0gZXJhc2VfYnVmZmVyID8gY2xlYXJfdW5wYXJzZWRfYnVmZmVyKHopIDogejtcbiAgbGV0IHogPSBkdW1wX2JhY2twYWNrID8gdHJ5X3RvX2R1bXBfYmFja3BhY2soeikgOiB6O1xuICB1bnNlbGVjdF9hbmRfemlwKH5lcmFzZV9idWZmZXIsIHopO1xufTtcblxubGV0IHNlZ19mb3JfdmlldyA9IHNtYXJ0X3NlZyh+ZXJhc2VfYnVmZmVyPWZhbHNlLCB+ZHVtcF9iYWNrcGFjaz1mYWxzZSk7XG5sZXQgc2VnX2Zvcl9zZW0gPSBzbWFydF9zZWcofmVyYXNlX2J1ZmZlcj10cnVlLCB+ZHVtcF9iYWNrcGFjaz10cnVlKTtcblxubGV0IHNlZ193aXRob3V0X2J1ZmZlciA9IHNtYXJ0X3NlZyh+ZXJhc2VfYnVmZmVyPXRydWUsIH5kdW1wX2JhY2twYWNrPWZhbHNlKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdF8oJ2EpID0gbGlzdCgoVG9rZW4udCwgJ2EpKTtcblxubGV0IGVtcHR5ID0gW107XG5cbmxldCBpc19lbXB0eSA9XG4gIGZ1blxuICB8IFtdID0+IHRydWVcbiAgfCBbXywgLi4uX10gPT4gZmFsc2U7XG5cbmxldCBleHRlbmQgPSAoY3R4LCB4YSkgPT4ge1xuICBbeGEsIC4uLmN0eF07XG59O1xuXG4vLyBUaGUgbmV3IHRoaW5ncyBzaG91bGQgZ28gdG8gdGhlIHJpZ2h0IHdoZW4gY29uY2F0ZW5hdGluZ1xubGV0IGNvbmNhdCA9IChjdHgsIG5ld19jdHgpID0+IG5ld19jdHggQCBjdHg7XG5cbmxldCBsb29rdXAgPSAoY3R4LCB4KSA9PiBMaXN0LmFzc29jX29wdCh4LCBjdHgpO1xuXG5sZXQgY29udGFpbnMgPSAoY3R4LCB4KSA9PiBMaXN0Lm1lbV9hc3NvYyh4LCBjdHgpO1xuXG5sZXQgbWFwID0gKGYsIHhzKSA9PiBMaXN0Lm1hcCgoKHgsIF8pIGFzIHhhKSA9PiAoeCwgZih4YSkpLCB4cyk7XG5cbmxldCBmaWx0ZXIgPSBMaXN0LmZpbHRlcjtcblxubGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoO1xuXG5sZXQgdG9fbGlzdCA9IGN0eCA9PiBjdHg7XG5cbmxldCBmaW5kX21hcCA9IExpc3QuZmluZF9tYXA7XG5cbmxldCByZWMgdXBkYXRlID0gKGN0eDogdF8oJ2EpLCBuYW1lOiBzdHJpbmcsIGY6ICdhID0+ICdhKTogdF8oJ2EpID0+XG4gIHN3aXRjaCAoY3R4KSB7XG4gIHwgW10gPT4gW11cbiAgfCBbKGssIHYpLCAuLi5jdHhdID0+XG4gICAgaWYgKG5hbWUgPT0gaykge1xuICAgICAgWyhrLCBmKHYpKSwgLi4uY3R4XTtcbiAgICB9IGVsc2Uge1xuICAgICAgWyhrLCB2KSwgLi4udXBkYXRlKGN0eCwgbmFtZSwgZildO1xuICAgIH1cbiAgfTtcbiIsIm1vZHVsZSBIb2xlUmVhc29uID0ge1xuICAvKiBWYXJpYWJsZTogcmVhc29uICovXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID1cbiAgICB8IEZyZWU7XG59O1xuXG4vKiBWYXJpYWJsZTogdmFyX2VyciAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBOb3RJblZhckhvbGVcbiAgfCBJblZhckhvbGUoSG9sZVJlYXNvbi50LCBJZC50KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHN0cmluZztcblxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsO1xuIiwib3BlbiBVdGlsLk9wdFV0aWwuU3ludGF4O1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB2YXJpYW50KCdhKSA9XG4gIHwgVmFyaWFudChDb25zdHJ1Y3Rvci50LCBsaXN0KElkLnQpLCBvcHRpb24oJ2EpKVxuICB8IEJhZEVudHJ5KCdhKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0KCdhKSA9IGxpc3QodmFyaWFudCgnYSkpO1xuXG5sZXQgZXF1YWxfY29uc3RydWN0b3IgPVxuICAgIChlcTogKCdhLCAnYSkgPT4gYm9vbCwgeDogdmFyaWFudCgnYSksIHk6IHZhcmlhbnQoJ2EpKTogYm9vbCA9PlxuICBzd2l0Y2ggKHgsIHkpIHtcbiAgfCAoVmFyaWFudChjdHIxLCBfLCBTb21lKHgxKSksIFZhcmlhbnQoY3RyMiwgXywgU29tZSh5MSkpKSA9PlxuICAgIENvbnN0cnVjdG9yLmVxdWFsKGN0cjEsIGN0cjIpICYmIGVxKHgxLCB5MSlcbiAgfCAoVmFyaWFudChjdHIxLCBfLCBOb25lKSwgVmFyaWFudChjdHIyLCBfLCBOb25lKSkgPT5cbiAgICBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKVxuICB8IChCYWRFbnRyeSh4KSwgQmFkRW50cnkoeSkpID0+IGVxKHgsIHkpXG4gIHwgKFZhcmlhbnQoXyksIFZhcmlhbnQoXykpXG4gIHwgKEJhZEVudHJ5KF8pLCBWYXJpYW50KF8pKVxuICB8IChWYXJpYW50KF8pLCBCYWRFbnRyeShfKSkgPT4gZmFsc2VcbiAgfTtcblxubGV0IHNhbWVfY29uc3RydWN0b3IgPVxuICAgIChlcTogKCdhLCAnYSkgPT4gYm9vbCwgeDogdmFyaWFudCgnYSksIHk6IHZhcmlhbnQoJ2EpKTogYm9vbCA9PlxuICBzd2l0Y2ggKHgsIHkpIHtcbiAgfCAoVmFyaWFudChjdHIxLCBfLCBfKSwgVmFyaWFudChjdHIyLCBfLCBfKSkgPT5cbiAgICBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKVxuICB8IChCYWRFbnRyeSh4KSwgQmFkRW50cnkoeSkpID0+IGVxKHgsIHkpXG4gIHwgKEJhZEVudHJ5KF8pLCBWYXJpYW50KF8pKVxuICB8IChWYXJpYW50KF8pLCBCYWRFbnRyeShfKSkgPT4gZmFsc2VcbiAgfTtcblxubGV0IGhhc19iYWRfZW50cnkgPSAoeDogdCgnYSkpOiBib29sID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgQmFkRW50cnkoXykgPT4gdHJ1ZVxuICAgIHwgVmFyaWFudChfKSA9PiBmYWxzZSxcbiAgICB4LFxuICApO1xuXG5sZXQgaGFzX2dvb2RfZW50cnkgPSAoeDogdCgnYSkpOiBib29sID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgQmFkRW50cnkoXykgPT4gZmFsc2VcbiAgICB8IFZhcmlhbnQoXykgPT4gdHJ1ZSxcbiAgICB4LFxuICApO1xuXG5sZXQgZnJlZV92YXJpYWJsZXMgPSAoZiwgbSkgPT5cbiAgbVxuICB8PiBMaXN0Lm1hcChcbiAgICAgICBmdW5cbiAgICAgICB8IFZhcmlhbnQoXywgXywgU29tZSh2YWx1ZSkpID0+IGYodmFsdWUpXG4gICAgICAgfCBfID0+IFtdLFxuICAgICApXG4gIHw+IExpc3QuZmxhdHRlbjtcblxubGV0IGlzX2dyb3VuZCA9IGlzX2hvbGUgPT5cbiAgZnVuXG4gIHwgW0JhZEVudHJ5KHgpXSB3aGVuIGlzX2hvbGUoeCkgPT4gdHJ1ZVxuICB8IF8gPT4gZmFsc2U7XG5cbi8qIGNvbXB1dGVzIGFsbCB0aHJlZSByZWdpb25zIG9mIGEgdmVubiBkaWFncmFtIG9mIHR3byBzZXRzIHJlcHJlc2VudGVkIGFzIGxpc3RzICovXG5sZXQgdmVubl9yZWdpb25zID1cbiAgICAoZjogKCdhLCAnYSkgPT4gYm9vbCwgeHM6IGxpc3QoJ2EpLCB5czogbGlzdCgnYSkpXG4gICAgOiAobGlzdCgoJ2EsICdhKSksIGxpc3QoJ2EpLCBsaXN0KCdhKSkgPT4ge1xuICBsZXQgcmVjIGdvID0gKHhzLCB5cywgYWNjLCBsZWZ0LCByaWdodCkgPT5cbiAgICBzd2l0Y2ggKHhzKSB7XG4gICAgfCBbXSA9PiAoYWNjIHw+IExpc3QucmV2LCBsZWZ0IHw+IExpc3QucmV2LCBMaXN0LnJldl9hcHBlbmQocmlnaHQsIHlzKSlcbiAgICB8IFt4LCAuLi54c10gPT5cbiAgICAgIHN3aXRjaCAoTGlzdC5wYXJ0aXRpb24oZih4LCBfKSwgeXMpKSB7XG4gICAgICB8IChbXSwgXykgPT4gZ28oeHMsIHlzLCBhY2MsIFt4LCAuLi5sZWZ0XSwgcmlnaHQpXG4gICAgICB8IChbeV0sIHlzJykgPT4gZ28oeHMsIHlzJywgWyh4LCB5KSwgLi4uYWNjXSwgbGVmdCwgcmlnaHQpXG4gICAgICB8IF8gPT4gZmFpbHdpdGgoXCJTdW0gdHlwZSBoYXMgbm9uLXVuaXF1ZSBjb25zdHJ1Y3RvcnNcIilcbiAgICAgIH1cbiAgICB9O1xuICBnbyh4cywgeXMsIFtdLCBbXSwgW10pO1xufTtcblxubGV0IGpvaW5fZW50cnkgPVxuICAgIChqb2luOiAoJ2EsICdhKSA9PiBvcHRpb24oJ2EpLCAoeDogdmFyaWFudCgnYSksIHk6IHZhcmlhbnQoJ2EpKSlcbiAgICA6IG9wdGlvbih2YXJpYW50KCdhKSkgPT5cbiAgc3dpdGNoICh4LCB5KSB7XG4gIHwgKFZhcmlhbnQoY3RyMSwgaWRzMSwgU29tZSh2YWx1ZTEpKSwgVmFyaWFudChjdHIyLCBfLCBTb21lKHZhbHVlMikpKVxuICAgICAgd2hlbiBDb25zdHJ1Y3Rvci5lcXVhbChjdHIxLCBjdHIyKSA9PlxuICAgIGxldCsgdmFsdWUgPSBqb2luKHZhbHVlMSwgdmFsdWUyKTtcbiAgICBWYXJpYW50KGN0cjEsIGlkczEsIFNvbWUodmFsdWUpKTtcbiAgfCAoVmFyaWFudChjdHIxLCBpZHMxLCBOb25lKSwgVmFyaWFudChjdHIyLCBfLCBOb25lKSlcbiAgICAgIHdoZW4gQ29uc3RydWN0b3IuZXF1YWwoY3RyMSwgY3RyMikgPT5cbiAgICBTb21lKFZhcmlhbnQoY3RyMSwgaWRzMSwgTm9uZSkpXG4gIHwgKEJhZEVudHJ5KHgpLCBCYWRFbnRyeSh5KSkgPT5cbiAgICBsZXQrIHZhbHVlID0gam9pbih4LCB5KTtcbiAgICBCYWRFbnRyeSh2YWx1ZSk7XG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCBqb2luID1cbiAgICAoXG4gICAgICBlcTogKCdhLCAnYSkgPT4gYm9vbCxcbiAgICAgIGpvaW46ICgnYSwgJ2EpID0+IG9wdGlvbignYSksXG4gICAgICBtMTogdCgnYSksXG4gICAgICBtMjogdCgnYSksXG4gICAgKVxuICAgIDogb3B0aW9uKHQoJ2EpKSA9PiB7XG4gIGxldCAoaW50ZXIsIGxlZnQsIHJpZ2h0KSA9IHZlbm5fcmVnaW9ucyhzYW1lX2NvbnN0cnVjdG9yKGVxKSwgbTEsIG0yKTtcbiAgbGV0IGpvaW5fZW50cmllcyA9IExpc3QuZmlsdGVyX21hcChqb2luX2VudHJ5KGpvaW4pLCBpbnRlcik7XG4gIGlmIChMaXN0Lmxlbmd0aChqb2luX2VudHJpZXMpID09IExpc3QubGVuZ3RoKGludGVyKSkge1xuICAgIHN3aXRjaCAoXG4gICAgICBoYXNfZ29vZF9lbnRyeShsZWZ0KSxcbiAgICAgIGhhc19iYWRfZW50cnkobTEpLFxuICAgICAgaGFzX2dvb2RfZW50cnkocmlnaHQpLFxuICAgICAgaGFzX2JhZF9lbnRyeShtMiksXG4gICAgKSB7XG4gICAgfCAoXywgdHJ1ZSwgXywgdHJ1ZSkgPT4gU29tZShqb2luX2VudHJpZXMgQCBsZWZ0IEAgcmlnaHQpXG4gICAgfCAoZmFsc2UsIHRydWUsIF8sIF8pID0+IFNvbWUoam9pbl9lbnRyaWVzIEAgcmlnaHQpXG4gICAgfCAoXywgXywgZmFsc2UsIHRydWUpID0+IFNvbWUoam9pbl9lbnRyaWVzIEAgbGVmdClcbiAgICB8IF8gd2hlbiBsZWZ0ID09IFtdICYmIHJpZ2h0ID09IFtdID0+IFNvbWUoam9pbl9lbnRyaWVzKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBOb25lO1xuICB9O1xufTtcblxubGV0IG1hdGNoX3N5bnN3aXRjaCA9XG4gICAgKG1hdGNoX3N5bnN3aXRjaDogKCdhLCAnYSkgPT4gJ2EsIG0xOiB0KCdhKSwgbTI6IHQoJ2EpKTogdCgnYSkgPT4ge1xuICBMaXN0Lm1hcChcbiAgICBmdW5cbiAgICB8IChWYXJpYW50KGN0ciwgaWRzLCBTb21lKHZhbHVlMSkpLCBWYXJpYW50KF8sIF8sIFNvbWUodmFsdWUyKSkpID0+XG4gICAgICBWYXJpYW50KGN0ciwgaWRzLCBTb21lKG1hdGNoX3N5bnN3aXRjaCh2YWx1ZTEsIHZhbHVlMikpKVxuICAgIHwgKHYsIF8pID0+IHYsXG4gICAgTGlzdC5jb21iaW5lKG0xLCBtMiksXG4gICk7XG59O1xuXG5sZXQgZXF1YWwgPSAoZXE6ICgnYSwgJ2EpID0+IGJvb2wsIG0xOiB0KCdhKSwgbTI6IHQoJ2EpKSA9PiB7XG4gIHN3aXRjaCAodmVubl9yZWdpb25zKHNhbWVfY29uc3RydWN0b3IoZXEpLCBtMSwgbTIpKSB7XG4gIHwgKGludGVyLCBbXSwgW10pID0+XG4gICAgTGlzdC5mb3JfYWxsKFxuICAgICAgKCh4LCB5KSkgPT5cbiAgICAgICAgc3dpdGNoICh4LCB5KSB7XG4gICAgICAgIHwgKFZhcmlhbnQoXywgXywgU29tZSh2YWx1ZTEpKSwgVmFyaWFudChfLCBfLCBTb21lKHZhbHVlMikpKSA9PlxuICAgICAgICAgIGVxKHZhbHVlMSwgdmFsdWUyKVxuICAgICAgICB8IChWYXJpYW50KF8sIF8sIE5vbmUpLCBWYXJpYW50KF8sIF8sIE5vbmUpKSA9PiB0cnVlXG4gICAgICAgIHwgKEJhZEVudHJ5KHgpLCBCYWRFbnRyeSh5KSkgPT4gZXEoeCwgeSlcbiAgICAgICAgfCBfID0+IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICBpbnRlcixcbiAgICApXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xufTtcblxubGV0IG1hcCA9IChmOiBvcHRpb24oJ2EpID0+IG9wdGlvbignYiksIG06IHQoJ2EpKTogdCgnYikgPT4ge1xuICBMaXN0Lm1hcChcbiAgICBmdW5cbiAgICB8IFZhcmlhbnQoY3RyLCBhcmdzLCB2YWx1ZSkgPT4gVmFyaWFudChjdHIsIGFyZ3MsIGYodmFsdWUpKVxuICAgIHwgQmFkRW50cnkodmFsdWUpID0+IEJhZEVudHJ5KHZhbHVlKSxcbiAgICBtLFxuICApO1xufTtcblxubGV0IGdldF9lbnRyeSA9IChjdHIsIG0pID0+XG4gIExpc3QuZmluZF9tYXAoXG4gICAgZnVuXG4gICAgfCBWYXJpYW50KGN0cicsIF8sIHZhbHVlKSB3aGVuIENvbnN0cnVjdG9yLmVxdWFsKGN0ciwgY3RyJykgPT4gdmFsdWVcbiAgICB8IFZhcmlhbnQoXylcbiAgICB8IEJhZEVudHJ5KF8pID0+IE5vbmUsXG4gICAgbSxcbiAgKTtcblxubGV0IGhhc19jb25zdHJ1Y3Rvcl9ub19hcmdzID0gY3RyID0+XG4gIExpc3QuZXhpc3RzKFxuICAgIGZ1blxuICAgIHwgVmFyaWFudChjdHInLCBfLCBOb25lKSB3aGVuIENvbnN0cnVjdG9yLmVxdWFsKGN0ciwgY3RyJykgPT4gdHJ1ZVxuICAgIHwgVmFyaWFudChfKSA9PiBmYWxzZVxuICAgIHwgQmFkRW50cnkoXykgPT4gZmFsc2UsXG4gICk7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9XG4gIHwgU3RlcFxuICB8IEV2YWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY291bnQgPVxuICB8IE9uZVxuICB8IEFsbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gKGFjdGlvbiwgY291bnQpO1xuXG5sZXQgc3RyaW5nX29mX3QgPSB2ID0+IHtcbiAgc3dpdGNoICh2KSB7XG4gIHwgKFN0ZXAsIE9uZSkgPT4gXCJwYXVzZVwiXG4gIHwgKFN0ZXAsIEFsbCkgPT4gXCJkZWJ1Z1wiXG4gIHwgKEV2YWwsIE9uZSkgPT4gXCJoaWRlXCJcbiAgfCAoRXZhbCwgQWxsKSA9PiBcImV2YWxcIlxuICB9O1xufTtcbiIsImluY2x1ZGUgU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCgnYSkgPSB7XG4gIFtAc2hvdy5vcGFxdWVdXG4gIGlkczogbGlzdChJZC50KSxcbiAgLyogVUV4cCBpbnZhcmlhbnQ6IGNvcGllZCBzaG91bGQgYWx3YXlzIGJlIGZhbHNlLCBhbmQgdGhlIGlkIHNob3VsZCBiZSB1bmlxdWVcbiAgICAgREhFeHAgaW52YXJpYW50OiBpZiBjb3BpZWQgaXMgdHJ1ZSwgdGhlbiB0aGlzIHRlcm0gYW5kIGl0cyBjaGlsZHJlbiBtYXkgbm90XG4gICAgIGhhdmUgdW5pcXVlIGlkcy4gKi9cbiAgW0BzaG93Lm9wYXF1ZV1cbiAgY29waWVkOiBib29sLFxuICB0ZXJtOiAnYSxcbn07XG5cbmxldCBmcmVzaCA9IHRlcm0gPT4ge1xuICB7aWRzOiBbSWQubWsoKV0sIGNvcGllZDogZmFsc2UsIHRlcm19O1xufTtcblxubGV0IHRlcm1fb2YgPSB4ID0+IHgudGVybTtcbmxldCB1bndyYXAgPSB4ID0+ICh4LnRlcm0sIHRlcm0nID0+IHsuLi54LCB0ZXJtOiB0ZXJtJ30pO1xubGV0IHJlcF9pZCA9ICh7aWRzLCBffSkgPT4gTGlzdC5oZChpZHMpO1xubGV0IGZhc3RfY29weSA9IChpZCwge3Rlcm0sIF99KSA9PiB7aWRzOiBbaWRdLCB0ZXJtLCBjb3BpZWQ6IHRydWV9O1xubGV0IG5ld19pZHMgPVxuICBmdW5cbiAgfCB7aWRzOiBfLCB0ZXJtLCBjb3BpZWR9ID0+IHtpZHM6IFtJZC5taygpXSwgdGVybSwgY29waWVkfTtcblxuLy8gbGV0IHNlcmlhbGl6YXRpb24gPSAoZjEsIGYyKSA9PlxuLy8gICBTdHJ1Y3R1cmVTaGFyZVNleHAuc3RydWN0dXJlX3NoYXJlX2hlcmUoXG4vLyAgICAgcmVwX2lkLFxuLy8gICAgIHNleHBfb2ZfdChmMSksXG4vLyAgICAgdF9vZl9zZXhwKGYyKSxcbi8vICAgKTtcblxuLy8gbGV0IHNleHBfb2ZfdCA9IGYxID0+IHNlcmlhbGl6YXRpb24oZjEsIE9iai5tYWdpYygpKSB8PiBmc3Q7XG4vLyBsZXQgdF9vZl9zZXhwID0gZjIgPT4gc2VyaWFsaXphdGlvbihPYmoubWFnaWMoKSwgZjIpIHw+IHNuZDtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9XG4gIHwgSW52YWxpZE9mU3RyaW5nXG4gIHwgSW5kZXhPdXRPZkJvdW5kc1xuICB8IERpdmlkZUJ5WmVyb1xuICB8IE5lZ2F0aXZlRXhwb25lbnRcbiAgfCBPdXRPZkZ1ZWw7XG5cbmxldCBlcnJfbXNnID0gKGVycjogdCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKGVycikge1xuICB8IEludmFsaWRPZlN0cmluZyA9PiBcIkVycm9yOiBJbnZhbGlkIFN0cmluZyBDb252ZXJzaW9uXCJcbiAgfCBJbmRleE91dE9mQm91bmRzID0+IFwiRXJyb3I6IEluZGV4IE91dCBvZiBCb3VuZHNcIlxuICB8IERpdmlkZUJ5WmVybyA9PiBcIkVycm9yOiBEaXZpZGUgYnkgWmVyb1wiXG4gIHwgTmVnYXRpdmVFeHBvbmVudCA9PiBcIkVycm9yOiBOZWdhdGl2ZSBFeHBvbmVudCBpbiBJbnRlZ2VyIEV4cG9uZW50aWF0aW9uIChDb25zaWRlciB1c2luZyAqKi4pXCJcbiAgfCBPdXRPZkZ1ZWwgPT4gXCJFcnJvcjogT3V0IG9mIEZ1ZWxcIlxuICB9O1xuIiwiLypcbiAgICAgVGhpcyBtb2R1bGUgYWRkcyBoZWxwZXJzIGZvciBjcmVhdGluZyBzLWV4cHJlc3Npb25zIHRoYXQgdXNlIHNvbWUgc3RydWN0dXJhbCBzaGFyaW5nXG4gICAgIChodHRwczovL3d3dy5vY2FtbHdpa2kuY29tL3dpa2kvU3RydWN0dXJhbF9zaGFyaW5nKSBpbnN0ZWFkIG9mIGNvcHlpbmcgYWxsIGluc3RhbmNlc1xuICAgICBvZiB0aGUgc2FtZSByZWNvcmQuXG4gKi9cblxubGV0IHN0cnVjdHVyZV9zaGFyZV9tYXA6IHJlZihvcHRpb24oSWQuTWFwLnQoU2V4cGxpYi5TZXhwLnQpKSkgPSByZWYoTm9uZSk7XG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgc3RydWN0dXJlX3NoYXJlZCA9IChTZXhwbGliLlNleHAudCwgSWQuTWFwLnQoU2V4cGxpYi5TZXhwLnQpKTtcblxuLy8gVG8gYmUgdXNlZCBvbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgd2hlcmUgdGhlIHN0cnVjdHVyZSBzaGFyaW5nIHRha2VzIHBsYWNlXG5sZXQgc3RydWN0dXJlX3NoYXJlX2hlcmUgPVxuICAgIChcbiAgICAgIGtleV9mOiAnYSA9PiBJZC50LFxuICAgICAgc2V4cF9vZl90OiAnYSA9PiBTZXhwbGliLlNleHAudCxcbiAgICAgIHRfb2Zfc2V4cDogU2V4cGxpYi5TZXhwLnQgPT4gJ2EsXG4gICAgKVxuICAgIDogKCdhID0+IFNleHBsaWIuU2V4cC50LCBTZXhwbGliLlNleHAudCA9PiAnYSkgPT4ge1xuICBsZXQgc2V4cF9vZl90JyA9ICh0aGluZzogJ2EpOiBTZXhwbGliLlNleHAudCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgU29tZShtKSA9PlxuICAgICAgbGV0IHNleHAgPSBzZXhwX29mX3QodGhpbmcpO1xuICAgICAgbGV0IGtleSA9IGtleV9mKHRoaW5nKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gU29tZShJZC5NYXAudXBkYXRlKGtleSwgXyA9PiBTb21lKHNleHApLCBtKSk7XG4gICAgICBJZC5zZXhwX29mX3Qoa2V5KTtcbiAgICB8IE5vbmUgPT4gc2V4cF9vZl90KHRoaW5nKVxuICAgIH07XG4gIH07XG4gIGxldCB0X29mX3NleHAnID0gc2V4cCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgU29tZShtKSA9PlxuICAgICAgbGV0IGlkID0gSWQudF9vZl9zZXhwKHNleHApO1xuICAgICAgbGV0IHRoaW5nX3MgPVxuICAgICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgbSkpIHtcbiAgICAgICAgfCBTb21lKHQpID0+IHRcbiAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoKFwic3RydWN0dXJlLXNoYXJpbmcgZGVzZXJpYWxpemF0aW9uIGZhaWxlZFwiKVxuICAgICAgICB9O1xuICAgICAgdF9vZl9zZXhwKHRoaW5nX3MpO1xuICAgIHwgTm9uZSA9PiB0X29mX3NleHAoc2V4cClcbiAgICB9O1xuICB9O1xuICAoc2V4cF9vZl90JywgdF9vZl9zZXhwJyk7XG59O1xuXG4vLyBUbyBiZSB1c2VkIG9uIHRoZSByb290IG9mIHRoZSBkYXRhIHN0cnVjdHVyZSBjdXJyZW50bHkgYmVpbmcgc2VyaWFsaXplZFxubGV0IHN0cnVjdHVyZV9zaGFyZV9pbiA9IChzZXhwX29mX3QsIHRfb2Zfc2V4cCkgPT4ge1xuICBsZXQgc2V4cF9vZl90JyA9ICh0aGluZzogJ2EpOiBTZXhwbGliLlNleHAudCA9PiB7XG4gICAgc3dpdGNoIChzdHJ1Y3R1cmVfc2hhcmVfbWFwXikge1xuICAgIHwgTm9uZSA9PlxuICAgICAgc3RydWN0dXJlX3NoYXJlX21hcCA6PSBTb21lKElkLk1hcC5lbXB0eSk7XG4gICAgICBsZXQgc2V4cCA9IHNleHBfb2ZfdCh0aGluZyk7XG4gICAgICBsZXQgcmVzdWx0OiBzdHJ1Y3R1cmVfc2hhcmVkID0gKFxuICAgICAgICBzZXhwLFxuICAgICAgICBzdHJ1Y3R1cmVfc2hhcmVfbWFwXiB8PiBPcHRpb24uZ2V0LFxuICAgICAgKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gTm9uZTtcbiAgICAgIHNleHBfb2Zfc3RydWN0dXJlX3NoYXJlZChyZXN1bHQpO1xuICAgIHwgU29tZShfKSA9PiBzZXhwX29mX3QodGhpbmcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUbyBiZSB1c2VkIG9ubHkgb24gdGhlIHJvb3Qgb2YgdGhlIGRhdGEgc3RydWN0dXJlIGN1cnJlbnRseSBiZWluZyBzZXJpYWxpemVkXG4gIGxldCB0X29mX3NleHAnID0gKHNleHA6IFNleHBsaWIuU2V4cC50KTogJ2EgPT4ge1xuICAgIHN3aXRjaCAoc3RydWN0dXJlX3NoYXJlX21hcF4pIHtcbiAgICB8IE5vbmUgPT5cbiAgICAgIGxldCAoc2V4cCwgbWFwKSA9IHN0cnVjdHVyZV9zaGFyZWRfb2Zfc2V4cChzZXhwKTtcbiAgICAgIHN0cnVjdHVyZV9zaGFyZV9tYXAgOj0gU29tZShtYXApO1xuICAgICAgbGV0IHRoaW5nID0gdF9vZl9zZXhwKHNleHApO1xuICAgICAgc3RydWN0dXJlX3NoYXJlX21hcCA6PSBOb25lO1xuICAgICAgdGhpbmc7XG4gICAgfCBTb21lKF8pID0+IHRfb2Zfc2V4cChzZXhwKVxuICAgIH07XG4gIH07XG4gIChzZXhwX29mX3QnLCB0X29mX3NleHAnKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBzdHJpbmc7XG5cbmxldCBlcSA9IFN0cmluZy5lcXVhbDtcblxubGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGg7XG5cbmxldCB2YWxpZF9yZWdleCA9XG4gIFJlLlN0ci5yZWdleHAoXCJeXFxcXChbYS16QS1aXVxcXFx8X1tfYS16QS1aMC05XVxcXFwpW19hLXpBLVowLTknXSokXCIpO1xubGV0IGlzX3ZhbGlkID0gcyA9PiBSZS5TdHIuc3RyaW5nX21hdGNoKHZhbGlkX3JlZ2V4LCBzLCAwKTtcblxuLyogaGVscGVyIGZ1bmN0aW9uIGZvciBndWFyZGluZyBvcHRpb25zIHdpdGggaXNfdmFsaWQgKi9cbmxldCBjaGVja192YWxpZCA9IChzLCByZXN1bHQpID0+XG4gIGlmIChpc192YWxpZChzKSkge1xuICAgIHJlc3VsdDtcbiAgfSBlbHNlIHtcbiAgICBOb25lO1xuICB9O1xuXG5sZXQgaXNfdHJ1ZSA9IGVxKFwidHJ1ZVwiKTtcblxubGV0IGlzX2ZhbHNlID0gZXEoXCJmYWxzZVwiKTtcblxubGV0IGlzX2xldCA9IGVxKFwibGV0XCIpO1xuXG5sZXQgaXNfZnVuID0gZXEoXCJmdW5cIik7XG5cbmxldCBpc19jYXNlID0gZXEoXCJjYXNlXCIpO1xuXG5sZXQgaXNfd2lsZCA9IGVxKFwiX1wiKTtcblxubGV0IHNwbGl0ID0gKHBvcywgbmFtZSkgPT4ge1xuICBsZXQgbGVmdF92YXIgPSBTdHJpbmcuc3ViKG5hbWUsIDAsIHBvcyk7XG4gIGxldCByaWdodF92YXIgPSBTdHJpbmcuc3ViKG5hbWUsIHBvcywgU3RyaW5nLmxlbmd0aChuYW1lKSAtIHBvcyk7XG4gIChsZWZ0X3ZhciwgcmlnaHRfdmFyKTtcbn07XG5cbi8qIFVzZWQgZm9yIFZhckJzdE1hcCAqL1xubGV0IGNvbXBhcmUgPSAoeDogdCwgeTogdCkgPT4gY29tcGFyZSh4LCB5KTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5tb2R1bGUgU2V4cCA9IFNleHBsaWIuU2V4cDtcblxubW9kdWxlIElubmVyID0ge1xuICBpbmNsdWRlIE1hcC5NYWtlKFZhcik7XG5cbiAgLyogU2VlIEludE1hcCAqL1xuICBbQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxuICB0eXBlIGJpbmRpbmcoJ3YpID0gKFZhci50LCAndik7XG5cbiAgbGV0IHBwID0gKHBwX3YsIGYsIG1hcCkgPT5cbiAgICBpdGVyKChrLCB2KSA9PiBGb3JtYXQuZnByaW50ZihmLCBcIiVzIC0+ICVhQFxcblwiLCBrLCBwcF92LCB2KSwgbWFwKTtcblxuICBsZXQgc2V4cF9vZl90ID0gKHNleHBfb2ZfdjogJ3YgPT4gU2V4cC50LCBtYXA6IHQoJ3YpKTogU2V4cC50ID0+XG4gICAgbWFwIHw+IGJpbmRpbmdzIHw+IHNleHBfb2ZfbGlzdChzZXhwX29mX2JpbmRpbmcoc2V4cF9vZl92KSk7XG4gIGxldCB0X29mX3NleHAgPSAodl9vZl9zZXhwOiBTZXhwLnQgPT4gJ3YsIHNleHA6IFNleHAudCk6IHQoJ3YpID0+XG4gICAgc2V4cCB8PiBsaXN0X29mX3NleHAoYmluZGluZ19vZl9zZXhwKHZfb2Zfc2V4cCkpIHw+IExpc3QudG9fc2VxIHw+IG9mX3NlcTtcblxuICBsZXQgeW9qc29uX29mX3QgPVxuICAgICAgKHlvanNvbl9vZl92OiAndiA9PiBZb2pzb24uU2FmZS50LCBtYXA6IHQoJ3YpKTogWW9qc29uLlNhZmUudCA9PlxuICAgIG1hcCB8PiBiaW5kaW5ncyB8PiB5b2pzb25fb2ZfbGlzdCh5b2pzb25fb2ZfYmluZGluZyh5b2pzb25fb2ZfdikpO1xuICBsZXQgdF9vZl95b2pzb24gPVxuICAgICAgKHZfb2ZfeW9qc29uOiBZb2pzb24uU2FmZS50ID0+ICd2LCB5b2pzb246IFlvanNvbi5TYWZlLnQpOiB0KCd2KSA9PlxuICAgIHlvanNvblxuICAgIHw+IGxpc3Rfb2ZfeW9qc29uKGJpbmRpbmdfb2ZfeW9qc29uKHZfb2ZfeW9qc29uKSlcbiAgICB8PiBMaXN0LnRvX3NlcVxuICAgIHw+IG9mX3NlcTtcbn07XG5cbm1vZHVsZSBWYXJCc3RNYXAwID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdF8oJ2EpID0gSW5uZXIudCgnYSk7XG5cbiAgbGV0IGVtcHR5ID0gSW5uZXIuZW1wdHk7XG5cbiAgbGV0IGlzX2VtcHR5ID0gSW5uZXIuaXNfZW1wdHk7XG5cbiAgbGV0IHNpbmdsZXRvbiA9ICgoeCwgYSkpID0+IElubmVyLnNpbmdsZXRvbih4LCBhKTtcblxuICBsZXQgZXh0ZW5kID0gKGN0eCwgKHgsIGEpKSA9PiBJbm5lci5hZGQoeCwgYSwgY3R4KTtcblxuICBsZXQgdXBkYXRlID0gKGN0eCwgZiwgeCkgPT4gSW5uZXIudXBkYXRlKHgsIGYsIGN0eCk7XG5cbiAgbGV0IHVuaW9uID0gKGN0eDEsIGN0eDIpID0+XG4gICAgSW5uZXIudW5pb24oKF94LCBhLCBfYScpID0+IFNvbWUoYSksIGN0eDEsIGN0eDIpO1xuXG4gIGxldCBsb29rdXAgPSAoY3R4LCB4KSA9PiBJbm5lci5maW5kX29wdCh4LCBjdHgpO1xuXG4gIGxldCBjb250YWlucyA9IChjdHgsIHgpID0+IElubmVyLm1lbSh4LCBjdHgpO1xuXG4gIGxldCBtYXAgPSBmID0+IElubmVyLm1hcGkoKHgsIGEpID0+IGYoKHgsIGEpKSk7XG5cbiAgbGV0IGZpbHRlciA9IGYgPT4gSW5uZXIuZmlsdGVyKCh4LCBhKSA9PiBmKCh4LCBhKSkpO1xuXG4gIGxldCBmb2xkID0gKGYsIGluaXQsIGN0eCkgPT5cbiAgICBJbm5lci5mb2xkKCh4LCBhLCBhY2MpID0+IGYoKHgsIGEpLCBhY2MpLCBjdHgsIGluaXQpO1xuXG4gIGxldCBsZW5ndGggPSBJbm5lci5jYXJkaW5hbDtcblxuICBsZXQgdG9fbGlzdCA9IGN0eCA9PiBjdHggfD4gSW5uZXIudG9fc2VxIHw+IExpc3Qub2Zfc2VxO1xuXG4gIGxldCBvZl9saXN0ID0gYmluZGluZ3MgPT4gYmluZGluZ3MgfD4gTGlzdC50b19zZXEgfD4gSW5uZXIub2Zfc2VxO1xufTtcblxubW9kdWxlIE9yZGVyZWQgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0XygnYSkgPSB7XG4gICAgbWFwOiBWYXJCc3RNYXAwLnRfKCdhKSxcbiAgICAvKiogVGhlIHJldmVyc2UgaW5zZXJ0aW9uIG9yZGVyIG9mIGJpbmRpbmdzIChkZW5vdGVkIGJ5IGtleSkuICovXG4gICAgcmV2X29yZGVyOiBsaXN0KChWYXIudCwgdW5pdCkpLFxuICB9O1xuXG4gIGxldCBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50ID0gKCkgPT5cbiAgICBmYWlsd2l0aChcIlZhckJzdE1hcC5PcmRlcmVkOiBvcmRlciBrZXkgbm90IGluIG1hcFwiKTtcblxuICBsZXQgZW1wdHkgPSB7bWFwOiBWYXJCc3RNYXAwLmVtcHR5LCByZXZfb3JkZXI6IFtdfTtcblxuICBsZXQgaXNfZW1wdHkgPSAoe21hcCwgX30pID0+IFZhckJzdE1hcDAuaXNfZW1wdHkobWFwKTtcblxuICBsZXQgc2luZ2xldG9uID0gKCh4LCBhKSkgPT4ge1xuICAgIHttYXA6IFZhckJzdE1hcDAuc2luZ2xldG9uKCh4LCBhKSksIHJldl9vcmRlcjogWyh4LCAoKSldfTtcbiAgfTtcblxuICBsZXQgZXh0ZW5kID0gKHttYXAsIHJldl9vcmRlcn0sICh4LCBhKSkgPT4ge1xuICAgIG1hcDogVmFyQnN0TWFwMC5leHRlbmQobWFwLCAoeCwgYSkpLFxuICAgIHJldl9vcmRlcjogWyh4LCAoKSksIC4uLkxpc3QucmVtb3ZlX2Fzc29jKHgsIHJldl9vcmRlcildLFxuICB9O1xuXG4gIGxldCB1bmlvbiA9XG4gICAgICAoXG4gICAgICAgIHttYXA6IG1hcDEsIHJldl9vcmRlcjogcmV2X29yZGVyMX0sXG4gICAgICAgIHttYXA6IG1hcDIsIHJldl9vcmRlcjogcmV2X29yZGVyMn0sXG4gICAgICApID0+IHtcbiAgICBsZXQgcmVjIHVuaW9uX29yZGVyID0gKG9yZGVyMSwgcmV2X29yZGVyMikgPT5cbiAgICAgIHN3aXRjaCAob3JkZXIxLCByZXZfb3JkZXIyKSB7XG4gICAgICB8IChbXSwgb3JkZXIyKSA9PiBvcmRlcjJcbiAgICAgIHwgKFsoeCwgKCkpLCAuLi5yZXZfb3JkZXIxJ10sIG9yZGVyMikgPT5cbiAgICAgICAgbGV0IHJldl9vcmRlcjInID0gWyh4LCAoKSksIC4uLkxpc3QucmVtb3ZlX2Fzc29jKHgsIG9yZGVyMildO1xuICAgICAgICB1bmlvbl9vcmRlcihyZXZfb3JkZXIxJywgcmV2X29yZGVyMicpO1xuICAgICAgfTtcblxuICAgIGxldCBtYXAgPSBWYXJCc3RNYXAwLnVuaW9uKG1hcDEsIG1hcDIpO1xuICAgIGxldCByZXZfb3JkZXIgPSB1bmlvbl9vcmRlcihMaXN0LnJldihyZXZfb3JkZXIxKSwgcmV2X29yZGVyMik7XG4gICAge21hcCwgcmV2X29yZGVyfTtcbiAgfTtcblxuICBsZXQgbG9va3VwID0gKHttYXAsIF99LCB4KSA9PiBWYXJCc3RNYXAwLmxvb2t1cChtYXAsIHgpO1xuXG4gIGxldCBjb250YWlucyA9ICh7bWFwLCBffSwgeCkgPT4gVmFyQnN0TWFwMC5jb250YWlucyhtYXAsIHgpO1xuXG4gIGxldCBtYXBrID0gKGYsIHttYXAsIHJldl9vcmRlcn0pID0+IHtcbiAgICBsZXQgbWFwID0gbWFwIHw+IFZhckJzdE1hcDAubWFwKGYpO1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IG1hcG8gPSAoZiwge21hcCwgcmV2X29yZGVyfSkgPT4ge1xuICAgIGxldCBtYXAgPVxuICAgICAgcmV2X29yZGVyXG4gICAgICB8PiBMaXN0LnJldlxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgIChtYXAnLCAoeCwgKCkpKSA9PlxuICAgICAgICAgICAgIHN3aXRjaCAoVmFyQnN0TWFwMC5sb29rdXAobWFwLCB4KSkge1xuICAgICAgICAgICAgIHwgU29tZShhKSA9PlxuICAgICAgICAgICAgICAgbGV0IGEgPSBmKCh4LCBhKSk7XG4gICAgICAgICAgICAgICBWYXJCc3RNYXAwLmV4dGVuZChtYXAnLCAoeCwgYSkpO1xuICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KClcbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICBWYXJCc3RNYXAwLmVtcHR5LFxuICAgICAgICAgKTtcbiAgICB7bWFwLCByZXZfb3JkZXJ9O1xuICB9O1xuXG4gIGxldCBmaWx0ZXJrID0gKGYsIHttYXAsIHJldl9vcmRlcn0pID0+IHtcbiAgICBsZXQgbWFwID0gVmFyQnN0TWFwMC5maWx0ZXIoZiwgbWFwKTtcbiAgICBsZXQgcmV2X29yZGVyID1cbiAgICAgIHJldl9vcmRlclxuICAgICAgfD4gTGlzdC5yZXZcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoeCwgXykpID0+IFZhckJzdE1hcDAuY29udGFpbnMobWFwLCB4KSlcbiAgICAgIHw+IExpc3QucmV2O1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IGZpbHRlcm8gPSAoZiwge21hcCwgcmV2X29yZGVyfSkgPT4ge1xuICAgIGxldCAobWFwLCByZXZfb3JkZXIpID1cbiAgICAgIHJldl9vcmRlclxuICAgICAgfD4gTGlzdC5yZXZcbiAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAoKG1hcCcsIHJldl9vcmRlcicpLCAoeCwgKCkpKSA9PiB7XG4gICAgICAgICAgICAgbGV0IHJldl9vcmRlcicgPSByZWYocmV2X29yZGVyJyk7XG4gICAgICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICAgICBWYXJCc3RNYXAwLnVwZGF0ZShcbiAgICAgICAgICAgICAgICAgbWFwJyxcbiAgICAgICAgICAgICAgICAgZnVuXG4gICAgICAgICAgICAgICAgIHwgU29tZShhKSB3aGVuICFmKCh4LCBhKSkgPT4gTm9uZVxuICAgICAgICAgICAgICAgICB8IFNvbWUoYSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgcmV2X29yZGVyJyA6PSBbKHgsICgpKSwgLi4ucmV2X29yZGVyJ15dO1xuICAgICAgICAgICAgICAgICAgICAgU29tZShhKTtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KCksXG4gICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgIChtYXAsIHJldl9vcmRlcideKTtcbiAgICAgICAgICAgfSxcbiAgICAgICAgICAgKG1hcCwgW10pLFxuICAgICAgICAgKTtcblxuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IGZvbGRrID0gKGYsIGluaXQsIHttYXAsIF99KSA9PlxuICAgIFZhckJzdE1hcDAuZm9sZCgoKHgsIGEpLCBhY2MpID0+IGYoKHgsIGEpLCBhY2MpLCBpbml0LCBtYXApO1xuXG4gIGxldCBmb2xkbyA9IChmLCBpbml0LCB7bWFwLCByZXZfb3JkZXJ9KSA9PlxuICAgIHJldl9vcmRlclxuICAgIHw+IExpc3QucmV2XG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAoYWNjLCAoeCwgKCkpKSA9PlxuICAgICAgICAgICBzd2l0Y2ggKFZhckJzdE1hcDAubG9va3VwKG1hcCwgeCkpIHtcbiAgICAgICAgICAgfCBTb21lKGEpID0+IGYoKHgsIGEpLCBhY2MpXG4gICAgICAgICAgIHwgTm9uZSA9PiBmYWlsd2l0aF9rZXlzaW5jb25zaXN0ZW50KClcbiAgICAgICAgICAgfSxcbiAgICAgICAgIGluaXQsXG4gICAgICAgKTtcblxuICBsZXQgbGVuZ3RoID0gKHtyZXZfb3JkZXIsIF99KSA9PiBMaXN0Lmxlbmd0aChyZXZfb3JkZXIpO1xuXG4gIGxldCB0b19saXN0ayA9ICh7bWFwLCBffSkgPT4gVmFyQnN0TWFwMC50b19saXN0KG1hcCk7XG5cbiAgbGV0IHRvX2xpc3RvID0gKHttYXAsIHJldl9vcmRlcn0pID0+XG4gICAgcmV2X29yZGVyXG4gICAgfD4gTGlzdC5yZXZcbiAgICB8PiBMaXN0Lm1hcCgoKHgsICgpKSkgPT5cbiAgICAgICAgIHN3aXRjaCAoVmFyQnN0TWFwMC5sb29rdXAobWFwLCB4KSkge1xuICAgICAgICAgfCBTb21lKGEpID0+ICh4LCBhKVxuICAgICAgICAgfCBOb25lID0+IGZhaWx3aXRoX2tleXNpbmNvbnNpc3RlbnQoKVxuICAgICAgICAgfVxuICAgICAgICk7XG5cbiAgbGV0IG9mX2xpc3QgPSBiaW5kaW5ncyA9PiB7XG4gICAgbGV0IG1hcCA9IFZhckJzdE1hcDAub2ZfbGlzdChiaW5kaW5ncyk7XG4gICAgbGV0IHJldl9vcmRlciA9IGJpbmRpbmdzIHw+IExpc3QubWFwKCgoeCwgXykpID0+ICh4LCAoKSkpIHw+IExpc3QucmV2O1xuICAgIHttYXAsIHJldl9vcmRlcn07XG4gIH07XG5cbiAgbGV0IHdpdGhvdXRfa2V5cyA9IChrZXlzLCBtKSA9PiB7XG4gICAgZmlsdGVyaygoKHMsIF8pKSA9PiAhTGlzdC5leGlzdHMoeCA9PiB4ID09IHMsIGtleXMpLCBtKTtcbiAgfTtcbn07XG5cbmluY2x1ZGUgVmFyQnN0TWFwMDtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbmxldCBjb250aW51ZSA9IHggPT4geDtcbmxldCBzdG9wID0gKF8sIHgpID0+IHg7XG5cbi8qIFRPRE9bTWF0dF06IEV4cGxhaW4gbWFwX3Rlcm0gKi9cblxubW9kdWxlIHJlYyBBbnk6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRXhwKEV4cC50KVxuICAgIHwgUGF0KFBhdC50KVxuICAgIHwgVHlwKFR5cC50KVxuICAgIHwgVFBhdChUUGF0LnQpXG4gICAgfCBSdWwoUnVsLnQpXG4gICAgfCBOdWwodW5pdClcbiAgICB8IEFueSh1bml0KTtcblxuICBsZXQgbWFwX3Rlcm06XG4gICAgKFxuICAgICAgfmZfZXhwOiAoRXhwLnQgPT4gRXhwLnQsIEV4cC50KSA9PiBFeHAudD0/LFxuICAgICAgfmZfcGF0OiAoUGF0LnQgPT4gUGF0LnQsIFBhdC50KSA9PiBQYXQudD0/LFxuICAgICAgfmZfdHlwOiAoVHlwLnQgPT4gVHlwLnQsIFR5cC50KSA9PiBUeXAudD0/LFxuICAgICAgfmZfdHBhdDogKFRQYXQudCA9PiBUUGF0LnQsIFRQYXQudCkgPT4gVFBhdC50PT8sXG4gICAgICB+Zl9ydWw6IChSdWwudCA9PiBSdWwudCwgUnVsLnQpID0+IFJ1bC50PT8sXG4gICAgICB+Zl9hbnk6IChBbnkudCA9PiBBbnkudCwgQW55LnQpID0+IEFueS50PT8sXG4gICAgICB0XG4gICAgKSA9PlxuICAgIHQ7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRXhwKEV4cC50KVxuICAgIHwgUGF0KFBhdC50KVxuICAgIHwgVHlwKFR5cC50KVxuICAgIHwgVFBhdChUUGF0LnQpXG4gICAgfCBSdWwoUnVsLnQpXG4gICAgfCBOdWwodW5pdClcbiAgICB8IEFueSh1bml0KTtcblxuICBsZXQgbWFwX3Rlcm0gPVxuICAgICAgKFxuICAgICAgICB+Zl9leHA9Y29udGludWUsXG4gICAgICAgIH5mX3BhdD1jb250aW51ZSxcbiAgICAgICAgfmZfdHlwPWNvbnRpbnVlLFxuICAgICAgICB+Zl90cGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl9ydWw9Y29udGludWUsXG4gICAgICAgIH5mX2FueT1jb250aW51ZSxcbiAgICAgICAgeCxcbiAgICAgICkgPT4ge1xuICAgIGxldCByZWNfY2FsbCA9IHkgPT5cbiAgICAgIHN3aXRjaCAoeSkge1xuICAgICAgfCBFeHAoeCkgPT5cbiAgICAgICAgRXhwKEV4cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSwgeCkpXG4gICAgICB8IFBhdCh4KSA9PlxuICAgICAgICBQYXQoUGF0Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55LCB4KSlcbiAgICAgIHwgVHlwKHgpID0+XG4gICAgICAgIFR5cChUeXAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnksIHgpKVxuICAgICAgfCBUUGF0KHgpID0+XG4gICAgICAgIFRQYXQoXG4gICAgICAgICAgVFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSwgeCksXG4gICAgICAgIClcbiAgICAgIHwgUnVsKHgpID0+XG4gICAgICAgIFJ1bChSdWwubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnksIHgpKVxuICAgICAgfCBOdWwgKCkgPT4gTnVsKClcbiAgICAgIHwgQW55ICgpID0+IEFueSgpXG4gICAgICB9O1xuICAgIHggfD4gZl9hbnkocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCBmYXN0X2VxdWFsID0gKHgsIHkpID0+XG4gICAgc3dpdGNoICh4LCB5KSB7XG4gICAgfCAoRXhwKHgpLCBFeHAoeSkpID0+IEV4cC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoUGF0KHgpLCBQYXQoeSkpID0+IFBhdC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoVHlwKHgpLCBUeXAoeSkpID0+IFR5cC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoVFBhdCh4KSwgVFBhdCh5KSkgPT4gVFBhdC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoUnVsKHgpLCBSdWwoeSkpID0+IFJ1bC5mYXN0X2VxdWFsKHgsIHkpXG4gICAgfCAoTnVsICgpLCBOdWwgKCkpID0+IHRydWVcbiAgICB8IChBbnkgKCksIEFueSAoKSkgPT4gdHJ1ZVxuICAgIHwgKEV4cChfKSwgXylcbiAgICB8IChQYXQoXyksIF8pXG4gICAgfCAoVHlwKF8pLCBfKVxuICAgIHwgKFRQYXQoXyksIF8pXG4gICAgfCAoUnVsKF8pLCBfKVxuICAgIHwgKE51bCAoKSwgXylcbiAgICB8IChBbnkgKCksIF8pID0+IGZhbHNlXG4gICAgfTtcbn1cbmFuZCBFeHA6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGRlZmVycmFsX3Bvc2l0aW9uID1cbiAgICB8IEluQXBcbiAgICB8IE91dHNpZGVBcDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgRHluYW1pY0Vycm9ySG9sZSh0LCBJbnZhbGlkT3BlcmF0aW9uRXJyb3IudClcbiAgICB8IEZhaWxlZENhc3QodCwgVHlwLnQsIFR5cC50KVxuICAgIHwgRGVmZXJyYWwoZGVmZXJyYWxfcG9zaXRpb24pXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgRnVuKFxuICAgICAgICBQYXQudCxcbiAgICAgICAgdCxcbiAgICAgICAgW0BzaG93Lm9wYXF1ZV0gb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSxcbiAgICAgICAgb3B0aW9uKFZhci50KSxcbiAgICAgIClcbiAgICB8IFR5cEZ1bihUUGF0LnQsIHQsIG9wdGlvbihWYXIudCkpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgTGV0KFBhdC50LCB0LCB0KVxuICAgIHwgRml4RihQYXQudCwgdCwgb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSlcbiAgICB8IFR5QWxpYXMoVFBhdC50LCBUeXAudCwgdClcbiAgICB8IEFwKE9wZXJhdG9ycy5hcF9kaXJlY3Rpb24sIHQsIHQpXG4gICAgfCBUeXBBcCh0LCBUeXAudClcbiAgICB8IERlZmVycmVkQXAodCwgbGlzdCh0KSlcbiAgICB8IElmKHQsIHQsIHQpXG4gICAgfCBTZXEodCwgdClcbiAgICB8IFRlc3QodClcbiAgICB8IEZpbHRlcihTdGVwcGVyRmlsdGVyS2luZC50LCB0KVxuICAgIHwgQ2xvc3VyZShbQHNob3cub3BhcXVlXSBDbG9zdXJlRW52aXJvbm1lbnQudCwgdClcbiAgICB8IFBhcmVucyh0KSAvLyAoXG4gICAgfCBDb25zKHQsIHQpXG4gICAgfCBMaXN0Q29uY2F0KHQsIHQpXG4gICAgfCBVbk9wKE9wZXJhdG9ycy5vcF91biwgdClcbiAgICB8IEJpbk9wKE9wZXJhdG9ycy5vcF9iaW4sIHQsIHQpXG4gICAgfCBCdWlsdGluRnVuKHN0cmluZylcbiAgICB8IE1hdGNoKHQsIGxpc3QoKFBhdC50LCB0KSkpXG4gICAgLyogSU5WQVJJQU5UOiBpbiBkeW5hbWljIGV4cHJlc3Npb25zLCBjYXN0cyBtdXN0IGJlIGJldHdlZW5cbiAgICAgICB0d28gY29uc2lzdGVudCB0eXBlcy4gQm90aCB0eXBlcyBzaG91bGQgYmUgbm9ybWFsaXplZCBpblxuICAgICAgIGR5bmFtaWNzIGZvciB0aGUgY2FzdCBjYWxjdWx1cyB0byB3b3JrIHJpZ2h0LiAqL1xuICAgIHwgQ2FzdCh0LCBUeXAudCwgVHlwLnQpXG4gIGFuZCB0ID0gSWRUYWdnZWQudCh0ZXJtKTtcblxuICBsZXQgbWFwX3Rlcm06XG4gICAgKFxuICAgICAgfmZfZXhwOiAoRXhwLnQgPT4gRXhwLnQsIEV4cC50KSA9PiBFeHAudD0/LFxuICAgICAgfmZfcGF0OiAoUGF0LnQgPT4gUGF0LnQsIFBhdC50KSA9PiBQYXQudD0/LFxuICAgICAgfmZfdHlwOiAoVHlwLnQgPT4gVHlwLnQsIFR5cC50KSA9PiBUeXAudD0/LFxuICAgICAgfmZfdHBhdDogKFRQYXQudCA9PiBUUGF0LnQsIFRQYXQudCkgPT4gVFBhdC50PT8sXG4gICAgICB+Zl9ydWw6IChSdWwudCA9PiBSdWwudCwgUnVsLnQpID0+IFJ1bC50PT8sXG4gICAgICB+Zl9hbnk6IChBbnkudCA9PiBBbnkudCwgQW55LnQpID0+IEFueS50PT8sXG4gICAgICB0XG4gICAgKSA9PlxuICAgIHQ7XG5cbiAgbGV0IGZhc3RfZXF1YWw6ICh0LCB0KSA9PiBib29sO1xufSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGRlZmVycmFsX3Bvc2l0aW9uID1cbiAgICB8IEluQXBcbiAgICB8IE91dHNpZGVBcDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZSAvLyBDb21iaW5lIHRoZSBwcm9ibGVtcyBpbnRvIG9uZSBjb25zdHJ1Y3RcbiAgICB8IE11bHRpSG9sZShsaXN0KEFueS50KSlcbiAgICB8IER5bmFtaWNFcnJvckhvbGUodCwgSW52YWxpZE9wZXJhdGlvbkVycm9yLnQpXG4gICAgfCBGYWlsZWRDYXN0KHQsIFR5cC50LCBUeXAudCkgLy8gVE9ETzogZ2V0IHJpZCBvZiBmYWlsZWRjYXN0XG4gICAgfCBEZWZlcnJhbChkZWZlcnJhbF9wb3NpdGlvbilcbiAgICB8IEJvb2woYm9vbClcbiAgICB8IEludChpbnQpXG4gICAgfCBGbG9hdChmbG9hdClcbiAgICB8IFN0cmluZyhzdHJpbmcpXG4gICAgfCBMaXN0TGl0KGxpc3QodCkpXG4gICAgfCBDb25zdHJ1Y3RvcihzdHJpbmcpXG4gICAgfCBGdW4oXG4gICAgICAgIFBhdC50LFxuICAgICAgICB0LFxuICAgICAgICBbQHNob3cub3BhcXVlXSBvcHRpb24oQ2xvc3VyZUVudmlyb25tZW50LnQpLFxuICAgICAgICBvcHRpb24oVmFyLnQpLFxuICAgICAgKVxuICAgIHwgVHlwRnVuKFRQYXQudCwgdCwgb3B0aW9uKHN0cmluZykpXG4gICAgfCBUdXBsZShsaXN0KHQpKVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgTGV0KFBhdC50LCB0LCB0KVxuICAgIHwgRml4RihQYXQudCwgdCwgW0BzaG93Lm9wYXF1ZV0gb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSlcbiAgICB8IFR5QWxpYXMoVFBhdC50LCBUeXAudCwgdClcbiAgICB8IEFwKE9wZXJhdG9ycy5hcF9kaXJlY3Rpb24sIHQsIHQpIC8vIG5vdGU6IGZ1bmN0aW9uIGlzIGFsd2F5cyBmaXJzdCB0aGVuIGFyZ3VtZW50OyBldmVuIGluIHBpcGUgbW9kZVxuICAgIHwgVHlwQXAodCwgVHlwLnQpXG4gICAgfCBEZWZlcnJlZEFwKHQsIGxpc3QodCkpXG4gICAgfCBJZih0LCB0LCB0KVxuICAgIHwgU2VxKHQsIHQpXG4gICAgfCBUZXN0KHQpXG4gICAgfCBGaWx0ZXIoU3RlcHBlckZpbHRlcktpbmQudCwgdClcbiAgICB8IENsb3N1cmUoW0BzaG93Lm9wYXF1ZV0gQ2xvc3VyZUVudmlyb25tZW50LnQsIHQpXG4gICAgfCBQYXJlbnModClcbiAgICB8IENvbnModCwgdClcbiAgICB8IExpc3RDb25jYXQodCwgdClcbiAgICB8IFVuT3AoT3BlcmF0b3JzLm9wX3VuLCB0KVxuICAgIHwgQmluT3AoT3BlcmF0b3JzLm9wX2JpbiwgdCwgdClcbiAgICB8IEJ1aWx0aW5GdW4oc3RyaW5nKSAvLy8gRG9lc24ndCBjdXJyZW50bHkgaGF2ZSBhIGRpc3Rpbmd1aXNoYWJsZSBzeW50YXhcbiAgICB8IE1hdGNoKHQsIGxpc3QoKFBhdC50LCB0KSkpXG4gICAgfCBDYXN0KHQsIFR5cC50LCBUeXAudClcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGV4cF9tYXBfdGVybSA9XG4gICAgICBFeHAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBwYXRfbWFwX3Rlcm0gPVxuICAgICAgUGF0Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgdHlwX21hcF90ZXJtID1cbiAgICAgIFR5cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHRwYXRfbWFwX3Rlcm0gPVxuICAgICAgVFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IGFueV9tYXBfdGVybSA9XG4gICAgICBBbnkubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBmbHRfbWFwX3Rlcm0gPVxuICAgICAgU3RlcHBlckZpbHRlcktpbmQubWFwX3Rlcm0oXG4gICAgICAgIH5mX2V4cCxcbiAgICAgICAgfmZfcGF0LFxuICAgICAgICB+Zl90eXAsXG4gICAgICAgIH5mX3RwYXQsXG4gICAgICAgIH5mX3J1bCxcbiAgICAgICAgfmZfYW55LFxuICAgICAgKTtcbiAgICBsZXQgcmVjX2NhbGwgPSAoe3Rlcm0sIF99IGFzIGV4cDogdCkgPT4ge1xuICAgICAgLi4uZXhwLFxuICAgICAgdGVybTpcbiAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IEJvb2woXylcbiAgICAgICAgfCBJbnQoXylcbiAgICAgICAgfCBGbG9hdChfKVxuICAgICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICAgIHwgU3RyaW5nKF8pXG4gICAgICAgIHwgRGVmZXJyYWwoXylcbiAgICAgICAgfCBWYXIoXykgPT4gdGVybVxuICAgICAgICB8IE11bHRpSG9sZSh0aGluZ3MpID0+IE11bHRpSG9sZShMaXN0Lm1hcChhbnlfbWFwX3Rlcm0sIHRoaW5ncykpXG4gICAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShlLCBlcnIpID0+IER5bmFtaWNFcnJvckhvbGUoZXhwX21hcF90ZXJtKGUpLCBlcnIpXG4gICAgICAgIHwgRmFpbGVkQ2FzdChlLCB0MSwgdDIpID0+IEZhaWxlZENhc3QoZXhwX21hcF90ZXJtKGUpLCB0MSwgdDIpXG4gICAgICAgIHwgTGlzdExpdCh0cykgPT4gTGlzdExpdChMaXN0Lm1hcChleHBfbWFwX3Rlcm0sIHRzKSlcbiAgICAgICAgfCBGdW4ocCwgZSwgZW52LCBmKSA9PlxuICAgICAgICAgIEZ1bihwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlKSwgZW52LCBmKVxuICAgICAgICB8IFR5cEZ1bih0cCwgZSwgZikgPT4gVHlwRnVuKHRwYXRfbWFwX3Rlcm0odHApLCBleHBfbWFwX3Rlcm0oZSksIGYpXG4gICAgICAgIHwgVHVwbGUoeHMpID0+IFR1cGxlKExpc3QubWFwKGV4cF9tYXBfdGVybSwgeHMpKVxuICAgICAgICB8IExldChwLCBlMSwgZTIpID0+XG4gICAgICAgICAgTGV0KHBhdF9tYXBfdGVybShwKSwgZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBGaXhGKHAsIGUsIGVudikgPT4gRml4RihwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlKSwgZW52KVxuICAgICAgICB8IFR5QWxpYXModHAsIHQsIGUpID0+XG4gICAgICAgICAgVHlBbGlhcyh0cGF0X21hcF90ZXJtKHRwKSwgdHlwX21hcF90ZXJtKHQpLCBleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgQXAob3AsIGUxLCBlMikgPT4gQXAob3AsIGV4cF9tYXBfdGVybShlMSksIGV4cF9tYXBfdGVybShlMikpXG4gICAgICAgIHwgVHlwQXAoZSwgdCkgPT4gVHlwQXAoZXhwX21hcF90ZXJtKGUpLCB0eXBfbWFwX3Rlcm0odCkpXG4gICAgICAgIHwgRGVmZXJyZWRBcChlLCBlcykgPT5cbiAgICAgICAgICBEZWZlcnJlZEFwKGV4cF9tYXBfdGVybShlKSwgTGlzdC5tYXAoZXhwX21hcF90ZXJtLCBlcykpXG4gICAgICAgIHwgSWYoZTEsIGUyLCBlMykgPT5cbiAgICAgICAgICBJZihleHBfbWFwX3Rlcm0oZTEpLCBleHBfbWFwX3Rlcm0oZTIpLCBleHBfbWFwX3Rlcm0oZTMpKVxuICAgICAgICB8IFNlcShlMSwgZTIpID0+IFNlcShleHBfbWFwX3Rlcm0oZTEpLCBleHBfbWFwX3Rlcm0oZTIpKVxuICAgICAgICB8IFRlc3QoZSkgPT4gVGVzdChleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgRmlsdGVyKGYsIGUpID0+IEZpbHRlcihmbHRfbWFwX3Rlcm0oZiksIGV4cF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBDbG9zdXJlKGVudiwgZSkgPT4gQ2xvc3VyZShlbnYsIGV4cF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBQYXJlbnMoZSkgPT4gUGFyZW5zKGV4cF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBDb25zKGUxLCBlMikgPT4gQ29ucyhleHBfbWFwX3Rlcm0oZTEpLCBleHBfbWFwX3Rlcm0oZTIpKVxuICAgICAgICB8IExpc3RDb25jYXQoZTEsIGUyKSA9PlxuICAgICAgICAgIExpc3RDb25jYXQoZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBVbk9wKG9wLCBlKSA9PiBVbk9wKG9wLCBleHBfbWFwX3Rlcm0oZSkpXG4gICAgICAgIHwgQmluT3Aob3AsIGUxLCBlMikgPT5cbiAgICAgICAgICBCaW5PcChvcCwgZXhwX21hcF90ZXJtKGUxKSwgZXhwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBCdWlsdGluRnVuKHN0cikgPT4gQnVpbHRpbkZ1bihzdHIpXG4gICAgICAgIHwgTWF0Y2goZSwgcmxzKSA9PlxuICAgICAgICAgIE1hdGNoKFxuICAgICAgICAgICAgZXhwX21hcF90ZXJtKGUpLFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICgocCwgZSkpID0+IChwYXRfbWFwX3Rlcm0ocCksIGV4cF9tYXBfdGVybShlKSksXG4gICAgICAgICAgICAgIHJscyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICB8IENhc3QoZSwgdDEsIHQyKSA9PiBDYXN0KGV4cF9tYXBfdGVybShlKSwgdDEsIHQyKVxuICAgICAgICB9LFxuICAgIH07XG4gICAgeCB8PiBmX2V4cChyZWNfY2FsbCk7XG4gIH07XG5cbiAgbGV0IHJlYyBmYXN0X2VxdWFsID0gKGUxLCBlMikgPT5cbiAgICBzd2l0Y2ggKGUxIHw+IElkVGFnZ2VkLnRlcm1fb2YsIGUyIHw+IElkVGFnZ2VkLnRlcm1fb2YpIHtcbiAgICB8IChEeW5hbWljRXJyb3JIb2xlKHgsIF8pLCBfKVxuICAgIHwgKFBhcmVucyh4KSwgXykgPT4gZmFzdF9lcXVhbCh4LCBlMilcbiAgICB8IChfLCBEeW5hbWljRXJyb3JIb2xlKHgsIF8pKVxuICAgIHwgKF8sIFBhcmVucyh4KSkgPT4gZmFzdF9lcXVhbChlMSwgeClcbiAgICB8IChFbXB0eUhvbGUsIEVtcHR5SG9sZSkgPT4gdHJ1ZVxuICAgIHwgKEludmFsaWQoczEpLCBJbnZhbGlkKHMyKSkgPT4gczEgPT0gczJcbiAgICB8IChNdWx0aUhvbGUoeHMpLCBNdWx0aUhvbGUoeXMpKSB3aGVuIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cykgPT5cbiAgICAgIExpc3QuZXF1YWwoQW55LmZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChGYWlsZWRDYXN0KGUxLCB0MSwgdDIpLCBGYWlsZWRDYXN0KGUyLCB0MywgdDQpKSA9PlxuICAgICAgRXhwLmZhc3RfZXF1YWwoZTEsIGUyKVxuICAgICAgJiYgVHlwLmZhc3RfZXF1YWwodDEsIHQzKVxuICAgICAgJiYgVHlwLmZhc3RfZXF1YWwodDIsIHQ0KVxuICAgIHwgKERlZmVycmFsKGQxKSwgRGVmZXJyYWwoZDIpKSA9PiBkMSA9PSBkMlxuICAgIHwgKEJvb2woYjEpLCBCb29sKGIyKSkgPT4gYjEgPT0gYjJcbiAgICB8IChJbnQoaTEpLCBJbnQoaTIpKSA9PiBpMSA9PSBpMlxuICAgIHwgKEZsb2F0KGYxKSwgRmxvYXQoZjIpKSA9PiBmMSA9PSBmMlxuICAgIHwgKFN0cmluZyhzMSksIFN0cmluZyhzMikpID0+IHMxID09IHMyXG4gICAgfCAoTGlzdExpdCh4cyksIExpc3RMaXQoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKSAmJiBMaXN0LmVxdWFsKGZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChDb25zdHJ1Y3RvcihjMSksIENvbnN0cnVjdG9yKGMyKSkgPT4gYzEgPT0gYzJcbiAgICB8IChGdW4ocDEsIGUxLCBlbnYxLCBfKSwgRnVuKHAyLCBlMiwgZW52MiwgXykpID0+XG4gICAgICBQYXQuZmFzdF9lcXVhbChwMSwgcDIpXG4gICAgICAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIE9wdGlvbi5lcXVhbChDbG9zdXJlRW52aXJvbm1lbnQuaWRfZXF1YWwsIGVudjEsIGVudjIpXG4gICAgfCAoVHlwRnVuKHRwMSwgZTEsIF8pLCBUeXBGdW4odHAyLCBlMiwgXykpID0+XG4gICAgICBUUGF0LmZhc3RfZXF1YWwodHAxLCB0cDIpICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgIHwgKFR1cGxlKHhzKSwgVHVwbGUoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKSAmJiBMaXN0LmVxdWFsKGZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChWYXIodjEpLCBWYXIodjIpKSA9PiB2MSA9PSB2MlxuICAgIHwgKExldChwMSwgZTEsIGUyKSwgTGV0KHAyLCBlMywgZTQpKSA9PlxuICAgICAgUGF0LmZhc3RfZXF1YWwocDEsIHAyKSAmJiBmYXN0X2VxdWFsKGUxLCBlMykgJiYgZmFzdF9lcXVhbChlMiwgZTQpXG4gICAgfCAoRml4RihwMSwgZTEsIGMxKSwgRml4RihwMiwgZTIsIGMyKSkgPT5cbiAgICAgIFBhdC5mYXN0X2VxdWFsKHAxLCBwMilcbiAgICAgICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgICAgJiYgT3B0aW9uLmVxdWFsKENsb3N1cmVFbnZpcm9ubWVudC5pZF9lcXVhbCwgYzEsIGMyKVxuICAgIHwgKFR5QWxpYXModHAxLCB0MSwgZTEpLCBUeUFsaWFzKHRwMiwgdDIsIGUyKSkgPT5cbiAgICAgIFRQYXQuZmFzdF9lcXVhbCh0cDEsIHRwMilcbiAgICAgICYmIFR5cC5mYXN0X2VxdWFsKHQxLCB0MilcbiAgICAgICYmIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgIHwgKEFwKGQxLCBlMSwgZTIpLCBBcChkMiwgZTMsIGU0KSkgPT5cbiAgICAgIGQxID09IGQyICYmIGZhc3RfZXF1YWwoZTEsIGUzKSAmJiBmYXN0X2VxdWFsKGUyLCBlNClcbiAgICB8IChUeXBBcChlMSwgdDEpLCBUeXBBcChlMiwgdDIpKSA9PlxuICAgICAgZmFzdF9lcXVhbChlMSwgZTIpICYmIFR5cC5mYXN0X2VxdWFsKHQxLCB0MilcbiAgICB8IChEZWZlcnJlZEFwKGUxLCBlczEpLCBEZWZlcnJlZEFwKGUyLCBlczIpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoZXMxKSA9PSBMaXN0Lmxlbmd0aChlczIpXG4gICAgICAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIExpc3QuZXF1YWwoZmFzdF9lcXVhbCwgZXMxLCBlczIpXG4gICAgfCAoSWYoZTEsIGUyLCBlMyksIElmKGU0LCBlNSwgZTYpKSA9PlxuICAgICAgZmFzdF9lcXVhbChlMSwgZTQpICYmIGZhc3RfZXF1YWwoZTIsIGU1KSAmJiBmYXN0X2VxdWFsKGUzLCBlNilcbiAgICB8IChTZXEoZTEsIGUyKSwgU2VxKGUzLCBlNCkpID0+XG4gICAgICBmYXN0X2VxdWFsKGUxLCBlMykgJiYgZmFzdF9lcXVhbChlMiwgZTQpXG4gICAgfCAoVGVzdChlMSksIFRlc3QoZTIpKSA9PiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICB8IChGaWx0ZXIoZjEsIGUxKSwgRmlsdGVyKGYyLCBlMikpID0+XG4gICAgICBTdGVwcGVyRmlsdGVyS2luZC5mYXN0X2VxdWFsKGYxLCBmMikgJiYgZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgfCAoQ2xvc3VyZShjMSwgZTEpLCBDbG9zdXJlKGMyLCBlMikpID0+XG4gICAgICBDbG9zdXJlRW52aXJvbm1lbnQuaWRfZXF1YWwoYzEsIGMyKSAmJiBmYXN0X2VxdWFsKGUxLCBlMilcbiAgICB8IChDb25zKGUxLCBlMiksIENvbnMoZTMsIGU0KSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUzKSAmJiBmYXN0X2VxdWFsKGUyLCBlNClcbiAgICB8IChMaXN0Q29uY2F0KGUxLCBlMiksIExpc3RDb25jYXQoZTMsIGU0KSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUzKSAmJiBmYXN0X2VxdWFsKGUyLCBlNClcbiAgICB8IChVbk9wKG8xLCBlMSksIFVuT3AobzIsIGUyKSkgPT4gbzEgPT0gbzIgJiYgZmFzdF9lcXVhbChlMSwgZTIpXG4gICAgfCAoQmluT3AobzEsIGUxLCBlMiksIEJpbk9wKG8yLCBlMywgZTQpKSA9PlxuICAgICAgbzEgPT0gbzIgJiYgZmFzdF9lcXVhbChlMSwgZTMpICYmIGZhc3RfZXF1YWwoZTIsIGU0KVxuICAgIHwgKEJ1aWx0aW5GdW4oZjEpLCBCdWlsdGluRnVuKGYyKSkgPT4gZjEgPT0gZjJcbiAgICB8IChNYXRjaChlMSwgcmxzMSksIE1hdGNoKGUyLCBybHMyKSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUyKVxuICAgICAgJiYgTGlzdC5sZW5ndGgocmxzMSkgPT0gTGlzdC5sZW5ndGgocmxzMilcbiAgICAgICYmIExpc3QuZm9yX2FsbDIoXG4gICAgICAgICAgICgocDEsIGUxKSwgKHAyLCBlMikpID0+XG4gICAgICAgICAgICAgUGF0LmZhc3RfZXF1YWwocDEsIHAyKSAmJiBmYXN0X2VxdWFsKGUxLCBlMiksXG4gICAgICAgICAgIHJsczEsXG4gICAgICAgICAgIHJsczIsXG4gICAgICAgICApXG4gICAgfCAoQ2FzdChlMSwgdDEsIHQyKSwgQ2FzdChlMiwgdDMsIHQ0KSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoZTEsIGUyKSAmJiBUeXAuZmFzdF9lcXVhbCh0MSwgdDMpICYmIFR5cC5mYXN0X2VxdWFsKHQyLCB0NClcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKEZhaWxlZENhc3QoXyksIF8pXG4gICAgfCAoRGVmZXJyYWwoXyksIF8pXG4gICAgfCAoQm9vbChfKSwgXylcbiAgICB8IChJbnQoXyksIF8pXG4gICAgfCAoRmxvYXQoXyksIF8pXG4gICAgfCAoU3RyaW5nKF8pLCBfKVxuICAgIHwgKExpc3RMaXQoXyksIF8pXG4gICAgfCAoQ29uc3RydWN0b3IoXyksIF8pXG4gICAgfCAoRnVuKF8pLCBfKVxuICAgIHwgKFR5cEZ1bihfKSwgXylcbiAgICB8IChUdXBsZShfKSwgXylcbiAgICB8IChWYXIoXyksIF8pXG4gICAgfCAoTGV0KF8pLCBfKVxuICAgIHwgKEZpeEYoXyksIF8pXG4gICAgfCAoVHlBbGlhcyhfKSwgXylcbiAgICB8IChBcChfKSwgXylcbiAgICB8IChUeXBBcChfKSwgXylcbiAgICB8IChEZWZlcnJlZEFwKF8pLCBfKVxuICAgIHwgKElmKF8pLCBfKVxuICAgIHwgKFNlcShfKSwgXylcbiAgICB8IChUZXN0KF8pLCBfKVxuICAgIHwgKEZpbHRlcihfKSwgXylcbiAgICB8IChDbG9zdXJlKF8pLCBfKVxuICAgIHwgKENvbnMoXyksIF8pXG4gICAgfCAoTGlzdENvbmNhdChfKSwgXylcbiAgICB8IChVbk9wKF8pLCBfKVxuICAgIHwgKEJpbk9wKF8pLCBfKVxuICAgIHwgKEJ1aWx0aW5GdW4oXyksIF8pXG4gICAgfCAoTWF0Y2goXyksIF8pXG4gICAgfCAoQ2FzdChfKSwgXylcbiAgICB8IChNdWx0aUhvbGUoXyksIF8pXG4gICAgfCAoRW1wdHlIb2xlLCBfKSA9PiBmYWxzZVxuICAgIH07XG59XG5hbmQgUGF0OiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFBhcmVucyh0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IENhc3QodCwgVHlwLnQsIFR5cC50KSAvLyBUaGUgc2Vjb25kIG9uZSBpcyBoaWRkZW4gZnJvbSB0aGUgdXNlclxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBmYXN0X2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoaW50KVxuICAgIHwgRmxvYXQoZmxvYXQpXG4gICAgfCBCb29sKGJvb2wpXG4gICAgfCBTdHJpbmcoc3RyaW5nKVxuICAgIHwgTGlzdExpdChsaXN0KHQpKVxuICAgIHwgQ29uc3RydWN0b3Ioc3RyaW5nKVxuICAgIHwgQ29ucyh0LCB0KVxuICAgIHwgVmFyKFZhci50KVxuICAgIHwgVHVwbGUobGlzdCh0KSlcbiAgICB8IFBhcmVucyh0KVxuICAgIHwgQXAodCwgdClcbiAgICB8IENhc3QodCwgVHlwLnQsIFR5cC50KSAvLyBUaGUgc2Vjb25kIG9uZSBpcyBoaWRkZW4gZnJvbSB0aGUgdXNlclxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtID1cbiAgICAgIChcbiAgICAgICAgfmZfZXhwPWNvbnRpbnVlLFxuICAgICAgICB+Zl9wYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3R5cD1jb250aW51ZSxcbiAgICAgICAgfmZfdHBhdD1jb250aW51ZSxcbiAgICAgICAgfmZfcnVsPWNvbnRpbnVlLFxuICAgICAgICB+Zl9hbnk9Y29udGludWUsXG4gICAgICAgIHgsXG4gICAgICApID0+IHtcbiAgICBsZXQgcGF0X21hcF90ZXJtID1cbiAgICAgIFBhdC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHR5cF9tYXBfdGVybSA9XG4gICAgICBUeXAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBhbnlfbWFwX3Rlcm0gPVxuICAgICAgQW55Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgcmVjX2NhbGwgPSAoe3Rlcm0sIF99IGFzIGV4cDogdCkgPT4ge1xuICAgICAgLi4uZXhwLFxuICAgICAgdGVybTpcbiAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IFdpbGRcbiAgICAgICAgfCBCb29sKF8pXG4gICAgICAgIHwgSW50KF8pXG4gICAgICAgIHwgRmxvYXQoXylcbiAgICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICB8IFZhcihfKSA9PiB0ZXJtXG4gICAgICAgIHwgTXVsdGlIb2xlKHRoaW5ncykgPT4gTXVsdGlIb2xlKExpc3QubWFwKGFueV9tYXBfdGVybSwgdGhpbmdzKSlcbiAgICAgICAgfCBMaXN0TGl0KHRzKSA9PiBMaXN0TGl0KExpc3QubWFwKHBhdF9tYXBfdGVybSwgdHMpKVxuICAgICAgICB8IEFwKGUxLCBlMikgPT4gQXAocGF0X21hcF90ZXJtKGUxKSwgcGF0X21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBDb25zKGUxLCBlMikgPT4gQ29ucyhwYXRfbWFwX3Rlcm0oZTEpLCBwYXRfbWFwX3Rlcm0oZTIpKVxuICAgICAgICB8IFR1cGxlKHhzKSA9PiBUdXBsZShMaXN0Lm1hcChwYXRfbWFwX3Rlcm0sIHhzKSlcbiAgICAgICAgfCBQYXJlbnMoZSkgPT4gUGFyZW5zKHBhdF9tYXBfdGVybShlKSlcbiAgICAgICAgfCBDYXN0KGUsIHQxLCB0MikgPT5cbiAgICAgICAgICBDYXN0KHBhdF9tYXBfdGVybShlKSwgdHlwX21hcF90ZXJtKHQxKSwgdHlwX21hcF90ZXJtKHQyKSlcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHggfD4gZl9wYXQocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCByZWMgZmFzdF9lcXVhbCA9IChwMSwgcDIpID0+XG4gICAgc3dpdGNoIChwMSB8PiBJZFRhZ2dlZC50ZXJtX29mLCBwMiB8PiBJZFRhZ2dlZC50ZXJtX29mKSB7XG4gICAgfCAoUGFyZW5zKHgpLCBfKSA9PiBmYXN0X2VxdWFsKHgsIHAyKVxuICAgIHwgKF8sIFBhcmVucyh4KSkgPT4gZmFzdF9lcXVhbChwMSwgeClcbiAgICB8IChFbXB0eUhvbGUsIEVtcHR5SG9sZSkgPT4gdHJ1ZVxuICAgIHwgKE11bHRpSG9sZSh4cyksIE11bHRpSG9sZSh5cykpID0+XG4gICAgICBMaXN0Lmxlbmd0aCh4cykgPT0gTGlzdC5sZW5ndGgoeXMpXG4gICAgICAmJiBMaXN0LmVxdWFsKEFueS5mYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoSW52YWxpZChzMSksIEludmFsaWQoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKFdpbGQsIFdpbGQpID0+IHRydWVcbiAgICB8IChCb29sKGIxKSwgQm9vbChiMikpID0+IGIxID09IGIyXG4gICAgfCAoSW50KGkxKSwgSW50KGkyKSkgPT4gaTEgPT0gaTJcbiAgICB8IChGbG9hdChmMSksIEZsb2F0KGYyKSkgPT4gZjEgPT0gZjJcbiAgICB8IChTdHJpbmcoczEpLCBTdHJpbmcoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKENvbnN0cnVjdG9yKGMxKSwgQ29uc3RydWN0b3IoYzIpKSA9PiBjMSA9PSBjMlxuICAgIHwgKFZhcih2MSksIFZhcih2MikpID0+IHYxID09IHYyXG4gICAgfCAoTGlzdExpdCh4cyksIExpc3RMaXQoeXMpKSA9PlxuICAgICAgTGlzdC5sZW5ndGgoeHMpID09IExpc3QubGVuZ3RoKHlzKSAmJiBMaXN0LmVxdWFsKGZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChDb25zKHgxLCB5MSksIENvbnMoeDIsIHkyKSkgPT5cbiAgICAgIGZhc3RfZXF1YWwoeDEsIHgyKSAmJiBmYXN0X2VxdWFsKHkxLCB5MilcbiAgICB8IChUdXBsZSh4cyksIFR1cGxlKHlzKSkgPT5cbiAgICAgIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cykgJiYgTGlzdC5lcXVhbChmYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoQXAoeDEsIHkxKSwgQXAoeDIsIHkyKSkgPT4gZmFzdF9lcXVhbCh4MSwgeDIpICYmIGZhc3RfZXF1YWwoeTEsIHkyKVxuICAgIHwgKENhc3QoeDEsIHQxLCB0MiksIENhc3QoeDIsIHUxLCB1MikpID0+XG4gICAgICBmYXN0X2VxdWFsKHgxLCB4MikgJiYgVHlwLmZhc3RfZXF1YWwodDEsIHUxKSAmJiBUeXAuZmFzdF9lcXVhbCh0MiwgdTIpXG4gICAgfCAoRW1wdHlIb2xlLCBfKVxuICAgIHwgKE11bHRpSG9sZShfKSwgXylcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKFdpbGQsIF8pXG4gICAgfCAoQm9vbChfKSwgXylcbiAgICB8IChJbnQoXyksIF8pXG4gICAgfCAoRmxvYXQoXyksIF8pXG4gICAgfCAoU3RyaW5nKF8pLCBfKVxuICAgIHwgKExpc3RMaXQoXyksIF8pXG4gICAgfCAoQ29uc3RydWN0b3IoXyksIF8pXG4gICAgfCAoQ29ucyhfKSwgXylcbiAgICB8IChWYXIoXyksIF8pXG4gICAgfCAoVHVwbGUoXyksIF8pXG4gICAgfCAoQXAoXyksIF8pXG4gICAgfCAoQ2FzdChfKSwgXykgPT4gZmFsc2VcbiAgICB9O1xufVxuYW5kIFR5cDoge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9ob2xlID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpO1xuXG4gIC8qIFRZUEVfUFJPVkVOQU5DRTogRnJvbSB3aGVuY2UgZG9lcyBhbiB1bmtub3duIHR5cGUgb3JpZ2luYXRlP1xuICAgICBJcyBpdCBnZW5lcmF0ZWQgZnJvbSBhbiB1bmFubm90YXRlZCBwYXR0ZXJuIHZhcmlhYmxlIChTeW5Td2l0Y2gpLFxuICAgICBhIHBhdHRlcm4gdmFyaWFibGUgYW5ub3RhdGVkIHdpdGggYSB0eXBlIGhvbGUgKFR5cGVIb2xlKSwgb3JcbiAgICAgZ2VuZXJhdGVkIGJ5IGFuIGludGVybmFsIGp1ZGdlbWVudCAoSW50ZXJuYWwpPyAqL1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9wcm92ZW5hbmNlID1cbiAgICB8IFN5blN3aXRjaFxuICAgIHwgSG9sZSh0eXBlX2hvbGUpXG4gICAgfCBJbnRlcm5hbDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBVbmtub3duKFR5cC50eXBlX3Byb3ZlbmFuY2UpXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IFZhcihzdHJpbmcpXG4gICAgfCBMaXN0KHQpXG4gICAgfCBBcnJvdyh0LCB0KVxuICAgIHwgU3VtKENvbnN0cnVjdG9yTWFwLnQodCkpXG4gICAgfCBQcm9kKGxpc3QodCkpXG4gICAgfCBQYXJlbnModClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBSZWMoVFBhdC50LCB0KVxuICAgIHwgRm9yYWxsKFRQYXQudCwgdClcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIHR5cGUgc3VtX21hcCA9IENvbnN0cnVjdG9yTWFwLnQodCk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBzdWJzdDogKHQsIFRQYXQudCwgdCkgPT4gdDtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9ob2xlID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpO1xuXG4gIC8qIFRZUEVfUFJPVkVOQU5DRTogRnJvbSB3aGVuY2UgZG9lcyBhbiB1bmtub3duIHR5cGUgb3JpZ2luYXRlP1xuICAgICBJcyBpdCBnZW5lcmF0ZWQgZnJvbSBhbiB1bmFubm90YXRlZCBwYXR0ZXJuIHZhcmlhYmxlIChTeW5Td2l0Y2gpLFxuICAgICBhIHBhdHRlcm4gdmFyaWFibGUgYW5ub3RhdGVkIHdpdGggYSB0eXBlIGhvbGUgKFR5cGVIb2xlKSwgb3JcbiAgICAgZ2VuZXJhdGVkIGJ5IGFuIGludGVybmFsIGp1ZGdlbWVudCAoSW50ZXJuYWwpPyAqL1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdHlwZV9wcm92ZW5hbmNlID1cbiAgICB8IFN5blN3aXRjaFxuICAgIHwgSG9sZSh0eXBlX2hvbGUpXG4gICAgfCBJbnRlcm5hbDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBVbmtub3duKFR5cC50eXBlX3Byb3ZlbmFuY2UpXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IFZhcihzdHJpbmcpXG4gICAgfCBMaXN0KHQpXG4gICAgfCBBcnJvdyh0LCB0KVxuICAgIHwgU3VtKENvbnN0cnVjdG9yTWFwLnQodCkpXG4gICAgfCBQcm9kKGxpc3QodCkpXG4gICAgfCBQYXJlbnModClcbiAgICB8IEFwKHQsIHQpXG4gICAgfCBSZWMoVFBhdC50LCB0KVxuICAgIHwgRm9yYWxsKFRQYXQudCwgdClcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIHR5cGUgc3VtX21hcCA9IENvbnN0cnVjdG9yTWFwLnQodCk7XG5cbiAgbGV0IG1hcF90ZXJtID1cbiAgICAgIChcbiAgICAgICAgfmZfZXhwPWNvbnRpbnVlLFxuICAgICAgICB+Zl9wYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3R5cD1jb250aW51ZSxcbiAgICAgICAgfmZfdHBhdD1jb250aW51ZSxcbiAgICAgICAgfmZfcnVsPWNvbnRpbnVlLFxuICAgICAgICB+Zl9hbnk9Y29udGludWUsXG4gICAgICAgIHgsXG4gICAgICApID0+IHtcbiAgICBsZXQgdHlwX21hcF90ZXJtID1cbiAgICAgIFR5cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IGFueV9tYXBfdGVybSA9XG4gICAgICBBbnkubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCB0cGF0X21hcF90ZXJtID1cbiAgICAgIFRQYXQubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCByZWNfY2FsbCA9ICh7dGVybSwgX30gYXMgZXhwOiB0KSA9PiB7XG4gICAgICAuLi5leHAsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgICAgfCBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSlcbiAgICAgICAgfCBVbmtub3duKEhvbGUoSW52YWxpZChfKSkpXG4gICAgICAgIHwgVW5rbm93bihTeW5Td2l0Y2gpXG4gICAgICAgIHwgVW5rbm93bihJbnRlcm5hbClcbiAgICAgICAgfCBCb29sXG4gICAgICAgIHwgSW50XG4gICAgICAgIHwgRmxvYXRcbiAgICAgICAgfCBTdHJpbmdcbiAgICAgICAgfCBWYXIoXykgPT4gdGVybVxuICAgICAgICB8IExpc3QodCkgPT4gTGlzdCh0eXBfbWFwX3Rlcm0odCkpXG4gICAgICAgIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZSh0aGluZ3MpKSkgPT5cbiAgICAgICAgICBVbmtub3duKEhvbGUoTXVsdGlIb2xlKExpc3QubWFwKGFueV9tYXBfdGVybSwgdGhpbmdzKSkpKVxuICAgICAgICB8IEFwKGUxLCBlMikgPT4gQXAodHlwX21hcF90ZXJtKGUxKSwgdHlwX21hcF90ZXJtKGUyKSlcbiAgICAgICAgfCBQcm9kKHhzKSA9PiBQcm9kKExpc3QubWFwKHR5cF9tYXBfdGVybSwgeHMpKVxuICAgICAgICB8IFBhcmVucyhlKSA9PiBQYXJlbnModHlwX21hcF90ZXJtKGUpKVxuICAgICAgICB8IEFycm93KHQxLCB0MikgPT4gQXJyb3codHlwX21hcF90ZXJtKHQxKSwgdHlwX21hcF90ZXJtKHQyKSlcbiAgICAgICAgfCBTdW0odmFyaWFudHMpID0+XG4gICAgICAgICAgU3VtKFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgIGZ1blxuICAgICAgICAgICAgICB8IENvbnN0cnVjdG9yTWFwLlZhcmlhbnQoYywgaWRzLCB0KSA9PlxuICAgICAgICAgICAgICAgIENvbnN0cnVjdG9yTWFwLlZhcmlhbnQoYywgaWRzLCBPcHRpb24ubWFwKHR5cF9tYXBfdGVybSwgdCkpXG4gICAgICAgICAgICAgIHwgQ29uc3RydWN0b3JNYXAuQmFkRW50cnkodCkgPT5cbiAgICAgICAgICAgICAgICBDb25zdHJ1Y3Rvck1hcC5CYWRFbnRyeSh0eXBfbWFwX3Rlcm0odCkpLFxuICAgICAgICAgICAgICB2YXJpYW50cyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICB8IFJlYyh0cCwgdCkgPT4gUmVjKHRwYXRfbWFwX3Rlcm0odHApLCB0eXBfbWFwX3Rlcm0odCkpXG4gICAgICAgIHwgRm9yYWxsKHRwLCB0KSA9PiBGb3JhbGwodHBhdF9tYXBfdGVybSh0cCksIHR5cF9tYXBfdGVybSh0KSlcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHggfD4gZl90eXAocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCByZWMgc3Vic3QgPSAoczogdCwgeDogVFBhdC50LCB0eTogdCkgPT4ge1xuICAgIHN3aXRjaCAoVFBhdC50eXZhcl9vZl91dHBhdCh4KSkge1xuICAgIHwgU29tZShzdHIpID0+XG4gICAgICBsZXQgKHRlcm0sIHJld3JhcCkgPSBJZFRhZ2dlZC51bndyYXAodHkpO1xuICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICB8IEludCA9PiBJbnQgfD4gcmV3cmFwXG4gICAgICB8IEZsb2F0ID0+IEZsb2F0IHw+IHJld3JhcFxuICAgICAgfCBCb29sID0+IEJvb2wgfD4gcmV3cmFwXG4gICAgICB8IFN0cmluZyA9PiBTdHJpbmcgfD4gcmV3cmFwXG4gICAgICB8IFVua25vd24ocHJvdikgPT4gVW5rbm93bihwcm92KSB8PiByZXdyYXBcbiAgICAgIHwgQXJyb3codHkxLCB0eTIpID0+XG4gICAgICAgIEFycm93KHN1YnN0KHMsIHgsIHR5MSksIHN1YnN0KHMsIHgsIHR5MikpIHw+IHJld3JhcFxuICAgICAgfCBQcm9kKHR5cykgPT4gUHJvZChMaXN0Lm1hcChzdWJzdChzLCB4KSwgdHlzKSkgfD4gcmV3cmFwXG4gICAgICB8IFN1bShzbSkgPT5cbiAgICAgICAgU3VtKENvbnN0cnVjdG9yTWFwLm1hcChPcHRpb24ubWFwKHN1YnN0KHMsIHgpKSwgc20pKSB8PiByZXdyYXBcbiAgICAgIHwgRm9yYWxsKHRwMiwgdHkpXG4gICAgICAgICAgd2hlbiBUUGF0LnR5dmFyX29mX3V0cGF0KHgpID09IFRQYXQudHl2YXJfb2ZfdXRwYXQodHAyKSA9PlxuICAgICAgICBGb3JhbGwodHAyLCB0eSkgfD4gcmV3cmFwXG4gICAgICB8IEZvcmFsbCh0cDIsIHR5KSA9PiBGb3JhbGwodHAyLCBzdWJzdChzLCB4LCB0eSkpIHw+IHJld3JhcFxuICAgICAgfCBSZWModHAyLCB0eSkgd2hlbiBUUGF0LnR5dmFyX29mX3V0cGF0KHgpID09IFRQYXQudHl2YXJfb2ZfdXRwYXQodHAyKSA9PlxuICAgICAgICBSZWModHAyLCB0eSkgfD4gcmV3cmFwXG4gICAgICB8IFJlYyh0cDIsIHR5KSA9PiBSZWModHAyLCBzdWJzdChzLCB4LCB0eSkpIHw+IHJld3JhcFxuICAgICAgfCBMaXN0KHR5KSA9PiBMaXN0KHN1YnN0KHMsIHgsIHR5KSkgfD4gcmV3cmFwXG4gICAgICB8IFZhcih5KSA9PiBzdHIgPT0geSA/IHMgOiBWYXIoeSkgfD4gcmV3cmFwXG4gICAgICB8IFBhcmVucyh0eSkgPT4gUGFyZW5zKHN1YnN0KHMsIHgsIHR5KSkgfD4gcmV3cmFwXG4gICAgICB8IEFwKHQxLCB0MikgPT4gQXAoc3Vic3QocywgeCwgdDEpLCBzdWJzdChzLCB4LCB0MikpIHw+IHJld3JhcFxuICAgICAgfTtcbiAgICB8IE5vbmUgPT4gdHlcbiAgICB9O1xuICB9O1xuXG4gIC8qIFR5cGUgRXF1YWxpdHk6IFRoaXMgY29pbmNpZGVzIHdpdGggYWxwaGEgZXF1aXZhbGVuY2UgZm9yIG5vcm1hbGl6ZWQgdHlwZXMuXG4gICAgIE90aGVyIHR5cGVzIG1heSBiZSBlcXVpdmFsZW50IGJ1dCB0aGlzIHdpbGwgbm90IGRldGVjdCBzbyBpZiB0aGV5IGFyZSBub3Qgbm9ybWFsaXplZC4gKi9cblxuICBsZXQgcmVjIGVxX2ludGVybmFsID0gKG46IGludCwgdDE6IHQsIHQyOiB0KSA9PiB7XG4gICAgc3dpdGNoIChJZFRhZ2dlZC50ZXJtX29mKHQxKSwgSWRUYWdnZWQudGVybV9vZih0MikpIHtcbiAgICB8IChQYXJlbnModDEpLCBfKSA9PiBlcV9pbnRlcm5hbChuLCB0MSwgdDIpXG4gICAgfCAoXywgUGFyZW5zKHQyKSkgPT4gZXFfaW50ZXJuYWwobiwgdDEsIHQyKVxuICAgIHwgKFJlYyh4MSwgdDEpLCBSZWMoeDIsIHQyKSlcbiAgICB8IChGb3JhbGwoeDEsIHQxKSwgRm9yYWxsKHgyLCB0MikpID0+XG4gICAgICBsZXQgYWxwaGFfc3Vic3QgPVxuICAgICAgICBzdWJzdCh7XG4gICAgICAgICAgdGVybTogVmFyKFwiPVwiICsrIHN0cmluZ19vZl9pbnQobikpLFxuICAgICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgICAgaWRzOiBbSWQuaW52YWxpZF0sXG4gICAgICAgIH0pO1xuICAgICAgZXFfaW50ZXJuYWwobiArIDEsIGFscGhhX3N1YnN0KHgxLCB0MSksIGFscGhhX3N1YnN0KHgyLCB0MikpO1xuICAgIHwgKFJlYyhfKSwgXykgPT4gZmFsc2VcbiAgICB8IChGb3JhbGwoXyksIF8pID0+IGZhbHNlXG4gICAgfCAoSW50LCBJbnQpID0+IHRydWVcbiAgICB8IChJbnQsIF8pID0+IGZhbHNlXG4gICAgfCAoRmxvYXQsIEZsb2F0KSA9PiB0cnVlXG4gICAgfCAoRmxvYXQsIF8pID0+IGZhbHNlXG4gICAgfCAoQm9vbCwgQm9vbCkgPT4gdHJ1ZVxuICAgIHwgKEJvb2wsIF8pID0+IGZhbHNlXG4gICAgfCAoU3RyaW5nLCBTdHJpbmcpID0+IHRydWVcbiAgICB8IChTdHJpbmcsIF8pID0+IGZhbHNlXG4gICAgfCAoQXAodDEsIHQyKSwgQXAodDEnLCB0MicpKSA9PlxuICAgICAgZXFfaW50ZXJuYWwobiwgdDEsIHQxJykgJiYgZXFfaW50ZXJuYWwobiwgdDIsIHQyJylcbiAgICB8IChBcChfKSwgXykgPT4gZmFsc2VcbiAgICB8IChVbmtub3duKF8pLCBVbmtub3duKF8pKSA9PiB0cnVlXG4gICAgfCAoVW5rbm93bihfKSwgXykgPT4gZmFsc2VcbiAgICB8IChBcnJvdyh0MSwgdDIpLCBBcnJvdyh0MScsIHQyJykpID0+XG4gICAgICBlcV9pbnRlcm5hbChuLCB0MSwgdDEnKSAmJiBlcV9pbnRlcm5hbChuLCB0MiwgdDInKVxuICAgIHwgKEFycm93KF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKFByb2QodHlzMSksIFByb2QodHlzMikpID0+IExpc3QuZXF1YWwoZXFfaW50ZXJuYWwobiksIHR5czEsIHR5czIpXG4gICAgfCAoUHJvZChfKSwgXykgPT4gZmFsc2VcbiAgICB8IChMaXN0KHQxKSwgTGlzdCh0MikpID0+IGVxX2ludGVybmFsKG4sIHQxLCB0MilcbiAgICB8IChMaXN0KF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKFN1bShzbTEpLCBTdW0oc20yKSkgPT5cbiAgICAgIC8qIERvZXMgbm90IG5vcm1hbGl6ZSB0aGUgdHlwZXMuICovXG4gICAgICBDb25zdHJ1Y3Rvck1hcC5lcXVhbChlcV9pbnRlcm5hbChuKSwgc20xLCBzbTIpXG4gICAgfCAoU3VtKF8pLCBfKSA9PiBmYWxzZVxuICAgIHwgKFZhcihuMSksIFZhcihuMikpID0+IG4xID09IG4yXG4gICAgfCAoVmFyKF8pLCBfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IGZhc3RfZXF1YWwgPSBlcV9pbnRlcm5hbCgwKTtcbn1cbmFuZCBUUGF0OiB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUobGlzdChBbnkudCkpXG4gICAgfCBWYXIoc3RyaW5nKVxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCB0eXZhcl9vZl91dHBhdDogdCA9PiBvcHRpb24oc3RyaW5nKTtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdGVybSA9XG4gICAgfCBJbnZhbGlkKHN0cmluZylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgVmFyKHN0cmluZylcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGFueV9tYXBfdGVybSA9XG4gICAgICBBbnkubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCByZWNfY2FsbCA9ICh7dGVybSwgX30gYXMgZXhwOiB0KSA9PiB7XG4gICAgICAuLi5leHAsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGVcbiAgICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICAgIHwgVmFyKF8pID0+IHRlcm1cbiAgICAgICAgfCBNdWx0aUhvbGUodGhpbmdzKSA9PiBNdWx0aUhvbGUoTGlzdC5tYXAoYW55X21hcF90ZXJtLCB0aGluZ3MpKVxuICAgICAgICB9LFxuICAgIH07XG4gICAgeCB8PiBmX3RwYXQocmVjX2NhbGwpO1xuICB9O1xuXG4gIGxldCB0eXZhcl9vZl91dHBhdCA9ICh7dGVybSwgX306IHQpID0+XG4gICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgfCBWYXIoeCkgPT4gU29tZSh4KVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9ICh0cDE6IHQsIHRwMjogdCkgPT5cbiAgICBzd2l0Y2ggKHRwMSB8PiBJZFRhZ2dlZC50ZXJtX29mLCB0cDIgfD4gSWRUYWdnZWQudGVybV9vZikge1xuICAgIHwgKEVtcHR5SG9sZSwgRW1wdHlIb2xlKSA9PiB0cnVlXG4gICAgfCAoSW52YWxpZChzMSksIEludmFsaWQoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKE11bHRpSG9sZSh4cyksIE11bHRpSG9sZSh5cykpID0+XG4gICAgICBMaXN0Lmxlbmd0aCh4cykgPT0gTGlzdC5sZW5ndGgoeXMpXG4gICAgICAmJiBMaXN0LmVxdWFsKEFueS5mYXN0X2VxdWFsLCB4cywgeXMpXG4gICAgfCAoVmFyKHgpLCBWYXIoeSkpID0+IHggPT0geVxuICAgIHwgKEVtcHR5SG9sZSwgXylcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKE11bHRpSG9sZShfKSwgXylcbiAgICB8IChWYXIoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbn1cbmFuZCBSdWw6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRlcm0gPVxuICAgIHwgSW52YWxpZChzdHJpbmcpXG4gICAgfCBIb2xlKGxpc3QoQW55LnQpKVxuICAgIHwgUnVsZXMoRXhwLnQsIGxpc3QoKFBhdC50LCBFeHAudCkpKVxuICBhbmQgdCA9IElkVGFnZ2VkLnQodGVybSk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBmYXN0X2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcbn0gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ZXJtID1cbiAgICB8IEludmFsaWQoc3RyaW5nKVxuICAgIHwgSG9sZShsaXN0KEFueS50KSlcbiAgICB8IFJ1bGVzKEV4cC50LCBsaXN0KChQYXQudCwgRXhwLnQpKSlcbiAgYW5kIHQgPSBJZFRhZ2dlZC50KHRlcm0pO1xuXG4gIGxldCBtYXBfdGVybSA9XG4gICAgICAoXG4gICAgICAgIH5mX2V4cD1jb250aW51ZSxcbiAgICAgICAgfmZfcGF0PWNvbnRpbnVlLFxuICAgICAgICB+Zl90eXA9Y29udGludWUsXG4gICAgICAgIH5mX3RwYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3J1bD1jb250aW51ZSxcbiAgICAgICAgfmZfYW55PWNvbnRpbnVlLFxuICAgICAgICB4LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGV4cF9tYXBfdGVybSA9XG4gICAgICBFeHAubWFwX3Rlcm0ofmZfZXhwLCB+Zl9wYXQsIH5mX3R5cCwgfmZfdHBhdCwgfmZfcnVsLCB+Zl9hbnkpO1xuICAgIGxldCBwYXRfbWFwX3Rlcm0gPVxuICAgICAgUGF0Lm1hcF90ZXJtKH5mX2V4cCwgfmZfcGF0LCB+Zl90eXAsIH5mX3RwYXQsIH5mX3J1bCwgfmZfYW55KTtcbiAgICBsZXQgYW55X21hcF90ZXJtID1cbiAgICAgIEFueS5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgbGV0IHJlY19jYWxsID0gKHt0ZXJtLCBffSBhcyBleHA6IHQpID0+IHtcbiAgICAgIC4uLmV4cCxcbiAgICAgIHRlcm06XG4gICAgICAgIHN3aXRjaCAodGVybSkge1xuICAgICAgICB8IEludmFsaWQoXykgPT4gdGVybVxuICAgICAgICB8IEhvbGUodGhpbmdzKSA9PiBIb2xlKExpc3QubWFwKGFueV9tYXBfdGVybSwgdGhpbmdzKSlcbiAgICAgICAgfCBSdWxlcyhlLCBybHMpID0+XG4gICAgICAgICAgUnVsZXMoXG4gICAgICAgICAgICBleHBfbWFwX3Rlcm0oZSksXG4gICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgKChwLCBlKSkgPT4gKHBhdF9tYXBfdGVybShwKSwgZXhwX21hcF90ZXJtKGUpKSxcbiAgICAgICAgICAgICAgcmxzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICB4IHw+IGZfcnVsKHJlY19jYWxsKTtcbiAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9IChyMTogdCwgcjI6IHQpID0+XG4gICAgc3dpdGNoIChyMSB8PiBJZFRhZ2dlZC50ZXJtX29mLCByMiB8PiBJZFRhZ2dlZC50ZXJtX29mKSB7XG4gICAgfCAoSW52YWxpZChzMSksIEludmFsaWQoczIpKSA9PiBzMSA9PSBzMlxuICAgIHwgKEhvbGUoeHMpLCBIb2xlKHlzKSkgPT5cbiAgICAgIExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aCh5cylcbiAgICAgICYmIExpc3QuZXF1YWwoQW55LmZhc3RfZXF1YWwsIHhzLCB5cylcbiAgICB8IChSdWxlcyhlMSwgcmxzMSksIFJ1bGVzKGUyLCBybHMyKSkgPT5cbiAgICAgIEV4cC5mYXN0X2VxdWFsKGUxLCBlMilcbiAgICAgICYmIExpc3QubGVuZ3RoKHJsczEpID09IExpc3QubGVuZ3RoKHJsczIpXG4gICAgICAmJiBMaXN0LmZvcl9hbGwyKFxuICAgICAgICAgICAoKHAxLCBlMSksIChwMiwgZTIpKSA9PlxuICAgICAgICAgICAgIFBhdC5mYXN0X2VxdWFsKHAxLCBwMikgJiYgRXhwLmZhc3RfZXF1YWwoZTEsIGUyKSxcbiAgICAgICAgICAgcmxzMSxcbiAgICAgICAgICAgcmxzMixcbiAgICAgICAgIClcbiAgICB8IChJbnZhbGlkKF8pLCBfKVxuICAgIHwgKEhvbGUoXyksIF8pXG4gICAgfCAoUnVsZXMoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbn1cblxuYW5kIEVudmlyb25tZW50OiB7XG4gIGluY2x1ZGVcbiAgICAgKG1vZHVsZSB0eXBlIG9mIFZhckJzdE1hcC5PcmRlcmVkKSB3aXRoXG4gICAgICB0eXBlIHRfKCdhKSA9IFZhckJzdE1hcC5PcmRlcmVkLnRfKCdhKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHRfKEV4cC50KTtcbn0gPSB7XG4gIGluY2x1ZGUgVmFyQnN0TWFwLk9yZGVyZWQ7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB0XyhFeHAudCk7XG59XG5cbmFuZCBDbG9zdXJlRW52aXJvbm1lbnQ6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQ7XG5cbiAgbGV0IHdyYXA6IChJZC50LCBFbnZpcm9ubWVudC50KSA9PiB0O1xuXG4gIGxldCBpZF9vZjogdCA9PiBJZC50O1xuICBsZXQgbWFwX29mOiB0ID0+IEVudmlyb25tZW50LnQ7XG5cbiAgbGV0IHRvX2xpc3Q6IHQgPT4gbGlzdCgoVmFyLnQsIEV4cC50KSk7XG5cbiAgbGV0IG9mX2Vudmlyb25tZW50OiBFbnZpcm9ubWVudC50ID0+IHQ7XG5cbiAgbGV0IGlkX2VxdWFsOiAodCwgdCkgPT4gYm9vbDtcblxuICBsZXQgZW1wdHk6IHQ7XG4gIGxldCBpc19lbXB0eTogdCA9PiBib29sO1xuICBsZXQgbGVuZ3RoOiB0ID0+IGludDtcblxuICBsZXQgbG9va3VwOiAodCwgVmFyLnQpID0+IG9wdGlvbihFeHAudCk7XG4gIGxldCBjb250YWluczogKHQsIFZhci50KSA9PiBib29sO1xuICBsZXQgdXBkYXRlOiAoRW52aXJvbm1lbnQudCA9PiBFbnZpcm9ubWVudC50LCB0KSA9PiB0O1xuICBsZXQgdXBkYXRlX2tlZXBfaWQ6IChFbnZpcm9ubWVudC50ID0+IEVudmlyb25tZW50LnQsIHQpID0+IHQ7XG4gIGxldCBleHRlbmQ6ICh0LCAoVmFyLnQsIEV4cC50KSkgPT4gdDtcbiAgbGV0IGV4dGVuZF9rZWVwX2lkOiAodCwgKFZhci50LCBFeHAudCkpID0+IHQ7XG4gIGxldCB1bmlvbjogKHQsIHQpID0+IHQ7XG4gIGxldCB1bmlvbl9rZWVwX2lkOiAodCwgdCkgPT4gdDtcbiAgbGV0IG1hcDogKCgoVmFyLnQsIEV4cC50KSkgPT4gRXhwLnQsIHQpID0+IHQ7XG4gIGxldCBtYXBfa2VlcF9pZDogKCgoVmFyLnQsIEV4cC50KSkgPT4gRXhwLnQsIHQpID0+IHQ7XG4gIGxldCBmaWx0ZXI6ICgoKFZhci50LCBFeHAudCkpID0+IGJvb2wsIHQpID0+IHQ7XG4gIGxldCBmaWx0ZXJfa2VlcF9pZDogKCgoVmFyLnQsIEV4cC50KSkgPT4gYm9vbCwgdCkgPT4gdDtcbiAgbGV0IGZvbGQ6ICgoKFZhci50LCBFeHAudCksICdiKSA9PiAnYiwgJ2IsIHQpID0+ICdiO1xuXG4gIGxldCB3aXRob3V0X2tleXM6IChsaXN0KFZhci50KSwgdCkgPT4gdDtcblxuICBsZXQgcGxhY2Vob2xkZXI6IHQ7XG59ID0ge1xuICBtb2R1bGUgSW5uZXI6IHtcbiAgICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gICAgdHlwZSB0O1xuXG4gICAgbGV0IHdyYXA6IChJZC50LCBFbnZpcm9ubWVudC50KSA9PiB0O1xuXG4gICAgbGV0IGlkX29mOiB0ID0+IElkLnQ7XG4gICAgbGV0IG1hcF9vZjogdCA9PiBFbnZpcm9ubWVudC50O1xuICB9ID0ge1xuICAgIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgICB0eXBlIHQgPSAoSWQudCwgRW52aXJvbm1lbnQudCk7XG5cbiAgICBsZXQgd3JhcCA9IChlaSwgbWFwKTogdCA9PiAoZWksIG1hcCk7XG5cbiAgICBsZXQgaWRfb2YgPSAoKGVpLCBfKSkgPT4gZWk7XG4gICAgbGV0IG1hcF9vZiA9ICgoXywgbWFwKSkgPT4gbWFwO1xuICAgIGxldCAoc2V4cF9vZl90LCB0X29mX3NleHApID1cbiAgICAgIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaGVyZShpZF9vZiwgc2V4cF9vZl90LCB0X29mX3NleHApO1xuICB9O1xuICBpbmNsdWRlIElubmVyO1xuXG4gIGxldCB0b19saXN0ID0gZW52ID0+IGVudiB8PiBtYXBfb2YgfD4gRW52aXJvbm1lbnQudG9fbGlzdG87XG5cbiAgbGV0IG9mX2Vudmlyb25tZW50ID0gbWFwID0+IHtcbiAgICBsZXQgZWkgPSBJZC5taygpO1xuICAgIHdyYXAoZWksIG1hcCk7XG4gIH07XG5cbiAgLyogRXF1YWxzIG9ubHkgbmVlZHMgdG8gY2hlY2sgZW52aXJvbm1lbnQgaWQncyAoZmFzdGVyIHRoYW4gc3RydWN0dXJhbCBlcXVhbGl0eVxuICAgKiBjaGVja2luZy4pICovXG4gIGxldCBpZF9lcXVhbCA9IChlbnYxLCBlbnYyKSA9PiBpZF9vZihlbnYxKSA9PSBpZF9vZihlbnYyKTtcblxuICBsZXQgZW1wdHkgPSBFbnZpcm9ubWVudC5lbXB0eSB8PiBvZl9lbnZpcm9ubWVudDtcblxuICBsZXQgaXNfZW1wdHkgPSBlbnYgPT4gZW52IHw+IG1hcF9vZiB8PiBFbnZpcm9ubWVudC5pc19lbXB0eTtcblxuICBsZXQgbGVuZ3RoID0gZW52ID0+IEVudmlyb25tZW50Lmxlbmd0aChtYXBfb2YoZW52KSk7XG5cbiAgbGV0IGxvb2t1cCA9IChlbnYsIHgpID0+XG4gICAgZW52IHw+IG1hcF9vZiB8PiAobWFwID0+IEVudmlyb25tZW50Lmxvb2t1cChtYXAsIHgpKTtcblxuICBsZXQgY29udGFpbnMgPSAoZW52LCB4KSA9PlxuICAgIGVudiB8PiBtYXBfb2YgfD4gKG1hcCA9PiBFbnZpcm9ubWVudC5jb250YWlucyhtYXAsIHgpKTtcblxuICBsZXQgdXBkYXRlID0gKGYsIGVudikgPT4gZW52IHw+IG1hcF9vZiB8PiBmIHw+IG9mX2Vudmlyb25tZW50O1xuXG4gIGxldCB1cGRhdGVfa2VlcF9pZCA9IChmLCBlbnYpID0+IGVudiB8PiBtYXBfb2YgfD4gZiB8PiB3cmFwKGVudiB8PiBpZF9vZik7XG5cbiAgbGV0IGV4dGVuZCA9IChlbnYsIHhyKSA9PlxuICAgIGVudiB8PiB1cGRhdGUobWFwID0+IEVudmlyb25tZW50LmV4dGVuZChtYXAsIHhyKSk7XG5cbiAgbGV0IGV4dGVuZF9rZWVwX2lkID0gKGVudiwgeHIpID0+XG4gICAgZW52IHw+IHVwZGF0ZV9rZWVwX2lkKG1hcCA9PiBFbnZpcm9ubWVudC5leHRlbmQobWFwLCB4cikpO1xuXG4gIGxldCB1bmlvbiA9IChlbnYxLCBlbnYyKSA9PlxuICAgIGVudjIgfD4gdXBkYXRlKG1hcDIgPT4gRW52aXJvbm1lbnQudW5pb24oZW52MSB8PiBtYXBfb2YsIG1hcDIpKTtcblxuICBsZXQgdW5pb25fa2VlcF9pZCA9IChlbnYxLCBlbnYyKSA9PlxuICAgIGVudjIgfD4gdXBkYXRlX2tlZXBfaWQobWFwMiA9PiBFbnZpcm9ubWVudC51bmlvbihlbnYxIHw+IG1hcF9vZiwgbWFwMikpO1xuXG4gIGxldCBtYXAgPSAoZiwgZW52KSA9PiBlbnYgfD4gdXBkYXRlKEVudmlyb25tZW50Lm1hcG8oZikpO1xuXG4gIGxldCBtYXBfa2VlcF9pZCA9IChmLCBlbnYpID0+IGVudiB8PiB1cGRhdGVfa2VlcF9pZChFbnZpcm9ubWVudC5tYXBvKGYpKTtcblxuICBsZXQgZmlsdGVyID0gKGYsIGVudikgPT4gZW52IHw+IHVwZGF0ZShFbnZpcm9ubWVudC5maWx0ZXJvKGYpKTtcblxuICBsZXQgZmlsdGVyX2tlZXBfaWQgPSAoZiwgZW52KSA9PlxuICAgIGVudiB8PiB1cGRhdGVfa2VlcF9pZChFbnZpcm9ubWVudC5maWx0ZXJvKGYpKTtcblxuICBsZXQgZm9sZCA9IChmLCBpbml0LCBlbnYpID0+IGVudiB8PiBtYXBfb2YgfD4gRW52aXJvbm1lbnQuZm9sZG8oZiwgaW5pdCk7XG5cbiAgbGV0IHBsYWNlaG9sZGVyID0gd3JhcChJZC5pbnZhbGlkLCBFbnZpcm9ubWVudC5lbXB0eSk7XG5cbiAgbGV0IHdpdGhvdXRfa2V5cyA9IGtleXMgPT4gdXBkYXRlKEVudmlyb25tZW50LndpdGhvdXRfa2V5cyhrZXlzKSk7XG59XG5hbmQgU3RlcHBlckZpbHRlcktpbmQ6IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGZpbHRlciA9IHtcbiAgICBwYXQ6IEV4cC50LFxuICAgIGFjdDogRmlsdGVyQWN0aW9uLnQsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgRmlsdGVyKGZpbHRlcilcbiAgICB8IFJlc2lkdWUoaW50LCBGaWx0ZXJBY3Rpb24udCk7XG5cbiAgbGV0IG1hcF90ZXJtOlxuICAgIChcbiAgICAgIH5mX2V4cDogKEV4cC50ID0+IEV4cC50LCBFeHAudCkgPT4gRXhwLnQ9PyxcbiAgICAgIH5mX3BhdDogKFBhdC50ID0+IFBhdC50LCBQYXQudCkgPT4gUGF0LnQ9PyxcbiAgICAgIH5mX3R5cDogKFR5cC50ID0+IFR5cC50LCBUeXAudCkgPT4gVHlwLnQ9PyxcbiAgICAgIH5mX3RwYXQ6IChUUGF0LnQgPT4gVFBhdC50LCBUUGF0LnQpID0+IFRQYXQudD0/LFxuICAgICAgfmZfcnVsOiAoUnVsLnQgPT4gUnVsLnQsIFJ1bC50KSA9PiBSdWwudD0/LFxuICAgICAgfmZfYW55OiAoQW55LnQgPT4gQW55LnQsIEFueS50KSA9PiBBbnkudD0/LFxuICAgICAgdFxuICAgICkgPT5cbiAgICB0O1xuXG4gIGxldCBtYXA6IChFeHAudCA9PiBFeHAudCwgdCkgPT4gdDtcblxuICBsZXQgZmFzdF9lcXVhbDogKHQsIHQpID0+IGJvb2w7XG59ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZmlsdGVyID0ge1xuICAgIHBhdDogRXhwLnQsXG4gICAgYWN0OiBGaWx0ZXJBY3Rpb24udCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBGaWx0ZXIoZmlsdGVyKVxuICAgIHwgUmVzaWR1ZShpbnQsIEZpbHRlckFjdGlvbi50KTtcblxuICBsZXQgbWFwID0gKG1hcHBlciwgZmlsdGVyKSA9PiB7XG4gICAgc3dpdGNoIChmaWx0ZXIpIHtcbiAgICB8IEZpbHRlcih7YWN0LCBwYXR9KSA9PiBGaWx0ZXIoe2FjdCwgcGF0OiBtYXBwZXIocGF0KX0pXG4gICAgfCBSZXNpZHVlKGlkeCwgYWN0KSA9PiBSZXNpZHVlKGlkeCwgYWN0KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IG1hcF90ZXJtID1cbiAgICAgIChcbiAgICAgICAgfmZfZXhwPWNvbnRpbnVlLFxuICAgICAgICB+Zl9wYXQ9Y29udGludWUsXG4gICAgICAgIH5mX3R5cD1jb250aW51ZSxcbiAgICAgICAgfmZfdHBhdD1jb250aW51ZSxcbiAgICAgICAgfmZfcnVsPWNvbnRpbnVlLFxuICAgICAgICB+Zl9hbnk9Y29udGludWUsXG4gICAgICApID0+IHtcbiAgICBsZXQgZXhwX21hcF90ZXJtID1cbiAgICAgIEV4cC5tYXBfdGVybSh+Zl9leHAsIH5mX3BhdCwgfmZfdHlwLCB+Zl90cGF0LCB+Zl9ydWwsIH5mX2FueSk7XG4gICAgZnVuXG4gICAgfCBGaWx0ZXIoe3BhdDogZSwgYWN0fSkgPT4gRmlsdGVyKHtwYXQ6IGV4cF9tYXBfdGVybShlKSwgYWN0fSlcbiAgICB8IFJlc2lkdWUoaSwgYSkgPT4gUmVzaWR1ZShpLCBhKTtcbiAgfTtcblxuICBsZXQgZmFzdF9lcXVhbCA9IChmMSwgZjIpID0+XG4gICAgc3dpdGNoIChmMSwgZjIpIHtcbiAgICB8IChGaWx0ZXIoe3BhdDogZTEsIGFjdDogYTF9KSwgRmlsdGVyKHtwYXQ6IGUyLCBhY3Q6IGEyfSkpID0+XG4gICAgICBFeHAuZmFzdF9lcXVhbChlMSwgZTIpICYmIGExID09IGEyXG4gICAgfCAoUmVzaWR1ZShpMSwgYTEpLCBSZXNpZHVlKGkyLCBhMikpID0+IGkxID09IGkyICYmIGExID09IGEyXG4gICAgfCAoRmlsdGVyKF8pLCBfKVxuICAgIHwgKFJlc2lkdWUoXyksIF8pID0+IGZhbHNlXG4gICAgfTtcbn07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNscyA9XG4gIHwgSW52YWxpZFxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZVxuICB8IFZhcjtcblxuaW5jbHVkZSBUZXJtQmFzZS5UUGF0O1xuXG5sZXQgcmVwX2lkOiB0ID0+IElkLnQgPSBJZFRhZ2dlZC5yZXBfaWQ7XG5sZXQgZnJlc2g6IHRlcm0gPT4gdCA9IElkVGFnZ2VkLmZyZXNoO1xuXG5sZXQgaG9sZSA9ICh0bXM6IGxpc3QoVGVybUJhc2UuQW55LnQpKSA9PlxuICBzd2l0Y2ggKHRtcykge1xuICB8IFtdID0+IEVtcHR5SG9sZVxuICB8IFtfLCAuLi5fXSA9PiBNdWx0aUhvbGUodG1zKVxuICB9O1xuXG5sZXQgY2xzX29mX3Rlcm06IHRlcm0gPT4gY2xzID1cbiAgZnVuXG4gIHwgSW52YWxpZChfKSA9PiBJbnZhbGlkXG4gIHwgRW1wdHlIb2xlID0+IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZShfKSA9PiBNdWx0aUhvbGVcbiAgfCBWYXIoXykgPT4gVmFyO1xuXG5sZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICBmdW5cbiAgfCBJbnZhbGlkID0+IFwiSW52YWxpZCB0eXBlIGFsaWFzXCJcbiAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gdHlwZSBhbGlhc1wiXG4gIHwgRW1wdHlIb2xlID0+IFwiRW1wdHkgdHlwZSBhbGlhcyBob2xlXCJcbiAgfCBWYXIgPT4gXCJUeXBlIGFsaWFzXCI7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGtpbmQgPVxuICB8IFNpbmdsZXRvbihUZXJtQmFzZS5UeXAudClcbiAgfCBBYnN0cmFjdDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB2YXJfZW50cnkgPSB7XG4gIG5hbWU6IFZhci50LFxuICBpZDogSWQudCxcbiAgdHlwOiBUZXJtQmFzZS5UeXAudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHZhcl9lbnRyeSA9IHtcbiAgbmFtZTogc3RyaW5nLFxuICBpZDogSWQudCxcbiAga2luZCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZW50cnkgPVxuICB8IFZhckVudHJ5KHZhcl9lbnRyeSlcbiAgfCBDb25zdHJ1Y3RvckVudHJ5KHZhcl9lbnRyeSlcbiAgfCBUVmFyRW50cnkodHZhcl9lbnRyeSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QoZW50cnkpO1xuXG5sZXQgZXh0ZW5kID0gKGN0eCwgZW50cnkpID0+IExpc3QuY29ucyhlbnRyeSwgY3R4KTtcblxubGV0IGV4dGVuZF90dmFyID0gKGN0eDogdCwgdHZhcl9lbnRyeTogdHZhcl9lbnRyeSk6IHQgPT5cbiAgZXh0ZW5kKGN0eCwgVFZhckVudHJ5KHR2YXJfZW50cnkpKTtcblxubGV0IGV4dGVuZF9hbGlhcyA9IChjdHg6IHQsIG5hbWU6IHN0cmluZywgaWQ6IElkLnQsIHR5OiBUZXJtQmFzZS5UeXAudCk6IHQgPT5cbiAgZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQsIGtpbmQ6IFNpbmdsZXRvbih0eSl9KTtcblxubGV0IGV4dGVuZF9kdW1teV90dmFyID0gKGN0eDogdCwgdHZhcjogVFBhdC50KSA9PlxuICBzd2l0Y2ggKFRQYXQudHl2YXJfb2ZfdXRwYXQodHZhcikpIHtcbiAgfCBTb21lKG5hbWUpID0+IGV4dGVuZF90dmFyKGN0eCwge2tpbmQ6IEFic3RyYWN0LCBuYW1lLCBpZDogSWQuaW52YWxpZH0pXG4gIHwgTm9uZSA9PiBjdHhcbiAgfTtcblxubGV0IGxvb2t1cF90dmFyID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHR2YXJfZW50cnkpID0+XG4gIExpc3QuZmluZF9tYXAoXG4gICAgZnVuXG4gICAgfCBUVmFyRW50cnkodikgd2hlbiB2Lm5hbWUgPT0gbmFtZSA9PiBTb21lKHYpXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG5sZXQgbG9va3VwX2FsaWFzID0gKGN0eDogdCwgdDogc3RyaW5nKTogb3B0aW9uKFRlcm1CYXNlLlR5cC50KSA9PlxuICBzd2l0Y2ggKGxvb2t1cF90dmFyKGN0eCwgdCkpIHtcbiAgfCBTb21lKHtraW5kOiBTaW5nbGV0b24odHkpLCBffSkgPT4gU29tZSh0eSlcbiAgfCBTb21lKHtraW5kOiBBYnN0cmFjdCwgX30pXG4gIHwgTm9uZSA9PiBOb25lXG4gIH07XG5cbmxldCBnZXRfaWQ6IGVudHJ5ID0+IElkLnQgPVxuICBmdW5cbiAgfCBWYXJFbnRyeSh7aWQsIF99KVxuICB8IENvbnN0cnVjdG9yRW50cnkoe2lkLCBffSlcbiAgfCBUVmFyRW50cnkoe2lkLCBffSkgPT4gaWQ7XG5cbmxldCBsb29rdXBfdmFyID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogb3B0aW9uKHZhcl9lbnRyeSkgPT5cbiAgTGlzdC5maW5kX21hcChcbiAgICBmdW5cbiAgICB8IFZhckVudHJ5KHYpIHdoZW4gdi5uYW1lID09IG5hbWUgPT4gU29tZSh2KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxubGV0IGxvb2t1cF9jdHIgPSAoY3R4OiB0LCBuYW1lOiBzdHJpbmcpOiBvcHRpb24odmFyX2VudHJ5KSA9PlxuICBMaXN0LmZpbmRfbWFwKFxuICAgIGZ1blxuICAgIHwgQ29uc3RydWN0b3JFbnRyeSh0KSB3aGVuIHQubmFtZSA9PSBuYW1lID0+IFNvbWUodClcbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBpc19hbGlhcyA9IChjdHg6IHQsIG5hbWU6IHN0cmluZyk6IGJvb2wgPT5cbiAgc3dpdGNoIChsb29rdXBfYWxpYXMoY3R4LCBuYW1lKSkge1xuICB8IFNvbWUoXykgPT4gdHJ1ZVxuICB8IE5vbmUgPT4gZmFsc2VcbiAgfTtcblxubGV0IGlzX2Fic3RyYWN0ID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogYm9vbCA9PlxuICBzd2l0Y2ggKGxvb2t1cF90dmFyKGN0eCwgbmFtZSkpIHtcbiAgfCBTb21lKHtraW5kOiBBYnN0cmFjdCwgX30pID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG5cbmxldCBhZGRfY3RycyA9IChjdHg6IHQsIG5hbWU6IHN0cmluZywgaWQ6IElkLnQsIGN0cnM6IFRlcm1CYXNlLlR5cC5zdW1fbWFwKTogdCA9PlxuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgZnVuXG4gICAgfCBDb25zdHJ1Y3Rvck1hcC5WYXJpYW50KGN0ciwgXywgdHlwKSA9PlxuICAgICAgU29tZShcbiAgICAgICAgQ29uc3RydWN0b3JFbnRyeSh7XG4gICAgICAgICAgbmFtZTogY3RyLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIHR5cDpcbiAgICAgICAgICAgIHN3aXRjaCAodHlwKSB7XG4gICAgICAgICAgICB8IE5vbmUgPT4gVGVybUJhc2UuVHlwLlZhcihuYW1lKSB8PiBJZFRhZ2dlZC5mcmVzaFxuICAgICAgICAgICAgfCBTb21lKHR5cCkgPT5cbiAgICAgICAgICAgICAgVGVybUJhc2UuVHlwLkFycm93KFxuICAgICAgICAgICAgICAgIHR5cCxcbiAgICAgICAgICAgICAgICBUZXJtQmFzZS5UeXAuVmFyKG5hbWUpIHw+IElkVGFnZ2VkLmZyZXNoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHw+IElkVGFnZ2VkLmZyZXNoXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICB8IENvbnN0cnVjdG9yTWFwLkJhZEVudHJ5KF8pID0+IE5vbmUsXG4gICAgY3RycyxcbiAgKVxuICBAIGN0eDtcblxubGV0IHN1YnRyYWN0X3ByZWZpeCA9IChjdHg6IHQsIHByZWZpeF9jdHg6IHQpOiBvcHRpb24odCkgPT4ge1xuICAvLyBOT1RFOiBkb2VzIG5vdCBjaGVjayB0aGF0IHRoZSBwcmVmaXggaXMgYW4gYWN0dWFsIHByZWZpeFxuICBsZXQgcHJlZml4X2xlbmd0aCA9IExpc3QubGVuZ3RoKHByZWZpeF9jdHgpO1xuICBsZXQgY3R4X2xlbmd0aCA9IExpc3QubGVuZ3RoKGN0eCk7XG4gIGlmIChwcmVmaXhfbGVuZ3RoID4gY3R4X2xlbmd0aCkge1xuICAgIE5vbmU7XG4gIH0gZWxzZSB7XG4gICAgU29tZShcbiAgICAgIExpc3QucmV2KFxuICAgICAgICBMaXN0VXRpbC5zdWJsaXN0KChwcmVmaXhfbGVuZ3RoLCBjdHhfbGVuZ3RoKSwgTGlzdC5yZXYoY3R4KSksXG4gICAgICApLFxuICAgICk7XG4gIH07XG59O1xuXG5sZXQgYWRkZWRfYmluZGluZ3MgPSAoY3R4X2FmdGVyOiB0LCBjdHhfYmVmb3JlOiB0KTogdCA9PiB7XG4gIC8qIFByZWNvbmRpdGlvbjogbmV3X2N0eCBpcyBvbGRfY3R4IHBsdXMgc29tZSBuZXcgYmluZGluZ3MgKi9cbiAgbGV0IG5ld19jb3VudCA9IExpc3QubGVuZ3RoKGN0eF9hZnRlcikgLSBMaXN0Lmxlbmd0aChjdHhfYmVmb3JlKTtcbiAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9uX29wdChuZXdfY291bnQsIGN0eF9hZnRlcikpIHtcbiAgfCBTb21lKChjdHgsIF8pKSA9PiBjdHhcbiAgfCBfID0+IFtdXG4gIH07XG59O1xuXG5tb2R1bGUgVmFyU2V0ID0gU2V0Lk1ha2UoVmFyKTtcblxuLy8gTm90ZTogZmlsdGVyIG91dCBkdXBsaWNhdGVzIHdoZW4gcmVuZGVyaW5nXG5sZXQgZmlsdGVyX2R1cGxpY2F0ZXMgPSAoY3R4OiB0KTogdCA9PlxuICBjdHhcbiAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgKChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KSwgZW50cnkpID0+IHtcbiAgICAgICAgIHN3aXRjaCAoZW50cnkpIHtcbiAgICAgICAgIHwgVmFyRW50cnkoe25hbWUsIF99KVxuICAgICAgICAgfCBDb25zdHJ1Y3RvckVudHJ5KHtuYW1lLCBffSkgPT5cbiAgICAgICAgICAgVmFyU2V0Lm1lbShuYW1lLCB0ZXJtX3NldClcbiAgICAgICAgICAgICA/IChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KVxuICAgICAgICAgICAgIDogKFtlbnRyeSwgLi4uY3R4XSwgVmFyU2V0LmFkZChuYW1lLCB0ZXJtX3NldCksIHR5cF9zZXQpXG4gICAgICAgICB8IFRWYXJFbnRyeSh7bmFtZSwgX30pID0+XG4gICAgICAgICAgIFZhclNldC5tZW0obmFtZSwgdHlwX3NldClcbiAgICAgICAgICAgICA/IChjdHgsIHRlcm1fc2V0LCB0eXBfc2V0KVxuICAgICAgICAgICAgIDogKFtlbnRyeSwgLi4uY3R4XSwgdGVybV9zZXQsIFZhclNldC5hZGQobmFtZSwgdHlwX3NldCkpXG4gICAgICAgICB9XG4gICAgICAgfSxcbiAgICAgICAoW10sIFZhclNldC5lbXB0eSwgVmFyU2V0LmVtcHR5KSxcbiAgICAgKVxuICB8PiAoKChjdHgsIF8sIF8pKSA9PiBMaXN0LnJldihjdHgpKTtcblxubGV0IHNoYWRvd3NfdHlwID0gKGN0eDogdCwgbmFtZTogc3RyaW5nKTogYm9vbCA9PlxuICBGb3JtLmlzX2Jhc2VfdHlwKG5hbWUpIHx8IGxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpICE9IE5vbmU7XG4iLCJvcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGNscyA9XG4gIHwgSW52YWxpZFxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZVxuICB8IFN5blN3aXRjaFxuICB8IEludGVybmFsXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nXG4gIHwgQXJyb3dcbiAgfCBQcm9kXG4gIHwgU3VtXG4gIHwgTGlzdFxuICB8IFZhclxuICB8IENvbnN0cnVjdG9yXG4gIHwgUGFyZW5zXG4gIHwgQXBcbiAgfCBSZWNcbiAgfCBGb3JhbGw7XG5cbmluY2x1ZGUgVGVybUJhc2UuVHlwO1xuXG5sZXQgdGVybV9vZjogdCA9PiB0ZXJtID0gSWRUYWdnZWQudGVybV9vZjtcbmxldCB1bndyYXA6IHQgPT4gKHRlcm0sIHRlcm0gPT4gdCkgPSBJZFRhZ2dlZC51bndyYXA7XG5sZXQgZnJlc2g6IHRlcm0gPT4gdCA9IElkVGFnZ2VkLmZyZXNoO1xuLyogZnJlc2ggYXNzaWducyBhIHJhbmRvbSBpZCwgd2hlcmVhcyBta19mYXN0IGFzc2lnbnMgSWQuaW52YWxpZCwgd2hpY2hcbiAgIGlzIGEgbG90IGZhc3RlciwgYW5kIHNpbmNlIHdlIHNvIG9mdGVuIG1ha2UgdHlwZXMgYW5kIHRocm93IHRoZW0gYXdheVxuICAgc2hvcnRseSBhZnRlciwgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIGl0LiAqL1xubGV0IG1rX2Zhc3Q6IHRlcm0gPT4gdCA9IHRlcm0gPT4ge3Rlcm0sIGlkczogW0lkLmludmFsaWRdLCBjb3BpZWQ6IGZhbHNlfTtcbmxldCByZXBfaWQ6IHQgPT4gSWQudCA9IElkVGFnZ2VkLnJlcF9pZDtcblxubGV0IGhvbGUgPSAodG1zOiBsaXN0KFRlcm1CYXNlLkFueS50KSkgPT5cbiAgc3dpdGNoICh0bXMpIHtcbiAgfCBbXSA9PiBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSlcbiAgfCBbXywgLi4uX10gPT4gVW5rbm93bihIb2xlKE11bHRpSG9sZSh0bXMpKSlcbiAgfTtcblxubGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gIGZ1blxuICB8IFVua25vd24oSG9sZShJbnZhbGlkKF8pKSkgPT4gSW52YWxpZFxuICB8IFVua25vd24oSG9sZShFbXB0eUhvbGUpKSA9PiBFbXB0eUhvbGVcbiAgfCBVbmtub3duKEhvbGUoTXVsdGlIb2xlKF8pKSkgPT4gTXVsdGlIb2xlXG4gIHwgVW5rbm93bihTeW5Td2l0Y2gpID0+IFN5blN3aXRjaFxuICB8IFVua25vd24oSW50ZXJuYWwpID0+IEludGVybmFsXG4gIHwgSW50ID0+IEludFxuICB8IEZsb2F0ID0+IEZsb2F0XG4gIHwgQm9vbCA9PiBCb29sXG4gIHwgU3RyaW5nID0+IFN0cmluZ1xuICB8IExpc3QoXykgPT4gTGlzdFxuICB8IEFycm93KF8pID0+IEFycm93XG4gIHwgVmFyKF8pID0+IFZhclxuICB8IFByb2QoXykgPT4gUHJvZFxuICB8IFBhcmVucyhfKSA9PiBQYXJlbnNcbiAgfCBBcChfKSA9PiBBcFxuICB8IFN1bShfKSA9PiBTdW1cbiAgfCBSZWMoXykgPT4gUmVjXG4gIHwgRm9yYWxsKF8pID0+IEZvcmFsbDtcblxubGV0IHNob3dfY2xzOiBjbHMgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgSW52YWxpZCA9PiBcIkludmFsaWQgdHlwZVwiXG4gIHwgTXVsdGlIb2xlID0+IFwiQnJva2VuIHR5cGVcIlxuICB8IEVtcHR5SG9sZSA9PiBcIkVtcHR5IHR5cGUgaG9sZVwiXG4gIHwgU3luU3dpdGNoID0+IFwiU3ludGhldGljIHR5cGVcIlxuICB8IEludGVybmFsID0+IFwiSW50ZXJuYWwgdHlwZVwiXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBTdHJpbmdcbiAgfCBCb29sID0+IFwiQmFzZSB0eXBlXCJcbiAgfCBWYXIgPT4gXCJUeXBlIHZhcmlhYmxlXCJcbiAgfCBDb25zdHJ1Y3RvciA9PiBcIlN1bSBjb25zdHJ1Y3RvclwiXG4gIHwgTGlzdCA9PiBcIkxpc3QgdHlwZVwiXG4gIHwgQXJyb3cgPT4gXCJGdW5jdGlvbiB0eXBlXCJcbiAgfCBQcm9kID0+IFwiUHJvZHVjdCB0eXBlXCJcbiAgfCBTdW0gPT4gXCJTdW0gdHlwZVwiXG4gIHwgUGFyZW5zID0+IFwiUGFyZW50aGVzaXplZCB0eXBlXCJcbiAgfCBBcCA9PiBcIkNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uXCJcbiAgfCBSZWMgPT4gXCJSZWN1cnNpdmUgdHlwZVwiXG4gIHwgRm9yYWxsID0+IFwiRm9yYWxsIHR5cGVcIjtcblxubGV0IHJlYyBpc19hcnJvdyA9ICh0eXA6IHQpID0+IHtcbiAgc3dpdGNoICh0eXAudGVybSkge1xuICB8IFBhcmVucyh0eXApID0+IGlzX2Fycm93KHR5cClcbiAgfCBBcnJvdyhfKSA9PiB0cnVlXG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZ1xuICB8IExpc3QoXylcbiAgfCBQcm9kKF8pXG4gIHwgVmFyKF8pXG4gIHwgQXAoXylcbiAgfCBTdW0oXylcbiAgfCBGb3JhbGwoXylcbiAgfCBSZWMoXykgPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCByZWMgaXNfZm9yYWxsID0gKHR5cDogdCkgPT4ge1xuICBzd2l0Y2ggKHR5cC50ZXJtKSB7XG4gIHwgUGFyZW5zKHR5cCkgPT4gaXNfZm9yYWxsKHR5cClcbiAgfCBGb3JhbGwoXykgPT4gdHJ1ZVxuICB8IFVua25vd24oXylcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmdcbiAgfCBBcnJvdyhfKVxuICB8IExpc3QoXylcbiAgfCBQcm9kKF8pXG4gIHwgVmFyKF8pXG4gIHwgQXAoXylcbiAgfCBTdW0oXylcbiAgfCBSZWMoXykgPT4gZmFsc2VcbiAgfTtcbn07XG5cbi8qIENvbnZlcnRzIGEgc3ludGFjdGljIHR5cGUgaW50byBhIHNlbWFudGljIHR5cGUsIHNwZWNpZmljYWxseVxuICAgaXQgYWRkcyBpbXBsaWNpdCByZWN1cnNpdmUgdHlwZXMsIGFuZCByZW1vdmVzIGR1cGxpY2F0ZVxuICAgY29uc3RydWN0b3JzLiAqL1xubGV0IHJlYyB0b190eXA6IChDdHgudCwgdCkgPT4gdCA9XG4gIChjdHgsIHV0eXApID0+IHtcbiAgICBsZXQgKHRlcm0sIHJld3JhcCkgPSBJZFRhZ2dlZC51bndyYXAodXR5cCk7XG4gICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgfCBVbmtub3duKF8pXG4gICAgfCBCb29sXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBTdHJpbmcgPT4gdXR5cFxuICAgIHwgVmFyKG5hbWUpID0+XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfdHZhcihjdHgsIG5hbWUpKSB7XG4gICAgICB8IFNvbWUoXykgPT4gVmFyKG5hbWUpIHw+IHJld3JhcFxuICAgICAgfCBOb25lID0+IFVua25vd24oSG9sZShJbnZhbGlkKG5hbWUpKSkgfD4gcmV3cmFwXG4gICAgICB9XG4gICAgfCBBcnJvdyh1MSwgdTIpID0+IEFycm93KHRvX3R5cChjdHgsIHUxKSwgdG9fdHlwKGN0eCwgdTIpKSB8PiByZXdyYXBcbiAgICB8IFByb2QodXMpID0+IFByb2QoTGlzdC5tYXAodG9fdHlwKGN0eCksIHVzKSkgfD4gcmV3cmFwXG4gICAgfCBTdW0odXRzKSA9PiBTdW0odG9fY3RyX21hcChjdHgsIHV0cykpIHw+IHJld3JhcFxuICAgIHwgTGlzdCh1KSA9PiBMaXN0KHRvX3R5cChjdHgsIHUpKSB8PiByZXdyYXBcbiAgICB8IFBhcmVucyh1KSA9PiB0b190eXAoY3R4LCB1KVxuICAgIHwgRm9yYWxsKHt0ZXJtOiBJbnZhbGlkKF8pLCBffSBhcyB0cGF0LCB0Ym9keSlcbiAgICB8IEZvcmFsbCh7dGVybTogRW1wdHlIb2xlLCBffSBhcyB0cGF0LCB0Ym9keSlcbiAgICB8IEZvcmFsbCh7dGVybTogTXVsdGlIb2xlKF8pLCBffSBhcyB0cGF0LCB0Ym9keSkgPT5cbiAgICAgIEZvcmFsbCh0cGF0LCB0b190eXAoY3R4LCB0Ym9keSkpIHw+IHJld3JhcFxuICAgIHwgRm9yYWxsKHt0ZXJtOiBWYXIobmFtZSksIF99IGFzIHV0cGF0LCB0Ym9keSkgPT5cbiAgICAgIGxldCBjdHggPVxuICAgICAgICBDdHguZXh0ZW5kX3R2YXIoXG4gICAgICAgICAgY3R4LFxuICAgICAgICAgIHtuYW1lLCBpZDogSWRUYWdnZWQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9LFxuICAgICAgICApO1xuICAgICAgRm9yYWxsKHV0cGF0LCB0b190eXAoY3R4LCB0Ym9keSkpIHw+IHJld3JhcDtcbiAgICB8IFJlYyh7dGVybTogSW52YWxpZChfKSwgX30gYXMgdHBhdCwgdGJvZHkpXG4gICAgfCBSZWMoe3Rlcm06IEVtcHR5SG9sZSwgX30gYXMgdHBhdCwgdGJvZHkpXG4gICAgfCBSZWMoe3Rlcm06IE11bHRpSG9sZShfKSwgX30gYXMgdHBhdCwgdGJvZHkpID0+XG4gICAgICBSZWModHBhdCwgdG9fdHlwKGN0eCwgdGJvZHkpKSB8PiByZXdyYXBcbiAgICB8IFJlYyh7dGVybTogVmFyKG5hbWUpLCBffSBhcyB1dHBhdCwgdGJvZHkpID0+XG4gICAgICBsZXQgY3R4ID1cbiAgICAgICAgQ3R4LmV4dGVuZF90dmFyKFxuICAgICAgICAgIGN0eCxcbiAgICAgICAgICB7bmFtZSwgaWQ6IElkVGFnZ2VkLnJlcF9pZCh1dHBhdCksIGtpbmQ6IEFic3RyYWN0fSxcbiAgICAgICAgKTtcbiAgICAgIFJlYyh1dHBhdCwgdG9fdHlwKGN0eCwgdGJvZHkpKSB8PiByZXdyYXA7XG4gICAgLyogVGhlIGJlbG93IGNhc2VzIHNob3VsZCBvY2N1ciBvbmx5IGluc2lkZSBzdW1zICovXG4gICAgfCBBcChfKSA9PiBVbmtub3duKEludGVybmFsKSB8PiByZXdyYXBcbiAgICB9O1xuICB9XG5hbmQgdG9fdmFyaWFudDpcbiAgKEN0eC50LCBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpKSA9PiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpID1cbiAgY3R4ID0+XG4gICAgZnVuXG4gICAgfCBWYXJpYW50KGN0ciwgaWRzLCB1KSA9PlxuICAgICAgQ29uc3RydWN0b3JNYXAuVmFyaWFudChjdHIsIGlkcywgT3B0aW9uLm1hcCh0b190eXAoY3R4KSwgdSkpXG4gICAgfCBCYWRFbnRyeSh1KSA9PiBDb25zdHJ1Y3Rvck1hcC5CYWRFbnRyeSh0b190eXAoY3R4LCB1KSlcbmFuZCB0b19jdHJfbWFwID0gKGN0eDogQ3R4LnQsIHV0czogbGlzdChDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpKSkgPT4ge1xuICB1dHNcbiAgfD4gTGlzdC5tYXAodG9fdmFyaWFudChjdHgpKVxuICB8PiBMaXN0VXRpbC5kZWR1cF9mKFxuICAgICAgICh4OiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpLCB5OiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KHQpKSA9PlxuICAgICAgIHN3aXRjaCAoeCwgeSkge1xuICAgICAgIHwgKFZhcmlhbnQoYzEsIF8sIF8pLCBWYXJpYW50KGMyLCBfLCBfKSkgPT4gYzEgPT0gYzJcbiAgICAgICB8IChWYXJpYW50KF8pLCBCYWRFbnRyeShfKSlcbiAgICAgICB8IChCYWRFbnRyeShfKSwgVmFyaWFudChfKSlcbiAgICAgICB8IChCYWRFbnRyeShfKSwgQmFkRW50cnkoXykpID0+IGZhbHNlXG4gICAgICAgfVxuICAgICApO1xufTtcblxuLyogRnVuY3Rpb25zIGJlbG93IHRoaXMgcG9pbnQgYXNzdW1lIHRoYXQgdHlwZXMgaGF2ZSBiZWVuIHRocm91Z2ggdGhlIHRvX3R5cCBmdW5jdGlvbiBhYm92ZSAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHNvdXJjZSA9IHtcbiAgaWQ6IElkLnQsXG4gIHR5OiB0LFxufTtcblxuLyogU3RyaXAgbG9jYXRpb24gaW5mb3JtYXRpb24gZnJvbSBhIGxpc3Qgb2Ygc291cmNlcyAqL1xubGV0IG9mX3NvdXJjZSA9IExpc3QubWFwKChzb3VyY2U6IHNvdXJjZSkgPT4gc291cmNlLnR5KTtcblxuLyogSG93IHR5cGUgcHJvdmVuYW5jZSBpbmZvcm1hdGlvbiBzaG91bGQgYmUgY29sbGF0ZWQgd2hlblxuICAgam9pbmluZyB1bmtub3duIHR5cGVzLiBUaGlzIHByb2JhYmx5IHJlcXVpcmVzIG1vcmUgdGhvdWdodCxcbiAgIGJ1dCByaWdodCBub3cgVHlwZUhvbGUgc3RyaWN0bHkgcHJlZG9taW5hdGVzIG92ZXIgSW50ZXJuYWxcbiAgIHdoaWNoIHN0cmljdGx5IHByZWRvbWluYXRlcyBvdmVyIFN5blN3aXRjaC4gKi9cbmxldCBqb2luX3R5cGVfcHJvdmVuYW5jZSA9XG4gICAgKHAxOiB0eXBlX3Byb3ZlbmFuY2UsIHAyOiB0eXBlX3Byb3ZlbmFuY2UpOiB0eXBlX3Byb3ZlbmFuY2UgPT5cbiAgc3dpdGNoIChwMSwgcDIpIHtcbiAgfCAoSG9sZShoMSksIEhvbGUoaDIpKSB3aGVuIGgxID09IGgyID0+IEhvbGUoaDEpXG4gIHwgKEhvbGUoRW1wdHlIb2xlKSwgSG9sZShFbXB0eUhvbGUpIHwgU3luU3dpdGNoKVxuICB8IChTeW5Td2l0Y2gsIEhvbGUoRW1wdHlIb2xlKSkgPT4gSG9sZShFbXB0eUhvbGUpXG4gIHwgKFN5blN3aXRjaCwgSW50ZXJuYWwpXG4gIHwgKEludGVybmFsLCBTeW5Td2l0Y2gpID0+IFN5blN3aXRjaFxuICB8IChJbnRlcm5hbCB8IEhvbGUoXyksIF8pXG4gIHwgKF8sIEhvbGUoXykpID0+IEludGVybmFsXG4gIHwgKFN5blN3aXRjaCwgU3luU3dpdGNoKSA9PiBTeW5Td2l0Y2hcbiAgfTtcblxubGV0IHJlYyBmcmVlX3ZhcnMgPSAofmJvdW5kPVtdLCB0eTogdCk6IGxpc3QoVmFyLnQpID0+XG4gIHN3aXRjaCAodGVybV9vZih0eSkpIHtcbiAgfCBVbmtub3duKF8pXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nID0+IFtdXG4gIHwgQXAodDEsIHQyKSA9PiBmcmVlX3ZhcnMofmJvdW5kLCB0MSkgQCBmcmVlX3ZhcnMofmJvdW5kLCB0MilcbiAgfCBWYXIodikgPT4gTGlzdC5tZW0odiwgYm91bmQpID8gW10gOiBbdl1cbiAgfCBQYXJlbnModHkpID0+IGZyZWVfdmFycyh+Ym91bmQsIHR5KVxuICB8IExpc3QodHkpID0+IGZyZWVfdmFycyh+Ym91bmQsIHR5KVxuICB8IEFycm93KHQxLCB0MikgPT4gZnJlZV92YXJzKH5ib3VuZCwgdDEpIEAgZnJlZV92YXJzKH5ib3VuZCwgdDIpXG4gIHwgU3VtKHNtKSA9PiBDb25zdHJ1Y3Rvck1hcC5mcmVlX3ZhcmlhYmxlcyhmcmVlX3ZhcnMofmJvdW5kKSwgc20pXG4gIHwgUHJvZCh0eXMpID0+IExpc3RVdGlsLmZsYXRfbWFwKGZyZWVfdmFycyh+Ym91bmQpLCB0eXMpXG4gIHwgUmVjKHgsIHR5KVxuICB8IEZvcmFsbCh4LCB0eSkgPT5cbiAgICBmcmVlX3ZhcnMofmJvdW5kPSh4IHw+IFRQYXQudHl2YXJfb2ZfdXRwYXQgfD4gT3B0aW9uLnRvX2xpc3QpIEAgYm91bmQsIHR5KVxuICB9O1xuXG5sZXQgdmFyX2NvdW50ID0gcmVmKDApO1xubGV0IGZyZXNoX3ZhciA9ICh2YXJfbmFtZTogc3RyaW5nKSA9PiB7XG4gIGxldCB4ID0gdmFyX2NvdW50XjtcbiAgdmFyX2NvdW50IDo9IHggKyAxO1xuICB2YXJfbmFtZSArKyBcIl/OsVwiICsrIHN0cmluZ19vZl9pbnQoeCk7XG59O1xuXG5sZXQgdW5yb2xsID0gKHR5OiB0KTogdCA9PlxuICBzd2l0Y2ggKHRlcm1fb2YodHkpKSB7XG4gIHwgUmVjKHRwLCB0eV9ib2R5KSA9PiBzdWJzdCh0eSwgdHAsIHR5X2JvZHkpXG4gIHwgXyA9PiB0eVxuICB9O1xuXG4vKiBUeXBlIEVxdWFsaXR5OiBUaGlzIGNvaW5jaWRlcyB3aXRoIGFscGhhIGVxdWl2YWxlbmNlIGZvciBub3JtYWxpemVkIHR5cGVzLlxuICAgT3RoZXIgdHlwZXMgbWF5IGJlIGVxdWl2YWxlbnQgYnV0IHRoaXMgd2lsbCBub3QgZGV0ZWN0IHNvIGlmIHRoZXkgYXJlIG5vdCBub3JtYWxpemVkLiAqL1xubGV0IGVxID0gKHQxOiB0LCB0MjogdCk6IGJvb2wgPT4gZmFzdF9lcXVhbCh0MSwgdDIpO1xuXG4vKiBMYXR0aWNlIGpvaW4gb24gdHlwZXMuIFRoaXMgaXMgYSBMVUIgam9pbiBpbiB0aGUgaGF6ZWwyXG4gICBzZW5zZSBpbiB0aGF0IGFueSB0eXBlIGRvbWluYXRlcyBVbmtub3duLiBUaGUgb3B0aW9uYWxcbiAgIHJlc29sdmUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyLCBpbiB0aGUgY2FzZSBvZiBhIHR5cGVcbiAgIHZhcmlhYmxlIGFuZCBhIHN1Y2Nlc2Z1bCBqb2luLCB0byByZXR1cm4gdGhlIHJlc29sdmVkIGpvaW4gdHlwZSxcbiAgIG9yIHRvIHJldHVybiB0aGUgKGZpcnN0KSB0eXBlIHZhcmlhYmxlIGZvciByZWFkYWJpbGl0eSAqL1xubGV0IHJlYyBqb2luID0gKH5yZXNvbHZlPWZhbHNlLCB+Zml4LCBjdHg6IEN0eC50LCB0eTE6IHQsIHR5MjogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCBqb2luJyA9IGpvaW4ofnJlc29sdmUsIH5maXgsIGN0eCk7XG4gIHN3aXRjaCAodGVybV9vZih0eTEpLCB0ZXJtX29mKHR5MikpIHtcbiAgfCAoXywgUGFyZW5zKHR5MikpID0+IGpvaW4nKHR5MSwgdHkyKVxuICB8IChQYXJlbnModHkxKSwgXykgPT4gam9pbicodHkxLCB0eTIpXG4gIHwgKF8sIFVua25vd24oSG9sZShfKSkpIHdoZW4gZml4ID0+XG4gICAgLyogTk9URShhbmRyZXcpOiBUaGlzIGlzIGxvYWQgYmVhcmluZ1xuICAgICAgIGZvciBlbnN1cmluZyB0aGF0IGZ1bmN0aW9uIGxpdGVyYWxzIGdldCBhcHByb3ByaWF0ZVxuICAgICAgIGNhc3RzLiBEb2N1bWVudGF0aW9uL0R5bmFtaWNzIGhhcyByZWdyZXNzaW9uIHRlc3RzICovXG4gICAgU29tZSh0eTIpXG4gIHwgKFVua25vd24ocDEpLCBVbmtub3duKHAyKSkgPT5cbiAgICBTb21lKFVua25vd24oam9pbl90eXBlX3Byb3ZlbmFuY2UocDEsIHAyKSkgfD4gbWtfZmFzdClcbiAgfCAoVW5rbm93bihfKSwgXykgPT4gU29tZSh0eTIpXG4gIHwgKF8sIFVua25vd24oSW50ZXJuYWwgfCBTeW5Td2l0Y2gpKSA9PiBTb21lKHR5MSlcbiAgfCAoVmFyKG4xKSwgVmFyKG4yKSkgPT5cbiAgICBpZiAobjEgPT0gbjIpIHtcbiAgICAgIFNvbWUodHkxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0KiB0eTEgPSBDdHgubG9va3VwX2FsaWFzKGN0eCwgbjEpO1xuICAgICAgbGV0KiB0eTIgPSBDdHgubG9va3VwX2FsaWFzKGN0eCwgbjIpO1xuICAgICAgbGV0KyB0eV9qb2luID0gam9pbicodHkxLCB0eTIpO1xuICAgICAgIXJlc29sdmUgJiYgZXEodHkxLCB0eV9qb2luKSA/IHR5MSA6IHR5X2pvaW47XG4gICAgfVxuICB8IChWYXIobmFtZSksIF8pID0+XG4gICAgbGV0KiB0eV9uYW1lID0gQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpO1xuICAgIGxldCsgdHlfam9pbiA9IGpvaW4nKHR5X25hbWUsIHR5Mik7XG4gICAgIXJlc29sdmUgJiYgZXEodHlfbmFtZSwgdHlfam9pbikgPyB0eTEgOiB0eV9qb2luO1xuICB8IChfLCBWYXIobmFtZSkpID0+XG4gICAgbGV0KiB0eV9uYW1lID0gQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIG5hbWUpO1xuICAgIGxldCsgdHlfam9pbiA9IGpvaW4nKHR5X25hbWUsIHR5MSk7XG4gICAgIXJlc29sdmUgJiYgZXEodHlfbmFtZSwgdHlfam9pbikgPyB0eTIgOiB0eV9qb2luO1xuICAvKiBOb3RlOiBPcmRlcmluZyBvZiBVbmtub3duLCBWYXIsIGFuZCBSZWMgYWJvdmUgaXMgbG9hZC1iZWFyaW5nISAqL1xuICB8IChSZWModHAxLCB0eTEpLCBSZWModHAyLCB0eTIpKSA9PlxuICAgIGxldCBjdHggPSBDdHguZXh0ZW5kX2R1bW15X3R2YXIoY3R4LCB0cDEpO1xuICAgIGxldCB0eTEnID1cbiAgICAgIHN3aXRjaCAoVFBhdC50eXZhcl9vZl91dHBhdCh0cDIpKSB7XG4gICAgICB8IFNvbWUoeDIpID0+IHN1YnN0KFZhcih4MikgfD4gbWtfZmFzdCwgdHAxLCB0eTEpXG4gICAgICB8IE5vbmUgPT4gdHkxXG4gICAgICB9O1xuICAgIGxldCsgdHlfYm9keSA9IGpvaW4ofnJlc29sdmUsIH5maXgsIGN0eCwgdHkxJywgdHkyKTtcbiAgICBSZWModHAxLCB0eV9ib2R5KSB8PiBta19mYXN0O1xuICB8IChSZWMoXyksIF8pID0+IE5vbmVcbiAgfCAoRm9yYWxsKHgxLCB0eTEpLCBGb3JhbGwoeDIsIHR5MikpID0+XG4gICAgbGV0IGN0eCA9IEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIHgxKTtcbiAgICBsZXQgdHkxJyA9XG4gICAgICBzd2l0Y2ggKFRQYXQudHl2YXJfb2ZfdXRwYXQoeDIpKSB7XG4gICAgICB8IFNvbWUoeDIpID0+IHN1YnN0KFZhcih4MikgfD4gbWtfZmFzdCwgeDEsIHR5MSlcbiAgICAgIHwgTm9uZSA9PiB0eTFcbiAgICAgIH07XG4gICAgbGV0KyB0eV9ib2R5ID0gam9pbih+cmVzb2x2ZSwgfmZpeCwgY3R4LCB0eTEnLCB0eTIpO1xuICAgIEZvcmFsbCh4MSwgdHlfYm9keSkgfD4gbWtfZmFzdDtcbiAgLyogTm90ZSBmb3IgYWJvdmU6IHRoZXJlIGlzIG5vIGRhbmdlciBvZiBmcmVlIHZhcmlhYmxlIGNhcHR1cmUgYXNcbiAgICAgc3Vic3QgaXRzZWxmIHBlcmZvcm1zIGNhcHR1cmUgYXZvaWRpbmcgc3Vic3RpdHV0aW9uLiBIb3dldmVyIHRoaXNcbiAgICAgbWF5IGdlbmVyYXRlIGludGVybmFsIHR5cGUgdmFyaWFibGUgbmFtZXMgdGhhdCBpbiBjb3JuZXIgY2FzZXMgY2FuXG4gICAgIGJlIGV4cG9zZWQgdG8gdGhlIHVzZXIuIFdlIHByZXNlcnZlIHRoZSB2YXJpYWJsZSBuYW1lIG9mIHRoZVxuICAgICBzZWNvbmQgdHlwZSB0byBwcmVzZXJ2ZSBzeW50aGVzaXplZCB0eXBlIHZhcmlhYmxlIG5hbWVzLCB3aGljaFxuICAgICBjb21lIGZyb20gdXNlciBhbm5vdGF0aW9ucy4gKi9cbiAgfCAoRm9yYWxsKF8pLCBfKSA9PiBOb25lXG4gIHwgKEludCwgSW50KSA9PiBTb21lKHR5MSlcbiAgfCAoSW50LCBfKSA9PiBOb25lXG4gIHwgKEZsb2F0LCBGbG9hdCkgPT4gU29tZSh0eTEpXG4gIHwgKEZsb2F0LCBfKSA9PiBOb25lXG4gIHwgKEJvb2wsIEJvb2wpID0+IFNvbWUodHkxKVxuICB8IChCb29sLCBfKSA9PiBOb25lXG4gIHwgKFN0cmluZywgU3RyaW5nKSA9PiBTb21lKHR5MSlcbiAgfCAoU3RyaW5nLCBfKSA9PiBOb25lXG4gIHwgKEFycm93KHR5MSwgdHkyKSwgQXJyb3codHkxJywgdHkyJykpID0+XG4gICAgbGV0KiB0eTEgPSBqb2luJyh0eTEsIHR5MScpO1xuICAgIGxldCsgdHkyID0gam9pbicodHkyLCB0eTInKTtcbiAgICBBcnJvdyh0eTEsIHR5MikgfD4gbWtfZmFzdDtcbiAgfCAoQXJyb3coXyksIF8pID0+IE5vbmVcbiAgfCAoUHJvZCh0eXMxKSwgUHJvZCh0eXMyKSkgPT5cbiAgICBsZXQqIHR5cyA9IExpc3RVdGlsLm1hcDJfb3B0KGpvaW4nLCB0eXMxLCB0eXMyKTtcbiAgICBsZXQrIHR5cyA9IE9wdFV0aWwuc2VxdWVuY2UodHlzKTtcbiAgICBQcm9kKHR5cykgfD4gbWtfZmFzdDtcbiAgfCAoUHJvZChfKSwgXykgPT4gTm9uZVxuICB8IChTdW0oc20xKSwgU3VtKHNtMikpID0+XG4gICAgbGV0KyBzbScgPSBDb25zdHJ1Y3Rvck1hcC5qb2luKGVxLCBqb2luKH5yZXNvbHZlLCB+Zml4LCBjdHgpLCBzbTEsIHNtMik7XG4gICAgU3VtKHNtJykgfD4gbWtfZmFzdDtcbiAgfCAoU3VtKF8pLCBfKSA9PiBOb25lXG4gIHwgKExpc3QodHkxKSwgTGlzdCh0eTIpKSA9PlxuICAgIGxldCsgdHkgPSBqb2luJyh0eTEsIHR5Mik7XG4gICAgTGlzdCh0eSkgfD4gbWtfZmFzdDtcbiAgfCAoTGlzdChfKSwgXykgPT4gTm9uZVxuICB8IChBcChfKSwgXykgPT4gZmFpbHdpdGgoXCJUeXBlIGpvaW4gb2YgYXBcIilcbiAgfTtcbn07XG5cbi8qIFJFUVVJUkVTIE5PUk1BTElaRUQgVFlQRVNcbiAgIFJlbW92ZSBzeW5zd2l0Y2hlcyBmcm9tIHQxIGJ5IG1hY2hpbmcgYWdhaW5zdCB0MiAqL1xubGV0IHJlYyBtYXRjaF9zeW5zd2l0Y2ggPSAodDE6IHQsIHQyOiB0KSA9PiB7XG4gIGxldCAodGVybTEsIHJld3JhcDEpID0gdW53cmFwKHQxKTtcbiAgc3dpdGNoICh0ZXJtMSwgdGVybV9vZih0MikpIHtcbiAgfCAoUGFyZW5zKHQxKSwgXykgPT4gUGFyZW5zKG1hdGNoX3N5bnN3aXRjaCh0MSwgdDIpKSB8PiByZXdyYXAxXG4gIHwgKFVua25vd24oU3luU3dpdGNoKSwgXykgPT4gdDJcbiAgLy8gVGhlc2UgY2FzZXMgY2FuJ3QgaGF2ZSBhIHN5bnN3aXRjaCBpbnNpZGVcbiAgfCAoVW5rbm93bihfKSwgXylcbiAgfCAoSW50LCBfKVxuICB8IChGbG9hdCwgXylcbiAgfCAoQm9vbCwgXylcbiAgfCAoU3RyaW5nLCBfKVxuICB8IChWYXIoXyksIF8pXG4gIHwgKEFwKF8pLCBfKVxuICB8IChSZWMoXyksIF8pXG4gIHwgKEZvcmFsbChfKSwgXykgPT4gdDFcbiAgLy8gVGhlc2UgbWlnaHRcbiAgfCAoTGlzdCh0eTEpLCBMaXN0KHR5MikpID0+IExpc3QobWF0Y2hfc3luc3dpdGNoKHR5MSwgdHkyKSkgfD4gcmV3cmFwMVxuICB8IChMaXN0KF8pLCBfKSA9PiB0MVxuICB8IChBcnJvdyh0eTEsIHR5MiksIEFycm93KHR5MScsIHR5MicpKSA9PlxuICAgIEFycm93KG1hdGNoX3N5bnN3aXRjaCh0eTEsIHR5MScpLCBtYXRjaF9zeW5zd2l0Y2godHkyLCB0eTInKSkgfD4gcmV3cmFwMVxuICB8IChBcnJvdyhfKSwgXykgPT4gdDFcbiAgfCAoUHJvZCh0eXMxKSwgUHJvZCh0eXMyKSkgd2hlbiBMaXN0Lmxlbmd0aCh0eXMxKSA9PSBMaXN0Lmxlbmd0aCh0eXMyKSA9PlxuICAgIGxldCB0eXMgPSBMaXN0Lm1hcDIobWF0Y2hfc3luc3dpdGNoLCB0eXMxLCB0eXMyKTtcbiAgICBQcm9kKHR5cykgfD4gcmV3cmFwMTtcbiAgfCAoUHJvZChfKSwgXykgPT4gdDFcbiAgfCAoU3VtKHNtMSksIFN1bShzbTIpKSA9PlxuICAgIGxldCBzbScgPSBDb25zdHJ1Y3Rvck1hcC5tYXRjaF9zeW5zd2l0Y2gobWF0Y2hfc3luc3dpdGNoLCBzbTEsIHNtMik7XG4gICAgU3VtKHNtJykgfD4gcmV3cmFwMTtcbiAgfCAoU3VtKF8pLCBfKSA9PiB0MVxuICB9O1xufTtcblxubGV0IGpvaW5fZml4ID0gam9pbih+Zml4PXRydWUpO1xuXG5sZXQgam9pbl9hbGwgPSAofmVtcHR5OiB0LCBjdHg6IEN0eC50LCB0czogbGlzdCh0KSk6IG9wdGlvbih0KSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoYWNjLCB0eSkgPT4gT3B0VXRpbC5hbmRfdGhlbihqb2luKH5maXg9ZmFsc2UsIGN0eCwgdHkpLCBhY2MpLFxuICAgIFNvbWUoZW1wdHkpLFxuICAgIHRzLFxuICApO1xuXG5sZXQgaXNfY29uc2lzdGVudCA9IChjdHg6IEN0eC50LCB0eTE6IHQsIHR5MjogdCk6IGJvb2wgPT5cbiAgam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5MSwgdHkyKSAhPSBOb25lO1xuXG5sZXQgcmVjIHdlYWtfaGVhZF9ub3JtYWxpemUgPSAoY3R4OiBDdHgudCwgdHk6IHQpOiB0ID0+XG4gIHN3aXRjaCAodGVybV9vZih0eSkpIHtcbiAgfCBWYXIoeCkgPT5cbiAgICBzd2l0Y2ggKEN0eC5sb29rdXBfYWxpYXMoY3R4LCB4KSkge1xuICAgIHwgU29tZSh0eSkgPT4gd2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KVxuICAgIHwgTm9uZSA9PiB0eVxuICAgIH1cbiAgfCBfID0+IHR5XG4gIH07XG5cbmxldCByZWMgbm9ybWFsaXplID0gKGN0eDogQ3R4LnQsIHR5OiB0KTogdCA9PiB7XG4gIGxldCAodGVybSwgcmV3cmFwKSA9IHVud3JhcCh0eSk7XG4gIHN3aXRjaCAodGVybSkge1xuICB8IFZhcih4KSA9PlxuICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIHgpKSB7XG4gICAgfCBTb21lKHR5KSA9PiBub3JtYWxpemUoY3R4LCB0eSlcbiAgICB8IE5vbmUgPT4gdHlcbiAgICB9XG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZyA9PiB0eVxuICB8IFBhcmVucyh0KSA9PiB0XG4gIHwgTGlzdCh0KSA9PiBMaXN0KG5vcm1hbGl6ZShjdHgsIHQpKSB8PiByZXdyYXBcbiAgfCBBcCh0MSwgdDIpID0+IEFwKG5vcm1hbGl6ZShjdHgsIHQxKSwgbm9ybWFsaXplKGN0eCwgdDIpKSB8PiByZXdyYXBcbiAgfCBBcnJvdyh0MSwgdDIpID0+XG4gICAgQXJyb3cobm9ybWFsaXplKGN0eCwgdDEpLCBub3JtYWxpemUoY3R4LCB0MikpIHw+IHJld3JhcFxuICB8IFByb2QodHMpID0+IFByb2QoTGlzdC5tYXAobm9ybWFsaXplKGN0eCksIHRzKSkgfD4gcmV3cmFwXG4gIHwgU3VtKHRzKSA9PlxuICAgIFN1bShDb25zdHJ1Y3Rvck1hcC5tYXAoT3B0aW9uLm1hcChub3JtYWxpemUoY3R4KSksIHRzKSkgfD4gcmV3cmFwXG4gIHwgUmVjKHRwYXQsIHR5KSA9PlxuICAgIC8qIE5PVEU6IER1bW15IHR2YXIgYWRkZWQgaGFzIGZha2UgaWQgYnV0IHNob3VsZG4ndCBtYXR0ZXJcbiAgICAgICBhcyBpbiBjdXJyZW50IGltcGxlbWVudGF0aW9uIFJlY3MgZG8gbm90IG9jY3VyIGluIHRoZVxuICAgICAgIHN1cmZhY2Ugc3ludGF4LCBzbyB3ZSB3b24ndCB0cnkgdG8ganVtcCB0byB0aGVtLiAqL1xuICAgIFJlYyh0cGF0LCBub3JtYWxpemUoQ3R4LmV4dGVuZF9kdW1teV90dmFyKGN0eCwgdHBhdCksIHR5KSkgfD4gcmV3cmFwXG4gIHwgRm9yYWxsKG5hbWUsIHR5KSA9PlxuICAgIEZvcmFsbChuYW1lLCBub3JtYWxpemUoQ3R4LmV4dGVuZF9kdW1teV90dmFyKGN0eCwgbmFtZSksIHR5KSkgfD4gcmV3cmFwXG4gIH07XG59O1xuXG5sZXQgbWF0Y2hlZF9hcnJvdyA9IChjdHgsIHR5KSA9PlxuICBzd2l0Y2ggKHRlcm1fb2Yod2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KSkpIHtcbiAgfCBBcnJvdyh0eV9pbiwgdHlfb3V0KSA9PiAodHlfaW4sIHR5X291dClcbiAgfCBVbmtub3duKFN5blN3aXRjaCkgPT4gKFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3QsXG4gICAgICBVbmtub3duKFN5blN3aXRjaCkgfD4gbWtfZmFzdCxcbiAgICApXG4gIHwgXyA9PiAoVW5rbm93bihJbnRlcm5hbCkgfD4gbWtfZmFzdCwgVW5rbm93bihJbnRlcm5hbCkgfD4gbWtfZmFzdClcbiAgfTtcblxubGV0IG1hdGNoZWRfZm9yYWxsID0gKGN0eCwgdHkpID0+XG4gIHN3aXRjaCAodGVybV9vZih3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSkge1xuICB8IEZvcmFsbCh0LCB0eSkgPT4gKFNvbWUodCksIHR5KVxuICB8IFVua25vd24oU3luU3dpdGNoKSA9PiAoTm9uZSwgVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3QpXG4gIHwgXyA9PiAoTm9uZSwgVW5rbm93bihJbnRlcm5hbCkgfD4gbWtfZmFzdClcbiAgfTtcblxubGV0IG1hdGNoZWRfcHJvZCA9IChjdHgsIGxlbmd0aCwgdHkpID0+XG4gIHN3aXRjaCAodGVybV9vZih3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSkge1xuICB8IFByb2QodHlzKSB3aGVuIExpc3QubGVuZ3RoKHR5cykgPT0gbGVuZ3RoID0+IHR5c1xuICB8IFVua25vd24oU3luU3dpdGNoKSA9PlxuICAgIExpc3QuaW5pdChsZW5ndGgsIF8gPT4gVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3QpXG4gIHwgXyA9PiBMaXN0LmluaXQobGVuZ3RoLCBfID0+IFVua25vd24oSW50ZXJuYWwpIHw+IG1rX2Zhc3QpXG4gIH07XG5cbmxldCBtYXRjaGVkX2xpc3QgPSAoY3R4LCB0eSkgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHdlYWtfaGVhZF9ub3JtYWxpemUoY3R4LCB0eSkpKSB7XG4gIHwgTGlzdCh0eSkgPT4gdHlcbiAgfCBVbmtub3duKFN5blN3aXRjaCkgPT4gVW5rbm93bihTeW5Td2l0Y2gpIHw+IG1rX2Zhc3RcbiAgfCBfID0+IFVua25vd24oSW50ZXJuYWwpIHw+IG1rX2Zhc3RcbiAgfTtcblxubGV0IG1hdGNoZWRfYXJncyA9IChjdHgsIGRlZmF1bHRfYXJpdHksIHR5KSA9PiB7XG4gIGxldCB0eScgPSB3ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpO1xuICBzd2l0Y2ggKHRlcm1fb2YodHknKSkge1xuICB8IFByb2QoW18sIC4uLl9dIGFzIHR5cykgPT4gdHlzXG4gIHwgVW5rbm93bihfKSA9PiBMaXN0LmluaXQoZGVmYXVsdF9hcml0eSwgXyA9PiB0eScpXG4gIHwgXyA9PiBbdHknXVxuICB9O1xufTtcblxubGV0IGdldF9zdW1fY29uc3RydWN0b3JzID0gKGN0eDogQ3R4LnQsIHR5OiB0KTogb3B0aW9uKHN1bV9tYXApID0+IHtcbiAgbGV0IHR5ID0gd2Vha19oZWFkX25vcm1hbGl6ZShjdHgsIHR5KTtcbiAgc3dpdGNoICh0ZXJtX29mKHR5KSkge1xuICB8IFN1bShzbSkgPT4gU29tZShzbSlcbiAgfCBSZWMoXykgPT5cbiAgICAvKiBOb3RlOiBXZSBtdXN0IHVucm9sbCBoZXJlIHRvIGdldCByaWdodCBjdHIgdHlwZXM7XG4gICAgICAgb3RoZXJ3aXNlIHRoZSByZWMgcGFyYW1ldGVyIHdpbGwgbGVhay4gSG93ZXZlciwgc2VlaW5nXG4gICAgICAgYXMgc3Vic3RpdHV0aW9uIGlzIHRvbyBleHBlbnNpdmUgdG8gYmUgdXNlZCBoZXJlLCB3ZVxuICAgICAgIGN1cnJlbnRseSBtYWtpbmcgdGhlIG9wdGltaXphdGlvbiB0aGF0LCBzaW5jZSBhbGxcbiAgICAgICByZWN1cnNpdmUgdHlwZXMgYXJlIHR5cGUgYWxpc2VzIHdoaWNoIHVzZSB0aGUgYWxpYXMgbmFtZVxuICAgICAgIGFzIHRoZSByZWN1cnNpdmUgcGFyYW1ldGVyLCBhbmQgdHlwZSBhbGlhc2VzIGNhbm5vdCBiZVxuICAgICAgIHNoYWRvd2VkLCBpdCBpcyBzYWZlIHRvIHNpbXBseSByZW1vdmUgdGhlIFJlYyBjb25zdHJ1Y3RvcixcbiAgICAgICBwcm92aWRlZCB3ZSBoYXZlbid0IGVzY2FwZWQgdGhlIGNvbnRleHQgaW4gd2hpY2ggdGhlIGFsaWFzXG4gICAgICAgaXMgYm91bmQuIElmIGVpdGhlciBvZiB0aGUgYWJvdmUgYXNzdW1wdGlvbnMgYmVjb21lIGludmFsaWQsXG4gICAgICAgdGhlIGJlbG93IGNvZGUgd2lsbCBiZSBpbmNvcnJlY3QhICovXG4gICAgbGV0IHR5ID1cbiAgICAgIHN3aXRjaCAodHkgfD4gdGVybV9vZikge1xuICAgICAgfCBSZWMoe3Rlcm06IFZhcih4KSwgX30sIHR5X2JvZHkpID0+XG4gICAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9hbGlhcyhjdHgsIHgpKSB7XG4gICAgICAgIHwgTm9uZSA9PiB1bnJvbGwodHkpXG4gICAgICAgIHwgU29tZShfKSA9PiB0eV9ib2R5XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiB0eVxuICAgICAgfTtcbiAgICBzd2l0Y2ggKHR5IHw+IHRlcm1fb2YpIHtcbiAgICB8IFN1bShzbSkgPT4gU29tZShzbSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG4gIHwgXyA9PiBOb25lXG4gIH07XG59O1xuXG5sZXQgaXNfdW5rbm93biA9ICh0eTogdCk6IGJvb2wgPT5cbiAgc3dpdGNoICh0eSB8PiB0ZXJtX29mKSB7XG4gIHwgVW5rbm93bihfKSA9PiB0cnVlXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG4vKiBEb2VzIHRoZSB0eXBlIHJlcXVpcmUgcGFyZW50aGVzZXMgd2hlbiBvbiB0aGUgbGVmdCBvZiBhbiBhcnJvdyBmb3IgcHJpbnRpbmc/ICovXG5sZXQgcmVjIG5lZWRzX3BhcmVucyA9ICh0eTogdCk6IGJvb2wgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHR5KSkge1xuICB8IFBhcmVucyh0eSkgPT4gbmVlZHNfcGFyZW5zKHR5KVxuICB8IEFwKF8pXG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgU3RyaW5nXG4gIHwgQm9vbFxuICB8IFZhcihfKSA9PiBmYWxzZVxuICB8IFJlYyhfLCBfKVxuICB8IEZvcmFsbChfLCBfKSA9PiB0cnVlXG4gIHwgTGlzdChfKSA9PiBmYWxzZSAvKiBpcyBhbHJlYWR5IHdyYXBwZWQgaW4gW10gKi9cbiAgfCBBcnJvdyhfLCBfKSA9PiB0cnVlXG4gIHwgUHJvZChfKVxuICB8IFN1bShfKSA9PiB0cnVlIC8qIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIChBICsgQikgLT4gQyBhbmQgQSArIChCIC0+IEMpICovXG4gIH07XG5cbmxldCBwcmV0dHlfcHJpbnRfdHZhciA9ICh0djogVFBhdC50KTogc3RyaW5nID0+XG4gIHN3aXRjaCAoSWRUYWdnZWQudGVybV9vZih0dikpIHtcbiAgfCBWYXIoeCkgPT4geFxuICB8IEludmFsaWQoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBNdWx0aUhvbGUoXykgPT4gXCI/XCJcbiAgfTtcblxuLyogRXNzZW50aWFsbHkgcmVjcmVhdGVzIGhhejNsd2ViL3ZpZXcvVHlwZS5yZSdzIHZpZXdfdHkgYnV0IHdpdGggc3RyaW5nIG91dHB1dCAqL1xubGV0IHJlYyBwcmV0dHlfcHJpbnQgPSAodHk6IHQpOiBzdHJpbmcgPT5cbiAgc3dpdGNoICh0ZXJtX29mKHR5KSkge1xuICB8IFBhcmVucyh0eSkgPT4gcHJldHR5X3ByaW50KHR5KVxuICB8IEFwKF8pXG4gIHwgVW5rbm93bihfKSA9PiBcIj9cIlxuICB8IEludCA9PiBcIkludFwiXG4gIHwgRmxvYXQgPT4gXCJGbG9hdFwiXG4gIHwgQm9vbCA9PiBcIkJvb2xcIlxuICB8IFN0cmluZyA9PiBcIlN0cmluZ1wiXG4gIHwgVmFyKHR2YXIpID0+IHR2YXJcbiAgfCBMaXN0KHQpID0+IFwiW1wiICsrIHByZXR0eV9wcmludCh0KSArKyBcIl1cIlxuICB8IEFycm93KHQxLCB0MikgPT4gcGFyZW5fcHJldHR5X3ByaW50KHQxKSArKyBcIi0+XCIgKysgcHJldHR5X3ByaW50KHQyKVxuICB8IFN1bShzbSkgPT5cbiAgICBzd2l0Y2ggKHNtKSB7XG4gICAgfCBbXSA9PiBcIis/XCJcbiAgICB8IFt0MF0gPT4gXCIrXCIgKysgY3RyX3ByZXR0eV9wcmludCh0MClcbiAgICB8IFt0MCwgLi4udHNdID0+XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKGFjYywgdCkgPT4gYWNjICsrIFwiK1wiICsrIGN0cl9wcmV0dHlfcHJpbnQodCksXG4gICAgICAgIGN0cl9wcmV0dHlfcHJpbnQodDApLFxuICAgICAgICB0cyxcbiAgICAgIClcbiAgICB9XG4gIHwgUHJvZChbXSkgPT4gXCIoKVwiXG4gIHwgUHJvZChbdDAsIC4uLnRzXSkgPT5cbiAgICBcIihcIlxuICAgICsrIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgKGFjYywgdCkgPT4gYWNjICsrIFwiLCBcIiArKyBwcmV0dHlfcHJpbnQodCksXG4gICAgICAgICBwcmV0dHlfcHJpbnQodDApLFxuICAgICAgICAgdHMsXG4gICAgICAgKVxuICAgICsrIFwiKVwiXG4gIHwgUmVjKHR2LCB0KSA9PiBcInJlYyBcIiArKyBwcmV0dHlfcHJpbnRfdHZhcih0dikgKysgXCItPlwiICsrIHByZXR0eV9wcmludCh0KVxuICB8IEZvcmFsbCh0diwgdCkgPT5cbiAgICBcImZvcmFsbCBcIiArKyBwcmV0dHlfcHJpbnRfdHZhcih0dikgKysgXCItPlwiICsrIHByZXR0eV9wcmludCh0KVxuICB9XG5hbmQgY3RyX3ByZXR0eV9wcmludCA9XG4gIGZ1blxuICB8IENvbnN0cnVjdG9yTWFwLlZhcmlhbnQoY3RyLCBfLCBOb25lKSA9PiBjdHJcbiAgfCBDb25zdHJ1Y3Rvck1hcC5WYXJpYW50KGN0ciwgXywgU29tZSh0KSkgPT5cbiAgICBjdHIgKysgXCIoXCIgKysgcHJldHR5X3ByaW50KHQpICsrIFwiKVwiXG4gIHwgQ29uc3RydWN0b3JNYXAuQmFkRW50cnkoXykgPT4gXCI/XCJcbmFuZCBwYXJlbl9wcmV0dHlfcHJpbnQgPSB0eXAgPT5cbiAgaWYgKG5lZWRzX3BhcmVucyh0eXApKSB7XG4gICAgXCIoXCIgKysgcHJldHR5X3ByaW50KHR5cCkgKysgXCIpXCI7XG4gIH0gZWxzZSB7XG4gICAgcHJldHR5X3ByaW50KHR5cCk7XG4gIH07XG4iLCJbQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBWYXJNYXAudF8oVHlwLnQpO1xuaW5jbHVkZSBWYXJNYXA7XG4iLCJtb2R1bGUgUGF0ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlXG4gICAgfCBXaWxkXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBCb29sXG4gICAgfCBTdHJpbmdcbiAgICB8IExpc3RMaXRcbiAgICB8IENvbnN0cnVjdG9yXG4gICAgfCBDb25zXG4gICAgfCBWYXJcbiAgICB8IFR1cGxlXG4gICAgfCBQYXJlbnNcbiAgICB8IEFwXG4gICAgfCBDYXN0O1xuXG4gIGluY2x1ZGUgVGVybUJhc2UuUGF0O1xuXG4gIGxldCByZXBfaWQgPSAoe2lkcywgX306IHQpID0+IHtcbiAgICBhc3NlcnQoaWRzICE9IFtdKTtcbiAgICBMaXN0LmhkKGlkcyk7XG4gIH07XG5cbiAgbGV0IHRlcm1fb2Y6IHQgPT4gVGVybUJhc2UuUGF0LnRlcm0gPSBJZFRhZ2dlZC50ZXJtX29mO1xuXG4gIGxldCB1bndyYXA6IHQgPT4gKHRlcm0sIHRlcm0gPT4gdCkgPSBJZFRhZ2dlZC51bndyYXA7XG5cbiAgbGV0IGZyZXNoOiB0ZXJtID0+IHQgPSBJZFRhZ2dlZC5mcmVzaDtcblxuICBsZXQgaG9sZSA9ICh0bXM6IGxpc3QoVGVybUJhc2UuQW55LnQpKSA9PlxuICAgIHN3aXRjaCAodG1zKSB7XG4gICAgfCBbXSA9PiBFbXB0eUhvbGVcbiAgICB8IFtfLCAuLi5fXSA9PiBNdWx0aUhvbGUodG1zKVxuICAgIH07XG5cbiAgbGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gICAgZnVuXG4gICAgfCBJbnZhbGlkKF8pID0+IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZSA9PiBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKSA9PiBNdWx0aUhvbGVcbiAgICB8IFdpbGQgPT4gV2lsZFxuICAgIHwgSW50KF8pID0+IEludFxuICAgIHwgRmxvYXQoXykgPT4gRmxvYXRcbiAgICB8IEJvb2woXykgPT4gQm9vbFxuICAgIHwgU3RyaW5nKF8pID0+IFN0cmluZ1xuICAgIHwgTGlzdExpdChfKSA9PiBMaXN0TGl0XG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBDb25zdHJ1Y3RvclxuICAgIHwgQ29ucyhfKSA9PiBDb25zXG4gICAgfCBWYXIoXykgPT4gVmFyXG4gICAgfCBUdXBsZShfKSA9PiBUdXBsZVxuICAgIHwgUGFyZW5zKF8pID0+IFBhcmVuc1xuICAgIHwgQXAoXykgPT4gQXBcbiAgICB8IENhc3QoXykgPT4gQ2FzdDtcblxuICBsZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZCA9PiBcIkludmFsaWQgcGF0dGVyblwiXG4gICAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gcGF0dGVyblwiXG4gICAgfCBFbXB0eUhvbGUgPT4gXCJFbXB0eSBwYXR0ZXJuIGhvbGVcIlxuICAgIHwgV2lsZCA9PiBcIldpbGRjYXJkXCJcbiAgICB8IEludCA9PiBcIkludGVnZXIgbGl0ZXJhbFwiXG4gICAgfCBGbG9hdCA9PiBcIkZsb2F0IGxpdGVyYWxcIlxuICAgIHwgQm9vbCA9PiBcIkJvb2xlYW4gbGl0ZXJhbFwiXG4gICAgfCBTdHJpbmcgPT4gXCJTdHJpbmcgbGl0ZXJhbFwiXG4gICAgfCBMaXN0TGl0ID0+IFwiTGlzdCBsaXRlcmFsXCJcbiAgICB8IENvbnN0cnVjdG9yID0+IFwiQ29uc3RydWN0b3JcIlxuICAgIHwgQ29ucyA9PiBcIkNvbnNcIlxuICAgIHwgVmFyID0+IFwiVmFyaWFibGUgYmluZGluZ1wiXG4gICAgfCBUdXBsZSA9PiBcIlR1cGxlXCJcbiAgICB8IFBhcmVucyA9PiBcIlBhcmVudGhlc2l6ZWQgcGF0dGVyblwiXG4gICAgfCBBcCA9PiBcIkNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uXCJcbiAgICB8IENhc3QgPT4gXCJBbm5vdGF0aW9uXCI7XG5cbiAgbGV0IHJlYyBpc192YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdClcbiAgICB8IENhc3QocGF0LCBfLCBfKSA9PiBpc192YXIocGF0KVxuICAgIHwgVmFyKF8pID0+IHRydWVcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFR1cGxlKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQXAoXykgPT4gZmFsc2VcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgaXNfZnVuX3ZhciA9IChwYXQ6IHQpID0+IHtcbiAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgfCBQYXJlbnMocGF0KSA9PiBpc19mdW5fdmFyKHBhdClcbiAgICB8IENhc3QocGF0LCB0eXAsIF8pID0+XG4gICAgICBpc192YXIocGF0KSAmJiAoVVR5cC5pc19hcnJvdyh0eXApIHx8IFR5cC5pc19mb3JhbGwodHlwKSlcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFZhcihfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBBcChfKSA9PiBmYWxzZVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHJlYyBpc190dXBsZV9vZl9hcnJvd3MgPSAocGF0OiB0KSA9PlxuICAgIGlzX2Z1bl92YXIocGF0KVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgIHwgUGFyZW5zKHBhdCkgPT4gaXNfdHVwbGVfb2ZfYXJyb3dzKHBhdClcbiAgICAgIHwgVHVwbGUocGF0cykgPT4gcGF0cyB8PiBMaXN0LmZvcl9hbGwoaXNfZnVuX3ZhcilcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IFdpbGRcbiAgICAgIHwgSW50KF8pXG4gICAgICB8IEZsb2F0KF8pXG4gICAgICB8IEJvb2woXylcbiAgICAgIHwgU3RyaW5nKF8pXG4gICAgICB8IExpc3RMaXQoXylcbiAgICAgIHwgQ29ucyhfLCBfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgfCBBcChfKSA9PiBmYWxzZVxuICAgICAgfVxuICAgICk7XG5cbiAgbGV0IHJlYyBpc190dXBsZV9vZl92YXJzID0gKHBhdDogdCkgPT5cbiAgICBpc192YXIocGF0KVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgICAgIHwgUGFyZW5zKHBhdClcbiAgICAgIHwgQ2FzdChwYXQsIF8sIF8pID0+IGlzX3R1cGxlX29mX3ZhcnMocGF0KVxuICAgICAgfCBUdXBsZShwYXRzKSA9PiBwYXRzIHw+IExpc3QuZm9yX2FsbChpc192YXIpXG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBXaWxkXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IFN0cmluZyhfKVxuICAgICAgfCBMaXN0TGl0KF8pXG4gICAgICB8IENvbnMoXywgXylcbiAgICAgIHwgVmFyKF8pXG4gICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICB8IEFwKF8pID0+IGZhbHNlXG4gICAgICB9XG4gICAgKTtcblxuICBsZXQgcmVjIGdldF92YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gZ2V0X3ZhcihwYXQpXG4gICAgfCBWYXIoeCkgPT4gU29tZSh4KVxuICAgIHwgQ2FzdCh4LCBfLCBfKSA9PiBnZXRfdmFyKHgpXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZFxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBDb25zKF8sIF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICB8IEFwKF8pID0+IE5vbmVcbiAgICB9O1xuICB9O1xuXG4gIGxldCByZWMgZ2V0X2Z1bl92YXIgPSAocGF0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgIHwgUGFyZW5zKHBhdCkgPT4gZ2V0X2Z1bl92YXIocGF0KVxuICAgIHwgQ2FzdChwYXQsIHQxLCBfKSA9PlxuICAgICAgaWYgKFR5cC5pc19hcnJvdyh0MSkgfHwgVVR5cC5pc19mb3JhbGwodDEpKSB7XG4gICAgICAgIGdldF92YXIocGF0KSB8PiBPcHRpb24ubWFwKHZhciA9PiB2YXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTm9uZTtcbiAgICAgIH1cbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IExpc3RMaXQoXylcbiAgICB8IENvbnMoXywgXylcbiAgICB8IFZhcihfKVxuICAgIHwgVHVwbGUoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgfCBBcChfKSA9PiBOb25lXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGdldF9udW1fb2ZfdmFycyA9IChwYXQ6IHQpID0+XG4gICAgaWYgKGlzX3ZhcihwYXQpKSB7XG4gICAgICBTb21lKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHBhdC50ZXJtKSB7XG4gICAgICB8IFBhcmVucyhwYXQpXG4gICAgICB8IENhc3QocGF0LCBfLCBfKSA9PiBnZXRfbnVtX29mX3ZhcnMocGF0KVxuICAgICAgfCBUdXBsZShwYXRzKSA9PlxuICAgICAgICBpc190dXBsZV9vZl92YXJzKHBhdCkgPyBTb21lKExpc3QubGVuZ3RoKHBhdHMpKSA6IE5vbmVcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IFdpbGRcbiAgICAgIHwgSW50KF8pXG4gICAgICB8IEZsb2F0KF8pXG4gICAgICB8IEJvb2woXylcbiAgICAgIHwgU3RyaW5nKF8pXG4gICAgICB8IExpc3RMaXQoXylcbiAgICAgIHwgQ29ucyhfLCBfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgQ29uc3RydWN0b3IoXylcbiAgICAgIHwgQXAoXykgPT4gTm9uZVxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCBjdHJfbmFtZSA9IChwOiB0KTogb3B0aW9uKENvbnN0cnVjdG9yLnQpID0+XG4gICAgc3dpdGNoIChwLnRlcm0pIHtcbiAgICB8IENvbnN0cnVjdG9yKG5hbWUpID0+IFNvbWUobmFtZSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH07XG59O1xuXG5tb2R1bGUgRXhwID0ge1xuICBpbmNsdWRlIFRlcm1CYXNlLkV4cDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlXG4gICAgfCBTdGF0aWNFcnJvckhvbGVcbiAgICB8IER5bmFtaWNFcnJvckhvbGVcbiAgICB8IEZhaWxlZENhc3RcbiAgICB8IERlZmVycmFsXG4gICAgfCBCb29sXG4gICAgfCBJbnRcbiAgICB8IEZsb2F0XG4gICAgfCBTdHJpbmdcbiAgICB8IExpc3RMaXRcbiAgICB8IENvbnN0cnVjdG9yXG4gICAgfCBGdW5cbiAgICB8IFR5cEZ1blxuICAgIHwgVHVwbGVcbiAgICB8IFZhclxuICAgIHwgTWV0YVZhclxuICAgIHwgTGV0XG4gICAgfCBGaXhGXG4gICAgfCBUeUFsaWFzXG4gICAgfCBBcFxuICAgIHwgVHlwQXBcbiAgICB8IERlZmVycmVkQXBcbiAgICB8IFBpcGVsaW5lXG4gICAgfCBJZlxuICAgIHwgU2VxXG4gICAgfCBUZXN0XG4gICAgfCBGaWx0ZXJcbiAgICB8IENsb3N1cmVcbiAgICB8IFBhcmVuc1xuICAgIHwgQ29uc1xuICAgIHwgVW5PcChPcGVyYXRvcnMub3BfdW4pXG4gICAgfCBCaW5PcChPcGVyYXRvcnMub3BfYmluKVxuICAgIHwgQnVpbHRpbkZ1blxuICAgIHwgTWF0Y2hcbiAgICB8IENhc3RcbiAgICB8IExpc3RDb25jYXQ7XG5cbiAgbGV0IGhvbGUgPSAodG1zOiBsaXN0KFRlcm1CYXNlLkFueS50KSk6IHRlcm0gPT5cbiAgICBzd2l0Y2ggKHRtcykge1xuICAgIHwgW10gPT4gRW1wdHlIb2xlXG4gICAgfCBbXywgLi4uX10gPT4gTXVsdGlIb2xlKHRtcylcbiAgICB9O1xuXG4gIGxldCByZXBfaWQ6IHQgPT4gSWQudCA9IElkVGFnZ2VkLnJlcF9pZDtcbiAgbGV0IGZyZXNoOiB0ZXJtID0+IHQgPSBJZFRhZ2dlZC5mcmVzaDtcbiAgbGV0IHRlcm1fb2Y6IHQgPT4gdGVybSA9IElkVGFnZ2VkLnRlcm1fb2Y7XG4gIGxldCB1bndyYXA6IHQgPT4gKHRlcm0sIHRlcm0gPT4gdCkgPSBJZFRhZ2dlZC51bndyYXA7XG5cbiAgbGV0IGNsc19vZl90ZXJtOiB0ZXJtID0+IGNscyA9XG4gICAgZnVuXG4gICAgfCBJbnZhbGlkKF8pID0+IEludmFsaWRcbiAgICB8IEVtcHR5SG9sZSA9PiBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKSA9PiBNdWx0aUhvbGVcbiAgICB8IER5bmFtaWNFcnJvckhvbGUoXykgPT4gRHluYW1pY0Vycm9ySG9sZVxuICAgIHwgRmFpbGVkQ2FzdChfKSA9PiBGYWlsZWRDYXN0XG4gICAgfCBEZWZlcnJhbChfKSA9PiBEZWZlcnJhbFxuICAgIHwgQm9vbChfKSA9PiBCb29sXG4gICAgfCBJbnQoXykgPT4gSW50XG4gICAgfCBGbG9hdChfKSA9PiBGbG9hdFxuICAgIHwgU3RyaW5nKF8pID0+IFN0cmluZ1xuICAgIHwgTGlzdExpdChfKSA9PiBMaXN0TGl0XG4gICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBDb25zdHJ1Y3RvclxuICAgIHwgRnVuKF8pID0+IEZ1blxuICAgIHwgVHlwRnVuKF8pID0+IFR5cEZ1blxuICAgIHwgVHVwbGUoXykgPT4gVHVwbGVcbiAgICB8IFZhcihfKSA9PiBWYXJcbiAgICB8IExldChfKSA9PiBMZXRcbiAgICB8IEZpeEYoXykgPT4gRml4RlxuICAgIHwgVHlBbGlhcyhfKSA9PiBUeUFsaWFzXG4gICAgfCBBcChfKSA9PiBBcFxuICAgIHwgVHlwQXAoXykgPT4gVHlwQXBcbiAgICB8IERlZmVycmVkQXAoXykgPT4gRGVmZXJyZWRBcFxuICAgIHwgSWYoXykgPT4gSWZcbiAgICB8IFNlcShfKSA9PiBTZXFcbiAgICB8IFRlc3QoXykgPT4gVGVzdFxuICAgIHwgRmlsdGVyKF8pID0+IEZpbHRlclxuICAgIHwgQ2xvc3VyZShfKSA9PiBDbG9zdXJlXG4gICAgfCBQYXJlbnMoXykgPT4gUGFyZW5zXG4gICAgfCBDb25zKF8pID0+IENvbnNcbiAgICB8IExpc3RDb25jYXQoXykgPT4gTGlzdENvbmNhdFxuICAgIHwgVW5PcChvcCwgXykgPT4gVW5PcChvcClcbiAgICB8IEJpbk9wKG9wLCBfLCBfKSA9PiBCaW5PcChvcClcbiAgICB8IEJ1aWx0aW5GdW4oXykgPT4gQnVpbHRpbkZ1blxuICAgIHwgTWF0Y2goXykgPT4gTWF0Y2hcbiAgICB8IENhc3QoXykgPT4gQ2FzdDtcblxuICBsZXQgc2hvd19jbHM6IGNscyA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgSW52YWxpZCA9PiBcIkludmFsaWQgZXhwcmVzc2lvblwiXG4gICAgfCBNdWx0aUhvbGUgPT4gXCJCcm9rZW4gZXhwcmVzc2lvblwiXG4gICAgfCBFbXB0eUhvbGUgPT4gXCJFbXB0eSBleHByZXNzaW9uIGhvbGVcIlxuICAgIHwgU3RhdGljRXJyb3JIb2xlID0+IFwiU3RhdGljIGVycm9yIGhvbGVcIlxuICAgIHwgRHluYW1pY0Vycm9ySG9sZSA9PiBcIkR5bmFtaWMgZXJyb3IgaG9sZVwiXG4gICAgfCBGYWlsZWRDYXN0ID0+IFwiRmFpbGVkIGNhc3RcIlxuICAgIHwgRGVmZXJyYWwgPT4gXCJEZWZlcnJhbFwiXG4gICAgfCBCb29sID0+IFwiQm9vbGVhbiBsaXRlcmFsXCJcbiAgICB8IEludCA9PiBcIkludGVnZXIgbGl0ZXJhbFwiXG4gICAgfCBGbG9hdCA9PiBcIkZsb2F0IGxpdGVyYWxcIlxuICAgIHwgU3RyaW5nID0+IFwiU3RyaW5nIGxpdGVyYWxcIlxuICAgIHwgTGlzdExpdCA9PiBcIkxpc3QgbGl0ZXJhbFwiXG4gICAgfCBDb25zdHJ1Y3RvciA9PiBcIkNvbnN0cnVjdG9yXCJcbiAgICB8IEZ1biA9PiBcIkZ1bmN0aW9uIGxpdGVyYWxcIlxuICAgIHwgVHlwRnVuID0+IFwiVHlwZSBGdW5jdGlvbiBMaXRlcmFsXCJcbiAgICB8IFR1cGxlID0+IFwiVHVwbGUgbGl0ZXJhbFwiXG4gICAgfCBWYXIgPT4gXCJWYXJpYWJsZSByZWZlcmVuY2VcIlxuICAgIHwgTWV0YVZhciA9PiBcIk1ldGEgdmFyaWFibGUgcmVmZXJlbmNlXCJcbiAgICB8IExldCA9PiBcIkxldCBleHByZXNzaW9uXCJcbiAgICB8IEZpeEYgPT4gXCJGaXhwb2ludCBvcGVyYXRvclwiXG4gICAgfCBUeUFsaWFzID0+IFwiVHlwZSBBbGlhcyBkZWZpbml0aW9uXCJcbiAgICB8IEFwID0+IFwiQXBwbGljYXRpb25cIlxuICAgIHwgVHlwQXAgPT4gXCJUeXBlIGFwcGxpY2F0aW9uXCJcbiAgICB8IERlZmVycmVkQXAgPT4gXCJQYXJ0aWFsIEFwcGxpY2F0aW9uXCJcbiAgICB8IFBpcGVsaW5lID0+IFwiUGlwZWxpbmUgZXhwcmVzc2lvblwiXG4gICAgfCBJZiA9PiBcIklmIGV4cHJlc3Npb25cIlxuICAgIHwgU2VxID0+IFwiU2VxdWVuY2UgZXhwcmVzc2lvblwiXG4gICAgfCBUZXN0ID0+IFwiVGVzdFwiXG4gICAgfCBGaWx0ZXIgPT4gXCJGaWx0ZXJcIlxuICAgIHwgQ2xvc3VyZSA9PiBcIkNsb3N1cmVcIlxuICAgIHwgUGFyZW5zID0+IFwiUGFyZW50aGVzaXplZCBleHByZXNzaW9uXCJcbiAgICB8IENvbnMgPT4gXCJDb25zXCJcbiAgICB8IExpc3RDb25jYXQgPT4gXCJMaXN0IENvbmNhdGVuYXRpb25cIlxuICAgIHwgQmluT3Aob3ApID0+IE9wZXJhdG9ycy5zaG93X2Jpbm9wKG9wKVxuICAgIHwgVW5PcChvcCkgPT4gT3BlcmF0b3JzLnNob3dfdW5vcChvcClcbiAgICB8IEJ1aWx0aW5GdW4gPT4gXCJCdWlsdC1pbiBGdW5jdGlvblwiXG4gICAgfCBNYXRjaCA9PiBcIkNhc2UgZXhwcmVzc2lvblwiXG4gICAgfCBDYXN0ID0+IFwiQ2FzdCBleHByZXNzaW9uXCI7XG5cbiAgLy8gVHlwZnVuIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgZnVuY3Rpb24gaGVyZSBhcyB0aGlzIGlzIG9ubHkgdXNlZCB0b1xuICAvLyBkZXRlcm1pbmUgd2hlbiB0byBhbGxvdyBmb3IgcmVjdXJzaXZlIGRlZmluaXRpb25zIGluIGEgbGV0IGJpbmRpbmcuXG4gIGxldCByZWMgaXNfZnVuID0gKGU6IHQpID0+IHtcbiAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgIHwgUGFyZW5zKGUpID0+IGlzX2Z1bihlKVxuICAgIHwgQ2FzdChlLCBfLCBfKSA9PiBpc19mdW4oZSlcbiAgICB8IFR5cEZ1bihfKVxuICAgIHwgRnVuKF8pXG4gICAgfCBCdWlsdGluRnVuKF8pID0+IHRydWVcbiAgICB8IEludmFsaWQoXylcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgfCBGYWlsZWRDYXN0KF8pXG4gICAgfCBEZWZlcnJhbChfKVxuICAgIHwgQm9vbChfKVxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBMaXN0TGl0KF8pXG4gICAgfCBUdXBsZShfKVxuICAgIHwgVmFyKF8pXG4gICAgfCBMZXQoXylcbiAgICB8IEZpeEYoXylcbiAgICB8IFR5QWxpYXMoXylcbiAgICB8IEFwKF8pXG4gICAgfCBUeXBBcChfKVxuICAgIHwgRGVmZXJyZWRBcChfKVxuICAgIHwgSWYoXylcbiAgICB8IFNlcShfKVxuICAgIHwgVGVzdChfKVxuICAgIHwgRmlsdGVyKF8pXG4gICAgfCBDb25zKF8pXG4gICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgfCBDbG9zdXJlKF8pXG4gICAgfCBVbk9wKF8pXG4gICAgfCBCaW5PcChfKVxuICAgIHwgTWF0Y2goXylcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGlzX3R1cGxlX29mX2Z1bmN0aW9ucyA9IChlOiB0KSA9PlxuICAgIGlzX2Z1bihlKVxuICAgIHx8IChcbiAgICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgICB8IENhc3QoZSwgXywgXylcbiAgICAgIHwgUGFyZW5zKGUpID0+IGlzX3R1cGxlX29mX2Z1bmN0aW9ucyhlKVxuICAgICAgfCBUdXBsZShlcykgPT4gZXMgfD4gTGlzdC5mb3JfYWxsKGlzX2Z1bilcbiAgICAgIHwgSW52YWxpZChfKVxuICAgICAgfCBFbXB0eUhvbGVcbiAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgICAgIHwgRmFpbGVkQ2FzdChfKVxuICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBTdHJpbmcoXylcbiAgICAgIHwgTGlzdExpdChfKVxuICAgICAgfCBGdW4oXylcbiAgICAgIHwgVHlwRnVuKF8pXG4gICAgICB8IENsb3N1cmUoXylcbiAgICAgIHwgQnVpbHRpbkZ1bihfKVxuICAgICAgfCBWYXIoXylcbiAgICAgIHwgTGV0KF8pXG4gICAgICB8IEZpeEYoXylcbiAgICAgIHwgVHlBbGlhcyhfKVxuICAgICAgfCBBcChfKVxuICAgICAgfCBUeXBBcChfKVxuICAgICAgfCBEZWZlcnJlZEFwKF8pXG4gICAgICB8IElmKF8pXG4gICAgICB8IFNlcShfKVxuICAgICAgfCBUZXN0KF8pXG4gICAgICB8IEZpbHRlcihfKVxuICAgICAgfCBDb25zKF8pXG4gICAgICB8IExpc3RDb25jYXQoXylcbiAgICAgIHwgVW5PcChfKVxuICAgICAgfCBCaW5PcChfKVxuICAgICAgfCBNYXRjaChfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICAgICAgfVxuICAgICk7XG5cbiAgbGV0IGN0cl9uYW1lID0gKGU6IHQpOiBvcHRpb24oQ29uc3RydWN0b3IudCkgPT5cbiAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgIHwgQ29uc3RydWN0b3IobmFtZSkgPT4gU29tZShuYW1lKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcblxuICBsZXQgaXNfZGVmZXJyYWwgPSAoZTogdCkgPT4ge1xuICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgfCBEZWZlcnJhbChfKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGdldF9udW1fb2ZfZnVuY3Rpb25zID0gKGU6IHQpID0+XG4gICAgaWYgKGlzX2Z1bihlKSkge1xuICAgICAgU29tZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChlLnRlcm0pIHtcbiAgICAgIHwgUGFyZW5zKGUpID0+IGdldF9udW1fb2ZfZnVuY3Rpb25zKGUpXG4gICAgICB8IFR1cGxlKGVzKSA9PiBpc190dXBsZV9vZl9mdW5jdGlvbnMoZSkgPyBTb21lKExpc3QubGVuZ3RoKGVzKSkgOiBOb25lXG4gICAgICB8IEludmFsaWQoXylcbiAgICAgIHwgRW1wdHlIb2xlXG4gICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgICB8IEZhaWxlZENhc3QoXylcbiAgICAgIHwgRml4RihfKVxuICAgICAgfCBDbG9zdXJlKF8pXG4gICAgICB8IEJ1aWx0aW5GdW4oXylcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgfCBCb29sKF8pXG4gICAgICB8IEludChfKVxuICAgICAgfCBGbG9hdChfKVxuICAgICAgfCBTdHJpbmcoXylcbiAgICAgIHwgTGlzdExpdChfKVxuICAgICAgfCBGdW4oXylcbiAgICAgIHwgVHlwRnVuKF8pXG4gICAgICB8IFZhcihfKVxuICAgICAgfCBMZXQoXylcbiAgICAgIHwgRmlsdGVyKF8pXG4gICAgICB8IFR5QWxpYXMoXylcbiAgICAgIHwgQXAoXylcbiAgICAgIHwgVHlwQXAoXylcbiAgICAgIHwgRGVmZXJyZWRBcChfKVxuICAgICAgfCBJZihfKVxuICAgICAgfCBTZXEoXylcbiAgICAgIHwgVGVzdChfKVxuICAgICAgfCBDb25zKF8pXG4gICAgICB8IExpc3RDb25jYXQoXylcbiAgICAgIHwgVW5PcChfKVxuICAgICAgfCBCaW5PcChfKVxuICAgICAgfCBNYXRjaChfKVxuICAgICAgfCBDb25zdHJ1Y3RvcihfKSA9PiBOb25lXG4gICAgICB9O1xuICAgIH07XG59O1xuXG5tb2R1bGUgUnVsID0ge1xuICBpbmNsdWRlIFRlcm1CYXNlLlJ1bDtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2xzID1cbiAgICB8IFJ1bGU7XG5cbiAgLy8gZXhhbXBsZSBvZiBhd2t3YXJkbmVzcyBpbmR1Y2VkIGJ5IGhhdmluZyBmb3JtcyBsaWtlIHJ1bGVzXG4gIC8vIHRoYXQgbWF5IGhhdmUgYSBkaWZmZXJlbnQtc29ydGVkIGNoaWxkIHdpdGggbm8gZGVsaW1pdGVyc1xuICAvLyAoZWcgc2NydXQgd2l0aCBubyBydWxlcylcbiAgbGV0IGlkcyA9ICh+YW55X2lkcywge2lkcywgdGVybSwgX306IHQpID0+XG4gICAgc3dpdGNoIChpZHMpIHtcbiAgICB8IFtfLCAuLi5fXSA9PiBpZHNcbiAgICB8IFtdID0+XG4gICAgICBzd2l0Y2ggKHRlcm0pIHtcbiAgICAgIHwgSG9sZShbdG0sIC4uLl9dKSA9PiBhbnlfaWRzKHRtKVxuICAgICAgfCBSdWxlcyhzY3J1dCwgW10pID0+IHNjcnV0Lmlkc1xuICAgICAgfCBfID0+IFtdXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgcmVwX2lkID0gKH5hbnlfaWRzLCB0bSkgPT5cbiAgICBzd2l0Y2ggKGlkcyh+YW55X2lkcywgdG0pKSB7XG4gICAgfCBbXSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiVUV4cC5yZXBfaWRcIikpXG4gICAgfCBbaWQsIC4uLl9dID0+IGlkXG4gICAgfTtcbn07XG5cbm1vZHVsZSBBbnkgPSB7XG4gIGluY2x1ZGUgVGVybUJhc2UuQW55O1xuXG4gIGxldCBpc19leHA6IHQgPT4gb3B0aW9uKFRlcm1CYXNlLkV4cC50KSA9XG4gICAgZnVuXG4gICAgfCBFeHAoZSkgPT4gU29tZShlKVxuICAgIHwgXyA9PiBOb25lO1xuICBsZXQgaXNfcGF0OiB0ID0+IG9wdGlvbihUZXJtQmFzZS5QYXQudCkgPVxuICAgIGZ1blxuICAgIHwgUGF0KHApID0+IFNvbWUocClcbiAgICB8IF8gPT4gTm9uZTtcbiAgbGV0IGlzX3R5cDogdCA9PiBvcHRpb24oVGVybUJhc2UuVHlwLnQpID1cbiAgICBmdW5cbiAgICB8IFR5cCh0KSA9PiBTb21lKHQpXG4gICAgfCBfID0+IE5vbmU7XG5cbiAgbGV0IHJlYyBpZHMgPVxuICAgIGZ1blxuICAgIHwgRXhwKHRtKSA9PiB0bS5pZHNcbiAgICB8IFBhdCh0bSkgPT4gdG0uaWRzXG4gICAgfCBUeXAodG0pID0+IHRtLmlkc1xuICAgIHwgVFBhdCh0bSkgPT4gdG0uaWRzXG4gICAgfCBSdWwodG0pID0+IFJ1bC5pZHMofmFueV9pZHM9aWRzLCB0bSlcbiAgICB8IE51bCAoKVxuICAgIHwgQW55ICgpID0+IFtdO1xuXG4gIC8vIFRlcm1zIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIHRpbGVzLCBlZyB0aGUgY29tbWFzIGluIGFuIG4tdHVwbGUsXG4gIC8vIHRoZSBydWxlcyBvZiBhIGNhc2UgZXhwcmVzc2lvbiArIHRoZSBzdXJyb3VuZGluZyBjYXNlLWVuZCB0aWxlLFxuICAvLyB0aGUgbGlzdCBicmFja2V0cyB0aWxlIGNvdXBsZWQgd2l0aCB0aGUgZWxlbS1zZXBhcmF0aW5nIGNvbW1hcy5cbiAgLy8gVGhlIF9yZXByZXNlbnRhdGl2ZSBpZF8gaXMgdGhlIGNhbm9uaWNhbCB0aWxlIGlkIHVzZWQgdG8gaWRlbnRpZnlcbiAgLy8gYW5kIGxvb2sgdXAgaW5mbyBhYm91dCBhIHRlcm0uXG4gIC8vXG4gIC8vIEluIGluc3RhbmNlcyBsaWtlIGNhc2UgZXhwcmVzc2lvbnMgYW5kIGxpc3QgbGl0ZXJhbHMsIHdoZXJlIGEgcGFyZW50XG4gIC8vIHRpbGUgc3Vycm91bmRzIHRoZSBvdGhlciB0aWxlcywgdGhlIHJlcHJlc2VudGF0aXZlIGlkIGlzIHRoZSBwYXJlbnQgdGlsZSdzLlxuICAvLyBJbiBvdGhlciBpbnN0YW5jZXMgbGlrZSBuLXR1cGxlcywgd2hlcmUgdGhlIGNvbW1hcyBhcmUgYWxsIHNpYmxpbmdzLFxuICAvLyB0aGUgcmVwcmVzZW50YXRpdmUgaWQgaXMgb25lIG9mIHRoZSBjb21tYSBpZHMsIHVuc3BlY2lmaWVkIHdoaWNoIG9uZS5cbiAgLy8gKFRoaXMgd291bGQgY2hhbmdlIGZvciBuLXR1cGxlcyBpZiB3ZSBkZWNpZGVkIHBhcmVudGhlc2VzIGFyZSBuZWNlc3NhcnkuKVxuICBsZXQgcmVwX2lkID1cbiAgICBmdW5cbiAgICB8IEV4cCh0bSkgPT4gRXhwLnJlcF9pZCh0bSlcbiAgICB8IFBhdCh0bSkgPT4gUGF0LnJlcF9pZCh0bSlcbiAgICB8IFR5cCh0bSkgPT4gVHlwLnJlcF9pZCh0bSlcbiAgICB8IFRQYXQodG0pID0+IFRQYXQucmVwX2lkKHRtKVxuICAgIHwgUnVsKHRtKSA9PiBSdWwucmVwX2lkKH5hbnlfaWRzPWlkcywgdG0pXG4gICAgfCBOdWwgKClcbiAgICB8IEFueSAoKSA9PiByYWlzZShJbnZhbGlkX2FyZ3VtZW50KFwiVGVybS5yZXBfaWRcIikpO1xufTtcbiIsIi8qIERIRXhwLnJlXG5cbiAgIFRoaXMgbW9kdWxlIGlzIHNwZWNpZmljYWxseSBmb3IgZHluYW1pYyBleHByZXNzaW9ucy4gVGhleSBhcmUgc3RvcmVkXG4gICB1c2luZyB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBhcyB1c2VyIGV4cHJlc3Npb25zLCBidXQgZHluYW1pY1xuICAgZXhwcmVzc2lvbnMgYXJlIHNwZWNpZmljYWxseSBwYWlyZWQgd2l0aCBhIGBTYXRpYy5NYXAudGAuXG4gICAqL1xuXG5pbmNsdWRlIEV4cDtcblxubGV0IHRlcm1fb2Y6IHQgPT4gdGVybSA9IElkVGFnZ2VkLnRlcm1fb2Y7XG5sZXQgZmFzdF9jb3B5OiAoSWQudCwgdCkgPT4gdCA9IElkVGFnZ2VkLmZhc3RfY29weTtcblxubGV0IG1rID0gKGlkcywgdGVybSk6IHQgPT4ge1xuICB7aWRzLCBjb3BpZWQ6IHRydWUsIHRlcm19O1xufTtcblxuLy8gVE9ETzogbWFrZSB0aGlzIGZ1bmN0aW9uIGVtaXQgYSBtYXAgb2YgY2hhbmdlc1xubGV0IHJlcGxhY2VfYWxsX2lkcyA9XG4gIG1hcF90ZXJtKFxuICAgIH5mX2V4cD0oY29udGludWUsIGV4cCkgPT4gey4uLmV4cCwgaWRzOiBbSWQubWsoKV19IHw+IGNvbnRpbnVlLFxuICAgIH5mX3BhdD0oY29udGludWUsIGV4cCkgPT4gey4uLmV4cCwgaWRzOiBbSWQubWsoKV19IHw+IGNvbnRpbnVlLFxuICAgIH5mX3R5cD0oY29udGludWUsIGV4cCkgPT4gey4uLmV4cCwgaWRzOiBbSWQubWsoKV19IHw+IGNvbnRpbnVlLFxuICAgIH5mX3RwYXQ9KGNvbnRpbnVlLCBleHApID0+IHsuLi5leHAsIGlkczogW0lkLm1rKCldfSB8PiBjb250aW51ZSxcbiAgICB+Zl9ydWw9KGNvbnRpbnVlLCBleHApID0+IHsuLi5leHAsIGlkczogW0lkLm1rKCldfSB8PiBjb250aW51ZSxcbiAgKTtcblxuLy8gVE9ETzogbWFrZSB0aGlzIGZ1bmN0aW9uIGVtaXQgYSBtYXAgb2YgY2hhbmdlc1xubGV0IHJlcGFpcl9pZHMgPVxuICBtYXBfdGVybShcbiAgICB+Zl9leHA9XG4gICAgICAoY29udGludWUsIGV4cCkgPT5cbiAgICAgICAgaWYgKGV4cC5jb3BpZWQpIHtcbiAgICAgICAgICByZXBsYWNlX2FsbF9pZHMoZXhwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb250aW51ZShleHApO1xuICAgICAgICB9LFxuICAgIF8sXG4gICk7XG5cbi8vIEFsc28gc3RyaXBzIHN0YXRpYyBlcnJvciBob2xlcyAtIGtpbmRhIGxpa2UgdW5lbGFib3JhdGlvblxubGV0IHJlYyBzdHJpcF9jYXN0cyA9XG4gIG1hcF90ZXJtKFxuICAgIH5mX2V4cD1cbiAgICAgIChjb250aW51ZSwgZXhwKSA9PiB7XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihleHApKSB7XG4gICAgICAgIC8qIExlYXZlIG5vbi1jYXN0cyB1bmNoYW5nZWQgKi9cbiAgICAgICAgfCBUdXBsZShfKVxuICAgICAgICB8IENvbnMoXylcbiAgICAgICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgICAgIHwgTGlzdExpdChfKVxuICAgICAgICB8IE11bHRpSG9sZShfKVxuICAgICAgICB8IFNlcShfKVxuICAgICAgICB8IEZpbHRlcihfKVxuICAgICAgICB8IExldChfKVxuICAgICAgICB8IEZpeEYoXylcbiAgICAgICAgfCBUeUFsaWFzKF8pXG4gICAgICAgIHwgRnVuKF8pXG4gICAgICAgIHwgQXAoXylcbiAgICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgICB8IERlZmVycmVkQXAoXylcbiAgICAgICAgfCBUZXN0KF8pXG4gICAgICAgIHwgQnVpbHRpbkZ1bihfKVxuICAgICAgICB8IFVuT3AoXylcbiAgICAgICAgfCBCaW5PcChfKVxuICAgICAgICB8IE1hdGNoKF8pXG4gICAgICAgIHwgUGFyZW5zKF8pXG4gICAgICAgIHwgRW1wdHlIb2xlXG4gICAgICAgIHwgSW52YWxpZChfKVxuICAgICAgICB8IFZhcihfKVxuICAgICAgICB8IEJvb2woXylcbiAgICAgICAgfCBJbnQoXylcbiAgICAgICAgfCBGbG9hdChfKVxuICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgICAgICB8IENsb3N1cmUoXylcbiAgICAgICAgfCBUeXBGdW4oXylcbiAgICAgICAgfCBUeXBBcChfKVxuICAgICAgICB8IElmKF8pID0+IGNvbnRpbnVlKGV4cClcbiAgICAgICAgLyogUmVtb3ZlIGNhc3RzKi9cbiAgICAgICAgfCBGYWlsZWRDYXN0KGQsIF8sIF8pXG4gICAgICAgIHwgQ2FzdChkLCBfLCBfKSA9PiBzdHJpcF9jYXN0cyhkKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIF8sXG4gICk7XG5cbmxldCBhc3NpZ25fbmFtZV9pZl9ub25lID0gKHQsIG5hbWUpID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gdW53cmFwKHQpO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBGdW4oYXJnLCB0eSwgYm9keSwgTm9uZSkgPT4gRnVuKGFyZywgdHksIGJvZHksIG5hbWUpIHw+IHJld3JhcFxuICB8IFR5cEZ1bih1dHBhdCwgYm9keSwgTm9uZSkgPT4gVHlwRnVuKHV0cGF0LCBib2R5LCBuYW1lKSB8PiByZXdyYXBcbiAgfCBfID0+IHRcbiAgfTtcbn07XG5cbmxldCB0eV9zdWJzdCA9IChzOiBUeXAudCwgdHBhdDogVFBhdC50LCBleHA6IHQpOiB0ID0+IHtcbiAgc3dpdGNoIChUUGF0LnR5dmFyX29mX3V0cGF0KHRwYXQpKSB7XG4gIHwgTm9uZSA9PiBleHBcbiAgfCBTb21lKHgpID0+XG4gICAgRXhwLm1hcF90ZXJtKFxuICAgICAgfmZfdHlwPShfLCB0eXApID0+IFR5cC5zdWJzdChzLCB0cGF0LCB0eXApLFxuICAgICAgfmZfZXhwPVxuICAgICAgICAoY29udGludWUsIGV4cCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZXhwKSkge1xuICAgICAgICAgIHwgVHlwRnVuKHV0cGF0LCBfLCBfKSA9PlxuICAgICAgICAgICAgc3dpdGNoIChUUGF0LnR5dmFyX29mX3V0cGF0KHV0cGF0KSkge1xuICAgICAgICAgICAgfCBTb21lKHgnKSB3aGVuIHggPT0geCcgPT4gZXhwXG4gICAgICAgICAgICB8IFNvbWUoXylcbiAgICAgICAgICAgIHwgTm9uZSA9PiBjb250aW51ZShleHApXG4gICAgICAgICAgICAvKiBOb3RlIHRoYXQgd2UgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgY2FwdHVyZSBhdm9pZGFuY2UsIHNpbmNlIHMgd2lsbCBhbHdheXMgYmUgY2xvc2VkLiAqL1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgQ2FzdChfKVxuICAgICAgICAgIHwgRml4RihfKVxuICAgICAgICAgIHwgRnVuKF8pXG4gICAgICAgICAgfCBUeXBBcChfKVxuICAgICAgICAgIHwgTGlzdExpdChfKVxuICAgICAgICAgIHwgVGVzdChfKVxuICAgICAgICAgIHwgQ2xvc3VyZShfKVxuICAgICAgICAgIHwgU2VxKF8pXG4gICAgICAgICAgfCBMZXQoXylcbiAgICAgICAgICB8IEFwKF8pXG4gICAgICAgICAgfCBCdWlsdGluRnVuKF8pXG4gICAgICAgICAgfCBCaW5PcChfKVxuICAgICAgICAgIHwgQ29ucyhfKVxuICAgICAgICAgIHwgTGlzdENvbmNhdChfKVxuICAgICAgICAgIHwgVHVwbGUoXylcbiAgICAgICAgICB8IE1hdGNoKF8pXG4gICAgICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgICAgICAgfCBGaWx0ZXIoXylcbiAgICAgICAgICB8IElmKF8pXG4gICAgICAgICAgfCBFbXB0eUhvbGVcbiAgICAgICAgICB8IEludmFsaWQoXylcbiAgICAgICAgICB8IENvbnN0cnVjdG9yKF8pXG4gICAgICAgICAgfCBWYXIoXylcbiAgICAgICAgICB8IEJvb2woXylcbiAgICAgICAgICB8IEludChfKVxuICAgICAgICAgIHwgRmxvYXQoXylcbiAgICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICAgIHwgRmFpbGVkQ2FzdChfLCBfLCBfKVxuICAgICAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgICAgIHwgVHlBbGlhcyhfKVxuICAgICAgICAgIHwgRGVmZXJyZWRBcChfKVxuICAgICAgICAgIHwgUGFyZW5zKF8pXG4gICAgICAgICAgfCBVbk9wKF8pID0+IGNvbnRpbnVlKGV4cClcbiAgICAgICAgICB9LFxuICAgICAgZXhwLFxuICAgIClcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE91dE9mRnVlbFxuICB8IFN0ZXBEb2VzTm90TWF0Y2hcbiAgfCBCYWRQYXR0ZXJuTWF0Y2hcbiAgfCBDYXN0QlZIb2xlR3JvdW5kKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkVHlwRnVuKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkRnVuKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkQm9vbExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEludExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZEZsb2F0TGl0KERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkTGlzdExpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZFN0cmluZ0xpdChESEV4cC50KVxuICB8IEludmFsaWRCb3hlZFN1bUNvbnN0cnVjdG9yKERIRXhwLnQpXG4gIHwgSW52YWxpZEJveGVkVHVwbGUoREhFeHAudClcbiAgfCBJbnZhbGlkQnVpbHRpbihzdHJpbmcpXG4gIHwgQmFkQnVpbHRpbkFwKHN0cmluZywgbGlzdChESEV4cC50KSlcbiAgfCBJbnZhbGlkUHJvamVjdGlvbihpbnQpO1xuXG5leGNlcHRpb24gRXhjZXB0aW9uKHQpO1xuIiwib3BlbiBESEV4cDtcblxuLypcbiAgIEJ1aWx0LWluIGZ1bmN0aW9ucyBmb3IgSGF6ZWwuXG5cbiAgIFRvIGFkZCBhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIGNvbnN0YW50LCB3cml0ZSB0aGUgaW1wbGVtZW50YXRpb24gaW4gdGhlXG4gICBgUGVydmFzaXZlcy5JbXBsc2AgbW9kdWxlIGJlbG93IGFuZCBhZGQgaXQgdG8gYGJ1aWx0aW5zYC5cblxuICAgU2VlIHRoZSBleGlzdGluZyBvbmVzIGZvciByZWZlcmVuY2UuXG4gKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBidWlsdGluID1cbiAgfCBDb25zdChUeXAudCwgREhFeHAudClcbiAgfCBGbihUeXAudCwgVHlwLnQsIERIRXhwLnQgPT4gREhFeHAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IFZhck1hcC50XyhidWlsdGluKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtcyA9IFZhck1hcC50XyhESEV4cC50ID0+IERIRXhwLnQpO1xuXG50eXBlIHJlc3VsdCA9IFJlc3VsdC50KERIRXhwLnQsIEV2YWx1YXRvckVycm9yLnQpO1xuXG5sZXQgY29uc3QgPSAobmFtZTogVmFyLnQsIHR5cDogVHlwLnRlcm0sIHY6IERIRXhwLnQsIGJ1aWx0aW5zOiB0KTogdCA9PlxuICBWYXJNYXAuZXh0ZW5kKGJ1aWx0aW5zLCAobmFtZSwgQ29uc3QodHlwIHw+IFR5cC5mcmVzaCwgdikpKTtcbmxldCBmbiA9XG4gICAgKFxuICAgICAgbmFtZTogVmFyLnQsXG4gICAgICB0MTogVHlwLnRlcm0sXG4gICAgICB0MjogVHlwLnRlcm0sXG4gICAgICBpbXBsOiBESEV4cC50ID0+IERIRXhwLnQsXG4gICAgICBidWlsdGluczogdCxcbiAgICApXG4gICAgOiB0ID0+XG4gIFZhck1hcC5leHRlbmQoXG4gICAgYnVpbHRpbnMsXG4gICAgKG5hbWUsIEZuKHQxIHw+IFR5cC5mcmVzaCwgdDIgfD4gVHlwLmZyZXNoLCBpbXBsKSksXG4gICk7XG5cbm1vZHVsZSBQZXJ2YXNpdmVzID0ge1xuICBtb2R1bGUgSW1wbHMgPSB7XG4gICAgLyogY29uc3RhbnRzICovXG4gICAgbGV0IGluZmluaXR5ID0gREhFeHAuRmxvYXQoRmxvYXQuaW5maW5pdHkpIHw+IGZyZXNoO1xuICAgIGxldCBuZWdfaW5maW5pdHkgPSBESEV4cC5GbG9hdChGbG9hdC5uZWdfaW5maW5pdHkpIHw+IGZyZXNoO1xuICAgIGxldCBuYW4gPSBESEV4cC5GbG9hdChGbG9hdC5uYW4pIHw+IGZyZXNoO1xuICAgIGxldCBlcHNpbG9uX2Zsb2F0ID0gREhFeHAuRmxvYXQoZXBzaWxvbl9mbG9hdCkgfD4gZnJlc2g7XG4gICAgbGV0IHBpID0gREhFeHAuRmxvYXQoRmxvYXQucGkpIHw+IGZyZXNoO1xuICAgIGxldCBtYXhfaW50ID0gREhFeHAuSW50KEludC5tYXhfaW50KSB8PiBmcmVzaDtcbiAgICBsZXQgbWluX2ludCA9IERIRXhwLkludChJbnQubWluX2ludCkgfD4gZnJlc2g7XG5cbiAgICBsZXQgdW5hcnkgPSAoZjogREhFeHAudCA9PiByZXN1bHQsIGQ6IERIRXhwLnQpID0+IHtcbiAgICAgIHN3aXRjaCAoZihkKSkge1xuICAgICAgfCBPayhyJykgPT4gcidcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKGUpIHw+IHJhaXNlXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgYmluYXJ5ID0gKGY6IChESEV4cC50LCBESEV4cC50KSA9PiByZXN1bHQsIGQ6IERIRXhwLnQpID0+IHtcbiAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgfCBUdXBsZShbZDEsIGQyXSkgPT5cbiAgICAgICAgc3dpdGNoIChmKGQxLCBkMikpIHtcbiAgICAgICAgfCBPayhyKSA9PiByXG4gICAgICAgIHwgRXJyb3IoZSkgPT4gRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKGUpIHw+IHJhaXNlXG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkVHVwbGUoZCkpKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0IHRlcm5hcnkgPSAoZjogKERIRXhwLnQsIERIRXhwLnQsIERIRXhwLnQpID0+IHJlc3VsdCwgZDogREhFeHAudCkgPT4ge1xuICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICB8IFR1cGxlKFtkMSwgZDIsIGQzXSkgPT5cbiAgICAgICAgc3dpdGNoIChmKGQxLCBkMiwgZDMpKSB7XG4gICAgICAgIHwgT2socikgPT4gclxuICAgICAgICB8IEVycm9yKGUpID0+IEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihlKSB8PiByYWlzZVxuICAgICAgICB9XG4gICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR1cGxlKGQpKSlcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGxldCBpc19maW5pdGUgPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChCb29sKEZsb2F0LmlzX2Zpbml0ZShmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgaXNfaW5maW5pdGUgPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChCb29sKEZsb2F0LmlzX2luZmluaXRlKGYpKSkpXG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRGbG9hdExpdChkKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBpc19uYW4gPVxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChCb29sKEZsb2F0LmlzX25hbihmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgc3RyaW5nX29mX2ludCA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEludChuKSA9PiBPayhmcmVzaChTdHJpbmcoc3RyaW5nX29mX2ludChuKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZl9mbG9hdCA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEZsb2F0KGYpID0+IE9rKGZyZXNoKFN0cmluZyhzdHJpbmdfb2ZfZmxvYXQoZikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEZsb2F0TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZl9ib29sID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgQm9vbChiKSA9PiBPayhmcmVzaChTdHJpbmcoc3RyaW5nX29mX2Jvb2woYikpKSlcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZEJvb2xMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgaW50X29mX2Zsb2F0ID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgRmxvYXQoZikgPT4gT2soZnJlc2goSW50KGludF9vZl9mbG9hdChmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgZmxvYXRfb2ZfaW50ID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgSW50KG4pID0+IE9rKGZyZXNoKEZsb2F0KGZsb2F0X29mX2ludChuKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IGFicyA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IEludChuKSA9PiBPayhmcmVzaChJbnQoYWJzKG4pKSkpXG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRJbnRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgZmxvYXRfb3AgPSBmbiA9PlxuICAgICAgdW5hcnkoZCA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZCkpIHtcbiAgICAgICAgfCBGbG9hdChmKSA9PiBPayhmcmVzaChGbG9hdChmbihmKSkpKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkRmxvYXRMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgYWJzX2Zsb2F0ID0gZmxvYXRfb3AoYWJzX2Zsb2F0KTtcbiAgICBsZXQgY2VpbCA9IGZsb2F0X29wKGNlaWwpO1xuICAgIGxldCBmbG9vciA9IGZsb2F0X29wKGZsb29yKTtcbiAgICBsZXQgc3FydCA9IGZsb2F0X29wKHNxcnQpO1xuICAgIGxldCBleHAgPSBmbG9hdF9vcChleHApO1xuICAgIGxldCBsb2cgPSBmbG9hdF9vcChsb2cpO1xuICAgIGxldCBsb2cxMCA9IGZsb2F0X29wKGxvZzEwKTtcbiAgICBsZXQgc2luID0gZmxvYXRfb3Aoc2luKTtcbiAgICBsZXQgY29zID0gZmxvYXRfb3AoY29zKTtcbiAgICBsZXQgdGFuID0gZmxvYXRfb3AodGFuKTtcbiAgICBsZXQgYXNpbiA9IGZsb2F0X29wKGFzaW4pO1xuICAgIGxldCBhY29zID0gZmxvYXRfb3AoYWNvcyk7XG4gICAgbGV0IGF0YW4gPSBmbG9hdF9vcChhdGFuKTtcblxuICAgIGxldCBvZl9zdHJpbmcgPVxuICAgICAgICAoY29udmVydDogc3RyaW5nID0+IG9wdGlvbignYSksIHdyYXA6ICdhID0+IERIRXhwLnQsIG5hbWU6IHN0cmluZykgPT5cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgU3RyaW5nKHMpID0+XG4gICAgICAgICAgc3dpdGNoIChjb252ZXJ0KHMpKSB7XG4gICAgICAgICAgfCBTb21lKG4pID0+IE9rKHdyYXAobikpXG4gICAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgICBsZXQgZCcgPSBESEV4cC5CdWlsdGluRnVuKG5hbWUpIHw+IERIRXhwLmZyZXNoO1xuICAgICAgICAgICAgbGV0IGQnID0gREhFeHAuQXAoRm9yd2FyZCwgZCcsIGQpIHw+IERIRXhwLmZyZXNoO1xuICAgICAgICAgICAgbGV0IGQnID0gRHluYW1pY0Vycm9ySG9sZShkJywgSW52YWxpZE9mU3RyaW5nKSB8PiBESEV4cC5mcmVzaDtcbiAgICAgICAgICAgIE9rKGQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZCkpXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBsZXQgaW50X29mX3N0cmluZyA9XG4gICAgICBvZl9zdHJpbmcoaW50X29mX3N0cmluZ19vcHQsIG4gPT4gSW50KG4pIHw+IERIRXhwLmZyZXNoKTtcbiAgICBsZXQgZmxvYXRfb2Zfc3RyaW5nID1cbiAgICAgIG9mX3N0cmluZyhmbG9hdF9vZl9zdHJpbmdfb3B0LCBmID0+IEZsb2F0KGYpIHw+IERIRXhwLmZyZXNoKTtcbiAgICBsZXQgYm9vbF9vZl9zdHJpbmcgPVxuICAgICAgb2Zfc3RyaW5nKGJvb2xfb2Zfc3RyaW5nX29wdCwgYiA9PiBCb29sKGIpIHw+IERIRXhwLmZyZXNoKTtcblxuICAgIGxldCBpbnRfbW9kID0gKG5hbWUsIGQxKSA9PlxuICAgICAgYmluYXJ5KFxuICAgICAgICAoZDEsIGQyKSA9PlxuICAgICAgICAgIHN3aXRjaCAodGVybV9vZihkMSksIHRlcm1fb2YoZDIpKSB7XG4gICAgICAgICAgfCAoSW50KF8pLCBJbnQoMCkpID0+XG4gICAgICAgICAgICBPayhcbiAgICAgICAgICAgICAgZnJlc2goXG4gICAgICAgICAgICAgICAgRHluYW1pY0Vycm9ySG9sZShcbiAgICAgICAgICAgICAgICAgIERIRXhwLkFwKEZvcndhcmQsIERIRXhwLkJ1aWx0aW5GdW4obmFtZSkgfD4gZnJlc2gsIGQxKVxuICAgICAgICAgICAgICAgICAgfD4gZnJlc2gsXG4gICAgICAgICAgICAgICAgICBEaXZpZGVCeVplcm8sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IChJbnQobiksIEludChtKSkgPT4gT2soSW50KG4gbW9kIG0pIHw+IGZyZXNoKVxuICAgICAgICAgIHwgKEludChfKSwgXykgPT5cbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRJbnRMaXQoZDIpKSlcbiAgICAgICAgICB8IChfLCBfKSA9PlxuICAgICAgICAgICAgcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEludExpdChkMSkpKVxuICAgICAgICAgIH0sXG4gICAgICAgIGQxLFxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfbGVuZ3RoID1cbiAgICAgIHVuYXJ5KGQgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQpKSB7XG4gICAgICAgIHwgU3RyaW5nKHMpID0+IE9rKEludChTdHJpbmcubGVuZ3RoKHMpKSB8PiBmcmVzaClcbiAgICAgICAgfCBfID0+IEVycm9yKEludmFsaWRCb3hlZFN0cmluZ0xpdChkKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfY29tcGFyZSA9XG4gICAgICBiaW5hcnkoKGQxLCBkMikgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQxKSwgdGVybV9vZihkMikpIHtcbiAgICAgICAgfCAoU3RyaW5nKHMxKSwgU3RyaW5nKHMyKSkgPT5cbiAgICAgICAgICBPayhJbnQoU3RyaW5nLmNvbXBhcmUoczEsIHMyKSkgfD4gZnJlc2gpXG4gICAgICAgIHwgKFN0cmluZyhfKSwgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQyKSlcbiAgICAgICAgfCAoXywgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQxKSlcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgIGxldCBzdHJpbmdfdHJpbSA9XG4gICAgICB1bmFyeShkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IFN0cmluZyhzKSA9PiBPayhTdHJpbmcoU3RyaW5nLnRyaW0ocykpIHw+IGZyZXNoKVxuICAgICAgICB8IF8gPT4gRXJyb3IoSW52YWxpZEJveGVkU3RyaW5nTGl0KGQpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19vZjogREhFeHAudCA9PiBvcHRpb24oc3RyaW5nKSA9XG4gICAgICBkID0+XG4gICAgICAgIHN3aXRjaCAodGVybV9vZihkKSkge1xuICAgICAgICB8IFN0cmluZyhzKSA9PiBTb21lKHMpXG4gICAgICAgIHwgXyA9PiBOb25lXG4gICAgICAgIH07XG5cbiAgICBsZXQgc3RyaW5nX2NvbmNhdCA9XG4gICAgICBiaW5hcnkoKGQxLCBkMikgPT5cbiAgICAgICAgc3dpdGNoICh0ZXJtX29mKGQxKSwgdGVybV9vZihkMikpIHtcbiAgICAgICAgfCAoU3RyaW5nKHMxKSwgTGlzdExpdCh4cykpID0+XG4gICAgICAgICAgc3dpdGNoICh4cyB8PiBMaXN0Lm1hcChzdHJpbmdfb2YpIHw+IFV0aWwuT3B0VXRpbC5zZXF1ZW5jZSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoTGlzdC5oZCh4cykpKVxuICAgICAgICAgIHwgU29tZSh4cykgPT4gT2soU3RyaW5nKFN0cmluZy5jb25jYXQoczEsIHhzKSkgfD4gZnJlc2gpXG4gICAgICAgICAgfVxuICAgICAgICB8IChTdHJpbmcoXyksIF8pID0+IEVycm9yKEludmFsaWRCb3hlZExpc3RMaXQoZDIpKVxuICAgICAgICB8IChfLCBfKSA9PiBFcnJvcihJbnZhbGlkQm94ZWRTdHJpbmdMaXQoZDEpKVxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgbGV0IHN0cmluZ19zdWIgPSBfID0+XG4gICAgICB0ZXJuYXJ5KChkMSwgZDIsIGQzKSA9PlxuICAgICAgICBzd2l0Y2ggKHRlcm1fb2YoZDEpLCB0ZXJtX29mKGQyKSwgdGVybV9vZihkMykpIHtcbiAgICAgICAgfCAoU3RyaW5nKHMpLCBJbnQoaWR4KSwgSW50KGxlbikpID0+XG4gICAgICAgICAgdHJ5KE9rKFN0cmluZyhTdHJpbmcuc3ViKHMsIGlkeCwgbGVuKSkgfD4gZnJlc2gpKSB7XG4gICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICAvLyBUT0RPOiBtYWtlIGl0IGNsZWFyIHRoYXQgdGhlIHByb2JsZW0gY291bGQgYmUgd2l0aCBkMyB0b29cbiAgICAgICAgICAgIE9rKER5bmFtaWNFcnJvckhvbGUoZDIsIEluZGV4T3V0T2ZCb3VuZHMpIHw+IGZyZXNoKVxuICAgICAgICAgIH1cbiAgICAgICAgfCAoU3RyaW5nKF8pLCBJbnQoXyksIF8pID0+IEVycm9yKEludmFsaWRCb3hlZEludExpdChkMykpXG4gICAgICAgIHwgKFN0cmluZyhfKSwgXywgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQyKSlcbiAgICAgICAgfCAoXywgXywgXykgPT4gRXJyb3IoSW52YWxpZEJveGVkSW50TGl0KGQxKSlcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfTtcblxuICBvcGVuIEltcGxzO1xuICBsZXQgYnVpbHRpbnMgPVxuICAgIFZhck1hcC5lbXB0eVxuICAgIHw+IGNvbnN0KFwiaW5maW5pdHlcIiwgRmxvYXQsIGluZmluaXR5KVxuICAgIHw+IGNvbnN0KFwibmVnX2luZmluaXR5XCIsIEZsb2F0LCBuZWdfaW5maW5pdHkpXG4gICAgfD4gY29uc3QoXCJuYW5cIiwgRmxvYXQsIG5hbilcbiAgICB8PiBjb25zdChcImVwc2lsb25fZmxvYXRcIiwgRmxvYXQsIGVwc2lsb25fZmxvYXQpXG4gICAgfD4gY29uc3QoXCJwaVwiLCBGbG9hdCwgcGkpXG4gICAgfD4gY29uc3QoXCJtYXhfaW50XCIsIEludCwgbWF4X2ludClcbiAgICB8PiBjb25zdChcIm1pbl9pbnRcIiwgSW50LCBtaW5faW50KVxuICAgIHw+IGZuKFwiaXNfZmluaXRlXCIsIEZsb2F0LCBCb29sLCBpc19maW5pdGUpXG4gICAgfD4gZm4oXCJpc19pbmZpbml0ZVwiLCBGbG9hdCwgQm9vbCwgaXNfaW5maW5pdGUpXG4gICAgfD4gZm4oXCJpc19uYW5cIiwgRmxvYXQsIEJvb2wsIGlzX25hbilcbiAgICB8PiBmbihcImludF9vZl9mbG9hdFwiLCBGbG9hdCwgSW50LCBpbnRfb2ZfZmxvYXQpXG4gICAgfD4gZm4oXCJmbG9hdF9vZl9pbnRcIiwgSW50LCBGbG9hdCwgZmxvYXRfb2ZfaW50KVxuICAgIHw+IGZuKFwic3RyaW5nX29mX2ludFwiLCBJbnQsIFN0cmluZywgc3RyaW5nX29mX2ludClcbiAgICB8PiBmbihcInN0cmluZ19vZl9mbG9hdFwiLCBGbG9hdCwgU3RyaW5nLCBzdHJpbmdfb2ZfZmxvYXQpXG4gICAgfD4gZm4oXCJzdHJpbmdfb2ZfYm9vbFwiLCBCb29sLCBTdHJpbmcsIHN0cmluZ19vZl9ib29sKVxuICAgIHw+IGZuKFwiaW50X29mX3N0cmluZ1wiLCBTdHJpbmcsIEludCwgaW50X29mX3N0cmluZyhcImludF9vZl9zdHJpbmdcIikpXG4gICAgfD4gZm4oXG4gICAgICAgICBcImZsb2F0X29mX3N0cmluZ1wiLFxuICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgRmxvYXQsXG4gICAgICAgICBmbG9hdF9vZl9zdHJpbmcoXCJmbG9hdF9vZl9zdHJpbmdcIiksXG4gICAgICAgKVxuICAgIHw+IGZuKFwiYm9vbF9vZl9zdHJpbmdcIiwgU3RyaW5nLCBCb29sLCBib29sX29mX3N0cmluZyhcImJvb2xfb2Zfc3RyaW5nXCIpKVxuICAgIHw+IGZuKFwiYWJzXCIsIEludCwgSW50LCBhYnMpXG4gICAgfD4gZm4oXCJhYnNfZmxvYXRcIiwgRmxvYXQsIEZsb2F0LCBhYnNfZmxvYXQpXG4gICAgfD4gZm4oXCJjZWlsXCIsIEZsb2F0LCBGbG9hdCwgY2VpbClcbiAgICB8PiBmbihcImZsb29yXCIsIEZsb2F0LCBGbG9hdCwgZmxvb3IpXG4gICAgfD4gZm4oXCJleHBcIiwgRmxvYXQsIEZsb2F0LCBleHApXG4gICAgfD4gZm4oXCJsb2dcIiwgRmxvYXQsIEZsb2F0LCBsb2cpXG4gICAgfD4gZm4oXCJsb2cxMFwiLCBGbG9hdCwgRmxvYXQsIGxvZzEwKVxuICAgIHw+IGZuKFwic3FydFwiLCBGbG9hdCwgRmxvYXQsIHNxcnQpXG4gICAgfD4gZm4oXCJzaW5cIiwgRmxvYXQsIEZsb2F0LCBzaW4pXG4gICAgfD4gZm4oXCJjb3NcIiwgRmxvYXQsIEZsb2F0LCBjb3MpXG4gICAgfD4gZm4oXCJ0YW5cIiwgRmxvYXQsIEZsb2F0LCB0YW4pXG4gICAgfD4gZm4oXCJhc2luXCIsIEZsb2F0LCBGbG9hdCwgYXNpbilcbiAgICB8PiBmbihcImFjb3NcIiwgRmxvYXQsIEZsb2F0LCBhY29zKVxuICAgIHw+IGZuKFwiYXRhblwiLCBGbG9hdCwgRmxvYXQsIGF0YW4pXG4gICAgfD4gZm4oXG4gICAgICAgICBcIm1vZFwiLFxuICAgICAgICAgUHJvZChbSW50IHw+IFR5cC5mcmVzaCwgSW50IHw+IFR5cC5mcmVzaF0pLFxuICAgICAgICAgSW50LFxuICAgICAgICAgaW50X21vZChcIm1vZFwiKSxcbiAgICAgICApXG4gICAgfD4gZm4oXCJzdHJpbmdfbGVuZ3RoXCIsIFN0cmluZywgSW50LCBzdHJpbmdfbGVuZ3RoKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJzdHJpbmdfY29tcGFyZVwiLFxuICAgICAgICAgUHJvZChbU3RyaW5nIHw+IFR5cC5mcmVzaCwgU3RyaW5nIHw+IFR5cC5mcmVzaF0pLFxuICAgICAgICAgSW50LFxuICAgICAgICAgc3RyaW5nX2NvbXBhcmUsXG4gICAgICAgKVxuICAgIHw+IGZuKFwic3RyaW5nX3RyaW1cIiwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZ190cmltKVxuICAgIHw+IGZuKFxuICAgICAgICAgXCJzdHJpbmdfY29uY2F0XCIsXG4gICAgICAgICBQcm9kKFtTdHJpbmcgfD4gVHlwLmZyZXNoLCBMaXN0KFN0cmluZyB8PiBUeXAuZnJlc2gpIHw+IFR5cC5mcmVzaF0pLFxuICAgICAgICAgU3RyaW5nLFxuICAgICAgICAgc3RyaW5nX2NvbmNhdCxcbiAgICAgICApXG4gICAgfD4gZm4oXG4gICAgICAgICBcInN0cmluZ19zdWJcIixcbiAgICAgICAgIFByb2QoW1N0cmluZyB8PiBUeXAuZnJlc2gsIEludCB8PiBUeXAuZnJlc2gsIEludCB8PiBUeXAuZnJlc2hdKSxcbiAgICAgICAgIFN0cmluZyxcbiAgICAgICAgIHN0cmluZ19zdWIoXCJzdHJpbmdfc3ViXCIpLFxuICAgICAgICk7XG59O1xuXG5sZXQgY3R4X2luaXQ6IEN0eC50ID0ge1xuICBsZXQgbWV0YV9jb25zX21hcDogQ29uc3RydWN0b3JNYXAudChUeXAudCkgPSBbXG4gICAgVmFyaWFudChcIiRlXCIsIFtJZC5taygpXSwgTm9uZSksXG4gICAgVmFyaWFudChcIiR2XCIsIFtJZC5taygpXSwgTm9uZSksXG4gIF07XG4gIGxldCBtZXRhID1cbiAgICBDdHguVFZhckVudHJ5KHtcbiAgICAgIG5hbWU6IFwiJE1ldGFcIixcbiAgICAgIGlkOiBJZC5pbnZhbGlkLFxuICAgICAga2luZDogQ3R4LlNpbmdsZXRvbihTdW0obWV0YV9jb25zX21hcCkgfD4gVHlwLmZyZXNoKSxcbiAgICB9KTtcbiAgTGlzdC5tYXAoXG4gICAgZnVuXG4gICAgfCAobmFtZSwgQ29uc3QodHlwLCBfKSkgPT4gQ3R4LlZhckVudHJ5KHtuYW1lLCB0eXAsIGlkOiBJZC5pbnZhbGlkfSlcbiAgICB8IChuYW1lLCBGbih0MSwgdDIsIF8pKSA9PlxuICAgICAgQ3R4LlZhckVudHJ5KHtuYW1lLCB0eXA6IEFycm93KHQxLCB0MikgfD4gVHlwLmZyZXNoLCBpZDogSWQuaW52YWxpZH0pLFxuICAgIFBlcnZhc2l2ZXMuYnVpbHRpbnMsXG4gIClcbiAgfD4gQ3R4LmV4dGVuZChfLCBtZXRhKVxuICB8PiBDdHguYWRkX2N0cnMoXywgXCIkTWV0YVwiLCBJZC5pbnZhbGlkLCBtZXRhX2NvbnNfbWFwKTtcbn07XG5cbmxldCBmb3Jtc19pbml0OiBmb3JtcyA9XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IChfLCBDb25zdChfKSkgPT4gTm9uZVxuICAgIHwgKG5hbWUsIEZuKF8sIF8sIGYpKSA9PiBTb21lKChuYW1lLCBmKSksXG4gICAgUGVydmFzaXZlcy5idWlsdGlucyxcbiAgKTtcblxubGV0IGVudl9pbml0OiBFbnZpcm9ubWVudC50ID1cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgZW52ID0+XG4gICAgICBmdW5cbiAgICAgIHwgKG5hbWUsIENvbnN0KF8sIGQpKSA9PiBFbnZpcm9ubWVudC5leHRlbmQoZW52LCAobmFtZSwgZCkpXG4gICAgICB8IChuYW1lLCBGbihfKSkgPT5cbiAgICAgICAgRW52aXJvbm1lbnQuZXh0ZW5kKGVudiwgKG5hbWUsIEJ1aWx0aW5GdW4obmFtZSkgfD4gZnJlc2gpKSxcbiAgICBFbnZpcm9ubWVudC5lbXB0eSxcbiAgICBQZXJ2YXNpdmVzLmJ1aWx0aW5zLFxuICApO1xuIiwiW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBFeHAoRXhwLmNscylcbiAgfCBQYXQoUGF0LmNscylcbiAgfCBUeXAoVHlwLmNscylcbiAgfCBUUGF0KFRQYXQuY2xzKVxuICB8IFJ1bChSdWwuY2xzKVxuICB8IFNlY29uZGFyeShTZWNvbmRhcnkuY2xzKTtcblxubGV0IHNob3cgPSAoY2xzOiB0KSA9PlxuICBzd2l0Y2ggKGNscykge1xuICB8IEV4cChjbHMpID0+IEV4cC5zaG93X2NscyhjbHMpXG4gIHwgUGF0KGNscykgPT4gUGF0LnNob3dfY2xzKGNscylcbiAgfCBUeXAoY2xzKSA9PiBUeXAuc2hvd19jbHMoY2xzKVxuICB8IFRQYXQoY2xzKSA9PiBUUGF0LnNob3dfY2xzKGNscylcbiAgfCBSdWwoY2xzKSA9PiBSdWwuc2hvd19jbHMoY2xzKVxuICB8IFNlY29uZGFyeShjbHMpID0+IFNlY29uZGFyeS5zaG93X2NscyhjbHMpXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBDby1jb250ZXh0czpcblxuICAgQSB0eXBpbmcgY28tY29udGV4dCAoZHVhbCB0byBhIHR5cGluZyBjb250ZXh0KSwgaXMgYSBtYXAgYmV0d2VlblxuICAgdmFyaWFibGUgbmFtZXMgYW5kIGEgbGlzdCBvZiB0aGF0IHZhcmlhYmxlJ3MgdXNlcyB3aXRoaW4gc29tZSBzY29wZS5cbiAgIEZvciBlYWNoIHVzZSwgd2UgcmV0YWluIHRoZSB1bmlxdWUgaWQgYW5kIGV4cGVjdGVkIHR5cGUgb2YgdGhlIHVzZSBzaXRlLlxuICAgVGhlIGNvLWN0eCwgYWxvbmcgd2l0aCB0aGUgY3R4LCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgZnJlZSBhbmQgdW51c2VkIHZhcmlhYmxlcy5cblxuICAgVGhlIGZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgdXNlZnVsOlxuXG4gICAxLiBBIGxvY2FsbHkgZnJlZSB2YXJpYWJsZSAoaW4gYW4gZXhwcmVzc2lvbikgaXMgb25lXG4gICAgICB0aGF0IG9jY3VycyBpbiB0aGUgY29fY3R4IG9mIHRoYXQgZXhwcmVzc2lvbi5cbiAgIDIuIEEgZ2xvYmFsIGZyZWUgdmFyaWFibGUgKGluIHRoZSBwcm9ncmFtKSBpcyBvbmUgdGhhdFxuICAgICAgb2NjdXJzIGluIHRoZSBjb19jdHggYnV0IG5vdCB0aGUgY3R4IG9mIHNvbWUgZXhwcmVzc2lvblxuICAgMy4gQSBsb2NhbGx5IHVudXNlZCB2YXJpYWJsZSAoaW4gYW4gZXhwcmVzc2lvbikgaXMgb25lIHRoYXRcbiAgICAgIG9jY3VycyBpbiB0aGUgY3R4IGJ1dCBub3QgdGhlIGNvLWN0eCBvZiB0aGF0IGV4cHJlc3Npb25cbiAgIDQuIEEgZ2xvYmFsIHVudXNlZCB2YXJpYWJsZSAoaW4gdGhlIHByb2dyYW0pIGlzIG9uZSB0aGF0XG4gICAgICBvY2N1cnMgaW4gdGhlIGN0eCBidXQgbm90IHRoZSBjb19jdHggb2Ygc29tZSBleHByZXNzaW9uXG5cbiAgIFRoZSBmb2xsb3dpbmcgdGhlb3JlbXMgc2hvdWxkIGhvbGQ6XG5cbiAgIEEuIFRvIGRldGVybWluZSBpZiBhIHZhcmlhYmxlIGlzIGdsb2JhbGx5IGZyZWUsIGl0IHN1ZmZpY2VzIHRvIGNvbnNpZGVyXG4gICAgICBleHByZXNzaW9ucyB3aGljaCBhcmUgdmFyaWFibGUgcmVmZXJlbmNlcyAobG9jdXMgb2YgY3R4IGxvb2t1cHMpXG4gICBCLiBUbyBkZXRlcm1pbmUgaWYgYSB2YXJpYWJsZSBpcyBnbG9iYWxseSB1bnVzZWQsIGl0IHN1ZmZpY2VzIHRvIGNvbnNpZGVyXG4gICAgICBleHByZXNzaW9ucyB3aGljaCBhcmUgdGhlIGJvZGllcyBvZiBiaW5kaW5nIGZvcm1zIChsb2N1cyBvZiBjdHggZXh0ZW5zaW9ucylcblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlbnRyeSA9IHtcbiAgaWQ6IElkLnQsXG4gIGV4cGVjdGVkX3R5OiBUeXAudCxcbn07XG5cbi8qIEVhY2ggY28tY29udGV4dCBlbnRyeSBpcyBhIGxpc3Qgb2YgdGhlIHVzZXMgb2YgYSB2YXJpYWJsZVxuICAgd2l0aGluIHNvbWUgc2NvcGUsIGluY2x1ZGluZyB0aGVpciB0eXBlIGRlbWFuZHMgKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IFZhck1hcC50XyhsaXN0KGVudHJ5KSk7XG5cbmxldCBlbXB0eTogdCA9IFZhck1hcC5lbXB0eTtcblxubGV0IG1rID0gKGN0eF9iZWZvcmU6IEN0eC50LCBjdHhfYWZ0ZXIsIGNvX2N0eDogdCk6IHQgPT4ge1xuICBsZXQgYWRkZWRfYmluZGluZ3MgPSBDdHguYWRkZWRfYmluZGluZ3MoY3R4X2FmdGVyLCBjdHhfYmVmb3JlKTtcbiAgVmFyTWFwLmZpbHRlcihcbiAgICAoKG5hbWUsIF8pKSA9PlxuICAgICAgc3dpdGNoIChDdHgubG9va3VwX3ZhcihhZGRlZF9iaW5kaW5ncywgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PiB0cnVlXG4gICAgICB8IFNvbWUoXykgPT4gZmFsc2VcbiAgICAgIH0sXG4gICAgY29fY3R4LFxuICApO1xufTtcblxuLyogTm90ZTogdGhpcyBjdXJyZW50bHkgc2hhZG93cyBpbiB0aGUgY2FzZSBvZiBkdXBsaWNhdGVzICovXG5sZXQgdW5pb246IGxpc3QodCkgPT4gdCA9XG4gIExpc3QuZm9sZF9sZWZ0KChjb19jdHgxLCBjb19jdHgyKSA9PiBjb19jdHgxIEAgY29fY3R4MiwgW10pO1xuXG5sZXQgc2luZ2xldG9uID0gKG5hbWUsIGlkLCBleHBlY3RlZF90eSk6IHQgPT4gW1xuICAobmFtZSwgW3tpZCwgZXhwZWN0ZWRfdHl9XSksXG5dO1xuXG5sZXQgam9pbjogKEN0eC50LCBsaXN0KGVudHJ5KSkgPT4gVHlwLnQgPVxuICAoY3R4LCBlbnRyaWVzKSA9PiB7XG4gICAgbGV0IGV4cGVjdGVkX3R5cyA9IExpc3QubWFwKGVudHJ5ID0+IGVudHJ5LmV4cGVjdGVkX3R5LCBlbnRyaWVzKTtcbiAgICBzd2l0Y2ggKFxuICAgICAgVHlwLmpvaW5fYWxsKH5lbXB0eT1Vbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2gsIGN0eCwgZXhwZWN0ZWRfdHlzKVxuICAgICkge1xuICAgIHwgTm9uZSA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2hcbiAgICB8IFNvbWUodHkpID0+IHR5XG4gICAgfTtcbiAgfTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8qIE1PREUucmVcblxuICAgICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSAoYW5hbHl0aWMpIHR5cGUgZXhwZWN0YXRpb24gaW1wb3NlZCBieSBhIHRlcm0nc1xuICAgICAgc3ludGFjdGljIGNvbnRleHQsIGluIHBhcnRpY3VsYXIgaXRzIGltbWVkaWF0ZSBwYXJlbnQuIFRoZSBtb3N0IGNvbW1vblxuICAgICAgY2FzZXMgYXJlIGVpdGhlciBTeW4gKG5vIHR5cGUgZXhwZWN0YXRpb24pLCBvciBBbmEgKHNvbWUgdHlwZSBleHBlY3RhdGlvbikuXG5cbiAgICAgIEEgdGVybSdzIE1PREUgaXMgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIHRoYXQgdGVybSdzIFNFTEYgKFNlbGYucmUpIGJ5XG4gICAgICB0byBkZXRlcm1pbmUgdGhhdCB0ZXJtJ3MgU1RBVFVTIChJbmZvLnJlKSwgd2hpY2ggZGljdGF0ZXMgd2hldGhlciBvciBub3RcbiAgICAgIGl0IGlzIHBsYWNlZCBpbiBhIGhvbGUsIGFuZCBoZW5jZSBpdHMgRklYRUQgVFlQRSAoSW5mby5yZSkuXG5cbiAgICAgIChJdCBpcyBjb25qZWN0dXJlZCBbY2l0YXRpb24gbmVlZGVkXSB0aGF0IHRoZSBTeW4gbW9kZSBpcyBmdW5jdGlvbmFsbHlcbiAgICAgIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gQW5hKFVua25vd24oU3luU3dpdGNoKSksIGFuZCB0aGF0IHRoaXMgdHlwZSBpc1xuICAgICAgdGh1cyB2ZXN0aWdpYWwuKVxuXG4gICAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IFN5bkZ1biAvKiBVc2VkIG9ubHkgaW4gZnVuY3Rpb24gcG9zaXRpb24gb2YgYXBwbGljYXRpb25zICovXG4gIHwgU3luVHlwRnVuXG4gIHwgU3luXG4gIHwgQW5hKFR5cC50KTtcblxubGV0IGFuYTogVHlwLnQgPT4gdCA9IHR5ID0+IEFuYSh0eSk7XG5cbi8qIFRoZSBleHBlY3RlZCB0eXBlIGltcG9zZWQgYnkgYSBtb2RlICovXG5sZXQgdHlfb2Y6IHQgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBBbmEodHkpID0+IHR5XG4gIHwgU3luID0+IFVua25vd24oU3luU3dpdGNoKSB8PiBUeXAubWtfZmFzdFxuICB8IFN5bkZ1biA9PlxuICAgIEFycm93KFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgICB8PiBUeXAubWtfZmFzdFxuICB8IFN5blR5cEZ1biA9PlxuICAgIEZvcmFsbChcbiAgICAgIFZhcihcInN5bnR5cGZ1blwiKSB8PiBUUGF0LmZyZXNoLFxuICAgICAgVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgICB8PiBUeXAubWtfZmFzdDsgLyogVE9ETzogbmFtaW5nIHRoZSB0eXBlIHZhcmlhYmxlPyAqL1xuXG5sZXQgb2ZfYXJyb3cgPSAoY3R4OiBDdHgudCwgbW9kZTogdCk6ICh0LCB0KSA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gKFN5biwgU3luKVxuICB8IEFuYSh0eSkgPT4gdHkgfD4gVHlwLm1hdGNoZWRfYXJyb3coY3R4KSB8PiBUdXBsZVV0aWwubWFwMihhbmEpXG4gIH07XG5cbmxldCBvZl9mb3JhbGwgPSAoY3R4OiBDdHgudCwgbmFtZV9vcHQ6IG9wdGlvbihzdHJpbmcpLCBtb2RlOiB0KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gU3luXG4gIHwgQW5hKHR5KSA9PlxuICAgIGxldCAobmFtZV9leHBlY3RlZF9vcHQsIGl0ZW0pID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgdHkpO1xuICAgIHN3aXRjaCAobmFtZV9vcHQsIG5hbWVfZXhwZWN0ZWRfb3B0KSB7XG4gICAgfCAoU29tZShuYW1lKSwgU29tZShuYW1lX2V4cGVjdGVkKSkgPT5cbiAgICAgIEFuYShUeXAuc3Vic3QoVmFyKG5hbWUpIHw+IFR5cC5ta19mYXN0LCBuYW1lX2V4cGVjdGVkLCBpdGVtKSlcbiAgICB8IF8gPT4gQW5hKGl0ZW0pXG4gICAgfTtcbiAgfTtcblxubGV0IG9mX3Byb2QgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgbGVuZ3RoKTogbGlzdCh0KSA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gTGlzdC5pbml0KGxlbmd0aCwgXyA9PiBTeW4pXG4gIHwgQW5hKHR5KSA9PiB0eSB8PiBUeXAubWF0Y2hlZF9wcm9kKGN0eCwgbGVuZ3RoKSB8PiBMaXN0Lm1hcChhbmEpXG4gIH07XG5cbmxldCBvZl9jb25zX2hkID0gKGN0eDogQ3R4LnQsIG1vZGU6IHQpOiB0ID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1blxuICB8IFN5blR5cEZ1biA9PiBTeW5cbiAgfCBBbmEodHkpID0+IEFuYShUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKVxuICB9O1xuXG5sZXQgb2ZfY29uc190bCA9IChjdHg6IEN0eC50LCBtb2RlOiB0LCBoZF90eTogVHlwLnQpOiB0ID0+XG4gIHN3aXRjaCAobW9kZSkge1xuICB8IFN5blxuICB8IFN5bkZ1blxuICB8IFN5blR5cEZ1biA9PiBBbmEoTGlzdChoZF90eSkgfD4gVHlwLm1rX2Zhc3QpXG4gIHwgQW5hKHR5KSA9PiBBbmEoTGlzdChUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkpKSB8PiBUeXAubWtfZmFzdClcbiAgfTtcblxubGV0IG9mX2xpc3QgPSAoY3R4OiBDdHgudCwgbW9kZTogdCk6IHQgPT5cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgU3luXG4gIHwgU3luRnVuXG4gIHwgU3luVHlwRnVuID0+IFN5blxuICB8IEFuYSh0eSkgPT4gQW5hKFR5cC5tYXRjaGVkX2xpc3QoY3R4LCB0eSkpXG4gIH07XG5cbmxldCBvZl9saXN0X2NvbmNhdCA9IChjdHg6IEN0eC50LCBtb2RlOiB0KTogdCA9PlxuICBzd2l0Y2ggKG1vZGUpIHtcbiAgfCBTeW5cbiAgfCBTeW5GdW5cbiAgfCBTeW5UeXBGdW4gPT4gQW5hKExpc3QoVW5rbm93bihTeW5Td2l0Y2gpIHw+IFR5cC5ta19mYXN0KSB8PiBUeXAubWtfZmFzdClcbiAgfCBBbmEodHkpID0+IEFuYShMaXN0KFR5cC5tYXRjaGVkX2xpc3QoY3R4LCB0eSkpIHw+IFR5cC5ta19mYXN0KVxuICB9O1xuXG5sZXQgb2ZfbGlzdF9saXQgPSAoY3R4OiBDdHgudCwgbGVuZ3RoLCBtb2RlOiB0KTogbGlzdCh0KSA9PlxuICBMaXN0LmluaXQobGVuZ3RoLCBfID0+IG9mX2xpc3QoY3R4LCBtb2RlKSk7XG5cbmxldCBjdHJfYW5hX3R5cCA9IChjdHg6IEN0eC50LCBtb2RlOiB0LCBjdHI6IENvbnN0cnVjdG9yLnQpOiBvcHRpb24oVHlwLnQpID0+IHtcbiAgLyogSWYgYSBjdHIgaXMgYmVpbmcgYW5hbHl6ZWQgYWdhaW5zdCAoYW4gYXJyb3cgdHlwZSByZXR1cm5pbmcpXG4gICAgIGEgc3VtIHR5cGUgaGF2aW5nIHRoYXQgY3RyIGFzIGEgdmFyaWFudCwgd2UgY29uc2lkZXIgdGhlXG4gICAgIGN0cidzIHR5cGUgdG8gYmUgZGV0ZXJtaW5lZCBieSB0aGUgc3VtIHR5cGUgKi9cbiAgc3dpdGNoIChtb2RlKSB7XG4gIHwgQW5hKHt0ZXJtOiBBcnJvdyhfLCB0eV9hbmEpLCBffSlcbiAgfCBBbmEodHlfYW5hKSA9PlxuICAgIGxldCsgY3RycyA9IFR5cC5nZXRfc3VtX2NvbnN0cnVjdG9ycyhjdHgsIHR5X2FuYSk7XG4gICAgbGV0IHR5X2VudHJ5ID0gQ29uc3RydWN0b3JNYXAuZ2V0X2VudHJ5KGN0ciwgY3Rycyk7XG4gICAgc3dpdGNoICh0eV9lbnRyeSkge1xuICAgIHwgTm9uZSA9PiB0eV9hbmFcbiAgICB8IFNvbWUodHlfaW4pID0+IEFycm93KHR5X2luLCB0eV9hbmEpIHw+IFR5cC5ta19mYXN0XG4gICAgfTtcbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG5cbmxldCBvZl9jdHJfaW5fYXAgPSAoY3R4OiBDdHgudCwgbW9kZTogdCwgY3RyOiBDb25zdHJ1Y3Rvci50KTogb3B0aW9uKHQpID0+XG4gIHN3aXRjaCAoY3RyX2FuYV90eXAoY3R4LCBtb2RlLCBjdHIpKSB7XG4gIHwgU29tZSh7dGVybTogQXJyb3coXyksIF99IGFzIHR5X2FuYSkgPT4gU29tZShBbmEodHlfYW5hKSlcbiAgfCBTb21lKHR5X2FuYSkgPT5cbiAgICAvKiBDb25zaWRlciBmb3IgZXhhbXBsZSBcImxldCBfIDogK1lvID0gWW8oXCJsb2xcIikgaW4uLi5cIlxuICAgICAgIEhlcmUsIHRoZSAnWW8nIGNvbnN0cnVjdG9yIHNob3VsZCBiZSBpbiBhIGhvbGUsIGFzIGl0XG4gICAgICAgaXMgbnVsbGFyeSBidXQgdXNlZCBhcyB1bmFyeTsgd2UgcmVmbGVjdCB0aGlzIGJ5IGFuYWx5emluZ1xuICAgICAgIGFnYWluc3QgYW4gYXJyb3cgdHlwZS4gU2luY2Ugd2UgY2FuJ3QgZ3Vlc3MgYXQgd2hhdCB0aGVcbiAgICAgICBwYXJhbWV0ZXIgdHlwZSBtaWdodCBoYXZlIGJlLCB3ZSB1c2UgVW5rbm93bi4gKi9cbiAgICBTb21lKFxuICAgICAgQW5hKEFycm93KFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCB0eV9hbmEpIHw+IFR5cC5ta19mYXN0KSxcbiAgICApXG4gIHwgTm9uZSA9PiBOb25lXG4gIH07XG5cbmxldCBvZl9hcCA9IChjdHgsIG1vZGUsIGN0cjogb3B0aW9uKENvbnN0cnVjdG9yLnQpKTogdCA9PlxuICAvKiBJZiBhIGN0ciBhcHBsaWNhdGlvbiBpcyBiZWluZyBhbmFseXplZCBhZ2FpbnN0IGEgc3VtIHR5cGUgZm9yXG4gICAgIHdoaWNoIHRoYXQgY3RyIGlzIGEgdmFyaWFudCwgdGhlbiB3ZSBjb25zaWRlciB0aGUgY3RyIHRvIGJlIGluXG4gICAgIGFuYWx5dGljIG1vZGUgYWdhaW5zdCBhbiBhcnJvdyByZXR1cm5pbmcgdGhhdCBzdW0gdHlwZTsgb3RoZXJ3aXNlXG4gICAgIHdlIHVzZSB0aGUgdHlwaWNhbCBtb2RlIGZvciBmdW5jdGlvbiBhcHBsaWNhdGlvbnMgKi9cbiAgc3dpdGNoIChjdHIpIHtcbiAgfCBTb21lKG5hbWUpID0+XG4gICAgc3dpdGNoIChvZl9jdHJfaW5fYXAoY3R4LCBtb2RlLCBuYW1lKSkge1xuICAgIHwgU29tZShtb2RlKSA9PiBtb2RlXG4gICAgfCBfID0+IFN5bkZ1blxuICAgIH1cbiAgfCBOb25lID0+IFN5bkZ1blxuICB9O1xuXG5sZXQgdHlwYXBfbW9kZTogdCA9IFN5blR5cEZ1bjtcblxubGV0IG9mX2RlZmVycmVkX2FwX2FyZ3MgPSAobGVuZ3RoOiBpbnQsIHR5X2luczogbGlzdChUeXAudCkpOiBsaXN0KHQpID0+XG4gIChcbiAgICBMaXN0Lmxlbmd0aCh0eV9pbnMpID09IGxlbmd0aFxuICAgICAgPyB0eV9pbnMgOiBMaXN0LmluaXQobGVuZ3RoLCBfID0+IFR5cC5Vbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdClcbiAgKVxuICB8PiBMaXN0Lm1hcCh0eSA9PiBBbmEodHkpKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIFNFTEYucmVcblxuICAgVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgU0VMRiBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggcmVwcmVzZW50c1xuICAgdGhlIHN5bnRoZXRpYyB0eXBlIGluZm9ybWF0aW9uIGRlcml2YWJsZSBmcm9tIGEgdGVybSBpbmRlcGVuZGVudFxuICAgb2YgdGhlIHR5cGUgZXhwZWN0YXRpb24gKGkuZS4gTU9ERSkgb2YgaXRzIHN5bnRhY3RpYyBjb250ZXh0LiBUaGlzXG4gICBzeW5ldGhldGljIGluZm9ybWF0aW9uIGlzIG5vdCBlbnRpcmVseSBpbmRlcGVuZGVudCwgaW4gdGhhdCBpdCBzdGlsbFxuICAgdXNlcyB0aGUgdHlwaW5nIGNvbnRleHQgcGFzc2VkIGRvd24gZnJvbSB0aGUgc3ludGFjdGljIGNvbnRleHQuXG5cbiAgIEEgdGVybSB3aGljaCBmcm9tIHdoaWNoIGEgdHlwZSBjYW4gYmUgZGVyaXZlZCBpbiBpc29sYXRpb24sIHRoYXQgaXMsXG4gICB0aGF0IGhhcyBhIHZhbGlkIHN5bnRoZXRpYyB0eXBpbmcganVkZ2VtZW50LCB3aWxsIGdlbmVyYWxseSBoYXZlIGEgU0VMRlxuICAgb2YgSnVzdChzb21lX3R5cGUpLiAoVGhlIG9uZSBjdXJyZW50IGV4Y2VwdGlvbiBhcmUgdGhlIGNvbnN0cnVjdG9ycyBvZiBsYWJlbGxlZFxuICAgc3VtIHR5cGVzLCB3aGljaCBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYXMgdGhlaXIgc3ludGhldGljIHR5cGVcbiAgIG1heSBiZSAnb3ZlcndyaXR0ZW4nIGJ5IHRoZSBhbmFseXRpYyBleHBlY3RhdGlvbilcblxuICAgVGhlIG90aGVyIGNhc2VzIGFsbCByZXByZXNlbnQgc3RhdGVzIGZvciB3aGljaCBubyBzaW5nbGUgdHlwZSBjYW4gYmVcbiAgIGRlcml2ZWQsIHN1Y2ggYXMgc3ludGFjdGljIGVycm9ycywgb3IgYnJhbmNoaW5nIGNvbnN0cnVjdHMgd2hpY2ggbWF5XG4gICBoYXZlIGluY29uc2lzdGVudCB0eXBlcy5cblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBqb2luX3R5cGUgPVxuICB8IElkXG4gIHwgTGlzdDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBKdXN0KFR5cC50KSAvKiBKdXN0IGEgcmVndWxhciB0eXBlICovXG4gIHwgTm9Kb2luKGpvaW5fdHlwZSwgbGlzdChUeXAuc291cmNlKSkgLyogSW5jb25zaXN0ZW50IHR5cGVzIGZvciBlLmcgbWF0Y2gsIGxpc3RsaXRzICovXG4gIHwgQmFkVG9rZW4oVG9rZW4udCkgLyogSW52YWxpZCBleHByZXNzaW9uIHRva2VuLCB0cmVhdGVkIGFzIGhvbGUgKi9cbiAgfCBCYWRUcml2QXAoVHlwLnQpIC8qIFRyaXZpYWwgKG51bGxhcnkpIGFwIG9uIGZ1bmN0aW9uIHRoYXQgZG9lc24ndCB0YWtlIHRyaXYgKi9cbiAgfCBJc011bHRpIC8qIE11bHRpaG9sZSwgdHJlYXRlZCBhcyBob2xlICovXG4gIHwgSXNDb25zdHJ1Y3Rvcih7XG4gICAgICBuYW1lOiBDb25zdHJ1Y3Rvci50LFxuICAgICAgc3luX3R5OiBvcHRpb24oVHlwLnQpLFxuICAgIH0pOyAvKiBDb25zdHJ1Y3RvcnMgaGF2ZSBzcGVjaWFsIGFuYSBsb2dpYyAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3BhcnRpYWxfYXAgPVxuICB8IE5vRGVmZXJyZWRBcmdzXG4gIHwgQXJpdHlNaXNtYXRjaCh7XG4gICAgICBleHBlY3RlZDogaW50LFxuICAgICAgYWN0dWFsOiBpbnQsXG4gICAgfSk7XG5cbi8qIEV4cHJlc3Npb25zIGNhbiBhbHNvIGJlIGZyZWUgdmFyaWFibGVzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGV4cCA9XG4gIHwgRnJlZShWYXIudClcbiAgfCBJc0RlZmVycmFsKEV4cC5kZWZlcnJhbF9wb3NpdGlvbilcbiAgfCBJc0JhZFBhcnRpYWxBcChlcnJvcl9wYXJ0aWFsX2FwKVxuICB8IENvbW1vbih0KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwYXQgPVxuICB8IENvbW1vbih0KTtcblxubGV0IGpvaW5fb2YgPSAoajogam9pbl90eXBlLCB0eTogVHlwLnQpOiBUeXAudCA9PlxuICBzd2l0Y2ggKGopIHtcbiAgfCBJZCA9PiB0eVxuICB8IExpc3QgPT4gTGlzdCh0eSkgfD4gVHlwLmZyZXNoXG4gIH07XG5cbi8qIFdoYXQgdGhlIHR5cGUgd291bGQgYmUgaWYgdGhlIHBvc2l0aW9uIGhhZCBiZWVuXG4gICBzeW50aGV0aWMsIHNvIG5vIGhvbGUgZml4aW5nLiBSZXR1cm5zIG5vbmUgaWZcbiAgIHRoZXJlJ3Mgbm8gYXBwbGljYWJsZSBzeW50aGV0aWMgcnVsZS4gKi9cbmxldCB0eXBfb2Y6IChDdHgudCwgdCkgPT4gb3B0aW9uKFR5cC50KSA9XG4gIF9jdHggPT5cbiAgICBmdW5cbiAgICB8IEp1c3QodHlwKSA9PiBTb21lKHR5cClcbiAgICB8IElzQ29uc3RydWN0b3Ioe3N5bl90eSwgX30pID0+IHN5bl90eVxuICAgIHwgQmFkVG9rZW4oXylcbiAgICB8IEJhZFRyaXZBcChfKVxuICAgIHwgSXNNdWx0aVxuICAgIHwgTm9Kb2luKF8pID0+IE5vbmU7XG5cbmxldCB0eXBfb2ZfZXhwOiAoQ3R4LnQsIGV4cCkgPT4gb3B0aW9uKFR5cC50KSA9XG4gIGN0eCA9PlxuICAgIGZ1blxuICAgIHwgRnJlZShfKVxuICAgIHwgSXNEZWZlcnJhbChfKVxuICAgIHwgSXNCYWRQYXJ0aWFsQXAoXykgPT4gTm9uZVxuICAgIHwgQ29tbW9uKHNlbGYpID0+IHR5cF9vZihjdHgsIHNlbGYpO1xuXG5sZXQgdHlwX29mX3BhdDogKEN0eC50LCBwYXQpID0+IG9wdGlvbihUeXAudCkgPVxuICBjdHggPT5cbiAgICBmdW5cbiAgICB8IENvbW1vbihzZWxmKSA9PiB0eXBfb2YoY3R4LCBzZWxmKTtcblxuLyogVGhlIHNlbGYgb2YgYSB2YXIgZGVwZW5kcyBvbiB0aGUgY3R4OyBpZiB0aGVcbiAgIGxvb2t1cCBmYWlscywgaXQgaXMgYSBmcmVlIHZhcmlhYmxlICovXG5sZXQgb2ZfZXhwX3ZhciA9IChjdHg6IEN0eC50LCBuYW1lOiBWYXIudCk6IGV4cCA9PlxuICBzd2l0Y2ggKEN0eC5sb29rdXBfdmFyKGN0eCwgbmFtZSkpIHtcbiAgfCBOb25lID0+IEZyZWUobmFtZSlcbiAgfCBTb21lKHZhcikgPT4gQ29tbW9uKEp1c3QodmFyLnR5cCkpXG4gIH07XG5cbi8qIFRoZSBzZWxmIG9mIGEgY3RyIGRlcGVuZHMgb24gdGhlIGN0eCwgYnV0IGFcbiAgIGxvb2t1cCBmYWlsdXJlIGRvZXNuJ3QgbmVjZXNzYXJpbHkgbWVhbnMgaXRzXG4gICBmcmVlOyBpdCBtYXkgYmUgZ2l2ZW4gYSB0eXBlIGFuYWx5dGljYWxseSAqL1xubGV0IG9mX2N0ciA9IChjdHg6IEN0eC50LCBuYW1lOiBDb25zdHJ1Y3Rvci50KTogdCA9PlxuICBJc0NvbnN0cnVjdG9yKHtcbiAgICBuYW1lLFxuICAgIHN5bl90eTpcbiAgICAgIHN3aXRjaCAoQ3R4Lmxvb2t1cF9jdHIoY3R4LCBuYW1lKSkge1xuICAgICAgfCBOb25lID0+IE5vbmVcbiAgICAgIHwgU29tZSh7dHlwLCBffSkgPT4gU29tZSh0eXApXG4gICAgICB9LFxuICB9KTtcblxubGV0IG9mX2RlZmVycmVkX2FwID0gKGFyZ3MsIHR5X2luczogbGlzdChUeXAudCksIHR5X291dDogVHlwLnQpOiBleHAgPT4ge1xuICBsZXQgZXhwZWN0ZWQgPSBMaXN0Lmxlbmd0aCh0eV9pbnMpO1xuICBsZXQgYWN0dWFsID0gTGlzdC5sZW5ndGgoYXJncyk7XG4gIGlmIChleHBlY3RlZCAhPSBhY3R1YWwpIHtcbiAgICBJc0JhZFBhcnRpYWxBcChBcml0eU1pc21hdGNoKHtleHBlY3RlZCwgYWN0dWFsfSkpO1xuICB9IGVsc2UgaWYgKExpc3QuZm9yX2FsbChFeHAuaXNfZGVmZXJyYWwsIGFyZ3MpKSB7XG4gICAgSXNCYWRQYXJ0aWFsQXAoTm9EZWZlcnJlZEFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIGxldCB0eV9pbnMgPVxuICAgICAgTGlzdC5jb21iaW5lKGFyZ3MsIHR5X2lucylcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoYXJnLCBfdHkpKSA9PiBFeHAuaXNfZGVmZXJyYWwoYXJnKSlcbiAgICAgIHw+IExpc3QubWFwKHNuZCk7XG4gICAgbGV0IHR5X2luID1cbiAgICAgIExpc3QubGVuZ3RoKHR5X2lucykgPT0gMVxuICAgICAgICA/IExpc3QuaGQodHlfaW5zKSA6IFByb2QodHlfaW5zKSB8PiBUeXAuZnJlc2g7XG4gICAgQ29tbW9uKEp1c3QoQXJyb3codHlfaW4sIHR5X291dCkgfD4gVHlwLmZyZXNoKSk7XG4gIH07XG59O1xuXG5sZXQgYWRkX3NvdXJjZSA9IExpc3QubWFwMigoaWQsIHR5KSA9PiBUeXAue2lkLCB0eX0pO1xuXG5sZXQgbWF0Y2ggPSAoY3R4OiBDdHgudCwgdHlzOiBsaXN0KFR5cC50KSwgaWRzOiBsaXN0KElkLnQpKTogdCA9PlxuICBzd2l0Y2ggKFR5cC5qb2luX2FsbCh+ZW1wdHk9VW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLmZyZXNoLCBjdHgsIHR5cykpIHtcbiAgfCBOb25lID0+IE5vSm9pbihJZCwgYWRkX3NvdXJjZShpZHMsIHR5cykpXG4gIHwgU29tZSh0eSkgPT4gSnVzdCh0eSlcbiAgfTtcblxubGV0IGxpc3RsaXQgPSAofmVtcHR5LCBjdHg6IEN0eC50LCB0eXM6IGxpc3QoVHlwLnQpLCBpZHM6IGxpc3QoSWQudCkpOiB0ID0+XG4gIHN3aXRjaCAoVHlwLmpvaW5fYWxsKH5lbXB0eSwgY3R4LCB0eXMpKSB7XG4gIHwgTm9uZSA9PiBOb0pvaW4oTGlzdCwgYWRkX3NvdXJjZShpZHMsIHR5cykpXG4gIHwgU29tZSh0eSkgPT4gSnVzdChMaXN0KHR5KSB8PiBUeXAuZnJlc2gpXG4gIH07XG5cbmxldCBsaXN0X2NvbmNhdCA9IChjdHg6IEN0eC50LCB0eXM6IGxpc3QoVHlwLnQpLCBpZHM6IGxpc3QoSWQudCkpOiB0ID0+XG4gIHN3aXRjaCAoVHlwLmpvaW5fYWxsKH5lbXB0eT1Vbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2gsIGN0eCwgdHlzKSkge1xuICB8IE5vbmUgPT4gTm9Kb2luKExpc3QsIGFkZF9zb3VyY2UoaWRzLCB0eXMpKVxuICB8IFNvbWUodHkpID0+IEp1c3QodHkpXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxuLyogSU5GTy5yZVxuXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBjdXJzb3IgSU5GTyBkYXRhIHN0cnVjdHVyZSwgd2hpY2ggaXMgdXNlZFxuICAgdG8gcmVwcmVzZW50IHRoZSBzdGF0aWMgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgdGVybSBpbiB0aGVcbiAgIEFTVC4gVGhpcyBpbmNsdWRlcyB0aGUgdGVybSBpdHNlbGYsIGFuZCBpbmZvcm1hdGlvbiByZWxhdGVkIHRvXG4gICB0eXBpbmcgYW5kIHN5bnRheCwgaW5jbHVkZWQgZXJyb25lb3VzIHN0YXRlcy5cblxuICAgRWFjaCB0ZXJtIGlzIGFzc2lnbmVkIGEgU1RBVFVTLCB3aGljaCBpcyBkaXJlY3RseSB1c2VkIHRvIGRldGVybWluZVxuICAgdGhlIG1lc3NhZ2UgZGlzcGxheWVkIHRvIHRoZSB1c2VyIGluIEN1cnNvckluc3BlY3Rvci5yZS4gRWFjaCBzb3J0XG4gICBoYXMgaXRzIG93biBzdGF0dXMgZGF0YXR5cGUsIHdoaWNoIGlzIGRpdmlkZWQgaW50byBPSyBzdGF0ZXMgKG5vdFxuICAgaW4gZXJyb3IgaG9sZXMpIGFuZCBFUlJPUiBzdGF0ZXMgKGluIGVycm9yIGhvbGVzKS5cblxuICAgUmVnYXJkbGVzcyBvZiBlcnJvcnMsIGV2ZXJ5IGV4cHJlc3Npb24gJiBwYXR0ZXJuIHRlcm0gaXMgdWx0aW1hdGVseVxuICAgYXNzaWduZWQgYSBGSVhFRCBUWVBFLCB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgdGVybSBhZnRlciBob2xlXG4gICBmaXhpbmc7IHRoYXQgaXMsIGFsbCBvdGhlcndpc2UgaWxsLXR5cGVkIHRlcm1zIGFyZSBjb25zaWRlcmVkIHRvXG4gICBiZSAnd3JhcHBlZCBpbiBub24tZW1wdHkgaG9sZXMnLCBpLmUuIGFzc2lnbmVkIGFuIFVua25vd24gdHlwZS5cblxuICAgRml4ZWQgdHlwZXMgYXJlIGRldGVybWluZWQgYnkgcmVjb25jaWxsaW5nIHR3byBzb3VyY2VzIG9mIHR5cGVcbiAgIGluZm9ybWF0aW9uOiB0aGUgU0VMRiAoU2VsZi5yZSksIHJlcHJlc2VudGluZyB0aGUgdHlwZSBpbmZvcm1hdGlvblxuICAgZGVyaXZhYmxlIGZyb20gYSB0ZXJtIGluIGlzb2xhdGlvbiwgYW5kIHRoZSBNT0RFIChNb2RlLnJlKSxcbiAgIHJlcHJlc2VudGluZyB0aGUgZXhwZWN0ZWQgdHlwZSBpbmZvcm1hdGlvbiBpbXBvc2VkIGJ5IHRoZSBzdXJyb3VuZGluZ1xuICAgc3ludGFjdGljIGNvbnRleHQuIEEgc3VjY2Vzc2Z1bCByZWNvbmNpbGxpYXRpb24gcmVzdWx0cyBpbiBhbiBPS1xuICAgc3RhdHVzOyBvdGhlcndpc2UsIGFuIEVSUk9SIHN0YXR1cywgYnV0IGluIGJvdGggY2FzZXMsIGEgZml4ZWQgdHlwZVxuICAgaXMgZGV0ZXJtaW5lZC5cblxuICAgKi9cblxuLyogVGhlIGlkcyBvZiBhIHRlcm0ncyBhbmNlc3RvcnMgaW4gdGhlIEFTVCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhbmNlc3RvcnMgPSBsaXN0KElkLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX2luY29uc2lzdGVudCA9XG4gIC8qIFNlbGYgdHlwZSAoc3luKSBpbmNvbnNpc3RlbnQgd2l0aCBleHBlY3RlZCB0eXBlIChhbmEpICovXG4gIHwgRXhwZWN0YXRpb24oe1xuICAgICAgYW5hOiBUeXAudCxcbiAgICAgIHN5bjogVHlwLnQsXG4gICAgfSlcbiAgLyogSW5jb25zaXN0ZW50IG1hdGNoIG9yIGxpc3RsaXQgKi9cbiAgfCBJbnRlcm5hbChsaXN0KFR5cC50KSlcbiAgLyogQmFkIGZ1bmN0aW9uIHBvc2l0aW9uICovXG4gIHwgV2l0aEFycm93KFR5cC50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9ub190eXBlID1cbiAgLyogSW52YWxpZCBleHByZXNzaW9uIHRva2VuLCB0cmVhdGVkIGFzIGhvbGUgKi9cbiAgfCBCYWRUb2tlbihUb2tlbi50KVxuICAvKiBFbXB0eSBhcHBsaWNhdGlvbiBvZiBmdW5jdGlvbiB3aXRoIGluY29uc2lzdGVudCB0eXBlICovXG4gIHwgQmFkVHJpdkFwKFR5cC50KVxuICAvKiBTdW0gY29uc3RydWN0b3IgbmVpdGVyIGJvdW5kIG5vciBpbiBhbmEgdHlwZSAqL1xuICB8IEZyZWVDb25zdHJ1Y3RvcihDb25zdHJ1Y3Rvci50KTtcblxuLyogRXJyb3JzIHdoaWNoIGNhbiBhcHBseSB0byBlaXRoZXIgZXhwcmVzc2lvbiBvciBwYXR0ZXJucyAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl9jb21tb24gPVxuICAvKiBVbmRlcmRldGVybWluZWQ6IE5vIHR5cGUgY2FuIGJlIGFzc2lnbmVkICovXG4gIHwgTm9UeXBlKGVycm9yX25vX3R5cGUpXG4gIC8qIE92ZXJkZXRlcm1pbmVkOiBDb25mbGljdGluZyB0eXBlIGV4cGVjdGF0aW9ucyAqL1xuICB8IEluY29uc2lzdGVudChlcnJvcl9pbmNvbnNpc3RlbnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX2V4cCA9XG4gIHwgRnJlZVZhcmlhYmxlKFZhci50KSAvKiBVbmJvdW5kIHZhcmlhYmxlIChub3QgaW4gdHlwaW5nIGNvbnRleHQpICovXG4gIHwgVW51c2VkRGVmZXJyYWxcbiAgfCBCYWRQYXJ0aWFsQXAoU2VsZi5lcnJvcl9wYXJ0aWFsX2FwKVxuICB8IENvbW1vbihlcnJvcl9jb21tb24pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3BhdCA9XG4gIHwgRXhwZWN0ZWRDb25zdHJ1Y3RvciAvKiBPbmx5IGNvbnN0cnV0b3JzIGNhbiBiZSBhcHBsaWVkICovXG4gIHwgQ29tbW9uKGVycm9yX2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgb2tfYW5hID1cbiAgLyogVGhlIGV4cGVjdGVkIChhbmEpIHR5cGUgYW5kIHRoZSBzZWxmIChzeW4pIHR5cGUgYXJlXG4gICAgIGNvbnNpc3RlbnQsIGFzIHdpdG5lc3NlZCBieSB0aGVpciBqb2ludCB0eXBlIChqb2luKSAqL1xuICB8IENvbnNpc3RlbnQoe1xuICAgICAgYW5hOiBUeXAudCxcbiAgICAgIHN5bjogVHlwLnQsXG4gICAgICBqb2luOiBUeXAudCxcbiAgICB9KVxuICAvKiBBIG1hdGNoIGV4cHJlc3Npb24gb3IgbGlzdCBsaXRlcmFsIHdoaWNoLCBpbiBzeW50aGV0aWMgcG9zaXRpb24sXG4gICAgIHdvdWxkIGJlIG1hcmtlZCBhcyBpbnRlcm5hbGx5IGluY29uc2lzdGVudCwgYnV0IGlzIGNvbnNpZGVyZWRcbiAgICAgZmluZSBhcyB0aGUgZXhwZWN0ZWQgdHlwZSBwcm92aWRlcyBhIGNvbnNpc3RlbnQgbG93ZXIgYm91bmRcbiAgICAgKG9mdGVuIFVua25vd24pIGZvciB0aGUgdHlwZXMgb2YgdGhlIGJyYW5jaGVzL2VsZW1lbnRzICovXG4gIHwgSW50ZXJuYWxseUluY29uc2lzdGVudCh7XG4gICAgICBhbmE6IFR5cC50LFxuICAgICAgbm9qb2luOiBsaXN0KFR5cC50KSxcbiAgICB9KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19jb21tb24gPVxuICB8IFN5bihUeXAudClcbiAgfCBBbmEob2tfYW5hKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19leHAgPVxuICB8IEFuYURlZmVycmFsQ29uc2lzdGVudChUeXAudClcbiAgfCBDb21tb24ob2tfY29tbW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva19wYXQgPSBva19jb21tb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX2NvbW1vbiA9XG4gIHwgSW5Ib2xlKGVycm9yX2NvbW1vbilcbiAgfCBOb3RJbkhvbGUob2tfY29tbW9uKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0dXNfZXhwID1cbiAgfCBJbkhvbGUoZXJyb3JfZXhwKVxuICB8IE5vdEluSG9sZShva19leHApO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c19wYXQgPVxuICB8IEluSG9sZShlcnJvcl9wYXQpXG4gIHwgTm90SW5Ib2xlKG9rX3BhdCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX3ZhcmlhbnQgPVxuICB8IFVuaXF1ZVxuICB8IER1cGxpY2F0ZTtcblxuLyogRXhwZWN0YXRpb24gaW1wb3NlZCBvbiBhIHR5cGUgYnkgdGhlIHBhcmVudCBmb3JtLlxuICAgVE9ETzogVGhpcyBpcyBmdW5kYW1lbnRhbGx5IHN5bnRhY3RpYyBhbmQgc2hvdWxkXG4gICBldmVudHVhbGx5IGJlIHJlaW1wbGVtZXRlZCB2aWEgYSBzZXBlcmF0ZSBzb3J0ICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHR5cF9leHBlY3RzID1cbiAgfCBUeXBlRXhwZWN0ZWRcbiAgfCBDb25zdHJ1Y3RvckV4cGVjdGVkKHN0YXR1c192YXJpYW50LCBUeXAudClcbiAgfCBWYXJpYW50RXhwZWN0ZWQoc3RhdHVzX3ZhcmlhbnQsIFR5cC50KTtcblxuLyogVHlwZSB0ZXJtIGVycm9yc1xuICAgVE9ETzogVGhlIHRocmVlIGFkZGl0aW9uYWwgZXJyb3JzIHN0YXR1c2VzXG4gICBhcmUgZnVuZGFtZW50YWxseSBzeW50YWN0aWMgYW5kIHNob3VsZCB3aGVuXG4gICBwb3NzaWJsZSBiZSByZWltcGxlbWV0ZWQgdmlhIGEgc2VwZXJhdGUgc29ydCAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvcl90eXAgPVxuICB8IEJhZFRva2VuKFRva2VuLnQpIC8qIEludmFsaWQgdG9rZW4sIHRyZWF0ZWQgYXMgdHlwZSBob2xlICovXG4gIHwgRnJlZVR5cGVWYXJpYWJsZShzdHJpbmcpIC8qIEZyZWUgdHlwZSB2YXJpYWJsZSAqL1xuICB8IER1cGxpY2F0ZUNvbnN0cnVjdG9yKENvbnN0cnVjdG9yLnQpIC8qIER1cGxpY2F0ZSBjdHIgaW4gc2FtZSBzdW0gKi9cbiAgfCBXYW50VHlwZUZvdW5kQXBcbiAgfCBXYW50Q29uc3RydWN0b3JGb3VuZFR5cGUoVHlwLnQpXG4gIHwgV2FudENvbnN0cnVjdG9yRm91bmRBcDtcblxuLyogVHlwZSBvayBzdGF0dXNlcyBmb3IgY3Vyc29yIGluc3BlY3RvciAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva190eXAgPVxuICB8IFZhcmlhbnQoQ29uc3RydWN0b3IudCwgVHlwLnQpXG4gIHwgVmFyaWFudEluY29tcGxldGUoVHlwLnQpXG4gIHwgVHlwZUFsaWFzKHN0cmluZywgVHlwLnQpXG4gIHwgVHlwZShUeXAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RhdHVzX3R5cCA9XG4gIHwgSW5Ib2xlKGVycm9yX3R5cClcbiAgfCBOb3RJbkhvbGUob2tfdHlwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0eXBlX3Zhcl9lcnIgPVxuICB8IE90aGVyXG4gIHwgTm90Q2FwaXRhbGl6ZWQ7XG5cbi8qIFdoYXQgYXJlIHdlIHNoYWRvd2luZz8gKi9cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2hhZG93X3NyYyA9XG4gIHwgQmFzZVR5cFxuICB8IFR5QWxpYXNcbiAgfCBUeVZhcjtcblxuLyogVHlwZSBwYXR0ZXJuIHRlcm0gZXJyb3JzICovXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yX3RwYXQgPVxuICB8IFNoYWRvd3NUeXBlKHN0cmluZywgc2hhZG93X3NyYylcbiAgfCBOb3RBVmFyKHR5cGVfdmFyX2Vycik7XG5cbi8qIFR5cGUgcGF0dGVybiBvayBzdGF0dXNlcyBmb3IgY3Vyc29yIGluc3BlY3RvciAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBva190cGF0ID1cbiAgfCBFbXB0eVxuICB8IFZhcihzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXR1c190cGF0ID1cbiAgfCBOb3RJbkhvbGUob2tfdHBhdClcbiAgfCBJbkhvbGUoZXJyb3JfdHBhdCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhwID0ge1xuICB0ZXJtOiBVRXhwLnQsIC8qIFRoZSB0ZXJtIHVuZGVyIGNvbnNpZGVyYXRpb24gKi9cbiAgYW5jZXN0b3JzLCAvKiBBc2NlbmRpbmcgbGlzdCBvZiBjb250YWluaW5nIHRlcm0gaWRzICovXG4gIGN0eDogQ3R4LnQsIC8qIFR5cGluZyBjb250ZXh0IGZvciB0aGUgdGVybSAqL1xuICBtb2RlOiBNb2RlLnQsIC8qIFBhcmVudGFsIHR5cGUgZXhwZWN0YXRpb25zICAqL1xuICBzZWxmOiBTZWxmLmV4cCwgLyogRXhwZWN0YXRpb24taW5kZXBlbmRlbnQgdHlwZSBpbmZvICovXG4gIGNvX2N0eDogQ29DdHgudCwgLyogTG9jYWxseSBmcmVlIHZhcmlhYmxlcyAqL1xuICBjbHM6IENscy50LCAvKiBERVJJVkVEOiBTeW50YXggY2xhc3MgKGkuZS4gZm9ybSBuYW1lKSAqL1xuICBzdGF0dXM6IHN0YXR1c19leHAsIC8qIERFUklWRUQ6IE9rL0Vycm9yIHN0YXR1c2VzIGZvciBkaXNwbGF5ICovXG4gIHR5OiBUeXAudCAvKiBERVJJVkVEOiBUeXBlIGFmdGVyIG5vbmVtcHR5IGhvbGUgZml4aW5nICovXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBhdCA9IHtcbiAgdGVybTogVVBhdC50LFxuICBhbmNlc3RvcnMsXG4gIGN0eDogQ3R4LnQsXG4gIGNvX2N0eDogQ29DdHgudCxcbiAgcHJldl9zeW5zd2l0Y2g6IG9wdGlvbihUeXAudCksIC8vIElmIGEgcGF0dGVybiBpcyBmaXJzdCBzeW50aGVzaXplZCwgdGhlbiBhbmFseXNlZCwgdGhlIGluaXRpYWwgc3luIGlzIHN0b3JlZCBoZXJlLlxuICBtb2RlOiBNb2RlLnQsXG4gIHNlbGY6IFNlbGYucGF0LFxuICBjbHM6IENscy50LFxuICBzdGF0dXM6IHN0YXR1c19wYXQsXG4gIHR5OiBUeXAudCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdHlwID0ge1xuICB0ZXJtOiBVVHlwLnQsXG4gIGFuY2VzdG9ycyxcbiAgY3R4OiBDdHgudCxcbiAgZXhwZWN0czogdHlwX2V4cGVjdHMsXG4gIGNsczogQ2xzLnQsXG4gIHN0YXR1czogc3RhdHVzX3R5cCxcbiAgdHk6IFR5cC50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0cGF0ID0ge1xuICB0ZXJtOiBUUGF0LnQsXG4gIGFuY2VzdG9ycyxcbiAgY3R4OiBDdHgudCxcbiAgY2xzOiBDbHMudCxcbiAgc3RhdHVzOiBzdGF0dXNfdHBhdCxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2Vjb25kYXJ5ID0ge1xuICBpZDogSWQudCwgLy8gSWQgb2YgdGVybSBzdGF0aWMgaW5mbyBpcyBzb3VyY2VkIGZyb21cbiAgY2xzOiBDbHMudCwgLy8gQ2xzIG9mIHNlY29uZGFyeSwgbm90IHNvdXJjZSB0ZXJtXG4gIHNvcnQ6IFNvcnQudCwgLy8gZnJvbSBzb3VyY2UgdGVybVxuICBjdHg6IEN0eC50IC8vIGZyb20gc291cmNlIHRlcm1cbn07XG5cbi8qIFRoZSBzdGF0aWMgaW5mb3JtYXRpb24gY29sbGF0ZWQgZm9yIGVhY2ggdGVybSAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBJbmZvRXhwKGV4cClcbiAgfCBJbmZvUGF0KHBhdClcbiAgfCBJbmZvVHlwKHR5cClcbiAgfCBJbmZvVFBhdCh0cGF0KVxuICB8IFNlY29uZGFyeShzZWNvbmRhcnkpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGVycm9yID1cbiAgfCBFeHAoZXJyb3JfZXhwKVxuICB8IFBhdChlcnJvcl9wYXQpXG4gIHwgVHlwKGVycm9yX3R5cClcbiAgfCBUUGF0KGVycm9yX3RwYXQpO1xuXG5sZXQgc29ydF9vZjogdCA9PiBTb3J0LnQgPVxuICBmdW5cbiAgfCBJbmZvRXhwKF8pID0+IEV4cFxuICB8IEluZm9QYXQoXykgPT4gUGF0XG4gIHwgSW5mb1R5cChfKSA9PiBUeXBcbiAgfCBJbmZvVFBhdChfKSA9PiBUUGF0XG4gIHwgU2Vjb25kYXJ5KHMpID0+IHMuc29ydDtcblxubGV0IGNsc19vZjogdCA9PiBDbHMudCA9XG4gIGZ1blxuICB8IEluZm9FeHAoe2NscywgX30pXG4gIHwgSW5mb1BhdCh7Y2xzLCBffSlcbiAgfCBJbmZvVHlwKHtjbHMsIF99KVxuICB8IEluZm9UUGF0KHtjbHMsIF99KVxuICB8IFNlY29uZGFyeSh7Y2xzLCBffSkgPT4gY2xzO1xuXG5sZXQgY3R4X29mOiB0ID0+IEN0eC50ID1cbiAgZnVuXG4gIHwgSW5mb0V4cCh7Y3R4LCBffSlcbiAgfCBJbmZvUGF0KHtjdHgsIF99KVxuICB8IEluZm9UeXAoe2N0eCwgX30pXG4gIHwgSW5mb1RQYXQoe2N0eCwgX30pXG4gIHwgU2Vjb25kYXJ5KHtjdHgsIF99KSA9PiBjdHg7XG5cbmxldCBhbmNlc3RvcnNfb2Y6IHQgPT4gYW5jZXN0b3JzID1cbiAgZnVuXG4gIHwgSW5mb0V4cCh7YW5jZXN0b3JzLCBffSlcbiAgfCBJbmZvUGF0KHthbmNlc3RvcnMsIF99KVxuICB8IEluZm9UeXAoe2FuY2VzdG9ycywgX30pXG4gIHwgSW5mb1RQYXQoe2FuY2VzdG9ycywgX30pID0+IGFuY2VzdG9yc1xuICB8IFNlY29uZGFyeShfKSA9PiBbXTsgLy9UT0RPXG5cbmxldCBpZF9vZjogdCA9PiBJZC50ID1cbiAgZnVuXG4gIHwgSW5mb0V4cChpKSA9PiBFeHAucmVwX2lkKGkudGVybSlcbiAgfCBJbmZvUGF0KGkpID0+IFBhdC5yZXBfaWQoaS50ZXJtKVxuICB8IEluZm9UeXAoaSkgPT4gVHlwLnJlcF9pZChpLnRlcm0pXG4gIHwgSW5mb1RQYXQoaSkgPT4gVFBhdC5yZXBfaWQoaS50ZXJtKVxuICB8IFNlY29uZGFyeShzKSA9PiBzLmlkO1xuXG5sZXQgZXJyb3Jfb2Y6IHQgPT4gb3B0aW9uKGVycm9yKSA9XG4gIGZ1blxuICB8IEluZm9FeHAoe3N0YXR1czogTm90SW5Ib2xlKF8pLCBffSlcbiAgfCBJbmZvUGF0KHtzdGF0dXM6IE5vdEluSG9sZShfKSwgX30pXG4gIHwgSW5mb1R5cCh7c3RhdHVzOiBOb3RJbkhvbGUoXyksIF99KVxuICB8IEluZm9UUGF0KHtzdGF0dXM6IE5vdEluSG9sZShfKSwgX30pID0+IE5vbmVcbiAgfCBJbmZvRXhwKHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShFeHAoZXJyKSlcbiAgfCBJbmZvUGF0KHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShQYXQoZXJyKSlcbiAgfCBJbmZvVHlwKHtzdGF0dXM6IEluSG9sZShlcnIpLCBffSkgPT4gU29tZShUeXAoZXJyKSlcbiAgfCBJbmZvVFBhdCh7c3RhdHVzOiBJbkhvbGUoZXJyKSwgX30pID0+IFNvbWUoVFBhdChlcnIpKVxuICB8IFNlY29uZGFyeShfKSA9PiBOb25lO1xuXG5sZXQgZXhwX2NvX2N0eDogZXhwID0+IENvQ3R4LnQgPSAoe2NvX2N0eCwgX30pID0+IGNvX2N0eDtcbmxldCBleHBfdHk6IGV4cCA9PiBUeXAudCA9ICh7dHksIF99KSA9PiB0eTtcbmxldCBwYXRfY3R4OiBwYXQgPT4gQ3R4LnQgPSAoe2N0eCwgX30pID0+IGN0eDtcbmxldCBwYXRfdHk6IHBhdCA9PiBUeXAudCA9ICh7dHksIF99KSA9PiB0eTtcblxubGV0IHJlYyBzdGF0dXNfY29tbW9uID1cbiAgICAgICAgKGN0eDogQ3R4LnQsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi50KTogc3RhdHVzX2NvbW1vbiA9PlxuICBzd2l0Y2ggKHNlbGYsIG1vZGUpIHtcbiAgfCAoSnVzdCh0eSksIFN5bikgPT4gTm90SW5Ib2xlKFN5bih0eSkpXG4gIHwgKEp1c3QodHkpLCBTeW5GdW4pID0+XG4gICAgc3dpdGNoIChcbiAgICAgIFR5cC5qb2luX2ZpeChcbiAgICAgICAgY3R4LFxuICAgICAgICBBcnJvdyhcbiAgICAgICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgKVxuICAgICAgICB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgdHksXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBTb21lKF8pID0+IE5vdEluSG9sZShTeW4odHkpKVxuICAgIHwgTm9uZSA9PiBJbkhvbGUoSW5jb25zaXN0ZW50KFdpdGhBcnJvdyh0eSkpKVxuICAgIH1cbiAgfCAoSnVzdCh0eSksIFN5blR5cEZ1bikgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgVHlwLmpvaW5fZml4KFxuICAgICAgICBjdHgsXG4gICAgICAgIEZvcmFsbChWYXIoXCI/XCIpIHw+IFRQYXQuZnJlc2gsIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KVxuICAgICAgICB8PiBUeXAubWtfZmFzdCxcbiAgICAgICAgdHksXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBTb21lKF8pID0+IE5vdEluSG9sZShTeW4odHkpKVxuICAgIHwgTm9uZSA9PiBJbkhvbGUoSW5jb25zaXN0ZW50KFdpdGhBcnJvdyh0eSkpKVxuICAgIH1cbiAgfCAoSnVzdChzeW4pLCBBbmEoYW5hKSkgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgVHlwLmpvaW5fZml4KFxuICAgICAgICBjdHgsXG4gICAgICAgIGFuYSxcbiAgICAgICAgc3luIC8qIE5vdGU6IHRoZSBvcmRlcmluZyBvZiBhbmEsIHN5biBtYXR0ZXJzICovXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBOb25lID0+IEluSG9sZShJbmNvbnNpc3RlbnQoRXhwZWN0YXRpb24oe3N5biwgYW5hfSkpKVxuICAgIHwgU29tZShqb2luKSA9PiBOb3RJbkhvbGUoQW5hKENvbnNpc3RlbnQoe2FuYSwgc3luLCBqb2lufSkpKVxuICAgIH1cbiAgfCAoSXNDb25zdHJ1Y3Rvcih7bmFtZSwgc3luX3R5fSksIF8pID0+XG4gICAgLyogSWYgYSBjdHIgaXMgYmVpbmcgYW5hbHl6ZWQgYWdhaW5zdCAoYW4gYXJyb3cgdHlwZSByZXR1cm5pbmcpXG4gICAgICAgYSBzdW0gdHlwZSBoYXZpbmcgdGhhdCBjdHIgYXMgYSB2YXJpYW50LCBpdHMgc2VsZiB0eXBlIGlzXG4gICAgICAgY29uc2lkZXJlZCB0byBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBzdW0gdHlwZTsgb3RoZXJ3aXNlLFxuICAgICAgIGNoZWNrIHRoZSBjb250ZXh0IGZvciB0aGUgY3RyJ3MgdHlwZSAqL1xuICAgIHN3aXRjaCAoTW9kZS5jdHJfYW5hX3R5cChjdHgsIG1vZGUsIG5hbWUpLCBzeW5fdHkpIHtcbiAgICB8IChTb21lKGFuYV90eSksIF8pID0+IHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBKdXN0KGFuYV90eSkpXG4gICAgfCAoXywgU29tZShzeW5fdHkpKSA9PiBzdGF0dXNfY29tbW9uKGN0eCwgbW9kZSwgSnVzdChzeW5fdHkpKVxuICAgIHwgXyA9PiBJbkhvbGUoTm9UeXBlKEZyZWVDb25zdHJ1Y3RvcihuYW1lKSkpXG4gICAgfVxuICB8IChCYWRUb2tlbihuYW1lKSwgXykgPT4gSW5Ib2xlKE5vVHlwZShCYWRUb2tlbihuYW1lKSkpXG4gIHwgKEJhZFRyaXZBcCh0eSksIF8pID0+IEluSG9sZShOb1R5cGUoQmFkVHJpdkFwKHR5KSkpXG4gIHwgKElzTXVsdGksIF8pID0+IE5vdEluSG9sZShTeW4oVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IChOb0pvaW4od3JhcCwgdHlzKSwgQW5hKGFuYSkpID0+XG4gICAgbGV0IHN5bjogVHlwLnQgPSBTZWxmLmpvaW5fb2Yod3JhcCwgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHN3aXRjaCAoVHlwLmpvaW5fZml4KGN0eCwgYW5hLCBzeW4pKSB7XG4gICAgfCBOb25lID0+IEluSG9sZShJbmNvbnNpc3RlbnQoRXhwZWN0YXRpb24oe2FuYSwgc3lufSkpKVxuICAgIHwgU29tZShfKSA9PlxuICAgICAgTm90SW5Ib2xlKFxuICAgICAgICBBbmEoSW50ZXJuYWxseUluY29uc2lzdGVudCh7YW5hLCBub2pvaW46IFR5cC5vZl9zb3VyY2UodHlzKX0pKSxcbiAgICAgIClcbiAgICB9O1xuICB8IChOb0pvaW4oXywgdHlzKSwgU3luIHwgU3luRnVuIHwgU3luVHlwRnVuKSA9PlxuICAgIEluSG9sZShJbmNvbnNpc3RlbnQoSW50ZXJuYWwoVHlwLm9mX3NvdXJjZSh0eXMpKSkpXG4gIH07XG5cbmxldCBzdGF0dXNfcGF0ID0gKGN0eDogQ3R4LnQsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5wYXQpOiBzdGF0dXNfcGF0ID0+XG4gIHN3aXRjaCAobW9kZSwgc2VsZikge1xuICB8IChTeW4gfCBTeW5UeXBGdW4gfCBBbmEoXyksIENvbW1vbihzZWxmX3BhdCkpXG4gIHwgKFN5bkZ1biwgQ29tbW9uKElzQ29uc3RydWN0b3IoXykgYXMgc2VsZl9wYXQpKSA9PlxuICAgIC8qIExpdHRsZSBiaXQgb2YgYSBoYWNrLiBBbnl0aGluZyBvdGhlciB0aGFuIGEgYm91bmQgY3RyIHdpbGwsIGluXG4gICAgICAgZnVuY3Rpb24gcG9zaXRpb24sIGhhdmUgU3luRnVuIG1vZGUgKHNlZSBUeXAuYXBfbW9kZSkuIFNpbmNlIHdlXG4gICAgICAgYXJlIHByb2hpYml0aW5nIG5vbi1jdHJzIGluIGN0ciBhcHBsaWNhdGlvbnMgaW4gcGF0dGVybnMgZm9yIG5vdyxcbiAgICAgICB3ZSBjYXRjaCB0aGVtIGhlcmUsIGRpdmVydGluZyB0byBhbiBFeHBlY3RlZENvbnN0cnVjdG9yIGVycm9yLiBCdXQgd2VcbiAgICAgICBhdm9pZCBjYXB0dXJpbmcgdGhlIHNlY29uZCBjYXNlIGFib3ZlLCBhcyB0aGVzZSB3aWxsIHVsdGltYXRlbHlcbiAgICAgICBnZXQgYSAobW9yZSBwcmVjaXNlKSB1bmJvdW5kIGN0ciAgdmlhIHN0YXR1c19jb21tb24gKi9cbiAgICBzd2l0Y2ggKHN0YXR1c19jb21tb24oY3R4LCBtb2RlLCBzZWxmX3BhdCkpIHtcbiAgICB8IE5vdEluSG9sZShva19leHApID0+IE5vdEluSG9sZShva19leHApXG4gICAgfCBJbkhvbGUoZXJyX3BhdCkgPT4gSW5Ib2xlKENvbW1vbihlcnJfcGF0KSlcbiAgICB9XG4gIHwgKFN5bkZ1biwgXykgPT4gSW5Ib2xlKEV4cGVjdGVkQ29uc3RydWN0b3IpXG4gIH07XG5cbi8qIERldGVybWluZXMgd2hldGhlciBhbiBleHByZXNzaW9uIG9yIHBhdHRlcm4gaXMgaW4gYW4gZXJyb3IgaG9sZSxcbiAgIGRlcGVuZGluZyBvbiB0aGUgbW9kZSwgd2hpY2ggcmVwcmVzZW50cyB0aGUgZXhwZWN0YXRpb25zIG9mIHRoZVxuICAgc3Vycm91bmRpbmcgc3ludGFjdGljIGNvbnRleHQsIGFuZCB0aGUgc2VsZiB3aGljaCByZXByZXNlbnRzIHRoZVxuICAgbWFrZXVwIG9mIHRoZSBleHByZXNzaW9uIC8gcGF0dGVybiBpdHNlbGYuICovXG5sZXQgc3RhdHVzX2V4cCA9IChjdHg6IEN0eC50LCBtb2RlOiBNb2RlLnQsIHNlbGY6IFNlbGYuZXhwKTogc3RhdHVzX2V4cCA9PlxuICBzd2l0Y2ggKHNlbGYsIG1vZGUpIHtcbiAgfCAoRnJlZShuYW1lKSwgXykgPT4gSW5Ib2xlKEZyZWVWYXJpYWJsZShuYW1lKSlcbiAgfCAoSXNEZWZlcnJhbChJbkFwKSwgQW5hKGFuYSkpID0+IE5vdEluSG9sZShBbmFEZWZlcnJhbENvbnNpc3RlbnQoYW5hKSlcbiAgfCAoSXNEZWZlcnJhbChfKSwgXykgPT4gSW5Ib2xlKFVudXNlZERlZmVycmFsKVxuICB8IChJc0JhZFBhcnRpYWxBcChfIGFzIGluZm8pLCBfKSA9PiBJbkhvbGUoQmFkUGFydGlhbEFwKGluZm8pKVxuICB8IChDb21tb24oc2VsZl9wYXQpLCBfKSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX2NvbW1vbihjdHgsIG1vZGUsIHNlbGZfcGF0KSkge1xuICAgIHwgTm90SW5Ib2xlKG9rX2V4cCkgPT4gTm90SW5Ib2xlKENvbW1vbihva19leHApKVxuICAgIHwgSW5Ib2xlKGVycl9wYXQpID0+IEluSG9sZShDb21tb24oZXJyX3BhdCkpXG4gICAgfVxuICB9O1xuXG4vKiBUaGlzIGxvZ2ljIGRldGVybWluZXMgd2hldGhlciBhIHR5cGUgc2hvdWxkIGJlIHB1dFxuICAgaW4gYSBob2xlIG9yIG5vdC4gSXQncyBtb3N0bHkgc3ludGFjdGljLCBkZXRlcm1pbmluZ1xuICAgdGhlIHByb3BlciBwbGFjZW1lbnQgb2Ygc3VtIHR5cGUgdmFyaWFudHMgYW5kIGN0cnM7XG4gICB0aGlzIHNob3VsZCBiZSByZWltcGxlbWVudGVkIGluIHRoZSBmdXR1cmUgYXMgYVxuICAgc2VwYXJhdGUgc29ydC4gSXQgYWxzbyBkZXRlcm1pbmVzIHNlbWFudGljIHByb3BlcnRpZXNcbiAgIHN1Y2ggYXMgd2hldGhlciBvciBub3QgYSB0eXBlIHZhcmlhYmxlIHJlZmVyZW5jZSBpc1xuICAgZnJlZSwgYW5kIHdoZXRoZXIgYSBjdHIgbmFtZSBpcyBhIGR1cGUuICovXG5sZXQgc3RhdHVzX3R5cCA9XG4gICAgKGN0eDogQ3R4LnQsIGV4cGVjdHM6IHR5cF9leHBlY3RzLCB0ZXJtOiBUeXAudCwgdHk6IFR5cC50KTogc3RhdHVzX3R5cCA9PlxuICBzd2l0Y2ggKHRlcm0udGVybSkge1xuICB8IFVua25vd24oSG9sZShJbnZhbGlkKHRva2VuKSkpID0+IEluSG9sZShCYWRUb2tlbih0b2tlbikpXG4gIHwgVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpID0+IE5vdEluSG9sZShUeXBlKHR5KSlcbiAgfCBWYXIobmFtZSkgPT5cbiAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChVbmlxdWUsIHN1bV90eSlcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoVW5pcXVlLCBzdW1fdHkpID0+XG4gICAgICBOb3RJbkhvbGUoVmFyaWFudChuYW1lLCBzdW1fdHkpKVxuICAgIHwgVmFyaWFudEV4cGVjdGVkKER1cGxpY2F0ZSwgXylcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoRHVwbGljYXRlLCBfKSA9PlxuICAgICAgSW5Ib2xlKER1cGxpY2F0ZUNvbnN0cnVjdG9yKG5hbWUpKVxuICAgIHwgVHlwZUV4cGVjdGVkID0+XG4gICAgICBzd2l0Y2ggKEN0eC5pc19hbGlhcyhjdHgsIG5hbWUpKSB7XG4gICAgICB8IGZhbHNlID0+XG4gICAgICAgIHN3aXRjaCAoQ3R4LmlzX2Fic3RyYWN0KGN0eCwgbmFtZSkpIHtcbiAgICAgICAgfCBmYWxzZSA9PiBJbkhvbGUoRnJlZVR5cGVWYXJpYWJsZShuYW1lKSlcbiAgICAgICAgfCB0cnVlID0+IE5vdEluSG9sZShUeXBlKFZhcihuYW1lKSB8PiBUeXAubWtfZmFzdCkpXG4gICAgICAgIH1cbiAgICAgIHwgdHJ1ZSA9PiBOb3RJbkhvbGUoVHlwZUFsaWFzKG5hbWUsIFR5cC53ZWFrX2hlYWRfbm9ybWFsaXplKGN0eCwgdHkpKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIHN3aXRjaCAoZXhwZWN0cykge1xuICAgIHwgVmFyaWFudEV4cGVjdGVkKHN0YXR1c192YXJpYW50LCB0eV92YXJpYW50KSA9PlxuICAgICAgbGV0IHR5X2luID0gVVR5cC50b190eXAoY3R4LCB0Mik7XG4gICAgICBzd2l0Y2ggKHN0YXR1c192YXJpYW50LCB0MS50ZXJtKSB7XG4gICAgICB8IChVbmlxdWUsIFZhcihuYW1lKSkgPT5cbiAgICAgICAgTm90SW5Ib2xlKFZhcmlhbnQobmFtZSwgQXJyb3codHlfaW4sIHR5X3ZhcmlhbnQpIHw+IFR5cC5ta19mYXN0KSlcbiAgICAgIHwgXyA9PlxuICAgICAgICBOb3RJbkhvbGUoXG4gICAgICAgICAgVmFyaWFudEluY29tcGxldGUoQXJyb3codHlfaW4sIHR5X3ZhcmlhbnQpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXykgPT4gSW5Ib2xlKFdhbnRDb25zdHJ1Y3RvckZvdW5kQXApXG4gICAgfCBUeXBlRXhwZWN0ZWQgPT4gSW5Ib2xlKFdhbnRUeXBlRm91bmRBcClcbiAgICB9XG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoZXhwZWN0cykge1xuICAgIHwgVHlwZUV4cGVjdGVkID0+IE5vdEluSG9sZShUeXBlKHR5KSlcbiAgICB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXylcbiAgICB8IFZhcmlhbnRFeHBlY3RlZChfKSA9PiBJbkhvbGUoV2FudENvbnN0cnVjdG9yRm91bmRUeXBlKHR5KSlcbiAgICB9XG4gIH07XG5cbmxldCBzdGF0dXNfdHBhdCA9IChjdHg6IEN0eC50LCB1dHBhdDogVFBhdC50KTogc3RhdHVzX3RwYXQgPT5cbiAgc3dpdGNoICh1dHBhdC50ZXJtKSB7XG4gIHwgRW1wdHlIb2xlID0+IE5vdEluSG9sZShFbXB0eSlcbiAgfCBWYXIobmFtZSkgd2hlbiBDdHguc2hhZG93c190eXAoY3R4LCBuYW1lKSA9PlxuICAgIGxldCBmID0gc3JjID0+IEluSG9sZShTaGFkb3dzVHlwZShuYW1lLCBzcmMpKTtcbiAgICBpZiAoRm9ybS5pc19iYXNlX3R5cChuYW1lKSkge1xuICAgICAgZihCYXNlVHlwKTtcbiAgICB9IGVsc2UgaWYgKEN0eC5pc19hbGlhcyhjdHgsIG5hbWUpKSB7XG4gICAgICBmKFR5QWxpYXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmKFR5VmFyKTtcbiAgICB9O1xuICB8IFZhcihuYW1lKSA9PiBOb3RJbkhvbGUoVmFyKG5hbWUpKVxuICB8IEludmFsaWQoXykgPT4gSW5Ib2xlKE5vdEFWYXIoTm90Q2FwaXRhbGl6ZWQpKVxuICB8IE11bHRpSG9sZShfKSA9PiBJbkhvbGUoTm90QVZhcihPdGhlcikpXG4gIH07XG5cbi8qIERldGVybWluZXMgd2hldGhlciBhbnkgdGVybSBpcyBpbiBhbiBlcnJvciBob2xlLiAqL1xubGV0IGlzX2Vycm9yID0gKGNpOiB0KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAoY2kpIHtcbiAgfCBJbmZvRXhwKHttb2RlLCBzZWxmLCBjdHgsIF99KSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX2V4cChjdHgsIG1vZGUsIHNlbGYpKSB7XG4gICAgfCBJbkhvbGUoXykgPT4gdHJ1ZVxuICAgIHwgTm90SW5Ib2xlKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEluZm9QYXQoe21vZGUsIHNlbGYsIGN0eCwgX30pID0+XG4gICAgc3dpdGNoIChzdGF0dXNfcGF0KGN0eCwgbW9kZSwgc2VsZikpIHtcbiAgICB8IEluSG9sZShfKSA9PiB0cnVlXG4gICAgfCBOb3RJbkhvbGUoXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgSW5mb1R5cCh7ZXhwZWN0cywgY3R4LCB0ZXJtLCB0eSwgX30pID0+XG4gICAgc3dpdGNoIChzdGF0dXNfdHlwKGN0eCwgZXhwZWN0cywgdGVybSwgdHkpKSB7XG4gICAgfCBJbkhvbGUoXykgPT4gdHJ1ZVxuICAgIHwgTm90SW5Ib2xlKF8pID0+IGZhbHNlXG4gICAgfVxuICB8IEluZm9UUGF0KHt0ZXJtLCBjdHgsIF99KSA9PlxuICAgIHN3aXRjaCAoc3RhdHVzX3RwYXQoY3R4LCB0ZXJtKSkge1xuICAgIHwgSW5Ib2xlKF8pID0+IHRydWVcbiAgICB8IE5vdEluSG9sZShfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBTZWNvbmRhcnkoXykgPT4gZmFsc2VcbiAgfTtcbn07XG5cbi8qIERldGVybWluZWQgdGhlIHR5cGUgb2YgYW4gZXhwcmVzc2lvbiBvciBwYXR0ZXJuICdhZnRlciBob2xlIGZpeGluZyc7XG4gICB0aGF0IGlzLCBzb21lIGlsbC10eXBlZCB0ZXJtcyBhcmUgY29uc2lkZXJlZCB0byBiZSAnd3JhcHBlZCBpblxuICAgbm9uLWVtcHR5IGhvbGVzJywgaS5lLiBhc3NpZ25lZCBVbmtub3duIHR5cGUuICovXG5sZXQgZml4ZWRfdHlwX29rOiBva19wYXQgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBTeW4oc3luKSA9PiBzeW5cbiAgfCBBbmEoQ29uc2lzdGVudCh7am9pbiwgX30pKSA9PiBqb2luXG4gIHwgQW5hKEludGVybmFsbHlJbmNvbnNpc3RlbnQoe2FuYSwgX30pKSA9PiBhbmE7XG5cbmxldCBmaXhlZF90eXBfZXJyX2NvbW1vbjogZXJyb3JfY29tbW9uID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgTm9UeXBlKF8pID0+IFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0XG4gIHwgSW5jb25zaXN0ZW50KEV4cGVjdGF0aW9uKHthbmEsIF99KSkgPT4gYW5hXG4gIHwgSW5jb25zaXN0ZW50KEludGVybmFsKF8pKSA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCAvLyBTaG91bGQgdGhpcyBiZSBzb21lIHNvcnQgb2YgbWVldD9cbiAgfCBJbmNvbnNpc3RlbnQoV2l0aEFycm93KF8pKSA9PlxuICAgIEFycm93KFxuICAgICAgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdCxcbiAgICApXG4gICAgfD4gVHlwLm1rX2Zhc3Q7XG5cbmxldCBmaXhlZF90eXBfZXJyOiBlcnJvcl9leHAgPT4gVHlwLnQgPVxuICBmdW5cbiAgfCBGcmVlVmFyaWFibGUoXykgPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3RcbiAgfCBVbnVzZWREZWZlcnJhbCA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdFxuICB8IEJhZFBhcnRpYWxBcChfKSA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdFxuICB8IENvbW1vbihlcnIpID0+IGZpeGVkX3R5cF9lcnJfY29tbW9uKGVycik7XG5cbmxldCBmaXhlZF90eXBfZXJyX3BhdDogZXJyb3JfcGF0ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgRXhwZWN0ZWRDb25zdHJ1Y3RvciA9PiBVbmtub3duKEludGVybmFsKSB8PiBUeXAubWtfZmFzdFxuICB8IENvbW1vbihlcnIpID0+IGZpeGVkX3R5cF9lcnJfY29tbW9uKGVycik7XG5cbmxldCBmaXhlZF90eXBfcGF0ID0gKGN0eCwgbW9kZTogTW9kZS50LCBzZWxmOiBTZWxmLnBhdCk6IFR5cC50ID0+XG4gIHN3aXRjaCAoc3RhdHVzX3BhdChjdHgsIG1vZGUsIHNlbGYpKSB7XG4gIHwgSW5Ib2xlKGVycikgPT4gZml4ZWRfdHlwX2Vycl9wYXQoZXJyKVxuICB8IE5vdEluSG9sZShvaykgPT4gZml4ZWRfdHlwX29rKG9rKVxuICB9O1xuXG5sZXQgZml4ZWRfdHlwX2V4cCA9IChjdHgsIG1vZGU6IE1vZGUudCwgc2VsZjogU2VsZi5leHApOiBUeXAudCA9PlxuICBzd2l0Y2ggKHN0YXR1c19leHAoY3R4LCBtb2RlLCBzZWxmKSkge1xuICB8IEluSG9sZShlcnIpID0+IGZpeGVkX3R5cF9lcnIoZXJyKVxuICB8IE5vdEluSG9sZShBbmFEZWZlcnJhbENvbnNpc3RlbnQoYW5hKSkgPT4gYW5hXG4gIHwgTm90SW5Ib2xlKENvbW1vbihvaykpID0+IGZpeGVkX3R5cF9vayhvaylcbiAgfTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciBleHByZXNzaW9uIHRlcm1zICovXG5sZXQgZGVyaXZlZF9leHAgPVxuICAgICh+dWV4cDogVUV4cC50LCB+Y3R4LCB+bW9kZSwgfmFuY2VzdG9ycywgfnNlbGYsIH5jb19jdHgpOiBleHAgPT4ge1xuICBsZXQgY2xzID0gQ2xzLkV4cChVRXhwLmNsc19vZl90ZXJtKHVleHAudGVybSkpO1xuICBsZXQgc3RhdHVzID0gc3RhdHVzX2V4cChjdHgsIG1vZGUsIHNlbGYpO1xuICBsZXQgdHkgPSBmaXhlZF90eXBfZXhwKGN0eCwgbW9kZSwgc2VsZik7XG4gIHtjbHMsIHNlbGYsIHR5LCBtb2RlLCBzdGF0dXMsIGN0eCwgY29fY3R4LCBhbmNlc3RvcnMsIHRlcm06IHVleHB9O1xufTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciBwYXR0ZXJuIHRlcm1zICovXG5sZXQgZGVyaXZlZF9wYXQgPVxuICAgICh+dXBhdDogVVBhdC50LCB+Y3R4LCB+Y29fY3R4LCB+cHJldl9zeW5zd2l0Y2gsIH5tb2RlLCB+YW5jZXN0b3JzLCB+c2VsZilcbiAgICA6IHBhdCA9PiB7XG4gIGxldCBjbHMgPSBDbHMuUGF0KFVQYXQuY2xzX29mX3Rlcm0odXBhdC50ZXJtKSk7XG4gIGxldCBzdGF0dXMgPSBzdGF0dXNfcGF0KGN0eCwgbW9kZSwgc2VsZik7XG4gIGxldCB0eSA9IGZpeGVkX3R5cF9wYXQoY3R4LCBtb2RlLCBzZWxmKTtcbiAge1xuICAgIGNscyxcbiAgICBzZWxmLFxuICAgIHByZXZfc3luc3dpdGNoLFxuICAgIG1vZGUsXG4gICAgdHksXG4gICAgc3RhdHVzLFxuICAgIGN0eCxcbiAgICBjb19jdHgsXG4gICAgYW5jZXN0b3JzLFxuICAgIHRlcm06IHVwYXQsXG4gIH07XG59O1xuXG4vKiBBZGQgZGVyaXZhYmxlIGF0dHJpYnV0ZXMgZm9yIHR5cGVzICovXG5sZXQgZGVyaXZlZF90eXAgPSAofnV0eXA6IFVUeXAudCwgfmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHMpOiB0eXAgPT4ge1xuICBsZXQgY2xzOiBDbHMudCA9XG4gICAgLyogSGFjayB0byBpbXByb3ZlIENJIGRpc3BsYXkgKi9cbiAgICBzd2l0Y2ggKGV4cGVjdHMsIFVUeXAuY2xzX29mX3Rlcm0odXR5cC50ZXJtKSkge1xuICAgIHwgKFZhcmlhbnRFeHBlY3RlZChfKSB8IENvbnN0cnVjdG9yRXhwZWN0ZWQoXyksIFZhcikgPT5cbiAgICAgIENscy5UeXAoQ29uc3RydWN0b3IpXG4gICAgfCAoXywgY2xzKSA9PiBDbHMuVHlwKGNscylcbiAgICB9O1xuICBsZXQgdHkgPSBVVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICBsZXQgc3RhdHVzID0gc3RhdHVzX3R5cChjdHgsIGV4cGVjdHMsIHV0eXAsIHR5KTtcbiAge2NscywgY3R4LCBhbmNlc3RvcnMsIHN0YXR1cywgZXhwZWN0cywgdHksIHRlcm06IHV0eXB9O1xufTtcblxuLyogQWRkIGRlcml2YWJsZSBhdHRyaWJ1dGVzIGZvciB0eXBlIHBhdHRlcm5zICovXG5sZXQgZGVyaXZlZF90cGF0ID0gKH51dHBhdDogVFBhdC50LCB+Y3R4LCB+YW5jZXN0b3JzKTogdHBhdCA9PiB7XG4gIGxldCBjbHMgPSBDbHMuVFBhdChUUGF0LmNsc19vZl90ZXJtKHV0cGF0LnRlcm0pKTtcbiAgbGV0IHN0YXR1cyA9IHN0YXR1c190cGF0KGN0eCwgdXRwYXQpO1xuICB7Y2xzLCBhbmNlc3RvcnMsIHN0YXR1cywgY3R4LCB0ZXJtOiB1dHBhdH07XG59O1xuXG4vKiBJZiB0aGUgaW5mbyByZXByZXNlbnRzIHNvbWUga2luZCBvZiBuYW1lIGJpbmRpbmcgd2hpY2hcbiAgIGV4aXN0cyBpbiB0aGUgY29udGV4dCwgcmV0dXJuIHRoZSBpZCB3aGVyZSB0aGUgYmluZGluZyBvY2N1cnMgKi9cbmxldCBnZXRfYmluZGluZ19zaXRlID0gKGluZm86IHQpOiBvcHRpb24oSWQudCkgPT4ge1xuICBzd2l0Y2ggKGluZm8pIHtcbiAgfCBJbmZvRXhwKHt0ZXJtOiB7dGVybTogVmFyKG5hbWUpLCBffSwgY3R4LCBffSkgPT5cbiAgICBsZXQrIGVudHJ5ID0gQ3R4Lmxvb2t1cF92YXIoY3R4LCBuYW1lKTtcbiAgICBlbnRyeS5pZDtcbiAgfCBJbmZvRXhwKHt0ZXJtOiB7dGVybTogQ29uc3RydWN0b3IobmFtZSksIF99LCBjdHgsIF99KVxuICB8IEluZm9QYXQoe3Rlcm06IHt0ZXJtOiBDb25zdHJ1Y3RvcihuYW1lKSwgX30sIGN0eCwgX30pID0+XG4gICAgbGV0KyBlbnRyeSA9IEN0eC5sb29rdXBfY3RyKGN0eCwgbmFtZSk7XG4gICAgZW50cnkuaWQ7XG4gIHwgSW5mb1R5cCh7dGVybToge3Rlcm06IFZhcihuYW1lKSwgX30sIGN0eCwgX30pID0+XG4gICAgbGV0KyBlbnRyeSA9IEN0eC5sb29rdXBfdHZhcihjdHgsIG5hbWUpO1xuICAgIGVudHJ5LmlkO1xuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IHR5cF9pc19jb25zdHJ1Y3Rvcl9leHBlY3RlZCA9IHQgPT5cbiAgc3dpdGNoICh0KSB7XG4gIHwge2V4cGVjdHM6IENvbnN0cnVjdG9yRXhwZWN0ZWQoXykgfCBWYXJpYW50RXhwZWN0ZWQoXyksIF99ID0+IHRydWVcbiAgfCBfID0+IGZhbHNlXG4gIH07XG4iLCJvcGVuIFV0aWw7XG5cbmluY2x1ZGUgSWQuTWFwO1xudHlwZSByYW5nZSA9IChQaWVjZS50LCBQaWVjZS50KTtcbnR5cGUgbm9ucmVjIHQgPSB0KHJhbmdlKTtcblxubGV0IHVuaW9uID0gdW5pb24oKF8sIHJhbmdlLCBfKSA9PiBTb21lKHJhbmdlKSk7XG5cbi8qIFBFUkY6IFVwIHRvIDUwJSByZWR1Y3Rpb24gaW4gc29tZSBjYXNlcyBieSBtZW1vaXppbmdcbiAqIHRoaXMgZnVuY3Rpb24uIE1pZ2h0IGJlIGJldHRlciB0aG91Z2ggdG8ganVzdCBkbyBhblxuICogdW5tZW1vaXplZCB0cmF2ZXJzYWwgYnVpbGRpbmcgYSBoYXNodGJsIGF2b2lkaW5nIHVuaW9uaW5nLlxuXG4gICBUT0RPKGFuZHJldyk6IENvbnNpZGVyIHNldHRpbmcgYSBsaW1pdCBmb3IgdGhlIGhhc2h0Ymwgc2l6ZSAqL1xubGV0IHJhbmdlX2hhc2g6IEhhc2h0YmwudChUaWxlLnNlZ21lbnQsIElkLk1hcC50KHJhbmdlKSkgPVxuICBIYXNodGJsLmNyZWF0ZSgxMDAwKTtcblxuLy8gTk9URTogdGhpcyBjYWxjdWxhdGlvbiBpcyBvdXQgb2Ygc3luYyB3aXRoXG4vLyBNYWtlVGVybSwgd2hpY2ggbWF0Y2hlcyB0aGluZ3MgbGlrZSBsaXN0IGJyYWNrZXRzXG4vLyBhbmQgY2FzZS4uLmVuZCB0byBzZXBhcmF0b3JzIGluc2lkZSBlZyBsaXN0IGNvbW1hc1xuLy8gYW5kIHJ1bGVzIGB8IHAgPT5gLiB0aGlzIGNhbGN1bGF0aW9uIGRvZXMgbm90XG4vLyBpbmNsdWRlIHRoZSBjb250YWluZXIgaW4gdGhlIHJhbmdlcyBmb3IgdGhvc2UgaW5uZXJcbi8vIHNlcGFyYXRvcnMuXG4vLyBUT0RPKGQpIGZpeCBvciBkZXJpdmUgZnJvbSBvdGhlciBpbmZvXG4vL1xuLy8gdGFpbC1yZWN1cnNpdmUgaW4gb3V0ZXIgcmVjdXJzaW9uXG5sZXQgcmVjIG1rJyA9IChzZWc6IFNlZ21lbnQudCkgPT4ge1xuICBsZXQgcmVjIGdvID0gKHNrZWw6IFNrZWwudCk6IChyYW5nZSwgdCkgPT4ge1xuICAgIGxldCByb290ID0gU2tlbC5yb290KHNrZWwpIHw+IEFiYS5tYXBfYShMaXN0Lm50aChzZWcpKTtcbiAgICBsZXQgcm9vdF9sID0gQWJhLmZpcnN0X2Eocm9vdCk7XG4gICAgbGV0IHJvb3RfciA9IEFiYS5sYXN0X2Eocm9vdCk7XG4gICAgbGV0IChyYW5nZSwgdW5pY2hpbGRfbWFwKSA9XG4gICAgICBzd2l0Y2ggKHNrZWwpIHtcbiAgICAgIHwgT3AoXykgPT4gKChyb290X2wsIHJvb3RfciksIGVtcHR5KVxuICAgICAgfCBQcmUoXywgcikgPT5cbiAgICAgICAgbGV0ICgoXywgciksIG1hcCkgPSBnbyhyKTtcbiAgICAgICAgKChyb290X2wsIHIpLCBtYXApO1xuICAgICAgfCBQb3N0KGwsIF8pID0+XG4gICAgICAgIGxldCAoKGwsIF8pLCBtYXApID0gZ28obCk7XG4gICAgICAgICgobCwgcm9vdF9yKSwgbWFwKTtcbiAgICAgIHwgQmluKGwsIF8sIHIpID0+XG4gICAgICAgIGxldCAoKGwsIF8pLCBtYXBfbCkgPSBnbyhsKTtcbiAgICAgICAgbGV0ICgoXywgciksIG1hcF9yKSA9IGdvKHIpO1xuICAgICAgICAoKGwsIHIpLCB1bmlvbihtYXBfbCwgbWFwX3IpKTtcbiAgICAgIH07XG4gICAgbGV0IGJldHdlZW5fY2hpbGRfbWFwID1cbiAgICAgIEFiYS5nZXRfYnMocm9vdClcbiAgICAgIHw+IExpc3QubWFwKGdvKVxuICAgICAgfD4gTGlzdC5tYXAoc25kKVxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQodW5pb24sIGVtcHR5KTtcbiAgICBsZXQgbWFwID1cbiAgICAgIEFiYS5nZXRfYXMocm9vdClcbiAgICAgIHw+IExpc3QubWFwKFBpZWNlLmlkKVxuICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgIChtYXAsIGlkKSA9PiBJZC5NYXAuYWRkKGlkLCByYW5nZSwgbWFwKSxcbiAgICAgICAgICAgdW5pb24oYmV0d2Vlbl9jaGlsZF9tYXAsIHVuaWNoaWxkX21hcCksXG4gICAgICAgICApO1xuICAgIChyYW5nZSwgbWFwKTtcbiAgfTtcbiAgU2VnbWVudC5jaGlsZHJlbihzZWcpXG4gIHw+IExpc3QuZm9sZF9sZWZ0KFxuICAgICAgIChtYXAsIGtpZCkgPT4gdW5pb24obWFwLCBtayhraWQpKSxcbiAgICAgICB1bmlvbihlbXB0eSwgc25kKGdvKFNlZ21lbnQuc2tlbChzZWcpKSkpLFxuICAgICApO1xufVxuYW5kIG1rID0gc2VnID0+XG4gIHRyeShIYXNodGJsLmZpbmQocmFuZ2VfaGFzaCwgc2VnKSkge1xuICB8IF8gPT5cbiAgICBsZXQgcmVzID0gbWsnKHNlZyk7XG4gICAgSGFzaHRibC5hZGQocmFuZ2VfaGFzaCwgc2VnLCByZXMpO1xuICAgIHJlcztcbiAgfTtcbiIsIi8qIFNUQVRJQ1MucmVcblxuICAgVGhpcyBtb2R1bGUgZGV0ZXJtaW5lcyB0aGUgc3RhdGljcyBzZW1hbnRpY3Mgb2YgYSBwcm9ncmFtLlxuICAgSXQgbWFrZXMgdXNlIG9mIHRoZSBmb2xsb3dpbmcgbW9kdWxlczpcblxuICAgSU5GTy5yZTogRGVmaW5lcyB0aGUgSW5mby50IHR5cGUgd2hpY2ggaXMgdXNlZCB0byByZXByZXNlbnQgdGhlXG4gICBzdGF0aWMgU1RBVFVTIG9mIGEgdGVybS4gVGhpcyBTVEFUVVMgY2FuIGJlIGVpdGhlciBPSyBvciBFUlJPUixcbiAgIGFuZCBpcyBkZXRlcm1pbmVkIGJ5IHJlY29uY2lsbGluZyB0d28gc291cmNlcyBvZiB0eXBpbmcgaW5mb3JtYXRpb24sXG4gICB0aGUgTU9ERSBhbmQgdGhlIFNFTEYuXG5cbiAgIE1PREUucmU6IERlZmluZXMgdGhlIE1vZGUudCB0eXBlIHdoaWNoIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZVxuICAgdHlwaW5nIGV4cGVjdGF0aW9ucyBpbXBvc2VkIGJ5IGEgdGVybSdzIGFuY2VzdG9ycy5cblxuICAgU0VMRi5yZTogRGVmaW5lIHRoZSBTZWxmLnQgdHlwZSB3aGljaCBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGVcbiAgIHR5cGUgaW5mb3JtYXRpb24gZGVyaXZhYmxlIGZyb20gdGhlIHRlcm0gaXRzZWxmLlxuXG4gICBUaGUgcG9pbnQgb2YgU1RBVElDUy5yZSBpdHNlbGYgaXMgdG8gZGVyaXZlIGEgbWFwIGJldHdlZW4gZWFjaFxuICAgdGVybSdzIHVuaXF1ZSBpZCBhbmQgdGhhdCB0ZXJtJ3Mgc3RhdGljIElORk8uIFRoZSBiZWxvdyBmdW5jdGlvbnNcbiAgIGFyZSBpbnRlbmRlZCBtb3N0bHkgYXMgaW5mcmFzdHJ1Y3R1cmU6IFRoZSBwb2ludCBpcyB0byBkZWZpbmUgYVxuICAgdHJhdmVyc2FsIHRocm91Z2ggdGhlIHN5bnRheCB0cmVlIHdoaWNoLCBmb3IgZWFjaCB0ZXJtLCBwYXNzZXNcbiAgIGRvd24gdGhlIE1PREUsIHBhc3NlcyB1cCB0aGUgU0VMRiwgY2FsY3VsYXRlcyB0aGUgSU5GTywgYW5kIGFkZHNcbiAgIGl0IHRvIHRoZSBtYXAuXG5cbiAgIFRoZSBhcmNoaXRlY3R1cmFsIGludGVudGlvbiBoZXJlIGlzIHRoYXQgbW9zdCB0eXBlLW1hbmlwdWxhdGlvblxuICAgbG9naWMgaXMgZGVmaW5lZCBpbiBJTkZPLCBNT0RFLCBhbmQgU0VMRiwgYW5kIHRoZSBTVEFUSUNTIG1vZHVsZVxuICAgaXRzZWxmIGlzIGRlZGljYXRlZCB0byB0aGUgcGlwaW5nIG5lY2Vzc2FyeSB0byAoQSkgaW50cm9kdWNlIGFuZFxuICAgKEIpIHByb3BhZ2F0ZSB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRocm91Z2ggdGhlIHN5bnRheCB0cmVlLlxuXG4gICAgKi9cblxubW9kdWxlIEluZm8gPSBJbmZvO1xuXG5tb2R1bGUgTWFwID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IElkLk1hcC50KEluZm8udCk7XG5cbiAgLy8gbGV0IChzZXhwX29mX3QsIHRfb2Zfc2V4cCkgPVxuICAvLyAgIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaW4oc2V4cF9vZl90LCB0X29mX3NleHApO1xuXG4gIGxldCBlcnJvcl9pZHMgPSAodGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudCwgaW5mb19tYXA6IHQpOiBsaXN0KElkLnQpID0+XG4gICAgSWQuTWFwLmZvbGQoXG4gICAgICAoaWQsIGluZm8sIGFjYykgPT5cbiAgICAgICAgLyogQmVjYXVzZSBvZiBhcnRlZmFjdHMgaW4gTWFrZXRlcm0gSUQgaGFuZGxpbmcsXG4gICAgICAgICAqIHRoZXJlIGFyZSBiZSBzaXR1YXRpb25zIHdoZXJlIGlkcyBhcHBlYXIgaW4gdGhlXG4gICAgICAgICAqIGluZm9fbWFwIHdoaWNoIGRvIG5vdCBvY2N1ciBpbiB0ZXJtX3Jhbmdlcy4gVGhlc2VcbiAgICAgICAgICogaWRzIHNob3VsZCBiZSBwdXJlbHkgZHVwbGljYXRpdmUsIHNvIHNraXBwaW5nIHRoZW1cbiAgICAgICAgICogd2hlbiBpdGVyYXRpbmcgb3ZlciB0aGUgaW5mb19tYXAgc2hvdWxkIGhhdmUgbm9cbiAgICAgICAgICogZWZmZWN0LCBiZXlvbmQgc3VwcmVzc2luZyB0aGUgcmVzdWx0aW5nIE5vdF9mb3VuZCBleHMgKi9cbiAgICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIHRlcm1fcmFuZ2VzKSkge1xuICAgICAgICB8IFNvbWUoXykgd2hlbiBJbmZvLmlzX2Vycm9yKGluZm8pID0+IFtpZCwgLi4uYWNjXVxuICAgICAgICB8IF8gPT4gYWNjXG4gICAgICAgIH0sXG4gICAgICBpbmZvX21hcCxcbiAgICAgIFtdLFxuICAgICk7XG59O1xuXG5sZXQgbWFwX20gPSAoZiwgeHMsIG06IE1hcC50KSA9PlxuICBMaXN0LmZvbGRfbGVmdChcbiAgICAoKHhzLCBtKSwgeCkgPT4gZih4LCBtKSB8PiAoKCh4LCBtKSkgPT4gKHhzIEAgW3hdLCBtKSksXG4gICAgKFtdLCBtKSxcbiAgICB4cyxcbiAgKTtcblxubGV0IGFkZF9pbmZvID0gKGlkczogbGlzdChJZC50KSwgaW5mbzogSW5mby50LCBtOiBNYXAudCk6IE1hcC50ID0+XG4gIGlkcyB8PiBMaXN0LmZvbGRfbGVmdCgobSwgaWQpID0+IElkLk1hcC5hZGQoaWQsIGluZm8sIG0pLCBtKTtcblxubGV0IHJlYyBpc19hcnJvd19saWtlID0gKHQ6IFR5cC50KSA9PiB7XG4gIHN3aXRjaCAodCB8PiBUeXAudGVybV9vZikge1xuICB8IFVua25vd24oXykgPT4gdHJ1ZVxuICB8IEFycm93KF8pID0+IHRydWVcbiAgfCBGb3JhbGwoXywgdCkgPT4gaXNfYXJyb3dfbGlrZSh0KVxuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCBpc19yZWN1cnNpdmUgPSAoY3R4LCBwLCBkZWYsIHN5bjogVHlwLnQpID0+IHtcbiAgc3dpdGNoIChQYXQuZ2V0X251bV9vZl92YXJzKHApLCBFeHAuZ2V0X251bV9vZl9mdW5jdGlvbnMoZGVmKSkge1xuICB8IChTb21lKG51bV92YXJzKSwgU29tZShudW1fZm5zKSlcbiAgICAgIHdoZW4gbnVtX3ZhcnMgIT0gMCAmJiBudW1fdmFycyA9PSBudW1fZm5zID0+XG4gICAgbGV0IG5vcm0gPSBUeXAubm9ybWFsaXplKGN0eCwgc3luKTtcbiAgICBzd2l0Y2ggKG5vcm0gfD4gVHlwLnRlcm1fb2YpIHtcbiAgICB8IFByb2Qoc3lucykgd2hlbiBMaXN0Lmxlbmd0aChzeW5zKSA9PSBudW1fdmFycyA9PlxuICAgICAgc3lucyB8PiBMaXN0LmZvcl9hbGwoaXNfYXJyb3dfbGlrZSlcbiAgICB8IF8gd2hlbiBpc19hcnJvd19saWtlKG5vcm0pID0+IG51bV92YXJzID09IDFcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xuICB8IF8gPT4gZmFsc2VcbiAgfTtcbn07XG5cbmxldCB0eXBfZXhwX2Jpbm9wX2Jpbl9pbnQ6IE9wZXJhdG9ycy5vcF9iaW5faW50ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpIGFzIF9vcCA9PiBJbnQgfD4gVHlwLm1rX2Zhc3RcbiAgfCAoXG4gICAgICBMZXNzVGhhbiB8IEdyZWF0ZXJUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW5PckVxdWFsIHwgRXF1YWxzIHxcbiAgICAgIE5vdEVxdWFsc1xuICAgICkgYXMgX29wID0+XG4gICAgQm9vbCB8PiBUeXAubWtfZmFzdDtcblxubGV0IHR5cF9leHBfYmlub3BfYmluX2Zsb2F0OiBPcGVyYXRvcnMub3BfYmluX2Zsb2F0ID0+IFR5cC50ID1cbiAgZnVuXG4gIHwgKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpIGFzIF9vcCA9PiBGbG9hdCB8PiBUeXAubWtfZmFzdFxuICB8IChcbiAgICAgIExlc3NUaGFuIHwgR3JlYXRlclRoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbk9yRXF1YWwgfCBFcXVhbHMgfFxuICAgICAgTm90RXF1YWxzXG4gICAgKSBhcyBfb3AgPT5cbiAgICBCb29sIHw+IFR5cC5ta19mYXN0O1xuXG5sZXQgdHlwX2V4cF9iaW5vcF9iaW5fc3RyaW5nOiBPcGVyYXRvcnMub3BfYmluX3N0cmluZyA9PiBUeXAudCA9XG4gIGZ1blxuICB8IENvbmNhdCA9PiBTdHJpbmcgfD4gVHlwLm1rX2Zhc3RcbiAgfCBFcXVhbHMgPT4gQm9vbCB8PiBUeXAubWtfZmFzdDtcblxubGV0IHR5cF9leHBfYmlub3A6IE9wZXJhdG9ycy5vcF9iaW4gPT4gKFR5cC50LCBUeXAudCwgVHlwLnQpID1cbiAgZnVuXG4gIHwgQm9vbChBbmQgfCBPcikgPT4gKFxuICAgICAgQm9vbCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIEJvb2wgfD4gVHlwLm1rX2Zhc3QsXG4gICAgICBCb29sIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgfCBJbnQob3ApID0+IChcbiAgICAgIEludCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIEludCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIHR5cF9leHBfYmlub3BfYmluX2ludChvcCksXG4gICAgKVxuICB8IEZsb2F0KG9wKSA9PiAoXG4gICAgICBGbG9hdCB8PiBUeXAubWtfZmFzdCxcbiAgICAgIEZsb2F0IHw+IFR5cC5ta19mYXN0LFxuICAgICAgdHlwX2V4cF9iaW5vcF9iaW5fZmxvYXQob3ApLFxuICAgIClcbiAgfCBTdHJpbmcob3ApID0+IChcbiAgICAgIFN0cmluZyB8PiBUeXAubWtfZmFzdCxcbiAgICAgIFN0cmluZyB8PiBUeXAubWtfZmFzdCxcbiAgICAgIHR5cF9leHBfYmlub3BfYmluX3N0cmluZyhvcCksXG4gICAgKTtcblxubGV0IHR5cF9leHBfdW5vcDogT3BlcmF0b3JzLm9wX3VuID0+IChUeXAudCwgVHlwLnQpID1cbiAgZnVuXG4gIHwgTWV0YShVbnF1b3RlKSA9PiAoXG4gICAgICBWYXIoXCIkTWV0YVwiKSB8PiBUeXAubWtfZmFzdCxcbiAgICAgIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LFxuICAgIClcbiAgfCBCb29sKE5vdCkgPT4gKEJvb2wgfD4gVHlwLm1rX2Zhc3QsIEJvb2wgfD4gVHlwLm1rX2Zhc3QpXG4gIHwgSW50KE1pbnVzKSA9PiAoSW50IHw+IFR5cC5ta19mYXN0LCBJbnQgfD4gVHlwLm1rX2Zhc3QpO1xuXG5sZXQgcmVjIGFueV90b19pbmZvX21hcCA9XG4gICAgICAgICh+Y3R4OiBDdHgudCwgfmFuY2VzdG9ycywgYW55OiBBbnkudCwgbTogTWFwLnQpOiAoQ29DdHgudCwgTWFwLnQpID0+XG4gIHN3aXRjaCAoYW55KSB7XG4gIHwgRXhwKGUpID0+XG4gICAgbGV0ICh7Y29fY3R4LCBffTogSW5mby5leHAsIG0pID1cbiAgICAgIHVleHBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgZSwgbSk7XG4gICAgKGNvX2N0eCwgbSk7XG4gIHwgUGF0KHApID0+XG4gICAgbGV0IG0gPVxuICAgICAgdXBhdF90b19pbmZvX21hcChcbiAgICAgICAgfmlzX3N5bnN3aXRjaD1mYWxzZSxcbiAgICAgICAgfmNvX2N0eD1Db0N0eC5lbXB0eSxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfmN0eCxcbiAgICAgICAgcCxcbiAgICAgICAgbSxcbiAgICAgIClcbiAgICAgIHw+IHNuZDtcbiAgICAoQ29DdHguZW1wdHksIG0pO1xuICB8IFRQYXQodHApID0+IChcbiAgICAgIENvQ3R4LmVtcHR5LFxuICAgICAgdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdHAsIG0pIHw+IHNuZCxcbiAgICApXG4gIHwgVHlwKHR5KSA9PiAoXG4gICAgICBDb0N0eC5lbXB0eSxcbiAgICAgIHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdHksIG0pIHw+IHNuZCxcbiAgICApXG4gIHwgUnVsKF8pXG4gIHwgTnVsICgpXG4gIHwgQW55ICgpID0+IChDb0N0eC5lbXB0eSwgbSlcbiAgfVxuYW5kIG11bHRpID0gKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcykgPT5cbiAgTGlzdC5mb2xkX2xlZnQoXG4gICAgKChjb19jdHhzLCBtKSwgYW55KSA9PiB7XG4gICAgICBsZXQgKGNvX2N0eCwgbSkgPSBhbnlfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgYW55LCBtKTtcbiAgICAgIChjb19jdHhzIEAgW2NvX2N0eF0sIG0pO1xuICAgIH0sXG4gICAgKFtdLCBtKSxcbiAgICB0bXMsXG4gIClcbmFuZCB1ZXhwX3RvX2luZm9fbWFwID1cbiAgICAoXG4gICAgICB+Y3R4OiBDdHgudCxcbiAgICAgIH5tb2RlPU1vZGUuU3luLFxuICAgICAgfmlzX2luX2ZpbHRlcj1mYWxzZSxcbiAgICAgIH5hbmNlc3RvcnMsXG4gICAgICB7aWRzLCBjb3BpZWQ6IF8sIHRlcm19IGFzIHVleHA6IFVFeHAudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLmV4cCwgTWFwLnQpID0+IHtcbiAgLyogTWF5YmUgc3dpdGNoIG1vZGUgdG8gc3luICovXG4gIGxldCBtb2RlID1cbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICB8IEFuYSh7dGVybTogVW5rbm93bihTeW5Td2l0Y2gpLCBffSkgPT4gTW9kZS5TeW5cbiAgICB8IF8gPT4gbW9kZVxuICAgIH07XG4gIGxldCBhZGQnID0gKH5zZWxmLCB+Y29fY3R4LCBtKSA9PiB7XG4gICAgbGV0IGluZm8gPVxuICAgICAgSW5mby5kZXJpdmVkX2V4cCh+dWV4cCwgfmN0eCwgfm1vZGUsIH5hbmNlc3RvcnMsIH5zZWxmLCB+Y29fY3R4KTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvRXhwKGluZm8pLCBtKSk7XG4gIH07XG4gIGxldCBhZGQgPSAofnNlbGYsIH5jb19jdHgsIG0pID0+IGFkZCcofnNlbGY9Q29tbW9uKHNlbGYpLCB+Y29fY3R4LCBtKTtcbiAgbGV0IGFuY2VzdG9ycyA9IFtVRXhwLnJlcF9pZCh1ZXhwKV0gQCBhbmNlc3RvcnM7XG4gIGxldCB1ZXhwX3RvX2luZm9fbWFwID1cbiAgICAgIChcbiAgICAgICAgfmN0eCxcbiAgICAgICAgfm1vZGU9TW9kZS5TeW4sXG4gICAgICAgIH5pc19pbl9maWx0ZXI9aXNfaW5fZmlsdGVyLFxuICAgICAgICB+YW5jZXN0b3JzPWFuY2VzdG9ycyxcbiAgICAgICAgdWV4cDogVUV4cC50LFxuICAgICAgICBtOiBNYXAudCxcbiAgICAgICkgPT4ge1xuICAgIHVleHBfdG9faW5mb19tYXAofmN0eCwgfm1vZGUsIH5pc19pbl9maWx0ZXIsIH5hbmNlc3RvcnMsIHVleHAsIG0pO1xuICB9O1xuICBsZXQgZ28nID0gdWV4cF90b19pbmZvX21hcCh+YW5jZXN0b3JzKTtcbiAgbGV0IGdvID0gZ28nKH5jdHgpO1xuICBsZXQgbWFwX21fZ28gPSBtID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKChlcywgbSksIG1vZGUsIGUpID0+XG4gICAgICAgIGdvKH5tb2RlLCBlLCBtKSB8PiAoKChlLCBtKSkgPT4gKGVzIEAgW2VdLCBtKSksXG4gICAgICAoW10sIG0pLFxuICAgICk7XG4gIGxldCBnb19wYXQgPSB1cGF0X3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMpO1xuICBsZXQgYXRvbWljID0gc2VsZiA9PiBhZGQofnNlbGYsIH5jb19jdHg9Q29DdHguZW1wdHksIG0pO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBDbG9zdXJlKF8sIGUpID0+XG4gICAgLy8gVE9ETzogaW1wbGVtZW50IGNsb3N1cmUgdHlwZSBjaGVja2luZyBwcm9wZXJseSAtIHNlZSBob3cgZHluYW1pYyB0eXBlIGFzc2lnbm1lbnQgZG9lcyBpdFxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZSwgZSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoZS50eSksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IE11bHRpSG9sZSh0bXMpID0+XG4gICAgbGV0IChjb19jdHhzLCBtKSA9IG11bHRpKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcyk7XG4gICAgYWRkKH5zZWxmPUlzTXVsdGksIH5jb19jdHg9Q29DdHgudW5pb24oY29fY3R4cyksIG0pO1xuICB8IENhc3QoZSwgdDEsIHQyKVxuICB8IEZhaWxlZENhc3QoZSwgdDEsIHQyKSA9PlxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZT1BbmEodDEpLCBlLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdCh0MiksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IEludmFsaWQodG9rZW4pID0+IGF0b21pYyhCYWRUb2tlbih0b2tlbikpXG4gIHwgRW1wdHlIb2xlID0+IGF0b21pYyhKdXN0KFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBEZWZlcnJhbChwb3NpdGlvbikgPT5cbiAgICBhZGQnKH5zZWxmPUlzRGVmZXJyYWwocG9zaXRpb24pLCB+Y29fY3R4PUNvQ3R4LmVtcHR5LCBtKVxuICB8IEJvb2woXykgPT4gYXRvbWljKEp1c3QoQm9vbCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgSW50KF8pID0+IGF0b21pYyhKdXN0KEludCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgRmxvYXQoXykgPT4gYXRvbWljKEp1c3QoRmxvYXQgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IFN0cmluZyhfKSA9PiBhdG9taWMoSnVzdChTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpKVxuICB8IExpc3RMaXQoZXMpID0+XG4gICAgbGV0IGlkcyA9IExpc3QubWFwKFVFeHAucmVwX2lkLCBlcyk7XG4gICAgbGV0IG1vZGVzID0gTW9kZS5vZl9saXN0X2xpdChjdHgsIExpc3QubGVuZ3RoKGVzKSwgbW9kZSk7XG4gICAgbGV0IChlcywgbSkgPSBtYXBfbV9nbyhtLCBtb2RlcywgZXMpO1xuICAgIGxldCB0eXMgPSBMaXN0Lm1hcChJbmZvLmV4cF90eSwgZXMpO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVxuICAgICAgICBTZWxmLmxpc3RsaXQofmVtcHR5PVVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCBjdHgsIHR5cywgaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBlcykpLFxuICAgICAgbSxcbiAgICApO1xuICB8IENvbnMoaGQsIHRsKSA9PlxuICAgIGxldCAoaGQsIG0pID0gZ28ofm1vZGU9TW9kZS5vZl9jb25zX2hkKGN0eCwgbW9kZSksIGhkLCBtKTtcbiAgICBsZXQgKHRsLCBtKSA9IGdvKH5tb2RlPU1vZGUub2ZfY29uc190bChjdHgsIG1vZGUsIGhkLnR5KSwgdGwsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QoTGlzdChoZC50eSkgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihbaGQuY29fY3R4LCB0bC5jb19jdHhdKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICBsZXQgbW9kZSA9IE1vZGUub2ZfbGlzdF9jb25jYXQoY3R4LCBtb2RlKTtcbiAgICBsZXQgaWRzID0gTGlzdC5tYXAoVUV4cC5yZXBfaWQsIFtlMSwgZTJdKTtcbiAgICBsZXQgKGUxLCBtKSA9IGdvKH5tb2RlLCBlMSwgbSk7XG4gICAgbGV0IChlMiwgbSkgPSBnbyh+bW9kZSwgZTIsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubGlzdF9jb25jYXQoY3R4LCBbZTEudHksIGUyLnR5XSwgaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2UxLmNvX2N0eCwgZTIuY29fY3R4XSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgVmFyKG5hbWUpID0+XG4gICAgYWRkJyhcbiAgICAgIH5zZWxmPVNlbGYub2ZfZXhwX3ZhcihjdHgsIG5hbWUpLFxuICAgICAgfmNvX2N0eD1Db0N0eC5zaW5nbGV0b24obmFtZSwgVUV4cC5yZXBfaWQodWV4cCksIE1vZGUudHlfb2YobW9kZSkpLFxuICAgICAgbSxcbiAgICApXG4gIHwgRHluYW1pY0Vycm9ySG9sZShlLCBfKVxuICB8IFBhcmVucyhlKSA9PlxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZSwgZSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoZS50eSksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgZSkgd2hlbiBpc19pbl9maWx0ZXIgPT5cbiAgICBsZXQgZTogVUV4cC50ID0ge1xuICAgICAgaWRzOiBlLmlkcyxcbiAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICB0ZXJtOlxuICAgICAgICBzd2l0Y2ggKGUudGVybSkge1xuICAgICAgICB8IFZhcihcImVcIikgPT4gVUV4cC5Db25zdHJ1Y3RvcihcIiRlXCIpXG4gICAgICAgIHwgVmFyKFwidlwiKSA9PiBVRXhwLkNvbnN0cnVjdG9yKFwiJHZcIilcbiAgICAgICAgfCBfID0+IGUudGVybVxuICAgICAgICB9LFxuICAgIH07XG4gICAgbGV0IHR5X2luID0gVHlwLlZhcihcIiRNZXRhXCIpIHw+IFR5cC5ta19mYXN0O1xuICAgIGxldCB0eV9vdXQgPSBUeXAuVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgbGV0IChlLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IFVuT3Aob3AsIGUpID0+XG4gICAgbGV0ICh0eV9pbiwgdHlfb3V0KSA9IHR5cF9leHBfdW5vcChvcCk7XG4gICAgbGV0IChlLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jb19jdHg9ZS5jb19jdHgsIG0pO1xuICB8IEJpbk9wKG9wLCBlMSwgZTIpID0+XG4gICAgbGV0ICh0eTEsIHR5MiwgdHlfb3V0KSA9IHR5cF9leHBfYmlub3Aob3ApO1xuICAgIGxldCAoZTEsIG0pID0gZ28ofm1vZGU9QW5hKHR5MSksIGUxLCBtKTtcbiAgICBsZXQgKGUyLCBtKSA9IGdvKH5tb2RlPUFuYSh0eTIpLCBlMiwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QodHlfb3V0KSwgfmNvX2N0eD1Db0N0eC51bmlvbihbZTEuY29fY3R4LCBlMi5jb19jdHhdKSwgbSk7XG4gIHwgQnVpbHRpbkZ1bihzdHJpbmcpID0+XG4gICAgYWRkJyhcbiAgICAgIH5zZWxmPVNlbGYub2ZfZXhwX3ZhcihCdWlsdGlucy5jdHhfaW5pdCwgc3RyaW5nKSxcbiAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICBtLFxuICAgIClcbiAgfCBUdXBsZShlcykgPT5cbiAgICBsZXQgbW9kZXMgPSBNb2RlLm9mX3Byb2QoY3R4LCBtb2RlLCBMaXN0Lmxlbmd0aChlcykpO1xuICAgIGxldCAoZXMsIG0pID0gbWFwX21fZ28obSwgbW9kZXMsIGVzKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KFByb2QoTGlzdC5tYXAoSW5mby5leHBfdHksIGVzKSkgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihMaXN0Lm1hcChJbmZvLmV4cF9jb19jdHgsIGVzKSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgVGVzdChlKSA9PlxuICAgIGxldCAoZSwgbSkgPSBnbyh+bW9kZT1BbmEoQm9vbCB8PiBUeXAubWtfZmFzdCksIGUsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KFByb2QoW10pIHw+IFR5cC5ta19mYXN0KSwgfmNvX2N0eD1lLmNvX2N0eCwgbSk7XG4gIHwgRmlsdGVyKEZpbHRlcih7cGF0OiBjb25kLCBffSksIGJvZHkpID0+XG4gICAgbGV0IChjb25kLCBtKSA9IGdvKH5tb2RlLCBjb25kLCBtLCB+aXNfaW5fZmlsdGVyPXRydWUpO1xuICAgIGxldCAoYm9keSwgbSkgPSBnbyh+bW9kZSwgYm9keSwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChib2R5LnR5KSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2NvbmQuY29fY3R4LCBib2R5LmNvX2N0eF0pLFxuICAgICAgbSxcbiAgICApO1xuICB8IEZpbHRlcihSZXNpZHVlKF8pLCBib2R5KSA9PlxuICAgIGxldCAoYm9keSwgbSkgPSBnbyh+bW9kZSwgYm9keSwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoYm9keS50eSksIH5jb19jdHg9Q29DdHgudW5pb24oW2JvZHkuY29fY3R4XSksIG0pO1xuICB8IFNlcShlMSwgZTIpID0+XG4gICAgbGV0IChlMSwgbSkgPSBnbyh+bW9kZT1TeW4sIGUxLCBtKTtcbiAgICBsZXQgKGUyLCBtKSA9IGdvKH5tb2RlLCBlMiwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoZTIudHkpLCB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtlMS5jb19jdHgsIGUyLmNvX2N0eF0pLCBtKTtcbiAgfCBDb25zdHJ1Y3RvcihjdHIpID0+IGF0b21pYyhTZWxmLm9mX2N0cihjdHgsIGN0cikpXG4gIHwgQXAoXywgZm4sIGFyZykgPT5cbiAgICBsZXQgZm5fbW9kZSA9IE1vZGUub2ZfYXAoY3R4LCBtb2RlLCBVRXhwLmN0cl9uYW1lKGZuKSk7XG4gICAgbGV0IChmbiwgbSkgPSBnbyh+bW9kZT1mbl9tb2RlLCBmbiwgbSk7XG4gICAgbGV0ICh0eV9pbiwgdHlfb3V0KSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgZm4udHkpO1xuICAgIGxldCAoYXJnLCBtKSA9IGdvKH5tb2RlPUFuYSh0eV9pbiksIGFyZywgbSk7XG4gICAgbGV0IHNlbGY6IFNlbGYudCA9XG4gICAgICBJZC5pc19udWxsYXJ5X2FwX2ZsYWcoYXJnLnRlcm0uaWRzKVxuICAgICAgJiYgIVR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfaW4sIFByb2QoW10pIHw+IFR5cC5ta19mYXN0KVxuICAgICAgICA/IEJhZFRyaXZBcCh0eV9pbikgOiBKdXN0KHR5X291dCk7XG4gICAgYWRkKH5zZWxmLCB+Y29fY3R4PUNvQ3R4LnVuaW9uKFtmbi5jb19jdHgsIGFyZy5jb19jdHhdKSwgbSk7XG4gIHwgVHlwQXAoZm4sIHV0eXApID0+XG4gICAgbGV0IHR5cGZuX21vZGUgPSBNb2RlLnR5cGFwX21vZGU7XG4gICAgbGV0IChmbiwgbSkgPSBnbyh+bW9kZT10eXBmbl9tb2RlLCBmbiwgbSk7XG4gICAgbGV0IChfLCBtKSA9IHV0eXBfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXR5cCwgbSk7XG4gICAgbGV0IChvcHRpb25fbmFtZSwgdHlfYm9keSkgPSBUeXAubWF0Y2hlZF9mb3JhbGwoY3R4LCBmbi50eSk7XG4gICAgbGV0IHR5ID0gVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgIHN3aXRjaCAob3B0aW9uX25hbWUpIHtcbiAgICB8IFNvbWUobmFtZSkgPT5cbiAgICAgIGFkZCh+c2VsZj1KdXN0KFR5cC5zdWJzdCh0eSwgbmFtZSwgdHlfYm9keSkpLCB+Y29fY3R4PWZuLmNvX2N0eCwgbSlcbiAgICB8IE5vbmUgPT4gYWRkKH5zZWxmPUp1c3QodHlfYm9keSksIH5jb19jdHg9Zm4uY29fY3R4LCBtKSAvKiBpbnZhbGlkIG5hbWUgbWF0Y2hlcyB3aXRoIG5vIGZyZWUgdHlwZSB2YXJpYWJsZXMuICovXG4gICAgfTtcbiAgfCBEZWZlcnJlZEFwKGZuLCBhcmdzKSA9PlxuICAgIGxldCBmbl9tb2RlID0gTW9kZS5vZl9hcChjdHgsIG1vZGUsIFVFeHAuY3RyX25hbWUoZm4pKTtcbiAgICBsZXQgKGZuLCBtKSA9IGdvKH5tb2RlPWZuX21vZGUsIGZuLCBtKTtcbiAgICBsZXQgKHR5X2luLCB0eV9vdXQpID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCBmbi50eSk7XG4gICAgbGV0IG51bV9hcmdzID0gTGlzdC5sZW5ndGgoYXJncyk7XG4gICAgbGV0IHR5X2lucyA9IFR5cC5tYXRjaGVkX2FyZ3MoY3R4LCBudW1fYXJncywgdHlfaW4pO1xuICAgIGxldCBzZWxmOiBTZWxmLmV4cCA9IFNlbGYub2ZfZGVmZXJyZWRfYXAoYXJncywgdHlfaW5zLCB0eV9vdXQpO1xuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfZGVmZXJyZWRfYXBfYXJncyhudW1fYXJncywgdHlfaW5zKTtcbiAgICBsZXQgKGFyZ3MsIG0pID0gbWFwX21fZ28obSwgbW9kZXMsIGFyZ3MpO1xuICAgIGxldCBhcmdfY29fY3R4ID0gQ29DdHgudW5pb24oTGlzdC5tYXAoSW5mby5leHBfY29fY3R4LCBhcmdzKSk7XG4gICAgYWRkJyh+c2VsZiwgfmNvX2N0eD1Db0N0eC51bmlvbihbZm4uY29fY3R4LCBhcmdfY29fY3R4XSksIG0pO1xuICB8IEZ1bihwLCBlLCBfLCBfKSA9PlxuICAgIGxldCAobW9kZV9wYXQsIG1vZGVfYm9keSkgPSBNb2RlLm9mX2Fycm93KGN0eCwgbW9kZSk7XG4gICAgbGV0IChwJywgXykgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9Q29DdHguZW1wdHksIH5tb2RlPW1vZGVfcGF0LCBwLCBtKTtcbiAgICBsZXQgKGUsIG0pID0gZ28nKH5jdHg9cCcuY3R4LCB+bW9kZT1tb2RlX2JvZHksIGUsIG0pO1xuICAgIC8qIGFkZCBjb19jdHggdG8gcGF0dGVybiAqL1xuICAgIGxldCAocCwgbSkgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9ZS5jb19jdHgsIH5tb2RlPW1vZGVfcGF0LCBwLCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KEFycm93KHAudHksIGUudHkpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIH5jb19jdHg9Q29DdHgubWsoY3R4LCBwLmN0eCwgZS5jb19jdHgpLFxuICAgICAgbSxcbiAgICApO1xuICB8IFR5cEZ1bih7dGVybTogVmFyKG5hbWUpLCBffSBhcyB1dHBhdCwgYm9keSwgXylcbiAgICAgIHdoZW4gIUN0eC5zaGFkb3dzX3R5cChjdHgsIG5hbWUpID0+XG4gICAgbGV0IG1vZGVfYm9keSA9IE1vZGUub2ZfZm9yYWxsKGN0eCwgU29tZShuYW1lKSwgbW9kZSk7XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB1dHBhdCwgbSkgfD4gc25kO1xuICAgIGxldCBjdHhfYm9keSA9XG4gICAgICBDdHguZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQ6IFRQYXQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9KTtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28nKH5jdHg9Y3R4X2JvZHksIH5tb2RlPW1vZGVfYm9keSwgYm9keSwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9SnVzdChGb3JhbGwodXRwYXQsIGJvZHkudHkpIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIH5jb19jdHg9Ym9keS5jb19jdHgsXG4gICAgICBtLFxuICAgICk7XG4gIHwgVHlwRnVuKHV0cGF0LCBib2R5LCBfKSA9PlxuICAgIGxldCBtb2RlX2JvZHkgPSBNb2RlLm9mX2ZvcmFsbChjdHgsIE5vbmUsIG1vZGUpO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28ofm1vZGU9bW9kZV9ib2R5LCBib2R5LCBtKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KEZvcmFsbCh1dHBhdCwgYm9keS50eSkgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgfmNvX2N0eD1ib2R5LmNvX2N0eCxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIGxldCAocF9zeW4sIF8pID1cbiAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPXRydWUsIH5jb19jdHg9Q29DdHguZW1wdHksIH5tb2RlPVN5biwgcCwgbSk7XG4gICAgbGV0IChkZWYsIHBfYW5hX2N0eCwgbSwgdHlfcF9hbmEpID1cbiAgICAgIGlmICghaXNfcmVjdXJzaXZlKGN0eCwgcCwgZGVmLCBwX3N5bi50eSkpIHtcbiAgICAgICAgbGV0IChkZWYsIG0pID0gZ28ofm1vZGU9QW5hKHBfc3luLnR5KSwgZGVmLCBtKTtcbiAgICAgICAgbGV0IHR5X3BfYW5hID0gZGVmLnR5O1xuICAgICAgICBsZXQgKHBfYW5hJywgXykgPVxuICAgICAgICAgIGdvX3BhdChcbiAgICAgICAgICAgIH5pc19zeW5zd2l0Y2g9ZmFsc2UsXG4gICAgICAgICAgICB+Y29fY3R4PUNvQ3R4LmVtcHR5LFxuICAgICAgICAgICAgfm1vZGU9QW5hKHR5X3BfYW5hKSxcbiAgICAgICAgICAgIHAsXG4gICAgICAgICAgICBtLFxuICAgICAgICAgICk7XG4gICAgICAgIChkZWYsIHBfYW5hJy5jdHgsIG0sIHR5X3BfYW5hKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCAoZGVmX2Jhc2UsIF8pID1cbiAgICAgICAgICBnbycofmN0eD1wX3N5bi5jdHgsIH5tb2RlPUFuYShwX3N5bi50eSksIGRlZiwgbSk7XG4gICAgICAgIGxldCB0eV9wX2FuYSA9IGRlZl9iYXNlLnR5O1xuICAgICAgICAvKiBBbmFseXplIHBhdHRlcm4gdG8gaW5jb3Jwb3JhdGUgZGVmIHR5cGUgaW50byBjdHggKi9cbiAgICAgICAgbGV0IChwX2FuYScsIF8pID1cbiAgICAgICAgICBnb19wYXQoXG4gICAgICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICAgICAgfmNvX2N0eD1Db0N0eC5lbXB0eSxcbiAgICAgICAgICAgIH5tb2RlPUFuYSh0eV9wX2FuYSksXG4gICAgICAgICAgICBwLFxuICAgICAgICAgICAgbSxcbiAgICAgICAgICApO1xuICAgICAgICBsZXQgZGVmX2N0eCA9IHBfYW5hJy5jdHg7XG4gICAgICAgIGxldCAoZGVmX2Jhc2UyLCBfKSA9IGdvJyh+Y3R4PWRlZl9jdHgsIH5tb2RlPUFuYShwX3N5bi50eSksIGRlZiwgbSk7XG4gICAgICAgIGxldCBhbmFfdHlfZm4gPSAoKHR5X2ZuMSwgdHlfZm4yKSwgdHlfcCkgPT4ge1xuICAgICAgICAgIFR5cC50ZXJtX29mKHR5X3ApID09IFR5cC5Vbmtub3duKFN5blN3aXRjaClcbiAgICAgICAgICAmJiAhVHlwLmVxKHR5X2ZuMSwgdHlfZm4yKVxuICAgICAgICAgICAgPyB0eV9mbjEgOiB0eV9wO1xuICAgICAgICB9O1xuICAgICAgICBsZXQgYW5hID1cbiAgICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgICAgKGRlZl9iYXNlLnR5IHw+IFR5cC50ZXJtX29mLCBkZWZfYmFzZTIudHkgfD4gVHlwLnRlcm1fb2YpLFxuICAgICAgICAgICAgcF9zeW4udHkgfD4gVHlwLnRlcm1fb2YsXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgfCAoKFByb2QodHlfZm5zMSksIFByb2QodHlfZm5zMikpLCBQcm9kKHR5X3BzKSkgPT5cbiAgICAgICAgICAgIGxldCB0eXMgPVxuICAgICAgICAgICAgICBMaXN0Lm1hcDIoYW5hX3R5X2ZuLCBMaXN0LmNvbWJpbmUodHlfZm5zMSwgdHlfZm5zMiksIHR5X3BzKTtcbiAgICAgICAgICAgIFR5cC5Qcm9kKHR5cykgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgICAgICAgfCAoKF8sIF8pLCBfKSA9PiBhbmFfdHlfZm4oKGRlZl9iYXNlLnR5LCBkZWZfYmFzZTIudHkpLCBwX3N5bi50eSlcbiAgICAgICAgICB9O1xuICAgICAgICBsZXQgKGRlZiwgbSkgPSBnbycofmN0eD1kZWZfY3R4LCB+bW9kZT1BbmEoYW5hKSwgZGVmLCBtKTtcbiAgICAgICAgKGRlZiwgZGVmX2N0eCwgbSwgdHlfcF9hbmEpO1xuICAgICAgfTtcbiAgICBsZXQgKGJvZHksIG0pID0gZ28nKH5jdHg9cF9hbmFfY3R4LCB+bW9kZSwgYm9keSwgbSk7XG4gICAgLyogYWRkIGNvX2N0eCB0byBwYXR0ZXJuICovXG4gICAgbGV0IChwX2FuYSwgbSkgPVxuICAgICAgZ29fcGF0KFxuICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICB+Y29fY3R4PWJvZHkuY29fY3R4LFxuICAgICAgICB+bW9kZT1BbmEodHlfcF9hbmEpLFxuICAgICAgICBwLFxuICAgICAgICBtLFxuICAgICAgKTtcbiAgICBhZGQoXG4gICAgICB+c2VsZj1KdXN0KGJvZHkudHkpLFxuICAgICAgfmNvX2N0eD1cbiAgICAgICAgQ29DdHgudW5pb24oW2RlZi5jb19jdHgsIENvQ3R4Lm1rKGN0eCwgcF9hbmEuY3R4LCBib2R5LmNvX2N0eCldKSxcbiAgICAgIG0sXG4gICAgKTtcbiAgfCBGaXhGKHAsIGUsIF8pID0+XG4gICAgbGV0IChwJywgXykgPVxuICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHg9Q29DdHguZW1wdHksIH5tb2RlLCBwLCBtKTtcbiAgICBsZXQgKGUnLCBtKSA9IGdvJyh+Y3R4PXAnLmN0eCwgfm1vZGU9QW5hKHAnLnR5KSwgZSwgbSk7XG4gICAgbGV0IChwJycsIG0pID1cbiAgICAgIGdvX3BhdCh+aXNfc3luc3dpdGNoPWZhbHNlLCB+Y29fY3R4PWUnLmNvX2N0eCwgfm1vZGUsIHAsIG0pO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPUp1c3QocCcudHkpLFxuICAgICAgfmNvX2N0eD1Db0N0eC51bmlvbihbQ29DdHgubWsoY3R4LCBwJycuY3R4LCBlJy5jb19jdHgpXSksXG4gICAgICBtLFxuICAgICk7XG4gIHwgSWYoZTAsIGUxLCBlMikgPT5cbiAgICBsZXQgYnJhbmNoX2lkcyA9IExpc3QubWFwKFVFeHAucmVwX2lkLCBbZTEsIGUyXSk7XG4gICAgbGV0IChjb25kLCBtKSA9IGdvKH5tb2RlPUFuYShCb29sIHw+IFR5cC5ta19mYXN0KSwgZTAsIG0pO1xuICAgIGxldCAoY29ucywgbSkgPSBnbyh+bW9kZSwgZTEsIG0pO1xuICAgIGxldCAoYWx0LCBtKSA9IGdvKH5tb2RlLCBlMiwgbSk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9U2VsZi5tYXRjaChjdHgsIFtjb25zLnR5LCBhbHQudHldLCBicmFuY2hfaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW2NvbmQuY29fY3R4LCBjb25zLmNvX2N0eCwgYWx0LmNvX2N0eF0pLFxuICAgICAgbSxcbiAgICApO1xuICB8IE1hdGNoKHNjcnV0LCBydWxlcykgPT5cbiAgICBsZXQgKHNjcnV0LCBtKSA9IGdvKH5tb2RlPVN5biwgc2NydXQsIG0pO1xuICAgIGxldCAocHMsIGVzKSA9IExpc3Quc3BsaXQocnVsZXMpO1xuICAgIGxldCBicmFuY2hfaWRzID0gTGlzdC5tYXAoVUV4cC5yZXBfaWQsIGVzKTtcbiAgICBsZXQgKHBzJywgXykgPVxuICAgICAgbWFwX20oXG4gICAgICAgIGdvX3BhdChcbiAgICAgICAgICB+aXNfc3luc3dpdGNoPWZhbHNlLFxuICAgICAgICAgIH5jb19jdHg9Q29DdHguZW1wdHksXG4gICAgICAgICAgfm1vZGU9TW9kZS5BbmEoc2NydXQudHkpLFxuICAgICAgICApLFxuICAgICAgICBwcyxcbiAgICAgICAgbSxcbiAgICAgICk7XG4gICAgbGV0IHBfY3R4cyA9IExpc3QubWFwKEluZm8ucGF0X2N0eCwgcHMnKTtcbiAgICBsZXQgKGVzLCBtKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAgICgoZXMsIG0pLCBlLCBjdHgpID0+XG4gICAgICAgICAgZ28nKH5jdHgsIH5tb2RlLCBlLCBtKSB8PiAoKChlLCBtKSkgPT4gKGVzIEAgW2VdLCBtKSksXG4gICAgICAgIChbXSwgbSksXG4gICAgICAgIGVzLFxuICAgICAgICBwX2N0eHMsXG4gICAgICApO1xuICAgIGxldCBlX3R5cyA9IExpc3QubWFwKEluZm8uZXhwX3R5LCBlcyk7XG4gICAgbGV0IGVfY29fY3R4cyA9XG4gICAgICBMaXN0Lm1hcDIoQ29DdHgubWsoY3R4KSwgcF9jdHhzLCBMaXN0Lm1hcChJbmZvLmV4cF9jb19jdHgsIGVzKSk7XG4gICAgLyogQWRkIGNvLWN0eHMgdG8gcGF0dGVybnMgKi9cbiAgICBsZXQgKF8sIG0pID1cbiAgICAgIG1hcF9tKFxuICAgICAgICAoKHAsIGNvX2N0eCkpID0+XG4gICAgICAgICAgZ29fcGF0KH5pc19zeW5zd2l0Y2g9ZmFsc2UsIH5jb19jdHgsIH5tb2RlPU1vZGUuQW5hKHNjcnV0LnR5KSwgcCksXG4gICAgICAgIExpc3QuY29tYmluZShwcywgZV9jb19jdHhzKSxcbiAgICAgICAgbSxcbiAgICAgICk7XG4gICAgYWRkKFxuICAgICAgfnNlbGY9U2VsZi5tYXRjaChjdHgsIGVfdHlzLCBicmFuY2hfaWRzKSxcbiAgICAgIH5jb19jdHg9Q29DdHgudW5pb24oW3NjcnV0LmNvX2N0eF0gQCBlX2NvX2N0eHMpLFxuICAgICAgbSxcbiAgICApO1xuICB8IFR5QWxpYXModHlwYXQsIHV0eXAsIGJvZHkpID0+XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB0eXBhdCwgbSkgfD4gc25kO1xuICAgIHN3aXRjaCAodHlwYXQudGVybSkge1xuICAgIHwgVmFyKG5hbWUpIHdoZW4gIUN0eC5zaGFkb3dzX3R5cChjdHgsIG5hbWUpID0+XG4gICAgICAvKiBDdXJyZW50bHkgd2UgZGlzYWxsb3cgYWxsIHR5cGUgc2hhZG93aW5nICovXG4gICAgICAvKiBOT1RFKGFuZHJldyk6IEN1cnJlbnRseSwgVVR5cC50b190eXAgcmV0dXJucyBVbmtub3duKFR5cGVIb2xlKVxuICAgICAgICAgZm9yIGFueSB0eXBlIHZhcmlhYmxlIHJlZmVyZW5jZSBub3QgaW4gaXRzIGN0eC4gU28gYW55IGZyZWUgdmFyaWFibGVzXG4gICAgICAgICBpbiB0aGUgZGVmaW5pdGlvbiB3b3VsZCBiZSBvYmxpdGVyYXRlZC4gQnV0IHdlIG5lZWQgdG8gY2hlY2sgZm9yIGZyZWVcbiAgICAgICAgIHZhcmlhYmxlcyB0byBkZWNpZGUgd2hldGhlciB0byBtYWtlIGEgcmVjdXJzaXZlIHR5cGUgb3Igbm90LiBTbyB3ZVxuICAgICAgICAgdGVudGF0aXZlbHkgYWRkIGFuIGFidHJhY3QgdHlwZSB0byB0aGUgY3R4LCByZXByZXNlbnRpbmcgdGhlXG4gICAgICAgICBzcGVjdWxhdGl2ZSByZWMgcGFyYW1ldGVyLiAqL1xuICAgICAgbGV0ICh0eV9kZWYsIGN0eF9kZWYsIGN0eF9ib2R5KSA9IHtcbiAgICAgICAgbGV0IHR5X3ByZSA9IFVUeXAudG9fdHlwKEN0eC5leHRlbmRfZHVtbXlfdHZhcihjdHgsIHR5cGF0KSwgdXR5cCk7XG4gICAgICAgIHN3aXRjaCAodXR5cC50ZXJtKSB7XG4gICAgICAgIHwgU3VtKF8pIHdoZW4gTGlzdC5tZW0obmFtZSwgVHlwLmZyZWVfdmFycyh0eV9wcmUpKSA9PlxuICAgICAgICAgIC8qIE5PVEU6IFdoZW4gZGVidWdnaW5nIHR5cGUgc3lzdGVtIGlzc3VlcyBpdCBtYXkgYmUgYmVuZWZpY2lhbCB0b1xuICAgICAgICAgICAgIHVzZSBhIGRpZmZlcmVudCBuYW1lIHRoYW4gdGhlIGFsaWFzIGZvciB0aGUgcmVjdXJzaXZlIHBhcmFtZXRlciAqL1xuICAgICAgICAgIC8vbGV0IHR5X3JlYyA9IFR5cC5SZWMoXCLOsVwiLCBUeXAuc3Vic3QoVmFyKFwizrFcIiksIG5hbWUsIHR5X3ByZSkpO1xuICAgICAgICAgIGxldCB0eV9yZWMgPVxuICAgICAgICAgICAgVHlwLlJlYyhUUGF0LlZhcihuYW1lKSB8PiBJZFRhZ2dlZC5mcmVzaCwgdHlfcHJlKSB8PiBUeXAubWtfZmFzdDtcbiAgICAgICAgICBsZXQgY3R4X2RlZiA9XG4gICAgICAgICAgICBDdHguZXh0ZW5kX2FsaWFzKGN0eCwgbmFtZSwgVFBhdC5yZXBfaWQodHlwYXQpLCB0eV9yZWMpO1xuICAgICAgICAgICh0eV9yZWMsIGN0eF9kZWYsIGN0eF9kZWYpO1xuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBsZXQgdHkgPSBVVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgICAgICAgICh0eSwgY3R4LCBDdHguZXh0ZW5kX2FsaWFzKGN0eCwgbmFtZSwgVFBhdC5yZXBfaWQodHlwYXQpLCB0eSkpO1xuICAgICAgICB9O1xuICAgICAgICAvKiBOT1RFKHl1Y2hlbik6IEJlbG93IGlzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIHRoYXQgYXR0ZW1wdHMgdG9cbiAgICAgICAgICAgYWRkIGEgcmVjIHdoZW5ldmVyIHR5cGUgYWxpYXMgaXMgcHJlc2VudC4gSXQgbWF5IGNhdXNlIHRyb3VibGUgdG8gdGhlXG4gICAgICAgICAgIHJ1bnRpbWUsIHNvIHByZWNlZGUgd2l0aCBjYXV0aW9uLiAqL1xuICAgICAgICAvLyBUeXAubG9va3VwX3N1cmZhY2UodHlfcHJlKVxuICAgICAgICAvLyAgID8ge1xuICAgICAgICAvLyAgICAgbGV0IHR5X3JlYyA9IFR5cC5SZWMoe2l0ZW06IHR5X3ByZSwgbmFtZX0pO1xuICAgICAgICAvLyAgICAgbGV0IGN0eF9kZWYgPSBDdHguYWRkX2FsaWFzKGN0eCwgbmFtZSwgdXRwYXRfaWQodHlwYXQpLCB0eV9yZWMpO1xuICAgICAgICAvLyAgICAgKHR5X3JlYywgY3R4X2RlZiwgY3R4X2RlZik7XG4gICAgICAgIC8vICAgfVxuICAgICAgICAvLyAgIDoge1xuICAgICAgICAvLyAgICAgbGV0IHR5ID0gVGVybS5VVHlwLnRvX3R5cChjdHgsIHV0eXApO1xuICAgICAgICAvLyAgICAgKHR5LCBjdHgsIEN0eC5hZGRfYWxpYXMoY3R4LCBuYW1lLCB1dHBhdF9pZCh0eXBhdCksIHR5KSk7XG4gICAgICAgIC8vICAgfTtcbiAgICAgIH07XG4gICAgICBsZXQgY3R4X2JvZHkgPVxuICAgICAgICBzd2l0Y2ggKFR5cC5nZXRfc3VtX2NvbnN0cnVjdG9ycyhjdHgsIHR5X2RlZikpIHtcbiAgICAgICAgfCBTb21lKHNtKSA9PiBDdHguYWRkX2N0cnMoY3R4X2JvZHksIG5hbWUsIFVUeXAucmVwX2lkKHV0eXApLCBzbSlcbiAgICAgICAgfCBOb25lID0+IGN0eF9ib2R5XG4gICAgICAgIH07XG4gICAgICBsZXQgKHtjb19jdHgsIHR5OiB0eV9ib2R5LCBffTogSW5mby5leHAsIG0pID1cbiAgICAgICAgZ28nKH5jdHg9Y3R4X2JvZHksIH5tb2RlLCBib2R5LCBtKTtcbiAgICAgIC8qIE1ha2Ugc3VyZSB0eXBlcyBkb24ndCBlc2NhcGUgdGhlaXIgc2NvcGUgKi9cbiAgICAgIGxldCB0eV9lc2NhcGUgPSBUeXAuc3Vic3QodHlfZGVmLCB0eXBhdCwgdHlfYm9keSk7XG4gICAgICBsZXQgbSA9IHV0eXBfdG9faW5mb19tYXAofmN0eD1jdHhfZGVmLCB+YW5jZXN0b3JzLCB1dHlwLCBtKSB8PiBzbmQ7XG4gICAgICBhZGQofnNlbGY9SnVzdCh0eV9lc2NhcGUpLCB+Y29fY3R4LCBtKTtcbiAgICB8IFZhcihfKVxuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBNdWx0aUhvbGUoXykgPT5cbiAgICAgIGxldCAoe2NvX2N0eCwgdHk6IHR5X2JvZHksIF99OiBJbmZvLmV4cCwgbSkgPVxuICAgICAgICBnbycofmN0eCwgfm1vZGUsIGJvZHksIG0pO1xuICAgICAgbGV0IG0gPSB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMsIHV0eXAsIG0pIHw+IHNuZDtcbiAgICAgIGFkZCh+c2VsZj1KdXN0KHR5X2JvZHkpLCB+Y29fY3R4LCBtKTtcbiAgICB9O1xuICB9O1xufVxuYW5kIHVwYXRfdG9faW5mb19tYXAgPVxuICAgIChcbiAgICAgIH5pc19zeW5zd2l0Y2gsXG4gICAgICB+Y3R4LFxuICAgICAgfmNvX2N0eCxcbiAgICAgIH5hbmNlc3RvcnM6IEluZm8uYW5jZXN0b3JzLFxuICAgICAgfm1vZGU6IE1vZGUudD1Nb2RlLlN5bixcbiAgICAgIHtpZHMsIHRlcm0sIF99IGFzIHVwYXQ6IFVQYXQudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLnBhdCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9ICh+c2VsZiwgfmN0eCwgbSkgPT4ge1xuICAgIGxldCBwcmV2X3N5bnN3aXRjaCA9XG4gICAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChQYXQucmVwX2lkKHVwYXQpLCBtKSkge1xuICAgICAgfCBTb21lKEluZm8uSW5mb1BhdCh7bW9kZTogU3luIHwgU3luRnVuLCB0eSwgX30pKSA9PiBTb21lKHR5KVxuICAgICAgfCBTb21lKEluZm8uSW5mb1BhdCh7bW9kZTogQW5hKF8pLCBwcmV2X3N5bnN3aXRjaCwgX30pKSA9PiBwcmV2X3N5bnN3aXRjaFxuICAgICAgfCBTb21lKF8pXG4gICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgfTtcbiAgICBsZXQgaW5mbyA9XG4gICAgICBJbmZvLmRlcml2ZWRfcGF0KFxuICAgICAgICB+cHJldl9zeW5zd2l0Y2gsXG4gICAgICAgIH51cGF0LFxuICAgICAgICB+Y3R4LFxuICAgICAgICB+Y29fY3R4LFxuICAgICAgICB+bW9kZSxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfnNlbGY9Q29tbW9uKHNlbGYpLFxuICAgICAgKTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvUGF0KGluZm8pLCBtKSk7XG4gIH07XG4gIGxldCBhdG9taWMgPSBzZWxmID0+IGFkZCh+c2VsZiwgfmN0eCwgbSk7XG4gIGxldCBhbmNlc3RvcnMgPSBbVVBhdC5yZXBfaWQodXBhdCldIEAgYW5jZXN0b3JzO1xuICBsZXQgZ28gPSB1cGF0X3RvX2luZm9fbWFwKH5pc19zeW5zd2l0Y2gsIH5hbmNlc3RvcnMsIH5jb19jdHgpO1xuICBsZXQgdW5rbm93biA9IFR5cC5Vbmtub3duKGlzX3N5bnN3aXRjaCA/IFN5blN3aXRjaCA6IEludGVybmFsKTtcbiAgbGV0IGN0eF9mb2xkID0gKGN0eDogQ3R4LnQsIG0pID0+XG4gICAgTGlzdC5mb2xkX2xlZnQyKFxuICAgICAgKChjdHgsIHR5cywgbSksIGUsIG1vZGUpID0+XG4gICAgICAgIGdvKH5jdHgsIH5tb2RlLCBlLCBtKVxuICAgICAgICB8PiAoKChpbmZvLCBtKSkgPT4gKGluZm8uY3R4LCB0eXMgQCBbaW5mby50eV0sIG0pKSxcbiAgICAgIChjdHgsIFtdLCBtKSxcbiAgICApO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgfCBNdWx0aUhvbGUodG1zKSA9PlxuICAgIGxldCAoXywgbSkgPSBtdWx0aSh+Y3R4LCB+YW5jZXN0b3JzLCBtLCB0bXMpO1xuICAgIGFkZCh+c2VsZj1Jc011bHRpLCB+Y3R4LCBtKTtcbiAgfCBJbnZhbGlkKHRva2VuKSA9PiBhdG9taWMoQmFkVG9rZW4odG9rZW4pKVxuICB8IEVtcHR5SG9sZSA9PiBhdG9taWMoSnVzdCh1bmtub3duIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBJbnQoXykgPT4gYXRvbWljKEp1c3QoSW50IHw+IFR5cC5ta19mYXN0KSlcbiAgfCBGbG9hdChfKSA9PiBhdG9taWMoSnVzdChGbG9hdCB8PiBUeXAubWtfZmFzdCkpXG4gIHwgQm9vbChfKSA9PiBhdG9taWMoSnVzdChCb29sIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBTdHJpbmcoXykgPT4gYXRvbWljKEp1c3QoU3RyaW5nIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBMaXN0TGl0KHBzKSA9PlxuICAgIGxldCBpZHMgPSBMaXN0Lm1hcChVUGF0LnJlcF9pZCwgcHMpO1xuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfbGlzdF9saXQoY3R4LCBMaXN0Lmxlbmd0aChwcyksIG1vZGUpO1xuICAgIGxldCAoY3R4LCB0eXMsIG0pID0gY3R4X2ZvbGQoY3R4LCBtLCBwcywgbW9kZXMpO1xuICAgIGFkZChcbiAgICAgIH5zZWxmPVNlbGYubGlzdGxpdCh+ZW1wdHk9dW5rbm93biB8PiBUeXAubWtfZmFzdCwgY3R4LCB0eXMsIGlkcyksXG4gICAgICB+Y3R4LFxuICAgICAgbSxcbiAgICApO1xuICB8IENvbnMoaGQsIHRsKSA9PlxuICAgIGxldCAoaGQsIG0pID0gZ28ofmN0eCwgfm1vZGU9TW9kZS5vZl9jb25zX2hkKGN0eCwgbW9kZSksIGhkLCBtKTtcbiAgICBsZXQgKHRsLCBtKSA9XG4gICAgICBnbyh+Y3R4PWhkLmN0eCwgfm1vZGU9TW9kZS5vZl9jb25zX3RsKGN0eCwgbW9kZSwgaGQudHkpLCB0bCwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoTGlzdChoZC50eSkgfD4gVHlwLm1rX2Zhc3QpLCB+Y3R4PXRsLmN0eCwgbSk7XG4gIHwgV2lsZCA9PiBhdG9taWMoSnVzdCh1bmtub3duIHw+IFR5cC5ta19mYXN0KSlcbiAgfCBWYXIobmFtZSkgPT5cbiAgICAvKiBOT1RFOiBUaGUgc2VsZiB0eXBlIGFzc2lnbmVkIHRvIHBhdHRlcm4gdmFyaWFibGVzIChVbmtub3duKVxuICAgICAgIG1heSBiZSBTeW5Td2l0Y2gsIGJ1dCBTeW5Td2l0Y2ggaXMgbmV2ZXIgYWRkZWQgdG8gdGhlIGNvbnRleHQ7XG4gICAgICAgVW5rbm93bihJbnRlcm5hbCkgaXMgdXNlZCBpbiB0aGlzIGNhc2UgKi9cbiAgICBsZXQgY3R4X3R5cCA9XG4gICAgICBJbmZvLmZpeGVkX3R5cF9wYXQoXG4gICAgICAgIGN0eCxcbiAgICAgICAgbW9kZSxcbiAgICAgICAgQ29tbW9uKEp1c3QoVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpKSxcbiAgICAgICk7XG4gICAgbGV0IGVudHJ5ID0gQ3R4LlZhckVudHJ5KHtuYW1lLCBpZDogVVBhdC5yZXBfaWQodXBhdCksIHR5cDogY3R4X3R5cH0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHVua25vd24gfD4gVHlwLm1rX2Zhc3QpLCB+Y3R4PUN0eC5leHRlbmQoY3R4LCBlbnRyeSksIG0pO1xuICB8IFR1cGxlKHBzKSA9PlxuICAgIGxldCBtb2RlcyA9IE1vZGUub2ZfcHJvZChjdHgsIG1vZGUsIExpc3QubGVuZ3RoKHBzKSk7XG4gICAgbGV0IChjdHgsIHR5cywgbSkgPSBjdHhfZm9sZChjdHgsIG0sIHBzLCBtb2Rlcyk7XG4gICAgYWRkKH5zZWxmPUp1c3QoUHJvZCh0eXMpIHw+IFR5cC5ta19mYXN0KSwgfmN0eCwgbSk7XG4gIHwgUGFyZW5zKHApID0+XG4gICAgbGV0IChwLCBtKSA9IGdvKH5jdHgsIH5tb2RlLCBwLCBtKTtcbiAgICBhZGQofnNlbGY9SnVzdChwLnR5KSwgfmN0eD1wLmN0eCwgbSk7XG4gIHwgQ29uc3RydWN0b3IoY3RyKSA9PiBhdG9taWMoU2VsZi5vZl9jdHIoY3R4LCBjdHIpKVxuICB8IEFwKGZuLCBhcmcpID0+XG4gICAgbGV0IGZuX21vZGUgPSBNb2RlLm9mX2FwKGN0eCwgbW9kZSwgVVBhdC5jdHJfbmFtZShmbikpO1xuICAgIGxldCAoZm4sIG0pID0gZ28ofmN0eCwgfm1vZGU9Zm5fbW9kZSwgZm4sIG0pO1xuICAgIGxldCAodHlfaW4sIHR5X291dCkgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIGZuLnR5KTtcbiAgICBsZXQgKGFyZywgbSkgPSBnbyh+Y3R4LCB+bW9kZT1BbmEodHlfaW4pLCBhcmcsIG0pO1xuICAgIGFkZCh+c2VsZj1KdXN0KHR5X291dCksIH5jdHg9YXJnLmN0eCwgbSk7XG4gIHwgQ2FzdChwLCBhbm4sIF8pID0+XG4gICAgbGV0IChhbm4sIG0pID0gdXR5cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCBhbm4sIG0pO1xuICAgIGxldCAocCwgbSkgPSBnbyh+Y3R4LCB+bW9kZT1BbmEoYW5uLnR5KSwgcCwgbSk7XG4gICAgYWRkKH5zZWxmPUp1c3QoYW5uLnR5KSwgfmN0eD1wLmN0eCwgbSk7XG4gIH07XG59XG5hbmQgdXR5cF90b19pbmZvX21hcCA9XG4gICAgKFxuICAgICAgfmN0eCxcbiAgICAgIH5leHBlY3RzPUluZm8uVHlwZUV4cGVjdGVkLFxuICAgICAgfmFuY2VzdG9ycyxcbiAgICAgIHtpZHMsIHRlcm0sIF99IGFzIHV0eXA6IFVUeXAudCxcbiAgICAgIG06IE1hcC50LFxuICAgIClcbiAgICA6IChJbmZvLnR5cCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9IG0gPT4ge1xuICAgIGxldCBpbmZvID0gSW5mby5kZXJpdmVkX3R5cCh+dXR5cCwgfmN0eCwgfmFuY2VzdG9ycywgfmV4cGVjdHMpO1xuICAgIChpbmZvLCBhZGRfaW5mbyhpZHMsIEluZm9UeXAoaW5mbyksIG0pKTtcbiAgfTtcbiAgbGV0IGFuY2VzdG9ycyA9IFtVVHlwLnJlcF9pZCh1dHlwKV0gQCBhbmNlc3RvcnM7XG4gIGxldCBnbycgPSB1dHlwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnMpO1xuICBsZXQgZ28gPSBnbycofmV4cGVjdHM9VHlwZUV4cGVjdGVkKTtcbiAgLy9UT0RPKGFuZHJldyk6IG1ha2UgdGhpcyByZXR1cm4gZnJlZSwgcmVwbGFjaW5nIFR5cC5mcmVlX3ZhcnNcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZSh0bXMpKSkgPT5cbiAgICBsZXQgKF8sIG0pID0gbXVsdGkofmN0eCwgfmFuY2VzdG9ycywgbSwgdG1zKTtcbiAgICBhZGQobSk7XG4gIHwgVW5rbm93bihfKVxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZyA9PiBhZGQobSlcbiAgfCBWYXIoXykgPT5cbiAgICAvKiBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gSW5mby5zdGF0dXNfdHlwICovXG4gICAgYWRkKG0pXG4gIHwgTGlzdCh0KVxuICB8IFBhcmVucyh0KSA9PiBhZGQoZ28odCwgbSkgfD4gc25kKVxuICB8IEFycm93KHQxLCB0MikgPT5cbiAgICBsZXQgbSA9IGdvKHQxLCBtKSB8PiBzbmQ7XG4gICAgbGV0IG0gPSBnbyh0MiwgbSkgfD4gc25kO1xuICAgIGFkZChtKTtcbiAgfCBQcm9kKHRzKSA9PlxuICAgIGxldCBtID0gbWFwX20oZ28sIHRzLCBtKSB8PiBzbmQ7XG4gICAgYWRkKG0pO1xuICB8IEFwKHQxLCB0MikgPT5cbiAgICBsZXQgdHlfaW4gPSBVVHlwLnRvX3R5cChjdHgsIHQyKTtcbiAgICBsZXQgdDFfbW9kZTogSW5mby50eXBfZXhwZWN0cyA9XG4gICAgICBzd2l0Y2ggKGV4cGVjdHMpIHtcbiAgICAgIHwgVmFyaWFudEV4cGVjdGVkKG0sIHN1bV90eSkgPT5cbiAgICAgICAgQ29uc3RydWN0b3JFeHBlY3RlZChtLCBBcnJvdyh0eV9pbiwgc3VtX3R5KSB8PiBUeXAubWtfZmFzdClcbiAgICAgIHwgXyA9PlxuICAgICAgICBDb25zdHJ1Y3RvckV4cGVjdGVkKFxuICAgICAgICAgIFVuaXF1ZSxcbiAgICAgICAgICBBcnJvdyh0eV9pbiwgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgICApXG4gICAgICB9O1xuICAgIGxldCBtID0gZ28nKH5leHBlY3RzPXQxX21vZGUsIHQxLCBtKSB8PiBzbmQ7XG4gICAgbGV0IG0gPSBnbycofmV4cGVjdHM9VHlwZUV4cGVjdGVkLCB0MiwgbSkgfD4gc25kO1xuICAgIGFkZChtKTtcbiAgfCBTdW0odmFyaWFudHMpID0+XG4gICAgbGV0IHR5X3N1bSA9IFVUeXAudG9fdHlwKGN0eCwgdXR5cCk7XG4gICAgbGV0IChtLCBfKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgdmFyaWFudF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB+dHlfc3VtKSxcbiAgICAgICAgKG0sIFtdKSxcbiAgICAgICAgdmFyaWFudHMsXG4gICAgICApO1xuICAgIGFkZChtKTtcbiAgfCBGb3JhbGwoe3Rlcm06IFZhcihuYW1lKSwgX30gYXMgdXRwYXQsIHRib2R5KSA9PlxuICAgIGxldCBib2R5X2N0eCA9XG4gICAgICBDdHguZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQ6IFRQYXQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9KTtcbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKFxuICAgICAgICB0Ym9keSxcbiAgICAgICAgfmN0eD1ib2R5X2N0eCxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfmV4cGVjdHM9VHlwZUV4cGVjdGVkLFxuICAgICAgICBtLFxuICAgICAgKVxuICAgICAgfD4gc25kO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7IC8vIFRPRE86IGNoZWNrIHdpdGggYW5kcmV3XG4gIHwgRm9yYWxsKHV0cGF0LCB0Ym9keSkgPT5cbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKHRib2R5LCB+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cz1UeXBlRXhwZWN0ZWQsIG0pXG4gICAgICB8PiBzbmQ7XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB1dHBhdCwgbSkgfD4gc25kO1xuICAgIGFkZChtKTsgLy8gVE9ETzogY2hlY2sgd2l0aCBhbmRyZXdcbiAgfCBSZWMoe3Rlcm06IFZhcihuYW1lKSwgX30gYXMgdXRwYXQsIHRib2R5KSA9PlxuICAgIGxldCBib2R5X2N0eCA9XG4gICAgICBDdHguZXh0ZW5kX3R2YXIoY3R4LCB7bmFtZSwgaWQ6IFRQYXQucmVwX2lkKHV0cGF0KSwga2luZDogQWJzdHJhY3R9KTtcbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKFxuICAgICAgICB0Ym9keSxcbiAgICAgICAgfmN0eD1ib2R5X2N0eCxcbiAgICAgICAgfmFuY2VzdG9ycyxcbiAgICAgICAgfmV4cGVjdHM9VHlwZUV4cGVjdGVkLFxuICAgICAgICBtLFxuICAgICAgKVxuICAgICAgfD4gc25kO1xuICAgIGxldCBtID0gdXRwYXRfdG9faW5mb19tYXAofmN0eCwgfmFuY2VzdG9ycywgdXRwYXQsIG0pIHw+IHNuZDtcbiAgICBhZGQobSk7IC8vIFRPRE86IGNoZWNrIHdpdGggYW5kcmV3XG4gIHwgUmVjKHV0cGF0LCB0Ym9keSkgPT5cbiAgICBsZXQgbSA9XG4gICAgICB1dHlwX3RvX2luZm9fbWFwKHRib2R5LCB+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cz1UeXBlRXhwZWN0ZWQsIG0pXG4gICAgICB8PiBzbmQ7XG4gICAgbGV0IG0gPSB1dHBhdF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB1dHBhdCwgbSkgfD4gc25kO1xuICAgIGFkZChtKTsgLy8gVE9ETzogY2hlY2sgd2l0aCBhbmRyZXdcbiAgfTtcbn1cbmFuZCB1dHBhdF90b19pbmZvX21hcCA9XG4gICAgKH5jdHgsIH5hbmNlc3RvcnMsIHtpZHMsIHRlcm0sIF99IGFzIHV0cGF0OiBUUGF0LnQsIG06IE1hcC50KVxuICAgIDogKEluZm8udHBhdCwgTWFwLnQpID0+IHtcbiAgbGV0IGFkZCA9IG0gPT4ge1xuICAgIGxldCBpbmZvID0gSW5mby5kZXJpdmVkX3RwYXQofnV0cGF0LCB+Y3R4LCB+YW5jZXN0b3JzKTtcbiAgICAoaW5mbywgYWRkX2luZm8oaWRzLCBJbmZvVFBhdChpbmZvKSwgbSkpO1xuICB9O1xuICBsZXQgYW5jZXN0b3JzID0gW1RQYXQucmVwX2lkKHV0cGF0KV0gQCBhbmNlc3RvcnM7XG4gIHN3aXRjaCAodGVybSkge1xuICB8IE11bHRpSG9sZSh0bXMpID0+XG4gICAgbGV0IChfLCBtKSA9IG11bHRpKH5jdHgsIH5hbmNlc3RvcnMsIG0sIHRtcyk7XG4gICAgYWRkKG0pO1xuICB8IEludmFsaWQoXylcbiAgfCBFbXB0eUhvbGVcbiAgfCBWYXIoXykgPT4gYWRkKG0pXG4gIH07XG59XG5hbmQgdmFyaWFudF90b19pbmZvX21hcCA9XG4gICAgKFxuICAgICAgfmN0eCxcbiAgICAgIH5hbmNlc3RvcnMsXG4gICAgICB+dHlfc3VtLFxuICAgICAgKG0sIGN0cnMpLFxuICAgICAgdXR5OiBDb25zdHJ1Y3Rvck1hcC52YXJpYW50KFVUeXAudCksXG4gICAgKSA9PiB7XG4gIGxldCBnbyA9IGV4cGVjdHMgPT4gdXR5cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzLCB+ZXhwZWN0cyk7XG4gIHN3aXRjaCAodXR5KSB7XG4gIHwgQmFkRW50cnkodXR5KSA9PlxuICAgIGxldCBtID0gZ28oVmFyaWFudEV4cGVjdGVkKFVuaXF1ZSwgdHlfc3VtKSwgdXR5LCBtKSB8PiBzbmQ7XG4gICAgKG0sIGN0cnMpO1xuICB8IFZhcmlhbnQoY3RyLCBpZHMsIHBhcmFtKSA9PlxuICAgIGxldCBtID1cbiAgICAgIGdvKFxuICAgICAgICBDb25zdHJ1Y3RvckV4cGVjdGVkKFxuICAgICAgICAgIExpc3QubWVtKGN0ciwgY3RycykgPyBEdXBsaWNhdGUgOiBVbmlxdWUsXG4gICAgICAgICAgdHlfc3VtLFxuICAgICAgICApLFxuICAgICAgICB7dGVybTogVmFyKGN0ciksIGlkcywgY29waWVkOiBmYWxzZX0sXG4gICAgICAgIG0sXG4gICAgICApXG4gICAgICB8PiBzbmQ7XG4gICAgbGV0IG0gPVxuICAgICAgc3dpdGNoIChwYXJhbSkge1xuICAgICAgfCBTb21lKHBhcmFtX3R5KSA9PiBnbyhUeXBlRXhwZWN0ZWQsIHBhcmFtX3R5LCBtKSB8PiBzbmRcbiAgICAgIHwgTm9uZSA9PiBtXG4gICAgICB9O1xuICAgIChtLCBbY3RyLCAuLi5jdHJzXSk7XG4gIH07XG59O1xuXG5sZXQgZ2V0X2Vycm9yX2F0ID0gKGluZm9fbWFwOiBNYXAudCwgaWQ6IElkLnQpID0+IHtcbiAgaWRcbiAgfD4gSWQuTWFwLmZpbmRfb3B0KF8sIGluZm9fbWFwKVxuICB8PiBPcHRpb24uYmluZChcbiAgICAgICBfLFxuICAgICAgIGZ1blxuICAgICAgIHwgSW5mb0V4cChlKSA9PiBTb21lKGUpXG4gICAgICAgfCBfID0+IE5vbmUsXG4gICAgIClcbiAgfD4gT3B0aW9uLmJpbmQoXywgZSA9PlxuICAgICAgIHN3aXRjaCAoZS5zdGF0dXMpIHtcbiAgICAgICB8IEluSG9sZShlcnJfaW5mbykgPT4gU29tZShlcnJfaW5mbylcbiAgICAgICB8IE5vdEluSG9sZShfKSA9PiBOb25lXG4gICAgICAgfVxuICAgICApO1xufTtcblxubGV0IGdldF9wYXRfZXJyb3JfYXQgPSAoaW5mb19tYXA6IE1hcC50LCBpZDogSWQudCkgPT4ge1xuICBpZFxuICB8PiBJZC5NYXAuZmluZF9vcHQoXywgaW5mb19tYXApXG4gIHw+IE9wdGlvbi5iaW5kKFxuICAgICAgIF8sXG4gICAgICAgZnVuXG4gICAgICAgfCBJbmZvUGF0KGUpID0+IFNvbWUoZSlcbiAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgKVxuICB8PiBPcHRpb24uYmluZChfLCBlID0+XG4gICAgICAgc3dpdGNoIChlLnN0YXR1cykge1xuICAgICAgIHwgSW5Ib2xlKGVycl9pbmZvKSA9PiBTb21lKGVycl9pbmZvKVxuICAgICAgIHwgTm90SW5Ib2xlKF8pID0+IE5vbmVcbiAgICAgICB9XG4gICAgICk7XG59O1xuXG5sZXQgY29sbGVjdF9lcnJvcnMgPSAobWFwOiBNYXAudCk6IGxpc3QoKElkLnQsIEluZm8uZXJyb3IpKSA9PlxuICBJZC5NYXAuZm9sZChcbiAgICAoaWQsIGluZm86IEluZm8udCwgYWNjKSA9PlxuICAgICAgT3B0aW9uLnRvX2xpc3QoSW5mby5lcnJvcl9vZihpbmZvKSB8PiBPcHRpb24ubWFwKHggPT4gKGlkLCB4KSkpIEAgYWNjLFxuICAgIG1hcCxcbiAgICBbXSxcbiAgKTtcbiIsImluY2x1ZGUgUGF0O1xuXG4vKiBBIER5bmFtaWMgUGF0dGVybiAoREhQYXQpIGlzIGEgcGF0dGVybiB0aGF0IGlzIHBhcnQgb2YgYW4gZXhwcmVzc2lvblxuICAgdGhhdCBoYXMgYmVlbiB0eXBlLWNoZWNrZWQuIEhlbmNlIHdoeSB0aGVzZSBmdW5jdGlvbnMgdGFrZSBib3RoIGFcbiAgIHBhdHRlcm4sIGRwLCBhbmQgYW4gaW5mbyBtYXAsIG0sIHdpdGggdHlwZSBpbmZvcm1hdGlvbi4gKi9cblxuLyoqXG4gKiBXaGV0aGVyIGRwIGNvbnRhaW5zIHRoZSB2YXJpYWJsZSB4IG91dHNpZGUgb2YgYSBob2xlLlxuICovXG5sZXQgcmVjIGJpbmRzX3ZhciA9IChtOiBTdGF0aWNzLk1hcC50LCB4OiBWYXIudCwgZHA6IHQpOiBib29sID0+XG4gIHN3aXRjaCAoU3RhdGljcy5nZXRfcGF0X2Vycm9yX2F0KG0sIHJlcF9pZChkcCkpKSB7XG4gIHwgU29tZShfKSA9PiBmYWxzZVxuICB8IE5vbmUgPT5cbiAgICBzd2l0Y2ggKGRwIHw+IHRlcm1fb2YpIHtcbiAgICB8IEVtcHR5SG9sZVxuICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgfCBXaWxkXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBJbnQoXylcbiAgICB8IEZsb2F0KF8pXG4gICAgfCBCb29sKF8pXG4gICAgfCBTdHJpbmcoXylcbiAgICB8IENvbnN0cnVjdG9yKF8pID0+IGZhbHNlXG4gICAgfCBDYXN0KHksIF8sIF8pXG4gICAgfCBQYXJlbnMoeSkgPT4gYmluZHNfdmFyKG0sIHgsIHkpXG4gICAgfCBWYXIoeSkgPT4gVmFyLmVxKHgsIHkpXG4gICAgfCBUdXBsZShkcHMpID0+IGRwcyB8PiBMaXN0LmV4aXN0cyhiaW5kc192YXIobSwgeCkpXG4gICAgfCBDb25zKGRwMSwgZHAyKSA9PiBiaW5kc192YXIobSwgeCwgZHAxKSB8fCBiaW5kc192YXIobSwgeCwgZHAyKVxuICAgIHwgTGlzdExpdChkX2xpc3QpID0+XG4gICAgICBsZXQgbmV3X2xpc3QgPSBMaXN0Lm1hcChiaW5kc192YXIobSwgeCksIGRfbGlzdCk7XG4gICAgICBMaXN0LmZvbGRfbGVmdCgofHwpLCBmYWxzZSwgbmV3X2xpc3QpO1xuICAgIHwgQXAoXywgXykgPT4gZmFsc2VcbiAgICB9XG4gIH07XG5cbmxldCByZWMgYm91bmRfdmFycyA9IChkcDogdCk6IGxpc3QoVmFyLnQpID0+XG4gIHN3aXRjaCAoZHAgfD4gdGVybV9vZikge1xuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZShfKVxuICB8IFdpbGRcbiAgfCBJbnZhbGlkKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gW11cbiAgfCBDYXN0KHksIF8sIF8pXG4gIHwgUGFyZW5zKHkpID0+IGJvdW5kX3ZhcnMoeSlcbiAgfCBWYXIoeSkgPT4gW3ldXG4gIHwgVHVwbGUoZHBzKSA9PiBMaXN0LmZsYXR0ZW4oTGlzdC5tYXAoYm91bmRfdmFycywgZHBzKSlcbiAgfCBDb25zKGRwMSwgZHAyKSA9PiBib3VuZF92YXJzKGRwMSkgQCBib3VuZF92YXJzKGRwMilcbiAgfCBMaXN0TGl0KGRwcykgPT4gTGlzdC5mbGF0dGVuKExpc3QubWFwKGJvdW5kX3ZhcnMsIGRwcykpXG4gIHwgQXAoXywgZHAxKSA9PiBib3VuZF92YXJzKGRwMSlcbiAgfTtcbiIsIm9wZW4gVXRpbDtcblxuLyogVGhlIGNhc3QgY2FsY3VsdXMgaXMgYmFzZWQgb2ZmIHRoZSBQT1BMIDIwMTkgcGFwZXI6XG4gICBodHRwczovL2FyeGl2Lm9yZy9wZGYvMTgwNS4wMDE1NS5wZGYgKi9cblxuLyogR1JPVU5EIFRZUEVTICovXG5cbi8qIFlvdSBjYW4gdGhpbmsgb2YgYSBncm91bmQgdHlwZSBhcyBhIHR5cGV0IHRoYXQgdGVsbHMgeW91IHdoYXQgdGhlIHJvb3Qgb2YgdGhlXG4gICAgICB0eXBlIGV4cHJlc3Npb24gaXMsIGJ1dCBub3RoaW5nIG1vcmUuIEZvciBleGFtcGxlOiBJbnQsIFs/XSwgPyAtPiA/LCAuLi4gYXJlXG4gICAgICBncm91bmQgdHlwZXMgYW5kIFtJbnRdLCA/IC0+IEZsb2F0IGFyZSBub3QuXG5cbiAgICAgIFRoZSBtb3N0IGltcG9ydGFudCBwcm9wZXJ0eSBvZiBncm91bmQgdHlwZXMgaXM6XG4gICAgICAgICAgSWYgdHdvIHR5cGVzIGFyZSBncm91bmQgdHlwZXMsXG4gICAgICAgICAgYW5kIHRoZSB0d28gdHlwZXMgYXJlIGNvbnNpc3RlbnQsXG4gICAgICAgICAgdGhlbiB0aGV5IGFyZSBlcXVhbC5cblxuICAgICAgIE1ha2Ugc3VyZSB0aGlzIGhvbGRzIGZvciB5b3VyIG5ldyBmZWF0dXJlISFcblxuICAgICAgIGUuZy4gWz9dIGFuZCBbP10gYXJlIGVxdWFsLCBidXQgWz9dIGFuZCBbSW50XSBhcmUgbm90IChiZWNhdXNlIFtJbnRdIGlzIG5vdFxuICAgICAgIGdyb3VuZCwgZXZlbiB0aG91Z2ggW0ludF0gYW5kIFs/XSBhcmUgY29uc2lzdGVudCkuXG5cbiAgICovXG5cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgZ3JvdW5kX2Nhc2VzID1cbiAgfCBIb2xlXG4gIHwgR3JvdW5kXG4gIHwgTm90R3JvdW5kT3JIb2xlKFR5cC50KSAvKiB0aGUgYXJndW1lbnQgaXMgdGhlIGNvcnJlc3BvbmRpbmcgZ3JvdW5kIHR5cGUgKi87XG5cbmxldCBncm91bmRlZF9BcnJvdyA9XG4gIE5vdEdyb3VuZE9ySG9sZShcbiAgICBBcnJvdyhcbiAgICAgIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsXG4gICAgKVxuICAgIHw+IFR5cC5ta19mYXN0LFxuICApO1xubGV0IGdyb3VuZGVkX0ZvcmFsbCA9XG4gIE5vdEdyb3VuZE9ySG9sZShcbiAgICBGb3JhbGwoRW1wdHlIb2xlIHw+IFRQYXQuZnJlc2gsIFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KVxuICAgIHw+IFR5cC5ta19mYXN0LFxuICApO1xubGV0IGdyb3VuZGVkX1Byb2QgPSBsZW5ndGggPT5cbiAgTm90R3JvdW5kT3JIb2xlKFxuICAgIFByb2QoTGlzdFV0aWwucmVwbGljYXRlKGxlbmd0aCwgVHlwLlVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSlcbiAgICB8PiBUeXAubWtfZmFzdCxcbiAgKTtcbmxldCBncm91bmRlZF9TdW06IHVuaXQgPT4gVHlwLnN1bV9tYXAgPVxuICAoKSA9PiBbQmFkRW50cnkoVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKV07XG5sZXQgZ3JvdW5kZWRfTGlzdCA9XG4gIE5vdEdyb3VuZE9ySG9sZShMaXN0KFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0KSB8PiBUeXAubWtfZmFzdCk7XG5cbmxldCByZWMgZ3JvdW5kX2Nhc2VzX29mID0gKHR5OiBUeXAudCk6IGdyb3VuZF9jYXNlcyA9PiB7XG4gIGxldCBpc19ob2xlOiBUeXAudCA9PiBib29sID1cbiAgICBmdW5cbiAgICB8IHt0ZXJtOiBUeXAuVW5rbm93bihfKSwgX30gPT4gdHJ1ZVxuICAgIHwgXyA9PiBmYWxzZTtcbiAgc3dpdGNoIChUeXAudGVybV9vZih0eSkpIHtcbiAgfCBVbmtub3duKF8pID0+IEhvbGVcbiAgfCBCb29sXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBTdHJpbmdcbiAgfCBWYXIoXylcbiAgfCBSZWMoXylcbiAgfCBGb3JhbGwoXywge3Rlcm06IFVua25vd24oXyksIF99KVxuICB8IEFycm93KHt0ZXJtOiBVbmtub3duKF8pLCBffSwge3Rlcm06IFVua25vd24oXyksIF99KVxuICB8IExpc3Qoe3Rlcm06IFVua25vd24oXyksIF99KSA9PiBHcm91bmRcbiAgfCBQYXJlbnModHkpID0+IGdyb3VuZF9jYXNlc19vZih0eSlcbiAgfCBQcm9kKHR5cykgPT5cbiAgICBpZiAoTGlzdC5mb3JfYWxsKFxuICAgICAgICAgIGZ1blxuICAgICAgICAgIHwgKHt0ZXJtOiBUeXAuVW5rbm93bihfKSwgX306IFR5cC50KSA9PiB0cnVlXG4gICAgICAgICAgfCBfID0+IGZhbHNlLFxuICAgICAgICAgIHR5cyxcbiAgICAgICAgKSkge1xuICAgICAgR3JvdW5kO1xuICAgIH0gZWxzZSB7XG4gICAgICB0eXMgfD4gTGlzdC5sZW5ndGggfD4gZ3JvdW5kZWRfUHJvZDtcbiAgICB9XG4gIHwgU3VtKHNtKSA9PlxuICAgIHNtIHw+IENvbnN0cnVjdG9yTWFwLmlzX2dyb3VuZChpc19ob2xlKVxuICAgICAgPyBHcm91bmQgOiBOb3RHcm91bmRPckhvbGUoU3VtKGdyb3VuZGVkX1N1bSgpKSB8PiBUeXAubWtfZmFzdClcbiAgfCBBcnJvdyhfLCBfKSA9PiBncm91bmRlZF9BcnJvd1xuICB8IEZvcmFsbChfKSA9PiBncm91bmRlZF9Gb3JhbGxcbiAgfCBMaXN0KF8pID0+IGdyb3VuZGVkX0xpc3RcbiAgfCBBcChfKSA9PiBmYWlsd2l0aChcInR5cGUgYXBwbGljYXRpb24gaW4gZHluYW1pY3NcIilcbiAgfTtcbn07XG5cbi8qIENBU1QgQ0FMQ1VMVVMgKi9cblxuLyogUnVsZXMgYXJlIHRha2VuIGZyb20gZmlndXJlIDEyIG9mIGh0dHBzOi8vYXJ4aXYub3JnL3BkZi8xODA1LjAwMTU1LnBkZiAgKi9cblxuLyogZ2l2ZXMgYSB0cmFuc2l0aW9uIHN0ZXAgdGhhdCBjYW4gYmUgdGFrZW4gYnkgdGhlIGNhc3QgY2FsY3VsdXMgaGVyZSBpZiBhcHBsaWNhYmxlLiAqL1xubGV0IHJlYyB0cmFuc2l0aW9uID0gKH5yZWN1cnNpdmU9ZmFsc2UsIGQ6IERIRXhwLnQpOiBvcHRpb24oREhFeHAudCkgPT4ge1xuICBzd2l0Y2ggKERIRXhwLnRlcm1fb2YoZCkpIHtcbiAgfCBDYXN0KGQxLCB0MSwgdDIpID0+XG4gICAgbGV0IGQxID1cbiAgICAgIGlmIChyZWN1cnNpdmUpIHtcbiAgICAgICAgZDEgfD4gdHJhbnNpdGlvbih+cmVjdXJzaXZlKSB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9ZDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZDE7XG4gICAgICB9O1xuICAgIHN3aXRjaCAoZ3JvdW5kX2Nhc2VzX29mKHQxKSwgZ3JvdW5kX2Nhc2VzX29mKHQyKSkge1xuICAgIHwgKEhvbGUsIEhvbGUpXG4gICAgfCAoR3JvdW5kLCBHcm91bmQpID0+XG4gICAgICAvKiBpZiB0d28gdHlwZXMgYXJlIGdyb3VuZCBhbmQgY29uc2lzdGVudCwgdGhlbiB0aGV5IGFyZSBlcSAqL1xuICAgICAgU29tZShkMSkgLy8gUnVsZSBJVENhc3RJZFxuXG4gICAgfCAoR3JvdW5kLCBIb2xlKSA9PlxuICAgICAgLyogY2FuJ3QgcmVtb3ZlIHRoZSBjYXN0IG9yIGRvIGFueXRoaW5nIGVsc2UgaGVyZSwgc28gd2UncmUgZG9uZSAqL1xuICAgICAgTm9uZVxuXG4gICAgfCAoSG9sZSwgR3JvdW5kKSA9PlxuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQxKSkge1xuICAgICAgfCBDYXN0KGQyLCB0Mywge3Rlcm06IFVua25vd24oXyksIF99KSA9PlxuICAgICAgICAvKiBieSBjYW5vbmljYWwgZm9ybXMsIGQxJyBtdXN0IGJlIG9mIHRoZSBmb3JtIGQ8dHknJyAtPiA/PiAqL1xuICAgICAgICBpZiAoVHlwLmVxKHQzLCB0MikpIHtcbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoZDIpOyAvLyBSdWxlIElUQ2FzdFN1Y2NlZWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoRmFpbGVkQ2FzdChkMiwgdDMsIHQyKSB8PiBESEV4cC5mcmVzaCk7IC8vIFJ1bGUgSVRDYXN0RmFpbFxuICAgICAgICB9XG4gICAgICB8IF8gPT4gTm9uZVxuICAgICAgfVxuXG4gICAgfCAoSG9sZSwgTm90R3JvdW5kT3JIb2xlKHQyX2dyb3VuZGVkKSkgPT5cbiAgICAgIC8qIElURXhwYW5kIHJ1bGUgKi9cbiAgICAgIGxldCBpbm5lcl9jYXN0ID0gQ2FzdChkMSwgdDEsIHQyX2dyb3VuZGVkKSB8PiBESEV4cC5mcmVzaDtcbiAgICAgIC8vIEhBQ0s6IHdlIG5lZWQgdG8gY2hlY2sgdGhlIGlubmVyIGNhc3QgaGVyZVxuICAgICAgbGV0IGlubmVyX2Nhc3QgPVxuICAgICAgICBzd2l0Y2ggKHRyYW5zaXRpb24ofnJlY3Vyc2l2ZSwgaW5uZXJfY2FzdCkpIHtcbiAgICAgICAgfCBTb21lKGQxKSA9PiBkMVxuICAgICAgICB8IE5vbmUgPT4gaW5uZXJfY2FzdFxuICAgICAgICB9O1xuICAgICAgU29tZShESEV4cC5DYXN0KGlubmVyX2Nhc3QsIHQyX2dyb3VuZGVkLCB0MikgfD4gREhFeHAuZnJlc2gpO1xuXG4gICAgfCAoTm90R3JvdW5kT3JIb2xlKHQxX2dyb3VuZGVkKSwgSG9sZSkgPT5cbiAgICAgIC8qIElUR3JvdW5kIHJ1bGUgKi9cbiAgICAgIFNvbWUoXG4gICAgICAgIERIRXhwLkNhc3QoQ2FzdChkMSwgdDEsIHQxX2dyb3VuZGVkKSB8PiBESEV4cC5mcmVzaCwgdDFfZ3JvdW5kZWQsIHQyKVxuICAgICAgICB8PiBESEV4cC5mcmVzaCxcbiAgICAgIClcblxuICAgIHwgKEdyb3VuZCwgTm90R3JvdW5kT3JIb2xlKF8pKSA9PlxuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQxKSkge1xuICAgICAgfCBDYXN0KGQyLCB0MywgXykgPT5cbiAgICAgICAgaWYgKFR5cC5lcSh0MywgdDIpKSB7XG4gICAgICAgICAgU29tZShkMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgTm9uZTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IE5vbmVcbiAgICAgIH1cbiAgICB8IChOb3RHcm91bmRPckhvbGUoXyksIEdyb3VuZCkgPT5cbiAgICAgIC8qIGNhbid0IGRvIGFueXRoaW5nIHdoZW4gY2FzdGluZyBiZXR3ZWVuIGRpc2VxLCBub24taG9sZSB0eXBlcyAqL1xuICAgICAgTm9uZVxuXG4gICAgfCAoTm90R3JvdW5kT3JIb2xlKF8pLCBOb3RHcm91bmRPckhvbGUoXykpID0+XG4gICAgICAvKiB0aGV5IG1pZ2h0IGJlIGVxIGluIHRoaXMgY2FzZSwgc28gcmVtb3ZlIGNhc3QgaWYgc28gKi9cbiAgICAgIGlmIChUeXAuZXEodDEsIHQyKSkge1xuICAgICAgICBTb21lXG4gICAgICAgICAgKGQxKTsgLy8gUnVsZSBJVENhc3RJZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTm9uZTtcbiAgICAgIH1cbiAgICB9O1xuICB8IF8gPT4gTm9uZVxuICB9O1xufTtcblxubGV0IHJlYyB0cmFuc2l0aW9uX211bHRpcGxlID0gKGQ6IERIRXhwLnQpOiBESEV4cC50ID0+IHtcbiAgc3dpdGNoICh0cmFuc2l0aW9uKH5yZWN1cnNpdmU9dHJ1ZSwgZCkpIHtcbiAgfCBTb21lKGQnJykgPT4gdHJhbnNpdGlvbl9tdWx0aXBsZShkJycpXG4gIHwgTm9uZSA9PiBkXG4gIH07XG59O1xuXG4vLyBTbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcmVnZW5lcmF0ZSBpdHMgaWRcbmxldCBob2xlID0gRW1wdHlIb2xlIHw+IERIRXhwLmZyZXNoO1xuXG4vLyBIYWNreSB3YXkgdG8gZG8gdHJhbnNpdGlvbl9tdWx0aXBsZSBvbiBwYXR0ZXJucyBieSB0cmFuc2ZlcnJpbmdcbi8vIHRoZSBjYXN0IHRvIHRoZSBleHByZXNzaW9uIGFuZCB0aGVuIGJhY2sgdG8gdGhlIHBhdHRlcm4uXG5sZXQgcGF0dGVybl9maXh1cCA9IChwOiBESFBhdC50KTogREhQYXQudCA9PiB7XG4gIGxldCByZWMgdW53cmFwX2Nhc3RzID0gKHA6IERIUGF0LnQpOiAoREhQYXQudCwgREhFeHAudCkgPT4ge1xuICAgIHN3aXRjaCAoREhQYXQudGVybV9vZihwKSkge1xuICAgIHwgQ2FzdChwMSwgdDEsIHQyKSA9PlxuICAgICAgbGV0IChwMSwgZDEpID0gdW53cmFwX2Nhc3RzKHAxKTtcbiAgICAgIChcbiAgICAgICAgcDEsXG4gICAgICAgIHt0ZXJtOiBESEV4cC5DYXN0KGQxLCB0MSwgdDIpLCBjb3BpZWQ6IHAuY29waWVkLCBpZHM6IHAuaWRzfVxuICAgICAgICB8PiB0cmFuc2l0aW9uX211bHRpcGxlLFxuICAgICAgKTtcbiAgICB8IF8gPT4gKHAsIGhvbGUpXG4gICAgfTtcbiAgfTtcbiAgbGV0IHJlYyByZXdyYXBfY2FzdHMgPSAoKHA6IERIUGF0LnQsIGQ6IERIRXhwLnQpKTogREhQYXQudCA9PiB7XG4gICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQpKSB7XG4gICAgfCBFbXB0eUhvbGUgPT4gcFxuICAgIHwgQ2FzdChkMSwgdDEsIHQyKSA9PlxuICAgICAgbGV0IHAxID0gcmV3cmFwX2Nhc3RzKChwLCBkMSkpO1xuICAgICAge3Rlcm06IERIUGF0LkNhc3QocDEsIHQxLCB0MiksIGNvcGllZDogZC5jb3BpZWQsIGlkczogZC5pZHN9O1xuICAgIHwgRmFpbGVkQ2FzdChkMSwgdDEsIHQyKSA9PlxuICAgICAgbGV0IHAxID0gcmV3cmFwX2Nhc3RzKChwLCBkMSkpO1xuICAgICAge1xuICAgICAgICB0ZXJtOlxuICAgICAgICAgIERIUGF0LkNhc3QoXG4gICAgICAgICAgICBESFBhdC5DYXN0KHAxLCB0MSwgVHlwLmZyZXNoKFVua25vd24oSW50ZXJuYWwpKSkgfD4gREhQYXQuZnJlc2gsXG4gICAgICAgICAgICBUeXAuZnJlc2goVW5rbm93bihJbnRlcm5hbCkpLFxuICAgICAgICAgICAgdDIsXG4gICAgICAgICAgKSxcbiAgICAgICAgY29waWVkOiBkLmNvcGllZCxcbiAgICAgICAgaWRzOiBkLmlkcyxcbiAgICAgIH07XG4gICAgfCBfID0+IGZhaWx3aXRoKFwidW5leHBlY3RlZCB0ZXJtIGluIHJld3JhcF9jYXN0c1wiKVxuICAgIH07XG4gIH07XG4gIHAgfD4gdW53cmFwX2Nhc3RzIHw+IHJld3JhcF9jYXN0cztcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgRXZhbHVhdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgc2hvd19jYXNlX2NsYXVzZXM6IGJvb2wsXG4gICAgc2hvd19mbl9ib2RpZXM6IGJvb2wsXG4gICAgc2hvd19maXhwb2ludHM6IGJvb2wsXG4gICAgc2hvd19jYXN0czogYm9vbCxcbiAgICBzaG93X2xvb2t1cF9zdGVwczogYm9vbCxcbiAgICBzaG93X3N0ZXBwZXJfZmlsdGVyczogYm9vbCxcbiAgICAvLyBUT0RPW01hdHRdOiBNb3ZlIHRoaXMgdG8gc29tZXdoZXJlIHdoZXJlIGl0IGlzIGEgcGVyLXNjcmF0Y2ggc2V0dGluZ1xuICAgIHN0ZXBwZXJfaGlzdG9yeTogYm9vbCxcbiAgICBzaG93X3NldHRpbmdzOiBib29sLFxuICAgIHNob3dfaGlkZGVuX3N0ZXBzOiBib29sLFxuICB9O1xuXG4gIGxldCBpbml0ID0ge1xuICAgIHNob3dfY2FzZV9jbGF1c2VzOiB0cnVlLFxuICAgIHNob3dfZm5fYm9kaWVzOiBmYWxzZSxcbiAgICBzaG93X2ZpeHBvaW50czogZmFsc2UsXG4gICAgc2hvd19jYXN0czogZmFsc2UsXG4gICAgc2hvd19sb29rdXBfc3RlcHM6IGZhbHNlLFxuICAgIHNob3dfc3RlcHBlcl9maWx0ZXJzOiBmYWxzZSxcbiAgICBzdGVwcGVyX2hpc3Rvcnk6IGZhbHNlLFxuICAgIHNob3dfc2V0dGluZ3M6IGZhbHNlLFxuICAgIHNob3dfaGlkZGVuX3N0ZXBzOiBmYWxzZSxcbiAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3RhdGljczogYm9vbCxcbiAgZWxhYm9yYXRlOiBib29sLFxuICBhc3Npc3Q6IGJvb2wsXG4gIGR5bmFtaWNzOiBib29sLFxuICBldmFsdWF0aW9uOiBFdmFsdWF0aW9uLnQsXG59O1xuXG5sZXQgb2ZmOiB0ID0ge1xuICBzdGF0aWNzOiBmYWxzZSxcbiAgZWxhYm9yYXRlOiBmYWxzZSxcbiAgYXNzaXN0OiBmYWxzZSxcbiAgZHluYW1pY3M6IGZhbHNlLFxuICBldmFsdWF0aW9uOiBFdmFsdWF0aW9uLmluaXQsXG59O1xuXG5sZXQgb246IHQgPSB7XG4gIHN0YXRpY3M6IHRydWUsXG4gIGVsYWJvcmF0ZTogdHJ1ZSxcbiAgYXNzaXN0OiB0cnVlLFxuICBkeW5hbWljczogdHJ1ZSxcbiAgZXZhbHVhdGlvbjogRXZhbHVhdGlvbi5pbml0LFxufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdGVybSA9XG4gIHwgQ2xvc3VyZShbQHNob3cub3BhcXVlXSBDbG9zdXJlRW52aXJvbm1lbnQudCwgdClcbiAgfCBGaWx0ZXIoVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQudCwgdClcbiAgfCBTZXExKHQsIERIRXhwLnQpXG4gIHwgU2VxMihESEV4cC50LCB0KVxuICB8IExldDEoUGF0LnQsIHQsIERIRXhwLnQpXG4gIHwgTGV0MihQYXQudCwgREhFeHAudCwgdClcbiAgfCBGdW4oUGF0LnQsIHQsIG9wdGlvbihDbG9zdXJlRW52aXJvbm1lbnQudCksIG9wdGlvbihWYXIudCkpXG4gIHwgRml4RihQYXQudCwgdCwgb3B0aW9uKENsb3N1cmVFbnZpcm9ubWVudC50KSlcbiAgfCBUeXBBcCh0LCBUeXAudClcbiAgfCBBcDEoT3BlcmF0b3JzLmFwX2RpcmVjdGlvbiwgdCwgREhFeHAudClcbiAgfCBBcDIoT3BlcmF0b3JzLmFwX2RpcmVjdGlvbiwgREhFeHAudCwgdClcbiAgfCBEZWZlcnJlZEFwMSh0LCBsaXN0KERIRXhwLnQpKVxuICB8IERlZmVycmVkQXAyKERIRXhwLnQsIHQsIChsaXN0KERIRXhwLnQpLCBsaXN0KERIRXhwLnQpKSlcbiAgfCBJZjEodCwgREhFeHAudCwgREhFeHAudClcbiAgfCBJZjIoREhFeHAudCwgdCwgREhFeHAudClcbiAgfCBJZjMoREhFeHAudCwgREhFeHAudCwgdClcbiAgfCBVbk9wKE9wZXJhdG9ycy5vcF91biwgdClcbiAgfCBCaW5PcDEoT3BlcmF0b3JzLm9wX2JpbiwgdCwgREhFeHAudClcbiAgfCBCaW5PcDIoT3BlcmF0b3JzLm9wX2JpbiwgREhFeHAudCwgdClcbiAgfCBUdXBsZSh0LCAobGlzdChESEV4cC50KSwgbGlzdChESEV4cC50KSkpXG4gIHwgVGVzdCh0KVxuICB8IExpc3RMaXQodCwgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpKVxuICB8IE11bHRpSG9sZSh0LCAobGlzdChBbnkudCksIGxpc3QoQW55LnQpKSlcbiAgfCBDb25zMSh0LCBESEV4cC50KVxuICB8IENvbnMyKERIRXhwLnQsIHQpXG4gIHwgTGlzdENvbmNhdDEodCwgREhFeHAudClcbiAgfCBMaXN0Q29uY2F0MihESEV4cC50LCB0KVxuICB8IENhc3QodCwgVHlwLnQsIFR5cC50KVxuICB8IEZhaWxlZENhc3QodCwgVHlwLnQsIFR5cC50KVxuICB8IER5bmFtaWNFcnJvckhvbGUodCwgSW52YWxpZE9wZXJhdGlvbkVycm9yLnQpXG4gIHwgTWF0Y2hTY3J1dCh0LCBsaXN0KChVUGF0LnQsIERIRXhwLnQpKSlcbiAgfCBNYXRjaFJ1bGUoXG4gICAgICBESEV4cC50LFxuICAgICAgVVBhdC50LFxuICAgICAgdCxcbiAgICAgIChsaXN0KChVUGF0LnQsIERIRXhwLnQpKSwgbGlzdCgoVVBhdC50LCBESEV4cC50KSkpLFxuICAgIClcbmFuZCB0ID1cbiAgfCBNYXJrXG4gIHwgVGVybSh7XG4gICAgICB0ZXJtLFxuICAgICAgaWRzOiBsaXN0KElkLnQpLFxuICAgIH0pO1xuXG5sZXQgcmVjIGNvbXBvc2UgPSAoY3R4OiB0LCBkOiBESEV4cC50KTogREhFeHAudCA9PiB7XG4gIHN3aXRjaCAoY3R4KSB7XG4gIHwgTWFyayA9PiBkXG4gIHwgVGVybSh7dGVybSwgaWRzfSkgPT5cbiAgICBsZXQgd3JhcCA9IERIRXhwLm1rKGlkcyk7XG4gICAgREhFeHAuKFxuICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICB8IENsb3N1cmUoZW52LCBjdHgpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBDbG9zdXJlKGVudiwgZCkgfD4gd3JhcDtcbiAgICAgIHwgRmlsdGVyKGZsdCwgY3R4KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgRmlsdGVyKGZsdCwgZCkgfD4gd3JhcDtcbiAgICAgIHwgU2VxMShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIFNlcShkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IFNlcTIoZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0IGQyID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBTZXEoZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBBcDEoZGlyLCBjdHgsIGQyKSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEFwKGRpciwgZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBBcDIoZGlyLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEFwKGRpciwgZDEsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBEZWZlcnJlZEFwMShjdHgsIGQycykgPT5cbiAgICAgICAgbGV0IGQxID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBEZWZlcnJlZEFwKGQxLCBkMnMpIHw+IHdyYXA7XG4gICAgICB8IERlZmVycmVkQXAyKGQxLCBjdHgsIChsZCwgcmQpKSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIERlZmVycmVkQXAoZDEsIExpc3RVdGlsLnJldl9jb25jYXQobGQsIFtkMiwgLi4ucmRdKSkgfD4gd3JhcDtcbiAgICAgIHwgSWYxKGN0eCwgZDIsIGQzKSA9PlxuICAgICAgICBsZXQgZCcgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIElmKGQnLCBkMiwgZDMpIHw+IHdyYXA7XG4gICAgICB8IElmMihkMSwgY3R4LCBkMykgPT5cbiAgICAgICAgbGV0IGQnID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBJZihkMSwgZCcsIGQzKSB8PiB3cmFwO1xuICAgICAgfCBJZjMoZDEsIGQyLCBjdHgpID0+XG4gICAgICAgIGxldCBkJyA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgSWYoZDEsIGQyLCBkJykgfD4gd3JhcDtcbiAgICAgIHwgVGVzdChjdHgpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgVGVzdChkMSkgfD4gd3JhcDtcbiAgICAgIHwgVW5PcChvcCwgY3R4KSA9PlxuICAgICAgICBsZXQgZDEgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIFVuT3Aob3AsIGQxKSB8PiB3cmFwO1xuICAgICAgfCBCaW5PcDEob3AsIGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgQmluT3Aob3AsIGQxLCBkMikgfD4gd3JhcDtcbiAgICAgIHwgQmluT3AyKG9wLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZDIgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEJpbk9wKG9wLCBkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IENvbnMxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgQ29ucyhkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IENvbnMyKGQxLCBjdHgpID0+XG4gICAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgQ29ucyhkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IExpc3RDb25jYXQxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkMSA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGlzdENvbmNhdChkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IExpc3RDb25jYXQyKGQxLCBjdHgpID0+XG4gICAgICAgIGxldCBkMiA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGlzdENvbmNhdChkMSwgZDIpIHw+IHdyYXA7XG4gICAgICB8IFR1cGxlKGN0eCwgKGxkLCByZCkpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBUdXBsZShMaXN0VXRpbC5yZXZfY29uY2F0KGxkLCBbZCwgLi4ucmRdKSkgfD4gd3JhcDtcbiAgICAgIHwgTGlzdExpdChjdHgsIChsZCwgcmQpKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGlzdExpdChMaXN0VXRpbC5yZXZfY29uY2F0KGxkLCBbZCwgLi4ucmRdKSkgfD4gd3JhcDtcbiAgICAgIHwgTXVsdGlIb2xlKGN0eCwgKGxkLCByZCkpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBNdWx0aUhvbGUoTGlzdFV0aWwucmV2X2NvbmNhdChsZCwgW1Rlcm1CYXNlLkFueS5FeHAoZCksIC4uLnJkXSkpXG4gICAgICAgIHw+IHdyYXA7XG4gICAgICB8IExldDEoZHAsIGN0eCwgZDIpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBMZXQoZHAsIGQsIGQyKSB8PiB3cmFwO1xuICAgICAgfCBMZXQyKGRwLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTGV0KGRwLCBkMSwgZCkgfD4gd3JhcDtcbiAgICAgIHwgRnVuKGRwLCBjdHgsIGVudiwgdikgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEZ1bihkcCwgZCwgZW52LCB2KSB8PiB3cmFwO1xuICAgICAgfCBGaXhGKHYsIGN0eCwgZW52KSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgRml4Rih2LCBkLCBlbnYpIHw+IHdyYXA7XG4gICAgICB8IENhc3QoY3R4LCB0eTEsIHR5MikgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIENhc3QoZCwgdHkxLCB0eTIpIHw+IHdyYXA7XG4gICAgICB8IEZhaWxlZENhc3QoY3R4LCB0eTEsIHR5MikgPT5cbiAgICAgICAgbGV0IGQgPSBjb21wb3NlKGN0eCwgZCk7XG4gICAgICAgIEZhaWxlZENhc3QoZCwgdHkxLCB0eTIpIHw+IHdyYXA7XG4gICAgICB8IER5bmFtaWNFcnJvckhvbGUoY3R4LCBlcnIpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBEeW5hbWljRXJyb3JIb2xlKGQsIGVycikgfD4gd3JhcDtcbiAgICAgIHwgTWF0Y2hTY3J1dChjdHgsIHJ1bGVzKSA9PlxuICAgICAgICBsZXQgZCA9IGNvbXBvc2UoY3R4LCBkKTtcbiAgICAgICAgTWF0Y2goZCwgcnVsZXMpIHw+IHdyYXA7XG4gICAgICB8IE1hdGNoUnVsZShzY3IsIHAsIGN0eCwgKGxyLCBycikpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBNYXRjaChzY3IsIExpc3RVdGlsLnJldl9jb25jYXQobHIsIFsocCwgZCksIC4uLnJyXSkpIHw+IHdyYXA7XG4gICAgICB8IFR5cEFwKGN0eCwgdHkpID0+XG4gICAgICAgIGxldCBkID0gY29tcG9zZShjdHgsIGQpO1xuICAgICAgICBUeXBBcChkLCB0eSkgfD4gd3JhcDtcbiAgICAgIH1cbiAgICApO1xuICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcblxuLyogV2hhdCBpcyB1bmJveGluZz9cblxuICAgV2hlbiB5b3UgaGF2ZSBhbiBleHByZXNzaW9uIG9mIHR5cGUgbGlzdCwgYW5kIGl0J3MgZmluaXNoZWQgZXZhbHVhdGluZyxcbiAgIGlzIGl0IGEgbGlzdD8gU2FkbHkgbm90IG5lY2Vzc2FyaWx5LCBpdCBtaWdodCBiZTpcblxuICAgIC0gaW5kZXRlcm1pbmF0ZSwgZS5nLiBpdCBoYXMgYSBob2xlIGluIGl0XG4gICAgLSBhIGxpc3Qgd2l0aCBzb21lIGNhc3RzIHdyYXBwZWQgYXJvdW5kIGl0XG5cbiAgICBVbmJveGluZyBpcyB0aGUgcHJvY2VzcyBvZiB0dXJuaW5nIGEgbGlzdCBpbnRvIGEgbGlzdCBpZiBpdCBpcyBhIGxpc3QsXG4gICAgYnkgcHVzaGluZyBjYXN0cyBpbnNpZGUgZGF0YSBzdHJ1Y3R1cmVzLCBvciBnaXZpbmcgdXAgaWYgaXQgaXMgbm90IGEgbGlzdC5cblxuICAgIE5vdGUgdW5ib3hpbmcgb25seSB3b3JrcyBvbmUgbGF5ZXIgZGVlcCwgaWYgd2UgaGF2ZSBhIGxpc3Qgb2YgbGlzdHMgdGhlblxuICAgIHRoZSBpbm5lciBsaXN0cyBtYXkgc3RpbGwgaGF2ZSBjYXN0cyBhcm91bmQgdGhlbSBhZnRlciB1bmJveGluZy5cbiAgICAqL1xuXG50eXBlIHVuYm94X3JlcXVlc3QoJ2EpID1cbiAgfCBJbnQ6IHVuYm94X3JlcXVlc3QoaW50KVxuICB8IEZsb2F0OiB1bmJveF9yZXF1ZXN0KGZsb2F0KVxuICB8IEJvb2w6IHVuYm94X3JlcXVlc3QoYm9vbClcbiAgfCBTdHJpbmc6IHVuYm94X3JlcXVlc3Qoc3RyaW5nKVxuICB8IFR1cGxlKGludCk6IHVuYm94X3JlcXVlc3QobGlzdChESEV4cC50KSlcbiAgfCBMaXN0OiB1bmJveF9yZXF1ZXN0KGxpc3QoREhFeHAudCkpXG4gIHwgQ29uczogdW5ib3hfcmVxdWVzdCgoREhFeHAudCwgREhFeHAudCkpXG4gIHwgU3VtTm9Bcmcoc3RyaW5nKTogdW5ib3hfcmVxdWVzdCh1bml0KVxuICB8IFN1bVdpdGhBcmcoc3RyaW5nKTogdW5ib3hfcmVxdWVzdChESEV4cC50KTtcblxudHlwZSB1bmJveGVkKCdhKSA9XG4gIHwgRG9lc05vdE1hdGNoXG4gIHwgSW5kZXRNYXRjaFxuICB8IE1hdGNoZXMoJ2EpO1xuXG5sZXQgKCBsZXQqICkgPSAoeDogdW5ib3hlZCgnYSksIGY6ICdhID0+IHVuYm94ZWQoJ2IpKTogdW5ib3hlZCgnYikgPT5cbiAgc3dpdGNoICh4KSB7XG4gIHwgSW5kZXRNYXRjaCA9PiBJbmRldE1hdGNoXG4gIHwgRG9lc05vdE1hdGNoID0+IERvZXNOb3RNYXRjaFxuICB8IE1hdGNoZXMoeCkgPT4gZih4KVxuICB9O1xuXG5sZXQgZml4dXBfY2FzdCA9IENhc3RzLnRyYW5zaXRpb25fbXVsdGlwbGU7XG5cbi8qIFRoaXMgZnVuY3Rpb24gaGFzIGEgZGlmZmVyZW50IHJldHVybiB0eXBlIGRlcGVuZGluZyBvbiB3aGF0IGtpbmQgb2YgcmVxdWVzdFxuICAgaXQgaXMgZ2l2ZW4uIFRoaXMgdW5mb3J0dW5hdGVseSB1c2VzIGEgY3JhenkgT0NhbWwgZmVhdHVyZSBjYWxsZWQgR0FEVFMsIGJ1dFxuICAgaXQgYXZvaWRzIGhhdmluZyB0byB3cml0ZSBhIHNlcGFyYXRlIHVuYm94IGZ1bmN0aW9uIGZvciBlYWNoIGtpbmQgb2YgcmVxdWVzdC5cbiAgICovXG5cbmxldCByZWMgdW5ib3g6IHR5cGUgYS4gKHVuYm94X3JlcXVlc3QoYSksIERIRXhwLnQpID0+IHVuYm94ZWQoYSkgPVxuICAocmVxdWVzdCwgZXhwcikgPT4ge1xuICAgIHN3aXRjaCAocmVxdWVzdCwgREhFeHAudGVybV9vZihleHByKSkge1xuICAgIC8qIFJlbW92ZSBwYXJlbnRoZXNlcyBmcm9tIGNhc3RzICovXG4gICAgfCAoXywgQ2FzdChkLCB7dGVybTogUGFyZW5zKHgpLCBffSwgeSkpXG4gICAgfCAoXywgQ2FzdChkLCB4LCB7dGVybTogUGFyZW5zKHkpLCBffSkpID0+XG4gICAgICB1bmJveChyZXF1ZXN0LCBDYXN0KGQsIHgsIHkpIHw+IERIRXhwLmZyZXNoKVxuXG4gICAgLyogQmFzZSB0eXBlcyBhcmUgYWx3YXlzIGFscmVhZHkgdW5ib3hlZCBiZWNhdXNlIG9mIHRoZSBJVENhc3RJRCBydWxlKi9cbiAgICB8IChCb29sLCBCb29sKGIpKSA9PiBNYXRjaGVzKGIpXG4gICAgfCAoSW50LCBJbnQoaSkpID0+IE1hdGNoZXMoaSlcbiAgICB8IChGbG9hdCwgRmxvYXQoZikpID0+IE1hdGNoZXMoZilcbiAgICB8IChTdHJpbmcsIFN0cmluZyhzKSkgPT4gTWF0Y2hlcyhzKVxuXG4gICAgLyogTGlzdHMgY2FuIGJlIGVpdGhlciBsaXN0cyBvciBsaXN0IGNhc3RzICovXG4gICAgfCAoTGlzdCwgTGlzdExpdChsKSkgPT4gTWF0Y2hlcyhsKVxuICAgIHwgKENvbnMsIExpc3RMaXQoW3gsIC4uLnhzXSkpID0+XG4gICAgICBNYXRjaGVzKCh4LCBMaXN0TGl0KHhzKSB8PiBESEV4cC5mcmVzaCkpXG4gICAgfCAoQ29ucywgTGlzdExpdChbXSkpID0+IERvZXNOb3RNYXRjaFxuICAgIHwgKExpc3QsIENhc3QobCwge3Rlcm06IExpc3QodDEpLCBffSwge3Rlcm06IExpc3QodDIpLCBffSkpID0+XG4gICAgICBsZXQqIGwgPSB1bmJveChMaXN0LCBsKTtcbiAgICAgIGxldCBsID0gTGlzdC5tYXAoZCA9PiBDYXN0KGQsIHQxLCB0MikgfD4gREhFeHAuZnJlc2gsIGwpO1xuICAgICAgbGV0IGwgPSBMaXN0Lm1hcChmaXh1cF9jYXN0LCBsKTtcbiAgICAgIE1hdGNoZXMobCk7XG4gICAgfCAoXG4gICAgICAgIENvbnMsXG4gICAgICAgIENhc3QobCwge3Rlcm06IExpc3QodDEpLCBffSBhcyBjdDEsIHt0ZXJtOiBMaXN0KHQyKSwgX30gYXMgY3QyKSxcbiAgICAgICkgPT5cbiAgICAgIGxldCogbCA9IHVuYm94KExpc3QsIGwpO1xuICAgICAgc3dpdGNoIChsKSB7XG4gICAgICB8IFtdID0+IERvZXNOb3RNYXRjaFxuICAgICAgfCBbeCwgLi4ueHNdID0+XG4gICAgICAgIE1hdGNoZXMoKFxuICAgICAgICAgIENhc3QoeCwgdDEsIHQyKSB8PiBESEV4cC5mcmVzaCB8PiBmaXh1cF9jYXN0LFxuICAgICAgICAgIENhc3QoTGlzdExpdCh4cykgfD4gREhFeHAuZnJlc2gsIGN0MSwgY3QyKSB8PiBESEV4cC5mcmVzaCxcbiAgICAgICAgKSlcbiAgICAgIH07XG5cbiAgICAvKiBUdXBsZXMgY2FuIGJlIGVpdGhlciB0dXBsZXMgb3IgdHVwbGUgY2FzdHMgKi9cbiAgICB8IChUdXBsZShuKSwgVHVwbGUodCkpIHdoZW4gTGlzdC5sZW5ndGgodCkgPT0gbiA9PiBNYXRjaGVzKHQpXG4gICAgfCAoVHVwbGUoXyksIFR1cGxlKF8pKSA9PiBEb2VzTm90TWF0Y2hcbiAgICB8IChUdXBsZShuKSwgQ2FzdCh0LCB7dGVybTogUHJvZCh0MXMpLCBffSwge3Rlcm06IFByb2QodDJzKSwgX30pKVxuICAgICAgICB3aGVuIG4gPT0gTGlzdC5sZW5ndGgodDFzKSAmJiBuID09IExpc3QubGVuZ3RoKHQycykgPT5cbiAgICAgIGxldCogdCA9IHVuYm94KFR1cGxlKG4pLCB0KTtcbiAgICAgIGxldCB0ID1cbiAgICAgICAgTGlzdFV0aWwubWFwMyhcbiAgICAgICAgICAoZCwgdDEsIHQyKSA9PiBDYXN0KGQsIHQxLCB0MikgfD4gREhFeHAuZnJlc2gsXG4gICAgICAgICAgdCxcbiAgICAgICAgICB0MXMsXG4gICAgICAgICAgdDJzLFxuICAgICAgICApO1xuICAgICAgbGV0IHQgPSBMaXN0Lm1hcChmaXh1cF9jYXN0LCB0KTtcbiAgICAgIE1hdGNoZXModCk7XG5cbiAgICAvKiBTdW0gY29uc3RydWN0b3JzIGNhbiBiZSBlaXRoZXIgc3VtIGNvbnN0cnVjdG9ycywgc3VtIGNvbnN0cnVjdG9yc1xuICAgICAgIGFwcGxpZWQgdG8gc29tZSB2YWx1ZSBvciBzdW0gY2FzdHMgKi9cbiAgICB8IChTdW1Ob0FyZyhuYW1lMSksIENvbnN0cnVjdG9yKG5hbWUyKSkgd2hlbiBuYW1lMSA9PSBuYW1lMiA9PiBNYXRjaGVzKClcbiAgICB8IChTdW1Ob0FyZyhfKSwgQ29uc3RydWN0b3IoXykpID0+IERvZXNOb3RNYXRjaFxuICAgIHwgKFN1bU5vQXJnKF8pLCBBcChfLCB7dGVybTogQ29uc3RydWN0b3IoXyksIF99LCBfKSkgPT4gRG9lc05vdE1hdGNoXG4gICAgfCAoU3VtTm9BcmcobmFtZSksIENhc3QoZDEsIHt0ZXJtOiBTdW0oXyksIF99LCB7dGVybTogU3VtKHMyKSwgX30pKVxuICAgICAgICB3aGVuXG4gICAgICAgICAgQ29uc3RydWN0b3JNYXAuaGFzX2NvbnN0cnVjdG9yX25vX2FyZ3MobmFtZSwgczIpXG4gICAgICAgICAgfHwgQ29uc3RydWN0b3JNYXAuaGFzX2JhZF9lbnRyeShzMikgPT5cbiAgICAgIGxldCogZDEgPSB1bmJveChTdW1Ob0FyZyhuYW1lKSwgZDEpO1xuICAgICAgTWF0Y2hlcyhkMSk7XG4gICAgfCAoU3VtTm9BcmcoXyksIENhc3QoXywge3Rlcm06IFN1bShfKSwgX30sIHt0ZXJtOiBTdW0oXyksIF99KSkgPT5cbiAgICAgIEluZGV0TWF0Y2hcblxuICAgIHwgKFN1bVdpdGhBcmcoXyksIENvbnN0cnVjdG9yKF8pKSA9PiBEb2VzTm90TWF0Y2hcbiAgICB8IChTdW1XaXRoQXJnKG5hbWUxKSwgQXAoXywge3Rlcm06IENvbnN0cnVjdG9yKG5hbWUyKSwgX30sIGQzKSlcbiAgICAgICAgd2hlbiBuYW1lMSA9PSBuYW1lMiA9PlxuICAgICAgTWF0Y2hlcyhkMylcbiAgICB8IChTdW1XaXRoQXJnKF8pLCBBcChfLCB7dGVybTogQ29uc3RydWN0b3IoXyksIF99LCBfKSkgPT4gRG9lc05vdE1hdGNoXG4gICAgfCAoU3VtV2l0aEFyZyhuYW1lKSwgQ2FzdChkMSwge3Rlcm06IFN1bShfKSwgX30sIHt0ZXJtOiBTdW0oczIpLCBffSkpXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBDb25zdHJ1Y3Rvck1hcC5nZXRfZW50cnkobmFtZSwgczIpICE9IE5vbmVcbiAgICAgICAgICB8fCBDb25zdHJ1Y3Rvck1hcC5oYXNfYmFkX2VudHJ5KHMyKSA9PlxuICAgICAgbGV0KiBkMSA9IHVuYm94KFN1bVdpdGhBcmcobmFtZSksIGQxKTtcbiAgICAgIE1hdGNoZXMoZDEgfD4gZml4dXBfY2FzdCk7XG4gICAgfCAoU3VtV2l0aEFyZyhfKSwgQ2FzdChfLCB7dGVybTogU3VtKF8pLCBffSwge3Rlcm06IFN1bShfKSwgX30pKSA9PlxuICAgICAgSW5kZXRNYXRjaFxuXG4gICAgLyogQW55IGNhc3QgZnJvbSB1bmtub3duIGlzIGluZGV0ICovXG4gICAgfCAoXywgQ2FzdChfLCB7dGVybTogVW5rbm93bihfKSwgX30sIF8pKSA9PiBJbmRldE1hdGNoXG5cbiAgICAvKiBGb3JtcyB0aGF0IGFyZSB0aGUgd3JvbmcgdHlwZSBvZiB2YWx1ZSAtIHRoZXNlIGNhc2VzIGluZGljYXRlIGFuIGVycm9yXG4gICAgICAgaW4gZWxhYm9yYXRpb24gb3IgaW4gdGhlIGNhc3QgY2FsY3VsdXMuICovXG4gICAgfCAoXG4gICAgICAgIF8sXG4gICAgICAgIEJvb2woXykgfCBJbnQoXykgfCBGbG9hdChfKSB8IFN0cmluZyhfKSB8IENvbnN0cnVjdG9yKF8pIHxcbiAgICAgICAgQnVpbHRpbkZ1bihfKSB8XG4gICAgICAgIERlZmVycmFsKF8pIHxcbiAgICAgICAgRGVmZXJyZWRBcChfKSB8XG4gICAgICAgIEZ1bihfLCBfLCBfLCBTb21lKF8pKSB8XG4gICAgICAgIExpc3RMaXQoXykgfFxuICAgICAgICBUdXBsZShfKSB8XG4gICAgICAgIENhc3QoXykgfFxuICAgICAgICBBcChfLCB7dGVybTogQ29uc3RydWN0b3IoXyksIF99LCBfKSB8XG4gICAgICAgIFR5cEZ1bihfKSB8XG4gICAgICAgIFR5cEFwKF8pLFxuICAgICAgKSA9PlxuICAgICAgc3dpdGNoIChyZXF1ZXN0KSB7XG4gICAgICB8IEJvb2wgPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEJvb2xMaXQoZXhwcikpKVxuICAgICAgfCBJbnQgPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZEludExpdChleHByKSkpXG4gICAgICB8IEZsb2F0ID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRGbG9hdExpdChleHByKSkpXG4gICAgICB8IFN0cmluZyA9PlxuICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkU3RyaW5nTGl0KGV4cHIpKSlcbiAgICAgIHwgVHVwbGUoXykgPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR1cGxlKGV4cHIpKSlcbiAgICAgIHwgTGlzdFxuICAgICAgfCBDb25zID0+IHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRMaXN0TGl0KGV4cHIpKSlcbiAgICAgIHwgU3VtTm9BcmcoXylcbiAgICAgIHwgU3VtV2l0aEFyZyhfKSA9PlxuICAgICAgICByYWlzZShFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJveGVkU3VtQ29uc3RydWN0b3IoZXhwcikpKVxuICAgICAgfVxuXG4gICAgLyogRm9ybXMgdGhhdCBhcmUgbm90IHlldCBvciB3aWxsIG5ldmVyIGJlIGEgdmFsdWUgKi9cbiAgICB8IChcbiAgICAgICAgXyxcbiAgICAgICAgSW52YWxpZChfKSB8IEVtcHR5SG9sZSB8IE11bHRpSG9sZShfKSB8IER5bmFtaWNFcnJvckhvbGUoXykgfFxuICAgICAgICBGYWlsZWRDYXN0KF8pIHxcbiAgICAgICAgVmFyKF8pIHxcbiAgICAgICAgTGV0KF8pIHxcbiAgICAgICAgRnVuKF8sIF8sIF8sIE5vbmUpIHxcbiAgICAgICAgRml4RihfKSB8XG4gICAgICAgIFR5QWxpYXMoXykgfFxuICAgICAgICBBcChfKSB8XG4gICAgICAgIElmKF8pIHxcbiAgICAgICAgU2VxKF8pIHxcbiAgICAgICAgVGVzdChfKSB8XG4gICAgICAgIEZpbHRlcihfKSB8XG4gICAgICAgIENsb3N1cmUoXykgfFxuICAgICAgICBQYXJlbnMoXykgfFxuICAgICAgICBDb25zKF8pIHxcbiAgICAgICAgTGlzdENvbmNhdChfKSB8XG4gICAgICAgIFVuT3AoXykgfFxuICAgICAgICBCaW5PcChfKSB8XG4gICAgICAgIE1hdGNoKF8pLFxuICAgICAgKSA9PlxuICAgICAgSW5kZXRNYXRjaFxuICAgIH07XG4gIH07XG4iLCJ0eXBlIG1hdGNoX3Jlc3VsdCA9IFVuYm94aW5nLnVuYm94ZWQoRW52aXJvbm1lbnQudCk7XG5sZXQgKCBsZXQqICkgPSBVbmJveGluZy4oIGxldCogKTtcblxubGV0IGNvbWJpbmVfcmVzdWx0ID0gKHIxOiBtYXRjaF9yZXN1bHQsIHIyOiBtYXRjaF9yZXN1bHQpOiBtYXRjaF9yZXN1bHQgPT5cbiAgc3dpdGNoIChyMSwgcjIpIHtcbiAgfCAoRG9lc05vdE1hdGNoLCBfKVxuICB8IChfLCBEb2VzTm90TWF0Y2gpID0+IERvZXNOb3RNYXRjaFxuICB8IChJbmRldE1hdGNoLCBfKVxuICB8IChfLCBJbmRldE1hdGNoKSA9PiBJbmRldE1hdGNoXG4gIHwgKE1hdGNoZXMoZW52MSksIE1hdGNoZXMoZW52MikpID0+XG4gICAgTWF0Y2hlcyhFbnZpcm9ubWVudC51bmlvbihlbnYxLCBlbnYyKSlcbiAgfTtcblxubGV0IHJlYyBtYXRjaGVzID0gKGRwOiBQYXQudCwgZDogREhFeHAudCk6IG1hdGNoX3Jlc3VsdCA9PlxuICBzd2l0Y2ggKERIUGF0LnRlcm1fb2YoZHApKSB7XG4gIHwgSW52YWxpZChfKVxuICB8IEVtcHR5SG9sZVxuICB8IE11bHRpSG9sZShfKVxuICB8IFdpbGQgPT4gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSlcbiAgfCBJbnQobikgPT5cbiAgICBsZXQqIG4nID0gVW5ib3hpbmcudW5ib3goSW50LCBkKTtcbiAgICBuID09IG4nID8gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkgOiBEb2VzTm90TWF0Y2g7XG4gIHwgRmxvYXQobikgPT5cbiAgICBsZXQqIG4nID0gVW5ib3hpbmcudW5ib3goRmxvYXQsIGQpO1xuICAgIG4gPT0gbicgPyBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSA6IERvZXNOb3RNYXRjaDtcbiAgfCBCb29sKGIpID0+XG4gICAgbGV0KiBiJyA9IFVuYm94aW5nLnVuYm94KEJvb2wsIGQpO1xuICAgIGIgPT0gYicgPyBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KSA6IERvZXNOb3RNYXRjaDtcbiAgfCBTdHJpbmcocykgPT5cbiAgICBsZXQqIHMnID0gVW5ib3hpbmcudW5ib3goU3RyaW5nLCBkKTtcbiAgICBzID09IHMnID8gTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkgOiBEb2VzTm90TWF0Y2g7XG4gIHwgTGlzdExpdCh4cykgPT5cbiAgICBsZXQqIHMnID0gVW5ib3hpbmcudW5ib3goTGlzdCwgZCk7XG4gICAgaWYgKExpc3QubGVuZ3RoKHhzKSA9PSBMaXN0Lmxlbmd0aChzJykpIHtcbiAgICAgIExpc3QubWFwMihtYXRjaGVzLCB4cywgcycpXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChjb21iaW5lX3Jlc3VsdCwgTWF0Y2hlcyhFbnZpcm9ubWVudC5lbXB0eSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBEb2VzTm90TWF0Y2g7XG4gICAgfTtcbiAgfCBDb25zKHgsIHhzKSA9PlxuICAgIGxldCogKHgnLCB4cycpID0gVW5ib3hpbmcudW5ib3goQ29ucywgZCk7XG4gICAgbGV0KiBtX3ggPSBtYXRjaGVzKHgsIHgnKTtcbiAgICBsZXQqIG1feHMgPSBtYXRjaGVzKHhzLCB4cycpO1xuICAgIE1hdGNoZXMoRW52aXJvbm1lbnQudW5pb24obV94LCBtX3hzKSk7XG4gIHwgQ29uc3RydWN0b3IoY3RyKSA9PlxuICAgIGxldCogKCkgPSBVbmJveGluZy51bmJveChTdW1Ob0FyZyhjdHIpLCBkKTtcbiAgICBNYXRjaGVzKEVudmlyb25tZW50LmVtcHR5KTtcbiAgfCBBcCh7dGVybTogQ29uc3RydWN0b3IoY3RyKSwgX30sIHAyKSA9PlxuICAgIGxldCogZDIgPSBVbmJveGluZy51bmJveChTdW1XaXRoQXJnKGN0ciksIGQpO1xuICAgIG1hdGNoZXMocDIsIGQyKTtcbiAgfCBBcChfLCBfKSA9PiBJbmRldE1hdGNoIC8vIFRPRE86IHNob3VsZCB0aGlzIGZhaWw/XG4gIHwgVmFyKHgpID0+IE1hdGNoZXMoRW52aXJvbm1lbnQuc2luZ2xldG9uKCh4LCBkKSkpXG4gIHwgVHVwbGUocHMpID0+XG4gICAgbGV0KiBkcyA9IFVuYm94aW5nLnVuYm94KFR1cGxlKExpc3QubGVuZ3RoKHBzKSksIGQpO1xuICAgIExpc3QubWFwMihtYXRjaGVzLCBwcywgZHMpXG4gICAgfD4gTGlzdC5mb2xkX2xlZnQoY29tYmluZV9yZXN1bHQsIE1hdGNoZXMoRW52aXJvbm1lbnQuZW1wdHkpKTtcbiAgfCBQYXJlbnMocCkgPT4gbWF0Y2hlcyhwLCBkKVxuICB8IENhc3QocCwgdDEsIHQyKSA9PlxuICAgIG1hdGNoZXMocCwgQ2FzdChkLCB0MiwgdDEpIHw+IERIRXhwLmZyZXNoIHw+IENhc3RzLnRyYW5zaXRpb25fbXVsdGlwbGUpXG4gIH07XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IFBhc3NcbiAgfCBGYWlsXG4gIHwgSW5kZXQ7XG5cbmxldCB0b19zdHJpbmc6IHQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgUGFzcyA9PiBcIlBhc3NcIlxuICB8IEZhaWwgPT4gXCJGYWlsXCJcbiAgfCBJbmRldCA9PiBcIkluZGV0XCI7XG5cbmxldCBqb2luOiAodCwgdCkgPT4gdCA9XG4gIChhLCBiKSA9PlxuICAgIHN3aXRjaCAoYSwgYikge1xuICAgIHwgKEZhaWwsIF8pID0+IEZhaWxcbiAgICB8IChJbmRldCwgRmFpbCkgPT4gRmFpbFxuICAgIHwgKEluZGV0LCBfKSA9PiBJbmRldFxuICAgIHwgKFBhc3MsIHgpID0+IHhcbiAgICB9O1xuXG5sZXQgam9pbl9hbGw6IGxpc3QodCkgPT4gdCA9IExpc3QuZm9sZF9sZWZ0KGpvaW4sIFBhc3MpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyogRklYTUU6IE1ha2UgbW9yZSBvYnZpb3VzIG5hbWVzLiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBpbnN0YW5jZV9yZXBvcnQgPSAoREhFeHAudCwgVGVzdFN0YXR1cy50KTtcblxubGV0IGpvaW50X3N0YXR1czogbGlzdChpbnN0YW5jZV9yZXBvcnQpID0+IFRlc3RTdGF0dXMudCA9XG4gIHJlcG9ydHMgPT4gVGVzdFN0YXR1cy5qb2luX2FsbChMaXN0Lm1hcCgoKF8sIHgpKSA9PiB4LCByZXBvcnRzKSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcmVwb3J0ID0gKElkLnQsIGxpc3QoaW5zdGFuY2VfcmVwb3J0KSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IGxpc3QocmVwb3J0KTtcbmxldCBlbXB0eTogdCA9IFtdO1xuXG5sZXQgbG9va3VwID0gTGlzdC5hc3NvY19vcHQ7XG5cbmxldCBsb29rdXBfYW5kX2pvaW4gPSAobiwgdGVzdF9tYXApID0+XG4gIHN3aXRjaCAobG9va3VwKG4sIHRlc3RfbWFwKSkge1xuICB8IE5vbmUgPT4gVGVzdFN0YXR1cy5JbmRldFxuICB8IFNvbWUocmVwb3J0cykgPT4gam9pbnRfc3RhdHVzKHJlcG9ydHMpXG4gIH07XG5cbmxldCBleHRlbmQgPSAoKGlkLCByZXBvcnQpLCB0ZXN0X21hcCkgPT4ge1xuICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KGlkLCB0ZXN0X21hcCkpIHtcbiAgfCBTb21lKGEpID0+IExpc3QucmVtb3ZlX2Fzc29jKGlkLCB0ZXN0X21hcCkgQCBbKGlkLCBhIEAgW3JlcG9ydF0pXVxuICB8IE5vbmUgPT4gdGVzdF9tYXAgQCBbKGlkLCBbcmVwb3J0XSldXG4gIH07XG59O1xuXG5sZXQgY291bnQgPSBMaXN0Lmxlbmd0aDtcblxubGV0IGNvdW50X3N0YXR1cyA9IChzdGF0dXMsIHRlc3RfbWFwKSA9PlxuICBMaXN0LmZpbHRlcihcbiAgICAoKF8sIGluc3RhbmNlcykpID0+IHN0YXR1cyA9PSBqb2ludF9zdGF0dXMoaW5zdGFuY2VzKSxcbiAgICB0ZXN0X21hcCxcbiAgKVxuICB8PiBMaXN0Lmxlbmd0aDtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFBhdHRlcm5NYXRjaDtcblxuLyogVHJhbnNpdGlvbi5yZVxuXG4gICBUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBldmFsdWF0aW9uIHNlbWFudGljcyBvZiBIYXplbCBpbiB0ZXJtcyBvZiBzbWFsbCBzdGVwXG4gICBldmFsdWF0aW9uLiBUaGVzZSBzbWFsbCBzdGVwcyBhcmUgd3JhcHBlZCB1cCBpbnRvIGEgYmlnIHN0ZXAgaW4gRXZhbHVhdG9yLnJlLlxuXG4gICBJJ2xsIHVzZSB0aGUgU2VxIGNhc2UgYXMgYW4gZXhhbXBsZTpcblxuICAgIHwgU2VxKGQxLCBkMikgPT5cbiAgICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGQxID0+IFNlcShkMSwgZDIpKVxuICAgICAgICBhbmQuIF8gPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCAwLCBkMSk7XG4gICAgICAgIFN0ZXAoe2V4cHI6IGQyLCBzdGF0ZSwga2luZDogU2VxLCBmaW5hbDogZmFsc2V9KTtcblxuXG4gICAgRWFjaCBzdGVwIHNlbWFudGljcyBzdGFydHMgd2l0aCBhIGBsZXQuICgpID0gb3RoZXJ3aXNlKC4uLilgIHRoYXQgZGVmaW5lcyBob3dcbiAgICB0byB3cmFwIHRoZSBleHByZXNzaW9uIGJhY2sgdXAgaWYgdGhlIHN0ZXAgY291bGRuJ3QgYmUgZXZhbHVhdGVkLlxuXG4gICAgVGhpcyBpcyBmb2xsb3dlZCBieSBhIHNlcmllcyBvZiBgYW5kLiBkMScgPSByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCA8aT4sIDxkMT4pYFxuICAgIHdoaWNoIGluZGljYXRlIHRoYXQgaW4gb3JkZXIgdG8gZXZhbHVhdGUgdGhlIHN0ZXAsIDxkMT4gbXVzdCBiZSBmaW5hbC4gKHJlcV92YWx1ZVxuICAgIGlzIGFsc28gYXZhaWxhYmxlIGlmIGl0IG5lZWRzIHRvIGJlIGEgdmFsdWUpLiBOb3RlIHRoYXQgaWYgc3VjY2Vzc2Z1bCwgZDEnIHdpbGxcbiAgICBiZSB0aGUgZnVsbHktZXZhbHVhdGVkIHZlcnNpb24gb2YgZDEuIFRoZSBzdWItZXhwcmVzc2lvbnMgYXJlIGFsbCBlbnVtZXJhdGVkIGJ5XG4gICAgdGhlIDxpPiBmaWVsZCwgc28gaT0wIGluZGljYXRlcyB0aGF0IGl0IGlzIHRoZSBmaXJzdCBzdWItZXhwcmVzc2lvbiwgaT0xIHRoZVxuICAgIHNlY29uZCBldGMuXG5cbiAgICBGaW5hbGx5LCB3ZSBoYXZlIHRoZSBTdGVwIGNvbnN0cnVjdCB0aGF0IGRlZmluZXMgdGhlIGFjdHVhbCBzdGVwLiBOb3RlIFwiU3RlcFwic1xuICAgIHNob3VsZCBiZSB1c2VkIGlmIGFuZCBvbmx5IGlmIHRoZXkgY2hhbmdlIHRoZSBleHByZXNzaW9uLiBJZiB0aGV5IGRvIG5vdCBjaGFuZ2VcbiAgICB0aGUgZXhwcmVzc2lvbiwgdXNlIGBDb25zdHJ1Y3RvcmAgb3IgYEluZGV0YC5cblxuICAgIFRoZSBzdGVwIGRlZmluZXMgZmlyc3RseSwgYSBgKCkgPT4gLi4uYCBmdW5jdGlvbiBnaXZpbmcgdGhlIHJlc3VsdCBvZiB0aGUgc3RlcCxcbiAgICBzZWNvbmRseSBhIGBraW5kYCwgdGhhdCBkZXNjcmliZXMgdGhlIHN0ZXAgKHdoaWNoIHdpbGwgYmUgdXNlZCBpbiB0aGUgc3RlcHBlcilcblxuICAgIExhc3RseSwgdGhlIGB2YWx1ZWAgZmllbGQgYWxsb3dzIGZvciBzb21lIHNwZWVkaW5nIHVwIG9mIHRoZSBldmFsdWF0b3IuIElmIHlvdVxuICAgIGFyZSB1bnN1cmUsIGl0IGlzIGFsd2F5cyBzYWZlIHRvIHB1dCBgaXNfdmFsdWU6IGZhbHNlYC5cblxuICAgIGBpc192YWx1ZTogdHJ1ZWAgZ3VhcmFudGVlczpcbiAgICAgIC0gaWYgYWxsIHJlcXVpcmVtZW50cyBhcmUgdmFsdWVzLCB0aGVuIHRoZSBvdXRwdXQgd2lsbCBiZSBhIHZhbHVlXG4gICAgICAtIGlmIHNvbWUgcmVxdWlyZW1lbnRzIGFyZSBpbmRldCwgdGhlbiB0aGUgb3V0cHV0IHdpbGwgYmUgaW5kZXRcblxuICAgIEEgdmFsdWUgaXMgZWl0aGVyIGEgbGl0ZXJhbCwgb3IgYSBmdW5jdGlvbiB3aXRoIGEgY2xvc3VyZSwgb3IgYSB0eXBlIGZ1bmN0aW9uLlxuICAgIChmdW5jdGlvbnMgd2l0aG91dCBjbG9zdXJlcyBpbW1lZGlhdGVseSBpbnNpZGUgdGhlbSBkbyBub3QgY291bnQgYXMgdmFsdWVzKS5cbiAgICovXG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcF9raW5kID1cbiAgfCBJbnZhbGlkU3RlcFxuICB8IFZhckxvb2t1cFxuICB8IFNlcVxuICB8IExldEJpbmRcbiAgfCBGdW5DbG9zdXJlXG4gIHwgRml4VW53cmFwXG4gIHwgRml4Q2xvc3VyZVxuICB8IFVwZGF0ZVRlc3RcbiAgfCBUeXBGdW5BcFxuICB8IEZ1bkFwXG4gIHwgRGVmZXJyZWRBcFxuICB8IENhc3RUeXBBcFxuICB8IENhc3RBcFxuICB8IEJ1aWx0aW5XcmFwXG4gIHwgQnVpbHRpbkFwKHN0cmluZylcbiAgfCBVbk9wKE9wZXJhdG9ycy5vcF91bilcbiAgfCBCaW5Cb29sT3AoT3BlcmF0b3JzLm9wX2Jpbl9ib29sKVxuICB8IEJpbkludE9wKE9wZXJhdG9ycy5vcF9iaW5faW50KVxuICB8IEJpbkZsb2F0T3AoT3BlcmF0b3JzLm9wX2Jpbl9mbG9hdClcbiAgfCBCaW5TdHJpbmdPcChPcGVyYXRvcnMub3BfYmluX3N0cmluZylcbiAgfCBDb25kaXRpb25hbChib29sKVxuICB8IFByb2plY3Rpb25cbiAgfCBMaXN0Q29uc1xuICB8IExpc3RDb25jYXRcbiAgfCBDYXNlQXBwbHlcbiAgfCBDb21wbGV0ZUNsb3N1cmVcbiAgfCBDb21wbGV0ZUZpbHRlclxuICB8IENhc3RcbiAgfCBSZW1vdmVUeXBlQWxpYXNcbiAgfCBSZW1vdmVQYXJlbnM7XG5sZXQgZXZhbHVhdGVfZXh0ZW5kX2VudiA9XG4gICAgKG5ld19iaW5kaW5nczogRW52aXJvbm1lbnQudCwgdG9fZXh0ZW5kOiBDbG9zdXJlRW52aXJvbm1lbnQudClcbiAgICA6IENsb3N1cmVFbnZpcm9ubWVudC50ID0+IHtcbiAgdG9fZXh0ZW5kXG4gIHw+IENsb3N1cmVFbnZpcm9ubWVudC5tYXBfb2ZcbiAgfD4gRW52aXJvbm1lbnQudW5pb24obmV3X2JpbmRpbmdzKVxuICB8PiBDbG9zdXJlRW52aXJvbm1lbnQub2ZfZW52aXJvbm1lbnQ7XG59O1xuXG50eXBlIHJ1bGUgPVxuICB8IFN0ZXAoe1xuICAgICAgZXhwcjogREhFeHAudCxcbiAgICAgIHN0YXRlX3VwZGF0ZTogdW5pdCA9PiB1bml0LFxuICAgICAga2luZDogc3RlcF9raW5kLFxuICAgICAgaXNfdmFsdWU6IGJvb2wsXG4gICAgfSlcbiAgfCBDb25zdHJ1Y3RvclxuICB8IEluZGV0O1xuXG5sZXQgKGxldC11bmJveCkgPSAoKHJlcXVlc3QsIHYpLCBmKSA9PlxuICBzd2l0Y2ggKFVuYm94aW5nLnVuYm94KHJlcXVlc3QsIHYpKSB7XG4gIHwgSW5kZXRNYXRjaFxuICB8IERvZXNOb3RNYXRjaCA9PiBJbmRldFxuICB8IE1hdGNoZXMobikgPT4gZihuKVxuICB9O1xuXG5tb2R1bGUgdHlwZSBFVl9NT0RFID0ge1xuICB0eXBlIHN0YXRlO1xuICB0eXBlIHJlc3VsdDtcbiAgdHlwZSByZXF1aXJlbWVudCgnYSk7XG4gIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYik7XG5cbiAgbGV0IHJlcV92YWx1ZTpcbiAgICAoREhFeHAudCA9PiByZXN1bHQsIEV2YWxDdHgudCA9PiBFdmFsQ3R4LnQsIERIRXhwLnQpID0+XG4gICAgcmVxdWlyZW1lbnQoREhFeHAudCk7XG4gIGxldCByZXFfYWxsX3ZhbHVlOlxuICAgIChcbiAgICAgIERIRXhwLnQgPT4gcmVzdWx0LFxuICAgICAgKEV2YWxDdHgudCwgKGxpc3QoREhFeHAudCksIGxpc3QoREhFeHAudCkpKSA9PiBFdmFsQ3R4LnQsXG4gICAgICBsaXN0KERIRXhwLnQpXG4gICAgKSA9PlxuICAgIHJlcXVpcmVtZW50KGxpc3QoREhFeHAudCkpO1xuICBsZXQgcmVxX2ZpbmFsOlxuICAgIChESEV4cC50ID0+IHJlc3VsdCwgRXZhbEN0eC50ID0+IEV2YWxDdHgudCwgREhFeHAudCkgPT5cbiAgICByZXF1aXJlbWVudChESEV4cC50KTtcbiAgbGV0IHJlcV9hbGxfZmluYWw6XG4gICAgKFxuICAgICAgREhFeHAudCA9PiByZXN1bHQsXG4gICAgICAoRXZhbEN0eC50LCAobGlzdChESEV4cC50KSwgbGlzdChESEV4cC50KSkpID0+IEV2YWxDdHgudCxcbiAgICAgIGxpc3QoREhFeHAudClcbiAgICApID0+XG4gICAgcmVxdWlyZW1lbnQobGlzdChESEV4cC50KSk7XG4gIGxldCByZXFfZmluYWxfb3JfdmFsdWU6XG4gICAgKERIRXhwLnQgPT4gcmVzdWx0LCBFdmFsQ3R4LnQgPT4gRXZhbEN0eC50LCBESEV4cC50KSA9PlxuICAgIHJlcXVpcmVtZW50KChESEV4cC50LCBib29sKSk7XG5cbiAgbGV0IChsZXQuKTogKHJlcXVpcmVtZW50cygnYSwgREhFeHAudCksICdhID0+IHJ1bGUpID0+IHJlc3VsdDtcbiAgbGV0IChhbmQuKTpcbiAgICAocmVxdWlyZW1lbnRzKCdhLCAnYyA9PiAnYiksIHJlcXVpcmVtZW50KCdjKSkgPT5cbiAgICByZXF1aXJlbWVudHMoKCdhLCAnYyksICdiKTtcbiAgbGV0IG90aGVyd2lzZTogKENsb3N1cmVFbnZpcm9ubWVudC50LCAnYSkgPT4gcmVxdWlyZW1lbnRzKHVuaXQsICdhKTtcblxuICBsZXQgdXBkYXRlX3Rlc3Q6IChzdGF0ZSwgSWQudCwgVGVzdE1hcC5pbnN0YW5jZV9yZXBvcnQpID0+IHVuaXQ7XG59O1xuXG5tb2R1bGUgVHJhbnNpdGlvbiA9IChFVjogRVZfTU9ERSkgPT4ge1xuICBvcGVuIEVWO1xuICBvcGVuIERIRXhwO1xuXG4gIC8vIERlZmF1bHQgc3RhdGUgdXBkYXRlXG4gIGxldCBzdGF0ZV91cGRhdGUgPSAoKSA9PiAoKTtcblxuICBsZXQgKGxldC5tYXRjaCkgPSAoKGVudiwgbWF0Y2hfcmVzdWx0OiBQYXR0ZXJuTWF0Y2gubWF0Y2hfcmVzdWx0KSwgcikgPT5cbiAgICBzd2l0Y2ggKG1hdGNoX3Jlc3VsdCkge1xuICAgIHwgSW5kZXRNYXRjaFxuICAgIHwgRG9lc05vdE1hdGNoID0+IEluZGV0XG4gICAgfCBNYXRjaGVzKGVudicpID0+IHIoZXZhbHVhdGVfZXh0ZW5kX2VudihlbnYnLCBlbnYpKVxuICAgIH07XG5cbiAgLyogTm90ZVtNYXR0XTogRm9yIElEcywgSSdtIGN1cnJlbnRseSB1c2luZyBhIGZyZXNoIGlkXG4gICAgIGlmIGFueXRoaW5nIGFib3V0IHRoZSBjdXJyZW50IG5vZGUgY2hhbmdlcywgaWYgb25seSBpdHNcbiAgICAgY2hpbGRyZW4gY2hhbmdlLCB3ZSB1c2UgcmV3cmFwICovXG5cbiAgbGV0IHRyYW5zaXRpb24gPSAocmVxLCBzdGF0ZSwgZW52LCBkKTogJ2EgPT4ge1xuICAgIC8vIFNwbGl0IERIRXhwIGludG8gdGVybSBhbmQgaWQgaW5mb3JtYXRpb25cbiAgICBsZXQgKHRlcm0sIHJld3JhcCkgPSBESEV4cC51bndyYXAoZCk7XG4gICAgbGV0IHdyYXBfY3R4ID0gKHRlcm0pOiBFdmFsQ3R4LnQgPT4gVGVybSh7dGVybSwgaWRzOiBbcmVwX2lkKGQpXX0pO1xuXG4gICAgLy8gVHJhbnNpdGlvbiBydWxlc1xuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgVmFyKHgpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBWYXIoeCkgfD4gcmV3cmFwKTtcbiAgICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpKSB7XG4gICAgICB8IFNvbWUoZCkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogZCB8PiBmYXN0X2NvcHkoSWQubWsoKSksXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IFZhckxvb2t1cCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB8IE5vbmUgPT4gSW5kZXRcbiAgICAgIH07XG4gICAgfCBTZXEoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gU2VxKGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBfID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gU2VxMShkMSwgZDIpIHw+IHdyYXBfY3R4LCBkMSk7XG4gICAgICBTdGVwKHtleHByOiBkMiwgc3RhdGVfdXBkYXRlLCBraW5kOiBTZXEsIGlzX3ZhbHVlOiBmYWxzZX0pO1xuICAgIHwgTGV0KGRwLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBMZXQoZHAsIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfZmluYWwocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBMZXQxKGRwLCBkMSwgZDIpIHw+IHdyYXBfY3R4LCBkMSk7XG4gICAgICBsZXQubWF0Y2ggZW52JyA9IChlbnYsIG1hdGNoZXMoZHAsIGQxJykpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IENsb3N1cmUoZW52JywgZDIpIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IExldEJpbmQsXG4gICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIHwgVHlwRnVuKF8pXG4gICAgfCBGdW4oXywgXywgU29tZShfKSwgXykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgQ29uc3RydWN0b3I7XG4gICAgfCBGdW4ocCwgZDEsIE5vbmUsIHYpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBGdW4ocCwgZDEsIFNvbWUoZW52KSwgdikgfD4gcmV3cmFwLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEZ1bkNsb3N1cmUsXG4gICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfCBGaXhGKGRwLCBkMSwgTm9uZSkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIEZpeEYoZHAsIGQxLCBOb25lKSB8PiByZXdyYXApO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IEZpeEYoZHAsIGQxLCBTb21lKGVudikpIHw+IHJld3JhcCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBGaXhDbG9zdXJlLFxuICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IEZpeEYoZHAsIGQxLCBTb21lKGVudikpID0+XG4gICAgICBzd2l0Y2ggKERIUGF0LmdldF92YXIoZHApKSB7XG4gICAgICAvLyBTaW1wbGUgUmVjdXJzaW9uIGNhc2VcbiAgICAgIHwgU29tZShmKSA9PlxuICAgICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgICAgbGV0IGVudicnID1cbiAgICAgICAgICBldmFsdWF0ZV9leHRlbmRfZW52KFxuICAgICAgICAgICAgRW52aXJvbm1lbnQuc2luZ2xldG9uKChmLCBGaXhGKGRwLCBkMSwgU29tZShlbnYpKSB8PiByZXdyYXApKSxcbiAgICAgICAgICAgIGVudixcbiAgICAgICAgICApO1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOiBDbG9zdXJlKGVudicnLCBkMSkgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEZpeFVud3JhcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgLy8gTXV0dWFsIFJlY3Vyc2lvbiBjYXNlXG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICAgIGxldCBiaW5kaW5ncyA9IERIUGF0LmJvdW5kX3ZhcnMoZHApO1xuICAgICAgICBsZXQgc3Vic3RpdHV0aW9ucyA9XG4gICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICBiaW5kaW5nID0+XG4gICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBiaW5kaW5nLFxuICAgICAgICAgICAgICAgIExldChcbiAgICAgICAgICAgICAgICAgIGRwLFxuICAgICAgICAgICAgICAgICAgRml4RihkcCwgZDEsIFNvbWUoZW52KSkgfD4gcmV3cmFwLFxuICAgICAgICAgICAgICAgICAgVmFyKGJpbmRpbmcpIHw+IGZyZXNoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB8PiBmcmVzaCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGJpbmRpbmdzLFxuICAgICAgICAgICk7XG4gICAgICAgIGxldCBlbnYnJyA9XG4gICAgICAgICAgZXZhbHVhdGVfZXh0ZW5kX2VudihFbnZpcm9ubWVudC5vZl9saXN0KHN1YnN0aXR1dGlvbnMpLCBlbnYpO1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOiBDbG9zdXJlKGVudicnLCBkMSkgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEZpeFVud3JhcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIHwgVGVzdChkKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKChkLCBfKSkgPT4gVGVzdChkKSB8PiByZXdyYXApXG4gICAgICBhbmQuIChkJywgaXNfdmFsdWUpID1cbiAgICAgICAgcmVxX2ZpbmFsX29yX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgZCA9PiBUZXN0KGQpIHw+IHdyYXBfY3R4LCBkKTtcbiAgICAgIGxldCByZXN1bHQ6IFRlc3RTdGF0dXMudCA9XG4gICAgICAgIGlmIChpc192YWx1ZSkge1xuICAgICAgICAgIHN3aXRjaCAoVW5ib3hpbmcudW5ib3goQm9vbCwgZCcpKSB7XG4gICAgICAgICAgfCBEb2VzTm90TWF0Y2hcbiAgICAgICAgICB8IEluZGV0TWF0Y2ggPT4gSW5kZXRcbiAgICAgICAgICB8IE1hdGNoZXMoYikgPT4gYiA/IFBhc3MgOiBGYWlsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBJbmRldDtcbiAgICAgICAgfTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBUdXBsZShbXSkgfD4gZnJlc2gsXG4gICAgICAgIHN0YXRlX3VwZGF0ZTogKCkgPT5cbiAgICAgICAgICB1cGRhdGVfdGVzdChzdGF0ZSwgREhFeHAucmVwX2lkKGQpLCAoZCcsIHJlc3VsdCkpLFxuICAgICAgICBraW5kOiBVcGRhdGVUZXN0LFxuICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgVHlwQXAoZCwgdGF1KSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCA9PiBUeXBBcChkLCB0YXUpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZCcgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkID0+IFR5cEFwKGQsIHRhdSkgfD4gd3JhcF9jdHgsIGQpO1xuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQnKSkge1xuICAgICAgfCBUeXBGdW4odXRwYXQsIHRmYm9keSwgbmFtZSkgPT5cbiAgICAgICAgLyogUnVsZSBJVFRMYW0gKi9cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjpcbiAgICAgICAgICAgIERIRXhwLmFzc2lnbl9uYW1lX2lmX25vbmUoXG4gICAgICAgICAgICAgIC8qIEluaGVyaXQgbmFtZSBmb3IgdXNlciBjbGFyaXR5ICovXG4gICAgICAgICAgICAgIERIRXhwLnR5X3N1YnN0KHRhdSwgdXRwYXQsIHRmYm9keSksXG4gICAgICAgICAgICAgIE9wdGlvbi5tYXAoXG4gICAgICAgICAgICAgICAgeCA9PiB4ICsrIFwiQDxcIiArKyBUeXAucHJldHR5X3ByaW50KHRhdSkgKysgXCI+XCIsXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IFR5cEZ1bkFwLFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIHwgQ2FzdChcbiAgICAgICAgICBkJycsXG4gICAgICAgICAge3Rlcm06IEZvcmFsbCh0cDEsIF8pLCBffSBhcyB0MSxcbiAgICAgICAgICB7dGVybTogRm9yYWxsKHRwMiwgXyksIF99IGFzIHQyLFxuICAgICAgICApID0+XG4gICAgICAgIC8qIFJ1bGUgSVRUQXBDYXN0ICovXG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6XG4gICAgICAgICAgICBDYXN0KFxuICAgICAgICAgICAgICBUeXBBcChkJycsIHRhdSkgfD4gRXhwLmZyZXNoLFxuICAgICAgICAgICAgICBUeXAuc3Vic3QodGF1LCB0cDEsIHQxKSxcbiAgICAgICAgICAgICAgVHlwLnN1YnN0KHRhdSwgdHAyLCB0MiksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICB8PiBFeHAuZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IENhc3RUeXBBcCxcbiAgICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICAgIH0pXG4gICAgICB8IF8gPT4gcmFpc2UoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKEludmFsaWRCb3hlZFR5cEZ1bihkJykpKVxuICAgICAgfTtcbiAgICB8IERlZmVycmVkQXAoZDEsIGRzKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkcykgPT4gRGVmZXJyZWRBcChkMSwgZHMpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gRGVmZXJyZWRBcDEoZDEsIGRzKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBfID1cbiAgICAgICAgcmVxX2FsbF9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgKGQyLCBkcykgPT4gRGVmZXJyZWRBcDIoZDEsIGQyLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZHMsXG4gICAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IEFwKGRpciwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCAoZDIsIF8pKSA9PiBBcChkaXIsIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUocmVxKHN0YXRlLCBlbnYpLCBkMSA9PiBBcDEoZGlyLCBkMSwgZDIpIHw+IHdyYXBfY3R4LCBkMSlcbiAgICAgIGFuZC4gKGQyJywgZDJfaXNfdmFsdWUpID1cbiAgICAgICAgcmVxX2ZpbmFsX29yX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMiA9PiBBcDIoZGlyLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQyLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQxJykpIHtcbiAgICAgIHwgQ29uc3RydWN0b3IoXykgPT4gQ29uc3RydWN0b3JcbiAgICAgIHwgRnVuKGRwLCBkMywgU29tZShlbnYnKSwgXykgPT5cbiAgICAgICAgbGV0Lm1hdGNoIGVudicnID0gKGVudicsIG1hdGNoZXMoZHAsIGQyJykpO1xuICAgICAgICBTdGVwKHtcbiAgICAgICAgICBleHByOiBDbG9zdXJlKGVudicnLCBkMykgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEZ1bkFwLFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB8IENhc3QoXG4gICAgICAgICAgZDMnLFxuICAgICAgICAgIHt0ZXJtOiBBcnJvdyh0eTEsIHR5MiksIF99LFxuICAgICAgICAgIHt0ZXJtOiBBcnJvdyh0eTEnLCB0eTInKSwgX30sXG4gICAgICAgICkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjpcbiAgICAgICAgICAgIENhc3QoXG4gICAgICAgICAgICAgIEFwKGRpciwgZDMnLCBDYXN0KGQyJywgdHkxJywgdHkxKSB8PiBmcmVzaCkgfD4gZnJlc2gsXG4gICAgICAgICAgICAgIHR5MixcbiAgICAgICAgICAgICAgdHkyJyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHw+IGZyZXNoLFxuICAgICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAgICBraW5kOiBDYXN0QXAsXG4gICAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgfCBCdWlsdGluRnVuKGlkZW50KSA9PlxuICAgICAgICBpZiAoZDJfaXNfdmFsdWUpIHtcbiAgICAgICAgICBTdGVwKHtcbiAgICAgICAgICAgIGV4cHI6IHtcbiAgICAgICAgICAgICAgbGV0IGJ1aWx0aW4gPVxuICAgICAgICAgICAgICAgIFZhck1hcC5sb29rdXAoQnVpbHRpbnMuZm9ybXNfaW5pdCwgaWRlbnQpXG4gICAgICAgICAgICAgICAgfD4gT3B0VXRpbC5nZXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgLyogVGhpcyBleGNlcHRpb24gc2hvdWxkIG5ldmVyIGJlIHJhaXNlZCBiZWNhdXNlIHRoZXJlIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICBubyB3YXkgZm9yIHRoZSB1c2VyIHRvIGNyZWF0ZSBhIEJ1aWx0aW5GdW4uIFRoZXkgYXJlIGFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWQgaW50byB0aGUgY29udGV4dCBiZWZvcmUgZXZhbHVhdGlvbi4gKi9cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlKFxuICAgICAgICAgICAgICAgICAgICAgICBFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24oSW52YWxpZEJ1aWx0aW4oaWRlbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgYnVpbHRpbihkMik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgICAga2luZDogQnVpbHRpbkFwKGlkZW50KSxcbiAgICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSAvLyBOb3QgbmVjZXNzYXJpbHkgYSB2YWx1ZSBiZWNhdXNlIG9mIEludmFsaWRPcGVyYXRpb25zXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgSW5kZXQ7XG4gICAgICAgIH1cbiAgICAgIC8qIFRoaXMgY2FzZSBpc24ndCBjdXJyZW50bHkgdXNlZCBiZWNhdXNlIGRlZmVycmFscyBhcmUgZWxhYm9yYXRlZCBhd2F5ICovXG4gICAgICB8IERlZmVycmVkQXAoZDMsIGQ0cykgPT5cbiAgICAgICAgbGV0IG5fYXJncyA9XG4gICAgICAgICAgTGlzdC5sZW5ndGgoXG4gICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgZnVuXG4gICAgICAgICAgICAgIHwge3Rlcm06IERlZmVycmFsKF8pLCBffSA9PiB0cnVlXG4gICAgICAgICAgICAgIHwgXyA9PiBmYWxzZTogRXhwLnQgPT4gYm9vbCxcbiAgICAgICAgICAgICAgZDRzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICBsZXQtdW5ib3ggYXJncyA9IChUdXBsZShuX2FyZ3MpLCBkMik7XG4gICAgICAgIGxldCBuZXdfYXJncyA9IHtcbiAgICAgICAgICBsZXQgcmVjIGdvID0gKGRlZmVycmVkLCBhcmdzKSA9PlxuICAgICAgICAgICAgc3dpdGNoICgoZGVmZXJyZWQ6IGxpc3QoRXhwLnQpKSkge1xuICAgICAgICAgICAgfCBbXSA9PiBbXVxuICAgICAgICAgICAgfCBbe3Rlcm06IERlZmVycmFsKF8pLCBffSwgLi4uZGVmZXJyZWRdID0+XG4gICAgICAgICAgICAgIC8qIEkgY2FuIHVzZSBMaXN0LmhkIGFuZCBMaXN0LnRsIGhlcmUgYmVjYXVzZSBsZXQtdW5ib3ggZW5zdXJlIHRoYXRcbiAgICAgICAgICAgICAgICAgdGhlcmUgYXJlIHRoZSBjb3JyZWN0IG51bWJlciBvZiBhcmdzICovXG4gICAgICAgICAgICAgIFtMaXN0LmhkKGFyZ3MpLCAuLi5nbyhkZWZlcnJlZCwgTGlzdC50bChhcmdzKSldXG4gICAgICAgICAgICB8IFt4LCAuLi5kZWZlcnJlZF0gPT4gW3gsIC4uLmdvKGRlZmVycmVkLCBhcmdzKV1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgZ28oZDRzLCBhcmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogQXAoRm9yd2FyZCwgZDMsIFR1cGxlKG5ld19hcmdzKSB8PiBmcmVzaCkgfD4gZnJlc2gsXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IERlZmVycmVkQXAsXG4gICAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIHwgQ2FzdChfKVxuICAgICAgfCBGYWlsZWRDYXN0KF8pID0+IEluZGV0XG4gICAgICB8IEZpeEYoXykgPT5cbiAgICAgICAgcHJpbnRfZW5kbGluZShFeHAuc2hvdyhkMSkpO1xuICAgICAgICBwcmludF9lbmRsaW5lKEV4cC5zaG93KGQxJykpO1xuICAgICAgICBwcmludF9lbmRsaW5lKFwiRklYRlwiKTtcbiAgICAgICAgZmFpbHdpdGgoXCJGaXhGIGluIEFwXCIpO1xuICAgICAgfCBfID0+XG4gICAgICAgIFN0ZXAoe1xuICAgICAgICAgIGV4cHI6IHtcbiAgICAgICAgICAgIHJhaXNlKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihJbnZhbGlkQm94ZWRGdW4oZDEnKSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICAgIGtpbmQ6IEludmFsaWRTdGVwLFxuICAgICAgICAgIGlzX3ZhbHVlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgfTtcbiAgICB8IERlZmVycmFsKF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIEluZGV0O1xuICAgIHwgQm9vbChfKVxuICAgIHwgSW50KF8pXG4gICAgfCBGbG9hdChfKVxuICAgIHwgU3RyaW5nKF8pXG4gICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgIHwgQnVpbHRpbkZ1bihfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IElmKGMsIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGMgPT4gSWYoYywgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGMnID1cbiAgICAgICAgcmVxX3ZhbHVlKHJlcShzdGF0ZSwgZW52KSwgYyA9PiBJZjEoYywgZDEsIGQyKSB8PiB3cmFwX2N0eCwgYyk7XG4gICAgICBsZXQtdW5ib3ggYiA9IChCb29sLCBjJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjoge1xuICAgICAgICAgIGIgPyBkMSA6IGQyO1xuICAgICAgICB9LFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIC8vIEF0dGFjaCBjJyB0byBpbmRpY2F0ZSB3aGljaCBicmFuY2ggdGFrZW4uXG4gICAgICAgIGtpbmQ6IENvbmRpdGlvbmFsKGIpLFxuICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgXykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgSW5kZXQ7XG4gICAgfCBVbk9wKEludChNaW51cyksIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gVW5PcChJbnQoTWludXMpLCBkMSkgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGMgPT4gVW5PcChJbnQoTWludXMpLCBjKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKTtcbiAgICAgIGxldC11bmJveCBuID0gKEludCwgZDEnKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBJbnQoLSBuKSB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBVbk9wKEludChNaW51cykpLFxuICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIHwgVW5PcChCb29sKE5vdCksIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gVW5PcChCb29sKE5vdCksIGQxKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgYyA9PiBVbk9wKEJvb2woTm90KSwgYykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDEsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggYiA9IChCb29sLCBkMScpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IEJvb2woIWIpIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IFVuT3AoQm9vbChOb3QpKSxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IEJpbk9wKEJvb2woQW5kKSwgZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gQmluT3AoQm9vbChBbmQpLCBkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBCaW5PcDEoQm9vbChBbmQpLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IGIxID0gKEJvb2wsIGQxJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjogYjEgPyBkMiA6IEJvb2woZmFsc2UpIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEJpbkJvb2xPcChBbmQpLFxuICAgICAgICBpc192YWx1ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB8IEJpbk9wKEJvb2woT3IpLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkMSA9PiBCaW5PcChCb29sKE9yKSwgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gQmluT3AxKEJvb2woT3IpLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IGIxID0gKEJvb2wsIGQxJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjogYjEgPyBCb29sKHRydWUpIHw+IGZyZXNoIDogZDIsXG4gICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAga2luZDogQmluQm9vbE9wKE9yKSxcbiAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBCaW5PcChJbnQob3ApLCBkMSwgZDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCAoZDEsIGQyKSA9PiBCaW5PcChJbnQob3ApLCBkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBCaW5PcDEoSW50KG9wKSwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQyID0+IEJpbk9wMihJbnQob3ApLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQyLFxuICAgICAgICApO1xuICAgICAgbGV0LXVuYm94IG4xID0gKEludCwgZDEnKTtcbiAgICAgIGxldC11bmJveCBuMiA9IChJbnQsIGQyJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjpcbiAgICAgICAgICAoXG4gICAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICB8IFBsdXMgPT4gSW50KG4xICsgbjIpXG4gICAgICAgICAgICB8IE1pbnVzID0+IEludChuMSAtIG4yKVxuICAgICAgICAgICAgfCBQb3dlciB3aGVuIG4yIDwgMCA9PlxuICAgICAgICAgICAgICBEeW5hbWljRXJyb3JIb2xlKFxuICAgICAgICAgICAgICAgIEJpbk9wKEludChvcCksIGQxJywgZDInKSB8PiByZXdyYXAsXG4gICAgICAgICAgICAgICAgTmVnYXRpdmVFeHBvbmVudCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBQb3dlciA9PiBJbnQoSW50VXRpbC5pcG93KG4xLCBuMikpXG4gICAgICAgICAgICB8IFRpbWVzID0+IEludChuMSAqIG4yKVxuICAgICAgICAgICAgfCBEaXZpZGUgd2hlbiBuMiA9PSAwID0+XG4gICAgICAgICAgICAgIER5bmFtaWNFcnJvckhvbGUoXG4gICAgICAgICAgICAgICAgQmluT3AoSW50KG9wKSwgZDEnLCBkMScpIHw+IHJld3JhcCxcbiAgICAgICAgICAgICAgICBEaXZpZGVCeVplcm8sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgRGl2aWRlID0+IEludChuMSAvIG4yKVxuICAgICAgICAgICAgfCBMZXNzVGhhbiA9PiBCb29sKG4xIDwgbjIpXG4gICAgICAgICAgICB8IExlc3NUaGFuT3JFcXVhbCA9PiBCb29sKG4xIDw9IG4yKVxuICAgICAgICAgICAgfCBHcmVhdGVyVGhhbiA9PiBCb29sKG4xID4gbjIpXG4gICAgICAgICAgICB8IEdyZWF0ZXJUaGFuT3JFcXVhbCA9PiBCb29sKG4xID49IG4yKVxuICAgICAgICAgICAgfCBFcXVhbHMgPT4gQm9vbChuMSA9PSBuMilcbiAgICAgICAgICAgIHwgTm90RXF1YWxzID0+IEJvb2wobjEgIT0gbjIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgKVxuICAgICAgICAgIHw+IGZyZXNoLFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEJpbkludE9wKG9wKSxcbiAgICAgICAgLy8gRmFsc2Ugc28gdGhhdCBJbnZhbGlkT3BlcmF0aW9ucyBhcmUgY2F1Z2h0IGFuZCBtYWRlIGluZGV0IGJ5IHRoZSBuZXh0IHN0ZXBcbiAgICAgICAgaXNfdmFsdWU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfCBCaW5PcChGbG9hdChvcCksIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9XG4gICAgICAgIG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IEJpbk9wKEZsb2F0KG9wKSwgZDEsIGQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQxJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gQmluT3AxKEZsb2F0KG9wKSwgZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMSxcbiAgICAgICAgKVxuICAgICAgYW5kLiBkMicgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQyID0+IEJpbk9wMihGbG9hdChvcCksIGQxLCBkMikgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDIsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggbjEgPSAoRmxvYXQsIGQxJyk7XG4gICAgICBsZXQtdW5ib3ggbjIgPSAoRmxvYXQsIGQyJyk7XG4gICAgICBTdGVwKHtcbiAgICAgICAgZXhwcjpcbiAgICAgICAgICAoXG4gICAgICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICB8IFBsdXMgPT4gRmxvYXQobjEgKy4gbjIpXG4gICAgICAgICAgICB8IE1pbnVzID0+IEZsb2F0KG4xIC0uIG4yKVxuICAgICAgICAgICAgfCBQb3dlciA9PiBGbG9hdChuMSAqKiBuMilcbiAgICAgICAgICAgIHwgVGltZXMgPT4gRmxvYXQobjEgKi4gbjIpXG4gICAgICAgICAgICB8IERpdmlkZSA9PiBGbG9hdChuMSAvLiBuMilcbiAgICAgICAgICAgIHwgTGVzc1RoYW4gPT4gQm9vbChuMSA8IG4yKVxuICAgICAgICAgICAgfCBMZXNzVGhhbk9yRXF1YWwgPT4gQm9vbChuMSA8PSBuMilcbiAgICAgICAgICAgIHwgR3JlYXRlclRoYW4gPT4gQm9vbChuMSA+IG4yKVxuICAgICAgICAgICAgfCBHcmVhdGVyVGhhbk9yRXF1YWwgPT4gQm9vbChuMSA+PSBuMilcbiAgICAgICAgICAgIHwgRXF1YWxzID0+IEJvb2wobjEgPT0gbjIpXG4gICAgICAgICAgICB8IE5vdEVxdWFscyA9PiBCb29sKG4xICE9IG4yKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIClcbiAgICAgICAgICB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBCaW5GbG9hdE9wKG9wKSxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IEJpbk9wKFN0cmluZyhvcCksIGQxLCBkMikgPT5cbiAgICAgIGxldC4gXyA9XG4gICAgICAgIG90aGVyd2lzZShlbnYsIChkMSwgZDIpID0+IEJpbk9wKFN0cmluZyhvcCksIGQxLCBkMikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMScgPVxuICAgICAgICByZXFfdmFsdWUoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIGQxID0+IEJpbk9wMShTdHJpbmcob3ApLCBkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDIgPT4gQmluT3AyKFN0cmluZyhvcCksIGQxLCBkMikgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZDIsXG4gICAgICAgICk7XG4gICAgICBsZXQtdW5ib3ggczEgPSAoU3RyaW5nLCBkMScpO1xuICAgICAgbGV0LXVuYm94IHMyID0gKFN0cmluZywgZDInKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOlxuICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICB8IENvbmNhdCA9PiBTdHJpbmcoczEgKysgczIpIHw+IGZyZXNoXG4gICAgICAgICAgfCBFcXVhbHMgPT4gQm9vbChzMSA9PSBzMikgfD4gZnJlc2hcbiAgICAgICAgICB9LFxuICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgIGtpbmQ6IEJpblN0cmluZ09wKG9wKSxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IFR1cGxlKGRzKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZHMgPT4gVHVwbGUoZHMpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gXyA9XG4gICAgICAgIHJlcV9hbGxfZmluYWwoXG4gICAgICAgICAgcmVxKHN0YXRlLCBlbnYpLFxuICAgICAgICAgIChkMSwgZHMpID0+IFR1cGxlKGQxLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZHMsXG4gICAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IENvbnMoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gQ29ucyhkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZDEgPT4gQ29uczEoZDEsIGQyKSB8PiB3cmFwX2N0eCwgZDEpXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShyZXEoc3RhdGUsIGVudiksIGQyID0+IENvbnMyKGQxLCBkMikgfD4gd3JhcF9jdHgsIGQyKTtcbiAgICAgIGxldC11bmJveCBkcyA9IChMaXN0LCBkMicpO1xuICAgICAgU3RlcCh7XG4gICAgICAgIGV4cHI6IExpc3RMaXQoW2QxJywgLi4uZHNdKSB8PiBmcmVzaCxcbiAgICAgICAgc3RhdGVfdXBkYXRlLFxuICAgICAgICBraW5kOiBMaXN0Q29ucyxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IExpc3RDb25jYXQoZDEsIGQyKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgKGQxLCBkMikgPT4gTGlzdENvbmNhdChkMSwgZDIpIHw+IHJld3JhcClcbiAgICAgIGFuZC4gZDEnID1cbiAgICAgICAgcmVxX3ZhbHVlKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBMaXN0Q29uY2F0MShkMSwgZDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApXG4gICAgICBhbmQuIGQyJyA9XG4gICAgICAgIHJlcV92YWx1ZShcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDIgPT4gTGlzdENvbmNhdDIoZDEsIGQyKSB8PiB3cmFwX2N0eCxcbiAgICAgICAgICBkMixcbiAgICAgICAgKTtcbiAgICAgIGxldC11bmJveCBkczEgPSAoTGlzdCwgZDEnKTtcbiAgICAgIGxldC11bmJveCBkczIgPSAoTGlzdCwgZDInKTtcbiAgICAgIFN0ZXAoe1xuICAgICAgICBleHByOiBMaXN0TGl0KGRzMSBAIGRzMikgfD4gZnJlc2gsXG4gICAgICAgIHN0YXRlX3VwZGF0ZSxcbiAgICAgICAga2luZDogTGlzdENvbmNhdCxcbiAgICAgICAgaXNfdmFsdWU6IHRydWUsXG4gICAgICB9KTtcbiAgICB8IExpc3RMaXQoZHMpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkcyA9PiBMaXN0TGl0KGRzKSB8PiByZXdyYXApXG4gICAgICBhbmQuIF8gPVxuICAgICAgICByZXFfYWxsX2ZpbmFsKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICAoZDEsIGRzKSA9PiBMaXN0TGl0KGQxLCBkcykgfD4gd3JhcF9jdHgsXG4gICAgICAgICAgZHMsXG4gICAgICAgICk7XG4gICAgICBDb25zdHJ1Y3RvcjtcbiAgICB8IE1hdGNoKGQxLCBydWxlcykgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IE1hdGNoKGQxLCBydWxlcykgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMSA9XG4gICAgICAgIHJlcV9maW5hbChcbiAgICAgICAgICByZXEoc3RhdGUsIGVudiksXG4gICAgICAgICAgZDEgPT4gTWF0Y2hTY3J1dChkMSwgcnVsZXMpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgbGV0IHJlYyBuZXh0X3J1bGUgPSAoXG4gICAgICAgIGZ1blxuICAgICAgICB8IFtdID0+IE5vbmVcbiAgICAgICAgfCBbKGRwLCBkMiksIC4uLnJ1bGVzXSA9PlxuICAgICAgICAgIHN3aXRjaCAobWF0Y2hlcyhkcCwgZDEpKSB7XG4gICAgICAgICAgfCBNYXRjaGVzKGVudicpID0+IFNvbWUoKGVudicsIGQyKSlcbiAgICAgICAgICB8IERvZXNOb3RNYXRjaCA9PiBuZXh0X3J1bGUocnVsZXMpXG4gICAgICAgICAgfCBJbmRldE1hdGNoID0+IE5vbmVcbiAgICAgICAgICB9XG4gICAgICApO1xuICAgICAgc3dpdGNoIChuZXh0X3J1bGUocnVsZXMpKSB7XG4gICAgICB8IFNvbWUoKGVudicsIGQyKSkgPT5cbiAgICAgICAgU3RlcCh7XG4gICAgICAgICAgZXhwcjogQ2xvc3VyZShldmFsdWF0ZV9leHRlbmRfZW52KGVudicsIGVudiksIGQyKSB8PiBmcmVzaCxcbiAgICAgICAgICBzdGF0ZV91cGRhdGUsXG4gICAgICAgICAga2luZDogQ2FzZUFwcGx5LFxuICAgICAgICAgIGlzX3ZhbHVlOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIHwgTm9uZSA9PiBJbmRldFxuICAgICAgfTtcbiAgICB8IENsb3N1cmUoZW52JywgZCkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQgPT4gQ2xvc3VyZShlbnYnLCBkKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQnID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52JyksIGQxID0+IENsb3N1cmUoZW52JywgZDEpIHw+IHdyYXBfY3R4LCBkKTtcbiAgICAgIFN0ZXAoe2V4cHI6IGQnLCBzdGF0ZV91cGRhdGUsIGtpbmQ6IENvbXBsZXRlQ2xvc3VyZSwgaXNfdmFsdWU6IHRydWV9KTtcbiAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICAvLyBhbmQuIF8gPVxuICAgICAgLy8gICByZXFfYWxsX2ZpbmFsKFxuICAgICAgLy8gICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgIC8vICAgICAoZDEsIGRzKSA9PiBNdWx0aUhvbGUoZDEsIGRzKSB8PiB3cmFwX2N0eCxcbiAgICAgIC8vICAgICBkcyxcbiAgICAgIC8vICAgKTtcbiAgICAgIEluZGV0O1xuICAgIHwgRW1wdHlIb2xlXG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkKTtcbiAgICAgIEluZGV0O1xuICAgIHwgQ2FzdChkLCB0MSwgdDIpID0+XG4gICAgICBsZXQuIF8gPSBvdGhlcndpc2UoZW52LCBkID0+IENhc3QoZCwgdDEsIHQyKSB8PiByZXdyYXApXG4gICAgICBhbmQuIGQnID1cbiAgICAgICAgcmVxX2ZpbmFsKHJlcShzdGF0ZSwgZW52KSwgZCA9PiBDYXN0KGQsIHQxLCB0MikgfD4gd3JhcF9jdHgsIGQpO1xuICAgICAgc3dpdGNoIChDYXN0cy50cmFuc2l0aW9uKENhc3QoZCcsIHQxLCB0MikgfD4gcmV3cmFwKSkge1xuICAgICAgfCBTb21lKGQpID0+IFN0ZXAoe2V4cHI6IGQsIHN0YXRlX3VwZGF0ZSwga2luZDogQ2FzdCwgaXNfdmFsdWU6IGZhbHNlfSlcbiAgICAgIHwgTm9uZSA9PiBDb25zdHJ1Y3RvclxuICAgICAgfTtcbiAgICB8IEZhaWxlZENhc3QoZDEsIHQxLCB0MikgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQxID0+IEZhaWxlZENhc3QoZDEsIHQxLCB0MikgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBfID1cbiAgICAgICAgcmVxX2ZpbmFsKFxuICAgICAgICAgIHJlcShzdGF0ZSwgZW52KSxcbiAgICAgICAgICBkMSA9PiBGYWlsZWRDYXN0KGQxLCB0MSwgdDIpIHw+IHdyYXBfY3R4LFxuICAgICAgICAgIGQxLFxuICAgICAgICApO1xuICAgICAgSW5kZXQ7XG4gICAgfCBQYXJlbnMoZCkgPT5cbiAgICAgIGxldC4gXyA9IG90aGVyd2lzZShlbnYsIGQpO1xuICAgICAgU3RlcCh7ZXhwcjogZCwgc3RhdGVfdXBkYXRlLCBraW5kOiBSZW1vdmVQYXJlbnMsIGlzX3ZhbHVlOiBmYWxzZX0pO1xuICAgIHwgVHlBbGlhcyhfLCBfLCBkKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZCk7XG4gICAgICBTdGVwKHtleHByOiBkLCBzdGF0ZV91cGRhdGUsIGtpbmQ6IFJlbW92ZVR5cGVBbGlhcywgaXNfdmFsdWU6IGZhbHNlfSk7XG4gICAgfCBGaWx0ZXIoZjEsIGQxKSA9PlxuICAgICAgbGV0LiBfID0gb3RoZXJ3aXNlKGVudiwgZDEgPT4gRmlsdGVyKGYxLCBkMSkgfD4gcmV3cmFwKVxuICAgICAgYW5kLiBkMSA9XG4gICAgICAgIHJlcV9maW5hbChyZXEoc3RhdGUsIGVudiksIGQxID0+IEZpbHRlcihmMSwgZDEpIHw+IHdyYXBfY3R4LCBkMSk7XG4gICAgICBTdGVwKHtleHByOiBkMSwgc3RhdGVfdXBkYXRlLCBraW5kOiBDb21wbGV0ZUZpbHRlciwgaXNfdmFsdWU6IHRydWV9KTtcbiAgICB9O1xuICB9O1xufTtcblxubGV0IHNob3VsZF9oaWRlX3N0ZXAgPSAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MuRXZhbHVhdGlvbi50KSA9PlxuICBmdW5cbiAgfCBMZXRCaW5kXG4gIHwgU2VxXG4gIHwgVXBkYXRlVGVzdFxuICB8IFR5cEZ1bkFwXG4gIHwgRnVuQXBcbiAgfCBEZWZlcnJlZEFwXG4gIHwgQnVpbHRpbkFwKF8pXG4gIHwgQmluQm9vbE9wKF8pXG4gIHwgQmluSW50T3AoXylcbiAgfCBCaW5GbG9hdE9wKF8pXG4gIHwgQmluU3RyaW5nT3AoXylcbiAgfCBVbk9wKF8pXG4gIHwgTGlzdENvbnNcbiAgfCBMaXN0Q29uY2F0XG4gIHwgQ2FzZUFwcGx5XG4gIHwgUHJvamVjdGlvbiAvLyBUT0RPKE1hdHQpOiBXZSBkb24ndCB3YW50IHRvIHNob3cgcHJvamVjdGlvbiB0byB0aGUgdXNlclxuICB8IENvbmRpdGlvbmFsKF8pXG4gIHwgUmVtb3ZlVHlwZUFsaWFzXG4gIHwgSW52YWxpZFN0ZXAgPT4gZmFsc2VcbiAgfCBWYXJMb29rdXAgPT4gIXNldHRpbmdzLnNob3dfbG9va3VwX3N0ZXBzXG4gIHwgQ2FzdFR5cEFwXG4gIHwgQ2FzdEFwXG4gIHwgQ2FzdCA9PiAhc2V0dGluZ3Muc2hvd19jYXN0c1xuICB8IEZpeFVud3JhcCA9PiAhc2V0dGluZ3Muc2hvd19maXhwb2ludHNcbiAgfCBDb21wbGV0ZUNsb3N1cmVcbiAgfCBDb21wbGV0ZUZpbHRlclxuICB8IEJ1aWx0aW5XcmFwXG4gIHwgRnVuQ2xvc3VyZVxuICB8IEZpeENsb3N1cmVcbiAgfCBSZW1vdmVQYXJlbnMgPT4gdHJ1ZTtcbiIsIm9wZW4gREhFeHA7XG5vcGVuIFRyYW5zaXRpb247XG5cbnR5cGUgdCA9XG4gIHwgVmFsdWVcbiAgfCBJbmRldFxuICB8IEV4cHI7XG5cbm1vZHVsZSBWYWx1ZUNoZWNrZXJFVk1vZGU6IHtcbiAgaW5jbHVkZSBFVl9NT0RFIHdpdGggdHlwZSByZXN1bHQgPSB0IGFuZCB0eXBlIHN0YXRlID0gdW5pdDtcbn0gPSB7XG4gIHR5cGUgc3RhdGUgPSB1bml0O1xuICB0eXBlIHJlc3VsdCA9IHQ7XG5cbiAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAoJ2EsIChyZXN1bHQsIGJvb2wpKTtcbiAgdHlwZSByZXF1aXJlbWVudHMoJ2EsICdiKSA9ICgnYSwgKHJlc3VsdCwgYm9vbCkpO1xuXG4gIGxldCBjb21iaW5lID0gKChyMSwgYjEpLCAocjIsIGIyKSkgPT4gKFxuICAgIHN3aXRjaCAocjEsIHIyKSB7XG4gICAgfCAoRXhwciwgXykgPT4gRXhwclxuICAgIHwgKF8sIEV4cHIpID0+IEV4cHJcbiAgICB8IChJbmRldCwgXykgPT4gSW5kZXRcbiAgICB8IChfLCBJbmRldCkgPT4gSW5kZXRcbiAgICB8IChWYWx1ZSwgVmFsdWUpID0+IFZhbHVlXG4gICAgfSxcbiAgICBiMSAmJiBiMixcbiAgKTtcblxuICBsZXQgcmVxX3ZhbHVlID0gKHZjLCBfLCBkKSA9PiAoXG4gICAgZCxcbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoVmFsdWUsIHRydWUpXG4gICAgfCBJbmRldCA9PiAoSW5kZXQsIGZhbHNlKVxuICAgIHwgRXhwciA9PiAoRXhwciwgZmFsc2UpXG4gICAgfSxcbiAgKTtcbiAgbGV0IHJlcV9hbGxfdmFsdWUgPSAodmMsIF8sIGRzKSA9PlxuICAgIExpc3QuZm9sZF9yaWdodChcbiAgICAgICgodjEsIHIxKSwgKHYyLCByMikpID0+IChbdjEsIC4uLnYyXSwgY29tYmluZShyMSwgcjIpKSxcbiAgICAgIExpc3QubWFwKHJlcV92YWx1ZSh2YywgeCA9PiB4KSwgZHMpLFxuICAgICAgKFtdLCAoVmFsdWUsIHRydWUpKSxcbiAgICApO1xuICBsZXQgcmVxX2ZpbmFsID0gKHZjLCBfLCBkKSA9PiAoXG4gICAgZCxcbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoVmFsdWUsIHRydWUpXG4gICAgfCBJbmRldCA9PiAoSW5kZXQsIHRydWUpXG4gICAgfCBFeHByID0+IChFeHByLCBmYWxzZSlcbiAgICB9LFxuICApO1xuICBsZXQgcmVxX2FsbF9maW5hbCA9ICh2YywgXywgZHMpID0+XG4gICAgTGlzdC5mb2xkX3JpZ2h0KFxuICAgICAgKCh2MSwgcjEpLCAodjIsIHIyKSkgPT4gKFt2MSwgLi4udjJdLCBjb21iaW5lKHIxLCByMikpLFxuICAgICAgTGlzdC5tYXAocmVxX2ZpbmFsKHZjLCB4ID0+IHgpLCBkcyksXG4gICAgICAoW10sIChWYWx1ZSwgdHJ1ZSkpLFxuICAgICk7XG5cbiAgbGV0IHJlcV9maW5hbF9vcl92YWx1ZSA9ICh2YywgXywgZCkgPT5cbiAgICBzd2l0Y2ggKHZjKGQpKSB7XG4gICAgfCBWYWx1ZSA9PiAoKGQsIHRydWUpLCAoVmFsdWUsIHRydWUpKVxuICAgIHwgSW5kZXQgPT4gKChkLCBmYWxzZSksIChWYWx1ZSwgdHJ1ZSkpXG4gICAgfCBFeHByID0+ICgoZCwgZmFsc2UpLCAoVmFsdWUsIGZhbHNlKSlcbiAgICB9O1xuXG4gIGxldCBvdGhlcndpc2UgPSAoXywgXykgPT4gKCgpLCAoVmFsdWUsIHRydWUpKTtcblxuICBsZXQgKGxldC4pID0gKCh2LCAociwgYikpLCBydWxlKSA9PlxuICAgIHN3aXRjaCAoYiwgciwgcnVsZSh2KSkge1xuICAgIHwgKF8sIF8sIENvbnN0cnVjdG9yKSA9PiByXG4gICAgfCAoXywgRXhwciwgSW5kZXQpID0+IEV4cHJcbiAgICB8IChfLCBfLCBJbmRldCkgPT4gSW5kZXRcbiAgICB8ICh0cnVlLCBfLCBTdGVwKF8pKSA9PiBFeHByXG4gICAgfCAoZmFsc2UsIF8sIFN0ZXAoXykpID0+IHJcbiAgICB9O1xuXG4gIGxldCAoYW5kLikgPSAoKHYxLCByMSksICh2MiwgcjIpKSA9PiB7XG4gICAgKCh2MSwgdjIpLCBjb21iaW5lKHIxLCByMikpO1xuICB9O1xuXG4gIGxldCB1cGRhdGVfdGVzdCA9IChfLCBfLCBfKSA9PiAoKTtcbn07XG5cbm1vZHVsZSBDViA9IFRyYW5zaXRpb24oVmFsdWVDaGVja2VyRVZNb2RlKTtcblxubGV0IHJlYyBjaGVja192YWx1ZSA9IChzdGF0ZSwgZW52LCBkKSA9PlxuICBDVi50cmFuc2l0aW9uKGNoZWNrX3ZhbHVlLCBzdGF0ZSwgZW52LCBkKTtcblxubGV0IHJlYyBjaGVja192YWx1ZV9tb2RfY3R4ID0gKCgpLCBlbnYsIGQpID0+XG4gIHN3aXRjaCAoREhFeHAudGVybV9vZihkKSkge1xuICB8IFZhcih4KSA9PlxuICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIHgpKSB7XG4gICAgfCBTb21lKHYpID0+IGNoZWNrX3ZhbHVlX21vZF9jdHgoKCksIGVudiwgdilcbiAgICB8IE5vbmUgPT4gQ1YudHJhbnNpdGlvbihjaGVja192YWx1ZV9tb2RfY3R4LCAoKSwgZW52LCBkKVxuICAgIH1cbiAgfCBfID0+IENWLnRyYW5zaXRpb24oY2hlY2tfdmFsdWVfbW9kX2N0eCwgKCksIGVudiwgZClcbiAgfTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIFppcHBlcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwaWVjZV9nb2FsID1cbiAgfCBHcm91dDtcblxubGV0IG9mX3BpZWNlX2dvYWwgPVxuICBmdW5cbiAgfCBHcm91dCA9PiAoXG4gICAgICBmdW5cbiAgICAgIHwgUGllY2UuR3JvdXQoXykgPT4gdHJ1ZVxuICAgICAgfCBfID0+IGZhbHNlXG4gICAgKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBnb2FsID1cbiAgfCBQb2ludChNZWFzdXJlZC5Qb2ludC50KVxuICB8IFBpZWNlKHBpZWNlX2dvYWwsIERpcmVjdGlvbi50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb3ZlID1cbiAgfCBFeHRyZW1lKHBsYW5hcilcbiAgfCBMb2NhbChwbGFuYXIpXG4gIHwgR29hbChnb2FsKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBqdW1wX3RhcmdldCA9XG4gIHwgVGlsZUlkKElkLnQpXG4gIHwgQmluZGluZ1NpdGVPZkluZGljYXRlZFZhcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByZWwgPVxuICB8IEN1cnJlbnRcbiAgfCBJZChJZC50LCBEaXJlY3Rpb24udCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2VsZWN0ID1cbiAgfCBBbGxcbiAgfCBSZXNpemUobW92ZSlcbiAgfCBTbWFydFxuICB8IFRpbGUocmVsKVxuICB8IFRlcm0ocmVsKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBNb3ZlKG1vdmUpXG4gIHwgTW92ZVRvTmV4dEhvbGUoRGlyZWN0aW9uLnQpXG4gIHwgSnVtcChqdW1wX3RhcmdldClcbiAgfCBTZWxlY3Qoc2VsZWN0KVxuICB8IFVuc2VsZWN0KG9wdGlvbihEaXJlY3Rpb24udCkpXG4gIHwgRGVzdHJ1Y3QoRGlyZWN0aW9uLnQpXG4gIHwgSW5zZXJ0KHN0cmluZylcbiAgfCBSb3RhdGVCYWNrcGFja1xuICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KHBsYW5hcilcbiAgfCBQaWNrX3VwXG4gIHwgUHV0X2Rvd25cbiAgfCBQYXN0ZShzdHJpbmcpXG4gIHwgU3VnZ2VzdChTZWdtZW50LnQpXG4gIHwgUmVzZXRTdWdnZXN0aW9uO1xuXG5tb2R1bGUgRmFpbHVyZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQ2FudF9tb3ZlXG4gICAgfCBDYW50X2luc2VydFxuICAgIHwgQ2FudF9kZXN0cnVjdFxuICAgIHwgQ2FudF9zZWxlY3RcbiAgICB8IENhbnRfcHV0X2Rvd25cbiAgICB8IENhbnRfcGFzdGVcbiAgICB8IENhbnRfdW5kb1xuICAgIHwgQ2FudF9yZWRvO1xuXG4gIGV4Y2VwdGlvbiBFeGNlcHRpb24odCk7XG59O1xuXG5tb2R1bGUgUmVzdWx0ID0ge1xuICBpbmNsdWRlIFJlc3VsdDtcbiAgdHlwZSB0KCdzdWNjZXNzKSA9IFJlc3VsdC50KCdzdWNjZXNzLCBGYWlsdXJlLnQpO1xufTtcblxubGV0IGlzX2VkaXQ6IHQgPT4gYm9vbCA9XG4gIGZ1blxuICB8IEluc2VydChfKVxuICB8IERlc3RydWN0KF8pXG4gIHwgUGlja191cFxuICB8IFB1dF9kb3duXG4gIHwgUGFzdGUoXykgPT4gdHJ1ZVxuICB8IE1vdmUoXylcbiAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICB8IEp1bXAoXylcbiAgfCBTZWxlY3QoXylcbiAgfCBVbnNlbGVjdChfKVxuICB8IFJvdGF0ZUJhY2twYWNrXG4gIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoXylcbiAgfCBTdWdnZXN0KF8pXG4gIHwgUmVzZXRTdWdnZXN0aW9uID0+IGZhbHNlO1xuIiwiLyogQml0IG9mIGEgaGFjay4gV2Ugd2FudCB0byBkZWNvcmF0ZSBzdWdnZXN0aW9ucyB3aGljaCB3aWxsIHRyaWdnZXJcbiAgIGFuIGV4cGFuc2lvbiB0byB0ZWxlZ3JhcGggdGhhdCBleHBhbnNpb24uIEVhc2llc3Qgd2F5IG1ldHJpY3Mgd2lzZVxuICAgaXMgdG8ga2VlcCB0aGF0IGRlY28gaW4gdGhlIHN5bnRheC4gV2FudCB0byBkZWNvcmF0ZSB3aXRoIGVsbGlwc2VzXG4gICBjaGFyYWN0ZXIsIGJ1dCBPQ2FtbCBzdHJpbmcgZnVuY3Rpb25zIGRvbid0IHN1cHBvcnQgdW5pY29kZSwgc29cbiAgIHdlIHVzZSAkLCB0aGVuIHN3YXAgaXQgb3V0IGZvciB0aGUgdW5pY29kZSBjaGFyYWN0ZXIgaW4gQ29kZS5cbiAgIEV2ZW50dWFsbHkgcmVwbGFjZSB0aGlzIGJ5IGV4dGVuZGluZyB0aGUgc3VnZ2VzdGlvbiBkYXRhIHN0cnVjdHVyZSAqL1xubGV0IGMgPSBcIiRcIjtcblxubGV0IGlzX2V4cGFuZGVyX3RvayA9ICh0OiBUb2tlbi50KSA9PlxuICBTdHJpbmcuc3ViKHQsIFN0cmluZy5sZW5ndGgodCkgLSAxLCAxKSA9PSBjO1xuXG5sZXQgdHJpbV9sYXN0ID0gKHQ6IFRva2VuLnQpID0+IFN0cmluZy5zdWIodCwgMCwgU3RyaW5nLmxlbmd0aCh0KSAtIDEpO1xuXG5sZXQgaXNfZXhwYW5kZXIgPSAobGFiZWw6IExhYmVsLnQpID0+XG4gIHN3aXRjaCAobGFiZWwpIHtcbiAgfCBbdF0gPT4gaXNfZXhwYW5kZXJfdG9rKHQpXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xuXG5sZXQgbWFyayA9IChsYWJlbDogTGFiZWwudCk6IExhYmVsLnQgPT5cbiAgaXNfZXhwYW5kZXIobGFiZWwpID8gTGlzdC5tYXAodCA9PiB0cmltX2xhc3QodCkgKysgXCLigKZcIiwgbGFiZWwpIDogbGFiZWw7XG5cbmxldCB0cmltID0gKGNvbXBsZXRpb246IFRva2VuLnQpOiBUb2tlbi50ID0+XG4gIGlzX2V4cGFuZGVyX3Rvayhjb21wbGV0aW9uKSA/IHRyaW1fbGFzdChjb21wbGV0aW9uKSA6IGNvbXBsZXRpb247XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG4vKiBUeURpOiBUeXBlLURpcmVjdGVkIE5leHQtVG9rZW4gU3VnZ2VzdGlvbnNcblxuICAgIElERUE6IEV4cGFuZGVkIGNyaXRlcmlhIGZvciB3aGVuIHRvIGF1dG9zaG93OiBDdXJyZW50bHksIHdlIHNob3cgb25seVxuICAgIHdoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHN1Z2dlc3Rpb24gd2hpY2ggcHJlZml4LW1hdGNoZXMgYnV0IGlzIG5vdFxuICAgIGlkZW50aWNhbCB0byB0aGUgY3VycmVudCBub256ZXJvIHByZWZpeC4gV2UgbWlnaHQgY29uc2lkZXIgcmVsYXhpbmdcbiAgICB0aGUgbm9uemVybyBwcmVmaXggcGFydC4gV2UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBhdXRvc2hvdyBvbiBjb3JyZWN0XG4gICAgdG9rZW5zLCBidXQgd2UgY291bGQgYXV0b3Nob3cgb24gZXJyb3JzIGlmIHRoZXJlIGFyZSBmaXhlcywgb3Igb25cbiAgICBlbXB0aWVzIGlmIHRoZXJlJ3Mgb25seSBvbmUgb3B0aW9uLlxuXG4gICAgIElERUE6IEFkZCBhIGtleWJpbmRpbmcgdG8gZm9yY2UgcmV2ZWFsIHN1Z2dlc3Rpb24gaWYgbm90IGN1cnJlbnQgc2hvd24uXG4gICAgIEkndmUgc3R1YmJlZCB0aGlzIG91dCAoQ21kKz8pIGJ1dCBuZWVkcyBhbiBvcHRpb24gdG8gc2hvdyBzdWdnZXN0aW9uc1xuICAgICBldmVuIGlmIG9uIGhvbGUgKGllIHByZWZpeCBmb3IgY29tcGxldGlvbiBpcyBcIlwiKVxuXG4gICAgIElERUE6IElmIHRoZXJlIGFyZSB+IG5vIGN1cnJlbnQgc3VnZ2VzdGlvbnMsIGFuZCB0aGUgaW5kaWNhdGVkIHRlcm1cbiAgICAgaGFzIGEgdHlwZSBlcnJvciBzdWdnZXN0IGZvbGxvd2luZyBpbmZpeGVzIHdoaWNoIGZpeCB0aGF0IHR5cGUgZXJyb3IsXG4gICAgIGUuZy4gZ2l2ZW4gXCJsZXQgYTpGbG9hdCA9IGZzdCgxLjB8XCIgc3VnZ2VzdCBjb21tYVxuICAgICBlLmcuIGdpdmVuIFwibGV0IGI6Qm9vbCA9IDF8XCIgc3VnZ2VzdCA8LCA+LCA8PSwgPj0sID09LCAhPSwgZXRjLlxuXG4gICAgIElERUE6IFVOQklESVJFQ1RJT05BTCBQT1NJVElPTlM6XG4gICAgMS4gSW4gYXAgZnVucG9zOiBmYXZvciBpbnB1dCB0eSBjb25zaXN0ZW50IHdpdGggYXJnXG4gICAgMi4gSW4gY2FzZSBzY3J1dCwgZmF2b3IgdGhlIHR5cyBvZiBleHRhbnQgcGF0dGVybnNcbiAgICAzLiBJbiBsaXN0IGVsZW1lbnQsIGZhdm9yIHRoZSB0eXMgb2YgZXh0YW50IGVsZW1lbnRzXG4gICAgMy4gSW4gcGF0dGVybiBhbm5vdGF0aW9uIHR5cGU6IGZhdm9yIHBhdGFubiBleHBlY3RlZCB0eXBlXG5cbiAgICBJREVBOiBJZiBvbiBpbmZpeCBvcCwgc3VnZ2VzdCBiYXNlZCBvbiBlaXRoZXIgb3BlcmFuZCB0eXBlLFxuICAgIGVzcGVjaWFsbHkgdGhlIGNhc2Ugd2hlcmUgaXQgd291bGQgZml4IGFuIG9wZXJhbmQgdHlwZSBlcnJvclxuXG4gICAgSURFQTogSWYgb24gMi1tdWx0aWhvbGUsIHN1Z2dlc3QgaW5maXggb3BzIGFzIGFib3ZlIG9yIEFwIGlmIGFwcGxpY2FibGVcblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV9hbGwgPVxuICB8IEZyb21CYWNrcGFjaztcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneV9jb21tb24gPVxuICB8IE5ld0Zvcm0oVHlwLnQpXG4gIHwgRnJvbUN0eChUeXAudClcbiAgfCBGcm9tQ3R4QXAoVHlwLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0cmF0ZWd5X2V4cCA9XG4gIHwgQ29tbW9uKHN0cmF0ZWd5X2NvbW1vbik7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfcGF0ID1cbiAgfCBDb21tb24oc3RyYXRlZ3lfY29tbW9uKVxuICB8IEZyb21Db0N0eChUeXAudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RyYXRlZ3lfdHlwID1cbiAgfCBOZXdGb3JtXG4gIHwgRnJvbUN0eDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdHJhdGVneSA9XG4gIHwgQW55KHN0cmF0ZWd5X2FsbClcbiAgfCBFeHAoc3RyYXRlZ3lfZXhwKVxuICB8IFBhdChzdHJhdGVneV9wYXQpXG4gIHwgVHlwKHN0cmF0ZWd5X3R5cCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgY29udGVudDogc3RyaW5nLFxuICBzdHJhdGVneSxcbn07XG5cbmxldCBjb21wYXJlID0gKHMxOiB0LCBzMjogdCk6IGludCA9PiB7XG4gIFN0cmluZy5jb21wYXJlKHMxLmNvbnRlbnQsIHMyLmNvbnRlbnQpO1xufTtcbiIsIm9wZW4gU3VnZ2VzdGlvbjtcblxubGV0IGV4cGFuZGVyID0gQXNzaXN0YW50RXhwYW5kZXIuYztcblxuLyogRm9yIHN1Z2dlc3Rpb25zIGluIHBhdHRlcm5zLCBzdWdnZXN0IHZhcmlhYmxlcyB3aGljaFxuICogb2NjdXIgZnJlZSBpbiB0aGF0IHBhdHRlcm4ncyBzY29wZS4gKi9cbmxldCBmcmVlX3ZhcmlhYmxlcyA9XG4gICAgKGV4cGVjdGVkX3R5OiBUeXAudCwgY3R4OiBDdHgudCwgY29fY3R4OiBDb0N0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICgobmFtZSwgZW50cmllcykpID0+XG4gICAgICBzd2l0Y2ggKEN0eC5sb29rdXBfdmFyKGN0eCwgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PlxuICAgICAgICBsZXQgam9pbnRfdXNlX3R5cCA9IENvQ3R4LmpvaW4oY3R4LCBlbnRyaWVzKTtcbiAgICAgICAgaWYgKFR5cC5pc19jb25zaXN0ZW50KGN0eCwgZXhwZWN0ZWRfdHksIGpvaW50X3VzZV90eXApKSB7XG4gICAgICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IFBhdChGcm9tQ29DdHgoam9pbnRfdXNlX3R5cCkpfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgTm9uZTtcbiAgICAgICAgfTtcbiAgICAgIHwgU29tZShfKSA9PiBOb25lXG4gICAgICB9LFxuICAgIGNvX2N0eCxcbiAgKTtcbn07XG5cbi8qIEZvciBzdWdnZXN0c2lvbnMgaW4gZXhwcmVzc2lvbnMsIHN1Z2dlc3QgdmFyaWFibGVzIGZyb20gdGhlIGN0eCAqL1xubGV0IGJvdW5kX3ZhcmlhYmxlcyA9ICh0eV9leHBlY3Q6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5WYXJFbnRyeSh7dHlwLCBuYW1lLCBffSlcbiAgICAgICAgd2hlbiBUeXAuaXNfY29uc2lzdGVudChjdHgsIHR5X2V4cGVjdCwgdHlwKSA9PlxuICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IEV4cChDb21tb24oRnJvbUN0eCh0eXApKSl9KVxuICAgIHwgXyA9PiBOb25lLFxuICAgIGN0eCxcbiAgKTtcblxubGV0IGJvdW5kX2NvbnN0cnVjdG9ycyA9XG4gICAgKHdyYXA6IHN0cmF0ZWd5X2NvbW1vbiA9PiBzdHJhdGVneSwgdHk6IFR5cC50LCBjdHg6IEN0eC50KVxuICAgIDogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIC8qIGdldCBuYW1lcyBvZiBhbGwgY29uc3RydWN0b3IgZW50cmllcyBjb25zaXN0ZW50IHdpdGggdHkgKi9cbiAgTGlzdC5maWx0ZXJfbWFwKFxuICAgIGZ1blxuICAgIHwgQ3R4LkNvbnN0cnVjdG9yRW50cnkoe3R5cCwgbmFtZSwgX30pXG4gICAgICAgIHdoZW4gVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCB0eSwgdHlwKSA9PlxuICAgICAgU29tZSh7Y29udGVudDogbmFtZSwgc3RyYXRlZ3k6IHdyYXAoRnJvbUN0eCh0eXApKX0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG4vKiBTdWdnZXN0IGFwcGx5aW5nIGEgZnVuY3Rpb24gZnJvbSB0aGUgY3R4IHdoaWNoIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdHlwZSAqL1xubGV0IGJvdW5kX2FwcyA9ICh0eV9leHBlY3Q6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5WYXJFbnRyeSh7dHlwOiB7dGVybTogQXJyb3coXywgdHlfb3V0KSwgX30gYXMgdHlfYXJyLCBuYW1lLCBffSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfZXhwZWN0LCB0eV9vdXQpXG4gICAgICAgICAgJiYgIVR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHlfZXhwZWN0LCB0eV9hcnIpID0+IHtcbiAgICAgICAgU29tZSh7XG4gICAgICAgICAgY29udGVudDogbmFtZSArKyBcIihcIiArKyBleHBhbmRlcixcbiAgICAgICAgICBzdHJhdGVneTogRXhwKENvbW1vbihGcm9tQ3R4QXAodHlfb3V0KSkpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBib3VuZF9jb25zdHJ1Y3Rvcl9hcHMgPSAod3JhcCwgdHk6IFR5cC50LCBjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5Db25zdHJ1Y3RvckVudHJ5KHtcbiAgICAgICAgdHlwOiB7dGVybTogQXJyb3coXywgdHlfb3V0KSwgX30gYXMgdHlfYXJyLFxuICAgICAgICBuYW1lLFxuICAgICAgICBfLFxuICAgICAgfSlcbiAgICAgICAgd2hlblxuICAgICAgICAgIFR5cC5pc19jb25zaXN0ZW50KGN0eCwgdHksIHR5X291dClcbiAgICAgICAgICAmJiAhVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCB0eSwgdHlfYXJyKSA9PlxuICAgICAgU29tZSh7XG4gICAgICAgIGNvbnRlbnQ6IG5hbWUgKysgXCIoXCIgKysgZXhwYW5kZXIsXG4gICAgICAgIHN0cmF0ZWd5OiB3cmFwKEZyb21DdHhBcCh0eV9vdXQpKSxcbiAgICAgIH0pXG4gICAgfCBfID0+IE5vbmUsXG4gICAgY3R4LFxuICApO1xuXG4vKiBTdWdnZXN0IGJvdW5kIHR5cGUgYWxpYXNlcyBpbiB0eXBlIGFubm90YXRpb25zIG9yIGRlZmluaXRpb25zICovXG5sZXQgdHlwX2NvbnRleHRfZW50cmllcyA9IChjdHg6IEN0eC50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+XG4gIExpc3QuZmlsdGVyX21hcChcbiAgICBmdW5cbiAgICB8IEN0eC5UVmFyRW50cnkoe2tpbmQ6IFNpbmdsZXRvbihfKSwgbmFtZSwgX30pID0+XG4gICAgICBTb21lKHtjb250ZW50OiBuYW1lLCBzdHJhdGVneTogVHlwKEZyb21DdHgpfSlcbiAgICB8IF8gPT4gTm9uZSxcbiAgICBjdHgsXG4gICk7XG5cbmxldCBzdWdnZXN0X3ZhcmlhYmxlID0gKGNpOiBJbmZvLnQpOiBsaXN0KFN1Z2dlc3Rpb24udCkgPT4ge1xuICBsZXQgY3R4ID0gSW5mby5jdHhfb2YoY2kpO1xuICBzd2l0Y2ggKGNpKSB7XG4gIHwgSW5mb0V4cCh7bW9kZSwgX30pID0+XG4gICAgYm91bmRfdmFyaWFibGVzKE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgICBAIGJvdW5kX2FwcyhNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gICAgQCBib3VuZF9jb25zdHJ1Y3RvcnMoeCA9PiBFeHAoQ29tbW9uKHgpKSwgTW9kZS50eV9vZihtb2RlKSwgY3R4KVxuICAgIEAgYm91bmRfY29uc3RydWN0b3JfYXBzKHggPT4gRXhwKENvbW1vbih4KSksIE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgfCBJbmZvUGF0KHttb2RlLCBjb19jdHgsIF99KSA9PlxuICAgIGZyZWVfdmFyaWFibGVzKE1vZGUudHlfb2YobW9kZSksIGN0eCwgY29fY3R4KVxuICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gUGF0KENvbW1vbih4KSksIE1vZGUudHlfb2YobW9kZSksIGN0eClcbiAgICBAIGJvdW5kX2NvbnN0cnVjdG9yX2Fwcyh4ID0+IFBhdChDb21tb24oeCkpLCBNb2RlLnR5X29mKG1vZGUpLCBjdHgpXG4gIHwgSW5mb1R5cChfKSA9PiB0eXBfY29udGV4dF9lbnRyaWVzKGN0eClcbiAgfCBfID0+IFtdXG4gIH07XG59O1xuXG4vKiBTdWdnZXN0IGxvb2thaGVhZCB0b2tlbnM6XG4gKlxuICogU29tZXRpbWVzIHRoZSBleHBlY3RlZCB0eXBlIGlzIFR5LCBidXQgd2Ugd2FudCB0byBlbnRlciBzb21ldGhpbmcgb2YgVHknXG4gKiBiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIGZvbGxvdyBpdCB1cCB3aXRoIGFuIGluZml4IG9wIG9mIHR5cGUgKFR5JywgXykgLT4gVHkuXG4gKlxuICogRm9yIG5vdyB3ZSBzcGVjaWFsLWNhc2Ugc3VjaCBzaXR1YXRpb25zIGluc3RlYWQgb2YgZGVyaXZpbmcgdGhlbSBmcm9tIHRoZVxuICogZ3JhbW1hci4gSW4gdGhlIGN1cnJlbnQgZ3JhbW1hciB0aGVyZSBhcmUgYmFzaWNhbGx5IDMgY2xhc3NlczpcbiAqXG4gKiAxLiBJZiBib29sIGlzIGV4cGVjdGVkLCBjb3VsZCBiZSBpbnQsIGZsb2F0IG9yIHN0cmluZyAoY29tcGFyaXNvbnMpXG4gKiAyLiBJZiBsaXN0KHR5KSBpcyBleHBlY3RlZCwgY291bGQgYmUgdHkgKGNvbnMpXG4gKiAzLiBJZiB0dXBsZShbdHksIC4uLl0pIGlzIGV4cGVjdGVkLCBjb3VsZCBiZSB0eSAoY29tbWEpXG5cbiAqIDIgYW5kIDMgYXJlIHRoZSBlYXNpZXN0IHRvIG1ha2UgZXJnb25vbWljIGFzIHRoZXJlIGlzIG9ubHkgb25lIHN1Y2hcbiAqIGluZml4IG9wLCBzbyB3ZSBjYW4ganVzdCBjb21iaW5lIHRoZSB0d28gdG9rZW5zIGludG8gYSBzaW5nbGUgY29tcGxldGlvbi5cbiAqIDEgaXMgc2xpZ2h0bHkgbW9yZSBmcmF1Z2h0IGJlY2F1c2UgYXMgd2UgZWl0aGVyIG5lZWQgdG8gbm90IHNob3cgdGhlXG4gKiBzZWNvbmQgdG9rZW4sIG9yIHBpY2sgYW4gYXJiaXRyYXJ5IHJlcHJlc2VudGF0aXZlIG9wIHRvIHNob3csIGFuZCB3ZVxuICogcHJvYmFibHkgd291bGRuJ3Qgd2FudCB0byBjb21wbGV0ZSB0aGF0IG9wLCBmb3JjaW5nIHRoZSB1c2VyIHRvIGJhY2tzcGFjZVxuICogaWYgdGhleSBtZWFudCBhbm90aGVyLCBzbyB3ZSdkIG5lZWQgdG8gaW1wbGVtZW50IHN0YWdlZCBjb21wbGV0aW9uLlxuICogRm9yIG5vdyB3ZSBqdXN0IGRvbid0IHNob3cgYSBzZWNvbmQgdG9rZW4sIHdoaWNoIGNhbiBiZSBzbGlnaHRseSBjb25mdXNpbmcuXG4gKlxuICovXG5cbmxldCBzdWdnZXN0X2xvb2thaGVhZF92YXJpYWJsZSA9IChjaTogSW5mby50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgbGV0IHJlc3RyYXRlZ2l6ZSA9IChzdWZmaXgsIHtjb250ZW50LCBzdHJhdGVneX0pID0+IHtcbiAgICBjb250ZW50OiBjb250ZW50ICsrIHN1ZmZpeCxcbiAgICBzdHJhdGVneSxcbiAgfTtcbiAgbGV0IGN0eCA9IEluZm8uY3R4X29mKGNpKTtcbiAgc3dpdGNoIChjaSkge1xuICB8IEluZm9FeHAoe21vZGUsIF99KSA9PlxuICAgIGxldCBleHBfcmVmcyA9IHR5ID0+XG4gICAgICBib3VuZF92YXJpYWJsZXModHksIGN0eClcbiAgICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gRXhwKENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIGxldCBleHBfYXBzID0gdHkgPT5cbiAgICAgIGJvdW5kX2Fwcyh0eSwgY3R4KVxuICAgICAgQCBib3VuZF9jb25zdHJ1Y3Rvcl9hcHMoeCA9PiBFeHAoQ29tbW9uKHgpKSwgdHksIGN0eCk7XG4gICAgc3dpdGNoIChNb2RlLnR5X29mKG1vZGUpIHw+IFR5cC50ZXJtX29mKSB7XG4gICAgfCBMaXN0KHR5KSA9PlxuICAgICAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiICk6OlwiKSwgZXhwX2Fwcyh0eSkpXG4gICAgICBAIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIjo6XCIpLCBleHBfcmVmcyh0eSkpXG4gICAgfCBQcm9kKFt0eSwgLi4udHlzXSkgPT5cbiAgICAgIGxldCBjb21tYXMgPVxuICAgICAgICBMaXN0LmluaXQoTGlzdC5sZW5ndGgodHlzKSwgXyA9PiBcIixcIikgfD4gU3RyaW5nLmNvbmNhdChcIiBcIik7XG4gICAgICBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCIgKVwiICsrIGNvbW1hcyksIGV4cF9hcHModHkpKVxuICAgICAgQCBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoY29tbWFzKSwgZXhwX3JlZnModHkpKTtcbiAgICB8IEJvb2wgPT5cbiAgICAgIC8qIFRPRE86IEZpbmQgYSBVSSB0byBtYWtlIHRoZXNlIGxlc3MgY29uZnVzaW5nICovXG4gICAgICBleHBfcmVmcyhJbnQgfD4gVHlwLmZyZXNoKVxuICAgICAgQCBleHBfcmVmcyhGbG9hdCB8PiBUeXAuZnJlc2gpXG4gICAgICBAIGV4cF9yZWZzKFN0cmluZyB8PiBUeXAuZnJlc2gpXG4gICAgICBAIGV4cF9hcHMoSW50IHw+IFR5cC5mcmVzaClcbiAgICAgIEAgZXhwX2FwcyhGbG9hdCB8PiBUeXAuZnJlc2gpXG4gICAgICBAIGV4cF9hcHMoU3RyaW5nIHw+IFR5cC5mcmVzaClcbiAgICB8IF8gPT4gW11cbiAgICB9O1xuICB8IEluZm9QYXQoe21vZGUsIGNvX2N0eCwgX30pID0+XG4gICAgbGV0IHBhdF9yZWZzID0gdHkgPT5cbiAgICAgIGZyZWVfdmFyaWFibGVzKHR5LCBjdHgsIGNvX2N0eClcbiAgICAgIEAgYm91bmRfY29uc3RydWN0b3JzKHggPT4gUGF0KENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIGxldCBwYXRfYXBzID0gdHkgPT4gYm91bmRfY29uc3RydWN0b3JfYXBzKHggPT4gUGF0KENvbW1vbih4KSksIHR5LCBjdHgpO1xuICAgIHN3aXRjaCAoTW9kZS50eV9vZihtb2RlKSB8PiBUeXAudGVybV9vZikge1xuICAgIHwgTGlzdCh0eSkgPT5cbiAgICAgIExpc3QubWFwKHJlc3RyYXRlZ2l6ZShcIiApOjpcIiksIHBhdF9hcHModHkpKVxuICAgICAgQCBMaXN0Lm1hcChyZXN0cmF0ZWdpemUoXCI6OlwiKSwgcGF0X3JlZnModHkpKVxuICAgIHwgUHJvZChbdHksIC4uLnR5c10pID0+XG4gICAgICBsZXQgY29tbWFzID1cbiAgICAgICAgTGlzdC5pbml0KExpc3QubGVuZ3RoKHR5cyksIF8gPT4gXCIsXCIpIHw+IFN0cmluZy5jb25jYXQoXCIgXCIpO1xuICAgICAgTGlzdC5tYXAocmVzdHJhdGVnaXplKFwiIClcIiArKyBjb21tYXMpLCBwYXRfYXBzKHR5KSlcbiAgICAgIEAgTGlzdC5tYXAocmVzdHJhdGVnaXplKGNvbW1hcyksIHBhdF9yZWZzKHR5KSk7XG4gICAgfCBfID0+IFtdXG4gICAgfTtcbiAgfCBJbmZvVHlwKF8pID0+IFtdXG4gIHwgXyA9PiBbXVxuICB9O1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbi8qIFRoaXMgbW9kdWxlIGdlbmVyYXRlcyBUeURpIHN1Z2dlc3Rpb25zIHdoaWNoIGRlcGVuZFxuICogbmVpdGhlciBvbiB0aGUgdHlwaW5nIGNvbnRleHQgb3IgdGhlIGJhY2twYWNrICovXG5cbmxldCBsZWFkaW5nX2V4cGFuZGVyID0gXCIgXCIgKysgQXNzaXN0YW50RXhwYW5kZXIuYztcblxuLyogU3BlY2lmaWVzIHR5cGUgaW5mb3JtYXRpb24gZm9yIHN5bnRhY3RpYyBmb3Jtcy4gQ291bGQgaW4gcHJpbmNpcGxlIGJlXG4gKiBkZXJpdmVkIGJ5IGdlbmVyYXRpbmcgc2VnbWVudHMgZnJvbSBGb3JtcywgcGFyc2luZyB0aGVtIHRvIHRlcm1zLCBhbmRcbiAqIHJ1bm5pbmcgU3RhdGljcywgYnV0IGZvciBub3csIG5ldyBmb3JtcyBlLmcuIG9wZXJhdG9ycyBtdXN0IGJlIGFkZGVkXG4gKiBiZWxvdyBtYW51YWxseS4gICovXG5tb2R1bGUgVHlwID0ge1xuICBsZXQgdW5rOiBUeXAudCA9IFVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5mcmVzaDtcblxuICBsZXQgb2ZfY29uc3RfbW9ub19kZWxpbTogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSA9IFtcbiAgICAoXCJ0cnVlXCIsIEJvb2wgfD4gVHlwLmZyZXNoKSxcbiAgICAoXCJmYWxzZVwiLCBCb29sIHw+IFR5cC5mcmVzaCksXG4gICAgLy8oXCJbXVwiLCBMaXN0KHVuaykpLCAvICpOT1RFOiB3b3VsZCBuZWVkIHRvIHJlZmFjdG9yIGJ1ZmZlciBmb3IgdGhpcyB0byBzaG93IHVwICovXG4gICAgLy8oXCIoKVwiLCBQcm9kKFtdKSksIC8qIE5PVEU6IHdvdWxkIG5lZWQgdG8gcmVmYWN0b3IgYnVmZmVyIGZvciB0aGlzIHRvIHNob3cgdXAgKi9cbiAgICAoXCJcXFwiXFxcIlwiLCBTdHJpbmcgfD4gVHlwLmZyZXNoKSwgLyogTk9URTogSXJyZWxldmVudCBhcyBzZWNvbmQgcXVvdGUgYXBwZWFycyBhdXRvbWF0aWNhbGx5ICovXG4gICAgKFwiX1wiLCB1bmspLFxuICBdO1xuXG4gIGxldCBvZl9sZWFkaW5nX2RlbGltOiBsaXN0KChUb2tlbi50LCBUeXAudCkpID0gW1xuICAgIChcImNhc2VcIiArKyBsZWFkaW5nX2V4cGFuZGVyLCB1bmspLFxuICAgIChcImZ1blwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIEFycm93KHVuaywgdW5rKSB8PiBUeXAuZnJlc2gpLFxuICAgIChcbiAgICAgIFwidHlwZnVuXCIgKysgbGVhZGluZ19leHBhbmRlcixcbiAgICAgIEZvcmFsbChWYXIoXCJcIikgfD4gVFBhdC5mcmVzaCwgdW5rKSB8PiBUeXAuZnJlc2gsXG4gICAgKSxcbiAgICAoXCJpZlwiICsrIGxlYWRpbmdfZXhwYW5kZXIsIHVuayksXG4gICAgKFwibGV0XCIgKysgbGVhZGluZ19leHBhbmRlciwgdW5rKSxcbiAgICAoXCJ0ZXN0XCIgKysgbGVhZGluZ19leHBhbmRlciwgUHJvZChbXSkgfD4gVHlwLmZyZXNoKSxcbiAgICAoXCJ0eXBlXCIgKysgbGVhZGluZ19leHBhbmRlciwgdW5rKSxcbiAgXTtcblxuICBsZXQgb2ZfaW5maXhfZGVsaW06IGxpc3QoKFRva2VuLnQsIFR5cC50ZXJtKSkgPSBbXG4gICAgKFwifD5cIiwgVW5rbm93bihJbnRlcm5hbCkpLCAvKiAqL1xuICAgIChcIixcIiwgUHJvZChbdW5rLCB1bmtdKSksIC8qIE5PVEU6IEN1cnJlbnQgYXBwcm9hY2ggZG9lc24ndCB3b3JrIGZvciB0aGlzLCBidXQgaXJyZWxldmFudCBhcyAxLWNoYXIgKi9cbiAgICAoXCI6OlwiLCBMaXN0KHVuaykpLFxuICAgIChcIkBcIiwgTGlzdCh1bmspKSxcbiAgICAoXCI7XCIsIFVua25vd24oSW50ZXJuYWwpKSxcbiAgICAoXCImJlwiLCBCb29sKSxcbiAgICAoXCJcXFxcL1wiLCBCb29sKSxcbiAgICAoXCJ8fFwiLCBCb29sKSxcbiAgICAoXCIkPT1cIiwgQm9vbCksXG4gICAgKFwiPT0uXCIsIEJvb2wpLFxuICAgIChcIj09XCIsIEJvb2wpLFxuICAgIChcIiFcIiwgQm9vbCksIC8vIG1heWJlIGRvZXNudCBiZWxvbmcgaGVyZT8gYnV0IGJsb2NrcyBhdXRvY29tcGxldGUgb2YgISB0byAhPVxuICAgIChcIiE9XCIsIEJvb2wpLFxuICAgIChcIiE9LlwiLCBCb29sKSxcbiAgICAoXCI8XCIsIEJvb2wpLFxuICAgIChcIj5cIiwgQm9vbCksXG4gICAgKFwiPD1cIiwgQm9vbCksXG4gICAgKFwiPj1cIiwgQm9vbCksXG4gICAgKFwiPC5cIiwgQm9vbCksXG4gICAgKFwiPi5cIiwgQm9vbCksXG4gICAgKFwiPD0uXCIsIEJvb2wpLFxuICAgIChcIj49LlwiLCBCb29sKSxcbiAgICAoXCIrXCIsIEludCksXG4gICAgKFwiLVwiLCBJbnQpLFxuICAgIChcIipcIiwgSW50KSxcbiAgICAoXCIvXCIsIEludCksXG4gICAgKFwiKipcIiwgSW50KSxcbiAgICAoXCIrLlwiLCBGbG9hdCksXG4gICAgKFwiLS5cIiwgRmxvYXQpLFxuICAgIChcIiouXCIsIEZsb2F0KSxcbiAgICAoXCIvLlwiLCBGbG9hdCksXG4gICAgKFwiKiouXCIsIEZsb2F0KSxcbiAgICAoXCIrK1wiLCBTdHJpbmcpLFxuICBdO1xuXG4gIGxldCBleHBlY3RlZDogSW5mby50ID0+IFR5cC50ID1cbiAgICBmdW5cbiAgICB8IEluZm9FeHAoe21vZGUsIF99KVxuICAgIHwgSW5mb1BhdCh7bW9kZSwgX30pID0+IE1vZGUudHlfb2YobW9kZSlcbiAgICB8IF8gPT4gVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLmZyZXNoO1xuXG4gIGxldCBmaWx0ZXJfYnkgPVxuICAgICAgKFxuICAgICAgICBjdHg6IEN0eC50LFxuICAgICAgICBleHBlY3RlZF90eTogVHlwLnQsXG4gICAgICAgIHNlbGZfdHlzOiBsaXN0KChUb2tlbi50LCBUeXAudCkpLFxuICAgICAgICBkZWxpbXM6IGxpc3Qoc3RyaW5nKSxcbiAgICAgIClcbiAgICAgIDogbGlzdCgoVG9rZW4udCwgVHlwLnQpKSA9PlxuICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgIGRlbGltID0+IHtcbiAgICAgICAgbGV0KiBzZWxmX3R5ID0gTGlzdC5hc3NvY19vcHQoZGVsaW0sIHNlbGZfdHlzKTtcbiAgICAgICAgVHlwLmlzX2NvbnNpc3RlbnQoY3R4LCBleHBlY3RlZF90eSwgc2VsZl90eSlcbiAgICAgICAgICA/IFNvbWUoKGRlbGltLCBzZWxmX3R5KSkgOiBOb25lO1xuICAgICAgfSxcbiAgICAgIGRlbGltcyxcbiAgICApO1xufTtcblxuLyogQXV0b21hdGljYWxseSBjb2xsYXRlcyBtb3N0IGRlbGltaXRlcnMgZnJvbSBGb3Jtcywgbm90YWJseSBhbGxcbiAqIG1vbm8gZGVsaW1pdGVycywgYWxsIGluZml4IG9wZXJhdG9ycywgYW5kIGFsbCBsZWFkaW5nIGRlbGltaXRlcnMgKi9cbm1vZHVsZSBEZWxpbXMgPSB7XG4gIGxldCBkZWxheWVkX2xlYWRpbmcgPSAoc29ydDogU29ydC50KTogbGlzdChUb2tlbi50KSA9PlxuICAgIEZvcm0uZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgbGV0IChsYmwsIF8pID0gTW9sZHMuZGVsYXllZF9leHBhbnNpb24odG9rZW4pO1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIExpc3QubGVuZ3RoKGxibCkgPiAxICYmIHRva2VuID09IExpc3QuaGQobGJsKSAmJiBtLm91dCA9PSBzb3J0XG4gICAgICAgICAgICAgICA/IFNvbWUodG9rZW4gKysgbGVhZGluZ19leHBhbmRlcikgOiBOb25lLFxuICAgICAgICAgICBNb2xkcy5nZXQobGJsKSxcbiAgICAgICAgICk7XG4gICAgICAgfSlcbiAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICB8PiBMaXN0LnNvcnRfdW5pcShjb21wYXJlKTtcblxuICBsZXQgZGVsYXRlZF9sZWFkaW5nX2V4cCA9IGRlbGF5ZWRfbGVhZGluZyhFeHApO1xuICBsZXQgZGVsYXRlZF9sZWFkaW5nX3BhdCA9IGRlbGF5ZWRfbGVhZGluZyhQYXQpO1xuICBsZXQgZGVsYXRlZF9sZWFkaW5nX3R5cCA9IGRlbGF5ZWRfbGVhZGluZyhUeXApO1xuXG4gIGxldCBkZWxheWVkX2xlYWRpbmcgPSAoc29ydDogU29ydC50KTogbGlzdChzdHJpbmcpID0+XG4gICAgc3dpdGNoIChzb3J0KSB7XG4gICAgfCBFeHAgPT4gZGVsYXRlZF9sZWFkaW5nX2V4cFxuICAgIHwgUGF0ID0+IGRlbGF0ZWRfbGVhZGluZ19wYXRcbiAgICB8IFR5cCA9PiBkZWxhdGVkX2xlYWRpbmdfdHlwXG4gICAgfCBfID0+IFtdXG4gICAgfTtcblxuICBsZXQgaW5maXggPSAoc29ydDogU29ydC50KTogbGlzdChUb2tlbi50KSA9PlxuICAgIEZvcm0uZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIG0ub3V0ID09IHNvcnQgJiYgTW9sZC5pc19pbmZpeF9vcChtKSA/IFNvbWUodG9rZW4pIDogTm9uZSxcbiAgICAgICAgICAgTW9sZHMuZ2V0KFt0b2tlbl0pLFxuICAgICAgICAgKVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG4gIGxldCBpbmZpeF9leHAgPSBpbmZpeChFeHApO1xuICBsZXQgaW5maXhfcGF0ID0gaW5maXgoUGF0KTtcbiAgbGV0IGluZml4X3R5cCA9IGluZml4KFR5cCk7XG4gIGxldCBpbmZpeCA9IChzb3J0OiBTb3J0LnQpOiBsaXN0KHN0cmluZykgPT5cbiAgICBzd2l0Y2ggKHNvcnQpIHtcbiAgICB8IEV4cCA9PiBpbmZpeF9leHBcbiAgICB8IFBhdCA9PiBpbmZpeF9wYXRcbiAgICB8IFR5cCA9PiBpbmZpeF90eXBcbiAgICB8IF8gPT4gW11cbiAgICB9O1xuXG4gIGxldCBjb25zdF9tb25vID0gKHNvcnQ6IFNvcnQudCk6IGxpc3QoVG9rZW4udCkgPT5cbiAgICBGb3JtLmNvbnN0X21vbm9fZGVsaW1zXG4gICAgfD4gTGlzdC5tYXAodG9rZW4gPT4ge1xuICAgICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgICAobTogTW9sZC50KSA9PlxuICAgICAgICAgICAgIG0ub3V0ID09IHNvcnQgJiYgTGlzdC5tZW0odG9rZW4sIEZvcm0uY29uc3RfbW9ub19kZWxpbXMpXG4gICAgICAgICAgICAgICA/IFNvbWUodG9rZW4pIDogTm9uZSxcbiAgICAgICAgICAgTW9sZHMuZ2V0KFt0b2tlbl0pLFxuICAgICAgICAgKVxuICAgICAgIH0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdC5zb3J0X3VuaXEoY29tcGFyZSk7XG5cbiAgbGV0IGNvbnN0X21vbm9fZXhwID0gY29uc3RfbW9ubyhFeHApO1xuICBsZXQgY29uc3RfbW9ub19wYXQgPSBjb25zdF9tb25vKFBhdCk7XG4gIGxldCBjb25zdF9tb25vX3R5cCA9IGNvbnN0X21vbm8oVHlwKTtcblxuICBsZXQgY29uc3RfbW9ubyA9IChzb3J0OiBTb3J0LnQpOiBsaXN0KHN0cmluZykgPT5cbiAgICBzd2l0Y2ggKHNvcnQpIHtcbiAgICB8IEV4cCA9PiBjb25zdF9tb25vX2V4cFxuICAgIHwgUGF0ID0+IGNvbnN0X21vbm9fcGF0XG4gICAgfCBUeXAgPT4gY29uc3RfbW9ub190eXBcbiAgICB8IF8gPT4gW11cbiAgICB9O1xufTtcblxubGV0IHN1Z2dlc3RfZm9ybSA9ICh0eV9tYXAsIGRlbGltc19vZl9zb3J0LCBjaTogSW5mby50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgbGV0IHNvcnQgPSBJbmZvLnNvcnRfb2YoY2kpO1xuICBsZXQgZGVsaW1zID0gZGVsaW1zX29mX3NvcnQoc29ydCk7XG4gIGxldCBmaWx0ZXJlZCA9XG4gICAgVHlwLmZpbHRlcl9ieShJbmZvLmN0eF9vZihjaSksIFR5cC5leHBlY3RlZChjaSksIHR5X21hcCwgZGVsaW1zKTtcbiAgc3dpdGNoIChzb3J0KSB7XG4gIHwgRXhwID0+XG4gICAgTGlzdC5tYXAoXG4gICAgICAoKGNvbnRlbnQsIHR5KSkgPT5cbiAgICAgICAgU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IEV4cChDb21tb24oTmV3Rm9ybSh0eSkpKX0sXG4gICAgICBmaWx0ZXJlZCxcbiAgICApXG4gIHwgUGF0ID0+XG4gICAgTGlzdC5tYXAoXG4gICAgICAoKGNvbnRlbnQsIHR5KSkgPT5cbiAgICAgICAgU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IFBhdChDb21tb24oTmV3Rm9ybSh0eSkpKX0sXG4gICAgICBmaWx0ZXJlZCxcbiAgICApXG4gIHwgXyA9PlxuICAgIGRlbGltc1xuICAgIHw+IExpc3QubWFwKGNvbnRlbnQgPT4gU3VnZ2VzdGlvbi57Y29udGVudCwgc3RyYXRlZ3k6IFR5cChOZXdGb3JtKX0pXG4gIH07XG59O1xuXG5sZXQgc3VnZ2VzdF9vcGVyYXRvcjogSW5mby50ID0+IGxpc3QoU3VnZ2VzdGlvbi50KSA9XG4gIHN1Z2dlc3RfZm9ybShcbiAgICBMaXN0Lm1hcCgoKGEsIGIpKSA9PiAoYSwgSWRUYWdnZWQuZnJlc2goYikpLCBUeXAub2ZfaW5maXhfZGVsaW0pLFxuICAgIERlbGltcy5pbmZpeCxcbiAgKTtcblxubGV0IHN1Z2dlc3Rfb3BlcmFuZDogSW5mby50ID0+IGxpc3QoU3VnZ2VzdGlvbi50KSA9XG4gIHN1Z2dlc3RfZm9ybShUeXAub2ZfY29uc3RfbW9ub19kZWxpbSwgRGVsaW1zLmNvbnN0X21vbm8pO1xuXG5sZXQgc3VnZ2VzdF9sZWFkaW5nOiBJbmZvLnQgPT4gbGlzdChTdWdnZXN0aW9uLnQpID1cbiAgc3VnZ2VzdF9mb3JtKFR5cC5vZl9sZWFkaW5nX2RlbGltLCBEZWxpbXMuZGVsYXllZF9sZWFkaW5nKTtcbiIsIltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgaG9sZV9zb3J0ID1cbiAgfCBFeHByZXNzaW9uSG9sZVxuICB8IFBhdHRlcm5Ib2xlO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQgPSBJZC5NYXAudCgoaG9sZV9zb3J0LCBUeXAudCwgVmFyQ3R4LnQpKTtcbmxldCBlbXB0eTogdCA9IChJZC5NYXAuZW1wdHk6IHQpO1xuIiwiaW5jbHVkZSBJZC5NYXA7XG50eXBlIHQgPSBJZC5NYXAudChBbnkudCk7XG5cbmxldCBhZGRfYWxsID0gKGlkczogbGlzdChJZC50KSwgdG06IEFueS50LCBtYXA6IHQpID0+XG4gIGlkcyB8PiBMaXN0LmZvbGRfbGVmdCgobWFwLCBpZCkgPT4gYWRkKGlkLCB0bSwgbWFwKSwgbWFwKTtcbiIsImluY2x1ZGUgSWQuTWFwO1xudHlwZSB0ID0gSWQuTWFwLnQoVGlsZS50KTtcblxuLy8gdGFpbC1yZWN1cnNpdmVcbmxldCByZWMgbWsgPSAofm1hcD1lbXB0eSwgc2VnOiBTZWdtZW50LnQpOiB0ID0+XG4gIFNlZ21lbnQudGlsZXMoc2VnKVxuICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAobWFwLCB0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgIHQuY2hpbGRyZW5cbiAgICAgICAgIHw+IExpc3QuZm9sZF9sZWZ0KChtYXAsIGtpZCkgPT4gbWsofm1hcCwga2lkKSwgYWRkKHQuaWQsIHQsIG1hcCkpXG4gICAgICAgfSxcbiAgICAgICBtYXAsXG4gICAgICk7XG4iLCIvKiBNQUtFVEVSTVxuXG4gICAgIFRoaXMgcGFyc2VzIHRpbGUgc3RydWN0dXJlIGludG8gdGVybSBzdHJ1Y3R1cmUuXG4gICAgIFRoZSBsYW5ndWFnZSBzeW50YXgsIGFzIGRldGVybWluZWQgYnkgRm9ybS5yZSwgaXMgYW5cbiAgICAgb3BlbiwgZGF0YS1kcml2ZW4gc3lzdGVtLCBzbyBhZGRpbmcgYSBzeW50YWN0aWMgZm9ybVxuICAgICB0aGVyZSB3aWxsIG5vdCB0cmlnZ2VyIGEgc3RhdGljIGVycm9yIGhlcmU7IHlvdSBtdXN0XG4gICAgIHJlbWVtYmVyIHRvIGFkZCBhIGNhc2UgYmVsb3cgZm9yIGVhY2ggbmV3IGZvcm0gYWRkZWRcbiAgICAgdG8gdGhlIHN5bnRheC5cblxuICAgICBXQVJOSU5HOiBUaGlzIG1vZHVsZSBpcyBzdGlsbCBzdHJ1Y3R1cmFsbHkgaW4gZmx1eC5cbiAgICovXG5cbm9wZW4gVXRpbDtcbm9wZW4gQW55O1xuXG4vLyBUT0RPIG1ha2UgbGVzcyBoYWNreVxubGV0IHRva2VucyA9XG4gIFBpZWNlLmdldChcbiAgICBfID0+IFtdLFxuICAgIF8gPT4gW1wiIFwiXSxcbiAgICAodDogVGlsZS50KSA9PiB0LnNoYXJkcyB8PiBMaXN0Lm1hcChMaXN0Lm50aCh0LmxhYmVsKSksXG4gICk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdGlsZSA9IChJZC50LCBBYmEudChUb2tlbi50LCB0KSk7XG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRpbGVzID0gQWJhLnQodGlsZSwgdCk7XG5sZXQgc2luZ2xlID0gKGlkLCBzdWJzdCkgPT4gKFsoaWQsIHN1YnN0KV0sIFtdKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB1bnNvcnRlZCA9XG4gIHwgT3AodGlsZXMpXG4gIHwgUHJlKHRpbGVzLCB0KVxuICB8IFBvc3QodCwgdGlsZXMpXG4gIHwgQmluKHQsIHRpbGVzLCB0KTtcblxubGV0IGlzX25hcnkgPVxuICAgIChpc19zb3J0OiBBbnkudCA9PiBvcHRpb24oJ3NvcnQpLCBkZWxpbTogVG9rZW4udCwgKGRlbGltcywga2lkcyk6IHRpbGVzKVxuICAgIDogb3B0aW9uKGxpc3QoJ3NvcnQpKSA9PlxuICBpZiAoZGVsaW1zIHw+IExpc3QubWFwKHNuZCkgfD4gTGlzdC5mb3JfYWxsKCg9PSkoKFtkZWxpbV0sIFtdKSkpKSB7XG4gICAga2lkcyB8PiBMaXN0Lm1hcChpc19zb3J0KSB8PiBPcHRVdGlsLnNlcXVlbmNlO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBpc190dXBsZV9leHAgPSBpc19uYXJ5KEFueS5pc19leHAsIFwiLFwiKTtcbmxldCBpc190dXBsZV9wYXQgPSBpc19uYXJ5KEFueS5pc19wYXQsIFwiLFwiKTtcbmxldCBpc190dXBsZV90eXAgPSBpc19uYXJ5KEFueS5pc190eXAsIFwiLFwiKTtcbmxldCBpc190eXBfYnN1bSA9IGlzX25hcnkoQW55LmlzX3R5cCwgXCIrXCIpO1xuXG5sZXQgaXNfZ3JvdXQgPSB0aWxlcyA9PlxuICBBYmEuZ2V0X2FzKHRpbGVzKSB8PiBMaXN0Lm1hcChzbmQpIHw+IExpc3QuZm9yX2FsbCgoPT0pKChbXCIgXCJdLCBbXSkpKTtcblxubGV0IGlzX3J1bGVzID0gKCh0cywga2lkcyk6IHRpbGVzKTogb3B0aW9uKEFiYS50KFVQYXQudCwgVUV4cC50KSkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHBzID1cbiAgICB0c1xuICAgIHw+IExpc3QubWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IChfLCAoW1wifFwiLCBcIj0+XCJdLCBbQW55LlBhdChwKV0pKSA9PiBTb21lKHApXG4gICAgICAgICB8IF8gPT4gTm9uZSxcbiAgICAgICApXG4gICAgfD4gT3B0VXRpbC5zZXF1ZW5jZVxuICBhbmQrIGNsYXVzZXMgPVxuICAgIGtpZHNcbiAgICB8PiBMaXN0Lm1hcChcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCBFeHAoY2xhdXNlKSA9PiBTb21lKGNsYXVzZSlcbiAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgIClcbiAgICB8PiBPcHRVdGlsLnNlcXVlbmNlO1xuICBBYmEubWsocHMsIGNsYXVzZXMpO1xufTtcblxubGV0IGlkc19vZl90aWxlcyA9ICh0aWxlczogdGlsZXMpID0+IExpc3QubWFwKGZzdCwgQWJhLmdldF9hcyh0aWxlcykpO1xubGV0IGlkcyA9XG4gIGZ1blxuICB8IE9wKHRpbGVzKVxuICB8IFByZSh0aWxlcywgXylcbiAgfCBQb3N0KF8sIHRpbGVzKVxuICB8IEJpbihfLCB0aWxlcywgXykgPT4gaWRzX29mX3RpbGVzKHRpbGVzKTtcblxubGV0IGtpZHNfb2ZfdGlsZSA9ICgoX2lkLCAoX3Rva2Vucywga2lkcykpOiB0aWxlKSA9PiBraWRzO1xubGV0IGtpZHNfb2ZfdGlsZXMgPSAodGlsZXM6IHRpbGVzKSA9PlxuICB0aWxlc1xuICB8PiBBYmEubWFwX2Eoa2lkc19vZl90aWxlKVxuICB8PiBBYmEuam9pbihGdW4uaWQsIGtpZCA9PiBba2lkXSlcbiAgfD4gTGlzdC5jb25jYXQ7XG5sZXQga2lkc19vZl91bnNvcnRlZCA9XG4gIGZ1blxuICB8IE9wKHRpbGVzKSA9PiBraWRzX29mX3RpbGVzKHRpbGVzKVxuICB8IFByZSh0aWxlcywgcikgPT4ga2lkc19vZl90aWxlcyh0aWxlcykgQCBbcl1cbiAgfCBQb3N0KGwsIHRpbGVzKSA9PiBbbF0gQCBraWRzX29mX3RpbGVzKHRpbGVzKVxuICB8IEJpbihsLCB0aWxlcywgcikgPT4gW2xdIEAga2lkc19vZl90aWxlcyh0aWxlcykgQCBbcl07XG5cbi8vIE5lZWQgdGhpcyBtYXAgdG8gY29sbGVjdCBhbGwgc3RydWN0dXJhbCB0ZXJtcyxcbi8vIG5vdCBqdXN0IHRoZSBvbmVzIHJlY29nbml6ZWQgaW4gU3RhdGljcy5cbi8vIFRPRE8gdW5oYWNrXG5sZXQgbWFwOiByZWYoVGVybU1hcC50KSA9IHJlZihJZC5NYXAuZW1wdHkpO1xubGV0IHJldHVybiA9ICh3cmFwLCBpZHMsIHRtKSA9PiB7XG4gIG1hcCA6PSBUZXJtTWFwLmFkZF9hbGwoaWRzLCB3cmFwKHRtKSwgbWFwXik7XG4gIHRtO1xufTtcblxubGV0IHBhcnNlX3N1bV90ZXJtOiBVVHlwLnQgPT4gQ29uc3RydWN0b3JNYXAudmFyaWFudChVVHlwLnQpID1cbiAgZnVuXG4gIHwge3Rlcm06IFZhcihjdHIpLCBpZHMsIF99ID0+IFZhcmlhbnQoY3RyLCBpZHMsIE5vbmUpXG4gIHwge3Rlcm06IEFwKHt0ZXJtOiBWYXIoY3RyKSwgaWRzOiBpZHNfY3RyLCBffSwgdSksIGlkczogaWRzX2FwLCBffSA9PlxuICAgIFZhcmlhbnQoY3RyLCBpZHNfY3RyIEAgaWRzX2FwLCBTb21lKHUpKVxuICB8IHQgPT4gQmFkRW50cnkodCk7XG5cbmxldCByZWMgZ29fcyA9IChzOiBTb3J0LnQsIHNrZWw6IFNrZWwudCwgc2VnOiBTZWdtZW50LnQpOiB0ID0+XG4gIHN3aXRjaCAocykge1xuICB8IFBhdCA9PiBQYXQocGF0KHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFRQYXQgPT4gVFBhdCh0cGF0KHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFR5cCA9PiBUeXAodHlwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IEV4cCA9PiBFeHAoZXhwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IFJ1bCA9PiBSdWwocnVsKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICB8IE51bCA9PiBOdWwoKSAvL1RPRE9cbiAgfCBBbnkgPT5cbiAgICBsZXQgdG0gPSB1bnNvcnRlZChza2VsLCBzZWcpO1xuICAgIGxldCBpZHMgPSBpZHModG0pO1xuICAgIHN3aXRjaCAoTGlzdFV0aWwuaGRfb3B0KGlkcykpIHtcbiAgICB8IE5vbmUgPT4gRXhwKGV4cCh1bnNvcnRlZChza2VsLCBzZWcpKSlcbiAgICB8IFNvbWUoaWQpID0+XG4gICAgICBzd2l0Y2ggKFRpbGVNYXAuZmluZF9vcHQoaWQsIFRpbGVNYXAubWsoc2VnKSkpIHtcbiAgICAgIHwgTm9uZSA9PiBFeHAoZXhwKHVuc29ydGVkKHNrZWwsIHNlZykpKVxuICAgICAgfCBTb21lKHQpID0+XG4gICAgICAgIGlmICh0Lm1vbGQub3V0ID09IEFueSkge1xuICAgICAgICAgIEV4cChleHAodW5zb3J0ZWQoc2tlbCwgc2VnKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdvX3ModC5tb2xkLm91dCwgc2tlbCwgc2VnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cblxuYW5kIGV4cCA9IHVuc29ydGVkID0+IHtcbiAgbGV0ICh0ZXJtLCBpbm5lcl9pZHMpID0gZXhwX3Rlcm0odW5zb3J0ZWQpO1xuICBsZXQgaWRzID0gaWRzKHVuc29ydGVkKSBAIGlubmVyX2lkcztcbiAgcmV0dXJuKGUgPT4gRXhwKGUpLCBpZHMsIHtpZHMsIGNvcGllZDogZmFsc2UsIHRlcm19KTtcbn1cbmFuZCBleHBfdGVybTogdW5zb3J0ZWQgPT4gKFVFeHAudGVybSwgbGlzdChJZC50KSkgPSB7XG4gIGxldCByZXQgPSAodG06IFVFeHAudGVybSkgPT4gKHRtLCBbXSk7XG4gIGxldCBob2xlID0gdW5zb3J0ZWQgPT4gVUV4cC5ob2xlKGtpZHNfb2ZfdW5zb3J0ZWQodW5zb3J0ZWQpKTtcbiAgZnVuXG4gIHwgT3AodGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIC8vIHNpbmdsZS10aWxlIGNhc2VcbiAgICB8IChbKF9pZCwgdCldLCBbXSkgPT5cbiAgICAgIHN3aXRjaCAodCkge1xuICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X3R1cGxlKHQpID0+IHJldChUdXBsZShbXSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfd2lsZCh0KSA9PiByZXQoRGVmZXJyYWwoT3V0c2lkZUFwKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV9saXN0KHQpID0+IHJldChMaXN0TGl0KFtdKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19ib29sKHQpID0+IHJldChCb29sKGJvb2xfb2Zfc3RyaW5nKHQpKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19pbnQodCkgPT4gcmV0KEludChpbnRfb2Zfc3RyaW5nKHQpKSlcbiAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19zdHJpbmcodCkgPT5cbiAgICAgICAgcmV0KFN0cmluZyhGb3JtLnN0cmlwX3F1b3Rlcyh0KSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZmxvYXQodCkgPT4gcmV0KEZsb2F0KGZsb2F0X29mX3N0cmluZyh0KSkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfdmFyKHQpID0+IHJldChWYXIodCkpXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfY3RyKHQpID0+IHJldChDb25zdHJ1Y3Rvcih0KSlcbiAgICAgIHwgKFtcIihcIiwgXCIpXCJdLCBbRXhwKGJvZHkpXSkgPT4gcmV0KFBhcmVucyhib2R5KSlcbiAgICAgIHwgKFtcIltcIiwgXCJdXCJdLCBbRXhwKGJvZHkpXSkgPT5cbiAgICAgICAgc3dpdGNoIChib2R5KSB7XG4gICAgICAgIHwge2lkcywgY29waWVkOiBmYWxzZSwgdGVybTogVHVwbGUoZXMpfSA9PiAoTGlzdExpdChlcyksIGlkcylcbiAgICAgICAgfCB0ZXJtID0+IHJldChMaXN0TGl0KFt0ZXJtXSkpXG4gICAgICAgIH1cbiAgICAgIHwgKFtcInRlc3RcIiwgXCJlbmRcIl0sIFtFeHAodGVzdCldKSA9PiByZXQoVGVzdCh0ZXN0KSlcbiAgICAgIHwgKFtcImNhc2VcIiwgXCJlbmRcIl0sIFtSdWwoe2lkcywgdGVybTogUnVsZXMoc2NydXQsIHJ1bGVzKSwgX30pXSkgPT4gKFxuICAgICAgICAgIE1hdGNoKHNjcnV0LCBydWxlcyksXG4gICAgICAgICAgaWRzLFxuICAgICAgICApXG4gICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICByZXQoSW52YWxpZCh0KSlcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUHJlKHRpbGVzLCBFeHAocikpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgcmV0KFxuICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgfCAoW1wiJFwiXSwgW10pID0+IFVuT3AoTWV0YShVbnF1b3RlKSwgcilcbiAgICAgICAgfCAoW1wiLVwiXSwgW10pID0+IFVuT3AoSW50KE1pbnVzKSwgcilcbiAgICAgICAgfCAoW1wiIVwiXSwgW10pID0+IFVuT3AoQm9vbChOb3QpLCByKVxuICAgICAgICB8IChbXCJmdW5cIiwgXCItPlwiXSwgW1BhdChwYXQpXSkgPT4gRnVuKHBhdCwgciwgTm9uZSwgTm9uZSlcbiAgICAgICAgfCAoW1wiZml4XCIsIFwiLT5cIl0sIFtQYXQocGF0KV0pID0+IEZpeEYocGF0LCByLCBOb25lKVxuICAgICAgICB8IChbXCJ0eXBmdW5cIiwgXCItPlwiXSwgW1RQYXQodHBhdCldKSA9PiBUeXBGdW4odHBhdCwgciwgTm9uZSlcbiAgICAgICAgfCAoW1wibGV0XCIsIFwiPVwiLCBcImluXCJdLCBbUGF0KHBhdCksIEV4cChkZWYpXSkgPT4gTGV0KHBhdCwgZGVmLCByKVxuICAgICAgICB8IChbXCJoaWRlXCIsIFwiaW5cIl0sIFtFeHAoZmlsdGVyKV0pID0+XG4gICAgICAgICAgRmlsdGVyKEZpbHRlcih7YWN0OiAoRXZhbCwgT25lKSwgcGF0OiBmaWx0ZXJ9KSwgcilcbiAgICAgICAgfCAoW1wiZXZhbFwiLCBcImluXCJdLCBbRXhwKGZpbHRlcildKSA9PlxuICAgICAgICAgIEZpbHRlcihGaWx0ZXIoe2FjdDogKEV2YWwsIEFsbCksIHBhdDogZmlsdGVyfSksIHIpXG4gICAgICAgIHwgKFtcInBhdXNlXCIsIFwiaW5cIl0sIFtFeHAoZmlsdGVyKV0pID0+XG4gICAgICAgICAgRmlsdGVyKEZpbHRlcih7YWN0OiAoU3RlcCwgT25lKSwgcGF0OiBmaWx0ZXJ9KSwgcilcbiAgICAgICAgfCAoW1wiZGVidWdcIiwgXCJpblwiXSwgW0V4cChmaWx0ZXIpXSkgPT5cbiAgICAgICAgICBGaWx0ZXIoRmlsdGVyKHthY3Q6IChTdGVwLCBBbGwpLCBwYXQ6IGZpbHRlcn0pLCByKVxuICAgICAgICB8IChbXCJ0eXBlXCIsIFwiPVwiLCBcImluXCJdLCBbVFBhdCh0cGF0KSwgVHlwKGRlZildKSA9PlxuICAgICAgICAgIFR5QWxpYXModHBhdCwgZGVmLCByKVxuICAgICAgICB8IChbXCJpZlwiLCBcInRoZW5cIiwgXCJlbHNlXCJdLCBbRXhwKGNvbmQpLCBFeHAoY29uc2VxKV0pID0+XG4gICAgICAgICAgSWYoY29uZCwgY29uc2VxLCByKVxuICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQb3N0KEV4cChsKSwgdGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0KV0sIFtdKSA9PlxuICAgICAgc3dpdGNoICh0KSB7XG4gICAgICB8IChbXCIoKVwiXSwgW10pID0+XG4gICAgICAgIHJldChcbiAgICAgICAgICBBcChcbiAgICAgICAgICAgIEZvcndhcmQsXG4gICAgICAgICAgICBsLFxuICAgICAgICAgICAge2lkczogW0lkLm51bGxhcnlfYXBfZmxhZ10sIGNvcGllZDogZmFsc2UsIHRlcm06IFR1cGxlKFtdKX0sXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCAoW1wiKFwiLCBcIilcIl0sIFtFeHAoYXJnKV0pID0+XG4gICAgICAgIGxldCB1c2VfZGVmZXJyYWwgPSAoYXJnOiBVRXhwLnQpOiBVRXhwLnQgPT4ge1xuICAgICAgICAgIGlkczogYXJnLmlkcyxcbiAgICAgICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgICAgIHRlcm06IERlZmVycmFsKEluQXApLFxuICAgICAgICB9O1xuICAgICAgICBzd2l0Y2ggKGFyZy50ZXJtKSB7XG4gICAgICAgIHwgXyB3aGVuIFVFeHAuaXNfZGVmZXJyYWwoYXJnKSA9PlxuICAgICAgICAgIHJldChEZWZlcnJlZEFwKGwsIFt1c2VfZGVmZXJyYWwoYXJnKV0pKVxuICAgICAgICB8IFR1cGxlKGVzKSB3aGVuIExpc3QuZXhpc3RzKFVFeHAuaXNfZGVmZXJyYWwsIGVzKSA9PiAoXG4gICAgICAgICAgICBEZWZlcnJlZEFwKFxuICAgICAgICAgICAgICBsLFxuICAgICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgICBhcmcgPT4gVUV4cC5pc19kZWZlcnJhbChhcmcpID8gdXNlX2RlZmVycmFsKGFyZykgOiBhcmcsXG4gICAgICAgICAgICAgICAgZXMsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYXJnLmlkcyxcbiAgICAgICAgICApXG4gICAgICAgIHwgXyA9PiByZXQoQXAoRm9yd2FyZCwgbCwgYXJnKSlcbiAgICAgICAgfTtcbiAgICAgIHwgKFtcIkA8XCIsIFwiPlwiXSwgW1R5cCh0eSldKSA9PiByZXQoVHlwQXAobCwgdHkpKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBCaW4oRXhwKGwpLCB0aWxlcywgRXhwKHIpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAoaXNfdHVwbGVfZXhwKHRpbGVzKSkge1xuICAgIHwgU29tZShiZXR3ZWVuX2tpZHMpID0+IHJldChUdXBsZShbbF0gQCBiZXR3ZWVuX2tpZHMgQCBbcl0pKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoICh0aWxlcykge1xuICAgICAgfCAoWyhfaWQsIHQpXSwgW10pID0+XG4gICAgICAgIHJldChcbiAgICAgICAgICBzd2l0Y2ggKHQpIHtcbiAgICAgICAgICB8IChbXCIrXCJdLCBbXSkgPT4gQmluT3AoSW50KFBsdXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTWludXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIipcIl0sIFtdKSA9PiBCaW5PcChJbnQoVGltZXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIioqXCJdLCBbXSkgPT4gQmluT3AoSW50KFBvd2VyKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIvXCJdLCBbXSkgPT4gQmluT3AoSW50KERpdmlkZSksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPFwiXSwgW10pID0+IEJpbk9wKEludChMZXNzVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPlwiXSwgW10pID0+IEJpbk9wKEludChHcmVhdGVyVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPD1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTGVzc1RoYW5PckVxdWFsKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI+PVwiXSwgW10pID0+IEJpbk9wKEludChHcmVhdGVyVGhhbk9yRXF1YWwpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj09XCJdLCBbXSkgPT4gQmluT3AoSW50KEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiIT1cIl0sIFtdKSA9PiBCaW5PcChJbnQoTm90RXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIrLlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KFBsdXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTWludXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiouXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoVGltZXMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIi8uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoRGl2aWRlKSwgbCwgcilcbiAgICAgICAgICB8IChbXCIqKi5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChQb3dlciksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPC5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChMZXNzVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPi5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChHcmVhdGVyVGhhbiksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiPD0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTGVzc1RoYW5PckVxdWFsKSwgbCwgcilcbiAgICAgICAgICB8IChbXCI+PS5cIl0sIFtdKSA9PiBCaW5PcChGbG9hdChHcmVhdGVyVGhhbk9yRXF1YWwpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIj09LlwiXSwgW10pID0+IEJpbk9wKEZsb2F0KEVxdWFscyksIGwsIHIpXG4gICAgICAgICAgfCAoW1wiIT0uXCJdLCBbXSkgPT4gQmluT3AoRmxvYXQoTm90RXF1YWxzKSwgbCwgcilcbiAgICAgICAgICB8IChbXCImJlwiXSwgW10pID0+IEJpbk9wKEJvb2woQW5kKSwgbCwgcilcbiAgICAgICAgICB8IChbXCJ8fFwiXSwgW10pID0+IEJpbk9wKEJvb2woT3IpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIjo6XCJdLCBbXSkgPT4gQ29ucyhsLCByKVxuICAgICAgICAgIHwgKFtcIjtcIl0sIFtdKSA9PiBTZXEobCwgcilcbiAgICAgICAgICB8IChbXCIrK1wiXSwgW10pID0+IEJpbk9wKFN0cmluZyhDb25jYXQpLCBsLCByKVxuICAgICAgICAgIHwgKFtcIiQ9PVwiXSwgW10pID0+IEJpbk9wKFN0cmluZyhFcXVhbHMpLCBsLCByKVxuICAgICAgICAgIHwgKFtcInw+XCJdLCBbXSkgPT4gQXAoUmV2ZXJzZSwgbCwgcilcbiAgICAgICAgICB8IChbXCJAXCJdLCBbXSkgPT4gTGlzdENvbmNhdChsLCByKVxuICAgICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgICB9XG4gICAgfVxuICB8IHRtID0+IHJldChob2xlKHRtKSk7XG59XG5hbmQgcGF0ID0gdW5zb3J0ZWQgPT4ge1xuICBsZXQgKHRlcm0sIGlubmVyX2lkcykgPSBwYXRfdGVybSh1bnNvcnRlZCk7XG4gIGxldCBpZHMgPSBpZHModW5zb3J0ZWQpIEAgaW5uZXJfaWRzO1xuICByZXR1cm4ocCA9PiBQYXQocCksIGlkcywge2lkcywgdGVybSwgY29waWVkOiBmYWxzZX0pO1xufVxuYW5kIHBhdF90ZXJtOiB1bnNvcnRlZCA9PiAoVVBhdC50ZXJtLCBsaXN0KElkLnQpKSA9IHtcbiAgbGV0IHJldCA9ICh0ZXJtOiBVUGF0LnRlcm0pID0+ICh0ZXJtLCBbXSk7XG4gIGxldCBob2xlID0gdW5zb3J0ZWQgPT4gVVBhdC5ob2xlKGtpZHNfb2ZfdW5zb3J0ZWQodW5zb3J0ZWQpKTtcbiAgZnVuXG4gIHwgT3AodGlsZXMpIGFzIHRtID0+XG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoX2lkLCB0aWxlKV0sIFtdKSA9PlxuICAgICAgcmV0KFxuICAgICAgICBzd2l0Y2ggKHRpbGUpIHtcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX2VtcHR5X3R1cGxlKHQpID0+IFR1cGxlKFtdKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZW1wdHlfbGlzdCh0KSA9PiBMaXN0TGl0KFtdKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfYm9vbCh0KSA9PiBCb29sKGJvb2xfb2Zfc3RyaW5nKHQpKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfZmxvYXQodCkgPT4gRmxvYXQoZmxvYXRfb2Zfc3RyaW5nKHQpKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfaW50KHQpID0+IEludChpbnRfb2Zfc3RyaW5nKHQpKVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfc3RyaW5nKHQpID0+XG4gICAgICAgICAgbGV0IHMgPSBSZS5TdHIuc3RyaW5nX2FmdGVyKHQsIDEpO1xuICAgICAgICAgIGxldCBzID0gUmUuU3RyLnN0cmluZ19iZWZvcmUocywgU3RyaW5nLmxlbmd0aChzKSAtIDEpO1xuICAgICAgICAgIFN0cmluZyhzKTtcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3Zhcih0KSA9PiBWYXIodClcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3dpbGQodCkgPT4gV2lsZFxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIEZvcm0uaXNfY3RyKHQpID0+IENvbnN0cnVjdG9yKHQpXG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gdCAhPSBcIiBcIiAmJiAhRm9ybS5pc19leHBsaWNpdF9ob2xlKHQpID0+XG4gICAgICAgICAgSW52YWxpZCh0KVxuICAgICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW1BhdChib2R5KV0pID0+IFBhcmVucyhib2R5KVxuICAgICAgICB8IChbXCJbXCIsIFwiXVwiXSwgW1BhdChib2R5KV0pID0+XG4gICAgICAgICAgc3dpdGNoIChib2R5KSB7XG4gICAgICAgICAgfCB7dGVybTogVHVwbGUocHMpLCBffSA9PiBMaXN0TGl0KHBzKVxuICAgICAgICAgIHwgdGVybSA9PiBMaXN0TGl0KFt0ZXJtXSlcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiBob2xlKHRtKVxuICAgICAgICB9LFxuICAgICAgKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IFBvc3QoUGF0KGwpLCB0aWxlcykgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfaWQsIHQpXSwgW10pID0+XG4gICAgICByZXQoXG4gICAgICAgIHN3aXRjaCAodCkge1xuICAgICAgICB8IChbXCIoXCIsIFwiKVwiXSwgW1BhdChhcmcpXSkgPT4gQXAobCwgYXJnKVxuICAgICAgICB8IF8gPT4gaG9sZSh0bSlcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQcmUoXykgYXMgdG0gPT4gcmV0KGhvbGUodG0pKVxuICB8IEJpbihQYXQocCksIHRpbGVzLCBUeXAodHkpKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgKFtcIjpcIl0sIFtdKSldLCBbXSkgPT5cbiAgICAgIHJldChDYXN0KHAsIHR5LCBVbmtub3duKEludGVybmFsKSB8PiBUeXAuZnJlc2gpKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IEJpbihQYXQobCksIHRpbGVzLCBQYXQocikpIGFzIHRtID0+XG4gICAgc3dpdGNoIChpc190dXBsZV9wYXQodGlsZXMpKSB7XG4gICAgfCBTb21lKGJldHdlZW5fa2lkcykgPT4gcmV0KFR1cGxlKFtsXSBAIGJldHdlZW5fa2lkcyBAIFtyXSkpXG4gICAgfCBOb25lID0+XG4gICAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgICB8IChbKF9pZCwgKFtcIjo6XCJdLCBbXSkpXSwgW10pID0+IHJldChDb25zKGwsIHIpKVxuICAgICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICAgIH1cbiAgICB9XG4gIHwgdG0gPT4gcmV0KGhvbGUodG0pKTtcbn1cbmFuZCB0eXAgPSB1bnNvcnRlZCA9PiB7XG4gIGxldCAodGVybSwgaW5uZXJfaWRzKSA9IHR5cF90ZXJtKHVuc29ydGVkKTtcbiAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCkgQCBpbm5lcl9pZHM7XG4gIHJldHVybih0eSA9PiBUeXAodHkpLCBpZHMsIHtpZHMsIHRlcm0sIGNvcGllZDogZmFsc2V9KTtcbn1cbmFuZCB0eXBfdGVybTogdW5zb3J0ZWQgPT4gKFVUeXAudGVybSwgbGlzdChJZC50KSkgPSB7XG4gIGxldCByZXQgPSAodGVybTogVVR5cC50ZXJtKSA9PiAodGVybSwgW10pO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFVUeXAuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdGlsZSldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0aWxlKSB7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc19lbXB0eV90dXBsZSh0KSA9PiBQcm9kKFtdKVxuICAgICAgICB8IChbXCJCb29sXCJdLCBbXSkgPT4gQm9vbFxuICAgICAgICB8IChbXCJJbnRcIl0sIFtdKSA9PiBJbnRcbiAgICAgICAgfCAoW1wiRmxvYXRcIl0sIFtdKSA9PiBGbG9hdFxuICAgICAgICB8IChbXCJTdHJpbmdcIl0sIFtdKSA9PiBTdHJpbmdcbiAgICAgICAgfCAoW3RdLCBbXSkgd2hlbiBGb3JtLmlzX3R5cF92YXIodCkgPT4gVmFyKHQpXG4gICAgICAgIHwgKFtcIihcIiwgXCIpXCJdLCBbVHlwKGJvZHkpXSkgPT4gUGFyZW5zKGJvZHkpXG4gICAgICAgIHwgKFtcIltcIiwgXCJdXCJdLCBbVHlwKGJvZHkpXSkgPT4gTGlzdChib2R5KVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICAgIFVua25vd24oSG9sZShJbnZhbGlkKHQpKSlcbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgUG9zdChUeXAodCksIHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF8sIChbXCIoXCIsIFwiKVwiXSwgW1R5cCh0eXApXSkpXSwgW10pID0+IHJldChBcCh0LCB0eXApKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICAvKiBmb3JhbGwgYW5kIHJlYyBoYXZlIHRvIGJlIGJlZm9yZSBzdW0gc28gdGhhdCB0aGV5IGJpbmQgdGlnaHRlci5cbiAgICogVGh1cyBgcmVjIEEgLT4gTGVmdChBKSArIFJpZ2h0KEIpYCBnZXQgcGFyc2VkIGFzIGByZWMgQSAtPiAoTGVmdChBKSArIFJpZ2h0KEIpKWBcbiAgICogSWYgdGhpcyBpcyBiZWxvdyB0aGUgY2FzZSBmb3Igc3VtLCB0aGVuIGl0IGdldHMgcGFyc2VkIGFzIGFuIGludmFsaWQgZm9ybS4gKi9cbiAgfCBQcmUoKFsoX2lkLCAoW1wiZm9yYWxsXCIsIFwiLT5cIl0sIFtUUGF0KHRwYXQpXSkpXSwgW10pLCBUeXAodCkpID0+XG4gICAgcmV0KEZvcmFsbCh0cGF0LCB0KSlcbiAgfCBQcmUoKFsoX2lkLCAoW1wicmVjXCIsIFwiLT5cIl0sIFtUUGF0KHRwYXQpXSkpXSwgW10pLCBUeXAodCkpID0+XG4gICAgcmV0KFJlYyh0cGF0LCB0KSlcbiAgfCBQcmUodGlsZXMsIFR5cCh7dGVybTogU3VtKHQwKSwgaWRzLCBffSkpIGFzIHRtID0+XG4gICAgLyogQ2FzZSBmb3IgbGVhZGluZyBwcmVmaXggKyBwcmVjZWVkaW5nIGEgc3VtICovXG4gICAgc3dpdGNoICh0aWxlcykge1xuICAgIHwgKFsoXywgKFtcIitcIl0sIFtdKSldLCBbXSkgPT4gKFN1bSh0MCksIGlkcylcbiAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgIH1cbiAgfCBQcmUodGlsZXMsIFR5cCh0KSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCAoWyhfLCAoW1wiK1wiXSwgW10pKV0sIFtdKSA9PiByZXQoU3VtKFtwYXJzZV9zdW1fdGVybSh0KV0pKVxuICAgIHwgXyA9PiByZXQoaG9sZSh0bSkpXG4gICAgfVxuICB8IEJpbihUeXAodDEpLCB0aWxlcywgVHlwKHQyKSkgYXMgdG0gd2hlbiBpc190eXBfYnN1bSh0aWxlcykgIT0gTm9uZSA9PlxuICAgIHN3aXRjaCAoaXNfdHlwX2JzdW0odGlsZXMpKSB7XG4gICAgfCBTb21lKGJldHdlZW5fa2lkcykgPT5cbiAgICAgIHJldChTdW0oTGlzdC5tYXAocGFyc2Vfc3VtX3Rlcm0sIFt0MV0gQCBiZXR3ZWVuX2tpZHMgQCBbdDJdKSkpXG4gICAgfCBOb25lID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgQmluKFR5cChsKSwgdGlsZXMsIFR5cChyKSkgYXMgdG0gPT5cbiAgICBzd2l0Y2ggKGlzX3R1cGxlX3R5cCh0aWxlcykpIHtcbiAgICB8IFNvbWUoYmV0d2Vlbl9raWRzKSA9PiByZXQoUHJvZChbbF0gQCBiZXR3ZWVuX2tpZHMgQCBbcl0pKVxuICAgIHwgTm9uZSA9PlxuICAgICAgc3dpdGNoICh0aWxlcykge1xuICAgICAgfCAoWyhfaWQsIChbXCItPlwiXSwgW10pKV0sIFtdKSA9PiByZXQoQXJyb3cobCwgcikpXG4gICAgICB8IF8gPT4gcmV0KGhvbGUodG0pKVxuICAgICAgfVxuICAgIH1cbiAgfCB0bSA9PiByZXQoaG9sZSh0bSkpO1xufVxuYW5kIHRwYXQgPSB1bnNvcnRlZCA9PiB7XG4gIGxldCB0ZXJtID0gdHBhdF90ZXJtKHVuc29ydGVkKTtcbiAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCk7XG4gIHJldHVybih0eSA9PiBUUGF0KHR5KSwgaWRzLCB7aWRzLCB0ZXJtLCBjb3BpZWQ6IGZhbHNlfSk7XG59XG5hbmQgdHBhdF90ZXJtOiB1bnNvcnRlZCA9PiBUUGF0LnRlcm0gPSB7XG4gIGxldCByZXQgPSAodGVybTogVFBhdC50ZXJtKSA9PiB0ZXJtO1xuICBsZXQgaG9sZSA9IHVuc29ydGVkID0+IFRQYXQuaG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIGZ1blxuICB8IE9wKHRpbGVzKSBhcyB0bSA9PlxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IChbKF9pZCwgdGlsZSldLCBbXSkgPT5cbiAgICAgIHJldChcbiAgICAgICAgc3dpdGNoICh0aWxlKSB7XG4gICAgICAgIHwgKFt0XSwgW10pIHdoZW4gRm9ybS5pc190eXBfdmFyKHQpID0+IFZhcih0KVxuICAgICAgICB8IChbdF0sIFtdKSB3aGVuIHQgIT0gXCIgXCIgJiYgIUZvcm0uaXNfZXhwbGljaXRfaG9sZSh0KSA9PlxuICAgICAgICAgIEludmFsaWQodClcbiAgICAgICAgfCBfID0+IGhvbGUodG0pXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfCBfID0+IHJldChob2xlKHRtKSlcbiAgICB9XG4gIHwgKFByZShfKSB8IFBvc3QoXykpIGFzIHRtID0+IHJldChob2xlKHRtKSlcbiAgfCB0bSA9PiByZXQoaG9sZSh0bSkpO1xufVxuXG4vLyBhbmQgcnVsID0gdW5zb3J0ZWQgPT4ge1xuLy8gICBsZXQgdGVybSA9IHJ1bF90ZXJtKHVuc29ydGVkKTtcbi8vICAgbGV0IGlkcyA9IGlkcyh1bnNvcnRlZCk7XG4vLyAgIHJldHVybihyID0+IFJ1bChyKSwgaWRzLCB7aWRzLCB0ZXJtfSk7XG4vLyB9XG5hbmQgcnVsID0gKHVuc29ydGVkOiB1bnNvcnRlZCk6IFJ1bC50ID0+IHtcbiAgbGV0IGhvbGUgPSBSdWwuSG9sZShraWRzX29mX3Vuc29ydGVkKHVuc29ydGVkKSk7XG4gIHN3aXRjaCAoZXhwKHVuc29ydGVkKSkge1xuICB8IHt0ZXJtOiBNdWx0aUhvbGUoXyksIF99ID0+XG4gICAgc3dpdGNoICh1bnNvcnRlZCkge1xuICAgIHwgQmluKEV4cChzY3J1dCksIHRpbGVzLCBFeHAobGFzdF9jbGF1c2UpKSA9PlxuICAgICAgc3dpdGNoIChpc19ydWxlcyh0aWxlcykpIHtcbiAgICAgIHwgU29tZSgocHMsIGxlYWRpbmdfY2xhdXNlcykpID0+IHtcbiAgICAgICAgICBpZHM6IGlkcyh1bnNvcnRlZCksXG4gICAgICAgICAgdGVybTpcbiAgICAgICAgICAgIFJ1bGVzKHNjcnV0LCBMaXN0LmNvbWJpbmUocHMsIGxlYWRpbmdfY2xhdXNlcyBAIFtsYXN0X2NsYXVzZV0pKSxcbiAgICAgICAgICBjb3BpZWQ6IGZhbHNlLFxuICAgICAgICB9XG4gICAgICB8IE5vbmUgPT4ge2lkczogaWRzKHVuc29ydGVkKSwgdGVybTogaG9sZSwgY29waWVkOiBmYWxzZX1cbiAgICAgIH1cbiAgICB8IF8gPT4ge2lkczogaWRzKHVuc29ydGVkKSwgdGVybTogaG9sZSwgY29waWVkOiBmYWxzZX1cbiAgICB9XG4gIHwgZSA9PiB7aWRzOiBbXSwgdGVybTogUnVsZXMoZSwgW10pLCBjb3BpZWQ6IGZhbHNlfVxuICB9O1xufVxuXG5hbmQgdW5zb3J0ZWQgPSAoc2tlbDogU2tlbC50LCBzZWc6IFNlZ21lbnQudCk6IHVuc29ydGVkID0+IHtcbiAgbGV0IHRpbGVfa2lkcyA9IChwOiBQaWVjZS50KTogbGlzdCh0KSA9PlxuICAgIHN3aXRjaCAocCkge1xuICAgIHwgU2Vjb25kYXJ5KF8pXG4gICAgfCBHcm91dChfKSA9PiBbXVxuICAgIHwgVGlsZSh7bW9sZCwgc2hhcmRzLCBjaGlsZHJlbiwgX30pID0+XG4gICAgICBBYmEuYWJhX3RyaXBsZXMoQWJhLm1rKHNoYXJkcywgY2hpbGRyZW4pKVxuICAgICAgfD4gTGlzdC5tYXAoKChsLCBraWQsIHIpKSA9PiB7XG4gICAgICAgICAgIGxldCBzID0gbCArIDEgPT0gciA/IExpc3QubnRoKG1vbGQuaW5fLCBsKSA6IFNvcnQuQW55O1xuICAgICAgICAgICBnb19zKHMsIFNlZ21lbnQuc2tlbChraWQpLCBraWQpO1xuICAgICAgICAgfSlcbiAgICB9O1xuXG4gIGxldCByb290OiBBYmEudChQaWVjZS50LCBTa2VsLnQpID1cbiAgICBTa2VsLnJvb3Qoc2tlbCkgfD4gQWJhLm1hcF9hKExpc3QubnRoKHNlZykpO1xuXG4gIC8vIG1haW50YWluaW5nIHRoaXMgYWx0ZXJuYXRpbmcgb3JkZXJlZCBzdHJ1Y3R1cmVcbiAgLy8gZm9yIGhhbmRsaW5nIGluY29tcGxldGUgZm9ybXMgbGF0ZXJcbiAgbGV0IHRpbGVzID1cbiAgICByb290XG4gICAgfD4gQWJhLm1hcF9hYmFzKCgocF9sLCBraWQsIHBfcikpID0+IHtcbiAgICAgICAgIGxldCAoXywgc19sKSA9IFBpZWNlLm5pYl9zb3J0cyhwX2wpO1xuICAgICAgICAgbGV0IChzX3IsIF8pID0gUGllY2UubmliX3NvcnRzKHBfcik7XG4gICAgICAgICBsZXQgcyA9IHNfbCA9PSBzX3IgPyBzX2wgOiBTb3J0LkFueTtcbiAgICAgICAgIGdvX3Mocywga2lkLCBzZWcpO1xuICAgICAgIH0pXG4gICAgfD4gQWJhLm1hcF9hKHBcbiAgICAgICAgIC8vIFRPRE8gdGhyb3cgcHJvcGVyIGV4Y2VwdGlvblxuICAgICAgICAgPT4gKFBpZWNlLmlkKHApLCBBYmEubWsodG9rZW5zKHApLCB0aWxlX2tpZHMocCkpKSk7XG5cbiAgbGV0IChsX3NvcnQsIHJfc29ydCkgPSB7XG4gICAgbGV0IHBfbCA9IEFiYS5maXJzdF9hKHJvb3QpO1xuICAgIGxldCBwX3IgPSBBYmEubGFzdF9hKHJvb3QpO1xuICAgIC8vIFRPRE8gdGhyb3cgcHJvcGVyIGV4Y2VwdGlvbnNcbiAgICBsZXQgKGwsIF8pID0gT3B0aW9uLmdldChQaWVjZS5uaWJzKHBfbCkpO1xuICAgIGxldCAoXywgcikgPSBPcHRpb24uZ2V0KFBpZWNlLm5pYnMocF9yKSk7XG4gICAgKGwuc29ydCwgci5zb3J0KTtcbiAgfTtcblxuICBzd2l0Y2ggKHNrZWwpIHtcbiAgfCBPcChfKSA9PiBPcCh0aWxlcylcbiAgfCBQcmUoXywgcikgPT4gUHJlKHRpbGVzLCBnb19zKHJfc29ydCwgciwgc2VnKSlcbiAgfCBQb3N0KGwsIF8pID0+IFBvc3QoZ29fcyhsX3NvcnQsIGwsIHNlZyksIHRpbGVzKVxuICB8IEJpbihsLCBfLCByKSA9PiBCaW4oZ29fcyhsX3NvcnQsIGwsIHNlZyksIHRpbGVzLCBnb19zKHJfc29ydCwgciwgc2VnKSlcbiAgfTtcbn07XG5cbmxldCBnbyA9XG4gIENvcmUuTWVtby5nZW5lcmFsKFxuICAgIH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsXG4gICAgc2VnID0+IHtcbiAgICAgIG1hcCA6PSBUZXJtTWFwLmVtcHR5O1xuICAgICAgbGV0IGUgPSBleHAodW5zb3J0ZWQoU2VnbWVudC5za2VsKHNlZyksIHNlZykpO1xuICAgICAgKGUsIG1hcF4pO1xuICAgIH0sXG4gICk7XG5cbmxldCBmcm9tX3ppcCA9ICh+ZHVtcF9iYWNrcGFjazogYm9vbCwgfmVyYXNlX2J1ZmZlcjogYm9vbCwgejogWmlwcGVyLnQpID0+IHtcbiAgbGV0IHNlZyA9IFppcHBlci5zbWFydF9zZWcofmR1bXBfYmFja3BhY2ssIH5lcmFzZV9idWZmZXIsIHopO1xuICBnbyhzZWcpO1xufTtcblxubGV0IGZyb21femlwX2Zvcl92aWV3ID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwoXG4gICAgfmNhY2hlX3NpemVfYm91bmQ9MTAwMCxcbiAgICBmcm9tX3ppcCh+ZHVtcF9iYWNrcGFjaz1mYWxzZSwgfmVyYXNlX2J1ZmZlcj10cnVlKSxcbiAgKTtcblxubGV0IGZyb21femlwX2Zvcl9zZW0gPVxuICBDb3JlLk1lbW8uZ2VuZXJhbChcbiAgICB+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLFxuICAgIGZyb21femlwKH5kdW1wX2JhY2twYWNrPXRydWUsIH5lcmFzZV9idWZmZXI9dHJ1ZSksXG4gICk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5tb2R1bGUgTWV0YSA9IHtcbiAgdHlwZSB0ID0ge1xuICAgIGNvbF90YXJnZXQ6IGludCxcbiAgICB0b3VjaGVkOiBUb3VjaGVkLnQsXG4gICAgbWVhc3VyZWQ6IE1lYXN1cmVkLnQsXG4gICAgdGVybV9yYW5nZXM6IFRlcm1SYW5nZXMudCxcbiAgICB1bnNlbGVjdGVkOiBTZWdtZW50LnQsXG4gICAgc2VnbWVudDogU2VnbWVudC50LFxuICAgIHZpZXdfdGVybTogVUV4cC50LFxuICAgIHRlcm1zOiBUZXJtTWFwLnQsXG4gICAgdGlsZXM6IFRpbGVNYXAudCxcbiAgICBob2xlczogbGlzdChHcm91dC50KSxcbiAgICBidWZmZXJfaWRzOiBsaXN0KElkLnQpLFxuICB9O1xuXG4gIGxldCBpbml0ID0gKHo6IFppcHBlci50KSA9PiB7XG4gICAgbGV0IHVuc2VsZWN0ZWQgPSBaaXBwZXIudW5zZWxlY3RfYW5kX3ppcCh6KTtcbiAgICBsZXQgKHZpZXdfdGVybSwgdGVybXMpID0gTWFrZVRlcm0uZ28odW5zZWxlY3RlZCk7XG4gICAge1xuICAgICAgY29sX3RhcmdldDogMCxcbiAgICAgIHRvdWNoZWQ6IFRvdWNoZWQuZW1wdHksXG4gICAgICBtZWFzdXJlZDogTWVhc3VyZWQub2Zfc2VnbWVudCh1bnNlbGVjdGVkKSxcbiAgICAgIHVuc2VsZWN0ZWQsXG4gICAgICB0ZXJtX3JhbmdlczogVGVybVJhbmdlcy5tayh1bnNlbGVjdGVkKSxcbiAgICAgIHNlZ21lbnQ6IFppcHBlci56aXAoeiksXG4gICAgICB0aWxlczogVGlsZU1hcC5tayh1bnNlbGVjdGVkKSxcbiAgICAgIHZpZXdfdGVybSxcbiAgICAgIHRlcm1zLFxuICAgICAgaG9sZXM6IFNlZ21lbnQuaG9sZXModW5zZWxlY3RlZCksXG4gICAgICBidWZmZXJfaWRzOiBTZWxlY3Rpb24uYnVmZmVyX2lkcyh6LnNlbGVjdGlvbiksXG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgdHlwZSBTID0ge1xuICAgIGxldCB0b3VjaGVkOiBUb3VjaGVkLnQ7XG4gICAgbGV0IG1lYXN1cmVkOiBNZWFzdXJlZC50O1xuICAgIGxldCB0ZXJtX3JhbmdlczogVGVybVJhbmdlcy50O1xuICAgIGxldCBjb2xfdGFyZ2V0OiBpbnQ7XG4gIH07XG4gIGxldCBtb2R1bGVfb2ZfdCA9IChtOiB0KTogKG1vZHVsZSBTKSA9PlxuICAgIChtb2R1bGVcbiAgICAge1xuICAgICAgIGxldCB0b3VjaGVkID0gbS50b3VjaGVkO1xuICAgICAgIGxldCBtZWFzdXJlZCA9IG0ubWVhc3VyZWQ7XG4gICAgICAgbGV0IHRlcm1fcmFuZ2VzID0gbS50ZXJtX3JhbmdlcztcbiAgICAgICBsZXQgY29sX3RhcmdldCA9IG0uY29sX3RhcmdldDtcbiAgICAgfSk7XG5cbiAgLy8gc2hvdWxkIG5vdCBiZSBzZXJpYWxpemluZ1xuICBsZXQgc2V4cF9vZl90ID0gXyA9PiBmYWlsd2l0aChcIkVkaXRvci5NZXRhLnNleHBfb2ZfdFwiKTtcbiAgbGV0IHRfb2Zfc2V4cCA9IF8gPT4gZmFpbHdpdGgoXCJFZGl0b3IuTWV0YS50X29mX3NleHBcIik7XG4gIGxldCB5b2pzb25fb2ZfdCA9IF8gPT4gZmFpbHdpdGgoXCJFZGl0b3IuTWV0YS55b2pzb25fb2ZfdFwiKTtcbiAgbGV0IHRfb2ZfeW9qc29uID0gXyA9PiBmYWlsd2l0aChcIkVkaXRvci5NZXRhLnRfb2ZfeW9qc29uXCIpO1xuXG4gIGxldCBuZXh0ID1cbiAgICAgICh+ZWZmZWN0czogbGlzdChFZmZlY3QudCk9W10sIGE6IEFjdGlvbi50LCB6OiBaaXBwZXIudCwgbWV0YTogdCk6IHQgPT4ge1xuICAgIGxldCB7dG91Y2hlZCwgbWVhc3VyZWQsIGNvbF90YXJnZXQsIF99ID0gbWV0YTtcbiAgICBsZXQgdG91Y2hlZCA9IFRvdWNoZWQudXBkYXRlKFRpbWUudGljaygpLCBlZmZlY3RzLCB0b3VjaGVkKTtcbiAgICBsZXQgaXNfZWRpdCA9IEFjdGlvbi5pc19lZGl0KGEpO1xuICAgIGxldCB1bnNlbGVjdGVkID0gaXNfZWRpdCA/IFppcHBlci51bnNlbGVjdF9hbmRfemlwKHopIDogbWV0YS51bnNlbGVjdGVkO1xuICAgIGxldCBtZWFzdXJlZCA9XG4gICAgICBpc19lZGl0XG4gICAgICAgID8gTWVhc3VyZWQub2Zfc2VnbWVudCh+dG91Y2hlZCwgfm9sZD1tZWFzdXJlZCwgdW5zZWxlY3RlZCkgOiBtZWFzdXJlZDtcbiAgICBsZXQgY29sX3RhcmdldCA9XG4gICAgICBzd2l0Y2ggKGEpIHtcbiAgICAgIHwgTW92ZShMb2NhbChVcCB8IERvd24pKVxuICAgICAgfCBTZWxlY3QoUmVzaXplKExvY2FsKFVwIHwgRG93bikpKSA9PiBjb2xfdGFyZ2V0XG4gICAgICB8IF8gPT4gWmlwcGVyLmNhcmV0X3BvaW50KG1lYXN1cmVkLCB6KS5jb2xcbiAgICAgIH07XG4gICAgbGV0ICh2aWV3X3Rlcm0sIHRlcm1zKSA9XG4gICAgICBpc19lZGl0ID8gTWFrZVRlcm0uZ28odW5zZWxlY3RlZCkgOiAobWV0YS52aWV3X3Rlcm0sIG1ldGEudGVybXMpO1xuICAgIHtcbiAgICAgIGNvbF90YXJnZXQsXG4gICAgICB0b3VjaGVkLFxuICAgICAgbWVhc3VyZWQsXG4gICAgICB1bnNlbGVjdGVkLFxuICAgICAgdGVybV9yYW5nZXM6IGlzX2VkaXQgPyBUZXJtUmFuZ2VzLm1rKHVuc2VsZWN0ZWQpIDogbWV0YS50ZXJtX3JhbmdlcyxcbiAgICAgIHNlZ21lbnQ6IFppcHBlci56aXAoeiksXG4gICAgICB0aWxlczogaXNfZWRpdCA/IFRpbGVNYXAubWsodW5zZWxlY3RlZCkgOiBtZXRhLnRpbGVzLFxuICAgICAgdmlld190ZXJtLFxuICAgICAgdGVybXMsXG4gICAgICBob2xlczogaXNfZWRpdCA/IFNlZ21lbnQuaG9sZXModW5zZWxlY3RlZCkgOiBtZXRhLmhvbGVzLFxuICAgICAgYnVmZmVyX2lkczogU2VsZWN0aW9uLmJ1ZmZlcl9pZHMoei5zZWxlY3Rpb24pLFxuICAgIH07XG4gIH07XG59O1xuXG5tb2R1bGUgU3RhdGUgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIHppcHBlcjogWmlwcGVyLnQsXG4gICAgW0BvcGFxdWVdXG4gICAgbWV0YTogTWV0YS50LFxuICB9O1xuXG4gIGxldCBpbml0ID0gemlwcGVyID0+IHt6aXBwZXIsIG1ldGE6IE1ldGEuaW5pdCh6aXBwZXIpfTtcblxuICBsZXQgbmV4dCA9ICh+ZWZmZWN0czogbGlzdChFZmZlY3QudCk9W10sIGE6IEFjdGlvbi50LCB6OiBaaXBwZXIudCwgc3RhdGUpID0+IHtcbiAgICB6aXBwZXI6IHosXG4gICAgbWV0YTogTWV0YS5uZXh0KH5lZmZlY3RzLCBhLCB6LCBzdGF0ZS5tZXRhKSxcbiAgfTtcbn07XG5cbm1vZHVsZSBIaXN0b3J5ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgYWZmaXggPSBsaXN0KChBY3Rpb24udCwgU3RhdGUudCkpO1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IChhZmZpeCwgYWZmaXgpO1xuXG4gIGxldCBlbXB0eSA9IChbXSwgW10pO1xuXG4gIGxldCBhZGQgPSAoYTogQWN0aW9uLnQsIHN0YXRlOiBTdGF0ZS50LCAocHJlLCBfKTogdCk6IHQgPT4gKFxuICAgIFsoYSwgc3RhdGUpLCAuLi5wcmVdLFxuICAgIFtdLFxuICApO1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzdGF0ZTogU3RhdGUudCxcbiAgaGlzdG9yeTogSGlzdG9yeS50LFxuICByZWFkX29ubHk6IGJvb2wsXG59O1xuXG5sZXQgaW5pdCA9ICh+cmVhZF9vbmx5PWZhbHNlLCB6KSA9PiB7XG4gIHN0YXRlOiBTdGF0ZS5pbml0KHopLFxuICBoaXN0b3J5OiBIaXN0b3J5LmVtcHR5LFxuICByZWFkX29ubHksXG59O1xubGV0IGVtcHR5ID0gaWQgPT4gaW5pdCh+cmVhZF9vbmx5PWZhbHNlLCBaaXBwZXIuaW5pdChpZCkpO1xuXG5sZXQgdXBkYXRlX3ogPSAoZjogWmlwcGVyLnQgPT4gWmlwcGVyLnQsIGVkOiB0KSA9PiB7XG4gIC4uLmVkLFxuICBzdGF0ZToge1xuICAgIC4uLmVkLnN0YXRlLFxuICAgIHppcHBlcjogZihlZC5zdGF0ZS56aXBwZXIpLFxuICB9LFxufTtcbmxldCBwdXRfeiA9ICh6OiBaaXBwZXIudCkgPT4gdXBkYXRlX3ooXyA9PiB6KTtcblxubGV0IHVwZGF0ZV96X29wdCA9IChmOiBaaXBwZXIudCA9PiBvcHRpb24oWmlwcGVyLnQpLCBlZDogdCkgPT4ge1xuICBvcGVuIE9wdFV0aWwuU3ludGF4O1xuICBsZXQrIHogPSBmKGVkLnN0YXRlLnppcHBlcik7XG4gIHB1dF96KHosIGVkKTtcbn07XG5cbmxldCBuZXdfc3RhdGUgPVxuICAgICh+ZWZmZWN0czogbGlzdChFZmZlY3QudCk9W10sIGE6IEFjdGlvbi50LCB6OiBaaXBwZXIudCwgZWQ6IHQpOiB0ID0+IHtcbiAgbGV0IHN0YXRlID0gU3RhdGUubmV4dCh+ZWZmZWN0cywgYSwgeiwgZWQuc3RhdGUpO1xuICBsZXQgaGlzdG9yeSA9IEhpc3RvcnkuYWRkKGEsIGVkLnN0YXRlLCBlZC5oaXN0b3J5KTtcbiAge3N0YXRlLCBoaXN0b3J5LCByZWFkX29ubHk6IGVkLnJlYWRfb25seX07XG59O1xuXG5sZXQgY2FyZXRfcG9pbnQgPSAoZWQ6IHQpOiBNZWFzdXJlZC5Qb2ludC50ID0+IHtcbiAgbGV0IFN0YXRlLnt6aXBwZXIsIG1ldGF9ID0gZWQuc3RhdGU7XG4gIFppcHBlci5jYXJldF9wb2ludChtZXRhLm1lYXN1cmVkLCB6aXBwZXIpO1xufTtcblxubGV0IHVuZG8gPSAoZWQ6IHQpID0+XG4gIHN3aXRjaCAoZWQuaGlzdG9yeSkge1xuICB8IChbXSwgXykgPT4gTm9uZVxuICB8IChbKGEsIHByZXYpLCAuLi5iZWZvcmVdLCBhZnRlcikgPT5cbiAgICBTb21lKHtcbiAgICAgIHN0YXRlOiBwcmV2LFxuICAgICAgaGlzdG9yeTogKGJlZm9yZSwgWyhhLCBlZC5zdGF0ZSksIC4uLmFmdGVyXSksXG4gICAgICByZWFkX29ubHk6IGVkLnJlYWRfb25seSxcbiAgICB9KVxuICB9O1xubGV0IHJlZG8gPSAoZWQ6IHQpID0+XG4gIHN3aXRjaCAoZWQuaGlzdG9yeSkge1xuICB8IChfLCBbXSkgPT4gTm9uZVxuICB8IChiZWZvcmUsIFsoYSwgbmV4dCksIC4uLmFmdGVyXSkgPT5cbiAgICBTb21lKHtcbiAgICAgIHN0YXRlOiBuZXh0LFxuICAgICAgaGlzdG9yeTogKFsoYSwgZWQuc3RhdGUpLCAuLi5iZWZvcmVdLCBhZnRlciksXG4gICAgICByZWFkX29ubHk6IGVkLnJlYWRfb25seSxcbiAgICB9KVxuICB9O1xuXG5sZXQgY2FuX3VuZG8gPSBlZCA9PiBPcHRpb24uaXNfc29tZSh1bmRvKGVkKSk7XG5sZXQgY2FuX3JlZG8gPSBlZCA9PiBPcHRpb24uaXNfc29tZShyZWRvKGVkKSk7XG5cbmxldCBzZXRfcmVhZF9vbmx5ID0gKGVkLCByZWFkX29ubHkpID0+IHsuLi5lZCwgcmVhZF9vbmx5fTtcblxubGV0IHRyYWlsaW5nX2hvbGVfY3R4ID0gKGVkOiB0LCBpbmZvX21hcDogU3RhdGljcy5NYXAudCkgPT4ge1xuICBsZXQgc2VnbWVudCA9IFppcHBlci51bnNlbGVjdF9hbmRfemlwKGVkLnN0YXRlLnppcHBlcik7XG4gIGxldCBjb252ZXhfZ3JvdXQgPSBTZWdtZW50LmNvbnZleF9ncm91dChzZWdtZW50KTtcbiAgLy8gcHJpbnRfZW5kbGluZShTdHJpbmcuY29uY2F0KFwiOyBcIiwgTGlzdC5tYXAoR3JvdXQuc2hvdywgY29udmV4X2dyb3V0KSkpO1xuICBsZXQgbGFzdCA9IFV0aWwuTGlzdFV0aWwubGFzdF9vcHQoY29udmV4X2dyb3V0KTtcbiAgc3dpdGNoIChsYXN0KSB7XG4gIHwgTm9uZSA9PiBOb25lXG4gIHwgU29tZShncm91dCkgPT5cbiAgICBsZXQgaWQgPSBncm91dC5pZDtcbiAgICBsZXQgaW5mbyA9IElkLk1hcC5maW5kX29wdChpZCwgaW5mb19tYXApO1xuICAgIHN3aXRjaCAoaW5mbykge1xuICAgIHwgU29tZShpbmZvKSA9PiBTb21lKEluZm8uY3R4X29mKGluZm8pKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbiAgfTtcbn07XG4iLCIvKlxuIEEgbmljZSBwcm9wZXJ0eSB3b3VsZCBiZSB0aGF0IGVsYWJvcmF0aW9uIGlzIGlkZW1wb3RlbnQuLi5cbiAqL1xuXG5vcGVuIFV0aWw7XG5cbmV4Y2VwdGlvbiBNaXNzaW5nVHlwZUluZm87XG5cbm1vZHVsZSBFbGFib3JhdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7ZDogREhFeHAudH07XG59O1xuXG5tb2R1bGUgRWxhYm9yYXRpb25SZXN1bHQgPSB7XG4gIFtAZGVyaXZpbmcgc2V4cF1cbiAgdHlwZSB0ID1cbiAgICB8IEVsYWJvcmF0ZXMoREhFeHAudCwgVHlwLnQsIERlbHRhLnQpXG4gICAgfCBEb2VzTm90RWxhYm9yYXRlO1xufTtcblxubGV0IGZyZXNoX2Nhc3QgPSAoZDogREhFeHAudCwgdDE6IFR5cC50LCB0MjogVHlwLnQpOiBESEV4cC50ID0+IHtcbiAgVHlwLmVxKHQxLCB0MilcbiAgICA/IGRcbiAgICA6IHtcbiAgICAgIGxldCBkJyA9XG4gICAgICAgIERIRXhwLkNhc3QoZCwgdDEsIFR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSlcbiAgICAgICAgfD4gREhFeHAuZnJlc2hcbiAgICAgICAgfD4gQ2FzdHMudHJhbnNpdGlvbl9tdWx0aXBsZTtcbiAgICAgIERIRXhwLkNhc3QoZCcsIFR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSwgdDIpXG4gICAgICB8PiBESEV4cC5mcmVzaFxuICAgICAgfD4gQ2FzdHMudHJhbnNpdGlvbl9tdWx0aXBsZTtcbiAgICB9O1xufTtcblxubGV0IGZyZXNoX3BhdF9jYXN0ID0gKHA6IERIUGF0LnQsIHQxOiBUeXAudCwgdDI6IFR5cC50KTogREhQYXQudCA9PiB7XG4gIFR5cC5lcSh0MSwgdDIpXG4gICAgPyBwXG4gICAgOiB7XG4gICAgICBsZXQgXyA9IHByaW50X2VuZGxpbmUoXCI9PT09PXZ2dnZ2PT09XCIpO1xuICAgICAgbGV0IF8gPSBwcmludF9lbmRsaW5lKFR5cC5zaG93KHQxKSk7XG4gICAgICBsZXQgXyA9IHByaW50X2VuZGxpbmUoVHlwLnNob3codDIpKTtcbiAgICAgIGxldCBfID0gcHJpbnRfZW5kbGluZShcIj09PT09Xl5eXl49PT1cIik7XG4gICAgICBDYXN0KFxuICAgICAgICBESFBhdC5mcmVzaChDYXN0KHAsIHQxLCBUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpKVxuICAgICAgICB8PiBDYXN0cy5wYXR0ZXJuX2ZpeHVwLFxuICAgICAgICBUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSksXG4gICAgICAgIHQyLFxuICAgICAgKVxuICAgICAgfD4gREhQYXQuZnJlc2hcbiAgICAgIHw+IENhc3RzLnBhdHRlcm5fZml4dXA7XG4gICAgfTtcbn07XG5cbmxldCBlbGFib3JhdGVkX3R5cGUgPSAobTogU3RhdGljcy5NYXAudCwgdWV4cDogVUV4cC50KTogKFR5cC50LCBDdHgudCkgPT4ge1xuICBsZXQgKG1vZGUsIHNlbGZfdHksIGN0eCkgPVxuICAgIHN3aXRjaCAoSWQuTWFwLmZpbmRfb3B0KEV4cC5yZXBfaWQodWV4cCksIG0pKSB7XG4gICAgfCBTb21lKEluZm8uSW5mb0V4cCh7bW9kZSwgdHksIGN0eCwgX30pKSA9PiAobW9kZSwgdHksIGN0eClcbiAgICB8IF8gPT4gcmFpc2UoTWlzc2luZ1R5cGVJbmZvKVxuICAgIH07XG4gIGxldCBlbGFiX3R5ID1cbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICB8IFN5biA9PiBzZWxmX3R5XG4gICAgfCBTeW5GdW4gPT5cbiAgICAgIGxldCAodHkxLCB0eTIpID0gVHlwLm1hdGNoZWRfYXJyb3coY3R4LCBzZWxmX3R5KTtcbiAgICAgIFR5cC5BcnJvdyh0eTEsIHR5MikgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgfCBTeW5UeXBGdW4gPT5cbiAgICAgIGxldCAodHBhdCwgdHkpID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgc2VsZl90eSk7XG4gICAgICBsZXQgdHBhdCA9IE9wdGlvbi52YWx1ZSh0cGF0LCB+ZGVmYXVsdD1UUGF0LmZyZXNoKEVtcHR5SG9sZSkpO1xuICAgICAgVHlwLkZvcmFsbCh0cGF0LCB0eSkgfD4gVHlwLm1rX2Zhc3Q7XG4gICAgLy8gV2UgbmVlZCB0byByZW1vdmUgdGhlIHN5bnN3aXRjaGVzIGZyb20gdGhpcyB0eXBlLlxuICAgIHwgQW5hKGFuYV90eSkgPT4gVHlwLm1hdGNoX3N5bnN3aXRjaChhbmFfdHksIHNlbGZfdHkpXG4gICAgfTtcbiAgKGVsYWJfdHkgfD4gVHlwLm5vcm1hbGl6ZShjdHgpLCBjdHgpO1xufTtcblxubGV0IGVsYWJvcmF0ZWRfcGF0X3R5cGUgPSAobTogU3RhdGljcy5NYXAudCwgdXBhdDogVVBhdC50KTogKFR5cC50LCBDdHgudCkgPT4ge1xuICBsZXQgKG1vZGUsIHNlbGZfdHksIGN0eCwgcHJldl9zeW5zd2l0Y2gpID1cbiAgICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChVUGF0LnJlcF9pZCh1cGF0KSwgbSkpIHtcbiAgICB8IFNvbWUoSW5mby5JbmZvUGF0KHttb2RlLCB0eSwgY3R4LCBwcmV2X3N5bnN3aXRjaCwgX30pKSA9PiAoXG4gICAgICAgIG1vZGUsXG4gICAgICAgIHR5LFxuICAgICAgICBjdHgsXG4gICAgICAgIHByZXZfc3luc3dpdGNoLFxuICAgICAgKVxuICAgIHwgXyA9PiByYWlzZShNaXNzaW5nVHlwZUluZm8pXG4gICAgfTtcbiAgbGV0IGVsYWJfdHkgPVxuICAgIHN3aXRjaCAobW9kZSkge1xuICAgIHwgU3luID0+IHNlbGZfdHlcbiAgICB8IFN5bkZ1biA9PlxuICAgICAgbGV0ICh0eTEsIHR5MikgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHNlbGZfdHkpO1xuICAgICAgVHlwLkFycm93KHR5MSwgdHkyKSB8PiBUeXAubWtfZmFzdDtcbiAgICB8IFN5blR5cEZ1biA9PlxuICAgICAgbGV0ICh0cGF0LCB0eSkgPSBUeXAubWF0Y2hlZF9mb3JhbGwoY3R4LCBzZWxmX3R5KTtcbiAgICAgIGxldCB0cGF0ID0gT3B0aW9uLnZhbHVlKHRwYXQsIH5kZWZhdWx0PVRQYXQuZnJlc2goRW1wdHlIb2xlKSk7XG4gICAgICBUeXAuRm9yYWxsKHRwYXQsIHR5KSB8PiBUeXAubWtfZmFzdDtcbiAgICB8IEFuYShhbmFfdHkpID0+XG4gICAgICBzd2l0Y2ggKHByZXZfc3luc3dpdGNoKSB7XG4gICAgICB8IE5vbmUgPT4gYW5hX3R5XG4gICAgICB8IFNvbWUoc3luX3R5KSA9PiBUeXAubWF0Y2hfc3luc3dpdGNoKHN5bl90eSwgYW5hX3R5KVxuICAgICAgfVxuICAgIH07XG4gIChlbGFiX3R5IHw+IFR5cC5ub3JtYWxpemUoY3R4KSwgY3R4KTtcbn07XG5cbmxldCByZWMgZWxhYm9yYXRlX3BhdHRlcm4gPVxuICAgICAgICAobTogU3RhdGljcy5NYXAudCwgdXBhdDogVVBhdC50KTogKERIUGF0LnQsIFR5cC50KSA9PiB7XG4gIGxldCAoZWxhYm9yYXRlZF90eXBlLCBjdHgpID0gZWxhYm9yYXRlZF9wYXRfdHlwZShtLCB1cGF0KTtcbiAgbGV0IGNhc3RfZnJvbSA9ICh0eSwgZXhwKSA9PiBmcmVzaF9wYXRfY2FzdChleHAsIHR5LCBlbGFib3JhdGVkX3R5cGUpO1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSBVUGF0LnVud3JhcCh1cGF0KTtcbiAgbGV0IGRwYXQgPVxuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgSW50KF8pID0+IHVwYXQgfD4gY2FzdF9mcm9tKEludCB8PiBUeXAubWtfZmFzdClcbiAgICB8IEJvb2woXykgPT4gdXBhdCB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdClcbiAgICB8IEZsb2F0KF8pID0+IHVwYXQgfD4gY2FzdF9mcm9tKEZsb2F0IHw+IFR5cC5ta19mYXN0KVxuICAgIHwgU3RyaW5nKF8pID0+IHVwYXQgfD4gY2FzdF9mcm9tKFN0cmluZyB8PiBUeXAubWtfZmFzdClcbiAgICB8IExpc3RMaXQocHMpID0+XG4gICAgICBsZXQgKHBzLCB0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlX3BhdHRlcm4obSksIHBzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIGxldCBpbm5lcl90eXBlID1cbiAgICAgICAgdHlzXG4gICAgICAgIHw+IFR5cC5qb2luX2FsbCh+ZW1wdHk9VW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsIGN0eClcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFVua25vd24oSW50ZXJuYWwpKSk7XG4gICAgICBwc1xuICAgICAgfD4gTGlzdC5tYXAyKChwLCB0KSA9PiBmcmVzaF9wYXRfY2FzdChwLCB0LCBpbm5lcl90eXBlKSwgXywgdHlzKVxuICAgICAgfD4gKFxuICAgICAgICBwcycgPT5cbiAgICAgICAgICBESFBhdC5MaXN0TGl0KHBzJylcbiAgICAgICAgICB8PiByZXdyYXBcbiAgICAgICAgICB8PiBjYXN0X2Zyb20oTGlzdChpbm5lcl90eXBlKSB8PiBUeXAubWtfZmFzdClcbiAgICAgICk7XG4gICAgfCBDb25zKHAxLCBwMikgPT5cbiAgICAgIGxldCAocDEnLCB0eTEpID0gZWxhYm9yYXRlX3BhdHRlcm4obSwgcDEpO1xuICAgICAgbGV0IChwMicsIHR5MikgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwMik7XG4gICAgICBsZXQgdHkyX2lubmVyID0gVHlwLm1hdGNoZWRfbGlzdChjdHgsIHR5Mik7XG4gICAgICBsZXQgdHlfaW5uZXIgPVxuICAgICAgICBUeXAuam9pbih+Zml4PWZhbHNlLCBjdHgsIHR5MSwgdHkyX2lubmVyKVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBwMScnID0gZnJlc2hfcGF0X2Nhc3QocDEnLCB0eTEsIHR5X2lubmVyKTtcbiAgICAgIGxldCBwMicnID0gZnJlc2hfcGF0X2Nhc3QocDInLCB0eTIsIExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICAgIERIUGF0LkNvbnMocDEnJywgcDInJylcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFR1cGxlKHBzKSA9PlxuICAgICAgbGV0IChwcycsIHR5cykgPSBMaXN0Lm1hcChlbGFib3JhdGVfcGF0dGVybihtKSwgcHMpIHw+IExpc3RVdGlsLnVuemlwO1xuICAgICAgREhQYXQuVHVwbGUocHMnKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKFR5cC5Qcm9kKHR5cykgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQXAocDEsIHAyKSA9PlxuICAgICAgbGV0IChwMScsIHR5MSkgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwMSk7XG4gICAgICBsZXQgKHAyJywgdHkyKSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHAyKTtcbiAgICAgIGxldCAodHkxbCwgdHkxcikgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHR5MSk7XG4gICAgICBsZXQgcDEnJyA9IGZyZXNoX3BhdF9jYXN0KHAxJywgdHkxLCBBcnJvdyh0eTFsLCB0eTFyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBsZXQgcDInJyA9IGZyZXNoX3BhdF9jYXN0KHAyJywgdHkyLCB0eTFsKTtcbiAgICAgIERIUGF0LkFwKHAxJycsIHAyJycpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkxcik7XG4gICAgfCBJbnZhbGlkKF8pXG4gICAgfCBFbXB0eUhvbGVcbiAgICB8IE11bHRpSG9sZShfKVxuICAgIHwgV2lsZCA9PiB1cGF0IHw+IGNhc3RfZnJvbShUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpXG4gICAgfCBWYXIodikgPT5cbiAgICAgIHVwYXRcbiAgICAgIHw+IGNhc3RfZnJvbShcbiAgICAgICAgICAgQ3R4Lmxvb2t1cF92YXIoY3R4LCB2KVxuICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBDdHgudmFyX2VudHJ5KSA9PiB4LnR5cCB8PiBUeXAubm9ybWFsaXplKGN0eCkpXG4gICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpLFxuICAgICAgICAgKVxuICAgIC8vIFR5cGUgYW5ub3RhdGlvbnMgc2hvdWxkIGFscmVhZHkgYXBwZWFyXG4gICAgfCBQYXJlbnMocClcbiAgICB8IENhc3QocCwgXywgXykgPT5cbiAgICAgIGxldCAocCcsIHR5KSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHApO1xuICAgICAgcCcgfD4gY2FzdF9mcm9tKHR5KTtcbiAgICB8IENvbnN0cnVjdG9yKGMpID0+XG4gICAgICB1cGF0XG4gICAgICB8PiBjYXN0X2Zyb20oXG4gICAgICAgICAgIEN0eC5sb29rdXBfY3RyKGN0eCwgYylcbiAgICAgICAgICAgfD4gT3B0aW9uLm1hcCgoeDogQ3R4LnZhcl9lbnRyeSkgPT4geC50eXAgfD4gVHlwLm5vcm1hbGl6ZShjdHgpKVxuICAgICAgICAgICB8PiBPcHRpb24udmFsdWUoXG4gICAgICAgICAgICAgICAgfmRlZmF1bHQ9XG4gICAgICAgICAgICAgICAgICBUeXAubWtfZmFzdChcbiAgICAgICAgICAgICAgICAgICAgVHlwLlN1bShbQmFkRW50cnkoVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKV0pLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgIClcbiAgICB9O1xuICAoZHBhdCwgZWxhYm9yYXRlZF90eXBlKTtcbn07XG5cbi8qIFRoZSBwcmltYXJ5IGdvYWwgb2YgZWxhYm9yYXRpb24gaXMgdG8gY29udmVydCBmcm9tIGEgdHlwZSBzeXN0ZW1cbiAgIHdoZXJlIHdlIGhhdmUgY29uc2lzdGVuY3ksIHRvIGEgdHlwZSBzeXN0ZW0gd2hlcmUgdHlwZXMgYXJlIGVpdGhlclxuICAgZXF1YWwgb3IgdGhleSdyZSBub3QuIEFueXRoaW5nIHRoYXQgd2FzIGp1c3QgY29uc2lzdGVudCBuZWVkcyB0b1xuICAgYmVjb21lIGEgY2FzdC4gW1RoZSBvbmUgb3RoZXIgdGhpbmcgZWxhYm9yYXRpb24gZG9lcyBpcyBtYWtlXG4gICByZWN1cnNpdmUgbGV0IGJpbmRpbmdzIGV4cGxpY2l0Ll1cblxuICAgQXQgdGhlIHRvcCBvZiB0aGlzIGZ1bmN0aW9uIHdlIHdvcmsgb3V0IHRoZSBcImVsYWJvcmF0ZWQgdHlwZVwiIG9mXG4gICBvZiB0aGUgZXhwcmVzc2lvbi4gV2UgYWxzbyByZXR1cm4gdGhpcyBlbGFib3JhdGVkIHR5cGUgc28gd2UgY2FuXG4gICB1c2UgaXQgaW4gdGhlIHJlY3Vyc2l2ZSBjYWxsLiBXaGVuIGVsYWJvcmF0ZSByZXR1cm5zLCB5b3UgY2FuIHRydXN0XG4gICB0aGF0IHRoZSByZXR1cm5lZCBleHByZXNzaW9uIHdpbGwgaGF2ZSB0aGUgcmV0dXJuZWQgdHlwZS4gVGhlcmUgaXNcbiAgIGhvd2V2ZXIsIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSByZXR1cm5lZCB0eXBlIGlzIGV2ZW4gY29uc2lzdGVudCB3aXRoXG4gICB0aGUgXCJlbGFib3JhdGVkIHR5cGVcIiBhdCB0aGUgdG9wLCBzbyB5b3Ugc2hvdWxkIGZyZXNoX2Nhc3QgRVZFUllXSEVSRVxuICAganVzdCBpbiBjYXNlLlxuXG4gICBbTWF0dF0gQSBsb3Qgb2YgdGhlc2UgZnJlc2hfY2FzdCBjYWxscyBhcmUgcmVkdW5kYW50LCBob3dldmVyIGlmIHlvdVxuICAgd2FudCB0byByZW1vdmUgb25lLCBJJ2QgYXNrIHlvdSBpbnN0ZWFkIGNvbW1lbnQgaXQgb3V0IGFuZCBsZWF2ZVxuICAgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IGl0J3MgcmVkdW5kYW50LiAgKi9cbmxldCByZWMgZWxhYm9yYXRlID0gKG06IFN0YXRpY3MuTWFwLnQsIHVleHA6IFVFeHAudCk6IChESEV4cC50LCBUeXAudCkgPT4ge1xuICBsZXQgKGVsYWJvcmF0ZWRfdHlwZSwgY3R4KSA9IGVsYWJvcmF0ZWRfdHlwZShtLCB1ZXhwKTtcbiAgbGV0IGNhc3RfZnJvbSA9ICh0eSwgZXhwKSA9PiBmcmVzaF9jYXN0KGV4cCwgdHksIGVsYWJvcmF0ZWRfdHlwZSk7XG4gIGxldCAodGVybSwgcmV3cmFwKSA9IFVFeHAudW53cmFwKHVleHApO1xuICBsZXQgZGhleHAgPVxuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgSW52YWxpZChfKVxuICAgIHwgRW1wdHlIb2xlID0+IHVleHAgfD4gY2FzdF9mcm9tKFR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpXG4gICAgfCBNdWx0aUhvbGUoc3R1ZmYpID0+XG4gICAgICBBbnkubWFwX3Rlcm0oXG4gICAgICAgIH5mX2V4cD0oXywgZXhwKSA9PiB7ZWxhYm9yYXRlKG0sIGV4cCkgfD4gZnN0fSxcbiAgICAgICAgfmZfcGF0PShfLCBwYXQpID0+IHtlbGFib3JhdGVfcGF0dGVybihtLCBwYXQpIHw+IGZzdH0sXG4gICAgICAgIF8sXG4gICAgICApXG4gICAgICB8PiBMaXN0Lm1hcChfLCBzdHVmZilcbiAgICAgIHw+IChcbiAgICAgICAgc3R1ZmYgPT5cbiAgICAgICAgICBESEV4cC5NdWx0aUhvbGUoc3R1ZmYpXG4gICAgICAgICAgfD4gcmV3cmFwXG4gICAgICAgICAgfD4gY2FzdF9mcm9tKFR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpXG4gICAgICApXG4gICAgfCBEeW5hbWljRXJyb3JIb2xlKGUsIGVycikgPT5cbiAgICAgIGxldCAoZScsIF8pID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgRHluYW1pY0Vycm9ySG9sZShlJywgZXJyKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oVHlwLm1rX2Zhc3QoVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICB8IENhc3QoZSwgXywgXykgLy8gV2UgcmVtb3ZlIHRoZXNlIGNhc3RzIGJlY2F1c2UgdGhleSBzaG91bGQgYmUgcmUtaW5zZXJ0ZWQgaW4gdGhlIHJlY3Vyc2l2ZSBjYWxsXG4gICAgfCBGYWlsZWRDYXN0KGUsIF8sIF8pXG4gICAgfCBQYXJlbnMoZSkgPT5cbiAgICAgIGxldCAoZScsIHR5KSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIGUnIHw+IGNhc3RfZnJvbSh0eSk7XG4gICAgfCBEZWZlcnJhbChfKSA9PiB1ZXhwXG4gICAgfCBJbnQoXykgPT4gdWV4cCB8PiBjYXN0X2Zyb20oSW50IHw+IFR5cC5ta19mYXN0KVxuICAgIHwgQm9vbChfKSA9PiB1ZXhwIHw+IGNhc3RfZnJvbShCb29sIHw+IFR5cC5ta19mYXN0KVxuICAgIHwgRmxvYXQoXykgPT4gdWV4cCB8PiBjYXN0X2Zyb20oRmxvYXQgfD4gVHlwLm1rX2Zhc3QpXG4gICAgfCBTdHJpbmcoXykgPT4gdWV4cCB8PiBjYXN0X2Zyb20oU3RyaW5nIHw+IFR5cC5ta19mYXN0KVxuICAgIHwgTGlzdExpdChlcykgPT5cbiAgICAgIGxldCAoZHMsIHR5cykgPSBMaXN0Lm1hcChlbGFib3JhdGUobSksIGVzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIGxldCBpbm5lcl90eXBlID1cbiAgICAgICAgVHlwLmpvaW5fYWxsKH5lbXB0eT1UeXAuVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsIGN0eCwgdHlzKVxuICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVHlwLlVua25vd24oSW50ZXJuYWwpKSk7XG4gICAgICBsZXQgZHMnID0gTGlzdC5tYXAyKChkLCB0KSA9PiBmcmVzaF9jYXN0KGQsIHQsIGlubmVyX3R5cGUpLCBkcywgdHlzKTtcbiAgICAgIEV4cC5MaXN0TGl0KGRzJylcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKExpc3QoaW5uZXJfdHlwZSkgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQ29uc3RydWN0b3IoYykgPT5cbiAgICAgIHVleHBcbiAgICAgIHw+IGNhc3RfZnJvbShcbiAgICAgICAgICAgQ3R4Lmxvb2t1cF9jdHIoY3R4LCBjKVxuICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBDdHgudmFyX2VudHJ5KSA9PiB4LnR5cCB8PiBUeXAubm9ybWFsaXplKGN0eCkpXG4gICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZShcbiAgICAgICAgICAgICAgICB+ZGVmYXVsdD1cbiAgICAgICAgICAgICAgICAgIFR5cC5ta19mYXN0KFxuICAgICAgICAgICAgICAgICAgICBUeXAuU3VtKFtCYWRFbnRyeShUeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpXSksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgKVxuICAgIHwgRnVuKHAsIGUsIGVudiwgbikgPT5cbiAgICAgIGxldCAocCcsIHR5cCkgPSBlbGFib3JhdGVfcGF0dGVybihtLCBwKTtcbiAgICAgIGxldCAoZScsIHR5ZSkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBFeHAuRnVuKHAnLCBlJywgZW52LCBuKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQXJyb3codHlwLCB0eWUpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFR5cEZ1bih0cGF0LCBlLCBuYW1lKSA9PlxuICAgICAgbGV0IChlJywgdHllKSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIEV4cC5UeXBGdW4odHBhdCwgZScsIG5hbWUpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShUeXAuRm9yYWxsKHRwYXQsIHR5ZSkgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgVHVwbGUoZXMpID0+XG4gICAgICBsZXQgKGRzLCB0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlKG0pLCBlcykgfD4gTGlzdFV0aWwudW56aXA7XG4gICAgICBFeHAuVHVwbGUoZHMpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20oUHJvZCh0eXMpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFZhcih2KSA9PlxuICAgICAgdWV4cFxuICAgICAgfD4gY2FzdF9mcm9tKFxuICAgICAgICAgICBDdHgubG9va3VwX3ZhcihjdHgsIHYpXG4gICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKHg6IEN0eC52YXJfZW50cnkpID0+IHgudHlwIHw+IFR5cC5ub3JtYWxpemUoY3R4KSlcbiAgICAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpLFxuICAgICAgICAgKVxuICAgIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICAgIGxldCBhZGRfbmFtZTogKG9wdGlvbihzdHJpbmcpLCBESEV4cC50KSA9PiBESEV4cC50ID0gKFxuICAgICAgICAobmFtZSwgZXhwKSA9PiB7XG4gICAgICAgICAgbGV0ICh0ZXJtLCByZXdyYXApID0gREhFeHAudW53cmFwKGV4cCk7XG4gICAgICAgICAgc3dpdGNoICh0ZXJtKSB7XG4gICAgICAgICAgfCBGdW4ocCwgZSwgY3R4LCBfKSA9PiBGdW4ocCwgZSwgY3R4LCBuYW1lKSB8PiByZXdyYXBcbiAgICAgICAgICB8IF8gPT4gZXhwXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGxldCAocCwgdHkxKSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHApO1xuICAgICAgaWYgKCFTdGF0aWNzLmlzX3JlY3Vyc2l2ZShjdHgsIHAsIGRlZiwgdHkxKSkge1xuICAgICAgICBsZXQgZGVmID0gYWRkX25hbWUoUGF0LmdldF92YXIocCksIGRlZik7XG4gICAgICAgIGxldCAoZGVmLCB0eTIpID0gZWxhYm9yYXRlKG0sIGRlZik7XG4gICAgICAgIGxldCAoYm9keSwgdHkpID0gZWxhYm9yYXRlKG0sIGJvZHkpO1xuICAgICAgICBFeHAuTGV0KHAsIGZyZXNoX2Nhc3QoZGVmLCB0eTIsIHR5MSksIGJvZHkpXG4gICAgICAgIHw+IHJld3JhcFxuICAgICAgICB8PiBjYXN0X2Zyb20odHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVE9ETzogQWRkIG5hbWVzIHRvIG11dHVhbGx5IHJlY3Vyc2l2ZSBmdW5jdGlvbnNcbiAgICAgICAgLy8gVE9ETzogRG9uJ3QgYWRkIGZpeHBvaW50IGlmIHRoZXJlIGFscmVhZHkgaXMgb25lXG4gICAgICAgIGxldCBkZWYgPSBhZGRfbmFtZShPcHRpb24ubWFwKHMgPT4gcyArKyBcIitcIiwgUGF0LmdldF92YXIocCkpLCBkZWYpO1xuICAgICAgICBsZXQgKGRlZiwgdHkyKSA9IGVsYWJvcmF0ZShtLCBkZWYpO1xuICAgICAgICBsZXQgKGJvZHksIHR5KSA9IGVsYWJvcmF0ZShtLCBib2R5KTtcbiAgICAgICAgbGV0IGZpeGYgPSBGaXhGKHAsIGZyZXNoX2Nhc3QoZGVmLCB0eTIsIHR5MSksIE5vbmUpIHw+IERIRXhwLmZyZXNoO1xuICAgICAgICBFeHAuTGV0KHAsIGZpeGYsIGJvZHkpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkpO1xuICAgICAgfTtcbiAgICB8IEZpeEYocCwgZSwgZW52KSA9PlxuICAgICAgbGV0IChwJywgdHlwKSA9IGVsYWJvcmF0ZV9wYXR0ZXJuKG0sIHApO1xuICAgICAgbGV0IChlJywgdHllKSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIEV4cC5GaXhGKHAnLCBmcmVzaF9jYXN0KGUnLCB0eWUsIHR5cCksIGVudilcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKHR5cCk7XG4gICAgfCBUeUFsaWFzKF8sIF8sIGUpID0+XG4gICAgICBsZXQgKGUnLCB0eWUpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgZScgfD4gY2FzdF9mcm9tKHR5ZSk7XG4gICAgfCBBcChkaXIsIGYsIGEpID0+XG4gICAgICBsZXQgKGYnLCB0eWYpID0gZWxhYm9yYXRlKG0sIGYpO1xuICAgICAgbGV0IChhJywgdHlhKSA9IGVsYWJvcmF0ZShtLCBhKTtcbiAgICAgIGxldCAodHlmMSwgdHlmMikgPSBUeXAubWF0Y2hlZF9hcnJvdyhjdHgsIHR5Zik7XG4gICAgICBsZXQgZicnID0gZnJlc2hfY2FzdChmJywgdHlmLCBBcnJvdyh0eWYxLCB0eWYyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBsZXQgYScnID0gZnJlc2hfY2FzdChhJywgdHlhLCB0eWYxKTtcbiAgICAgIEV4cC5BcChkaXIsIGYnJywgYScnKSB8PiByZXdyYXAgfD4gY2FzdF9mcm9tKHR5ZjIpO1xuICAgIHwgRGVmZXJyZWRBcChmLCBhcmdzKSA9PlxuICAgICAgbGV0IChmJywgdHlmKSA9IGVsYWJvcmF0ZShtLCBmKTtcbiAgICAgIGxldCAoYXJncycsIHR5cykgPSBMaXN0Lm1hcChlbGFib3JhdGUobSksIGFyZ3MpIHw+IExpc3RVdGlsLnVuemlwO1xuICAgICAgbGV0ICh0eWYxLCB0eWYyKSA9IFR5cC5tYXRjaGVkX2Fycm93KGN0eCwgdHlmKTtcbiAgICAgIGxldCB0eV9mYXJncyA9IFR5cC5tYXRjaGVkX3Byb2QoY3R4LCBMaXN0Lmxlbmd0aChhcmdzKSwgdHlmMSk7XG4gICAgICBsZXQgZicnID1cbiAgICAgICAgZnJlc2hfY2FzdChcbiAgICAgICAgICBmJyxcbiAgICAgICAgICB0eWYsXG4gICAgICAgICAgQXJyb3coUHJvZCh0eV9mYXJncykgfD4gVHlwLm1rX2Zhc3QsIHR5ZjIpIHw+IFR5cC5ta19mYXN0LFxuICAgICAgICApO1xuICAgICAgbGV0IGFyZ3MnJyA9IExpc3RVdGlsLm1hcDMoZnJlc2hfY2FzdCwgYXJncycsIHR5cywgdHlfZmFyZ3MpO1xuICAgICAgbGV0IHJlbWFpbmluZ19hcmdzID1cbiAgICAgICAgTGlzdC5maWx0ZXIoXG4gICAgICAgICAgKChhcmcsIF8pKSA9PiBFeHAuaXNfZGVmZXJyYWwoYXJnKSxcbiAgICAgICAgICBMaXN0LmNvbWJpbmUoYXJncywgdHlfZmFyZ3MpLFxuICAgICAgICApO1xuICAgICAgbGV0IHJlbWFpbmluZ19hcmdfdHkgPVxuICAgICAgICBQcm9kKExpc3QubWFwKHNuZCwgcmVtYWluaW5nX2FyZ3MpKSB8PiBUeXAubWtfZmFzdDtcbiAgICAgIERlZmVycmVkQXAoZicnLCBhcmdzJycpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShBcnJvdyhyZW1haW5pbmdfYXJnX3R5LCB0eWYyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBUeXBBcChlLCB1dCkgPT5cbiAgICAgIGxldCAoZScsIHR5ZSkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBsZXQgKHRwYXQsIHR5ZScpID0gVHlwLm1hdGNoZWRfZm9yYWxsKGN0eCwgdHllKTtcbiAgICAgIGxldCB1dCcgPSBUeXAubm9ybWFsaXplKGN0eCwgdXQpO1xuICAgICAgbGV0IHR5ZScnID1cbiAgICAgICAgVHlwLnN1YnN0KFxuICAgICAgICAgIHV0JyxcbiAgICAgICAgICB0cGF0IHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UUGF0LmZyZXNoKEVtcHR5SG9sZSkpLFxuICAgICAgICAgIHR5ZScsXG4gICAgICAgICk7XG4gICAgICBUeXBBcChlJywgdXQpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHllJycpO1xuICAgIHwgSWYoYywgdCwgZikgPT5cbiAgICAgIGxldCAoYycsIHR5YykgPSBlbGFib3JhdGUobSwgYyk7XG4gICAgICBsZXQgKHQnLCB0eXQpID0gZWxhYm9yYXRlKG0sIHQpO1xuICAgICAgbGV0IChmJywgdHlmKSA9IGVsYWJvcmF0ZShtLCBmKTtcbiAgICAgIGxldCB0eSA9XG4gICAgICAgIFR5cC5qb2luKH5maXg9ZmFsc2UsIGN0eCwgdHl0LCB0eWYpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBjJycgPSBmcmVzaF9jYXN0KGMnLCB0eWMsIEJvb2wgfD4gVHlwLm1rX2Zhc3QpO1xuICAgICAgbGV0IHQnJyA9IGZyZXNoX2Nhc3QodCcsIHR5dCwgdHkpO1xuICAgICAgbGV0IGYnJyA9IGZyZXNoX2Nhc3QoZicsIHR5ZiwgdHkpO1xuICAgICAgRXhwLklmKGMnJywgdCcnLCBmJycpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkpO1xuICAgIHwgU2VxKGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCBfKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdHkyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBTZXEoZTEnLCBlMicpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odHkyKTtcbiAgICB8IFRlc3QoZSkgPT5cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgVGVzdChmcmVzaF9jYXN0KGUnLCB0LCBCb29sIHw+IFR5cC5ta19mYXN0KSlcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKFByb2QoW10pIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEZpbHRlcihraW5kLCBlKSA9PlxuICAgICAgbGV0IChlJywgdCkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBsZXQga2luZCcgPVxuICAgICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgfCBSZXNpZHVlKF8pID0+IGtpbmRcbiAgICAgICAgfCBGaWx0ZXIoe2FjdCwgcGF0fSkgPT4gRmlsdGVyKHthY3QsIHBhdDogZWxhYm9yYXRlKG0sIHBhdCkgfD4gZnN0fSlcbiAgICAgICAgfTtcbiAgICAgIEZpbHRlcihraW5kJywgZScpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odCk7XG4gICAgfCBDbG9zdXJlKGVudiwgZSkgPT5cbiAgICAgIC8vIFNob3VsZCB3ZSBiZSBlbGFib3JhdGluZyB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50P1xuICAgICAgbGV0IChlJywgdCkgPSBlbGFib3JhdGUobSwgZSk7XG4gICAgICBDbG9zdXJlKGVudiwgZScpIHw+IHJld3JhcCB8PiBjYXN0X2Zyb20odCk7XG4gICAgfCBDb25zKGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0eTEpID0gZWxhYm9yYXRlKG0sIGUxKTtcbiAgICAgIGxldCAoZTInLCB0eTIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIGxldCB0eTJfaW5uZXIgPSBUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkyKTtcbiAgICAgIGxldCB0eV9pbm5lciA9XG4gICAgICAgIFR5cC5qb2luKH5maXg9ZmFsc2UsIGN0eCwgdHkxLCB0eTJfaW5uZXIpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpO1xuICAgICAgbGV0IGUxJycgPSBmcmVzaF9jYXN0KGUxJywgdHkxLCB0eV9pbm5lcik7XG4gICAgICBsZXQgZTInJyA9IGZyZXNoX2Nhc3QoZTInLCB0eTIsIExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICAgIENvbnMoZTEnJywgZTInJykgfD4gcmV3cmFwIHw+IGNhc3RfZnJvbShMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0eTEpID0gZWxhYm9yYXRlKG0sIGUxKTtcbiAgICAgIGxldCAoZTInLCB0eTIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIGxldCB0eV9pbm5lcjEgPSBUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkxKTtcbiAgICAgIGxldCB0eV9pbm5lcjIgPSBUeXAubWF0Y2hlZF9saXN0KGN0eCwgdHkyKTtcbiAgICAgIGxldCB0eV9pbm5lciA9XG4gICAgICAgIFR5cC5qb2luKH5maXg9ZmFsc2UsIGN0eCwgdHlfaW5uZXIxLCB0eV9pbm5lcjIpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChVbmtub3duKEludGVybmFsKSkpO1xuICAgICAgbGV0IGUxJycgPSBmcmVzaF9jYXN0KGUxJywgdHkxLCBMaXN0KHR5X2lubmVyKSB8PiBUeXAubWtfZmFzdCk7XG4gICAgICBsZXQgZTInJyA9IGZyZXNoX2Nhc3QoZTInLCB0eTIsIExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICAgIExpc3RDb25jYXQoZTEnJywgZTInJylcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKExpc3QodHlfaW5uZXIpIHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IFVuT3AoTWV0YShVbnF1b3RlKSwgZSkgPT5cbiAgICAgIHN3aXRjaCAoZS50ZXJtKSB7XG4gICAgICB8IFZhcihcImVcIikgPT4gQ29uc3RydWN0b3IoXCIkZVwiKSB8PiByZXdyYXBcbiAgICAgIHwgVmFyKFwidlwiKSA9PiBDb25zdHJ1Y3RvcihcIiR2XCIpIHw+IHJld3JhcFxuICAgICAgfCBfID0+XG4gICAgICAgIERIRXhwLkVtcHR5SG9sZVxuICAgICAgICB8PiByZXdyYXBcbiAgICAgICAgfD4gY2FzdF9mcm9tKFR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpXG4gICAgICB9XG4gICAgfCBVbk9wKEludChNaW51cyksIGUpID0+XG4gICAgICBsZXQgKGUnLCB0KSA9IGVsYWJvcmF0ZShtLCBlKTtcbiAgICAgIFVuT3AoSW50KE1pbnVzKSwgZnJlc2hfY2FzdChlJywgdCwgSW50IHw+IFR5cC5ta19mYXN0KSlcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEludCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBVbk9wKEJvb2woTm90KSwgZSkgPT5cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgVW5PcChCb29sKE5vdCksIGZyZXNoX2Nhc3QoZScsIHQsIEJvb2wgfD4gVHlwLm1rX2Zhc3QpKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChJbnQoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBQb3dlciB8IERpdmlkZSkgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgSW50IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBJbnQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oSW50IHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEJpbk9wKFxuICAgICAgICBJbnQoXG4gICAgICAgICAgTGVzc1RoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbiB8IEdyZWF0ZXJUaGFuT3JFcXVhbCB8XG4gICAgICAgICAgRXF1YWxzIHxcbiAgICAgICAgICBOb3RFcXVhbHMsXG4gICAgICAgICkgYXMgb3AsXG4gICAgICAgIGUxLFxuICAgICAgICBlMixcbiAgICAgICkgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgSW50IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBJbnQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChCb29sKEFuZCB8IE9yKSBhcyBvcCwgZTEsIGUyKSA9PlxuICAgICAgbGV0IChlMScsIHQxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdDIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIEJpbk9wKFxuICAgICAgICBvcCxcbiAgICAgICAgZnJlc2hfY2FzdChlMScsIHQxLCBCb29sIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBCb29sIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIClcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEJvb2wgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQmluT3AoRmxvYXQoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBEaXZpZGUgfCBQb3dlcikgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgRmxvYXQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgICBmcmVzaF9jYXN0KGUyJywgdDIsIEZsb2F0IHw+IFR5cC5ta19mYXN0KSxcbiAgICAgIClcbiAgICAgIHw+IHJld3JhcFxuICAgICAgfD4gY2FzdF9mcm9tKEZsb2F0IHw+IFR5cC5ta19mYXN0KTtcbiAgICB8IEJpbk9wKFxuICAgICAgICBGbG9hdChcbiAgICAgICAgICBMZXNzVGhhbiB8IExlc3NUaGFuT3JFcXVhbCB8IEdyZWF0ZXJUaGFuIHwgR3JlYXRlclRoYW5PckVxdWFsIHxcbiAgICAgICAgICBFcXVhbHMgfFxuICAgICAgICAgIE5vdEVxdWFscyxcbiAgICAgICAgKSBhcyBvcCxcbiAgICAgICAgZTEsXG4gICAgICAgIGUyLFxuICAgICAgKSA9PlxuICAgICAgbGV0IChlMScsIHQxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdDIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIEJpbk9wKFxuICAgICAgICBvcCxcbiAgICAgICAgZnJlc2hfY2FzdChlMScsIHQxLCBGbG9hdCB8PiBUeXAubWtfZmFzdCksXG4gICAgICAgIGZyZXNoX2Nhc3QoZTInLCB0MiwgRmxvYXQgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCaW5PcChTdHJpbmcoQ29uY2F0KSBhcyBvcCwgZTEsIGUyKSA9PlxuICAgICAgbGV0IChlMScsIHQxKSA9IGVsYWJvcmF0ZShtLCBlMSk7XG4gICAgICBsZXQgKGUyJywgdDIpID0gZWxhYm9yYXRlKG0sIGUyKTtcbiAgICAgIEJpbk9wKFxuICAgICAgICBvcCxcbiAgICAgICAgZnJlc2hfY2FzdChlMScsIHQxLCBTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgICBmcmVzaF9jYXN0KGUyJywgdDIsIFN0cmluZyB8PiBUeXAubWtfZmFzdCksXG4gICAgICApXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpO1xuICAgIHwgQmluT3AoU3RyaW5nKEVxdWFscykgYXMgb3AsIGUxLCBlMikgPT5cbiAgICAgIGxldCAoZTEnLCB0MSkgPSBlbGFib3JhdGUobSwgZTEpO1xuICAgICAgbGV0IChlMicsIHQyKSA9IGVsYWJvcmF0ZShtLCBlMik7XG4gICAgICBCaW5PcChcbiAgICAgICAgb3AsXG4gICAgICAgIGZyZXNoX2Nhc3QoZTEnLCB0MSwgU3RyaW5nIHw+IFR5cC5ta19mYXN0KSxcbiAgICAgICAgZnJlc2hfY2FzdChlMicsIHQyLCBTdHJpbmcgfD4gVHlwLm1rX2Zhc3QpLFxuICAgICAgKVxuICAgICAgfD4gcmV3cmFwXG4gICAgICB8PiBjYXN0X2Zyb20oQm9vbCB8PiBUeXAubWtfZmFzdCk7XG4gICAgfCBCdWlsdGluRnVuKGZuKSA9PlxuICAgICAgdWV4cFxuICAgICAgfD4gY2FzdF9mcm9tKFxuICAgICAgICAgICBDdHgubG9va3VwX3ZhcihCdWlsdGlucy5jdHhfaW5pdCwgZm4pXG4gICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKHg6IEN0eC52YXJfZW50cnkpID0+IHgudHlwKVxuICAgICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9VHlwLm1rX2Zhc3QoVHlwLlVua25vd24oSW50ZXJuYWwpKSksXG4gICAgICAgICApXG4gICAgfCBNYXRjaChlLCBjYXNlcykgPT5cbiAgICAgIGxldCAoZScsIHQpID0gZWxhYm9yYXRlKG0sIGUpO1xuICAgICAgbGV0IChwcywgZXMpID0gTGlzdFV0aWwudW56aXAoY2FzZXMpO1xuICAgICAgbGV0IChwcycsIHB0eXMpID1cbiAgICAgICAgTGlzdC5tYXAoZWxhYm9yYXRlX3BhdHRlcm4obSksIHBzKSB8PiBMaXN0VXRpbC51bnppcDtcbiAgICAgIGxldCBqb2luZWRfcHR5ID1cbiAgICAgICAgVHlwLmpvaW5fYWxsKH5lbXB0eT1UeXAuVW5rbm93bihJbnRlcm5hbCkgfD4gVHlwLm1rX2Zhc3QsIGN0eCwgcHR5cylcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PVR5cC5ta19mYXN0KFR5cC5Vbmtub3duKEludGVybmFsKSkpO1xuICAgICAgbGV0IHBzJycgPVxuICAgICAgICBMaXN0Lm1hcDIoKHAsIHQpID0+IGZyZXNoX3BhdF9jYXN0KHAsIHQsIGpvaW5lZF9wdHkpLCBwcycsIHB0eXMpO1xuICAgICAgbGV0IGUnJyA9IGZyZXNoX2Nhc3QoZScsIHQsIGpvaW5lZF9wdHkpO1xuICAgICAgbGV0IChlcycsIGV0eXMpID0gTGlzdC5tYXAoZWxhYm9yYXRlKG0pLCBlcykgfD4gTGlzdFV0aWwudW56aXA7XG4gICAgICBsZXQgam9pbmVkX2V0eSA9XG4gICAgICAgIFR5cC5qb2luX2FsbCh+ZW1wdHk9VHlwLlVua25vd24oSW50ZXJuYWwpIHw+IFR5cC5ta19mYXN0LCBjdHgsIGV0eXMpXG4gICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1UeXAubWtfZmFzdChUeXAuVW5rbm93bihJbnRlcm5hbCkpKTtcbiAgICAgIGxldCBlcycnID1cbiAgICAgICAgTGlzdC5tYXAyKChlLCB0KSA9PiBmcmVzaF9jYXN0KGUsIHQsIGpvaW5lZF9ldHkpLCBlcycsIGV0eXMpO1xuICAgICAgTWF0Y2goZScnLCBMaXN0LmNvbWJpbmUocHMnJywgZXMnJykpXG4gICAgICB8PiByZXdyYXBcbiAgICAgIHw+IGNhc3RfZnJvbShqb2luZWRfZXR5KTtcbiAgICB9O1xuICAoZGhleHAsIGVsYWJvcmF0ZWRfdHlwZSk7XG59O1xuXG4vL2xldCBkaGV4cF9vZl91ZXhwID0gQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMCwgZGhleHBfb2ZfdWV4cCk7XG5cbi8qIFRoaXMgZnVuY3Rpb24gZ2l2ZXMgYSBuZXcgaWQgdG8gYWxsIHRoZSB0eXBlc1xuICAgaW4gdGhlIGV4cHJlc3Npb24uIEl0IGRvZXMgdGhpcyB0byBnZXQgcmlkIG9mXG4gICBhbGwgdGhlIGludmFsaWQgaWRzIHdlIGFkZGVkIHRvIHByZXZlbnQgZ2VuZXJhdGluZ1xuICAgdG9vIG1hbnkgbmV3IGlkcyAqL1xubGV0IGZpeF90eXBfaWRzID1cbiAgRXhwLm1hcF90ZXJtKH5mX3R5cD0oY29udCwgZSkgPT4gZSB8PiBJZFRhZ2dlZC5uZXdfaWRzIHw+IGNvbnQpO1xuXG5sZXQgdWV4cF9lbGFiID0gKG06IFN0YXRpY3MuTWFwLnQsIHVleHA6IFVFeHAudCk6IEVsYWJvcmF0aW9uUmVzdWx0LnQgPT5cbiAgc3dpdGNoIChlbGFib3JhdGUobSwgdWV4cCkpIHtcbiAgfCBleGNlcHRpb24gTWlzc2luZ1R5cGVJbmZvID0+IERvZXNOb3RFbGFib3JhdGVcbiAgfCAoZCwgdHkpID0+IEVsYWJvcmF0ZXMoZCwgdHksIERlbHRhLmVtcHR5KVxuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge3N0ZXA6IGludH07XG5cbmxldCBpbml0aWFsOiB0ID0ge3N0ZXA6IDB9O1xuXG5sZXQgdGFrZV9zdGVwID0gKHtzdGVwfSkgPT4ge3N0ZXA6IHN0ZXAgKyAxfTtcbmxldCBnZXRfc3RlcCA9ICh7c3RlcH0pID0+IHN0ZXA7XG5sZXQgcHV0X3N0ZXAgPSBzdGVwID0+IHtzdGVwOiBzdGVwfTtcbiIsIltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgc3RhdHM6IEV2YWx1YXRvclN0YXRzLnQsXG4gIHRlc3RzOiBUZXN0TWFwLnQsXG59O1xuXG5sZXQgaW5pdCA9IHtzdGF0czogRXZhbHVhdG9yU3RhdHMuaW5pdGlhbCwgdGVzdHM6IFRlc3RNYXAuZW1wdHl9O1xuXG5sZXQgdGFrZV9zdGVwID0gKHtzdGF0cywgX30gYXMgZXMpID0+IHtcbiAgLi4uZXMsXG4gIHN0YXRzOiBzdGF0cyB8PiBFdmFsdWF0b3JTdGF0cy50YWtlX3N0ZXAsXG59O1xuXG5sZXQgZ2V0X3N0ZXAgPSAoe3N0YXRzLCBffSkgPT4gc3RhdHMgfD4gRXZhbHVhdG9yU3RhdHMuZ2V0X3N0ZXA7XG5cbmxldCBwdXRfc3RlcCA9IChzdGVwLCBlcykgPT4gey4uLmVzLCBzdGF0czogRXZhbHVhdG9yU3RhdHMucHV0X3N0ZXAoc3RlcCl9O1xuXG5sZXQgYWRkX3Rlc3QgPSAoe3Rlc3RzLCBffSBhcyBlcywgaWQsIHJlcG9ydCkgPT4ge1xuICBsZXQgdGVzdHMgPSB0ZXN0cyB8PiBUZXN0TWFwLmV4dGVuZCgoaWQsIHJlcG9ydCkpO1xuICB7Li4uZXMsIHRlc3RzfTtcbn07XG5cbmxldCBnZXRfdGVzdHMgPSAoe3Rlc3RzLCBffSkgPT4gdGVzdHM7XG5cbmxldCBwdXRfdGVzdHMgPSAodGVzdHMsIGVzKSA9PiB7Li4uZXMsIHRlc3RzfTtcbiIsIm9wZW4gVHJhbnNpdGlvbjtcblxubW9kdWxlIFJlc3VsdCA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQm94ZWRWYWx1ZShESEV4cC50KVxuICAgIHwgSW5kZXQoREhFeHAudCk7XG5cbiAgbGV0IHVuYm94ID1cbiAgICBmdW5cbiAgICB8IEJveGVkVmFsdWUoZClcbiAgICB8IEluZGV0KGQpID0+IGQ7XG5cbiAgbGV0IGZhc3RfZXF1YWwgPSAocjEsIHIyKSA9PlxuICAgIHN3aXRjaCAocjEsIHIyKSB7XG4gICAgfCAoQm94ZWRWYWx1ZShkMSksIEJveGVkVmFsdWUoZDIpKVxuICAgIHwgKEluZGV0KGQxKSwgSW5kZXQoZDIpKSA9PiBESEV4cC5mYXN0X2VxdWFsKGQxLCBkMilcbiAgICB8IF8gPT4gZmFsc2VcbiAgICB9O1xufTtcblxub3BlbiBSZXN1bHQ7XG5cbm1vZHVsZSBFdmFsdWF0b3JFVk1vZGU6IHtcbiAgdHlwZSBzdGF0dXMgPVxuICAgIHwgQm94ZWRWYWx1ZVxuICAgIHwgSW5kZXRcbiAgICB8IFVuZXZhbDtcblxuICBpbmNsdWRlXG4gICAgRVZfTU9ERSB3aXRoXG4gICAgICB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpIGFuZCB0eXBlIHJlc3VsdCA9IChzdGF0dXMsIERIRXhwLnQpO1xufSA9IHtcbiAgdHlwZSBzdGF0dXMgPVxuICAgIHwgQm94ZWRWYWx1ZVxuICAgIHwgSW5kZXRcbiAgICB8IFVuZXZhbDtcblxuICB0eXBlIHJlc3VsdCA9IChzdGF0dXMsIERIRXhwLnQpO1xuXG4gIHR5cGUgcmVxc3RhdGUgPVxuICAgIHwgQm94ZWRSZWFkeVxuICAgIHwgSW5kZXRSZWFkeVxuICAgIHwgSW5kZXRCbG9ja2VkO1xuXG4gIGxldCAoJiYpID0gKHgsIHkpID0+XG4gICAgc3dpdGNoICh4LCB5KSB7XG4gICAgfCAoSW5kZXRCbG9ja2VkLCBfKSA9PiBJbmRldEJsb2NrZWRcbiAgICB8IChfLCBJbmRldEJsb2NrZWQpID0+IEluZGV0QmxvY2tlZFxuICAgIHwgKEluZGV0UmVhZHksIF8pID0+IEluZGV0UmVhZHlcbiAgICB8IChfLCBJbmRldFJlYWR5KSA9PiBJbmRldFJlYWR5XG4gICAgfCAoQm94ZWRSZWFkeSwgQm94ZWRSZWFkeSkgPT4gQm94ZWRSZWFkeVxuICAgIH07XG5cbiAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAocmVxc3RhdGUsICdhKTtcblxuICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpID0gKHJlcXN0YXRlLCAnYSwgJ2IpOyAvLyBjdW11bGF0aXZlIHN0YXRlLCBjdW11bGF0aXZlIGFyZ3VtZW50cywgY3VtdWxhdGl2ZSAndW5kbydcblxuICB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICBsZXQgdXBkYXRlX3Rlc3QgPSAoc3RhdGUsIGlkLCB2KSA9PlxuICAgIHN0YXRlIDo9IEV2YWx1YXRvclN0YXRlLmFkZF90ZXN0KHN0YXRlXiwgaWQsIHYpO1xuXG4gIGxldCByZXFfdmFsdWUgPSAoZiwgXywgeCkgPT5cbiAgICBzd2l0Y2ggKGYoeCkpIHtcbiAgICB8IChCb3hlZFZhbHVlLCB4KSA9PiAoQm94ZWRSZWFkeSwgeClcbiAgICB8IChJbmRldCwgeCkgPT4gKEluZGV0QmxvY2tlZCwgeClcbiAgICB8IChVbmV2YWwsIF8pID0+IGZhaWx3aXRoKFwiVW5leHBlY3RlZCBVbmV2YWxcIilcbiAgICB9O1xuXG4gIGxldCByZWMgcmVxX2FsbF92YWx1ZSA9IChmLCBpKSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gKEJveGVkUmVhZHksIFtdKVxuICAgIHwgW3gsIC4uLnhzXSA9PiB7XG4gICAgICAgIGxldCAocjEsIHgnKSA9IHJlcV92YWx1ZShmLCB4ID0+IHgsIHgpO1xuICAgICAgICBsZXQgKHIyLCB4cycpID0gcmVxX2FsbF92YWx1ZShmLCBpLCB4cyk7XG4gICAgICAgIChyMSAmJiByMiwgW3gnLCAuLi54cyddKTtcbiAgICAgIH07XG5cbiAgbGV0IHJlcV9maW5hbCA9IChmLCBfLCB4KSA9PlxuICAgIHN3aXRjaCAoZih4KSkge1xuICAgIHwgKEJveGVkVmFsdWUsIHgpID0+IChCb3hlZFJlYWR5LCB4KVxuICAgIHwgKEluZGV0LCB4KSA9PiAoSW5kZXRSZWFkeSwgeClcbiAgICB8IChVbmV2YWwsIF8pID0+IGZhaWx3aXRoKFwiVW5leHBlY3RlZCBVbmV2YWxcIilcbiAgICB9O1xuXG4gIGxldCByZWMgcmVxX2FsbF9maW5hbCA9IChmLCBpKSA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gKEJveGVkUmVhZHksIFtdKVxuICAgIHwgW3gsIC4uLnhzXSA9PiB7XG4gICAgICAgIGxldCAocjEsIHgnKSA9IHJlcV9maW5hbChmLCB4ID0+IHgsIHgpO1xuICAgICAgICBsZXQgKHIyLCB4cycpID0gcmVxX2FsbF9maW5hbChmLCBpLCB4cyk7XG4gICAgICAgIChyMSAmJiByMiwgW3gnLCAuLi54cyddKTtcbiAgICAgIH07XG5cbiAgbGV0IHJlcV9maW5hbF9vcl92YWx1ZSA9IChmLCBfLCB4KSA9PlxuICAgIHN3aXRjaCAoZih4KSkge1xuICAgIHwgKEJveGVkVmFsdWUsIHgpID0+IChCb3hlZFJlYWR5LCAoeCwgdHJ1ZSkpXG4gICAgfCAoSW5kZXQsIHgpID0+IChJbmRldFJlYWR5LCAoeCwgZmFsc2UpKVxuICAgIHwgKFVuZXZhbCwgXykgPT4gZmFpbHdpdGgoXCJVbmV4cGVjdGVkIFVuZXZhbFwiKVxuICAgIH07XG5cbiAgbGV0IG90aGVyd2lzZSA9IChfLCBjKSA9PiAoQm94ZWRSZWFkeSwgKCksIGMpO1xuXG4gIGxldCAoYW5kLikgPSAoKHIxLCB4MSwgYzEpLCAocjIsIHgyKSkgPT4gKHIxICYmIHIyLCAoeDEsIHgyKSwgYzEoeDIpKTtcblxuICBsZXQgKGxldC4pID0gKChyLCB4LCBjKSwgcykgPT5cbiAgICBzd2l0Y2ggKHIsIHMoeCkpIHtcbiAgICB8IChCb3hlZFJlYWR5LCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIGlzX3ZhbHVlOiB0cnVlLCBffSkpID0+XG4gICAgICBzdGF0ZV91cGRhdGUoKTtcbiAgICAgIChCb3hlZFZhbHVlLCBleHByKTtcbiAgICB8IChJbmRldFJlYWR5LCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIGlzX3ZhbHVlOiB0cnVlLCBffSkpID0+XG4gICAgICBzdGF0ZV91cGRhdGUoKTtcbiAgICAgIChJbmRldCwgZXhwcik7XG4gICAgfCAoQm94ZWRSZWFkeSwgU3RlcCh7ZXhwciwgc3RhdGVfdXBkYXRlLCBpc192YWx1ZTogZmFsc2UsIF99KSlcbiAgICB8IChJbmRldFJlYWR5LCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIGlzX3ZhbHVlOiBmYWxzZSwgX30pKSA9PlxuICAgICAgc3RhdGVfdXBkYXRlKCk7XG4gICAgICAoVW5ldmFsLCBleHByKTtcbiAgICB8IChCb3hlZFJlYWR5LCBDb25zdHJ1Y3RvcikgPT4gKEJveGVkVmFsdWUsIGMpXG4gICAgfCAoSW5kZXRSZWFkeSwgQ29uc3RydWN0b3IpID0+IChJbmRldCwgYylcbiAgICB8IChJbmRldEJsb2NrZWQsIF8pID0+IChJbmRldCwgYylcbiAgICB8IChfLCBJbmRldCkgPT4gKEluZGV0LCBjKVxuICAgIH07XG59O1xubW9kdWxlIEV2YWwgPSBUcmFuc2l0aW9uKEV2YWx1YXRvckVWTW9kZSk7XG5cbmxldCByZWMgZXZhbHVhdGUgPSAoc3RhdGUsIGVudiwgZCkgPT4ge1xuICBsZXQgdSA9IEV2YWwudHJhbnNpdGlvbihldmFsdWF0ZSwgc3RhdGUsIGVudiwgZCk7XG4gIHN3aXRjaCAodSkge1xuICB8IChCb3hlZFZhbHVlLCB4KSA9PiAoQm94ZWRWYWx1ZSwgeClcbiAgfCAoSW5kZXQsIHgpID0+IChJbmRldCwgeClcbiAgfCAoVW5ldmFsLCB4KSA9PiBldmFsdWF0ZShzdGF0ZSwgZW52LCB4KVxuICB9O1xufTtcblxubGV0IGV2YWx1YXRlID0gKGVudiwge2QsIF99OiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpID0+IHtcbiAgbGV0IHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLmluaXQpO1xuICBsZXQgZW52ID0gQ2xvc3VyZUVudmlyb25tZW50Lm9mX2Vudmlyb25tZW50KGVudik7XG4gIGxldCByZXN1bHQgPSBldmFsdWF0ZShzdGF0ZSwgZW52LCBkKTtcbiAgbGV0IHJlc3VsdCA9XG4gICAgc3dpdGNoIChyZXN1bHQpIHtcbiAgICB8IChCb3hlZFZhbHVlLCB4KSA9PiBCb3hlZFZhbHVlKHggfD4gREhFeHAucmVwYWlyX2lkcylcbiAgICB8IChJbmRldCwgeCkgPT4gSW5kZXQoeCB8PiBESEV4cC5yZXBhaXJfaWRzKVxuICAgIHwgKFVuZXZhbCwgeCkgPT4gSW5kZXQoeCB8PiBESEV4cC5yZXBhaXJfaWRzKVxuICAgIH07XG4gIChzdGF0ZV4sIHJlc3VsdCk7XG59O1xuIiwib3BlbiBVdGlsO1xuXG4vLyBpbnZhcmlhbnQ6IGFsd2F5cyBoYXMgYXQgbGVhc3Qgb25lIG9wdGlvblxudHlwZSBwcmV0dHkgPSBsaXN0KFNlZ21lbnQudCk7XG5cbmxldCBwX2NvbmNhdCA9IChwcmV0dHkyLCBwcmV0dHkxKSA9PlxuICBMaXN0Lm1hcChwaWVjZTEgPT4gTGlzdC5tYXAocGllY2UyID0+IHBpZWNlMSBAIHBpZWNlMiwgcHJldHR5MiksIHByZXR0eTEpXG4gIHw+IExpc3QuZmxhdHRlbjtcbmxldCBwX29yID0gKHByZXR0eTIsIHByZXR0eTEpID0+IHByZXR0eTEgQCBwcmV0dHkyO1xubGV0IHBfb3JpZiA9IChjb25kLCBwcmV0dHkyLCBwcmV0dHkxKSA9PlxuICBpZiAoY29uZCkge1xuICAgIHByZXR0eTEgQCBwcmV0dHkyO1xuICB9IGVsc2Uge1xuICAgIHByZXR0eTI7XG4gIH07XG5sZXQgcF9qdXN0ID0gc2VnbWVudCA9PiBbc2VnbWVudF07XG5cbmxldCBwX2NvbmNhdCA9IChwcmV0dGllczogbGlzdChwcmV0dHkpKSA9PlxuICBMaXN0LmZvbGRfbGVmdChwX2NvbmNhdCwgW1tdXSwgcHJldHRpZXMpO1xuXG5sZXQgKGxldCspID0gKHByZXR0eSwgZikgPT4gTGlzdC5tYXAoZiwgcHJldHR5KTtcbmxldCAoYW5kKykgPSAocHJldHR5MSwgcHJldHR5MikgPT4gTGlzdFV0aWwuY3Jvc3MocHJldHR5MSwgcHJldHR5Mik7XG5cbmxldCAoIGxldCogKSA9IChwcmV0dHksIGYpID0+IExpc3QubWFwKGYsIHByZXR0eSkgfD4gTGlzdC5mbGF0dGVuO1xubGV0ICggYW5kKiApID0gKHByZXR0eTEsIHByZXR0eTIpID0+IExpc3RVdGlsLmNyb3NzKHByZXR0eTEsIHByZXR0eTIpO1xuXG5sZXQgcmVjIGFsbCA9XG4gIGZ1blxuICB8IFtdID0+IFtbXV1cbiAgfCBbeCwgLi4ueHNdID0+IHtcbiAgICAgIGxldCByZXN0ID0gYWxsKHhzKTtcbiAgICAgIExpc3QuZmxhdHRlbihMaXN0Lm1hcCh4ID0+IExpc3QubWFwKHJlc3QgPT4gW3gsIC4uLnJlc3RdLCByZXN0KSwgeCkpO1xuICAgIH07XG5cbmxldCBzZWxlY3Q6IHByZXR0eSA9PiBTZWdtZW50LnQgPVxuICBzZWcgPT5cbiAgICBMaXN0VXRpbC5taW5pbXVtKFxuICAgICAgcyA9PiB7XG4gICAgICAgIGxldCB1ID1cbiAgICAgICAgICBNZWFzdXJlZC53aWR0aF9jb3N0KHMsIDgwKSAqIDEwMCArIE1lYXN1cmVkLnNlZ21lbnRfaGVpZ2h0KHMpO1xuICAgICAgICB1O1xuICAgICAgfSxcbiAgICAgIHNlZyxcbiAgICApXG4gICAgfD4gT3B0aW9uLmdldDtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gUHJldHR5U2VnbWVudDtcbm9wZW4gQmFzZTtcblxubGV0IHNob3VsZF9hZGRfc3BhY2UgPSAoczEsIHMyKSA9PlxuICBzd2l0Y2ggKCkge1xuICB8IF8gd2hlbiBTdHJpbmcuZW5kc193aXRoKHMxLCB+c3VmZml4PVwiKFwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuZW5kc193aXRoKHMxLCB+c3VmZml4PVwiW1wiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuc3RhcnRzX3dpdGgoczIsIH5wcmVmaXg9XCIpXCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIl1cIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLnN0YXJ0c193aXRoKHMyLCB+cHJlZml4PVwiLFwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuc3RhcnRzX3dpdGgoczIsIH5wcmVmaXg9XCI7XCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIjpcIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLmVuZHNfd2l0aChzMSwgfnN1ZmZpeD1cIiBcIikgPT4gZmFsc2VcbiAgfCBfIHdoZW4gU3RyaW5nLnN0YXJ0c193aXRoKHMyLCB+cHJlZml4PVwiIFwiKSA9PiBmYWxzZVxuICB8IF8gd2hlbiBTdHJpbmcuZW5kc193aXRoKHMxLCB+c3VmZml4PVwiXFxuXCIpID0+IGZhbHNlXG4gIHwgXyB3aGVuIFN0cmluZy5zdGFydHNfd2l0aChzMiwgfnByZWZpeD1cIlxcblwiKSA9PiBmYWxzZVxuICB8IF8gPT4gdHJ1ZVxuICB9O1xuXG5sZXQgdGV4dF90b19wcmV0dHkgPSAoaWQsIHNvcnQsIHN0cik6IHByZXR0eSA9PiB7XG4gIHBfanVzdChbXG4gICAgVGlsZSh7XG4gICAgICBpZCxcbiAgICAgIGxhYmVsOiBbc3RyXSxcbiAgICAgIG1vbGQ6IE1vbGQubWtfb3Aoc29ydCwgW10pLFxuICAgICAgc2hhcmRzOiBbMF0sXG4gICAgICBjaGlsZHJlbjogW10sXG4gICAgfSksXG4gIF0pO1xufTtcblxubGV0IG1rX2Zvcm0gPSAoZm9ybV9uYW1lOiBzdHJpbmcsIGlkLCBjaGlsZHJlbik6IFBpZWNlLnQgPT4ge1xuICBsZXQgZm9ybTogRm9ybS50ID0gRm9ybS5nZXQoZm9ybV9uYW1lKTtcbiAgYXNzZXJ0KExpc3QubGVuZ3RoKGNoaWxkcmVuKSA9PSBMaXN0Lmxlbmd0aChmb3JtLm1vbGQuaW5fKSk7XG4gIC8vIEFkZCB3aGl0ZXNwYWNlc1xuICBsZXQgY2hpbGRyZW4gPVxuICAgIEFiYS5tYXBfYWJhcyhcbiAgICAgICgobCwgY2hpbGQsIHIpKSA9PiB7XG4gICAgICAgIGxldCBsc3BhY2UgPSBzaG91bGRfYWRkX3NwYWNlKGwsIGNoaWxkIHw+IFNlZ21lbnQuZmlyc3Rfc3RyaW5nKTtcbiAgICAgICAgbGV0IHJzcGFjZSA9IHNob3VsZF9hZGRfc3BhY2UoY2hpbGQgfD4gU2VnbWVudC5sYXN0X3N0cmluZywgcik7XG4gICAgICAgIChsc3BhY2UgPyBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19zcGFjZShJZC5taygpKSldIDogW10pXG4gICAgICAgIEAgKFxuICAgICAgICAgIHJzcGFjZSA/IGNoaWxkIEAgW1NlY29uZGFyeShTZWNvbmRhcnkubWtfc3BhY2UoSWQubWsoKSkpXSA6IGNoaWxkXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgQWJhLm1rKGZvcm0ubGFiZWwsIGNoaWxkcmVuKSxcbiAgICApXG4gICAgfD4gQWJhLmdldF9icztcbiAgVGlsZSh7XG4gICAgaWQsXG4gICAgbGFiZWw6IGZvcm0ubGFiZWwsXG4gICAgbW9sZDogZm9ybS5tb2xkLFxuICAgIHNoYXJkczogTGlzdC5pbml0KExpc3QubGVuZ3RoKGNoaWxkcmVuKSArIDEsIG4gPT4gbiksXG4gICAgY2hpbGRyZW4sXG4gIH0pO1xufTtcblxuLyogSEFDS1tNYXR0XTogU29tZXRpbWVzIHRlcm1zIHRoYXQgc2hvdWxkIGhhdmUgbXVsdGlwbGUgaWRzIHdvbid0IGJlY2F1c2VcbiAgIGV2YWx1YXRpb24gb25seSBldmVyIGdpdmVzIHRoZW0gb25lICovXG5sZXQgcGFkX2lkcyA9IChuOiBpbnQsIGlkczogbGlzdChJZC50KSk6IGxpc3QoSWQudCkgPT4ge1xuICBsZXQgbGVuID0gTGlzdC5sZW5ndGgoaWRzKTtcbiAgaWYgKGxlbiA8IG4pIHtcbiAgICBpZHMgQCBMaXN0LmluaXQobiAtIGxlbiwgXyA9PiBJZC5taygpKTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0VXRpbC5zcGxpdF9uKG4sIGlkcykgfD4gZnN0O1xuICB9O1xufTtcblxubGV0IChAKSA9IChzZWcxOiBTZWdtZW50LnQsIHNlZzI6IFNlZ21lbnQudCk6IFNlZ21lbnQudCA9PlxuICBzd2l0Y2ggKHNlZzEsIHNlZzIpIHtcbiAgfCAoW10sIF8pID0+IHNlZzJcbiAgfCAoXywgW10pID0+IHNlZzFcbiAgfCBfID0+XG4gICAgaWYgKHNob3VsZF9hZGRfc3BhY2UoXG4gICAgICAgICAgU2VnbWVudC5sYXN0X3N0cmluZyhzZWcxKSxcbiAgICAgICAgICBTZWdtZW50LmZpcnN0X3N0cmluZyhzZWcyKSxcbiAgICAgICAgKSkge1xuICAgICAgc2VnMSBAIFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX3NwYWNlKElkLm1rKCkpKV0gQCBzZWcyO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWcxIEAgc2VnMjtcbiAgICB9XG4gIH07XG5cbi8qIFdlIGFzc3VtZSB0aGF0IHBhcmVudGhlc2VzIGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkIGFzIG5lY2Vzc2FyeSwgYW5kXG4gICAgICB0aGF0IHRoZSBleHByZXNzaW9uIGhhcyBubyBEeW5hbWljRXJyb3JIb2xlcywgQ2FzdHMsIG9yIEZhaWxlZENhc3RzXG4gICAqL1xubGV0IHJlYyBleHBfdG9fcHJldHR5ID0gKH5pbmxpbmUsIGV4cDogRXhwLnQpOiBwcmV0dHkgPT4ge1xuICBsZXQgZ28gPSAofmlubGluZT1pbmxpbmUpID0+IGV4cF90b19wcmV0dHkofmlubGluZSk7XG4gIHN3aXRjaCAoZXhwIHw+IEV4cC50ZXJtX29mKSB7XG4gIC8vIEFzc3VtZSB0aGVzZSBoYXZlIGJlZW4gcmVtb3ZlZCBieSB0aGUgcGFyZW50aGVzaXplclxuICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgfCBDYXN0KF8pXG4gIHwgRmFpbGVkQ2FzdChfKVxuICB8IENsb3N1cmUoXylcbiAgfCBGaWx0ZXIoXykgPT4gZmFpbHdpdGgoXCJwcmludGluZyB0aGVzZSBub3QgaW1wbGVtZW50ZWQgeWV0XCIpXG4gIC8vIE90aGVyIGNhc2VzXG4gIHwgSW52YWxpZCh4KSA9PiB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIHgpXG4gIHwgRW1wdHlIb2xlID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgcF9qdXN0KFtHcm91dCh7aWQsIHNoYXBlOiBDb252ZXh9KV0pO1xuICB8IEJvb2woYikgPT4gdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBCb29sLnRvX3N0cmluZyhiKSlcbiAgfCBJbnQobikgPT4gdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBJbnQudG9fc3RyaW5nKG4pKVxuICAvLyBUT0RPOiBkbyBmbG9hdHMgcHJpbnQgcmlnaHQ/XG4gIHwgRmxvYXQoZikgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIEZsb2F0LnRvX3N0cmluZyhmKSlcbiAgfCBTdHJpbmcocykgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eShleHAgfD4gRXhwLnJlcF9pZCwgU29ydC5FeHAsIFwiXFxcIlwiICsrIHMgKysgXCJcXFwiXCIpXG4gIHwgQ29uc3RydWN0b3IoYykgPT4gdGV4dF90b19wcmV0dHkoZXhwIHw+IEV4cC5yZXBfaWQsIFNvcnQuRXhwLCBjKVxuICB8IExpc3RMaXQoW10pID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgXCJbXVwiKVxuICB8IERlZmVycmFsKF8pID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgXCJkZWZlcnJhbFwiKVxuICB8IExpc3RMaXQoW3gsIC4uLnhzXSkgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQqIHggPSBnbyh4KVxuICAgIGFuZCogeHMgPSB4cyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIGxldCAoaWQsIGlkcykgPSAoXG4gICAgICBleHAuaWRzIHw+IExpc3QuaGQsXG4gICAgICBleHAuaWRzIHw+IExpc3QudGwgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh4cykpLFxuICAgICk7XG4gICAgbGV0IGZvcm0gPSAoeCwgeHMpID0+XG4gICAgICBta19mb3JtKFxuICAgICAgICBcImxpc3RfbGl0X2V4cFwiLFxuICAgICAgICBpZCxcbiAgICAgICAgW1xuICAgICAgICAgIHhcbiAgICAgICAgICBAIExpc3QuZmxhdHRlbihcbiAgICAgICAgICAgICAgTGlzdC5tYXAyKFxuICAgICAgICAgICAgICAgIChpZCwgeCkgPT4gW21rX2Zvcm0oXCJjb21tYV9leHBcIiwgaWQsIFtdKV0gQCB4LFxuICAgICAgICAgICAgICAgIGlkcyxcbiAgICAgICAgICAgICAgICB4cyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApO1xuICAgIHBfanVzdChbZm9ybSh4LCB4cyldKVxuICAgIHw+IHBfb3JpZihcbiAgICAgICAgICFpbmxpbmUsXG4gICAgICAgICBwX2p1c3QoXG4gICAgICAgICAgIHtcbiAgICAgICAgICAgICBsZXQgeCA9IFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXSBAIHg7XG4gICAgICAgICAgICAgbGV0IHhzID1cbiAgICAgICAgICAgICAgIHhzXG4gICAgICAgICAgICAgICB8PiBMaXN0Lm1hcCh4ID0+XG4gICAgICAgICAgICAgICAgICAgIFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXSBAIHhcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgIHw+IExpc3RVdGlsLm1hcF9sYXN0X29ubHkoeCA9PlxuICAgICAgICAgICAgICAgICAgICB4IEAgW1NlY29uZGFyeShTZWNvbmRhcnkubWtfbmV3bGluZShJZC5taygpKSldXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgIFtmb3JtKHgsIHhzKV07XG4gICAgICAgICAgIH0sXG4gICAgICAgICApLFxuICAgICAgICk7XG4gIHwgVmFyKHYpID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgdilcbiAgfCBCaW5PcChvcCwgbCwgcikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGwgPSBnbyhsKVxuICAgIGFuZCsgciA9IGdvKHIpO1xuICAgIGxcbiAgICBAIFtcbiAgICAgIFRpbGUoe1xuICAgICAgICBpZCxcbiAgICAgICAgbGFiZWw6IFtPcGVyYXRvcnMuYmluX29wX3RvX3N0cmluZyhvcCldLFxuICAgICAgICBtb2xkOiBNb2xkLm1rX2JpbihQcmVjZWRlbmNlLm9mX2Jpbl9vcChvcCksIFNvcnQuRXhwLCBbXSksXG4gICAgICAgIHNoYXJkczogWzBdLFxuICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICB9KSxcbiAgICBdXG4gICAgQCByO1xuICB8IE11bHRpSG9sZShlcykgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGVzID0gZXMgfD4gTGlzdC5tYXAoYW55X3RvX3ByZXR0eSh+aW5saW5lKSkgfD4gYWxsO1xuICAgIExpc3RVdGlsLmZsYXRfaW50ZXJzcGVyc2UoR3JvdXQoe2lkLCBzaGFwZTogQ29uY2F2ZX0pLCBlcyk7XG4gIHwgRnVuKHAsIGUsIF8sIF8pID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBwID0gcGF0X3RvX3ByZXR0eSh+aW5saW5lLCBwKVxuICAgIGFuZCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwiZnVuX1wiLCBpZCwgW3BdKV0gQCBlO1xuICB8IFR5cEZ1bih0cCwgZSwgXykgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIHRwID0gdHBhdF90b19wcmV0dHkofmlubGluZSwgdHApXG4gICAgYW5kKyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJ0eXBmdW5cIiwgaWQsIFt0cF0pXSBAIGU7XG4gIHwgVHVwbGUoW10pID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgXCIoKVwiKVxuICB8IFR1cGxlKFtfXSkgPT4gZmFpbHdpdGgoXCJTaW5nbGV0b24gVHVwbGVzIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFR1cGxlKFt4LCAuLi54c10pID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0KyB4ID0gZ28oeClcbiAgICBhbmQrIHhzID0geHMgfD4gTGlzdC5tYXAoZ28pIHw+IGFsbDtcbiAgICBsZXQgaWRzID0gZXhwLmlkcyB8PiBwYWRfaWRzKExpc3QubGVuZ3RoKHhzKSk7XG4gICAgeFxuICAgIEAgTGlzdC5mbGF0dGVuKFxuICAgICAgICBMaXN0Lm1hcDIoKGlkLCB4KSA9PiBbbWtfZm9ybShcImNvbW1hX2V4cFwiLCBpZCwgW10pXSBAIHgsIGlkcywgeHMpLFxuICAgICAgKTtcbiAgfCBMZXQocCwgZTEsIGUyKSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgcCA9IHBhdF90b19wcmV0dHkofmlubGluZSwgcClcbiAgICBhbmQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKTtcbiAgICBsZXQgZTIgPSBpbmxpbmUgPyBlMiA6IFtTZWNvbmRhcnkoU2Vjb25kYXJ5Lm1rX25ld2xpbmUoSWQubWsoKSkpXSBAIGUyO1xuICAgIFtta19mb3JtKFwibGV0X1wiLCBpZCwgW3AsIGUxXSldIEAgZTI7XG4gIHwgRml4RihwLCBlLCBfKSA9PlxuICAgIC8vIFRPRE86IEFkZCBvcHRpb25hbCBuZXdsaW5lc1xuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgcCA9IHBhdF90b19wcmV0dHkofmlubGluZSwgcClcbiAgICBhbmQrIGUgPSBnbyhlKTtcbiAgICBbbWtfZm9ybShcImZpeFwiLCBpZCwgW3BdKV0gQCBlO1xuICB8IFR5QWxpYXModHAsIHQsIGUpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyB0cCA9IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICAgIGFuZCsgdCA9IHR5cF90b19wcmV0dHkofmlubGluZSwgdClcbiAgICBhbmQrIGUgPSBnbyhlKTtcbiAgICBsZXQgZSA9IGlubGluZSA/IGUgOiBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCBlO1xuICAgIFtta19mb3JtKFwidHlhbGlhc1wiLCBpZCwgW3RwLCB0XSldIEAgZTtcbiAgfCBBcChGb3J3YXJkLCBlMSwgZTIpID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMik7XG4gICAgZTEgQCBbbWtfZm9ybShcImFwX2V4cFwiLCBpZCwgW2UyXSldO1xuICB8IEFwKFJldmVyc2UsIGUxLCBlMikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKVxuICAgIGFuZCsgb3AgPSB0ZXh0X3RvX3ByZXR0eShpZCwgU29ydC5FeHAsIFwifD5cIik7XG4gICAgZTEgQCBvcCBAIGUyO1xuICB8IFR5cEFwKGUsIHQpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlID0gZ28oZSlcbiAgICBhbmQrIHRwID0gdHlwX3RvX3ByZXR0eSh+aW5saW5lLCB0KTtcbiAgICBlIEAgW21rX2Zvcm0oXCJhcF9leHBfdHlwXCIsIGlkLCBbdHBdKV07XG4gIHwgRGVmZXJyZWRBcChlLCBlcykgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQrIGUgPSBnbyhlKVxuICAgIGFuZCsgZXMgPSBlcyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIGxldCAoaWQsIGlkcykgPSAoXG4gICAgICBleHAuaWRzIHw+IExpc3QuaGQsXG4gICAgICBleHAuaWRzIHw+IExpc3QudGwgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aChlcykpLFxuICAgICk7XG4gICAgZVxuICAgIEAgW1xuICAgICAgbWtfZm9ybShcbiAgICAgICAgXCJhcF9leHBcIixcbiAgICAgICAgaWQsXG4gICAgICAgIFtcbiAgICAgICAgICBMaXN0LmZsYXR0ZW4oXG4gICAgICAgICAgICBMaXN0Lm1hcDIoXG4gICAgICAgICAgICAgIChpZCwgZSkgPT4gW21rX2Zvcm0oXCJjb21tYV9leHBcIiwgaWQsIFtdKV0gQCBlLFxuICAgICAgICAgICAgICBpZHMsXG4gICAgICAgICAgICAgIGVzLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICBdO1xuICB8IElmKGUxLCBlMiwgZTMpID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMilcbiAgICBhbmQrIGUzID0gZ28oZTMpO1xuICAgIGxldCBlMiA9IGlubGluZSA/IGUyIDogW1NlY29uZGFyeShTZWNvbmRhcnkubWtfbmV3bGluZShJZC5taygpKSldIEAgZTI7XG4gICAgbGV0IGUzID0gaW5saW5lID8gZTMgOiBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCBlMztcbiAgICBbbWtfZm9ybShcImlmX1wiLCBpZCwgW2UxLCBlMl0pXSBAIGUzO1xuICB8IFNlcShlMSwgZTIpID0+XG4gICAgLy8gVE9ETzogTWFrZSBuZXdsaW5lIG9wdGlvbmFsXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlMSA9IGdvKGUxKVxuICAgIGFuZCsgZTIgPSBnbyhlMik7XG4gICAgbGV0IGUyID0gaW5saW5lID8gZTIgOiBbU2Vjb25kYXJ5KFNlY29uZGFyeS5ta19uZXdsaW5lKElkLm1rKCkpKV0gQCBlMjtcbiAgICBlMSBAIFtta19mb3JtKFwiY2VsbC1qb2luXCIsIGlkLCBbXSldIEAgZTI7XG4gIHwgVGVzdChlKSA9PlxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwidGVzdFwiLCBpZCwgW2VdKV07XG4gIHwgUGFyZW5zKGUpID0+XG4gICAgLy8gVE9ETzogQWRkIG9wdGlvbmFsIG5ld2xpbmVzXG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJwYXJlbnNfZXhwXCIsIGlkLCBbZV0pXTtcbiAgfCBDb25zKGUxLCBlMikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKTtcbiAgICBlMSBAIFtta19mb3JtKFwiY29uc19leHBcIiwgaWQsIFtdKV0gQCBlMjtcbiAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICAvLyBUT0RPOiBBZGQgb3B0aW9uYWwgbmV3bGluZXNcbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUxID0gZ28oZTEpXG4gICAgYW5kKyBlMiA9IGdvKGUyKTtcbiAgICBlMSBAIFtta19mb3JtKFwibGlzdF9jb25jYXRcIiwgaWQsIFtdKV0gQCBlMjtcbiAgfCBVbk9wKE1ldGEoVW5xdW90ZSksIGUpID0+XG4gICAgbGV0IGlkID0gZXhwIHw+IEV4cC5yZXBfaWQ7XG4gICAgbGV0KyBlID0gZ28oZSk7XG4gICAgW21rX2Zvcm0oXCJ1bnF1b3RlXCIsIGlkLCBbXSldIEAgZTtcbiAgfCBVbk9wKEJvb2woTm90KSwgZSkgPT5cbiAgICBsZXQgaWQgPSBleHAgfD4gRXhwLnJlcF9pZDtcbiAgICBsZXQrIGUgPSBnbyhlKTtcbiAgICBbbWtfZm9ybShcIm5vdFwiLCBpZCwgW10pXSBAIGU7XG4gIHwgVW5PcChJbnQoTWludXMpLCBlKSA9PlxuICAgIGxldCBpZCA9IGV4cCB8PiBFeHAucmVwX2lkO1xuICAgIGxldCsgZSA9IGdvKGUpO1xuICAgIFtta19mb3JtKFwidW5hcnlfbWludXNcIiwgaWQsIFtdKV0gQCBlO1xuICAvKiBUT0RPOiB0aGlzIGlzbid0IGFjdHVhbGx5IGNvcnJlY3QgYmVjYXVzZSB3ZSBjb3VsZCB0aGUgYnVpbHRpblxuICAgICBjb3VsZCBoYXZlIGJlZW4gb3ZlcnJpZGVuIGluIHRoaXMgc2NvcGU7IHdvcnRoIGZpeGluZyB3aGVuIHdlIGZpeFxuICAgICBjbG9zdXJlcy4gKi9cbiAgfCBCdWlsdGluRnVuKGYpID0+IHRleHRfdG9fcHJldHR5KGV4cCB8PiBFeHAucmVwX2lkLCBTb3J0LkV4cCwgZilcbiAgfCBNYXRjaChlLCBycykgPT5cbiAgICAvLyBUT0RPOiBBZGQgbmV3bGluZXNcbiAgICBsZXQrIGUgPSBnbyhlKVxuICAgIGFuZCsgcnM6IGxpc3QobGlzdCgoU2VnbWVudC50LCBTZWdtZW50LnQpKSkgPSB7XG4gICAgICByc1xuICAgICAgfD4gTGlzdC5tYXAoKChwLCBlKSkgPT4gKHBhdF90b19wcmV0dHkofmlubGluZSwgcCksIGdvKGUpKSlcbiAgICAgIHw+IExpc3QubWFwKCgoeCwgeSkpID0+IExpc3RVdGlsLmNyb3NzKHgsIHkpKVxuICAgICAgfD4gYWxsO1xuICAgIH07XG4gICAgbGV0IChpZCwgaWRzKSA9IChcbiAgICAgIGV4cC5pZHMgfD4gTGlzdC5oZCxcbiAgICAgIGV4cC5pZHMgfD4gTGlzdC50bCB8PiBwYWRfaWRzKExpc3QubGVuZ3RoKHJzKSksXG4gICAgKTtcbiAgICBbXG4gICAgICBta19mb3JtKFxuICAgICAgICBcImNhc2VcIixcbiAgICAgICAgaWQsXG4gICAgICAgIFtcbiAgICAgICAgICBlXG4gICAgICAgICAgQCAoXG4gICAgICAgICAgICBMaXN0Lm1hcDIoXG4gICAgICAgICAgICAgIChpZCwgKHAsIGUpKSA9PiBbbWtfZm9ybShcInJ1bGVcIiwgaWQsIFtwXSldIEAgZSxcbiAgICAgICAgICAgICAgaWRzLFxuICAgICAgICAgICAgICBycyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIF07XG4gIH07XG59XG5hbmQgcGF0X3RvX3ByZXR0eSA9ICh+aW5saW5lLCBwYXQ6IFBhdC50KTogcHJldHR5ID0+IHtcbiAgbGV0IGdvID0gcGF0X3RvX3ByZXR0eSh+aW5saW5lKTtcbiAgc3dpdGNoIChwYXQgfD4gUGF0LnRlcm1fb2YpIHtcbiAgfCBJbnZhbGlkKHQpID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgdClcbiAgfCBFbXB0eUhvbGUgPT5cbiAgICBsZXQgaWQgPSBwYXQgfD4gUGF0LnJlcF9pZDtcbiAgICBwX2p1c3QoW0dyb3V0KHtpZCwgc2hhcGU6IENvbnZleH0pXSk7XG4gIHwgV2lsZCA9PiB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIFwiX1wiKVxuICB8IFZhcih2KSA9PiB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIHYpXG4gIHwgSW50KG4pID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgSW50LnRvX3N0cmluZyhuKSlcbiAgfCBGbG9hdChmKSA9PlxuICAgIHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgRmxvYXQudG9fc3RyaW5nKGYpKVxuICB8IEJvb2woYikgPT4gdGV4dF90b19wcmV0dHkocGF0IHw+IFBhdC5yZXBfaWQsIFNvcnQuUGF0LCBCb29sLnRvX3N0cmluZyhiKSlcbiAgfCBTdHJpbmcocykgPT5cbiAgICB0ZXh0X3RvX3ByZXR0eShwYXQgfD4gUGF0LnJlcF9pZCwgU29ydC5QYXQsIFwiXFxcIlwiICsrIHMgKysgXCJcXFwiXCIpXG4gIHwgQ29uc3RydWN0b3IoYykgPT4gdGV4dF90b19wcmV0dHkocGF0IHw+IFBhdC5yZXBfaWQsIFNvcnQuUGF0LCBjKVxuICB8IExpc3RMaXQoW10pID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgXCJbXVwiKVxuICB8IExpc3RMaXQoW3gsIC4uLnhzXSkgPT5cbiAgICBsZXQqIHggPSBnbyh4KVxuICAgIGFuZCogeHMgPSB4cyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIGxldCAoaWQsIGlkcykgPSAoXG4gICAgICBwYXQuaWRzIHw+IExpc3QuaGQsXG4gICAgICBwYXQuaWRzIHw+IExpc3QudGwgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh4cykpLFxuICAgICk7XG4gICAgcF9qdXN0KFtcbiAgICAgIG1rX2Zvcm0oXG4gICAgICAgIFwibGlzdF9saXRfcGF0XCIsXG4gICAgICAgIGlkLFxuICAgICAgICBbXG4gICAgICAgICAgeFxuICAgICAgICAgIEAgTGlzdC5mbGF0dGVuKFxuICAgICAgICAgICAgICBMaXN0Lm1hcDIoXG4gICAgICAgICAgICAgICAgKGlkLCB4KSA9PiBbbWtfZm9ybShcImNvbW1hX3BhdFwiLCBpZCwgW10pXSBAIHgsXG4gICAgICAgICAgICAgICAgaWRzLFxuICAgICAgICAgICAgICAgIHhzLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgXSk7XG4gIHwgQ29ucyhwMSwgcDIpID0+XG4gICAgbGV0IGlkID0gcGF0IHw+IFBhdC5yZXBfaWQ7XG4gICAgbGV0KyBwMSA9IGdvKHAxKVxuICAgIGFuZCsgcDIgPSBnbyhwMik7XG4gICAgcDEgQCBbbWtfZm9ybShcImNvbnNfcGF0XCIsIGlkLCBbXSldIEAgcDI7XG4gIHwgVHVwbGUoW10pID0+IHRleHRfdG9fcHJldHR5KHBhdCB8PiBQYXQucmVwX2lkLCBTb3J0LlBhdCwgXCIoKVwiKVxuICB8IFR1cGxlKFtfXSkgPT4gZmFpbHdpdGgoXCJTaW5nbGV0b24gVHVwbGVzIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFR1cGxlKFt4LCAuLi54c10pID0+XG4gICAgbGV0KyB4ID0gZ28oeClcbiAgICBhbmQrIHhzID0geHMgfD4gTGlzdC5tYXAoZ28pIHw+IGFsbDtcbiAgICBsZXQgaWRzID0gcGF0LmlkcyB8PiBwYWRfaWRzKExpc3QubGVuZ3RoKHhzKSk7XG4gICAgeFxuICAgIEAgTGlzdC5mbGF0dGVuKFxuICAgICAgICBMaXN0Lm1hcDIoKGlkLCB4KSA9PiBbbWtfZm9ybShcImNvbW1hX3BhdFwiLCBpZCwgW10pXSBAIHgsIGlkcywgeHMpLFxuICAgICAgKTtcbiAgfCBQYXJlbnMocCkgPT5cbiAgICBsZXQgaWQgPSBwYXQgfD4gUGF0LnJlcF9pZDtcbiAgICBsZXQrIHAgPSBnbyhwKTtcbiAgICBbbWtfZm9ybShcInBhcmVuc19wYXRcIiwgaWQsIFtwXSldO1xuICB8IE11bHRpSG9sZShlcykgPT5cbiAgICBsZXQgaWQgPSBwYXQgfD4gUGF0LnJlcF9pZDtcbiAgICBsZXQrIGVzID0gZXMgfD4gTGlzdC5tYXAoYW55X3RvX3ByZXR0eSh+aW5saW5lKSkgfD4gYWxsO1xuICAgIExpc3RVdGlsLmZsYXRfaW50ZXJzcGVyc2UoR3JvdXQoe2lkLCBzaGFwZTogQ29uY2F2ZX0pLCBlcyk7XG4gIHwgQXAocDEsIHAyKSA9PlxuICAgIGxldCBpZCA9IHBhdCB8PiBQYXQucmVwX2lkO1xuICAgIGxldCsgcDEgPSBnbyhwMSlcbiAgICBhbmQrIHAyID0gZ28ocDIpO1xuICAgIHAxIEAgW21rX2Zvcm0oXCJhcF9wYXRcIiwgaWQsIFtwMl0pXTtcbiAgfCBDYXN0KHAsIHQsIF8pID0+XG4gICAgbGV0IGlkID0gcGF0IHw+IFBhdC5yZXBfaWQ7XG4gICAgbGV0KyBwID0gZ28ocClcbiAgICBhbmQrIHQgPSB0eXBfdG9fcHJldHR5KH5pbmxpbmUsIHQpO1xuICAgIHAgQCBbbWtfZm9ybShcInR5cGVhbm5cIiwgaWQsIFtdKV0gQCB0O1xuICB9O1xufVxuYW5kIHR5cF90b19wcmV0dHkgPSAofmlubGluZSwgdHlwOiBUeXAudCk6IHByZXR0eSA9PiB7XG4gIGxldCBnbyA9IHR5cF90b19wcmV0dHkofmlubGluZSk7XG4gIGxldCBnb19jb25zdHJ1Y3RvcjogQ29uc3RydWN0b3JNYXAudmFyaWFudChUeXAudCkgPT4gcHJldHR5ID1cbiAgICBmdW5cbiAgICB8IFZhcmlhbnQoYywgaWRzLCBOb25lKSA9PiB0ZXh0X3RvX3ByZXR0eShMaXN0LmhkKGlkcyksIFNvcnQuVHlwLCBjKVxuICAgIHwgVmFyaWFudChjLCBpZHMsIFNvbWUoeCkpID0+IHtcbiAgICAgICAgbGV0KyBjb25zdHJ1Y3RvciA9XG4gICAgICAgICAgdGV4dF90b19wcmV0dHkoTGlzdC5oZChMaXN0LnRsKGlkcykpLCBTb3J0LlR5cCwgYyk7XG4gICAgICAgIGNvbnN0cnVjdG9yIEAgW21rX2Zvcm0oXCJhcF90eXBcIiwgTGlzdC5oZChpZHMpLCBnbyh4KSldO1xuICAgICAgfVxuICAgIHwgQmFkRW50cnkoeCkgPT4gZ28oeCk7XG4gIHN3aXRjaCAodHlwIHw+IFR5cC50ZXJtX29mKSB7XG4gIHwgVW5rbm93bihIb2xlKEludmFsaWQocykpKSA9PlxuICAgIHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgcylcbiAgfCBVbmtub3duKEludGVybmFsKVxuICB8IFVua25vd24oU3luU3dpdGNoKVxuICB8IFVua25vd24oSG9sZShFbXB0eUhvbGUpKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIHBfanVzdChbR3JvdXQoe2lkLCBzaGFwZTogQ29udmV4fSldKTtcbiAgfCBVbmtub3duKEhvbGUoTXVsdGlIb2xlKGVzKSkpID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyBlcyA9IGVzIHw+IExpc3QubWFwKGFueV90b19wcmV0dHkofmlubGluZSkpIHw+IGFsbDtcbiAgICBMaXN0VXRpbC5mbGF0X2ludGVyc3BlcnNlKEdyb3V0KHtpZCwgc2hhcGU6IENvbmNhdmV9KSwgZXMpO1xuICB8IFZhcih2KSA9PiB0ZXh0X3RvX3ByZXR0eSh0eXAgfD4gVHlwLnJlcF9pZCwgU29ydC5UeXAsIHYpXG4gIHwgSW50ID0+IHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgXCJJbnRcIilcbiAgfCBGbG9hdCA9PiB0ZXh0X3RvX3ByZXR0eSh0eXAgfD4gVHlwLnJlcF9pZCwgU29ydC5UeXAsIFwiRmxvYXRcIilcbiAgfCBCb29sID0+IHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgXCJCb29sXCIpXG4gIHwgU3RyaW5nID0+IHRleHRfdG9fcHJldHR5KHR5cCB8PiBUeXAucmVwX2lkLCBTb3J0LlR5cCwgXCJTdHJpbmdcIilcbiAgfCBMaXN0KHQpID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyB0ID0gZ28odCk7XG4gICAgW21rX2Zvcm0oXCJsaXN0X3R5cFwiLCBpZCwgW3RdKV07XG4gIHwgUHJvZChbXSkgPT4gdGV4dF90b19wcmV0dHkodHlwIHw+IFR5cC5yZXBfaWQsIFNvcnQuVHlwLCBcIigpXCIpXG4gIHwgUHJvZChbX10pID0+IGZhaWx3aXRoKFwiU2luZ2xldG9uIFByb2RzIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFByb2QoW3QsIC4uLnRzXSkgPT5cbiAgICBsZXQrIHQgPSBnbyh0KVxuICAgIGFuZCsgdHMgPSB0cyB8PiBMaXN0Lm1hcChnbykgfD4gYWxsO1xuICAgIHRcbiAgICBAIExpc3QuZmxhdHRlbihcbiAgICAgICAgTGlzdC5tYXAyKFxuICAgICAgICAgIChpZCwgdCkgPT4gW21rX2Zvcm0oXCJjb21tYV90eXBcIiwgaWQsIFtdKV0gQCB0LFxuICAgICAgICAgIHR5cC5pZHMgfD4gcGFkX2lkcyh0cyB8PiBMaXN0Lmxlbmd0aCksXG4gICAgICAgICAgdHMsXG4gICAgICAgICksXG4gICAgICApO1xuICB8IFBhcmVucyh0KSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdCA9IGdvKHQpO1xuICAgIFtta19mb3JtKFwicGFyZW5zX3R5cFwiLCBpZCwgW3RdKV07XG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdDEgPSBnbyh0MSlcbiAgICBhbmQrIHQyID0gZ28odDIpO1xuICAgIHQxIEAgW21rX2Zvcm0oXCJhcF90eXBcIiwgaWQsIFt0Ml0pXTtcbiAgfCBSZWModHAsIHQpID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyB0cCA9IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICAgIGFuZCsgdCA9IGdvKHQpO1xuICAgIFtta19mb3JtKFwicmVjXCIsIGlkLCBbdHBdKV0gQCB0O1xuICB8IEZvcmFsbCh0cCwgdCkgPT5cbiAgICBsZXQgaWQgPSB0eXAgfD4gVHlwLnJlcF9pZDtcbiAgICBsZXQrIHRwID0gdHBhdF90b19wcmV0dHkofmlubGluZSwgdHApXG4gICAgYW5kKyB0ID0gZ28odCk7XG4gICAgW21rX2Zvcm0oXCJmb3JhbGxcIiwgaWQsIFt0cF0pXSBAIHQ7XG4gIHwgQXJyb3codDEsIHQyKSA9PlxuICAgIGxldCBpZCA9IHR5cCB8PiBUeXAucmVwX2lkO1xuICAgIGxldCsgdDEgPSBnbyh0MSlcbiAgICBhbmQrIHQyID0gZ28odDIpO1xuICAgIHQxIEAgW21rX2Zvcm0oXCJhcnJvd1wiLCBpZCwgW10pXSBAIHQyO1xuICB8IFN1bShbXSkgPT4gZmFpbHdpdGgoXCJFbXB0eSBTdW1zIGFyZSBub3QgYWxsb3dlZFwiKVxuICB8IFN1bShbdF0pID0+XG4gICAgbGV0IGlkID0gdHlwIHw+IFR5cC5yZXBfaWQ7XG4gICAgbGV0KyB0ID0gZ29fY29uc3RydWN0b3IodCk7XG4gICAgW21rX2Zvcm0oXCJ0eXBfc3VtX3NpbmdsZVwiLCBpZCwgW10pXSBAIHQ7XG4gIHwgU3VtKFt0LCAuLi50c10pID0+XG4gICAgbGV0KyB0ID0gZ29fY29uc3RydWN0b3IodClcbiAgICBhbmQrIHRzID0gdHMgfD4gTGlzdC5tYXAoZ29fY29uc3RydWN0b3IpIHw+IGFsbDtcbiAgICB0XG4gICAgQCBMaXN0LmZsYXR0ZW4oXG4gICAgICAgIExpc3QubWFwMihcbiAgICAgICAgICAoaWQsIHQpID0+IFtta19mb3JtKFwidHlwX3BsdXNcIiwgaWQsIFtdKV0gQCB0LFxuICAgICAgICAgIHR5cC5pZHMgfD4gcGFkX2lkcyhMaXN0Lmxlbmd0aCh0cykpLFxuICAgICAgICAgIHRzLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgfTtcbn1cbmFuZCB0cGF0X3RvX3ByZXR0eSA9ICh+aW5saW5lLCB0cGF0OiBUUGF0LnQpOiBwcmV0dHkgPT4ge1xuICBzd2l0Y2ggKHRwYXQgfD4gSWRUYWdnZWQudGVybV9vZikge1xuICB8IEludmFsaWQodCkgPT4gdGV4dF90b19wcmV0dHkodHBhdCB8PiBUUGF0LnJlcF9pZCwgU29ydC5UeXAsIHQpXG4gIHwgRW1wdHlIb2xlID0+XG4gICAgbGV0IGlkID0gdHBhdCB8PiBUUGF0LnJlcF9pZDtcbiAgICBwX2p1c3QoW0dyb3V0KHtpZCwgc2hhcGU6IENvbnZleH0pXSk7XG4gIHwgTXVsdGlIb2xlKHhzKSA9PlxuICAgIGxldCBpZCA9IHRwYXQgfD4gVFBhdC5yZXBfaWQ7XG4gICAgbGV0KyB4cyA9IHhzIHw+IExpc3QubWFwKGFueV90b19wcmV0dHkofmlubGluZSkpIHw+IGFsbDtcbiAgICBMaXN0VXRpbC5mbGF0X2ludGVyc3BlcnNlKEdyb3V0KHtpZCwgc2hhcGU6IENvbmNhdmV9KSwgeHMpO1xuICB8IFZhcih2KSA9PiB0ZXh0X3RvX3ByZXR0eSh0cGF0IHw+IFRQYXQucmVwX2lkLCBTb3J0LlR5cCwgdilcbiAgfTtcbn1cbmFuZCBhbnlfdG9fcHJldHR5ID0gKH5pbmxpbmUsIGFueTogQW55LnQpOiBwcmV0dHkgPT4ge1xuICBzd2l0Y2ggKGFueSkge1xuICB8IEV4cChlKSA9PiBleHBfdG9fcHJldHR5KH5pbmxpbmUsIGUpXG4gIHwgUGF0KHApID0+IHBhdF90b19wcmV0dHkofmlubGluZSwgcClcbiAgfCBUeXAodCkgPT4gdHlwX3RvX3ByZXR0eSh+aW5saW5lLCB0KVxuICB8IFRQYXQodHApID0+IHRwYXRfdG9fcHJldHR5KH5pbmxpbmUsIHRwKVxuICB8IEFueShfKVxuICB8IE51bChfKVxuICB8IFJ1bChfKSA9PlxuICAgIC8vVE9ETzogcHJpbnQgb3V0IGludmFsaWQgcnVsZXMgcHJvcGVybHlcbiAgICBsZXQgaWQgPSBhbnkgfD4gQW55LnJlcF9pZDtcbiAgICBwX2p1c3QoW0dyb3V0KHtpZCwgc2hhcGU6IENvbnZleH0pXSk7XG4gIH07XG59O1xuXG4vLyBVc2UgUHJlY2VkZW5jZS5yZSB0byB3b3JrIG91dCB3aGVyZSB5b3VyIGNvbnN0cnVjdCBnb2VzIGhlcmUuXG5sZXQgcmVjIGV4dGVybmFsX3ByZWNlZGVuY2UgPSAoZXhwOiBFeHAudCk6IFByZWNlZGVuY2UudCA9PiB7XG4gIHN3aXRjaCAoRXhwLnRlcm1fb2YoZXhwKSkge1xuICAvLyBGb3JtcyB3aGljaCB3ZSBhcmUgYWJvdXQgdG8gc3RyaXAsIHNvIHdlIGp1c3QgbG9vayBpbnNpZGVcbiAgfCBDbG9zdXJlKF8sIHgpXG4gIHwgRHluYW1pY0Vycm9ySG9sZSh4LCBfKSA9PiBleHRlcm5hbF9wcmVjZWRlbmNlKHgpXG5cbiAgLy8gQmluYXJ5IG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQgaW4gUHJlY2VkZW5jZS5yZVxuICB8IEJpbk9wKG9wLCBfLCBfKSA9PiBQcmVjZWRlbmNlLm9mX2Jpbl9vcChvcClcblxuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBuZXZlciBuZWVkIHBhcmVudGhlc2VzIGFyb3VuZCB0aGVtXG4gIHwgVmFyKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IEVtcHR5SG9sZVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRGVmZXJyYWwoXylcbiAgfCBCdWlsdGluRnVuKF8pID0+IFByZWNlZGVuY2UubWF4XG5cbiAgLy8gU2FtZSBnb2VzIGZvciBmb3JtcyB3aGljaCBhcmUgYWxyZWFkeSBzdXJyb3VuZGVkXG4gIHwgUGFyZW5zKF8pXG4gIHwgTGlzdExpdChfKVxuICB8IFRlc3QoXylcbiAgfCBNYXRjaChfKSA9PiBQcmVjZWRlbmNlLm1heFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgVW5PcChNZXRhKFVucXVvdGUpLCBfKSA9PiBQcmVjZWRlbmNlLnVucXVvdGVcbiAgfCBDYXN0KF8pXG4gIHwgRmFpbGVkQ2FzdChfKSA9PiBQcmVjZWRlbmNlLmNhc3RcbiAgfCBBcChGb3J3YXJkLCBfLCBfKVxuICB8IERlZmVycmVkQXAoXylcbiAgfCBUeXBBcChfKSA9PiBQcmVjZWRlbmNlLmFwXG4gIHwgVW5PcChCb29sKE5vdCksIF8pID0+IFByZWNlZGVuY2Uubm90X1xuICB8IFVuT3AoSW50KE1pbnVzKSwgXykgPT4gUHJlY2VkZW5jZS5uZWdcbiAgfCBDb25zKF8pID0+IFByZWNlZGVuY2UuY29uc1xuICB8IEFwKFJldmVyc2UsIF8sIF8pID0+IFByZWNlZGVuY2UuZXFzXG4gIHwgTGlzdENvbmNhdChfKSA9PiBQcmVjZWRlbmNlLmNvbmNhdFxuICB8IElmKF8pID0+IFByZWNlZGVuY2UuaWZfXG4gIHwgVHlwRnVuKF8pXG4gIHwgRnVuKF8pXG4gIHwgRml4RihfKSA9PiBQcmVjZWRlbmNlLmZ1bl9cbiAgfCBUdXBsZShfKSA9PiBQcmVjZWRlbmNlLnByb2RcbiAgfCBTZXEoXykgPT4gUHJlY2VkZW5jZS5zZW1pXG5cbiAgLy8gVG9wLWxldmVsIHRoaW5nc1xuICB8IEZpbHRlcihfKVxuICB8IFR5QWxpYXMoXylcbiAgfCBMZXQoXykgPT4gUHJlY2VkZW5jZS5sZXRfXG5cbiAgLy8gTWF0dDogSSB0aGluayBtdWx0aWhvbGVzIGFyZSBtaW4gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHRoZSBwcmVjZWRlbmNlIG9mIHRoZSBg4p+pP+KfqGBzXG4gIHwgTXVsdGlIb2xlKF8pID0+IFByZWNlZGVuY2UubWluXG4gIH07XG59O1xuXG5sZXQgZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQgPSAoZHA6IFBhdC50KSA9PlxuICBzd2l0Y2ggKERIUGF0LnRlcm1fb2YoZHApKSB7XG4gIC8vIEluZGl2aXNpYmxlIGZvcm1zIG5ldmVyIG5lZWQgcGFyZW50aGVzZXMgYXJvdW5kIHRoZW1cbiAgfCBFbXB0eUhvbGVcbiAgfCBXaWxkXG4gIHwgSW52YWxpZChfKVxuICB8IFZhcihfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgQm9vbChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pID0+IFByZWNlZGVuY2UubWF4XG5cbiAgLy8gU2FtZSBnb2VzIGZvciBmb3JtcyB3aGljaCBhcmUgYWxyZWFkeSBzdXJyb3VuZGVkXG4gIHwgTGlzdExpdChfKVxuICB8IFBhcmVucyhfKSA9PiBQcmVjZWRlbmNlLm1heFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgQ29ucyhfKSA9PiBQcmVjZWRlbmNlLmNvbnNcbiAgfCBBcChfKSA9PiBQcmVjZWRlbmNlLmFwXG4gIHwgQ2FzdChfKSA9PiBQcmVjZWRlbmNlLmFublxuICB8IFR1cGxlKF8pID0+IFByZWNlZGVuY2UucHJvZFxuXG4gIC8vIE1hdHQ6IEkgdGhpbmsgbXVsdGlob2xlcyBhcmUgbWluIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB0aGUgcHJlY2VkZW5jZSBvZiB0aGUgYOKfqT/in6hgc1xuICB8IE11bHRpSG9sZShfKSA9PiBQcmVjZWRlbmNlLm1pblxuICB9O1xuXG5sZXQgZXh0ZXJhbF9wcmVjZWRlbmNlX3R5cCA9ICh0cDogVHlwLnQpID0+XG4gIHN3aXRjaCAoVHlwLnRlcm1fb2YodHApKSB7XG4gIC8vIEluZGl2aXNpYmxlIGZvcm1zIG5ldmVyIG5lZWQgcGFyZW50aGVzZXMgYXJvdW5kIHRoZW1cbiAgfCBVbmtub3duKEhvbGUoSW52YWxpZChfKSkpXG4gIHwgVW5rbm93bihJbnRlcm5hbClcbiAgfCBVbmtub3duKFN5blN3aXRjaClcbiAgfCBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSlcbiAgfCBWYXIoXylcbiAgfCBJbnRcbiAgfCBGbG9hdFxuICB8IEJvb2xcbiAgfCBTdHJpbmcgPT4gUHJlY2VkZW5jZS5tYXhcblxuICAvLyBTYW1lIGdvZXMgZm9yIGZvcm1zIHdoaWNoIGFyZSBhbHJlYWR5IHN1cnJvdW5kZWRcbiAgfCBQYXJlbnMoXylcbiAgfCBMaXN0KF8pID0+IFByZWNlZGVuY2UubWF4XG5cbiAgLy8gT3RoZXIgZm9ybXNcbiAgfCBQcm9kKF8pID0+IFByZWNlZGVuY2UucHJvZFxuICB8IEFwKF8pID0+IFByZWNlZGVuY2UuYXBcbiAgfCBBcnJvdyhfLCBfKSA9PiBQcmVjZWRlbmNlLnBvd2VyXG4gIHwgU3VtKF8pID0+IFByZWNlZGVuY2UucGx1c1xuICB8IFJlYyhfLCBfKSA9PiBQcmVjZWRlbmNlLmxldF9cbiAgfCBGb3JhbGwoXywgXykgPT4gUHJlY2VkZW5jZS5sZXRfXG5cbiAgLy8gTWF0dDogSSB0aGluayBtdWx0aWhvbGVzIGFyZSBtaW4gYmVjYXVzZSB3ZSBkb24ndCBrbm93IHRoZSBwcmVjZWRlbmNlIG9mIHRoZSBg4p+pP+KfqGBzXG4gIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZShfKSkpID0+IFByZWNlZGVuY2UubWluXG4gIH07XG5cbmxldCBwYXJlbl9hdCA9IChpbnRlcm5hbF9wcmVjZWRlbmNlOiBQcmVjZWRlbmNlLnQsIGV4cDogRXhwLnQpOiBFeHAudCA9PlxuICBleHRlcm5hbF9wcmVjZWRlbmNlKGV4cCkgPj0gaW50ZXJuYWxfcHJlY2VkZW5jZVxuICAgID8gRXhwLmZyZXNoKFBhcmVucyhleHApKSA6IGV4cDtcblxubGV0IHBhcmVuX2Fzc29jX2F0ID0gKGludGVybmFsX3ByZWNlZGVuY2U6IFByZWNlZGVuY2UudCwgZXhwOiBFeHAudCk6IEV4cC50ID0+XG4gIGV4dGVybmFsX3ByZWNlZGVuY2UoZXhwKSA+IGludGVybmFsX3ByZWNlZGVuY2VcbiAgICA/IEV4cC5mcmVzaChQYXJlbnMoZXhwKSkgOiBleHA7XG5cbmxldCBwYXJlbl9wYXRfYXQgPSAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCBwYXQ6IFBhdC50KTogUGF0LnQgPT5cbiAgZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQocGF0KSA+PSBpbnRlcm5hbF9wcmVjZWRlbmNlXG4gICAgPyBQYXQuZnJlc2goUGFyZW5zKHBhdCkpIDogcGF0O1xuXG5sZXQgcGFyZW5fcGF0X2Fzc29jX2F0ID1cbiAgICAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCBwYXQ6IFBhdC50KTogUGF0LnQgPT5cbiAgZXh0ZXJuYWxfcHJlY2VkZW5jZV9wYXQocGF0KSA+IGludGVybmFsX3ByZWNlZGVuY2VcbiAgICA/IFBhdC5mcmVzaChQYXJlbnMocGF0KSkgOiBwYXQ7XG5cbmxldCBwYXJlbl90eXBfYXQgPSAoaW50ZXJuYWxfcHJlY2VkZW5jZTogUHJlY2VkZW5jZS50LCB0eXA6IFR5cC50KTogVHlwLnQgPT5cbiAgZXh0ZXJhbF9wcmVjZWRlbmNlX3R5cCh0eXApID49IGludGVybmFsX3ByZWNlZGVuY2VcbiAgICA/IFR5cC5mcmVzaChQYXJlbnModHlwKSkgOiB0eXA7XG5cbmxldCBwYXJlbl90eXBfYXNzb2NfYXQgPVxuICAgIChpbnRlcm5hbF9wcmVjZWRlbmNlOiBQcmVjZWRlbmNlLnQsIHR5cDogVHlwLnQpOiBUeXAudCA9PlxuICBleHRlcmFsX3ByZWNlZGVuY2VfdHlwKHR5cCkgPiBpbnRlcm5hbF9wcmVjZWRlbmNlXG4gICAgPyBUeXAuZnJlc2goUGFyZW5zKHR5cCkpIDogdHlwO1xuXG5sZXQgcmVjIHBhcmVudGhlc2l6ZSA9IChleHA6IEV4cC50KTogRXhwLnQgPT4ge1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSBFeHAudW53cmFwKGV4cCk7XG4gIHN3aXRjaCAodGVybSkge1xuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBkb250JyBjaGFuZ2VcbiAgfCBWYXIoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBEZWZlcnJhbChfKVxuICB8IEJ1aWx0aW5GdW4oXykgPT4gZXhwXG5cbiAgLy8gRm9ybXMgdGhhdCBjdXJyZW50bHkgbmVlZCB0byBzdHJpcHBlZCBiZWZvcmUgb3V0dXR0aW5nXG4gIHwgQ2xvc3VyZShfLCB4KVxuICB8IER5bmFtaWNFcnJvckhvbGUoeCwgXylcbiAgfCBUdXBsZShbeF0pXG4gIHwgRmlsdGVyKF8sIHgpXG4gIHwgQ2FzdCh4LCBfLCBfKVxuICB8IEZhaWxlZENhc3QoeCwgXywgXykgPT4geCB8PiBwYXJlbnRoZXNpemVcblxuICAvLyBPdGhlciBmb3Jtc1xuICB8IEZ1bihwLCBlLCBjLCBuKSA9PlxuICAgIEZ1bihcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmZ1bl8pLFxuICAgICAgYywgLy8gVE9ETzogUGFyZW50aGVzaXplIHRocm91Z2ggY2xvc3VyZVxuICAgICAgbixcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVHlwRnVuKHRwLCBlLCBuKSA9PlxuICAgIFR5cEZ1bih0cCwgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2UuZnVuXyksIG4pXG4gICAgfD4gcmV3cmFwXG4gIHwgVHVwbGUoZXMpID0+XG4gICAgVHVwbGUoXG4gICAgICBlcyB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemUpIHw+IExpc3QubWFwKHBhcmVuX2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMaXN0TGl0KGVzKSA9PlxuICAgIExpc3RMaXQoXG4gICAgICBlcyB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemUpIHw+IExpc3QubWFwKHBhcmVuX2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMZXQocCwgZTEsIGUyKSA9PlxuICAgIExldChcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgICAgcGFyZW50aGVzaXplKGUyKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmxldF8pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBGaXhGKHAsIGUsIGMpID0+XG4gICAgRml4RihcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmZ1bl8pLFxuICAgICAgYyAvLyBUT0RPOiBQYXJlbnRoZXNpemUgdGhyb3VnaCBjbG9zdXJlXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFR5QWxpYXModHAsIHQsIGUpID0+XG4gICAgVHlBbGlhcyhcbiAgICAgIHRwLFxuICAgICAgdCwgLy8gVE9ETzogVHlwZXNcbiAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmxldF8pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBBcChGb3J3YXJkLCBlMSwgZTIpID0+XG4gICAgQXAoXG4gICAgICBGb3J3YXJkLFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmFwKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMikgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBBcChSZXZlcnNlLCBlMSwgZTIpID0+XG4gICAgQXAoXG4gICAgICBSZXZlcnNlLFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmVxcyksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UuZXFzKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVHlwQXAoZSwgdHApID0+XG4gICAgVHlwQXAoXG4gICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5hcCksXG4gICAgICBwYXJlbnRoZXNpemVfdHlwKHRwKSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBEZWZlcnJlZEFwKGUsIGVzKSA9PlxuICAgIERlZmVycmVkQXAoXG4gICAgICBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5hcCksXG4gICAgICBlcyB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemUpIHw+IExpc3QubWFwKHBhcmVuX2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBJZihlMSwgZTIsIGUzKSA9PlxuICAgIElmKFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbiksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHBhcmVudGhlc2l6ZShlMykgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5pZl8pLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBTZXEoZTEsIGUyKSA9PlxuICAgIFNlcShcbiAgICAgIHBhcmVudGhlc2l6ZShlMSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5zZW1pKSwgLy8gdGVtcHRpbmcgdG8gbWFrZSB0aGlzIG9uZSBhc3NvYyB0b29cbiAgICAgIHBhcmVudGhlc2l6ZShlMikgfD4gcGFyZW5fYXNzb2NfYXQoUHJlY2VkZW5jZS5zZW1pKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVGVzdChlKSA9PiBUZXN0KHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbikpIHw+IHJld3JhcFxuICAvLyB8IEZpbHRlcihmLCBlKSA9PlxuICAvLyAgIEZpbHRlcihcbiAgLy8gICAgIGYsIC8vIFRPRE86IEZpbHRlcnNcbiAgLy8gICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm1pbiksXG4gIC8vICAgKVxuICAvLyAgIHw+IHJld3JhcFxuICB8IFBhcmVucyhlKSA9PlxuICAgIFBhcmVucyhwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5taW4pKSB8PiByZXdyYXBcbiAgfCBDb25zKGUxLCBlMikgPT5cbiAgICBDb25zKFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLmNvbnMpLFxuICAgICAgcGFyZW50aGVzaXplKGUyKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmNvbnMpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMaXN0Q29uY2F0KGUxLCBlMikgPT5cbiAgICBMaXN0Q29uY2F0KFxuICAgICAgcGFyZW50aGVzaXplKGUxKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLmNvbmNhdCksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2UuY29uY2F0KSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgVW5PcChNZXRhKFVucXVvdGUpLCBlKSA9PlxuICAgIFVuT3AoTWV0YShVbnF1b3RlKSwgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UudW5xdW90ZSkpXG4gICAgfD4gcmV3cmFwXG4gIHwgVW5PcChCb29sKE5vdCksIGUpID0+XG4gICAgVW5PcChCb29sKE5vdCksIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hdChQcmVjZWRlbmNlLm5vdF8pKSB8PiByZXdyYXBcbiAgfCBVbk9wKEludChNaW51cyksIGUpID0+XG4gICAgVW5PcChJbnQoTWludXMpLCBwYXJlbnRoZXNpemUoZSkgfD4gcGFyZW5fYXQoUHJlY2VkZW5jZS5uZWcpKSB8PiByZXdyYXBcbiAgfCBCaW5PcChvcCwgZTEsIGUyKSA9PlxuICAgIEJpbk9wKFxuICAgICAgb3AsXG4gICAgICBwYXJlbnRoZXNpemUoZTEpIHw+IHBhcmVuX2Fzc29jX2F0KFByZWNlZGVuY2Uub2ZfYmluX29wKG9wKSksXG4gICAgICBwYXJlbnRoZXNpemUoZTIpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2Uub2ZfYmluX29wKG9wKSksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IE1hdGNoKGUsIHJzKSA9PlxuICAgIE1hdGNoKFxuICAgICAgcGFyZW50aGVzaXplKGUpIHw+IHBhcmVuX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICAgIHJzXG4gICAgICB8PiBMaXN0Lm1hcCgoKHAsIGUpKSA9PlxuICAgICAgICAgICAoXG4gICAgICAgICAgICAgcGFyZW50aGVzaXplX3BhdChwKSB8PiBwYXJlbl9wYXRfYXQoUHJlY2VkZW5jZS5taW4pLFxuICAgICAgICAgICAgIHBhcmVudGhlc2l6ZShlKSB8PiBwYXJlbl9hc3NvY19hdChQcmVjZWRlbmNlLmNhc2VfKSxcbiAgICAgICAgICAgKVxuICAgICAgICAgKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgTXVsdGlIb2xlKF8pID0+IGV4cCAvLyBUT0RPOiBQYXJlbnRoZXNpemUgdGhyb3VnaCBtdWx0aWhvbGVzXG4gIH07XG59XG5hbmQgcGFyZW50aGVzaXplX3BhdCA9IChwYXQ6IFBhdC50KTogUGF0LnQgPT4ge1xuICBsZXQgKHRlcm0sIHJld3JhcCkgPSBQYXQudW53cmFwKHBhdCk7XG4gIHN3aXRjaCAodGVybSkge1xuICAvLyBJbmRpdmlzaWJsZSBmb3JtcyBkb250JyBjaGFuZ2VcbiAgfCBWYXIoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gcGF0XG5cbiAgLy8gT3RoZXIgZm9ybXNcbiAgfCBXaWxkID0+IHBhdFxuICB8IFBhcmVucyhwKSA9PlxuICAgIFBhcmVucyhwYXJlbnRoZXNpemVfcGF0KHApIHw+IHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLm1pbikpIHw+IHJld3JhcFxuICB8IENvbnMocDEsIHAyKSA9PlxuICAgIENvbnMoXG4gICAgICBwYXJlbnRoZXNpemVfcGF0KHAxKSB8PiBwYXJlbl9wYXRfYXQoUHJlY2VkZW5jZS5jb25zKSxcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocDIpIHw+IHBhcmVuX3BhdF9hc3NvY19hdChQcmVjZWRlbmNlLmNvbnMpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBUdXBsZShwcykgPT5cbiAgICBUdXBsZShcbiAgICAgIHBzXG4gICAgICB8PiBMaXN0Lm1hcChwYXJlbnRoZXNpemVfcGF0KVxuICAgICAgfD4gTGlzdC5tYXAocGFyZW5fcGF0X2F0KFByZWNlZGVuY2UucHJvZCkpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfCBMaXN0TGl0KHBzKSA9PlxuICAgIExpc3RMaXQoXG4gICAgICBwc1xuICAgICAgfD4gTGlzdC5tYXAocGFyZW50aGVzaXplX3BhdClcbiAgICAgIHw+IExpc3QubWFwKHBhcmVuX3BhdF9hdChQcmVjZWRlbmNlLnByb2QpKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgQXAocDEsIHAyKSA9PlxuICAgIEFwKFxuICAgICAgcGFyZW50aGVzaXplX3BhdChwMSkgfD4gcGFyZW5fcGF0X2Fzc29jX2F0KFByZWNlZGVuY2UuYXApLFxuICAgICAgcGFyZW50aGVzaXplX3BhdChwMikgfD4gcGFyZW5fcGF0X2F0KFByZWNlZGVuY2UubWluKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgTXVsdGlIb2xlKF8pID0+IHBhdCAvLyBUT0RPOiBQYXJlbnRoZXNpemUgdGhyb3VnaCBtdWx0aWhvbGVzXG4gIHwgQ2FzdChwLCB0MSwgdDIpID0+XG4gICAgQ2FzdChcbiAgICAgIHBhcmVudGhlc2l6ZV9wYXQocCkgfD4gcGFyZW5fcGF0X2Fzc29jX2F0KFByZWNlZGVuY2UuYW5uKSxcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDEpIHw+IHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLm1heCksIC8vIEhhY2tbTWF0dF06IGFsd2F5cyBhZGQgcGFyZW5zIHRvIGdldCB0aGUgYXJyb3dzIHJpZ2h0XG4gICAgICBwYXJlbnRoZXNpemVfdHlwKHQyKSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5tYXgpLFxuICAgIClcbiAgICB8PiByZXdyYXBcbiAgfTtcbn1cblxuYW5kIHBhcmVudGhlc2l6ZV90eXAgPSAodHlwOiBUeXAudCk6IFR5cC50ID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gVHlwLnVud3JhcCh0eXApO1xuICBzd2l0Y2ggKHRlcm0pIHtcbiAgLy8gSW5kaXZpc2libGUgZm9ybXMgZG9udCcgY2hhbmdlXG4gIHwgVmFyKF8pXG4gIHwgVW5rbm93bihIb2xlKEludmFsaWQoXykpKVxuICB8IFVua25vd24oSW50ZXJuYWwpXG4gIHwgVW5rbm93bihTeW5Td2l0Y2gpXG4gIHwgVW5rbm93bihIb2xlKEVtcHR5SG9sZSkpXG4gIHwgSW50XG4gIHwgRmxvYXRcbiAgfCBCb29sXG4gIHwgU3RyaW5nID0+IHR5cFxuXG4gIC8vIE90aGVyIGZvcm1zXG4gIHwgUGFyZW5zKHQpID0+XG4gICAgUGFyZW5zKHBhcmVudGhlc2l6ZV90eXAodCkgfD4gcGFyZW5fdHlwX2F0KFByZWNlZGVuY2UubWluKSkgfD4gcmV3cmFwXG4gIHwgTGlzdCh0KSA9PlxuICAgIExpc3QocGFyZW50aGVzaXplX3R5cCh0KSB8PiBwYXJlbl90eXBfYXQoUHJlY2VkZW5jZS5taW4pKSB8PiByZXdyYXBcbiAgfCBQcm9kKHRzKSA9PlxuICAgIFByb2QoXG4gICAgICB0c1xuICAgICAgfD4gTGlzdC5tYXAocGFyZW50aGVzaXplX3R5cClcbiAgICAgIHw+IExpc3QubWFwKHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLnByb2QpKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgQXAodDEsIHQyKSA9PlxuICAgIEFwKFxuICAgICAgcGFyZW50aGVzaXplX3R5cCh0MSkgfD4gcGFyZW5fdHlwX2Fzc29jX2F0KFByZWNlZGVuY2UuYXApLFxuICAgICAgcGFyZW50aGVzaXplX3R5cCh0MikgfD4gcGFyZW5fdHlwX2F0KFByZWNlZGVuY2UubWluKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgUmVjKHRwLCB0KSA9PlxuICAgIFJlYyh0cCwgcGFyZW50aGVzaXplX3R5cCh0KSB8PiBwYXJlbl90eXBfYXNzb2NfYXQoUHJlY2VkZW5jZS5sZXRfKSlcbiAgICB8PiByZXdyYXBcbiAgfCBGb3JhbGwodHAsIHQpID0+XG4gICAgRm9yYWxsKHRwLCBwYXJlbnRoZXNpemVfdHlwKHQpIHw+IHBhcmVuX3R5cF9hc3NvY19hdChQcmVjZWRlbmNlLmxldF8pKVxuICAgIHw+IHJld3JhcFxuICB8IEFycm93KHQxLCB0MikgPT5cbiAgICBBcnJvdyhcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDEpIHw+IHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLnBvd2VyKSxcbiAgICAgIHBhcmVudGhlc2l6ZV90eXAodDIpIHw+IHBhcmVuX3R5cF9hc3NvY19hdChQcmVjZWRlbmNlLnBvd2VyKSxcbiAgICApXG4gICAgfD4gcmV3cmFwXG4gIHwgU3VtKHRzKSA9PlxuICAgIFN1bShcbiAgICAgIENvbnN0cnVjdG9yTWFwLm1hcChcbiAgICAgICAgdHMgPT5cbiAgICAgICAgICB0c1xuICAgICAgICAgIHw+IE9wdGlvbi5tYXAocGFyZW50aGVzaXplX3R5cClcbiAgICAgICAgICB8PiBPcHRpb24ubWFwKHBhcmVuX3R5cF9hdChQcmVjZWRlbmNlLm1pbikpLFxuICAgICAgICB0cyxcbiAgICAgICksXG4gICAgKVxuICAgIHw+IHJld3JhcFxuICB8IFVua25vd24oSG9sZShNdWx0aUhvbGUoXykpKSA9PiB0eXAgLy8gVE9ETzogUGFyZW50aGVzaXplIHRocm91Z2ggbXVsdGlob2xlc1xuICB9O1xufTtcblxubGV0IGV4cF90b19lZGl0b3IgPSAofmlubGluZSwgZXhwOiBFeHAudCk6IEVkaXRvci50ID0+IHtcbiAgbGV0IGV4cCA9IHBhcmVudGhlc2l6ZShleHApO1xuICBsZXQgcCA9IGV4cF90b19wcmV0dHkofmlubGluZSwgZXhwKTtcbiAgbGV0IHNlZyA9IHAgfD4gUHJldHR5U2VnbWVudC5zZWxlY3Q7XG4gIEVkaXRvci5pbml0KH5yZWFkX29ubHk9dHJ1ZSwgWmlwcGVyLnVuemlwKHNlZykpO1xufTtcbiIsIm9wZW4gVXRpbDtcbm9wZW4gWmlwcGVyO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxudHlwZSByZWxhdGlvbiA9XG4gIHwgUGFyZW50XG4gIHwgU2libGluZztcblxubGV0IHBpZWNlJyA9XG4gICAgKH5ub193czogYm9vbCwgfmlnbjogUGllY2UudCA9PiBib29sLCB+dHJpbV9zZWNvbmRhcnk9ZmFsc2UsIHo6IFppcHBlci50KVxuICAgIDogb3B0aW9uKChQaWVjZS50LCBEaXJlY3Rpb24udCwgcmVsYXRpb24pKSA9PiB7XG4gIGxldCBzaWJzID1cbiAgICB0cmltX3NlY29uZGFyeVxuICAgICAgPyBzaWJzX3dpdGhfc2VsKHopIHw+IFNpYmxpbmdzLnRyaW1fc2Vjb25kYXJ5IDogc2lic193aXRoX3NlbCh6KTtcbiAgLyogUmV0dXJucyB0aGUgcGllY2UgY3VycmVudGx5IGluZGljYXRlZCAoaWYgYW55KSBhbmQgd2hpY2ggc2lkZSBvZlxuICAgICB0aGF0IHBpZWNlIHRoZSBjYXJldCBpcyBvbi4gV2UgZmF2b3IgaW5kaWNhdGluZyB0aGUgcGllY2UgdG8gdGhlXG4gICAgIChSKWlnaHQsIGJ1dCBtYXkgZW5kIHVwIGluZGljYXRpbmcgdGhlIChQKWFyZW50IG9yIHRoZSAoTCllZnQuXG4gICAgIFdlIGRvbid0IGluZGljYXRlIHNlY29uZGFyeSB0aWxlcy4gVGhpcyBmdW5jdGlvbiBpZ25vcmVzIHdoZXRoZXJcbiAgICAgb3Igbm90IHRoZXJlIGlzIGEgc2VsZWN0aW9uIHNvIHRoaXMgY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBjYXJldFxuICAgICBkaXJlY3Rpb24sIGJ1dCB0aGUgY2FsbGVyIHNob3VsZG4ndCBpbmRpY2F0ZSBpZiB0aGVyZSdzIGEgc2VsZWN0aW9uICovXG4gIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHNpYnMpLCBwYXJlbnQoeikpIHtcbiAgLyogTm9uLWVtcHR5IHNlbGVjdGlvbiA9PiBubyBpbmRpY2F0aW9uICovXG4gIC8vfCBfIHdoZW4gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA9PiBOb25lXG4gIC8qIEVtcHR5IHN5bnRheCA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChOb25lLCBOb25lKSwgTm9uZSkgPT4gTm9uZVxuICAvKiBMIG5vdCBzZWNvbmRhcnksIFIgaXMgc2Vjb25kYXJ5ID0+IGluZGljYXRlIEwgKi9cbiAgfCAoKFNvbWUobCksIFNvbWUocikpLCBfKSB3aGVuICFpZ24obCkgJiYgaWduKHIpID0+XG4gICAgU29tZSgobCwgTGVmdCwgU2libGluZykpXG4gIC8qIEwgYW5kIFIgYXJlIHNlY29uZGFyeXMgPT4gbm8gaW5kaWNhdGlvbiAqL1xuICB8ICgoU29tZShsKSwgU29tZShyKSksIF8pIHdoZW4gaWduKGwpICYmIGlnbihyKSA9PlxuICAgIG5vX3dzID8gTm9uZSA6IFNvbWUoKGwsIExlZnQsIFNpYmxpbmcpKVxuICAvKiBBdCByaWdodCBlbmQgb2Ygc3ludGF4IGFuZCBMIGlzIHNlY29uZGFyeSA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChTb21lKGwpLCBOb25lKSwgTm9uZSkgd2hlbiBpZ24obCkgPT5cbiAgICBub193cyA/IE5vbmUgOiBTb21lKChsLCBMZWZ0LCBTaWJsaW5nKSlcbiAgLyogQXQgbGVmdCBlbmQgb2Ygc3ludGF4IGFuZCBSIGlzIHNlY29uZGFyeSA9PiBubyBpbmRpY2F0aW9uICovXG4gIHwgKChOb25lLCBTb21lKHIpKSwgTm9uZSkgd2hlbiBpZ24ocikgPT5cbiAgICBub193cyA/IE5vbmUgOiBTb21lKChyLCBSaWdodCwgU2libGluZykpXG4gIC8qIE5vIEwgYW5kIFIgaXMgYSBzZWNvbmRhcnkgYW5kIHRoZXJlIGlzIGEgUCA9PiBpbmRpY2F0ZSBQICovXG4gIHwgKChOb25lLCBTb21lKHIpKSwgU29tZShwYXJlbnQpKSB3aGVuIGlnbihyKSA9PlxuICAgIFNvbWUoKHBhcmVudCwgTGVmdCwgUGFyZW50KSlcbiAgLyogTCBpcyBub3Qgc2Vjb25kYXJ5IGFuZCBjYXJldCBpcyBvdXRlciA9PiBpbmRpY2F0ZSBMICovXG4gIHwgKChTb21lKGwpLCBfKSwgXykgd2hlbiAhaWduKGwpICYmIHouY2FyZXQgPT0gT3V0ZXIgPT5cbiAgICBTb21lKChsLCBMZWZ0LCBTaWJsaW5nKSlcbiAgLyogTm8gTCwgc29tZSBQLCBhbmQgY2FyZXQgaXMgb3V0ZXIgPT4gaW5kaWNhdGUgUiAqL1xuICB8ICgoTm9uZSwgXyksIFNvbWUocGFyZW50KSkgd2hlbiB6LmNhcmV0ID09IE91dGVyID0+XG4gICAgU29tZSgocGFyZW50LCBMZWZ0LCBQYXJlbnQpKVxuICAvKiBSIGlzIG5vdCBzZWNvbmRhcnksIGVpdGhlciBubyBMIG9yIEwgaXMgc2Vjb25kYXJ5IG9yIGNhcmV0IGlzIGlubmVyID0+IGluZGljYXRlIFIgKi9cbiAgfCAoKF8sIFNvbWUocikpLCBfKSA9PiBTb21lKChyLCBSaWdodCwgU2libGluZykpXG4gIC8qIE5vIFIgYW5kIHRoZXJlIGlzIGEgUCA9PiBpbmRpY2F0ZSBQICovXG4gIHwgKChfLCBOb25lKSwgU29tZShwYXJlbnQpKSA9PiBTb21lKChwYXJlbnQsIFJpZ2h0LCBQYXJlbnQpKVxuICAvKiBUaGVyZSBpcyBhbiBMIGJ1dCBubyBSIGFuZCBubyBQID0+IGluZGljYXRlIEwgKi9cbiAgLy9UT0RPKGFuZHJldyk6IFJpZ2h0IGJlbG93IHNlZW1zIHdyb25nIGJ1dCBpdCBnZXRzIGZ1Y2t5IG90aGVyd2lzZVxuICB8ICgoU29tZShsKSwgTm9uZSksIE5vbmUpID0+IFNvbWUoKGwsIFJpZ2h0LCBTaWJsaW5nKSlcbiAgfTtcbn07XG5cbmxldCBwaWVjZSA9XG4gIHBpZWNlJyh+bm9fd3M9dHJ1ZSwgfmlnbj1wID0+IFBpZWNlLihpc19zZWNvbmRhcnkocCkgfHwgaXNfZ3JvdXQocCkpKTtcblxubGV0IHNoYXJkX2luZGV4ID0gKHo6IFppcHBlci50KTogb3B0aW9uKGludCkgPT5cbiAgc3dpdGNoIChwaWVjZSh6KSkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoKHAsIHNpZGUsIHJlbGF0aW9uKSkgPT5cbiAgICBzd2l0Y2ggKHJlbGF0aW9uKSB7XG4gICAgfCBQYXJlbnQgPT5cbiAgICAgIHN3aXRjaCAoQW5jZXN0b3JzLnBhcmVudCh6LnJlbGF0aXZlcy5hbmNlc3RvcnMpKSB7XG4gICAgICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJpbmRpY2F0ZWRfc2hhcmRfaW5kZXggaW1wb3NzaWJsZVwiKVxuICAgICAgfCBTb21lKHtjaGlsZHJlbjogKGJlZm9yZSwgXyksIF99KSA9PlxuICAgICAgICBsZXQgYmVmb3JlID0gTGlzdC5sZW5ndGgoYmVmb3JlKTtcbiAgICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gICAgICAgIHwgKF8sIE5vbmUpID0+IFNvbWUoYmVmb3JlICsgMSlcbiAgICAgICAgfCBfID0+IFNvbWUoYmVmb3JlKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIHwgU2libGluZyA9PlxuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IFNlY29uZGFyeShfKVxuICAgICAgfCBHcm91dChfKSA9PiBTb21lKDApXG4gICAgICB8IFRpbGUodCkgPT5cbiAgICAgICAgc3dpdGNoIChzaWRlKSB7XG4gICAgICAgIHwgTGVmdCA9PiBTb21lKExpc3QubGVuZ3RoKHQuY2hpbGRyZW4pKVxuICAgICAgICB8IFJpZ2h0ID0+IFNvbWUoMClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxubGV0IGluZGV4ID0gKHo6IFppcHBlci50KTogb3B0aW9uKElkLnQpID0+XG4gIHN3aXRjaCAoXG4gICAgcGllY2UnKH5ub193cz1mYWxzZSwgfmlnbj1QaWVjZS5pc19zZWNvbmRhcnksIH50cmltX3NlY29uZGFyeT1mYWxzZSwgeilcbiAgKSB7XG4gIHwgTm9uZSA9PiBOb25lXG4gIHwgU29tZSgocCwgXywgXykpID0+IFNvbWUoUGllY2UuaWQocCkpXG4gIH07XG5cbmxldCBjaV9vZiA9ICh6OiBaaXBwZXIudCwgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQpOiBvcHRpb24oU3RhdGljcy5JbmZvLnQpID0+XG4gIC8qIFRoaXMgdmVyc2lvbiB0YWtlcyBpbnRvIGFjY291bnRzIFNlY29uZGFyeSwgd2hpbGUgYWNjb3VudGluZyBmb3IgdGhlXG4gICAqIGZhY3QgdGhhdCBTZWNvbmRhcnkgaXMgbm90IGN1cnJlbnRseSBhZGRlZCB0byB0aGUgaW5mb19tYXAuIEZpcnN0IHdlXG4gICAqIHRyeSB0aGUgYmFzaWMgaW5kaWNhdGlvbiBmdW5jdGlvbiwgc3BlY2lmeWluZyB0aGF0IHdlIGRvIG5vdCB3YW50XG4gICAqIFNlY29uZGFyeS4gQnV0IGlmIHRoaXMgZG9lc24ndCBzdWNjZWVkLCB0aGVuIHdlIGNyZWF0ZSBhICd2aXJ0dWFsJ1xuICAgKiBpbmZvIG1hcCBlbnRyeSByZXByZXNlbnRpbmcgdGhlIFNlY29uZGFyeSBub3RhdGlvbiwgd2hpY2ggdGFrZXMgb25cbiAgICogc29tZSBvZiB0aGUgc2VtYW50aWMgY29udGV4dCBvZiBhIG5lYXJieSAncHJveHknIHRlcm0gKi9cbiAgc3dpdGNoIChcbiAgICBwaWVjZScofm5vX3dzPXRydWUsIH5pZ249UGllY2UuaXNfc2Vjb25kYXJ5LCB+dHJpbV9zZWNvbmRhcnk9ZmFsc2UsIHopXG4gICkge1xuICB8IFNvbWUoKHAsIF8sIF8pKSA9PiBJZC5NYXAuZmluZF9vcHQoUGllY2UuaWQocCksIGluZm9fbWFwKVxuICB8IE5vbmUgPT5cbiAgICBsZXQgc2licyA9IHNpYnNfd2l0aF9zZWwoeik7XG4gICAgbGV0KiBjbHMgPVxuICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoc2licykpIHtcbiAgICAgIC8qIElmIG9uIHNpZGUgb2YgY29tbWVudCwgc2F5IHdlJ3JlIG9uIGNvbW1lbnQgKi9cbiAgICAgIHwgKFNvbWUoU2Vjb25kYXJ5KHNsKSksIFNvbWUoU2Vjb25kYXJ5KF8pKSlcbiAgICAgICAgICB3aGVuIFNlY29uZGFyeS5pc19jb21tZW50KHNsKSA9PlxuICAgICAgICBTb21lKFNlY29uZGFyeS5jbHNfb2Yoc2wpKVxuICAgICAgfCAoU29tZShTZWNvbmRhcnkoXykpLCBTb21lKFNlY29uZGFyeShzcikpKVxuICAgICAgICAgIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQoc3IpID0+XG4gICAgICAgIFNvbWUoU2Vjb25kYXJ5LmNsc19vZihzcikpXG4gICAgICB8IChfLCBTb21lKFNlY29uZGFyeShzKSkpXG4gICAgICB8IChTb21lKFNlY29uZGFyeShzKSksIF8pID0+IFNvbWUoU2Vjb25kYXJ5LmNsc19vZihzKSlcbiAgICAgIHwgXyA9PiBOb25lXG4gICAgICB9O1xuICAgIGxldCogcHJveHlfaWQgPVxuICAgICAgc3dpdGNoIChTaWJsaW5ncy5uZWlnaGJvcnMoU2libGluZ3MudHJpbV9zZWNvbmRhcnkoc2licykpKSB7XG4gICAgICB8IChfLCBTb21lKHApKVxuICAgICAgfCAoU29tZShwKSwgXykgPT4gU29tZShQaWVjZS5pZChwKSlcbiAgICAgIHwgXyA9PiBOb25lXG4gICAgICB9O1xuICAgIGxldCsgY2kgPSBJZC5NYXAuZmluZF9vcHQocHJveHlfaWQsIGluZm9fbWFwKTtcbiAgICBJbmZvLlNlY29uZGFyeSh7XG4gICAgICBpZDogcHJveHlfaWQsXG4gICAgICBjbHM6IFNlY29uZGFyeShjbHMpLFxuICAgICAgc29ydDogSW5mby5zb3J0X29mKGNpKSxcbiAgICAgIGN0eDogSW5mby5jdHhfb2YoY2kpLFxuICAgIH0pO1xuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLyoqXG4gIFRoZSByZXN1bHQgb2YgYSBwcm9ncmFtIGV2YWx1YXRpb24uIEluY2x1ZGVzIHRoZSB7IXR5cGU6RXZhbHVhdG9yUmVzdWx0LnR9LFxuICB0aGUgeyF0eXBlOkV2YWx1YXRvclN0YXRlfSwgYW5kIHRoZSB0cmFja2VkIGhvbGUgaW5zdGFuY2UgaW5mb3JtYXRpb25cbiAgKHshdHlwZTpIb2xlSW5zdGFuY2VJbmZvLnR9KS4gQ29uc3RydWN0ZWQgYnkgeyF2YWw6UHJvZ3JhbS5nZXRfcmVzdWx0fS5cbiAqL1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBpbm5lciA9IHtcbiAgcmVzdWx0OiBFdmFsdWF0b3IuUmVzdWx0LnQsXG4gIGVkaXRvcjogRWRpdG9yLnQsXG4gIHN0YXRlOiBFdmFsdWF0b3JTdGF0ZS50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlcnJvciA9XG4gIHwgVGltZW91dFxuICB8IEV2YXVsYXRvckVycm9yKEV2YWx1YXRvckVycm9yLnQpXG4gIHwgVW5rbm93bkV4Y2VwdGlvbihzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICB8IE9mZihFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpXG4gIHwgUmVzdWx0T2soaW5uZXIpXG4gIHwgUmVzdWx0RmFpbChlcnJvcilcbiAgfCBSZXN1bHRQZW5kaW5nO1xuXG5sZXQgZ2V0X2RoZXhwID0gKHI6IGlubmVyKSA9PiBFdmFsdWF0b3IuUmVzdWx0LnVuYm94KHIucmVzdWx0KTtcbmxldCBnZXRfc3RhdGUgPSAocjogaW5uZXIpID0+IHIuc3RhdGU7XG4iLCJtb2R1bGUgQ29yZVN0YXRpY3MgPSBTdGF0aWNzO1xuXG5tb2R1bGUgU3RhdGljcyA9IHtcbiAgbGV0IG1rX21hcCcgPVxuICAgIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIGUgPT4ge1xuICAgICAgU3RhdGljcy51ZXhwX3RvX2luZm9fbWFwKFxuICAgICAgICB+Y3R4PUJ1aWx0aW5zLmN0eF9pbml0LFxuICAgICAgICB+YW5jZXN0b3JzPVtdLFxuICAgICAgICBlLFxuICAgICAgICBJZC5NYXAuZW1wdHksXG4gICAgICApXG4gICAgICB8PiBzbmRcbiAgICB9KTtcbiAgbGV0IG1rX21hcCA9IChjb3JlOiBDb3JlU2V0dGluZ3MudCwgZXhwKSA9PlxuICAgIGNvcmUuc3RhdGljcyA/IG1rX21hcCcoZXhwKSA6IElkLk1hcC5lbXB0eTtcblxuICBsZXQgbWtfbWFwX2FuZF9pbmZvX2N0eCA9XG4gICAgQ29yZS5NZW1vLmdlbmVyYWwofmNhY2hlX3NpemVfYm91bmQ9MTAwMCwgKGN0eCwgZSkgPT4ge1xuICAgICAgU3RhdGljcy51ZXhwX3RvX2luZm9fbWFwKH5jdHgsIH5hbmNlc3RvcnM9W10sIGUsIElkLk1hcC5lbXB0eSlcbiAgICB9KTtcbiAgbGV0IG1rX21hcF9hbmRfaW5mb19jdHggPSAoY29yZTogQ29yZVNldHRpbmdzLnQsIGN0eCwgZXhwKSA9PlxuICAgIGNvcmUuc3RhdGljc1xuICAgICAgPyB7XG4gICAgICAgIGxldCAoaW5mbywgbWFwKSA9IG1rX21hcF9hbmRfaW5mb19jdHgoY3R4LCBleHApO1xuICAgICAgICAoU29tZShpbmZvKSwgbWFwKTtcbiAgICAgIH1cbiAgICAgIDogKE5vbmUsIElkLk1hcC5lbXB0eSk7XG5cbiAgbGV0IG1rX21hcF9jdHggPVxuICAgIENvcmUuTWVtby5nZW5lcmFsKH5jYWNoZV9zaXplX2JvdW5kPTEwMDAsIChjdHgsIGUpID0+IHtcbiAgICAgIFN0YXRpY3MudWV4cF90b19pbmZvX21hcCh+Y3R4LCB+YW5jZXN0b3JzPVtdLCBlLCBJZC5NYXAuZW1wdHkpIHw+IHNuZFxuICAgIH0pO1xuICBsZXQgbWtfbWFwX2N0eCA9IChjb3JlOiBDb3JlU2V0dGluZ3MudCwgY3R4LCBleHApID0+XG4gICAgY29yZS5zdGF0aWNzID8gbWtfbWFwX2N0eChjdHgsIGV4cCkgOiBJZC5NYXAuZW1wdHk7XG59O1xuXG5sZXQgZGhfZXJyID0gKGVycm9yOiBzdHJpbmcpOiBESEV4cC50ID0+IFZhcihlcnJvcikgfD4gREhFeHAuZnJlc2g7XG5cbmxldCBlbGFib3JhdGUgPVxuICBDb3JlLk1lbW8uZ2VuZXJhbCh+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwLCBFbGFib3JhdG9yLnVleHBfZWxhYik7XG5cbmV4Y2VwdGlvbiBEb2VzTm90RWxhYm9yYXRlO1xubGV0IGVsYWJvcmF0ZSA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCBtYXAsIHRlcm0pOiBESEV4cC50ID0+XG4gIHN3aXRjaCAoKSB7XG4gIHwgXyB3aGVuICFzZXR0aW5ncy5zdGF0aWNzID0+IGRoX2VycihcIlN0YXRpY3MgZGlzYWJsZWRcIilcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmR5bmFtaWNzICYmICFzZXR0aW5ncy5lbGFib3JhdGUgPT5cbiAgICBkaF9lcnIoXCJEeW5hbWljcyAmIEVsYWJvcmF0aW9uIGRpc2FibGVkXCIpXG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoZWxhYm9yYXRlKG1hcCwgdGVybSkpIHtcbiAgICB8IERvZXNOb3RFbGFib3JhdGUgPT4gZGhfZXJyKFwiRWxhYm9yYXRpb24gcmV0dXJucyBOb25lXCIpXG4gICAgfCBFbGFib3JhdGVzKGQsIF8sIF8pID0+IGRcbiAgICB9XG4gIH07XG5cbmxldCBldmFsdWF0ZSA9XG4gICAgKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIH5lbnY9QnVpbHRpbnMuZW52X2luaXQsIGVsYWI6IERIRXhwLnQpXG4gICAgOiBQcm9ncmFtUmVzdWx0LnQgPT5cbiAgc3dpdGNoICgpIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmR5bmFtaWNzID0+IE9mZih7ZDogZWxhYn0pXG4gIHwgXyA9PlxuICAgIHN3aXRjaCAoRXZhbHVhdG9yLmV2YWx1YXRlKGVudiwge2Q6IGVsYWJ9KSkge1xuICAgIHwgZXhjZXB0aW9uIChFdmFsdWF0b3JFcnJvci5FeGNlcHRpb24ocmVhc29uKSkgPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJFdmFsdWF0b3JFcnJvcjpcIiArKyBFdmFsdWF0b3JFcnJvci5zaG93KHJlYXNvbikpO1xuICAgICAgUmVzdWx0RmFpbChFdmF1bGF0b3JFcnJvcihyZWFzb24pKTtcbiAgICB8IGV4Y2VwdGlvbiBleG4gPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJFWE46XCIgKysgUHJpbnRleGMudG9fc3RyaW5nKGV4bikpO1xuICAgICAgUmVzdWx0RmFpbChVbmtub3duRXhjZXB0aW9uKFByaW50ZXhjLnRvX3N0cmluZyhleG4pKSk7XG4gICAgfCAoc3RhdGUsIHJlc3VsdCkgPT5cbiAgICAgIFJlc3VsdE9rKHtcbiAgICAgICAgcmVzdWx0LFxuICAgICAgICBlZGl0b3I6XG4gICAgICAgICAgRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IoXG4gICAgICAgICAgICB+aW5saW5lPWZhbHNlLFxuICAgICAgICAgICAgRXZhbHVhdG9yLlJlc3VsdC51bmJveChyZXN1bHQpLFxuICAgICAgICAgICksXG4gICAgICAgIHN0YXRlLFxuICAgICAgfSlcbiAgICB9XG4gIH07XG5cbmxldCBldmFsX3ogPVxuICAgIChcbiAgICAgIH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsXG4gICAgICB+Y3R4X2luaXQ6IEN0eC50LFxuICAgICAgfmVudl9pbml0OiBFbnZpcm9ubWVudC50LFxuICAgICAgejogWmlwcGVyLnQsXG4gICAgKVxuICAgIDogUHJvZ3JhbVJlc3VsdC50ID0+IHtcbiAgbGV0ICh0ZXJtLCBfKSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oeik7XG4gIGxldCBpbmZvX21hcCA9IFN0YXRpY3MubWtfbWFwX2N0eChzZXR0aW5ncywgY3R4X2luaXQsIHRlcm0pO1xuICBsZXQgZCA9IGVsYWJvcmF0ZSh+c2V0dGluZ3MsIGluZm9fbWFwLCB0ZXJtKTtcbiAgZXZhbHVhdGUofnNldHRpbmdzLCB+ZW52PWVudl9pbml0LCBkKTtcbn07XG4iLCJvcGVuIFV0aWwuT3B0VXRpbC5TeW50YXg7XG5vcGVuIFN1Z2dlc3Rpb247XG5cbi8qIFN1Z2dlc3QgdGhlIHRva2VuIGF0IHRoZSB0b3Agb2YgdGhlIGJhY2twYWNrLCBpZiB3ZSBjYW4gcHV0IGl0IGRvd24gKi9cbmxldCBzdWdnZXN0X2JhY2twYWNrID0gKHo6IFppcHBlci50KTogbGlzdChTdWdnZXN0aW9uLnQpID0+IHtcbiAgLyogTm90ZTogU29ydCBjaGVjayB1bm5lY2Vzc2FyeSBoZXJlIGFzIHdvdWxkbid0IGJlIGFibGUgdG8gcHV0IGRvd24gKi9cbiAgc3dpdGNoICh6LmJhY2twYWNrKSB7XG4gIHwgW10gPT4gW11cbiAgfCBbe2NvbnRlbnQsIF99LCAuLi5fXSA9PlxuICAgIHN3aXRjaCAoY29udGVudCkge1xuICAgIHwgW1RpbGUoe2xhYmVsLCBzaGFyZHM6IFtpZHhdLCBffSldIHdoZW4gWmlwcGVyLmNhbl9wdXRfZG93bih6KSA9PiBbXG4gICAgICAgIHtjb250ZW50OiBMaXN0Lm50aChsYWJlbCwgaWR4KSwgc3RyYXRlZ3k6IEFueShGcm9tQmFja3BhY2spfSxcbiAgICAgIF1cbiAgICB8IF8gPT4gW11cbiAgICB9XG4gIH07XG59O1xuXG5sZXQgc3VnZ2VzdCA9IChjaTogSW5mby50LCB6OiBaaXBwZXIudCk6IGxpc3QoU3VnZ2VzdGlvbi50KSA9PiB7XG4gIC8qIE5PVEU6IFNvcnRpbmcgZW5zdXJlcyB0aGF0IGlmIHdlIGhhdmUgYW4gZXhhY3QgbWF0Y2ggYWxyZWFkeSxcbiAgICogd2Ugd29uJ3Qgc3VnZ2VzdCBleHRlbmRpbmcgaXQsIGJ1dCBzdHJhaWdodC11cCBsZXhpY2FsIHNvcnRpbmdcbiAgICogbWF5IG5vdCBiZSBkZXNpcmFibGUgaW4gb3RoZXIgd2F5cywgZm9yIGV4YW1wbGUgbWF5YmUgd2Ugd2FudFxuICAgKiByZWNlbmN5IGJpYXMgaW4gY3R4LiBSZXZpc2l0IHRoaXMgbGF0ZXIuIEknbSBzb3J0aW5nIGJlZm9yZVxuICAgKiBjb21iaW5hdGlvbiBiZWNhdXNlIHdlIHdhbnQgYmFja3BhY2sgY2FuZGlkYXRlcyB0byBzaG93IHVwIGZpcnN0ICovXG4gIHN1Z2dlc3RfYmFja3BhY2soeilcbiAgQCAoXG4gICAgQXNzaXN0YW50Rm9ybXMuc3VnZ2VzdF9vcGVyYW5kKGNpKVxuICAgIEAgQXNzaXN0YW50Rm9ybXMuc3VnZ2VzdF9sZWFkaW5nKGNpKVxuICAgIEAgQXNzaXN0YW50Q3R4LnN1Z2dlc3RfdmFyaWFibGUoY2kpXG4gICAgQCBBc3Npc3RhbnRDdHguc3VnZ2VzdF9sb29rYWhlYWRfdmFyaWFibGUoY2kpXG4gICAgfD4gTGlzdC5zb3J0KFN1Z2dlc3Rpb24uY29tcGFyZSlcbiAgKVxuICBAIChBc3Npc3RhbnRGb3Jtcy5zdWdnZXN0X29wZXJhdG9yKGNpKSB8PiBMaXN0LnNvcnQoU3VnZ2VzdGlvbi5jb21wYXJlKSk7XG59O1xuXG4vKiBJZiB0aGVyZSBpcyBhIG1vbm90aWxlIHRvIHRoZSBsZWZ0IG9mIHRoZSBjYXJldCwgcmV0dXJuIGl0LiBXZVxuICogY3VycmVudGx5IG9ubHkgbWFrZSBzdWdnZXN0aW9ucyBpbiBzdWNoIHNpdHVhdGlvbnMgKi9cbmxldCB0b2tlbl90b19sZWZ0ID0gKHo6IFppcHBlci50KTogb3B0aW9uKHN0cmluZykgPT5cbiAgc3dpdGNoIChcbiAgICB6LmNhcmV0LFxuICAgIHoucmVsYXRpdmVzLnNpYmxpbmdzIHw+IGZzdCB8PiBMaXN0LnJldixcbiAgICB6LnJlbGF0aXZlcy5zaWJsaW5ncyB8PiBzbmQsXG4gICkge1xuICB8IChPdXRlciwgW1RpbGUoe2xhYmVsOiBbdG9rX3RvX2xlZnRdLCBffSksIC4uLl9dLCBfKSA9PlxuICAgIFNvbWUodG9rX3RvX2xlZnQpXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbi8qIFRoZSBzZWxlY3Rpb24gYnVmZmVyIHVzZWQgYnkgVHlEaSBpcyBjdXJyZW50bHkgdW5zdHJ1Y3R1cmVkOyBpdCBzaW1wbHlcbiAqIGhvbGRzIGFuIHVucGFyc2VkIHN0cmluZywgd2hpY2ggaXMgcGFyc2VkIHZpYSB0aGUgc2FtZSBtZWNoYW5pc20gYXNcbiAqIFBhc3RlIG9ubHkgd2hlbiBhIHN1Z2dlc3Rpb24gaXMgYWNjZXB0ZWQuICovXG5sZXQgbWtfdW5wYXJzZWRfYnVmZmVyID1cbiAgICAofnNvcnQ6IFNvcnQudCwgc2liczogU2libGluZ3MudCwgdDogVG9rZW4udCk6IFNlZ21lbnQudCA9PiB7XG4gIGxldCBtb2xkID0gU2libGluZ3MubW9sZF9maXR0aW5nX2JldHdlZW4oc29ydCwgUHJlY2VkZW5jZS5tYXgsIHNpYnMpO1xuICBbVGlsZSh7aWQ6IElkLm1rKCksIGxhYmVsOiBbdF0sIHNoYXJkczogWzBdLCBjaGlsZHJlbjogW10sIG1vbGR9KV07XG59O1xuXG4vKiBJZiAnY3VycmVudCcgaXMgYSBwcm9wZXIgcHJlZml4IG9mICdjYW5kaWRhdGUnLCByZXR1cm4gdGhlXG4gKiBzdWZmaXggc3VjaCB0aGF0IGN1cnJlbnQgKysgc3VmZml4ID09IGNhbmRpZGF0ZSAqL1xubGV0IHN1ZmZpeF9vZiA9IChjYW5kaWRhdGU6IFRva2VuLnQsIGN1cnJlbnQ6IFRva2VuLnQpOiBvcHRpb24oVG9rZW4udCkgPT4ge1xuICBsZXQgY2FuZGlkYXRlX3N1ZmZpeCA9XG4gICAgU3RyaW5nLnN1YihcbiAgICAgIGNhbmRpZGF0ZSxcbiAgICAgIFN0cmluZy5sZW5ndGgoY3VycmVudCksXG4gICAgICBTdHJpbmcubGVuZ3RoKGNhbmRpZGF0ZSkgLSBTdHJpbmcubGVuZ3RoKGN1cnJlbnQpLFxuICAgICk7XG4gIGNhbmRpZGF0ZV9zdWZmaXggPT0gXCJcIiA/IE5vbmUgOiBTb21lKGNhbmRpZGF0ZV9zdWZmaXgpO1xufTtcblxuLyogUEVSRjogVGhpcyBpcyBxdWl0ZSBleHBlbnNpdmUgKi9cbmxldCB6X3RvX2NpID0gKH5zZXR0aW5nczogQ29yZVNldHRpbmdzLnQsIH5jdHg6IEN0eC50LCB6OiBaaXBwZXIudCkgPT4ge1xuICBsZXQgbWFwID1cbiAgICB6XG4gICAgfD4gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3NlbVxuICAgIHw+IGZzdFxuICAgIHw+IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MsIGN0eCk7XG4gIGxldCogaW5kZXggPSBJbmRpY2F0ZWQuaW5kZXgoeik7XG4gIElkLk1hcC5maW5kX29wdChpbmRleCwgbWFwKTtcbn07XG5cbi8qIFJldHVybnMgdGhlIHRleHQgY29udGVudCBvZiB0aGUgc3VnZ2VzdGlvbiBidWZmZXIgKi9cbmxldCBnZXRfYnVmZmVyID0gKHo6IFppcHBlci50KTogb3B0aW9uKFRva2VuLnQpID0+XG4gIHN3aXRjaCAoei5zZWxlY3Rpb24ubW9kZSwgei5zZWxlY3Rpb24uY29udGVudCkge1xuICB8IChCdWZmZXIoVW5wYXJzZWQpLCBbVGlsZSh7bGFiZWw6IFtjb21wbGV0aW9uXSwgX30pXSkgPT5cbiAgICBTb21lKGNvbXBsZXRpb24pXG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbi8qIEdpdmVzIGEgdHlwZS1kaXJlY3RlZCBzdWdnZXN0aW9uICovXG5sZXQgc3VnZ2VzdCA9ICh+c2V0dGluZ3MsIH5jdHg6IEN0eC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihTZWdtZW50LnQpID0+IHtcbiAgbGV0KiB0b2tfdG9fbGVmdCA9IHRva2VuX3RvX2xlZnQoeik7XG4gIGxldCogY2kgPSB6X3RvX2NpKH5zZXR0aW5ncywgfmN0eCwgeik7XG4gIGxldCBzdWdnZXN0aW9ucyA9IHN1Z2dlc3QoY2ksIHopO1xuICBsZXQgc3VnZ2VzdGlvbnMgPVxuICAgIHN1Z2dlc3Rpb25zXG4gICAgfD4gTGlzdC5maWx0ZXIoKHtjb250ZW50LCBffTogU3VnZ2VzdGlvbi50KSA9PlxuICAgICAgICAgU3RyaW5nLnN0YXJ0c193aXRoKH5wcmVmaXg9dG9rX3RvX2xlZnQsIGNvbnRlbnQpXG4gICAgICAgKTtcbiAgbGV0KiB0b3Bfc3VnZ2VzdGlvbiA9IHN1Z2dlc3Rpb25zIHw+IFV0aWwuTGlzdFV0aWwuaGRfb3B0O1xuICBsZXQqIHN1Z2dlc3Rpb25fc3VmZml4ID0gc3VmZml4X29mKHRvcF9zdWdnZXN0aW9uLmNvbnRlbnQsIHRva190b19sZWZ0KTtcbiAgbGV0IGNvbnRlbnQgPVxuICAgIG1rX3VucGFyc2VkX2J1ZmZlcihcbiAgICAgIH5zb3J0PUluZm8uc29ydF9vZihjaSksXG4gICAgICB6LnJlbGF0aXZlcy5zaWJsaW5ncyxcbiAgICAgIHN1Z2dlc3Rpb25fc3VmZml4LFxuICAgICk7XG4gIFNvbWUoY29udGVudCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICB0ZXN0X21hcDogVGVzdE1hcC50LFxuICBzdGF0dXNlczogbGlzdChUZXN0U3RhdHVzLnQpLFxuICBkZXNjcmlwdGlvbnM6IGxpc3Qoc3RyaW5nKSxcbiAgdG90YWw6IGludCxcbiAgcGFzc2luZzogaW50LFxuICBmYWlsaW5nOiBpbnQsXG4gIHVuZmluaXNoZWQ6IGludCxcbn07XG5cbmxldCBta19yZXN1bHRzID0gKH5kZXNjcmlwdGlvbnM9W10sIHRlc3RfbWFwOiBUZXN0TWFwLnQpOiB0ID0+IHtcbiAgdGVzdF9tYXAsXG4gIHN0YXR1c2VzOiB0ZXN0X21hcCB8PiBMaXN0Lm1hcChyID0+IHIgfD4gc25kIHw+IFRlc3RNYXAuam9pbnRfc3RhdHVzKSxcbiAgZGVzY3JpcHRpb25zLFxuICB0b3RhbDogVGVzdE1hcC5jb3VudCh0ZXN0X21hcCksXG4gIHBhc3Npbmc6IFRlc3RNYXAuY291bnRfc3RhdHVzKFBhc3MsIHRlc3RfbWFwKSxcbiAgZmFpbGluZzogVGVzdE1hcC5jb3VudF9zdGF0dXMoRmFpbCwgdGVzdF9tYXApLFxuICB1bmZpbmlzaGVkOiBUZXN0TWFwLmNvdW50X3N0YXR1cyhJbmRldCwgdGVzdF9tYXApLFxufTtcblxubGV0IHJlc3VsdF9zdW1tYXJ5X3N0ciA9XG4gICAgKH5uLCB+cCwgfnEsIH5uX3N0ciwgfm5zX3N0ciwgfnBfc3RyLCB+cV9zdHIsIH5yX3N0cik6IHN0cmluZyA9PiB7XG4gIGxldCBvbmVfcCA9IFwib25lIGlzIFwiICsrIHBfc3RyICsrIFwiIFwiO1xuICBsZXQgb25lX3EgPSBcIm9uZSBpcyBcIiArKyBxX3N0ciArKyBcIiBcIjtcbiAgbGV0IG1ueV9wID0gUHJpbnRmLnNwcmludGYoXCIlZCBhcmUgJXMgXCIsIHAsIHBfc3RyKTtcbiAgbGV0IG1ueV9xID0gUHJpbnRmLnNwcmludGYoXCIlZCBhcmUgJXMgXCIsIHEsIHFfc3RyKTtcbiAgbGV0IG9mX24gPSBQcmludGYuc3ByaW50ZihcIk91dCBvZiAlZCAlcywgXCIsIG4sIG5zX3N0cik7XG4gIHN3aXRjaCAobiwgcCwgcSkge1xuICB8ICgwLCBfLCBfKSA9PiBcIk5vIFwiICsrIG5zX3N0ciArKyBcIiBhdmFpbGFibGUuXCJcbiAgfCAoXywgMCwgMCkgPT4gXCJBbGwgXCIgKysgbnNfc3RyICsrIFwiIFwiICsrIHJfc3RyICsrIFwiISBcIlxuICB8IChuLCBfLCBjKSB3aGVuIG4gPT0gYyA9PiBcIkFsbCBcIiArKyBuc19zdHIgKysgXCIgXCIgKysgcV9zdHIgKysgXCIgXCJcbiAgfCAobiwgZiwgXykgd2hlbiBuID09IGYgPT4gXCJBbGwgXCIgKysgbnNfc3RyICsrIFwiIFwiICsrIHBfc3RyICsrIFwiIFwiXG4gIHwgKDEsIDAsIDEpID0+IFwiT25lIFwiICsrIG5fc3RyICsrIFwiIFwiICsrIHFfc3RyICsrIFwiIFwiXG4gIHwgKDEsIDEsIDApID0+IFwiT25lIFwiICsrIG5fc3RyICsrIFwiIFwiICsrIHBfc3RyICsrIFwiIFwiXG4gIHwgKDIsIDEsIDEpID0+XG4gICAgXCJPbmUgXCIgKysgbl9zdHIgKysgXCIgXCIgKysgcF9zdHIgKysgXCIgYW5kIG9uZSBcIiArKyBxX3N0ciArKyBcIiBcIlxuICB8IChfLCAwLCAxKSA9PiBvZl9uICsrIG9uZV9xXG4gIHwgKF8sIDEsIDApID0+IG9mX24gKysgb25lX3BcbiAgfCAoXywgMSwgMSkgPT4gb2ZfbiArKyBvbmVfcCArKyBcImFuZCBcIiArKyBvbmVfcVxuICB8IChfLCAxLCBfKSA9PiBvZl9uICsrIG9uZV9wICsrIFwiYW5kIFwiICsrIG1ueV9xXG4gIHwgKF8sIF8sIDEpID0+IG9mX24gKysgbW55X3AgKysgXCJhbmQgXCIgKysgb25lX3FcbiAgfCAoXywgMCwgXykgPT4gb2ZfbiArKyBtbnlfcVxuICB8IChfLCBfLCAwKSA9PiBvZl9uICsrIG1ueV9wXG4gIHwgKF8sIF8sIF8pID0+IG9mX24gKysgbW55X3AgKysgXCJhbmQgXCIgKysgbW55X3FcbiAgfTtcbn07XG5cbmxldCB0ZXN0X3N1bW1hcnlfc3RyID0gKHRlc3RfcmVzdWx0czogdCk6IHN0cmluZyA9PlxuICByZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgfm49dGVzdF9yZXN1bHRzLnRvdGFsLFxuICAgIH5wPXRlc3RfcmVzdWx0cy5mYWlsaW5nLFxuICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgIH5uX3N0cj1cInRlc3RcIixcbiAgICB+bnNfc3RyPVwidGVzdHNcIixcbiAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgfnFfc3RyPVwiaW5kZXRlcm1pbmF0ZVwiLFxuICAgIH5yX3N0cj1cInBhc3NpbmdcIixcbiAgKTtcbiIsIi8qIGNsb3NlZCBzdWJzdGl0dXRpb24gW2QxL3hdZDIgKi9cbmxldCByZWMgc3Vic3RfdmFyID0gKG0sIGQxOiBESEV4cC50LCB4OiBWYXIudCwgZDI6IERIRXhwLnQpOiBESEV4cC50ID0+IHtcbiAgbGV0ICh0ZXJtLCByZXdyYXApID0gREhFeHAudW53cmFwKGQyKTtcbiAgc3dpdGNoICh0ZXJtKSB7XG4gIHwgVmFyKHkpID0+XG4gICAgaWYgKFZhci5lcSh4LCB5KSkge1xuICAgICAgZDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGQyO1xuICAgIH1cbiAgfCBJbnZhbGlkKF8pID0+IGQyXG4gIHwgU2VxKGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBTZXEoZDMsIGQ0KSB8PiByZXdyYXA7XG4gIHwgRmlsdGVyKGZpbHRlciwgZGJvZHkpID0+XG4gICAgbGV0IGRib2R5ID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkYm9keSk7XG4gICAgbGV0IGZpbHRlciA9IHN1YnN0X3Zhcl9maWx0ZXIobSwgZDEsIHgsIGZpbHRlcik7XG4gICAgRmlsdGVyKGZpbHRlciwgZGJvZHkpIHw+IHJld3JhcDtcbiAgfCBMZXQoZHAsIGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPVxuICAgICAgaWYgKERIUGF0LmJpbmRzX3ZhcihtLCB4LCBkcCkpIHtcbiAgICAgICAgZDQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICAgIH07XG4gICAgTGV0KGRwLCBkMywgZDQpIHw+IHJld3JhcDtcbiAgfCBGaXhGKHksIGQzLCBlbnYpID0+XG4gICAgbGV0IGVudicgPSBPcHRpb24ubWFwKHN1YnN0X3Zhcl9lbnYobSwgZDEsIHgpLCBlbnYpO1xuICAgIGxldCBkMyA9XG4gICAgICBpZiAoREhQYXQuYmluZHNfdmFyKG0sIHgsIHkpKSB7XG4gICAgICAgIGQzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgICB9O1xuICAgIEZpeEYoeSwgZDMsIGVudicpIHw+IHJld3JhcDtcbiAgfCBGdW4oZHAsIGQzLCBlbnYsIHMpID0+XG4gICAgLyogRnVuY3Rpb24gY2xvc3VyZSBzaG91bGRuJ3QgYXBwZWFyIGR1cmluZyBzdWJzdGl0dXRpb25cbiAgICAgICAod2hpY2ggb25seSBpcyBjYWxsZWQgZnJvbSBlbGFib3JhdGlvbiBjdXJyZW50bHkpICovXG4gICAgbGV0IGVudicgPSBPcHRpb24ubWFwKHN1YnN0X3Zhcl9lbnYobSwgZDEsIHgpLCBlbnYpO1xuICAgIGlmIChESFBhdC5iaW5kc192YXIobSwgeCwgZHApKSB7XG4gICAgICBGdW4oZHAsIGQzLCBlbnYnLCBzKSB8PiByZXdyYXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgICAgRnVuKGRwLCBkMywgZW52JywgcykgfD4gcmV3cmFwO1xuICAgIH07XG4gIHwgVHlwRnVuKHRwYXQsIGQzLCBzKSA9PlxuICAgIFR5cEZ1bih0cGF0LCBzdWJzdF92YXIobSwgZDEsIHgsIGQzKSwgcykgfD4gcmV3cmFwXG4gIHwgQ2xvc3VyZShlbnYsIGQzKSA9PlxuICAgIC8qIENsb3N1cmUgc2hvdWxkbid0IGFwcGVhciBkdXJpbmcgc3Vic3RpdHV0aW9uICh3aGljaFxuICAgICAgIG9ubHkgaXMgY2FsbGVkIGZyb20gZWxhYm9yYXRpb24gY3VycmVudGx5KSAqL1xuICAgIGxldCBlbnYnID0gc3Vic3RfdmFyX2VudihtLCBkMSwgeCwgZW52KTtcbiAgICBsZXQgZDMnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgQ2xvc3VyZShlbnYnLCBkMycpIHw+IHJld3JhcDtcbiAgfCBBcChkaXIsIGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBBcChkaXIsIGQzLCBkNCkgfD4gcmV3cmFwO1xuICB8IEJ1aWx0aW5GdW4oXykgPT4gZDJcbiAgfCBUZXN0KGQzKSA9PiBUZXN0KHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpKSB8PiByZXdyYXBcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBkMlxuICB8IExpc3RMaXQoZHMpID0+IExpc3RMaXQoTGlzdC5tYXAoc3Vic3RfdmFyKG0sIGQxLCB4KSwgZHMpKSB8PiByZXdyYXBcbiAgfCBDb25zKGQzLCBkNCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBsZXQgZDQgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ0KTtcbiAgICBDb25zKGQzLCBkNCkgfD4gcmV3cmFwO1xuICB8IExpc3RDb25jYXQoZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIExpc3RDb25jYXQoZDMsIGQ0KSB8PiByZXdyYXA7XG4gIHwgVHVwbGUoZHMpID0+IFR1cGxlKExpc3QubWFwKHN1YnN0X3ZhcihtLCBkMSwgeCksIGRzKSkgfD4gcmV3cmFwXG4gIHwgVW5PcChvcCwgZDMpID0+XG4gICAgbGV0IGQzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkMyk7XG4gICAgVW5PcChvcCwgZDMpIHw+IHJld3JhcDtcbiAgfCBCaW5PcChvcCwgZDMsIGQ0KSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIGxldCBkNCA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIEJpbk9wKG9wLCBkMywgZDQpIHw+IHJld3JhcDtcbiAgfCBNYXRjaChkcywgcnVsZXMpID0+XG4gICAgbGV0IGRzID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkcyk7XG4gICAgbGV0IHJ1bGVzID1cbiAgICAgIExpc3QubWFwKFxuICAgICAgICAoKHAsIHYpKSA9PlxuICAgICAgICAgIGlmIChESFBhdC5iaW5kc192YXIobSwgeCwgcCkpIHtcbiAgICAgICAgICAgIChwLCB2KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgKHAsIHN1YnN0X3ZhcihtLCBkMSwgeCwgdikpO1xuICAgICAgICAgIH0sXG4gICAgICAgIHJ1bGVzLFxuICAgICAgKTtcbiAgICBNYXRjaChkcywgcnVsZXMpIHw+IHJld3JhcDtcbiAgfCBFbXB0eUhvbGUgPT4gRW1wdHlIb2xlIHw+IHJld3JhcFxuICAvLyBUT0RPOiBoYW5kbGUgbXVsdGlob2xlXG4gIHwgTXVsdGlIb2xlKF9kMikgPT4gZDIgLy9NdWx0aUhvbGUoTGlzdC5tYXAoc3Vic3RfdmFyKG0sIGQxLCB4KSwgZHMpKSB8PiByZXdyYXBcbiAgfCBDYXN0KGQsIHR5MSwgdHkyKSA9PlxuICAgIGxldCBkJyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZCk7XG4gICAgQ2FzdChkJywgdHkxLCB0eTIpIHw+IHJld3JhcDtcbiAgfCBGYWlsZWRDYXN0KGQsIHR5MSwgdHkyKSA9PlxuICAgIGxldCBkJyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZCk7XG4gICAgRmFpbGVkQ2FzdChkJywgdHkxLCB0eTIpIHw+IHJld3JhcDtcbiAgfCBEeW5hbWljRXJyb3JIb2xlKGQsIGVycikgPT5cbiAgICBsZXQgZCcgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQpO1xuICAgIER5bmFtaWNFcnJvckhvbGUoZCcsIGVycikgfD4gcmV3cmFwO1xuICB8IElmKGQ0LCBkNSwgZDYpID0+XG4gICAgbGV0IGQ0JyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDQpO1xuICAgIGxldCBkNScgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQ1KTtcbiAgICBsZXQgZDYnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNik7XG4gICAgSWYoZDQnLCBkNScsIGQ2JykgfD4gcmV3cmFwO1xuICB8IFR5QWxpYXModHAsIHV0LCBkNCkgPT5cbiAgICBsZXQgZDQnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNCk7XG4gICAgVHlBbGlhcyh0cCwgdXQsIGQ0JykgfD4gcmV3cmFwO1xuICB8IFBhcmVucyhkNCkgPT5cbiAgICBsZXQgZDQnID0gc3Vic3RfdmFyKG0sIGQxLCB4LCBkNCk7XG4gICAgUGFyZW5zKGQ0JykgfD4gcmV3cmFwO1xuICB8IERlZmVycmFsKF8pID0+IGQyXG4gIHwgRGVmZXJyZWRBcChkMywgZDRzKSA9PlxuICAgIGxldCBkMyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZDMpO1xuICAgIGxldCBkNHMgPSBMaXN0Lm1hcChzdWJzdF92YXIobSwgZDEsIHgpLCBkNHMpO1xuICAgIERlZmVycmVkQXAoZDMsIGQ0cykgfD4gcmV3cmFwO1xuICB8IFR5cEFwKGQzLCB1dCkgPT5cbiAgICBsZXQgZDMgPSBzdWJzdF92YXIobSwgZDEsIHgsIGQzKTtcbiAgICBUeXBBcChkMywgdXQpIHw+IHJld3JhcDtcbiAgfTtcbn1cblxuYW5kIHN1YnN0X3Zhcl9lbnYgPVxuICAgIChtLCBkMTogREhFeHAudCwgeDogVmFyLnQsIGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQpXG4gICAgOiBDbG9zdXJlRW52aXJvbm1lbnQudCA9PiB7XG4gIGxldCBpZCA9IGVudiB8PiBDbG9zdXJlRW52aXJvbm1lbnQuaWRfb2Y7XG4gIGxldCBtYXAgPVxuICAgIGVudlxuICAgIHw+IENsb3N1cmVFbnZpcm9ubWVudC5tYXBfb2ZcbiAgICB8PiBFbnZpcm9ubWVudC5mb2xkbyhcbiAgICAgICAgICgoeCcsIGQnOiBESEV4cC50KSwgbWFwKSA9PiB7XG4gICAgICAgICAgIGxldCBkJyA9XG4gICAgICAgICAgICAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQnKSkge1xuICAgICAgICAgICAgIC8qIFN1YnN0aXR1dGUgZWFjaCBwcmV2aW91c2x5IHN1YnN0aXR1dGVkIGJpbmRpbmcgaW50byB0aGVcbiAgICAgICAgICAgICAgKiBmaXhwb2ludC4gKi9cbiAgICAgICAgICAgICB8IEZpeEYoXykgPT5cbiAgICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgICAgfD4gRW52aXJvbm1lbnQuZm9sZG8oXG4gICAgICAgICAgICAgICAgICAgICgoeCcnLCBkJycpLCBkKSA9PiBzdWJzdF92YXIobSwgZCcnLCB4JycsIGQpLFxuICAgICAgICAgICAgICAgICAgICBkJyxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICB8IF8gPT4gZCdcbiAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgIC8qIFN1YnN0aXR1dGUuICovXG4gICAgICAgICAgIGxldCBkJyA9IHN1YnN0X3ZhcihtLCBkMSwgeCwgZCcpO1xuICAgICAgICAgICBFbnZpcm9ubWVudC5leHRlbmQobWFwLCAoeCcsIGQnKSk7XG4gICAgICAgICB9LFxuICAgICAgICAgRW52aXJvbm1lbnQuZW1wdHksXG4gICAgICAgKTtcblxuICBDbG9zdXJlRW52aXJvbm1lbnQud3JhcChpZCwgbWFwKTtcbn1cblxuYW5kIHN1YnN0X3Zhcl9maWx0ZXIgPVxuICAgIChtLCBkMTogREhFeHAudCwgeDogVmFyLnQsIGZsdDogVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQudClcbiAgICA6IFRlcm1CYXNlLlN0ZXBwZXJGaWx0ZXJLaW5kLnQgPT4ge1xuICBmbHQgfD4gVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQubWFwKHN1YnN0X3ZhcihtLCBkMSwgeCkpO1xufTtcblxubGV0IHN1YnN0ID0gKG0sIGVudjogRW52aXJvbm1lbnQudCwgZDogREhFeHAudCk6IERIRXhwLnQgPT5cbiAgZW52XG4gIHw+IEVudmlyb25tZW50LmZvbGRvKFxuICAgICAgICh4ZDogKFZhci50LCBESEV4cC50KSwgZDIpID0+IHtcbiAgICAgICAgIGxldCAoeCwgZDEpID0geGQ7XG4gICAgICAgICBzdWJzdF92YXIobSwgZDEsIHgsIGQyKTtcbiAgICAgICB9LFxuICAgICAgIGQsXG4gICAgICk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0YXRpY3MgPSB7XG4gIHRlcm06IFVFeHAudCxcbiAgaW5mb19tYXA6IFN0YXRpY3MuTWFwLnQsXG4gIGVycm9yX2lkczogbGlzdChJZC50KSxcbn07XG5cbmxldCBzdGF0aWNzX29mX3Rlcm0gPSAofnNldHRpbmdzLCB0ZXJtOiBVRXhwLnQsIGVkaXRvcjogRWRpdG9yLnQpOiBzdGF0aWNzID0+IHtcbiAgbGV0IGluZm9fbWFwID1cbiAgICBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLCBCdWlsdGlucy5jdHhfaW5pdCwgdGVybSk7XG4gIGxldCBlcnJvcl9pZHMgPVxuICAgIFN0YXRpY3MuTWFwLmVycm9yX2lkcyhlZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcywgaW5mb19tYXApO1xuICB7dGVybSwgaW5mb19tYXAsIGVycm9yX2lkc307XG59O1xuXG5sZXQgZW1wdHlfc3RhdGljczogc3RhdGljcyA9IHtcbiAgdGVybTogVUV4cC57aWRzOiBbSWQuaW52YWxpZF0sIGNvcGllZDogZmFsc2UsIHRlcm06IFR1cGxlKFtdKX0sXG4gIGluZm9fbWFwOiBJZC5NYXAuZW1wdHksXG4gIGVycm9yX2lkczogW10sXG59O1xuXG5tb2R1bGUgS2V5ID0ge1xuICBpbmNsdWRlIFN0cmluZztcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBzdHJpbmc7XG59O1xuXG5tb2R1bGUgTSA9IFV0aWwuTWFwVXRpbC5NYWtlKEtleSk7XG5pbmNsdWRlIE07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IE0udChzdGF0aWNzKTtcblxubGV0IG1rID0gKGRzOiBsaXN0KChLZXkudCwgc3RhdGljcykpKTogdCA9PlxuICBkcyB8PiBMaXN0LnRvX3NlcSB8PiBvZl9zZXEgfD4gbWFwKEZ1bi5pZCk7XG5cbmxldCBsb29rdXAgPSAocmVzdWx0czogdCwga2V5OiBLZXkudCkgPT5cbiAgc3dpdGNoIChmaW5kX29wdChrZXksIHJlc3VsdHMpKSB7XG4gIHwgTm9uZSA9PiBlbXB0eV9zdGF0aWNzXG4gIHwgU29tZShzdGF0aWNzKSA9PiBzdGF0aWNzXG4gIH07XG4iLCJvcGVuIFRyYW5zaXRpb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcCA9IHtcbiAgZDogREhFeHAudCwgLy8gdGVjaG5pY2FsbHkgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSBkX2xvYyBhbmQgY3R4XG4gIHN0YXRlOiBFdmFsdWF0b3JTdGF0ZS50LFxuICBkX2xvYzogREhFeHAudCwgLy8gdGhlIGV4cHJlc3Npb24gYXQgdGhlIGxvY2F0aW9uIGdpdmVuIGJ5IGN0eFxuICBkX2xvYyc6IERIRXhwLnQsXG4gIGN0eDogRXZhbEN0eC50LFxuICBrbmQ6IHN0ZXBfa2luZCxcbn07XG5cbm1vZHVsZSBFdmFsT2JqID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LCAvLyB0ZWNobmljYWxseSBjYW4gYmUgY2FsY3VsYXRlZCBmcm9tIGN0eFxuICAgIGRfbG9jOiBESEV4cC50LFxuICAgIGN0eDogRXZhbEN0eC50LFxuICAgIGtuZDogc3RlcF9raW5kLFxuICB9O1xuXG4gIGxldCBtayA9IChjdHgsIGVudiwgZF9sb2MsIGtuZCkgPT4ge2N0eCwgZW52LCBkX2xvYywga25kfTtcblxuICBsZXQgZ2V0X2N0eCA9IChvYmo6IHQpOiBFdmFsQ3R4LnQgPT4ge1xuICAgIG9iai5jdHg7XG4gIH07XG4gIGxldCBnZXRfa2luZCA9IChvYmo6IHQpOiBzdGVwX2tpbmQgPT4gb2JqLmtuZDtcblxuICBsZXQgd3JhcCA9IChmOiBFdmFsQ3R4LnQgPT4gRXZhbEN0eC50LCBvYmo6IHQpID0+IHtcbiAgICAuLi5vYmosXG4gICAgY3R4OiBvYmouY3R4IHw+IGYsXG4gIH07XG59O1xuXG5tb2R1bGUgRGVjb21wb3NlID0ge1xuICBtb2R1bGUgUmVzdWx0ID0ge1xuICAgIHR5cGUgdCA9XG4gICAgICB8IEluZGV0XG4gICAgICB8IEJveGVkVmFsdWVcbiAgICAgIHwgU3RlcChsaXN0KEV2YWxPYmoudCkpO1xuXG4gICAgbGV0IHVuYm94ID0gKHI6IHQpOiBsaXN0KEV2YWxPYmoudCkgPT4ge1xuICAgICAgc3dpdGNoIChyKSB7XG4gICAgICB8IEluZGV0XG4gICAgICB8IEJveGVkVmFsdWUgPT4gW11cbiAgICAgIHwgU3RlcChvYmpzKSA9PiBvYmpzXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIERlY29tcG9zZUVWTW9kZToge1xuICAgIGluY2x1ZGVcbiAgICAgIEVWX01PREUgd2l0aFxuICAgICAgICB0eXBlIHJlc3VsdCA9IFJlc3VsdC50IGFuZCB0eXBlIHN0YXRlID0gcmVmKEV2YWx1YXRvclN0YXRlLnQpO1xuICB9ID0ge1xuICAgIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCk7XG4gICAgdHlwZSByZXF1aXJlbWVudCgnYSkgPSAoUmVzdWx0LnQsICdhKTtcbiAgICB0eXBlIHJlcXVpcmVtZW50cygnYSwgJ2IpID0gKCdiLCBSZXN1bHQudCwgQ2xvc3VyZUVudmlyb25tZW50LnQsICdhKTtcbiAgICB0eXBlIHJlc3VsdCA9IFJlc3VsdC50O1xuXG4gICAgbGV0IHJlcV92YWx1ZSA9IChjb250LCB3ciwgZCkgPT4ge1xuICAgICAgc3dpdGNoIChjb250KGQpKSB7XG4gICAgICB8IFJlc3VsdC5JbmRldCA9PiAoUmVzdWx0LkluZGV0LCBkKVxuICAgICAgfCBSZXN1bHQuQm94ZWRWYWx1ZSA9PiAoUmVzdWx0LkJveGVkVmFsdWUsIGQpXG4gICAgICB8IFJlc3VsdC5TdGVwKG9ianMpID0+IChcbiAgICAgICAgICBSZXN1bHQuU3RlcChMaXN0Lm1hcChFdmFsT2JqLndyYXAod3IpLCBvYmpzKSksXG4gICAgICAgICAgZCxcbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgbGV0ICgmJik6IChSZXN1bHQudCwgUmVzdWx0LnQpID0+IFJlc3VsdC50ID1cbiAgICAgICh1LCB2KSA9PlxuICAgICAgICBzd2l0Y2ggKHUsIHYpIHtcbiAgICAgICAgfCAoU3RlcChzczEpLCBTdGVwKHNzMikpID0+IFN0ZXAoc3MxIEAgc3MyKVxuICAgICAgICB8IChTdGVwKHNzKSwgXylcbiAgICAgICAgfCAoXywgU3RlcChzcykpID0+IFN0ZXAoc3MpXG4gICAgICAgIHwgKEluZGV0LCBCb3hlZFZhbHVlKVxuICAgICAgICB8IChCb3hlZFZhbHVlLCBJbmRldClcbiAgICAgICAgfCAoSW5kZXQsIEluZGV0KSA9PiBJbmRldFxuICAgICAgICB8IChCb3hlZFZhbHVlLCBCb3hlZFZhbHVlKSA9PiBCb3hlZFZhbHVlXG4gICAgICAgIH07XG5cbiAgICBsZXQgcmVjIHJlcV9hbGxfdmFsdWUnID0gKGNvbnQsIHdyLCBkcycpID0+XG4gICAgICBmdW5cbiAgICAgIHwgW10gPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCBbXSlcbiAgICAgIHwgW2QsIC4uLmRzXSA9PiB7XG4gICAgICAgICAgbGV0IChyMSwgdikgPSByZXFfdmFsdWUoY29udCwgd3IoXywgKGRzJywgZHMpKSwgZCk7XG4gICAgICAgICAgbGV0IChyMiwgdnMpID0gcmVxX2FsbF92YWx1ZScoY29udCwgd3IsIFtkLCAuLi5kcyddLCBkcyk7XG4gICAgICAgICAgKHIxICYmIHIyLCBbdiwgLi4udnNdKTtcbiAgICAgICAgfTtcbiAgICBsZXQgcmVxX2FsbF92YWx1ZSA9IChjb250LCB3ciwgZHMpID0+IHtcbiAgICAgIHJlcV9hbGxfdmFsdWUnKGNvbnQsIHdyLCBbXSwgZHMpO1xuICAgIH07XG5cbiAgICBsZXQgcmVxX2ZpbmFsID0gKGNvbnQsIHdyLCBkKSA9PiB7XG4gICAgICAoXG4gICAgICAgIHN3aXRjaCAoY29udChkKSkge1xuICAgICAgICB8IFJlc3VsdC5JbmRldCA9PiBSZXN1bHQuQm94ZWRWYWx1ZVxuICAgICAgICB8IFJlc3VsdC5Cb3hlZFZhbHVlID0+IFJlc3VsdC5Cb3hlZFZhbHVlXG4gICAgICAgIHwgUmVzdWx0LlN0ZXAob2JqcykgPT5cbiAgICAgICAgICBSZXN1bHQuU3RlcChMaXN0Lm1hcChFdmFsT2JqLndyYXAod3IpLCBvYmpzKSlcbiAgICAgICAgfSxcbiAgICAgICAgZCxcbiAgICAgICk7XG4gICAgfTtcblxuICAgIGxldCByZXFfZmluYWxfb3JfdmFsdWUgPSAoY29udCwgd3IsIGQpID0+IHtcbiAgICAgIHN3aXRjaCAoY29udChkKSkge1xuICAgICAgfCBSZXN1bHQuSW5kZXQgPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCAoZCwgZmFsc2UpKVxuICAgICAgfCBSZXN1bHQuQm94ZWRWYWx1ZSA9PiAoUmVzdWx0LkJveGVkVmFsdWUsIChkLCB0cnVlKSlcbiAgICAgIHwgUmVzdWx0LlN0ZXAob2JqcykgPT4gKFxuICAgICAgICAgIFJlc3VsdC5TdGVwKExpc3QubWFwKEV2YWxPYmoud3JhcCh3ciksIG9ianMpKSxcbiAgICAgICAgICAoZCwgZmFsc2UpLFxuICAgICAgICApXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgcmVjIHJlcV9hbGxfZmluYWwnID0gKGNvbnQsIHdyLCBkcycpID0+XG4gICAgICBmdW5cbiAgICAgIHwgW10gPT4gKFJlc3VsdC5Cb3hlZFZhbHVlLCBbXSlcbiAgICAgIHwgW2QsIC4uLmRzXSA9PiB7XG4gICAgICAgICAgbGV0IChyMSwgdikgPSByZXFfZmluYWwoY29udCwgd3IoXywgKGRzJywgZHMpKSwgZCk7XG4gICAgICAgICAgbGV0IChyMiwgdnMpID0gcmVxX2FsbF9maW5hbCcoY29udCwgd3IsIFtkLCAuLi5kcyddLCBkcyk7XG4gICAgICAgICAgKHIxICYmIHIyLCBbdiwgLi4udnNdKTtcbiAgICAgICAgfTtcblxuICAgIGxldCByZXFfYWxsX2ZpbmFsID0gKGNvbnQsIHdyLCBkcykgPT4ge1xuICAgICAgcmVxX2FsbF9maW5hbCcoY29udCwgd3IsIFtdLCBkcyk7XG4gICAgfTtcblxuICAgIGxldCAobGV0Lik6IChyZXF1aXJlbWVudHMoJ2EsIERIRXhwLnQpLCAnYSA9PiBydWxlKSA9PiByZXN1bHQgPVxuICAgICAgKHJxLCBybCkgPT5cbiAgICAgICAgc3dpdGNoIChycSkge1xuICAgICAgICB8IChfLCBSZXN1bHQuSW5kZXQsIF8sIF8pID0+IFJlc3VsdC5JbmRldFxuICAgICAgICB8ICh1bmRvLCBSZXN1bHQuQm94ZWRWYWx1ZSwgZW52LCB2KSA9PlxuICAgICAgICAgIHN3aXRjaCAocmwodikpIHtcbiAgICAgICAgICB8IENvbnN0cnVjdG9yID0+IFJlc3VsdC5Cb3hlZFZhbHVlXG4gICAgICAgICAgfCBJbmRldCA9PiBSZXN1bHQuSW5kZXRcbiAgICAgICAgICB8IFN0ZXAocykgPT4gUmVzdWx0LlN0ZXAoW0V2YWxPYmoubWsoTWFyaywgZW52LCB1bmRvLCBzLmtpbmQpXSlcbiAgICAgICAgICAvLyBUT0RPOiBBY3R1YWxseSBzaG93IHRoZXNlIGV4Y2VwdGlvbnMgdG8gdGhlIHVzZXIhXG4gICAgICAgICAgfCBleGNlcHRpb24gKEV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihfKSkgPT4gUmVzdWx0LkluZGV0XG4gICAgICAgICAgfVxuICAgICAgICB8IChfLCBSZXN1bHQuU3RlcChfKSBhcyByLCBfLCBfKSA9PiByXG4gICAgICAgIH07XG5cbiAgICBsZXQgKGFuZC4pOlxuICAgICAgKHJlcXVpcmVtZW50cygnYSwgJ2MgPT4gJ2IpLCByZXF1aXJlbWVudCgnYykpID0+XG4gICAgICByZXF1aXJlbWVudHMoKCdhLCAnYyksICdiKSA9XG4gICAgICAoKHUsIHIxLCBlbnYsIHYxKSwgKHIyLCB2MikpID0+ICh1KHYyKSwgcjEgJiYgcjIsIGVudiwgKHYxLCB2MikpO1xuXG4gICAgbGV0IG90aGVyd2lzZSA9IChlbnYsIG8pID0+IChvLCBSZXN1bHQuQm94ZWRWYWx1ZSwgZW52LCAoKSk7XG4gICAgbGV0IHVwZGF0ZV90ZXN0ID0gKHN0YXRlLCBpZCwgdikgPT5cbiAgICAgIHN0YXRlIDo9IEV2YWx1YXRvclN0YXRlLmFkZF90ZXN0KHN0YXRlXiwgaWQsIHYpO1xuICB9O1xuXG4gIG1vZHVsZSBEZWNvbXAgPSBUcmFuc2l0aW9uKERlY29tcG9zZUVWTW9kZSk7XG4gIGxldCByZWMgZGVjb21wb3NlID0gKHN0YXRlLCBlbnYsIGV4cCkgPT4ge1xuICAgIGxldCAodGVybSwgcmV3cmFwKSA9IERIRXhwLnVud3JhcChleHApO1xuICAgIHN3aXRjaCAodGVybSkge1xuICAgIHwgREhFeHAuRmlsdGVyKGZsdCwgZDEpID0+XG4gICAgICBEZWNvbXBvc2VFVk1vZGUuKFxuICAgICAgICB7XG4gICAgICAgICAgbGV0LiBfID1cbiAgICAgICAgICAgIG90aGVyd2lzZShlbnYsIChkMSkgPT4gKEZpbHRlcihmbHQsIGQxKSB8PiByZXdyYXA6IERIRXhwLnQpKVxuICAgICAgICAgIGFuZC4gZDEgPVxuICAgICAgICAgICAgcmVxX2ZpbmFsKFxuICAgICAgICAgICAgICBkZWNvbXBvc2Uoc3RhdGUsIGVudiksXG4gICAgICAgICAgICAgIGQxID0+XG4gICAgICAgICAgICAgICAgVGVybSh7dGVybTogRmlsdGVyKGZsdCwgZDEpLCBpZHM6IFtESEV4cC5yZXBfaWQoZXhwKV19KSxcbiAgICAgICAgICAgICAgZDEsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIFN0ZXAoe1xuICAgICAgICAgICAgZXhwcjogZDEsXG4gICAgICAgICAgICBzdGF0ZV91cGRhdGU6ICgpID0+ICgpLFxuICAgICAgICAgICAga2luZDogQ29tcGxldGVGaWx0ZXIsXG4gICAgICAgICAgICBpc192YWx1ZTogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIHwgXyA9PlxuICAgICAgc3dpdGNoIChEZWNvbXAudHJhbnNpdGlvbihkZWNvbXBvc2UsIHN0YXRlLCBlbnYsIGV4cCkpIHtcbiAgICAgIHwgciA9PiByXG4gICAgICB8IGV4Y2VwdGlvbiAoRXZhbHVhdG9yRXJyb3IuRXhjZXB0aW9uKF8pKSA9PiBSZXN1bHQuSW5kZXRcbiAgICAgIH1cbiAgICB9O1xuICB9O1xufTtcblxubW9kdWxlIFRha2VTdGVwID0ge1xuICBtb2R1bGUgVGFrZVN0ZXBFVk1vZGU6IHtcbiAgICBpbmNsdWRlXG4gICAgICBFVl9NT0RFIHdpdGhcbiAgICAgICAgdHlwZSByZXN1bHQgPSBvcHRpb24oREhFeHAudCkgYW5kIHR5cGUgc3RhdGUgPSByZWYoRXZhbHVhdG9yU3RhdGUudCk7XG4gIH0gPSB7XG4gICAgdHlwZSBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS50KTtcbiAgICB0eXBlIHJlcXVpcmVtZW50KCdhKSA9ICdhO1xuICAgIHR5cGUgcmVxdWlyZW1lbnRzKCdhLCAnYikgPSAnYTtcbiAgICB0eXBlIHJlc3VsdCA9IG9wdGlvbihESEV4cC50KTtcblxuICAgIC8vIEFzc3VtZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgZWl0aGVyIHZhbHVlIG9yIGZpbmFsIGFzIHJlcXVpcmVkLlxuICAgIGxldCByZXFfdmFsdWUgPSAoXywgXywgZCkgPT4gZDtcbiAgICBsZXQgcmVxX2FsbF92YWx1ZSA9IChfLCBfLCBkcykgPT4gZHM7XG4gICAgbGV0IHJlcV9maW5hbCA9IChfLCBfLCBkKSA9PiBkO1xuICAgIGxldCByZXFfYWxsX2ZpbmFsID0gKF8sIF8sIGRzKSA9PiBkcztcblxuICAgIGxldCByZXFfZmluYWxfb3JfdmFsdWUgPSAoXywgXywgZCkgPT4gKGQsIHRydWUpO1xuXG4gICAgbGV0IChsZXQuKSA9IChycTogcmVxdWlyZW1lbnRzKCdhLCBESEV4cC50KSwgcmw6ICdhID0+IHJ1bGUpID0+XG4gICAgICBzd2l0Y2ggKHJsKHJxKSkge1xuICAgICAgfCBTdGVwKHtleHByLCBzdGF0ZV91cGRhdGUsIF99KSA9PlxuICAgICAgICBzdGF0ZV91cGRhdGUoKTtcbiAgICAgICAgU29tZShleHByKTtcbiAgICAgIHwgQ29uc3RydWN0b3JcbiAgICAgIHwgSW5kZXQgPT4gTm9uZVxuICAgICAgfTtcblxuICAgIGxldCAoYW5kLikgPSAoeDEsIHgyKSA9PiAoeDEsIHgyKTtcblxuICAgIGxldCBvdGhlcndpc2UgPSAoXywgXykgPT4gKCk7XG5cbiAgICBsZXQgdXBkYXRlX3Rlc3QgPSAoc3RhdGUsIGlkLCB2KSA9PlxuICAgICAgc3RhdGUgOj0gRXZhbHVhdG9yU3RhdGUuYWRkX3Rlc3Qoc3RhdGVeLCBpZCwgdik7XG4gIH07XG5cbiAgbW9kdWxlIFRha2VTdGVwRVYgPSBUcmFuc2l0aW9uKFRha2VTdGVwRVZNb2RlKTtcblxuICBsZXQgdGFrZV9zdGVwID0gKHN0YXRlLCBlbnYsIGQpID0+XG4gICAgVGFrZVN0ZXBFVi50cmFuc2l0aW9uKChfLCBfLCBfKSA9PiBOb25lLCBzdGF0ZSwgZW52LCBkKTtcbn07XG5cbmxldCB0YWtlX3N0ZXAgPSBUYWtlU3RlcC50YWtlX3N0ZXA7XG5cbmxldCBkZWNvbXBvc2UgPSAoZDogREhFeHAudCwgZXM6IEV2YWx1YXRvclN0YXRlLnQpID0+IHtcbiAgbGV0IGVudiA9IENsb3N1cmVFbnZpcm9ubWVudC5vZl9lbnZpcm9ubWVudChCdWlsdGlucy5lbnZfaW5pdCk7XG4gIGxldCBycyA9IERlY29tcG9zZS5kZWNvbXBvc2UocmVmKGVzKSwgZW52LCBkKTtcbiAgRGVjb21wb3NlLlJlc3VsdC51bmJveChycyk7XG59O1xuXG5sZXQgZXZhbHVhdGVfd2l0aF9oaXN0b3J5ID0gZCA9PiB7XG4gIGxldCBzdGF0ZSA9IHJlZihFdmFsdWF0b3JTdGF0ZS5pbml0KTtcbiAgbGV0IHJlYyBnbyA9IGQgPT5cbiAgICBzd2l0Y2ggKGRlY29tcG9zZShkLCBzdGF0ZV4pKSB7XG4gICAgfCBbXSA9PiBbXVxuICAgIHwgW3gsIC4uLl9dID0+XG4gICAgICBzd2l0Y2ggKHRha2Vfc3RlcChzdGF0ZSwgeC5lbnYsIHguZF9sb2MpKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShkKSA9PlxuICAgICAgICBsZXQgbmV4dCA9IEV2YWxDdHguY29tcG9zZSh4LmN0eCwgZCk7XG4gICAgICAgIFtuZXh0LCAuLi5nbyhuZXh0KV07XG4gICAgICB9XG4gICAgfTtcbiAgZ28oZCk7XG59O1xuIiwidHlwZSB0ID0gbGlzdChUZXJtQmFzZS5TdGVwcGVyRmlsdGVyS2luZC5maWx0ZXIpO1xubGV0IGV4dGVuZHMgPSAoZmx0LCBlbnYpID0+IFtmbHQsIC4uLmVudl07XG4iLCJsZXQgcmVjIG1hdGNoZXNfZXhwID1cbiAgICAgICAgKGVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsIGQ6IERIRXhwLnQsIGY6IERIRXhwLnQpOiBib29sID0+IHtcbiAgc3dpdGNoIChESEV4cC50ZXJtX29mKGQpLCBESEV4cC50ZXJtX29mKGYpKSB7XG4gIHwgKFBhcmVucyh4KSwgXykgPT4gbWF0Y2hlc19leHAoZW52LCB4LCBmKVxuICB8IChfLCBQYXJlbnMoeCkpID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgeClcbiAgfCAoQ29uc3RydWN0b3IoXCIkZVwiKSwgXykgPT4gZmFpbHdpdGgoXCIkZSBpbiBtYXRjaGVkIGV4cHJlc3Npb25cIilcbiAgfCAoQ29uc3RydWN0b3IoXCIkdlwiKSwgXykgPT4gZmFpbHdpdGgoXCIkdiBpbiBtYXRjaGVkIGV4cHJlc3Npb25cIilcbiAgfCAoXywgQ29uc3RydWN0b3IoXCIkdlwiKSkgPT5cbiAgICBzd2l0Y2ggKFZhbHVlQ2hlY2tlci5jaGVja192YWx1ZSgoKSwgZW52LCBkKSkge1xuICAgIHwgSW5kZXRcbiAgICB8IFZhbHVlID0+IHRydWVcbiAgICB8IEV4cHIgPT4gZmFsc2VcbiAgICB9XG5cbiAgfCAoXywgRW1wdHlIb2xlKVxuICB8IChfLCBDb25zdHJ1Y3RvcihcIiRlXCIpKSA9PiB0cnVlXG5cbiAgfCAoXywgQ2xvc3VyZShlbnYsIGYpKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIHwgKF8sIENhc3QoZiwgXywgXykpID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcbiAgfCAoXywgRmFpbGVkQ2FzdChmLCBfLCBfKSkgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuXG4gIHwgKENsb3N1cmUoZW52LCBkKSwgXykgPT4gbWF0Y2hlc19leHAoZW52LCBkLCBmKVxuICB8IChDYXN0KGQsIF8sIF8pLCBfKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gIHwgKEZhaWxlZENhc3QoZCwgXywgXyksIF8pID0+IG1hdGNoZXNfZXhwKGVudiwgZCwgZilcblxuICB8IChWYXIoZHgpLCBWYXIoZngpKSA9PiBkeCA9PSBmeFxuICB8IChWYXIoZHgpLCBfKSA9PlxuICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIGR4KSkge1xuICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgIHwgU29tZShkKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gICAgfVxuICB8IChfLCBWYXIoZngpKSA9PlxuICAgIHN3aXRjaCAoQ2xvc3VyZUVudmlyb25tZW50Lmxvb2t1cChlbnYsIGZ4KSkge1xuICAgIHwgU29tZShmKSA9PiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpXG4gICAgfCBOb25lID0+IGZhbHNlXG4gICAgfVxuXG4gIHwgKEVtcHR5SG9sZSwgXykgPT4gZmFsc2VcblxuICB8IChEZWZlcnJhbCh4KSwgRGVmZXJyYWwoeSkpID0+IHggPT0geVxuICB8IChEZWZlcnJhbChfKSwgXykgPT4gZmFsc2VcblxuICB8IChGaWx0ZXIoZGYsIGRkKSwgRmlsdGVyKGZmLCBmZCkpID0+XG4gICAgVGVybUJhc2UuU3RlcHBlckZpbHRlcktpbmQuZmFzdF9lcXVhbChkZiwgZmYpICYmIG1hdGNoZXNfZXhwKGVudiwgZGQsIGZkKVxuICB8IChGaWx0ZXIoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQm9vbChkdiksIEJvb2woZnYpKSA9PiBkdiA9PSBmdlxuICB8IChCb29sKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKEludChkdiksIEludChmdikpID0+IGR2ID09IGZ2XG4gIHwgKEludChfKSwgXykgPT4gZmFsc2VcblxuICB8IChGbG9hdChkdiksIEZsb2F0KGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoRmxvYXQoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoU3RyaW5nKGR2KSwgU3RyaW5nKGZ2KSkgPT4gZHYgPT0gZnZcbiAgfCAoU3RyaW5nKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKENvbnN0cnVjdG9yKF8pLCBBcChfLCBkMSwgZDIpKSA9PlxuICAgIHN3aXRjaCAoREhFeHAudGVybV9vZihkMSksIERIRXhwLnRlcm1fb2YoZDIpKSB7XG4gICAgfCAoQ29uc3RydWN0b3IoXCJ+TVZhbFwiKSwgVHVwbGUoW10pKSA9PiB0cnVlXG4gICAgfCBfID0+IGZhbHNlXG4gICAgfVxuICB8IChDb25zdHJ1Y3RvcihkdCksIENvbnN0cnVjdG9yKGZ0KSkgPT4gZHQgPT0gZnRcbiAgfCAoQ29uc3RydWN0b3IoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQnVpbHRpbkZ1bihkbiksIEJ1aWx0aW5GdW4oZm4pKSA9PiBkbiA9PSBmblxuICB8IChCdWlsdGluRnVuKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFR5cEZ1bihwYXQxLCBkMSwgczEpLCBUeXBGdW4ocGF0MiwgZDIsIHMyKSkgPT5cbiAgICBzMSA9PSBzMiAmJiBtYXRjaGVzX3V0cGF0KHBhdDEsIHBhdDIpICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGQyKVxuICB8IChUeXBGdW4oXyksIF8pID0+IGZhbHNlXG5cbiAgLy8gTm90IHN1cmUgaWYgd2Ugc2hvdWxkIGJlIGNoZWNraW5nIGZ1bmN0aW9ucyBmb3IgY2xvc3VyZXMgaGVyZVxuICB8IChGdW4oZHAxLCBkMSwgXywgZG5hbWUxKSwgRnVuKGZwMSwgZjEsIF8sIGZuYW1lMSkpID0+XG4gICAgbWF0Y2hlc19wYXQoZHAxLCBmcDEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBkbmFtZTEgPT0gZm5hbWUxXG4gIHwgKEZ1bihfKSwgXykgPT4gZmFsc2VcblxuICB8IChGaXhGKGRwLCBkMSwgXyksIEZpeEYoZnAsIGYxLCBfKSkgPT5cbiAgICBtYXRjaGVzX3BhdChkcCwgZnApICYmIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICB8IChGaXhGKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExldChkcCwgZDEsIGQyKSwgTGV0KGZwLCBmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfcGF0KGRwLCBmcClcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoTGV0KF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFR5cEFwKGQxLCB0MSksIFR5cEFwKGQyLCB0MikpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZDIpICYmIG1hdGNoZXNfdHlwKHQxLCB0MilcbiAgfCAoVHlwQXAoXyksIF8pID0+IGZhbHNlXG5cbiAgLy8gVE9ETzogZG8gd2Ugd2FudCBmKHgpIHRvIG1hdGNoIHggfD4gZiA/Pz9cbiAgfCAoQXAoXywgZDEsIGQyKSwgQXAoXywgZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSkgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKEFwKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKERlZmVycmVkQXAoZDEsIGQyKSwgRGVmZXJyZWRBcChmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKVxuICAgICYmIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICAgIChhY2MsIGQsIGYpID0+IGFjYyAmJiBtYXRjaGVzX2V4cChlbnYsIGQsIGYpLFxuICAgICAgICAgdHJ1ZSxcbiAgICAgICAgIGQyLFxuICAgICAgICAgZjIsXG4gICAgICAgKVxuICB8IChEZWZlcnJlZEFwKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKElmKGQxLCBkMiwgZDMpLCBJZihmMSwgZjIsIGYzKSkgPT5cbiAgICBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgICAmJiBtYXRjaGVzX2V4cChlbnYsIGQzLCBmMylcbiAgfCAoSWYoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoU2VxKGQxLCBkMiksIFNlcShmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoU2VxKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFRlc3QoZDIpLCBUZXN0KGYyKSkgPT4gbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKFRlc3QoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoQ29ucyhkMSwgZDIpLCBDb25zKGYxLCBmMikpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkMSwgZjEpICYmIG1hdGNoZXNfZXhwKGVudiwgZDIsIGYyKVxuICB8IChDb25zKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExpc3RMaXQoZHYpLCBMaXN0TGl0KGZ2KSkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAoYWNjLCBkLCBmKSA9PiBhY2MgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKSxcbiAgICAgIHRydWUsXG4gICAgICBkdixcbiAgICAgIGZ2LFxuICAgIClcbiAgfCAoTGlzdExpdChfKSwgXykgPT4gZmFsc2VcblxuICB8IChUdXBsZShkdiksIFR1cGxlKGZ2KSkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdDIoXG4gICAgICAoYWNjLCBkLCBmKSA9PiBhY2MgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKSxcbiAgICAgIHRydWUsXG4gICAgICBkdixcbiAgICAgIGZ2LFxuICAgIClcbiAgfCAoVHVwbGUoXyksIF8pID0+IGZhbHNlXG5cbiAgfCAoVW5PcChkX29wLCBkMSksIFVuT3AoZl9vcCwgZjEpKSA9PlxuICAgIGRfb3AgPT0gZl9vcCAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSlcbiAgfCAoVW5PcChfKSwgXykgPT4gZmFsc2VcblxuICB8IChCaW5PcChkX29wLCBkMSwgZDIpLCBCaW5PcChmX29wLCBmMSwgZjIpKSA9PlxuICAgIGRfb3AgPT0gZl9vcCAmJiBtYXRjaGVzX2V4cChlbnYsIGQxLCBmMSkgJiYgbWF0Y2hlc19leHAoZW52LCBkMiwgZjIpXG4gIHwgKEJpbk9wKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKExpc3RDb25jYXQoZDEsIGQyKSwgTGlzdENvbmNhdChmMSwgZjIpKSA9PlxuICAgIG1hdGNoZXNfZXhwKGVudiwgZDEsIGYxKSAmJiBtYXRjaGVzX2V4cChlbnYsIGQyLCBmMilcbiAgfCAoTGlzdENvbmNhdChfKSwgXykgPT4gZmFsc2VcblxuICB8IChNYXRjaChkc2NydXQsIGRydWxlKSwgTWF0Y2goZnNjcnV0LCBmcnVsZSkpID0+XG4gICAgbWF0Y2hlc19leHAoZW52LCBkc2NydXQsIGZzY3J1dClcbiAgICAmJiAoXG4gICAgICBzd2l0Y2ggKFxuICAgICAgICBMaXN0LmZvcl9hbGwyKFxuICAgICAgICAgICgoZGssIGR2KSwgKGZrLCBmdikpID0+XG4gICAgICAgICAgICBtYXRjaGVzX3BhdChkaywgZmspICYmIG1hdGNoZXNfZXhwKGVudiwgZHYsIGZ2KSxcbiAgICAgICAgICBkcnVsZSxcbiAgICAgICAgICBmcnVsZSxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gZmFsc2VcbiAgICAgIHwgcmVzID0+IHJlc1xuICAgICAgfVxuICAgIClcbiAgfCAoTWF0Y2goXyksIF8pID0+IGZhbHNlXG4gIC8vIFRPRE86IHNob3VsZCB0aGVzZSBub3QgZGVmYXVsdCB0byBmYWxzZT9cbiAgfCAoTXVsdGlIb2xlKF8pLCBfKSA9PiBmYWxzZVxuICB8IChJbnZhbGlkKF8pLCBfKSA9PiBmYWxzZVxuICB8IChEeW5hbWljRXJyb3JIb2xlKF8pLCBfKSA9PiBmYWxzZVxuXG4gIHwgKFR5QWxpYXMoZHRwLCBkdXQsIGRkKSwgVHlBbGlhcyhmdHAsIGZ1dCwgZmQpKSA9PlxuICAgIGR0cCA9PSBmdHAgJiYgZHV0ID09IGZ1dCAmJiBtYXRjaGVzX2V4cChlbnYsIGRkLCBmZClcbiAgfCAoVHlBbGlhcyhfKSwgXykgPT4gZmFsc2VcbiAgfTtcbn1cbmFuZCBtYXRjaGVzX3BhdCA9IChkOiBQYXQudCwgZjogUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoIChkIHw+IERIUGF0LnRlcm1fb2YsIGYgfD4gREhQYXQudGVybV9vZikge1xuICAvLyBNYXR0OiBJJ20gbm90IHN1cmUgd2hhdCB0aGUgZXhhY3Qgc2VtYW50aWNzIG9mIG1hdGNoaW5nIHNob3VsZCBiZSBoZXJlLlxuICB8IChQYXJlbnMoeCksIF8pID0+IG1hdGNoZXNfcGF0KHgsIGYpXG4gIHwgKF8sIFBhcmVucyh4KSkgPT4gbWF0Y2hlc19wYXQoZCwgeClcbiAgfCAoQ2FzdCh4LCBfLCBfKSwgXykgPT4gbWF0Y2hlc19wYXQoeCwgZilcbiAgfCAoXywgQ2FzdCh4LCBfLCBfKSkgPT4gbWF0Y2hlc19wYXQoZCwgeClcbiAgfCAoXywgRW1wdHlIb2xlKSA9PiB0cnVlXG4gIHwgKE11bHRpSG9sZShfKSwgTXVsdGlIb2xlKF8pKSA9PiB0cnVlXG4gIHwgKE11bHRpSG9sZShfKSwgXykgPT4gZmFsc2VcbiAgfCAoV2lsZCwgV2lsZCkgPT4gdHJ1ZVxuICB8IChXaWxkLCBfKSA9PiBmYWxzZVxuICB8IChJbnQoZHYpLCBJbnQoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChJbnQoXyksIF8pID0+IGZhbHNlXG4gIHwgKEZsb2F0KGR2KSwgRmxvYXQoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChGbG9hdChfKSwgXykgPT4gZmFsc2VcbiAgfCAoQm9vbChkdiksIEJvb2woZnYpKSA9PiBkdiA9PSBmdlxuICB8IChCb29sKF8pLCBfKSA9PiBmYWxzZVxuICB8IChTdHJpbmcoZHYpLCBTdHJpbmcoZnYpKSA9PiBkdiA9PSBmdlxuICB8IChTdHJpbmcoXyksIF8pID0+IGZhbHNlXG4gIHwgKExpc3RMaXQoZGwpLCBMaXN0TGl0KGZsKSkgPT5cbiAgICBzd2l0Y2ggKFxuICAgICAgTGlzdC5mb2xkX2xlZnQyKChyZXMsIGQsIGYpID0+IHJlcyAmJiBtYXRjaGVzX3BhdChkLCBmKSwgdHJ1ZSwgZGwsIGZsKVxuICAgICkge1xuICAgIHwgZXhjZXB0aW9uIChJbnZhbGlkX2FyZ3VtZW50KF8pKSA9PiBmYWxzZVxuICAgIHwgcmVzID0+IHJlc1xuICAgIH1cbiAgfCAoTGlzdExpdChfKSwgXykgPT4gZmFsc2VcbiAgfCAoQ29uc3RydWN0b3IoZHQpLCBDb25zdHJ1Y3RvcihmdCkpID0+IGR0ID09IGZ0XG4gIHwgKENvbnN0cnVjdG9yKF8pLCBfKSA9PiBmYWxzZVxuICB8IChWYXIoZHgpLCBWYXIoZngpKSA9PiBkeCA9PSBmeFxuICB8IChWYXIoXyksIF8pID0+IGZhbHNlXG4gIHwgKFR1cGxlKGRsKSwgVHVwbGUoZmwpKSA9PlxuICAgIHN3aXRjaCAoXG4gICAgICBMaXN0LmZvbGRfbGVmdDIoKHJlcywgZCwgZikgPT4gcmVzICYmIG1hdGNoZXNfcGF0KGQsIGYpLCB0cnVlLCBkbCwgZmwpXG4gICAgKSB7XG4gICAgfCBleGNlcHRpb24gKEludmFsaWRfYXJndW1lbnQoXykpID0+IGZhbHNlXG4gICAgfCByZXMgPT4gcmVzXG4gICAgfVxuICB8IChUdXBsZShfKSwgXykgPT4gZmFsc2VcbiAgfCAoQXAoZDEsIGQyKSwgQXAoZjEsIGYyKSkgPT4gbWF0Y2hlc19wYXQoZDEsIGYxKSAmJiBtYXRjaGVzX3BhdChkMiwgZjIpXG4gIHwgKEFwKF8pLCBfKSA9PiBmYWxzZVxuICB8IChDb25zKGQxLCBkMiksIENvbnMoZjEsIGYyKSkgPT5cbiAgICBtYXRjaGVzX3BhdChkMSwgZjEpICYmIG1hdGNoZXNfcGF0KGQyLCBmMilcbiAgfCAoQ29ucyhfKSwgXykgPT4gZmFsc2VcbiAgfCAoRW1wdHlIb2xlLCBfKSA9PiBmYWxzZVxuICB8IChJbnZhbGlkKF8pLCBfKSA9PiBmYWxzZVxuICB9O1xufVxuYW5kIG1hdGNoZXNfdHlwID0gKGQ6IFR5cC50LCBmOiBUeXAudCkgPT4ge1xuICBUeXAuZXEoZCwgZik7XG59XG5hbmQgbWF0Y2hlc19ydWwgPSAoZW52LCAoZHAsIGQpLCAoZnAsIGYpKSA9PiB7XG4gIG1hdGNoZXNfcGF0KGRwLCBmcCkgJiYgbWF0Y2hlc19leHAoZW52LCBkLCBmKTtcbn1cbmFuZCBtYXRjaGVzX3V0cGF0ID0gKGQ6IFRQYXQudCwgZjogVFBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAoZC50ZXJtLCBmLnRlcm0pIHtcbiAgfCAoSW52YWxpZChfKSwgXykgPT4gZmFsc2VcbiAgfCAoXywgSW52YWxpZChfKSkgPT4gZmFsc2VcbiAgfCAoXywgRW1wdHlIb2xlKSA9PiB0cnVlXG4gIHwgKE11bHRpSG9sZShsMSksIE11bHRpSG9sZShsMikpID0+IExpc3QubGVuZ3RoKGwxKSA9PSBMaXN0Lmxlbmd0aChsMikgLyogVE9ETzogcHJvYmFibHkgc2hvdWxkIGRlZmluZSBhIG1hdGNoZXNfYW55IGFuZCByZWN1cnNlIGluIGhlcmUuLi4/ICovXG4gIHwgKFZhcih0MSksIFZhcih0MikpID0+IHQxID09IHQyXG4gIHwgXyA9PiBmYWxzZVxuICB9O1xufTtcblxubGV0IG1hdGNoZXMgPVxuICAgIChcbiAgICAgIH5lbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LFxuICAgICAgfmV4cDogREhFeHAudCxcbiAgICAgIH5mbHQ6IFRlcm1CYXNlLlN0ZXBwZXJGaWx0ZXJLaW5kLmZpbHRlcixcbiAgICApXG4gICAgOiBvcHRpb24oRmlsdGVyQWN0aW9uLnQpID0+XG4gIGlmIChtYXRjaGVzX2V4cChlbnYsIGV4cCwgZmx0LnBhdCkpIHtcbiAgICBTb21lKGZsdC5hY3QpO1xuICB9IGVsc2Uge1xuICAgIE5vbmU7XG4gIH07XG5cbmxldCBtYXRjaGVzID1cbiAgICAofmVudjogQ2xvc3VyZUVudmlyb25tZW50LnQsIH5leHA6IERIRXhwLnQsIH5hY3Q6IEZpbHRlckFjdGlvbi50LCBmbHRfZW52KVxuICAgIDogKEZpbHRlckFjdGlvbi50LCBpbnQpID0+IHtcbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoKGZsdF9lbnYpO1xuICBsZXQgcmVjIG1hdGNoZXMnID0gKH5lbnYsIH5leHAsIH5hY3QsIGZsdF9lbnYsIGlkeCkgPT4ge1xuICAgIHN3aXRjaCAoZmx0X2Vudikge1xuICAgIHwgW10gPT4gKGFjdCwgaWR4KVxuICAgIHwgW2hkLCAuLi50bF0gPT5cbiAgICAgIHN3aXRjaCAobWF0Y2hlcyh+ZW52LCB+ZXhwLCB+Zmx0PWhkKSkge1xuICAgICAgfCBTb21lKGFjdCkgPT4gKGFjdCwgaWR4KVxuICAgICAgfCBOb25lID0+IG1hdGNoZXMnKH5lbnYsIH5leHAsIH5hY3QsIHRsLCBpZHggKyAxKVxuICAgICAgfVxuICAgIH07XG4gIH07XG4gIGxldCAoYWN0LCBpZHgpID0gbWF0Y2hlcycofmVudiwgfmV4cCwgfmFjdCwgZmx0X2VudiwgMCk7XG4gIChhY3QsIGxlbiAtIGlkeCk7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gRXZhbHVhdG9yU3RlcDtcbm9wZW4gVHJhbnNpdGlvbjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmV4Y2VwdGlvbiBFeGNlcHRpb247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc3RlcHBlcl9zdGF0ZSA9XG4gIHwgU3RlcFBlbmRpbmcoaW50KVxuICB8IFN0ZXBwZXJSZWFkeVxuICB8IFN0ZXBwZXJEb25lXG4gIHwgU3RlcFRpbWVvdXQoRXZhbE9iai50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBhID0gKENhY2hlZFN0YXRpY3Muc3RhdGljcywgRWRpdG9yLnQsIEV2YWx1YXRvclN0YXRlLnQpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGhpc3RvcnkgPSBBYmEudChhLCBzdGVwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBoaXN0b3J5LFxuICBuZXh0X29wdGlvbnM6IGxpc3QoRXZhbE9iai50KSxcbiAgc3RlcHBlcl9zdGF0ZSxcbn07XG5cbmxldCByZWMgbWF0Y2hlcyA9XG4gICAgICAgIChcbiAgICAgICAgICBlbnY6IENsb3N1cmVFbnZpcm9ubWVudC50LFxuICAgICAgICAgIGZsdDogRmlsdGVyRW52aXJvbm1lbnQudCxcbiAgICAgICAgICBjdHg6IEV2YWxDdHgudCxcbiAgICAgICAgICBleHA6IERIRXhwLnQsXG4gICAgICAgICAgYWN0OiBGaWx0ZXJBY3Rpb24udCxcbiAgICAgICAgICBpZHg6IGludCxcbiAgICAgICAgKVxuICAgICAgICA6IChGaWx0ZXJBY3Rpb24udCwgaW50LCBFdmFsQ3R4LnQpID0+IHtcbiAgbGV0IGNvbXBvc2VkID0gRXZhbEN0eC5jb21wb3NlKGN0eCwgZXhwKTtcbiAgbGV0IChwYWN0LCBwaWR4KSA9IChhY3QsIGlkeCk7XG4gIGxldCAobWFjdCwgbWlkeCkgPSBGaWx0ZXJNYXRjaGVyLm1hdGNoZXMofmVudiwgfmV4cD1jb21wb3NlZCwgfmFjdCwgZmx0KTtcbiAgbGV0IChhY3QsIGlkeCkgPVxuICAgIHN3aXRjaCAoY3R4KSB7XG4gICAgfCBUZXJtKHt0ZXJtOiBGaWx0ZXIoXywgXyksIF99KSA9PiAocGFjdCwgcGlkeClcbiAgICB8IF8gPT4gbWlkeCA+IGlkeCA/IChtYWN0LCBtaWR4KSA6IChwYWN0LCBwaWR4KVxuICAgIH07XG4gIGxldCBtYXAgPSAoKGEsIGksIGMpLCBmKSA9PiB7XG4gICAgKGEsIGksIGYoYykpO1xuICB9O1xuICBsZXQgKGxldCspID0gbWFwO1xuICBsZXQgKHJhY3QsIHJpZHgsIHJjdHgpID1cbiAgICBzd2l0Y2ggKGN0eCkge1xuICAgIHwgTWFyayA9PiAoYWN0LCBpZHgsIEV2YWxDdHguTWFyaylcbiAgICB8IFRlcm0oe3Rlcm0sIGlkc30pID0+XG4gICAgICBsZXQgcmV3cmFwID0gdGVybSA9PiBFdmFsQ3R4LlRlcm0oe3Rlcm0sIGlkc30pO1xuICAgICAgc3dpdGNoICgodGVybTogRXZhbEN0eC50ZXJtKSkge1xuICAgICAgfCBDbG9zdXJlKGVudiwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIENsb3N1cmUoZW52LCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgRmlsdGVyKEZpbHRlcihmbHQnKSwgY3R4KSA9PlxuICAgICAgICBsZXQgZmx0ID0gZmx0IHw+IEZpbHRlckVudmlyb25tZW50LmV4dGVuZHMoZmx0Jyk7XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRmlsdGVyKEZpbHRlcihmbHQnKSwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IEZpbHRlcihSZXNpZHVlKGlkeCwgYWN0KSwgY3R4KSA9PlxuICAgICAgICBsZXQgKHJhY3QsIHJpZHgsIHJjdHgpID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgaWYgKHJpZHggPT0gaWR4ICYmIHJhY3QgfD4gc25kID09IEFsbCkge1xuICAgICAgICAgIChyYWN0LCByaWR4LCBGaWx0ZXIoUmVzaWR1ZShpZHgsIGFjdCksIHJjdHgpIHw+IHJld3JhcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgKHJhY3QsIHJpZHgsIHJjdHgpO1xuICAgICAgICB9O1xuICAgICAgfCBTZXExKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgU2VxMShjdHgsIGQyKSB8PiByZXdyYXA7XG4gICAgICB8IFNlcTIoZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBTZXEyKGQxLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgTGV0MShkMSwgY3R4LCBkMykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBMZXQxKGQxLCBjdHgsIGQzKSB8PiByZXdyYXA7XG4gICAgICB8IExldDIoZDEsIGQyLCBjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTGV0MihkMSwgZDIsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBGdW4oZHAsIGN0eCwgZW52JywgbmFtZSkgPT5cbiAgICAgICAgbGV0KyBjdHggPVxuICAgICAgICAgIG1hdGNoZXMoT3B0aW9uLnZhbHVlKH5kZWZhdWx0PWVudiwgZW52JyksIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRnVuKGRwLCBjdHgsIGVudicsIG5hbWUpIHw+IHJld3JhcDtcbiAgICAgIHwgRml4RihuYW1lLCBjdHgsIGVudicpID0+XG4gICAgICAgIGxldCsgY3R4ID1cbiAgICAgICAgICBtYXRjaGVzKE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1lbnYsIGVudicpLCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEZpeEYobmFtZSwgY3R4LCBlbnYnKSB8PiByZXdyYXA7XG4gICAgICB8IEFwMShkaXIsIGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgQXAxKGRpciwgY3R4LCBkMikgfD4gcmV3cmFwO1xuICAgICAgfCBBcDIoZGlyLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEFwMihkaXIsIGQxLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgVHlwQXAoY3R4LCB0eSkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBUeXBBcChjdHgsIHR5KSB8PiByZXdyYXA7XG4gICAgICB8IERlZmVycmVkQXAxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRGVmZXJyZWRBcDEoY3R4LCBkMikgfD4gcmV3cmFwO1xuICAgICAgfCBEZWZlcnJlZEFwMihkMSwgY3R4LCBkcykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBEZWZlcnJlZEFwMihkMSwgY3R4LCBkcykgfD4gcmV3cmFwO1xuICAgICAgfCBJZjEoY3R4LCBkMiwgZDMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgSWYxKGN0eCwgZDIsIGQzKSB8PiByZXdyYXA7XG4gICAgICB8IElmMihkMSwgY3R4LCBkMykgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBJZjIoZDEsIGN0eCwgZDMpIHw+IHJld3JhcDtcbiAgICAgIHwgSWYzKGQxLCBkMiwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIElmMyhkMSwgZDIsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBVbk9wKG9wLCBjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgVW5PcChvcCwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IEJpbk9wMShvcCwgY3R4LCBkMSkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBCaW5PcDEob3AsIGN0eCwgZDEpIHw+IHJld3JhcDtcbiAgICAgIHwgQmluT3AyKG9wLCBkMSwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIEJpbk9wMihvcCwgZDEsIGN0eCkgfD4gcmV3cmFwO1xuICAgICAgfCBUdXBsZShjdHgsIGRzKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIFR1cGxlKGN0eCwgZHMpIHw+IHJld3JhcDtcbiAgICAgIHwgVGVzdChjdHgpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgVGVzdChjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgTGlzdExpdChjdHgsIGRzKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIExpc3RMaXQoY3R4LCBkcykgfD4gcmV3cmFwO1xuICAgICAgfCBDb25zMShjdHgsIGQyKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIENvbnMxKGN0eCwgZDIpIHw+IHJld3JhcDtcbiAgICAgIHwgQ29uczIoZDEsIGN0eCkgPT5cbiAgICAgICAgbGV0KyBjdHggPSBtYXRjaGVzKGVudiwgZmx0LCBjdHgsIGV4cCwgYWN0LCBpZHgpO1xuICAgICAgICBDb25zMihkMSwgY3R4KSB8PiByZXdyYXA7XG4gICAgICB8IExpc3RDb25jYXQxKGN0eCwgZDIpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTGlzdENvbmNhdDEoY3R4LCBkMikgfD4gcmV3cmFwO1xuICAgICAgfCBMaXN0Q29uY2F0MihkMSwgY3R4KSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIExpc3RDb25jYXQyKGQxLCBjdHgpIHw+IHJld3JhcDtcbiAgICAgIHwgTXVsdGlIb2xlKGN0eCwgKGRsLCBkcikpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTXVsdGlIb2xlKGN0eCwgKGRsLCBkcikpIHw+IHJld3JhcDtcbiAgICAgIHwgQ2FzdChjdHgsIHR5LCB0eScpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgQ2FzdChjdHgsIHR5LCB0eScpIHw+IHJld3JhcDtcbiAgICAgIHwgRmFpbGVkQ2FzdChjdHgsIHR5LCB0eScpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgRmFpbGVkQ2FzdChjdHgsIHR5LCB0eScpIHw+IHJld3JhcDtcbiAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShjdHgsIGVycm9yKSA9PlxuICAgICAgICBsZXQrIGN0eCA9IG1hdGNoZXMoZW52LCBmbHQsIGN0eCwgZXhwLCBhY3QsIGlkeCk7XG4gICAgICAgIER5bmFtaWNFcnJvckhvbGUoY3R4LCBlcnJvcikgfD4gcmV3cmFwO1xuICAgICAgfCBNYXRjaFNjcnV0KGN0eCwgcnMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTWF0Y2hTY3J1dChjdHgsIHJzKSB8PiByZXdyYXA7XG4gICAgICB8IE1hdGNoUnVsZShzY3IsIHAsIGN0eCwgcnMpID0+XG4gICAgICAgIGxldCsgY3R4ID0gbWF0Y2hlcyhlbnYsIGZsdCwgY3R4LCBleHAsIGFjdCwgaWR4KTtcbiAgICAgICAgTWF0Y2hSdWxlKHNjciwgcCwgY3R4LCBycykgfD4gcmV3cmFwO1xuICAgICAgfTtcbiAgICB9O1xuICBzd2l0Y2ggKGN0eCkge1xuICB8IFRlcm0oe3Rlcm06IEZpbHRlcihfKSwgX30pID0+IChyYWN0LCByaWR4LCByY3R4KVxuICB8IF8gd2hlbiBtaWR4ID09IHJpZHggJiYgbWlkeCA+IHBpZHggJiYgbWFjdCB8PiBzbmQgPT0gQWxsID0+IChcbiAgICAgIHJhY3QsXG4gICAgICByaWR4LFxuICAgICAgVGVybSh7dGVybTogRmlsdGVyKFJlc2lkdWUobWlkeCwgbWFjdCksIHJjdHgpLCBpZHM6IFtJZC5taygpXX0pLFxuICAgIClcbiAgfCBfID0+IChyYWN0LCByaWR4LCByY3R4KVxuICB9O1xufTtcblxubGV0IHNob3VsZF9oaWRlX2V2YWxfb2JqID1cbiAgICAofnNldHRpbmdzLCB4OiBFdmFsT2JqLnQpOiAoRmlsdGVyQWN0aW9uLmFjdGlvbiwgRXZhbE9iai50KSA9PlxuICBpZiAoc2hvdWxkX2hpZGVfc3RlcCh+c2V0dGluZ3MsIHgua25kKSkge1xuICAgIChFdmFsLCB4KTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgKGFjdCwgXywgY3R4KSA9XG4gICAgICBtYXRjaGVzKENsb3N1cmVFbnZpcm9ubWVudC5lbXB0eSwgW10sIHguY3R4LCB4LmRfbG9jLCAoU3RlcCwgT25lKSwgMCk7XG4gICAgc3dpdGNoIChhY3QpIHtcbiAgICB8IChFdmFsLCBfKSA9PiAoRXZhbCwgey4uLngsIGN0eH0pXG4gICAgfCAoU3RlcCwgXykgPT4gKFN0ZXAsIHsuLi54LCBjdHh9KVxuICAgIH07XG4gIH07XG5cbmxldCBzaG91bGRfaGlkZV9zdGVwID0gKH5zZXR0aW5ncywgeDogc3RlcCk6IChGaWx0ZXJBY3Rpb24uYWN0aW9uLCBzdGVwKSA9PlxuICBpZiAoc2hvdWxkX2hpZGVfc3RlcCh+c2V0dGluZ3MsIHgua25kKSkge1xuICAgIChFdmFsLCB4KTtcbiAgfSBlbHNlIHtcbiAgICBsZXQgKGFjdCwgXywgY3R4KSA9XG4gICAgICBtYXRjaGVzKENsb3N1cmVFbnZpcm9ubWVudC5lbXB0eSwgW10sIHguY3R4LCB4LmRfbG9jLCAoU3RlcCwgT25lKSwgMCk7XG4gICAgc3dpdGNoIChhY3QpIHtcbiAgICB8IChFdmFsLCBfKSA9PiAoRXZhbCwgey4uLngsIGN0eH0pXG4gICAgfCAoU3RlcCwgXykgPT4gKFN0ZXAsIHsuLi54LCBjdHh9KVxuICAgIH07XG4gIH07XG5cbmxldCBnZXRfZWxhYiA9ICh7aGlzdG9yeSwgX306IHQpOiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQgPT4ge1xuICBsZXQgKGNzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MsIF8sIF8pID0gQWJhLmxhc3RfYShoaXN0b3J5KTtcbiAge2Q6IGNzLnRlcm19O1xufTtcblxubGV0IGdldF9uZXh0X3N0ZXBzID0gcyA9PiBzLm5leHRfb3B0aW9ucztcblxubGV0IGN1cnJlbnRfZXhwciA9ICh7aGlzdG9yeSwgX306IHQpID0+XG4gIEFiYS5oZChoaXN0b3J5KSB8PiAoKCh4LCBfLCBfKSkgPT4geCk7XG5cbmxldCBjdXJyZW50X3N0YXRlID0gKHtoaXN0b3J5LCBffTogdCkgPT5cbiAgQWJhLmhkKGhpc3RvcnkpIHw+ICgoKF8sIF8sIHgpKSA9PiB4KTtcblxubGV0IHN0ZXBfcGVuZGluZyA9IChpZHg6IGludCwgc3RlcHBlcjogdCkgPT4ge1xuICB7Li4uc3RlcHBlciwgc3RlcHBlcl9zdGF0ZTogU3RlcFBlbmRpbmcoaWR4KX07XG59O1xuXG5sZXQgcmVjIGV2YWx1YXRlX3BlbmRpbmcgPSAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgczogdCkgPT4ge1xuICBzd2l0Y2ggKHMuc3RlcHBlcl9zdGF0ZSkge1xuICB8IFN0ZXBwZXJEb25lXG4gIHwgU3RlcFRpbWVvdXQoXykgPT4gc1xuICB8IFN0ZXBwZXJSZWFkeSA9PlxuICAgIGxldCBuZXh0JyA9XG4gICAgICBzLm5leHRfb3B0aW9uc1xuICAgICAgfD4gTGlzdC5tYXAoc2hvdWxkX2hpZGVfZXZhbF9vYmoofnNldHRpbmdzPXNldHRpbmdzLmV2YWx1YXRpb24pKTtcbiAgICBsZXQgbmV4dCcnID0gTGlzdC5tYXBpKChpLCB4KSA9PiAoaSwgeCksIG5leHQnKTtcbiAgICBzd2l0Y2ggKFxuICAgICAgTGlzdC5maW5kX29wdCgoKF8sIChhY3QsIF8pKSkgPT4gYWN0ID09IEZpbHRlckFjdGlvbi5FdmFsLCBuZXh0JycpXG4gICAgKSB7XG4gICAgfCBTb21lKChpLCAoXywgXykpKSA9PlxuICAgICAgey4uLnMsIHN0ZXBwZXJfc3RhdGU6IFN0ZXBQZW5kaW5nKGkpfSB8PiBldmFsdWF0ZV9wZW5kaW5nKH5zZXR0aW5ncylcbiAgICB8IE5vbmUgPT4gey4uLnMsIHN0ZXBwZXJfc3RhdGU6IFN0ZXBwZXJEb25lfVxuICAgIH07XG4gIHwgU3RlcFBlbmRpbmcoaSkgPT5cbiAgICBsZXQgZW8gPSBMaXN0Lm50aChzLm5leHRfb3B0aW9ucywgaSk7XG4gICAgbGV0ICh7dGVybTogZCwgX306IENhY2hlZFN0YXRpY3Muc3RhdGljcywgXywgc3RhdGUpID0gQWJhLmhkKHMuaGlzdG9yeSk7XG4gICAgbGV0IHN0YXRlX3JlZiA9IHJlZihzdGF0ZSk7XG4gICAgbGV0IGRfbG9jJyA9XG4gICAgICAoXG4gICAgICAgIHN3aXRjaCAodGFrZV9zdGVwKHN0YXRlX3JlZiwgZW8uZW52LCBlby5kX2xvYykpIHtcbiAgICAgICAgfCBTb21lKGQpID0+IGQgfD4gREhFeHAucmVwYWlyX2lkc1xuICAgICAgICB8IE5vbmUgPT4gcmFpc2UoRXhjZXB0aW9uKVxuICAgICAgICB9XG4gICAgICApXG4gICAgICB8PiBESEV4cC5yZXBhaXJfaWRzO1xuICAgIGxldCBfID0gcHJpbnRfZW5kbGluZShkX2xvYycgfD4gREhFeHAuc2hvdyk7XG4gICAgbGV0IGQnID0gRXZhbEN0eC5jb21wb3NlKGVvLmN0eCwgZF9sb2MnKTtcbiAgICBsZXQgbmV3X3N0ZXAgPSB7XG4gICAgICBkLFxuICAgICAgZF9sb2M6IGVvLmRfbG9jLFxuICAgICAgZF9sb2MnLFxuICAgICAgY3R4OiBlby5jdHgsXG4gICAgICBrbmQ6IGVvLmtuZCxcbiAgICAgIHN0YXRlLFxuICAgIH07XG4gICAgbGV0IG5ld19zdGF0ZSA9IHN0YXRlX3JlZl47XG4gICAgbGV0IGVkaXRvciA9IEV4cFRvU2VnbWVudC5leHBfdG9fZWRpdG9yKH5pbmxpbmU9ZmFsc2UsIGQnKTtcbiAgICBsZXQgc3RhdGljcyA9IENhY2hlZFN0YXRpY3Muc3RhdGljc19vZl90ZXJtKH5zZXR0aW5ncywgZCcsIGVkaXRvcik7XG4gICAge1xuICAgICAgaGlzdG9yeTogcy5oaXN0b3J5IHw+IEFiYS5jb25zKChzdGF0aWNzLCBlZGl0b3IsIG5ld19zdGF0ZSksIG5ld19zdGVwKSxcbiAgICAgIHN0ZXBwZXJfc3RhdGU6IFN0ZXBwZXJSZWFkeSxcbiAgICAgIG5leHRfb3B0aW9uczogZGVjb21wb3NlKGQnLCBuZXdfc3RhdGUpLFxuICAgIH1cbiAgICB8PiBldmFsdWF0ZV9wZW5kaW5nKH5zZXR0aW5ncyk7XG4gIH07XG59O1xuXG5sZXQgcmVjIGV2YWx1YXRlX2Z1bGwgPSAofnNldHRpbmdzLCBzOiB0KSA9PiB7XG4gIHN3aXRjaCAocy5zdGVwcGVyX3N0YXRlKSB7XG4gIHwgU3RlcFRpbWVvdXQoXykgPT4gc1xuICB8IFN0ZXBwZXJEb25lIHdoZW4gcy5uZXh0X29wdGlvbnMgPT0gW10gPT4gc1xuICB8IFN0ZXBwZXJEb25lID0+IHMgfD4gc3RlcF9wZW5kaW5nKDApIHw+IGV2YWx1YXRlX2Z1bGwofnNldHRpbmdzKVxuICB8IFN0ZXBwZXJSZWFkeVxuICB8IFN0ZXBQZW5kaW5nKF8pID0+XG4gICAgZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3MsIHMpIHw+IGV2YWx1YXRlX2Z1bGwofnNldHRpbmdzKVxuICB9O1xufTtcblxubGV0IGluaXQgPSAoe2R9OiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQsIH5zZXR0aW5ncykgPT4ge1xuICBsZXQgc3RhdGUgPSBFdmFsdWF0b3JTdGF0ZS5pbml0O1xuICBsZXQgZWRpdG9yID0gRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IofmlubGluZT1mYWxzZSwgZCk7XG4gIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5zdGF0aWNzX29mX3Rlcm0ofnNldHRpbmdzLCBkLCBlZGl0b3IpO1xuICB7XG4gICAgaGlzdG9yeTogQWJhLnNpbmdsZXRvbigoc3RhdGljcywgZWRpdG9yLCBzdGF0ZSkpLFxuICAgIG5leHRfb3B0aW9uczogZGVjb21wb3NlKGQsIHN0YXRlKSxcbiAgICBzdGVwcGVyX3N0YXRlOiBTdGVwcGVyUmVhZHksXG4gIH1cbiAgfD4gZXZhbHVhdGVfcGVuZGluZyh+c2V0dGluZ3MpO1xufTtcblxubGV0IHRpbWVvdXQgPVxuICBmdW5cbiAgfCB7c3RlcHBlcl9zdGF0ZTogU3RlcFBlbmRpbmcoaWR4KSwgX30gYXMgcyA9PiB7XG4gICAgICAuLi5zLFxuICAgICAgc3RlcHBlcl9zdGF0ZTogU3RlcFRpbWVvdXQoTGlzdC5udGgocy5uZXh0X29wdGlvbnMsIGlkeCkpLFxuICAgIH1cbiAgfCB7c3RlcHBlcl9zdGF0ZTogU3RlcFRpbWVvdXQoXykgfCBTdGVwcGVyUmVhZHkgfCBTdGVwcGVyRG9uZSwgX30gYXMgcyA9PiBzO1xuXG5sZXQgcmVjIHRydW5jYXRlX2hpc3RvcnkgPSAofnNldHRpbmdzKSA9PlxuICBmdW5cbiAgfCAoW18sIC4uLmFzX10sIFtiLCAuLi5ic10pXG4gICAgICB3aGVuIHNob3VsZF9oaWRlX3N0ZXAofnNldHRpbmdzLCBiKSB8PiBmc3QgPT0gRXZhbCA9PlxuICAgIHRydW5jYXRlX2hpc3RvcnkofnNldHRpbmdzLCAoYXNfLCBicykpXG4gIHwgKFtfLCAuLi5hc19dLCBbXywgLi4uYnNdKSA9PiBTb21lKChhc18sIGJzKSlcbiAgfCBfID0+IE5vbmU7XG5cbmxldCBzdGVwX2JhY2t3YXJkID0gKH5zZXR0aW5ncywgczogdCkgPT4ge1xuICBsZXQgaCcgPVxuICAgIHRydW5jYXRlX2hpc3RvcnkofnNldHRpbmdzLCBzLmhpc3RvcnkpXG4gICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PXMuaGlzdG9yeSk7XG4gIHtcbiAgICBoaXN0b3J5OiBoJyxcbiAgICBuZXh0X29wdGlvbnM6IHtcbiAgICAgIGxldCAoY3MsIF8sIHN0KSA9IEFiYS5oZChoJyk7XG4gICAgICBkZWNvbXBvc2UoY3MudGVybSwgc3QpO1xuICAgIH0sXG4gICAgc3RlcHBlcl9zdGF0ZTogU3RlcHBlckRvbmUsXG4gIH07XG59O1xuXG5sZXQgY2FuX3VuZG8gPSAofnNldHRpbmdzLCBzOiB0KSA9PiB7XG4gIHRydW5jYXRlX2hpc3RvcnkofnNldHRpbmdzLCBzLmhpc3RvcnkpIHw+IE9wdGlvbi5pc19zb21lO1xufTtcblxubGV0IGdldF9qdXN0aWZpY2F0aW9uOiBzdGVwX2tpbmQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgTGV0QmluZCA9PiBcInN1YnN0aXR1dGlvblwiXG4gIHwgU2VxID0+IFwic2VxdWVuY2VcIlxuICB8IEZpeFVud3JhcCA9PiBcInVucm9sbCBmaXhwb2ludFwiXG4gIHwgVXBkYXRlVGVzdCA9PiBcInVwZGF0ZSB0ZXN0XCJcbiAgfCBUeXBGdW5BcCA9PiBcImFwcGx5IHR5cGUgZnVuY3Rpb25cIlxuICB8IEZ1bkFwID0+IFwiYXBwbHkgZnVuY3Rpb25cIlxuICB8IERlZmVycmVkQXAgPT4gXCJkZWZlcnJlZCBhcHBsaWNhdGlvblwiXG4gIHwgQnVpbHRpbldyYXAgPT4gXCJ3cmFwIGJ1aWx0aW5cIlxuICB8IEJ1aWx0aW5BcChzKSA9PiBcImV2YWx1YXRlIFwiICsrIHNcbiAgfCBVbk9wKEludChNaW51cykpXG4gIHwgQmluSW50T3AoUGx1cyB8IE1pbnVzIHwgVGltZXMgfCBQb3dlciB8IERpdmlkZSlcbiAgfCBCaW5GbG9hdE9wKFBsdXMgfCBNaW51cyB8IFRpbWVzIHwgUG93ZXIgfCBEaXZpZGUpID0+IFwiYXJpdGhtZXRpY1wiXG4gIHwgQmluSW50T3AoTGVzc1RoYW4gfCBMZXNzVGhhbk9yRXF1YWwgfCBHcmVhdGVyVGhhbiB8IEdyZWF0ZXJUaGFuT3JFcXVhbClcbiAgfCBCaW5GbG9hdE9wKExlc3NUaGFuIHwgTGVzc1RoYW5PckVxdWFsIHwgR3JlYXRlclRoYW4gfCBHcmVhdGVyVGhhbk9yRXF1YWwpID0+IFwiY29tcGFyaXNvblwiXG4gIHwgQmluSW50T3AoRXF1YWxzIHwgTm90RXF1YWxzKVxuICB8IEJpbkZsb2F0T3AoRXF1YWxzIHwgTm90RXF1YWxzKVxuICB8IEJpblN0cmluZ09wKEVxdWFscykgPT4gXCJjaGVjayBlcXVhbGl0eVwiXG4gIHwgQmluU3RyaW5nT3AoQ29uY2F0KSA9PiBcInN0cmluZyBtYW5pcHVsYXRpb25cIlxuICB8IFVuT3AoQm9vbChOb3QpKVxuICB8IEJpbkJvb2xPcChfKSA9PiBcImJvb2xlYW4gbG9naWNcIlxuICB8IENvbmRpdGlvbmFsKF8pID0+IFwiY29uZGl0aW9uYWxcIlxuICB8IExpc3RDb25zID0+IFwibGlzdCBtYW5pcHVsYXRpb25cIlxuICB8IExpc3RDb25jYXQgPT4gXCJsaXN0IG1hbmlwdWxhdGlvblwiXG4gIHwgQ2FzZUFwcGx5ID0+IFwiY2FzZSBzZWxlY3Rpb25cIlxuICB8IFByb2plY3Rpb24gPT4gXCJwcm9qZWN0aW9uXCIgLy8gVE9ETyhNYXR0KTogV2UgZG9uJ3Qgd2FudCB0byBzaG93IHByb2plY3Rpb24gdG8gdGhlIHVzZXJcbiAgfCBJbnZhbGlkU3RlcCA9PiBcImVycm9yXCJcbiAgfCBWYXJMb29rdXAgPT4gXCJ2YXJpYWJsZSBsb29rdXBcIlxuICB8IENhc3RUeXBBcFxuICB8IENhc3RBcFxuICB8IENhc3QgPT4gXCJjYXN0IGNhbGN1bHVzXCJcbiAgfCBGaXhDbG9zdXJlID0+IFwiZml4cG9pbnQgY2xvc3VyZVwiXG4gIHwgQ29tcGxldGVGaWx0ZXIgPT4gXCJjb21wbGV0ZSBmaWx0ZXJcIlxuICB8IENvbXBsZXRlQ2xvc3VyZSA9PiBcImNvbXBsZXRlIGNsb3N1cmVcIlxuICB8IEZ1bkNsb3N1cmUgPT4gXCJmdW5jdGlvbiBjbG9zdXJlXCJcbiAgfCBSZW1vdmVUeXBlQWxpYXMgPT4gXCJkZWZpbmUgdHlwZVwiXG4gIHwgUmVtb3ZlUGFyZW5zID0+IFwicmVtb3ZlIHBhcmVudGhlc2VzXCJcbiAgfCBVbk9wKE1ldGEoVW5xdW90ZSkpID0+IGZhaWx3aXRoKFwiSU5WQUxJRCBTVEVQXCIpO1xuXG50eXBlIHN0ZXBfaW5mbyA9IHtcbiAgaGlkZGVuX2hpc3Rvcnk6IEFiYS50KGEsIChzdGVwLCBJZC50KSksXG4gIGNob3Nlbl9zdGVwOiBvcHRpb24oc3RlcCksIC8vIFRoZSBzdGVwIHRoYXQgd2FzIHRha2VuIG5leHRcbiAgcHJldmlvdXNfc3RlcDogb3B0aW9uKChzdGVwLCBJZC50KSkgLy8gVGhlIHN0ZXAgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBhYm92ZSB0aGlzIG9uZSAoYW4gSWQgaW4gaW5jbHVkZWQgYmVjYXVzZSBpdCBtYXkgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBzdGVwIHdhcyB0YWtlbilcbn07XG5cbmxldCBnZXRfaGlzdG9yeSA9ICh+c2V0dGluZ3MsIHN0ZXBwZXIpID0+IHtcbiAgbGV0IHNob3VsZF9za2lwX3N0ZXAgPSBzdGVwID0+XG4gICAgc3RlcCB8PiBzaG91bGRfaGlkZV9zdGVwKH5zZXR0aW5ncykgfD4gZnN0ID09IEV2YWw7XG4gIGxldCBncm91cGVkX3N0ZXBzID1cbiAgICBBYmEuZm9sZF9yaWdodChcbiAgICAgICgoZCwgZWRpdG9yLCBzdGF0ZSksIHN0ZXAsIHJlc3VsdCkgPT5cbiAgICAgICAgaWYgKHNob3VsZF9za2lwX3N0ZXAoc3RlcCkpIHtcbiAgICAgICAgICBBYmEubWFwX2hkKEFiYS5jb25zKChkLCBlZGl0b3IsIHN0YXRlKSwgc3RlcCksIHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgQWJhLmNvbnMoQWJhLnNpbmdsZXRvbigoZCwgZWRpdG9yLCBzdGF0ZSkpLCBzdGVwLCByZXN1bHQpO1xuICAgICAgICB9LFxuICAgICAgKChkLCBlZGl0b3IsIHN0YXRlKSkgPT5cbiAgICAgICAgQWJhLnNpbmdsZXRvbihBYmEuc2luZ2xldG9uKChkLCBlZGl0b3IsIHN0YXRlKSkpLFxuICAgICAgc3RlcHBlci5oaXN0b3J5LFxuICAgIClcbiAgICB8PiBBYmEubWFwX2EoQWJhLnJldih4ID0+IHgsIHggPT4geCkpO1xuICBsZXQgcmVwbGFjZV9pZCA9ICh4LCB5LCAocywgeikpID0+IChzLCB4ID09IHogPyB5IDogeik7XG4gIGxldCB0cmFja19pZHMgPVxuICAgICAgKFxuICAgICAgICAoXG4gICAgICAgICAgY2hvc2VuX3N0ZXA6IG9wdGlvbihzdGVwKSxcbiAgICAgICAgICBoaWRkZW5faGlzdG9yeTogaGlzdG9yeSxcbiAgICAgICAgICBwcmV2aW91c19zdGVwOiBvcHRpb24oc3RlcCksXG4gICAgICAgICksXG4gICAgICApID0+IHtcbiAgICBsZXQgKHByZXZpb3VzX3N0ZXAsIGhpZGRlbl9oaXN0b3J5KSA9XG4gICAgICBBYmEuZm9sZF9sZWZ0KFxuICAgICAgICB4ID0+XG4gICAgICAgICAgKFxuICAgICAgICAgICAgT3B0aW9uLm1hcCh4ID0+ICh4LCB4LmRfbG9jJyB8PiBESEV4cC5yZXBfaWQpLCBwcmV2aW91c19zdGVwKSxcbiAgICAgICAgICAgIEFiYS5zaW5nbGV0b24oeCksXG4gICAgICAgICAgKSxcbiAgICAgICAgKChwcywgaGgpLCBoOiBzdGVwLCBocykgPT4ge1xuICAgICAgICAgIGxldCByZXBsYWNlbWVudCA9XG4gICAgICAgICAgICByZXBsYWNlX2lkKGguZF9sb2MgfD4gREhFeHAucmVwX2lkLCBoLmRfbG9jJyB8PiBESEV4cC5yZXBfaWQpO1xuICAgICAgICAgIChcbiAgICAgICAgICAgIE9wdGlvbi5tYXAocmVwbGFjZW1lbnQsIHBzKSxcbiAgICAgICAgICAgIEFiYS5jb25zKFxuICAgICAgICAgICAgICBocyxcbiAgICAgICAgICAgICAgKGgsIGguZF9sb2MnIHw+IERIRXhwLnJlcF9pZCksXG4gICAgICAgICAgICAgIEFiYS5tYXBfYihyZXBsYWNlbWVudCwgaGgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBoaWRkZW5faGlzdG9yeSxcbiAgICAgICk7XG4gICAge2hpZGRlbl9oaXN0b3J5LCBwcmV2aW91c19zdGVwLCBjaG9zZW5fc3RlcH07XG4gIH07XG4gIGxldCBwYWRkZWQgPSBncm91cGVkX3N0ZXBzIHw+IEFiYS5iYWJfdHJpcGxlcztcbiAgbGV0IHJlc3VsdCA9IHBhZGRlZCB8PiBMaXN0Lm1hcCh0cmFja19pZHMpO1xuICByZXN1bHQ7XG4gIC8vZ3JvdXBlZF9zdGVwcyB8PiBBYmEuYmFiX3RyaXBsZXMgfD4gTGlzdC5tYXAodHJhY2tfaWRzKTtcbn07XG5cbmxldCBoaWRkZW5fc3RlcHNfb2ZfaW5mbyA9IChpbmZvOiBzdGVwX2luZm8pOiBsaXN0KHN0ZXBfaW5mbykgPT4ge1xuICAvLyBub3RlIHRoZSBwcmV2aW91c19zdGVwIGZpZWxkIGlzIGZ1ZGdlZCBiZWNhdXNlIGl0IGlzIGN1cnJlbnRseSB1c3VzZWQuXG4gIExpc3QubWFwKFxuICAgICgocHJlLCAoaHMsIF8pLCBfKSkgPT5cbiAgICAgIHtcbiAgICAgICAgY2hvc2VuX3N0ZXA6IFNvbWUoaHMpLFxuICAgICAgICBoaWRkZW5faGlzdG9yeTogQWJhLnNpbmdsZXRvbihwcmUpLFxuICAgICAgICBwcmV2aW91c19zdGVwOiBOb25lLFxuICAgICAgfSxcbiAgICBpbmZvLmhpZGRlbl9oaXN0b3J5IHw+IEFiYS5hYmFfdHJpcGxlcyxcbiAgKTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGVyc2lzdGVudF9oaXN0b3J5ID0gQWJhLnQoKERIRXhwLnQsIEV2YWx1YXRvclN0YXRlLnQpLCBzdGVwKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwZXJzaXN0ZW50ID0ge3BlcnNpc3RlbnRfaGlzdG9yeX07XG5cbmxldCAoc2V4cF9vZl9wZXJzaXN0ZW50LCBwZXJzaXN0ZW50X29mX3NleHApID1cbiAgU3RydWN0dXJlU2hhcmVTZXhwLnN0cnVjdHVyZV9zaGFyZV9pbihcbiAgICBzZXhwX29mX3BlcnNpc3RlbnQsXG4gICAgcGVyc2lzdGVudF9vZl9zZXhwLFxuICApO1xuXG5sZXQgKHNleHBfb2ZfcGVyc2lzdGVudCwgcGVyc2lzdGVudF9vZl9zZXhwKSA9XG4gIFN0cnVjdHVyZVNoYXJlU2V4cC5zdHJ1Y3R1cmVfc2hhcmVfaW4oXG4gICAgc2V4cF9vZl9wZXJzaXN0ZW50LFxuICAgIHBlcnNpc3RlbnRfb2Zfc2V4cCxcbiAgKTtcblxubGV0IHRvX3BlcnNpc3RlbnRfaGlzdG9yeSA9IGhpc3RvcnkgPT5cbiAgQWJhLm1hcF9hKCgoe3Rlcm06IGQsIF99LCBfLCBzKTogYSkgPT4gKGQsIHMpLCBoaXN0b3J5KTtcblxuLy8gUmVtb3ZlIEV2YWxPYmoudCBvYmplY3RzIGZyb20gc3RlcHBlciB0byBwcmV2ZW50IHByb2JsZW1zIHdoZW4gbG9hZGluZ1xubGV0IHRvX3BlcnNpc3RlbnQ6IHQgPT4gcGVyc2lzdGVudCA9XG4gICh7aGlzdG9yeSwgX30pID0+IHtwZXJzaXN0ZW50X2hpc3Rvcnk6IGhpc3RvcnkgfD4gdG9fcGVyc2lzdGVudF9oaXN0b3J5fTtcblxubGV0IGZyb21fcGVyc2lzdGVudF9oaXN0b3J5ID0gKH5zZXR0aW5ncywgaGlzdG9yeSkgPT5cbiAgQWJhLm1hcF9hKFxuICAgICgoZCwgcykpID0+IHtcbiAgICAgIGxldCBlZGl0b3IgPSBFeHBUb1NlZ21lbnQuZXhwX3RvX2VkaXRvcihkLCB+aW5saW5lPWZhbHNlKTtcbiAgICAgIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5zdGF0aWNzX29mX3Rlcm0ofnNldHRpbmdzLCBkLCBlZGl0b3IpO1xuICAgICAgKHN0YXRpY3MsIGVkaXRvciwgcyk7XG4gICAgfSxcbiAgICBoaXN0b3J5LFxuICApO1xuXG5sZXQgZnJvbV9wZXJzaXN0ZW50ID0gKH5zZXR0aW5ncywge3BlcnNpc3RlbnRfaGlzdG9yeX0pID0+IHtcbiAgbGV0IGhpc3RvcnkgPSBwZXJzaXN0ZW50X2hpc3RvcnkgfD4gZnJvbV9wZXJzaXN0ZW50X2hpc3RvcnkofnNldHRpbmdzKTtcbiAge1xuICAgIGhpc3RvcnksXG4gICAgbmV4dF9vcHRpb25zOiB7XG4gICAgICBsZXQgKHt0ZXJtOiBkLCBffTogQ2FjaGVkU3RhdGljcy5zdGF0aWNzLCBfLCBzdGF0ZSkgPSBBYmEuaGQoaGlzdG9yeSk7XG4gICAgICBkZWNvbXBvc2UoZCwgc3RhdGUpO1xuICAgIH0sXG4gICAgc3RlcHBlcl9zdGF0ZTogU3RlcHBlckRvbmUsXG4gIH07XG59O1xuXG50eXBlIHNlbGVjdGlvbiA9IGludDtcblxubGV0IGdldF9zZWxlY3RlZF9lZGl0b3IgPSAofnNlbGVjdGlvbjogc2VsZWN0aW9uLCBzdGVwcGVyOiB0KSA9PiB7XG4gIGxldCsgKF8sIGVkaXRvciwgXykgPVxuICAgIExpc3QubnRoX29wdChzdGVwcGVyLmhpc3RvcnkgfD4gQWJhLmdldF9hcywgc2VsZWN0aW9uKTtcbiAgZWRpdG9yO1xufTtcblxubGV0IHB1dF9zZWxlY3RlZF9lZGl0b3IgPSAofnNlbGVjdGlvbjogc2VsZWN0aW9uLCBzdGVwcGVyOiB0LCBlZGl0b3IpID0+IHtcbiAgbGV0IGFzXyA9XG4gICAgc3RlcHBlci5oaXN0b3J5XG4gICAgfD4gQWJhLmdldF9hc1xuICAgIHw+IExpc3RVdGlsLm1hcF9udGgoc2VsZWN0aW9uLCAoKGQsIF8sIHMpKSA9PiAoZCwgZWRpdG9yLCBzKSk7XG4gIGxldCBoaXN0b3J5ID0gQWJhLm1rKGFzXywgc3RlcHBlci5oaXN0b3J5IHw+IEFiYS5nZXRfYnMpO1xuICB7Li4uc3RlcHBlciwgaGlzdG9yeX07XG59O1xuIiwib3BlbiBaaXBwZXI7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBtb3ZhYmlsaXR5ID1cbiAgfCBDYW5FbnRlcihpbnQsIGludClcbiAgfCBDYW5QYXNzXG4gIHwgQ2FudEV2ZW47XG5cbmxldCBtb3ZhYmlsaXR5ID0gKGNodW5raW5lc3M6IGNodW5raW5lc3MsIGxhYmVsLCBkZWxpbV9pZHgpOiBtb3ZhYmlsaXR5ID0+IHtcbiAgYXNzZXJ0KGRlbGltX2lkeCA8IExpc3QubGVuZ3RoKGxhYmVsKSk7XG4gIHN3aXRjaCAoY2h1bmtpbmVzcywgbGFiZWwsIGRlbGltX2lkeCkge1xuICB8IChCeUNoYXIsIF8sIF8pXG4gIHwgKE1vbm9CeUNoYXIsIFtfXSwgMCkgPT5cbiAgICBsZXQgY2hhcl9tYXggPSBUb2tlbi5sZW5ndGgoTGlzdC5udGgobGFiZWwsIGRlbGltX2lkeCkpIC0gMjtcbiAgICBjaGFyX21heCA8IDAgPyBDYW5QYXNzIDogQ2FuRW50ZXIoZGVsaW1faWR4LCBjaGFyX21heCk7XG4gIHwgKEJ5VG9rZW4sIF8sIF8pXG4gIHwgKE1vbm9CeUNoYXIsIF8sIF8pID0+IENhblBhc3NcbiAgfTtcbn07XG5cbmxldCBuZWlnaGJvcl9tb3ZhYmlsaXR5ID1cbiAgICAoY2h1bmtpbmVzczogY2h1bmtpbmVzcywge3JlbGF0aXZlczoge3NpYmxpbmdzLCBhbmNlc3RvcnN9LCBffTogdClcbiAgICA6IChtb3ZhYmlsaXR5LCBtb3ZhYmlsaXR5KSA9PiB7XG4gIGxldCBtb3ZhYmlsaXR5ID0gbW92YWJpbGl0eShjaHVua2luZXNzKTtcbiAgbGV0IChzdXBlcm5oYnJfbCwgc3VwZXJuaGJyX3IpID1cbiAgICBzd2l0Y2ggKGFuY2VzdG9ycykge1xuICAgIHwgW10gPT4gKENhbnRFdmVuLCBDYW50RXZlbilcbiAgICB8IFsoe2NoaWxkcmVuOiAobF9raWRzLCBfKSwgbGFiZWwsIF99LCBfKSwgLi4uX10gPT4gKFxuICAgICAgICBtb3ZhYmlsaXR5KGxhYmVsLCBMaXN0Lmxlbmd0aChsX2tpZHMpKSxcbiAgICAgICAgbW92YWJpbGl0eShsYWJlbCwgTGlzdC5sZW5ndGgobF9raWRzKSArIDEpLFxuICAgICAgKVxuICAgIH07XG4gIGxldCAobF9uaGJyLCByX25oYnIpID0gU2libGluZ3MubmVpZ2hib3JzKHNpYmxpbmdzKTtcbiAgbGV0IGwgPVxuICAgIHN3aXRjaCAobF9uaGJyKSB7XG4gICAgfCBTb21lKFRpbGUoe2xhYmVsLCBffSkpID0+IG1vdmFiaWxpdHkobGFiZWwsIExpc3QubGVuZ3RoKGxhYmVsKSAtIDEpXG4gICAgfCBTb21lKFNlY29uZGFyeSh3KSkgd2hlbiBTZWNvbmRhcnkuaXNfY29tbWVudCh3KSA9PlxuICAgICAgLy8gQ29tbWVudHMgYXJlIGFsd2F5cyBsZW5ndGggPj0gMlxuICAgICAgbGV0IGNvbnRlbnRfc3RyaW5nID0gU2Vjb25kYXJ5LmdldF9zdHJpbmcody5jb250ZW50KTtcbiAgICAgIENhbkVudGVyKFxuICAgICAgICBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAxLFxuICAgICAgICBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAyLFxuICAgICAgKTtcbiAgICB8IFNvbWUoXykgPT4gQ2FuUGFzc1xuICAgIHwgXyA9PiBzdXBlcm5oYnJfbFxuICAgIH07XG4gIGxldCByID1cbiAgICBzd2l0Y2ggKHJfbmhicikge1xuICAgIHwgU29tZShUaWxlKHtsYWJlbCwgX30pKSA9PiBtb3ZhYmlsaXR5KGxhYmVsLCAwKVxuICAgIHwgU29tZShTZWNvbmRhcnkodykpIHdoZW4gU2Vjb25kYXJ5LmlzX2NvbW1lbnQodykgPT5cbiAgICAgIC8vIENvbW1lbnRzIGFyZSBhbHdheXMgbGVuZ3RoID49IDJcbiAgICAgIGxldCBjb250ZW50X3N0cmluZyA9IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudCk7XG4gICAgICBDYW5FbnRlcigwLCBVbmljb2RlLmxlbmd0aChjb250ZW50X3N0cmluZykgLSAyKTtcbiAgICB8IFNvbWUoXykgPT4gQ2FuUGFzc1xuICAgIHwgXyA9PiBzdXBlcm5oYnJfclxuICAgIH07XG4gIChsLCByKTtcbn07XG5cbm1vZHVsZSBNYWtlID0gKE06IEVkaXRvci5NZXRhLlMpID0+IHtcbiAgbGV0IGNhcmV0X3BvaW50ID0gWmlwcGVyLmNhcmV0X3BvaW50KE0ubWVhc3VyZWQpO1xuXG4gIGxldCBwb3Bfb3V0ID0geiA9PiBTb21lKHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikpO1xuICBsZXQgcG9wX21vdmUgPSAoZCwgeikgPT4geiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIubW92ZShkKTtcbiAgbGV0IGlubmVyX2luY3IgPSAoZGVsaW0sIGMsIHopID0+XG4gICAgU29tZShaaXBwZXIuc2V0X2NhcmV0KElubmVyKGRlbGltLCBjICsgMSksIHopKTtcbiAgbGV0IGlubmVyX2RlY3IgPSB6ID0+IFNvbWUoWmlwcGVyLnVwZGF0ZV9jYXJldChaaXBwZXIuQ2FyZXQuZGVjcmVtZW50LCB6KSk7XG4gIGxldCBpbm5lcl9zdGFydCA9IChkX2luaXQsIHopID0+XG4gICAgU29tZShaaXBwZXIuc2V0X2NhcmV0KElubmVyKGRfaW5pdCwgMCksIHopKTtcbiAgbGV0IGlubmVyX2VuZCA9IChkLCBkX2luaXQsIGNfbWF4LCB6KSA9PlxuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcihkX2luaXQsIGNfbWF4KSkgfD4gWmlwcGVyLm1vdmUoZCk7XG5cbiAgbGV0IHByaW1hcnkgPSAoY2h1bmtpbmVzczogY2h1bmtpbmVzcywgZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIHN3aXRjaCAoZCwgei5jYXJldCwgbmVpZ2hib3JfbW92YWJpbGl0eShjaHVua2luZXNzLCB6KSkge1xuICAgIC8qIHRoaXMgY2FzZSBtYXliZSBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGJ1dCBjdXJyZW50bHkgY292ZXJzIGFuIGVkZ2VcbiAgICAgICAoc2VsZWN0IGFuIG9wZW4gcGFyZW5zIHRvIGxlZnQgb2YgYSBtdWx0aWNoYXIgdG9rZW4gYW5kIHByZXNzIGxlZnQpICovXG4gICAgfCBfIHdoZW4gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA9PiBwb3BfbW92ZShkLCB6KVxuICAgIHwgKExlZnQsIE91dGVyLCAoQ2FuRW50ZXIoZGxtLCBjX21heCksIF8pKSA9PlxuICAgICAgaW5uZXJfZW5kKGQsIGRsbSwgY19tYXgsIHopXG4gICAgfCAoTGVmdCwgT3V0ZXIsIF8pID0+IFppcHBlci5tb3ZlKGQsIHopXG4gICAgfCAoTGVmdCwgSW5uZXIoXyksIF8pIHdoZW4gY2h1bmtpbmVzcyA9PSBCeVRva2VuID0+IHBvcF9vdXQoeilcbiAgICB8IChMZWZ0LCBJbm5lcihfKSwgXykgPT5cbiAgICAgIFNvbWUoWmlwcGVyLnVwZGF0ZV9jYXJldChaaXBwZXIuQ2FyZXQuZGVjcmVtZW50LCB6KSlcbiAgICB8IChSaWdodCwgT3V0ZXIsIChfLCBDYW5FbnRlcihkX2luaXQsIF8pKSkgPT4gaW5uZXJfc3RhcnQoZF9pbml0LCB6KVxuICAgIHwgKFJpZ2h0LCBPdXRlciwgXykgPT4gWmlwcGVyLm1vdmUoZCwgeilcbiAgICB8IChSaWdodCwgSW5uZXIoXywgYyksIChfLCBDYW5FbnRlcihfLCBjX21heCkpKSB3aGVuIGMgPT0gY19tYXggPT5cbiAgICAgIHBvcF9tb3ZlKGQsIHopXG4gICAgfCAoUmlnaHQsIElubmVyKF8pLCBfKSB3aGVuIGNodW5raW5lc3MgPT0gQnlUb2tlbiA9PiBwb3BfbW92ZShkLCB6KVxuICAgIHwgKFJpZ2h0LCBJbm5lcihkZWxpbSwgYyksIF8pID0+IGlubmVyX2luY3IoZGVsaW0sIGMsIHopXG4gICAgfTtcbiAgfTtcblxuICBsZXQgaXNfYXRfc2lkZV9vZl9yb3cgPSAoZDogRGlyZWN0aW9uLnQsIHo6IFppcHBlci50KSA9PiB7XG4gICAgbGV0IE1lYXN1cmVkLlBvaW50Lntyb3csIGNvbH0gPSBjYXJldF9wb2ludCh6KTtcbiAgICBzd2l0Y2ggKFppcHBlci5tb3ZlKGQsIHopKSB7XG4gICAgfCBOb25lID0+IHRydWVcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIGxldCBNZWFzdXJlZC5Qb2ludC57cm93OiByb3dwLCBjb2w6IGNvbHB9ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgICByb3cgIT0gcm93cCB8fCBjb2wgPT0gY29scDtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBkb190b3dhcmRzID1cbiAgICAgIChcbiAgICAgICAgfmFuY2hvcjogb3B0aW9uKE1lYXN1cmVkLlBvaW50LnQpPT8sXG4gICAgICAgIGY6IChEaXJlY3Rpb24udCwgdCkgPT4gb3B0aW9uKHQpLFxuICAgICAgICBnb2FsOiBNZWFzdXJlZC5Qb2ludC50LFxuICAgICAgICB6OiB0LFxuICAgICAgKVxuICAgICAgOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCBpbml0ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IGQgPVxuICAgICAgZ29hbC5yb3cgPCBpbml0LnJvdyB8fCBnb2FsLnJvdyA9PSBpbml0LnJvdyAmJiBnb2FsLmNvbCA8IGluaXQuY29sXG4gICAgICAgID8gRGlyZWN0aW9uLkxlZnQgOiBSaWdodDtcbiAgICBsZXQgcmVjIGdvID0gKHByZXY6IHQsIGN1cnI6IHQpID0+IHtcbiAgICAgIGxldCBjdXJyX3AgPSBjYXJldF9wb2ludChjdXJyKTtcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIE1lYXN1cmVkLlBvaW50LmRjb21wKGQsIGN1cnJfcC5jb2wsIGdvYWwuY29sKSxcbiAgICAgICAgTWVhc3VyZWQuUG9pbnQuZGNvbXAoZCwgY3Vycl9wLnJvdywgZ29hbC5yb3cpLFxuICAgICAgKSB7XG4gICAgICB8IChFeGFjdCwgRXhhY3QpID0+IGN1cnJcbiAgICAgIHwgKF8sIE92ZXIpID0+IHByZXZcbiAgICAgIHwgKF8sIFVuZGVyKVxuICAgICAgfCAoVW5kZXIsIEV4YWN0KSA9PlxuICAgICAgICBzd2l0Y2ggKGYoZCwgY3VycikpIHtcbiAgICAgICAgfCBOb25lID0+IGN1cnJcbiAgICAgICAgfCBTb21lKG5leHQpID0+IGdvKGN1cnIsIG5leHQpXG4gICAgICAgIH1cbiAgICAgIHwgKE92ZXIsIEV4YWN0KSA9PlxuICAgICAgICBzd2l0Y2ggKGFuY2hvcikge1xuICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIHdoZW4geW91J3JlIChlZykgeW91J3JlIHRyeWluZ1xuICAgICAgICAgICAgIHRvIG1vdmUgZG93biwgYnV0IHlvdSdyZSBhdCB0aGUgcmlnaHQgZW5kIG9mIGEgcm93XG4gICAgICAgICAgICAgYW5kIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgbmV4dCByb3cgaXMgZnVydGhlclxuICAgICAgICAgICAgIHJpZ2h0IHRoYW4gdGhlIGN1cnJlbnQgcm93J3MgZW5kLiBJbiB0aGlzIGNhc2Ugd2VcbiAgICAgICAgICAgICB3YW50IHRvIHByb2dyZXNzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbmV3XG4gICAgICAgICAgICAgcG9zaXRpb24gd291bGQgYmUgY2xvc2VyIG9yIGZ1dGhlciBmcm9tIHRoZVxuICAgICAgICAgICAgIGdvYWwgY29sICovXG4gICAgICAgICAgaXNfYXRfc2lkZV9vZl9yb3coRGlyZWN0aW9uLnRvZ2dsZShkKSwgY3VycilcbiAgICAgICAgICAgID8gY3VyclxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIGxldCBkX2N1cnIgPSBhYnMoY3Vycl9wLmNvbCAtIGdvYWwuY29sKTtcbiAgICAgICAgICAgICAgbGV0IGRfcHJldiA9IGFicyhjYXJldF9wb2ludChwcmV2KS5jb2wgLSBnb2FsLmNvbCk7XG4gICAgICAgICAgICAgIC8vIGRlZmF1bHQgdG8gZ29pbmcgb3ZlciB3aGVuIGVxdWFsXG4gICAgICAgICAgICAgIGRfcHJldiA8IGRfY3VyciA/IHByZXYgOiBjdXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICB8IFNvbWUoYW5jaG9yKSA9PlxuICAgICAgICAgIGxldCBhbmNob3JfZCA9XG4gICAgICAgICAgICBnb2FsLnJvdyA8IGFuY2hvci5yb3dcbiAgICAgICAgICAgIHx8IGdvYWwucm93ID09IGFuY2hvci5yb3dcbiAgICAgICAgICAgICYmIGdvYWwuY29sIDwgYW5jaG9yLmNvbFxuICAgICAgICAgICAgICA/IERpcmVjdGlvbi5MZWZ0IDogUmlnaHQ7XG4gICAgICAgICAgYW5jaG9yX2QgPT0gZCA/IGN1cnIgOiBwcmV2O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgbGV0IHJlcyA9IGdvKHosIHopO1xuICAgIE1lYXN1cmVkLlBvaW50LmVxdWFscyhjYXJldF9wb2ludChyZXMpLCBjYXJldF9wb2ludCh6KSlcbiAgICAgID8gTm9uZSA6IFNvbWUocmVzKTtcbiAgfTtcbiAgbGV0IGRvX3ZlcnRpY2FsID1cbiAgICAgIChmOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSwgZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIC8qIEhlcmUgZiBzaG91bGQgYmUgYSBmdW5jdGlvbiB3aGljaCByZXN1bHRzIGluIHN0cmljdCBkLXdhcmRzXG4gICAgICAgbW92ZW1lbnQgb2YgdGhlIGNhcmV0LiBJdGVyYXRlIGYgdW50aWwgd2UgZ2V0IHRvIHRoZSBjbG9zZXRcbiAgICAgICBjYXJldCBwb3NpdGlvbiB0byBhIHRhcmdldCBkZXJpdmVkIGZyb20gdGhlIGluaXRpYWwgcG9zaXRpb24gKi9cbiAgICBsZXQgY3VyX3AgPSBjYXJldF9wb2ludCh6KTtcbiAgICBsZXQgZ29hbCA9XG4gICAgICBNZWFzdXJlZC5Qb2ludC57XG4gICAgICAgIGNvbDogTS5jb2xfdGFyZ2V0LFxuICAgICAgICByb3c6IGN1cl9wLnJvdyArIChkID09IFJpZ2h0ID8gMSA6ICgtMSkpLFxuICAgICAgfTtcbiAgICBkb190b3dhcmRzKGYsIGdvYWwsIHopO1xuICB9O1xuXG4gIGxldCBkb19leHRyZW1lID1cbiAgICAgIChmOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSwgZDogcGxhbmFyLCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQgY3VyX3AgPSBjYXJldF9wb2ludCh6KTtcbiAgICBsZXQgZ29hbDogTWVhc3VyZWQuUG9pbnQudCA9XG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIHwgUmlnaHQoXykgPT4ge2NvbDogSW50Lm1heF9pbnQsIHJvdzogY3VyX3Aucm93fVxuICAgICAgfCBMZWZ0KF8pID0+IHtjb2w6IDAsIHJvdzogY3VyX3Aucm93fVxuICAgICAgfCBVcCA9PiB7Y29sOiAwLCByb3c6IDB9XG4gICAgICB8IERvd24gPT4ge2NvbDogSW50Lm1heF9pbnQsIHJvdzogSW50Lm1heF9pbnR9XG4gICAgICB9O1xuICAgIGRvX3Rvd2FyZHMoZiwgZ29hbCwgeik7XG4gIH07XG5cbiAgbGV0IHRvX3N0YXJ0ID0gZG9fZXh0cmVtZShwcmltYXJ5KEJ5VG9rZW4pLCBVcCk7XG4gIGxldCB0b19lbmQgPSBkb19leHRyZW1lKHByaW1hcnkoQnlUb2tlbiksIERvd24pO1xuXG4gIGxldCB0b19lZGdlOiAoRGlyZWN0aW9uLnQsIHQpID0+IG9wdGlvbih0KSA9XG4gICAgZnVuXG4gICAgfCBMZWZ0ID0+IHRvX3N0YXJ0XG4gICAgfCBSaWdodCA9PiB0b19lbmQ7XG5cbiAgLyogRG8gbW92ZV9hY3Rpb24gdW50aWwgdGhlIGluZGljYXRlZCBwaWVjZSBpcyBzdWNoIHRoYXQgcGllY2VfcCBpcyB0cnVlLlxuICAgICBJZiBubyBzdWNoIHBpZWNlIGlzIGZvdW5kLCBkb24ndCBtb3ZlLiAqL1xuICBsZXQgcmVjIGRvX3VudGlsID1cbiAgICAgICAgICAoXG4gICAgICAgICAgICB+bW92ZV9maXJzdD10cnVlLFxuICAgICAgICAgICAgbW92ZV9hY3Rpb246IHQgPT4gb3B0aW9uKHQpLFxuICAgICAgICAgICAgcGllY2VfcDogUGllY2UudCA9PiBib29sLFxuICAgICAgICAgICAgejogdCxcbiAgICAgICAgICApXG4gICAgICAgICAgOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCogeiA9IG1vdmVfZmlyc3QgPyBtb3ZlX2FjdGlvbih6KSA6IFNvbWUoeik7XG4gICAgbGV0KiAocGllY2UsIF8sIF8pID0gSW5kaWNhdGVkLnBpZWNlJyh+bm9fd3M9ZmFsc2UsIH5pZ249XyA9PiBmYWxzZSwgeik7XG4gICAgaWYgKHBpZWNlX3AocGllY2UpKSB7XG4gICAgICBTb21lKHopO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQqIHogPSBtb3ZlX2ZpcnN0ID8gU29tZSh6KSA6IG1vdmVfYWN0aW9uKHopO1xuICAgICAgZG9fdW50aWwofm1vdmVfZmlyc3QsIG1vdmVfYWN0aW9uLCBwaWVjZV9wLCB6KTtcbiAgICB9O1xuICB9O1xuXG4gIC8qIERvIG1vdmVfYWN0aW9uIHVudGlsIHRoZSBpbmRpY2F0ZWQgcGllY2UgaXMgc3VjaCB0aGF0IHBpZWNlX3AgaXMgdHJ1ZSxcbiAgICAgcmVzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcvZW5kIGlmIG5vdCBmb3VuZCBpbiBmb3J3YXJkIGRpcmVjdGlvbi5cbiAgICAgSWYgbm8gc3VjaCBwaWVjZSBpcyBmb3VuZCwgZG9uJ3QgbW92ZS4gKi9cbiAgbGV0IGRvX3VudGlsX3dyYXAgPSAocCwgZCwgeikgPT5cbiAgICBzd2l0Y2ggKGRvX3VudGlsKHByaW1hcnkoQnlUb2tlbiwgZCksIHAsIHopKSB7XG4gICAgfCBOb25lID0+XG4gICAgICBsZXQqIHogPSB0b19lZGdlKERpcmVjdGlvbi50b2dnbGUoZCksIHopO1xuICAgICAgZG9fdW50aWwocHJpbWFyeShCeVRva2VuLCBkKSwgcCwgeik7XG4gICAgfCBTb21lKHopID0+IFNvbWUoeilcbiAgICB9O1xuXG4gIGxldCBqdW1wX3RvX2lkID0gKHo6IHQsIGlkOiBJZC50KTogb3B0aW9uKHQpID0+IHtcbiAgICBsZXQqIHtvcmlnaW4sIF99ID0gTWVhc3VyZWQuZmluZF9ieV9pZChpZCwgTS5tZWFzdXJlZCk7XG4gICAgbGV0IHogPVxuICAgICAgc3dpdGNoICh0b19zdGFydCh6KSkge1xuICAgICAgfCBOb25lID0+IHpcbiAgICAgIHwgU29tZSh6KSA9PiB6XG4gICAgICB9O1xuICAgIHN3aXRjaCAoZG9fdG93YXJkcyhwcmltYXJ5KEJ5Q2hhciksIG9yaWdpbiwgeikpIHtcbiAgICB8IE5vbmUgPT4gU29tZSh6KVxuICAgIHwgU29tZSh6KSA9PiBTb21lKHopXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdmVydGljYWwgPSAoZDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT5cbiAgICB6LnNlbGVjdGlvbi5jb250ZW50ID09IFtdXG4gICAgICA/IGRvX3ZlcnRpY2FsKHByaW1hcnkoQnlDaGFyKSwgZCwgeilcbiAgICAgIDogU29tZShaaXBwZXIuZGlyZWN0aW9uYWxfdW5zZWxlY3QoZCwgeikpO1xuXG4gIGxldCB0YXJnZXRzX3dpdGhpbl9yb3cgPSAoejogdCk6IGxpc3QodCkgPT4ge1xuICAgIGxldCBpbml0ID0gY2FyZXRfcG9pbnQoeik7XG4gICAgbGV0IHJlYyBnbyA9IChkOiBEaXJlY3Rpb24udCwgejogdCkgPT4ge1xuICAgICAgc3dpdGNoIChwcmltYXJ5KEJ5Q2hhciwgZCwgeikpIHtcbiAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgfCBTb21lKHopID0+XG4gICAgICAgIGlmIChjYXJldF9wb2ludCh6KS5yb3cgIT0gaW5pdC5yb3cpIHtcbiAgICAgICAgICBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzd2l0Y2ggKHBvcF9iYWNrcGFjayh6KSkge1xuICAgICAgICAgIHwgTm9uZSA9PiBnbyhkLCB6KVxuICAgICAgICAgIHwgU29tZShfKSA9PiBbeiwgLi4uZ28oZCwgeildXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIGxldCBjdXJyID1cbiAgICAgIHN3aXRjaCAocG9wX2JhY2twYWNrKHopKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShfKSA9PiBbel1cbiAgICAgIH07XG4gICAgTGlzdC5yZXYoZ28oTGVmdCwgeikpIEAgY3VyciBAIGdvKFJpZ2h0LCB6KTtcbiAgfTtcblxuICAvLyBUT0RPKGQpOiB1bmlmeSB0aGlzIGxvZ2ljIHdpdGggcmVzdCBvZiBtb3ZlbWVudCBsb2dpY1xuICBsZXQgcmVjIHRvX2JhY2twYWNrX3RhcmdldCA9IChkOiBwbGFuYXIsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAgIGxldCBkb25lX29yX3RyeV9hZ2FpbiA9IChkLCB6KSA9PlxuICAgICAgc3dpdGNoIChwb3BfYmFja3BhY2soeikpIHtcbiAgICAgIHwgTm9uZSA9PiB0b19iYWNrcGFja190YXJnZXQoZCwgeilcbiAgICAgIHwgU29tZShfKSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgTGVmdChjaHVuaykgPT5cbiAgICAgIGxldCogeiA9IHByaW1hcnkoY2h1bmssIExlZnQsIHopO1xuICAgICAgZG9uZV9vcl90cnlfYWdhaW4oZCwgeik7XG4gICAgfCBSaWdodChjaHVuaykgPT5cbiAgICAgIGxldCogeiA9IHByaW1hcnkoY2h1bmssIFJpZ2h0LCB6KTtcbiAgICAgIGRvbmVfb3JfdHJ5X2FnYWluKGQsIHopO1xuICAgIHwgVXAgPT5cbiAgICAgIGxldCogeiA9IHZlcnRpY2FsKExlZnQsIHopO1xuICAgICAgbGV0IHpzID1cbiAgICAgICAgdGFyZ2V0c193aXRoaW5fcm93KHopXG4gICAgICAgIHw+IExpc3Quc29ydCgoejEsIHoyKSA9PiB7XG4gICAgICAgICAgICAgbGV0IGRpc3QxID0gY2FyZXRfcG9pbnQoejEpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgZGlzdDIgPSBjYXJldF9wb2ludCh6MikuY29sIC0gTS5jb2xfdGFyZ2V0O1xuICAgICAgICAgICAgIGxldCBjID0gSW50LmNvbXBhcmUoYWJzKGRpc3QxKSwgYWJzKGRpc3QyKSk7XG4gICAgICAgICAgICAgLy8gZmF2b3IgbGVmdFxuICAgICAgICAgICAgIGMgIT0gMCA/IGMgOiBJbnQuY29tcGFyZShkaXN0MSwgZGlzdDIpO1xuICAgICAgICAgICB9KTtcbiAgICAgIHN3aXRjaCAoenMpIHtcbiAgICAgIHwgW10gPT4gdG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8IFt6LCAuLi5fXSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIHwgRG93biA9PlxuICAgICAgbGV0KiB6ID0gdmVydGljYWwoUmlnaHQsIHopO1xuICAgICAgbGV0IHpzID1cbiAgICAgICAgdGFyZ2V0c193aXRoaW5fcm93KHopXG4gICAgICAgIHw+IExpc3Quc29ydCgoejEsIHoyKSA9PiB7XG4gICAgICAgICAgICAgbGV0IGRpc3QxID0gY2FyZXRfcG9pbnQoejEpLmNvbCAtIE0uY29sX3RhcmdldDtcbiAgICAgICAgICAgICBsZXQgZGlzdDIgPSBjYXJldF9wb2ludCh6MikuY29sIC0gTS5jb2xfdGFyZ2V0O1xuICAgICAgICAgICAgIGxldCBjID0gSW50LmNvbXBhcmUoYWJzKGRpc3QxKSwgYWJzKGRpc3QyKSk7XG4gICAgICAgICAgICAgLy8gZmF2b3IgcmlnaHRcbiAgICAgICAgICAgICBjICE9IDAgPyBjIDogLSBJbnQuY29tcGFyZShkaXN0MSwgZGlzdDIpO1xuICAgICAgICAgICB9KTtcbiAgICAgIHN3aXRjaCAoenMpIHtcbiAgICAgIHwgW10gPT4gdG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgICB8IFt6LCAuLi5fXSA9PiBTb21lKHopXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbGV0IGdvID0gKGQ6IEFjdGlvbi5tb3ZlLCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT5cbiAgICBzd2l0Y2ggKGQpIHtcbiAgICB8IEdvYWwoUGllY2UocCwgZCkpID0+IGRvX3VudGlsX3dyYXAoQWN0aW9uLm9mX3BpZWNlX2dvYWwocCksIGQsIHopXG4gICAgfCBHb2FsKFBvaW50KGdvYWwpKSA9PlxuICAgICAgbGV0IHogPSBaaXBwZXIudW5zZWxlY3Qoeik7XG4gICAgICBkb190b3dhcmRzKHByaW1hcnkoQnlDaGFyKSwgZ29hbCwgeik7XG4gICAgfCBFeHRyZW1lKGQpID0+IGRvX2V4dHJlbWUocHJpbWFyeShCeVRva2VuKSwgZCwgeilcbiAgICB8IExvY2FsKGQpID0+XG4gICAgICB6XG4gICAgICB8PiAoXG4gICAgICAgIHN3aXRjaCAoZCkge1xuICAgICAgICB8IExlZnQoY2h1bmspID0+IHByaW1hcnkoY2h1bmssIExlZnQpXG4gICAgICAgIHwgUmlnaHQoY2h1bmspID0+IHByaW1hcnkoY2h1bmssIFJpZ2h0KVxuICAgICAgICB8IFVwID0+IHZlcnRpY2FsKExlZnQpXG4gICAgICAgIHwgRG93biA9PiB2ZXJ0aWNhbChSaWdodClcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH07XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBPcHRVdGlsLlN5bnRheDtcblxubW9kdWxlIE1ha2UgPSAoTTogRWRpdG9yLk1ldGEuUykgPT4ge1xuICBtb2R1bGUgTW92ZSA9IE1vdmUuTWFrZShNKTtcblxuICBsZXQgcHJpbWFyeSA9IChkOiBEaXJlY3Rpb24udCwgejogWmlwcGVyLnQpOiBvcHRpb24oWmlwcGVyLnQpID0+XG4gICAgaWYgKHouY2FyZXQgPT0gT3V0ZXIpIHtcbiAgICAgIFppcHBlci5zZWxlY3QoZCwgeik7XG4gICAgfSBlbHNlIGlmIChkID09IExlZnQpIHtcbiAgICAgIHpcbiAgICAgIHw+IFppcHBlci5zZXRfY2FyZXQoT3V0ZXIpXG4gICAgICB8PiBaaXBwZXIubW92ZShSaWdodClcbiAgICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oWmlwcGVyLnNlbGVjdChkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLnNlbGVjdChkKTtcbiAgICB9O1xuXG4gIGxldCB2ZXJ0aWNhbCA9IChkOiBEaXJlY3Rpb24udCwgZWQ6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PlxuICAgIE1vdmUuZG9fdmVydGljYWwocHJpbWFyeSwgZCwgZWQpO1xuXG4gIGxldCByYW5nZSA9IChsOiBJZC50LCByOiBJZC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIGxldCogeiA9IE1vdmUuanVtcF90b19pZCh6LCBsKTtcbiAgICBsZXQqIE1lYXN1cmVkLntsYXN0LCBffSA9IE1lYXN1cmVkLmZpbmRfYnlfaWQociwgTS5tZWFzdXJlZCk7XG4gICAgTW92ZS5kb190b3dhcmRzKHByaW1hcnksIGxhc3QsIHopO1xuICB9O1xuXG4gIGxldCB0ZXJtID0gKGlkOiBJZC50LCB6OiBaaXBwZXIudCk6IG9wdGlvbihaaXBwZXIudCkgPT4ge1xuICAgIC8vVE9ETzogY2hlY2sgaWYgc2VsZWN0aW9uIGlzIGFscmVhZHkgYSB0ZXJtOiBuby1vcCBpbiB0aGlzIGNhc2VcbiAgICBsZXQqIChsLCByKSA9IFRlcm1SYW5nZXMuZmluZF9vcHQoaWQsIE0udGVybV9yYW5nZXMpO1xuICAgIHJhbmdlKFBpZWNlLmlkKGwpLCBQaWVjZS5pZChyKSwgeik7XG4gIH07XG5cbiAgbGV0IHRpbGUgPSAoaWQ6IElkLnQsIHo6IFppcHBlci50KTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gICAgbGV0KiB6ID0gTW92ZS5qdW1wX3RvX2lkKHosIGlkKTtcbiAgICBsZXQqIE1lYXN1cmVkLntsYXN0LCBffSA9IE1lYXN1cmVkLmZpbmRfYnlfaWQoaWQsIE0ubWVhc3VyZWQpO1xuICAgIE1vdmUuZG9fdG93YXJkcyhwcmltYXJ5LCBsYXN0LCB6KTtcbiAgfTtcblxuICBsZXQgZ28gPSAoZDogQWN0aW9uLm1vdmUsIHo6IFppcHBlci50KSA9PlxuICAgIHN3aXRjaCAoZCkge1xuICAgIHwgR29hbChQaWVjZShfKSkgPT4gZmFpbHdpdGgoXCJTZWxlY3QuZ28gbm90IGltcGxlbWVudGVkIGZvciBQaWVjZSBHb2FsXCIpXG4gICAgfCBHb2FsKFBvaW50KGdvYWwpKSA9PlxuICAgICAgbGV0IGFuY2hvciA9IHogfD4gWmlwcGVyLnRvZ2dsZV9mb2N1cyB8PiBaaXBwZXIuY2FyZXRfcG9pbnQoTS5tZWFzdXJlZCk7XG4gICAgICBNb3ZlLmRvX3Rvd2FyZHMofmFuY2hvciwgcHJpbWFyeSwgZ29hbCwgeik7XG4gICAgfCBFeHRyZW1lKGQpID0+IE1vdmUuZG9fZXh0cmVtZShwcmltYXJ5LCBkLCB6KVxuICAgIHwgTG9jYWwoZCkgPT5cbiAgICAgIC8qIE5vdGU6IERvbid0IHVwZGF0ZSB0YXJnZXQgb24gdmVydGljYWwgc2VsZWN0aW9uICovXG4gICAgICBzd2l0Y2ggKGQpIHtcbiAgICAgIHwgTGVmdChfKSA9PiBwcmltYXJ5KExlZnQsIHopXG4gICAgICB8IFJpZ2h0KF8pID0+IHByaW1hcnkoUmlnaHQsIHopXG4gICAgICB8IFVwID0+IHZlcnRpY2FsKExlZnQsIHopXG4gICAgICB8IERvd24gPT4gdmVydGljYWwoUmlnaHQsIHopXG4gICAgICB9XG4gICAgfTtcbn07XG4iLCJvcGVuIFppcHBlcjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBiYXJmID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLyogUmVtb3ZlcyB0aGUgZC1uZWlnaGJvcmluZyB0aWxlIGFuZCBkcm9wcyBmcm9tIGJhY2twYWNrO1xuICAgICBwcmVjb25kaXRpb246IHRoZSBkLW5laWdoYm9yIHNob3VsZCBiZSBhIG1vbm90aWxlXG4gICAgIHN0cmluZy1tYXRjaGluZyB0aGUgZHJvcHBpbmcgc2hhcmQgKi9cbiAgbGV0KiB6ID0gZGVsZXRlKGQsIHopO1xuICBsZXQrIHogPSBwdXRfZG93bihkLCB6KTtcbiAgejtcbn07XG5cbmxldCBkZWxheWVkX2V4cGFuZCA9ICh0OiBUb2tlbi50LCBjYXJldDogRGlyZWN0aW9uLnQsIHo6IHQpOiBvcHRpb24odCkgPT4ge1xuICAvKiBSZW1vdmVzIHRoZSBkLW5laWdoYm9yaW5nIHRpbGUgYW5kIHJlY29uc3RydWN0cyBpdCwgdHJpZ2dlcmluZ1xuICAgICBrZXl3b3JkLWV4cGFuc2lvbjsgcHJlY29uZGl0aW9uOiB0aGUgZC1uZWlnaGJvciBzaG91bGQgYmUgYSBtb25vdGlsZVxuICAgICBzdHJpbmctbWF0Y2hpbmcgYSBrZXl3b3JkIG9mIGFuIGV4cGFuZGluZyBmb3JtICovXG4gIGxldCAobmV3X2xhYmVsLCBiYWNrcGFjaykgPSBNb2xkcy5kZWxheWVkX2V4cGFuc2lvbih0KTtcbiAgbGV0KyB6ID0gZGVsZXRlKGNhcmV0LCB6KTtcbiAgY29uc3RydWN0KH5iYWNrcGFjaywgfmNhcmV0LCBuZXdfbGFiZWwsIHopO1xufTtcblxubGV0IGV4cGFuZF9vcl9iYXJmX2xlZnRfbmVpZ2hib3IgPSAoeiBhcyBzOiB0KTogb3B0aW9uKHQpID0+XG4gIC8qIElmIGxlZnQgbmVpZ2hib3IgaXMgYSBtb25vdGlsZSAoYSkgc3RyaW5nLW1hdGNoaW5nIHRoZSBzaGFyZCBhdCB0aGVcbiAgICAgdG9wIG9mIHRoZSBiYWNrcGFjaywgYmFyZiBpdCwgb3IgKGIpIGFuIGV4cGFuc2luZyBrZXl3b3JkLCBleHBhbmQgaXQuICovXG4gIHN3aXRjaCAobGVmdF9uZWlnaGJvcl9tb25vdGlsZSh6LnJlbGF0aXZlcy5zaWJsaW5ncykpIHtcbiAgfCBTb21lKHQpIHdoZW4gQmFja3BhY2sud2lsbF9iYXJmKHQsIHouYmFja3BhY2spID0+IGJhcmYoTGVmdCwgcylcbiAgfCBTb21lKHQpIHdoZW4gTW9sZHMuaXNfZGVsYXllZCh0KSA9PiBkZWxheWVkX2V4cGFuZCh0LCBMZWZ0LCBzKVxuICB8IF8gPT4gU29tZShzKVxuICB9O1xuXG5sZXQgZXhwYW5kX29yX2JhcmZfcmlnaHRfbmVpZ2hib3IgPSAoeiBhcyBzOiB0KTogb3B0aW9uKHQpID0+XG4gIC8qIElmIHJpZ2h0IG5laWdoYm9yIGlzIGEgbW9ub3RpbGUgKGEpIHN0cmluZy1tYXRjaGluZyB0aGUgc2hhcmQgYXQgdGhlXG4gICAgIHRvcCBvZiB0aGUgYmFja3BhY2ssIGJhcmYgaXQsIG9yIChiKSBhbiBleHBhbnNpbmcga2V5d29yZCwgZXhwYW5kIGl0LiAqL1xuICBzd2l0Y2ggKHJpZ2h0X25laWdoYm9yX21vbm90aWxlKHoucmVsYXRpdmVzLnNpYmxpbmdzKSkge1xuICB8IFNvbWUodCkgd2hlbiBCYWNrcGFjay53aWxsX2JhcmYodCwgei5iYWNrcGFjaykgPT4gYmFyZihSaWdodCwgcylcbiAgfCBTb21lKHQpIHdoZW4gTW9sZHMuaXNfZGVsYXllZCh0KSA9PiBkZWxheWVkX2V4cGFuZCh0LCBSaWdodCwgcylcbiAgfCBfID0+IFNvbWUocylcbiAgfTtcblxubGV0IGdldF9kdW9fc2hhcmQgPSAoe2xhYmVsLCBzaGFyZHMsIF99OiBUaWxlLnQpID0+XG4gIGlmIChMaXN0Lmxlbmd0aChsYWJlbCkgPT0gMiAmJiBMaXN0Lmxlbmd0aChzaGFyZHMpID09IDEpIHtcbiAgICBMaXN0Lm50aF9vcHQobGFiZWwsIExpc3QuaGQoc2hhcmRzKSk7XG4gIH0gZWxzZSB7XG4gICAgTm9uZTtcbiAgfTtcblxubGV0IG5laWdoYm9yX2Nhbl9kdW9tZXJnZSA9XG4gICAgKHQ6IFRva2VuLnQsIHM6IFNpYmxpbmdzLnQpOiBvcHRpb24oKExhYmVsLnQsIERpcmVjdGlvbi50KSkgPT5cbiAgLyogQ2hlY2tzIGlmIGEgbmVpZ2hib3IsIHByZWZlcmVudGlhbGx5IHRoZSBsZWZ0IG5laWdoYm9yLCBpc1xuICAgICBhIHNoYXJkIG9mIGEgZHVvdGlsZSB3aGljaCBjYW4gYmUgbWVyZ2VkIHRvIGZvcm0gYSBtb25vdGlsZS5cbiAgICAgSXQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIChtb25vKWxhYmVsLCBhbmQgdGhlIGRpcmVjdGlvbiBvZlxuICAgICB0aGUgcmVsZXZhbnQgbmVpZ2hib3IuICovXG4gIHN3aXRjaCAoU2libGluZ3MubmVpZ2hib3JzKHMpKSB7XG4gIHwgKFNvbWUoVGlsZSh0aWxlKSksIF8pID0+XG4gICAgbGV0KiBzdGFydCA9IGdldF9kdW9fc2hhcmQodGlsZSk7XG4gICAgbGV0KyBtb25vX2xibCA9IEZvcm0uZHVvbWVyZ2VzKFtzdGFydCwgdF0pO1xuICAgIChtb25vX2xibCwgRGlyZWN0aW9uLkxlZnQpO1xuICB8IChfLCBTb21lKFRpbGUodGlsZSkpKSA9PlxuICAgIGxldCogbGFzdCA9IGdldF9kdW9fc2hhcmQodGlsZSk7XG4gICAgbGV0KyBtb25vX2xibCA9IEZvcm0uZHVvbWVyZ2VzKFt0LCBsYXN0XSk7XG4gICAgKG1vbm9fbGJsLCBEaXJlY3Rpb24uUmlnaHQpO1xuICB8IF8gPT4gTm9uZVxuICB9O1xuXG5sZXQgbWFrZV9uZXdfdGlsZSA9ICh0OiBUb2tlbi50LCBjYXJldDogRGlyZWN0aW9uLnQsIHo6IHQpOiB0ID0+XG4gIC8qIEFkZHMgYSBuZXcgdGlsZSBhdCB0aGUgY2FyZXQuIElmIHRoZSBuZXcgdG9rZW4gbWF0Y2hlcyB0aGUgdG9wXG4gICAgIG9mIHRoZSBiYWNrcGFjaywgdGhlIGJhY2twYWNrIHNoYXJkIGlzIGRyb3BwZWQuIE90aGVyd2lzZSwgd2VcbiAgICAgY29uc3RydWN0IGEgbmV3IHRpbGUsIHdoaWNoIG1heSBpbW1lZGlhdGVseSBleHBhbmQuICovXG4gIEJhY2twYWNrLndpbGxfYmFyZih0LCB6LmJhY2twYWNrKVxuICAgID8gc3dpdGNoIChuZWlnaGJvcl9jYW5fZHVvbWVyZ2UodCwgei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gICAgICB8IFNvbWUoKGxibCwgZCkpID0+XG4gICAgICAgIFppcHBlci5yZXBsYWNlKH5jYXJldD1kLCB+YmFja3BhY2s9ZCwgbGJsLCB6KSB8PiBPcHRpb24uZ2V0XG4gICAgICB8IE5vbmUgPT4gcHV0X2Rvd24oY2FyZXQsIHopIHw+IE9wdGlvbi5nZXRcbiAgICAgIH1cbiAgICA6IHtcbiAgICAgIGxldCAobGJsLCBiYWNrcGFjaykgPSBNb2xkcy5pbnN0YW50X2V4cGFuc2lvbih0KTtcbiAgICAgIGxldCB6ID0gY29uc3RydWN0KH5jYXJldCwgfmJhY2twYWNrLCBsYmwsIHopO1xuICAgICAgejtcbiAgICB9O1xuXG5sZXQgZXhwYW5kX25laWdoYm9yc19hbmRfbWFrZV9uZXdfdGlsZSA9IChjaGFyOiBUb2tlbi50LCBzdGF0ZTogdCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIFRyaWdnZXIgYSB0b2tlbiBib3VuZGFyeSBldmVudCBhbmQgY3JlYXRlIGEgbmV3IHRpbGUuXG4gICAgIFRoaXMgcHJvY2VzcyBwb3RlbnRpYWxseSBpbnZvbHZlcyBib3RoIG5laWdoYm9yaW5nIHRpbGVzLFxuICAgICBwb3RlbnRpYWxseSB0cmlnZ2VyaW5nIHVwIHRvIDMgZXhwYW5zaW9ucyBvciBiYWNrcGFjayBiYXJmcy5cbiAgICAgSW4gcGFydGljdWxhciwgYm90aCBsZWZ0IGFuZCByaWdodCBuZWlnaGJvcmluZyBtb25vdGlsZXMgbWF5XG4gICAgIHVuZGVyZ28gZGVsYXllZCAoYWthIGtleXdvcmQpIGV4cGFuc2lvbiwgYW5kIHRoZSBuZXdseS1jcmVhdGVkXG4gICAgIHNpbmdsZS1jaGFyYWN0ZXIgdG9rZW4gbWF5IHVuZGVyZ28gaW5zdGFudCBleHBhbnNpb24uIEN1cnJlbnRseVxuICAgICBtYWRlIHRoZSBkZWNpc2lvbiB0byBleHBhbmQgb3IgYmFyZiB0aGUgbmVpZ2hib3JzIGJlZm9yZSBtYWtpbmdcbiAgICAgdGhlIG5ldyB0aWxlIGJlY2F1c2UgYmFyZmluZyBpcyBsaW1pdGVkIHRvIHRoZSB0b3Agb2YgdGhlIGJhY2twYWNrLFxuICAgICBhbmQgSSB3YW50ZWQgdGhpbmdzIGxpa2UgXCJpZnx0aGVuXCIsIHdoZW4geW91IGVudGVyIGEgXCIoXCIsIHRvXG4gICAgIGJhcmYgdGhlIFwidGhlblwiLCBiZWZvcmUgaXQgaXMgYnVyaWVkIGJ5IHRoZSBcIilcIiBhZGRlZCB0byB0aGUgQlAuXG4gICAgIFRoZSBvcmRlciBoZXJlIGNvdWxkIGJlIHJldmlzaXRlZCBpZiBiYXJmaW5nIHdhcyBtb3JlIHNvcGhpc3RpY2F0ZWQuXG4gICAgICovXG4gIGxldCogeiA9IGV4cGFuZF9vcl9iYXJmX2xlZnRfbmVpZ2hib3Ioc3RhdGUpO1xuICAvL2xldCAoeikgPSByZWdyb3V0KExlZnQsIHopO1xuICAvKiBOb3RlIHRvIGRhdmlkOiBJJ20gbm90IHN1cmUgd2h5IHRoZSBhYm92ZSByZWdyb3V0IGlzIG5lY2Vzc2FyeS5cbiAgICAgV2l0aG91dCBpdCwgdGhlcmUgaXMgYSBOb25jb252ZXggc2VnbWVudCBlcnJvciB0aHJvd24gaW4gZXhhY3RseVxuICAgICBvbmUgY2FzZSwgdGhlIGRvdWJsZSBiYXJmIGNhc2U6IGluc2VydCBzcGFjZSBvbiBcImlmIHRoZW58ZWxzZVwiICovXG4gIGxldCsgeiA9IGV4cGFuZF9vcl9iYXJmX3JpZ2h0X25laWdoYm9yKHopO1xuICBtYWtlX25ld190aWxlKGNoYXIsIExlZnQsIHopO1xufTtcblxubGV0IHJlcGxhY2VfdGlsZSA9ICh0OiBUb2tlbi50LCBkOiBEaXJlY3Rpb24udCwgejogdCk6IG9wdGlvbih0KSA9PiB7XG4gIGxldCsgeiA9IGRlbGV0ZShkLCB6KTtcbiAgbWFrZV9uZXdfdGlsZSh0LCBkLCB6KTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYXBwZW5kYWJpbGl0eSA9XG4gIHwgQXBwZW5kTGVmdChUb2tlbi50KVxuICB8IEFwcGVuZFJpZ2h0KFRva2VuLnQpXG4gIHwgTWFrZU5ldztcblxubGV0IHNpYmxpbmdfYXBwZW5kYWJpbGl0eTogKHN0cmluZywgU2libGluZ3MudCkgPT4gYXBwZW5kYWJpbGl0eSA9XG4gIChjaGFyLCBzaWJsaW5ncykgPT5cbiAgICBzd2l0Y2ggKG5laWdoYm9yX21vbm90aWxlcyhzaWJsaW5ncykpIHtcbiAgICB8IChTb21lKHQpLCBfKSB3aGVuIE1vbGRzLmFsbG93X2FwcGVuZF9yaWdodCh0LCBjaGFyKSA9PlxuICAgICAgQXBwZW5kTGVmdCh0ICsrIGNoYXIpXG4gICAgfCAoXywgU29tZSh0KSkgd2hlbiBNb2xkcy5hbGxvd19hcHBlbmRfbGVmdChjaGFyLCB0KSA9PlxuICAgICAgQXBwZW5kUmlnaHQoY2hhciArKyB0KVxuICAgIHwgXyA9PiBNYWtlTmV3XG4gICAgfTtcblxubGV0IGluc2VydF9vdXRlciA9IChjaGFyOiBzdHJpbmcsIHogYXMgc3RhdGU6IHQpOiBvcHRpb24odCkgPT5cbiAgc3dpdGNoIChzaWJsaW5nX2FwcGVuZGFiaWxpdHkoY2hhciwgei5yZWxhdGl2ZXMuc2libGluZ3MpKSB7XG4gIHwgTWFrZU5ldyA9PiBleHBhbmRfbmVpZ2hib3JzX2FuZF9tYWtlX25ld190aWxlKGNoYXIsIHN0YXRlKVxuICB8IEFwcGVuZExlZnQodCkgPT4gcmVwbGFjZV90aWxlKHQsIExlZnQsIHN0YXRlKVxuICB8IEFwcGVuZFJpZ2h0KHQpID0+IHJlcGxhY2VfdGlsZSh0LCBSaWdodCwgc3RhdGUpXG4gIH07XG5cbmxldCBpbnNlcnRfZHVvID0gKGxibDogTGFiZWwudCwgejogb3B0aW9uKHQpKTogb3B0aW9uKHQpID0+XG4gIHpcbiAgfD4gT3B0aW9uLm1hcCh6ID0+IFppcHBlci5jb25zdHJ1Y3QofmNhcmV0PUxlZnQsIH5iYWNrcGFjaz1MZWZ0LCBsYmwsIHopKVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKHogPT4ge1xuICAgICAgIC8vTk9URTogcmVncm91dCB0byBwdXQgZS5nLiBhcCgxfCkgYmFjayB0b2dldGhlclxuICAgICAgIHpcbiAgICAgICB8PiByZW1vbGRfcmVncm91dChMZWZ0KVxuICAgICAgIHw+IFppcHBlci5wdXRfZG93bihMZWZ0KVxuICAgICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oWmlwcGVyLm1vdmUoTGVmdCkpXG4gICAgIH0pO1xuXG5sZXQgaW5zZXJ0X21vbm9zID0gKGw6IFRva2VuLnQsIHI6IFRva2VuLnQsIHo6IG9wdGlvbih0KSk6IG9wdGlvbih0KSA9PlxuICB6XG4gIHw+IE9wdGlvbi5tYXAoWmlwcGVyLmNvbnN0cnVjdF9tb25vKFJpZ2h0LCByKSlcbiAgfD4gT3B0aW9uLm1hcChaaXBwZXIuY29uc3RydWN0X21vbm8oTGVmdCwgbCkpO1xuXG5sZXQgc3BsaXQgPSAoejogdCwgY2hhcjogc3RyaW5nLCBpZHg6IGludCwgdDogVG9rZW4udCk6IG9wdGlvbih0KSA9PiB7XG4gIC8qIEN1cnJlbnQgdGhpcyBuZWNlc3NhcmlseSBjcmVhdGVzIHRocmVlIHRva2VuczsgdHdvIGZyb20gc3BsaXR0aW5nXG4gICAqIHRoZSBleGlzdGluZyBvbmUsIGFuZCBhIG5ldyBvbmUuIFRoZSB0d28gc3BsaXR0aW5nIHRva2VucyBtYXkgYmVjb21lXG4gICAqIGRlbGltaXRlcnMgb2YgdGhlIHNhbWUgdGltZSAoZS5nLiBgW3xdYD0+YFs8PnxdYCkuIEluIHRoZSBmdXR1cmUgaXRcbiAgICogbWF5IGJlIHBydWRlbnQgdG8gcmVsYXggdGhpcyBieSwgYWZ0ZXIgc3BsaXR0aW5nLCBmaXJzdCBhdHRlbXB0aW5nXG4gICAqIHRvIGFwcGVuZCB0aGUgbmV3IGNoYXIgdG8gdGhlIGxlZnQgaGFsZiwgYW5kIHRoZW4gdGhlIHJpZ2h0IGhhbGYsXG4gICAqIGFuZCBvbmx5IGlmIHRob3NlIGZhaWwgY3JlYXRpbmcgYSBuZXcgY2VudGVyIHRva2VuLiAqL1xuICBsZXQgKGwsIHIpID0gVG9rZW4uc3BsaXRfbnRoKGlkeCwgdCk7XG4gIHpcbiAgfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcilcbiAgfD4gWmlwcGVyLnNlbGVjdChSaWdodClcbiAgfD4gKFxuICAgIC8qIG92ZXJ3cml0ZSBzZWxlY3Rpb24gKi9cbiAgICBzd2l0Y2ggKEZvcm0uZHVvbWVyZ2VzKFtsLCByXSkpIHtcbiAgICB8IFNvbWUoXykgPT4gaW5zZXJ0X2R1byhbbCwgcl0pXG4gICAgfCBOb25lID0+IGluc2VydF9tb25vcyhsLCByKVxuICAgIH1cbiAgKVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKGV4cGFuZF9uZWlnaGJvcnNfYW5kX21ha2VfbmV3X3RpbGUoY2hhcikpO1xufTtcblxubGV0IG9wdF9yZWdyb2xkID0gZCA9PiBPcHRpb24ubWFwKHJlbW9sZF9yZWdyb3V0KGQpKTtcblxubGV0IG1vdmVfaW50b19pZl9zdHJpbmdsaXRfb3JfY29tbWVudCA9IChjaGFyLCB6KSA9PlxuICAvKiBUaGlzIGlzIHNwZWNpYWwtY2FzZSBsb2dpYyBmb3IgYWR2YW5jaW5nIHRoZSBjYXJldCB0byBwb3NpdGlvbiBiZXR3ZWVuIHRoZSBxdW90ZXNcbiAgICAgaW4gbmV3bHktY3JlYXRlZCBzdHJpbmdsaXRzLiBUaGUgbWFpbiBzdHJpbmdsaXQgc3BlY2lhbC1jYXNlIGlzIGluIFppcHBlci5jb25zdHVjdFxuICAgICBhbmQgaWRlYWxseSB0aGlzIGxvZ2ljIHdvdWxkIGJlIGxvY2F0ZWQgdGhlcmUgYXMgd2VsbCwgYnV0IGJvdGggcmVncm91dGluZyBhbmRcbiAgICAgc3Vic2VxdWVudCBjYXJldCBwb3NpdGlvbiBsb2dpYyBhdCB0aGlzIGZ1bmN0aW9uJ3MgY2FsbHNpdGVzIGRpY2F0ZSB0aGF0IHRoaXNcbiAgICAgYmUgZG9uZSBhZnRlci4gTm90IHRvbyBoYXBweSBhYm91dCB0aGlzIHRiaC4gKi9cbiAgRm9ybS5pc19zdHJpbmdfZGVsaW0oY2hhcikgfHwgRm9ybS5pc19jb21tZW50X2RlbGltKGNoYXIpXG4gICAgPyBzd2l0Y2ggKG1vdmUoTGVmdCwgeikpIHtcbiAgICAgIHwgTm9uZSA9PiB6XG4gICAgICB8IFNvbWUoeikgPT4geiB8PiBzZXRfY2FyZXQoSW5uZXIoMCwgMCkpXG4gICAgICB9XG4gICAgOiB6O1xuXG5sZXQgY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudCA9IChjaGFyLCB0KSA9PlxuICBGb3JtLmlzX3N0cmluZyh0KVxuICAmJiBGb3JtLmlzX3N0cmluZ19kZWxpbShjaGFyKVxuICB8fCBGb3JtLmlzX2NvbW1lbnQodClcbiAgJiYgRm9ybS5pc19jb21tZW50X2RlbGltKGNoYXIpO1xuXG5sZXQgZ28gPVxuICAgIChjaGFyOiBzdHJpbmcsIHtjYXJldCwgcmVsYXRpdmVzOiB7c2libGluZ3MsIF99LCBffSBhcyB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgLyogSWYgdGhlcmUncyBhIHNlbGVjdGlvbiwgZGVsZXRlIGl0IGJlZm9yZSBwcm9jZWVkaW5nICovXG4gIGxldCB6ID0gei5zZWxlY3Rpb24uY29udGVudCAhPSBbXSA/IFppcHBlci5kZXN0cnVjdCh6KSA6IHo7XG4gIHN3aXRjaCAoY2FyZXQsIG5laWdoYm9yX21vbm90aWxlcyhzaWJsaW5ncykpIHtcbiAgLyogSWYgd2UgdHJ5IHRvIGluc2VydCBhIHF1b3RlIGluc2lkZSBhbiBleGlzdGluZyBzdHJpbmcsIG9yIGEgI1xuICAgKiBpbiBhIGNvbW1lbnQsIHdlIGFyZSBpbnN0ZWFkIG1vdmVkIHRvIHRoZSByaWdodGhhbmQgc2lkZSBvZlxuICAgKiB0aGUgb3BlcmFuZC4gTm90ZSB0aGF0IHRoaXMgYmVoYXZpb3IgaXMgbG9hZC1iZWFyaW5nIGZvciB0aGVcbiAgICogY3VycmVudCBwYXJzaW5nIGFwcHJvYWNoIGluY2x1ZGluZyBQYXN0ZSAqL1xuICB8IChfLCAoXywgU29tZSh0KSkpIHdoZW4gY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyLCB0KSA9PlxuICAgIHogfD4gWmlwcGVyLnNldF9jYXJldChPdXRlcikgfD4gWmlwcGVyLm1vdmUoUmlnaHQpXG4gIHwgKE91dGVyLCAoU29tZSh0KSwgXykpIHdoZW4gY2xvc2luZ19zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyLCB0KSA9PlxuICAgIFNvbWUoeilcbiAgfCAoSW5uZXIoZF9pZHgsIG4pLCAoXywgU29tZSh0KSkpID0+XG4gICAgbGV0IGlkeCA9IG4gKyAxO1xuICAgIGxldCBuZXdfdCA9IFRva2VuLmluc2VydF9udGgoaWR4LCBjaGFyLCB0KTtcbiAgICAvKiBJZiBpbnNlcnRpbmcgd291bGRuJ3QgcHJvZHVjZSBhIHZhbGlkIHRva2VuLCBzcGxpdC4gVGhpcyBpc1xuICAgICAqIG1vc3RseSB0YXJnZXR0aW5nIHRoZSBjYXNlIG9mIGluc2VydGluZyBhbiBpbmZpeCBvcGVyYXRvclxuICAgICAqIGluc2lkZSBhbiBvcGVyYW5kIChvciBtb3JlIHJhcmVseSB2aWNlLXZlcnNhKS4gSW4gc3VjaCBjYXNlcyxcbiAgICAgKiBkdWUgdG8gdGhlIGN1cnJlbnQgTU9TVExZIGRpc2pvaW50ZWRuZXNzIG9mIHRoZXNlIGNoYXJhY3RlclxuICAgICAqIGNsYXNzZXMsIEFMTCAoaXNoPykgY3VycmVudCBzcGxpdHMgc2hvdWxkIGJlIDMtd2F5XG4gICAgICogc3BsaXRzIChhcyBvcHBvc2VkIHRvIDItd2F5KS4gVGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHlcbiAgICAgKiBraW5kIG9mIHNwbGl0dGluZyBzdXBwb3J0ZWQ7IHRoaXMgc2hvdWxkIGJlIHJldmlzaXRlZCBpZlxuICAgICAqIHdlIG1vdmUgdG8gbW9yZSBzdWJ0bGUgdG9rZW4gZGl2aXNpb24gbG9naWMgKi9cbiAgICBNb2xkcy5hbGxvd19pbnNlcnRpb24oY2hhciwgdCwgbmV3X3QpXG4gICAgICA/IHpcbiAgICAgICAgfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcihkX2lkeCwgaWR4KSlcbiAgICAgICAgfD4gWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgbmV3X3QpXG4gICAgICAgIHw+IG9wdF9yZWdyb2xkKExlZnQpXG4gICAgICA6IHNwbGl0KHosIGNoYXIsIGlkeCwgdCkgfD4gb3B0X3JlZ3JvbGQoUmlnaHQpO1xuICAvKiBDYW4ndCBpbnNlcnQgaW5zaWRlIGRlbGltaXRlciAqL1xuICB8IChJbm5lcihfLCBfKSwgKF8sIE5vbmUpKSA9PiBOb25lXG4gIHwgKE91dGVyLCAoXywgU29tZShfKSkpID0+XG4gICAgbGV0IGNhcmV0OiBaaXBwZXIuQ2FyZXQudCA9XG4gICAgICBzd2l0Y2ggKHNpYmxpbmdfYXBwZW5kYWJpbGl0eShjaGFyLCBzaWJsaW5ncykpIHtcbiAgICAgIHwgQXBwZW5kUmlnaHQoXykgPT5cbiAgICAgICAgLyogSWYgd2UncmUgYWRkaW5nIHRvIHRoZSByaWdodCwgbW92ZSBjYXJldCBpbnNpZGUgcmlnaHQgbmhici5cbiAgICAgICAgICogTm90ZSB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoaXMgaXMgYSBtb25vdGlsZSAqL1xuICAgICAgICBJbm5lcigwLCAwKVxuICAgICAgfCBNYWtlTmV3XG4gICAgICB8IEFwcGVuZExlZnQoXykgPT4gT3V0ZXJcbiAgICAgIH07XG4gICAgelxuICAgIHw+IGluc2VydF9vdXRlcihjaGFyKVxuICAgIHw+IE9wdGlvbi5tYXAoWmlwcGVyLnNldF9jYXJldChjYXJldCkpXG4gICAgfD4gb3B0X3JlZ3JvbGQoTGVmdClcbiAgICB8PiBPcHRpb24ubWFwKG1vdmVfaW50b19pZl9zdHJpbmdsaXRfb3JfY29tbWVudChjaGFyKSk7XG4gIHwgKE91dGVyLCAoXywgTm9uZSkpID0+XG4gICAgelxuICAgIHw+IGluc2VydF9vdXRlcihjaGFyKVxuICAgIHw+IG9wdF9yZWdyb2xkKExlZnQpXG4gICAgfD4gT3B0aW9uLm1hcChtb3ZlX2ludG9faWZfc3RyaW5nbGl0X29yX2NvbW1lbnQoY2hhcikpXG4gIH07XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBVdGlsLk9wdFV0aWwuU3ludGF4O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGNvZGU6IGxpc3Qoc3RyaW5nKSxcbiAgc2VsZWN0aW9uOiBsaXN0KHN0cmluZyksXG4gIGJhY2twYWNrOiBsaXN0KGxpc3Qoc3RyaW5nKSksXG59O1xuXG5sZXQgc2VnX29mX3ppcCA9IFppcHBlci5zZWdfd2l0aG91dF9idWZmZXI7XG5cbmxldCByZWMgb2Zfc2VnbWVudCA9ICh+aG9sZXMsIHNlZzogU2VnbWVudC50KTogc3RyaW5nID0+XG4gIHNlZyB8PiBMaXN0Lm1hcChvZl9waWVjZSh+aG9sZXMpKSB8PiBTdHJpbmcuY29uY2F0KFwiXCIpXG5hbmQgb2ZfcGllY2UgPSAofmhvbGVzLCBwOiBQaWVjZS50KTogc3RyaW5nID0+XG4gIHN3aXRjaCAocCkge1xuICB8IFRpbGUodCkgPT4gb2ZfdGlsZSh+aG9sZXMsIHQpXG4gIHwgR3JvdXQoe3NoYXBlOiBDb25jYXZlLCBffSkgPT4gXCIgXCJcbiAgfCBHcm91dCh7c2hhcGU6IENvbnZleCwgX30pIHdoZW4gaG9sZXMgIT0gTm9uZSA9PiBPcHRpb24uZ2V0KGhvbGVzKVxuICB8IEdyb3V0KHtzaGFwZTogQ29udmV4LCBffSkgPT4gXCIgXCJcbiAgfCBTZWNvbmRhcnkodykgPT5cbiAgICBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHcpID8gXCJcXG5cIiA6IFNlY29uZGFyeS5nZXRfc3RyaW5nKHcuY29udGVudClcbiAgfVxuYW5kIG9mX3RpbGUgPSAofmhvbGVzLCB0OiBUaWxlLnQpOiBzdHJpbmcgPT5cbiAgQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKVxuICB8PiBBYmEuam9pbihvZl9kZWxpbSh0KSwgb2Zfc2VnbWVudCh+aG9sZXMpKVxuICB8PiBTdHJpbmcuY29uY2F0KFwiXCIpXG5hbmQgb2ZfZGVsaW0gPSAodDogUGllY2UudGlsZSwgaTogaW50KTogc3RyaW5nID0+IExpc3QubnRoKHQubGFiZWwsIGkpO1xuXG5sZXQgdG9fc3RyaW5nX2Jhc2ljID0gKHo6IFppcHBlci50KTogc3RyaW5nID0+IHtcbiAgeiB8PiBzZWdfb2ZfemlwIHw+IG9mX3NlZ21lbnQofmhvbGVzPU5vbmUpO1xufTtcblxubGV0IGxpbmVzX3RvX2xpc3QgPSBTdHJpbmcuc3BsaXRfb25fY2hhcignXFxuJyk7XG5cbmxldCBjYXJldF9zdHIgPSBcIuKWkVwiO1xuXG5sZXQgdG9fcm93cyA9XG4gICAgKFxuICAgICAgfmhvbGVzOiBvcHRpb24oc3RyaW5nKSxcbiAgICAgIH5tZWFzdXJlZDogTWVhc3VyZWQudCxcbiAgICAgIH5jYXJldDogb3B0aW9uKE1lYXN1cmVkLlBvaW50LnQpLFxuICAgICAgfmluZGVudDogc3RyaW5nLFxuICAgICAgfnNlZ21lbnQ6IFNlZ21lbnQudCxcbiAgICApXG4gICAgOiBsaXN0KHN0cmluZykgPT4ge1xuICBsZXQgaW5kZW50X29mID0gaSA9PiBNZWFzdXJlZC5Sb3dzLmZpbmQoaSwgbWVhc3VyZWQucm93cykuaW5kZW50O1xuICBsZXQgbWtfaW5kZW50ID0gKGksIHIpID0+IFN0cmluZ1V0aWwucmVwZWF0KGluZGVudF9vZihpKSwgaW5kZW50KSArKyByO1xuICBsZXQgcm93cyA9XG4gICAgc2VnbWVudCB8PiBvZl9zZWdtZW50KH5ob2xlcykgfD4gbGluZXNfdG9fbGlzdCB8PiBMaXN0Lm1hcGkobWtfaW5kZW50KTtcbiAgc3dpdGNoIChjYXJldCkge1xuICB8IFNvbWUoe3JvdywgY29sfSkgPT5cbiAgICBzd2l0Y2ggKExpc3RVdGlsLnNwbGl0X250aF9vcHQocm93LCByb3dzKSkge1xuICAgIHwgU29tZSgocHJlLCBjYXJldF9yb3csIHN1ZikpIHdoZW4gY29sIDwgU3RyaW5nLmxlbmd0aChjYXJldF9yb3cpID0+XG4gICAgICBwcmUgQCBbU3RyaW5nVXRpbC5pbnNlcnRfbnRoKGNvbCwgY2FyZXRfc3RyLCBjYXJldF9yb3cpXSBAIHN1ZlxuICAgIHwgU29tZSgocHJlLCBjYXJldF9yb3csIHN1ZikpID0+IHByZSBAIFtjYXJldF9yb3cgKysgY2FyZXRfc3RyXSBAIHN1ZlxuICAgIHwgXyA9PiByb3dzXG4gICAgfVxuICB8IE5vbmUgPT4gcm93c1xuICB9O1xufTtcblxubGV0IHByZXR0eV9wcmludCA9ICh+bWVhc3VyZWQ6IE1lYXN1cmVkLnQsIHo6IFppcHBlci50KTogc3RyaW5nID0+XG4gIHRvX3Jvd3MoXG4gICAgfmhvbGVzPU5vbmUsXG4gICAgfm1lYXN1cmVkLFxuICAgIH5jYXJldD1Ob25lLFxuICAgIH5pbmRlbnQ9XCIgXCIsXG4gICAgfnNlZ21lbnQ9c2VnX29mX3ppcCh6KSxcbiAgKVxuICB8PiBTdHJpbmcuY29uY2F0KFwiXFxuXCIpO1xuXG5sZXQgdG9fc3RyaW5nX2VkaXRvciA9XG4gICAgKH5ob2xlczogb3B0aW9uKHN0cmluZyk9U29tZShcIlwiKSwgZWRpdG9yOiBFZGl0b3IudCk6IHN0cmluZyA9PlxuICB0b19yb3dzKFxuICAgIH5ob2xlcyxcbiAgICB+bWVhc3VyZWQ9ZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQsXG4gICAgfmNhcmV0PU5vbmUsXG4gICAgfmluZGVudD1cIlwiLFxuICAgIH5zZWdtZW50PXNlZ19vZl96aXAoZWRpdG9yLnN0YXRlLnppcHBlciksXG4gIClcbiAgfD4gU3RyaW5nLmNvbmNhdChcIlxcblwiKTtcblxubGV0IHRvX3N0cmluZ19zZWxlY3Rpb24gPSAoZWRpdG9yOiBFZGl0b3IudCk6IHN0cmluZyA9PlxuICB0b19yb3dzKFxuICAgIH5tZWFzdXJlZD1lZGl0b3Iuc3RhdGUubWV0YS5tZWFzdXJlZCxcbiAgICB+Y2FyZXQ9Tm9uZSxcbiAgICB+aW5kZW50PVwiIFwiLFxuICAgIH5ob2xlcz1Ob25lLFxuICAgIH5zZWdtZW50PWVkaXRvci5zdGF0ZS56aXBwZXIuc2VsZWN0aW9uLmNvbnRlbnQsXG4gIClcbiAgfD4gU3RyaW5nLmNvbmNhdChcIlxcblwiKTtcblxubGV0IHRvX2xvZyA9ICh+bWVhc3VyZWQ6IE1lYXN1cmVkLnQsIHo6IFppcHBlci50KTogdCA9PiB7XG4gIGNvZGU6XG4gICAgdG9fcm93cyhcbiAgICAgIH5ob2xlcz1Ob25lLFxuICAgICAgfm1lYXN1cmVkLFxuICAgICAgfmNhcmV0PVNvbWUoWmlwcGVyLmNhcmV0X3BvaW50KG1lYXN1cmVkLCB6KSksXG4gICAgICB+aW5kZW50PVwiIFwiLFxuICAgICAgfnNlZ21lbnQ9c2VnX29mX3ppcCh6KSxcbiAgICApLFxuICBzZWxlY3Rpb246IHouc2VsZWN0aW9uLmNvbnRlbnQgfD4gb2Zfc2VnbWVudCh+aG9sZXM9Tm9uZSkgfD4gbGluZXNfdG9fbGlzdCxcbiAgYmFja3BhY2s6XG4gICAgTGlzdC5tYXAoXG4gICAgICAoczogU2VsZWN0aW9uLnQpID0+XG4gICAgICAgIHMuY29udGVudCB8PiBvZl9zZWdtZW50KH5ob2xlcz1Ob25lKSB8PiBsaW5lc190b19saXN0LFxuICAgICAgei5iYWNrcGFjayxcbiAgICApLFxufTtcblxubGV0IHRvX2xvZ19mbGF0ID0gKH5tZWFzdXJlZCwgejogWmlwcGVyLnQpOiBzdHJpbmcgPT4ge1xuICBsZXQge2NvZGUsIHNlbGVjdGlvbiwgYmFja3BhY2t9ID0gdG9fbG9nKH5tZWFzdXJlZCwgeik7XG4gIFByaW50Zi5zcHJpbnRmKFxuICAgIFwiQ09ERTpcXG4lc1xcblNFTEVDVElPTjpcXG4lc1xcbiVzXFxuXCIsXG4gICAgU3RyaW5nLmNvbmNhdChcIlxcblwiLCBjb2RlKSxcbiAgICBTdHJpbmcuY29uY2F0KFwiXFxuXCIsIHNlbGVjdGlvbiksXG4gICAgYmFja3BhY2tcbiAgICB8PiBMaXN0Lm1hcGkoKGksIGIpID0+XG4gICAgICAgICBQcmludGYuc3ByaW50ZihcIkJQKCVkKTpcXG4gJXNcXG5cIiwgaSwgU3RyaW5nLmNvbmNhdChcIlxcblwiLCBiKSlcbiAgICAgICApXG4gICAgfD4gU3RyaW5nLmNvbmNhdChcIlwiKSxcbiAgKTtcbn07XG5cbmxldCB6aXBwZXJfb2Zfc3RyaW5nID1cbiAgICAofnppcHBlcl9pbml0PVppcHBlci5pbml0KCksIHN0cjogc3RyaW5nKTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gIGxldCBpbnNlcnQgPSAoejogb3B0aW9uKFppcHBlci50KSwgYzogc3RyaW5nKTogb3B0aW9uKFppcHBlci50KSA9PiB7XG4gICAgbGV0KiB6ID0gejtcbiAgICB0cnkoYyA9PSBcIlxcclwiID8gU29tZSh6KSA6IEluc2VydC5nbyhjID09IFwiXFxuXCIgPyBGb3JtLmxpbmVicmVhayA6IGMsIHopKSB7XG4gICAgfCBleG4gPT5cbiAgICAgIHByaW50X2VuZGxpbmUoXCJXQVJOOiB6aXBwZXJfb2Zfc3RyaW5nOiBcIiArKyBQcmludGV4Yy50b19zdHJpbmcoZXhuKSk7XG4gICAgICBOb25lO1xuICAgIH07XG4gIH07XG4gIHN0ciB8PiBVdGlsLlN0cmluZ1V0aWwudG9fbGlzdCB8PiBMaXN0LmZvbGRfbGVmdChpbnNlcnQsIFNvbWUoemlwcGVyX2luaXQpKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSB7XG4gIHppcHBlcjogc3RyaW5nLFxuICBiYWNrdXBfdGV4dDogc3RyaW5nLFxufTtcblxubGV0IHBlcnNpc3QgPSAoemlwcGVyOiBaaXBwZXIudCkgPT4ge1xuICB7XG4gICAgemlwcGVyOiBaaXBwZXIuc2V4cF9vZl90KHppcHBlcikgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZyxcbiAgICBiYWNrdXBfdGV4dDogUHJpbnRlci50b19zdHJpbmdfYmFzaWMoemlwcGVyKSxcbiAgfTtcbn07XG5cbmxldCB1bnBlcnNpc3QgPSAocGVyc2lzdGVkOiB0KSA9PlxuICB0cnkoU2V4cGxpYi5TZXhwLm9mX3N0cmluZyhwZXJzaXN0ZWQuemlwcGVyKSB8PiBaaXBwZXIudF9vZl9zZXhwKSB7XG4gIHwgXyA9PlxuICAgIHByaW50X2VuZGxpbmUoXG4gICAgICBcIldhcm5pbmc6IHVzaW5nIGJhY2t1cCB0ZXh0ISBTZXJpYWxpemF0aW9uIG1heSBiZSBmb3IgYW4gb2xkZXIgdmVyc2lvbiBvZiBIYXplbC5cIixcbiAgICApO1xuICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKHBlcnNpc3RlZC5iYWNrdXBfdGV4dCkpIHtcbiAgICB8IE5vbmUgPT4gWmlwcGVyLmluaXQoKVxuICAgIHwgU29tZSh6KSA9PiB6XG4gICAgfTtcbiAgfTtcblxubGV0IHNlcmlhbGl6ZSA9ICh6aXBwZXI6IFppcHBlci50KSA9PiB7XG4gIHBlcnNpc3QoemlwcGVyKSB8PiB5b2pzb25fb2ZfdCB8PiBZb2pzb24uU2FmZS50b19zdHJpbmc7XG59O1xuXG5sZXQgZGVzZXJpYWxpemUgPSAoZGF0YTogc3RyaW5nKSA9PiB7XG4gIGxldCBwZXJzaXN0ZWQgPSBkYXRhIHw+IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHw+IHRfb2ZfeW9qc29uO1xuICB1bnBlcnNpc3QocGVyc2lzdGVkKTtcbn07XG4iLCJvcGVuIFppcHBlcjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBkZXN0cnVjdCA9XG4gICAgKFxuICAgICAgZDogRGlyZWN0aW9uLnQsXG4gICAgICB7Y2FyZXQsIHJlbGF0aXZlczoge3NpYmxpbmdzOiAobF9zaWJzLCByX3NpYnMpLCBffSwgX30gYXMgejogdCxcbiAgICApXG4gICAgOiBvcHRpb24odCkgPT4ge1xuICAvKiBDb3VsZCBhZGQgY2hlY2tzIG9uIHZhbGlkIHRva2VucyAoYWxsIG9mIHRoZXNlIGhvbGQgYXNzdW1pbmcgc3Vic3RyaW5nKSAqL1xuICBsZXQgbGFzdF9pbm5lcl9wb3MgPSB0ID0+IFRva2VuLmxlbmd0aCh0KSAtIDI7XG4gIGxldCBkZWxldGVfcmlnaHQgPSB6ID0+XG4gICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIuZGVsZXRlKFJpZ2h0KTtcbiAgbGV0IGRlbGV0ZV9sZWZ0ID0gWmlwcGVyLmRlbGV0ZShMZWZ0KTtcbiAgbGV0IGNvbnN0cnVjdF9yaWdodCA9IChsLCBzKSA9PlxuICAgIE9wdGlvbi5tYXAoWmlwcGVyLmNvbnN0cnVjdCh+Y2FyZXQ9UmlnaHQsIH5iYWNrcGFjaz1SaWdodCwgbCksIHMpO1xuICBsZXQgY29uc3RydWN0X2xlZnQgPSAobCwgcykgPT5cbiAgICBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3QofmNhcmV0PUxlZnQsIH5iYWNrcGFjaz1MZWZ0LCBsKSwgcyk7XG4gIHN3aXRjaCAoZCwgY2FyZXQsIG5laWdoYm9yX21vbm90aWxlcygobF9zaWJzLCByX3NpYnMpKSkge1xuICAvKiBXaGVuIHRoZXJlJ3MgYSBzZWxlY3Rpb24sIGRlZmVyIHRvIE91dGVyICovXG4gIHwgXyB3aGVuIHouc2VsZWN0aW9uLmNvbnRlbnQgIT0gW10gPT4geiB8PiBaaXBwZXIuZGVzdHJ1Y3QgfD4gT3B0aW9uLnNvbWVcbiAgLyogU3BlY2lhbCBjYXNlcyBmb3IgbW9ubyBmb3JtcyB3aGljaCBjYW4gc3BsaXQgaW50byBkdW8gZm9ybXMsXG4gICAgIGUuZy4gbGlzdCBsaXRlcmFscy4gV2hlbiBkZWxldGlvbiB3b3VsZCBhbHRlciB0aGUgbW9ubyBmb3JtLFxuICAgICB3ZSByZXBsYWNlIGl0IHRvIHRoZSBjb3JyZXNwb25kaW5nIGR1byBmb3JtLiAgKi9cbiAgfCAoTGVmdCwgT3V0ZXIsIChTb21lKHQpLCBfKSkgd2hlbiBGb3JtLmR1b3NwbGl0cyh0KSAhPSBbXSA9PlxuICAgIHogfD4gZGVsZXRlX2xlZnQgfD4gY29uc3RydWN0X2xlZnQoRm9ybS5kdW9zcGxpdHModCkpXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKSB3aGVuIEZvcm0uZHVvc3BsaXRzKHQpICE9IFtdID0+XG4gICAgeiB8PiBkZWxldGVfcmlnaHQgfD4gY29uc3RydWN0X3JpZ2h0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICB8IChMZWZ0LCBJbm5lcihfLCAwKSwgKF8sIFNvbWUodCkpKSB3aGVuIEZvcm0uZHVvc3BsaXRzKHQpICE9IFtdID0+XG4gICAgeiB8PiBkZWxldGVfcmlnaHQgfD4gY29uc3RydWN0X3JpZ2h0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICB8IChSaWdodCwgSW5uZXIoXywgbiksIChfLCBTb21lKHQpKSlcbiAgICAgIHdoZW4gRm9ybS5kdW9zcGxpdHModCkgIT0gW10gJiYgbiA9PSBsYXN0X2lubmVyX3Bvcyh0KSA9PlxuICAgIHogfD4gZGVsZXRlX3JpZ2h0IHw+IGNvbnN0cnVjdF9sZWZ0KEZvcm0uZHVvc3BsaXRzKHQpKVxuICAvKiBTcGVjaWFsIGNhc2VzIGZvciBzdHJpbmcgbGl0ZXJhbHMuIFdoZW4gZGVsZXRpb24gd291bGRcbiAgICAgcmVtb3ZlIGFuIG91dGVyIHF1b3RlLCB3ZSBpbnN0ZWFkIHJlbW92ZSB0aGUgd2hvbGUgc3RyaW5nICovXG4gIHwgKExlZnQsIE91dGVyLCAoU29tZSh0KSwgXykpXG4gICAgICB3aGVuIEZvcm0uaXNfc3RyaW5nKHQpIHx8IEZvcm0uaXNfY29tbWVudCh0KSA9PlxuICAgIGRlbGV0ZV9sZWZ0KHopXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKVxuICAgICAgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeilcbiAgfCAoTGVmdCwgSW5uZXIoXywgMCksIChfLCBTb21lKHQpKSkgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSA9PlxuICAgIGRlbGV0ZV9yaWdodCh6KVxuICB8IChMZWZ0LCBJbm5lcihfLCAwKSwgKF8sIFNvbWUodCkpKVxuICAgICAgd2hlbiBGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeilcbiAgfCAoUmlnaHQsIElubmVyKF8sIG4pLCAoXywgU29tZSh0KSkpXG4gICAgICB3aGVuXG4gICAgICAgIChGb3JtLmlzX3N0cmluZyh0KSB8fCBGb3JtLmlzX2NvbW1lbnQodCkpICYmIG4gPT0gbGFzdF9pbm5lcl9wb3ModCkgPT5cbiAgICBkZWxldGVfcmlnaHQoeikgLyogUmVtb3ZlIGlubmVyIGNoYXJhY3RlciAqL1xuICB8IChMZWZ0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgPT5cbiAgICBsZXQgeiA9IFppcHBlci51cGRhdGVfY2FyZXQoWmlwcGVyLkNhcmV0LmRlY3JlbWVudCwgeik7XG4gICAgWmlwcGVyLnJlcGxhY2VfbW9ubyhSaWdodCwgVG9rZW4ucm1fbnRoKGNfaWR4LCB0KSwgeik7XG4gIHwgKFJpZ2h0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgd2hlbiBjX2lkeCA9PSBsYXN0X2lubmVyX3Bvcyh0KSA9PlxuICAgIFppcHBlci5yZXBsYWNlX21vbm8oUmlnaHQsIFRva2VuLnJtX250aChjX2lkeCArIDEsIHQpLCB6KVxuICAgIHw+IE9wdFV0aWwuYW5kX3RoZW4oeiA9PlxuICAgICAgICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIubW92ZShSaWdodClcbiAgICAgICApIC8qIElmIG5vdCBvbiBsYXN0IGlubmVyIHBvc2l0aW9uICovXG4gIHwgKFJpZ2h0LCBJbm5lcihfLCBjX2lkeCksIChfLCBTb21lKHQpKSkgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKFJpZ2h0LCBUb2tlbi5ybV9udGgoY19pZHggKyAxLCB0KSwgeilcbiAgLyogQ2FuJ3Qgc3ViZGVzdHJ1Y3QgaW4gZGVsaW1pdGVyLCBzbyBqdXN0IGRlc3RydWN0IG9uIHdob2xlIGRlbGltaXRlciAqL1xuICB8IChMZWZ0LCBJbm5lcihfKSwgKF8sIE5vbmUpKVxuICB8IChSaWdodCwgSW5uZXIoXyksIChfLCBOb25lKSkgPT5cbiAgICAvKiBOb3RlOiBDb3VudGVyaW50dWl0dmUsIGJ1dCB5ZXMsIHRoZXNlIGNhc2VzIGFyZSBpZGVudGljYWxseSBoYW5kbGVkICovXG4gICAgeiB8PiBaaXBwZXIuc2V0X2NhcmV0KE91dGVyKSB8PiBaaXBwZXIuZGVsZXRlKFJpZ2h0KVxuXG4gIC8vfCAoXywgSW5uZXIoXyksIChfLCBOb25lKSkgPT4gTm9uZVxuICB8IChMZWZ0LCBPdXRlciwgKFNvbWUodCksIF8pKSB3aGVuIFRva2VuLmxlbmd0aCh0KSA+IDEgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKExlZnQsIFRva2VuLnJtX2xhc3QodCksIHopXG4gIHwgKFJpZ2h0LCBPdXRlciwgKF8sIFNvbWUodCkpKSB3aGVuIFRva2VuLmxlbmd0aCh0KSA+IDEgPT5cbiAgICBaaXBwZXIucmVwbGFjZV9tb25vKFJpZ2h0LCBUb2tlbi5ybV9maXJzdCh0KSwgeilcbiAgfCAoXywgT3V0ZXIsIChTb21lKF8pLCBfKSkgLyogdC5sZW5ndGggPT0gMSAqL1xuICB8IChfLCBPdXRlciwgKE5vbmUsIF8pKSA9PiB6IHw+IFppcHBlci5kZWxldGUoZClcbiAgfTtcbn07XG5cbmxldCBtZXJnZSA9ICgobCwgcik6IChUb2tlbi50LCBUb2tlbi50KSwgejogdCk6IG9wdGlvbih0KSA9PlxuICB6XG4gIHw+IFppcHBlci5zZXRfY2FyZXQoSW5uZXIoMCwgVG9rZW4ubGVuZ3RoKGwpIC0gMSkpICAvLyBub3RlIG1vbm90aWxlIGFzc3VtcHRpb25cbiAgfD4gWmlwcGVyLmRlbGV0ZShMZWZ0KVxuICB8PiBPcHRVdGlsLmFuZF90aGVuKFppcHBlci5kZWxldGUoUmlnaHQpKVxuICB8PiBPcHRpb24ubWFwKFppcHBlci5jb25zdHJ1Y3RfbW9ubyhSaWdodCwgbCArKyByKSk7XG5cbi8qIENoZWNrIGlmIGNvbnRhaW5pbmcgZHVvIGZvcm0gaGFzIGEgbW9ubyBlcXVpdmFsZW50IGUuZy4gbGlzdCBsaXRlcmFscyAqL1xubGV0IHBhcmVudF9kdW9tZXJnZXMgPSAoejogWmlwcGVyLnQpID0+IHtcbiAgbGV0KiBwYXJlbnQgPSBSZWxhdGl2ZXMucGFyZW50KHoucmVsYXRpdmVzKTtcbiAgbGV0KiBsYmwgPSBQaWVjZS5sYWJlbChwYXJlbnQpO1xuICBGb3JtLmR1b21lcmdlcyhsYmwpO1xufTtcblxubGV0IGdvID0gKGQ6IERpcmVjdGlvbi50LCB6OiB0KTogb3B0aW9uKHQpID0+IHtcbiAgbGV0KiB6ID0gZGVzdHJ1Y3QoZCwgeik7XG4gIHN3aXRjaCAoXG4gICAgcGFyZW50X2R1b21lcmdlcyh6KSxcbiAgICB6LmNhcmV0LFxuICAgIG5laWdoYm9yX21vbm90aWxlcyh6LnJlbGF0aXZlcy5zaWJsaW5ncyksXG4gICkge1xuICB8IChTb21lKGxibCksIE91dGVyLCAoTm9uZSwgTm9uZSkpXG4gICAgICB3aGVuIFNpYmxpbmdzLm5vX3NpYmxpbmdzKHoucmVsYXRpdmVzLnNpYmxpbmdzKSA9PlxuICAgIC8qIE5vdGU6IHdlIG11c3QgZG8gdGhlIG5vX3NpYmxpbmdzIGNoZWNrLCBpdCBkb2VzIG5vdCBzdWZmaWNlXG4gICAgICAgdG8gY2hlY2sgbm8gbW9ub3RpbGUgbmVpZ2hib3JzIGFzIHRoZXJlIGNvdWxkIGJlIG90aGVyIG5laWdoYm9yc1xuICAgICAgIGZvciBleGFtcGxlIGVkZ2UgY2FzZTogXCIoKHwpKVwiICovXG4gICAgelxuICAgIHw+IFppcHBlci5kZWxldGVfcGFyZW50XG4gICAgfD4gWmlwcGVyLnNldF9jYXJldChJbm5lcigwLCAwKSlcbiAgICB8PiBaaXBwZXIuY29uc3RydWN0KH5jYXJldD1SaWdodCwgfmJhY2twYWNrPUxlZnQsIGxibClcbiAgICAvKiBCZWxvdyByZWdyb3V0aW5nIGltcG9ydGFudCBmb3IgcGFyZW5zL2FwIHBvc2l0aW9uaW5nICovXG4gICAgfD4gWmlwcGVyLnJlZ3JvdXQoUmlnaHQpXG4gICAgfD4gT3B0aW9uLnNvbWVcbiAgfCAoXywgT3V0ZXIsIChTb21lKGwpLCBTb21lKHIpKSkgd2hlbiBNb2xkcy5hbGxvd19tZXJnZShsLCByKSA9PlxuICAgIG1lcmdlKChsLCByKSwgeilcbiAgfCBfID0+IFNvbWUoeilcbiAgfTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFppcHBlcjtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBpc193cml0ZV9hY3Rpb24gPSAoYTogQWN0aW9uLnQpID0+IHtcbiAgc3dpdGNoIChhKSB7XG4gIHwgTW92ZShfKVxuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVW5zZWxlY3QoXylcbiAgfCBKdW1wKF8pXG4gIHwgU2VsZWN0KF8pXG4gIHwgU3VnZ2VzdChfKVxuICB8IFJlc2V0U3VnZ2VzdGlvbiA9PiBmYWxzZVxuICB8IERlc3RydWN0KF8pXG4gIHwgSW5zZXJ0KF8pXG4gIHwgUGlja191cFxuICB8IFB1dF9kb3duXG4gIHwgUm90YXRlQmFja3BhY2tcbiAgfCBNb3ZlVG9CYWNrcGFja1RhcmdldChfKVxuICB8IFBhc3RlKF8pID0+IHRydWVcbiAgfTtcbn07XG5cbmxldCByZWMgZ29feiA9XG4gICAgICAgIChcbiAgICAgICAgICB+bWV0YTogb3B0aW9uKEVkaXRvci5NZXRhLnQpPT8sXG4gICAgICAgICAgfnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgICBhOiBBY3Rpb24udCxcbiAgICAgICAgICB6OiBaaXBwZXIudCxcbiAgICAgICAgKVxuICAgICAgICA6IEFjdGlvbi5SZXN1bHQudChaaXBwZXIudCkgPT4ge1xuICBsZXQgbWV0YSA9XG4gICAgc3dpdGNoIChtZXRhKSB7XG4gICAgfCBTb21lKG0pID0+IG1cbiAgICB8IE5vbmUgPT4gRWRpdG9yLk1ldGEuaW5pdCh6KVxuICAgIH07XG4gIG1vZHVsZSBNID0gKHZhbCBFZGl0b3IuTWV0YS5tb2R1bGVfb2ZfdChtZXRhKSk7XG4gIG1vZHVsZSBNb3ZlID0gTW92ZS5NYWtlKE0pO1xuICBtb2R1bGUgU2VsZWN0ID0gU2VsZWN0Lk1ha2UoTSk7XG5cbiAgbGV0IHNlbGVjdF90ZXJtX2N1cnJlbnQgPSB6ID0+XG4gICAgc3dpdGNoIChJbmRpY2F0ZWQuaW5kZXgoeikpIHtcbiAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgfCBTb21lKGlkKSA9PlxuICAgICAgc3dpdGNoIChTZWxlY3QudGVybShpZCwgeikpIHtcbiAgICAgIHwgU29tZSh6KSA9PiBPayh6KVxuICAgICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgICAgfVxuICAgIH07XG5cbiAgc3dpdGNoIChhKSB7XG4gIHwgTW92ZShkKSA9PlxuICAgIE1vdmUuZ28oZCwgeikgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKVxuICB8IE1vdmVUb05leHRIb2xlKGQpID0+XG4gICAgTW92ZS5nbyhHb2FsKFBpZWNlKEdyb3V0LCBkKSksIHopXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKVxuICB8IEp1bXAoanVtcF90YXJnZXQpID0+XG4gICAgb3BlbiBPcHRVdGlsLlN5bnRheDtcblxuICAgIGxldCBpZHggPSBJbmRpY2F0ZWQuaW5kZXgoeik7XG4gICAgbGV0ICh0ZXJtLCBfKSA9XG4gICAgICBVdGlsLlRpbWVVdGlsLm1lYXN1cmVfdGltZShcIlBlcmZvcm0uZ29feiA9PiBNYWtlVGVybS5mcm9tX3ppcFwiLCB0cnVlLCAoKSA9PlxuICAgICAgICBNYWtlVGVybS5mcm9tX3ppcF9mb3Jfdmlldyh6KVxuICAgICAgKTtcbiAgICBsZXQgc3RhdGljcyA9IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcChzZXR0aW5ncywgdGVybSk7XG5cbiAgICAoXG4gICAgICBzd2l0Y2ggKGp1bXBfdGFyZ2V0KSB7XG4gICAgICB8IEJpbmRpbmdTaXRlT2ZJbmRpY2F0ZWRWYXIgPT5cbiAgICAgICAgbGV0KiBpZHggPSBpZHg7XG4gICAgICAgIGxldCogY2kgPSBJZC5NYXAuZmluZF9vcHQoaWR4LCBzdGF0aWNzKTtcbiAgICAgICAgbGV0KiBiaW5kaW5nX2lkID0gSW5mby5nZXRfYmluZGluZ19zaXRlKGNpKTtcbiAgICAgICAgTW92ZS5qdW1wX3RvX2lkKHosIGJpbmRpbmdfaWQpO1xuICAgICAgfCBUaWxlSWQoaWQpID0+IE1vdmUuanVtcF90b19pZCh6LCBpZClcbiAgICAgIH1cbiAgICApXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKTtcbiAgfCBVbnNlbGVjdChTb21lKGQpKSA9PiBPayhaaXBwZXIuZGlyZWN0aW9uYWxfdW5zZWxlY3QoZCwgeikpXG4gIHwgVW5zZWxlY3QoTm9uZSkgPT5cbiAgICBsZXQgeiA9IFppcHBlci5kaXJlY3Rpb25hbF91bnNlbGVjdCh6LnNlbGVjdGlvbi5mb2N1cywgeik7XG4gICAgT2soeik7XG4gIHwgU2VsZWN0KEFsbCkgPT5cbiAgICBzd2l0Y2ggKE1vdmUuZG9fZXh0cmVtZShNb3ZlLnByaW1hcnkoQnlUb2tlbiksIFVwLCB6KSkge1xuICAgIHwgU29tZSh6KSA9PlxuICAgICAgc3dpdGNoIChTZWxlY3QuZ28oRXh0cmVtZShEb3duKSwgeikpIHtcbiAgICAgIHwgU29tZSh6KSA9PiBPayh6KVxuICAgICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgICAgfVxuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB9XG4gIHwgU2VsZWN0KFRlcm0oQ3VycmVudCkpID0+IHNlbGVjdF90ZXJtX2N1cnJlbnQoeilcbiAgfCBTZWxlY3QoU21hcnQpID0+XG4gICAgLyogSWYgdGhlIGN1cnJlbnQgdGlsZSBpcyBub3QgY29pbmNpZGVudCB3aXRoIHRoZSB0ZXJtLFxuICAgICAgIHNlbGVjdCB0aGUgdGVybS4gT3RoZXJ3aXNlLCBzZWxlY3QgdGhlIHBhcmVudCB0ZXJtLiAqL1xuICAgIGxldCB0aWxlX2lzX3Rlcm0gPVxuICAgICAgc3dpdGNoIChJbmRpY2F0ZWQuaW5kZXgoeikpIHtcbiAgICAgIHwgTm9uZSA9PiBmYWxzZVxuICAgICAgfCBTb21lKGlkKSA9PiBTZWxlY3QudGlsZShpZCwgeikgPT0gU2VsZWN0LnRlcm0oaWQsIHopXG4gICAgICB9O1xuICAgIGlmICghdGlsZV9pc190ZXJtKSB7XG4gICAgICBzZWxlY3RfdGVybV9jdXJyZW50KHopO1xuICAgIH0gZWxzZSB7XG4gICAgICAvL1BFUkY6IHRoaXMgaXMgZXhwZW5zaXZlXG4gICAgICBsZXQgKHRlcm0sIF8pID0gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3ZpZXcoeik7XG4gICAgICBsZXQgc3RhdGljcyA9IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcChzZXR0aW5ncywgdGVybSk7XG4gICAgICBsZXQgdGFyZ2V0ID1cbiAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICBJbmRpY2F0ZWQuaW5kZXgoeilcbiAgICAgICAgICB8PiBPcHRVdGlsLmFuZF90aGVuKGlkeCA9PiBJZC5NYXAuZmluZF9vcHQoaWR4LCBzdGF0aWNzKSlcbiAgICAgICAgKSB7XG4gICAgICAgIHwgU29tZShjaSkgPT5cbiAgICAgICAgICBzd2l0Y2ggKEluZm8uYW5jZXN0b3JzX29mKGNpKSkge1xuICAgICAgICAgIHwgW10gPT4gTm9uZVxuICAgICAgICAgIHwgW3BhcmVudCwgLi4uX10gPT4gU29tZShwYXJlbnQpXG4gICAgICAgICAgfVxuICAgICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgICB9O1xuICAgICAgc3dpdGNoICh0YXJnZXQpIHtcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgIHwgU29tZShpZCkgPT5cbiAgICAgICAgc3dpdGNoIChTZWxlY3QudGVybShpZCwgeikpIHtcbiAgICAgICAgfCBTb21lKHopID0+IE9rKHopXG4gICAgICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICB8IFNlbGVjdChUZXJtKElkKGlkLCBkKSkpID0+XG4gICAgc3dpdGNoIChTZWxlY3QudGVybShpZCwgeikpIHtcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIGxldCB6ID0gZCA9PSBSaWdodCA/IHogOiBaaXBwZXIudG9nZ2xlX2ZvY3VzKHopO1xuICAgICAgT2soeik7XG4gICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgIH1cbiAgfCBTZWxlY3QoVGlsZShDdXJyZW50KSkgPT5cbiAgICBzd2l0Y2ggKEluZGljYXRlZC5pbmRleCh6KSkge1xuICAgIHwgTm9uZSA9PiBFcnJvcihBY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgICB8IFNvbWUoaWQpID0+XG4gICAgICBzd2l0Y2ggKFNlbGVjdC50aWxlKGlkLCB6KSkge1xuICAgICAgfCBTb21lKHopID0+IE9rKHopXG4gICAgICB8IE5vbmUgPT4gRXJyb3IoQWN0aW9uLkZhaWx1cmUuQ2FudF9zZWxlY3QpXG4gICAgICB9XG4gICAgfVxuICB8IFNlbGVjdChUaWxlKElkKGlkLCBkKSkpID0+XG4gICAgc3dpdGNoIChTZWxlY3QudGlsZShpZCwgeikpIHtcbiAgICB8IFNvbWUoeikgPT5cbiAgICAgIGxldCB6ID0gZCA9PSBSaWdodCA/IHogOiBaaXBwZXIudG9nZ2xlX2ZvY3VzKHopO1xuICAgICAgT2soeik7XG4gICAgfCBOb25lID0+IEVycm9yKEFjdGlvbi5GYWlsdXJlLkNhbnRfc2VsZWN0KVxuICAgIH1cbiAgfCBTZWxlY3QoUmVzaXplKGQpKSA9PlxuICAgIFNlbGVjdC5nbyhkLCB6KSB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X3NlbGVjdClcbiAgfCBEZXN0cnVjdChkKSA9PlxuICAgIHpcbiAgICB8PiBEZXN0cnVjdC5nbyhkKVxuICAgIHw+IE9wdGlvbi5tYXAocmVtb2xkX3JlZ3JvdXQoZCkpXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9kZXN0cnVjdClcbiAgfCBJbnNlcnQoY2hhcikgPT5cbiAgICB6XG4gICAgfD4gSW5zZXJ0LmdvKGNoYXIpXG4gICAgLyogbm90ZTogcmVtb2xkaW5nIGhlcmUgaXMgZG9uZSBjYXNlLWJ5LWNhc2UgKi9cbiAgICAvL3w+IE9wdGlvbi5tYXAoKHopID0+IHJlbW9sZF9yZWdyb3V0KFJpZ2h0LCB6KSlcbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X2luc2VydClcbiAgfCBQaWNrX3VwID0+IE9rKHJlbW9sZF9yZWdyb3V0KExlZnQsIFppcHBlci5waWNrX3VwKHopKSlcbiAgfCBQdXRfZG93biA9PlxuICAgIGxldCB6ID1cbiAgICAgIC8qIEFsdGVybmF0aXZlbHksIHB1dHRpbmcgZG93biBpbnNpZGUgdG9rZW4gY291bGQgZWl0ZXIgbWVyZ2UtaW4gb3Igc3BsaXQgKi9cbiAgICAgIHN3aXRjaCAoei5jYXJldCkge1xuICAgICAgfCBJbm5lcihfKSA9PiBOb25lXG4gICAgICB8IE91dGVyID0+IFppcHBlci5wdXRfZG93bihMZWZ0LCB6KVxuICAgICAgfTtcbiAgICB6XG4gICAgfD4gT3B0aW9uLm1hcChyZW1vbGRfcmVncm91dChMZWZ0KSlcbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X3B1dF9kb3duKTtcbiAgfCBSb3RhdGVCYWNrcGFjayA9PlxuICAgIGxldCB6ID0gey4uLnosIGJhY2twYWNrOiBVdGlsLkxpc3RVdGlsLnJvdGF0ZSh6LmJhY2twYWNrKX07XG4gICAgT2soeik7XG4gIHwgTW92ZVRvQmFja3BhY2tUYXJnZXQoKExlZnQoXykgfCBSaWdodChfKSkgYXMgZCkgPT5cbiAgICBpZiAoQmFja3BhY2sucmVzdHJpY3RlZCh6LmJhY2twYWNrKSkge1xuICAgICAgTW92ZS50b19iYWNrcGFja190YXJnZXQoZCwgeilcbiAgICAgIHw+IFJlc3VsdC5vZl9vcHRpb24ofmVycm9yPUFjdGlvbi5GYWlsdXJlLkNhbnRfbW92ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIE1vdmUuZ28oTG9jYWwoZCksIHopXG4gICAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X21vdmUpO1xuICAgIH1cbiAgfCBNb3ZlVG9CYWNrcGFja1RhcmdldCgoVXAgfCBEb3duKSBhcyBkKSA9PlxuICAgIE1vdmUudG9fYmFja3BhY2tfdGFyZ2V0KGQsIHopXG4gICAgfD4gUmVzdWx0Lm9mX29wdGlvbih+ZXJyb3I9QWN0aW9uLkZhaWx1cmUuQ2FudF9tb3ZlKVxuICB8IFBhc3RlKGNsaXBib2FyZCkgPT5cbiAgICB7XG4gICAgICBsZXQqIHogPSBQcmludGVyLnppcHBlcl9vZl9zdHJpbmcofnppcHBlcl9pbml0PXosIGNsaXBib2FyZCk7XG4gICAgICBsZXQqIHogPSBnb196KH5zZXR0aW5ncywgSW5zZXJ0KFwiIFwiKSwgeikgfD4gUmVzdWx0Lm9rO1xuICAgICAgbGV0KyB6ID0gZ29feih+c2V0dGluZ3MsIERlc3RydWN0KExlZnQpLCB6KSB8PiBSZXN1bHQub2s7XG4gICAgICB6O1xuICAgIH1cbiAgICB8PiBSZXN1bHQub2Zfb3B0aW9uKH5lcnJvcj1BY3Rpb24uRmFpbHVyZS5DYW50X3Bhc3RlKVxuICB8IFN1Z2dlc3QoY29udGVudCkgPT5cbiAgICBsZXQgeiA9IFppcHBlci5zZXRfYnVmZmVyKHosIH5jb250ZW50LCB+bW9kZT1VbnBhcnNlZCk7XG4gICAgT2soeik7XG4gIHwgUmVzZXRTdWdnZXN0aW9uID0+XG4gICAgc3dpdGNoICh6LnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgfCBCdWZmZXIoXykgPT5cbiAgICAgIHN3aXRjaCAoZ29feih+c2V0dGluZ3MsIERlc3RydWN0KExlZnQpLCB6KSkge1xuICAgICAgfCBFcnJvcihfKSA9PiBPayh6KVxuICAgICAgfCBPayh6KSA9PiBnb196KH5zZXR0aW5ncywgRGVzdHJ1Y3QoTGVmdCksIHopXG4gICAgICB9XG4gICAgfCBfID0+IE9rKHopXG4gICAgfVxuICB9O1xufTtcblxubGV0IGdvID1cbiAgICAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgYTogQWN0aW9uLnQsIGVkOiBFZGl0b3IudClcbiAgICA6IEFjdGlvbi5SZXN1bHQudChFZGl0b3IudCkgPT5cbiAgaWYgKGVkLnJlYWRfb25seSAmJiBpc193cml0ZV9hY3Rpb24oYSkpIHtcbiAgICBSZXN1bHQuT2soZWQpO1xuICB9IGVsc2Uge1xuICAgIG9wZW4gUmVzdWx0LlN5bnRheDtcbiAgICBsZXQgRWRpdG9yLlN0YXRlLnt6aXBwZXIsIG1ldGF9ID0gZWQuc3RhdGU7XG4gICAgRWZmZWN0LnNfY2xlYXIoKTtcbiAgICBsZXQrIHogPSBnb196KH5zZXR0aW5ncywgfm1ldGEsIGEsIHppcHBlcik7XG4gICAgRWRpdG9yLm5ld19zdGF0ZSh+ZWZmZWN0cz1FZmZlY3Quc14sIGEsIHosIGVkKTtcbiAgfTtcbiIsIm9wZW4gVXRpbDtcblxubW9kdWxlIHR5cGUgUyA9IHtcbiAgbGV0IGQ6IERpcmVjdGlvbi50O1xuICBsZXQgb3JpZW50OiAoKCdhLCAnYSkpID0+ICgnYSwgJ2EpO1xufTtcblxubW9kdWxlIEw6IFMgPSB7XG4gIGxldCBkID0gRGlyZWN0aW9uLkxlZnQ7XG4gIGxldCBvcmllbnQgPSAoKGwsIHIpKSA9PiAobCwgcik7XG59O1xubW9kdWxlIFI6IFMgPSB7XG4gIGxldCBkID0gRGlyZWN0aW9uLlJpZ2h0O1xuICBsZXQgb3JpZW50ID0gKChsLCByKSkgPT4gKHIsIGwpO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXZhbF9yZXN1bHQgPSB7XG4gIGVsYWI6IEVsYWJvcmF0b3IuRWxhYm9yYXRpb24udCxcbiAgZXZhbHVhdGlvbjogUHJvZ3JhbVJlc3VsdC50LFxuICBwcmV2aW91czogUHJvZ3JhbVJlc3VsdC50LFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKGV2YWxfcmVzdWx0KVxuICB8IFN0ZXBwZXIoU3RlcHBlci50KTtcblxubGV0IGluaXRfZXZhbCA9IChlbGFiOiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpID0+XG4gIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nfSk7XG5cbmxldCB1cGRhdGVfZWxhYiA9IChlbGFiLCB+c2V0dGluZ3MpID0+XG4gIGZ1blxuICB8IE5vRWxhYiA9PlxuICAgIEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzOiBSZXN1bHRQZW5kaW5nfSlcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uLCBffSkgPT5cbiAgICBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLCBwcmV2aW91czogZXZhbHVhdGlvbn0pXG4gIHwgU3RlcHBlcihzKSBhcyBzJyB3aGVuIERIRXhwLmZhc3RfZXF1YWwoZWxhYi5kLCBTdGVwcGVyLmdldF9lbGFiKHMpLmQpID0+IHMnXG4gIHwgU3RlcHBlcihfKSA9PiB7XG4gICAgICBTdGVwcGVyKFN0ZXBwZXIuaW5pdChlbGFiLCB+c2V0dGluZ3MpKTtcbiAgICB9O1xuXG5sZXQgdXBkYXRlX3N0ZXBwZXIgPSBmID0+XG4gIGZ1blxuICB8IE5vRWxhYiBhcyBlXG4gIHwgRXZhbHVhdGlvbihfKSBhcyBlID0+IGVcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoZihzKSk7XG5cbmxldCBzdGVwX2ZvcndhcmQgPSAoaWR4OiBpbnQsIG1yOiB0KSA9PlxuICBtciB8PiB1cGRhdGVfc3RlcHBlcihTdGVwcGVyLnN0ZXBfcGVuZGluZyhpZHgpKTtcblxubGV0IHN0ZXBfYmFja3dhcmQgPSAofnNldHRpbmdzLCBtcjogdCkgPT5cbiAgbXIgfD4gdXBkYXRlX3N0ZXBwZXIoU3RlcHBlci5zdGVwX2JhY2t3YXJkKH5zZXR0aW5ncykpO1xuXG5sZXQgcnVuX3BlbmRpbmcgPSAofnNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCkgPT5cbiAgZnVuXG4gIHwgTm9FbGFiID0+IE5vRWxhYlxuICB8IEV2YWx1YXRpb24oe2VsYWIsIGV2YWx1YXRpb246IFJlc3VsdFBlbmRpbmcsIHByZXZpb3VzfSkgPT5cbiAgICBFdmFsdWF0aW9uKHtcbiAgICAgIGVsYWIsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIGV2YWx1YXRpb246IEludGVyZmFjZS5ldmFsdWF0ZSh+c2V0dGluZ3MsIGVsYWIuZCksXG4gICAgfSlcbiAgfCBFdmFsdWF0aW9uKF8pIGFzIGUgPT4gZVxuICB8IFN0ZXBwZXIocykgPT4gU3RlcHBlcihTdGVwcGVyLmV2YWx1YXRlX3BlbmRpbmcofnNldHRpbmdzLCBzKSk7XG5cbmxldCB1cGRhdGVfZXZhbHVhdGlvbiA9XG4gICAgKFxuICAgICAgZXZhbDpcbiAgICAgICAgUmVzdWx0LnQoXG4gICAgICAgICAgKEV2YWx1YXRvci5SZXN1bHQudCwgRXZhbHVhdG9yU3RhdGUudCksXG4gICAgICAgICAgUHJvZ3JhbVJlc3VsdC5lcnJvcixcbiAgICAgICAgKSxcbiAgICAgIHJlc3VsdDogdCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgc3dpdGNoIChyZXN1bHQpIHtcbiAgfCBTdGVwcGVyKF8pXG4gIHwgTm9FbGFiID0+IHJlc3VsdFxuICB8IEV2YWx1YXRpb24oe2VsYWIsIHByZXZpb3VzLCBffSkgPT5cbiAgICBFdmFsdWF0aW9uKHtcbiAgICAgIGVsYWIsXG4gICAgICBwcmV2aW91cyxcbiAgICAgIGV2YWx1YXRpb246XG4gICAgICAgIHN3aXRjaCAoZXZhbCkge1xuICAgICAgICB8IE9rKChleHAsIHN0YXRlKSkgPT5cbiAgICAgICAgICBSZXN1bHRPayh7XG4gICAgICAgICAgICByZXN1bHQ6IGV4cCxcbiAgICAgICAgICAgIGVkaXRvcjpcbiAgICAgICAgICAgICAgRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IoXG4gICAgICAgICAgICAgICAgfmlubGluZT1mYWxzZSxcbiAgICAgICAgICAgICAgICBleHAgfD4gRXZhbHVhdG9yLlJlc3VsdC51bmJveCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIH0pXG4gICAgICAgIHwgRXJyb3IocmVhc29uKSA9PiBSZXN1bHRGYWlsKHJlYXNvbilcbiAgICAgICAgfSxcbiAgICB9KVxuICB9O1xufTtcblxubGV0IHRpbWVvdXQ6IHQgPT4gdCA9XG4gIGZ1blxuICB8IE5vRWxhYiA9PiBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uLCBffSBhcyBlKSA9PlxuICAgIEV2YWx1YXRpb24oey4uLmUsIGV2YWx1YXRpb246IFJlc3VsdEZhaWwoVGltZW91dCksIHByZXZpb3VzOiBldmFsdWF0aW9ufSlcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci50aW1lb3V0KHMpKTtcblxubGV0IHRvZ2dsZV9zdGVwcGVyID0gKH5zZXR0aW5ncykgPT5cbiAgZnVuXG4gIHwgTm9FbGFiID0+IE5vRWxhYlxuICB8IEV2YWx1YXRpb24oe2VsYWIsIF99KSA9PiBTdGVwcGVyKFN0ZXBwZXIuaW5pdCh+c2V0dGluZ3MsIGVsYWIpKVxuICB8IFN0ZXBwZXIocykgPT5cbiAgICBFdmFsdWF0aW9uKHtcbiAgICAgIGVsYWI6IFN0ZXBwZXIuZ2V0X2VsYWIocyksXG4gICAgICBldmFsdWF0aW9uOiBSZXN1bHRQZW5kaW5nLFxuICAgICAgcHJldmlvdXM6IFJlc3VsdFBlbmRpbmcsXG4gICAgfSk7XG5cbmxldCB0ZXN0X3Jlc3VsdHMgPSAocmVzdWx0OiB0KSA9PlxuICBzd2l0Y2ggKHJlc3VsdCkge1xuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb246IFJlc3VsdE9rKHByKSwgX30pXG4gIHwgRXZhbHVhdGlvbih7XG4gICAgICBldmFsdWF0aW9uOiBPZmYoXykgfCBSZXN1bHRGYWlsKF8pIHwgUmVzdWx0UGVuZGluZyxcbiAgICAgIHByZXZpb3VzOiBSZXN1bHRPayhwciksXG4gICAgICBfLFxuICAgIH0pID0+XG4gICAgcHJcbiAgICB8PiBQcm9ncmFtUmVzdWx0LmdldF9zdGF0ZVxuICAgIHw+IEV2YWx1YXRvclN0YXRlLmdldF90ZXN0c1xuICAgIHw+IFRlc3RSZXN1bHRzLm1rX3Jlc3VsdHNcbiAgICB8PiBPcHRpb24uc29tZVxuICB8IEV2YWx1YXRpb24oe2V2YWx1YXRpb246IE9mZihfKSB8IFJlc3VsdEZhaWwoXykgfCBSZXN1bHRQZW5kaW5nLCBffSlcbiAgfCBOb0VsYWJcbiAgfCBTdGVwcGVyKF8pID0+IE5vbmVcbiAgfTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwZXJzaXN0ZW50ID1cbiAgfCBFdmFsdWF0aW9uXG4gIHwgU3RlcHBlcihTdGVwcGVyLnBlcnNpc3RlbnQpO1xuXG5sZXQgdG9fcGVyc2lzdGVudDogdCA9PiBwZXJzaXN0ZW50ID1cbiAgZnVuXG4gIHwgTm9FbGFiXG4gIHwgRXZhbHVhdGlvbihfKSA9PiBFdmFsdWF0aW9uXG4gIHwgU3RlcHBlcihzKSA9PiBTdGVwcGVyKFN0ZXBwZXIudG9fcGVyc2lzdGVudChzKSk7XG5cbmxldCBvZl9wZXJzaXN0ZW50ID0gKH5zZXR0aW5ncykgPT5cbiAgZnVuXG4gIHwgRXZhbHVhdGlvbiA9PiBOb0VsYWJcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci5mcm9tX3BlcnNpc3RlbnQofnNldHRpbmdzLCBzKSk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2VsZWN0aW9uID0gaW50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9IHtcbiAgc2VsZWN0aW9uLFxuICBhY3Rpb246IEFjdGlvbi50LFxufTtcblxubGV0IGdldF9zZWxlY3RlZF9lZGl0b3IgPSAofnNlbGVjdGlvbjogc2VsZWN0aW9uLCBtcjogdCkgPT5cbiAgc3dpdGNoIChtcikge1xuICB8IE5vRWxhYiA9PiBOb25lXG4gIHwgRXZhbHVhdGlvbih7ZXZhbHVhdGlvbjogUmVzdWx0T2soe2VkaXRvciwgX30pLCBffSkgPT4gU29tZShlZGl0b3IpXG4gIHwgRXZhbHVhdGlvbih7cHJldmlvdXM6IFJlc3VsdE9rKHtlZGl0b3IsIF99KSwgX30pID0+IFNvbWUoZWRpdG9yKVxuICB8IEV2YWx1YXRpb24oXykgPT4gTm9uZVxuICB8IFN0ZXBwZXIocykgPT4gU3RlcHBlci5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHMpXG4gIH07XG5cbmxldCBwdXRfc2VsZWN0ZWRfZWRpdG9yID0gKH5zZWxlY3Rpb246IHNlbGVjdGlvbiwgbXI6IHQsIGVkaXRvcikgPT5cbiAgc3dpdGNoIChtcikge1xuICB8IE5vRWxhYiA9PiBOb0VsYWJcbiAgfCBFdmFsdWF0aW9uKHtldmFsdWF0aW9uOiBSZXN1bHRPayhwciksIGVsYWIsIHByZXZpb3VzfSkgPT5cbiAgICBFdmFsdWF0aW9uKHtlbGFiLCBldmFsdWF0aW9uOiBSZXN1bHRPayh7Li4ucHIsIGVkaXRvcn0pLCBwcmV2aW91c30pXG4gIHwgRXZhbHVhdGlvbih7cHJldmlvdXM6IFJlc3VsdE9rKHByKSwgZWxhYiwgZXZhbHVhdGlvbn0pID0+XG4gICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbiwgcHJldmlvdXM6IFJlc3VsdE9rKHsuLi5wciwgZWRpdG9yfSl9KVxuICB8IEV2YWx1YXRpb24oXykgPT4gbXJcbiAgfCBTdGVwcGVyKHMpID0+IFN0ZXBwZXIoU3RlcHBlci5wdXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHMsIGVkaXRvcikpXG4gIH07XG5cbmxldCBnZXRfZWxhYm9yYXRpb24gPSBtciA9PlxuICBzd2l0Y2ggKG1yKSB7XG4gIHwgTm9FbGFiID0+IE5vbmVcbiAgfCBFdmFsdWF0aW9uKHtlbGFiLCBffSkgPT4gU29tZShlbGFiKVxuICB8IFN0ZXBwZXIocykgPT4gU29tZShTdGVwcGVyLmdldF9lbGFiKHMpKVxuICB9O1xuXG5sZXQgcGVyZm9ybSA9ICh+c2V0dGluZ3MsIGlkeCwgYWN0aW9uLCBtcikgPT4ge1xuICBnZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb249aWR4LCBtcilcbiAgfD4gT3B0aW9uLm1hcChlZGl0b3IgPT5cbiAgICAgICBlZGl0b3JcbiAgICAgICB8PiBQZXJmb3JtLmdvKH5zZXR0aW5ncywgYWN0aW9uKVxuICAgICAgIHw+IChcbiAgICAgICAgIGZ1blxuICAgICAgICAgfCBPayhlZGl0b3IpID0+IGVkaXRvclxuICAgICAgICAgfCBFcnJvcihlKSA9PiByYWlzZShBY3Rpb24uRmFpbHVyZS5FeGNlcHRpb24oZSkpXG4gICAgICAgKVxuICAgICAgIHw+IHB1dF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbj1pZHgsIG1yKVxuICAgICApXG4gIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1tcik7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLypcbiBNb2RlbFJlc3VsdHMgaXMgdXNlZCB0byBzdG9yZSB0aGUgcmVzdWx0cyBvZlxuIGV2YWx1YXRpb25zIHJlcXVlc3RlZCBieSB0aGUgY3VycmVudCBlZGl0b3IgbW9kZSxcbiB3aXRoIHRoZSBrZXkgZGlzdGluZ3Vpc2hpbmcgdGhlc2UgcmVxdWVzdHMuXG5cbiBTZWUgdGhlIFNjaG9vbEV4ZXJjaXNlIG1vZHVsZSBmb3IgYW4gZXhhbXBsZS5cbiAqL1xubW9kdWxlIEtleSA9IHtcbiAgaW5jbHVkZSBTdHJpbmc7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0gc3RyaW5nO1xufTtcblxubW9kdWxlIE0gPSBVdGlsLk1hcFV0aWwuTWFrZShLZXkpO1xuaW5jbHVkZSBNO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPSBNLnQoTW9kZWxSZXN1bHQudCk7XG5cbmxldCBpbml0X2V2YWwgPSAoZHM6IGxpc3QoKEtleS50LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSk6IHQgPT5cbiAgZHMgfD4gTGlzdC50b19zZXEgfD4gb2Zfc2VxIHw+IG1hcChNb2RlbFJlc3VsdC5pbml0X2V2YWwpO1xuXG5sZXQgdXBkYXRlX2VsYWJzID0gKH5zZXR0aW5ncykgPT5cbiAgTGlzdC5mb2xkX3JpZ2h0KCgoaywgZWxhYiksIGFjYykgPT5cbiAgICB1cGRhdGUoXG4gICAgICBrLFxuICAgICAgdiA9PlxuICAgICAgICBTb21lKFxuICAgICAgICAgIHZcbiAgICAgICAgICB8PiBPcHRpb24udmFsdWUofmRlZmF1bHQ9TW9kZWxSZXN1bHQuTm9FbGFiKVxuICAgICAgICAgIHw+IE1vZGVsUmVzdWx0LnVwZGF0ZV9lbGFiKH5zZXR0aW5ncywgZWxhYiksXG4gICAgICAgICksXG4gICAgICBhY2MsXG4gICAgKVxuICApO1xuXG5sZXQgbG9va3VwID0gKHJlc3VsdHM6IHQsIGtleTogS2V5LnQpID0+IGZpbmRfb3B0KGtleSwgcmVzdWx0cyk7XG5cbmxldCBydW5fcGVuZGluZyA9ICh+c2V0dGluZ3MpID0+IE0ubWFwKE1vZGVsUmVzdWx0LnJ1bl9wZW5kaW5nKH5zZXR0aW5ncykpO1xuXG5sZXQgdGltZW91dF9hbGwgPSBtYXAoTW9kZWxSZXN1bHQudGltZW91dCk7XG5cbmxldCBhZHZhbmNlX2V2YWx1YXRvcl9yZXN1bHQgPVxuICAgIChyZXN1bHRzOiB0LCAoa2V5OiBLZXkudCwgZWxhYjogRWxhYm9yYXRvci5FbGFib3JhdGlvbi50KSlcbiAgICA6IG9wdGlvbigoS2V5LnQsIE1vZGVsUmVzdWx0LnQpKSA9PlxuICBzd2l0Y2ggKGxvb2t1cChyZXN1bHRzLCBrZXkpKSB7XG4gIHwgU29tZShTdGVwcGVyKF8pKSA9PiBOb25lXG4gIHwgU29tZShFdmFsdWF0aW9uKHtldmFsdWF0aW9uOiBwcmV2aW91cywgX30pKSA9PlxuICAgIFNvbWUoKGtleSwgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXN9KSkpXG4gIHwgU29tZShOb0VsYWIpXG4gIHwgTm9uZSA9PlxuICAgIFNvbWUoKFxuICAgICAga2V5LFxuICAgICAgRXZhbHVhdGlvbih7ZWxhYiwgZXZhbHVhdGlvbjogUmVzdWx0UGVuZGluZywgcHJldmlvdXM6IFJlc3VsdFBlbmRpbmd9KSxcbiAgICApKVxuICB9O1xuXG5sZXQgc3RlcHBlcl9yZXN1bHRfb3B0ID1cbiAgICAoKGtleTogS2V5LnQsIHI6IE1vZGVsUmVzdWx0LnQpKTogb3B0aW9uKChLZXkudCwgTW9kZWxSZXN1bHQudCkpID0+XG4gIHN3aXRjaCAocikge1xuICB8IFN0ZXBwZXIoXykgPT4gU29tZSgoa2V5LCByKSlcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxubGV0IHRvX2V2YWx1YXRlID1cbiAgICAocmVzdWx0czogdCwgZWxhYnM6IGxpc3QoKEtleS50LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSk6IHQgPT5cbiAgZWxhYnNcbiAgfD4gTGlzdC5maWx0ZXJfbWFwKGFkdmFuY2VfZXZhbHVhdG9yX3Jlc3VsdChyZXN1bHRzKSlcbiAgfD4gTGlzdC50b19zZXFcbiAgfD4gb2Zfc2VxO1xuXG5sZXQgdG9fc3RlcCA9IChyZXN1bHRzOiB0KTogdCA9PlxuICBiaW5kaW5ncyhyZXN1bHRzKVxuICB8PiBMaXN0LmZpbHRlcl9tYXAoc3RlcHBlcl9yZXN1bHRfb3B0KVxuICB8PiBMaXN0LnRvX3NlcVxuICB8PiBvZl9zZXE7XG5cbmxldCBwdXRfcmVzdWx0ID0gKGtleTogS2V5LnQsIHJlc3VsdDogTW9kZWxSZXN1bHQudCwgcmVzdWx0czogdCk6IHQgPT5cbiAgcmVzdWx0cyB8PiByZW1vdmUoa2V5KSB8PiBhZGQoa2V5LCByZXN1bHQpO1xuIiwidHlwZSB0ID0gSWQuTWFwLnQobGlzdChpbnQpKTtcblxubGV0IHQgPSByZWYoSWQuTWFwLmVtcHR5KTtcblxubGV0IGNvbnRhaW5zID0gKGlkLCBpKTogYm9vbCA9PlxuICBzd2l0Y2ggKElkLk1hcC5maW5kX29wdChpZCwgdF4pKSB7XG4gIHwgTm9uZSA9PiBmYWxzZVxuICB8IFNvbWUoaXMpID0+IExpc3QubWVtKGksIGlzKVxuICB9O1xuXG5sZXQgY2xlYXIgPSAoKSA9PiB7XG4gIHQgOj0gSWQuTWFwLmVtcHR5O1xufTtcblxuLy8gYXNzdW1lcyBzZWcgaXMgZnVsbHkgYXNzZW1ibGVkXG5sZXQgc2V0ID0gKHNlZzogQmFzZS5zZWdtZW50KTogdW5pdCA9PlxuICB0IDo9XG4gICAgc2VnXG4gICAgfD4gTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IFBpZWNlLlRpbGUodCkgPT4ge1xuICAgICAgICAgICAgIGxldCAobF9zaGFyZCwgcl9zaGFyZCkgPSBUaWxlLihsX3NoYXJkKHQpLCByX3NoYXJkKHQpKTtcbiAgICAgICAgICAgICBsZXQgbCA9IGxfc2hhcmQgPT0gMCA/IFtdIDogW2xfc2hhcmQgLSAxXTtcbiAgICAgICAgICAgICBsZXQgciA9IHJfc2hhcmQgPT0gTGlzdC5sZW5ndGgodC5sYWJlbCkgLSAxID8gW10gOiBbcl9zaGFyZF07XG4gICAgICAgICAgICAgbGV0IGxyID0gbCBAIHI7XG4gICAgICAgICAgICAgbHIgPT0gW10gPyBOb25lIDogU29tZSgodC5pZCwgbCBAIHIpKTtcbiAgICAgICAgICAgfVxuICAgICAgICAgfCBHcm91dChfKVxuICAgICAgICAgfCBTZWNvbmRhcnkoXykgPT4gTm9uZSxcbiAgICAgICApXG4gICAgfD4gTGlzdC50b19zZXFcbiAgICB8PiBJZC5NYXAub2Zfc2VxO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gc3RyaW5nO1xuIiwibGV0IGVkaXRvcl9vZl9jb2RlID0gKH5yZWFkX29ubHk9ZmFsc2UsIGNvZGU6IENvZGVTdHJpbmcudCkgPT4ge1xuICBzd2l0Y2ggKFByaW50ZXIuemlwcGVyX29mX3N0cmluZyhjb2RlKSkge1xuICB8IE5vbmUgPT4gTm9uZVxuICB8IFNvbWUoeikgPT4gU29tZShFZGl0b3IuaW5pdCh+cmVhZF9vbmx5LCB6KSlcbiAgfTtcbn07XG5cbmxldCBlZGl0b3JzX2ZvciA9XG4gICAgKH5yZWFkX29ubHk9ZmFsc2UsIHhzOiBsaXN0KCdhKSwgZjogJ2EgPT4gb3B0aW9uKHN0cmluZykpXG4gICAgOiAoaW50LCBsaXN0KCgnYSwgb3B0aW9uKEVkaXRvci50KSkpKSA9PiB7XG4gIGxldCB6cyA9XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjX3pzLCBhKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoZihhKSkge1xuICAgICAgICB8IFNvbWUoc3RyKSA9PlxuICAgICAgICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKHN0cikpIHtcbiAgICAgICAgICB8IE5vbmUgPT4gYWNjX3pzIEAgWyhhLCBTb21lKFppcHBlci5pbml0KCkpKV1cbiAgICAgICAgICB8IFNvbWUoeikgPT4gYWNjX3pzIEAgWyhhLCBTb21lKHopKV1cbiAgICAgICAgICB9XG4gICAgICAgIHwgTm9uZSA9PiBhY2NfenMgQCBbKGEsIE5vbmUpXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgW10sXG4gICAgICB4cyxcbiAgICApO1xuICAoXG4gICAgMCxcbiAgICBMaXN0Lm1hcChcbiAgICAgICgoYSwgc3opKSA9PlxuICAgICAgICBzd2l0Y2ggKHN6KSB7XG4gICAgICAgIHwgU29tZSh6KSA9PiAoYSwgU29tZShFZGl0b3IuaW5pdCh6LCB+cmVhZF9vbmx5KSkpXG4gICAgICAgIHwgTm9uZSA9PiAoYSwgTm9uZSlcbiAgICAgICAgfSxcbiAgICAgIHpzLFxuICAgICksXG4gICk7XG59O1xuXG5sZXQgZWRpdG9yc19vZl9zdHJpbmdzID0gKH5yZWFkX29ubHk9ZmFsc2UsIHhzOiBsaXN0KHN0cmluZykpID0+IHtcbiAgbGV0IChpLCBhZXMpID0gZWRpdG9yc19mb3IoeHMsIHggPT4gU29tZSh4KSwgfnJlYWRfb25seSk7XG4gIChpLCBMaXN0Lm1hcCgoKF8sIG9lKSkgPT4gT3B0aW9uLmdldChvZSksIGFlcykpO1xufTtcblxubGV0IHJlYyBhcHBlbmRfZXhwID0ge1xuICBFeHAuKFxuICAgIChlMTogRXhwLnQsIGUyOiBFeHAudCkgPT4gKFxuICAgICAge1xuICAgICAgICBzd2l0Y2ggKGUxLnRlcm0pIHtcbiAgICAgICAgfCBFbXB0eUhvbGVcbiAgICAgICAgfCBJbnZhbGlkKF8pXG4gICAgICAgIHwgTXVsdGlIb2xlKF8pXG4gICAgICAgIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICAgICAgICB8IEZhaWxlZENhc3QoXylcbiAgICAgICAgfCBEZWZlcnJhbChfKVxuICAgICAgICB8IEJvb2woXylcbiAgICAgICAgfCBJbnQoXylcbiAgICAgICAgfCBGbG9hdChfKVxuICAgICAgICB8IFN0cmluZyhfKVxuICAgICAgICB8IExpc3RMaXQoXylcbiAgICAgICAgfCBDb25zdHJ1Y3RvcihfKVxuICAgICAgICB8IENsb3N1cmUoXylcbiAgICAgICAgfCBGdW4oXylcbiAgICAgICAgfCBUeXBGdW4oXylcbiAgICAgICAgfCBGaXhGKF8pXG4gICAgICAgIHwgVHVwbGUoXylcbiAgICAgICAgfCBWYXIoXylcbiAgICAgICAgfCBBcChfKVxuICAgICAgICB8IFR5cEFwKF8pXG4gICAgICAgIHwgRGVmZXJyZWRBcChfKVxuICAgICAgICB8IElmKF8pXG4gICAgICAgIHwgVGVzdChfKVxuICAgICAgICB8IFBhcmVucyhfKVxuICAgICAgICB8IENvbnMoXylcbiAgICAgICAgfCBMaXN0Q29uY2F0KF8pXG4gICAgICAgIHwgVW5PcChfKVxuICAgICAgICB8IEJpbk9wKF8pXG4gICAgICAgIHwgQnVpbHRpbkZ1bihfKVxuICAgICAgICB8IENhc3QoXylcbiAgICAgICAgfCBNYXRjaChfKSA9PiBFeHAue2lkczogW0lkLm1rKCldLCBjb3BpZWQ6IGZhbHNlLCB0ZXJtOiBTZXEoZTEsIGUyKX1cbiAgICAgICAgfCBTZXEoZTExLCBlMTIpID0+XG4gICAgICAgICAgbGV0IGUxMicgPSBhcHBlbmRfZXhwKGUxMiwgZTIpO1xuICAgICAgICAgIHtpZHM6IGUxLmlkcywgY29waWVkOiBmYWxzZSwgdGVybTogU2VxKGUxMSwgZTEyJyl9O1xuICAgICAgICB8IEZpbHRlcihraW5kLCBlYm9keSkgPT5cbiAgICAgICAgICBsZXQgZWJvZHknID0gYXBwZW5kX2V4cChlYm9keSwgZTIpO1xuICAgICAgICAgIHtpZHM6IGUxLmlkcywgY29waWVkOiBmYWxzZSwgdGVybTogRmlsdGVyKGtpbmQsIGVib2R5Jyl9O1xuICAgICAgICB8IExldChwLCBlZGVmLCBlYm9keSkgPT5cbiAgICAgICAgICBsZXQgZWJvZHknID0gYXBwZW5kX2V4cChlYm9keSwgZTIpO1xuICAgICAgICAgIHtpZHM6IGUxLmlkcywgY29waWVkOiBmYWxzZSwgdGVybTogTGV0KHAsIGVkZWYsIGVib2R5Jyl9O1xuICAgICAgICB8IFR5QWxpYXModHAsIHRkZWYsIGVib2R5KSA9PlxuICAgICAgICAgIGxldCBlYm9keScgPSBhcHBlbmRfZXhwKGVib2R5LCBlMik7XG4gICAgICAgICAge2lkczogZTEuaWRzLCBjb3BpZWQ6IGZhbHNlLCB0ZXJtOiBUeUFsaWFzKHRwLCB0ZGVmLCBlYm9keScpfTtcbiAgICAgICAgfTtcbiAgICAgIH06IEV4cC50XG4gICAgKVxuICApO1xufTtcbiIsImxldCBuYnNwID0gXCJcXHhDMlxceEEwXCI7IC8vIFVURi04IGVuY29kaW5nIGZvciBVKzAwQTAgXCJOby1icmVhayBzcGFjZVwiXG5cbi8vIE5PVEU6IDMwJSBmYXN0ZXIgdGhhbiBDYW1vbWlsZVxubGV0IGxlbmd0aCA9IChzOiBzdHJpbmcpOiBpbnQgPT4ge1xuICBsZXQgc3RvcCA9IFN0cmluZy5sZW5ndGgocyk7XG4gIGxldCByZWMgZGlzdGFuY2VfYXV4ID0gKHN0YXJ0OiBpbnQsIGNvdW50OiBpbnQpID0+XG4gICAgaWYgKHN0YXJ0ICsgY291bnQgPj0gc3RvcCkge1xuICAgICAgc3RvcCAtIGNvdW50O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbiA9IENoYXIuY29kZShTdHJpbmcudW5zYWZlX2dldChzLCBzdGFydCArIGNvdW50KSk7XG4gICAgICBpZiAobiA8IDB4ODApIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhlMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDEpO1xuICAgICAgfSBlbHNlIGlmIChuIDwgMHhmMCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlzdGFuY2VfYXV4KHN0YXJ0ICsgMSwgY291bnQgKyAzKTtcbiAgICAgIH07XG4gICAgfTtcblxuICBkaXN0YW5jZV9hdXgoMCwgMCk7XG59O1xuIiwiLy8gTWFwcyBrZXllZCBieSBhbiBlbmQgcG9zaXRpb25cbi8vIEludmFyaWVudDoga2V5cyBhcmUgYXNjZW5kaW5nIGFuZCB1bmlxdWVcbnR5cGUga2V5ID0gaW50O1xudHlwZSB0KCdhKSA9IGxpc3QoKGtleSwgJ2EpKTtcbmxldCBlbXB0eTogJ2EuIHQoJ2EpID0gW107XG5sZXQgc2luZ2xldG9uOiAnYS4gKGtleSwgJ2EpID0+IHQoJ2EpID0gKHBvcywgeCkgPT4gWyhwb3MsIHgpXTtcbmxldCByZWMgdW5pb246ICdhLiAoKCdhLCAnYSkgPT4gJ2EsIHQoJ2EpLCB0KCdhKSkgPT4gdCgnYSkgPVxuICAoZiwgdDEsIHQyKSA9PlxuICAgIHN3aXRjaCAodDEsIHQyKSB7XG4gICAgfCAoW10sIHRfb3RoZXIpID0+IHRfb3RoZXJcbiAgICB8ICh0X290aGVyLCBbXSkgPT4gdF9vdGhlclxuICAgIHwgKFsocDEsIHgxKSwgLi4ueHMxXSwgWyhwMiwgeDIpLCAuLi54czJdKSA9PlxuICAgICAgaWYgKHAxIDwgcDIpIHtcbiAgICAgICAgWyhwMSwgeDEpLCAuLi51bmlvbihmLCB4czEsIFsocDIsIHgyKSwgLi4ueHMyXSldO1xuICAgICAgfSBlbHNlIGlmIChwMSA+IHAyKSB7XG4gICAgICAgIFsocDIsIHgyKSwgLi4udW5pb24oZiwgWyhwMSwgeDEpLCAuLi54czFdLCB4czIpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFsocDEsIGYoeDEsIHgyKSksIC4uLnVuaW9uKGYsIHhzMSwgeHMyKV07XG4gICAgICB9XG4gICAgfTtcbmxldCByZWMgbWFwOiAnYSAnYi4gKCdhID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZih4KSksIC4uLm1hcChmLCByZXN0KV07XG5sZXQgcmVjIG1hcGk6ICdhICdiLiAoKGtleSwgJ2EpID0+ICdiLCB0KCdhKSkgPT4gdCgnYikgPVxuICBmID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiBbXVxuICAgIHwgWyhwb3MsIHgpLCAuLi5yZXN0XSA9PiBbKHBvcywgZihwb3MsIHgpKSwgLi4ubWFwaShmLCByZXN0KV07XG5sZXQgcmVjIG1hcGs6ICdhICdiLiAoKGtleSwgJ2EpID0+IChrZXksICdiKSwgdCgnYSkpID0+IHQoJ2IpID1cbiAgZiA9PlxuICAgIGZ1blxuICAgIHwgW10gPT4gW11cbiAgICB8IFsocG9zLCB4KSwgLi4ucmVzdF0gPT4gW2YocG9zLCB4KSwgLi4ubWFwayhmLCByZXN0KV07XG5sZXQgcmVjIGZvbGRfbGVmdDogJ2EgJ2IuICgoa2V5LCAnYiwgJ2EpID0+ICdiLCAnYiwgdCgnYSkpID0+ICdiID1cbiAgKGYsIHopID0+XG4gICAgZnVuXG4gICAgfCBbXSA9PiB6XG4gICAgfCBbKHBvcywgeCksIC4uLnJlc3RdID0+IGZvbGRfbGVmdChmLCBmKHBvcywgeiwgeCksIHJlc3QpO1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0ID0ge1xuICByb3c6IGludCxcbiAgY29sOiBpbnQsXG59O1xuXG5sZXQgY29tcGFyZSA9IChwb3MxLCBwb3MyKSA9PlxuICBpZiAocG9zMS5yb3cgPCBwb3MyLnJvdykge1xuICAgICgtMSk7XG4gIH0gZWxzZSBpZiAocG9zMS5yb3cgPiBwb3MyLnJvdykge1xuICAgIDE7XG4gIH0gZWxzZSB7XG4gICAgSW50LmNvbXBhcmUocG9zMS5jb2wsIHBvczIuY29sKTtcbiAgfTtcblxubGV0IHplcm8gPSB7cm93OiAwLCBjb2w6IDB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuLy8gVE9ETzogcmVuYW1lIEFubm90IHRvIEFubj9cbltAZGVyaXZpbmcgc2V4cF1cbnR5cGUgdCgnYW5ub3QpID1cbiAgfCBUZXh0KHN0cmluZykgLy8gSW52YXJpYW50OiBjb250YWlucyBubyBuZXdsaW5lcy4gVGV4dChcIlwiKSBpcyBpZGVudGl0eSBmb3IgYENhdGBcbiAgfCBDYXQodCgnYW5ub3QpLCB0KCdhbm5vdCkpIC8vIEFzc29jaWF0aXZlXG4gIHwgTGluZWJyZWFrXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTsgLy8gQW5ub3RhdGlvbnNcblxubGV0IGFsaWduID0gKGw6IHQoJ2Fubm90KSkgPT4gQWxpZ24obCk7XG5sZXQgYW5ub3QgPSAoYW5ub3Q6ICdhbm5vdCwgbDogdCgnYW5ub3QpKSA9PiBBbm5vdChhbm5vdCwgbCk7XG5cbmxldCByZWMgcmVtb3ZlX2Fubm90cyA9IChsYXlvdXQ6IHQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gIHN3aXRjaCAobGF5b3V0KSB7XG4gIHwgQW5ub3QoXywgbCkgPT4gcmVtb3ZlX2Fubm90cyhsKVxuICB8IFRleHQoc3RyaW5nKSA9PiBUZXh0KHN0cmluZylcbiAgfCBDYXQobDEsIGwyKSA9PiBDYXQocmVtb3ZlX2Fubm90cyhsMSksIHJlbW92ZV9hbm5vdHMobDIpKVxuICB8IExpbmVicmVhayA9PiBMaW5lYnJlYWtcbiAgfCBBbGlnbihsKSA9PiBBbGlnbihyZW1vdmVfYW5ub3RzKGwpKVxuICB9O1xufTtcblxuLy8gVE9ETz9cbi8vbGV0IHRleHQgPSAoc3RyaW5nKSA9PiB0X29mX2xheW91dChUZXh0KHN0cmluZykpO1xuLy9sZXQgY2F0ID0gKHQxLCB0MikgPT4gdF9vZl9sYXlvdXQoQ2F0KHQxLCB0MikpO1xuLy9sZXQgbGluZWJyZWFrID0gdF9vZl9sYXlvdXQobGluZWJyZWFrKTtcblxuLy8gVE9ETzogbW92ZSB0byBvd24gbW9kdWxlXG50eXBlIHRleHQoJ2Fubm90LCAnaW1wLCAndCkgPSB7XG4gIC8vIFRPRE86IHJlbmFtZSBgaW1wYFxuICBpbXBfb2Zfc3RyaW5nOiBzdHJpbmcgPT4gJ2ltcCxcbiAgaW1wX2FwcGVuZDogKCdpbXAsICdpbXApID0+ICdpbXAsXG4gIGltcF9uZXdsaW5lOiBpbnQgPT4gJ2ltcCxcbiAgaW1wX29mX2Fubm90OiAoJ2Fubm90LCAnaW1wKSA9PiAnaW1wLFxuICB0X29mX2ltcDogJ2ltcCA9PiAndCxcbn07XG5cbmxldCBta19vZl9sYXlvdXQ6ICh0ZXh0KCdhbm5vdCwgJ2ltcCwgJ3QpLCB0KCdhbm5vdCkpID0+ICd0ID1cbiAgKHRleHQsIGxheW91dCkgPT4ge1xuICAgIGxldCBjb2x1bW46IHJlZihpbnQpID0gcmVmKDApO1xuICAgIGxldCByZWMgZ286IChpbnQsIHQoJ2Fubm90KSkgPT4gJ2ltcCA9XG4gICAgICAoaW5kZW50LCBsYXlvdXQpID0+IHtcbiAgICAgICAgc3dpdGNoIChsYXlvdXQpIHtcbiAgICAgICAgfCBUZXh0KHN0cmluZykgPT5cbiAgICAgICAgICBjb2x1bW4gOj0gY29sdW1uXiArIFVuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICAgICAgdGV4dC5pbXBfb2Zfc3RyaW5nKHN0cmluZyk7XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgaW1wMSA9IGdvKGluZGVudCwgbDEpO1xuICAgICAgICAgIGxldCBpbXAyID0gZ28oaW5kZW50LCBsMik7XG4gICAgICAgICAgdGV4dC5pbXBfYXBwZW5kKGltcDEsIGltcDIpO1xuICAgICAgICB8IExpbmVicmVhayA9PlxuICAgICAgICAgIC8vIFRPRE86IG5vIGluZGVudCBpZiBvbiBmaW5hbCBsaW5lIGJyZWFrXG4gICAgICAgICAgY29sdW1uIDo9IGluZGVudDtcbiAgICAgICAgICB0ZXh0LmltcF9uZXdsaW5lKGluZGVudCk7XG4gICAgICAgIHwgQWxpZ24obCkgPT4gZ28oY29sdW1uXiwgbClcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT4gdGV4dC5pbXBfb2ZfYW5ub3QoYW5ub3QsIGdvKGluZGVudCwgbCkpXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIHRleHQudF9vZl9pbXAoZ28oMCwgbGF5b3V0KSk7XG4gIH07XG5cbmxldCBzdHJpbmdfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBzdHJpbmcgPVxuICBsYXlvdXQgPT4ge1xuICAgIGxldCByZWNvcmQ6ICdhbm5vdC4gdGV4dCgnYW5ub3QsIHN0cmluZywgc3RyaW5nKSA9IHtcbiAgICAgIGltcF9vZl9zdHJpbmc6IHN0cmluZyA9PiBzdHJpbmcsXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiBzMSArKyBzMixcbiAgICAgIGltcF9uZXdsaW5lOiBpbmRlbnQgPT4gXCJcXG5cIiArKyBTdHJpbmcubWFrZShpbmRlbnQsICcgJyksXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBpbXAgPT4gaW1wLFxuICAgIH07XG4gICAgbWtfb2ZfbGF5b3V0KHJlY29yZCwgbGF5b3V0KTtcbiAgfTtcblxubGV0IHN0cmluZ3Nfb2ZfbGF5b3V0OiAnYW5ub3QuIHQoJ2Fubm90KSA9PiBsaXN0KChpbnQsIHN0cmluZykpID1cbiAgbGF5b3V0ID0+IHtcbiAgICBsZXQgcmVjb3JkOlxuICAgICAgJ2Fubm90LlxuICAgICAgdGV4dCgnYW5ub3QsIGxpc3QoKGludCwgc3RyaW5nKSksIGxpc3QoKGludCwgc3RyaW5nKSkpXG4gICAgID0ge1xuICAgICAgaW1wX29mX3N0cmluZzogc3RyaW5nID0+IFsoMCwgc3RyaW5nKV0sXG4gICAgICBpbXBfYXBwZW5kOiAoczEsIHMyKSA9PiB7XG4gICAgICAgIHN3aXRjaCAoTGlzdC5yZXYoczEpLCBzMikge1xuICAgICAgICB8IChbXSwgXykgPT4gczJcbiAgICAgICAgfCAoXywgW10pID0+IHMxXG4gICAgICAgIHwgKFxuICAgICAgICAgICAgWyhsYXN0X2luZGVudF8xLCBsYXN0X3N0cmluZ18xKSwgLi4ucmVzdDFdLFxuICAgICAgICAgICAgWyhmaXJzdF9pbmRlbnRfMiwgZmlyc3Rfc3RyaW5nXzIpLCAuLi5yZXN0Ml0sXG4gICAgICAgICAgKSA9PlxuICAgICAgICAgIGFzc2VydChmaXJzdF9pbmRlbnRfMiA9PSAwKTtcbiAgICAgICAgICBMaXN0LnJldihyZXN0MSlcbiAgICAgICAgICBAIFsobGFzdF9pbmRlbnRfMSwgbGFzdF9zdHJpbmdfMSArKyBmaXJzdF9zdHJpbmdfMiksIC4uLnJlc3QyXTtcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBpbXBfbmV3bGluZTogaW5kZW50ID0+IFsoaW5kZW50LCBcIlwiKV0sXG4gICAgICBpbXBfb2ZfYW5ub3Q6IChfLCBpbXApID0+IGltcCxcbiAgICAgIHRfb2ZfaW1wOiBzID0+IHMsXG4gICAgfTtcbiAgICBta19vZl9sYXlvdXQocmVjb3JkLCBsYXlvdXQpO1xuICB9O1xuIiwibGV0IHNwbGl0X2ZpcnN0ID0gKHhzOiBsaXN0KCdhKSk6ICgnYSwgbGlzdCgnYSkpID0+XG4gIHN3aXRjaCAoeHMpIHtcbiAgfCBbXSA9PiBmYWlsd2l0aChcImVtcHR5IGxpc3RcIilcbiAgfCBbZmlyc3QsIC4uLnRyYWlsaW5nXSA9PiAoZmlyc3QsIHRyYWlsaW5nKVxuICB9O1xuXG5sZXQgc3BsaXRfbGFzdF9vcHQgPSAoeHM6IGxpc3QoJ2EpKTogb3B0aW9uKChsaXN0KCdhKSwgJ2EpKSA9PlxuICBzd2l0Y2ggKExpc3QucmV2KHhzKSkge1xuICB8IFtdID0+IE5vbmVcbiAgfCBbeSwgLi4ueXNdID0+IFNvbWUoKExpc3QucmV2KHlzKSwgeSkpXG4gIH07XG5sZXQgc3BsaXRfbGFzdCA9ICh4czogbGlzdCgnYSkpOiAobGlzdCgnYSksICdhKSA9PlxuICBzd2l0Y2ggKHNwbGl0X2xhc3Rfb3B0KHhzKSkge1xuICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJlbXB0eSBsaXN0XCIpXG4gIHwgU29tZShyKSA9PiByXG4gIH07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIGJveCA9IHtcbiAgaGVpZ2h0OiBpbnQsXG4gIHdpZHRoOiBpbnQsXG59O1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbGF5b3V0OiB0JygnYW5ub3QpLFxuICBtZXRyaWNzOiBsaXN0KGJveCksXG59XG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgTGluZWJyZWFrXG4gIHwgVGV4dChzdHJpbmcpXG4gIHwgQWxpZ24odCgnYW5ub3QpKVxuICB8IENhdCh0KCdhbm5vdCksIHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSk7XG5cbnR5cGUgd2l0aF9vZmZzZXQoJ2Fubm90KSA9IChpbnQsIHQoJ2Fubm90KSk7XG5cbmxldCBoZWlnaHQgPSAobTogdChfKSkgPT5cbiAgbS5tZXRyaWNzIHw+IExpc3QubWFwKGJveCA9PiBib3guaGVpZ2h0KSB8PiBMaXN0LmZvbGRfbGVmdCgoKyksIDApO1xuXG5sZXQgd2lkdGggPSAofm9mZnNldD0wLCBtOiB0KF8pKSA9PlxuICBMaXN0LnRsKG0ubWV0cmljcylcbiAgfD4gTGlzdC5tYXAoYm94ID0+IGJveC53aWR0aClcbiAgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCBvZmZzZXQgKyBMaXN0LmhkKG0ubWV0cmljcykud2lkdGgpO1xuXG5sZXQgZm9sZCA9XG4gICAgKFxuICAgICAgfmxpbmVicmVhazogJ2FjYyxcbiAgICAgIH50ZXh0OiBzdHJpbmcgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogJ2FjYyA9PiAnYWNjLFxuICAgICAgfmNhdDogKCdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBhbGxvdyBjbGllbnQgdG8gY29udHJvbCByZWN1cnNpb24gYmFzZWQgb24gYW5ub3RhdGlvblxuICAgICAgICAgKHQoJ2Fubm90KSA9PiAnYWNjLCAnYW5ub3QsIHQoJ2Fubm90KSkgPT4gJ2FjYyxcbiAgICAgIG06IHQoJ2Fubm90KSxcbiAgICApXG4gICAgOiAnYWNjID0+IHtcbiAgbGV0IHJlYyBnbyA9IChtOiB0KF8pKSA9PlxuICAgIHN3aXRjaCAobS5sYXlvdXQpIHtcbiAgICB8IExpbmVicmVhayA9PiBsaW5lYnJlYWtcbiAgICB8IFRleHQocykgPT4gdGV4dChzKVxuICAgIHwgQWxpZ24obSkgPT4gYWxpZ24oZ28obSkpXG4gICAgfCBDYXQobTEsIG0yKSA9PlxuICAgICAgbGV0IGFjYzEgPSBnbyhtMSk7XG4gICAgICBsZXQgYWNjMiA9IGdvKG0yKTtcbiAgICAgIGNhdChhY2MxLCBhY2MyKTtcbiAgICB8IEFubm90KGFubiwgbSkgPT4gYW5ub3QoZ28sIGFubiwgbSlcbiAgICB9O1xuICBnbyhtKTtcbn07XG5cbmxldCBuZXh0X3Bvc2l0aW9uID1cbiAgICAofmluZGVudDogaW50LCB7cm93LCBjb2x9OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpXG4gICAgOiBNZWFzdXJlZFBvc2l0aW9uLnQgPT4ge1xuICBsZXQgdXBkYXRlZF9yb3cgPSByb3cgKyBoZWlnaHQobSkgLSAxO1xuICBsZXQgdXBkYXRlZF9jb2wgPSB7XG4gICAgbGV0IChsZWFkaW5nLCBsYXN0KSA9IExpc3RVdGlsLnNwbGl0X2xhc3QobS5tZXRyaWNzKTtcbiAgICBsYXN0LndpZHRoXG4gICAgKyAoXG4gICAgICBzd2l0Y2ggKGxlYWRpbmcpIHtcbiAgICAgIHwgW10gPT4gY29sXG4gICAgICB8IFtfLCAuLi5fXSA9PiBpbmRlbnRcbiAgICAgIH1cbiAgICApO1xuICB9O1xuICB7cm93OiB1cGRhdGVkX3JvdywgY29sOiB1cGRhdGVkX2NvbH07XG59O1xuXG5sZXQgcG9zX2ZvbGQgPVxuICAgIChcbiAgICAgIH5saW5lYnJlYWs6IE1lYXN1cmVkUG9zaXRpb24udCA9PiAnYWNjLFxuICAgICAgfnRleHQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsIHN0cmluZykgPT4gJ2FjYyxcbiAgICAgIH5hbGlnbjogKE1lYXN1cmVkUG9zaXRpb24udCwgJ2FjYykgPT4gJ2FjYyxcbiAgICAgIH5jYXQ6IChNZWFzdXJlZFBvc2l0aW9uLnQsICdhY2MsICdhY2MpID0+ICdhY2MsXG4gICAgICB+YW5ub3Q6XG4gICAgICAgICAvLyBsZXQgY2xpZW50IGNvbnRyb2wgcmVjdXJzaW9uIGJhc2VkIG9uIGFubm90YXRpb25cbiAgICAgICAgIChcbiAgICAgICAgICAgfmdvOiB0KCdhbm5vdCkgPT4gJ2FjYyxcbiAgICAgICAgICAgfmluZGVudDogaW50LFxuICAgICAgICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udCxcbiAgICAgICAgICAgJ2Fubm90LFxuICAgICAgICAgICB0KCdhbm5vdClcbiAgICAgICAgICkgPT5cbiAgICAgICAgICdhY2MsXG4gICAgICB+aW5kZW50PTAsXG4gICAgICB+c3RhcnQ6IE1lYXN1cmVkUG9zaXRpb24udD1NZWFzdXJlZFBvc2l0aW9uLnplcm8sXG4gICAgICBtOiB0KCdhbm5vdCksXG4gICAgKVxuICAgIDogJ2FjYyA9PiB7XG4gIGxldCByZWMgZ28gPSAoaW5kZW50OiBpbnQsIHN0YXJ0OiBNZWFzdXJlZFBvc2l0aW9uLnQsIG06IHQoXykpID0+XG4gICAgc3dpdGNoIChtLmxheW91dCkge1xuICAgIHwgTGluZWJyZWFrID0+IGxpbmVicmVhayhzdGFydClcbiAgICB8IFRleHQocykgPT4gdGV4dChzdGFydCwgcylcbiAgICB8IEFsaWduKG0pID0+IGFsaWduKHN0YXJ0LCBnbyhzdGFydC5jb2wsIHN0YXJ0LCBtKSlcbiAgICB8IENhdChtMSwgbTIpID0+XG4gICAgICBsZXQgbWlkID0gbmV4dF9wb3NpdGlvbih+aW5kZW50LCBzdGFydCwgbTEpO1xuICAgICAgY2F0KHN0YXJ0LCBnbyhpbmRlbnQsIHN0YXJ0LCBtMSksIGdvKGluZGVudCwgbWlkLCBtMikpO1xuICAgIHwgQW5ub3QoYW5uLCBtKSA9PiBhbm5vdCh+Z289Z28oaW5kZW50LCBzdGFydCksIH5pbmRlbnQsIH5zdGFydCwgYW5uLCBtKVxuICAgIH07XG4gIGdvKGluZGVudCwgc3RhcnQsIG0pO1xufTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCB0YWJsZTogTWVtb1RibC50KExheW91dC50KHVuaXQpLCB0KHVuaXQpKSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBtayA9IChsOiBMYXlvdXQudCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKE1lbW9UYmwuZ2V0KHRhYmxlLCBPYmoubWFnaWMobCkpKSB7XG4gICAgfCBTb21lKG0pID0+IE9iai5tYWdpYyhtKVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IG0gPVxuICAgICAgICBzd2l0Y2ggKGwpIHtcbiAgICAgICAgfCBMaW5lYnJlYWsgPT5cbiAgICAgICAgICBsZXQgYm94ID0ge2hlaWdodDogMSwgd2lkdGg6IDB9O1xuICAgICAgICAgIHttZXRyaWNzOiBbYm94LCBib3hdLCBsYXlvdXQ6IExpbmVicmVha307XG4gICAgICAgIHwgVGV4dChzKSA9PiB7XG4gICAgICAgICAgICBtZXRyaWNzOiBbe2hlaWdodDogMSwgd2lkdGg6IFVuaWNvZGUubGVuZ3RoKHMpfV0sXG4gICAgICAgICAgICBsYXlvdXQ6IFRleHQocyksXG4gICAgICAgICAgfVxuICAgICAgICB8IEFsaWduKGwpID0+XG4gICAgICAgICAgbGV0IG0gPSBtayhsKTtcbiAgICAgICAgICBsZXQgYm91bmRpbmdfYm94ID1cbiAgICAgICAgICAgIG0ubWV0cmljc1xuICAgICAgICAgICAgfD4gTGlzdC5mb2xkX2xlZnQoXG4gICAgICAgICAgICAgICAgICh7aGVpZ2h0OiBiaCwgd2lkdGg6IGJ3fSwge2hlaWdodCwgd2lkdGh9KSA9PlxuICAgICAgICAgICAgICAgICAgIHtoZWlnaHQ6IGJoICsgaGVpZ2h0LCB3aWR0aDogbWF4KGJ3LCB3aWR0aCl9LFxuICAgICAgICAgICAgICAgICB7aGVpZ2h0OiAwLCB3aWR0aDogMH0sXG4gICAgICAgICAgICAgICApO1xuICAgICAgICAgIHttZXRyaWNzOiBbYm91bmRpbmdfYm94XSwgbGF5b3V0OiBBbGlnbihtKX07XG4gICAgICAgIHwgQ2F0KGwxLCBsMikgPT5cbiAgICAgICAgICBsZXQgbTEgPSBtayhsMSk7XG4gICAgICAgICAgbGV0IG0yID0gbWsobDIpO1xuICAgICAgICAgIGxldCAobGVhZGluZywgbGFzdCkgPSBMaXN0VXRpbC5zcGxpdF9sYXN0KG0xLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCAoZmlyc3QsIHRyYWlsaW5nKSA9IExpc3RVdGlsLnNwbGl0X2ZpcnN0KG0yLm1ldHJpY3MpO1xuICAgICAgICAgIGxldCBtaWRfYm94ID0ge1xuICAgICAgICAgICAgaGVpZ2h0OiBtYXgobGFzdC5oZWlnaHQsIGZpcnN0LmhlaWdodCksXG4gICAgICAgICAgICB3aWR0aDogbGFzdC53aWR0aCArIGZpcnN0LndpZHRoLFxuICAgICAgICAgIH07XG4gICAgICAgICAge21ldHJpY3M6IGxlYWRpbmcgQCBbbWlkX2JveCwgLi4udHJhaWxpbmddLCBsYXlvdXQ6IENhdChtMSwgbTIpfTtcbiAgICAgICAgfCBBbm5vdChhbm5vdCwgbCkgPT5cbiAgICAgICAgICBsZXQgbSA9IG1rKGwpO1xuICAgICAgICAgIHsuLi5tLCBsYXlvdXQ6IEFubm90KGFubm90LCBtKX07XG4gICAgICAgIH07XG4gICAgICBNZW1vVGJsLnNldCh0YWJsZSwgT2JqLm1hZ2ljKGwpLCBPYmoubWFnaWMobSkpO1xuICAgICAgbTtcbiAgICB9O1xuICB9O1xufTtcbiIsInR5cGUgdCA9IHtcbiAgLy8gU3VtIG9mIHRoZSBzcXVhcmUgb2YgaG93IG11Y2ggZWFjaCBsaW5lIGV4dGVuZHMgYmV5b25kIG1heCB3aWR0aC4gIFVzdWFsbHkgemVyby5cbiAgb3ZlcmZsb3dfY29zdDogaW50LFxuICAvLyBIZWlnaHQgbWludXMgb25lLiAgQS5rLmEuIG51bWJlciBvZiBsaW5lIGJyZWFrcy5cbiAgaGVpZ2h0X2Nvc3Q6IGludCxcbn07XG5cbmxldCBtayA9ICh+b3ZlcmZsb3dfY29zdDogaW50LCB+aGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4ge1xuICBvdmVyZmxvd19jb3N0LFxuICBoZWlnaHRfY29zdCxcbn07XG5cbmxldCBta19oZWlnaHQgPSAoaGVpZ2h0X2Nvc3Q6IGludCk6IHQgPT4gbWsofm92ZXJmbG93X2Nvc3Q9MCwgfmhlaWdodF9jb3N0KTtcblxubGV0IG1rX292ZXJmbG93ID0gKG92ZXJmbG93X2Nvc3Q6IGludCk6IHQgPT5cbiAgbWsofm92ZXJmbG93X2Nvc3QsIH5oZWlnaHRfY29zdD0wKTtcblxubGV0IHplcm86IHQgPSB7b3ZlcmZsb3dfY29zdDogMCwgaGVpZ2h0X2Nvc3Q6IDB9O1xuXG5sZXQgaW5mOiB0ID0ge292ZXJmbG93X2Nvc3Q6IG1heF9pbnQsIGhlaWdodF9jb3N0OiBtYXhfaW50fTtcblxubGV0IGFkZCA9IChjMTogdCwgYzI6IHQpOiB0ID0+IHtcbiAgb3ZlcmZsb3dfY29zdDogYzEub3ZlcmZsb3dfY29zdCArIGMyLm92ZXJmbG93X2Nvc3QsXG4gIGhlaWdodF9jb3N0OiBjMS5oZWlnaHRfY29zdCArIGMyLmhlaWdodF9jb3N0LFxufTtcblxubGV0IGVxID0gKGMxOiB0LCBjMjogdCk6IGJvb2wgPT5cbiAgYzEub3ZlcmZsb3dfY29zdCA9PT0gYzIub3ZlcmZsb3dfY29zdCAmJiBjMS5oZWlnaHRfY29zdCA9PT0gYzIuaGVpZ2h0X2Nvc3Q7XG5cbmxldCBsdCA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPCBjMi5oZWlnaHRfY29zdDtcbiAgfSBlbHNlIHtcbiAgICBjMS5vdmVyZmxvd19jb3N0IDwgYzIub3ZlcmZsb3dfY29zdDtcbiAgfTtcblxubGV0IGxlcSA9IChjMTogdCwgYzI6IHQpOiBib29sID0+XG4gIGlmIChjMS5vdmVyZmxvd19jb3N0ID09PSBjMi5vdmVyZmxvd19jb3N0KSB7XG4gICAgYzEuaGVpZ2h0X2Nvc3QgPD0gYzIuaGVpZ2h0X2Nvc3Q7XG4gIH0gZWxzZSB7XG4gICAgYzEub3ZlcmZsb3dfY29zdCA8PSBjMi5vdmVyZmxvd19jb3N0O1xuICB9O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxubW9kdWxlIFdpZHRoUG9zS2V5ID0ge1xuICB0eXBlIHQgPSAoaW50LCBpbnQpO1xuICBsZXQgaGFzaCA9ICgod2lkdGgsIHBvcykpID0+IDI1NiAqIDI1NiAqIHdpZHRoICsgcG9zO1xuICBsZXQgZXF1YWwgPSAoKHcxLCBwMSksICh3MiwgcDIpKSA9PiB3MSA9PSB3MiAmJiBwMSA9PSBwMjtcbn07XG5cbm1vZHVsZSBNID0gSGFzaHRibC5NYWtlKFdpZHRoUG9zS2V5KTtcblxuLy8gTk9URTogcG9zIGlzIHJlbGF0aXZlIHRvIG1vc3QgcmVjZW50IGBBbGlnbmBcbnR5cGUgbScoJ2EpID0gUG9zTWFwLnQoKENvc3QudCwgJ2EpKTtcbnR5cGUgbSgnYSkgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCkgPT4gbScoJ2EpO1xuXG5bQGRlcml2aW5nIHNleHBdXG50eXBlIHQoJ2Fubm90KSA9IHtcbiAgbWVtOiBbQHNleHAub3BhcXVlXSBNLnQobScoTGF5b3V0LnQoJ2Fubm90KSkpLFxuICBkb2M6IHQnKCdhbm5vdCksXG59XG5bQGRlcml2aW5nIHNleHBdXG5hbmQgdCcoJ2Fubm90KSA9XG4gIHwgVGV4dChzdHJpbmcpIC8vIFRleHQoXCJcIikgaXMgaWRlbnRpdHkgZm9yIGBDYXRgXG4gIHwgQ2F0KHQoJ2Fubm90KSwgdCgnYW5ub3QpKSAvLyBhc3NvY2lhdGl2ZVxuICB8IExpbmVicmVha1xuICB8IEFsaWduKHQoJ2Fubm90KSlcbiAgfCBBbm5vdCgnYW5ub3QsIHQoJ2Fubm90KSkgLy8gQW5ub3RhdGlvbnNcbiAgfCBGYWlsIC8vIGlkZW50aXR5IGZvciBgQ2hvaWNlYFxuICB8IENob2ljZSh0KCdhbm5vdCksIHQoJ2Fubm90KSk7XG5cbmxldCB0X29mX3QnID0gKHQnOiB0JygnYW5ub3QpKTogdCgnYW5ub3QpID0+IHttZW06IE0uY3JlYXRlKDApLCBkb2M6IHQnfTtcblxubGV0IHRleHQgPSAoczogc3RyaW5nKSA9PiB0X29mX3QnKFRleHQocykpO1xubGV0IGxpbmVicmVhayA9ICgpID0+IHRfb2ZfdCcoTGluZWJyZWFrKTtcbmxldCBhbGlnbiA9IGRvYyA9PiB0X29mX3QnKEFsaWduKGRvYykpO1xubGV0IGFubm90ID0gKGFubm90LCBkb2MpID0+IHRfb2ZfdCcoQW5ub3QoYW5ub3QsIGRvYykpO1xubGV0IGZhaWwgPSAoKSA9PiB0X29mX3QnKEZhaWwpO1xuXG5sZXQgZW1wdHkgPSAoKSA9PiB0ZXh0KFwiXCIpO1xubGV0IHNwYWNlID0gKCkgPT4gdGV4dChVbmljb2RlLm5ic3ApOyAvLyBUT0RPOiBwYXJhbSB0byBoc2VwXG5cbmxldCBpbmRlbnQgPSAoKSA9PiB0ZXh0KFVuaWNvZGUubmJzcCArKyBVbmljb2RlLm5ic3ApO1xubGV0IGluZGVudF9hbmRfYWxpZ24gPSBkb2MgPT4gdF9vZl90JyhDYXQoaW5kZW50KCksIGFsaWduKGRvYykpKTtcblxubGV0IGhjYXQgPSAoeCwgeSkgPT4gdF9vZl90JyhDYXQoeCwgeSkpO1xubGV0IGhjYXRzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhjYXQsIGRvYywgZG9jcyk7XG5cbmxldCBoc2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KHNwYWNlKCksIHkpKSkpO1xubGV0IGhzZXBzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZW1wdHkoKVxuICB8IFtkb2MsIC4uLmRvY3NdID0+IExpc3QuZm9sZF9sZWZ0KGhzZXAsIGRvYywgZG9jcyk7XG5cbmxldCB2c2VwID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2F0KHgsIHRfb2ZfdCcoQ2F0KGxpbmVicmVhaygpLCB5KSkpKTtcbmxldCB2c2VwczogbGlzdCh0KCdhbm5vdCkpID0+IHQoJ2Fubm90KSA9XG4gIGZ1blxuICB8IFtdID0+IGZhaWx3aXRoKF9fTE9DX18gKysgXCI6IHZzZXBzIHJlcXVpcmVzIGEgbm9uLWVtcHR5IGxpc3RcIilcbiAgfCBbZG9jXSA9PiBkb2NcbiAgfCBbZG9jLCAuLi5kb2NzXSA9PiBMaXN0LmZvbGRfbGVmdCh2c2VwLCBkb2MsIGRvY3MpO1xuXG5sZXQgY2hvaWNlID0gKHgsIHkpID0+IHRfb2ZfdCcoQ2hvaWNlKHgsIHkpKTtcbmxldCBjaG9pY2VzOiBsaXN0KHQoJ2Fubm90KSkgPT4gdCgnYW5ub3QpID1cbiAgZnVuXG4gIHwgW10gPT4gZmFpbCgpXG4gIHwgW2RvYywgLi4uZG9jc10gPT4gTGlzdC5mb2xkX2xlZnQoY2hvaWNlLCBkb2MsIGRvY3MpO1xuXG5sZXQgbWFwX3QnOiAnYSAnYi4gKHQnKCdhKSA9PiB0JygnYiksIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PiB0X29mX3QnKGYoZC5kb2MpKTtcblxubGV0IHJlYyBtYXBfYW5ub3Q6ICdhICdiLiAoJ2EgPT4gJ2IsIHQoJ2EpKSA9PiB0KCdiKSA9XG4gIChmLCBkKSA9PlxuICAgIGRcbiAgICB8PiBtYXBfdCcoXG4gICAgICAgICBmdW5cbiAgICAgICAgIHwgKFRleHQoXykgfCBMaW5lYnJlYWsgfCBGYWlsKSBhcyBkJyA9PiBkJ1xuICAgICAgICAgfCBBbm5vdChhbm5vdCwgZCkgPT4gQW5ub3QoZihhbm5vdCksIG1hcF9hbm5vdChmLCBkKSlcbiAgICAgICAgIHwgQWxpZ24oZCkgPT4gQWxpZ24obWFwX2Fubm90KGYsIGQpKVxuICAgICAgICAgfCBDYXQoZDEsIGQyKSA9PiBDYXQobWFwX2Fubm90KGYsIGQxKSwgbWFwX2Fubm90KGYsIGQyKSlcbiAgICAgICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gQ2hvaWNlKG1hcF9hbm5vdChmLCBkMSksIG1hcF9hbm5vdChmLCBkMikpLFxuICAgICAgICk7XG4iLCIvLyBUT0RPOiBjb21wdXRlIGFjdHVhbCBsYXlvdXQgc2l6ZSBhbmQgdXNlIGluc3RlYWQgb2YgdF9vZl9sYXlvdXRcbmxldCByZWMgYWxsOiAnYW5ub3QuIERvYy50KCdhbm5vdCkgPT4gbGlzdChMYXlvdXQudCgnYW5ub3QpKSA9IHtcbiAgZG9jID0+IHtcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PiBbTGF5b3V0LlRleHQoc3RyaW5nKV1cbiAgICB8IENhdChkMSwgZDIpID0+XG4gICAgICBsZXQgbHMxID0gYWxsKGQxKTtcbiAgICAgIGxldCBsczIgPSBhbGwoZDIpO1xuICAgICAgTGlzdC5jb25jYXQoXG4gICAgICAgIExpc3QubWFwKGwxID0+IExpc3QubWFwKGwyID0+IExheW91dC5DYXQobDEsIGwyKSwgbHMyKSwgbHMxKSxcbiAgICAgICk7XG4gICAgfCBMaW5lYnJlYWsgPT4gW0xheW91dC5MaW5lYnJlYWtdXG4gICAgfCBBbGlnbihkKSA9PiBMaXN0Lm1hcChsID0+IExheW91dC5BbGlnbihsKSwgYWxsKGQpKVxuICAgIHwgQW5ub3QoYW5ub3QsIGQpID0+IExpc3QubWFwKGwgPT4gTGF5b3V0LkFubm90KGFubm90LCBsKSwgYWxsKGQpKVxuICAgIHwgRmFpbCA9PiBbXVxuICAgIHwgQ2hvaWNlKGQxLCBkMikgPT4gYWxsKGQxKSBAIGFsbChkMilcbiAgICB9O1xuICB9O1xufTtcblxuLy8gTm90ZTogVGhpcyB1bmlvbiBpcyBsZWZ0IGJpYXNlZFxubGV0IG0nX3VuaW9uOiAnYS4gKERvYy5tJygnYSksIERvYy5tJygnYSkpID0+IERvYy5tJygnYSkgPVxuICAocDEsIHAyKSA9PiB7XG4gICAgbGV0IGNvc3RfdW5pb24gPSAoKGNvc3QxOiBDb3N0LnQsIF8pIGFzIHQxLCAoY29zdDI6IENvc3QudCwgXykgYXMgdDIpID0+XG4gICAgICBpZiAoQ29zdC5sZXEoY29zdDEsIGNvc3QyKSkge1xuICAgICAgICB0MTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHQyO1xuICAgICAgfTtcbiAgICBQb3NNYXAudW5pb24oY29zdF91bmlvbiwgcDEsIHAyKTtcbiAgfTtcblxubGV0IHJlYyBsYXlvdXRfb2ZfZG9jJyA9IChkb2M6IERvYy50KHVuaXQpKTogRG9jLm0oTGF5b3V0LnQodW5pdCkpID0+IHtcbiAgbGV0IGcgPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIC8vIFRPRE86IGxpZnQgdGhlIHN3aXRjaChkb2MuZG9jKSBvdXRzaWRlIHRoZSBsYW1iZGFcbiAgICBzd2l0Y2ggKGRvYy5kb2MpIHtcbiAgICB8IFRleHQoc3RyaW5nKSA9PlxuICAgICAgLy8gVE9ETzogY2FjaGUgdGV4dCBsZW5ndGggaW4gVGV4dD9cbiAgICAgIGxldCBwb3MnID0gcG9zICsgU3RyaW5nLmxlbmd0aChzdHJpbmcpOyAvL1VuaWNvZGUubGVuZ3RoKHN0cmluZyk7XG4gICAgICBsZXQgY29zdCA9XG4gICAgICAgIGlmIChwb3MnIDw9IHdpZHRoKSB7XG4gICAgICAgICAgQ29zdC56ZXJvO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxldCBvdmVyZmxvdyA9IHBvcycgLSB3aWR0aDtcbiAgICAgICAgICAvLyBvdmVyZmxvd19jb3N0ID0gc3VtIGkgZnJvbSAxIHRvIG92ZXJmbG93XG4gICAgICAgICAgbGV0IG92ZXJmbG93X2Nvc3QgPSBvdmVyZmxvdyAqIChvdmVyZmxvdyArIDEpIC8gMjtcbiAgICAgICAgICBDb3N0Lm1rX292ZXJmbG93KG92ZXJmbG93X2Nvc3QpO1xuICAgICAgICB9O1xuICAgICAgUG9zTWFwLnNpbmdsZXRvbihwb3MnLCAoY29zdCwgTGF5b3V0LlRleHQoc3RyaW5nKSkpO1xuICAgIHwgQ2F0KGQxLCBkMikgPT5cbiAgICAgIGxldCBsMSA9IGxheW91dF9vZl9kb2MnKGQxLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgUG9zTWFwLmZvbGRfbGVmdChcbiAgICAgICAgKHBvcywgeiwgKGNvc3QxLCBsYXlvdXQxKSkgPT4ge1xuICAgICAgICAgIGxldCBsMiA9IGxheW91dF9vZl9kb2MnKGQyLCB+d2lkdGgsIH5wb3MpO1xuICAgICAgICAgIGxldCBsYXlvdXRzID1cbiAgICAgICAgICAgIFBvc01hcC5tYXAoXG4gICAgICAgICAgICAgICgoY29zdDIsIGxheW91dDIpKSA9PlxuICAgICAgICAgICAgICAgIChDb3N0LmFkZChjb3N0MSwgY29zdDIpLCBMYXlvdXQuQ2F0KGxheW91dDEsIGxheW91dDIpKSxcbiAgICAgICAgICAgICAgbDIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIG0nX3VuaW9uKHosIGxheW91dHMpO1xuICAgICAgICB9LFxuICAgICAgICBQb3NNYXAuZW1wdHksXG4gICAgICAgIGwxLFxuICAgICAgKTtcbiAgICB8IExpbmVicmVhayA9PlxuICAgICAgUG9zTWFwLnNpbmdsZXRvbigwLCAoQ29zdC5ta19oZWlnaHQoMSksIExheW91dC5MaW5lYnJlYWspKVxuICAgIHwgQWxpZ24oZCkgPT5cbiAgICAgIGxldCBsYXlvdXQgPSBsYXlvdXRfb2ZfZG9jJyhkLCB+d2lkdGg9d2lkdGggLSBwb3MsIH5wb3M9MCk7XG4gICAgICBQb3NNYXAubWFwayhcbiAgICAgICAgKHAsIChjLCBsKSkgPT4gKHAgKyBwb3MsIChjLCBMYXlvdXQuQWxpZ24obCkpKSxcbiAgICAgICAgbGF5b3V0LFxuICAgICAgKTtcbiAgICB8IEFubm90KGFubm90LCBkKSA9PlxuICAgICAgbGV0IGxheW91dCA9IGxheW91dF9vZl9kb2MnKGQsIH53aWR0aCwgfnBvcyk7XG4gICAgICBQb3NNYXAubWFwKCgoYywgbCkpID0+IChjLCBMYXlvdXQuQW5ub3QoYW5ub3QsIGwpKSwgbGF5b3V0KTtcbiAgICB8IEZhaWwgPT4gUG9zTWFwLmVtcHR5XG4gICAgfCBDaG9pY2UoZDEsIGQyKSA9PlxuICAgICAgbGV0IGwxID0gbGF5b3V0X29mX2RvYycoZDEsIH53aWR0aCwgfnBvcyk7XG4gICAgICBsZXQgbDIgPSBsYXlvdXRfb2ZfZG9jJyhkMiwgfndpZHRoLCB+cG9zKTtcbiAgICAgIG0nX3VuaW9uKGwxLCBsMik7XG4gICAgfTtcbiAgfTtcbiAgbGV0IGggPSAofndpZHRoOiBpbnQsIH5wb3M6IGludCk6IERvYy5tJyhMYXlvdXQudCh1bml0KSkgPT4ge1xuICAgIGxldCBrZXkgPSAod2lkdGgsIHBvcyk7XG4gICAgc3dpdGNoIChEb2MuTS5maW5kX29wdChkb2MubWVtLCBrZXkpKSB7XG4gICAgfCBTb21lKHZhbHVlKSA9PiB2YWx1ZVxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IHZhbHVlID0gZyh+d2lkdGgsIH5wb3MpO1xuICAgICAgRG9jLk0uYWRkKGRvYy5tZW0sIGtleSwgdmFsdWUpO1xuICAgICAgdmFsdWU7XG4gICAgfTtcbiAgfTtcbiAgaDtcbn07XG5cbmxldCBsYXlvdXRfb2ZfZG9jID1cbiAgICAoZG9jOiBEb2MudCgnYW5ub3QpLCB+d2lkdGg6IGludCwgfnBvczogaW50KTogb3B0aW9uKExheW91dC50KCdhbm5vdCkpID0+IHtcbiAgbGV0IHJlYyBtaW5pbXVtID1cbiAgICAgICAgICAoKHBvcywgKGNvc3QsIHQpKTogKGludCwgKENvc3QudCwgb3B0aW9uKCdhKSkpKVxuICAgICAgICAgIDogKGxpc3QoKGludCwgKENvc3QudCwgJ2EpKSkgPT4gb3B0aW9uKCdhKSkgPT4ge1xuICAgIGZ1blxuICAgIHwgW10gPT4gdFxuICAgIHwgWyh4X3BvcywgKHhfY29zdCwgeCkpLCAuLi5yZXN0XSA9PlxuICAgICAgLy8gUHJlZmVyIGxvd2VzdCBjb3N0LCBvciBpZiBzYW1lIGNvc3QsIHByZWZlciBlbmRpbmcgYXQgYW4gZWFybGllciBjb2x1bW5cbiAgICAgIC8vIChDb2x1bW5zIGFyZSB1bmlxdWUgYnkgY29uc3RydWN0aW9uIG9mIFBvc01hcC4pXG4gICAgICBpZiAoQ29zdC5sdCh4X2Nvc3QsIGNvc3QpIHx8IENvc3QuZXEoeF9jb3N0LCBjb3N0KSAmJiB4X3BvcyA8IHBvcykge1xuICAgICAgICBtaW5pbXVtKCh4X3BvcywgKHhfY29zdCwgU29tZSh4KSkpLCByZXN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pbmltdW0oKHBvcywgKGNvc3QsIHQpKSwgcmVzdCk7XG4gICAgICB9O1xuICB9O1xuICAvLyBUT0RPOiB1c2Ugb3B0aW9ucyBpbnN0ZWFkIG9mIG1heF9pbnRcbiAgLy8gbGV0IHN0YXJ0X3RpbWUgPSBTeXMudGltZSgpO1xuICBsZXQgbCA9XG4gICAgbWluaW11bShcbiAgICAgIChtYXhfaW50LCAoQ29zdC5pbmYsIE5vbmUpKSxcbiAgICAgIE9iai5tYWdpYyhsYXlvdXRfb2ZfZG9jJyhPYmoubWFnaWMoZG9jKSwgfndpZHRoLCB+cG9zKSksXG4gICAgKTtcbiAgLy8gbGV0IGVuZF90aW1lID0gU3lzLnRpbWUoKTtcbiAgLypcbiAgIFByaW50Zi5wcmludGYoXG4gICAgIFwibGF5b3V0X29mX2RvYzogJWQgXFx0JWZcXG5cIixcbiAgICAgLTEsIC8vZnN0KExhenkuZm9yY2UobWVtb190YWJsZSkpIyMuc2l6ZSxcbiAgICAgLy9NZW1vaXplLldlYWtQb2x5LlRhYmxlLmxlbmd0aChmc3QoTGF6eS5mb3JjZShtZW1vX3RhYmxlKSkpLFxuICAgICAxMDAwLjAgKi4gKGVuZF90aW1lIC0uIHN0YXJ0X3RpbWUpLFxuICAgKTtcbiAgICovXG4gIGw7XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyBzZXhwXVxudHlwZSB0KCdhbm5vdCkgPVxuICB8IFRleHQoc3RyaW5nKVxuICB8IEhCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IFZCb3gobGlzdCh0KCdhbm5vdCkpKVxuICB8IEFubm90KCdhbm5vdCwgdCgnYW5ub3QpKTtcblxubW9kdWxlIE1ha2UgPSAoTWVtb1RibDogTWVtb1RibC5TKSA9PiB7XG4gIGxldCBoZWlnaHRfdGJsOiBNZW1vVGJsLnQodCh1bml0KSwgaW50KSA9IE1lbW9UYmwubWsoKTtcbiAgbGV0IHJlYyBoZWlnaHQgPSAoYm94OiB0KCdhbm5vdCkpID0+XG4gICAgc3dpdGNoIChNZW1vVGJsLmdldChoZWlnaHRfdGJsLCBPYmoubWFnaWMoYm94KSkpIHtcbiAgICB8IFNvbWUoaCkgPT4gaFxuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IGggPVxuICAgICAgICBzd2l0Y2ggKGJveCkge1xuICAgICAgICB8IFRleHQoXykgPT4gMVxuICAgICAgICB8IEFubm90KF8sIGIpID0+IGhlaWdodChiKVxuICAgICAgICB8IEhCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQobWF4LCAxKSAvLyBOb3RlOiAxIGlzIEhCb3goW10pIGhlaWdodFxuICAgICAgICB8IFZCb3goYnMpID0+IGJzIHw+IExpc3QubWFwKGhlaWdodCkgfD4gTGlzdC5mb2xkX2xlZnQoKCspLCAwKVxuICAgICAgICB9O1xuICAgICAgTWVtb1RibC5zZXQoaGVpZ2h0X3RibCwgT2JqLm1hZ2ljKGJveCksIGgpO1xuICAgICAgaDtcbiAgICB9O1xuXG4gIC8vIE5vdGU6IGFubm90cyBhcmUgaW5zaWRlLW91dCAoaS5lLiBMaXN0LmhkKGFubm90cykgaXMgdGhlIGlubmVyLW1vc3QgYW5ub3QpXG4gIGxldCByZWMgYW5ub3QgPSAoYW5ub3RzOiBsaXN0KCdhbm5vdCksIGJveDogdCgnYW5ub3QpKTogdCgnYW5ub3QpID0+IHtcbiAgICBzd2l0Y2ggKGFubm90cykge1xuICAgIHwgW10gPT4gYm94XG4gICAgfCBbYW5uLCAuLi5hbm5zXSA9PiBhbm5vdChhbm5zLCBBbm5vdChhbm4sIGJveCkpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIGFwcGVuZF9ib3ggPVxuICAgICAgICAgICh+YW5ub3RzOiBsaXN0KCdhbm5vdCk9W10sIGJveDE6IHQoJ2Fubm90KSwgYm94MjogdCgnYW5ub3QpKVxuICAgICAgICAgIDogdCgnYW5ub3QpID0+XG4gICAgaWYgKGhlaWdodChib3gxKSA8PSAxKSB7XG4gICAgICBIQm94KFthbm5vdChhbm5vdHMsIGJveDEpLCBib3gyXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCByZWMgYXBwZW5kX2xhc3QgPSAoYnMxOiBsaXN0KHQoJ2Fubm90KSkpOiBsaXN0KHQoJ2Fubm90KSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKGJzMSkge1xuICAgICAgICB8IFtdID0+IGZhaWx3aXRoKFwiaW1wb3NzaWJsZSBkdWUgdG8gYGJveF9oZWlnaHRgIGd1YXJkXCIpXG4gICAgICAgIHwgW2IxXSA9PiBbYXBwZW5kX2JveCh+YW5ub3RzLCBiMSwgYm94MildXG4gICAgICAgIHwgW2IxLCAuLi5iczFdID0+IFthbm5vdChhbm5vdHMsIGIxKSwgLi4uYXBwZW5kX2xhc3QoYnMxKV1cbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBzd2l0Y2ggKGJveDEpIHtcbiAgICAgIHwgVGV4dChfKSA9PiBmYWlsd2l0aChcImltcG9zc2libGUgZHVlIHRvIGBib3hfaGVpZ2h0YCBndWFyZFwiKVxuICAgICAgfCBIQm94KGJzMSkgPT4gSEJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBWQm94KGJzMSkgPT4gVkJveChhcHBlbmRfbGFzdChiczEpKVxuICAgICAgfCBBbm5vdChhbm5vdCwgYikgPT4gYXBwZW5kX2JveCh+YW5ub3RzPVthbm5vdCwgLi4uYW5ub3RzXSwgYiwgYm94MilcbiAgICAgIH07XG4gICAgfTtcblxuICBsZXQgYXBwZW5kX2hib3ggPSAoYm94ZXMxOiBsaXN0KHQoJ2Fubm90KSksIGJveGVzMjogbGlzdCh0KCdhbm5vdCkpKSA9PiB7XG4gICAgc3dpdGNoIChMaXN0VXRpbC5zcGxpdF9sYXN0X29wdChib3hlczEpKSB7XG4gICAgfCBOb25lID0+IGJveGVzMlxuICAgIHwgU29tZSgobGVhZGluZywgbGFzdCkpID0+IGxlYWRpbmcgQCBbYXBwZW5kX2JveChsYXN0LCBIQm94KGJveGVzMikpXVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHRhYmxlOiBNZW1vVGJsLnQoTGF5b3V0LnQodW5pdCksIHQodW5pdCkpID0gTWVtb1RibC5taygpO1xuICBsZXQgbWsgPSAobDogTGF5b3V0LnQoJ2Fubm90KSk6IHQoJ2Fubm90KSA9PiB7XG4gICAgbGV0IG1rID0gKGJveGVzOiBsaXN0KGxpc3QodChfKSkpKSA9PlxuICAgICAgVkJveChMaXN0Lm1hcChyb3cgPT4gSEJveChyb3cpLCBib3hlcykpO1xuICAgIGxldCByZWMgZ28gPSAobDogTGF5b3V0LnQoXykpID0+IHtcbiAgICAgIHN3aXRjaCAoTWVtb1RibC5nZXQodGFibGUsIE9iai5tYWdpYyhsKSkpIHtcbiAgICAgIHwgU29tZShib3gpID0+IE9iai5tYWdpYyhib3gpXG4gICAgICB8IE5vbmUgPT5cbiAgICAgICAgbGV0IGJveCA9XG4gICAgICAgICAgc3dpdGNoIChsKSB7XG4gICAgICAgICAgfCBMaW5lYnJlYWsgPT4gW1tdLCBbXV1cbiAgICAgICAgICB8IFRleHQocykgPT4gW1tUZXh0KHMpXV1cbiAgICAgICAgICB8IEFsaWduKGwpID0+IFtbbWsoZ28obCkpXV1cbiAgICAgICAgICB8IEFubm90KGFubiwgbCkgPT5cbiAgICAgICAgICAgIGdvKGwpIHw+IExpc3QubWFwKHJvdyA9PiBbQW5ub3QoYW5uLCBIQm94KHJvdykpXSlcbiAgICAgICAgICB8IENhdChsMSwgbDIpID0+XG4gICAgICAgICAgICBsZXQgKGxlYWRpbmcsIGxhc3QpID0gTGlzdFV0aWwuc3BsaXRfbGFzdChnbyhsMSkpO1xuICAgICAgICAgICAgbGV0IChmaXJzdCwgdHJhaWxpbmcpID0gTGlzdFV0aWwuc3BsaXRfZmlyc3QoZ28obDIpKTtcbiAgICAgICAgICAgIGxlYWRpbmcgQCBbYXBwZW5kX2hib3gobGFzdCwgZmlyc3QpLCAuLi50cmFpbGluZ107XG4gICAgICAgICAgfTtcbiAgICAgICAgTWVtb1RibC5zZXQodGFibGUsIE9iai5tYWdpYyhsKSwgT2JqLm1hZ2ljKGJveCkpO1xuICAgICAgICBib3g7XG4gICAgICB9O1xuICAgIH07XG4gICAgbWsoZ28obCkpO1xuICB9O1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuLypcbiAgVGhlc2UgYXJlIHRoZSBzeW50YXggdGVzdCBmdW5jdGlvbnMgdXNlZCBmb3IgdGhlIHN5bnRheCB2YWxpZGF0aW9uXG4gIHNlY3Rpb24gb2YgdGhlIGV4ZXJjaXNlcy4gVGhlIHN5bnRheCB0ZXN0cyBhcmUgZGVzaWduZWQgdG9cbiAgZW5zdXJlIHRoYXQgdGhlIHVzZXIgaW1wbGVtZW50YXRpb24gc2F0aXNmaWVzIGNlcnRhaW4gc3ludGF4IHByb3BlcnRpZXNcbiAgZS5nLiB0YWlsIHJlY3Vyc2l2ZSBmdW5jdGlvbiBvciB2YXJpYWJsZSB1c2FnZS5cbiAqL1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN5bnRheF9yZXN1bHQgPSB7XG4gIHJlc3VsdHM6IGxpc3QoYm9vbCksXG4gIHBlcmNlbnRhZ2U6IGZsb2F0LFxufTtcblxubGV0IHJlYyBmaW5kX3Zhcl91cGF0ID0gKG5hbWU6IHN0cmluZywgdXBhdDogUGF0LnQpOiBib29sID0+IHtcbiAgc3dpdGNoICh1cGF0LnRlcm0pIHtcbiAgfCBWYXIoeCkgPT4geCA9PSBuYW1lXG4gIHwgRW1wdHlIb2xlXG4gIHwgV2lsZFxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IEJvb2woXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKSA9PiBmYWxzZVxuICB8IENvbnModXAxLCB1cDIpID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAxKSB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1cCkgPT4ge2FjYyB8fCBmaW5kX3Zhcl91cGF0KG5hbWUsIHVwKX0sIGZhbHNlLCBsKVxuICB8IFBhcmVucyh1cCkgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cClcbiAgfCBBcCh1cDEsIHVwMikgPT4gZmluZF92YXJfdXBhdChuYW1lLCB1cDEpIHx8IGZpbmRfdmFyX3VwYXQobmFtZSwgdXAyKVxuICB8IENhc3QodXAsIF8sIF8pID0+IGZpbmRfdmFyX3VwYXQobmFtZSwgdXApXG4gIH07XG59O1xuXG4vKlxuICBIZWxwZXIgZnVuY3Rpb24gdXNlZCBpbiB0aGUgZnVuY3Rpb24gZmluZF9mbiB3aGljaCB0YWtlcyB0aGVcbiAgcGF0dGVybiAodXBhdCkgYW5kIHRoZSBkZWZpbml0aW9uIChkZWYpIG9mIGEgbGV0IGV4cHJlc3Npb24gYW5kXG4gIGNvbGxlY3RzIGZ1bmN0aW9ucyBpbiBkZWYgdGhhdCBhcmUgYm91bmQgdG8gdmFyaWFibGUgbmFtZSBpblxuICB1cGF0LiBFeGFtcGxlOiBmb3IgdGhlIGV4cHJlc3Npb24gXCJsZXQgKGEsYikgPSAoZnVuIHggLT4geCsxLCA0MSkgaW5cIlxuICBpZiBuYW1lPVwiYVwiLCB0aGVuIGw9W2Z1biB4IC0+IHgrMV1cbiAqL1xubGV0IHJlYyBmaW5kX2luX2xldCA9XG4gICAgICAgIChuYW1lOiBzdHJpbmcsIHVwYXQ6IFVQYXQudCwgZGVmOiBVRXhwLnQsIGw6IGxpc3QoVUV4cC50KSlcbiAgICAgICAgOiBsaXN0KFVFeHAudCkgPT4ge1xuICBzd2l0Y2ggKHVwYXQudGVybSwgZGVmLnRlcm0pIHtcbiAgfCAoUGFyZW5zKHVwKSwgUGFyZW5zKHVlKSkgPT4gZmluZF9pbl9sZXQobmFtZSwgdXAsIHVlLCBsKVxuICB8IChQYXJlbnModXApLCBfKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmLCBsKVxuICB8IChfLCBQYXJlbnModWUpKSA9PiBmaW5kX2luX2xldChuYW1lLCB1cGF0LCB1ZSwgbClcbiAgfCAoQ2FzdCh1cCwgXywgXyksIF8pID0+IGZpbmRfaW5fbGV0KG5hbWUsIHVwLCBkZWYsIGwpXG4gIHwgKFZhcih4KSwgRnVuKF8pKSA9PiB4ID09IG5hbWUgPyBbZGVmLCAuLi5sXSA6IGxcbiAgfCAoVHVwbGUocGwpLCBUdXBsZSh1bCkpID0+XG4gICAgaWYgKExpc3QubGVuZ3RoKHBsKSAhPSBMaXN0Lmxlbmd0aCh1bCkpIHtcbiAgICAgIGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIExpc3QuZm9sZF9sZWZ0MihcbiAgICAgICAgKGFjYywgdXAsIHVlKSA9PiB7ZmluZF9pbl9sZXQobmFtZSwgdXAsIHVlLCBhY2MpfSxcbiAgICAgICAgbCxcbiAgICAgICAgcGwsXG4gICAgICAgIHVsLFxuICAgICAgKTtcbiAgICB9XG4gIHwgKFZhcihfKSwgXylcbiAgfCAoVHVwbGUoXyksIF8pXG4gIHwgKFxuICAgICAgRW1wdHlIb2xlIHwgV2lsZCB8IEludmFsaWQoXykgfCBNdWx0aUhvbGUoXykgfCBJbnQoXykgfCBGbG9hdChfKSB8IEJvb2woXykgfFxuICAgICAgU3RyaW5nKF8pIHxcbiAgICAgIExpc3RMaXQoXykgfFxuICAgICAgQ29uc3RydWN0b3IoXykgfFxuICAgICAgQ29ucyhfLCBfKSB8XG4gICAgICBBcChfLCBfKSxcbiAgICAgIF8sXG4gICAgKSA9PiBsXG4gIH07XG59O1xuXG4vKlxuIEZpbmQgYW55IGZ1bmN0aW9uIGV4cHJlc3Npb25zIGluIHVleHAgdGhhdCBhcmUgYm91bmQgdG8gdmFyaWFibGUgbmFtZVxuICovXG5sZXQgcmVjIGZpbmRfZm4gPVxuICAgICAgICAobmFtZTogc3RyaW5nLCB1ZXhwOiBVRXhwLnQsIGw6IGxpc3QoVUV4cC50KSk6IGxpc3QoVUV4cC50KSA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgTGV0KHVwLCBkZWYsIGJvZHkpID0+XG4gICAgbCB8PiBmaW5kX2luX2xldChuYW1lLCB1cCwgZGVmKSB8PiBmaW5kX2ZuKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdCh1bClcbiAgfCBUdXBsZSh1bCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1MSkgPT4ge2ZpbmRfZm4obmFtZSwgdTEsIGFjYyl9LCBsLCB1bClcbiAgfCBUeXBGdW4oXywgYm9keSwgXylcbiAgfCBGaXhGKF8sIGJvZHksIF8pXG4gIHwgRnVuKF8sIGJvZHksIF8sIF8pID0+IGwgfD4gZmluZF9mbihuYW1lLCBib2R5KVxuICB8IFR5cEFwKHUxLCBfKVxuICB8IFBhcmVucyh1MSlcbiAgfCBDYXN0KHUxLCBfLCBfKVxuICB8IFVuT3AoXywgdTEpXG4gIHwgVHlBbGlhcyhfLCBfLCB1MSlcbiAgfCBUZXN0KHUxKVxuICB8IENsb3N1cmUoXywgdTEpXG4gIHwgRmlsdGVyKF8sIHUxKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpXG4gIHwgQXAoXywgdTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgQ29ucyh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpIHw+IGZpbmRfZm4obmFtZSwgdTIpIHw+IGZpbmRfZm4obmFtZSwgdTMpXG4gIHwgRGVmZXJyZWRBcChmbiwgYXJncykgPT5cbiAgICBsXG4gICAgfD4gZmluZF9mbihuYW1lLCBmbilcbiAgICB8PiBMaXN0LmZvbGRfbGVmdCgobCwgdSkgPT4gZmluZF9mbihuYW1lLCB1LCBsKSwgXywgYXJncylcbiAgfCBNYXRjaCh1MSwgdWwpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoYWNjLCAoXywgdWUpKSA9PiB7ZmluZF9mbihuYW1lLCB1ZSwgYWNjKX0sXG4gICAgICBsIHw+IGZpbmRfZm4obmFtZSwgdTEpLFxuICAgICAgdWwsXG4gICAgKVxuICB8IEVtcHR5SG9sZVxuICB8IERlZmVycmFsKF8pXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IER5bmFtaWNFcnJvckhvbGUoXylcbiAgfCBGYWlsZWRDYXN0KF8pXG4gIHwgQm9vbChfKVxuICB8IEludChfKVxuICB8IEZsb2F0KF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXylcbiAgfCBCdWlsdGluRnVuKF8pXG4gIHwgVmFyKF8pID0+IGxcbiAgfTtcbn07XG5cbi8qXG4gRmluZHMgd2hldGhlciB2YXJpYWJsZSBuYW1lIGlzIGV2ZXIgbWVudGlvbmVkIGluIHVwYXQuXG4gKi9cbmxldCByZWMgdmFyX21lbnRpb25fdXBhdCA9IChuYW1lOiBzdHJpbmcsIHVwYXQ6IFBhdC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodXBhdC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IFdpbGRcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBCb29sKF8pXG4gIHwgU3RyaW5nKF8pXG4gIHwgQ29uc3RydWN0b3IoXykgPT4gZmFsc2VcbiAgfCBDb25zKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVwKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXApfSxcbiAgICAgIGZhbHNlLFxuICAgICAgbCxcbiAgICApXG4gIHwgUGFyZW5zKHVwKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB8IEFwKHVwMSwgdXAyKSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgdXAxKSB8fCB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwMilcbiAgfCBDYXN0KHVwLCBfLCBfKSA9PiB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHVwKVxuICB9O1xufTtcblxuLypcbiBGaW5kcyB3aGV0aGVyIHZhcmlhYmxlIG5hbWUgaXMgZXZlciBtZW50aW9uZWQgaW4gdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfbWVudGlvbiA9IChuYW1lOiBzdHJpbmcsIHVleHA6IEV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKHgpID0+IHggPT0gbmFtZVxuICB8IEVtcHR5SG9sZVxuICB8IEludmFsaWQoXylcbiAgfCBNdWx0aUhvbGUoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IERlZmVycmFsKF8pID0+IGZhbHNlXG4gIHwgRnVuKGFyZ3MsIGJvZHksIF8sIF8pID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX21lbnRpb24obmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfbWVudGlvbihuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfbWVudGlvbihuYW1lLCBkZWYpIHx8IHZhcl9tZW50aW9uKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUsIF8pXG4gIHwgVHlwQXAodSwgXylcbiAgfCBUZXN0KHUpXG4gIHwgUGFyZW5zKHUpXG4gIHwgVW5PcChfLCB1KVxuICB8IFR5QWxpYXMoXywgXywgdSlcbiAgfCBGaWx0ZXIoXywgdSkgPT4gdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBEeW5hbWljRXJyb3JIb2xlKHUsIF8pID0+IHZhcl9tZW50aW9uKG5hbWUsIHUpXG4gIHwgRmFpbGVkQ2FzdCh1LCBfLCBfKSA9PiB2YXJfbWVudGlvbihuYW1lLCB1KVxuICB8IEZpeEYoYXJncywgYm9keSwgXykgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB2YXJfbWVudGlvbihuYW1lLCBib2R5KVxuICB8IENsb3N1cmUoXywgdSkgPT4gdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBCdWlsdGluRnVuKF8pID0+IGZhbHNlXG4gIHwgQ2FzdChkLCBfLCBfKSA9PiB2YXJfbWVudGlvbihuYW1lLCBkKVxuICB8IEFwKF8sIHUxLCB1MilcbiAgfCBTZXEodTEsIHUyKVxuICB8IENvbnModTEsIHUyKVxuICB8IExpc3RDb25jYXQodTEsIHUyKVxuICB8IEJpbk9wKF8sIHUxLCB1MikgPT4gdmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKVxuICB8IERlZmVycmVkQXAodTEsIHVzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKSB8fCBMaXN0LmV4aXN0cyh2YXJfbWVudGlvbihuYW1lKSwgdXMpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCB1MSkgfHwgdmFyX21lbnRpb24obmFtZSwgdTIpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX21lbnRpb24obmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIEZpbmRzIHdoZXRoZXIgdmFyaWFibGUgbmFtZSBpcyBhcHBsaWVkIG9uIGFub3RoZXIgZXhwcmVzc3Npb24uXG4gaS5lLiBBcChWYXIobmFtZSksIHUpIG9jY3VycyBhbnl3aGVyZSBpbiB0aGUgdWV4cC5cbiAqL1xubGV0IHJlYyB2YXJfYXBwbGllZCA9IChuYW1lOiBzdHJpbmcsIHVleHA6IEV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgVmFyKF8pXG4gIHwgRW1wdHlIb2xlXG4gIHwgSW52YWxpZChfKVxuICB8IE11bHRpSG9sZShfKVxuICB8IEJvb2woXylcbiAgfCBJbnQoXylcbiAgfCBGbG9hdChfKVxuICB8IFN0cmluZyhfKVxuICB8IENvbnN0cnVjdG9yKF8pXG4gIHwgRGVmZXJyYWwoXykgPT4gZmFsc2VcbiAgfCBGdW4oYXJncywgYm9keSwgXywgXylcbiAgfCBGaXhGKGFyZ3MsIGJvZHksIF8pID0+XG4gICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBhcmdzKSA/IGZhbHNlIDogdmFyX2FwcGxpZWQobmFtZSwgYm9keSlcbiAgfCBMaXN0TGl0KGwpXG4gIHwgVHVwbGUobCkgPT5cbiAgICBMaXN0LmZvbGRfbGVmdCgoYWNjLCB1ZSkgPT4ge2FjYyB8fCB2YXJfYXBwbGllZChuYW1lLCB1ZSl9LCBmYWxzZSwgbClcbiAgfCBMZXQocCwgZGVmLCBib2R5KSA9PlxuICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcClcbiAgICAgID8gZmFsc2UgOiB2YXJfYXBwbGllZChuYW1lLCBkZWYpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGJvZHkpXG4gIHwgVHlwRnVuKF8sIHUsIF8pXG4gIHwgVGVzdCh1KVxuICB8IFBhcmVucyh1KVxuICB8IFVuT3AoXywgdSlcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgRmlsdGVyKF8sIHUpID0+IHZhcl9hcHBsaWVkKG5hbWUsIHUpXG4gIHwgVHlwQXAodSwgXykgPT5cbiAgICBzd2l0Y2ggKHUudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiBmYWxzZVxuICAgIHwgXyA9PiB2YXJfYXBwbGllZChuYW1lLCB1KVxuICAgIH1cbiAgfCBEeW5hbWljRXJyb3JIb2xlKF8pID0+IGZhbHNlXG4gIHwgRmFpbGVkQ2FzdChfKSA9PiBmYWxzZVxuICAvLyBUaGlzIGNhc2Ugc2hvdWxkbid0IGNvbWUgdXAhXG4gIHwgQ2xvc3VyZShfKSA9PiBmYWxzZVxuICB8IEJ1aWx0aW5GdW4oXykgPT4gZmFsc2VcbiAgfCBDYXN0KGQsIF8sIF8pID0+IHZhcl9hcHBsaWVkKG5hbWUsIGQpXG4gIHwgQXAoXywgdTEsIHUyKSA9PlxuICAgIHN3aXRjaCAodTEudGVybSkge1xuICAgIHwgVmFyKHgpID0+IHggPT0gbmFtZSA/IHRydWUgOiB2YXJfYXBwbGllZChuYW1lLCB1MilcbiAgICB8IF8gPT4gdmFyX2FwcGxpZWQobmFtZSwgdTEpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUyKVxuICAgIH1cbiAgfCBEZWZlcnJlZEFwKHUxLCB1cykgPT5cbiAgICBzd2l0Y2ggKHUxLnRlcm0pIHtcbiAgICB8IFZhcih4KSA9PiB4ID09IG5hbWUgPyB0cnVlIDogTGlzdC5leGlzdHModmFyX2FwcGxpZWQobmFtZSksIHVzKVxuICAgIHwgXyA9PiBMaXN0LmV4aXN0cyh2YXJfYXBwbGllZChuYW1lKSwgdXMpXG4gICAgfVxuICB8IENvbnModTEsIHUyKVxuICB8IFNlcSh1MSwgdTIpXG4gIHwgTGlzdENvbmNhdCh1MSwgdTIpXG4gIHwgQmluT3AoXywgdTEsIHUyKSA9PiB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpXG4gIHwgSWYodTEsIHUyLCB1MykgPT5cbiAgICB2YXJfYXBwbGllZChuYW1lLCB1MSkgfHwgdmFyX2FwcGxpZWQobmFtZSwgdTIpIHx8IHZhcl9hcHBsaWVkKG5hbWUsIHUzKVxuICB8IE1hdGNoKGcsIGwpID0+XG4gICAgdmFyX2FwcGxpZWQobmFtZSwgZylcbiAgICB8fCBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgIChhY2MsIHBlKSA9PiB7XG4gICAgICAgICAgIGxldCAocCwgZSkgPSBwZTtcbiAgICAgICAgICAgdmFyX21lbnRpb25fdXBhdChuYW1lLCBwKSA/IGZhbHNlIDogYWNjIHx8IHZhcl9hcHBsaWVkKG5hbWUsIGUpO1xuICAgICAgICAgfSxcbiAgICAgICAgIGZhbHNlLFxuICAgICAgICAgbCxcbiAgICAgICApXG4gIH07XG59O1xuXG4vKlxuIENoZWNrIHdoZXRoZXIgYWxsIGZ1bmN0aW9ucyBib3VuZCB0byB2YXJpYWJsZSBuYW1lIGFyZSByZWN1cnNpdmUuXG4gKi9cbmxldCBpc19yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBFeHAudCk6IGJvb2wgPT4ge1xuICBsZXQgZm5fYm9kaWVzID0gW10gfD4gZmluZF9mbihuYW1lLCB1ZXhwKTtcbiAgaWYgKExpc3QubGVuZ3RoKGZuX2JvZGllcykgPT0gMCkge1xuICAgIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKGFjYywgdWUpID0+IHthY2MgJiYgdmFyX21lbnRpb24obmFtZSwgdWUpfSxcbiAgICAgIHRydWUsXG4gICAgICBmbl9ib2RpZXMsXG4gICAgKTtcbiAgfTtcbn07XG5cbi8qXG4gQ2hlY2sgaWYgdmFyaWFibGUgbmFtZSBpcyBub3QgbWVudGlvbmVkIGFueXdoZXJlIG91dHNpZGUgb2ZcbiBhIHRhaWwgcG9zaXRpb24gaW4gdWV4cC4gTm90ZSB0aGF0IGlmIHRoZSB2YXJpYWJsZSBpcyBub3RcbiBtZW50aW9uZWQgYW55d2hlcmUgaW4gdGhlIGV4cHJlc3Npb24sIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUuXG4gKi9cbmxldCByZWMgdGFpbF9jaGVjayA9IChuYW1lOiBzdHJpbmcsIHVleHA6IEV4cC50KTogYm9vbCA9PiB7XG4gIHN3aXRjaCAodWV4cC50ZXJtKSB7XG4gIHwgRW1wdHlIb2xlXG4gIHwgRGVmZXJyYWwoXylcbiAgfCBJbnZhbGlkKF8pXG4gIHwgTXVsdGlIb2xlKF8pXG4gIHwgRHluYW1pY0Vycm9ySG9sZShfKVxuICB8IEZhaWxlZENhc3QoXylcbiAgfCBCb29sKF8pXG4gIHwgSW50KF8pXG4gIHwgRmxvYXQoXylcbiAgfCBTdHJpbmcoXylcbiAgfCBDb25zdHJ1Y3RvcihfKVxuICB8IFZhcihfKVxuICB8IEJ1aWx0aW5GdW4oXykgPT4gdHJ1ZVxuICB8IEZpeEYoYXJncywgYm9keSwgXylcbiAgfCBGdW4oYXJncywgYm9keSwgXywgXykgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIGFyZ3MpID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGV0KHAsIGRlZiwgYm9keSkgPT5cbiAgICB2YXJfbWVudGlvbl91cGF0KG5hbWUsIHApIHx8IHZhcl9tZW50aW9uKG5hbWUsIGRlZilcbiAgICAgID8gZmFsc2UgOiB0YWlsX2NoZWNrKG5hbWUsIGJvZHkpXG4gIHwgTGlzdExpdChsKVxuICB8IFR1cGxlKGwpID0+XG4gICAgLy9JZiBsIGhhcyBubyByZWN1cnNpdmUgY2FsbHMgdGhlbiB0cnVlXG4gICAgIUxpc3QuZm9sZF9sZWZ0KChhY2MsIHVlKSA9PiB7YWNjIHx8IHZhcl9tZW50aW9uKG5hbWUsIHVlKX0sIGZhbHNlLCBsKVxuICB8IFRlc3QoXykgPT4gZmFsc2VcbiAgfCBUeUFsaWFzKF8sIF8sIHUpXG4gIHwgQ2FzdCh1LCBfLCBfKVxuICB8IEZpbHRlcihfLCB1KVxuICB8IENsb3N1cmUoXywgdSlcbiAgfCBUeXBGdW4oXywgdSwgXylcbiAgfCBUeXBBcCh1LCBfKVxuICB8IFBhcmVucyh1KSA9PiB0YWlsX2NoZWNrKG5hbWUsIHUpXG4gIHwgVW5PcChfLCB1KSA9PiAhdmFyX21lbnRpb24obmFtZSwgdSlcbiAgfCBBcChfLCB1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUyKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MSlcbiAgfCBEZWZlcnJlZEFwKGZuLCBhcmdzKSA9PlxuICAgIHRhaWxfY2hlY2sobmFtZSwgQXAoRm9yd2FyZCwgZm4sIFR1cGxlKGFyZ3MpIHw+IEV4cC5mcmVzaCkgfD4gRXhwLmZyZXNoKVxuICB8IFNlcSh1MSwgdTIpID0+IHZhcl9tZW50aW9uKG5hbWUsIHUxKSA/IGZhbHNlIDogdGFpbF9jaGVjayhuYW1lLCB1MilcbiAgfCBDb25zKHUxLCB1MilcbiAgfCBMaXN0Q29uY2F0KHUxLCB1MilcbiAgfCBCaW5PcChfLCB1MSwgdTIpID0+ICEodmFyX21lbnRpb24obmFtZSwgdTEpIHx8IHZhcl9tZW50aW9uKG5hbWUsIHUyKSlcbiAgfCBJZih1MSwgdTIsIHUzKSA9PlxuICAgIHZhcl9tZW50aW9uKG5hbWUsIHUxKVxuICAgICAgPyBmYWxzZSA6IHRhaWxfY2hlY2sobmFtZSwgdTIpICYmIHRhaWxfY2hlY2sobmFtZSwgdTMpXG4gIHwgTWF0Y2goZywgbCkgPT5cbiAgICB2YXJfbWVudGlvbihuYW1lLCBnKVxuICAgICAgPyBmYWxzZVxuICAgICAgOiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAoYWNjLCAocCwgZSkpID0+IHtcbiAgICAgICAgICAgIHZhcl9tZW50aW9uX3VwYXQobmFtZSwgcCkgPyBmYWxzZSA6IGFjYyAmJiB0YWlsX2NoZWNrKG5hbWUsIGUpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICAgIGwsXG4gICAgICAgIClcbiAgfTtcbn07XG5cbi8qXG4gQ2hlY2sgd2hldGhlciBhbGwgZnVuY3Rpb25zIGJvdW5kIHRvIHZhcmlhYmxlIG5hbWUgYXJlIHRhaWwgcmVjdXJzaXZlLlxuICovXG5sZXQgaXNfdGFpbF9yZWN1cnNpdmUgPSAobmFtZTogc3RyaW5nLCB1ZXhwOiBVRXhwLnQpOiBib29sID0+IHtcbiAgbGV0IGZuX2JvZGllcyA9IFtdIHw+IGZpbmRfZm4obmFtZSwgdWV4cCk7XG4gIGlmIChMaXN0Lmxlbmd0aChmbl9ib2RpZXMpID09IDApIHtcbiAgICBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgIChhY2MsIHVlKSA9PiB7YWNjICYmIHZhcl9tZW50aW9uKG5hbWUsIHVlKSAmJiB0YWlsX2NoZWNrKG5hbWUsIHVlKX0sXG4gICAgICB0cnVlLFxuICAgICAgZm5fYm9kaWVzLFxuICAgICk7XG4gIH07XG59O1xuXG5sZXQgY2hlY2sgPSAodWV4cDogVUV4cC50LCBwcmVkaWNhdGVzOiBsaXN0KFVFeHAudCA9PiBib29sKSk6IHN5bnRheF9yZXN1bHQgPT4ge1xuICBsZXQgcmVzdWx0cyA9IExpc3QubWFwKHByZWQgPT4ge3VleHAgfD4gcHJlZH0sIHByZWRpY2F0ZXMpO1xuICBsZXQgbGVuZ3RoID0gTGlzdC5sZW5ndGgocHJlZGljYXRlcyk7XG4gIGxldCBwYXNzaW5nID0gVXRpbC5MaXN0VXRpbC5jb3VudF9wcmVkKHJlcyA9PiByZXMsIHJlc3VsdHMpO1xuXG4gIHtcbiAgICByZXN1bHRzLFxuICAgIHBlcmNlbnRhZ2U6XG4gICAgICAvL3ZhY3VvdXNseSBwYXNzZXMgaWYgdGhlcmUgYXJlIG5vIHRlc3RzXG4gICAgICBsZW5ndGggPT0gMCA/IDEuIDogZmxvYXRfb2ZfaW50KHBhc3NpbmcpIC8uIGZsb2F0X29mX2ludChsZW5ndGgpLFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBwcmVkaWNhdGUgPVxuICB8IFZhckFwcGxpZWQoc3RyaW5nKVxuICB8IElzUmVjdXJzaXZlKHN0cmluZylcbiAgfCBJc05vdFJlY3Vyc2l2ZShzdHJpbmcpXG4gIHwgSXNUYWlsUmVjdXJzaXZlKHN0cmluZyk7XG5cbmxldCBwcmVkaWNhdGVfZm4gPSBwcmVkaWNhdGUgPT4ge1xuICBzd2l0Y2ggKHByZWRpY2F0ZSkge1xuICB8IFZhckFwcGxpZWQobmFtZSkgPT4gdmFyX2FwcGxpZWQobmFtZSlcbiAgfCBJc1JlY3Vyc2l2ZShuYW1lKSA9PiBpc19yZWN1cnNpdmUobmFtZSlcbiAgfCBJc05vdFJlY3Vyc2l2ZShuYW1lKSA9PiAodWV4cCA9PiAhaXNfcmVjdXJzaXZlKG5hbWUsIHVleHApKVxuICB8IElzVGFpbFJlY3Vyc2l2ZShuYW1lKSA9PiBpc190YWlsX3JlY3Vyc2l2ZShuYW1lKVxuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxubW9kdWxlIHR5cGUgRXhlcmNpc2VFbnYgPSB7XG4gIHR5cGUgbm9kZTtcbiAgbGV0IGRlZmF1bHQ6IG5vZGU7XG4gIGxldCBvdXRwdXRfaGVhZGVyOiBzdHJpbmcgPT4gc3RyaW5nO1xufTtcblxubGV0IG91dHB1dF9oZWFkZXJfZ3JhZGluZyA9IF9tb2R1bGVfbmFtZSA9PlxuICBcIm1vZHVsZSBFeGVyY2lzZSA9IEdyYWRlUHJlbHVkZS5FeGVyY2lzZVxcblwiICsrIFwibGV0IHByb21wdCA9ICgpXFxuXCI7XG5cbm1vZHVsZSBGID0gKEV4ZXJjaXNlRW52OiBFeGVyY2lzZUVudikgPT4ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgd3JvbmdfaW1wbCgnY29kZSkgPSB7XG4gICAgaW1wbDogJ2NvZGUsXG4gICAgaGludDogc3RyaW5nLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaWRkZW5fdGVzdHMoJ2NvZGUpID0ge1xuICAgIHRlc3RzOiAnY29kZSxcbiAgICBoaW50czogbGlzdChzdHJpbmcpLFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBoaW50ID0gc3RyaW5nO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzeW50YXhfdGVzdCA9IChoaW50LCBTeW50YXhUZXN0LnByZWRpY2F0ZSk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHN5bnRheF90ZXN0cyA9IGxpc3Qoc3ludGF4X3Rlc3QpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB5b3VyX3Rlc3RzKCdjb2RlKSA9IHtcbiAgICB0ZXN0czogJ2NvZGUsXG4gICAgcmVxdWlyZWQ6IGludCxcbiAgICBwcm92aWRlZDogaW50LFxuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb2ludF9kaXN0cmlidXRpb24gPSB7XG4gICAgdGVzdF92YWxpZGF0aW9uOiBpbnQsXG4gICAgbXV0YXRpb25fdGVzdGluZzogaW50LFxuICAgIGltcGxfZ3JhZGluZzogaW50LFxuICB9O1xuXG4gIGxldCB2YWxpZGF0ZV9wb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgKHt0ZXN0X3ZhbGlkYXRpb24sIG11dGF0aW9uX3Rlc3RpbmcsIGltcGxfZ3JhZGluZ306IHBvaW50X2Rpc3RyaWJ1dGlvbikgPT5cbiAgICB0ZXN0X3ZhbGlkYXRpb24gKyBtdXRhdGlvbl90ZXN0aW5nICsgaW1wbF9ncmFkaW5nID09IDEwMFxuICAgICAgPyAoKSA6IGZhaWx3aXRoKFwiSW52YWxpZCBwb2ludCBkaXN0cmlidXRpb24gaW4gZXhlcmNpc2UuXCIpO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwKCdjb2RlKSA9IHtcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIHZlcnNpb246IGludCxcbiAgICBtb2R1bGVfbmFtZTogc3RyaW5nLFxuICAgIHByb21wdDpcbiAgICAgIFtAcHJpbnRlciAoZm10LCBfKSA9PiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgXCJwcm9tcHRcIildIFtAb3BhcXVlXSBFeGVyY2lzZUVudi5ub2RlLFxuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICBwcmVsdWRlOiAnY29kZSxcbiAgICBjb3JyZWN0X2ltcGw6ICdjb2RlLFxuICAgIHlvdXJfdGVzdHM6IHlvdXJfdGVzdHMoJ2NvZGUpLFxuICAgIHlvdXJfaW1wbDogJ2NvZGUsXG4gICAgaGlkZGVuX2J1Z3M6IGxpc3Qod3JvbmdfaW1wbCgnY29kZSkpLFxuICAgIGhpZGRlbl90ZXN0czogaGlkZGVuX3Rlc3RzKCdjb2RlKSxcbiAgICBzeW50YXhfdGVzdHMsXG4gIH07XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGtleSA9IChzdHJpbmcsIGludCk7XG5cbiAgbGV0IGtleV9vZiA9IHAgPT4ge1xuICAgIChwLnRpdGxlLCBwLnZlcnNpb24pO1xuICB9O1xuXG4gIGxldCBmaW5kX2tleV9vcHQgPSAoa2V5LCBzcGVjczogbGlzdChwKCdjb2RlKSkpID0+IHtcbiAgICBzcGVjcyB8PiBVdGlsLkxpc3RVdGlsLmZpbmRpX29wdChzcGVjID0+IGtleV9vZihzcGVjKSA9PSBrZXkpO1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwb3MgPVxuICAgIHwgUHJlbHVkZVxuICAgIHwgQ29ycmVjdEltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb25cbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IFlvdXJJbXBsXG4gICAgfCBIaWRkZW5CdWdzKGludClcbiAgICB8IEhpZGRlblRlc3RzO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzcGVjID0gcChaaXBwZXIudCk7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHRyYW5zaXRpb25hcnlfc3BlYyA9IHAoQ29kZVN0cmluZy50KTtcblxuICBsZXQgbWFwID0gKHA6IHAoJ2EpLCBmOiAnYSA9PiAnYik6IHAoJ2IpID0+IHtcbiAgICB7XG4gICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgIHZlcnNpb246IHAudmVyc2lvbixcbiAgICAgIG1vZHVsZV9uYW1lOiBwLm1vZHVsZV9uYW1lLFxuICAgICAgcHJvbXB0OiBwLnByb21wdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbjogcC5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICBwcmVsdWRlOiBmKHAucHJlbHVkZSksXG4gICAgICBjb3JyZWN0X2ltcGw6IGYocC5jb3JyZWN0X2ltcGwpLFxuICAgICAgeW91cl90ZXN0czoge1xuICAgICAgICB0ZXN0czogZihwLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgICByZXF1aXJlZDogcC55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogcC55b3VyX3Rlc3RzLnByb3ZpZGVkLFxuICAgICAgfSxcbiAgICAgIHlvdXJfaW1wbDogZihwLnlvdXJfaW1wbCksXG4gICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgcC5oaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCh3cm9uZ19pbXBsID0+IHtcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBpbXBsOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3Qod3JvbmdfaW1wbC5pbXBsKSxcbiAgICAgICAgICAgICAgIGhpbnQ6IHdyb25nX2ltcGwuaGludCxcbiAgICAgICAgICAgICB9XG4gICAgICAgICAgIH0pLFxuICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QocC5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgICAgICBoaW50czogcC5oaWRkZW5fdGVzdHMuaGludHMsXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBwLnN5bnRheF90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBlZHMgPSBwKEVkaXRvci50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgc3RhdGUgPSB7ZWRzfTtcblxuICBsZXQga2V5X29mX3N0YXRlID0gKHtlZHMsIF99KSA9PiBrZXlfb2YoZWRzKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudF9zdGF0ZSA9IGxpc3QoKHBvcywgUGVyc2lzdGVudFppcHBlci50KSk7XG5cbiAgbGV0IG1haW5fZWRpdG9yX29mX3N0YXRlID0gKH5zZWxlY3Rpb246IHBvcywge2Vkc30pID0+XG4gICAgc3dpdGNoIChzZWxlY3Rpb24pIHtcbiAgICB8IFByZWx1ZGUgPT4gZWRzLnByZWx1ZGVcbiAgICB8IENvcnJlY3RJbXBsID0+IGVkcy5jb3JyZWN0X2ltcGxcbiAgICB8IFlvdXJUZXN0c1ZhbGlkYXRpb24gPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gZWRzLnlvdXJfdGVzdHMudGVzdHNcbiAgICB8IFlvdXJJbXBsID0+IGVkcy55b3VyX2ltcGxcbiAgICB8IEhpZGRlbkJ1Z3MoaSkgPT4gTGlzdC5udGgoZWRzLmhpZGRlbl9idWdzLCBpKS5pbXBsXG4gICAgfCBIaWRkZW5UZXN0cyA9PiBlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXG4gICAgfTtcblxuICBsZXQgcHV0X21haW5fZWRpdG9yID0gKH5zZWxlY3Rpb246IHBvcywge2Vkc306IHN0YXRlLCBlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgIHN3aXRjaCAoc2VsZWN0aW9uKSB7XG4gICAgfCBQcmVsdWRlID0+IHtcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHByZWx1ZGU6IGVkaXRvcixcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IENvcnJlY3RJbXBsID0+IHtcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIGNvcnJlY3RfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgWW91clRlc3RzVGVzdGluZyA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgICAgICAuLi5lZHMueW91cl90ZXN0cyxcbiAgICAgICAgICAgIHRlc3RzOiBlZGl0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB8IFlvdXJJbXBsID0+IHtcbiAgICAgICAgZWRzOiB7XG4gICAgICAgICAgLi4uZWRzLFxuICAgICAgICAgIHlvdXJfaW1wbDogZWRpdG9yLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgSGlkZGVuQnVncyhuKSA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fYnVnczpcbiAgICAgICAgICAgIFV0aWwuTGlzdFV0aWwucHV0X250aChcbiAgICAgICAgICAgICAgbixcbiAgICAgICAgICAgICAgey4uLkxpc3QubnRoKGVkcy5oaWRkZW5fYnVncywgbiksIGltcGw6IGVkaXRvcn0sXG4gICAgICAgICAgICAgIGVkcy5oaWRkZW5fYnVncyxcbiAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiB7XG4gICAgICAgIGVkczoge1xuICAgICAgICAgIC4uLmVkcyxcbiAgICAgICAgICBoaWRkZW5fdGVzdHM6IHtcbiAgICAgICAgICAgIC4uLmVkcy5oaWRkZW5fdGVzdHMsXG4gICAgICAgICAgICB0ZXN0czogZWRpdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZWRpdG9ycyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1xuICAgICAgZWRzLnByZWx1ZGUsXG4gICAgICBlZHMuY29ycmVjdF9pbXBsLFxuICAgICAgZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICBlZHMueW91cl90ZXN0cy50ZXN0cyxcbiAgICAgIGVkcy55b3VyX2ltcGwsXG4gICAgXVxuICAgIEAgTGlzdC5tYXAod3JvbmdfaW1wbCA9PiB3cm9uZ19pbXBsLmltcGwsIGVkcy5oaWRkZW5fYnVncylcbiAgICBAIFtlZHMuaGlkZGVuX3Rlc3RzLnRlc3RzXTtcblxuICBsZXQgZWRpdG9yX3Bvc2l0aW9ucyA9ICh7ZWRzLCBffTogc3RhdGUpID0+XG4gICAgW1ByZWx1ZGUsIENvcnJlY3RJbXBsLCBZb3VyVGVzdHNUZXN0aW5nLCBZb3VyVGVzdHNWYWxpZGF0aW9uLCBZb3VySW1wbF1cbiAgICBAIExpc3QubWFwaSgoaSwgXykgPT4gSGlkZGVuQnVncyhpKSwgZWRzLmhpZGRlbl9idWdzKVxuICAgIEAgW0hpZGRlblRlc3RzXTtcblxuICBsZXQgcG9zaXRpb25lZF9lZGl0b3JzID0gc3RhdGUgPT5cbiAgICBMaXN0LmNvbWJpbmUoZWRpdG9yX3Bvc2l0aW9ucyhzdGF0ZSksIGVkaXRvcnMoc3RhdGUpKTtcblxuICBsZXQgaWR4X29mX3BvcyA9IChwb3MsIHA6IHAoJ2NvZGUpKSA9PlxuICAgIHN3aXRjaCAocG9zKSB7XG4gICAgfCBQcmVsdWRlID0+IDBcbiAgICB8IENvcnJlY3RJbXBsID0+IDFcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gMlxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiAzXG4gICAgfCBZb3VySW1wbCA9PiA0XG4gICAgfCBIaWRkZW5CdWdzKGkpID0+XG4gICAgICBpZiAoaSA8IExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIDUgKyBpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJpbnZhbGlkIGhpZGRlbiBidWcgaW5kZXhcIik7XG4gICAgICB9XG4gICAgfCBIaWRkZW5UZXN0cyA9PiA1ICsgTGlzdC5sZW5ndGgocC5oaWRkZW5fYnVncylcbiAgICB9O1xuXG4gIGxldCBwb3Nfb2ZfaWR4ID0gKHA6IHAoJ2NvZGUpLCBpZHg6IGludCkgPT5cbiAgICBzd2l0Y2ggKGlkeCkge1xuICAgIHwgMCA9PiBQcmVsdWRlXG4gICAgfCAxID0+IENvcnJlY3RJbXBsXG4gICAgfCAyID0+IFlvdXJUZXN0c1Rlc3RpbmdcbiAgICB8IDMgPT4gWW91clRlc3RzVmFsaWRhdGlvblxuICAgIHwgNCA9PiBZb3VySW1wbFxuICAgIHwgXyA9PlxuICAgICAgaWYgKGlkeCA8IDApIHtcbiAgICAgICAgZmFpbHdpdGgoXCJuZWdhdGl2ZSBpZHhcIik7XG4gICAgICB9IGVsc2UgaWYgKGlkeCA8IDUgKyBMaXN0Lmxlbmd0aChwLmhpZGRlbl9idWdzKSkge1xuICAgICAgICBIaWRkZW5CdWdzKGlkeCAtIDUpO1xuICAgICAgfSBlbHNlIGlmIChpZHggPT0gNSArIExpc3QubGVuZ3RoKHAuaGlkZGVuX2J1Z3MpKSB7XG4gICAgICAgIEhpZGRlblRlc3RzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmFpbHdpdGgoXCJlbGVtZW50IGlkeFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIGxldCB6aXBwZXJfb2ZfY29kZSA9IGNvZGUgPT4ge1xuICAgIHN3aXRjaCAoUHJpbnRlci56aXBwZXJfb2Zfc3RyaW5nKGNvZGUpKSB7XG4gICAgfCBOb25lID0+IGZhaWx3aXRoKFwiVHJhbnNpdGlvbiBmYWlsZWQuXCIpXG4gICAgfCBTb21lKHppcHBlcikgPT4gemlwcGVyXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbjogdHJhbnNpdGlvbmFyeV9zcGVjID0+IHNwZWMgPVxuICAgIChcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH0sXG4gICAgKSA9PiB7XG4gICAgICBsZXQgcHJlbHVkZSA9IHppcHBlcl9vZl9jb2RlKHByZWx1ZGUpO1xuICAgICAgbGV0IGNvcnJlY3RfaW1wbCA9IHppcHBlcl9vZl9jb2RlKGNvcnJlY3RfaW1wbCk7XG4gICAgICBsZXQgeW91cl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHRlc3RzID0gemlwcGVyX29mX2NvZGUoeW91cl90ZXN0cy50ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgcmVxdWlyZWQ6IHlvdXJfdGVzdHMucmVxdWlyZWQsIHByb3ZpZGVkOiB5b3VyX3Rlc3RzLnByb3ZpZGVkfTtcbiAgICAgIH07XG4gICAgICBsZXQgeW91cl9pbXBsID0gemlwcGVyX29mX2NvZGUoeW91cl9pbXBsKTtcbiAgICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgIChhY2MsIHtpbXBsLCBoaW50fSkgPT4ge1xuICAgICAgICAgICAgbGV0IGltcGwgPSB6aXBwZXJfb2ZfY29kZShpbXBsKTtcbiAgICAgICAgICAgIGFjYyBAIFt7aW1wbCwgaGludH1dO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICk7XG4gICAgICBsZXQgaGlkZGVuX3Rlc3RzID0ge1xuICAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gICAgICAgIGxldCB0ZXN0cyA9IHppcHBlcl9vZl9jb2RlKHRlc3RzKTtcbiAgICAgICAge3Rlc3RzLCBoaW50c307XG4gICAgICB9O1xuICAgICAge1xuICAgICAgICB0aXRsZSxcbiAgICAgICAgdmVyc2lvbixcbiAgICAgICAgbW9kdWxlX25hbWUsXG4gICAgICAgIHByb21wdCxcbiAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICBwcmVsdWRlLFxuICAgICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICAgIHlvdXJfdGVzdHMsXG4gICAgICAgIHlvdXJfaW1wbCxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICAgICAgc3ludGF4X3Rlc3RzLFxuICAgICAgfTtcbiAgICB9O1xuXG4gIGxldCBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbiA9IHppcHBlciA9PiBFZGl0b3IuaW5pdCh6aXBwZXIpO1xuICBsZXQgZWRzX29mX3NwZWM6IHNwZWMgPT4gZWRzID1cbiAgICAoXG4gICAgICB7XG4gICAgICAgIHRpdGxlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBtb2R1bGVfbmFtZSxcbiAgICAgICAgcHJvbXB0LFxuICAgICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICAgIHByZWx1ZGUsXG4gICAgICAgIGNvcnJlY3RfaW1wbCxcbiAgICAgICAgeW91cl90ZXN0cyxcbiAgICAgICAgeW91cl9pbXBsLFxuICAgICAgICBoaWRkZW5fYnVncyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgICAgICBzeW50YXhfdGVzdHMsXG4gICAgICB9LFxuICAgICkgPT4ge1xuICAgICAgbGV0IHByZWx1ZGUgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihwcmVsdWRlKTtcbiAgICAgIGxldCBjb3JyZWN0X2ltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihjb3JyZWN0X2ltcGwpO1xuICAgICAgbGV0IHlvdXJfdGVzdHMgPSB7XG4gICAgICAgIGxldCB0ZXN0cyA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHlvdXJfdGVzdHMudGVzdHMpO1xuICAgICAgICB7dGVzdHMsIHJlcXVpcmVkOiB5b3VyX3Rlc3RzLnJlcXVpcmVkLCBwcm92aWRlZDogeW91cl90ZXN0cy5wcm92aWRlZH07XG4gICAgICB9O1xuICAgICAgbGV0IHlvdXJfaW1wbCA9IGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKHlvdXJfaW1wbCk7XG4gICAgICBsZXQgaGlkZGVuX2J1Z3MgPVxuICAgICAgICBoaWRkZW5fYnVnc1xuICAgICAgICB8PiBMaXN0Lm1hcCgoe2ltcGwsIGhpbnR9KSA9PiB7XG4gICAgICAgICAgICAgbGV0IGltcGwgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbihpbXBsKTtcbiAgICAgICAgICAgICB7aW1wbCwgaGludH07XG4gICAgICAgICAgIH0pO1xuICAgICAgbGV0IGhpZGRlbl90ZXN0cyA9IHtcbiAgICAgICAgbGV0IHt0ZXN0cywgaGludHN9ID0gaGlkZGVuX3Rlc3RzO1xuICAgICAgICBsZXQgdGVzdHMgPSBlZGl0b3Jfb2Zfc2VyaWFsaXphdGlvbih0ZXN0cyk7XG4gICAgICAgIHt0ZXN0cywgaGludHN9O1xuICAgICAgfTtcbiAgICAgIHtcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHZlcnNpb24sXG4gICAgICAgIG1vZHVsZV9uYW1lLFxuICAgICAgICBwcm9tcHQsXG4gICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgcHJlbHVkZSxcbiAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICB5b3VyX3Rlc3RzLFxuICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgICBoaWRkZW5fdGVzdHMsXG4gICAgICAgIHN5bnRheF90ZXN0cyxcbiAgICAgIH07XG4gICAgfTtcblxuICAvL1xuICAvLyBPbGQgdmVyc2lvbiBvZiBhYm92ZSB0aGF0IGRpZCBzdHJpbmctYmFzZWQgcGFyc2luZywgbWF5IGJlIHVzZWZ1bFxuICAvLyBmb3IgdHJhbnNpdGlvbnMgYmV0d2VlbiB6aXBwZXIgZGF0YSBzdHJ1Y3R1cmUgdmVyc2lvbnMgKFRPRE8pXG4gIC8vXG4gIC8vIGxldCBlZGl0b3Jfb2ZfY29kZSA9IChpbml0X2lkLCBjb2RlKSA9PlxuICAvLyAgIHN3aXRjaCAoRWRpdG9yVXRpbC5lZGl0b3Jfb2ZfY29kZShpbml0X2lkLCBjb2RlKSkge1xuICAvLyAgIHwgTm9uZSA9PiBmYWlsd2l0aChcIkV4ZXJjaXNlIGVycm9yOiBpbnZhbGlkIGNvZGVcIilcbiAgLy8gICB8IFNvbWUoeCkgPT4geFxuICAvLyAgIH07XG4gIC8vIGxldCBlZHNfb2Zfc3BlYzogc3BlYyA9PiBlZHMgPVxuICAvLyAgIChcbiAgLy8gICAgIHtcbiAgLy9cbiAgLy8gICAgICAgdGl0bGUsXG4gIC8vICAgICAgIHZlcnNpb24sXG4gIC8vICAgICAgIHByb21wdCxcbiAgLy8gICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLFxuICAvLyAgICAgICBwcmVsdWRlLFxuICAvLyAgICAgICBjb3JyZWN0X2ltcGwsXG4gIC8vICAgICAgIHlvdXJfdGVzdHMsXG4gIC8vICAgICAgIHlvdXJfaW1wbCxcbiAgLy8gICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgIGhpZGRlbl90ZXN0cyxcbiAgLy8gICAgIH0sXG4gIC8vICAgKSA9PiB7XG4gIC8vICAgICBsZXQgaWQgPSBuZXh0X2lkO1xuICAvLyAgICAgbGV0IChpZCwgcHJlbHVkZSkgPSBlZGl0b3Jfb2ZfY29kZShpZCwgcHJlbHVkZSk7XG4gIC8vICAgICBsZXQgKGlkLCBjb3JyZWN0X2ltcGwpID0gZWRpdG9yX29mX2NvZGUoaWQsIGNvcnJlY3RfaW1wbCk7XG4gIC8vICAgICBsZXQgKGlkLCB5b3VyX3Rlc3RzKSA9IHtcbiAgLy8gICAgICAgbGV0IChpZCwgdGVzdHMpID0gZWRpdG9yX29mX2NvZGUoaWQsIHlvdXJfdGVzdHMudGVzdHMpO1xuICAvLyAgICAgICAoXG4gIC8vICAgICAgICAgaWQsXG4gIC8vICAgICAgICAge1xuICAvLyAgICAgICAgICAgdGVzdHMsXG4gIC8vICAgICAgICAgICBudW1fcmVxdWlyZWQ6IHlvdXJfdGVzdHMubnVtX3JlcXVpcmVkLFxuICAvLyAgICAgICAgICAgbWluaW11bTogeW91cl90ZXN0cy5taW5pbXVtLFxuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICk7XG4gIC8vICAgICB9O1xuICAvLyAgICAgbGV0IChpZCwgeW91cl9pbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB5b3VyX2ltcGwpO1xuICAvLyAgICAgbGV0IChpZCwgaGlkZGVuX2J1Z3MpID1cbiAgLy8gICAgICAgTGlzdC5mb2xkX2xlZnQoXG4gIC8vICAgICAgICAgKChpZCwgYWNjKSwge2ltcGwsIGhpbnR9KSA9PiB7XG4gIC8vICAgICAgICAgICBsZXQgKGlkLCBpbXBsKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCBpbXBsKTtcbiAgLy8gICAgICAgICAgIChpZCwgYWNjIEAgW3tpbXBsLCBoaW50fV0pO1xuICAvLyAgICAgICAgIH0sXG4gIC8vICAgICAgICAgKGlkLCBbXSksXG4gIC8vICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gIC8vICAgICAgICk7XG4gIC8vICAgICBsZXQgKGlkLCBoaWRkZW5fdGVzdHMpID0ge1xuICAvLyAgICAgICBsZXQge3Rlc3RzLCBoaW50c30gPSBoaWRkZW5fdGVzdHM7XG4gIC8vICAgICAgIGxldCAoaWQsIHRlc3RzKSA9IGVkaXRvcl9vZl9jb2RlKGlkLCB0ZXN0cyk7XG4gIC8vICAgICAgIChpZCwge3Rlc3RzLCBoaW50c30pO1xuICAvLyAgICAgfTtcbiAgLy8gICAgIHtcbiAgLy8gICAgICAgbmV4dF9pZDogaWQsXG4gIC8vICAgICAgIHRpdGxlLFxuICAvLyAgICAgICB2ZXJzaW9uLFxuICAvLyAgICAgICBwcm9tcHQsXG4gIC8vICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgLy8gICAgICAgcHJlbHVkZSxcbiAgLy8gICAgICAgY29ycmVjdF9pbXBsLFxuICAvLyAgICAgICB5b3VyX3Rlc3RzLFxuICAvLyAgICAgICB5b3VyX2ltcGwsXG4gIC8vICAgICAgIGhpZGRlbl9idWdzLFxuICAvLyAgICAgICBoaWRkZW5fdGVzdHMsXG4gIC8vICAgICB9O1xuICAvLyAgIH07XG5cbiAgbGV0IHNldF9pbnN0cnVjdG9yX21vZGUgPSAoe2Vkc306IHN0YXRlLCBuZXdfbW9kZTogYm9vbCkgPT4ge1xuICAgIGVkczoge1xuICAgICAgLi4uZWRzLFxuICAgICAgcHJlbHVkZTogRWRpdG9yLnNldF9yZWFkX29ubHkoZWRzLnByZWx1ZGUsICFuZXdfbW9kZSksXG4gICAgfSxcbiAgfTtcblxuICBsZXQgdmlzaWJsZV9pbiA9IChwb3MsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBzd2l0Y2ggKHBvcykge1xuICAgIHwgUHJlbHVkZSA9PiBpbnN0cnVjdG9yX21vZGVcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgWW91clRlc3RzVmFsaWRhdGlvbiA9PiB0cnVlXG4gICAgfCBZb3VyVGVzdHNUZXN0aW5nID0+IGZhbHNlXG4gICAgfCBZb3VySW1wbCA9PiB0cnVlXG4gICAgfCBIaWRkZW5CdWdzKF8pID0+IGluc3RydWN0b3JfbW9kZVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaW5zdHJ1Y3Rvcl9tb2RlXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RhdGVfb2Zfc3BlYyA9IChzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKTogc3RhdGUgPT4ge1xuICAgIGxldCBlZHMgPSBlZHNfb2Zfc3BlYyhzcGVjKTtcbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKHtlZHM6IGVkc30sIGluc3RydWN0b3JfbW9kZSk7XG4gIH07XG5cbiAgbGV0IHBlcnNpc3RlbnRfc3RhdGVfb2Zfc3RhdGUgPSAoc3RhdGU6IHN0YXRlLCB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sKSA9PiB7XG4gICAgbGV0IHppcHBlcnMgPVxuICAgICAgcG9zaXRpb25lZF9lZGl0b3JzKHN0YXRlKVxuICAgICAgfD4gTGlzdC5maWx0ZXIoKChwb3MsIF8pKSA9PiB2aXNpYmxlX2luKHBvcywgfmluc3RydWN0b3JfbW9kZSkpXG4gICAgICB8PiBMaXN0Lm1hcCgoKHBvcywgZWRpdG9yKSkgPT4ge1xuICAgICAgICAgICAocG9zLCBQZXJzaXN0ZW50WmlwcGVyLnBlcnNpc3QoRWRpdG9yLihlZGl0b3Iuc3RhdGUuemlwcGVyKSkpXG4gICAgICAgICB9KTtcbiAgICB6aXBwZXJzO1xuICB9O1xuXG4gIGxldCB1bnBlcnNpc3Rfc3RhdGUgPVxuICAgICAgKFxuICAgICAgICBwb3NpdGlvbmVkX3ppcHBlcnM6IHBlcnNpc3RlbnRfc3RhdGUsXG4gICAgICAgIH5zcGVjOiBzcGVjLFxuICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlOiBib29sLFxuICAgICAgKVxuICAgICAgOiBzdGF0ZSA9PiB7XG4gICAgbGV0IGxvb2t1cCA9IChwb3MsIGRlZmF1bHQpID0+XG4gICAgICBpZiAodmlzaWJsZV9pbihwb3MsIH5pbnN0cnVjdG9yX21vZGUpKSB7XG4gICAgICAgIGxldCBwZXJzaXN0ZWRfemlwcGVyID0gTGlzdC5hc3NvYyhwb3MsIHBvc2l0aW9uZWRfemlwcGVycyk7XG4gICAgICAgIGxldCB6aXBwZXIgPSBQZXJzaXN0ZW50WmlwcGVyLnVucGVyc2lzdChwZXJzaXN0ZWRfemlwcGVyKTtcbiAgICAgICAgRWRpdG9yLmluaXQoemlwcGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVkaXRvcl9vZl9zZXJpYWxpemF0aW9uKGRlZmF1bHQpO1xuICAgICAgfTtcbiAgICBsZXQgcHJlbHVkZSA9IGxvb2t1cChQcmVsdWRlLCBzcGVjLnByZWx1ZGUpO1xuICAgIGxldCBjb3JyZWN0X2ltcGwgPSBsb29rdXAoQ29ycmVjdEltcGwsIHNwZWMuY29ycmVjdF9pbXBsKTtcbiAgICBsZXQgeW91cl90ZXN0c190ZXN0cyA9IGxvb2t1cChZb3VyVGVzdHNWYWxpZGF0aW9uLCBzcGVjLnlvdXJfdGVzdHMudGVzdHMpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBsb29rdXAoWW91ckltcGwsIHNwZWMueW91cl9pbXBsKTtcbiAgICBsZXQgKF8sIGhpZGRlbl9idWdzKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgKChpLCBoaWRkZW5fYnVnczogbGlzdCh3cm9uZ19pbXBsKEVkaXRvci50KSkpLCB7aW1wbCwgaGludH0pID0+IHtcbiAgICAgICAgICBsZXQgaW1wbCA9IGxvb2t1cChIaWRkZW5CdWdzKGkpLCBpbXBsKTtcbiAgICAgICAgICAoaSArIDEsIGhpZGRlbl9idWdzIEAgW3tpbXBsLCBoaW50fV0pO1xuICAgICAgICB9LFxuICAgICAgICAoMCwgW10pLFxuICAgICAgICBzcGVjLmhpZGRlbl9idWdzLFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gbG9va3VwKEhpZGRlblRlc3RzLCBzcGVjLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG5cbiAgICBzZXRfaW5zdHJ1Y3Rvcl9tb2RlKFxuICAgICAge1xuICAgICAgICBlZHM6IHtcbiAgICAgICAgICB0aXRsZTogc3BlYy50aXRsZSxcbiAgICAgICAgICB2ZXJzaW9uOiBzcGVjLnZlcnNpb24sXG4gICAgICAgICAgbW9kdWxlX25hbWU6IHNwZWMubW9kdWxlX25hbWUsXG4gICAgICAgICAgcHJvbXB0OiBzcGVjLnByb21wdCxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb246IHNwZWMucG9pbnRfZGlzdHJpYnV0aW9uLFxuICAgICAgICAgIHByZWx1ZGUsXG4gICAgICAgICAgY29ycmVjdF9pbXBsLFxuICAgICAgICAgIHlvdXJfdGVzdHM6IHtcbiAgICAgICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHNwZWMueW91cl90ZXN0cy5yZXF1aXJlZCxcbiAgICAgICAgICAgIHByb3ZpZGVkOiBzcGVjLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB5b3VyX2ltcGwsXG4gICAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICAgICAgaGlkZGVuX3Rlc3RzOiB7XG4gICAgICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICAgICAgaGludHM6IHNwZWMuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc3ludGF4X3Rlc3RzOiBzcGVjLnN5bnRheF90ZXN0cyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBpbnN0cnVjdG9yX21vZGUsXG4gICAgKTtcbiAgfTtcblxuICAvLyAjIFN0aXRjaGluZ1xuXG4gIG1vZHVsZSBUZXJtSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXJtOiBFeHAudCxcbiAgICAgIHRlcm1fcmFuZ2VzOiBUZXJtUmFuZ2VzLnQsXG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgU3RhdGljc0l0ZW0gPSB7XG4gICAgdHlwZSB0ID0gQ2FjaGVkU3RhdGljcy5zdGF0aWNzO1xuICB9O1xuXG4gIHR5cGUgc3RpdGNoZWQoJ2EpID0ge1xuICAgIHRlc3RfdmFsaWRhdGlvbjogJ2EsIC8vIHByZWx1ZGUgKyBjb3JyZWN0X2ltcGwgKyB5b3VyX3Rlc3RzXG4gICAgdXNlcl9pbXBsOiAnYSwgLy8gcHJlbHVkZSArIHlvdXJfaW1wbFxuICAgIHVzZXJfdGVzdHM6ICdhLCAvLyBwcmVsdWRlICsgeW91cl9pbXBsICsgeW91cl90ZXN0c1xuICAgIHByZWx1ZGU6ICdhLCAvLyBwcmVsdWRlXG4gICAgaW5zdHJ1Y3RvcjogJ2EsIC8vIHByZWx1ZGUgKyBjb3JyZWN0X2ltcGwgKyBoaWRkZW5fdGVzdHMudGVzdHMgLy8gVE9ETyBvbmx5IG5lZWRzIHRvIHJ1biBpbiBpbnN0cnVjdG9yIG1vZGVcbiAgICBoaWRkZW5fYnVnczogbGlzdCgnYSksIC8vIHByZWx1ZGUgKyBoaWRkZW5fYnVnc1tpXS5pbXBsICsgeW91cl90ZXN0cyxcbiAgICBoaWRkZW5fdGVzdHM6ICdhLFxuICB9O1xuXG4gIGxldCB3cmFwX2ZpbHRlciA9IChhY3Q6IEZpbHRlckFjdGlvbi5hY3Rpb24sIHRlcm06IFVFeHAudCk6IFVFeHAudCA9PlxuICAgIEV4cC57XG4gICAgICB0ZXJtOlxuICAgICAgICBFeHAuRmlsdGVyKFxuICAgICAgICAgIEZpbHRlcih7XG4gICAgICAgICAgICBhY3Q6IEZpbHRlckFjdGlvbi4oYWN0LCBPbmUpLFxuICAgICAgICAgICAgcGF0OiB7XG4gICAgICAgICAgICAgIHRlcm06IENvbnN0cnVjdG9yKFwiJGVcIiksXG4gICAgICAgICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgICAgICAgIGlkczogW0lkLm1rKCldLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0ZXJtLFxuICAgICAgICApLFxuICAgICAgY29waWVkOiBmYWxzZSxcbiAgICAgIGlkczogW0lkLm1rKCldLFxuICAgIH07XG5cbiAgbGV0IHdyYXAgPSAodGVybSwgZWRpdG9yOiBFZGl0b3IudCk6IFRlcm1JdGVtLnQgPT4ge1xuICAgIHRlcm0sXG4gICAgdGVybV9yYW5nZXM6IGVkaXRvci5zdGF0ZS5tZXRhLnRlcm1fcmFuZ2VzLFxuICB9O1xuXG4gIGxldCB0ZXJtX29mID0gKGVkaXRvcjogRWRpdG9yLnQpOiBVRXhwLnQgPT4gZWRpdG9yLnN0YXRlLm1ldGEudmlld190ZXJtO1xuXG4gIGxldCBzdGl0Y2gzID0gKGVkMTogRWRpdG9yLnQsIGVkMjogRWRpdG9yLnQsIGVkMzogRWRpdG9yLnQpID0+XG4gICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKFxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHRlcm1fb2YoZWQxKSwgdGVybV9vZihlZDIpKSxcbiAgICAgIHRlcm1fb2YoZWQzKSxcbiAgICApO1xuXG4gIGxldCBzdGl0Y2hfdGVybSA9ICh7ZWRzLCBffTogc3RhdGUpOiBzdGl0Y2hlZChUZXJtSXRlbS50KSA9PiB7XG4gICAgbGV0IGluc3RydWN0b3IgPVxuICAgICAgc3RpdGNoMyhlZHMucHJlbHVkZSwgZWRzLmNvcnJlY3RfaW1wbCwgZWRzLmhpZGRlbl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfaW1wbF90ZXJtID0ge1xuICAgICAgbGV0IHlvdXJfaW1wbF90ZXJtID1cbiAgICAgICAgZWRzLnlvdXJfaW1wbCB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5TdGVwKTtcbiAgICAgIGxldCBwcmVsdWRlX3Rlcm0gPVxuICAgICAgICBlZHMucHJlbHVkZSB8PiB0ZXJtX29mIHw+IHdyYXBfZmlsdGVyKEZpbHRlckFjdGlvbi5FdmFsKTtcbiAgICAgIEVkaXRvclV0aWwuYXBwZW5kX2V4cChwcmVsdWRlX3Rlcm0sIHlvdXJfaW1wbF90ZXJtKTtcbiAgICB9O1xuICAgIGxldCB0ZXN0X3ZhbGlkYXRpb25fdGVybSA9XG4gICAgICBzdGl0Y2gzKGVkcy5wcmVsdWRlLCBlZHMuY29ycmVjdF9pbXBsLCBlZHMueW91cl90ZXN0cy50ZXN0cyk7XG4gICAgbGV0IHVzZXJfdGVzdHNfdGVybSA9XG4gICAgICBFZGl0b3JVdGlsLmFwcGVuZF9leHAodXNlcl9pbXBsX3Rlcm0sIHRlcm1fb2YoZWRzLnlvdXJfdGVzdHMudGVzdHMpKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlcm0gPVxuICAgICAgRWRpdG9yVXRpbC5hcHBlbmRfZXhwKHVzZXJfaW1wbF90ZXJtLCB0ZXJtX29mKGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpKTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb246IHdyYXAodGVzdF92YWxpZGF0aW9uX3Rlcm0sIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSxcbiAgICAgIHVzZXJfaW1wbDogd3JhcCh1c2VyX2ltcGxfdGVybSwgZWRzLnlvdXJfaW1wbCksXG4gICAgICB1c2VyX3Rlc3RzOiB3cmFwKHVzZXJfdGVzdHNfdGVybSwgZWRzLnlvdXJfdGVzdHMudGVzdHMpLFxuICAgICAgLy8gaW5zdHJ1Y3RvciB3b3JrcyBoZXJlIGFzIGxvbmcgYXMgeW91IGRvbid0IHNoYWRvdyBhbnl0aGluZyBpbiB0aGUgcHJlbHVkZVxuICAgICAgcHJlbHVkZTogd3JhcChpbnN0cnVjdG9yLCBlZHMucHJlbHVkZSksXG4gICAgICBpbnN0cnVjdG9yOiB3cmFwKGluc3RydWN0b3IsIGVkcy5jb3JyZWN0X2ltcGwpLFxuICAgICAgaGlkZGVuX2J1Z3M6XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh0KTogVGVybUl0ZW0udCA9PlxuICAgICAgICAgICAgd3JhcChzdGl0Y2gzKGVkcy5wcmVsdWRlLCB0LmltcGwsIGVkcy55b3VyX3Rlc3RzLnRlc3RzKSwgdC5pbXBsKSxcbiAgICAgICAgICBlZHMuaGlkZGVuX2J1Z3MsXG4gICAgICAgICksXG4gICAgICBoaWRkZW5fdGVzdHM6IHdyYXAoaGlkZGVuX3Rlc3RzX3Rlcm0sIGVkcy5oaWRkZW5fdGVzdHMudGVzdHMpLFxuICAgIH07XG4gIH07XG4gIGxldCBzdGl0Y2hfdGVybSA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF90ZXJtKTtcblxuICB0eXBlIHN0aXRjaGVkX3N0YXRpY3MgPSBzdGl0Y2hlZChTdGF0aWNzSXRlbS50KTtcblxuICAvKiBNdWx0aXBsZSBzdGl0Y2hpbmdzIGFyZSBuZWVkZWQgZm9yIGVhY2ggZXhlcmNpc2VcbiAgICAgKHNlZSBjb21tZW50cyBpbiB0aGUgc3RpdGNoZWQgdHlwZSBhYm92ZSlcblxuICAgICBTdGl0Y2hpbmcgaXMgbmVjZXNzYXJ5IHRvIGNvbmNhdGVuYXRlIHRlcm1zXG4gICAgIGZyb20gZGlmZmVyZW50IGVkaXRvcnMsIHdoaWNoIGFyZSB0aGVuIHR5cGVjaGVja2VkLiAqL1xuICBsZXQgc3RpdGNoX3N0YXRpYyA9XG4gICAgICAoc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCB0OiBzdGl0Y2hlZChUZXJtSXRlbS50KSk6IHN0aXRjaGVkX3N0YXRpY3MgPT4ge1xuICAgIGxldCBtayA9ICh7dGVybSwgdGVybV9yYW5nZXMsIF99OiBUZXJtSXRlbS50KTogU3RhdGljc0l0ZW0udCA9PiB7XG4gICAgICBsZXQgaW5mb19tYXAgPSBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXAoc2V0dGluZ3MsIHRlcm0pO1xuICAgICAge1xuICAgICAgICB0ZXJtLFxuICAgICAgICBlcnJvcl9pZHM6IFN0YXRpY3MuTWFwLmVycm9yX2lkcyh0ZXJtX3JhbmdlcywgaW5mb19tYXApLFxuICAgICAgICBpbmZvX21hcCxcbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9IG1rKHQuaW5zdHJ1Y3Rvcik7XG4gICAge1xuICAgICAgdGVzdF92YWxpZGF0aW9uOiBtayh0LnRlc3RfdmFsaWRhdGlvbiksXG4gICAgICB1c2VyX2ltcGw6IG1rKHQudXNlcl9pbXBsKSxcbiAgICAgIHVzZXJfdGVzdHM6IG1rKHQudXNlcl90ZXN0cyksXG4gICAgICBwcmVsdWRlOiBpbnN0cnVjdG9yLCAvLyB3b3JrcyBhcyBsb25nIGFzIHlvdSBkb24ndCBzaGFkb3cgYW55dGhpbmcgaW4gdGhlIHByZWx1ZGVcbiAgICAgIGluc3RydWN0b3IsXG4gICAgICBoaWRkZW5fYnVnczogTGlzdC5tYXAobWssIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgaGlkZGVuX3Rlc3RzOiBtayh0LmhpZGRlbl90ZXN0cyksXG4gICAgfTtcbiAgfTtcblxuICBsZXQgc3RpdGNoX3N0YXRpYyA9IENvcmUuTWVtby5nZW5lcmFsKHN0aXRjaF9zdGF0aWMpO1xuXG4gIGxldCBwcmVsdWRlX2tleSA9IFwicHJlbHVkZVwiO1xuICBsZXQgdGVzdF92YWxpZGF0aW9uX2tleSA9IFwidGVzdF92YWxpZGF0aW9uXCI7XG4gIGxldCB1c2VyX2ltcGxfa2V5ID0gXCJ1c2VyX2ltcGxcIjtcbiAgbGV0IHVzZXJfdGVzdHNfa2V5ID0gXCJ1c2VyX3Rlc3RzXCI7XG4gIGxldCBpbnN0cnVjdG9yX2tleSA9IFwiaW5zdHJ1Y3RvclwiO1xuICBsZXQgaGlkZGVuX2J1Z3Nfa2V5ID0gbiA9PiBcImhpZGRlbl9idWdzX1wiICsrIHN0cmluZ19vZl9pbnQobik7XG4gIGxldCBoaWRkZW5fdGVzdHNfa2V5ID0gXCJoaWRkZW5fdGVzdHNcIjtcblxuICBsZXQga2V5X2Zvcl9zdGF0aWNzID0gKHBvczogcG9zKTogc3RyaW5nID0+XG4gICAgc3dpdGNoIChwb3MpIHtcbiAgICB8IFByZWx1ZGUgPT4gcHJlbHVkZV9rZXlcbiAgICB8IENvcnJlY3RJbXBsID0+IGluc3RydWN0b3Jfa2V5XG4gICAgfCBZb3VyVGVzdHNWYWxpZGF0aW9uID0+IHRlc3RfdmFsaWRhdGlvbl9rZXlcbiAgICB8IFlvdXJUZXN0c1Rlc3RpbmcgPT4gdXNlcl90ZXN0c19rZXlcbiAgICB8IFlvdXJJbXBsID0+IHVzZXJfaW1wbF9rZXlcbiAgICB8IEhpZGRlbkJ1Z3MoaWR4KSA9PiBoaWRkZW5fYnVnc19rZXkoaWR4KVxuICAgIHwgSGlkZGVuVGVzdHMgPT4gaGlkZGVuX3Rlc3RzX2tleVxuICAgIH07XG5cbiAgbGV0IHNwbGljZWRfZWxhYnMgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgc3RhdGU6IHN0YXRlKVxuICAgICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBwcmVsdWRlOiBfLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH0gPVxuICAgICAgc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICBsZXQgZWxhYiA9IChzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MpOiBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQgPT4ge1xuICAgICAgZDogSW50ZXJmYWNlLmVsYWJvcmF0ZSh+c2V0dGluZ3MsIHMuaW5mb19tYXAsIHMudGVybSksXG4gICAgfTtcbiAgICBbXG4gICAgICAodGVzdF92YWxpZGF0aW9uX2tleSwgZWxhYih0ZXN0X3ZhbGlkYXRpb24pKSxcbiAgICAgICh1c2VyX2ltcGxfa2V5LCBlbGFiKHVzZXJfaW1wbCkpLFxuICAgICAgKHVzZXJfdGVzdHNfa2V5LCBlbGFiKHVzZXJfdGVzdHMpKSxcbiAgICAgIChpbnN0cnVjdG9yX2tleSwgZWxhYihpbnN0cnVjdG9yKSksXG4gICAgICAoaGlkZGVuX3Rlc3RzX2tleSwgZWxhYihoaWRkZW5fdGVzdHMpKSxcbiAgICBdXG4gICAgQCAoXG4gICAgICBoaWRkZW5fYnVnc1xuICAgICAgfD4gTGlzdC5tYXBpKChuLCBoaWRkZW5fYnVnOiBTdGF0aWNzSXRlbS50KSA9PlxuICAgICAgICAgICAoaGlkZGVuX2J1Z3Nfa2V5KG4pLCBlbGFiKGhpZGRlbl9idWcpKVxuICAgICAgICAgKVxuICAgICk7XG4gIH07XG5cbiAgbGV0IG1rX3N0YXRpY3MgPVxuICAgICAgKHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCwgc3RhdGU6IHN0YXRlKVxuICAgICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBTdGF0aWNzSXRlbS50KSkgPT4ge1xuICAgIGxldCBzdGl0Y2hlZCA9IHN0aXRjaF9zdGF0aWMoc2V0dGluZ3MsIHN0aXRjaF90ZXJtKHN0YXRlKSk7XG4gICAgW1xuICAgICAgKHByZWx1ZGVfa2V5LCBzdGl0Y2hlZC5wcmVsdWRlKSxcbiAgICAgICh0ZXN0X3ZhbGlkYXRpb25fa2V5LCBzdGl0Y2hlZC50ZXN0X3ZhbGlkYXRpb24pLFxuICAgICAgKHVzZXJfaW1wbF9rZXksIHN0aXRjaGVkLnVzZXJfaW1wbCksXG4gICAgICAodXNlcl90ZXN0c19rZXksIHN0aXRjaGVkLnVzZXJfdGVzdHMpLFxuICAgICAgKGluc3RydWN0b3Jfa2V5LCBzdGl0Y2hlZC5pbnN0cnVjdG9yKSxcbiAgICAgIChoaWRkZW5fdGVzdHNfa2V5LCBzdGl0Y2hlZC5oaWRkZW5fdGVzdHMpLFxuICAgIF1cbiAgICBAIExpc3QubWFwaShcbiAgICAgICAgKG4sIGhpZGRlbl9idWc6IFN0YXRpY3NJdGVtLnQpID0+IChoaWRkZW5fYnVnc19rZXkobiksIGhpZGRlbl9idWcpLFxuICAgICAgICBzdGl0Y2hlZC5oaWRkZW5fYnVncyxcbiAgICAgICk7XG4gIH07XG5cbiAgbW9kdWxlIER5bmFtaWNzSXRlbSA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXJtOiBFeHAudCxcbiAgICAgIGluZm9fbWFwOiBTdGF0aWNzLk1hcC50LFxuICAgICAgcmVzdWx0OiBNb2RlbFJlc3VsdC50LFxuICAgIH07XG4gICAgbGV0IGVtcHR5OiB0ID0ge1xuICAgICAgdGVybToge1xuICAgICAgICB0ZXJtOiBUdXBsZShbXSksXG4gICAgICAgIGNvcGllZDogZmFsc2UsXG4gICAgICAgIGlkczogW0lkLm1rKCldLFxuICAgICAgfSxcbiAgICAgIGluZm9fbWFwOiBJZC5NYXAuZW1wdHksXG4gICAgICByZXN1bHQ6IE5vRWxhYixcbiAgICB9O1xuICAgIGxldCBzdGF0aWNzX29ubHkgPSAoe3Rlcm0sIGluZm9fbWFwLCBffTogU3RhdGljc0l0ZW0udCk6IHQgPT4ge1xuICAgICAge3Rlcm0sIGluZm9fbWFwLCByZXN1bHQ6IE5vRWxhYn07XG4gICAgfTtcbiAgfTtcblxuICAvKiBHaXZlbiB0aGUgZXZhbHVhdGlvbiByZXN1bHRzLCBjb2xsZWN0cyB0aGVcbiAgICAgcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIHByb2R1Y2luZyBkeW5hbWljXG4gICAgIGZlZWRiYWNrKi9cbiAgbGV0IHN0aXRjaF9keW5hbWljID1cbiAgICAgIChcbiAgICAgICAgc2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LFxuICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IG9wdGlvbihNb2RlbFJlc3VsdHMudCksXG4gICAgICApXG4gICAgICA6IHN0aXRjaGVkKER5bmFtaWNzSXRlbS50KSA9PiB7XG4gICAgbGV0IHtcbiAgICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICAgIHVzZXJfaW1wbCxcbiAgICAgIHVzZXJfdGVzdHMsXG4gICAgICBwcmVsdWRlLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIGhpZGRlbl9idWdzLFxuICAgICAgaGlkZGVuX3Rlc3RzLFxuICAgIH0gPVxuICAgICAgc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICBsZXQgcmVzdWx0X29mID0ga2V5ID0+XG4gICAgICBzd2l0Y2ggKHJlc3VsdHMpIHtcbiAgICAgIHwgTm9uZSA9PiBNb2RlbFJlc3VsdC5Ob0VsYWJcbiAgICAgIHwgU29tZShyZXN1bHRzKSA9PlxuICAgICAgICBNb2RlbFJlc3VsdHMubG9va3VwKHJlc3VsdHMsIGtleSlcbiAgICAgICAgfD4gT3B0aW9uLnZhbHVlKH5kZWZhdWx0PU1vZGVsUmVzdWx0Lk5vRWxhYilcbiAgICAgIH07XG5cbiAgICBsZXQgdGVzdF92YWxpZGF0aW9uID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IHRlc3RfdmFsaWRhdGlvbi50ZXJtLFxuICAgICAgICBpbmZvX21hcDogdGVzdF92YWxpZGF0aW9uLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZih0ZXN0X3ZhbGlkYXRpb25fa2V5KSxcbiAgICAgIH07XG5cbiAgICBsZXQgdXNlcl9pbXBsID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IHVzZXJfaW1wbC50ZXJtLFxuICAgICAgICBpbmZvX21hcDogdXNlcl9pbXBsLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZih1c2VyX2ltcGxfa2V5KSxcbiAgICAgIH07XG5cbiAgICBsZXQgdXNlcl90ZXN0cyA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiB1c2VyX3Rlc3RzLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiB1c2VyX3Rlc3RzLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZih1c2VyX3Rlc3RzX2tleSksXG4gICAgICB9O1xuICAgIGxldCBwcmVsdWRlID1cbiAgICAgIER5bmFtaWNzSXRlbS57XG4gICAgICAgIHRlcm06IHByZWx1ZGUudGVybSxcbiAgICAgICAgaW5mb19tYXA6IHByZWx1ZGUuaW5mb19tYXAsXG4gICAgICAgIHJlc3VsdDogTm9FbGFiLFxuICAgICAgfTtcbiAgICBsZXQgaW5zdHJ1Y3RvciA9XG4gICAgICBEeW5hbWljc0l0ZW0ue1xuICAgICAgICB0ZXJtOiBpbnN0cnVjdG9yLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiBpbnN0cnVjdG9yLmluZm9fbWFwLFxuICAgICAgICByZXN1bHQ6IHJlc3VsdF9vZihpbnN0cnVjdG9yX2tleSksXG4gICAgICB9O1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0Lm1hcGkoXG4gICAgICAgIChuLCBzdGF0aWNzX2l0ZW06IFN0YXRpY3NJdGVtLnQpID0+XG4gICAgICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgICAgIHRlcm06IHN0YXRpY3NfaXRlbS50ZXJtLFxuICAgICAgICAgICAgaW5mb19tYXA6IHN0YXRpY3NfaXRlbS5pbmZvX21hcCxcbiAgICAgICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl9idWdzX2tleShuKSksXG4gICAgICAgICAgfSxcbiAgICAgICAgaGlkZGVuX2J1Z3MsXG4gICAgICApO1xuICAgIGxldCBoaWRkZW5fdGVzdHMgPVxuICAgICAgRHluYW1pY3NJdGVtLntcbiAgICAgICAgdGVybTogaGlkZGVuX3Rlc3RzLnRlcm0sXG4gICAgICAgIGluZm9fbWFwOiBoaWRkZW5fdGVzdHMuaW5mb19tYXAsXG4gICAgICAgIHJlc3VsdDogcmVzdWx0X29mKGhpZGRlbl90ZXN0c19rZXkpLFxuICAgICAgfTtcbiAgICB7XG4gICAgICB0ZXN0X3ZhbGlkYXRpb24sXG4gICAgICB1c2VyX2ltcGwsXG4gICAgICB1c2VyX3Rlc3RzLFxuICAgICAgaW5zdHJ1Y3RvcixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0cyxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzdGl0Y2hfZHluYW1pYyA9XG4gICAgICAoXG4gICAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MudCxcbiAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICByZXN1bHRzOiBvcHRpb24oTW9kZWxSZXN1bHRzLnQpLFxuICAgICAgKVxuICAgICAgOiBzdGl0Y2hlZChEeW5hbWljc0l0ZW0udCkgPT5cbiAgICBpZiAoc2V0dGluZ3Muc3RhdGljcyAmJiBzZXR0aW5ncy5keW5hbWljcykge1xuICAgICAgc3RpdGNoX2R5bmFtaWMoc2V0dGluZ3MsIHN0YXRlLCByZXN1bHRzKTtcbiAgICB9IGVsc2UgaWYgKHNldHRpbmdzLnN0YXRpY3MpIHtcbiAgICAgIGxldCB0ID0gc3RpdGNoX3N0YXRpYyhzZXR0aW5ncywgc3RpdGNoX3Rlcm0oc3RhdGUpKTtcbiAgICAgIHtcbiAgICAgICAgdGVzdF92YWxpZGF0aW9uOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudGVzdF92YWxpZGF0aW9uKSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQudXNlcl9pbXBsKSxcbiAgICAgICAgdXNlcl90ZXN0czogRHluYW1pY3NJdGVtLnN0YXRpY3Nfb25seSh0LnVzZXJfdGVzdHMpLFxuICAgICAgICBpbnN0cnVjdG9yOiBEeW5hbWljc0l0ZW0uc3RhdGljc19vbmx5KHQuaW5zdHJ1Y3RvciksXG4gICAgICAgIHByZWx1ZGU6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5wcmVsdWRlKSxcbiAgICAgICAgaGlkZGVuX2J1Z3M6IExpc3QubWFwKER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHksIHQuaGlkZGVuX2J1Z3MpLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5zdGF0aWNzX29ubHkodC5oaWRkZW5fdGVzdHMpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAge1xuICAgICAgICB0ZXN0X3ZhbGlkYXRpb246IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgdXNlcl9pbXBsOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIHVzZXJfdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgICAgaW5zdHJ1Y3RvcjogRHluYW1pY3NJdGVtLmVtcHR5LFxuICAgICAgICBwcmVsdWRlOiBEeW5hbWljc0l0ZW0uZW1wdHksXG4gICAgICAgIGhpZGRlbl9idWdzOlxuICAgICAgICAgIExpc3QuaW5pdChMaXN0Lmxlbmd0aChzdGF0ZS5lZHMuaGlkZGVuX2J1Z3MpLCBfID0+XG4gICAgICAgICAgICBEeW5hbWljc0l0ZW0uZW1wdHlcbiAgICAgICAgICApLFxuICAgICAgICBoaWRkZW5fdGVzdHM6IER5bmFtaWNzSXRlbS5lbXB0eSxcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHN0aXRjaF9keW5hbWljID0gQ29yZS5NZW1vLmdlbmVyYWwoc3RpdGNoX2R5bmFtaWMpO1xuXG4gIC8vIE1vZHVsZSBFeHBvcnRcblxuICBsZXQgZWRpdG9yX3BwID0gKGZtdCwgZWRpdG9yOiBFZGl0b3IudCkgPT4ge1xuICAgIGxldCB6aXBwZXIgPSBlZGl0b3Iuc3RhdGUuemlwcGVyO1xuICAgIGxldCBzZXJpYWxpemF0aW9uID0gWmlwcGVyLnNob3coemlwcGVyKTtcbiAgICAvLyBsZXQgc3RyaW5nX2xpdGVyYWwgPSBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChzZXJpYWxpemF0aW9uKSArKyBcIlxcXCJcIjtcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nKGZtdCwgc2VyaWFsaXphdGlvbik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9tb2R1bGUgPSAobW9kdWxlX25hbWUsIHtlZHMsIF99OiBzdGF0ZSkgPT4ge1xuICAgIGxldCBwcmVmaXggPVxuICAgICAgXCJsZXQgcHJvbXB0ID0gXCJcbiAgICAgICsrIG1vZHVsZV9uYW1lXG4gICAgICArKyBcIl9wcm9tcHQucHJvbXB0XFxuXCJcbiAgICAgICsrIFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiXFxuXCI7XG4gICAgZGF0YTtcbiAgfTtcblxuICBsZXQgdHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAgPSAoZm10LCBlZGl0b3I6IEVkaXRvci50KSA9PiB7XG4gICAgbGV0IHppcHBlciA9IGVkaXRvci5zdGF0ZS56aXBwZXI7XG4gICAgbGV0IGNvZGUgPSBQcmludGVyLnRvX3N0cmluZ19iYXNpYyh6aXBwZXIpO1xuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcoZm10LCBcIlxcXCJcIiArKyBTdHJpbmcuZXNjYXBlZChjb2RlKSArKyBcIlxcXCJcIik7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IHByZWZpeCA9XG4gICAgICBcImxldCBwcm9tcHQgPSBcIlxuICAgICAgKysgbW9kdWxlX25hbWVcbiAgICAgICsrIFwiX3Byb21wdC5wcm9tcHRcXG5cIlxuICAgICAgKysgXCJsZXQgZXhlcmNpc2U6IEV4ZXJjaXNlLnNwZWMgPSBFeGVyY2lzZS50cmFuc2l0aW9uKFwiO1xuICAgIGxldCByZWNvcmQgPSBzaG93X3AodHJhbnNpdGlvbmFyeV9lZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBwcmVmaXggKysgcmVjb3JkICsrIFwiKVxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGV4cG9ydF9ncmFkaW5nX21vZHVsZSA9IChtb2R1bGVfbmFtZSwge2VkcywgX306IHN0YXRlKSA9PiB7XG4gICAgbGV0IGhlYWRlciA9IG91dHB1dF9oZWFkZXJfZ3JhZGluZyhtb2R1bGVfbmFtZSk7XG4gICAgbGV0IHByZWZpeCA9IFwibGV0IGV4ZXJjaXNlOiBFeGVyY2lzZS5zcGVjID0gXCI7XG4gICAgbGV0IHJlY29yZCA9IHNob3dfcChlZGl0b3JfcHAsIGVkcyk7XG4gICAgbGV0IGRhdGEgPSBoZWFkZXIgKysgcHJlZml4ICsrIHJlY29yZCArKyBcIlxcblwiO1xuICAgIGRhdGE7XG4gIH07XG5cbiAgbGV0IGJsYW5rX3NwZWMgPVxuICAgICAgKFxuICAgICAgICB+dGl0bGUsXG4gICAgICAgIH5tb2R1bGVfbmFtZSxcbiAgICAgICAgfnBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgfnJlcXVpcmVkX3Rlc3RzLFxuICAgICAgICB+cHJvdmlkZWRfdGVzdHMsXG4gICAgICAgIH5udW1fd3JvbmdfaW1wbHMsXG4gICAgICApID0+IHtcbiAgICBsZXQgcHJlbHVkZSA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IGNvcnJlY3RfaW1wbCA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgbGV0IHlvdXJfdGVzdHNfdGVzdHMgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCB5b3VyX2ltcGwgPSBaaXBwZXIubmV4dF9ibGFuaygpO1xuICAgIGxldCBoaWRkZW5fYnVncyA9XG4gICAgICBMaXN0LmluaXQoXG4gICAgICAgIG51bV93cm9uZ19pbXBscyxcbiAgICAgICAgaSA9PiB7XG4gICAgICAgICAgbGV0IHppcHBlciA9IFppcHBlci5uZXh0X2JsYW5rKCk7XG4gICAgICAgICAge2ltcGw6IHppcHBlciwgaGludDogXCJUT0RPOiBoaW50IFwiICsrIHN0cmluZ19vZl9pbnQoaSl9O1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICBsZXQgaGlkZGVuX3Rlc3RzX3Rlc3RzID0gWmlwcGVyLm5leHRfYmxhbmsoKTtcbiAgICB7XG4gICAgICB0aXRsZSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBtb2R1bGVfbmFtZSxcbiAgICAgIHByb21wdDogRXhlcmNpc2VFbnYuZGVmYXVsdCxcbiAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgIHByZWx1ZGUsXG4gICAgICBjb3JyZWN0X2ltcGwsXG4gICAgICB5b3VyX3Rlc3RzOiB7XG4gICAgICAgIHRlc3RzOiB5b3VyX3Rlc3RzX3Rlc3RzLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWRfdGVzdHMsXG4gICAgICAgIHByb3ZpZGVkOiBwcm92aWRlZF90ZXN0cyxcbiAgICAgIH0sXG4gICAgICB5b3VyX2ltcGwsXG4gICAgICBoaWRkZW5fYnVncyxcbiAgICAgIGhpZGRlbl90ZXN0czoge1xuICAgICAgICB0ZXN0czogaGlkZGVuX3Rlc3RzX3Rlc3RzLFxuICAgICAgICBoaW50czogW10sXG4gICAgICB9LFxuICAgICAgc3ludGF4X3Rlc3RzOiBbXSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIEZyb20gU3RvcmVcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgZXhlcmNpc2VfZXhwb3J0ID0ge1xuICAgIGN1cl9leGVyY2lzZToga2V5LFxuICAgIGV4ZXJjaXNlX2RhdGE6IGxpc3QoKGtleSwgcGVyc2lzdGVudF9zdGF0ZSkpLFxuICB9O1xuXG4gIGxldCBzZXJpYWxpemVfZXhlcmNpc2UgPSAoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpID0+IHtcbiAgICBwZXJzaXN0ZW50X3N0YXRlX29mX3N0YXRlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIHw+IHNleHBfb2ZfcGVyc2lzdGVudF9zdGF0ZVxuICAgIHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplX2V4ZXJjaXNlID0gKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgZGF0YVxuICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHBcbiAgICB8PiB1bnBlcnNpc3Rfc3RhdGUofnNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICB9O1xuXG4gIGxldCBkZXNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQgPSBkYXRhID0+IHtcbiAgICBkYXRhIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gZXhlcmNpc2VfZXhwb3J0X29mX3NleHA7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgRiA9IChFeGVyY2lzZUVudjogRXhlcmNpc2UuRXhlcmNpc2VFbnYpID0+IHtcbiAgb3BlbiBFeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyY2VudGFnZSA9IGZsb2F0O1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcG9pbnRzID0gZmxvYXQ7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBzY29yZSA9IChwb2ludHMsIHBvaW50cyk7XG5cbiAgbGV0IHNjb3JlX29mX3BlcmNlbnQgPSAocGVyY2VudCwgbWF4X3BvaW50cykgPT4ge1xuICAgIGxldCBtYXhfcG9pbnRzID0gZmxvYXRfb2ZfaW50KG1heF9wb2ludHMpO1xuICAgIChwZXJjZW50ICouIG1heF9wb2ludHMsIG1heF9wb2ludHMpO1xuICB9O1xuXG4gIG1vZHVsZSBUZXN0VmFsaWRhdGlvblJlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIHJlcXVpcmVkOiBpbnQsXG4gICAgICBwcm92aWRlZDogaW50LFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAoZWRzOiBlZHMsIHRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpKSA9PiB7XG4gICAgICB7XG4gICAgICAgIHRlc3RfcmVzdWx0cyxcbiAgICAgICAgcmVxdWlyZWQ6IGVkcy55b3VyX3Rlc3RzLnJlcXVpcmVkLFxuICAgICAgICBwcm92aWRlZDogZWRzLnlvdXJfdGVzdHMucHJvdmlkZWQsXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgcGVyY2VudGFnZSA9IChyZXBvcnQ6IHQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIHN3aXRjaCAocmVwb3J0LnRlc3RfcmVzdWx0cykge1xuICAgICAgfCBOb25lID0+IDAuMFxuICAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbiAgICAgICAgbGV0IG51bV90ZXN0cyA9IGZsb2F0X29mX2ludCh0ZXN0X3Jlc3VsdHMudG90YWwpO1xuICAgICAgICBsZXQgcmVxdWlyZWQgPSBmbG9hdF9vZl9pbnQocmVwb3J0LnJlcXVpcmVkKTtcbiAgICAgICAgbGV0IHByb3ZpZGVkID0gZmxvYXRfb2ZfaW50KHJlcG9ydC5wcm92aWRlZCk7XG4gICAgICAgIGxldCBudW1fcGFzc2luZyA9IGZsb2F0X29mX2ludCh0ZXN0X3Jlc3VsdHMucGFzc2luZyk7XG5cbiAgICAgICAgcmVxdWlyZWQgLS4gcHJvdmlkZWQgPD0gMC4wIHx8IG51bV90ZXN0cyA8PSAwLjBcbiAgICAgICAgICA/IDAuMFxuICAgICAgICAgIDogbnVtX3Bhc3NpbmdcbiAgICAgICAgICAgIC8uIG51bV90ZXN0c1xuICAgICAgICAgICAgKi4gKFxuICAgICAgICAgICAgICBGbG9hdC5tYXgoXG4gICAgICAgICAgICAgICAgMC4sXG4gICAgICAgICAgICAgICAgRmxvYXQubWluKG51bV90ZXN0cyAtLiBwcm92aWRlZCwgcmVxdWlyZWQgLS4gcHJvdmlkZWQpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC8uIChyZXF1aXJlZCAtLiBwcm92aWRlZClcbiAgICAgICAgICAgICk7XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBsZXQgdGVzdF9zdW1tYXJ5X3N0ciA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpID0+IHtcbiAgICAgIFRlc3RSZXN1bHRzLnJlc3VsdF9zdW1tYXJ5X3N0cihcbiAgICAgICAgfm49dGVzdF9yZXN1bHRzLnRvdGFsLFxuICAgICAgICB+cD10ZXN0X3Jlc3VsdHMuZmFpbGluZyxcbiAgICAgICAgfnE9dGVzdF9yZXN1bHRzLnVuZmluaXNoZWQsXG4gICAgICAgIH5uX3N0cj1cInRlc3RcIixcbiAgICAgICAgfm5zX3N0cj1cInRlc3RzXCIsXG4gICAgICAgIH5wX3N0cj1cImZhaWxpbmdcIixcbiAgICAgICAgfnFfc3RyPVwiaW5kZXRlcm1pbmF0ZVwiLFxuICAgICAgICB+cl9zdHI9XCJ2YWxpZFwiLFxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIG1vZHVsZSBNdXRhdGlvblRlc3RpbmdSZXBvcnQgPSB7XG4gICAgdHlwZSB0ID0ge3Jlc3VsdHM6IGxpc3QoKFRlc3RTdGF0dXMudCwgc3RyaW5nKSl9O1xuXG4gICAgbGV0IGhpZGRlbl9idWdfc3RhdHVzID1cbiAgICAgICAgKFxuICAgICAgICAgIHRlc3RfdmFsaWRhdGlvbl9kYXRhOiBEeW5hbWljc0l0ZW0udCxcbiAgICAgICAgICBoaWRkZW5fYnVnX2RhdGE6IER5bmFtaWNzSXRlbS50LFxuICAgICAgICApXG4gICAgICAgIDogVGVzdFN0YXR1cy50ID0+IHtcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyh0ZXN0X3ZhbGlkYXRpb25fZGF0YS5yZXN1bHQpLFxuICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoaGlkZGVuX2J1Z19kYXRhLnJlc3VsdCksXG4gICAgICApIHtcbiAgICAgIHwgKE5vbmUsIF8pXG4gICAgICB8IChfLCBOb25lKSA9PiBJbmRldFxuICAgICAgfCAoU29tZSh0ZXN0X3ZhbGlkYXRpb25fZGF0YSksIFNvbWUoaGlkZGVuX2J1Z19kYXRhKSkgPT5cbiAgICAgICAgbGV0IHZhbGlkYXRpb25fdGVzdF9tYXAgPSB0ZXN0X3ZhbGlkYXRpb25fZGF0YS50ZXN0X21hcDtcbiAgICAgICAgbGV0IGhpZGRlbl9idWdfdGVzdF9tYXAgPSBoaWRkZW5fYnVnX2RhdGEudGVzdF9tYXA7XG5cbiAgICAgICAgbGV0IGZvdW5kID1cbiAgICAgICAgICBoaWRkZW5fYnVnX3Rlc3RfbWFwXG4gICAgICAgICAgfD4gTGlzdC5maW5kX29wdCgoKGlkLCBpbnN0YW5jZV9yZXBvcnRzKSkgPT4ge1xuICAgICAgICAgICAgICAgbGV0IHN0YXR1cyA9IFRlc3RNYXAuam9pbnRfc3RhdHVzKGluc3RhbmNlX3JlcG9ydHMpO1xuICAgICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5QYXNzXG4gICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuSW5kZXQgPT4gZmFsc2VcbiAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5GYWlsID0+XG4gICAgICAgICAgICAgICAgIGxldCB2YWxpZGF0aW9uX3Rlc3RfcmVwb3J0cyA9XG4gICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbl90ZXN0X21hcCB8PiBUZXN0TWFwLmxvb2t1cChpZCk7XG4gICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsaWRhdGlvbl90ZXN0X3JlcG9ydHMpIHtcbiAgICAgICAgICAgICAgICAgfCBOb25lID0+IGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgU29tZShyZXBvcnRzKSA9PlxuICAgICAgICAgICAgICAgICAgIGxldCBzdGF0dXMgPSBUZXN0TWFwLmpvaW50X3N0YXR1cyhyZXBvcnRzKTtcbiAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5QYXNzID0+IHRydWVcbiAgICAgICAgICAgICAgICAgICB8IFRlc3RTdGF0dXMuRmFpbFxuICAgICAgICAgICAgICAgICAgIHwgVGVzdFN0YXR1cy5JbmRldCA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIH0pO1xuICAgICAgICBzd2l0Y2ggKGZvdW5kKSB7XG4gICAgICAgIHwgTm9uZSA9PiBGYWlsXG4gICAgICAgIHwgU29tZShfKSA9PiBQYXNzXG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07IC8vIGZvciBlYWNoIGhpZGRlbiBidWdcbiAgICAvLyAgIGluIHRoZSB0ZXN0IHJlc3VsdHMgZGF0YSwgZmluZCBhIHRlc3QgSUQgdGhhdCBwYXNzZXMgdGVzdCB2YWxpZGF0aW9uIGJ1dCBmYWlscyBhZ2FpbnN0XG5cbiAgICBsZXQgbWsgPVxuICAgICAgICAoXG4gICAgICAgICAgfnRlc3RfdmFsaWRhdGlvbjogRHluYW1pY3NJdGVtLnQsXG4gICAgICAgICAgfmhpZGRlbl9idWdzX3N0YXRlOiBsaXN0KHdyb25nX2ltcGwoRWRpdG9yLnQpKSxcbiAgICAgICAgICB+aGlkZGVuX2J1Z3M6IGxpc3QoRHluYW1pY3NJdGVtLnQpLFxuICAgICAgICApXG4gICAgICAgIDogdCA9PiB7XG4gICAgICBsZXQgcmVzdWx0cyA9XG4gICAgICAgIExpc3QubWFwKGhpZGRlbl9idWdfc3RhdHVzKHRlc3RfdmFsaWRhdGlvbiksIGhpZGRlbl9idWdzKTtcbiAgICAgIGxldCBoaW50cyA9XG4gICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICh3cm9uZ19pbXBsOiB3cm9uZ19pbXBsKEVkaXRvci50KSkgPT4gd3JvbmdfaW1wbC5oaW50LFxuICAgICAgICAgIGhpZGRlbl9idWdzX3N0YXRlLFxuICAgICAgICApO1xuICAgICAgbGV0IHJlc3VsdHMgPSBMaXN0LmNvbWJpbmUocmVzdWx0cywgaGludHMpO1xuICAgICAge3Jlc3VsdHM6IHJlc3VsdHN9O1xuICAgIH07XG5cbiAgICBsZXQgcGVyY2VudGFnZSA9IChyZXBvcnQ6IHQpOiBwZXJjZW50YWdlID0+IHtcbiAgICAgIGxldCByZXN1bHRzID0gcmVwb3J0LnJlc3VsdHM7XG4gICAgICBsZXQgbnVtX3dyb25nX2ltcGxzID0gTGlzdC5sZW5ndGgocmVzdWx0cyk7XG4gICAgICBsZXQgbnVtX3Bhc3NlZCA9XG4gICAgICAgIHJlc3VsdHNcbiAgICAgICAgfD4gTGlzdC5maW5kX2FsbCgoKHN0YXR1cywgXykpID0+IHN0YXR1cyA9PSBUZXN0U3RhdHVzLlBhc3MpXG4gICAgICAgIHw+IExpc3QubGVuZ3RoO1xuICAgICAgc3dpdGNoIChudW1fd3JvbmdfaW1wbHMpIHtcbiAgICAgIHwgMCA9PiAxLjBcbiAgICAgIHwgXyA9PiBmbG9hdF9vZl9pbnQobnVtX3Bhc3NlZCkgLy4gZmxvYXRfb2ZfaW50KG51bV93cm9uZ19pbXBscylcbiAgICAgIH07XG4gICAgfTtcblxuICAgIC8vIFRPRE8gbW92ZSB0byBzZXBhcmF0ZSBtb2R1bGVcblxuICAgIGxldCBzdW1tYXJ5X3N0ciA9ICh+dG90YWwsIH5mb3VuZCk6IHN0cmluZyA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRvdGFsLFxuICAgICAgICB+cD1mb3VuZCxcbiAgICAgICAgfnE9MCxcbiAgICAgICAgfm5fc3RyPVwiYnVnXCIsXG4gICAgICAgIH5uc19zdHI9XCJidWdzXCIsXG4gICAgICAgIH5wX3N0cj1cImV4cG9zZWRcIixcbiAgICAgICAgfnFfc3RyPVwiXCIsXG4gICAgICAgIH5yX3N0cj1cInVucmV2ZWFsZWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgU3ludGF4UmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIGhpbnRlZF9yZXN1bHRzOiBsaXN0KChib29sLCBoaW50KSksXG4gICAgICBwZXJjZW50YWdlLFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAofnlvdXJfaW1wbDogRWRpdG9yLnQsIH50ZXN0czogc3ludGF4X3Rlc3RzKTogdCA9PiB7XG4gICAgICBsZXQgdXNlcl9pbXBsX3Rlcm0gPSB5b3VyX2ltcGwuc3RhdGUubWV0YS52aWV3X3Rlcm07XG5cbiAgICAgIGxldCBwcmVkaWNhdGVzID1cbiAgICAgICAgTGlzdC5tYXAoKChfLCBwKSkgPT4gU3ludGF4VGVzdC5wcmVkaWNhdGVfZm4ocCksIHRlc3RzKTtcbiAgICAgIGxldCBoaW50cyA9IExpc3QubWFwKCgoaCwgXykpID0+IGgsIHRlc3RzKTtcbiAgICAgIGxldCBzeW50YXhfcmVzdWx0cyA9IFN5bnRheFRlc3QuY2hlY2sodXNlcl9pbXBsX3Rlcm0sIHByZWRpY2F0ZXMpO1xuXG4gICAgICB7XG4gICAgICAgIGhpbnRlZF9yZXN1bHRzOlxuICAgICAgICAgIExpc3QubWFwMigociwgaCkgPT4gKHIsIGgpLCBzeW50YXhfcmVzdWx0cy5yZXN1bHRzLCBoaW50cyksXG4gICAgICAgIHBlcmNlbnRhZ2U6IHN5bnRheF9yZXN1bHRzLnBlcmNlbnRhZ2UsXG4gICAgICB9O1xuICAgIH07XG4gIH07XG5cbiAgbW9kdWxlIEltcGxHcmFkaW5nUmVwb3J0ID0ge1xuICAgIHR5cGUgdCA9IHtcbiAgICAgIGhpbnRzOiBsaXN0KHN0cmluZyksXG4gICAgICB0ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSxcbiAgICAgIGhpbnRlZF9yZXN1bHRzOiBsaXN0KChUZXN0U3RhdHVzLnQsIHN0cmluZykpLFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAofmhpbnRzOiBsaXN0KHN0cmluZyksIH50ZXN0X3Jlc3VsdHM6IG9wdGlvbihUZXN0UmVzdWx0cy50KSk6IHQgPT4ge1xuICAgICAgbGV0IGhpbnRlZF9yZXN1bHRzID1cbiAgICAgICAgc3dpdGNoICh0ZXN0X3Jlc3VsdHMpIHtcbiAgICAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbiAgICAgICAgICBsZXQgc3RhdHVzZXMgPSB0ZXN0X3Jlc3VsdHMuc3RhdHVzZXM7XG4gICAgICAgICAgVXRpbC5MaXN0VXRpbC56aXBfZGVmYXVsdHMoXG4gICAgICAgICAgICBzdGF0dXNlcyxcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgSGF6M2xjb3JlLlRlc3RTdGF0dXMuSW5kZXQsXG4gICAgICAgICAgICBcIk5vIGhpbnQgYXZhaWxhYmxlLlwiLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgfCBOb25lID0+XG4gICAgICAgICAgVXRpbC5MaXN0VXRpbC56aXBfZGVmYXVsdHMoXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIGhpbnRzLFxuICAgICAgICAgICAgSGF6M2xjb3JlLlRlc3RTdGF0dXMuSW5kZXQsXG4gICAgICAgICAgICBcIkV4ZXJjaXNlIGNvbmZpZ3VyYXRpb24gZXJyb3I6IEhpbnQgd2l0aG91dCBhIHRlc3QuXCIsXG4gICAgICAgICAgKVxuICAgICAgICB9O1xuICAgICAge2hpbnRzLCB0ZXN0X3Jlc3VsdHMsIGhpbnRlZF9yZXN1bHRzfTtcbiAgICB9O1xuXG4gICAgbGV0IHRvdGFsID0gKHJlcG9ydDogdCkgPT4gTGlzdC5sZW5ndGgocmVwb3J0LmhpbnRlZF9yZXN1bHRzKTtcbiAgICBsZXQgbnVtX3Bhc3NlZCA9IChyZXBvcnQ6IHQpID0+IHtcbiAgICAgIHJlcG9ydC5oaW50ZWRfcmVzdWx0c1xuICAgICAgfD4gTGlzdC5maW5kX2FsbCgoKHN0YXR1cywgXykpID0+IHN0YXR1cyA9PSBUZXN0U3RhdHVzLlBhc3MpXG4gICAgICB8PiBMaXN0Lmxlbmd0aDtcbiAgICB9O1xuXG4gICAgbGV0IHBlcmNlbnRhZ2UgPSAocmVwb3J0OiB0LCBzeW50YXhfcmVwb3J0OiBTeW50YXhSZXBvcnQudCk6IHBlcmNlbnRhZ2UgPT4ge1xuICAgICAgc3ludGF4X3JlcG9ydC5wZXJjZW50YWdlXG4gICAgICAqLiAoZmxvYXRfb2ZfaW50KG51bV9wYXNzZWQocmVwb3J0KSkgLy4gZmxvYXRfb2ZfaW50KHRvdGFsKHJlcG9ydCkpKTtcbiAgICB9O1xuXG4gICAgbGV0IHRlc3Rfc3VtbWFyeV9zdHIgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KSA9PiB7XG4gICAgICBUZXN0UmVzdWx0cy5yZXN1bHRfc3VtbWFyeV9zdHIoXG4gICAgICAgIH5uPXRlc3RfcmVzdWx0cy50b3RhbCxcbiAgICAgICAgfnA9dGVzdF9yZXN1bHRzLmZhaWxpbmcsXG4gICAgICAgIH5xPXRlc3RfcmVzdWx0cy51bmZpbmlzaGVkLFxuICAgICAgICB+bl9zdHI9XCJ0ZXN0XCIsXG4gICAgICAgIH5uc19zdHI9XCJ0ZXN0c1wiLFxuICAgICAgICB+cF9zdHI9XCJmYWlsaW5nXCIsXG4gICAgICAgIH5xX3N0cj1cImluZGV0ZXJtaW5hdGVcIixcbiAgICAgICAgfnJfc3RyPVwidmFsaWRcIixcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcblxuICBtb2R1bGUgR3JhZGluZ1JlcG9ydCA9IHtcbiAgICB0eXBlIHQgPSB7XG4gICAgICBwb2ludF9kaXN0cmlidXRpb24sXG4gICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0OiBUZXN0VmFsaWRhdGlvblJlcG9ydC50LFxuICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQ6IE11dGF0aW9uVGVzdGluZ1JlcG9ydC50LFxuICAgICAgc3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQsXG4gICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0OiBJbXBsR3JhZGluZ1JlcG9ydC50LFxuICAgIH07XG5cbiAgICBsZXQgbWsgPSAoZWRzOiBlZHMsIH5zdGl0Y2hlZF9keW5hbWljczogc3RpdGNoZWQoRHluYW1pY3NJdGVtLnQpKSA9PiB7XG4gICAgICBwb2ludF9kaXN0cmlidXRpb246IGVkcy5wb2ludF9kaXN0cmlidXRpb24sXG4gICAgICB0ZXN0X3ZhbGlkYXRpb25fcmVwb3J0OlxuICAgICAgICBUZXN0VmFsaWRhdGlvblJlcG9ydC5tayhcbiAgICAgICAgICBlZHMsXG4gICAgICAgICAgTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKHN0aXRjaGVkX2R5bmFtaWNzLnRlc3RfdmFsaWRhdGlvbi5yZXN1bHQpLFxuICAgICAgICApLFxuICAgICAgbXV0YXRpb25fdGVzdGluZ19yZXBvcnQ6XG4gICAgICAgIE11dGF0aW9uVGVzdGluZ1JlcG9ydC5tayhcbiAgICAgICAgICB+dGVzdF92YWxpZGF0aW9uPXN0aXRjaGVkX2R5bmFtaWNzLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgICB+aGlkZGVuX2J1Z3Nfc3RhdGU9ZWRzLmhpZGRlbl9idWdzLFxuICAgICAgICAgIH5oaWRkZW5fYnVncz1zdGl0Y2hlZF9keW5hbWljcy5oaWRkZW5fYnVncyxcbiAgICAgICAgKSxcbiAgICAgIHN5bnRheF9yZXBvcnQ6XG4gICAgICAgIFN5bnRheFJlcG9ydC5tayh+eW91cl9pbXBsPWVkcy55b3VyX2ltcGwsIH50ZXN0cz1lZHMuc3ludGF4X3Rlc3RzKSxcbiAgICAgIGltcGxfZ3JhZGluZ19yZXBvcnQ6XG4gICAgICAgIEltcGxHcmFkaW5nUmVwb3J0Lm1rKFxuICAgICAgICAgIH5oaW50cz1lZHMuaGlkZGVuX3Rlc3RzLmhpbnRzLFxuICAgICAgICAgIH50ZXN0X3Jlc3VsdHM9XG4gICAgICAgICAgICBNb2RlbFJlc3VsdC50ZXN0X3Jlc3VsdHMoc3RpdGNoZWRfZHluYW1pY3MuaGlkZGVuX3Rlc3RzLnJlc3VsdCksXG4gICAgICAgICksXG4gICAgfTtcblxuICAgIGxldCBvdmVyYWxsX3Njb3JlID1cbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBvaW50X2Rpc3RyaWJ1dGlvbixcbiAgICAgICAgICAgIHRlc3RfdmFsaWRhdGlvbl9yZXBvcnQsXG4gICAgICAgICAgICBtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCxcbiAgICAgICAgICAgIHN5bnRheF9yZXBvcnQsXG4gICAgICAgICAgICBpbXBsX2dyYWRpbmdfcmVwb3J0LFxuICAgICAgICAgICAgXyxcbiAgICAgICAgICB9OiB0LFxuICAgICAgICApXG4gICAgICAgIDogc2NvcmUgPT4ge1xuICAgICAgbGV0ICh0dl9wb2ludHMsIHR2X21heCkgPVxuICAgICAgICBzY29yZV9vZl9wZXJjZW50KFxuICAgICAgICAgIFRlc3RWYWxpZGF0aW9uUmVwb3J0LnBlcmNlbnRhZ2UodGVzdF92YWxpZGF0aW9uX3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLnRlc3RfdmFsaWRhdGlvbixcbiAgICAgICAgKTtcbiAgICAgIGxldCAobXRfcG9pbnRzLCBtdF9tYXgpID1cbiAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICBNdXRhdGlvblRlc3RpbmdSZXBvcnQucGVyY2VudGFnZShtdXRhdGlvbl90ZXN0aW5nX3JlcG9ydCksXG4gICAgICAgICAgcG9pbnRfZGlzdHJpYnV0aW9uLm11dGF0aW9uX3Rlc3RpbmcsXG4gICAgICAgICk7XG4gICAgICBsZXQgKGlnX3BvaW50cywgaWdfbWF4KSA9XG4gICAgICAgIHNjb3JlX29mX3BlcmNlbnQoXG4gICAgICAgICAgSW1wbEdyYWRpbmdSZXBvcnQucGVyY2VudGFnZShpbXBsX2dyYWRpbmdfcmVwb3J0LCBzeW50YXhfcmVwb3J0KSxcbiAgICAgICAgICBwb2ludF9kaXN0cmlidXRpb24uaW1wbF9ncmFkaW5nLFxuICAgICAgICApO1xuICAgICAgbGV0IHRvdGFsX3BvaW50cyA9IHR2X3BvaW50cyArLiBtdF9wb2ludHMgKy4gaWdfcG9pbnRzO1xuICAgICAgbGV0IG1heF9wb2ludHMgPSB0dl9tYXggKy4gbXRfbWF4ICsuIGlnX21heDtcbiAgICAgICh0b3RhbF9wb2ludHMsIG1heF9wb2ludHMpO1xuICAgIH07XG4gIH07XG59O1xuIiwibW9kdWxlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGUgPSB1bml0O1xuICBsZXQgZGVmYXVsdCA9ICgpO1xuICBsZXQgb3V0cHV0X2hlYWRlciA9IEV4ZXJjaXNlLm91dHB1dF9oZWFkZXJfZ3JhZGluZztcbn07XG5cbm1vZHVsZSBFeGVyY2lzZSA9IEV4ZXJjaXNlLkYoRXhlcmNpc2VFbnYpO1xuXG5tb2R1bGUgR3JhZGluZyA9IEdyYWRpbmcuRihFeGVyY2lzZUVudik7XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMy8yMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gUHJpbnRmXG5cbmxldCBkZWJ1ZyA9XG4gIGxldCBfREVCVUcgPVxuICAgIHRyeVxuICAgICAgU29tZShTeXMuZ2V0ZW52IFwiREVCVUdcIilcbiAgICB3aXRoIF8gLT4gTm9uZVxuICBhbmQgX09NRF9ERUJVRyA9XG4gICAgdHJ5XG4gICAgICBTb21lKFN5cy5nZXRlbnYgXCJPTURfREVCVUdcIilcbiAgICB3aXRoIF8gLT4gTm9uZVxuICBpblxuICBtYXRjaCBfREVCVUcsIF9PTURfREVCVUcgd2l0aFxuICB8IF8sIFNvbWUgXCJmYWxzZVwiIC0+XG4gICAgIGZhbHNlXG4gIHwgU29tZSBfLCBOb25lIC0+XG4gICAgIGVwcmludGYgXCJvbWQ6IGRlYnVnIG1vZGUgYWN0aXZhdGVkIGJlY2F1c2UgREVCVUcgaXMgc2V0LCBcXFxuICAgICAgICAgICAgICB5b3UgY2FuIGRlYWN0aXZhdGUgdGhlIG1vZGUgYnkgdW5zZXR0aW5nIERFQlVHIFxcXG4gICAgICAgICAgICAgIG9yIGJ5IHNldHRpbmcgT01EX0RFQlVHIHRvIHRoZSBzdHJpbmcgXFxcImZhbHNlXFxcIi5cXG4lIVwiO1xuICAgICB0cnVlXG4gIHwgTm9uZSwgTm9uZSAtPlxuICAgICBmYWxzZVxuICB8IF8sIFNvbWUgXyAtPlxuICAgICBlcHJpbnRmIFwib21kOiBkZWJ1ZyBtb2RlIGFjdGl2YXRlZCBiZWNhdXNlIE9NRF9ERUJVRyBpcyBzZXRcbiAgICAgICAgICAgICAgdG8gYSB2YWx1ZSB0aGF0IGlzbid0IHRoZSBzdHJpbmcgXFxcImZhbHNlXFxcIi5cXG4lIVwiO1xuICAgICB0cnVlXG5cbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IHdhcm4gPyh3ZT1mYWxzZSkgbXNnID1cbiAgaWYgd2UgdGhlblxuICAgIHJhaXNlIChFcnJvciBtc2cpXG4gIGVsc2VcbiAgICBlcHJpbnRmIFwiKE9NRCkgV2FybmluZzogJXNcXG4lIVwiIG1zZ1xuXG5cbmxldCB0cmFja2ZpeCA9XG4gIHRyeVxuICAgIGlnbm9yZShTeXMuZ2V0ZW52IFwiT01EX0ZJWFwiKTtcbiAgICBlcHJpbnRmIFwib21kOiB0cmFja2luZyBtb2RlIGFjdGl2YXRlZDogdG9rZW4gbGlzdCBhcmUgdmVyeSBvZnRlbiBjaGVja2VkLCBcXFxuICAgICAgICAgICAgIGl0IG1pZ2h0IHRha2UgYSAqdmVyeSogbG9uZyB0aW1lIGlmIHlvdXIgaW5wdXQgaXMgbGFyZ2UuXFxuJSFcIjtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgZmFsc2VcblxubGV0IF8gPSBpZiBkZWJ1ZyB0aGVuIFByaW50ZXhjLnJlY29yZF9iYWNrdHJhY2UgdHJ1ZVxuXG5sZXQgcmFpc2UgPVxuICBpZiBkZWJ1ZyB0aGVuXG4gICAgKGZ1biBlIC0+XG4gICAgICAgZXByaW50ZiBcIihPTUQpIEV4Y2VwdGlvbiByYWlzZWQ6ICVzXFxuJSFcIiAoUHJpbnRleGMudG9fc3RyaW5nIGUpO1xuICAgICAgIHJhaXNlIGUpXG4gIGVsc2VcbiAgICByYWlzZVxuXG5tb2R1bGUgU3RyaW5nU2V0IDogc2lnXG4gIGluY2x1ZGUgU2V0LlMgd2l0aCB0eXBlIGVsdCA9IHN0cmluZ1xuICB2YWwgb2ZfbGlzdCA6IGVsdCBsaXN0IC0+IHRcbmVuZCA9IHN0cnVjdFxuICBpbmNsdWRlIFNldC5NYWtlKFN0cmluZylcbiAgbGV0IG9mX2xpc3QgbCA9IExpc3QuZm9sZF9sZWZ0IChmdW4gciBlIC0+IGFkZCBlIHIpIGVtcHR5IGxcbmVuZFxuXG5cbnR5cGUgJ2Egc3BsaXQgPSAnYSBsaXN0IC0+ICdhIHNwbGl0X2FjdGlvblxuYW5kICdhIHNwbGl0X2FjdGlvbiA9XG4gIHwgQ29udGludWVcbiAgfCBDb250aW51ZV93aXRoIG9mICdhIGxpc3QgKiAnYSBsaXN0XG4gIHwgU3BsaXQgb2YgJ2EgbGlzdCAqICdhIGxpc3RcblxuXG5sZXQgZnNwbGl0X3JldiA/KGV4Y2w9KGZ1biBfIC0+IGZhbHNlKSkgfihmOidhIHNwbGl0KSBsXG4gICAgOiAoJ2EgbGlzdCAqICdhIGxpc3QpIG9wdGlvbiA9XG4gIGxldCByZWMgbG9vcCBhY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZiBbXSB3aXRoXG4gICAgICAgICAgfCBTcGxpdChsZWZ0LCByaWdodCkgLT4gICAgICBTb21lKGxlZnRAYWNjdSwgcmlnaHQpXG4gICAgICAgICAgfCBDb250aW51ZV93aXRoKGxlZnQsIHRsKSAtPiBsb29wIChsZWZ0QGFjY3UpIHRsXG4gICAgICAgICAgfCBDb250aW51ZSAtPiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgIGVuZFxuICAgIHwgZTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBleGNsIGwgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBtYXRjaCBmIGwgd2l0aFxuICAgICAgICAgIHwgU3BsaXQobGVmdCwgcmlnaHQpIC0+ICAgICAgU29tZShsZWZ0QGFjY3UsIHJpZ2h0KVxuICAgICAgICAgIHwgQ29udGludWVfd2l0aChsZWZ0LCB0bCkgLT4gbG9vcCAobGVmdEBhY2N1KSB0bFxuICAgICAgICAgIHwgQ29udGludWUgLT4gICAgICAgICAgICAgICAgbG9vcCAoZTo6YWNjdSkgdGxcbiAgaW4gbG9vcCBbXSBsXG5cbmxldCBmc3BsaXQgPyhleGNsPShmdW4gXyAtPiBmYWxzZSkpIH5mIGwgPVxuICBtYXRjaCBmc3BsaXRfcmV2IH5leGNsOmV4Y2wgfmY6ZiBsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZShyZXYsIGwpIC0+IFNvbWUoTGlzdC5yZXYgcmV2LCBsKVxuXG5sZXQgaWRfb2Zfc3RyaW5nIGlkcyBzID1cbiAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IG91dCA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICAoKiBQdXQgW3NdIGludG8gW2JdLCByZXBsYWNpbmcgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIHdpdGggZGFzaGVzLiAqKVxuICBsZXQgcmVjIGxvb3Agc3RhcnRlZCBpID1cbiAgICBpZiBpID0gbiB0aGVuICgpXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnYScgLi4gJ3onIHwgJ0EnIC4uICdaJyB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb3V0IGMgO1xuICAgICAgICBsb29wIHRydWUgKGkgKyAxKVxuICAgICAgKCogRG9uJ3Qgd2FudCB0byBzdGFydCB3aXRoIGRhc2hlcy4gKilcbiAgICAgIHwgXyB3aGVuIG5vdCBzdGFydGVkIC0+XG4gICAgICAgIGxvb3AgZmFsc2UgKGkgKyAxKVxuICAgICAgfCBfIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvdXQgJy0nIDtcbiAgICAgICAgbG9vcCBmYWxzZSAoaSArIDEpXG4gIGluXG4gIGxvb3AgZmFsc2UgMCA7XG4gIGxldCBzJyA9IEJ1ZmZlci5jb250ZW50cyBvdXQgaW5cbiAgaWYgcycgPSBcIlwiIHRoZW4gXCJcIlxuICBlbHNlXG4gICAgKCogRmluZCBvdXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IGNoYXJhY3RlciBpbiBbcyddIHRoYXQgaXNuJ3QgYSBkYXNoLiAqKVxuICAgIGxldCBsYXN0X3RyYWlsaW5nID0gXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIGlmIGkgPCAwIHx8IHMnLltpXSA8PiAnLScgdGhlbiBpXG4gICAgICAgIGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgICBpblxuICAgICAgbG9vcCAoU3RyaW5nLmxlbmd0aCBzJyAtIDEpXG4gICAgaW5cbiAgICAoKiBUcmltIHRyYWlsaW5nIGRhc2hlcy4gKilcbiAgICBpZHMjbWFuZ2xlIEBAIFN0cmluZy5zdWIgcycgMCAobGFzdF90cmFpbGluZyArIDEpXG5cbigqIG9ubHkgY29udmVydCB3aGVuIFwibmVjZXNzYXJ5XCIgKilcbmxldCBodG1sZW50aXRpZXMgPyhtZD1mYWxzZSkgcyA9XG4gIGxldCBtb2R1bGUgQnJlYWsgPSBzdHJ1Y3QgZXhjZXB0aW9uIEJyZWFrIGVuZCBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgKClcbiAgICBlbHNlXG4gICAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICggJzAnIC4uICc5JyB8ICdhJyAuLiAneicgfCAnQScgLi4gJ1onICkgYXMgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICAgIHwgJ1wiJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJnF1b3Q7XCJcbiAgICAgICAgfCAnXFwnJyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJiMzOTtcIlxuICAgICAgICB8ICcmJyAtPlxuICAgICAgICAgICAgaWYgbWQgdGhlblxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gbWF0Y2ggcy5baSsxXSB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICcjJyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGZmIGogPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHMuW2pdIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gZmYgKHN1Y2MgailcbiAgICAgICAgICAgICAgICAgICAgICB8ICc7JyAtPiAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBmZiAoaSsyKVxuICAgICAgICAgICAgICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGZmIGogPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHMuW2pdIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdBJyAuLiAnWicgfCAnYScgLi4gJ3onIC0+IGZmIChzdWNjIGopXG4gICAgICAgICAgICAgICAgICAgICAgfCAnOycgLT4gKClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgQnJlYWsuQnJlYWtcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgZmYgKGkrMilcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBCcmVhay5CcmVha1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImXCJcbiAgICAgICAgICAgICAgICB3aXRoIF8gLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZhbXA7XCJcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gICAgICAgIHwgJzwnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImbHQ7XCJcbiAgICAgICAgfCAnPicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZndDtcIlxuICAgICAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgaW4gbG9vcCAoc3VjYyBpKVxuICBpblxuICBsb29wIDA7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IG1pbmltYWxpemVfYmxhbmtzIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgbCBpblxuICBsZXQgcmVjIGxvb3AgZiBpID1cbiAgICBpZiBpID0gbCB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyAtPlxuICAgICAgICBsb29wIHRydWUgKHN1Y2MgaSlcbiAgICAgIHwgYyAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIGYgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICcgJztcbiAgICAgICAgbG9vcCBmYWxzZSAoc3VjYyBpKVxuICBpbiBsb29wIGZhbHNlIDBcblxubGV0IHJlYyBlYXQgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCBlOjp0bCBhcyBsIC0+IGlmIGYgZSB0aGVuIGVhdCBmIHRsIGVsc2UgbFxuXG5cbmxldCByZWMgZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXMgKGh0bWw6c3RyaW5nKSA9XG4gIGxldCByZWMgY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLmluZGV4X2Zyb20gcyBpIGMgd2l0aFxuICAgIHwgMCAtPiBcIlwiLCBTdHJpbmcuc3ViIHMgMSAoU3RyaW5nLmxlbmd0aCBzIC0gMSlcbiAgICB8IGogLT4gU3RyaW5nLnN1YiBzIGkgKGotaSksIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCByZW1vdmVfcHJlZml4X3NwYWNlcyBzID0gXG4gICAgaWYgcyA9IFwiXCIgdGhlblxuICAgICAgcyBcbiAgICBlbHNlIGlmIHMuWzBdIDw+ICcgJyB0aGVuXG4gICAgICBzXG4gICAgZWxzZVxuICAgICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICBTdHJpbmcuc3ViIHMgaSAoU3RyaW5nLmxlbmd0aCBzIC0gaSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICB8ICcgJyAtPiBsb29wIChpKzEpXG4gICAgICAgICAgfCBfIC0+IFN0cmluZy5zdWIgcyBpIChTdHJpbmcubGVuZ3RoIHMgLSBpKVxuICAgICAgaW4gbG9vcCAxXG4gIGluXG4gIGxldCByZW1vdmVfc3VmZml4X3NwYWNlcyBzID1cbiAgICBpZiBzID0gXCJcIiB0aGVuXG4gICAgICBzIFxuICAgIGVsc2UgaWYgcy5bU3RyaW5nLmxlbmd0aCBzIC0gMV0gPD4gJyAnIHRoZW5cbiAgICAgIHNcbiAgICBlbHNlXG4gICAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgLT4gbG9vcCAoaS0xKVxuICAgICAgICB8IF8gLT4gU3RyaW5nLnN1YiBzIDAgKGkrMSlcbiAgICAgIGluIGxvb3AgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gIGluXG4gIGxldCByZWMgbG9vcCBzIHJlcyBpID1cbiAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgIHJlc1xuICAgIGVsc2VcbiAgICAgIG1hdGNoXG4gICAgICAgIHRyeVxuICAgICAgICAgIFNvbWUgKHRha2VfYXR0cmlidXRlIHMgaSlcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuICAgICAgd2l0aFxuICAgICAgfCBTb21lICgoKF8sXykgYXMgYSksIG5ld19zKSAtPlxuICAgICAgICBsb29wIG5ld19zIChhOjpyZXMpIDBcbiAgICAgIHwgTm9uZSAtPiByZXNcbiAgYW5kIHRha2VfYXR0cmlidXRlIHMgaSA9XG4gICAgICBsZXQgbmFtZSwgYWZ0ZXJfZXEgPSBjdXRfb25fY2hhcl9mcm9tIHMgaSAnPScgaW5cbiAgICAgIGxldCBuYW1lID0gcmVtb3ZlX3N1ZmZpeF9zcGFjZXMgbmFtZSBpblxuICAgICAgbGV0IGFmdGVyX2VxID0gcmVtb3ZlX3ByZWZpeF9zcGFjZXMgYWZ0ZXJfZXEgaW5cbiAgICAgIGxldCB2YWx1ZSwgcmVzdCA9IGN1dF9vbl9jaGFyX2Zyb20gYWZ0ZXJfZXEgMSBhZnRlcl9lcS5bMF0gaW5cbiAgICAgIChuYW1lLHZhbHVlKSwgcmVtb3ZlX3ByZWZpeF9zcGFjZXMgcmVzdFxuICBpblxuICBpZiAoKiBIYXMgaXQgYXQgbGVhc3Qgb25lIGF0dHJpYnV0ZT8gKilcbiAgICB0cnkgU3RyaW5nLmluZGV4IGh0bWwgJz4nIDwgU3RyaW5nLmluZGV4IGh0bWwgJyAnXG4gICAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZVxuICB0aGVuXG4gICAgW11cbiAgZWxzZVxuICBtYXRjaCBodG1sLlsxXSB3aXRoXG4gIHwgJzwnIHwgJyAnIC0+XG4gICAgZXh0cmFjdF9odG1sX2F0dHJpYnV0ZXNcbiAgICAgIChyZW1vdmVfcHJlZml4X3NwYWNlcyAoU3RyaW5nLnN1YiBodG1sIDEgKFN0cmluZy5sZW5ndGggaHRtbCAtIDEpKSlcbiAgfCBfIC0+XG4gICAgdHJ5XG4gICAgICBsZXQgaHRtbCA9IHNuZCAoY3V0X29uX2NoYXJfZnJvbSBodG1sIDAgJyAnKSBpblxuICAgICAgbG9vcCAoU3RyaW5nLnN1YiBodG1sIDAgKFN0cmluZy5pbmRleCBodG1sICc+JykpIFtdIDBcbiAgICB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuXG5sZXQgcmVjIGV4dHJhY3RfaW5uZXJfaHRtbCAoaHRtbDpzdHJpbmcpID1cbiAgbGV0IHJlYyBjdXRfb25fY2hhcl9mcm9tIHMgaSBjID1cbiAgICBtYXRjaCBTdHJpbmcuaW5kZXhfZnJvbSBzIGkgYyB3aXRoXG4gICAgfCAwIC0+IFwiXCIsIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIHwgaiAtPiBTdHJpbmcuc3ViIHMgaSAoai1pKSwgU3RyaW5nLnN1YiBzIChqKzEpIChTdHJpbmcubGVuZ3RoIHMgLSAoaisxKSlcbiAgaW5cbiAgbGV0IHJlYyByY3V0X29uX2NoYXJfZnJvbSBzIGkgYyA9XG4gICAgbWF0Y2ggU3RyaW5nLnJpbmRleF9mcm9tIHMgaSBjIHdpdGhcbiAgICB8IDAgLT4gXCJcIiwgU3RyaW5nLnN1YiBzIDEgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gICAgfCBqIC0+IFN0cmluZy5zdWIgcyAwIGosIFN0cmluZy5zdWIgcyAoaisxKSAoU3RyaW5nLmxlbmd0aCBzIC0gKGorMSkpXG4gIGluXG4gIGxldCBfLCBwID0gY3V0X29uX2NoYXJfZnJvbSBodG1sIDAgJz4nIGluXG4gIGxldCByLCBfID0gcmN1dF9vbl9jaGFyX2Zyb20gcCAoU3RyaW5nLmxlbmd0aCBwIC0gMSkgJzwnIGluXG4gIHJcblxuXG5sZXQgaHRtbF92b2lkX2VsZW1lbnRzID0gU3RyaW5nU2V0Lm9mX2xpc3QgW1xuICBcImltZ1wiO1xuICBcImlucHV0XCI7XG4gIFwibGlua1wiO1xuICBcIm1ldGFcIjtcbiAgXCJiclwiO1xuICBcImhyXCI7XG4gIFwic291cmNlXCI7XG4gIFwid2JyXCI7XG4gIFwicGFyYW1cIjtcbiAgXCJlbWJlZFwiO1xuICBcImJhc2VcIjtcbiAgXCJhcmVhXCI7XG4gIFwiY29sXCI7XG4gIFwidHJhY2tcIjtcbiAgXCJrZXlnZW5cIjtcbl1cblxubGV0ICggQCApIGwxIGwyID1cbiAgTGlzdC5yZXZfYXBwZW5kIChMaXN0LnJldiBsMSkgbDJcbiIsIm9wZW4gT21kX3V0aWxzXG5vcGVuIFByaW50ZlxuXG4oKiogcmVmZXJlbmNlcywgaW5zdGFuY2VzIGNyZWF0ZWQgaW4gW09tZF9wYXJzZXIubWFpbl9wYXJzZV0gYW5kXG4gICAgYWNjZXNzZWQgaW4gdGhlIFtPbWRfYmFja2VuZF0gbW9kdWxlLiAqKVxubW9kdWxlIFIgPSBNYXAuTWFrZShTdHJpbmcpXG5jbGFzcyByZWZfY29udGFpbmVyIDogb2JqZWN0XG4gICAgdmFsIG11dGFibGUgYyA6IChzdHJpbmcgKiBzdHJpbmcpIFIudFxuICAgIG1ldGhvZCBhZGRfcmVmIDogUi5rZXkgLT4gc3RyaW5nIC0+IHN0cmluZyAtPiB1bml0XG4gICAgbWV0aG9kIGdldF9yZWYgOiBSLmtleSAtPiAoc3RyaW5nICogc3RyaW5nKSBvcHRpb25cbiAgICBtZXRob2QgZ2V0X2FsbCA6IChzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nKSkgbGlzdFxuICBlbmQgPSBvYmplY3RcbiAgdmFsIG11dGFibGUgYyA9IFIuZW1wdHlcbiAgdmFsIG11dGFibGUgYzIgPSBSLmVtcHR5XG5cbiAgbWV0aG9kIGdldF9hbGwgPSBSLmJpbmRpbmdzIGNcblxuICBtZXRob2QgYWRkX3JlZiBuYW1lIHRpdGxlIHVybCA9XG4gICAgYyA8LSBSLmFkZCBuYW1lICh1cmwsIHRpdGxlKSBjO1xuICAgIGxldCBsbiA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgbmFtZSBpblxuICAgIGlmIGxuIDw+IG5hbWUgdGhlbiBjMiA8LSBSLmFkZCBsbiAodXJsLCB0aXRsZSkgYzJcblxuICBtZXRob2QgZ2V0X3JlZiBuYW1lID1cbiAgICB0cnlcbiAgICAgIGxldCAodXJsLCB0aXRsZSkgYXMgciA9XG4gICAgICAgIHRyeSBSLmZpbmQgbmFtZSBjXG4gICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgbGV0IGxuID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBuYW1lIGluXG4gICAgICAgICAgdHJ5IFIuZmluZCBsbiBjXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFIuZmluZCBsbiBjMlxuICAgICAgaW4gU29tZSByXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIE5vbmVcbmVuZFxuXG50eXBlIGVsZW1lbnQgPVxuICB8IEgxIG9mIHRcbiAgfCBIMiBvZiB0XG4gIHwgSDMgb2YgdFxuICB8IEg0IG9mIHRcbiAgfCBINSBvZiB0XG4gIHwgSDYgb2YgdFxuICB8IFBhcmFncmFwaCBvZiB0XG4gIHwgVGV4dCBvZiBzdHJpbmdcbiAgfCBFbXBoIG9mIHRcbiAgfCBCb2xkIG9mIHRcbiAgfCBVbCBvZiB0IGxpc3RcbiAgfCBPbCBvZiB0IGxpc3RcbiAgfCBVbHAgb2YgdCBsaXN0XG4gIHwgT2xwIG9mIHQgbGlzdFxuICB8IENvZGUgb2YgbmFtZSAqIHN0cmluZ1xuICB8IENvZGVfYmxvY2sgb2YgbmFtZSAqIHN0cmluZ1xuICB8IEJyXG4gIHwgSHJcbiAgfCBOTFxuICB8IFVybCBvZiBocmVmICogdCAqIHRpdGxlXG4gIHwgUmVmIG9mIHJlZl9jb250YWluZXIgKiBuYW1lICogc3RyaW5nICogZmFsbGJhY2tcbiAgfCBJbWdfcmVmIG9mIHJlZl9jb250YWluZXIgKiBuYW1lICogYWx0ICogZmFsbGJhY2tcbiAgfCBIdG1sIG9mIG5hbWUgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIHRcbiAgfCBIdG1sX2Jsb2NrIG9mIG5hbWUgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIHRcbiAgfCBIdG1sX2NvbW1lbnQgb2Ygc3RyaW5nXG4gIHwgUmF3IG9mIHN0cmluZ1xuICB8IFJhd19ibG9jayBvZiBzdHJpbmdcbiAgfCBCbG9ja3F1b3RlIG9mIHRcbiAgfCBJbWcgb2YgYWx0ICogc3JjICogdGl0bGVcbiAgfCBYIG9mXG4gICAgICA8IG5hbWUgOiBzdHJpbmc7XG4gICAgICAgIHRvX2h0bWwgOiA/aW5kZW50OmludCAtPiAodCAtPiBzdHJpbmcpIC0+IHQgLT4gc3RyaW5nIG9wdGlvbjtcbiAgICAgICAgdG9fc2V4cHIgOiAodCAtPiBzdHJpbmcpIC0+IHQgLT4gc3RyaW5nIG9wdGlvbjtcbiAgICAgICAgdG9fdCA6IHQgLT4gdCBvcHRpb24gPlxuYW5kIGZhbGxiYWNrID0gPCB0b19zdHJpbmcgOiBzdHJpbmcgOyB0b190IDogdCA+XG5hbmQgbmFtZSA9IHN0cmluZ1xuYW5kIGFsdCA9IHN0cmluZ1xuYW5kIHNyYyA9IHN0cmluZ1xuYW5kIGhyZWYgPSBzdHJpbmdcbmFuZCB0aXRsZSA9IHN0cmluZ1xuYW5kIHQgPSBlbGVtZW50IGxpc3RcblxuXG5sZXQgcmVjIGxvb3NlX2NvbXBhcmUgdDEgdDIgPSBtYXRjaCB0MSx0MiB3aXRoXG4gIHwgSDEgZTE6OnRsMSwgSDEgZTI6OnRsMlxuICB8IEgyIGUxOjp0bDEsIEgyIGUyOjp0bDJcbiAgfCBIMyBlMTo6dGwxLCBIMyBlMjo6dGwyXG4gIHwgSDQgZTE6OnRsMSwgSDQgZTI6OnRsMlxuICB8IEg1IGUxOjp0bDEsIEg1IGUyOjp0bDJcbiAgfCBINiBlMTo6dGwxLCBINiBlMjo6dGwyXG4gIHwgRW1waCBlMTo6dGwxLCBFbXBoIGUyOjp0bDJcbiAgfCBCb2xkIGUxOjp0bDEsIEJvbGQgZTI6OnRsMlxuICB8IEJsb2NrcXVvdGUgZTE6OnRsMSwgQmxvY2txdW90ZSBlMjo6dGwyXG4gIHwgUGFyYWdyYXBoIGUxOjp0bDEsIFBhcmFncmFwaCBlMjo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGxvb3NlX2NvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBVbCBlMTo6dGwxLCBVbCBlMjo6dGwyXG4gIHwgT2wgZTE6OnRsMSwgT2wgZTI6OnRsMlxuICB8IFVscCBlMTo6dGwxLCBVbHAgZTI6OnRsMlxuICB8IE9scCBlMTo6dGwxLCBPbHAgZTI6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBsb29zZV9jb21wYXJlX2xpc3RzIGUxIGUyIHdpdGhcbiAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgIHwgaSAtPiBpKVxuXG4gIHwgKENvZGUgXyBhcyBlMSk6OnRsMSwgKENvZGUgXyBhcyBlMik6OnRsMlxuICB8IChCciBhcyBlMSk6OnRsMSwgKEJyIGFzIGUyKTo6dGwyXG4gIHwgKEhyIGFzIGUxKTo6dGwxLCAoSHIgYXMgZTIpOjp0bDJcbiAgfCAoTkwgYXMgZTEpOjp0bDEsIChOTCBhcyBlMik6OnRsMlxuICB8IChIdG1sIF8gYXMgZTEpOjp0bDEsIChIdG1sIF8gYXMgZTIpOjp0bDJcbiAgfCAoSHRtbF9ibG9jayBfIGFzIGUxKTo6dGwxLCAoSHRtbF9ibG9jayBfIGFzIGUyKTo6dGwyXG4gIHwgKFJhdyBfIGFzIGUxKTo6dGwxLCAoUmF3IF8gYXMgZTIpOjp0bDJcbiAgfCAoUmF3X2Jsb2NrIF8gYXMgZTEpOjp0bDEsIChSYXdfYmxvY2sgXyBhcyBlMik6OnRsMlxuICB8IChIdG1sX2NvbW1lbnQgXyBhcyBlMSk6OnRsMSwgKEh0bWxfY29tbWVudCBfIGFzIGUyKTo6dGwyXG4gIHwgKEltZyBfIGFzIGUxKTo6dGwxLCAoSW1nIF8gYXMgZTIpOjp0bDJcbiAgfCAoVGV4dCBfIGFzIGUxKTo6dGwxLCAoVGV4dCBfIGFzIGUyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgZTEgZTIgd2l0aFxuICAgICAgICAgfCAwIC0+IGxvb3NlX2NvbXBhcmUgdGwxIHRsMlxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBDb2RlX2Jsb2NrKGwxLGMxKTo6dGwxLCBDb2RlX2Jsb2NrKGwyLGMyKTo6dGwyXG4gICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgbDEgbDIsIFN0cmluZy5sZW5ndGggYzEgLSBTdHJpbmcubGVuZ3RoIGMyIHdpdGhcbiAgICAgICAgIHwgMCwgMCAtPlxuICAgICAgICAgICAgIChtYXRjaCBjb21wYXJlIGMxIGMyIHdpdGhcbiAgICAgICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlIHRsMSB0bDJcbiAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCAwLCAxIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgYzEgKGMyXlwiXFxuXCIpIHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IDAsIC0xIC0+XG4gICAgICAgICAgICAgKG1hdGNoIGNvbXBhcmUgKGMxXlwiXFxuXCIpIGMyIHdpdGhcbiAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGksIF8gLT4gaVxuICAgICAgKVxuXG4gIHwgVXJsIChocmVmMSwgdDEsIHRpdGxlMSk6OnRsMSwgVXJsIChocmVmMiwgdDIsIHRpdGxlMik6OnRsMlxuICAgICAgLT5cbiAgICAgIChtYXRjaCBjb21wYXJlIGhyZWYxIGhyZWYyIHdpdGhcbiAgICAgICAgIHwgMCAtPiAobWF0Y2ggbG9vc2VfY29tcGFyZSB0MSB0MiB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCAwIC0+IChtYXRjaCBjb21wYXJlIHRpdGxlMSB0aXRsZTIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgICAgICAgICAgIHwgaSAtPiBpKVxuICAgICAgICAgfCBpIC0+IGkpXG5cbiAgfCBSZWYgKHJlZl9jb250YWluZXIxLCBuYW1lMSwgeDEsIGZhbGxiYWNrMSk6OnRsMSxcbiAgICAgICAgUmVmIChyZWZfY29udGFpbmVyMiwgbmFtZTIsIHgyLCBmYWxsYmFjazIpOjp0bDJcbiAgfCBJbWdfcmVmIChyZWZfY29udGFpbmVyMSwgbmFtZTEsIHgxLCBmYWxsYmFjazEpOjp0bDEsXG4gICAgICAgIEltZ19yZWYgKHJlZl9jb250YWluZXIyLCBuYW1lMiwgeDIsIGZhbGxiYWNrMik6OnRsMlxuICAgICAgICAtPlxuICAgICAgKG1hdGNoIGNvbXBhcmUgKG5hbWUxLCB4MSkgKG5hbWUyLCB4Mikgd2l0aFxuICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgbGV0IGNmZiA9XG4gICAgICAgICAgICAgICBpZiBmYWxsYmFjazEjdG9fc3RyaW5nID0gZmFsbGJhY2syI3RvX3N0cmluZyB0aGVuXG4gICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9vc2VfY29tcGFyZSAoZmFsbGJhY2sxI3RvX3QpIChmYWxsYmFjazIjdG9fdClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgaWYgY2ZmID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgY29tcGFyZSAocmVmX2NvbnRhaW5lcjEjZ2V0X2FsbCkgKHJlZl9jb250YWluZXIyI2dldF9hbGwpXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgY2ZmXG4gICAgICAgICB8IGkgLT4gaSlcblxuICB8IFggZTE6OnRsMSwgWCBlMjo6dGwyIC0+XG4gICAgICAobWF0Y2ggY29tcGFyZSAoZTEjbmFtZSkgKGUyI25hbWUpIHdpdGhcbiAgICAgICAgIHwgMCAtPiAobWF0Y2ggY29tcGFyZSAoZTEjdG9fdCkgKGUyI3RvX3QpIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IDAgLT4gbG9vc2VfY29tcGFyZSB0bDEgdGwyXG4gICAgICAgICAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgICAgICB8IGkgLT4gaSlcbiAgfCBYIF86Ol8sIF8gLT4gMVxuICB8IF8sIFggXzo6XyAtPiAtMVxuICB8IF8gLT4gY29tcGFyZSB0MSB0MlxuXG5hbmQgbG9vc2VfY29tcGFyZV9saXN0cyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgW10gLT4gMFxuICAgIHwgZTE6OnRsMSwgZTI6OnRsMiAtPlxuICAgICAgICAobWF0Y2ggbG9vc2VfY29tcGFyZSBlMSBlMiB3aXRoXG4gICAgICAgICAgIHwgMCAtPiBsb29zZV9jb21wYXJlX2xpc3RzIHRsMSB0bDJcbiAgICAgICAgICAgfCBpIC0+IGkpXG4gICAgfCBfLCBbXSAtPiAxXG4gICAgfCBfIC0+IC0xXG5cblxudHlwZSB0b2sgPSAoKiBDcyhuKSBtZWFucyAobisyKSB0aW1lcyBDICopXG58IEFtcGVyc2FuZFxufCBBbXBlcnNhbmRzIG9mIGludFxufCBBdFxufCBBdHMgb2YgaW50XG58IEJhY2txdW90ZVxufCBCYWNrcXVvdGVzIG9mIGludFxufCBCYWNrc2xhc2hcbnwgQmFja3NsYXNocyBvZiBpbnRcbnwgQmFyXG58IEJhcnMgb2YgaW50XG58IENhcmV0XG58IENhcmV0cyBvZiBpbnRcbnwgQ2JyYWNlXG58IENicmFjZXMgb2YgaW50XG58IENvbG9uXG58IENvbG9ucyBvZiBpbnRcbnwgQ29tbWFcbnwgQ29tbWFzIG9mIGludFxufCBDcGFyZW50aGVzaXNcbnwgQ3BhcmVudGhlc2lzcyBvZiBpbnRcbnwgQ2JyYWNrZXRcbnwgQ2JyYWNrZXRzIG9mIGludFxufCBEb2xsYXJcbnwgRG9sbGFycyBvZiBpbnRcbnwgRG90XG58IERvdHMgb2YgaW50XG58IERvdWJsZXF1b3RlXG58IERvdWJsZXF1b3RlcyBvZiBpbnRcbnwgRXhjbGFtYXRpb25cbnwgRXhjbGFtYXRpb25zIG9mIGludFxufCBFcXVhbFxufCBFcXVhbHMgb2YgaW50XG58IEdyZWF0ZXJ0aGFuXG58IEdyZWF0ZXJ0aGFucyBvZiBpbnRcbnwgSGFzaFxufCBIYXNocyBvZiBpbnRcbnwgTGVzc3RoYW5cbnwgTGVzc3RoYW5zIG9mIGludFxufCBNaW51c1xufCBNaW51c3Mgb2YgaW50XG58IE5ld2xpbmVcbnwgTmV3bGluZXMgb2YgaW50XG58IE51bWJlciBvZiBzdHJpbmdcbnwgT2JyYWNlXG58IE9icmFjZXMgb2YgaW50XG58IE9wYXJlbnRoZXNpc1xufCBPcGFyZW50aGVzaXNzIG9mIGludFxufCBPYnJhY2tldFxufCBPYnJhY2tldHMgb2YgaW50XG58IFBlcmNlbnRcbnwgUGVyY2VudHMgb2YgaW50XG58IFBsdXNcbnwgUGx1c3Mgb2YgaW50XG58IFF1ZXN0aW9uXG58IFF1ZXN0aW9ucyBvZiBpbnRcbnwgUXVvdGVcbnwgUXVvdGVzIG9mIGludFxufCBTZW1pY29sb25cbnwgU2VtaWNvbG9ucyBvZiBpbnRcbnwgU2xhc2hcbnwgU2xhc2hzIG9mIGludFxufCBTcGFjZVxufCBTcGFjZXMgb2YgaW50XG58IFN0YXJcbnwgU3RhcnMgb2YgaW50XG58IFRhYlxufCBUYWJzIG9mIGludFxufCBUaWxkZVxufCBUaWxkZXMgb2YgaW50XG58IFVuZGVyc2NvcmVcbnwgVW5kZXJzY29yZXMgb2YgaW50XG58IFdvcmQgb2Ygc3RyaW5nXG58IFRhZyBvZiBuYW1lICogZXh0ZW5zaW9uXG5cbmFuZCBleHRlbnNpb24gPSA8XG4gIHBhcnNlcl9leHRlbnNpb24gOlxuICAgIHQgLT4gdG9rIGxpc3QgLT4gdG9rIGxpc3QgLT4gKCh0ICogdG9rIGxpc3QgKiB0b2sgbGlzdCkgb3B0aW9uKTtcbiAgdG9fc3RyaW5nIDogc3RyaW5nXG4+XG5cbnR5cGUgZXh0ZW5zaW9ucyA9IGV4dGVuc2lvbiBsaXN0XG5cbmxldCBlbXB0eV9leHRlbnNpb24gPSBvYmplY3RcbiAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPSBOb25lXG4gIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG5lbmRcblxubGV0IHJlYyBub3JtYWxpc2VfbWQgbCA9XG4gIGlmIGRlYnVnIHRoZW5cbiAgICBlcHJpbnRmIFwiKE9NRCkgbm9ybWFsaXNlX21kXFxuJSFcIjtcbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFtOTDtOTDtOTDtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7Tkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MO05MO05MO05MO11cbiAgICB8IFtOTDtOTDtOTDtOTDtdXG4gICAgfCBbTkw7Tkw7Tkw7XVxuICAgIHwgW05MO05MXVxuICAgIHwgW05MXSAtPiBbXVxuICAgIHwgW10gLT4gW11cbiAgICB8IE5MOjpOTDo6Tkw6OnRsIC0+IGxvb3AgKE5MOjpOTDo6dGwpXG4gICAgfCBUZXh0IHQxOjpUZXh0IHQyOjp0bCAtPiBsb29wIChUZXh0KHQxXnQyKTo6dGwpXG4gICAgfCBOTDo6KCgoUGFyYWdyYXBoIF98SDEgX3xIMiBffEgzIF98SDQgX3xINSBffEg2IF9cbiAgICAgICAgICAgIHxDb2RlX2Jsb2NrIF98T2wgX3xVbCBffE9scCBffFVscCBfKTo6XykgYXMgdGwpIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaFtUZXh0IFwiIFwiXTo6dGwgLT4gbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoW106OnRsIC0+IGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaChwKTo6dGwgLT4gUGFyYWdyYXBoKGxvb3AgcCk6Omxvb3AgdGxcbiAgICB8IEgxIHY6OnRsIC0+IEgxKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEgyIHY6OnRsIC0+IEgyKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEgzIHY6OnRsIC0+IEgzKGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg0IHY6OnRsIC0+IEg0KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg1IHY6OnRsIC0+IEg1KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEg2IHY6OnRsIC0+IEg2KGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEVtcGggdjo6dGwgLT4gRW1waChsb29wIHYpOjpsb29wIHRsXG4gICAgfCBCb2xkIHY6OnRsIC0+IEJvbGQobG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVWwgdjo6dGwgLT4gVWwoTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgT2wgdjo6dGwgLT4gT2woTGlzdC5tYXAgbG9vcCB2KTo6bG9vcCB0bFxuICAgIHwgVWxwIHY6OnRsIC0+IFVscChMaXN0Lm1hcCBsb29wIHYpOjpsb29wIHRsXG4gICAgfCBPbHAgdjo6dGwgLT4gT2xwKExpc3QubWFwIGxvb3Agdik6Omxvb3AgdGxcbiAgICB8IEJsb2NrcXVvdGUgdjo6dGwgLT4gQmxvY2txdW90ZShsb29wIHYpOjpsb29wIHRsXG4gICAgfCBVcmwoaHJlZix2LHRpdGxlKTo6dGwgLT4gVXJsKGhyZWYsKGxvb3AgdiksdGl0bGUpOjpsb29wIHRsXG4gICAgfCBUZXh0IF9cbiAgICB8IENvZGUgX1xuICAgIHwgQ29kZV9ibG9jayBfXG4gICAgfCBCclxuICAgIHwgSHJcbiAgICB8IE5MXG4gICAgfCBSZWYgX1xuICAgIHwgSW1nX3JlZiBfXG4gICAgfCBIdG1sIF9cbiAgICB8IEh0bWxfYmxvY2sgX1xuICAgIHwgSHRtbF9jb21tZW50IF9cbiAgICB8IFJhdyBfXG4gICAgfCBSYXdfYmxvY2sgX1xuICAgIHwgSW1nIF9cbiAgICB8IFggXyBhcyB2Ojp0bCAtPiB2Ojpsb29wIHRsXG4gIGluXG4gIGxldCBhID0gbG9vcCBsIGluXG4gIGxldCBiID0gbG9vcCBhIGluXG4gIGlmIGEgPSBiIHRoZW5cbiAgICBhXG4gIGVsc2VcbiAgICBub3JtYWxpc2VfbWQgYlxuXG5cblxubGV0IGR1bW15X1ggPVxuICBYIChvYmplY3RcbiAgICBtZXRob2QgbmFtZSA9IFwiZHVtbXlcIlxuICAgIG1ldGhvZCB0b19odG1sID8oaW5kZW50PTApIF8gXyA9IE5vbmVcbiAgICBtZXRob2QgdG9fc2V4cHIgXyBfID0gTm9uZVxuICAgIG1ldGhvZCB0b190IF8gPSBOb25lXG4gIGVuZClcblxuXG5sZXQgcmVjIHZpc2l0IGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFtdXG4gIHwgUGFyYWdyYXBoIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IFBhcmFncmFwaCh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDEgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgxKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBIMiB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDIodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEgzIHYgYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEgzKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBINCB2IGFzIGU6OnRsIC0+IFxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gSDQodmlzaXQgZiB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEg1IHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBINSh2aXNpdCBmIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSDYgdiBhcyBlOjp0bCAtPiBcbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IEg2KHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBFbXBoIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBFbXBoKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBCb2xkIHYgYXMgZTo6dGwgLT4gXG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCb2xkKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVbCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBVbChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBPbCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBPbChMaXN0Lm1hcCAodmlzaXQgZikgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVbHAgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVWxwKExpc3QubWFwICh2aXNpdCBmKSB2KTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE9scCB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBPbHAoTGlzdC5tYXAgKHZpc2l0IGYpIHYpOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgQmxvY2txdW90ZSB2IGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCbG9ja3F1b3RlKHZpc2l0IGYgdik6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBVcmwoaHJlZix2LHRpdGxlKSBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gVXJsKGhyZWYsdmlzaXQgZiB2LHRpdGxlKTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFRleHQgdiBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IENvZGUgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IENvZGVfYmxvY2sgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJlZiBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSW1nX3JlZiBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbCBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbF9ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSHRtbF9jb21tZW50IF8gYXMgZTo6dGwgLT5cbiAgICBiZWdpbiBtYXRjaCBmIGUgd2l0aFxuICAgICAgfCBTb21lKGwpIC0+IGxAdmlzaXQgZiB0bFxuICAgICAgfCBOb25lIC0+IGU6OnZpc2l0IGYgdGxcbiAgICBlbmRcbiAgfCBSYXcgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IFJhd19ibG9jayBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgSW1nICBfIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBlOjp2aXNpdCBmIHRsXG4gICAgZW5kXG4gIHwgWCAgXyBhcyBlOjp0bCAtPlxuICAgIGJlZ2luIG1hdGNoIGYgZSB3aXRoXG4gICAgICB8IFNvbWUobCkgLT4gbEB2aXNpdCBmIHRsXG4gICAgICB8IE5vbmUgLT4gZTo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEJyIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBCcjo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IEhyIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBIcjo6dmlzaXQgZiB0bFxuICAgIGVuZFxuICB8IE5MIGFzIGU6OnRsIC0+XG4gICAgYmVnaW4gbWF0Y2ggZiBlIHdpdGhcbiAgICAgIHwgU29tZShsKSAtPiBsQHZpc2l0IGYgdGxcbiAgICAgIHwgTm9uZSAtPiBOTDo6dmlzaXQgZiB0bFxuICAgIGVuZFxuXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjb2RlX3N0eWxpc3QgPSBsYW5nOnN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nXG5cbm9wZW4gUHJpbnRmXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxub3BlbiBPbWRfdXRpbHNcblxubGV0IGRlZmF1bHRfbGFuZ3VhZ2UgPSByZWYgXCJcIlxuXG5cblxubGV0IHRleHRfb2ZfbWQgbWQgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBYIF8gOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQmxvY2txdW90ZSBxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgcTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIG5hbWUpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgbmFtZSk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFBhcmFncmFwaCBtZCA6OiB0bCAtPlxuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBUZXh0IHQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDp0cnVlIHQpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXcgdCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhd19ibG9jayB0IDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBFbXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEJvbGQgbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgKFVsIGwgfCBPbCBsKSA6OiB0bCAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBpdGVtIC0+IGxvb3AgaXRlbTsgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbicpIGw7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IChVbHAgbCB8IE9scCBsKSA6OiB0bCAtPlxuICAgICAgICBMaXN0Lml0ZXIgbG9vcCBsO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYyk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGUobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbGVudGl0aWVzIH5tZDpmYWxzZSBjKTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHIgOjogdGwgLT5cbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgICBsb29wIGJvZHk7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfY29tbWVudCBzIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBsb29wIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgxIG1kIDo6IHRsXG4gICAgfCBIMiBtZCA6OiB0bFxuICAgIHwgSDMgbWQgOjogdGxcbiAgICB8IEg0IG1kIDo6IHRsXG4gICAgfCBINSBtZCA6OiB0bFxuICAgIHwgSDYgbWQgOjogdGwgLT5cbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgTkwgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgbWQ7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IGRlZmF1bHRfY29kZV9zdHlsaXN0IH5sYW5nIGNvZGUgPSBjb2RlXG5cbmxldCBmaWx0ZXJfdGV4dF9vbWRfcmV2IGwgPVxuICBsZXQgcmVjIGxvb3AgYiByID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGlmIGIgdGhlbiByIGVsc2UgbFxuICAgIHwgKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIik6OnRsIC0+XG4gICAgICBsb29wIHRydWUgciB0bFxuICAgIHwgZTo6dGwgLT5cbiAgICAgIGxvb3AgYiAoZTo6cikgdGxcbiAgaW5cbiAgbG9vcCBmYWxzZSBbXSBsXG5cbmxldCByZW1vdmVfbGlua3MgOiB0IC0+IHQgPVxuICBPbWRfcmVwcmVzZW50YXRpb24udmlzaXRcbiAgICAoZnVuIGUgLT5cbiAgICAgbWF0Y2ggZSB3aXRoXG4gICAgICB8IFVybChfLCB0LCBfKSAtPiBTb21lIHRcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgKVxuXG5sZXQgcmVjIGh0bWxfYW5kX2hlYWRlcnNfb2ZfbWRcbiAgICA/KHJlbW92ZV9oZWFkZXJfbGlua3M9ZmFsc2UpXG4gICAgPyhvdmVycmlkZT0oZnVuIChlOmVsZW1lbnQpIC0+IChOb25lOnN0cmluZyBvcHRpb24pKSlcbiAgICA/KHBpbmRlbnQ9ZmFsc2UpXG4gICAgPyhubDJicj1mYWxzZSlcbiAgICA/Y3M6KGNvZGVfc3R5bGU9ZGVmYXVsdF9jb2RlX3N0eWxpc3QpXG4gICAgbWRcbiAgPVxuICBsZXQgaWRzID0gb2JqZWN0KHRoaXMpXG4gICAgdmFsIG11dGFibGUgaWRzID0gU3RyaW5nU2V0LmFkZCBcIlwiIFN0cmluZ1NldC5lbXB0eVxuICAgIG1ldGhvZCBtYW5nbGUgaWQgPVxuICAgICAgbGV0IHJlYyBtIGkgPVxuICAgICAgICBpZiBTdHJpbmdTZXQubWVtIGlkIGlkcyB0aGVuXG4gICAgICAgICAgbGV0IGlkeCA9IGlmIGkgPiAwIHRoZW4gaWReXCJfXCJec3RyaW5nX29mX2ludCBpIGVsc2UgaWQgaW5cbiAgICAgICAgICBpZiBTdHJpbmdTZXQubWVtIGlkeCBpZHMgdGhlblxuICAgICAgICAgICAgbSAoaSsxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChpZHMgPC0gU3RyaW5nU2V0LmFkZCBpZHggaWRzO1xuICAgICAgICAgICAgIGlkeClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChpZHMgPC0gU3RyaW5nU2V0LmFkZCBpZCBpZHM7XG4gICAgICAgICAgIGlkKVxuICAgICAgaW4gbSAwXG4gIGVuZCBpblxuICBsZXQgZW1wdHkgcyA9XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA8IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICcgfCAnXFxuJyAtPiBsb29wIChpKzEpXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICB0cnVlXG4gICAgaW5cbiAgICBsb29wIDBcbiAgaW5cbiAgbGV0IHJlbW92ZV90cmFpbGluZ19ibGFua3MgcyA9XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA8IDAgdGhlbiBcIlwiXG4gICAgICBlbHNlXG4gICAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgfCAnICd8J1xcdCd8J1xcbicgLT5cbiAgICAgICAgICBsb29wIChwcmVkIGkpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIGlmIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIHRoZW5cbiAgICAgICAgICAgIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBTdHJpbmcuc3ViIHMgMCAoaSsxKVxuICAgIGluIGxvb3AgKFN0cmluZy5sZW5ndGggcyAtIDEpXG4gIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgaGVhZGVycyA9IHJlZiBbXSBpblxuICBsZXQgcmVjIGxvb3AgaW5kZW50ID0gZnVuY3Rpb25cbiAgICB8IFggeCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKG1hdGNoIHgjdG9fdCBtZCB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0IC0+IGxvb3AgaW5kZW50IHRcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6aW5kZW50XG4gICAgICAgICAgICAgICAoaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlKSBtZFxuICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJsb2NrcXVvdGUgcSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxibG9ja3F1b3RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHE7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvYmxvY2txdW90ZT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSZWYocmMsIG5hbWUsIHRleHQsIGZhbGxiYWNrKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggcmMjZ2V0X3JlZiBuYW1lIHdpdGhcbiAgICAgICAgICAgIHwgU29tZShocmVmLCB0aXRsZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnRcbiAgICAgICAgICAgICAgICAoVXJsKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBocmVmLFxuICAgICAgICAgICAgICAgICAgICAgW1RleHQodGV4dCldLFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKVxuICAgICAgICAgICAgICAgICA6OnRsKVxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IChmYWxsYmFjayN0b190KTtcbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgICBlbmRcbiAgICAgIGVuZFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBmYWxsYmFjaykgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHJjI2dldF9yZWYgbmFtZSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUoc3JjLCB0aXRsZSkgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnRcbiAgICAgICAgICAgICAgICAoSW1nKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQsXG4gICAgICAgICAgICAgICAgICAgICBodG1sZW50aXRpZXMgfm1kOnRydWUgc3JjLFxuICAgICAgICAgICAgICAgICAgICAgaHRtbGVudGl0aWVzIH5tZDp0cnVlIHRpdGxlKTo6dGwpXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbG9vcCBpbmRlbnQgKGZhbGxiYWNrI3RvX3QpO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG4gICAgfCBQYXJhZ3JhcGggW10gOjogdGwgLT4gbG9vcCBpbmRlbnQgdGxcbiAgICB8IFBhcmFncmFwaCBtZCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKGxldCBzID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgIGlmIGVtcHR5IHMgdGhlblxuICAgICAgICAgICAgICgpXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxwPlwiO1xuICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAocmVtb3ZlX3RyYWlsaW5nX2JsYW5rcyBzKTtcbiAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L3A+XFxuXCI7XG4gICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxpbWcgc3JjPSdcIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOnRydWUgc3JjKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJyBhbHQ9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBhbHQpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInIFwiO1xuICAgICAgICAgIGlmIHRpdGxlIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgKEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgdGl0bGU9J1wiO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIicgXCIpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIvPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFRleHQgdCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogQnVmZmVyLmFkZF9zdHJpbmcgYiB0OyAqKVxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0KTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBFbXBoIG1kIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGVtPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IG1kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2VtPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJvbGQgbWQgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8c3Ryb25nPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IG1kO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L3N0cm9uZz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoVWwgbHxPbCBsfFVscCBsfE9scCBsIGFzIGUpIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAobWF0Y2ggZSB3aXRoXG4gICAgICAgICAgICAgIHwgT2wgX3xPbHAgXyAtPiBcIjxvbD5cIlxuICAgICAgICAgICAgICB8IF8gLT4gXCI8dWw+XCIpO1xuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBmdW4gbGkgLT5cbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGxpPlwiO1xuICAgICAgICAgICAgICAgIGxvb3AgKGluZGVudCsyKSBsaTtcbiAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9saT5cIlxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgbDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChtYXRjaCBlIHdpdGhcbiAgICAgICAgICAgICAgfCBPbCBffE9scCBfIC0+IFwiPC9vbD5cIlxuICAgICAgICAgICAgICB8IF8gLT4gXCI8L3VsPlwiKTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBsYW5nID0gXCJcIiAmJiAhZGVmYXVsdF9sYW5ndWFnZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxwcmU+PGNvZGU+XCJcbiAgICAgICAgICBlbHNlIGlmIGxhbmcgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxwcmUgY2xhc3M9JyVzJz48Y29kZSBjbGFzcz0nJXMnPlwiXG4gICAgICAgICAgICAgICFkZWZhdWx0X2xhbmd1YWdlICFkZWZhdWx0X2xhbmd1YWdlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPHByZSBjbGFzcz0nJXMnPjxjb2RlIGNsYXNzPSclcyc+XCIgbGFuZyBsYW5nO1xuICAgICAgICAgIGxldCBuZXdfYyA9IGNvZGVfc3R5bGUgfmxhbmc6bGFuZyBjIGluXG4gICAgICAgICAgaWYgYyA9IG5ld19jIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6ZmFsc2UgYylcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIG5ld19jO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8L2NvZGU+PC9wcmU+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgQ29kZShsYW5nLCBjKSBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbGFuZyA9IFwiXCIgJiYgIWRlZmF1bHRfbGFuZ3VhZ2UgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8Y29kZT5cIlxuICAgICAgICAgIGVsc2UgaWYgbGFuZyA9IFwiXCIgdGhlblxuICAgICAgICAgICAgYnByaW50ZiBiIFwiPGNvZGUgY2xhc3M9JyVzJz5cIiAhZGVmYXVsdF9sYW5ndWFnZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJwcmludGYgYiBcIjxjb2RlIGNsYXNzPSclcyc+XCIgbGFuZztcbiAgICAgICAgICBsZXQgbmV3X2MgPSBjb2RlX3N0eWxlIH5sYW5nOmxhbmcgYyBpblxuICAgICAgICAgIGlmIGMgPSBuZXdfYyB0aGVuXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChodG1sZW50aXRpZXMgfm1kOmZhbHNlIGMpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBuZXdfYztcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9jb2RlPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEJyIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPGJyLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIciBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxoci8+XCI7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgUmF3IHMgYXMgZSA6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggb3ZlcnJpZGUgZSB3aXRoXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBSYXdfYmxvY2sgcyBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBzO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIFtdKSBhcyBlIDo6IHRsXG4gICAgICB3aGVuIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgIGxldCBhdHRycyA9IGZpbHRlcl90ZXh0X29tZF9yZXYgYXR0cnMgaW5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgLz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSBhcyBlIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IGJvZHk7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwvJXM+XCIgdGFnbmFtZTtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBIdG1sX2Jsb2NrKHRhZ25hbWUsIGF0dHJzLCBib2R5KSBhcyBlIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cnMgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgYm9keSA9IFtdICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBodG1sX3ZvaWRfZWxlbWVudHMgdGhlblxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiAvPlwiO1xuICAgICAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICAgICAgKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIjwlc1wiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IGJvZHk7XG4gICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8LyVzPlwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICAgICAgICApXG4gICAgICBlbmRcbiAgICB8IEh0bWxfY29tbWVudCBzIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgIGVuZFxuICAgIHwgVXJsIChocmVmLHMsdGl0bGUpIGFzIGUgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIG92ZXJyaWRlIGUgd2l0aFxuICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcyA9IGh0bWxfb2ZfbWQgfm92ZXJyaWRlIH5waW5kZW50IH5ubDJiciB+Y3M6Y29kZV9zdHlsZSBzIGluXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxhIGhyZWY9J1wiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSBocmVmKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiJ1wiO1xuICAgICAgICAgIGlmIHRpdGxlIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiB0aXRsZT0nXCI7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxlbnRpdGllcyB+bWQ6dHJ1ZSB0aXRsZSk7XG4gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCInXCI7XG4gICAgICAgICAgICBlbmQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIj5cIjtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjwvYT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDEgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDEgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDEgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDIgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDIgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDIgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDMgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDMgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDMgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oMz5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDQgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDQgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDQgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oND5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDUgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDUgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDUgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oNT5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCAoSDYgbWQgYXMgZSkgOjogdGwgLT5cbiAgICAgIGxldCBlLCBtZCA9XG4gICAgICAgIGlmIG5vdCByZW1vdmVfaGVhZGVyX2xpbmtzIHRoZW5cbiAgICAgICAgICBlLCBtZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG1kID0gcmVtb3ZlX2xpbmtzIG1kIGluXG4gICAgICAgICAgSDYgbWQsIG1kIGluXG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGloID0gaHRtbF9vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyIH5jczpjb2RlX3N0eWxlIG1kIGluXG4gICAgICAgICAgbGV0IGlkID0gaWRfb2Zfc3RyaW5nIGlkcyAodGV4dF9vZl9tZCBtZCkgaW5cbiAgICAgICAgICBoZWFkZXJzIDo9IChlLCBpZCwgaWgpIDo6ICFoZWFkZXJzO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8aDYgaWQ9XFxcIlwiO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgaWQ7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcXCI+XCI7XG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBpaDtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPC9oNj5cIjtcbiAgICAgICAgICBsb29wIGluZGVudCB0bFxuICAgICAgZW5kXG4gICAgfCBOTCBhcyBlIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBvdmVycmlkZSBlIHdpdGhcbiAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgbG9vcCBpbmRlbnQgdGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgbmwyYnIgdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIjxiciAvPlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgICAgIGxvb3AgaW5kZW50IHRsXG4gICAgICBlbmRcbiAgICB8IFtdIC0+XG4gICAgICAoKVxuICBpblxuICBsb29wIDAgbWQ7XG4gIEJ1ZmZlci5jb250ZW50cyBiLCBMaXN0LnJldiAhaGVhZGVyc1xuXG5hbmQgc3RyaW5nX29mX2F0dHJzIGF0dHJzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDEwMjQgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IChhLCBTb21lIHYpIC0+XG4gICAgICAgIGlmIG5vdChTdHJpbmcuY29udGFpbnMgdiAnXFwnJykgdGhlblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIgJXM9JyVzJ1wiIGEgdlxuICAgICAgICBlbHNlIGlmIG5vdChTdHJpbmcuY29udGFpbnMgdiAnXCInKSB0aGVuXG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz1cXFwiJXNcXFwiXCIgYSB2XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgIHwgYSwgTm9uZSAtPlxuICAgICAgICAoKiBpZiBodG1sNCB0aGVuICopXG4gICAgICAgICgqICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJXMnXCIgYSBhICopXG4gICAgICAgICgqIGVsc2UgKilcbiAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiAlcz0nJ1wiIGEgKCogSFRNTDUgKilcbiAgICApXG4gICAgYXR0cnM7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmFuZCBodG1sX29mX21kXG4gICAgPyhvdmVycmlkZT0oZnVuIChlOmVsZW1lbnQpIC0+IChOb25lOnN0cmluZyBvcHRpb24pKSlcbiAgICA/KHBpbmRlbnQ9ZmFsc2UpXG4gICAgPyhubDJicj1mYWxzZSlcbiAgICA/Y3NcbiAgICBtZFxuICA9XG4gIGZzdCAoaHRtbF9hbmRfaGVhZGVyc19vZl9tZCB+b3ZlcnJpZGUgfnBpbmRlbnQgfm5sMmJyID9jcyBtZClcbmFuZCBoZWFkZXJzX29mX21kID9yZW1vdmVfaGVhZGVyX2xpbmtzIG1kID1cbiAgc25kIChodG1sX2FuZF9oZWFkZXJzX29mX21kID9yZW1vdmVfaGVhZGVyX2xpbmtzIG1kKVxuXG5cbmxldCByZWMgc2V4cHJfb2ZfbWQgbWQgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgNjQgaW5cbiAgbGV0IHJlYyBsb29wID0gZnVuY3Rpb25cbiAgICB8IFggeCA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggeCN0b190IG1kIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHQgLT5cbiAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICBsb29wIHQ7XG4gICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHgjdG9fc2V4cHIgc2V4cHJfb2ZfbWQgbWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoWFwiO1xuICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6MCBodG1sX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKFhcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIlxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihCbG9ja3F1b3RlXCI7XG4gICAgICAgIGxvb3AgcTtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBfKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmVmICVTICVTKVwiIG5hbWUgdGV4dDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSW1nX3JlZihyYywgbmFtZSwgYWx0LCBfKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSW1nX3JlZiAlUyAlUylcIiBuYW1lIGFsdDtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgUGFyYWdyYXBoIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoUGFyYWdyYXBoXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEltZyhhbHQsIHNyYywgdGl0bGUpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihJbWcgJVMgJVMgJVMpXCIgYWx0IHNyYyB0aXRsZTtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgVGV4dCB0IDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihUZXh0ICVTXCIgdDtcbiAgICAgICAgbGV0IHJlYyBmID0gZnVuY3Rpb25cbiAgICAgICAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgICAgICAgYnByaW50ZiBiIFwiICVTXCIgdDtcbiAgICAgICAgICAgIGYgdGxcbiAgICAgICAgICB8IHggLT4geFxuICAgICAgICBpblxuICAgICAgICBsZXQgdGwgPSBmIHRsIGluXG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEVtcGhcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJvbGRcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgT2wgbCA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoT2xcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7IGJwcmludGYgYiBcIilcIikgbDtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBVbCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVbFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTticHJpbnRmIGIgXCIpXCIpIGw7XG4gICAgICAgIGJwcmludGYgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgT2xwIGwgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKE9scFwiO1xuICAgICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+IGJwcmludGYgYiBcIihMaSBcIjsgbG9vcCBsaTsgYnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVscCBsIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihVbHBcIjtcbiAgICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPiBicHJpbnRmIGIgXCIoTGkgXCI7IGxvb3AgbGk7YnByaW50ZiBiIFwiKVwiKSBsO1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IENvZGUobGFuZywgYykgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKENvZGUgJVMpXCIgYztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgQ29kZV9ibG9jayhsYW5nLCBjKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoQ29kZV9ibG9jayAlcylcIiBjO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBCciA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEJyKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIciA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEhyKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBSYXcgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoUmF3ICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFJhd19ibG9jayBzIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihSYXdfYmxvY2sgJVMpXCIgcztcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSHRtbCh0YWduYW1lLCBhdHRycywgYm9keSkgOjogdGwgLT5cbiAgICAgICAgYnByaW50ZiBiIFwiKEh0bWwgJXMgJXMgXCIgdGFnbmFtZSAoc3RyaW5nX29mX2F0dHJzIGF0dHJzKTtcbiAgICAgICAgbG9vcCBib2R5O1xuICAgICAgICBicHJpbnRmIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpIDo6IHRsIC0+XG4gICAgICAgIGJwcmludGYgYiBcIihIdG1sX2Jsb2NrICVzICVzIFwiIHRhZ25hbWUgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICAgIGxvb3AgYm9keTtcbiAgICAgICAgYnByaW50ZiBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIdG1sX2NvbW1lbnQgcyA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoSHRtbF9jb21tZW50ICVTKVwiIHM7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgICBicHJpbnRmIGIgXCIoVXJsICVTICVTICVTKVwiIGhyZWYgKGh0bWxfb2ZfbWQgcykgdGl0bGU7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEgxIG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDFcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDIgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihIMlwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBIMyBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEgzXCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IEg0IG1kIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoSDRcIjtcbiAgICAgICAgbG9vcCBtZDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIilcIjtcbiAgICAgICAgbG9vcCB0bFxuICAgIHwgSDUgbWQgOjogdGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIihINVwiO1xuICAgICAgICBsb29wIG1kO1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKVwiO1xuICAgICAgICBsb29wIHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKEg2XCI7XG4gICAgICAgIGxvb3AgbWQ7XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IE5MIDo6IHRsIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIoTkwpXCI7XG4gICAgICAgIGxvb3AgdGxcbiAgICB8IFtdIC0+ICgpXG4gIGluXG4gICAgbG9vcCBtZDtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5cbmxldCBlc2NhcGVfbWFya2Rvd25fY2hhcmFjdGVycyBzID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMgKiAyKSBpblxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICB8ICcuJyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPiAwICYmXG4gICAgICAgICAgIG1hdGNoIHMuW2ktMV0gd2l0aFxuICAgICAgICAgICB8ICcwJyAuLiAnOScgLT4gaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnICdcbiAgICAgICAgICAgfCBfIC0+IGZhbHNlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJy0nIGFzIGMgLT5cbiAgICAgICAgaWYgKGkgPSAwIHx8IG1hdGNoIHMuW2ktMV0gd2l0aCAnICd8ICdcXG4nIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICYmIChpKzEgPCBTdHJpbmcubGVuZ3RoIHMgJiYgKHMuW2krMV0gPSAnICd8fHMuW2krMV0gPSAnLScpKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICcrJyBhcyBjIC0+XG4gICAgICAgIGlmIChpID0gMCB8fCBtYXRjaCBzLltpLTFdIHdpdGggJyAnfCAnXFxuJyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAmJiAoaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnICcpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgJyEnIGFzIGMgLT5cbiAgICAgICAgaWYgaSsxIDwgU3RyaW5nLmxlbmd0aCBzICYmIHMuW2krMV0gPSAnWycgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnPCcgYXMgYyAtPlxuICAgICAgICBpZiBpIDw+IFN0cmluZy5sZW5ndGggcyAtIDEgJiZcbiAgICAgICAgICAgICAobWF0Y2ggcy5baSsxXSB3aXRoICdhJyAuLiAneicgfCAnQScgLi4gJ1onIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuICAgICAgICB0aGVuXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgICB8ICc+JyBhcyBjIC0+XG4gICAgICAgIGlmIGkgPSAwIHx8XG4gICAgICAgICAgICAgKG1hdGNoIHMuW2ktMV0gd2l0aCAnICcgfCAnXFxuJyAtPiBmYWxzZSB8IF8gLT4gdHJ1ZSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFxcJztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnIycgYXMgYyAtPlxuICAgICAgICAgaWYgaSA9IDAgfHwgcy5baS0xXSA9ICdcXG4nIHRoZW5cbiAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgY1xuICAgICAgfCAnXFxcXCcgfCAnWycgfCAnXScgfCAnKCcgfCAnKScgfCAnYCcgfCAnKicgYXMgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjXG4gICAgZG9uZTtcbiAgICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgcmVjIG1hcmtkb3duX29mX21kIG1kID1cbiAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFya2Rvd25fb2ZfbWQoJVMpXFxuJSFcIiAoc2V4cHJfb2ZfbWQgbWQpO1xuICBsZXQgcXVvdGUgPyhpbmRlbnQ9MCkgcyA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHMpIGluXG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgcmVjIGxvb3AgbmwgaSA9XG4gICAgICBpZiBpIDwgbCB0aGVuXG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgaWYgbmwgJiYgaSA8IGwgLSAxIHRoZW5cbiAgICAgICAgICAgIChmb3IgaSA9IDEgdG8gaW5kZW50IGRvXG4gICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnICdcbiAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+IFwiKTtcbiAgICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBsb29wIHRydWUgKHN1Y2MgaSlcbiAgICAgICAgICB8IGMgLT5cbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiIGM7XG4gICAgICAgICAgICBsb29wIGZhbHNlIChzdWNjIGkpXG4gICAgICAgIGVuZFxuICAgICAgZWxzZVxuICAgICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGluIGxvb3AgdHJ1ZSAwXG4gIGluXG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICBsZXQgYWRkX3NwYWNlcyBuID0gZm9yIGkgPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJyAnIGRvbmUgaW5cbiAgbGV0IHJlZmVyZW5jZXMgPSByZWYgTm9uZSBpblxuICBsZXQgcmVjIGxvb3AgPyhmc3RfcF9pbl9saT10cnVlKSA/KGlzX2luX2xpc3Q9ZmFsc2UpIGxpc3RfaW5kZW50IGwgPVxuICAgICgqIFtsaXN0X2luZGVudDogaW50XSBpcyB0aGUgaW5kZW50YXRpb24gbGV2ZWwgaW4gbnVtYmVyIG9mIHNwYWNlcy4gKilcbiAgICAoKiBbaXNfaW5fbGlzdDogYm9vbF0gaXMgbmVjZXNzYXJ5IHRvIGtub3cgaWYgd2UgYXJlIGluc2lkZSBhIHBhcmFncmFwaFxuICAgICAgIHdoaWNoIGlzIGluc2lkZSBhIGxpc3QgaXRlbSBiZWNhdXNlIHRob3NlIG5lZWQgdG8gYmUgaW5kZW50ZWQhICopXG4gICAgbGV0IGxvb3AgPyhmc3RfcF9pbl9saT1mc3RfcF9pbl9saSkgPyhpc19pbl9saXN0PWlzX2luX2xpc3QpIGxpc3RfaW5kZW50IGwgPVxuICAgICAgICBsb29wIH5mc3RfcF9pbl9saTpmc3RfcF9pbl9saSB+aXNfaW5fbGlzdDppc19pbl9saXN0IGxpc3RfaW5kZW50IGxcbiAgICBpblxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgWCB4IDo6IHRsIC0+XG4gICAgICAgIChtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgdCAtPiBsb29wIGxpc3RfaW5kZW50IHRcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbWF0Y2ggeCN0b19odG1sIH5pbmRlbnQ6MCBodG1sX29mX21kIG1kIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBiIHNcbiAgICAgICAgICAgICB8IE5vbmUgLT4gKCkpO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBCbG9ja3F1b3RlIHEgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHF1b3RlIH5pbmRlbnQ6bGlzdF9pbmRlbnQgKG1hcmtkb3duX29mX21kIHEpKTtcbiAgICAgIGlmIHRsIDw+IFtdIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgUmVmKHJjLCBuYW1lLCB0ZXh0LCBmYWxsYmFjaykgOjogdGwgLT5cbiAgICAgICAgaWYgIXJlZmVyZW5jZXMgPSBOb25lIHRoZW4gcmVmZXJlbmNlcyA6PSBTb21lIHJjO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IChSYXcoZmFsbGJhY2sjdG9fc3RyaW5nKTo6dGwpXG4gICAgfCBJbWdfcmVmKHJjLCBuYW1lLCBhbHQsIGZhbGxiYWNrKSA6OiB0bCAtPlxuICAgICAgICBpZiAhcmVmZXJlbmNlcyA9IE5vbmUgdGhlbiByZWZlcmVuY2VzIDo9IFNvbWUgcmM7XG4gICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgKFJhdyhmYWxsYmFjayN0b19zdHJpbmcpOjp0bClcbiAgICB8IFBhcmFncmFwaCBbXSA6OiB0bCAtPiBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBQYXJhZ3JhcGggbWQgOjogdGwgLT5cbiAgICAgIGlmIGlzX2luX2xpc3QgdGhlblxuICAgICAgICBpZiBmc3RfcF9pbl9saSB0aGVuXG4gICAgICAgICAgYWRkX3NwYWNlcyAobGlzdF9pbmRlbnQtMilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFkZF9zcGFjZXMgbGlzdF9pbmRlbnQ7XG4gICAgICBsb29wIH5mc3RfcF9pbl9saTpmYWxzZSBsaXN0X2luZGVudCBtZDtcbiAgICAgIFByaW50Zi5icHJpbnRmIGIgXCJcXG5cXG5cIjtcbiAgICAgIGxvb3AgfmZzdF9wX2luX2xpOmZhbHNlIGxpc3RfaW5kZW50IHRsXG4gICAgfCBJbWcoYWx0LCBzcmMsIHRpdGxlKSA6OiB0bCAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiFbJXNdKCVzIFxcXCIlc1xcXCIpXCIgYWx0IHNyYyB0aXRsZTtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFRleHQgdCA6OiB0bCAtPlxuICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKGVzY2FwZV9tYXJrZG93bl9jaGFyYWN0ZXJzIHQpO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgRW1waCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIipcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKlwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQm9sZCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIioqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIioqXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBPbCBsIDo6IHRsIC0+XG4gICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbicgdGhlblxuICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxldCBjID0gcmVmIDAgaW4gKCogZG9uJ3QgdXNlIExpc3QuaXRlcmkgYmVjYXVzZSBpdCdzIG5vdCBpbiAzLjEyICopXG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgICAgICAgICAgICAgIGluY3IgYztcbiAgICAgICAgICAgICAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVkLiBcIiAhYztcbiAgICAgICAgICAgICAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBpZiBsaXN0X2luZGVudCA9IDAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVsIGwgOjogdGwgLT5cbiAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJyB0aGVuXG4gICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICAgICAgICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICAgICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiLSBcIjtcbiAgICAgICAgICAgICAgICAgICAgbG9vcCB+aXNfaW5fbGlzdDp0cnVlIChsaXN0X2luZGVudCs0KSBsaTtcbiAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBpZiBsaXN0X2luZGVudCA9IDAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IE9scCBsIDo6IHRsIC0+XG4gICAgICBsZXQgYyA9IHJlZiAwIGluICgqIGRvbid0IHVzZSBMaXN0Lml0ZXJpIGJlY2F1c2UgaXQncyBub3QgaW4gMy4xMiAqKVxuICAgICAgTGlzdC5pdGVyKGZ1biBsaSAtPlxuICAgICAgICBpZiBCdWZmZXIubGVuZ3RoIGIgPiAwICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMSkgPD4gJ1xcbidcbiAgICAgICAgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgICAgYWRkX3NwYWNlcyBsaXN0X2luZGVudDtcbiAgICAgICAgaW5jciBjO1xuICAgICAgICBicHJpbnRmIGIgXCIlZC4gXCIgIWM7XG4gICAgICAgIGxvb3AgfmlzX2luX2xpc3Q6dHJ1ZSAobGlzdF9pbmRlbnQrNCkgbGk7XG4gICAgICAgICAgICAgICAoKiBQYXJhZ3JhcGhzID0+IE5vIG5lZWQgb2YgJ1xcbicgKilcbiAgICAgICkgbDtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVscCBsIDo6IHRsIC0+XG4gICAgICBMaXN0Lml0ZXIoZnVuIGxpIC0+XG4gICAgICAgIGlmIEJ1ZmZlci5sZW5ndGggYiA+IDAgJiYgQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA8PiAnXFxuJ1xuICAgICAgICB0aGVuIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICBhZGRfc3BhY2VzIGxpc3RfaW5kZW50O1xuICAgICAgICBicHJpbnRmIGIgXCIrIFwiO1xuICAgICAgICBsb29wIH5pc19pbl9saXN0OnRydWUgKGxpc3RfaW5kZW50KzQpIGxpO1xuICAgICAgICAgICAgICAgKCogUGFyYWdyYXBocyA9PiBObyBuZWVkIG9mICdcXG4nICopXG4gICAgICAgICAgICAgICApIGw7XG4gICAgICBiZWdpbiBtYXRjaCB0bCB3aXRoXG4gICAgICB8IChIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF8pOjpfXG4gICAgICB8IE5MOjooSDEgXyB8IEgyIF8gfCBIMyBfIHwgSDQgXyB8IEg1IF8gfCBINiBfKTo6XyAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJ1xuICAgICAgfCBfIC0+ICgpXG4gICAgICBlbmQ7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBDb2RlKF9sYW5nLCBjKSA6OiB0bCAtPiAoKiBGSVhNRSAqKVxuICAgICAgbGV0IG4gPSAoKiBjb21wdXRlIGhvdyBtYW55IGJhY2txdW90ZXMgd2UgbmVlZCB0byB1c2UgKilcbiAgICAgICAgbGV0IGZpbHRlciAobjppbnQpIChzOmludCBsaXN0KSA9XG4gICAgICAgICAgaWYgbiA+IDAgJiYgbiA8IDEwIHRoZW5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gZSAtPiBlIDw+IG4pIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBjIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIHggYiBpID1cbiAgICAgICAgICBpZiBpID0gbCB0aGVuXG4gICAgICAgICAgICBtYXRjaCBmaWx0ZXIgYiBzIHdpdGhcbiAgICAgICAgICAgIHwgaGQ6Ol8gLT4gaGRcbiAgICAgICAgICAgIHwgW10gLT4geCsxXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggYy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnYCcgLT4gbG9vcCBzIHggKHN1Y2MgYikgKHN1Y2MgaSlcbiAgICAgICAgICAgIHwgXyAtPiBsb29wIChmaWx0ZXIgYiBzKSAobWF4IGIgeCkgMCAoc3VjYyBpKVxuICAgICAgICBpblxuICAgICAgICAgIGxvb3AgWzE7MjszOzQ7NTs2Ozc7ODs5OzEwXSAwIDAgMFxuICAgICAgaW5cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICAgIGlmIGMuWzBdID0gJ2AnIHRoZW4gQnVmZmVyLmFkZF9jaGFyIGIgJyAnO1xuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIGM7XG4gICAgICAgICAgaWYgYy5bU3RyaW5nLmxlbmd0aCBjIC0gMV0gPSAnYCcgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnICc7XG4gICAgICAgICAgUHJpbnRmLmJwcmludGYgYiBcIiVzXCIgKFN0cmluZy5tYWtlIG4gJ2AnKTtcbiAgICAgICAgZW5kO1xuICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBDb2RlX2Jsb2NrKGxhbmcsIGMpIDo6IHRsIC0+XG4gICAgICBsZXQgbiA9ICgqIGNvbXB1dGUgaG93IG1hbnkgYmFja3F1b3RlcyB3ZSBuZWVkIHRvIHVzZSAqKVxuICAgICAgICBsZXQgZmlsdGVyIG4gcyA9XG4gICAgICAgICAgaWYgbiA+IDAgJiYgbiA8IDEwIHRoZW5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gZSAtPiBlIDw+IG4pIHNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBsID0gU3RyaW5nLmxlbmd0aCBjIGluXG4gICAgICAgIGxldCByZWMgbG9vcCBzIGIgaSA9XG4gICAgICAgICAgaWYgaSA9IGwgdGhlblxuICAgICAgICAgICAgbWF0Y2ggZmlsdGVyIGIgcyB3aXRoXG4gICAgICAgICAgICAgIHwgaGQ6Ol8gLT4gaGRcbiAgICAgICAgICAgICAgfCBbXSAtPiAwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggYy5baV0gd2l0aFxuICAgICAgICAgICAgfCAnYCcgLT4gbG9vcCBzIChzdWNjIGIpIChzdWNjIGkpXG4gICAgICAgICAgICB8IF8gLT4gbG9vcCAoZmlsdGVyIGIgcykgMCAoc3VjYyBpKVxuICAgICAgICBpblxuICAgICAgICAgIGxvb3AgWzM7NDs1OzY7Nzs4Ozk7MTBdIDAgMFxuICAgICAgaW5cbiAgICAgIGxldCBvdXRwdXRfaW5kZW50ZWRfYmxvY2sgbiBzID1cbiAgICAgICAgbGV0IHJlYyBsb29wIHAgaSA9XG4gICAgICAgICAgaWYgaSA9IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgICAgICAgfCAnXFxuJyAtPlxuICAgICAgICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCIlc1wiIChTdHJpbmcubWFrZSBuICcgJyk7XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgcy5baV07XG4gICAgICAgICAgICAgICAgbG9vcCBzLltpXSAoc3VjYyBpKVxuICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgcy5baV07XG4gICAgICAgICAgICAgICAgbG9vcCBzLltpXSAoc3VjYyBpKVxuICAgICAgICBpbiBsb29wICdcXG4nIDBcbiAgICAgIGluXG4gICAgICAgIGlmIG4gPSAwIHRoZW4gICgqIEZJWE1FICopXG4gICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICgqIGNhc2Ugd2hlcmUgd2UgY2FuJ3QgdXNlIGJhY2txdW90ZXMgKilcbiAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXG4nO1xuICAgICAgICAgICAgb3V0cHV0X2luZGVudGVkX2Jsb2NrICg0K2xpc3RfaW5kZW50KSBjO1xuICAgICAgICAgICAgaWYgdGwgPD4gW10gdGhlbiBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXFxuXCJcbiAgICAgICAgICBlbmRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcubWFrZSAobGlzdF9pbmRlbnQpICcgJyk7XG4gICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXMlc1xcblwiIChTdHJpbmcubWFrZSBuICdgJylcbiAgICAgICAgICAgICAgKGlmIGxhbmcgPSBcIlwiIHRoZW4gIWRlZmF1bHRfbGFuZ3VhZ2UgZWxzZSBsYW5nKTtcbiAgICAgICAgICAgIG91dHB1dF9pbmRlbnRlZF9ibG9jayAobGlzdF9pbmRlbnQpIGM7XG4gICAgICAgICAgICBpZiBCdWZmZXIubnRoIGIgKEJ1ZmZlci5sZW5ndGggYiAtIDEpIDw+ICdcXG4nIHRoZW5cbiAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChTdHJpbmcubWFrZSAobGlzdF9pbmRlbnQpICcgJyk7XG4gICAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiJXNcXG5cIiAoU3RyaW5nLm1ha2UgbiAnYCcpO1xuICAgICAgICAgIGVuZDtcbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgQnIgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI8YnIgLz5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEhyIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiKiAqICpcXG5cIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFJhdyBzIDo6IHRsIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBSYXdfYmxvY2sgcyA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHM7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxuJztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IEh0bWwodGFnbmFtZSwgYXR0cnMsIFtdKSA6OiB0bFxuICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhdHRycyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiIC8+XCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIdG1sKHRhZ25hbWUsIGF0dHJzLCBib2R5KSA6OiB0bCAtPlxuICAgICAgbGV0IGEgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGF0dHJzIGluXG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhKTtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCI+XCI7XG4gICAgICBpZiBhID09IGF0dHJzIHRoZW5cbiAgICAgICAgbG9vcCBsaXN0X2luZGVudCBib2R5XG4gICAgICBlbHNlXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGh0bWxfb2ZfbWQgYm9keSk7XG4gICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgKEh0bWxfYmxvY2sodGFnbmFtZSwgYXR0cnMsIGJvZHkpKTo6dGwgLT5cbiAgICAgIGxldCBuZWVkc19uZXdsaW5lcyA9XG4gICAgICAgIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgfCBOTCA6OiBQYXJhZ3JhcGggcCA6OiBfXG4gICAgICAgIHwgUGFyYWdyYXBoIHAgOjogXyAtPiBwIDw+IFtdXG4gICAgICAgIHwgKEgxIF8gfCBIMiBfIHwgSDMgXyB8IEg0IF8gfCBINSBfIHwgSDYgX1xuICAgICAgICAgIHwgVWwgXyB8IE9sIF8gfCBVbHAgXyB8IE9scCBfIHwgQ29kZSAoXywgXykgfCBDb2RlX2Jsb2NrIChfLCBfKVxuICAgICAgICAgIHwgVGV4dCBfIHwgRW1waCBfIHwgQm9sZCBfIHwgQnIgfEhyIHwgVXJsIChfLCBfLCBfKVxuICAgICAgICAgIHwgUmVmIChfLCBfLCBfLCBfKSB8IEltZ19yZWYgKF8sIF8sIF8sIF8pXG4gICAgICAgICAgfCBIdG1sIChfLCBfLCBfKVxuICAgICAgICAgIHwgQmxvY2txdW90ZSBfIHwgSW1nIChfLCBfLCBfKSkgOjogXyAtPiB0cnVlXG4gICAgICAgIHwgKCBIdG1sX2Jsb2NrIChfLCBfLCBfKSB8IEh0bWxfY29tbWVudCBfXG4gICAgICAgICAgfCBSYXcgX3xSYXdfYmxvY2sgXykgOjogXy0+IGZhbHNlXG4gICAgICAgIHwgWCBfIDo6IF8gLT4gZmFsc2VcbiAgICAgICAgfCBOTCA6OiBfIC0+IGZhbHNlXG4gICAgICAgIHwgW10gLT4gZmFsc2VcbiAgICAgIGluXG4gICAgICBpZiBib2R5ID0gW10gJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWxfdm9pZF9lbGVtZW50cyB0aGVuXG4gICAgICAgIChcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPCVzXCIgdGFnbmFtZTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfYXR0cnMgYXR0cnMpO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIgLz5cIjtcbiAgICAgICAgICBpZiBuZWVkc19uZXdsaW5lcyB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJcXG5cXG5cIjtcbiAgICAgICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgICAgIClcbiAgICAgIGVsc2VcbiAgICAgICAgKFxuICAgICAgICAgIGxldCBhID0gZmlsdGVyX3RleHRfb21kX3JldiBhdHRycyBpblxuICAgICAgICAgIFByaW50Zi5icHJpbnRmIGIgXCI8JXNcIiB0YWduYW1lO1xuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKHN0cmluZ19vZl9hdHRycyBhKTtcbiAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiPlwiO1xuICAgICAgICAgIGlmIGEgPT0gYXR0cnMgdGhlblxuICAgICAgICAgICAgbG9vcCBsaXN0X2luZGVudCBib2R5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoaHRtbF9vZl9tZCBib2R5KTtcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiPC8lcz5cIiB0YWduYW1lO1xuICAgICAgICAgIGlmIG5lZWRzX25ld2xpbmVzIHRoZW4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblxcblwiO1xuICAgICAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICAgICAgKVxuICAgIHwgSHRtbF9jb21tZW50IHMgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcztcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgdGxcbiAgICB8IFVybCAoaHJlZixzLHRpdGxlKSA6OiB0bCAtPlxuICAgICAgaWYgdGl0bGUgPSBcIlwiIHRoZW5cbiAgICAgICAgYnByaW50ZiBiIFwiWyVzXSglcylcIiAobWFya2Rvd25fb2ZfbWQgcykgaHJlZlxuICAgICAgZWxzZVxuICAgICAgICBicHJpbnRmIGIgXCJbJXNdKCVzIFxcXCIlc1xcXCIpXCIgKG1hcmtkb3duX29mX21kIHMpIGhyZWYgdGl0bGU7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMSBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDIgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBIMyBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINCBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMgXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IG1kO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIlxcblwiO1xuICAgICAgbG9vcCBsaXN0X2luZGVudCB0bFxuICAgIHwgSDUgbWQgOjogdGwgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCIjIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBINiBtZCA6OiB0bCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiMjIyMjIyBcIjtcbiAgICAgIGxvb3AgbGlzdF9pbmRlbnQgbWQ7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBOTCA6OiB0bCAtPlxuICAgICAgaWYgQnVmZmVyLmxlbmd0aCBiID0gMVxuICAgICAgfHwgKEJ1ZmZlci5sZW5ndGggYiA+IDEgJiZcbiAgICAgICAgICBub3QoQnVmZmVyLm50aCBiIChCdWZmZXIubGVuZ3RoIGIgLSAxKSA9ICdcXG4nXG4gICAgICAgICAgICAgICYmIEJ1ZmZlci5udGggYiAoQnVmZmVyLmxlbmd0aCBiIC0gMikgPSAnXFxuJykpXG4gICAgICB0aGVuXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiXFxuXCI7XG4gICAgICBsb29wIGxpc3RfaW5kZW50IHRsXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICAgIGxvb3AgMCBtZDtcbiAgICBiZWdpbiBtYXRjaCAhcmVmZXJlbmNlcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSByIC0+XG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcbic7XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIChuYW1lLCAodXJsLCB0aXRsZSkpIC0+XG4gICAgICAgICAgICAgICBpZiB0aXRsZSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICBicHJpbnRmIGIgXCJbJXNdOiAlcyBcXG5cIiBuYW1lIHVybFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBicHJpbnRmIGIgXCJbJXNdOiAlcyBcXFwiJXNcXFwiXFxuXCIgbmFtZSB1cmwgdGl0bGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIHIjZ2V0X2FsbFxuICAgIGVuZDtcbiAgICBsZXQgcmVzID0gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgbWFya2Rvd25fb2ZfbWQoJVMpID0+ICVTXFxuJSFcIlxuICAgICAgICAoc2V4cHJfb2ZfbWQgbWQpIHJlcztcbiAgICByZXNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW1wbGVtZW50YXRpb24gbm90ZXMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgICogLSBUaGlzIG1vZHVsZSBzaG91bGQgZGVwZW5kIG9uIE9DYW1sJ3Mgc3RhbmRhcmQgbGlicmFyeSBvbmx5IGFuZFxuICAgKiBzaG91bGQgYmUgYXMgJ3B1cmUgT0NhbWwnIChpLmUuIGRlcGVuZCBhcyBsZWFzdCBhcyBwb3NzaWJsZSBvblxuICAgKiBleHRlcm5hbCB0b29scykgYXMgcG9zc2libGUuXG5cbiAgICogLSBgd2hpbGUnIGxvb3BzIGFyZSBzb21ldGltZXMgcHJlZmVycmVkIHRvIHJlY3Vyc2lvbiBiZWNhdXNlIHRoaXNcbiAgICogbWF5IGJlIHVzZWQgb24gc3lzdGVtcyB3aGVyZSB0YWlsIHJlY3Vyc2lvbiBpcyBub3Qgd2VsbFxuICAgKiBzdXBwb3J0ZWQuIChJIHRyaWVkIHRvIHdyaXRlIFwid2hpbGVcIiBhcyBvZnRlbiBhcyBwb3NzaWJsZSwgYnV0IGl0XG4gICAqIHR1cm5lZCBvdXQgdGhhdCBpdCB3YXMgcHJldHR5IGluY29udmVuaWVudCwgc28gSSBkbyB1c2VcbiAgICogcmVjdXJzaW9uLiAgV2hlbiBJIGhhdmUgdGltZSwgSSdsbCBkbyBzb21lIHRlc3RzIGFuZCBzZWUgaWYgSVxuICAgKiBuZWVkIHRvIGNvbnZlcnQgcmVjdXJzaXZlIGxvb3BzIGludG8gaXRlcmF0aXZlIGxvb3BzLiBTb3JyeSBpZiBpdFxuICAgKiBtYWtlcyBpdCBoYXJkZXIgdG8gcmVhZC4pXG5cbiopXG5cbigqIGNsYXNzIHR5cGUgdGFnID0gb2JqZWN0IG1ldGhvZCBpc19tZSA6ICdhLiAnYSAtPiBib29sIGVuZCAqKVxuXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxuXG50eXBlIHRva2VuID0gT21kX3JlcHJlc2VudGF0aW9uLnRva1xudHlwZSB0ID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG5cbmxldCBzdHJpbmdfb2ZfdG9rZW4gPSBmdW5jdGlvblxuICB8IFRhZyAobmFtZSwgbykgLT5cbiAgICBpZiBPbWRfdXRpbHMuZGVidWcgdGhlbiBcIlRBRyhcIl5uYW1lXlwiKVwiIF4gbyN0b19zdHJpbmcgZWxzZSBvI3RvX3N0cmluZ1xuICB8IEFtcGVyc2FuZCAtPiBcIiZcIlxuICB8IEFtcGVyc2FuZHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcmJ1xuICB8IEF0IC0+IFwiQFwiXG4gIHwgQXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnQCdcbiAgfCBCYWNrcXVvdGUgLT4gXCJgXCJcbiAgfCBCYWNrcXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnYCdcbiAgfCBCYWNrc2xhc2ggLT4gXCJcXFxcXCJcbiAgfCBCYWNrc2xhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFxcXCdcbiAgfCBCYXIgLT4gXCJ8XCJcbiAgfCBCYXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnfCdcbiAgfCBDYXJldCAtPiBcIl5cIlxuICB8IENhcmV0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ14nXG4gIHwgQ2JyYWNlIC0+IFwifVwiXG4gIHwgQ2JyYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ30nXG4gIHwgQ29sb24gLT4gXCI6XCJcbiAgfCBDb2xvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc6J1xuICB8IENvbW1hIC0+IFwiLFwiXG4gIHwgQ29tbWFzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLCdcbiAgfCBDcGFyZW50aGVzaXMgLT4gXCIpXCJcbiAgfCBDcGFyZW50aGVzaXNzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKSdcbiAgfCBDYnJhY2tldCAtPiBcIl1cIlxuICB8IENicmFja2V0cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ10nXG4gIHwgRG9sbGFyIC0+IFwiJFwiXG4gIHwgRG9sbGFycyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyQnXG4gIHwgRG90IC0+IFwiLlwiXG4gIHwgRG90cyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy4nXG4gIHwgRG91YmxlcXVvdGUgLT4gXCJcXFwiXCJcbiAgfCBEb3VibGVxdW90ZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcIidcbiAgfCBFeGNsYW1hdGlvbiAtPiBcIiFcIlxuICB8IEV4Y2xhbWF0aW9ucyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyEnXG4gIHwgRXF1YWwgLT4gXCI9XCJcbiAgfCBFcXVhbHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc9J1xuICB8IEdyZWF0ZXJ0aGFuIC0+IFwiPlwiXG4gIHwgR3JlYXRlcnRoYW5zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPidcbiAgfCBIYXNoIC0+IFwiI1wiXG4gIHwgSGFzaHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcjJ1xuICB8IExlc3N0aGFuIC0+IFwiPFwiXG4gIHwgTGVzc3RoYW5zIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnPCdcbiAgfCBNaW51cyAtPiBcIi1cIlxuICB8IE1pbnVzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJy0nXG4gIHwgTmV3bGluZSAtPiBcIlxcblwiXG4gIHwgTmV3bGluZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICdcXG4nXG4gIHwgTnVtYmVyIHMgLT4gc1xuICB8IE9icmFjZSAtPiBcIntcIlxuICB8IE9icmFjZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd7J1xuICB8IE9wYXJlbnRoZXNpcyAtPiBcIihcIlxuICB8IE9wYXJlbnRoZXNpc3MgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICcoJ1xuICB8IE9icmFja2V0IC0+IFwiW1wiXG4gIHwgT2JyYWNrZXRzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnWydcbiAgfCBQZXJjZW50IC0+IFwiJVwiXG4gIHwgUGVyY2VudHMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICclJ1xuICB8IFBsdXMgLT4gXCIrXCJcbiAgfCBQbHVzcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJysnXG4gIHwgUXVlc3Rpb24gLT4gXCI/XCJcbiAgfCBRdWVzdGlvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc/J1xuICB8IFF1b3RlIC0+IFwiJ1wiXG4gIHwgUXVvdGVzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnXFwnJ1xuICB8IFNlbWljb2xvbiAtPiBcIjtcIlxuICB8IFNlbWljb2xvbnMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICc7J1xuICB8IFNsYXNoIC0+IFwiL1wiXG4gIHwgU2xhc2hzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnLydcbiAgfCBTcGFjZSAtPiBcIiBcIlxuICB8IFNwYWNlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJyAnXG4gIHwgU3RhciAtPiBcIipcIlxuICB8IFN0YXJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoMituKSAnKidcbiAgfCBUYWIgLT4gXCIgICAgXCJcbiAgfCBUYWJzIG4gLT4gYXNzZXJ0IChuID49IDApOyBTdHJpbmcubWFrZSAoKDIrbikqNCkgJyAnXG4gIHwgVGlsZGUgLT4gXCJ+XCJcbiAgfCBUaWxkZXMgbiAtPiBhc3NlcnQgKG4gPj0gMCk7IFN0cmluZy5tYWtlICgyK24pICd+J1xuICB8IFVuZGVyc2NvcmUgLT4gXCJfXCJcbiAgfCBVbmRlcnNjb3JlcyBuIC0+IGFzc2VydCAobiA+PSAwKTsgU3RyaW5nLm1ha2UgKDIrbikgJ18nXG4gIHwgV29yZCBzIC0+IHNcblxuXG5sZXQgc2l6ZV9hbmRfbmV3bGluZXMgPSBmdW5jdGlvblxuICB8IFRhZyBfIC0+ICgwLCAwKVxuICB8IEFtcGVyc2FuZCB8IEF0IHwgQmFja3F1b3RlIHwgQmFja3NsYXNoIHwgQmFyIHwgQ2FyZXQgfCBDYnJhY2VcbiAgfCBDb2xvbiB8IENvbW1hIHwgQ3BhcmVudGhlc2lzIHwgQ2JyYWNrZXQgfCBEb2xsYXIgfCBEb3RcbiAgfCBEb3VibGVxdW90ZSB8IEV4Y2xhbWF0aW9uIHwgRXF1YWwgfCBHcmVhdGVydGhhbiB8IEhhc2ggfCBMZXNzdGhhblxuICB8IE1pbnVzIHwgT2JyYWNlIHwgT3BhcmVudGhlc2lzIHwgT2JyYWNrZXQgfCBQZXJjZW50IHwgUGx1c1xuICB8IFF1ZXN0aW9uIHwgUXVvdGUgfCBTZW1pY29sb24gfCBTbGFzaCB8IFNwYWNlIHwgU3RhciB8IFRhYlxuICB8IFRpbGRlIHwgVW5kZXJzY29yZSAtPiAoMSwgMClcbiAgfCBBbXBlcnNhbmRzIHggfCBBdHMgeCB8IEJhY2txdW90ZXMgeCB8IEJhY2tzbGFzaHMgeCB8IEJhcnMgeCB8IENhcmV0cyB4XG4gIHwgQ2JyYWNlcyB4IHwgQ29sb25zIHggfCBDb21tYXMgeCB8IENwYXJlbnRoZXNpc3MgeCB8IENicmFja2V0cyB4XG4gIHwgRG9sbGFycyB4IHwgRG90cyB4XG4gIHwgRG91YmxlcXVvdGVzIHggfCBFeGNsYW1hdGlvbnMgeCB8IEVxdWFscyB4IHwgR3JlYXRlcnRoYW5zIHggfCBIYXNocyB4XG4gIHwgTGVzc3RoYW5zIHhcbiAgfCBNaW51c3MgeCB8IE9icmFjZXMgeCB8IE9wYXJlbnRoZXNpc3MgeCB8IE9icmFja2V0cyB4IHwgUGVyY2VudHMgeCB8IFBsdXNzIHhcbiAgfCBRdWVzdGlvbnMgeCB8IFF1b3RlcyB4IHwgU2VtaWNvbG9ucyB4IHwgU2xhc2hzIHggfCBTcGFjZXMgeCB8IFN0YXJzIHhcbiAgfCBUYWJzIHhcbiAgfCBUaWxkZXMgeCB8IFVuZGVyc2NvcmVzIHggLT4gKDIreCwgMClcbiAgfCBOZXdsaW5lIC0+ICgwLCAxKVxuICB8IE5ld2xpbmVzIHggLT4gKDAsIDIreClcbiAgfCBOdW1iZXIgcyB8IFdvcmQgcyAtPiAoU3RyaW5nLmxlbmd0aCBzLCAwKVxuXG5sZXQgbGVuZ3RoIHQgPVxuICBsZXQgYywgbmwgPSBzaXplX2FuZF9uZXdsaW5lcyB0IGluXG4gIGMgKyBubFxuXG5sZXQgc3BsaXRfZmlyc3QgPSBmdW5jdGlvblxuICB8IEFtcGVyc2FuZHMgbiAtPiBBbXBlcnNhbmQsIChpZiBuID4gMCB0aGVuIEFtcGVyc2FuZHMobi0xKSBlbHNlIEFtcGVyc2FuZClcbiAgfCBBdHMgbiAtPiBBdCwgKGlmIG4gPiAwIHRoZW4gQXRzKG4tMSkgZWxzZSBBdClcbiAgfCBCYWNrcXVvdGVzIG4gLT4gQmFja3F1b3RlLCAoaWYgbiA+IDAgdGhlbiBCYWNrcXVvdGVzKG4tMSkgZWxzZSBCYWNrcXVvdGUpXG4gIHwgQmFja3NsYXNocyBuIC0+IEJhY2tzbGFzaCwgKGlmIG4gPiAwIHRoZW4gQmFja3NsYXNocyhuLTEpIGVsc2UgQmFja3NsYXNoKVxuICB8IEJhcnMgbiAtPiBCYXIsIChpZiBuID4gMCB0aGVuIEJhcnMobi0xKSBlbHNlIEJhcilcbiAgfCBDYXJldHMgbiAtPiBDYXJldCwgKGlmIG4gPiAwIHRoZW4gQ2FyZXRzKG4tMSkgZWxzZSBDYXJldClcbiAgfCBDYnJhY2VzIG4gLT4gQ2JyYWNlLCAoaWYgbiA+IDAgdGhlbiBDYnJhY2VzKG4tMSkgZWxzZSBDYnJhY2UpXG4gIHwgQ29sb25zIG4gLT4gQ29sb24sIChpZiBuID4gMCB0aGVuIENvbG9ucyhuLTEpIGVsc2UgQ29sb24pXG4gIHwgQ29tbWFzIG4gLT4gQ29tbWEsIChpZiBuID4gMCB0aGVuIENvbW1hcyhuLTEpIGVsc2UgQ29tbWEpXG4gIHwgQ3BhcmVudGhlc2lzcyBuIC0+IENwYXJlbnRoZXNpcywgKGlmIG4gPiAwIHRoZW4gQ3BhcmVudGhlc2lzcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDcGFyZW50aGVzaXMpXG4gIHwgQ2JyYWNrZXRzIG4gLT4gQ2JyYWNrZXQsIChpZiBuID4gMCB0aGVuIENicmFja2V0cyhuLTEpIGVsc2UgQ2JyYWNrZXQpXG4gIHwgRG9sbGFycyBuIC0+IERvbGxhciwgKGlmIG4gPiAwIHRoZW4gRG9sbGFycyhuLTEpIGVsc2UgRG9sbGFyKVxuICB8IERvdHMgbiAtPiBEb3QsIChpZiBuID4gMCB0aGVuIERvdHMobi0xKSBlbHNlIERvdClcbiAgfCBEb3VibGVxdW90ZXMgbiAtPiBEb3VibGVxdW90ZSwgKGlmIG4gPiAwIHRoZW4gRG91YmxlcXVvdGVzKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBEb3VibGVxdW90ZSlcbiAgfCBFeGNsYW1hdGlvbnMgbiAtPiBFeGNsYW1hdGlvbiwgKGlmIG4gPiAwIHRoZW4gRXhjbGFtYXRpb25zKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBFeGNsYW1hdGlvbilcbiAgfCBFcXVhbHMgbiAtPiBFcXVhbCwgKGlmIG4gPiAwIHRoZW4gRXF1YWxzKG4tMSkgZWxzZSBFcXVhbClcbiAgfCBHcmVhdGVydGhhbnMgbiAtPiBHcmVhdGVydGhhbiwgKGlmIG4gPiAwIHRoZW4gR3JlYXRlcnRoYW5zKG4tMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBHcmVhdGVydGhhbilcbiAgfCBIYXNocyBuIC0+IEhhc2gsIChpZiBuID4gMCB0aGVuIEhhc2hzKG4tMSkgZWxzZSBIYXNoKVxuICB8IExlc3N0aGFucyBuIC0+IExlc3N0aGFuLCAoaWYgbiA+IDAgdGhlbiBMZXNzdGhhbnMobi0xKSBlbHNlIExlc3N0aGFuKVxuICB8IE1pbnVzcyBuIC0+IE1pbnVzLCAoaWYgbiA+IDAgdGhlbiBNaW51c3Mobi0xKSBlbHNlIE1pbnVzKVxuICB8IE5ld2xpbmVzIG4gLT4gTmV3bGluZSwgKGlmIG4gPiAwIHRoZW4gTmV3bGluZXMobi0xKSBlbHNlIE5ld2xpbmUpXG4gIHwgT2JyYWNlcyBuIC0+IE9icmFjZSwgKGlmIG4gPiAwIHRoZW4gT2JyYWNlcyhuLTEpIGVsc2UgT2JyYWNlKVxuICB8IE9wYXJlbnRoZXNpc3MgbiAtPiBPcGFyZW50aGVzaXMsIChpZiBuID4gMCB0aGVuIE9wYXJlbnRoZXNpc3Mobi0xKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT3BhcmVudGhlc2lzKVxuICB8IE9icmFja2V0cyBuIC0+IE9icmFja2V0LCAoaWYgbiA+IDAgdGhlbiBPYnJhY2tldHMobi0xKSBlbHNlIE9icmFja2V0KVxuICB8IFBlcmNlbnRzIG4gLT4gUGVyY2VudCwgKGlmIG4gPiAwIHRoZW4gUGVyY2VudHMobi0xKSBlbHNlIFBlcmNlbnQpXG4gIHwgUGx1c3MgbiAtPiBQbHVzLCAoaWYgbiA+IDAgdGhlbiBQbHVzcyhuLTEpIGVsc2UgUGx1cylcbiAgfCBRdWVzdGlvbnMgbiAtPiBRdWVzdGlvbiwgKGlmIG4gPiAwIHRoZW4gUXVlc3Rpb25zKG4tMSkgZWxzZSBRdWVzdGlvbilcbiAgfCBRdW90ZXMgbiAtPiBRdW90ZSwgKGlmIG4gPiAwIHRoZW4gUXVvdGVzKG4tMSkgZWxzZSBRdW90ZSlcbiAgfCBTZW1pY29sb25zIG4gLT4gU2VtaWNvbG9uLCAoaWYgbiA+IDAgdGhlbiBTZW1pY29sb25zKG4tMSkgZWxzZSBTZW1pY29sb24pXG4gIHwgU2xhc2hzIG4gLT4gU2xhc2gsIChpZiBuID4gMCB0aGVuIFNsYXNocyhuLTEpIGVsc2UgU2xhc2gpXG4gIHwgU3BhY2VzIG4gLT4gU3BhY2UsIChpZiBuID4gMCB0aGVuIFNwYWNlcyhuLTEpIGVsc2UgU3BhY2UpXG4gIHwgU3RhcnMgbiAtPiBTdGFyLCAoaWYgbiA+IDAgdGhlbiBTdGFycyhuLTEpIGVsc2UgU3RhcilcbiAgfCBUYWJzIG4gLT4gVGFiLCAoaWYgbiA+IDAgdGhlbiBUYWJzKG4tMSkgZWxzZSBUYWIpXG4gIHwgVGlsZGVzIG4gLT4gVGlsZGUsIChpZiBuID4gMCB0aGVuIFRpbGRlcyhuLTEpIGVsc2UgVGlsZGUpXG4gIHwgVW5kZXJzY29yZXMgbiAtPiBVbmRlcnNjb3JlLCAoaWYgbiA+IDAgdGhlbiBVbmRlcnNjb3JlcyhuLTEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFVuZGVyc2NvcmUpXG4gIHwgQW1wZXJzYW5kIHwgQXQgfCBCYWNrcXVvdGUgfCBCYWNrc2xhc2ggfCBCYXIgfCBDYXJldCB8IENicmFjZSB8IENvbG9uXG4gIHwgQ29tbWEgfCBDcGFyZW50aGVzaXMgfCBDYnJhY2tldCB8IERvbGxhciB8IERvdCB8IERvdWJsZXF1b3RlXG4gIHwgRXhjbGFtYXRpb24gfCBFcXVhbCB8IEdyZWF0ZXJ0aGFuIHwgSGFzaCB8IExlc3N0aGFuIHwgTWludXNcbiAgfCBOZXdsaW5lIHwgTnVtYmVyIF8gfCBPYnJhY2UgfCBPcGFyZW50aGVzaXMgfCBPYnJhY2tldCB8IFBlcmNlbnRcbiAgfCBQbHVzIHwgUXVlc3Rpb24gfCBRdW90ZSB8IFNlbWljb2xvbiB8IFNsYXNoIHwgU3BhY2UgfCBTdGFyIHwgVGFiXG4gIHwgVGlsZGUgfCBVbmRlcnNjb3JlIHwgVGFnIF8gfCBXb3JkIF8gLT5cbiAgICAgaW52YWxpZF9hcmcgXCJPbWRfbGV4ZXIuc3BsaXRfZmlyc3RcIlxuXG5tb2R1bGUgdHlwZSBJbnB1dCA9XG5zaWdcbiAgdHlwZSB0XG4gIHZhbCBsZW5ndGggOiB0IC0+IGludFxuICB2YWwgZ2V0IDogdCAtPiBpbnQgLT4gY2hhclxuICB2YWwgc3ViIDogdCAtPiBwb3M6aW50IC0+IGxlbjppbnQgLT4gc3RyaW5nXG5lbmRcblxubW9kdWxlIExleChJIDogSW5wdXQpIDpcbnNpZ1xuICB2YWwgbGV4IDogSS50IC0+IHRcbmVuZCA9XG5zdHJ1Y3RcbiAgbGV0IGxleCAocyA6IEkudCkgPVxuICAgIGxldCByZXN1bHQgPSByZWYgW10gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGwgPSBJLmxlbmd0aCBzIGluXG4gICAgbGV0IHJjb3VudCBjID1cbiAgICAgICgqIFtyY291bnQgY10gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGltbWVkaWF0ZSBjb25zZWN1dGl2ZVxuICAgICAgICAgb2NjdXJyZW5jZXMgb2YgW2NdLiAgQnkgc2lkZS1lZmZlY3QsIGl0IGluY3JlYXNlcyB0aGUgcmVmZXJlbmNlXG4gICAgICAgICBjb3VudGVyIFtpXS4gKilcbiAgICAgIGxldCByZWMgbG9vcCByID1cbiAgICAgICAgaWYgIWkgPSBsIHRoZW4gclxuICAgICAgICBlbHNlIGlmIEkuZ2V0IHMgIWkgPSBjIHRoZW4gKGluY3IgaTsgbG9vcCAocisxKSlcbiAgICAgICAgZWxzZSByXG4gICAgICBpblxuICAgICAgbG9vcCAxXG4gICAgaW5cbiAgICBsZXQgd29yZCAoKSA9XG4gICAgICBsZXQgc3RhcnQgPSAhaSBpblxuICAgICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgICAgYmVnaW5cbiAgICAgICAgICBpZiAhaSA9IGwgdGhlblxuICAgICAgICAgICAgV29yZChJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICAgICAgfCAnICcgfCAnXFx0JyB8ICdcXG4nIHwgJ1xccicgfCAnIycgfCAnKicgfCAnLScgfCAnKycgfCAnYCcgfCAnXFwnJ1xuICAgICAgICAgICAgfCAnXCInIHwgJ1xcXFwnIHwgJ18nIHwgJ1snIHwgJ10nIHwgJ3snIHwgJ30nIHwgJygnIHwgJyknIHwgJzonXG4gICAgICAgICAgICB8ICc7JyB8ICc+JyB8ICd+JyB8ICc8JyB8ICdAJyB8ICcmJyB8ICd8JyB8ICdeJyB8ICcuJyB8ICcvJ1xuICAgICAgICAgICAgfCAnJCcgfCAnJScgfCAnIScgfCAnPycgfCAnPScgLT5cbiAgICAgICAgICAgICAgICBXb3JkKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICAgICAgICB8IGMgLT4gaW5jciBpOyBsb29wKClcbiAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgbG9vcCgpXG4gICAgaW5cbiAgICBsZXQgbWF5YmVfbnVtYmVyICgpID1cbiAgICAgIGxldCBzdGFydCA9ICFpIGluXG4gICAgICB3aGlsZVxuICAgICAgICAhaSA8IGwgJiZcbiAgICAgICAgbWF0Y2ggSS5nZXQgcyAhaSB3aXRoXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPiB0cnVlXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgZG9cbiAgICAgICAgaW5jciBpXG4gICAgICBkb25lO1xuICAgICAgaWYgIWkgPSBsIHRoZW5cbiAgICAgICAgTnVtYmVyKEkuc3ViIHMgfnBvczpzdGFydCB+bGVuOighaS1zdGFydCkpXG4gICAgICBlbHNlXG4gICAgICAgIGJlZ2luIG1hdGNoIEkuZ2V0IHMgIWkgd2l0aFxuICAgICAgICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIHwgJyMnIHwgJyonIHwgJy0nIHwgJysnIHwgJ2AnIHwgJ1xcJycgfCAnXCInXG4gICAgICAgICAgfCAnXFxcXCcgfCAnXycgfCAnWycgfCAnXScgfCAneycgfCAnfScgfCAnKCcgfCAnKScgfCAnOicgfCAnOycgfCAnPidcbiAgICAgICAgICB8ICd+JyB8ICc8JyB8ICdAJyB8ICcmJyB8ICd8JyB8ICdeJyB8ICcuJyB8ICcvJyB8ICckJyB8ICclJyB8ICchJ1xuICAgICAgICAgIHwgJz8nIHwgJz0nIC0+XG4gICAgICAgICAgICAgIE51bWJlcihJLnN1YiBzIH5wb3M6c3RhcnQgfmxlbjooIWktc3RhcnQpKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpIDo9IHN0YXJ0O1xuICAgICAgICAgICAgICB3b3JkKClcbiAgICAgICAgZW5kXG4gICAgaW5cblxuICAgIGxldCBuX29jYyBjID0gaW5jciBpOyByY291bnQgYyBpblxuXG4gICAgd2hpbGUgIWkgPCBsIGRvXG4gICAgICBsZXQgYyA9IEkuZ2V0IHMgIWkgaW5cbiAgICAgIGxldCB3ID0gbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJyAnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTcGFjZSBlbHNlIFNwYWNlcyAobi0yKVxuICAgICAgICB8ICdcXHQnIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNwYWNlcygyKSBlbHNlIFNwYWNlcyg0Km4tMilcbiAgICAgICAgfCAnXFxuJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBOZXdsaW5lIGVsc2UgTmV3bGluZXMgKG4tMilcbiAgICAgICAgfCAnXFxyJyAtPiAoKiBlbGltaW5hdGluZyBcXHIgYnkgY29udmVydGluZyBhbGwgc3R5bGVzIHRvIHVuaXggc3R5bGUgKilcbiAgICAgICAgICBpbmNyIGk7XG4gICAgICAgICAgbGV0IHJlYyBjb3VudF9ybiB4ID1cbiAgICAgICAgICAgIGlmICFpIDwgbCAmJiBJLmdldCBzICghaSkgPSAnXFxuJyB0aGVuXG4gICAgICAgICAgICAgIGlmICFpICsgMSA8IGwgJiYgSS5nZXQgcyAoIWkrMSkgPSAnXFxyJyB0aGVuXG4gICAgICAgICAgICAgICAgKGkgOj0gIWkgKyAyOyBjb3VudF9ybiAoeCsxKSlcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgeFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJuID0gMSArIGNvdW50X3JuIDAgaW5cbiAgICAgICAgICBpZiBybiA9IDEgdGhlblxuICAgICAgICAgICAgbWF0Y2ggbl9vY2MgYyB3aXRoXG4gICAgICAgICAgICB8IDEgLT4gTmV3bGluZVxuICAgICAgICAgICAgfCB4IC0+IGFzc2VydCh4Pj0yKTsgTmV3bGluZXMoeC0yKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIChhc3NlcnQocm4+PTIpO05ld2xpbmVzKHJuLTIpKVxuICAgICAgICB8ICcjJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gSGFzaCBlbHNlIEhhc2hzIChuLTIpXG4gICAgICAgIHwgJyonICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBTdGFyIGVsc2UgU3RhcnMgKG4tMilcbiAgICAgICAgfCAnLScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIE1pbnVzIGVsc2UgTWludXNzIChuLTIpXG4gICAgICAgIHwgJysnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBQbHVzIGVsc2UgUGx1c3MgKG4tMilcbiAgICAgICAgfCAnYCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEJhY2txdW90ZSBlbHNlIEJhY2txdW90ZXMgKG4tMilcbiAgICAgICAgfCAnXFwnJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBRdW90ZSBlbHNlIFF1b3RlcyAobi0yKVxuICAgICAgICB8ICdcIicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvdWJsZXF1b3RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIERvdWJsZXF1b3RlcyAobi0yKVxuICAgICAgICB8ICdcXFxcJyAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYWNrc2xhc2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgQmFja3NsYXNocyAobi0yKVxuICAgICAgICB8ICdfJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gVW5kZXJzY29yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBVbmRlcnNjb3JlcyAobi0yKVxuICAgICAgICB8ICdbJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT2JyYWNrZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgT2JyYWNrZXRzIChuLTIpXG4gICAgICAgIHwgJ10nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYnJhY2tldCBlbHNlIENicmFja2V0cyAobi0yKVxuICAgICAgICB8ICd7JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT2JyYWNlIGVsc2UgT2JyYWNlcyAobi0yKVxuICAgICAgICB8ICd9JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ2JyYWNlIGVsc2UgQ2JyYWNlcyAobi0yKVxuICAgICAgICB8ICcoJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gT3BhcmVudGhlc2lzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIE9wYXJlbnRoZXNpc3MgKG4tMilcbiAgICAgICAgfCAnKScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIENwYXJlbnRoZXNpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBDcGFyZW50aGVzaXNzIChuLTIpXG4gICAgICAgIHwgJzonICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDb2xvbiBlbHNlIENvbG9ucyAobi0yKVxuICAgICAgICB8ICc7JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gU2VtaWNvbG9uIGVsc2UgU2VtaWNvbG9ucyAobi0yKVxuICAgICAgICB8ICc+JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gR3JlYXRlcnRoYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgR3JlYXRlcnRoYW5zIChuLTIpXG4gICAgICAgIHwgJ34nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBUaWxkZSBlbHNlIFRpbGRlcyAobi0yKVxuICAgICAgICB8ICc8JyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMgKG4tMilcbiAgICAgICAgfCAnQCcgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEF0IGVsc2UgQXRzIChuLTIpXG4gICAgICAgIHwgJyYnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBBbXBlcnNhbmQgZWxzZSBBbXBlcnNhbmRzIChuLTIpXG4gICAgICAgIHwgJ3wnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBCYXIgZWxzZSBCYXJzIChuLTIpXG4gICAgICAgIHwgJ14nICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBDYXJldCBlbHNlIENhcmV0cyAobi0yKVxuICAgICAgICB8ICcsJyAgLT4gbGV0IG4gPSBuX29jYyBjIGluIGlmIG4gPSAxIHRoZW4gQ29tbWEgZWxzZSBDb21tYXMgKG4tMilcbiAgICAgICAgfCAnLicgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIERvdCBlbHNlIERvdHMgKG4tMilcbiAgICAgICAgfCAnLycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFNsYXNoIGVsc2UgU2xhc2hzIChuLTIpXG4gICAgICAgIHwgJyQnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBEb2xsYXIgZWxzZSBEb2xsYXJzIChuLTIpXG4gICAgICAgIHwgJyUnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBQZXJjZW50IGVsc2UgUGVyY2VudHMgKG4tMilcbiAgICAgICAgfCAnPScgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIEVxdWFsIGVsc2UgRXF1YWxzIChuLTIpXG4gICAgICAgIHwgJyEnICAtPiBsZXQgbiA9IG5fb2NjIGMgaW4gaWYgbiA9IDEgdGhlbiBFeGNsYW1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBFeGNsYW1hdGlvbnMgKG4tMilcbiAgICAgICAgfCAnPycgIC0+IGxldCBuID0gbl9vY2MgYyBpbiBpZiBuID0gMSB0aGVuIFF1ZXN0aW9uIGVsc2UgUXVlc3Rpb25zIChuLTIpXG4gICAgICAgIHwgJzAnIC4uICc5JyAtPiBtYXliZV9udW1iZXIoKVxuICAgICAgICB8IGMgLT4gd29yZCgpIGluXG4gICAgICByZXN1bHQgOj0gdyA6OiAhcmVzdWx0XG4gICAgZG9uZTtcbiAgICBMaXN0LnJldiAhcmVzdWx0XG5lbmRcblxubW9kdWxlIExleF9zdHJpbmcgPSBMZXgoU3RyaW5nTGFiZWxzKVxubGV0IGxleCA9IExleF9zdHJpbmcubGV4XG5cbnR5cGUgYmlnc3RyaW5nID0gKGNoYXIsXG4gICAgICAgICAgICAgICAgICBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCxcbiAgICAgICAgICAgICAgICAgIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG5tb2R1bGUgQmlnYXJyYXlfaW5wdXQgOiBJbnB1dCB3aXRoIHR5cGUgdCA9IGJpZ3N0cmluZyA9XG5zdHJ1Y3RcbiAgbW9kdWxlIEJBID0gQmlnYXJyYXlcblxuICB0eXBlIHQgPSBiaWdzdHJpbmdcbiAgbGV0IGdldCA9IEJBLkFycmF5MS5nZXRcbiAgbGV0IGxlbmd0aCA9IEJBLkFycmF5MS5kaW1cbiAgbGV0IHN1YiBhcnIgfnBvcyB+bGVuID1cbiAgICBpZiBsZW4gPCAwIHx8IHBvcyA8IDAgfHwgcG9zICsgbGVuID4gQkEuQXJyYXkxLmRpbSBhcnJcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiQmlnYXJyYXlfaW5wdXQuc3ViXCI7XG4gICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgcyBpIChCQS5BcnJheTEudW5zYWZlX2dldCBhcnIgKGkgKyBwb3MpKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzXG5lbmRcbm1vZHVsZSBMZXhfYmlnYXJyYXkgPSBMZXgoQmlnYXJyYXlfaW5wdXQpXG5sZXQgbGV4X2JpZ2FycmF5ID0gTGV4X2JpZ2FycmF5LmxleFxuXG5sZXQgbWFrZV9zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgMCAtPiBpbnZhbGlkX2FyZyBcIk9tZF9sZXhlci5tYWtlX3NwYWNlXCJcbiAgfCAxIC0+IFNwYWNlXG4gIHwgbiAtPiBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiT21kX2xleGVyLm1ha2Vfc3BhY2VcIiBlbHNlIFNwYWNlcyAobi0yKVxuXG5cbigqXG4oKiogW3N0cmluZ19vZl90bCBsXSByZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbC5cbiAgICBbZXN0cmluZ19vZl90bCBsXSByZXR1cm5zIHRoZSBlc2NhcGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsXG4gICAgKHNhbWUgc2VtYW50aWNzIGFzIFtTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3RsIGwpXSkuICopXG5sZXQgc3RyaW5nX29mX3RsLCBlc3RyaW5nX29mX3RsID1cbiAgbGV0IGcgZXNjYXBlZCB0bCA9XG4gICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDQyIGluXG4gICAgbGV0IHJlYyBsb29wIDogJ2EgdCBsaXN0IC0+IHVuaXQgPSBmdW5jdGlvblxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgKGlmIGVzY2FwZWQgdGhlbiBTdHJpbmcuZXNjYXBlZCAoc3RyaW5nX29mX3QgZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHN0cmluZ19vZl90IGUpO1xuICAgICAgICAgIGxvb3AgdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgICAoKVxuICAgIGluXG4gICAgICBCdWZmZXIuY29udGVudHMgKGxvb3AgdGw7IGIpXG4gIGluIGcgZmFsc2UsIGcgdHJ1ZVxuKilcblxubGV0IHN0cmluZ19vZl90b2tlbnMgdGwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTI4IGluXG4gIExpc3QuaXRlciAoZnVuIGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiAoc3RyaW5nX29mX3Rva2VuIGUpKSB0bDtcbiAgQnVmZmVyLmNvbnRlbnRzIGJcblxuXG5sZXQgZGVzdHJpbmdfb2ZfdG9rZW5zID8obGltaXQ9bWF4X2ludCkgdGwgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgcmVjIGxvb3AgKGk6aW50KSAodGxpc3Q6dG9rIGxpc3QpIDogdW5pdCA9IG1hdGNoIHRsaXN0IHdpdGhcbiAgICB8IGU6OnRsIC0+XG4gICAgICAgIGlmIGxpbWl0ID0gaSB0aGVuXG4gICAgICAgICAgbG9vcCBpIFtdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYiAoU3RyaW5nLmVzY2FwZWQgKHN0cmluZ19vZl90b2tlbiBlKSk7XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiOjpcIjtcbiAgICAgICAgICAgIGxvb3AgKHN1Y2MgaSkgdGxcbiAgICAgICAgICBlbmRcbiAgICB8IFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCJbXVwiXG4gIGluXG4gICAgQnVmZmVyLmNvbnRlbnRzIChsb29wIDAgdGw7IGIpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiBvbWQ6IE1hcmtkb3duIGZyb250ZW5kIGluIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAoYykgMjAxMy0yMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICopXG4oKiBMaWNlbmNlIDogSVNDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiBodHRwOi8vd3d3LmlzYy5vcmcvZG93bmxvYWRzL3NvZnR3YXJlLXN1cHBvcnQtcG9saWN5L2lzYy1saWNlbnNlLyAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBzZGVidWcgPSB0cnVlXG5cbm9wZW4gUHJpbnRmXG5vcGVuIE9tZF9yZXByZXNlbnRhdGlvblxub3BlbiBPbWRfdXRpbHNcbm1vZHVsZSBMID0gT21kX2xleGVyXG5cbnR5cGUgciA9IE9tZF9yZXByZXNlbnRhdGlvbi50XG4oKiogYWNjdW11bGF0b3IgKGJld2FyZSwgcmV2ZXJzZWQgdG9rZW5zKSAqKVxuXG5hbmQgcCA9IE9tZF9yZXByZXNlbnRhdGlvbi50b2sgbGlzdFxuKCoqIGNvbnRleHQgaW5mb3JtYXRpb246IHByZXZpb3VzIGVsZW1lbnRzICopXG5cbmFuZCBsID0gT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0XG4oKiogdG9rZW5zIHRvIHBhcnNlICopXG5cbmFuZCBtYWluX2xvb3AgPVxuICA/aHRtbDpib29sIC0+XG4gIHIgLT4gKCogYWNjdW11bGF0b3IgKGJld2FyZSwgcmV2ZXJzZWQgdG9rZW5zKSAqKVxuICBwIC0+ICgqIGluZm86IHByZXZpb3VzIGVsZW1lbnRzICopXG4gIGwgLT4gKCogdG9rZW5zIHRvIHBhcnNlICopXG4gIE9tZF9yZXByZXNlbnRhdGlvbi50ICgqIGZpbmFsIHJlc3VsdCAqKVxuKCoqIG1vc3QgaW1wb3J0YW50IGxvb3AgKilcblxuXG4oKiogTi5CLiBQbGVhc2UgZG8gbm90IHVzZSB0YWJ1bGF0aW9ucyBpbiB5b3VyIE1hcmtkb3duIGZpbGUhICopXG5cbm1vZHVsZSB0eXBlIEVudiA9IHNpZ1xuICB2YWwgcmM6IE9tZF9yZXByZXNlbnRhdGlvbi5yZWZfY29udGFpbmVyXG4gIHZhbCBleHRlbnNpb25zIDogT21kX3JlcHJlc2VudGF0aW9uLmV4dGVuc2lvbnNcbiAgdmFsIGRlZmF1bHRfbGFuZyA6IHN0cmluZ1xuICB2YWwgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSA6IGJvb2xcbiAgdmFsIGJsaW5kX2h0bWwgOiBib29sXG4gIHZhbCBzdHJpY3RfaHRtbCA6IGJvb2xcbiAgdmFsIHdhcm5pbmcgOiBib29sXG4gIHZhbCB3YXJuX2Vycm9yIDogYm9vbFxuZW5kXG5cbm1vZHVsZSBVbml0ID0gc3RydWN0IGVuZFxuXG5tb2R1bGUgRGVmYXVsdF9lbnYgKFVuaXQ6c2lnIGVuZCkgOiBFbnYgPSBzdHJ1Y3RcbiAgbGV0IHJjID0gbmV3IE9tZF9yZXByZXNlbnRhdGlvbi5yZWZfY29udGFpbmVyXG4gIGxldCBleHRlbnNpb25zID0gW11cbiAgbGV0IGRlZmF1bHRfbGFuZyA9IFwiXCJcbiAgbGV0IGdoX3VlbXBoX29yX2JvbGRfc3R5bGUgPSB0cnVlXG4gIGxldCBibGluZF9odG1sID0gZmFsc2VcbiAgbGV0IHN0cmljdF9odG1sID0gZmFsc2VcbiAgbGV0IHdhcm5pbmcgPSBmYWxzZVxuICBsZXQgd2Fybl9lcnJvciA9IGZhbHNlXG5lbmRcblxubW9kdWxlIE1ha2UgKEVudjpFbnYpID1cbnN0cnVjdFxuICBpbmNsdWRlIEVudlxuXG4gIGxldCB3YXJuID0gT21kX3V0aWxzLndhcm4gfndlOndhcm5fZXJyb3JcblxuICAoKiogc2V0IG9mIGtub3duIEhUTUwgY29kZXMgKilcbiAgbGV0IGh0bWxjb2Rlc19zZXQgPSBTdHJpbmdTZXQub2ZfbGlzdCAoKiBUaGlzIGxpc3Qgc2hvdWxkIGJlIGNoZWNrZWQuLi4gKilcbiAgICAgICgqIGxpc3QgZXh0cmFjdGVkIGZyb206IGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2NoYXJzZXQuaHRtbCAqKVxuICAgICAgWyBcIkFFbGlnXCI7ICBcIkFhY3V0ZVwiOyAgXCJBY2lyY1wiOyAgXCJBZ3JhdmVcIjsgXCJBbHBoYVwiOyAgXCJBcmluZ1wiOyAgXCJBdGlsZGVcIjtcbiAgICAgICAgXCJBdW1sXCI7IFwiQmV0YVwiOyAgXCJDY2VkaWxcIjsgXCJDaGlcIjsgXCJEYWdnZXJcIjsgIFwiRGVsdGFcIjsgXCJFVEhcIjsgXCJFYWN1dGVcIjtcbiAgICAgICAgXCJFY2lyY1wiOyAgXCJFZ3JhdmVcIjsgIFwiRXBzaWxvblwiOyAgIFwiRXRhXCI7ICBcIkV1bWxcIjsgIFwiR2FtbWFcIjsgIFwiSWFjdXRlXCI7XG4gICAgICAgIFwiSWNpcmNcIjsgXCJJZ3JhdmVcIjsgXCJJb3RhXCI7ICBcIkl1bWxcIjsgXCJLYXBwYVwiOyBcIkxhbWJkYVwiOyBcIk11XCI7IFwiTnRpbGRlXCI7XG4gICAgICAgIFwiTnVcIjsgIFwiT0VsaWdcIjsgIFwiT2FjdXRlXCI7ICAgXCJPY2lyY1wiOyAgXCJPZ3JhdmVcIjsgIFwiT21lZ2FcIjsgIFwiT21pY3JvblwiO1xuICAgICAgICBcIk9zbGFzaFwiOyAgXCJPdGlsZGVcIjsgIFwiT3VtbFwiOyAgXCJQaGlcIjsgIFwiUGlcIjsgIFwiUHJpbWVcIjsgIFwiUHNpXCI7ICBcIlJob1wiO1xuICAgICAgICBcIlNjYXJvblwiOyAgXCJTaWdtYVwiOyAgIFwiVEhPUk5cIjsgIFwiVGF1XCI7ICBcIlRoZXRhXCI7ICAgXCJVYWN1dGVcIjsgIFwiVWNpcmNcIjtcbiAgICAgICAgXCJVZ3JhdmVcIjsgXCJVcHNpbG9uXCI7IFwiVXVtbFwiOyBcIlhpXCI7IFwiWWFjdXRlXCI7IFwiWXVtbFwiOyBcIlpldGFcIjsgXCJhYWN1dGVcIjtcbiAgICAgICAgXCJhY2lyY1wiOyBcImFjdXRlXCI7IFwiYWVsaWdcIjsgXCJhZ3JhdmVcIjsgXCJhbGVmc3ltXCI7IFwiYWxwaGFcIjsgXCJhbXBcIjsgXCJhbmRcIjtcbiAgICAgICAgXCJhbmdcIjsgXCJhcmluZ1wiOyBcImFzeW1wXCI7ICBcImF0aWxkZVwiOyBcImF1bWxcIjsgXCJiZHF1b1wiOyBcImJldGFcIjsgXCJicnZiYXJcIjtcbiAgICAgICAgXCJidWxsXCI7ICBcImNhcFwiOyAgXCJjY2VkaWxcIjsgXCJjZWRpbFwiOyAgXCJjZW50XCI7ICBcImNoaVwiOyBcImNpcmNcIjsgIFwiY2x1YnNcIjtcbiAgICAgICAgXCJjb25nXCI7ICBcImNvcHlcIjsgXCJjcmFyclwiOyBcImN1cFwiOyAgXCJjdXJyZW5cIjsgXCJkQXJyXCI7ICBcImRhZ2dlclwiOyBcImRhcnJcIjtcbiAgICAgICAgXCJkZWdcIjsgIFwiZGVsdGFcIjsgIFwiZGlhbXNcIjsgICBcImRpdmlkZVwiOyAgXCJlYWN1dGVcIjsgIFwiZWNpcmNcIjsgIFwiZWdyYXZlXCI7XG4gICAgICAgIFwiZW1wdHlcIjsgIFwiZW1zcFwiOyBcImVuc3BcIjsgIFwiZXBzaWxvblwiOyBcImVxdWl2XCI7ICBcImV0YVwiOyAgXCJldGhcIjsgXCJldW1sXCI7XG4gICAgICAgIFwiZXVyb1wiOyAgXCJleGlzdFwiOyAgXCJmbm9mXCI7ICBcImZvcmFsbFwiOyAgXCJmcmFjMTJcIjsgIFwiZnJhYzE0XCI7ICBcImZyYWMzNFwiO1xuICAgICAgICBcImZyYXNsXCI7ICBcImdhbW1hXCI7ICBcImdlXCI7IFwiZ3RcIjsgIFwiaEFyclwiOyAgXCJoYXJyXCI7IFwiaGVhcnRzXCI7ICBcImhlbGxpcFwiO1xuICAgICAgICBcImlhY3V0ZVwiOyBcImljaXJjXCI7IFwiaWV4Y2xcIjsgXCJpZ3JhdmVcIjsgXCJpbWFnZVwiOyBcImluZmluXCI7IFwiaW50XCI7IFwiaW90YVwiO1xuICAgICAgICBcImlxdWVzdFwiOyBcImlzaW5cIjsgXCJpdW1sXCI7ICBcImthcHBhXCI7IFwibEFyclwiOyBcImxhbWJkYVwiOyBcImxhbmdcIjsgXCJsYXF1b1wiO1xuICAgICAgICBcImxhcnJcIjsgIFwibGNlaWxcIjsgIFwibGRxdW9cIjsgXCJsZVwiOyAgXCJsZmxvb3JcIjsgIFwibG93YXN0XCI7IFwibG96XCI7ICBcImxybVwiO1xuICAgICAgICBcImxzYXF1b1wiOyBcImxzcXVvXCI7IFwibHRcIjsgIFwibWFjclwiOyBcIm1kYXNoXCI7IFwibWljcm9cIjsgXCJtaWRkb3RcIjsgXCJtaW51c1wiO1xuICAgICAgICBcIm11XCI7IFwibmFibGFcIjsgIFwibmJzcFwiOyBcIm5kYXNoXCI7ICBcIm5lXCI7IFwibmlcIjsgXCJub3RcIjsgIFwibm90aW5cIjsgXCJuc3ViXCI7XG4gICAgICAgIFwibnRpbGRlXCI7ICBcIm51XCI7ICAgXCJvYWN1dGVcIjsgIFwib2NpcmNcIjsgIFwib2VsaWdcIjsgICBcIm9ncmF2ZVwiOyAgXCJvbGluZVwiO1xuICAgICAgICBcIm9tZWdhXCI7IFwib21pY3JvblwiOyBcIm9wbHVzXCI7IFwib3JcIjsgXCJvcmRmXCI7IFwib3JkbVwiOyBcIm9zbGFzaFwiOyBcIm90aWxkZVwiO1xuICAgICAgICBcIm90aW1lc1wiOyAgXCJvdW1sXCI7ICBcInBhcmFcIjsgIFwicGFydFwiOyAgXCJwZXJtaWxcIjsgXCJwZXJwXCI7ICBcInBoaVwiOyAgXCJwaVwiO1xuICAgICAgICBcInBpdlwiOyAgXCJwbHVzbW5cIjsgIFwicG91bmRcIjsgXCJwcmltZVwiOyAgXCJwcm9kXCI7ICBcInByb3BcIjsgXCJwc2lcIjsgIFwicXVvdFwiO1xuICAgICAgICBcInJBcnJcIjsgIFwicmFkaWNcIjsgXCJyYW5nXCI7IFwicmFxdW9cIjsgIFwicmFyclwiOyBcInJjZWlsXCI7ICBcInJkcXVvXCI7IFwicmVhbFwiO1xuICAgICAgICBcInJlZ1wiOyBcInJmbG9vclwiOyAgXCJyaG9cIjsgXCJybG1cIjsgXCJyc2FxdW9cIjsgIFwicnNxdW9cIjsgXCJzYnF1b1wiOyBcInNjYXJvblwiO1xuICAgICAgICBcInNkb3RcIjsgIFwic2VjdFwiOyAgXCJzaHlcIjsgXCJzaWdtYVwiOyAgXCJzaWdtYWZcIjsgIFwic2ltXCI7IFwic3BhZGVzXCI7ICBcInN1YlwiO1xuICAgICAgICBcInN1YmVcIjsgXCJzdW1cIjsgXCJzdXBcIjsgXCJzdXAxXCI7ICBcInN1cDJcIjsgXCJzdXAzXCI7IFwic3VwZVwiOyBcInN6bGlnXCI7IFwidGF1XCI7XG4gICAgICAgIFwidGhlcmU0XCI7ICBcInRoZXRhXCI7IFwidGhldGFzeW1cIjsgIFwidGhpbnNwXCI7IFwidGhvcm5cIjsgIFwidGlsZGVcIjsgXCJ0aW1lc1wiO1xuICAgICAgICBcInRyYWRlXCI7IFwidUFyclwiOyBcInVhY3V0ZVwiOyAgXCJ1YXJyXCI7IFwidWNpcmNcIjsgXCJ1Z3JhdmVcIjsgXCJ1bWxcIjsgXCJ1cHNpaFwiO1xuICAgICAgICBcInVwc2lsb25cIjsgIFwidXVtbFwiOyBcIndlaWVycFwiOyBcInhpXCI7ICBcInlhY3V0ZVwiOyBcInllblwiOyAgXCJ5dW1sXCI7IFwiemV0YVwiO1xuICAgICAgICBcInp3alwiOyBcInp3bmpcIjsgXVxuXG5cbiAgKCoqIHNldCBvZiBrbm93biBpbmxpbmUgSFRNTCB0YWdzICopXG4gIGxldCBpbmxpbmVfaHRtbHRhZ3Nfc2V0ID1cbiAgICAgIChTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgICAgKCogZnJvbSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL0hUTUwvSW5saW5lX2VsZW1lbnRzICopXG4gICAgICAgICBbIFwiYlwiO1wiYmlnXCI7XCJpXCI7XCJzbWFsbFwiO1widHRcIjtcbiAgICAgICAgICAgXCJhYmJyXCI7XCJhY3JvbnltXCI7XCJjaXRlXCI7XCJjb2RlXCI7XCJkZm5cIjtcImVtXCI7XCJrYmRcIjtcInN0cm9uZ1wiO1wic2FtcFwiO1widmFyXCI7XG4gICAgICAgICAgIFwiYVwiO1wiYmRvXCI7XCJiclwiO1wiaW1nXCI7XCJtYXBcIjtcIm9iamVjdFwiO1wicVwiO1wic3BhblwiO1wic3ViXCI7XCJzdXBcIjtcbiAgICAgICAgICAgXCJidXR0b25cIjtcImlucHV0XCI7XCJsYWJlbFwiO1wic2VsZWN0XCI7XCJ0ZXh0YXJlYVwiO10pXG5cbiAgKCoqIE4uQi4gaXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBubyBjbGVhciBkaXN0aW5jdGlvbiBiZXR3ZWVuIGlubGluZVxuICAgICAgdGFncyBhbmQgYmxvY2stbGV2ZWwgdGFnczogaW4gSFRNTDQgaXQgd2FzIG5vdCBjbGVhciwgaW4gSFRNTDVcbiAgICAgIGl0J3MgZXZlbiBtb3JlIGNvbXBsaWNhdGVkLiBTbywgdGhlIGNob2ljZSAqaGVyZSogaXMgdG8gc3BlY2lmeVxuICAgICAgYSBzZXQgb2YgdGFncyBjb25zaWRlcmVkIGFzIFwiaW5saW5lXCIsIGNmLiBbaW5saW5lX2h0bWx0YWdzX3NldF0uXG4gICAgICBTbyB0aGVyZSB3aWxsIGJlIGlubGluZSB0YWdzLCBub24taW5saW5lIHRhZ3MsIGFuZCB1bmtub3duXG4gICAgICB0YWdzLiopXG5cbiAgKCoqIHNldCBvZiBIVE1MIHRhZ3MgdGhhdCBtYXkgYXBwZWFyIG91dCBvZiBhIGJvZHkgKilcbiAgbGV0IG5vdGluYm9keXRhZ3MgPSBTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgW1xuICAgICAgICBcInRpdGxlXCI7XG4gICAgICAgIFwibGlua1wiO1xuICAgICAgICBcIm1ldGFcIjtcbiAgICAgICAgXCJzdHlsZVwiO1xuICAgICAgICBcImh0bWxcIjtcbiAgICAgICAgXCJoZWFkXCI7XG4gICAgICAgIFwiYm9keVwiO1xuICAgICAgXVxuXG4gICgqKiBBbGwga25vd24gSFRNTCB0YWdzICopXG4gIGxldCBodG1sdGFnc19zZXQgPVxuICAgIFN0cmluZ1NldC51bmlvbiBub3RpbmJvZHl0YWdzXG4gICAgICAoU3RyaW5nU2V0LnVuaW9uIGlubGluZV9odG1sdGFnc19zZXRcbiAgICAgICAgIChTdHJpbmdTZXQub2ZfbGlzdFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImFcIjtcImFiYnJcIjtcImFjcm9ueW1cIjtcImFkZHJlc3NcIjtcImFwcGxldFwiO1wiYXJlYVwiO1wiYXJ0aWNsZVwiO1wiYXNpZGVcIlxuICAgICAgICAgICAgICA7XCJhdWRpb1wiO1wiYlwiO1wiYmFzZVwiO1wiYmFzZWZvbnRcIjtcImJkaVwiO1wiYmRvXCI7XCJiaWdcIjtcImJsb2NrcXVvdGVcIlxuICAgICAgICAgICAgICA7XCJiclwiO1wiYnV0dG9uXCI7XCJjYW52YXNcIjtcImNhcHRpb25cIjtcImNlbnRlclwiO1wiY2l0ZVwiO1wiY29kZVwiO1wiY29sXCJcbiAgICAgICAgICAgICAgO1wiY29sZ3JvdXBcIjtcImNvbW1hbmRcIjtcImRhdGFsaXN0XCI7XCJkZFwiO1wiZGVsXCI7XCJkZXRhaWxzXCI7XCJkZm5cIlxuICAgICAgICAgICAgICA7XCJkaWFsb2dcIjtcImRpclwiO1wiZGl2XCI7XCJkbFwiO1wiZHRcIjtcImVtXCI7XCJlbWJlZFwiO1wiZmllbGRzZXRcIlxuICAgICAgICAgICAgICA7XCJmaWdjYXB0aW9uXCI7XCJmaWd1cmVcIjtcImZvbnRcIjtcImZvb3RlclwiO1wiZm9ybVwiO1wiZnJhbWVcIjtcImZyYW1lc2V0XCJcbiAgICAgICAgICAgICAgO1wiaDJcIjtcImgzXCI7XCJoNFwiO1wiaDVcIjtcImg2XCJcbiAgICAgICAgICAgICAgO1wiaDFcIjtcImhlYWRlclwiO1wiaHJcIjtcImlcIjtcImlmcmFtZVwiO1wiaW1nXCI7XCJpbnB1dFwiO1wiaW5zXCI7XCJrYmRcIlxuICAgICAgICAgICAgICA7XCJrZXlnZW5cIjtcImxhYmVsXCI7XCJsZWdlbmRcIjtcImxpXCI7XCJtYXBcIjtcIm1hcmtcIjtcIm1lbnVcIjtcIm1ldGVyXCI7XCJuYXZcIlxuICAgICAgICAgICAgICA7XCJub2ZyYW1lc1wiO1wibm9zY3JpcHRcIjtcIm9iamVjdFwiO1wib2xcIjtcIm9wdGdyb3VwXCI7XCJvcHRpb25cIjtcIm91dHB1dFwiXG4gICAgICAgICAgICAgIDtcInBcIjtcInBhcmFtXCI7XCJwcmVcIjtcInByb2dyZXNzXCI7XCJxXCI7XCJycFwiO1wicnRcIjtcInJ1YnlcIjtcInNcIjtcInNhbXBcIlxuICAgICAgICAgICAgICA7XCJzY3JpcHRcIjtcInNlY3Rpb25cIjtcInNlbGVjdFwiO1wic21hbGxcIjtcInNvdXJjZVwiO1wic3BhblwiO1wic3RyaWtlXCJcbiAgICAgICAgICAgICAgO1wic3Ryb25nXCI7XCJzdHlsZVwiO1wic3ViXCI7XCJzdW1tYXJ5XCI7XCJzdXBcIjtcInRhYmxlXCI7XCJ0Ym9keVwiO1widGRcIlxuICAgICAgICAgICAgICA7XCJ0ZXh0YXJlYVwiO1widGZvb3RcIjtcInRoXCI7XCJ0aGVhZFwiO1widGltZVwiO1widHJcIjtcInRyYWNrXCI7XCJ0dFwiO1widVwiXG4gICAgICAgICAgICAgIDtcInVsXCI7XCJ2YXJcIjtcInZpZGVvXCI7XCJ3YnJcIlxuICAgICAgICAgICAgXSkpXG5cblxuICAoKiogVGhpcyBmdW5jdGlvbnMgZml4ZXMgYmFkIGxleGluZyB0cmVlcywgd2hpY2ggbWF5IGJlIGJ1aWx0IHdoZW5cbiAgICAgIGV4dHJhY3Rpb24gYSBwb3J0aW9uIG9mIGFub3RoZXIgbGV4aW5nIHRyZWUuICopXG4gIGxldCBmaXggbCA9XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgKCogY29kZSB0byBnZW5lcmF0ZSB3aGF0IGZvbGxvd3MuLi5cbiAgICAgICAgIExpc3QuaXRlciAoZnVuIGUgLT5cbiAgICAgICAgIFByaW50Zi5wcmludGYgXCJcbiAgICAgICAgIHwgJXM6OiVzOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAxXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyAwOjp0bClcbiAgICAgICAgIHwgJXNzIG46OiVzOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAyXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhuKzEpOjp0bClcbiAgICAgICAgIHwgJXM6OiVzcyBuOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyAzXFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhuKzEpOjp0bClcbiAgICAgICAgIHwgJXNzIGE6OiVzcyBiOjp0bCAtPlxuICAgICAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFxcXCIlcyA0XFxcXG4lIVxcXCI7XG4gICAgICAgICAgICBsb29wIGFjY3UgKCVzcyhhK2IrMik6OnRsKVwiXG4gICAgICAgICBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlIGUgZSBlKVxuICAgICAgICAgW1wiQW1wZXJzYW5kXCI7IFwiQXRcIjsgXCJCYWNrcXVvdGVcIjsgXCJCYWNrc2xhc2hcIjsgXCJCYXJcIjsgXCJDYXJldFwiOyBcIkNicmFjZVwiOyBcIkNvbG9uXCI7IFwiQ29tbWFcIjsgXCJDcGFyZW50aGVzaXNcIjsgXCJDYnJhY2tldFwiOyBcIkRvbGxhclwiOyBcIkRvdFwiOyBcIkRvdWJsZXF1b3RlXCI7IFwiRXhjbGFtYXRpb25cIjsgXCJFcXVhbFwiOyBcIkdyZWF0ZXJ0aGFuXCI7IFwiSGFzaFwiOyBcIkxlc3N0aGFuXCI7IFwiTWludXNcIjsgXCJOZXdsaW5lXCI7IFwiT2JyYWNlXCI7IFwiT3BhcmVudGhlc2lzXCI7IFwiT2JyYWNrZXRcIjsgXCJQZXJjZW50XCI7IFwiUGx1c1wiOyBcIlF1ZXN0aW9uXCI7IFwiUXVvdGVcIjsgXCJTZW1pY29sb25cIjsgXCJTbGFzaFwiOyBcIlNwYWNlXCI7IFwiU3RhclwiOyBcIlRhYlwiOyBcIlRpbGRlXCI7IFwiVW5kZXJzY29yZVwiXTtcbiAgICAgICAgIHByaW50X3N0cmluZyBcInwgeDo6dGwgLT4gbG9vcCAoeDo6YWNjdSkgdGxcXG58IFtdIC0+IExpc3QucmV2IGFjY3VcXG5cIjsgKilcbiAgICAgIHwgQW1wZXJzYW5kOjpBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyAwOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kcyBuOjpBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhuKzEpOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kOjpBbXBlcnNhbmRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhuKzEpOjp0bClcbiAgICAgIHwgQW1wZXJzYW5kcyBhOjpBbXBlcnNhbmRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEFtcGVyc2FuZCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQW1wZXJzYW5kcyhhK2IrMik6OnRsKVxuICAgICAgfCBBdDo6QXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMgMDo6dGwpXG4gICAgICB8IEF0cyBuOjpBdDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQXQgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEF0cyhuKzEpOjp0bClcbiAgICAgIHwgQXQ6OkF0cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBBdCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQXRzKG4rMSk6OnRsKVxuICAgICAgfCBBdHMgYTo6QXRzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEF0IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChBdHMoYStiKzIpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyAwOjp0bClcbiAgICAgIHwgQmFja3F1b3RlcyBuOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlOjpCYWNrcXVvdGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgQmFja3F1b3RlcyBhOjpCYWNrcXVvdGVzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEJhY2txdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQmFja3F1b3RlcyhhK2IrMik6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2tzbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzIDA6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIG46OkJhY2tzbGFzaDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2g6OkJhY2tzbGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKG4rMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIGE6OkJhY2tzbGFzaHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQmFja3NsYXNoIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChCYWNrc2xhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IEJhcjo6QmFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMgMDo6dGwpXG4gICAgICB8IEJhcnMgbjo6QmFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMobisxKTo6dGwpXG4gICAgICB8IEJhcjo6QmFycyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMobisxKTo6dGwpXG4gICAgICB8IEJhcnMgYTo6QmFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBCYXIgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEJhcnMoYStiKzIpOjp0bClcbiAgICAgIHwgQ2FyZXQ6OkNhcmV0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzIDA6OnRsKVxuICAgICAgfCBDYXJldHMgbjo6Q2FyZXQ6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENhcmV0IDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYXJldHMobisxKTo6dGwpXG4gICAgICB8IENhcmV0OjpDYXJldHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2FyZXQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENhcmV0cyhuKzEpOjp0bClcbiAgICAgIHwgQ2FyZXRzIGE6OkNhcmV0cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYXJldCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2FyZXRzKGErYisyKTo6dGwpXG4gICAgICB8IENicmFjZTo6Q2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMgMDo6dGwpXG4gICAgICB8IENicmFjZXMgbjo6Q2JyYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMobisxKTo6dGwpXG4gICAgICB8IENicmFjZTo6Q2JyYWNlcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMobisxKTo6dGwpXG4gICAgICB8IENicmFjZXMgYTo6Q2JyYWNlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFjZXMoYStiKzIpOjp0bClcbiAgICAgIHwgQ29sb246OkNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zIDA6OnRsKVxuICAgICAgfCBDb2xvbnMgbjo6Q29sb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbG9uIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb2xvbnMobisxKTo6dGwpXG4gICAgICB8IENvbG9uOjpDb2xvbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29sb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbG9ucyhuKzEpOjp0bClcbiAgICAgIHwgQ29sb25zIGE6OkNvbG9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb2xvbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29sb25zKGErYisyKTo6dGwpXG4gICAgICB8IENvbW1hOjpDb21tYTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyAwOjp0bClcbiAgICAgIHwgQ29tbWFzIG46OkNvbW1hOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDb21tYSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ29tbWFzKG4rMSk6OnRsKVxuICAgICAgfCBDb21tYTo6Q29tbWFzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENvbW1hIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDb21tYXMobisxKTo6dGwpXG4gICAgICB8IENvbW1hcyBhOjpDb21tYXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ29tbWEgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENvbW1hcyhhK2IrMik6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXM6OkNwYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzIDA6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIG46OkNwYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXM6OkNwYXJlbnRoZXNpc3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBDcGFyZW50aGVzaXNzIGE6OkNwYXJlbnRoZXNpc3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ3BhcmVudGhlc2lzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDcGFyZW50aGVzaXNzKGErYisyKTo6dGwpXG4gICAgICB8IENicmFja2V0OjpDYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyAwOjp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIG46OkNicmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBDYnJhY2tldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoQ2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBDYnJhY2tldDo6Q2JyYWNrZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIENicmFja2V0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChDYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IENicmFja2V0cyBhOjpDYnJhY2tldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ2JyYWNrZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKENicmFja2V0cyhhK2IrMik6OnRsKVxuICAgICAgfCBEb2xsYXI6OkRvbGxhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzIDA6OnRsKVxuICAgICAgfCBEb2xsYXJzIG46OkRvbGxhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKG4rMSk6OnRsKVxuICAgICAgfCBEb2xsYXI6OkRvbGxhcnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKG4rMSk6OnRsKVxuICAgICAgfCBEb2xsYXJzIGE6OkRvbGxhcnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG9sbGFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb2xsYXJzKGErYisyKTo6dGwpXG4gICAgICB8IERvdDo6RG90Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMgMDo6dGwpXG4gICAgICB8IERvdHMgbjo6RG90Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMobisxKTo6dGwpXG4gICAgICB8IERvdDo6RG90cyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMobisxKTo6dGwpXG4gICAgICB8IERvdHMgYTo6RG90cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3QgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdHMoYStiKzIpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGU6OkRvdWJsZXF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzIDA6OnRsKVxuICAgICAgfCBEb3VibGVxdW90ZXMgbjo6RG91YmxlcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIERvdWJsZXF1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChEb3VibGVxdW90ZXMobisxKTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlOjpEb3VibGVxdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRG91YmxlcXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKERvdWJsZXF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgRG91YmxlcXVvdGVzIGE6OkRvdWJsZXF1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBEb3VibGVxdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRG91YmxlcXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9uOjpFeGNsYW1hdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyAwOjp0bClcbiAgICAgIHwgRXhjbGFtYXRpb25zIG46OkV4Y2xhbWF0aW9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFeGNsYW1hdGlvbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXhjbGFtYXRpb25zKG4rMSk6OnRsKVxuICAgICAgfCBFeGNsYW1hdGlvbjo6RXhjbGFtYXRpb25zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEV4Y2xhbWF0aW9uIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFeGNsYW1hdGlvbnMobisxKTo6dGwpXG4gICAgICB8IEV4Y2xhbWF0aW9ucyBhOjpFeGNsYW1hdGlvbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXhjbGFtYXRpb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEV4Y2xhbWF0aW9ucyhhK2IrMik6OnRsKVxuICAgICAgfCBFcXVhbDo6RXF1YWw6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMgMDo6dGwpXG4gICAgICB8IEVxdWFscyBuOjpFcXVhbDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgRXF1YWwgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEVxdWFscyhuKzEpOjp0bClcbiAgICAgIHwgRXF1YWw6OkVxdWFscyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBFcXVhbCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoRXF1YWxzKG4rMSk6OnRsKVxuICAgICAgfCBFcXVhbHMgYTo6RXF1YWxzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEVxdWFsIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChFcXVhbHMoYStiKzIpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW46OkdyZWF0ZXJ0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zIDA6OnRsKVxuICAgICAgfCBHcmVhdGVydGhhbnMgbjo6R3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEdyZWF0ZXJ0aGFuIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChHcmVhdGVydGhhbnMobisxKTo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFuOjpHcmVhdGVydGhhbnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgR3JlYXRlcnRoYW4gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEdyZWF0ZXJ0aGFucyhuKzEpOjp0bClcbiAgICAgIHwgR3JlYXRlcnRoYW5zIGE6OkdyZWF0ZXJ0aGFucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBHcmVhdGVydGhhbiA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoR3JlYXRlcnRoYW5zKGErYisyKTo6dGwpXG4gICAgICB8IEhhc2g6Okhhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzIDA6OnRsKVxuICAgICAgfCBIYXNocyBuOjpIYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBIYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChIYXNocyhuKzEpOjp0bClcbiAgICAgIHwgSGFzaDo6SGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgSGFzaCAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoSGFzaHMobisxKTo6dGwpXG4gICAgICB8IEhhc2hzIGE6Okhhc2hzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIEhhc2ggNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKEhhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IExlc3N0aGFuOjpMZXNzdGhhbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyAwOjp0bClcbiAgICAgIHwgTGVzc3RoYW5zIG46Okxlc3N0aGFuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBMZXNzdGhhbiAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTGVzc3RoYW5zKG4rMSk6OnRsKVxuICAgICAgfCBMZXNzdGhhbjo6TGVzc3RoYW5zIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIExlc3N0aGFuIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChMZXNzdGhhbnMobisxKTo6dGwpXG4gICAgICB8IExlc3N0aGFucyBhOjpMZXNzdGhhbnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTGVzc3RoYW4gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKExlc3N0aGFucyhhK2IrMik6OnRsKVxuICAgICAgfCBNaW51czo6TWludXM6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MgMDo6dGwpXG4gICAgICB8IE1pbnVzcyBuOjpNaW51czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTWludXMgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE1pbnVzcyhuKzEpOjp0bClcbiAgICAgIHwgTWludXM6Ok1pbnVzcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBNaW51cyAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTWludXNzKG4rMSk6OnRsKVxuICAgICAgfCBNaW51c3MgYTo6TWludXNzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE1pbnVzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChNaW51c3MoYStiKzIpOjp0bClcbiAgICAgIHwgTmV3bGluZTo6TmV3bGluZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMgMDo6dGwpXG4gICAgICB8IE5ld2xpbmVzIG46Ok5ld2xpbmU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE5ld2xpbmUgMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE5ld2xpbmVzKG4rMSk6OnRsKVxuICAgICAgfCBOZXdsaW5lOjpOZXdsaW5lcyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBOZXdsaW5lIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChOZXdsaW5lcyhuKzEpOjp0bClcbiAgICAgIHwgTmV3bGluZXMgYTo6TmV3bGluZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgTmV3bGluZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoTmV3bGluZXMoYStiKzIpOjp0bClcbiAgICAgIHwgT2JyYWNlOjpPYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyAwOjp0bClcbiAgICAgIHwgT2JyYWNlcyBuOjpPYnJhY2U6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNlOjpPYnJhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhuKzEpOjp0bClcbiAgICAgIHwgT2JyYWNlcyBhOjpPYnJhY2VzIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFjZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXM6Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzIDA6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIG46Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXM6Ok9wYXJlbnRoZXNpc3Mgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKG4rMSk6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIGE6Ok9wYXJlbnRoZXNpc3MgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT3BhcmVudGhlc2lzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPcGFyZW50aGVzaXNzKGErYisyKTo6dGwpXG4gICAgICB8IE9icmFja2V0OjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyAwOjp0bClcbiAgICAgIHwgT2JyYWNrZXRzIG46Ok9icmFja2V0Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBPYnJhY2tldCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoT2JyYWNrZXRzKG4rMSk6OnRsKVxuICAgICAgfCBPYnJhY2tldDo6T2JyYWNrZXRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIE9icmFja2V0IDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChPYnJhY2tldHMobisxKTo6dGwpXG4gICAgICB8IE9icmFja2V0cyBhOjpPYnJhY2tldHMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgT2JyYWNrZXQgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKE9icmFja2V0cyhhK2IrMik6OnRsKVxuICAgICAgfCBQZXJjZW50OjpQZXJjZW50Ojp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyAwOjp0bClcbiAgICAgIHwgUGVyY2VudHMgbjo6UGVyY2VudDo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGVyY2VudCAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGVyY2VudHMobisxKTo6dGwpXG4gICAgICB8IFBlcmNlbnQ6OlBlcmNlbnRzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBlcmNlbnQgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBlcmNlbnRzKG4rMSk6OnRsKVxuICAgICAgfCBQZXJjZW50cyBhOjpQZXJjZW50cyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQZXJjZW50IDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQZXJjZW50cyhhK2IrMik6OnRsKVxuICAgICAgfCBQbHVzOjpQbHVzOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyAwOjp0bClcbiAgICAgIHwgUGx1c3Mgbjo6UGx1czo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUGx1cyAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUGx1c3MobisxKTo6dGwpXG4gICAgICB8IFBsdXM6OlBsdXNzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFBsdXMgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFBsdXNzKG4rMSk6OnRsKVxuICAgICAgfCBQbHVzcyBhOjpQbHVzcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBQbHVzIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChQbHVzcyhhK2IrMik6OnRsKVxuICAgICAgfCBRdWVzdGlvbjo6UXVlc3Rpb246OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMgMDo6dGwpXG4gICAgICB8IFF1ZXN0aW9ucyBuOjpRdWVzdGlvbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVlc3Rpb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1ZXN0aW9ucyhuKzEpOjp0bClcbiAgICAgIHwgUXVlc3Rpb246OlF1ZXN0aW9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdWVzdGlvbiAzXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVlc3Rpb25zKG4rMSk6OnRsKVxuICAgICAgfCBRdWVzdGlvbnMgYTo6UXVlc3Rpb25zIGI6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1ZXN0aW9uIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdWVzdGlvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgUXVvdGU6OlF1b3RlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzIDA6OnRsKVxuICAgICAgfCBRdW90ZXMgbjo6UXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFF1b3RlIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChRdW90ZXMobisxKTo6dGwpXG4gICAgICB8IFF1b3RlOjpRdW90ZXMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgUXVvdGUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFF1b3RlcyhuKzEpOjp0bClcbiAgICAgIHwgUXVvdGVzIGE6OlF1b3RlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBRdW90ZSA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoUXVvdGVzKGErYisyKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbjo6U2VtaWNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMgMDo6dGwpXG4gICAgICB8IFNlbWljb2xvbnMgbjo6U2VtaWNvbG9uOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gMlxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMobisxKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbjo6U2VtaWNvbG9ucyBuOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMobisxKTo6dGwpXG4gICAgICB8IFNlbWljb2xvbnMgYTo6U2VtaWNvbG9ucyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTZW1pY29sb24gNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNlbWljb2xvbnMoYStiKzIpOjp0bClcbiAgICAgIHwgU2xhc2g6OlNsYXNoOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCAxXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzIDA6OnRsKVxuICAgICAgfCBTbGFzaHMgbjo6U2xhc2g6OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNsYXNoIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTbGFzaHMobisxKTo6dGwpXG4gICAgICB8IFNsYXNoOjpTbGFzaHMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU2xhc2ggM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNsYXNocyhuKzEpOjp0bClcbiAgICAgIHwgU2xhc2hzIGE6OlNsYXNocyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTbGFzaCA0XFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU2xhc2hzKGErYisyKTo6dGwpXG4gICAgICB8IFNwYWNlOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyAwOjp0bClcbiAgICAgIHwgU3BhY2VzIG46OlNwYWNlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTcGFjZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3BhY2VzKG4rMSk6OnRsKVxuICAgICAgfCBTcGFjZTo6U3BhY2VzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFNwYWNlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTcGFjZXMobisxKTo6dGwpXG4gICAgICB8IFNwYWNlcyBhOjpTcGFjZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3BhY2UgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFNwYWNlcyhhK2IrMik6OnRsKVxuICAgICAgfCBTdGFyOjpTdGFyOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyAwOjp0bClcbiAgICAgIHwgU3RhcnMgbjo6U3Rhcjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgU3RhciAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoU3RhcnMobisxKTo6dGwpXG4gICAgICB8IFN0YXI6OlN0YXJzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFN0YXIgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFN0YXJzKG4rMSk6OnRsKVxuICAgICAgfCBTdGFycyBhOjpTdGFycyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBTdGFyIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChTdGFycyhhK2IrMik6OnRsKVxuICAgICAgfCBUYWI6OlRhYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzIDA6OnRsKVxuICAgICAgfCBUYWJzIG46OlRhYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDJcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKG4rMSk6OnRsKVxuICAgICAgfCBUYWI6OlRhYnMgbjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKG4rMSk6OnRsKVxuICAgICAgfCBUYWJzIGE6OlRhYnMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGFiIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUYWJzKGErYisyKTo6dGwpXG4gICAgICB8IFRpbGRlOjpUaWxkZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgMVxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyAwOjp0bClcbiAgICAgIHwgVGlsZGVzIG46OlRpbGRlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBUaWxkZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVGlsZGVzKG4rMSk6OnRsKVxuICAgICAgfCBUaWxkZTo6VGlsZGVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFRpbGRlIDNcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChUaWxkZXMobisxKTo6dGwpXG4gICAgICB8IFRpbGRlcyBhOjpUaWxkZXMgYjo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVGlsZGUgNFxcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFRpbGRlcyhhK2IrMik6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDFcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyAwOjp0bClcbiAgICAgIHwgVW5kZXJzY29yZXMgbjo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgaWYgdHJhY2tmaXggdGhlbiBlcHJpbnRmIFwiKE9NRCkgVW5kZXJzY29yZSAyXFxuXCI7XG4gICAgICAgIGxvb3AgYWNjdSAoVW5kZXJzY29yZXMobisxKTo6dGwpXG4gICAgICB8IFVuZGVyc2NvcmU6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgIGlmIHRyYWNrZml4IHRoZW4gZXByaW50ZiBcIihPTUQpIFVuZGVyc2NvcmUgM1xcblwiO1xuICAgICAgICBsb29wIGFjY3UgKFVuZGVyc2NvcmVzKG4rMSk6OnRsKVxuICAgICAgfCBVbmRlcnNjb3JlcyBhOjpVbmRlcnNjb3JlcyBiOjp0bCAtPlxuICAgICAgICBpZiB0cmFja2ZpeCB0aGVuIGVwcmludGYgXCIoT01EKSBVbmRlcnNjb3JlIDRcXG5cIjtcbiAgICAgICAgbG9vcCBhY2N1IChVbmRlcnNjb3JlcyhhK2IrMik6OnRsKXwgeDo6dGwgLT4gbG9vcCAoeDo6YWNjdSkgdGxcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjdVxuICAgIGluXG4gICAgbG9vcCBbXSBsXG5cblxuICAoKiBSZW1vdmUgYWxsIFtOTF0gYW5kIFtCcl0gYXQgdGhlIGJlZ2lubmluZy4gKilcbiAgbGV0IHJlYyByZW1vdmVfaW5pdGlhbF9uZXdsaW5lcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgKE5MIHwgQnIpIDo6IHRsIC0+IHJlbW92ZV9pbml0aWFsX25ld2xpbmVzIHRsXG4gICAgfCBsIC0+IGxcblxuXG4gICgqKiAtIHJlY29nbml6ZXMgcGFyYWdyYXBoc1xuICAgICAgLSBnbHVlcyBmb2xsb3dpbmcgYmxvY2txdW90ZXMgICopXG4gIGxldCBtYWtlX3BhcmFncmFwaHMgbWQgPVxuICAgIGxldCByZWMgbG9vcCBjcCBhY2N1ID0gZnVuY3Rpb24gKCogY3AgbWVhbnMgY3VycmVudCBwYXJhZ3JhcGggKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IGFjY3UgPVxuICAgICAgICAgIG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gYWNjdVxuICAgICAgICAgIHwgKE5MfEJyKTo6Y3AgLT4gUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdVxuICAgICAgICAgIHwgY3AgLT4gUGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdVxuICAgICAgICBpblxuICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICB8IEJsb2NrcXVvdGUgYjEgOjogQmxvY2txdW90ZSBiMiA6OiB0bCAtPlxuICAgICAgICBsb29wIGNwIGFjY3UgKEJsb2NrcXVvdGUoYjFAYjIpOjogdGwpXG4gICAgICB8IEJsb2NrcXVvdGUgYiA6OiB0bCAtPlxuICAgICAgICBsZXQgZSA9IEJsb2NrcXVvdGUobG9vcCBbXSBbXSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChVbHAgYikgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBVbHAoTGlzdC5tYXAgKGZ1biBsaSAtPiBsb29wIFtdIFtdIGxpKSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChPbHAgYikgOjogdGwgLT5cbiAgICAgICAgbGV0IGUgPSBPbHAoTGlzdC5tYXAgKGZ1biBsaSAtPiBsb29wIFtdIFtdIGxpKSBiKSBpblxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IEh0bWxfY29tbWVudCBfIGFzIGUgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGNwIHdpdGhcbiAgICAgICAgIHwgW10gLT4gbG9vcCBbXSAoZTo6YWNjdSkgdGxcbiAgICAgICAgIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBbXSAoZTo6Tkw6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCAoZTo6Y3ApIGFjY3UgdGwpXG4gICAgICB8IChSYXdfYmxvY2sgXyB8IEh0bWxfYmxvY2sgXykgYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmNwQGFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IChDb2RlX2Jsb2NrIF8gfCBIMSBfIHwgSDIgXyB8IEgzIF8gfCBINCBfIHwgSDUgXyB8IEg2IF9cbiAgICAgICAgfCBPbCBfIHwgVWwgXykgYXMgZSA6OiB0bCAtPlxuICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+IGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICB8IF8gLT4gbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICB8IFRleHQgXCJcXG5cIiA6OiBfIHwgUGFyYWdyYXBoIF8gOjogXyAtPlxuICAgICAgICBpbnZhbGlkX2FyZyBcIk9tZF9wYXJzZXIubWFrZV9wYXJhZ3JhcGhzXCJcbiAgICAgIHwgKE5MfEJyKSA6OiAoTkx8QnIpIDo6IHRsIC0+XG4gICAgICAgIGxldCB0bCA9IHJlbW92ZV9pbml0aWFsX25ld2xpbmVzIHRsIGluXG4gICAgICAgIGJlZ2luIG1hdGNoIGNwIHdpdGhcbiAgICAgICAgICB8IFtdIHwgW05MXSB8IFtCcl0gLT4gbG9vcCBbXSAoTkw6Ok5MOjphY2N1KSB0bFxuICAgICAgICAgIHwgXyAtPiBsb29wIFtdIChQYXJhZ3JhcGgoTGlzdC5yZXYgY3ApOjphY2N1KSB0bFxuICAgICAgICBlbmRcbiAgICAgIHwgWCh4KSBhcyBlIDo6IHRsIC0+XG4gICAgICAgICgqIElmIHRoZSBleHRlbnNpb24gcmV0dXJucyBhIGJsb2NrIGFzIGZpcnN0IGVsZW1lbnQsXG4gICAgICAgICAgIHRoZW4gY29uc2lkZXIgdGhlIGV4dGVuc2lvbiBhcyBhIGJsb2NrLiBIb3dldmVyXG4gICAgICAgICAgIGRvbid0IHRha2UgaXRzIGNvbnRlbnRzIGFzIGl0IGlzIHlldCwgdGhlIGNvbnRlbnRzXG4gICAgICAgICAgIG9mIHRoZSBleHRlbnNpb24gc2hhbGwgYmUgY29uc2lkZXJlZCBmaW5hbCBhcyBsYXRlXG4gICAgICAgICAgIGFzIHBvc3NpYmxlLiAqKVxuICAgICAgICBiZWdpbiBtYXRjaCB4I3RvX3QgbWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjpjcCkgYWNjdSB0bFxuICAgICAgICAgIHwgU29tZSh0KSAtPlxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8ICggSDEgX1xuICAgICAgICAgICAgICB8IEgyIF9cbiAgICAgICAgICAgICAgfCBIMyBfXG4gICAgICAgICAgICAgIHwgSDQgX1xuICAgICAgICAgICAgICB8IEg1ICBfXG4gICAgICAgICAgICAgIHwgSDYgIF9cbiAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggIF9cbiAgICAgICAgICAgICAgfCBVbCBfXG4gICAgICAgICAgICAgIHwgT2wgX1xuICAgICAgICAgICAgICB8IFVscCBfXG4gICAgICAgICAgICAgIHwgT2xwIF9cbiAgICAgICAgICAgICAgfCBDb2RlX2Jsb2NrIF9cbiAgICAgICAgICAgICAgfCBIclxuICAgICAgICAgICAgICB8IEh0bWxfYmxvY2sgX1xuICAgICAgICAgICAgICB8IFJhd19ibG9jayBfXG4gICAgICAgICAgICAgIHwgQmxvY2txdW90ZSBfXG4gICAgICAgICAgICAgICkgOjogX1xuICAgICAgICAgICAgICAtPlxuICAgICAgICAgICAgICAobWF0Y2ggY3Agd2l0aFxuICAgICAgICAgICAgICAgfCBbXSB8IFtOTF0gfCBbQnJdIC0+XG4gICAgICAgICAgICAgICAgIGxvb3AgY3AgKGU6OmFjY3UpIHRsXG4gICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgbG9vcCBbXSAoZTo6UGFyYWdyYXBoKExpc3QucmV2IGNwKTo6YWNjdSkgdGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoZTo6Y3ApIGFjY3UgdGxcbiAgICAgICAgZW5kXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmNwKSBhY2N1IHRsXG4gICAgaW5cbiAgICBsZXQgcmVtb3ZlX3doaXRlX2NydW1icyBsID1cbiAgICAgIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgfCBUZXh0IFwiIFwiIDo6IHRsXG4gICAgICAgIHwgTkw6OnRsXG4gICAgICAgIHwgQnI6OnRsXG4gICAgICAgICAgLT5cbiAgICAgICAgICBsb29wIHRsXG4gICAgICAgIHwgbCAtPiBsXG4gICAgICBpblxuICAgICAgTGlzdC5yZXYgKGxvb3AgKExpc3QucmV2IGwpKVxuICAgIGluXG4gICAgbGV0IHJlYyBjbGVhbl9wYXJhZ3JhcGhzID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGNsZWFuX3BhcmFncmFwaHNcXG5cIjtcbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+IFtdXG4gICAgICB8IFBhcmFncmFwaFtdOjp0bCAtPiB0bFxuICAgICAgfCBQYXJhZ3JhcGgocCkgOjogdGwgLT5cbiAgICAgICAgUGFyYWdyYXBoKGNsZWFuX3BhcmFncmFwaHNcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZV9pbml0aWFsX25ld2xpbmVzXG4gICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmVfd2hpdGVfY3J1bWJzKG5vcm1hbGlzZV9tZCBwKSkpKVxuICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEgxIHYgOjogdGwgLT4gSDEoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDIgdiA6OiB0bCAtPiBIMihjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBIMyB2IDo6IHRsIC0+IEgzKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEg0IHYgOjogdGwgLT4gSDQoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgSDUgdiA6OiB0bCAtPiBINShjbGVhbl9wYXJhZ3JhcGhzIHYpXG4gICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBINiB2IDo6IHRsIC0+IEg2KGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEVtcGggdiA6OiB0bCAtPiBFbXBoKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgQm9sZCB2IDo6IHRsIC0+IEJvbGQoY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBVbCB2IDo6IHRsIC0+IFVsKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IE9sIHYgOjogdGwgLT4gT2woTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVWxwIHYgOjogdGwgLT4gVWxwKExpc3QubWFwIGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgOjogY2xlYW5fcGFyYWdyYXBocyB0bFxuICAgICAgfCBPbHAgdiA6OiB0bCAtPiBPbHAoTGlzdC5tYXAgY2xlYW5fcGFyYWdyYXBocyB2KVxuICAgICAgICAgICAgICAgICAgICAgICA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgICB8IEJsb2NrcXVvdGUgdiA6OiB0bCAtPiBCbG9ja3F1b3RlKGNsZWFuX3BhcmFncmFwaHMgdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVXJsKGhyZWYsdix0aXRsZSkgOjogdGwgLT4gVXJsKGhyZWYsKGNsZWFuX3BhcmFncmFwaHMgdiksdGl0bGUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGNsZWFuX3BhcmFncmFwaHMgdGxcbiAgICAgIHwgVGV4dCBfXG4gICAgICB8IENvZGUgX1xuICAgICAgfCBDb2RlX2Jsb2NrIF9cbiAgICAgIHwgQnJcbiAgICAgIHwgSHJcbiAgICAgIHwgTkxcbiAgICAgIHwgUmVmIF9cbiAgICAgIHwgSW1nX3JlZiBfXG4gICAgICB8IFJhdyBfXG4gICAgICB8IFJhd19ibG9jayBfXG4gICAgICB8IEh0bWwgX1xuICAgICAgfCBIdG1sX2Jsb2NrIF9cbiAgICAgIHwgSHRtbF9jb21tZW50IF9cbiAgICAgIHwgSW1nIF9cbiAgICAgIHwgWCBfIGFzIHYgOjogdGwgLT4gdiA6OiBjbGVhbl9wYXJhZ3JhcGhzIHRsXG4gICAgaW5cbiAgICBsZXQgciA9IGNsZWFuX3BhcmFncmFwaHMobG9vcCBbXSBbXSBtZClcbiAgICBpblxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGNsZWFuX3BhcmFncmFwaHMgJVMgLS0+ICVTXFxuJSFcIlxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgbWQpXG4gICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCByKTtcbiAgICByXG5cblxuICAoKiogW2Fzc2VydF93ZWxsX2Zvcm1lZF0gaXMgYSBkZXZlbG9wZXIncyBmdW5jdGlvbiB0aGF0IGhlbHBzIHRvXG4gICAgICB0cmFjayBiYWRseSBjb25zdHJ1Y3RlZCB0b2tlbiBsaXN0cy4gIFRoaXMgZnVuY3Rpb24gaGFzIGFuXG4gICAgICBlZmZlY3Qgb25seSBpZiBbdHJhY2tmaXhdIGlzIFt0cnVlXS4gICopXG4gIGxldCBhc3NlcnRfd2VsbF9mb3JtZWQgKGw6dG9rIGxpc3QpIDogdW5pdCA9XG4gICAgaWYgdHJhY2tmaXggdGhlblxuICAgICAgbGV0IHJlYyBlcXVpdiBsMSBsMiA9IG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgICAgIHwgW10sIFtdIC0+IHRydWVcbiAgICAgICAgfCBUYWcgXzo6dGwxLCBUYWcgXzo6dGwyLT4gZXF1aXYgdGwxIHRsMlxuICAgICAgICB8IGUxOjp0bDEsIGUyOjp0bDIgLT4gZTEgPSBlMiAmJiBlcXVpdiB0bDEgdGwyXG4gICAgICAgIHwgXyAtPiBmYWxzZVxuICAgICAgaW5cbiAgICAgIGFzc2VydChlcXVpdiAoZml4IGwpIGwpO1xuICAgICAgKClcblxuICAoKiogR2VuZXJhdGUgZmFsbGJhY2sgZm9yIHJlZmVyZW5jZXMuICopXG4gIGxldCBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIGwgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuZXh0cmFjdF9mYWxsYmFja1xcbiUhXCI7XG4gICAgbGV0IHJlYyBsb29wIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBMaXN0LnJldiBhY2N1XG4gICAgICB8IGU6OnRsIGFzIHIgLT5cbiAgICAgICAgaWYgciA9PSByZW1haW5zIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBlLCByZW1haW5zIHdpdGhcbiAgICAgICAgICB8IENicmFja2V0cyAwLCBDYnJhY2tldDo6ciB3aGVuIHRsID0gciAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBXb3JkIFwiXVwiIDo6IGFjY3UgaW5cbiAgICAgICAgICAgIExpc3QucmV2IGFjY3VcbiAgICAgICAgICB8IENicmFja2V0cyBuLCBDYnJhY2tldHMgbTo6ciB3aGVuIG0gKyAxID0gbiAmJiB0bCA9IHIgLT5cbiAgICAgICAgICAgIGxldCBhY2N1ID0gV29yZCBcIl1cIiA6OiBhY2N1IGluXG4gICAgICAgICAgICBMaXN0LnJldiBhY2N1XG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsb29wIChlOjphY2N1KSB0bFxuICAgIGluXG4gICAgbGV0IGEgPSBsb29wIFtdIGwgaW5cbiAgICBvYmplY3RcbiAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBMLnN0cmluZ19vZl90b2tlbnMgYVxuICAgICAgbWV0aG9kIHRvX3QgPSBbVGV4dChMLnN0cmluZ19vZl90b2tlbnMgYSldXG4gICAgZW5kXG5cblxuICBsZXQgdW5pbmRlbnRfcmV2IG4gbGV4ZW1lcyA9XG4gICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgQ0FMTDogT21kX3BhcnNlci51bmluZGVudF9yZXZcXG4lIVwiO1xuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBhY2N1IGNsID0gZnVuY3Rpb25cbiAgICAgIHwgTmV3bGluZXMgeDo6KFNwYWNlfFNwYWNlcyBfKTo6TmV3bGluZXMgeTo6dGwgLT5cbiAgICAgICAgbG9vcCBhY2N1IGNsIChOZXdsaW5lcyh4K3krMik6OnRsKVxuICAgICAgfCBOZXdsaW5lOjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lcyB4Ojp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDEreCk6OnRsKVxuICAgICAgfCBOZXdsaW5lcyB4OjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDEreCk6OnRsKVxuICAgICAgfCBOZXdsaW5lOjooU3BhY2V8U3BhY2VzIF8pOjpOZXdsaW5lOjp0bCAtPlxuICAgICAgICBsb29wIGFjY3UgY2wgKE5ld2xpbmVzKDApOjp0bClcblxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyAwIGFzIG5sKTo6KFNwYWNlfFNwYWNlcyBfIGFzIHMpOjooXG4gICAgICAgICAgKE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8pXG4gICAgICAgIHwgKChTdGFyfFBsdXN8TWludXMpOjooU3BhY2V8U3BhY2VzIF8pOjpfKVxuICAgICAgICAgIGFzIHRsKSBhcyBsIC0+XG4gICAgICAgIGlmIG4gPSBMLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICBsb29wIChubDo6Y2xAYWNjdSkgW10gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyAwIGFzIG5sKTo6KFNwYWNlfFNwYWNlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICBsZXQgeCA9IEwubGVuZ3RoIHMgLSBuIGluXG4gICAgICAgIGxvb3AgKG5sOjpjbEBhY2N1KVxuICAgICAgICAgIChpZiB4ID4gMCB0aGVuIFtMLm1ha2Vfc3BhY2UgeF0gZWxzZSBbXSlcbiAgICAgICAgICB0bFxuICAgICAgfCBOZXdsaW5lcyhfKTo6XyBhcyBsIC0+XG4gICAgICAgIChjbEBhY2N1KSwgbFxuICAgICAgfCBOZXdsaW5lOjpfIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgYWNjdSAoZTo6Y2wpIHRsXG4gICAgICB8IFtdIGFzIGwgLT5cbiAgICAgICAgKGNsQGFjY3UpLCBsXG4gICAgaW5cbiAgICBtYXRjaCBsb29wIFtdIFtdIGxleGVtZXMgd2l0aFxuICAgIHwgW10sIHJpZ2h0IC0+IFtdLCByaWdodFxuICAgIHwgbCwgcmlnaHQgLT5cbiAgICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICAgbCwgcmlnaHRcblxuICBsZXQgdW5pbmRlbnQgbiBsZXhlbWVzID1cbiAgICBsZXQgZnN0LCBzbmQgPSB1bmluZGVudF9yZXYgbiBsZXhlbWVzIGluXG4gICAgTGlzdC5yZXYgZnN0LCBzbmRcblxuICBsZXQgcmVjIGlzX2JsYW5rID0gZnVuY3Rpb25cbiAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSB8IE5ld2xpbmVzIF8pIDo6IHRsIC0+XG4gICAgICBpc19ibGFuayB0bFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBzZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6U3Rhcjo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3RhcjtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlN0YXJzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7QmFja3NsYXNoXSxTdGFyOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpTdGFycyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO0JhY2tzbGFzaF0sU3RhcnMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlN0YXI6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxTdGFyOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1N0YXI7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihTdGFycyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtTdGFyO3hdLFN0YXI6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooU3RhcnMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbU3Rhcjt4XSxTdGFycyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooU3RhcnxTdGFycyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoU3RhcnxTdGFycyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBMLmxlbmd0aCBzID0gbiB0aGVuXG4gICAgICAgICAgICAgICAgU3BsaXQoW10sdGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZVxuICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICBsXG4gICAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgTm9uZVxuICAgIHwgU29tZShsZWZ0LHJpZ2h0KSAtPlxuICAgICAgaWYgaXNfYmxhbmsgbGVmdCB0aGVuIE5vbmUgZWxzZSBTb21lKGxlZnQscmlnaHQpXG5cbiAgbGV0IHNtX3VlbXBoX29yX2JvbGQgKG46aW50KSAobDpsKSA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogRklYTUU6IHVzZSBycGwgY2FsbC9yZXR1cm4gY29udmVudGlvbiAqKVxuICAgIGFzc2VydCAobj4wICYmIG48NCk7XG4gICAgbWF0Y2hcbiAgICAgIGZzcGxpdFxuICAgICAgICB+ZXhjbDooZnVuY3Rpb24gTmV3bGluZXMgXyA6OiBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKVxuICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sdGwpXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZXMgMDo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIG46OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSx0bClcbiAgICAgICAgICAgIHwgKEJhY2tzbGFzaHMgYiBhcyB4KTo6KFVuZGVyc2NvcmVzIDAgYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxzOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sVW5kZXJzY29yZTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyBuIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmVzKG4tMSk6OnRsKVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8gYXMgeCk6OihVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3M7eF0sdGwpXG4gICAgICAgICAgICB8IChVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF8gYXMgcyk6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIEwubGVuZ3RoIHMgPSBuIHRoZW5cbiAgICAgICAgICAgICAgICBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlXG4gICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgIGxcbiAgICB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBOb25lXG4gICAgfCBTb21lKGxlZnQscmlnaHQpIC0+XG4gICAgICBpZiBpc19ibGFuayBsZWZ0IHRoZW4gTm9uZSBlbHNlIFNvbWUobGVmdCxyaWdodClcblxuXG4gIGxldCBnaF91ZW1waF9vcl9ib2xkIChuOmludCkgKGw6bCkgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIEZJWE1FOiB1c2UgcnBsIGNhbGwvcmV0dXJuIGNvbnZlbnRpb24gKilcbiAgICBhc3NlcnQgKG4+MCAmJiBuPDQpO1xuICAgIG1hdGNoXG4gICAgICBmc3BsaXRcbiAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uIE5ld2xpbmVzIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6VW5kZXJzY29yZTo6dGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTtCYWNrc2xhc2hdLHRsKVxuICAgICAgICAgICAgfCBCYWNrc2xhc2g6OlVuZGVyc2NvcmVzIDA6OnRsIC0+XG4gICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7QmFja3NsYXNoXSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgIHwgQmFja3NsYXNoOjpVbmRlcnNjb3JlcyBuOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO0JhY2tzbGFzaF0sVW5kZXJzY29yZXMobi0xKTo6dGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OlVuZGVyc2NvcmU6OnRsIC0+XG4gICAgICAgICAgICAgIGlmIGIgbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFt4XSxVbmRlcnNjb3JlOjp0bClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW1VuZGVyc2NvcmU7eF0sdGwpXG4gICAgICAgICAgICB8IChCYWNrc2xhc2hzIGIgYXMgeCk6OihVbmRlcnNjb3JlcyAwIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBpZiBiIG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbeF0sczo6dGwpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtVbmRlcnNjb3JlO3hdLFVuZGVyc2NvcmU6OnRsKVxuICAgICAgICAgICAgfCAoQmFja3NsYXNocyBiIGFzIHgpOjooVW5kZXJzY29yZXMgbiBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgYiBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoW3hdLHM6OnRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbVW5kZXJzY29yZTt4XSxVbmRlcnNjb3JlcyhuLTEpOjp0bClcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfIGFzIHgpOjooVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjp0bCAtPlxuICAgICAgICAgICAgICBDb250aW51ZV93aXRoKFtzO3hdLHRsKVxuICAgICAgICAgICAgfCAoVW5kZXJzY29yZXxVbmRlcnNjb3JlcyBfIGFzIHMpOjooV29yZCBffE51bWJlciBfIGFzIHcpOjogdGwgLT5cbiAgICAgICAgICAgICAgQ29udGludWVfd2l0aChbdztzXSx0bClcbiAgICAgICAgICAgIHwgKFVuZGVyc2NvcmV8VW5kZXJzY29yZXMgXyBhcyBzKTo6dGwgLT5cbiAgICAgICAgICAgICAgaWYgTC5sZW5ndGggcyA9IG4gdGhlblxuICAgICAgICAgICAgICAgIFNwbGl0KFtdLHRsKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgQ29udGludWVcbiAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgbFxuICAgIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIE5vbmVcbiAgICB8IFNvbWUobGVmdCxyaWdodCkgLT5cbiAgICAgIGlmIGlzX2JsYW5rIGxlZnQgdGhlbiBOb25lIGVsc2UgU29tZShsZWZ0LHJpZ2h0KVxuXG5cbiAgbGV0IHVlbXBoX29yX2JvbGQgbiBsID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAoKiBGSVhNRTogdXNlIHJwbCBjYWxsL3JldHVybiBjb252ZW50aW9uICopXG4gICAgaWYgZ2hfdWVtcGhfb3JfYm9sZF9zdHlsZSB0aGVuXG4gICAgICBnaF91ZW1waF9vcl9ib2xkIG4gbFxuICAgIGVsc2VcbiAgICAgIHNtX3VlbXBoX29yX2JvbGQgbiBsXG5cbiAgbGV0IGVhdF9ibGFuayA9XG4gICAgZWF0IChmdW5jdGlvbiB8U3BhY2V8U3BhY2VzIF98TmV3bGluZXxOZXdsaW5lcyBfIC0+IHRydWV8IF8gLT4gZmFsc2UpXG5cblxuICAoKiB1c2VkIGJ5IHRhZ19fbWF5YmVfaDEgYW5kIHRhZ19fbWF5YmVfaDIgKilcbiAgbGV0IHNldGV4dF90aXRsZSBtYWluX2xvb3AgKGw6bCkgOiAoT21kX3JlcHJlc2VudGF0aW9uLnRvayBsaXN0ICogbCkgb3B0aW9uID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICBsZXQgcmVjIGRldGVjdF9iYWxhbmNlZF9icXMgbiByIGwgPVxuICAgICAgKCogSWYgdGhlcmUncyBhIGJhbGFuY2VkIChjb21wbGV0ZSkgYmFja3F1b3RlLXN0YXJ0ZWQgY29kZSBibG9ja1xuICAgICAgICAgdGhlbiBpdCBzaG91bGQgYmUgXCJpZ25vcmVkXCIsIGVsc2UgaXQgbWVhbnMgdGhlIGxpbmUgdGhhdFxuICAgICAgICAgZm9sbG93cyBpcyBwYXJ0IG9mIGEgY29kZSBibG9jaywgc28gaXQncyBub3QgZGVmaW5pbmcgYVxuICAgICAgICAgc2V0ZXh0LXN0eWxlIHRpdGxlLiAqKVxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuPSVkIHI9JVMgbD0lU1xcbiUhXCJcbiAgICAgICAgICBuIChMLnN0cmluZ19vZl90b2tlbnMgcikgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBOb25lXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIC0+XG4gICAgICAgIE5vbmVcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyAwOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSAoQmFja3F1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGVzIHg6OnRsIC0+XG4gICAgICAgIGRldGVjdF9iYWxhbmNlZF9icXMgbiAoQmFja3F1b3RlOjpCYWNrc2xhc2g6OnIpIChCYWNrcXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZTo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgdGxcbiAgICAgIHwgQmFja3NsYXNocyhtKSBhcyBiOjpCYWNrcXVvdGVzIDA6OnRsIHdoZW4gbSBtb2QgMiA9IDEgLT5cbiAgICAgICAgZGV0ZWN0X2JhbGFuY2VkX2JxcyBuIChCYWNrcXVvdGU6OmI6OnIpIChCYWNrcXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZXMgeDo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IChCYWNrcXVvdGUgYXMgYik6OnRsIHdoZW4gbiA9IDEgLT5cbiAgICAgICAgU29tZShMaXN0LnJldiAoYjo6ciksIHRsKVxuICAgICAgfCAoQmFja3F1b3RlcyB4IGFzIGIpOjp0bCB3aGVuIG4gPSB4KzIgLT5cbiAgICAgICAgU29tZShMaXN0LnJldiAoYjo6ciksIHRsKVxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBkZXRlY3RfYmFsYW5jZWRfYnFzIG4gKGU6OnIpIHRsXG4gICAgaW5cbiAgICBsZXQgcmVjIGxvb3AgciA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGlmIHIgPSBbXSB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU29tZShMaXN0LnJldiByLCBbXSlcbiAgICAgIHwgQmFja3NsYXNoOjpCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6QmFja3NsYXNoOjpyKSB0bFxuICAgICAgfCBCYWNrc2xhc2hzKG0pIGFzIGI6OkJhY2txdW90ZTo6dGwgd2hlbiBtIG1vZCAyID0gMSAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OmI6OnIpIHRsXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyAwOjp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaDo6QmFja3F1b3RlcyB4Ojp0bCAtPlxuICAgICAgICBsb29wIChCYWNrcXVvdGU6OkJhY2tzbGFzaDo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyAwOjp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZTo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMobSkgYXMgYjo6QmFja3F1b3RlcyB4Ojp0bCB3aGVuIG0gbW9kIDIgPSAxIC0+XG4gICAgICAgIGxvb3AgKEJhY2txdW90ZTo6Yjo6cikgKEJhY2txdW90ZXMoeC0xKTo6dGwpXG4gICAgICB8IEJhY2txdW90ZTo6dGwgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggZGV0ZWN0X2JhbGFuY2VkX2JxcyAxIFtdIHRsIHdpdGhcbiAgICAgICAgICB8IFNvbWUoYmwsdGwpIC0+IGxvb3AgKGJsQHIpIHRsXG4gICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgZW5kXG4gICAgICB8IEJhY2txdW90ZXMoeCk6OnRsIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIGRldGVjdF9iYWxhbmNlZF9icXMgKHgrMikgW10gdGwgd2l0aFxuICAgICAgICAgIHwgU29tZShibCx0bCkgLT4gbG9vcCAoYmxAcikgdGxcbiAgICAgICAgICB8IF8gLT4gTm9uZVxuICAgICAgICBlbmRcbiAgICAgIHwgTmV3bGluZTo6KEVxdWFsfEVxdWFscyBffE1pbnVzfE1pbnVzcyBfKTo6dGwgLT5cbiAgICAgICAgaWYgciA9IFtdIHRoZW5cbiAgICAgICAgICBOb25lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBTb21lKExpc3QucmV2IHIsIHRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZiBcIihPTUQpIE9tZF9wYXJzZXIuc2V0ZXh0X3RpdGxlIGlzIHdyb25nbHkgdXNlZCFcXG4lIVwiO1xuICAgICAgICBOb25lXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OnIpIHRsXG4gICAgaW5cbiAgICBpZiBtYXRjaCBsIHdpdGhcbiAgICAgIHwgTGVzc3RoYW46OldvcmQgXzo6XyAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYWluX2xvb3AgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCAoSHRtbF9ibG9jayBfIHwgQ29kZV9ibG9jayBfIHwgUmF3X2Jsb2NrIF8pOjpfIC0+XG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiBmYWxzZVxuICAgIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBsZXQgcmVzdWx0ID0gbG9vcCBbXSBsIGluXG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBzZXRleHRfdGl0bGUgbD0lUyByZXN1bHQ9JVMsJVNcXG4lIVwiXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKVxuICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgKHgsdGwpIC0+IEwuc3RyaW5nX29mX3Rva2VucyB4KVxuICAgICAgICAgIChtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgKHgsdGwpIC0+IEwuc3RyaW5nX29mX3Rva2VucyB0bCk7XG4gICAgICByZXN1bHRcblxuICBsZXQgdGFnX19tYXliZV9oMSAobWFpbl9sb29wOm1haW5fbG9vcCkgPVxuICAgIFRhZyhcInRhZ19fbWF5YmVfaDFcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSkgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUodGl0bGUsIHRsKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gSDEobWFpbl9sb29wIFtdIFtdIHRpdGxlKSBpblxuICAgICAgICAgICAgICAgICAgU29tZSgodGl0bGU6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6IE9tZF9wYXJzZXIudGFnX19tYXliZV9oMSBpcyB3cm9uZ2x5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCAocD0lUykhXFxuXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcCk7XG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgIClcblxuICBsZXQgdGFnX19tYXliZV9oMiAobWFpbl9sb29wOm1haW5fbG9vcCkgPVxuICAgIFRhZyhcInRhZ19fbWF5YmVfaDJcIixcbiAgICAgICAgb2JqZWN0XG4gICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gciBwIGwgPVxuICAgICAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgICB8IChbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSkgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggc2V0ZXh0X3RpdGxlIG1haW5fbG9vcCBsIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFNvbWUodGl0bGUsIHRsKSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gSDIobWFpbl9sb29wIFtdIFtdIHRpdGxlKSBpblxuICAgICAgICAgICAgICAgICAgU29tZSgodGl0bGU6OnIpLCBbTmV3bGluZV0sIHRsKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIFdhcm5pbmc6IE9tZF9wYXJzZXIudGFnX19tYXliZV9oMiBpcyB3cm9uZ2x5IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXNlZCAocD0lUykhXFxuXCJcbiAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgcCk7XG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgIClcblxuICBsZXQgdGFnX19tZCBtZCA9ICgqIFttZF0gc2hvdWxkIGJlIGluIHJldmVyc2UgKilcbiAgICBUYWcoXCJ0YWdfX21kXCIsXG4gICAgICAgIG9iamVjdFxuICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCBsID0gU29tZShtZEByLCBbXSwgbClcbiAgICAgICAgICBtZXRob2QgdG9fc3RyaW5nID0gXCJcIlxuICAgICAgICBlbmRcbiAgICAgICApXG5cbiAgKCogTGV0J3MgdGFnIHRoZSBsaW5lcyB0aGF0ICptaWdodCogYmUgdGl0bGVzIHVzaW5nIHNldGV4dC1zdHlsZS5cbiAgICAgXCJtaWdodFwiIGJlY2F1c2UgaWYgdGhleSBhcmUsIGZvciBpbnN0YW5jZSwgaW4gYSBjb2RlIHNlY3Rpb24sXG4gICAgIHRoZW4gdGhleSBhcmUgbm90IHRpdGxlcyBhdCBhbGwuICopXG4gIGxldCB0YWdfc2V0ZXh0IG1haW5fbG9vcCBsZXhlbWVzID1cbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBsZXQgcmVjIGxvb3AgcGwgcmVzID0gZnVuY3Rpb25cbiAgICAgIHwgW10gfCBbTmV3bGluZXxOZXdsaW5lcyBfXSAtPlxuICAgICAgICBwbEByZXNcbiAgICAgIHwgKE5ld2xpbmUgYXMgZTEpOjooRXF1YWx8RXF1YWxzIF8gYXMgZTIpOjp0bCAtPiAoKiBtaWdodCBiZSBhIEgxLiAqKVxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRfcmV2XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98RXF1YWx8RXF1YWxzIF8pOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSlcbiAgICAgICAgICAgICAgICAgIHwgXzo6XyBhcyBsIC0+IFNwbGl0KFtdLCBsKSlcbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCAoKFtdfChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfKSBhcyByaWdodCkpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEB0YWdfX21heWJlX2gxIG1haW5fbG9vcDo6cmVzKSkgcmlnaHRcbiAgICAgICAgICB8IFNvbWUocmxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAcmVzKSkgcmlnaHRcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKGUyOjplMTo6cGxAcmVzKSBbXVxuICAgICAgICBlbmRcbiAgICAgIHwgKE5ld2xpbmUgYXMgZTEpOjooTWludXN8TWludXNzIF8gYXMgZTIpOjp0bCAtPiAoKiBtaWdodCBiZSBhIEgyLiAqKVxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRfcmV2XG4gICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF98TWludXN8TWludXNzIF8pOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSlcbiAgICAgICAgICAgICAgICAgIHwgXzo6XyBhcyBsIC0+IFNwbGl0KFtdLCBsKSlcbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBTb21lKHJsZWZ0LCAoKFtdfChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfKSBhcyByaWdodCkpIC0+XG4gICAgICAgICAgICBsb29wIFtdIChybGVmdEAoZTI6OmUxOjpwbEB0YWdfX21heWJlX2gyIG1haW5fbG9vcDo6cmVzKSkgcmlnaHRcbiAgICAgICAgICB8IFNvbWUocmxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgICAgbG9vcCBbXSAocmxlZnRAKGUyOjplMTo6cGxAcmVzKSkgcmlnaHRcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxvb3AgW10gKGUyOjplMTo6cGxAcmVzKSBbXVxuICAgICAgICBlbmRcbiAgICAgIHwgKE5ld2xpbmUgfCBOZXdsaW5lcyBfIGFzIGUxKTo6dGwgLT5cbiAgICAgICAgbG9vcCBbXSAoZTE6OnBsQHJlcykgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6cGwpIHJlcyB0bFxuICAgIGluXG4gICAgTGlzdC5yZXYgKGxvb3AgW10gW10gbGV4ZW1lcylcblxuXG4gIGxldCBocl9tIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBuID0gZnVuY3Rpb25cbiAgICAgIHwgKChOZXdsaW5lcyBffE5ld2xpbmUpOjp0bCkgfCAoW10gYXMgdGwpIC0+XG4gICAgICAgIGlmIG4gPj0gMyB0aGVuIFNvbWUgdGwgZWxzZSBOb25lXG4gICAgICB8IChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGxvb3AgbiB0bFxuICAgICAgfCBNaW51czo6dGwgLT5cbiAgICAgICAgbG9vcCAobisxKSB0bFxuICAgICAgfCBNaW51c3MgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoeCsyK24pIHRsXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgIGluIGxvb3AgMCBsXG5cbiAgbGV0IGhyX3MgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbGV0IHJlYyBsb29wIG4gPSBmdW5jdGlvblxuICAgICAgfCAoKE5ld2xpbmV8TmV3bGluZXMgXyk6OnRsKSB8IChbXSBhcyB0bCkgLT5cbiAgICAgICAgaWYgbiA+PSAzIHRoZW4gU29tZSB0bCBlbHNlIE5vbmVcbiAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6dGwgLT5cbiAgICAgICAgbG9vcCBuIHRsXG4gICAgICB8IFN0YXI6OnRsIC0+XG4gICAgICAgIGxvb3AgKG4rMSkgdGxcbiAgICAgIHwgU3RhcnMgeDo6dGwgLT5cbiAgICAgICAgbG9vcCAoeCsyK24pIHRsXG4gICAgICB8IF86Ol8gLT5cbiAgICAgICAgTm9uZVxuICAgIGluIGxvb3AgMCBsXG5cbiAgbGV0IGhyIGwgPVxuICAgIG1hdGNoIGhyX20gbCB3aXRoXG4gICAgfCBOb25lIC0+IGhyX3MgbFxuICAgIHwgU29tZSBfIGFzIHRsIC0+IHRsXG5cbiAgKCoqIFtiY29kZV0gcGFyc2VzIGNvZGUgdGhhdCdzIGRlbGltaXRlZCBieSBiYWNrcXVvdGUocykgKilcbiAgbGV0IGJjb2RlID8oZGVmYXVsdF9sYW5nPWRlZmF1bHRfbGFuZykgciBwIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCBlLCB0bCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIC0+IGUsIHRsXG4gICAgICB8IF8gLT4gZmFpbHdpdGggXCJPbWRfcGFyc2VyLmJjb2RlIGlzIHdyb25nbHkgY2FsbGVkXCJcbiAgICBpblxuICAgIGxldCByZWMgY29kZV9ibG9jayBhY2N1ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgTm9uZVxuICAgICAgfCBCYWNrcXVvdGU6OnRsIC0+XG4gICAgICAgIGlmIGUgPSBCYWNrcXVvdGUgdGhlblxuICAgICAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YWNjdSAtPlxuICAgICAgICAgICAgU29tZShMaXN0LnJldiBhY2N1LCB0bClcbiAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjb2RlX2Jsb2NrIChCYWNrcXVvdGU6OmFjY3UpIHRsXG4gICAgICB8IChCYWNrcXVvdGVzIG4gYXMgYik6OnRsIC0+XG4gICAgICAgIGlmIGUgPSBiIHRoZW5cbiAgICAgICAgICBtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmFjY3UgLT5cbiAgICAgICAgICAgIFNvbWUoTGlzdC5yZXYgYWNjdSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBTb21lKExpc3QucmV2IGFjY3UsIHRsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgY29kZV9ibG9jayAoYjo6YWNjdSkgdGxcbiAgICAgIHwgVGFnKF8sIF8pOjp0bCAtPlxuICAgICAgICBjb2RlX2Jsb2NrIGFjY3UgdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgY29kZV9ibG9jayAoZTo6YWNjdSkgdGxcbiAgICBpblxuICAgIG1hdGNoIGNvZGVfYmxvY2sgW10gdGwgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lKGNiLCBsKSAtPlxuICAgICAgaWYgTGlzdC5leGlzdHMgKGZ1bmN0aW9uIChOZXdsaW5lfE5ld2xpbmVzIF8pIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBjYlxuICAgICAgJiYgKG1hdGNoIHAgd2l0aCBbXXxbTmV3bGluZXxOZXdsaW5lcyBfXSAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICYmIChtYXRjaCBlIHdpdGggQmFja3F1b3RlcyBuIHdoZW4gbiA+IDAgLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpXG4gICAgICB0aGVuXG4gICAgICAgIG1hdGNoIGNiIHdpdGhcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmUgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0bCBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBXb3JkIGxhbmcgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBOZXdsaW5lcyAwIDo6IHRsXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyhOZXdsaW5lOjp0bCkgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2sobGFuZywgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG4gICAgICAgIHwgV29yZCBsYW5nIDo6IChTcGFjZXxTcGFjZXMgXykgOjogTmV3bGluZXMgbiA6OiB0bFxuICAgICAgICB8IFdvcmQgbGFuZyA6OiBOZXdsaW5lcyBuIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgKE5ld2xpbmVzKG4tMSk6OnRsKSBpblxuICAgICAgICAgIFNvbWUoQ29kZV9ibG9jayhsYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBOZXdsaW5lIDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGwgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgbGV0IGNvZGUgPSBMLnN0cmluZ19vZl90b2tlbnMgY2IgaW5cbiAgICAgICAgICBTb21lKENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBjb2RlKSA6OiByLCBbQmFja3F1b3RlXSwgbClcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGNsZWFuX2Jjb2RlIHMgPVxuICAgICAgICAgIGxldCByZWMgbG9vcDEgaSA9XG4gICAgICAgICAgICBpZiBpID0gU3RyaW5nLmxlbmd0aCBzIHRoZW4gMFxuICAgICAgICAgICAgZWxzZSBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgICAgIHwgJyAnIC0+IGxvb3AxKGkrMSlcbiAgICAgICAgICAgICAgfCBfIC0+IGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCByZWMgbG9vcDIgaSA9XG4gICAgICAgICAgICBpZiBpID0gLTEgdGhlbiBTdHJpbmcubGVuZ3RoIHNcbiAgICAgICAgICAgIGVsc2UgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICAgICB8ICcgJyAtPiBsb29wMihpLTEpXG4gICAgICAgICAgICAgIHwgXyAtPiBpKzFcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGxvb3AxIDAsIGxvb3AyIChTdHJpbmcubGVuZ3RoIHMgLSAxKSB3aXRoXG4gICAgICAgICAgfCAwLCBuIHdoZW4gbiA9IFN0cmluZy5sZW5ndGggcyAtIDEgLT4gc1xuICAgICAgICAgIHwgaSwgbiAtPiBTdHJpbmcuc3ViIHMgaSAobi1pKVxuICAgICAgICBpblxuICAgICAgICBsZXQgY29kZSA9IEwuc3RyaW5nX29mX3Rva2VucyBjYiBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZiBcIihPTUQpIGNsZWFuX2Jjb2RlICVTID0+ICVTXFxuJSFcIiBjb2RlIChjbGVhbl9iY29kZSBjb2RlKTtcbiAgICAgICAgU29tZShDb2RlKGRlZmF1bHRfbGFuZywgY2xlYW5fYmNvZGUgY29kZSkgOjogciwgW0JhY2txdW90ZV0sIGwpXG5cblxuICBleGNlcHRpb24gTkxfZXhjZXB0aW9uXG4gIGV4Y2VwdGlvbiBQcmVtYXR1cmVfZW5kaW5nXG5cbiAgKCogISFETyBOT1QgREVMRVRFIFRISVMhIVxuICAgICBUaGUgcHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyB0aGUgZ2VuZXJhdGVkIHBhcnQgdGhhdCBmb2xsb3dzIHJpZ2h0IGFmdGVyLlxuICAgICBMaXN0Lml0ZXIgKGZ1biAoYSxiLGMpIC0+XG4gICAgIHByaW50X2VuZGxpbmUgKFwibGV0IHJlYWRfdW50aWxfXCJeYV5cIiA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmJeXCIgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmJeXCJzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFwiXmJeXCI6OmFjY3UpIG4gKFwiXmJeXCI6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFwiXG4gICAgICBeKGlmIGM8PlwiXCIgdGhlbiBcIlxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmNeXCIgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFwiXmNeXCJzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKFwiXmNeXCI6OmFjY3UpIG4gKFwiXmNeXCI6OnRsKVxuICAgICAgfCBcIl5jXlwiIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgXCJeY15cInMgeCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuK3grMikgdGxcbiAgICAgXCIgZWxzZSBcIlwiKV5cbiAgICAgXCIgICAgfCBcIl5iXlwiIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBcIl5iXlwicyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBcIl5iXlwiOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoXCJeYl5cIjo6YWNjdSkgKG4tMSkgKFwiXmJeXCI6OnRsKVxuICAgICAgfCBcIl5iXlwicyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBcIl5iXlwicyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgXCJeYl5cIjo6YWNjdSAtPiBcIl5iXlwicygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgXCJeYl5cInMgeDo6YWNjdSAtPiBcIl5iXlwicyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IFwiXmJeXCI6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKFwiXmJeXCJzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcXFwiT21kX3BhcnNlci5yZWFkX3VudGlsX1wiXmFeXCIgJVMgYnE9JWIgbm9fbmw9JWJcXFxcbiUhXFxcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXFxcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9cIl5hXlwiICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxcXG4lIVxcXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXCIpKVxuXG4gICAgIFsgXCJndFwiLCBcIkdyZWF0ZXJ0aGFuXCIsIFwiTGVzc3RoYW5cIjtcbiAgICAgXCJsdFwiLCBcIkxlc3N0aGFuXCIsIFwiXCI7XG4gICAgIFwiY3BhcmVudGhcIiwgXCJDcGFyZW50aGVzaXNcIiwgXCJPcGFyZW50aGVzaXNcIjtcbiAgICAgXCJvcGFyZW50aFwiLCBcIk9wYXJlbnRoZXNpc1wiLCBcIlwiO1xuICAgICBcImRxXCIsIFwiRG91YmxlcXVvdGVcIiwgXCJcIjtcbiAgICAgXCJxXCIsIFwiUXVvdGVcIiwgXCJcIjtcbiAgICAgXCJvYnJhY2tldFwiLCBcIk9icmFja2V0XCIsIFwiXCI7XG4gICAgIFwiY2JyYWNrZXRcIiwgXCJDYnJhY2tldFwiLCBcIk9icmFja2V0XCI7XG4gICAgIFwic3BhY2VcIiwgXCJTcGFjZVwiLCBcIlwiO1xuICAgICBdXG4gICopXG5cbiAgKCogYmVnaW4gZ2VuZXJhdGVkIHBhcnQgKilcblxubGV0IHJlYWRfdW50aWxfZ3QgPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChHcmVhdGVydGhhbiBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoR3JlYXRlcnRoYW5zIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEdyZWF0ZXJ0aGFuOjphY2N1KSBuIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoTGVzc3RoYW4gYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFucyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChMZXNzdGhhbjo6YWNjdSkgbiAoTGVzc3RoYW46OnRsKVxuICAgICAgfCBMZXNzdGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIChuKzEpIHRsXG4gICAgICB8IExlc3N0aGFucyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBHcmVhdGVydGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgR3JlYXRlcnRoYW5zIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIEdyZWF0ZXJ0aGFuOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoR3JlYXRlcnRoYW46OmFjY3UpIChuLTEpIChHcmVhdGVydGhhbjo6dGwpXG4gICAgICB8IEdyZWF0ZXJ0aGFucyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBHcmVhdGVydGhhbnMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFuOjphY2N1IC0+IEdyZWF0ZXJ0aGFucygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIHg6OmFjY3UgLT4gR3JlYXRlcnRoYW5zKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gR3JlYXRlcnRoYW46OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKEdyZWF0ZXJ0aGFucyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZ3QgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9ndCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9sdCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChMZXNzdGhhbnMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIG4gKExlc3N0aGFuOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBMZXNzdGhhbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgTGVzc3RoYW5zIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIExlc3N0aGFuOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoTGVzc3RoYW46OmFjY3UpIChuLTEpIChMZXNzdGhhbjo6dGwpXG4gICAgICB8IExlc3N0aGFucyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBMZXNzdGhhbnMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IExlc3N0aGFuOjphY2N1IC0+IExlc3N0aGFucygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgTGVzc3RoYW5zIHg6OmFjY3UgLT4gTGVzc3RoYW5zKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gTGVzc3RoYW46OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKExlc3N0aGFucyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfbHQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9sdCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9jcGFyZW50aCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKENwYXJlbnRoZXNpcyBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoQ3BhcmVudGhlc2lzcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChDcGFyZW50aGVzaXM6OmFjY3UpIG4gKENwYXJlbnRoZXNpczo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMCA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNocyAxIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAyIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaHMgMDo6YWNjdSkgbiB0bFxuICAgICAgfCAoQmFja3NsYXNocyB4KSA6OiB0bCAtPlxuICAgICAgICBpZiB4IG1vZCAyID0gMCB0aGVuXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCAoQmFja3F1b3RlfEJhY2txdW90ZXMgXyBhcyBlKTo6dGwgYXMgbCAtPlxuICAgICAgICBpZiBicSB0aGVuXG4gICAgICAgICAgbWF0Y2ggYmNvZGUgW10gW10gbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgICAgICB8IFNvbWUgKHIsIF8sIHRsKSAtPlxuICAgICAgICAgICAgbG9vcCAoKiBub3QgdmVyeSBwcmV0dHkga2luZCBvZiBoYWNrICopXG4gICAgICAgICAgICAgIChMaXN0LnJldihMLmxleChPbWRfYmFja2VuZC5tYXJrZG93bl9vZl9tZCByKSlAYWNjdSlcbiAgICAgICAgICAgICAgblxuICAgICAgICAgICAgICB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT3BhcmVudGhlc2lzIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXNzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9wYXJlbnRoZXNpczo6YWNjdSkgbiAoT3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgT3BhcmVudGhlc2lzIGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgT3BhcmVudGhlc2lzcyB4IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4reCsyKSB0bFxuICAgICAgICAgfCBDcGFyZW50aGVzaXMgYXMgZSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIChuLTEpIHRsXG4gICAgICB8IENwYXJlbnRoZXNpc3MgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ3BhcmVudGhlc2lzOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQ3BhcmVudGhlc2lzOjphY2N1KSAobi0xKSAoQ3BhcmVudGhlc2lzOjp0bClcbiAgICAgIHwgQ3BhcmVudGhlc2lzcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBDcGFyZW50aGVzaXNzKHgtMSk6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wXG4gICAgICAgICAgICAobWF0Y2ggYWNjdSB3aXRoXG4gICAgICAgICAgICAgfCBDcGFyZW50aGVzaXM6OmFjY3UgLT4gQ3BhcmVudGhlc2lzcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgQ3BhcmVudGhlc2lzcyB4OjphY2N1IC0+IENwYXJlbnRoZXNpc3MoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBDcGFyZW50aGVzaXM6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKENwYXJlbnRoZXNpc3MoeC0xKTo6dGwpXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgZSk6OnRsIC0+XG4gICAgICAgIGlmIG5vX25sIHRoZW5cbiAgICAgICAgICByYWlzZSBOTF9leGNlcHRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBbXSAtPlxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NwYXJlbnRoICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfY3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWIgPT4gJVNcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmwgKEwuc3RyaW5nX29mX3Rva2VucyAoZnN0IHJlcykpO1xuICAgICByZXNcblxubGV0IHJlYWRfdW50aWxfb3BhcmVudGggPyhicT1mYWxzZSkgPyhub19ubD1mYWxzZSkgbCA9XG4gICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICBsZXQgcmVjIGxvb3AgYWNjdSBuID0gZnVuY3Rpb25cbiAgICAgIHwgQmFja3NsYXNoIDo6IChPcGFyZW50aGVzaXMgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpc3MgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT3BhcmVudGhlc2lzOjphY2N1KSBuIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IE9wYXJlbnRoZXNpcyBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgT3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPcGFyZW50aGVzaXM6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChPcGFyZW50aGVzaXM6OmFjY3UpIChuLTEpIChPcGFyZW50aGVzaXM6OnRsKVxuICAgICAgfCBPcGFyZW50aGVzaXNzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9wYXJlbnRoZXNpc3MoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IE9wYXJlbnRoZXNpczo6YWNjdSAtPiBPcGFyZW50aGVzaXNzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBPcGFyZW50aGVzaXNzIHg6OmFjY3UgLT4gT3BhcmVudGhlc2lzcyh4KzEpOjphY2N1XG4gICAgICAgICAgICAgfCBfIC0+IE9wYXJlbnRoZXNpczo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoT3BhcmVudGhlc2lzcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb3BhcmVudGggJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vcGFyZW50aCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9kcSA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKERvdWJsZXF1b3RlIGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChEb3VibGVxdW90ZXMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoRG91YmxlcXVvdGU6OmFjY3UpIG4gKERvdWJsZXF1b3RlOjp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBEb3VibGVxdW90ZSBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgRG91YmxlcXVvdGVzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIERvdWJsZXF1b3RlOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoRG91YmxlcXVvdGU6OmFjY3UpIChuLTEpIChEb3VibGVxdW90ZTo6dGwpXG4gICAgICB8IERvdWJsZXF1b3RlcyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBEb3VibGVxdW90ZXMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IERvdWJsZXF1b3RlOjphY2N1IC0+IERvdWJsZXF1b3RlcygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIHg6OmFjY3UgLT4gRG91YmxlcXVvdGVzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gRG91YmxlcXVvdGU6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKERvdWJsZXF1b3Rlcyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfZHEgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9kcSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9xID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoUXVvdGUgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFF1b3RlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChRdW90ZTo6YWNjdSkgbiAoUXVvdGU6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IFF1b3RlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBRdW90ZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgUXVvdGU6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChRdW90ZTo6YWNjdSkgKG4tMSkgKFF1b3RlOjp0bClcbiAgICAgIHwgUXVvdGVzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFF1b3Rlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgUXVvdGU6OmFjY3UgLT4gUXVvdGVzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBRdW90ZXMgeDo6YWNjdSAtPiBRdW90ZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBRdW90ZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoUXVvdGVzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9xICVTIGJxPSViIG5vX25sPSViXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sO1xuICAgICBsZXQgcmVzID0gbG9vcCBbXSAwIGwgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfcSAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9vYnJhY2tldCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIG4gKE9icmFja2V0Ojp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGwgICAgfCBPYnJhY2tldCBhcyBlIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4tMSkgdGxcbiAgICAgIHwgT2JyYWNrZXRzIDAgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIE9icmFja2V0Ojp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoT2JyYWNrZXQ6OmFjY3UpIChuLTEpIChPYnJhY2tldDo6dGwpXG4gICAgICB8IE9icmFja2V0cyB4IDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBhY2N1LCBPYnJhY2tldHMoeC0xKTo6dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgIChtYXRjaCBhY2N1IHdpdGhcbiAgICAgICAgICAgICB8IE9icmFja2V0OjphY2N1IC0+IE9icmFja2V0cygwKTo6YWNjdVxuICAgICAgICAgICAgIHwgT2JyYWNrZXRzIHg6OmFjY3UgLT4gT2JyYWNrZXRzKHgrMSk6OmFjY3VcbiAgICAgICAgICAgICB8IF8gLT4gT2JyYWNrZXQ6OmFjY3UpXG4gICAgICAgICAgICAobi0xKVxuICAgICAgICAgICAgKE9icmFja2V0cyh4LTEpOjp0bClcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBlKTo6dGwgLT5cbiAgICAgICAgaWYgbm9fbmwgdGhlblxuICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgfCBlOjp0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmdcbiAgICAgaW5cbiAgICAgaWYgZGVidWcgdGhlblxuICAgICAgIGVwcmludGYgXCJPbWRfcGFyc2VyLnJlYWRfdW50aWxfb2JyYWNrZXQgJVMgYnE9JWIgbm9fbmw9JWJcXG4lIVwiIChMLnN0cmluZ19vZl90b2tlbnMgbCkgYnEgbm9fbmw7XG4gICAgIGxldCByZXMgPSBsb29wIFtdIDAgbCBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9vYnJhY2tldCAlUyBicT0lYiBub19ubD0lYiA9PiAlU1xcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubCAoTC5zdHJpbmdfb2ZfdG9rZW5zIChmc3QgcmVzKSk7XG4gICAgIHJlc1xuXG5sZXQgcmVhZF91bnRpbF9jYnJhY2tldCA/KGJxPWZhbHNlKSA/KG5vX25sPWZhbHNlKSBsID1cbiAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPSBmdW5jdGlvblxuICAgICAgfCBCYWNrc2xhc2ggOjogKENicmFja2V0IGFzIGIpIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKGI6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChDYnJhY2tldHMgMCkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQ2JyYWNrZXQ6OmFjY3UpIG4gKENicmFja2V0Ojp0bClcbiAgICAgIHwgQmFja3NsYXNocyAwIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKEJhY2tzbGFzaDo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2hzIDEgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIChCYWNrc2xhc2g6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDIgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNocyAwOjphY2N1KSBuIHRsXG4gICAgICB8IChCYWNrc2xhc2hzIHgpIDo6IHRsIC0+XG4gICAgICAgIGlmIHggbW9kIDIgPSAwIHRoZW5cbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCAoQmFja3NsYXNocyh4LzItMSk6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IChCYWNrcXVvdGV8QmFja3F1b3RlcyBfIGFzIGUpOjp0bCBhcyBsIC0+XG4gICAgICAgIGlmIGJxIHRoZW5cbiAgICAgICAgICBtYXRjaCBiY29kZSBbXSBbXSBsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoZTo6YWNjdSkgbiB0bFxuICAgICAgICAgIHwgU29tZSAociwgXywgdGwpIC0+XG4gICAgICAgICAgICBsb29wICgqIG5vdCB2ZXJ5IHByZXR0eSBraW5kIG9mIGhhY2sgKilcbiAgICAgICAgICAgICAgKExpc3QucmV2KEwubGV4KE9tZF9iYWNrZW5kLm1hcmtkb3duX29mX21kIHIpKUBhY2N1KVxuICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IChPYnJhY2tldCBhcyBiKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChiOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoT2JyYWNrZXRzIDApIDo6IHRsIC0+XG4gICAgICAgIGxvb3AgKE9icmFja2V0OjphY2N1KSBuIChPYnJhY2tldDo6dGwpXG4gICAgICB8IE9icmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoZTo6YWNjdSkgKG4rMSkgdGxcbiAgICAgIHwgT2JyYWNrZXRzIHggYXMgZSA6OiB0bCAtPlxuICAgICAgICBsb29wIChlOjphY2N1KSAobit4KzIpIHRsXG4gICAgICAgICB8IENicmFja2V0IGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBDYnJhY2tldHMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgQ2JyYWNrZXQ6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChDYnJhY2tldDo6YWNjdSkgKG4tMSkgKENicmFja2V0Ojp0bClcbiAgICAgIHwgQ2JyYWNrZXRzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIENicmFja2V0cyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgQ2JyYWNrZXQ6OmFjY3UgLT4gQ2JyYWNrZXRzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBDYnJhY2tldHMgeDo6YWNjdSAtPiBDYnJhY2tldHMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBDYnJhY2tldDo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoQ2JyYWNrZXRzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9jYnJhY2tldCAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX2NicmFja2V0ICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG5cbmxldCByZWFkX3VudGlsX3NwYWNlID8oYnE9ZmFsc2UpID8obm9fbmw9ZmFsc2UpIGwgPVxuICAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbDtcbiAgICAgbGV0IHJlYyBsb29wIGFjY3UgbiA9IGZ1bmN0aW9uXG4gICAgICB8IEJhY2tzbGFzaCA6OiAoU3BhY2UgYXMgYikgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYjo6YWNjdSkgbiB0bFxuICAgICAgfCBCYWNrc2xhc2ggOjogKFNwYWNlcyAwKSA6OiB0bCAtPlxuICAgICAgICBsb29wIChTcGFjZTo6YWNjdSkgbiAoU3BhY2U6OnRsKVxuICAgICAgfCBCYWNrc2xhc2hzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoQmFja3NsYXNoOjphY2N1KSBuIHRsXG4gICAgICB8IEJhY2tzbGFzaHMgMSA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2g6OmFjY3UpIG4gKEJhY2tzbGFzaDo6dGwpXG4gICAgICB8IEJhY2tzbGFzaHMgMiA6OiB0bCAtPlxuICAgICAgICBsb29wIChCYWNrc2xhc2hzIDA6OmFjY3UpIG4gdGxcbiAgICAgIHwgKEJhY2tzbGFzaHMgeCkgOjogdGwgLT5cbiAgICAgICAgaWYgeCBtb2QgMiA9IDAgdGhlblxuICAgICAgICAgIGxvb3AgKEJhY2tzbGFzaHMoeC8yLTEpOjphY2N1KSBuIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChCYWNrc2xhc2hzKHgvMi0xKTo6YWNjdSkgbiAoQmFja3NsYXNoOjp0bClcbiAgICAgIHwgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgZSk6OnRsIGFzIGwgLT5cbiAgICAgICAgaWYgYnEgdGhlblxuICAgICAgICAgIG1hdGNoIGJjb2RlIFtdIFtdIGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICAgICAgfCBTb21lIChyLCBfLCB0bCkgLT5cbiAgICAgICAgICAgIGxvb3AgKCogbm90IHZlcnkgcHJldHR5IGtpbmQgb2YgaGFjayAqKVxuICAgICAgICAgICAgICAoTGlzdC5yZXYoTC5sZXgoT21kX2JhY2tlbmQubWFya2Rvd25fb2ZfbWQgcikpQGFjY3UpXG4gICAgICAgICAgICAgIG5cbiAgICAgICAgICAgICAgdGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgbG9vcCAoZTo6YWNjdSkgbiB0bCAgICB8IFNwYWNlIGFzIGUgOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSAobi0xKSB0bFxuICAgICAgfCBTcGFjZXMgMCA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuXG4gICAgICAgICAgTGlzdC5yZXYgYWNjdSwgU3BhY2U6OnRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChTcGFjZTo6YWNjdSkgKG4tMSkgKFNwYWNlOjp0bClcbiAgICAgIHwgU3BhY2VzIHggOjogdGwgLT5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIExpc3QucmV2IGFjY3UsIFNwYWNlcyh4LTEpOjp0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcFxuICAgICAgICAgICAgKG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICAgICAgIHwgU3BhY2U6OmFjY3UgLT4gU3BhY2VzKDApOjphY2N1XG4gICAgICAgICAgICAgfCBTcGFjZXMgeDo6YWNjdSAtPiBTcGFjZXMoeCsxKTo6YWNjdVxuICAgICAgICAgICAgIHwgXyAtPiBTcGFjZTo6YWNjdSlcbiAgICAgICAgICAgIChuLTEpXG4gICAgICAgICAgICAoU3BhY2VzKHgtMSk6OnRsKVxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIGUpOjp0bCAtPlxuICAgICAgICBpZiBub19ubCB0aGVuXG4gICAgICAgICAgcmFpc2UgTkxfZXhjZXB0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIChlOjphY2N1KSBuIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgKGU6OmFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICBpblxuICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgZXByaW50ZiBcIk9tZF9wYXJzZXIucmVhZF91bnRpbF9zcGFjZSAlUyBicT0lYiBub19ubD0lYlxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKSBicSBub19ubDtcbiAgICAgbGV0IHJlcyA9IGxvb3AgW10gMCBsIGluXG4gICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICBlcHJpbnRmIFwiT21kX3BhcnNlci5yZWFkX3VudGlsX3NwYWNlICVTIGJxPSViIG5vX25sPSViID0+ICVTXFxuJSFcIiAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpIGJxIG5vX25sIChMLnN0cmluZ19vZl90b2tlbnMgKGZzdCByZXMpKTtcbiAgICAgcmVzXG4gICgqIC9lbmQgZ2VuZXJhdGVkIHBhcnQgKilcblxuICBsZXQgcmVhZF91bnRpbF9uZXdsaW5lIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWMgbG9vcCBhY2N1IG4gPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgKChCYWNrc2xhc2ggYXMgYSkpIDo6ICgoTmV3bGluZSBhcyBiKSkgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoYiA6OiBhIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgQmFja3NsYXNoIDo6IE5ld2xpbmVzIDAgOjogdGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZSA6OiBCYWNrc2xhc2ggOjogYWNjdSkgbiAoTmV3bGluZSA6OiB0bClcbiAgICAgIHwgKChCYWNrc2xhc2hzIDAgYXMgZSkpIDo6IHRsIC0+IGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgfCAoKEJhY2tzbGFzaHMgeCBhcyBlKSkgOjogdGwgLT5cbiAgICAgICAgaWYgKHggbW9kIDIpID0gMFxuICAgICAgICB0aGVuIGxvb3AgKGUgOjogYWNjdSkgbiB0bFxuICAgICAgICBlbHNlIGxvb3AgKChCYWNrc2xhc2hzICh4IC0gMSkpIDo6IGFjY3UpIG4gKEJhY2tzbGFzaCA6OiB0bClcbiAgICAgIHwgKChOZXdsaW5lIGFzIGUpKSA6OiB0bCAtPlxuICAgICAgICBpZiBuID0gMCB0aGVuICgoTGlzdC5yZXYgYWNjdSksIHRsKSBlbHNlIGxvb3AgKGUgOjogYWNjdSkgKG4gLSAxKSB0bFxuICAgICAgfCBOZXdsaW5lcyAwIDo6IHRsIC0+XG4gICAgICAgIGlmIG4gPSAwXG4gICAgICAgIHRoZW4gKChMaXN0LnJldiBhY2N1KSwgKE5ld2xpbmUgOjogdGwpKVxuICAgICAgICBlbHNlIGxvb3AgKE5ld2xpbmUgOjogYWNjdSkgKG4gLSAxKSAoTmV3bGluZSA6OiB0bClcbiAgICAgIHwgTmV3bGluZXMgbiA6OiB0bCAtPiAoKExpc3QucmV2IGFjY3UpLCAoKE5ld2xpbmVzIChuIC0gMSkpIDo6IHRsKSlcbiAgICAgIHwgZSA6OiB0bCAtPiBsb29wIChlIDo6IGFjY3UpIG4gdGxcbiAgICAgIHwgW10gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgIGluIGxvb3AgW10gMCBsXG5cbiAgKCogSDEsIEgyLCBIMywgLi4uICopXG4gIGxldCByZWFkX3RpdGxlIChtYWluX2xvb3A6bWFpbl9sb29wKSBuIHIgX3ByZXZpb3VzIGxleGVtZXMgPVxuICAgIGxldCB0aXRsZSwgcmVzdCA9XG4gICAgICBsZXQgcmVjIGxvb3AgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgQmFja3NsYXNoOjpIYXNoOjp0bCAtPlxuICAgICAgICAgIGxvb3AgKEhhc2g6OkJhY2tzbGFzaDo6YWNjdSkgdGxcbiAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjpIYXNoOjp0bCB3aGVuIG4gbW9kIDIgPSAxIC0+XG4gICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNocyhuLTEpOjphY2N1KSB0bFxuICAgICAgICB8IEJhY2tzbGFzaDo6SGFzaHMoaCk6OnRsIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdGwgd2l0aFxuICAgICAgICAgICAgfCBbXVxuICAgICAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxOZXdsaW5lcyBfKTo6X1xuICAgICAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6XyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNoOjpCYWNrc2xhc2g6OmFjY3UpXG4gICAgICAgICAgICAgICAgKChpZiBoID0gMCB0aGVuIEhhc2ggZWxzZSBIYXNocyhoLTEpKTo6dGwpXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaHMoaCk6OkJhY2tzbGFzaDo6YWNjdSkgdGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjpIYXNocyhoKTo6dGwgd2hlbiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIHRsIHdpdGhcbiAgICAgICAgICAgIHwgW11cbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKTo6KE5ld2xpbmV8TmV3bGluZXMgXyk6Ol9cbiAgICAgICAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyk6Ol8gLT5cbiAgICAgICAgICAgICAgbG9vcCAoSGFzaDo6QmFja3NsYXNocyhuKTo6YWNjdSlcbiAgICAgICAgICAgICAgICAoKGlmIGggPSAwIHRoZW4gSGFzaCBlbHNlIEhhc2hzKGgtMSkpOjp0bClcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBsb29wIChIYXNocyhoKTo6QmFja3NsYXNocyhuKTo6YWNjdSkgdGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCAoSGFzaHxIYXNocyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChIYXNofEhhc2hzIF8pIDo6IChTcGFjZXxTcGFjZXMgXykgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIGFzIGwpXG4gICAgICAgIHwgKChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gYXMgbClcbiAgICAgICAgfCAoW10gYXMgbClcbiAgICAgICAgfCAoU3BhY2V8U3BhY2VzIF8pIDo6IChIYXNofEhhc2hzIF8pIDo6ICgoTmV3bGluZXxOZXdsaW5lcyBfKSA6OiBfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoSGFzaHxIYXNocyBfKSA6OiAoU3BhY2V8U3BhY2VzIF8pXG4gICAgICAgICAgOjogKChOZXdsaW5lfE5ld2xpbmVzIF8pOjpfIGFzIGwpXG4gICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKSA6OiAoKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyBhcyBsKVxuICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgOjogKFtdIGFzIGwpIC0+XG4gICAgICAgICAgbWFpbl9sb29wIFtdIFtdIChMaXN0LnJldiBhY2N1KSwgbFxuICAgICAgICB8IFtIYXNofEhhc2hzIF9dXG4gICAgICAgIHwgWyhTcGFjZXxTcGFjZXMgXyk7IEhhc2h8SGFzaHMgX11cbiAgICAgICAgfCBbKFNwYWNlfFNwYWNlcyBfKTsgKEhhc2h8SGFzaHMgXyk7IChTcGFjZXxTcGFjZXMgXyldIC0+XG4gICAgICAgICAgbWFpbl9sb29wIFtdIFtdIChMaXN0LnJldiBhY2N1KSwgW11cbiAgICAgICAgfCB4Ojp0bCAtPlxuICAgICAgICAgIGxvb3AgKHg6OmFjY3UpIHRsXG4gICAgICBpblxuICAgICAgbG9vcCBbXSBsZXhlbWVzXG4gICAgaW5cbiAgICBtYXRjaCBuIHdpdGhcbiAgICB8IDEgLT4gU29tZShIMSB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCAyIC0+IFNvbWUoSDIgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgMyAtPiBTb21lKEgzIHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IDQgLT4gU29tZShINCB0aXRsZSA6OiByLCBbTmV3bGluZV0sIHJlc3QpXG4gICAgfCA1IC0+IFNvbWUoSDUgdGl0bGUgOjogciwgW05ld2xpbmVdLCByZXN0KVxuICAgIHwgNiAtPiBTb21lKEg2IHRpdGxlIDo6IHIsIFtOZXdsaW5lXSwgcmVzdClcbiAgICB8IF8gLT4gTm9uZVxuXG4gIGxldCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHAgbCA9XG4gICAgbWF0Y2ggZXh0ZW5zaW9ucyB3aXRoXG4gICAgfCBbXSAtPiBOb25lXG4gICAgfCBfIC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIChmdW4gZiAtPiBmI3BhcnNlcl9leHRlbnNpb24gciBwIGwpXG4gICAgICAgICAgfCBTb21lKG5yLCBucCwgbmwpIGFzIGUgLT5cbiAgICAgICAgICAgIChmdW4gZiAtPiBtYXRjaCBmI3BhcnNlcl9leHRlbnNpb24gbnIgbnAgbmwgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGVcbiAgICAgICAgICAgICAgIHwgU29tZSBfIGFzIGsgLT4gaylcbiAgICAgICAgKVxuICAgICAgICBOb25lXG4gICAgICAgIGV4dGVuc2lvbnNcblxuICAoKiBibG9ja3F1b3RlcyAqKVxuICBsZXQgZW1haWxzdHlsZV9xdW90aW5nIChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGxleGVtZXMgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsZXhlbWVzO1xuICAgIGxldCByZWMgbG9vcCBibG9jayBjbCA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6KE5ld2xpbmU6Ol8gYXMgdGwpIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2U6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbXSB0bFxuICAgICAgfCBOZXdsaW5lOjpHcmVhdGVydGhhbjo6U3BhY2VzIDA6OnRsIC0+XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbU3BhY2VdIHRsXG4gICAgICB8IE5ld2xpbmU6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgbjo6dGwgLT5cbiAgICAgICAgYXNzZXJ0KG4+MCk7XG4gICAgICAgIGxvb3AgKE5ld2xpbmU6OmNsQGJsb2NrKSBbU3BhY2VzKG4tMSldIHRsXG5cbiAgICAgICgqIG11bHRpIHBhcmFncmFwaCBibG9ja3F1b3RlcyB3aXRoIGVtcHR5IGxpbmVzICopXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZTo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtdIHRsXG4gICAgICB8IE5ld2xpbmVzIDA6OkdyZWF0ZXJ0aGFuOjpTcGFjZXMgMDo6dGwgLT5cbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtTcGFjZV0gdGxcbiAgICAgIHwgTmV3bGluZXMgMDo6R3JlYXRlcnRoYW46OlNwYWNlcyBuOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgbG9vcCAoTmV3bGluZXMgMDo6Y2xAYmxvY2spIFtTcGFjZXMobi0xKV0gdGxcblxuICAgICAgfCAoTmV3bGluZXMgXzo6XyBhcyBsKSB8IChbXSBhcyBsKSAtPiBmaXgoTGlzdC5yZXYoY2xAYmxvY2spKSwgbFxuICAgICAgfCBlOjp0bCAtPiBsb29wIGJsb2NrIChlOjpjbCkgdGxcbiAgICBpblxuICAgIG1hdGNoIGxvb3AgW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6YmxvY2ssIHRsIC0+XG4gICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyAlU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGJsb2NrKTtcbiAgICAgIFNvbWUoKEJsb2NrcXVvdGUobWFpbl9sb29wIFtdIFtdIGJsb2NrKTo6ciksIFtOZXdsaW5lXSwgdGwpXG4gICAgfCBfIC0+XG4gICAgICBOb25lXG5cblxuICAoKiBtYXliZSBhIHJlZmVyZW5jZSAqKVxuICBsZXQgbWF5YmVfcmVmZXJlbmNlIChtYWluX2xvb3A6bWFpbl9sb29wKSByYyByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgICgqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gd2Uga25vdyBpdCdzIG5vdCBhIGxpbmsgYWx0aG91Z2hcbiAgICAgICBpdCBzdGFydGVkIHdpdGggYSAnWycgKilcbiAgICAoKiBTbyBpdCBjb3VsZCBiZSBhIHJlZmVyZW5jZSBvciBhIGxpbmsgZGVmaW5pdGlvbi4gKilcbiAgICBsZXQgcmVjIG1heWJlX3JlZiBsID1cbiAgICAgIGxldCB0ZXh0LCByZW1haW5zID0gcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGlzIG5vIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBpZiAodHJ5IGlnbm9yZShyZWFkX3VudGlsX29icmFja2V0IH5icTp0cnVlIHRleHQpOyB0cnVlXG4gICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IGZhbHNlKSB0aGVuXG4gICAgICAgIHJhaXNlIFByZW1hdHVyZV9lbmRpbmc7ICgqIDwtLSBpbGwtcGxhY2VkIG9wZW4gYnJhY2tldCAqKVxuICAgICAgbGV0IGJsYW5rLCByZW1haW5zID0gcmVhZF91bnRpbF9vYnJhY2tldCB+YnE6dHJ1ZSByZW1haW5zIGluXG4gICAgICAoKiBjaGVjayB0aGF0IHRoZXJlIGFyZSBubyB1bndhbnRlZCBjaGFyYWN0ZXJzIGJldHdlZW4gQ0IgYW5kIE9CLiAqKVxuICAgICAgaWYgZWF0IChsZXQgZmxhZyA9IHJlZiB0cnVlIGluXG4gICAgICAgICAgICAgIGZ1bmN0aW9uICgqIGFsbG93IG9ubHkgYSBzcGFjZSwgbXVsdGlwbGUgc3BhY2VzLCBvciBhIG5ld2xpbmUgKilcbiAgICAgICAgICAgICAgfCBOZXdsaW5lIC0+ICFmbGFnICYmIChmbGFnIDo9IGZhbHNlOyB0cnVlKVxuICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXykgLT4gIWZsYWcgJiYgKGZsYWcgOj0gZmFsc2U7IHRydWUpXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgYmxhbmsgPD4gW10gdGhlblxuICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nICgqIDwtLSBub3QgYSByZWd1bGFyIHJlZmVyZW5jZSAqKVxuICAgICAgZWxzZVxuICAgICAgICBtYXRjaCByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIHJlbWFpbnMgd2l0aFxuICAgICAgICB8IFtdLCByZW1haW5zIC0+XG4gICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVtYWlucyAoT2JyYWNrZXQ6OmwpIGluXG4gICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIHRleHQgaW4gKCogaW1wbGljaXQgYW5jaG9yICopXG4gICAgICAgICAgU29tZSgoKFJlZihyYywgaWQsIGlkLCBmYWxsYmFjaykpOjpyKSwgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICAgICAgfCBpZCwgcmVtYWlucyAtPlxuICAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHJlbWFpbnMgKE9icmFja2V0OjpsKSBpblxuICAgICAgICAgIFNvbWUoKChSZWYocmMsIEwuc3RyaW5nX29mX3Rva2VucyBpZCxcbiAgICAgICAgICAgICAgICAgICAgIEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0LCBmYWxsYmFjaykpOjpyKSxcbiAgICAgICAgICAgICAgIFtDYnJhY2tldF0sIHJlbWFpbnMpXG4gICAgaW5cbiAgICBsZXQgcmVjIG1heWJlX25vbnJlZ3VsYXJfcmVmIGwgPVxuICAgICAgbGV0IHRleHQsIHJlbWFpbnMgPSByZWFkX3VudGlsX2NicmFja2V0IH5icTp0cnVlIGwgaW5cbiAgICAgICgqIGNoZWNrIHRoYXQgdGhlcmUgaXMgbm8gaWxsLXBsYWNlZCBvcGVuIGJyYWNrZXQgKilcbiAgICAgIGlmICh0cnkgaWdub3JlKHJlYWRfdW50aWxfb2JyYWNrZXQgfmJxOnRydWUgdGV4dCk7IHRydWVcbiAgICAgICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgLT4gZmFsc2UpIHRoZW5cbiAgICAgICAgcmFpc2UgUHJlbWF0dXJlX2VuZGluZzsgKCogPC0tIGlsbC1wbGFjZWQgb3BlbiBicmFja2V0ICopXG4gICAgICBsZXQgZmFsbGJhY2sgPSBleHRyYWN0X2ZhbGxiYWNrIG1haW5fbG9vcCByZW1haW5zIChPYnJhY2tldDo6bCkgaW5cbiAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyB0ZXh0IGluICgqIGltcGxpY2l0IGFuY2hvciAqKVxuICAgICAgU29tZSgoKFJlZihyYywgaWQsIGlkLCBmYWxsYmFjaykpOjpyKSwgW0NicmFja2V0XSwgcmVtYWlucylcbiAgICBpblxuICAgIGxldCByZWMgbWF5YmVfZGVmIGwgPVxuICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIHdpdGhcbiAgICAgIHwgXywgW10gLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgfCBpZCwgKENvbG9uOjooU3BhY2V8U3BhY2VzIF8pOjpyZW1haW5zKVxuICAgICAgfCBpZCwgKENvbG9uOjpyZW1haW5zKSAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgX3xOZXdsaW5lfE5ld2xpbmVzIF8pOjogXyBhcyBsIC0+IFNwbGl0KFtdLCBsKVxuICAgICAgICAgICAgICAgICAgfCBlOjp0bCAtPiBDb250aW51ZVxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBTcGxpdChbXSxbXSkpXG4gICAgICAgICAgICAgIHJlbWFpbnNcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIHwgU29tZShbXSwgXykgLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgIHwgU29tZSh1cmwsIHJlbWFpbnMpIC0+XG4gICAgICAgICAgICBsZXQgdGl0bGUsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIGVhdFxuICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uIHwgKFNwYWNlfFNwYWNlcyBffE5ld2xpbmV8TmV3bGluZXMgXykgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgIHJlbWFpbnNcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcygwKTo6dGwgLT4gW10sIHRsXG4gICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBRdW90ZXMoMCk6OnRsIC0+IFtdLCB0bFxuICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiByZWFkX3VudGlsX3EgfmJxOnRydWUgdGxcbiAgICAgICAgICAgICAgfCBPcGFyZW50aGVzaXM6OnRsLT4gcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB0bFxuICAgICAgICAgICAgICB8IGwgLT4gW10sIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdXJsID1cbiAgICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCB1cmwgPiAyICYmIHVybC5bMF0gPSAnPCdcbiAgICAgICAgICAgICAgICAgJiYgdXJsLltTdHJpbmcubGVuZ3RoIHVybCAtIDFdID0gJz4nIHRoZW5cbiAgICAgICAgICAgICAgICBTdHJpbmcuc3ViIHVybCAxIChTdHJpbmcubGVuZ3RoIHVybCAtIDIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICB1cmxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByYyNhZGRfcmVmIChMLnN0cmluZ19vZl90b2tlbnMgaWQpIChMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUpIHVybDtcbiAgICAgICAgICAgIFNvbWUociwgW05ld2xpbmVdLCByZW1haW5zKVxuICAgICAgICBlbmRcbiAgICAgIHwgXyAtPiByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgaW5cbiAgICB0cnlcbiAgICAgIG1heWJlX3JlZiBsXG4gICAgd2l0aCB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgIHRyeVxuICAgICAgICBtYXliZV9kZWYgbFxuICAgICAgd2l0aFxuICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgIHRyeVxuICAgICAgICAgIG1heWJlX25vbnJlZ3VsYXJfcmVmIGxcbiAgICAgICAgd2l0aFxuICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgICBOb25lXG5cblxuICAoKiogbWF5YmUgYSBsaW5rICopXG4gIGxldCBtYXliZV9saW5rIChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGwgPVxuICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGlua1xcblwiO1xuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGxldCByZWFkX3VybCBuYW1lIGwgPVxuICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICBlcHJpbnRmIFwiKE9NRCkgIyBtYXliZV9saW5rPnJlYWRfdXJsICVTXFxuXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgIHRyeVxuICAgICAgICBsZXQgbF9jcCwgcl9jcCA9XG4gICAgICAgICAgcmVhZF91bnRpbF9jcGFyZW50aCB+bm9fbmw6dHJ1ZSB+YnE6ZmFsc2UgbFxuICAgICAgICBpblxuICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IGxfY3A9JVMgcl9jcD0lU1xcbiUhXCJcbiAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGxfY3ApXG4gICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyByX2NwKTtcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGxfZHEsIHJfZHEgPVxuICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+bm9fbmw6dHJ1ZSB+YnE6ZmFsc2UgbFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiBsX2RxPSVTIHJfZHE9JVNcXG4lIVwiXG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGxfZHEpXG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHJfZHEpO1xuICAgICAgICAgICgqIG1heWJlIHRpdGxlICopXG4gICAgICAgICAgaWYgTGlzdC5sZW5ndGggbF9jcCA+IExpc3QubGVuZ3RoIGxfZHEgdGhlbiAoKiB0aXRsZSAqKVxuICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWF5YmVfbGluayA+PiB0aXRsZVxcbiUhXCI7XG4gICAgICAgICAgICAgIGxldCB1cmwgPVxuICAgICAgICAgICAgICAgIG1hdGNoIExpc3QucmV2IGxfZHEgd2l0aFxuICAgICAgICAgICAgICAgIHwgKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF8pOjooTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsXG4gICAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgICBMLnN0cmluZ19vZl90b2tlbnMgKExpc3QucmV2IHRsKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgTC5zdHJpbmdfb2ZfdG9rZW5zIGxfZHFcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRpdGxlLCByZXN0ID0gcmVhZF91bnRpbF9kcSB+bm9fbmw6ZmFsc2UgfmJxOmZhbHNlIHJfZHEgaW5cbiAgICAgICAgICAgICAgbGV0IHJlc3QgPSBzbmQocmVhZF91bnRpbF9jcGFyZW50aCByZXN0KSBpblxuICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICAgU29tZShVcmwodXJsLCBuYW1lLCB0aXRsZSkgOjogciwgW0NwYXJlbnRoZXNpc10sIHJlc3QpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlICgqIG5vIHRpdGxlICopXG4gICAgICAgICAgICByYWlzZSBQcmVtYXR1cmVfZW5kaW5nXG4gICAgICAgIHdpdGggTkxfZXhjZXB0aW9uIHwgUHJlbWF0dXJlX2VuZGluZyAtPiAoKiBubyB0aXRsZSAqKVxuICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYXliZV9saW5rID4+IG5vIHRpdGxlXFxuJSFcIjtcbiAgICAgICAgICAgIGxldCB1cmwgPSBtYXRjaCBMaXN0LnJldiBsX2NwIHdpdGhcbiAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OihOZXdsaW5lfFNwYWNlfFNwYWNlcyBfKTo6dGxcbiAgICAgICAgICAgICAgfCAoTmV3bGluZXxTcGFjZXxTcGFjZXMgXyk6OnRsIC0+IExpc3QucmV2IHRsXG4gICAgICAgICAgICAgIHwgXyAtPiBsX2NwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRpdGxlLCByZXN0ID0gW10sIHJfY3AgaW5cbiAgICAgICAgICAgIGxldCB1cmwgPSBMLnN0cmluZ19vZl90b2tlbnMgdXJsIGluXG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgIFNvbWUoVXJsKHVybCwgbmFtZSwgdGl0bGUpIDo6IHIsIFtDcGFyZW50aGVzaXNdLCByZXN0KVxuICAgICAgICAgIGVuZFxuICAgICAgd2l0aCBOTF9leGNlcHRpb24gfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgIE5vbmVcbiAgICBpblxuICAgIGxldCByZWFkX25hbWUgbCA9XG4gICAgICAoKiBpdCdzIG5vdCByZWFsbHkgdGhlIFwibmFtZVwiIG9mIGEgVVJMIGJ1dCB3aGF0XG4gICAgICAgICBjb3JyZXNwb25kcyB0byB0aGUgaW5uZXIgSFRNTCBvZiBhbiBIVE1MICdBJyB0YWcgKilcbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpICMgbWF5YmVfbGluaz4gcmVhZF9uYW1lXFxuXCI7XG4gICAgICB0cnlcbiAgICAgICAgbWF0Y2ggcmVhZF91bnRpbF9jYnJhY2tldCB+YnE6dHJ1ZSBsIHdpdGhcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKGVhdF9ibGFuayB0bClcbiAgICAgICAgfCBuYW1lLCAoT3BhcmVudGhlc2lzcyAwOjp0bCkgLT5cbiAgICAgICAgICByZWFkX3VybCAobWFpbl9sb29wIFtdIFtPYnJhY2tldF0gbmFtZSkgKE9wYXJlbnRoZXNpczo6dGwpXG4gICAgICAgIHwgbmFtZSwgKE9wYXJlbnRoZXNpc3Mgbjo6dGwpIC0+XG4gICAgICAgICAgcmVhZF91cmwgKG1haW5fbG9vcCBbXSBbT2JyYWNrZXRdIG5hbWUpIChPcGFyZW50aGVzaXNzKG4tMSk6OnRsKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICBOb25lXG4gICAgICB3aXRoIFByZW1hdHVyZV9lbmRpbmcgfCBOTF9leGNlcHRpb24gLT4gTm9uZVxuICAgIGluXG4gICAgcmVhZF9uYW1lIGxcblxuXG4gIGxldCBoYXNfcGFyYWdyYXBocyBsID1cbiAgICAoKiBIYXMgYXQgbGVhc3QgMiBjb25zZWN1dGl2ZSBuZXdsaW5lcy4gKilcbiAgICBMaXN0LmV4aXN0cyAoZnVuY3Rpb24gTmV3bGluZXMgXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgbFxuXG4gIGxldCBwYXJzZV9saXN0IChtYWluX2xvb3A6bWFpbl9sb29wKSByIF9wIGwgPVxuICAgIGFzc2VydF93ZWxsX2Zvcm1lZCBsO1xuICAgIGlmIGRlYnVnIHRoZW4gYmVnaW5cbiAgICAgIGVwcmludGYgXCIoT01EKSBwYXJzZV9saXN0IHI9KCVzKSBwPSglcykgbD0oJXMpXFxuJSFcIlxuICAgICAgICBcIlwiICgqIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZCAoTGlzdC5yZXYgcikpICopXG4gICAgICAgIFwiXCIgKCogKGRlc3RyaW5nX29mX3RsIHApICopXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB+bGltaXQ6NDAgbCk7XG4gICAgZW5kO1xuICAgIGxldCBtb2R1bGUgVU8gPSBzdHJ1Y3QgdHlwZSBvcmRlcmVkID0gTyB8IFUgZW5kIGluXG4gICAgbGV0IG9wZW4gVU8gaW5cbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgcGFyc2VfbGlzdDogbD0oJXMpXFxuJSFcIiAoTC5kZXN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgbGV0IGVuZF9vZl9pdGVtIChpbmRlbnQ6aW50KSBsIDogdG9rIHNwbGl0X2FjdGlvbiAgPSBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgU3BsaXQoW10sW10pXG4gICAgICB8IE5ld2xpbmVzIDAgOjogKChTcGFjZXMgbikgOjogR3JlYXRlcnRoYW4gOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IHRsXG4gICAgICAgICAgICAgICAgICAgICAgIGFzIHMpIC0+XG4gICAgICAgIGFzc2VydChuPj0wKTtcbiAgICAgICAgaWYgbisyID0gaW5kZW50KzQgdGhlbiAoKiBibG9ja3F1b3RlICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKG4rMikgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzIpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lcyAwOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZSBpZiBuKzIgPj0gaW5kZW50KzggdGhlbiAoKiBjb2RlIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IE5ld2xpbmVzIDAgOjogKFNwYWNlcyBuIDo6IHRsIGFzIHMpIC0+XG4gICAgICAgIGFzc2VydChuPj0wKTtcbiAgICAgICAgaWYgbisyID49IGluZGVudCs4IHRoZW4gKCogY29kZSBpbnNpZGUgaXRlbSAqKVxuICAgICAgICAgIG1hdGNoIHVuaW5kZW50IChpbmRlbnQrNCkgKE5ld2xpbmU6OnMpIHdpdGhcbiAgICAgICAgICB8IE5ld2xpbmU6OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKDApOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBOZXdsaW5lcyBuOjpibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChMaXN0LnJldihOZXdsaW5lcyhuKzEpOjpibG9jayksIHJlc3QpXG4gICAgICAgICAgfCBibG9jaywgcmVzdCAtPlxuICAgICAgICAgICAgQ29udGludWVfd2l0aChOZXdsaW5lOjpibG9jaywgcmVzdClcbiAgICAgICAgZWxzZSBpZiBuKzIgPj0gaW5kZW50KzQgdGhlbiAoKiBuZXcgcGFyYWdyYXBoIGluc2lkZSBpdGVtICopXG4gICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKGluZGVudCs0KSAoTmV3bGluZTo6cykgd2l0aFxuICAgICAgICAgIHwgTmV3bGluZTo6YmxvY2ssIHJlc3QgLT5cbiAgICAgICAgICAgIENvbnRpbnVlX3dpdGgoTGlzdC5yZXYoTmV3bGluZXMoMSk6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IE5ld2xpbmVzIG46OmJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKExpc3QucmV2KE5ld2xpbmVzKG4rMik6OmJsb2NrKSwgcmVzdClcbiAgICAgICAgICB8IGJsb2NrLCByZXN0IC0+XG4gICAgICAgICAgICBDb250aW51ZV93aXRoKE5ld2xpbmVzIDA6OmJsb2NrLCByZXN0KVxuICAgICAgICBlbHNlXG4gICAgICAgICAgU3BsaXQoW10sIGwpXG4gICAgICB8IChOZXdsaW5lcyBfKSA6OiBfIC0+ICgqIG4gPiAwICopXG4gICAgICAgICgqIEVuZCBvZiBpdGVtLCBzdG9wICopXG4gICAgICAgIFNwbGl0KFtdLCBsKVxuICAgICAgfCBOZXdsaW5lIDo6XG4gICAgICAgIChcbiAgICAgICAgICAoKFNwYWNlfFNwYWNlcyBfKSA6OiAoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pOjogXylcbiAgICAgICAgfCAoKFNwYWNlfFNwYWNlcyBfKSA6OiBOdW1iZXIgXyA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfKVxuICAgICAgICB8ICgoU3RhcnxNaW51c3xQbHVzKSA6OiAoU3BhY2V8U3BhY2VzIF8pOjogXylcbiAgICAgICAgfCAoTnVtYmVyIF8gOjogRG90IDo6IChTcGFjZXxTcGFjZXMgXykgOjogXylcbiAgICAgICAgICBhcyB0bCkgLT5cbiAgICAgICAgU3BsaXQoW05ld2xpbmVdLCB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgfCBTcGFjZXMgXykgOjogTmV3bGluZSA6OiB0bCAtPlxuICAgICAgICAoKiBBIGxpbmUgd2l0aCBzcGFjZXMgc2hvdWxkbid0IGludGVyZmVyZSBoZXJlLFxuICAgICAgICAgICB3aGljaCBpcyBhYm91dCBleGFjdGx5IDIgY29uc2VjdXRpdmUgbmV3bGluZXMsXG4gICAgICAgICAgIHNvIHdlIHJld3JpdGUgdGhlIGhlYWQgb2YgdGhlIGxleGluZyBzdHJlYW0uICopXG4gICAgICAgIENvbnRpbnVlX3dpdGgoW10sIE5ld2xpbmVzIDAgOjogdGwpXG4gICAgICB8IE5ld2xpbmUgOjogKFNwYWNlIHwgU3BhY2VzIF8pIDo6IChOZXdsaW5lcyBfKSA6OiBfIC0+XG4gICAgICAgICgqIEEgbGluZSB3aXRoIHNwYWNlcyBzaG91bGRuJ3QgaW50ZXJmZXJlIGhlcmUsXG4gICAgICAgICAgIHdoaWNoIGlzIGFib3V0IGF0IGxlYXN0IDMgY29uc2VjdXRpdmUgbmV3bGluZXMsXG4gICAgICAgICAgIHNvIHdlIHN0b3AuICopXG4gICAgICAgICBTcGxpdChbXSwgbClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2VzIF8gYXMgcykgOjogdGwgLT5cbiAgICAgICAgQ29udGludWVfd2l0aFxuICAgICAgICAgIChbcztcbiAgICAgICAgICAgIFRhZyhcInBhcnNlX2xpc3QvcmVtZW1iZXIgc3BhY2VzXCIsXG4gICAgICAgICAgICAgICAgb2JqZWN0XG4gICAgICAgICAgICAgICAgICBtZXRob2QgcGFyc2VyX2V4dGVuc2lvbiByIHAgPVxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBTcGFjZXMgXzo6dGwgLT4gU29tZShyLHAsU3BhY2U6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICAgIE5ld2xpbmVdLFxuICAgICAgICAgICB0bClcbiAgICAgIHwgTmV3bGluZSA6OiAoU3BhY2UgYXMgcykgOjogdGwgLT5cbiAgICAgICAgQ29udGludWVfd2l0aFxuICAgICAgICAgIChbcztcbiAgICAgICAgICAgIFRhZyhcInBhcnNlX2xpc3QvcmVtZW1iZXIgc3BhY2VcIixcbiAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCBwYXJzZXJfZXh0ZW5zaW9uIHIgcCA9XG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChTcGFjZXxTcGFjZXMgXyk6OnRsIC0+IFNvbWUocixwLFNwYWNlOjp0bClcbiAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIG1ldGhvZCB0b19zdHJpbmcgPSBcIlwiXG4gICAgICAgICAgICAgICAgZW5kKTtcbiAgICAgICAgICAgIE5ld2xpbmVdLFxuICAgICAgICAgICB0bClcbiAgICAgIHwgXzo6XyAtPlxuICAgICAgICBDb250aW51ZVxuICAgIGluXG4gICAgbGV0IHJldl90b190IGwgPVxuICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgICAoKiBOZXdsaW5lcyBhdCB0aGUgZW5kIG9mIGl0ZW1zIGhhdmUgbm8gbWVhbmluZyAoZXhjZXB0IHRvIGVuZCB0aGVcbiAgICAgICAgIGl0ZW0gd2hpY2ggaXMgZXhwcmVzc2VkIGJ5IHRoZSBjb25zdHJ1Y3RvciBhbHJlYWR5KS4gKilcbiAgICAgIGxldCBsID0gbWF0Y2ggbCB3aXRoIChOZXdsaW5lIHwgTmV3bGluZXMgXykgOjogdGwgLT4gdGwgfCBfIC0+IGwgaW5cbiAgICAgIG1haW5fbG9vcCBbXSBbTmV3bGluZV0gKExpc3QucmV2IGwpXG4gICAgaW5cbiAgICBsZXQgYWRkIChzdWJsaXN0OmVsZW1lbnQpIGl0ZW1zID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGFkZFxcbiUhXCI7XG4gICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCAoTyxpbmRlbnRzLGl0ZW0pOjp0bCAtPlxuICAgICAgICAoTyxpbmRlbnRzLChpdGVtQFtzdWJsaXN0XSkpOjp0bFxuICAgICAgfCAoVSxpbmRlbnRzLGl0ZW0pOjp0bCAtPlxuICAgICAgICAoVSxpbmRlbnRzLChpdGVtQFtzdWJsaXN0XSkpOjp0bFxuICAgIGluXG4gICAgbGV0IG1ha2VfdXAgfnAgaXRlbXMgOiBPbWRfcmVwcmVzZW50YXRpb24uZWxlbWVudCA9XG4gICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBtYWtlX3VwIHA9JWJcXG4lIVwiIHA7XG4gICAgICBsZXQgaXRlbXMgPSBMaXN0LnJldiBpdGVtcyBpblxuICAgICAgbWF0Y2ggaXRlbXMgd2l0aFxuICAgICAgfCAoVSxfLGl0ZW0pOjpfIC0+XG4gICAgICAgIGlmIHAgdGhlblxuICAgICAgICAgIFVscChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBVbChMaXN0Lm1hcCAoZnVuIChfLF8saSkgLT4gaSkgaXRlbXMpXG4gICAgICB8IChPLF8saXRlbSk6Ol8gLT5cbiAgICAgICAgaWYgcCB0aGVuXG4gICAgICAgICAgT2xwKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE9sKExpc3QubWFwIChmdW4gKF8sXyxpKSAtPiBpKSBpdGVtcylcbiAgICAgIHwgW10gLT5cbiAgICAgICAgZmFpbHdpdGggXCJtYWtlX3VwIGNhbGxlZCB3aXRoIFtdXCIgKCogYXNzZXJ0IGZhbHNlICopXG4gICAgaW5cbiAgICBsZXQgcmVjIGxpc3RfaXRlbXMgfnAgaW5kZW50cyBpdGVtcyBsID1cbiAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIGxpc3RfaXRlbXM6IHA9JWIgbD0oJXMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAoKiBubyBtb3JlIGxpc3QgaXRlbXMgKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAoKiBtb3JlIGxpc3QgaXRlbXMgKilcbiAgICAgICgqIG5ldyB1bm9yZGVyZWQgaXRlbXMgKilcbiAgICAgIHwgKFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6OnRsIC0+XG4gICAgICAgIGJlZ2luXG4gICAgICAgICAgbWF0Y2ggZnNwbGl0X3JldiB+ZjooZW5kX29mX2l0ZW0gMCkgdGwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoMjM0NikgbmV3X2l0ZW09JVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIG5ld19pdGVtKTtcbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7XG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgWzBdICgoVSxbMF0sIHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMDo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChVLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBfOjpfIC0+XG4gICAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2U6OihTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDEpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFsxXSAoKFUsWzFdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgICB8IDE6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoVSxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBpID4gMSB0aGVuXG4gICAgICAgICAgICAgICAgbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgICAgIGVsc2UgKCogaSA8IDEgOiBuZXcgc3ViIGxpc3QqKVxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgKDE6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoVSwxOjppbmRlbnRzLHJldl90b190IG5ld19pdGVtKV0gcmVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzIChhZGQgc3VibGlzdCBpdGVtcykgcmVtYWluc1xuICAgICAgICBlbmRcbiAgICAgIHwgU3BhY2VzIG46OihTdGFyfE1pbnVzfFBsdXMpOjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIChuKzIpKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIHNwYWNlc1tdIGw9KCVTKVxcbiUhXCIgKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pOyAoKiBh72UuLi4gbGlzdGVzIG1hbCBmb3Jt6WVzID8hICopXG4gICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgW24rMl0gKChVLFtuKzJdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgaTo6XyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXMoJWQ6Ol8pIG49JWQgbD0oJVMpXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgaSBuIChMLnN0cmluZ19vZl90b2tlbnMgbCk7XG4gICAgICAgICAgICAgIGlmIGkgPSBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW1zID0gKFUsaW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSkgOjogaXRlbXMgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgaXRlbXMgcmVzdFxuICAgICAgICAgICAgICBlbHNlIGlmIGkgPCBuICsgMiB0aGVuXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoKG4rMik6OmluZGVudHMpXG4gICAgICAgICAgICAgICAgICAgIFsoVSwobisyKTo6aW5kZW50cyxyZXZfdG9fdCBuZXdfaXRlbSldXG4gICAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgICAgICAgZWxzZSAoKiBpID4gbiArIDIgKilcbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICAoKiBuZXcgb3JkZXJlZCBpdGVtcyAqKVxuICAgICAgfCBOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDApIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgICAgICAgIHwgU29tZShuZXdfaXRlbSwgcmVzdCkgLT5cbiAgICAgICAgICAgIGxldCBwID0gcCB8fCBoYXNfcGFyYWdyYXBocyBuZXdfaXRlbSBpblxuICAgICAgICAgICAgYXNzZXJ0X3dlbGxfZm9ybWVkIG5ld19pdGVtO1xuICAgICAgICAgICAgbWF0Y2ggaW5kZW50cyB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgIGFzc2VydChpdGVtcyA9IFtdKTtcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbMF0gKChPLFswXSxyZXZfdG9fdCBuZXdfaXRlbSk6Oml0ZW1zKSByZXN0XG4gICAgICAgICAgICB8IDA6Ol8gLT5cbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBpbmRlbnRzICgoTyxpbmRlbnRzLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgXzo6XyAtPlxuICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIDEpIHRsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbWFrZV91cCBwIGl0ZW1zLCBsXG4gICAgICAgICAgfCBTb21lKG5ld19pdGVtLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IHAgPSBwIHx8IGhhc19wYXJhZ3JhcGhzIG5ld19pdGVtIGluXG4gICAgICAgICAgICBtYXRjaCBpbmRlbnRzIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0KGl0ZW1zID0gW10pO1xuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIFsxXSAoKE8sWzFdLHJldl90b190IG5ld19pdGVtKTo6aXRlbXMpIHJlc3RcbiAgICAgICAgICAgIHwgMTo6XyAtPlxuICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGkgPiAxIHRoZW5cbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICAgICAgZWxzZSAoKiBpIDwgMSA6IG5ldyBzdWIgbGlzdCopXG4gICAgICAgICAgICAgICAgbGV0IHN1Ymxpc3QsIHJlbWFpbnMgPVxuICAgICAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCAoMTo6aW5kZW50cylcbiAgICAgICAgICAgICAgICAgICAgWyhPLDE6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXSByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wOnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgZW5kXG4gICAgICB8IFNwYWNlcyBuOjpOdW1iZXIgXzo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICBiZWdpblxuICAgICAgICAgIG1hdGNoIGZzcGxpdF9yZXYgfmY6KGVuZF9vZl9pdGVtIChuKzIpKSB0bCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgICB8IFNvbWUobmV3X2l0ZW0sIHJlc3QpIC0+XG4gICAgICAgICAgICBsZXQgcCA9IHAgfHwgaGFzX3BhcmFncmFwaHMgbmV3X2l0ZW0gaW5cbiAgICAgICAgICAgIG1hdGNoIGluZGVudHMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBzcGFjZXNbXSBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGwpO1xuICAgICAgICAgICAgICBhc3NlcnQoaXRlbXMgPSBbXSk7ICgqIGHvZS4uLiBsaXN0ZXMgbWFsIGZvcm3pZXMgPyEgKilcbiAgICAgICAgICAgICAgbGlzdF9pdGVtcyB+cCBbbisyXSAoKE8sW24rMl0scmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcykgcmVzdFxuICAgICAgICAgICAgfCBpOjpfIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIHNwYWNlcyglZDo6Xykgbj0lZCBsPSglUylcXG4lIVwiXG4gICAgICAgICAgICAgICAgICBpIG4gKEwuc3RyaW5nX29mX3Rva2VucyBsKTtcbiAgICAgICAgICAgICAgaWYgaSA9IG4gKyAyIHRoZW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wIGluZGVudHMgKChPLGluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pOjppdGVtcylcbiAgICAgICAgICAgICAgICAgIHJlc3RcbiAgICAgICAgICAgICAgZWxzZSBpZiBpIDwgbiArIDIgdGhlblxuICAgICAgICAgICAgICAgIGxldCBzdWJsaXN0LCByZW1haW5zID1cbiAgICAgICAgICAgICAgICAgIGxpc3RfaXRlbXMgfnBcbiAgICAgICAgICAgICAgICAgICAgKChuKzIpOjppbmRlbnRzKVxuICAgICAgICAgICAgICAgICAgICBbKE8sKG4rMik6OmluZGVudHMscmV2X3RvX3QgbmV3X2l0ZW0pXVxuICAgICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsaXN0X2l0ZW1zIH5wOnAgaW5kZW50cyAoYWRkIHN1Ymxpc3QgaXRlbXMpIHJlbWFpbnNcbiAgICAgICAgICAgICAgZWxzZSAoKiBpID4gbiArIDIgKilcbiAgICAgICAgICAgICAgICBtYWtlX3VwIHAgaXRlbXMsIGxcbiAgICAgICAgZW5kXG4gICAgICAoKiAqKVxuICAgICAgfCBOZXdsaW5lcyAwOjooKFN0YXJ8TWludXN8UGx1cyk6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KE51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTcGFjZXxTcGFjZXMgXyk6OlN0YXI6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgIHwgTmV3bGluZXMgMDo6KChTcGFjZXxTcGFjZXMgXyk6Ok51bWJlciBfOjpEb3Q6OihTcGFjZXxTcGFjZXMgXyk6Ol8gYXMgbClcbiAgICAgICAgLT5cbiAgICAgICAgbGlzdF9pdGVtcyB+cDp0cnVlIGluZGVudHMgaXRlbXMgbFxuICAgICAgfCBfIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgbGV0IHJlYyBzdHJpbmdfb2ZfaXRlbXMgaXRlbXMgPVxuICAgICAgICAgICAgICBtYXRjaCBpdGVtcyB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICAgICAgICB8IChPLGluZGVudDo6XyxpdGVtKTo6dGwgLT5cbiAgICAgICAgICAgICAgICAgc3ByaW50ZiBcIihPLGk9JWQsJVMpXCIgKGluZGVudCkgKE9tZF9iYWNrZW5kLmh0bWxfb2ZfbWQgaXRlbSlcbiAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaXRlbXMgdGxcbiAgICAgICAgICAgICAgfCAoVSxpbmRlbnQ6Ol8saXRlbSk6OnRsIC0+XG4gICAgICAgICAgICAgICAgIHNwcmludGYgXCIoVSxpPSVkLCVTKVwiIChpbmRlbnQpIChPbWRfYmFja2VuZC5odG1sX29mX21kIGl0ZW0pXG4gICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2l0ZW1zIHRsXG4gICAgICAgICAgICAgIHwgXyAtPiBcIih3ZWlyZClcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBOQUxJIHBhcnNlX2xpc3Q6IGw9KCVTKSBpdGVtcz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBsKSAoc3RyaW5nX29mX2l0ZW1zIGl0ZW1zKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgKCogbm90IGEgbGlzdCBpdGVtICopXG4gICAgICAgIG1ha2VfdXAgcCBpdGVtcywgbFxuICAgIGluXG4gICAgbWF0Y2ggbGlzdF9pdGVtcyB+cDpmYWxzZSBbXSBbXSBsIHdpdGhcbiAgICB8IHJwLCBsIC0+XG4gICAgICBycDo6ciwgW05ld2xpbmVdLCBsXG5cblxuXG4gIGxldCBpY29kZSA/KGRlZmF1bHRfbGFuZz1kZWZhdWx0X2xhbmcpIHIgX3AgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgKCogaW5kZW50ZWQgY29kZTogcmV0dXJucyAocixwLGwpIHdoZXJlIHIgaXMgdGhlIHJlc3VsdCwgcCBpcyB0aGVcbiAgICAgICBsYXN0IHRoaW5nIHJlYWQsIGwgaXMgdGhlIHJlbWFpbnMgKilcbiAgICBsZXQgZHVtbXlfdGFnID0gVGFnKFwiZHVtbXlfdGFnXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIHRvX3N0cmluZyA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kIHBhcnNlcl9leHRlbnNpb24gPSBmdW4gciBwIGwgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kKSBpblxuICAgIGxldCBhY2N1ID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIGxldCByZWMgbG9vcCBzIHRsID0gbWF0Y2ggcywgdGwgd2l0aFxuICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfIGFzIHApLCAoU3BhY2V8U3BhY2VzKDB8MSkpOjpfIC0+XG4gICAgICAgICgqIDEsIDIgb3IgMyBzcGFjZXMuICopXG4gICAgICAgICgqIC0+IFJldHVybiB3aGF0J3MgYmVlbiBmb3VuZCBhcyBjb2RlIGJlY2F1c2Ugd2hhdCBmb2xsb3dzIGlzbid0LiAqKVxuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpIDo6IHIsIFtwXSwgdGxcbiAgICAgIHwgKE5ld2xpbmV8TmV3bGluZXMgXyBhcyBwKSwgU3BhY2VzKG4pOjp0bCAtPlxuICAgICAgICBhc3NlcnQobj4wKTtcbiAgICAgICAgKCogQXQgbGVhc3QgNCBzcGFjZXMsIGl0J3Mgc3RpbGwgY29kZS4gKilcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgIGxvb3BcbiAgICAgICAgICAoaWYgbiA+PSA0IHRoZW4gU3BhY2VzKG4tNCkgZWxzZSBpZiBuID0gMyB0aGVuIFNwYWNlIGVsc2UgZHVtbXlfdGFnKVxuICAgICAgICAgIHRsXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8gYXMgcCksIChub3Rfc3BhY2VzOjpfIGFzIHRsKSAtPiAoKiBzdG9wICopXG4gICAgICAgIENvZGVfYmxvY2soZGVmYXVsdF9sYW5nLCBCdWZmZXIuY29udGVudHMgYWNjdSkgOjogciwgW3BdLCB0bFxuICAgICAgKCogLT4gUmV0dXJuIHdoYXQncyBiZWVuIGZvdW5kIGFzIGNvZGUgYmVjYXVzZSBpdCdzIG5vIG1vcmUgY29kZS4gKilcbiAgICAgIHwgcCwgZTo6dGwgLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYWNjdSAoTC5zdHJpbmdfb2ZfdG9rZW4gcCk7XG4gICAgICAgICgqIGh0bWwgZW50aXRpZXMgYXJlIHRvIGJlIGNvbnZlcnRlZCBsYXRlciEgKilcbiAgICAgICAgbG9vcCBlIHRsXG4gICAgICB8IHAsIFtdIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGFjY3UgKEwuc3RyaW5nX29mX3Rva2VuIHApO1xuICAgICAgICBDb2RlX2Jsb2NrKGRlZmF1bHRfbGFuZywgQnVmZmVyLmNvbnRlbnRzIGFjY3UpOjpyLCBbcF0sIFtdXG4gICAgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFNwYWNlcyBuOjp0bCAtPlxuICAgICAgaWYgbiA+PSA0IHRoZW5cbiAgICAgICAgU29tZShsb29wIChTcGFjZXMobi00KSkgdGwpXG4gICAgICBlbHNlIGlmIG4gPSAzIHRoZW5cbiAgICAgICAgU29tZShsb29wIFNwYWNlIHRsKVxuICAgICAgZWxzZSBTb21lKGxvb3AgZHVtbXlfdGFnIHRsKVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4gICgqIFJldHVybnMgWyhyLHAsbCldIHdoZXJlIFtyXSBpcyB0aGUgcmVzdWx0LCBbcF0gaXMgdGhlIGxhc3QgdGhpbmdcbiAgICAgcmVhZCwgYW5kIFtsXSBpcyB3aGF0IHJlbWFpbnMuICopXG4gIGxldCBzcGFjZXNfYXRfYmVnaW5uaW5nX29mX2xpbmUgbWFpbl9sb29wIGRlZmF1bHRfbGFuZyBuIHIgcHJldmlvdXMgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgYXNzZXJ0IChuID4gMCk7XG4gICAgaWYgbiA8PSAzIHRoZW4gKFxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IChTdGFyfE1pbnVzfFBsdXMpIDo6IChTcGFjZXxTcGFjZXMgXykgOjogXyAtPlxuICAgICAgICAoKiB1bm9yZGVyZWQgbGlzdCAqKVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIChMLm1ha2Vfc3BhY2Ugbjo6bGV4ZW1lcylcbiAgICAgIHwgKE51bWJlciBfKTo6RG90OjooU3BhY2V8U3BhY2VzIF8pOjp0bCAtPlxuICAgICAgICAoKiBvcmRlcmVkIGxpc3QgKilcbiAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSAoTC5tYWtlX3NwYWNlIG46OmxleGVtZXMpXG4gICAgICB8IFtdXG4gICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pIDo6IF8gIC0+ICgqIGJsYW5rIGxpbmUsIHNraXAgc3BhY2VzICopXG4gICAgICAgIHIsIHByZXZpb3VzLCBsZXhlbWVzXG4gICAgICB8ICBfOjpfIC0+XG4gICAgICAgIFRleHQgKFwiIFwiKTo6ciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICApXG4gICAgZWxzZSAoICgqIG4+PTQsIGJsYW5rIGxpbmUgb3IgaW5kZW50ZWQgY29kZSAqKVxuICAgICAgbWF0Y2ggbGV4ZW1lcyB3aXRoXG4gICAgICB8IFtdIHwgKE5ld2xpbmV8TmV3bGluZXMgXykgOjogXyAgLT4gciwgcHJldmlvdXMsIGxleGVtZXNcbiAgICAgIHwgXyAtPlxuICAgICAgICBtYXRjaFxuICAgICAgICAgIGljb2RlIH5kZWZhdWx0X2xhbmcgciBbTmV3bGluZV0gKEwubWFrZV9zcGFjZSBuIDo6IGxleGVtZXMpXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiByLHAsbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5pY29kZSBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgT21kX3BhcnNlci5tYWluX2xvb3AgaXMgYnJva2VuXFxuJSFcIjtcbiAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICApXG5cbiAgbGV0IHNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbmUgPyhodG1sPWZhbHNlKSBuIHIgbGV4ZW1lcyA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgYXNzZXJ0IChuID4gMCk7XG4gICAgaWYgbiA9IDEgdGhlblxuICAgICAgKFRleHQgXCIgXCI6OnIpLCBbU3BhY2VdLCBsZXhlbWVzXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBsZXhlbWVzIHdpdGhcbiAgICAgIHwgTmV3bGluZSA6OiB0bCB3aGVuIG5vdCBodG1sIC0+XG4gICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICBcIihPTUQpIDIgb3IgbW9yZSBzcGFjZXMgYmVmb3JlIGEgbmV3bGluZSwgZWF0IHRoZSBuZXdsaW5lXFxuJSFcIjtcbiAgICAgICAgQnI6OnIsIFtTcGFjZXMobi0yKV0sIHRsXG4gICAgICB8IE5ld2xpbmVzIGsgOjogdGwgd2hlbiBub3QgaHRtbCAtPlxuICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgXCIoT01EKSAyIG9yIG1vcmUgc3BhY2VzIGJlZm9yZSBhIG5ld2xpbmUsIGVhdCAxIG5ld2xpbmVcIjtcbiAgICAgICAgbGV0IG5ld2xpbmVzID0gaWYgayA9IDAgdGhlbiBOZXdsaW5lIGVsc2UgTmV3bGluZXMoay0xKSBpblxuICAgICAgICBCcjo6ciwgW1NwYWNlcyhuLTIpXSwgbmV3bGluZXMgOjogdGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBhc3NlcnQgKG4+MSk7XG4gICAgICAgIChUZXh0IChTdHJpbmcubWFrZSBuICcgJyk6OnIpLCBbU3BhY2VzKG4tMildLCBsZXhlbWVzXG4gICAgKVxuXG5cbiAgbGV0IG1heWJlX2F1dG9lbWFpbCByIHAgbCA9XG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGw7XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBMZXNzdGhhbjo6dGwgLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgZnNwbGl0IH5leGNsOihmdW5jdGlvbiAoTmV3bGluZXxOZXdsaW5lcyBffFNwYWNlfFNwYWNlcyBfKSA6OiBfLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIH5mOihmdW5jdGlvbiBBdDo6dGwgLT4gU3BsaXQoW10sdGwpIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgIHRsXG4gICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lKGxlZnQsIHJpZ2h0KSAtPlxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF98U3BhY2V8U3BhY2VzIF8pIDo6IF8tPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgfmY6KGZ1bmN0aW9uIEdyZWF0ZXJ0aGFuOjp0bCAtPiBTcGxpdChbXSx0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IEdyZWF0ZXJ0aGFucyAwOjp0bCAtPiBTcGxpdChbXSxHcmVhdGVydGhhbjo6dGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbjo6dGwgLT4gU3BsaXQoW10sR3JlYXRlcnRoYW5zKG4tMSk6OnRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgcmlnaHRcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUoZG9tYWluLCB0bCkgLT5cbiAgICAgICAgICAgIGxldCBlbWFpbCA9IEwuc3RyaW5nX29mX3Rva2VucyBsZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICBeIFwiQFwiIF4gTC5zdHJpbmdfb2ZfdG9rZW5zIGRvbWFpbiBpblxuICAgICAgICAgICAgU29tZShVcmwoXCJtYWlsdG86XCJeZW1haWwsW1RleHQgZW1haWxdLFwiXCIpOjpyLFtHcmVhdGVydGhhbl0sdGwpXG4gICAgICBlbmRcbiAgICB8IF8gLT4gZmFpbHdpdGggXCJPbWRfcGFyc2VyLm1heWJlX2F1dG9lbWFpbDogd3JvbmcgdXNlIG9mIHRoZSBmdW5jdGlvbi5cIlxuXG4gIGxldCBpc19oZXggcyA9XG4gICAgU3RyaW5nLmxlbmd0aCBzID4gMVxuICAgICYmIChzLlswXSA9ICdYJyB8fCBzLlswXSA9ICd4JylcbiAgICAmJiAobGV0IHJlYyBsb29wIGkgPVxuICAgICAgICAgaSA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgICAgfHxcbiAgICAgICAgIChtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgfCAnMCcgLi4gJzknIHwgJ0EnIC4uICdGJyB8ICdhJyAuLiAnZicgLT5cbiAgICAgICAgICAgIGxvb3AgKHN1Y2MgaSlcbiAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgIGluIGxvb3AgMSlcblxuICBsZXQgbWVkaWF0eXBldGV4dG9tZCA6IHN0cmluZyBsaXN0IHJlZiA9IHJlZiBbXVxuXG4gIGxldCBmaWx0ZXJfdGV4dF9vbWRfcmV2IGwgPVxuICAgIGxldCByZWMgbG9vcCBiIHIgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBpZiBiIHRoZW4gciBlbHNlIGxcbiAgICAgIHwgKFwibWVkaWE6dHlwZVwiLCBTb21lIFwidGV4dC9vbWRcIik6OnRsIC0+XG4gICAgICAgIGxvb3AgdHJ1ZSByIHRsXG4gICAgICB8IGU6OnRsIC0+XG4gICAgICAgIGxvb3AgYiAoZTo6cikgdGxcbiAgICBpblxuICAgIGxvb3AgZmFsc2UgW10gbFxuXG4gIGV4Y2VwdGlvbiBPcnBoYW5fY2xvc2luZyBvZiBzdHJpbmcgKiBsICogbFxuXG4gIGxldCByZWMgbWFpbl9pbXBsX3JldiB+aHRtbCAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICgqIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIG1haW5faW1wbF9yZXYgaHRtbD0lYlxcbiUhXCIgaHRtbDsgKilcbiAgICBhc3NlcnRfd2VsbF9mb3JtZWQgbGV4ZW1lcztcbiAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsX3JldiBodG1sPSViIHI9JXMgcD0oJXMpIGw9KCVzKVxcbiUhXCJcbiAgICAgICAgaHRtbFxuICAgICAgICAoT21kX2JhY2tlbmQuc2V4cHJfb2ZfbWQgKExpc3QucmV2IHIpKVxuICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgcHJldmlvdXMpXG4gICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyBsZXhlbWVzKTtcbiAgICBtYXRjaCBwcmV2aW91cywgbGV4ZW1lcyB3aXRoXG4gICAgKCogbm8gbW9yZSB0byBwcm9jZXNzICopXG4gICAgfCBfLCBbXSAtPlxuICAgICAgKCogcmV0dXJuIHRoZSByZXN1bHQgKC8hXFwgaXQgaGFzIHRvIGJlIHJldmVyc2VkIGFzIHNvbWUgcG9pbnQpICopXG4gICAgICByXG5cbiAgICAoKiBUYWc6IHRhZyBzeXN0ZW0gJFxcY3VwJCBoaWdoLXByaW9yaXR5IGV4dGVuc2lvbiBtZWNoYW5pc20gKilcbiAgICB8IF8sIFRhZyhfbmFtZSwgZSkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGUjcGFyc2VyX2V4dGVuc2lvbiByIHByZXZpb3VzIHRsIHdpdGhcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcHJldmlvdXMgdGxcbiAgICAgIGVuZFxuXG4gICAgKCogSFRNTCBjb21tZW50cyAqKVxuICAgIHwgXywgKExlc3N0aGFuIGFzIHQpOjooRXhjbGFtYXRpb246Ok1pbnVzcyAwOjpjIGFzIHRsKSAtPlxuICAgICAgYmVnaW5cbiAgICAgICAgbGV0IGYgPSBmdW5jdGlvblxuICAgICAgICAgIHwgKE1pbnVzcyBfIGFzIG0pOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsIC0+XG4gICAgICAgICAgICBTcGxpdChbZzttXSwgdGwpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBDb250aW51ZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBmc3BsaXQgfmY6ZiBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgZW5kXG4gICAgICAgIHwgU29tZSAoY29tbWVudHMsIG5ld190bCkgLT5cbiAgICAgICAgICBsZXQgciA9IEh0bWxfY29tbWVudChMLnN0cmluZ19vZl90b2tlbnMgY29tbWVudHMpIDo6IHIgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgW05ld2xpbmVdIG5ld190bFxuICAgICAgZW5kXG5cbiAgICAoKiBlbWFpbC1zdHlsZSBxdW90aW5nIC8gYmxvY2txdW90ZSAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgR3JlYXRlcnRoYW46OihTcGFjZXxTcGFjZXMgXyk6Ol8gLT5cbiAgICAgIGJlZ2luXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgZW1haWxzdHlsZV9xdW90aW5nIG1haW5fbG9vcCByIHByZXZpb3VzIChOZXdsaW5lOjpsZXhlbWVzKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZShyLHAsbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5lbWFpbHN0eWxlX3F1b3Rpbmcgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcblxuICAgICgqIGVtYWlsLXN0eWxlIHF1b3RpbmcsIHdpdGggbGluZXMgc3RhcnRpbmcgd2l0aCBzcGFjZXMhICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoU3BhY2V8U3BhY2VzKDB8MSkgYXMgcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IEdyZWF0ZXJ0aGFuIDo6IChTcGFjZXxTcGFjZXMgXyk6Ol8gLT5cbiAgICAgICgqIEl0J3MgMSwgMiBvciAzIHNwYWNlcywgbm90IG1vcmUgYmVjYXVzZSBpdCB3b3VsZG4ndCBtZWFuXG4gICAgICAgICBxdW90aW5nIGFueW1vcmUgYnV0IGNvZGUuICopXG4gICAgICBiZWdpblxuICAgICAgICBsZXQgbmV3X3IsIHAsIHJlc3QgPVxuICAgICAgICAgIGxldCBmb28sIHJlc3QgPVxuICAgICAgICAgICAgbWF0Y2ggdW5pbmRlbnQgKEwubGVuZ3RoIHMpIChOZXdsaW5lOjpsZXhlbWVzKSB3aXRoXG4gICAgICAgICAgICB8IChOZXdsaW5lfE5ld2xpbmVzIF8pOjpmb28sIHJlc3QgLT4gZm9vLCByZXN0XG4gICAgICAgICAgICB8IHJlcyAtPiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICBlbWFpbHN0eWxlX3F1b3RpbmcgbWFpbl9sb29wIFtdIHByZXZpb3VzIChOZXdsaW5lOjpmb28pXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZShuZXdfciwgcCwgW10pIC0+IG5ld19yLCBwLCByZXN0XG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLmVtYWlsc3R5bGVfcXVvdGluZyBvciBcXFxuICAgICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKG5ld19yQHIpIFtOZXdsaW5lXSByZXN0XG4gICAgICBlbmRcblxuICAgICgqIG1pbnVzICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLFxuICAgICAgKE1pbnVzfE1pbnVzcyBfIGFzIHQpIDo6ICgoU3BhY2V8U3BhY2VzIF8pOjpfIGFzIHRsKSAtPlxuICAgICAgKCogbWF5YmUgaHIgKilcbiAgICAgIGJlZ2luIG1hdGNoIGhyX20gbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAoKiBubyBociwgc28gaXQgY291bGQgYmUgYSBsaXN0ICopXG4gICAgICAgICAgYmVnaW4gbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IE1pbnVzIC0+ICgqIGl0J3MgYSBsaXN0ICopXG4gICAgICAgICAgICAgIGxldCBtZCwgbmV3X3AsIG5ld19sID1cbiAgICAgICAgICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCBtZCBuZXdfcCBuZXdfbFxuICAgICAgICAgICAgfCBfIC0+ICgqIG5vdCBhIGxpc3QgKilcbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIGwgLT4gKCogaHIgKilcbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgIGVuZFxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKE1pbnVzfE1pbnVzcyBfIGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggaHJfbSBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgqIG5vIGhyLCBhbmQgaXQncyBub3QgYSBsaXN0IGVpdGhlclxuICAgICAgICAgICAgICAgICAgICAgYmVjYXVzZSBpdCdzIG5vdCBmb2xsb3dlZCBieSBzcGFjZXMgKilcbiAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICBlbmRcbiAgICAgICAgfCBTb21lIGwgLT4gKCogaHIgKilcbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgIGVuZFxuXG4gICAgKCogaGFzaGVzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksXG4gICAgICAoSGFzaHMgbiBhcyB0KSA6OiAoKFNwYWNlfFNwYWNlcyBfKSA6OiB0dGwgYXMgdGwpXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksXG4gICAgICAoSGFzaHMgbiBhcyB0KSA6OiAodHRsIGFzIHRsKSAtPiAoKiBoYXNoIHRpdGxlcyAqKVxuICAgICAgaWYgbiA8PSA0IHRoZW5cbiAgICAgICAgbWF0Y2ggcmVhZF90aXRsZSBtYWluX2xvb3AgKG4rMikgciBwcmV2aW91cyB0dGwgd2l0aFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgT21kX3BhcnNlci5yZWFkX3RpdGxlIG9yIFxcXG4gICAgICAgICAgICAgICAgICAgICBPbWRfcGFyc2VyLm1haW5fbG9vcCBpcyBicm9rZW5cXG4lIVwiO1xuICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgSGFzaCA6OiAoU3BhY2V8U3BhY2VzIF8pIDo6IHRsXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIEhhc2ggOjogdGwgLT4gKCogaGFzaCB0aXRsZXMgKilcbiAgICAgIGJlZ2luIG1hdGNoIHJlYWRfdGl0bGUgbWFpbl9sb29wIDEgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBPbWRfcGFyc2VyLnJlYWRfdGl0bGUgb3IgXFxcbiAgICAgICAgICAgICAgICAgICAgIE9tZF9wYXJzZXIubWFpbl9sb29wIGlzIGJyb2tlblxcbiUhXCI7XG4gICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICBlbmRcbiAgICB8IF8sIChIYXNofEhhc2hzIF8gYXMgdCkgOjogdGwgLT4gKCogaGFzaCAtLSBubyB0aXRsZSAqKVxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cbiAgICAoKiBzcGFjZXMgYWZ0ZXIgYSBuZXdsaW5lOiBjb3VsZCBsZWFkIHRvIGhyICopXG4gICAgfCAoW118W05ld2xpbmV8TmV3bGluZXMgX10pLCAoKFNwYWNlfFNwYWNlcyBfKSBhcyBzcCkgOjogdGwgLT5cbiAgICAgIGJlZ2luIG1hdGNoIGhyIHRsIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgKCogTm8gW0hyXSwgYnV0IG1heWJlIFtVbF0sIFtPbF0sIGNvZGUsLi4uICopXG4gICAgICAgICAgbGV0IG4gPSBMLmxlbmd0aCBzcCBpblxuICAgICAgICAgIGxldCByLCBwLCBsID1cbiAgICAgICAgICAgc3BhY2VzX2F0X2JlZ2lubmluZ19vZl9saW5lIG1haW5fbG9vcCBkZWZhdWx0X2xhbmcgbiByIHByZXZpb3VzIHRsIGluXG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICB8IFNvbWUgdGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIHRsXG4gICAgICBlbmRcblxuICAgICgqIHNwYWNlcyBhbnl3aGVyZSAqKVxuICAgIHwgXywgKChTcGFjZXxTcGFjZXMgXykgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIHRvbyBtYW55IGNhc2VzIHRvIGJlIGhhbmRsZWQgaGVyZSAqKVxuICAgICAgbGV0IG4gPSBMLmxlbmd0aCB0IGluXG4gICAgICBsZXQgciwgcCwgbCA9IHNwYWNlc19ub3RfYXRfYmVnaW5uaW5nX29mX2xpbmUgfmh0bWwgbiByIHRsIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG5cbiAgICAoKiB1bmRlcnNjb3JlcyAqKVxuICAgIHwgXywgKFVuZGVyc2NvcmUgYXMgdCkgOjogdGwgLT4gKCogb25lIFwib3JwaGFuXCIgdW5kZXJzY29yZSwgb3IgZW1waCAqKVxuICAgICAgKG1hdGNoIHVlbXBoX29yX2JvbGQgMSB0bCB3aXRoXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpIDo6IHIpIFt0XSBuZXdfdGxcbiAgICAgIClcbiAgICB8IF8sIChVbmRlcnNjb3JlcygoMHwxKSBhcyBuKSBhcyB0KSA6OiB0bCAtPlxuICAgICAgKCogMiBvciAzIFwib3JwaGFuXCIgdW5kZXJzY29yZXMsIG9yIGVtcGgvYm9sZCAqKVxuICAgICAgKG1hdGNoIHVlbXBoX29yX2JvbGQgKG4rMikgdGwgd2l0aFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgIGlmIG4gPSAwIHRoZW4gKCogMSB1bmRlcnNjb3JlICopXG4gICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJvbGQobWFpbl9pbXBsIH5odG1sIFtdIFt0XSB4KSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgICBlbHNlICgqIDIgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoRW1waChbQm9sZChtYWluX2ltcGwgfmh0bWwgW10gW3RdIHgpXSkgOjogcikgW3RdIG5ld190bFxuICAgICAgKVxuXG4gICAgKCogZW51bWVyYXRlZCBsaXN0cyAqKVxuICAgIHwgKFtdfFtOZXdsaW5lfE5ld2xpbmVzIF9dKSwgKE51bWJlciBfKSA6OiBEb3QgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiB0bCAtPlxuICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICBwYXJzZV9saXN0IG1haW5fbG9vcCByIFtdIGxleGVtZXNcbiAgICAgIGluXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG5cbiAgICAoKiBwbHVzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFBsdXMgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICBsZXQgbWQsIG5ld19wLCBuZXdfbCA9XG4gICAgICAgIHBhcnNlX2xpc3QgbWFpbl9sb29wIHIgW10gbGV4ZW1lc1xuICAgICAgaW5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgbWQgbmV3X3AgbmV3X2xcblxuICAgICgqIHN0YXJzICopXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIFN0YXIgOjogKFNwYWNlfFNwYWNlcyBfKSA6OiBfIC0+XG4gICAgICAoKiBtYXliZSBociBvciBuZXcgbGlzdCAqKVxuICAgICAgYmVnaW4gbWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IG1kLCBuZXdfcCwgbmV3X2wgPVxuICAgICAgICAgICAgcGFyc2VfbGlzdCBtYWluX2xvb3AgciBbXSBsZXhlbWVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIG1kIG5ld19wIG5ld19sXG4gICAgICBlbmRcbiAgICB8IChbXXxbKE5ld2xpbmV8TmV3bGluZXMgXyldKSwgU3RhcnMgXyA6OiBfIHdoZW4gaHJfcyBsZXhlbWVzIDw+IE5vbmUgLT5cbiAgICAgICgqIGhyICopXG4gICAgICAobWF0Y2ggaHJfcyBsZXhlbWVzIHdpdGhcbiAgICAgICB8IFNvbWUgbCAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChIcjo6cikgW05ld2xpbmVdIGxcbiAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICApXG4gICAgfCAoW118WyhOZXdsaW5lfE5ld2xpbmVzIF8pXSksIChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIG1heWJlIGhyICopXG4gICAgICBiZWdpbiBtYXRjaCBocl9zIGxleGVtZXMgd2l0aFxuICAgICAgICB8IFNvbWUgbCAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEhyOjpyKSBbTmV3bGluZV0gbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAobWF0Y2ggc2VtcGhfb3JfYm9sZCAxIHRsIHdpdGhcbiAgICAgICAgICAgfCBTb21lKHgsIG5ld190bCkgLT5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICBlbmRcbiAgICAgICAgICApXG4gICAgICBlbmRcbiAgICB8IF8sIChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIG9uZSBcIm9ycGhhblwiIHN0YXIsIG9yIGVtcGggLy8gY2FuJ3QgYmUgaHIgKilcbiAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIDEgdGwgd2l0aFxuICAgICAgIHwgU29tZSh4LCBuZXdfdGwpIC0+XG4gICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG4gICAgfCBfLCAoU3RhcnMoKDB8MSkgYXMgbikgYXMgdCkgOjogdGwgLT5cbiAgICAgICgqIDIgb3IgMyBcIm9ycGhhblwiIHN0YXJzLCBvciBlbXBoL2JvbGQgKilcbiAgICAgIChtYXRjaCBzZW1waF9vcl9ib2xkIChuKzIpIHRsIHdpdGhcbiAgICAgICB8IFNvbWUoeCwgbmV3X3RsKSAtPlxuICAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCkgOjogcikgW3RdIG5ld190bFxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChFbXBoKFtCb2xkKG1haW5faW1wbCB+aHRtbCBbXSBbdF0geCldKSA6OiByKSBbdF0gbmV3X3RsXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICBlbmRcbiAgICAgIClcblxuICAgICgqIGJhY2tzbGFzaGVzICopXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE5ld2xpbmUgYXMgdCkgOjogdGwgLT4gKCogXFxcXG4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE5ld2xpbmVzIDAgOjogdGwgLT4gKCogXFxcXG5cXG5cXG5cXG4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKEJyIDo6IHIpIFtCYWNrc2xhc2g7IE5ld2xpbmVdIChOZXdsaW5lIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE5ld2xpbmVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXFxcblxcblxcblxcbi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoQnIgOjogcikgW0JhY2tzbGFzaDsgTmV3bGluZV1cbiAgICAgICAgKE5ld2xpbmVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChCYWNrcXVvdGUgYXMgdCkgOjogdGwgLT4gKCogXFxgICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcImBcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQmFja3F1b3RlcyAwIDo6IHRsIC0+ICgqIFxcYGBgYC4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJgXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEJhY2txdW90ZV0gKEJhY2txdW90ZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBCYWNrcXVvdGVzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXGBgYGAuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiYFwiKSA6OiByKSBbQmFja3NsYXNoOyBCYWNrcXVvdGVdXG4gICAgICAgIChCYWNrcXVvdGVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChTdGFyIGFzIHQpIDo6IHRsIC0+ICgqIFxcKiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IFN0YXJzIDAgOjogdGwgLT4gKCogXFwqKioqLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIipcIikgOjogcikgW0JhY2tzbGFzaDsgU3Rhcl0gKFN0YXIgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogU3RhcnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKioqKi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIqXCIpIDo6IHIpIFtCYWNrc2xhc2g7IFN0YXJdIChTdGFycyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoVW5kZXJzY29yZSBhcyB0KSA6OiB0bCAtPiAoKiBcXF8gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiX1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBVbmRlcnNjb3JlcyAwIDo6IHRsIC0+ICgqIFxcX19fLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW0JhY2tzbGFzaDsgVW5kZXJzY29yZV0gKFVuZGVyc2NvcmUgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogVW5kZXJzY29yZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcX19fLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl9cIikgOjogcikgW0JhY2tzbGFzaDsgVW5kZXJzY29yZV1cbiAgICAgICAgKFVuZGVyc2NvcmVzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChPYnJhY2UgYXMgdCkgOjogdGwgLT4gKCogXFx7ICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT2JyYWNlcyAwIDo6IHRsIC0+ICgqIFxce3t7Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNlXSAoT2JyYWNlIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFjZXMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxce3t7Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIntcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNlXSAoT2JyYWNlcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoQ2JyYWNlIGFzIHQpIDo6IHRsIC0+ICgqIFxcfSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFjZXMgMCA6OiB0bCAtPiAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFjZV0gKENicmFjZSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2VzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXH19fS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJ9XCIpIDo6IHIpIFtCYWNrc2xhc2g7IENicmFjZV0gKENicmFjZXMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9icmFja2V0IGFzIHQpIDo6IHRsIC0+ICgqIFxcWyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJbXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IE9icmFja2V0cyAwIDo6IHRsIC0+ICgqIFxcW1tbLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNrZXRdIChPYnJhY2tldCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPYnJhY2tldHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcW1tbLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIltcIikgOjogcikgW0JhY2tzbGFzaDsgT2JyYWNrZXRdIChPYnJhY2tldHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKENicmFja2V0IGFzIHQpIDo6IHRsIC0+ICgqIFxcfSAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCJdXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IENicmFja2V0cyAwIDo6IHRsIC0+ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNrZXRdIChDYnJhY2tldCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBDYnJhY2tldHMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcfX19Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIl1cIikgOjogcikgW0JhY2tzbGFzaDsgQ2JyYWNrZXRdIChDYnJhY2tldHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKE9wYXJlbnRoZXNpcyBhcyB0KSA6OiB0bCAtPiAoKiBcXCggKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBPcGFyZW50aGVzaXNzIDAgOjogdGwgLT4gKCogXFwoKCguLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbQmFja3NsYXNoOyBPcGFyZW50aGVzaXNdIChPcGFyZW50aGVzaXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogT3BhcmVudGhlc2lzcyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwoKCguLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiKFwiKSA6OiByKSBbQmFja3NsYXNoOyBPcGFyZW50aGVzaXNdXG4gICAgICAgIChPcGFyZW50aGVzaXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChDcGFyZW50aGVzaXMgYXMgdCkgOjogdGwgLT4gKCogXFwpICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogQ3BhcmVudGhlc2lzcyAwIDo6IHRsIC0+ICgqIFxcKSkpLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW0JhY2tzbGFzaDsgQ3BhcmVudGhlc2lzXVxuICAgICAgICAoQ3BhcmVudGhlc2lzIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IENwYXJlbnRoZXNpc3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKSkpLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIilcIikgOjogcikgW0JhY2tzbGFzaDsgQ3BhcmVudGhlc2lzXVxuICAgICAgICAoQ3BhcmVudGhlc2lzcyAobi0xKSA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiAoUGx1cyBhcyB0KSA6OiB0bCAtPiAoKiBcXCsgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiK1wiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBQbHVzcyAwIDo6IHRsIC0+ICgqIFxcKysrLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW0JhY2tzbGFzaDsgUGx1c10gKFBsdXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogUGx1c3MgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcKysrLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIitcIikgOjogcikgW0JhY2tzbGFzaDsgUGx1c10gKFBsdXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChNaW51cyBhcyB0KSA6OiB0bCAtPiAoKiBcXC0gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBNaW51c3MgMCA6OiB0bCAtPiAoKiBcXC0tLS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE1pbnVzXSAoTWludXMgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogTWludXNzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXC0tLS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCItXCIpIDo6IHIpIFtCYWNrc2xhc2g7IE1pbnVzXSAoTWludXNzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChEb3QgYXMgdCkgOjogdGwgLT4gKCogXFwuICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIi5cIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRG90cyAwIDo6IHRsIC0+ICgqIFxcLi4uLi4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIuXCIpIDo6IHIpIFtCYWNrc2xhc2g7IERvdF0gKERvdCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBEb3RzIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXC4uLi4uLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiLlwiKSA6OiByKSBbQmFja3NsYXNoOyBEb3RdIChEb3RzIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChFeGNsYW1hdGlvbiBhcyB0KSA6OiB0bCAtPiAoKiBcXCEgKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiIVwiKSA6OiByKSBbdF0gdGxcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBFeGNsYW1hdGlvbnMgMCA6OiB0bCAtPiAoKiBcXCEhIS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEV4Y2xhbWF0aW9uXSAoRXhjbGFtYXRpb24gOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogRXhjbGFtYXRpb25zIG4gOjogdGwgLT4gYXNzZXJ0IChuID49IDApOyAoKiBcXCEhIS4uLiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIhXCIpIDo6IHIpIFtCYWNrc2xhc2g7IEV4Y2xhbWF0aW9uXVxuICAgICAgICAoRXhjbGFtYXRpb25zIChuLTEpIDo6IHRsKVxuICAgIHwgXywgQmFja3NsYXNoIDo6IChIYXNoIGFzIHQpIDo6IHRsIC0+ICgqIFxcIyAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCIjXCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEhhc2hzIDAgOjogdGwgLT4gKCogXFwjIyMuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbQmFja3NsYXNoOyBIYXNoXSAoSGFzaCA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBIYXNocyBuIDo6IHRsIC0+IGFzc2VydCAobiA+PSAwKTsgKCogXFwjIyMuLi4gKilcbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQgKFwiI1wiKSA6OiByKSBbQmFja3NsYXNoOyBIYXNoXSAoSGFzaHMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKEdyZWF0ZXJ0aGFuIGFzIHQpIDo6IHRsIC0+ICgqIFxcPiAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI+XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IEdyZWF0ZXJ0aGFucyAwIDo6IHRsIC0+ICgqIFxcPj4+Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW0JhY2tzbGFzaDsgR3JlYXRlcnRoYW5dIChHcmVhdGVydGhhbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBHcmVhdGVydGhhbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcPj4+Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIj5cIikgOjogcikgW0JhY2tzbGFzaDsgR3JlYXRlcnRoYW5dXG4gICAgICAgIChHcmVhdGVydGhhbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2ggOjogKExlc3N0aGFuIGFzIHQpIDo6IHRsIC0+ICgqIFxcPCAqKVxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dCAoXCI8XCIpIDo6IHIpIFt0XSB0bFxuICAgIHwgXywgQmFja3NsYXNoIDo6IExlc3N0aGFucyAwIDo6IHRsIC0+ICgqIFxcPDw8Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW0JhY2tzbGFzaDsgTGVzc3RoYW5dIChMZXNzdGhhbiA6OiB0bClcbiAgICB8IF8sIEJhY2tzbGFzaCA6OiBMZXNzdGhhbnMgbiA6OiB0bCAtPiBhc3NlcnQgKG4gPj0gMCk7ICgqIFxcPDw8Li4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIjxcIikgOjogcikgW0JhY2tzbGFzaDsgTGVzc3RoYW5dXG4gICAgICAgIChMZXNzdGhhbnMgKG4tMSkgOjogdGwpXG4gICAgfCBfLCAoQmFja3NsYXNocyAwIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxcXFxcLi4uICopXG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IChcIlxcXFxcIikgOjogcikgW3RdIHRsXG4gICAgfCBfLCAoQmFja3NsYXNocyBuIGFzIHQpIDo6IHRsIC0+ICgqIFxcXFxcXFxcLi4uICopXG4gICAgICBpZiBuIG1vZCAyID0gMCB0aGVuXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoU3RyaW5nLm1ha2UgKChuKzIpLzIpICdcXFxcJykgOjogcikgW3RdIHRsXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoU3RyaW5nLm1ha2UgKChuKzIpLzIpICdcXFxcJykgOjogcikgW3RdIChCYWNrc2xhc2ggOjogdGwpXG4gICAgfCBfLCBCYWNrc2xhc2g6OltdIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IFwiXFxcXFwiIDo6IHIpIFtdIFtdXG4gICAgfCBfLCBCYWNrc2xhc2g6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IFwiXFxcXFwiIDo6IHIpIFtCYWNrc2xhc2hdIHRsXG5cbiAgICAoKiA8ICopXG4gICAgfCBfLCAoTGVzc3RoYW58TGVzc3RoYW5zIF8gYXMgdClcbiAgICAgICAgIDo6IChXb3JkKFwiaHR0cFwifFwiaHR0cHNcInxcImZ0cFwifFwiZnRwc1wifFwic3NoXCJ8XCJhZnBcInxcImltYXBcIikgYXMgdylcbiAgICAgICAgIDo6IENvbG9uOjpTbGFzaHMobik6OnRsIC0+XG4gICAgICAoKiBcInNlbWktYXV0b21hdGljXCIgVVJMcyAqKVxuICAgICAgbGV0IHJlYyByZWFkX3VybCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCAoTmV3bGluZXxOZXdsaW5lcyBfKTo6dGwgLT5cbiAgICAgICAgICBOb25lXG4gICAgICAgIHwgR3JlYXRlcnRoYW46OnRsIC0+XG4gICAgICAgICAgbGV0IHVybCA9XG4gICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW4gdykgXiBcIjovL1wiXG4gICAgICAgICAgICBeIChpZiBuID0gMCB0aGVuIFwiXCIgZWxzZSBTdHJpbmcubWFrZSAobi0xKSAnLycpXG4gICAgICAgICAgICBeIEwuc3RyaW5nX29mX3Rva2VucyAoTGlzdC5yZXYgYWNjdSlcbiAgICAgICAgICBpbiBTb21lKHVybCwgdGwpXG4gICAgICAgIHwgeDo6dGwgLT5cbiAgICAgICAgICByZWFkX3VybCAoeDo6YWNjdSkgdGxcbiAgICAgICAgfCBbXSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIGluXG4gICAgICBiZWdpbiBtYXRjaCByZWFkX3VybCBbXSB0bCB3aXRoXG4gICAgICAgIHwgU29tZSh1cmwsIG5ld190bCkgLT5cbiAgICAgICAgICBsZXQgciA9IFxuICAgICAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICB8IExlc3N0aGFucyAwIC0+IFRleHQgXCI8XCIgOjogclxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbiAtPiBUZXh0KFN0cmluZy5tYWtlIChuKzEpICc8JykgOjogclxuICAgICAgICAgICAgfCBfIC0+IHJcbiAgICAgICAgICBpblxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFVybCh1cmwsW1RleHQgdXJsXSxcIlwiKTo6cikgW10gbmV3X3RsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cblxuICAgICgqIFdvcmQodykgKilcbiAgICB8IF8sIFdvcmQgdzo6dGwgLT5cbiAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IHcgOjogcikgW1dvcmQgd10gdGxcblxuICAgICgqIG5ld2xpbmUgYXQgdGhlIGVuZCAqKVxuICAgIHwgXywgW05ld2xpbmVdIC0+XG4gICAgICBOTDo6clxuXG4gICAgKCogbmFtZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChXb3JkIHc6OigoU2VtaWNvbG9ufFNlbWljb2xvbnMgXykgYXMgcyk6OnRsKSBhcyB0bDIpIC0+XG4gICAgICBpZiBTdHJpbmdTZXQubWVtIHcgaHRtbGNvZGVzX3NldCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSB0bFxuICAgICAgICAgIHwgU2VtaWNvbG9ucyAwIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJlwiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG4gICAgKCogZGlnaXQtY29kZWQgaHRtbCBlbnRpdHkgKilcbiAgICB8IF8sIEFtcGVyc2FuZDo6KChIYXNoOjpOdW1iZXIgdzo6KChTZW1pY29sb258U2VtaWNvbG9ucyBfKSBhcyBzKTo6dGwpXG4gICAgICAgICAgICAgICAgICAgICBhcyB0bDIpIC0+XG4gICAgICBpZiBTdHJpbmcubGVuZ3RoIHcgPD0gNCB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIHMgd2l0aFxuICAgICAgICAgIHwgU2VtaWNvbG9uIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gdGxcbiAgICAgICAgICB8IFNlbWljb2xvbnMgMCAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb246OnRsKVxuICAgICAgICAgIHwgU2VtaWNvbG9ucyBuIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImI1wiXndeXCI7XCIpOjpyKSBbc10gKFNlbWljb2xvbnMobi0xKTo6dGwpXG4gICAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIHRsMlxuXG4gICAgKCogbWF5YmUgaGV4IGRpZ2l0LWNvZGVkIGh0bWwgZW50aXR5ICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OigoSGFzaDo6V29yZCB3OjooKFNlbWljb2xvbnxTZW1pY29sb25zIF8pIGFzIHMpOjp0bClcbiAgICAgICAgICAgICAgICAgICAgIGFzIHRsMikgd2hlbiBpc19oZXggdyAtPlxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCB3IDw9IDQgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IFNlbWljb2xvbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIHRsXG4gICAgICAgICAgfCBTZW1pY29sb25zIDAgLT5cbiAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiYjXCJed15cIjtcIik6OnIpIFtzXSAoU2VtaWNvbG9uOjp0bClcbiAgICAgICAgICB8IFNlbWljb2xvbnMgbiAtPlxuICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJiNcIl53XlwiO1wiKTo6cikgW3NdIChTZW1pY29sb25zKG4tMSk6OnRsKVxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSB0bDJcblxuXG4gICAgKCogQW1wZXJzYW5kICopXG4gICAgfCBfLCBBbXBlcnNhbmQ6OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCImYW1wO1wiKTo6cikgW0FtcGVyc2FuZF0gdGxcblxuICAgICgqIDIgQW1wZXJzYW5kcyAqKVxuICAgIHwgXywgQW1wZXJzYW5kcygwKTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIiZhbXA7XCIpOjpyKSBbXSAoQW1wZXJzYW5kOjp0bClcblxuICAgICgqIFNldmVyYWwgQW1wZXJzYW5kcyAobW9yZSB0aGFuIDIpICopXG4gICAgfCBfLCBBbXBlcnNhbmRzKG4pOjp0bCAtPlxuICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiJmFtcDtcIik6OnIpIFtdIChBbXBlcnNhbmRzKG4tMSk6OnRsKVxuXG4gICAgKCogYmFja3F1b3RlcyAqKVxuICAgIHwgXywgKEJhY2txdW90ZXxCYWNrcXVvdGVzIF8gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBiY29kZSB+ZGVmYXVsdF9sYW5nIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBIVE1MICopXG4gICAgKCogPGJyLz4gYW5kIDxoci8+IHdpdGggb3Igd2l0aG91dCBzcGFjZShzKSAqKVxuICAgIHwgXywgKExlc3N0aGFuOjpXb3JkKFwiYnJcInxcImhyXCIgYXMgdyk6OlNsYXNoXG4gICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsKVxuICAgIHwgXywgKExlc3N0aGFuOjpXb3JkKFwiYnJcInxcImhyXCIgYXMgdyk6OihTcGFjZXxTcGFjZXMgXyk6OlNsYXNoXG4gICAgICAgICAgOjooR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8gYXMgZyk6OnRsKSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZyB3aXRoXG4gICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChSYXcoXCI8XCJed15cIiAvPlwiKTo6cikgW0dyZWF0ZXJ0aGFuXSAoR3JlYXRlcnRoYW46OnRsKVxuICAgICAgICB8IEdyZWF0ZXJ0aGFucyBuIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoUmF3KFwiPFwiXndeXCIgLz5cIik6OnIpIFtHcmVhdGVydGhhbl1cbiAgICAgICAgICAgIChHcmVhdGVydGhhbnMobi0xKTo6dGwpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKFJhdyhcIjxcIl53XlwiIC8+XCIpOjpyKSBbR3JlYXRlcnRoYW5dIHRsXG4gICAgICBlbmRcblxuICAgICgqIGF3YWl0ZWQgb3JwaGFuIGh0bWwgY2xvc2luZyB0YWcgKilcbiAgICB8IF8sIExlc3N0aGFuOjpTbGFzaDo6V29yZCh3KTo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0bFxuICAgICAgd2hlbiAhbWVkaWF0eXBldGV4dG9tZCA8PiBbXSAtPlxuICAgICAgcmFpc2UgKE9ycGhhbl9jbG9zaW5nKHcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggZyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT4gR3JlYXRlcnRoYW46OnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSk6OnRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiB0bCkpKVxuXG4gICAgKCogYmxvY2sgaHRtbCAqKVxuICAgIHwgKFtdIHwgW05ld2xpbmV8TmV3bGluZXMgX3xUYWcoXCJIVE1MQkxPQ0tcIiwgXyldKSxcbiAgICAgIChMZXNzdGhhbiBhcyB0KVxuICAgICAgOjooKFdvcmQodGFnbmFtZXRvcCkgYXMgdylcbiAgICAgICAgIDo6KChTcGFjZXxTcGFjZXMgX3xHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXylcbiAgICAgICAgICAgIDo6XyBhcyBodG1sX3N0dWZmKSBhcyB0bHgpIC0+XG4gICAgICBpZiBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaW5saW5lX2h0bWx0YWdzX3NldCB0aGVuXG4gICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBbV29yZCBcIlwiXSBsZXhlbWVzXG4gICAgICBlbHNlIGlmIG5vdCAoYmxpbmRfaHRtbCB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaHRtbHRhZ3Nfc2V0KSB0aGVuXG4gICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bHhcbiAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHJlYWRfaHRtbCgpID1cbiAgICAgICAgICBsZXQgbW9kdWxlIFQgPSBzdHJ1Y3RcbiAgICAgICAgICAgIHR5cGUgdCA9XG4gICAgICAgICAgICAgIHwgQXdhaXRpbmcgb2Ygc3RyaW5nXG4gICAgICAgICAgICAgIHwgT3BlbiBvZiBzdHJpbmdcbiAgICAgICAgICAgIHR5cGUgaW50ZXJtID1cbiAgICAgICAgICAgICAgfCBIVE1MIG9mIHN0cmluZyAqIChzdHJpbmcgKiBzdHJpbmcgb3B0aW9uKSBsaXN0ICogaW50ZXJtIGxpc3RcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgb2YgTC50XG4gICAgICAgICAgICAgIHwgTUQgb2YgT21kX3JlcHJlc2VudGF0aW9uLnRcbiAgICAgICAgICAgIGxldCByZWMgbWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCBsID1cbiAgICAgICAgICAgICAgbGV0IG1kX29mX2ludGVybV9saXN0ID8oaHRtbD1odG1sKSBsID1cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCBodG1sIGxcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgfCBIVE1MKHQsIGEsIGMpOjp0bCAtPlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIGxldCBmX2EgPSBmaWx0ZXJfdGV4dF9vbWRfcmV2IGEgaW5cbiAgICAgICAgICAgICAgICAgIGlmIGZfYSAhPSBhIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgSHRtbF9ibG9ja1xuICAgICAgICAgICAgICAgICAgICAgICh0LFxuICAgICAgICAgICAgICAgICAgICAgICBmX2EsXG4gICAgICAgICAgICAgICAgICAgICAgIG1ha2VfcGFyYWdyYXBoc1xuICAgICAgICAgICAgICAgICAgICAgICAgIChtZF9vZl9pbnRlcm1fbGlzdCB+aHRtbDpmYWxzZSAoTGlzdC5yZXYgYykpKVxuICAgICAgICAgICAgICAgICAgICA6OiBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBIdG1sX2Jsb2NrXG4gICAgICAgICAgICAgICAgICAgICAgKHQsIGZfYSwgbWRfb2ZfaW50ZXJtX2xpc3Qgfmh0bWw6dHJ1ZSAoTGlzdC5yZXYgYykpXG4gICAgICAgICAgICAgICAgICAgIDo6IG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IE1EIG1kOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kQG1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgUlRPS0VOUyB0MTo6RlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoRlRPS0VOUyhMaXN0LnJldl9hcHBlbmQgdDEgdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBSVE9LRU5TIHQxOjpSVE9LRU5TIHQyOjp0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0XG4gICAgICAgICAgICAgICAgICAoRlRPS0VOUyhMaXN0LnJldl9hcHBlbmQgdDEgKExpc3QucmV2IHQyKSk6OnRsKVxuICAgICAgICAgICAgICB8IEZUT0tFTlMgdDE6OkZUT0tFTlMgdDI6OnRsIC0+XG4gICAgICAgICAgICAgICAgbWRfb2ZfaW50ZXJtX2xpc3QgKEZUT0tFTlModDFAdDIpOjp0bClcbiAgICAgICAgICAgICAgfCBGVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBpZiBodG1sIHRoZW5cbiAgICAgICAgICAgICAgICAgIFJhdyhMLnN0cmluZ19vZl90b2tlbnMgdCkgOjogbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYWluX2xvb3Agfmh0bWwgW10gW1dvcmQgXCJcIl0gdFxuICAgICAgICAgICAgICAgICAgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgICB8IFJUT0tFTlMgdCA6OiB0bCAtPlxuICAgICAgICAgICAgICAgIG1kX29mX2ludGVybV9saXN0IChGVE9LRU5TKExpc3QucmV2IHQpIDo6IHRsKVxuICAgICAgICAgICAgbGV0IG1kX29mX2ludGVybV9saXN0IGwgPSBtZF9vZl9pbnRlcm1fbGlzdCB0cnVlIGxcbiAgICAgICAgICAgIGxldCBzdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyA9XG4gICAgICAgICAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgICAgICAgICAgICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IE9wZW4gdCAtPiBicHJpbnRmIGIgXCJ7Qi9PcGVuICVzfVwiIHRcbiAgICAgICAgICAgICAgICAgIHwgQXdhaXRpbmcgdCAtPiBicHJpbnRmIGIgXCJ7Qi9Bd2FpdGluZyAlc31cIiB0XG4gICAgICAgICAgICAgICAgKSB0YWdzdGF0dXM7XG4gICAgICAgICAgICAgIEJ1ZmZlci5jb250ZW50cyBiXG4gICAgICAgICAgZW5kIGluXG4gICAgICAgICAgbGV0IGFkZF90b2tlbl90b19ib2R5IHggYm9keSA9XG4gICAgICAgICAgICBtYXRjaCBib2R5IHdpdGhcbiAgICAgICAgICAgIHwgVC5SVE9LRU5TIHIgOjogYm9keSAtPiBULlJUT0tFTlMoeDo6cik6OmJvZHlcbiAgICAgICAgICAgIHwgXyAtPiBULlJUT0tFTlNbeF0gOjogYm9keVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJlYyBsb29wIChib2R5OlQuaW50ZXJtIGxpc3QpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnMgPVxuICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzMzMyBCSFRNTCBsb29wIGJvZHk9JVMgdGFnc3RhdHVzPSVTICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgIChPbWRfYmFja2VuZC5zZXhwcl9vZl9tZChULm1kX29mX2ludGVybV9saXN0IGJvZHkpKVxuICAgICAgICAgICAgICAgIChULnN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzKVxuICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgbWF0Y2ggdG9rZW5zIHdpdGhcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDAxIEJIVE1MIE5vdCBlbm91Z2ggdG8gcmVhZFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDA4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcFxuICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGlmIG4gPSAwIHRoZW4gTGVzc3RoYW4gZWxzZSBMZXNzdGhhbnMobi0xKSlcbiAgICAgICAgICAgICAgICAgICAgICAgYm9keSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIChMZXNzdGhhbjo6dG9rZW5zKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIHNlbGYtY2xvc2luZyB0YWdzICopXG4gICAgICAgICAgICB8IFNsYXNoOjpHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nKHRhZ25hbWUpIDo6IHRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodGFnbmFtZSwgYXR0cnMsIFtdKV0gW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQxOSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgU2xhc2hcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3Rva2VuX3RvX2JvZHlcbiAgICAgICAgICAgICAgICAgICAgICAgIEdyZWF0ZXJ0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5KSlcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIHRhZyBvcGVuZXIgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OlNsYXNoOjooV29yZCh0YWduYW1lKSBhcyB3KVxuICAgICAgICAgICAgICA6OihHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXyBhcyBnKTo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIHdoZW4gdCA9IHRhZ25hbWUgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzNzUgQkhUTUwgcHJvcGVybHkgY2xvc2luZyAlU1xcbiUhXCIgdDtcbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbiA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSkgOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSlcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzNzkgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMVxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBsb29wIChULlJUT0tFTlNbZzt3O1NsYXNoO0xlc3N0aGFuXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDMzODMgQkhUTUwgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMlxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBpZiAhbWVkaWF0eXBldGV4dG9tZCA8PiBbXSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgKE9ycGhhbl9jbG9zaW5nKHQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBnIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIDAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JlYXRlcnRoYW46OnRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgbiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmVhdGVydGhhbnMobi0xKTo6dG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSkpXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBCSFRNTCB3cm9uZ2x5IGNsb3NpbmcgJVMgM1xcbiUhXCIgdGFnbmFtZTtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAoKiB0YWcgKilcbiAgICAgICAgICAgIHwgTGVzc3RoYW46OihXb3JkKHRhZ25hbWUpIGFzIHdvcmQpOjp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIGJsaW5kX2h0bWxcbiAgICAgICAgICAgICAgICB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbHRhZ3Nfc2V0XG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ4OSBCSFRNTCA8V29yZCglcykuLi5cXG4lIVwiIHRhZ25hbWU7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULk9wZW4odCkgOjogX1xuICAgICAgICAgICAgICAgICAgd2hlbiB0IDw+IHRhZ25hbWUgJiYgU3RyaW5nU2V0Lm1lbSB0IGh0bWxfdm9pZF9lbGVtZW50cyAtPlxuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyBfIDo6IF8gLT4gTm9uZVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgYXR0cnMgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNDk2IEJIVE1MIHRhZyAlUyBidXQgYXR0cnMgPD4gW11cXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQyMSBCSFRNTCB0YWcgJVMsIHRhZ3N0YXR1cz0lUywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzPVtdLCB0b2tlbnM9JVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWUgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIFtdIFtdIChULkF3YWl0aW5nIHRhZ25hbWU6OnRhZ3N0YXR1cykgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzQ4OSBCSFRNTCBsb29wXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF90b2tlbl90b19ib2R5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYiwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQzMyBCSFRNTCB0YWdzdGF0dXM9JVMgdG9rZW5zPSVTXFxuJSFcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYkBib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGVuZCBvZiBvcGVuaW5nIHRhZyAqKVxuICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogdGFnc3RhdHVzIC0+XG4gICAgICAgICAgICAgICAgICBpZiBMaXN0Lm1lbSAoXCJtZWRpYTp0eXBlXCIsIFNvbWUgXCJ0ZXh0L29tZFwiKSBhdHRycyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgICBtZWRpYXR5cGV0ZXh0b21kIDo9IHQgOjogIW1lZGlhdHlwZXRleHRvbWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUobWFpbl9pbXBsX3JldiB+aHRtbCBbXSBbXSB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzUyNCBCSFRNTCBjbG9zaW5nIHRhZyBub3QgZm91bmQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gJVNcXG4lIVwiIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2FyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkNsb3NpbmcgdGFnIGAlcycgbm90IGZvdW5kIGZvciB0ZXh0L29tZCB6b25lLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVkaWF0eXBldGV4dG9tZCA6PSBMaXN0LnRsICFtZWRpYXR5cGV0ZXh0b21kO1xuICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHdpdGggT3JwaGFuX2Nsb3NpbmcodGFnbmFtZSwgZGVsaW1pdGVyLCBhZnRlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBiZWZvcmUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVjIGYgciA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXNzdGhhbnMgbiBhcyBlIDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBkZWxpbWl0ZXIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExlc3N0aGFuOjpfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgTGVzc3RoYW46OnRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBuID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFuOjpyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlc3N0aGFucyhuLTEpOjpyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRsID09IGRlbGltaXRlciB8fCB0bCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiAoZTo6cikgdGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZTo6dGwgYXMgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbCA9PSBkZWxpbWl0ZXIgfHwgbCA9IGRlbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgdGwgPT0gZGVsaW1pdGVyIHx8IHRsID0gZGVsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgKGU6OnIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgKGU6OnIpIHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBMaXN0LnJldiByXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGYgW10gdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzU1MiBCSFRNTCB0b2tlbnM9JXMgZGVsaW1pdGVyPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyPSVzIGJlZm9yZT0lcyAodGFnbmFtZT10KT0lYlxcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgZGVsaW1pdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGFmdGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIGJlZm9yZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YWduYW1lID0gdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggIW1lZGlhdHlwZXRleHRvbWQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiB0bCAtPiBtZWRpYXR5cGV0ZXh0b21kIDo9IHRsXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGFnbmFtZSA9IHQgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1QuSFRNTFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1QuTURcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1haW5faW1wbCB+aHRtbCBbXSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFnX3NldGV4dCBtYWluX2xvb3AgYmVmb3JlKSldKV1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW4gZXByaW50ZiBcIihPTUQpIDM1NzEgQkhUTUwgbG9vcFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbG9vcCBib2R5IFtdIChULk9wZW4gdDo6dGFnc3RhdHVzKSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzUxOSBCSFRNTCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZG4ndCBmaW5kIGFuIGNsb3NpbmcgdGFnIGZvciAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShib2R5LCBsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzQ5OCBCSFRNTCBGb3VuZCBhIGNsb3NpbmcgdGFnICVzXFxuJSFcIiB0O1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgW1QuSFRNTCh0LCBhdHRycywgYm9keSldIFtdIHRhZ3N0YXR1cyBsXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoW1QuSFRNTCh0LCBhdHRycywgYm9keSldLCBsKVxuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuIHQgOjogXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgXCIoT01EKSAzNTkxIEJIVE1MIFNvbWUgYD5gIGlzbid0IGZvciBhbiBvcGVuaW5nIHRhZ1xcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSBHcmVhdGVydGhhbiBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzU0MiBCSFRNTCB0YWdzdGF0dXM9W11cXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbmRcblxuICAgICAgICAgICAgKCogbWF5YmUgYXR0cmlidXRlICopXG4gICAgICAgICAgICB8IChDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpOjp0b2tlbnNcbiAgICAgICAgICAgIHwgKFNwYWNlfFNwYWNlcyBfKVxuICAgICAgICAgICAgICA6OihDb2xvbnxDb2xvbnMgX3xVbmRlcnNjb3JlfFVuZGVyc2NvcmVzIF98V29yZCBfIGFzIHQpXG4gICAgICAgICAgICAgIDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBsZXQgbW9kdWxlIEF0dHJpYnV0ZV92YWx1ZSA9IHN0cnVjdFxuICAgICAgICAgICAgICAgICAgdHlwZSB0ID0gRW1wdHkgb2YgbmFtZSB8IE5hbWVkIG9mIG5hbWUgfCBWb2lkXG4gICAgICAgICAgICAgICAgICBhbmQgbmFtZSA9IHN0cmluZ1xuICAgICAgICAgICAgICAgIGVuZCBpblxuICAgICAgICAgICAgICAgIGxldCBvcGVuIEF0dHJpYnV0ZV92YWx1ZSBpblxuICAgICAgICAgICAgICAgIGxldCByZWMgZXh0cmFjdF9hdHRyaWJ1dGUgYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IChTcGFjZSB8IFNwYWNlcyBfIHwgTmV3bGluZSkgOjogdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IChHcmVhdGVydGhhbnxHcmVhdGVydGhhbnMgXykgOjogXyBhcyB0b2tlbnMtPlxuICAgICAgICAgICAgICAgICAgICBFbXB0eShMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgRXF1YWwgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIE5hbWVkKEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCBDb2xvbiB8IENvbG9ucyBfIHwgVW5kZXJzY29yZSB8IFVuZGVyc2NvcmVzIF8gfCBXb3JkIF9cbiAgICAgICAgICAgICAgICAgIHwgTnVtYmVyIF8gfCBNaW51cyB8IE1pbnVzcyBfIHwgRG90IHwgRG90cyBfIGFzIHQgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfYXR0cmlidXRlICh0OjphY2N1KSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgdG9rZW5zIC0+IFZvaWQsIHRva2Vuc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWF0Y2ggZXh0cmFjdF9hdHRyaWJ1dGUgW3RdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgfCBFbXB0eSBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICgqIGF0dHJpYnV0ZSB3aXRoIG5vIGV4cGxpY2l0IHZhbHVlICopXG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNjI4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgTm9uZSk6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBOYW1lZCBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2NjEgQkhUTUwgZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgfCBRdW90ZSA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY2OCBCSFRNTCBub24gZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZnNwbGl0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gQ29udGludWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNjU0IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZXMgMCA6OiB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzY5MCBCSFRNTCBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNjk4IEJIVE1MIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMiAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmV4Y2w6KGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyBfIDo6IF8gLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZjooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGU6OnRsIC0+IFNwbGl0KFtdLCB0bClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lKGF0X3ZhbCwgdG9rZW5zKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2MjIgQkhUTUwgJXM9JVMgJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVm9pZCwgXyAtPiBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICB8IHg6OnRva2VucyBhcyBkZ3RzXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDM2MjAgQkhUTUwgZ2VuZXJhbCAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyBkZ3RzKTtcbiAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IChOZXdsaW5lIHwgU3BhY2UgfCBTcGFjZXMgXykgOjogdG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5Bd2FpdGluZyBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgMzczNyBCSFRNTCBzcGFjZXNcXG4lIVwiO1xuICAgICAgICAgICAgICAgIGxvb3AgYm9keSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCAoTmV3bGluZXMgXyBhcyB4KSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzODI3IEJIVE1MIG5ld2xpbmVzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICB3YXJuIFwidGhlcmUgYXJlIGVtcHR5IGxpbmVzIGluIHdoYXQgbWF5IGJlIGFuIEhUTUwgYmxvY2tcIjtcbiAgICAgICAgICAgICAgICBsb29wIChhZGRfdG9rZW5fdG9fYm9keSB4IGJvZHkpIGF0dHJzIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzQyIEJIVE1MIGZhbGxiYWNrIHdpdGggXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnM9JXMgYW5kIHRhZ3N0YXR1cz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFwiTm9uZVwiXG4gICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBcIkF3YWl0aW5nXCJcbiAgICAgICAgICAgICAgICAgICB8IFQuT3BlbiBfIDo6IF8gLT4gXCJPcGVuIChjYW4ndCBiZSlcIik7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0YWcgOjogXyAtPlxuICAgICAgICAgICAgICAgICB3YXJuIChzcHJpbnRmIFwiZXhwZWN0ZWQgdG8gcmVhZCBhbiBvcGVuIEhUTUwgdGFnICglcyksIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBmb3VuZCBub3RoaW5nXCIgdGFnKTtcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgfCBULk9wZW4gdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIGZpbmQgdGhlIGNsb3NpbmcgSFRNTCB0YWcgZm9yICVzLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAzNDA4IEJIVE1MIGxvb3BcXG4lIVwiO1xuICAgICAgICAgIG1hdGNoIGxvb3AgW10gW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBTb21lKFQubWRfb2ZfaW50ZXJtX2xpc3QgaCwgcmVzdClcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCByZWFkX2h0bWwoKSB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChoQHIpIFtUYWcoXCJIVE1MQkxPQ0tcIiwgZW1wdHlfZXh0ZW5zaW9uKV0gcmVzdFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0IGluXG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KHRleHQgXiB0YWduYW1ldG9wKTo6cikgW3ddIGh0bWxfc3R1ZmZcbiAgICAgICAgZW5kXG4gICAgKCogLyBlbmQgb2YgYmxvY2sgSFRNTC4gKilcblxuXG4gICAgKCogaW5saW5lIEhUTUwgKilcbiAgICB8IF8sXG4gICAgICAoTGVzc3RoYW4gYXMgdClcbiAgICAgIDo6KChXb3JkKHRhZ25hbWV0b3ApIGFzIHcpXG4gICAgICAgICA6OigoU3BhY2V8U3BhY2VzIF98R3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pXG4gICAgICAgICAgICA6Ol8gYXMgaHRtbF9zdHVmZikgYXMgdGx4KSAtPlxuICAgICAgaWYgKHN0cmljdF9odG1sICYmIG5vdChTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaW5saW5lX2h0bWx0YWdzX3NldCkpXG4gICAgICB8fCBub3QoYmxpbmRfaHRtbCB8fCBTdHJpbmdTZXQubWVtIHRhZ25hbWV0b3AgaHRtbHRhZ3Nfc2V0KVxuICAgICAgdGhlblxuICAgICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGx4XG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgZW5kXG4gICAgICBlbHNlXG4gICAgICAgIGxldCByZWFkX2h0bWwoKSA9XG4gICAgICAgICAgbGV0IG1vZHVsZSBUID0gc3RydWN0XG4gICAgICAgICAgICB0eXBlIHQgPVxuICAgICAgICAgICAgICB8IEF3YWl0aW5nIG9mIHN0cmluZ1xuICAgICAgICAgICAgICB8IE9wZW4gb2Ygc3RyaW5nXG4gICAgICAgICAgICB0eXBlIGludGVybSA9XG4gICAgICAgICAgICAgIHwgSFRNTCBvZiBzdHJpbmcgKiAoc3RyaW5nICogc3RyaW5nIG9wdGlvbikgbGlzdCAqIGludGVybSBsaXN0XG4gICAgICAgICAgICAgIHwgVE9LRU5TIG9mIEwudFxuICAgICAgICAgICAgICB8IE1EIG9mIE9tZF9yZXByZXNlbnRhdGlvbi50XG4gICAgICAgICAgICBsZXQgcmVjIG1kX29mX2ludGVybV9saXN0ID0gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBbXSAtPiBbXVxuICAgICAgICAgICAgICB8IEhUTUwodCwgYSwgYyk6OnRsIC0+XG4gICAgICAgICAgICAgICAgSHRtbCh0LCBhLCBtZF9vZl9pbnRlcm1fbGlzdChMaXN0LnJldiBjKSk6Om1kX29mX2ludGVybV9saXN0IHRsXG4gICAgICAgICAgICAgIHwgTUQgbWQ6OnRsIC0+IG1kIEAgbWRfb2ZfaW50ZXJtX2xpc3QgdGxcbiAgICAgICAgICAgICAgfCBUT0tFTlMgdDE6OlRPS0VOUyB0Mjo6dGwgLT5cbiAgICAgICAgICAgICAgICBtZF9vZl9pbnRlcm1fbGlzdCAoVE9LRU5TKHQxQHQyKTo6dGwpXG4gICAgICAgICAgICAgIHwgVE9LRU5TIHQgOjogdGwgLT5cbiAgICAgICAgICAgICAgICBtYWluX2ltcGwgfmh0bWwgW10gW1dvcmQgXCJcIl0gKHQpXG4gICAgICAgICAgICAgICAgQCBtZF9vZl9pbnRlcm1fbGlzdCB0bFxuICAgICAgICAgICAgbGV0IHN0cmluZ19vZl90YWdzdGF0dXMgdGFnc3RhdHVzID1cbiAgICAgICAgICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgICAgICAgICAgIExpc3QuaXRlciAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgT3BlbiB0IC0+IGJwcmludGYgYiBcIntJL09wZW4gJXN9XCIgdFxuICAgICAgICAgICAgICAgICAgfCBBd2FpdGluZyB0IC0+IGJwcmludGYgYiBcIntJL0F3YWl0aW5nICVzfVwiIHRcbiAgICAgICAgICAgICAgICApIHRhZ3N0YXR1cztcbiAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcbiAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICBsZXQgYWRkX3Rva2VuX3RvX2JvZHkgeCBib2R5ID1cbiAgICAgICAgICAgIFQuVE9LRU5TW3hdOjpib2R5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVjIGxvb3AgKGJvZHk6VC5pbnRlcm0gbGlzdCkgYXR0cnMgdGFnc3RhdHVzIHRva2VucyA9XG4gICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAzNzE4IGxvb3AgdGFnc3RhdHVzPSglcykgJXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgKCogZXByaW50ZiBcIihPTUQpIDM3MTggbG9vcCB0YWdzdGF0dXM9KCVzKSBib2R5PSglcykgJXNcXG4lIVwiICopXG4gICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpXG4gICAgICAgICAgICAgICAgKCogKE9tZF9iYWNrZW5kLnNleHByX29mX21kKFQubWRfb2ZfaW50ZXJtX2xpc3QgYm9keSkpICopXG4gICAgICAgICAgICAgICAgKEwuZGVzdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICBtYXRjaCB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICB8IFQuT3Blbih0KTo6XyB3aGVuIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSwgdG9rZW5zKVxuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgTm90IGVub3VnaCB0byByZWFkIGZvciBpbmxpbmUgSFRNTFxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgfCBMZXNzdGhhbnMgbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICBsb29wXG4gICAgICAgICAgICAgICAgICAgIChhZGRfdG9rZW5fdG9fYm9keVxuICAgICAgICAgICAgICAgICAgICAgICAoaWYgbiA9IDAgdGhlbiBMZXNzdGhhbiBlbHNlIExlc3N0aGFucyhuLTEpKVxuICAgICAgICAgICAgICAgICAgICAgICBib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgKExlc3N0aGFuOjp0b2tlbnMpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogc2VsZi1jbG9zaW5nIHRhZ3MgKilcbiAgICAgICAgICAgIHwgU2xhc2g6OkdyZWF0ZXJ0aGFuOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcodGFnbmFtZSk6OnRhZ3N0YXR1c1xuICAgICAgICAgICAgICAgICAgd2hlbiBTdHJpbmdTZXQubWVtIHRhZ25hbWUgaHRtbF92b2lkX2VsZW1lbnRzIC0+XG4gICAgICAgICAgICAgICAgICBsb29wIFtULkhUTUwodGFnbmFtZSwgYXR0cnMsIFtdKV0gW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbR3JlYXRlcnRoYW47U2xhc2hdOjpib2R5KVxuICAgICAgICAgICAgICAgICAgICBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogbXVsdGlwbGUgbmV3bGluZXMgYXJlIG5vdCB0byBiZSBzZWVuIGluIGlubGluZSBIVE1MICopXG4gICAgICAgICAgICB8IE5ld2xpbmVzIF8gOjogXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSBNdWx0aXBsZSBsaW5lcyBpbiBpbmxpbmUgSFRNTFxcbiUhXCI7XG4gICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgfCBbXSAtPiBTb21lKGJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgIHwgXyAtPiB3YXJuIFwibXVsdGlwbGUgbmV3bGluZXMgaW4gaW5saW5lIEhUTUxcIjsgTm9uZSlcbiAgICAgICAgICAgICgqIG1heWJlIGNvZGUgKilcbiAgICAgICAgICAgIHwgKEJhY2txdW90ZSB8IEJhY2txdW90ZXMgXyBhcyBiKTo6dGwgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBubyBjb2RlXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBub25lXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiBfIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIG1heWJlIGNvZGUgaW4gaW5saW5lIEhUTUw6IGxldCdzIHRyeVxcbiUhXCI7XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBiY29kZSBbXSBbU3BhY2VdIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSAoKChDb2RlIF86Ol8pIGFzIGMpLCBwLCBsKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybWVkXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIChULk1EIGM6OmJvZHkpIFtdIHRhZ3N0YXR1cyBsXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSBtYXliZSBjb2RlIGluIGlubGluZSBIVE1MOiBmYWlsZWRcXG4lIVwiO1xuICAgICAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW2JdOjpib2R5KSBbXSB0YWdzdGF0dXMgdGxcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGNsb3NpbmcgdGhlIHRhZyAqKVxuICAgICAgICAgICAgfCBMZXNzdGhhbjo6U2xhc2g6OihXb3JkKHRhZ25hbWUpIGFzIHcpXG4gICAgICAgICAgICAgIDo6KEdyZWF0ZXJ0aGFufEdyZWF0ZXJ0aGFucyBfIGFzIGcpOjp0b2tlbnMgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gd2hlbiB0ID0gdGFnbmFtZSAtPlxuICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDEzNiBwcm9wZXJseSBjbG9zaW5nICVTIHRva2Vucz0lc1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICB0IChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgIFNvbWUoYm9keSxcbiAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGcgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmVhdGVydGhhbnMgMCAtPiBHcmVhdGVydGhhbiA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JlYXRlcnRoYW5zIG4gLT4gR3JlYXRlcnRoYW5zKG4tMSkgOjogdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gdG9rZW5zKSlcbiAgICAgICAgICAgICAgICB8IFQuT3BlbiB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNDQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMVxcbiUhXCIgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgbG9vcCAoVC5UT0tFTlNbZzt3O1NsYXNoO0xlc3N0aGFuXTo6Ym9keSkgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgVC5Bd2FpdGluZyB0IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNDkgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nICVTIHdpdGggJVMgMlxcbiUhXCIgdCB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQxNTQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JvbmdseSBjbG9zaW5nIG5vdGhpbmcgd2l0aCAlUyAzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgIHRhZ25hbWU7XG4gICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgKCogdGFnICopXG4gICAgICAgICAgICB8IExlc3N0aGFuOjooV29yZCh0YWduYW1lKSBhcyB3b3JkKTo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW5cbiAgICAgICAgICAgICAgICBibGluZF9odG1sXG4gICAgICAgICAgICAgICAgfHwgKHN0cmljdF9odG1sICYmIFN0cmluZ1NldC5tZW0gdGFnbmFtZSBpbmxpbmVfaHRtbHRhZ3Nfc2V0KVxuICAgICAgICAgICAgICAgIHx8IChub3Qgc3RyaWN0X2h0bWwgJiYgU3RyaW5nU2V0Lm1lbSB0YWduYW1lIGh0bWx0YWdzX3NldClcbiAgICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICAgaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgPCVzLi4uXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgIHwgVC5PcGVuKHQpIDo6IF9cbiAgICAgICAgICAgICAgICAgIHdoZW4gdCA8PiB0YWduYW1lICYmIFN0cmluZ1NldC5tZW0gdCBodG1sX3ZvaWRfZWxlbWVudHMgLT5cbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgXyA6OiBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgMzc5NiB0YWcgJXMsIGF0dHJzPVtdXFxuJSFcIiB0YWduYW1lO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGxvb3AgW10gW10gKFQuQXdhaXRpbmcgdGFnbmFtZTo6dGFnc3RhdHVzKSB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1t3b3JkO0xlc3N0aGFuXTo6Ym9keSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZShiLHRva2VucykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoYkBib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICgqIGVuZCBvZiBvcGVuaW5nIHRhZyAqKVxuICAgICAgICAgICAgfCBHcmVhdGVydGhhbjo6dG9rZW5zIC0+XG4gICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgNDE4NSBlbmQgb2Ygb3BlbmluZyB0YWcgdG9rZW5zPSVzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGFnc3RhdHVzPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgKEwuc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpXG4gICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRhZ3N0YXR1cyk7XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRhZ3N0YXR1cyB3aXRoXG4gICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIHQgOjogdGFnc3RhdHVzIGFzIHRzIC0+XG4gICAgICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBsb29wIGJvZHkgW10gKFQuT3BlbiB0Ojp0YWdzdGF0dXMpIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSA0MTg2IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VsZG4ndCBmaW5kIGFuIGNsb3NpbmcgdGFnIGZvciAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdDtcbiAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZShiLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIDQxOTIgRm91bmQgYSBjbG9zaW5nIHRhZyAlcyB0cz0lcyBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zPSVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoVC5zdHJpbmdfb2ZfdGFnc3RhdHVzIHRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTb21lKFQuSFRNTCh0LCBhdHRycywgYik6OmJvZHksIHRva2VucylcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIE5vdGU6IHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIHZhbHVlIG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0cnNdIGhlcmUgYmVjYXVzZSBpbiB3ZSBoYXZlIGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWdzdGF0dXNdIG1hdGNoZXMgW1QuT3BlbiBfIDo6IF9dIGFuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlcmUncyBhIGNvcnJlc3BvbmRpbmcgZmlsdGVyIHRoYXQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSBjYXJlIG9mIGF0dHJzIHRoYXQgd2lsbCB0YWtlIGNhcmUgb2ZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgbG9vcCAoVC5IVE1MKHQsIGF0dHJzLCBiKTo6Ym9keSkgW10gdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgfCBULk9wZW4gdCA6OiBfIC0+XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICBcIihPTUQpIFR1cm5zIG91dCBhbiBgPmAgaXNuJ3QgZm9yIGFuIG9wZW5pbmcgdGFnXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0dyZWF0ZXJ0aGFuXTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIDQyMDIgdGFnc3RhdHVzPVtdXFxuJSFcIjtcbiAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZW5kXG5cbiAgICAgICAgICAgICgqIG1heWJlIGF0dHJpYnV0ZSAqKVxuICAgICAgICAgICAgfCAoQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KTo6dG9rZW5zXG4gICAgICAgICAgICB8IChTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgOjooQ29sb258Q29sb25zIF98VW5kZXJzY29yZXxVbmRlcnNjb3JlcyBffFdvcmQgXyBhcyB0KVxuICAgICAgICAgICAgICA6OnRva2Vuc1xuICAgICAgICAgICAgICB3aGVuIChtYXRjaCB0YWdzdGF0dXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSBBdHRyaWJ1dGVfdmFsdWUgPSBzdHJ1Y3RcbiAgICAgICAgICAgICAgICAgIHR5cGUgdCA9IEVtcHR5IG9mIG5hbWUgfCBOYW1lZCBvZiBuYW1lIHwgVm9pZFxuICAgICAgICAgICAgICAgICAgYW5kIG5hbWUgPSBzdHJpbmdcbiAgICAgICAgICAgICAgICBlbmQgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3BlbiBBdHRyaWJ1dGVfdmFsdWUgaW5cbiAgICAgICAgICAgICAgICBsZXQgcmVjIGV4dHJhY3RfYXR0cmlidXRlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgfCAoU3BhY2UgfCBTcGFjZXMgXyB8IE5ld2xpbmUpIDo6IHRva2Vucy0+XG4gICAgICAgICAgICAgICAgICAgIEVtcHR5KEwuc3RyaW5nX29mX3Rva2VucyhMaXN0LnJldiBhY2N1KSksIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgfCAoR3JlYXRlcnRoYW58R3JlYXRlcnRoYW5zIF8pIDo6IF8gYXMgdG9rZW5zLT5cbiAgICAgICAgICAgICAgICAgICAgRW1wdHkoTC5zdHJpbmdfb2ZfdG9rZW5zKExpc3QucmV2IGFjY3UpKSwgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IEVxdWFsIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBOYW1lZChMLnN0cmluZ19vZl90b2tlbnMoTGlzdC5yZXYgYWNjdSkpLCB0b2tlbnNcbiAgICAgICAgICAgICAgICAgIHwgQ29sb24gfCBDb2xvbnMgXyB8IFVuZGVyc2NvcmUgfCBVbmRlcnNjb3JlcyBfIHwgV29yZCBfXG4gICAgICAgICAgICAgICAgICB8IE51bWJlciBfIHwgTWludXMgfCBNaW51c3MgXyB8IERvdCB8IERvdHMgXyBhcyB0IDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICBleHRyYWN0X2F0dHJpYnV0ZSAodDo6YWNjdSkgdG9rZW5zXG4gICAgICAgICAgICAgICAgICB8IHRva2VucyAtPiBWb2lkLCB0b2tlbnNcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hdGNoIGV4dHJhY3RfYXR0cmlidXRlIFt0XSB0b2tlbnMgd2l0aFxuICAgICAgICAgICAgICAgIHwgRW1wdHkgYXR0cmlidXRlbmFtZSwgdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAoKiBhdHRyaWJ1dGUgd2l0aCBubyBleHBsaWNpdCB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICAgbG9vcCBib2R5ICgoYXR0cmlidXRlbmFtZSwgTm9uZSk6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgfCBOYW1lZCBhdHRyaWJ1dGVuYW1lLCB0b2tlbnMgLT5cbiAgICAgICAgICAgICAgICAgIGJlZ2luIG1hdGNoIHRva2VucyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgUXVvdGVzIDAgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgZW1wdHkgYXR0cmlidXRlIDEgJVNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLCBTb21lIFwiXCIpOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICB8IFF1b3RlIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIG5vbiBlbXB0eSBhdHRyaWJ1dGUgMSAlU1xcbiUhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIHRva2Vucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmc3BsaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRdW90ZXMgXyA6OiBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFF1b3RlOjp0bCAtPiBTcGxpdChbXSwgdGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBDb250aW51ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjphdHRycykgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgICAgICB8IERvdWJsZXF1b3RlcyAwIDo6IHRva2VucyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVwcmludGYgXCIoT01EKSAoSUhUTUwpIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgYm9keSAoKGF0dHJpYnV0ZW5hbWUsIFNvbWUgXCJcIik6OmF0dHJzKSB0YWdzdGF0dXMgdG9rZW5zXG4gICAgICAgICAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGUgOjogdG9rZW5zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpIChJSFRNTCkgbm9uIGVtcHR5IGF0dHJpYnV0ZSAyICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLnN0cmluZ19vZl90b2tlbnMgdG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGZzcGxpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXhjbDooZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRG91YmxlcXVvdGVzIF8gOjogXyAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5mOihmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEb3VibGVxdW90ZTo6dGwgLT4gU3BsaXQoW10sIHRsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IENvbnRpbnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUoYXRfdmFsLCB0b2tlbnMpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcHJpbnRmIFwiKE9NRCkgKDM5NTcpICVzPSVTICVzXFxuJSFcIiBhdHRyaWJ1dGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zIGF0X3ZhbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMLmRlc3RyaW5nX29mX3Rva2VucyB0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wIGJvZHkgKChhdHRyaWJ1dGVuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lKEwuc3RyaW5nX29mX3Rva2VucyBhdF92YWwpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6YXR0cnMpIHRhZ3N0YXR1cyB0b2tlbnNcbiAgICAgICAgICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICAgICAgIHwgVm9pZCwgXyAtPiBOb25lXG4gICAgICAgICAgICAgIGVuZFxuXG4gICAgICAgICAgICB8IEJhY2tzbGFzaDo6eDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGxvb3AgKFQuVE9LRU5TW0JhY2tzbGFzaDt4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgfCBCYWNrc2xhc2hzKG4pOjp4Ojp0b2tlbnNcbiAgICAgICAgICAgICAgd2hlbiAobWF0Y2ggdGFnc3RhdHVzIHdpdGggVC5PcGVuIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICAgICAmJiBuIG1vZCAyID0gMSAtPlxuICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1tCYWNrc2xhc2hzKG4pO3hdOjpib2R5KSBhdHRycyB0YWdzdGF0dXMgdG9rZW5zXG5cbiAgICAgICAgICAgIHwgeDo6dG9rZW5zXG4gICAgICAgICAgICAgIHdoZW4gKG1hdGNoIHRhZ3N0YXR1cyB3aXRoIFQuT3BlbiBfIDo6IF8gLT4gdHJ1ZSB8IF8gLT4gZmFsc2UpIC0+XG4gICAgICAgICAgICAgIGJlZ2luXG4gICAgICAgICAgICAgICAgaWYgZGVidWcgdGhlblxuICAgICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICg0MTYxKSBnZW5lcmFsICVTXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAoTC5zdHJpbmdfb2ZfdG9rZW5zICh4Ojp0b2tlbnMpKTtcbiAgICAgICAgICAgICAgICBsb29wIChULlRPS0VOU1t4XTo6Ym9keSkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgKE5ld2xpbmUgfCBTcGFjZSB8IFNwYWNlcyBfKSA6OiB0b2tlbnNcbiAgICAgICAgICAgICAgd2hlblxuICAgICAgICAgICAgICAgIChtYXRjaCB0YWdzdGF0dXMgd2l0aCBULkF3YWl0aW5nIF8gOjogXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgLT5cbiAgICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuIGVwcmludGYgXCIoT01EKSAoNDI4OSkgc3BhY2VzXFxuJSFcIjtcbiAgICAgICAgICAgICAgICBsb29wIGJvZHkgYXR0cnMgdGFnc3RhdHVzIHRva2Vuc1xuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICBpZiBkZWJ1ZyB0aGVuXG4gICAgICAgICAgICAgICAgZXByaW50ZiBcIihPTUQpICg0Mjk0KSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNrIHdpdGggdG9rZW5zPSVzIGFuZCB0YWdzdGF0dXM9JXNcXG4lIVwiXG4gICAgICAgICAgICAgICAgICAoTC5kZXN0cmluZ19vZl90b2tlbnMgdG9rZW5zKVxuICAgICAgICAgICAgICAgICAgKFQuc3RyaW5nX29mX3RhZ3N0YXR1cyB0YWdzdGF0dXMpO1xuICAgICAgICAgICAgICAobWF0Y2ggdGFnc3RhdHVzIHdpdGhcbiAgICAgICAgICAgICAgIHwgW10gLT4gU29tZShib2R5LCB0b2tlbnMpXG4gICAgICAgICAgICAgICB8IFQuQXdhaXRpbmcgdGFnIDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgd2FybiAoc3ByaW50ZiBcImV4cGVjdGVkIHRvIHJlYWQgYW4gb3BlbiBIVE1MIHRhZyAoJXMpLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgZm91bmQgbm90aGluZ1wiIHRhZyk7XG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIHwgVC5PcGVuIHRhZyA6OiBfIC0+XG4gICAgICAgICAgICAgICAgIHdhcm4gKHNwcmludGYgXCJleHBlY3RlZCB0byBmaW5kIHRoZSBjbG9zaW5nIEhUTUwgdGFnIGZvciAlcywgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGZvdW5kIG5vdGhpbmdcIiB0YWcpO1xuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgIGluIG1hdGNoIGxvb3AgW10gW10gW10gbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgfCBTb21lKGh0bWwsIHJlc3QpIC0+XG4gICAgICAgICAgICBTb21lKFQubWRfb2ZfaW50ZXJtX2xpc3QgaHRtbCwgcmVzdClcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCByZWFkX2h0bWwoKSB3aXRoXG4gICAgICAgICAgfCBTb21lKGgsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChoQHIpIFtHcmVhdGVydGhhbl0gcmVzdFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0IGluXG4gICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KHRleHQgXiB0YWduYW1ldG9wKTo6cikgW3ddIGh0bWxfc3R1ZmZcbiAgICAgICAgZW5kXG4gICAgKCogLyBlbmQgb2YgaW5saW5lIEhUTUwuICopXG5cbiAgICAoKiA8IDogZW1haWxzICopXG4gICAgfCBfLCAoTGVzc3RoYW4gYXMgdCk6OnRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9hdXRvZW1haWwgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBTb21lKHIscCxsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBsaW5lIGJyZWFrcyAqKVxuICAgIHwgXywgTmV3bGluZTo6dGwgLT5cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgKE5MOjpyKSBbTmV3bGluZV0gdGxcbiAgICB8IF8sIE5ld2xpbmVzIF86OnRsIC0+XG4gICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChOTDo6Tkw6OnIpIFtOZXdsaW5lXSB0bFxuXG4gICAgKCogWyAqKVxuICAgIHwgXywgKE9icmFja2V0IGFzIHQpOjp0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfbGluayBtYWluX2xvb3AgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIG1hdGNoIG1heWJlX3JlZmVyZW5jZSBtYWluX2xvb3AgcmMgciBwcmV2aW91cyB0bCB3aXRoXG4gICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kXG5cbiAgICAoKiBpbWcgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbnxFeGNsYW1hdGlvbnMgXyBhcyB0KVxuICAgICAgICAgOjpPYnJhY2tldDo6Q2JyYWNrZXQ6Ok9wYXJlbnRoZXNpczo6dGwgLT5cbiAgICAgICgqIGltYWdlIGluc2VydGlvbiB3aXRoIG5vIFwiYWx0XCIgKilcbiAgICAgICgqICFbXSgvcGF0aC90by9pbWcuanBnKSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgbGV0IGIsIHRsID0gcmVhZF91bnRpbF9jcGFyZW50aCB+YnE6dHJ1ZSB+bm9fbmw6ZmFsc2UgdGwgaW5cbiAgICAgICAgICAgKCogbmV3IGxpbmVzIHRoZXJlIGFyZSBhbGxvd2VkICopXG4gICAgICAgICAgIGxldCByICgqIHVwZGF0ZWQgcmVzdWx0ICopID0gbWF0Y2ggdCB3aXRoXG4gICAgICAgICAgICAgfCBFeGNsYW1hdGlvbnMgMCAtPiBUZXh0IFwiIVwiIDo6IHJcbiAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyBuIC0+IFRleHQoU3RyaW5nLm1ha2UgKG4rMSkgJyEnKSA6OiByXG4gICAgICAgICAgICAgfCBfIC0+IHIgaW5cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICB0cnkgU29tZShyZWFkX3VudGlsX3NwYWNlIH5icTpmYWxzZSB+bm9fbmw6dHJ1ZSBiKVxuICAgICAgICAgICAgIHdpdGggUHJlbWF0dXJlX2VuZGluZyAtPiBOb25lXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgfCBTb21lKHVybCwgdGxzKSAtPlxuICAgICAgICAgICAgIGxldCB0aXRsZSwgc2hvdWxkX2JlX2VtcHR5X2xpc3QgPVxuICAgICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSAoc25kIChyZWFkX3VudGlsX2RxIH5icTp0cnVlIHRscykpIGluXG4gICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyB1cmwgaW5cbiAgICAgICAgICAgICBsZXQgdGl0bGUgPSBMLnN0cmluZ19vZl90b2tlbnMgdGl0bGUgaW5cbiAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoXCJcIiwgdXJsLCB0aXRsZSkgOjogcikgW0NwYXJlbnRoZXNpc10gdGxcbiAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgbGV0IHVybCA9IEwuc3RyaW5nX29mX3Rva2VucyBiIGluXG4gICAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nKFwiXCIsIHVybCwgXCJcIikgOjogcikgW0NwYXJlbnRoZXNpc10gdGxcbiAgICAgICAgIGVuZFxuICAgICAgIHdpdGhcbiAgICAgICB8IE5MX2V4Y2VwdGlvbiAtPlxuICAgICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgZW5kXG4gICAgICApXG5cbiAgICAoKiBpbWcgcmVmICopXG4gICAgfCBfLCAoRXhjbGFtYXRpb24gYXMgdClcbiAgICAgICAgIDo6T2JyYWNrZXQ6OkNicmFja2V0OjpPYnJhY2tldDo6dGwgLT5cbiAgICAgICgqIHJlZiBpbWFnZSBpbnNlcnRpb24gd2l0aCBubyBcImFsdFwiICopXG4gICAgICAoKiAhW11bcmVmXSAqKVxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IGlkLCB0bCA9IHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgfm5vX25sOnRydWUgdGwgaW5cbiAgICAgICAgIGxldCBmYWxsYmFjayA9IGV4dHJhY3RfZmFsbGJhY2sgbWFpbl9sb29wIHRsIGxleGVtZXMgaW5cbiAgICAgICAgIGxldCBpZCA9IEwuc3RyaW5nX29mX3Rva2VucyBpZCBpblxuICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIFwiXCIsIGZhbGxiYWNrKSA6OiByKSBbQ2JyYWNrZXRdIHRsXG4gICAgICAgd2l0aCBOTF9leGNlcHRpb24gLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG5cbiAgICAoKiBpbWcgKilcbiAgICB8IF8sIChFeGNsYW1hdGlvbnxFeGNsYW1hdGlvbnMgXyBhcyB0KTo6T2JyYWNrZXQ6OnRsIC0+XG4gICAgICAoKiBpbWFnZSBpbnNlcnRpb24gd2l0aCBcImFsdFwiICopXG4gICAgICAoKiAhW0FsdCB0ZXh0XSgvcGF0aC90by9pbWcuanBnIFwiT3B0aW9uYWwgdGl0bGVcIikgKilcbiAgICAgICh0cnlcbiAgICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgdGwgd2l0aFxuICAgICAgICAgfCBhbHQsIE9wYXJlbnRoZXNpczo6bnRsIC0+XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgICAgbGV0IHBhdGhfdGl0bGUsIHJlc3QgPVxuICAgICAgICAgICAgICAgIHJlYWRfdW50aWxfY3BhcmVudGggfmJxOnRydWUgfm5vX25sOmZhbHNlIG50bCBpblxuICAgICAgICAgICAgICBsZXQgcGF0aCwgdGl0bGUgPVxuICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgcmVhZF91bnRpbF9zcGFjZSB+YnE6dHJ1ZSB+bm9fbmw6dHJ1ZSBwYXRoX3RpdGxlXG4gICAgICAgICAgICAgICAgd2l0aCBQcmVtYXR1cmVfZW5kaW5nIC0+IHBhdGhfdGl0bGUsIFtdIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSwgbm90aGluZyA9XG4gICAgICAgICAgICAgICAgaWYgdGl0bGUgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgICAgcmVhZF91bnRpbF9kcSB+YnE6dHJ1ZSAoc25kKHJlYWRfdW50aWxfZHEgfmJxOnRydWUgdGl0bGUpKVxuICAgICAgICAgICAgICAgIGVsc2UgW10sIFtdIGluXG4gICAgICAgICAgICAgIGlmIG5vdGhpbmcgPD4gW10gdGhlblxuICAgICAgICAgICAgICAgIHJhaXNlIE5MX2V4Y2VwdGlvbjsgKCogY2F1Z2h0IHJpZ2h0IGJlbG93ICopXG4gICAgICAgICAgICAgIGxldCByID1cbiAgICAgICAgICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgICAgICAgICB8IEV4Y2xhbWF0aW9ucyAwIC0+IFRleHQgXCIhXCIgOjogclxuICAgICAgICAgICAgICAgIHwgRXhjbGFtYXRpb25zIG4gLT4gVGV4dChTdHJpbmcubWFrZSAobisxKSAnIScpIDo6IHJcbiAgICAgICAgICAgICAgICB8IF8gLT4gciBpblxuICAgICAgICAgICAgICBsZXQgcGF0aCA9IEwuc3RyaW5nX29mX3Rva2VucyBwYXRoIGluXG4gICAgICAgICAgICAgIGxldCB0aXRsZSA9IEwuc3RyaW5nX29mX3Rva2VucyB0aXRsZSBpblxuICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWcoYWx0LCBwYXRoLCB0aXRsZSkgOjogcikgW0NwYXJlbnRoZXNpc10gcmVzdFxuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOTF9leGNlcHRpb25cbiAgICAgICAgICAgICgqIGlmIE5MX2V4Y2VwdGlvbiB3YXMgcmFpc2VkLCB0aGVuIGZhbGwgYmFjayB0byBcInRleHRcIiAqKVxuICAgICAgICAgICAgfCBQcmVtYXR1cmVfZW5kaW5nIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT5cbiAgICAgICAgICAgICAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgIClcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6V29yZChpZCk6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KFNwYWNlfFNwYWNlcyBfKTo6V29yZChpZCk6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6KFNwYWNlfFNwYWNlcyBfKTo6V29yZChpZCk6OihTcGFjZXxTcGFjZXMgXylcbiAgICAgICAgICAgICAgICA6OkNicmFja2V0OjpudGxcbiAgICAgICAgIHwgYWx0LCBPYnJhY2tldDo6V29yZChpZCk6OihTcGFjZXxTcGFjZXMgXyk6OkNicmFja2V0OjpudGwgLT5cbiAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgbnRsIGxleGVtZXMgaW5cbiAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCAoSW1nX3JlZihyYywgaWQsIGFsdCwgZmFsbGJhY2spOjpyKSBbQ2JyYWNrZXRdIG50bFxuICAgICAgICAgfCBhbHQsIE9icmFja2V0OjooKE5ld2xpbmV8U3BhY2V8U3BhY2VzIF98V29yZCBffE51bWJlciBfKTo6X1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMgbnRsKSAtPlxuICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgIG1hdGNoIHJlYWRfdW50aWxfY2JyYWNrZXQgfmJxOnRydWUgfm5vX25sOmZhbHNlIG50bCB3aXRoXG4gICAgICAgICAgICAgIHwgW10sIHJlc3QgLT4gcmFpc2UgUHJlbWF0dXJlX2VuZGluZ1xuICAgICAgICAgICAgICB8IGlkLCByZXN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGZhbGxiYWNrID0gZXh0cmFjdF9mYWxsYmFjayBtYWluX2xvb3AgcmVzdCBsZXhlbWVzIGluXG4gICAgICAgICAgICAgICAgbGV0IGlkID0gTC5zdHJpbmdfb2ZfdG9rZW5zIGlkIGluXG4gICAgICAgICAgICAgICAgbGV0IGFsdCA9IEwuc3RyaW5nX29mX3Rva2VucyBhbHQgaW5cbiAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChJbWdfcmVmKHJjLCBpZCwgYWx0LCBmYWxsYmFjayk6OnIpXG4gICAgICAgICAgICAgICAgICBbQ2JyYWNrZXRdXG4gICAgICAgICAgICAgICAgICByZXN0XG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IFByZW1hdHVyZV9lbmRpbmdcbiAgICAgICAgICAgIHwgTkxfZXhjZXB0aW9uIC0+XG4gICAgICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgKVxuICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICAgICAgIGVuZFxuICAgICAgIHdpdGhcbiAgICAgICB8IFByZW1hdHVyZV9lbmRpbmcgLT5cbiAgICAgICAgIGJlZ2luIG1hdGNoIG1heWJlX2V4dGVuc2lvbiBleHRlbnNpb25zIHIgcHJldmlvdXMgbGV4ZW1lcyB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0KEwuc3RyaW5nX29mX3Rva2VuIHQpOjpyKSBbdF0gdGxcbiAgICAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgciBwIGxcbiAgICAgICAgIGVuZFxuICAgICAgKVxuXG4gICAgfCBfLFxuICAgICAgKEF0fEJhcnxDYXJldHxDYnJhY2V8Q29sb258Q29tbWF8Q3BhcmVudGhlc2lzfENicmFja2V0fERvbGxhclxuICAgICAgfERvdHxEb3VibGVxdW90ZXxFeGNsYW1hdGlvbnxFcXVhbHxNaW51c3xPYnJhY2V8T3BhcmVudGhlc2lzXG4gICAgICB8UGVyY2VudHxQbHVzfFF1ZXN0aW9ufFF1b3RlfFNlbWljb2xvbnxTbGFzaHxUYWJ8VGlsZGVcbiAgICAgIHxHcmVhdGVydGhhbiBhcyB0KTo6dGxcbiAgICAgIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCAoVGV4dChMLnN0cmluZ19vZl90b2tlbiB0KTo6cikgW3RdIHRsXG4gICAgICAgIHwgU29tZShyLCBwLCBsKSAtPiBtYWluX2ltcGxfcmV2IH5odG1sIHIgcCBsXG4gICAgICBlbmRcbiAgICB8IF8sIChOdW1iZXIgXyAgYXMgdCk6OiB0bCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggbWF5YmVfZXh0ZW5zaW9uIGV4dGVuc2lvbnMgciBwcmV2aW91cyBsZXhlbWVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IG1haW5faW1wbF9yZXYgfmh0bWwgKFRleHQoTC5zdHJpbmdfb2ZfdG9rZW4gdCk6OnIpIFt0XSB0bFxuICAgICAgICB8IFNvbWUociwgcCwgbCkgLT4gbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cbiAgICB8IF8sIChBdHMgXyB8IEJhcnMgXyB8IENhcmV0cyBfIHwgQ2JyYWNlcyBfIHwgQ2JyYWNrZXRzIF8gfCBDb2xvbnMgX1xuICAgICAgICAgfCBDb21tYXMgXyB8IENwYXJlbnRoZXNpc3MgXyB8IERvbGxhcnMgXyB8IERvdHMgXyB8IERvdWJsZXF1b3RlcyBfXG4gICAgICAgICB8IEVxdWFscyBfIHwgRXhjbGFtYXRpb25zIF8gfCBHcmVhdGVydGhhbnMgXyB8IExlc3N0aGFucyBfXG4gICAgICAgICB8IE1pbnVzcyBfIHwgT2JyYWNlcyBfIHwgT2JyYWNrZXRzIF8gfCBPcGFyZW50aGVzaXNzIF9cbiAgICAgICAgIHwgUGVyY2VudHMgXyB8IFBsdXNzIF8gfCBRdWVzdGlvbnMgXyB8IFF1b3RlcyBfIHwgU2VtaWNvbG9ucyBfXG4gICAgICAgICB8IFNsYXNocyBfIHwgU3RhcnMgXyB8IFRhYnMgXyB8IFRpbGRlcyBfIHwgVW5kZXJzY29yZXMgXyBhcyB0aylcbiAgICAgICAgIDo6IHRsIC0+XG4gICAgICBiZWdpbiBtYXRjaCBtYXliZV9leHRlbnNpb24gZXh0ZW5zaW9ucyByIHByZXZpb3VzIGxleGVtZXMgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgdGswLCB0a3MgPSBMLnNwbGl0X2ZpcnN0IHRrIGluXG4gICAgICAgICAgbGV0IHRleHQgPSBMLnN0cmluZ19vZl90b2tlbiB0azAgaW5cbiAgICAgICAgICBtYWluX2ltcGxfcmV2IH5odG1sIChUZXh0IHRleHQgOjogcikgW3RrMF0gKHRrcyA6OiB0bClcbiAgICAgICAgfCBTb21lKHIsIHAsIGwpIC0+XG4gICAgICAgICAgbWFpbl9pbXBsX3JldiB+aHRtbCByIHAgbFxuICAgICAgZW5kXG5cblxuICBhbmQgbWFpbl9pbXBsIH5odG1sIChyOnIpIChwcmV2aW91czpwKSAobGV4ZW1lczpsKSA9XG4gICAgKCogaWYgZGVidWcgdGhlbiBlcHJpbnRmIFwiKE9NRCkgbWFpbl9pbXBsIGh0bWw9JWJcXG4lIVwiIGh0bWw7ICopXG4gICAgYXNzZXJ0X3dlbGxfZm9ybWVkIGxleGVtZXM7XG4gICAgTGlzdC5yZXYgKG1haW5fbG9vcF9yZXYgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzKVxuXG4gIGFuZCBtYWluX2xvb3AgPyhodG1sPWZhbHNlKSAocjpyKSAocHJldmlvdXM6cCkgKGxleGVtZXM6bCkgPVxuICAgICAgbWFpbl9pbXBsIH5odG1sIHIgcHJldmlvdXMgbGV4ZW1lc1xuXG4gIGFuZCBtYWluX2xvb3BfcmV2ID8oaHRtbD1mYWxzZSkgKHI6cikgKHByZXZpb3VzOnApIChsZXhlbWVzOmwpID1cbiAgICAgIG1haW5faW1wbF9yZXYgfmh0bWwgciBwcmV2aW91cyBsZXhlbWVzXG5cblxuICBsZXQgbWFpbl9wYXJzZSBsZXhlbWVzID1cbiAgICBtYWluX2xvb3AgW10gW10gKHRhZ19zZXRleHQgbWFpbl9sb29wIGxleGVtZXMpXG5cbiAgbGV0IHBhcnNlIGxleGVtZXMgPVxuICAgIG1haW5fcGFyc2UgbGV4ZW1lc1xuXG5lbmRcblxubGV0IGRlZmF1bHRfcGFyc2UgPyhleHRlbnNpb25zPVtdKSA/KGRlZmF1bHRfbGFuZz1cIlwiKSBsZXhlbWVzID1cbiAgbGV0IGUgPSBleHRlbnNpb25zIGFuZCBkID0gZGVmYXVsdF9sYW5nIGluXG4gIGxldCBtb2R1bGUgRSA9IERlZmF1bHRfZW52KFVuaXQpIGluXG4gIGxldCBtb2R1bGUgTSA9XG4gICAgTWFrZShzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRVxuICAgICAgbGV0IGV4dGVuc2lvbnMgPSBlXG4gICAgICBsZXQgZGVmYXVsdF9sYW5nID0gZFxuICAgIGVuZClcbiAgaW5cbiAgTS5tYWluX3BhcnNlIGxleGVtZXNcblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogb21kOiBNYXJrZG93biBmcm9udGVuZCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogKGMpIDIwMTMgYnkgUGhpbGlwcGUgV2FuZyA8cGhpbGlwcGUud2FuZ0BjbC5jYW0uYWMudWs+ICAgICAgICAgICAgICAqKVxuKCogTGljZW5jZSA6IElTQyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogaHR0cDovL3d3dy5pc2Mub3JnL2Rvd25sb2Fkcy9zb2Z0d2FyZS1zdXBwb3J0LXBvbGljeS9pc2MtbGljZW5zZS8gICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogWW91IHNob3VsZCBlaXRoZXIgdXNlIHRoaXMgbW9kdWxlIG9yIE9tZF9sZXhlciwgbm90IGJvdGguXG4gICAgVGhpcyBtb2R1bGUgaW5jbHVkZXMgT21kX2xleGVyLlxuKilcblxuaW5jbHVkZSBPbWRfbGV4ZXJcblxubGV0IGxleF9mcm9tX2luY2hhbm5lbCBpYyA9XG4gICgqIE1haW50ZW5hbmNlLWVhc2luZXNzLWRyaXZlbiBpbXBsZW1lbnRhdGlvbi4gKilcbiAgbGV0IGljX2NvbnRlbnQgPVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSA2NCBpblxuICAgIHRyeSB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIGIgKGlucHV0X2NoYXIgaWMpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgIHdpdGggRW5kX29mX2ZpbGUgLT4gQnVmZmVyLmNvbnRlbnRzIGIgaW5cbiAgbGV4IGljX2NvbnRlbnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIE9NRDogTWFya2Rvd24gdG9vbCBpbiBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDE0IGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2U6ICBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBodG1sID0gaHRtbF9ub2RlIGxpc3RcblxuYW5kIGh0bWxfbm9kZSA9XG4gIHwgTm9kZSBvZiBub2RlbmFtZSAqIGF0dHJpYnV0ZXMgKiBodG1sXG4gIHwgRGF0YSBvZiBzdHJpbmdcbiAgfCBSYXdkYXRhIG9mIHN0cmluZ1xuICB8IENvbW1lbnQgb2Ygc3RyaW5nXG5cbmFuZCBub2RlbmFtZSA9IHN0cmluZ1xuXG5hbmQgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZSBsaXN0XG5cbmFuZCBhdHRyaWJ1dGUgPSBzdHJpbmcgKiBzdHJpbmcgb3B0aW9uXG5cbmxldCB0b19zdHJpbmcgaHRtbCA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCBwcCBmID0gUHJpbnRmLmJwcmludGYgYiBmIGluXG4gIGxldCByZWMgbG9vcCA9IGZ1bmN0aW9uXG4gICAgfCBOb2RlKG5vZGVuYW1lLCBhdHRyaWJ1dGVzLCBodG1sKSAtPlxuICAgICAgcHAgXCI8JXNcIiBub2RlbmFtZTtcbiAgICAgIHBwYSBhdHRyaWJ1dGVzO1xuICAgICAgcHAgXCI+XCI7XG4gICAgICBMaXN0Lml0ZXIgbG9vcCBodG1sO1xuICAgICAgcHAgXCI8LyVzPlwiIG5vZGVuYW1lXG4gICAgfCBEYXRhIHMgLT4gcHAgXCIlc1wiIHNcbiAgICB8IFJhd2RhdGEgcyAtPiBwcCBcIiVzXCIgc1xuICAgIHwgQ29tbWVudCBjIC0+IHBwIFwiPCEtLSAlcyAtLT5cIiBjXG4gIGFuZCBwcGEgYXR0cnMgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgKGEsIFNvbWUgdikgLT5cbiAgICAgICAgICBpZiBub3QgKFN0cmluZy5jb250YWlucyB2ICdcXCcnKSB0aGVuXG4gICAgICAgICAgICBwcCBcIiAlcz0nJXMnXCIgYSB2XG4gICAgICAgICAgZWxzZSBpZiBub3QgKFN0cmluZy5jb250YWlucyB2ICdcIicpIHRoZW5cbiAgICAgICAgICAgIHBwIFwiICVzPVxcXCIlc1xcXCJcIiBhIHZcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgIHBwIFwiICVzPVxcXCJcIiBhO1xuICAgICAgICAgICAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCB2IC0gMSBkb1xuICAgICAgICAgICAgICAgIG1hdGNoIHYuW2ldIHdpdGhcbiAgICAgICAgICAgICAgICB8ICdcIicgLT4gcHAgXCImcXVvdDtcIlxuICAgICAgICAgICAgICAgIHwgYyAgICAtPiBwcCBcIiVjXCIgY1xuICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICBwcCBcIlxcXCJcIlxuICAgICAgICAgICAgKVxuICAgICAgICB8IGEsIE5vbmUgLT5cbiAgICAgICAgICBQcmludGYuYnByaW50ZiBiIFwiICVzPScnXCIgYSAoKiBIVE1MNSAqKVxuICAgIClcbiAgICBhdHRyc1xuICBpblxuICBMaXN0Lml0ZXIgbG9vcCBodG1sO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG9tZDogTWFya2Rvd24gZnJvbnRlbmQgaW4gT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIChjKSAyMDEzIGJ5IFBoaWxpcHBlIFdhbmcgPHBoaWxpcHBlLndhbmdAY2wuY2FtLmFjLnVrPiAgICAgICAgICAgICAgKilcbigqIExpY2VuY2UgOiBJU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIGh0dHA6Ly93d3cuaXNjLm9yZy9kb3dubG9hZHMvc29mdHdhcmUtc3VwcG9ydC1wb2xpY3kvaXNjLWxpY2Vuc2UvICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuaW5jbHVkZSBPbWRfcmVwcmVzZW50YXRpb25cbmluY2x1ZGUgT21kX2JhY2tlbmRcblxubGV0IG9mX2lucHV0IGxleCA/ZXh0ZW5zaW9uczplID9kZWZhdWx0X2xhbmc6ZCBzID1cbiAgbGV0IG1vZHVsZSBFID0gT21kX3BhcnNlci5EZWZhdWx0X2VudihzdHJ1Y3QgZW5kKSBpblxuICBsZXQgbW9kdWxlIFBhcnNlciA9IE9tZF9wYXJzZXIuTWFrZShcbiAgICBzdHJ1Y3RcbiAgICAgIGluY2x1ZGUgRVxuICAgICAgbGV0IGV4dGVuc2lvbnMgPSBtYXRjaCBlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEUuZXh0ZW5zaW9uc1xuICAgICAgbGV0IGRlZmF1bHRfbGFuZyA9IG1hdGNoIGQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gRS5kZWZhdWx0X2xhbmdcbiAgICBlbmRcbiAgKSBpblxuICBsZXQgbWQgPVxuICAgIFBhcnNlci5wYXJzZSAobGV4IHMpXG4gIGluXG4gIFBhcnNlci5tYWtlX3BhcmFncmFwaHMgbWRcblxubGV0IG9mX3N0cmluZyA9IG9mX2lucHV0IE9tZF9sZXhlci5sZXhcbmxldCBvZl9iaWdhcnJheSA9IG9mX2lucHV0IE9tZF9sZXhlci5sZXhfYmlnYXJyYXlcblxubGV0IHRvX2h0bWwgOlxuICA/b3ZlcnJpZGU6KE9tZF9yZXByZXNlbnRhdGlvbi5lbGVtZW50IC0+IHN0cmluZyBvcHRpb24pIC0+XG4gID9waW5kZW50OmJvb2wgLT5cbiAgP25sMmJyOmJvb2wgLT5cbiAgP2NzOmNvZGVfc3R5bGlzdCAtPlxuICB0IC0+XG4gIHN0cmluZ1xuICA9XG4gIGh0bWxfb2ZfbWRcblxubGV0IHRvX3RleHQgOiB0IC0+IHN0cmluZyA9IHRleHRfb2ZfbWRcblxubGV0IHRvX21hcmtkb3duIDogdCAtPiBzdHJpbmcgPSBtYXJrZG93bl9vZl9tZFxuXG5sZXQgaHRtbF9vZl9zdHJpbmcgKGh0bWw6c3RyaW5nKSA6IHN0cmluZyA9XG4gIGh0bWxfb2ZfbWQgKE9tZF9wYXJzZXIuZGVmYXVsdF9wYXJzZSAoT21kX2xleGVyLmxleCBodG1sKSlcblxuXG5sZXQgcmVjIHNldF9kZWZhdWx0X2xhbmcgbGFuZyA9IGZ1bmN0aW9uXG4gIHwgQ29kZShcIlwiLCBjb2RlKSA6OiB0bCAtPiBDb2RlKGxhbmcsIGNvZGUpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IENvZGVfYmxvY2soXCJcIiwgY29kZSkgOjogdGwgLT4gQ29kZV9ibG9jayhsYW5nLCBjb2RlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gICgqIFJlY3Vyc2Ugb24gYWxsIGVsZW1lbnRzIGV2ZW4gdGhvdWdoIGNvZGUgKGJsb2NrcykgYXJlIG5vdCBhbGxvd2VkXG4gICAgIGV2ZXJ5d2hlcmUuICopXG4gIHwgSDEgdCA6OiB0bCAtPiBIMShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDIgdCA6OiB0bCAtPiBIMihzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDMgdCA6OiB0bCAtPiBIMyhzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDQgdCA6OiB0bCAtPiBINChzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDUgdCA6OiB0bCAtPiBINShzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgSDYgdCA6OiB0bCAtPiBINihzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdCkgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgUGFyYWdyYXBoIHQgOjogdGwgLT4gUGFyYWdyYXBoKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgRW1waCB0IDo6IHRsIC0+IEVtcGgoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IEJvbGQgdCA6OiB0bCAtPiBCb2xkKHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0KSA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBVbCB0IDo6IHRsIC0+IFVsKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IE9sIHQgOjogdGwgLT4gT2woTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgVWxwIHQgOjogdGwgLT4gVWxwKExpc3QubWFwIChzZXRfZGVmYXVsdF9sYW5nIGxhbmcpIHQpXG4gICAgICAgICAgICAgICAgICA6OiBzZXRfZGVmYXVsdF9sYW5nIGxhbmcgdGxcbiAgfCBPbHAgdCA6OiB0bCAtPiBPbHAoTGlzdC5tYXAgKHNldF9kZWZhdWx0X2xhbmcgbGFuZykgdClcbiAgICAgICAgICAgICAgICAgIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFVybChocmVmLCB0LCB0aXRsZSkgOjogdGwgLT4gVXJsKGhyZWYsIHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0LCB0aXRsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gIHwgQmxvY2txdW90ZSB0IDo6IHRsIC0+IEJsb2NrcXVvdGUoc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgOjogc2V0X2RlZmF1bHRfbGFuZyBsYW5nIHRsXG4gICgqIEVsZW1lbnRzIHRoYXQgZG8gbm90IGNvbnRhaW4gTWFya2Rvd24uICopXG4gIHwgKFRleHQgX3xDb2RlIF98Q29kZV9ibG9jayBffEJyfEhyfE5MfFJlZiBffEltZ19yZWYgX3xSYXcgX3xSYXdfYmxvY2sgX1xuICAgIHxIdG1sIF98SHRtbF9ibG9jayBffEh0bWxfY29tbWVudCBffEltZyBffFggXykgYXMgZSA6OiB0bCAtPlxuICAgICBlIDo6IHNldF9kZWZhdWx0X2xhbmcgbGFuZyB0bFxuICB8IFtdIC0+IFtdXG5cblxuKCogVGFibGUgb2YgY29udGVudHNcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogR2l2ZW4gYSBsaXN0IG9mIGhlYWRlcnMg4oCUIGluIHRoZSBvcmRlciBvZiB0aGUgZG9jdW1lbnQg4oCUIGdvIHRvIHRoZVxuICAgcmVxdWVzdGVkIHN1YnNlY3Rpb24uICBXZSBmaXJzdCBzZWVrIGZvciB0aGUgW251bWJlcl10aCBoZWFkZXIgYXRcbiAgIFtsZXZlbF0uICAqKVxubGV0IHJlYyBmaW5kX3N0YXJ0IGhlYWRlcnMgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zID1cbiAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCAoSDEgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciAxIGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEgyIF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgMiBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChIMyBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDMgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCAoSDQgXywgXywgXykgOjogdGwgLT4gZGVhbF93aXRoX2hlYWRlciA0IGhlYWRlcnMgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIHwgKEg1IF8sIF8sIF8pIDo6IHRsIC0+IGRlYWxfd2l0aF9oZWFkZXIgNSBoZWFkZXJzIHRsIGxldmVsIG51bWJlciBzdWJzZWN0aW9uc1xuICB8IChINiBfLCBfLCBfKSA6OiB0bCAtPiBkZWFsX3dpdGhfaGVhZGVyIDYgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnNcbiAgfCBfIDo6IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbmFuZCBkZWFsX3dpdGhfaGVhZGVyIGhfbGV2ZWwgaGVhZGVycyB0bCBsZXZlbCBudW1iZXIgc3Vic2VjdGlvbnMgPVxuICBpZiBoX2xldmVsID4gbGV2ZWwgdGhlbiAoKiBTa2lwLCByaWdodCBbbGV2ZWxdLWhlYWRlciBub3QgeWV0IHJlYWNoZWQuICopXG4gICAgaWYgbnVtYmVyID0gMCB0aGVuXG4gICAgICAoKiBBc3N1bWUgZW1wdHkgc2VjdGlvbiBhdCBbbGV2ZWxdLCBkbyBub3QgY29uc3VtZSB0b2tlbi4gKilcbiAgICAgIChtYXRjaCBzdWJzZWN0aW9ucyB3aXRoXG4gICAgICAgfCBbXSAtPiBoZWFkZXJzICgqIG5vIHN1YnNlY3Rpb24gdG8gZmluZCAqKVxuICAgICAgIHwgbiA6OiBzdWJzZWN0aW9ucyAtPiBmaW5kX3N0YXJ0IGhlYWRlcnMgKGxldmVsICsgMSkgbiBzdWJzZWN0aW9ucylcbiAgICBlbHNlIGZpbmRfc3RhcnQgdGwgbGV2ZWwgbnVtYmVyIHN1YnNlY3Rpb25zXG4gIGVsc2UgaWYgaF9sZXZlbCA9IGxldmVsIHRoZW4gKFxuICAgICgqIEF0IHByb3BlciBbbGV2ZWxdLiAgSGF2ZSB3ZSByZWFjaGVkIHRoZSBbbnVtYmVyXSBvbmU/ICopXG4gICAgaWYgbnVtYmVyIDw9IDEgdGhlbiAoXG4gICAgICBtYXRjaCBzdWJzZWN0aW9ucyB3aXRoXG4gICAgICB8IFtdIC0+IHRsICgqIG5vIHN1YnNlY3Rpb24gdG8gZmluZCAqKVxuICAgICAgfCBuIDo6IHN1YnNlY3Rpb25zIC0+IGZpbmRfc3RhcnQgdGwgKGxldmVsICsgMSkgbiBzdWJzZWN0aW9uc1xuICAgIClcbiAgICBlbHNlIGZpbmRfc3RhcnQgdGwgbGV2ZWwgKG51bWJlciAtIDEpIHN1YnNlY3Rpb25zXG4gIClcbiAgZWxzZSAoKiBoX2xldmVsIDwgbGV2ZWwgKilcbiAgICBbXSAoKiBTb3VnaHQgW2xldmVsXSBoYXMgbm90IGJlZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc2VjdGlvbiAqKVxuXG4oKiBBc3N1bWUgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgaGVhZGVycyB3ZSBhcmUgaW50ZXJlc3RlZCBpbi5cbiAgIFJldHVybiB0aGUgbGlzdCBvZiBUT0MgZW50cmllcyBmb3IgW21pbl9sZXZlbF0gYW5kIHRoZSBbaGVhZGVyc11cbiAgIG5vdCB1c2VkIGZvciB0aGUgVE9DIGVudHJpZXMuICopXG5sZXQgcmVjIG1ha2VfdG9jIChoZWFkZXJzOihlbGVtZW50KnN0cmluZypzdHJpbmcpbGlzdCkgfm1pbl9sZXZlbCB+bWF4X2xldmVsID1cbiAgaWYgbWluX2xldmVsID4gbWF4X2xldmVsIHRoZW4gW10sIGhlYWRlcnNcbiAgZWxzZSAoXG4gICAgbWF0Y2ggaGVhZGVycyB3aXRoXG4gICAgfCBbXSAtPiBbXSwgW11cbiAgICB8IChIMSB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgMSB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEgyIHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyAyIHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDMgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDMgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IChINCB0LCBpZCwgXykgOjogdGwgLT4gdG9jX2VudHJ5IGhlYWRlcnMgNCB0IGlkIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbFxuICAgIHwgKEg1IHQsIGlkLCBfKSA6OiB0bCAtPiB0b2NfZW50cnkgaGVhZGVycyA1IHQgaWQgdGwgfm1pbl9sZXZlbCB+bWF4X2xldmVsXG4gICAgfCAoSDYgdCwgaWQsIF8pIDo6IHRsIC0+IHRvY19lbnRyeSBoZWFkZXJzIDYgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgICB8IF8gOjogXyAtPiBhc3NlcnQgZmFsc2VcbiAgKVxuYW5kIHRvY19lbnRyeSBoZWFkZXJzIGhfbGV2ZWwgdCBpZCB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgPVxuICBpZiBoX2xldmVsID4gbWF4X2xldmVsIHRoZW4gKCogdG9vIGRlZXAsIHNraXAgKilcbiAgICBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWxcbiAgZWxzZSBpZiBoX2xldmVsIDwgbWluX2xldmVsIHRoZW5cbiAgICAoKiBzZWN0aW9uIHdlIHdhbnRlZCB0aGUgVE9DIGZvciBpcyBmaW5pc2hlZCwgZG8gbm90IGNvbXN1bWUgdGhlIHRva2VuICopXG4gICAgW10sIGhlYWRlcnNcbiAgZWxzZSBpZiBoX2xldmVsID0gbWluX2xldmVsIHRoZW4gKFxuICAgIGxldCBzdWJfdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWw6KG1pbl9sZXZlbCArIDEpIH5tYXhfbGV2ZWwgaW5cbiAgICBsZXQgdG9jX2VudHJ5ID0gbWF0Y2ggc3ViX3RvYyB3aXRoXG4gICAgICB8IFtdIC0+IFtVcmwoXCIjXCIgXiBpZCwgdCwgXCJcIik7IE5MXVxuICAgICAgfCBfIC0+IFtVcmwoXCIjXCIgXiBpZCwgdCwgXCJcIik7IE5MOyBVbCBzdWJfdG9jOyBOTF0gaW5cbiAgICBsZXQgdG9jLCB0bCA9IG1ha2VfdG9jIHRsIH5taW5fbGV2ZWwgfm1heF9sZXZlbCBpblxuICAgIHRvY19lbnRyeSA6OiB0b2MsIHRsXG4gICkgZWxzZSAoKiBoX2xldmVsID4gbWluX2xldmVsICopXG4gICAgbGV0IHN1Yl90b2MsIHRsID0gbWFrZV90b2MgaGVhZGVycyB+bWluX2xldmVsOihtaW5fbGV2ZWwgKyAxKSB+bWF4X2xldmVsIGluXG4gICAgbGV0IHRvYywgdGwgPSBtYWtlX3RvYyB0bCB+bWluX2xldmVsIH5tYXhfbGV2ZWwgaW5cbiAgICBbVWwgc3ViX3RvY10gOjogdG9jLCB0bFxuXG5sZXQgdG9jID8oc3RhcnQ9W10pID8oZGVwdGg9MikgbWQgPVxuICBpZiBkZXB0aCA8IDEgdGhlbiBpbnZhbGlkX2FyZyBcIk9tZC50b2M6IH5kZXB0aCBtdXN0IGJlID49IDFcIjtcbiAgbGV0IGhlYWRlcnMgPSBPbWRfYmFja2VuZC5oZWFkZXJzX29mX21kIH5yZW1vdmVfaGVhZGVyX2xpbmtzOnRydWUgbWQgaW5cbiAgbGV0IGhlYWRlcnMgPSBtYXRjaCBzdGFydCB3aXRoXG4gICAgfCBbXSAtPiBoZWFkZXJzXG4gICAgfCBudW1iZXIgOjogc3Vic2VjdGlvbnMgLT5cbiAgICAgICBpZiBudW1iZXIgPCAwIHRoZW4gaW52YWxpZF9hcmcoXCJPbWQudG9jOiBsZXZlbCAxIHN0YXJ0IG11c3QgYmUgPj0gMFwiKTtcbiAgICAgICBmaW5kX3N0YXJ0IGhlYWRlcnMgMSBudW1iZXIgc3Vic2VjdGlvbnMgaW5cbiAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIHN0YXJ0IGluXG4gIGxldCB0b2MsIF8gPSBtYWtlX3RvYyBoZWFkZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICB+bWluX2xldmVsOihsZW4gKyAxKSB+bWF4X2xldmVsOihsZW4gKyBkZXB0aCkgaW5cbiAgbWF0Y2ggdG9jIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8IF8gLT4gW1VsKHRvYyldXG5cbmxldCBhZGRfdG9jID9zdGFydCA/ZGVwdGggP3RpdGxlIG1kID1cbiAgbGV0IHRvYyA9IHRvYyA/c3RhcnQgP2RlcHRoIG1kIGluXG4gICgqIFJlcGxhY2UgXCIqVGFibGUgb2YgY29udGVudHMqXCIgd2l0aCB0aGUgYWN0dWFsIFRPQy4gKilcbiAgdG9jXG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBVdGlsO1xuXG5bQGRlcml2aW5nIChzZXhwLCB5b2pzb24pXVxudHlwZSBrZXkgPSBzdHJpbmc7XG5cbm1vZHVsZSBSZXF1ZXN0ID0ge1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHZhbHVlID0gSGF6M2xjb3JlLkV4cC50O1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KChzdHJpbmcsIHZhbHVlKSk7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHByb2dyYW0gPT4gcHJvZ3JhbSB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgbGV0IGRlc2VyaWFsaXplID0gc2V4cCA9PiBzZXhwIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcblxubW9kdWxlIFJlc3BvbnNlID0ge1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHZhbHVlID1cbiAgICBSZXN1bHQudChcbiAgICAgIChIYXozbGNvcmUuRXZhbHVhdG9yLlJlc3VsdC50LCBIYXozbGNvcmUuRXZhbHVhdG9yU3RhdGUudCksXG4gICAgICBIYXozbGNvcmUuUHJvZ3JhbVJlc3VsdC5lcnJvcixcbiAgICApO1xuICBbQGRlcml2aW5nIChzaG93LCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSBsaXN0KChzdHJpbmcsIHZhbHVlKSk7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHIgPT4gciB8PiBzZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgbGV0IGRlc2VyaWFsaXplID0gc2V4cCA9PiBzZXhwIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcblxubGV0IHdvcmsgPSAocmVzOiBSZXF1ZXN0LnZhbHVlKTogUmVzcG9uc2UudmFsdWUgPT5cbiAgc3dpdGNoIChcbiAgICBIYXozbGNvcmUuRXZhbHVhdG9yLmV2YWx1YXRlKEhhejNsY29yZS5CdWlsdGlucy5lbnZfaW5pdCwge2Q6IHJlc30pXG4gICkge1xuICB8IGV4Y2VwdGlvbiAoSGF6M2xjb3JlLkV2YWx1YXRvckVycm9yLkV4Y2VwdGlvbihyZWFzb24pKSA9PlxuICAgIHByaW50X2VuZGxpbmUoXG4gICAgICBcIkV2YWx1YXRvckVycm9yOlwiICsrIEhhejNsY29yZS5FdmFsdWF0b3JFcnJvci5zaG93KHJlYXNvbiksXG4gICAgKTtcbiAgICBFcnJvcihIYXozbGNvcmUuUHJvZ3JhbVJlc3VsdC5FdmF1bGF0b3JFcnJvcihyZWFzb24pKTtcbiAgfCBleGNlcHRpb24gZXhuID0+XG4gICAgcHJpbnRfZW5kbGluZShcIkVYTjpcIiArKyBQcmludGV4Yy50b19zdHJpbmcoZXhuKSk7XG4gICAgRXJyb3IoXG4gICAgICBIYXozbGNvcmUuUHJvZ3JhbVJlc3VsdC5Vbmtub3duRXhjZXB0aW9uKFByaW50ZXhjLnRvX3N0cmluZyhleG4pKSxcbiAgICApO1xuICB8IChzdGF0ZSwgcmVzdWx0KSA9PiBPaygocmVzdWx0LCBzdGF0ZSkpXG4gIH07XG5cbmxldCBvbl9yZXF1ZXN0ID0gKHJlcTogc3RyaW5nKTogdW5pdCA9PlxuICByZXFcbiAgfD4gUmVxdWVzdC5kZXNlcmlhbGl6ZVxuICB8PiBMaXN0Lm1hcCgoKGssIHYpKSA9PiAoaywgd29yayh2KSkpXG4gIHw+IFJlc3BvbnNlLnNlcmlhbGl6ZVxuICB8PiBKc19vZl9vY2FtbC5Xb3JrZXIucG9zdF9tZXNzYWdlO1xuXG5sZXQgc3RhcnQgPSAoKSA9PiBKc19vZl9vY2FtbC5Xb3JrZXIuc2V0X29ubWVzc2FnZShvbl9yZXF1ZXN0KTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIFdvcmtlclNlcnZlcjtcblxubGV0IG5hbWUgPSBcIndvcmtlci5qc1wiOyAvLyBXb3JrZXIgZmlsZSBuYW1lXG5sZXQgdGltZW91dER1cmF0aW9uID0gMjAwMDA7IC8vIFdvcmtlciB0aW1lb3V0IGluIG1zXG5cbmxldCBpbml0V29ya2VyID0gKCkgPT4gV29ya2VyLmNyZWF0ZShuYW1lKTtcblxubGV0IHdvcmtlclJlZjogcmVmKEpzLnQoV29ya2VyLndvcmtlcihzdHJpbmcsIHN0cmluZykpKSA9XG4gIHJlZihpbml0V29ya2VyKCkpO1xuXG5sZXQgdGltZW91dElkID0gcmVmKE5vbmUpO1xuXG5sZXQgcmVzdGFydF93b3JrZXIgPSAoKTogdW5pdCA9PiB7XG4gIHdvcmtlclJlZi5jb250ZW50cyMjdGVybWluYXRlO1xuICB3b3JrZXJSZWYuY29udGVudHMgPSBpbml0V29ya2VyKCk7XG59O1xuXG5sZXQgcmVxdWVzdCA9XG4gICAgKFxuICAgICAgcmVxOiBSZXF1ZXN0LnQsXG4gICAgICB+aGFuZGxlcjogUmVzcG9uc2UudCA9PiB1bml0LFxuICAgICAgfnRpbWVvdXQ6IFJlcXVlc3QudCA9PiB1bml0LFxuICAgIClcbiAgICA6IHVuaXQgPT4ge1xuICBsZXQgc2V0dXBXb3JrZXJNZXNzYWdlSGFuZGxlciA9IHdvcmtlciA9PiB7XG4gICAgd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICBEb20uaGFuZGxlcihldnQgPT4ge1xuICAgICAgICBzd2l0Y2ggKHRpbWVvdXRJZC5jb250ZW50cykge1xuICAgICAgICB8IFNvbWUoaWQpID0+IERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0KGlkKVxuICAgICAgICB8IE5vbmUgPT4gKClcbiAgICAgICAgfTtcbiAgICAgICAgdGltZW91dElkLmNvbnRlbnRzID0gTm9uZTsgLyogQ2xlYXIgdGltZW91dCBhZnRlciByZXNwb25zZSAqL1xuICAgICAgICBldnQjIy5kYXRhIHw+IFJlc3BvbnNlLmRlc2VyaWFsaXplIHw+IGhhbmRsZXI7XG4gICAgICAgIEpzLl90cnVlO1xuICAgICAgfSk7XG4gIH07XG5cbiAgLyogSWYgdGhlcmUncyBhbiBvbmdvaW5nIHJlcXVlc3QsIHRlcm1pbmF0ZSB0aGUgd29ya2VyIGFuZCByZWluaXRpYWxpemUgKi9cbiAgc3dpdGNoICh0aW1lb3V0SWQuY29udGVudHMpIHtcbiAgfCBTb21lKGlkKSA9PlxuICAgIERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0KGlkKTtcbiAgICByZXN0YXJ0X3dvcmtlcigpO1xuICB8IE5vbmUgPT4gKClcbiAgfTtcblxuICBzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyKHdvcmtlclJlZi5jb250ZW50cyk7XG5cbiAgLy8gcHJpbnRfZW5kbGluZShSZXF1ZXN0LnNlcmlhbGl6ZShyZXEpKTtcblxuICB3b3JrZXJSZWYuY29udGVudHMjI3Bvc3RNZXNzYWdlKFJlcXVlc3Quc2VyaWFsaXplKHJlcSkpO1xuXG4gIGxldCBvblRpbWVvdXQgPSAoKTogdW5pdCA9PiB7XG4gICAgcmVzdGFydF93b3JrZXIoKTtcbiAgICBzZXR1cFdvcmtlck1lc3NhZ2VIYW5kbGVyKHdvcmtlclJlZi5jb250ZW50cyk7XG4gICAgdGltZW91dChyZXEpO1xuICB9O1xuXG4gIHRpbWVvdXRJZC5jb250ZW50cyA9XG4gICAgU29tZShcbiAgICAgIERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dChcbiAgICAgICAgSnMud3JhcF9jYWxsYmFjayhvblRpbWVvdXQpLFxuICAgICAgICBmbG9hdF9vZl9pbnQodGltZW91dER1cmF0aW9uKSxcbiAgICAgICksXG4gICAgKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xuXG5sZXQgYnV0dG9uID0gKH50b29sdGlwPVwiXCIsIGljb24sIGFjdGlvbikgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJpY29uXCJdKSxcbiAgICAgICAgQXR0ci5vbl9tb3VzZWRvd24oYWN0aW9uKSxcbiAgICAgICAgQXR0ci50aXRsZSh0b29sdGlwKSxcbiAgICAgIF0pLFxuICAgIFtpY29uXSxcbiAgKTtcblxubGV0IGJ1dHRvbl9uYW1lZCA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3Rpb24pID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1wibmFtZWQtbWVudS1pdGVtXCJdKSwgQXR0ci5vbl9jbGljayhhY3Rpb24pXSksXG4gICAgW2J1dHRvbihpY29uLCBfID0+IEVmZmVjdC5JZ25vcmUpLCBkaXYoW3RleHQodG9vbHRpcCldKV0sXG4gICk7XG5cbmxldCBidXR0b25fZCA9ICh+dG9vbHRpcD1cIlwiLCBpY29uLCBhY3Rpb24sIH5kaXNhYmxlZDogYm9vbCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJpY29uXCJdIEAgKGRpc2FibGVkID8gW1wiZGlzYWJsZWRcIl0gOiBbXSkpLFxuICAgICAgICBBdHRyLnRpdGxlKHRvb2x0aXApLFxuICAgICAgICBBdHRyLm9uX21vdXNlZG93bihfID0+IHVubGVzcyhkaXNhYmxlZCwgYWN0aW9uKSksXG4gICAgICBdKSxcbiAgICBbaWNvbl0sXG4gICk7XG5cbmxldCBsaW5rID0gKH50b29sdGlwPVwiXCIsIGljb24sIHVybCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiaWNvblwiXSksXG4gICAgW1xuICAgICAgYShcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFxuICAgICAgICAgICAgQXR0ci5baHJlZih1cmwpLCB0aXRsZSh0b29sdGlwKSwgY3JlYXRlKFwidGFyZ2V0XCIsIFwiX2JsYW5rXCIpXSxcbiAgICAgICAgICApLFxuICAgICAgICBbaWNvbl0sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG5cbmxldCB0b2dnbGUgPSAofnRvb2x0aXA9XCJcIiwgbGFiZWwsIGFjdGl2ZSwgYWN0aW9uKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbHNzKFtcInRvZ2dsZS1zd2l0Y2hcIl0gQCAoYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgQXR0ci5vbl9jbGljayhhY3Rpb24pLFxuICAgICAgICBBdHRyLnRpdGxlKHRvb2x0aXApLFxuICAgICAgXSksXG4gICAgW2Rpdih+YXR0cj1jbHNzKFtcInRvZ2dsZS1rbm9iXCJdKSwgW3RleHQobGFiZWwpXSldLFxuICApO1xuXG5sZXQgdG9nZ2xlX25hbWVkID0gKH50b29sdGlwPVwiXCIsIGljb24sIGFjdGl2ZSwgYWN0aW9uKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBjbHNzKFtcIm5hbWVkLW1lbnUtaXRlbVwiXSBAIChhY3RpdmUgPyBbXCJhY3RpdmVcIl0gOiBbXSkpLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKGFjdGlvbiksXG4gICAgICBdKSxcbiAgICBbdG9nZ2xlKGljb24sIGFjdGl2ZSwgXyA9PiBFZmZlY3QuSWdub3JlKSwgZGl2KFt0ZXh0KHRvb2x0aXApXSldLFxuICApO1xuXG5sZXQgZmlsZV9zZWxlY3RfYnV0dG9uID0gKH50b29sdGlwPVwiXCIsIGlkLCBpY29uLCBvbl9pbnB1dCkgPT4ge1xuICAvKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81NzI3Njgvc3R5bGluZy1hbi1pbnB1dC10eXBlLWZpbGUtYnV0dG9uICovXG4gIGxhYmVsKFxuICAgIH5hdHRyPUF0dHIuZm9yXyhpZCksXG4gICAgW1xuICAgICAgVmRvbV9pbnB1dF93aWRnZXRzLkZpbGVfc2VsZWN0LnNpbmdsZShcbiAgICAgICAgfmV4dHJhX2F0dHJzPVtBdHRyLmNsYXNzXyhcImZpbGUtc2VsZWN0LWJ1dHRvblwiKSwgQXR0ci5pZChpZCldLFxuICAgICAgICB+YWNjZXB0PVtgRXh0ZW5zaW9uKFwianNvblwiKV0sXG4gICAgICAgIH5vbl9pbnB1dCxcbiAgICAgICAgKCksXG4gICAgICApLFxuICAgICAgZGl2KH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJpY29uXCJdKSwgQXR0ci50aXRsZSh0b29sdGlwKV0pLCBbaWNvbl0pLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgZmlsZV9zZWxlY3RfYnV0dG9uX25hbWVkID0gKH50b29sdGlwPVwiXCIsIGlkLCBpY29uLCBvbl9pbnB1dCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbY2xzcyhbXCJuYW1lZC1tZW51LWl0ZW1cIl0pXSksXG4gICAgW2ZpbGVfc2VsZWN0X2J1dHRvbihpZCwgaWNvbiwgb25faW5wdXQpLCBkaXYoW3RleHQodG9vbHRpcCldKV0sXG4gICk7XG4iLCIvLyBjb3BpZWQgZnJvbSBoYXplbFxuXG5tb2R1bGUgSnMgPSBKc19vZl9vY2FtbC5KcztcblxubW9kdWxlIEpTX01BUCA9IHtcbiAgY2xhc3MgdHlwZSB0ICgnaywgJ3YpID0ge1xuICAgIHB1YiBnZXQ6ICdrID0+IEpzLm1ldGgoSnMub3B0ZGVmKCd2KSk7XG4gICAgcHViIGhhczogJ2sgPT4gSnMubWV0aChib29sKTtcbiAgICBwdWIgc2V0OiAoJ2ssICd2KSA9PiBKcy5tZXRoKHQoJ2ssICd2KSk7XG4gIH07XG59O1xuXG5tb2R1bGUgSnNNYXAgPSB7XG4gIHR5cGUgdCgnaywgJ3YpID0gSnMudChKU19NQVAudCgnaywgJ3YpKTtcblxuICBsZXQgbWs6ICdrICd2LiB1bml0ID0+IHQoJ2ssICd2KSA9XG4gICAgKCkgPT4ge1xuICAgICAgbGV0IGMgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX01hcDtcbiAgICAgIFslanMgbmV3IGNdO1xuICAgIH07XG59O1xuXG5tb2R1bGUgSnNXZWFrTWFwID0ge1xuICB0eXBlIHQoJ2ssICd2KSA9IEpzLnQoSlNfTUFQLnQoJ2ssICd2KSk7XG5cbiAgbGV0IG1rOiAnayAndi4gdW5pdCA9PiB0KCdrLCAndikgPVxuICAgICgpID0+IHtcbiAgICAgIGxldCBjID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9XZWFrTWFwO1xuICAgICAgWyVqcyBuZXcgY107XG4gICAgfTtcbn07XG5cbmxldCBpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW1wbDogSnMuVW5zYWZlLnRvcCA9PiBKcy50KGJvb2wpID1cbiAgLy8gQmFzZWQgb24gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvODUxMTI4MS9jaGVjay1pZi1hLXZhbHVlLWlzLWFuLW9iamVjdC1pbi1qYXZhc2NyaXB0XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIoXG4gICAgXCJcbiAgZnVuY3Rpb24gKHZhbCkge1xuICAgIHJldHVybiAodmFsID09PSBudWxsKSB8fCAodHlwZW9mIHZhbCAhPT0gJ2Z1bmN0aW9uJykgJiYgKHR5cGVvZiB2YWwgIT09ICdvYmplY3QnKTtcbiAgfVwiLFxuICApO1xuXG5sZXQgaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uOiAnYS4gJ2EgPT4gYm9vbCA9XG4gIHggPT4gSnMudG9fYm9vbChpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb25faW1wbChPYmoubWFnaWMoeCkpKTtcblxudHlwZSB0KCdrLCAndikgPSB7XG4gIHByaW1pdGl2ZV9rZXlzOiBKc01hcC50KCdrLCAndiksXG4gIG5vbl9wcmltaXRpdmVfa2V5czogSnNXZWFrTWFwLnQoJ2ssICd2KSxcbn07XG5cbmxldCBtayA9ICgpOiB0KCdrLCAndikgPT4ge1xuICB7cHJpbWl0aXZlX2tleXM6IEpzTWFwLm1rKCksIG5vbl9wcmltaXRpdmVfa2V5czogSnNXZWFrTWFwLm1rKCl9O1xufTtcblxubGV0IGdldCA9ICh0OiB0KCdrLCAndiksIGs6ICdrKTogb3B0aW9uKCd2KSA9PiB7XG4gIGxldCBtYXAgPVxuICAgIGlmIChpc19wcmltaXRpdmVfcmVwcmVzZW50YXRpb24oaykpIHtcbiAgICAgIHQucHJpbWl0aXZlX2tleXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHQubm9uX3ByaW1pdGl2ZV9rZXlzO1xuICAgIH07XG4gIEpzLk9wdGRlZi50b19vcHRpb24obWFwIyNnZXQoaykpO1xufTtcblxubGV0IHNldCA9ICh0OiB0KCdrLCAndiksIGs6ICdrLCB2OiAndik6IHVuaXQgPT4ge1xuICBsZXQgbWFwID1cbiAgICBpZiAoaXNfcHJpbWl0aXZlX3JlcHJlc2VudGF0aW9uKGspKSB7XG4gICAgICB0LnByaW1pdGl2ZV9rZXlzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0Lm5vbl9wcmltaXRpdmVfa2V5cztcbiAgICB9O1xuICBpZ25vcmUobWFwIyNzZXQoaywgdikpO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgbWtfc2Vjb25kYXJ5OiBzdHJpbmcgPT4gUGllY2UudCA9XG4gIGNvbnRlbnQgPT4gU2Vjb25kYXJ5KHtpZDogSWQubWsoKSwgY29udGVudDogV2hpdGVzcGFjZShjb250ZW50KX0pO1xuXG5sZXQgbWtfdGlsZTogKEZvcm0udCwgbGlzdChsaXN0KFBpZWNlLnQpKSkgPT4gUGllY2UudCA9XG4gIC8vVE9ETzogYXNzZXJ0c1xuICAoZm9ybSwgY2hpbGRyZW4pID0+XG4gICAgVGlsZSh7XG4gICAgICBpZDogSWQubWsoKSxcbiAgICAgIGxhYmVsOiBmb3JtLmxhYmVsLFxuICAgICAgbW9sZDogZm9ybS5tb2xkLFxuICAgICAgc2hhcmRzOiBMaXN0Lm1hcGkoKGksIF8pID0+IGksIGZvcm0ubGFiZWwpLFxuICAgICAgY2hpbGRyZW4sXG4gICAgfSk7XG5cbmxldCBta19hbmNlc3RvcjogKEZvcm0udCwgKGxpc3QoU2VnbWVudC50KSwgbGlzdChTZWdtZW50LnQpKSkgPT4gQW5jZXN0b3IudCA9XG4gIC8vVE9ETzogYXNzZXJ0c1xuICAoZm9ybSwgKGwsIF8pIGFzIGNoaWxkcmVuKSA9PiB7XG4gICAgaWQ6IElkLm1rKCksXG4gICAgbGFiZWw6IGZvcm0ubGFiZWwsXG4gICAgbW9sZDogZm9ybS5tb2xkLFxuICAgIHNoYXJkczpcbiAgICAgIExpc3QubWFwaSgoaSwgXykgPT4gaSwgZm9ybS5sYWJlbClcbiAgICAgIHw+IFV0aWwuTGlzdFV0aWwuc3BsaXRfbihMaXN0Lmxlbmd0aChsKSArIDEpLFxuICAgIGNoaWxkcmVuLFxuICB9O1xuXG5sZXQgbWtfbW9ub3RpbGUgPSBmb3JtID0+IG1rX3RpbGUoZm9ybSwgW10pOyAvL1RPRE86IGFzc2VydHNcbmxldCBpbnQgPSBuID0+IG1rX21vbm90aWxlKEZvcm0ubWtfYXRvbWljKEV4cCwgbikpO1xubGV0IGV4cCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5ta19hdG9taWMoRXhwLCB2KSk7XG5sZXQgcGF0ID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rX2F0b21pYyhQYXQsIHYpKTtcbmxldCBta19wYXJlbnNfZXhwID0gbWtfdGlsZShGb3JtLmdldChcInBhcmVuc19leHBcIikpO1xubGV0IG1rX2Z1biA9IG1rX3RpbGUoRm9ybS5nZXQoXCJmdW5fXCIpKTtcbmxldCBta19mdW5fYW5jZXN0b3IgPSBta19hbmNlc3RvcihGb3JtLmdldChcImZ1bl9cIikpO1xubGV0IG1rX3BhcmVuc19hbmNlc3RvciA9IG1rX2FuY2VzdG9yKEZvcm0uZ2V0KFwicGFyZW5zX2V4cFwiKSk7XG5sZXQgbWtfbGV0X2FuY2VzdG9yID0gbWtfYW5jZXN0b3IoRm9ybS5nZXQoXCJsZXRfXCIpKTtcbmxldCBwbHVzID0gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJwbHVzXCIpKTtcblxubGV0IGxfc2libGluZzogU2VnbWVudC50ID0gW3BsdXMsIEdyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXTtcbmxldCByX3NpYmxpbmc6IFNlZ21lbnQudCA9IFtta19wYXJlbnNfZXhwKFtbaW50KFwiMVwiKSwgcGx1cywgaW50KFwiMlwiKV1dKV07XG5cbmxldCBjb250ZW50OiBTZWdtZW50LnQgPSBbZXhwKFwiZm9vXCIpLCBHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb25jYXZlfSldO1xuXG5sZXQgYW5jZXN0b3JzOiBBbmNlc3RvcnMudCA9IFtcbiAgKG1rX3BhcmVuc19hbmNlc3RvcigoW10sIFtdKSksIChbbWtfZnVuKFtbcGF0KFwiYmFyXCIpXV0pXSwgW10pKSxcbiAgKG1rX3BhcmVuc19hbmNlc3RvcigoW10sIFtdKSksIChbbWtfZnVuKFtbcGF0KFwidGF6XCIpXV0pXSwgW10pKSxcbiAgKG1rX2xldF9hbmNlc3RvcigoW1twYXQoXCJmb29cIildXSwgW10pKSwgKFtdLCBbaW50KFwiMlwiKV0pKSxcbl07XG5cbmxldCBiYWNrcGFjazogQmFja3BhY2sudCA9IFtTZWxlY3Rpb24ubWsoW2V4cChcImZvb1wiKV0pXTtcblxubGV0IHppcHBlcjogWmlwcGVyLnQgPSB7XG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uLm1rKGNvbnRlbnQpLFxuICBiYWNrcGFjayxcbiAgcmVsYXRpdmVzOiB7XG4gICAgc2libGluZ3M6IChsX3NpYmxpbmcsIHJfc2libGluZyksXG4gICAgYW5jZXN0b3JzLFxuICB9LFxuICBjYXJldDogT3V0ZXIsXG59O1xuXG4vLyBUT0RPIE1ha2Ugc3VyZSB1c2luZyB0aGlzIGZvciBhbGwgdGhlIGZvcm1zIHRoYXQgc2hvdWxkLCBsaWtlIHdpbGQgYW5kIG5pbFxuLy8gVE9ETyBTaG91bGQgdGhpcyBoYXZlIGl0cyBvd24gSUQgZ2VuZXJhdG9yIG9yIGlzIHVzaW5nIHRoZSBFeGFtcGxlIG9uZSBmaW5lP1xubGV0IGNvbnNfZXhwID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb25zX2V4cFwiKSk7XG5sZXQgbGlzdF9jb25jYXRfZXhwID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsaXN0X2NvbmNhdFwiKSk7XG5sZXQgY29uc19wYXQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNvbnNfcGF0XCIpKTtcbmxldCBzZXEgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNlbGwtam9pblwiKSk7XG5sZXQgZXhwID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt2XSwgTW9sZC4obWtfb3AoRXhwLCBbXSkpKSk7XG5sZXQgcGF0ID0gdiA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt2XSwgTW9sZC4obWtfb3AoUGF0LCBbXSkpKSk7XG5sZXQgdHlwID0gdCA9PiBta19tb25vdGlsZShGb3JtLm1rKEZvcm0uc3MsIFt0XSwgTW9sZC4obWtfb3AoVHlwLCBbXSkpKSk7XG5sZXQgdHBhdCA9IHYgPT4gbWtfbW9ub3RpbGUoRm9ybS5tayhGb3JtLnNzLCBbdl0sIE1vbGQuKG1rX29wKFRQYXQsIFtdKSkpKTtcbmxldCB0eXBfcGF0X3ZhciA9IHQgPT4gbWtfbW9ub3RpbGUoRm9ybS5ta19hdG9taWMoVFBhdCwgdCkpO1xubGV0IG1rX3BhcmVuc19leHAgPSBta190aWxlKEZvcm0uZ2V0KFwicGFyZW5zX2V4cFwiKSk7XG5sZXQgbWtfcGFyZW5zX3BhdCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJwYXJlbnNfcGF0XCIpKTtcbmxldCBta19wYXJlbnNfdHlwID0gbWtfdGlsZShGb3JtLmdldChcInBhcmVuc190eXBcIikpO1xubGV0IG1rX2xpc3RfZXhwID0gbWtfdGlsZShGb3JtLmdldChcImxpc3RfbGl0X2V4cFwiKSk7XG5sZXQgbWtfbGlzdF9wYXQgPSBta190aWxlKEZvcm0uZ2V0KFwibGlzdF9saXRfcGF0XCIpKTtcbmxldCBta19saXN0X3R5cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJsaXN0X3R5cFwiKSk7XG5sZXQgbWtfZm9yYWxsID0gbWtfdGlsZShGb3JtLmdldChcImZvcmFsbFwiKSk7XG5sZXQgbWtfcmVjID0gbWtfdGlsZShGb3JtLmdldChcInJlY1wiKSk7XG5sZXQgYXJyb3cgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInR5cGUtYXJyb3dcIikpO1xubGV0IHVuYXJ5X21pbnVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ1bmFyeV9taW51c1wiKSk7XG5sZXQgdW5hcnlfbm90ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJub3RcIikpO1xubGV0IHBsdXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInBsdXNcIikpO1xubGV0IG1pbnVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJtaW51c1wiKSk7XG5sZXQgdGltZXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcInRpbWVzXCIpKTtcbmxldCBwb3dlciA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwicG93ZXJcIikpO1xubGV0IGRpdmlkZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZGl2aWRlXCIpKTtcbmxldCBlcXVhbHMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImVxdWFsc1wiKSk7XG5sZXQgbm90X2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwibm90X2VxdWFsc1wiKSk7XG5sZXQgbHQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImx0XCIpKTtcbmxldCBsdGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImx0ZVwiKSk7XG5sZXQgZ3QgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImd0XCIpKTtcbmxldCBndGUgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImd0ZVwiKSk7XG5sZXQgZnBsdXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZwbHVzXCIpKTtcbmxldCBmbWludXMgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZtaW51c1wiKSk7XG5sZXQgZnRpbWVzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmdGltZXNcIikpO1xubGV0IGZwb3dlciA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZnBvd2VyXCIpKTtcbmxldCBmZGl2aWRlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmZGl2aWRlXCIpKTtcbmxldCBmZXF1YWxzID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmZXF1YWxzXCIpKTtcbmxldCBmbm90X2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZm5vdF9lcXVhbHNcIikpO1xubGV0IGZsdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmx0XCIpKTtcbmxldCBmbHRlID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJmbHRlXCIpKTtcbmxldCBmZ3QgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImZndFwiKSk7XG5sZXQgZmd0ZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiZmd0ZVwiKSk7XG5sZXQgc2VxdWFscyA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwic3RyaW5nX2VxdWFsc1wiKSk7XG5sZXQgc2NvbmNhdCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwic3RyaW5nX2NvbmNhdFwiKSk7XG5sZXQgbG9naWNhbF9hbmQgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImxvZ2ljYWxfYW5kXCIpKTtcbmxldCBsb2dpY2FsX29yID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJsb2dpY2FsX29yXCIpKTtcbmxldCBjb21tYV9leHAgPSAoKSA9PiBta19tb25vdGlsZShGb3JtLmdldChcImNvbW1hX2V4cFwiKSk7XG5sZXQgY29tbWFfcGF0ID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJjb21tYV9wYXRcIikpO1xubGV0IGNvbW1hX3R5cCA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwiY29tbWFfdHlwXCIpKTtcbmxldCBwaXBlbGluZSA9ICgpID0+IG1rX21vbm90aWxlKEZvcm0uZ2V0KFwicGlwZWxpbmVcIikpO1xubGV0IG5pbCA9ICgpID0+IGV4cChcIltdXCIpO1xubGV0IGRlZmVycmFsID0gKCkgPT4gZXhwKFwiX1wiKTtcbmxldCB0eXBlYW5uID0gKCkgPT4gbWtfbW9ub3RpbGUoRm9ybS5nZXQoXCJ0eXBlYW5uXCIpKTtcbmxldCBta190eXBmdW4gPSBta190aWxlKEZvcm0uZ2V0KFwidHlwZnVuXCIpKTtcbmxldCBta19mdW4gPSBta190aWxlKEZvcm0uZ2V0KFwiZnVuX1wiKSk7XG5sZXQgbWtfYXBfZXhwX3R5cCA9IG1rX3RpbGUoRm9ybS5nZXQoXCJhcF9leHBfdHlwXCIpKTtcbmxldCBta19maXggPSBta190aWxlKEZvcm0uZ2V0KFwiZml4XCIpKTtcbmxldCBta19hcF9leHAgPSBta190aWxlKEZvcm0uZ2V0KFwiYXBfZXhwXCIpKTtcbmxldCBta19hcF9wYXQgPSBta190aWxlKEZvcm0uZ2V0KFwiYXBfcGF0XCIpKTtcbmxldCBta19sZXQgPSBta190aWxlKEZvcm0uZ2V0KFwibGV0X1wiKSk7XG5sZXQgbWtfdHlhbGlhcyA9IG1rX3RpbGUoRm9ybS5nZXQoXCJ0eXBlX2FsaWFzXCIpKTtcbmxldCBta19pZiA9IG1rX3RpbGUoRm9ybS5nZXQoXCJpZl9cIikpO1xubGV0IG1rX3Rlc3QgPSBta190aWxlKEZvcm0uZ2V0KFwidGVzdFwiKSk7XG5sZXQgbWtfY2FzZSA9IG1rX3RpbGUoRm9ybS5nZXQoXCJjYXNlXCIpKTtcbmxldCBta19ydWxlID0gbWtfdGlsZShGb3JtLmdldChcInJ1bGVcIikpO1xubGV0IG1rX2hpZGUgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2hpZGVcIikpO1xubGV0IG1rX2V2YWwgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2V2YWxcIikpO1xubGV0IG1rX3BhdXNlID0gbWtfdGlsZShGb3JtLmdldChcImZpbHRlcl9wYXVzZVwiKSk7XG5sZXQgbWtfZGVidWcgPSBta190aWxlKEZvcm0uZ2V0KFwiZmlsdGVyX2RlYnVnXCIpKTtcbmxldCBta191bnF1b3RlID0gbWtfdGlsZShGb3JtLmdldChcInVucXVvdGVcIikpO1xubGV0IGxpbmVicmVhayA9ICgpID0+IG1rX3NlY29uZGFyeShGb3JtLmxpbmVicmVhayk7XG5sZXQgc3BhY2UgPSAoKSA9PiBta19zZWNvbmRhcnkoRm9ybS5zcGFjZSk7XG5cbmxldCBta19leGFtcGxlID0gc3RyID0+IHtcbiAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcoc3RyKSkge1xuICB8IE5vbmUgPT4gW11cbiAgfCBTb21lKHopID0+IFppcHBlci56aXAoeilcbiAgfTtcbn07XG5cbi8qIEludCBwYXJhbSBiZWxvdyBzaG91bGQgYmUgfiB3aWR0aCBvZiBzaWRlYmFyICovXG5sZXQgYWJicmV2aWF0ZSA9IFV0aWwuU3RyaW5nVXRpbC5hYmJyZXZpYXRlKDIwKTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxuLy8gVE9ETyBNYWtlIHVuaWZpZWQgd2F5IG9mIHVzaW5nIGNvbnNpc3RlbnQgbWV0YXZhcmlhYmxlcyBmb3Igc3ludGFjdGljIGZvcm1zXG4vLyBUT0RPIFVzZSAvdGF1IGluc3RlYWQgb2YgdHkgd2hlbiBjYW4gZG8gdGhhdCBhbmQgc3RpbGwgaGF2ZSBoaWdobGlnaHRpbmcgd29ya1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGxpc3RfZXhhbXBsZXMgPVxuICB8IEludFxuICB8IFR1cGxlXG4gIHwgQ29uczFcbiAgfCBDb25zMjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0eXBmdW5fZXhhbXBsZXMgPVxuICB8IEJhc2ljXG4gIHwgRW1wdHlIb2xlXG4gIHwgTXVsdGlIb2xlIC8qIFRPRE86IE1heWJlIG5vIGdvb2QgZXhhbXBsZXMgd2l0aCBNdWx0aWhvbGU/ICovXG4gIHwgVmFyO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGZ1bl9leGFtcGxlcyA9XG4gIHwgQmFzaWNcbiAgfCBXaWxkXG4gIHwgSW50TGl0XG4gIHwgRmxvYXRMaXRcbiAgfCBCb29sTGl0XG4gIHwgU3RyTGl0XG4gIHwgVHJpdlxuICB8IExpc3ROaWxcbiAgfCBMaXN0TGl0XG4gIHwgQ29uc0hkXG4gIHwgQ29uc1NuZFxuICB8IFZhckluY3JcbiAgfCBWYXJBbmRcbiAgfCBUdXBsZTJcbiAgfCBUdXBsZTNcbiAgfCBDdHJcbiAgfCBBcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBsZXRfZXhhbXBsZXMgPVxuICB8IEJhc2ljXG4gIHwgV2lsZFxuICB8IEludExpdFxuICB8IEZsb2F0TGl0XG4gIHwgQm9vbExpdFxuICB8IFN0ckxpdFxuICB8IFRyaXZcbiAgfCBMaXN0TmlsXG4gIHwgTGlzdExpdFxuICB8IENvbnNIZFxuICB8IENvbnNTbmRcbiAgfCBWYXJcbiAgfCBUdXBsZTJcbiAgfCBUdXBsZTNcbiAgfCBDdHJcbiAgfCBBcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBudW1lcmljX2Jpbl9vcF9leGFtcGxlcyA9XG4gIHwgUGx1c1xuICB8IE1pbnVzXG4gIHwgVGltZXNcbiAgfCBQb3dlclxuICB8IERpdmlkZVxuICB8IExlc3NUaGFuVHJ1ZVxuICB8IExlc3NUaGFuRmFsc2VcbiAgfCBMZXNzVGhhbkVxdWFsTGVzc1xuICB8IExlc3NUaGFuRXF1YWxFcXVhbFxuICB8IExlc3NUaGFuRXF1YWxGYWxzZVxuICB8IEdyZWF0ZXJUaGFuVHJ1ZVxuICB8IEdyZWF0ZXJUaGFuRmFsc2VcbiAgfCBHcmVhdGVyVGhhbkVxdWFsR3JlYXRlclxuICB8IEdyZWF0ZXJUaGFuRXF1YWxFcXVhbFxuICB8IEdyZWF0ZXJUaGFuRXF1YWxGYWxzZVxuICB8IEVxdWFsRmFsc2VcbiAgfCBFcXVhbFRydWU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZV9pZCA9XG4gIHwgUmVjVHlwXG4gIHwgRGVmZXJyYWxcbiAgfCBMaXN0KGxpc3RfZXhhbXBsZXMpXG4gIHwgVHlwRnVuKHR5cGZ1bl9leGFtcGxlcylcbiAgfCBGdW4oZnVuX2V4YW1wbGVzKVxuICB8IEZpeDFcbiAgfCBGaXgyXG4gIHwgVHVwbGUxXG4gIHwgVHVwbGUyXG4gIHwgTGV0KGxldF9leGFtcGxlcylcbiAgfCBUeXBGdW5BcFxuICB8IEZ1bkFwXG4gIHwgQ29uQXBcbiAgfCBEZWZlcnJlZEFwXG4gIHwgSWZUcnVlXG4gIHwgSWZGYWxzZVxuICB8IFNlcUJhc2ljXG4gIHwgU2VxVGVzdFxuICB8IFRlc3RUcnVlXG4gIHwgVGVzdEZhbHNlXG4gIHwgSW50VW5hcnlNaW51c1xuICB8IEludChudW1lcmljX2Jpbl9vcF9leGFtcGxlcylcbiAgfCBGbG9hdChudW1lcmljX2Jpbl9vcF9leGFtcGxlcylcbiAgfCBBbmRGYWxzZVxuICB8IEFuZFRydWVcbiAgfCBPckZhbHNlXG4gIHwgT3JUcnVlXG4gIHwgU3RyaW5nRXF1YWxGYWxzZVxuICB8IFN0cmluZ0VxdWFsVHJ1ZVxuICB8IENhc2VXaWxkU2ltcGxlXG4gIHwgQ2FzZVdpbGRUdXBsZVxuICB8IENhc2VJbnRcbiAgfCBDYXNlQm9vbFxuICB8IFBpcGVsaW5lMVxuICB8IEZpbHRlclN0ZXBcbiAgfCBGaWx0ZXJFdmFsXG4gIHwgRmlsdGVySGlkZVxuICB8IEZpbHRlckRlYnVnXG4gIHwgRmlsdGVyU2VsZWN0b3I7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZSA9IHtcbiAgc3ViX2lkOiBleGFtcGxlX2lkLFxuICB0ZXJtOiBTZWdtZW50LnQsXG4gIG1lc3NhZ2U6IHN0cmluZyxcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgcGF0X3N1Yl9mb3JtX2lkID1cbiAgfCBCYXNlXG4gIHwgRW1wdHlIb2xlXG4gIHwgTXVsdGlIb2xlXG4gIHwgV2lsZFxuICB8IEludFxuICB8IEZsb2F0XG4gIHwgQm9vbFxuICB8IFN0cmluZ1xuICB8IFRyaXZcbiAgfCBMaXN0TmlsXG4gIHwgTGlzdExpdFxuICB8IExpc3RDb25zXG4gIHwgVmFyXG4gIHwgVHVwbGVcbiAgfCBUdXBsZTJcbiAgfCBUdXBsZTNcbiAgfCBDdHJcbiAgfCBBcDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtX2lkID1cbiAgfCBFbXB0eUhvbGVFeHBcbiAgfCBNdWx0aUhvbGVFeHBcbiAgfCBUcml2RXhwXG4gIHwgRGVmZXJyYWxFeHBcbiAgfCBCb29sRXhwXG4gIHwgSW50RXhwXG4gIHwgRmxvYXRFeHBcbiAgfCBTdHJpbmdFeHBcbiAgfCBWYXJFeHBcbiAgfCBDdHJFeHBcbiAgfCBMaXN0RXhwXG4gIHwgQ29uc0V4cFxuICB8IExpc3RDb25jYXRFeHBcbiAgfCBUeXBGdW5jdGlvbkV4cFxuICB8IEZ1bmN0aW9uRXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBUdXBsZUV4cFxuICB8IFR1cGxlMkV4cFxuICB8IFR1cGxlM0V4cFxuICB8IExldEV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgRml4RXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBUeXBGdW5BcEV4cFxuICB8IEZ1bkFwRXhwXG4gIHwgQ29uQXBFeHBcbiAgfCBEZWZlcnJlZEFwRXhwXG4gIHwgSWZFeHBcbiAgfCBTZXFFeHBcbiAgfCBUZXN0RXhwXG4gIHwgVW5PcEV4cChPcGVyYXRvcnMub3BfdW4pXG4gIHwgQmluT3BFeHAoT3BlcmF0b3JzLm9wX2JpbilcbiAgfCBDYXNlRXhwXG4gIHwgVHlBbGlhc0V4cFxuICB8IEVtcHR5SG9sZVBhdFxuICB8IE11bHRpSG9sZVBhdFxuICB8IFdpbGRQYXRcbiAgfCBJbnRQYXRcbiAgfCBGbG9hdFBhdFxuICB8IEJvb2xQYXRcbiAgfCBTdHJQYXRcbiAgfCBUcml2UGF0XG4gIHwgVmFyUGF0XG4gIHwgQ3RyUGF0XG4gIHwgTGlzdExpdFBhdFxuICB8IExpc3ROaWxQYXRcbiAgfCBDb25zUGF0XG4gIHwgQ29uczJQYXRcbiAgfCBUdXBsZVBhdFxuICB8IFR1cGxlMlBhdFxuICB8IFR1cGxlM1BhdFxuICB8IEFwUGF0XG4gIHwgVHlwQW5uUGF0XG4gIHwgRW1wdHlIb2xlVHlwXG4gIHwgTXVsdGlIb2xlVHlwXG4gIHwgSW50VHlwXG4gIHwgRmxvYXRUeXBcbiAgfCBCb29sVHlwXG4gIHwgU3RyVHlwXG4gIHwgVmFyVHlwXG4gIHwgTGlzdFR5cFxuICB8IEZvcmFsbFR5cFxuICB8IFJlY1R5cFxuICB8IEFycm93VHlwXG4gIHwgQXJyb3czVHlwXG4gIHwgVHVwbGVUeXBcbiAgfCBUdXBsZTBUeXBcbiAgfCBUdXBsZTJUeXBcbiAgfCBUdXBsZTNUeXBcbiAgfCBMYWJlbGxlZFN1bVR5cFxuICB8IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBTdW1UeXBOdWxsYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBFbXB0eUhvbGVUUGF0XG4gIHwgTXVsdGlIb2xlVFBhdFxuICB8IFZhclRQYXRcbiAgfCBQaXBlbGluZUV4cFxuICB8IEZpbHRlclBhdXNlXG4gIHwgRmlsdGVyRXZhbFxuICB8IEZpbHRlckRlYnVnXG4gIHwgRmlsdGVySGlkZVxuICB8IEZpbHRlclNlbGVjdG9yO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGZvcm0gPSB7XG4gIGlkOiBmb3JtX2lkLFxuICBzeW50YWN0aWNfZm9ybTogU2VnbWVudC50LFxuICBleHBhbmRhYmxlX2lkOiBvcHRpb24oKElkLnQsIFNlZ21lbnQudCkpLFxuICBleHBsYW5hdGlvbjogc3RyaW5nLFxuICBleGFtcGxlczogbGlzdChleGFtcGxlKSxcbn07XG5cbi8vIEhBTk5BSCAtIFRPRE86IE5vdCBzdXJlIHRoaXMgc2hvdWxkIGJlIGRpZmZlcmVudCBmcm9tIGZvcm1faWQgLSBtYXliZSBqdXN0IG9uZSBpZFxuLy8gTUFZQkUgZG9uJ3QgZXZlbiBuZWVkIGFuIGlkIGF0IGFsbCBmb3IgdGhlIGdyb3VwIC0ganVzdCB1c2UgdGhlIG1vc3Qgc3BlY2lmaWMgKDFzdCkgZm9ybSBpZCBpbiBmb3Jtc1xuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBncm91cF9pZCA9XG4gIHwgRW1wdHlIb2xlRXhwXG4gIHwgTXVsdGlIb2xlRXhwXG4gIHwgVHJpdkV4cFxuICB8IERlZmVycmFsRXhwXG4gIHwgQm9vbEV4cFxuICB8IEludEV4cFxuICB8IEZsb2F0RXhwXG4gIHwgU3RyaW5nRXhwXG4gIHwgVmFyRXhwXG4gIHwgQ3RyRXhwXG4gIHwgTGlzdEV4cFxuICB8IENvbnNFeHBcbiAgfCBMaXN0Q29uY2F0RXhwXG4gIHwgVHlwRnVuY3Rpb25FeHBcbiAgfCBGdW5jdGlvbkV4cChwYXRfc3ViX2Zvcm1faWQpXG4gIHwgVHVwbGVFeHBcbiAgfCBUdXBsZTJFeHBcbiAgfCBUdXBsZTNFeHBcbiAgfCBMZXRFeHAocGF0X3N1Yl9mb3JtX2lkKVxuICB8IFR5cEZ1bkFwRXhwXG4gIHwgRml4RXhwKHBhdF9zdWJfZm9ybV9pZClcbiAgfCBGdW5BcEV4cFxuICB8IENvbkFwRXhwXG4gIHwgRGVmZXJyZWRBcEV4cFxuICB8IElmRXhwXG4gIHwgU2VxRXhwXG4gIHwgVGVzdEV4cFxuICB8IFVuT3BFeHAoT3BlcmF0b3JzLm9wX3VuKVxuICB8IEJpbk9wRXhwKE9wZXJhdG9ycy5vcF9iaW4pXG4gIHwgQ2FzZUV4cFxuICB8IFR5QWxpYXNFeHBcbiAgfCBQaXBlbGluZUV4cFxuICB8IEVtcHR5SG9sZVBhdFxuICB8IE11bHRpSG9sZVBhdFxuICB8IFdpbGRQYXRcbiAgfCBJbnRQYXRcbiAgfCBGbG9hdFBhdFxuICB8IEJvb2xQYXRcbiAgfCBTdHJQYXRcbiAgfCBUcml2UGF0XG4gIHwgVmFyUGF0XG4gIHwgQ3RyUGF0XG4gIHwgTGlzdExpdFBhdFxuICB8IExpc3ROaWxQYXRcbiAgfCBDb25zUGF0XG4gIHwgQ29uczJQYXRcbiAgfCBUdXBsZVBhdFxuICB8IFR1cGxlMlBhdFxuICB8IFR1cGxlM1BhdFxuICB8IEFwUGF0XG4gIHwgVHlwQW5uUGF0XG4gIHwgRW1wdHlIb2xlVHlwXG4gIHwgTXVsdGlIb2xlVHlwXG4gIHwgSW50VHlwXG4gIHwgRmxvYXRUeXBcbiAgfCBCb29sVHlwXG4gIHwgU3RyVHlwXG4gIHwgVmFyVHlwXG4gIHwgTGlzdFR5cFxuICB8IEZvcmFsbFR5cFxuICB8IFJlY1R5cFxuICB8IEFycm93VHlwXG4gIHwgQXJyb3czVHlwXG4gIHwgVHVwbGVUeXBcbiAgfCBUdXBsZTBUeXBcbiAgfCBUdXBsZTJUeXBcbiAgfCBUdXBsZTNUeXBcbiAgfCBMYWJlbGxlZFN1bVR5cFxuICB8IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBTdW1UeXBOdWxsYXJ5Q29uc3RydWN0b3JEZWZcbiAgfCBFbXB0eUhvbGVUUGF0XG4gIHwgTXVsdGlIb2xlVFBhdFxuICB8IFZhclRQYXRcbiAgfCBGaWx0ZXJQYXVzZVxuICB8IEZpbHRlckV2YWxcbiAgfCBGaWx0ZXJEZWJ1Z1xuICB8IEZpbHRlckhpZGVcbiAgfCBGaWx0ZXJTZWxlY3RvcjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBncm91cCA9IHtcbiAgaWQ6IGdyb3VwX2lkLFxuICBmb3JtczogbGlzdChmb3JtKSAvLyBPcmRlcmVkIC0gbW9yZSBzcGVjaWZpYyB0byBsZXNzIHNwZWNpZmljXG59O1xuXG5tb2R1bGUgU2ltcGxlID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBncm91cF9pZCxcbiAgICBmb3JtX2lkLFxuICAgIGFic3RyYWN0OiAoU2VnbWVudC50LCBsaXN0KChJZC50LCBJZC50KSkpLFxuICAgIGV4cGxhbmF0aW9uOiBzdHJpbmcsXG4gICAgZXhhbXBsZXM6IGxpc3QoZXhhbXBsZSksXG4gIH07XG5cbiAgbGV0IHRvX2dyb3VwID1cbiAgICAgIChcbiAgICAgICAge1xuICAgICAgICAgIGV4cGxhbmF0aW9uLFxuICAgICAgICAgIGFic3RyYWN0OiAoc3ludGFjdGljX2Zvcm0sIGNvbG9yaW5ncyksXG4gICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgZm9ybV9pZCxcbiAgICAgICAgICBleGFtcGxlcyxcbiAgICAgICAgfTogdCxcbiAgICAgICkgPT4gKFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGNvbG9yaW5ncyxcbiAgICB7XG4gICAgICBpZDogZ3JvdXBfaWQsXG4gICAgICBmb3JtczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGZvcm1faWQsXG4gICAgICAgICAgc3ludGFjdGljX2Zvcm0sXG4gICAgICAgICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICAgICAgICBleHBsYW5hdGlvbjogXCJcIixcbiAgICAgICAgICBleGFtcGxlcyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgKTtcblxuICBsZXQgbWtfMSA9XG4gICAgICAoKG46IHN0cmluZywgaWQ6IElkLnQpLCBta19mb3JtOiBQaWVjZS50ID0+IFNlZ21lbnQudClcbiAgICAgIDogKFNlZ21lbnQudCwgbGlzdCgoSWQudCwgSWQudCkpKSA9PiB7XG4gICAgbGV0IHAgPSBFeGFtcGxlLmV4cChuKTtcbiAgICAobWtfZm9ybShwKSwgWyhQaWVjZS5pZChwKSwgaWQpXSk7XG4gIH07XG5cbiAgbGV0IG1rXzIgPVxuICAgICAgKFxuICAgICAgICAobjE6IHN0cmluZywgaWRfMTogSWQudCksXG4gICAgICAgIChuMjogc3RyaW5nLCBpZF8yOiBJZC50KSxcbiAgICAgICAgbWtfZm9ybTogKFBpZWNlLnQsIFBpZWNlLnQpID0+IFNlZ21lbnQudCxcbiAgICAgIClcbiAgICAgIDogKFNlZ21lbnQudCwgbGlzdCgoSWQudCwgSWQudCkpKSA9PiB7XG4gICAgbGV0IChwMSwgcDIpID0gKEV4YW1wbGUuZXhwKG4xKSwgRXhhbXBsZS5leHAobjIpKTtcbiAgICAobWtfZm9ybShwMSwgcDIpLCBbKFBpZWNlLmlkKHAxKSwgaWRfMSksIChQaWVjZS5pZChwMiksIGlkXzIpXSk7XG4gIH07XG5cbiAgbGV0IG1rXzMgPVxuICAgICAgKFxuICAgICAgICAobjE6IHN0cmluZywgaWRfMTogSWQudCksXG4gICAgICAgIChuMjogc3RyaW5nLCBpZF8yOiBJZC50KSxcbiAgICAgICAgKG4zOiBzdHJpbmcsIGlkXzM6IElkLnQpLFxuICAgICAgICBta19mb3JtOiAoUGllY2UudCwgUGllY2UudCwgUGllY2UudCkgPT4gU2VnbWVudC50LFxuICAgICAgKVxuICAgICAgOiAoU2VnbWVudC50LCBsaXN0KChJZC50LCBJZC50KSkpID0+IHtcbiAgICBsZXQgKHAxLCBwMiwgcDMpID0gKFxuICAgICAgRXhhbXBsZS5leHAobjEpLFxuICAgICAgRXhhbXBsZS5leHAobjIpLFxuICAgICAgRXhhbXBsZS5leHAobjMpLFxuICAgICk7XG4gICAgKFxuICAgICAgbWtfZm9ybShwMSwgcDIsIHAzKSxcbiAgICAgIFtcbiAgICAgICAgKFBpZWNlLmlkKHAxKSwgaWRfMSksXG4gICAgICAgIChQaWVjZS5pZChwMiksIGlkXzIpLFxuICAgICAgICAoUGllY2UuaWQocDMpLCBpZF8zKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfTtcbn07XG4iLCJvcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IHZhcl90eXBfcGF0ID0gKG46IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcImAlc2AgYmluZHMgYSB0eXBlIHZhcmlhYmxlLlwiO1xuICB7XG4gICAgaWQ6IFZhclRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtuIHw+IGFiYnJldmlhdGUgfD4gdHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdmFyX3R5cF9wYXRzID0gKG46IHN0cmluZyk6IGdyb3VwID0+IHtcbiAgaWQ6IFZhclRQYXQsXG4gIGZvcm1zOiBbdmFyX3R5cF9wYXQobildLFxufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgY29sb3JNYXAgPSBIYXozbGNvcmUuSWQuTWFwLnQoc3RyaW5nKTtcblxuLypbQGRlcml2aW5nIHNleHBdKi9cbnR5cGUgdCA9IChjb2xvck1hcCwgaW50KTtcblxuLyogVE9ETzogSGFubmFoIC0gUGljayA3IG9yIHNvIGRpc3RpbmN0IGNvbG9ycyBmcm9tIHRoZSBkaWZmZXJlbnQgY29sb3IgZ2VuZXJhdG9yIHRoaW5nIChIU0x1dilcbiAgIE1ha2Ugc3VyZSBkaXN0aW5ndWlzaGFibGUgZm9yIGNvbG9yIGJsaW5kIG9yIGdyZXlzY2FsZVxuICAgLSB0aGluayBhYm91dCByZWxhdGVkIGNvbG9ycyBmb3IgcmVsYXRlZCBjb25jZXB0cyovXG5sZXQgY2hpbGRfY29sb3JzID0gW1wiYmx1ZVwiLCBcInBpbmtcIiwgXCJ0ZWFsXCIsIFwib3JhbmdlXCIsIFwicHVycGxlXCIsIFwieWVsbG93XCJdO1xuXG5sZXQgZW1wdHkgPSAoSGF6M2xjb3JlLklkLk1hcC5lbXB0eSwgMCk7XG5sZXQgZ2V0X2NvbG9yID0gKGlkOiBIYXozbGNvcmUuSWQudCwgKG1hcHBpbmcsIGluZGV4KTogdCk6IChzdHJpbmcsIHQpID0+XG4gIHN3aXRjaCAoSGF6M2xjb3JlLklkLk1hcC5maW5kX29wdChpZCwgbWFwcGluZykpIHtcbiAgfCBOb25lID0+XG4gICAgbGV0IGNvbG9yID0gTGlzdC5udGgoY2hpbGRfY29sb3JzLCBpbmRleCBtb2QgTGlzdC5sZW5ndGgoY2hpbGRfY29sb3JzKSk7XG4gICAgbGV0IG1hcHBpbmcgPSBIYXozbGNvcmUuSWQuTWFwLmFkZChpZCwgY29sb3IsIG1hcHBpbmcpO1xuICAgIChjb2xvciwgKG1hcHBpbmcsIGluZGV4ICsgMSkpO1xuICB8IFNvbWUoY29sb3IpID0+IChjb2xvciwgKG1hcHBpbmcsIGluZGV4KSlcbiAgfTtcblxubGV0IHRvX2xpc3QgPSAobWFwOiBjb2xvck1hcCk6IGxpc3QoKEhhejNsY29yZS5JZC50LCBzdHJpbmcpKSA9PiB7XG4gIExpc3Qub2Zfc2VxKEhhejNsY29yZS5JZC5NYXAudG9fc2VxKG1hcCkpO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubGV0IGNvZGUgPSAoY29kZTogc3RyaW5nKSA9PiB7XG4gIE5vZGUuc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImV4ZXJjaXNlLWNvZGVcIiksIFtOb2RlLnRleHQoY29kZSldKTtcbn07XG5cbmxldCBlcXVpdiA9IE5vZGUuc3Bhbih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwiIOKJoSBcIildKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gRXhlcmNpc2VVdGlsO1xuXG5sZXQgcHJvbXB0ID1cbiAgZGl2KFtcbiAgICBwKFtcbiAgICAgIHRleHQoXG4gICAgICAgIFwiV3JpdGUgYSByZWN1cnNpdmUgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGdpdmVuIGludGVnZXIgaXMgb2RkLiBcIixcbiAgICAgICksXG4gICAgXSksXG4gICAgcChbXG4gICAgICBjb2RlKFwib2RkKG4pXCIpLFxuICAgICAgZXF1aXYsXG4gICAgICBjb2RlKFwidHJ1ZVwiKSxcbiAgICAgIHRleHQoXCIgaWZmIFwiKSxcbiAgICAgIGNvZGUoXCJuXCIpLFxuICAgICAgdGV4dChcIiBpcyBvZGQuXCIpLFxuICAgIF0pLFxuICBdKTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubW9kdWxlIEV4ZXJjaXNlRW52ID0ge1xuICB0eXBlIG5vZGUgPSBOb2RlLnQ7XG4gIGxldCBkZWZhdWx0ID0gTm9kZS50ZXh0KFwiVE9ETzogcHJvbXB0XCIpO1xuICBsZXQgb3V0cHV0X2hlYWRlciA9IG1vZHVsZV9uYW1lID0+XG4gICAgXCJsZXQgcHJvbXB0ID0gXCIgKysgbW9kdWxlX25hbWUgKysgXCJfcHJvbXB0LnByb21wdFxcblwiO1xufTtcblxuaW5jbHVkZSBIYXozbHNjaG9vbC5FeGVyY2lzZS5GKEV4ZXJjaXNlRW52KTtcbiIsIm9wZW4gSGF6M2xjb3JlXG5cbmxldCBwcm9tcHQgPSBFeF9PZGRseVJlY3Vyc2l2ZV9wcm9tcHQucHJvbXB0XG5cbmxldCBleGVyY2lzZSA6IEV4ZXJjaXNlLnNwZWMgPVxuICB7XG4gICAgdGl0bGUgPSBcIk9kZGx5IFJlY3Vyc2l2ZVwiO1xuICAgIHZlcnNpb24gPSAxO1xuICAgIG1vZHVsZV9uYW1lID0gXCJFeF9PZGRseVJlY3Vyc2l2ZVwiO1xuICAgIHByb21wdDtcbiAgICBwb2ludF9kaXN0cmlidXRpb24gPVxuICAgICAgeyB0ZXN0X3ZhbGlkYXRpb24gPSAxOyBtdXRhdGlvbl90ZXN0aW5nID0gMTsgaW1wbF9ncmFkaW5nID0gMiB9O1xuICAgIHByZWx1ZGUgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZhbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gKFsgMDsgMSBdLCBbIDIgXSk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtdICk7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgKCBbXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgICAgICBdICkgKTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBjb3JyZWN0X2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA1OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNTsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSAoWyAwOyAxIF0sIFsgMiBdKTtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICggW10sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgXSApICk7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgeW91cl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gUmlnaHQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmYWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidHJ1ZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgcmVxdWlyZWQgPSA2O1xuICAgICAgICBwcm92aWRlZCA9IDI7XG4gICAgICB9O1xuICAgIHlvdXJfaW1wbCA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJCb29sXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIGhpZGRlbl9idWdzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZhbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgWyBHcm91dCB7IGlkID0gSWQubWsgKCk7IHNoYXBlID0gQ29udmV4IH0gXSApO1xuICAgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgaGludCA9IFwiYWx3YXlzIHJldHVybnMgZmFsc2VcIjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiQm9vbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRydWVcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJhbHdheXMgcmV0dXJucyB0cnVlXCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBpbXBsID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VsZWN0aW9uID0geyBmb2N1cyA9IExlZnQ7IGNvbnRlbnQgPSBbXTsgbW9kZSA9IE5vcm1hbCB9O1xuICAgICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBQYXQ7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkJvb2xcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmNhdmUgMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0cnVlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJpZlwiOyBcInRoZW5cIjsgXCJlbHNlXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHA7IEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEyOyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidHJ1ZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgIFsgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9IF0gKTtcbiAgICAgICAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGhpbnQgPSBcImluY29ycmVjdCBiYXNlIGNhc2VcIjtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgaGlkZGVuX3Rlc3RzID1cbiAgICAgIHtcbiAgICAgICAgdGVzdHMgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICByZWxhdGl2ZXMgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgKCBbXG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm5vdFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIwXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJub3RcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIm9kZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibm90XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJvZGRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjQyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwib2RkXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyN1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgaGludHMgPSBbIFwiemVyb1wiIF07XG4gICAgICB9O1xuICAgIHN5bnRheF90ZXN0cyA9XG4gICAgICBbIChcIm9kZCBpcyByZWN1cnNpdmVcIiwgSGF6M2xzY2hvb2wuU3ludGF4VGVzdC5Jc1JlY3Vyc2l2ZSBcIm9kZFwiKSBdO1xuICB9XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIEV4ZXJjaXNlVXRpbDtcblxubGV0IHByb21wdCA9XG4gIGRpdihbXG4gICAgcChbXG4gICAgICBkaXYoW1xuICAgICAgICB0ZXh0KFxuICAgICAgICAgIFwiV3JpdGUgdGVzdHMgY2FzZXMgZm9yLCBhbmQgdGhlbiBpbXBsZW1lbnQsIGEgZnVuY3Rpb24sIHRoYXQgcmVjdXJzaXZlbHkgZGV0ZXJtaW5lcyB0aGUgbnRoIGZpYm9uYWNjaSBudW1iZXIuXCIsXG4gICAgICAgICksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgICBwKFtcbiAgICAgIGNvZGUoXCJmaWIobilcIiksXG4gICAgICBlcXVpdixcbiAgICAgIHRleHQoXCJ0aGUgXCIpLFxuICAgICAgY29kZShcIm5cIiksXG4gICAgICB0ZXh0KFwidGggZmlib25hY2NpIG51bWJlciwgYXNzdW1pbmcgXCIpLFxuICAgICAgY29kZShcIm4gPj0gMC5cIiksXG4gICAgXSksXG4gIF0pO1xuIiwib3BlbiBIYXozbGNvcmVcblxubGV0IHByb21wdCA9IEV4X1JlY3Vyc2l2ZUZpYm9uYWNjaV9wcm9tcHQucHJvbXB0XG5cbmxldCBleGVyY2lzZSA6IEV4ZXJjaXNlLnNwZWMgPVxuICB7XG4gICAgdGl0bGUgPSBcIlJlY3Vyc2l2ZSBGaWJvbmFjY2lcIjtcbiAgICB2ZXJzaW9uID0gMTtcbiAgICBtb2R1bGVfbmFtZSA9IFwiRXhfUmVjdXJzaXZlRmlib25hY2NpXCI7XG4gICAgcHJvbXB0O1xuICAgIHBvaW50X2Rpc3RyaWJ1dGlvbiA9XG4gICAgICB7IHRlc3RfdmFsaWRhdGlvbiA9IDE7IG11dGF0aW9uX3Rlc3RpbmcgPSAxOyBpbXBsX2dyYWRpbmcgPSAyIH07XG4gICAgcHJlbHVkZSA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9IChbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdLCBbXSk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICB9O1xuICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgfTtcbiAgICBjb3JyZWN0X2ltcGwgPVxuICAgICAge1xuICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZ1blwiOyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDU7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA1OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiK1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5IHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICBdICk7XG4gICAgICAgICAgICBhbmNlc3RvcnMgPVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImxldFwiOyBcIj1cIjsgXCJpblwiIF07XG4gICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gKFsgMDsgMSBdLCBbIDIgXSk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI6XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICggW10sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfTtcbiAgICAgICAgICAgICAgICAgICAgXSApICk7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgfTtcbiAgICAgICAgY2FyZXQgPSBPdXRlcjtcbiAgICAgIH07XG4gICAgeW91cl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzID0gKFtdLCBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdKTtcbiAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICAgICAgfTtcbiAgICAgICAgcmVxdWlyZWQgPSA1O1xuICAgICAgICBwcm92aWRlZCA9IDA7XG4gICAgICB9O1xuICAgIHlvdXJfaW1wbCA9XG4gICAgICB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJuXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBTZWNvbmRhcnkgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgR3JvdXQgeyBpZCA9IElkLm1rICgpOyBzaGFwZSA9IENvbnZleCB9O1xuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW10gKTtcbiAgICAgICAgICAgIGFuY2VzdG9ycyA9IFtdO1xuICAgICAgICAgIH07XG4gICAgICAgIGNhcmV0ID0gT3V0ZXI7XG4gICAgICB9O1xuICAgIGhpZGRlbl9idWdzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGltcGwgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICAgIGJhY2twYWNrID0gW107XG4gICAgICAgICAgICAgIHJlbGF0aXZlcyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc2libGluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwibGV0XCI7IFwiPVwiOyBcImluXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDE7IDIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBQYXQgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjpcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBUeXAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIkludFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFR5cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIi0+XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNjsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZnVuXCI7IFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIFBhdCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDE0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImlmXCI7IFwidGhlblwiOyBcImVsc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cDsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTI7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI8XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA1O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIitcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJpbmNvcnJlY3QgYmFzZSBjYXNlc1wiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgaW1wbCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNlbGVjdGlvbiA9IHsgZm9jdXMgPSBMZWZ0OyBjb250ZW50ID0gW107IG1vZGUgPSBOb3JtYWwgfTtcbiAgICAgICAgICAgICAgYmFja3BhY2sgPSBbXTtcbiAgICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzaWJsaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJsZXRcIjsgXCI9XCI7IFwiaW5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0OyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxNDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMTsgMiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gUGF0IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFBhdCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiOlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBQYXQgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IFR5cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiSW50XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gVHlwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IFR5cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLT5cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDY7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA2OyBzb3J0ID0gVHlwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJJbnRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBUeXA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBUeXAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gVHlwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmdW5cIjsgXCItPlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgUGF0IF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTQ7IHNvcnQgPSBFeHAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gUGF0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IFBhdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBQYXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiaWZcIjsgXCJ0aGVuXCI7IFwiZWxzZVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwOyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMjsgc29ydCA9IEV4cCB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxOyAyIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ4XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCItXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb25jYXZlIDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIitcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDQ7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA0OyBzb3J0ID0gRXhwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwieFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiLVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29uY2F2ZSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbmNhdmUgNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeSB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgICBhbmNlc3RvcnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICBoaW50ID0gXCJpbmNvcnJlY3QgcmVjdXJzaW9uXCI7XG4gICAgICAgIH07XG4gICAgICBdO1xuICAgIGhpZGRlbl90ZXN0cyA9XG4gICAgICB7XG4gICAgICAgIHRlc3RzID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB7IGZvY3VzID0gTGVmdDsgY29udGVudCA9IFtdOyBtb2RlID0gTm9ybWFsIH07XG4gICAgICAgICAgICBiYWNrcGFjayA9IFtdO1xuICAgICAgICAgICAgcmVsYXRpdmVzID1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHNpYmxpbmdzID1cbiAgICAgICAgICAgICAgICAgICggW1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjBcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIxXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIyXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiM1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiO1wiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIlxcMjI2XFwxNDNcXDE0MlwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJ0ZXN0XCI7IFwiZW5kXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcImZpYlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIihcIjsgXCIpXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDE7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDA7IDEgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiNFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIj09XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI1XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI7XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxMDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiXFwyMjZcXDE0M1xcMTQyXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcInRlc3RcIjsgXCJlbmRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiZmliXCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiKFwiOyBcIilcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gWyBFeHAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgMTsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMDsgMSBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI1XCIgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlID0gQ29udmV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ID0gRXhwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiPT1cIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDc7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjZcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMTNcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjdcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMjFcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBJZC5tayAoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwidGVzdFwiOyBcImVuZFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFsgRXhwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29udmV4OyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCJmaWJcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCIoXCI7IFwiKVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbIEV4cCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB7IHNoYXBlID0gQ29uY2F2ZSAxOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwOyAxIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjhcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbGQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBDb252ZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IENvbnZleDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmRzID0gWyAwIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZGFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCIgXCIgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IFsgXCI9PVwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IEV4cDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggeyBzaGFwZSA9IENvbmNhdmUgNzsgc29ydCA9IEV4cCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IHNoYXBlID0gQ29uY2F2ZSA3OyBzb3J0ID0gRXhwIH0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGlkID0gSWQubWsgKCk7IGNvbnRlbnQgPSBXaGl0ZXNwYWNlIFwiIFwiIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZCA9IElkLm1rICgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBbIFwiMzRcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9sZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlicyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb252ZXg7IHNvcnQgPSBFeHAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbnZleDsgc29ydCA9IEV4cCB9ICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZHMgPSBbIDAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Vjb25kYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBpZCA9IElkLm1rICgpOyBjb250ZW50ID0gV2hpdGVzcGFjZSBcIiBcIiB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBUaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gSWQubWsgKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsID0gWyBcIjtcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBtb2xkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBFeHA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl8gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pYnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHsgc2hhcGUgPSBDb25jYXZlIDEwOyBzb3J0ID0gRXhwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzaGFwZSA9IENvbmNhdmUgMTA7IHNvcnQgPSBFeHAgfSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJkcyA9IFsgMCBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICBTZWNvbmRhcnlcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQgPSBJZC5tayAoKTsgY29udGVudCA9IFdoaXRlc3BhY2UgXCJcXDIyNlxcMTQzXFwxNDJcIiB9O1xuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBbIEdyb3V0IHsgaWQgPSBJZC5tayAoKTsgc2hhcGUgPSBDb252ZXggfSBdICk7XG4gICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gW107XG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjYXJldCA9IE91dGVyO1xuICAgICAgICAgIH07XG4gICAgICAgIGhpbnRzID0gW107XG4gICAgICB9O1xuICAgIHN5bnRheF90ZXN0cyA9XG4gICAgICBbIChcImZpYiBpcyByZWN1cnNpdmVcIiwgSGF6M2xzY2hvb2wuU3ludGF4VGVzdC5Jc1JlY3Vyc2l2ZSBcImZpYlwiKSBdO1xuICB9XG4iLCJsZXQgZmlsZW5hbWUgPSBcImhhejNsLWRlbW9cIjtcbmxldCBsb2dfa2V5ID0gZmlsZW5hbWU7XG5sZXQgZXhlcmNpc2VzOiBsaXN0KEV4ZXJjaXNlLnNwZWMpID0gW1xuICBFeF9PZGRseVJlY3Vyc2l2ZS5leGVyY2lzZSxcbiAgRXhfUmVjdXJzaXZlRmlib25hY2NpLmV4ZXJjaXNlLFxuXTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5tb2R1bGUgU2V4cCA9IFNleHBsaWIuU2V4cDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIFV0aWw7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZmVlZGJhY2tfb3B0aW9uID1cbiAgfCBUaHVtYnNVcFxuICB8IFRodW1ic0Rvd247XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgZXhhbXBsZV9tb2RlbCA9IHtcbiAgc3ViX2lkOiBleGFtcGxlX2lkLFxuICBmZWVkYmFjazogZmVlZGJhY2tfb3B0aW9uLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBmb3JtX21vZGVsID0ge1xuICBncm91cDogZ3JvdXBfaWQsXG4gIGZvcm06IGZvcm1faWQsXG4gIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBvcHRpb24oZmVlZGJhY2tfb3B0aW9uKSxcbiAgZXhhbXBsZXM6IGxpc3QoZXhhbXBsZV9tb2RlbCksXG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGdyb3VwX21vZGVsID0ge1xuICBncm91cDogZ3JvdXBfaWQsXG4gIHNlbGVjdGVkOiBmb3JtX2lkLFxufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzcGVjaWZpY2l0eV9vcGVuOiBib29sLFxuICBmb3JtczogbGlzdChmb3JtX21vZGVsKSxcbiAgZ3JvdXBzOiBsaXN0KGdyb3VwX21vZGVsKSxcbn07XG5cbm1vZHVsZSBTZXR0aW5ncyA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGhpZ2hsaWdodCA9XG4gICAgfCBOb0hpZ2hsaWdodFxuICAgIHwgT25lKElkLnQpXG4gICAgfCBBbGw7XG5cbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPSB7XG4gICAgc2hvdzogYm9vbCxcbiAgICBzaG93X2ZlZWRiYWNrOiBib29sLFxuICAgIGhpZ2hsaWdodCxcbiAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgaGlnaGxpZ2h0X2FjdGlvbiA9XG4gICAgfCBUb2dnbGVcbiAgICB8IEhvdmVyKElkLnQpXG4gICAgfCBVbnNldEhvdmVyO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBhY3Rpb24gPVxuICAgIHwgVG9nZ2xlU2hvd1xuICAgIHwgVG9nZ2xlU2hvd0ZlZWRiYWNrXG4gICAgfCBTZXRIaWdobGlnaHQoaGlnaGxpZ2h0X2FjdGlvbik7XG5cbiAgbGV0IGluaXQgPSB7c2hvdzogdHJ1ZSwgc2hvd19mZWVkYmFjazogZmFsc2UsIGhpZ2hsaWdodDogTm9IaWdobGlnaHR9O1xufTtcblxubGV0IGluaXQ6IHQgPSB7c3BlY2lmaWNpdHlfb3BlbjogZmFsc2UsIGZvcm1zOiBbXSwgZ3JvdXBzOiBbXX07XG5cbmxldCBnZXRfZXhwbGFuYXRpb25fZmVlZGJhY2sgPVxuICAgIChncm91cF9pZDogZ3JvdXBfaWQsIGZvcm1faWQ6IGZvcm1faWQsIG1vZGVsOiB0KTogb3B0aW9uKGZlZWRiYWNrX29wdGlvbikgPT4ge1xuICBsZXQgZm9ybXMgPVxuICAgIExpc3QuZmlsdGVyKFxuICAgICAgKGZvcm06IGZvcm1fbW9kZWwpID0+IGZvcm0uZ3JvdXAgPT0gZ3JvdXBfaWQgJiYgZm9ybS5mb3JtID09IGZvcm1faWQsXG4gICAgICBtb2RlbC5mb3JtcyxcbiAgICApO1xuICBzd2l0Y2ggKGZvcm1zKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmb3JtXSA9PiBmb3JtLmV4cGxhbmF0aW9uX2ZlZWRiYWNrXG4gIHwgXyA9PlxuICAgIHJhaXNlKFxuICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgXCJFYWNoIGZvcm0sIGdyb3VwIHBhaXIgc2hvdWxkIG9ubHkgYXBwZWFyIG9uY2UsIGJ1dCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICAgICsrIFwiLCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgKysgXCIgYXBwZWFycyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGZvcm1zKSlcbiAgICAgICAgKysgXCIgdGltZXNcIixcbiAgICAgICksXG4gICAgKVxuICB9O1xufTtcblxubGV0IGdldF9leGFtcGxlX2ZlZWRiYWNrID1cbiAgICAoZ3JvdXBfaWQ6IGdyb3VwX2lkLCBmb3JtX2lkOiBmb3JtX2lkLCBleGFtcGxlX2lkOiBleGFtcGxlX2lkLCBtb2RlbDogdClcbiAgICA6IG9wdGlvbihmZWVkYmFja19vcHRpb24pID0+IHtcbiAgbGV0IGZvcm1zID1cbiAgICBMaXN0LmZpbHRlcihcbiAgICAgIChmb3JtOiBmb3JtX21vZGVsKSA9PiBmb3JtLmdyb3VwID09IGdyb3VwX2lkICYmIGZvcm0uZm9ybSA9PSBmb3JtX2lkLFxuICAgICAgbW9kZWwuZm9ybXMsXG4gICAgKTtcblxuICBzd2l0Y2ggKGZvcm1zKSB7XG4gIHwgW10gPT4gTm9uZVxuICB8IFtmb3JtXSA9PlxuICAgIGxldCBleGFtcGxlcyA9XG4gICAgICBMaXN0LmZpbHRlcihcbiAgICAgICAgKGV4YW1wbGU6IGV4YW1wbGVfbW9kZWwpID0+IGV4YW1wbGUuc3ViX2lkID09IGV4YW1wbGVfaWQsXG4gICAgICAgIGZvcm0uZXhhbXBsZXMsXG4gICAgICApO1xuICAgIHN3aXRjaCAoZXhhbXBsZXMpIHtcbiAgICB8IFtdID0+IE5vbmVcbiAgICB8IFtleGFtcGxlXSA9PiBTb21lKGV4YW1wbGUuZmVlZGJhY2spXG4gICAgfCBfID0+XG4gICAgICByYWlzZShcbiAgICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgICBcIkVhY2ggZ3JvdXAsIGZvcm0sIGV4YW1wbGUgdHJpcGxlIHNob3VsZCBvbmx5IGFwcGVhciBvbmNlLCBidXQgXCJcbiAgICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgICArKyBcIiwgXCJcbiAgICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICAgICAgKysgXCIsIFwiXG4gICAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9leGFtcGxlX2lkKGV4YW1wbGVfaWQpKVxuICAgICAgICAgICsrIFwiIGFwcGVhcnMgXCJcbiAgICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGV4YW1wbGVzKSlcbiAgICAgICAgICArKyBcIiB0aW1lc1wiLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH07XG4gIHwgXyA9PlxuICAgIHJhaXNlKFxuICAgICAgSW52YWxpZF9hcmd1bWVudChcbiAgICAgICAgXCJFYWNoIGdyb3VwLCBmb3JtIHBhaXIgc2hvdWxkIG9ubHkgYXBwZWFyIG9uY2UsIGJ1dCBcIlxuICAgICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2dyb3VwX2lkKGdyb3VwX2lkKSlcbiAgICAgICAgKysgXCIsIFwiXG4gICAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZm9ybV9pZChmb3JtX2lkKSlcbiAgICAgICAgKysgXCIgYXBwZWFycyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGZvcm1zKSlcbiAgICAgICAgKysgXCIgdGltZXNcIixcbiAgICAgICksXG4gICAgKVxuICB9O1xufTtcblxubGV0IGdldF9mb3JtX2luX2dyb3VwID0gKGZvcm1faWQ6IGZvcm1faWQsIGdyb3VwOiBncm91cCk6IGZvcm0gPT4ge1xuICBPcHRVdGlsLmdldF9vcl9yYWlzZShcbiAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgXCJGb3JtIFwiXG4gICAgICArKyBTZXhwLnRvX3N0cmluZyhzZXhwX29mX2Zvcm1faWQoZm9ybV9pZCkpXG4gICAgICArKyBcIiBpcyBub3QgaW4gZ3JvdXAgXCJcbiAgICAgICsrIFNleHAudG9fc3RyaW5nKHNleHBfb2ZfZ3JvdXBfaWQoZ3JvdXAuaWQpKSxcbiAgICApLFxuICAgIExpc3QuZmluZF9vcHQoKGZvcm06IGZvcm0pID0+IGZvcm0uaWQgPT0gZm9ybV9pZCwgZ3JvdXAuZm9ybXMpLFxuICApO1xufTtcblxubGV0IGdldF9zZWxlY3RlZF9vcHRpb24gPSAoZ3JvdXA6IGdyb3VwLCBtb2RlbDogdCk6IGZvcm0gPT4ge1xuICBsZXQgc2VsZWN0ZWQgPVxuICAgIExpc3QuZmlsdGVyKFxuICAgICAgKGdyb3VwJzogZ3JvdXBfbW9kZWwpID0+IGdyb3VwJy5ncm91cCA9PSBncm91cC5pZCxcbiAgICAgIG1vZGVsLmdyb3VwcyxcbiAgICApO1xuICBzd2l0Y2ggKHNlbGVjdGVkLCBncm91cC5mb3Jtcykge1xuICB8IChbXSwgW2Zvcm0sIC4uLl9mc10pID0+IGZvcm1cbiAgfCAoW3NlbGVjdGVkXSwgXykgPT4gZ2V0X2Zvcm1faW5fZ3JvdXAoc2VsZWN0ZWQuc2VsZWN0ZWQsIGdyb3VwKVxuICB8IChbX2YxLCBfZjIsIC4uLl9mc10sIF8pID0+XG4gICAgcmFpc2UoXG4gICAgICBJbnZhbGlkX2FyZ3VtZW50KFxuICAgICAgICBcIkVhY2ggZ3JvdXAgc2hvdWxkIGhhdmUgb25seSBvbmUgc2VsZWN0aW9uLCBidXQgZ3JvdXAgXCJcbiAgICAgICAgKysgU2V4cC50b19zdHJpbmcoc2V4cF9vZl9ncm91cF9pZChncm91cC5pZCkpXG4gICAgICAgICsrIFwiIGhhcyBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKHNlbGVjdGVkKSlcbiAgICAgICAgKysgXCJmb3JtcyBzZWxlY3RlZFwiLFxuICAgICAgKSxcbiAgICApXG4gIHwgKF8sIFtdKSA9PlxuICAgIHJhaXNlKEludmFsaWRfYXJndW1lbnQoXCJFYWNoIGdyb3VwIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgZm9ybVwiKSlcbiAgfTtcbn07XG5cbmxldCBnZXRfb3B0aW9ucyA9IChncm91cDogZ3JvdXApOiBsaXN0KChmb3JtX2lkLCBTZWdtZW50LnQpKSA9PlxuICBpZiAoTGlzdC5sZW5ndGgoZ3JvdXAuZm9ybXMpIDwgMikge1xuICAgIFtdO1xuICB9IGVsc2Uge1xuICAgIExpc3QucmV2KFxuICAgICAgTGlzdC5tYXAoXG4gICAgICAgIChmb3JtOiBmb3JtKSA9PlxuICAgICAgICAgIChcbiAgICAgICAgICAgIGZvcm0uaWQsXG4gICAgICAgICAgICBzbmQoXG4gICAgICAgICAgICAgIE9wdFV0aWwuZ2V0X29yX3JhaXNlKFxuICAgICAgICAgICAgICAgIEludmFsaWRfYXJndW1lbnQoXG4gICAgICAgICAgICAgICAgICBcIkZvcm1zIHVzZWQgZm9yIGdyb3VwIG9wdGlvbnMgbXVzdCBzcGVjaWZ5IGV4cGFuZGFibGVcIixcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGZvcm0uZXhwYW5kYWJsZV9pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgZ3JvdXAuZm9ybXMsXG4gICAgICApLFxuICAgICk7XG4gIH07XG5cbmxldCBnZXRfZm9ybV9hbmRfb3B0aW9ucyA9XG4gICAgKGdyb3VwOiBncm91cCwgbW9kZWw6IHQpOiAoZm9ybSwgbGlzdCgoZm9ybV9pZCwgU2VnbWVudC50KSkpID0+IHtcbiAgKGdldF9zZWxlY3RlZF9vcHRpb24oZ3JvdXAsIG1vZGVsKSwgZ2V0X29wdGlvbnMoZ3JvdXApKTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5tb2R1bGUgTW9kZWwgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBtb2RlID1cbiAgICB8IFNjcmF0Y2hcbiAgICB8IERvY3VtZW50YXRpb25cbiAgICB8IEV4ZXJjaXNlcztcblxuICBsZXQgbW9kZV9vZl9zdHJpbmcgPSAoczogc3RyaW5nKTogbW9kZSA9PlxuICAgIHN3aXRjaCAocykge1xuICAgIHwgXCJTY3JhdGNoXCIgPT4gU2NyYXRjaFxuICAgIHwgXCJEb2N1bWVudGF0aW9uXCIgPT4gRG9jdW1lbnRhdGlvblxuICAgIHwgXCJFeGVyY2lzZXNcIiA9PiBFeGVyY2lzZXNcbiAgICB8IF8gPT4gZmFpbHdpdGgoXCJtb2RlX29mX3N0cmluZzogdW5rbm93biBtb2RlOlwiICsrIHMpXG4gICAgfTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9IHtcbiAgICBjYXB0aW9uczogYm9vbCxcbiAgICBzZWNvbmRhcnlfaWNvbnM6IGJvb2wsXG4gICAgY29yZTogSGF6M2xjb3JlLkNvcmVTZXR0aW5ncy50LFxuICAgIGFzeW5jX2V2YWx1YXRpb246IGJvb2wsXG4gICAgY29udGV4dF9pbnNwZWN0b3I6IGJvb2wsXG4gICAgaW5zdHJ1Y3Rvcl9tb2RlOiBib29sLFxuICAgIGJlbmNobWFyazogYm9vbCxcbiAgICBleHBsYWluVGhpczogRXhwbGFpblRoaXNNb2RlbC5TZXR0aW5ncy50LFxuICAgIG1vZGUsXG4gIH07XG5cbiAgbGV0IGZpeF9pbnN0cnVjdG9yX21vZGUgPSBzZXR0aW5ncyA9PlxuICAgIGlmIChzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgJiYgIUV4ZXJjaXNlU2V0dGluZ3Muc2hvd19pbnN0cnVjdG9yKSB7XG4gICAgICB7Li4uc2V0dGluZ3MsIGluc3RydWN0b3JfbW9kZTogZmFsc2V9O1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXR0aW5ncztcbiAgICB9O1xufTtcblxubW9kdWxlIFVwZGF0ZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIGV2YWx1YXRpb24gPVxuICAgIHwgU2hvd1JlY29yZFxuICAgIHwgU2hvd0Nhc2VDbGF1c2VzXG4gICAgfCBTaG93Rm5Cb2RpZXNcbiAgICB8IFNob3dDYXN0c1xuICAgIHwgU2hvd0ZpeHBvaW50c1xuICAgIHwgU2hvd0xvb2t1cHNcbiAgICB8IFNob3dGaWx0ZXJzXG4gICAgfCBTaG93U2V0dGluZ3NcbiAgICB8IFNob3dIaWRkZW5TdGVwcztcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBDYXB0aW9uc1xuICAgIHwgU2Vjb25kYXJ5SWNvbnNcbiAgICB8IFN0YXRpY3NcbiAgICB8IER5bmFtaWNzXG4gICAgfCBBc3Npc3RcbiAgICB8IEVsYWJvcmF0ZVxuICAgIHwgQmVuY2htYXJrXG4gICAgfCBDb250ZXh0SW5zcGVjdG9yXG4gICAgfCBJbnN0cnVjdG9yTW9kZVxuICAgIHwgRXZhbHVhdGlvbihldmFsdWF0aW9uKVxuICAgIHwgRXhwbGFpblRoaXMoRXhwbGFpblRoaXNNb2RlbC5TZXR0aW5ncy5hY3Rpb24pXG4gICAgfCBNb2RlKE1vZGVsLm1vZGUpO1xuXG4gIGxldCB1cGRhdGUgPSAoYWN0aW9uLCBzZXR0aW5nczogTW9kZWwudCk6IE1vZGVsLnQgPT5cbiAgICBzd2l0Y2ggKGFjdGlvbikge1xuICAgIHwgU3RhdGljcyA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgLi4uc2V0dGluZ3MuY29yZSxcbiAgICAgICAgICBzdGF0aWNzOiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzLFxuICAgICAgICAgIGFzc2lzdDogIXNldHRpbmdzLmNvcmUuc3RhdGljcyxcbiAgICAgICAgICBkeW5hbWljczogIXNldHRpbmdzLmNvcmUuc3RhdGljcyAmJiBzZXR0aW5ncy5jb3JlLmR5bmFtaWNzLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgRWxhYm9yYXRlID0+IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICAuLi5zZXR0aW5ncy5jb3JlLFxuICAgICAgICAgIHN0YXRpY3M6ICFzZXR0aW5ncy5jb3JlLmVsYWJvcmF0ZSB8fCBzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgZWxhYm9yYXRlOiAhc2V0dGluZ3MuY29yZS5lbGFib3JhdGUsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBEeW5hbWljcyA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBjb3JlOiB7XG4gICAgICAgICAgLi4uc2V0dGluZ3MuY29yZSxcbiAgICAgICAgICBzdGF0aWNzOiAhc2V0dGluZ3MuY29yZS5keW5hbWljcyB8fCBzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgZHluYW1pY3M6ICFzZXR0aW5ncy5jb3JlLmR5bmFtaWNzLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgQXNzaXN0ID0+IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvcmU6IHtcbiAgICAgICAgICAuLi5zZXR0aW5ncy5jb3JlLFxuICAgICAgICAgIHN0YXRpY3M6ICFzZXR0aW5ncy5jb3JlLmFzc2lzdCB8fCBzZXR0aW5ncy5jb3JlLnN0YXRpY3MsXG4gICAgICAgICAgYXNzaXN0OiAhc2V0dGluZ3MuY29yZS5hc3Npc3QsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfCBFdmFsdWF0aW9uKHUpID0+XG4gICAgICBsZXQgZXZhbHVhdGlvbiA9IHNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbjtcbiAgICAgIGxldCBldmFsdWF0aW9uOiBIYXozbGNvcmUuQ29yZVNldHRpbmdzLkV2YWx1YXRpb24udCA9XG4gICAgICAgIHN3aXRjaCAodSkge1xuICAgICAgICB8IFNob3dSZWNvcmQgPT4ge1xuICAgICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICAgIHN0ZXBwZXJfaGlzdG9yeTogIWV2YWx1YXRpb24uc3RlcHBlcl9oaXN0b3J5LFxuICAgICAgICAgIH1cbiAgICAgICAgfCBTaG93Q2FzZUNsYXVzZXMgPT4ge1xuICAgICAgICAgICAgLi4uZXZhbHVhdGlvbixcbiAgICAgICAgICAgIHNob3dfY2FzZV9jbGF1c2VzOiAhZXZhbHVhdGlvbi5zaG93X2Nhc2VfY2xhdXNlcyxcbiAgICAgICAgICB9XG4gICAgICAgIHwgU2hvd0ZuQm9kaWVzID0+IHtcbiAgICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgICBzaG93X2ZuX2JvZGllczogIWV2YWx1YXRpb24uc2hvd19mbl9ib2RpZXMsXG4gICAgICAgICAgfVxuICAgICAgICB8IFNob3dDYXN0cyA9PiB7Li4uZXZhbHVhdGlvbiwgc2hvd19jYXN0czogIWV2YWx1YXRpb24uc2hvd19jYXN0c31cbiAgICAgICAgfCBTaG93Rml4cG9pbnRzID0+IHtcbiAgICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgICBzaG93X2ZpeHBvaW50czogIWV2YWx1YXRpb24uc2hvd19maXhwb2ludHMsXG4gICAgICAgICAgfVxuICAgICAgICB8IFNob3dMb29rdXBzID0+IHtcbiAgICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgICBzaG93X2xvb2t1cF9zdGVwczogIWV2YWx1YXRpb24uc2hvd19sb29rdXBfc3RlcHMsXG4gICAgICAgICAgfVxuICAgICAgICB8IFNob3dGaWx0ZXJzID0+IHtcbiAgICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgICBzaG93X3N0ZXBwZXJfZmlsdGVyczogIWV2YWx1YXRpb24uc2hvd19zdGVwcGVyX2ZpbHRlcnMsXG4gICAgICAgICAgfVxuICAgICAgICB8IFNob3dTZXR0aW5ncyA9PiB7XG4gICAgICAgICAgICAuLi5ldmFsdWF0aW9uLFxuICAgICAgICAgICAgc2hvd19zZXR0aW5nczogIWV2YWx1YXRpb24uc2hvd19zZXR0aW5ncyxcbiAgICAgICAgICB9XG4gICAgICAgIHwgU2hvd0hpZGRlblN0ZXBzID0+IHtcbiAgICAgICAgICAgIC4uLmV2YWx1YXRpb24sXG4gICAgICAgICAgICBzaG93X2hpZGRlbl9zdGVwczogIWV2YWx1YXRpb24uc2hvd19oaWRkZW5fc3RlcHMsXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAge1xuICAgICAgICAuLi5zZXR0aW5ncyxcbiAgICAgICAgY29yZToge1xuICAgICAgICAgIC4uLnNldHRpbmdzLmNvcmUsXG4gICAgICAgICAgZXZhbHVhdGlvbixcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfCBFeHBsYWluVGhpcyhUb2dnbGVTaG93KSA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBleHBsYWluVGhpczoge1xuICAgICAgICAgIC4uLnNldHRpbmdzLmV4cGxhaW5UaGlzLFxuICAgICAgICAgIHNob3c6ICFzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgRXhwbGFpblRoaXMoVG9nZ2xlU2hvd0ZlZWRiYWNrKSA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBleHBsYWluVGhpczoge1xuICAgICAgICAgIC4uLnNldHRpbmdzLmV4cGxhaW5UaGlzLFxuICAgICAgICAgIHNob3dfZmVlZGJhY2s6ICFzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93X2ZlZWRiYWNrLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIHwgRXhwbGFpblRoaXMoU2V0SGlnaGxpZ2h0KGEpKSA9PlxuICAgICAgbGV0IGhpZ2hsaWdodDogRXhwbGFpblRoaXNNb2RlbC5TZXR0aW5ncy5oaWdobGlnaHQgPVxuICAgICAgICBzd2l0Y2ggKGEsIHNldHRpbmdzLmV4cGxhaW5UaGlzLmhpZ2hsaWdodCkge1xuICAgICAgICB8IChUb2dnbGUsIEFsbCkgPT4gTm9IaWdobGlnaHRcbiAgICAgICAgfCAoVG9nZ2xlLCBfKSA9PiBBbGxcbiAgICAgICAgfCAoSG92ZXIoXyksIEFsbCkgPT4gQWxsXG4gICAgICAgIHwgKEhvdmVyKGlkKSwgXykgPT4gT25lKGlkKVxuICAgICAgICB8IChVbnNldEhvdmVyLCBBbGwpID0+IEFsbFxuICAgICAgICB8IChVbnNldEhvdmVyLCBfKSA9PiBOb0hpZ2hsaWdodFxuICAgICAgICB9O1xuICAgICAgbGV0IGV4cGxhaW5UaGlzID0gey4uLnNldHRpbmdzLmV4cGxhaW5UaGlzLCBoaWdobGlnaHR9O1xuICAgICAgey4uLnNldHRpbmdzLCBleHBsYWluVGhpc307XG4gICAgfCBCZW5jaG1hcmsgPT4gey4uLnNldHRpbmdzLCBiZW5jaG1hcms6ICFzZXR0aW5ncy5iZW5jaG1hcmt9XG4gICAgfCBDYXB0aW9ucyA9PiB7Li4uc2V0dGluZ3MsIGNhcHRpb25zOiAhc2V0dGluZ3MuY2FwdGlvbnN9XG4gICAgfCBTZWNvbmRhcnlJY29ucyA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLFxuICAgICAgICBzZWNvbmRhcnlfaWNvbnM6ICFzZXR0aW5ncy5zZWNvbmRhcnlfaWNvbnMsXG4gICAgICB9XG4gICAgfCBDb250ZXh0SW5zcGVjdG9yID0+IHtcbiAgICAgICAgLi4uc2V0dGluZ3MsXG4gICAgICAgIGNvbnRleHRfaW5zcGVjdG9yOiAhc2V0dGluZ3MuY29udGV4dF9pbnNwZWN0b3IsXG4gICAgICB9XG4gICAgfCBJbnN0cnVjdG9yTW9kZSA9PiB7XG4gICAgICAgIC4uLnNldHRpbmdzLCAvL1RPRE9bTWF0dF06IE1ha2Ugc3VyZSBpbnN0cnVjdG9yIG1vZGUgYWN0dWFsbHkgbWFrZXMgcHJlbHVkZSByZWFkLW9ubHlcbiAgICAgICAgaW5zdHJ1Y3Rvcl9tb2RlOiAhc2V0dGluZ3MuaW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICAgfVxuICAgIHwgTW9kZShtb2RlKSA9PiB7Li4uc2V0dGluZ3MsIG1vZGV9XG4gICAgfTtcbn07XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IE1vZGVsLnQ7XG4iLCJvcGVuIEhhejNsY29yZTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBzdGF0ZSA9IEVkaXRvci50O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHBlcnNpc3RlbnRfc3RhdGUgPSBQZXJzaXN0ZW50WmlwcGVyLnQ7XG5cbmxldCBzY3JhdGNoX2tleSA9IG4gPT4gXCJzY3JhdGNoX1wiICsrIG47XG5cbmxldCBwZXJzaXN0ID0gKGVkaXRvcjogc3RhdGUpID0+IHtcbiAgUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KGVkaXRvci5zdGF0ZS56aXBwZXIpO1xufTtcblxubGV0IHVucGVyc2lzdCA9ICh6aXBwZXI6IHBlcnNpc3RlbnRfc3RhdGUpID0+IHtcbiAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHppcHBlcik7XG4gIEVkaXRvci5pbml0KHppcHBlciwgfnJlYWRfb25seT1mYWxzZSk7XG59O1xuXG5sZXQgc2VyaWFsaXplID0gKHN0YXRlOiBzdGF0ZSkgPT4ge1xuICBwZXJzaXN0KHN0YXRlKSB8PiBzZXhwX29mX3BlcnNpc3RlbnRfc3RhdGUgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbn07XG5cbmxldCBkZXNlcmlhbGl6ZSA9IChkYXRhOiBzdHJpbmcpID0+IHtcbiAgU2V4cGxpYi5TZXhwLm9mX3N0cmluZyhkYXRhKSB8PiBwZXJzaXN0ZW50X3N0YXRlX29mX3NleHAgfD4gdW5wZXJzaXN0O1xufTtcblxubGV0IGRlc2VyaWFsaXplX29wdCA9IChkYXRhOiBzdHJpbmcpID0+IHtcbiAgbGV0IHNleHAgPVxuICAgIHRyeShTb21lKFNleHBsaWIuU2V4cC5vZl9zdHJpbmcoZGF0YSkgfD4gcGVyc2lzdGVudF9zdGF0ZV9vZl9zZXhwKSkge1xuICAgIHwgXyA9PiBOb25lXG4gICAgfTtcbiAgc2V4cCB8PiBPcHRpb24ubWFwKHNleHAgPT4gc2V4cCB8PiB1bnBlcnNpc3QpO1xufTtcblxubGV0IGV4cG9ydCA9IChzdGF0ZTogc3RhdGUpID0+IHtcbiAgc3RhdGUgfD4gcGVyc2lzdCB8PiB5b2pzb25fb2ZfcGVyc2lzdGVudF9zdGF0ZTtcbn07XG5cbmxldCBpbXBvcnQgPSAoZGF0YTogc3RyaW5nKSA9PiB7XG4gIGRhdGEgfD4gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgfD4gcGVyc2lzdGVudF9zdGF0ZV9vZl95b2pzb24gfD4gdW5wZXJzaXN0O1xufTtcblxubGV0IGV4cG9ydF9pbml0ID0gKHN0YXRlOiBzdGF0ZSkgPT4ge1xuICBzdGF0ZSB8PiBwZXJzaXN0IHw+IHNob3dfcGVyc2lzdGVudF9zdGF0ZTtcbn07XG5cbmxldCBta19zdGF0aWNzID1cbiAgICAofnNldHRpbmdzOiBTZXR0aW5ncy50LCBlZGl0b3I6IEVkaXRvci50LCBjdHhfaW5pdDogQ3R4LnQpXG4gICAgOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3MgPT4ge1xuICBsZXQgdGVybSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oZWRpdG9yLnN0YXRlLnppcHBlcikgfD4gZnN0O1xuICBsZXQgaW5mb19tYXAgPSBJbnRlcmZhY2UuU3RhdGljcy5ta19tYXBfY3R4KHNldHRpbmdzLmNvcmUsIGN0eF9pbml0LCB0ZXJtKTtcbiAgbGV0IGVycm9yX2lkcyA9XG4gICAgU3RhdGljcy5NYXAuZXJyb3JfaWRzKGVkaXRvci5zdGF0ZS5tZXRhLnRlcm1fcmFuZ2VzLCBpbmZvX21hcCk7XG4gIHt0ZXJtLCBpbmZvX21hcCwgZXJyb3JfaWRzfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgc2NyYXRjaCA9IChcbiAgaW50LFxuICBsaXN0KFNjcmF0Y2hTbGlkZS5wZXJzaXN0ZW50X3N0YXRlKSxcbiAgbGlzdCgoc3RyaW5nLCBNb2RlbFJlc3VsdC5wZXJzaXN0ZW50KSksXG4pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGRvY3VtZW50YXRpb24gPSAoXG4gIHN0cmluZyxcbiAgbGlzdCgoc3RyaW5nLCBTY3JhdGNoU2xpZGUucGVyc2lzdGVudF9zdGF0ZSkpLFxuICBbQGRlZmF1bHQgW11dIGxpc3QoKHN0cmluZywgTW9kZWxSZXN1bHQucGVyc2lzdGVudCkpLFxuKTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0ge1xuICBzZXR0aW5nczogU2V0dGluZ3MudCxcbiAgc2NyYXRjaCxcbiAgZG9jdW1lbnRhdGlvbixcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFV0aWw7XG5vcGVuIE9wdFV0aWwuU3ludGF4O1xuXG5tb2R1bGUgU2VsZWN0aW9uID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgY2VsbCA9XG4gICAgfCBNYWluRWRpdG9yXG4gICAgfCBSZXN1bHQoTW9kZWxSZXN1bHQuc2VsZWN0aW9uKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBTY3JhdGNoKGNlbGwpXG4gICAgfCBFeGVyY2lzZXMoRXhlcmNpc2UucG9zLCBjZWxsKTtcbn07XG5cbm1vZHVsZSBBY3Rpb24gPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBjZWxsID1cbiAgICB8IE1haW5FZGl0b3IoQWN0aW9uLnQpXG4gICAgfCBSZXN1bHQoTW9kZWxSZXN1bHQuYWN0aW9uKTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgdCA9XG4gICAgfCBTY3JhdGNoKGNlbGwpXG4gICAgfCBEb2N1bWVudGF0aW9uKGNlbGwpXG4gICAgfCBFeGVyY2lzZXMoRXhlcmNpc2UucG9zLCBjZWxsKTtcblxuICBtb2R1bGUgRmFpbHVyZSA9IEFjdGlvbi5GYWlsdXJlO1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID1cbiAgfCBTY3JhdGNoKGludCwgbGlzdChTY3JhdGNoU2xpZGUuc3RhdGUpKVxuICB8IERvY3VtZW50YXRpb24oc3RyaW5nLCBsaXN0KChzdHJpbmcsIFNjcmF0Y2hTbGlkZS5zdGF0ZSkpKVxuICB8IEV4ZXJjaXNlcyhpbnQsIGxpc3QoRXhlcmNpc2Uuc3BlYyksIEV4ZXJjaXNlLnN0YXRlKTtcblxubGV0IHVwZGF0ZV9zY3JhdGNoX3N0YXRlID1cbiAgICAoZjogU2NyYXRjaFNsaWRlLnN0YXRlID0+IFNjcmF0Y2hTbGlkZS5zdGF0ZSwgZWRpdG9yczogdCk6IHQgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgU2NyYXRjaChuLCBzbGlkZXMpID0+IFNjcmF0Y2gobiwgTGlzdFV0aWwubWFwX250aChuLCBmLCBzbGlkZXMpKVxuICB8IERvY3VtZW50YXRpb24oc3RyLCBzbGlkZXMpID0+XG4gICAgRG9jdW1lbnRhdGlvbihcbiAgICAgIHN0cixcbiAgICAgIExpc3RVdGlsLnVwZGF0ZV9hc3NvYygoc3RyLCBmKExpc3QuYXNzb2Moc3RyLCBzbGlkZXMpKSksIHNsaWRlcyksXG4gICAgKVxuICAvLyBUT0RPW01hdHRdOiB1cGRhdGUgZXhlcmNpc2VzXG4gIHwgRXhlcmNpc2VzKF8pID0+IGVkaXRvcnNcbiAgfTtcblxubGV0IGdldF9jdHhfaW5pdCA9ICh+c2V0dGluZ3MgYXMgXzogU2V0dGluZ3MudCwgZWRpdG9yczogdCk6IEN0eC50ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goXylcbiAgfCBFeGVyY2lzZXMoXylcbiAgfCBEb2N1bWVudGF0aW9uKF8pID0+IEJ1aWx0aW5zLmN0eF9pbml0XG4gIH07XG5cbmxldCBnZXRfZW52X2luaXQgPSAofnNldHRpbmdzIGFzIF86IFNldHRpbmdzLnQsIGVkaXRvcnM6IHQpOiBFbnZpcm9ubWVudC50ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goXylcbiAgfCBFeGVyY2lzZXMoXylcbiAgfCBEb2N1bWVudGF0aW9uKF8pID0+IEJ1aWx0aW5zLmVudl9pbml0XG4gIH07XG5cbmxldCBta19zdGF0aWNzID0gKH5zZXR0aW5nczogU2V0dGluZ3MudCwgZWRpdG9yczogdCk6IENhY2hlZFN0YXRpY3MudCA9PiB7XG4gIGxldCBjdHhfaW5pdCA9IGdldF9jdHhfaW5pdCh+c2V0dGluZ3MsIGVkaXRvcnMpO1xuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBfIHdoZW4gIXNldHRpbmdzLmNvcmUuc3RhdGljcyA9PiBDYWNoZWRTdGF0aWNzLm1rKFtdKVxuICB8IFNjcmF0Y2goaWR4LCBzbGlkZXMpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShzdHJpbmdfb2ZfaW50KGlkeCkpO1xuICAgIGxldCBlZGl0b3IgPSBMaXN0Lm50aChzbGlkZXMsIGlkeCk7XG4gICAgWyhrZXksIFNjcmF0Y2hTbGlkZS5ta19zdGF0aWNzKH5zZXR0aW5ncywgZWRpdG9yLCBjdHhfaW5pdCkpXVxuICAgIHw+IENhY2hlZFN0YXRpY3MubWs7XG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICBsZXQgZWRpdG9yID0gTGlzdC5hc3NvYyhuYW1lLCBzbGlkZXMpO1xuICAgIFsoa2V5LCBTY3JhdGNoU2xpZGUubWtfc3RhdGljcyh+c2V0dGluZ3MsIGVkaXRvciwgY3R4X2luaXQpKV1cbiAgICB8PiBDYWNoZWRTdGF0aWNzLm1rO1xuICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgPT5cbiAgICBFeGVyY2lzZS5ta19zdGF0aWNzKHNldHRpbmdzLmNvcmUsIGV4ZXJjaXNlKSB8PiBDYWNoZWRTdGF0aWNzLm1rXG4gIH07XG59O1xuXG5sZXQgbG9va3VwX3N0YXRpY3MgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIH5zZWxlY3Rpb246IFNlbGVjdGlvbi50LCB+c3RhdGljcywgZWRpdG9yczogdClcbiAgICA6IENhY2hlZFN0YXRpY3Muc3RhdGljcyA9PlxuICBzd2l0Y2ggKGVkaXRvcnMsIHNlbGVjdGlvbikge1xuICB8IF8gd2hlbiAhc2V0dGluZ3MuY29yZS5zdGF0aWNzID0+IENhY2hlZFN0YXRpY3MuZW1wdHlfc3RhdGljc1xuICB8IChTY3JhdGNoKGlkeCwgXyksIFNjcmF0Y2goXykpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShzdHJpbmdfb2ZfaW50KGlkeCkpO1xuICAgIENhY2hlZFN0YXRpY3MubG9va3VwKHN0YXRpY3MsIGtleSk7XG4gIHwgKERvY3VtZW50YXRpb24obmFtZSwgXyksIFNjcmF0Y2goXykpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICBDYWNoZWRTdGF0aWNzLmxvb2t1cChzdGF0aWNzLCBrZXkpO1xuICB8IChFeGVyY2lzZXMoXyksIEV4ZXJjaXNlcyhwb3MsIF8pKSA9PlxuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfZm9yX3N0YXRpY3MocG9zKTtcbiAgICBDYWNoZWRTdGF0aWNzLmxvb2t1cChzdGF0aWNzLCBrZXkpO1xuICB8IChFeGVyY2lzZXMoXyksIF8pXG4gIHwgKERvY3VtZW50YXRpb24oXyksIF8pXG4gIHwgKFNjcmF0Y2goXyksIF8pID0+IENhY2hlZFN0YXRpY3MuZW1wdHlfc3RhdGljc1xuICB9O1xuXG4vKiBFYWNoIG1vZGUgKGUuZy4gU2NyYXRjaCwgU2Nob29sKSByZXF1aXJlc1xuICAgZWxhYm9yYXRpbmcgb24gc29tZSBudW1iZXIgb2YgZXhwcmVzc2lvbnNcbiAgIHRoYXQgYXJlIHNwbGljZWQgdG9nZXRoZXIgZnJvbSB0aGUgZWRpdG9yc1xuICAgaW4gdGhlIG1vZGUuIEVhY2ggZWxhYm9yYXRlZCBleHByZXNzaW9uXG4gICBpcyBnaXZlbiBhIGtleSBmb3IgbGF0ZXIgbG9va3VwIGJ5IHRoZSBtb2RlLlxuXG4gICBVc2VkIGluIHRoZSBVcGRhdGUgbW9kdWxlICovXG5sZXQgZ2V0X3NwbGljZWRfZWxhYnMgPVxuICAgICh+c2V0dGluZ3M6IFNldHRpbmdzLnQsIHN0YXRpY3MsIGVkaXRvcnM6IHQpXG4gICAgOiBsaXN0KChNb2RlbFJlc3VsdHMua2V5LCBFbGFib3JhdG9yLkVsYWJvcmF0aW9uLnQpKSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKGlkeCwgXykgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KGlkeCB8PiBzdHJpbmdfb2ZfaW50KTtcbiAgICBsZXQgQ2FjaGVkU3RhdGljcy57dGVybSwgaW5mb19tYXAsIF99ID1cbiAgICAgIGxvb2t1cF9zdGF0aWNzKFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH5zZWxlY3Rpb249U2NyYXRjaChNYWluRWRpdG9yKSxcbiAgICAgICAgfnN0YXRpY3MsXG4gICAgICAgIGVkaXRvcnMsXG4gICAgICApO1xuICAgIGxldCBkID0gSW50ZXJmYWNlLmVsYWJvcmF0ZSh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSwgaW5mb19tYXAsIHRlcm0pO1xuICAgIFsoa2V5LCB7ZDogZH0pXTtcbiAgfCBEb2N1bWVudGF0aW9uKG5hbWUsIF8pID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICBsZXQgQ2FjaGVkU3RhdGljcy57dGVybSwgaW5mb19tYXAsIF99ID1cbiAgICAgIGxvb2t1cF9zdGF0aWNzKFxuICAgICAgICB+c2V0dGluZ3MsXG4gICAgICAgIH5zZWxlY3Rpb249U2NyYXRjaChNYWluRWRpdG9yKSxcbiAgICAgICAgfnN0YXRpY3MsXG4gICAgICAgIGVkaXRvcnMsXG4gICAgICApO1xuICAgIGxldCBkID0gSW50ZXJmYWNlLmVsYWJvcmF0ZSh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSwgaW5mb19tYXAsIHRlcm0pO1xuICAgIFsoa2V5LCB7ZDogZH0pXTtcbiAgfCBFeGVyY2lzZXMoXywgXywgZXhlcmNpc2UpID0+XG4gICAgRXhlcmNpc2Uuc3BsaWNlZF9lbGFicyhzZXR0aW5ncy5jb3JlLCBleGVyY2lzZSlcbiAgfTtcblxubGV0IHNldF9pbnN0cnVjdG9yX21vZGUgPSAoZWRpdG9yczogdCwgaW5zdHJ1Y3Rvcl9tb2RlOiBib29sKTogdCA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBlZGl0b3JzXG4gIHwgRXhlcmNpc2VzKG4sIHNwZWNzLCBleGVyY2lzZSkgPT5cbiAgICBFeGVyY2lzZXMoXG4gICAgICBuLFxuICAgICAgc3BlY3MsXG4gICAgICBFeGVyY2lzZS5zZXRfaW5zdHJ1Y3Rvcl9tb2RlKGV4ZXJjaXNlLCBpbnN0cnVjdG9yX21vZGUpLFxuICAgIClcbiAgfTtcblxubGV0IHJlc2V0X250aF9zbGlkZSA9IChuLCBzbGlkZXMpID0+IHtcbiAgbGV0IChfLCBpbml0X2VkaXRvcnMsIF8pID0gSW5pdC5zdGFydHVwLnNjcmF0Y2g7XG4gIGxldCBkYXRhID0gTGlzdC5udGgoaW5pdF9lZGl0b3JzLCBuKTtcbiAgbGV0IGluaXRfbnRoID0gU2NyYXRjaFNsaWRlLnVucGVyc2lzdChkYXRhKTtcbiAgVXRpbC5MaXN0VXRpbC5wdXRfbnRoKG4sIGluaXRfbnRoLCBzbGlkZXMpO1xufTtcblxubGV0IHJlc2V0X25hbWVkX3NsaWRlID0gKG5hbWUsIHNsaWRlcykgPT4ge1xuICBsZXQgKF8sIGluaXRfZWRpdG9ycywgXykgPSBJbml0LnN0YXJ0dXAuZG9jdW1lbnRhdGlvbjtcbiAgbGV0IGRhdGEgPSBMaXN0LmFzc29jKG5hbWUsIGluaXRfZWRpdG9ycyk7XG4gIGxldCBpbml0X25hbWUgPSBTY3JhdGNoU2xpZGUudW5wZXJzaXN0KGRhdGEpO1xuICBzbGlkZXMgfD4gTGlzdC5yZW1vdmVfYXNzb2MobmFtZSkgfD4gTGlzdC5jb25zKChuYW1lLCBpbml0X25hbWUpKTtcbn07XG5cbmxldCByZXNldF9jdXJyZW50ID0gKGVkaXRvcnM6IHQsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpOiB0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2gobiwgc2xpZGVzKSA9PiBTY3JhdGNoKG4sIHJlc2V0X250aF9zbGlkZShuLCBzbGlkZXMpKVxuICB8IERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSA9PlxuICAgIERvY3VtZW50YXRpb24obmFtZSwgcmVzZXRfbmFtZWRfc2xpZGUobmFtZSwgc2xpZGVzKSlcbiAgfCBFeGVyY2lzZXMobiwgc3BlY3MsIF8pID0+XG4gICAgRXhlcmNpc2VzKFxuICAgICAgbixcbiAgICAgIHNwZWNzLFxuICAgICAgTGlzdC5udGgoc3BlY3MsIG4pIHw+IEV4ZXJjaXNlLnN0YXRlX29mX3NwZWMofmluc3RydWN0b3JfbW9kZSksXG4gICAgKVxuICB9O1xuXG5sZXQgaW1wb3J0X2N1cnJlbnQgPSAoZWRpdG9yczogdCwgZGF0YTogb3B0aW9uKHN0cmluZykpOiB0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IERvY3VtZW50YXRpb24oXylcbiAgfCBFeGVyY2lzZXMoXykgPT4gZmFpbHdpdGgoXCJpbXBvc3NpYmxlXCIpXG4gIHwgU2NyYXRjaChpZHgsIHNsaWRlcykgPT5cbiAgICBzd2l0Y2ggKGRhdGEpIHtcbiAgICB8IE5vbmUgPT4gZWRpdG9yc1xuICAgIHwgU29tZShkYXRhKSA9PlxuICAgICAgbGV0IHN0YXRlID0gU2NyYXRjaFNsaWRlLmltcG9ydChkYXRhKTtcbiAgICAgIGxldCBzbGlkZXMgPSBVdGlsLkxpc3RVdGlsLnB1dF9udGgoaWR4LCBzdGF0ZSwgc2xpZGVzKTtcbiAgICAgIFNjcmF0Y2goaWR4LCBzbGlkZXMpO1xuICAgIH1cbiAgfTtcblxubGV0IHN3aXRjaF9leGFtcGxlX3NsaWRlID0gKGVkaXRvcnM6IHQsIG5hbWU6IHN0cmluZyk6IG9wdGlvbih0KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRXhlcmNpc2VzKF8pID0+IE5vbmVcbiAgfCBEb2N1bWVudGF0aW9uKGN1ciwgc2xpZGVzKVxuICAgICAgd2hlbiAhTGlzdC5tZW1fYXNzb2MobmFtZSwgc2xpZGVzKSB8fCBjdXIgPT0gbmFtZSA9PlxuICAgIE5vbmVcbiAgfCBEb2N1bWVudGF0aW9uKF8sIHNsaWRlcykgPT4gU29tZShEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcykpXG4gIH07XG5cbmxldCBnZXRfc2VsZWN0ZWRfZWRpdG9yID1cbiAgICAofnNlbGVjdGlvbjogU2VsZWN0aW9uLnQsIGVkaXRvcnM6IHQsIG1vZGVsX3Jlc3VsdHM6IE1vZGVsUmVzdWx0cy50KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMsIHNlbGVjdGlvbikge1xuICB8IChEb2N1bWVudGF0aW9uKG5hbWUsIHNsaWRlcyksIFNjcmF0Y2goTWFpbkVkaXRvcikpID0+XG4gICAgTGlzdC5hc3NvY19vcHQobmFtZSwgc2xpZGVzKVxuICB8IChEb2N1bWVudGF0aW9uKG4sIF8pLCBTY3JhdGNoKFJlc3VsdChzZWxlY3Rpb24pKSkgPT5cbiAgICBsZXQga2V5ID0gU2NyYXRjaFNsaWRlLnNjcmF0Y2hfa2V5KG4pO1xuICAgIGxldCogcmVzdWx0ID0gTW9kZWxSZXN1bHRzLmxvb2t1cChtb2RlbF9yZXN1bHRzLCBrZXkpO1xuICAgIE1vZGVsUmVzdWx0LmdldF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgcmVzdWx0KTtcbiAgfCAoRG9jdW1lbnRhdGlvbihfKSwgXykgPT4gTm9uZVxuICB8IChTY3JhdGNoKGlkeCwgc2xpZGVzKSwgU2NyYXRjaChNYWluRWRpdG9yKSkgPT5cbiAgICBMaXN0Lm50aF9vcHQoc2xpZGVzLCBpZHgpXG4gIHwgKFNjcmF0Y2gobiwgXyksIFNjcmF0Y2goUmVzdWx0KHNlbGVjdGlvbikpKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkoc3RyaW5nX29mX2ludChuKSk7XG4gICAgbGV0KiByZXN1bHQgPSBNb2RlbFJlc3VsdHMubG9va3VwKG1vZGVsX3Jlc3VsdHMsIGtleSk7XG4gICAgTW9kZWxSZXN1bHQuZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCByZXN1bHQpO1xuICB8IChTY3JhdGNoKF8pLCBfKSA9PiBOb25lXG4gIHwgKEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSksIEV4ZXJjaXNlcyhzZWxlY3Rpb24sIE1haW5FZGl0b3IpKSA9PlxuICAgIFNvbWUoRXhlcmNpc2UubWFpbl9lZGl0b3Jfb2Zfc3RhdGUofnNlbGVjdGlvbiwgZXhlcmNpc2UpKVxuICB8IChFeGVyY2lzZXMoXyksIEV4ZXJjaXNlcyhwb3MsIFJlc3VsdChzZWxlY3Rpb24pKSkgPT5cbiAgICBsZXQqIHJlc3VsdCA9XG4gICAgICBNb2RlbFJlc3VsdHMubG9va3VwKG1vZGVsX3Jlc3VsdHMsIEV4ZXJjaXNlLmtleV9mb3Jfc3RhdGljcyhwb3MpKTtcbiAgICBNb2RlbFJlc3VsdC5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHJlc3VsdCk7XG4gIHwgKEV4ZXJjaXNlcyhfKSwgXykgPT4gTm9uZVxuICB9O1xuXG5sZXQgcHV0X3NlbGVjdGVkX2VkaXRvciA9XG4gICAgKFxuICAgICAgfnNlbGVjdGlvbjogU2VsZWN0aW9uLnQsXG4gICAgICBlZGl0b3JzOiB0LFxuICAgICAgbW9kZWxfcmVzdWx0czogTW9kZWxSZXN1bHRzLnQsXG4gICAgICBlZGl0b3I6IEVkaXRvci50LFxuICAgIClcbiAgICA6ICh0LCBNb2RlbFJlc3VsdHMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzLCBzZWxlY3Rpb24pIHtcbiAgfCAoRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpLCBTY3JhdGNoKE1haW5FZGl0b3IpKSA9PlxuICAgIGxldCBzbGlkZXMgPSBMaXN0VXRpbC51cGRhdGVfYXNzb2MoKG5hbWUsIGVkaXRvciksIHNsaWRlcyk7XG4gICAgKERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSwgbW9kZWxfcmVzdWx0cyk7XG4gIHwgKERvY3VtZW50YXRpb24obiwgXyksIFNjcmF0Y2goUmVzdWx0KHNlbGVjdGlvbikpKSA9PlxuICAgIGxldCBrZXkgPSBTY3JhdGNoU2xpZGUuc2NyYXRjaF9rZXkobik7XG4gICAgbGV0IHJlc3VsdHMgPSB7XG4gICAgICBsZXQrIHJlc3VsdCA9IE1vZGVsUmVzdWx0cy5sb29rdXAobW9kZWxfcmVzdWx0cywga2V5KTtcbiAgICAgIGxldCByZXN1bHQgPVxuICAgICAgICBNb2RlbFJlc3VsdC5wdXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIHJlc3VsdCwgZWRpdG9yKTtcbiAgICAgIE1vZGVsUmVzdWx0cy5wdXRfcmVzdWx0KGtleSwgcmVzdWx0LCBtb2RlbF9yZXN1bHRzKTtcbiAgICB9O1xuICAgIHN3aXRjaCAocmVzdWx0cykge1xuICAgIHwgU29tZShyZXN1bHRzKSA9PiAoZWRpdG9ycywgcmVzdWx0cylcbiAgICB8IE5vbmUgPT4gKGVkaXRvcnMsIG1vZGVsX3Jlc3VsdHMpXG4gICAgfTtcbiAgfCAoRG9jdW1lbnRhdGlvbihfKSwgXykgPT4gKGVkaXRvcnMsIG1vZGVsX3Jlc3VsdHMpXG4gIHwgKFNjcmF0Y2goaWR4LCBzbGlkZXMpLCBTY3JhdGNoKE1haW5FZGl0b3IpKSA9PlxuICAgIGxldCBzbGlkZXMgPSBMaXN0VXRpbC5tYXBfbnRoKGlkeCwgXyA9PiBlZGl0b3IsIHNsaWRlcyk7XG4gICAgKFNjcmF0Y2goaWR4LCBzbGlkZXMpLCBtb2RlbF9yZXN1bHRzKTtcbiAgfCAoU2NyYXRjaChuLCBfKSwgU2NyYXRjaChSZXN1bHQoc2VsZWN0aW9uKSkpID0+XG4gICAgbGV0IGtleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShzdHJpbmdfb2ZfaW50KG4pKTtcbiAgICBsZXQgcmVzdWx0cyA9IHtcbiAgICAgIGxldCsgcmVzdWx0ID0gTW9kZWxSZXN1bHRzLmxvb2t1cChtb2RlbF9yZXN1bHRzLCBrZXkpO1xuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIE1vZGVsUmVzdWx0LnB1dF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgcmVzdWx0LCBlZGl0b3IpO1xuICAgICAgTW9kZWxSZXN1bHRzLnB1dF9yZXN1bHQoa2V5LCByZXN1bHQsIG1vZGVsX3Jlc3VsdHMpO1xuICAgIH07XG4gICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgfCBTb21lKHJlc3VsdHMpID0+IChlZGl0b3JzLCByZXN1bHRzKVxuICAgIHwgTm9uZSA9PiAoZWRpdG9ycywgbW9kZWxfcmVzdWx0cylcbiAgICB9O1xuICB8IChTY3JhdGNoKF8pLCBfKSA9PiAoZWRpdG9ycywgbW9kZWxfcmVzdWx0cylcbiAgfCAoRXhlcmNpc2VzKG4sIHNwZWMsIGV4ZXJjaXNlKSwgRXhlcmNpc2VzKHBvcywgTWFpbkVkaXRvcikpID0+XG4gICAgbGV0IGV4ZXJjaXNlID0gRXhlcmNpc2UucHV0X21haW5fZWRpdG9yKH5zZWxlY3Rpb249cG9zLCBleGVyY2lzZSwgZWRpdG9yKTtcbiAgICAoRXhlcmNpc2VzKG4sIHNwZWMsIGV4ZXJjaXNlKSwgbW9kZWxfcmVzdWx0cyk7XG4gIHwgKEV4ZXJjaXNlcyhfKSwgRXhlcmNpc2VzKHBvcywgUmVzdWx0KHNlbGVjdGlvbikpKSA9PlxuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfZm9yX3N0YXRpY3MocG9zKTtcbiAgICBsZXQgcmVzdWx0cyA9IHtcbiAgICAgIGxldCsgcmVzdWx0ID0gTW9kZWxSZXN1bHRzLmxvb2t1cChtb2RlbF9yZXN1bHRzLCBrZXkpO1xuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIE1vZGVsUmVzdWx0LnB1dF9zZWxlY3RlZF9lZGl0b3IofnNlbGVjdGlvbiwgcmVzdWx0LCBlZGl0b3IpO1xuICAgICAgTW9kZWxSZXN1bHRzLnB1dF9yZXN1bHQoa2V5LCByZXN1bHQsIG1vZGVsX3Jlc3VsdHMpO1xuICAgIH07XG4gICAgc3dpdGNoIChyZXN1bHRzKSB7XG4gICAgfCBTb21lKHJlc3VsdHMpID0+IChlZGl0b3JzLCByZXN1bHRzKVxuICAgIHwgTm9uZSA9PiAoZWRpdG9ycywgbW9kZWxfcmVzdWx0cylcbiAgICB9O1xuICB8IChFeGVyY2lzZXMoXyksIF8pID0+IChlZGl0b3JzLCBtb2RlbF9yZXN1bHRzKVxuICB9O1xuXG5sZXQgdXBkYXRlX3NlbGVjdGVkX2VkaXRvciA9XG4gICAgKFxuICAgICAgfnNlbGVjdGlvbjogb3B0aW9uKFNlbGVjdGlvbi50KSxcbiAgICAgIGY6IEVkaXRvci50ID0+IFJlc3VsdC50KEVkaXRvci50LCBBY3Rpb24uRmFpbHVyZS50KSxcbiAgICAgIGVkaXRvcnM6IHQsXG4gICAgICByZXN1bHRzOiBNb2RlbFJlc3VsdHMudCxcbiAgICApXG4gICAgOiBSZXN1bHQudCgodCwgTW9kZWxSZXN1bHRzLnQpLCBBY3Rpb24uRmFpbHVyZS50KSA9PiB7XG4gIHN3aXRjaCAoc2VsZWN0aW9uKSB7XG4gIHwgTm9uZSA9PiBPaygoZWRpdG9ycywgcmVzdWx0cykpXG4gIHwgU29tZShzZWxlY3Rpb24pID0+XG4gICAgc3dpdGNoIChnZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIGVkaXRvcnMsIHJlc3VsdHMpKSB7XG4gICAgfCBOb25lID0+IE9rKChlZGl0b3JzLCByZXN1bHRzKSlcbiAgICB8IFNvbWUoZWRpdG9yKSA9PlxuICAgICAgc3dpdGNoIChmKGVkaXRvcikpIHtcbiAgICAgIHwgT2soZWRpdG9yKSA9PlxuICAgICAgICBsZXQgKGVkaXRvcnMsIHJlc3VsdHMpID1cbiAgICAgICAgICBwdXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIGVkaXRvcnMsIHJlc3VsdHMsIGVkaXRvcik7XG4gICAgICAgIE9rKChlZGl0b3JzLCByZXN1bHRzKSk7XG4gICAgICB8IEVycm9yKGUpID0+IEVycm9yKGUpXG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxubGV0IGdldF9jdXJzb3JfaW5mbyA9XG4gICAgKFxuICAgICAgfnNlbGVjdGlvbjogb3B0aW9uKFNlbGVjdGlvbi50KSxcbiAgICAgIH5zZXR0aW5ncyxcbiAgICAgIGVkaXRvcnM6IHQsXG4gICAgICBtb2RlbF9yZXN1bHRzOiBNb2RlbFJlc3VsdHMudCxcbiAgICAgIHN0YXRpY3M6IENhY2hlZFN0YXRpY3MudCxcbiAgICApID0+IHtcbiAgbGV0KiBzZWxlY3Rpb24gPSBzZWxlY3Rpb247XG4gIGxldCBzdGF0aWNzID0gbG9va3VwX3N0YXRpY3MofnNldHRpbmdzLCB+c2VsZWN0aW9uLCB+c3RhdGljcywgZWRpdG9ycyk7XG4gIGxldCogZWRpdG9yID0gZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCBlZGl0b3JzLCBtb2RlbF9yZXN1bHRzKTtcbiAgSW5kaWNhdGVkLmNpX29mKGVkaXRvci5zdGF0ZS56aXBwZXIsIHN0YXRpY3MuaW5mb19tYXApO1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhwbGFpblRoaXNNb2RlbDtcbm9wZW4gVXRpbDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB1cGRhdGUgPVxuICB8IFNwZWNpZmljaXR5T3Blbihib29sKVxuICB8IFRvZ2dsZUV4cGxhbmF0aW9uRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGZlZWRiYWNrX29wdGlvbilcbiAgfCBUb2dnbGVFeGFtcGxlRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGV4YW1wbGVfaWQsIGZlZWRiYWNrX29wdGlvbilcbiAgfCBVcGRhdGVHcm91cFNlbGVjdGlvbihncm91cF9pZCwgZm9ybV9pZCk7XG5cbmxldCBzZXRfdXBkYXRlID1cbiAgICAoZXhwbGFpblRoaXNNb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LCB1OiB1cGRhdGUpOiBFeHBsYWluVGhpc01vZGVsLnQgPT4ge1xuICBzd2l0Y2ggKHUpIHtcbiAgfCBTcGVjaWZpY2l0eU9wZW4oYikgPT4gey4uLmV4cGxhaW5UaGlzTW9kZWwsIHNwZWNpZmljaXR5X29wZW46IGJ9XG4gIHwgVG9nZ2xlRXhwbGFuYXRpb25GZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgZmVlZGJhY2tfb3B0aW9uKSA9PlxuICAgIGxldCAocHJlLCBmb3JtLCBwb3N0KSA9XG4gICAgICBMaXN0VXRpbC5zcGxpdChleHBsYWluVGhpc01vZGVsLmZvcm1zLCBmID0+XG4gICAgICAgIGYuZm9ybSA9PSBmb3JtX2lkICYmIGYuZ3JvdXAgPT0gZ3JvdXBfaWRcbiAgICAgICk7XG4gICAgbGV0IGZvcm0gPVxuICAgICAgc3dpdGNoIChmb3JtKSB7XG4gICAgICB8IFNvbWUoZm9ybSkgPT5cbiAgICAgICAgbGV0IGZlZWRiYWNrID1cbiAgICAgICAgICBzd2l0Y2ggKGZvcm0uZXhwbGFuYXRpb25fZmVlZGJhY2ssIGZlZWRiYWNrX29wdGlvbikge1xuICAgICAgICAgIHwgKFNvbWUoVGh1bWJzVXApLCBUaHVtYnNEb3duKVxuICAgICAgICAgIHwgKFNvbWUoVGh1bWJzRG93biksIFRodW1ic1VwKVxuICAgICAgICAgIHwgKE5vbmUsIF8pID0+IFNvbWUoZmVlZGJhY2tfb3B0aW9uKVxuICAgICAgICAgIHwgKFNvbWUoVGh1bWJzVXApLCBUaHVtYnNVcClcbiAgICAgICAgICB8IChTb21lKFRodW1ic0Rvd24pLCBUaHVtYnNEb3duKSA9PiBOb25lXG4gICAgICAgICAgfTtcbiAgICAgICAgey4uLmZvcm0sIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBmZWVkYmFja307XG4gICAgICB8IE5vbmUgPT4ge1xuICAgICAgICAgIGdyb3VwOiBncm91cF9pZCxcbiAgICAgICAgICBmb3JtOiBmb3JtX2lkLFxuICAgICAgICAgIGV4cGxhbmF0aW9uX2ZlZWRiYWNrOiBTb21lKGZlZWRiYWNrX29wdGlvbiksXG4gICAgICAgICAgZXhhbXBsZXM6IFtdLFxuICAgICAgICB9XG4gICAgICB9O1xuICAgIHsuLi5leHBsYWluVGhpc01vZGVsLCBmb3JtczogcHJlIEAgW2Zvcm1dIEAgcG9zdH07XG4gIHwgVG9nZ2xlRXhhbXBsZUZlZWRiYWNrKGdyb3VwX2lkLCBmb3JtX2lkLCBleGFtcGxlX2lkLCBmZWVkYmFja19vcHRpb24pID0+XG4gICAgbGV0IChwcmVfZm9ybSwgZm9ybSwgcG9zdF9mb3JtKSA9XG4gICAgICBMaXN0VXRpbC5zcGxpdChleHBsYWluVGhpc01vZGVsLmZvcm1zLCBmID0+XG4gICAgICAgIGYuZm9ybSA9PSBmb3JtX2lkICYmIGYuZ3JvdXAgPT0gZ3JvdXBfaWRcbiAgICAgICk7XG4gICAgbGV0IGZvcm06IGZvcm1fbW9kZWwgPVxuICAgICAgc3dpdGNoIChmb3JtKSB7XG4gICAgICB8IFNvbWUoZm9ybSkgPT5cbiAgICAgICAgbGV0IChwcmVfZXhhbXBsZSwgZXhhbXBsZSwgcG9zdF9leGFtcGxlKSA9XG4gICAgICAgICAgTGlzdFV0aWwuc3BsaXQoZm9ybS5leGFtcGxlcywgZSA9PiBlLnN1Yl9pZCA9PSBleGFtcGxlX2lkKTtcbiAgICAgICAgbGV0IGV4YW1wbGVzOiBsaXN0KGV4YW1wbGVfbW9kZWwpID1cbiAgICAgICAgICBzd2l0Y2ggKGV4YW1wbGUpIHtcbiAgICAgICAgICB8IFNvbWUoZXhhbXBsZSkgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoZXhhbXBsZS5mZWVkYmFjaywgZmVlZGJhY2tfb3B0aW9uKSB7XG4gICAgICAgICAgICB8IChUaHVtYnNVcCwgVGh1bWJzRG93bilcbiAgICAgICAgICAgIHwgKFRodW1ic0Rvd24sIFRodW1ic1VwKSA9PlxuICAgICAgICAgICAgICBwcmVfZXhhbXBsZVxuICAgICAgICAgICAgICBAIFt7Li4uZXhhbXBsZSwgZmVlZGJhY2s6IGZlZWRiYWNrX29wdGlvbn1dXG4gICAgICAgICAgICAgIEAgcG9zdF9leGFtcGxlXG4gICAgICAgICAgICB8IChUaHVtYnNVcCwgVGh1bWJzVXApXG4gICAgICAgICAgICB8IChUaHVtYnNEb3duLCBUaHVtYnNEb3duKSA9PiBwcmVfZXhhbXBsZSBAIHBvc3RfZXhhbXBsZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgICAgcHJlX2V4YW1wbGVcbiAgICAgICAgICAgIEAgW3tzdWJfaWQ6IGV4YW1wbGVfaWQsIGZlZWRiYWNrOiBmZWVkYmFja19vcHRpb259XVxuICAgICAgICAgICAgQCBwb3N0X2V4YW1wbGVcbiAgICAgICAgICB9O1xuICAgICAgICB7Li4uZm9ybSwgZXhhbXBsZXN9O1xuICAgICAgfCBOb25lID0+IHtcbiAgICAgICAgICBncm91cDogZ3JvdXBfaWQsXG4gICAgICAgICAgZm9ybTogZm9ybV9pZCxcbiAgICAgICAgICBleHBsYW5hdGlvbl9mZWVkYmFjazogTm9uZSxcbiAgICAgICAgICBleGFtcGxlczogW3tzdWJfaWQ6IGV4YW1wbGVfaWQsIGZlZWRiYWNrOiBmZWVkYmFja19vcHRpb259XSxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB7Li4uZXhwbGFpblRoaXNNb2RlbCwgZm9ybXM6IHByZV9mb3JtIEAgW2Zvcm1dIEAgcG9zdF9mb3JtfTtcbiAgfCBVcGRhdGVHcm91cFNlbGVjdGlvbihncm91cF9pZCwgZm9ybV9pZCkgPT5cbiAgICBsZXQgKHByZV9ncm91cCwgX2dyb3VwLCBwb3N0X2dyb3VwKSA9XG4gICAgICBMaXN0VXRpbC5zcGxpdChleHBsYWluVGhpc01vZGVsLmdyb3VwcywgZyA9PiBnLmdyb3VwID09IGdyb3VwX2lkKTtcbiAgICB7XG4gICAgICAuLi5leHBsYWluVGhpc01vZGVsLFxuICAgICAgZ3JvdXBzOlxuICAgICAgICBwcmVfZ3JvdXAgQCBbe2dyb3VwOiBncm91cF9pZCwgc2VsZWN0ZWQ6IGZvcm1faWR9XSBAIHBvc3RfZ3JvdXAsXG4gICAgfTtcbiAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQHdhcm5pbmcgXCItMzNcIl1cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgcm93X2hlaWdodDogZmxvYXQsXG4gIGNvbF93aWR0aDogZmxvYXQsXG59O1xuXG5sZXQgaW5pdCA9IHtyb3dfaGVpZ2h0OiAxMC4sIGNvbF93aWR0aDogMTAufTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBnZXRfZWxlbV9ieV9pZCA9IGlkID0+IHtcbiAgbGV0IGRvYyA9IERvbV9odG1sLmRvY3VtZW50O1xuICBKcy5PcHQuZ2V0KFxuICAgIGRvYyMjZ2V0RWxlbWVudEJ5SWQoSnMuc3RyaW5nKGlkKSksXG4gICAgKCkgPT4ge1xuICAgICAgcHJpbnRfZW5kbGluZShpZCk7XG4gICAgICBhc3NlcnQoZmFsc2UpO1xuICAgIH0sXG4gICk7XG59O1xuXG5sZXQgZ2V0X2NoaWxkX3dpdGhfY2xhc3MgPSAoZWxlbWVudDogSnMudChEb21faHRtbC5lbGVtZW50KSwgY2xhc3NOYW1lKSA9PiB7XG4gIGxldCByZWMgbG9vcCA9IChzaWJsaW5nOiBKcy50KERvbV9odG1sLmVsZW1lbnQpKSA9PlxuICAgIGlmIChKcy50b19ib29sKHNpYmxpbmcjIy5jbGFzc0xpc3QjI2NvbnRhaW5zKEpzLnN0cmluZyhjbGFzc05hbWUpKSkpIHtcbiAgICAgIFNvbWUoc2libGluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvb3AoXG4gICAgICAgIEpzLk9wdC5nZXQoc2libGluZyMjLm5leHRTaWJsaW5nLCAoKSA9PiBmYWlsd2l0aChcIm5vIHNpYmxpbmdcIikpXG4gICAgICAgIHw+IEpzLlVuc2FmZS5jb2VyY2UsXG4gICAgICApO1xuICAgIH07XG4gIGxvb3AoXG4gICAgSnMuT3B0LmdldChlbGVtZW50IyMuZmlyc3RDaGlsZCwgKCkgPT4gZmFpbHdpdGgoXCJubyBjaGlsZFwiKSlcbiAgICB8PiBKcy5VbnNhZmUuY29lcmNlLFxuICApO1xufTtcblxubGV0IGRhdGVfbm93ID0gKCkgPT4ge1xuICBbJWpzIG5ldyBKcy5kYXRlX25vd107XG59O1xuXG5sZXQgdGltZXN0YW1wID0gKCkgPT4gZGF0ZV9ub3coKSMjdmFsdWVPZjtcblxubGV0IGdldF9rZXkgPSBldnQgPT5cbiAgSnMudG9fc3RyaW5nKEpzLk9wdGRlZi5nZXQoZXZ0IyMua2V5LCAoKSA9PiBmYWlsd2l0aChcIkpzVXRpbC5nZXRfa2V5XCIpKSk7XG5cbmxldCBjdHJsX2hlbGQgPSBldnQgPT4gSnMudG9fYm9vbChldnQjIy5jdHJsS2V5KTtcbmxldCBzaGlmdF9oZWxkID0gZXZ0ID0+IEpzLnRvX2Jvb2woZXZ0IyMuc2hpZnRLZXkpO1xubGV0IGFsdF9oZWxkID0gZXZ0ID0+IEpzLnRvX2Jvb2woZXZ0IyMuYWx0S2V5KTtcbmxldCBtZXRhX2hlbGQgPSBldnQgPT4gSnMudG9fYm9vbChldnQjIy5tZXRhS2V5KTtcblxubGV0IG51bV9jbGlja3MgPSAoZXZ0OiBKcy50KEpzX29mX29jYW1sLkRvbV9odG1sLm1vdXNlRXZlbnQpKTogaW50ID0+XG4gIEpzLlVuc2FmZS5jb2VyY2UoZXZ0KSMjLmRldGFpbDtcblxubGV0IGlzX2RvdWJsZV9jbGljayA9IChldnQ6IEpzLnQoSnNfb2Zfb2NhbWwuRG9tX2h0bWwubW91c2VFdmVudCkpOiBib29sID0+XG4gIG51bV9jbGlja3MoZXZ0KSA9PSAyO1xuXG5sZXQgZG93bmxvYWRfc3RyaW5nX2ZpbGUgPVxuICAgICh+ZmlsZW5hbWU6IHN0cmluZywgfmNvbnRlbnRfdHlwZTogc3RyaW5nLCB+Y29udGVudHM6IHN0cmluZykgPT4ge1xuICBsZXQgYmxvYiA9IEZpbGUuYmxvYl9mcm9tX3N0cmluZyh+Y29udGVudFR5cGU9Y29udGVudF90eXBlLCBjb250ZW50cyk7XG4gIGxldCB1cmwgPSBEb21faHRtbC53aW5kb3cjIy5fVVJMIyNjcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgbGV0IGxpbmsgPSBEb21faHRtbC5jcmVhdGVBKERvbV9odG1sLmRvY3VtZW50KTtcbiAgbGluayMjLmhyZWYgOj0gdXJsO1xuICBsaW5rIyNzZXRBdHRyaWJ1dGUoSnMuc3RyaW5nKFwiZG93bmxvYWRcIiksIEpzLnN0cmluZyhmaWxlbmFtZSkpO1xuICBsaW5rIyMub25jbGljayA6PSBEb21faHRtbC5oYW5kbGVyKF8gPT4ge0pzLl90cnVlfSk7XG4gIGxpbmsjI2NsaWNrO1xufTtcblxubGV0IGRvd25sb2FkX2pzb24gPSAoZmlsZW5hbWUsIGNvbnRlbnRzKTogdW5pdCA9PlxuICBkb3dubG9hZF9zdHJpbmdfZmlsZShcbiAgICB+ZmlsZW5hbWU9ZmlsZW5hbWUgKysgXCIuanNvblwiLFxuICAgIH5jb250ZW50X3R5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgfmNvbnRlbnRzPWNvbnRlbnRzIHw+IFlvanNvbi5TYWZlLnRvX3N0cmluZyxcbiAgKTtcblxubGV0IHJlYWRfZmlsZSA9IChmaWxlLCBrKSA9PiB7XG4gIGxldCByZWFkZXIgPSBbJWpzIG5ldyBGaWxlLmZpbGVSZWFkZXJdO1xuICByZWFkZXIjI3JlYWRBc1RleHQoZmlsZSk7XG4gIHJlYWRlciMjLm9ubG9hZCA6PVxuICAgIERvbS5oYW5kbGVyKF8gPT4ge1xuICAgICAgbGV0IHJlc3VsdCA9IHJlYWRlciMjLnJlc3VsdDtcbiAgICAgIGxldCBvcHRpb24gPSBKcy5PcHQudG9fb3B0aW9uKEZpbGUuQ29lcmNlVG8uc3RyaW5nKHJlc3VsdCkpO1xuICAgICAgbGV0IGRhdGEgPSBPcHRpb24ubWFwKEpzLnRvX3N0cmluZywgb3B0aW9uKTtcbiAgICAgIGsoZGF0YSk7XG4gICAgICBKcy5fdHJ1ZTtcbiAgICB9KTtcbn07XG5cbmxldCBzZXRfbG9jYWxzdG9yZSA9IChrOiBzdHJpbmcsIHY6IHN0cmluZyk6IHVuaXQgPT4ge1xuICBsZXQgbG9jYWxfc3RvcmUgPVxuICAgIEpzLk9wdGRlZi5nZXQoRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlLCAoKSA9PiBhc3NlcnQoZmFsc2UpKTtcbiAgbG9jYWxfc3RvcmUjI3NldEl0ZW0oSnMuc3RyaW5nKGspLCBKcy5zdHJpbmcodikpO1xufTtcblxubGV0IGdldF9sb2NhbHN0b3JlID0gKGs6IHN0cmluZyk6IG9wdGlvbihzdHJpbmcpID0+XG4gIHRyeSh7XG4gICAgbGV0IGxvY2FsX3N0b3JlID1cbiAgICAgIEpzLk9wdGRlZi5nZXQoRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlLCAoKSA9PiBhc3NlcnQoZmFsc2UpKTtcbiAgICBsb2NhbF9zdG9yZSMjZ2V0SXRlbShKcy5zdHJpbmcoaykpXG4gICAgfD4gKFxuICAgICAgeCA9PiBKcy5PcHQuZ2V0KHgsICgpID0+IGFzc2VydChmYWxzZSkpIHw+IEpzLnRvX3N0cmluZyB8PiBPcHRpb24uc29tZVxuICAgICk7XG4gIH0pIHtcbiAgfCBfID0+IE5vbmVcbiAgfTtcblxubGV0IGNsZWFyX2xvY2Fsc3RvcmUgPSAoKSA9PiB7XG4gIGxldCBsb2NhbF9zdG9yZSA9XG4gICAgSnMuT3B0ZGVmLmdldChEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UsICgpID0+IGFzc2VydChmYWxzZSkpO1xuICBsb2NhbF9zdG9yZSMjY2xlYXI7XG59O1xuXG5sZXQgY29uZmlybSA9IG1lc3NhZ2UgPT4ge1xuICBKcy50b19ib29sKERvbV9odG1sLndpbmRvdyMjY29uZmlybShKcy5zdHJpbmcobWVzc2FnZSkpKTtcbn07XG5cbmxldCBsb2cgPSBkYXRhID0+IHtcbiAgRmlyZWJ1Zy5jb25zb2xlIyNsb2coZGF0YSk7XG59O1xuXG5sZXQgY2xpcGJvYXJkX3NoaW1faWQgPSBcImNsaXBib2FyZC1zaGltXCI7XG5cbmxldCBmb2N1c19jbGlwYm9hcmRfc2hpbSA9ICgpID0+IGdldF9lbGVtX2J5X2lkKGNsaXBib2FyZF9zaGltX2lkKSMjZm9jdXM7XG5cbmxldCBjbGlwYm9hcmRfc2hpbSA9IHtcbiAgTm9kZS50ZXh0YXJlYSh+YXR0cj1BdHRyLm1hbnkoW0F0dHIuaWQoY2xpcGJvYXJkX3NoaW1faWQpXSksIFtdKTtcbn07XG5cbmxldCBjb3B5ID0gKHN0cjogc3RyaW5nKSA9PiB7XG4gIGZvY3VzX2NsaXBib2FyZF9zaGltKCk7XG4gIERvbV9odG1sLmRvY3VtZW50IyNleGVjQ29tbWFuZChcbiAgICBKcy5zdHJpbmcoXCJzZWxlY3RBbGxcIiksXG4gICAgSnMuYm9vbChmYWxzZSksXG4gICAgSnMuT3B0LmVtcHR5LFxuICApO1xuICBEb21faHRtbC5kb2N1bWVudCMjZXhlY0NvbW1hbmQoXG4gICAgSnMuc3RyaW5nKFwiaW5zZXJ0VGV4dFwiKSxcbiAgICBKcy5ib29sKGZhbHNlKSxcbiAgICBKcy5PcHQub3B0aW9uKFNvbWUoSnMuc3RyaW5nKHN0cikpKSxcbiAgKTtcbiAgRG9tX2h0bWwuZG9jdW1lbnQjI2V4ZWNDb21tYW5kKFxuICAgIEpzLnN0cmluZyhcInNlbGVjdEFsbFwiKSxcbiAgICBKcy5ib29sKGZhbHNlKSxcbiAgICBKcy5PcHQuZW1wdHksXG4gICk7XG59O1xuXG5sZXQgc2Nyb2xsX2N1cnNvcl9pbnRvX3ZpZXdfaWZfbmVlZGVkID0gKCkgPT5cbiAgdHJ5KHtcbiAgICBsZXQgY2FyZXRfZWxlbSA9IGdldF9lbGVtX2J5X2lkKFwiY2FyZXRcIik7XG4gICAgbGV0IG1haW4gPSBnZXRfZWxlbV9ieV9pZChcIm1haW5cIik7XG4gICAgbGV0IG1haW5fcmVjdCA9IG1haW4jI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBsZXQgY2FyZXRfcmVjdCA9IGNhcmV0X2VsZW0jI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcblxuICAgIGlmIChjYXJldF9yZWN0IyMudG9wIDwgbWFpbl9yZWN0IyMudG9wKSB7XG4gICAgICBjYXJldF9lbGVtIyNzY3JvbGxJbnRvVmlldyhKcy5fdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChjYXJldF9yZWN0IyMuYm90dG9tID4gbWFpbl9yZWN0IyMuYm90dG9tKSB7XG4gICAgICBjYXJldF9lbGVtIyNzY3JvbGxJbnRvVmlldyhKcy5fZmFsc2UpO1xuICAgIH07XG4gIH0pIHtcbiAgfCBBc3NlcnRfZmFpbHVyZShfKSA9PiAoKVxuICB9O1xuXG5tb2R1bGUgRnJhZ21lbnQgPSB7XG4gIGxldCBzZXRfY3VycmVudCA9IGZyYWcgPT4ge1xuICAgIGxldCBmcmFnID1cbiAgICAgIHN3aXRjaCAoZnJhZykge1xuICAgICAgfCBcIlwiID0+IFwiXCJcbiAgICAgIHwgZnJhZyA9PiBcIiNcIiArKyBmcmFnXG4gICAgICB9O1xuICAgIGxldCBoaXN0b3J5ID0gSnNfb2Zfb2NhbWwuRG9tX2h0bWwud2luZG93IyMuaGlzdG9yeTtcbiAgICBoaXN0b3J5IyNwdXNoU3RhdGUoSnMubnVsbCwgSnMuc3RyaW5nKFwiXCIpLCBKcy5zb21lKEpzLnN0cmluZyhmcmFnKSkpO1xuICB9O1xuXG4gIGxldCBnZXRfY3VycmVudCA9ICgpID0+IHtcbiAgICBsZXQgZnJhZ21lbnRfb2ZfdXJsID0gKHVybDogVXJsLnVybCk6IHN0cmluZyA9PlxuICAgICAgc3dpdGNoICh1cmwpIHtcbiAgICAgIHwgSHR0cCh7aHVfZnJhZ21lbnQ6IHN0ciwgX30pXG4gICAgICB8IEh0dHBzKHtodV9mcmFnbWVudDogc3RyLCBffSlcbiAgICAgIHwgRmlsZSh7ZnVfZnJhZ21lbnQ6IHN0ciwgX30pID0+IHN0clxuICAgICAgfTtcbiAgICBVcmwuQ3VycmVudC5nZXQoKSB8PiBPcHRpb24ubWFwKGZyYWdtZW50X29mX3VybCk7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbi8vIEEgZ2VuZXJpYyBrZXktdmFsdWUgc3RvcmUgZm9yIHNhdmluZy9sb2FkaW5nIGRhdGEgdG8vZnJvbSBsb2NhbCBzdG9yYWdlXG5tb2R1bGUgR2VuZXJpYyA9IHtcbiAgbGV0IHByZWZpeDogc3RyaW5nID0gXCJLRVlfU1RPUkVfXCI7XG5cbiAgbGV0IGZ1bGxfa2V5ID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBwcmVmaXggKysga2V5O1xuICB9O1xuXG4gIGxldCBzYXZlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdW5pdCA9PlxuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShmdWxsX2tleShrZXkpLCB2YWx1ZSk7XG5cbiAgbGV0IGxvYWQgPSAoa2V5OiBzdHJpbmcpOiBvcHRpb24oc3RyaW5nKSA9PlxuICAgIEpzVXRpbC5nZXRfbG9jYWxzdG9yZShmdWxsX2tleShrZXkpKTtcbn07XG5cbi8vIFNldHRpbmdzIHNlcmlhbGl6YXRpb25cbm1vZHVsZSBTZXR0aW5ncyA9IHtcbiAgbGV0IHNhdmVfc2V0dGluZ3Nfa2V5OiBzdHJpbmcgPSBcIlNFVFRJTkdTXCI7XG5cbiAgbGV0IGRlZmF1bHQgPSBJbml0LnN0YXJ0dXAuc2V0dGluZ3M7XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHNldHRpbmdzID0+XG4gICAgc2V0dGluZ3MgfD4gU2V0dGluZ3Muc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG5cbiAgbGV0IGRlc2VyaWFsaXplID0gZGF0YSA9PlxuICAgIHRyeShcbiAgICAgIGRhdGFcbiAgICAgIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmdcbiAgICAgIHw+IFNldHRpbmdzLnRfb2Zfc2V4cFxuICAgICAgfD4gU2V0dGluZ3MuTW9kZWwuZml4X2luc3RydWN0b3JfbW9kZVxuICAgICkge1xuICAgIHwgXyA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcIkNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBzZXR0aW5ncy5cIik7XG4gICAgICBkZWZhdWx0O1xuICAgIH07XG5cbiAgbGV0IHNhdmUgPSAoc2V0dGluZ3M6IFNldHRpbmdzLnQpOiB1bml0ID0+XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKHNhdmVfc2V0dGluZ3Nfa2V5LCBzZXJpYWxpemUoc2V0dGluZ3MpKTtcblxuICBsZXQgaW5pdCA9ICgpID0+IHtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoc2F2ZV9zZXR0aW5nc19rZXksIHNlcmlhbGl6ZShkZWZhdWx0KSk7XG4gICAgZGVmYXVsdDtcbiAgfTtcblxuICBsZXQgbG9hZCA9ICgpOiBTZXR0aW5ncy50ID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9zZXR0aW5nc19rZXkpKSB7XG4gICAgfCBOb25lID0+IGluaXQoKVxuICAgIHwgU29tZShkYXRhKSA9PiBkZXNlcmlhbGl6ZShkYXRhKVxuICAgIH07XG5cbiAgbGV0IGV4cG9ydCA9ICgpID0+IE9wdGlvbi5nZXQoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfc2V0dGluZ3Nfa2V5KSk7XG4gIGxldCBpbXBvcnQgPSBkYXRhID0+IHtcbiAgICBsZXQgc2V0dGluZ3MgPSBkZXNlcmlhbGl6ZShkYXRhKTtcbiAgICBzYXZlKHNldHRpbmdzKTtcbiAgICBzZXR0aW5ncztcbiAgfTtcbn07XG5cbi8vIEV4cGxhaW5UaGlzTW9kZWwgc2VyaWFsaXphdGlvblxubW9kdWxlIEV4cGxhaW5UaGlzTW9kZWwgPSB7XG4gIGxldCBzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5OiBzdHJpbmcgPSBcIkV4cGxhaW5UaGlzTW9kZWxcIjtcblxuICBsZXQgc2VyaWFsaXplID0gZXhwbGFpblRoaXNNb2RlbCA9PlxuICAgIGV4cGxhaW5UaGlzTW9kZWwgfD4gRXhwbGFpblRoaXNNb2RlbC5zZXhwX29mX3QgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcblxuICBsZXQgZGVzZXJpYWxpemUgPSBkYXRhID0+XG4gICAgdHJ5KGRhdGEgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZyB8PiBFeHBsYWluVGhpc01vZGVsLnRfb2Zfc2V4cCkge1xuICAgIHwgXyA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcIkNvdWxkIG5vdCBkZXNlcmlhbGl6ZSBFeHBsYWluVGhpc01vZGVsLlwiKTtcbiAgICAgIEV4cGxhaW5UaGlzTW9kZWwuaW5pdDtcbiAgICB9O1xuXG4gIGxldCBzYXZlID0gKGV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCk6IHVuaXQgPT5cbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoXG4gICAgICBzYXZlX0V4cGxhaW5UaGlzTW9kZWxfa2V5LFxuICAgICAgc2VyaWFsaXplKGV4cGxhaW5UaGlzTW9kZWwpLFxuICAgICk7XG5cbiAgbGV0IGluaXQgPSAoKSA9PiB7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKFxuICAgICAgc2F2ZV9FeHBsYWluVGhpc01vZGVsX2tleSxcbiAgICAgIHNlcmlhbGl6ZShFeHBsYWluVGhpc01vZGVsLmluaXQpLFxuICAgICk7XG4gICAgRXhwbGFpblRoaXNNb2RlbC5pbml0O1xuICB9O1xuXG4gIGxldCBsb2FkID0gKCk6IEV4cGxhaW5UaGlzTW9kZWwudCA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXkpKSB7XG4gICAgfCBOb25lID0+IGluaXQoKVxuICAgIHwgU29tZShkYXRhKSA9PiBkZXNlcmlhbGl6ZShkYXRhKVxuICAgIH07XG5cbiAgbGV0IHJlYyBleHBvcnQgPSAoKSA9PlxuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKHNhdmVfRXhwbGFpblRoaXNNb2RlbF9rZXkpKSB7XG4gICAgfCBOb25lID0+XG4gICAgICBsZXQgXyA9IGluaXQoKTtcbiAgICAgIGV4cG9ydCgpO1xuICAgIHwgU29tZShkYXRhKSA9PiBkYXRhXG4gICAgfTtcblxuICBsZXQgaW1wb3J0ID0gZGF0YSA9PiB7XG4gICAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBkZXNlcmlhbGl6ZShkYXRhKTtcbiAgICBzYXZlKGV4cGxhaW5UaGlzTW9kZWwpO1xuICB9O1xufTtcblxuLy8gU2NyYXRjaCBtb2RlIHNlcmlhbGl6YXRpb25cbm1vZHVsZSBTY3JhdGNoID0ge1xuICBsZXQgc2F2ZV9zY3JhdGNoX2tleTogc3RyaW5nID0gXCJTQVZFX1NDUkFUQ0hcIjtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG4gIHR5cGUgcGVyc2lzdGVudCA9IFBlcnNpc3RlbnREYXRhLnNjcmF0Y2g7XG5cbiAgbGV0IHRvX3BlcnNpc3RlbnQgPSAoKGlkeCwgc2xpZGVzLCByZXN1bHRzKSk6IHBlcnNpc3RlbnQgPT4gKFxuICAgIGlkeCxcbiAgICBMaXN0Lm1hcChTY3JhdGNoU2xpZGUucGVyc2lzdCwgc2xpZGVzKSxcbiAgICByZXN1bHRzXG4gICAgfD4gTW9kZWxSZXN1bHRzLm1hcChNb2RlbFJlc3VsdC50b19wZXJzaXN0ZW50KVxuICAgIHw+IE1vZGVsUmVzdWx0cy5iaW5kaW5ncyxcbiAgKTtcblxuICBsZXQgb2ZfcGVyc2lzdGVudCA9ICh+c2V0dGluZ3MsIChpZHgsIHNsaWRlcywgcmVzdWx0cyk6IHBlcnNpc3RlbnQpID0+IHtcbiAgICAoXG4gICAgICBpZHgsXG4gICAgICBMaXN0Lm1hcChTY3JhdGNoU2xpZGUudW5wZXJzaXN0LCBzbGlkZXMpLFxuICAgICAgcmVzdWx0c1xuICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgIHw+IE1vZGVsUmVzdWx0cy5vZl9zZXFcbiAgICAgIHw+IE1vZGVsUmVzdWx0cy5tYXAoTW9kZWxSZXN1bHQub2ZfcGVyc2lzdGVudCh+c2V0dGluZ3MpKSxcbiAgICApO1xuICB9O1xuXG4gIGxldCBzZXJpYWxpemUgPSBzY3JhdGNoID0+IHtcbiAgICBzY3JhdGNoIHw+IHRvX3BlcnNpc3RlbnQgfD4gc2V4cF9vZl9wZXJzaXN0ZW50IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplID0gZGF0YSA9PiB7XG4gICAgZGF0YSB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHBlcnNpc3RlbnRfb2Zfc2V4cCB8PiBvZl9wZXJzaXN0ZW50O1xuICB9O1xuXG4gIGxldCBzYXZlID0gKHNjcmF0Y2gpOiB1bml0ID0+IHtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoc2F2ZV9zY3JhdGNoX2tleSwgc2VyaWFsaXplKHNjcmF0Y2gpKTtcbiAgfTtcblxuICBsZXQgaW5pdCA9ICh+c2V0dGluZ3MpID0+IHtcbiAgICBsZXQgc2NyYXRjaCA9IG9mX3BlcnNpc3RlbnQofnNldHRpbmdzLCBJbml0LnN0YXJ0dXAuc2NyYXRjaCk7XG4gICAgc2F2ZShzY3JhdGNoKTtcbiAgICBzY3JhdGNoO1xuICB9O1xuXG4gIGxldCBsb2FkID0gKH5zZXR0aW5ncykgPT5cbiAgICBzd2l0Y2ggKEpzVXRpbC5nZXRfbG9jYWxzdG9yZShzYXZlX3NjcmF0Y2hfa2V5KSkge1xuICAgIHwgTm9uZSA9PiBpbml0KH5zZXR0aW5ncylcbiAgICB8IFNvbWUoZGF0YSkgPT5cbiAgICAgIHRyeShkZXNlcmlhbGl6ZSh+c2V0dGluZ3MsIGRhdGEpKSB7XG4gICAgICB8IF8gPT4gaW5pdCh+c2V0dGluZ3MpXG4gICAgICB9XG4gICAgfTtcblxuICBsZXQgZXhwb3J0ID0gKH5zZXR0aW5ncykgPT4gc2VyaWFsaXplKGxvYWQofnNldHRpbmdzKSk7XG4gIGxldCBpbXBvcnQgPSAofnNldHRpbmdzLCBkYXRhKSA9PiBzYXZlKGRlc2VyaWFsaXplKH5zZXR0aW5ncywgZGF0YSkpO1xufTtcblxubW9kdWxlIERvY3VtZW50YXRpb24gPSB7XG4gIGxldCBzYXZlX2RvY3VtZW50YXRpb25fa2V5OiBzdHJpbmcgPSBcIlNBVkVfRE9DVU1FTlRBVElPTlwiO1xuXG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSBwZXJzaXN0ZW50ID0gUGVyc2lzdGVudERhdGEuZG9jdW1lbnRhdGlvbjtcblxuICBsZXQgcGVyc2lzdCA9ICgobmFtZSwgZWRpdG9yOiBFZGl0b3IudCkpID0+IHtcbiAgICAobmFtZSwgUGVyc2lzdGVudFppcHBlci5wZXJzaXN0KGVkaXRvci5zdGF0ZS56aXBwZXIpKTtcbiAgfTtcblxuICBsZXQgdW5wZXJzaXN0ID0gKChuYW1lLCB6aXBwZXIpKSA9PiB7XG4gICAgbGV0IHppcHBlciA9IFBlcnNpc3RlbnRaaXBwZXIudW5wZXJzaXN0KHppcHBlcik7XG4gICAgKG5hbWUsIEVkaXRvci5pbml0KHppcHBlciwgfnJlYWRfb25seT1mYWxzZSkpO1xuICB9O1xuXG4gIGxldCB0b19wZXJzaXN0ZW50ID0gKChzdHJpbmcsIHNsaWRlcywgcmVzdWx0cykpOiBwZXJzaXN0ZW50ID0+IChcbiAgICBzdHJpbmcsXG4gICAgTGlzdC5tYXAocGVyc2lzdCwgc2xpZGVzKSxcbiAgICByZXN1bHRzXG4gICAgfD4gTW9kZWxSZXN1bHRzLm1hcChNb2RlbFJlc3VsdC50b19wZXJzaXN0ZW50KVxuICAgIHw+IE1vZGVsUmVzdWx0cy5iaW5kaW5ncyxcbiAgKTtcblxuICBsZXQgb2ZfcGVyc2lzdGVudCA9ICh+c2V0dGluZ3MsIChzdHJpbmcsIHNsaWRlcywgcmVzdWx0cyk6IHBlcnNpc3RlbnQpID0+IHtcbiAgICAoXG4gICAgICBzdHJpbmcsXG4gICAgICBMaXN0Lm1hcCh1bnBlcnNpc3QsIHNsaWRlcyksXG4gICAgICByZXN1bHRzXG4gICAgICB8PiBMaXN0LnRvX3NlcVxuICAgICAgfD4gTW9kZWxSZXN1bHRzLm9mX3NlcVxuICAgICAgfD4gTW9kZWxSZXN1bHRzLm1hcChNb2RlbFJlc3VsdC5vZl9wZXJzaXN0ZW50KH5zZXR0aW5ncykpLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHNlcmlhbGl6ZSA9IHNsaWRlcyA9PiB7XG4gICAgc2xpZGVzIHw+IHRvX3BlcnNpc3RlbnQgfD4gc2V4cF9vZl9wZXJzaXN0ZW50IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmc7XG4gIH07XG5cbiAgbGV0IGRlc2VyaWFsaXplID0gZGF0YSA9PiB7XG4gICAgZGF0YSB8PiBTZXhwbGliLlNleHAub2Zfc3RyaW5nIHw+IHBlcnNpc3RlbnRfb2Zfc2V4cCB8PiBvZl9wZXJzaXN0ZW50O1xuICB9O1xuXG4gIGxldCBzYXZlID0gKHNsaWRlcyk6IHVuaXQgPT4ge1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShzYXZlX2RvY3VtZW50YXRpb25fa2V5LCBzZXJpYWxpemUoc2xpZGVzKSk7XG4gIH07XG5cbiAgbGV0IGluaXQgPSAofnNldHRpbmdzKSA9PiB7XG4gICAgbGV0IGRvY3VtZW50YXRpb24gPSBvZl9wZXJzaXN0ZW50KH5zZXR0aW5ncywgSW5pdC5zdGFydHVwLmRvY3VtZW50YXRpb24pO1xuICAgIHNhdmUoZG9jdW1lbnRhdGlvbik7XG4gICAgZG9jdW1lbnRhdGlvbjtcbiAgfTtcblxuICBsZXQgbG9hZCA9ICh+c2V0dGluZ3MpID0+XG4gICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoc2F2ZV9kb2N1bWVudGF0aW9uX2tleSkpIHtcbiAgICB8IE5vbmUgPT4gaW5pdCh+c2V0dGluZ3MpXG4gICAgfCBTb21lKGRhdGEpID0+XG4gICAgICB0cnkoZGVzZXJpYWxpemUofnNldHRpbmdzLCBkYXRhKSkge1xuICAgICAgfCBfID0+IGluaXQofnNldHRpbmdzKVxuICAgICAgfVxuICAgIH07XG5cbiAgbGV0IGV4cG9ydCA9ICh+c2V0dGluZ3MpID0+IHNlcmlhbGl6ZShsb2FkKH5zZXR0aW5ncykpO1xuICBsZXQgaW1wb3J0ID0gKH5zZXR0aW5ncywgZGF0YSkgPT4gc2F2ZShkZXNlcmlhbGl6ZSh+c2V0dGluZ3MsIGRhdGEpKTtcbn07XG5cbm1vZHVsZSBFeGVyY2lzZSA9IHtcbiAgb3BlbiBFeGVyY2lzZTtcblxuICBsZXQgY3VyX2V4ZXJjaXNlX2tleSA9IFwiQ1VSX0VYRVJDSVNFXCI7XG5cbiAgbGV0IGtleXN0cmluZ19vZl9rZXkgPSBrZXkgPT4ge1xuICAgIGtleSB8PiBzZXhwX29mX2tleSB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xuICB9O1xuXG4gIGxldCBrZXlzdHJpbmdfb2YgPSBwID0+IHtcbiAgICBrZXlfb2YocCkgfD4ga2V5c3RyaW5nX29mX2tleTtcbiAgfTtcblxuICBsZXQga2V5X29mX2tleXN0cmluZyA9IGtleXN0cmluZyA9PiB7XG4gICAga2V5c3RyaW5nIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4ga2V5X29mX3NleHA7XG4gIH07XG5cbiAgbGV0IHNhdmVfZXhlcmNpc2Vfa2V5ID0ga2V5ID0+IHtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoY3VyX2V4ZXJjaXNlX2tleSwga2V5c3RyaW5nX29mX2tleShrZXkpKTtcbiAgfTtcblxuICBsZXQgc2F2ZV9leGVyY2lzZSA9IChleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfb2Zfc3RhdGUoZXhlcmNpc2UpO1xuICAgIGxldCBrZXlzdHJpbmcgPSBrZXlzdHJpbmdfb2Zfa2V5KGtleSk7XG4gICAgbGV0IHZhbHVlID0gRXhlcmNpc2Uuc2VyaWFsaXplX2V4ZXJjaXNlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICBKc1V0aWwuc2V0X2xvY2Fsc3RvcmUoa2V5c3RyaW5nLCB2YWx1ZSk7XG4gIH07XG5cbiAgbGV0IGluaXRfZXhlcmNpc2UgPSAoc3BlYywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfb2Yoc3BlYyk7XG4gICAgbGV0IGtleXN0cmluZyA9IGtleXN0cmluZ19vZl9rZXkoa2V5KTtcbiAgICBsZXQgZXhlcmNpc2UgPSBFeGVyY2lzZS5zdGF0ZV9vZl9zcGVjKHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIHNhdmVfZXhlcmNpc2UoZXhlcmNpc2UsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5LCBrZXlzdHJpbmcpO1xuICAgIGV4ZXJjaXNlO1xuICB9O1xuXG4gIGxldCBsb2FkX2V4ZXJjaXNlID0gKGtleSwgc3BlYywgfmluc3RydWN0b3JfbW9kZSk6IEV4ZXJjaXNlLnN0YXRlID0+IHtcbiAgICBsZXQga2V5c3RyaW5nID0ga2V5c3RyaW5nX29mX2tleShrZXkpO1xuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKGtleXN0cmluZykpIHtcbiAgICB8IFNvbWUoZGF0YSkgPT5cbiAgICAgIGxldCBleGVyY2lzZSA9XG4gICAgICAgIHRyeShFeGVyY2lzZS5kZXNlcmlhbGl6ZV9leGVyY2lzZShkYXRhLCB+c3BlYywgfmluc3RydWN0b3JfbW9kZSkpIHtcbiAgICAgICAgfCBfID0+IGluaXRfZXhlcmNpc2Uoc3BlYywgfmluc3RydWN0b3JfbW9kZSlcbiAgICAgICAgfTtcbiAgICAgIEpzVXRpbC5zZXRfbG9jYWxzdG9yZShjdXJfZXhlcmNpc2Vfa2V5LCBrZXlzdHJpbmcpO1xuICAgICAgZXhlcmNpc2U7XG4gICAgfCBOb25lID0+IGluaXRfZXhlcmNpc2Uoc3BlYywgfmluc3RydWN0b3JfbW9kZSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCBzYXZlID0gKChuLCBzcGVjcywgZXhlcmNpc2UpLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgbGV0IGtleSA9IGtleV9vZihMaXN0Lm50aChzcGVjcywgbikpO1xuICAgIGxldCBrZXlzdHJpbmcgPSBrZXlzdHJpbmdfb2Zfa2V5KGtleSk7XG4gICAgc2F2ZV9leGVyY2lzZShleGVyY2lzZSwgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgSnNVdGlsLnNldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXksIGtleXN0cmluZyk7XG4gIH07XG5cbiAgbGV0IGluaXQgPSAofmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGxldCBleGVyY2lzZXMgPSB7XG4gICAgICAoXG4gICAgICAgIDAsXG4gICAgICAgIEV4ZXJjaXNlU2V0dGluZ3MuZXhlcmNpc2VzLFxuICAgICAgICBMaXN0Lm50aChFeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcywgMClcbiAgICAgICAgfD4gRXhlcmNpc2Uuc3RhdGVfb2Zfc3BlYyh+aW5zdHJ1Y3Rvcl9tb2RlKSxcbiAgICAgICk7XG4gICAgfTtcbiAgICBzYXZlKGV4ZXJjaXNlcywgfmluc3RydWN0b3JfbW9kZSk7XG4gICAgZXhlcmNpc2VzO1xuICB9O1xuXG4gIGxldCBsb2FkID0gKH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHN3aXRjaCAoSnNVdGlsLmdldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXkpKSB7XG4gICAgfCBTb21lKGtleXN0cmluZykgPT5cbiAgICAgIGxldCBrZXkgPSBrZXlfb2Zfa2V5c3RyaW5nKGtleXN0cmluZyk7XG4gICAgICBzd2l0Y2ggKEV4ZXJjaXNlLmZpbmRfa2V5X29wdChrZXksIHNwZWNzKSkge1xuICAgICAgfCBTb21lKChuLCBzcGVjKSkgPT5cbiAgICAgICAgc3dpdGNoIChKc1V0aWwuZ2V0X2xvY2Fsc3RvcmUoa2V5c3RyaW5nKSkge1xuICAgICAgICB8IFNvbWUoZGF0YSkgPT5cbiAgICAgICAgICBsZXQgZXhlcmNpc2UgPVxuICAgICAgICAgICAgdHJ5KGRlc2VyaWFsaXplX2V4ZXJjaXNlKGRhdGEsIH5zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSkge1xuICAgICAgICAgICAgfCBfID0+IGluaXRfZXhlcmNpc2Uoc3BlYywgfmluc3RydWN0b3JfbW9kZSlcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgKG4sIHNwZWNzLCBleGVyY2lzZSk7XG4gICAgICAgIHwgTm9uZSA9PlxuICAgICAgICAgIC8vIGluaXRpYWxpemUgZXhlcmNpc2UgZnJvbSBzcGVjXG4gICAgICAgICAgbGV0IGV4ZXJjaXNlID0gRXhlcmNpc2Uuc3RhdGVfb2Zfc3BlYyhzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICAgICAgICBzYXZlX2V4ZXJjaXNlKGV4ZXJjaXNlLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICAgICAgICAobiwgc3BlY3MsIGV4ZXJjaXNlKTtcbiAgICAgICAgfVxuICAgICAgfCBOb25lID0+XG4gICAgICAgIC8vIGludmFsaWQgY3VycmVudCBleGVyY2lzZSBrZXkgc2F2ZWQsIGxvYWQgdGhlIGZpcnN0IGV4ZXJjaXNlXG4gICAgICAgIGxldCBmaXJzdF9zcGVjID0gTGlzdC5udGgoc3BlY3MsIDApO1xuICAgICAgICBsZXQgZmlyc3Rfa2V5ID0gRXhlcmNpc2Uua2V5X29mKGZpcnN0X3NwZWMpO1xuICAgICAgICAoMCwgc3BlY3MsIGxvYWRfZXhlcmNpc2UoZmlyc3Rfa2V5LCBmaXJzdF9zcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKSk7XG4gICAgICB9O1xuICAgIHwgTm9uZSA9PiBpbml0KH5pbnN0cnVjdG9yX21vZGUpXG4gICAgfTtcbiAgfTtcblxuICBsZXQgcHJlcF9leGVyY2lzZV9leHBvcnQgPSAofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAge1xuICAgICAgY3VyX2V4ZXJjaXNlOlxuICAgICAgICBrZXlfb2Zfa2V5c3RyaW5nKFxuICAgICAgICAgIE9wdGlvbi5nZXQoSnNVdGlsLmdldF9sb2NhbHN0b3JlKGN1cl9leGVyY2lzZV9rZXkpKSxcbiAgICAgICAgKSxcbiAgICAgIGV4ZXJjaXNlX2RhdGE6XG4gICAgICAgIHNwZWNzXG4gICAgICAgIHw+IExpc3QubWFwKHNwZWMgPT4ge1xuICAgICAgICAgICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfb2Yoc3BlYyk7XG4gICAgICAgICAgICAgbGV0IGV4ZXJjaXNlID1cbiAgICAgICAgICAgICAgIGxvYWRfZXhlcmNpc2Uoa2V5LCBzcGVjLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgICAgICAgICAgICAgfD4gRXhlcmNpc2UucGVyc2lzdGVudF9zdGF0ZV9vZl9zdGF0ZSh+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgICAgICAgICAgICAoa2V5LCBleGVyY2lzZSk7XG4gICAgICAgICAgIH0pLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQgPSAofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gICAgcHJlcF9leGVyY2lzZV9leHBvcnQofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIHw+IHNleHBfb2ZfZXhlcmNpc2VfZXhwb3J0XG4gICAgfD4gU2V4cGxpYi5TZXhwLnRvX3N0cmluZztcbiAgfTtcblxuICBsZXQgZXhwb3J0ID0gKH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIHNlcmlhbGl6ZV9leGVyY2lzZV9leHBvcnQofnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgfTtcblxuICBsZXQgaW1wb3J0ID0gKGRhdGEsIH5zcGVjcywgfmluc3RydWN0b3JfbW9kZSkgPT4ge1xuICAgIGxldCBleGVyY2lzZV9leHBvcnQgPSBkYXRhIHw+IGRlc2VyaWFsaXplX2V4ZXJjaXNlX2V4cG9ydDtcbiAgICBzYXZlX2V4ZXJjaXNlX2tleShleGVyY2lzZV9leHBvcnQuY3VyX2V4ZXJjaXNlKTtcbiAgICBleGVyY2lzZV9leHBvcnQuZXhlcmNpc2VfZGF0YVxuICAgIHw+IExpc3QuaXRlcigoKGtleSwgcGVyc2lzdGVudF9zdGF0ZSkpID0+IHtcbiAgICAgICAgIGxldCBzcGVjID0gRXhlcmNpc2UuZmluZF9rZXlfb3B0KGtleSwgc3BlY3MpO1xuICAgICAgICAgc3dpdGNoIChzcGVjKSB7XG4gICAgICAgICB8IE5vbmUgPT5cbiAgICAgICAgICAgcHJpbnRfZW5kbGluZShcIldhcm5pbmc6IHNhdmVkIGtleSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGV4ZXJjaXNlXCIpXG4gICAgICAgICB8IFNvbWUoKF8sIHNwZWMpKSA9PlxuICAgICAgICAgICBzYXZlX2V4ZXJjaXNlKFxuICAgICAgICAgICAgIEV4ZXJjaXNlLnVucGVyc2lzdF9zdGF0ZShcbiAgICAgICAgICAgICAgIHBlcnNpc3RlbnRfc3RhdGUsXG4gICAgICAgICAgICAgICB+c3BlYyxcbiAgICAgICAgICAgICAgIH5pbnN0cnVjdG9yX21vZGUsXG4gICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICB+aW5zdHJ1Y3Rvcl9tb2RlLFxuICAgICAgICAgICApXG4gICAgICAgICB9O1xuICAgICAgIH0pO1xuICB9O1xufTtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5cbi8qIFRoaXMgc2luZ2xlIGRhdGEgc3RydWN0dXJlIGNvbGxlY3RzIHRvZ2V0aGVyIGFsbCB0aGUgYXBwLXdpZGUgdmFsdWVzXG4gICB0aGF0IG1pZ2h0IGJlIG9mIGludGVyZXN0IHRvIHZpZXcgZnVuY3Rpb25zLiBNb3N0IHZpZXcgZnVuY3Rpb25zIHRoZW5cbiAgIHRha2Ugfmdsb2JhbHMgYXMgYW4gYXJndW1lbnQuKi9cblxubW9kdWxlIEFjdGlvbiA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgU2V0TW91c2Vkb3duKGJvb2wpXG4gICAgfCBTZXRTaG93QmFja3BhY2tUYXJnZXRzKGJvb2wpXG4gICAgfCBTZXRGb250TWV0cmljcyhGb250TWV0cmljcy50KVxuICAgIHwgU2V0KFNldHRpbmdzLlVwZGF0ZS50KVxuICAgIHwgSnVtcFRvVGlsZShIYXozbGNvcmUuSWQudCk7XG59O1xuXG5tb2R1bGUgTW9kZWwgPSB7XG4gIFtAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbiAgdHlwZSB0ID0ge1xuICAgIC8vIFBlcnNpc3RlbnQ6XG4gICAgc2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgLy8gU3RhdGU6XG4gICAgZm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgIHNob3dfYmFja3BhY2tfdGFyZ2V0czogYm9vbCxcbiAgICBtb3VzZWRvd246IGJvb2wsXG4gICAgLy8gQ2FsY3VsYXRlZDpcbiAgICBjb2xvcl9oaWdobGlnaHRzOiBvcHRpb24oQ29sb3JTdGVwcy5jb2xvck1hcCksXG4gICAgLy8gT3RoZXI6XG4gICAgaW5qZWN0X2dsb2JhbDogQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgLyogaW5qZWN0X2dsb2JhbCBpcyBub3QgcmVhbGx5IHBhcnQgb2YgdGhlIG1vZGVsLCBidXQgYWRkZWQgaGVyZSBmb3JcbiAgICAgICBjb252ZW5pZW5jZSB0byBhdm9pZCBoYXZpbmcgdG8gcGFzcyBpdCBhcm91bmQgZXZlcnl3aGVyZS4gQ2FuIG9ubHlcbiAgICAgICBiZSB1c2VkIGluIHZpZXcgZnVuY3Rpb25zLiAqL1xuICB9O1xuXG4gIGxldCBsb2FkID0gKCkgPT4ge1xuICAgIGxldCBzZXR0aW5ncyA9IFN0b3JlLlNldHRpbmdzLmxvYWQoKTtcbiAgICB7XG4gICAgICBmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLmluaXQsXG4gICAgICBzaG93X2JhY2twYWNrX3RhcmdldHM6IGZhbHNlLFxuICAgICAgbW91c2Vkb3duOiBmYWxzZSxcbiAgICAgIHNldHRpbmdzLFxuICAgICAgY29sb3JfaGlnaGxpZ2h0czogTm9uZSxcbiAgICAgIGluamVjdF9nbG9iYWw6IF8gPT5cbiAgICAgICAgZmFpbHdpdGgoXG4gICAgICAgICAgXCJDYW5ub3QgdXNlIGluamVjdF9nbG9iYWwgb3V0c2lkZSBvZiB0aGUgbWFpbiB2aWV3IGZ1bmN0aW9uIVwiLFxuICAgICAgICApLFxuICAgIH07XG4gIH07XG5cbiAgbGV0IHNhdmUgPSBtb2RlbCA9PiB7XG4gICAgU3RvcmUuU2V0dGluZ3Muc2F2ZShtb2RlbC5zZXR0aW5ncyk7XG4gIH07XG59O1xuXG5tb2R1bGUgVXBkYXRlID0ge1xuICBpbmNsdWRlIEFjdGlvbjtcblxuICAvLyBVcGRhdGUgaXMgaGFuZGxlZCBieSB0aGUgdG9wLWxldmVsIHVwZGF0ZSBmdW5jdGlvblxuXG4gIGxldCBjYWxjdWxhdGUgPSAoY29sb3JfaGlnaGxpZ2h0cywgbW9kZWw6IE1vZGVsLnQpOiBNb2RlbC50ID0+IHtcbiAgICAuLi5tb2RlbCxcbiAgICBjb2xvcl9oaWdobGlnaHRzLFxuICB9O1xufTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSB0ID0gTW9kZWwudDtcbiIsIm9wZW4gU2V4cGxpYi5TdGQ7XG5vcGVuIEhhejNsY29yZTtcblxuLyogTU9ERUw6XG5cbiAgICAgIFRoZSBtb2RlbCBjb25zaXN0cyBvZiB0aHJlZSBicm9hZCBjYXRlZ29yaWVzLiBFZGl0b3JzIGlzIHRoZSBtZWF0LFxuICAgICAgY29udGFpbmluZyB0aGUgY29kZSBjb250ZW50IGFuZCBjdXJzb3Ivc2VsZWN0aW9uL2J1ZmZlciBzdGF0ZSBmb3IgYWxsXG4gICAgICBhY3RpdmUgZWRpdG9ycy4gU2V0dGluZ3MgYXJlIHVzZXItc2VsZWN0YWJsZSBwcmVmZXJlbmNlcy4gVG9nZXRoZXIsXG4gICAgICB0aGVzZSB0d28gY29tcHJpc2UgdGhlIHBlcnNpc3RlbnQgc3RhdGUgb2YgdGhlIGFwcGxpY2F0aW9uIHdoaWNoIGlzXG4gICAgICBzYXZlZCB0byBsb2NhbHN0b3JlLlxuXG4gICAgICBNZXRhIG9uIHRoZSBvdGhlciBoYW5kIGNvbnNpc3RzIG9mIGV2ZXJ5dGhpbmcgd2hpY2ggaXMgbm90XG4gICAgICBwZXJpc3RhbnQsIGluY2x1ZGluZyB0cmFuc2l0b3J5IHVpX3N0YXRlIHN1Y2ggYXMgd2hldGhlciB0aGUgbW91c2VcbiAgICAgIGlzIGhlbGQgZG93bi5cblxuICAgKi9cblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCB5b2pzb24sIHNleHApXVxudHlwZSB0aW1lc3RhbXAgPSBmbG9hdDtcblxudHlwZSB0ID0ge1xuICBlZGl0b3JzOiBFZGl0b3JzLnQsXG4gIHJlc3VsdHM6IE1vZGVsUmVzdWx0cy50LFxuICBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLnQsXG4gIGV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgZ2xvYmFsczogR2xvYmFscy50LFxuICBhY3RpdmVfZWRpdG9yOiBvcHRpb24oRWRpdG9ycy5TZWxlY3Rpb24udCksXG59O1xuXG5sZXQgY3V0b2ZmID0gKD09PSk7XG5cbmxldCBsb2FkX2VkaXRvcnMgPSAofnNldHRpbmdzOiBTZXR0aW5ncy50KTogKEVkaXRvcnMudCwgTW9kZWxSZXN1bHRzLnQpID0+XG4gIHN3aXRjaCAoc2V0dGluZ3MubW9kZSkge1xuICB8IFNjcmF0Y2ggPT5cbiAgICBsZXQgKGlkeCwgc2xpZGVzLCByZXN1bHRzKSA9IFN0b3JlLlNjcmF0Y2gubG9hZCh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSk7XG4gICAgKFNjcmF0Y2goaWR4LCBzbGlkZXMpLCByZXN1bHRzKTtcbiAgfCBEb2N1bWVudGF0aW9uID0+XG4gICAgbGV0IChuYW1lLCBzbGlkZXMsIHJlc3VsdHMpID1cbiAgICAgIFN0b3JlLkRvY3VtZW50YXRpb24ubG9hZCh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSk7XG4gICAgKERvY3VtZW50YXRpb24obmFtZSwgc2xpZGVzKSwgcmVzdWx0cyk7XG4gIHwgRXhlcmNpc2VzID0+XG4gICAgbGV0IChuLCBzcGVjcywgZXhlcmNpc2UpID1cbiAgICAgIFN0b3JlLkV4ZXJjaXNlLmxvYWQoXG4gICAgICAgIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyxcbiAgICAgICAgfmluc3RydWN0b3JfbW9kZT1zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUsXG4gICAgICApO1xuICAgIChFeGVyY2lzZXMobiwgc3BlY3MsIGV4ZXJjaXNlKSwgTW9kZWxSZXN1bHRzLmVtcHR5KTtcbiAgfTtcblxubGV0IHNhdmVfZWRpdG9ycyA9XG4gICAgKGVkaXRvcnM6IEVkaXRvcnMudCwgcmVzdWx0czogTW9kZWxSZXN1bHRzLnQsIH5pbnN0cnVjdG9yX21vZGU6IGJvb2wpXG4gICAgOiB1bml0ID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2gobiwgc2xpZGVzKSA9PiBTdG9yZS5TY3JhdGNoLnNhdmUoKG4sIHNsaWRlcywgcmVzdWx0cykpXG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpID0+XG4gICAgU3RvcmUuRG9jdW1lbnRhdGlvbi5zYXZlKChuYW1lLCBzbGlkZXMsIHJlc3VsdHMpKVxuICB8IEV4ZXJjaXNlcyhuLCBzcGVjcywgZXhlcmNpc2UpID0+XG4gICAgU3RvcmUuRXhlcmNpc2Uuc2F2ZSgobiwgc3BlY3MsIGV4ZXJjaXNlKSwgfmluc3RydWN0b3JfbW9kZSlcbiAgfTtcblxubGV0IGxvYWQgPSAoKTogdCA9PiB7XG4gIGxldCBnbG9iYWxzID0gR2xvYmFscy5Nb2RlbC5sb2FkKCk7XG4gIGxldCBzZXR0aW5ncyA9IGdsb2JhbHMuc2V0dGluZ3M7XG4gIGxldCAoZWRpdG9ycywgcmVzdWx0cykgPSBsb2FkX2VkaXRvcnMofnNldHRpbmdzKTtcbiAgbGV0IHN0YXRpY3MgPSBFZGl0b3JzLm1rX3N0YXRpY3MofnNldHRpbmdzLCBlZGl0b3JzKTtcbiAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBTdG9yZS5FeHBsYWluVGhpc01vZGVsLmxvYWQoKTtcbiAge2VkaXRvcnMsIHJlc3VsdHMsIHN0YXRpY3MsIGdsb2JhbHMsIGV4cGxhaW5UaGlzTW9kZWwsIGFjdGl2ZV9lZGl0b3I6IE5vbmV9O1xufTtcblxubGV0IHNhdmUgPSAoe2VkaXRvcnMsIGdsb2JhbHMsIHJlc3VsdHMsIGV4cGxhaW5UaGlzTW9kZWwsIF99OiB0KSA9PiB7XG4gIHNhdmVfZWRpdG9ycyhcbiAgICBlZGl0b3JzLFxuICAgIHJlc3VsdHMsXG4gICAgfmluc3RydWN0b3JfbW9kZT1nbG9iYWxzLnNldHRpbmdzLmluc3RydWN0b3JfbW9kZSxcbiAgKTtcbiAgR2xvYmFscy5Nb2RlbC5zYXZlKGdsb2JhbHMpO1xuICBTdG9yZS5FeHBsYWluVGhpc01vZGVsLnNhdmUoZXhwbGFpblRoaXNNb2RlbCk7XG59O1xuXG5sZXQgc2F2ZV9hbmRfcmV0dXJuID0gKG1vZGVsOiB0KSA9PiB7XG4gIHNhdmUobW9kZWwpO1xuICBPayhtb2RlbCk7XG59O1xubGV0IHJlc2V0ID0gKG1vZGVsOiB0KTogdCA9PiB7XG4gIC8qIFJlc2V0IG1vZGVsIHRvIGRlZmF1bHQsIGluY2x1ZGluZyBpbiBsb2NhbHN0b3JhZ2UsXG4gICAgIGJ1dCBkb24ndCBvdGhlcndpc2UgZXJhc2UgbG9jYWxzdG9yYWdlLCBhbGxvd2luZ1xuICAgICBlLmcuIGFwaSBrZXlzIHRvIHBlcnNpc3QgKi9cbiAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MuaW5pdCgpLmNvcmU7XG4gIGlnbm9yZShTdG9yZS5FeHBsYWluVGhpc01vZGVsLmluaXQoKSk7XG4gIGlnbm9yZShTdG9yZS5TY3JhdGNoLmluaXQofnNldHRpbmdzKSk7XG4gIGlnbm9yZShTdG9yZS5Eb2N1bWVudGF0aW9uLmluaXQofnNldHRpbmdzKSk7XG4gIGlnbm9yZShTdG9yZS5FeGVyY2lzZS5pbml0KH5pbnN0cnVjdG9yX21vZGU9dHJ1ZSkpO1xuICBsZXQgbmV3X21vZGVsID0gbG9hZCgpO1xuICB7XG4gICAgLi4ubmV3X21vZGVsLFxuICAgIGdsb2JhbHM6IHtcbiAgICAgIC4uLm1vZGVsLmdsb2JhbHMsXG4gICAgICBmb250X21ldHJpY3M6IG1vZGVsLmdsb2JhbHMuZm9udF9tZXRyaWNzLFxuICAgIH0sXG4gIH07XG59O1xuIiwib3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gVXRpbDtcbm9wZW4gSGF6M2xjb3JlO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHN0ZXBwZXJfYWN0aW9uID1cbiAgfCBTdGVwRm9yd2FyZChpbnQpXG4gIHwgU3RlcEJhY2t3YXJkXG4gIHwgSGlkZVN0ZXBwZXI7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWdlbnQgPVxuICB8IFR5RGk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWdlbnRfYWN0aW9uID1cbiAgfCBQcm9tcHQoYWdlbnQpXG4gIHwgQWNjZXB0U3VnZ2VzdGlvbjtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBiZW5jaG1hcmtfYWN0aW9uID1cbiAgfCBTdGFydFxuICB8IEZpbmlzaDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBlZGl0b3JfYWN0aW9uID1cbiAgfCBQZXJmb3JtKEFjdGlvbi50KTtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSBjZWxsX2FjdGlvbiA9XG4gIHwgVG9nZ2xlU3RlcHBlclxuICB8IFN0ZXBwZXIoc3RlcHBlcl9hY3Rpb24pXG4gIHwgRWRpdG9yKGVkaXRvcl9hY3Rpb24pO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHQgPVxuICAvKiBtZXRhICovXG4gIHwgR2xvYmFscyhHbG9iYWxzLlVwZGF0ZS50KVxuICB8IFJlc2V0XG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChFeHBsYWluVGhpc1VwZGF0ZS51cGRhdGUpXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBEZWJ1Z0NvbnNvbGUoc3RyaW5nKVxuICAvKiBlZGl0b3JzICovXG4gIHwgUmVzZXRDdXJyZW50RWRpdG9yXG4gIHwgSW5pdEltcG9ydEFsbChbQG9wYXF1ZV0gSnNfb2Zfb2NhbWwuSnMudChKc19vZl9vY2FtbC5GaWxlLmZpbGUpKVxuICB8IEZpbmlzaEltcG9ydEFsbChvcHRpb24oc3RyaW5nKSlcbiAgfCBNYWtlQWN0aXZlKEVkaXRvcnMuU2VsZWN0aW9uLnQpXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKHN0cmluZykgLy9leGFtcGxlbW9kZSBvbmx5XG4gIC8vIGVkaXRvcnM6IHNjcmF0Y2htb2RlIG9ubHlcbiAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChbQG9wYXF1ZV0gSnNfb2Zfb2NhbWwuSnMudChKc19vZl9vY2FtbC5GaWxlLmZpbGUpKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQob3B0aW9uKHN0cmluZykpXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKGludClcbiAgLyogZWRpdG9yICovXG4gIHwgVEFCXG4gIHwgU2F2ZVxuICB8IFBlcmZvcm1BY3Rpb24oQWN0aW9uLnQpXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBDdXRcbiAgfCBDb3B5XG4gIHwgVW5kb1xuICB8IFJlZG9cbiAgfCBNb3ZlVG9OZXh0SG9sZShEaXJlY3Rpb24udClcbiAgfCBCZW5jaG1hcmsoYmVuY2htYXJrX2FjdGlvbilcbiAgfCBBc3Npc3RhbnQoYWdlbnRfYWN0aW9uKVxuICB8IFRvZ2dsZVN0ZXBwZXIoTW9kZWxSZXN1bHRzLktleS50KVxuICB8IFN0ZXBwZXJBY3Rpb24oTW9kZWxSZXN1bHRzLktleS50LCBzdGVwcGVyX2FjdGlvbilcbiAgfCBVcGRhdGVFdmFscyhXb3JrZXJTZXJ2ZXIuUmVzcG9uc2UudClcbiAgfCBVcGRhdGVSZXN1bHQoTW9kZWxSZXN1bHRzLnQpO1xuXG5tb2R1bGUgRmFpbHVyZSA9IHtcbiAgW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxuICB0eXBlIHQgPVxuICAgIHwgQ2FudFJlc2V0XG4gICAgfCBDYW50U3VnZ2VzdFxuICAgIHwgRmFpbGVkVG9Mb2FkXG4gICAgfCBGYWlsZWRUb1N3aXRjaFxuICAgIHwgRmFpbGVkVG9QZXJmb3JtKEFjdGlvbi5GYWlsdXJlLnQpXG4gICAgfCBFeGNlcHRpb24oc3RyaW5nKTtcbn07XG5cbm1vZHVsZSBSZXN1bHQgPSB7XG4gIGluY2x1ZGUgUmVzdWx0O1xuICB0eXBlIHQoJ3N1Y2Nlc3MpID0gUmVzdWx0LnQoJ3N1Y2Nlc3MsIEZhaWx1cmUudCk7XG59O1xuXG5sZXQgaXNfZWRpdDogdCA9PiBib29sID1cbiAgZnVuXG4gIHwgUGVyZm9ybUFjdGlvbihhKSA9PiBBY3Rpb24uaXNfZWRpdChhKVxuICB8IEdsb2JhbHMoU2V0KHNfYWN0aW9uKSkgPT5cbiAgICBzd2l0Y2ggKHNfYWN0aW9uKSB7XG4gICAgfCBNb2RlKF8pID0+IHRydWVcbiAgICB8IENhcHRpb25zXG4gICAgfCBTZWNvbmRhcnlJY29uc1xuICAgIHwgU3RhdGljc1xuICAgIHwgQXNzaXN0XG4gICAgfCBFbGFib3JhdGVcbiAgICB8IEV4cGxhaW5UaGlzKF8pXG4gICAgfCBEeW5hbWljc1xuICAgIHwgQmVuY2htYXJrXG4gICAgfCBDb250ZXh0SW5zcGVjdG9yXG4gICAgfCBJbnN0cnVjdG9yTW9kZVxuICAgIHwgRXZhbHVhdGlvbihfKSA9PiBmYWxzZVxuICAgIH1cbiAgfCBHbG9iYWxzKFxuICAgICAgU2V0TW91c2Vkb3duKF8pIHwgU2V0U2hvd0JhY2twYWNrVGFyZ2V0cyhfKSB8IFNldEZvbnRNZXRyaWNzKF8pIHxcbiAgICAgIEp1bXBUb1RpbGUoXyksXG4gICAgKSA9PlxuICAgIGZhbHNlXG4gIHwgQ3V0XG4gIHwgVW5kb1xuICB8IFJlZG9cbiAgfCBTd2l0Y2hTY3JhdGNoU2xpZGUoXylcbiAgfCBTd2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoXylcbiAgfCBUb2dnbGVTdGVwcGVyKF8pXG4gIHwgU3RlcHBlckFjdGlvbihfKVxuICB8IFJlcGFyc2VDdXJyZW50RWRpdG9yXG4gIHwgRmluaXNoSW1wb3J0QWxsKF8pXG4gIHwgRmluaXNoSW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IFJlc2V0Q3VycmVudEVkaXRvclxuICB8IEFzc2lzdGFudChBY2NlcHRTdWdnZXN0aW9uKVxuICB8IFJlc2V0ID0+IHRydWVcbiAgfCBVcGRhdGVSZXN1bHQoXylcbiAgfCBVcGRhdGVFdmFscyhfKVxuICB8IE1ha2VBY3RpdmUoXylcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IFNhdmVcbiAgfCBDb3B5XG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChfKVxuICB8IERlYnVnQ29uc29sZShfKVxuICB8IEluaXRJbXBvcnRBbGwoXylcbiAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgQmVuY2htYXJrKF8pXG4gIHwgVEFCXG4gIHwgQXNzaXN0YW50KFByb21wdChfKSkgPT4gZmFsc2U7XG5cbmxldCByZWV2YWx1YXRlX3Bvc3RfdXBkYXRlOiB0ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBQZXJmb3JtQWN0aW9uKGEpID0+IEFjdGlvbi5pc19lZGl0KGEpXG4gIHwgR2xvYmFscyhTZXQoc19hY3Rpb24pKSA9PlxuICAgIHN3aXRjaCAoc19hY3Rpb24pIHtcbiAgICB8IEFzc2lzdFxuICAgIHwgQ2FwdGlvbnNcbiAgICB8IFNlY29uZGFyeUljb25zXG4gICAgfCBTdGF0aWNzXG4gICAgfCBDb250ZXh0SW5zcGVjdG9yXG4gICAgfCBCZW5jaG1hcmtcbiAgICB8IEV4cGxhaW5UaGlzKF8pXG4gICAgfCBFdmFsdWF0aW9uKFxuICAgICAgICBTaG93Q2FzZUNsYXVzZXMgfCBTaG93Rm5Cb2RpZXMgfCBTaG93Q2FzdHMgfCBTaG93UmVjb3JkIHwgU2hvd0ZpeHBvaW50cyB8XG4gICAgICAgIFNob3dMb29rdXBzIHxcbiAgICAgICAgU2hvd0ZpbHRlcnMgfFxuICAgICAgICBTaG93U2V0dGluZ3MgfFxuICAgICAgICBTaG93SGlkZGVuU3RlcHMsXG4gICAgICApID0+XG4gICAgICBmYWxzZVxuICAgIHwgRWxhYm9yYXRlXG4gICAgfCBEeW5hbWljc1xuICAgIHwgSW5zdHJ1Y3Rvck1vZGVcbiAgICB8IE1vZGUoXykgPT4gdHJ1ZVxuICAgIH1cbiAgfCBHbG9iYWxzKFxuICAgICAgU2V0TW91c2Vkb3duKF8pIHwgU2V0U2hvd0JhY2twYWNrVGFyZ2V0cyhfKSB8IFNldEZvbnRNZXRyaWNzKF8pIHxcbiAgICAgIEp1bXBUb1RpbGUoXyksXG4gICAgKSA9PlxuICAgIGZhbHNlXG4gIHwgQXNzaXN0YW50KEFjY2VwdFN1Z2dlc3Rpb24pID0+IHRydWVcbiAgfCBBc3Npc3RhbnQoUHJvbXB0KF8pKSA9PiBmYWxzZVxuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgU2F2ZVxuICB8IENvcHlcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pXG4gIHwgRXhwb3J0UGVyc2lzdGVudERhdGFcbiAgfCBVcGRhdGVSZXN1bHQoXylcbiAgfCBVcGRhdGVFdmFscyhfKVxuICB8IE1ha2VBY3RpdmUoXylcbiAgfCBEZWJ1Z0NvbnNvbGUoXylcbiAgfCBUQUJcbiAgfCBCZW5jaG1hcmsoXykgPT4gZmFsc2VcbiAgfCBTdGVwcGVyQWN0aW9uKF8sIFN0ZXBGb3J3YXJkKF8pIHwgU3RlcEJhY2t3YXJkIHwgSGlkZVN0ZXBwZXIpXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFJlcGFyc2VDdXJyZW50RWRpdG9yXG4gIHwgRmluaXNoSW1wb3J0QWxsKF8pXG4gIHwgRmluaXNoSW1wb3J0U2NyYXRjaHBhZChfKVxuICB8IFJlc2V0Q3VycmVudEVkaXRvclxuICB8IFN3aXRjaFNjcmF0Y2hTbGlkZShfKVxuICB8IFN3aXRjaERvY3VtZW50YXRpb25TbGlkZShfKVxuICB8IFJlc2V0XG4gIHwgQ3V0XG4gIHwgVW5kb1xuICB8IFJlZG8gPT4gdHJ1ZTtcblxubGV0IHNob3VsZF9zY3JvbGxfdG9fY2FyZXQgPVxuICBmdW5cbiAgfCBHbG9iYWxzKFNldChzX2FjdGlvbikpID0+XG4gICAgc3dpdGNoIChzX2FjdGlvbikge1xuICAgIHwgTW9kZShfKSA9PiB0cnVlXG4gICAgfCBDYXB0aW9uc1xuICAgIHwgU2Vjb25kYXJ5SWNvbnNcbiAgICB8IFN0YXRpY3NcbiAgICB8IEFzc2lzdFxuICAgIHwgRWxhYm9yYXRlXG4gICAgfCBFeHBsYWluVGhpcyhfKVxuICAgIHwgRHluYW1pY3NcbiAgICB8IEJlbmNobWFya1xuICAgIHwgQ29udGV4dEluc3BlY3RvclxuICAgIHwgSW5zdHJ1Y3Rvck1vZGVcbiAgICB8IEV2YWx1YXRpb24oXykgPT4gZmFsc2VcbiAgICB9XG4gIHwgR2xvYmFscyhTZXRGb250TWV0cmljcyhfKSkgPT4gdHJ1ZVxuICB8IEdsb2JhbHMoU2V0TW91c2Vkb3duKF8pIHwgU2V0U2hvd0JhY2twYWNrVGFyZ2V0cyhfKSB8IEp1bXBUb1RpbGUoXykpID0+XG4gICAgZmFsc2VcbiAgfCBBc3Npc3RhbnQoUHJvbXB0KF8pKVxuICB8IFVwZGF0ZVJlc3VsdChfKVxuICB8IFVwZGF0ZUV2YWxzKF8pXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFN0ZXBwZXJBY3Rpb24oXywgU3RlcEJhY2t3YXJkIHwgU3RlcEZvcndhcmQoXykgfCBIaWRlU3RlcHBlcikgPT4gZmFsc2VcbiAgfCBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbikgPT4gdHJ1ZVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBGaW5pc2hJbXBvcnRBbGwoXylcbiAgfCBSZXNldEN1cnJlbnRFZGl0b3JcbiAgfCBNYWtlQWN0aXZlKF8pXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgUmVwYXJzZUN1cnJlbnRFZGl0b3JcbiAgfCBSZXNldFxuICB8IENvcHlcbiAgfCBDdXRcbiAgfCBVbmRvXG4gIHwgUmVkb1xuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVEFCID0+IHRydWVcbiAgfCBQZXJmb3JtQWN0aW9uKGEpID0+XG4gICAgc3dpdGNoIChhKSB7XG4gICAgfCBNb3ZlKF8pXG4gICAgfCBNb3ZlVG9OZXh0SG9sZShfKVxuICAgIHwgSnVtcChfKVxuICAgIHwgU2VsZWN0KFJlc2l6ZShfKSB8IFRlcm0oXykgfCBTbWFydCB8IFRpbGUoXykpXG4gICAgfCBEZXN0cnVjdChfKVxuICAgIHwgSW5zZXJ0KF8pXG4gICAgfCBQaWNrX3VwXG4gICAgfCBQdXRfZG93blxuICAgIHwgUm90YXRlQmFja3BhY2tcbiAgICB8IE1vdmVUb0JhY2twYWNrVGFyZ2V0KF8pXG4gICAgfCBQYXN0ZShfKSA9PiB0cnVlXG4gICAgfCBVbnNlbGVjdChfKVxuICAgIHwgU2VsZWN0KEFsbClcbiAgICB8IFN1Z2dlc3QoXylcbiAgICB8IFJlc2V0U3VnZ2VzdGlvbiA9PiBmYWxzZVxuICAgIH1cbiAgfCBTYXZlXG4gIHwgSW5pdEltcG9ydEFsbChfKVxuICB8IEluaXRJbXBvcnRTY3JhdGNocGFkKF8pXG4gIHwgVXBkYXRlRXhwbGFpblRoaXNNb2RlbChfKVxuICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhXG4gIHwgRGVidWdDb25zb2xlKF8pXG4gIHwgQmVuY2htYXJrKF8pID0+IGZhbHNlO1xuIiwib3BlbiBIYXozbGNvcmU7XG5pbmNsdWRlIFVwZGF0ZUFjdGlvbjtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5cbmxldCBhc3Npc3RhbnRfYWN0aW9uX3RvX2VkaXRvcl9hY3Rpb25zID1cbiAgICAoXG4gICAgICB7Z2xvYmFsczoge3NldHRpbmdzLCBffSwgYWN0aXZlX2VkaXRvcjogc2VsZWN0aW9uLCBffSBhcyBtb2RlbDogTW9kZWwudCxcbiAgICAgIGFnZW50X2FjdGlvbixcbiAgICApXG4gICAgOiBsaXN0KEFjdGlvbi50KSA9PlxuICB7XG4gICAgbGV0KiBzZWxlY3Rpb24gPSBzZWxlY3Rpb247XG4gICAgbGV0KyBlZGl0b3IgPVxuICAgICAgRWRpdG9ycy5nZXRfc2VsZWN0ZWRfZWRpdG9yKH5zZWxlY3Rpb24sIG1vZGVsLmVkaXRvcnMsIG1vZGVsLnJlc3VsdHMpO1xuICAgIGxldCB6ID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICBzd2l0Y2ggKGFnZW50X2FjdGlvbikge1xuICAgIHwgUHJvbXB0KFR5RGkpID0+XG4gICAgICBsZXQgY3R4X2luaXQgPSBFZGl0b3JzLmdldF9jdHhfaW5pdCh+c2V0dGluZ3MsIG1vZGVsLmVkaXRvcnMpO1xuICAgICAgc3dpdGNoIChUeURpLnN1Z2dlc3QofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIH5jdHg9Y3R4X2luaXQsIHopKSB7XG4gICAgICB8IE5vbmUgPT4gW11cbiAgICAgIHwgU29tZShzdWdnZXN0aW9uKSA9PiBbQWN0aW9uLlN1Z2dlc3Qoc3VnZ2VzdGlvbildXG4gICAgICB9O1xuICAgIHwgQWNjZXB0U3VnZ2VzdGlvbiA9PlxuICAgICAgcHJpbnRfZW5kbGluZShcImFjY2VwdGluZyBzdWdnZXN0aW9uXCIpO1xuICAgICAgc3dpdGNoICh6LnNlbGVjdGlvbi5tb2RlKSB7XG4gICAgICB8IE5vcm1hbCA9PiBbXVxuICAgICAgfCBCdWZmZXIoUGFyc2VkKSA9PiBbVW5zZWxlY3QoU29tZShSaWdodCkpXVxuICAgICAgfCBCdWZmZXIoVW5wYXJzZWQpID0+XG4gICAgICAgIHN3aXRjaCAoVHlEaS5nZXRfYnVmZmVyKHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgICAvKiBUaGlzIGNhc2Ugc2hvdWxkbid0IGhhcHBlbiBpZiB3ZSBhc3N1bWUgdGhhdCB3ZSBwcmV2YWxpZGF0ZVxuICAgICAgICAgKiBldmVyeXRoaW5nIHdlIHB1dCBpbiB0aGUgdW5wYXJzZWQgYnVmZmVyKi9cbiAgICAgICAgfCBTb21lKGNvbXBsZXRpb24pIHdoZW4gU3RyaW5nLmNvbnRhaW5zKGNvbXBsZXRpb24sICcgJykgPT5cbiAgICAgICAgICAvKiBTbGlnaHRseSBoYWNreS4gV2UgYXNzdW1lIHRoYXQgaWYgYSBjb21wbGV0aW9uIHN0cmluZyBoYXNcbiAgICAgICAgICAgKiBzcGFjZXMgaW4gaXQsIHRoYXQgbWVhbnMgaXQgd2lsbCBoYXZlIGEgaG9sZSBpbiBpdC4gVGhpc1xuICAgICAgICAgICAqIGlzIGEgbm9uLWVzc2VudGlhbCBpbnZhcmlhbnQgY3VycmVudGx5IG1haW50YWluZWQgaW4gVHlEaS5cbiAgICAgICAgICAgKiBJbiBzdWNoIGEgY2FzZSwgd2UgaW5zZXJ0IHRoZSBjb21wbGV0aW9uIGFzIG5vcm1hbCBieVxuICAgICAgICAgICAqIHBhc3RpbmcsIHRoZW4gcmV0dXJuIHRvIHRoZSBiZWdpbm5pbmcgYW5kIGFkdmFuY2UgdG8gdGhlXG4gICAgICAgICAgICogZmlyc3QgaG9sZS4gVGhpcyBzaG91bGQgYmUgcmV2aXNpdGVkIGlmIGNvbXBsZXRpb25zIGFyZVxuICAgICAgICAgICAqIHJlZmFjdG9yZWQgdG8gdXNlIGEgbW9yZSBzdHJ1Y3R1cmVkIGJ1ZmZlciBmb3JtYXQgKi9cbiAgICAgICAgICBtb2R1bGUgTSA9ICh2YWwgRWRpdG9yLk1ldGEubW9kdWxlX29mX3QoZWRpdG9yLnN0YXRlLm1ldGEpKTtcbiAgICAgICAgICBsZXQgc3RhcnQgPSBaaXBwZXIuY2FyZXRfcG9pbnQoTS5tZWFzdXJlZCwgeik7XG4gICAgICAgICAgW1xuICAgICAgICAgICAgUGFzdGUoQXNzaXN0YW50RXhwYW5kZXIudHJpbShjb21wbGV0aW9uKSksXG4gICAgICAgICAgICBNb3ZlKEdvYWwoUG9pbnQoc3RhcnQpKSksXG4gICAgICAgICAgICBNb3ZlVG9OZXh0SG9sZShSaWdodCksXG4gICAgICAgICAgICBNb3ZlKExvY2FsKExlZnQoQnlUb2tlbikpKSxcbiAgICAgICAgICBdO1xuICAgICAgICB8IFNvbWUoY29tcGxldGlvbikgPT4gW1Bhc3RlKEFzc2lzdGFudEV4cGFuZGVyLnRyaW0oY29tcGxldGlvbikpXVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gIH1cbiAgfD4gT3B0aW9uLnRvX2xpc3RcbiAgfD4gTGlzdC5mbGF0dGVuO1xuIiwibGV0IHNhbXBsZV8xID0ge3wjIEhhemVsIExhbmd1YWdlIFF1aWNrIFJlZmVyZW5jZSAjXG5cbiMgUmVjdXJzaXZlIEZ1bmN0aW9ucyAoYXJyb3cgdHlwZSBhbm5vdGF0aW9uIHJlcXVpcmVkKSAjXG5sZXQgZG91YmxlX3JlY3Vyc2l2ZWx5IDogSW50IC0+IEludCA9XG4gIGZ1biBuIC0+XG4gICAgaWYgbiA9PSAwIHRoZW4gMFxuICAgIGVsc2UgZG91YmxlX3JlY3Vyc2l2ZWx5KG4gLSAxKSArIDJcbmluXG5cbiMgTGlzdHMgI1xubGV0IGVtcHR5X2xpc3QgOiBbSW50XSA9IFtdIGluXG5sZXQgbm9uX2VtcHR5X2xpc3QgOiBbSW50XSA9IDE6OjI6OjM6OltdIGluXG5sZXQgbGlzdF9saXRlcmFscyA6IFtJbnRdID0gWzEsIDIsIDNdIGluXG5sZXQgbGVuZ3RoIDogW0ludF0gLT4gSW50ID1cbiAgZnVuIHhzIC0+XG4gICAgY2FzZSB4c1xuICAgICAgfCBbXSA9PiAwXG4gICAgICB8IGhkOjp0bCA9PiAxICsgbGVuZ3RoKHRsKVxuICAgIGVuZFxuaW5cbmxldCBoYXNfYXRfbGVhc3RfdHdvX2VsZW1lbnRzIDogW0ludF0gLT4gQm9vbCA9XG4gIGZ1biB4cyAtPlxuICAgIGNhc2UgeHNcbiAgICAgIHwgW10gPT4gZmFsc2VcbiAgICAgIHwgaGQ6OltdID0+IGZhbHNlXG4gICAgICB8IGE6OmI6OltdID0+IHRydWVcbiAgICBlbmRcbmluXG5cbiMgU3RyaW5ncyAjXG5sZXQgc3RyaW5nX2xpdHMgPSBcIkhlbGxvLCB3b3JsZCFcIiBpblxubGV0IHN0cmluZ19lcXVhbGl0eSA9IHN0cmluZ19saXRzICQ9PSBcIkhlbGxvLCB3b3JsZCFcIiBpblxuXG4jIE5vbi1lbXB0eSBob2xlcyBhcmUgdGhlIHJlZCBkb3R0ZWQgYm94ZXMgYXJvdW5kIGVycm9ycyAjXG4jICh5b3UgY2FuIHN0aWxsIHJ1biBwcm9ncmFtcyB3aXRoIG5vbi1lbXB0eSBob2xlcykgI1xubGV0IG5vbl9lbXB0eV9ob2xlIDogSW50ID0gdHJ1ZSBpblxuXG4yICsgMlxufH07XG5cbmxldCBzdHJfdG9faW5zZXJ0cyA9IChzdHI6IHN0cmluZyk6IGxpc3QoVXBkYXRlQWN0aW9uLnQpID0+XG4gIExpc3QuaW5pdChcbiAgICBTdHJpbmcubGVuZ3RoKHN0ciksXG4gICAgaSA9PiB7XG4gICAgICBsZXQgYyA9IFN0cmluZy5zdWIoc3RyLCBpLCAxKTtcbiAgICAgIGxldCBjID0gYyA9PSBcIlxcblwiID8gSGF6M2xjb3JlLkZvcm0ubGluZWJyZWFrIDogYztcbiAgICAgIFVwZGF0ZUFjdGlvbi5QZXJmb3JtQWN0aW9uKEluc2VydChjKSk7XG4gICAgfSxcbiAgKTtcblxubGV0IGFjdGlvbnNfMSA9IHN0cl90b19pbnNlcnRzKHNhbXBsZV8xKSBAIFtCZW5jaG1hcmsoRmluaXNoKV07XG5cbmxldCB0aW1lID0gcmVmKC0xLjApO1xuXG5sZXQgc3RhcnQgPSAoKTogdW5pdCA9PiB7XG4gIHRpbWUgOj0gSnNVdGlsLnRpbWVzdGFtcCgpO1xuICBwcmludF9lbmRsaW5lKFwiQmVuY2htYXJrOiBTdGFydGluZ1wiKTtcbn07XG5cbmxldCBmaW5pc2ggPSAoKTogdW5pdCA9PiB7XG4gIHN3aXRjaCAodGltZV4pIHtcbiAgfCAoLTEuMCkgPT5cbiAgICBQcmludGYuc3ByaW50ZihcIkJlbmNobWFyazogRXJyb3I6IE5vIGJlbmNobWFyayBydW5uaW5nXCIpIHw+IHByaW50X2VuZGxpbmVcblxuICB8IF8gPT5cbiAgICBsZXQgZWxhcHNlZCA9IChKc1V0aWwudGltZXN0YW1wKCkgLS4gdGltZV4pIC8uIDEwMDAuO1xuICAgIHRpbWUgOj0gKC0xLjApO1xuICAgIFByaW50Zi5zcHJpbnRmKFwiQmVuY2htYXJrOiBGaW5pc2hlZDogdGltZTogJWYgc2Vjb25kc1wiLCBlbGFwc2VkKVxuICAgIHw+IHByaW50X2VuZGxpbmU7XG4gIH07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbi8qIFRoaXMgaXMgYSBwbGFjZSB0byBhZGQgYWQtaG9jIGRlYnVnZ2luZyBwcmludCBhY3Rpb25zLlxuICAgSXQgd2FzIG9yaWdpbmFsbHkgZGlyZWN0bHkgaW4gS2V5Ym9hcmQsIGJ1dCB0aGF0IGFkZGVkIGEgaGFuZGxlclxuICAgZGVwZW5kZW5jeSBvbiB0aGUgbW9kZWwsIHdoaWNoIGlzIHRlY2huaWNhbGx5IGFnYWluc3QgYXJjaGl0ZWN0dXJlICovXG5cbmxldCBwcmludCA9XG4gICAgKFxuICAgICAge2dsb2JhbHM6IHtzZXR0aW5ncywgX30sIGVkaXRvcnMsIGFjdGl2ZV9lZGl0b3IsIHJlc3VsdHMsIF99OiBNb2RlbC50LFxuICAgICAga2V5OiBzdHJpbmcsXG4gICAgKVxuICAgIDogdW5pdCA9PiB7XG4gIHN3aXRjaCAoYWN0aXZlX2VkaXRvcikge1xuICB8IFNvbWUoYWN0aXZlX2VkaXRvcikgPT5cbiAgICBsZXQgZWRpdG9yID1cbiAgICAgIEVkaXRvcnMuZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uPWFjdGl2ZV9lZGl0b3IsIGVkaXRvcnMsIHJlc3VsdHMpO1xuICAgIHN3aXRjaCAoZWRpdG9yKSB7XG4gICAgfCBTb21lKGVkaXRvcikgPT5cbiAgICAgIGxldCB6ID0gZWRpdG9yLnN0YXRlLnppcHBlcjtcbiAgICAgIGxldCBwcmludCA9IHN0ciA9PiBzdHIgfD4gcHJpbnRfZW5kbGluZTtcbiAgICAgIGxldCBzZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgICAgbGV0IHRlcm0gPSB6ID0+IHogfD4gTWFrZVRlcm0uZnJvbV96aXBfZm9yX3ZpZXcgfD4gZnN0O1xuICAgICAgbGV0IGN0eF9pbml0ID0gRWRpdG9ycy5nZXRfY3R4X2luaXQofnNldHRpbmdzLCBlZGl0b3JzKTtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICB8IFwiRjFcIiA9PiB6IHw+IFppcHBlci5zaG93IHw+IHByaW50XG4gICAgICB8IFwiRjJcIiA9PiB6IHw+IFppcHBlci51bnNlbGVjdF9hbmRfemlwIHw+IFNlZ21lbnQuc2hvdyB8PiBwcmludFxuICAgICAgfCBcIkYzXCIgPT4geiB8PiB0ZXJtIHw+IEV4cC5zaG93IHw+IHByaW50XG4gICAgICB8IFwiRjRcIiA9PlxuICAgICAgICB6XG4gICAgICAgIHw+IHRlcm1cbiAgICAgICAgfD4gSW50ZXJmYWNlLlN0YXRpY3MubWtfbWFwX2N0eChzZXR0aW5ncy5jb3JlLCBjdHhfaW5pdClcbiAgICAgICAgfD4gU3RhdGljcy5NYXAuc2hvd1xuICAgICAgICB8PiBwcmludFxuICAgICAgfCBcIkY1XCIgPT5cbiAgICAgICAgbGV0IGVudl9pbml0ID0gRWRpdG9ycy5nZXRfZW52X2luaXQofnNldHRpbmdzLCBlZGl0b3JzKTtcbiAgICAgICAgSW50ZXJmYWNlLmV2YWxfeih+c2V0dGluZ3M9c2V0dGluZ3MuY29yZSwgfmVudl9pbml0LCB+Y3R4X2luaXQsIHopXG4gICAgICAgIHw+IFByb2dyYW1SZXN1bHQuc2hvd1xuICAgICAgICB8PiBwcmludDtcbiAgICAgIHwgXCJGNlwiID0+XG4gICAgICAgIGxldCBpbmRleCA9IEluZGljYXRlZC5pbmRleCh6KTtcbiAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgeiB8PiB0ZXJtIHw+IEludGVyZmFjZS5TdGF0aWNzLm1rX21hcF9jdHgoc2V0dGluZ3MuY29yZSwgY3R4X2luaXQpO1xuICAgICAgICBzd2l0Y2ggKGluZGV4KSB7XG4gICAgICAgIHwgU29tZShpbmRleCkgPT5cbiAgICAgICAgICBzd2l0Y2ggKEhhejNsY29yZS5JZC5NYXAuZmluZF9vcHQoaW5kZXgsIG1hcCkpIHtcbiAgICAgICAgICB8IFNvbWUoY2kpID0+IHByaW50KEluZm8uc2hvdyhjaSkpXG4gICAgICAgICAgfCBOb25lID0+IHByaW50KFwiREVCVUc6IE5vIENJIGZvdW5kIGZvciBpbmRleFwiKVxuICAgICAgICAgIH1cbiAgICAgICAgfCBOb25lID0+IHByaW50KFwiREVCVUc6IE5vIGluZGljYXRlZCBpbmRleFwiKVxuICAgICAgICB9O1xuXG4gICAgICB8IF8gPT4gcHJpbnQoXCJERUJVRzogTm8gYWN0aW9uIGZvciBrZXk6IFwiICsrIGtleSlcbiAgICAgIH07XG4gICAgfCBOb25lID0+IHByaW50X2VuZGxpbmUoXCJERUJVRzogTm8gYWN0aXZlIGVkaXRvclwiKVxuICAgIH07XG4gIHwgTm9uZSA9PiBwcmludF9lbmRsaW5lKFwiREVCVUc6IE5vIGFjdGl2ZSBlZGl0b3JcIilcbiAgfTtcbn07XG4iLCIvKiBMb2dnaW5nIHN5c3RlbSBmb3IgYWN0aW9ucy4gUGVyc2lzdHMgbG9nIHZpYSBJbmRleGVkREIgKi9cblxub3BlbiBTZXhwbGliLlN0ZDtcblxubGV0IGlzX2FjdGlvbl9sb2dnZWQ6IFVwZGF0ZUFjdGlvbi50ID0+IGJvb2wgPVxuICBmdW5cbiAgfCBHbG9iYWxzKFxuICAgICAgU2V0TW91c2Vkb3duKF8pIHwgU2V0U2hvd0JhY2twYWNrVGFyZ2V0cyhfKSB8IFNldEZvbnRNZXRyaWNzKF8pIHxcbiAgICAgIEp1bXBUb1RpbGUoXyksXG4gICAgKVxuICB8IFNhdmVcbiAgfCBJbml0SW1wb3J0QWxsKF8pXG4gIHwgSW5pdEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBFeHBvcnRQZXJzaXN0ZW50RGF0YVxuICB8IEZpbmlzaEltcG9ydEFsbChfKVxuICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoXylcbiAgfCBCZW5jaG1hcmsoXylcbiAgfCBVcGRhdGVSZXN1bHQoXylcbiAgfCBVcGRhdGVFdmFscyhfKVxuICB8IERlYnVnQ29uc29sZShfKSA9PiBmYWxzZVxuICB8IFJlc2V0XG4gIHwgVEFCXG4gIHwgQXNzaXN0YW50KF8pXG4gIHwgR2xvYmFscyhTZXQoXykpXG4gIHwgU3dpdGNoU2NyYXRjaFNsaWRlKF8pXG4gIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKF8pXG4gIHwgTWFrZUFjdGl2ZShfKVxuICB8IFJlc2V0Q3VycmVudEVkaXRvclxuICB8IFJlcGFyc2VDdXJyZW50RWRpdG9yXG4gIHwgUGVyZm9ybUFjdGlvbihfKVxuICB8IEN1dFxuICB8IENvcHlcbiAgfCBVbmRvXG4gIHwgUmVkb1xuICB8IE1vdmVUb05leHRIb2xlKF8pXG4gIHwgVG9nZ2xlU3RlcHBlcihfKVxuICB8IFN0ZXBwZXJBY3Rpb24oXywgU3RlcEZvcndhcmQoXykgfCBTdGVwQmFja3dhcmQgfCBIaWRlU3RlcHBlcilcbiAgfCBVcGRhdGVFeHBsYWluVGhpc01vZGVsKF8pID0+IHRydWU7XG5cbm1vZHVsZSBEQiA9IHtcbiAgb3BlbiBFempzX2lkYjtcblxuICBtb2R1bGUgU3RvcmUgPSBFempzX2lkYi5TdG9yZShTdHJpbmdUciwgU3RyaW5nVHIpO1xuXG4gIHR5cGUgZGIgPSBFempzX21pbi50KFR5cGVzLmlEQkRhdGFiYXNlKTtcblxuICBsZXQgZGJfbmFtZSA9IFwiaGF6ZWxfZGJcIjtcbiAgbGV0IHRhYmxlX25hbWUgPSBcImxvZ1wiO1xuXG4gIGxldCBrdl9zdG9yZSA9IChkYjogZGIpOiBTdG9yZS5zdG9yZSA9PlxuICAgIFN0b3JlLnN0b3JlKH5tb2RlPVJFQURXUklURSwgZGIsIHRhYmxlX25hbWUpO1xuXG4gIGxldCB3aXRoX2RiID0gKGYpOiB1bml0ID0+IHtcbiAgICBsZXQgZXJyb3IgPSBfOiB1bml0ID0+IHByaW50X2VuZGxpbmUoXCJFUlJPUjogTG9nLklEQktWLm9wZW5cIik7XG4gICAgbGV0IHVwZ3JhZGUgPSAoZGI6IGRiLCBlOiBkYl91cGdyYWRlKTogdW5pdCA9PlxuICAgICAgZS5uZXdfdmVyc2lvbiA+PSAxICYmIGUub2xkX3ZlcnNpb24gPT0gMFxuICAgICAgICA/IGlnbm9yZShTdG9yZS5jcmVhdGUoZGIsIHRhYmxlX25hbWUpKSA6ICgpO1xuICAgIG9wZW5EQih+dXBncmFkZSwgfmVycm9yLCB+dmVyc2lvbj0xLCBkYl9uYW1lLCBkYiA9PiBmKGRiKSk7XG4gIH07XG5cbiAgbGV0IGFkZCA9IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHVuaXQgPT5cbiAgICB3aXRoX2RiKGRiID0+XG4gICAgICBTdG9yZS5hZGQofmtleSwgfmNhbGxiYWNrPV9rZXkgPT4gKCksIGt2X3N0b3JlKGRiKSwgdmFsdWUpXG4gICAgKTtcblxuICBsZXQgZ2V0ID0gKGtleTogc3RyaW5nLCBmOiBvcHRpb24oc3RyaW5nKSA9PiB1bml0KTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXyA9PiBQcmludGYucHJpbnRmKFwiRVJST1I6IExvZy5JREJLVi5nZXRcIik7XG4gICAgd2l0aF9kYihkYiA9PiBTdG9yZS5nZXQofmVycm9yLCBrdl9zdG9yZShkYiksIGYsIEsoa2V5KSkpO1xuICB9O1xuXG4gIGxldCBnZXRfYWxsID0gKGY6IGxpc3Qoc3RyaW5nKSA9PiB1bml0KTogdW5pdCA9PiB7XG4gICAgbGV0IGVycm9yID0gXyA9PiBQcmludGYucHJpbnRmKFwiRVJST1I6IExvZy5JREJLVi5nZXRfYWxsXCIpO1xuICAgIHdpdGhfZGIoZGIgPT4gU3RvcmUuZ2V0X2FsbCh+ZXJyb3IsIGt2X3N0b3JlKGRiKSwgZikpO1xuICB9O1xuXG4gIGxldCBjbGVhcl9hbmQgPSAoY2FsbGJhY2spOiB1bml0ID0+IHtcbiAgICBsZXQgZXJyb3IgPSBfID0+IFByaW50Zi5wcmludGYoXCJFUlJPUjogTG9nLklEQktWLmNsZWFyXCIpO1xuICAgIHdpdGhfZGIoZGIgPT4gU3RvcmUuY2xlYXIofmVycm9yLCB+Y2FsbGJhY2ssIGt2X3N0b3JlKGRiKSkpO1xuICB9O1xufTtcblxubW9kdWxlIEVudHJ5ID0ge1xuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG4gIHR5cGUgdCA9IChNb2RlbC50aW1lc3RhbXAsIFVwZGF0ZUFjdGlvbi50KTtcblxuICBbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG4gIHR5cGUgcyA9IGxpc3QodCk7XG5cbiAgbGV0IG1rID0gKHVwZGF0ZSk6IHQgPT4ge1xuICAgIChKc1V0aWwudGltZXN0YW1wKCksIHVwZGF0ZSk7XG4gIH07XG5cbiAgbGV0IHNhdmUgPSAoKHRzLCBhY3Rpb24pOiB0KSA9PlxuICAgIERCLmFkZChcbiAgICAgIFByaW50Zi5zcHJpbnRmKFwiJS4wZlwiLCB0cyksXG4gICAgICAodHMsIGFjdGlvbikgfD4gc2V4cF9vZl90IHw+IFNleHBsaWIuU2V4cC50b19zdHJpbmcsXG4gICAgKTtcbn07XG5cbmxldCBpbXBvcnQgPSAoZGF0YTogc3RyaW5nKTogdW5pdCA9PlxuICAvKiBTaG91bGQgYmUgZmluZSB0byBmaXJlIHNhdmVzIGNvbmN1cnJlbnRseT8gKi9cbiAgREIuY2xlYXJfYW5kKCgpID0+XG4gICAgdHJ5KFxuICAgICAgZGF0YVxuICAgICAgfD4gU2V4cGxpYi5TZXhwLm9mX3N0cmluZ1xuICAgICAgfD4gRW50cnkuc19vZl9zZXhwXG4gICAgICB8PiBMaXN0Lml0ZXIoRW50cnkuc2F2ZSlcbiAgICApIHtcbiAgICB8IF8gPT4gUHJpbnRmLnByaW50ZihcIkxvZy5FbnRyeS5pbXBvcnQ6IERlc2VyaWFsaXphdGlvbiBlcnJvclwiKVxuICAgIH1cbiAgKTtcblxubGV0IHVwZGF0ZSA9IChhY3Rpb246IFVwZGF0ZUFjdGlvbi50KTogdW5pdCA9PlxuICBpZiAoaXNfYWN0aW9uX2xvZ2dlZChhY3Rpb24pKSB7XG4gICAgRW50cnkuc2F2ZShFbnRyeS5tayhhY3Rpb24pKTtcbiAgfTtcblxubGV0IGdldF9hbmQgPSAoZjogc3RyaW5nID0+IHVuaXQpOiB1bml0ID0+XG4gIERCLmdldF9hbGwoZW50cmllcyA9PiBmKFwiKFwiICsrIFN0cmluZy5jb25jYXQoXCIgXCIsIGVudHJpZXMpICsrIFwiKVwiKSk7XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFsbCA9IHtcbiAgc2V0dGluZ3M6IHN0cmluZyxcbiAgZXhwbGFpblRoaXNNb2RlbDogc3RyaW5nLFxuICBzY3JhdGNoOiBzdHJpbmcsXG4gIGV4ZXJjaXNlOiBzdHJpbmcsXG4gIGRvY3VtZW50YXRpb246IHN0cmluZyxcbiAgbG9nOiBzdHJpbmcsXG59O1xuXG4vLyBmYWxsYmFjayBmb3Igc2F2ZWQgc3RhdGUgcHJpb3IgdG8gcmVsZWFzZSBvZiBsYW5nIGRvYyBpbiA0OTBGMjJcbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWxsX2YyMiA9IHtcbiAgc2V0dGluZ3M6IHN0cmluZyxcbiAgc2NyYXRjaDogc3RyaW5nLFxuICBleGVyY2lzZTogc3RyaW5nLFxuICBsb2c6IHN0cmluZyxcbn07XG5cbmxldCBta19hbGwgPSAofmluc3RydWN0b3JfbW9kZSwgfmxvZykgPT4ge1xuICBsZXQgc2V0dGluZ3MgPSBTdG9yZS5TZXR0aW5ncy5leHBvcnQoKTtcbiAgbGV0IGV4cGxhaW5UaGlzTW9kZWwgPSBTdG9yZS5FeHBsYWluVGhpc01vZGVsLmV4cG9ydCgpO1xuICBsZXQgc2NyYXRjaCA9IFN0b3JlLlNjcmF0Y2guZXhwb3J0KH5zZXR0aW5ncz1IYXozbGNvcmUuQ29yZVNldHRpbmdzLm9mZik7XG4gIGxldCBkb2N1bWVudGF0aW9uID1cbiAgICBTdG9yZS5Eb2N1bWVudGF0aW9uLmV4cG9ydCh+c2V0dGluZ3M9SGF6M2xjb3JlLkNvcmVTZXR0aW5ncy5vZmYpO1xuICBsZXQgZXhlcmNpc2UgPVxuICAgIFN0b3JlLkV4ZXJjaXNlLmV4cG9ydChcbiAgICAgIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyxcbiAgICAgIH5pbnN0cnVjdG9yX21vZGUsXG4gICAgKTtcbiAge3NldHRpbmdzLCBleHBsYWluVGhpc01vZGVsLCBzY3JhdGNoLCBkb2N1bWVudGF0aW9uLCBleGVyY2lzZSwgbG9nfTtcbn07XG5cbmxldCBleHBvcnRfYWxsID0gKH5pbnN0cnVjdG9yX21vZGUsIH5sb2cpID0+IHtcbiAgbWtfYWxsKH5pbnN0cnVjdG9yX21vZGUsIH5sb2cpIHw+IHlvanNvbl9vZl9hbGw7XG59O1xuXG5sZXQgaW1wb3J0X2FsbCA9IChkYXRhLCB+c3BlY3MpID0+IHtcbiAgbGV0IGFsbCA9XG4gICAgdHJ5KGRhdGEgfD4gWW9qc29uLlNhZmUuZnJvbV9zdHJpbmcgfD4gYWxsX29mX3lvanNvbikge1xuICAgIHwgXyA9PlxuICAgICAgbGV0IGFsbF9mMjIgPSBkYXRhIHw+IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHw+IGFsbF9mMjJfb2ZfeW9qc29uO1xuICAgICAge1xuICAgICAgICBzZXR0aW5nczogYWxsX2YyMi5zZXR0aW5ncyxcbiAgICAgICAgc2NyYXRjaDogYWxsX2YyMi5zY3JhdGNoLFxuICAgICAgICBkb2N1bWVudGF0aW9uOiBcIlwiLFxuICAgICAgICBleGVyY2lzZTogYWxsX2YyMi5leGVyY2lzZSxcbiAgICAgICAgbG9nOiBhbGxfZjIyLmxvZyxcbiAgICAgICAgZXhwbGFpblRoaXNNb2RlbDogXCJcIixcbiAgICAgIH07XG4gICAgfTtcbiAgbGV0IHNldHRpbmdzID0gU3RvcmUuU2V0dGluZ3MuaW1wb3J0KGFsbC5zZXR0aW5ncyk7XG4gIFN0b3JlLkV4cGxhaW5UaGlzTW9kZWwuaW1wb3J0KGFsbC5leHBsYWluVGhpc01vZGVsKTtcbiAgbGV0IGluc3RydWN0b3JfbW9kZSA9IHNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgU3RvcmUuU2NyYXRjaC5pbXBvcnQofnNldHRpbmdzPXNldHRpbmdzLmNvcmUsIGFsbC5zY3JhdGNoKTtcbiAgU3RvcmUuRXhlcmNpc2UuaW1wb3J0KGFsbC5leGVyY2lzZSwgfnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKTtcbiAgTG9nLmltcG9ydChhbGwubG9nKTtcbn07XG4iLCJ0eXBlIHQgPSB1bml0O1xubGV0IGluaXQgPSAoKSA9PiAoKTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5pbmNsdWRlIFVwZGF0ZUFjdGlvbjsgLy8gdG8gcHJldmVudCBjaXJjdWxhcml0eVxuXG5sZXQgc2NoZWR1bGVfZXZhbHVhdGlvbiA9ICh+c2NoZWR1bGVfYWN0aW9uLCBtb2RlbDogTW9kZWwudCk6IHVuaXQgPT5cbiAgaWYgKG1vZGVsLmdsb2JhbHMuc2V0dGluZ3MuY29yZS5keW5hbWljcykge1xuICAgIGxldCBlbGFicyA9XG4gICAgICBFZGl0b3JzLmdldF9zcGxpY2VkX2VsYWJzKFxuICAgICAgICB+c2V0dGluZ3M9bW9kZWwuZ2xvYmFscy5zZXR0aW5ncyxcbiAgICAgICAgbW9kZWwuc3RhdGljcyxcbiAgICAgICAgbW9kZWwuZWRpdG9ycyxcbiAgICAgICk7XG4gICAgbGV0IGV2YWxfcnMgPVxuICAgICAgTGlzdC5tYXAoKChuLCB7ZH06IEVsYWJvcmF0b3IuRWxhYm9yYXRpb24udCkpID0+IChuLCBkKSwgZWxhYnMpO1xuICAgIGlmIChMaXN0Lmxlbmd0aChldmFsX3JzKSAhPSAwKSB7XG4gICAgICBXb3JrZXJDbGllbnQucmVxdWVzdChcbiAgICAgICAgZXZhbF9ycyxcbiAgICAgICAgfmhhbmRsZXI9cnMgPT4gc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZUV2YWxzKHJzKSksXG4gICAgICAgIH50aW1lb3V0PVxuICAgICAgICAgIHJxcyA9PlxuICAgICAgICAgICAgc2NoZWR1bGVfYWN0aW9uKFxuICAgICAgICAgICAgICBVcGRhdGVFdmFscyhcbiAgICAgICAgICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgICAgICAgICgobiwgXykpID0+IChuLCBFcnJvcihQcm9ncmFtUmVzdWx0LlRpbWVvdXQpKSxcbiAgICAgICAgICAgICAgICAgIHJxcyxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfTtcbiAgICAvKiBOb3Qgc2VuZGluZyBzdGVwcGVyIHRvIHdvcmtlciBmb3Igbm93IGJjIGNsb3N1cmUgcGVyZiAqL1xuICAgIGxldCBuZXdfcnMgPVxuICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgfD4gTW9kZWxSZXN1bHRzLnVwZGF0ZV9lbGFicyhcbiAgICAgICAgICAgfnNldHRpbmdzPW1vZGVsLmdsb2JhbHMuc2V0dGluZ3MuY29yZSxcbiAgICAgICAgICAgZWxhYnMsXG4gICAgICAgICApO1xuICAgIGxldCBzdGVwX3JzID0gTW9kZWxSZXN1bHRzLnRvX3N0ZXAobmV3X3JzKTtcbiAgICBpZiAoIU1vZGVsUmVzdWx0cy5pc19lbXB0eShzdGVwX3JzKSkge1xuICAgICAgbGV0IG5ld19ycyA9XG4gICAgICAgIHN0ZXBfcnNcbiAgICAgICAgfD4gTW9kZWxSZXN1bHRzLnJ1bl9wZW5kaW5nKH5zZXR0aW5ncz1tb2RlbC5nbG9iYWxzLnNldHRpbmdzLmNvcmUpO1xuICAgICAgc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZVJlc3VsdChuZXdfcnMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2NoZWR1bGVfYWN0aW9uKFVwZGF0ZVJlc3VsdChuZXdfcnMpKTtcbiAgICB9O1xuICB9O1xuXG5sZXQgdXBkYXRlX2NhY2hlZF9kYXRhID0gKH5zY2hlZHVsZV9hY3Rpb24sIHVwZGF0ZSwgbTogTW9kZWwudCk6IE1vZGVsLnQgPT4ge1xuICBsZXQgdXBkYXRlX3N0YXRpY3MgPSBpc19lZGl0KHVwZGF0ZSkgfHwgcmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSh1cGRhdGUpO1xuICBsZXQgdXBkYXRlX2R5bmFtaWNzID0gcmVldmFsdWF0ZV9wb3N0X3VwZGF0ZSh1cGRhdGUpO1xuICBsZXQgbSA9XG4gICAgdXBkYXRlX3N0YXRpY3MgfHwgdXBkYXRlX2R5bmFtaWNzICYmIG0uZ2xvYmFscy5zZXR0aW5ncy5jb3JlLnN0YXRpY3NcbiAgICAgID8ge1xuICAgICAgICAuLi5tLFxuICAgICAgICBzdGF0aWNzOiBFZGl0b3JzLm1rX3N0YXRpY3MofnNldHRpbmdzPW0uZ2xvYmFscy5zZXR0aW5ncywgbS5lZGl0b3JzKSxcbiAgICAgIH1cbiAgICAgIDogbTtcbiAgaWYgKHVwZGF0ZV9keW5hbWljcyAmJiBtLmdsb2JhbHMuc2V0dGluZ3MuY29yZS5keW5hbWljcykge1xuICAgIHNjaGVkdWxlX2V2YWx1YXRpb24ofnNjaGVkdWxlX2FjdGlvbiwgbSk7XG4gICAgbTtcbiAgfSBlbHNlIHtcbiAgICBtO1xuICB9O1xufTtcblxubGV0IHBlcmZvcm1fYWN0aW9uID0gKG1vZGVsOiBNb2RlbC50LCBhOiBBY3Rpb24udCk6IFJlc3VsdC50KE1vZGVsLnQpID0+XG4gIHN3aXRjaCAoXG4gICAgRWRpdG9ycy5nZXRfc2VsZWN0ZWRfZWRpdG9yKFxuICAgICAgfnNlbGVjdGlvbj1tb2RlbC5hY3RpdmVfZWRpdG9yIHw+IE9wdGlvbi5nZXQsXG4gICAgICBtb2RlbC5lZGl0b3JzLFxuICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICApXG4gICAgfD4gT3B0aW9uLmdldFxuICAgIHw+IEhhejNsY29yZS5QZXJmb3JtLmdvKH5zZXR0aW5ncz1tb2RlbC5nbG9iYWxzLnNldHRpbmdzLmNvcmUsIGEpXG4gICkge1xuICB8IGV4Y2VwdGlvbiAoSW52YWxpZF9hcmd1bWVudChfKSkgPT4gT2sobW9kZWwpXG4gIHwgRXJyb3IoZXJyKSA9PiBFcnJvcihGYWlsZWRUb1BlcmZvcm0oZXJyKSlcbiAgfCBPayhlZCkgPT5cbiAgICBsZXQgKGVkaXRvcnMsIHJlc3VsdHMpID1cbiAgICAgIEVkaXRvcnMucHV0X3NlbGVjdGVkX2VkaXRvcihcbiAgICAgICAgfnNlbGVjdGlvbj1tb2RlbC5hY3RpdmVfZWRpdG9yIHw+IE9wdGlvbi5nZXQsXG4gICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgIGVkLFxuICAgICAgKTtcbiAgICBsZXQgbW9kZWwgPSB7Li4ubW9kZWwsIGVkaXRvcnMsIHJlc3VsdHN9O1xuICAgIC8qIE5vdGU6IE5vdCBzYXZpbmcgaGVyZSBhcyBzYXZpbmcgaXMgY29zdGx5IHRvIGRvIGVhY2gga2V5c3Ryb2tlLFxuICAgICAgIHdlIHdhaXQgYSBzZWNvbmQgYWZ0ZXIgdGhlIGxhc3QgZWRpdCBhY3Rpb24gKHNlZSBNYWluLnJlKSAqL1xuICAgIE9rKG1vZGVsKTtcbiAgfTtcblxubGV0IHJlYyBwZXJmb3JtX2FjdGlvbnMgPSAobW9kZWw6IE1vZGVsLnQpID0+XG4gIGZ1blxuICB8IFtdID0+IE9rKG1vZGVsKVxuICB8IFthLCAuLi5fYXNdID0+XG4gICAgc3dpdGNoIChwZXJmb3JtX2FjdGlvbihtb2RlbCwgYSkpIHtcbiAgICB8IE9rKG1vZGVsKSA9PiBwZXJmb3JtX2FjdGlvbnMobW9kZWwsIF9hcylcbiAgICB8IEVycm9yKF8pIGFzIGVyciA9PiBlcnJcbiAgICB9O1xuXG5sZXQgc3dpdGNoX3NjcmF0Y2hfc2xpZGUgPVxuICAgIChlZGl0b3JzOiBFZGl0b3JzLnQsIH5pbnN0cnVjdG9yX21vZGUsIGlkeDogaW50KTogb3B0aW9uKEVkaXRvcnMudCkgPT5cbiAgc3dpdGNoIChlZGl0b3JzKSB7XG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBOb25lXG4gIHwgU2NyYXRjaChuLCBfKSB3aGVuIG4gPT0gaWR4ID0+IE5vbmVcbiAgfCBTY3JhdGNoKF8sIHNsaWRlcykgd2hlbiBpZHggPj0gTGlzdC5sZW5ndGgoc2xpZGVzKSA9PiBOb25lXG4gIHwgU2NyYXRjaChfLCBzbGlkZXMpID0+IFNvbWUoU2NyYXRjaChpZHgsIHNsaWRlcykpXG4gIHwgRXhlcmNpc2VzKF8sIHNwZWNzLCBfKSB3aGVuIGlkeCA+PSBMaXN0Lmxlbmd0aChzcGVjcykgPT4gTm9uZVxuICB8IEV4ZXJjaXNlcyhfLCBzcGVjcywgXykgPT5cbiAgICBsZXQgc3BlYyA9IExpc3QubnRoKHNwZWNzLCBpZHgpO1xuICAgIGxldCBrZXkgPSBFeGVyY2lzZS5rZXlfb2Yoc3BlYyk7XG4gICAgbGV0IGV4ZXJjaXNlID0gU3RvcmUuRXhlcmNpc2UubG9hZF9leGVyY2lzZShrZXksIHNwZWMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgIFNvbWUoRXhlcmNpc2VzKGlkeCwgc3BlY3MsIGV4ZXJjaXNlKSk7XG4gIH07XG5cbi8qIFRoaXMgYWN0aW9uIHNhdmVzIGEgZmlsZSB3aGljaCBzZXJpYWxpemVzIGFsbCBjdXJyZW50IGVkaXRvclxuICAgc2V0dGluZ3MsIGluY2x1ZGluZyB0aGUgc3RhdGVzIG9mIGFsbCBTY3JhdGNoIGFuZCBFeGFtcGxlIHNsaWRlcy5cbiAgIFRoaXMgc2F2ZWQgZmlsZSBjYW4gZGlyZWN0bHkgcmVwbGFjZSBIYXozbHdlYi9Jbml0Lm1sLCBhbGxvd2luZ1xuICAgeW91IHRvIG1ha2UgeW91ciBjdXJyZW50IHN0YXRlIHRoZSBkZWZhdWx0IHN0YXJ0dXAgc3RhdGUuXG5cbiAgIFRoaXMgZG9lcyBOT1Qgc2F2ZSBhbnkgRXhlcmNpc2VzIG1vZGUgc3RhdGUgb3IgYW55IGxhbmdkb2NzXG4gICBzdGF0ZS4gVGhlIGxhdHRlciBpcyBpbnRlbnRpb25hbCBhcyB3ZSBkb24ndCB3YW50IHRvIHBlcnNpc3RcbiAgIHRoaXMgYmV0d2VlbiB1c2Vycy4gVGhlIGZvcm1lciBpcyBhIFRPRE8sIGN1cnJlbnRseSBkaWZmaWN1bHRcbiAgIGR1ZSB0byB0aGUgbW9yZSBjb21wbGV4IGFyY2hpdGVjdHVyZSBvZiBFeGVyY2lzZXMuICovXG5sZXQgZXhwb3J0X3BlcnNpc3RlbnRfZGF0YSA9ICgpID0+IHtcbiAgbGV0IGRhdGE6IFBlcnNpc3RlbnREYXRhLnQgPSB7XG4gICAgZG9jdW1lbnRhdGlvbjpcbiAgICAgIFN0b3JlLkRvY3VtZW50YXRpb24ubG9hZCh+c2V0dGluZ3M9Q29yZVNldHRpbmdzLm9mZilcbiAgICAgIHw+IFN0b3JlLkRvY3VtZW50YXRpb24udG9fcGVyc2lzdGVudCxcbiAgICBzY3JhdGNoOlxuICAgICAgU3RvcmUuU2NyYXRjaC5sb2FkKH5zZXR0aW5ncz1Db3JlU2V0dGluZ3Mub2ZmKVxuICAgICAgfD4gU3RvcmUuU2NyYXRjaC50b19wZXJzaXN0ZW50LFxuICAgIHNldHRpbmdzOiBTdG9yZS5TZXR0aW5ncy5sb2FkKCksXG4gIH07XG4gIGxldCBjb250ZW50cyA9XG4gICAgXCJsZXQgc3RhcnR1cCA6IFBlcnNpc3RlbnREYXRhLnQgPSBcIiArKyBQZXJzaXN0ZW50RGF0YS5zaG93KGRhdGEpO1xuICBKc1V0aWwuZG93bmxvYWRfc3RyaW5nX2ZpbGUoXG4gICAgfmZpbGVuYW1lPVwiSW5pdC5tbFwiLFxuICAgIH5jb250ZW50X3R5cGU9XCJ0ZXh0L3BsYWluXCIsXG4gICAgfmNvbnRlbnRzLFxuICApO1xuICBwcmludF9lbmRsaW5lKFwiSU5GTzogUGVyc2lzdGVudCBkYXRhIGV4cG9ydGVkIHRvIEluaXQubWxcIik7XG59O1xuXG5sZXQgcmVjIGFwcGx5ID1cbiAgICAgICAgKG1vZGVsOiBNb2RlbC50LCB1cGRhdGU6IHQsIHN0YXRlOiBTdGF0ZS50LCB+c2NoZWR1bGVfYWN0aW9uKVxuICAgICAgICA6IFJlc3VsdC50KE1vZGVsLnQpID0+IHtcbiAgbGV0IG06IFJlc3VsdC50KE1vZGVsLnQpID1cbiAgICBzd2l0Y2ggKHVwZGF0ZSkge1xuICAgIHwgUmVzZXQgPT4gT2soTW9kZWwucmVzZXQobW9kZWwpKVxuICAgIHwgR2xvYmFscyhTZXRNb3VzZWRvd24oYikpID0+XG4gICAgICBPayh7XG4gICAgICAgIC4uLm1vZGVsLFxuICAgICAgICBnbG9iYWxzOiB7XG4gICAgICAgICAgLi4ubW9kZWwuZ2xvYmFscyxcbiAgICAgICAgICBtb3VzZWRvd246IGIsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIHwgR2xvYmFscyhTZXRTaG93QmFja3BhY2tUYXJnZXRzKGIpKSA9PlxuICAgICAgT2soe1xuICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgZ2xvYmFsczoge1xuICAgICAgICAgIC4uLm1vZGVsLmdsb2JhbHMsXG4gICAgICAgICAgc2hvd19iYWNrcGFja190YXJnZXRzOiBiLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB8IEdsb2JhbHMoU2V0Rm9udE1ldHJpY3MoZm0pKSA9PlxuICAgICAgT2soe1xuICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgZ2xvYmFsczoge1xuICAgICAgICAgIC4uLm1vZGVsLmdsb2JhbHMsXG4gICAgICAgICAgZm9udF9tZXRyaWNzOiBmbSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfCBHbG9iYWxzKFNldChzKSkgPT5cbiAgICAgIE9rKHtcbiAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgIGdsb2JhbHM6IHtcbiAgICAgICAgICAuLi5tb2RlbC5nbG9iYWxzLFxuICAgICAgICAgIHNldHRpbmdzOiBTZXR0aW5ncy5VcGRhdGUudXBkYXRlKHMsIG1vZGVsLmdsb2JhbHMuc2V0dGluZ3MpLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB8IEdsb2JhbHMoSnVtcFRvVGlsZSh0aWxlKSkgPT5cbiAgICAgIC8vIFRPRE86IGp1bXAgdG8gdGlsZXMgaW4gb3RoZXIgZWRpdG9yc1xuICAgICAgcGVyZm9ybV9hY3Rpb25zKG1vZGVsLCBbSnVtcChUaWxlSWQodGlsZSkpXSlcbiAgICB8IFVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwodSkgPT5cbiAgICAgIGxldCBleHBsYWluVGhpc01vZGVsID1cbiAgICAgICAgRXhwbGFpblRoaXNVcGRhdGUuc2V0X3VwZGF0ZShtb2RlbC5leHBsYWluVGhpc01vZGVsLCB1KTtcbiAgICAgIE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGV4cGxhaW5UaGlzTW9kZWx9KTtcbiAgICB8IERlYnVnQ29uc29sZShrZXkpID0+XG4gICAgICBEZWJ1Z0NvbnNvbGUucHJpbnQobW9kZWwsIGtleSk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBTYXZlID0+IE1vZGVsLnNhdmVfYW5kX3JldHVybihtb2RlbClcbiAgICB8IEluaXRJbXBvcnRBbGwoZmlsZSkgPT5cbiAgICAgIEpzVXRpbC5yZWFkX2ZpbGUoZmlsZSwgZGF0YSA9PiBzY2hlZHVsZV9hY3Rpb24oRmluaXNoSW1wb3J0QWxsKGRhdGEpKSk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBGaW5pc2hJbXBvcnRBbGwoZGF0YSkgPT5cbiAgICAgIHN3aXRjaCAoZGF0YSkge1xuICAgICAgfCBOb25lID0+IE9rKG1vZGVsKVxuICAgICAgfCBTb21lKGRhdGEpID0+XG4gICAgICAgIEV4cG9ydC5pbXBvcnRfYWxsKGRhdGEsIH5zcGVjcz1FeGVyY2lzZVNldHRpbmdzLmV4ZXJjaXNlcyk7XG4gICAgICAgIE9rKE1vZGVsLmxvYWQoKSk7XG4gICAgICB9XG4gICAgfCBJbml0SW1wb3J0U2NyYXRjaHBhZChmaWxlKSA9PlxuICAgICAgSnNVdGlsLnJlYWRfZmlsZShmaWxlLCBkYXRhID0+XG4gICAgICAgIHNjaGVkdWxlX2FjdGlvbihGaW5pc2hJbXBvcnRTY3JhdGNocGFkKGRhdGEpKVxuICAgICAgKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IEZpbmlzaEltcG9ydFNjcmF0Y2hwYWQoZGF0YSkgPT5cbiAgICAgIGxldCBlZGl0b3JzID0gRWRpdG9ycy5pbXBvcnRfY3VycmVudChtb2RlbC5lZGl0b3JzLCBkYXRhKTtcbiAgICAgIE1vZGVsLnNhdmVfYW5kX3JldHVybih7Li4ubW9kZWwsIGVkaXRvcnN9KTtcbiAgICB8IEV4cG9ydFBlcnNpc3RlbnREYXRhID0+XG4gICAgICBleHBvcnRfcGVyc2lzdGVudF9kYXRhKCk7XG4gICAgICBPayhtb2RlbCk7XG4gICAgfCBSZXNldEN1cnJlbnRFZGl0b3IgPT5cbiAgICAgIGxldCBpbnN0cnVjdG9yX21vZGUgPSBtb2RlbC5nbG9iYWxzLnNldHRpbmdzLmluc3RydWN0b3JfbW9kZTtcbiAgICAgIGxldCBlZGl0b3JzID0gRWRpdG9ycy5yZXNldF9jdXJyZW50KG1vZGVsLmVkaXRvcnMsIH5pbnN0cnVjdG9yX21vZGUpO1xuICAgICAgTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pO1xuICAgIHwgU3dpdGNoU2NyYXRjaFNsaWRlKG4pID0+XG4gICAgICBsZXQgaW5zdHJ1Y3Rvcl9tb2RlID0gbW9kZWwuZ2xvYmFscy5zZXR0aW5ncy5pbnN0cnVjdG9yX21vZGU7XG4gICAgICBzd2l0Y2ggKHN3aXRjaF9zY3JhdGNoX3NsaWRlKG1vZGVsLmVkaXRvcnMsIH5pbnN0cnVjdG9yX21vZGUsIG4pKSB7XG4gICAgICB8IE5vbmUgPT4gRXJyb3IoRmFpbGVkVG9Td2l0Y2gpXG4gICAgICB8IFNvbWUoZWRpdG9ycykgPT4gTW9kZWwuc2F2ZV9hbmRfcmV0dXJuKHsuLi5tb2RlbCwgZWRpdG9yc30pXG4gICAgICB9O1xuICAgIHwgU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKG5hbWUpID0+XG4gICAgICBzd2l0Y2ggKEVkaXRvcnMuc3dpdGNoX2V4YW1wbGVfc2xpZGUobW9kZWwuZWRpdG9ycywgbmFtZSkpIHtcbiAgICAgIHwgTm9uZSA9PiBFcnJvcihGYWlsZWRUb1N3aXRjaClcbiAgICAgIHwgU29tZShlZGl0b3JzKSA9PiBNb2RlbC5zYXZlX2FuZF9yZXR1cm4oey4uLm1vZGVsLCBlZGl0b3JzfSlcbiAgICAgIH1cbiAgICB8IE1ha2VBY3RpdmUocG9zKSA9PiBPayh7Li4ubW9kZWwsIGFjdGl2ZV9lZGl0b3I6IFNvbWUocG9zKX0pXG4gICAgfCBUQUIgPT5cbiAgICAgIC8qIEF0dGVtcHQgdG8gYWN0IGludGVsbGlnZW50bHkgd2hlbiBUQUIgaXMgcHJlc3NlZC5cbiAgICAgICAqIFRPRE8oYW5kcmV3KTogQ29uc2lkZXIgbW9yZSBhZHZhbmNlZCBUQUIgbG9naWMuIEluc3RlYWRcbiAgICAgICAqIG9mIHNpbXBseSBtb3ZpbmcgdG8gbmV4dCBob2xlLCBpZiB0aGUgYmFja3BhY2sgaXMgbm9uLWVtcHR5XG4gICAgICAgKiBidXQgY2FuJ3QgaW1tZWRpYXRlbHkgcHV0IGRvd24sIG1vdmUgdG8gbmV4dCBwb3NpdGlvbiBvZlxuICAgICAgICogaW50ZXJlc3QsIHdoaWNoIGlzIGNsb3NldCBvZjogbmVhcmVzdCBwb3NpdGlvbiB3aGVyZSBjYW5cbiAgICAgICAqIHB1dCBkb3duLCBmYXJ0aGVzdCBwb3NpdGlvbiB3aGVyZSBjYW4gcHV0IGRvd24sIG5leHQgaG9sZSAqL1xuICAgICAgbGV0IHogPVxuICAgICAgICBFZGl0b3JzLmdldF9zZWxlY3RlZF9lZGl0b3IoXG4gICAgICAgICAgfnNlbGVjdGlvbj1tb2RlbC5hY3RpdmVfZWRpdG9yIHw+IE9wdGlvbi5nZXQsXG4gICAgICAgICAgbW9kZWwuZWRpdG9ycyxcbiAgICAgICAgICBtb2RlbC5yZXN1bHRzLFxuICAgICAgICApXG4gICAgICAgIHw+IE9wdGlvbi5nZXRcbiAgICAgICAgfD4gKChlZDogRWRpdG9yLnQpID0+IGVkLnN0YXRlLnppcHBlcik7XG4gICAgICBsZXQgYSA9XG4gICAgICAgIFNlbGVjdGlvbi5pc19idWZmZXIoei5zZWxlY3Rpb24pXG4gICAgICAgICAgPyBBc3Npc3RhbnQoQWNjZXB0U3VnZ2VzdGlvbilcbiAgICAgICAgICA6IFppcHBlci5jYW5fcHV0X2Rvd24oeilcbiAgICAgICAgICAgICAgPyBQZXJmb3JtQWN0aW9uKFB1dF9kb3duKSA6IE1vdmVUb05leHRIb2xlKFJpZ2h0KTtcbiAgICAgIGFwcGx5KG1vZGVsLCBhLCBzdGF0ZSwgfnNjaGVkdWxlX2FjdGlvbik7XG4gICAgfCBQZXJmb3JtQWN0aW9uKGEpXG4gICAgICAgIHdoZW5cbiAgICAgICAgICBtb2RlbC5nbG9iYWxzLnNldHRpbmdzLmNvcmUuYXNzaXN0XG4gICAgICAgICAgJiYgbW9kZWwuZ2xvYmFscy5zZXR0aW5ncy5jb3JlLnN0YXRpY3MgPT5cbiAgICAgIG9wZW4gUmVzdWx0LlN5bnRheDtcbiAgICAgIGxldCogbW9kZWwgPSBwZXJmb3JtX2FjdGlvbnMobW9kZWwsIFtSZXNldFN1Z2dlc3Rpb24sIGFdKTtcbiAgICAgIC8vIGxldCBhY3Rpb25zID1cbiAgICAgIC8vICAgVXBkYXRlQXNzaXN0YW50LmFzc2lzdGFudF9hY3Rpb25fdG9fZWRpdG9yX2FjdGlvbnMoXG4gICAgICAvLyAgICAgbW9kZWwsXG4gICAgICAvLyAgICAgUHJvbXB0KFR5RGkpLFxuICAgICAgLy8gICApO1xuICAgICAgLy8gcGVyZm9ybV9hY3Rpb25zKG1vZGVsLCBhY3Rpb25zKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFBlcmZvcm1BY3Rpb24oYSkgPT4gcGVyZm9ybV9hY3Rpb24obW9kZWwsIGEpXG4gICAgfCBSZXBhcnNlQ3VycmVudEVkaXRvciA9PlxuICAgICAgLyogVGhpcyBzZXJpYWxpemVzIHRoZSBjdXJyZW50IGVkaXRvciB0byB0ZXh0LCByZXNldHMgdGhlIGN1cnJlbnRcbiAgICAgICAgIGVkaXRvciwgYW5kIHRoZW4gZGVzZXJpYWxpemVzLiBJdCBpcyBpbnRlbmRlZCBhcyBhICh0YWN0aWNhbClcbiAgICAgICAgIG51Y2xlYXIgb3B0aW9uIGZvciB3ZWlyZCBiYWNrcGFjayBzdGF0ZXMgKi9cbiAgICAgIHN3aXRjaCAobW9kZWwuYWN0aXZlX2VkaXRvcikge1xuICAgICAgfCBOb25lID0+IE9rKG1vZGVsKVxuICAgICAgfCBTb21lKHNlbGVjdGlvbikgPT5cbiAgICAgICAgc3dpdGNoIChcbiAgICAgICAgICBFZGl0b3JzLmdldF9zZWxlY3RlZF9lZGl0b3IoXG4gICAgICAgICAgICB+c2VsZWN0aW9uLFxuICAgICAgICAgICAgbW9kZWwuZWRpdG9ycyxcbiAgICAgICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgfCBTb21lKGVkKSA9PlxuICAgICAgICAgIGxldCB6aXBwZXJfaW5pdCA9IFppcHBlci5pbml0KCk7XG4gICAgICAgICAgbGV0IGVkX3N0ciA9IFByaW50ZXIudG9fc3RyaW5nX2VkaXRvcihlZCk7XG4gICAgICAgICAgc3dpdGNoIChQcmludGVyLnppcHBlcl9vZl9zdHJpbmcofnppcHBlcl9pbml0LCBlZF9zdHIpKSB7XG4gICAgICAgICAgfCBOb25lID0+IEVycm9yKENhbnRSZXNldClcbiAgICAgICAgICB8IFNvbWUoeikgPT5cbiAgICAgICAgICAgIC8vVE9ETzogYWRkIGNvcnJlY3QgYWN0aW9uIHRvIGhpc3RvcnkgKFBpY2tfdXAgaXMgd3JvbmcpXG4gICAgICAgICAgICBsZXQgZWRpdG9yID0gSGF6M2xjb3JlLkVkaXRvci5uZXdfc3RhdGUoUGlja191cCwgeiwgZWQpO1xuICAgICAgICAgICAgbGV0IChlZGl0b3JzLCByZXN1bHRzKSA9XG4gICAgICAgICAgICAgIEVkaXRvcnMucHV0X3NlbGVjdGVkX2VkaXRvcihcbiAgICAgICAgICAgICAgICB+c2VsZWN0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgICAgICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICAgICAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBPayh7Li4ubW9kZWwsIGVkaXRvcnMsIHJlc3VsdHN9KTtcbiAgICAgICAgICB9O1xuICAgICAgICB8IE5vbmUgPT4gT2sobW9kZWwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB8IEN1dCA9PlxuICAgICAgLy8gc3lzdGVtIGNsaXBib2FyZCBoYW5kbGluZyBpdHNlbGYgaXMgZG9uZSBpbiBQYWdlLnZpZXcgaGFuZGxlcnNcbiAgICAgIHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBEZXN0cnVjdChMZWZ0KSlcbiAgICB8IENvcHkgPT5cbiAgICAgIC8vIHN5c3RlbSBjbGlwYm9hcmQgaGFuZGxpbmcgaXRzZWxmIGlzIGRvbmUgaW4gUGFnZS52aWV3IGhhbmRsZXJzXG4gICAgICAvLyBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdGUgYnV0IGluY2x1ZGluZyBhcyBhbiBhY3Rpb24gZm9yIGxvZ2dpbmcgcHVycG9zZXNcbiAgICAgIE9rKG1vZGVsKVxuICAgIHwgVW5kbyA9PlxuICAgICAgc3dpdGNoIChcbiAgICAgICAgRWRpdG9ycy51cGRhdGVfc2VsZWN0ZWRfZWRpdG9yKFxuICAgICAgICAgIH5zZWxlY3Rpb249bW9kZWwuYWN0aXZlX2VkaXRvcixcbiAgICAgICAgICBlZGl0b3IgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoSGF6M2xjb3JlLkVkaXRvci51bmRvKGVkaXRvcikpIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihDYW50X3VuZG8pXG4gICAgICAgICAgICB8IFNvbWUoZWRpdG9yKSA9PiBPayhlZGl0b3IpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICB8IE9rKChlZGl0b3JzLCByZXN1bHRzKSkgPT4gT2soey4uLm1vZGVsLCBlZGl0b3JzLCByZXN1bHRzfSlcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGUpKVxuICAgICAgfVxuICAgIHwgUmVkbyA9PlxuICAgICAgc3dpdGNoIChcbiAgICAgICAgRWRpdG9ycy51cGRhdGVfc2VsZWN0ZWRfZWRpdG9yKFxuICAgICAgICAgIH5zZWxlY3Rpb249bW9kZWwuYWN0aXZlX2VkaXRvcixcbiAgICAgICAgICBlZGl0b3IgPT5cbiAgICAgICAgICAgIHN3aXRjaCAoSGF6M2xjb3JlLkVkaXRvci5yZWRvKGVkaXRvcikpIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBFcnJvcihDYW50X3JlZG8pXG4gICAgICAgICAgICB8IFNvbWUoZWRpdG9yKSA9PiBPayhlZGl0b3IpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIG1vZGVsLmVkaXRvcnMsXG4gICAgICAgICAgbW9kZWwucmVzdWx0cyxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICB8IE9rKChlZGl0b3JzLCByZXN1bHRzKSkgPT4gT2soey4uLm1vZGVsLCBlZGl0b3JzLCByZXN1bHRzfSlcbiAgICAgIHwgRXJyb3IoZSkgPT4gRXJyb3IoRmFpbGVkVG9QZXJmb3JtKGUpKVxuICAgICAgfVxuICAgIHwgTW92ZVRvTmV4dEhvbGUoZCkgPT5cbiAgICAgIHBlcmZvcm1fYWN0aW9uKG1vZGVsLCBNb3ZlKEdvYWwoUGllY2UoR3JvdXQsIGQpKSkpXG4gICAgfCBBc3Npc3RhbnQoYWN0aW9uKSA9PlxuICAgICAgcGVyZm9ybV9hY3Rpb25zKFxuICAgICAgICBtb2RlbCxcbiAgICAgICAgVXBkYXRlQXNzaXN0YW50LmFzc2lzdGFudF9hY3Rpb25fdG9fZWRpdG9yX2FjdGlvbnMobW9kZWwsIGFjdGlvbiksXG4gICAgICApXG4gICAgfCBCZW5jaG1hcmsoU3RhcnQpID0+XG4gICAgICBMaXN0Lml0ZXIoc2NoZWR1bGVfYWN0aW9uLCBCZW5jaG1hcmsuYWN0aW9uc18xKTtcbiAgICAgIEJlbmNobWFyay5zdGFydCgpO1xuICAgICAgT2sobW9kZWwpO1xuICAgIHwgQmVuY2htYXJrKEZpbmlzaCkgPT5cbiAgICAgIEJlbmNobWFyay5maW5pc2goKTtcbiAgICAgIE9rKG1vZGVsKTtcbiAgICB8IFN0ZXBwZXJBY3Rpb24oa2V5LCBTdGVwRm9yd2FyZChpZHgpKSA9PlxuICAgICAgbGV0IHIgPVxuICAgICAgICBtb2RlbC5yZXN1bHRzXG4gICAgICAgIHw+IE1vZGVsUmVzdWx0cy5maW5kKGtleSlcbiAgICAgICAgfD4gTW9kZWxSZXN1bHQuc3RlcF9mb3J3YXJkKGlkeCk7XG4gICAgICBPayh7Li4ubW9kZWwsIHJlc3VsdHM6IG1vZGVsLnJlc3VsdHMgfD4gTW9kZWxSZXN1bHRzLmFkZChrZXksIHIpfSk7XG4gICAgfCBTdGVwcGVyQWN0aW9uKGtleSwgU3RlcEJhY2t3YXJkKSA9PlxuICAgICAgbGV0IHIgPVxuICAgICAgICBtb2RlbC5yZXN1bHRzXG4gICAgICAgIHw+IE1vZGVsUmVzdWx0cy5maW5kKGtleSlcbiAgICAgICAgfD4gTW9kZWxSZXN1bHQuc3RlcF9iYWNrd2FyZChcbiAgICAgICAgICAgICB+c2V0dGluZ3M9bW9kZWwuZ2xvYmFscy5zZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sXG4gICAgICAgICAgICk7XG4gICAgICBPayh7Li4ubW9kZWwsIHJlc3VsdHM6IG1vZGVsLnJlc3VsdHMgfD4gTW9kZWxSZXN1bHRzLmFkZChrZXksIHIpfSk7XG4gICAgfCBTdGVwcGVyQWN0aW9uKGtleSwgSGlkZVN0ZXBwZXIpXG4gICAgfCBUb2dnbGVTdGVwcGVyKGtleSkgPT5cbiAgICAgIE9rKHtcbiAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgIHJlc3VsdHM6XG4gICAgICAgICAgbW9kZWwucmVzdWx0c1xuICAgICAgICAgIHw+IE1vZGVsUmVzdWx0cy51cGRhdGUoa2V5LCB2ID0+XG4gICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICB2XG4gICAgICAgICAgICAgICAgIHw+IE9wdGlvbi52YWx1ZSh+ZGVmYXVsdD1Ob0VsYWI6IE1vZGVsUmVzdWx0LnQpXG4gICAgICAgICAgICAgICAgIHw+IE1vZGVsUmVzdWx0LnRvZ2dsZV9zdGVwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgIH5zZXR0aW5ncz1tb2RlbC5nbG9iYWxzLnNldHRpbmdzLmNvcmUsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgKSxcbiAgICAgIH0pXG4gICAgfCBVcGRhdGVSZXN1bHQocmVzdWx0cykgPT5cbiAgICAgIGxldCByZXN1bHRzID1cbiAgICAgICAgTW9kZWxSZXN1bHRzLnVuaW9uKChfLCBfYSwgYikgPT4gU29tZShiKSwgbW9kZWwucmVzdWx0cywgcmVzdWx0cyk7XG4gICAgICBPayh7Li4ubW9kZWwsIHJlc3VsdHN9KTtcbiAgICB8IFVwZGF0ZUV2YWxzKGV2YWxzKSA9PlxuICAgICAgT2soe1xuICAgICAgICAuLi5tb2RlbCxcbiAgICAgICAgcmVzdWx0czpcbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgIChyZXN1bHRzLCAoa2V5LCBldmFsKSkgPT5cbiAgICAgICAgICAgICAgTW9kZWxSZXN1bHRzLnVwZGF0ZShcbiAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgT3B0aW9uLm1hcChNb2RlbFJlc3VsdC51cGRhdGVfZXZhbHVhdGlvbihldmFsKSksXG4gICAgICAgICAgICAgICAgcmVzdWx0cyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1vZGVsLnJlc3VsdHMsXG4gICAgICAgICAgICBldmFscyxcbiAgICAgICAgICApLFxuICAgICAgfSlcbiAgICB9O1xuICBtIHw+IFJlc3VsdC5tYXAofmY9dXBkYXRlX2NhY2hlZF9kYXRhKH5zY2hlZHVsZV9hY3Rpb24sIHVwZGF0ZSkpO1xufTtcbiIsImxldCBsYW0gPSBcIs67XCI7XG5sZXQgdXBfYXJyb3cgPSBcIuKGkVwiO1xubGV0IGRvd25fYXJyb3cgPSBcIuKGk1wiO1xubGV0IGxlZnRfYXJyb3cgPSBcIuKGkFwiO1xubGV0IHJpZ2h0X2Fycm93ID0gXCLihpJcIjtcbmxldCBuYnNwID0gXCJcXHhDMlxceEEwXCI7XG5sZXQgendzcCA9IFwi4oCLXCI7XG5cbmxldCB0eXBlQXJyb3dTeW0gPSBcIuKGklwiOyAvLyBVKzIxOTIgXCJSaWdodHdhcmRzIEFycm93XCJcbmxldCBjYXN0QXJyb3dTeW0gPSBcIuKHqFwiO1xuXG5sZXQgZWxsaXBzaXMgPSBcIlxceEUyXFx4ODBcXHhBNlwiO1xuXG4vLyBjb3BpZWQgZnJvbSBoYXplbFxuLy8gTk9URTogMzAlIGZhc3RlciB0aGFuIENhbW9taWxlXG5sZXQgbGVuZ3RoID0gKHM6IHN0cmluZyk6IGludCA9PiB7XG4gIGxldCBzdG9wID0gU3RyaW5nLmxlbmd0aChzKTtcbiAgbGV0IHJlYyBkaXN0YW5jZV9hdXggPSAoc3RhcnQ6IGludCwgY291bnQ6IGludCkgPT5cbiAgICBpZiAoc3RhcnQgKyBjb3VudCA+PSBzdG9wKSB7XG4gICAgICBzdG9wIC0gY291bnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBuID0gQ2hhci5jb2RlKFN0cmluZy51bnNhZmVfZ2V0KHMsIHN0YXJ0ICsgY291bnQpKTtcbiAgICAgIGlmIChuIDwgMHg4MCkge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCk7XG4gICAgICB9IGVsc2UgaWYgKG4gPCAweGUwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKG4gPCAweGYwKSB7XG4gICAgICAgIGRpc3RhbmNlX2F1eChzdGFydCArIDEsIGNvdW50ICsgMik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaXN0YW5jZV9hdXgoc3RhcnQgKyAxLCBjb3VudCArIDMpO1xuICAgICAgfTtcbiAgICB9O1xuXG4gIGRpc3RhbmNlX2F1eCgwLCAwKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCB0cGF0X3ZpZXcgPSAodHBhdDogSGF6M2xjb3JlLlRQYXQudCk6IHN0cmluZyA9PlxuICBzd2l0Y2ggKHRwYXQudGVybSkge1xuICB8IFZhcih4KSA9PiB4XG4gIHwgXyA9PiBcIj9cIlxuICB9O1xuXG5sZXQgdHlfdmlldyA9IChjbHM6IHN0cmluZywgczogc3RyaW5nKTogTm9kZS50ID0+XG4gIGRpdih+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIGNsc10pLCBbdGV4dChzKV0pO1xuXG5sZXQgYWxpYXNfdmlldyA9IChzOiBzdHJpbmcpOiBOb2RlLnQgPT5cbiAgZGl2KH5hdHRyPWNsc3MoW1widHlwLWFsaWFzLXZpZXdcIl0pLCBbdGV4dChzKV0pO1xuXG5sZXQgcmVjIHZpZXdfdHkgPSAofnN0cmlwX291dGVyX3BhcmVucz1mYWxzZSwgdHk6IEhhejNsY29yZS5UeXAudCk6IE5vZGUudCA9PlxuICBzd2l0Y2ggKFR5cC50ZXJtX29mKHR5KSkge1xuICB8IFVua25vd24ocHJvdikgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBjbHNzKFtcInR5cC12aWV3XCIsIFwiYXRvbVwiLCBcInVua25vd25cIl0pLFxuICAgICAgICAgIEF0dHIudGl0bGUoVHlwLnNob3dfdHlwZV9wcm92ZW5hbmNlKHByb3YpKSxcbiAgICAgICAgXSksXG4gICAgICBbdGV4dChcIj9cIikgLyosIHByb3Zfdmlldyhwcm92KSovXSxcbiAgICApXG4gIHwgUGFyZW5zKHR5KSA9PiB2aWV3X3R5KHR5KVxuICB8IEludCA9PiB0eV92aWV3KFwiSW50XCIsIFwiSW50XCIpXG4gIHwgRmxvYXQgPT4gdHlfdmlldyhcIkZsb2F0XCIsIFwiRmxvYXRcIilcbiAgfCBTdHJpbmcgPT4gdHlfdmlldyhcIlN0cmluZ1wiLCBcIlN0cmluZ1wiKVxuICB8IEJvb2wgPT4gdHlfdmlldyhcIkJvb2xcIiwgXCJCb29sXCIpXG4gIHwgVmFyKG5hbWUpID0+IHR5X3ZpZXcoXCJWYXJcIiwgbmFtZSlcbiAgfCBSZWMobmFtZSwgdCkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiUmVjXCJdKSxcbiAgICAgIFt0ZXh0KFwiUmVjIFwiICsrIHRwYXRfdmlldyhuYW1lKSArKyBcIi4gXCIpLCB2aWV3X3R5KHQpXSxcbiAgICApXG4gIHwgRm9yYWxsKG5hbWUsIHQpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIkZvcmFsbFwiXSksXG4gICAgICBbdGV4dChcImZvcmFsbCBcIiArKyB0cGF0X3ZpZXcobmFtZSkgKysgXCIgLT4gXCIpLCB2aWV3X3R5KHQpXSxcbiAgICApXG4gIHwgTGlzdCh0KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJhdG9tXCIsIFwiTGlzdFwiXSksXG4gICAgICBbdGV4dChcIltcIiksIHZpZXdfdHkodCksIHRleHQoXCJdXCIpXSxcbiAgICApXG4gIHwgQXJyb3codDEsIHQyKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJBcnJvd1wiXSksXG4gICAgICBwYXJlbl92aWV3KHQxKSBAIFt0ZXh0KFwiIC0+IFwiKSwgdmlld190eSh0MildLFxuICAgIClcbiAgfCBQcm9kKFtdKSA9PiBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlByb2RcIl0pLCBbdGV4dChcIigpXCIpXSlcbiAgfCBQcm9kKFtfXSkgPT5cbiAgICBkaXYofmF0dHI9Y2xzcyhbXCJ0eXAtdmlld1wiLCBcIlByb2RcIl0pLCBbdGV4dChcIlNpbmdsZXRvbiBQcm9kdWN0XCIpXSlcbiAgfCBQcm9kKFt0MCwgLi4udHNdKSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPWNsc3MoW1widHlwLXZpZXdcIiwgXCJhdG9tXCIsIFwiUHJvZFwiXSksXG4gICAgICAoXG4gICAgICAgIGlmICghc3RyaXBfb3V0ZXJfcGFyZW5zKSB7XG4gICAgICAgICAgW3RleHQoXCIoXCIpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbXTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICAgQCBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiUHJvZFwiXSksXG4gICAgICAgICAgcGFyZW5fdmlldyh0MClcbiAgICAgICAgICBAIChcbiAgICAgICAgICAgIExpc3QubWFwKHQgPT4gW3RleHQoXCIsIFwiKSwgLi4ucGFyZW5fdmlldyh0KV0sIHRzKVxuICAgICAgICAgICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICAgIEAgKFxuICAgICAgICBpZiAoIXN0cmlwX291dGVyX3BhcmVucykge1xuICAgICAgICAgIFt0ZXh0KFwiKVwiKV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgW107XG4gICAgICAgIH1cbiAgICAgICksXG4gICAgKVxuICB8IFN1bSh0cykgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1jbHNzKFtcInR5cC12aWV3XCIsIFwiU3VtXCJdKSxcbiAgICAgIHN3aXRjaCAodHMpIHtcbiAgICAgIHwgW10gPT4gW3RleHQoXCJOdWxsYXJ5IFN1bVwiKV1cbiAgICAgIHwgW3QwXSA9PiBbdGV4dChcIitcIildIEAgY3RyX3ZpZXcodDApXG4gICAgICB8IFt0MCwgLi4udHNdID0+XG4gICAgICAgIGxldCB0c192aWV3cyA9XG4gICAgICAgICAgTGlzdC5tYXAodCA9PiBbdGV4dChcIiArIFwiKV0gQCBjdHJfdmlldyh0KSwgdHMpIHw+IExpc3QuZmxhdHRlbjtcbiAgICAgICAgY3RyX3ZpZXcodDApIEAgdHNfdmlld3M7XG4gICAgICB9LFxuICAgIClcbiAgfCBBcChfKSA9PiBmYWlsd2l0aChcInR5cGUgYXBwbGljYXRpb24gaW4gdmlld1wiKVxuICB9XG5hbmQgY3RyX3ZpZXcgPVxuICBmdW5cbiAgfCBWYXJpYW50KGN0ciwgXywgTm9uZSkgPT4gW3RleHQoY3RyKV1cbiAgfCBWYXJpYW50KGN0ciwgXywgU29tZSh0eXApKSA9PiBbXG4gICAgICB0ZXh0KGN0ciArKyBcIihcIiksXG4gICAgICB2aWV3X3R5KHR5cCksXG4gICAgICB0ZXh0KFwiKVwiKSxcbiAgICBdXG4gIHwgQmFkRW50cnkodHlwKSA9PiBbdmlld190eSh0eXApXVxuXG5hbmQgcGFyZW5fdmlldyA9IHR5cCA9PlxuICBpZiAoVHlwLm5lZWRzX3BhcmVucyh0eXApKSB7XG4gICAgW3RleHQoXCIoXCIpLCB2aWV3X3R5KH5zdHJpcF9vdXRlcl9wYXJlbnM9dHJ1ZSwgdHlwKSwgdGV4dChcIilcIildO1xuICB9IGVsc2Uge1xuICAgIFt2aWV3X3R5KHR5cCldO1xuICB9O1xuXG5sZXQgdmlldyA9ICh0eTogSGF6M2xjb3JlLlR5cC50KTogTm9kZS50ID0+XG4gIGRpdl9jKFwidHlwLXdyYXBwZXJcIiwgW3ZpZXdfdHkodHkpXSk7XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgcG9seV9pZF9leCA9IHtcbiAgc3ViX2lkOiBUeXBGdW4oQmFzaWMpLFxuICB0ZXJtOlxuICAgIG1rX2V4YW1wbGUoXG4gICAgICBcImxldCBpZCA6IFxcbiBmb3JhbGwgYSAtPiAoYSAtPiBhKSA9IFxcbiB0eXBmdW4gYSAtPiBcXG4gZnVuIHggOiBhIC0+IHggXFxuIGluIGlkXCIsXG4gICAgKSxcbiAgbWVzc2FnZTogXCJUaGUgcG9seW1vcnBoaWMgaWRlbnRpdHkgZnVuY3Rpb24uIEl0IG1heSBiZSBpbnN0YW50aWF0ZWQgYXQgYW55IHR5cGUgYSwgYWZ0ZXIgd2hpY2ggdGhlIGZ1bmN0aW9uIGFjdHMgYXMgdHlwZSAoYSAtPiBhKS5cIixcbn07XG5cbmxldCBfdHAgPSB0cGF0KFwiYVwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCB0eXBmdW5fdmFyOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIldoZW4gYXBwbGllZCB0byBhIHR5cGUgdGhhdCB3aGljaCBpcyBib3VuZCB0byB0aGUgWyp0eXBlIHZhcmlhYmxlKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIHR5cGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta190eXBmdW4oW1tzcGFjZSgpLCBfdHAsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IFR5cEZ1bmN0aW9uRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfdHApLCBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtwb2x5X2lkX2V4XSxcbiAgfTtcbn07XG5cbmxldCB0eXBlX2Z1bmN0aW9uc19iYXNpYyA9IHtpZDogVHlwRnVuY3Rpb25FeHAsIGZvcm1zOiBbdHlwZnVuX3Zhcl19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxubGV0IHR5cGZ1bmFwcF9leHBfZXggPSB7XG4gIHN1Yl9pZDogVHlwRnVuQXAsXG4gIHRlcm06XG4gICAgbWtfZXhhbXBsZShcbiAgICAgIFwibGV0IGlkIDogXFxuIGZvcmFsbCBhIC0+IChhIC0+IGEpID0gXFxuIHR5cGZ1biBhIC0+IFxcbiBmdW4geCA6IGEgLT4geCBcXG4gaW4gaWRAPEludD5cIixcbiAgICApLFxuICBtZXNzYWdlOiBcIlRoZSBwb2x5bW9ycGhpYyBpZGVudGl0eSBmdW5jdGlvbiBpcyBpbnN0YW50aWF0ZWQgYXQgSW50LiBUaGUgdHlwZSB2YXJpYWJsZSBhIGlzIGJvdW5kIHRvIEludCBpbiB0aGUgdHlwZSBmdW5jdGlvbiBib2R5IGFuZCB0aGUgYm9keSBldmFsdWF0ZXMgdG8gdGhlIGlkZW50aXR5IGZ1bmN0aW9uIG9uIGludGVnZXJzLlwiLFxufTtcbmxldCBfZXhwX3RmdW4gPSBleHAoXCJlX3RmdW5cIik7XG5sZXQgX3R5cCA9IHR5cChcInR5XCIpO1xubGV0IHR5cGZ1bmFwcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmZfaWQ6IElkLnQsIH50eXBfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cF90ZnVuKSwgZl9pZCksXG4gIChQaWVjZS5pZChfdHlwKSwgdHlwX2lkKSxcbl07XG5sZXQgdHlwZnVuYXBwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBcHBsaWVzIHRoZSBbKnR5cGUgZnVuY3Rpb24qXSglcykgdG8gdGhlIFsqdHlwZSpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBUeXBGdW5BcEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfdGZ1biwgbWtfYXBfZXhwX3R5cChbW190eXBdXSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0eXBmdW5hcHBfZXhwX2V4XSxcbiAgfTtcbn07XG5cbmxldCB0eXBmdW5hcHM6IGdyb3VwID0ge2lkOiBUeXBGdW5BcEV4cCwgZm9ybXM6IFt0eXBmdW5hcHBfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xubGV0IF9wYXQgPSBwYXQoXCJwXCIpO1xubGV0IF90eXAgPSB0eXAoXCJ0eVwiKTtcbmxldCB0eXBhbm5fcGF0X2NvbG9yaW5nX2lkcyA9XG4gICAgKH5wYXRfaWQ6IElkLnQsIH50eXBfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdCksIHBhdF9pZCksXG4gIChQaWVjZS5pZChfdHlwKSwgdHlwX2lkKSxcbl07XG5sZXQgdHlwYW5uX3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgbWF0Y2ggdGhlIFt0eXBlIGFubm90YXRlZCBwYXR0ZXJuXSglcykgYW5kIGhhdmUgdGhlIFtpbmRpY2F0ZWQgdHlwZV0oJXMpIG1hdGNoIHRoaXMgdHlwZSBhbm5vdGF0aW9uIHBhdHRlcm4uXCI7XG4gIHtcbiAgICBpZDogVHlwQW5uUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdCwgc3BhY2UoKSwgdHlwZWFubigpLCBzcGFjZSgpLCBfdHlwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0eXBhbm46IGdyb3VwID0ge2lkOiBUeXBBbm5QYXQsIGZvcm1zOiBbdHlwYW5uX3BhdF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF90cGF0ID0gdHBhdChcInBcIik7XG5sZXQgX3R5cF9kZWYgPSB0eXAoXCJ0eV9kZWZcIik7XG5sZXQgdHlhbGlhc19iYXNlX2V4cF9jb2xvcmluZ19pZHMgPSAofnRwYXRfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpID0+IFtcbiAgKFBpZWNlLmlkKF90cGF0KSwgdHBhdF9pZCksXG4gIChQaWVjZS5pZChfdHlwX2RlZiksIGRlZl9pZCksXG5dO1xubGV0IHR5YWxpYXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBbKnR5cGUqXSglcykgaXMgYm91bmQgdG8gdGhlIFsqdHlwZSB2YXJpYWJsZSpdKCVzKSBpbiB0aGUgYm9keS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfdHlhbGlhcyhbW3NwYWNlKCksIF90cGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF90eXBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBUeUFsaWFzRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IHR5YWxpYXNfZXhwczogZ3JvdXAgPSB7aWQ6IFR5QWxpYXNFeHAsIGZvcm1zOiBbdHlhbGlhc19leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCB0dXBsZV90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyB0dXBsZSB0eXBlIGNsYXNzaWZpZXMgJXMtdHVwbGVzIHdpdGggY29ycmVzcG9uZGluZyBlbGVtZW50IHR5cGVzLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV90eXAoKTtcbiAge1xuICAgIGlkOiBUdXBsZVR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcInR5MVwiKSwgY29tbWEsIHNwYWNlKCksIHR5cChcIi4uLlwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3R5cChcInR5MVwiKSwgY29tbWFfdHlwKCksIHR5cChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHVwbGUwX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGVkZ2UtY2FzZSB0dXBsZSB0eXBlLCBhbHNvIGtub3duIGFzIHRoZSBgdW5pdGAgdHlwZSwgY2xhc3NpZmllcyAwLXR1cGxlcywgb2Ygd2hpY2ggdGhlcmUgaXMgb25seSBvbmUuXCI7XG4gIHtcbiAgICBpZDogVHVwbGUwVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiKClcIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IF90eXBfZWxlbTEgPSB0eXAoXCJ0eTFcIik7XG5sZXQgX3R5cF9lbGVtMiA9IHR5cChcInR5MlwiKTtcbmxldCB0dXBsZTJfdHlwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5lbGVtMV9pZDogSWQudCwgfmVsZW0yX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfZWxlbTEpLCBlbGVtMV9pZCksXG4gIChQaWVjZS5pZChfdHlwX2VsZW0yKSwgZWxlbTJfaWQpLFxuXTtcbmxldCB0dXBsZTJfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgdHVwbGUgdHlwZSBjbGFzc2lmaWVzIDItdHVwbGVzIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIFtmaXJzdCBlbGVtZW50IHR5cGVdKCVzKSBhbmQgc2Vjb25kIGVsZW1lbnQgb2YgdGhlIFtzZWNvbmQgZWxlbWVudCB0eXBlXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3R5cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlMlR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW190eXBfZWxlbTEsIGNvbW1hLCBzcGFjZSgpLCBfdHlwX2VsZW0yXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbdHlwKFwidHkxXCIpLCBjb21tYV90eXAoKSwgdHlwKFwidHkyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3R5cF9lbGVtMSA9IHR5cChcInR5MVwiKTtcbmxldCBfdHlwX2VsZW0yID0gdHlwKFwidHkyXCIpO1xubGV0IF90eXBfZWxlbTMgPSB0eXAoXCJ0eTNcIik7XG5sZXQgdHVwbGUzX3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZWxlbTFfaWQ6IElkLnQsIH5lbGVtMl9pZDogSWQudCwgfmVsZW0zX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfZWxlbTEpLCBlbGVtMV9pZCksXG4gIChQaWVjZS5pZChfdHlwX2VsZW0yKSwgZWxlbTJfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9lbGVtMyksIGVsZW0zX2lkKSxcbl07XG5sZXQgdHVwbGUzX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHR1cGxlIHR5cGUgY2xhc3NpZmllcyAzLXR1cGxlcyB3aXRoIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBbZmlyc3QgZWxlbWVudCB0eXBlXSglcyksIHNlY29uZCBlbGVtZW50IG9mIHRoZSBbc2Vjb25kIGVsZW1lbnQgdHlwZV0oJXMpLCBhbmQgdGhpcmQgZWxlbWVudCBvZiB0aGUgW3RoaXJkIGVsZW1lbnQgdHlwZV0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV90eXAoKTtcbiAge1xuICAgIGlkOiBUdXBsZTNUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIF90eXBfZWxlbTEsXG4gICAgICBjb21tYV90eXAoKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfdHlwX2VsZW0yLFxuICAgICAgY29tbWEsXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3R5cF9lbGVtMyxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChcbiAgICAgICAgUGllY2UuaWQoY29tbWEpLFxuICAgICAgICBbdHlwKFwidHkxXCIpLCBjb21tYV90eXAoKSwgdHlwKFwidHkyXCIpLCBjb21tYV90eXAoKSwgdHlwKFwidHkzXCIpXSxcbiAgICAgICkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB0dXBsZTogZ3JvdXAgPSB7aWQ6IFR1cGxlVHlwLCBmb3JtczogW3R1cGxlX3R5cF19O1xuXG5sZXQgdHVwbGUwOiBncm91cCA9IHtpZDogVHVwbGUwVHlwLCBmb3JtczogW3R1cGxlMF90eXBdfTtcblxubGV0IHR1cGxlMjogZ3JvdXAgPSB7aWQ6IFR1cGxlMlR5cCwgZm9ybXM6IFt0dXBsZTJfdHlwLCB0dXBsZV90eXBdfTtcblxubGV0IHR1cGxlMzogZ3JvdXAgPSB7aWQ6IFR1cGxlM1R5cCwgZm9ybXM6IFt0dXBsZTNfdHlwLCB0dXBsZV90eXBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCB0dXBsZV9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSAlcy10dXBsZXMgd2l0aCBlbGVtZW50cyBtYXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IHBhdHRlcm5zIG1hdGNoIHRoaXMgdHVwbGUgcGF0dGVybi5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIHtcbiAgICBpZDogVHVwbGVQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtwYXQoXCJwMVwiKSwgY29tbWEsIHNwYWNlKCksIHBhdChcIi4uLlwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IHR1cGxlX3BhdF9zaXplMl9jb2xvcmluZ19pZHMgPVxuICAgICh+ZWxlbTFfaWQ6IElkLnQsIH5lbGVtMl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0MSksIGVsZW0xX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQyKSwgZWxlbTJfaWQpLFxuXTtcbmxldCB0dXBsZV9wYXRfc2l6ZTI6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSAyLXR1cGxlcyB3aXRoIGZpcnN0IGVsZW1lbnQgbWF0Y2hpbmcgdGhlIFtmaXJzdCBlbGVtZW50IHBhdHRlcm5dKCVzKSBhbmQgc2Vjb25kIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIFtzZWNvbmQgZWxlbWVudCBwYXR0ZXJuXSglcykgbWF0Y2ggdGhpcyB0dXBsZSBwYXR0ZXJuLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAge1xuICAgIGlkOiBUdXBsZTJQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfcGF0MSwgY29tbWEsIHNwYWNlKCksIF9wYXQyXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwMlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfcGF0MyA9IHBhdChcInAzXCIpO1xubGV0IHR1cGxlX3BhdF9zaXplM19jb2xvcmluZ19pZHMgPVxuICAgICh+ZWxlbTFfaWQ6IElkLnQsIH5lbGVtMl9pZDogSWQudCwgfmVsZW0zX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXQxKSwgZWxlbTFfaWQpLFxuICAoUGllY2UuaWQoX3BhdDIpLCBlbGVtMl9pZCksXG4gIChQaWVjZS5pZChfcGF0MyksIGVsZW0zX2lkKSxcbl07XG5sZXQgdHVwbGVfcGF0X3NpemUzOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgMy10dXBsZXMgd2l0aCBmaXJzdCBlbGVtZW50IG1hdGNoaW5nIHRoZSBbZmlyc3QgZWxlbWVudCBwYXR0ZXJuXSglcyksIHNlY29uZCBlbGVtZW50IG1hdGNoaW5nIHRoZSBbc2Vjb25kIGVsZW1lbnQgcGF0dGVybl0oJXMpLCBhbmQgdGhpcmQgZWxlbWVudCBtYXRjaGluZyB0aGUgW3RoaXJkIGVsZW1lbnQgcGF0dGVybl0oJXMpIG1hdGNoIHRoaXMgdHVwbGUgcGF0dGVybi5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIHtcbiAgICBpZDogVHVwbGUzUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfcGF0MSxcbiAgICAgIGNvbW1hX3BhdCgpLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF9wYXQyLFxuICAgICAgY29tbWEsXG4gICAgICBzcGFjZSgpLFxuICAgICAgX3BhdDMsXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKGNvbW1hKSxcbiAgICAgICAgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDJcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwM1wiKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHVwbGU6IGdyb3VwID0ge2lkOiBUdXBsZVBhdCwgZm9ybXM6IFt0dXBsZV9wYXRdfTtcbmxldCB0dXBsZTI6IGdyb3VwID0ge2lkOiBUdXBsZTJQYXQsIGZvcm1zOiBbdHVwbGVfcGF0X3NpemUyLCB0dXBsZV9wYXRdfTtcbmxldCB0dXBsZTM6IGdyb3VwID0ge2lkOiBUdXBsZTNQYXQsIGZvcm1zOiBbdHVwbGVfcGF0X3NpemUzLCB0dXBsZV9wYXRdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCB0dXBsZV9leGFtcGxlXzEgPSB7XG4gIHN1Yl9pZDogVHVwbGUxLFxuICB0ZXJtOiBta19leGFtcGxlKFwiKHRydWUsIDEpXCIpLFxuICBtZXNzYWdlOiBcIkEgdHVwbGUgd2l0aCBmaXJzdCBlbG1lbnQgdHJ1ZSBhbmQgc2Vjb25kIGVsZW1lbnQgMS5cIixcbn07XG5sZXQgdHVwbGVfZXhhbXBsZV8yID0ge1xuICBzdWJfaWQ6IFR1cGxlMixcbiAgdGVybTogbWtfZXhhbXBsZShcIigxLCAyLCAzKVwiKSxcbiAgbWVzc2FnZTogXCJBIHR1cGxlIHdpdGggZmlyc3QgZWxlbWVudCAxLCBzZWNvbmQgZWxlbWVudCAyLCBhbmQgdGhpcmQgZWxlbWVudCAzLlwiLFxufTtcbmxldCB0dXBsZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIHR1cGxlIGhhcyAlcyBlbGVtZW50cy5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfZXhwKCk7XG4gIHtcbiAgICBpZDogVHVwbGVFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtleHAoXCJlMVwiKSwgY29tbWEsIHNwYWNlKCksIGV4cChcIi4uLlwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW2V4cChcImUxXCIpLCBjb21tYV9leHAoKSwgZXhwKFwiLi4uXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdHVwbGVfZXhhbXBsZV8xLCB0dXBsZV9leGFtcGxlXzJdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgdHVwbGVfZXhwX3NpemUyX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5leHAxX2lkOiBJZC50LCB+ZXhwMl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoUGllY2UuaWQoX2V4cDEpLCBleHAxX2lkKSwgKFBpZWNlLmlkKF9leHAyKSwgZXhwMl9pZCldO1xufTtcbmxldCB0dXBsZV9leHBfc2l6ZTI6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIDItdHVwbGUgaGFzIGEgW2ZpcnN0XSglcykgYW5kIFtzZWNvbmRdKCVzKSBlbGVtZW50LlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9leHAoKTtcbiAge1xuICAgIGlkOiBUdXBsZTJFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgY29tbWEsIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoY29tbWEpLCBbZXhwKFwiZTFcIiksIGNvbW1hX2V4cCgpLCBleHAoXCJlMlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R1cGxlX2V4YW1wbGVfMV0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBfZXhwMyA9IGV4cChcImUzXCIpO1xubGV0IHR1cGxlX2V4cF9zaXplM19jb2xvcmluZ19pZHMgPVxuICAgICh+ZXhwMV9pZDogSWQudCwgfmV4cDJfaWQ6IElkLnQsIH5leHAzX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgW1xuICAgIChQaWVjZS5pZChfZXhwMSksIGV4cDFfaWQpLFxuICAgIChQaWVjZS5pZChfZXhwMiksIGV4cDJfaWQpLFxuICAgIChQaWVjZS5pZChfZXhwMyksIGV4cDNfaWQpLFxuICBdO1xufTtcbmxldCB0dXBsZV9leHBfc2l6ZTM6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIDMtdHVwbGUgaGFzIGEgW2ZpcnN0XSglcyksIFtzZWNvbmRdKCVzKSwgYW5kIFt0aGlyZF0oJXMpIGVsZW1lbnQuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX2V4cCgpO1xuICB7XG4gICAgaWQ6IFR1cGxlM0V4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgX2V4cDEsXG4gICAgICBjb21tYV9leHAoKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfZXhwMixcbiAgICAgIGNvbW1hLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF9leHAzLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFtleHAoXCJlMVwiKSwgY29tbWFfZXhwKCksIGV4cChcImUyXCIpLCBjb21tYV9leHAoKSwgZXhwKFwiZTNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZV9leGFtcGxlXzJdLFxuICB9O1xufTtcblxubGV0IHR1cGxlczogZ3JvdXAgPSB7aWQ6IFR1cGxlRXhwLCBmb3JtczogW3R1cGxlX2V4cF19O1xuXG5sZXQgdHVwbGVzMjogZ3JvdXAgPSB7aWQ6IFR1cGxlMkV4cCwgZm9ybXM6IFt0dXBsZV9leHBfc2l6ZTIsIHR1cGxlX2V4cF19O1xuXG5sZXQgdHVwbGVzMzogZ3JvdXAgPSB7aWQ6IFR1cGxlM0V4cCwgZm9ybXM6IFt0dXBsZV9leHBfc2l6ZTMsIHR1cGxlX2V4cF19O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcblxubW9kdWxlIFRlc3RTdGF0dXMgPSBIYXozbGNvcmUuVGVzdFN0YXR1cztcbm1vZHVsZSBUZXN0TWFwID0gSGF6M2xjb3JlLlRlc3RNYXA7XG5tb2R1bGUgVGVzdFJlc3VsdHMgPSBIYXozbGNvcmUuVGVzdFJlc3VsdHM7XG5tb2R1bGUgSW50ZXJmYWNlID0gSGF6M2xjb3JlLkludGVyZmFjZTtcblxuLy8gbGV0IHRlc3RfaW5zdGFuY2VfdmlldyA9XG4vLyAgICAgKFxuLy8gICAgICAgfnNldHRpbmdzLFxuLy8gICAgICAgfmluamVjdCxcbi8vICAgICAgIH5mb250X21ldHJpY3MsXG4vLyAgICAgICB+aW5mb21hcCxcbi8vICAgICAgIChkLCBzdGF0dXMpOiBUZXN0TWFwLmluc3RhbmNlX3JlcG9ydCxcbi8vICAgICApID0+XG4vLyAgIGRpdihcbi8vICAgICB+YXR0cj1cbi8vICAgICAgIEF0dHIubWFueShbY2xzcyhbXCJ0ZXN0LWluc3RhbmNlXCIsIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyldKV0pLFxuLy8gICAgIFtcbi8vICAgICAgIFJlYWRPbmx5RWRpdG9yLnZpZXcoXG4vLyAgICAgICAgIH5pbmplY3QsXG4vLyAgICAgICAgIH5zZXR0aW5ncyxcbi8vICAgICAgICAgfmZvbnRfbWV0cmljcyxcbi8vICAgICAgICAgfndpZHRoPTQwLFxuLy8gICAgICAgICB+cmVzdWx0X2tleT1cIlwiLFxuLy8gICAgICAgICB+aW5mb21hcCxcbi8vICAgICAgICAgZCxcbi8vICAgICAgICksXG4vLyAgICAgICApXG4vLyAgICAgICBESENvZGUudmlldyhcbi8vICAgICAgICAgfmluamVjdCxcbi8vICAgICAgICAgfnNldHRpbmdzLFxuLy8gICAgICAgICB+c2VsZWN0ZWRfaG9sZV9pbnN0YW5jZT1Ob25lLFxuLy8gICAgICAgICB+Zm9udF9tZXRyaWNzLFxuLy8gICAgICAgICB+d2lkdGg9NDAsXG4vLyAgICAgICAgIH5yZXN1bHRfa2V5PVwiXCIsXG4vLyAgICAgICAgIH5pbmZvbWFwLFxuLy8gICAgICAgICBkLFxuLy8gICAgICAgKSxcbi8vICAgICBdLFxuLy8gICApO1xuXG5sZXQganVtcF90b190ZXN0ID0gKH5pbmplY3QsIHBvcywgaWQsIF8pID0+IHtcbiAgbGV0IGVmZmVjdDEgPSBpbmplY3QoVXBkYXRlLk1ha2VBY3RpdmUoRXhlcmNpc2VzKHBvcywgTWFpbkVkaXRvcikpKTtcbiAgbGV0IGVmZmVjdDIgPSBpbmplY3QoVXBkYXRlLlBlcmZvcm1BY3Rpb24oSnVtcChUaWxlSWQoaWQpKSkpO1xuICBFZmZlY3QuYmluZChlZmZlY3QxLCB+Zj1fcmVzdWx0MSA9PiBlZmZlY3QyKTtcbn07XG5cbi8vIGxldCB0ZXN0X3JlcG9ydF92aWV3ID1cbi8vICAgICAoXG4vLyAgICAgICB+c2V0dGluZ3MsXG4vLyAgICAgICB+aW5qZWN0LFxuLy8gICAgICAgfmZvbnRfbWV0cmljcyxcbi8vICAgICAgIH5kZXNjcmlwdGlvbjogb3B0aW9uKHN0cmluZyk9Tm9uZSxcbi8vICAgICAgIH5pbmZvbWFwLFxuLy8gICAgICAgaTogaW50LFxuLy8gICAgICAgKGlkLCBpbnN0YW5jZV9yZXBvcnRzKTogVGVzdE1hcC5yZXBvcnQsXG4vLyAgICAgKSA9PiB7XG4vLyAgIGxldCBzdGF0dXMgPVxuLy8gICAgIGluc3RhbmNlX3JlcG9ydHMgfD4gVGVzdE1hcC5qb2ludF9zdGF0dXMgfD4gVGVzdFN0YXR1cy50b19zdHJpbmc7XG4vLyAgIGRpdihcbi8vICAgICB+YXR0cj1cbi8vICAgICAgIEF0dHIubWFueShbXG4vLyAgICAgICAgIEF0dHIuY2xhc3NfKFwidGVzdC1yZXBvcnRcIiksXG4vLyAgICAgICAgIEF0dHIub25fY2xpY2soanVtcF90b190ZXN0KH5pbmplY3QsIFlvdXJUZXN0c1Rlc3RpbmcsIGlkKSksXG4vLyAgICAgICBdKSxcbi8vICAgICBbXG4vLyAgICAgICBkaXYoXG4vLyAgICAgICAgIH5hdHRyPWNsc3MoW1widGVzdC1pZFwiLCBcIlRlc3RcIiArKyBzdGF0dXNdKSxcbi8vICAgICAgICAgLy8gbm90ZTogcHJpbnRzIGxleGljYWwgaW5kZXgsIG5vdCBpZFxuLy8gICAgICAgICBbdGV4dChzdHJpbmdfb2ZfaW50KGkgKyAxKSldLFxuLy8gICAgICAgKSxcbi8vICAgICAgIGRpdihcbi8vICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LWluc3RhbmNlc1wiKSxcbi8vICAgICAgICAgTGlzdC5tYXAoXG4vLyAgICAgICAgICAgdGVzdF9pbnN0YW5jZV92aWV3KH5pbmZvbWFwLCB+c2V0dGluZ3MsIH5pbmplY3QsIH5mb250X21ldHJpY3MpLFxuLy8gICAgICAgICAgIGluc3RhbmNlX3JlcG9ydHMsXG4vLyAgICAgICAgICksXG4vLyAgICAgICApLFxuLy8gICAgIF1cbi8vICAgICBAIChcbi8vICAgICAgIHN3aXRjaCAoZGVzY3JpcHRpb24pIHtcbi8vICAgICAgIHwgTm9uZSA9PiBbXVxuLy8gICAgICAgfCBTb21lKGQpID0+IFtkaXYofmF0dHI9Y2xzcyhbXCJ0ZXN0LWRlc2NyaXB0aW9uXCJdKSwgW3RleHQoZCldKV1cbi8vICAgICAgIH1cbi8vICAgICApLFxuLy8gICApO1xuLy8gfTtcblxuLy8gbGV0IHRlc3RfcmVwb3J0c192aWV3ID1cbi8vICAgICAoXG4vLyAgICAgICB+c2V0dGluZ3MsXG4vLyAgICAgICB+aW5qZWN0LFxuLy8gICAgICAgfmZvbnRfbWV0cmljcyxcbi8vICAgICAgIH5pbmZvbWFwLFxuLy8gICAgICAgfnRlc3RfcmVzdWx0czogb3B0aW9uKFRlc3RSZXN1bHRzLnQpLFxuLy8gICAgICkgPT5cbi8vICAgZGl2KFxuLy8gICAgIH5hdHRyPWNsc3MoW1wicGFuZWwtYm9keVwiLCBcInRlc3QtcmVwb3J0c1wiXSksXG4vLyAgICAgc3dpdGNoICh0ZXN0X3Jlc3VsdHMpIHtcbi8vICAgICB8IE5vbmUgPT4gW05vZGUudGV4dChcIk5vIHRlc3QgcmVwb3J0IGF2YWlsYWJsZS5cIildXG4vLyAgICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT5cbi8vICAgICAgIExpc3QubWFwaShcbi8vICAgICAgICAgKGksIHIpID0+XG4vLyAgICAgICAgICAgdGVzdF9yZXBvcnRfdmlldyhcbi8vICAgICAgICAgICAgIH5zZXR0aW5ncyxcbi8vICAgICAgICAgICAgIH5pbmplY3QsXG4vLyAgICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuLy8gICAgICAgICAgICAgfmluZm9tYXAsXG4vLyAgICAgICAgICAgICB+ZGVzY3JpcHRpb249TGlzdC5udGhfb3B0KHRlc3RfcmVzdWx0cy5kZXNjcmlwdGlvbnMsIGkpLFxuLy8gICAgICAgICAgICAgaSxcbi8vICAgICAgICAgICAgIHIsXG4vLyAgICAgICAgICAgKSxcbi8vICAgICAgICAgdGVzdF9yZXN1bHRzLnRlc3RfbWFwLFxuLy8gICAgICAgKVxuLy8gICAgIH0sXG4vLyAgICk7XG5cbmxldCB0ZXN0X2Jhcl9zZWdtZW50ID0gKH5pbmplY3RfanVtcCwgKGlkLCByZXBvcnRzKSkgPT4ge1xuICBsZXQgc3RhdHVzID0gcmVwb3J0cyB8PiBUZXN0TWFwLmpvaW50X3N0YXR1cyB8PiBUZXN0U3RhdHVzLnRvX3N0cmluZztcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgY2xzcyhbXCJzZWdtZW50XCIsIHN0YXR1c10pLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT4gaW5qZWN0X2p1bXAoaWQpKSxcbiAgICAgIF0pLFxuICAgIFtdLFxuICApO1xufTtcblxubGV0IHRlc3RfYmFyID0gKH5pbmplY3RfanVtcCwgfnRlc3RfcmVzdWx0czogVGVzdFJlc3VsdHMudCkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1iYXJcIiksXG4gICAgTGlzdC5tYXAodGVzdF9iYXJfc2VnbWVudCh+aW5qZWN0X2p1bXApLCB0ZXN0X3Jlc3VsdHMudGVzdF9tYXApLFxuICApO1xuXG4vLyByZXN1bHRfc3VtbWFyeV9zdHIgYW5kIHRlc3Rfc3VtbWFyeV9zdHIgaGF2ZSBiZWVuIG1vdmVkIHRvIGhhejNsY29yZS9UZXN0UmVzdWx0cy5yZVxuXG5sZXQgcGVyY2VudF92aWV3ID0gKG46IGludCwgcDogaW50KTogTm9kZS50ID0+IHtcbiAgbGV0IHBlcmNlbnRhZ2UgPVxuICAgIG4gPT0gMCA/IDEwMC4gOiAxMDAuICouIGZsb2F0X29mX2ludChwKSAvLiBmbG9hdF9vZl9pbnQobik7XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcInRlc3QtcGVyY2VudFwiLCBuID09IHAgPyBcImFsbC1wYXNzXCIgOiBcInNvbWUtZmFpbFwiXSksXG4gICAgW3RleHQoUHJpbnRmLnNwcmludGYoXCIlLjBmJSVcIiwgcGVyY2VudGFnZSkpXSxcbiAgKTtcbn07XG5cbmxldCB0ZXN0X3BlcmNlbnRhZ2UgPSAodGVzdF9yZXN1bHRzOiBUZXN0UmVzdWx0cy50KTogTm9kZS50ID0+XG4gIHBlcmNlbnRfdmlldyh0ZXN0X3Jlc3VsdHMudG90YWwsIHRlc3RfcmVzdWx0cy5wYXNzaW5nKTtcblxubGV0IHRlc3RfdGV4dCA9ICh0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpOiBOb2RlLnQgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC10ZXh0XCIpLFxuICAgIFtcbiAgICAgIHRlc3RfcGVyY2VudGFnZSh0ZXN0X3Jlc3VsdHMpLFxuICAgICAgZGl2KFt0ZXh0KFwiOlwiKV0pLFxuICAgICAgdGV4dChUZXN0UmVzdWx0cy50ZXN0X3N1bW1hcnlfc3RyKHRlc3RfcmVzdWx0cykpLFxuICAgIF0sXG4gICk7XG5cbmxldCB0ZXN0X3N1bW1hcnkgPSAofmluamVjdF9qdW1wLCB+dGVzdF9yZXN1bHRzOiBvcHRpb24oVGVzdFJlc3VsdHMudCkpID0+IHtcbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1widGVzdC1zdW1tYXJ5XCJdKSxcbiAgICB7XG4gICAgICBzd2l0Y2ggKHRlc3RfcmVzdWx0cykge1xuICAgICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlc3VsdHMgYXZhaWxhYmxlLlwiKV1cbiAgICAgIHwgU29tZSh0ZXN0X3Jlc3VsdHMpID0+IFtcbiAgICAgICAgICB0ZXN0X3RleHQodGVzdF9yZXN1bHRzKSxcbiAgICAgICAgICB0ZXN0X2Jhcih+aW5qZWN0X2p1bXAsIH50ZXN0X3Jlc3VsdHMpLFxuICAgICAgICBdXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG59O1xuXG5sZXQgdmlld19vZl9tYWluX3RpdGxlX2JhciA9ICh0aXRsZV90ZXh0OiBzdHJpbmcpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1widGl0bGUtYmFyXCIsIFwicGFuZWwtdGl0bGUtYmFyXCJdKV0pLFxuICAgIFtOb2RlLnRleHQodGl0bGVfdGV4dCldLFxuICApO1xuXG4vLyBsZXQgaW5zcGVjdG9yX3ZpZXcgPVxuLy8gICAgIChcbi8vICAgICAgIH5zZXR0aW5ncyxcbi8vICAgICAgIH5pbmplY3QsXG4vLyAgICAgICB+Zm9udF9tZXRyaWNzLFxuLy8gICAgICAgfnRlc3RfbWFwOiBUZXN0TWFwLnQsXG4vLyAgICAgICB+aW5mb21hcCxcbi8vICAgICAgIGlkOiBIYXozbGNvcmUuSWQudCxcbi8vICAgICApXG4vLyAgICAgOiBvcHRpb24odCkgPT4ge1xuLy8gICBzd2l0Y2ggKFRlc3RNYXAubG9va3VwKGlkLCB0ZXN0X21hcCkpIHtcbi8vICAgfCBTb21lKGluc3RhbmNlcykgd2hlbiBUZXN0TWFwLmpvaW50X3N0YXR1cyhpbnN0YW5jZXMpICE9IEluZGV0ID0+XG4vLyAgICAgU29tZShcbi8vICAgICAgIGRpdihcbi8vICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LWluc3BlY3RvclwiKSxcbi8vICAgICAgICAgW1xuLy8gICAgICAgICAgIGRpdihcbi8vICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NfKFwidGVzdC1pbnN0YW5jZXNcIiksXG4vLyAgICAgICAgICAgICBMaXN0Lm1hcChcbi8vICAgICAgICAgICAgICAgdGVzdF9pbnN0YW5jZV92aWV3KH5zZXR0aW5ncywgfmluamVjdCwgfmZvbnRfbWV0cmljcywgfmluZm9tYXApLFxuLy8gICAgICAgICAgICAgICBpbnN0YW5jZXMsXG4vLyAgICAgICAgICAgICApLFxuLy8gICAgICAgICAgICksXG4vLyAgICAgICAgIF0sXG4vLyAgICAgICApLFxuLy8gICAgIClcbi8vICAgfCBfID0+IE5vbmVcbi8vICAgfTtcbi8vIH07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgdGVzdF90cnVlX2V4ID0ge1xuICBzdWJfaWQ6IFRlc3RUcnVlLFxuICB0ZXJtOiBta19leGFtcGxlKFwidGVzdCB0cnVlIGVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGlzIGlzIHJlcG9ydGVkIGFzIGEgcGFzc2luZyB0ZXN0IGJlY2F1c2UgdGhlIGJvZHkgb2YgdGhlIHRlc3QgaXMgdHJ1ZS5cIixcbn07XG4vLyBUT0RPIGFyZSB0aGVzZSByZWFsbHkgdGhlIGNvcnJlY3QgbWVzc2FnZXMvZXhwbGFuYXRpb25zOyBtYXliZSBpbmNsdWRlIHNvbWV0aGluZyBhYm91dCB0aGUgcmVzdWx0IGJlaW5nIHRyaXZcbmxldCB0ZXN0X2ZhbHNlX2V4ID0ge1xuICBzdWJfaWQ6IFRlc3RGYWxzZSxcbiAgdGVybTogbWtfZXhhbXBsZShcInRlc3QgMyA8IDEgZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoaXMgaXMgcmVwb3J0ZWQgYXMgYSBmYWlsaW5nIHRlc3QgYmVjYXVzZSB0aGUgYm9keSBvZiB0aGUgdGVzdCBpcyAzIDwgMSB3aGljaCBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IF9leHBfYm9keSA9IGV4cChcImVcIik7XG5sZXQgdGVzdF9leHBfY29sb3JpbmdfaWRzID0gKH5ib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfYm9keSksIGJvZHlfaWQpLFxuXTtcbmxldCB0ZXN0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypib2R5Kl0oJXMpIG9mIHRoZSB0ZXN0IGV2YWx1dGVzIHRvIGB0cnVlYCwgdGhlIHRlc3QgcGFzc2VzLiBPdGhlcndpc2UsIHRoZSB0ZXN0IGZhaWxzLlwiO1xuICB7XG4gICAgaWQ6IFRlc3RFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtta190ZXN0KFtbc3BhY2UoKSwgX2V4cF9ib2R5LCBzcGFjZSgpXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbdGVzdF90cnVlX2V4LCB0ZXN0X2ZhbHNlX2V4XSxcbiAgfTtcbn07XG5cbmxldCB0ZXN0czogZ3JvdXAgPSB7aWQ6IFRlc3RFeHAsIGZvcm1zOiBbdGVzdF9leHBdfTtcbiIsIm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgaW50X3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYEludGAgdHlwZSBjbGFzc2lmaWVzIDMyLWJpdCBzaWduZWQgaW50ZWdlciB2YWx1ZXMuXCI7XG4gIHtcbiAgICBpZDogSW50VHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiSW50XCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBmbG9hdF90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIGBGbG9hdGAgdHlwZSBjbGFzc2lmaWVzIDY0LWJpdCBmbG9hdGluZy1wb2ludCB2YWx1ZXMgYWNjb3JkaW5nIHRvIHRoZSBJRUVFIDc1NCBzdGFuZGFyZC5cIjtcbiAge1xuICAgIGlkOiBGbG9hdFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3R5cChcIkZsb2F0XCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBib29sX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYEJvb2xgIHR5cGUgY2xhc3NpZmllcyBib29sZWFuIHZhbHVlcy5cIjtcbiAge1xuICAgIGlkOiBCb29sVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiQm9vbFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgc3RyX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgYFN0cmluZ2AgdHlwZSBjbGFzc2lmaWVzIHN0cmluZyB2YWx1ZXMuXCI7XG4gIHtcbiAgICBpZDogU3RyVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbdHlwKFwiU3RyaW5nXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB2YXJfdHlwID0gKG5hbWU6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcImAlc2AgaXMgYSB0eXBlIHZhcmlhYmxlLlwiO1xuICB7XG4gICAgaWQ6IFZhclR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW25hbWUgfD4gYWJicmV2aWF0ZSB8PiB0eXBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGludDogZ3JvdXAgPSB7aWQ6IEludFR5cCwgZm9ybXM6IFtpbnRfdHlwXX07XG5cbmxldCBmbG9hdDogZ3JvdXAgPSB7aWQ6IEZsb2F0VHlwLCBmb3JtczogW2Zsb2F0X3R5cF19O1xuXG5sZXQgYm9vbDogZ3JvdXAgPSB7aWQ6IEJvb2xUeXAsIGZvcm1zOiBbYm9vbF90eXBdfTtcblxubGV0IHN0cjogZ3JvdXAgPSB7aWQ6IFN0clR5cCwgZm9ybXM6IFtzdHJfdHlwXX07XG5cbmxldCB2YXIgPSAobmFtZTogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBWYXJUeXAsIGZvcm1zOiBbdmFyX3R5cChuYW1lKV19O1xuIiwib3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5sZXQgd2lsZF9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlICp3aWxkY2FyZCBwYXR0ZXJuKiBtYXRjaGVzIGFueSBleHByZXNzaW9uLlwiO1xuICB7XG4gICAgaWQ6IFdpbGRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtwYXQoXCJfXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBpbnRsaXRfcGF0ID0gKGk6IGludCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZSBgJWlgIG1hdGNoIHRoZSAqYCVpYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBJbnRQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtpIHw+IHN0cmluZ19vZl9pbnQgfD4gYWJicmV2aWF0ZSB8PiBwYXRdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGZsb2F0bGl0X3BhdCA9IChmOiBmbG9hdCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZSBgJWZgIG1hdGNoIHRoZSAqYCVmYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBGbG9hdFBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW2YgfD4gc3RyaW5nX29mX2Zsb2F0IHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBib29sbGl0X3BhdCA9IChiOiBib29sKTogZm9ybSA9PiB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHZhbHVlIGAlYmAgbWF0Y2ggdGhlICpgJWJgIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IEJvb2xQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtiIHw+IHN0cmluZ19vZl9ib29sIHw+IGFiYnJldmlhdGUgfD4gcGF0XSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBzdHJsaXRfcGF0ID0gKHM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgd2l0aCB2YWx1ZSBgJXNgIG1hdGNoIHRoZSAqYCVzYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBTdHJQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtzIHw+IGFiYnJldmlhdGUgfD4gSGF6M2xjb3JlLkZvcm0uc3RyaW5nX3F1b3RlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgdHJpdl9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB3aXRoIHRoZSB0cml2aWFsIHZhbHVlIGAoKWAgbWF0Y2ggdGhlICp0cml2aWFsIHBhdHRlcm4gYCgpYCouXCI7XG4gIHtcbiAgICBpZDogVHJpdlBhdCxcbiAgICBzeW50YWN0aWNfZm9ybTogW3BhdChcIigpXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCB2YXJfcGF0ID0gKG5hbWU6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgKnBhdHRlcm4gdmFyaWFibGUqIG1hdGNoZXMgYW55IGV4cHJlc3Npb24sIGJpbmRpbmcgaXRzIHZhbHVlIHRvIHZhcmlhYmxlIGAlc2AuXCI7XG4gIHtcbiAgICBpZDogVmFyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbmFtZSB8PiBhYmJyZXZpYXRlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgY3RyX3BhdCA9IChuYW1lOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgbWF0Y2ggdGhlICpgJXNgIGNvbnN0cnVjdG9yKiBtYXRjaCB0aGlzIGNvbnN0cnVjdG9yIHBhdHRlcm4uXCI7XG4gIHtcbiAgICBpZDogQ3RyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbbmFtZSB8PiBhYmJyZXZpYXRlIHw+IHBhdF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgd2lsZDogZ3JvdXAgPSB7aWQ6IFdpbGRQYXQsIGZvcm1zOiBbd2lsZF9wYXRdfTtcblxubGV0IGludGxpdCA9IChpOiBpbnQpOiBncm91cCA9PiB7aWQ6IEludFBhdCwgZm9ybXM6IFtpbnRsaXRfcGF0KGkpXX07XG5cbmxldCBmbG9hdGxpdCA9IChmOiBmbG9hdCk6IGdyb3VwID0+IHtcbiAgaWQ6IEZsb2F0UGF0LFxuICBmb3JtczogW2Zsb2F0bGl0X3BhdChmKV0sXG59O1xuXG5sZXQgYm9vbGxpdCA9IChiOiBib29sKTogZ3JvdXAgPT4ge2lkOiBCb29sUGF0LCBmb3JtczogW2Jvb2xsaXRfcGF0KGIpXX07XG5cbmxldCBzdHJsaXQgPSAoczogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBTdHJQYXQsIGZvcm1zOiBbc3RybGl0X3BhdChzKV19O1xuXG5sZXQgdHJpdjogZ3JvdXAgPSB7aWQ6IFRyaXZQYXQsIGZvcm1zOiBbdHJpdl9wYXRdfTtcblxubGV0IHZhciA9IChuYW1lOiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IFZhclBhdCwgZm9ybXM6IFt2YXJfcGF0KG5hbWUpXX07XG5cbmxldCBjdHIgPSAobmFtZTogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBDdHJQYXQsIGZvcm1zOiBbY3RyX3BhdChuYW1lKV19O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCB0cml2X2V4cDogZm9ybSA9IHtcbiAgaWQ6IFRyaXZFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbZXhwKFwiKClcIildLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJUaGUgdW5pcXVlIHZhbHVlIG9mIHR5cGUgYCgpYC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCB0cml2X2V4cHM6IGdyb3VwID0ge2lkOiBUcml2RXhwLCBmb3JtczogW3RyaXZfZXhwXX07XG5cbmxldCBkZWZlcnJhbF9leHBfZXggPSB7XG4gIHN1Yl9pZDogRGVmZXJyYWwsXG4gIHRlcm06XG4gICAgbWtfZXhhbXBsZShcbiAgICAgIFwibGV0IHBsdXMgPSBmdW4gKHgsIHkpIC0+IHggKyB5IGluXFxubGV0IGluY3IgPSBwbHVzKF8sIDEpIGluXFxuaW5jcig1KVwiLFxuICAgICksXG4gIG1lc3NhZ2U6IFwiSW4gdGhlIHBhcnRpYWwgYXBwbGljYXRpb24gcGx1cyhfLCAxKSwgdGhlIGRlZmVycmFsIGV4cHJlc3Npb24gbWFya3MgdGhlIGZpcnN0IGFyZ3VtZW50LCB3aGljaCB3YXMgbm90IGFwcGxpZWQgdW50aWwgaW4gdGhlIGZ1bGwgZnVuY3Rpb24gYXBwbGljYXRpb24gaW5jcig1KS5cIixcbn07XG5sZXQgZGVmZXJyYWxfZXhwOiBmb3JtID0ge1xuICBpZDogRGVmZXJyYWxFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbZXhwKFwiX1wiKV0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIk1hcmtzIGFuIGFyZ3VtZW50IHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBhcHBsaWVkIGluIGEgcGFydGlhbCBhcHBsaWNhdGlvbi5cIixcbiAgZXhhbXBsZXM6IFtkZWZlcnJhbF9leHBfZXhdLFxufTtcbmxldCBkZWZlcnJhbF9leHBzOiBncm91cCA9IHtpZDogRGVmZXJyYWxFeHAsIGZvcm1zOiBbZGVmZXJyYWxfZXhwXX07XG5cbmxldCBib29sX2V4cCA9IChiOiBib29sKTogZm9ybSA9PiB7XG4gIGlkOiBCb29sRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2V4cChiIHw+IHN0cmluZ19vZl9ib29sKV0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIkEgYm9vbGVhbiBsaXRlcmFsLCBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWAuXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgYm9vbF9leHBzID0gKGI6IGJvb2wpOiBncm91cCA9PiB7aWQ6IEJvb2xFeHAsIGZvcm1zOiBbYm9vbF9leHAoYildfTtcblxubGV0IGludF9leHAgPSAobjogaW50KTogZm9ybSA9PiB7XG4gIGlkOiBJbnRFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbbiB8PiBzdHJpbmdfb2ZfaW50IHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIkEgc2lnbmVkIGludGVnZXIgbGl0ZXJhbC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBpbnRfZXhwcyA9IChpOiBpbnQpOiBncm91cCA9PiB7aWQ6IEludEV4cCwgZm9ybXM6IFtpbnRfZXhwKGkpXX07XG5cbmxldCBmbG9hdF9leHAgPSAoZjogZmxvYXQpOiBmb3JtID0+IHtcbiAgaWQ6IEZsb2F0RXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2YgfD4gc3RyaW5nX29mX2Zsb2F0IHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIkEgZmxvYXRpbmctcG9pbnQgbGl0ZXJhbC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBmbG9hdF9leHBzID0gKGY6IGZsb2F0KTogZ3JvdXAgPT4ge1xuICBpZDogRmxvYXRFeHAsXG4gIGZvcm1zOiBbZmxvYXRfZXhwKGYpXSxcbn07XG5cbmxldCBzdHJpbmdfZXhwID0gKHM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBpZDogU3RyaW5nRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW3MgfD4gYWJicmV2aWF0ZSB8PiBIYXozbGNvcmUuRm9ybS5zdHJpbmdfcXVvdGUgfD4gZXhwXSxcbiAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgZXhwbGFuYXRpb246IFwiQSBzdHJpbmcgbGl0ZXJhbC4gQW55IGNoYXJhY3RlciBiZXNpZGVzIGRvdWJsZSBxdW90ZXMgKGBcXFwiYCkgY2FuIGJlIHVzZWQuXCIsXG4gIGV4YW1wbGVzOiBbXSxcbn07XG5sZXQgc3RyaW5nX2V4cHMgPSAoczogc3RyaW5nKTogZ3JvdXAgPT4ge1xuICBpZDogU3RyaW5nRXhwLFxuICBmb3JtczogW3N0cmluZ19leHAocyldLFxufTtcblxubGV0IHZhcl9leHAgPSAobjogc3RyaW5nKTogZm9ybSA9PiB7XG4gIGlkOiBWYXJFeHAsXG4gIHN5bnRhY3RpY19mb3JtOiBbbiB8PiBhYmJyZXZpYXRlIHw+IGV4cF0sXG4gIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gIGV4cGxhbmF0aW9uOiBcIlRha2VzIHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiB0aGF0IGl0IHdhcyBib3VuZCB0by5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCB2YXJfZXhwcyA9ICh4OiBzdHJpbmcpOiBncm91cCA9PiB7aWQ6IFZhckV4cCwgZm9ybXM6IFt2YXJfZXhwKHgpXX07XG5cbmxldCBjdHJfZXhwID0gKGM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBpZDogQ3RyRXhwLFxuICBzeW50YWN0aWNfZm9ybTogW2MgfD4gYWJicmV2aWF0ZSB8PiBleHBdLFxuICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICBleHBsYW5hdGlvbjogXCJgJXNgIGlzIGEgY29uc3RydWN0b3IgZm9yIGEgc3VtIHR5cGUgdmFyaWFudC5cIixcbiAgZXhhbXBsZXM6IFtdLFxufTtcbmxldCBjdHIgPSAoYzogc3RyaW5nKTogZ3JvdXAgPT4ge2lkOiBDdHJFeHAsIGZvcm1zOiBbY3RyX2V4cChjKV19O1xuIiwidHlwZSBvcmRpbmFsID0gaW50O1xuXG50eXBlIHN0YXR1cyA9XG4gIHwgRW1wdHlcbiAgfCBQYXJ0aWFsXG4gIHwgRnVsbDtcblxudHlwZSBpbnRlcnZhbCA9IChmbG9hdCwgZmxvYXQpO1xuXG50eXBlIHQgPSB7XG4gIHJvb3Q6IG5vZGUsXG4gIC8vIGludGVydmFsIGVuZHBvaW50cyBzcGVjaWZpZWQgYXQgaW5pdGlhbGl6YXRpb25cbiAgdmFsdWVzOiBhcnJheShmbG9hdCksXG4gIC8vIG9yZGluYWxzIG9mIHNvcnRlZCBlbmRwb2ludHNcbiAgb3JkaW5hbHM6IEhhc2h0YmwudChmbG9hdCwgb3JkaW5hbCksXG59XG5hbmQgbm9kZSA9IHtcbiAgLy8gaW52YXJpYW50OiB1bml0IGludGVydmFscyBhcmUgbGVhdmVzXG4gIGludGVydmFsOiAob3JkaW5hbCwgb3JkaW5hbCksXG4gIHNoYXBlOiBub2RlX3NoYXBlLFxuICAvLyBzdGF0dXMgYW5kIGNvdW50IGNvdWxkIGJlIGV4dGVybmFsaXplZCBpbiBhIG1vcmVcbiAgLy8gZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGRhdGEgc3RydWN0dXJlXG4gIC8vIGJ1dCB3ZSBvbmx5IG5lZWQgdGhpcyBkYXRhIHN0cnVjdHVyZSBmb3IgYSBzaW5nbGVcbiAgLy8gcHVycG9zZSBhdCB0aGUgbW9tZW50XG4gIHN0YXR1cyxcbiAgY291bnQ6IGludCxcbn1cbmFuZCBub2RlX3NoYXBlID1cbiAgfCBMZWFmXG4gIHwgQnJhbmNoKExhenkudChub2RlKSwgTGF6eS50KG5vZGUpKTtcblxubGV0IG1rID0gKHZhbHVlczogbGlzdChmbG9hdCkpID0+IHtcbiAgbGV0ICh2YWx1ZXMsIG9yZGluYWxzKSA9IHtcbiAgICBsZXQgc29ydGVkX3ZhbHVlcyA9IExpc3Quc29ydF91bmlxKEZsb2F0LmNvbXBhcmUsIHZhbHVlcyk7XG4gICAgKFxuICAgICAgQXJyYXkub2ZfbGlzdChzb3J0ZWRfdmFsdWVzKSxcbiAgICAgIHNvcnRlZF92YWx1ZXNcbiAgICAgIHw+IExpc3QubWFwaSgoaSwgeSkgPT4gKHksIGkpKVxuICAgICAgfD4gTGlzdC50b19zZXFcbiAgICAgIHw+IEhhc2h0Ymwub2Zfc2VxLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHJlYyBta19ub2RlID0gKGE6IG9yZGluYWwsIGI6IG9yZGluYWwpOiBub2RlID0+IHtcbiAgICBsZXQgc2hhcGUgPVxuICAgICAgaWYgKGEgKyAxID09IGIpIHtcbiAgICAgICAgTGVhZjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBtaWQgPSAoYSArIGIpIC8gMjtcbiAgICAgICAgQnJhbmNoKGxhenkobWtfbm9kZShhLCBtaWQpKSwgbGF6eShta19ub2RlKG1pZCwgYikpKTtcbiAgICAgIH07XG4gICAge3NoYXBlLCBpbnRlcnZhbDogKGEsIGIpLCBjb3VudDogMCwgc3RhdHVzOiBFbXB0eX07XG4gIH07XG5cbiAge3ZhbHVlcywgb3JkaW5hbHMsIHJvb3Q6IG1rX25vZGUoMCwgQXJyYXkubGVuZ3RoKHZhbHVlcykgLSAxKX07XG59O1xuXG5sZXQgdXBkYXRlX3N0YXR1cyA9IChub2RlOiBub2RlKTogbm9kZSA9PiB7XG4gIGxldCBzdGF0dXMgPVxuICAgIGlmIChub2RlLmNvdW50ID4gMCkge1xuICAgICAgRnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChub2RlLnNoYXBlKSB7XG4gICAgICB8IExlYWYgPT4gRW1wdHlcbiAgICAgIHwgQnJhbmNoKGwsIHIpID0+XG4gICAgICAgIHN3aXRjaCAoTGF6eS5mb3JjZShsKS5zdGF0dXMsIExhenkuZm9yY2Uocikuc3RhdHVzKSB7XG4gICAgICAgIHwgKEVtcHR5LCBFbXB0eSkgPT4gRW1wdHlcbiAgICAgICAgfCBfID0+IFBhcnRpYWxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICB7Li4ubm9kZSwgc3RhdHVzfTtcbn07XG5cbnR5cGUgb3AgPVxuICB8IEluc2VydFxuICB8IERlbGV0ZTtcbmxldCBzdHJpbmdfb2Zfb3AgPVxuICBmdW5cbiAgfCBJbnNlcnQgPT4gXCJpbnNlcnRcIlxuICB8IERlbGV0ZSA9PiBcImRlbGV0ZVwiO1xuXG4vKipcbiAqIEltcGxlbWVudGF0aW9uIGZvbGxvd3MgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBTZWN0aW9ucyA4LjMgKyA4LjVcbiAqIG9mIENvbXB1dGF0aW9uYWwgR2VvbWV0cnk6IEFuIEludHJvZHVjdGlvbiBieSBQcmVwYXJhdGEgJiBTaGFtb3MuXG4gKiBTZWN0aW9uIDguMyBkZXNjcmliZXMgdGhlIGdlbmVyYWwgdXNlIG9mIHNlZ21lbnQgdHJlZXMgdG8gY29tcHV0ZVxuICogZmVhdHVyZXMgb2YgYSBjb2xsZWN0aW9uIG9mIHJlY3RhbmdsZXM7IFNlY3Rpb24gOC41IGRlc2NyaWJlcyB0aGVcbiAqIHNwZWNpYWxpemF0aW9uIG9mIHRoYXQgYXBwcm9hY2ggdG8gY29tcHV0ZSB0aGUgY29udG91ciBvZiBhIHVuaW9uXG4gKiBvZiByZWN0YW5nbGVzLiBUaGUgZ2VuZXJhbCBmcmFtZXdvcmsgbGFpZCBvdXQgaW4gOC4zIGlzIHVubmVjZXNzYXJ5XG4gKiBmb3Igb3VyIHB1cnBvc2VzIChzbyBvdXIgaW1wbGVtZW50YXRpb24gY291bGQgYmUgc3RyZWFtbGluZWQpIGJ1dCBJXG4gKiBpbXBsZW1lbnRlZCBpdCBhbnl3YXkgc28gdGhhdCB0aGUgdGV4dCBzZXJ2ZXMgYXMgZG9jdW1lbnRhdGlvbiB0aGF0XG4gKiBjbG9zZWx5IG1hcHMgdG8gb3VyIGNvZGUuXG4gKi9cbmxldCBwZXJmb3JtID0gKG9wLCAoYSwgYik6IGludGVydmFsLCB0cmVlOiB0KTogdCA9PiB7XG4gIGxldCByZWMgZ28gPSAob3AsIChhLCBiKSBhcyBpbnRlcnZhbCwgbm9kZTogbm9kZSk6IG5vZGUgPT4ge1xuICAgIGxldCAoYScsIGInKSA9IG5vZGUuaW50ZXJ2YWw7XG4gICAgbGV0IG5vZGUgPVxuICAgICAgaWYgKGEgPD0gYScgJiYgYicgPD0gYikge1xuICAgICAgICB7XG4gICAgICAgICAgLy8gYWxsb2NhdGUgdG8gdGhpcyBub2RlXG4gICAgICAgICAgLi4ubm9kZSxcbiAgICAgICAgICBjb3VudDpcbiAgICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICAgIHwgSW5zZXJ0ID0+IG5vZGUuY291bnQgKyAxXG4gICAgICAgICAgICB8IERlbGV0ZSA9PiBub2RlLmNvdW50IC0gMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAobm9kZS5zaGFwZSkge1xuICAgICAgICB8IExlYWYgPT4gbm9kZVxuICAgICAgICB8IEJyYW5jaChsLCByKSA9PlxuICAgICAgICAgIGxldCBtaWQgPSAoYScgKyBiJykgLyAyO1xuICAgICAgICAgIGxldCBsID0gYSA+PSBtaWQgPyBsIDogKGxhenkoZ28ob3AsIGludGVydmFsLCBMYXp5LmZvcmNlKGwpKSkpO1xuICAgICAgICAgIGxldCByID0gYiA8PSBtaWQgPyByIDogKGxhenkoZ28ob3AsIGludGVydmFsLCBMYXp5LmZvcmNlKHIpKSkpO1xuICAgICAgICAgIHsuLi5ub2RlLCBzaGFwZTogQnJhbmNoKGwsIHIpfTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgdXBkYXRlX3N0YXR1cyhub2RlKTtcbiAgfTtcbiAgc3dpdGNoIChcbiAgICBIYXNodGJsLmZpbmRfb3B0KHRyZWUub3JkaW5hbHMsIGEpLFxuICAgIEhhc2h0YmwuZmluZF9vcHQodHJlZS5vcmRpbmFscywgYiksXG4gICkge1xuICB8IChOb25lLCBfKVxuICB8IChfLCBOb25lKSA9PlxuICAgIGxldCBtc2cgPVxuICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgIFwiU2VnbWVudFRyZWUuJXM6IGV4cGVjdGVkIGludGVydmFsIHdpdGggZW5kcG9pbnRzIHNwZWNpZmllZCBhdCBpbml0aWFsaXphdGlvblwiLFxuICAgICAgICBzdHJpbmdfb2Zfb3Aob3ApLFxuICAgICAgKTtcbiAgICByYWlzZShJbnZhbGlkX2FyZ3VtZW50KG1zZykpO1xuICB8IChTb21lKGEpLCBTb21lKGIpKSA9PlxuICAgIGxldCBpbnRlcnZhbCA9IGEgPCBiID8gKGEsIGIpIDogKGIsIGEpO1xuICAgIGxldCBuZXdfcm9vdCA9IGdvKG9wLCBpbnRlcnZhbCwgdHJlZS5yb290KTtcbiAgICB7Li4udHJlZSwgcm9vdDogbmV3X3Jvb3R9O1xuICB9O1xufTtcbmxldCBpbnNlcnQgPSBwZXJmb3JtKEluc2VydCk7XG5sZXQgZGVsZXRlID0gcGVyZm9ybShEZWxldGUpO1xuXG4vKipcbiAqIFByZXBhcmF0YSAmIFNoYW1vcyB1c2UgdGhlIHRlcm1pbm9sb2d5IFwiY29udHJpYnV0aW9uXCIgYW5kIHNwZWNpZnlcbiAqIHRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gaW4gdGhlIHByb2NlZHVyZSBDT05UUiBpbiBTZWN0aW9uIDguNS5cbiAqL1xubGV0IGNvbXBsZW1lbnRfaW50ZXJzZWN0aW9uID0gKChhLCBiKTogaW50ZXJ2YWwsIHRyZWU6IHQpOiBsaXN0KGludGVydmFsKSA9PiB7XG4gIGxldCByZWMgZ28gPVxuICAgICAgICAgICh+c3RhY2s9W10sIChhLCBiKSBhcyBpbnRlcnZhbCwgbm9kZTogbm9kZSlcbiAgICAgICAgICA6IGxpc3QoKG9yZGluYWwsIG9yZGluYWwpKSA9PiB7XG4gICAgbGV0IChhJywgYicpID0gbm9kZS5pbnRlcnZhbDtcbiAgICBzd2l0Y2ggKG5vZGUuc3RhdHVzKSB7XG4gICAgfCBGdWxsID0+IHN0YWNrXG4gICAgfCBFbXB0eSB3aGVuIGEgPD0gYScgJiYgYicgPD0gYiA9PlxuICAgICAgLy8gbWVyZ2UgY29udGludW91cyBzZWdtZW50c1xuICAgICAgc3dpdGNoIChzdGFjaykge1xuICAgICAgfCBbKGEnJywgYicnKSwgLi4ucmVzdF0gd2hlbiBhJyA9PSBiJycgPT4gWyhhJycsIGInKSwgLi4ucmVzdF1cbiAgICAgIHwgXyA9PiBbKGEnLCBiJyksIC4uLnN0YWNrXVxuICAgICAgfVxuICAgIHwgXyA9PlxuICAgICAgc3dpdGNoIChub2RlLnNoYXBlKSB7XG4gICAgICB8IExlYWYgPT4gc3RhY2tcbiAgICAgIHwgQnJhbmNoKGwsIHIpID0+XG4gICAgICAgIGxldCBtaWQgPSAoYScgKyBiJykgLyAyO1xuICAgICAgICBsZXQgc3RhY2sgPSBhID49IG1pZCA/IHN0YWNrIDogZ28ofnN0YWNrLCBpbnRlcnZhbCwgTGF6eS5mb3JjZShsKSk7XG4gICAgICAgIGIgPD0gbWlkID8gc3RhY2sgOiBnbyh+c3RhY2ssIGludGVydmFsLCBMYXp5LmZvcmNlKHIpKTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuICBzd2l0Y2ggKFxuICAgIEhhc2h0YmwuZmluZF9vcHQodHJlZS5vcmRpbmFscywgYSksXG4gICAgSGFzaHRibC5maW5kX29wdCh0cmVlLm9yZGluYWxzLCBiKSxcbiAgKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIE5vbmUpID0+IGZhaWx3aXRoKFwiaW52YWxpZCBhcmd1bWVudFwiKVxuICB8IChTb21lKGEpLCBTb21lKGIpKSA9PlxuICAgIGxldCBpbnRlcnZhbCA9IGEgPCBiID8gKGEsIGIpIDogKGIsIGEpO1xuICAgIGdvKGludGVydmFsLCB0cmVlLnJvb3QpXG4gICAgfD4gTGlzdC5tYXAoKChvcmRpbmFsMSwgb3JkaW5hbDIpKSA9PiB7XG4gICAgICAgICBsZXQgKG8xLCBvMikgPSBhIDwgYiA/IChvcmRpbmFsMSwgb3JkaW5hbDIpIDogKG9yZGluYWwyLCBvcmRpbmFsMSk7XG4gICAgICAgICAodHJlZS52YWx1ZXNbbzFdLCB0cmVlLnZhbHVlc1tvMl0pO1xuICAgICAgIH0pO1xuICB9O1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gVXRpbDtcblxubW9kdWxlIFBvaW50ID0ge1xuICB0eXBlIHQgPSB7XG4gICAgeDogZmxvYXQsXG4gICAgeTogZmxvYXQsXG4gIH07XG59O1xuXG5tb2R1bGUgVmVjdG9yID0ge1xuICB0eXBlIHQgPSB7XG4gICAgZHg6IGZsb2F0LFxuICAgIGR5OiBmbG9hdCxcbiAgfTtcbn07XG5cbm1vZHVsZSBSZWN0ID0ge1xuICB0eXBlIHQgPSB7XG4gICAgbWluOiBQb2ludC50LFxuICAgIHdpZHRoOiBmbG9hdCxcbiAgICBoZWlnaHQ6IGZsb2F0LFxuICB9O1xufTtcblxubW9kdWxlIFBhdGggPSB7XG4gIHR5cGUgdCA9IGxpc3QoY21kKVxuICBhbmQgY21kID1cbiAgICB8IFpcbiAgICB8IE0oUG9pbnQudClcbiAgICB8IE1fKFZlY3Rvci50KVxuICAgIHwgTChQb2ludC50KVxuICAgIHwgTF8oVmVjdG9yLnQpXG4gICAgfCBIKHt4OiBmbG9hdH0pXG4gICAgfCBIXyh7ZHg6IGZsb2F0fSlcbiAgICB8IFYoe3k6IGZsb2F0fSlcbiAgICB8IFZfKHtkeTogZmxvYXR9KVxuICAgIHwgQV8oe1xuICAgICAgICByeDogZmxvYXQsXG4gICAgICAgIHJ5OiBmbG9hdCxcbiAgICAgICAgeF9heGlzX3JvdGF0aW9uOiBmbG9hdCxcbiAgICAgICAgbGFyZ2VfYXJjX2ZsYWc6IGJvb2wsXG4gICAgICAgIHN3ZWVwX2ZsYWc6IGJvb2wsXG4gICAgICAgIGR4OiBmbG9hdCxcbiAgICAgICAgZHk6IGZsb2F0LFxuICAgICAgfSk7XG5cbiAgbGV0IGNtZGZ1ZGdlID0gKH54PTAuLCB+eT0wLiwgYzogY21kKTogY21kID0+IHtcbiAgICBsZXQgKGgsIHYpID0gKHgsIHkpO1xuICAgIHN3aXRjaCAoYykge1xuICAgIHwgTSh7eCwgeX0pID0+IE0oe3g6IHggKy4gaCwgeTogeSArLiB2fSlcbiAgICB8IEwoe3gsIHl9KSA9PiBMKHt4OiB4ICsuIGgsIHk6IHkgKy4gdn0pXG4gICAgfCBIKHt4fSkgPT4gSCh7eDogeCArLiBofSlcbiAgICB8IFYoe3l9KSA9PiBWKHt5OiB5ICsuIHZ9KVxuICAgIHwgXyA9PiBjXG4gICAgfTtcbiAgfTtcblxuICBsZXQgbSA9ICh+eCwgfnkpID0+IE0oe3g6IEZsb2F0Lm9mX2ludCh4KSwgeTogRmxvYXQub2ZfaW50KHkpfSk7XG4gIGxldCBsXyA9ICh+ZHgsIH5keSkgPT4gTF8oe2R4OiBGbG9hdC5vZl9pbnQoZHgpLCBkeTogRmxvYXQub2ZfaW50KGR5KX0pO1xuICBsZXQgaCA9ICh+eCkgPT4gSCh7eDogRmxvYXQub2ZfaW50KHgpfSk7XG4gIGxldCBoXyA9ICh+ZHgpID0+IEhfKHtkeDogRmxvYXQub2ZfaW50KGR4KX0pO1xuICBsZXQgdiA9ICh+eSkgPT4gVih7eTogRmxvYXQub2ZfaW50KHkpfSk7XG4gIGxldCB2XyA9ICh+ZHkpID0+IFZfKHtkeTogRmxvYXQub2ZfaW50KGR5KX0pO1xuXG4gIGxldCBzY2FsZV9jbWQgPSAofnNjYWxlX3g9MS4sIH5zY2FsZV95PTEuKSA9PlxuICAgIGZ1blxuICAgIHwgKFogfCBNKF8pIHwgTChfKSB8IEgoXykgfCBWKF8pIHwgQV8oXykpIGFzIGNtZCA9PiBjbWRcbiAgICB8IE1fKHtkeCwgZHl9KSA9PiBNXyh7ZHg6IHNjYWxlX3ggKi4gZHgsIGR5OiBzY2FsZV95ICouIGR5fSlcbiAgICB8IExfKHtkeCwgZHl9KSA9PiBMXyh7ZHg6IHNjYWxlX3ggKi4gZHgsIGR5OiBzY2FsZV95ICouIGR5fSlcbiAgICB8IEhfKHtkeH0pID0+IEhfKHtkeDogc2NhbGVfeCAqLiBkeH0pXG4gICAgfCBWXyh7ZHl9KSA9PiBWXyh7ZHk6IHNjYWxlX3kgKi4gZHl9KTtcblxuICBsZXQgc2NhbGUgPSBzID0+IExpc3QubWFwKHNjYWxlX2NtZCh+c2NhbGVfeD1zLCB+c2NhbGVfeT1zKSk7XG4gIGxldCBzY2FsZV94ID0gcyA9PiBMaXN0Lm1hcChzY2FsZV9jbWQofnNjYWxlX3g9cykpO1xuICBsZXQgc2NhbGVfeSA9IHMgPT4gTGlzdC5tYXAoc2NhbGVfY21kKH5zY2FsZV95PXMpKTtcblxuICBsZXQgcmV2ZXJzZSA9IExpc3QucmV2X21hcChzY2FsZV9jbWQofnNjYWxlX3g9LTEuLCB+c2NhbGVfeT0tMS4pKTtcblxuICBsZXQgdHJhbnNsYXRlX2NtZCA9ICh2OiBWZWN0b3IudCkgPT5cbiAgICBmdW5cbiAgICB8IChaIHwgTV8oXykgfCBMXyhfKSB8IEhfKF8pIHwgVl8oXykgfCBBXyhfKSkgYXMgY21kID0+IGNtZFxuICAgIHwgTSh7eCwgeX0pID0+IE0oe3g6IHggKy4gdi5keCwgeTogeSArLiB2LmR5fSlcbiAgICB8IEwoe3gsIHl9KSA9PiBMKHt4OiB4ICsuIHYuZHgsIHk6IHkgKy4gdi5keX0pXG4gICAgfCBIKHt4fSkgPT4gSCh7eDogeCArLiB2LmR4fSlcbiAgICB8IFYoe3l9KSA9PiBWKHt5OiB5ICsuIHYuZHl9KTtcbiAgbGV0IHRyYW5zbGF0ZSA9IHYgPT4gTGlzdC5tYXAodHJhbnNsYXRlX2NtZCh2KSk7XG5cbiAgbGV0IHN0cmluZ19vZl9mbGFnID1cbiAgICBmdW5cbiAgICB8IGZhbHNlID0+IFwiMFwiXG4gICAgfCB0cnVlID0+IFwiMVwiO1xuXG4gIGxldCBzdHJpbmdfb2ZfY29tbWFuZCA9XG4gICAgZnVuXG4gICAgfCBaID0+IFwiWlwiXG4gICAgfCBNKHt4LCB5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJNICVmICVmXCIsIHgsIHkpXG4gICAgfCBNXyh7ZHgsIGR5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJtICVmICVmXCIsIGR4LCBkeSlcbiAgICB8IEwoe3gsIHl9KSA9PiBQcmludGYuc3ByaW50ZihcIkwgJWYgJWZcIiwgeCwgeSlcbiAgICB8IExfKHtkeCwgZHl9KSA9PiBQcmludGYuc3ByaW50ZihcImwgJWYgJWZcIiwgZHgsIGR5KVxuICAgIHwgSCh7eH0pID0+IFByaW50Zi5zcHJpbnRmKFwiSCAlZlwiLCB4KVxuICAgIHwgSF8oe2R4fSkgPT4gUHJpbnRmLnNwcmludGYoXCJoICVmXCIsIGR4KVxuICAgIHwgVih7eX0pID0+IFByaW50Zi5zcHJpbnRmKFwiViAlZlwiLCB5KVxuICAgIHwgVl8oe2R5fSkgPT4gUHJpbnRmLnNwcmludGYoXCJ2ICVmXCIsIGR5KVxuICAgIHwgQV8oe3J4LCByeSwgeF9heGlzX3JvdGF0aW9uLCBsYXJnZV9hcmNfZmxhZywgc3dlZXBfZmxhZywgZHgsIGR5fSkgPT5cbiAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICBcImEgJWYgJWYgJWYgJXMgJXMgJWYgJWZcIixcbiAgICAgICAgcngsXG4gICAgICAgIHJ5LFxuICAgICAgICB4X2F4aXNfcm90YXRpb24sXG4gICAgICAgIHN0cmluZ19vZl9mbGFnKGxhcmdlX2FyY19mbGFnKSxcbiAgICAgICAgc3RyaW5nX29mX2ZsYWcoc3dlZXBfZmxhZyksXG4gICAgICAgIGR4LFxuICAgICAgICBkeSxcbiAgICAgICk7XG5cbiAgbGV0IHZpZXcgPSAofmF0dHJzOiBBdHRycy50LCBwYXRoOiB0KTogTm9kZS50ID0+IHtcbiAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZShMaXN0Lmxlbmd0aChwYXRoKSAqIDIwKTtcbiAgICBwYXRoXG4gICAgfD4gTGlzdC5pdGVyKGNtZCA9PiB7XG4gICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyhidWZmZXIsIHN0cmluZ19vZl9jb21tYW5kKGNtZCkpO1xuICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcoYnVmZmVyLCBcIiBcIik7XG4gICAgICAgfSk7XG4gICAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgICAgXCJwYXRoXCIsXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtBdHRyLmNyZWF0ZShcImRcIiwgQnVmZmVyLmNvbnRlbnRzKGJ1ZmZlcikpLCAuLi5hdHRyc10pLFxuICAgICAgW10sXG4gICAgKTtcbiAgfTtcbn07XG5cbm1vZHVsZSBPcnRob2dvbmFsUG9seWdvbiA9IHtcbiAgdHlwZSB0ID0gUGF0aC50O1xuXG4gIHR5cGUgbGlua2VkX2VkZ2UgPSB7XG4gICAgc3JjOiBQb2ludC50LFxuICAgIGRzdDogUG9pbnQudCxcbiAgICBtdXRhYmxlIG5leHQ6IFtAc2V4cC5vcGFxdWVdIG9wdGlvbihsaW5rZWRfZWRnZSksXG4gIH07XG5cbiAgbGV0IGxpbmtlZF9lZGdlX2VxID0gKGUxLCBlMikgPT4gZTEuc3JjID09IGUyLnNyYyAmJiBlMS5kc3QgPT0gZTIuZHN0O1xuXG4gIGxldCBjbWRfb2ZfbGlua2VkX2VkZ2UgPSAoZWRnZSk6IFBhdGguY21kID0+IHtcbiAgICBsZXQgc3JjID0gZWRnZS5zcmM7XG4gICAgbGV0IGRzdCA9IGVkZ2UuZHN0O1xuICAgIHNyYy54ID09IGRzdC54ID8gVl8oe2R5OiBkc3QueSAtLiBzcmMueX0pIDogSF8oe2R4OiBkc3QueCAtLiBzcmMueH0pO1xuICB9O1xuXG4gIGxldCByb3VuZF9jb3JuZXJzID0gKChyeDogZmxvYXQsIHJ5OiBmbG9hdCksIHBhdGg6IFBhdGgudCk6IFBhdGgudCA9PiB7XG4gICAgLy8gQ29ybmVyIHJvdW5kaW5nIGN1dHMgaW50byB0aGUgbGVuZ3RocyBvZiB0aGUgZW50ZXJpbmcgYW5kXG4gICAgLy8gZXhpdGluZyBlZGdlcy4gRmluZCB0aGUgbWF4aW11bSAocHJvcG9ydGlvbmFsbHkgc2NhbGVkKVxuICAgIC8vIHJhZGlpIHBvc3NpYmxlIGdpdmVuIGxlbmd0aHMgb2YgZW50ZXJpbmcgYW5kIGV4aXRpbmcgZWRnZXMuXG4gICAgbGV0IG1heF9yYWRpaSA9XG4gICAgICAgICgocng6IGZsb2F0LCByeTogZmxvYXQpLCAoZHg6IGZsb2F0LCBkeTogZmxvYXQpKTogKGZsb2F0LCBmbG9hdCkgPT4ge1xuICAgICAgbGV0IHJ4X21pbiA9IG1pbihyeCwgRmxvYXQuYWJzKGR4KSk7XG4gICAgICBsZXQgcnlfbWluID0gbWluKHJ5LCBGbG9hdC5hYnMoZHkpKTtcbiAgICAgIHJ5X21pbiAqLiByeCA+PSByeF9taW4gKi4gcnlcbiAgICAgICAgPyAocnhfbWluLCByeF9taW4gKi4gcnkgLy4gcngpIDogKHJ5X21pbiAqLiByeCAvLiByeSwgcnlfbWluKTtcbiAgICB9O1xuXG4gICAgcGF0aFxuICAgIHw+IExpc3QubWFwKFxuICAgICAgICAgZnVuXG4gICAgICAgICB8IFBhdGguSF8oe2R4fSkgPT4gUGF0aC5bSF8oe2R4OiBkeCAqLiAwLjV9KSwgSF8oe2R4OiBkeCAqLiAwLjV9KV1cbiAgICAgICAgIHwgVl8oe2R5fSkgPT4gW1ZfKHtkeTogZHkgKi4gMC41fSksIFZfKHtkeTogZHkgKi4gMC41fSldXG4gICAgICAgICB8IGNtZCA9PiBbY21kXSxcbiAgICAgICApXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgfD4gTGlzdFV0aWwucm90YXRlXG4gICAgfD4gTGlzdFV0aWwuZGlzam9pbnRfcGFpcnNcbiAgICB8PiBMaXN0Lm1hcCgoKGNtZDE6IFBhdGguY21kLCBjbWQyOiBQYXRoLmNtZCkpID0+IHtcbiAgICAgICAgIHN3aXRjaCAoY21kMSwgY21kMikge1xuICAgICAgICAgfCAoSF8oe2R4fSksIFZfKHtkeX0pKSA9PlxuICAgICAgICAgICBsZXQgKHJ4LCByeSkgPSBtYXhfcmFkaWkoKHJ4LCByeSksIChkeCwgZHkpKTtcbiAgICAgICAgICAgbGV0IGNsb2Nrd2lzZSA9IEZsb2F0LnNpZ25fYml0KGR4KSA9PSBGbG9hdC5zaWduX2JpdChkeSk7XG4gICAgICAgICAgIFBhdGguW1xuICAgICAgICAgICAgIEhfKHtkeDogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeCkgLS4gcngsIGR4KX0pLFxuICAgICAgICAgICAgIEFfKHtcbiAgICAgICAgICAgICAgIHJ4LFxuICAgICAgICAgICAgICAgcnksXG4gICAgICAgICAgICAgICB4X2F4aXNfcm90YXRpb246IDAuLFxuICAgICAgICAgICAgICAgbGFyZ2VfYXJjX2ZsYWc6IGZhbHNlLFxuICAgICAgICAgICAgICAgc3dlZXBfZmxhZzogY2xvY2t3aXNlLFxuICAgICAgICAgICAgICAgZHg6IEZsb2F0LmNvcHlfc2lnbihyeCwgZHgpLFxuICAgICAgICAgICAgICAgZHk6IEZsb2F0LmNvcHlfc2lnbihyeSwgZHkpLFxuICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgIFZfKHtkeTogRmxvYXQuY29weV9zaWduKEZsb2F0LmFicyhkeSkgLS4gcnksIGR5KX0pLFxuICAgICAgICAgICBdO1xuICAgICAgICAgfCAoVl8oe2R5fSksIEhfKHtkeH0pKSA9PlxuICAgICAgICAgICBsZXQgKHJ4LCByeSkgPSBtYXhfcmFkaWkoKHJ4LCByeSksIChkeCwgZHkpKTtcbiAgICAgICAgICAgbGV0IGNsb2Nrd2lzZSA9IEZsb2F0LnNpZ25fYml0KGR5KSAhPSBGbG9hdC5zaWduX2JpdChkeCk7XG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBWXyh7ZHk6IEZsb2F0LmNvcHlfc2lnbihGbG9hdC5hYnMoZHkpIC0uIHJ5LCBkeSl9KSxcbiAgICAgICAgICAgICBBXyh7XG4gICAgICAgICAgICAgICByeCxcbiAgICAgICAgICAgICAgIHJ5LFxuICAgICAgICAgICAgICAgeF9heGlzX3JvdGF0aW9uOiAwLixcbiAgICAgICAgICAgICAgIGxhcmdlX2FyY19mbGFnOiBmYWxzZSxcbiAgICAgICAgICAgICAgIHN3ZWVwX2ZsYWc6IGNsb2Nrd2lzZSxcbiAgICAgICAgICAgICAgIGR4OiBGbG9hdC5jb3B5X3NpZ24ocngsIGR4KSxcbiAgICAgICAgICAgICAgIGR5OiBGbG9hdC5jb3B5X3NpZ24ocnksIGR5KSxcbiAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICBIXyh7ZHg6IEZsb2F0LmNvcHlfc2lnbihGbG9hdC5hYnMoZHgpIC0uIHJ4LCBkeCl9KSxcbiAgICAgICAgICAgXTtcbiAgICAgICAgIHwgXyA9PiBbY21kMSwgY21kMl1cbiAgICAgICAgIH1cbiAgICAgICB9KVxuICAgIHw+IExpc3QuZmxhdHRlbjtcbiAgfTtcblxuICBsZXQgaXNfbGVmdF9zaWRlID0gKGVkZ2U6IGxpbmtlZF9lZGdlKTogYm9vbCA9PiB7XG4gICAgZWRnZS5zcmMueSA+IGVkZ2UuZHN0Lnk7XG4gIH07XG5cbiAgLyoqXG4gICAqIE1lcmdlIGNvaW5jaWRpbmcgdmVydGljYWwgZWRnZXMgdGhhdCBwb2ludCBpbiB0aGUgc2FtZSBkaXJlY3Rpb24uXG4gICAqL1xuICBsZXQgbWVyZ2VfY29pbmNpZGluZ192ZXJ0aWNhbF9lZGdlcyA9XG4gICAgICAoZWRnZXM6IGxpc3QobGlua2VkX2VkZ2UpKTogbGlzdChsaW5rZWRfZWRnZSkgPT4ge1xuICAgIC8vIHRoZXJlIG1heSBiZSBhIGNsZWFuZXIgKyBtb3JlIGVmZmljaWVudCBtZXRob2QgZm9yIHRoaXMgcGFzc1xuICAgIC8vIGJ1dCBnb29kIGVub3VnaCBmb3Igbm93XG4gICAgbGV0IChsZWZ0X2VkZ2VzLCByaWdodF9lZGdlcykgPSBMaXN0LnBhcnRpdGlvbihpc19sZWZ0X3NpZGUsIGVkZ2VzKTtcbiAgICBsZXQgbWVyZ2VkX2xlZnRfZWRnZXMgPVxuICAgICAgbGVmdF9lZGdlc1xuICAgICAgfD4gTGlzdC5zb3J0KCh2MSwgdjIpID0+XG4gICAgICAgICAgIGlmICh2MS5zcmMueCA8IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgKC0xKTtcbiAgICAgICAgICAgfSBlbHNlIGlmICh2MS5zcmMueCA+IHYyLnNyYy54KSB7XG4gICAgICAgICAgICAgMTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAoLTEpICogRmxvYXQuY29tcGFyZSh2MS5zcmMueSwgdjIuc3JjLnkpO1xuICAgICAgICAgICB9XG4gICAgICAgICApXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKHN0YWNrLCB2KSA9PlxuICAgICAgICAgICAgIHN3aXRjaCAoc3RhY2spIHtcbiAgICAgICAgICAgICB8IFtdID0+IFt2XVxuICAgICAgICAgICAgIHwgW2hkLCAuLi50bF0gYXMgc3RhY2sgPT5cbiAgICAgICAgICAgICAgIGlmICh2LnNyYy54ID09IGhkLmRzdC54ICYmIHYuc3JjLnkgPj0gaGQuZHN0LnkpIHtcbiAgICAgICAgICAgICAgICAgW3suLi5oZCwgZHN0OiB2LmRzdH0sIC4uLnRsXTtcbiAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgIFt2LCAuLi5zdGFja107XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgW10sXG4gICAgICAgICApO1xuICAgIGxldCBtZXJnZWRfcmlnaHRfZWRnZXMgPVxuICAgICAgcmlnaHRfZWRnZXNcbiAgICAgIHw+IExpc3Quc29ydCgodjEsIHYyKSA9PlxuICAgICAgICAgICBpZiAodjEuc3JjLnggPCB2Mi5zcmMueCkge1xuICAgICAgICAgICAgICgtMSk7XG4gICAgICAgICAgIH0gZWxzZSBpZiAodjEuc3JjLnggPiB2Mi5zcmMueCkge1xuICAgICAgICAgICAgIDE7XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgRmxvYXQuY29tcGFyZSh2MS5zcmMueSwgdjIuc3JjLnkpO1xuICAgICAgICAgICB9XG4gICAgICAgICApXG4gICAgICB8PiBMaXN0LmZvbGRfbGVmdChcbiAgICAgICAgICAgKHN0YWNrLCB2KSA9PlxuICAgICAgICAgICAgIHN3aXRjaCAoc3RhY2spIHtcbiAgICAgICAgICAgICB8IFtdID0+IFt2XVxuICAgICAgICAgICAgIHwgW2hkLCAuLi50bF0gYXMgc3RhY2sgPT5cbiAgICAgICAgICAgICAgIGlmICh2LnNyYy54ID09IGhkLmRzdC54ICYmIHYuc3JjLnkgPD0gaGQuZHN0LnkpIHtcbiAgICAgICAgICAgICAgICAgW3suLi5oZCwgZHN0OiB2LmRzdH0sIC4uLnRsXTtcbiAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgIFt2LCAuLi5zdGFja107XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgfSxcbiAgICAgICAgICAgW10sXG4gICAgICAgICApO1xuICAgIG1lcmdlZF9sZWZ0X2VkZ2VzIEAgbWVyZ2VkX3JpZ2h0X2VkZ2VzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBgdmVydGljYWxfY29udG91cl9lZGdlcyhycylgIGNvbXB1dGUgdGhlIHZlcnRpY2FsIGVkZ2VzIG9mIHRoZVxuICAgKiBjb250b3VyIG9mIHRoZSB1bmlvbiBvZiByZWN0YW5nbGVzIGByc2BcbiAgICovXG4gIGxldCB2ZXJ0aWNhbF9jb250b3VyX2VkZ2VzID0gKHJlY3RzOiBsaXN0KFJlY3QudCkpOiBsaXN0KGxpbmtlZF9lZGdlKSA9PiB7XG4gICAgbGV0IHNvcnRlZF92ZXJ0aWNhbF9zaWRlczogbGlzdChsaW5rZWRfZWRnZSkgPVxuICAgICAgcmVjdHNcbiAgICAgIHw+IExpc3QubWFwKChSZWN0LnttaW4sIHdpZHRoLCBoZWlnaHR9KSA9PiB7XG4gICAgICAgICAgIGxldCBtYXhfeCA9IG1pbi54ICsuIHdpZHRoO1xuICAgICAgICAgICBsZXQgbWF4X3kgPSBtaW4ueSArLiBoZWlnaHQ7XG4gICAgICAgICAgIGxldCBtYXggPSBQb2ludC57eDogbWF4X3gsIHk6IG1heF95fTtcbiAgICAgICAgICAgbGV0IG1pbl9tYXggPSBQb2ludC57eDogbWluLngsIHk6IG1heF95fTtcbiAgICAgICAgICAgbGV0IG1heF9taW4gPSBQb2ludC57eDogbWF4X3gsIHk6IG1pbi55fTtcbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIC8vIGxlZnQgc2lkZXMgcG9pbnQgaW4gbmVnYXRpdmUgZGlyZWN0aW9uXG4gICAgICAgICAgICAge3NyYzogbWluX21heCwgZHN0OiBtaW4sIG5leHQ6IE5vbmV9LFxuICAgICAgICAgICAgIC8vIHJpZ2h0IHNpZGVzIHBvaW50IGluIHBvc2l0aXZlIGRpcmVjdGlvblxuICAgICAgICAgICAgIHtzcmM6IG1heF9taW4sIGRzdDogbWF4LCBuZXh0OiBOb25lfSxcbiAgICAgICAgICAgXTtcbiAgICAgICAgIH0pXG4gICAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAgIHw+IExpc3Quc29ydCgodjEsIHYyKSA9PlxuICAgICAgICAgICBpZiAodjEuc3JjLnggPCB2Mi5zcmMueCkge1xuICAgICAgICAgICAgICgtMSk7XG4gICAgICAgICAgIH0gZWxzZSBpZiAodjEuc3JjLnggPiB2Mi5zcmMueCkge1xuICAgICAgICAgICAgIDE7XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgLy8gZm9yIHZlcnRpY2FsIHNpZGVzIG9mIGVxdWFsIGFic2Npc3NhLFxuICAgICAgICAgICAgIC8vIG5lZWQgdG8gc29ydCBsZWZ0IHNpZGVzIGJlZm9yZSByaWdodCBzaWRlc1xuICAgICAgICAgICAgIGxldCBpc19sZWZ0MSA9IGlzX2xlZnRfc2lkZSh2MSk7XG4gICAgICAgICAgICAgbGV0IGlzX2xlZnQyID0gaXNfbGVmdF9zaWRlKHYyKTtcbiAgICAgICAgICAgICBpZiAoaXNfbGVmdDEgJiYgIWlzX2xlZnQyKSB7XG4gICAgICAgICAgICAgICAoLTEpO1xuICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzX2xlZnQxICYmIGlzX2xlZnQyKSB7XG4gICAgICAgICAgICAgICAxO1xuICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAwO1xuICAgICAgICAgICAgIH07XG4gICAgICAgICAgIH1cbiAgICAgICAgICk7XG5cbiAgICBsZXQgc2VnbWVudF90cmVlID1cbiAgICAgIHJlY3RzXG4gICAgICB8PiBMaXN0Lm1hcCgoUmVjdC57bWluLCBoZWlnaHQsIF99KSA9PiBbbWluLnksIG1pbi55ICsuIGhlaWdodF0pXG4gICAgICB8PiBMaXN0LmZsYXR0ZW5cbiAgICAgIHw+IFNlZ21lbnRUcmVlLm1rO1xuXG4gICAgc29ydGVkX3ZlcnRpY2FsX3NpZGVzXG4gICAgLy8gcGxhbmUtc3dlZXBcbiAgICB8PiBMaXN0LmZvbGRfbGVmdF9tYXAoXG4gICAgICAgICAodHJlZSwgdikgPT4ge1xuICAgICAgICAgICBsZXQgeCA9IHYuc3JjLng7XG4gICAgICAgICAgIGxldCB5cyA9ICh2LnNyYy55LCB2LmRzdC55KTtcbiAgICAgICAgICAgbGV0IG1rX2NvbnRvdXJfZWRnZSA9ICgoeV9zcmMsIHlfZHN0KSkgPT4ge1xuICAgICAgICAgICAgIGxldCBzcmMgPSBQb2ludC57eCwgeTogeV9zcmN9O1xuICAgICAgICAgICAgIGxldCBkc3QgPSBQb2ludC57eCwgeTogeV9kc3R9O1xuICAgICAgICAgICAgIHtzcmMsIGRzdCwgbmV4dDogTm9uZX07XG4gICAgICAgICAgIH07XG4gICAgICAgICAgIGlmIChpc19sZWZ0X3NpZGUodikpIHtcbiAgICAgICAgICAgICBsZXQgbmV3X2NvbnRvdXJfZWRnZXMgPVxuICAgICAgICAgICAgICAgU2VnbWVudFRyZWUuY29tcGxlbWVudF9pbnRlcnNlY3Rpb24oeXMsIHRyZWUpXG4gICAgICAgICAgICAgICB8PiBMaXN0Lm1hcChta19jb250b3VyX2VkZ2UpO1xuICAgICAgICAgICAgIGxldCB1cGRhdGVkX3RyZWUgPSBTZWdtZW50VHJlZS5pbnNlcnQoeXMsIHRyZWUpO1xuICAgICAgICAgICAgICh1cGRhdGVkX3RyZWUsIG5ld19jb250b3VyX2VkZ2VzKTtcbiAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICBsZXQgdXBkYXRlZF90cmVlID0gU2VnbWVudFRyZWUuZGVsZXRlKHlzLCB0cmVlKTtcbiAgICAgICAgICAgICBsZXQgbmV3X2NvbnRvdXJfZWRnZXMgPVxuICAgICAgICAgICAgICAgU2VnbWVudFRyZWUuY29tcGxlbWVudF9pbnRlcnNlY3Rpb24oeXMsIHVwZGF0ZWRfdHJlZSlcbiAgICAgICAgICAgICAgIHw+IExpc3QubWFwKG1rX2NvbnRvdXJfZWRnZSk7XG4gICAgICAgICAgICAgKHVwZGF0ZWRfdHJlZSwgbmV3X2NvbnRvdXJfZWRnZXMpO1xuICAgICAgICAgICB9O1xuICAgICAgICAgfSxcbiAgICAgICAgIHNlZ21lbnRfdHJlZSxcbiAgICAgICApXG4gICAgfD4gc25kXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgLy8gdGhpcyBzdGVwIGlzIG5vdCBleHBsaWNhdGVkIGJ5IFByZXBhcmF0YSAmIFNoYW1vc1xuICAgIC8vIGJ1dCBpdHMgYWJzZW5jZSBjYXVzZXMgYnVnc1xuICAgIHw+IG1lcmdlX2NvaW5jaWRpbmdfdmVydGljYWxfZWRnZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBTZWN0aW9uIDguNSBvZlxuICAgKiBDb21wdXRhdGlvbmFsIEdlb21ldHJ5OiBBbiBJbnRyb2R1Y3Rpb24gYnkgUHJlcGFyYXRhXG4gICAqICYgU2hhbW9zLiBJZiB5b3UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhbGdvcml0aG0gaW5cbiAgICogZGV0YWlsLCB5b3Ugc2hvdWxkIGZpcnN0IHJlYWQgU2VjdGlvbnMgMS4yLjMuMSArIDguMy5cbiAgICovXG4gIGxldCBtayA9ICh+Y29ybmVyX3JhZGlpOiAoZmxvYXQsIGZsb2F0KSwgcmVjdHM6IGxpc3QoUmVjdC50KSk6IHQgPT4ge1xuICAgIGFzc2VydChyZWN0cyAhPSBbXSk7XG5cbiAgICBsZXQgdmVydGljYWxfY29udG91cl9lZGdlcyA9IHZlcnRpY2FsX2NvbnRvdXJfZWRnZXMocmVjdHMpO1xuXG4gICAgLy8gam9pbiB2ZXJ0aWNhbCBjb250b3VyIGVkZ2VzIHZpYSBob3Jpem9udGFsIGVkZ2VzXG4gICAgdmVydGljYWxfY29udG91cl9lZGdlc1xuICAgIHw+IExpc3QubWFwKHYgPT4gWyhmYWxzZSwgdiksICh0cnVlLCB2KV0pXG4gICAgfD4gTGlzdC5mbGF0dGVuXG4gICAgLy8gc29ydCBlbmRwb2ludHMgYnkgeSBjb29yZGluYXRlLCB0aGVuIHggY29vcmRpbmF0ZVxuICAgIHw+IExpc3Quc29ydCgoKGlzX3NyYzEsIHYxKSwgKGlzX3NyYzIsIHYyKSkgPT4ge1xuICAgICAgICAgbGV0IHB0MSA9IGlzX3NyYzEgPyB2MS5zcmMgOiB2MS5kc3Q7XG4gICAgICAgICBsZXQgcHQyID0gaXNfc3JjMiA/IHYyLnNyYyA6IHYyLmRzdDtcbiAgICAgICAgIGlmIChwdDEueSA8IHB0Mi55KSB7XG4gICAgICAgICAgICgtMSk7XG4gICAgICAgICB9IGVsc2UgaWYgKHB0MS55ID4gcHQyLnkpIHtcbiAgICAgICAgICAgMTtcbiAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgIEZsb2F0LmNvbXBhcmUocHQxLngsIHB0Mi54KTtcbiAgICAgICAgIH07XG4gICAgICAgfSlcbiAgICB8PiBMaXN0VXRpbC5kaXNqb2ludF9wYWlyc1xuICAgIC8vIGNvbnNlY3V0aXZlIHBhaXJzIG9mIGVuZHBvaW50cyBmb3JtIGhvcml6b250YWwgZWRnZXNcbiAgICB8PiBMaXN0Lml0ZXIoKCgoaXNfc3JjMSwgdjEpLCAoaXNfc3JjMiwgdjIpKSkgPT4ge1xuICAgICAgICAgbGV0IHB0MSA9IGlzX3NyYzEgPyB2MS5zcmMgOiB2MS5kc3Q7XG4gICAgICAgICBsZXQgcHQyID0gaXNfc3JjMiA/IHYyLnNyYyA6IHYyLmRzdDtcbiAgICAgICAgIGFzc2VydChwdDEueSA9PSBwdDIueSk7XG4gICAgICAgICBsZXQgeSA9IHB0MS55O1xuXG4gICAgICAgICBsZXQgKHhfc3JjLCB4X2RzdCwgcHJldiwgbmV4dCkgPVxuICAgICAgICAgICBpc19zcmMxID8gKHB0Mi54LCBwdDEueCwgdjIsIHYxKSA6IChwdDEueCwgcHQyLngsIHYxLCB2Mik7XG5cbiAgICAgICAgIGxldCBoID0ge1xuICAgICAgICAgICBsZXQgc3JjID0gUG9pbnQue3g6IHhfc3JjLCB5fTtcbiAgICAgICAgICAgbGV0IGRzdCA9IFBvaW50Lnt4OiB4X2RzdCwgeX07XG4gICAgICAgICAgIHtzcmMsIGRzdCwgbmV4dDogU29tZShuZXh0KX07XG4gICAgICAgICB9O1xuICAgICAgICAgcHJldi5uZXh0ID0gU29tZShoKTtcbiAgICAgICB9KTtcblxuICAgIGxldCBzdGFydCA9IExpc3QuaGQodmVydGljYWxfY29udG91cl9lZGdlcyk7XG4gICAgbGV0IHJlYyBidWlsZF9wYXRoID0gKGVkZ2U6IGxpbmtlZF9lZGdlKTogUGF0aC50ID0+IHtcbiAgICAgIHN3aXRjaCAoZWRnZS5uZXh0KSB7XG4gICAgICB8IE5vbmUgPT4gZmFpbHdpdGgoXCJleHBlY3RlZCBzaW5nbGUgY3ljbGVcIilcbiAgICAgIHwgU29tZShuZXh0KSA9PlxuICAgICAgICBsaW5rZWRfZWRnZV9lcShuZXh0LCBzdGFydClcbiAgICAgICAgICA/IFtdIDogW2NtZF9vZl9saW5rZWRfZWRnZShuZXh0KSwgLi4uYnVpbGRfcGF0aChuZXh0KV1cbiAgICAgIH07XG4gICAgfTtcbiAgICBsZXQgcGF0aCA9IFtjbWRfb2ZfbGlua2VkX2VkZ2Uoc3RhcnQpLCAuLi5idWlsZF9wYXRoKHN0YXJ0KV07XG5cbiAgICBwYXRoXG4gICAgfD4gcm91bmRfY29ybmVycyhjb3JuZXJfcmFkaWkpXG4gICAgfD4gTGlzdC5jb25zKFxuICAgICAgICAgUGF0aC5NKHtcbiAgICAgICAgICAgeDogKHN0YXJ0LnNyYy54ICsuIHN0YXJ0LmRzdC54KSAqLiAwLjUsXG4gICAgICAgICAgIHk6IChzdGFydC5zcmMueSArLiBzdGFydC5kc3QueSkgKi4gMC41LFxuICAgICAgICAgfSksXG4gICAgICAgKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgbGFiZWxsZWRfc3VtX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJTdW0gdHlwZXMgZGVzY3JpYmUgYSBmaW5pdGUgc2V0IG9mIGxhYmVsZWQgY2hvaWNlcy4gVmFsdWVzIG9mIHRoaXMgdHlwZSBjb25zaXN0IG9mIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGNvbnN0cnVjdG9ycyBhcHBsaWVkIHRvIGEgcGFyYW1ldGVyIG9mIHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlciB0eXBlLCBpZiBzcGVjaWZpZWQuIENvbnN0cnVjdG9yIG5hbWVzIG11c3QgYmUgdW5pcXVlIHdpdGhpbiBhIHN1bS5cIjtcbiAgbGV0IGRpdmlkZXIgPSBFeGFtcGxlLm1rX21vbm90aWxlKEZvcm0uZ2V0KFwidHlwX3BsdXNcIikpO1xuICB7XG4gICAgaWQ6IExhYmVsbGVkU3VtVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBzcGFjZSgpLFxuICAgICAgdHlwKFwiQ29uc3RydWN0b3IodHkpXCIpLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIGRpdmlkZXIsXG4gICAgICBzcGFjZSgpLFxuICAgICAgdHlwKFwiLi4uXCIpLFxuICAgICAgc3BhY2UoKSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBzdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZiA9IChjOiBzdHJpbmcpOiBmb3JtID0+IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIHNwZWNpZmllcyBvbmUgcG9zc2libGUgd2F5IG9mIGNvbnN0cnVjdGluZyB0aGUgcGFyZW50IHN1bSB0eXBlLCB3aGVuIGFwcGxpZWQgdG8gYSBwYXJhbWV0ZXIgb2YgdGhlIHNwZWNpZmllZCBwYXJhbWV0ZXIgdHlwZS5cIjtcbiAge1xuICAgIGlkOiBTdW1UeXBVbmFyeUNvbnN0cnVjdG9yRGVmLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbYyArKyBcIihUeXBlKVwiIHw+IGFiYnJldmlhdGUgfD4gdHlwXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBzdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGVmID0gKGM6IHN0cmluZyk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgc3BlY2lmaWVzIG9uZSBwb3NzaWJsZSB3YXkgb2YgY29uc3RydWN0aW5nIHRoZSBwYXJlbnQgc3VtIHR5cGUuXCI7XG4gIHtcbiAgICBpZDogU3VtVHlwTnVsbGFyeUNvbnN0cnVjdG9yRGVmLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbYyB8PiBhYmJyZXZpYXRlIHw+IHR5cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbGFiZWxsZWRfc3VtX3R5cHM6IGdyb3VwID0ge1xuICBpZDogTGFiZWxsZWRTdW1UeXAsXG4gIGZvcm1zOiBbbGFiZWxsZWRfc3VtX3R5cF0sXG59O1xuXG5sZXQgc3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWZzID0gKGM6IHN0cmluZyk6IGdyb3VwID0+IHtcbiAgaWQ6IFN1bVR5cFVuYXJ5Q29uc3RydWN0b3JEZWYsXG4gIGZvcm1zOiBbc3VtX3R5cF91bmFyeV9jb25zdHJ1Y3Rvcl9kZWYoYyldLFxufTtcblxubGV0IHN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZWZzID0gKGM6IHN0cmluZyk6IGdyb3VwID0+IHtcbiAgaWQ6IFN1bVR5cE51bGxhcnlDb25zdHJ1Y3RvckRlZixcbiAgZm9ybXM6IFtzdW1fdHlwX251bGxhcnlfY29uc3RydWN0b3JfZGVmKGMpXSxcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBzdmcgPSAoYXR0cnMsIGNoaWxkcmVuKSA9PlxuICBOb2RlLmNyZWF0ZV9zdmcoXCJzdmdcIiwgfmF0dHI9QXR0ci5tYW55KGF0dHJzKSwgY2hpbGRyZW4pO1xuXG5sZXQgc3RvcCA9IGF0dHJzID0+IE5vZGUuY3JlYXRlX3N2ZyhcInN0b3BcIiwgfmF0dHI9QXR0ci5tYW55KGF0dHJzKSwgW10pO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsO1xuXG5sZXQgdGlwX3dpZHRoID0gMC4zMjtcbmxldCBjb25jYXZlX2FkaiA9IDAuMjU7XG5sZXQgY29udmV4X2FkaiA9ICgtMC4xMyk7XG5sZXQgc2hhZG93X2FkaiA9IDAuMDE1O1xuXG5sZXQgY2FyZXRfYWRqdXN0ID0gKHNpZGU6IERpcmVjdGlvbi50LCBzaGFwZTogb3B0aW9uKERpcmVjdGlvbi50KSkgPT5cbiAgc3dpdGNoIChzaWRlLCBzaGFwZSkge1xuICB8IChfLCBOb25lKSA9PiAwLlxuICB8IChMZWZ0LCBTb21lKExlZnQpKSA9PiBjb25jYXZlX2FkalxuICB8IChSaWdodCwgU29tZShSaWdodCkpID0+IC0uIGNvbmNhdmVfYWRqXG4gIHwgKExlZnQsIFNvbWUoUmlnaHQpKSA9PiBjb252ZXhfYWRqXG4gIHwgKFJpZ2h0LCBTb21lKExlZnQpKSA9PiAtLiBjb252ZXhfYWRqXG4gIH07XG5cbmxldCBjaGlsZF9ib3JkZXJfdGhpY2tuZXNzID0gMC4wNTtcblxubGV0IHQgPSBjaGlsZF9ib3JkZXJfdGhpY2tuZXNzIC8uIDAuNTtcbmxldCBzaG9ydF90aXBfaGVpZ2h0ID0gKDEuIC0uIHQpICouIDAuNTtcblxubGV0IHN0cmV0Y2hfZHggPSAwLjE1O1xuXG5sZXQgcmFpc2VkX3NoYWRvd19keCA9IFwiMC4xXCI7XG5sZXQgcmFpc2VkX3NoYWRvd19keSA9IFwiMC4wMzdcIjtcbmxldCBzaGFkb3dfZHggPSByYWlzZWRfc2hhZG93X2R4O1xubGV0IHNoYWRvd19keSA9IHJhaXNlZF9zaGFkb3dfZHk7XG5cbmxldCBleHRyYV90YWlsID0gMC47XG5sZXQgamFnZ2VkX2VkZ2VfaCA9IGNoaWxkX2JvcmRlcl90aGlja25lc3MgLy4gMy47XG5sZXQgamFnZ2VkX2VkZ2VfdyA9IGNoaWxkX2JvcmRlcl90aGlja25lc3MgLy4gMS47XG5cbmxldCBzaG9ydF90aXBfd2lkdGggPSAoMS4gLS4gdCkgKi4gdGlwX3dpZHRoO1xuXG50eXBlIGRpbXMgPSB7XG4gIHdpZHRoOiBpbnQsXG4gIGhlaWdodDogaW50LFxuICBsZWZ0OiBpbnQsXG4gIHRvcDogaW50LFxufTtcblxudHlwZSBmZGltcyA9IHtcbiAgd2lkdGg6IGZsb2F0LFxuICBoZWlnaHQ6IGZsb2F0LFxuICBsZWZ0OiBmbG9hdCxcbiAgdG9wOiBmbG9hdCxcbn07XG5cbmxldCBmemVybzogZmRpbXMgPSB7d2lkdGg6IDAuLCBoZWlnaHQ6IDAuLCBsZWZ0OiAwLiwgdG9wOiAwLn07XG5cbmxldCBwb3Nfc3RyID0gKH5kOiBkaW1zLCB+ZnVkZ2U6IGZkaW1zPWZ6ZXJvLCBmb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQpID0+XG4gIFByaW50Zi5zcHJpbnRmKFxuICAgIFwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7IHdpZHRoOiAlZnB4OyBoZWlnaHQ6ICVmcHg7XCIsXG4gICAgRmxvYXQub2ZfaW50KGQubGVmdCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBmdWRnZS5sZWZ0LFxuICAgIEZsb2F0Lm9mX2ludChkLnRvcCkgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQgKy4gZnVkZ2UudG9wLFxuICAgIEZsb2F0Lm9mX2ludChkLndpZHRoKSAqLiAoZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBmdWRnZS53aWR0aCksXG4gICAgRmxvYXQub2ZfaW50KGQuaGVpZ2h0KSAqLiAoZm9udF9tZXRyaWNzLnJvd19oZWlnaHQgKy4gZnVkZ2UuaGVpZ2h0KSxcbiAgKTtcblxubGV0IGNvZGVfc3ZnX3NpemVkID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfm1lYXN1cmVtZW50IGFzIHtvcmlnaW4sIGxhc3R9OiBIYXozbGNvcmUuTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgICB+YmFzZV9jbHM9W10sXG4gICAgICB+cGF0aF9jbHM9W10sXG4gICAgICB+YXR0cj1bXSxcbiAgICAgIH5mdWRnZTogZmRpbXM9Znplcm8sXG4gICAgICBwYXRoczogbGlzdChTdmdVdGlsLlBhdGguY21kKSxcbiAgICApID0+IHtcbiAgbGV0IChsZWZ0LCB0b3ApID0gKG9yaWdpbi5jb2wsIG9yaWdpbi5yb3cpO1xuICBsZXQgKHdpZHRoLCBoZWlnaHQpID0gKFxuICAgIGFicyhsYXN0LmNvbCAtIG9yaWdpbi5jb2wpLFxuICAgIGFicyhsYXN0LnJvdyAtIG9yaWdpbi5yb3cgKyAxKSxcbiAgKTtcbiAgbGV0IHN0eWxlID0gcG9zX3N0cih+ZD17bGVmdCwgdG9wLCB3aWR0aCwgaGVpZ2h0fSwgfmZ1ZGdlLCBmb250X21ldHJpY3MpO1xuICBjcmVhdGVfc3ZnKFxuICAgIFwic3ZnXCIsXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoXG4gICAgICAgIFtcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoYmFzZV9jbHMpLFxuICAgICAgICAgIEF0dHIuY3JlYXRlKFwic3R5bGVcIiwgc3R5bGUpLFxuICAgICAgICAgIEF0dHIuY3JlYXRlKFwidmlld0JveFwiLCBQcmludGYuc3ByaW50ZihcIjAgMCAlZCAlZFwiLCB3aWR0aCwgaGVpZ2h0KSksXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwibm9uZVwiKSxcbiAgICAgICAgXVxuICAgICAgICBAIGF0dHIsXG4gICAgICApLFxuICAgIFtTdmdVdGlsLlBhdGgudmlldyh+YXR0cnM9W0F0dHIuY2xhc3NlcyhwYXRoX2NscyldLCBwYXRocyldLFxuICApO1xufTtcblxubGV0IHBvc2l0aW9uID1cbiAgICAoXG4gICAgICB+c3R5bGU9XCJcIixcbiAgICAgIH5sZWZ0X2Z1ZGdlPTAuMCxcbiAgICAgIH50b3BfZnVkZ2U9MC4wLFxuICAgICAgfndpZHRoX2Z1ZGdlPTAuMCxcbiAgICAgIH5oZWlnaHRfZnVkZ2U9MC4wLFxuICAgICAgfnNjYWxlPTEuLFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIG9yaWdpbjogSGF6M2xjb3JlLk1lYXN1cmVkLlBvaW50LnQsXG4gICAgKSA9PlxuICBBdHRyLmNyZWF0ZShcbiAgICBcInN0eWxlXCIsXG4gICAgc3R5bGVcbiAgICArKyBcIjtcIlxuICAgICsrIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgXCJsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7IHdpZHRoOiAlZnB4OyBoZWlnaHQ6ICVmcHg7XCIsXG4gICAgICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLmNvbCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBsZWZ0X2Z1ZGdlLFxuICAgICAgICAgRmxvYXQub2ZfaW50KG9yaWdpbi5yb3cpICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0ICsuIHRvcF9mdWRnZSxcbiAgICAgICAgIHNjYWxlICouIChmb250X21ldHJpY3MuY29sX3dpZHRoICsuIHdpZHRoX2Z1ZGdlKSxcbiAgICAgICAgIHNjYWxlICouIChmb250X21ldHJpY3Mucm93X2hlaWdodCArLiBoZWlnaHRfZnVkZ2UpLFxuICAgICAgICksXG4gICk7XG5cbmxldCBhYnNfcG9zaXRpb24gPVxuICAgIChcbiAgICAgIH5sZWZ0X2Z1ZGdlPTAuMCxcbiAgICAgIH50b3BfZnVkZ2U9MC4wLFxuICAgICAgfndpZHRoX2Z1ZGdlPTAuMCxcbiAgICAgIH5oZWlnaHRfZnVkZ2U9MC4wLFxuICAgICAgfnNjYWxlPTEuLFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIG9yaWdpbjogSGF6M2xjb3JlLk1lYXN1cmVkLlBvaW50LnQsXG4gICAgKSA9PiB7XG4gIHBvc2l0aW9uKFxuICAgIH5zdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZVwiLFxuICAgIH5sZWZ0X2Z1ZGdlLFxuICAgIH50b3BfZnVkZ2UsXG4gICAgfndpZHRoX2Z1ZGdlLFxuICAgIH5oZWlnaHRfZnVkZ2UsXG4gICAgfnNjYWxlLFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgb3JpZ2luLFxuICApO1xufTtcblxubGV0IGNvZGVfc3ZnID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfm9yaWdpbjogSGF6M2xjb3JlLk1lYXN1cmVkLlBvaW50LnQsXG4gICAgICB+YmFzZV9jbHM9W10sXG4gICAgICB+cGF0aF9jbHM9W10sXG4gICAgICB+bGVmdF9mdWRnZT0wLjAsXG4gICAgICB+dG9wX2Z1ZGdlPTAuMCxcbiAgICAgIH53aWR0aF9mdWRnZT0wLjAsXG4gICAgICB+aGVpZ2h0X2Z1ZGdlPTAuMCxcbiAgICAgIH5pZD1cIlwiLFxuICAgICAgfmF0dHJzPVtdLFxuICAgICAgfmFic19wb3M9dHJ1ZSxcbiAgICAgIHBhdGhzOiBsaXN0KFN2Z1V0aWwuUGF0aC5jbWQpLFxuICAgICkgPT4ge1xuICAvLyBVc2luZyBhIHZpZXdCb3ggb2YgMCAwIDEgMSBzZWVtcyB0byB0cmlnZ2VyIENocm9tZSByb3VuZGluZyBidWdcbiAgLy8gKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQyNDI4OCkgdGhhdFxuICAvLyBjYXVzZXMgbWlhc2xpZ25tZW50IGJldHdlZW4gcGllY2UgZGVjb3JhdGlvbnMgYW5kIHRleHQuXG4gIC8vIFVzaW5nIGEgZGlmZmVyZW50IHZpZXdCb3ggc2l6ZSBzZWVtcyB0byBmaXggdGhpcy5cbiAgbGV0IHNjYWxlID0gMi47XG4gIGNyZWF0ZV9zdmcoXG4gICAgXCJzdmdcIixcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIubWFueShcbiAgICAgICAgKGlkID09IFwiXCIgPyBbXSA6IFtBdHRyLmlkKGlkKV0pXG4gICAgICAgIEAgW1xuICAgICAgICAgIEF0dHIuY2xhc3NlcyhiYXNlX2NscyksXG4gICAgICAgICAgYWJzX3Bvc1xuICAgICAgICAgICAgPyBhYnNfcG9zaXRpb24oXG4gICAgICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgICAgICB+bGVmdF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+dG9wX2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH53aWR0aF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+aGVpZ2h0X2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH5zY2FsZSxcbiAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogcG9zaXRpb24oXG4gICAgICAgICAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgICAgICB+bGVmdF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+dG9wX2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH53aWR0aF9mdWRnZSxcbiAgICAgICAgICAgICAgICB+aGVpZ2h0X2Z1ZGdlLFxuICAgICAgICAgICAgICAgIH5zY2FsZSxcbiAgICAgICAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJ2aWV3Qm94XCIsIFByaW50Zi5zcHJpbnRmKFwiMCAwICVmICVmXCIsIHNjYWxlLCBzY2FsZSkpLFxuICAgICAgICAgIEF0dHIuY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICAgIF1cbiAgICAgICAgQCBhdHRycyxcbiAgICAgICksXG4gICAgW1N2Z1V0aWwuUGF0aC52aWV3KH5hdHRycz1bQXR0ci5jbGFzc2VzKHBhdGhfY2xzKV0sIHBhdGhzKV0sXG4gICk7XG59O1xuXG5sZXQgcmFpc2VkX3NoYWRvd19maWx0ZXIgPSAoc29ydDogSGF6M2xjb3JlLlNvcnQudCkgPT4ge1xuICBsZXQgcyA9IEhhejNsY29yZS5Tb3J0LnRvX3N0cmluZyhzb3J0KTtcbiAgY3JlYXRlX3N2ZyhcbiAgICBcImZpbHRlclwiLFxuICAgIH5hdHRyPUF0dHIuaWQoXCJyYWlzZWQtZHJvcC1zaGFkb3ctXCIgKysgcyksXG4gICAgW1xuICAgICAgY3JlYXRlX3N2ZyhcbiAgICAgICAgXCJmZURyb3BTaGFkb3dcIixcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJ0aWxlLWRyb3Atc2hhZG93XCJdKSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwiZHhcIiwgcmFpc2VkX3NoYWRvd19keCksXG4gICAgICAgICAgICBBdHRyLmNyZWF0ZShcImR5XCIsIHJhaXNlZF9zaGFkb3dfZHkpLFxuICAgICAgICAgICAgQXR0ci5jcmVhdGUoXCJzdGREZXZpYXRpb25cIiwgXCIwXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBbXSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCBzaGFkb3dfZmlsdGVyID0gKHNvcnQ6IEhhejNsY29yZS5Tb3J0LnQpID0+IHtcbiAgbGV0IHMgPSBIYXozbGNvcmUuU29ydC50b19zdHJpbmcoc29ydCk7XG4gIGNyZWF0ZV9zdmcoXG4gICAgXCJmaWx0ZXJcIixcbiAgICB+YXR0cj1BdHRyLmlkKFwiZHJvcC1zaGFkb3ctXCIgKysgcyksXG4gICAgW1xuICAgICAgY3JlYXRlX3N2ZyhcbiAgICAgICAgXCJmZURyb3BTaGFkb3dcIixcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJ0aWxlLWRyb3Atc2hhZG93XCJdKSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwiZHhcIiwgc2hhZG93X2R4KSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwiZHlcIiwgc2hhZG93X2R5KSxcbiAgICAgICAgICAgIEF0dHIuY3JlYXRlKFwic3RkRGV2aWF0aW9uXCIsIFwiMFwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgW10sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgZmlsdGVycyA9XG4gIE5vZGVVdGlsLnN2ZyhcbiAgICBBdHRyLltpZChcImZpbHRlcnNcIildLFxuICAgIExpc3QubWFwKHJhaXNlZF9zaGFkb3dfZmlsdGVyLCBIYXozbGNvcmUuU29ydC5hbGwpXG4gICAgQCBMaXN0Lm1hcChzaGFkb3dfZmlsdGVyLCBIYXozbGNvcmUuU29ydC5hbGwpLFxuICApO1xuIiwib3BlbiBEZWNVdGlsO1xub3BlbiBTdmdVdGlsLlBhdGg7XG5vcGVuIFNleHBsaWIuU3RkO1xuXG4vL1RPRE8oPyk6IGRlcHJlY2F0ZSB0aGlzIG1vZHVsZVxuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIHRpcF9zaGFwZSA9IChIYXozbGNvcmUuTmliLnQsIGludCk7XG5cbi8vIHRvcCByaWdodCB0byBib3R0b20gbGVmdFxubGV0IHRyX2JsID1cbiAgICAoXG4gICAgICB+c2NhbGUgYXMgcz0xLixcbiAgICAgIH5oZW1pOiBbIHwgYE5vcnRoIHwgYFNvdXRoXSxcbiAgICAgIH53aXRoX2NoaWxkX2JvcmRlcj1mYWxzZSxcbiAgICAgIH5zdHJldGNoX3g9MC4sXG4gICAgICB+c3RyZXRjaF95PTAuLFxuICAgICAgKCksXG4gICAgKSA9PlxuICBTdmdVdGlsLlBhdGguKFxuICAgIHtcbiAgICAgIGxldCAoZGlhZywganVuY3Rpb24pID1cbiAgICAgICAgd2l0aF9jaGlsZF9ib3JkZXJcbiAgICAgICAgICA/IChcbiAgICAgICAgICAgIExfKHtkeDogRmxvYXQubmVnKHNob3J0X3RpcF93aWR0aCksIGR5OiBzaG9ydF90aXBfaGVpZ2h0fSksXG4gICAgICAgICAgICBIXyh7ZHg6IEZsb2F0Lm5lZygwLjUgLS4gc2hvcnRfdGlwX3dpZHRoKX0pLFxuICAgICAgICAgIClcbiAgICAgICAgICA6IChcbiAgICAgICAgICAgIExfKHtkeDogRmxvYXQubmVnKHRpcF93aWR0aCksIGR5OiAwLjUgKy4gc3RyZXRjaF95fSksXG4gICAgICAgICAgICBIXyh7ZHg6IEZsb2F0Lm5lZyhzdHJldGNoX3gpfSksXG4gICAgICAgICAgKTtcbiAgICAgIGxldCBwYXRoID1cbiAgICAgICAgc3dpdGNoIChoZW1pKSB7XG4gICAgICAgIHwgYE5vcnRoID0+IFtqdW5jdGlvbiwgZGlhZ11cbiAgICAgICAgfCBgU291dGggPT4gW2RpYWcsIGp1bmN0aW9uXVxuICAgICAgICB9O1xuICAgICAgc2NhbGUocywgcGF0aCk7XG4gICAgfVxuICApO1xuLy8gYm90dG9tIGxlZnQgdG8gdG9wIHJpZ2h0XG5sZXQgYmxfdHIgPVxuICAgIChcbiAgICAgIH5oZW1pOiBbIHwgYE5vcnRoIHwgYFNvdXRoXSxcbiAgICAgIH53aXRoX2NoaWxkX2JvcmRlcj1mYWxzZSxcbiAgICAgIH5zdHJldGNoX3g9MC4sXG4gICAgICB+c3RyZXRjaF95PTAuLFxuICAgICAgKCksXG4gICAgKSA9PlxuICBTdmdVdGlsLlBhdGgucmV2ZXJzZShcbiAgICB0cl9ibCh+aGVtaSwgfndpdGhfY2hpbGRfYm9yZGVyLCB+c3RyZXRjaF94LCB+c3RyZXRjaF95LCAoKSksXG4gICk7XG5cbi8vIHRvcCBsZWZ0IHRvIGJvdHRvbSByaWdodFxubGV0IHRsX2JyID1cbiAgICAoXG4gICAgICB+aGVtaTogWyB8IGBOb3J0aCB8IGBTb3V0aF0sXG4gICAgICB+d2l0aF9jaGlsZF9ib3JkZXI9ZmFsc2UsXG4gICAgICB+c3RyZXRjaF94PTAuLFxuICAgICAgfnN0cmV0Y2hfeT0wLixcbiAgICAgICgpLFxuICAgICkgPT5cbiAgU3ZnVXRpbC5QYXRoLihcbiAgICB7XG4gICAgICBsZXQgKGRpYWcsIGp1bmN0aW9uKSA9XG4gICAgICAgIHdpdGhfY2hpbGRfYm9yZGVyXG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICBMXyh7ZHg6IHNob3J0X3RpcF93aWR0aCwgZHk6IHNob3J0X3RpcF9oZWlnaHR9KSxcbiAgICAgICAgICAgIEhfKHtkeDogMC41IC0uIHNob3J0X3RpcF93aWR0aH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICA6IChMXyh7ZHg6IHRpcF93aWR0aCwgZHk6IDAuNSArLiBzdHJldGNoX3l9KSwgSF8oe2R4OiBzdHJldGNoX3h9KSk7XG4gICAgICBzd2l0Y2ggKGhlbWkpIHtcbiAgICAgIHwgYE5vcnRoID0+IFtqdW5jdGlvbiwgZGlhZ11cbiAgICAgIHwgYFNvdXRoID0+IFtkaWFnLCBqdW5jdGlvbl1cbiAgICAgIH07XG4gICAgfVxuICApO1xuLy8gYm90dG9tIHJpZ2h0IHRvIHRvcCBsZWZ0XG5sZXQgYnJfdGwgPVxuICAgIChcbiAgICAgIH5oZW1pOiBbIHwgYE5vcnRoIHwgYFNvdXRoXSxcbiAgICAgIH53aXRoX2NoaWxkX2JvcmRlcj1mYWxzZSxcbiAgICAgIH5zdHJldGNoX3g9MC4sXG4gICAgICB+c3RyZXRjaF95PTAuLFxuICAgICAgKCksXG4gICAgKSA9PlxuICBTdmdVdGlsLlBhdGgucmV2ZXJzZShcbiAgICB0bF9icih+aGVtaSwgfndpdGhfY2hpbGRfYm9yZGVyLCB+c3RyZXRjaF94LCB+c3RyZXRjaF95LCAoKSksXG4gICk7XG5cbmxldCBsZWZ0X3RpcF9wYXRoID1cbiAgICAofnNjYWxlX3ggYXMgc194PTEuLCB+c2NhbGVfeSBhcyBzX3k9MS4sIHRpcDogdGlwX3NoYXBlKTogU3ZnVXRpbC5QYXRoLnQgPT4ge1xuICBsZXQgcGF0aCA9XG4gICAgc3dpdGNoICh0aXApIHtcbiAgICB8ICh7c2hhcGU6IENvbnZleCwgX30sIF8pID0+XG4gICAgICBicl90bCh+aGVtaT1gU291dGgsICgpKSBAIGJsX3RyKH5oZW1pPWBOb3J0aCwgKCkpXG4gICAgfCAoe3NoYXBlOiBDb25jYXZlKF9hKSwgX30sIG4pID0+XG4gICAgICBsZXQgamFnID0gW1xuICAgICAgICBMXyh7ZHg6IC0uIGphZ2dlZF9lZGdlX3csIGR5OiAtLiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICAgIExfKHtkeDogamFnZ2VkX2VkZ2VfdywgZHk6IC0uIGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgICAgTF8oe2R4OiAtLiBqYWdnZWRfZWRnZV93LCBkeTogLS4gamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgXTtcbiAgICAgIGxldCBib3R0b21faGFsZiA9XG4gICAgICAgIG4gPT0gMFxuICAgICAgICAgID8gW0hfKHtkeDogRmxvYXQubmVnKHRpcF93aWR0aCl9KSwgLi4uYmxfdHIofmhlbWk9YFNvdXRoLCAoKSldXG4gICAgICAgICAgOiBMaXN0LmNvbmNhdChbXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IC0uIChleHRyYV90YWlsICsuIDAuNSl9KV0sXG4gICAgICAgICAgICAgIGphZyxcbiAgICAgICAgICAgICAgW0hfKHtkeDogamFnZ2VkX2VkZ2VfdyArLiBleHRyYV90YWlsfSldLFxuICAgICAgICAgICAgICBibF90cih+aGVtaT1gU291dGgsIH53aXRoX2NoaWxkX2JvcmRlcj10cnVlLCAoKSksXG4gICAgICAgICAgICBdKTtcbiAgICAgIGxldCB0b3BfaGFsZiA9XG4gICAgICAgIG4gPT0gMCB8fCBuID09IDFcbiAgICAgICAgICA/IGJyX3RsKH5oZW1pPWBOb3J0aCwgKCkpIEAgW0hfKHtkeDogdGlwX3dpZHRofSldXG4gICAgICAgICAgOiBMaXN0LmNvbmNhdChbXG4gICAgICAgICAgICAgIGJyX3RsKH5oZW1pPWBOb3J0aCwgfndpdGhfY2hpbGRfYm9yZGVyPXRydWUsICgpKSxcbiAgICAgICAgICAgICAgW0hfKHtkeDogLS4gKGphZ2dlZF9lZGdlX3cgKy4gZXh0cmFfdGFpbCl9KV0sXG4gICAgICAgICAgICAgIGphZyxcbiAgICAgICAgICAgICAgW0hfKHtkeDogZXh0cmFfdGFpbCArLiAwLjV9KV0sXG4gICAgICAgICAgICBdKTtcbiAgICAgIGJvdHRvbV9oYWxmIEAgdG9wX2hhbGY7XG4gICAgfTtcbiAgc2NhbGVfeChzX3gsIHNjYWxlX3koc195LCBwYXRoKSk7XG59O1xubGV0IHJpZ2h0X3RpcF9wYXRoID1cbiAgICAofnNjYWxlX3ggYXMgc194PTEuLCB+c2NhbGVfeSBhcyBzX3k9MS4sIHRpcDogdGlwX3NoYXBlKTogU3ZnVXRpbC5QYXRoLnQgPT4ge1xuICBsZXQgcGF0aCA9XG4gICAgc3dpdGNoICh0aXApIHtcbiAgICB8ICh7c2hhcGU6IENvbnZleCwgX30sIF8pID0+XG4gICAgICB0bF9icih+aGVtaT1gTm9ydGgsICgpKSBAIHRyX2JsKH5oZW1pPWBTb3V0aCwgKCkpXG4gICAgfCAoe3NoYXBlOiBDb25jYXZlKF9hKSwgX30sIG4pID0+XG4gICAgICBvcGVuIFN2Z1V0aWwuUGF0aDtcbiAgICAgIGxldCBqYWcgPSBbXG4gICAgICAgIExfKHtkeDogamFnZ2VkX2VkZ2VfdywgZHk6IGphZ2dlZF9lZGdlX2h9KSxcbiAgICAgICAgTF8oe2R4OiAtLiBqYWdnZWRfZWRnZV93LCBkeTogamFnZ2VkX2VkZ2VfaH0pLFxuICAgICAgICBMXyh7ZHg6IGphZ2dlZF9lZGdlX3csIGR5OiBqYWdnZWRfZWRnZV9ofSksXG4gICAgICBdO1xuICAgICAgbGV0IHRvcF9oYWxmID1cbiAgICAgICAgbiA9PSAwIHx8IG4gPT0gMVxuICAgICAgICAgID8gW0hfKHtkeDogdGlwX3dpZHRofSksIC4uLnRyX2JsKH5oZW1pPWBOb3J0aCwgKCkpXVxuICAgICAgICAgIDogTGlzdC5jb25jYXQoW1xuICAgICAgICAgICAgICBbSF8oe2R4OiAwLjUgKy4gZXh0cmFfdGFpbH0pXSxcbiAgICAgICAgICAgICAgamFnLFxuICAgICAgICAgICAgICBbSF8oe2R4OiAtLiAoZXh0cmFfdGFpbCArLiBqYWdnZWRfZWRnZV93KX0pXSxcbiAgICAgICAgICAgICAgdHJfYmwofmhlbWk9YE5vcnRoLCB+d2l0aF9jaGlsZF9ib3JkZXI9dHJ1ZSwgKCkpLFxuICAgICAgICAgICAgXSk7XG4gICAgICBsZXQgYm90dG9tX2hhbGYgPVxuICAgICAgICBuID09IDBcbiAgICAgICAgICA/IHRsX2JyKH5oZW1pPWBTb3V0aCwgKCkpIEAgW0hfKHtkeDogRmxvYXQubmVnKHRpcF93aWR0aCl9KV1cbiAgICAgICAgICA6IExpc3QuY29uY2F0KFtcbiAgICAgICAgICAgICAgdGxfYnIofndpdGhfY2hpbGRfYm9yZGVyPXRydWUsIH5oZW1pPWBTb3V0aCwgKCkpLFxuICAgICAgICAgICAgICBbSF8oe2R4OiBleHRyYV90YWlsfSldLFxuICAgICAgICAgICAgICBqYWcsXG4gICAgICAgICAgICAgIFtIXyh7ZHg6IEZsb2F0Lm5lZyhqYWdnZWRfZWRnZV93ICsuIGV4dHJhX3RhaWwgKy4gMC41KX0pXSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgdG9wX2hhbGYgQCBib3R0b21faGFsZjtcbiAgICB9O1xuICBzY2FsZV94KHNfeCwgc2NhbGVfeShzX3ksIHBhdGgpKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIEhhejNsY29yZTtcblxubW9kdWxlIFByb2ZpbGUgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBtZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgbW9sZDogTW9sZC50LFxuICB9O1xufTtcblxubGV0IHBhdGggPSAodGlwX2wsIHRpcF9yLCBvZmZzZXQsIHM6IGZsb2F0KSA9PiB7XG4gIGxldCB4X2RpbGF0ZSA9IDEuNTtcbiAgTGlzdC5jb25jYXQoXG4gICAgU3ZnVXRpbC5QYXRoLltcbiAgICAgIFtcbiAgICAgICAgTSh7eDogb2Zmc2V0ICsuIDAuNSwgeTogMC41IC0uIHMgLy4gMi59KSxcbiAgICAgICAgSF8oe2R4OiB4X2RpbGF0ZSAqLiBzIC8uIDIufSksXG4gICAgICBdLFxuICAgICAgRGlhZy5yaWdodF90aXBfcGF0aCh+c2NhbGVfeD1zICouIHhfZGlsYXRlLCB+c2NhbGVfeT1zLCAodGlwX3IsIDApKSxcbiAgICAgIFtIXyh7ZHg6IC0uIHMgKi4geF9kaWxhdGV9KV0sXG4gICAgICBEaWFnLmxlZnRfdGlwX3BhdGgofnNjYWxlX3g9cyAqLiB4X2RpbGF0ZSwgfnNjYWxlX3k9cywgKHRpcF9sLCAwKSksXG4gICAgICBbWl0sXG4gICAgXSxcbiAgKTtcbn07XG5cbmxldCB2aWV3ID0gKH5mb250X21ldHJpY3MsIHttZWFzdXJlbWVudCwgbW9sZH06IFByb2ZpbGUudCk6IE5vZGUudCA9PiB7XG4gIGxldCBzb3J0ID0gbW9sZC5vdXQ7XG4gIGxldCBjX2NscyA9IFNvcnQudG9fc3RyaW5nKHNvcnQpO1xuICBsZXQgKHRpcF9sLCB0aXBfcik6IChIYXozbGNvcmUuTmliLlNoYXBlLnQsIEhhejNsY29yZS5OaWIuU2hhcGUudCkgPVxuICAgIFV0aWwuVHVwbGVVdGlsLm1hcDIoSGF6M2xjb3JlLk5pYi5zaGFwZSwgbW9sZC5uaWJzKTtcbiAgbGV0ICh0aXBfbCwgdGlwX3IpOiAoSGF6M2xjb3JlLk5pYi50LCBIYXozbGNvcmUuTmliLnQpID0gKFxuICAgIHtzb3J0LCBzaGFwZTogdGlwX2x9LFxuICAgIHtzb3J0LCBzaGFwZTogdGlwX3J9LFxuICApO1xuICBEZWNVdGlsLmNvZGVfc3ZnX3NpemVkKFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgfm1lYXN1cmVtZW50LFxuICAgIH5iYXNlX2Nscz1bXCJlbXB0eS1ob2xlXCJdLFxuICAgIH5wYXRoX2Nscz1bXCJlbXB0eS1ob2xlLXBhdGhcIiwgY19jbHNdLFxuICAgIHBhdGgodGlwX2wsIHRpcF9yLCAwLiwgMC4yOCksXG4gICk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFV0aWw7XG5vcGVuIFV0aWwuV2ViO1xuXG5sZXQgb2ZfZGVsaW0nID1cbiAgQ29yZS5NZW1vLmdlbmVyYWwoXG4gICAgfmNhY2hlX3NpemVfYm91bmQ9MTAwMDAsXG4gICAgKChsYWJlbCwgaXNfaW5fYnVmZmVyLCBzb3J0LCBpc19jb25zaXN0ZW50LCBpc19jb21wbGV0ZSwgaSkpID0+IHtcbiAgICAgIGxldCBjbHMgPVxuICAgICAgICBzd2l0Y2ggKGxhYmVsKSB7XG4gICAgICAgIHwgXyB3aGVuIGlzX2luX2J1ZmZlciA9PiBcImluLWJ1ZmZlclwiXG4gICAgICAgIHwgXyB3aGVuICFpc19jb25zaXN0ZW50ID0+IFwic29ydC1pbmNvbnNpc3RlbnRcIlxuICAgICAgICB8IF8gd2hlbiAhaXNfY29tcGxldGUgPT4gXCJpbmNvbXBsZXRlXCJcbiAgICAgICAgfCBbc10gd2hlbiBzID09IEZvcm0uZXhwbGljaXRfaG9sZSA9PiBcImV4cGxpY2l0LWhvbGVcIlxuICAgICAgICB8IFtzXSB3aGVuIEZvcm0uaXNfc3RyaW5nKHMpID0+IFwic3RyaW5nLWxpdFwiXG4gICAgICAgIHwgXyA9PiBcImRlZmF1bHRcIlxuICAgICAgICB9O1xuICAgICAgbGV0IHBsdXJhbGl0eSA9IExpc3QubGVuZ3RoKGxhYmVsKSA9PSAxID8gXCJtb25vXCIgOiBcInBvbHlcIjtcbiAgICAgIGxldCBsYWJlbCA9IGlzX2luX2J1ZmZlciA/IEFzc2lzdGFudEV4cGFuZGVyLm1hcmsobGFiZWwpIDogbGFiZWw7XG4gICAgICBbXG4gICAgICAgIHNwYW4oXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLmNsYXNzZXMoW1widG9rZW5cIiwgY2xzLCBTb3J0LnRvX3N0cmluZyhzb3J0KSwgcGx1cmFsaXR5XSksXG4gICAgICAgICAgW05vZGUudGV4dChMaXN0Lm50aChsYWJlbCwgaSkpXSxcbiAgICAgICAgKSxcbiAgICAgIF07XG4gICAgfSxcbiAgKTtcbmxldCBvZl9kZWxpbSA9XG4gICAgKGlzX2luX2J1ZmZlciwgaXNfY29uc2lzdGVudCwgdDogUGllY2UudGlsZSwgaTogaW50KTogbGlzdChOb2RlLnQpID0+XG4gIG9mX2RlbGltJygoXG4gICAgdC5sYWJlbCxcbiAgICBpc19pbl9idWZmZXIsXG4gICAgdC5tb2xkLm91dCxcbiAgICBpc19jb25zaXN0ZW50LFxuICAgIFRpbGUuaXNfY29tcGxldGUodCksXG4gICAgaSxcbiAgKSk7XG5cbmxldCBvZl9ncm91dCA9IFtOb2RlLnRleHQoVW5pY29kZS5uYnNwKV07XG5cbmxldCBvZl9zZWNvbmRhcnkgPVxuICBDb3JlLk1lbW8uZ2VuZXJhbChcbiAgICB+Y2FjaGVfc2l6ZV9ib3VuZD0xMDAwMCwgKChjb250ZW50LCBzZWNvbmRhcnlfaWNvbnMsIGluZGVudCkpID0+XG4gICAgaWYgKFN0cmluZy5lcXVhbChTZWNvbmRhcnkuZ2V0X3N0cmluZyhjb250ZW50KSwgRm9ybS5saW5lYnJlYWspKSB7XG4gICAgICBsZXQgc3RyID0gc2Vjb25kYXJ5X2ljb25zID8gRm9ybS5saW5lYnJlYWsgOiBcIlwiO1xuICAgICAgW1xuICAgICAgICBzcGFuX2MoXCJsaW5lYnJlYWtcIiwgW3RleHQoc3RyKV0pLFxuICAgICAgICBOb2RlLmJyKCksXG4gICAgICAgIE5vZGUudGV4dChTdHJpbmdVdGlsLnJlcGVhdChpbmRlbnQsIFVuaWNvZGUubmJzcCkpLFxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKFN0cmluZy5lcXVhbChTZWNvbmRhcnkuZ2V0X3N0cmluZyhjb250ZW50KSwgRm9ybS5zcGFjZSkpIHtcbiAgICAgIGxldCBzdHIgPSBzZWNvbmRhcnlfaWNvbnMgPyBcIsK3XCIgOiBVbmljb2RlLm5ic3A7XG4gICAgICBbc3Bhbl9jKFwic2Vjb25kYXJ5XCIsIFt0ZXh0KHN0cildKV07XG4gICAgfSBlbHNlIGlmIChTZWNvbmRhcnkuY29udGVudF9pc19jb21tZW50KGNvbnRlbnQpKSB7XG4gICAgICBbc3Bhbl9jKFwiY29tbWVudFwiLCBbTm9kZS50ZXh0KFNlY29uZGFyeS5nZXRfc3RyaW5nKGNvbnRlbnQpKV0pXTtcbiAgICB9IGVsc2Uge1xuICAgICAgW3NwYW5fYyhcInNlY29uZGFyeVwiLCBbTm9kZS50ZXh0KFNlY29uZGFyeS5nZXRfc3RyaW5nKGNvbnRlbnQpKV0pXTtcbiAgICB9XG4gICk7XG5cbm1vZHVsZSBUZXh0ID0gKE06IHtcbiAgICAgICAgICAgICAgICAgbGV0IG1hcDogTWVhc3VyZWQudDtcbiAgICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzOiBTZXR0aW5ncy50O1xuICAgICAgICAgICAgICAgfSkgPT4ge1xuICBsZXQgbSA9IHAgPT4gTWVhc3VyZWQuZmluZF9wKHAsIE0ubWFwKTtcbiAgbGV0IHJlYyBvZl9zZWdtZW50ID1cbiAgICAgICAgICAoYnVmZmVyX2lkcywgbm9fc29ydHMsIHNvcnQsIHNlZzogU2VnbWVudC50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICAvKiBub3RlOiBub19zb3J0cyBmbGFnIGlzIHVzZWQgZm9yIGJhY2twYWNrIHZpZXc7XG4gICAgICAgb3RoZXJ3aXNlIFNlZ21lbnQuZXhwZWN0ZWRfc29ydHMgY2FsbCBjcmFzaGVzIGZvciBzb21lIHJlYXNvbiAqL1xuICAgIGxldCBleHBlY3RlZF9zb3J0cyA9XG4gICAgICBub19zb3J0c1xuICAgICAgICA/IExpc3QuaW5pdChMaXN0Lmxlbmd0aChzZWcpLCBpID0+IChpLCBTb3J0LkFueSkpXG4gICAgICAgIDogU2VnbWVudC5leHBlY3RlZF9zb3J0cyhzb3J0LCBzZWcpO1xuICAgIGxldCBzb3J0X29mX3BfaWR4ID0gaWR4ID0+XG4gICAgICBzd2l0Y2ggKExpc3QuYXNzb2Nfb3B0KGlkeCwgZXhwZWN0ZWRfc29ydHMpKSB7XG4gICAgICB8IE5vbmUgPT4gU29ydC5BbnlcbiAgICAgIHwgU29tZShzb3J0KSA9PiBzb3J0XG4gICAgICB9O1xuICAgIHNlZ1xuICAgIHw+IExpc3QubWFwaSgoaSwgcCkgPT4gKGksIHApKVxuICAgIHw+IExpc3QuY29uY2F0X21hcCgoKGksIHApKSA9PlxuICAgICAgICAgb2ZfcGllY2UoYnVmZmVyX2lkcywgc29ydF9vZl9wX2lkeChpKSwgcClcbiAgICAgICApO1xuICB9XG4gIGFuZCBvZl9waWVjZSA9XG4gICAgICAoYnVmZmVyX2lkcywgZXhwZWN0ZWRfc29ydDogU29ydC50LCBwOiBQaWVjZS50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICBzd2l0Y2ggKHApIHtcbiAgICB8IFRpbGUodCkgPT4gb2ZfdGlsZShidWZmZXJfaWRzLCBleHBlY3RlZF9zb3J0LCB0KVxuICAgIHwgR3JvdXQoXykgPT4gb2ZfZ3JvdXRcbiAgICB8IFNlY29uZGFyeSh7Y29udGVudCwgX30pID0+XG4gICAgICBvZl9zZWNvbmRhcnkoKGNvbnRlbnQsIE0uc2V0dGluZ3Muc2Vjb25kYXJ5X2ljb25zLCBtKHApLmxhc3QuY29sKSlcbiAgICB9O1xuICB9XG4gIGFuZCBvZl90aWxlID0gKGJ1ZmZlcl9pZHMsIGV4cGVjdGVkX3NvcnQ6IFNvcnQudCwgdDogVGlsZS50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICBsZXQgY2hpbGRyZW5fYW5kX3NvcnRzID1cbiAgICAgIExpc3QubWFwaShcbiAgICAgICAgKGksIChsLCBjaGlsZCwgcikpID0+XG4gICAgICAgICAgLy9UT0RPKGFuZHJldyk6IG1vcmUgc3VidGxlIGxvZ2ljIGFib3V0IHNvcnQgYWNjZXB0YWJpbGl0eVxuICAgICAgICAgIChjaGlsZCwgbCArIDEgPT0gciA/IExpc3QubnRoKHQubW9sZC5pbl8sIGkpIDogU29ydC5BbnkpLFxuICAgICAgICBBYmEuYWJhX3RyaXBsZXMoQWJhLm1rKHQuc2hhcmRzLCB0LmNoaWxkcmVuKSksXG4gICAgICApO1xuICAgIGxldCBpc19jb25zaXN0ZW50ID0gU29ydC5jb25zaXN0ZW50KHQubW9sZC5vdXQsIGV4cGVjdGVkX3NvcnQpO1xuICAgIGxldCBpc19pbl9idWZmZXIgPSBMaXN0Lm1lbSh0LmlkLCBidWZmZXJfaWRzKTtcbiAgICBBYmEubWsodC5zaGFyZHMsIGNoaWxkcmVuX2FuZF9zb3J0cylcbiAgICB8PiBBYmEuam9pbihvZl9kZWxpbShpc19pbl9idWZmZXIsIGlzX2NvbnNpc3RlbnQsIHQpLCAoKHNlZywgc29ydCkpID0+XG4gICAgICAgICBvZl9zZWdtZW50KGJ1ZmZlcl9pZHMsIGZhbHNlLCBzb3J0LCBzZWcpXG4gICAgICAgKVxuICAgIHw+IExpc3QuY29uY2F0O1xuICB9O1xufTtcblxubGV0IHJlYyBob2xlcyA9XG4gICAgICAgICh+Zm9udF9tZXRyaWNzLCB+bWFwOiBNZWFzdXJlZC50LCBzZWc6IFNlZ21lbnQudCk6IGxpc3QoTm9kZS50KSA9PlxuICBzZWdcbiAgfD4gTGlzdC5jb25jYXRfbWFwKFxuICAgICAgIGZ1blxuICAgICAgIHwgUGllY2UuU2Vjb25kYXJ5KF8pID0+IFtdXG4gICAgICAgfCBUaWxlKHQpID0+IExpc3QuY29uY2F0X21hcChob2xlcyh+bWFwLCB+Zm9udF9tZXRyaWNzKSwgdC5jaGlsZHJlbilcbiAgICAgICB8IEdyb3V0KGcpID0+IFtcbiAgICAgICAgICAgRW1wdHlIb2xlRGVjLnZpZXcoXG4gICAgICAgICAgICAgfmZvbnRfbWV0cmljcywgLy8gVE9ETyhkKSBmaXggc29ydFxuICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgIG1lYXN1cmVtZW50OiBNZWFzdXJlZC5maW5kX2coZywgbWFwKSxcbiAgICAgICAgICAgICAgIG1vbGQ6IE1vbGQub2ZfZ3JvdXQoZywgQW55KSxcbiAgICAgICAgICAgICB9LFxuICAgICAgICAgICApLFxuICAgICAgICAgXSxcbiAgICAgKTtcblxubGV0IHNpbXBsZV92aWV3ID1cbiAgICAofmZvbnRfbWV0cmljcywgfnVuc2VsZWN0ZWQsIH5tYXAsIH5zZXR0aW5nczogU2V0dGluZ3MudCk6IE5vZGUudCA9PiB7XG4gIG1vZHVsZSBUZXh0ID1cbiAgICBUZXh0KHtcbiAgICAgIGxldCBtYXAgPSBtYXA7XG4gICAgICBsZXQgc2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICB9KTtcbiAgbGV0IGhvbGVzID0gaG9sZXMofm1hcCwgfmZvbnRfbWV0cmljcywgdW5zZWxlY3RlZCk7XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLmNsYXNzXyhcImNvZGVcIiksXG4gICAgW1xuICAgICAgc3Bhbl9jKFwiY29kZS10ZXh0XCIsIFRleHQub2Zfc2VnbWVudChbXSwgZmFsc2UsIFNvcnQuQW55LCB1bnNlbGVjdGVkKSksXG4gICAgICAuLi5ob2xlcyxcbiAgICBdLFxuICApO1xufTtcblxubGV0IG9mX2hvbGUgPSAofmdsb2JhbHM6IEdsb2JhbHMudCwgfm1lYXN1cmVkLCBnOiBHcm91dC50KSA9PlxuICAvLyBUT0RPKGQpIGZpeCBzb3J0XG4gIEVtcHR5SG9sZURlYy52aWV3KFxuICAgIH5mb250X21ldHJpY3M9Z2xvYmFscy5mb250X21ldHJpY3MsXG4gICAge1xuICAgICAgbWVhc3VyZW1lbnQ6IE1lYXN1cmVkLmZpbmRfZyhnLCBtZWFzdXJlZCksXG4gICAgICBtb2xkOiBNb2xkLm9mX2dyb3V0KGcsIEFueSksXG4gICAgfSxcbiAgKTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5nbG9iYWxzOiBHbG9iYWxzLnQsXG4gICAgICB+c29ydDogU29ydC50LFxuICAgICAge3N0YXRlOiB7bWV0YToge21lYXN1cmVkLCBidWZmZXJfaWRzLCB1bnNlbGVjdGVkLCBob2xlcywgX30sIF99LCBffTogRWRpdG9yLnQsXG4gICAgKVxuICAgIDogTm9kZS50ID0+IHtcbiAgbW9kdWxlIFRleHQgPVxuICAgIFRleHQoe1xuICAgICAgbGV0IG1hcCA9IG1lYXN1cmVkO1xuICAgICAgbGV0IHNldHRpbmdzID0gZ2xvYmFscy5zZXR0aW5ncztcbiAgICB9KTtcbiAgbGV0IGNvZGUgPSBUZXh0Lm9mX3NlZ21lbnQoYnVmZmVyX2lkcywgZmFsc2UsIHNvcnQsIHVuc2VsZWN0ZWQpO1xuICBsZXQgaG9sZXMgPSBMaXN0Lm1hcChvZl9ob2xlKH5tZWFzdXJlZCwgfmdsb2JhbHMpLCBob2xlcyk7XG4gIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImNvZGVcIiksIFtzcGFuX2MoXCJjb2RlLXRleHRcIiwgY29kZSksIC4uLmhvbGVzXSk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCBiYWNrcGFja19zZWxfdmlldyA9XG4gICAgKFxuICAgICAgeF9vZmY6IGZsb2F0LFxuICAgICAgeV9vZmY6IGZsb2F0LFxuICAgICAgc2NhbGU6IGZsb2F0LFxuICAgICAgb3BhY2l0eTogZmxvYXQsXG4gICAgICB7Zm9jdXM6IF8sIGNvbnRlbnQsIF99OiBTZWxlY3Rpb24udCxcbiAgICApID0+IHtcbiAgbW9kdWxlIFRleHQgPVxuICAgIENvZGUuVGV4dCh7XG4gICAgICBsZXQgbWFwID0gTWVhc3VyZWQub2Zfc2VnbWVudChjb250ZW50KTtcbiAgICAgIGxldCBzZXR0aW5ncyA9IEluaXQuc3RhcnR1cC5zZXR0aW5ncztcbiAgICB9KTtcbiAgLy8gVE9ETyhhbmRyZXcpOiBNYXliZSB1c2UgaW5pdCBzb3J0IGF0IGNhcmV0IHRvIHByaW1lIHRoaXNcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgQXR0ci5jbGFzc2VzKFtcImNvZGUtdGV4dFwiLCBcImJhY2twYWNrLXNlbGVjdGlvblwiXSksXG4gICAgICAgIEF0dHIuY3JlYXRlKFxuICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoJWZweCwgJWZweCkgc2NhbGUoJWYpOyBvcGFjaXR5OiAlZiUlO1wiLFxuICAgICAgICAgICAgeF9vZmYsXG4gICAgICAgICAgICB5X29mZixcbiAgICAgICAgICAgIHNjYWxlLFxuICAgICAgICAgICAgb3BhY2l0eSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgLy8gendzcCBuZWNlc3NhcnkgZm9yIGNvbnRhaW5pbmcgYm94IHRvIHN0cmV0Y2ggdG8gY29udGFpbiB0cmFpbGluZyBuZXdsaW5lXG4gICAgVGV4dC5vZl9zZWdtZW50KFtdLCB0cnVlLCBBbnksIGNvbnRlbnQpIEAgW3RleHQoVW5pY29kZS56d3NwKV0sXG4gICk7XG59O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5vcmlnaW46IE1lYXN1cmVkLlBvaW50LnQsXG4gICAgICB7YmFja3BhY2ssIF99IGFzIHo6IFppcHBlci50LFxuICAgIClcbiAgICA6IE5vZGUudCA9PiB7XG4gIC8vVE9ETyhhbmRyZXcpOiBjbGVhbiB1cCB0aGlzIGR1bXBzdGVyIGZpcmUgb2YgYSBmdW5jdGlvblxuICBsZXQgaGVpZ2h0X2hlYWQgPVxuICAgIHN3aXRjaCAoYmFja3BhY2spIHtcbiAgICB8IFtdID0+IDBcbiAgICB8IFtoZCwgLi4uX10gPT4gTWVhc3VyZWQuc2VnbWVudF9oZWlnaHQoaGQuY29udGVudClcbiAgICB9O1xuICBsZXQgY2FuX3B1dF9kb3duID1cbiAgICBzd2l0Y2ggKFppcHBlci5wb3BfYmFja3BhY2soeikpIHtcbiAgICAvLyBjYXJldCB0aGluZyBpcyBoYWNrOyBpIGRvbid0IGtub3cgd2h5IHBvcF9iYWNrcGFja1xuICAgIC8vIGdpdmVzIHVzIHdoYXQgd2Ugd2FudCBoZXJlXG4gICAgfCBTb21lKF8pID0+IHouY2FyZXQgPT0gT3V0ZXJcbiAgICB8IE5vbmUgPT4gZmFsc2VcbiAgICB9O1xuICBsZXQgY2FyZXRfYWRqID0ge1xuICAgIGxldCBzaGFwZSA9IFppcHBlci5jYXJldF9kaXJlY3Rpb24oeik7XG4gICAgbGV0IHNpZGUgPVxuICAgICAgc3dpdGNoIChJbmRpY2F0ZWQucGllY2UoeikpIHtcbiAgICAgIHwgU29tZSgoXywgc2lkZSwgXykpID0+IHNpZGVcbiAgICAgIHwgXyA9PiBSaWdodFxuICAgICAgfTtcbiAgICBEZWNVdGlsLmNhcmV0X2FkanVzdChzaWRlLCBzaGFwZSk7XG4gIH07XG4gIGxldCBjYXJldF9hZGpfcHggPVxuICAgIC8vVE9ETyhhbmRyZXcpOiBmaWd1cmUgb3V0IHdoeSB3ZSBuZWVkIHRoaXMgbXlzdGVyeSBwaXhlbCBiZWxvd1xuICAgICgtMS4pICsuIGNhcmV0X2FkaiAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoO1xuICBsZXQgbWF4X2Rpc3AgPSAzOyAvKiBNYXhpbXVtIHZlcnRpY2FsIGJhY2twYWNrIGRpc3BsYWNlbWVudCAqL1xuICBsZXQgdmVydGljYWxfZGlzcCA9IG9yaWdpbi5yb3cgPD0gbWF4X2Rpc3AgPyBvcmlnaW4ucm93IDogbWF4X2Rpc3A7XG4gIGxldCBzZWxlY3Rpb25zX3N0eWxlID1cbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAlZnB4OyB0b3A6ICVmcHg7XCIsXG4gICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLmNvbCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBjYXJldF9hZGpfcHgsXG4gICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLnJvdyAtIHZlcnRpY2FsX2Rpc3AgLSBoZWlnaHRfaGVhZCAtIDEpXG4gICAgICAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICApO1xuICBsZXQgc2NhbGVfZm4gPSBpZHggPT4gZmxvYXRfb2ZfaW50KDEwMCAtIDEyICogaWR4KSAvLiAxMDAuO1xuICBsZXQgeF9mbiA9IGlkeCA9PiBmbG9hdF9vZl9pbnQoMTIgKiBpZHgpO1xuICBsZXQgaW5pdF9vcGFjaXR5ID0gMTAwLjtcbiAgbGV0IG9wYWNpdHlfcmVkdWN0aW9uID0gMjAuOyAvLyByZWR1Y3Rpb24gcGVyIGxpbmVcbiAgbGV0IGluaXRfaWR4ID0gMDtcbiAgbGV0IGR5X2ZuID0gKGlkeCwgYmFzZV9oZWlnaHQpID0+XG4gICAgZm9udF9tZXRyaWNzLnJvd19oZWlnaHRcbiAgICAqLiBmbG9hdF9vZl9pbnQoYmFzZV9oZWlnaHQpXG4gICAgKi4gc2NhbGVfZm4oaWR4KVxuICAgIC0uIDQuO1xuICBsZXQgaW5pdF95X29mZnNldCA9IGR5X2ZuKGluaXRfaWR4LCBoZWlnaHRfaGVhZCk7XG4gIGxldCAoXywgXywgXywgc2VsZWN0aW9ucykgPVxuICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgKChpZHgsIHlfb2Zmc2V0LCBvcGFjaXR5LCB2cyksIHM6IFNlbGVjdGlvbi50KSA9PiB7XG4gICAgICAgIGxldCBiYXNlX2hlaWdodCA9IE1lYXN1cmVkLnNlZ21lbnRfaGVpZ2h0KHMuY29udGVudCk7XG4gICAgICAgIGxldCBzY2FsZSA9IHNjYWxlX2ZuKGlkeCk7XG4gICAgICAgIGxldCB4X29mZnNldCA9IHhfZm4oaWR4KTtcbiAgICAgICAgbGV0IG5ld195X29mZnNldCA9IHlfb2Zmc2V0IC0uIGR5X2ZuKGlkeCwgYmFzZV9oZWlnaHQpO1xuICAgICAgICBsZXQgdiA9IGJhY2twYWNrX3NlbF92aWV3KHhfb2Zmc2V0LCBuZXdfeV9vZmZzZXQsIHNjYWxlLCBvcGFjaXR5LCBzKTtcbiAgICAgICAgbGV0IG5ld19pZHggPSBpZHggKyAxO1xuICAgICAgICBsZXQgbmV3X29wYWNpdHkgPSBvcGFjaXR5IC0uIG9wYWNpdHlfcmVkdWN0aW9uO1xuICAgICAgICAvL1RPRE8oYW5kcmV3KTogYW0gaSBtYWtpbmcgdGhpcyBkaWZmaWN1bHQgYnkgZ29pbmcgYmFja3dhcmRzP1xuICAgICAgICAobmV3X2lkeCwgbmV3X3lfb2Zmc2V0LCBuZXdfb3BhY2l0eSwgTGlzdC5jb25zKHYsIHZzKSk7XG4gICAgICB9LFxuICAgICAgKGluaXRfaWR4LCBpbml0X3lfb2Zmc2V0LCBpbml0X29wYWNpdHksIFtdKSxcbiAgICAgIGJhY2twYWNrLFxuICAgICk7XG4gIGxldCBzZWxlY3Rpb25zX3ZpZXcgPVxuICAgIGRpdihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIuY3JlYXRlKFwic3R5bGVcIiwgc2VsZWN0aW9uc19zdHlsZSksXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcImJhY2twYWNrXCJdKSxcbiAgICAgICAgXSksXG4gICAgICBzZWxlY3Rpb25zLFxuICAgICk7XG4gIGxldCBsZW5ndGggPVxuICAgIHN3aXRjaCAoYmFja3BhY2spIHtcbiAgICB8IFtdID0+IDBcbiAgICB8IFtoZCwgLi4uX10gPT4gTWVhc3VyZWQuc2VnbWVudF93aWR0aChoZC5jb250ZW50KVxuICAgIH07XG5cbiAgbGV0IGpvaW5lcl9zdHlsZSA9XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcInBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogJWZweDsgdG9wOiAlZnB4OyBoZWlnaHQ6ICVmcHg7XCIsXG4gICAgICBGbG9hdC5vZl9pbnQob3JpZ2luLmNvbCkgKi4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCArLiBjYXJldF9hZGpfcHgsXG4gICAgICAoLTMuKVxuICAgICAgKy4gRmxvYXQub2ZfaW50KG9yaWdpbi5yb3cgLSB2ZXJ0aWNhbF9kaXNwKVxuICAgICAgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQsXG4gICAgICAzLiArLiBGbG9hdC5vZl9pbnQodmVydGljYWxfZGlzcCkgKi4gZm9udF9tZXRyaWNzLnJvd19oZWlnaHQsXG4gICAgKTtcbiAgbGV0IGpvaW5lciA9XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jcmVhdGUoXCJzdHlsZVwiLCBqb2luZXJfc3R5bGUpLFxuICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJiYWNrcGFjay1qb2luZXJcIl0pLFxuICAgICAgICBdKSxcbiAgICAgIFtdLFxuICAgICk7XG4gIC8vVE9ETyhhbmRyZXcpOiBicmVhayBvdXQgYmFja3BhY2sgZGVjb3JhdGlvbiBpbnRvIGl0cyBvd24gbW9kdWxlXG4gIGxldCBnZW5pZV92aWV3ID1cbiAgICBEZWNVdGlsLmNvZGVfc3ZnKFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5vcmlnaW49e3JvdzogMCwgY29sOiAwfSxcbiAgICAgIH5iYXNlX2Nscz1bXCJyZXN0cnVjdHVyaW5nLWdlbmllXCJdLFxuICAgICAgfnBhdGhfY2xzPVtcInJlc3RydWN0dXJpbmctZ2VuaWUtcGF0aFwiXSxcbiAgICAgIFN2Z1V0aWwuUGF0aC5bXG4gICAgICAgIE0oe3g6IDAuLCB5OiAwLn0pLFxuICAgICAgICBWKHt5OiAoLTEuMCl9KSxcbiAgICAgICAgSF8oe2R4OiBGbG9hdC5vZl9pbnQobGVuZ3RoKX0pLFxuICAgICAgICBWXyh7ZHk6IDAuMH0pLFxuICAgICAgICBaLFxuICAgICAgXSxcbiAgICApO1xuICBsZXQgZ2VuaWVfc3R5bGUgPVxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6ICVmcHg7IHRvcDogJWZweDtcIixcbiAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4uY29sKSAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoICsuIGNhcmV0X2Fkal9weCxcbiAgICAgIEZsb2F0Lm9mX2ludChvcmlnaW4ucm93IC0gdmVydGljYWxfZGlzcClcbiAgICAgICouIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0XG4gICAgICArLiAxLixcbiAgICApO1xuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLmNsYXNzZXMoXG4gICAgICAgICAgW1wiYmFja3BhY2tcIl0gQCAoY2FuX3B1dF9kb3duID8gW10gOiBbXCJjYW50LXB1dC1kb3duXCJdKSxcbiAgICAgICAgKSxcbiAgICAgIF0pLFxuICAgIFtcbiAgICAgIHNlbGVjdGlvbnNfdmlldyxcbiAgICAgIGRpdih+YXR0cj1BdHRyLmNyZWF0ZShcInN0eWxlXCIsIGdlbmllX3N0eWxlKSwgW2dlbmllX3ZpZXddKSxcbiAgICBdXG4gICAgQCAoYmFja3BhY2sgIT0gW10gPyBbam9pbmVyXSA6IFtdKSxcbiAgKTtcbn07XG4iLCJvcGVuIFV0aWw7XG5vcGVuIFN2Z1V0aWw7XG5cbmxldCBjYXJldF93aWR0aF9zdHJhaWdodCA9IDAuMTtcbmxldCBjYXJldF93aWR0aF9iZW50ID0gMC4xO1xubGV0IGNhcmV0X2JlbmQgPSBEZWNVdGlsLnRpcF93aWR0aDtcblxubW9kdWxlIFByb2ZpbGUgPSB7XG4gIHR5cGUgdCA9IHtcbiAgICBzaWRlOiBEaXJlY3Rpb24udCxcbiAgICBvcmlnaW46IEhhejNsY29yZS5NZWFzdXJlZC5Qb2ludC50LFxuICAgIHNoYXBlOiBvcHRpb24oRGlyZWN0aW9uLnQpLFxuICB9O1xufTtcblxubGV0IGNhcmV0X3BhdGggPSAoc2hhcGU6IG9wdGlvbihEaXJlY3Rpb24udCkpID0+IHtcbiAgbGV0IGNhcmV0X2JlbmRfcGFyYW0gPVxuICAgIHN3aXRjaCAoc2hhcGUpIHtcbiAgICB8IFNvbWUoUmlnaHQpID0+IC0uIGNhcmV0X2JlbmRcbiAgICB8IFNvbWUoTGVmdCkgPT4gY2FyZXRfYmVuZFxuICAgIHwgTm9uZSA9PiAwLjBcbiAgICB9O1xuICBsZXQgY2FyZXRfd2lkdGhfcGFyYW0gPVxuICAgIHN3aXRjaCAoc2hhcGUpIHtcbiAgICB8IFNvbWUoUmlnaHQpID0+IC0uIGNhcmV0X3dpZHRoX2JlbnRcbiAgICB8IFNvbWUoTGVmdCkgPT4gY2FyZXRfd2lkdGhfYmVudFxuICAgIHwgTm9uZSA9PiBjYXJldF93aWR0aF9zdHJhaWdodFxuICAgIH07XG4gIFBhdGguW1xuICAgIG0ofng9MCwgfnk9MCksXG4gICAgSCh7eDogY2FyZXRfd2lkdGhfcGFyYW19KSxcbiAgICBMXyh7ZHg6IC0uIGNhcmV0X2JlbmRfcGFyYW0sIGR5OiAwLjV9KSxcbiAgICBMXyh7ZHg6ICsuIGNhcmV0X2JlbmRfcGFyYW0sIGR5OiAwLjV9KSxcbiAgICBIKHt4OiAtLiBjYXJldF93aWR0aF9wYXJhbX0pLFxuICAgIExfKHtkeDogLS4gY2FyZXRfYmVuZF9wYXJhbSwgZHk6ICgtMC41KX0pLFxuICAgIExfKHtkeDogKy4gY2FyZXRfYmVuZF9wYXJhbSwgZHk6ICgtMC41KX0pLFxuICBdO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3M6IEZvbnRNZXRyaWNzLnQsXG4gICAgICB+cHJvZmlsZSBhcyB7c2hhcGUsIHNpZGUsIG9yaWdpbn06IFByb2ZpbGUudCxcbiAgICApID0+IHtcbiAgbGV0IGxfYWRqID0gRGVjVXRpbC5jYXJldF9hZGp1c3Qoc2lkZSwgc2hhcGUpO1xuICBEZWNVdGlsLmNvZGVfc3ZnKFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgfm9yaWdpbixcbiAgICB+aWQ9XCJjYXJldFwiLFxuICAgIH5iYXNlX2Nscz1bXCJibGlua1wiXSxcbiAgICB+cGF0aF9jbHM9W1wiY2FyZXQtcGF0aFwiXSxcbiAgICB+aGVpZ2h0X2Z1ZGdlPURlY1V0aWwuc2hhZG93X2FkaiAqLiBmb250X21ldHJpY3Mucm93X2hlaWdodCxcbiAgICB+bGVmdF9mdWRnZT1sX2FkaiAqLiBmb250X21ldHJpY3MuY29sX3dpZHRoLFxuICAgIGNhcmV0X3BhdGgoc2hhcGUpLFxuICApO1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcblxubW9kdWxlIFByb2ZpbGUgPSB7XG4gIHR5cGUgc3R5bGUgPSBbIHwgYEJhcmUgfCBgU2libGluZyB8IGBBbmNob3IgfCBgQ2FyZXRdO1xuICB0eXBlIHQgPSB7XG4gICAgc3R5bGUsXG4gICAgbWVhc3VyZW1lbnQ6IEhhejNsY29yZS5NZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICBzb3J0OiBIYXozbGNvcmUuU29ydC50LFxuICB9O1xufTtcblxubGV0IGNhcmV0X3Bvc2l0aW9uX3JhZGlpID1cbiAgICAofmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCwgfnN0eWxlOiBQcm9maWxlLnN0eWxlKSA9PiB7XG4gIGxldCByID1cbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgfCBgQ2FyZXQgPT4gMy43NVxuICAgIHwgYEFuY2hvclxuICAgIHwgYFNpYmxpbmcgPT4gMi43NVxuICAgIHwgYEJhcmUgPT4gMi4wXG4gICAgfTtcbiAgKHIgLy4gZm9udF9tZXRyaWNzLmNvbF93aWR0aCwgciAvLiBmb250X21ldHJpY3Mucm93X2hlaWdodCk7XG59O1xuXG5sZXQgdmlldyA9ICh+Zm9udF9tZXRyaWNzLCB7c3R5bGUsIHNvcnQsIG1lYXN1cmVtZW50fTogUHJvZmlsZS50KSA9PiB7XG4gIGxldCAocl94LCByX3kpID0gY2FyZXRfcG9zaXRpb25fcmFkaWkofmZvbnRfbWV0cmljcywgfnN0eWxlKTtcbiAgbGV0IGNfY2xzID0gSGF6M2xjb3JlLlNvcnQudG9fc3RyaW5nKHNvcnQpO1xuICBsZXQgY2xzID1cbiAgICBzd2l0Y2ggKHN0eWxlKSB7XG4gICAgfCBgQmFyZSA9PiBcIm91dGVyLWNvdXNpblwiXG4gICAgfCBgQ2FyZXQgPT4gXCJjdXJyZW50LWNhcmV0LXBvc1wiXG4gICAgfCBgQW5jaG9yID0+IFwiYW5jaG9yXCJcbiAgICB8IGBTaWJsaW5nID0+IFwic2libGluZ1wiXG4gICAgfTtcbiAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgIFwic3ZnXCIsXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLmNsYXNzXyhjbHMpLFxuICAgICAgICBEZWNVdGlsLmFic19wb3NpdGlvbih+Zm9udF9tZXRyaWNzLCBtZWFzdXJlbWVudC5vcmlnaW4pLFxuICAgICAgICBBdHRyLmNyZWF0ZShcInZpZXdCb3hcIiwgUHJpbnRmLnNwcmludGYoXCIwIDAgMSAxXCIpKSxcbiAgICAgICAgQXR0ci5jcmVhdGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwibm9uZVwiKSxcbiAgICAgIF0pLFxuICAgIFtcbiAgICAgIE5vZGUuY3JlYXRlX3N2ZyhcbiAgICAgICAgXCJyZWN0XCIsXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShcbiAgICAgICAgICAgIEF0dHIuW1xuICAgICAgICAgICAgICBjcmVhdGUoXCJ4XCIsIFByaW50Zi5zcHJpbnRmKFwiJWZweFwiLCAtLiByX3gpKSxcbiAgICAgICAgICAgICAgY3JlYXRlKFwieVwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgMC4xIC0uIHJfeSkpLFxuICAgICAgICAgICAgICBjcmVhdGUoXCJ3aWR0aFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgMS4gKi4gcl94KSksXG4gICAgICAgICAgICAgIGNyZWF0ZShcImhlaWdodFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgMS4gKi4gcl95KSksXG4gICAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJjYXJldC1wb3NpdGlvbi1wYXRoXCIsIGNscywgY19jbHNdKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKSxcbiAgICAgICAgW10sXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuIiwib3BlbiBVdGlsO1xub3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFN2Z1V0aWw7XG5cbmxldCBydW46IE5pYi5TaGFwZS50ID0+IGZsb2F0ID1cbiAgZnVuXG4gIHwgQ29udmV4ID0+ICsuIERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoXG4gIHwgQ29uY2F2ZShfKSA9PiAtLiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aDtcblxubGV0IGFkajogTmliLlNoYXBlLnQgPT4gZmxvYXQgPVxuICBmdW5cbiAgfCBDb252ZXggPT4gRGVjVXRpbC5jb252ZXhfYWRqXG4gIHwgQ29uY2F2ZShfKSA9PiBEZWNVdGlsLmNvbmNhdmVfYWRqO1xuXG5sZXQgbF9ob29rID0gKGw6IE5pYi5TaGFwZS50KTogbGlzdChQYXRoLmNtZCkgPT4gW1xuICBIXyh7ZHg6IC0uIGFkaihsKX0pLFxuICBMXyh7ZHg6IC0uIHJ1bihsKSwgZHk6ICgtMC41KX0pLFxuICBMXyh7ZHg6ICsuIHJ1bihsKSwgZHk6ICgtMC41KX0pLFxuICBIXyh7ZHg6ICsuIGFkaihsKX0pLFxuXTtcblxubGV0IHJfaG9vayA9IChyOiBOaWIuU2hhcGUudCk6IGxpc3QoUGF0aC5jbWQpID0+IFtcbiAgSF8oe2R4OiArLiBhZGoocil9KSxcbiAgTF8oe2R4OiArLiBydW4ociksIGR5OiAwLjV9KSxcbiAgTF8oe2R4OiAtLiBydW4ociksIGR5OiAwLjV9KSxcbiAgSF8oe2R4OiAtLiBhZGoocil9KSxcbl07XG5cbmxldCBzaW1wbGVfc2hhcmRfcGF0aCA9ICgobCwgcik6IE5pYnMuc2hhcGVzLCBsZW5ndGg6IGludCk6IGxpc3QoUGF0aC5jbWQpID0+XG4gIExpc3QuZmxhdHRlbihcbiAgICBQYXRoLltcbiAgICAgIFttKH54PTAsIH55PTApLCBoKH54PWxlbmd0aCldLFxuICAgICAgcl9ob29rKHIpLFxuICAgICAgW2gofng9MCldLFxuICAgICAgbF9ob29rKGwpLFxuICAgIF0sXG4gICk7XG5cbmxldCBzaW1wbGVfc2hhcmQgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+c2hhcGVzLFxuICAgICAgfnBhdGhfY2xzLFxuICAgICAgfmJhc2VfY2xzLFxuICAgICAgfmF0dHI9W10sXG4gICAgICB+ZnVkZ2U9RGVjVXRpbC5memVybyxcbiAgICAgIG1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICApXG4gICAgOiB0ID0+XG4gIERlY1V0aWwuY29kZV9zdmdfc2l6ZWQoXG4gICAgfmZvbnRfbWV0cmljcyxcbiAgICB+bWVhc3VyZW1lbnQsXG4gICAgfmJhc2VfY2xzLFxuICAgIH5wYXRoX2NscyxcbiAgICB+YXR0cixcbiAgICB+ZnVkZ2UsXG4gICAgc2ltcGxlX3NoYXJkX3BhdGgoc2hhcGVzLCBtZWFzdXJlbWVudC5sYXN0LmNvbCAtIG1lYXN1cmVtZW50Lm9yaWdpbi5jb2wpLFxuICApO1xuXG5sZXQgc2ltcGxlX3NoYXJkX3NlbGVjdGVkID1cbiAgICAofmZvbnRfbWV0cmljcywgfnNoYXBlcywgfm1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCwgfmJ1ZmZlcik6IHQgPT4ge1xuICBsZXQgcGF0aF9jbHMgPSBbXG4gICAgXCJ0aWxlLXBhdGhcIixcbiAgICBcInJhaXNlZFwiLFxuICAgIGJ1ZmZlciA/IFwic2VsZWN0ZWQtYnVmZmVyXCIgOiBcInNlbGVjdGVkXCIsXG4gIF07XG4gIGxldCBiYXNlX2NscyA9IFtcInRpbGUtc2VsZWN0ZWRcIl07XG4gIHNpbXBsZV9zaGFyZChcbiAgICAvKiBJbmNyZWFzZSBoZWlnaHQgc2xpZ2h0bHkgdG8gYXZvaWQgbGVhdmluZyBzcGFjZXMgYmV0d2VlbiBzZWxlY3RlZCBsaW5lcyAqL1xuICAgIH5mdWRnZT17aGVpZ2h0OiAwLjMsIHRvcDogMC4sIHdpZHRoOiAwLiwgbGVmdDogMC59LFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgfnNoYXBlcyxcbiAgICB+cGF0aF9jbHMsXG4gICAgfmJhc2VfY2xzLFxuICAgIG1lYXN1cmVtZW50LFxuICApO1xufTtcblxubGV0IHNpbXBsZV9zaGFyZF9pbmRpY2F0ZWQgPVxuICAgIChcbiAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICB+aGFzX2NhcmV0LFxuICAgICAgfnNoYXBlcyxcbiAgICAgIH5zb3J0LFxuICAgICAgfm1lYXN1cmVtZW50OiBNZWFzdXJlZC5tZWFzdXJlbWVudCxcbiAgICApXG4gICAgOiB0ID0+IHtcbiAgbGV0IHBhdGhfY2xzID1cbiAgICBbXCJ0aWxlLXBhdGhcIiwgXCJyYWlzZWRcIiwgU29ydC50b19zdHJpbmcoc29ydCldXG4gICAgQCAoaGFzX2NhcmV0ID8gW1wiaW5kaWNhdGVkLWNhcmV0XCJdIDogW1wiaW5kaWNhdGVkXCJdKTtcbiAgbGV0IGJhc2VfY2xzID0gW1widGlsZS1pbmRpY2F0ZWRcIl07XG4gIHNpbXBsZV9zaGFyZCh+Zm9udF9tZXRyaWNzLCB+c2hhcGVzLCB+cGF0aF9jbHMsIH5iYXNlX2NscywgbWVhc3VyZW1lbnQpO1xufTtcblxubGV0IHNpbXBsZV9zaGFyZHNfaW5kaWNhdGVkID1cbiAgICAofmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCwgfmNhcmV0OiAoSWQudCwgaW50KSwgKGlkLCBtb2xkLCBzaGFyZHMpKVxuICAgIDogbGlzdCh0KSA9PlxuICBMaXN0Lm1hcChcbiAgICAoKGluZGV4LCBtZWFzdXJlbWVudCkpID0+XG4gICAgICBzaW1wbGVfc2hhcmRfaW5kaWNhdGVkKFxuICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICB+aGFzX2NhcmV0PWNhcmV0ID09IChpZCwgaW5kZXgpLFxuICAgICAgICB+c2hhcGVzPU1vbGQubmliX3NoYXBlcyh+aW5kZXgsIG1vbGQpLFxuICAgICAgICB+c29ydD1tb2xkLm91dCxcbiAgICAgICAgfm1lYXN1cmVtZW50LFxuICAgICAgKSxcbiAgICBzaGFyZHMsXG4gICk7XG5cbmxldCBuZXh0X3N0ZXBfaW5kaWNhdGVkID1cbiAgICAoXG4gICAgICB+aW5qZWN0LFxuICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgIH5oYXNfY2FyZXQsXG4gICAgICB+c2hhcGVzLFxuICAgICAgfnNvcnQsXG4gICAgICB+bWVhc3VyZW1lbnQ6IE1lYXN1cmVkLm1lYXN1cmVtZW50LFxuICAgIClcbiAgICA6IHQgPT4ge1xuICBsZXQgcGF0aF9jbHMgPVxuICAgIFtcInRpbGUtcGF0aFwiLCBcInJhaXNlZFwiLCBTb3J0LnRvX3N0cmluZyhzb3J0KV1cbiAgICBAIChoYXNfY2FyZXQgPyBbXCJpbmRpY2F0ZWQtY2FyZXRcIl0gOiBbXCJpbmRpY2F0ZWRcIl0pO1xuICBsZXQgYmFzZV9jbHMgPSBbXCJ0aWxlLW5leHQtc3RlcFwiXTtcbiAgc2ltcGxlX3NoYXJkKFxuICAgIH5mb250X21ldHJpY3MsXG4gICAgfnNoYXBlcyxcbiAgICB+cGF0aF9jbHMsXG4gICAgfmJhc2VfY2xzLFxuICAgIH5hdHRyPVtcbiAgICAgIEF0dHIub25fbW91c2Vkb3duKF8gPT4ge1xuICAgICAgICBwcmludF9lbmRsaW5lKFwiQ0xJQ0shXCIpO1xuICAgICAgICBpbmplY3QoKTtcbiAgICAgIH0pLFxuICAgIF0sXG4gICAgbWVhc3VyZW1lbnQsXG4gICk7XG59O1xuXG5sZXQgbmV4dF9zdGVwX3NoYXJkc19pbmRpY2F0ZWQgPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgfmNhcmV0OiAoSWQudCwgaW50KSxcbiAgICAgIChpZCwgbW9sZCwgc2hhcmRzKSxcbiAgICApXG4gICAgOiBsaXN0KHQpID0+XG4gIExpc3QubWFwKFxuICAgICgoaW5kZXgsIG1lYXN1cmVtZW50KSkgPT5cbiAgICAgIG5leHRfc3RlcF9pbmRpY2F0ZWQoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgIH5oYXNfY2FyZXQ9Y2FyZXQgPT0gKGlkLCBpbmRleCksXG4gICAgICAgIH5zaGFwZXM9TW9sZC5uaWJfc2hhcGVzKH5pbmRleCwgbW9sZCksXG4gICAgICAgIH5zb3J0PW1vbGQub3V0LFxuICAgICAgICB+bWVhc3VyZW1lbnQsXG4gICAgICApLFxuICAgIHNoYXJkcyxcbiAgKTtcblxubGV0IHRha2VuX3N0ZXBfaW5kaWNhdGVkID1cbiAgICAoXG4gICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgfmhhc19jYXJldCxcbiAgICAgIH5zaGFwZXMsXG4gICAgICB+c29ydCxcbiAgICAgIH5tZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsXG4gICAgKVxuICAgIDogdCA9PiB7XG4gIGxldCBwYXRoX2NscyA9XG4gICAgW1widGlsZS1wYXRoXCIsIFwicmFpc2VkXCIsIFNvcnQudG9fc3RyaW5nKHNvcnQpXVxuICAgIEAgKGhhc19jYXJldCA/IFtcImluZGljYXRlZC1jYXJldFwiXSA6IFtcImluZGljYXRlZFwiXSk7XG4gIGxldCBiYXNlX2NscyA9IFtcInRpbGUtdGFrZW4tc3RlcFwiXTtcbiAgc2ltcGxlX3NoYXJkKH5mb250X21ldHJpY3MsIH5zaGFwZXMsIH5wYXRoX2NscywgfmJhc2VfY2xzLCBtZWFzdXJlbWVudCk7XG59O1xuXG5sZXQgdGFrZW5fc3RlcF9zaGFyZHNfaW5kaWNhdGVkID1cbiAgICAofmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCwgfmNhcmV0OiAoSWQudCwgaW50KSwgKGlkLCBtb2xkLCBzaGFyZHMpKVxuICAgIDogbGlzdCh0KSA9PlxuICBMaXN0Lm1hcChcbiAgICAoKGluZGV4LCBtZWFzdXJlbWVudCkpID0+XG4gICAgICB0YWtlbl9zdGVwX2luZGljYXRlZChcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgfmhhc19jYXJldD1jYXJldCA9PSAoaWQsIGluZGV4KSxcbiAgICAgICAgfnNoYXBlcz1Nb2xkLm5pYl9zaGFwZXMofmluZGV4LCBtb2xkKSxcbiAgICAgICAgfnNvcnQ9bW9sZC5vdXQsXG4gICAgICAgIH5tZWFzdXJlbWVudCxcbiAgICAgICksXG4gICAgc2hhcmRzLFxuICApO1xuXG5sZXQgc2hhZG93ZnVkZ2UgPSBQYXRoLmNtZGZ1ZGdlKH55PURlY1V0aWwuc2hhZG93X2Fkaik7XG5cbmxldCBzaGFyZHNfb2ZfdGlsZXMgPSB0aWxlcyA9PlxuICB0aWxlc1xuICB8PiBMaXN0LmNvbmNhdF9tYXAoKChfLCBfLCBzaGFyZHMpKSA9PiBzaGFyZHMpXG4gIHw+IExpc3Quc29ydChcbiAgICAgICAoKF8sIG0xOiBNZWFzdXJlZC5tZWFzdXJlbWVudCksIChfLCBtMjogTWVhc3VyZWQubWVhc3VyZW1lbnQpKSA9PlxuICAgICAgIE1lYXN1cmVkLlBvaW50LmNvbXBhcmUobTEub3JpZ2luLCBtMi5vcmlnaW4pXG4gICAgICk7XG5cbmxldCBiaV9saW5lcyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5yb3dzOiBNZWFzdXJlZC5Sb3dzLnQsXG4gICAgICB0aWxlczogbGlzdCgoSWQudCwgTW9sZC50LCBNZWFzdXJlZC5TaGFyZHMudCkpLFxuICAgIClcbiAgICA6IGxpc3QodCkgPT4ge1xuICBsZXQgc2hhcmRzID0gc2hhcmRzX29mX3RpbGVzKHRpbGVzKTtcbiAgbGV0IHNoYXJkX3Jvd3MgPSBNZWFzdXJlZC5TaGFyZHMuc3BsaXRfYnlfcm93KHNoYXJkcyk7XG4gIGxldCBpbnRyYV9saW5lcyA9XG4gICAgc2hhcmRfcm93c1xuICAgIHw+IExpc3QubWFwKExpc3RVdGlsLm5laWdoYm9ycylcbiAgICB8PiBMaXN0LmNvbmNhdF9tYXAoXG4gICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICAgKCgoXywgbDogTWVhc3VyZWQubWVhc3VyZW1lbnQpLCAoXywgcjogTWVhc3VyZWQubWVhc3VyZW1lbnQpKSkgPT5cbiAgICAgICAgICAgKFxuICAgICAgICAgICAgIGwub3JpZ2luLFxuICAgICAgICAgICAgIFN2Z1V0aWwuUGF0aC5bXG4gICAgICAgICAgICAgICBzaGFkb3dmdWRnZShtKH54PTAsIH55PTEpKSxcbiAgICAgICAgICAgICAgIGgofng9ci5sYXN0LmNvbCAtIGwub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgXSxcbiAgICAgICAgICAgKVxuICAgICAgICAgKSxcbiAgICAgICApO1xuICBsZXQgaW50ZXJfbGluZXMgPVxuICAgIExpc3RVdGlsLm5laWdoYm9ycyhzaGFyZF9yb3dzKVxuICAgIHw+IExpc3QubWFwKFxuICAgICAgICAgKChyb3dfc2hhcmRzOiBNZWFzdXJlZC5TaGFyZHMudCwgcm93X3NoYXJkcyc6IE1lYXN1cmVkLlNoYXJkcy50KSkgPT4ge1xuICAgICAgICAgYXNzZXJ0KHJvd19zaGFyZHMgIT0gW10pO1xuICAgICAgICAgYXNzZXJ0KHJvd19zaGFyZHMnICE9IFtdKTtcbiAgICAgICAgIGxldCBvcmlnaW4gPSBzbmQoTGlzdC5oZChyb3dfc2hhcmRzKSkub3JpZ2luO1xuICAgICAgICAgbGV0IG9yaWdpbicgPSBzbmQoTGlzdC5oZChyb3dfc2hhcmRzJykpLm9yaWdpbjtcbiAgICAgICAgIGxldCBpbmRlbnQgPSBNZWFzdXJlZC5Sb3dzLmZpbmQob3JpZ2luLnJvdywgcm93cykuaW5kZW50O1xuICAgICAgICAgbGV0IHZfZGVsdGEgPSBvcmlnaW4nLmNvbCA9PSBpbmRlbnQgPyAoLTEpIDogMDtcbiAgICAgICAgIChcbiAgICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgICBTdmdVdGlsLlBhdGguW1xuICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKG0ofng9MCwgfnk9MSkpLFxuICAgICAgICAgICAgIGhfKH5keD1pbmRlbnQgLSBvcmlnaW4uY29sKSxcbiAgICAgICAgICAgICBzaGFkb3dmdWRnZSh2Xyh+ZHk9b3JpZ2luJy5yb3cgLSBvcmlnaW4ucm93ICsgdl9kZWx0YSkpLFxuICAgICAgICAgICAgIGhfKH5keD1vcmlnaW4nLmNvbCAtIGluZGVudCksXG4gICAgICAgICAgIF0sXG4gICAgICAgICApO1xuICAgICAgIH0pO1xuICAvLyBUT0RPKGQpIGNsZWFuIHVwIFByb2ZpbGUgZGF0YXR5cGVcbiAgbGV0IHMgPVxuICAgIHN3aXRjaCAodGlsZXMpIHtcbiAgICB8IFtdID0+IGZhaWx3aXRoKFwiZW1wdHkgdGlsZVwiKVxuICAgIHwgWyhfLCBtb2xkLCBfKSwgLi4uX10gPT4gbW9sZC5vdXRcbiAgICB9O1xuICBsZXQgY2xzcyA9IFtcImNoaWxkLWxpbmVcIiwgU29ydC50b19zdHJpbmcocyldO1xuICBpbnRyYV9saW5lc1xuICBAIGludGVyX2xpbmVzXG4gIHw+IExpc3QubWFwKCgob3JpZ2luLCBwYXRoKSkgPT5cbiAgICAgICBEZWNVdGlsLmNvZGVfc3ZnKH5mb250X21ldHJpY3MsIH5vcmlnaW4sIH5wYXRoX2Nscz1jbHNzLCBwYXRoKVxuICAgICApO1xufTtcblxubGV0IHVuaV9saW5lcyA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5yb3dzOiBNZWFzdXJlZC5Sb3dzLnQsXG4gICAgICAobDogTWVhc3VyZWQuUG9pbnQudCwgcjogTWVhc3VyZWQuUG9pbnQudCksXG4gICAgICB0aWxlczogbGlzdCgoSWQudCwgTW9sZC50LCBNZWFzdXJlZC5TaGFyZHMudCkpLFxuICAgICkgPT4ge1xuICBvcGVuIFN2Z1V0aWwuUGF0aDtcbiAgbGV0IHNoYXJkcyA9IHNoYXJkc19vZl90aWxlcyh0aWxlcyk7XG4gIGxldCBsX2xpbmUgPSB7XG4gICAgbGV0IChfLCBtX2ZpcnN0KSA9IExpc3QuaGQoc2hhcmRzKTtcbiAgICBsZXQgKF8sIG1fbGFzdF9vZl9maXJzdCkgPSB7XG4gICAgICBsZXQgc2hhcmRfcm93cyA9IE1lYXN1cmVkLlNoYXJkcy5zcGxpdF9ieV9yb3coc2hhcmRzKTtcbiAgICAgIGFzc2VydChzaGFyZF9yb3dzICE9IFtdKTtcbiAgICAgIGxldCByb3cgPSBMaXN0LmhkKHNoYXJkX3Jvd3MpO1xuICAgICAgYXNzZXJ0KHJvdyAhPSBbXSk7XG4gICAgICBMaXN0VXRpbC5sYXN0KHJvdyk7XG4gICAgfTtcbiAgICBpZiAoTWVhc3VyZWQuUG9pbnQuY29tcGFyZShsLCBtX2ZpcnN0Lm9yaWdpbikgPCAwKSB7XG4gICAgICBsZXQgbWF4X2NvbCA9XG4gICAgICAgIE1lYXN1cmVkLlJvd3MubWF4X2NvbChcbiAgICAgICAgICBMaXN0VXRpbC5yYW5nZSh+bG89bC5yb3csIG1fZmlyc3Qub3JpZ2luLnJvdyksXG4gICAgICAgICAgcm93cyxcbiAgICAgICAgKVxuICAgICAgICB8PiBtYXgobV9maXJzdC5vcmlnaW4uY29sKTtcbiAgICAgIGxldCBpbmRlbnQgPSBNZWFzdXJlZC5Sb3dzLmZpbmQobV9maXJzdC5vcmlnaW4ucm93LCByb3dzKS5pbmRlbnQ7XG4gICAgICBbXG4gICAgICAgIGwucm93ID09IG1fZmlyc3Qub3JpZ2luLnJvd1xuICAgICAgICAgID8gKFxuICAgICAgICAgICAgbV9maXJzdC5vcmlnaW4sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKG0ofng9MCwgfnk9MSkpLFxuICAgICAgICAgICAgICBoKH54PWwuY29sIC0gbV9maXJzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICAgTF8oe1xuICAgICAgICAgICAgICAgIGR4OiAtLiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCxcbiAgICAgICAgICAgICAgICBkeTogLS4gRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0IC8uIDIuIC8vaGFja1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy9MXyh7XG4gICAgICAgICAgICAgIC8vICBkeDogRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsXG4gICAgICAgICAgICAgIC8vICBkeTogLS4gRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0LFxuICAgICAgICAgICAgICAvL30pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICApXG4gICAgICAgICAgOiAoXG4gICAgICAgICAgICBtX2ZpcnN0Lm9yaWdpbixcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgbV9maXJzdC5vcmlnaW4uY29sID09IGluZGVudFxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgbSh+eD1tX2xhc3Rfb2ZfZmlyc3QubGFzdC5jb2wgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wsIH55PTApLFxuICAgICAgICAgICAgICAgICAgLy8gVE9ETyhkKSBuZWVkIHRvIHRha2UgbWF4IG9mIGFsbCByb3dzLCBub3QganVzdCB0b3BcbiAgICAgICAgICAgICAgICAgIGgofng9bWF4X2NvbCAtIG1fZmlyc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAgICAgICBzaGFkb3dmdWRnZSh2KH55PWwucm93IC0gbV9sYXN0X29mX2ZpcnN0Lm9yaWdpbi5yb3cpKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICBzaGFkb3dmdWRnZShtKH54PTAsIH55PTEpKSxcbiAgICAgICAgICAgICAgICAgIGgofng9aW5kZW50IC0gbV9maXJzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKHYofnk9bC5yb3cgKyAxIC0gbV9maXJzdC5vcmlnaW4ucm93KSksXG4gICAgICAgICAgICAgICAgICBoKH54PW1heF9jb2wgLSBtX2ZpcnN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgICAgICAgc2hhZG93ZnVkZ2Uodih+eT1sLnJvdyAtIG1fZmlyc3Qub3JpZ2luLnJvdykpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIEAgW1xuICAgICAgICAgICAgICBoKH54PWwuY29sIC0gbV9maXJzdC5vcmlnaW4uY29sKSxcbiAgICAgICAgICAgICAgTF8oe1xuICAgICAgICAgICAgICAgIGR4OiAtLiBEZWNVdGlsLnNob3J0X3RpcF93aWR0aCxcbiAgICAgICAgICAgICAgICBkeTogRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0IC8uIDIuIC8vaGFja1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy9MXyh7ZHg6IERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLCBkeTogRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0fSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBbXTtcbiAgICB9O1xuICB9O1xuICBsZXQgcl9saW5lID0ge1xuICAgIGxldCAoXywgbV9sYXN0KSA9IExpc3RVdGlsLmxhc3Qoc2hhcmRzKTtcbiAgICBsZXQgaG9vayA9IFtcbiAgICAgIExfKHtcbiAgICAgICAgZHg6IERlY1V0aWwuc2hvcnRfdGlwX3dpZHRoLFxuICAgICAgICBkeTogLS4gRGVjVXRpbC5zaG9ydF90aXBfaGVpZ2h0IC8uIDIuIC8vaGFja1xuICAgICAgfSksXG4gICAgICAvL0xfKHtkeDogLS4gRGVjVXRpbC5zaG9ydF90aXBfd2lkdGgsIGR5OiAtLiBEZWNVdGlsLnNob3J0X3RpcF9oZWlnaHR9KSxcbiAgICBdO1xuICAgIGlmIChyLnJvdyA9PSBtX2xhc3QubGFzdC5yb3cgJiYgci5jb2wgPiBtX2xhc3QubGFzdC5jb2wpIHtcbiAgICAgIFtcbiAgICAgICAgKFxuICAgICAgICAgIG1fbGFzdC5vcmlnaW4sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgc2hhZG93ZnVkZ2UoXG4gICAgICAgICAgICAgIG0oXG4gICAgICAgICAgICAgICAgfng9bV9sYXN0Lmxhc3QuY29sIC0gbV9sYXN0Lm9yaWdpbi5jb2wsXG4gICAgICAgICAgICAgICAgfnk9bV9sYXN0Lmxhc3Qucm93IC0gbV9sYXN0Lm9yaWdpbi5yb3cgKyAxLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGgofng9ci5jb2wgLSBtX2xhc3Qub3JpZ2luLmNvbCksXG4gICAgICAgICAgICAuLi5ob29rLFxuICAgICAgICAgIF0sXG4gICAgICAgICksXG4gICAgICBdO1xuICAgIH0gZWxzZSBpZiAoci5yb3cgPiBtX2xhc3QubGFzdC5yb3cpIHtcbiAgICAgIGxldCBtaW5fY29sID1cbiAgICAgICAgTWVhc3VyZWQuUm93cy5taW5fY29sKFxuICAgICAgICAgIExpc3RVdGlsLnJhbmdlKH5sbz1tX2xhc3QubGFzdC5yb3csIHIucm93ICsgMSksXG4gICAgICAgICAgcm93cyxcbiAgICAgICAgKVxuICAgICAgICB8PiBtaW4obV9sYXN0Lmxhc3QuY29sKTtcbiAgICAgIC8vIGxldCByX2luZGVudCA9IE1lYXN1cmVkLlJvd3MuZmluZChyLnJvdywgcm93cykuaW5kZW50O1xuICAgICAgbGV0IChfLCBtX2ZsYXN0KSA9IHtcbiAgICAgICAgbGV0IHNoYXJkX3Jvd3MgPSBNZWFzdXJlZC5TaGFyZHMuc3BsaXRfYnlfcm93KHNoYXJkcyk7XG4gICAgICAgIGFzc2VydChzaGFyZF9yb3dzICE9IFtdKTtcbiAgICAgICAgbGV0IHJvdyA9IExpc3RVdGlsLmxhc3Qoc2hhcmRfcm93cyk7XG4gICAgICAgIGFzc2VydChyb3cgIT0gW10pO1xuICAgICAgICBMaXN0LmhkKHJvdyk7XG4gICAgICB9O1xuICAgICAgLy8gbGV0IGZsYXN0X2luZGVudCA9IE1lYXN1cmVkLlJvd3MuZmluZChtX2ZsYXN0Lm9yaWdpbi5yb3csIHJvd3MpLmluZGVudDtcbiAgICAgIFtcbiAgICAgICAgKFxuICAgICAgICAgIG1fZmxhc3Qub3JpZ2luLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIHNoYWRvd2Z1ZGdlKFxuICAgICAgICAgICAgICBtKH54PTAsIH55PW1fZmxhc3QubGFzdC5yb3cgLSBtX2ZsYXN0Lm9yaWdpbi5yb3cgKyAxKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBoKH54PW1pbl9jb2wgLSBtX2ZsYXN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgc2hhZG93ZnVkZ2Uodih+eT1yLnJvdyAtIG1fZmxhc3Qub3JpZ2luLnJvdyArIDEpKSxcbiAgICAgICAgICAgIGgofng9ci5jb2wgLSBtX2ZsYXN0Lm9yaWdpbi5jb2wpLFxuICAgICAgICAgICAgLi4uaG9vayxcbiAgICAgICAgICBdLFxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9IGVsc2Uge1xuICAgICAgW107XG4gICAgfTtcbiAgfTtcbiAgLy8gVE9ETyhkKSBjbGVhbiB1cCBQcm9maWxlIGRhdGF0eXBlXG4gIGxldCBzID1cbiAgICBzd2l0Y2ggKHRpbGVzKSB7XG4gICAgfCBbXSA9PiBmYWlsd2l0aChcImVtcHR5IHRpbGVcIilcbiAgICB8IFsoXywgbW9sZCwgXyksIC4uLl9dID0+IG1vbGQub3V0XG4gICAgfTtcbiAgbGV0IGNsc3MgPSBbXCJjaGlsZC1saW5lXCIsIFNvcnQudG9fc3RyaW5nKHMpXTtcbiAgbF9saW5lXG4gIEAgcl9saW5lXG4gIHw+IExpc3QubWFwKCgob3JpZ2luLCBwYXRoKSkgPT5cbiAgICAgICBEZWNVdGlsLmNvZGVfc3ZnKH5mb250X21ldHJpY3MsIH5vcmlnaW4sIH5wYXRoX2Nscz1jbHNzLCBwYXRoKVxuICAgICApO1xufTtcblxubGV0IGluZGljYXRlZCA9XG4gICAgKFxuICAgICAgfmZvbnRfbWV0cmljczogRm9udE1ldHJpY3MudCxcbiAgICAgIH5yb3dzOiBNZWFzdXJlZC5Sb3dzLnQsXG4gICAgICB+Y2FyZXQsXG4gICAgICB+dGlsZXMsXG4gICAgICByYW5nZSxcbiAgICApXG4gICAgOiBsaXN0KE5vZGUudCkgPT4ge1xuICBMaXN0LmNvbmNhdF9tYXAoc2ltcGxlX3NoYXJkc19pbmRpY2F0ZWQofmZvbnRfbWV0cmljcywgfmNhcmV0KSwgdGlsZXMpXG4gIEAgdW5pX2xpbmVzKH5mb250X21ldHJpY3MsIH5yb3dzLCByYW5nZSwgdGlsZXMpXG4gIEAgYmlfbGluZXMofmZvbnRfbWV0cmljcywgfnJvd3MsIHRpbGVzKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIFV0aWw7XG5vcGVuIEhhejNsY29yZTtcblxubW9kdWxlIERlY28gPSAoTToge1xuICAgICAgICAgICAgICAgICBsZXQgZ2xvYmFsczogR2xvYmFscy50O1xuICAgICAgICAgICAgICAgICBsZXQgZWRpdG9yOiBFZGl0b3IudDtcbiAgICAgICAgICAgICAgIH0pID0+IHtcbiAgbGV0IGZvbnRfbWV0cmljcyA9IE0uZ2xvYmFscy5mb250X21ldHJpY3M7XG4gIGxldCBtYXAgPSBNLmVkaXRvci5zdGF0ZS5tZXRhLm1lYXN1cmVkO1xuICBsZXQgc2hvd19iYWNrcGFja190YXJnZXRzID0gTS5nbG9iYWxzLnNob3dfYmFja3BhY2tfdGFyZ2V0cztcbiAgbGV0IHRlcm1zID0gTS5lZGl0b3Iuc3RhdGUubWV0YS50ZXJtcztcbiAgbGV0IHRlcm1fcmFuZ2VzID0gTS5lZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcztcbiAgbGV0IHRpbGVzID0gTS5lZGl0b3Iuc3RhdGUubWV0YS50aWxlcztcblxuICBsZXQgdGlsZSA9IGlkID0+IElkLk1hcC5maW5kKGlkLCB0aWxlcyk7XG5cbiAgbGV0IGNhcmV0ID0gKHo6IFppcHBlci50KTogbGlzdChOb2RlLnQpID0+IHtcbiAgICBsZXQgb3JpZ2luID0gWmlwcGVyLmNhcmV0X3BvaW50KG1hcCwgeik7XG4gICAgbGV0IHNoYXBlID0gWmlwcGVyLmNhcmV0X2RpcmVjdGlvbih6KTtcbiAgICBsZXQgc2lkZSA9XG4gICAgICBzd2l0Y2ggKEluZGljYXRlZC5waWVjZSh6KSkge1xuICAgICAgfCBTb21lKChfLCBzaWRlLCBfKSkgPT4gc2lkZVxuICAgICAgfCBfID0+IFJpZ2h0XG4gICAgICB9O1xuICAgIFtDYXJldERlYy52aWV3KH5mb250X21ldHJpY3MsIH5wcm9maWxlPXtzaWRlLCBvcmlnaW4sIHNoYXBlfSldO1xuICB9O1xuXG4gIHR5cGUgc2hhcmRfZGF0YSA9IChNZWFzdXJlZC5tZWFzdXJlbWVudCwgTmlicy5zaGFwZXMpO1xuXG4gIGxldCBzZWxfc2hhcmRfc3ZnID1cbiAgICAgICh+aW5kZXg9PywgfnN0YXJ0X3NoYXBlLCBtZWFzdXJlbWVudDogTWVhc3VyZWQubWVhc3VyZW1lbnQsIHApXG4gICAgICA6IChNZWFzdXJlZC5tZWFzdXJlbWVudCwgTmlicy5zaGFwZXMpID0+IChcbiAgICBtZWFzdXJlbWVudCxcbiAgICBNb2xkLm5pYl9zaGFwZXMofmluZGV4PywgUGllY2UubW9sZF9vZih+c2hhcGU9c3RhcnRfc2hhcGUsIHApKSxcbiAgKTtcblxuICBsZXQgcmVjIHNlbF9vZl9waWVjZSA9XG4gICAgICAgICAgKHN0YXJ0X3NoYXBlOiBOaWIuU2hhcGUudCwgcDogUGllY2UudClcbiAgICAgICAgICA6IChOaWIuU2hhcGUudCwgbGlzdChvcHRpb24oc2hhcmRfZGF0YSkpKSA9PiB7XG4gICAgbGV0IHNoYXJkX2RhdGEgPVxuICAgICAgc3dpdGNoIChwKSB7XG4gICAgICB8IFRpbGUodCkgPT4gc2VsX29mX3RpbGUofnN0YXJ0X3NoYXBlLCB0KVxuICAgICAgfCBHcm91dChnKSA9PiBbXG4gICAgICAgICAgU29tZShzZWxfc2hhcmRfc3ZnKH5zdGFydF9zaGFwZSwgTWVhc3VyZWQuZmluZF9nKGcsIG1hcCksIHApKSxcbiAgICAgICAgXVxuICAgICAgfCBTZWNvbmRhcnkodykgd2hlbiBTZWNvbmRhcnkuaXNfbGluZWJyZWFrKHcpID0+IFtOb25lXVxuICAgICAgfCBTZWNvbmRhcnkodykgPT4gW1xuICAgICAgICAgIFNvbWUoc2VsX3NoYXJkX3N2Zyh+c3RhcnRfc2hhcGUsIE1lYXN1cmVkLmZpbmRfdyh3LCBtYXApLCBwKSksXG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgbGV0IHN0YXJ0X3NoYXBlID1cbiAgICAgIHN3aXRjaCAoUGllY2UubmlicyhwKSkge1xuICAgICAgfCBOb25lID0+IHN0YXJ0X3NoYXBlXG4gICAgICB8IFNvbWUoKF8sIHtzaGFwZSwgX30pKSA9PiBzaGFwZVxuICAgICAgfTtcbiAgICAoc3RhcnRfc2hhcGUsIHNoYXJkX2RhdGEpO1xuICB9XG4gIGFuZCBzZWxfb2ZfdGlsZSA9ICh+c3RhcnRfc2hhcGUsIHQ6IFRpbGUudCk6IGxpc3Qob3B0aW9uKHNoYXJkX2RhdGEpKSA9PiB7XG4gICAgbGV0IHRpbGVfc2hhcmRzID1cbiAgICAgIE1lYXN1cmVkLmZpbmRfc2hhcmRzKHQsIG1hcClcbiAgICAgIHw+IExpc3QuZmlsdGVyKCgoaSwgXykpID0+IExpc3QubWVtKGksIHQuc2hhcmRzKSlcbiAgICAgIHw+IExpc3QubWFwKCgoaW5kZXgsIG1lYXN1cmVtZW50KSkgPT5cbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIFNvbWUoc2VsX3NoYXJkX3N2Zyh+c3RhcnRfc2hhcGUsIH5pbmRleCwgbWVhc3VyZW1lbnQsIFRpbGUodCkpKSxcbiAgICAgICAgICAgXVxuICAgICAgICAgKTtcbiAgICBsZXQgc2hhcGVfYXQgPSBpbmRleCA9PiBzbmQoTW9sZC5uaWJzKH5pbmRleCwgdC5tb2xkKSkuc2hhcGU7XG4gICAgbGV0IGNoaWxkcmVuX3NoYXJkcyA9XG4gICAgICB0LmNoaWxkcmVuIHw+IExpc3QubWFwaShpbmRleCA9PiBzZWxfb2Zfc2VnbWVudChzaGFwZV9hdChpbmRleCkpKTtcbiAgICBMaXN0VXRpbC5pbnRlcmxlYXZlKHRpbGVfc2hhcmRzLCBjaGlsZHJlbl9zaGFyZHMpIHw+IExpc3QuZmxhdHRlbjtcbiAgfVxuICBhbmQgc2VsX29mX3NlZ21lbnQgPVxuICAgICAgKHN0YXJ0X3NoYXBlOiBOaWIuU2hhcGUudCwgc2VnOiBTZWdtZW50LnQpOiBsaXN0KG9wdGlvbihzaGFyZF9kYXRhKSkgPT4ge1xuICAgIHNlZ1xuICAgIHw+IExpc3RVdGlsLmZvbGRfbGVmdF9tYXAoc2VsX29mX3BpZWNlLCBzdGFydF9zaGFwZSlcbiAgICB8PiBzbmRcbiAgICB8PiBMaXN0LmZsYXR0ZW47XG4gIH1cbiAgYW5kIHNlbGVjdGVkX3BpZWNlcyA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PlxuICAgIC8qIFdlIGRyYXcgYSBzaW5nbGUgZGVjbyBwZXIgcm93IGJ5IGRpdmlkaW5nIHBhcnRpb25pbmluZyB0aGUgc2hhcmRzXG4gICAgICogaW50byBsaW5lYnJlYWstc2VwZXJhdGVkIHNlZ21lbnRzLCB0aGVuIGNvbWJpbmluZyB0aGUgbWVhc3VyZW1lbnRzXG4gICAgICogYW5kIHNoYXBlcyBvZiB0aGUgZmlyc3QgYW5kIGxhc3Qgc2hhcmQgb2YgZWFjaCBzZWdtZW50LiBJZGVhbGx5IHdlXG4gICAgICogY291bGQganVzdCBnZXQgdGhpcyBpbmZvIGZyb20gdGhlIHJvdyBtZWFzdXJlbWVudHMsIGJ1dCB3ZSBoYXZlIG5vXG4gICAgICogY3VycmVudCB3YXkgb2YgZmlndXJpbmcgb3V0IHNoYXBlcyBmb3Igd2hpdGVzcGFjZSB3aXRob3V0IHRyYXZlcnNpbmcgKi9cbiAgICBzZWxfb2Zfc2VnbWVudChcbiAgICAgIGZzdChTaWJsaW5ncy5zaGFwZXMoei5yZWxhdGl2ZXMuc2libGluZ3MpKSxcbiAgICAgIHouc2VsZWN0aW9uLmNvbnRlbnQsXG4gICAgKVxuICAgIHw+IExpc3RVdGlsLnNwbGl0X2F0X25vbmVzXG4gICAgfD4gTGlzdFV0aWwuZmlyc3RfYW5kX2xhc3RcbiAgICB8PiBMaXN0Lm1hcCgoKChtMSwgKGwxLCBfKSk6IHNoYXJkX2RhdGEsIChtMiwgKF8sIHIyKSk6IHNoYXJkX2RhdGEpKSA9PlxuICAgICAgICAgKCh7b3JpZ2luOiBtMS5vcmlnaW4sIGxhc3Q6IG0yLmxhc3R9LCAobDEsIHIyKSk6IHNoYXJkX2RhdGEpXG4gICAgICAgKVxuICAgIHw+IExpc3QubWFwKCgobWVhc3VyZW1lbnQsIHNoYXBlcykpID0+XG4gICAgICAgICBQaWVjZURlYy5zaW1wbGVfc2hhcmRfc2VsZWN0ZWQoXG4gICAgICAgICAgIH5idWZmZXI9U2VsZWN0aW9uLmlzX2J1ZmZlcih6LnNlbGVjdGlvbiksXG4gICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgIH5tZWFzdXJlbWVudCxcbiAgICAgICAgICAgfnNoYXBlcyxcbiAgICAgICAgIClcbiAgICAgICApO1xuXG4gIGxldCBpbmRpY2F0ZWRfcGllY2VfZGVjbyA9ICh6OiBaaXBwZXIudCk6IGxpc3QoTm9kZS50KSA9PiB7XG4gICAgc3dpdGNoIChJbmRpY2F0ZWQucGllY2UoeikpIHtcbiAgICB8IF8gd2hlbiB6LnNlbGVjdGlvbi5jb250ZW50ICE9IFtdID0+IFtdXG4gICAgfCBOb25lID0+IFtdXG4gICAgfCBTb21lKChHcm91dChfKSwgXywgXykpID0+IFtdXG4gICAgfCBTb21lKChwLCBzaWRlLCBfKSkgPT5cbiAgICAgIC8vIHJvb3RfcHJvZmlsZSBjYWxjdWxhdGlvbiBhc3N1bWVzIHAgaXMgdGlsZVxuICAgICAgLy8gVE9ETyBlbmNvZGUgaW4gdHlwZXNcbiAgICAgIGxldCBfbmliX3NoYXBlID1cbiAgICAgICAgc3dpdGNoIChaaXBwZXIuY2FyZXRfZGlyZWN0aW9uKHopKSB7XG4gICAgICAgIHwgTm9uZSA9PiBOaWIuU2hhcGUuQ29udmV4XG4gICAgICAgIHwgU29tZShuaWIpID0+IE5pYi5TaGFwZS5yZWxhdGl2ZShuaWIsIHNpZGUpXG4gICAgICAgIH07XG4gICAgICBsZXQgcmFuZ2U6IG9wdGlvbigoTWVhc3VyZWQuUG9pbnQudCwgTWVhc3VyZWQuUG9pbnQudCkpID0ge1xuICAgICAgICAvLyBpZiAoUGllY2UuaGFzX2VuZHMocCkpIHtcbiAgICAgICAgbGV0IGlkID0gSWQuTWFwLmZpbmQoUGllY2UuaWQocCksIHRlcm1zKSB8PiBBbnkucmVwX2lkO1xuICAgICAgICBzd2l0Y2ggKFRlcm1SYW5nZXMuZmluZF9vcHQoaWQsIHRlcm1fcmFuZ2VzKSkge1xuICAgICAgICB8IE5vbmUgPT4gTm9uZVxuICAgICAgICB8IFNvbWUoKHBfbCwgcF9yKSkgPT5cbiAgICAgICAgICBsZXQgbCA9IE1lYXN1cmVkLmZpbmRfcChwX2wsIG1hcCkub3JpZ2luO1xuICAgICAgICAgIGxldCByID0gTWVhc3VyZWQuZmluZF9wKHBfciwgbWFwKS5sYXN0O1xuICAgICAgICAgIFNvbWUoKGwsIHIpKTtcbiAgICAgICAgfTtcbiAgICAgIH07XG4gICAgICBsZXQgaW5kZXggPVxuICAgICAgICBzd2l0Y2ggKEluZGljYXRlZC5zaGFyZF9pbmRleCh6KSkge1xuICAgICAgICB8IE5vbmUgPT4gKC0xKVxuICAgICAgICB8IFNvbWUoaSkgPT4gaVxuICAgICAgICB9O1xuICAgICAgc3dpdGNoIChyYW5nZSkge1xuICAgICAgfCBOb25lID0+IFtdXG4gICAgICB8IFNvbWUocmFuZ2UpID0+XG4gICAgICAgIGxldCB0aWxlcyA9XG4gICAgICAgICAgSWQuTWFwLmZpbmQoUGllY2UuaWQocCksIHRlcm1zKVxuICAgICAgICAgIHw+IEFueS5pZHNcbiAgICAgICAgICAvKiBOT1RFKGFuZHJldyk6IGRhcmtfaWRzIHdlcmUgb3JpZ2luYWxseSBmaWx0ZXJlZCBoZXJlLlxuICAgICAgICAgICAqIExlYXZpbmcgdGhpcyBjb21tZW50IGluIHBsYWNlIGluIGNhc2UgaXNzdWVzIGluIHRoZVxuICAgICAgICAgICAqIGZ1dHVyZSBhcmUgdHJhY2VkIGJhY2sgdG8gaGVyZS5cbiAgICAgICAgICAgKiB8PiBMaXN0LmZpbHRlcihpZCA9PiBpZCA+PSAwKSovXG4gICAgICAgICAgfD4gTGlzdC5tYXAoaWQgPT4ge1xuICAgICAgICAgICAgICAgbGV0IHQgPSB0aWxlKGlkKTtcbiAgICAgICAgICAgICAgIChpZCwgdC5tb2xkLCBNZWFzdXJlZC5maW5kX3NoYXJkcyh0LCBtYXApKTtcbiAgICAgICAgICAgICB9KTtcbiAgICAgICAgUGllY2VEZWMuaW5kaWNhdGVkKFxuICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgfnJvd3M9bWFwLnJvd3MsXG4gICAgICAgICAgfmNhcmV0PShQaWVjZS5pZChwKSwgaW5kZXgpLFxuICAgICAgICAgIH50aWxlcyxcbiAgICAgICAgICByYW5nZSxcbiAgICAgICAgKTtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcblxuICBsZXQgcmVjIHRhcmdldHMgPSAofmNvbnRhaW5lcl9zaGFyZHM9PywgYnA6IEJhY2twYWNrLnQsIHNlZzogU2VnbWVudC50KSA9PiB7XG4gICAgbGV0IHdpdGhfY29udGFpbmVyX3NoYXJkcyA9ICgocHJlLCBzdWYpIGFzIHNpYnMpID0+XG4gICAgICBzd2l0Y2ggKGNvbnRhaW5lcl9zaGFyZHMpIHtcbiAgICAgIHwgTm9uZSA9PiBzaWJzXG4gICAgICB8IFNvbWUoKGwsIHIpKSA9PiAoW2wsIC4uLnByZV0sIHN1ZiBAIFtyXSlcbiAgICAgIH07XG4gICAgbGV0IHJvb3RfdGFyZ2V0cyA9XG4gICAgICBMaXN0VXRpbC5zcGxpdHMoc2VnKVxuICAgICAgfD4gTGlzdC5jb25jYXRfbWFwKCgobCwgcikpID0+IHtcbiAgICAgICAgICAgbGV0IHNpYnMgPVxuICAgICAgICAgICAgIFNlZ21lbnQuKGluY29tcGxldGVfdGlsZXMobCksIGluY29tcGxldGVfdGlsZXMocikpXG4gICAgICAgICAgICAgfD4gd2l0aF9jb250YWluZXJfc2hhcmRzO1xuICAgICAgICAgICBzd2l0Y2ggKEJhY2twYWNrLnBvcChzaWJzLCBicCkpIHtcbiAgICAgICAgICAgfCBOb25lXG4gICAgICAgICAgIHwgU29tZSgodHJ1ZSwgXywgXykpID0+IFtdXG4gICAgICAgICAgIHwgU29tZShfKSA9PlxuICAgICAgICAgICAgIGxldCBtZWFzdXJlbWVudCA9XG4gICAgICAgICAgICAgICBzd2l0Y2ggKFNpYmxpbmdzLm5laWdoYm9ycygobCwgcikpKSB7XG4gICAgICAgICAgICAgICB8IChOb25lLCBOb25lKSA9PiBmYWlsd2l0aChcImltcG9zc2libGVcIilcbiAgICAgICAgICAgICAgIHwgKF8sIFNvbWUocCkpID0+XG4gICAgICAgICAgICAgICAgIGxldCBtID0gTWVhc3VyZWQuZmluZF9wKHAsIG1hcCk7XG4gICAgICAgICAgICAgICAgIE1lYXN1cmVkLntvcmlnaW46IG0ub3JpZ2luLCBsYXN0OiBtLm9yaWdpbn07XG4gICAgICAgICAgICAgICB8IChTb21lKHApLCBfKSA9PlxuICAgICAgICAgICAgICAgICBsZXQgbSA9IE1lYXN1cmVkLmZpbmRfcChwLCBtYXApO1xuICAgICAgICAgICAgICAgICBNZWFzdXJlZC57b3JpZ2luOiBtLmxhc3QsIGxhc3Q6IG0ubGFzdH07XG4gICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIGxldCBwcm9maWxlID1cbiAgICAgICAgICAgICAgIENhcmV0UG9zRGVjLlByb2ZpbGUue3N0eWxlOiBgU2libGluZywgbWVhc3VyZW1lbnQsIHNvcnQ6IEV4cH07XG4gICAgICAgICAgICAgW0NhcmV0UG9zRGVjLnZpZXcofmZvbnRfbWV0cmljcywgcHJvZmlsZSldO1xuICAgICAgICAgICB9O1xuICAgICAgICAgfSk7XG4gICAgc3dpdGNoIChyb290X3RhcmdldHMpIHtcbiAgICB8IFtfLCAuLi5fXSA9PiByb290X3RhcmdldHNcbiAgICB8IFtdID0+XG4gICAgICBzZWdcbiAgICAgIHw+IExpc3QuZmlsdGVyX21hcChcbiAgICAgICAgICAgZnVuXG4gICAgICAgICAgIHwgUGllY2UuVGlsZSh0KSA9PiBTb21lKHQpXG4gICAgICAgICAgIHwgXyA9PiBOb25lLFxuICAgICAgICAgKVxuICAgICAgfD4gTGlzdC5jb25jYXRfbWFwKCh0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgICAgLy8gVE9ETyhkKTogdW5pZnkgd2l0aCBSZWxhdGl2ZXMubG9jYWxfaW5jb21wbGV0ZV90aWxlc1xuICAgICAgICAgICBUaWxlLmNvbnRhaW5lZF9jaGlsZHJlbih0KVxuICAgICAgICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoKChsLCBzZWcsIHIpKSA9PlxuICAgICAgICAgICAgICAgIHRhcmdldHMofmNvbnRhaW5lcl9zaGFyZHM9KGwsIHIpLCBicCwgc2VnKVxuICAgICAgICAgICAgICApXG4gICAgICAgICB9KVxuICAgIH07XG4gIH07XG5cbiAgbGV0IGJhY2twYWNrID0gKHo6IFppcHBlci50KTogbGlzdChOb2RlLnQpID0+IFtcbiAgICBCYWNrcGFja1ZpZXcudmlldyh+Zm9udF9tZXRyaWNzLCB+b3JpZ2luPVppcHBlci5jYXJldF9wb2ludChtYXAsIHopLCB6KSxcbiAgXTtcblxuICBsZXQgdGFyZ2V0cycgPSAoYmFja3BhY2ssIHNlZykgPT4ge1xuICAgIHNob3dfYmFja3BhY2tfdGFyZ2V0cyAmJiBCYWNrcGFjay5yZXN0cmljdGVkKGJhY2twYWNrKVxuICAgICAgPyB0YXJnZXRzKGJhY2twYWNrLCBzZWcpIDogW107XG4gIH07XG5cbiAgbGV0IHRlcm1fZGVjb3JhdGlvbiA9XG4gICAgICAoXG4gICAgICAgIH5pZDogSWQudCxcbiAgICAgICAgZGVjbzpcbiAgICAgICAgICAoKE1lYXN1cmVkLlBvaW50LnQsIE1lYXN1cmVkLlBvaW50LnQsIFN2Z1V0aWwuUGF0aC50KSkgPT4gTm9kZS50LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IChwX2wsIHBfcikgPSBUZXJtUmFuZ2VzLmZpbmQoaWQsIHRlcm1fcmFuZ2VzKTtcbiAgICBsZXQgbCA9IE1lYXN1cmVkLmZpbmRfcChwX2wsIG1hcCkub3JpZ2luO1xuICAgIGxldCByID0gTWVhc3VyZWQuZmluZF9wKHBfciwgbWFwKS5sYXN0O1xuICAgIG9wZW4gU3ZnVXRpbC5QYXRoO1xuICAgIGxldCByX2VkZ2UgPVxuICAgICAgTGlzdFV0aWwucmFuZ2UofmxvPWwucm93LCByLnJvdyArIDEpXG4gICAgICB8PiBMaXN0LmNvbmNhdF9tYXAoaSA9PiB7XG4gICAgICAgICAgIGxldCByb3cgPSBNZWFzdXJlZC5Sb3dzLmZpbmQoaSwgbWFwLnJvd3MpO1xuICAgICAgICAgICBbaCh+eD1pID09IHIucm93ID8gci5jb2wgOiByb3cubWF4X2NvbCksIHZfKH5keT0xKV07XG4gICAgICAgICB9KTtcbiAgICBsZXQgbF9lZGdlID1cbiAgICAgIExpc3RVdGlsLnJhbmdlKH5sbz1sLnJvdywgci5yb3cgKyAxKVxuICAgICAgfD4gTGlzdC5yZXZfbWFwKGkgPT4ge1xuICAgICAgICAgICBsZXQgcm93ID0gTWVhc3VyZWQuUm93cy5maW5kKGksIG1hcC5yb3dzKTtcbiAgICAgICAgICAgW2gofng9aSA9PSBsLnJvdyA/IGwuY29sIDogcm93LmluZGVudCksIHZfKH5keT0tMSldO1xuICAgICAgICAgfSlcbiAgICAgIHw+IExpc3QuY29uY2F0O1xuICAgIGxldCBwYXRoID1cbiAgICAgIFttKH54PWwuY29sLCB+eT1sLnJvdyksIC4uLnJfZWRnZV1cbiAgICAgIEAgbF9lZGdlXG4gICAgICBAIFtaXVxuICAgICAgfD4gdHJhbnNsYXRlKHtkeDogRmxvYXQub2ZfaW50KC0gbC5jb2wpLCBkeTogRmxvYXQub2ZfaW50KC0gbC5yb3cpfSk7XG4gICAgKGwsIHIsIHBhdGgpIHw+IGRlY287XG4gIH07XG5cbiAgbGV0IHRlcm1faGlnaGxpZ2h0ID0gKH5jbHNzOiBsaXN0KHN0cmluZyksIGlkOiBJZC50KSA9PiB7XG4gICAgdGVybV9kZWNvcmF0aW9uKH5pZCwgKChvcmlnaW4sIGxhc3QsIHBhdGgpKSA9PlxuICAgICAgRGVjVXRpbC5jb2RlX3N2Z19zaXplZChcbiAgICAgICAgfmZvbnRfbWV0cmljcyxcbiAgICAgICAgfm1lYXN1cmVtZW50PXtvcmlnaW4sIGxhc3R9LFxuICAgICAgICB+YmFzZV9jbHM9Y2xzcyxcbiAgICAgICAgcGF0aCxcbiAgICAgIClcbiAgICApO1xuICB9O1xuXG4gIGxldCBjb2xvcl9oaWdobGlnaHRzID0gKGNvbG9yaW5nczogbGlzdCgoSWQudCwgc3RyaW5nKSkpID0+IHtcbiAgICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgICAoKGlkLCBjb2xvcikpID0+XG4gICAgICAgIC8qIEhBQ0soYW5kcmV3KTogQ2F0Y2hpbmcgZXhjZXB0aW9ucyBzaW5jZSB3aGVuIHNob3dpbmdcbiAgICAgICAgICAgdGVybSBoaWdobGlnaHRzIHdoZW4gdGhlIGJhY2twYWNrIGlzIG5vbi1lbXB0eSwgdGhlXG4gICAgICAgICAgIHByb3NwZWN0aXZlIGNvbXBsZXRpb24gbWF5IGhhdmUgZGlmZmVyZW50IHRlcm0gaWRzXG4gICAgICAgICAgIHRoYW4gdGhlIGRpc3BsYXllZCBjb2RlLiAqL1xuICAgICAgICB0cnkoU29tZSh0ZXJtX2hpZ2hsaWdodCh+Y2xzcz1bXCJoaWdobGlnaHQtY29kZS1cIiArKyBjb2xvcl0sIGlkKSkpIHtcbiAgICAgICAgfCBOb3RfZm91bmQgPT4gTm9uZVxuICAgICAgICB9LFxuICAgICAgY29sb3JpbmdzLFxuICAgICk7XG4gIH07XG5cbiAgLy8gZmFzdGVyIGluZm9fbWFwIHRyYXZlcnNhbFxuICBsZXQgZXJyX2hvbGVzID0gZXJyb3JfaWRzID0+XG4gICAgTGlzdC5tYXAodGVybV9oaWdobGlnaHQofmNsc3M9W1wiZXJyLWhvbGVcIl0pLCBlcnJvcl9pZHMpO1xuXG4gIGxldCBuZXh0X3N0ZXBzID0gKG5leHRfc3RlcHMsIH5pbmplY3QpID0+IHtcbiAgICBsZXQgdGlsZXMgPSBMaXN0LmZpbHRlcl9tYXAoVGlsZU1hcC5maW5kX29wdChfLCB0aWxlcyksIG5leHRfc3RlcHMpO1xuICAgIExpc3QubWFwaShcbiAgICAgIChpLCB0OiBUaWxlLnQpID0+IHtcbiAgICAgICAgbGV0IGlkID0gVGlsZS5pZCh0KTtcbiAgICAgICAgbGV0IG1vbGQgPSB0Lm1vbGQ7XG4gICAgICAgIGxldCBzaGFyZHMgPSBNZWFzdXJlZC5maW5kX3NoYXJkcyh0LCBtYXApO1xuICAgICAgICBQaWVjZURlYy5uZXh0X3N0ZXBfc2hhcmRzX2luZGljYXRlZChcbiAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgIH5jYXJldD0oSWQuaW52YWxpZCwgMCksXG4gICAgICAgICAgfmluamVjdD0oKSA9PiBpbmplY3QoaSksXG4gICAgICAgICAgKGlkLCBtb2xkLCBzaGFyZHMpLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIHRpbGVzLFxuICAgIClcbiAgICB8PiBMaXN0LmZsYXR0ZW47XG4gIH07XG5cbiAgbGV0IHRha2VuX3N0ZXAgPSB0YWtlbl9zdGVwID0+IHtcbiAgICBsZXQgdGlsZXMgPVxuICAgICAgTGlzdC5maWx0ZXJfbWFwKFxuICAgICAgICBUaWxlTWFwLmZpbmRfb3B0KF8sIHRpbGVzKSxcbiAgICAgICAgdGFrZW5fc3RlcCB8PiBPcHRpb24udG9fbGlzdCxcbiAgICAgICk7XG4gICAgTGlzdC5tYXAoXG4gICAgICAodDogVGlsZS50KSA9PiB7XG4gICAgICAgIGxldCBpZCA9IFRpbGUuaWQodCk7XG4gICAgICAgIGxldCBtb2xkID0gdC5tb2xkO1xuICAgICAgICBsZXQgc2hhcmRzID0gTWVhc3VyZWQuZmluZF9zaGFyZHModCwgbWFwKTtcbiAgICAgICAgUGllY2VEZWMudGFrZW5fc3RlcF9zaGFyZHNfaW5kaWNhdGVkKFxuICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgfmNhcmV0PShJZC5pbnZhbGlkLCAwKSxcbiAgICAgICAgICAoaWQsIG1vbGQsIHNoYXJkcyksXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgdGlsZXMsXG4gICAgKVxuICAgIHw+IExpc3QuZmxhdHRlbjtcbiAgfTtcblxuICBsZXQgc3RhdGljcyA9IGVoID0+IGVycl9ob2xlcyhlaCk7XG5cbiAgbGV0IGVkaXRvciA9ICh6aXBwZXIsIHNlbF9zZWcsIHNlbGVjdGVkKSA9PlxuICAgIHNlbGVjdGVkXG4gICAgICA/IExpc3QuY29uY2F0KFtcbiAgICAgICAgICBjYXJldCh6aXBwZXIpLFxuICAgICAgICAgIGluZGljYXRlZF9waWVjZV9kZWNvKHppcHBlciksXG4gICAgICAgICAgc2VsZWN0ZWRfcGllY2VzKHppcHBlciksXG4gICAgICAgICAgYmFja3BhY2soemlwcGVyKSxcbiAgICAgICAgICB0YXJnZXRzJyh6aXBwZXIuYmFja3BhY2ssIHNlbF9zZWcpLFxuICAgICAgICBdKVxuICAgICAgOiBbXTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIFV0aWwuUmVzdWx0LlN5bnRheDtcbm9wZW4gSGF6M2xjb3JlO1xuXG50eXBlIG1vZGVsID0ge1xuICAvLyBVcGRhdGU6XG4gIGVkaXRvcjogRWRpdG9yLnQsXG4gIC8vIENhbGN1bGF0ZTpcbiAgc3RhdGljczogQ2FjaGVkU3RhdGljcy5zdGF0aWNzLFxufTtcblxudHlwZSBhY3Rpb24gPSBBY3Rpb24udDtcblxubGV0IHVwZGF0ZSA9ICh+c2V0dGluZ3MsIGFjdGlvbiwgbW9kZWwpID0+IHtcbiAgbGV0KyBlZGl0b3IgPSBQZXJmb3JtLmdvKH5zZXR0aW5ncywgYWN0aW9uLCBtb2RlbC5lZGl0b3IpO1xuICB7ZWRpdG9yLCBzdGF0aWNzOiBtb2RlbC5zdGF0aWNzfTtcbn07XG5cbmxldCBjYWxjdWxhdGUgPSAofnNldHRpbmdzLCB+c3RpdGNoLCB7ZWRpdG9yLCBzdGF0aWNzfSBhcyBtb2RlbCkgPT4ge1xuICBsZXQgdGVybSA9IE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oZWRpdG9yLnN0YXRlLnppcHBlcikgfD4gZnN0IHw+IHN0aXRjaDtcbiAgaWYgKEV4cC5mYXN0X2VxdWFsKHRlcm0sIHN0YXRpY3MudGVybSkpIHtcbiAgICBtb2RlbDtcbiAgfSBlbHNlIHtcbiAgICB7XG4gICAgICBlZGl0b3IsXG4gICAgICBzdGF0aWNzOiBDYWNoZWRTdGF0aWNzLnN0YXRpY3Nfb2ZfdGVybSh+c2V0dGluZ3MsIHRlcm0sIGVkaXRvciksXG4gICAgfTtcbiAgfTtcbn07XG5cbi8vIFRoZXJlIGFyZSBubyBldmVudHMgZm9yIGEgcmVhZC1vbmx5IGVkaXRvclxudHlwZSBldmVudDtcblxuLy8gcmVhZC1vbmx5IGVkaXRvcnMgY2Fubm90IGJlIHNlbGVjdGVkXG50eXBlIHNlbGVjdGlvbjtcblxubGV0IHZpZXcgPVxuICAgICh+Z2xvYmFscywgfm92ZXJsYXlzOiBsaXN0KE5vZGUudCk9W10sIH5zb3J0PVNvcnQucm9vdCwgbW9kZWw6IG1vZGVsKSA9PiB7XG4gIGxldCBjb2RlX3RleHRfdmlldyA9IENvZGUudmlldyh+Z2xvYmFscywgfnNvcnQsIG1vZGVsLmVkaXRvcik7XG4gIGxldCBzdGF0aWNzX2RlY29zID0ge1xuICAgIG1vZHVsZSBEZWNvID1cbiAgICAgIERlY28uRGVjbyh7XG4gICAgICAgIGxldCBnbG9iYWxzID0gZ2xvYmFscztcbiAgICAgICAgbGV0IGVkaXRvciA9IG1vZGVsLmVkaXRvcjtcbiAgICAgIH0pO1xuICAgIERlY28uc3RhdGljcyhtb2RlbC5zdGF0aWNzLmVycm9yX2lkcyk7XG4gIH07XG4gIE5vZGUuZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc2VzKFtcImNvZGUtY29udGFpbmVyXCJdKV0pLFxuICAgIFtjb2RlX3RleHRfdmlld10gQCBzdGF0aWNzX2RlY29zIEAgb3ZlcmxheXMsXG4gICk7XG59O1xuIiwib3BlbiBKc19vZl9vY2FtbDtcbm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xudHlwZSBlZGl0b3JfaWQgPSBzdHJpbmc7XG5cbnR5cGUgbW9kZWwgPSBSZWFkT25seUVkaXRvci5tb2RlbDtcblxudHlwZSBhY3Rpb24gPSBSZWFkT25seUVkaXRvci5hY3Rpb247XG5cbmxldCB1cGRhdGUgPSBSZWFkT25seUVkaXRvci51cGRhdGU7XG5cbmxldCBjYWxjdWxhdGUgPSBSZWFkT25seUVkaXRvci5jYWxjdWxhdGU7XG5cbnR5cGUgZXZlbnQgPVxuICB8IE1ha2VBY3RpdmU7XG5cbm1vZHVsZSBWaWV3ID0ge1xuICBsZXQgZ2V0X2dvYWwgPVxuICAgICAgKFxuICAgICAgICB+Zm9udF9tZXRyaWNzOiBGb250TWV0cmljcy50LFxuICAgICAgICB0ZXh0X2JveDogSnMudChEb21faHRtbC5lbGVtZW50KSxcbiAgICAgICAgZTogSnMudChEb21faHRtbC5tb3VzZUV2ZW50KSxcbiAgICAgICkgPT4ge1xuICAgIGxldCByZWN0ID0gdGV4dF9ib3gjI2dldEJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBsZXQgZ29hbF94ID0gZmxvYXRfb2ZfaW50KGUjIy5jbGllbnRYKTtcbiAgICBsZXQgZ29hbF95ID0gZmxvYXRfb2ZfaW50KGUjIy5jbGllbnRZKTtcbiAgICBNZWFzdXJlZC5Qb2ludC57XG4gICAgICByb3c6IEZsb2F0LnRvX2ludCgoZ29hbF95IC0uIHJlY3QjIy50b3ApIC8uIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0KSxcbiAgICAgIGNvbDpcbiAgICAgICAgRmxvYXQuKFxuICAgICAgICAgIHRvX2ludChyb3VuZCgoZ29hbF94IC0uIHJlY3QjIy5sZWZ0KSAvLiBmb250X21ldHJpY3MuY29sX3dpZHRoKSlcbiAgICAgICAgKSxcbiAgICB9O1xuICB9O1xuXG4gIGxldCBtb3VzZWRvd25fb3ZlcmxheSA9ICh+Z2xvYmFsczogR2xvYmFscy50LCB+aW5qZWN0KSA9PlxuICAgIE5vZGUuZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShcbiAgICAgICAgICBBdHRyLltcbiAgICAgICAgICAgIGlkKFwibW91c2Vkb3duLW92ZXJsYXlcIiksXG4gICAgICAgICAgICBvbl9tb3VzZXVwKF8gPT4gZ2xvYmFscy5pbmplY3RfZ2xvYmFsKFNldE1vdXNlZG93bihmYWxzZSkpKSxcbiAgICAgICAgICAgIG9uX21vdXNlbW92ZShlID0+IHtcbiAgICAgICAgICAgICAgbGV0IG1vdXNlX2hhbmRsZXIgPVxuICAgICAgICAgICAgICAgIGUjIy50YXJnZXQgfD4gSnMuT3B0LmdldChfLCBfID0+IGZhaWx3aXRoKFwibm8gdGFyZ2V0XCIpKTtcbiAgICAgICAgICAgICAgbGV0IHRleHRfYm94ID1cbiAgICAgICAgICAgICAgICBKc1V0aWwuZ2V0X2NoaWxkX3dpdGhfY2xhc3MoXG4gICAgICAgICAgICAgICAgICBtb3VzZV9oYW5kbGVyIyMucGFyZW50Tm9kZVxuICAgICAgICAgICAgICAgICAgfD4gSnMuT3B0LmdldChfLCBfID0+IGZhaWx3aXRoKFwiXCIpKVxuICAgICAgICAgICAgICAgICAgfD4gSnMuVW5zYWZlLmNvZXJjZSxcbiAgICAgICAgICAgICAgICAgIFwiY29kZS1jb250YWluZXJcIixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfD4gT3B0aW9uLmdldDtcbiAgICAgICAgICAgICAgbGV0IGdvYWwgPVxuICAgICAgICAgICAgICAgIGdldF9nb2FsKH5mb250X21ldHJpY3M9Z2xvYmFscy5mb250X21ldHJpY3MsIHRleHRfYm94LCBlKTtcbiAgICAgICAgICAgICAgaW5qZWN0KEFjdGlvbi5TZWxlY3QoUmVzaXplKEdvYWwoUG9pbnQoZ29hbCkpKSkpO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgXSxcbiAgICAgICAgKSxcbiAgICAgIFtdLFxuICAgICk7XG5cbiAgbGV0IG1vdXNlZG93bl9oYW5kbGVyID0gKH5nbG9iYWxzOiBHbG9iYWxzLnQsIH5zaWduYWwsIH5pbmplY3QsIGV2dCkgPT4ge1xuICAgIGxldCBnb2FsID1cbiAgICAgIGdldF9nb2FsKFxuICAgICAgICB+Zm9udF9tZXRyaWNzPWdsb2JhbHMuZm9udF9tZXRyaWNzLFxuICAgICAgICBldnQjIy5jdXJyZW50VGFyZ2V0XG4gICAgICAgIHw+IEpzLk9wdC5nZXQoXywgXyA9PiBmYWlsd2l0aChcIlwiKSlcbiAgICAgICAgfD4gSnNVdGlsLmdldF9jaGlsZF93aXRoX2NsYXNzKF8sIFwiY29kZS1jb250YWluZXJcIilcbiAgICAgICAgfD4gT3B0aW9uLmdldCxcbiAgICAgICAgZXZ0LFxuICAgICAgKTtcbiAgICBzd2l0Y2ggKEpzVXRpbC5jdHJsX2hlbGQoZXZ0KSwgSnNVdGlsLm51bV9jbGlja3MoZXZ0KSkge1xuICAgIHwgKHRydWUsIF8pID0+XG4gICAgICBFZmZlY3QuTWFueShbXG4gICAgICAgIHNpZ25hbChNYWtlQWN0aXZlKSxcbiAgICAgICAgaW5qZWN0KEFjdGlvbi5Nb3ZlKEdvYWwoUG9pbnQoZ29hbCkpKSksXG4gICAgICAgIGluamVjdChBY3Rpb24uSnVtcChCaW5kaW5nU2l0ZU9mSW5kaWNhdGVkVmFyKSksXG4gICAgICBdKVxuICAgIHwgKGZhbHNlLCAxKSA9PlxuICAgICAgRWZmZWN0Lk1hbnkoW1xuICAgICAgICBnbG9iYWxzLmluamVjdF9nbG9iYWwoU2V0TW91c2Vkb3duKHRydWUpKSxcbiAgICAgICAgc2lnbmFsKE1ha2VBY3RpdmUpLFxuICAgICAgICBpbmplY3QoQWN0aW9uLk1vdmUoR29hbChQb2ludChnb2FsKSkpKSxcbiAgICAgIF0pXG4gICAgfCAoZmFsc2UsIDIpID0+IGluamVjdChBY3Rpb24uU2VsZWN0KFRpbGUoQ3VycmVudCkpKVxuICAgIHwgKGZhbHNlLCAzIHwgXykgPT4gaW5qZWN0KEFjdGlvbi5TZWxlY3QoU21hcnQpKVxuICAgIH07XG4gIH07XG5cbiAgbGV0IHZpZXcgPVxuICAgICAgKFxuICAgICAgICB+Z2xvYmFsczogR2xvYmFscy50LFxuICAgICAgICB+c2lnbmFsOiBldmVudCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfmluamVjdDogYWN0aW9uID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+c2VsZWN0ZWQ6IGJvb2wsXG4gICAgICAgIH5oaWdobGlnaHRzOiBvcHRpb24oQ29sb3JTdGVwcy5jb2xvck1hcCksXG4gICAgICAgIH5vdmVybGF5czogbGlzdChOb2RlLnQpPVtdLFxuICAgICAgICB+c29ydD0/LFxuICAgICAgICBtb2RlbDogbW9kZWwsXG4gICAgICApID0+IHtcbiAgICBsZXQgZWRpdF9kZWNvcyA9IHtcbiAgICAgIG1vZHVsZSBEZWNvID1cbiAgICAgICAgRGVjby5EZWNvKHtcbiAgICAgICAgICBsZXQgZWRpdG9yID0gbW9kZWwuZWRpdG9yO1xuICAgICAgICAgIGxldCBnbG9iYWxzID0gZ2xvYmFscztcbiAgICAgICAgfSk7XG4gICAgICBEZWNvLmVkaXRvcihcbiAgICAgICAgbW9kZWwuZWRpdG9yLnN0YXRlLnppcHBlcixcbiAgICAgICAgbW9kZWwuZWRpdG9yLnN0YXRlLm1ldGEuc2VnbWVudCxcbiAgICAgICAgc2VsZWN0ZWQsXG4gICAgICApXG4gICAgICBAIChcbiAgICAgICAgc3dpdGNoIChoaWdobGlnaHRzKSB7XG4gICAgICAgIHwgU29tZShjb2xvck1hcCkgPT5cbiAgICAgICAgICBEZWNvLmNvbG9yX2hpZ2hsaWdodHMoQ29sb3JTdGVwcy50b19saXN0KGNvbG9yTWFwKSlcbiAgICAgICAgfCBfID0+IFtdXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfTtcbiAgICBsZXQgb3ZlcmxheXMgPSBlZGl0X2RlY29zIEAgb3ZlcmxheXM7XG4gICAgbGV0IGNvZGVfdmlldyA9IFJlYWRPbmx5RWRpdG9yLnZpZXcofmdsb2JhbHMsIH5vdmVybGF5cywgfnNvcnQ/LCBtb2RlbCk7XG4gICAgbGV0IG1vdXNlZG93bl9vdmVybGF5ID1cbiAgICAgIHNlbGVjdGVkICYmIGdsb2JhbHMubW91c2Vkb3duXG4gICAgICAgID8gW21vdXNlZG93bl9vdmVybGF5KH5nbG9iYWxzLCB+aW5qZWN0KV0gOiBbXTtcbiAgICBsZXQgb25fbW91c2Vkb3duID0gbW91c2Vkb3duX2hhbmRsZXIofmdsb2JhbHMsIH5zaWduYWwsIH5pbmplY3QpO1xuICAgIE5vZGUuZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiXSksXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcImNvZGUtZWRpdG9yXCJdKSxcbiAgICAgICAgICBBdHRyLm9uX21vdXNlZG93bihvbl9tb3VzZWRvd24pLFxuICAgICAgICBdKSxcbiAgICAgIG1vdXNlZG93bl9vdmVybGF5IEAgW2NvZGVfdmlld10sXG4gICAgKTtcbiAgfTtcbn07XG5cbmxldCB2aWV3ID0gVmlldy52aWV3O1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbm1vZHVsZSBTdGVwcGVkID0ge1xuICB0eXBlIG1vZGVsID0ge1xuICAgIGVkaXRvcjogUmVhZE9ubHlFZGl0b3IubW9kZWwsXG4gICAgc3RlcDogb3B0aW9uKEV2YWx1YXRvclN0ZXAuc3RlcCksXG4gICAgc3RlcF9pZDogb3B0aW9uKElkLnQpLFxuICB9O1xuXG4gIHR5cGUgYWN0aW9uID0gUmVhZE9ubHlFZGl0b3IuYWN0aW9uO1xuXG4gIHR5cGUgZXZlbnQgPSBSZWFkT25seUVkaXRvci5ldmVudDtcblxuICB0eXBlIHNlbGVjdGlvbiA9IFJlYWRPbmx5RWRpdG9yLnNlbGVjdGlvbjtcblxuICBsZXQgdmlldyA9ICh+Z2xvYmFsczogR2xvYmFscy50LCB+b3ZlcmxheXM9W10sIG1vZGVsOiBtb2RlbCkgPT4ge1xuICAgIGxldCBvdmVybGF5cyA9IHtcbiAgICAgIG1vZHVsZSBEZWNvID1cbiAgICAgICAgRGVjby5EZWNvKHtcbiAgICAgICAgICBsZXQgZWRpdG9yID0gbW9kZWwuZWRpdG9yLmVkaXRvcjtcbiAgICAgICAgICBsZXQgZ2xvYmFscyA9IGdsb2JhbHM7XG4gICAgICAgIH0pO1xuICAgICAgb3ZlcmxheXMgQCBEZWNvLnRha2VuX3N0ZXAobW9kZWwuc3RlcF9pZCk7XG4gICAgfTtcbiAgICBSZWFkT25seUVkaXRvci52aWV3KH5nbG9iYWxzLCB+b3ZlcmxheXMsIG1vZGVsLmVkaXRvcik7XG4gIH07XG59O1xuXG5tb2R1bGUgU3RlcHBhYmxlID0ge1xuICB0eXBlIG1vZGVsID0ge1xuICAgIGVkaXRvcjogQ29kZUVkaXRvci5tb2RlbCxcbiAgICBuZXh0X3N0ZXBzOiBsaXN0KElkLnQpLFxuICB9O1xuXG4gIHR5cGUgYWN0aW9uID0gQ29kZUVkaXRvci5hY3Rpb247XG5cbiAgdHlwZSBldmVudCA9XG4gICAgfCBUYWtlU3RlcChpbnQpO1xuXG4gIGxldCB2aWV3ID1cbiAgICAgIChcbiAgICAgICAgfmdsb2JhbHM6IEdsb2JhbHMudCxcbiAgICAgICAgfnNpZ25hbDogZXZlbnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5vdmVybGF5cz1bXSxcbiAgICAgICAgbW9kZWw6IG1vZGVsLFxuICAgICAgKSA9PiB7XG4gICAgbGV0IG92ZXJsYXlzID0ge1xuICAgICAgbW9kdWxlIERlY28gPVxuICAgICAgICBEZWNvLkRlY28oe1xuICAgICAgICAgIGxldCBlZGl0b3IgPSBtb2RlbC5lZGl0b3IuZWRpdG9yO1xuICAgICAgICAgIGxldCBnbG9iYWxzID0gZ2xvYmFscztcbiAgICAgICAgfSk7XG4gICAgICBvdmVybGF5c1xuICAgICAgQCBEZWNvLm5leHRfc3RlcHMobW9kZWwubmV4dF9zdGVwcywgfmluamVjdD14ID0+IHNpZ25hbChUYWtlU3RlcCh4KSkpO1xuICAgIH07XG4gICAgUmVhZE9ubHlFZGl0b3Iudmlldyh+Z2xvYmFscywgfm92ZXJsYXlzLCBtb2RlbC5lZGl0b3IpO1xuICB9O1xufTtcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcbm9wZW4gRWRpdG9ycztcbmxldCBpbWcgPSBjcmVhdGUoXCJpbWdcIik7XG5cbmxldCBzbGlkZSA9IChoZWFkZXIsIGNvbnRlbnQpID0+XG4gIGRpdihcbiAgICB+a2V5PVwic2xpZGVcIixcbiAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInNsaWRlXCIpLFxuICAgIFtcbiAgICAgIGgxKH5rZXk9XCJoZWFkZXJcIiwgfmF0dHI9QXR0ci5jbGFzc18oXCJzbGlkZS1oZWFkZXJcIiksIFt0ZXh0KGhlYWRlcildKSxcbiAgICAgIGRpdih+a2V5PVwiY29udGVudFwiLCB+YXR0cj1BdHRyLmNsYXNzXyhcInNsaWRlLWNvbnRlbnRcIiksIGNvbnRlbnQpLFxuICAgIF0sXG4gICk7XG5cbmxldCBjb2RlID0gY29udGVudCA9PiBzcGFuKH5hdHRyPUF0dHIuY2xhc3NfKFwiY29kZVwiKSwgW3RleHQoY29udGVudCldKTtcblxubGV0IGVtID0gY29udGVudCA9PiBzcGFuKH5hdHRyPUF0dHIuY2xhc3NfKFwiZW1cIiksIFt0ZXh0KGNvbnRlbnQpXSk7XG5cbmxldCBnZXRfY29udGVudCA9XG4gIGZ1blxuICB8IERvY3VtZW50YXRpb24oXCJQcm9ncmFtbWluZyBFeHByZXNzaXZlbHlcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiUHJvZ3JhbW1pbmcgRXhwcmVzc2l2ZWx5XCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiWW91IG1pZ2h0IG5vdCBoYXZlIHJlYWxpemVkIGl0LCBidXQgeW91IHdyb3RlIHlvdXJcbiAgICAgIGZpcnN0IGNvbXB1dGVyIHByb2dyYW1zIGluIGdyYWRlIHNjaG9vbCBpbiB0aGUgZm9ybSBvZlxuICAgICAgYXJpdGhtZXRpYyBleHByZXNzaW9ucyFcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFwiRm9yIGV4YW1wbGUsIGVudGVyIHRoZSBwcm9ncmFtIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIyICsgMlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGluIHRoZSBleHByZXNzaW9uIGVkaXRvciBiZWxvdy5cbiAgICAgICAgICAgICAgSGF6ZWwgb3BlcmF0ZXMgbGlrZSBhIGNhbGN1bGF0b3IsIGNvbXB1dGluZyB0aGUgdmFsdWUgb2YgeW91ciBleHByZXNzaW9uIGJ5IGVxdWF0aW9uYWxseSBzaW1wbGlmeWluZyBpdCAoaS5lLiBldmFsdWF0aW5nIGl0KSwgaGVyZSB0byB0aGUgaW50ZWdlciB2YWx1ZSBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiNFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuIFwiKSxcbiAgICAgICAgICAgIHRleHQoXCJUaGUgc3ltYm9sIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCLiiaFcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGlzIHByb25vdW5jZWQgXFxcImlzIGVxdWl2YWxlbnQgdG9cXFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb21wb3NpbmcgQXJpdGhtZXRpYyBFeHByZXNzaW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJDb21wb3NpbmcgQXJpdGhtZXRpYyBFeHByZXNzaW9uc1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFwiQXJpdGhtZXRpYyBleHByZXNzaW9ucyBhcmUgY29uc3RydWN0ZWQgXCIpLFxuICAgICAgICAgICAgZW0oXCJjb21wb3NpdGlvbmFsbHlcIiksXG4gICAgICAgICAgICB0ZXh0KFwiOiBieSBjb21iaW5pbmcgc21hbGxlciBleHByZXNzaW9ucyB1c2luZyB2YXJpb3VzIFwiKSxcbiAgICAgICAgICAgIGVtKFwib3BlcmF0b3JzXCIpLFxuICAgICAgICAgICAgdGV4dChcIiwgbGlrZSBhZGRpdGlvbiAoXCIpLFxuICAgICAgICAgICAgY29kZShcIitcIiksXG4gICAgICAgICAgICB0ZXh0KFwiKSBhbmQgbXVsdGlwbGljYXRpb24gKFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCIqXCIpLFxuICAgICAgICAgICAgdGV4dChcIiksIFwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIHRvIGZvcm0gbGFyZ2VyIGV4cHJlc3Npb25zLiBUaGUgc21hbGxlc3QgYXJpdGhtZXRpYyBleHByZXNzaW9ucyBhcmUgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZW0oXCJudW1iZXIgbGl0ZXJhbHNcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGxpa2UgXCIpLFxuICAgICAgICAgICAgY29kZShcIjJcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGFuZCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiNDJcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXCJGb3IgZXhhbXBsZSwgZW50ZXIgXCIpLFxuICAgICAgICAgICAgY29kZShcIjIgKiAzICsgNCAqIDVcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIiBpbiB0aGUgZXhwcmVzc2lvbiBlZGl0b3IgYmVsb3csIG9ic2VydmluZyB0aGF0IGl0cyB2YWx1ZSBpcyBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiMjZcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIFRoZSByZWFzb24gaXMgYmVjYXVzZSBvZiB0aGUgZmFtaWxpYXIgb3JkZXIgb2Ygb3BlcmF0aW9uczogbXVsdGlwbGljYXRpb24gcHJlY2VkZXMgYWRkaXRpb24uXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgQnkgcnVubmluZyB5b3VyIGN1cnNvciB0aHJvdWdoIHRoaXMgcHJvZ3JhbSwgb2JzZXJ2ZSBob3cgSGF6ZWwncyBjdXJzb3IgZGVjb3JhdGlvbnMgZGVtb25zdHJhdGUgdGhpcyBvcmRlciBvZiBvcGVyYXRpb25zIGJ5IGdyb3VwaW5nIHRvZ2V0aGVyIHRoZSBvcGVyYW5kcyBvZiBlYWNoIG9wZXJhdG9yLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb21wdXRpbmcgRXF1YXRpb25hbGx5XCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkNvbXB1dGluZyBFcXVhdGlvbmFsbHlcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIlRvIHByb3ZlIHRoYXQgXCIpLFxuICAgICAgICAgICAgY29kZShcIjIgKiAzICsgNCAqIDUg4omhIDI2XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaW4gZ3JhZGUgc2Nob29sLCB3ZSB3b3VsZCBoYXZlIHdyaXR0ZW4gb3V0IGEgc2VyaWVzIG9mIGVxdWF0aW9uYWwgc3RlcHMsIGVhY2ggc2ltcGxpZnlpbmcgdGhlIGV4cHJlc3Npb24gZnJvbSB0aGUgcHJldmlvdXMgc3RlcCBieSBwZXJmb3JtaW5nIG9uZSBlbGVtZW50YXJ5IGFyaXRobWV0aWMgY29tcHV0YXRpb24gYXQgYSB0aW1lLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiVXNlIEhhemVsJ3Mgc3RlcHBlciBieSBjbGlja2luZyB0aGUgYnV0dG9uIHRvIHRoZSByaWdodCBvZiB0aGUgcmVzdWx0IGJlbG93IGFuZCBpbnRlcmFjdGl2ZWx5IHByb3ZlIHRoYXQgb3VyIGV2YWx1YXRpb24gdG8gXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjI2XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaXMgY29ycmVjdCBvbmUgZWxlbWVudGFyeSBhcml0aG1ldGljIHN0ZXAgYXQgYSB0aW1lLiBUaGlzIHByb29mIGlzIHRoZSBlc3NlbmNlIG9mIGNvbXB1dGF0aW9uIVwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJWYXJpYWJsZXNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiVmFyaWFibGVzXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiQXMgaXQgdHVybnMgb3V0LCB5b3UgY2FuIGVucmljaCBhcml0aG1ldGljIGV4cHJlc3Npb25zIHRvIGdvIGZyb20gc2ltcGxlIGludGVnZXIgY29tcHV0YXRpb25zIHRvIGdlbmVyYWwtcHVycG9zZSBjb21wdXRhdGlvbnMhIE92ZXIgdGhlIG5leHQgc2V2ZXJhbCBzbGlkZXMsIHdlIHdpbGwgc2VlIGhvdyB0aGlzIHdvcmtzLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiT3VyIGZpcnN0IHN0ZXAgaXMgdG8gaW50cm9kdWNlIGEgd2F5IHRvIGFiYnJldmlhdGUgZXhwcmVzc2lvbnMgdXNpbmcgdmFyaWFibGVzLiBUeXBlIHRoZSBleHByZXNzaW9uIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJsZXQgeCA9IDIgKiAzIGluIHggKyAxXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgaW50byB0aGUgZXhwcmVzc2lvbiBlZGl0b3IgYmVsb3csIG9ic2VydmluZyB0aGF0IGl0IGV2YWx1YXRlcyB0byBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiN1wiKSxcbiAgICAgICAgICAgIHRleHQoXCIuIFlvdSBjYW4gaW5zZXJ0IGEgbmV3IGxpbmUgYWZ0ZXIgdGhlIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJpblwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGtleXdvcmQgdG8gbWFrZSB0aGUgcHJvZ3JhbSBtb3JlIGlkaW9tYXRpYyAoaS5lLiByZWFkYWJsZSkuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJWYXJpYWJsZXMgYXJlIGdpdmVuIGNvbXB1dGF0aW9uYWwgbWVhbmluZyBzaW1wbHkgYnkgc3Vic3RpdHV0aW9uLiBVc2UgdGhlIHN0ZXBwZXIgdG8gc2VlIGhvdyB0aGlzIHdvcmtzLlwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJDb21wb3NpdGlvbmFsaXR5XCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkNvbXBvc2l0aW9uYWxpdHlcIixcbiAgICAgICAgW1xuICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICBcIkxldCBleHByZXNzaW9ucyBhcmUgZXhwcmVzc2lvbnMsIGp1c3QgbGlrZSBhcml0aG1ldGljIGV4cHJlc3Npb25zLiBBcyB3ZSBkaXNjdXNzZWQgZWFybGllciwgZXhwcmVzc2lvbnMgYXJlIGNvbnN0cnVjdGVkIGNvbXBvc2l0aW9uYWxseSwgc28gd2UgY2FuIGV2ZW4gbWFrZSBhIGxldCBleHByZXNzaW9uIGFuIG9wZXJhbmQgb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvci5cIixcbiAgICAgICAgICApLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIlNjb3BlXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIlNjb3BlXCIsXG4gICAgICAgIFtcbiAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgXCJUaGUgc2NvcGUgb2YgYSB2YXJpYWJsZSBpcyB0aGUgZXhwcmVzc2lvbihzKSBvZiB0aGUgcHJvZ3JhbSB3aGVyZSBpdCBpcyBhdmFpbGFibGUgZm9yIHVzZS4gRm9yIGxldCBleHByZXNzaW9ucywgdGhlIHN1Yi1leHByZXNzaW9uIHRoYXQgZm9sbG93cyB0aGUgXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBjb2RlKFwiaW5cIiksXG4gICAgICAgICAgdGV4dChcbiAgICAgICAgICAgIFwiIGtleXdvcmQgaGFzIHRoZSB2YXJpYWJsZSBib3VuZCBieSB0aGUgbGV0IGV4cHJlc3Npb24gaW4gc2NvcGUuIEhhemVsJ3MgZXhwcmVzc2lvbiBkZWNvcmF0aW9ucyBzaG93IHlvdSB3aGVyZSB0aGUgc2NvcGUgb2YgdGhlIHZhcmlhYmxlIHdpbGwgZW5kLlwiLFxuICAgICAgICAgICksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiU2hhZG93aW5nXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIlNoYWRvd2luZ1wiLFxuICAgICAgICBbXG4gICAgICAgICAgcChbXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIk9uY2UgYSB2YXJpYWJsZSBpcyBkZWZpbmVkLCBpdCBjYW5ub3QgYmUgY2hhbmdlZC4gVGhlcmUgaXMgbm8gYXNzaWdubWVudCBvcGVyYXRvciBpbiBsYW5ndWFnZXMgYmFzZWQgb24gcHVyZSBtYXRoZW1hdGljYWwgZXhwcmVzc2lvbnMsIHdoZXJlIHZhcmlhYmxlcyBhcmUgZ2l2ZW4gbWVhbmluZyBieSBzdWJzdGl0dXRpb24sIGxpa2UgSGF6ZWwuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcIkhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGRlZmluZSBhIFwiKSxcbiAgICAgICAgICAgIGVtKFwibmV3IHZhcmlhYmxlXCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIgdGhhdCBzaGFyZXMgdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlLiBIb3dldmVyLCB0aGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gcmVmZXIgdG8gdGhlIHByZXZpb3VzIGJpbmRpbmcgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgbmV3IGJpbmRpbmc7IHdlIHNheSB0aGF0IHZhcmlhYmxlIGhhcyBiZWVuIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGVtKFwic2hhZG93ZWRcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSxcbiAgICAgICksXG4gICAgKVxuICB8IERvY3VtZW50YXRpb24oXCJCb29sZWFucyBhbmQgVHlwZXNcIiwgXykgPT5cbiAgICBTb21lKFxuICAgICAgc2xpZGUoXG4gICAgICAgIFwiQm9vbGVhbnMgYW5kIFR5cGVzXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiU28gZmFyLCB3ZSBoYXZlIG9ubHkgc2VlbiBleHByZXNzaW9ucyB0aGF0IGV2YWx1YXRlIHRvIGludGVnZXJzLiBIb3dldmVyLCBIYXplbCBzdXBwb3J0cyBtYW55IG90aGVyIHR5cGVzIG9mIHZhbHVlcywgbGlrZSBib29sZWFucy4gVGhlcmUgYXJlIHR3byBib29sZWFuIHZhbHVlcywgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcInRydWVcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGFuZCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiZmFsc2VcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiSGF6ZWwncyB0eXBlIHN5c3RlbSBlbnN1cmVzIHRoYXQgZXhwcmVzc2lvbnMgYXJlIHVzZWQgaW4gd2F5cyB0aGF0IG1ha2Ugc2Vuc2UuIEVhY2ggZXhwcmVzc2lvbiBoYXMgYSB0eXBlLCB3aGljaCBwcmVkaWN0cyB0aGUgdHlwZSBvZiBpdHMgdmFsdWUuIFRoZSBleHByZXNzaW9ucyBpbiB0aGUgcHJldmlvdXMgc2xpZGVzIGFsbCBoYWQgdHlwZSBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiSW50XCIpLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCIsIHdoaWNoIGlzIHRoZSB0eXBlIG9mIGludGVnZXJzLCB3aGVyZWFzIHRoZSBib29sZWFuIHZhbHVlcyBoYXZlIHR5cGUgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIkJvb2xcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLiBcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIllvdSBjYW4gc2VlIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uIHlvdXIgY3Vyc29yIGlzIG9uIGluIHRoZSBjdXJzb3IgaW5zcGVjdG9yIGF0IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbi4gVGhlIHN5bWJvbCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwiOlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIgaXMgcHJvbm91bmNlZCBcXFwiaGFzIHR5cGVcXFwiLlwiKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiQm9vbGVhbiB2YWx1ZXMgY2FuIGJlIGNvbnN0cnVjdGVkIGJ5IHVzaW5nIGNvbXBhcmlzb24gb3BlcmF0b3JzIGxpa2UgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgY29kZShcIjxcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLCBcIiksXG4gICAgICAgICAgICBjb2RlKFwiPT1cIiksXG4gICAgICAgICAgICB0ZXh0KFwiLCBhbmQgXCIpLFxuICAgICAgICAgICAgY29kZShcIj5cIiksXG4gICAgICAgICAgICB0ZXh0KFwiIG9uIGludGVnZXJzLiBGb3IgZXhhbXBsZSwgXCIpLFxuICAgICAgICAgICAgY29kZShcIjIgPCAzXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBldmFsdWF0ZXMgdG8gXCIpLFxuICAgICAgICAgICAgY29kZShcInRydWVcIiksXG4gICAgICAgICAgICB0ZXh0KFwiLlwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIEJvb2xlYW5zIGNhbiBhbHNvIGJlIGNvbWJpbmVkIHVzaW5nIGxvZ2ljYWwgYW5kIChjb25qdW5jdGlvbiksIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCImJlwiKSxcbiAgICAgICAgICAgIHRleHQoXCIsIGFuZCBsb2dpY2FsIG9yIChkaXNqdW5jdGlvbiksIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJ8fFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIkNvbmRpdGlvbmFsIEV4cHJlc3Npb25zXCIsIF8pID0+XG4gICAgU29tZShcbiAgICAgIHNsaWRlKFxuICAgICAgICBcIkNvbmRpdGlvbmFsIEV4cHJlc3Npb25zXCIsXG4gICAgICAgIFtcbiAgICAgICAgICBwKFtcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiR2l2ZW4gYSBib29sZWFuIGV4cHJlc3Npb24sIHdlIGNhbiB1c2UgaXQgdG8gY2hvb3NlIGJldHdlZW4gdHdvIGV4cHJlc3Npb25zIHVzaW5nIGEgXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZW0oXCJjb25kaXRpb25hbCBleHByZXNzaW9uXCIpLFxuICAgICAgICAgICAgdGV4dChcIi4gRm9yIGV4YW1wbGUsIFwiKSxcbiAgICAgICAgICAgIGNvZGUoXCJpZiAyIDwgMyB0aGVuIDQgKiA0IGVsc2UgNSAqIDVcIiksXG4gICAgICAgICAgICB0ZXh0KFwiIGV2YWx1YXRlcyB0byBcIiksXG4gICAgICAgICAgICBjb2RlKFwiNFwiKSxcbiAgICAgICAgICAgIHRleHQoXCIuXCIpLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgKSxcbiAgICApXG4gIHwgRG9jdW1lbnRhdGlvbihcIkZ1bmN0aW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoXG4gICAgICBzbGlkZShcbiAgICAgICAgXCJGdW5jdGlvbnNcIixcbiAgICAgICAgW1xuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJGdW5jdGlvbnMgYXJlIGV4cHJlc3Npb25zIHRoYXQgdGFrZSBvdGhlciBleHByZXNzaW9ucyBhcyBpbnB1dHMgYW5kIHByb2R1Y2Ugb3RoZXIgZXhwcmVzc2lvbnMgYXMgb3V0cHV0cy4gRm9yIGV4YW1wbGUsIFwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNvZGUoXCJmdW4geCAtPiB4ICsgMVwiKSxcbiAgICAgICAgICAgIHRleHQoXG4gICAgICAgICAgICAgIFwiIGlzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbiBpbnRlZ2VyIGV4cHJlc3Npb24gYXMgaW5wdXQgYW5kIHByb2R1Y2VzIGFuIGludGVnZXIgZXhwcmVzc2lvbiBhcyBvdXRwdXQuXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJGdW5jdGlvbnMgaW4gSGF6ZWwgZG8gbm90IHRoZW1zZWx2ZXMgaGF2ZSBuYW1lcy4gSW5zdGVhZCwgeW91IGNhbiB1c2UgYSBsZXQgZXhwcmVzc2lvbiB0byBuYW1lIGEgZnVuY3Rpb24uXCIsXG4gICAgICAgICAgICApLFxuICAgICAgICAgIF0pLFxuICAgICAgICAgIHAoW1xuICAgICAgICAgICAgdGV4dChcbiAgICAgICAgICAgICAgXCJZb3UgYXBwbHkgYSBmdW5jdGlvbiB0byBhbiBhcmd1bWVudCBleHByZXNzaW9uIGJ5IHVzaW5nIHBhcmVudGhlc2VzIGluIHRoZSB1c3VhbCB3YXkuIEZvciBleGFtcGxlLCBcIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjb2RlKFwibGV0IGYgPSBmdW4geCAtPiB4ICsgMSBpbiBmKDIpXCIpLFxuICAgICAgICAgICAgdGV4dChcIiBldmFsdWF0ZXMgdG8gXCIpLFxuICAgICAgICAgICAgY29kZShcIjNcIiksXG4gICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICBcIi4gR28gdGhyb3VnaCB0aGlzIGV4YW1wbGUgaW4gdGhlIHN0ZXBwZXIgdG8gc2VlIGhvdyBzdWJzdGl0dXRpb24gb2YgdGhlIGZ1bmN0aW9uIGZvciB0aGUgdmFyaWFibGUgc3RhbmRpbmcgZm9yIHRoZSBmdW5jdGlvbiB3b3Jrcy5cIixcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIClcbiAgfCBEb2N1bWVudGF0aW9uKFwiVHVwbGVzXCIsIF8pID0+IFNvbWUoc2xpZGUoXCJUdXBsZXNcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJQYXR0ZXJuIE1hdGNoaW5nIG9uIFR1cGxlc1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJQYXR0ZXJuIE1hdGNoaW5nIG9uIFR1cGxlc1wiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlJlY3Vyc2lvblwiLCBfKSA9PiBTb21lKHNsaWRlKFwiUmVjdXJzaW9uXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiTGlzdHNcIiwgXykgPT4gU29tZShzbGlkZShcIkxpc3RzXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUGF0dGVybiBNYXRjaGluZyBvbiBMaXN0c1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJQYXR0ZXJuIE1hdGNoaW5nIG9uIExpc3RzXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBsZW5ndGhcIiwgXykgPT5cbiAgICBTb21lKHNsaWRlKFwiUmVjdXJzaW9uIG9uIExpc3RzOiBsZW5ndGhcIiwgW10pKVxuICB8IERvY3VtZW50YXRpb24oXCJSZWN1cnNpb24gb24gTGlzdHM6IHN1bVwiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJSZWN1cnNpb24gb24gTGlzdHM6IHN1bVwiLCBbXSkpXG4gIHwgRG9jdW1lbnRhdGlvbihcIlJlY3Vyc2lvbiBvbiBMaXN0czogbnVtX3plcm9zXCIsIF8pID0+XG4gICAgU29tZShzbGlkZShcIlJlY3Vyc2lvbiBvbiBMaXN0czogbnVtX3plcm9zXCIsIFtdKSlcbiAgfCBEb2N1bWVudGF0aW9uKFwiSGlnaGVyLU9yZGVyIEZ1bmN0aW9uc1wiLCBfKSA9PlxuICAgIFNvbWUoc2xpZGUoXCJIaWdoZXItT3JkZXIgRnVuY3Rpb25zXCIsIFtdKSlcbiAgfCBfID0+IE5vbmU7XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCBpY29uX3NpemUgPSAyMC47XG5cbmxldCBzaW1wbGVfaWNvbiA9ICh+dHJhbnNmb3JtPVwiXCIsIH52aWV3OiBzdHJpbmcsIGRzOiBsaXN0KHN0cmluZykpID0+XG4gIC8qIHRha2VzIGEgbGlzdCBvZiBwYXRocyBhcyBzdHJpbmdzLCBhIHZpZXdwb3J0IGFzIGEgc3RyaW5nLFxuICAgICBhbmQgYW4gb3B0aW9uYWwgKHN0cmluZykgdHJhbnNmb3JtIHRvIGFwcGx5IHRvIGVhY2ggKi9cbiAgTm9kZS5jcmVhdGVfc3ZnKFxuICAgIFwic3ZnXCIsXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoXG4gICAgICAgIEF0dHIuW1xuICAgICAgICAgIGNyZWF0ZShcInZpZXdCb3hcIiwgdmlldyksXG4gICAgICAgICAgY3JlYXRlKFwid2lkdGhcIiwgUHJpbnRmLnNwcmludGYoXCIlZnB4XCIsIGljb25fc2l6ZSkpLFxuICAgICAgICAgIGNyZWF0ZShcImhlaWdodFwiLCBQcmludGYuc3ByaW50ZihcIiVmcHhcIiwgaWNvbl9zaXplKSksXG4gICAgICAgICAgY3JlYXRlKFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLCBcIm5vbmVcIiksXG4gICAgICAgIF0sXG4gICAgICApLFxuICAgIExpc3QubWFwKFxuICAgICAgZCA9PlxuICAgICAgICBOb2RlLmNyZWF0ZV9zdmcoXG4gICAgICAgICAgXCJwYXRoXCIsXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLm1hbnkoXG4gICAgICAgICAgICAgIFtBdHRyLmNyZWF0ZShcImRcIiwgZCldXG4gICAgICAgICAgICAgIEAgKFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybSA9PSBcIlwiID8gW10gOiBbQXR0ci5jcmVhdGUoXCJ0cmFuc2Zvcm1cIiwgdHJhbnNmb3JtKV1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgW10sXG4gICAgICAgICksXG4gICAgICBkcyxcbiAgICApLFxuICApO1xuXG5sZXQgZ2VhciA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEyMDAgMTIwMFwiLFxuICAgIFtcbiAgICAgIFwibTExOTMuMiA2OTAuOTVjNC40ODgzLTI5LjY2NCA2LjgyODEtNjAuMDQ3IDYuODI4MS05MC45NjEgMC0zMC45MS0yLjMzOTgtNjEuMjczLTYuODI4MS05MC45MzhsLTE1MS4zNy03NC4zMDVjLTMuODM5OC0xMC4yNjItOC4wMTU2LTIwLjM2My0xMi41NjItMzAuMjY2bDU0LjQ2OS0xNTkuNTJjLTM2LjEwOS00OS4xNDgtNzkuNTI3LTkyLjU2Ni0xMjguNjYtMTI4LjY3bC0xNTkuNTMgNTQuNDY5Yy05Ljg5ODQtNC41MjM0LTE5Ljk5Mi04LjcxMDktMzAuMjY2LTEyLjU1MWwtNzQuMzAxLTE1MS4zNmMtMjkuNjY0LTQuNTIzNC02MC4wNTEtNi44NTE2LTkwLjk2MS02Ljg1MTZzLTYxLjI4NSAyLjMyODEtOTAuOTQ5IDYuODUxNmwtNzQuMzA1IDE1MS4zNmMtMTAuMjYyIDMuODM5OC0yMC4zNTIgOC4wMjczLTMwLjI2NiAxMi41NTFsLTE1OS41Mi01NC40NjVjLTQ5LjEyOSAzNi4xMDktOTIuNTQzIDc5LjUzNS0xMjguNjYgMTI4LjY2bDU0LjQ1NyAxNTkuNTJjLTQuNTExNyA5Ljg5ODQtOC42ODc1IDIwLjAwNC0xMi41MzkgMzAuMjY2bC0xNTEuMzYgNzQuMzEyYy00LjUxMTcgMjkuNjY0LTYuODUxNiA2MC4wMjMtNi44NTE2IDkwLjkzOCAwIDMwLjkxIDIuMzM5OCA2MS4yOTcgNi44NTE2IDkwLjk2MWwxNTEuMzYgNzQuMzA1YzMuODUxNiAxMC4yNjIgOC4wMjczIDIwLjM1MiAxMi41MzkgMzAuMjc3bC01NC40NTMgMTU5LjUxYzM2LjEyMSA0OS4xMjkgNzkuNTM1IDkyLjU0MyAxMjguNjYgMTI4LjY4bDE1OS41Mi01NC40NTdjOS45MTAyIDQuNTExNyAyMC4wMDQgOC42ODc1IDMwLjI2NiAxMi41MjdsNzQuMzA1IDE1MS4zN2MyOS42NzIgNC41MDM5IDYwLjA0NyA2Ljg0MzggOTAuOTU3IDYuODQzOHM2MS4yOTctMi4zMzk4IDkwLjk2MS02LjgzOThsNzQuMjkzLTE1MS4zN2MxMC4yNzMtMy44Mzk4IDIwLjM2My04LjAxNTYgMzAuMjg5LTEyLjUyN2wxNTkuNSA1NC40NTdjNDkuMTI5LTM2LjEzMyA5Mi41NDMtNzkuNTQ3IDEyOC42NS0xMjguNjhsLTU0LjQ2MS0xNTkuNTFjNC41NDY5LTkuOTI1OCA4LjcyMjctMjAuMDE2IDEyLjU2Mi0zMC4yNzd6bS01OTMuMTcgNDguNTE2Yy03Ny4wMTYgMC0xMzkuNDQtNjIuNDQ5LTEzOS40NC0xMzkuNDggMC03Ny4wMTYgNjIuNDI2LTEzOS40NSAxMzkuNDQtMTM5LjQ1czEzOS40OCA2Mi40MzggMTM5LjQ4IDEzOS40NWMwIDc3LjAyNy02Mi40NjEgMTM5LjQ4LTEzOS40OCAxMzkuNDh6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGluZm8gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMjAwIDEyMDBcIixcbiAgICBbXG4gICAgICBcIm0xMTIwLjUgNTMxLjc1Yy0xNy4wNjItMTMwLjI0LTgyLjMzMi0yNDkuMzYtMTgyLjkyLTMzMy44My0xMDAuNTktODQuNDc3LTIyOS4xOS0xMjguMTgtMzYwLjQyLTEyMi40OC0xMzEuMjMgNS43MDMxLTI1NS41NiA2MC4zOTUtMzQ4LjQ0IDE1My4yOHMtMTQ3LjU3IDIxNy4yMS0xNTMuMjggMzQ4LjQ0Yy01LjY5OTIgMTMxLjIzIDM4IDI1OS44MyAxMjIuNDggMzYwLjQyIDg0LjQ3NyAxMDAuNTkgMjAzLjU5IDE2NS44NiAzMzMuODMgMTgyLjkyIDEwNi43NSAxMy45ODQgMjE1LjIyLTUuMTg3NSAzMTAuNzEtNTQuOTIyIDk1LjQ4OC00OS43MzQgMTczLjM4LTEyNy42MiAyMjMuMTEtMjIzLjExIDQ5LjczNC05NS40OTIgNjguOTA2LTIwMy45NiA1NC45MjItMzEwLjcxem0tNDQ1LjUgMzE3LjI1YzAgMjYuNzkzLTE0LjI5MyA1MS41NTUtMzcuNSA2NC45NTMtMjMuMjA3IDEzLjM5NS01MS43OTMgMTMuMzk1LTc1IDAtMjMuMjA3LTEzLjM5OC0zNy41LTM4LjE2LTM3LjUtNjQuOTUzdi0yMjVjMC0yNi43OTMgMTQuMjkzLTUxLjU1NSAzNy41LTY0Ljk1MyAyMy4yMDctMTMuMzk1IDUxLjc5My0xMy4zOTUgNzUgMCAyMy4yMDcgMTMuMzk4IDM3LjUgMzguMTYgMzcuNSA2NC45NTN6bS03NS00MjNjLTE5Ljg5MSAwLTM4Ljk2OS03LjkwMjMtNTMuMDMxLTIxLjk2OS0xNC4wNjYtMTQuMDYyLTIxLjk2OS0zMy4xNDEtMjEuOTY5LTUzLjAzMXM3LjkwMjMtMzguOTY5IDIxLjk2OS01My4wMzFjMTQuMDYyLTE0LjA2NiAzMy4xNDEtMjEuOTY5IDUzLjAzMS0yMS45NjlzMzguOTY5IDcuOTAyMyA1My4wMzEgMjEuOTY5YzE0LjA2NiAxNC4wNjIgMjEuOTY5IDMzLjE0MSAyMS45NjkgNTMuMDMxcy03LjkwMjMgMzguOTY5LTIxLjk2OSA1My4wMzFjLTE0LjA2MiAxNC4wNjYtMzMuMTQxIDIxLjk2OS01My4wMzEgMjEuOTY5elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBzdGFyID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTIwMCAxMjAwXCIsXG4gICAgW1xuICAgICAgXCJtMTA0NS4yIDQ1OS42LTI3MC01Ny42MDItMTM2LjgtMjM4LjhjLTE2LjgwMS0yOC44MDEtNTguODAxLTI4LjgwMS03NS42MDIgMGwtMTM4IDIzOC44LTI3MCA1Ny42MDJjLTMyLjM5OCA3LjE5OTItNDUuNjAyIDQ2LjgwMS0yNCA3MmwxODQuOCAyMDUuMi0yOC44MDEgMjczLjZjLTMuNjAxNiAzMy41OTggMzAgNTcuNTk4IDYxLjE5OSA0NC4zOThsMjUyLTExMS42IDI1MiAxMTEuNmMzMS4xOTkgMTMuMTk5IDY0LjgwMS0xMC44MDEgNjEuMTk5LTQ0LjM5OGwtMjguODAxLTI3My42IDE4NC44LTIwNS4yYzIxLjYwMi0yNS4yMDMgOS42MDE2LTY0LjgwMS0yNC03MnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgYm9tYiA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEyMDAgMTIwMFwiLFxuICAgIFtcbiAgICAgIFwibTcwMC44OCAzNjQuODh2LTk0LjMxMmMwLTEwLjUtOC40Mzc1LTE4Ljc1LTE4Ljc1LTE4Ljc1aC05OC44MTJjMS4zMTI1LTIyLjUgOS41NjI1LTk0LjY4OCA2MS41LTEyMy4xOSA1Mi42ODgtMjkuMDYyIDE0MC4yNS02LjE4NzUgMjUzLjMxIDY2LjM3NSA4LjYyNSA1LjYyNSAyMC4yNSAzLjE4NzUgMjUuODc1LTUuNjI1IDUuNjI1LTguNjI1IDMtMjAuMjUtNS42MjUtMjUuODc1LTEyNy4xMi04MS41NjItMjI1LjM4LTEwNC40NC0yOTEuOTQtNjcuNjg4LTcwLjMxMiAzOC44MTItNzkuNSAxMjkuNzUtODAuNjI1IDE1NmgtOTljLTEwLjMxMiAwLTE4Ljc1IDguMjUtMTguNzUgMTguNzV2OTIuNDM4YzAgMC41NjI1IDAgMS4zMTI1IDAuMTg3NSAxLjg3NS0xNTMuMTkgNTUuNjg4LTI2Mi42OSAyMDIuNjktMjYyLjY5IDM3NC44MSAwIDIxOS45NCAxNzguODggMzk4LjgxIDM5OC44MSAzOTguODFzMzk5LTE3OC44OCAzOTktMzk4LjgxYzAtMTcxLjk0LTEwOS41LTMxOC43NS0yNjIuNS0zNzQuODF6bS04Mi42ODggOTAuNzVjLTkuOTM3NS0zLjE4NzUtMTUuMzc1LTEzLjY4OC0xMi4zNzUtMjMuNjI1IDMuMTg3NS05Ljc1IDEzLjY4OC0xNS4zNzUgMjMuNDM4LTEyLjE4OCAyLjgxMjUgMC45Mzc1IDI3OSA5MC43NSAyMzcuNzUgMzg1LjMxLTEuMzEyNSA5LjM3NS05LjM3NSAxNi4xMjUtMTguNTYyIDE2LjEyNS0wLjkzNzUgMC0xLjY4NzUgMC0yLjYyNS0wLjE4NzUtMTAuMzEyLTEuMzEyNS0xNy40MzgtMTAuODc1LTE1LjkzOC0yMSAzNi45MzgtMjYzLjYyLTIwMS41Ni0zNDEuMjUtMjExLjY5LTM0NC40NHpcIixcbiAgICAgIFwibTg5My4yNSAyNDQuODgtMzAuNTYyIDI5LjI1Yy0zLjU2MjUgMy41NjI1LTguMjUgNS4yNS0xMi45MzggNS4yNS00Ljg3NSAwLTkuOTM3NS0xLjg3NS0xMy41LTUuODEyNS03LjMxMjUtNy41LTYuOTM3NS0xOS4zMTIgMC41NjI1LTI2LjQzOGwzMC41NjItMjkuMjVjNy41LTcuMzEyNSAxOS41LTYuOTM3NSAyNi42MjUgMC41NjI1czYuNzUgMTkuMzEyLTAuNzUgMjYuNDM4elwiLFxuICAgICAgXCJtOTU4LjMxIDgzLjI1LTYuNzUgNDEuNjI1Yy0xLjMxMjUgOS4zNzUtOS4zNzUgMTUuNzUtMTguMzc1IDE1Ljc1LTAuOTM3NSAwLTIuMDYyNSAwLTMtMC4xODc1LTEwLjMxMi0xLjY4NzUtMTcuMjUtMTEuMjUtMTUuNTYyLTIxLjM3NWw2Ljc1LTQxLjgxMmMxLjY4NzUtMTAuMzEyIDExLjQzOC0xNy4yNSAyMS41NjItMTUuNTYyczE3LjA2MiAxMS4yNSAxNS4zNzUgMjEuNTYyelwiLFxuICAgICAgXCJtMTAyOC40IDI0OS45NGMtMy41NjI1IDQuNS05IDYuOTM3NS0xNC42MjUgNi45Mzc1LTQuMTI1IDAtOC4yNS0xLjMxMjUtMTEuNjI1LTQuMTI1bC0zMy0yNi40MzhjLTguMDYyNS02LjU2MjUtOS4zNzUtMTguMzc1LTIuODEyNS0yNi40MzggNi4zNzUtOC4wNjI1IDE4LjE4OC05LjM3NSAyNi4yNS0yLjgxMjVsMzMgMjYuNDM4YzguMDYyNSA2LjU2MjUgOS4zNzUgMTguMzc1IDIuODEyNSAyNi40Mzh6XCIsXG4gICAgICBcIm0xMDIzLjYgMTU1LjA2LTM4LjQzOCAxNy44MTJjLTIuNDM3NSAxLjEyNS01LjI1IDEuNjg3NS03Ljg3NSAxLjY4NzUtNi45Mzc1IDAtMTMuODc1LTQuMTI1LTE3LjA2Mi0xMC44NzUtNC4zMTI1LTkuMzc1LTAuMTg3NS0yMC42MjUgOS4xODc1LTI0LjkzOGwzOC40MzgtMTcuODEyYzkuMzc1LTQuMzEyNSAyMC42MjUtMC4xODc1IDI0LjkzOCA5LjE4NzVzMC4xODc1IDIwLjYyNS05LjE4NzUgMjQuOTM4elwiLFxuICAgICAgXCJtOTU2LjYyIDI4NC4wNmMwLjc1IDEwLjMxMi03LjEyNSAxOS4zMTItMTcuNDM4IDE5Ljg3NS0wLjU2MjUgMC4xODc1LTAuOTM3NSAwLjE4NzUtMS4zMTI1IDAuMTg3NS05Ljc1IDAtMTgtNy42ODc1LTE4Ljc1LTE3LjYyNWwtMi44MTI1LTQyLjE4OGMtMC41NjI1LTEwLjMxMiA3LjEyNS0xOS4zMTIgMTcuNjI1LTE5Ljg3NSAxMC4zMTItMC43NSAxOS4xMjUgNy4xMjUgMTkuODc1IDE3LjQzOHpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgZXhwb3J0ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgNjcuNjcxIDY3LjY3MVwiLFxuICAgIFtcbiAgICAgIFwiTTUyLjk0NiwyMy4zNDhINDIuODM0djZoMTAuMTEyYzMuMDA3LDAsNS4zNCwxLjUzNiw1LjM0LDIuODU4djI2LjYwNmMwLDEuMzIyLTIuMzMzLDIuODU4LTUuMzQsMi44NThIMTQuNzI0ICAgYy0zLjAwNywwLTUuMzQtMS41MzYtNS4zNC0yLjg1OFYzMi4yMDdjMC0xLjMyMiwyLjMzMy0yLjg1OCw1LjM0LTIuODU4aDEwLjExdi02aC0xMC4xMWMtNi4zNTksMC0xMS4zNCwzLjg5MS0xMS4zNCw4Ljg1OHYyNi42MDYgICBjMCw0Ljk2OCw0Ljk4MSw4Ljg1OCwxMS4zNCw4Ljg1OGgzOC4yMjNjNi4zNTgsMCwxMS4zNC0zLjg5MSwxMS4zNC04Ljg1OFYzMi4yMDdDNjQuMjg2LDI3LjIzOSw1OS4zMDUsMjMuMzQ4LDUyLjk0NiwyMy4zNDh6XCIsXG4gICAgICBcIk0yNC45NTcsMTQuOTU1YzAuNzY4LDAsMS41MzUtMC4yOTMsMi4xMjEtMC44NzlsMy43NTYtMy43NTZ2MTMuMDI4djZ2MTEuNDk0YzAsMS42NTcsMS4zNDMsMywzLDNzMy0xLjM0MywzLTNWMjkuMzQ4di02ICAgVjEwLjExN2wzLjk1OSwzLjk1OWMwLjU4NiwwLjU4NiwxLjM1NCwwLjg3OSwyLjEyMSwwLjg3OXMxLjUzNS0wLjI5MywyLjEyMS0wLjg3OWMxLjE3Mi0xLjE3MSwxLjE3Mi0zLjA3MSwwLTQuMjQybC04Ljk1Ny04Ljk1NyAgIEMzNS40OTIsMC4yOTEsMzQuNzI1LDAsMzMuOTU4LDBjLTAuMDA4LDAtMC4wMTUsMC0wLjAyMywwcy0wLjAxNSwwLTAuMDIzLDBjLTAuNzY3LDAtMS41MzQsMC4yOTEtMi4xMiwwLjg3N2wtOC45NTcsOC45NTcgICBjLTEuMTcyLDEuMTcxLTEuMTcyLDMuMDcxLDAsNC4yNDJDMjMuNDIyLDE0LjY2MiwyNC4xODksMTQuOTU1LDI0Ljk1NywxNC45NTV6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGltcG9ydCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDYxIDYxXCIsXG4gICAgW1xuICAgICAgXCJNNDkuNTYxLDE2LjQ2NEgzOS40NXY2aDEwLjExMWMzLjAwOCwwLDUuMzQxLDEuNTM1LDUuMzQxLDIuODU3djI2LjYwN2MwLDEuMzIxLTIuMzMzLDIuODU4LTUuMzQxLDIuODU4SDExLjM0ICAgYy0zLjAwNywwLTUuMzQtMS41MzctNS4zNC0yLjg1OFYyNS4zMjRjMC0xLjMyMiwyLjMzMy0yLjg1OCw1LjM0LTIuODU4aDEwLjExdi02SDExLjM0QzQuOTgxLDE2LjQ2NiwwLDIwLjM1NywwLDI1LjMyNHYyNi42MDUgICBjMCw0Ljk2OCw0Ljk4MSw4Ljg1NywxMS4zNCw4Ljg1N2gzOC4yMjNjNi4zNTcsMCwxMS4zNC0zLjg5MSwxMS4zNC04Ljg1N1YyNS4zMjRDNjAuOTAyLDIwLjM1NSw1NS45MjEsMTYuNDY0LDQ5LjU2MSwxNi40NjR6XCIsXG4gICAgICBcIk0zOS41MjksMjkuMDA0Yy0wLjc2OCwwLTEuNTM1LDAuMjk0LTIuMTIxLDAuODhsLTMuNzU2LDMuNzU1VjIwLjYxMnYtNlYzLjExN2MwLTEuNjU2LTEuMzQzLTMtMy0zcy0zLDEuMzQ0LTMsM3YxMS40OTR2NiAgIHYxMy4yM2wtMy45NTktMy45NThjLTAuNTg2LTAuNTg2LTEuMzU0LTAuODgtMi4xMjEtMC44OHMtMS41MzUsMC4yOTQtMi4xMjEsMC44OGMtMS4xNzIsMS4xNy0xLjE3MiwzLjA3LDAsNC4yNDFsOC45NTcsOC45NTcgICBjMC41ODYsMC41ODYsMS4zNTQsMC44NzcsMi4xMiwwLjg3N2MwLjAwOCwwLDAuMDE2LDAsMC4wMjMsMHMwLjAxNSwwLDAuMDIyLDBjMC43NjgsMCwxLjUzNC0wLjI5MSwyLjEyLTAuODc3bDguOTU3LTguOTU3ICAgYzEuMTcyLTEuMTcxLDEuMTcyLTMuMDcxLDAtNC4yNDFDNDEuMDY0LDI5LjI5OCw0MC4yOTgsMjkuMDA0LDM5LjUyOSwyOS4wMDR6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IHVuZG8gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA1MTIgNTEyXCIsXG4gICAgW1xuICAgICAgXCJNMTI5LjcsNDYuNGwzNy4yLDM3LjdsLTY2LjYsNjcuMWgyNTQuNGM4Ni44LDAsMTU3LjIsNzAuNCwxNTcuMiwxNTcuMnMtNzAuNCwxNTcuMi0xNTcuMiwxNTcuMmgtNTIuNHYtNTIuNGg1Mi40IGM1Ny45LDAsMTA0LjgtNDYuOSwxMDQuOC0xMDQuOHMtNDYuOS0xMDQuOC0xMDQuOC0xMDQuOEgxMDAuNGw2Ni42LDY1LjhsLTM3LjIsMzYuOUwwLDE3Ny40TDEyOS43LDQ2LjR6XCIsXG4gICAgXSxcbiAgKTtcblxubGV0IHJlZG8gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA1MTIgNTEyXCIsXG4gICAgW1xuICAgICAgXCJNMzgyLjMsNDYuNGwtMzcuMiwzNy43bDY2LjYsNjcuMUgxNTcuMkM3MC40LDE1MS4yLDAsMjIxLjYsMCwzMDguNHM3MC40LDE1Ny4yLDE1Ny4yLDE1Ny4yaDUyLjR2LTUyLjRoLTUyLjQgYy01Ny45LDAtMTA0LjgtNDYuOS0xMDQuOC0xMDQuOHM0Ni45LTEwNC44LDEwNC44LTEwNC44aDI1NC40bC02Ni42LDY1LjhsMzYuOSwzNi45bDEzMC0xMjguOUwzODIuMyw0Ni40elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBjaXJjbGVfcXVlc3Rpb24gPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIi0wLjUgLTAuNSAyNSAyNVwiLFxuICAgIFtcbiAgICAgIFwiTTEyIDJjNS41MTQgMCAxMCA0LjQ4NiAxMCAxMHMtNC40ODYgMTAtMTAgMTAtMTAtNC40ODYtMTAtMTAgNC40ODYtMTAgMTAtMTB6bTAtMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnM1LjM3MyAxMiAxMiAxMiAxMi01LjM3MyAxMi0xMi01LjM3My0xMi0xMi0xMnptMS4yNSAxN2MwIC42OS0uNTU5IDEuMjUtMS4yNSAxLjI1LS42ODkgMC0xLjI1LS41Ni0xLjI1LTEuMjVzLjU2MS0xLjI1IDEuMjUtMS4yNWMuNjkxIDAgMS4yNS41NiAxLjI1IDEuMjV6bTEuMzkzLTkuOTk4Yy0uNjA4LS42MTYtMS41MTUtLjk1NS0yLjU1MS0uOTU1LTIuMTggMC0zLjU5IDEuNTUtMy41OSAzLjk1aDIuMDExYzAtMS40ODYuODI5LTIuMDEzIDEuNTM4LTIuMDEzLjYzNCAwIDEuMzA3LjQyMSAxLjM2NCAxLjIyNi4wNjIuODQ3LS4zOSAxLjI3Ny0uOTYyIDEuODIxLTEuNDEyIDEuMzQzLTEuNDM4IDEuOTkzLTEuNDMyIDMuNDY4aDIuMDA1Yy0uMDEzLS42NjQuMDMtMS4yMDMuOTM1LTIuMTc4LjY3Ny0uNzMgMS41MTktMS42MzggMS41MzYtMy4wMjIuMDExLS45MjQtLjI4NC0xLjcxOS0uODU0LTIuMjk3elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBnaXRodWIgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIi0wLjUgLTAuNSAyNSAyNVwiLFxuICAgIFtcbiAgICAgIFwiTTEyIDBjLTYuNjI2IDAtMTIgNS4zNzMtMTIgMTIgMCA1LjMwMiAzLjQzOCA5LjggOC4yMDcgMTEuMzg3LjU5OS4xMTEuNzkzLS4yNjEuNzkzLS41Nzd2LTIuMjM0Yy0zLjMzOC43MjYtNC4wMzMtMS40MTYtNC4wMzMtMS40MTYtLjU0Ni0xLjM4Ny0xLjMzMy0xLjc1Ni0xLjMzMy0xLjc1Ni0xLjA4OS0uNzQ1LjA4My0uNzI5LjA4My0uNzI5IDEuMjA1LjA4NCAxLjgzOSAxLjIzNyAxLjgzOSAxLjIzNyAxLjA3IDEuODM0IDIuODA3IDEuMzA0IDMuNDkyLjk5Ny4xMDctLjc3NS40MTgtMS4zMDUuNzYyLTEuNjA0LTIuNjY1LS4zMDUtNS40NjctMS4zMzQtNS40NjctNS45MzEgMC0xLjMxMS40NjktMi4zODEgMS4yMzYtMy4yMjEtLjEyNC0uMzAzLS41MzUtMS41MjQuMTE3LTMuMTc2IDAgMCAxLjAwOC0uMzIyIDMuMzAxIDEuMjMuOTU3LS4yNjYgMS45ODMtLjM5OSAzLjAwMy0uNDA0IDEuMDIuMDA1IDIuMDQ3LjEzOCAzLjAwNi40MDQgMi4yOTEtMS41NTIgMy4yOTctMS4yMyAzLjI5Ny0xLjIzLjY1MyAxLjY1My4yNDIgMi44NzQuMTE4IDMuMTc2Ljc3Ljg0IDEuMjM1IDEuOTExIDEuMjM1IDMuMjIxIDAgNC42MDktMi44MDcgNS42MjQtNS40NzkgNS45MjEuNDMuMzcyLjgyMyAxLjEwMi44MjMgMi4yMjJ2My4yOTNjMCAuMzE5LjE5Mi42OTQuODAxLjU3NiA0Ljc2NS0xLjU4OSA4LjE5OS02LjA4NiA4LjE5OS0xMS4zODYgMC02LjYyNy01LjM3My0xMi0xMi0xMnpcIixcbiAgICBdLFxuICApO1xuXG5sZXQgYmFjayA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDMzMCAzMzBcIixcbiAgICBbXG4gICAgICBcIk0yNTAuNjA2LDE1NC4zODlsLTE1MC0xNDkuOTk2Yy01Ljg1Ny01Ljg1OC0xNS4zNTUtNS44NTgtMjEuMjEzLDAuMDAxICBjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTNsMTM5LjM5MywxMzkuMzlMNzkuMzkzLDMwNC4zOTRjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTMgIEM4Mi4zMjIsMzI4LjUzNiw4Ni4xNjEsMzMwLDkwLDMzMHM3LjY3OC0xLjQ2NCwxMC42MDctNC4zOTRsMTQ5Ljk5OS0xNTAuMDA0YzIuODE0LTIuODEzLDQuMzk0LTYuNjI4LDQuMzk0LTEwLjYwNiAgQzI1NSwxNjEuMDE4LDI1My40MiwxNTcuMjAyLDI1MC42MDYsMTU0LjM4OXpcIixcbiAgICBdLFxuICAgIH50cmFuc2Zvcm09XCJzY2FsZSgtMC43NSwgMC43NSkgdHJhbnNsYXRlKC0zMzAsIDUwKVwiLFxuICApO1xuXG5sZXQgZm9yd2FyZCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDMzMCAzMzBcIixcbiAgICBbXG4gICAgICBcIk0yNTAuNjA2LDE1NC4zODlsLTE1MC0xNDkuOTk2Yy01Ljg1Ny01Ljg1OC0xNS4zNTUtNS44NTgtMjEuMjEzLDAuMDAxICBjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTNsMTM5LjM5MywxMzkuMzlMNzkuMzkzLDMwNC4zOTRjLTUuODU3LDUuODU4LTUuODU3LDE1LjM1NSwwLjAwMSwyMS4yMTMgIEM4Mi4zMjIsMzI4LjUzNiw4Ni4xNjEsMzMwLDkwLDMzMHM3LjY3OC0xLjQ2NCwxMC42MDctNC4zOTRsMTQ5Ljk5OS0xNTAuMDA0YzIuODE0LTIuODEzLDQuMzk0LTYuNjI4LDQuMzk0LTEwLjYwNiAgQzI1NSwxNjEuMDE4LDI1My40MiwxNTcuMjAyLDI1MC42MDYsMTU0LjM4OXpcIixcbiAgICBdLFxuICAgIH50cmFuc2Zvcm09XCJzY2FsZSgwLjc1LCAwLjc1KSB0cmFuc2xhdGUoMCwgNTApXCIsXG4gICk7XG5cbmxldCBleWUgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCA0OCA0OFwiLFxuICAgIFtcbiAgICAgIFwiTTI0IDljLTEwIDAtMTguNTQgNi4yMi0yMiAxNSAzLjQ2IDguNzggMTIgMTUgMjIgMTUgMTAuMDEgMCAxOC41NC02LjIyIDIyLTE1LTMuNDYtOC43OC0xMS45OS0xNS0yMi0xNXptMCAyNWMtNS41MiAwLTEwLTQuNDgtMTAtMTBzNC40OC0xMCAxMC0xMCAxMCA0LjQ4IDEwIDEwLTQuNDggMTAtMTAgMTB6bTAtMTZjLTMuMzEgMC02IDIuNjktNiA2czIuNjkgNiA2IDYgNi0yLjY5IDYtNi0yLjY5LTYtNi02elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCB0cmFzaCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDI0IDI0XCIsXG4gICAgW1xuICAgICAgXCJNMyA2djE4aDE4di0xOGgtMTh6bTUgMTRjMCAuNTUyLS40NDggMS0xIDFzLTEtLjQ0OC0xLTF2LTEwYzAtLjU1Mi40NDgtMSAxLTFzMSAuNDQ4IDEgMXYxMHptNSAwYzAgLjU1Mi0uNDQ4IDEtMSAxcy0xLS40NDgtMS0xdi0xMGMwLS41NTIuNDQ4LTEgMS0xczEgLjQ0OCAxIDF2MTB6bTUgMGMwIC41NTItLjQ0OCAxLTEgMXMtMS0uNDQ4LTEtMXYtMTBjMC0uNTUyLjQ0OC0xIDEtMXMxIC40NDggMSAxdjEwem00LTE4djJoLTIwdi0yaDUuNzExYy45IDAgMS42MzEtMS4wOTkgMS42MzEtMmg1LjMxNWMwIC45MDEuNzMgMiAxLjYzMSAyaDUuNzEyelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBoYXplbG51dCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMTAwIDAgNTAwIDUwMFwiLFxuICAgIFtcbiAgICAgIFwibTQ5OS44NCAxMzAuNTFjLTkzLjM2My05My4zNjMtMjA3LjU5LTEyOS4wNi0zMDAuNjUtMzYuMDUxLTk1LjA3IDk1LjExMy0xMTYuMDcgMjEzLjE1LTYyLjU2MiAzNTAuODMgMy4xNDg0IDguMDUwOC0wLjg3NSAyOC40MzggOS41MzkxIDM4Ljg5NSAxMC40MTQgMTAuNDU3IDI5LjgzNiA1LjQ2ODggMzYuNzA3IDguMDA3OCAxMjguODQgNDcuNTEyIDI1NC44IDM3LjE4OCAzNTMuMDItNjEuMjUgOTMuMDA4LTkyLjc5NyA1Ny4zNTItMjA3LjAzLTM2LjA1NS0zMDAuNDN6bS0xMi4zODMgMTIuMzgzYzMyLjI4OSAzMi4yODkgODguNTA4IDk5LjU3NCA4NS4wOTQgMTczLjY0LTc2LjIxMS0zMy4zNC04NS45MjItODUuMTQxLTE0NC43Ny0xNDMuOTgtMzUuNDgtMzUuNDgtMTAzLjgyLTU4LjA1NS0xMTYuMDctMTE0LjYyIDY2LjAyLTQuMTk5MiAxMjkuMjQgMzguMzI0IDE3NS43NCA4NC45NjF6bTM2LjA1MSAyNzUuODljLTg3LjUgODcuNS0xOTkuOTggMTA2LjYyLTMzNC41NSA1Ni44NzUtOS4xODc1LTMuMzY3Mi0yNy4zNDQtMS4wNTA4LTMwLjYyNS0zLjkzNzUtMy44OTQ1LTMuOTM3NS0xLjU3NDItMjIuNDg4LTUuNjAxNi0zMi44NTUtNTEuNTM5LTEzMi40OC0zMi4zNzUtMjQxLjExIDU4LjYyNS0zMzIuMTEgMjUuNDE4LTI1LjM3NSA1My4xMTMtNDAuOTQ5IDgyLjc3My00Ni42OCAxMy40MzQgNjYuMDEyIDg3LjE5NSA5MC43NzcgMTIxLjUgMTI0Ljg2IDU4LjQ0OSA1OC42NzIgNjkuMDgyIDExNC4yMyAxNTQuODggMTQ5LjcxLTUuMDc0MiAyNy45MS0xOS4yNSA1Ni40MzgtNDYuOTg4IDg0LjEyOXpcIixcbiAgICAgIFwibTI3NC4wMSAzNzQuNzIgMTA4LjExLTEwOC4xMWMxLjc2OTUtMS42MTMzIDIuODA0Ny0zLjg3ODkgMi44NTk0LTYuMjczNCAwLjA1NDY4OC0yLjM5NDUtMC44NzUtNC43MDctMi41NzAzLTYuMzk4NC0xLjY5NTMtMS42OTE0LTQuMDExNy0yLjYxMzMtNi40MDYyLTIuNTUwOC0yLjM5NDUgMC4wNjY0MDYtNC42NjAyIDEuMTA1NS02LjI2NTYgMi44ODI4bC0xMDguMTEgMTA4LjA2Yy0zLjQxOCAzLjQyMTktMy40MTggOC45NjQ4IDAgMTIuMzgzczguOTYwOSAzLjQxOCAxMi4zODMgMHpcIixcbiAgICAgIFwibTQ0NS40MiAzOTkuNjFjLTAuNTIzNDQgMC4zOTQ1My01Mi45MzggNDAuNTU1LTExNS41NCA0Ni4yNDItNC44MzIgMC40Mzc1LTguMzk4NCA0LjcwNy03Ljk2MDkgOS41MzkxIDAuNDMzNTkgNC44MzIgNC43MDMxIDguMzk4NCA5LjUzNTIgNy45NjA5IDY3Ljg1NS02LjE2OCAxMjIuNS00OC4xMjUgMTI0LjY5LTQ5LjgzMiAxLjkwNjItMS4zOTQ1IDMuMTY4LTMuNSAzLjQ5NjEtNS44Mzk4IDAuMzI4MTMtMi4zMzk4LTAuMzA0NjktNC43MTA5LTEuNzUtNi41NzgxLTEuNDQ5Mi0xLjg2NzItMy41ODk4LTMuMDcwMy01LjkzNzUtMy4zMzU5LTIuMzQzOC0wLjI2MTcyLTQuNjk5MiAwLjQzMzU5LTYuNTI3MyAxLjkyOTd6XCIsXG4gICAgICBcIm0zNDQuOTMgNDEwLjY0YzIuMjYxNyA0LjI2MTcgNy41NDY5IDUuODgyOCAxMS44MTIgMy42MzI4IDM0Ljc2Mi0xOC40MzQgNjguMDE2LTM5LjU4NiA5OS40NDEtNjMuMjYyIDMuODA4Ni0yLjk4NDQgNC40NzI3LTguNDg4MyAxLjQ4ODMtMTIuMjk3LTIuOTg0NC0zLjgwNDctOC40ODgzLTQuNDY4OC0xMi4yOTMtMS40ODQ0LTMwLjY0OCAyMy4wMDQtNjMuMDMxIDQzLjU5OC05Ni44NjMgNjEuNTk4LTQuMjQyMiAyLjI4MTItNS44NDc3IDcuNTU4Ni0zLjU4NTkgMTEuODEyelwiLFxuICAgICAgXCJtMzUwIDM1Ny42MWMtMi44NDM4LTMuODk4NC04LjMwMDgtNC43NTc4LTEyLjIwNy0xLjkyNTgtMC41MjM0NCAwLjM1MTU2LTUwLjE4IDM2LjQ0NS0xMDUuNjEgNzEuMDk0LTIuMDM5MSAxLjE5NTMtMy41MDc4IDMuMTY0MS00LjA3NDIgNS40NjA5LTAuNTYyNSAyLjI5NjktMC4xNzU3OCA0LjcyMjcgMS4wNzgxIDYuNzMwNSAxLjI1MzkgMi4wMDM5IDMuMjY1NiAzLjQxNDEgNS41NzgxIDMuOTE0MSAyLjMxMjUgMC40OTYwOSA0LjcyNjYgMC4wMzkwNjIgNi42OTUzLTEuMjczNCA1Ni4wNDMtMzQuNzM4IDEwNi03MS40MDIgMTA2LjUzLTcxLjc5MyAzLjkyNTgtMi44MTY0IDQuODI0Mi04LjI4MTIgMi4wMTE3LTEyLjIwN3pcIixcbiAgICBdLFxuICApO1xuXG5sZXQgbWFnbmlmeSA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDI0IDI0IFwiLFxuICAgIFtcbiAgICAgIFwiTTE1LjUgMTRoLS43OWwtLjI4LS4yN0E2LjQ3MSA2LjQ3MSAwIDAgMCAxNiA5LjUgNi41IDYuNSAwIDEgMCA5LjUgMTZjMS42MSAwIDMuMDktLjU5IDQuMjMtMS41N2wuMjcuMjh2Ljc5bDUgNC45OUwyMC40OSAxOWwtNC45OS01em0tNiAwQzcuMDEgMTQgNSAxMS45OSA1IDkuNVM3LjAxIDUgOS41IDUgMTQgNy4wMSAxNCA5LjUgMTEuOTkgMTQgOS41IDE0elwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBjaGVzdCA9XG4gIHNpbXBsZV9pY29uKFxuICAgIH52aWV3PVwiMCAwIDEwMCAxMjVcIixcbiAgICBbXG4gICAgICBcIk01Niw1NHYtNGMwLTEuMSwwLjktMiwyLTJzMiwwLjksMiwydjRjMCwxLjEtMC45LDItMiwyUzU2LDU1LjEsNTYsNTR6IE05NCwyOHYxMnYzNmMwLDMuMy0yLjcsNi02LDZIMTJjLTMuMywwLTYtMi43LTYtNiAgVjQwVjI4YzAtNS41LDQuNS0xMCwxMC0xMGg2OEM4OS41LDE4LDk0LDIyLjUsOTQsMjh6IE04NCwyMkgyNGMxLjMsMS43LDIsMy43LDIsNnYxMGg2NFYyOEM5MCwyNC43LDg3LjMsMjIsODQsMjJ6IE0xMCwzOGgxMlYyOCAgYzAtMy4zLTIuNy02LTYtNnMtNiwyLjctNiw2VjM4eiBNMTIsNzhoMTBWNDJIMTB2MzRDMTAsNzcuMSwxMC45LDc4LDEyLDc4eiBNOTAsNDJIMjZ2MzZoNjJjMS4xLDAsMi0wLjksMi0yVjQyelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCBzcHJvdXQgPVxuICBzaW1wbGVfaWNvbihcbiAgICB+dmlldz1cIjAgMCAxMDAgMTI1XCIsXG4gICAgW1xuICAgICAgXCJNNDguOCw2OC4yYy0yLDAuOC0xLjYsMi4yLTIuMSwyLjVjLTAuOCwwLjMtMC4xLTEtMi4xLTEuNmMtNC41LTEuNC00LDQuMy02LjUsNC4yYy0xLjctMC4xLTEuOC0wLjYtMy40LTAuNCAgYy0xLjYsMC4zLTEuMSwyLjEtMi45LDIuM2MtMS4xLDAuMS0wLjcsMS4yLTIuNCwxYy0xLjQtMC4yLTIsMS42LTIuMSwyLjdjLTAuMSwwLjgtMC4zLDEuNi0xLjYsMi4zYy0xLjIsMC43LTMuMywwLjItNC40LDEuNyAgYy0xLjYsMi0xLjcsNS4xLTEuNyw1LjFoNjAuN2MwLDAtMC4xLTIuMy0yLjYtMy45Yy0wLjctMC40LDAuMS0wLjQsMC40LTJjMC4xLTAuNiwwLTEuNS0wLjctMi42Yy0wLjktMS4zLTIuNy0wLjktMy40LTAuNyAgYzAuMi0wLjksMC4yLTItMS4yLTIuOWMtMS0wLjctMS4zLTAuMy0xLjktMC40Yy0wLjctMC4xLTAuMy0wLjgtMS0xLjJjLTEuOC0xLjEtMC41LTIuMS0zLjMtMy4yYy0xLjctMC43LTItMC42LTUuNi0wLjYgIGMtMS40LDAtMS43LTIuMy0zLjYtMS44Yy0xLjksMC42LTEuMS0wLjUtMi4yLTEuNmMtMC4zLTAuMy0wLjktMC41LTEuNS0wLjVjLTAuMS0xMC42LTAuMS0yNC41LDAuMy0yNy4yYzAuNi00LjUsNS43LTkuOCwxMy4xLTEwLjYgIGMtNyw1LjItMTAuMiw2LjctMTAuOCw5LjljLTAuNiwzLjIsNS4xLDIuNSw5LjYsMGM0LjUtMi41LDEyLjEtMTQuNiwxMi40LTE5Yy02LjQtMS42LTIyLDQuMS0yNy4xLDE2LjZDNDkuNiwyNi42LDQ3LjcsMTIsMjAuMywxMiAgYy0wLjEsMi42LDAuNiwyLjksMS45LDYuMWMxLjMsMy4yLDkuOSwxOC4xLDIwLjcsMTcuNWMxLjYtMC4xLTAuMy0zLjgtMi45LTYuOGMwLDAtNi40LTUuOS04LjMtNy41YzYuNCwyLjUsMTYuMiw5LjksMTcsMTUuMyAgYzAuNSwzLjUsMC40LDIwLjIsMC4yLDMxLjdDNDksNjguMiw0OC45LDY4LjIsNDguOCw2OC4yelwiLFxuICAgIF0sXG4gICk7XG5cbmxldCB4ID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIyOTUwIDEwMDAgNDUwIDQ1MFwiLFxuICAgIFtcbiAgICAgIFwiTTMzODIuODQgNzg0LjMgMzQ2Mi40MyA4NjIuODI5IDM1NDAuOTYgNzgzLjIzOCAzNjAxLjIzIDg0Mi43MDQgMzUyMi43IDkyMi4yOTUgMzYwMi4yOSAxMDAwLjgyIDM1NDIuODIgMTA2MS4wOSAzNDYzLjIzIDk4Mi41NjYgMzM4NC43IDEwNjIuMTYgMzMyNC40MyAxMDAyLjY5IDM0MDIuOTYgOTIzLjEgMzMyMy4zNyA4NDQuNTdaXCIsXG4gICAgXSxcbiAgKTtcblxubGV0IGJhY2twYWNrID1cbiAgc2ltcGxlX2ljb24oXG4gICAgfnZpZXc9XCIwIDAgMTAwMCAxMDAwXCIsXG4gICAgW1xuICAgICAgXCJtOTAyLjA5IDc2OS41NWMwLjMzNTk0LTM1LjE0OCAwLjIwMzEyLTExMi4yOS01LjkxNDEtMTg4LjUyIDAuNTM5MDYgMzIuMTI1IDEuMzc4OSA2MS41MjMgMi40NzI3IDc2LjkwNiAwLjYwOTM4IDguODI0MiAxLjk1MzEgNTUuMDIzIDMuNDQxNCAxMTEuNjF6XCIsXG4gICAgICBcIm02MDguMTQgMTA4LjQ1YzEuMDQzLTI0LjY5NS0wLjI4OTA2LTUxLjE0NSAyMC42NDEtNDkuNjMzIDEwLjA0MyAwLjczMDQ3IDI3LjM0OCAzLjI4OTEgNDguNzU4IDcuNTcwMyAyMy43MzQgNC43NTM5IDIwLjM4NyAxMzMuNDUgMjAuMzg3IDEzMy40NWw4Ni4wNTEgMzMuNDU3YzIuODMyLTkzLjEzMy0yMC40NDktMjAxLjI4LTQzLjY4LTIwNy45LTM4LjkzLTExLjEwMi05Ni4wNTktMzQuMjQ2LTE1Mi44My0yMS44MjgtMzcuOTM0IDguMjkzLTQ4LjA4NiAxNDcuNTUtNDguMDg2IDE0Ny41NWw2Ni4zODMgMTcuMzg3YzAuMDAzOTA2IDAgMC42OTkyMi0yMC41NDMgMi4zNzg5LTYwLjA1OXpcIixcbiAgICAgIFwibTIwNy43NiA1NzkuMmMxMy45OCA1LjE3MTkgMzcuMDIgMTIuNzcgNjQuMjk3IDIxLjMyNCAyMC4zODctNTYuNDYxIDU0Ljk2MS05OS41MjcgNTQuOTYxLTk5LjUyN3M3Ljk4MDUtMjAuOTE0IDQ4LjA3LTEyLjQ5MmM0MC4wOTQgOC40MTAyIDQxLjk2NSAyNi43MTEgNDEuOTY1IDI2LjcxMXMtMjUuOTY5IDQyLjA5OC01MS4yMTUgOTguODMyYy0xLjU1ODYgMy41MDM5LTMuNjEzMyA3Ljg1OTQtNS4xNzE5IDEzLjIyMyA2My41NjIgMTguNTI3IDEyNC45OCAzNC45MzQgMTQyLjY0IDM2LjUzOSAzNC43NjYgMy4xNzk3IDEyMi4wOSA2Ljk5NjEgMTM4LjY4LTc3LjAzOSAxNi4zNjctODIuOTM0IDMyLjU2Ni0xMzMuNTIgNDYuMzY3LTE2NS4xMSAyLjc2MTctNi44OTg0IDUuMjQyMi0xMi42MTMgNy4wNjY0LTE2LjczOCAzLjc1NzgtOC40OTYxIDE1LjE5MS0yNS41MzUgMzEuODI0LTQyLjIzOHYtMC4wMjM0MzhjMC4wNDY4NzUtMC4xMjEwOSAwLjEyMTA5LTAuMTc5NjkgMC4yMTQ4NC0wLjIwMzEyIDIyLjIyMy0yMi4xOTkgNTMuNjY0LTQzLjcwMyA4OC43NjYtNDMuNTcgMS44NDc3IDAgNC4xMDU1IDAuMjI2NTYgNi42MTMzIDAuNjEzMjgtMjAuNjUyLTIyLjk2OS00NC4xODQtNDIuNTI3LTY5LjIzOC01Mi4xODgtNS42OTkyLTIuMTk1My0yMTIuNjItODMuOTc3LTI3NC40NC03NS4yMjctMS43NzczIDAuMjUzOTEtMy40MzM2IDAuNDkyMTktNS4wMjczIDAuNzE4NzUgMy0wLjQzMzU5IDUuMDI3My0wLjcxODc1IDUuMDI3My0wLjcxODc1LTAuMDAzOTA3LTAuMDAzOTA2LTE0MS43MyAzLjUxMTctMjM1LjQ1IDk3LjE1Ni00OC45NjEgNDguOTEtOTEuOTQ1IDEzNi42Ni0xMTguOTMgMjIwLjk3LTAuMzQ3NjYgMjEuMzk4IDI2Ljk1MyA0OC4yNzcgODIuOTggNjguOTg4elwiLFxuICAgICAgXCJtNDg0LjM1IDcyNi42NGMtMjcuODYzLTUuMTEzMy03OS42MjEtMTkuMjk3LTEzNC43OS0zNS42MDUtOC4zOTg0IDMzLjIyNy0xLjI2MTcgOTAuMzAxLTEuMjYxNyA5MC4zMDFzLTEwLjg0OCAyNS44OTUtNTMuNjA1IDE2LjQzYy0zNi40MzQtOC4wODk4LTM1LjQ5Ni0zNC4zNzktMzUuNDk2LTM0LjM3OXMtOS4zMTI1LTUzLjM1Mi0xLjEwNTUtMTAwLjMxYy01Mi41MTItMTYuNTM1LTk3LjEyOS0zMS4zNzktMTEzLjU0LTM3LjY4LTE5Ljc1NC03LjU1ODYtMzMuOTk2LTE4LjA5OC00NC4yNTgtMjkuODY3LTAuNzU3ODEgNC42NjgtMS40Mjk3IDIzLjUyLTIuMDYyNSAyOC4wMDgtMzcuMjE5IDI2NS4xIDQwLjAzNSAzNzkuMjcgNDUuNTA4IDQwMy4zOCA3LjM1NTUgMzIuNDEgMTQ4LjU3IDEwMC4zNyAyODQuODkgMTUwLjE2IDc5LjA3OCAyOC44ODMgMTY3LjM2IDIzLjI4MSAyMDIuNDMgMjAuNzYybDIuNTY2NC0wLjE0NDUzYzUuNTc4MS0xMDIuNSAyMC43NzMtMzY5LjMyIDI4LjIyMy01MzIuNjEtMTEuODA1IDU5Ljk1My0xMTAuNzkgNzMuNzc3LTE3Ny41IDYxLjU2MnpcIixcbiAgICAgIFwibTkwMi4wOSA3NjkuNTVjLTEuNDg4My01Ni41OTQtMi44MjAzLTEwMi43Ny0zLjQ0NTMtMTExLjY0LTEuMDkzOC0xNS4zNTktMS45MzM2LTQ0Ljc2Mi0yLjQ3MjctNzYuODk1LTUuNDYwOS02Ny44NzEtMjIuOTU3LTE0MC43Mi0zNy45MjItMTc4LjU5LTI1LjE1Mi02My43NDItOTguMTk1IDE2LjIxMS0xMTguODIgNjYuNTUxLTIxLjM1OSA1Mi4xMjktNDEuNTc4IDY1My4wMy00My41NDcgNzEyLjYgNTEtMTMuMjg1IDEyNC4wNS0zMi4zNTIgMTMzLjAxLTQ2LjQwMiAxOC45NzMtMjkuNzExIDI5LjI1OC01OC40NzcgMzMuOTk2LTgyLjk2OSAzLjE0NDUtMTYuMzA5IDQ1LjMyNC0zMS41NTkgNDUuMzI0LTMxLjU1OXMtMi45ODgzLTEyOS42LTUuNjg3NS0yMzQuMTlsLTAuNzQyMTkgMi43NjE3YzAgMC4wMTk1MzEgMC4yMDMxMi03LjE5MTQgMC4zMTI1LTE5LjY3MnpcIixcbiAgICAgIFwibTEwODkuMSA1MDguMjVzLTEwLjgxMi0xMjguNzktMTMuMjYyLTE1My44MmMtNS45Mjk3LTYwLjQ0NS02MC40NTctMjU0Ljg0LTI0Ni4zMS0xMDUuOWw0OS4yMzQgNTMuNzExczEyNS45NS0xMTMuMTggMTMwLjcgMTU2LjVjMC4zOTQ1MyAyMi44MjQgMS45MDYyIDU0LjcwNyAxNS42MzcgMjQ2LjU5IDE1LjE5MSAyMTIuMTUtNjcuNzc3IDIxMy4zMi02Ny43NzcgMjEzLjMybDMuNzQyMiA5MC4yMTVzMzAuODE2LTguMDYyNSA2Mi42NDEtMjEuNDU3YzQ1LjAzNS0xOC45NzMgODguMTg4LTk4LjM3NSA4OC4xODgtMjE0Ljc3LTAuMDM5MDYyLTQ2LjA1MS0yMi43OTMtMjY0LjQxLTIyLjc5My0yNjQuNDF6XCIsXG4gICAgICBcIm00MzguMjUgMTQ4LjE4IDQxLjA5LTYuMzEyNXYtMzQuNzczbDcuOTA2Mi0yOC40NDFzLTM3Ljk0NSAxNy4zODctNDguOTk2IDM0Ljc2NmMtMTEuMDYyIDE3LjM4Ny0xNS44MTYgMjYuODY3LTE1LjgxNiAzNC43NjYgMCA3LjkwNjIgMTUuODE2LTAuMDAzOTA3IDE1LjgxNi0wLjAwMzkwN3pcIixcbiAgICBdLFxuICApO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBIYXozbGNvcmU7XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+aW5qZWN0OiBTZXR0aW5ncy5VcGRhdGUudCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgIHNldHRpbmdzOiBDb3JlU2V0dGluZ3MuRXZhbHVhdGlvbi50LFxuICAgICkgPT4ge1xuICBsZXQgbW9kYWwgPSBkaXYofmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcInNldHRpbmdzLW1vZGFsXCIpXSkpO1xuICBsZXQgc2V0dGluZyA9IChpY29uLCBuYW1lLCBjdXJyZW50LCBhY3Rpb246IFNldHRpbmdzLlVwZGF0ZS50KSA9PlxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzZXR0aW5ncy10b2dnbGVcIildKSxcbiAgICAgIFtcbiAgICAgICAgV2lkZ2V0cy50b2dnbGUofnRvb2x0aXA9bmFtZSwgaWNvbiwgY3VycmVudCwgXyA9PiBpbmplY3QoYWN0aW9uKSksXG4gICAgICAgIHRleHQobmFtZSksXG4gICAgICBdLFxuICAgICk7XG4gIFtcbiAgICBtb2RhbChbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc18oXCJzZXR0aW5ncy1tb2RhbC10b3BcIildKSxcbiAgICAgICAgW1dpZGdldHMuYnV0dG9uKEljb25zLngsIF8gPT4gaW5qZWN0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpXSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcImhcIixcbiAgICAgICAgXCJzaG93IGZ1bGwgc3RlcCB0cmFjZVwiLFxuICAgICAgICBzZXR0aW5ncy5zdGVwcGVyX2hpc3RvcnksXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd1JlY29yZCksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCJ8XCIsXG4gICAgICAgIFwic2hvdyBjYXNlIGNsYXVzZXNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19jYXNlX2NsYXVzZXMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc2VDbGF1c2VzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIs67XCIsXG4gICAgICAgIFwic2hvdyBmdW5jdGlvbiBib2RpZXNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19mbl9ib2RpZXMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0ZuQm9kaWVzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcInhcIixcbiAgICAgICAgXCJzaG93IGZpeHBvaW50c1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2ZpeHBvaW50cyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93Rml4cG9pbnRzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBVbmljb2RlLmNhc3RBcnJvd1N5bSxcbiAgICAgICAgXCJzaG93IGNhc3RzXCIsXG4gICAgICAgIHNldHRpbmdzLnNob3dfY2FzdHMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0Nhc3RzKSxcbiAgICAgICksXG4gICAgICBzZXR0aW5nKFxuICAgICAgICBcIvCflI1cIixcbiAgICAgICAgXCJzaG93IGxvb2t1cCBzdGVwc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X2xvb2t1cF9zdGVwcyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93TG9va3VwcyksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCLij6/vuI9cIixcbiAgICAgICAgXCJzaG93IHN0ZXBwZXIgZmlsdGVyc1wiLFxuICAgICAgICBzZXR0aW5ncy5zaG93X3N0ZXBwZXJfZmlsdGVycyxcbiAgICAgICAgRXZhbHVhdGlvbihTaG93RmlsdGVycyksXG4gICAgICApLFxuICAgICAgc2V0dGluZyhcbiAgICAgICAgXCLwn6SrXCIsXG4gICAgICAgIFwic2hvdyBoaWRkZW4gc3RlcHNcIixcbiAgICAgICAgc2V0dGluZ3Muc2hvd19oaWRkZW5fc3RlcHMsXG4gICAgICAgIEV2YWx1YXRpb24oU2hvd0hpZGRlblN0ZXBzKSxcbiAgICAgICksXG4gICAgXSksXG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jbGFzc18oXCJtb2RhbC1iYWNrXCIpLFxuICAgICAgICAgIEF0dHIub25fbW91c2Vkb3duKF8gPT4gaW5qZWN0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpLFxuICAgICAgICBdKSxcbiAgICAgIFtdLFxuICAgICksXG4gIF07XG59O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IHNlcV9iYXNpY19leHBfZXggPSB7XG4gIHN1Yl9pZDogU2VxQmFzaWMsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxOyAyXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEsIHdoaWNoIGlzIGlnbm9yZWQuIFRoZW4gdGhlIHJpZ2h0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIHRvIDIuXCIsXG59O1xuLy8gVE9ETyBhcmUgdGhlc2UgcmVhbGx5IHRoZSBjb3JyZWN0IG1lc3NhZ2VzL2V4cGxhbmF0aW9uc1xubGV0IHNlcV90ZXN0X2V4cF9leCA9IHtcbiAgc3ViX2lkOiBTZXFUZXN0LFxuICB0ZXJtOiBta19leGFtcGxlKFwidGVzdCB0cnVlIGVuZDsgM1wiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhbmQgcmVjb3JkZWQgYXMgYSBwYXNzaW5nIHRlc3QgYmVjYXVzZSB0aGUgYm9keSBvZiB0aGUgdGVzdCBpcyB0cnVlLiBUaGVuIHRoZSByaWdodCBleHByZXNzaW9uIGlzIGV2YWxhdXRlcyB0byAzLlwiLFxufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgc2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZXhwMV9pZDogSWQudCwgfmV4cDJfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX2V4cDEpLCBleHAxX2lkKSxcbiAgKFBpZWNlLmlkKF9leHAyKSwgZXhwMl9pZCksXG5dO1xubGV0IHNlcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFtsZWZ0IGV4cHJlc3Npb25dKCVzKSBpcyBldmFsdWF0ZWQsIHRoZW4gdGhlIFtyaWdodCBleHByZXNzaW9uXSglcykgaXMgZXZhbHVhdGVkLlwiO1xuICB7XG4gICAgaWQ6IFNlcUV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHAxLCBzZXEoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtzZXFfYmFzaWNfZXhwX2V4LCBzZXFfdGVzdF9leHBfZXhdLFxuICB9O1xufTtcblxubGV0IHNlcXM6IGdyb3VwID0ge2lkOiBTZXFFeHAsIGZvcm1zOiBbc2VxX2V4cF19O1xuIiwibGV0IGZpbGxlZF9zbGlkZXMgPSBbXTtcblxubGV0IGVtcHR5OiBTY3JhdGNoU2xpZGUucGVyc2lzdGVudF9zdGF0ZSA9IHtcbiAgemlwcGVyOiBcIigoc2VsZWN0aW9uKChmb2N1cyBMZWZ0KShjb250ZW50KCkpKSkoYmFja3BhY2soKSkocmVsYXRpdmVzKChzaWJsaW5ncygoKSgoR3JvdXQoKGlkIDApKHNoYXBlIENvbnZleCkpKSkpKShhbmNlc3RvcnMoKSkpKShjYXJldCBPdXRlcikpXCIsXG4gIGJhY2t1cF90ZXh0OiBcIlwiLFxufTtcblxubGV0IG51bV9lbXB0eSA9IDg7XG5cbmxldCBpbml0X2RhdGEgPSBmaWxsZWRfc2xpZGVzIEAgTGlzdC5pbml0KG51bV9lbXB0eSwgXyA9PiBlbXB0eSk7XG5cbmFzc2VydChMaXN0Lmxlbmd0aChpbml0X2RhdGEpID4gMCk7XG5cbmxldCBpbml0ID0gKCkgPT4gKDAsIGluaXRfZGF0YSB8PiBMaXN0Lm1hcChTY3JhdGNoU2xpZGUudW5wZXJzaXN0KSk7XG5cbmxldCBpbml0X250aCA9IG4gPT4ge1xuICBsZXQgZGF0YSA9IExpc3QubnRoKGluaXRfZGF0YSwgbik7XG4gIFNjcmF0Y2hTbGlkZS51bnBlcnNpc3QoZGF0YSk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xuXG5sZXQgbmFycmF0aXZlX2NlbGwgPSAoY29udGVudDogTm9kZS50KSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5jbGFzc18oXCJjZWxsXCIpLFxuICAgIFtkaXYofmF0dHI9QXR0ci5jbGFzc18oXCJjZWxsLWNoYXB0ZXJcIiksIFtjb250ZW50XSldLFxuICApO1xuXG5sZXQgc2ltcGxlX2NlbGxfaXRlbSA9IChjb250ZW50OiBsaXN0KE5vZGUudCkpID0+XG4gIGRpdih+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCJdKSwgY29udGVudCk7XG5cbmxldCBjYXB0aW9uID0gKH5yZXN0OiBvcHRpb24oc3RyaW5nKT0/LCBib2xkZWQ6IHN0cmluZykgPT5cbiAgZGl2KFxuICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc2VzKFtcImNlbGwtY2FwdGlvblwiXSldKSxcbiAgICBbc3Ryb25nKFt0ZXh0KGJvbGRlZCldKV0gQCAocmVzdCB8PiBPcHRpb24ubWFwKHRleHQpIHw+IE9wdGlvbi50b19saXN0KSxcbiAgKTtcblxubGV0IHNpbXBsZV9jZWxsX3ZpZXcgPSAoaXRlbXM6IGxpc3QodCkpID0+XG4gIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImNlbGxcIiksIGl0ZW1zKTtcblxubGV0IHJlcG9ydF9mb290ZXJfdmlldyA9IGNvbnRlbnQgPT4ge1xuICBkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiLCBcImNlbGwtcmVwb3J0XCJdKSwgY29udGVudCk7XG59O1xuXG5sZXQgcGFuZWwgPSAofmNsYXNzZXM9W10sIGNvbnRlbnQsIH5mb290ZXI6IG9wdGlvbih0KSkgPT4ge1xuICBzaW1wbGVfY2VsbF92aWV3KFxuICAgIFtkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcImNlbGwtaXRlbVwiLCBcInBhbmVsXCJdIEAgY2xhc3NlcyksIGNvbnRlbnQpXVxuICAgIEAgT3B0aW9uLnRvX2xpc3QoZm9vdGVyKSxcbiAgKTtcbn07XG5cbmxldCB0aXRsZV9jZWxsID0gdGl0bGUgPT4ge1xuICBzaW1wbGVfY2VsbF92aWV3KFtcbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRpdGxlLWNlbGxcIiksXG4gICAgICBbZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwidGl0bGUtdGV4dFwiKSwgW3RleHQodGl0bGUpXSldLFxuICAgICksXG4gIF0pO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBTZXhwbGliLlN0ZDtcbm9wZW4gTm9kZTtcbm9wZW4gVXRpbDtcblxudHlwZSBtb2RlbCA9IE1vZGVsUmVzdWx0LnQ7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgYWN0aW9uID1cbiAgfCBTdGVwcGVyRWRpdG9yQWN0aW9uKGludCwgQWN0aW9uLnQpXG4gIHwgU3RlcHBlckFjdGlvbihVcGRhdGVBY3Rpb24uc3RlcHBlcl9hY3Rpb24pXG4gIHwgVG9nZ2xlU3RlcHBlcjtcblxubGV0IHVwZGF0ZSA9ICh+c2V0dGluZ3M6IENvcmVTZXR0aW5ncy50LCBhY3Rpb24sIG1vZGVsKSA9PlxuICBzd2l0Y2ggKGFjdGlvbikge1xuICB8IFN0ZXBwZXJFZGl0b3JBY3Rpb24oaWR4LCBhY3Rpb24pID0+XG4gICAgTW9kZWxSZXN1bHQucGVyZm9ybSh+c2V0dGluZ3MsIGlkeCwgYWN0aW9uLCBtb2RlbClcbiAgfCBTdGVwcGVyQWN0aW9uKHN0ZXBwZXJfYWN0aW9uKSA9PlxuICAgIHN3aXRjaCAoc3RlcHBlcl9hY3Rpb24pIHtcbiAgICB8IFVwZGF0ZUFjdGlvbi5TdGVwRm9yd2FyZChpZHgpID0+IE1vZGVsUmVzdWx0LnN0ZXBfZm9yd2FyZChpZHgsIG1vZGVsKVxuICAgIHwgVXBkYXRlQWN0aW9uLlN0ZXBCYWNrd2FyZCA9PlxuICAgICAgTW9kZWxSZXN1bHQuc3RlcF9iYWNrd2FyZCh+c2V0dGluZ3M9c2V0dGluZ3MuZXZhbHVhdGlvbiwgbW9kZWwpXG4gICAgfCBVcGRhdGVBY3Rpb24uSGlkZVN0ZXBwZXIgPT4gTW9kZWxSZXN1bHQudG9nZ2xlX3N0ZXBwZXIofnNldHRpbmdzLCBtb2RlbClcbiAgICB9XG4gIHwgVG9nZ2xlU3RlcHBlciA9PiBNb2RlbFJlc3VsdC50b2dnbGVfc3RlcHBlcih+c2V0dGluZ3MsIG1vZGVsKVxuICB9O1xuXG5tb2R1bGUgVmlldyA9IHtcbiAgdHlwZSBldmVudCA9XG4gICAgfCBNYWtlQWN0aXZlKEVkaXRvcnMuU2VsZWN0aW9uLmNlbGwpXG4gICAgfCBKdW1wVG8oSGF6M2xjb3JlLklkLnQpO1xuXG4gIGxldCBlcnJvcl9tc2cgPSAoZXJyOiBQcm9ncmFtUmVzdWx0LmVycm9yKSA9PlxuICAgIHN3aXRjaCAoZXJyKSB7XG4gICAgfCBFdmF1bGF0b3JFcnJvcihlcnIpID0+IEV2YWx1YXRvckVycm9yLnNob3coZXJyKVxuICAgIHwgVW5rbm93bkV4Y2VwdGlvbihzdHIpID0+IHN0clxuICAgIHwgVGltZW91dCA9PiBcIkV2YWx1YXRpb24gdGltZWQgb3V0XCJcbiAgICB9O1xuXG4gIGxldCBzdGF0dXNfb2Y6IFByb2dyYW1SZXN1bHQudCA9PiBzdHJpbmcgPVxuICAgIGZ1blxuICAgIHwgUmVzdWx0UGVuZGluZyA9PiBcInBlbmRpbmdcIlxuICAgIHwgUmVzdWx0T2soXykgPT4gXCJva1wiXG4gICAgfCBSZXN1bHRGYWlsKF8pID0+IFwiZmFpbFwiXG4gICAgfCBPZmYoXykgPT4gXCJvZmZcIjtcblxuICBsZXQgc3RlcHBlcl92aWV3ID1cbiAgICAgIChcbiAgICAgICAgfmdsb2JhbHMgYXMge3NldHRpbmdzLCBpbmplY3RfZ2xvYmFsLCBffSBhcyBnbG9iYWxzOiBHbG9iYWxzLnQsXG4gICAgICAgIH5zaWduYWwgYXMgXzogZXZlbnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5pbmplY3Q6IGFjdGlvbiA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfnJlYWRfb25seTogYm9vbCxcbiAgICAgICAgc3RlcHBlcjogU3RlcHBlci50LFxuICAgICAgKSA9PiB7XG4gICAgbGV0IGhpc3RvcnkgPVxuICAgICAgU3RlcHBlci5nZXRfaGlzdG9yeSh+c2V0dGluZ3M9c2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLCBzdGVwcGVyKTtcbiAgICBzd2l0Y2ggKGhpc3RvcnkpIHtcbiAgICB8IFtdID0+IFtdXG4gICAgfCBbaGQsIC4uLl9dID0+XG4gICAgICBsZXQgYnV0dG9uX2JhY2sgPVxuICAgICAgICBXaWRnZXRzLmJ1dHRvbl9kKFxuICAgICAgICAgIEljb25zLnVuZG8sXG4gICAgICAgICAgaW5qZWN0KFN0ZXBwZXJBY3Rpb24oU3RlcEJhY2t3YXJkKSksXG4gICAgICAgICAgfmRpc2FibGVkPVxuICAgICAgICAgICAgIVN0ZXBwZXIuY2FuX3VuZG8ofnNldHRpbmdzPXNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbiwgc3RlcHBlciksXG4gICAgICAgICAgfnRvb2x0aXA9XCJTdGVwIEJhY2t3YXJkc1wiLFxuICAgICAgICApO1xuICAgICAgbGV0IGJ1dHRvbl9oaWRlX3N0ZXBwZXIgPVxuICAgICAgICBXaWRnZXRzLnRvZ2dsZSh+dG9vbHRpcD1cIlNob3cgU3RlcHBlclwiLCBcInNcIiwgdHJ1ZSwgXyA9PlxuICAgICAgICAgIGluamVjdChTdGVwcGVyQWN0aW9uKEhpZGVTdGVwcGVyKSlcbiAgICAgICAgKTtcbiAgICAgIGxldCB0b2dnbGVfc2hvd19oaXN0b3J5ID1cbiAgICAgICAgV2lkZ2V0cy50b2dnbGUoXG4gICAgICAgICAgfnRvb2x0aXA9XCJTaG93IEhpc3RvcnlcIixcbiAgICAgICAgICBcImhcIixcbiAgICAgICAgICBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24uc3RlcHBlcl9oaXN0b3J5LFxuICAgICAgICAgIF8gPT5cbiAgICAgICAgICBpbmplY3RfZ2xvYmFsKFNldChFdmFsdWF0aW9uKFNob3dSZWNvcmQpKSlcbiAgICAgICAgKTtcbiAgICAgIGxldCBldmFsX3NldHRpbmdzID1cbiAgICAgICAgV2lkZ2V0cy5idXR0b24oSWNvbnMuZ2VhciwgXyA9PlxuICAgICAgICAgIGluamVjdF9nbG9iYWwoU2V0KEV2YWx1YXRpb24oU2hvd1NldHRpbmdzKSkpXG4gICAgICAgICk7XG4gICAgICBsZXQgKHN0YXRpY3MsIGVkaXRvciwgXykgPSBoZC5oaWRkZW5faGlzdG9yeSB8PiBBYmEuaGQ7XG4gICAgICBsZXQgY3VycmVudF9tb2RlbDogU3RlcHBlckVkaXRvci5TdGVwcGFibGUubW9kZWwgPSB7XG4gICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBzdGF0aWNzLFxuICAgICAgICB9LFxuICAgICAgICBuZXh0X3N0ZXBzOlxuICAgICAgICAgIExpc3QubWFwKFxuICAgICAgICAgICAgKG9wdGlvbjogRXZhbHVhdG9yU3RlcC5FdmFsT2JqLnQpID0+IG9wdGlvbi5kX2xvYyB8PiBFeHAucmVwX2lkLFxuICAgICAgICAgICAgc3RlcHBlci5uZXh0X29wdGlvbnMsXG4gICAgICAgICAgKSxcbiAgICAgIH07XG4gICAgICBsZXQgY3VycmVudCA9XG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwiY2VsbC1yZXN1bHRcIl0pLFxuICAgICAgICAgIHJlYWRfb25seVxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwi4omhXCIpXSksXG4gICAgICAgICAgICAgIFN0ZXBwZXJFZGl0b3IuU3RlcHBhYmxlLnZpZXcoXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogTWF5YmUgZ2V0IHJpZCBvZiB0aGlzIHNpZ25hbD9cbiAgICAgICAgICAgICAgICB+Z2xvYmFscyxcbiAgICAgICAgICAgICAgICB+c2lnbmFsPVxuICAgICAgICAgICAgICAgICAgKFRha2VTdGVwKHgpKSA9PiBpbmplY3QoU3RlcHBlckFjdGlvbihTdGVwRm9yd2FyZCh4KSkpLFxuICAgICAgICAgICAgICAgIH5vdmVybGF5cz1bXSxcbiAgICAgICAgICAgICAgICBjdXJyZW50X21vZGVsLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgXVxuICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImVxdWl2XCIpLCBbTm9kZS50ZXh0KFwi4omhXCIpXSksXG4gICAgICAgICAgICAgIFN0ZXBwZXJFZGl0b3IuU3RlcHBhYmxlLnZpZXcoXG4gICAgICAgICAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgICAgICAgICAgfnNpZ25hbD1cbiAgICAgICAgICAgICAgICAgIChUYWtlU3RlcCh4KSkgPT4gaW5qZWN0KFN0ZXBwZXJBY3Rpb24oU3RlcEZvcndhcmQoeCkpKSxcbiAgICAgICAgICAgICAgICB+b3ZlcmxheXM9W10sXG4gICAgICAgICAgICAgICAgY3VycmVudF9tb2RlbCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgYnV0dG9uX2JhY2ssXG4gICAgICAgICAgICAgIGV2YWxfc2V0dGluZ3MsXG4gICAgICAgICAgICAgIHRvZ2dsZV9zaG93X2hpc3RvcnksXG4gICAgICAgICAgICAgIGJ1dHRvbl9oaWRlX3N0ZXBwZXIsXG4gICAgICAgICAgICBdLFxuICAgICAgICApO1xuICAgICAgbGV0IHByZXZpb3VzX3N0ZXAgPVxuICAgICAgICAgICh+aGlkZGVuOiBib29sLCB+aWR4IGFzIF8sIHN0ZXA6IFN0ZXBwZXIuc3RlcF9pbmZvKTogbGlzdChOb2RlLnQpID0+IHtcbiAgICAgICAgbGV0IChzdGF0aWNzLCBlZGl0b3IsIF8pID0gc3RlcC5oaWRkZW5faGlzdG9yeSB8PiBBYmEuaGQ7XG4gICAgICAgIGxldCBtb2RlbDogU3RlcHBlckVkaXRvci5TdGVwcGVkLm1vZGVsID0ge1xuICAgICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgc3RhdGljcyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0ZXA6IHN0ZXAuY2hvc2VuX3N0ZXAsIC8vIFRPRE9bTWF0dF06IHJlZmFjdG9yIGF3YXkgT3B0aW9uLmdldFxuICAgICAgICAgIHN0ZXBfaWQ6XG4gICAgICAgICAgICBzdGVwLmNob3Nlbl9zdGVwXG4gICAgICAgICAgICB8PiBPcHRpb24ubWFwKCh4OiBFdmFsdWF0b3JTdGVwLnN0ZXApID0+IHguZF9sb2MgfD4gRXhwLnJlcF9pZCksXG4gICAgICAgIH07XG4gICAgICAgIFtcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFxuICAgICAgICAgICAgICAgIFtcImNlbGwtaXRlbVwiLCBcImNlbGwtcmVzdWx0XCJdIEAgKGhpZGRlbiA/IFtcImhpZGRlblwiXSA6IFtdKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NfKFwiZXF1aXZcIiksIFtOb2RlLnRleHQoXCLiiaFcIildKSxcbiAgICAgICAgICAgICAgU3RlcHBlckVkaXRvci5TdGVwcGVkLnZpZXcofmdsb2JhbHMsIH5vdmVybGF5cz1bXSwgbW9kZWwpLFxuICAgICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInN0ZXBwZXItanVzdGlmaWNhdGlvblwiXSksXG4gICAgICAgICAgICAgICAgc3RlcC5jaG9zZW5fc3RlcFxuICAgICAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAoKGNob3Nlbl9zdGVwOiBFdmFsdWF0b3JTdGVwLnN0ZXApID0+XG4gICAgICAgICAgICAgICAgICAgICBjaG9zZW5fc3RlcC5rbmQgfD4gU3RlcHBlci5nZXRfanVzdGlmaWNhdGlvbiB8PiBOb2RlLnRleHRcbiAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfD4gT3B0aW9uLnRvX2xpc3QsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICksXG4gICAgICAgIF07XG4gICAgICB9O1xuICAgICAgKFxuICAgICAgICAoXG4gICAgICAgICAgc2V0dGluZ3MuY29yZS5ldmFsdWF0aW9uLnN0ZXBwZXJfaGlzdG9yeVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGxldCBzdGVwczogbGlzdCgoYm9vbCwgU3RlcHBlci5zdGVwX2luZm8pKSA9XG4gICAgICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICAgICBzdGVwID0+XG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAoZmFsc2UsIHN0ZXApLFxuICAgICAgICAgICAgICAgICAgICAgIC4uLnNldHRpbmdzLmNvcmUuZXZhbHVhdGlvbi5zaG93X2hpZGRlbl9zdGVwc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBTdGVwcGVyLmhpZGRlbl9zdGVwc19vZl9pbmZvKHN0ZXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHw+IExpc3QubWFwKHggPT4gKHRydWUsIHgpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIGhpc3RvcnksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHw+IExpc3QuZmxhdHRlblxuICAgICAgICAgICAgICAgIHw+IExpc3QudGw7XG4gICAgICAgICAgICAgIExpc3QubWFwaShcbiAgICAgICAgICAgICAgICAoaWR4LCAoaGlkZGVuLCBzdGVwKSkgPT5cbiAgICAgICAgICAgICAgICAgIHByZXZpb3VzX3N0ZXAofmhpZGRlbiwgfmlkeD1pZHggKyAxLCBzdGVwKSxcbiAgICAgICAgICAgICAgICBzdGVwcyB8PiBMaXN0LnJldixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8PiBMaXN0LmZsYXR0ZW47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IFtdXG4gICAgICAgIClcbiAgICAgICAgQCBbY3VycmVudF1cbiAgICAgIClcbiAgICAgIEAgKFxuICAgICAgICBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24uc2hvd19zZXR0aW5nc1xuICAgICAgICAgID8gU2V0dGluZ3NNb2RhbC52aWV3KFxuICAgICAgICAgICAgICB+aW5qZWN0PXUgPT4gaW5qZWN0X2dsb2JhbChTZXQodSkpLFxuICAgICAgICAgICAgICBzZXR0aW5ncy5jb3JlLmV2YWx1YXRpb24sXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBbXVxuICAgICAgKTtcbiAgICB9O1xuICB9O1xuXG4gIGxldCBsaXZlX2V2YWwgPVxuICAgICAgKFxuICAgICAgICB+Z2xvYmFsczogR2xvYmFscy50LFxuICAgICAgICB+c2lnbmFsOiBldmVudCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfmluamVjdDogYWN0aW9uID0+IFVpX2VmZmVjdC50KHVuaXQpLFxuICAgICAgICB+c2VsZWN0ZWQsXG4gICAgICAgIH5sb2NrZWQsXG4gICAgICAgIHJlc3VsdDogTW9kZWxSZXN1bHQuZXZhbF9yZXN1bHQsXG4gICAgICApID0+IHtcbiAgICBsZXQgZWRpdG9yID1cbiAgICAgIHN3aXRjaCAocmVzdWx0LmV2YWx1YXRpb24sIHJlc3VsdC5wcmV2aW91cykge1xuICAgICAgfCAoUmVzdWx0T2socmVzKSwgXykgPT4gcmVzLmVkaXRvclxuICAgICAgfCAoUmVzdWx0UGVuZGluZywgUmVzdWx0T2socmVzKSkgPT4gcmVzLmVkaXRvclxuICAgICAgfCBfID0+IHJlc3VsdC5lbGFiLmQgfD4gRXhwVG9TZWdtZW50LmV4cF90b19lZGl0b3IofmlubGluZT1mYWxzZSlcbiAgICAgIH07XG4gICAgbGV0IGNvZGVfdmlldyA9XG4gICAgICBDb2RlRWRpdG9yLnZpZXcoXG4gICAgICAgIH5zaWduYWw9XG4gICAgICAgICAgZnVuXG4gICAgICAgICAgfCBNYWtlQWN0aXZlID0+IHNpZ25hbChNYWtlQWN0aXZlKFJlc3VsdCgwKSkpLFxuICAgICAgICB+aW5qZWN0PWEgPT4gaW5qZWN0KFN0ZXBwZXJFZGl0b3JBY3Rpb24oMCwgYSkpLFxuICAgICAgICB+Z2xvYmFscyxcbiAgICAgICAgfnNlbGVjdGVkLFxuICAgICAgICB+aGlnaGxpZ2h0cz1Ob25lLFxuICAgICAgICB+c29ydD1Tb3J0LnJvb3QsXG4gICAgICAgIHtlZGl0b3IsIHN0YXRpY3M6IENhY2hlZFN0YXRpY3MuZW1wdHlfc3RhdGljc30sXG4gICAgICApO1xuICAgIGxldCBleG5fdmlldyA9XG4gICAgICBzd2l0Y2ggKHJlc3VsdC5ldmFsdWF0aW9uKSB7XG4gICAgICB8IFJlc3VsdEZhaWwoZXJyKSA9PiBbXG4gICAgICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJlcnJvci1tc2dcIl0pLCBbdGV4dChlcnJvcl9tc2coZXJyKSldKSxcbiAgICAgICAgXVxuICAgICAgfCBfID0+IFtdXG4gICAgICB9O1xuICAgIE5vZGUuKFxuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wiY2VsbC1pdGVtXCIsIFwiY2VsbC1yZXN1bHRcIl0pLFxuICAgICAgICBleG5fdmlld1xuICAgICAgICBAIFtcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wic3RhdHVzXCIsIHN0YXR1c19vZihyZXN1bHQuZXZhbHVhdGlvbildKSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgZGl2KH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJzcGlubmVyXCJdKSwgW10pLFxuICAgICAgICAgICAgICBkaXYofmF0dHI9QXR0ci5jbGFzc2VzKFtcImVxXCJdKSwgW3RleHQoXCLiiaFcIildKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKSxcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1wicmVzdWx0XCIsIHN0YXR1c19vZihyZXN1bHQuZXZhbHVhdGlvbildKSxcbiAgICAgICAgICAgIFtjb2RlX3ZpZXddLFxuICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgQCAoXG4gICAgICAgICAgbG9ja2VkXG4gICAgICAgICAgICA/IFtdXG4gICAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgV2lkZ2V0cy50b2dnbGUofnRvb2x0aXA9XCJTaG93IFN0ZXBwZXJcIiwgXCJzXCIsIGZhbHNlLCBfID0+XG4gICAgICAgICAgICAgICAgaW5qZWN0KFRvZ2dsZVN0ZXBwZXIpXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBdXG4gICAgICAgICksXG4gICAgICApXG4gICAgKTtcbiAgfTtcblxuICBsZXQgZm9vdGVyID1cbiAgICAgIChcbiAgICAgICAgfmdsb2JhbHM6IEdsb2JhbHMudCxcbiAgICAgICAgfnNpZ25hbCxcbiAgICAgICAgfmluamVjdCxcbiAgICAgICAgfnJlc3VsdDogTW9kZWxSZXN1bHQudCxcbiAgICAgICAgfnNlbGVjdGVkOiBvcHRpb24oaW50KSxcbiAgICAgICAgfmxvY2tlZCxcbiAgICAgICkgPT5cbiAgICBzd2l0Y2ggKHJlc3VsdCkge1xuICAgIHwgXyB3aGVuICFnbG9iYWxzLnNldHRpbmdzLmNvcmUuZHluYW1pY3MgPT4gW11cbiAgICB8IE5vRWxhYiA9PiBbXVxuICAgIHwgRXZhbHVhdGlvbihyZXN1bHQpID0+IFtcbiAgICAgICAgbGl2ZV9ldmFsKFxuICAgICAgICAgIH5nbG9iYWxzLFxuICAgICAgICAgIH5zaWduYWwsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+c2VsZWN0ZWQ9c2VsZWN0ZWQgPT0gU29tZSgwKSxcbiAgICAgICAgICB+bG9ja2VkLFxuICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICB8IFN0ZXBwZXIocykgPT5cbiAgICAgIHN0ZXBwZXJfdmlldyh+Z2xvYmFscywgfnNpZ25hbCwgfmluamVjdCwgfnJlYWRfb25seT1sb2NrZWQsIHMpXG4gICAgfTtcblxuICBsZXQgdGVzdF9zdGF0dXNfaWNvbl92aWV3ID1cbiAgICAgICh+Zm9udF9tZXRyaWNzLCBpbnN0cywgbXM6IE1lYXN1cmVkLlNoYXJkcy50KTogb3B0aW9uKE5vZGUudCkgPT5cbiAgICBzd2l0Y2ggKG1zKSB7XG4gICAgfCBbKF8sIHtvcmlnaW46IF8sIGxhc3R9KSwgLi4uX10gPT5cbiAgICAgIGxldCBzdGF0dXMgPSBpbnN0cyB8PiBUZXN0TWFwLmpvaW50X3N0YXR1cyB8PiBUZXN0U3RhdHVzLnRvX3N0cmluZztcbiAgICAgIGxldCBwb3MgPSBEZWNVdGlsLmFic19wb3NpdGlvbih+Zm9udF9tZXRyaWNzLCBsYXN0KTtcbiAgICAgIFNvbWUoXG4gICAgICAgIE5vZGUuZGl2KFxuICAgICAgICAgIH5hdHRyPUF0dHIubWFueShbQXR0ci5jbGFzc2VzKFtcInRlc3QtcmVzdWx0XCIsIHN0YXR1c10pLCBwb3NdKSxcbiAgICAgICAgICBbXSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfCBfID0+IE5vbmVcbiAgICB9O1xuXG4gIGxldCB0ZXN0X3Jlc3VsdF9sYXllciA9XG4gICAgICAofmZvbnRfbWV0cmljcywgfm1lYXN1cmVkOiBNZWFzdXJlZC50LCB0ZXN0X3Jlc3VsdHM6IFRlc3RSZXN1bHRzLnQpXG4gICAgICA6IGxpc3QoTm9kZS50KSA9PlxuICAgIExpc3QuZmlsdGVyX21hcChcbiAgICAgICgoaWQsIGluc3RzKSkgPT5cbiAgICAgICAgc3dpdGNoIChJZC5NYXAuZmluZF9vcHQoaWQsIG1lYXN1cmVkLnRpbGVzKSkge1xuICAgICAgICB8IFNvbWUobXMpID0+IHRlc3Rfc3RhdHVzX2ljb25fdmlldyh+Zm9udF9tZXRyaWNzLCBpbnN0cywgbXMpXG4gICAgICAgIHwgTm9uZSA9PiBOb25lXG4gICAgICAgIH0sXG4gICAgICB0ZXN0X3Jlc3VsdHMudGVzdF9tYXAsXG4gICAgKTtcblxuICB0eXBlIHJlc3VsdF9raW5kID1cbiAgICB8IE5vUmVzdWx0c1xuICAgIHwgVGVzdFJlc3VsdHNcbiAgICB8IEV2YWxSZXN1bHRzO1xuXG4gIGxldCB2aWV3ID1cbiAgICAgIChcbiAgICAgICAgfmdsb2JhbHM6IEdsb2JhbHMudCxcbiAgICAgICAgfnNpZ25hbDogZXZlbnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICAgIH5pbmplY3Q6IGFjdGlvbiA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgICAgfnNlbGVjdGVkOiBib29sLFxuICAgICAgICB+cmVzdWx0X2tpbmQ9RXZhbFJlc3VsdHMsXG4gICAgICAgIH5sb2NrZWQ6IGJvb2wsXG4gICAgICAgIG1vZGVsOiBtb2RlbCxcbiAgICAgICkgPT5cbiAgICBzd2l0Y2ggKHJlc3VsdF9raW5kKSB7XG4gICAgLy8gTm9ybWFsIGNhc2U6XG4gICAgfCBFdmFsUmVzdWx0cyB3aGVuIGdsb2JhbHMuc2V0dGluZ3MuY29yZS5keW5hbWljcyA9PlxuICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgIGZvb3RlcihcbiAgICAgICAgICB+Z2xvYmFscyxcbiAgICAgICAgICB+c2lnbmFsLFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfnJlc3VsdD1tb2RlbCxcbiAgICAgICAgICB+c2VsZWN0ZWQ9c2VsZWN0ZWQgPyBTb21lKDApIDogTm9uZSxcbiAgICAgICAgICB+bG9ja2VkLFxuICAgICAgICApO1xuICAgICAgbGV0IHRlc3Rfb3ZlcmxheSA9IChlZGl0b3I6IEVkaXRvci50KSA9PlxuICAgICAgICBzd2l0Y2ggKE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhtb2RlbCkpIHtcbiAgICAgICAgfCBTb21lKHJlc3VsdCkgPT5cbiAgICAgICAgICB0ZXN0X3Jlc3VsdF9sYXllcihcbiAgICAgICAgICAgIH5mb250X21ldHJpY3M9Z2xvYmFscy5mb250X21ldHJpY3MsXG4gICAgICAgICAgICB+bWVhc3VyZWQ9ZWRpdG9yLnN0YXRlLm1ldGEubWVhc3VyZWQsXG4gICAgICAgICAgICByZXN1bHQsXG4gICAgICAgICAgKVxuICAgICAgICB8IE5vbmUgPT4gW11cbiAgICAgICAgfTtcbiAgICAgIChyZXN1bHQsIHRlc3Rfb3ZlcmxheSk7XG5cbiAgICAvLyBKdXN0IHNob3dpbmcgZWxhYm9yYXRpb24gYmVjYXVzZSBldmFsdWF0aW9uIGlzIG9mZjpcbiAgICB8IEV2YWxSZXN1bHRzIHdoZW4gZ2xvYmFscy5zZXR0aW5ncy5jb3JlLmVsYWJvcmF0ZSA9PlxuICAgICAgbGV0IHJlc3VsdCA9IFtcbiAgICAgICAgdGV4dChcIkV2YWx1YXRpb24gZGlzYWJsZWQsIHNob3dpbmcgZWxhYm9yYXRpb246XCIpLFxuICAgICAgICBzd2l0Y2ggKE1vZGVsUmVzdWx0LmdldF9lbGFib3JhdGlvbihtb2RlbCkpIHtcbiAgICAgICAgfCBTb21lKGVsYWIpID0+XG4gICAgICAgICAgUmVhZE9ubHlFZGl0b3IudmlldyhcbiAgICAgICAgICAgIH5nbG9iYWxzLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBlZGl0b3I6IGVsYWIuZCB8PiBFeHBUb1NlZ21lbnQuZXhwX3RvX2VkaXRvcih+aW5saW5lPWZhbHNlKSxcbiAgICAgICAgICAgICAgc3RhdGljczogQ2FjaGVkU3RhdGljcy5lbXB0eV9zdGF0aWNzLFxuICAgICAgICAgICAgfTogQ29kZUVkaXRvci5tb2RlbCxcbiAgICAgICAgICApXG4gICAgICAgIHwgTm9uZSA9PiB0ZXh0KFwiTm8gZWxhYm9yYXRpb24gZm91bmRcIilcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgICAocmVzdWx0LCAoXyA9PiBbXSkpO1xuXG4gICAgLy8gTm90IHNob3dpbmcgYW55IHJlc3VsdHM6XG4gICAgfCBFdmFsUmVzdWx0c1xuICAgIHwgTm9SZXN1bHRzID0+IChbXSwgKF8gPT4gW10pKVxuXG4gICAgLy8gSnVzdCBzaG93aW5nIHRlc3QgcmVzdWx0cyAoc2Nob29sIG1vZGUpXG4gICAgfCBUZXN0UmVzdWx0cyA9PlxuICAgICAgbGV0IHRlc3RfcmVzdWx0cyA9IE1vZGVsUmVzdWx0LnRlc3RfcmVzdWx0cyhtb2RlbCk7XG4gICAgICBsZXQgdGVzdF9vdmVybGF5ID0gKGVkaXRvcjogRWRpdG9yLnQpID0+XG4gICAgICAgIHN3aXRjaCAoTW9kZWxSZXN1bHQudGVzdF9yZXN1bHRzKG1vZGVsKSkge1xuICAgICAgICB8IFNvbWUocmVzdWx0KSA9PlxuICAgICAgICAgIHRlc3RfcmVzdWx0X2xheWVyKFxuICAgICAgICAgICAgfmZvbnRfbWV0cmljcz1nbG9iYWxzLmZvbnRfbWV0cmljcyxcbiAgICAgICAgICAgIH5tZWFzdXJlZD1lZGl0b3Iuc3RhdGUubWV0YS5tZWFzdXJlZCxcbiAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICApXG4gICAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgICB9O1xuICAgICAgKFxuICAgICAgICBbXG4gICAgICAgICAgQ2VsbC5yZXBvcnRfZm9vdGVyX3ZpZXcoW1xuICAgICAgICAgICAgVGVzdFZpZXcudGVzdF9zdW1tYXJ5KFxuICAgICAgICAgICAgICB+aW5qZWN0X2p1bXA9dGlsZSA9PiBzaWduYWwoSnVtcFRvKHRpbGUpKSxcbiAgICAgICAgICAgICAgfnRlc3RfcmVzdWx0cyxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICAgIHRlc3Rfb3ZlcmxheSxcbiAgICAgICk7XG4gICAgfTtcbn07XG5cbmxldCB2aWV3ID0gVmlldy52aWV3O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbnR5cGUgbW9kZWwgPSB7XG4gIGVkaXRvcjogQ29kZUVkaXRvci5tb2RlbCxcbiAgcmVzdWx0OiBNb2RlbFJlc3VsdC50LFxufTtcblxudHlwZSBhY3Rpb24gPVxuICB8IE1haW5FZGl0b3IoQ29kZUVkaXRvci5hY3Rpb24pXG4gIHwgUmVzdWx0QWN0aW9uKENlbGxSZXN1bHQuYWN0aW9uKTtcblxubGV0IHVwZGF0ZSA9IFJlYWRPbmx5RWRpdG9yLnVwZGF0ZTtcblxubGV0IGNhbGN1bGF0ZSA9IFJlYWRPbmx5RWRpdG9yLmNhbGN1bGF0ZTtcblxudHlwZSBldmVudCA9IENvZGVFZGl0b3IuZXZlbnQ7XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+Z2xvYmFsczogR2xvYmFscy50LFxuICAgICAgfnNlbGVjdDogRWRpdG9ycy5TZWxlY3Rpb24uY2VsbCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgIH5pbmplY3QsXG4gICAgICB+aGlnaGxpZ2h0czogb3B0aW9uKENvbG9yU3RlcHMuY29sb3JNYXApLFxuICAgICAgfnNlbGVjdGVkOiBvcHRpb24oRWRpdG9ycy5TZWxlY3Rpb24uY2VsbCksXG4gICAgICB+Y2FwdGlvbjogb3B0aW9uKE5vZGUudCk9PyxcbiAgICAgIH5zb3J0PT8sXG4gICAgICB+cmVzdWx0X2tpbmQ9PyxcbiAgICAgIH5sb2NrZWQ9ZmFsc2UsXG4gICAgICBtb2RlbCxcbiAgICApID0+IHtcbiAgbGV0IChmb290ZXIsIG92ZXJsYXlzKSA9XG4gICAgQ2VsbFJlc3VsdC52aWV3KFxuICAgICAgfmdsb2JhbHMsXG4gICAgICB+c2lnbmFsPVxuICAgICAgICBmdW5cbiAgICAgICAgfCBNYWtlQWN0aXZlKGEpID0+IHNlbGVjdChhKVxuICAgICAgICB8IEp1bXBUbyhpZCkgPT5cbiAgICAgICAgICBFZmZlY3QuTWFueShbXG4gICAgICAgICAgICBzZWxlY3QoTWFpbkVkaXRvciksXG4gICAgICAgICAgICBpbmplY3QoTWFpbkVkaXRvcihKdW1wKFRpbGVJZChpZCkpKSksXG4gICAgICAgICAgXSksXG4gICAgICB+aW5qZWN0PWEgPT4gaW5qZWN0KFJlc3VsdEFjdGlvbihhKSksXG4gICAgICB+c2VsZWN0ZWQ9c2VsZWN0ZWQgPT0gU29tZShSZXN1bHQoMCkpLFxuICAgICAgfnJlc3VsdF9raW5kPyxcbiAgICAgIH5sb2NrZWQsXG4gICAgICBtb2RlbC5yZXN1bHQsXG4gICAgKTtcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgXCJjZWxsXCIsXG4gICAgICAgIE9wdGlvbi5pc19zb21lKHNlbGVjdGVkKSA/IFwic2VsZWN0ZWRcIiA6IFwiZGVzZWxlY3RlZFwiLFxuICAgICAgICBsb2NrZWQgPyBcImxvY2tlZFwiIDogXCJ1bmxvY2tlZFwiLFxuICAgICAgXSksXG4gICAgT3B0aW9uLnRvX2xpc3QoY2FwdGlvbilcbiAgICBAIFtcbiAgICAgIENvZGVFZGl0b3IudmlldyhcbiAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgIH5zaWduYWw9XG4gICAgICAgICAgbG9ja2VkXG4gICAgICAgICAgICA/IF8gPT4gVWlfZWZmZWN0Lklnbm9yZVxuICAgICAgICAgICAgOiBmdW5cbiAgICAgICAgICAgICAgfCBNYWtlQWN0aXZlID0+IHNlbGVjdChFZGl0b3JzLlNlbGVjdGlvbi5NYWluRWRpdG9yKSxcbiAgICAgICAgfmluamVjdD1cbiAgICAgICAgICBsb2NrZWRcbiAgICAgICAgICAgID8gXyA9PiBVaV9lZmZlY3QuSWdub3JlIDogKGFjdGlvbiA9PiBpbmplY3QoTWFpbkVkaXRvcihhY3Rpb24pKSksXG4gICAgICAgIH5zZWxlY3RlZD1zZWxlY3RlZCA9PSBTb21lKE1haW5FZGl0b3IpLFxuICAgICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgICAgfm92ZXJsYXlzPW92ZXJsYXlzKG1vZGVsLmVkaXRvci5lZGl0b3IpLFxuICAgICAgICB+c29ydD8sXG4gICAgICAgIG1vZGVsLmVkaXRvcixcbiAgICAgICksXG4gICAgXVxuICAgIEAgZm9vdGVyLFxuICApO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmdsb2JhbHMsXG4gICAgICB+c2VsZWN0LFxuICAgICAgfmluamVjdDogVXBkYXRlQWN0aW9uLnQgPT4gVWlfZWZmZWN0LnQodW5pdCksXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgIH5yZXN1bHRzOiBNb2RlbFJlc3VsdHMudCxcbiAgICAgIH5yZXN1bHRfa2V5LFxuICAgICAgfnN0YXRpY3M6IENhY2hlZFN0YXRpY3Muc3RhdGljcyxcbiAgICAgIH5zZWxlY3RlZCxcbiAgICAgIGVkaXRvcjogRWRpdG9yLnQsXG4gICAgKSA9PiB7XG4gIGxldCByZXN1bHQgPSBNb2RlbFJlc3VsdHMubG9va3VwKHJlc3VsdHMsIHJlc3VsdF9rZXkpIHw+IE9wdGlvbi5nZXQ7XG4gIFtcbiAgICBDZWxsRWRpdG9yLnZpZXcoXG4gICAgICB+Z2xvYmFscyxcbiAgICAgIH5zZWxlY3QsXG4gICAgICB+aW5qZWN0PVxuICAgICAgICBmdW5cbiAgICAgICAgfCBNYWluRWRpdG9yKGEpID0+IGluamVjdChQZXJmb3JtQWN0aW9uKGEpKVxuICAgICAgICB8IFJlc3VsdEFjdGlvbihTdGVwcGVyQWN0aW9uKGEpKSA9PlxuICAgICAgICAgIGluamVjdChTdGVwcGVyQWN0aW9uKHJlc3VsdF9rZXksIGEpKVxuICAgICAgICB8IFJlc3VsdEFjdGlvbihUb2dnbGVTdGVwcGVyKSA9PiBpbmplY3QoVG9nZ2xlU3RlcHBlcihyZXN1bHRfa2V5KSlcbiAgICAgICAgfCBSZXN1bHRBY3Rpb24oU3RlcHBlckVkaXRvckFjdGlvbihfLCBhKSkgPT5cbiAgICAgICAgICBpbmplY3QoUGVyZm9ybUFjdGlvbihhKSksXG4gICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgIH5zZWxlY3RlZCxcbiAgICAgIH5sb2NrZWQ9ZmFsc2UsXG4gICAgICB7XG4gICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICBzdGF0aWNzLFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHQsXG4gICAgICB9LFxuICAgICksXG4gIF07XG59O1xuXG5sZXQgZXhwb3J0X2J1dHRvbiA9IHN0YXRlID0+XG4gIFdpZGdldHMuYnV0dG9uX25hbWVkKFxuICAgIEljb25zLnN0YXIsXG4gICAgXyA9PiB7XG4gICAgICBsZXQganNvbl9kYXRhID0gU2NyYXRjaFNsaWRlLmV4cG9ydChzdGF0ZSk7XG4gICAgICBKc1V0aWwuZG93bmxvYWRfanNvbihcImhhemVsLXNjcmF0Y2hwYWRcIiwganNvbl9kYXRhKTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiRXhwb3J0IFNjcmF0Y2hwYWRcIixcbiAgKTtcbmxldCBpbXBvcnRfYnV0dG9uID0gaW5qZWN0ID0+XG4gIFdpZGdldHMuZmlsZV9zZWxlY3RfYnV0dG9uX25hbWVkKFxuICAgIFwiaW1wb3J0LXNjcmF0Y2hwYWRcIixcbiAgICBJY29ucy5zdGFyLFxuICAgIGZpbGUgPT4ge1xuICAgICAgc3dpdGNoIChmaWxlKSB7XG4gICAgICB8IE5vbmUgPT4gVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlXG4gICAgICB8IFNvbWUoZmlsZSkgPT4gaW5qZWN0KFVwZGF0ZUFjdGlvbi5Jbml0SW1wb3J0U2NyYXRjaHBhZChmaWxlKSlcbiAgICAgIH1cbiAgICB9LFxuICAgIH50b29sdGlwPVwiSW1wb3J0IFNjcmF0Y2hwYWRcIixcbiAgKTtcblxubGV0IHJlc2V0X2J1dHRvbiA9IGluamVjdCA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy50cmFzaCxcbiAgICBfID0+IHtcbiAgICAgIGxldCBjb25maXJtZWQgPVxuICAgICAgICBKc1V0aWwuY29uZmlybShcbiAgICAgICAgICBcIkFyZSB5b3UgU1VSRSB5b3Ugd2FudCB0byByZXNldCB0aGlzIHNjcmF0Y2hwYWQ/IFlvdSB3aWxsIGxvc2UgYW55IGV4aXN0aW5nIGNvZGUuXCIsXG4gICAgICAgICk7XG4gICAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uUmVzZXRDdXJyZW50RWRpdG9yKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICAgIH07XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIlJlc2V0IFNjcmF0Y2hwYWRcIixcbiAgKTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBfdHBhdCA9IHRwYXQoXCJ0X3ZhclwiKTtcbmxldCBfdHlwX2FyZyA9IHR5cChcInR5X2FyZ1wiKTtcbmxldCByZWNfdHlwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH50cGF0X2lkOiBJZC50LCB+dGJvZHlfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3RwYXQpLCB0cGF0X2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfYXJnKSwgdGJvZHlfaWQpLFxuXTtcbmxldCBwZWFub19leCA9IHtcbiAgc3ViX2lkOiBSZWNUeXAsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0eXBlIFBlYW5vID0gXFxuIHJlYyBQIC0+IFogKyBTKFApIFxcbiBpbiBTKFMoUyhaKSkpXCIpLFxuICBtZXNzYWdlOiBcIlRoZSB0eXBlIG9mIHRoZSBQZWFubyBudW1iZXJzIGFuZCB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciAzLlwiLFxufTtcbmxldCByZWNfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgcmVjdXJzaXZlIHR5cGUgY2xhc3NpZmllcyB0aGUgbGVhc3QgZml4ZWQgcG9pbnQgb2YgdGhlIHBvbHltb3JwaGljIHR5cGUgb3ZlciB0aGUgWyp0eXBlIHZhcmlhYmxlKl0oJXMpIG9mIGJvZHkgWyppbnN0YW50aWF0ZWQgdHlwZSpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBSZWNUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtta19yZWMoW1tzcGFjZSgpLCBfdHBhdCwgc3BhY2UoKV1dKSwgX3R5cF9hcmddLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF90cGF0KSwgW190eXBfYXJnXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbcGVhbm9fZXhdLFxuICB9O1xufTtcblxubGV0IHJlY186IGdyb3VwID0ge2lkOiBSZWNUeXAsIGZvcm1zOiBbcmVjX3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gRXhhbXBsZTtcblxuLyogKEEpIFVzZSB0aGlzIGZpbGUgYXMgYW4gZXhhbXBsZSBmb3IgYWRkaW5nIGEgbmV3IGZvcm0gdG8gRXhwbGFpblRoaXMuXG4gKiBZb3Ugc2hvdWxkIGJlIGFibGUgdG8gY29weS1wYXN0ZSB0aGlzIGZpbGUgYW5kIG1vZGlmeSBpdCB0byBhZGQgYSBuZXcgZm9ybSAqL1xuXG5sZXQgc2luZ2xlID0gKH5hcmdfaWQ6IElkLnQsIH5mbl9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgLyogKEIpIFlvdSdsbCBuZWVkIHRvIGFkZCBuZXcgY2FzZXMgdG8gRXhwbGFpblRoaXNGb3JtLnJlIGZvciB0aGUgbmV3IGZvcm1cbiAgICogdG8gcmVwcmVzZW50IGEgZ3JvdXBfaWQgYW5kIGZvcm1faWQuIFRoaXMgU2ltcGxlIHN0eWxlIGlzIHNwZWNpYWxpemVkXG4gICAqIHRvIHNpbmdsZXRvbiBncm91cHMuIEluIGdlbmVyYWwsIHRoZSBncm91cF9pZCBuZWVkcyB0byBiZSB1bmlxdWUsIGFuZFxuICAgKiBmb3JtX2lkcyBuZWVkIHRvIGJlIHVuaXF1ZSB3aXRoaW4gYSBncm91cC4gVGhlc2UgaWRzIGFyZSB1c2VkIHRvIHRyYWNrXG4gICAqIEV4cGxhaW5UaGlzIHBlcnNpc3RlbnQgc3RhdGUuICovXG4gIGdyb3VwX2lkOiBQaXBlbGluZUV4cCxcbiAgZm9ybV9pZDogUGlwZWxpbmVFeHAsXG4gIC8qIChDKSBUaGUgYWJzdHJhY3QgZmllbGQgZGVmaW5lcyBhbiBhYnN0cmFjdCBleGFtcGxlIGlsbHVzdHJhdGluZyB0aGVcbiAgICogbmV3IGZvcm0uIFlvdSdsbCBuZWVkIHRvIHByb3ZpZGUgcGFpcnMgYXNzb2NpYXRpbmcgYW55IHJlcHJlc2VudGF0aXZlXG4gICAqIHN1YnRlcm1zIG9mIHRoZSBleGVtcGxhciAoZS5nLiBcImVfYXJnXCIgYW5kIFwiZV9mdW5cIiBiZWxvdykgd2l0aCB0aGVcbiAgICogY29uY3JldGUgc3VidGVybXMgb2YgdGhlIHRlcm0gdGhlIHVzZXIgaGFzIHNlbGVjdGVkIChoZXJlLCBhcmdfaWRcbiAgICogYW5kIGZuX2lkKS4gWW91J2xsIHRoZW4gbmVlZCBhIGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIHNlZ21lbnRcbiAgICogcmVwcmVzZW50aW5nIHlvdXIgYWJzdHJhY3QuIFRoaXMgaXMgZG9uZSBpbiB0aGlzIGluZGlyZWN0IHdheSBzb1xuICAgKiBhcyB0byBhc3NvY2lhdGUgcmVwcmVzZW50YXRpdmUgYW5kIGNvbmNyZXRlIHN1YnRlcm1zIGlkcyBmb3JcbiAgICogc3ludGF4IGhpZ2hsaWdodGluZyBwdXJwb3Nlcy4gKi9cbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwiZV9hcmdcIiwgYXJnX2lkKSwgKFwiZV9mdW5cIiwgZm5faWQpLCAoZV9hcmcnLCBlX2ZuJykgPT5cbiAgICAgIFtlX2FyZycsIHNwYWNlKCksIHBpcGVsaW5lKCksIHNwYWNlKCksIGVfZm4nXVxuICAgICksXG4gIC8qIChEKSBUaGUgZXhwbGFuYXRpb24gd2hpY2ggd2lsbCBhcHBlYXIgaW4gdGhlIHNpZGViYXIgYmVsb3cgdGhlIGFic3RyYWN0ICovXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJQYXNzZXMgdGhlIFsqYXJndW1lbnQqXSglcykgdG8gdGhlIFsqZnVuY3Rpb24qXSglcykuXCIsXG4gICAgICBhcmdfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgZm5faWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIC8qIChFKSBBZGRpdGlvbmFsIG1vcmUgY29uY3JldGUgZXhhbXBsZXMgYW5kIGFzc29jaWF0ZWQgZXhwbGFuYXRpb25zICovXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBQaXBlbGluZTEsXG4gICAgICB0ZXJtOiBta19leGFtcGxlKFwiMSB8PiBmdW4geCAtPiB4ICsgMVwiKSxcbiAgICAgIG1lc3NhZ2U6IHt8XG4gICAgICAgICAgICAgIFRoZSBhcmd1bWVudCAxIGlzIHBhc3NlZCB0byBhbiBpbmNyZW1lbnQgZnVuY3Rpb24sIGFuZCB0aGUgZW50aXJlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXG4gICAgICAgICAgICAgIFRoZSBwaXBlbGluZSBvcGVyYXRvciBpcyB1c2VmdWwgZm9yIGNoYWluaW5nIGZ1bmN0aW9ucyB0b2dldGhlci5cbiAgICAgICAgICAgICAgfH0sXG4gICAgfSxcbiAgXSxcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgZnVuYXBwX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBGdW5BcCxcbiAgdGVybTogbWtfZXhhbXBsZShcIihmdW4geCAtPiB4KSgxKVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgaWRlbnRpdHkgZnVuY3Rpb24gaXMgYXBwbGllZCB0byAxLiBUaGUgYXJndW1lbnQgeCBpcyBib3VuZCB0byAxIGluIHRoZSBmdW5jdGlvbiBib2R5IGFuZCB0aGUgYm9keSBldmFsdWF0ZXMgdG8gMS5cIixcbn07XG4vLyBUT0RPIEhhcyBhIHJlZCBib3ggYXJvdW5kIGl0IGluIHRoZSByZXN1bHRcbmxldCBjb25hcHBfZXhwX2V4ID0ge1xuICBzdWJfaWQ6IENvbkFwLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHlwZSBUID0gTm9uZSArIFNvbWUoSW50KVxcbmluIFNvbWUoMSlcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGNvbnN0cnVjdG9yIFNvbWUgaXMgYXBwbGllZCB0byAxLCB3aGljaCBldmFsdWF0ZXMgdG8gU29tZSgxKS5cIixcbn07XG5sZXQgZGVmZXJyZWRfZnVuYXBwX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBEZWZlcnJlZEFwLFxuICB0ZXJtOlxuICAgIG1rX2V4YW1wbGUoXG4gICAgICBcImxldCBwbHVzID0gZnVuICh4LCB5KSAtPiB4ICsgeSBpblxcbmxldCBpbmNyID0gcGx1cyhfLCAxKSBpblxcbmluY3IoNSlcIixcbiAgICApLFxuICBtZXNzYWdlOiBcIlRoZSBwbHVzIGZ1bmN0aW9uIGlzIHBhcnRpYWxseSBhcHBsaWVkLiBUaGUgYXJndW1lbnQgeSBpcyBib3VuZCB0byAxIGluIHRoZSBmdW5jdGlvbiBib2R5LiBUaGUgZGVmZXJyZWQgYXJndW1lbnQgeCBpcyBub3QgYXBwbGllZCB1bnRpbCBpbiB0aGUgZnVsbCBmdW5jdGlvbiBhcHBsaWNhdGlvbiwgaW5jcig1KSwgd2hlcmUgaXQncyBib3VuZCB0byA1LiBUaGUgcGFydGlhbCBhcHBsaWNhdGlvbiBldmFsdWF0ZXMgdG8gYSBuZXcgZnVuY3Rpb24sIChmdW4geCAtPiB4ICsgMSkuXCIsXG59O1xubGV0IF9leHBfZnVuID0gZXhwKFwiZV9mdW5cIik7XG5sZXQgX2V4cF9hcmcgPSBleHAoXCJlX2FyZ1wiKTtcbmxldCBmdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH54X2lkOiBJZC50LCB+YXJnX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfZnVuKSwgeF9pZCksXG4gIChQaWVjZS5pZChfZXhwX2FyZyksIGFyZ19pZCksXG5dO1xubGV0IGZ1bmFwcF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQXBwbGllcyB0aGUgWypmdW5jdGlvbipdKCVzKSB0byB0aGUgWyphcmd1bWVudCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBGdW5BcEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfZnVuLCBta19hcF9leHAoW1tfZXhwX2FyZ11dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Z1bmFwcF9leHBfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwX2NvbiA9IGV4cChcImVfY29uXCIpO1xubGV0IF9leHBfYXJnID0gZXhwKFwiZV9hcmdcIik7XG5sZXQgY29uYXBwX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+eF9pZDogSWQudCwgfmFyZ19pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2NvbiksIHhfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9hcmcpLCBhcmdfaWQpLFxuXTtcbmxldCBjb25hcHBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFwcGxpZXMgdGhlIFsqYCVzYCBjb25zdHJ1Y3RvcipdKCVzKSB0byB0aGUgWyphcmd1bWVudCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBDb25BcEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW19leHBfY29uLCBta19hcF9leHAoW1tfZXhwX2FyZ11dKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2NvbmFwcF9leHBfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwX2Z1biA9IGV4cChcImVfZnVuXCIpO1xubGV0IF9leHBfZGVmZXJyYWwgPSBkZWZlcnJhbCgpO1xubGV0IGRlZmVycmVkX2Z1bmFwcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnhfaWQ6IElkLnQsIH5kZWZlcnJlZF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2Z1biksIHhfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWZlcnJhbCksIGRlZmVycmVkX2lkKSxcbl07XG5sZXQgZGVmZXJyZWRfZnVuYXBwX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJBcHBsaWVzIHRoZSBbKmZ1bmN0aW9uKl0oJXMpIHRvIHRoZSBbKnN1cHBsaWVkIGFyZ3VtZW50cypdKCVzKS4gVGhlIFsqZGVmZXJyZWQgYXJndW1lbnRzKl0oJXMpIGNhbiBiZSBhcHBsaWVkIGluIGZ1dHVyZSBhcHBsaWNhdGlvbnMuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX2V4cCgpO1xuICB7XG4gICAgaWQ6IERlZmVycmVkQXBFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIF9leHBfZnVuLFxuICAgICAgbWtfYXBfZXhwKFtcbiAgICAgICAgW1xuICAgICAgICAgIGV4cChcIi4uLlwiKSxcbiAgICAgICAgICBjb21tYSxcbiAgICAgICAgICBzcGFjZSgpLFxuICAgICAgICAgIF9leHBfZGVmZXJyYWwsXG4gICAgICAgICAgY29tbWEsXG4gICAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgICBleHAoXCIuLi5cIiksXG4gICAgICAgIF0sXG4gICAgICBdKSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtkZWZlcnJlZF9mdW5hcHBfZXhwX2V4XSxcbiAgfTtcbn07XG5cbmxldCBmdW5hcHM6IGdyb3VwID0ge2lkOiBGdW5BcEV4cCwgZm9ybXM6IFtmdW5hcHBfZXhwXX07XG5cbmxldCBjb25hcHM6IGdyb3VwID0ge2lkOiBDb25BcEV4cCwgZm9ybXM6IFtjb25hcHBfZXhwXX07XG5cbmxldCBkZWZlcnJlZGFwczogZ3JvdXAgPSB7aWQ6IERlZmVycmVkQXBFeHAsIGZvcm1zOiBbZGVmZXJyZWRfZnVuYXBwX2V4cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF9wYXRfY29uID0gcGF0KFwicF9jb25cIik7XG5sZXQgX3BhdF9hcmcgPSBwYXQoXCJwX2FyZ1wiKTtcbmxldCBhcF9wYXRfY29sb3JpbmdfaWRzID0gKH5jb25faWQ6IElkLnQsIH5hcmdfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9jb24pLCBjb25faWQpLFxuICAoUGllY2UuaWQoX3BhdF9hcmcpLCBhcmdfaWQpLFxuXTtcbmxldCBhcF9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IG1hdGNoIHRoZSBbKmNvbnN0cnVjdG9yKl0oJXMpIHdpdGggYW4gKmFyZ3VtZW50KiBtYXRjaGluZyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIG1hdGNoIHRoaXMgKmNvbnN0cnVjdG9yIGFwcGxpY2F0aW9uIHBhdHRlcm4qLlwiO1xuICB7XG4gICAgaWQ6IEFwUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdF9jb24sIG1rX2FwX3BhdChbW19wYXRfYXJnXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBhcDogZ3JvdXAgPSB7aWQ6IEFwUGF0LCBmb3JtczogW2FwX3BhdF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF90eXBfYXJnID0gdHlwKFwidHlfYXJnXCIpO1xubGV0IF90eXBfb3V0ID0gdHlwKFwidHlfb3V0XCIpO1xubGV0IGFycm93X3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+YXJnX2lkOiBJZC50LCB+cmVzdWx0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfYXJnKSwgYXJnX2lkKSxcbiAgKFBpZWNlLmlkKF90eXBfb3V0KSwgcmVzdWx0X2lkKSxcbl07XG5sZXQgYXJyb3dfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgYXJyb3cgdHlwZSBjbGFzc2lmaWVzIGZ1bmN0aW9ucyB3aXRoIFsqYXJndW1lbnQgdHlwZSpdKCVzKSBhbmQgWypvdXRwdXQgdHlwZSpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBBcnJvd1R5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW190eXBfYXJnLCBzcGFjZSgpLCBhcnJvdygpLCBzcGFjZSgpLCBfdHlwX291dF0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3R5cF9vdXQpLCBbdHlwKFwidHlfb3V0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3R5cF9hcmcxID0gdHlwKFwidHlfYXJnMVwiKTtcbmxldCBfdHlwX2FyZzIgPSB0eXAoXCJ0eV9hcmcyXCIpO1xubGV0IF90eXBfb3V0ID0gdHlwKFwidHlfb3V0XCIpO1xubGV0IGFycm93M190eXBfY29sb3JpbmdfaWRzID1cbiAgICAofmFyZzFfaWQ6IElkLnQsIH5hcmcyX2lkOiBJZC50LCB+cmVzdWx0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90eXBfYXJnMSksIGFyZzFfaWQpLFxuICAoUGllY2UuaWQoX3R5cF9hcmcyKSwgYXJnMl9pZCksXG4gIChQaWVjZS5pZChfdHlwX291dCksIHJlc3VsdF9pZCksXG5dO1xubGV0IGFycm93M190eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBhcnJvdyB0eXBlIGNsYXNzaWZpZXMgZnVuY3Rpb25zIHdpdGggWypmaXJzdCBhcmd1bWVudCB0eXBlKl0oJXMpLCBbKnNlY29uZCBhcmd1bWVudCB0eXBlKl0oJXMpLCBhbmQgWypvdXRwdXQgdHlwZSpdKCVzKS5cIjtcbiAgbGV0IGFycm93MiA9IGFycm93KCk7XG4gIHtcbiAgICBpZDogQXJyb3czVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBfdHlwX2FyZzEsXG4gICAgICBzcGFjZSgpLFxuICAgICAgYXJyb3coKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfdHlwX2FyZzIsXG4gICAgICBzcGFjZSgpLFxuICAgICAgYXJyb3cyLFxuICAgICAgc3BhY2UoKSxcbiAgICAgIF90eXBfb3V0LFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGFycm93MiksIFt0eXAoXCJ0eV9hcmcyXCIpLCBhcnJvdygpLCB0eXAoXCJ0eV9vdXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGFycm93OiBncm91cCA9IHtpZDogQXJyb3dUeXAsIGZvcm1zOiBbYXJyb3dfdHlwXX07XG5cbmxldCBhcnJvdzM6IGdyb3VwID0ge2lkOiBBcnJvdzNUeXAsIGZvcm1zOiBbYXJyb3czX3R5cCwgYXJyb3dfdHlwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgY2FzZV9leGFtcGxlX3dpbGRfc2ltcGxlID0ge1xuICBzdWJfaWQ6IENhc2VXaWxkU2ltcGxlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiY2FzZSAxIFxcbnwgMiA9PiAzIFxcbnwgXyA9PiA0IFxcbmVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgc2NydXRpbmVlIG9mIHRoZSBjYXNlIGV4cHJlc3Npb24gaXMgMS4gU2luY2UgdGhlIHNjcnV0aW5lZSBkb2VzIG5vdCBtYXRjaCB0aGUgdGhlIGZpcnN0IHBhdHRlcm4gMi4gU2luY2UgdGhlIHNjcnV0aW5lZSBkb2VzIG1hdGNoIHRoZSBzZWNvbmQgcGF0dGVybiB3aGljaCBpcyBhIHdpbGRjYXJkLCB0aGUgc2Vjb25kIGJyYW5jaCBpcyB0YWtlbi4gVGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRoZSBzZWNvbmQgY2xhdXNlIDQuXCIsXG59O1xubGV0IGNhc2VfZXhhbXBsZV93aWxkX3R1cGxlID0ge1xuICBzdWJfaWQ6IENhc2VXaWxkVHVwbGUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJjYXNlICgxLCAyKSBcXG58IChfLCAyKSA9PiAzIFxcbnwgXyA9PiA0IFxcbmVuZFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgc2NydXRpbmVlIG9mIHRoZSBjYXNlIGV4cHJlc3Npb24gaXMgKDEsIDIpLiBTaW5jZSB0aGUgc2NydXRpbmVlIG1hdGNoZXMgdGhlIGZpcnN0IHBhdHRlcm4gKF8sIDIpLCB0aGUgZmlyc3QgYnJhbmNoIGlzIHRha2VuLiBUaGlzIHBhdHRlcm4gaXMgbWF0Y2hlZCBiZWNhdXNlIHRoZSBmaXJzdCBlbGVtZW50IDEgbWF0Y2hlcyB0aGUgZmlyc3QgZWxlbWVudCBwYXR0ZXJuLCB3aGljaCBpcyBhIHdpbGRjYXJkLCBhbmQgdGhlIHNlY29uZCBlbGVtZW50IDIgbWF0Y2hlcyB0aGUgc2Vjb25kIGVsZW1lbnQgcGF0dGVybiAyLiBUaGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdGhlIGZpcnN0IGNsYXVzZSAzLlwiLFxufTtcbmxldCBjYXNlX2V4YW1wbGVfaW50ID0ge1xuICBzdWJfaWQ6IENhc2VJbnQsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJjYXNlIDEgXFxufCAxID0+IDEuMSBcXG58IDIgPT4gMi4yIFxcbnwgXyA9PiAzLjMgXFxuZW5kXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBzY3J1dGluZWUgb2YgdGhlIGNhc2UgZXhwcmVzc2lvbiBpcyAxLiBTaW5jZSB0aGUgc2NydXRpbmVlIG1hdGNoZXMgdGhlIGZpcnN0IHBhdHRlcm4sIHRoZSBmaXJzdCBicmFuY2ggaXMgdGFrZW4sIGFuZCB0aGUgY2FzZSBldmFsdWF0ZXMgdG8gdGhlIGZpcnN0IGNsYXVzZS5cIixcbn07XG5sZXQgY2FzZV9leGFtcGxlX2Jvb2wgPSB7XG4gIHN1Yl9pZDogQ2FzZUJvb2wsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJjYXNlIGZhbHNlIFxcbnwgdHJ1ZSA9PiAxIFxcbnwgZmFsc2UgPT4gMiBcXG5lbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHNjcnV0aW5lZSBvZiB0aGUgY2FzZSBleHByZXNzaW9uIGlzIGZhbHNlLiBUaGUgc2NydXRpbmVlIGRvZXMgbm90IG1hdGNoIHRoZSBmaXJzdCBwYXR0ZXJuIGJ1dCBkb2VzIG1hdGNoIHRoZSBzZWNvbmQgcGF0dGVybiwgc28gdGhlIHNlY29uZCBicmFuY2ggaXMgdGFrZW4uXCIsXG59O1xuLy8gVE9ETyAtIEkgZG9uJ3QgdGhpbmsgY2hhbmdpbmcgc3BlY2lmaWNpdHkgb24gdGhlIG51bWJlciBvZiBjYXNlcyBpcyByZWFsbHkgdGhlIG1vc3Rcbi8vIGJlbmVmaWNpYWwgc3BlY2lmaWNpdHkgY2hhbmdlIC0gSSB0aGluayBpbnN0ZWFkIGhhdmUgZ2VuZXJpYyBhdCB0b3AgbGV2ZWxcbi8vIGFuZCB0aGVuIGhhdmUgYSBzbGlnaHRseSBkaWZmZXJlbnQgc2V0dXAgZm9yIHNwZWNpZmljIHRoYXQgaXMgY3JlYXRlZCBtb3JlXG4vLyBkeW5hbWljYWxseSBjYWxsaW5nIHNldHVwIG1ldGhvZHMgaGVyZSBidXQgbW9yZVxuLy8gd29yayBkb25lIGluIHRoZSBFeHBsYWluVGhpcyBjb2RlIC0gbWF5YmUganVzdCB1cCB0byAzIG9yIDQgYnJhbmNoZXM/XG5sZXQgX2V4cF9zY3J1dCA9IGV4cChcImVfc2NydXRcIik7XG5sZXQgY2FzZV9leHBfY29sb3JpbmdfaWRzID0gKH5zY3J1dF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX3NjcnV0KSwgc2NydXRfaWQpLFxuXTtcbmxldCBjYXNlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJDb25zaWRlciBlYWNoIGJyYW5jaCBpbiBvcmRlci4gRm9yIHRoZSBmaXJzdCBicmFuY2ggd2l0aCBhICpwYXR0ZXJuKiB0aGF0IG1hdGNoZXMgdGhlIFsqc2NydXRpbmVlKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgKmNsYXVzZSouXCI7XG4gIGxldCBjYXNlID1cbiAgICBta19jYXNlKFtcbiAgICAgIFtcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX2V4cF9zY3J1dCxcbiAgICAgICAgbGluZWJyZWFrKCksXG4gICAgICAgIG1rX3J1bGUoW1tzcGFjZSgpLCBwYXQoXCJwMVwiKSwgc3BhY2UoKV1dKSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgZXhwKFwiZTFcIiksXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgICBta19ydWxlKFtbc3BhY2UoKSwgcGF0KFwiLi4uXCIpLCBzcGFjZSgpXV0pLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBleHAoXCIuLi5cIiksXG4gICAgICAgIGxpbmVicmVhaygpLFxuICAgICAgXSxcbiAgICBdKTtcbiAge1xuICAgIGlkOiBDYXNlRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbY2FzZV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW1xuICAgICAgY2FzZV9leGFtcGxlX2ludCxcbiAgICAgIGNhc2VfZXhhbXBsZV9ib29sLFxuICAgICAgY2FzZV9leGFtcGxlX3dpbGRfc2ltcGxlLFxuICAgICAgY2FzZV9leGFtcGxlX3dpbGRfdHVwbGUsXG4gICAgXSxcbiAgfTtcbn07XG5cbmxldCBjYXNlOiBncm91cCA9IHtpZDogQ2FzZUV4cCwgZm9ybXM6IFtjYXNlX2V4cF19O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcblxubGV0IHZpZXcgPSAoa2luZDogSGF6M2xjb3JlLkN0eC5raW5kKTogTm9kZS50ID0+XG4gIHN3aXRjaCAoa2luZCkge1xuICB8IFNpbmdsZXRvbih0eSkgPT4gZGl2X2MoXCJraW5kLXZpZXdcIiwgW1R5cGUudmlldyh0eSldKVxuICB8IEFic3RyYWN0ID0+IGRpdl9jKFwia2luZC12aWV3XCIsIFt0ZXh0KFwiVHlwZVwiKV0pXG4gIH07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xuXG5sZXQganVtcF90byA9IGVudHJ5ID0+XG4gIEdsb2JhbHMuVXBkYXRlLkp1bXBUb1RpbGUoSGF6M2xjb3JlLkN0eC5nZXRfaWQoZW50cnkpKTtcblxubGV0IGNvbnRleHRfZW50cnlfdmlldyA9ICh+aW5qZWN0LCBlbnRyeTogSGF6M2xjb3JlLkN0eC5lbnRyeSk6IE5vZGUudCA9PiB7XG4gIGxldCBkaXZfbmFtZSA9XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgY2xzcyhbXCJuYW1lXCJdKSxcbiAgICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT4gaW5qZWN0KGp1bXBfdG8oZW50cnkpKSksXG4gICAgICAgIF0pLFxuICAgICk7XG4gIHN3aXRjaCAoZW50cnkpIHtcbiAgfCBWYXJFbnRyeSh7bmFtZSwgdHlwLCBffSlcbiAgfCBDb25zdHJ1Y3RvckVudHJ5KHtuYW1lLCB0eXAsIF99KSA9PlxuICAgIGRpdl9jKFxuICAgICAgXCJjb250ZXh0LWVudHJ5XCIsXG4gICAgICBbXG4gICAgICAgIGRpdl9uYW1lKFt0ZXh0KG5hbWUpXSksXG4gICAgICAgIGRpdih+YXR0cj1jbHNzKFtcInNlcGVyYXRvclwiXSksIFt0ZXh0KFwiOlwiKV0pLFxuICAgICAgICBUeXBlLnZpZXcodHlwKSxcbiAgICAgIF0sXG4gICAgKVxuICB8IFRWYXJFbnRyeSh7bmFtZSwga2luZCwgX30pID0+XG4gICAgZGl2X2MoXG4gICAgICBcImNvbnRleHQtZW50cnlcIixcbiAgICAgIFtcbiAgICAgICAgZGl2X25hbWUoW1R5cGUuYWxpYXNfdmlldyhuYW1lKV0pLFxuICAgICAgICBkaXYofmF0dHI9Y2xzcyhbXCJzZXBlcmF0b3JcIl0pLCBbdGV4dChcIjo6XCIpXSksXG4gICAgICAgIEtpbmQudmlldyhraW5kKSxcbiAgICAgIF0sXG4gICAgKVxuICB9O1xufTtcblxubGV0IGN0eF92aWV3ID0gKH5pbmplY3QsIGN0eDogSGF6M2xjb3JlLkN0eC50KTogTm9kZS50ID0+XG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcImNvbnRleHQtZW50cmllc1wiXSksXG4gICAgTGlzdC5tYXAoXG4gICAgICBjb250ZXh0X2VudHJ5X3ZpZXcofmluamVjdCksXG4gICAgICBjdHggfD4gSGF6M2xjb3JlLkN0eC5maWx0ZXJfZHVwbGljYXRlcyB8PiBMaXN0LnJldixcbiAgICApLFxuICApO1xuXG5sZXQgY3R4X3NvcnRzX3ZpZXcgPSAofmluamVjdCwgY2k6IEhhejNsY29yZS5TdGF0aWNzLkluZm8udCkgPT5cbiAgSGF6M2xjb3JlLkluZm8uY3R4X29mKGNpKVxuICB8PiBIYXozbGNvcmUuQ3R4LmZpbHRlcl9kdXBsaWNhdGVzXG4gIHw+IExpc3QucmV2XG4gIHw+IExpc3QubWFwKGNvbnRleHRfZW50cnlfdmlldyh+aW5qZWN0KSk7XG5cbmxldCB2aWV3ID0gKH5nbG9iYWxzOiBHbG9iYWxzLnQsIGNpOiBIYXozbGNvcmUuU3RhdGljcy5JbmZvLnQpOiBOb2RlLnQgPT4ge1xuICBsZXQgY2xzcyA9XG4gICAgY2xzcyhcbiAgICAgIFtcImNvbnRleHQtaW5zcGVjdG9yXCJdXG4gICAgICBAIChnbG9iYWxzLnNldHRpbmdzLmNvbnRleHRfaW5zcGVjdG9yID8gW1widmlzaWJsZVwiXSA6IFtdKSxcbiAgICApO1xuICBkaXYofmF0dHI9Y2xzcywgY3R4X3NvcnRzX3ZpZXcofmluamVjdD1nbG9iYWxzLmluamVjdF9nbG9iYWwsIGNpKSk7XG59O1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcbm9wZW4gVXRpbDtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgZXJyYyA9IFwiZXJyb3JcIjtcbmxldCBva2MgPSBcIm9rXCI7XG5sZXQgZGl2X2VyciA9IGRpdih+YXR0cj1jbHNzKFtlcnJjXSkpO1xubGV0IGRpdl9vayA9IGRpdih+YXR0cj1jbHNzKFtva2NdKSk7XG5cbmxldCBjb2RlX2VyciA9IChjb2RlOiBzdHJpbmcpOiBOb2RlLnQgPT5cbiAgZGl2KH5hdHRyPWNsc3MoW1wiY29kZVwiXSksIFt0ZXh0KGNvZGUpXSk7XG5cbmxldCBleHBsYWluX3RoaXNfdG9nZ2xlID0gKH5nbG9iYWxzOiBHbG9iYWxzLnQpOiBOb2RlLnQgPT4ge1xuICBsZXQgdG9vbHRpcCA9IFwiVG9nZ2xlIGxhbmd1YWdlIGRvY3VtZW50YXRpb25cIjtcbiAgbGV0IHRvZ2dsZV9leHBsYWluX3RoaXMgPSBfID0+XG4gICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuTWFueShbXG4gICAgICBnbG9iYWxzLmluamVjdF9nbG9iYWwoU2V0KEV4cGxhaW5UaGlzKFRvZ2dsZVNob3cpKSksXG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5TdG9wX3Byb3BhZ2F0aW9uLFxuICAgIF0pO1xuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJleHBsYWluLXRoaXMtYnV0dG9uXCJdKSxcbiAgICBbXG4gICAgICBXaWRnZXRzLnRvZ2dsZShcbiAgICAgICAgfnRvb2x0aXAsXG4gICAgICAgIFwiP1wiLFxuICAgICAgICBnbG9iYWxzLnNldHRpbmdzLmV4cGxhaW5UaGlzLnNob3csXG4gICAgICAgIHRvZ2dsZV9leHBsYWluX3RoaXMsXG4gICAgICApLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgY2xzX3ZpZXcgPSAoY2k6IEluZm8udCk6IE5vZGUudCA9PlxuICBkaXYofmF0dHI9Y2xzcyhbXCJzeW50YXgtY2xhc3NcIl0pLCBbdGV4dChjaSB8PiBJbmZvLmNsc19vZiB8PiBDbHMuc2hvdyldKTtcblxubGV0IGN0eF90b2dnbGUgPSAofmdsb2JhbHM6IEdsb2JhbHMudCk6IE5vZGUudCA9PlxuICBkaXYoXG4gICAgfmF0dHI9XG4gICAgICBBdHRyLm1hbnkoW1xuICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT4gZ2xvYmFscy5pbmplY3RfZ2xvYmFsKFNldChDb250ZXh0SW5zcGVjdG9yKSkpLFxuICAgICAgICBjbHNzKFxuICAgICAgICAgIFtcImdhbW1hXCJdIEAgKGdsb2JhbHMuc2V0dGluZ3MuY29udGV4dF9pbnNwZWN0b3IgPyBbXCJ2aXNpYmxlXCJdIDogW10pLFxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgW3RleHQoXCLOk1wiKV0sXG4gICk7XG5cbmxldCB0ZXJtX3ZpZXcgPSAofmdsb2JhbHM6IEdsb2JhbHMudCwgY2kpID0+IHtcbiAgbGV0IHNvcnQgPSBjaSB8PiBJbmZvLnNvcnRfb2YgfD4gU29ydC5zaG93O1xuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJjaS1oZWFkZXJcIiwgc29ydF0gQCAoSW5mby5pc19lcnJvcihjaSkgPyBbZXJyY10gOiBbXSkpLFxuICAgIFtcbiAgICAgIGN0eF90b2dnbGUofmdsb2JhbHMpLFxuICAgICAgQ3R4SW5zcGVjdG9yLnZpZXcofmdsb2JhbHMsIGNpKSxcbiAgICAgIGRpdih+YXR0cj1jbHNzKFtcInRlcm0tdGFnXCJdKSwgW3RleHQoc29ydCldKSxcbiAgICAgIGV4cGxhaW5fdGhpc190b2dnbGUofmdsb2JhbHMpLFxuICAgICAgY2xzX3ZpZXcoY2kpLFxuICAgIF0sXG4gICk7XG59O1xuXG5sZXQgZWxlbWVudHNfbm91bjogQ2xzLnQgPT4gc3RyaW5nID1cbiAgZnVuXG4gIHwgRXhwKE1hdGNoIHwgSWYpID0+IFwiQnJhbmNoZXNcIlxuICB8IEV4cChMaXN0TGl0KVxuICB8IFBhdChMaXN0TGl0KSA9PiBcIkVsZW1lbnRzXCJcbiAgfCBFeHAoTGlzdENvbmNhdCkgPT4gXCJPcGVyYW5kc1wiXG4gIHwgXyA9PiBmYWlsd2l0aChcImVsZW1lbnRzX25vdW46IENscyBkb2Vzbid0IGhhdmUgZWxlbWVudHNcIik7XG5cbmxldCBjb21tb25fZXJyX3ZpZXcgPSAoY2xzOiBDbHMudCwgZXJyOiBJbmZvLmVycm9yX2NvbW1vbikgPT5cbiAgc3dpdGNoIChlcnIpIHtcbiAgfCBOb1R5cGUoQmFkVG9rZW4odG9rZW4pKSA9PlxuICAgIHN3aXRjaCAoRm9ybS5iYWRfdG9rZW5fY2xzKHRva2VuKSkge1xuICAgIHwgQmFkSW50ID0+IFt0ZXh0KFwiSW50ZWdlciBpcyB0b28gbGFyZ2Ugb3IgdG9vIHNtYWxsXCIpXVxuICAgIHwgT3RoZXIgPT4gW3RleHQoUHJpbnRmLnNwcmludGYoXCJcXFwiJXNcXFwiIGlzbid0IGEgdmFsaWQgdG9rZW5cIiwgdG9rZW4pKV1cbiAgICB9XG4gIHwgTm9UeXBlKEJhZFRyaXZBcCh0eSkpID0+IFtcbiAgICAgIHRleHQoXCJGdW5jdGlvbiBhcmd1bWVudCB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KHR5KSxcbiAgICAgIHRleHQoXCJpbmNvbnNpc3RlbnQgd2l0aFwiKSxcbiAgICAgIFR5cGUudmlldyhQcm9kKFtdKSB8PiBUeXAuZnJlc2gpLFxuICAgIF1cbiAgfCBOb1R5cGUoRnJlZUNvbnN0cnVjdG9yKG5hbWUpKSA9PiBbY29kZV9lcnIobmFtZSksIHRleHQoXCJub3QgZm91bmRcIildXG4gIHwgSW5jb25zaXN0ZW50KFdpdGhBcnJvdyh0eXApKSA9PiBbXG4gICAgICB0ZXh0KFwiOlwiKSxcbiAgICAgIFR5cGUudmlldyh0eXApLFxuICAgICAgdGV4dChcImluY29uc2lzdGVudCB3aXRoIGFycm93IHR5cGVcIiksXG4gICAgXVxuICB8IEluY29uc2lzdGVudChFeHBlY3RhdGlvbih7YW5hLCBzeW59KSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoc3luKSxcbiAgICAgIHRleHQoXCJpbmNvbnNpc3RlbnQgd2l0aCBleHBlY3RlZCB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KGFuYSksXG4gICAgXVxuICB8IEluY29uc2lzdGVudChJbnRlcm5hbCh0eXMpKSA9PiBbXG4gICAgICB0ZXh0KGVsZW1lbnRzX25vdW4oY2xzKSArKyBcIiBoYXZlIGluY29uc2lzdGVudCB0eXBlczpcIiksXG4gICAgICAuLi5MaXN0VXRpbC5qb2luKHRleHQoXCIsXCIpLCBMaXN0Lm1hcChUeXBlLnZpZXcsIHR5cykpLFxuICAgIF1cbiAgfTtcblxubGV0IGNvbW1vbl9va192aWV3ID0gKGNsczogQ2xzLnQsIG9rOiBJbmZvLm9rX3BhdCkgPT4ge1xuICBzd2l0Y2ggKGNscywgb2spIHtcbiAgfCAoRXhwKE11bHRpSG9sZSkgfCBQYXQoTXVsdGlIb2xlKSwgXykgPT4gW1xuICAgICAgdGV4dChcIkV4cGVjdGluZyBvcGVyYXRvciBvciBkZWxpbWl0ZXJcIiksXG4gICAgXVxuICB8IChFeHAoRW1wdHlIb2xlKSwgU3luKF8pKSA9PiBbdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBleHByZXNzaW9uXCIpXVxuICB8IChQYXQoRW1wdHlIb2xlKSwgU3luKF8pKSA9PiBbdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBwYXR0ZXJuXCIpXVxuICB8IChFeHAoRW1wdHlIb2xlKSwgQW5hKENvbnNpc3RlbnQoe2FuYSwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIkZpbGxhYmxlIGJ5IGFueSBleHByZXNzaW9uIG9mIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoYW5hKSxcbiAgICBdXG4gIHwgKFBhdChFbXB0eUhvbGUpLCBBbmEoQ29uc2lzdGVudCh7YW5hLCBffSkpKSA9PiBbXG4gICAgICB0ZXh0KFwiRmlsbGFibGUgYnkgYW55IHBhdHRlcm4gb2YgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCAoXywgU3luKHN5bikpID0+IFt0ZXh0KFwiOlwiKSwgVHlwZS52aWV3KHN5bildXG4gIHwgKFBhdChWYXIpIHwgUGF0KFdpbGQpLCBBbmEoQ29uc2lzdGVudCh7YW5hLCBffSkpKSA9PiBbXG4gICAgICB0ZXh0KFwiOlwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCAoXywgQW5hKENvbnNpc3RlbnQoe2FuYSwgc3luLCBffSkpKSB3aGVuIGFuYSA9PSBzeW4gPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoc3luKSxcbiAgICAgIHRleHQoXCJlcXVhbHMgZXhwZWN0ZWQgdHlwZVwiKSxcbiAgICBdXG4gIHwgKF8sIEFuYShDb25zaXN0ZW50KHthbmEsIHN5biwgX30pKSkgPT4gW1xuICAgICAgdGV4dChcIjpcIiksXG4gICAgICBUeXBlLnZpZXcoc3luKSxcbiAgICAgIHRleHQoXCJjb25zaXN0ZW50IHdpdGggZXhwZWN0ZWQgdHlwZVwiKSxcbiAgICAgIFR5cGUudmlldyhhbmEpLFxuICAgIF1cbiAgfCAoXywgQW5hKEludGVybmFsbHlJbmNvbnNpc3RlbnQoe2FuYSwgbm9qb2luOiB0eXN9KSkpID0+XG4gICAgW1xuICAgICAgdGV4dChlbGVtZW50c19ub3VuKGNscykgKysgXCIgaGF2ZSBpbmNvbnNpc3RlbnQgdHlwZXM6XCIpLFxuICAgICAgLi4uTGlzdFV0aWwuam9pbih0ZXh0KFwiLFwiKSwgTGlzdC5tYXAoVHlwZS52aWV3LCB0eXMpKSxcbiAgICBdXG4gICAgQCBbdGV4dChcImJ1dCBjb25zaXN0ZW50IHdpdGggZXhwZWN0ZWRcIiksIFR5cGUudmlldyhhbmEpXVxuICB9O1xufTtcblxubGV0IHR5cF9va192aWV3ID0gKGNsczogQ2xzLnQsIG9rOiBJbmZvLm9rX3R5cCkgPT5cbiAgc3dpdGNoIChvaykge1xuICB8IFR5cGUoXykgd2hlbiBjbHMgPT0gVHlwKEVtcHR5SG9sZSkgPT4gW3RleHQoXCJGaWxsYWJsZSBieSBhbnkgdHlwZVwiKV1cbiAgfCBUeXBlKHR5KSA9PiBbVHlwZS52aWV3KHR5KSwgdGV4dChcImlzIGEgdHlwZVwiKV1cbiAgfCBUeXBlQWxpYXMobmFtZSwgdHlfbG9va3VwKSA9PiBbXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpIHw+IFR5cC5mcmVzaCksXG4gICAgICB0ZXh0KFwiaXMgYW4gYWxpYXMgZm9yXCIpLFxuICAgICAgVHlwZS52aWV3KHR5X2xvb2t1cCksXG4gICAgXVxuICB8IFZhcmlhbnQobmFtZSwgc3VtX3R5KSA9PiBbXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpIHw+IFR5cC5mcmVzaCksXG4gICAgICB0ZXh0KFwiaXMgYSBzdW0gdHlwZSBjb25zdHVjdG9yIG9mIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoc3VtX3R5KSxcbiAgICBdXG4gIHwgVmFyaWFudEluY29tcGxldGUoc3VtX3R5KSA9PiBbXG4gICAgICB0ZXh0KFwiQW4gaW5jb21wbGV0ZSBzdW0gdHlwZSBjb25zdHVjdG9yIG9mIHR5cGVcIiksXG4gICAgICBUeXBlLnZpZXcoc3VtX3R5KSxcbiAgICBdXG4gIH07XG5cbmxldCB0eXBfZXJyX3ZpZXcgPSAob2s6IEluZm8uZXJyb3JfdHlwKSA9PlxuICBzd2l0Y2ggKG9rKSB7XG4gIHwgRnJlZVR5cGVWYXJpYWJsZShuYW1lKSA9PiBbXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpIHw+IFR5cC5mcmVzaCksXG4gICAgICB0ZXh0KFwibm90IGZvdW5kXCIpLFxuICAgIF1cbiAgfCBCYWRUb2tlbih0b2tlbikgPT4gW1xuICAgICAgY29kZV9lcnIodG9rZW4pLFxuICAgICAgdGV4dChcIm5vdCBhIHR5cGUgb3IgdHlwZSBvcGVyYXRvclwiKSxcbiAgICBdXG4gIHwgV2FudENvbnN0cnVjdG9yRm91bmRBcFxuICB8IFdhbnRDb25zdHJ1Y3RvckZvdW5kVHlwZShfKSA9PiBbdGV4dChcIkV4cGVjdGVkIGEgY29uc3RydWN0b3JcIildXG4gIHwgV2FudFR5cGVGb3VuZEFwID0+IFt0ZXh0KFwiTXVzdCBiZSBwYXJ0IG9mIGEgc3VtIHR5cGVcIildXG4gIHwgRHVwbGljYXRlQ29uc3RydWN0b3IobmFtZSkgPT4gW1xuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgICAgdGV4dChcImFscmVhZHkgdXNlZCBpbiB0aGlzIHN1bVwiKSxcbiAgICBdXG4gIH07XG5cbmxldCBleHBfdmlldyA9IChjbHM6IENscy50LCBzdGF0dXM6IEluZm8uc3RhdHVzX2V4cCkgPT5cbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgfCBJbkhvbGUoRnJlZVZhcmlhYmxlKG5hbWUpKSA9PlxuICAgIGRpdl9lcnIoW2NvZGVfZXJyKG5hbWUpLCB0ZXh0KFwibm90IGZvdW5kXCIpXSlcbiAgfCBJbkhvbGUoVW51c2VkRGVmZXJyYWwpID0+XG4gICAgZGl2X2VycihbdGV4dChcIkRlZmVycmFsIG11c3QgYXBwZWFyIGFzIGEgZnVuY3Rpb24gYXJndW1lbnRcIildKVxuICB8IEluSG9sZShCYWRQYXJ0aWFsQXAoTm9EZWZlcnJlZEFyZ3MpKSA9PlxuICAgIGRpdl9lcnIoW3RleHQoXCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgbm9uLWRlZmVycmVkIGFyZ3VtZW50XCIpXSlcbiAgfCBJbkhvbGUoQmFkUGFydGlhbEFwKEFyaXR5TWlzbWF0Y2goe2V4cGVjdGVkLCBhY3R1YWx9KSkpID0+XG4gICAgZGl2X2VycihbXG4gICAgICB0ZXh0KFxuICAgICAgICBcIkFyaXR5IG1pc21hdGNoOiBleHBlY3RlZCBcIlxuICAgICAgICArKyBzdHJpbmdfb2ZfaW50KGV4cGVjdGVkKVxuICAgICAgICArKyBcIiBhcmd1bWVudFwiXG4gICAgICAgICsrIChleHBlY3RlZCA9PSAxID8gXCJcIiA6IFwic1wiKVxuICAgICAgICArKyBcIiwgZ290IFwiXG4gICAgICAgICsrIHN0cmluZ19vZl9pbnQoYWN0dWFsKVxuICAgICAgICArKyBcIiBhcmd1bWVudHNcIixcbiAgICAgICksXG4gICAgXSlcbiAgfCBJbkhvbGUoQ29tbW9uKGVycm9yKSkgPT4gZGl2X2Vycihjb21tb25fZXJyX3ZpZXcoY2xzLCBlcnJvcikpXG4gIHwgTm90SW5Ib2xlKEFuYURlZmVycmFsQ29uc2lzdGVudChhbmEpKSA9PlxuICAgIGRpdl9vayhbdGV4dChcIkV4cGVjdGluZyB0eXBlXCIpLCBUeXBlLnZpZXcoYW5hKV0pXG4gIHwgTm90SW5Ib2xlKENvbW1vbihvaykpID0+IGRpdl9vayhjb21tb25fb2tfdmlldyhjbHMsIG9rKSlcbiAgfTtcblxubGV0IHBhdF92aWV3ID0gKGNsczogQ2xzLnQsIHN0YXR1czogSW5mby5zdGF0dXNfcGF0KSA9PlxuICBzd2l0Y2ggKHN0YXR1cykge1xuICB8IEluSG9sZShFeHBlY3RlZENvbnN0cnVjdG9yKSA9PiBkaXZfZXJyKFt0ZXh0KFwiRXhwZWN0ZWQgYSBjb25zdHJ1Y3RvclwiKV0pXG4gIHwgSW5Ib2xlKENvbW1vbihlcnJvcikpID0+IGRpdl9lcnIoY29tbW9uX2Vycl92aWV3KGNscywgZXJyb3IpKVxuICB8IE5vdEluSG9sZShvaykgPT4gZGl2X29rKGNvbW1vbl9va192aWV3KGNscywgb2spKVxuICB9O1xuXG5sZXQgdHlwX3ZpZXcgPSAoY2xzOiBDbHMudCwgc3RhdHVzOiBJbmZvLnN0YXR1c190eXApID0+XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gIHwgTm90SW5Ib2xlKG9rKSA9PiBkaXZfb2sodHlwX29rX3ZpZXcoY2xzLCBvaykpXG4gIHwgSW5Ib2xlKGVycikgPT4gZGl2X2Vycih0eXBfZXJyX3ZpZXcoZXJyKSlcbiAgfTtcblxubGV0IHRwYXRfdmlldyA9IChfOiBDbHMudCwgc3RhdHVzOiBJbmZvLnN0YXR1c190cGF0KSA9PlxuICBzd2l0Y2ggKHN0YXR1cykge1xuICB8IE5vdEluSG9sZShFbXB0eSkgPT4gZGl2X29rKFt0ZXh0KFwiRmlsbGFibGUgd2l0aCBhIG5ldyBhbGlhc1wiKV0pXG4gIHwgTm90SW5Ib2xlKFZhcihuYW1lKSkgPT4gZGl2X29rKFtUeXBlLmFsaWFzX3ZpZXcobmFtZSldKVxuICB8IEluSG9sZShOb3RBVmFyKE5vdENhcGl0YWxpemVkKSkgPT5cbiAgICBkaXZfZXJyKFt0ZXh0KFwiTXVzdCBiZWdpbiB3aXRoIGEgY2FwaXRhbCBsZXR0ZXJcIildKVxuICB8IEluSG9sZShOb3RBVmFyKF8pKSA9PiBkaXZfZXJyKFt0ZXh0KFwiRXhwZWN0ZWQgYW4gYWxpYXNcIildKVxuICB8IEluSG9sZShTaGFkb3dzVHlwZShuYW1lLCBCYXNlVHlwKSkgPT5cbiAgICBkaXZfZXJyKFtcbiAgICAgIHRleHQoXCJDYW4ndCBzaGFkb3cgYmFzZSB0eXBlXCIpLFxuICAgICAgVHlwZS52aWV3KFZhcihuYW1lKSB8PiBUeXAuZnJlc2gpLFxuICAgIF0pXG4gIHwgSW5Ib2xlKFNoYWRvd3NUeXBlKG5hbWUsIFR5QWxpYXMpKSA9PlxuICAgIGRpdl9lcnIoW1xuICAgICAgdGV4dChcIkNhbid0IHNoYWRvdyBleGlzdGluZyBhbGlhc1wiKSxcbiAgICAgIFR5cGUudmlldyhWYXIobmFtZSkgfD4gVHlwLmZyZXNoKSxcbiAgICBdKVxuICB8IEluSG9sZShTaGFkb3dzVHlwZShuYW1lLCBUeVZhcikpID0+XG4gICAgZGl2X2VycihbXG4gICAgICB0ZXh0KFwiQ2FuJ3Qgc2hhZG93IGV4aXN0aW5nIHR5cGUgdmFyaWFibGVcIiksXG4gICAgICBUeXBlLnZpZXcoVmFyKG5hbWUpIHw+IFR5cC5mcmVzaCksXG4gICAgXSlcbiAgfTtcblxubGV0IHNlY29uZGFyeV92aWV3ID0gKGNsczogQ2xzLnQpID0+IGRpdl9vayhbdGV4dChjbHMgfD4gQ2xzLnNob3cpXSk7XG5cbmxldCB2aWV3X29mX2luZm8gPSAofmdsb2JhbHMsIGNpKTogTm9kZS50ID0+IHtcbiAgbGV0IHdyYXBwZXIgPSBzdGF0dXNfdmlldyA9PlxuICAgIGRpdih+YXR0cj1jbHNzKFtcImluZm9cIl0pLCBbdGVybV92aWV3KH5nbG9iYWxzLCBjaSksIHN0YXR1c192aWV3XSk7XG4gIHN3aXRjaCAoY2kpIHtcbiAgfCBTZWNvbmRhcnkoXykgPT4gd3JhcHBlcihkaXYoW10pKVxuICB8IEluZm9FeHAoe2Nscywgc3RhdHVzLCBffSkgPT4gd3JhcHBlcihleHBfdmlldyhjbHMsIHN0YXR1cykpXG4gIHwgSW5mb1BhdCh7Y2xzLCBzdGF0dXMsIF99KSA9PiB3cmFwcGVyKHBhdF92aWV3KGNscywgc3RhdHVzKSlcbiAgfCBJbmZvVHlwKHtjbHMsIHN0YXR1cywgX30pID0+IHdyYXBwZXIodHlwX3ZpZXcoY2xzLCBzdGF0dXMpKVxuICB8IEluZm9UUGF0KHtjbHMsIHN0YXR1cywgX30pID0+IHdyYXBwZXIodHBhdF92aWV3KGNscywgc3RhdHVzKSlcbiAgfTtcbn07XG5cbmxldCBpbnNwZWN0b3JfdmlldyA9ICh+Z2xvYmFscywgY2kpOiBOb2RlLnQgPT5cbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wiY3Vyc29yLWluc3BlY3RvclwiXSBAIFtJbmZvLmlzX2Vycm9yKGNpKSA/IGVycmMgOiBva2NdKSxcbiAgICBbdmlld19vZl9pbmZvKH5nbG9iYWxzLCBjaSldLFxuICApO1xuXG5sZXQgdmlldyA9ICh+Z2xvYmFsczogR2xvYmFscy50LCBjdXJzb3JfaW5mbzogb3B0aW9uKEluZm8udCkpID0+IHtcbiAgbGV0IGJhcl92aWV3ID0gZGl2KH5hdHRyPUF0dHIuaWQoXCJib3R0b20tYmFyXCIpKTtcbiAgbGV0IGVycl92aWV3ID0gZXJyID0+XG4gICAgYmFyX3ZpZXcoW1xuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1jbHNzKFtcImN1cnNvci1pbnNwZWN0b3JcIiwgXCJuby1pbmZvXCJdKSxcbiAgICAgICAgW2Rpdih+YXR0cj1jbHNzKFtcImljb25cIl0pLCBbSWNvbnMubWFnbmlmeV0pLCB0ZXh0KGVycildLFxuICAgICAgKSxcbiAgICBdKTtcbiAgc3dpdGNoIChjdXJzb3JfaW5mbykge1xuICB8IF8gd2hlbiAhZ2xvYmFscy5zZXR0aW5ncy5jb3JlLnN0YXRpY3MgPT4gZGl2X2VtcHR5XG4gIHwgTm9uZSA9PiBlcnJfdmlldyhcIldoaXRlc3BhY2Ugb3IgQ29tbWVudFwiKVxuICB8IFNvbWUoY2kpID0+XG4gICAgYmFyX3ZpZXcoW1xuICAgICAgaW5zcGVjdG9yX3ZpZXcofmdsb2JhbHMsIGNpKSxcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9Y2xzcyhbXCJpZFwiXSksXG4gICAgICAgIFt0ZXh0KFN0cmluZy5zdWIoSWQudG9fc3RyaW5nKEluZm8uaWRfb2YoY2kpKSwgMCwgNCkpXSxcbiAgICAgICksXG4gICAgXSlcbiAgfTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFdpZGdldHM7XG5cbmxldCBvcHRpb25fdmlldyA9IChuYW1lLCBuKSA9PlxuICBvcHRpb24oXG4gICAgfmF0dHI9biA9PSBuYW1lID8gQXR0ci5jcmVhdGUoXCJzZWxlY3RlZFwiLCBcInNlbGVjdGVkXCIpIDogQXR0ci5tYW55KFtdKSxcbiAgICBbdGV4dChuKV0sXG4gICk7XG5cbmxldCBtb2RlX21lbnUgPSAofmluamVjdDogVXBkYXRlLnQgPT4gJ2EsIH5tb2RlOiBTZXR0aW5ncy5Nb2RlbC5tb2RlKSA9PlxuICBkaXYoXG4gICAgfmF0dHI9QXR0ci5tYW55KFtBdHRyLmNsYXNzXyhcIm1vZGUtbmFtZVwiKSwgQXR0ci50aXRsZShcIlRvZ2dsZSBNb2RlXCIpXSksXG4gICAgW1xuICAgICAgc2VsZWN0KFxuICAgICAgICB+YXR0cj1cbiAgICAgICAgICBBdHRyLm9uX2NoYW5nZSgoXywgbmFtZSkgPT5cbiAgICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgICAgR2xvYmFscyhTZXQoTW9kZShTZXR0aW5ncy5Nb2RlbC5tb2RlX29mX3N0cmluZyhuYW1lKSkpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICApLFxuICAgICAgICBMaXN0Lm1hcChcbiAgICAgICAgICBvcHRpb25fdmlldyhTZXR0aW5ncy5Nb2RlbC5zaG93X21vZGUobW9kZSkpLFxuICAgICAgICAgIFtcIlNjcmF0Y2hcIiwgXCJEb2N1bWVudGF0aW9uXCIsIFwiRXhlcmNpc2VzXCJdLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xuXG5sZXQgc2xpZGVfc2VsZWN0ID0gKH5pbmplY3QsIH5jdXJfc2xpZGUsIH5udW1fc2xpZGVzKSA9PiB7XG4gIGxldCBuZXh0X2VkID0gKGN1cl9zbGlkZSArIDEpIG1vZCBudW1fc2xpZGVzO1xuICBsZXQgcHJldl9lZCA9IFV0aWwuSW50VXRpbC5tb2R1bG8oY3VyX3NsaWRlIC0gMSwgbnVtX3NsaWRlcyk7XG4gIFtcbiAgICBidXR0b24oSWNvbnMuYmFjaywgXyA9PiBpbmplY3QoVXBkYXRlLlN3aXRjaFNjcmF0Y2hTbGlkZShwcmV2X2VkKSkpLFxuICAgIHRleHQoUHJpbnRmLnNwcmludGYoXCIlZCAvICVkXCIsIGN1cl9zbGlkZSArIDEsIG51bV9zbGlkZXMpKSxcbiAgICBidXR0b24oSWNvbnMuZm9yd2FyZCwgXyA9PiBpbmplY3QoVXBkYXRlLlN3aXRjaFNjcmF0Y2hTbGlkZShuZXh0X2VkKSkpLFxuICBdO1xufTtcblxubGV0IHNjcmF0Y2hfdmlldyA9ICh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+c2xpZGVzKSA9PlxuICBbbW9kZV9tZW51KH5pbmplY3QsIH5tb2RlPVNjcmF0Y2gpXVxuICBAIHNsaWRlX3NlbGVjdCh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+bnVtX3NsaWRlcz1MaXN0Lmxlbmd0aChzbGlkZXMpKTtcblxubGV0IGRvY3VtZW50YXRpb25fdmlldyA9ICh+aW5qZWN0LCB+bmFtZSwgfmVkaXRvcnMpID0+IHtcbiAgbGV0IGVkaXRvcl9uYW1lcyA9IExpc3QubWFwKGZzdCwgZWRpdG9ycyk7XG4gIGxldCByZWMgZmluZF9wcmV2X25leHQ6IGxpc3Qoc3RyaW5nKSA9PiAob3B0aW9uKHN0cmluZyksIG9wdGlvbihzdHJpbmcpKSA9XG4gICAgZnVuXG4gICAgfCBbXVxuICAgIHwgW19dID0+IChOb25lLCBOb25lKVxuICAgIHwgW3gsIHldIHdoZW4gbmFtZSA9PSB4ID0+IChOb25lLCBTb21lKHkpKVxuICAgIHwgW3gsIHldIHdoZW4gbmFtZSA9PSB5ID0+IChTb21lKHgpLCBOb25lKVxuICAgIHwgW18sIF9dID0+IChOb25lLCBOb25lKVxuICAgIHwgW3gsIHksIC4uLl9dIHdoZW4gbmFtZSA9PSB4ID0+IChOb25lLCBTb21lKHkpKVxuICAgIHwgW3gsIHksIHosIC4uLl9dIHdoZW4gbmFtZSA9PSB5ID0+IChTb21lKHgpLCBTb21lKHopKVxuICAgIHwgW18sIC4uLnlzXSA9PiBmaW5kX3ByZXZfbmV4dCh5cyk7XG4gIGxldCAocHJldiwgbmV4dCkgPSBmaW5kX3ByZXZfbmV4dChlZGl0b3JfbmFtZXMpO1xuICBsZXQgcHJldiA9XG4gICAgcHJldlxuICAgIHw+IE9wdGlvbi5tYXAocyA9PlxuICAgICAgICAgYnV0dG9uKEljb25zLmJhY2ssIF8gPT4gaW5qZWN0KFVwZGF0ZS5Td2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUocykpKVxuICAgICAgIClcbiAgICB8PiBPcHRpb24udmFsdWUoXG4gICAgICAgICB+ZGVmYXVsdD1cbiAgICAgICAgICAgYnV0dG9uX2QoXG4gICAgICAgICAgICAgSWNvbnMuYmFjayxcbiAgICAgICAgICAgICBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShcIm5vbmVcIikpLFxuICAgICAgICAgICAgIH5kaXNhYmxlZD10cnVlLFxuICAgICAgICAgICApLFxuICAgICAgICk7XG4gIGxldCBuZXh0ID1cbiAgICBuZXh0XG4gICAgfD4gT3B0aW9uLm1hcChzID0+XG4gICAgICAgICBidXR0b24oSWNvbnMuZm9yd2FyZCwgXyA9PlxuICAgICAgICAgICBpbmplY3QoVXBkYXRlLlN3aXRjaERvY3VtZW50YXRpb25TbGlkZShzKSlcbiAgICAgICAgIClcbiAgICAgICApXG4gICAgfD4gT3B0aW9uLnZhbHVlKFxuICAgICAgICAgfmRlZmF1bHQ9XG4gICAgICAgICAgIGJ1dHRvbl9kKFxuICAgICAgICAgICAgIEljb25zLmZvcndhcmQsXG4gICAgICAgICAgICAgaW5qZWN0KFVwZGF0ZS5Td2l0Y2hEb2N1bWVudGF0aW9uU2xpZGUoXCJub25lXCIpKSxcbiAgICAgICAgICAgICB+ZGlzYWJsZWQ9dHJ1ZSxcbiAgICAgICAgICAgKSxcbiAgICAgICApO1xuICBbXG4gICAgbW9kZV9tZW51KH5pbmplY3QsIH5tb2RlPURvY3VtZW50YXRpb24pLFxuICAgIHByZXYsXG4gICAgc2VsZWN0KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIub25fY2hhbmdlKChfLCBuYW1lKSA9PlxuICAgICAgICAgIGluamVjdChVcGRhdGUuU3dpdGNoRG9jdW1lbnRhdGlvblNsaWRlKG5hbWUpKVxuICAgICAgICApLFxuICAgICAgTGlzdC5tYXAob3B0aW9uX3ZpZXcobmFtZSksIGVkaXRvcl9uYW1lcyksXG4gICAgKSxcbiAgICBuZXh0LFxuICBdO1xufTtcblxubGV0IGluc3RydWN0b3JfdG9nZ2xlID0gKH5pbmplY3QsIH5pbnN0cnVjdG9yX21vZGUpID0+XG4gIEV4ZXJjaXNlU2V0dGluZ3Muc2hvd19pbnN0cnVjdG9yXG4gICAgPyBbXG4gICAgICB0b2dnbGUoXCLwn46TXCIsIH50b29sdGlwPVwiVG9nZ2xlIEluc3RydWN0b3IgTW9kZVwiLCBpbnN0cnVjdG9yX21vZGUsIF8gPT5cbiAgICAgICAgaW5qZWN0KEdsb2JhbHMuVXBkYXRlLlNldChJbnN0cnVjdG9yTW9kZSkpXG4gICAgICApLFxuICAgIF1cbiAgICA6IFtdO1xuXG5sZXQgZXhlcmNpc2VzX3ZpZXcgPSAofmluamVjdCwgfmN1cl9zbGlkZSwgfnNwZWNzLCB+aW5zdHJ1Y3Rvcl9tb2RlKSA9PiB7XG4gIFttb2RlX21lbnUofmluamVjdCwgfm1vZGU9RXhlcmNpc2VzKV1cbiAgQCBpbnN0cnVjdG9yX3RvZ2dsZSh+aW5qZWN0PXUgPT4gaW5qZWN0KEdsb2JhbHModSkpLCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICBAIHNsaWRlX3NlbGVjdCh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+bnVtX3NsaWRlcz1MaXN0Lmxlbmd0aChzcGVjcykpO1xufTtcblxubGV0IHZpZXcgPVxuICAgIChcbiAgICAgIH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhLFxuICAgICAgfmVkaXRvcnM6IEVkaXRvcnMudCxcbiAgICAgIH5zZXR0aW5ncyBhcyB7aW5zdHJ1Y3Rvcl9tb2RlLCBffTogU2V0dGluZ3MudCxcbiAgICApXG4gICAgOiBOb2RlLnQgPT4ge1xuICBsZXQgY29udGVudHMgPVxuICAgIHN3aXRjaCAoZWRpdG9ycykge1xuICAgIHwgU2NyYXRjaChjdXJfc2xpZGUsIHNsaWRlcykgPT5cbiAgICAgIHNjcmF0Y2hfdmlldyh+aW5qZWN0LCB+Y3VyX3NsaWRlLCB+c2xpZGVzKVxuICAgIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBlZGl0b3JzKSA9PlxuICAgICAgZG9jdW1lbnRhdGlvbl92aWV3KH5pbmplY3QsIH5uYW1lLCB+ZWRpdG9ycylcbiAgICB8IEV4ZXJjaXNlcyhjdXJfc2xpZGUsIHNwZWNzLCBfKSA9PlxuICAgICAgZXhlcmNpc2VzX3ZpZXcofmN1cl9zbGlkZSwgfnNwZWNzLCB+aW5qZWN0LCB+aW5zdHJ1Y3Rvcl9tb2RlKVxuICAgIH07XG4gIGRpdih+YXR0cj1BdHRyLmlkKFwiZWRpdG9yLW1vZGVcIiksIGNvbnRlbnRzKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5cbmluY2x1ZGUgSGF6M2xzY2hvb2wuR3JhZGluZy5GKEV4ZXJjaXNlLkV4ZXJjaXNlRW52KTtcblxubGV0IHNjb3JlX3ZpZXcgPSAoKGVhcm5lZDogcG9pbnRzLCBtYXg6IHBvaW50cykpID0+IHtcbiAgZGl2KFxuICAgIH5hdHRyPVxuICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgXCJ0ZXN0LXBlcmNlbnRcIixcbiAgICAgICAgRmxvYXQuZXF1YWwoZWFybmVkLCBtYXgpID8gXCJhbGwtcGFzc1wiIDogXCJzb21lLWZhaWxcIixcbiAgICAgIF0pLFxuICAgIFt0ZXh0KFByaW50Zi5zcHJpbnRmKFwiJS4xZiAvICUuMWYgcHRzXCIsIGVhcm5lZCwgbWF4KSldLFxuICApO1xufTtcblxubGV0IHBlcmNlbnRhZ2VfdmlldyA9IChwOiBwZXJjZW50YWdlKSA9PiB7XG4gIGRpdihcbiAgICB+YXR0cj1cbiAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgIFwidGVzdC1wZXJjZW50XCIsXG4gICAgICAgIEZsb2F0LmVxdWFsKHAsIDEuKSA/IFwiYWxsLXBhc3NcIiA6IFwic29tZS1mYWlsXCIsXG4gICAgICBdKSxcbiAgICBbdGV4dChQcmludGYuc3ByaW50ZihcIiUuMGYlJVwiLCAxMDAuICouIHApKV0sXG4gICk7XG59O1xuXG5tb2R1bGUgVGVzdFZhbGlkYXRpb25SZXBvcnQgPSB7XG4gIGluY2x1ZGUgVGVzdFZhbGlkYXRpb25SZXBvcnQ7XG4gIGxldCB0ZXh0dWFsX3N1bW1hcnkgPSAocmVwb3J0OiB0KSA9PiB7XG4gICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgfCBOb25lID0+IFtOb2RlLnRleHQoXCJObyB0ZXN0IHJlc3VsdHNcIildXG4gICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT4gW1xuICAgICAgICB7XG4gICAgICAgICAgbGV0IHRvdGFsX3Rlc3RzID0gdGVzdF9yZXN1bHRzLnRvdGFsO1xuICAgICAgICAgIGxldCByZXF1aXJlZCA9IHJlcG9ydC5yZXF1aXJlZDtcbiAgICAgICAgICBsZXQgbnVtX3Rlc3RzX21lc3NhZ2UgPVxuICAgICAgICAgICAgdG90YWxfdGVzdHMgPj0gcmVxdWlyZWRcbiAgICAgICAgICAgICAgPyBcImF0IGxlYXN0IFwiICsrIHN0cmluZ19vZl9pbnQocmVxdWlyZWQpXG4gICAgICAgICAgICAgIDogc3RyaW5nX29mX2ludCh0ZXN0X3Jlc3VsdHMudG90YWwpXG4gICAgICAgICAgICAgICAgKysgXCIgb2YgXCJcbiAgICAgICAgICAgICAgICArKyBzdHJpbmdfb2ZfaW50KHJlcG9ydC5yZXF1aXJlZCk7XG4gICAgICAgICAgdGV4dChcbiAgICAgICAgICAgIFwiRW50ZXJlZCBcIlxuICAgICAgICAgICAgKysgbnVtX3Rlc3RzX21lc3NhZ2VcbiAgICAgICAgICAgICsrIFwiIHRlc3RzLiBcIlxuICAgICAgICAgICAgKysgdGVzdF9zdW1tYXJ5X3N0cih0ZXN0X3Jlc3VsdHMpLFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfTtcbiAgfTtcblxuICBsZXQgdmlldyA9ICh+aW5qZWN0LCByZXBvcnQ6IHQsIG1heF9wb2ludHM6IGludCkgPT4ge1xuICAgIENlbGwucmVwb3J0X2Zvb3Rlcl92aWV3KFtcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3Qtc3VtbWFyeVwiXSksXG4gICAgICAgIFtcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzXyhcInRlc3QtdGV4dFwiKSxcbiAgICAgICAgICAgIFtzY29yZV92aWV3KHNjb3JlX29mX3BlcmNlbnQocGVyY2VudGFnZShyZXBvcnQpLCBtYXhfcG9pbnRzKSldXG4gICAgICAgICAgICBAIHRleHR1YWxfc3VtbWFyeShyZXBvcnQpLFxuICAgICAgICAgICksXG4gICAgICAgIF1cbiAgICAgICAgQCBPcHRpb24udG9fbGlzdChcbiAgICAgICAgICAgIHJlcG9ydC50ZXN0X3Jlc3VsdHNcbiAgICAgICAgICAgIHw+IE9wdGlvbi5tYXAodGVzdF9yZXN1bHRzID0+XG4gICAgICAgICAgICAgICAgIFRlc3RWaWV3LnRlc3RfYmFyKFxuICAgICAgICAgICAgICAgICAgIH5pbmplY3RfanVtcD1cbiAgICAgICAgICAgICAgICAgICAgIFRlc3RWaWV3Lmp1bXBfdG9fdGVzdChcbiAgICAgICAgICAgICAgICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgWW91clRlc3RzVmFsaWRhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgXyxcbiAgICAgICAgICAgICAgICAgICAgICAgKCksXG4gICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgIH50ZXN0X3Jlc3VsdHMsXG4gICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICksXG4gICAgXSk7XG4gIH07XG59O1xuXG5tb2R1bGUgTXV0YXRpb25UZXN0aW5nUmVwb3J0ID0ge1xuICBpbmNsdWRlIE11dGF0aW9uVGVzdGluZ1JlcG9ydDtcbiAgb3BlbiBIYXozbGNvcmU7XG5cbiAgbGV0IHN1bW1hcnlfbWVzc2FnZSA9ICh+c2NvcmUsIH50b3RhbCwgfmZvdW5kKTogTm9kZS50ID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3QtdGV4dFwiXSksXG4gICAgICBbc2NvcmVfdmlldyhzY29yZSksIHRleHQoc3VtbWFyeV9zdHIofnRvdGFsLCB+Zm91bmQpKV0sXG4gICAgKTtcblxuICBsZXQgYmFyID0gKH5pbmplY3QsIGluc3RhbmNlcykgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1iYXJcIl0pLFxuICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAoaWQsIChzdGF0dXMsIF8pKSA9PlxuICAgICAgICAgIGRpdihcbiAgICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXCJzZWdtZW50XCIsIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyldKSxcbiAgICAgICAgICAgICAgICBBdHRyLm9uX2NsaWNrKFxuICAgICAgICAgICAgICAgICAgLy9UT0RPOiB3aXJlIHVwIHRlc3QgaWRzXG4gICAgICAgICAgICAgICAgICBUZXN0Vmlldy5qdW1wX3RvX3Rlc3QofmluamVjdCwgSGlkZGVuQnVncyhpZCksIElkLmludmFsaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgKSxcbiAgICAgICAgaW5zdGFuY2VzLFxuICAgICAgKSxcbiAgICApO1xuXG4gIGxldCBzdW1tYXJ5ID0gKH5pbmplY3QsIH5yZXBvcnQsIH5tYXhfcG9pbnRzKSA9PiB7XG4gICAgbGV0IHRvdGFsID0gTGlzdC5sZW5ndGgocmVwb3J0LnJlc3VsdHMpO1xuICAgIGxldCBmb3VuZCA9XG4gICAgICBMaXN0Lmxlbmd0aChcbiAgICAgICAgTGlzdC5maWx0ZXIoKCh4OiBUZXN0U3RhdHVzLnQsIF8pKSA9PiB4ID09IFBhc3MsIHJlcG9ydC5yZXN1bHRzKSxcbiAgICAgICk7XG4gICAgbGV0IHN0YXR1c19jbGFzcyA9IHRvdGFsID09IGZvdW5kID8gXCJQYXNzXCIgOiBcIkZhaWxcIjtcbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICBcImNlbGwtaXRlbVwiLFxuICAgICAgICAgIFwidGVzdC1zdW1tYXJ5XCIsXG4gICAgICAgICAgXCJjZWxsLXJlcG9ydFwiLFxuICAgICAgICAgIHN0YXR1c19jbGFzcyxcbiAgICAgICAgXSksXG4gICAgICBbXG4gICAgICAgIHN1bW1hcnlfbWVzc2FnZShcbiAgICAgICAgICB+c2NvcmU9c2NvcmVfb2ZfcGVyY2VudChwZXJjZW50YWdlKHJlcG9ydCksIG1heF9wb2ludHMpLFxuICAgICAgICAgIH50b3RhbCxcbiAgICAgICAgICB+Zm91bmQsXG4gICAgICAgICksXG4gICAgICAgIGJhcih+aW5qZWN0LCByZXBvcnQucmVzdWx0cyksXG4gICAgICBdLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0ID0gKGlkLCB+aW5qZWN0LCB+aGludDogc3RyaW5nLCB+c3RhdHVzOiBUZXN0U3RhdHVzLnQpID0+XG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtcInRlc3QtcmVwb3J0XCJdKSxcbiAgICAgICAgICAvL1RPRE86IHdpcmUgdXAgdGVzdCBpZHNcbiAgICAgICAgICBBdHRyLm9uX2NsaWNrKFxuICAgICAgICAgICAgVGVzdFZpZXcuanVtcF90b190ZXN0KH5pbmplY3QsIEhpZGRlbkJ1Z3MoaWQpLCBJZC5pbnZhbGlkKSxcbiAgICAgICAgICApLFxuICAgICAgICBdKSxcbiAgICAgIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICAgICAgXCJ0ZXN0LWlkXCIsXG4gICAgICAgICAgICAgIFwiVGVzdFwiICsrIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAvKiBOT1RFOiBwcmludHMgbGV4aWNhbCBpbmRleCwgbm90IHVuaXF1ZSBpZCAqL1xuICAgICAgICAgIFt0ZXh0KHN0cmluZ19vZl9pbnQoaWQgKyAxKSldLFxuICAgICAgICApLFxuICAgICAgICAvLyBUZXN0Vmlldy50ZXN0X2luc3RhbmNlX3ZpZXcofmZvbnRfbWV0cmljcywgaW5zdGFuY2UpLFxuICAgICAgXVxuICAgICAgQCBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1cbiAgICAgICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gICAgICAgICAgICAgIFwidGVzdC1oaW50XCIsXG4gICAgICAgICAgICAgIFwidGVzdC1pbnN0YW5jZVwiLFxuICAgICAgICAgICAgICBUZXN0U3RhdHVzLnRvX3N0cmluZyhzdGF0dXMpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgW3RleHQoaGludCldLFxuICAgICAgICApLFxuICAgICAgXSxcbiAgICApO1xuXG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydHMgPSAofmluamVjdCwgY292ZXJhZ2VfcmVzdWx0cykgPT5cbiAgICBkaXYoXG4gICAgICBjb3ZlcmFnZV9yZXN1bHRzXG4gICAgICB8PiBMaXN0Lm1hcGkoKGksIChzdGF0dXMsIGhpbnQpKSA9PlxuICAgICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydChpLCB+aW5qZWN0LCB+aGludCwgfnN0YXR1cylcbiAgICAgICAgICksXG4gICAgKTtcblxuICAvLyBsZXQgcGFzc2luZ190ZXN0X2lkcyA9IHRlc3RfbWFwID0+XG4gIC8vICAgdGVzdF9tYXBcbiAgLy8gICB8PiBMaXN0LmZpbHRlcigoKF9pZCwgcmVwb3J0cykpID0+XG4gIC8vICAgICAgICBMaXN0LmZvcl9hbGwoXG4gIC8vICAgICAgICAgICgoXywgc3RhdHVzKSkgPT4gc3RhdHVzID09IEhhejNsY29yZS5UZXN0U3RhdHVzLlBhc3MsXG4gIC8vICAgICAgICAgIHJlcG9ydHMsXG4gIC8vICAgICAgICApXG4gIC8vICAgICAgKVxuICAvLyAgIHw+IExpc3Quc3BsaXRcbiAgLy8gICB8PiBmc3Q7XG5cbiAgLy8gbGV0IGZhaWxpbmdfdGVzdF9pZHMgPSB0ZXN0X21hcCA9PlxuICAvLyAgIHRlc3RfbWFwXG4gIC8vICAgfD4gTGlzdC5maWx0ZXIoKChfaWQsIHJlcG9ydHMpKSA9PlxuICAvLyAgICAgICAgTGlzdC5mb3JfYWxsKFxuICAvLyAgICAgICAgICAoKF8sIHN0YXR1cykpID0+IHN0YXR1cyA9PSBIYXozbGNvcmUuVGVzdFN0YXR1cy5GYWlsLFxuICAvLyAgICAgICAgICByZXBvcnRzLFxuICAvLyAgICAgICAgKVxuICAvLyAgICAgIClcbiAgLy8gICB8PiBMaXN0LnNwbGl0XG4gIC8vICAgfD4gZnN0O1xuXG4gIC8vIGxldCBnZXRfdGVzdF9tYXAgPSAoZWRpdG9yczogbGlzdChIYXozbGNvcmUuRWRpdG9yLnQpKSA9PiB7XG4gIC8vICAgbGV0IChyZWZlcmVuY2VfdGVybSwgcmVmZXJlbmNlX21hcCkgPSBzcGxpY2VkX3N0YXRpY3MoZWRpdG9ycyk7XG4gIC8vICAgbGV0IHJlc3VsdF9yZWZlcmVuY2UgPVxuICAvLyAgICAgSW50ZXJmYWNlLnRlc3RfcmVzdWx0cyhyZWZlcmVuY2VfbWFwLCByZWZlcmVuY2VfdGVybSk7XG4gIC8vICAgc3dpdGNoIChyZXN1bHRfcmVmZXJlbmNlKSB7XG4gIC8vICAgfCBOb25lID0+IFtdXG4gIC8vICAgfCBTb21lKHRlc3RfcmVzdWx0cykgPT4gdGVzdF9yZXN1bHRzLnRlc3RfbWFwXG4gIC8vICAgfTtcbiAgLy8gfTtcbiAgLy8gbGV0IHNob3dfdGVybSA9IChlZGl0b3I6IEVkaXRvci50LCBfKSA9PlxuICAvLyAgIGVkaXRvci5zdGF0ZS56aXBwZXJcbiAgLy8gICB8PiBaaXBwZXIuemlwXG4gIC8vICAgfD4gTWFrZVRlcm0uZ29cbiAgLy8gICB8PiBmc3RcbiAgLy8gICB8PiBVRXhwLnNob3dcbiAgLy8gICB8PiBwcmludF9lbmRsaW5lXG4gIC8vICAgfD4gKF8gPT4gVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlKTtcblxuICAvLyBsZXQgZ2V0X2ZpcnN0X2NvbW1vbiA9XG4gIC8vICAgICAocmVmZXJlbmNlX3Bhc3NpbmcsIHdyb25nKTogKFRlc3RTdGF0dXMudCwgb3B0aW9uKCdhKSkgPT4ge1xuICAvLyAgIGxldCB3cm9uZ190ZXN0X21hcCA9IHdyb25nIHw+IGdldF90ZXN0X21hcDtcbiAgLy8gICBsZXQgd3JvbmdfZmFpbGluZyA9IHdyb25nX3Rlc3RfbWFwIHw+IGZhaWxpbmdfdGVzdF9pZHM7XG4gIC8vICAgbGV0IGNvbW1vbiA9XG4gIC8vICAgICBMaXN0LmZpbHRlcih4ID0+IExpc3QubWVtKHgsIHJlZmVyZW5jZV9wYXNzaW5nKSwgd3JvbmdfZmFpbGluZyk7XG4gIC8vICAgbGV0IGluc3RhbmNlOiBvcHRpb24obGlzdCgnYSkpID1cbiAgLy8gICAgIHN3aXRjaCAoY29tbW9uKSB7XG4gIC8vICAgICB8IFtdID0+IE5vbmVcbiAgLy8gICAgIHwgW3gsIC4uLl9dID0+IExpc3QuYXNzb2Nfb3B0KHgsIHdyb25nX3Rlc3RfbWFwKVxuICAvLyAgICAgfTtcbiAgLy8gICBzd2l0Y2ggKGluc3RhbmNlKSB7XG4gIC8vICAgfCBTb21lKFtpbnN0YW5jZSwgLi4uX10pID0+IChUZXN0U3RhdHVzLlBhc3MsIFNvbWUoaW5zdGFuY2UpKVxuICAvLyAgIHwgXyA9PiAoVGVzdFN0YXR1cy5GYWlsLCBOb25lKVxuICAvLyAgIH07XG4gIC8vIH07XG5cbiAgbGV0IHZpZXcgPSAofmluamVjdCwgcmVwb3J0OiB0LCBtYXhfcG9pbnRzOiBpbnQpID0+XG4gICAgaWYgKG1heF9wb2ludHMgPT0gMCkge1xuICAgICAgTm9kZS5kaXYoW10pO1xuICAgIH0gZWxzZSB7XG4gICAgICBDZWxsLnBhbmVsKFxuICAgICAgICB+Y2xhc3Nlcz1bXCJ0ZXN0LXBhbmVsXCJdLFxuICAgICAgICBbXG4gICAgICAgICAgQ2VsbC5jYXB0aW9uKFxuICAgICAgICAgICAgXCJNdXRhdGlvbiBUZXN0aW5nXCIsXG4gICAgICAgICAgICB+cmVzdD1cIjogWW91ciBUZXN0cyB2cy4gQnVnZ3kgSW1wbGVtZW50YXRpb25zIChoaWRkZW4pXCIsXG4gICAgICAgICAgKSxcbiAgICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydHMofmluamVjdCwgcmVwb3J0LnJlc3VsdHMpLFxuICAgICAgICBdLFxuICAgICAgICB+Zm9vdGVyPVNvbWUoc3VtbWFyeSh+aW5qZWN0LCB+cmVwb3J0LCB+bWF4X3BvaW50cykpLFxuICAgICAgKTtcbiAgICB9O1xufTtcblxubW9kdWxlIFN5bnRheFJlcG9ydCA9IHtcbiAgaW5jbHVkZSBTeW50YXhSZXBvcnQ7XG4gIGxldCBpbmRpdmlkdWFsX3JlcG9ydCA9IChpOiBpbnQsIGhpbnQ6IHN0cmluZywgc3RhdHVzOiBib29sKSA9PiB7XG4gICAgbGV0IHJlc3VsdF9zdHJpbmcgPSBzdGF0dXMgPyBcIlBhc3NcIiA6IFwiSW5kZXRcIjtcblxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXJlcG9ydFwiXSksXG4gICAgICBbXG4gICAgICAgIGRpdihcbiAgICAgICAgICB+YXR0cj1BdHRyLmNsYXNzZXMoW1widGVzdC1pZFwiLCBcIlRlc3RcIiArKyByZXN1bHRfc3RyaW5nXSksXG4gICAgICAgICAgW3RleHQoc3RyaW5nX29mX2ludChpICsgMSkpXSxcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICAgIEAgW1xuICAgICAgICBkaXYoXG4gICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc2VzKFtcInRlc3QtaGludFwiLCBcInRlc3QtaW5zdGFuY2VcIiwgcmVzdWx0X3N0cmluZ10pLFxuICAgICAgICAgIFt0ZXh0KGhpbnQpXSxcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfTtcblxuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnRzID0gKGhpbnRlZF9yZXN1bHRzOiBsaXN0KChib29sLCBzdHJpbmcpKSkgPT4ge1xuICAgIGRpdihcbiAgICAgIGhpbnRlZF9yZXN1bHRzXG4gICAgICB8PiBMaXN0Lm1hcGkoKGksIChzdGF0dXMsIGhpbnQpKSA9PlxuICAgICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydChpLCBoaW50LCBzdGF0dXMpXG4gICAgICAgICApLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHZpZXcgPSAoc3ludGF4X3JlcG9ydDogdCkgPT4ge1xuICAgIENlbGwucGFuZWwoXG4gICAgICB+Y2xhc3Nlcz1bXCJ0ZXN0LXBhbmVsXCJdLFxuICAgICAgW1xuICAgICAgICBDZWxsLmNhcHRpb24oXG4gICAgICAgICAgXCJTeW50YXggVmFsaWRhdGlvblwiLFxuICAgICAgICAgIH5yZXN0PVxuICAgICAgICAgICAgXCI6IERvZXMgeW91ciBpbXBsZW1lbnRhdGlvbiBzYXRpc2Z5IHRoZSBzeW50YWN0aWMgcmVxdWlyZW1lbnRzP1wiLFxuICAgICAgICApLFxuICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydHMoc3ludGF4X3JlcG9ydC5oaW50ZWRfcmVzdWx0cyksXG4gICAgICBdLFxuICAgICAgfmZvb3Rlcj1cbiAgICAgICAgU29tZShcbiAgICAgICAgICBDZWxsLnJlcG9ydF9mb290ZXJfdmlldyhbXG4gICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXN1bW1hcnlcIl0pLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LXRleHRcIiksXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VfdmlldyhzeW50YXhfcmVwb3J0LnBlcmNlbnRhZ2UpLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0KFxuICAgICAgICAgICAgICAgICAgICAgIFwiIG9mIHRoZSBJbXBsZW1lbnRhdGlvbiBWYWxpZGF0aW9uIHBvaW50cyB3aWxsIGJlIGVhcm5lZFwiLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICApO1xuICB9O1xufTtcblxubW9kdWxlIEltcGxHcmFkaW5nUmVwb3J0ID0ge1xuICBvcGVuIEhhejNsY29yZTtcbiAgaW5jbHVkZSBJbXBsR3JhZGluZ1JlcG9ydDtcbiAgbGV0IHRleHR1YWxfc3VtbWFyeSA9IChyZXBvcnQ6IHQpID0+IHtcbiAgICBzd2l0Y2ggKHJlcG9ydC50ZXN0X3Jlc3VsdHMpIHtcbiAgICB8IE5vbmUgPT4gW05vZGUudGV4dChcIk5vIHRlc3QgcmVzdWx0c1wiKV1cbiAgICB8IFNvbWUodGVzdF9yZXN1bHRzKSA9PiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0KHRlc3Rfc3VtbWFyeV9zdHIodGVzdF9yZXN1bHRzKSk7XG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfTtcbiAgfTtcblxuICAvLyBsZXQgc3VtbWFyeSA9ICh+aW5qZWN0LCB+cmVwb3J0LCB+bWF4X3BvaW50cykgPT4ge1xuICAvLyAgIGxldCBwZXJjZW50YWdlID0gcGVyY2VudGFnZShyZXBvcnQpO1xuICAvLyAgIGxldCBzY29yZSA9IHNjb3JlX29mX3BlcmNlbnQocGVyY2VudGFnZSk7XG4gIC8vICAgbGV0IHRvdGFsID0gdG90YWwocmVwb3J0KTtcbiAgLy8gICBsZXQgbnVtX3Bhc3NlZCA9IG51bV9wYXNzZWQocmVwb3J0KTtcbiAgLy8gICBsZXQgc3RhdHVzX2NsYXNzID0gdG90YWwgPT0gbnVtX3Bhc3NlZCA/IFwiUGFzc1wiIDogXCJGYWlsXCI7XG4gIC8vICAgZGl2KFxuICAvLyAgICAgfmF0dHI9XG4gIC8vICAgICAgIEF0dHIuY2xhc3NlcyhbXG4gIC8vICAgICAgICAgXCJjZWxsLWl0ZW1cIixcbiAgLy8gICAgICAgICBcInRlc3Qtc3VtbWFyeVwiLFxuICAvLyAgICAgICAgIFwiY2VsbC1yZXBvcnRcIixcbiAgLy8gICAgICAgICBzdGF0dXNfY2xhc3MsXG4gIC8vICAgICAgIF0pLFxuICAvLyAgICAgW1xuICAvLyAgICAgICBzdW1tYXJ5X21lc3NhZ2UoXG4gIC8vICAgICAgICAgfnNjb3JlLFxuICAvLyAgICAgICAgIH50b3RhbCxcbiAgLy8gICAgICAgICB+Zm91bmQ9bnVtX3Bhc3NlZCxcbiAgLy8gICAgICAgKSxcbiAgLy8gICAgICAgYmFyKH5pbmplY3QsIHJlcG9ydC5yZXN1bHRzKSxcbiAgLy8gICAgIF0sXG4gIC8vICAgKTtcbiAgLy8gfTtcblxuICBsZXQgaW5kaXZpZHVhbF9yZXBvcnQgPSAoaSwgfmluamVjdCwgfmhpbnQ6IHN0cmluZywgfnN0YXR1cywgKGlkLCBfKSkgPT5cbiAgICBkaXYoXG4gICAgICB+YXR0cj1cbiAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICBBdHRyLmNsYXNzZXMoW1widGVzdC1yZXBvcnRcIl0pLFxuICAgICAgICAgIEF0dHIub25fY2xpY2soVGVzdFZpZXcuanVtcF90b190ZXN0KH5pbmplY3QsIEhpZGRlblRlc3RzLCBpZCkpLFxuICAgICAgICBdKSxcbiAgICAgIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICAgICAgXCJ0ZXN0LWlkXCIsXG4gICAgICAgICAgICAgIFwiVGVzdFwiICsrIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAvKiBOT1RFOiBwcmludHMgbGV4aWNhbCBpbmRleCwgbm90IHVuaXF1ZSBpZCAqL1xuICAgICAgICAgIFt0ZXh0KHN0cmluZ19vZl9pbnQoaSArIDEpKV0sXG4gICAgICAgICksXG4gICAgICAgIC8vIFRlc3RWaWV3LnRlc3RfaW5zdGFuY2Vfdmlldyh+Zm9udF9tZXRyaWNzLCBpbnN0YW5jZSksXG4gICAgICBdXG4gICAgICBAIFtcbiAgICAgICAgZGl2KFxuICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgQXR0ci5jbGFzc2VzKFtcbiAgICAgICAgICAgICAgXCJ0ZXN0LWhpbnRcIixcbiAgICAgICAgICAgICAgXCJ0ZXN0LWluc3RhbmNlXCIsXG4gICAgICAgICAgICAgIFRlc3RTdGF0dXMudG9fc3RyaW5nKHN0YXR1cyksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICBbdGV4dChoaW50KV0sXG4gICAgICAgICksXG4gICAgICBdLFxuICAgICk7XG5cbiAgbGV0IGluZGl2aWR1YWxfcmVwb3J0cyA9ICh+aW5qZWN0LCB+cmVwb3J0KSA9PiB7XG4gICAgc3dpdGNoIChyZXBvcnQudGVzdF9yZXN1bHRzKSB7XG4gICAgfCBTb21lKHRlc3RfcmVzdWx0cylcbiAgICAgICAgd2hlblxuICAgICAgICAgIExpc3QubGVuZ3RoKHRlc3RfcmVzdWx0cy50ZXN0X21hcClcbiAgICAgICAgICA9PSBMaXN0Lmxlbmd0aChyZXBvcnQuaGludGVkX3Jlc3VsdHMpID0+XG4gICAgICAvKiBOT1RFOiBUaGlzIGNvbmRpdGlvbiB3aWxsIGJlIGZhbHNlIHdoZW4gZXZhbHVhdGlvbiBjcmFzaGVzLFxuICAgICAgICogZm9yIGV4YW1wbGUgZHVlIHRvIGEgc3RhY2sgb3ZlcmZsb3csIHdoaWNoIG1heSBvY2N1ciBpbiBub3JtYWwgb3BlcmF0aW9uICAqL1xuICAgICAgZGl2KFxuICAgICAgICByZXBvcnQuaGludGVkX3Jlc3VsdHNcbiAgICAgICAgfD4gTGlzdC5tYXBpKChpLCAoc3RhdHVzLCBoaW50KSkgPT5cbiAgICAgICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydChcbiAgICAgICAgICAgICAgIGksXG4gICAgICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgICAgfmhpbnQsXG4gICAgICAgICAgICAgICB+c3RhdHVzLFxuICAgICAgICAgICAgICAgTGlzdC5udGgodGVzdF9yZXN1bHRzLnRlc3RfbWFwLCBpKSxcbiAgICAgICAgICAgICApXG4gICAgICAgICAgICksXG4gICAgICApXG4gICAgfCBfID0+IGRpdihbXSlcbiAgICB9O1xuICB9O1xuXG4gIGxldCB2aWV3ID1cbiAgICAgICh+aW5qZWN0LCB+cmVwb3J0OiB0LCB+c3ludGF4X3JlcG9ydDogU3ludGF4UmVwb3J0LnQsIH5tYXhfcG9pbnRzOiBpbnQpID0+IHtcbiAgICBDZWxsLnBhbmVsKFxuICAgICAgfmNsYXNzZXM9W1wiY2VsbC1pdGVtXCIsIFwicGFuZWxcIiwgXCJ0ZXN0LXBhbmVsXCJdLFxuICAgICAgW1xuICAgICAgICBDZWxsLmNhcHRpb24oXG4gICAgICAgICAgXCJJbXBsZW1lbnRhdGlvbiBHcmFkaW5nXCIsXG4gICAgICAgICAgfnJlc3Q9XCI6IEhpZGRlbiBUZXN0cyB2cy4gWW91ciBJbXBsZW1lbnRhdGlvblwiLFxuICAgICAgICApLFxuICAgICAgICBpbmRpdmlkdWFsX3JlcG9ydHMofmluamVjdCwgfnJlcG9ydCksXG4gICAgICBdLFxuICAgICAgfmZvb3Rlcj1cbiAgICAgICAgU29tZShcbiAgICAgICAgICBDZWxsLnJlcG9ydF9mb290ZXJfdmlldyhbXG4gICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgIH5hdHRyPUF0dHIuY2xhc3NlcyhbXCJ0ZXN0LXN1bW1hcnlcIl0pLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICAgICAgfmF0dHI9QXR0ci5jbGFzc18oXCJ0ZXN0LXRleHRcIiksXG4gICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIHNjb3JlX3ZpZXcoXG4gICAgICAgICAgICAgICAgICAgICAgc2NvcmVfb2ZfcGVyY2VudChcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2UocmVwb3J0LCBzeW50YXhfcmVwb3J0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heF9wb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIEAgdGV4dHVhbF9zdW1tYXJ5KHJlcG9ydCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBAIE9wdGlvbi50b19saXN0KFxuICAgICAgICAgICAgICAgICAgcmVwb3J0LnRlc3RfcmVzdWx0c1xuICAgICAgICAgICAgICAgICAgfD4gT3B0aW9uLm1hcCh0ZXN0X3Jlc3VsdHMgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgVGVzdFZpZXcudGVzdF9iYXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgfmluamVjdF9qdW1wPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFZpZXcuanVtcF90b190ZXN0KH5pbmplY3QsIEhpZGRlblRlc3RzLCBfLCAoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgfnRlc3RfcmVzdWx0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICApO1xuICB9O1xufTtcblxubW9kdWxlIEdyYWRpbmdSZXBvcnQgPSB7XG4gIGluY2x1ZGUgR3JhZGluZ1JlcG9ydDtcblxuICBsZXQgdmlld19vdmVyYWxsX3Njb3JlID0gKHJlcG9ydDogdCkgPT4ge1xuICAgIHNjb3JlX3ZpZXcob3ZlcmFsbF9zY29yZShyZXBvcnQpKTtcbiAgfTtcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gTm9kZTtcblxudHlwZSBtb2RlbCA9IEV4ZXJjaXNlLnN0aXRjaGVkKENlbGxFZGl0b3IubW9kZWwpO1xuXG50eXBlIHZpc19tYXJrZWQoJ2EpID1cbiAgfCBJbnN0cnVjdG9yT25seSh1bml0ID0+ICdhKVxuICB8IEFsd2F5cygnYSk7XG5cbmxldCByZW5kZXJfY2VsbHMgPSAoc2V0dGluZ3M6IFNldHRpbmdzLnQsIHY6IGxpc3QodmlzX21hcmtlZChOb2RlLnQpKSkgPT4ge1xuICBMaXN0LmZpbHRlcl9tYXAoXG4gICAgdmlzID0+XG4gICAgICBzd2l0Y2ggKHZpcykge1xuICAgICAgfCBJbnN0cnVjdG9yT25seShmKSA9PiBzZXR0aW5ncy5pbnN0cnVjdG9yX21vZGUgPyBTb21lKGYoKSkgOiBOb25lXG4gICAgICB8IEFsd2F5cyhub2RlKSA9PiBTb21lKG5vZGUpXG4gICAgICB9LFxuICAgIHYsXG4gICk7XG59O1xuXG5sZXQgdmlldyA9XG4gICAgKFxuICAgICAgfmdsb2JhbHM6IEdsb2JhbHMudCxcbiAgICAgIH5pbmplY3QsXG4gICAgICB+c2VsZWN0LFxuICAgICAgfnNlbGVjdGlvbjogb3B0aW9uKChFeGVyY2lzZS5wb3MsIEVkaXRvcnMuU2VsZWN0aW9uLmNlbGwpKSxcbiAgICAgIH5leGVyY2lzZSxcbiAgICAgIH5yZXN1bHRzLFxuICAgICAgfmhpZ2hsaWdodHMsXG4gICAgKSA9PiB7XG4gIGxldCBFeGVyY2lzZS57ZWRzfSA9IGV4ZXJjaXNlO1xuICBsZXQgc3RpdGNoZWRfZHluYW1pY3MgPVxuICAgIEV4ZXJjaXNlLnN0aXRjaF9keW5hbWljKFxuICAgICAgZ2xvYmFscy5zZXR0aW5ncy5jb3JlLFxuICAgICAgZXhlcmNpc2UsXG4gICAgICBnbG9iYWxzLnNldHRpbmdzLmNvcmUuZHluYW1pY3MgPyBTb21lKHJlc3VsdHMpIDogTm9uZSxcbiAgICApO1xuICBsZXQge1xuICAgIHRlc3RfdmFsaWRhdGlvbixcbiAgICB1c2VyX2ltcGwsXG4gICAgdXNlcl90ZXN0cyxcbiAgICBwcmVsdWRlLFxuICAgIGluc3RydWN0b3IsXG4gICAgaGlkZGVuX2J1Z3MsXG4gICAgaGlkZGVuX3Rlc3RzOiBfLFxuICB9OlxuICAgIEV4ZXJjaXNlLnN0aXRjaGVkKEV4ZXJjaXNlLkR5bmFtaWNzSXRlbS50KSA9IHN0aXRjaGVkX2R5bmFtaWNzO1xuXG4gIGxldCBncmFkaW5nX3JlcG9ydCA9IEdyYWRpbmcuR3JhZGluZ1JlcG9ydC5tayhlZHMsIH5zdGl0Y2hlZF9keW5hbWljcyk7XG5cbiAgbGV0IHNjb3JlX3ZpZXcgPSBHcmFkaW5nLkdyYWRpbmdSZXBvcnQudmlld19vdmVyYWxsX3Njb3JlKGdyYWRpbmdfcmVwb3J0KTtcblxuICBsZXQgZWRpdG9yX3ZpZXcgPVxuICAgICAgKFxuICAgICAgICB+ZWRpdG9yOiBFZGl0b3IudCxcbiAgICAgICAgfmNhcHRpb246IHN0cmluZyxcbiAgICAgICAgfnN1YmNhcHRpb246IG9wdGlvbihzdHJpbmcpPT8sXG4gICAgICAgIH5kaTogRXhlcmNpc2UuRHluYW1pY3NJdGVtLnQsXG4gICAgICAgIH5yZXN1bHRfa2luZD1DZWxsUmVzdWx0LlZpZXcuTm9SZXN1bHRzLFxuICAgICAgICB0aGlzX3BvczogRXhlcmNpc2UucG9zLFxuICAgICAgKSA9PiB7XG4gICAgQ2VsbEVkaXRvci52aWV3KFxuICAgICAgfmdsb2JhbHMsXG4gICAgICB+c2VsZWN0PXMgPT4gc2VsZWN0KCh0aGlzX3BvcywgcykpLFxuICAgICAgfnNlbGVjdGVkPVxuICAgICAgICBzd2l0Y2ggKHNlbGVjdGlvbikge1xuICAgICAgICB8IFNvbWUoKHBvcywgcykpIHdoZW4gcG9zID09IHRoaXNfcG9zID0+IFNvbWUocylcbiAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgfSxcbiAgICAgIH5pbmplY3Q9XG4gICAgICAgIGZ1blxuICAgICAgICB8IFJlc3VsdEFjdGlvbihTdGVwcGVyRWRpdG9yQWN0aW9uKF8sIGEpKVxuICAgICAgICB8IE1haW5FZGl0b3IoYSkgPT4gaW5qZWN0KFVwZGF0ZUFjdGlvbi5QZXJmb3JtQWN0aW9uKGEpKVxuICAgICAgICB8IFJlc3VsdEFjdGlvbihTdGVwcGVyQWN0aW9uKGEpKSA9PlxuICAgICAgICAgIGluamVjdChcbiAgICAgICAgICAgIFVwZGF0ZUFjdGlvbi5TdGVwcGVyQWN0aW9uKFxuICAgICAgICAgICAgICBFeGVyY2lzZS5rZXlfZm9yX3N0YXRpY3ModGhpc19wb3MpLFxuICAgICAgICAgICAgICBhLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgIHwgUmVzdWx0QWN0aW9uKFRvZ2dsZVN0ZXBwZXIpID0+XG4gICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgVXBkYXRlQWN0aW9uLlRvZ2dsZVN0ZXBwZXIoRXhlcmNpc2Uua2V5X2Zvcl9zdGF0aWNzKHRoaXNfcG9zKSksXG4gICAgICAgICAgKSxcbiAgICAgIH5oaWdobGlnaHRzLFxuICAgICAgfnJlc3VsdF9raW5kLFxuICAgICAgfmNhcHRpb249Q2VsbC5jYXB0aW9uKGNhcHRpb24sIH5yZXN0PT9zdWJjYXB0aW9uKSxcbiAgICAgIHtcbiAgICAgICAgZWRpdG9yOiB7XG4gICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgIHN0YXRpY3M6IHtcbiAgICAgICAgICAgIHRlcm06IGRpLnRlcm0sXG4gICAgICAgICAgICBpbmZvX21hcDogZGkuaW5mb19tYXAsXG4gICAgICAgICAgICBlcnJvcl9pZHM6XG4gICAgICAgICAgICAgIFN0YXRpY3MuTWFwLmVycm9yX2lkcyhcbiAgICAgICAgICAgICAgICBlZGl0b3Iuc3RhdGUubWV0YS50ZXJtX3JhbmdlcyxcbiAgICAgICAgICAgICAgICBkaS5pbmZvX21hcCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByZXN1bHQ6IGRpLnJlc3VsdCxcbiAgICAgIH0sXG4gICAgKTtcbiAgfTtcblxuICBsZXQgdGl0bGVfdmlldyA9IENlbGwudGl0bGVfY2VsbChlZHMudGl0bGUpO1xuXG4gIGxldCBwcm9tcHRfdmlldyA9XG4gICAgQ2VsbC5uYXJyYXRpdmVfY2VsbChcbiAgICAgIGRpdih+YXR0cj1BdHRyLmNsYXNzXyhcImNlbGwtcHJvbXB0XCIpLCBbZWRzLnByb21wdF0pLFxuICAgICk7XG5cbiAgbGV0IHByZWx1ZGVfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgIFByZWx1ZGUsXG4gICAgICAgIH5jYXB0aW9uPVwiUHJlbHVkZVwiLFxuICAgICAgICB+c3ViY2FwdGlvbj1nbG9iYWxzLnNldHRpbmdzLmluc3RydWN0b3JfbW9kZSA/IFwiXCIgOiBcIiAoUmVhZC1Pbmx5KVwiLFxuICAgICAgICB+ZWRpdG9yPWVkcy5wcmVsdWRlLFxuICAgICAgICB+ZGk9cHJlbHVkZSxcbiAgICAgICksXG4gICAgKTtcblxuICBsZXQgY29ycmVjdF9pbXBsX3ZpZXcgPVxuICAgIEluc3RydWN0b3JPbmx5KFxuICAgICAgKCkgPT5cbiAgICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgICAgQ29ycmVjdEltcGwsXG4gICAgICAgICAgfmNhcHRpb249XCJDb3JyZWN0IEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgICAgfmVkaXRvcj1lZHMuY29ycmVjdF9pbXBsLFxuICAgICAgICAgIH5kaT1pbnN0cnVjdG9yLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgLy8gZGV0ZXJtaW5lIHRyYWlsaW5nIGhvbGVcbiAgLy8gVE9ETzogbW9kdWxlXG4gIGxldCBjb3JyZWN0X2ltcGxfY3R4X3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIHtcbiAgICAgICAgbGV0IGV4cF9jdHhfdmlldyA9IHtcbiAgICAgICAgICBsZXQgY29ycmVjdF9pbXBsX3RyYWlsaW5nX2hvbGVfY3R4ID1cbiAgICAgICAgICAgIEhhejNsY29yZS5FZGl0b3IudHJhaWxpbmdfaG9sZV9jdHgoXG4gICAgICAgICAgICAgIGVkcy5jb3JyZWN0X2ltcGwsXG4gICAgICAgICAgICAgIGluc3RydWN0b3IuaW5mb19tYXAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGxldCBwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4ID1cbiAgICAgICAgICAgIEhhejNsY29yZS5FZGl0b3IudHJhaWxpbmdfaG9sZV9jdHgoZWRzLnByZWx1ZGUsIHByZWx1ZGUuaW5mb19tYXApO1xuICAgICAgICAgIHN3aXRjaCAoY29ycmVjdF9pbXBsX3RyYWlsaW5nX2hvbGVfY3R4LCBwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4KSB7XG4gICAgICAgICAgfCAoTm9uZSwgXykgPT4gTm9kZS5kaXYoW3RleHQoXCJObyBjb250ZXh0IGF2YWlsYWJsZSAoMSlcIildKVxuICAgICAgICAgIHwgKF8sIE5vbmUpID0+IE5vZGUuZGl2KFt0ZXh0KFwiTm8gY29udGV4dCBhdmFpbGFibGUgKDIpXCIpXSkgLy8gVE9ETyBzaG93IGV4ZXJjaXNlIGNvbmZpZ3VyYXRpb24gZXJyb3JcbiAgICAgICAgICB8IChcbiAgICAgICAgICAgICAgU29tZShjb3JyZWN0X2ltcGxfdHJhaWxpbmdfaG9sZV9jdHgpLFxuICAgICAgICAgICAgICBTb21lKHByZWx1ZGVfdHJhaWxpbmdfaG9sZV9jdHgpLFxuICAgICAgICAgICAgKSA9PlxuICAgICAgICAgICAgbGV0IHNwZWNpZmljX2N0eCA9XG4gICAgICAgICAgICAgIEhhejNsY29yZS5DdHguc3VidHJhY3RfcHJlZml4KFxuICAgICAgICAgICAgICAgIGNvcnJlY3RfaW1wbF90cmFpbGluZ19ob2xlX2N0eCxcbiAgICAgICAgICAgICAgICBwcmVsdWRlX3RyYWlsaW5nX2hvbGVfY3R4LFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgc3dpdGNoIChzcGVjaWZpY19jdHgpIHtcbiAgICAgICAgICAgIHwgTm9uZSA9PiBOb2RlLmRpdihbdGV4dChcIk5vIGNvbnRleHQgYXZhaWxhYmxlXCIpXSkgLy8gVE9ETyBzaG93IGV4ZXJjaXNlIGNvbmZpZ3VyYXRpb24gZXJyb3JcbiAgICAgICAgICAgIHwgU29tZShzcGVjaWZpY19jdHgpID0+XG4gICAgICAgICAgICAgIEN0eEluc3BlY3Rvci5jdHhfdmlldyhcbiAgICAgICAgICAgICAgICB+aW5qZWN0PWdsb2JhbHMuaW5qZWN0X2dsb2JhbCxcbiAgICAgICAgICAgICAgICBzcGVjaWZpY19jdHgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfTtcbiAgICAgICAgfTtcbiAgICAgICAgQ2VsbC5zaW1wbGVfY2VsbF92aWV3KFtcbiAgICAgICAgICBDZWxsLnNpbXBsZV9jZWxsX2l0ZW0oW1xuICAgICAgICAgICAgQ2VsbC5jYXB0aW9uKFxuICAgICAgICAgICAgICBcIkNvcnJlY3QgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgICAgICAgfnJlc3Q9XCIgKFR5cGUgU2lnbmF0dXJlcyBPbmx5KVwiLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGV4cF9jdHhfdmlldyxcbiAgICAgICAgICBdKSxcbiAgICAgICAgXSk7XG4gICAgICB9LFxuICAgICk7XG5cbiAgbGV0IHlvdXJfdGVzdHNfdmlldyA9XG4gICAgQWx3YXlzKFxuICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgIFlvdXJUZXN0c1ZhbGlkYXRpb24sXG4gICAgICAgIH5jYXB0aW9uPVwiVGVzdCBWYWxpZGF0aW9uXCIsXG4gICAgICAgIH5zdWJjYXB0aW9uPVwiOiBZb3VyIFRlc3RzIHZzLiBDb3JyZWN0IEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgIH5lZGl0b3I9ZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICAgIH5kaT10ZXN0X3ZhbGlkYXRpb24sXG4gICAgICAgIH5yZXN1bHRfa2luZD1UZXN0UmVzdWx0cyxcbiAgICAgICksXG4gICAgKTtcblxuICBsZXQgd3JvbmdfaW1wbF92aWV3cyA9XG4gICAgTGlzdC5tYXBpKFxuICAgICAgKGksIChFeGVyY2lzZS57aW1wbCwgX30sIGRpKSkgPT4ge1xuICAgICAgICBJbnN0cnVjdG9yT25seShcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgICAgICAgIEhpZGRlbkJ1Z3MoaSksXG4gICAgICAgICAgICAgIH5jYXB0aW9uPVwiV3JvbmcgSW1wbGVtZW50YXRpb24gXCIgKysgc3RyaW5nX29mX2ludChpICsgMSksXG4gICAgICAgICAgICAgIH5lZGl0b3I9aW1wbCxcbiAgICAgICAgICAgICAgfmRpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgIExpc3QuY29tYmluZShlZHMuaGlkZGVuX2J1Z3MsIGhpZGRlbl9idWdzKSxcbiAgICApO1xuXG4gIGxldCBtdXRhdGlvbl90ZXN0aW5nX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIEdyYWRpbmcuTXV0YXRpb25UZXN0aW5nUmVwb3J0LnZpZXcoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIGdyYWRpbmdfcmVwb3J0Lm11dGF0aW9uX3Rlc3RpbmdfcmVwb3J0LFxuICAgICAgICBncmFkaW5nX3JlcG9ydC5wb2ludF9kaXN0cmlidXRpb24ubXV0YXRpb25fdGVzdGluZyxcbiAgICAgICksXG4gICAgKTtcblxuICBsZXQgeW91cl9pbXBsX3ZpZXcgPSB7XG4gICAgQWx3YXlzKFxuICAgICAgZWRpdG9yX3ZpZXcoXG4gICAgICAgIFlvdXJJbXBsLFxuICAgICAgICB+Y2FwdGlvbj1cIllvdXIgSW1wbGVtZW50YXRpb25cIixcbiAgICAgICAgfmVkaXRvcj1lZHMueW91cl9pbXBsLFxuICAgICAgICB+ZGk9dXNlcl9pbXBsLFxuICAgICAgICB+cmVzdWx0X2tpbmQ9RXZhbFJlc3VsdHMsXG4gICAgICApLFxuICAgICk7XG4gIH07XG5cbiAgbGV0IHN5bnRheF9ncmFkaW5nX3ZpZXcgPVxuICAgIEFsd2F5cyhHcmFkaW5nLlN5bnRheFJlcG9ydC52aWV3KGdyYWRpbmdfcmVwb3J0LnN5bnRheF9yZXBvcnQpKTtcblxuICBsZXQgaW1wbF92YWxpZGF0aW9uX3ZpZXcgPVxuICAgIEFsd2F5cyhcbiAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICBZb3VyVGVzdHNUZXN0aW5nLFxuICAgICAgICB+Y2FwdGlvbj1cIkltcGxlbWVudGF0aW9uIFZhbGlkYXRpb25cIixcbiAgICAgICAgfnN1YmNhcHRpb249XG4gICAgICAgICAgXCI6IFlvdXIgVGVzdHMgKGNvZGUgc3luY2hyb25pemVkIHdpdGggVGVzdCBWYWxpZGF0aW9uIGNlbGwgYWJvdmUpIHZzLiBZb3VyIEltcGxlbWVudGF0aW9uXCIsXG4gICAgICAgIH5lZGl0b3I9ZWRzLnlvdXJfdGVzdHMudGVzdHMsXG4gICAgICAgIH5kaT11c2VyX3Rlc3RzLFxuICAgICAgICB+cmVzdWx0X2tpbmQ9VGVzdFJlc3VsdHMsXG4gICAgICApLFxuICAgICk7XG5cbiAgbGV0IGhpZGRlbl90ZXN0c192aWV3ID1cbiAgICBJbnN0cnVjdG9yT25seShcbiAgICAgICgpID0+XG4gICAgICAgIGVkaXRvcl92aWV3KFxuICAgICAgICAgIEhpZGRlblRlc3RzLFxuICAgICAgICAgIH5jYXB0aW9uPVwiSGlkZGVuIFRlc3RzXCIsXG4gICAgICAgICAgfmVkaXRvcj1lZHMuaGlkZGVuX3Rlc3RzLnRlc3RzLFxuICAgICAgICAgIH5kaT1pbnN0cnVjdG9yLFxuICAgICAgICApLFxuICAgICk7XG5cbiAgbGV0IGltcGxfZ3JhZGluZ192aWV3ID1cbiAgICBBbHdheXMoXG4gICAgICBHcmFkaW5nLkltcGxHcmFkaW5nUmVwb3J0LnZpZXcoXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5yZXBvcnQ9Z3JhZGluZ19yZXBvcnQuaW1wbF9ncmFkaW5nX3JlcG9ydCxcbiAgICAgICAgfnN5bnRheF9yZXBvcnQ9Z3JhZGluZ19yZXBvcnQuc3ludGF4X3JlcG9ydCxcbiAgICAgICAgfm1heF9wb2ludHM9Z3JhZGluZ19yZXBvcnQucG9pbnRfZGlzdHJpYnV0aW9uLmltcGxfZ3JhZGluZyxcbiAgICAgICksXG4gICAgKTtcblxuICBbc2NvcmVfdmlldywgdGl0bGVfdmlldywgcHJvbXB0X3ZpZXddXG4gIEAgcmVuZGVyX2NlbGxzKFxuICAgICAgZ2xvYmFscy5zZXR0aW5ncyxcbiAgICAgIFtcbiAgICAgICAgcHJlbHVkZV92aWV3LFxuICAgICAgICBjb3JyZWN0X2ltcGxfdmlldyxcbiAgICAgICAgY29ycmVjdF9pbXBsX2N0eF92aWV3LFxuICAgICAgICB5b3VyX3Rlc3RzX3ZpZXcsXG4gICAgICBdXG4gICAgICBAIHdyb25nX2ltcGxfdmlld3NcbiAgICAgIEAgW1xuICAgICAgICBtdXRhdGlvbl90ZXN0aW5nX3ZpZXcsXG4gICAgICAgIHlvdXJfaW1wbF92aWV3LFxuICAgICAgICBzeW50YXhfZ3JhZGluZ192aWV3LFxuICAgICAgICBpbXBsX3ZhbGlkYXRpb25fdmlldyxcbiAgICAgICAgaGlkZGVuX3Rlc3RzX3ZpZXcsXG4gICAgICAgIGltcGxfZ3JhZGluZ192aWV3LFxuICAgICAgXSxcbiAgICApO1xufTtcblxubGV0IHJlc2V0X2J1dHRvbiA9IGluamVjdCA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy50cmFzaCxcbiAgICBfID0+IHtcbiAgICAgIGxldCBjb25maXJtZWQgPVxuICAgICAgICBKc1V0aWwuY29uZmlybShcbiAgICAgICAgICBcIkFyZSB5b3UgU1VSRSB5b3Ugd2FudCB0byByZXNldCB0aGlzIGV4ZXJjaXNlPyBZb3Ugd2lsbCBsb3NlIGFueSBleGlzdGluZyBjb2RlIHRoYXQgeW91IGhhdmUgd3JpdHRlbiwgYW5kIGNvdXJzZSBzdGFmZiBoYXZlIG5vIHdheSB0byByZXN0b3JlIGl0IVwiLFxuICAgICAgICApO1xuICAgICAgaWYgKGNvbmZpcm1lZCkge1xuICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlJlc2V0Q3VycmVudEVkaXRvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgICB9O1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJSZXNldCBFeGVyY2lzZVwiLFxuICApO1xuXG5sZXQgaW5zdHJ1Y3Rvcl9leHBvcnQgPSAoZXhlcmNpc2U6IEV4ZXJjaXNlLnN0YXRlKSA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy5zdGFyLFxuICAgIF8gPT4ge1xuICAgICAgLy8gLm1sIGZpbGVzIGJlY2F1c2Ugc2hvdyB1c2VzIE9DYW1sIHN5bnRheCAoZHVuZSBoYW5kbGVzIHNlYW1sZXNzbHkpXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBleGVyY2lzZS5lZHMubW9kdWxlX25hbWU7XG4gICAgICBsZXQgZmlsZW5hbWUgPSBleGVyY2lzZS5lZHMubW9kdWxlX25hbWUgKysgXCIubWxcIjtcbiAgICAgIGxldCBjb250ZW50X3R5cGUgPSBcInRleHQvcGxhaW5cIjtcbiAgICAgIGxldCBjb250ZW50cyA9IEV4ZXJjaXNlLmV4cG9ydF9tb2R1bGUobW9kdWxlX25hbWUsIGV4ZXJjaXNlKTtcbiAgICAgIEpzVXRpbC5kb3dubG9hZF9zdHJpbmdfZmlsZSh+ZmlsZW5hbWUsIH5jb250ZW50X3R5cGUsIH5jb250ZW50cyk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBFeGVyY2lzZSBNb2R1bGVcIixcbiAgKTtcblxubGV0IGluc3RydWN0b3JfdHJhbnNpdGlvbmFyeV9leHBvcnQgPSAoZXhlcmNpc2U6IEV4ZXJjaXNlLnN0YXRlKSA9PlxuICBXaWRnZXRzLmJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy5zdGFyLFxuICAgIF8gPT4ge1xuICAgICAgLy8gLm1sIGZpbGVzIGJlY2F1c2Ugc2hvdyB1c2VzIE9DYW1sIHN5bnRheCAoZHVuZSBoYW5kbGVzIHNlYW1sZXNzbHkpXG4gICAgICBsZXQgbW9kdWxlX25hbWUgPSBleGVyY2lzZS5lZHMubW9kdWxlX25hbWU7XG4gICAgICBsZXQgZmlsZW5hbWUgPSBleGVyY2lzZS5lZHMubW9kdWxlX25hbWUgKysgXCIubWxcIjtcbiAgICAgIGxldCBjb250ZW50X3R5cGUgPSBcInRleHQvcGxhaW5cIjtcbiAgICAgIGxldCBjb250ZW50cyA9XG4gICAgICAgIEV4ZXJjaXNlLmV4cG9ydF90cmFuc2l0aW9uYXJ5X21vZHVsZShtb2R1bGVfbmFtZSwgZXhlcmNpc2UpO1xuICAgICAgSnNVdGlsLmRvd25sb2FkX3N0cmluZ19maWxlKH5maWxlbmFtZSwgfmNvbnRlbnRfdHlwZSwgfmNvbnRlbnRzKTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiRXhwb3J0IFRyYW5zaXRpb25hcnkgRXhlcmNpc2UgTW9kdWxlXCIsXG4gICk7XG5cbmxldCBpbnN0cnVjdG9yX2dyYWRpbmdfZXhwb3J0ID0gKGV4ZXJjaXNlOiBFeGVyY2lzZS5zdGF0ZSkgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3RhcixcbiAgICBfID0+IHtcbiAgICAgIC8vIC5tbCBmaWxlcyBiZWNhdXNlIHNob3cgdXNlcyBPQ2FtbCBzeW50YXggKGR1bmUgaGFuZGxlcyBzZWFtbGVzc2x5KVxuICAgICAgbGV0IG1vZHVsZV9uYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lO1xuICAgICAgbGV0IGZpbGVuYW1lID0gZXhlcmNpc2UuZWRzLm1vZHVsZV9uYW1lICsrIFwiX2dyYWRpbmcubWxcIjtcbiAgICAgIGxldCBjb250ZW50X3R5cGUgPSBcInRleHQvcGxhaW5cIjtcbiAgICAgIGxldCBjb250ZW50cyA9IEV4ZXJjaXNlLmV4cG9ydF9ncmFkaW5nX21vZHVsZShtb2R1bGVfbmFtZSwgZXhlcmNpc2UpO1xuICAgICAgSnNVdGlsLmRvd25sb2FkX3N0cmluZ19maWxlKH5maWxlbmFtZSwgfmNvbnRlbnRfdHlwZSwgfmNvbnRlbnRzKTtcbiAgICAgIFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZTtcbiAgICB9LFxuICAgIH50b29sdGlwPVwiRXhwb3J0IEdyYWRpbmcgRXhlcmNpc2UgTW9kdWxlXCIsXG4gICk7XG5cbmxldCBkb3dubG9hZF9lZGl0b3Jfc3RhdGUgPSAofmluc3RydWN0b3JfbW9kZSkgPT5cbiAgTG9nLmdldF9hbmQobG9nID0+IHtcbiAgICBsZXQgZGF0YSA9IEV4cG9ydC5leHBvcnRfYWxsKH5pbnN0cnVjdG9yX21vZGUsIH5sb2cpO1xuICAgIEpzVXRpbC5kb3dubG9hZF9qc29uKEV4ZXJjaXNlU2V0dGluZ3MuZmlsZW5hbWUsIGRhdGEpO1xuICB9KTtcblxubGV0IGV4cG9ydF9zdWJtaXNzaW9uID0gKH5zZXR0aW5nczogU2V0dGluZ3MudCkgPT5cbiAgV2lkZ2V0cy5idXR0b25fbmFtZWQoXG4gICAgSWNvbnMuc3RhcixcbiAgICBfID0+IHtcbiAgICAgIGRvd25sb2FkX2VkaXRvcl9zdGF0ZSh+aW5zdHJ1Y3Rvcl9tb2RlPXNldHRpbmdzLmluc3RydWN0b3JfbW9kZSk7XG4gICAgICBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC5JZ25vcmU7XG4gICAgfSxcbiAgICB+dG9vbHRpcD1cIkV4cG9ydCBTdWJtaXNzaW9uXCIsXG4gICk7XG5cbmxldCBpbXBvcnRfc3VibWlzc2lvbiA9ICh+aW5qZWN0KSA9PlxuICBXaWRnZXRzLmZpbGVfc2VsZWN0X2J1dHRvbl9uYW1lZChcbiAgICBcImltcG9ydC1zdWJtaXNzaW9uXCIsXG4gICAgSWNvbnMuc3RhcixcbiAgICBmaWxlID0+IHtcbiAgICAgIHN3aXRjaCAoZmlsZSkge1xuICAgICAgfCBOb25lID0+IFZpcnR1YWxfZG9tLlZkb20uRWZmZWN0Lklnbm9yZVxuICAgICAgfCBTb21lKGZpbGUpID0+IGluamVjdChVcGRhdGVBY3Rpb24uSW5pdEltcG9ydEFsbChmaWxlKSlcbiAgICAgIH1cbiAgICB9LFxuICAgIH50b29sdGlwPVwiSW1wb3J0IFN1Ym1pc3Npb25cIixcbiAgKTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBmaWx0ZXJfcGF1c2UgPSAofnBfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogU2ltcGxlLnQgPT4ge1xuICBncm91cF9pZDogRmlsdGVyUGF1c2UsXG4gIGZvcm1faWQ6IEZpbHRlclBhdXNlLFxuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJwXCIsIHBfaWQpLCAoXCJlX2JvZHlcIiwgYm9keV9pZCksIChwJywgZV9ib2R5JykgPT5cbiAgICAgIFtta19wYXVzZShbW3NwYWNlKCksIHAnLCBzcGFjZSgpXV0pLCBsaW5lYnJlYWsoKSwgZV9ib2R5J11cbiAgICApLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiUGF1c2UgZmlsdGVyIGZvciBzdGVwcGVyLiBUaGUgZXZhbHVhdGlvbiBvZiBhbGwgc3ViZXhwcmVzc2lvbnMgd2l0aGluIFsqYm9keSpdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgd2lsbCBiZSBwYXVzZWQgZHVyaW5nIGV2YWx1YXRpb25cIixcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgcF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgKSxcbiAgZXhhbXBsZXM6IFtcbiAgICB7XG4gICAgICBzdWJfaWQ6IEZpbHRlclN0ZXAsXG4gICAgICB0ZXJtOiBta19leGFtcGxlKFwiZXZhbCAkZSArICRlIGluXFxuKDEgKyAyKSAqICgzICsgNClcIiksXG4gICAgICBtZXNzYWdlOiBcIlRoZSBleHByZXNzaW9uICgxICogMikgKyAoMyAqIDQpIGlzIGd1YXJkZWQgYnkgYSBwYXVzZSBmaWx0ZXIgZXhwcmVzc2lvbiBwYXVzZSAkdiArICR2LCB3aGljaCBpbnN0cnVjdCB0aGUgZXZhbHVhdG9yIHRvIHBhdXNlIHRoZSBldmFsdWF0aW9uIHdoZW4gaXQgc2VlcyBhIHZhbHVlIGlzIGFkZGVkIHRvIGFub3RoZXIgdmFsdWUuIEFmdGVyIGV2YWx1YXRpbmcgc3VidGVybXMgKDEgKiAyKSBhbmQgKDMgKiA0KSwgdGhlIGV4cHJlc3Npb24gdHVybnMgaW50byAyICsgMTIuIDIgbWF0Y2hlcyB0aGUgZmlyc3QgJHYgcGF0dGVybiwgYW5kIDEyIG1hdGNoZXMgdGhlIHNlY29uZCAkdiBwYXR0ZXJuLiBUaGVyZWZvcmUsIHRoZSBldmFsdWF0b3Igc3RvcHMgd2hlbiB0aGUgZXhwcmVzc2lvbiBzdGVwcyB0byAyICsgMTJcIixcbiAgICB9LFxuICBdLFxufTtcblxubGV0IGZpbHRlcl9ldmFsID0gKH5wX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgZ3JvdXBfaWQ6IEZpbHRlckV2YWwsXG4gIGZvcm1faWQ6IEZpbHRlckV2YWwsXG4gIGFic3RyYWN0OlxuICAgIFNpbXBsZS5ta18yKChcInBcIiwgcF9pZCksIChcImVfYm9keVwiLCBib2R5X2lkKSwgKHAnLCBlX2JvZHknKSA9PlxuICAgICAgW21rX2V2YWwoW1tzcGFjZSgpLCBwJywgc3BhY2UoKV1dKSwgbGluZWJyZWFrKCksIGVfYm9keSddXG4gICAgKSxcbiAgZXhwbGFuYXRpb246XG4gICAgUHJpbnRmLnNwcmludGYoXG4gICAgICBcIkZ1bGwgZXZhbHVhdGlvbiBmaWx0ZXIgZm9yIHN0ZXBwZXIuIEFsbCBzdWJleHByZXNzaW9ucyB3aXRoaW4gWypib2R5Kl0oJXMpIHRoYXQgbWF0Y2ggdGhlIFsqcGF0dGVybipdKCVzKSB3aWxsIGdldCBldmFsdWF0ZWQgaW4gb25lIGdvXCIsXG4gICAgICBib2R5X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIHBfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaWx0ZXJFdmFsLFxuICAgICAgdGVybTpcbiAgICAgICAgbWtfZXhhbXBsZShcbiAgICAgICAgICBcInBhdXNlICRlIGluXFxuaGlkZSBsZXQgPSBpbiBpblxcbmxldCB4ID0gMSBpblxcbmxldCB5ID0gMiBpblxcbnggKyB5XCIsXG4gICAgICAgICksXG4gICAgICBtZXNzYWdlOiBcInBhdXNlICRlIGluIGluc3RydWN0IHRoZSBldmFsdWF0b3IgdG8gYWN0IGxpa2UgYSBzaW5nbGUtc3RlcHBlciwgZS5nLiBzdG9wIGF0IGV2ZXJ5IHN0ZXAuIFRoZSBoaWRlIGZpbHRlciBleHByZXNzaW9uIGluc3RydWN0cyB0aGUgZXZhbHVhdG9yIHRvIHNraXAgb3ZlciBhbGwgZXZhbHVhdG9yIHN0ZXBzIHRoYXQgZGVzdHJ1Y3RzIHBlcmZvcm0gc3Vic3RpdHV0aW9uIG9uIGEgbGV0LWV4cHJlc3Npb24uIEhlcmUsIHRoZSBzdWJzdGl0dXRpb24gb2YgdmFyaWFibGUgeCBhbmQgeSBpcyBza2lwcGVkIG92ZXIgYW5kIHdlIGRpcmVjdGx5IGdvdCAxICsgMiBpbiB0aGUgcmVzdWx0IGFyZWEuXCIsXG4gICAgfSxcbiAgXSxcbn07XG5cbmxldCBmaWx0ZXJfaGlkZSA9ICh+cF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJIaWRlLFxuICBmb3JtX2lkOiBGaWx0ZXJIaWRlLFxuICBhYnN0cmFjdDpcbiAgICBTaW1wbGUubWtfMigoXCJwXCIsIHBfaWQpLCAoXCJlX2JvZHlcIiwgYm9keV9pZCksIChwJywgZV9ib2R5JykgPT5cbiAgICAgIFtta19oaWRlKFtbc3BhY2UoKSwgcCcsIHNwYWNlKCldXSksIGxpbmVicmVhaygpLCBlX2JvZHknXVxuICAgICksXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJTdGVwIGhpZGluZyBmaWx0ZXIgZm9yIHN0ZXBwZXIuIFRoZSBlbGltaW5hdGlvbiBvZiBhbGwgbGFuZ3VhZ2UgY29uc3RydWN0cyAobGlrZSBiaW5hcnkgb3BlcmF0b3IgKyBvciBsZXQgLi4gPSAuLiBpbikgd2l0aGluIFsqYm9keSpdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgd2lsbCBnZXQgc2tpcHBlZC5cIixcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgcF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgKSxcbiAgZXhhbXBsZXM6IFtcbiAgICB7XG4gICAgICBzdWJfaWQ6IEZpbHRlckhpZGUsXG4gICAgICB0ZXJtOlxuICAgICAgICBta19leGFtcGxlKFxuICAgICAgICAgIFwicGF1c2UgJGUgaW5cXG5oaWRlIGxldCA9IGluIGluXFxubGV0IHggPSAxIGluXFxubGV0IHkgPSAyIGluXFxueCArIHlcIixcbiAgICAgICAgKSxcbiAgICAgIG1lc3NhZ2U6IFwicGF1c2UgJGUgaW4gaW5zdHJ1Y3QgdGhlIGV2YWx1YXRvciB0byBhY3QgbGlrZSBhIHNpbmdsZS1zdGVwcGVyLCBlLmcuIHN0b3AgYXQgZXZlcnkgc3RlcC4gVGhlIGhpZGUgZmlsdGVyIGV4cHJlc3Npb24gaW5zdHJ1Y3RzIHRoZSBldmFsdWF0b3IgdG8gc2tpcCBvdmVyIGFsbCBldmFsdWF0b3Igc3RlcHMgdGhhdCBkZXN0cnVjdHMgcGVyZm9ybSBzdWJzdGl0dXRpb24gb24gYSBsZXQtZXhwcmVzc2lvbi4gSGVyZSwgdGhlIHN1YnN0aXR1dGlvbiBvZiB2YXJpYWJsZSB4IGFuZCB5IGlzIHNraXBwZWQgb3ZlciBhbmQgd2UgZGlyZWN0bHkgZ290IDEgKyAyIGluIHRoZSByZXN1bHQgYXJlYS5cIixcbiAgICB9LFxuICBdLFxufTtcblxubGV0IGZpbHRlcl9kZWJ1ZyA9ICh+cF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIGdyb3VwX2lkOiBGaWx0ZXJEZWJ1ZyxcbiAgZm9ybV9pZDogRmlsdGVyRGVidWcsXG4gIGFic3RyYWN0OlxuICAgIFNpbXBsZS5ta18yKChcInBcIiwgcF9pZCksIChcImVfYm9keVwiLCBib2R5X2lkKSwgKHAnLCBlX2JvZHknKSA9PlxuICAgICAgW21rX2RlYnVnKFtbc3BhY2UoKSwgcCcsIHNwYWNlKCldXSksIGxpbmVicmVhaygpLCBlX2JvZHknXVxuICAgICksXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJEZWJ1ZyBmaWx0ZXIgZm9yIHN0ZXBwZXIuIEFsbCBtYXRjaGVkIHN1Yi1leHByZXNzaW9uIHdpdGhpbiBbKmJvZHkqXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIHdpbGwgYmUgc3RlcHBlZCB0aHJvdWdoLlwiLFxuICAgICAgYm9keV9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBwX2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICApLFxuICBleGFtcGxlczogW1xuICAgIHtcbiAgICAgIHN1Yl9pZDogRmlsdGVyRGVidWcsXG4gICAgICB0ZXJtOiBta19leGFtcGxlKFwiZXZhbCAkZSBpblxcbmRlYnVnICR2ICsgJHYgKyAkdiBpblxcbjEgKyAyICsgM1wiKSxcbiAgICAgIG1lc3NhZ2U6IFwiVGhlIGRlYnVnIGZpbHRlciBwYXR0ZXJuICR2ICsgJHYgKyAkdiBtYXRjaGVzIDEgKyAyICsgMywgdGhlcmVmb3JlLCB0aGUgZXZhbHVhdG9yIHdpbGwgc3RlcCBpbnRvIHRoZSBldmFsdWF0aW9uIG9mIHRoZSBtYXRjaGVkIHN1Yi1leHByZXNzaW9uIDEgKyAyICsgMy5cIixcbiAgICB9LFxuICBdLFxufTtcblxubGV0IHVucXVvdGUgPSAofnNlbF9pZDogSWQudCk6IFNpbXBsZS50ID0+IHtcbiAgZ3JvdXBfaWQ6IEZpbHRlclNlbGVjdG9yLFxuICBmb3JtX2lkOiBGaWx0ZXJTZWxlY3RvcixcbiAgYWJzdHJhY3Q6IFNpbXBsZS5ta18xKChcInNlbFwiLCBzZWxfaWQpLCBzZWwnID0+IFtta191bnF1b3RlKFtdKSwgc2VsJ10pLFxuICBleHBsYW5hdGlvbjpcbiAgICBQcmludGYuc3ByaW50ZihcbiAgICAgIFwiU2VsZWN0b3IgZXhwcmVzc2lvbiBmb3IgYSBzdGVwcGVyIGZpbHRlciBwYXR0ZXJuLiBXaGVuIFsqc2VsKl0oJXMpIGlzICdlJywgaXQgbWF0Y2hlcyBhbnkgZXhwcmVzc2lvbiwgd2hlbiBbKnNlbCpdKCVzKSBpcyAndicgaXQgb25seSBtYXRjaGVzIHZhbHVlcy5cIixcbiAgICAgIHNlbF9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBzZWxfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIGV4YW1wbGVzOiBbXSxcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG4vKiAoQSkgVXNlIHRoaXMgZmlsZSBhcyBhbiBleGFtcGxlIGZvciBhZGRpbmcgYSBuZXcgZm9ybSB0byBFeHBsYWluVGhpcy5cbiAqIFlvdSBzaG91bGQgYmUgYWJsZSB0byBjb3B5LXBhc3RlIHRoaXMgZmlsZSBhbmQgbW9kaWZ5IGl0IHRvIGFkZCBhIG5ldyBmb3JtICovXG5cbmxldCBzaW5nbGUgPSAofnBhdF9pZDogSWQudCwgfmJvZHlfaWQ6IElkLnQpOiBTaW1wbGUudCA9PiB7XG4gIC8qIChCKSBZb3UnbGwgbmVlZCB0byBhZGQgbmV3IGNhc2VzIHRvIEV4cGxhaW5UaGlzRm9ybS5yZSBmb3IgdGhlIG5ldyBmb3JtXG4gICAqIHRvIHJlcHJlc2VudCBhIGdyb3VwX2lkIGFuZCBmb3JtX2lkLiBUaGlzIFNpbXBsZSBzdHlsZSBpcyBzcGVjaWFsaXplZFxuICAgKiB0byBzaW5nbGV0b24gZ3JvdXBzLiBJbiBnZW5lcmFsLCB0aGUgZ3JvdXBfaWQgbmVlZHMgdG8gYmUgdW5pcXVlLCBhbmRcbiAgICogZm9ybV9pZHMgbmVlZCB0byBiZSB1bmlxdWUgd2l0aGluIGEgZ3JvdXAuIFRoZXNlIGlkcyBhcmUgdXNlZCB0byB0cmFja1xuICAgKiBFeHBsYWluVGhpcyBwZXJzaXN0ZW50IHN0YXRlLiAqL1xuICBncm91cF9pZDogRml4RXhwKEJhc2UpLFxuICBmb3JtX2lkOiBGaXhFeHAoQmFzZSksXG4gIC8qIChDKSBUaGUgYWJzdHJhY3QgZmllbGQgZGVmaW5lcyBhbiBhYnN0cmFjdCBleGFtcGxlIGlsbHVzdHJhdGluZyB0aGVcbiAgICogbmV3IGZvcm0uIFlvdSdsbCBuZWVkIHRvIHByb3ZpZGUgcGFpcnMgYXNzb2NpYXRpbmcgYW55IHJlcHJlc2VudGF0aXZlXG4gICAqIHN1YnRlcm1zIG9mIHRoZSBleGVtcGxhciAoZS5nLiBcImVfYXJnXCIgYW5kIFwiZV9mdW5cIiBiZWxvdykgd2l0aCB0aGVcbiAgICogY29uY3JldGUgc3VidGVybXMgb2YgdGhlIHRlcm0gdGhlIHVzZXIgaGFzIHNlbGVjdGVkIChoZXJlLCBhcmdfaWRcbiAgICogYW5kIGZuX2lkKS4gWW91J2xsIHRoZW4gbmVlZCBhIGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBhIHNlZ21lbnRcbiAgICogcmVwcmVzZW50aW5nIHlvdXIgYWJzdHJhY3QuIFRoaXMgaXMgZG9uZSBpbiB0aGlzIGluZGlyZWN0IHdheSBzb1xuICAgKiBhcyB0byBhc3NvY2lhdGUgcmVwcmVzZW50YXRpdmUgYW5kIGNvbmNyZXRlIHN1YnRlcm1zIGlkcyBmb3JcbiAgICogc3ludGF4IGhpZ2hsaWdodGluZyBwdXJwb3Nlcy4gKi9cbiAgYWJzdHJhY3Q6XG4gICAgU2ltcGxlLm1rXzIoKFwicFwiLCBwYXRfaWQpLCAoXCJlXCIsIGJvZHlfaWQpLCAocCwgZSkgPT5cbiAgICAgIFtta19maXgoW1tzcGFjZSgpLCBwLCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBlXVxuICAgICksXG4gIC8qIChEKSBUaGUgZXhwbGFuYXRpb24gd2hpY2ggd2lsbCBhcHBlYXIgaW4gdGhlIHNpZGViYXIgYmVsb3cgdGhlIGFic3RyYWN0ICovXG4gIGV4cGxhbmF0aW9uOlxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJSZWN1cnNpdmVseSByZXBsYWNlcyBhbGwgb2NjdXJlbmNlcyBvZiB0aGUgWypwYXR0ZXJuKl0oJXMpIGluc2lkZSB0aGUgWypib2R5Kl0oJXMpIHdpdGggdGhlIGVudGlyZSBbKmJvZHkqXSglcykgaXRzZWxmLCBlZmZlY3RpdmVseSBjcmVhdGluZyBhbiBpbmZpbml0ZSBleHByZXNzaW9uLiBVbmxlc3MgWypwYXR0ZXJuKl0oJXMpIGlzIGEgZnVuY3Rpb24sIGl0IGlzIGxpa2VseSB0byBldmFsdWF0ZSBmb3JldmVyLlwiLFxuICAgICAgcGF0X2lkIHw+IElkLnRvX3N0cmluZyxcbiAgICAgIGJvZHlfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICAgYm9keV9pZCB8PiBJZC50b19zdHJpbmcsXG4gICAgICBwYXRfaWQgfD4gSWQudG9fc3RyaW5nLFxuICAgICksXG4gIC8qIChFKSBBZGRpdGlvbmFsIG1vcmUgY29uY3JldGUgZXhhbXBsZXMgYW5kIGFzc29jaWF0ZWQgZXhwbGFuYXRpb25zICovXG4gIGV4YW1wbGVzOiBbXG4gICAge1xuICAgICAgc3ViX2lkOiBGaXgxLFxuICAgICAgdGVybTogbWtfZXhhbXBsZShcImZpeCB4IC0+IHggKyAxXCIpLFxuICAgICAgbWVzc2FnZToge3xcbiAgICAgICAgICAgICAgVHJpZXMgdG8gY3JlYXRlIHRoZSBpbmZpbml0ZSBleHByZXNzaW9uICgoKC4uLikgKyAxKSArIDEpICsgMSBidXQgdGltZXMgb3V0XG4gICAgICAgICAgICAgIHx9LFxuICAgIH0sXG4gICAge1xuICAgICAgc3ViX2lkOiBGaXgyLFxuICAgICAgdGVybTpcbiAgICAgICAgbWtfZXhhbXBsZShcbiAgICAgICAgICBcIihmaXggZiAtPiBmdW4geCAtPiBcXG5pZiB4ID09IDAgdGhlbiBcXG4wIFxcbmVsc2UgXFxuZih4LTEpICsgMlxcbikgKDUpXCIsXG4gICAgICAgICksXG4gICAgICBtZXNzYWdlOiB7fFxuICAgICAgICAgICAgIEEgcmVjdXJzaXZlIGZ1bmN0aW9uIHRoYXQgZG91YmxlcyBhIGdpdmVuIG51bWJlci5cbiAgICAgICAgICAgICAgfH0sXG4gICAgfSxcbiAgXSxcbn07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xuXG5sZXQgX3RwYXQgPSB0cGF0KFwidF92YXJcIik7XG5sZXQgX3R5cF9hcmcgPSB0eXAoXCJ0eV9hcmdcIik7XG5sZXQgZm9yYWxsX3R5cF9jb2xvcmluZ19pZHMgPVxuICAgICh+dHBhdF9pZDogSWQudCwgfnRib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF90cGF0KSwgdHBhdF9pZCksXG4gIChQaWVjZS5pZChfdHlwX2FyZyksIHRib2R5X2lkKSxcbl07XG5sZXQgZm9yYWxsX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGZvcmFsbCB0eXBlIGNsYXNzaWZpZXMgcG9seW1vcnBoaWMgdmFsdWVzIHZhcnlpbmcgb3ZlciBbKnR5cGUgdmFyaWFibGUqXSglcykgd2l0aCBbKmluc3RhbnRpYXRlZCB0eXBlKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IEZvcmFsbFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW21rX2ZvcmFsbChbW3NwYWNlKCksIF90cGF0LCBzcGFjZSgpXV0pLCBfdHlwX2FyZ10sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3RwYXQpLCBbX3R5cF9hcmddKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IGZvcmFsbDogZ3JvdXAgPSB7aWQ6IEZvcmFsbFR5cCwgZm9ybXM6IFtmb3JhbGxfdHlwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgYmFzaWNfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihCYXNpYyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4geCAtPiB4XCIpLFxuICBtZXNzYWdlOiBcIlRoZSBpZGVudGl0eSBmdW5jdGlvbi4gV2hlbiBnaXZlbiBhbiBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGF0IGFyZ3VtZW50LlwiLFxufTtcbmxldCB3aWxkX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oV2lsZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gXyAtPiAzXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMy5cIixcbn07XG5sZXQgaW50bGl0X2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oSW50TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAxIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHZhbHVlIDEsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgZmxvYXRsaXRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihGbG9hdExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gMS4xIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHZhbHVlIDEuMSwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBib29sbGl0X2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQm9vbExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gdHJ1ZSAtPiAyXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgd2l0aCB2YWx1ZSB0cnVlLCB0aGUgZnVuY3Rpb24gdGhyb3dzIGF3YXkgdGhlIHN1cHBsaWVkIGFyZ3VtZW50IGFuZCBhbHdheXMgZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IHN0cmxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFN0ckxpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gXFxcImFiY1xcXCIgLT4gMlwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHdpdGggdmFsdWUgXFxcImFiY1xcXCIsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgdHJpdl9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKFRyaXYpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuICgpIC0+IDJcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhbiBhcmd1bWVudCB3aXRoIHRoZSAoKSB2YWx1ZSwgdGhlIGZ1bmN0aW9uIHRocm93cyBhd2F5IHRoZSBzdXBwbGllZCBhcmd1bWVudCBhbmQgYWx3YXlzIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsaXN0bmlsX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oTGlzdE5pbCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gW10gLT4gMlwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGFuIGFyZ3VtZW50IHdpdGggdGhlIGVtcHR5IGxpc3QgdmFsdWUsIHRoZSBmdW5jdGlvbiB0aHJvd3MgYXdheSB0aGUgc3VwcGxpZWQgYXJndW1lbnQgYW5kIGFsd2F5cyBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGlzdGxpdF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKExpc3RMaXQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIFt4LCB5XSAtPiB4XCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgdGhhdCBpcyBhIGxpc3Qgb2YgdHdvIGVsZW1lbnRzLCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoYXQgbGlzdC5cIixcbn07XG5sZXQgY29uc19oZF9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKENvbnNIZCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gaGQ6OnRsIC0+IGhkXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgdGhhdCBpcyBhIG5vbi1lbXB0eSBsaXN0LCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBoZWFkIG9mIHRoYXQgbGlzdC5cIixcbn07XG5sZXQgY29uc19zbmRfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihDb25zU25kKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBmc3Q6OnNuZDo6dGwgLT4gc25kXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gYXJndW1lbnQgdGhhdCBpcyBhIGxpc3Qgd2l0aCBhdCBsZWFzdCB0d28gZWxlbWVudHMsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIHNlY29uZCBlbGVtZW50IG9mIHRoYXQgbGlzdC5cIixcbn07XG5sZXQgdmFyX2luY3JfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihWYXJJbmNyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biB4IC0+IHggKyAxXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYW4gaW50ZWdlciBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgYXJndW1lbnQgcGx1cyAxLlwiLFxufTtcbmxldCB2YXJfYW5kX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVmFyQW5kKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biBiIC0+IGIgJiYgdHJ1ZVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgYm9vbGVhbiBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgbG9naWNhbC1hbmQgb2YgdGhlIGFyZ3VtZW50IGFuZCB0cnVlLCB3aGljaCBldmFsdWF0ZXMgdG8gdGhlIHRydXRoIHZhbHVlIG9mIHRoZSBhcmd1bWVudC5cIixcbn07XG5sZXQgdHVwbGUyX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oVHVwbGUyKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImZ1biAoeCwgeSkgLT4geCArIHlcIiksXG4gIG1lc3NhZ2U6IFwiV2hlbiBnaXZlbiBhIDItdHVwbGUgb2YgaW50ZWdlcnMsIHRoZSBmdW5jdGlvbiBldmFsdWF0ZXMgdG8gdGhlIHN1bSBvZiB0aGUgdHdvIGludGVnZXJzLlwiLFxufTtcbmxldCB0dXBsZTNfZnVuX2V4ID0ge1xuICBzdWJfaWQ6IEZ1bihUdXBsZTMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIChhLCBiLCBjKSAtPlxcbmEgJiYgYiAmJiBjXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYSAzLXR1cGxlIG9mIGJvb2xlYW5zLCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIHRvIHRoZSBsb2dpY2FsLWFuZCBvZiB0aGUgdGhyZWUgYm9vbGVhbnMuXCIsXG59O1xubGV0IGN0cl9mdW5fZXggPSB7XG4gIHN1Yl9pZDogRnVuKEN0ciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmdW4gTm9uZSAtPiAxXCIpLFxuICBtZXNzYWdlOiBcIldoZW4gZ2l2ZW4gYSBOb25lIGNvbnN0cnVjdG9yIGFyZ3VtZW50LCB0aGUgZnVuY3Rpb24gZXZhbHVhdGVzIDEuXCIsXG59O1xubGV0IGFwX2Z1bl9leCA9IHtcbiAgc3ViX2lkOiBGdW4oQXApLFxuICB0ZXJtOiBta19leGFtcGxlKFwiZnVuIFNvbWUoYSkgLT4gYVwiKSxcbiAgbWVzc2FnZTogXCJXaGVuIGdpdmVuIGEgU29tZSBjb25zdHJ1Y3RvciBhcmd1bWVudCwgdGhlIGZ1bmN0aW9uIGV2YWx1YXRlcyB0byB0aGUgY29uc3RydWN0b3IncyBhcmd1bWVudC5cIixcbn07XG4vLyBUT0RPIGZvciBzaGFyZWQgZXhhbXBsZXMsIHNob3VsZCB0aGUgZmVlZGJhY2sgYmUgc3RvcmVkIHNlcGFyYXRlbHkgZm9yIGVhY2ggXCJpbnN0YW5jZVwiP1xubGV0IF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAoc2ZfcGF0X2lkOiBJZC50LCBzZl9ib2R5X2lkOiBJZC50LCB+cGF0X2lkOiBJZC50LCB+Ym9keV9pZDogSWQudClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFsoc2ZfcGF0X2lkLCBwYXRfaWQpLCAoc2ZfYm9keV9pZCwgYm9keV9pZCldO1xufTtcbmxldCBfcGF0ID0gcGF0KFwicFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoQmFzZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJwXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYmFzaWNfZnVuX2V4XSAvLyBUT0RPIFdoYXQgb3RoZXIgZXhhbXBsZXMgc2hvdWxkIGJlIGhlcmVcbiAgfTtcbn07XG5cbmxldCBfcGF0ID0gUGllY2UuR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSk7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fZW1wdHlfaG9sZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9ib2R5X2Z1bmN0aW9uX2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl9lbXB0eV9ob2xlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLCBhZnRlciB0aGUgW2VtcHR5IGhvbGUgcGF0dGVybl0oJXMpIGlzIGZpbGxlZC5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoRW1wdHlIb2xlKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX3BhdCksIFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jhc2ljX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJJTlZBTElEXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX211bHRpX2hvbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fbXVsdGlfaG9sZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKSwgYWZ0ZXIgdGhlIFtpbnZhbGlkIGFyZ3VtZW50IHBhdHRlcm5dKCVzKSBpcyBjb3JyZWN0ZWQuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKE11bHRpSG9sZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJJTlZBTElEXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYmFzaWNfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fd2lsZF9leHBfY29sb3JpbmdfaWRzID0gKH5ib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhQaWVjZS5pZChfZXhwKSwgYm9keV9pZCldO1xufTtcbmxldCBmdW5jdGlvbl93aWxkX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgdGhhdCBpcyBpZ25vcmVkLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IF9wYXQgPSBwYXQoXCJfXCIpO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChXaWxkKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIl9cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt3aWxkX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJJbnRMaXRcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25faW50bGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2ludGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgYCVzYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEludCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJJbnRMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRsaXRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkZsb2F0TGl0XCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2Zsb2F0bGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2Zsb2F0bGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyBgJWZgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgLy8gVE9ETyBwcmludCBvdXQgdGhlIGZsb2F0IGxpdGVyYWwgbmljZXJcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoRmxvYXQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiRmxvYXRMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdGxpdF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiQm9vbExpdFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9ib29sbGl0X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX2Jvb2xsaXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIGAlYmAuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChCb29sKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkJvb2xMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtib29sbGl0X2Z1bl9leF0sXG4gIH07XG59O1xuXG5sZXQgX3BhdCA9IHBhdChcIlN0cmluZ0xpdFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9zdHJsaXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fc3RybGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyBgJXNgLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcblxuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChTdHJpbmcpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiU3RyaW5nTGl0XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbc3RybGl0X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCIoKVwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl90cml2X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2JvZHlfZnVuY3Rpb25fZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cCkpO1xubGV0IGZ1bmN0aW9uX3RyaXZfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIHRoYXQgbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpIGlzIHRoZSB0cml2aWFsIHZhbHVlIGAoKWAuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLiBUaGlzIGlmIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIGEgemVybyBhcmd1bWVudCBmdW5jdGlvbi5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoVHJpdiksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCIoKVwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3RyaXZfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIltdXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2xpc3RuaWxfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fbGlzdG5pbF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgdGhhdCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcykgaXMgdGhlIGVtcHR5IGxpc3QgYFtdYC4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKExpc3ROaWwpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiW11cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsaXN0bmlsX2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBta19saXN0X3BhdChbW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpXV0pO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fbGlzdGxpdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBhcmUgbGlzdHMgd2l0aCAlcy1lbGVtZW50cywgZWFjaCBtYXRjaGluZyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IHBhdHRlcm4uIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSBbKmFyZ3VtZW50IHBhdHRlcm4qXSglcyksIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXV0pLCBzcGFjZSgpLCBfZXhwXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChMaXN0TGl0KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgICAgICBbbWtfbGlzdF9wYXQoW1twYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcIi4uLlwiKV1dKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xpc3RuaWxfZnVuX2V4LCBsaXN0bGl0X2Z1bl9leF0sXG4gIH07XG59O1xubGV0IF9wYXRfaGQgPSBwYXQoXCJwX2hkXCIpO1xubGV0IF9wYXRfdGwgPSBwYXQoXCJwX3RsXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2NvbnNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5oZF9pZDogSWQudCwgfnRsX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFtcbiAgICAoUGllY2UuaWQoX3BhdF9oZCksIGhkX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdF90bCksIHRsX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cCksIGJvZHlfaWQpLFxuICBdO1xufTtcbmxldCBmdW5jdGlvbl9jb25zX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgdGhhdCBtYXRjaCB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qIGFyZSBub24tZW1wdHkgbGlzdHMgdGhhdCBtYXRjaCB0aGUgWypoZWFkIHBhdHRlcm4qXSglcykgYW5kIFsqdGFpbCBwYXR0ZXJuKl0oJXMpLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGNvbnMgPSBjb25zX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19mdW4oW1tzcGFjZSgpLCBfcGF0X2hkLCBjb25zLCBfcGF0X3RsLCBzcGFjZSgpXV0pLFxuICAgIHNwYWNlKCksXG4gICAgX2V4cCxcbiAgXTtcbiAge1xuICAgIGlkOiBGdW5jdGlvbkV4cChMaXN0Q29ucyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbnMpLCBbcGF0KFwicF9oZFwiKSwgY29uc19wYXQoKSwgcGF0KFwicF90bFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2NvbnNfaGRfZnVuX2V4LCBjb25zX3NuZF9mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwieFwiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl92YXJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fdmFyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggaXMgYm91bmQgdG8gdGhlIFsqdmFyaWFibGUqXSglcykgYCVzYCwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW21rX2Z1bihbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFZhciksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJ4XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYmFzaWNfZnVuX2V4LCB2YXJfaW5jcl9mdW5fZXgsIHZhcl9hbmRfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX2NvbW1hID0gY29tbWFfcGF0KCk7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9jb21tYSksIFBpZWNlLmlkKF9leHApKTtcbmxldCBmdW5jdGlvbl90dXBsZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBhcmUgJXMtdHVwbGVzIHdoZXJlIGVhY2ggZWxlbWVudCBtYXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IGVsZW1lbnQgcGF0dGVybi4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2Z1bihbW3NwYWNlKCksIHBhdChcInAxXCIpLCBfY29tbWEsIHNwYWNlKCksIHBhdChcIi4uLlwiKSwgc3BhY2UoKV1dKSxcbiAgICBzcGFjZSgpLFxuICAgIF9leHAsXG4gIF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoVHVwbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfY29tbWEpLCBbcGF0KFwicDFcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCIuLi5cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZTJfZnVuX2V4LCB0dXBsZTNfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX3R1cGxlMl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdDFfaWQ6IElkLnQsIH5wYXQyX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFtcbiAgICAoUGllY2UuaWQoX3BhdDEpLCBwYXQxX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdDIpLCBwYXQyX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cCksIGJvZHlfaWQpLFxuICBdO1xufTtcbmxldCBmdW5jdGlvbl90dXBsZTJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSAqYXJndW1lbnQgcGF0dGVybiogYXJlIDItdHVwbGVzIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqZmlyc3QgZWxlbWVudCBwYXR0ZXJuKl0oJXMpIGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypzZWNvbmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgKmFyZ3VtZW50IHBhdHRlcm4qLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGNvbW1hID0gY29tbWFfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2Z1bihbW3NwYWNlKCksIF9wYXQxLCBjb21tYSwgc3BhY2UoKSwgX3BhdDIsIHNwYWNlKCldXSksXG4gICAgc3BhY2UoKSxcbiAgICBfZXhwLFxuICBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlMiksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKGNvbW1hKSwgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDJcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFt0dXBsZTJfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdDEgPSBwYXQoXCJwMVwiKTtcbmxldCBfcGF0MiA9IHBhdChcInAyXCIpO1xubGV0IF9wYXQzID0gcGF0KFwicDNcIik7XG5sZXQgX2V4cCA9IGV4cChcImVcIik7XG5sZXQgZnVuY3Rpb25fdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+cGF0MV9pZDogSWQudCwgfnBhdDJfaWQ6IElkLnQsIH5wYXQzX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFtcbiAgICAoUGllY2UuaWQoX3BhdDEpLCBwYXQxX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdDIpLCBwYXQyX2lkKSxcbiAgICAoUGllY2UuaWQoX3BhdDMpLCBwYXQzX2lkKSxcbiAgICAoUGllY2UuaWQoX2V4cCksIGJvZHlfaWQpLFxuICBdO1xufTtcbmxldCBmdW5jdGlvbl90dXBsZTNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSAqYXJndW1lbnQgcGF0dGVybiogYXJlIDMtdHVwbGVzIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqZmlyc3QgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCB0aGUgc2Vjb25kIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypzZWNvbmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCBhbmQgdGhlIHRoaXJkIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWyp0aGlyZCBlbGVtZW50IHBhdHRlcm4qXSglcykuIFdoZW4gYXBwbGllZCB0byBhbiBhcmd1bWVudCB3aGljaCBtYXRjaGVzIHRoZSAqYXJndW1lbnQgcGF0dGVybiosIGV2YWx1YXRlcyB0byB0aGUgZnVuY3Rpb24gWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfZnVuKFtcbiAgICAgIFtcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDEsXG4gICAgICAgIGNvbW1hX3BhdCgpLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MixcbiAgICAgICAgY29tbWEsXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQzLFxuICAgICAgICBzcGFjZSgpLFxuICAgICAgXSxcbiAgICBdKSxcbiAgICBzcGFjZSgpLFxuICAgIF9leHAsXG4gIF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoVHVwbGUzKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoXG4gICAgICAgIFBpZWNlLmlkKGNvbW1hKSxcbiAgICAgICAgW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDJcIiksIGNvbW1hX3BhdCgpLCBwYXQoXCJwM1wiKV0sXG4gICAgICApKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3R1cGxlM19mdW5fZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiQ1wiKTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBmdW5jdGlvbl9jdHJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfYm9keV9mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwKSk7XG5sZXQgZnVuY3Rpb25fY3RyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSB0aGF0IG1hdGNoZXMgdGhlIFsqYXJndW1lbnQgcGF0dGVybipdKCVzKSBpcyB0aGUgKmAlc2AgY29uc3RydWN0b3IqLiBXaGVuIGFwcGxpZWQgdG8gYW4gYXJndW1lbnQgd2hpY2ggbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLCBldmFsdWF0ZXMgdG8gdGhlIGZ1bmN0aW9uIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbbWtfZnVuKFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV1dKSwgc3BhY2UoKSwgX2V4cF07XG4gIHtcbiAgICBpZDogRnVuY3Rpb25FeHAoQ3RyKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkNcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtjdHJfZnVuX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdF9jb24gPSBwYXQoXCJwX2NvblwiKTtcbmxldCBfcGF0X2FyZyA9IHBhdChcInBfYXJnXCIpO1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGZ1bmN0aW9uX2FwX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+Y29uX2lkOiBJZC50LCB+YXJnX2lkOiBJZC50LCB+Ym9keV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiB7XG4gIFtcbiAgICAoUGllY2UuaWQoX3BhdF9jb24pLCBjb25faWQpLFxuICAgIChQaWVjZS5pZChfcGF0X2FyZyksIGFyZ19pZCksXG4gICAgKFBpZWNlLmlkKF9leHApLCBib2R5X2lkKSxcbiAgXTtcbn07XG5sZXQgZnVuY3Rpb25fYXBfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyB0aGF0IG1hdGNoIHRoZSAqYXJndW1lbnQgcGF0dGVybiogYXJlIHRoZSBbKmNvbnN0cnVjdG9yKl0oJXMpIHdoZXJlIHRoZSAqY29uc3RydWN0b3IgYXJndW1lbnQqIG1hdGNoZXMgdGhlIFsqY29uc3RydWN0b3IgYXJndW1lbnQgcGF0dGVybipdKCVzKS4gV2hlbiBhcHBsaWVkIHRvIGFuIGFyZ3VtZW50IHdoaWNoIG1hdGNoZXMgdGhlICphcmd1bWVudCBwYXR0ZXJuKiwgZXZhbHVhdGVzIHRvIHRoZSBmdW5jdGlvbiBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBhcCA9IG1rX2FwX3BhdChbW19wYXRfYXJnXV0pO1xuICBsZXQgZm9ybSA9IFtta19mdW4oW1tzcGFjZSgpLCBfcGF0X2NvbiwgYXAsIHNwYWNlKCldXSksIHNwYWNlKCksIF9leHBdO1xuICB7XG4gICAgaWQ6IEZ1bmN0aW9uRXhwKEFwKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoYXApLCBbcGF0KFwicF9jb25cIiksIG1rX2FwX3BhdChbW3BhdChcInBfYXJnXCIpXV0pXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYXBfZnVuX2V4XSxcbiAgfTtcbn07XG5cbmxldCBmdW5jdGlvbnM6IGdyb3VwID0ge2lkOiBGdW5jdGlvbkV4cChCYXNlKSwgZm9ybXM6IFtmdW5jdGlvbl9leHBdfTtcbmxldCBmdW5jdGlvbnNfZW1wdHlfaG9sZSA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEVtcHR5SG9sZSksXG4gIGZvcm1zOiBbZnVuY3Rpb25fZW1wdHlfaG9sZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xubGV0IGZ1bmN0aW9uc19tdWx0aV9ob2xlID0ge1xuICBpZDogRnVuY3Rpb25FeHAoTXVsdGlIb2xlKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9tdWx0aV9ob2xlX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5sZXQgZnVuY3Rpb25zX3dpbGQgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChXaWxkKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl93aWxkX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5sZXQgZnVuY3Rpb25zX2ludCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKEludCksXG4gIGZvcm1zOiBbZnVuY3Rpb25faW50bGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5sZXQgZnVuY3Rpb25zX2Zsb2F0ID0ge1xuICBpZDogRnVuY3Rpb25FeHAoRmxvYXQpLFxuICBmb3JtczogW2Z1bmN0aW9uX2Zsb2F0bGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5sZXQgZnVuY3Rpb25zX2Jvb2wgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChCb29sKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9ib29sbGl0X2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfc3RyID0ge1xuICBpZDogRnVuY3Rpb25FeHAoU3RyaW5nKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9zdHJsaXRfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc190cml2ID0ge1xuICBpZDogRnVuY3Rpb25FeHAoVHJpdiksXG4gIGZvcm1zOiBbZnVuY3Rpb25fdHJpdl9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX2xpc3RuaWwgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChMaXN0TmlsKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl9saXN0bmlsX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfbGlzdGxpdCA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKExpc3RMaXQpLFxuICBmb3JtczogW2Z1bmN0aW9uX2xpc3RsaXRfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19jb25zID0ge1xuICBpZDogRnVuY3Rpb25FeHAoTGlzdENvbnMpLFxuICBmb3JtczogW2Z1bmN0aW9uX2NvbnNfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc192YXIgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChWYXIpLFxuICBmb3JtczogW2Z1bmN0aW9uX3Zhcl9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3R1cGxlID0ge1xuICBpZDogRnVuY3Rpb25FeHAoVHVwbGUpLFxuICBmb3JtczogW2Z1bmN0aW9uX3R1cGxlX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG5cbmxldCBmdW5jdGlvbnNfdHVwbGUyID0ge1xuICBpZDogRnVuY3Rpb25FeHAoVHVwbGUyKSxcbiAgZm9ybXM6IFtmdW5jdGlvbl90dXBsZTJfZXhwLCBmdW5jdGlvbl90dXBsZV9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX3R1cGxlMyA9IHtcbiAgaWQ6IEZ1bmN0aW9uRXhwKFR1cGxlMyksXG4gIGZvcm1zOiBbZnVuY3Rpb25fdHVwbGUzX2V4cCwgZnVuY3Rpb25fdHVwbGVfZXhwLCBmdW5jdGlvbl9leHBdLFxufTtcblxubGV0IGZ1bmN0aW9uc19jdHIgPSB7XG4gIGlkOiBGdW5jdGlvbkV4cChDdHIpLFxuICBmb3JtczogW2Z1bmN0aW9uX2N0cl9leHAsIGZ1bmN0aW9uX2V4cF0sXG59O1xuXG5sZXQgZnVuY3Rpb25zX2FwID0ge1xuICBpZDogRnVuY3Rpb25FeHAoQXApLFxuICBmb3JtczogW2Z1bmN0aW9uX2FwX2V4cCwgZnVuY3Rpb25fZXhwXSxcbn07XG4iLCJvcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgZW1wdHlfaG9sZV90ZW1wbGF0ZSA9IChfc29ydCwgc3RyLCBpZCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPVxuICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgXCJUaGlzIHNob3VsZCBiZSBmaWxsZWQgd2l0aCAlcyB0byBjb21wbGV0ZSB0aGUgcHJvZ3JhbS5cIixcbiAgICAgIHN0cixcbiAgICApO1xuICB7XG4gICAgaWQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbXVsdGlfaG9sZV90ZW1wbGF0ZSA9IChzb3J0LCBpZCk6IGZvcm0gPT4ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoaXMgaXMgYW4gaW52YWxpZCB0ZXJtLlwiO1xuICB7XG4gICAgaWQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtzb3J0KFwiSU5WQUxJRFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBlbXB0eV9ob2xlX2V4cDogZm9ybSA9XG4gIEhvbGVUZW1wbGF0ZS5lbXB0eV9ob2xlX3RlbXBsYXRlKGV4cCwgXCJhbiBleHByZXNzaW9uXCIsIEVtcHR5SG9sZUV4cCk7XG5sZXQgZW1wdHlfaG9sZV9leHBzID0ge2lkOiBFbXB0eUhvbGVFeHAsIGZvcm1zOiBbZW1wdHlfaG9sZV9leHBdfTtcblxubGV0IG11bHRpX2hvbGVfZXhwOiBmb3JtID1cbiAgSG9sZVRlbXBsYXRlLm11bHRpX2hvbGVfdGVtcGxhdGUoZXhwLCBNdWx0aUhvbGVFeHApO1xuXG5sZXQgbXVsdGlfaG9sZV9leHBzID0ge2lkOiBNdWx0aUhvbGVFeHAsIGZvcm1zOiBbbXVsdGlfaG9sZV9leHBdfTtcbiIsIm9wZW4gRXhhbXBsZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBIYXozbGNvcmU7XG5sZXQgZW1wdHlfaG9sZV9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiRXhwcmVzc2lvbnMgYXJlIG5vdCBtYXRjaGVkIGFnYWluc3QgdGhlICplbXB0eSBob2xlIHBhdHRlcm4qIHVudGlsIGl0IGlzIGZpbGxlZC5cIjtcbiAge1xuICAgIGlkOiBFbXB0eUhvbGVQYXQsXG4gICAgc3ludGFjdGljX2Zvcm06IFtHcm91dCh7aWQ6IElkLm1rKCksIHNoYXBlOiBDb252ZXh9KV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbXVsdGlfaG9sZV9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiRXhwcmVzc2lvbnMgYXJlIG5vdCBtYXRjaGVkIGFnYWluc3QgdGhlIGludmFsaWQgcGF0dGVybiB1bnRpbCBpdCBpcyBjb3JyZWN0ZWQuXCI7XG4gIHtcbiAgICBpZDogTXVsdGlIb2xlUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbcGF0KFwiSW52YWxpZFwiKV0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgZW1wdHlfaG9sZTogZ3JvdXAgPSB7aWQ6IEVtcHR5SG9sZVBhdCwgZm9ybXM6IFtlbXB0eV9ob2xlX3BhdF19O1xuXG5sZXQgbXVsdGlfaG9sZTogZ3JvdXAgPSB7aWQ6IE11bHRpSG9sZVBhdCwgZm9ybXM6IFttdWx0aV9ob2xlX3BhdF19O1xuIiwib3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBlbXB0eV9ob2xlX3RwYXQ6IGZvcm0gPVxuICBIb2xlVGVtcGxhdGUuZW1wdHlfaG9sZV90ZW1wbGF0ZSh0cGF0LCBcImEgdHlwZSBwYXR0ZXJuXCIsIEVtcHR5SG9sZVRQYXQpO1xubGV0IGVtcHR5X2hvbGVfdHBhdHMgPSB7aWQ6IEVtcHR5SG9sZVRQYXQsIGZvcm1zOiBbZW1wdHlfaG9sZV90cGF0XX07XG5cbmxldCBtdWx0aV9ob2xlX3RwYXQ6IGZvcm0gPVxuICBIb2xlVGVtcGxhdGUubXVsdGlfaG9sZV90ZW1wbGF0ZSh0cGF0LCBNdWx0aUhvbGVUUGF0KTtcblxubGV0IG11bHRpX2hvbGVfdHBhdHMgPSB7aWQ6IE11bHRpSG9sZVRQYXQsIGZvcm1zOiBbbXVsdGlfaG9sZV90cGF0XX07XG4iLCJvcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcbm9wZW4gSGF6M2xjb3JlO1xuXG5sZXQgZW1wdHlfaG9sZV90eXA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhpcyBtYXJrcyBhIHR5cGUgdGhhdCBuZWVkcyB0byBiZSBmaWxsZWQgaW4uXCI7XG4gIHtcbiAgICBpZDogRW1wdHlIb2xlVHlwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSldLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxuLy8gVE9ETyBEaWQgZ2V0IGEgY2FzZSB3aGVyZSBpbiB0eXBlIHBvc2l0aW9uIGhhZCBzcGFjZSBiZXR3ZWVuIHR3byB2YXJpYWJsZXMgd2hlcmUgZ290IGludG8gd2VpcmQgc3RhdGVcbmxldCBtdWx0aV9ob2xlX3R5cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGlzIGlzIGFuIGludmFsaWQgdHlwZS5cIjtcbiAge1xuICAgIGlkOiBNdWx0aUhvbGVUeXAsXG4gICAgc3ludGFjdGljX2Zvcm06IFt0eXAoXCJJbnZhbGlkXCIpXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBlbXB0eV9ob2xlOiBncm91cCA9IHtpZDogRW1wdHlIb2xlVHlwLCBmb3JtczogW2VtcHR5X2hvbGVfdHlwXX07XG5cbmxldCBtdWx0aV9ob2xlOiBncm91cCA9IHtpZDogTXVsdGlIb2xlVHlwLCBmb3JtczogW211bHRpX2hvbGVfdHlwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgaWZfYmFzaWMxX2V4cF9leCA9IHtcbiAgc3ViX2lkOiBJZlRydWUsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJpZiAodHJ1ZSkgdGhlbiAxIGVsc2UgMlwiKSxcbiAgbWVzc2FnZTogXCJTaW5jZSB0aGUgY29uZGl0aW9uIGlzIHRydWUsIHRoZSBpZiBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0aGUgdGhlbiBicmFuY2gsIDEuXCIsXG59O1xubGV0IGlmX2Jhc2ljMl9leHBfZXggPSB7XG4gIHN1Yl9pZDogSWZGYWxzZSxcbiAgdGVybTogbWtfZXhhbXBsZShcImlmICgyIDwgMSkgdGhlbiAzIGVsc2UgNFwiKSxcbiAgbWVzc2FnZTogXCJTaW5jZSB0aGUgY29uZGl0aW9uIGlzIDIgPCAxIGlzIGZhbHNlLCB0aGUgaWYgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdGhlIGVsc2UgYnJhbmNoLCA0LlwiLFxufTtcbmxldCBfZXhwX2NvbmQgPSBleHAoXCJlX2NvbmRcIik7XG5sZXQgX2V4cF90aGVuID0gZXhwKFwiZV90aGVuXCIpO1xubGV0IF9leHBfZWxzZSA9IGV4cChcImVfZWxzZVwiKTtcbmxldCBpZl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmNvbmRfaWQ6IElkLnQsIH50aGVuX2lkOiBJZC50LCB+ZWxzZV9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfZXhwX2NvbmQpLCBjb25kX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfdGhlbiksIHRoZW5faWQpLFxuICAoUGllY2UuaWQoX2V4cF9lbHNlKSwgZWxzZV9pZCksXG5dO1xubGV0IGlmX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypjb25kaXRpb24qXSglcykgZXZhbHVhdGVzIHRvIGB0cnVlYCwgZXZhbHVhdGUgdGhlIFsqdGhlbiBicmFuY2gqXSglcykuIE90aGVyd2lzZSwgZXZhbHVhdGUgdGhlIFsqZWxzZSBicmFuY2gqXSglcykuXCI7XG4gIHtcbiAgICBpZDogSWZFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtcbiAgICAgIG1rX2lmKFtcbiAgICAgICAgW3NwYWNlKCksIF9leHBfY29uZCwgbGluZWJyZWFrKCldLFxuICAgICAgICBbc3BhY2UoKSwgX2V4cF90aGVuLCBsaW5lYnJlYWsoKV0sXG4gICAgICBdKSxcbiAgICAgIHNwYWNlKCksXG4gICAgICBfZXhwX2Vsc2UsXG4gICAgXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaWZfYmFzaWMxX2V4cF9leCwgaWZfYmFzaWMyX2V4cF9leF0sXG4gIH07XG59O1xuXG5sZXQgaWZzOiBncm91cCA9IHtpZDogSWZFeHAsIGZvcm1zOiBbaWZfZXhwXX07XG4iLCJvcGVuIEhhejNsY29yZTtcbm9wZW4gRXhwbGFpblRoaXNGb3JtO1xub3BlbiBFeGFtcGxlO1xuXG5sZXQgbGV0X2Jhc2VfZXggPSB7XG4gIHN1Yl9pZDogTGV0KEJhc2ljKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCB4ID0gMSBpbiBcXG54XCIpLFxuICBtZXNzYWdlOiBcIlRoZSB2YXJpYWJsZSB4IGlzIGJvdW5kIHRvIDEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxXCIsXG59O1xubGV0IGxldF93aWxkX2V4ID0ge1xuICBzdWJfaWQ6IExldChXaWxkKSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBfID0gMSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAxIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X2ludF9leCA9IHtcbiAgc3ViX2lkOiBMZXQoSW50TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCAxID0gMSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAxIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X2Zsb2F0X2V4ID0ge1xuICBzdWJfaWQ6IExldChGbG9hdExpdCksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgMS4xID0gMS4xIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIDEuMSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9ib29sX2V4ID0ge1xuICBzdWJfaWQ6IExldChCb29sTGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCB0cnVlID0gdHJ1ZSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSB0cnVlIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X3N0cl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoU3RyTGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBcXFwiYWJjXFxcIiA9IFxcXCJhYmNcXFwiIGluIFxcbjJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHRydWUgaXMgdGhyb3duIGF3YXksIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAyLlwiLFxufTtcbmxldCBsZXRfdHJpdl9leCA9IHtcbiAgc3ViX2lkOiBMZXQoVHJpdiksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgKCkgPSAoKSBpbiBcXG4yXCIpLFxuICBtZXNzYWdlOiBcIlRoZSAoKSBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9saXN0bGl0X2V4ID0ge1xuICBzdWJfaWQ6IExldChMaXN0TGl0KSxcbiAgdGVybTogbWtfZXhhbXBsZShcImxldCBbeCwgeV0gPSBbMSwgMl0gaW4gXFxueFwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxIGFuZCB0aGUgeSBpcyBib3VuZCB0byAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMS5cIixcbn07XG5sZXQgbGV0X2xpc3RuaWxfZXggPSB7XG4gIHN1Yl9pZDogTGV0KExpc3ROaWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IFtdID0gW10gaW4gXFxuMlwiKSxcbiAgbWVzc2FnZTogXCJUaGUgZW1wdHkgbGlzdCBpcyB0aHJvd24gYXdheSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDIuXCIsXG59O1xubGV0IGxldF9jb25zX2hkX2V4ID0ge1xuICBzdWJfaWQ6IExldChDb25zSGQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IGhkOjp0bCA9IDE6OltdIGluIFxcbmhkXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBoZCBpcyBib3VuZCB0byAxIGFuZCB0aGUgdGwgaXMgYm91bmQgdG8gdGhlIGVtcHR5IGxpc3QsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byAxLlwiLFxufTtcbmxldCBsZXRfY29uc19zbmRfZXggPSB7XG4gIHN1Yl9pZDogTGV0KENvbnNTbmQpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0IGZzdDo6c25kOjp0bCA9IHRydWU6OmZhbHNlOjpbXSBpbiBcXG5zbmRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGZzdCBpcyBib3VuZCB0byB0cnVlLCB0aGUgc25kIGlzIGJvdW5kIHRvIGZhbHNlLCBhbmQgdGhlIHRsIGlzIGJvdW5kIHRvIHRoZSBlbXB0eSBsaXN0LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGxldF92YXJfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFZhciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgeCA9IDEgaW4gXFxueCArIDJcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIHZhcmlhYmxlIHggaXMgYm91bmQgdG8gMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIDEgKyAyLCB3aGljaCBpcyAzLlwiLFxufTtcbmxldCBsZXRfdHVwbGUyX2V4ID0ge1xuICBzdWJfaWQ6IExldChUdXBsZTIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwibGV0ICh4LCB5KSA9ICgxLCAyKSBpbiBcXG54ICsgeVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgdmFyaWFibGUgeCBpcyBib3VuZCB0byAxIGFuZCB0aGUgeSBpcyBib3VuZCB0byAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMSArIDIsIHdoaWNoIGlzIDMuXCIsXG59O1xubGV0IGxldF90dXBsZTNfZXggPSB7XG4gIHN1Yl9pZDogTGV0KFR1cGxlMyksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJsZXQgKHgsIHksIHopID0gKDEsIDIsIDMpXFxuaW4geCArIHkgKyB6XCIpLFxuICBtZXNzYWdlOiBcIlRoZSB2YXJpYWJsZSB4IGlzIGJvdW5kIHRvIDEsIHRoZSB5IGlzIGJvdW5kIHRvIDIsIGFuZCB0aGUgeiBpcyBib3VuZCB0byAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMSArIDIgKyAzLCB3aGljaCBpcyA2LlwiLFxufTtcbmxldCBsZXRfY3RyX2V4ID0ge1xuICBzdWJfaWQ6IExldChDdHIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwidHlwZSBUID0gTm9uZSArIFNvbWUoSW50KVxcbiBpbiBsZXQgTm9uZSA9IE5vbmVcXG5pbiAyXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBOb25lIGlzIHRocm93biBhd2F5LCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgbGV0X2FwX2V4ID0ge1xuICBzdWJfaWQ6IExldChBcCksXG4gIHRlcm06XG4gICAgbWtfZXhhbXBsZShcInR5cGUgVCA9IE5vbmUgKyBTb21lKEludClcXG4gaW4gbGV0IFNvbWUoYSkgPSBTb21lKDIpXFxuaW4gYVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgYSBpcyBib3VuZCB0byAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gMi5cIixcbn07XG5sZXQgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKFxuICAgICAgc2ZfcGF0X2lkOiBJZC50LFxuICAgICAgc2ZfZGVmX2lkOiBJZC50LFxuICAgICAgc2ZfYm9keV9pZDogSWQudCxcbiAgICAgIH5wYXRfaWQ6IElkLnQsXG4gICAgICB+ZGVmX2lkOiBJZC50LFxuICAgICAgfmJvZHlfaWQ6IElkLnQsXG4gICAgKVxuICAgIDogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhzZl9wYXRfaWQsIHBhdF9pZCksIChzZl9kZWZfaWQsIGRlZl9pZCksIChzZl9ib2R5X2lkLCBib2R5X2lkKV07XG59O1xubGV0IF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAoc2ZfcGF0X2lkOiBJZC50LCBzZl9kZWZfaWQ6IElkLnQsIH5wYXRfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpXG4gICAgOiBsaXN0KChJZC50LCBJZC50KSkgPT4ge1xuICBbKHNmX3BhdF9pZCwgcGF0X2lkKSwgKHNmX2RlZl9pZCwgZGVmX2lkKV07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJwXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwX2RlZikpO1xubGV0IGxldF9iYXNlX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIG1hdGNoZWQgYWdhaW5zdCB0aGUgWypwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoQmFzZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJwXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Jhc2VfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gUGllY2UuR3JvdXQoe2lkOiBJZC5taygpLCBzaGFwZTogQ29udmV4fSk7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfZW1wdHlfaG9sZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX3BhdCksIFBpZWNlLmlkKF9leHBfZGVmKSk7XG5sZXQgbGV0X2VtcHR5X2hvbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkFmdGVyIHRoZSBbKmVtcHR5IGhvbGUgcGF0dGVybipdKCVzKSBpcyBmaWxsZWQsIHRoZSBbKmRlZmluaXRpb24qXSglcykgaXMgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBbKnBhdHRlcm4qXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChFbXB0eUhvbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChfcGF0KSwgW0dyb3V0KHtpZDogSWQubWsoKSwgc2hhcGU6IENvbnZleH0pXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2Jhc2VfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiSU5WQUxJRFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9tdWx0aV9ob2xlX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9sZXRfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfcGF0KSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfbXVsdGlfaG9sZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQWZ0ZXIgdGhlIFtpbnZhbGlkIHBhdHRlcm5dKCVzKSBpcyBjb3JyZWN0ZWQsIHRoZSBbKmRlZmluaXRpb24qXSglcykgaXMgbWF0Y2hlZCBhZ2FpbnN0IHRoZSBbKnBhdHRlcm4qXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChNdWx0aUhvbGUpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiSU5WQUxJRFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9iYXNlX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X3dpbGRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5kZWZfaWQ6IElkLnQsIH5ib2R5X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfZGVmKSwgZGVmX2lkKSxcbiAgKFBpZWNlLmlkKF9leHBfYm9keSksIGJvZHlfaWQpLFxuXTtcbmxldCBsZXRfd2lsZF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBpcyBldmFsdWF0ZWQgYW5kIGlnbm9yZWQuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgcGF0XyA9IHBhdChcIl9cIik7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIHBhdF8sIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChXaWxkKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChwYXRfKSwgW3BhdChcIl9cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfd2lsZF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJJbnRMaXRcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X2ludF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfaW50X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyBgJXNgLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEludCksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJJbnRMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfaW50X2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkZsb2F0TGl0XCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9mbG9hdF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfZmxvYXRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2hlcyB0aGUgWypwYXR0ZXJuKl0oJXMpIGlzIGAlZmAuIFRoZSBbKmRlZmluaXRpb24qXSglcykgY2FuJ3QgYmUgcmVmZXJlbmNlZCBpbiB0aGUgWypib2R5Kl0oJXMpLlwiO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1tzcGFjZSgpLCBfcGF0LCBzcGFjZSgpXSwgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXV0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIF9leHBfYm9keSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoRmxvYXQpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiRmxvYXRMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfZmxvYXRfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0ID0gcGF0KFwiQm9vbExpdFwiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IF9leHBfYm9keSA9IGV4cChcImVfYm9keVwiKTtcbmxldCBsZXRfYm9vbF9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfYm9vbF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWUgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaGVzIHRoZSBbKnBhdHRlcm4qXSglcykgaXMgYCViYC4gVGhlIFsqZGVmaW5pdGlvbipdKCVzKSBjYW4ndCBiZSByZWZlcmVuY2VkIGluIHRoZSBbKmJvZHkqXSglcykuXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgX2V4cF9ib2R5LFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChCb29sKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOiBTb21lKChQaWVjZS5pZChfcGF0KSwgW3BhdChcIkJvb2xMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfYm9vbF9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBwYXQoXCJTdHJpbmdMaXRcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X3N0cl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfc3RyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyBgJXNgLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFN0cmluZyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJTdHJpbmdMaXRcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfc3RyX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIigpXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF90cml2X2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgIFBpZWNlLmlkKF9leHBfZGVmKSxcbiAgICBQaWVjZS5pZChfZXhwX2JvZHkpLFxuICApO1xubGV0IGxldF90cml2X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyB0aGUgdHJpdmlhbCB2YWx1ZSBgKClgLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFRyaXYpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiKClcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfdHJpdl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQgPSBta19saXN0X3BhdChbW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpXV0pO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gIF9wYXRfZGVmX2xldF9leHBfY29sb3JpbmdfaWRzKFBpZWNlLmlkKF9wYXQpLCBQaWVjZS5pZChfZXhwX2RlZikpO1xubGV0IGxldF9saXN0bGl0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZXMgZm9yIHRoZSBbKmRlZmluaXRpb24qXSglcykgdGhhdCBtYXRjaCB0aGUgWypwYXR0ZXJuKl0oJXMpIGFyZSBsaXN0cyB3aXRoICVzLWVsZW1lbnRzLCB3aGVyZSBlYWNoIGVsZW1lbnQgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IHBhdHRlcm4uXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbW3NwYWNlKCksIF9wYXQsIHNwYWNlKCldLCBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChMaXN0TGl0KSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF9saXN0bGl0X2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIltdXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgX2V4cF9ib2R5ID0gZXhwKFwiZV9ib2R5XCIpO1xubGV0IGxldF9saXN0bmlsX2V4cF9jb2xvcmluZ19pZHMgPVxuICBfcGF0X2RlZl9ib2R5X2xldF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9wYXQpLFxuICAgIFBpZWNlLmlkKF9leHBfZGVmKSxcbiAgICBQaWVjZS5pZChfZXhwX2JvZHkpLFxuICApO1xubGV0IGxldF9saXN0bmlsX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyB0aGUgZW1wdHkgbGlzdCBgW11gLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKExpc3ROaWwpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6IFNvbWUoKFBpZWNlLmlkKF9wYXQpLCBbcGF0KFwiW11cIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfbGlzdG5pbF9leF0sXG4gIH07XG59O1xubGV0IF9wYXRfaGQgPSBwYXQoXCJwX2hkXCIpO1xubGV0IF9wYXRfdGwgPSBwYXQoXCJwX3RsXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X2NvbnNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5oZF9pZDogSWQudCwgfnRsX2lkOiBJZC50LCB+ZGVmX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9wYXRfaGQpLCBoZF9pZCksXG4gIChQaWVjZS5pZChfcGF0X3RsKSwgdGxfaWQpLFxuICAoUGllY2UuaWQoX2V4cF9kZWYpLCBkZWZfaWQpLFxuXTtcbmxldCBsZXRfY29uc19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2ggdGhlICpwYXR0ZXJuKiBhcmUgbm9uLWVtcHR5IGxpc3RzIHRoYXQgbWF0Y2ggdGhlIFsqaGVhZCpdKCVzKSBhbmQgWyp0YWlsKl0oJXMpIHBhdHRlcm5zLlwiO1xuICBsZXQgY29ucyA9IGNvbnNfcGF0KCk7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbc3BhY2UoKSwgX3BhdF9oZCwgY29ucywgX3BhdF90bCwgc3BhY2UoKV0sXG4gICAgICBbc3BhY2UoKSwgX2V4cF9kZWYsIHNwYWNlKCldLFxuICAgIF0pLFxuICAgIGxpbmVicmVhaygpLFxuICAgIGV4cChcImVfYm9keVwiKSxcbiAgXTtcbiAge1xuICAgIGlkOiBMZXRFeHAoTGlzdENvbnMpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb25zKSwgW3BhdChcInBfaGRcIiksIGNvbnNfcGF0KCksIHBhdChcInBfdGxcIildKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfY29uc19oZF9leCwgbGV0X2NvbnNfc25kX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcInhcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X3Zhcl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfdmFyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgWypkZWZpbml0aW9uKl0oJXMpIGlzIGJvdW5kIHRvIHRoZSBbKnZhcmlhYmxlKl0oJXMpIGAlc2AgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFZhciksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJ4XCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3Zhcl9leF0sXG4gICAgLy8gVE9ETyBEb2VzIHRoaXMgZXhhbXBsZSBiZWluZyBzbGlnaHRseSBkaWZmZXJlbnQgYWN0dWFsbHkgYWRkIGFueXRoaW5nP1xuICB9O1xufTtcbmxldCBfY29tbWEgPSBjb21tYV9wYXQoKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF90dXBsZV9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfbGV0X2V4cF9jb2xvcmluZ19pZHMoUGllY2UuaWQoX2NvbW1hKSwgUGllY2UuaWQoX2V4cF9kZWYpKTtcbmxldCBsZXRfdHVwbGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSBbKnBhdHRlcm4qXSglcykgYXJlICVzLXR1cGxlcyB3aGVyZSBlYWNoIGVsZW1lbnQgbWF0Y2hlcyB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IHBhdHRlcm4uXCI7XG4gIGxldCBmb3JtID0gW1xuICAgIG1rX2xldChbXG4gICAgICBbc3BhY2UoKSwgcGF0KFwicDFcIiksIF9jb21tYSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpLCBzcGFjZSgpXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChUdXBsZSksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFBpZWNlLmlkKF9jb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcIi4uLlwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2xldF90dXBsZTJfZXgsIGxldF90dXBsZTNfZXhdLFxuICB9O1xufTtcbmxldCBfcGF0MSA9IHBhdChcInAxXCIpO1xubGV0IF9wYXQyID0gcGF0KFwicDJcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBsZXRfdHVwbGUyX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+cGF0MV9pZDogSWQudCwgfnBhdDJfaWQ6IElkLnQsIH5kZWZfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdDEpLCBwYXQxX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQyKSwgcGF0Ml9pZCksXG4gIChQaWVjZS5pZChfZXhwX2RlZiksIGRlZl9pZCksXG5dO1xubGV0IGxldF90dXBsZTJfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSAqcGF0dGVybiogYXJlIDItdHVwbGVzIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqZmlyc3QgZWxlbWVudCBwYXR0ZXJuKl0oJXMpIGFuZCB0aGUgc2Vjb25kIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypzZWNvbmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgY29tbWEgPSBjb21tYV9wYXQoKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtcbiAgICAgIFtzcGFjZSgpLCBfcGF0MSwgY29tbWEsIHNwYWNlKCksIF9wYXQyLCBzcGFjZSgpXSxcbiAgICAgIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV0sXG4gICAgXSksXG4gICAgbGluZWJyZWFrKCksXG4gICAgZXhwKFwiZV9ib2R5XCIpLFxuICBdO1xuICB7XG4gICAgaWQ6IExldEV4cChUdXBsZTIpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBmb3JtLFxuICAgIGV4cGFuZGFibGVfaWQ6XG4gICAgICBTb21lKChQaWVjZS5pZChjb21tYSksIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X3R1cGxlMl9leF0sXG4gIH07XG59O1xubGV0IF9wYXQxID0gcGF0KFwicDFcIik7XG5sZXQgX3BhdDIgPSBwYXQoXCJwMlwiKTtcbmxldCBfcGF0MyA9IHBhdChcInAzXCIpO1xubGV0IF9leHBfZGVmID0gZXhwKFwiZV9kZWZcIik7XG5sZXQgbGV0X3R1cGxlM19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofnBhdDFfaWQ6IElkLnQsIH5wYXQyX2lkOiBJZC50LCB+cGF0M19pZDogSWQudCwgfmRlZl9pZDogSWQudClcbiAgICA6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0MSksIHBhdDFfaWQpLFxuICAoUGllY2UuaWQoX3BhdDIpLCBwYXQyX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXQzKSwgcGF0M19pZCksXG4gIChQaWVjZS5pZChfZXhwX2RlZiksIGRlZl9pZCksXG5dO1xubGV0IGxldF90dXBsZTNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBvbmx5IHZhbHVlcyBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoIHRoZSAqcGF0dGVybiogYXJlIDMtdHVwbGVzIHdoZXJlIHRoZSBmaXJzdCBlbGVtZW50IG1hdGNoZXMgdGhlIFsqZmlyc3QgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCB0aGUgc2Vjb25kIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWypzZWNvbmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCBhbmQgdGhlIHRoaXJkIGVsZW1lbnQgbWF0Y2hlcyB0aGUgWyp0aGlyZCBlbGVtZW50IHBhdHRlcm4qXSglcykuXCI7XG4gIGxldCBjb21tYSA9IGNvbW1hX3BhdCgpO1xuICBsZXQgZm9ybSA9IFtcbiAgICBta19sZXQoW1xuICAgICAgW1xuICAgICAgICBzcGFjZSgpLFxuICAgICAgICBfcGF0MSxcbiAgICAgICAgY29tbWFfcGF0KCksXG4gICAgICAgIHNwYWNlKCksXG4gICAgICAgIF9wYXQyLFxuICAgICAgICBjb21tYSxcbiAgICAgICAgc3BhY2UoKSxcbiAgICAgICAgX3BhdDMsXG4gICAgICAgIHNwYWNlKCksXG4gICAgICBdLFxuICAgICAgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXSxcbiAgICBdKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKFR1cGxlMyksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDpcbiAgICAgIFNvbWUoKFxuICAgICAgICBQaWVjZS5pZChjb21tYSksXG4gICAgICAgIFtwYXQoXCJwMVwiKSwgY29tbWFfcGF0KCksIHBhdChcInAyXCIpLCBjb21tYV9wYXQoKSwgcGF0KFwicDNcIildLFxuICAgICAgKSksXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtsZXRfdHVwbGUzX2V4XSxcbiAgfTtcbn07XG5sZXQgX3BhdCA9IHBhdChcIkNcIik7XG5sZXQgX2V4cF9kZWYgPSBleHAoXCJlX2RlZlwiKTtcbmxldCBfZXhwX2JvZHkgPSBleHAoXCJlX2JvZHlcIik7XG5sZXQgbGV0X2N0cl9leHBfY29sb3JpbmdfaWRzID1cbiAgX3BhdF9kZWZfYm9keV9sZXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfcGF0KSxcbiAgICBQaWVjZS5pZChfZXhwX2RlZiksXG4gICAgUGllY2UuaWQoX2V4cF9ib2R5KSxcbiAgKTtcbmxldCBsZXRfY3RyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJUaGUgb25seSB2YWx1ZSBmb3IgdGhlIFsqZGVmaW5pdGlvbipdKCVzKSB0aGF0IG1hdGNoZXMgdGhlIFsqcGF0dGVybipdKCVzKSBpcyB0aGUgKmAlc2AgY29uc3RydWN0b3IqLiBUaGUgWypkZWZpbml0aW9uKl0oJXMpIGNhbid0IGJlIHJlZmVyZW5jZWQgaW4gdGhlIFsqYm9keSpdKCVzKS5cIjtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtbc3BhY2UoKSwgX3BhdCwgc3BhY2UoKV0sIFtzcGFjZSgpLCBfZXhwX2RlZiwgc3BhY2UoKV1dKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBfZXhwX2JvZHksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEN0ciksXG4gICAgc3ludGFjdGljX2Zvcm06IGZvcm0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdCksIFtwYXQoXCJDXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2N0cl9leF0sXG4gIH07XG59O1xubGV0IF9wYXRfY29uID0gcGF0KFwicF9jb25cIik7XG5sZXQgX3BhdF9hcmcgPSBwYXQoXCJwX2FyZ1wiKTtcbmxldCBfZXhwX2RlZiA9IGV4cChcImVfZGVmXCIpO1xubGV0IGxldF9hcF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmNvbl9pZDogSWQudCwgfmFyZ19pZDogSWQudCwgfmRlZl9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PiBbXG4gIChQaWVjZS5pZChfcGF0X2NvbiksIGNvbl9pZCksXG4gIChQaWVjZS5pZChfcGF0X2FyZyksIGFyZ19pZCksXG4gIChQaWVjZS5pZChfZXhwX2RlZiksIGRlZl9pZCksXG5dO1xubGV0IGxldF9hcF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiVGhlIG9ubHkgdmFsdWVzIGZvciB0aGUgWypkZWZpbml0aW9uKl0oJXMpIHRoYXQgbWF0Y2ggdGhlICpwYXR0ZXJuKiBhcmUgdGhlIFsqY29uc3RydWN0b3IqXSglcykgd2hlcmUgdGhlICphcmd1bWVudCogbWF0Y2hlcyB0aGUgWyphcmd1bWVudCBwYXR0ZXJuKl0oJXMpLlwiO1xuICBsZXQgYXAgPSBta19hcF9wYXQoW1tfcGF0X2FyZ11dKTtcbiAgbGV0IGZvcm0gPSBbXG4gICAgbWtfbGV0KFtcbiAgICAgIFtzcGFjZSgpLCBfcGF0X2NvbiwgYXAsIHNwYWNlKCldLFxuICAgICAgW3NwYWNlKCksIF9leHBfZGVmLCBzcGFjZSgpXSxcbiAgICBdKSxcbiAgICBsaW5lYnJlYWsoKSxcbiAgICBleHAoXCJlX2JvZHlcIiksXG4gIF07XG4gIHtcbiAgICBpZDogTGV0RXhwKEFwKSxcbiAgICBzeW50YWN0aWNfZm9ybTogZm9ybSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoYXApLCBbcGF0KFwicF9jb25cIiksIG1rX2FwX3BhdChbW3BhdChcInBfYXJnXCIpXV0pXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbbGV0X2FwX2V4XSxcbiAgfTtcbn07XG5cbmxldCBsZXRzX2VtcHR5aG9sZTogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoRW1wdHlIb2xlKSxcbiAgZm9ybXM6IFtsZXRfZW1wdHlfaG9sZV9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19tdXRsaWhvbGU6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKE11bHRpSG9sZSksXG4gIGZvcm1zOiBbbGV0X211bHRpX2hvbGVfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfd2lsZDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoV2lsZCksXG4gIGZvcm1zOiBbbGV0X3dpbGRfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfaW50OiBncm91cCA9IHtpZDogTGV0RXhwKEludCksIGZvcm1zOiBbbGV0X2ludF9leHAsIGxldF9iYXNlX2V4cF19O1xuXG5sZXQgbGV0c19mbG9hdDogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoRmxvYXQpLFxuICBmb3JtczogW2xldF9mbG9hdF9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19ib29sOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChCb29sKSxcbiAgZm9ybXM6IFtsZXRfYm9vbF9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19zdHI6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFN0cmluZyksXG4gIGZvcm1zOiBbbGV0X3N0cl9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c190cml2OiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChUcml2KSxcbiAgZm9ybXM6IFtsZXRfdHJpdl9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19saXN0bGl0OiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChMaXN0TGl0KSxcbiAgZm9ybXM6IFtsZXRfbGlzdGxpdF9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19saXN0bmlsOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChMaXN0TmlsKSxcbiAgZm9ybXM6IFtsZXRfbGlzdG5pbF9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19jb25zOiBncm91cCA9IHtcbiAgaWQ6IExldEV4cChMaXN0Q29ucyksXG4gIGZvcm1zOiBbbGV0X2NvbnNfZXhwLCBsZXRfYmFzZV9leHBdLFxufTtcblxubGV0IGxldHNfdmFyOiBncm91cCA9IHtpZDogTGV0RXhwKFZhciksIGZvcm1zOiBbbGV0X3Zhcl9leHAsIGxldF9iYXNlX2V4cF19O1xuXG5sZXQgbGV0c190dXBsZTogZ3JvdXAgPSB7XG4gIGlkOiBMZXRFeHAoVHVwbGUpLFxuICBmb3JtczogW2xldF90dXBsZV9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c190dXBsZTI6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFR1cGxlMiksXG4gIGZvcm1zOiBbbGV0X3R1cGxlMl9leHAsIGxldF90dXBsZV9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c190dXBsZTM6IGdyb3VwID0ge1xuICBpZDogTGV0RXhwKFR1cGxlMyksXG4gIGZvcm1zOiBbbGV0X3R1cGxlM19leHAsIGxldF90dXBsZV9leHAsIGxldF9iYXNlX2V4cF0sXG59O1xuXG5sZXQgbGV0c19jdHI6IGdyb3VwID0ge2lkOiBMZXRFeHAoQ3RyKSwgZm9ybXM6IFtsZXRfY3RyX2V4cCwgbGV0X2Jhc2VfZXhwXX07XG5cbmxldCBsZXRzX2FwOiBncm91cCA9IHtpZDogTGV0RXhwKEFwKSwgZm9ybXM6IFtsZXRfYXBfZXhwLCBsZXRfYmFzZV9leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5vcGVuIEV4YW1wbGU7XG5cbmxldCBsaXN0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGludF9saXN0ID0ge1xuICAgIHN1Yl9pZDogTGlzdChJbnQpLFxuICAgIHRlcm06IG1rX2V4YW1wbGUoXCJbMSwgMl1cIiksXG4gICAgbWVzc2FnZTogXCJBIGxpc3Qgd2l0aCB0d28gZWxlbWVudHMsIDEgYW5kIDIuXCIsXG4gIH07XG4gIGxldCB0dXBsZV9saXN0ID0ge1xuICAgIHN1Yl9pZDogTGlzdChUdXBsZSksXG4gICAgdGVybTogbWtfZXhhbXBsZShcIlsoMSwgdHJ1ZSksICgyLCBmYWxzZSldXCIpLFxuICAgIG1lc3NhZ2U6IFwiQSBsaXN0IHdpdGggdHdvIGVsZW1lbnRzLCBhIHR1cGxlIHdpdGggMSBhbmQgdHJ1ZSBhbmQgYSB0dXBsZSB3aXRoIDIgYW5kIGZhbHNlLlwiLFxuICB9O1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkxpc3QgbGl0ZXJhbCB3aXRoICVzIGVsZW1lbnQocykuXCI7XG4gIHtcbiAgICBpZDogTGlzdEV4cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW1xuICAgICAgbWtfbGlzdF9leHAoW1tleHAoXCJlMVwiKSwgY29tbWFfZXhwKCksIHNwYWNlKCksIGV4cChcIi4uLlwiKV1dKSxcbiAgICBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfbGlzdCwgdHVwbGVfbGlzdF0sXG4gIH07XG59O1xuXG5sZXQgY29uczFfZXggPSB7XG4gIHN1Yl9pZDogTGlzdChDb25zMSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxOjpbXVwiKSxcbiAgbWVzc2FnZTogXCJBIHNpbmdsZSBlbGVtZW50IGxpc3Qgb2YgMS5cIixcbn07XG5sZXQgY29uczJfZXggPSB7XG4gIHN1Yl9pZDogTGlzdChDb25zMiksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0cnVlOjpmYWxzZTo6W11cIiksXG4gIG1lc3NhZ2U6IFwiQSBsaXN0IHdpdGggdHdvIGVsZW1lbnRzLCB0cnVlIGFuZCBmYWxzZS5cIixcbn07XG5sZXQgX2V4cF9oZCA9IGV4cChcImVfaGRcIik7XG5sZXQgX2V4cF90bCA9IGV4cChcImVfdGxcIik7XG5sZXQgY29uc19leHBfY29sb3JpbmdfaWRzID0gKH5oZF9pZDogSWQudCwgfnRsX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfaGQpLCBoZF9pZCksXG4gIChQaWVjZS5pZChfZXhwX3RsKSwgdGxfaWQpLFxuXTtcbmxldCBjb25zX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJDcmVhdGVzIGEgbGlzdCB3aXRoIFsqaGVhZCBlbGVtZW50Kl0oJXMpIGFuZCBbKnRhaWwgZWxlbWVudCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBDb25zRXhwLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cF9oZCwgY29uc19leHAoKSwgX2V4cF90bF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2NvbnMxX2V4LCBjb25zMl9leF0sXG4gIH07XG59O1xuXG5sZXQgX2V4cF94cyA9IGV4cChcInhzXCIpO1xubGV0IF9leHBfeXMgPSBleHAoXCJ5c1wiKTtcbmxldCBjb25jYXRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH54c19pZDogSWQudCwgfnlzX2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+IFtcbiAgKFBpZWNlLmlkKF9leHBfeHMpLCB4c19pZCksXG4gIChQaWVjZS5pZChfZXhwX3lzKSwgeXNfaWQpLFxuXTtcbmxldCBsaXN0X2NvbmNhdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiQ3JlYXRlcyBhIGxpc3QgYnkgY29tYmluaW5nIHRoZSBbKmZpcnN0IG9wZXJhbmQqXSglcykgYW5kIHRoZSBbKnNlY29uZCBvcGVyYW5kKl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IExpc3RDb25jYXRFeHAsXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwX3hzLCBzcGFjZSgpLCBsaXN0X2NvbmNhdF9leHAoKSwgc3BhY2UoKSwgX2V4cF95c10sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbGlzdGxpdHM6IGdyb3VwID0ge2lkOiBMaXN0RXhwLCBmb3JtczogW2xpc3RfZXhwXX07XG5cbmxldCBsaXN0Y29uczogZ3JvdXAgPSB7aWQ6IENvbnNFeHAsIGZvcm1zOiBbY29uc19leHBdfTtcblxubGV0IGxpc3Rjb25jYXRzOiBncm91cCA9IHtpZDogTGlzdENvbmNhdEV4cCwgZm9ybXM6IFtsaXN0X2NvbmNhdF9leHBdfTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBFeGFtcGxlO1xub3BlbiBFeHBsYWluVGhpc0Zvcm07XG5cbmxldCBsaXN0bGl0X3BhdDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJPbmx5IGV4cHJlc3Npb25zIHRoYXQgYXJlIGxpc3RzIHdpdGggJXMtZWxlbWVudHMgd2hlcmUgZWFjaCBlbGVtZW50IG1hdGNoZXMgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBwYXR0ZXJuIG1hdGNoIHRoaXMgKmxpc3QgbGl0ZXJhbCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBMaXN0TGl0UGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbXG4gICAgICBta19saXN0X3BhdChbW3BhdChcInAxXCIpLCBjb21tYV9wYXQoKSwgc3BhY2UoKSwgcGF0KFwiLi4uXCIpXV0pLFxuICAgIF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IGxpc3RuaWxfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgZW1wdHkgbGlzdHMgYFtdYCBtYXRjaCB0aGUgKmVtcHR5IGxpc3QgYFtdYCBwYXR0ZXJuKi5cIjtcbiAge1xuICAgIGlkOiBMaXN0TmlsUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbcGF0KFwiW11cIildLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcblxubGV0IF9wYXRfaGQgPSBwYXQoXCJwX2hkXCIpO1xubGV0IF9wYXRfdGwgPSBwYXQoXCJwX3RsXCIpO1xubGV0IGNvbnNfYmFzZV9wYXRfY29sb3JpbmdfaWRzID1cbiAgICAofmhkX2lkOiBJZC50LCB+dGxfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9oZCksIGhkX2lkKSxcbiAgKFBpZWNlLmlkKF9wYXRfdGwpLCB0bF9pZCksXG5dO1xubGV0IGNvbnNfYmFzZV9wYXQ6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiT25seSBleHByZXNzaW9ucyB0aGF0IGFyZSBub24tZW1wdHkgbGlzdHMgd2l0aCAqaGVhZCBlbGVtZW50KiBtYXRjaGluZyB0aGUgWypoZWFkIGVsZW1lbnQgcGF0dGVybipdKCVzKSBhbmQgKnRhaWwqIGxpc3QgbWF0Y2hpbmcgdGhlIFsqdGFpbCBwYXR0ZXJuKl0oJXMpIG1hdGNoIHRoaXMgbm9uLWVtcHR5IGxpc3QgcGF0dGVybi5cIjtcbiAge1xuICAgIGlkOiBDb25zUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdF9oZCwgY29uc19wYXQoKSwgX3BhdF90bF0sXG4gICAgZXhwYW5kYWJsZV9pZDogU29tZSgoUGllY2UuaWQoX3BhdF90bCksIFtwYXQoXCJwX3RsXCIpXSkpLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5sZXQgX3BhdF9mc3QgPSBwYXQoXCJwX2ZzdFwiKTtcbmxldCBfcGF0X3NuZCA9IHBhdChcInBfc25kXCIpO1xubGV0IF9wYXRfdGwgPSBwYXQoXCJwX3RsXCIpO1xubGV0IGNvbnMyX3BhdF9jb2xvcmluZ19pZHMgPVxuICAgICh+ZnN0X2lkOiBJZC50LCB+c25kX2lkOiBJZC50LCB+dGxfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3BhdF9mc3QpLCBmc3RfaWQpLFxuICAoUGllY2UuaWQoX3BhdF9zbmQpLCBzbmRfaWQpLFxuICAoUGllY2UuaWQoX3BhdF90bCksIHRsX2lkKSxcbl07XG5sZXQgY29uczJfcGF0OiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIk9ubHkgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm9uLWVtcHR5IGxpc3RzIHdpdGggKmZpcnN0IGVsZW1lbnQqIG1hdGNoaW5nIHRoZSBbKmZpcnN0IGVsZW1lbnQgcGF0dGVybipdKCVzKSwgKnNlY29uZCBlbGVtZW50KiBtYXRjaGluZyB0aGUgWypzZWNvbmQgZWxlbWVudCBwYXR0ZXJuKl0oJXMpLCBhbmQgKnRhaWwqIGxpc3QgbWF0Y2hpbmcgdGhlIFsqdGFpbCBwYXR0ZXJuKl0oJXMpIG1hdGNoIHRoaXMgbm9uLWVtcHR5IGxpc3QgcGF0dGVybi5cIjtcbiAgbGV0IGMgPSBjb25zX3BhdCgpO1xuICB7XG4gICAgaWQ6IENvbnMyUGF0LFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX3BhdF9mc3QsIGNvbnNfcGF0KCksIF9wYXRfc25kLCBjLCBfcGF0X3RsXSxcbiAgICBleHBhbmRhYmxlX2lkOlxuICAgICAgU29tZSgoUGllY2UuaWQoYyksIFtwYXQoXCJwX3NuZFwiKSwgY29uc19wYXQoKSwgcGF0KFwicF90bFwiKV0pKSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgbGlzdGxpdDogZ3JvdXAgPSB7aWQ6IExpc3RMaXRQYXQsIGZvcm1zOiBbbGlzdGxpdF9wYXRdfTtcblxubGV0IGxpc3RuaWw6IGdyb3VwID0ge2lkOiBMaXN0TmlsUGF0LCBmb3JtczogW2xpc3RuaWxfcGF0XX07XG5cbmxldCBjb25zOiBncm91cCA9IHtpZDogQ29uc1BhdCwgZm9ybXM6IFtjb25zX2Jhc2VfcGF0XX07XG5cbmxldCBjb25zMjogZ3JvdXAgPSB7aWQ6IENvbnMyUGF0LCBmb3JtczogW2NvbnMyX3BhdCwgY29uc19iYXNlX3BhdF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IF90eXBfZWxlbSA9IHR5cChcInR5X2VsZW1cIik7XG4vLyBUT0RPIFN5bnRhY3RpYyBmb3JtIGNvbG9yaW5nIGxvb2tzIG9mZiBmb3IgdGhpcyBvbmUgYW5kIG90aGVyIHR5cGVzIG9uZXMuLi5cbmxldCBsaXN0X3R5cF9jb2xvcmluZ19pZHMgPSAofmVsZW1faWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoUGllY2UuaWQoX3R5cF9lbGVtKSwgZWxlbV9pZCksXG5dO1xubGV0IGxpc3RfdHlwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlRoZSBsaXN0IHR5cGUgY2xhc3NpZmllcyBsaXN0cyB3aXRoIGVsZW1lbnRzIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgWyplbGVtZW50IHR5cGUqXSglcykuXCI7XG4gIHtcbiAgICBpZDogTGlzdFR5cCxcbiAgICBzeW50YWN0aWNfZm9ybTogW21rX2xpc3RfdHlwKFtbX3R5cF9lbGVtXV0pXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbXSxcbiAgfTtcbn07XG5cbmxldCBsaXN0OiBncm91cCA9IHtpZDogTGlzdFR5cCwgZm9ybXM6IFtsaXN0X3R5cF19O1xuIiwib3BlbiBIYXozbGNvcmU7XG5vcGVuIEV4YW1wbGU7XG5vcGVuIEV4cGxhaW5UaGlzRm9ybTtcblxubGV0IGludF91bmFyeV9taW51c19leCA9IHtcbiAgc3ViX2lkOiBJbnRVbmFyeU1pbnVzLFxuICB0ZXJtOiBta19leGFtcGxlKFwiLTFcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIDEgaXMgbmVnYXRlZC5cIixcbn07XG5sZXQgaW50X3BsdXNfZXggPSB7XG4gIHN1Yl9pZDogSW50KFBsdXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSArIDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBhZGRlZCB0byAyIGV2YWx1dGVzIHRvIDMuXCIsXG59O1xubGV0IGludF9taW51c19leCA9IHtcbiAgc3ViX2lkOiBJbnQoTWludXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMiAtIDFcIiksXG4gIG1lc3NhZ2U6IFwiMiBtaW51cyAxIGV2YWx1dGVzIHRvIDEuXCIsXG59O1xubGV0IGludF90aW1lc19leCA9IHtcbiAgc3ViX2lkOiBJbnQoVGltZXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSAqIDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBtdWx0aXBsaWVkIGJlIDIgZXZhbHV0ZXMgdG8gMi5cIixcbn07XG5sZXQgaW50X3Bvd2VyX2V4ID0ge1xuICBzdWJfaWQ6IEludChQb3dlciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIyICoqIDRcIiksXG4gIG1lc3NhZ2U6IFwiMiByYWlzZWQgdG8gNCBldmFsdWF0ZXMgdG8gMTZcIixcbn07XG5sZXQgaW50X2RpdmlkZV9leCA9IHtcbiAgc3ViX2lkOiBJbnQoRGl2aWRlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjYgLyAzXCIpLFxuICBtZXNzYWdlOiBcIjYgZGl2aWRlZCBieSAzIGV2YWx1dGVzIHRvIDIuXCIsXG59O1xubGV0IGludF9sdDFfZXggPSB7XG4gIHN1Yl9pZDogSW50KExlc3NUaGFuVHJ1ZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxIDwgMlwiKSxcbiAgbWVzc2FnZTogXCIxIGlzIGxlc3MgdGhhbiAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfbHQyX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhbkZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQgPCAzXCIpLFxuICBtZXNzYWdlOiBcIjQgaXMgbGVzcyBub3QgbGVzcyB0aGFuIDMsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgaW50X2x0ZTFfZXggPSB7XG4gIHN1Yl9pZDogSW50KExlc3NUaGFuRXF1YWxMZXNzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPD0gMlwiKSxcbiAgbWVzc2FnZTogXCIxIGlzIGxlc3MgdGhhbiAyLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfbHRlMl9leCA9IHtcbiAgc3ViX2lkOiBJbnQoTGVzc1RoYW5FcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQgPD0gM1wiKSxcbiAgbWVzc2FnZTogXCI0IGlzIGxlc3Mgbm90IGxlc3MgdGhhbiBvciBlcXVhbCB0byAzLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGludF9sdGUzX2V4ID0ge1xuICBzdWJfaWQ6IEludChMZXNzVGhhbkVxdWFsRXF1YWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNSA8PSA1XCIpLFxuICBtZXNzYWdlOiBcIjUgaXMgZXF1YWwgdG8gNSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGludF9ndDFfZXggPSB7XG4gIHN1Yl9pZDogSW50KEdyZWF0ZXJUaGFuRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSA+IDJcIiksXG4gIG1lc3NhZ2U6IFwiMSBpcyBub3QgZ3JlYXRlciB0aGFuIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgaW50X2d0Ml9leCA9IHtcbiAgc3ViX2lkOiBJbnQoR3JlYXRlclRoYW5UcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQgPiAzXCIpLFxuICBtZXNzYWdlOiBcIjQgaXMgZ3JlYXRlciB0aGFuIDMsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfZ3RlMV9leCA9IHtcbiAgc3ViX2lkOiBJbnQoR3JlYXRlclRoYW5FcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPj0gMlwiKSxcbiAgbWVzc2FnZTogXCIxIGlzIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBpbnRfZ3RlMl9leCA9IHtcbiAgc3ViX2lkOiBJbnQoR3JlYXRlclRoYW5FcXVhbEdyZWF0ZXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNCA+PSAzXCIpLFxuICBtZXNzYWdlOiBcIjQgaXMgZ3JlYXRlciB0aGFuIDMsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfZ3RlM19leCA9IHtcbiAgc3ViX2lkOiBJbnQoR3JlYXRlclRoYW5FcXVhbEVxdWFsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjUgPj0gNVwiKSxcbiAgbWVzc2FnZTogXCI1IGlzIGVxdWFsIHRvIDUsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBpbnRfZXExX2V4ID0ge1xuICBzdWJfaWQ6IEludChFcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEgPT0gMlwiKSxcbiAgbWVzc2FnZTogXCIxIGRvZXMgbm90IGVxdWFsIDIsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byBmYWxzZS5cIixcbn07XG5sZXQgaW50X2VxMl9leCA9IHtcbiAgc3ViX2lkOiBJbnQoRXF1YWxUcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjMgPT0gM1wiKSxcbiAgbWVzc2FnZTogXCIzIGlzIGVxdWFsIHRvIDMsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9wbHVzX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KFBsdXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4gKy4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuIGFkZGVkIHRvIDIuMSBldmFsdXRlcyB0byAzLjFcIixcbn07XG5sZXQgZmxvYXRfbWludXNfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTWludXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMi4gLS4gMS4xXCIpLFxuICBtZXNzYWdlOiBcIjIuIG1pbnVzIDEuMSBldmFsdXRlcyB0byAwLjlcIixcbn07XG5sZXQgZmxvYXRfdGltZXNfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoVGltZXMpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4gKi4gMi4yXCIpLFxuICBtZXNzYWdlOiBcIjEgbXVsdGlwbGllZCBiZSAyLjIgZXZhbHV0ZXMgdG8gMi4yLlwiLFxufTtcbmxldCBmbG9hdF9wb3dlcl9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChQb3dlciksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIyLiAqKi4gNC5cIiksXG4gIG1lc3NhZ2U6IFwiMi4gcmFpc2VkIHRvIDQuIGV2YWx1YXRlcyB0byAxNi5cIixcbn07XG5sZXQgZmxvYXRfZGl2aWRlX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KERpdmlkZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0LjIgLy4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjQuMiBkaXZpZGVkIGJ5IDIuMSBldmFsdXRlcyB0byAyLlwiLFxufTtcbmxldCBmbG9hdF9sdDFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTGVzc1RoYW5UcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuIDwuIDIuMVwiKSxcbiAgbWVzc2FnZTogXCIxLiBpcyBsZXNzIHRoYW4gMi4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9sdDJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTGVzc1RoYW5GYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCI0LiA8LiAzLjFcIiksXG4gIG1lc3NhZ2U6IFwiNC4gaXMgbGVzcyBub3QgbGVzcyB0aGFuIDMuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9sdGUxX2V4ID0ge1xuICBzdWJfaWQ6IEZsb2F0KExlc3NUaGFuRXF1YWxMZXNzKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuIDw9LiAyLjFcIiksXG4gIG1lc3NhZ2U6IFwiMS4gaXMgbGVzcyB0aGFuIDIuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHV0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfbHRlMl9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChMZXNzVGhhbkVxdWFsRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4gPD0uIDMuMVwiKSxcbiAgbWVzc2FnZTogXCI0LiBpcyBsZXNzIG5vdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMy4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGZsb2F0X2x0ZTNfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoTGVzc1RoYW5FcXVhbEVxdWFsKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjUuNSA8PS4gNS41XCIpLFxuICBtZXNzYWdlOiBcIjUuNSBpcyBlcXVhbCB0byA1LjUsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBmbG9hdF9ndDFfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5GYWxzZSksXG4gIHRlcm06IG1rX2V4YW1wbGUoXCIxLjEgPi4gMi4xXCIpLFxuICBtZXNzYWdlOiBcIjEuMSBpcyBub3QgZ3JlYXRlciB0aGFuIDIuMSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9ndDJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5UcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjQuID4uIDMuMVwiKSxcbiAgbWVzc2FnZTogXCI0LiBpcyBncmVhdGVyIHRoYW4gMy4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfZ3RlMV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChHcmVhdGVyVGhhbkVxdWFsRmFsc2UpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMS4xID49LiAyLjFcIiksXG4gIG1lc3NhZ2U6IFwiMS4xIGlzIG5vdCBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMi4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGZsb2F0X2d0ZTJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoR3JlYXRlclRoYW5FcXVhbEdyZWF0ZXIpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNC4gPj0uIDMuMVwiKSxcbiAgbWVzc2FnZTogXCI0LiBpcyBncmVhdGVyIHRoYW4gMy4xLCBzbyB0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cIixcbn07XG5sZXQgZmxvYXRfZ3RlM19leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChHcmVhdGVyVGhhbkVxdWFsRXF1YWwpLFxuICB0ZXJtOiBta19leGFtcGxlKFwiNS41ID49LiA1LjVcIiksXG4gIG1lc3NhZ2U6IFwiNS41IGlzIGVxdWFsIHRvIDUuNSwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGZsb2F0X2VxMV9leCA9IHtcbiAgc3ViX2lkOiBGbG9hdChFcXVhbEZhbHNlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjEuID09LiAyLlwiKSxcbiAgbWVzc2FnZTogXCIxLiBkb2VzIG5vdCBlcXVhbCAyLiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBmbG9hdF9lcTJfZXggPSB7XG4gIHN1Yl9pZDogRmxvYXQoRXF1YWxUcnVlKSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjMuMSA9PS4gMy4xXCIpLFxuICBtZXNzYWdlOiBcIjMuMSBpcyBlcXVhbCB0byAzLjEsIHNvIHRoZSBleHByZXNzaW9uIGV2YWx1YXRlcyB0byB0cnVlLlwiLFxufTtcbmxldCBib29sX2FuZDFfZXggPSB7XG4gIHN1Yl9pZDogQW5kRmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJ0cnVlICYmIGZhbHNlXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IG9wZXJhbmQgaXMgdHJ1ZSwgc28gZXZhbHVhdGUgdGhlIHJpZ2h0IG9wZXJhbmQuIFNpbmNlIHRoZSByaWdodCBvcGVyYW5kIGlzIGZhbHNlLCB0aGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGJvb2xfYW5kMl9leCA9IHtcbiAgc3ViX2lkOiBBbmRUcnVlLFxuICB0ZXJtOiBta19leGFtcGxlKFwiMSA8IDIgJiYgMyA8IDRcIiksXG4gIG1lc3NhZ2U6IFwiVGhlIGxlZnQgb3BlcmFuZCBldmFsdWF0ZXMgdG8gdHJ1ZSwgc28gZXZhbHVhdGUgdGhlIHJpZ2h0IG9wZXJhbmQuIFNpbmNlIHRoZSByaWdodCBvcGVyYW5kIGFsc28gZXZhbHV0ZXMgdG8gdHJ1ZSwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IGJvb2xfb3IxX2V4ID0ge1xuICBzdWJfaWQ6IE9yRmFsc2UsXG4gIHRlcm06IG1rX2V4YW1wbGUoXCJmYWxzZSBcXFxcLyAyIDwgMVwiKSxcbiAgbWVzc2FnZTogXCJUaGUgbGVmdCBvcGVyYW5kIGV2YWx1YXRlcyB0byBmYWxzZSwgc28gZXZhbHVhdGUgdGhlIHJpZ2h0IG9wZXJhbmQuIFNpbmNlIHRoZSByaWdodCBvcGVyYW5kIGFsc28gZXZhbHVhdGVzIHRvIGZhbHNlLCB0aGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gZmFsc2UuXCIsXG59O1xubGV0IGJvb2xfb3IyX2V4ID0ge1xuICBzdWJfaWQ6IE9yVHJ1ZSxcbiAgdGVybTogbWtfZXhhbXBsZShcIjMgPCA0IFxcXFwvIGZhbHNlXCIpLFxuICBtZXNzYWdlOiBcIlRoZSBsZWZ0IG9wZXJhbmQgZXZhbHV0ZXMgdG8gdHJ1ZSwgc28gdGhlIHJpZ2h0IG9wZXJhbmQgaXMgbm90IGV2YWx1YXRlZC4gVGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IHN0cl9lcTFfZXggPSB7XG4gIHN1Yl9pZDogU3RyaW5nRXF1YWxGYWxzZSxcbiAgdGVybTogbWtfZXhhbXBsZShcIlxcXCJhYmNcXFwiICQ9PSBcXFwieHl6XFxcIlwiKSxcbiAgbWVzc2FnZTogXCJcXFwiYWJjXFxcIiBkb2VzIG5vdCBlcXVhbCBcXFwieHl6XFxcIiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGZhbHNlLlwiLFxufTtcbmxldCBzdHJfZXEyX2V4ID0ge1xuICBzdWJfaWQ6IFN0cmluZ0VxdWFsVHJ1ZSxcbiAgdGVybTogbWtfZXhhbXBsZShcIlxcXCJhYmNcXFwiICQ9PSBcXFwiYWJjXFxcIlwiKSxcbiAgbWVzc2FnZTogXCJcXFwiYWJjXFxcIiBpcyBlcXVhbCB0byBcXFwiYWJjXFxcIiwgc28gdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIHRydWUuXCIsXG59O1xubGV0IF91bm9wX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgIChzZl9leHBfaWQ6IElkLnQsIH5leHBfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT4gW1xuICAoc2ZfZXhwX2lkLCBleHBfaWQpLFxuXTtcbmxldCBfZXhwID0gZXhwKFwiZVwiKTtcbmxldCBib29sX3VuYXJ5X25vdF9leHBfY29sb3JpbmdfaWRzID0gKH5leHBfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX3Vub3BfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfZXhwKSwgfmV4cF9pZCk7XG5sZXQgYm9vbF91bmFyeV9ub3RfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIlBlcmZvcm1zIGJvb2xlYW4gbmVnYXRpb24gb2YgdGhlIFsqb3BlcmFuZCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBVbk9wRXhwKEJvb2woTm90KSksXG4gICAgc3ludGFjdGljX2Zvcm06IFt1bmFyeV9ub3QoKSwgX2V4cF0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xubGV0IF9leHAgPSBleHAoXCJlXCIpO1xubGV0IGludF91bmFyeV9taW51c19leHBfY29sb3JpbmdfaWRzID0gKH5leHBfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX3Vub3BfZXhwX2NvbG9yaW5nX2lkcyhQaWVjZS5pZChfZXhwKSwgfmV4cF9pZCk7XG5sZXQgaW50X3VuYXJ5X21pbnVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJQZXJmb3JtcyBpbnRlZ2VyIG5lZ2F0aW9uIG9mIHRoZSBbKm9wZXJhbmQqXSglcykuXCI7XG4gIHtcbiAgICBpZDogVW5PcEV4cChJbnQoTWludXMpKSxcbiAgICBzeW50YWN0aWNfZm9ybTogW3VuYXJ5X21pbnVzKCksIF9leHBdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfdW5hcnlfbWludXNfZXhdLFxuICB9O1xufTtcbmxldCBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKHNmX2xlZnRfaWQ6IElkLnQsIHNmX3JpZ2h0X2lkOiBJZC50LCB+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KVxuICAgIDogbGlzdCgoSWQudCwgSWQudCkpID0+IHtcbiAgWyhzZl9sZWZ0X2lkLCBsZWZ0X2lkKSwgKHNmX3JpZ2h0X2lkLCByaWdodF9pZCldO1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X3BsdXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X3BsdXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBzdW0gb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChJbnQoUGx1cykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHBsdXMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfcGx1c19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBpbnRfbWludXNfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X21pbnVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgZGlmZmVyZW5jZSBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChNaW51cykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIG1pbnVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X21pbnVzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF90aW1lc19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfdGltZXNfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBwcm9kdWN0IG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KFRpbWVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgdGltZXMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfdGltZXNfZXhdLFxuICB9O1xufTtcbmxldCBpbnRfcG93ZXJfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X3Bvd2VyX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcmVzdWx0IG9mIHJhaXNpbmcgWypsZWZ0Kl0oJXMpIHJvIHRoZSBbKnJpZ2h0Kl0oJXMpLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEludChQb3dlcikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIHBvd2VyKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbaW50X3Bvd2VyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X2RpdmlkZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHF1b3RpZW50IG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KERpdmlkZSkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGRpdmlkZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9kaXZpZGVfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X2x0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9sdF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGxlc3MgdGhhbiB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KExlc3NUaGFuKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgbHQoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfbHQxX2V4LCBpbnRfbHQyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9sdGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X2x0ZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KExlc3NUaGFuT3JFcXVhbCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGx0ZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9sdGUxX2V4LCBpbnRfbHRlMl9leCwgaW50X2x0ZTNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X2d0X2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9ndF9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGdyZWF0ZXIgdGhhbiB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KEdyZWF0ZXJUaGFuKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZ3QoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtpbnRfZ3QxX2V4LCBpbnRfZ3QyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGludF9ndGVfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgaW50X2d0ZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KEdyZWF0ZXJUaGFuT3JFcXVhbCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGd0ZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9ndGUxX2V4LCBpbnRfZ3RlMl9leCwgaW50X2d0ZTNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X2VxX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGludF9lcV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGVxdWFscygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2ludF9lcTFfZXgsIGludF9lcTJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgaW50X25lcV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBpbnRfbmVxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgbm90IGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoSW50KE5vdEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIG5vdF9lcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfcGx1c19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9wbHVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgc3VtIG9mIHRoZSBbKmxlZnQqXSglcykgYW5kIFsqcmlnaHQqXSglcykgb3BlcmFuZHMuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoUGx1cykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZwbHVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfcGx1c19leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9taW51c19leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9taW51c19leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhlIFsqbGVmdCpdKCVzKSBhbmQgWypyaWdodCpdKCVzKSBvcGVyYW5kcy5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChNaW51cykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZtaW51cygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X21pbnVzX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X3RpbWVzX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJHaXZlcyB0aGUgcHJvZHVjdCBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KFRpbWVzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZnRpbWVzKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfdGltZXNfZXhdLFxuICB9O1xufTtcbmxldCBmbG9hdF9wb3dlcl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9wb3dlcl9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiR2l2ZXMgdGhlIHJlc3VsdCBvZiByYWlzaW5nIFsqbGVmdCpdKCVzKSB0byB0aGUgWypyaWdodCpdKCVzKS5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChGbG9hdChQb3dlcikpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZwb3dlcigpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X3Bvd2VyX2V4XSxcbiAgfTtcbn07XG5sZXQgX2V4cDEgPSBleHAoXCJlMVwiKTtcbmxldCBfZXhwMiA9IGV4cChcImUyXCIpO1xubGV0IGZsb2F0X2RpdmlkZV9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBmbG9hdF9kaXZpZGVfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIkdpdmVzIHRoZSBxdW90aWVudCBvZiB0aGUgWypsZWZ0Kl0oJXMpIGFuZCBbKnJpZ2h0Kl0oJXMpIG9wZXJhbmRzLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KERpdmlkZSkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZkaXZpZGUoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9kaXZpZGVfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfbHRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfbHRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBsZXNzIHRoYW4gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KExlc3NUaGFuKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZmx0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfbHQxX2V4LCBmbG9hdF9sdDJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfbHRlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2x0ZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoTGVzc1RoYW5PckVxdWFsKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZmx0ZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2x0ZTFfZXgsIGZsb2F0X2x0ZTJfZXgsIGZsb2F0X2x0ZTNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfZ3RfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfZ3RfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBncmVhdGVyIHRoYW4gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KEdyZWF0ZXJUaGFuKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZmd0KCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbZmxvYXRfZ3QxX2V4LCBmbG9hdF9ndDJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfZ3RlX2V4cF9jb2xvcmluZ19pZHMgPVxuICAgICh+bGVmdF9pZDogSWQudCwgfnJpZ2h0X2lkOiBJZC50KTogbGlzdCgoSWQudCwgSWQudCkpID0+XG4gIF9iaW5vcF9leHBfY29sb3JpbmdfaWRzKFxuICAgIFBpZWNlLmlkKF9leHAxKSxcbiAgICBQaWVjZS5pZChfZXhwMiksXG4gICAgfmxlZnRfaWQsXG4gICAgfnJpZ2h0X2lkLFxuICApO1xubGV0IGZsb2F0X2d0ZV9leHA6IGZvcm0gPSB7XG4gIGxldCBleHBsYW5hdGlvbiA9IFwiSWYgdGhlIFsqbGVmdCBvcGVyYW5kKl0oJXMpIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoR3JlYXRlclRoYW5PckVxdWFsKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZmd0ZSgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Zsb2F0X2d0ZTFfZXgsIGZsb2F0X2d0ZTJfZXgsIGZsb2F0X2d0ZTNfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgZmxvYXRfZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfZXFfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBpcyBlcXVhbCB0byB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLCBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlcyB0byBgZmFsc2VgLlwiO1xuICB7XG4gICAgaWQ6IEJpbk9wRXhwKEZsb2F0KEVxdWFscykpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGZlcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtmbG9hdF9lcTFfZXgsIGZsb2F0X2VxMl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBmbG9hdF9uZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgZmxvYXRfbmVxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgbm90IGVxdWFsIHRvIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcyksIGV2YWx1YXRlcyB0byBgdHJ1ZWAuIE90aGVyd2lzZSwgZXZhbHVhdGVzIHRvIGBmYWxzZWAuXCI7XG4gIHtcbiAgICBpZDogQmluT3BFeHAoRmxvYXQoTm90RXF1YWxzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgZm5vdF9lcXVhbHMoKSwgc3BhY2UoKSwgX2V4cDJdLFxuICAgIGV4cGFuZGFibGVfaWQ6IE5vbmUsXG4gICAgZXhwbGFuYXRpb24sXG4gICAgZXhhbXBsZXM6IFtdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgYm9vbF9hbmRfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgYm9vbF9hbmRfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBldmFsdWF0ZXMgdG8gYHRydWVgLCBldmFsdWF0ZSB0aGUgWypyaWdodCBvcGVyYW5kKl0oJXMpLiBJZiB0aGF0IGFsc28gZXZhbHVhdGVzIHRvIGB0cnVlYCwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChCb29sKEFuZCkpLFxuICAgIHN5bnRhY3RpY19mb3JtOiBbX2V4cDEsIHNwYWNlKCksIGxvZ2ljYWxfYW5kKCksIHNwYWNlKCksIF9leHAyXSxcbiAgICBleHBhbmRhYmxlX2lkOiBOb25lLFxuICAgIGV4cGxhbmF0aW9uLFxuICAgIGV4YW1wbGVzOiBbYm9vbF9hbmQxX2V4LCBib29sX2FuZDJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgYm9vbF9vcl9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbi8vIFRPRE8gU29tZSBvZiB0aGUgZXhhbXBsZXMgYXJlIGV2YWx1YXRpbmcgd2VpcmRseSBhbmQgY2FuJ3QgdHlwZSB0aGUgfHwgaW4gdGhlIGVkaXRvclxubGV0IGJvb2xfb3JfZXhwOiBmb3JtID0ge1xuICBsZXQgZXhwbGFuYXRpb24gPSBcIklmIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBldmFsdWF0ZXMgdG8gYHRydWVgLCB0aGUgd2hvbGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYHRydWVgLiBPdGhlcndpc2UsIGV2YWx1YXRlIHRoZSBbKnJpZ2h0IG9wZXJhbmQqXSglcykuIElmIHRoYXQgZXZhbHVhdGVzIHRvIGB0cnVlYCwgdGhlIHdob2xlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChCb29sKE9yKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgbG9naWNhbF9vcigpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW2Jvb2xfb3IxX2V4LCBib29sX29yMl9leF0sXG4gIH07XG59O1xubGV0IF9leHAxID0gZXhwKFwiZTFcIik7XG5sZXQgX2V4cDIgPSBleHAoXCJlMlwiKTtcbmxldCBzdHJfZXFfZXhwX2NvbG9yaW5nX2lkcyA9XG4gICAgKH5sZWZ0X2lkOiBJZC50LCB+cmlnaHRfaWQ6IElkLnQpOiBsaXN0KChJZC50LCBJZC50KSkgPT5cbiAgX2Jpbm9wX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgUGllY2UuaWQoX2V4cDEpLFxuICAgIFBpZWNlLmlkKF9leHAyKSxcbiAgICB+bGVmdF9pZCxcbiAgICB+cmlnaHRfaWQsXG4gICk7XG5sZXQgc3RyX2VxX2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJJZiB0aGUgWypsZWZ0IG9wZXJhbmQqXSglcykgaXMgZXF1YWwgdG8gdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSwgZXZhbHVhdGVzIHRvIGB0cnVlYC4gT3RoZXJ3aXNlLCBldmFsdWF0ZXMgdG8gYGZhbHNlYC5cIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChTdHJpbmcoRXF1YWxzKSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgc2VxdWFscygpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW3N0cl9lcTFfZXgsIHN0cl9lcTJfZXhdLFxuICB9O1xufTtcbmxldCBfZXhwMSA9IGV4cChcImUxXCIpO1xubGV0IF9leHAyID0gZXhwKFwiZTJcIik7XG5sZXQgc3RyX2NvbmNhdF9leHBfY29sb3JpbmdfaWRzID1cbiAgICAofmxlZnRfaWQ6IElkLnQsIH5yaWdodF9pZDogSWQudCk6IGxpc3QoKElkLnQsIElkLnQpKSA9PlxuICBfYmlub3BfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICBQaWVjZS5pZChfZXhwMSksXG4gICAgUGllY2UuaWQoX2V4cDIpLFxuICAgIH5sZWZ0X2lkLFxuICAgIH5yaWdodF9pZCxcbiAgKTtcbmxldCBzdHJfY29uY2F0X2V4cDogZm9ybSA9IHtcbiAgbGV0IGV4cGxhbmF0aW9uID0gXCJSZXR1cm5zIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBbKmxlZnQgb3BlcmFuZCpdKCVzKSBhbmQgdGhlIFsqcmlnaHQgb3BlcmFuZCpdKCVzKSxcIjtcbiAge1xuICAgIGlkOiBCaW5PcEV4cChTdHJpbmcoQ29uY2F0KSksXG4gICAgc3ludGFjdGljX2Zvcm06IFtfZXhwMSwgc3BhY2UoKSwgc2NvbmNhdCgpLCBzcGFjZSgpLCBfZXhwMl0sXG4gICAgZXhwYW5kYWJsZV9pZDogTm9uZSxcbiAgICBleHBsYW5hdGlvbixcbiAgICBleGFtcGxlczogW10sXG4gIH07XG59O1xuXG5sZXQgYm9vbF91bl9ub3Q6IGdyb3VwID0ge1xuICBpZDogVW5PcEV4cChCb29sKE5vdCkpLFxuICBmb3JtczogW2Jvb2xfdW5hcnlfbm90X2V4cF0sXG59O1xuXG5sZXQgaW50X3VuX21pbnVzOiBncm91cCA9IHtcbiAgaWQ6IFVuT3BFeHAoSW50KE1pbnVzKSksXG4gIGZvcm1zOiBbaW50X3VuYXJ5X21pbnVzX2V4cF0sXG59O1xuXG5sZXQgaW50X3BsdXM6IGdyb3VwID0ge2lkOiBCaW5PcEV4cChJbnQoUGx1cykpLCBmb3JtczogW2ludF9wbHVzX2V4cF19O1xuXG5sZXQgaW50X21pbnVzOiBncm91cCA9IHtpZDogQmluT3BFeHAoSW50KE1pbnVzKSksIGZvcm1zOiBbaW50X21pbnVzX2V4cF19O1xuXG5sZXQgaW50X3RpbWVzOiBncm91cCA9IHtpZDogQmluT3BFeHAoSW50KFRpbWVzKSksIGZvcm1zOiBbaW50X3RpbWVzX2V4cF19O1xuXG5sZXQgaW50X3Bvd2VyOiBncm91cCA9IHtpZDogQmluT3BFeHAoSW50KFBvd2VyKSksIGZvcm1zOiBbaW50X3Bvd2VyX2V4cF19O1xuXG5sZXQgaW50X2RpdmlkZTogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoRGl2aWRlKSksXG4gIGZvcm1zOiBbaW50X2RpdmlkZV9leHBdLFxufTtcblxubGV0IGludF9sZXNzX3RoYW46IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KExlc3NUaGFuKSksXG4gIGZvcm1zOiBbaW50X2x0X2V4cF0sXG59O1xuXG5sZXQgaW50X2xlc3NfdGhhbl9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoTGVzc1RoYW5PckVxdWFsKSksXG4gIGZvcm1zOiBbaW50X2x0ZV9leHBdLFxufTtcblxubGV0IGludF9ncmVhdGVyX3RoYW46IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoSW50KEdyZWF0ZXJUaGFuKSksXG4gIGZvcm1zOiBbaW50X2d0X2V4cF0sXG59O1xuXG5sZXQgaW50X2dyZWF0ZXJfdGhhbl9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChJbnQoR3JlYXRlclRoYW5PckVxdWFsKSksXG4gIGZvcm1zOiBbaW50X2d0ZV9leHBdLFxufTtcblxubGV0IGludF9lcXVhbDogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEludChFcXVhbHMpKSwgZm9ybXM6IFtpbnRfZXFfZXhwXX07XG5cbmxldCBpbnRfbm90X2VxdWFsOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEludChOb3RFcXVhbHMpKSxcbiAgZm9ybXM6IFtpbnRfbmVxX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfcGx1czogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChQbHVzKSksXG4gIGZvcm1zOiBbZmxvYXRfcGx1c19leHBdLFxufTtcblxubGV0IGZsb2F0X21pbnVzOiBncm91cCA9IHtcbiAgaWQ6IEJpbk9wRXhwKEZsb2F0KE1pbnVzKSksXG4gIGZvcm1zOiBbZmxvYXRfbWludXNfZXhwXSxcbn07XG5cbmxldCBmbG9hdF90aW1lczogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChUaW1lcykpLFxuICBmb3JtczogW2Zsb2F0X3RpbWVzX2V4cF0sXG59O1xuXG5sZXQgZmxvYXRfcG93ZXI6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoUG93ZXIpKSxcbiAgZm9ybXM6IFtmbG9hdF9wb3dlcl9leHBdLFxufTtcblxubGV0IGZsb2F0X2RpdmlkZTogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChEaXZpZGUpKSxcbiAgZm9ybXM6IFtmbG9hdF9kaXZpZGVfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9sZXNzX3RoYW46IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoTGVzc1RoYW4pKSxcbiAgZm9ybXM6IFtmbG9hdF9sdF9leHBdLFxufTtcblxubGV0IGZsb2F0X2xlc3NfdGhhbl9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChMZXNzVGhhbk9yRXF1YWwpKSxcbiAgZm9ybXM6IFtmbG9hdF9sdGVfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9ncmVhdGVyX3RoYW46IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoRmxvYXQoR3JlYXRlclRoYW4pKSxcbiAgZm9ybXM6IFtmbG9hdF9ndF9leHBdLFxufTtcblxubGV0IGZsb2F0X2dyZWF0ZXJfdGhhbl9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChHcmVhdGVyVGhhbk9yRXF1YWwpKSxcbiAgZm9ybXM6IFtmbG9hdF9ndGVfZXhwXSxcbn07XG5cbmxldCBmbG9hdF9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChFcXVhbHMpKSxcbiAgZm9ybXM6IFtmbG9hdF9lcV9leHBdLFxufTtcblxubGV0IGZsb2F0X25vdF9lcXVhbDogZ3JvdXAgPSB7XG4gIGlkOiBCaW5PcEV4cChGbG9hdChOb3RFcXVhbHMpKSxcbiAgZm9ybXM6IFtmbG9hdF9uZXFfZXhwXSxcbn07XG5cbmxldCBib29sX2FuZDogZ3JvdXAgPSB7aWQ6IEJpbk9wRXhwKEJvb2woQW5kKSksIGZvcm1zOiBbYm9vbF9hbmRfZXhwXX07XG5cbmxldCBib29sX29yOiBncm91cCA9IHtpZDogQmluT3BFeHAoQm9vbChPcikpLCBmb3JtczogW2Jvb2xfb3JfZXhwXX07XG5cbmxldCBzdHJpbmdfZXF1YWw6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoU3RyaW5nKEVxdWFscykpLFxuICBmb3JtczogW3N0cl9lcV9leHBdLFxufTtcblxubGV0IHN0cmluZ19jb25jYXQ6IGdyb3VwID0ge1xuICBpZDogQmluT3BFeHAoU3RyaW5nKENvbmNhdCkpLFxuICBmb3JtczogW3N0cl9jb25jYXRfZXhwXSxcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIE5vZGU7XG5vcGVuIFV0aWwuV2ViO1xub3BlbiBIYXozbGNvcmU7XG5cbi8qIElmIHlvdSBhcmUgYWRkaW5nIGRvY3MgaGVyZSBmb3IgbmV3IHN5bnRheCwgc2VlIFBpcGVsaW5lRXhwLnJlXG4gKiB3aGljaCBkb2N1bWVudHMgdGhlIHNpbXBsZXN0IHdheSB0byBhZGQgYSBuZXcgZm9ybS4gKi9cblxubGV0IGZlZWRiYWNrX3ZpZXcgPSAobWVzc2FnZSwgdXBfYWN0aXZlLCB1cF9hY3Rpb24sIGRvd25fYWN0aXZlLCBkb3duX2FjdGlvbikgPT4ge1xuICBkaXYoXG4gICAgfmF0dHI9Y2xzcyhbXCJmZWVkYmFja1wiXSksXG4gICAgW1xuICAgICAgZGl2KH5hdHRyPWNsc3MoW1wibWVzc2FnZVwiXSksIFt0ZXh0KG1lc3NhZ2UpXSksXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPVxuICAgICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgICBjbHNzKFtcIm9wdGlvblwiXSBAICh1cF9hY3RpdmUgPyBbXCJhY3RpdmVcIl0gOiBbXSkpLFxuICAgICAgICAgICAgQXR0ci5vbl9jbGljayh1cF9hY3Rpb24pLFxuICAgICAgICAgIF0pLFxuICAgICAgICBbdGV4dChcIvCfkY1cIildLFxuICAgICAgKSxcbiAgICAgIGRpdihcbiAgICAgICAgfmF0dHI9XG4gICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgIGNsc3MoW1wib3B0aW9uXCJdIEAgKGRvd25fYWN0aXZlID8gW1wiYWN0aXZlXCJdIDogW10pKSxcbiAgICAgICAgICAgIEF0dHIub25fY2xpY2soZG93bl9hY3Rpb24pLFxuICAgICAgICAgIF0pLFxuICAgICAgICBbdGV4dChcIvCfkY5cIildLFxuICAgICAgKSxcbiAgICBdLFxuICApO1xufTtcblxubGV0IGV4cGxhbmF0aW9uX2ZlZWRiYWNrX3ZpZXcgPSAofmluamVjdCwgZ3JvdXBfaWQsIGZvcm1faWQsIG1vZGVsKSA9PiB7XG4gIGxldCAodXBfYWN0aXZlLCBkb3duX2FjdGl2ZSkgPVxuICAgIHN3aXRjaCAoXG4gICAgICBFeHBsYWluVGhpc01vZGVsLmdldF9leHBsYW5hdGlvbl9mZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgbW9kZWwpXG4gICAgKSB7XG4gICAgfCBTb21lKFRodW1ic1VwKSA9PiAodHJ1ZSwgZmFsc2UpXG4gICAgfCBTb21lKFRodW1ic0Rvd24pID0+IChmYWxzZSwgdHJ1ZSlcbiAgICB8IE5vbmUgPT4gKGZhbHNlLCBmYWxzZSlcbiAgICB9O1xuICBmZWVkYmFja192aWV3KFxuICAgIFwiVGhpcyBleHBsYW5hdGlvbiBpcyBoZWxwZnVsXCIsXG4gICAgdXBfYWN0aXZlLFxuICAgIF8gPT5cbiAgICAgIGluamVjdChcbiAgICAgICAgVXBkYXRlQWN0aW9uLlVwZGF0ZUV4cGxhaW5UaGlzTW9kZWwoXG4gICAgICAgICAgVG9nZ2xlRXhwbGFuYXRpb25GZWVkYmFjayhncm91cF9pZCwgZm9ybV9pZCwgVGh1bWJzVXApLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICBkb3duX2FjdGl2ZSxcbiAgICBfID0+XG4gICAgICBpbmplY3QoXG4gICAgICAgIFVwZGF0ZUFjdGlvbi5VcGRhdGVFeHBsYWluVGhpc01vZGVsKFxuICAgICAgICAgIFRvZ2dsZUV4cGxhbmF0aW9uRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIFRodW1ic0Rvd24pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgKTtcbn07XG5cbmxldCBleGFtcGxlX2ZlZWRiYWNrX3ZpZXcgPSAofmluamVjdCwgZ3JvdXBfaWQsIGZvcm1faWQsIGV4YW1wbGVfaWQsIG1vZGVsKSA9PiB7XG4gIGxldCAodXBfYWN0aXZlLCBkb3duX2FjdGl2ZSkgPVxuICAgIHN3aXRjaCAoXG4gICAgICBFeHBsYWluVGhpc01vZGVsLmdldF9leGFtcGxlX2ZlZWRiYWNrKFxuICAgICAgICBncm91cF9pZCxcbiAgICAgICAgZm9ybV9pZCxcbiAgICAgICAgZXhhbXBsZV9pZCxcbiAgICAgICAgbW9kZWwsXG4gICAgICApXG4gICAgKSB7XG4gICAgfCBTb21lKFRodW1ic1VwKSA9PiAodHJ1ZSwgZmFsc2UpXG4gICAgfCBTb21lKFRodW1ic0Rvd24pID0+IChmYWxzZSwgdHJ1ZSlcbiAgICB8IE5vbmUgPT4gKGZhbHNlLCBmYWxzZSlcbiAgICB9O1xuICBmZWVkYmFja192aWV3KFxuICAgIFwiVGhpcyBleGFtcGxlIGlzIGhlbHBmdWxcIixcbiAgICB1cF9hY3RpdmUsXG4gICAgXyA9PlxuICAgICAgaW5qZWN0KFxuICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICBUb2dnbGVFeGFtcGxlRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGV4YW1wbGVfaWQsIFRodW1ic1VwKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgZG93bl9hY3RpdmUsXG4gICAgXyA9PlxuICAgICAgaW5qZWN0KFxuICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICBUb2dnbGVFeGFtcGxlRmVlZGJhY2soZ3JvdXBfaWQsIGZvcm1faWQsIGV4YW1wbGVfaWQsIFRodW1ic0Rvd24pLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgKTtcbn07XG5cbmxldCBjb2RlX25vZGUgPSB0ZXh0ID0+IE5vZGUuc3Bhbih+YXR0cj1jbHNzKFtcImNvZGVcIl0pLCBbTm9kZS50ZXh0KHRleHQpXSk7XG5cbmxldCBoaWdobGlnaHQgPVxuICAgICh+aW5qZWN0LCBtc2c6IGxpc3QoTm9kZS50KSwgaWQ6IElkLnQsIG1hcHBpbmc6IENvbG9yU3RlcHMudClcbiAgICA6IChOb2RlLnQsIENvbG9yU3RlcHMudCkgPT4ge1xuICBsZXQgKGMsIG1hcHBpbmcpID0gQ29sb3JTdGVwcy5nZXRfY29sb3IoaWQsIG1hcHBpbmcpO1xuICBsZXQgY2xhc3NlcyA9IGNsc3MoW1wiaGlnaGxpZ2h0LVwiICsrIGMsIFwiY2xpY2thYmxlXCJdKTtcbiAgbGV0IGF0dHIgPVxuICAgIHN3aXRjaCAoaW5qZWN0KSB7XG4gICAgfCBTb21lKGluamVjdCkgPT5cbiAgICAgIEF0dHIubWFueShbXG4gICAgICAgIGNsYXNzZXMsXG4gICAgICAgIEF0dHIub25fbW91c2VlbnRlcihfID0+XG4gICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgVXBkYXRlQWN0aW9uLkdsb2JhbHMoXG4gICAgICAgICAgICAgIFNldChFeHBsYWluVGhpcyhTZXRIaWdobGlnaHQoSG92ZXIoaWQpKSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIEF0dHIub25fbW91c2VsZWF2ZShfID0+XG4gICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgVXBkYXRlQWN0aW9uLkdsb2JhbHMoXG4gICAgICAgICAgICAgIFNldChFeHBsYWluVGhpcyhTZXRIaWdobGlnaHQoVW5zZXRIb3ZlcikpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBBdHRyLm9uX2NsaWNrKF8gPT5cbiAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLlBlcmZvcm1BY3Rpb24oU2VsZWN0KFRlcm0oSWQoaWQsIExlZnQpKSkpKVxuICAgICAgICApLFxuICAgICAgXSlcbiAgICB8IE5vbmUgPT4gY2xhc3Nlc1xuICAgIH07XG4gIChOb2RlLnNwYW4ofmF0dHIsIG1zZyksIG1hcHBpbmcpO1xufTtcblxuLypcbiBNYXJrZG93biBsaWtlIHRoaW5nOlxuIGhpZ2hsaWdodHkgdGhpbmcgOiBbdGhpbmcgdG8gaGlnaGxpZ2h0XShpZClcbiBidWxsZXRlZCBsaXN0OiAtIGxpc3QgaXRlbVxuICAgICAgICAgICAgICAgIC0gbGlzdCBpdGVtXG4gY29kZTogYGNvZGVgXG4gaXRhbGljczogKndvcmQqXG4gKi9cbmxldCBta190cmFuc2xhdGlvbiA9ICh+aW5qZWN0LCB0ZXh0OiBzdHJpbmcpOiAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpID0+IHtcbiAgbGV0IG9tZCA9IE9tZC5vZl9zdHJpbmcodGV4dCk7XG4gIC8vcHJpbnRfbWFya2Rvd24ob21kKTtcbiAgbGV0IHJlYyB0cmFuc2xhdGUgPVxuICAgICAgICAgIChkb2M6IE9tZC50LCBtYXBwaW5nOiBDb2xvclN0ZXBzLnQpOiAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpID0+XG4gICAgTGlzdC5mb2xkX2xlZnQoXG4gICAgICAoKG1zZywgbWFwcGluZyksIGVsZW0pID0+IHtcbiAgICAgICAgc3dpdGNoIChlbGVtKSB7XG4gICAgICAgIHwgT21kLlBhcmFncmFwaChkKSA9PiB0cmFuc2xhdGUoZCwgbWFwcGluZylcbiAgICAgICAgfCBUZXh0KHQpID0+IChMaXN0LmFwcGVuZChtc2csIFtOb2RlLnRleHQodCldKSwgbWFwcGluZylcbiAgICAgICAgfCBVbChpdGVtcykgPT5cbiAgICAgICAgICBsZXQgKGJ1bGxldHMsIG1hcHBpbmcpID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0KFxuICAgICAgICAgICAgICAoKG5vZGVzLCBtYXBwaW5nKSwgZCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCAobiwgbWFwcGluZykgPSB0cmFuc2xhdGUoZCwgbWFwcGluZyk7XG4gICAgICAgICAgICAgICAgKExpc3QuYXBwZW5kKG5vZGVzLCBbTm9kZS5saShuKV0pLCBtYXBwaW5nKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKFtdLCBtYXBwaW5nKSxcbiAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIChMaXN0LmFwcGVuZChtc2csIFtOb2RlLnVsKGJ1bGxldHMpXSksIG1hcHBpbmcpOyAvKiBUT0RPIEhhbm5haCAtIFNob3VsZCB0aGlzIGJlIGFuIG9yZGVyZWQgbGlzdCBpbnN0ZWFkIG9mIGFuIHVub3JkZXJlZCBsaXN0PyAqL1xuICAgICAgICB8IENvZGUoX25hbWUsIHQpID0+IChMaXN0LmFwcGVuZChtc2csIFtjb2RlX25vZGUodCldKSwgbWFwcGluZylcbiAgICAgICAgfCBVcmwoaWQsIGQsIF90aXRsZSkgPT5cbiAgICAgICAgICBsZXQgKGQsIG1hcHBpbmcpID0gdHJhbnNsYXRlKGQsIG1hcHBpbmcpO1xuICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICBzd2l0Y2ggKElkLm9mX3N0cmluZyhpZCkpIHtcbiAgICAgICAgICAgIHwgU29tZShpZCkgPT4gaWRcbiAgICAgICAgICAgIHwgTm9uZSA9PiBJZC5pbnZhbGlkXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIGxldCAoaW5uZXJfbXNnLCBtYXBwaW5nKSA9IGhpZ2hsaWdodCh+aW5qZWN0LCBkLCBpZCwgbWFwcGluZyk7XG4gICAgICAgICAgKExpc3QuYXBwZW5kKG1zZywgW2lubmVyX21zZ10pLCBtYXBwaW5nKTtcbiAgICAgICAgfCBFbXBoKGQpID0+XG4gICAgICAgICAgbGV0IChkLCBtYXBwaW5nKSA9IHRyYW5zbGF0ZShkLCBtYXBwaW5nKTtcbiAgICAgICAgICAoXG4gICAgICAgICAgICBMaXN0LmFwcGVuZChcbiAgICAgICAgICAgICAgbXNnLFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgTm9kZS5zcGFuKFxuICAgICAgICAgICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICAgICAgICAgIEF0dHIuc3R5bGUoXG4gICAgICAgICAgICAgICAgICAgICAgQ3NzX2dlbi5jcmVhdGUofmZpZWxkPVwiZm9udC1zdHlsZVwiLCB+dmFsdWU9XCJpdGFsaWNcIiksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICBkLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwcGluZyxcbiAgICAgICAgICApO1xuICAgICAgICB8IF8gPT4gKG1zZywgbWFwcGluZylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIChbXSwgbWFwcGluZyksXG4gICAgICBkb2MsXG4gICAgKTtcbiAgdHJhbnNsYXRlKG9tZCwgQ29sb3JTdGVwcy5lbXB0eSk7XG59O1xuXG5sZXQgbWtfZXhwbGFuYXRpb24gPVxuICAgIChcbiAgICAgIH5pbmplY3QsXG4gICAgICB+c2V0dGluZ3M6IFNldHRpbmdzLnQsXG4gICAgICBncm91cF9pZCxcbiAgICAgIGZvcm1faWQsXG4gICAgICB0ZXh0OiBzdHJpbmcsXG4gICAgICBtb2RlbDogRXhwbGFpblRoaXNNb2RlbC50LFxuICAgIClcbiAgICA6IChOb2RlLnQsIENvbG9yU3RlcHMudCkgPT4ge1xuICBsZXQgKG1zZywgY29sb3JfbWFwKSA9IG1rX3RyYW5zbGF0aW9uKH5pbmplY3Q9U29tZShpbmplY3QpLCB0ZXh0KTtcbiAgbGV0IGZlZWRiYWNrID1cbiAgICBzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93X2ZlZWRiYWNrXG4gICAgICA/IFtleHBsYW5hdGlvbl9mZWVkYmFja192aWV3KH5pbmplY3QsIGdyb3VwX2lkLCBmb3JtX2lkLCBtb2RlbCldIDogW107XG4gIChcbiAgICBkaXYoW2Rpdih+YXR0cj1jbHNzKFtcImV4cGxhbmF0aW9uLWNvbnRlbnRzXCJdKSwgbXNnKV0gQCBmZWVkYmFjayksXG4gICAgY29sb3JfbWFwLFxuICApO1xufTtcblxubGV0IGV4cGFuZGVyX2RlY28gPVxuICAgIChcbiAgICAgIH5nbG9iYWxzIGFzIHtmb250X21ldHJpY3MsIHNldHRpbmdzLCBffSBhcyBnbG9iYWxzOiBHbG9iYWxzLnQsXG4gICAgICB+ZG9jczogRXhwbGFpblRoaXNNb2RlbC50LFxuICAgICAgfmluamVjdCxcbiAgICAgIH5vcHRpb25zOiBsaXN0KChFeHBsYWluVGhpc0Zvcm0uZm9ybV9pZCwgU2VnbWVudC50KSksXG4gICAgICB+Z3JvdXA6IEV4cGxhaW5UaGlzRm9ybS5ncm91cCxcbiAgICAgIH5kb2M6IEV4cGxhaW5UaGlzRm9ybS5mb3JtLFxuICAgICAgZWRpdG9yLFxuICAgICkgPT4ge1xuICBtb2R1bGUgRGVjbyA9XG4gICAgRGVjby5EZWNvKHtcbiAgICAgIGxldCBlZGl0b3IgPSBlZGl0b3I7XG4gICAgICBsZXQgZ2xvYmFscyA9IGdsb2JhbHM7XG4gICAgfSk7XG4gIHN3aXRjaCAoZG9jLmV4cGFuZGFibGVfaWQsIExpc3QubGVuZ3RoKG9wdGlvbnMpKSB7XG4gIHwgKE5vbmUsIF8pXG4gIHwgKF8sIDAgfCAxKSA9PiBkaXYoW10pXG4gIHwgKFNvbWUoKGV4cGFuZGFibGUsIF8pKSwgXykgPT5cbiAgICBEZWNvLnRlcm1fZGVjb3JhdGlvbihcbiAgICAgIH5pZD1leHBhbmRhYmxlLFxuICAgICAgKChvcmlnaW4sIF8sIHBhdGgpKSA9PiB7XG4gICAgICAgIGxldCBzcGVjaWZpY2l0eV9wb3MgPVxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgXCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogJWZweDtcIixcbiAgICAgICAgICAgIGZvbnRfbWV0cmljcy5yb3dfaGVpZ2h0LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgbGV0IHNwZWNpZmljaXR5X3N0eWxlID1cbiAgICAgICAgICBBdHRyLmNyZWF0ZShcbiAgICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICAgIHNwZWNpZmljaXR5X3Bvc1xuICAgICAgICAgICAgKysgKGRvY3Muc3BlY2lmaWNpdHlfb3BlbiA/IFwidHJhbnNmb3JtOiBzY2FsZVkoMSk7XCIgOiBcIlwiKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGxldCBnZXRfY2xzcyA9IHNlZ21lbnQgPT5cbiAgICAgICAgICBzd2l0Y2ggKExpc3QubnRoKHNlZ21lbnQsIDApKSB7XG4gICAgICAgICAgfCBCYXNlLlRpbGUoe21vbGQsIF99KSA9PiBbXG4gICAgICAgICAgICAgIFwiY2ktaGVhZGVyLVwiICsrIFNvcnQudG9fc3RyaW5nKG1vbGQub3V0KSAvLyBUT0RPIHRoZSBicm93biBvbiBicm93biBpc24ndCB0aGUgZ3JlYXRlc3QuLi4gYnV0IG9rYXlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICB8IF8gPT4gW11cbiAgICAgICAgICB9O1xuXG4gICAgICAgIGxldCBzcGVjaWZpY2l0eV9tZW51ID1cbiAgICAgICAgICBOb2RlLmRpdihcbiAgICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgICAgIGNsc3MoW1wic3BlY2lmaWNpdHktb3B0aW9ucy1tZW51XCIsIFwiZXhwYW5kYWJsZVwiXSksXG4gICAgICAgICAgICAgICAgc3BlY2lmaWNpdHlfc3R5bGUsXG4gICAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgTGlzdC5tYXAoXG4gICAgICAgICAgICAgICgoaWQ6IEV4cGxhaW5UaGlzRm9ybS5mb3JtX2lkLCBzZWdtZW50OiBTZWdtZW50LnQpKTogTm9kZS50ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbWFwID0gTWVhc3VyZWQub2Zfc2VnbWVudChzZWdtZW50KTtcbiAgICAgICAgICAgICAgICBsZXQgY29kZV92aWV3ID1cbiAgICAgICAgICAgICAgICAgIENvZGUuc2ltcGxlX3ZpZXcoXG4gICAgICAgICAgICAgICAgICAgIH5mb250X21ldHJpY3MsXG4gICAgICAgICAgICAgICAgICAgIH51bnNlbGVjdGVkPXNlZ21lbnQsXG4gICAgICAgICAgICAgICAgICAgIH5tYXAsXG4gICAgICAgICAgICAgICAgICAgIH5zZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbGV0IGNsYXNzZXMgPVxuICAgICAgICAgICAgICAgICAgaWQgPT0gZG9jLmlkXG4gICAgICAgICAgICAgICAgICAgID8gW1wic2VsZWN0ZWRcIl0gQCBnZXRfY2xzcyhzZWdtZW50KSA6IGdldF9jbHNzKHNlZ21lbnQpO1xuICAgICAgICAgICAgICAgIGxldCB1cGRhdGVfZ3JvdXBfc2VsZWN0aW9uID0gXyA9PlxuICAgICAgICAgICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgICBFeHBsYWluVGhpc1VwZGF0ZS5VcGRhdGVHcm91cFNlbGVjdGlvbihncm91cC5pZCwgaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBOb2RlLmRpdihcbiAgICAgICAgICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgICAgICAgICAgIGNsc3MoY2xhc3NlcyksXG4gICAgICAgICAgICAgICAgICAgICAgQXR0ci5vbl9jbGljayh1cGRhdGVfZ3JvdXBfc2VsZWN0aW9uKSxcbiAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgICBbY29kZV92aWV3XSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGxldCBleHBhbmRfYXJyb3dfc3R5bGUgPSBBdHRyLmNyZWF0ZShcInN0eWxlXCIsIHNwZWNpZmljaXR5X3Bvcyk7XG4gICAgICAgIGxldCBleHBhbmRfYXJyb3cgPVxuICAgICAgICAgIE5vZGUuZGl2KFxuICAgICAgICAgICAgfmF0dHI9QXR0ci5tYW55KFtjbHNzKFtcImFycm93XCJdKSwgZXhwYW5kX2Fycm93X3N0eWxlXSksXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICApO1xuXG4gICAgICAgIGxldCBleHBhbmRhYmxlX2RlY28gPVxuICAgICAgICAgIERlY1V0aWwuY29kZV9zdmcoXG4gICAgICAgICAgICB+Zm9udF9tZXRyaWNzLFxuICAgICAgICAgICAgfm9yaWdpbixcbiAgICAgICAgICAgIH5iYXNlX2Nscz1bXCJleHBhbmRhYmxlXCJdLFxuICAgICAgICAgICAgfmFic19wb3M9ZmFsc2UsXG4gICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgTm9kZS5kaXYoXG4gICAgICAgICAgfmF0dHI9XG4gICAgICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgICAgICBjbHNzKFtcImV4cGFuZGFibGUtdGFyZ2V0XCJdKSxcbiAgICAgICAgICAgICAgRGVjVXRpbC5hYnNfcG9zaXRpb24ofmZvbnRfbWV0cmljcywgb3JpZ2luKSxcbiAgICAgICAgICAgICAgQXR0ci5vbl9jbGljayhfID0+IHtcbiAgICAgICAgICAgICAgICBpbmplY3QoXG4gICAgICAgICAgICAgICAgICBVcGRhdGVBY3Rpb24uVXBkYXRlRXhwbGFpblRoaXNNb2RlbChcbiAgICAgICAgICAgICAgICAgICAgRXhwbGFpblRoaXNVcGRhdGUuU3BlY2lmaWNpdHlPcGVuKCFkb2NzLnNwZWNpZmljaXR5X29wZW4pLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgW2V4cGFuZGFibGVfZGVjbywgc3BlY2lmaWNpdHlfbWVudV1cbiAgICAgICAgICBAIChkb2NzLnNwZWNpZmljaXR5X29wZW4gPyBbXSA6IFtleHBhbmRfYXJyb3ddKSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKVxuICB9O1xufTtcblxubGV0IGV4YW1wbGVfdmlldyA9XG4gICAgKFxuICAgICAgfmdsb2JhbHM6IEdsb2JhbHMudCxcbiAgICAgIH5pbmplY3QsXG4gICAgICB+Z3JvdXBfaWQsXG4gICAgICB+Zm9ybV9pZCxcbiAgICAgIH5leGFtcGxlczogbGlzdChFeHBsYWluVGhpc0Zvcm0uZXhhbXBsZSksXG4gICAgICB+bW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCxcbiAgICApID0+IHtcbiAgZXhhbXBsZXMgPT0gW11cbiAgICA/IFtdXG4gICAgOiBbXG4gICAgICBkaXYoXG4gICAgICAgIH5hdHRyPUF0dHIuaWQoXCJleGFtcGxlc1wiKSxcbiAgICAgICAgTGlzdC5tYXBpKFxuICAgICAgICAgIChfLCB7dGVybSwgbWVzc2FnZSwgc3ViX2lkLCBffTogRXhwbGFpblRoaXNGb3JtLmV4YW1wbGUpID0+IHtcbiAgICAgICAgICAgIGxldCBmZWVkYmFjayA9XG4gICAgICAgICAgICAgIGdsb2JhbHMuc2V0dGluZ3MuZXhwbGFpblRoaXMuc2hvd19mZWVkYmFja1xuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgZXhhbXBsZV9mZWVkYmFja192aWV3KFxuICAgICAgICAgICAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICAgICAgICAgICAgZm9ybV9pZCxcbiAgICAgICAgICAgICAgICAgICAgc3ViX2lkLFxuICAgICAgICAgICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgIH5hdHRyPWNsc3MoW1wiZXhhbXBsZVwiXSksXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBDZWxsRWRpdG9yLnZpZXcoXG4gICAgICAgICAgICAgICAgICB+Z2xvYmFscyxcbiAgICAgICAgICAgICAgICAgIH5zZWxlY3Q9XyA9PiBVaV9lZmZlY3QuSWdub3JlLFxuICAgICAgICAgICAgICAgICAgfmluamVjdD1fID0+IFVpX2VmZmVjdC5JZ25vcmUsXG4gICAgICAgICAgICAgICAgICB+aGlnaGxpZ2h0cz1Ob25lLFxuICAgICAgICAgICAgICAgICAgfnNlbGVjdGVkPU5vbmUsXG4gICAgICAgICAgICAgICAgICB+Y2FwdGlvbj1Ob25lLFxuICAgICAgICAgICAgICAgICAgfmxvY2tlZD10cnVlLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZWRpdG9yID1cbiAgICAgICAgICAgICAgICAgICAgICBFZGl0b3IuaW5pdCh+cmVhZF9vbmx5PXRydWUsIFppcHBlci51bnppcCh0ZXJtKSk7XG4gICAgICAgICAgICAgICAgICAgIGxldCAodGVybSwgXykgPVxuICAgICAgICAgICAgICAgICAgICAgIE1ha2VUZXJtLmZyb21femlwX2Zvcl9zZW0oZWRpdG9yLnN0YXRlLnppcHBlcik7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGF0aWNzID1cbiAgICAgICAgICAgICAgICAgICAgICBDYWNoZWRTdGF0aWNzLnN0YXRpY3Nfb2ZfdGVybShcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zZXR0aW5ncz1nbG9iYWxzLnNldHRpbmdzLmNvcmUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQ6IE1vZGVsUmVzdWx0LnQgPVxuICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHMuc2V0dGluZ3MuY29yZS5keW5hbWljc1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBFdmFsdWF0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGFiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbHVhdGlvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVyZmFjZS5ldmFsdWF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfnNldHRpbmdzPWdsb2JhbHMuc2V0dGluZ3MuY29yZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXM6IFJlc3VsdFBlbmRpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICA6IE5vRWxhYjtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljcyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBkaXYoXG4gICAgICAgICAgICAgICAgICB+YXR0cj1jbHNzKFtcImV4cGxhbmF0aW9uXCJdKSxcbiAgICAgICAgICAgICAgICAgIFt0ZXh0KG1lc3NhZ2UpXSBAIGZlZWRiYWNrLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXhhbXBsZXMsXG4gICAgICAgICksXG4gICAgICApLFxuICAgIF07XG59O1xuXG5sZXQgcmVjIGJ5cGFzc19wYXJlbnNfYW5kX2Fubm90X3BhdCA9IChwYXQ6IFBhdC50KSA9PiB7XG4gIHN3aXRjaCAocGF0LnRlcm0pIHtcbiAgfCBQYXJlbnMocClcbiAgfCBDYXN0KHAsIF8sIF8pID0+IGJ5cGFzc19wYXJlbnNfYW5kX2Fubm90X3BhdChwKVxuICB8IF8gPT4gcGF0XG4gIH07XG59O1xuXG5sZXQgcmVjIGJ5cGFzc19wYXJlbnNfcGF0ID0gKHBhdDogUGF0LnQpID0+IHtcbiAgc3dpdGNoIChwYXQudGVybSkge1xuICB8IFBhcmVucyhwKSA9PiBieXBhc3NfcGFyZW5zX3BhdChwKVxuICB8IF8gPT4gcGF0XG4gIH07XG59O1xuXG5sZXQgcmVjIGJ5cGFzc19wYXJlbnNfZXhwID0gKGV4cDogRXhwLnQpID0+IHtcbiAgc3dpdGNoIChleHAudGVybSkge1xuICB8IFBhcmVucyhlKSA9PiBieXBhc3NfcGFyZW5zX2V4cChlKVxuICB8IF8gPT4gZXhwXG4gIH07XG59O1xuXG5sZXQgcmVjIGJ5cGFzc19wYXJlbnNfdHlwID0gKHR5cDogVHlwLnQpID0+IHtcbiAgc3dpdGNoICh0eXAudGVybSkge1xuICB8IFBhcmVucyh0KSA9PiBieXBhc3NfcGFyZW5zX3R5cCh0KVxuICB8IF8gPT4gdHlwXG4gIH07XG59O1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIG1lc3NhZ2VfbW9kZSA9XG4gIHwgTWVzc2FnZUNvbnRlbnQoXG4gICAgICBVcGRhdGVBY3Rpb24udCA9PiBWaXJ0dWFsX2RvbS5WZG9tLkVmZmVjdC50KHVuaXQpLFxuICAgICAgR2xvYmFscy50LFxuICAgIClcbiAgfCBDb2xvcmluZ3M7XG5cbmxldCBnZXRfZG9jID1cbiAgICAoXG4gICAgICB+ZG9jczogRXhwbGFpblRoaXNNb2RlbC50LFxuICAgICAgaW5mbzogb3B0aW9uKFN0YXRpY3MuSW5mby50KSxcbiAgICAgIG1vZGU6IG1lc3NhZ2VfbW9kZSxcbiAgICApXG4gICAgOiAobGlzdChOb2RlLnQpLCAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpLCBsaXN0KE5vZGUudCkpID0+IHtcbiAgbGV0IHNpbXBsZSA9IG1zZyA9PiAoW10sIChbdGV4dChtc2cpXSwgKElkLk1hcC5lbXB0eSwgMCkpLCBbXSk7XG4gIGxldCBkZWZhdWx0ID0gc2ltcGxlKFwiTm8gZG9jcyBhdmFpbGFibGVcIik7XG4gIGxldCBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwgPSBncm91cF9pZCA9PlxuICAgIGZzdChFeHBsYWluVGhpc01vZGVsLmdldF9mb3JtX2FuZF9vcHRpb25zKGdyb3VwX2lkLCBkb2NzKSkuaWQ7XG4gIGxldCBnZXRfbWVzc2FnZSA9XG4gICAgICAoXG4gICAgICAgIH5jb2xvcmluZ3M9W10sXG4gICAgICAgIH5mb3JtYXQ6IG9wdGlvbihzdHJpbmcgPT4gc3RyaW5nKT1Ob25lLFxuICAgICAgICB+ZXhwbGFuYXRpb246IG9wdGlvbihzdHJpbmcpPT8sXG4gICAgICAgIGdyb3VwOiBFeHBsYWluVGhpc0Zvcm0uZ3JvdXAsXG4gICAgICApXG4gICAgICA6IChsaXN0KE5vZGUudCksIChsaXN0KE5vZGUudCksIENvbG9yU3RlcHMudCksIGxpc3QoTm9kZS50KSkgPT4ge1xuICAgIGxldCAoZG9jLCBvcHRpb25zKSA9IEV4cGxhaW5UaGlzTW9kZWwuZ2V0X2Zvcm1fYW5kX29wdGlvbnMoZ3JvdXAsIGRvY3MpO1xuXG4gICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzE5OTg0MDgvb2NhbWwtY29udmVydGluZy1zdHJpbmdzLXRvLWEtdW5pdC1zdHJpbmctZm9ybWF0XG4gICAgbGV0IGV4cGxhbmF0aW9uX21zZyA9XG4gICAgICBzd2l0Y2ggKGV4cGxhbmF0aW9uLCBmb3JtYXQpIHtcbiAgICAgIHwgKFNvbWUobXNnKSwgXykgPT4gbXNnXG4gICAgICB8IChfLCBTb21lKGYpKSA9PiBmKGRvYy5leHBsYW5hdGlvbilcbiAgICAgIHwgKF8sIE5vbmUpID0+IGRvYy5leHBsYW5hdGlvblxuICAgICAgfTtcbiAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICB8IE1lc3NhZ2VDb250ZW50KGluamVjdCwgZ2xvYmFscykgPT5cbiAgICAgIGxldCAoZXhwbGFuYXRpb24sIGNvbG9yX21hcCkgPVxuICAgICAgICBta19leHBsYW5hdGlvbihcbiAgICAgICAgICB+c2V0dGluZ3M9Z2xvYmFscy5zZXR0aW5ncyxcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIGdyb3VwLmlkLFxuICAgICAgICAgIGRvYy5pZCxcbiAgICAgICAgICBleHBsYW5hdGlvbl9tc2csXG4gICAgICAgICAgZG9jcyxcbiAgICAgICAgKTtcbiAgICAgIGxldCBzb3J0ID1cbiAgICAgICAgc3dpdGNoIChpbmZvKSB7XG4gICAgICAgIHwgTm9uZSA9PiBTb3J0LkFueVxuICAgICAgICB8IFNvbWUoY2kpID0+IEluZm8uc29ydF9vZihjaSlcbiAgICAgICAgfTtcbiAgICAgIGxldCBoaWdobGlnaHRzID1cbiAgICAgICAgY29sb3JpbmdzXG4gICAgICAgIHw+IExpc3QubWFwKCgoc3ludGFjdGljX2Zvcm1faWQ6IElkLnQsIGNvZGVfaWQ6IElkLnQpKSA9PiB7XG4gICAgICAgICAgICAgbGV0IChjb2xvciwgXykgPSBDb2xvclN0ZXBzLmdldF9jb2xvcihjb2RlX2lkLCBjb2xvcl9tYXApO1xuICAgICAgICAgICAgIChzeW50YWN0aWNfZm9ybV9pZCwgY29sb3IpO1xuICAgICAgICAgICB9KVxuICAgICAgICB8PiBMaXN0LnRvX3NlcVxuICAgICAgICB8PiBJZC5NYXAub2Zfc2VxXG4gICAgICAgIHw+IE9wdGlvbi5zb21lO1xuICAgICAgbGV0IGVkaXRvciA9XG4gICAgICAgIEVkaXRvci5pbml0KH5yZWFkX29ubHk9dHJ1ZSwgZG9jLnN5bnRhY3RpY19mb3JtIHw+IFppcHBlci51bnppcCk7XG4gICAgICBsZXQgZXhwYW5kZXJfZGVjbyA9XG4gICAgICAgIGV4cGFuZGVyX2RlY28oXG4gICAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgICAgfmRvY3MsXG4gICAgICAgICAgfmluamVjdCxcbiAgICAgICAgICB+b3B0aW9ucyxcbiAgICAgICAgICB+Z3JvdXAsXG4gICAgICAgICAgfmRvYyxcbiAgICAgICAgICBlZGl0b3IsXG4gICAgICAgICk7XG4gICAgICBsZXQgaGlnaGxpZ2h0X2RlY28gPVxuICAgICAgICBzd2l0Y2ggKGhpZ2hsaWdodHMpIHtcbiAgICAgICAgfCBTb21lKGhpZ2hsaWdodHMpID0+XG4gICAgICAgICAgbW9kdWxlIERlY28gPVxuICAgICAgICAgICAgRGVjby5EZWNvKHtcbiAgICAgICAgICAgICAgbGV0IGVkaXRvciA9IGVkaXRvcjtcbiAgICAgICAgICAgICAgbGV0IGdsb2JhbHMgPSBnbG9iYWxzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgRGVjby5jb2xvcl9oaWdobGlnaHRzKENvbG9yU3RlcHMudG9fbGlzdChoaWdobGlnaHRzKSk7XG4gICAgICAgIHwgTm9uZSA9PiBbXVxuICAgICAgICB9O1xuICAgICAgbGV0IHN0YXRpY3MgPSBDYWNoZWRTdGF0aWNzLmVtcHR5X3N0YXRpY3M7XG4gICAgICBsZXQgc3ludGFjdGljX2Zvcm1fdmlldyA9XG4gICAgICAgIFJlYWRPbmx5RWRpdG9yLnZpZXcoXG4gICAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgICAgfm92ZXJsYXlzPWhpZ2hsaWdodF9kZWNvIEAgW2V4cGFuZGVyX2RlY29dLFxuICAgICAgICAgIH5zb3J0LFxuICAgICAgICAgIHtlZGl0b3IsIHN0YXRpY3N9LFxuICAgICAgICApO1xuICAgICAgbGV0IGV4YW1wbGVfdmlldyA9XG4gICAgICAgIGV4YW1wbGVfdmlldyhcbiAgICAgICAgICB+Z2xvYmFscyxcbiAgICAgICAgICB+aW5qZWN0LFxuICAgICAgICAgIH5ncm91cF9pZD1ncm91cC5pZCxcbiAgICAgICAgICB+Zm9ybV9pZD1kb2MuaWQsXG4gICAgICAgICAgfmV4YW1wbGVzPWRvYy5leGFtcGxlcyxcbiAgICAgICAgICB+bW9kZWw9ZG9jcyxcbiAgICAgICAgKTtcbiAgICAgIChbc3ludGFjdGljX2Zvcm1fdmlld10sIChbZXhwbGFuYXRpb25dLCBjb2xvcl9tYXApLCBleGFtcGxlX3ZpZXcpO1xuICAgIHwgQ29sb3JpbmdzID0+XG4gICAgICBsZXQgKF8sIGNvbG9yX21hcCkgPSBta190cmFuc2xhdGlvbih+aW5qZWN0PU5vbmUsIGV4cGxhbmF0aW9uX21zZyk7XG4gICAgICAoW10sIChbXSwgY29sb3JfbWFwKSwgW10pO1xuICAgIH07XG4gIH07XG5cbiAgLyogVXNlIHRoaXMgd2hlbiBhZGRpbmcgbmV3IGVudHJpZXMgKi9cbiAgbGV0IG1lc3NhZ2Vfc2luZ2xlID0gKGU6IEV4cGxhaW5UaGlzRm9ybS5TaW1wbGUudCkgPT4ge1xuICAgIGxldCAoZXhwbGFuYXRpb24sIGNvbG9yaW5ncywgZ3JvdXApID0gRXhwbGFpblRoaXNGb3JtLlNpbXBsZS50b19ncm91cChlKTtcbiAgICBnZXRfbWVzc2FnZSh+Y29sb3JpbmdzLCB+Zm9ybWF0PU5vbmUsIH5leHBsYW5hdGlvbiwgZ3JvdXApO1xuICB9O1xuXG4gIHN3aXRjaCAoaW5mbykge1xuICB8IFNvbWUoSW5mb0V4cCh7dGVybSwgX30pKSA9PlxuICAgIGxldCByZWMgZ2V0X21lc3NhZ2VfZXhwID1cbiAgICAgICAgICAgICh0ZXJtKVxuICAgICAgICAgICAgOiAobGlzdChOb2RlLnQpLCAobGlzdChOb2RlLnQpLCBDb2xvclN0ZXBzLnQpLCBsaXN0KE5vZGUudCkpID0+XG4gICAgICBzd2l0Y2ggKCh0ZXJtOiBFeHAudGVybSkpIHtcbiAgICAgIHwgRXhwLkludmFsaWQoXykgPT4gc2ltcGxlKFwiTm90IGEgdmFsaWQgZXhwcmVzc2lvblwiKVxuICAgICAgfCBEeW5hbWljRXJyb3JIb2xlKF8pXG4gICAgICB8IEZhaWxlZENhc3QoXylcbiAgICAgIHwgQ2xvc3VyZShfKVxuICAgICAgfCBDYXN0KF8pXG4gICAgICB8IEJ1aWx0aW5GdW4oXykgPT4gc2ltcGxlKFwiSW50ZXJuYWwgZXhwcmVzc2lvblwiKVxuICAgICAgfCBFbXB0eUhvbGUgPT4gZ2V0X21lc3NhZ2UoSG9sZUV4cC5lbXB0eV9ob2xlX2V4cHMpXG4gICAgICB8IE11bHRpSG9sZShfY2hpbGRyZW4pID0+IGdldF9tZXNzYWdlKEhvbGVFeHAubXVsdGlfaG9sZV9leHBzKVxuICAgICAgfCBUeUFsaWFzKHR5X3BhdCwgdHlfZGVmLCBfYm9keSkgPT5cbiAgICAgICAgbGV0IHRwYXRfaWQgPSBMaXN0Lm50aCh0eV9wYXQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGRlZl9pZCA9IExpc3QubnRoKHR5X2RlZi5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgVHlBbGlhc0V4cC50eWFsaWFzX2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyh+dHBhdF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHBhdF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgVHlBbGlhc0V4cC50eWFsaWFzX2V4cHMsXG4gICAgICAgICk7XG4gICAgICB8IERlZmVycmFsKF8pID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLmRlZmVycmFsX2V4cHMpXG4gICAgICB8IEJvb2woYikgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAuYm9vbF9leHBzKGIpKVxuICAgICAgfCBJbnQoaSkgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxFeHAuaW50X2V4cHMoaSkpXG4gICAgICB8IEZsb2F0KGYpID0+IGdldF9tZXNzYWdlKFRlcm1pbmFsRXhwLmZsb2F0X2V4cHMoZikpXG4gICAgICB8IFN0cmluZyhzKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC5zdHJpbmdfZXhwcyhzKSlcbiAgICAgIHwgTGlzdExpdCh0ZXJtcykgPT5cbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgodGVybXMpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBMaXN0RXhwLmxpc3RsaXRzLFxuICAgICAgICApXG4gICAgICB8IFR5cEZ1bih0cGF0LCBib2R5LCBfKSA9PlxuICAgICAgICBsZXQgYmFzaWMgPSBncm91cF9pZCA9PiB7XG4gICAgICAgICAgbGV0IHRwYXRfaWQgPSBMaXN0Lm50aCh0cGF0LmlkcywgMCk7XG4gICAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgIH5wYXRfaWQ9dHBhdF9pZCxcbiAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICApO1xuICAgICAgICB9O1xuICAgICAgICAvKiBUT0RPOiBNb3JlIGNvdWxkIGJlIGRvbmUgaGVyZSBwcm9iYWJseSBmb3IgZGlmZmVyZW50IHBhdHRlcm5zLiAqL1xuICAgICAgICBiYXNpYyhUeXBGdW5jdGlvbkV4cC50eXBlX2Z1bmN0aW9uc19iYXNpYyk7XG4gICAgICB8IEZ1bihwYXQsIGJvZHksIF8sIF8pID0+XG4gICAgICAgIGxldCBiYXNpYyA9IGdyb3VwX2lkID0+IHtcbiAgICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIGxldCBwYXQgPSBieXBhc3NfcGFyZW5zX2FuZF9hbm5vdF9wYXQocGF0KTtcbiAgICAgICAgbGV0IHBhdF9pZCA9IExpc3QubnRoKHBhdC5pZHMsIDApO1xuICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgICAgICB8IEVtcHR5SG9sZSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl9lbXB0eV9ob2xlX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2VtcHR5X2hvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9lbXB0eV9ob2xlX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgfmJvZHlfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZW1wdHlfaG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19lbXB0eV9ob2xlKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgTXVsdGlIb2xlKF8pID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX211bHRpX2hvbGVfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbXVsdGlfaG9sZSkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX211bHRpX2hvbGVfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19tdWx0aV9ob2xlLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX211bHRpX2hvbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBXaWxkID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3dpbGRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfd2lsZCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPUZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3dpbGRfZXhwX2NvbG9yaW5nX2lkcyh+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfd2lsZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc193aWxkKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgSW50KGkpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2ludGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19pbnQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9pbnRsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KGkpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfaW50LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2ludCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEZsb2F0KGYpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2Zsb2F0bGl0X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2Zsb2F0KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fZmxvYXRsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVmJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBmLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZmxvYXQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfZmxvYXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBCb29sKGIpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2Jvb2xsaXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYm9vbCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2Jvb2xsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyViJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBiLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYm9vbCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19ib29sKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgU3RyaW5nKHMpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3N0cmxpdF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19zdHIpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9zdHJsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfc3RyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3N0cik7XG4gICAgICAgICAgfVxuICAgICAgICB8IFR1cGxlKFtdKSA9PlxuICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90cml2X2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3RyaXYpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl90cml2X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICAvLyBIQU5OQUggVE9ETyAtIHRoaW5rIGNvdWxkIG1vdmUgdGhpcyBmb3JtYXQgdGhpbmcgbGlrZSBpbnRvIHRoZSBjb2xvcmluZ3NcbiAgICAgICAgICAgICAgLy8gZnVuY3Rpb25zXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3RyaXYsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHJpdik7XG4gICAgICAgICAgfVxuICAgICAgICB8IExpc3RMaXQoZWxlbWVudHMpID0+XG4gICAgICAgICAgaWYgKExpc3QubGVuZ3RoKGVsZW1lbnRzKSA9PSAwKSB7XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fbGlzdG5pbF9leHAuaWRcbiAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RuaWwpKSB7XG4gICAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9saXN0bmlsX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RuaWwsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdG5pbCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fbGlzdGxpdF9leHAuaWRcbiAgICAgICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfbGlzdGxpdCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19saXN0bGl0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2xpc3RsaXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fY29uc19leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jb25zKSkge1xuICAgICAgICAgICAgbGV0IGhkX2lkID0gTGlzdC5udGgoaGQuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCB0bF9pZCA9IExpc3QubnRoKHRsLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9jb25zX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+aGRfaWQsXG4gICAgICAgICAgICAgICAgICB+dGxfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGxfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfY29ucyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jb25zKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgVmFyKHZhcikgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdmFyX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3ZhcikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3Zhcl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHZhcixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3ZhcixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc192YXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBUdXBsZShlbGVtZW50cykgPT5cbiAgICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgICAgbGV0IGJvZHlfaWQgPSBMaXN0Lm50aChib2R5LmlkcywgMCk7XG4gICAgICAgICAgbGV0IGJhc2ljX3R1cGxlID0gZ3JvdXBfaWQgPT4ge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgIH5wYXRfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGdyb3VwX2lkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgc3dpdGNoIChMaXN0Lmxlbmd0aChlbGVtZW50cykpIHtcbiAgICAgICAgICB8IDIgPT5cbiAgICAgICAgICAgIGxldCBkb2NfaWQgPSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMik7XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGUyX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgbGV0IHBhdDFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgbGV0IHBhdDJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlMl9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgICB+cGF0MV9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDJfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUyLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIHwgMyA9PlxuICAgICAgICAgICAgbGV0IGRvY19pZCA9IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUzKTtcbiAgICAgICAgICAgIGlmIChGdW5jdGlvbkV4cC5mdW5jdGlvbl90dXBsZTNfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBsZXQgcGF0MV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0Ml9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0M19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGUzX2V4cF9jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICAgIH5wYXQxX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0Ml9pZCxcbiAgICAgICAgICAgICAgICAgICAgfnBhdDNfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5ib2R5X2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDNfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZTMsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX3R1cGxlX2V4cC5pZCA9PSBkb2NfaWQpIHtcbiAgICAgICAgICAgICAgYmFzaWNfdHVwbGUoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlMyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhGdW5jdGlvbkV4cC5mdW5jdGlvbnNfdHVwbGUzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfCBfID0+XG4gICAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fdHVwbGVfZXhwLmlkXG4gICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZSkpIHtcbiAgICAgICAgICAgICAgYmFzaWNfdHVwbGUoRnVuY3Rpb25FeHAuZnVuY3Rpb25zX3R1cGxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc190dXBsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgfCBBcChjb24sIGFyZykgPT5cbiAgICAgICAgICBpZiAoRnVuY3Rpb25FeHAuZnVuY3Rpb25fYXBfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChGdW5jdGlvbkV4cC5mdW5jdGlvbnNfYXApKSB7XG4gICAgICAgICAgICBsZXQgY29uX2lkID0gTGlzdC5udGgoY29uLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgYXJnX2lkID0gTGlzdC5udGgoYXJnLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBGdW5jdGlvbkV4cC5mdW5jdGlvbl9hcF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgfmNvbl9pZCxcbiAgICAgICAgICAgICAgICAgIH5hcmdfaWQsXG4gICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGNvbl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19hcCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19hcCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IENvbnN0cnVjdG9yKHYpID0+XG4gICAgICAgICAgaWYgKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2N0cl9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jdHIpKSB7XG4gICAgICAgICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhwLmZ1bmN0aW9uX2N0cl9leHBfY29sb3JpbmdfaWRzKH5wYXRfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgdixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgRnVuY3Rpb25FeHAuZnVuY3Rpb25zX2N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKEZ1bmN0aW9uRXhwLmZ1bmN0aW9uc19jdHIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBJbnZhbGlkKF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXRcbiAgICAgICAgfCBQYXJlbnMoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdD9cbiAgICAgICAgfCBDYXN0KF8pID0+IGRlZmF1bHQgLy8gU2hvdWxkbid0IGdldCBoaXQ/XG4gICAgICAgIH07XG4gICAgICB8IFR1cGxlKHRlcm1zKSA9PlxuICAgICAgICBsZXQgYmFzaWMgPSBncm91cF9pZCA9PlxuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKHRlcm1zKSksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgc3dpdGNoIChMaXN0Lmxlbmd0aCh0ZXJtcykpIHtcbiAgICAgICAgfCAyID0+XG4gICAgICAgICAgaWYgKFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplMi5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVFeHAudHVwbGVzMikpIHtcbiAgICAgICAgICAgIGxldCBleHAxX2lkID0gTGlzdC5udGgoTGlzdC5udGgodGVybXMsIDApLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgZXhwMl9pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgVHVwbGVFeHAudHVwbGVfZXhwX3NpemUyX2NvbG9yaW5nX2lkcyh+ZXhwMV9pZCwgfmV4cDJfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMl9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgVHVwbGVFeHAudHVwbGVzMixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKFR1cGxlRXhwLnR1cGxlczIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCAzID0+XG4gICAgICAgICAgaWYgKFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplMy5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVFeHAudHVwbGVzMykpIHtcbiAgICAgICAgICAgIGxldCBleHAxX2lkID0gTGlzdC5udGgoTGlzdC5udGgodGVybXMsIDApLmlkcywgMCk7XG4gICAgICAgICAgICBsZXQgZXhwMl9pZCA9IExpc3QubnRoKExpc3QubnRoKHRlcm1zLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgbGV0IGV4cDNfaWQgPSBMaXN0Lm50aChMaXN0Lm50aCh0ZXJtcywgMikuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIFR1cGxlRXhwLnR1cGxlX2V4cF9zaXplM19jb2xvcmluZ19pZHMoXG4gICAgICAgICAgICAgICAgICB+ZXhwMV9pZCxcbiAgICAgICAgICAgICAgICAgIH5leHAyX2lkLFxuICAgICAgICAgICAgICAgICAgfmV4cDNfaWQsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAxX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwMl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGV4cDNfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIFR1cGxlRXhwLnR1cGxlczMsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNpYyhUdXBsZUV4cC50dXBsZXMzKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgXyA9PiBiYXNpYyhUdXBsZUV4cC50dXBsZXMpXG4gICAgICAgIH07XG4gICAgICB8IFZhcihuKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbEV4cC52YXJfZXhwcyhuKSlcbiAgICAgIHwgTGV0KHBhdCwgZGVmLCBib2R5KSA9PlxuICAgICAgICBsZXQgcGF0ID0gYnlwYXNzX3BhcmVuc19hbmRfYW5ub3RfcGF0KHBhdCk7XG4gICAgICAgIGxldCBwYXRfaWQgPSBMaXN0Lm50aChwYXQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGRlZl9pZCA9IExpc3QubnRoKGRlZi5pZHMsIDApO1xuICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgbGV0IGJhc2ljID0gZ3JvdXBfaWQgPT4ge1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1MZXRFeHAubGV0X2Jhc2VfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgZ3JvdXBfaWQsXG4gICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICAgICAgc3dpdGNoIChwYXQudGVybSkge1xuICAgICAgICB8IEVtcHR5SG9sZSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2VtcHR5X2hvbGVfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19lbXB0eWhvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2VtcHR5X2hvbGVfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2VtcHR5aG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2VtcHR5aG9sZSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IE11bHRpSG9sZShfKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X211bHRpX2hvbGVfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19tdXRsaWhvbGUpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X211bHRpX2hvbGVfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX211dGxpaG9sZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX211dGxpaG9sZSk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFdpbGQgPT5cbiAgICAgICAgICBpZiAoTGV0RXhwLmxldF93aWxkX2V4cC5pZFxuICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfd2lsZCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPUxldEV4cC5sZXRfd2lsZF9leHBfY29sb3JpbmdfaWRzKH5kZWZfaWQsIH5ib2R5X2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c193aWxkLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfd2lsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEludChpKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2ludF9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2ludCkpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfaW50X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoaSksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2ludCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUgYW5kIHNvbWUgb3RoZXIgcGxhY2VzIHdoZW4gc3dpdGNoaW5nIGJldHdlZW4gZm9ybXMgYW5kIHNwZWNpZmljaXR5IGxldmVscy4uLiBtYXliZSBhIFNhZmFyaSBpc3N1ZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2ludCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB8IEZsb2F0KGYpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfZmxvYXRfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19mbG9hdCkpIHtcbiAgICAgICAgICAgIC8vIFRPRE8gTWFrZSBzdXJlIGV2ZXJ5d2hlcmUgcHJpbnRpbmcgdGhlIGZsb2F0IGxpdGVyYWwgcHJpbnQgaXQgcHJldHRpZXJcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfZmxvYXRfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlZiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgZixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfZmxvYXQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiBUT0RPIFRoZSBjb2xvcmluZyBmb3IgdGhlIHN5bnRhY3RpYyBmb3JtIGlzIHNvbWV0aW1lcyB3cm9uZyBoZXJlLi4uICovXG4gICAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfZmxvYXQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBCb29sKGIpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfYm9vbF9leHAuaWRcbiAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2Jvb2wpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2Jvb2xfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlYiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgYixcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfYm9vbCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUuLi4gKi9cbiAgICAgICAgICAgIGJhc2ljKFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19ib29sLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIHwgU3RyaW5nKHMpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfc3RyX2V4cC5pZCA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfc3RyKSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF9zdHJfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkLCB+Ym9keV9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfc3RyLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLyogVE9ETyBUaGUgY29sb3JpbmcgZm9yIHRoZSBzeW50YWN0aWMgZm9ybSBpcyBzb21ldGltZXMgd3JvbmcgaGVyZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB8IFR1cGxlKFtdKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X3RyaXZfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c190cml2KSkge1xuICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgICAgTGV0RXhwLmxldF90cml2X2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYm9keV9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfdHJpdixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qIFRPRE8gVGhlIGNvbG9yaW5nIGZvciB0aGUgc3ludGFjdGljIGZvcm0gaXMgc29tZXRpbWVzIHdyb25nIGhlcmUgYW5kIG90aGVyIHBsYWNlcyB3aGVuIHN3aXRjaGluZyBzeW50YWN0aWMgc3BlY2lmaWNpdGllcy4uLiBzZWVtcyBsaWtlIG1pZ2h0IGJlIFNhZmFyaSBpc3N1ZS4uLiAqL1xuICAgICAgICAgICAgYmFzaWMoXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3RyaXYsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBMaXN0TGl0KGVsZW1lbnRzKSA9PlxuICAgICAgICAgIGlmIChMaXN0Lmxlbmd0aChlbGVtZW50cykgPT0gMCkge1xuICAgICAgICAgICAgaWYgKExldEV4cC5sZXRfbGlzdG5pbF9leHAuaWRcbiAgICAgICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfbGlzdG5pbCkpIHtcbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICAgIExldEV4cC5sZXRfbGlzdG5pbF9leHBfY29sb3JpbmdfaWRzKFxuICAgICAgICAgICAgICAgICAgICB+cGF0X2lkLFxuICAgICAgICAgICAgICAgICAgICB+ZGVmX2lkLFxuICAgICAgICAgICAgICAgICAgICB+Ym9keV9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0c19saXN0bmlsLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfbGlzdG5pbCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSBpZiAoTGV0RXhwLmxldF9saXN0bGl0X2V4cC5pZFxuICAgICAgICAgICAgICAgICAgICAgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2xpc3RsaXQpKSB7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2xpc3RsaXRfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBMZXRFeHAubGV0c19saXN0bGl0LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfbGlzdGxpdCk7XG4gICAgICAgICAgfVxuICAgICAgICB8IENvbnMoaGQsIHRsKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2NvbnNfZXhwLmlkXG4gICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19jb25zKSkge1xuICAgICAgICAgICAgbGV0IGhkX2lkID0gTGlzdC5udGgoaGQuaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCB0bF9pZCA9IExpc3QubnRoKHRsLmlkcywgMCk7XG4gICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgICBMZXRFeHAubGV0X2NvbnNfZXhwX2NvbG9yaW5nX2lkcyh+aGRfaWQsIH50bF9pZCwgfmRlZl9pZCksXG4gICAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bF9pZCksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgTGV0RXhwLmxldHNfY29ucyxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2NvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBWYXIodmFyKSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X3Zhcl9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3ZhcikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfdmFyX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocGF0X2lkKSxcbiAgICAgICAgICAgICAgICAgICAgICB2YXIsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX3ZhcixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX3Zhcik7XG4gICAgICAgICAgfVxuICAgICAgICB8IFR1cGxlKGVsZW1lbnRzKSA9PlxuICAgICAgICAgIGxldCBiYXNpY190dXBsZSA9IGdyb3VwX2lkID0+IHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPUxldEV4cC5sZXRfdHVwbGVfZXhwX2NvbG9yaW5nX2lkcyh+cGF0X2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBncm91cF9pZCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIHN3aXRjaCAoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSB7XG4gICAgICAgICAgfCAyID0+XG4gICAgICAgICAgICBsZXQgZG9jX2lkID0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX3R1cGxlMik7XG4gICAgICAgICAgICBpZiAoTGV0RXhwLmxldF90dXBsZTJfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBsZXQgcGF0MV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0Ml9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgTGV0RXhwLmxldF90dXBsZTJfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdDFfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQyX2lkLFxuICAgICAgICAgICAgICAgICAgICB+ZGVmX2lkLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRzX3R1cGxlMixcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTGV0RXhwLmxldF90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKExldEV4cC5sZXRzX3R1cGxlMik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c190dXBsZTIpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB8IDMgPT5cbiAgICAgICAgICAgIGxldCBkb2NfaWQgPSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoTGV0RXhwLmxldHNfdHVwbGUzKTtcbiAgICAgICAgICAgIC8vIFRPRE8gU3ludGFjdGljIGZvcm0gY2FuIGdvIG9mZiBwYWdlIC0gc28gY2FuIGV4YW1wbGVzIC0gYnV0IGNhbiBzY3JvbGwsIGp1c3QgY2FuJ3Qgc2VlIGJvdHRvbSBzY3JvbGwgYmFyXG4gICAgICAgICAgICBpZiAoTGV0RXhwLmxldF90dXBsZTNfZXhwLmlkID09IGRvY19pZCkge1xuICAgICAgICAgICAgICBsZXQgcGF0MV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0Ml9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgICAgICBsZXQgcGF0M19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgICAgTGV0RXhwLmxldF90dXBsZTNfZXhwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICAgICAgfnBhdDFfaWQsXG4gICAgICAgICAgICAgICAgICAgIH5wYXQyX2lkLFxuICAgICAgICAgICAgICAgICAgICB+cGF0M19pZCxcbiAgICAgICAgICAgICAgICAgICAgfmRlZl9pZCxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDFfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdDNfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRzX3R1cGxlMyxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoTGV0RXhwLmxldF90dXBsZV9leHAuaWQgPT0gZG9jX2lkKSB7XG4gICAgICAgICAgICAgIGJhc2ljX3R1cGxlKExldEV4cC5sZXRzX3R1cGxlMyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBiYXNpYyhMZXRFeHAubGV0c190dXBsZTMpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB8IF8gPT5cbiAgICAgICAgICAgIGlmIChMZXRFeHAubGV0X3R1cGxlX2V4cC5pZFxuICAgICAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c190dXBsZSkpIHtcbiAgICAgICAgICAgICAgYmFzaWNfdHVwbGUoTGV0RXhwLmxldHNfdHVwbGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfdHVwbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIHwgQXAoY29uLCBhcmcpID0+XG4gICAgICAgICAgaWYgKExldEV4cC5sZXRfYXBfZXhwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChMZXRFeHAubGV0c19hcCkpIHtcbiAgICAgICAgICAgIGxldCBjb25faWQgPSBMaXN0Lm50aChjb24uaWRzLCAwKTtcbiAgICAgICAgICAgIGxldCBhcmdfaWQgPSBMaXN0Lm50aChhcmcuaWRzLCAwKTtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfYXBfZXhwX2NvbG9yaW5nX2lkcyh+Y29uX2lkLCB+YXJnX2lkLCB+ZGVmX2lkKSxcbiAgICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhjb25faWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmdfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2FwLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYmFzaWMoTGV0RXhwLmxldHNfYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfCBDb25zdHJ1Y3Rvcih2KSA9PlxuICAgICAgICAgIGlmIChMZXRFeHAubGV0X2N0cl9leHAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExldEV4cC5sZXRzX2N0cikpIHtcbiAgICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICAgIExldEV4cC5sZXRfY3RyX2V4cF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfmRlZl9pZCwgfmJvZHlfaWQpLFxuICAgICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhkZWZfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhwYXRfaWQpLFxuICAgICAgICAgICAgICAgICAgICAgIHYsXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGRlZl9pZCksXG4gICAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGJvZHlfaWQpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIExldEV4cC5sZXRzX2N0cixcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJhc2ljKExldEV4cC5sZXRzX2N0cik7XG4gICAgICAgICAgfVxuICAgICAgICB8IEludmFsaWQoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdFxuICAgICAgICB8IFBhcmVucyhfKSA9PiBkZWZhdWx0IC8vIFNob3VsZG4ndCBnZXQgaGl0P1xuICAgICAgICB8IENhc3QoXykgPT4gZGVmYXVsdCAvLyBTaG91bGRuJ3QgZ2V0IGhpdD9cbiAgICAgICAgfTtcbiAgICAgIHwgRml4RihwYXQsIGJvZHksIF8pID0+XG4gICAgICAgIG1lc3NhZ2Vfc2luZ2xlKFxuICAgICAgICAgIEZpeEZFeHAuc2luZ2xlKFxuICAgICAgICAgICAgfnBhdF9pZD1VUGF0LnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBBcChSZXZlcnNlLCBhcmcsIGZuKSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBQaXBlbGluZUV4cC5zaW5nbGUoXG4gICAgICAgICAgICB+YXJnX2lkPVVFeHAucmVwX2lkKGFyZyksXG4gICAgICAgICAgICB+Zm5faWQ9VUV4cC5yZXBfaWQoZm4pLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgVHlwQXAoZiwgdHlwKSA9PlxuICAgICAgICBsZXQgZl9pZCA9IExpc3QubnRoKGYuaWRzLCAwKTtcbiAgICAgICAgbGV0IHR5cF9pZCA9IExpc3QubnRoKHR5cC5pZHMsIDApO1xuICAgICAgICBsZXQgYmFzaWMgPSAoZ3JvdXAsIGZvcm1hdCwgY29sb3JpbmdfaWRzKSA9PiB7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPWNvbG9yaW5nX2lkcyh+Zl9pZCwgfnR5cF9pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVNvbWUoZm9ybWF0KSxcbiAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIGJhc2ljKFxuICAgICAgICAgIFR5cEFwcEV4cC50eXBmdW5hcHMsXG4gICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZl9pZCksXG4gICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0eXBfaWQpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBUeXBBcHBFeHAudHlwZnVuYXBwX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICk7XG5cbiAgICAgIHwgQXAoRm9yd2FyZCwgeCwgYXJnKSA9PlxuICAgICAgICBsZXQgeF9pZCA9IExpc3QubnRoKHguaWRzLCAwKTtcbiAgICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgICBsZXQgYmFzaWMgPSAoZ3JvdXAsIGZvcm1hdCwgY29sb3JpbmdfaWRzKSA9PiB7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPWNvbG9yaW5nX2lkcyh+eF9pZCwgfmFyZ19pZCksXG4gICAgICAgICAgICB+Zm9ybWF0PVNvbWUoZm9ybWF0KSxcbiAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICk7XG4gICAgICAgIH07XG4gICAgICAgIHN3aXRjaCAoeC50ZXJtKSB7XG4gICAgICAgIHwgQ29uc3RydWN0b3IodikgPT5cbiAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgIEFwcEV4cC5jb25hcHMsXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgdixcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoeF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBBcHBFeHAuY29uYXBwX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgKVxuICAgICAgICB8IF8gPT5cbiAgICAgICAgICBiYXNpYyhcbiAgICAgICAgICAgIEFwcEV4cC5mdW5hcHMsXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh4X2lkKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIEFwcEV4cC5mdW5hcHBfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgICB8IERlZmVycmVkQXAoeCwgYXJncykgPT5cbiAgICAgICAgbGV0IHhfaWQgPSBMaXN0Lm50aCh4LmlkcywgMCk7XG4gICAgICAgIGxldCBzdXBwbGllZF9pZCA9IElkLm1rKCk7XG4gICAgICAgIGxldCBkZWZlcnJlZF9pZCA9IHtcbiAgICAgICAgICBsZXQgZGVmZXJyYWwgPSBMaXN0LmZpbmQoRXhwLmlzX2RlZmVycmFsLCBhcmdzKTtcbiAgICAgICAgICBMaXN0Lm50aChkZWZlcnJhbC5pZHMsIDApO1xuICAgICAgICB9O1xuICAgICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgfCBNZXNzYWdlQ29udGVudChfKSA9PlxuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgQXBwRXhwLmRlZmVycmVkX2Z1bmFwcF9leHBfY29sb3JpbmdfaWRzKH54X2lkLCB+ZGVmZXJyZWRfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHhfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoc3VwcGxpZWRfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZGVmZXJyZWRfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIEFwcEV4cC5kZWZlcnJlZGFwcyxcbiAgICAgICAgICApXG4gICAgICAgIHwgQ29sb3JpbmdzID0+XG4gICAgICAgICAgbGV0IGNvbG9yX2ZuID0gTGlzdC5udGgoQ29sb3JTdGVwcy5jaGlsZF9jb2xvcnMsIDApO1xuICAgICAgICAgIGxldCBjb2xvcl9zdXBwbGllZCA9IExpc3QubnRoKENvbG9yU3RlcHMuY2hpbGRfY29sb3JzLCAxKTtcbiAgICAgICAgICBsZXQgY29sb3JfZGVmZXJyZWQgPSBMaXN0Lm50aChDb2xvclN0ZXBzLmNoaWxkX2NvbG9ycywgMik7XG4gICAgICAgICAgbGV0IGFkZCA9IChtYXBwaW5nLCBhcmc6IEV4cC50KSA9PiB7XG4gICAgICAgICAgICBsZXQgYXJnX2lkID0gTGlzdC5udGgoYXJnLmlkcywgMCk7XG4gICAgICAgICAgICBIYXozbGNvcmUuSWQuTWFwLmFkZChcbiAgICAgICAgICAgICAgYXJnX2lkLFxuICAgICAgICAgICAgICBFeHAuaXNfZGVmZXJyYWwoYXJnKSA/IGNvbG9yX2RlZmVycmVkIDogY29sb3Jfc3VwcGxpZWQsXG4gICAgICAgICAgICAgIG1hcHBpbmcsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH07XG4gICAgICAgICAgbGV0IG1hcHBpbmcgPSBIYXozbGNvcmUuSWQuTWFwLnNpbmdsZXRvbih4X2lkLCBjb2xvcl9mbik7XG4gICAgICAgICAgbGV0IG1hcHBpbmcgPSBMaXN0LmZvbGRfbGVmdChhZGQsIG1hcHBpbmcsIGFyZ3MpO1xuICAgICAgICAgIGxldCBjb2xvcl9tYXAgPSAobWFwcGluZywgTGlzdC5sZW5ndGgoYXJncykgKyAxKTtcbiAgICAgICAgICAoW10sIChbXSwgY29sb3JfbWFwKSwgW10pO1xuICAgICAgICB9O1xuICAgICAgfCBJZihjb25kLCB0aGVuXywgZWxzZV8pID0+XG4gICAgICAgIGxldCBjb25kX2lkID0gTGlzdC5udGgoY29uZC5pZHMsIDApO1xuICAgICAgICBsZXQgdGhlbl9pZCA9IExpc3QubnRoKHRoZW5fLmlkcywgMCk7XG4gICAgICAgIGxldCBlbHNlX2lkID0gTGlzdC5udGgoZWxzZV8uaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1JZkV4cC5pZl9leHBfY29sb3JpbmdfaWRzKH5jb25kX2lkLCB+dGhlbl9pZCwgfmVsc2VfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGNvbmRfaWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRoZW5faWQpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsc2VfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIElmRXhwLmlmcyxcbiAgICAgICAgKTtcbiAgICAgIHwgU2VxKGxlZnQsIHJpZ2h0KSA9PlxuICAgICAgICBsZXQgZXhwMV9pZCA9IExpc3QubnRoKGxlZnQuaWRzLCAwKTtcbiAgICAgICAgbGV0IGV4cDJfaWQgPSBMaXN0Lm50aChyaWdodC5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPVNlcUV4cC5zZXFfZXhwX2NvbG9yaW5nX2lkcyh+ZXhwMV9pZCwgfmV4cDJfaWQpLFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAxX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhleHAyX2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBTZXFFeHAuc2VxcyxcbiAgICAgICAgKTtcbiAgICAgIHwgRmlsdGVyKEZpbHRlcih7YWN0OiAoU3RlcCwgT25lKSwgcGF0fSksIGJvZHkpID0+XG4gICAgICAgIG1lc3NhZ2Vfc2luZ2xlKFxuICAgICAgICAgIEZpbHRlckV4cC5maWx0ZXJfcGF1c2UoXG4gICAgICAgICAgICB+cF9pZD1VRXhwLnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBGaWx0ZXIoRmlsdGVyKHthY3Q6IChTdGVwLCBBbGwpLCBwYXR9KSwgYm9keSkgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgRmlsdGVyRXhwLmZpbHRlcl9kZWJ1ZyhcbiAgICAgICAgICAgIH5wX2lkPVVFeHAucmVwX2lkKHBhdCksXG4gICAgICAgICAgICB+Ym9keV9pZD1VRXhwLnJlcF9pZChib2R5KSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB8IEZpbHRlcihGaWx0ZXIoe2FjdDogKEV2YWwsIEFsbCksIHBhdH0pLCBib2R5KSA9PlxuICAgICAgICBtZXNzYWdlX3NpbmdsZShcbiAgICAgICAgICBGaWx0ZXJFeHAuZmlsdGVyX2V2YWwoXG4gICAgICAgICAgICB+cF9pZD1VRXhwLnJlcF9pZChwYXQpLFxuICAgICAgICAgICAgfmJvZHlfaWQ9VUV4cC5yZXBfaWQoYm9keSksXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfCBGaWx0ZXIoRmlsdGVyKHthY3Q6IChFdmFsLCBPbmUpLCBwYXR9KSwgYm9keSkgPT5cbiAgICAgICAgbWVzc2FnZV9zaW5nbGUoXG4gICAgICAgICAgRmlsdGVyRXhwLmZpbHRlcl9oaWRlKFxuICAgICAgICAgICAgfnBfaWQ9VUV4cC5yZXBfaWQocGF0KSxcbiAgICAgICAgICAgIH5ib2R5X2lkPVVFeHAucmVwX2lkKGJvZHkpLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIHwgRmlsdGVyKF8pID0+IHNpbXBsZShcIkludGVybmFsIGV4cHJlc3Npb25cIilcbiAgICAgIHwgVGVzdChib2R5KSA9PlxuICAgICAgICBsZXQgYm9keV9pZCA9IExpc3QubnRoKGJvZHkuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1UZXN0RXhwLnRlc3RfZXhwX2NvbG9yaW5nX2lkcyh+Ym9keV9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhib2R5X2lkKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBUZXN0RXhwLnRlc3RzLFxuICAgICAgICApO1xuICAgICAgfCBQYXJlbnModGVybSkgPT4gZ2V0X21lc3NhZ2VfZXhwKHRlcm0udGVybSkgLy8gTm8gU3BlY2lhbCBtZXNzYWdlP1xuICAgICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgICAgbGV0IGhkX2lkID0gTGlzdC5udGgoaGQuaWRzLCAwKTtcbiAgICAgICAgbGV0IHRsX2lkID0gTGlzdC5udGgodGwuaWRzLCAwKTtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmNvbG9yaW5ncz1MaXN0RXhwLmNvbnNfZXhwX2NvbG9yaW5nX2lkcyh+aGRfaWQsIH50bF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdEV4cC5saXN0Y29ucyxcbiAgICAgICAgKTtcbiAgICAgIHwgTGlzdENvbmNhdCh4cywgeXMpID0+XG4gICAgICAgIGxldCB4c19pZCA9IExpc3QubnRoKHhzLmlkcywgMCk7XG4gICAgICAgIGxldCB5c19pZCA9IExpc3QubnRoKHlzLmlkcywgMCk7XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9TGlzdEV4cC5jb25jYXRfZXhwX2NvbG9yaW5nX2lkcyh+eHNfaWQsIH55c19pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHhzX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh5c19pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgTGlzdEV4cC5saXN0Y29uY2F0cyxcbiAgICAgICAgKTtcbiAgICAgIHwgVW5PcChvcCwgZXhwKSA9PlxuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgIHwgQm9vbChOb3QpID0+XG4gICAgICAgICAgbGV0IGV4cF9pZCA9IExpc3QubnRoKGV4cC5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1PcEV4cC5ib29sX3VuYXJ5X25vdF9leHBfY29sb3JpbmdfaWRzKH5leHBfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBPcEV4cC5ib29sX3VuX25vdCxcbiAgICAgICAgICApO1xuICAgICAgICB8IEludChNaW51cykgPT5cbiAgICAgICAgICBsZXQgZXhwX2lkID0gTGlzdC5udGgoZXhwLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPU9wRXhwLmludF91bmFyeV9taW51c19leHBfY29sb3JpbmdfaWRzKH5leHBfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZXhwX2lkKSxcbiAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICBPcEV4cC5pbnRfdW5fbWludXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfCBNZXRhKFVucXVvdGUpID0+XG4gICAgICAgICAgbWVzc2FnZV9zaW5nbGUoRmlsdGVyRXhwLnVucXVvdGUofnNlbF9pZD1VRXhwLnJlcF9pZChleHApKSlcbiAgICAgICAgfVxuICAgICAgfCBCaW5PcChvcCwgbGVmdCwgcmlnaHQpID0+XG4gICAgICAgIG9wZW4gT3BFeHA7XG4gICAgICAgIGxldCAoZ3JvdXAsIGNvbG9yaW5nX2lkcykgPVxuICAgICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICB8IEludChQbHVzKSA9PiAoaW50X3BsdXMsIGludF9wbHVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoTWludXMpID0+IChpbnRfbWludXMsIGludF9taW51c19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KFRpbWVzKSA9PiAoaW50X3RpbWVzLCBpbnRfdGltZXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChQb3dlcikgPT4gKGludF9wb3dlciwgaW50X3Bvd2VyX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoRGl2aWRlKSA9PiAoaW50X2RpdmlkZSwgaW50X2RpdmlkZV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KExlc3NUaGFuKSA9PiAoaW50X2xlc3NfdGhhbiwgaW50X2x0X2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBJbnQoTGVzc1RoYW5PckVxdWFsKSA9PiAoXG4gICAgICAgICAgICAgIGludF9sZXNzX3RoYW5fZXF1YWwsXG4gICAgICAgICAgICAgIGludF9sdGVfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEludChHcmVhdGVyVGhhbikgPT4gKGludF9ncmVhdGVyX3RoYW4sIGludF9ndF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgSW50KEdyZWF0ZXJUaGFuT3JFcXVhbCkgPT4gKFxuICAgICAgICAgICAgICBpbnRfZ3JlYXRlcl90aGFuX2VxdWFsLFxuICAgICAgICAgICAgICBpbnRfZ3RlX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnQoRXF1YWxzKSA9PiAoaW50X2VxdWFsLCBpbnRfZXFfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEludChOb3RFcXVhbHMpID0+IChpbnRfbm90X2VxdWFsLCBpbnRfbmVxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChQbHVzKSA9PiAoZmxvYXRfcGx1cywgZmxvYXRfcGx1c19leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoTWludXMpID0+IChmbG9hdF9taW51cywgZmxvYXRfbWludXNfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KFRpbWVzKSA9PiAoZmxvYXRfdGltZXMsIGZsb2F0X3RpbWVzX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBGbG9hdChQb3dlcikgPT4gKGZsb2F0X3Bvd2VyLCBmbG9hdF9wb3dlcl9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoRGl2aWRlKSA9PiAoZmxvYXRfZGl2aWRlLCBmbG9hdF9kaXZpZGVfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEZsb2F0KExlc3NUaGFuKSA9PiAoZmxvYXRfbGVzc190aGFuLCBmbG9hdF9sdF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoTGVzc1RoYW5PckVxdWFsKSA9PiAoXG4gICAgICAgICAgICAgIGZsb2F0X2xlc3NfdGhhbl9lcXVhbCxcbiAgICAgICAgICAgICAgZmxvYXRfbHRlX2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBGbG9hdChHcmVhdGVyVGhhbikgPT4gKFxuICAgICAgICAgICAgICBmbG9hdF9ncmVhdGVyX3RoYW4sXG4gICAgICAgICAgICAgIGZsb2F0X2d0X2V4cF9jb2xvcmluZ19pZHMsXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBGbG9hdChHcmVhdGVyVGhhbk9yRXF1YWwpID0+IChcbiAgICAgICAgICAgICAgZmxvYXRfZ3JlYXRlcl90aGFuX2VxdWFsLFxuICAgICAgICAgICAgICBmbG9hdF9ndGVfZXhwX2NvbG9yaW5nX2lkcyxcbiAgICAgICAgICAgIClcbiAgICAgICAgICB8IEZsb2F0KEVxdWFscykgPT4gKGZsb2F0X2VxdWFsLCBmbG9hdF9lcV9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgRmxvYXQoTm90RXF1YWxzKSA9PiAoZmxvYXRfbm90X2VxdWFsLCBmbG9hdF9uZXFfZXhwX2NvbG9yaW5nX2lkcylcbiAgICAgICAgICB8IEJvb2woQW5kKSA9PiAoYm9vbF9hbmQsIGJvb2xfYW5kX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBCb29sKE9yKSA9PiAoYm9vbF9vciwgYm9vbF9vcl9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIHwgU3RyaW5nKEVxdWFscykgPT4gKHN0cmluZ19lcXVhbCwgc3RyX2VxX2V4cF9jb2xvcmluZ19pZHMpXG4gICAgICAgICAgfCBTdHJpbmcoQ29uY2F0KSA9PiAoc3RyaW5nX2NvbmNhdCwgc3RyX2NvbmNhdF9leHBfY29sb3JpbmdfaWRzKVxuICAgICAgICAgIH07XG4gICAgICAgIGxldCBsZWZ0X2lkID0gTGlzdC5udGgobGVmdC5pZHMsIDApO1xuICAgICAgICBsZXQgcmlnaHRfaWQgPSBMaXN0Lm50aChyaWdodC5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPWNvbG9yaW5nX2lkcyh+bGVmdF9pZCwgfnJpZ2h0X2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcobGVmdF9pZCksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcocmlnaHRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGdyb3VwLFxuICAgICAgICApO1xuICAgICAgfCBNYXRjaChzY3J1dCwgX3J1bGVzKSA9PlxuICAgICAgICBsZXQgc2NydXRfaWQgPSBMaXN0Lm50aChzY3J1dC5pZHMsIDApO1xuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Y29sb3JpbmdzPUNhc2VFeHAuY2FzZV9leHBfY29sb3JpbmdfaWRzKH5zY3J1dF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhzY3J1dF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgQ2FzZUV4cC5jYXNlLFxuICAgICAgICApO1xuICAgICAgfCBDb25zdHJ1Y3Rvcih2KSA9PlxuICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+IFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksIHYpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBUZXJtaW5hbEV4cC5jdHIodiksXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgZ2V0X21lc3NhZ2VfZXhwKHRlcm0udGVybSk7XG4gIHwgU29tZShJbmZvUGF0KHt0ZXJtLCBffSkpID0+XG4gICAgc3dpdGNoIChieXBhc3NfcGFyZW5zX3BhdCh0ZXJtKS50ZXJtKSB7XG4gICAgfCBFbXB0eUhvbGUgPT4gZ2V0X21lc3NhZ2UoSG9sZVBhdC5lbXB0eV9ob2xlKVxuICAgIHwgTXVsdGlIb2xlKF8pID0+IGdldF9tZXNzYWdlKEhvbGVQYXQubXVsdGlfaG9sZSlcbiAgICB8IFdpbGQgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxQYXQud2lsZClcbiAgICB8IEludChpKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVpJWlcIiksIGksIGkpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsUGF0LmludGxpdChpKSxcbiAgICAgIClcbiAgICB8IEZsb2F0KGYpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJWYlZlwiKSwgZiwgZiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQuZmxvYXRsaXQoZiksXG4gICAgICApXG4gICAgfCBCb29sKGIpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJWIlYlwiKSwgYiwgYiksXG4gICAgICAgICAgKSxcbiAgICAgICAgVGVybWluYWxQYXQuYm9vbGxpdChiKSxcbiAgICAgIClcbiAgICB8IFN0cmluZyhzKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksIHMsIHMpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsUGF0LnN0cmxpdChzKSxcbiAgICAgIClcbiAgICB8IFR1cGxlKFtdKSA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFBhdC50cml2KVxuICAgIHwgTGlzdExpdChlbGVtZW50cykgPT5cbiAgICAgIGlmIChMaXN0Lmxlbmd0aChlbGVtZW50cykgPT0gMCkge1xuICAgICAgICBnZXRfbWVzc2FnZShMaXN0UGF0Lmxpc3RuaWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBMaXN0UGF0Lmxpc3RsaXQsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfCBDb25zKGhkLCB0bCkgPT5cbiAgICAgIGxldCBoZF9pZCA9IExpc3QubnRoKGhkLmlkcywgMCk7XG4gICAgICBsZXQgdGxfaWQgPSBMaXN0Lm50aCh0bC5pZHMsIDApO1xuICAgICAgbGV0IGJhc2ljID0gZG9jID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9TGlzdFBhdC5jb25zX2Jhc2VfcGF0X2NvbG9yaW5nX2lkcyh+aGRfaWQsIH50bF9pZCksXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGhkX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0bF9pZCksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZG9jLFxuICAgICAgICApO1xuICAgICAgc3dpdGNoICh0bC50ZXJtKSB7XG4gICAgICB8IFBhdC5Db25zKGhkMiwgdGwyKSA9PlxuICAgICAgICBpZiAoTGlzdFBhdC5jb25zMl9wYXQuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKExpc3RQYXQuY29uczIpKSB7XG4gICAgICAgICAgbGV0IGhkMl9pZCA9IExpc3QubnRoKGhkMi5pZHMsIDApO1xuICAgICAgICAgIGxldCB0bDJfaWQgPSBMaXN0Lm50aCh0bDIuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9XG4gICAgICAgICAgICAgIExpc3RQYXQuY29uczJfcGF0X2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+ZnN0X2lkPWhkX2lkLFxuICAgICAgICAgICAgICAgIH5zbmRfaWQ9aGQyX2lkLFxuICAgICAgICAgICAgICAgIH50bF9pZD10bDJfaWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGRfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoaGQyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRsMl9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgTGlzdFBhdC5jb25zMixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKExpc3RQYXQuY29uczIpO1xuICAgICAgICB9XG4gICAgICB8IF8gPT4gYmFzaWMoTGlzdFBhdC5jb25zKVxuICAgICAgfTtcbiAgICB8IFZhcih2KSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PiBQcmludGYuc3ByaW50ZihTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzXCIpLCB2KSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC52YXIodiksXG4gICAgICApXG4gICAgfCBUdXBsZShlbGVtZW50cykgPT5cbiAgICAgIGxldCBiYXNpYyA9IGdyb3VwID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50KExpc3QubGVuZ3RoKGVsZW1lbnRzKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgZ3JvdXAsXG4gICAgICAgICk7XG4gICAgICBzd2l0Y2ggKExpc3QubGVuZ3RoKGVsZW1lbnRzKSkge1xuICAgICAgfCAyID0+XG4gICAgICAgIGlmIChUdXBsZVBhdC50dXBsZV9wYXRfc2l6ZTIuaWRcbiAgICAgICAgICAgID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZVBhdC50dXBsZTIpKSB7XG4gICAgICAgICAgbGV0IGVsZW0xX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0yX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBUdXBsZVBhdC50dXBsZV9wYXRfc2l6ZTJfY29sb3JpbmdfaWRzKH5lbGVtMV9pZCwgfmVsZW0yX2lkKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTFfaWQpLFxuICAgICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoZWxlbTJfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFR1cGxlUGF0LnR1cGxlMixcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKFR1cGxlUGF0LnR1cGxlMik7XG4gICAgICAgIH1cbiAgICAgIHwgMyA9PlxuICAgICAgICBpZiAoVHVwbGVQYXQudHVwbGVfcGF0X3NpemUzLmlkXG4gICAgICAgICAgICA9PSBnZXRfc3BlY2lmaWNpdHlfbGV2ZWwoVHVwbGVQYXQudHVwbGUzKSkge1xuICAgICAgICAgIGxldCBlbGVtMV9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAwKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtMl9pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAxKS5pZHMsIDApO1xuICAgICAgICAgIGxldCBlbGVtM19pZCA9IExpc3QubnRoKExpc3QubnRoKGVsZW1lbnRzLCAyKS5pZHMsIDApO1xuICAgICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgICAgfmNvbG9yaW5ncz1cbiAgICAgICAgICAgICAgVHVwbGVQYXQudHVwbGVfcGF0X3NpemUzX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+ZWxlbTFfaWQsXG4gICAgICAgICAgICAgICAgfmVsZW0yX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtM19pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMV9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtM19pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgVHVwbGVQYXQudHVwbGUzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVQYXQudHVwbGUzKTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IGJhc2ljKFR1cGxlUGF0LnR1cGxlKVxuICAgICAgfTtcbiAgICB8IEFwKGNvbiwgYXJnKSA9PlxuICAgICAgbGV0IGNvbl9pZCA9IExpc3QubnRoKGNvbi5pZHMsIDApO1xuICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5jb2xvcmluZ3M9QXBwUGF0LmFwX3BhdF9jb2xvcmluZ19pZHMofmNvbl9pZCwgfmFyZ19pZCksXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGNvbl9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgQXBwUGF0LmFwLFxuICAgICAgKTtcbiAgICB8IENvbnN0cnVjdG9yKGNvbikgPT5cbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT4gUHJpbnRmLnNwcmludGYoU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSwgY29uKSxcbiAgICAgICAgICApLFxuICAgICAgICBUZXJtaW5hbFBhdC5jdHIoY29uKSxcbiAgICAgIClcbiAgICB8IENhc3QocGF0LCB0eXAsIF8pID0+XG4gICAgICBsZXQgcGF0X2lkID0gTGlzdC5udGgocGF0LmlkcywgMCk7XG4gICAgICBsZXQgdHlwX2lkID0gTGlzdC5udGgodHlwLmlkcywgMCk7XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmNvbG9yaW5ncz1UeXBBbm5QYXQudHlwYW5uX3BhdF9jb2xvcmluZ19pZHMofnBhdF9pZCwgfnR5cF9pZCksXG4gICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgU29tZShcbiAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHBhdF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHR5cF9pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgVHlwQW5uUGF0LnR5cGFubixcbiAgICAgICk7XG4gICAgfCBJbnZhbGlkKF8pID0+IHNpbXBsZShcIk5vdCBhIHZhbGlkIHBhdHRlcm5cIilcbiAgICB8IFBhcmVucyhfKSA9PlxuICAgICAgLy8gU2hvdWxkbid0IGJlIGhpdD9cbiAgICAgIGRlZmF1bHRcbiAgICB9XG4gIHwgU29tZShJbmZvVHlwKHt0ZXJtLCBffSBhcyB0eXBfaW5mbykpID0+XG4gICAgc3dpdGNoIChieXBhc3NfcGFyZW5zX3R5cCh0ZXJtKS50ZXJtKSB7XG4gICAgfCBVbmtub3duKFN5blN3aXRjaClcbiAgICB8IFVua25vd24oSW50ZXJuYWwpXG4gICAgfCBVbmtub3duKEhvbGUoRW1wdHlIb2xlKSkgPT4gZ2V0X21lc3NhZ2UoSG9sZVR5cC5lbXB0eV9ob2xlKVxuICAgIHwgVW5rbm93bihIb2xlKE11bHRpSG9sZShfKSkpID0+IGdldF9tZXNzYWdlKEhvbGVUeXAubXVsdGlfaG9sZSlcbiAgICB8IEludCA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFR5cC5pbnQpXG4gICAgfCBGbG9hdCA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFR5cC5mbG9hdClcbiAgICB8IEJvb2wgPT4gZ2V0X21lc3NhZ2UoVGVybWluYWxUeXAuYm9vbClcbiAgICB8IFN0cmluZyA9PiBnZXRfbWVzc2FnZShUZXJtaW5hbFR5cC5zdHIpXG4gICAgfCBMaXN0KGVsZW0pID0+XG4gICAgICBsZXQgZWxlbV9pZCA9IExpc3QubnRoKGVsZW0uaWRzLCAwKTtcbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Y29sb3JpbmdzPUxpc3RUeXAubGlzdF90eXBfY29sb3JpbmdfaWRzKH5lbGVtX2lkKSxcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGVsZW1faWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIExpc3RUeXAubGlzdCxcbiAgICAgICk7XG4gICAgfCBGb3JhbGwodHBhdCwgdHlwKSA9PlxuICAgICAgbGV0IHRwYXRfaWQgPSBMaXN0Lm50aCh0cGF0LmlkcywgMCk7XG4gICAgICBsZXQgdGJvZHlfaWQgPSBMaXN0Lm50aCh0eXAuaWRzLCAwKTtcbiAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICB+Y29sb3JpbmdzPUZvcmFsbFR5cC5mb3JhbGxfdHlwX2NvbG9yaW5nX2lkcyh+dHBhdF9pZCwgfnRib2R5X2lkKSxcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgIFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXMlc1wiKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodHBhdF9pZCksXG4gICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHRib2R5X2lkKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICBGb3JhbGxUeXAuZm9yYWxsLFxuICAgICAgKTtcbiAgICB8IFJlYyh0cGF0LCB0eXApID0+XG4gICAgICBsZXQgdHBhdF9pZCA9IExpc3QubnRoKHRwYXQuaWRzLCAwKTtcbiAgICAgIGxldCB0Ym9keV9pZCA9IExpc3QubnRoKHR5cC5pZHMsIDApO1xuICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgIH5jb2xvcmluZ3M9UmVjVHlwLnJlY190eXBfY29sb3JpbmdfaWRzKH50cGF0X2lkLCB+dGJvZHlfaWQpLFxuICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzXCIpLFxuICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyh0cGF0X2lkKSxcbiAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcodGJvZHlfaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgIFJlY1R5cC5yZWNfLFxuICAgICAgKTtcbiAgICB8IEFycm93KGFyZywgcmVzdWx0KSA9PlxuICAgICAgbGV0IGFyZ19pZCA9IExpc3QubnRoKGFyZy5pZHMsIDApO1xuICAgICAgbGV0IHJlc3VsdF9pZCA9IExpc3QubnRoKHJlc3VsdC5pZHMsIDApO1xuICAgICAgbGV0IGJhc2ljID0gZG9jID0+XG4gICAgICAgIGdldF9tZXNzYWdlKFxuICAgICAgICAgIH5jb2xvcmluZ3M9QXJyb3dUeXAuYXJyb3dfdHlwX2NvbG9yaW5nX2lkcyh+YXJnX2lkLCB+cmVzdWx0X2lkKSxcbiAgICAgICAgICB+Zm9ybWF0PVxuICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgUHJpbnRmLnNwcmludGYoXG4gICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICBJZC50b19zdHJpbmcoYXJnX2lkKSxcbiAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhyZXN1bHRfaWQpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIGRvYyxcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAocmVzdWx0LnRlcm0pIHtcbiAgICAgIHwgVHlwLkFycm93KGFyZzIsIHJlc3VsdDIpID0+XG4gICAgICAgIGlmIChBcnJvd1R5cC5hcnJvdzNfdHlwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChBcnJvd1R5cC5hcnJvdzMpKSB7XG4gICAgICAgICAgbGV0IGFyZzJfaWQgPSBMaXN0Lm50aChhcmcyLmlkcywgMCk7XG4gICAgICAgICAgbGV0IHJlc3VsdDJfaWQgPSBMaXN0Lm50aChyZXN1bHQyLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBBcnJvd1R5cC5hcnJvdzNfdHlwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+YXJnMV9pZD1hcmdfaWQsXG4gICAgICAgICAgICAgICAgfmFyZzJfaWQsXG4gICAgICAgICAgICAgICAgfnJlc3VsdF9pZD1yZXN1bHQyX2lkLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXMlc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKGFyZ19pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhhcmcyX2lkKSxcbiAgICAgICAgICAgICAgICAgICAgSWQudG9fc3RyaW5nKHJlc3VsdDJfaWQpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIEFycm93VHlwLmFycm93MyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJhc2ljKEFycm93VHlwLmFycm93Myk7XG4gICAgICAgIH1cbiAgICAgIHwgXyA9PiBiYXNpYyhBcnJvd1R5cC5hcnJvdylcbiAgICAgIH07XG4gICAgfCBQcm9kKGVsZW1lbnRzKSA9PlxuICAgICAgbGV0IGJhc2ljID0gZ3JvdXAgPT5cbiAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgIG1zZyA9PlxuICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlc1wiKSxcbiAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICBncm91cCxcbiAgICAgICAgKTtcbiAgICAgIHN3aXRjaCAoTGlzdC5sZW5ndGgoZWxlbWVudHMpKSB7XG4gICAgICB8IDAgPT5cbiAgICAgICAgaWYgKFR1cGxlVHlwLnR1cGxlMF90eXAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlVHlwLnR1cGxlMCkpIHtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9W10sXG4gICAgICAgICAgICB+Zm9ybWF0PVNvbWUobXNnID0+IG1zZyksXG4gICAgICAgICAgICBUdXBsZVR5cC50dXBsZTAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBiYXNpYyhUdXBsZVR5cC50dXBsZTIpO1xuICAgICAgICB9XG4gICAgICB8IDIgPT5cbiAgICAgICAgaWYgKFR1cGxlVHlwLnR1cGxlMl90eXAuaWQgPT0gZ2V0X3NwZWNpZmljaXR5X2xldmVsKFR1cGxlVHlwLnR1cGxlMikpIHtcbiAgICAgICAgICBsZXQgZWxlbTFfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMCkuaWRzLCAwKTtcbiAgICAgICAgICBsZXQgZWxlbTJfaWQgPSBMaXN0Lm50aChMaXN0Lm50aChlbGVtZW50cywgMSkuaWRzLCAwKTtcbiAgICAgICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgICAgIH5jb2xvcmluZ3M9VHVwbGVUeXAudHVwbGUyX3R5cF9jb2xvcmluZ19pZHMofmVsZW0xX2lkLCB+ZWxlbTJfaWQpLFxuICAgICAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICAgICAgU29tZShcbiAgICAgICAgICAgICAgICBtc2cgPT5cbiAgICAgICAgICAgICAgICAgIFByaW50Zi5zcHJpbnRmKFxuICAgICAgICAgICAgICAgICAgICBTY2FuZi5mb3JtYXRfZnJvbV9zdHJpbmcobXNnLCBcIiVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMV9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMl9pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgVHVwbGVUeXAudHVwbGUyLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVUeXAudHVwbGUyKTtcbiAgICAgICAgfVxuICAgICAgfCAzID0+XG4gICAgICAgIGlmIChUdXBsZVR5cC50dXBsZTNfdHlwLmlkID09IGdldF9zcGVjaWZpY2l0eV9sZXZlbChUdXBsZVR5cC50dXBsZTMpKSB7XG4gICAgICAgICAgbGV0IGVsZW0xX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDApLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0yX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDEpLmlkcywgMCk7XG4gICAgICAgICAgbGV0IGVsZW0zX2lkID0gTGlzdC5udGgoTGlzdC5udGgoZWxlbWVudHMsIDIpLmlkcywgMCk7XG4gICAgICAgICAgZ2V0X21lc3NhZ2UoXG4gICAgICAgICAgICB+Y29sb3JpbmdzPVxuICAgICAgICAgICAgICBUdXBsZVR5cC50dXBsZTNfdHlwX2NvbG9yaW5nX2lkcyhcbiAgICAgICAgICAgICAgICB+ZWxlbTFfaWQsXG4gICAgICAgICAgICAgICAgfmVsZW0yX2lkLFxuICAgICAgICAgICAgICAgIH5lbGVtM19pZCxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH5mb3JtYXQ9XG4gICAgICAgICAgICAgIFNvbWUoXG4gICAgICAgICAgICAgICAgbXNnID0+XG4gICAgICAgICAgICAgICAgICBQcmludGYuc3ByaW50ZihcbiAgICAgICAgICAgICAgICAgICAgU2NhbmYuZm9ybWF0X2Zyb21fc3RyaW5nKG1zZywgXCIlcyVzJXNcIiksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMV9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtMl9pZCksXG4gICAgICAgICAgICAgICAgICAgIElkLnRvX3N0cmluZyhlbGVtM19pZCksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgVHVwbGVUeXAudHVwbGUzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzaWMoVHVwbGVUeXAudHVwbGUzKTtcbiAgICAgICAgfVxuICAgICAgfCBfID0+IGJhc2ljKFR1cGxlVHlwLnR1cGxlKVxuICAgICAgfTtcbiAgICB8IFZhcihjKSB3aGVuIEluZm8udHlwX2lzX2NvbnN0cnVjdG9yX2V4cGVjdGVkKHR5cF9pbmZvKSA9PlxuICAgICAgZ2V0X21lc3NhZ2UoU3VtVHlwLnN1bV90eXBfbnVsbGFyeV9jb25zdHJ1Y3Rvcl9kZWZzKGMpKVxuICAgIHwgVmFyKHYpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+IFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksIHYpLFxuICAgICAgICAgICksXG4gICAgICAgIFRlcm1pbmFsVHlwLnZhcih2KSxcbiAgICAgIClcbiAgICB8IFN1bShfKSA9PiBnZXRfbWVzc2FnZShTdW1UeXAubGFiZWxsZWRfc3VtX3R5cHMpXG4gICAgfCBBcCh7dGVybTogVmFyKGMpLCBffSwgXykgPT5cbiAgICAgIGdldF9tZXNzYWdlKFN1bVR5cC5zdW1fdHlwX3VuYXJ5X2NvbnN0cnVjdG9yX2RlZnMoYykpXG4gICAgfCBVbmtub3duKEhvbGUoSW52YWxpZChfKSkpID0+IHNpbXBsZShcIk5vdCBhIHR5cGUgb3IgdHlwZSBvcGVyYXRvclwiKVxuICAgIHwgQXAoXylcbiAgICB8IFBhcmVucyhfKSA9PiBkZWZhdWx0IC8vIFNob3VsZG4ndCBiZSBoaXQ/XG4gICAgfVxuICB8IFNvbWUoSW5mb1RQYXQoaW5mbykpID0+XG4gICAgc3dpdGNoIChpbmZvLnRlcm0udGVybSkge1xuICAgIHwgSW52YWxpZChfKSA9PiBzaW1wbGUoXCJUeXBlIG5hbWVzIG11c3QgYmVnaW4gd2l0aCBhIGNhcGl0YWwgbGV0dGVyXCIpXG4gICAgfCBFbXB0eUhvbGUgPT4gZ2V0X21lc3NhZ2UoSG9sZVRQYXQuZW1wdHlfaG9sZV90cGF0cylcbiAgICB8IE11bHRpSG9sZShfKSA9PiBnZXRfbWVzc2FnZShIb2xlVFBhdC5tdWx0aV9ob2xlX3RwYXRzKVxuICAgIHwgVmFyKHYpID0+XG4gICAgICBnZXRfbWVzc2FnZShcbiAgICAgICAgfmZvcm1hdD1cbiAgICAgICAgICBTb21lKFxuICAgICAgICAgICAgbXNnID0+IFByaW50Zi5zcHJpbnRmKFNjYW5mLmZvcm1hdF9mcm9tX3N0cmluZyhtc2csIFwiJXNcIiksIHYpLFxuICAgICAgICAgICksXG4gICAgICAgIFZhclRQYXQudmFyX3R5cF9wYXRzKHYpLFxuICAgICAgKVxuICAgIH1cbiAgfCBTb21lKFNlY29uZGFyeShzKSkgPT5cbiAgICBzd2l0Y2ggKHMuY2xzKSB7XG4gICAgfCBTZWNvbmRhcnkoV2hpdGVzcGFjZSkgPT4gc2ltcGxlKFwiQSBzZW1hbnRpYyB2b2lkLCBwZXJ2YWRpbmcgYnV0IGluZXJ0XCIpXG4gICAgfCBTZWNvbmRhcnkoQ29tbWVudCkgPT5cbiAgICAgIHNpbXBsZShcIkNvbW1lbnRzIGFyZSBpZ25vcmVkIGJ5IHN5c3RlbXMgYnV0IHRyZWFzdXJlZCBieSByZWFkZXJzXCIpXG4gICAgfCBfID0+IGZhaWx3aXRoKFwiRXhwbGFpblRoaXM6IFNlY29uZGFyeSBJbXBvc3NpYmxlXCIpXG4gICAgfVxuICB8IE5vbmUgPT4gZGVmYXVsdFxuICB9O1xufTtcblxubGV0IHNlY3Rpb24gPSAofnNlY3Rpb25fY2xzczogc3RyaW5nLCB+dGl0bGU6IHN0cmluZywgY29udGVudHM6IGxpc3QoTm9kZS50KSkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1wic2VjdGlvblwiLCBzZWN0aW9uX2Nsc3NdKSxcbiAgICBbZGl2KH5hdHRyPWNsc3MoW1wic2VjdGlvbi10aXRsZVwiXSksIFt0ZXh0KHRpdGxlKV0pXSBAIGNvbnRlbnRzLFxuICApO1xuXG5sZXQgZ2V0X2NvbG9yX21hcCA9XG4gICAgKH5zZXR0aW5nczogU2V0dGluZ3MudCwgfmV4cGxhaW5UaGlzTW9kZWw6IEV4cGxhaW5UaGlzTW9kZWwudCwgaW5mbykgPT5cbiAgc3dpdGNoIChzZXR0aW5ncy5leHBsYWluVGhpcy5oaWdobGlnaHQpIHtcbiAgfCBBbGwgd2hlbiBzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93ID0+XG4gICAgbGV0IChfLCAoXywgKGNvbG9yX21hcCwgXykpLCBfKSA9XG4gICAgICBnZXRfZG9jKH5kb2NzPWV4cGxhaW5UaGlzTW9kZWwsIGluZm8sIENvbG9yaW5ncyk7XG4gICAgU29tZShjb2xvcl9tYXApO1xuICB8IE9uZShpZCkgd2hlbiBzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93ID0+XG4gICAgbGV0IChfLCAoXywgKGNvbG9yX21hcCwgXykpLCBfKSA9XG4gICAgICBnZXRfZG9jKH5kb2NzPWV4cGxhaW5UaGlzTW9kZWwsIGluZm8sIENvbG9yaW5ncyk7XG4gICAgU29tZShJZC5NYXAuZmlsdGVyKChpZCcsIF8pID0+IGlkID09IGlkJywgY29sb3JfbWFwKSk7XG4gIHwgXyA9PiBOb25lXG4gIH07XG5cbmxldCB2aWV3ID1cbiAgICAoXG4gICAgICB+Z2xvYmFsczogR2xvYmFscy50LFxuICAgICAgfmluamVjdCxcbiAgICAgIH5leHBsYWluVGhpc01vZGVsOiBFeHBsYWluVGhpc01vZGVsLnQsXG4gICAgICBpbmZvOiBvcHRpb24oSW5mby50KSxcbiAgICApID0+IHtcbiAgbGV0IChzeW5fZm9ybSwgKGV4cGxhbmF0aW9uLCBfKSwgZXhhbXBsZSkgPVxuICAgIGdldF9kb2MofmRvY3M9ZXhwbGFpblRoaXNNb2RlbCwgaW5mbywgTWVzc2FnZUNvbnRlbnQoaW5qZWN0LCBnbG9iYWxzKSk7XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLmlkKFwic2lkZS1iYXJcIiksXG4gICAgW1xuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1jbHNzKFtcImV4cGxhaW4tdGhpc1wiXSksXG4gICAgICAgIFtcbiAgICAgICAgICBkaXYoXG4gICAgICAgICAgICB+YXR0cj1jbHNzKFtcInRvcC1iYXJcIl0pLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBXaWRnZXRzLnRvZ2dsZShcbiAgICAgICAgICAgICAgICB+dG9vbHRpcD1cIlRvZ2dsZSBoaWdobGlnaHRpbmdcIixcbiAgICAgICAgICAgICAgICBcIvCflIZcIixcbiAgICAgICAgICAgICAgICBnbG9iYWxzLnNldHRpbmdzLmV4cGxhaW5UaGlzLmhpZ2hsaWdodCA9PSBBbGwsXG4gICAgICAgICAgICAgICAgXyA9PlxuICAgICAgICAgICAgICAgIGdsb2JhbHMuaW5qZWN0X2dsb2JhbChcbiAgICAgICAgICAgICAgICAgIFNldChFeHBsYWluVGhpcyhTZXRIaWdobGlnaHQoVG9nZ2xlKSkpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgZGl2KFxuICAgICAgICAgICAgICAgIH5hdHRyPVxuICAgICAgICAgICAgICAgICAgQXR0ci5tYW55KFtcbiAgICAgICAgICAgICAgICAgICAgY2xzcyhbXCJjbG9zZVwiXSksXG4gICAgICAgICAgICAgICAgICAgIEF0dHIub25fY2xpY2soXyA9PlxuICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHMuaW5qZWN0X2dsb2JhbChTZXQoRXhwbGFpblRoaXMoVG9nZ2xlU2hvdykpKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgICAgICAgW3RleHQoXCJ4XCIpXSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgKSxcbiAgICAgICAgXVxuICAgICAgICBAIFtcbiAgICAgICAgICBzZWN0aW9uKFxuICAgICAgICAgICAgfnNlY3Rpb25fY2xzcz1cInN5bnRhY3RpYy1mb3JtXCIsXG4gICAgICAgICAgICB+dGl0bGU9XG4gICAgICAgICAgICAgIHN3aXRjaCAoaW5mbykge1xuICAgICAgICAgICAgICB8IE5vbmUgPT4gXCJXaGl0ZXNwYWNlIG9yIENvbW1lbnRcIlxuICAgICAgICAgICAgICB8IFNvbWUoaW5mbykgPT4gSW5mby5jbHNfb2YoaW5mbykgfD4gQ2xzLnNob3dcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN5bl9mb3JtIEAgZXhwbGFuYXRpb24sXG4gICAgICAgICAgKSxcbiAgICAgICAgXVxuICAgICAgICBAIChcbiAgICAgICAgICBleGFtcGxlID09IFtdXG4gICAgICAgICAgICA/IFtdXG4gICAgICAgICAgICA6IFtzZWN0aW9uKH5zZWN0aW9uX2Nsc3M9XCJleGFtcGxlc1wiLCB+dGl0bGU9XCJFeGFtcGxlc1wiLCBleGFtcGxlKV1cbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgXSxcbiAgKTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5cbmxldCB2aWV3ID0gaWQgPT4gTm9kZS5zcGFuKH5hdHRyPUF0dHIuaWQoaWQpLCBbTm9kZS50ZXh0KFwiWFwiKV0pO1xuIiwibGV0IGlzX21hYyA9IHJlZihmYWxzZSk7XG4iLCJbQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIGRpciA9XG4gIHwgS2V5VXBcbiAgfCBLZXlEb3duO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIGtleSA9XG4gIHwgRChzdHJpbmcpXG4gIHwgVShzdHJpbmcpO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIHN5cyA9XG4gIHwgTWFjXG4gIHwgUEM7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgeW9qc29uKV1cbnR5cGUgaGVsZCA9XG4gIHwgRG93blxuICB8IFVwO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbildXG50eXBlIHQgPSB7XG4gIGtleSxcbiAgc3lzLFxuICBzaGlmdDogaGVsZCxcbiAgbWV0YTogaGVsZCxcbiAgY3RybDogaGVsZCxcbiAgYWx0OiBoZWxkLFxufTtcblxubGV0IGtleV9vZiA9IChkaXI6IGRpciwgZXZ0KToga2V5ID0+IHtcbiAgbGV0IGtleSA9IEpzVXRpbC5nZXRfa2V5KGV2dCk7XG4gIHN3aXRjaCAoZGlyKSB7XG4gIHwgS2V5VXAgPT4gVShrZXkpXG4gIHwgS2V5RG93biA9PiBEKGtleSlcbiAgfTtcbn07XG5cbmxldCB0b19oZWxkOiBib29sID0+IGhlbGQgPSBiID0+IGIgPyBEb3duIDogVXA7XG5cbmxldCBtayA9IChkaXIsIGV2dCk6IHQgPT4ge1xuICBrZXk6IGtleV9vZihkaXIsIGV2dCksXG4gIHN5czogT3MuaXNfbWFjXiA/IE1hYyA6IFBDLFxuICBzaGlmdDogdG9faGVsZChKc1V0aWwuc2hpZnRfaGVsZChldnQpKSxcbiAgbWV0YTogdG9faGVsZChKc1V0aWwubWV0YV9oZWxkKGV2dCkpLFxuICBjdHJsOiB0b19oZWxkKEpzVXRpbC5jdHJsX2hlbGQoZXZ0KSksXG4gIGFsdDogdG9faGVsZChKc1V0aWwuYWx0X2hlbGQoZXZ0KSksXG59O1xuXG5sZXQgbW9kaWZpZXJfc3RyaW5nID0gKGg6IGhlbGQsIG0pOiBzdHJpbmcgPT4gaCA9PSBEb3duID8gXCIgKyBcIiArKyBtIDogXCJcIjtcblxubGV0IG1vZGlmaWVyc19zdHJpbmcgPSAoa2V5OiB0KTogc3RyaW5nID0+XG4gIG1vZGlmaWVyX3N0cmluZyhrZXkuc2hpZnQsIFwiU0hJRlRcIilcbiAgKysgbW9kaWZpZXJfc3RyaW5nKGtleS5tZXRhLCBcIk1FVEFcIilcbiAgKysgbW9kaWZpZXJfc3RyaW5nKGtleS5jdHJsLCBcIkNUUkxcIilcbiAgKysgbW9kaWZpZXJfc3RyaW5nKGtleS5hbHQsIFwiQUxUXCIpO1xuXG5sZXQga2V5X2Rpcl9zdHJpbmcgPSAoa2V5OiB0KTogc3RyaW5nID0+XG4gIHN3aXRjaCAoa2V5LmtleSkge1xuICB8IFUoa2V5KSA9PiBcIihVUCk6IFwiICsrIGtleVxuICB8IEQoa2V5KSA9PiBcIihETik6IFwiICsrIGtleVxuICB9O1xuXG5sZXQgdG9fc3RyaW5nID0gKGtleTogdCk6IHN0cmluZyA9PlxuICBcIktFWVwiICsrIGtleV9kaXJfc3RyaW5nKGtleSkgKysgbW9kaWZpZXJzX3N0cmluZyhrZXkpO1xuIiwib3BlbiBIYXozbGNvcmU7XG5cbmxldCBpc19kaWdpdCA9IHMgPT4gUmUuU3RyLihzdHJpbmdfbWF0Y2gocmVnZXhwKFwiXlswLTldJFwiKSwgcywgMCkpO1xubGV0IGlzX2Zfa2V5ID0gcyA9PiBSZS5TdHIuKHN0cmluZ19tYXRjaChyZWdleHAoXCJeRlswLTldWzAtOV0qJFwiKSwgcywgMCkpO1xuXG5sZXQgaGFuZGxlX2tleV9ldmVudCA9IChrOiBLZXkudCk6IG9wdGlvbihVcGRhdGUudCkgPT4ge1xuICBsZXQgbm93ID0gKGE6IEFjdGlvbi50KTogb3B0aW9uKFVwZGF0ZUFjdGlvbi50KSA9PlxuICAgIFNvbWUoUGVyZm9ybUFjdGlvbihhKSk7XG4gIHN3aXRjaCAoaykge1xuICB8IHtrZXk6IFUoa2V5KSwgX30gPT5cbiAgICAvKiBLZXUtVVBwRXZlbnRzOlxuICAgICAgIE5PVEU6IFJlbWVtYmVyIHRoYXQgc2luY2UgdGhlcmUgaXMgYSBrZXl1cCBmb3IgZXZlcnlcbiAgICAgICBrZXlkb3duLCBtYWtpbmcgYW4gdXBkYXRlIGhlcmUgbWF5IHRyaWdnZXIgYW4gZW50aXJlXG4gICAgICAgZXh0cmEgcmVkcmF3LCBjb250aW5nZW50IG9uIG1vZGVsLmN1dG9mZiAqL1xuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgfCBcIkFsdFwiID0+IFNvbWUoR2xvYmFscyhTZXRTaG93QmFja3BhY2tUYXJnZXRzKGZhbHNlKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IF8sIHNoaWZ0OiBEb3duLCBtZXRhOiBVcCwgY3RybDogVXAsIGFsdDogVXB9XG4gICAgICB3aGVuIGlzX2Zfa2V5KGtleSkgPT5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgIHwgXCJGN1wiID0+IFNvbWUoQmVuY2htYXJrKFN0YXJ0KSlcbiAgICB8IF8gPT4gU29tZShEZWJ1Z0NvbnNvbGUoa2V5KSlcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IF8sIHNoaWZ0LCBtZXRhOiBVcCwgY3RybDogVXAsIGFsdDogVXB9ID0+XG4gICAgc3dpdGNoIChzaGlmdCwga2V5KSB7XG4gICAgfCAoVXAsIFwiQXJyb3dMZWZ0XCIpID0+IG5vdyhNb3ZlKExvY2FsKExlZnQoQnlDaGFyKSkpKVxuICAgIHwgKFVwLCBcIkFycm93UmlnaHRcIikgPT4gbm93KE1vdmUoTG9jYWwoUmlnaHQoQnlDaGFyKSkpKVxuICAgIHwgKFVwLCBcIkFycm93VXBcIikgPT4gbm93KE1vdmUoTG9jYWwoVXApKSlcbiAgICB8IChVcCwgXCJBcnJvd0Rvd25cIikgPT4gbm93KE1vdmUoTG9jYWwoRG93bikpKVxuICAgIHwgKFVwLCBcIkhvbWVcIikgPT4gbm93KE1vdmUoRXh0cmVtZShMZWZ0KEJ5VG9rZW4pKSkpXG4gICAgfCAoVXAsIFwiRW5kXCIpID0+IG5vdyhNb3ZlKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSlcbiAgICB8IChVcCwgXCJCYWNrc3BhY2VcIikgPT4gbm93KERlc3RydWN0KExlZnQpKVxuICAgIHwgKFVwLCBcIkRlbGV0ZVwiKSA9PiBub3coRGVzdHJ1Y3QoUmlnaHQpKVxuICAgIHwgKFVwLCBcIkVzY2FwZVwiKSA9PiBub3coVW5zZWxlY3QoTm9uZSkpXG4gICAgfCAoVXAsIFwiVGFiXCIpID0+IFNvbWUoVEFCKVxuICAgIHwgKFVwLCBcIkYxMlwiKSA9PiBub3coSnVtcChCaW5kaW5nU2l0ZU9mSW5kaWNhdGVkVmFyKSlcbiAgICB8IChEb3duLCBcIlRhYlwiKSA9PiBTb21lKE1vdmVUb05leHRIb2xlKExlZnQpKVxuICAgIHwgKERvd24sIFwiQXJyb3dMZWZ0XCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKExlZnQoQnlUb2tlbikpKSkpXG4gICAgfCAoRG93biwgXCJBcnJvd1JpZ2h0XCIpID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKFJpZ2h0KEJ5VG9rZW4pKSkpKVxuICAgIHwgKERvd24sIFwiQXJyb3dVcFwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChVcCkpKSlcbiAgICB8IChEb3duLCBcIkFycm93RG93blwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChEb3duKSkpKVxuICAgIHwgKERvd24sIFwiSG9tZVwiKSA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKExlZnQoQnlUb2tlbikpKSkpXG4gICAgfCAoRG93biwgXCJFbmRcIikgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShSaWdodChCeVRva2VuKSkpKSlcbiAgICB8IChfLCBcIkVudGVyXCIpID0+IG5vdyhJbnNlcnQoRm9ybS5saW5lYnJlYWspKVxuICAgIHwgXyB3aGVuIFN0cmluZy5sZW5ndGgoa2V5KSA9PSAxID0+XG4gICAgICAvKiBOb3RlOiBsZW5ndGg9PTEgcHJldmVudCBzcGVjaWFscyBsaWtlXG4gICAgICAgKiBTSElGVCBmcm9tIGJlaW5nIGNhcHR1cmVkIGhlcmUgKi9cbiAgICAgIG5vdyhJbnNlcnQoa2V5KSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogTWFjLCBzaGlmdDogRG93biwgbWV0YTogRG93biwgY3RybDogVXAsIGFsdDogVXB9ID0+XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICB8IFwiWlwiXG4gICAgfCBcInpcIiA9PiBTb21lKFJlZG8pXG4gICAgfCBcIkFycm93TGVmdFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoTGVmdChCeVRva2VuKSkpKSlcbiAgICB8IFwiQXJyb3dSaWdodFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKEV4dHJlbWUoUmlnaHQoQnlUb2tlbikpKSkpXG4gICAgfCBcIkFycm93VXBcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKFVwKSkpKVxuICAgIHwgXCJBcnJvd0Rvd25cIiA9PiBub3coU2VsZWN0KFJlc2l6ZShFeHRyZW1lKERvd24pKSkpXG4gICAgfCBfID0+IE5vbmVcbiAgICB9XG4gIHwge2tleTogRChrZXkpLCBzeXM6IFBDLCBzaGlmdDogRG93biwgbWV0YTogVXAsIGN0cmw6IERvd24sIGFsdDogVXB9ID0+XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICB8IFwiWlwiXG4gICAgfCBcInpcIiA9PiBTb21lKFJlZG8pXG4gICAgfCBcIkFycm93TGVmdFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKExlZnQoQnlUb2tlbikpKSkpXG4gICAgfCBcIkFycm93UmlnaHRcIiA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChSaWdodChCeVRva2VuKSkpKSlcbiAgICB8IFwiQXJyb3dVcFwiID0+IG5vdyhTZWxlY3QoUmVzaXplKExvY2FsKFVwKSkpKVxuICAgIHwgXCJBcnJvd0Rvd25cIiA9PiBub3coU2VsZWN0KFJlc2l6ZShMb2NhbChEb3duKSkpKVxuICAgIHwgXCJIb21lXCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShVcCkpKSlcbiAgICB8IFwiRW5kXCIgPT4gbm93KFNlbGVjdChSZXNpemUoRXh0cmVtZShEb3duKSkpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBNYWMsIHNoaWZ0OiBVcCwgbWV0YTogRG93biwgY3RybDogVXAsIGFsdDogVXB9ID0+XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICB8IFwielwiID0+IFNvbWUoVW5kbylcbiAgICB8IFwiZFwiID0+IG5vdyhTZWxlY3QoVGVybShDdXJyZW50KSkpXG4gICAgfCBcInBcIiA9PiBTb21lKFBlcmZvcm1BY3Rpb24oUGlja191cCkpXG4gICAgfCBcImFcIiA9PiBub3coU2VsZWN0KEFsbCkpXG4gICAgfCBcImtcIiA9PiBTb21lKFJlcGFyc2VDdXJyZW50RWRpdG9yKVxuICAgIHwgXCIvXCIgPT4gU29tZShBc3Npc3RhbnQoUHJvbXB0KFR5RGkpKSlcbiAgICB8IF8gd2hlbiBpc19kaWdpdChrZXkpID0+IFNvbWUoU3dpdGNoU2NyYXRjaFNsaWRlKGludF9vZl9zdHJpbmcoa2V5KSkpXG4gICAgfCBcIkFycm93TGVmdFwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoTGVmdChCeVRva2VuKSkpKVxuICAgIHwgXCJBcnJvd1JpZ2h0XCIgPT4gbm93KE1vdmUoRXh0cmVtZShSaWdodChCeVRva2VuKSkpKVxuICAgIHwgXCJBcnJvd1VwXCIgPT4gbm93KE1vdmUoRXh0cmVtZShVcCkpKVxuICAgIHwgXCJBcnJvd0Rvd25cIiA9PiBub3coTW92ZShFeHRyZW1lKERvd24pKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCB7a2V5OiBEKGtleSksIHN5czogUEMsIHNoaWZ0OiBVcCwgbWV0YTogVXAsIGN0cmw6IERvd24sIGFsdDogVXB9ID0+XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICB8IFwielwiID0+IFNvbWUoVW5kbylcbiAgICB8IFwiZFwiID0+IG5vdyhTZWxlY3QoVGVybShDdXJyZW50KSkpXG4gICAgfCBcInBcIiA9PiBTb21lKFBlcmZvcm1BY3Rpb24oUGlja191cCkpXG4gICAgfCBcImFcIiA9PiBub3coU2VsZWN0KEFsbCkpXG4gICAgfCBcImtcIiA9PiBTb21lKFJlcGFyc2VDdXJyZW50RWRpdG9yKVxuICAgIHwgXCIvXCIgPT4gU29tZShBc3Npc3RhbnQoUHJvbXB0KFR5RGkpKSlcbiAgICB8IF8gd2hlbiBpc19kaWdpdChrZXkpID0+IFNvbWUoU3dpdGNoU2NyYXRjaFNsaWRlKGludF9vZl9zdHJpbmcoa2V5KSkpXG4gICAgfCBcIkFycm93TGVmdFwiID0+IG5vdyhNb3ZlKExvY2FsKExlZnQoQnlUb2tlbikpKSlcbiAgICB8IFwiQXJyb3dSaWdodFwiID0+IG5vdyhNb3ZlKExvY2FsKFJpZ2h0KEJ5VG9rZW4pKSkpXG4gICAgfCBcIkhvbWVcIiA9PiBub3coTW92ZShFeHRyZW1lKFVwKSkpXG4gICAgfCBcIkVuZFwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoRG93bikpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzOiBNYWMsIHNoaWZ0OiBVcCwgbWV0YTogVXAsIGN0cmw6IERvd24sIGFsdDogVXB9ID0+XG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICB8IFwiYVwiID0+IG5vdyhNb3ZlKEV4dHJlbWUoTGVmdChCeVRva2VuKSkpKVxuICAgIHwgXCJlXCIgPT4gbm93KE1vdmUoRXh0cmVtZShSaWdodChCeVRva2VuKSkpKVxuICAgIHwgXyA9PiBOb25lXG4gICAgfVxuICB8IHtrZXk6IEQoa2V5KSwgc3lzLCBzaGlmdDogVXAsIG1ldGE6IFVwLCBjdHJsOiBVcCwgYWx0OiBEb3dufSA9PlxuICAgIHN3aXRjaCAoc3lzLCBrZXkpIHtcbiAgICB8IChfLCBcIkFycm93TGVmdFwiKSA9PiBub3coTW92ZVRvQmFja3BhY2tUYXJnZXQoTGVmdChCeVRva2VuKSkpXG4gICAgfCAoXywgXCJBcnJvd1JpZ2h0XCIpID0+IG5vdyhNb3ZlVG9CYWNrcGFja1RhcmdldChSaWdodChCeVRva2VuKSkpXG4gICAgfCAoXywgXCJBbHRcIikgPT4gU29tZShHbG9iYWxzKFNldFNob3dCYWNrcGFja1RhcmdldHModHJ1ZSkpKVxuICAgIHwgKF8sIFwiQXJyb3dVcFwiKSA9PiBub3coTW92ZVRvQmFja3BhY2tUYXJnZXQoVXApKVxuICAgIHwgKF8sIFwiQXJyb3dEb3duXCIpID0+IG5vdyhNb3ZlVG9CYWNrcGFja1RhcmdldChEb3duKSlcbiAgICB8IF8gPT4gTm9uZVxuICAgIH1cbiAgfCBfID0+IE5vbmVcbiAgfTtcbn07XG4iLCJvcGVuIFZpcnR1YWxfZG9tLlZkb207XG5vcGVuIEpzX29mX29jYW1sO1xub3BlbiBOb2RlO1xub3BlbiBVdGlsLldlYjtcbm9wZW4gV2lkZ2V0cztcblxubGV0IGV4cG9ydF9wZXJzaXN0ZW50X2RhdGEgPSAofmluamVjdDogVXBkYXRlLnQgPT4gJ2EpID0+XG4gIGJ1dHRvbl9uYW1lZChcbiAgICBJY29ucy5zcHJvdXQsXG4gICAgXyA9PiBpbmplY3QoRXhwb3J0UGVyc2lzdGVudERhdGEpLFxuICAgIH50b29sdGlwPVwiRXhwb3J0IEFsbCBQZXJzaXN0ZW50IERhdGFcIixcbiAgKTtcblxubGV0IHJlc2V0X2hhemVsID1cbiAgYnV0dG9uKFxuICAgIEljb25zLmJvbWIsXG4gICAgXyA9PiB7XG4gICAgICBsZXQgY29uZmlybWVkID1cbiAgICAgICAgSnNVdGlsLmNvbmZpcm0oXG4gICAgICAgICAgXCJBcmUgeW91IFNVUkUgeW91IHdhbnQgdG8gcmVzZXQgSGF6ZWwgdG8gaXRzIGluaXRpYWwgc3RhdGU/IFlvdSB3aWxsIGxvc2UgYW55IGV4aXN0aW5nIGNvZGUgdGhhdCB5b3UgaGF2ZSB3cml0dGVuLCBhbmQgY291cnNlIHN0YWZmIGhhdmUgbm8gd2F5IHRvIHJlc3RvcmUgaXQhXCIsXG4gICAgICAgICk7XG4gICAgICBpZiAoY29uZmlybWVkKSB7XG4gICAgICAgIEpzVXRpbC5jbGVhcl9sb2NhbHN0b3JlKCk7XG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uIyNyZWxvYWQ7XG4gICAgICB9O1xuICAgICAgVmlydHVhbF9kb20uVmRvbS5FZmZlY3QuSWdub3JlO1xuICAgIH0sXG4gICAgfnRvb2x0aXA9XCJDbGVhciBMb2NhbCBTdG9yYWdlIGFuZCBSZWxvYWQgKExPU0UgQUxMIERBVEEpXCIsXG4gICk7XG5cbmxldCByZXBhcnNlID0gKH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhKSA9PlxuICBidXR0b24oXG4gICAgSWNvbnMuYmFja3BhY2ssXG4gICAgXyA9PiBpbmplY3QoUmVwYXJzZUN1cnJlbnRFZGl0b3IpLFxuICAgIH50b29sdGlwPVwiUmVwYXJzZSBDdXJyZW50IEVkaXRvclwiLFxuICApO1xuXG5sZXQgc2V0dGluZ3NfbWVudSA9XG4gICAgKFxuICAgICAgfmluamVjdCxcbiAgICAgIH5zZXR0aW5ncyBhc1xuICAgICAgICB7XG4gICAgICAgICAgY29yZToge2V2YWx1YXRpb24sIF99IGFzIGNvcmUsXG4gICAgICAgICAgYmVuY2htYXJrLFxuICAgICAgICAgIHNlY29uZGFyeV9pY29ucyxcbiAgICAgICAgICBleHBsYWluVGhpcyxcbiAgICAgICAgICBfLFxuICAgICAgICB9OiBTZXR0aW5ncy50LFxuICAgICkgPT4ge1xuICBsZXQgdG9nZ2xlID0gKGljb24sIHRvb2x0aXAsIGJvb2wsIHNldHRpbmcpID0+XG4gICAgdG9nZ2xlX25hbWVkKGljb24sIH50b29sdGlwLCBib29sLCBfID0+XG4gICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLkdsb2JhbHMoU2V0KHNldHRpbmcpKSlcbiAgICApO1xuICBbXG4gICAgdG9nZ2xlKFwiz4RcIiwgXCJUb2dnbGUgU3RhdGljc1wiLCBjb3JlLnN0YXRpY3MsIFN0YXRpY3MpLFxuICAgIHRvZ2dsZShcIuKHslwiLCBcIlRvZ2dsZSBDb21wbGV0aW9uXCIsIGNvcmUuYXNzaXN0LCBBc3Npc3QpLFxuICAgIHRvZ2dsZShcIuKGtVwiLCBcIlNob3cgV2hpdGVzcGFjZVwiLCBzZWNvbmRhcnlfaWNvbnMsIFNlY29uZGFyeUljb25zKSxcbiAgICB0b2dnbGUoXCLinJNcIiwgXCJQcmludCBCZW5jaG1hcmtzXCIsIGJlbmNobWFyaywgQmVuY2htYXJrKSxcbiAgICB0b2dnbGUoXCLwnZu/XCIsIFwiVG9nZ2xlIER5bmFtaWNzXCIsIGNvcmUuZHluYW1pY3MsIER5bmFtaWNzKSxcbiAgICB0b2dnbGUoXCLwnZGSXCIsIFwiU2hvdyBFbGFib3JhdGlvblwiLCBjb3JlLmVsYWJvcmF0ZSwgRWxhYm9yYXRlKSxcbiAgICB0b2dnbGUoXG4gICAgICBcIs67XCIsXG4gICAgICBcIlNob3cgRnVuY3Rpb24gQm9kaWVzXCIsXG4gICAgICBldmFsdWF0aW9uLnNob3dfZm5fYm9kaWVzLFxuICAgICAgRXZhbHVhdGlvbihTaG93Rm5Cb2RpZXMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCJ8XCIsXG4gICAgICBcIlNob3cgQ2FzZSBDbGF1c2VzXCIsXG4gICAgICBldmFsdWF0aW9uLnNob3dfY2FzZV9jbGF1c2VzLFxuICAgICAgRXZhbHVhdGlvbihTaG93Q2FzZUNsYXVzZXMpLFxuICAgICksXG4gICAgdG9nZ2xlKFxuICAgICAgXCJmXCIsXG4gICAgICBcIlNob3cgZml4cG9pbnRzXCIsXG4gICAgICBldmFsdWF0aW9uLnNob3dfZml4cG9pbnRzLFxuICAgICAgRXZhbHVhdGlvbihTaG93Rml4cG9pbnRzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFVuaWNvZGUuY2FzdEFycm93U3ltLFxuICAgICAgXCJTaG93IGNhc3RzXCIsXG4gICAgICBldmFsdWF0aW9uLnNob3dfY2FzdHMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dDYXN0cyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcIvCflI1cIixcbiAgICAgIFwiU2hvdyBMb29rdXAgU3RlcHNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19sb29rdXBfc3RlcHMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dMb29rdXBzKSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwi4o+v77iPXCIsXG4gICAgICBcIlNob3cgU3RlcHBlciBGaWx0ZXJzXCIsXG4gICAgICBldmFsdWF0aW9uLnNob3dfc3RlcHBlcl9maWx0ZXJzLFxuICAgICAgRXZhbHVhdGlvbihTaG93RmlsdGVycyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcIvCfpKtcIixcbiAgICAgIFwiU2hvdyBIaWRkZW4gU3RlcHNcIixcbiAgICAgIGV2YWx1YXRpb24uc2hvd19oaWRkZW5fc3RlcHMsXG4gICAgICBFdmFsdWF0aW9uKFNob3dIaWRkZW5TdGVwcyksXG4gICAgKSxcbiAgICB0b2dnbGUoXG4gICAgICBcIj9cIixcbiAgICAgIFwiU2hvdyBEb2NzIFNpZGViYXJcIixcbiAgICAgIGV4cGxhaW5UaGlzLnNob3csXG4gICAgICBFeHBsYWluVGhpcyhUb2dnbGVTaG93KSxcbiAgICApLFxuICAgIHRvZ2dsZShcbiAgICAgIFwi8J+RjVwiLFxuICAgICAgXCJTaG93IERvY3MgRmVlZGJhY2tcIixcbiAgICAgIGV4cGxhaW5UaGlzLnNob3dfZmVlZGJhY2ssXG4gICAgICBFeHBsYWluVGhpcyhUb2dnbGVTaG93RmVlZGJhY2spLFxuICAgICksXG4gIF07XG59O1xuXG5sZXQgZXhwb3J0X21lbnUgPSAofmluamVjdCwgfnNldHRpbmdzOiBTZXR0aW5ncy50LCBlZGl0b3JzOiBFZGl0b3JzLnQpID0+XG4gIHN3aXRjaCAoZWRpdG9ycykge1xuICB8IFNjcmF0Y2goc2xpZGVfaWR4LCBzbGlkZXMpID0+XG4gICAgbGV0IHN0YXRlID0gTGlzdC5udGgoc2xpZGVzLCBzbGlkZV9pZHgpO1xuICAgIFtTY3JhdGNoTW9kZS5leHBvcnRfYnV0dG9uKHN0YXRlKV07XG4gIHwgRG9jdW1lbnRhdGlvbihuYW1lLCBzbGlkZXMpID0+XG4gICAgbGV0IHN0YXRlID0gTGlzdC5hc3NvYyhuYW1lLCBzbGlkZXMpO1xuICAgIFtTY3JhdGNoTW9kZS5leHBvcnRfYnV0dG9uKHN0YXRlKV07XG4gIHwgRXhlcmNpc2VzKF8sIF8sIGV4ZXJjaXNlKSB3aGVuIHNldHRpbmdzLmluc3RydWN0b3JfbW9kZSA9PiBbXG4gICAgICBleHBvcnRfcGVyc2lzdGVudF9kYXRhKH5pbmplY3QpLFxuICAgICAgRXhlcmNpc2VNb2RlLmV4cG9ydF9zdWJtaXNzaW9uKH5zZXR0aW5ncyksXG4gICAgICBFeGVyY2lzZU1vZGUuaW5zdHJ1Y3Rvcl9leHBvcnQoZXhlcmNpc2UpLFxuICAgICAgRXhlcmNpc2VNb2RlLmluc3RydWN0b3JfdHJhbnNpdGlvbmFyeV9leHBvcnQoZXhlcmNpc2UpLFxuICAgICAgRXhlcmNpc2VNb2RlLmluc3RydWN0b3JfZ3JhZGluZ19leHBvcnQoZXhlcmNpc2UpLFxuICAgIF1cbiAgfCBFeGVyY2lzZXMoXykgPT4gW0V4ZXJjaXNlTW9kZS5leHBvcnRfc3VibWlzc2lvbih+c2V0dGluZ3MpXVxuICB9O1xuXG5sZXQgaW1wb3J0X21lbnUgPSAofmluamVjdCwgZWRpdG9yczogRWRpdG9ycy50KSA9PlxuICBzd2l0Y2ggKGVkaXRvcnMpIHtcbiAgfCBTY3JhdGNoKF8pXG4gIHwgRG9jdW1lbnRhdGlvbihfKSA9PiBbXG4gICAgICBTY3JhdGNoTW9kZS5pbXBvcnRfYnV0dG9uKGluamVjdCksXG4gICAgICBTY3JhdGNoTW9kZS5yZXNldF9idXR0b24oaW5qZWN0KSxcbiAgICBdXG4gIHwgRXhlcmNpc2VzKF8pID0+IFtcbiAgICAgIEV4ZXJjaXNlTW9kZS5pbXBvcnRfc3VibWlzc2lvbih+aW5qZWN0KSxcbiAgICAgIEV4ZXJjaXNlTW9kZS5yZXNldF9idXR0b24oaW5qZWN0KSxcbiAgICBdXG4gIH07XG5cbmxldCBzdWJtZW51ID0gKH50b29sdGlwLCB+aWNvbiwgbWVudSkgPT5cbiAgZGl2KFxuICAgIH5hdHRyPWNsc3MoW1widG9wLW1lbnUtaXRlbVwiXSksXG4gICAgW1xuICAgICAgZGl2KFxuICAgICAgICB+YXR0cj1BdHRyLm1hbnkoW2Nsc3MoW1wic3VibWVudS1pY29uXCJdKSwgQXR0ci50aXRsZSh0b29sdGlwKV0pLFxuICAgICAgICBbZGl2KH5hdHRyPWNsc3MoW1wiaWNvblwiXSksIFtpY29uXSldLFxuICAgICAgKSxcbiAgICAgIGRpdih+YXR0cj1jbHNzKFtcInN1Ym1lbnVcIl0pLCBtZW51KSxcbiAgICBdLFxuICApO1xuXG5sZXQgdmlldyA9XG4gICAgKH5pbmplY3Q6IFVwZGF0ZS50ID0+ICdhLCB+c2V0dGluZ3M6IFNldHRpbmdzLnQsIH5lZGl0b3JzOiBFZGl0b3JzLnQpID0+IFtcbiAgYSh+YXR0cj1jbHNzKFtcIm51dC1pY29uXCJdKSwgW0ljb25zLmhhemVsbnV0XSksXG4gIGRpdihcbiAgICB+YXR0cj1jbHNzKFtcIm51dC1tZW51XCJdKSxcbiAgICBbXG4gICAgICBzdWJtZW51KFxuICAgICAgICB+dG9vbHRpcD1cIlNldHRpbmdzXCIsXG4gICAgICAgIH5pY29uPUljb25zLmdlYXIsXG4gICAgICAgIHNldHRpbmdzX21lbnUofmluamVjdCwgfnNldHRpbmdzKSxcbiAgICAgICksXG4gICAgICBzdWJtZW51KFxuICAgICAgICB+dG9vbHRpcD1cIkV4cG9ydFwiLFxuICAgICAgICB+aWNvbj1JY29ucy5leHBvcnQsXG4gICAgICAgIGV4cG9ydF9tZW51KH5pbmplY3QsIH5zZXR0aW5ncywgZWRpdG9ycyksXG4gICAgICApLFxuICAgICAgc3VibWVudShcbiAgICAgICAgfnRvb2x0aXA9XCJJbXBvcnRcIixcbiAgICAgICAgfmljb249SWNvbnMuaW1wb3J0LFxuICAgICAgICBpbXBvcnRfbWVudSh+aW5qZWN0LCBlZGl0b3JzKSxcbiAgICAgICksXG4gICAgICByZXBhcnNlKH5pbmplY3QpLFxuICAgICAgcmVzZXRfaGF6ZWwsXG4gICAgICBsaW5rKFxuICAgICAgICBJY29ucy5naXRodWIsXG4gICAgICAgIFwiaHR0cHM6Ly9naXRodWIuY29tL2hhemVsZ3JvdmUvaGF6ZWxcIixcbiAgICAgICAgfnRvb2x0aXA9XCJIYXplbCBvbiBHaXRIdWJcIixcbiAgICAgICksXG4gICAgICBsaW5rKEljb25zLmluZm8sIFwiaHR0cHM6Ly9oYXplbC5vcmdcIiwgfnRvb2x0aXA9XCJIYXplbCBIb21lcGFnZVwiKSxcbiAgICBdLFxuICApLFxuXTtcbiIsIm9wZW4gSnNfb2Zfb2NhbWw7XG5vcGVuIEhhejNsY29yZTtcbm9wZW4gVmlydHVhbF9kb20uVmRvbTtcbm9wZW4gVXRpbDtcbm9wZW4gT3B0VXRpbC5TeW50YXg7XG5vcGVuIE5vZGU7XG5cbmxldCBoYW5kbGVycyA9ICh+aW5qZWN0OiBVcGRhdGVBY3Rpb24udCA9PiBVaV9lZmZlY3QudCh1bml0KSwgbW9kZWwpID0+IHtcbiAgbGV0IGdldF9zZWxlY3Rpb24gPSAobW9kZWw6IE1vZGVsLnQpOiBvcHRpb24oc3RyaW5nKSA9PiB7XG4gICAgbGV0KiBzZWxlY3Rpb24gPSBtb2RlbC5hY3RpdmVfZWRpdG9yO1xuICAgIEVkaXRvcnMuZ2V0X3NlbGVjdGVkX2VkaXRvcih+c2VsZWN0aW9uLCBtb2RlbC5lZGl0b3JzLCBtb2RlbC5yZXN1bHRzKVxuICAgIHw+IE9wdGlvbi5tYXAoUHJpbnRlci50b19zdHJpbmdfc2VsZWN0aW9uKTtcbiAgfTtcbiAgbGV0IGtleV9oYW5kbGVyID1cbiAgICAgICh+aW5qZWN0LCB+ZGlyOiBLZXkuZGlyLCBldnQ6IEpzLnQoRG9tX2h0bWwua2V5Ym9hcmRFdmVudCkpXG4gICAgICA6IEVmZmVjdC50KHVuaXQpID0+XG4gICAgRWZmZWN0LihcbiAgICAgIHN3aXRjaCAoS2V5Ym9hcmQuaGFuZGxlX2tleV9ldmVudChLZXkubWsoZGlyLCBldnQpKSkge1xuICAgICAgfCBOb25lID0+IElnbm9yZVxuICAgICAgfCBTb21lKGFjdGlvbikgPT5cbiAgICAgICAgTWFueShbUHJldmVudF9kZWZhdWx0LCBTdG9wX3Byb3BhZ2F0aW9uLCBpbmplY3QoYWN0aW9uKV0pXG4gICAgICB9XG4gICAgKTtcbiAgW1xuICAgIEF0dHIub25fa2V5cHJlc3MoXyA9PiBFZmZlY3QuUHJldmVudF9kZWZhdWx0KSxcbiAgICBBdHRyLm9uX2tleXVwKGtleV9oYW5kbGVyKH5pbmplY3QsIH5kaXI9S2V5VXApKSxcbiAgICBBdHRyLm9uX2tleWRvd24oa2V5X2hhbmRsZXIofmluamVjdCwgfmRpcj1LZXlEb3duKSksXG4gICAgLyogc2FmZXR5IGhhbmRsZXIgaW4gY2FzZSBtb3VzZWRvd24gb3ZlcmxheSBkb2Vzbid0IGNhdGNoIGl0ICovXG4gICAgQXR0ci5vbl9tb3VzZXVwKF8gPT4gaW5qZWN0KEdsb2JhbHMoU2V0TW91c2Vkb3duKGZhbHNlKSkpKSxcbiAgICBBdHRyLm9uX2JsdXIoXyA9PiB7XG4gICAgICBKc1V0aWwuZm9jdXNfY2xpcGJvYXJkX3NoaW0oKTtcbiAgICAgIEVmZmVjdC5JZ25vcmU7XG4gICAgfSksXG4gICAgQXR0ci5vbl9mb2N1cyhfID0+IHtcbiAgICAgIEpzVXRpbC5mb2N1c19jbGlwYm9hcmRfc2hpbSgpO1xuICAgICAgRWZmZWN0Lklnbm9yZTtcbiAgICB9KSxcbiAgICBBdHRyLm9uX3Bhc3RlKGV2dCA9PiB7XG4gICAgICBsZXQgcGFzdGVkX3RleHQgPVxuICAgICAgICBKcy50b19zdHJpbmcoZXZ0IyMuY2xpcGJvYXJkRGF0YSMjZ2V0RGF0YShKcy5zdHJpbmcoXCJ0ZXh0XCIpKSlcbiAgICAgICAgfD4gU3RyLmdsb2JhbF9yZXBsYWNlKFN0ci5yZWdleHAoXCJcXG5bIF0qXCIpLCBcIlxcblwiKTtcbiAgICAgIERvbS5wcmV2ZW50RGVmYXVsdChldnQpO1xuICAgICAgaW5qZWN0KFVwZGF0ZUFjdGlvbi5QZXJmb3JtQWN0aW9uKFBhc3RlKHBhc3RlZF90ZXh0KSkpO1xuICAgIH0pLFxuICBdXG4gIEAgKFxuICAgIHN3aXRjaCAoZ2V0X3NlbGVjdGlvbihtb2RlbCkpIHtcbiAgICB8IE5vbmUgPT4gW11cbiAgICB8IFNvbWUoc2VsZWN0aW9uKSA9PiBbXG4gICAgICAgIEF0dHIub25fY29weShfID0+IHtcbiAgICAgICAgICBKc1V0aWwuY29weShzZWxlY3Rpb24pO1xuICAgICAgICAgIEVmZmVjdC5JZ25vcmU7XG4gICAgICAgIH0pLFxuICAgICAgICBBdHRyLm9uX2N1dChfID0+IHtcbiAgICAgICAgICBKc1V0aWwuY29weShzZWxlY3Rpb24pO1xuICAgICAgICAgIGluamVjdChVcGRhdGVBY3Rpb24uUGVyZm9ybUFjdGlvbihEZXN0cnVjdChMZWZ0KSkpO1xuICAgICAgICB9KSxcbiAgICAgIF1cbiAgICB9XG4gICk7XG59O1xuXG5sZXQgbWFpbl92aWV3ID1cbiAgICAoXG4gICAgICB+aW5qZWN0OiBVcGRhdGVBY3Rpb24udCA9PiBVaV9lZmZlY3QudCh1bml0KSxcbiAgICAgIHtnbG9iYWxzLCBlZGl0b3JzLCBleHBsYWluVGhpc01vZGVsLCByZXN1bHRzLCBzdGF0aWNzLCBhY3RpdmVfZWRpdG9yLCBffTogTW9kZWwudCxcbiAgICApID0+IHtcbiAgbGV0IGdsb2JhbHMgPSB7Li4uZ2xvYmFscywgaW5qZWN0X2dsb2JhbDogeCA9PiBpbmplY3QoR2xvYmFscyh4KSl9O1xuICBsZXQgc2V0dGluZ3MgPSBnbG9iYWxzLnNldHRpbmdzO1xuICBsZXQgXyA9XG4gICAgc3dpdGNoIChhY3RpdmVfZWRpdG9yKSB7XG4gICAgfCBTb21lKGFlKSA9PiBwcmludF9lbmRsaW5lKFwiU0VMRUNURUQ6IFwiICsrIEVkaXRvcnMuU2VsZWN0aW9uLnNob3coYWUpKVxuICAgIHwgTm9uZSA9PiBwcmludF9lbmRsaW5lKFwiTk8gQUNUSVZFIEVESVRPUlwiKVxuICAgIH07XG4gIGxldCBjdXJzb3JfaW5mbyA9XG4gICAgRWRpdG9ycy5nZXRfY3Vyc29yX2luZm8oXG4gICAgICB+c2VsZWN0aW9uPWFjdGl2ZV9lZGl0b3IsXG4gICAgICB+c2V0dGluZ3MsXG4gICAgICBlZGl0b3JzLFxuICAgICAgcmVzdWx0cyxcbiAgICAgIHN0YXRpY3MsXG4gICAgKTtcbiAgbGV0IHRvcF9iYXIgPVxuICAgIGRpdihcbiAgICAgIH5hdHRyPUF0dHIuaWQoXCJ0b3AtYmFyXCIpLFxuICAgICAgTnV0TWVudS52aWV3KH5pbmplY3QsIH5zZXR0aW5ncywgfmVkaXRvcnMpXG4gICAgICBAIFtkaXYofmF0dHI9QXR0ci5pZChcInRpdGxlXCIpLCBbdGV4dChcImhhemVsXCIpXSldXG4gICAgICBAIFtFZGl0b3JNb2RlVmlldy52aWV3KH5pbmplY3QsIH5zZXR0aW5ncywgfmVkaXRvcnMpXSxcbiAgICApO1xuICBsZXQgYm90dG9tX2JhciA9IEN1cnNvckluc3BlY3Rvci52aWV3KH5nbG9iYWxzLCBjdXJzb3JfaW5mbyk7XG4gIGxldCBzaWRlYmFyID1cbiAgICBzZXR0aW5ncy5leHBsYWluVGhpcy5zaG93ICYmIHNldHRpbmdzLmNvcmUuc3RhdGljc1xuICAgICAgPyBFeHBsYWluVGhpcy52aWV3KH5nbG9iYWxzLCB+aW5qZWN0LCB+ZXhwbGFpblRoaXNNb2RlbCwgY3Vyc29yX2luZm8pXG4gICAgICA6IGRpdihbXSk7XG4gIGxldCBoaWdobGlnaHRzID1cbiAgICBFeHBsYWluVGhpcy5nZXRfY29sb3JfbWFwKH5zZXR0aW5ncywgfmV4cGxhaW5UaGlzTW9kZWwsIGN1cnNvcl9pbmZvKTtcbiAgbGV0IGVkaXRvcnNfdmlldyA9XG4gICAgc3dpdGNoIChlZGl0b3JzKSB7XG4gICAgfCBTY3JhdGNoKGlkeCwgc3MpID0+XG4gICAgICBsZXQgZWRpdG9yID0gTGlzdC5udGgoc3MsIGlkeCk7XG4gICAgICBsZXQgcmVzdWx0X2tleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShzdHJpbmdfb2ZfaW50KGlkeCkpO1xuICAgICAgbGV0IHN0YXRpY3MgPSBDYWNoZWRTdGF0aWNzLmxvb2t1cChzdGF0aWNzLCByZXN1bHRfa2V5KTtcbiAgICAgIGxldCBzZWxlY3RlZCA9XG4gICAgICAgIHN3aXRjaCAoYWN0aXZlX2VkaXRvcikge1xuICAgICAgICB8IFNvbWUoRWRpdG9ycy5TZWxlY3Rpb24uU2NyYXRjaChpKSkgPT4gU29tZShpKVxuICAgICAgICB8IF8gPT4gTm9uZVxuICAgICAgICB9O1xuICAgICAgU2NyYXRjaE1vZGUudmlldyhcbiAgICAgICAgfnNlbGVjdD1cbiAgICAgICAgICBzID0+XG4gICAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLk1ha2VBY3RpdmUoRWRpdG9ycy5TZWxlY3Rpb24uU2NyYXRjaChzKSkpLFxuICAgICAgICB+aW5qZWN0LFxuICAgICAgICB+Z2xvYmFscyxcbiAgICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICAgIH5yZXN1bHRzLFxuICAgICAgICB+cmVzdWx0X2tleSxcbiAgICAgICAgfnN0YXRpY3MsXG4gICAgICAgIH5zZWxlY3RlZCxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgKTtcbiAgICB8IERvY3VtZW50YXRpb24obmFtZSwgc3MpID0+XG4gICAgICBsZXQgZWRpdG9yID0gTGlzdC5hc3NvYyhuYW1lLCBzcyk7XG4gICAgICBsZXQgcmVzdWx0X2tleSA9IFNjcmF0Y2hTbGlkZS5zY3JhdGNoX2tleShuYW1lKTtcbiAgICAgIGxldCBpbmZvID1cbiAgICAgICAgU2xpZGVDb250ZW50LmdldF9jb250ZW50KGVkaXRvcnMpXG4gICAgICAgIHw+IE9wdGlvbi5tYXAoaSA9PiBkaXYofmF0dHI9QXR0ci5pZChcInNsaWRlXCIpLCBbaV0pKVxuICAgICAgICB8PiBPcHRpb24udG9fbGlzdDtcbiAgICAgIGxldCBzdGF0aWNzID0gQ2FjaGVkU3RhdGljcy5sb29rdXAoc3RhdGljcywgcmVzdWx0X2tleSk7XG4gICAgICBsZXQgc2VsZWN0ZWQgPVxuICAgICAgICBzd2l0Y2ggKGFjdGl2ZV9lZGl0b3IpIHtcbiAgICAgICAgfCBTb21lKEVkaXRvcnMuU2VsZWN0aW9uLlNjcmF0Y2goaSkpID0+IFNvbWUoaSlcbiAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgfTtcbiAgICAgIGluZm9cbiAgICAgIEAgU2NyYXRjaE1vZGUudmlldyhcbiAgICAgICAgICB+c2VsZWN0PVxuICAgICAgICAgICAgcyA9PlxuICAgICAgICAgICAgICBpbmplY3QoVXBkYXRlQWN0aW9uLk1ha2VBY3RpdmUoRWRpdG9ycy5TZWxlY3Rpb24uU2NyYXRjaChzKSkpLFxuICAgICAgICAgIH5pbmplY3QsXG4gICAgICAgICAgfmdsb2JhbHMsXG4gICAgICAgICAgfmhpZ2hsaWdodHMsXG4gICAgICAgICAgfnJlc3VsdHMsXG4gICAgICAgICAgfnJlc3VsdF9rZXksXG4gICAgICAgICAgfnN0YXRpY3MsXG4gICAgICAgICAgfnNlbGVjdGVkLFxuICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgKTtcbiAgICB8IEV4ZXJjaXNlcyhfLCBfLCBleGVyY2lzZSkgPT5cbiAgICAgIGxldCBzZWxlY3Rpb24gPVxuICAgICAgICBzd2l0Y2ggKGFjdGl2ZV9lZGl0b3IpIHtcbiAgICAgICAgfCBTb21lKEVkaXRvcnMuU2VsZWN0aW9uLkV4ZXJjaXNlcyhwb3MsIHNlbCkpID0+IFNvbWUoKHBvcywgc2VsKSlcbiAgICAgICAgfCBfID0+IE5vbmVcbiAgICAgICAgfTtcbiAgICAgIEV4ZXJjaXNlTW9kZS52aWV3KFxuICAgICAgICB+c2VsZWN0PVxuICAgICAgICAgICgocG9zLCBzZWwpKSA9PlxuICAgICAgICAgICAgaW5qZWN0KFxuICAgICAgICAgICAgICBVcGRhdGVBY3Rpb24uTWFrZUFjdGl2ZShFZGl0b3JzLlNlbGVjdGlvbi5FeGVyY2lzZXMocG9zLCBzZWwpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgIH5pbmplY3QsXG4gICAgICAgIH5nbG9iYWxzLFxuICAgICAgICB+c2VsZWN0aW9uLFxuICAgICAgICB+aGlnaGxpZ2h0cyxcbiAgICAgICAgfnJlc3VsdHMsXG4gICAgICAgIH5leGVyY2lzZSxcbiAgICAgICk7XG4gICAgfTtcbiAgW1xuICAgIHRvcF9iYXIsXG4gICAgZGl2KFxuICAgICAgfmF0dHI9XG4gICAgICAgIEF0dHIubWFueShbXG4gICAgICAgICAgQXR0ci5pZChcIm1haW5cIiksXG4gICAgICAgICAgQXR0ci5jbGFzc2VzKFtTZXR0aW5ncy5Nb2RlbC5zaG93X21vZGUoc2V0dGluZ3MubW9kZSldKSxcbiAgICAgICAgXSksXG4gICAgICBlZGl0b3JzX3ZpZXcsXG4gICAgKSxcbiAgICBzaWRlYmFyLFxuICAgIGJvdHRvbV9iYXIsXG4gIF07XG59O1xuXG5sZXQgdmlldyA9ICh+aW5qZWN0OiBVcGRhdGVBY3Rpb24udCA9PiBVaV9lZmZlY3QudCh1bml0KSwgbW9kZWw6IE1vZGVsLnQpID0+XG4gIGRpdihcbiAgICB+YXR0cj1BdHRyLm1hbnkoQXR0ci5baWQoXCJwYWdlXCIpLCAuLi5oYW5kbGVycyh+aW5qZWN0LCBtb2RlbCldKSxcbiAgICBbXG4gICAgICBGb250U3BlY2ltZW4udmlldyhcImZvbnQtc3BlY2ltZW5cIiksXG4gICAgICBEZWNVdGlsLmZpbHRlcnMsXG4gICAgICBKc1V0aWwuY2xpcGJvYXJkX3NoaW0sXG4gICAgXVxuICAgIEAgbWFpbl92aWV3KH5pbmplY3QsIG1vZGVsKSxcbiAgKTtcbiIsImxldCBtZW1vaXplID0gKGY6ICdrID0+ICd2KTogKCdrID0+ICd2KSA9PiB7XG4gIGxldCB0YWJsZTogV2Vha01hcC50KCdrLCAndikgPSBXZWFrTWFwLm1rKCk7XG4gIGsgPT5cbiAgICBzd2l0Y2ggKFdlYWtNYXAuZ2V0KHRhYmxlLCBrKSkge1xuICAgIHwgTm9uZSA9PlxuICAgICAgbGV0IHYgPSBmKGspO1xuICAgICAgbGV0IF8gPSBXZWFrTWFwLnNldCh0YWJsZSwgaywgdik7XG4gICAgICB2O1xuICAgIHwgU29tZSh2KSA9PiB2XG4gICAgfTtcbn07XG4iLCJvcGVuIFNleHBsaWIuU3RkO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHlvanNvbiwgc2V4cCldXG50eXBlIHQgPSAoZmxvYXQsIFVwZGF0ZUFjdGlvbi50KTtcblxubGV0IG1rID0gKHVwZGF0ZSk6IHQgPT4ge1xuICAoSnNVdGlsLnRpbWVzdGFtcCgpLCB1cGRhdGUpO1xufTtcblxubGV0IHRvX3N0cmluZyA9ICgodGltZXN0YW1wLCB1cGRhdGUpOiB0KSA9PiB7XG4gIC8qbGV0IHN0YXR1cyA9XG4gICAgc3dpdGNoIChlbnRyeS5lcnJvcikge1xuICAgIHwgTm9uZSA9PiBcIlNVQ0NFU1NcIlxuICAgIHwgU29tZShmYWlsdXJlKSA9PiBcIkZBSUxVUkUoXCIgKysgVXBkYXRlQWN0aW9uLkZhaWx1cmUuc2hvdyhmYWlsdXJlKSArKyBcIilcIlxuICAgIH07Ki9cbiAgUHJpbnRmLnNwcmludGYoXG4gICAgXCIlLjBmOiAlc1wiLFxuICAgIHRpbWVzdGFtcCxcbiAgICBVcGRhdGVBY3Rpb24uc2hvdyh1cGRhdGUpLFxuICAgIC8vc3RhdHVzLFxuICApO1xufTtcblxubGV0IHNlcmlhbGl6ZSA9IChlbnRyeTogdCk6IHN0cmluZyA9PiB7XG4gIGVudHJ5IHw+IHNleHBfb2ZfdCB8PiBTZXhwbGliLlNleHAudG9fc3RyaW5nO1xufTtcblxubGV0IGRlc2VyaWFsaXplID0gKHM6IHN0cmluZyk6IHQgPT4ge1xuICBzIHw+IFNleHBsaWIuU2V4cC5vZl9zdHJpbmcgfD4gdF9vZl9zZXhwO1xufTtcbiIsIm9wZW4gSGF6M2xjb3JlO1xub3BlbiBTZXhwbGliLlN0ZDtcblxuW0BkZXJpdmluZyAoc2hvdyh7d2l0aF9wYXRoOiBmYWxzZX0pLCBzZXhwLCB5b2pzb24pXVxudHlwZSByZWFzb24gPVxuICB8IFVucmVjb2duaXplZFxuICB8IEZhaWx1cmUoQWN0aW9uLkZhaWx1cmUudCk7XG5cbltAZGVyaXZpbmcgKHNob3coe3dpdGhfcGF0aDogZmFsc2V9KSwgc2V4cCwgeW9qc29uKV1cbnR5cGUgdCA9IHtcbiAgcmVhc29uLFxuICBwcmlvcl9hdHRlbXB0czogaW50LFxufTtcblxubGV0IG1rID0gKH5wcmlvcl9hdHRlbXB0cz0wLCByZWFzb24pID0+IHtyZWFzb24sIHByaW9yX2F0dGVtcHRzfTtcblxubGV0IHJlcGxhY2Vfb3JfaW5jcmVtZW50X2F0dGVtcHRzID0gKHJlYXNvbiwgZmFpbGVkX2lucHV0OiB0KSA9PlxuICByZWFzb24gPT0gZmFpbGVkX2lucHV0LnJlYXNvblxuICAgID8gey4uLmZhaWxlZF9pbnB1dCwgcHJpb3JfYXR0ZW1wdHM6IGZhaWxlZF9pbnB1dC5wcmlvcl9hdHRlbXB0cyArIDF9XG4gICAgOiBtayhyZWFzb24pO1xuIiwib3BlbiBWaXJ0dWFsX2RvbS5WZG9tO1xuXG5bQGRlcml2aW5nIChzaG93KHt3aXRoX3BhdGg6IGZhbHNlfSksIHNleHAsIHlvanNvbildXG50eXBlIGFjdGlvbiA9XG4gIHwgVHVybk9mZkR5bmFtaWNzXG4gIHwgQ2xlYXJTdG9yZTtcblxubGV0IHBlcmZvcm0gPSAoYWN0aW9uOiBhY3Rpb24pOiB1bml0ID0+IHtcbiAgc3dpdGNoIChhY3Rpb24pIHtcbiAgfCBUdXJuT2ZmRHluYW1pY3MgPT5cbiAgICBsZXQgc2V0dGluZ3MgPSBTdG9yZS5TZXR0aW5ncy5sb2FkKCk7XG4gICAgU3RvcmUuU2V0dGluZ3Muc2F2ZSh7XG4gICAgICAuLi5zZXR0aW5ncyxcbiAgICAgIGNvcmU6IHtcbiAgICAgICAgLi4uc2V0dGluZ3MuY29yZSxcbiAgICAgICAgZHluYW1pY3M6IGZhbHNlLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfCBDbGVhclN0b3JlID0+IEpzVXRpbC5jbGVhcl9sb2NhbHN0b3JlKClcbiAgfTtcbiAgSnNfb2Zfb2NhbWwuRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24jI3JlcGxhY2UoXG4gICAgSnNfb2Zfb2NhbWwuSnMuc3RyaW5nKFwiI1wiKSxcbiAgKTtcbiAgSnNfb2Zfb2NhbWwuRG9tX2h0bWwud2luZG93IyMubG9jYXRpb24jI3JlbG9hZDtcbn07XG5cbmxldCBidG4gPSAoY2FwdGlvbiwgYWN0aW9uKSA9PiB7XG4gIE5vZGUuKFxuICAgIGJ1dHRvbihcbiAgICAgIH5hdHRyPVxuICAgICAgICBBdHRyLm1hbnkoW1xuICAgICAgICAgIEF0dHIub25fY2xpY2soXyA9PiB7XG4gICAgICAgICAgICBwZXJmb3JtKGFjdGlvbik7XG4gICAgICAgICAgICBVaV9lZmZlY3QuSWdub3JlO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdKSxcbiAgICAgIFt0ZXh0KGNhcHRpb24pXSxcbiAgICApXG4gICk7XG59O1xuXG5sZXQgdmlldyA9IHtcbiAgTm9kZS4oXG4gICAgZGl2KFtcbiAgICAgIGJ0bihcInR1cm4gb2ZmIGR5bmFtaWNzXCIsIFR1cm5PZmZEeW5hbWljcyksXG4gICAgICBidG4oXCJjbGVhciBsb2NhbCBzdG9yYWdlIChMT1NFIEFMTCBEQVRBISlcIiwgQ2xlYXJTdG9yZSksXG4gICAgXSlcbiAgKTtcbn07XG5cbm1vZHVsZSBBcHAgPSB7XG4gIG1vZHVsZSBNb2RlbCA9IHtcbiAgICB0eXBlIHQgPSB1bml0O1xuICAgIGxldCBjdXRvZmYgPSAoXywgXykgPT4gZmFsc2U7XG4gIH07XG4gIG1vZHVsZSBBY3Rpb24gPSB7XG4gICAgdHlwZSB0ID0gdW5pdDtcbiAgICBsZXQgc2V4cF9vZl90ID0gXyA9PiBTZXhwbGliLlNleHAudW5pdDtcbiAgfTtcbiAgbW9kdWxlIFN0YXRlID0ge1xuICAgIHR5cGUgdCA9IHVuaXQ7XG4gIH07XG4gIGxldCBvbl9zdGFydHVwID0gKH5zY2hlZHVsZV9hY3Rpb24gYXMgXywgXykgPT5cbiAgICBBc3luY19rZXJuZWwuRGVmZXJyZWQucmV0dXJuKCk7XG4gIGxldCBjcmVhdGUgPSAoXywgfm9sZF9tb2RlbCBhcyBfLCB+aW5qZWN0IGFzIF8pID0+XG4gICAgSW5jcl9kb20uSW5jci5yZXR1cm4oKVxuICAgIHw+IEluY3JfZG9tLkluY3IubWFwKH5mPV8gPT5cbiAgICAgICAgIEluY3JfZG9tLkNvbXBvbmVudC5jcmVhdGUoXG4gICAgICAgICAgIH5hcHBseV9hY3Rpb249KF8sIF8sIH5zY2hlZHVsZV9hY3Rpb24gYXMgXykgPT4gKCksXG4gICAgICAgICAgICgpLFxuICAgICAgICAgICB2aWV3LFxuICAgICAgICAgKVxuICAgICAgICk7XG59O1xuXG5sZXQgZ28gPSAoKSA9PlxuICBJbmNyX2RvbS5TdGFydF9hcHAuc3RhcnQoXG4gICAgKG1vZHVsZSBBcHApLFxuICAgIH5kZWJ1Zz1mYWxzZSxcbiAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWQ9XCJjb250YWluZXJcIixcbiAgICB+aW5pdGlhbF9tb2RlbD0oKSxcbiAgKTtcbiIsIigqIGNvcHkgdGhpcyBmaWxlLCBmaWxsaW5nIGluIHRoZSBkZXRhaWxzIGJlbG93LCB0byBjcmVhdGUgYSBibGFuayBleGVyY2lzZSB0aGF0IHlvdSBjYW4gdGhlbiBlZGl0IGluIEhhemVsXG4gICBhbmQgZXhwb3J0LCBvdmVyd3JpdGluZyB5b3VyIGNvcHkgb2YgdGhlIGJlbG93XG5cbiAgIGZvciBwcm9tcHRzLCB5b3UgbmVlZCB0byBkZWZpbmUgYSBzZXBhcmF0ZSBmaWxlIHttb2R1bGVfbmFtZX1fcHJvbXB0LnJlIChzZWUgZXhhbXBsZXMpXG4qKVxuXG5sZXQgZXhlcmNpc2UgPVxuICBFeGVyY2lzZS5ibGFua19zcGVjIH50aXRsZTpcIlJlY3Vyc2l2ZSBGaWJvbmFjY2lcIlxuICAgIH5tb2R1bGVfbmFtZTpcIkV4X1JlY3Vyc2l2ZUZpYm9uYWNjaVwiXG4gICAgICAoKiBtYWtlIHN1cmUgeW91ciBmaWxlIGlzIG5hbWVkIDxtb2R1bGVfbmFtZT4ubWwgKilcbiAgICB+cG9pbnRfZGlzdHJpYnV0aW9uOlxuICAgICAgeyB0ZXN0X3ZhbGlkYXRpb24gPSAxMDsgbXV0YXRpb25fdGVzdGluZyA9IDQwOyBpbXBsX2dyYWRpbmcgPSA1MCB9XG4gICAgICAoKiBpZiBtdXRhdGlvbl90ZXN0aW5nID0gMCwgdGhlbiBubyBtdXRhdGlvbiB0ZXN0aW5nIGJveCB3aWxsIHNob3cgdXAgKilcbiAgICB+cmVxdWlyZWRfdGVzdHM6NSB+cHJvdmlkZWRfdGVzdHM6MCB+bnVtX3dyb25nX2ltcGxzOjJcbiIsIm9wZW4gVmlydHVhbF9kb20uVmRvbS5BdHRyO1xuXG5sZXQgZnN0ciA9IGYgPT4gUHJpbnRmLnNwcmludGYoXCIlZlwiLCBmKTtcblxubGV0IGN4ID0gZiA9PiBjcmVhdGUoXCJjeFwiLCBmc3RyKGYpKTtcbmxldCBjeSA9IGYgPT4gY3JlYXRlKFwiY3lcIiwgZnN0cihmKSk7XG5sZXQgcnggPSBmID0+IGNyZWF0ZShcInJ4XCIsIGZzdHIoZikpO1xubGV0IHJ5ID0gZiA9PiBjcmVhdGUoXCJyeVwiLCBmc3RyKGYpKTtcblxubGV0IHggPSBmID0+IGNyZWF0ZShcInhcIiwgZnN0cihmKSk7XG5sZXQgeSA9IGYgPT4gY3JlYXRlKFwieVwiLCBmc3RyKGYpKTtcbmxldCB3aWR0aCA9IGYgPT4gY3JlYXRlKFwid2lkdGhcIiwgZnN0cihmKSk7XG5sZXQgaGVpZ2h0ID0gZiA9PiBjcmVhdGUoXCJoZWlnaHRcIiwgZnN0cihmKSk7XG5cbmxldCBzdHJva2Vfd2lkdGggPSBmID0+IGNyZWF0ZShcInN0cm9rZS13aWR0aFwiLCBmc3RyKGYpKTtcbmxldCB2ZWN0b3JfZWZmZWN0ID0gcyA9PiBjcmVhdGUoXCJ2ZWN0b3ItZWZmZWN0XCIsIHMpO1xubGV0IGZpbHRlciA9IHMgPT4gY3JlYXRlKFwiZmlsdGVyXCIsIHMpO1xuXG5sZXQgb2Zmc2V0ID0gZiA9PiBjcmVhdGUoXCJvZmZzZXRcIiwgUHJpbnRmLnNwcmludGYoXCIlZiUlXCIsIDEwMC4gKi4gZikpO1xubGV0IHN0b3BfY29sb3IgPSBzID0+IGNyZWF0ZShcInN0b3AtY29sb3JcIiwgcyk7XG5sZXQgc3RvcF9vcGFjaXR5ID0gZiA9PiBjcmVhdGUoXCJzdG9wLW9wYWNpdHlcIiwgUHJpbnRmLnNwcmludGYoXCIlZlwiLCBmKSk7XG4iLCJvcGVuIEpzX29mX29jYW1sO1xub3BlbiBJbmNyX2RvbTtcbm9wZW4gSGF6M2x3ZWI7XG5cbmxldCBzY3JvbGxfdG9fY2FyZXQgPSByZWYodHJ1ZSk7XG5sZXQgZWRpdF9hY3Rpb25fYXBwbGllZCA9IHJlZih0cnVlKTtcbmxldCBsYXN0X2VkaXRfYWN0aW9uID0gcmVmKEpzVXRpbC50aW1lc3RhbXAoKSk7XG5cbmxldCBvYnNlcnZlX2ZvbnRfc3BlY2ltZW4gPSAoaWQsIHVwZGF0ZSkgPT5cbiAgUmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShcbiAgICB+bm9kZT1Kc1V0aWwuZ2V0X2VsZW1fYnlfaWQoaWQpLFxuICAgIH5mPVxuICAgICAgKGVudHJpZXMsIF8pID0+IHtcbiAgICAgICAgbGV0IHNwZWNpbWVuID0gSnMudG9fYXJyYXkoZW50cmllcylbMF07XG4gICAgICAgIGxldCByZWN0ID0gc3BlY2ltZW4jIy5jb250ZW50UmVjdDtcbiAgICAgICAgdXBkYXRlKFxuICAgICAgICAgIEhhejNsd2ViLkZvbnRNZXRyaWNzLntcbiAgICAgICAgICAgIHJvd19oZWlnaHQ6IHJlY3QjIy5ib3R0b20gLS4gcmVjdCMjLnRvcCxcbiAgICAgICAgICAgIGNvbF93aWR0aDogcmVjdCMjLnJpZ2h0IC0uIHJlY3QjIy5sZWZ0LFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICgpLFxuICApO1xuXG5sZXQgcmVzdGFydF9jYXJldF9hbmltYXRpb24gPSAoKSA9PlxuICAvLyBuZWNlc3NhcnkgdG8gdHJpZ2dlciByZWZsb3dcbiAgLy8gPGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vcmVzdGFydC1jc3MtYW5pbWF0aW9uLz5cbiAgdHJ5KHtcbiAgICBsZXQgY2FyZXRfZWxlbSA9IEpzVXRpbC5nZXRfZWxlbV9ieV9pZChcImNhcmV0XCIpO1xuICAgIGNhcmV0X2VsZW0jIy5jbGFzc0xpc3QjI3JlbW92ZShKcy5zdHJpbmcoXCJibGlua1wiKSk7XG4gICAgbGV0IF8gPSBjYXJldF9lbGVtIyNnZXRCb3VuZGluZ0NsaWVudFJlY3Q7XG4gICAgY2FyZXRfZWxlbSMjLmNsYXNzTGlzdCMjYWRkKEpzLnN0cmluZyhcImJsaW5rXCIpKTtcbiAgfSkge1xuICB8IF8gPT4gKClcbiAgfTtcblxubGV0IGFwcGx5ID0gKG1vZGVsLCBhY3Rpb24sIHN0YXRlLCB+c2NoZWR1bGVfYWN0aW9uKTogTW9kZWwudCA9PiB7XG4gIHJlc3RhcnRfY2FyZXRfYW5pbWF0aW9uKCk7XG4gIGlmIChVcGRhdGVBY3Rpb24uaXNfZWRpdChhY3Rpb24pKSB7XG4gICAgbGFzdF9lZGl0X2FjdGlvbiA6PSBKc1V0aWwudGltZXN0YW1wKCk7XG4gICAgZWRpdF9hY3Rpb25fYXBwbGllZCA6PSB0cnVlO1xuICB9O1xuICBpZiAoVXBkYXRlLnNob3VsZF9zY3JvbGxfdG9fY2FyZXQoYWN0aW9uKSkge1xuICAgIHNjcm9sbF90b19jYXJldCA6PSB0cnVlO1xuICB9O1xuICBsYXN0X2VkaXRfYWN0aW9uIDo9IEpzVXRpbC50aW1lc3RhbXAoKTtcbiAgc3dpdGNoIChcbiAgICB0cnkoe1xuICAgICAgbGV0IG5ld19tb2RlbCA9IFVwZGF0ZS5hcHBseShtb2RlbCwgYWN0aW9uLCBzdGF0ZSwgfnNjaGVkdWxlX2FjdGlvbik7XG4gICAgICBMb2cudXBkYXRlKGFjdGlvbik7XG4gICAgICBuZXdfbW9kZWw7XG4gICAgfSkge1xuICAgIHwgZXhjID0+XG4gICAgICBQcmludGYucHJpbnRmKFxuICAgICAgICBcIkVSUk9SOiBFeGNlcHRpb24gZHVyaW5nIGFwcGx5OiAlc1xcblwiLFxuICAgICAgICBQcmludGV4Yy50b19zdHJpbmcoZXhjKSxcbiAgICAgICk7XG4gICAgICBFcnJvcihFeGNlcHRpb24oUHJpbnRleGMudG9fc3RyaW5nKGV4YykpKTtcbiAgICB9XG4gICkge1xuICB8IE9rKG1vZGVsKSA9PiBtb2RlbFxuICB8IEVycm9yKEZhaWxlZFRvUGVyZm9ybShlcnIpKSA9PlxuICAgIC8vIFRPRE8oYW5kcmV3KTogcmVpbnN0YXRlIHRoaXMgaGlzdG9yeSBmdW5jdGlvbmFsaXR5XG4gICAgcHJpbnRfZW5kbGluZShVcGRhdGUuRmFpbHVyZS5zaG93KEZhaWxlZFRvUGVyZm9ybShlcnIpKSk7XG4gICAgLy97Li4ubW9kZWwsIGhpc3Rvcnk6IEFjdGlvbkhpc3RvcnkuZmFpbHVyZShlcnIsIG1vZGVsLmhpc3RvcnkpfTtcbiAgICBtb2RlbDtcbiAgfCBFcnJvcihlcnIpID0+XG4gICAgcHJpbnRfZW5kbGluZShVcGRhdGUuRmFpbHVyZS5zaG93KGVycikpO1xuICAgIG1vZGVsO1xuICB9O1xufTtcblxubW9kdWxlIEFwcCA9IHtcbiAgbW9kdWxlIE1vZGVsID0gTW9kZWw7XG4gIG1vZHVsZSBBY3Rpb24gPSBVcGRhdGU7XG4gIG1vZHVsZSBTdGF0ZSA9IFN0YXRlO1xuXG4gIGxldCBvbl9zdGFydHVwID0gKH5zY2hlZHVsZV9hY3Rpb24sIG06IE1vZGVsLnQpID0+IHtcbiAgICBsZXQgXyA9XG4gICAgICBvYnNlcnZlX2ZvbnRfc3BlY2ltZW4oXCJmb250LXNwZWNpbWVuXCIsIGZtID0+XG4gICAgICAgIHNjaGVkdWxlX2FjdGlvbihIYXozbHdlYi5VcGRhdGUuR2xvYmFscyhTZXRGb250TWV0cmljcyhmbSkpKVxuICAgICAgKTtcblxuICAgIEpzVXRpbC5mb2N1c19jbGlwYm9hcmRfc2hpbSgpO1xuXG4gICAgLyogaW5pdGlhbGl6ZSBzdGF0ZS4gKi9cbiAgICBsZXQgc3RhdGUgPSBTdGF0ZS5pbml0KCk7XG5cbiAgICAvKiBJbml0aWFsIGV2YWx1YXRpb24gb24gYSB3b3JrZXIgKi9cbiAgICBVcGRhdGUuc2NoZWR1bGVfZXZhbHVhdGlvbih+c2NoZWR1bGVfYWN0aW9uLCBtKTtcblxuICAgIE9zLmlzX21hYyA6PVxuICAgICAgRG9tX2h0bWwud2luZG93IyMubmF2aWdhdG9yIyMucGxhdGZvcm0jI3RvVXBwZXJDYXNlIyNpbmRleE9mKFxuICAgICAgICBKcy5zdHJpbmcoXCJNQUNcIiksXG4gICAgICApXG4gICAgICA+PSAwO1xuICAgIEFzeW5jX2tlcm5lbC5EZWZlcnJlZC5yZXR1cm4oc3RhdGUpO1xuICB9O1xuXG4gIGxldCBjcmVhdGUgPVxuICAgICAgKFxuICAgICAgICBtb2RlbDogSW5jci50KEhhejNsd2ViLk1vZGVsLnQpLFxuICAgICAgICB+b2xkX21vZGVsIGFzIF86IEluY3IudChIYXozbHdlYi5Nb2RlbC50KSxcbiAgICAgICAgfmluamVjdCxcbiAgICAgICkgPT4ge1xuICAgIG9wZW4gSW5jci5MZXRfc3ludGF4O1xuICAgIGxldCVtYXAgbW9kZWwgPSBtb2RlbDtcbiAgICAvKiBOb3RlOiBtYXBwaW5nIG92ZXIgdGhlIG9sZF9tb2RlbCBoZXJlIG1heVxuICAgICAgIHRyaWdnZXIgYW4gYWRkaXRpb25hbCByZWRyYXcgKi9cbiAgICBDb21wb25lbnQuY3JlYXRlKFxuICAgICAgfmFwcGx5X2FjdGlvbj1hcHBseShtb2RlbCksXG4gICAgICBtb2RlbCxcbiAgICAgIEhhejNsd2ViLlBhZ2Uudmlldyh+aW5qZWN0LCBtb2RlbCksXG4gICAgICB+b25fZGlzcGxheT0oXywgfnNjaGVkdWxlX2FjdGlvbikgPT4ge1xuICAgICAgICBpZiAoZWRpdF9hY3Rpb25fYXBwbGllZF5cbiAgICAgICAgICAgICYmIEpzVXRpbC50aW1lc3RhbXAoKVxuICAgICAgICAgICAgLS4gbGFzdF9lZGl0X2FjdGlvbl4gPiAxMDAwLjApIHtcbiAgICAgICAgICAvKiBJZiBhbiBlZGl0IGFjdGlvbiBoYXMgYmVlbiBhcHBsaWVkLCBidXQgbm8gb3RoZXIgZWRpdCBhY3Rpb25cbiAgICAgICAgICAgICBoYXMgYmVlbiBhcHBsaWVkIGZvciAxIHNlY29uZCwgc2F2ZSB0aGUgbW9kZWwuICovXG4gICAgICAgICAgZWRpdF9hY3Rpb25fYXBwbGllZCA6PSBmYWxzZTtcbiAgICAgICAgICBwcmludF9lbmRsaW5lKFwiU2F2aW5nLi4uXCIpO1xuICAgICAgICAgIHNjaGVkdWxlX2FjdGlvbihVcGRhdGUuU2F2ZSk7XG4gICAgICAgIH07XG4gICAgICAgIGlmIChzY3JvbGxfdG9fY2FyZXQuY29udGVudHMpIHtcbiAgICAgICAgICBzY3JvbGxfdG9fY2FyZXQgOj0gZmFsc2U7XG4gICAgICAgICAgSnNVdGlsLnNjcm9sbF9jdXJzb3JfaW50b192aWV3X2lmX25lZWRlZCgpO1xuICAgICAgICB9O1xuICAgICAgfSxcbiAgICApO1xuICB9O1xufTtcblxuc3dpdGNoIChKc1V0aWwuRnJhZ21lbnQuZ2V0X2N1cnJlbnQoKSkge1xufCBTb21lKFwiZGVidWdcIikgPT4gRGVidWdNb2RlLmdvKClcbnwgXyA9PlxuICBJbmNyX2RvbS5TdGFydF9hcHAuc3RhcnQoXG4gICAgKG1vZHVsZSBBcHApLFxuICAgIH5kZWJ1Zz1mYWxzZSxcbiAgICB+YmluZF90b19lbGVtZW50X3dpdGhfaWQ9XCJjb250YWluZXJcIixcbiAgICB+aW5pdGlhbF9tb2RlbD1Nb2RlbC5sb2FkKCksXG4gIClcbn07XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEVuc3VyZSB0aGF0IFthdF9leGl0XSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IHByb2dyYW0gKilcblxubGV0IF8gPSBkb19hdF9leGl0KClcbiJdfQ==